diff --git a/README.md b/README.md index 1f7cac68..d859c9bc 100644 --- a/README.md +++ b/README.md @@ -287,7 +287,7 @@ Additional environment supported properties and functions 1.6.0 -* Added ONNX export colab example. +* Added ONNX export colab example for discrete and continious action spaces. For continuous case LSTM policy example is provided as well. * Improved RNNs training in continuous space, added option `zero_rnn_on_done`. * Added NVIDIA CuLE support: https://github.com/NVlabs/cule * Added player config everride. Vecenv is used for inference. @@ -295,6 +295,7 @@ Additional environment supported properties and functions * Fixed max_frames termination condition, and it's interaction with the linear learning rate: https://github.com/Denys88/rl_games/issues/212 * Fixed "deterministic" misspelling issue. * Fixed Mujoco and Brax SAC configs. +* Fixed multiagent envs statistics reporting. Fixed Starcraft2 SMAC environments. 1.5.2 diff --git a/notebooks/train_and_export_onnx_example_continuous.ipynb b/notebooks/train_and_export_onnx_example_continuous.ipynb index 5cdf40e3..94b5c918 100644 --- a/notebooks/train_and_export_onnx_example_continuous.ipynb +++ b/notebooks/train_and_export_onnx_example_continuous.ipynb @@ -24,11 +24,18 @@ "!pip install git+https://github.com/Denys88/rl_games\n", "!pip install envpool\n", "!pip install gym\n", + "!pip install pygame\n", "!pip install -U colabgymrender" ] }, { "cell_type": "code", + "execution_count": null, + "id": "yE40EhNFVszf", + "metadata": { + "id": "yE40EhNFVszf" + }, + "outputs": [], "source": [ "from rl_games.torch_runner import Runner\n", "import os\n", @@ -41,13 +48,7 @@ "import onnx\n", "import onnxruntime as ort\n", "%matplotlib inline" - ], - "metadata": { - "id": "yE40EhNFVszf" - }, - "id": "yE40EhNFVszf", - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "code", @@ -63,27 +64,27 @@ }, { "cell_type": "code", - "source": [ - "%load_ext tensorboard" - ], + "execution_count": null, + "id": "2enRAdp8WrJV", "metadata": { "id": "2enRAdp8WrJV" }, - "id": "2enRAdp8WrJV", - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "%load_ext tensorboard" + ] }, { "cell_type": "code", - "source": [ - "%tensorboard --logdir 'runs/'" - ], + "execution_count": null, + "id": "JGE4eeUCWsss", "metadata": { "id": "JGE4eeUCWsss" }, - "id": "JGE4eeUCWsss", - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "%tensorboard --logdir 'runs/'" + ] }, { "cell_type": "code", @@ -208,8 +209,8 @@ "}\n", "\n", "with torch.no_grad():\n", - " adapter = flatten.TracingAdapter(ModelWrapper(agent.model), inputs,allow_non_tensor=True)\n", - " traced = torch.jit.trace(adapter, adapter.flattened_inputs,check_trace=False)\n", + " adapter = flatten.TracingAdapter(ModelWrapper(agent.model), inputs, allow_non_tensor=True)\n", + " traced = torch.jit.trace(adapter, adapter.flattened_inputs, check_trace=False)\n", " flattened_outputs = traced(*adapter.flattened_inputs)\n", " print(flattened_outputs)\n", " \n", @@ -260,14 +261,15 @@ }, "outputs": [], "source": [ - "\n", "is_done = False\n", + "\n", "env = gym.make('Pendulum-v1')\n", "obs = env.reset()\n", "prev_screen = env.render(mode='rgb_array')\n", "plt.imshow(prev_screen)\n", "total_reward = 0\n", "num_steps = 0\n", + "\n", "while not is_done:\n", " outputs = ort_model.run(None, {\"obs\": np.expand_dims(obs, axis=0).astype(np.float32)},)\n", " mu = outputs[0].squeeze(1)\n", @@ -277,38 +279,24 @@ " total_reward += reward\n", " num_steps += 1\n", " is_done = done\n", + "\n", " screen = env.render(mode='rgb_array')\n", " plt.imshow(screen)\n", " display.display(plt.gcf()) \n", " display.clear_output(wait=True)\n", + "\n", "print(total_reward, num_steps)\n", - "ipythondisplay.clear_output(wait=True)" + "display.clear_output(wait=True)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ae5a74c", - "metadata": { - "id": "2ae5a74c" - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0b5cb601", - "metadata": { - "id": "0b5cb601" - }, - "outputs": [], - "source": [] } ], "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, "kernelspec": { - "display_name": "Python 3", + "display_name": "warp39", "language": "python", "name": "python3" }, @@ -322,13 +310,14 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.13" }, - "colab": { - "provenance": [] - }, - "accelerator": "GPU" + "vscode": { + "interpreter": { + "hash": "20dffcfa027a5ca97c32e660f6348a5dd89a4a8771672beb12fd55712d57511e" + } + } }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/notebooks/train_and_export_onnx_example_discrete.ipynb b/notebooks/train_and_export_onnx_example_discrete.ipynb index 0e7c49dc..673df0a8 100644 --- a/notebooks/train_and_export_onnx_example_discrete.ipynb +++ b/notebooks/train_and_export_onnx_example_discrete.ipynb @@ -29,6 +29,12 @@ }, { "cell_type": "code", + "execution_count": null, + "id": "yE40EhNFVszf", + "metadata": { + "id": "yE40EhNFVszf" + }, + "outputs": [], "source": [ "from rl_games.torch_runner import Runner\n", "import os\n", @@ -41,13 +47,7 @@ "import onnx\n", "import onnxruntime as ort\n", "%matplotlib inline" - ], - "metadata": { - "id": "yE40EhNFVszf" - }, - "id": "yE40EhNFVszf", - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "code", @@ -63,27 +63,27 @@ }, { "cell_type": "code", - "source": [ - "%load_ext tensorboard" - ], + "execution_count": null, + "id": "2enRAdp8WrJV", "metadata": { "id": "2enRAdp8WrJV" }, - "id": "2enRAdp8WrJV", - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "%load_ext tensorboard" + ] }, { "cell_type": "code", - "source": [ - "%tensorboard --logdir 'runs/'" - ], + "execution_count": null, + "id": "JGE4eeUCWsss", "metadata": { "id": "JGE4eeUCWsss" }, - "id": "JGE4eeUCWsss", - "execution_count": null, - "outputs": [] + "outputs": [], + "source": [ + "%tensorboard --logdir 'runs/'" + ] }, { "cell_type": "code", @@ -257,8 +257,8 @@ }, "outputs": [], "source": [ - "\n", "is_done = False\n", + "\n", "# using regular openai gym to render\n", "env = gym.make('CartPole-v1')\n", "obs = env.reset()\n", @@ -266,6 +266,7 @@ "plt.imshow(prev_screen)\n", "total_reward = 0\n", "num_steps = 0\n", + "\n", "while not is_done:\n", " outputs = ort_model.run(None, {\"obs\": np.expand_dims(obs, axis=0).astype(np.float32)},)\n", "\n", @@ -274,38 +275,24 @@ " total_reward += reward\n", " num_steps += 1\n", " is_done = done\n", + "\n", " screen = env.render(mode='rgb_array')\n", " plt.imshow(screen)\n", " display.display(plt.gcf()) \n", " display.clear_output(wait=True)\n", + "\n", "print(total_reward, num_steps)\n", - "ipythondisplay.clear_output(wait=True)" + "display.clear_output(wait=True)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2ae5a74c", - "metadata": { - "id": "2ae5a74c" - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0b5cb601", - "metadata": { - "id": "0b5cb601" - }, - "outputs": [], - "source": [] } ], "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, "kernelspec": { - "display_name": "Python 3", + "display_name": "warp39", "language": "python", "name": "python3" }, @@ -319,13 +306,14 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.9.13" }, - "colab": { - "provenance": [] - }, - "accelerator": "GPU" + "vscode": { + "interpreter": { + "hash": "20dffcfa027a5ca97c32e660f6348a5dd89a4a8771672beb12fd55712d57511e" + } + } }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/notebooks/train_and_export_onnx_example_lstm_continuous.ipynb b/notebooks/train_and_export_onnx_example_lstm_continuous.ipynb new file mode 100644 index 00000000..3357e71b --- /dev/null +++ b/notebooks/train_and_export_onnx_example_lstm_continuous.ipynb @@ -0,0 +1,567 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f833523c", + "metadata": { + "id": "f833523c" + }, + "source": [ + "**This is example of how to trace model with jit and export it to the onnx**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d832d65", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2d832d65", + "outputId": "93303b7a-f3a0-4a61-9884-1e2634c98ad1" + }, + "outputs": [], + "source": [ + "!pip install onnx\n", + "!pip install onnxruntime\n", + "!pip install git+https://github.com/Denys88/rl_games\n", + "!pip install envpool\n", + "!pip install gym\n", + "!pip install pygame\n", + "!pip install -U colabgymrender" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "yE40EhNFVszf", + "metadata": { + "id": "yE40EhNFVszf" + }, + "outputs": [], + "source": [ + "from rl_games.torch_runner import Runner\n", + "import os\n", + "import yaml\n", + "import torch\n", + "import matplotlib.pyplot as plt\n", + "import gym\n", + "from IPython import display\n", + "import numpy as np\n", + "import onnx\n", + "import onnxruntime as ort\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf09dab6", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "cf09dab6", + "outputId": "047bc81a-bd9c-46fb-91a6-8cc419ef51e5" + }, + "outputs": [], + "source": [ + "!nvidia-smi -L" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2enRAdp8WrJV", + "metadata": { + "id": "2enRAdp8WrJV" + }, + "outputs": [], + "source": [ + "%load_ext tensorboard" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "JGE4eeUCWsss", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 821, + "resources": { + "https://localhost:6006/?tensorboardColab=true": { + "data": "PCFkb2N0eXBlIGh0bWw+PG1ldGEgbmFtZT0idGItcmVsYXRpdmUtcm9vdCIgY29udGVudD0iLi8iPjwhZG9jdHlwZSBodG1sPjwhLS0KQGxpY2Vuc2UKQ29weXJpZ2h0IDIwMTkgVGhlIFRlbnNvckZsb3cgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+VGVuc29yQm9hcmQ8L3RpdGxlPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBWUFBQURBcG81ckFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFCYWJnQUFXbTRCeFdzak9BQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmwwU1VSQlZIaWM3WjE1ZUZUVjNjYy92NXNGQ1ZSeHFWdHB0VlcyVmx4ZjYxcXRpcTBMOUdsOU5YVUJGRXBGUlRJaGhCQURDVGRBTUFFa0NZc0s3cUI5K2tENzJxZkJXaXZxVzdWYTY3NGlyZTlyYXhYMWJaVldaVEhML040LzVnNEdTR0R1ekwxejc1MDVuMzg0ek13NTU4dk0vWEsyM3prSERJR2ppemhQRjNGZTBEb01JRUVMeUdkMFBvT3dhQUF1Y1Y1YWgwVzVWUEI2a0xyeUdXT0lBRkNiL3ZTakVxZ0crdXp3S3dnZHdDMTBVQ2ZWL0RzWWhmbUxNVVFXVVJ1TEVrWUQ4eEVPMnY3R2pvWndQc3hIV014aElFdWxsSzVzNnN4bmpDR3loQzdnSkpSVzRDU2daeFAwbkg0Smk1aVU4N2pmR2czR0VMNmpUUXdFNWdHamtXN2ZkK3FHU0xLV0lzcGtNbS83SU5QZ1lBemhFMnBUUWgrcXNLZ0MrZ0x1VGJCcmVpdXdtSFlhWkRxZmVpcllBQmhEZUk0cVFpTVhBd3NRRHZQQUJEMmxOeUxVczRuYnhTYWV1V3BERW1NSUQ5RWJPUUZvUlRodCs0ditHQ0w1NTdOQXVjUjRLaTNCaGwwd2h2QUFiZUFRTEd4Z0FtRDVhb0x1NmNTZml2QUxsRXFKOFk1TDZZYWRNSWJJQUxVcHBvaHJFV1lqN0wzOWpld2FJcG5lakxLUXZXbVVjV3hMNlI5ZzJBVmppRFRSdVl6Q29nWDRCcEE5RTNSUDkveiszNEdaVXNiS1hxUWJkb014aEV1MGdhTVJtbEhPOXZBQi82T1RPdGtEUXlUU3lpTW81UkxqdFo3K0hZYWVzWUlXRUJYVVpqK2RTeXZ3UE1yWkhoVzdFV0VpbjNFYVV6a1ZvUlQ0bXljbEMrZGc4Ykl1WmFYZXdvR2VsSmtIbUJaaUQ2aE5JVVdNUjJrQUR2Q29WZGlLc0pqNHJ1c0p1cHdTUHFNS3FFS2M5WXZleWttOXprMUFFd2ZTTEtXMFkrZ1ZZNGpkb1BXY2cwVUx3bEhiWDh6Y0VHc1J5bVRhN2xlY3RZbUJGRGtyM095d3hwMk9JWkxwRFFoVDVUb2UyRjNkK1l3eFJBL29IQVpCdDdCc2IxcUZGeW1nWENyZHhTVHBJczRFV2hDTzNhWE05TFdzbzRDWVhNTWJiclRrQThZUTNWQ2IvZ2lWeUU1aDJaa1o0aU9FT1J5ZWZ0U3EybGdNWURUS2ZPQWdqM1Ixb054Q0lYVXkwWVNaSnpHR3dIbmdMT2VCNnlrc083MEhML0hBaVhmN0duUVovV252d2JEcGF3U2NNUFA5VEpnNUdFT2dzMU1JeTNiL3NLMGpUa3hxL09tU2FDdURVQnFRN1R2dHZPald2WWhRTHRma2Q1aDUzaHBDYlJkaDJhay9WQnRRS3FTRzMzZ3F0aGUwbFhPQUZ1QW9EOWRFMWxKQW1mdzBQOFBNODg0UWFsTUN6clJtcW1IWmUzNlFOaUUwOFRuTlltZDNXbE50Q3RtWDhZZ3pMZHk3UmpmcFJKaDVFUTN5ay93S004OGJReWdJZFZ5TXhRTFVaVmgyNys5M290eUpNRk5xK0lmWG10MmdpOWlQUW1ZQjF5RVVibjhqTTNPOGgxTERSRmFKb0o0S0RpbDVZUWl0NVFRa2c3RHNubDk3Rkl0eXFlWlZUOFZtaUM1aEtFb3o0aHhyNDAxWDZsbVVtRnpEMHg1S0RTVTViUWl0NFJDS3NORU13N0ozZk8wdGxCcVp5UnFQNVhxS0xtWVVRZ3ZpQkI5Q3B1WlE0RjQ2cUpKSmZPQ3AyQkNSazRaUW0ySTZQUXpMVHZ5WkNLL2VoeHVsak04OWx1d0xhbFBNL3M3M0FIdDcxRnBzUmxoSVlXNkdtZWVjSVhTRzUySFpjWVQ3RUtiSkRENzBWbTEyME9VY1FnYzI0clNVNE1YMzhoWkNqVXdJZDB2cGxwd3hoTjdBVUFwb0JzN3pjQXJ5R1pTWTFQR01oMUlEUTI5MnRyZ3FwM24ySFZrOFNwd3A4bE5lOFZCcVlFVGVFR3F6SHgzTVFyZ09uTm1Wekgvc2Q0RVoxT2JlN0lvcXdpM09JUWh3R09ERjk5V0pPTE50NDRPZGJjdVV5QnBDYlFycFlEeDRHcGE5QlZqQWwyaVNDclo2S0RkMDZISks2S1FLU1NITVBOVzB4U2JpTkxGM2RNUE1JMmtJclhGV2FMMEx5MWJnRnhRd1RXWjZ0RUVuSXVqaUZNTE0zYVlUWWVZVk1pNDdLL1plRWlsRDZFd0dFZmM4TFBzNUxNcWxqajk0cHpSNjZNMmM2VXhHN0JwbTdqYjl4V3ZyS0tSTXhyTGVPNlgrRWdsRHFPMUVlU3JWQ0gyMnY1R1pJVFlDOVdBTyswcWlOaFlITzRjeGR3OHpoMHpXYlJKUnZ4M1JDRE1QdFNIVXhtSXJvN0djSHdpOGFCWGFnVnNwWWFZNURySm5kQm45c2FqRWNzTE1JUk5ESkVtRW1mY05kNWg1YUEyaE4zUUx5L1p1R25VdFFreHMvdGREcVRtTDNzb2d4T21pWm02SVpQb0ZsSElaeHhOZWF2V0swQmxDcXhpSTFXMlFCMTYwQ2kraGxNc2NmdStwMkR4QlZ6RENpWTlLVEdKa1pvaGtlaTF4SnNzNC91cWwxa3dKalNIVXBvUXR6alFnOVBXb1ZVaHMzMXpQVWxrVDNtWTZDcWhOSVY5eFRoOFJKOHdjTWpFRUpLYTVsOUNYdVZMS1o5NHFUby9BRGFFZ1RPTml4RmtvY3YrbDlwUk9YRXZWVHAwMGhYOGdGeVgwZHZaRG1RVk1BZ295TkVReS9SNUNEYU9EWHdnTjFCQTZsUk93ZWduTFR0OFE2eERLWlk2NXVOQlA5RGFHQVl1UWJyZW5adjdiL1FtTG1JemVmcEpoMWduRUVGcnVoR1h2N3JSczkxL3FCdUpNbFhubXpLRnNvcmN6Q3B4Z1NtOWFkMFdjTVBOeDJROHp6Nm9obk83Uk5KUmFoUDQ5cW5EL3BYNE0xRlBFeldMVDZhMWlReXJvWGV4Rm5BcmdCcUMvUitPL1Q3Q1lReEdMc3hrR2t2VVdRaXM0emprTjc0d2VWYVJ1aUVSWWRoR1ZZdk4vZm1nMXVFT1hjd2lGUG9XWlg1R2RNUFBBeGhCYXlTaUVWdURycmcyaFBJb3dSZWJsUnNoeHJxRjNjd0pkenRqUXV6V2tSMUhLWmJTL1czYURIVlRiRkxPWmF4SG1BRi9hUVZIUFg4eGJXTlJJUTI1dFNzbEZWQkh1OWlITUhPNmtpSmxTNmsrWWVlRFRyZ0JheGFIQUxHQUMwbU5UbTlpMldFeWoyTG0zYlRHWDBlV1VVSnppYWVhcHB6ZWgxSE1veStRc2I4ZU5vVEJFRXEzaVA1eHUxS21Pc3NURzlpNnFaRUh1Ym16UEIvUTJCbExNUE5URE1ITjRFNHNLdVpRSHZkSVpLa09BTXhNMW5URUlGMk5oeXp4ZUNGcVR3VHYwTHI3cmhKa2ZzLzNGek0xeFAzRXE1WXJNWTlSQ1p3aEQ3cU0yRm9jN1llYVNRWmo1anVrT0xHNmhnMW9aelNmcGFqT0dNQVNHcnFZL1c3dWRaZzZadHhiQyt5ZzJGbmVrRTJadURHRUlITDJQUVhTbEVXYSt1elE4ajBXNWxQS2tHeTNHRUliUW9QZHdQc0lpaEtGQXBvYUF4S1gyRStUSDNKbXFCdGUza0dvNUU3U2NIN3JOWnpEc0NibVNCOW5LMGNCRTRKOWVGQWtjNmlhRCsydDVsU05SN3RjWTYvUjZ4OGtHZzBmSVJEcGtEQ3Zvd3hCZ01XUjNIMHM2aGloeVV1ZFF3Q3NhbzFXdjZ4YW9aekI0Z0pUeXNZd21ScHpod0crelZhOTdRMWpiRFFGUUJKUlJ4SHFOTWRZelZRYURnNHhsdll6bWZJUWZnUDk3NFROcElib3pFTGhIeTNqWWRLTU1maUNYMDBZUnc0QnlTSCtkWVUrNE53UTlHaUtCTUlJQ1h0WXBOS3JOWHVuTE1oaDJSVXBwbHl0b1JSZ0cvcHlsNWEwaEVoU2pUT2Rmdks0eFJxWWp5bURZSFhJWkc4R2Z2ZGQrR0NMSk54RGFkQXB0V3NuWDA2akhZTWc2WG8waGRzZEl1bmhkSzdCTk44b1FkaktkWlVxVnZpaXorSVRYdEpJTDA4aHZNR1NGYkxRUTNUbUNPR3UxZ2pZdDUvQU15akVZZk1IUE1jVHVHRWtCYjJpbDZVWVp3a1ZRaG9Ca04rcFRYdFZwWE9CUm1RWkRSZ1JwaUNSSG9qeWdVMm5UYXRPTk1nUkx0c2NRdlNPTXBKUFh0UXBiSjNlN0ZNVmd5Q0x1RFNFK0dTSkJDY29zK3ZDYVR1dDJacWpCa0NYQzBHWGFGZUZJNEVHdG9rMm5PbWY2R0F4WklKeUcrSUxFYkpUcFJobXlSTmdOQVZBQ3pLS0VWM1U2Mzg5eTNZWThJd3FHU0RJSStLMVcwNmJUK1ZwQUdndzVUcFFNa1VBWmliQmVxN0hWcGpoUUxZYWNJM3FHU0pEb1JtM2pWYTNtZTBHTE1lUU9VVFZFa3NFSUQra050T2tNdmhxMEdFUDBpYm9oa293a3pucXRNZDBvUTJia2lpRUErZ0d6YU9jVnJlSGNvTVVZb29rclEyamk0S2RDbjdSNHhSRGdkenJEZEtNTTduSFhRbHdkZWpOMFp5U3dYbWVhYmxSZUUzZDNHSUhiTGxOWXUwdTkwUTlsRmwyOHJETVpFYlFZUTFiWmpGTFBOaGE1eWVUT0VQdEd6aEFKbEtIQTczUW1LN1dHZzRLV1kvQVZCVmJSd1NDNURGdkd1YnVDelowaE9pTnFpQVFDaktHQURUcVRtTnFSNnY0WlVrSDVFeGFueWFXTWxURzhuMDRSN2d6UkZXbERKTmtIb1lVdW50TmFUZ3Rhak1FVDNrVzRra3M1V1VwNU9wT0MzQm5DcjgxQndYQU13aE5hWjdwUmtVWFpBdFJUd0dDNWxKVWltUjllNXM0UThad3lCQ1M3VVlXOHFYWEU5QklLZ2haa1NCRmhGVVVNbHN1d3BaU3QzaFhyQXIyZW9SU3czbFdwMFVxL2hEQkpiSjdDa0plNGF5R0tjcTZGMkpsamdTZlZacVhhSEJpMEdFUDJ5ZWN4Uk0rbzA0MkNEVnBQVEZlYmJsUStZUXpST3dOUVdsalBzenFiVTRJV1k4Z091YjVTN1FYSG9meEI2MW1wOC9oeTBHSU0vbUphaU5SSWRLTTYyYUJ6VERjcWwzRm5DTW43SUxsOVVWcll3SjkwTGljSExjYmdQYWJMbEE3SzhTaFA2UnpUamNvMVRKY3BmUkxkcUM3VGpjb2xUQXVST2ZzaXRQQVhudEhabkJTMEdFTm11RE5FZXJjSDVRZktDVmc4cFhOWnFUWUhCQzNIa0I2bWhmQVdDMkVNUld6UUJtSnFwN1ZuUFZSb013T0MxcEFKdXBxRDNYemU3USsyNXowRXJxS2pjcGI5Z0JhS2VWSWJPU1pvTWVtZ1N6aFVsN0tjWXVZRXJTVWRkQlZEOUdjOFFBZFQzZVJ6TzZoMk4rMXF6SEVLU2xuUUl0eWdOc1c2aEJnV2J5SmNUWG9uc3dTRzNzZStlaCtOV0x3QzdtK21jcmRyVENsSyt5SGZNZDltNERHZ2pTNmVvSWpIMEJ6ZGt4Q25QV2dKcWFMTEdJWFNDdEc3VjF4dExJNWdOTEFBMGcvTWRMdU5NcE14eE5zb0R3TnIyWWVIeFA3aVFkRktLb0Q3TWlnN3ZBZ2RRVXZZRTdxTVk0blRnbkptMEZyU1FlL2pMT0swSUJ5ZGFWbnVER0ZSNUdKUFVoZUovUVZyRWRya0pwN3Y3WU95a0o5cEpaZEREdDVoTGVGdElYUXArd04xeEprRTBWdEgwWlY4RFl1NUtHTzg2cDY3N3pMdG5zMkkweFVxNU5leWdBOWNLTG1lTHI1TDRnUyszRUhEMTBMb2NvcG81enJpMUNQc0U3UWV0K2hLK2lGTUE2YWo3T1hsV05XTEx0UGJDQThqdTNhRjNDQ04vRldyYUVDWmwzZ2huVkpDU01nTW9Zc1p3ZWUwQU44S1dvdGJWQkh1WlF4S0U3aWJUazJWZEF6eFJWY29UcHNzN3IwcjVKb1NGckNaVWhJNzEzSURLeHlHMEtVTXBvdEZLQmRHOFQ4YnZZc1RXVVVyK0xzM3haMGh1cmliSXVaTE14LzdJVVpzT3JXUzZ4Q2VwUHQwWDIvN29LTkJvR01JYldZQVFqVmRUSUhvUlN2clBYd0Z1QkVZVFJaK2ZWZUdrS1c4NlplUTdYVXM1R21keG5MZ1dyL3J5Z29CZFpuVXhtSkE1dE9RUWFHcjZjdFd5b0Fad0pleVZXODRGMTIyVVkzdzNoNC9GNFhXSW9CWkpyMkpzOWlIRjRCN2lLSVo3bUlVVzNnRHBaRXNtZ0ZDYWdoWndpZEFoYnRNL21qSm1DeTJFSG9UWDlWbVZtTHhLRVF2WkVUdjVIaTlpOGNSZmcwY0hvU0cwSjV2S2syczFtbU1SaGpsUHJNUGd0SWxDNGJRQmZURFlockNkR0F2dit2ekdyMkgvZW1pRGdsK1BTUzBoZ0RBNG5xVXM0RCthWmNSdkRsODZ6S3BJaXppWW9TRkVMMnJpblU1UlJSekhWM2hXUThKWlpjcGlUVHhEa0s5ZHdWNlZsTHErRFR0cWdzNWtVVThDYXdtaW1hNGt4RVU4UkpLQzRURERKQmxRNmhOb2JwOUxQdlNBcnpvdVpqc21HTVR5cXRlRnFoTkhLb0xXWTd3UitCVUw4dk9Cbm9IUS9SMkhuRGkycjRadEo2ZDhkMFFPcGsrT29VUldrRXJuL0F1VTdqS1RYNng2VVM1bXNTQ29ELzRZUTdsQXl6T2tocmU4S3pJaFZ4RUFYK0c2SVZsQStqdGpBZGVROXlIWldjTFg3NVVuVUpmbmNJb25jSktDdmtRZUJnb0F3NUNhTllxQnJvcFQrYnpISEN6SDFwM3JjeVRVdDZtZ085SU5TOTdVdG9YSEVPMFk3MkdFZkp4cTJmaXRKd0JLT2NpakVMNUVkQy9sNGRySDdxNEJWek9IaWt6RUg0RTdzeVVFZW1aNHpVSytiNU1aNlBIYWd4WklLTVdRaWV4djhZWXF6SGFVRDRrTWNBYnc1NW5oVVpxQlQ5MlU1Zk01MU1rOUx2UEhxZUEwNDBab290clEraGtCbW9aVjJ1TU5ncDVuOFJxNkVqY3hza0lTN1hTM1NxcU5ISS95cTljMWVNVmUyNHQxbExDZVZMTnY3T2d4dUFUN2k1dUwrY2lMTjVCV0U3Q0JKbnNvRHVBT00ydWN5bVRJT0NIYm1kektQZnlaUzZTQ3U5dXNqRUVnOXNydGZyaDVaeU1jTGxPNVlldXNzeG5JOG9zenpSa2lzVVN1cmhTSm9ZanpOdVFHY0ZQM1FrM2F6WDd1c3JUbHlYQUgvMFJsRElLMU1zTXlzUW1IckFXZzBjRWJ3ZzRoRTZhM0dRUW16Z1dFeUd3LzVXN1VLNlJXdXlBNmpmNFJCZ01BVEJCcC9FOU54bGtIcThBUzN6U3N6dmFFUzZUT2xZRVVMZkJaOEppQ0NIT2NyVmRCdkgxb1JaNDJ4OUpQYklaWVpUTVpFMFc2elJra2JBWUFvVEQyY3hjVjFsc3RqZ2h3OW5nWXl4R1NDMi95MUo5aGdBSWp5RVNUTmJwbk80bWc4empRZUFYUHVsSjhnN0NxVEl6OElHOHdXZkNaZ2lMT0xlcjdYS1RTeWVUZ1gvNUk0bjFGSEM2MUxMQnAvSU5JU0pzaGdBWXdtWnEzV1J3RGtTYjZZT1c1eWppVEpuSjM5TXRRQnM0eWt0QkJuOEpveUVBcXJTYUUxemxLT1lXNENrUE5UekdYcHd0TmZ3ajNRTDBScVlqVkhxb3llQXpZVFZFSVhIdTBLdFREdzBSbXpnRlhJTTNheE8vQWk2UTZYeWFiZ0hhd0d6bjFBaERoQWlySVFDT1lRQlZiakxJSEY1RjBvaVAycEc3Z1V2RVpsczZtVlVSYmFBRmNkZnRNNFNETUJzQ29GYW51enlEZEFzMjhEOXAxU1kwaWMwNHNlbE1KN3V1cG9CNTNBN0UwcXJmRURoaE4wUWY0QTY5SlBXalNhU1pyVTVFYk9vSWlsSXBOdFZ1QlNiUjFSVHdaKzRDeHFkYmhpRjR3bTRJVUU3aTYweDJrMFhtOFJEQ3oxUDhlQmN3UVdaemszdHhDZFNtbUQrekJtRk11bVVZd2tINERRRWdOR2cxUjdyS0U2Y2MyTFNIVDMxT1lyeHdaN3JTMUthRVF0cUFINlZiaGlFOFJNTVFVSUp5bTVzamJHUWVIOEp1dTBEL3dtS0V6T2IrZEVYcEF2bzVabkFWbUdnSUwxRXhCTUIzcWVhbnJuSTBjQnZ3WkEvdkpJNklzWHQ4THlYVVpnRGJXQWVjblc0Wmh2QVJKVU9Bc2tCbjhOVlVQeTZKVFR3VFNIU05raVNPaUxGNUtXMFpOZ2RTd0g4REo2ZGJoaUdjUk1zUXNEZGQzT29tZzh4bEE3RFErZXZyeFBtTzJMeVZyZ0MxT1pnQ0hpR0NwMnNiOWt6VURBRndnVlp6aGFzY2hjeEZ1WnNDVHBlR0ZPNmQ2QVdkeTJGWVBBRW1QaWxYQ2ZVcGFydWhWV3RZNXd5Yzk0aXo2and1a3dyVlpqQngxa0hxWFRaRDlJaGlDd0d3UDhyaWJGV21jeGlHeFdNWU0rUThVVFVFS0tWNkF4ZjVYbzNOOGNSNUhEalU3N29Nd1JOZFF5UllwamI3K1ZXNHp1WkVoSWVCQS95cXd4QXVvbTZJZzltV2ZzakY3dERabklueUNQaG5PRVA0aUxvaFFMaEtxem5QeXlLMW52T0o4eUJadmdIVEVEelJOd1NBc0Z5cnZIbDQxZVlIS1BjRGZiMG96eEF0Y3NNUThEVUt1VEhUUXJTT3k0QmZrZ2c3TitRaHVXSUlnR3QxQm1la20xbHRya2E0bCtpdXpSZzhJSmNNWWFIY3BsUGNkM1cwamtuQXJlVFc5MkZJZzF4N0FBWlQ0dTRBWXExak9zSlNOQVEzV2hzQ0o5Y01BY3BVcmVYRWxENDZpM293SjJQa01HK2cvTkpOQm5lRzZPSnhKUFJubXhZUTV3NjFlNy9pUzBGMEZxMG9kZGtVWnNnYW00QnFDamxPUnJzN2Z0VFZBRktXOFRmZyt6cUZFY1JwQVpjblltU1A0YlJ6QTFDLzh4dHFZOUhKQ3BTZkJLREw0Qzl4NEQ2S21DcWw2UjB3bDFhWFNacFp4MWFPUXlrbjZQdmVla09vMFZxR2QzOUpMNkdBVHU1RWpCbHlEdUZSTEk2VEt4aWJyaGtnZ3pHRXJLQkRGdE5LSjBjQWkwbWNYaEVtaW9semo5cUpWbEJ0aWhuS2FvUXJneFptOEpTM0VFcmxDczZSeTNrbDA4SXlIbFRMTWo2U1ZtSUl3NEdITWkzUFk0NmpnM0tkVEI4NldRUCtSOGNhc3NabW9KNU9oc3NWM2wxZzQ5a2lsTFN3SGpoUFkxeUNNQjg0M0t1eU0wS1l6VDVjQkp3U3RCU0RKeWh3TDUxVXlUZys4THB3ejZkZHBaVTFER0FJUWpud2lkZmxwMEZmakJseWhXZFJUcE94alBYRERPRFRPb1RZdEVzenJSUXhERmdCNXRwYVEwYThoM0lsWXpoSnJ1UnBQeXZ5ZFdGTzVyTlJtcGtJbkFUOHdjKzZERG5KVnFDSnZneVZxMWdwZ3ZwZFlWWUMyYVNaNXhTK1F3VVhBd3VBdzdKUnJ5SFNyRVdaTEZmeDEyeFdtclhRRFFHVlJhemhNNzZKVUUvQy9RYkR6cnlBY29aY3hTZ1psMTB6UUFDeFRMS0NMYklRbXdJR0E2dkEvMmJRRUFrK0FzcnB4N2RsSEU4RUpTS3c0RDZaejd0eUUyT0JVeEJ6M1cwZTB3RXNwcDBqWkJ5dFVocnNBbS9nMGE2eWtHZm94Mm5PQ25KS0I0OFpjb1oxd0xFeW5waE1ERWNJVU9DR2dNU0ZpYktBbFNoSE9PT0x6L2VZeVJCbE5tQnhvWXpuWEJuUEcwR0w2VTRvREpGRUZySlo1bU5Ud0ZHSWQ4dnhodER3TWNway9zNVJNbzdmQkMybUowSzVmMWdhZVFzbzFXck9kc0xNaCs4cGp5SDh5SVRNRDRMd20xQzFFRHNqalR4S0NjY2pUSVQwUTNvTmhsUUp0U0VBeEtaVEdsbUJNQVNsQ1dnUFdwTWhkd205SVpKSUk1dGtQdFhFT1JyQzJmODBSSi9JR0NLSnpHZUROSEloY0M2RWE0YkNFSDBpWjRnazBzZzZQdUpZSjh3OEZIUFlodWdUV1VPQXM0MTFIcTNBRWM0RkttSGJ4bXFJR0pFMlJCSzVrWS9rUm1MRU9SRjRQR2c5aHVpU0U0WklJbzI4S1BNNEUvZ0I4SGJRZWd6Ukk2Y01rVVFhYUdNTDMwS3BCajROV284aE91U2tJUUNrbWEweWp5WUtHWXFhYmF5RzFNaFpReVFSbTQzU3dFU1VreENlQ2xwUHhQZ3Y0dHN2dmM4TGN0NFFTYVNCNTVqTjZRaWx3RHRCNndrNWJ3TG55eVQrVXlibjExZ3Nid3dCempiVzJheWhnR0Vrem4zZEZyU21rUEV4U2puL1pMaE00cmRCaXdtQ3ZESkVFckhaSXJPeHNSZ0VyQ0lMcHptRW5FNWdCVVVNa2NtMGlrMW4wSUtDSWk4TmtVUnMzcFhaaktXTHM0Q1hndFlUQ01vanhEbE9Kak5SSnZMUG9PVUVUVjRiSW9uTTRmY0lKK1RaTnRhL0lKUktHU01reG10Qml3a0x4aEFPWWhNWG01WEFrWkRUMjFnL1E2a0hoc3Rrc3l0eFo0d2hka0pzUGhNYm13S0dRMDQ5TUhGZ0ZjcVJFc09Xc3B3MWZFYUVjZ3RwR0pCYS9nS1VhajNuQU0xRWV4dnJNeWd4S2VlWm9JV0VIZE5DN0FHWnhTTW94ME1rdDdHK0MxeEpqRk9NR1ZMREdDSUZ4S1pUNmxoQm5LRWtia3NLKzdUa0ZxQ2VPSU9sUER1SEJPY0t4aEF1RUp1UHBZNFlCUXhIZVRCb1BUMmd3QnE2K0taTXdaWUtjMzZ1Vzh3WUlnMmtoamVCQzNRT0kwaTBHTU1DbGdUQzgwQk1wcGhyQnpMQnRCQVpJTFdzNDhzY0UvQnRyTzhqVE9UZmZOdVlJWE9NSVRKRUp0SWh0YlJpY1FTUzFXMnM3Y0JpaWhncVUxZ2h0Z2x2OXdKakNJK1FHajZTR21MQXQ4SDM0OXpYWWpGTXBoS1RzbERjNDVjem1ER0V4OGdNWGdETzBMbU13cUxWNCtMZlJEaGJwdktZeCtVYURQNmpOaVhheUJsQjZ6Q2t6djhEUWQ3UXJNYkxSMUFBQUFBQVNVVk9SSzVDWUlJPSI+CjxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNUUFBQURFQ0FZQUFBREFwbzVyQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUJhYmdBQVdtNEJ4V3NqT0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFCbDBTVVJCVkhpYzdaMTVlRlRWM2NjL3Y1c0ZDVlJ4cVZ0cHRWVzJWbHhmNjFxdGlxMEw5R2w5TlhVQkZFcEZSVEloaEJBRENUZEFNQUVrQ1lzSzdxQjkra0Q3MnFmQldpdnFXN1ZhNjc0aXJlOXJheFgxYlpWV1pUSEwvTjQvNWc0R1NHRHV6TDF6NzUwNW4zODR6TXc1NTh2TS9YSzIzemtIRElHaml6aFBGM0ZlMERvTUlFRUx5R2QwUG9Pd2FBQXVjVjVhaDBXNVZQQjZrTHJ5R1dPSUFGQ2IvdlNqRXFnRyt1endLd2dkd0MxMFVDZlYvRHNZaGZtTE1VUVdVUnVMRWtZRDh4RU8ydjdHam9ad1BzeEhXTXhoSUV1bGxLNXM2c3huakNHeWhDN2dKSlJXNENTZ1p4UDBuSDRKaTVpVTg3amZHZzNHRUw2alRRd0U1Z0dqa1c3ZmQrcUdTTEtXSXNwa01tLzdJTlBnWUF6aEUycFRRaCtxc0tnQytnTHVUYkJyZWl1d21IWWFaRHFmZWlyWUFCaERlSTRxUWlNWEF3c1FEdlBBQkQybE55TFVzNG5ieFNhZXVXcERFbU1JRDlFYk9RRm9SVGh0KzR2K0dDTDU1N05BdWNSNEtpM0JobDB3aHZBQWJlQVFMR3hnQW1ENWFvTHU2Y1NmaXZBTGxFcUo4WTVMNllhZE1JYklBTFVwcG9ockVXWWo3TDM5amV3YUlwbmVqTEtRdldtVWNXeEw2UjlnMkFWamlEVFJ1WXpDb2dYNEJwQTlFM1JQOS96KzM0R1pVc2JLWHFRYmRvTXhoRXUwZ2FNUm1sSE85dkFCLzZPVE90a0RReVRTeWlNbzVSTGp0WjcrSFlhZXNZSVdFQlhVWmorZFN5dndQTXJaSGhXN0VXRWluM0VhVXprVm9SVDRteWNsQytkZzhiSXVaYVhld29HZWxKa0htQlppRDZoTklVV01SMmtBRHZDb1ZkaUtzSmo0cnVzSnVwd1NQcU1LcUVLYzlZdmV5a205emsxQUV3ZlNMS1cwWStnVlk0amRvUFdjZzBVTHdsSGJYOHpjRUdzUnltVGE3bGVjdFltQkZEa3IzT3l3eHAyT0laTHBEUWhUNVRvZTJGM2QrWXd4UkEvb0hBWkJ0N0JzYjFxRkZ5bWdYQ3JkeFNUcElzNEVXaENPM2FYTTlMV3NvNENZWE1NYmJyVGtBOFlRM1ZDYi9naVZ5RTVoMlprWjRpT0VPUnllZnRTcTJsZ01ZRFRLZk9BZ2ozUjFvTnhDSVhVeTBZU1pKekdHd0huZ0xPZUI2eWtzTzcwSEwvSEFpWGY3R25RWi9XbnZ3YkRwYXdTY01QUDlUSmc1R0VPZ3MxTUl5M2Ivc0swalRreHEvT21TYUN1RFVCcVE3VHZ0dk9qV3ZZaFFMdGZrZDVoNTNocENiUmRoMmFrL1ZCdFFLcVNHMzNncXRoZTBsWE9BRnVBb0Q5ZEUxbEpBbWZ3MFA4UE04ODRRYWxNQ3pyUm1xbUhaZTM2UU5pRTA4VG5OWW1kM1dsTnRDdG1YOFlnekxkeTdSamZwUkpoNUVRM3lrL3dLTTg4YlF5Z0lkVnlNeFFMVVpWaDI3Kzkzb3R5Sk1GTnErSWZYbXQyZ2k5aVBRbVlCMXlFVWJuOGpNM084aDFMRFJGYUpvSjRLRGlsNVlRaXQ1UVFrZzdEc25sOTdGSXR5cWVaVlQ4Vm1pQzVoS0VvejRoeHI0MDFYNmxtVW1GekQweDVLRFNVNWJRaXQ0UkNLc05FTXc3SjNmTzB0bEJxWnlScVA1WHFLTG1ZVVFndmlCQjlDcHVaUTRGNDZxSkpKZk9DcDJCQ1JrNFpRbTJJNlBRekxUdnlaQ0svZWh4dWxqTTg5bHV3TGFsUE0vczczQUh0NzFGcHNSbGhJWVc2R21lZWNJWFNHNTJIWmNZVDdFS2JKREQ3MFZtMTIwT1VjUWdjMjRyU1U0TVgzOGhaQ2pVd0lkMHZwbHB3eGhON0FVQXBvQnM3emNBcnlHWlNZMVBHTWgxSURRMjkydHJncXAzbjJIVms4U3B3cDhsTmU4VkJxWUVUZUVHcXpIeDNNUXJnT25ObVZ6SC9zZDRFWjFPYmU3SW9xd2kzT0lRaHdHT0RGOTlXSk9MTnQ0NE9kYmN1VXlCcENiUXJwWUR4NEdwYTlCVmpBbDJpU0NyWjZLRGQwNkhKSzZLUUtTU0hNUE5XMHhTYmlOTEYzZE1QTUkya0lyWEZXYUwwTHkxYmdGeFF3VFdaNnRFRW5JdWppRk1MTTNhWVRZZVlWTWk0N0svWmVFaWxENkV3R0VmYzhMUHM1TE1xbGpqOTRwelI2Nk0yYzZVeEc3QnBtN2piOXhXdnJLS1JNeHJMZU82WCtFZ2xEcU8xRWVTclZDSDIydjVHWklUWUM5V0FPKzBxaU5oWUhPNGN4ZHc4emgweldiUkpSdngzUkNETVB0U0hVeG1Jcm83R2NId2k4YUJYYWdWc3BZYVk1RHJKbmRCbjlzYWpFY3NMTUlSTkRKRW1FbWZjTmQ1aDVhQTJoTjNRTHkvWnVHblV0UWt4cy90ZERxVG1MM3NvZ3hPbWlabTZJWlBvRmxISVp4eE5lYXZXSzBCbENxeGlJMVcyUUIxNjBDaStobE1zY2Z1K3AyRHhCVnpEQ2lZOUtUR0prWm9oa2VpMXhKc3M0L3VxbDFrd0pqU0hVcG9RdHpqUWc5UFdvVlVoczMxelBVbGtUM21ZNkNxaE5JVjl4VGg4Uko4d2NNakVFSkthNWw5Q1h1VkxLWjk0cVRvL0FEYUVnVE9OaXhGa29jditsOXBST1hFdlZUcDAwaFg4Z0Z5WDBkdlpEbVFWTUFnb3lORVF5L1I1Q0RhT0RYd2dOMUJBNmxST3dlZ25MVHQ4UTZ4REtaWTY1dU5CUDlEYUdBWXVRYnJlblp2N2IvUW1MbUl6ZWZwSmgxZ25FRUZydWhHWHY3clJzOTEvcUJ1Sk1sWG5tektGc29yY3pDcHhnU205YWQwV2NNUE54MlE4eno2b2huTzdSTkpSYWhQNDlxbkQvcFg0TTFGUEV6V0xUNmExaVF5cm9YZXhGbkFyZ0JxQy9SK08vVDdDWVF4R0xzeGtHa3ZVV1FpczR6amtONzR3ZVZhUnVpRVJZZGhHVll2Ti9mbWcxdUVPWGN3aUZQb1daWDVHZE1QUEF4aEJheVNpRVZ1RHJyZzJoUElvd1JlYmxSc2h4cnFGM2N3SmR6dGpRdXpXa1IxSEtaYlMvVzNhREhWVGJGTE9aYXhIbUFGL2FRVkhQWDh4YldOUklRMjV0U3NsRlZCSHU5aUhNSE82a2lKbFM2aytZZWVEVHJnQmF4YUhBTEdBQzBtTlRtOWkyV0V5ajJMbTNiVEdYMGVXVVVKemlhZWFwcHplaDFITW95K1FzYjhlTm9UQkVFcTNpUDV4dTFLbU9zc1RHOWk2cVpFSHVibXpQQi9RMkJsTE1QTlRETUhONEU0c0t1WlFIdmRJWktrT0FNeE0xblRFSUYyTmh5enhlQ0ZxVHdUdjBMcjdyaEprZnMvM0Z6TTF4UDNFcTVZck1ZOVJDWndoRDdxTTJGb2M3WWVhU1FaajVqdWtPTEc2aGcxb1p6U2ZwYWpPR01BU0dycVkvVzd1ZFpnNlp0eGJDK3lnMkZuZWtFMlp1REdFSUhMMlBRWFNsRVdhK3V6UThqMFc1bFBLa0d5M0dFSWJRb1Bkd1BzSWloS0ZBcG9hQXhLWDJFK1RIM0ptcUJ0ZTNrR281RTdTY0g3ck5aekRzQ2JtU0I5bkswY0JFNEo5ZUZBa2M2aWFEKzJ0NWxTTlI3dGNZNi9SNng4a0dnMGZJUkRwa0RDdm93eEJnTVdSM0gwczZoaWh5VXVkUXdDc2FvMVd2Nnhhb1p6QjRnSlR5c1l3bVJwemh3Ryt6VmE5N1ExamJEUUZRQkpSUnhIcU5NZFl6VlFhRGc0eGx2WXptZklRZmdQOTc0VE5wSWJvekVMaEh5M2pZZEtNTWZpQ1gwMFlSdzRCeVNIK2RZVSs0TndROUdpS0JNSUlDWHRZcE5Lck5YdW5MTWhoMlJVcHBseXRvUlJnRy9weWw1YTBoRWhTalRPZGZ2SzR4UnFZanltRFlIWElaRzhHZnZkZCtHQ0xKTnhEYWRBcHRXc25YMDZqSFlNZzZYbzBoZHNkSXVuaGRLN0JOTjhvUWRqS2RaVXFWdmlpeitJVFh0SklMMDhodk1HU0ZiTFFRM1RtQ09HdTFnall0NS9BTXlqRVlmTUhQTWNUdUdFa0JiMmlsNlVZWndrVlFob0JrTitwVFh0VnBYT0JSbVFaRFJnUnBpQ1JIb2p5Z1UyblRhdE9OTWdSTHRzY1F2U09NcEpQWHRRcGJKM2U3Rk1WZ3lDTHVEU0UrR1NKQkNjb3MrdkNhVHV0MlpxakJrQ1hDMEdYYUZlRkk0RUd0b2sybk9tZjZHQXhaSUp5RytJTEViSlRwUmhteVJOZ05BVkFDektLRVYzVTYzODl5M1lZOEl3cUdTRElJK0sxVzA2YlQrVnBBR2d3NVRwUU1rVUFaaWJCZXE3SFZwamhRTFlhY0kzcUdTSkRvUm0zalZhM21lMEdMTWVRT1VUVkVrc0VJRCtrTnRPa012aHEwR0VQMGlib2hrb3drem5xdE1kMG9RMmJraWlFQStnR3phT2NWcmVIY29NVVlvb2tyUTJqaTRLZENuN1I0eFJEZ2R6ckRkS01NN25IWFFsd2Rlak4wWnlTd1htZWFibFJlRTNkM0dJSGJMbE5ZdTB1OTBROWxGbDI4ckRNWkViUVlRMWJaakZMUE5oYTV5ZVRPRVB0R3poQUpsS0hBNzNRbUs3V0dnNEtXWS9BVkJWYlJ3U0M1REZ2R3VidUN6WjBoT2lOcWlBUUNqS0dBRFRxVG1OcVI2djRaVWtINUV4YW55YVdNbFRHOG4wNFI3Z3pSRldsREpOa0hvWVV1bnROYVRndGFqTUVUM2tXNGtrczVXVXA1T3BPQzNCbkNyODFCd1hBTXdoTmFaN3BSa1VYWkF0UlR3R0M1bEpVaW1SOWU1czRROFp3eUJDUzdVWVc4cVhYRTlCSUtnaFprU0JGaEZVVU1sc3V3cFpTdDNoWHJBcjJlb1JTdzNsV3AwVXEvaERCSmJKN0NrSmU0YXlHS2NxNkYySmxqZ1NmVlpxWGFIQmkwR0VQMnllY3hSTStvMDQyQ0RWcFBURmViYmxRK1lRelJPd05RV2xqUHN6cWJVNElXWThnT3ViNVM3UVhIb2Z4QjYxbXA4L2h5MEdJTS9tSmFpTlJJZEtNNjJhQnpURGNxbDNGbkNNbjdJTGw5VVZyWXdKOTBMaWNITGNiZ1BhYkxsQTdLOFNoUDZSelRqY28xVEpjcGZSTGRxQzdUamNvbFRBdVJPZnNpdFBBWG50SFpuQlMwR0VObXVETkVlcmNINVFmS0NWZzhwWE5acVRZSEJDM0hrQjZtaGZBV0MyRU1SV3pRQm1KcXA3Vm5QVlJvTXdPQzFwQUp1cHFEM1h6ZTdRKzI1ejBFcnFLamNwYjlnQmFLZVZJYk9TWm9NZW1nU3poVWw3S2NZdVlFclNVZGRCVkQ5R2M4UUFkVDNlUnpPNmgyTisxcXpIRUtTbG5RSXR5Z05zVzZoQmdXYnlKY1RYb25zd1NHM3NlK2VoK05XTHdDN20rbWNyZHJUQ2xLK3lIZk1kOW00REdnalM2ZW9JakgwQnpka3hDblBXZ0pxYUxMR0lYU0N0RzdWMXh0TEk1Z05MQUEwZy9NZEx1Tk1wTXh4TnNvRHdOcjJZZUh4UDdpUWRGS0tvRDdNaWc3dkFnZFFVdllFN3FNWTRuVGduSm0wRnJTUWUvakxPSzBJQnlkYVZudURHRlI1R0pQVWhlSi9RVnJFZHJrSnA3djdZT3lrSjlwSlpkRER0NWhMZUZ0SVhRcCt3TjF4SmtFMFZ0SDBaVjhEWXU1S0dPODZwNjc3ekx0bnMySTB4VXE1TmV5Z0E5Y0tMbWVMcjVMNGdTKzNFSEQxMExvY29wbzV6cmkxQ1BzRTdRZXQraEsraUZNQTZhajdPWGxXTldMTHRQYkNBOGp1M2FGM0NDTi9GV3JhRUNabDNnaG5WSkNTTWdNb1lzWndlZTBBTjhLV290YlZCSHVaUXhLRTdpYlRrMlZkQXp4UlZjb1Rwc3M3cjByNUpvU0ZyQ1pVaEk3MTNJREt4eUcwS1VNcG90RktCZEc4VDhidllzVFdVVXIrTHMzeFowaHVyaWJJdVpMTXgvN0lVWnNPcldTNnhDZXBQdDBYMi83b0tOQm9HTUliV1lBUWpWZFRJSG9SU3ZyUFh3RnVCRVlUUlorZlZlR2tLVzg2WmVRN1hVczVHbWR4bkxnV3Ivcnlnb0JkWm5VeG1KQTV0T1FRYUdyNmN0V3lvQVp3SmV5Vlc4NEYxMjJVWTN3M2g0L0Y0WFdJb0JaSnIySnM5aUhGNEI3aUtJWjdtSVVXM2dEcFpFc21nRkNhZ2had2lkQWhidE0vbWpKbUN5MkVIb1RYOVZtVm1MeEtFUXZaRVR2NUhpOWk4Y1JmZzBjSG9TRzBKNXZLazJzMW1tTVJoamxQck1QZ3RJbEM0YlFCZlREWWhyQ2RHQXZ2K3Z6R3IySC9lbWlEZ2wrUFNTMGhnREE0bnFVczREK2FaY1J2RGw4NnpLcElpemlZb1NGRUwycmluVTVSUlJ6SFYzaFdROEpaWmNwaVRUeERrSzlkd1Y2VmxMcStEVHRxZ3M1a1VVOENhd21pbWE0a3hFVThSSktDNFREREpCbFE2aE5vYnA5TFB2U0Fyem91WmpzbUdNVHlxdGVGcWhOSEtvTFdZN3dSK0JVTDh2T0Jub0hRL1IySG5EaTJyNFp0SjZkOGQwUU9waytPb1VSV2tFcm4vQXVVN2pLVFg2eDZVUzVtc1NDb0QvNFlRN2xBeXpPa2hyZThLekloVnhFQVgrRzZJVmxBK2p0akFkZVE5eUhaV2NMWDc1VW5VSmZuY0lvbmNKS0N2a1FlQmdvQXc1Q2FOWXFCcm9wVCtiekhIQ3pIMXAzcmN5VFV0Nm1nTzlJTlM5N1V0b1hIRU8wWTcyR0VmSnhxMmZpdEp3QktPY2lqRUw1RWRDL2w0ZHJIN3E0QlZ6T0hpa3pFSDRFN3N5VUVlbVo0elVLK2I1TVo2UEhhZ3haSUtNV1FpZXh2OFlZcXpIYVVENGtNY0FidzU1bmhVWnFCVDkyVTVmTTUxTWs5THZQSHFlQTA0MFpvb3RyUStoa0Jtb1pWMnVNTmdwNW44UnE2RWpjeHNrSVM3WFMzU3FxTkhJL3lxOWMxZU1WZTI0dDFsTENlVkxOdjdPZ3h1QVQ3aTV1TCtjaUxONUJXRTdDQkpuc29EdUFPTTJ1Y3ltVElPQ0hibWR6S1BmeVpTNlNDdTl1c2pFRWc5c3J0ZnJoNVp5TWNMbE81WWV1c3N4bkk4b3N6elJraXNVU3VyaFNKb1lqek51UUdjRlAzUWszYXpYN3VzclRseVhBSC8wUmxESUsxTXNNeXNRbUhyQVdnMGNFYndnNGhFNmEzR1FRbXpnV0V5R3cvNVc3VUs2Uld1eUE2amY0UkJnTUFUQkJwL0U5Tnhsa0hxOEFTM3pTc3p2YUVTNlRPbFlFVUxmQlo4SmlDQ0hPY3JWZEJ2SDFvUlo0Mng5SlBiSVpZWlRNWkUwVzZ6UmtrYkFZQW9URDJjeGNWMWxzdGpnaHc5bmdZeXhHU0MyL3kxSjloZ0FJanlFU1ROYnBuTzRtZzh6alFlQVhQdWxKOGc3Q3FUSXo4SUc4d1dmQ1pnaUxPTGVyN1hLVFN5ZVRnWC81STRuMUZIQzYxTExCcC9JTklTSnNoZ0FZd21acTNXUndEa1NiNllPVzV5amlUSm5KMzlNdFFCczR5a3RCQm44Sm95RUFxclNhRTF6bEtPWVc0Q2tQTlR6R1hwd3ROZndqM1FMMFJxWWpWSHFveWVBellUVkVJWEh1MEt0VER3MFJtemdGWElNM2F4Ty9BaTZRNlh5YWJnSGF3R3puMUFoRGhBaXJJUUNPWVFCVmJqTElIRjVGMG9pUDJwRzdnVXZFWmxzNm1WVVJiYUFGY2RmdE00U0RNQnNDb0ZhbnV6eURkQXMyOEQ5cDFTWTBpYzA0c2VsTUo3dXVwb0I1M0E3RTBxcmZFRGhoTjBRZjRBNjlKUFdqU2FTWnJVNUViT29JaWxJcE50VnVCU2JSMVJUd1orNEN4cWRiaGlGNHdtNElVRTdpNjB4MmswWG04UkRDejFQOGVCY3dRV1p6azN0eENkU21tRCt6Qm1GTXVtVVl3a0g0RFFFZ05HZzFSN3JLRTZjYzJMU0hUMzFPWXJ4d1o3clMxS2FFUXRxQUg2VmJoaUU4Uk1NUVVJSnltNXNqYkdRZUg4SnV1MEQvd21LRXpPYitkRVhwQXZvNVpuQVZtR2dJTDFFeEJNQjNxZWFucm5JMGNCdndaQS92Skk2SXNYdDhMeVhVWmdEYldBZWNuVzRaaHZBUkpVT0Fza0JuOE5WVVB5NkpUVHdUU0hTTmtpU09pTEY1S1cwWk5nZFN3SDhESjZkYmhpR2NSTXNRc0RkZDNPb21nOHhsQTdEUStldnJ4UG1PMkx5VnJnQzFPWmdDSGlHQ3Ayc2I5a3pVREFGd2dWWnpoYXNjaGN4RnVac0NUcGVHRk82ZDZBV2R5MkZZUEFFbVBpbFhDZlVwYXJ1aFZXdFk1d3ljOTRpejZqd3Vrd3JWWmpCeDFrSHFYVFpEOUloaUN3R3dQOHJpYkZXbWN4aUd4V01ZTStROFVUVUVLS1Y2QXhmNVhvM044Y1I1SERqVTc3b013Uk5kUXlSWXBqYjcrVlc0enVaRWhJZUJBL3lxd3hBdW9tNklnOW1XZnNqRjd0RFpuSW55Q1Bobk9FUDRpTG9oUUxoS3F6blB5eUsxbnZPSjh5Qlp2Z0hURUR6Uk53U0FzRnlydkhsNDFlWUhLUGNEZmIwb3p4QXRjc01ROERVS3VUSFRRclNPeTRCZmtnZzdOK1FodVdJSWdHdDFCbWVrbTFsdHJrYTRsK2l1elJnOElKY01ZYUhjcGxQY2QzVzBqa25BcmVUVzkyRklnMXg3QUFaVDR1NEFZcTFqT3NKU05BUTNXaHNDSjljTUFjcFVyZVhFbEQ0Nmkzb3dKMlBrTUcrZy9OSk5CbmVHNk9KeEpQUm5teFlRNXc2MWU3L2lTMEYwRnEwb2Rka1Vac2dhbTRCcUNqbE9ScnM3ZnRUVkFGS1c4VGZnK3pxRkVjUnBBWmNuWW1TUDRiUnpBMUMvOHh0cVk5SEpDcFNmQktETDRDOXg0RDZLbUNxbDZSMHdsMWFYU1pwWngxYU9ReWtuNlB2ZWVrT28wVnFHZDM5Skw2R0FUdTVFakJseUR1RlJMSTZUS3hpYnJoa2dnekdFcktCREZ0TktKMGNBaTBtY1hoRW1pb2x6ajlxSlZsQnRpaG5LYW9Rcmd4Wm04SlMzRUVybENzNlJ5M2tsMDhJeUhsVExNajZTVm1JSXc0R0hNaTNQWTQ2amczS2RUQjg2V1FQK1I4Y2Fzc1ptb0o1T2hzc1YzbDFnNDlraWxMU3dIamhQWTF5Q01CODQzS3V5TTBLWXpUNWNCSndTdEJTREp5aHdMNTFVeVRnKzhMcHd6NmRkcFpVMURHQUlRam53aWRmbHAwRmZqQmx5aFdkUlRwT3hqUFhERE9EVE9vVFl0RXN6clJReERGZ0I1dHBhUTBhOGgzSWxZemhKcnVScFB5dnlkV0ZPNXJOUm1wa0luQVQ4d2MrNkREbkpWcUNKdmd5VnExZ3BndnBkWVZZQzJhU1o1eFMrUXdVWEF3dUF3N0pScnlIU3JFV1pMRmZ4MTJ4V21yWFFEUUdWUmF6aE03NkpVRS9DL1FiRHpyeUFjb1pjeFNnWmwxMHpRQUN4VExLQ0xiSVFtd0lHQTZ2QS8yYlFFQWsrQXNycHg3ZGxIRThFSlNLdzRENlp6N3R5RTJPQlV4QnozVzBlMHdFc3BwMGpaQnl0VWhyc0FtL2cwYTZ5a0dmb3gybk9DbkpLQjQ4WmNvWjF3TEV5bnBoTURFY0lVT0NHZ01TRmliS0FsU2hIT09PTHovZVl5UkJsTm1CeG9Zem5YQm5QRzBHTDZVNG9ESkZFRnJKWjVtTlR3RkdJZDh2eGh0RHdNY3BrL3M1Uk1vN2ZCQzJtSjBLNWYxZ2FlUXNvMVdyT2RzTE1oKzhwanlIOHlJVE1ENEx3bTFDMUVEc2pqVHhLQ2NjalRJVDBRM29OaGxRSnRTRUF4S1pUR2xtQk1BU2xDV2dQV3BNaGR3bTlJWkpJSTV0a1B0WEVPUnJDMmY4MFJKL0lHQ0tKekdlRE5ISWhjQzZFYTRiQ0VIMGlaNGdrMHNnNlB1SllKOHc4RkhQWWh1Z1RXVU9BczQxMUhxM0FFYzRGS21IYnhtcUlHSkUyUkJLNWtZL2tSbUxFT1JGNFBHZzlodWlTRTRaSUlvMjhLUE00RS9nQjhIYlFlZ3pSSTZjTWtVUWFhR01MMzBLcEJqNE5XbzhoT3VTa0lRQ2ttYTB5anlZS0dZcWFiYXlHMU1oWlF5UVJtNDNTd0VTVWt4Q2VDbHBQeFBndjR0c3Z2YzhMY3Q0UVNhU0I1NWpONlFpbHdEdEI2d2s1YndMbnl5VCtVeWJuMTFnc2J3d0J6amJXMmF5aGdHRWt6bjNkRnJTbWtQRXhTam4vWkxoTTRyZEJpd21DdkRKRUVySFpJck94c1JnRXJDSUxwem1FbkU1Z0JVVU1rY20waWsxbjBJS0NJaThOa1VSczNwWFpqS1dMczRDWGd0WVRDTW9qeERsT0pqTlJKdkxQb09VRVRWNGJJb25NNGZjSUorVFpOdGEvSUpSS0dTTWt4bXRCaXdrTHhoQU9ZaE1YbTVYQWtaRFQyMWcvUTZrSGhzdGtzeXR4WjR3aGRrSnNQaE1ibXdLR1EwNDlNSEZnRmNxUkVzT1dzcHcxZkVhRWNndHBHSkJhL2dLVWFqM25BTTFFZXh2ck15Z3hLZWVab0lXRUhkTkM3QUdaeFNNb3gwTWt0N0crQzF4SmpGT01HVkxER0NJRnhLWlQ2bGhCbktFa2Jrc0srN1RrRnFDZU9JT2xQRHVIQk9jS3hoQXVFSnVQcFk0WUJReEhlVEJvUFQyZ3dCcTYrS1pNd1pZS2MzNnVXOHdZSWcya2hqZUJDM1FPSTBpMEdNTUNsZ1RDODBCTXBwaHJCekxCdEJBWklMV3M0OHNjRS9CdHJPOGpUT1RmZk51WUlYT01JVEpFSnRJaHRiUmljUVNTMVcyczdjQmlpaGdxVTFnaHRnbHY5d0pqQ0krUUdqNlNHbUxBdDhIMzQ5elhZakZNcGhLVHNsRGM0NWN6bURHRXg4Z01YZ0RPMExtTXdxTFY0K0xmUkRoYnB2S1l4K1VhRFA2ak5pWGF5QmxCNnpDa3p2OERRZDdRck1iTFIxQUFBQUFBU1VWT1JLNUNZSUk9Ij4KCjxzdHlsZT4KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by91WUVDTUtvSGNPOXgxd2RtYnlISW0zLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vc1RkYUE2ajBQc2I5MjBWanYtbXJ6SC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL19WWUZ4LXM4MjRrWHFfVWwyQkhxWUgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3RuajRTQjZETmJkYVFuc004Q0ZxQlgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL29NTWdmWk1RdGhPcnlRbzluMjJkY3V2dkRpbjFwSzhhS3RlTHBlWjVjMEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL0tzX2NWeGlDaXdVV1ZzRldGQTNCam4tX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vTko0dnhsZ1d3V2JFc3YxOGRBaHFubi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9pc1otd2JDWE5LQWJuam82X1R3SFRvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by83N0ZYRmpSYkd6TjRhQ3JTRmhsaDNvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9qU04yQ0dWRGJjVnlDbmZKZmpTZGZJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1VYNmk0SnhRRG0zZlZUYzFDUHV3cW9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vZC02SVlwbE9Gb2NDYWNLenh3WFNPSkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by85N3VhaHhpcVpSb25jQmFDRUkzYVc0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vUHdaYy1ZYklMNDE0d0I5ckIxSUFQWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ19acmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0N3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M0Z3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09wWFVxVG8wVWdRUWhHal9TRmRMV0JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9XeHJYSmEwQzNLZHRDN2xNYWZHNGRSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vY0RLaFJhWG5RVE9WYmFveHdkT3I5eGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vMWhaZjAyUE9BTmgzMmsyVmtnRW9VQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlBjeW5TTDBxSHFfNmRYN2xLVkJ5WFloamJTcHZjNDdlZTZ4Ul84MEhudy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlN6dWxmS1NLMExMampmZWF4Y1JFaGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9LMjNjeFdWVHJJRkQ2REpzRVZpMDdSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vRmw0eTBRZE94eXlUSEVHTVhYOGtjWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8wZUM2ZmwwNmx1WEVZV3BCU0p2WENJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8tTDE0SmswNm02cFVIQi01bVhRUW5ZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSGdvMTNrLXRmU3BuMHFpMVNGZFVmWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1BydTMzcWpTaHBaU21HM3o2Vll3bllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL05ZRFdCZEQ0Z0lxMjZHNVhZYkhzRklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0MTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0X1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0d3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL29IaTMwa3dRV3ZwQ1dxQWh6SGNDU0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9aTHFLZWVsWWJBVEc2MEVwWkJTRHk0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vbXg5VWNrNnVCNjNWSUtGWW5FTVhyWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vckd2SGRKbnIybDc1cWIwWU5EOU55SVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vUnhaSmRuemVvM1I1elNleGdlOFVVWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb09lRndaTmxyVGVmekxZbWxWVjFVSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9tYm1ocHJNSDY5Wmk2ZUVQQllWRmhZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwVjRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBmWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFF0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwWWdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGFFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGREaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZd3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnoxeC1NMUkxdzVPTWlxblZGOHhCTGhVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGendYYUFYdXA1bVpsZks2eFJMcmhzY28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d242V3F4by14d3hpbERYUFU4Y2hWVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejFUN2FKTEs2bktwbjM2SU13VGNNTWMud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnpfNzlfWnVVeENpZ00yRGVzcFRuRmF3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6NGdkOU9FUFVDTjNBZFlXMGU4dGF0NC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6OGJJUVNZWm5XTGFXQzlRTkNwVEtfVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Cjwvc3R5bGU+CgoKCjxzdHlsZT4ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC13cmFwcGVye3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcnttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlciwubWF0LWdyaWQtdGlsZS1mb290ZXJ7Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnR7bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2Vye2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWwsLm1hdC1zdGVwcGVyLWhvcml6b250YWx7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcntmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9ye2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXIsLm1hdC10b29sYmFyIGgxLC5tYXQtdG9vbGJhciBoMiwubWF0LXRvb2xiYXIgaDMsLm1hdC10b29sYmFyIGg0LC5tYXQtdG9vbGJhciBoNSwubWF0LXRvb2xiYXIgaDZ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC13cmFwcGVye3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlciwubWF0LWdyaWQtdGlsZS1mb290ZXJ7Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnR7bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2Vye2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWwsLm1hdC1zdGVwcGVyLWhvcml6b250YWx7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcntmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9ye2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXIsLm1hdC10b29sYmFyIGgxLC5tYXQtdG9vbGJhciBoMiwubWF0LXRvb2xiYXIgaDMsLm1hdC10b29sYmFyIGg0LC5tYXQtdG9vbGJhciBoNSwubWF0LXRvb2xiYXIgaDZ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWR7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50e3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yaXBwbGUtZWxlbWVudHtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW57Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyLC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5le3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3B7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2Nre3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmd7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveHtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHsvKiEqL31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHsvKiEqL30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbntjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksLm1hdC1vcHRpb246Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnkgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2FybiAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkIC5tYXQtb3B0Z3JvdXAtbGFiZWx7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94e2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye2NvbG9yOiNmZmZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXByaW1hcnkgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC13YXJuIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZCwubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejB7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJ7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M3tib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1e2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2e2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N3tib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejh7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5e2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTB7Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTF7Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJ7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTN7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTR7Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTV7Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3e2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOHtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTl7Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjF7Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMntib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIze2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjR7Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcntkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdle3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuIC5tYXQtYmFkZ2UtY29udGVudHtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1jb250ZW50e3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudCwubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGV7dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZle3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTZweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW0gLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmUgLm1hdC1iYWRnZS1jb250ZW50e3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjJweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTExcHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93IC5tYXQtYmFkZ2UtY29udGVudHtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNiZGJkYmQ7Y29sb3I6Izc1NzU3NX0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9ue2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4sLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKX0ubWF0LWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtaWNvbi1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLC5tYXQtcmFpc2VkLWJ1dHRvbiwubWF0LWZhYiwubWF0LW1pbmktZmFie2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtZmFiLm1hdC1wcmltYXJ5LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1mYWIubWF0LWFjY2VudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnR7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1mYWIubWF0LXByaW1hcnksLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmR7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmt7ZmlsbDojZmZmfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiNmZmYgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIC5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwe2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVke29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZSB0aGVhZCwubWF0LXRhYmxlIHRib2R5LC5tYXQtdGFibGUgdGZvb3QsbWF0LWhlYWRlci1yb3csbWF0LXJvdyxtYXQtZm9vdGVyLXJvdyxbbWF0LWhlYWRlci1yb3ddLFttYXQtcm93XSxbbWF0LWZvb3Rlci1yb3ddLC5tYXQtdGFibGUtc3RpY2t5e2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93LHRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbHtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd3tib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b257Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXI6OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLC5tYXQtY2FsZW5kYXItYm9keS1sYWJlbHtjb2xvcjojNjE2MTYxfS5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQsLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDApfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld3tjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjMpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3JlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY2VsbDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3Zlcj4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4zKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaHtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmV7Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJ7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2Fse2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3d7Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbDpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGV7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb24sLm1hdC1leHBhbnNpb24taW5kaWNhdG9yOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGUsLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9ue2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWR7aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybntjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm57YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnQsLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1oaW50e2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7Y29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1pY29uLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCwubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNmNTdjMDB9Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50IC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2FybiAubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9ue2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2UgLm1hdC1zdWJoZWFkZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWxpc3QtaXRlbS1kaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbjpob3ZlciwubWF0LWxpc3Qtb3B0aW9uOmZvY3VzLC5tYXQtbmF2LWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1cywubWF0LWFjdGlvbi1saXN0IC5tYXQtbGlzdC1pdGVtOmhvdmVyLC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb24sLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246aG92ZXIsLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb246Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVse2JhY2tncm91bmQ6I2ZmZn0ubWF0LW1lbnUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdLC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXSAubWF0LW1lbnUtc3VibWVudS1pY29uLC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXSAubWF0LWljb24tbm8tY29sb3J7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvciwubWF0LW1lbnUtc3VibWVudS1pY29ue2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbTpob3Zlcjpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcntiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdCwubWF0LXBhZ2luYXRvci1sYXN0e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWZpcnN0LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJ7bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmRkZWJmfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZGRlYmZ9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmZmU1YmZ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZlNWJmfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmNkMGNkfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmY2QwY2R9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGUsLm1hdC1zcGlubmVyIGNpcmNsZXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGUsLm1hdC1zcGlubmVyLm1hdC1hY2NlbnQgY2lyY2xle3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGUsLm1hdC1zcGlubmVyLm1hdC13YXJuIGNpcmNsZXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudDphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWlubmVyLWNpcmNsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50e2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWx7YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2Vye2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXI6bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3due2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudCAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm4gLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWIsLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtd2FybiAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyOmhvdmVyIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXIuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWQ6aG92ZXIgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWUgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCwubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQsLm1hdC1zdGVwLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWRdKSwubWF0LXN0ZXAtaGVhZGVyOmhvdmVyW2FyaWEtZGlzYWJsZWQ9ZmFsc2Vde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtc3RlcC1oZWFkZXI6aG92ZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjdXJzb3I6ZGVmYXVsdH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXI6aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1sYWJlbCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1vcHRpb25hbHtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb257YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSwubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29ue2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCwubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApO2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZle2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3J7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCwubWF0LXN0ZXBwZXItdmVydGljYWx7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YWZ0ZXIsLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJ7aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcntwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5le3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3d7Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyLC5tYXQtdGFiLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLW5hdi1iYXIsLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXT4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE2NywzOCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIyNCwxNzgsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhciwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE2NywzOCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmV7Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3BhY2l0eTouMTJ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMjQsMTc4LC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3BhY2l0eTouMTJ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZmZmO29wYWNpdHk6LjEyfS5tYXQtdG9vbGJhcntiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnl7YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnR7YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJue2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtdG9vbGJhciAubWF0LXNlbGVjdC12YWx1ZSwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtYXJyb3csLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhciAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93LC5tYXQtdG9vbGJhci1zaW5nbGUtcm93e2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwe2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Lm1hdC10cmVle2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZSwubWF0LW5lc3RlZC10cmVlLW5vZGV7Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9ue2NvbG9yOiNmZjk4MDB9Ym9keXtvdmVyZmxvdzpoaWRkZW59LmNkay1vdmVybGF5LWNvbnRhaW5lcntjb250YWluOnN0cmljdH1hOm5vdCgubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uKXtjb2xvcjojMTk3NmQyfWE6bm90KC5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24pOnZpc2l0ZWR7Y29sb3I6IzdiMWZhMn1ib2R5LmRhcmstbW9kZXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgYTpub3QoLm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbil7Y29sb3I6IzQyYTVmNX1ib2R5LmRhcmstbW9kZSBhOm5vdCgubWF0LWJ1dHRvbiwubWF0LWljb24tYnV0dG9uKTp2aXNpdGVke2NvbG9yOiNiYTY4Yzh9Ym9keS5kYXJrLW1vZGUgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9ue2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1vcHRpb246aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LW9wdGlvbjpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA0KTtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LW9wdGdyb3VwLWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtb3B0Z3JvdXAtZGlzYWJsZWQgLm1hdC1vcHRncm91cC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7Y29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjb2xvcjojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLGJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLGJvZHkuZGFyay1tb2RlIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUsYm9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCxib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtiYWNrZ3JvdW5kOiM2ODY4Njh9Ym9keS5kYXJrLW1vZGUgLm1hdC1hcHAtYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZS5tYXQtYXBwLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejB7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoxe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejJ7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16M3tib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo0e2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo1e2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo2e2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16N3tib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejh7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXo5e2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTB7Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTF7Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTJ7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTN7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTR7Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTV7Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTZ7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejE3e2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoxOHtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MTl7Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejIwe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MjF7Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZWxldmF0aW9uLXoyMntib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1lbGV2YXRpb24tejIze2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWVsZXZhdGlvbi16MjR7Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcntkaXNwbGF5Om5vbmV9Ym9keS5kYXJrLW1vZGUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWw6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWNvbnRlbnR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNlZjZjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSBib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLWNvbnRlbnR7b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfWJvZHkuZGFyay1tb2RlIC5tYXQtYmFkZ2UtYWNjZW50IC5tYXQtYmFkZ2UtY29udGVudHtiYWNrZ3JvdW5kOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJhZGdlLXdhcm4gLm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtYmFkZ2UtZGlzYWJsZWQgLm1hdC1iYWRnZS1jb250ZW50e2JhY2tncm91bmQ6IzZlNmU2ZTtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcntib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b257Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24ubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSxib2R5LmRhcmstbW9kZSAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYntjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXdhcm4sYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LXByaW1hcnksYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybixib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSxib2R5LmRhcmstbW9kZSAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLGJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsYm9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSBbZGlyPXJ0bF0gLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlKy5tYXQtYnV0dG9uLXRvZ2dsZXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxO2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyk7YmFja2dyb3VuZC1jb2xvcjojMDAwfWJvZHkuZGFyay1tb2RlIC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCxib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtib3JkZXI6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHtsaW5lLWhlaWdodDo0OHB4fWJvZHkuZGFyay1tb2RlIC5tYXQtY2FyZHtiYWNrZ3JvdW5kOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNhcmQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhcmQubWF0LWNhcmQtZmxhdDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYXJkLXN1YnRpdGxle2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2ZpbGw6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojMzAzMDMwICFpbXBvcnRhbnR9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeSAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOiM2ODY4Njh9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1kaXNhYmxlZDpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAubWF0LWNoZWNrYm94LWZyYW1le2JvcmRlci1jb2xvcjojNjg2ODY4fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGVja2JveC1jaGVja2VkOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQ6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXB7YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcDpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgLm1hdC1jaGlwLXJlbW92ZTpob3ZlcntvcGFjaXR5Oi41NH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWR7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6OmFmdGVye2JhY2tncm91bmQ6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnl7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5IC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybiAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50IC5tYXQtY2hpcC1yZW1vdmV7Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fWJvZHkuZGFyay1tb2RlIC5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYmxle2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYmxlIHRoZWFkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFibGUgdGJvZHksYm9keS5kYXJrLW1vZGUgLm1hdC10YWJsZSB0Zm9vdCxib2R5LmRhcmstbW9kZSBtYXQtaGVhZGVyLXJvdyxib2R5LmRhcmstbW9kZSBtYXQtcm93LGJvZHkuZGFyay1tb2RlIG1hdC1mb290ZXItcm93LGJvZHkuZGFyay1tb2RlIFttYXQtaGVhZGVyLXJvd10sYm9keS5kYXJrLW1vZGUgW21hdC1yb3ddLGJvZHkuZGFyay1tb2RlIFttYXQtZm9vdGVyLXJvd10sYm9keS5kYXJrLW1vZGUgLm1hdC10YWJsZS1zdGlja3l7YmFja2dyb3VuZDppbmhlcml0fWJvZHkuZGFyay1tb2RlIG1hdC1yb3csYm9keS5kYXJrLW1vZGUgbWF0LWhlYWRlci1yb3csYm9keS5kYXJrLW1vZGUgbWF0LWZvb3Rlci1yb3csYm9keS5kYXJrLW1vZGUgdGgubWF0LWhlYWRlci1jZWxsLGJvZHkuZGFyay1tb2RlIHRkLm1hdC1jZWxsLGJvZHkuZGFyay1tb2RlIHRkLm1hdC1mb290ZXItY2VsbHtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWhlYWRlci1jZWxse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2VsbCxib2R5LmRhcmstbW9kZSAubWF0LWZvb3Rlci1jZWxse2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1hcnJvd3tib3JkZXItdG9wLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudCAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9ue2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcjo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWxhYmVse2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojZmZmO2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLDApfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld3tjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4yNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjM5LDEwOCwwLC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsYm9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyMzksIDEwOCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX1ib2R5LmRhcmstbW9kZSAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZT4ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50Om5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLGJvZHkuZGFyay1tb2RlIC5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDI7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyMzksMTA4LDAsLjIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyMzksIDEwOCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDIzOSwgMTA4LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZDojNDZhMzVlfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC40KX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNlbGw6bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXI+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLGJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gW2Rpcj1ydGxdIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZDojNDZhMzVlfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQ+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jZWxsOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksYm9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSxib2R5LmRhcmstbW9kZSAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2h7Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZle2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudHtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXXtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojNDI0MjQyO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZGl2aWRlci12ZXJ0aWNhbHtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZXhwYW5zaW9uLXBhbmVse2JhY2tncm91bmQ6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZXhwYW5zaW9uLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY3Rpb24tcm93e2JvcmRlci10b3AtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLGJvZHkuZGFyay1tb2RlIC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksYm9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6IzQyNDI0Mn19Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxle2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLGJvZHkuZGFyay1tb2RlIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcjo6YWZ0ZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbntjb2xvcjppbmhlcml0fWJvZHkuZGFyay1tb2RlIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcntoZWlnaHQ6NDhweH1ib2R5LmRhcmstbW9kZSAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVke2hlaWdodDo2NHB4fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWhpbnR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudHtjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcntjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWQ6bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtbGFiZWwgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWVycm9ye2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1oaW50e2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNykgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMDUpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtbGFiZWx7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1wcmltYXJ5e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pY29uLm1hdC1hY2NlbnR7Y29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWljb24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDpkaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1pbnB1dC1lbGVtZW50Om5vdCgubWF0LW5hdGl2ZS1zZWxlY3QtaW5saW5lKSBvcHRpb257Y29sb3I6cmdiYSgwLDAsMCwuODcpfWJvZHkuZGFyay1tb2RlIC5tYXQtaW5wdXQtZWxlbWVudDpub3QoLm1hdC1uYXRpdmUtc2VsZWN0LWlubGluZSkgb3B0aW9uOmRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjM4KX1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LWZvcm0tZmllbGQubWF0LXdhcm4gLm1hdC1pbnB1dC1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtaW5wdXQtZWxlbWVudHtjYXJldC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1pdGVtLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6IzAwMH1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtb3B0aW9uOmhvdmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtbGlzdC1vcHRpb246Zm9jdXMsYm9keS5kYXJrLW1vZGUgLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpob3Zlcixib2R5LmRhcmstbW9kZSAubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3VzLGJvZHkuZGFyay1tb2RlIC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA0KX1ib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbixib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpob3Zlcixib2R5LmRhcmstbW9kZSAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF0sYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtbWVudS1zdWJtZW51LWljb24sYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdIC5tYXQtaWNvbi1uby1jb2xvcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbSAubWF0LWljb24tbm8tY29sb3IsYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtbWVudS1pdGVtOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbZGlzYWJsZWRdKSxib2R5LmRhcmstbW9kZSAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksYm9keS5kYXJrLW1vZGUgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWQ6bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDQpfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9ye2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvcixib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50e2JvcmRlci10b3A6MnB4IHNvbGlkICNmZmY7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCAjZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWZpcnN0LGJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLXRvcDoycHggc29saWQgI2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWZpcnN0LGJvZHkuZGFyay1tb2RlIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcnttaW4taGVpZ2h0OjU2cHh9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5ke2ZpbGw6IzYwM2YyNH1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50IC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiM2MDNmMjR9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiM2MTM1MzJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVye2JhY2tncm91bmQtY29sb3I6IzYxMzUzMn1ib2R5LmRhcmstbW9kZSAubWF0LXByb2dyZXNzLWJhci5tYXQtd2FybiAubWF0LXByb2dyZXNzLWJhci1maWxsOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIgY2lyY2xle3N0cm9rZTojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50IGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGV7c3Ryb2tlOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuIGNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXNwaW5uZXIubWF0LXdhcm4gY2lyY2xle3N0cm9rZTojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudDphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSxib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLGJvZHkuZGFyay1tb2RlIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8taW5uZXItY2lyY2xle2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KX1ib2R5LmRhcmstbW9kZSAubWF0LXJhZGlvLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjUpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXZhbHVle2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zZWxlY3QtcGFuZWx7YmFja2dyb3VuZDojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6IzMwMzAzMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2Vye2JhY2tncm91bmQtY29sb3I6IzQyNDI0Mjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaHtiYWNrZ3JvdW5kLWNvbG9yOiM0MjQyNDJ9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXI6bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuMTIpO2JvcmRlci1yaWdodDpub25lfWJvZHkuZGFyay1tb2RlIFtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9Ym9keS5kYXJrLW1vZGUgW2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3due2JhY2tncm91bmQtY29sb3I6cmdiYSgxODksMTg5LDE4OSwuNil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM5LDEwOCwwLC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10cmFjay1maWxsLGJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdHJhY2stZmlsbCxib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDB9Ym9keS5kYXJrLW1vZGUgLm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzOSwxMDgsMCwuMil9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtd2FybiAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXdhcm4gLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlcjpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1kaXNhYmxlZDpob3ZlciAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLGJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAubWF0LXNsaWRlci10aHVtYixib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWIsYm9keS5kYXJrLW1vZGUgLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3N7YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyksIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWQsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXI6aG92ZXI6bm90KFthcmlhLWRpc2FibGVkXSksYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlcjpob3ZlclthcmlhLWRpc2FibGVkPWZhbHNlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjA0KX1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyOmhvdmVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17Y3Vyc29yOmRlZmF1bHR9QG1lZGlhKGhvdmVyOiBub25lKXtib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtb3B0aW9uYWx7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2VmNmMwMDtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbntjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIubWF0LWFjY2VudCAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC1hY2NlbnQgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdHtiYWNrZ3JvdW5kLWNvbG9yOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29ue2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXAtaGVhZGVyLm1hdC13YXJuIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmUsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlci5tYXQtd2FybiAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3J7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApO2NvbG9yOiNmNDQzMzZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZle2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3J7Y29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCxib2R5LmRhcmstbW9kZSAubWF0LXN0ZXBwZXItdmVydGljYWx7YmFja2dyb3VuZC1jb2xvcjojNDI0MjQyfWJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YWZ0ZXIsYm9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX1ib2R5LmRhcmstbW9kZSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJ7aGVpZ2h0OjcycHh9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcntwYWRkaW5nOjI0cHggMjRweH1ib2R5LmRhcmstbW9kZSAubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmV7dG9wOjM2cHh9Ym9keS5kYXJrLW1vZGUgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5le3RvcDozNnB4fWJvZHkuZGFyay1tb2RlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7Y29sb3I6I2M2YzZjNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMil9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLW5hdi1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmt7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXT4ubWF0LXRhYi1oZWFkZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTEsMTQwLDAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtaW5rLWJhcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC1pbmstYmFyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWluay1iYXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmssYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3tjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZXtib3JkZXItY29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiNmZmY7b3BhY2l0eTouNH1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnk+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeT4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6I2ZmZjtvcGFjaXR5Oi4xMn1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUxLDE0MCwwLC4zKX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3JlLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmO29wYWNpdHk6LjR9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudD4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWhlYWRlciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50Pi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQ+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7b3BhY2l0eTouMTJ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lcixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGluayxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX1ib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC1mb2N1cy1pbmRpY2F0b3I6OmJlZm9yZSxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtZm9jdXMtaW5kaWNhdG9yOjpiZWZvcmUsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlciAubWF0LWZvY3VzLWluZGljYXRvcjo6YmVmb3Jle2JvcmRlci1jb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbixib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6I2ZmZjtvcGFjaXR5Oi40fWJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybj4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXJpcHBsZS1lbGVtZW50LGJvZHkuZGFyay1tb2RlIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gLm1hdC1yaXBwbGUtZWxlbWVudCxib2R5LmRhcmstbW9kZSAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4+Lm1hdC10YWItaGVhZGVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtcmlwcGxlLWVsZW1lbnQsYm9keS5kYXJrLW1vZGUgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjojZmZmO29wYWNpdHk6LjEyfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhcntiYWNrZ3JvdW5kOiNlZjZjMDA7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIubWF0LXByaW1hcnl7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC1hY2NlbnR7YmFja2dyb3VuZDojZWY2YzAwO2NvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLm1hdC13YXJue2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQtcmlwcGxlLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LXNlbGVjdC12YWx1ZSxib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtYXJyb3csYm9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjppbmhlcml0fWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhciAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfWJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze21pbi1oZWlnaHQ6NjRweH1ib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXItcm93LGJvZHkuZGFyay1tb2RlIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93e2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXtib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjU2cHh9Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sYmFyLXJvdyxib2R5LmRhcmstbW9kZSAubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NTZweH19Ym9keS5kYXJrLW1vZGUgLm1hdC10b29sdGlwe2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Ym9keS5kYXJrLW1vZGUgLm1hdC10cmVle2JhY2tncm91bmQ6IzQyNDI0Mn1ib2R5LmRhcmstbW9kZSAubWF0LXRyZWUtbm9kZSxib2R5LmRhcmstbW9kZSAubWF0LW5lc3RlZC10cmVlLW5vZGV7Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZSAubWF0LXRyZWUtbm9kZXttaW4taGVpZ2h0OjQ4cHh9Ym9keS5kYXJrLW1vZGUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2NvbG9yOnJnYmEoMCwwLDAsLjg3KTtiYWNrZ3JvdW5kOiNmYWZhZmE7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfWJvZHkuZGFyay1tb2RlIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjppbmhlcml0fQo8L3N0eWxlPgoKPHN0eWxlPgogIGh0bWwsCiAgYm9keSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpOwoKICAgIC8qIExlZ2FjeSBtZWNoYW5pc20gdG8gYXZvaWQgaXNzdWVzIHdpdGggc3VicGl4ZWwgYW50aS1hbGlhc2luZyBvbiBtYWNPUy4KICAgICAqCiAgICAgKiBJbiB0aGUgcGFzdCBbMV0sIG1hY09TIHN1YnBpeGVsIEFBIGNhdXNlZCBleGNlc3NpdmUgYm9sZGluZyBmb3IgbGlnaHQtb24tZGFyayB0ZXh0OyB0aGlzIHJ1bGUKICAgICAqIGF2b2lkcyB0aGF0IGJ5IHJlcXVlc3Rpbmcgbm9uLXN1YnBpeGVsIEFBIGFsd2F5cywgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgYmVoYXZpb3IsIHdoaWNoIGlzCiAgICAgKiB0byB1c2Ugc3VicGl4ZWwgQUEgd2hlbiBhdmFpbGFibGUuIFRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMgImZpeGVkIiBieSByZW1vdmluZyBzdWJwaXhlbCBBQSBpbgogICAgICogbWFjT1MgMTQgKE1vamF2ZSksIGJ1dCBmb3IgbGVnYWN5IHJlYXNvbnMgdGhleSBwcmVzZXJ2ZWQgdGhlIGJvbGRpbmcgZWZmZWN0IGFzIGFuIG9wdGlvbi4KICAgICAqIENocm9tZSB0aGVuIGluIHR1cm4gdXBkYXRlZCBpdHMgZm9udCByZW5kZXJpbmcgdG8gYXBwbHkgdGhhdCBib2xkaW5nIGVmZmVjdCBbMl0sIHdoaWNoIG1lYW5zCiAgICAgKiB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgZG9jcyBbM10gc3VnZ2VzdCB0aGF0IHNldHRpbmcgYGFudGlhbGlhc2VkYAogICAgICogd291bGQgaGF2ZSBubyBlZmZlY3QgZm9yIHJlY2VudCB2ZXJzaW9ucyBvZiBtYWNPUywgaXQgc3RpbGwgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBib2xkaW5nLgogICAgICoKICAgICAqIFsxXTogaHR0cDovL3d3dy5saWdodGVycmEuY29tL2FydGljbGVzL21hY29zeHRleHRhYWJ1Zy8KICAgICAqIFsyXTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODU4ODYxCiAgICAgKiBbM106IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mb250LXNtb290aAogICAgICoKICAgICAqLwoKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIH0KICBub3NjcmlwdCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgfQo8L3N0eWxlPgoKPC9oZWFkPjxib2R5Pjxub3NjcmlwdD4KICAgIDxoMT5UZW5zb3JCb2FyZCByZXF1aXJlcyBKYXZhU2NyaXB0PC9oMT4KICAgIDxwPlBsZWFzZSBlbmFibGUgSmF2YVNjcmlwdCBhbmQgcmVsb2FkIHRoaXMgcGFnZS48L3A+CiAgPC9ub3NjcmlwdD48dGItd2ViYXBwPjwvdGItd2ViYXBwPjxzY3JpcHQgc3JjPSJpbmRleC5qcz9fZmlsZV9oYXNoPThiNjM1OGM3Ij48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==", + "headers": [ + [ + "content-type", + "text/html; charset=utf-8" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/chart_worker.js?_file_hash=9ae5037d": { + "data": "KCgpPT57dmFyIHNmPU1hdGgucG93O3ZhciBvZj0obix0LGUpPT5uZXcgUHJvbWlzZSgoaSxyKT0+e3ZhciBzPWw9Pnt0cnl7YShlLm5leHQobCkpfWNhdGNoKGMpe3IoYyl9fSxvPWw9Pnt0cnl7YShlLnRocm93KGwpKX1jYXRjaChjKXtyKGMpfX0sYT1sPT5sLmRvbmU/aShsLnZhbHVlKTpQcm9taXNlLnJlc29sdmUobC52YWx1ZSkudGhlbihzLG8pO2EoKGU9ZS5hcHBseShuLHQpKS5uZXh0KCkpfSk7dmFyIG9uOyhmdW5jdGlvbihuKXtuW24uTElORUFSPTBdPSJMSU5FQVIiLG5bbi5MT0cxMD0xXT0iTE9HMTAiLG5bbi5USU1FPTJdPSJUSU1FIn0pKG9ufHwob249e30pKTtmdW5jdGlvbiBhbihuLHQpe3JldHVybiBuPHQ/LTE6bj50PzE6bj49dD8wOk5hTn1mdW5jdGlvbiBucyhuKXtyZXR1cm4gbi5sZW5ndGg9PT0xJiYobj1PMChuKSkse2xlZnQ6ZnVuY3Rpb24odCxlLGkscil7Zm9yKGk9PW51bGwmJihpPTApLHI9PW51bGwmJihyPXQubGVuZ3RoKTtpPHI7KXt2YXIgcz1pK3I+Pj4xO24odFtzXSxlKTwwP2k9cysxOnI9c31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24odCxlLGkscil7Zm9yKGk9PW51bGwmJihpPTApLHI9PW51bGwmJihyPXQubGVuZ3RoKTtpPHI7KXt2YXIgcz1pK3I+Pj4xO24odFtzXSxlKT4wP3I9czppPXMrMX1yZXR1cm4gaX19fWZ1bmN0aW9uIE8wKG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiBhbihuKHQpLGUpfX12YXIgYWY9bnMoYW4pLGxmPWFmLnJpZ2h0LGswPWFmLmxlZnQsQm49bGY7dmFyIGNmPUFycmF5LnByb3RvdHlwZSxWMD1jZi5zbGljZSxHMD1jZi5tYXA7dmFyIE9sPU1hdGguc3FydCg1MCksa2w9TWF0aC5zcXJ0KDEwKSxIbD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gaXMobix0LGUpe3ZhciBpLHI9LTEscyxvLGE7aWYodD0rdCxuPStuLGU9K2Usbj09PXQmJmU+MClyZXR1cm5bbl07aWYoKGk9dDxuKSYmKHM9bixuPXQsdD1zKSwoYT1aaShuLHQsZSkpPT09MHx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3Iobj1NYXRoLmNlaWwobi9hKSx0PU1hdGguZmxvb3IodC9hKSxvPW5ldyBBcnJheShzPU1hdGguY2VpbCh0LW4rMSkpOysrcjxzOylvW3JdPShuK3IpKmE7ZWxzZSBmb3Iobj1NYXRoLmZsb29yKG4qYSksdD1NYXRoLmNlaWwodCphKSxvPW5ldyBBcnJheShzPU1hdGguY2VpbChuLXQrMSkpOysrcjxzOylvW3JdPShuLXIpL2E7cmV0dXJuIGkmJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24gWmkobix0LGUpe3ZhciBpPSh0LW4pL01hdGgubWF4KDAsZSkscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkscz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhzPj1PbD8xMDpzPj1rbD81OnM+PUhsPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8ocz49T2w/MTA6cz49a2w/NTpzPj1IbD8yOjEpfWZ1bmN0aW9uIF9uKG4sdCxlKXt2YXIgaT1NYXRoLmFicyh0LW4pL01hdGgubWF4KDAsZSkscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLHM9aS9yO3JldHVybiBzPj1PbD9yKj0xMDpzPj1rbD9yKj01OnM+PUhsJiYocio9MiksdDxuPy1yOnJ9dmFyIFowPUFycmF5LnByb3RvdHlwZS5zbGljZTt2YXIgSjA9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gZGYoKXtmb3IodmFyIG49MCx0PWFyZ3VtZW50cy5sZW5ndGgsZT17fSxpO248dDsrK24pe2lmKCEoaT1hcmd1bWVudHNbbl0rIiIpfHxpIGluIGV8fC9bXHMuXS8udGVzdChpKSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIitpKTtlW2ldPVtdfXJldHVybiBuZXcgTm8oZSl9ZnVuY3Rpb24gTm8obil7dGhpcy5fPW59ZnVuY3Rpb24gJDAobix0KXtyZXR1cm4gbi50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKGUpe3ZhciBpPSIiLHI9ZS5pbmRleE9mKCIuIik7aWYocj49MCYmKGk9ZS5zbGljZShyKzEpLGU9ZS5zbGljZSgwLHIpKSxlJiYhdC5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIitlKTtyZXR1cm57dHlwZTplLG5hbWU6aX19KX1Oby5wcm90b3R5cGU9ZGYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpObyxvbjpmdW5jdGlvbihuLHQpe3ZhciBlPXRoaXMuXyxpPSQwKG4rIiIsZSkscixzPS0xLG89aS5sZW5ndGg7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IoOysrczxvOylpZigocj0obj1pW3NdKS50eXBlKSYmKHI9SzAoZVtyXSxuLm5hbWUpKSlyZXR1cm4gcjtyZXR1cm59aWYodCE9bnVsbCYmdHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK3QpO2Zvcig7KytzPG87KWlmKHI9KG49aVtzXSkudHlwZSllW3JdPWZmKGVbcl0sbi5uYW1lLHQpO2Vsc2UgaWYodD09bnVsbClmb3IociBpbiBlKWVbcl09ZmYoZVtyXSxuLm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgbj17fSx0PXRoaXMuXztmb3IodmFyIGUgaW4gdCluW2VdPXRbZV0uc2xpY2UoKTtyZXR1cm4gbmV3IE5vKG4pfSxjYWxsOmZ1bmN0aW9uKG4sdCl7aWYoKHI9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgZT1uZXcgQXJyYXkociksaT0wLHIscztpPHI7KytpKWVbaV09YXJndW1lbnRzW2krMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShuKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIituKTtmb3Iocz10aGlzLl9bbl0saT0wLHI9cy5sZW5ndGg7aTxyOysraSlzW2ldLnZhbHVlLmFwcGx5KHQsZSl9LGFwcGx5OmZ1bmN0aW9uKG4sdCxlKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KG4pKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK24pO2Zvcih2YXIgaT10aGlzLl9bbl0scj0wLHM9aS5sZW5ndGg7cjxzOysrcilpW3JdLnZhbHVlLmFwcGx5KHQsZSl9fTtmdW5jdGlvbiBLMChuLHQpe2Zvcih2YXIgZT0wLGk9bi5sZW5ndGgscjtlPGk7KytlKWlmKChyPW5bZV0pLm5hbWU9PT10KXJldHVybiByLnZhbHVlfWZ1bmN0aW9uIGZmKG4sdCxlKXtmb3IodmFyIGk9MCxyPW4ubGVuZ3RoO2k8cjsrK2kpaWYobltpXS5uYW1lPT09dCl7bltpXT1KMCxuPW4uc2xpY2UoMCxpKS5jb25jYXQobi5zbGljZShpKzEpKTticmVha31yZXR1cm4gZSE9bnVsbCYmbi5wdXNoKHtuYW1lOnQsdmFsdWU6ZX0pLG59dmFyIEdsPWRmO3ZhciBGbz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsV2w9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOkZvLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gd24obil7dmFyIHQ9bis9IiIsZT10LmluZGV4T2YoIjoiKTtyZXR1cm4gZT49MCYmKHQ9bi5zbGljZSgwLGUpKSE9PSJ4bWxucyImJihuPW4uc2xpY2UoZSsxKSksV2wuaGFzT3duUHJvcGVydHkodCk/e3NwYWNlOldsW3RdLGxvY2FsOm59Om59ZnVuY3Rpb24gUTAobil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vd25lckRvY3VtZW50LGU9dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIGU9PT1GbyYmdC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09Rm8/dC5jcmVhdGVFbGVtZW50KG4pOnQuY3JlYXRlRWxlbWVudE5TKGUsbil9fWZ1bmN0aW9uIGowKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG4uc3BhY2Usbi5sb2NhbCl9fWZ1bmN0aW9uIHpvKG4pe3ZhciB0PXduKG4pO3JldHVybih0LmxvY2FsP2owOlEwKSh0KX1mdW5jdGlvbiB0eCgpe31mdW5jdGlvbiBkaShuKXtyZXR1cm4gbj09bnVsbD90eDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3Iobil9fWZ1bmN0aW9uIHBmKG4pe3R5cGVvZiBuIT0iZnVuY3Rpb24iJiYobj1kaShuKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPXQubGVuZ3RoLGk9bmV3IEFycmF5KGUpLHI9MDtyPGU7KytyKWZvcih2YXIgcz10W3JdLG89cy5sZW5ndGgsYT1pW3JdPW5ldyBBcnJheShvKSxsLGMsdT0wO3U8bzsrK3UpKGw9c1t1XSkmJihjPW4uY2FsbChsLGwuX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbCYmKGMuX19kYXRhX189bC5fX2RhdGFfXyksYVt1XT1jKTtyZXR1cm4gbmV3IGNlKGksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gZXgoKXtyZXR1cm5bXX1mdW5jdGlvbiBzcyhuKXtyZXR1cm4gbj09bnVsbD9leDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwobil9fWZ1bmN0aW9uIG1mKG4pe3R5cGVvZiBuIT0iZnVuY3Rpb24iJiYobj1zcyhuKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPXQubGVuZ3RoLGk9W10scj1bXSxzPTA7czxlOysrcylmb3IodmFyIG89dFtzXSxhPW8ubGVuZ3RoLGwsYz0wO2M8YTsrK2MpKGw9b1tjXSkmJihpLnB1c2gobi5jYWxsKGwsbC5fX2RhdGFfXyxjLG8pKSxyLnB1c2gobCkpO3JldHVybiBuZXcgY2UoaSxyKX1mdW5jdGlvbiBvcyhuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKG4pfX1mdW5jdGlvbiBnZihuKXt0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmKG49b3MobikpO2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT10Lmxlbmd0aCxpPW5ldyBBcnJheShlKSxyPTA7cjxlOysrcilmb3IodmFyIHM9dFtyXSxvPXMubGVuZ3RoLGE9aVtyXT1bXSxsLGM9MDtjPG87KytjKShsPXNbY10pJiZuLmNhbGwobCxsLl9fZGF0YV9fLGMscykmJmEucHVzaChsKTtyZXR1cm4gbmV3IGNlKGksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gVW8obil7cmV0dXJuIG5ldyBBcnJheShuLmxlbmd0aCl9ZnVuY3Rpb24geGYoKXtyZXR1cm4gbmV3IGNlKHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKFVvKSx0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiBhcyhuLHQpe3RoaXMub3duZXJEb2N1bWVudD1uLm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9bi5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD1uLHRoaXMuX19kYXRhX189dH1hcy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmFzLGFwcGVuZENoaWxkOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKG4sdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihuLHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKG4sdCl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKG4pfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbChuKX19O2Z1bmN0aW9uIHlmKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX12YXIgdmY9IiQiO2Z1bmN0aW9uIG54KG4sdCxlLGkscixzKXtmb3IodmFyIG89MCxhLGw9dC5sZW5ndGgsYz1zLmxlbmd0aDtvPGM7KytvKShhPXRbb10pPyhhLl9fZGF0YV9fPXNbb10saVtvXT1hKTplW29dPW5ldyBhcyhuLHNbb10pO2Zvcig7bzxsOysrbykoYT10W29dKSYmKHJbb109YSl9ZnVuY3Rpb24gaXgobix0LGUsaSxyLHMsbyl7dmFyIGEsbCxjPXt9LHU9dC5sZW5ndGgsaD1zLmxlbmd0aCxmPW5ldyBBcnJheSh1KSxkO2ZvcihhPTA7YTx1OysrYSkobD10W2FdKSYmKGZbYV09ZD12ZitvLmNhbGwobCxsLl9fZGF0YV9fLGEsdCksZCBpbiBjP3JbYV09bDpjW2RdPWwpO2ZvcihhPTA7YTxoOysrYSlkPXZmK28uY2FsbChuLHNbYV0sYSxzKSwobD1jW2RdKT8oaVthXT1sLGwuX19kYXRhX189c1thXSxjW2RdPW51bGwpOmVbYV09bmV3IGFzKG4sc1thXSk7Zm9yKGE9MDthPHU7KythKShsPXRbYV0pJiZjW2ZbYV1dPT09bCYmKHJbYV09bCl9ZnVuY3Rpb24gX2Yobix0KXtpZighbilyZXR1cm4gZD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGM9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKEwpe2RbKytjXT1MfSksZDt2YXIgZT10P2l4Om54LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3Vwczt0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmKG49eWYobikpO2Zvcih2YXIgcz1yLmxlbmd0aCxvPW5ldyBBcnJheShzKSxhPW5ldyBBcnJheShzKSxsPW5ldyBBcnJheShzKSxjPTA7YzxzOysrYyl7dmFyIHU9aVtjXSxoPXJbY10sZj1oLmxlbmd0aCxkPW4uY2FsbCh1LHUmJnUuX19kYXRhX18sYyxpKSxnPWQubGVuZ3RoLHg9YVtjXT1uZXcgQXJyYXkoZyksdj1vW2NdPW5ldyBBcnJheShnKSxtPWxbY109bmV3IEFycmF5KGYpO2UodSxoLHgsdixtLGQsdCk7Zm9yKHZhciBwPTAsYj0wLF8sUztwPGc7KytwKWlmKF89eFtwXSl7Zm9yKHA+PWImJihiPXArMSk7IShTPXZbYl0pJiYrK2I8ZzspO18uX25leHQ9U3x8bnVsbH19cmV0dXJuIG89bmV3IGNlKG8saSksby5fZW50ZXI9YSxvLl9leGl0PWwsb31mdW5jdGlvbiB3Zigpe3JldHVybiBuZXcgY2UodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChVbyksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gTWYobix0LGUpe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMscz10aGlzLmV4aXQoKTtyZXR1cm4gaT10eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKGkpOmkuYXBwZW5kKG4rIiIpLHQhPW51bGwmJihyPXQocikpLGU9PW51bGw/cy5yZW1vdmUoKTplKHMpLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9ZnVuY3Rpb24gYmYobil7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPW4uX2dyb3VwcyxpPXQubGVuZ3RoLHI9ZS5sZW5ndGgscz1NYXRoLm1pbihpLHIpLG89bmV3IEFycmF5KGkpLGE9MDthPHM7KythKWZvcih2YXIgbD10W2FdLGM9ZVthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZixkPTA7ZDx1OysrZCkoZj1sW2RdfHxjW2RdKSYmKGhbZF09Zik7Zm9yKDthPGk7KythKW9bYV09dFthXTtyZXR1cm4gbmV3IGNlKG8sdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gU2YoKXtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLHQ9LTEsZT1uLmxlbmd0aDsrK3Q8ZTspZm9yKHZhciBpPW5bdF0scj1pLmxlbmd0aC0xLHM9aVtyXSxvOy0tcj49MDspKG89aVtyXSkmJihzJiZvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHMpXjQmJnMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobyxzKSxzPW8pO3JldHVybiB0aGlzfWZ1bmN0aW9uIEVmKG4pe258fChuPXJ4KTtmdW5jdGlvbiB0KGgsZil7cmV0dXJuIGgmJmY/bihoLl9fZGF0YV9fLGYuX19kYXRhX18pOiFoLSFmfWZvcih2YXIgZT10aGlzLl9ncm91cHMsaT1lLmxlbmd0aCxyPW5ldyBBcnJheShpKSxzPTA7czxpOysrcyl7Zm9yKHZhciBvPWVbc10sYT1vLmxlbmd0aCxsPXJbc109bmV3IEFycmF5KGEpLGMsdT0wO3U8YTsrK3UpKGM9b1t1XSkmJihsW3VdPWMpO2wuc29ydCh0KX1yZXR1cm4gbmV3IGNlKHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX1mdW5jdGlvbiByeChuLHQpe3JldHVybiBuPHQ/LTE6bj50PzE6bj49dD8wOk5hTn1mdW5jdGlvbiBUZigpe3ZhciBuPWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsbi5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc31mdW5jdGlvbiBBZigpe3ZhciBuPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdD0tMTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7blsrK3RdPXRoaXN9KSxufWZ1bmN0aW9uIENmKCl7Zm9yKHZhciBuPXRoaXMuX2dyb3Vwcyx0PTAsZT1uLmxlbmd0aDt0PGU7Kyt0KWZvcih2YXIgaT1uW3RdLHI9MCxzPWkubGVuZ3RoO3I8czsrK3Ipe3ZhciBvPWlbcl07aWYobylyZXR1cm4gb31yZXR1cm4gbnVsbH1mdW5jdGlvbiBSZigpe3ZhciBuPTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeysrbn0pLG59ZnVuY3Rpb24gTGYoKXtyZXR1cm4hdGhpcy5ub2RlKCl9ZnVuY3Rpb24gUGYobil7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsaT10Lmxlbmd0aDtlPGk7KytlKWZvcih2YXIgcj10W2VdLHM9MCxvPXIubGVuZ3RoLGE7czxvOysrcykoYT1yW3NdKSYmbi5jYWxsKGEsYS5fX2RhdGFfXyxzLHIpO3JldHVybiB0aGlzfWZ1bmN0aW9uIHN4KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pfX1mdW5jdGlvbiBveChuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9fWZ1bmN0aW9uIGF4KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUobix0KX19ZnVuY3Rpb24gbHgobix0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCx0KX19ZnVuY3Rpb24gY3gobix0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtlPT1udWxsP3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pOnRoaXMuc2V0QXR0cmlidXRlKG4sZSl9fWZ1bmN0aW9uIHV4KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZT09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwsZSl9fWZ1bmN0aW9uIERmKG4sdCl7dmFyIGU9d24obik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gZS5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUoZSl9cmV0dXJuIHRoaXMuZWFjaCgodD09bnVsbD9lLmxvY2FsP294OnN4OnR5cGVvZiB0PT0iZnVuY3Rpb24iP2UubG9jYWw/dXg6Y3g6ZS5sb2NhbD9seDpheCkoZSx0KSl9ZnVuY3Rpb24gQm8obil7cmV0dXJuIG4ub3duZXJEb2N1bWVudCYmbi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHxuLmRvY3VtZW50JiZufHxuLmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGh4KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9fWZ1bmN0aW9uIGZ4KG4sdCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4sdCxlKX19ZnVuY3Rpb24gZHgobix0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2k9PW51bGw/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4saSxlKX19ZnVuY3Rpb24gSWYobix0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKCh0PT1udWxsP2h4OnR5cGVvZiB0PT0iZnVuY3Rpb24iP2R4OmZ4KShuLHQsZT09bnVsbD8iIjplKSk6T24odGhpcy5ub2RlKCksbil9ZnVuY3Rpb24gT24obix0KXtyZXR1cm4gbi5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxCbyhuKS5nZXRDb21wdXRlZFN0eWxlKG4sbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX1mdW5jdGlvbiBweChuKXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tuXX19ZnVuY3Rpb24gbXgobix0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW25dPXR9fWZ1bmN0aW9uIGd4KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZT09bnVsbD9kZWxldGUgdGhpc1tuXTp0aGlzW25dPWV9fWZ1bmN0aW9uIE5mKG4sdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKHQ9PW51bGw/cHg6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/Z3g6bXgpKG4sdCkpOnRoaXMubm9kZSgpW25dfWZ1bmN0aW9uIEZmKG4pe3JldHVybiBuLnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBxbChuKXtyZXR1cm4gbi5jbGFzc0xpc3R8fG5ldyB6ZihuKX1mdW5jdGlvbiB6ZihuKXt0aGlzLl9ub2RlPW4sdGhpcy5fbmFtZXM9RmYobi5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX16Zi5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihuKXt2YXIgdD10aGlzLl9uYW1lcy5pbmRleE9mKG4pO3Q8MCYmKHRoaXMuX25hbWVzLnB1c2gobiksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuX25hbWVzLmluZGV4T2Yobik7dD49MCYmKHRoaXMuX25hbWVzLnNwbGljZSh0LDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKG4pPj0wfX07ZnVuY3Rpb24gVWYobix0KXtmb3IodmFyIGU9cWwobiksaT0tMSxyPXQubGVuZ3RoOysraTxyOyllLmFkZCh0W2ldKX1mdW5jdGlvbiBCZihuLHQpe2Zvcih2YXIgZT1xbChuKSxpPS0xLHI9dC5sZW5ndGg7KytpPHI7KWUucmVtb3ZlKHRbaV0pfWZ1bmN0aW9uIHh4KG4pe3JldHVybiBmdW5jdGlvbigpe1VmKHRoaXMsbil9fWZ1bmN0aW9uIHl4KG4pe3JldHVybiBmdW5jdGlvbigpe0JmKHRoaXMsbil9fWZ1bmN0aW9uIHZ4KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpP1VmOkJmKSh0aGlzLG4pfX1mdW5jdGlvbiBPZihuLHQpe3ZhciBlPUZmKG4rIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPXFsKHRoaXMubm9kZSgpKSxyPS0xLHM9ZS5sZW5ndGg7KytyPHM7KWlmKCFpLmNvbnRhaW5zKGVbcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKHR5cGVvZiB0PT0iZnVuY3Rpb24iP3Z4OnQ/eHg6eXgpKGUsdCkpfWZ1bmN0aW9uIF94KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiB3eChuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PW59fWZ1bmN0aW9uIE14KG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiBrZihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobj09bnVsbD9feDoodHlwZW9mIG49PSJmdW5jdGlvbiI/TXg6d3gpKG4pKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH1mdW5jdGlvbiBieCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIFN4KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPW59fWZ1bmN0aW9uIEV4KG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPXQ9PW51bGw/IiI6dH19ZnVuY3Rpb24gSGYobil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG49PW51bGw/Yng6KHR5cGVvZiBuPT0iZnVuY3Rpb24iP0V4OlN4KShuKSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfWZ1bmN0aW9uIFR4KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIFZmKCl7cmV0dXJuIHRoaXMuZWFjaChUeCl9ZnVuY3Rpb24gQXgoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBHZigpe3JldHVybiB0aGlzLmVhY2goQXgpfWZ1bmN0aW9uIFdmKG4pe3ZhciB0PXR5cGVvZiBuPT0iZnVuY3Rpb24iP246em8obik7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQodC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9ZnVuY3Rpb24gQ3goKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBxZihuLHQpe3ZhciBlPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246em8obiksaT10PT1udWxsP0N4OnR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6ZGkodCk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfWZ1bmN0aW9uIFJ4KCl7dmFyIG49dGhpcy5wYXJlbnROb2RlO24mJm4ucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gWGYoKXtyZXR1cm4gdGhpcy5lYWNoKFJ4KX1mdW5jdGlvbiBMeCgpe3ZhciBuPXRoaXMuY2xvbmVOb2RlKCExKSx0PXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gdD90Lmluc2VydEJlZm9yZShuLHRoaXMubmV4dFNpYmxpbmcpOm59ZnVuY3Rpb24gUHgoKXt2YXIgbj10aGlzLmNsb25lTm9kZSghMCksdD10aGlzLnBhcmVudE5vZGU7cmV0dXJuIHQ/dC5pbnNlcnRCZWZvcmUobix0aGlzLm5leHRTaWJsaW5nKTpufWZ1bmN0aW9uIFlmKG4pe3JldHVybiB0aGlzLnNlbGVjdChuP1B4Okx4KX1mdW5jdGlvbiBaZihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsbik6dGhpcy5ub2RlKCkuX19kYXRhX199dmFyICRmPXt9LFhsPW51bGw7dHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIiYmKEpmPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwib25tb3VzZWVudGVyImluIEpmfHwoJGY9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpO3ZhciBKZjtmdW5jdGlvbiBEeChuLHQsZSl7cmV0dXJuIG49S2Yobix0LGUpLGZ1bmN0aW9uKGkpe3ZhciByPWkucmVsYXRlZFRhcmdldDsoIXJ8fHIhPT10aGlzJiYhKHIuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykmOCkpJiZuLmNhbGwodGhpcyxpKX19ZnVuY3Rpb24gS2Yobix0LGUpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1YbDtYbD1pO3RyeXtuLmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLHQsZSl9ZmluYWxseXtYbD1yfX19ZnVuY3Rpb24gSXgobil7cmV0dXJuIG4udHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbih0KXt2YXIgZT0iIixpPXQuaW5kZXhPZigiLiIpO3JldHVybiBpPj0wJiYoZT10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHt0eXBlOnQsbmFtZTplfX0pfWZ1bmN0aW9uIE54KG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX19vbjtpZighIXQpe2Zvcih2YXIgZT0wLGk9LTEscj10Lmxlbmd0aCxzO2U8cjsrK2Upcz10W2VdLCghbi50eXBlfHxzLnR5cGU9PT1uLnR5cGUpJiZzLm5hbWU9PT1uLm5hbWU/dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSk6dFsrK2ldPXM7KytpP3QubGVuZ3RoPWk6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIEZ4KG4sdCxlKXt2YXIgaT0kZi5oYXNPd25Qcm9wZXJ0eShuLnR5cGUpP0R4OktmO3JldHVybiBmdW5jdGlvbihyLHMsbyl7dmFyIGE9dGhpcy5fX29uLGwsYz1pKHQscyxvKTtpZihhKXtmb3IodmFyIHU9MCxoPWEubGVuZ3RoO3U8aDsrK3UpaWYoKGw9YVt1XSkudHlwZT09PW4udHlwZSYmbC5uYW1lPT09bi5uYW1lKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobC50eXBlLGwubGlzdGVuZXIsbC5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobC50eXBlLGwubGlzdGVuZXI9YyxsLmNhcHR1cmU9ZSksbC52YWx1ZT10O3JldHVybn19dGhpcy5hZGRFdmVudExpc3RlbmVyKG4udHlwZSxjLGUpLGw9e3R5cGU6bi50eXBlLG5hbWU6bi5uYW1lLHZhbHVlOnQsbGlzdGVuZXI6YyxjYXB0dXJlOmV9LGE/YS5wdXNoKGwpOnRoaXMuX19vbj1bbF19fWZ1bmN0aW9uIFFmKG4sdCxlKXt2YXIgaT1JeChuKyIiKSxyLHM9aS5sZW5ndGgsbztpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBhPXRoaXMubm9kZSgpLl9fb247aWYoYSl7Zm9yKHZhciBsPTAsYz1hLmxlbmd0aCx1O2w8YzsrK2wpZm9yKHI9MCx1PWFbbF07cjxzOysrcilpZigobz1pW3JdKS50eXBlPT09dS50eXBlJiZvLm5hbWU9PT11Lm5hbWUpcmV0dXJuIHUudmFsdWV9cmV0dXJufWZvcihhPXQ/Rng6TngsZT09bnVsbCYmKGU9ITEpLHI9MDtyPHM7KytyKXRoaXMuZWFjaChhKGlbcl0sdCxlKSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gamYobix0LGUpe3ZhciBpPUJvKG4pLHI9aS5DdXN0b21FdmVudDt0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yPW5ldyByKHQsZSk6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxlPyhyLmluaXRFdmVudCh0LGUuYnViYmxlcyxlLmNhbmNlbGFibGUpLHIuZGV0YWlsPWUuZGV0YWlsKTpyLmluaXRFdmVudCh0LCExLCExKSksbi5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIHp4KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGpmKHRoaXMsbix0KX19ZnVuY3Rpb24gVXgobix0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gamYodGhpcyxuLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19ZnVuY3Rpb24gdGQobix0KXtyZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9VeDp6eCkobix0KSl9dmFyIEJ4PVtudWxsXTtmdW5jdGlvbiBjZShuLHQpe3RoaXMuX2dyb3Vwcz1uLHRoaXMuX3BhcmVudHM9dH1mdW5jdGlvbiBlZCgpe3JldHVybiBuZXcgY2UoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxCeCl9Y2UucHJvdG90eXBlPWVkLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Y2Usc2VsZWN0OnBmLHNlbGVjdEFsbDptZixmaWx0ZXI6Z2YsZGF0YTpfZixlbnRlcjp4ZixleGl0OndmLGpvaW46TWYsbWVyZ2U6YmYsb3JkZXI6U2Ysc29ydDpFZixjYWxsOlRmLG5vZGVzOkFmLG5vZGU6Q2Ysc2l6ZTpSZixlbXB0eTpMZixlYWNoOlBmLGF0dHI6RGYsc3R5bGU6SWYscHJvcGVydHk6TmYsY2xhc3NlZDpPZix0ZXh0OmtmLGh0bWw6SGYscmFpc2U6VmYsbG93ZXI6R2YsYXBwZW5kOldmLGluc2VydDpxZixyZW1vdmU6WGYsY2xvbmU6WWYsZGF0dW06WmYsb246UWYsZGlzcGF0Y2g6dGR9O3ZhciBNbj1lZDtmdW5jdGlvbiBPbyhuLHQsZSl7bi5wcm90b3R5cGU9dC5wcm90b3R5cGU9ZSxlLmNvbnN0cnVjdG9yPW59ZnVuY3Rpb24gWWwobix0KXt2YXIgZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gdCllW2ldPXRbaV07cmV0dXJuIGV9ZnVuY3Rpb24gdXMoKXt9dmFyIGxzPS43LEhvPTEvbHMsSmk9IlxccyooWystXT9cXGQrKVxccyoiLGNzPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLGNuPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixPeD0vXiMoWzAtOWEtZl17Myw4fSkkLyxreD1uZXcgUmVnRXhwKCJecmdiXFwoIitbSmksSmksSmldKyJcXCkkIiksSHg9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2NuLGNuLGNuXSsiXFwpJCIpLFZ4PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbSmksSmksSmksY3NdKyJcXCkkIiksR3g9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tjbixjbixjbixjc10rIlxcKSQiKSxXeD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbY3MsY24sY25dKyJcXCkkIikscXg9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tjcyxjbixjbixjc10rIlxcKSQiKSxuZD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtPbyh1cyxKZSx7Y29weTpmdW5jdGlvbihuKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLG4pfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDppZCxmb3JtYXRIZXg6aWQsZm9ybWF0SHNsOlh4LGZvcm1hdFJnYjpyZCx0b1N0cmluZzpyZH0pO2Z1bmN0aW9uIGlkKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gWHgoKXtyZXR1cm4gY2QodGhpcykuZm9ybWF0SHNsKCl9ZnVuY3Rpb24gcmQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBKZShuKXt2YXIgdCxlO3JldHVybiBuPShuKyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwodD1PeC5leGVjKG4pKT8oZT10WzFdLmxlbmd0aCx0PXBhcnNlSW50KHRbMV0sMTYpLGU9PT02P3NkKHQpOmU9PT0zP25ldyBVZSh0Pj44JjE1fHQ+PjQmMjQwLHQ+PjQmMTV8dCYyNDAsKHQmMTUpPDw0fHQmMTUsMSk6ZT09PTg/a28odD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwodCYyNTUpLzI1NSk6ZT09PTQ/a28odD4+MTImMTV8dD4+OCYyNDAsdD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCgodCYxNSk8PDR8dCYxNSkvMjU1KTpudWxsKToodD1reC5leGVjKG4pKT9uZXcgVWUodFsxXSx0WzJdLHRbM10sMSk6KHQ9SHguZXhlYyhuKSk/bmV3IFVlKHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLDEpOih0PVZ4LmV4ZWMobikpP2tvKHRbMV0sdFsyXSx0WzNdLHRbNF0pOih0PUd4LmV4ZWMobikpP2tvKHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLHRbNF0pOih0PVd4LmV4ZWMobikpP2xkKHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsMSk6KHQ9cXguZXhlYyhuKSk/bGQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCx0WzRdKTpuZC5oYXNPd25Qcm9wZXJ0eShuKT9zZChuZFtuXSk6bj09PSJ0cmFuc3BhcmVudCI/bmV3IFVlKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gc2Qobil7cmV0dXJuIG5ldyBVZShuPj4xNiYyNTUsbj4+OCYyNTUsbiYyNTUsMSl9ZnVuY3Rpb24ga28obix0LGUsaSl7cmV0dXJuIGk8PTAmJihuPXQ9ZT1OYU4pLG5ldyBVZShuLHQsZSxpKX1mdW5jdGlvbiBZeChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIHVzfHwobj1KZShuKSksbj8obj1uLnJnYigpLG5ldyBVZShuLnIsbi5nLG4uYixuLm9wYWNpdHkpKTpuZXcgVWV9ZnVuY3Rpb24gJGkobix0LGUsaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP1l4KG4pOm5ldyBVZShuLHQsZSxpPT1udWxsPzE6aSl9ZnVuY3Rpb24gVWUobix0LGUsaSl7dGhpcy5yPStuLHRoaXMuZz0rdCx0aGlzLmI9K2UsdGhpcy5vcGFjaXR5PStpfU9vKFVlLCRpLFlsKHVzLHticmlnaHRlcjpmdW5jdGlvbihuKXtyZXR1cm4gbj1uPT1udWxsP0hvOk1hdGgucG93KEhvLG4pLG5ldyBVZSh0aGlzLnIqbix0aGlzLmcqbix0aGlzLmIqbix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24obil7cmV0dXJuIG49bj09bnVsbD9sczpNYXRoLnBvdyhscyxuKSxuZXcgVWUodGhpcy5yKm4sdGhpcy5nKm4sdGhpcy5iKm4sdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpvZCxmb3JtYXRIZXg6b2QsZm9ybWF0UmdiOmFkLHRvU3RyaW5nOmFkfSkpO2Z1bmN0aW9uIG9kKCl7cmV0dXJuIiMiK1psKHRoaXMucikrWmwodGhpcy5nKStabCh0aGlzLmIpfWZ1bmN0aW9uIGFkKCl7dmFyIG49dGhpcy5vcGFjaXR5O3JldHVybiBuPWlzTmFOKG4pPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLG4pKSwobj09PTE/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsobj09PTE/IikiOiIsICIrbisiKSIpfWZ1bmN0aW9uIFpsKG4pe3JldHVybiBuPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQobil8fDApKSwobjwxNj8iMCI6IiIpK24udG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGxkKG4sdCxlLGkpe3JldHVybiBpPD0wP249dD1lPU5hTjplPD0wfHxlPj0xP249dD1OYU46dDw9MCYmKG49TmFOKSxuZXcgbG4obix0LGUsaSl9ZnVuY3Rpb24gY2Qobil7aWYobiBpbnN0YW5jZW9mIGxuKXJldHVybiBuZXcgbG4obi5oLG4ucyxuLmwsbi5vcGFjaXR5KTtpZihuIGluc3RhbmNlb2YgdXN8fChuPUplKG4pKSwhbilyZXR1cm4gbmV3IGxuO2lmKG4gaW5zdGFuY2VvZiBsbilyZXR1cm4gbjtuPW4ucmdiKCk7dmFyIHQ9bi5yLzI1NSxlPW4uZy8yNTUsaT1uLmIvMjU1LHI9TWF0aC5taW4odCxlLGkpLHM9TWF0aC5tYXgodCxlLGkpLG89TmFOLGE9cy1yLGw9KHMrcikvMjtyZXR1cm4gYT8odD09PXM/bz0oZS1pKS9hKyhlPGkpKjY6ZT09PXM/bz0oaS10KS9hKzI6bz0odC1lKS9hKzQsYS89bDwuNT9zK3I6Mi1zLXIsbyo9NjApOmE9bD4wJiZsPDE/MDpvLG5ldyBsbihvLGEsbCxuLm9wYWNpdHkpfWZ1bmN0aW9uIHBpKG4sdCxlLGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9jZChuKTpuZXcgbG4obix0LGUsaT09bnVsbD8xOmkpfWZ1bmN0aW9uIGxuKG4sdCxlLGkpe3RoaXMuaD0rbix0aGlzLnM9K3QsdGhpcy5sPStlLHRoaXMub3BhY2l0eT0raX1PbyhsbixwaSxZbCh1cyx7YnJpZ2h0ZXI6ZnVuY3Rpb24obil7cmV0dXJuIG49bj09bnVsbD9IbzpNYXRoLnBvdyhIbyxuKSxuZXcgbG4odGhpcy5oLHRoaXMucyx0aGlzLmwqbix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24obil7cmV0dXJuIG49bj09bnVsbD9sczpNYXRoLnBvdyhscyxuKSxuZXcgbG4odGhpcy5oLHRoaXMucyx0aGlzLmwqbix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmglMzYwKyh0aGlzLmg8MCkqMzYwLHQ9aXNOYU4obil8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsZT10aGlzLmwsaT1lKyhlPC41P2U6MS1lKSp0LHI9MiplLWk7cmV0dXJuIG5ldyBVZShKbChuPj0yNDA/bi0yNDA6bisxMjAscixpKSxKbChuLHIsaSksSmwobjwxMjA/bisyNDA6bi0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5vcGFjaXR5O3JldHVybiBuPWlzTmFOKG4pPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLG4pKSwobj09PTE/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrKHRoaXMuc3x8MCkqMTAwKyIlLCAiKyh0aGlzLmx8fDApKjEwMCsiJSIrKG49PT0xPyIpIjoiLCAiK24rIikiKX19KSk7ZnVuY3Rpb24gSmwobix0LGUpe3JldHVybihuPDYwP3QrKGUtdCkqbi82MDpuPDE4MD9lOm48MjQwP3QrKGUtdCkqKDI0MC1uKS82MDp0KSoyNTV9ZnVuY3Rpb24gJGwobix0LGUsaSxyKXt2YXIgcz1uKm4sbz1zKm47cmV0dXJuKCgxLTMqbiszKnMtbykqdCsoNC02KnMrMypvKSplKygxKzMqbiszKnMtMypvKSppK28qcikvNn1mdW5jdGlvbiB1ZChuKXt2YXIgdD1uLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihlKXt2YXIgaT1lPD0wP2U9MDplPj0xPyhlPTEsdC0xKTpNYXRoLmZsb29yKGUqdCkscj1uW2ldLHM9bltpKzFdLG89aT4wP25baS0xXToyKnItcyxhPWk8dC0xP25baSsyXToyKnMtcjtyZXR1cm4gJGwoKGUtaS90KSp0LG8scixzLGEpfX1mdW5jdGlvbiBoZChuKXt2YXIgdD1uLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGk9TWF0aC5mbG9vcigoKGUlPTEpPDA/KytlOmUpKnQpLHI9blsoaSt0LTEpJXRdLHM9bltpJXRdLG89blsoaSsxKSV0XSxhPW5bKGkrMikldF07cmV0dXJuICRsKChlLWkvdCkqdCxyLHMsbyxhKX19ZnVuY3Rpb24gS2kobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIGZkKG4sdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBuK2UqdH19ZnVuY3Rpb24gWngobix0LGUpe3JldHVybiBuPU1hdGgucG93KG4sZSksdD1NYXRoLnBvdyh0LGUpLW4sZT0xL2UsZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KG4raSp0LGUpfX1mdW5jdGlvbiBkZChuLHQpe3ZhciBlPXQtbjtyZXR1cm4gZT9mZChuLGU+MTgwfHxlPC0xODA/ZS0zNjAqTWF0aC5yb3VuZChlLzM2MCk6ZSk6S2koaXNOYU4obik/dDpuKX1mdW5jdGlvbiBwZChuKXtyZXR1cm4obj0rbik9PTE/Ym46ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10P1p4KHQsZSxuKTpLaShpc05hTih0KT9lOnQpfX1mdW5jdGlvbiBibihuLHQpe3ZhciBlPXQtbjtyZXR1cm4gZT9mZChuLGUpOktpKGlzTmFOKG4pP3Q6bil9dmFyIG1pPWZ1bmN0aW9uIG4odCl7dmFyIGU9cGQodCk7ZnVuY3Rpb24gaShyLHMpe3ZhciBvPWUoKHI9JGkocikpLnIsKHM9JGkocykpLnIpLGE9ZShyLmcscy5nKSxsPWUoci5iLHMuYiksYz1ibihyLm9wYWNpdHkscy5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIHIucj1vKHUpLHIuZz1hKHUpLHIuYj1sKHUpLHIub3BhY2l0eT1jKHUpLHIrIiJ9fXJldHVybiBpLmdhbW1hPW4saX0oMSk7ZnVuY3Rpb24gbWQobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLGk9bmV3IEFycmF5KGUpLHI9bmV3IEFycmF5KGUpLHM9bmV3IEFycmF5KGUpLG8sYTtmb3Iobz0wO288ZTsrK28pYT0kaSh0W29dKSxpW29dPWEucnx8MCxyW29dPWEuZ3x8MCxzW29dPWEuYnx8MDtyZXR1cm4gaT1uKGkpLHI9bihyKSxzPW4ocyksYS5vcGFjaXR5PTEsZnVuY3Rpb24obCl7cmV0dXJuIGEucj1pKGwpLGEuZz1yKGwpLGEuYj1zKGwpLGErIiJ9fX12YXIgSng9bWQodWQpLCR4PW1kKGhkKTtmdW5jdGlvbiBnZChuLHQpe3R8fCh0PVtdKTt2YXIgZT1uP01hdGgubWluKHQubGVuZ3RoLG4ubGVuZ3RoKTowLGk9dC5zbGljZSgpLHI7cmV0dXJuIGZ1bmN0aW9uKHMpe2ZvcihyPTA7cjxlOysrcilpW3JdPW5bcl0qKDEtcykrdFtyXSpzO3JldHVybiBpfX1mdW5jdGlvbiB4ZChuKXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KG4pJiYhKG4gaW5zdGFuY2VvZiBEYXRhVmlldyl9ZnVuY3Rpb24geWQobix0KXt2YXIgZT10P3QubGVuZ3RoOjAsaT1uP01hdGgubWluKGUsbi5sZW5ndGgpOjAscj1uZXcgQXJyYXkoaSkscz1uZXcgQXJyYXkoZSksbztmb3Iobz0wO288aTsrK28pcltvXT1naShuW29dLHRbb10pO2Zvcig7bzxlOysrbylzW29dPXRbb107cmV0dXJuIGZ1bmN0aW9uKGEpe2ZvcihvPTA7bzxpOysrbylzW29dPXJbb10oYSk7cmV0dXJuIHN9fWZ1bmN0aW9uIHZkKG4sdCl7dmFyIGU9bmV3IERhdGU7cmV0dXJuIG49K24sdD0rdCxmdW5jdGlvbihpKXtyZXR1cm4gZS5zZXRUaW1lKG4qKDEtaSkrdCppKSxlfX1mdW5jdGlvbiB5ZShuLHQpe3JldHVybiBuPStuLHQ9K3QsZnVuY3Rpb24oZSl7cmV0dXJuIG4qKDEtZSkrdCplfX1mdW5jdGlvbiBfZChuLHQpe3ZhciBlPXt9LGk9e30scjsobj09PW51bGx8fHR5cGVvZiBuIT0ib2JqZWN0IikmJihuPXt9KSwodD09PW51bGx8fHR5cGVvZiB0IT0ib2JqZWN0IikmJih0PXt9KTtmb3IociBpbiB0KXIgaW4gbj9lW3JdPWdpKG5bcl0sdFtyXSk6aVtyXT10W3JdO3JldHVybiBmdW5jdGlvbihzKXtmb3IociBpbiBlKWlbcl09ZVtyXShzKTtyZXR1cm4gaX19dmFyIFFsPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxLbD1uZXcgUmVnRXhwKFFsLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIEt4KG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX1mdW5jdGlvbiBReChuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4odCkrIiJ9fWZ1bmN0aW9uIGhzKG4sdCl7dmFyIGU9UWwubGFzdEluZGV4PUtsLmxhc3RJbmRleD0wLGkscixzLG89LTEsYT1bXSxsPVtdO2ZvcihuPW4rIiIsdD10KyIiOyhpPVFsLmV4ZWMobikpJiYocj1LbC5leGVjKHQpKTspKHM9ci5pbmRleCk+ZSYmKHM9dC5zbGljZShlLHMpLGFbb10/YVtvXSs9czphWysrb109cyksKGk9aVswXSk9PT0ocj1yWzBdKT9hW29dP2Fbb10rPXI6YVsrK29dPXI6KGFbKytvXT1udWxsLGwucHVzaCh7aTpvLHg6eWUoaSxyKX0pKSxlPUtsLmxhc3RJbmRleDtyZXR1cm4gZTx0Lmxlbmd0aCYmKHM9dC5zbGljZShlKSxhW29dP2Fbb10rPXM6YVsrK29dPXMpLGEubGVuZ3RoPDI/bFswXT9ReChsWzBdLngpOkt4KHQpOih0PWwubGVuZ3RoLGZ1bmN0aW9uKGMpe2Zvcih2YXIgdT0wLGg7dTx0OysrdSlhWyhoPWxbdV0pLmldPWgueChjKTtyZXR1cm4gYS5qb2luKCIiKX0pfWZ1bmN0aW9uIGdpKG4sdCl7dmFyIGU9dHlwZW9mIHQsaTtyZXR1cm4gdD09bnVsbHx8ZT09PSJib29sZWFuIj9LaSh0KTooZT09PSJudW1iZXIiP3llOmU9PT0ic3RyaW5nIj8oaT1KZSh0KSk/KHQ9aSxtaSk6aHM6dCBpbnN0YW5jZW9mIEplP21pOnQgaW5zdGFuY2VvZiBEYXRlP3ZkOnhkKHQpP2dkOkFycmF5LmlzQXJyYXkodCk/eWQ6dHlwZW9mIHQudmFsdWVPZiE9ImZ1bmN0aW9uIiYmdHlwZW9mIHQudG9TdHJpbmchPSJmdW5jdGlvbiJ8fGlzTmFOKHQpP19kOnllKShuLHQpfWZ1bmN0aW9uIGpsKG4sdCl7cmV0dXJuIG49K24sdD0rdCxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChuKigxLWUpK3QqZSl9fXZhciB3ZD0xODAvTWF0aC5QSSxWbz17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiB0YyhuLHQsZSxpLHIscyl7dmFyIG8sYSxsO3JldHVybihvPU1hdGguc3FydChuKm4rdCp0KSkmJihuLz1vLHQvPW8pLChsPW4qZSt0KmkpJiYoZS09bipsLGktPXQqbCksKGE9TWF0aC5zcXJ0KGUqZStpKmkpKSYmKGUvPWEsaS89YSxsLz1hKSxuKmk8dCplJiYobj0tbix0PS10LGw9LWwsbz0tbykse3RyYW5zbGF0ZVg6cix0cmFuc2xhdGVZOnMscm90YXRlOk1hdGguYXRhbjIodCxuKSp3ZCxza2V3WDpNYXRoLmF0YW4obCkqd2Qsc2NhbGVYOm8sc2NhbGVZOmF9fXZhciBmcyxlYyxNZCxHbztmdW5jdGlvbiBiZChuKXtyZXR1cm4gbj09PSJub25lIj9WbzooZnN8fChmcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxlYz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsTWQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLGZzLnN0eWxlLnRyYW5zZm9ybT1uLG49TWQuZ2V0Q29tcHV0ZWRTdHlsZShlYy5hcHBlbmRDaGlsZChmcyksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksZWMucmVtb3ZlQ2hpbGQoZnMpLG49bi5zbGljZSg3LC0xKS5zcGxpdCgiLCIpLHRjKCtuWzBdLCtuWzFdLCtuWzJdLCtuWzNdLCtuWzRdLCtuWzVdKSl9ZnVuY3Rpb24gU2Qobil7cmV0dXJuIG49PW51bGw/Vm86KEdvfHwoR289ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksR28uc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLG4pLChuPUdvLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpPyhuPW4ubWF0cml4LHRjKG4uYSxuLmIsbi5jLG4uZCxuLmUsbi5mKSk6Vm8pfWZ1bmN0aW9uIEVkKG4sdCxlLGkpe2Z1bmN0aW9uIHIoYyl7cmV0dXJuIGMubGVuZ3RoP2MucG9wKCkrIiAiOiIifWZ1bmN0aW9uIHMoYyx1LGgsZixkLGcpe2lmKGMhPT1ofHx1IT09Zil7dmFyIHg9ZC5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLHQsbnVsbCxlKTtnLnB1c2goe2k6eC00LHg6eWUoYyxoKX0se2k6eC0yLHg6eWUodSxmKX0pfWVsc2UoaHx8ZikmJmQucHVzaCgidHJhbnNsYXRlKCIraCt0K2YrZSl9ZnVuY3Rpb24gbyhjLHUsaCxmKXtjIT09dT8oYy11PjE4MD91Kz0zNjA6dS1jPjE4MCYmKGMrPTM2MCksZi5wdXNoKHtpOmgucHVzaChyKGgpKyJyb3RhdGUoIixudWxsLGkpLTIseDp5ZShjLHUpfSkpOnUmJmgucHVzaChyKGgpKyJyb3RhdGUoIit1K2kpfWZ1bmN0aW9uIGEoYyx1LGgsZil7YyE9PXU/Zi5wdXNoKHtpOmgucHVzaChyKGgpKyJza2V3WCgiLG51bGwsaSktMix4OnllKGMsdSl9KTp1JiZoLnB1c2gocihoKSsic2tld1goIit1K2kpfWZ1bmN0aW9uIGwoYyx1LGgsZixkLGcpe2lmKGMhPT1ofHx1IT09Zil7dmFyIHg9ZC5wdXNoKHIoZCkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2cucHVzaCh7aTp4LTQseDp5ZShjLGgpfSx7aTp4LTIseDp5ZSh1LGYpfSl9ZWxzZShoIT09MXx8ZiE9PTEpJiZkLnB1c2gocihkKSsic2NhbGUoIitoKyIsIitmKyIpIil9cmV0dXJuIGZ1bmN0aW9uKGMsdSl7dmFyIGg9W10sZj1bXTtyZXR1cm4gYz1uKGMpLHU9bih1KSxzKGMudHJhbnNsYXRlWCxjLnRyYW5zbGF0ZVksdS50cmFuc2xhdGVYLHUudHJhbnNsYXRlWSxoLGYpLG8oYy5yb3RhdGUsdS5yb3RhdGUsaCxmKSxhKGMuc2tld1gsdS5za2V3WCxoLGYpLGwoYy5zY2FsZVgsYy5zY2FsZVksdS5zY2FsZVgsdS5zY2FsZVksaCxmKSxjPXU9bnVsbCxmdW5jdGlvbihkKXtmb3IodmFyIGc9LTEseD1mLmxlbmd0aCx2OysrZzx4OyloWyh2PWZbZ10pLmldPXYueChkKTtyZXR1cm4gaC5qb2luKCIiKX19fXZhciBuYz1FZChiZCwicHgsICIsInB4KSIsImRlZykiKSxpYz1FZChTZCwiLCAiLCIpIiwiKSIpO2Z1bmN0aW9uIFRkKG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBpPW4oKHQ9cGkodCkpLmgsKGU9cGkoZSkpLmgpLHI9Ym4odC5zLGUucykscz1ibih0LmwsZS5sKSxvPWJuKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gdC5oPWkoYSksdC5zPXIoYSksdC5sPXMoYSksdC5vcGFjaXR5PW8oYSksdCsiIn19fXZhciByYz1UZChkZCksang9VGQoYm4pO3ZhciBRaT0wLHBzPTAsZHM9MCxDZD0xZTMsV28sbXMscW89MCx4aT0wLFhvPTAsZ3M9dHlwZW9mIHBlcmZvcm1hbmNlPT0ib2JqZWN0IiYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsUmQ9dHlwZW9mIHdpbmRvdz09Im9iamVjdCImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24obil7c2V0VGltZW91dChuLDE3KX07ZnVuY3Rpb24gamkoKXtyZXR1cm4geGl8fChSZCh0eSkseGk9Z3Mubm93KCkrWG8pfWZ1bmN0aW9uIHR5KCl7eGk9MH1mdW5jdGlvbiB4cygpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9eHMucHJvdG90eXBlPVlvLnByb3RvdHlwZT17Y29uc3RydWN0b3I6eHMscmVzdGFydDpmdW5jdGlvbihuLHQsZSl7aWYodHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtlPShlPT1udWxsP2ppKCk6K2UpKyh0PT1udWxsPzA6K3QpLCF0aGlzLl9uZXh0JiZtcyE9PXRoaXMmJihtcz9tcy5fbmV4dD10aGlzOldvPXRoaXMsbXM9dGhpcyksdGhpcy5fY2FsbD1uLHRoaXMuX3RpbWU9ZSxzYygpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxzYygpKX19O2Z1bmN0aW9uIFlvKG4sdCxlKXt2YXIgaT1uZXcgeHM7cmV0dXJuIGkucmVzdGFydChuLHQsZSksaX1mdW5jdGlvbiBMZCgpe2ppKCksKytRaTtmb3IodmFyIG49V28sdDtuOykodD14aS1uLl90aW1lKT49MCYmbi5fY2FsbC5jYWxsKG51bGwsdCksbj1uLl9uZXh0Oy0tUWl9ZnVuY3Rpb24gQWQoKXt4aT0ocW89Z3Mubm93KCkpK1hvLFFpPXBzPTA7dHJ5e0xkKCl9ZmluYWxseXtRaT0wLG55KCkseGk9MH19ZnVuY3Rpb24gZXkoKXt2YXIgbj1ncy5ub3coKSx0PW4tcW87dD5DZCYmKFhvLT10LHFvPW4pfWZ1bmN0aW9uIG55KCl7Zm9yKHZhciBuLHQ9V28sZSxpPTEvMDt0Oyl0Ll9jYWxsPyhpPnQuX3RpbWUmJihpPXQuX3RpbWUpLG49dCx0PXQuX25leHQpOihlPXQuX25leHQsdC5fbmV4dD1udWxsLHQ9bj9uLl9uZXh0PWU6V289ZSk7bXM9bixzYyhpKX1mdW5jdGlvbiBzYyhuKXtpZighUWkpe3BzJiYocHM9Y2xlYXJUaW1lb3V0KHBzKSk7dmFyIHQ9bi14aTt0PjI0PyhuPDEvMCYmKHBzPXNldFRpbWVvdXQoQWQsbi1ncy5ub3coKS1YbykpLGRzJiYoZHM9Y2xlYXJJbnRlcnZhbChkcykpKTooZHN8fChxbz1ncy5ub3coKSxkcz1zZXRJbnRlcnZhbChleSxDZCkpLFFpPTEsUmQoQWQpKX19ZnVuY3Rpb24gWm8obix0LGUpe3ZhciBpPW5ldyB4cztyZXR1cm4gdD10PT1udWxsPzA6K3QsaS5yZXN0YXJ0KGZ1bmN0aW9uKHIpe2kuc3RvcCgpLG4ocit0KX0sdCxlKSxpfXZhciBpeT1HbCgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSxyeT1bXSxEZD0wLG9jPTEsJG89MixKbz0zLFBkPTQsS289NSx5cz02O2Z1bmN0aW9uIGtuKG4sdCxlLGkscixzKXt2YXIgbz1uLl9fdHJhbnNpdGlvbjtpZighbyluLl9fdHJhbnNpdGlvbj17fTtlbHNlIGlmKGUgaW4gbylyZXR1cm47c3kobixlLHtuYW1lOnQsaW5kZXg6aSxncm91cDpyLG9uOml5LHR3ZWVuOnJ5LHRpbWU6cy50aW1lLGRlbGF5OnMuZGVsYXksZHVyYXRpb246cy5kdXJhdGlvbixlYXNlOnMuZWFzZSx0aW1lcjpudWxsLHN0YXRlOkRkfSl9ZnVuY3Rpb24gdnMobix0KXt2YXIgZT11ZShuLHQpO2lmKGUuc3RhdGU+RGQpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBBZShuLHQpe3ZhciBlPXVlKG4sdCk7aWYoZS5zdGF0ZT5Kbyl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gZX1mdW5jdGlvbiB1ZShuLHQpe3ZhciBlPW4uX190cmFuc2l0aW9uO2lmKCFlfHwhKGU9ZVt0XSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBlfWZ1bmN0aW9uIHN5KG4sdCxlKXt2YXIgaT1uLl9fdHJhbnNpdGlvbixyO2lbdF09ZSxlLnRpbWVyPVlvKHMsMCxlLnRpbWUpO2Z1bmN0aW9uIHMoYyl7ZS5zdGF0ZT1vYyxlLnRpbWVyLnJlc3RhcnQobyxlLmRlbGF5LGUudGltZSksZS5kZWxheTw9YyYmbyhjLWUuZGVsYXkpfWZ1bmN0aW9uIG8oYyl7dmFyIHUsaCxmLGQ7aWYoZS5zdGF0ZSE9PW9jKXJldHVybiBsKCk7Zm9yKHUgaW4gaSlpZihkPWlbdV0sZC5uYW1lPT09ZS5uYW1lKXtpZihkLnN0YXRlPT09Sm8pcmV0dXJuIFpvKG8pO2Quc3RhdGU9PT1QZD8oZC5zdGF0ZT15cyxkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsbixuLl9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIGlbdV0pOit1PHQmJihkLnN0YXRlPXlzLGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiY2FuY2VsIixuLG4uX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgaVt1XSl9aWYoWm8oZnVuY3Rpb24oKXtlLnN0YXRlPT09Sm8mJihlLnN0YXRlPVBkLGUudGltZXIucmVzdGFydChhLGUuZGVsYXksZS50aW1lKSxhKGMpKX0pLGUuc3RhdGU9JG8sZS5vbi5jYWxsKCJzdGFydCIsbixuLl9fZGF0YV9fLGUuaW5kZXgsZS5ncm91cCksZS5zdGF0ZT09PSRvKXtmb3IoZS5zdGF0ZT1KbyxyPW5ldyBBcnJheShmPWUudHdlZW4ubGVuZ3RoKSx1PTAsaD0tMTt1PGY7Kyt1KShkPWUudHdlZW5bdV0udmFsdWUuY2FsbChuLG4uX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSkmJihyWysraF09ZCk7ci5sZW5ndGg9aCsxfX1mdW5jdGlvbiBhKGMpe2Zvcih2YXIgdT1jPGUuZHVyYXRpb24/ZS5lYXNlLmNhbGwobnVsbCxjL2UuZHVyYXRpb24pOihlLnRpbWVyLnJlc3RhcnQobCksZS5zdGF0ZT1LbywxKSxoPS0xLGY9ci5sZW5ndGg7KytoPGY7KXJbaF0uY2FsbChuLHUpO2Uuc3RhdGU9PT1LbyYmKGUub24uY2FsbCgiZW5kIixuLG4uX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSxsKCkpfWZ1bmN0aW9uIGwoKXtlLnN0YXRlPXlzLGUudGltZXIuc3RvcCgpLGRlbGV0ZSBpW3RdO2Zvcih2YXIgYyBpbiBpKXJldHVybjtkZWxldGUgbi5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIF9zKG4sdCl7dmFyIGU9bi5fX3RyYW5zaXRpb24saSxyLHM9ITAsbztpZighIWUpe3Q9dD09bnVsbD9udWxsOnQrIiI7Zm9yKG8gaW4gZSl7aWYoKGk9ZVtvXSkubmFtZSE9PXQpe3M9ITE7Y29udGludWV9cj1pLnN0YXRlPiRvJiZpLnN0YXRlPEtvLGkuc3RhdGU9eXMsaS50aW1lci5zdG9wKCksaS5vbi5jYWxsKHI/ImludGVycnVwdCI6ImNhbmNlbCIsbixuLl9fZGF0YV9fLGkuaW5kZXgsaS5ncm91cCksZGVsZXRlIGVbb119cyYmZGVsZXRlIG4uX190cmFuc2l0aW9ufX1mdW5jdGlvbiBJZChuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7X3ModGhpcyxuKX0pfWZ1bmN0aW9uIG95KG4sdCl7dmFyIGUsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1BZSh0aGlzLG4pLHM9ci50d2VlbjtpZihzIT09ZSl7aT1lPXM7Zm9yKHZhciBvPTAsYT1pLmxlbmd0aDtvPGE7KytvKWlmKGlbb10ubmFtZT09PXQpe2k9aS5zbGljZSgpLGkuc3BsaWNlKG8sMSk7YnJlYWt9fXIudHdlZW49aX19ZnVuY3Rpb24gYXkobix0LGUpe3ZhciBpLHI7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBzPUFlKHRoaXMsbiksbz1zLnR3ZWVuO2lmKG8hPT1pKXtyPShpPW8pLnNsaWNlKCk7Zm9yKHZhciBhPXtuYW1lOnQsdmFsdWU6ZX0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT10KXtyW2xdPWE7YnJlYWt9bD09PWMmJnIucHVzaChhKX1zLnR3ZWVuPXJ9fWZ1bmN0aW9uIE5kKG4sdCl7dmFyIGU9dGhpcy5faWQ7aWYobis9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9dWUodGhpcy5ub2RlKCksZSkudHdlZW4scj0wLHM9aS5sZW5ndGgsbztyPHM7KytyKWlmKChvPWlbcl0pLm5hbWU9PT1uKXJldHVybiBvLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKHQ9PW51bGw/b3k6YXkpKGUsbix0KSl9ZnVuY3Rpb24gdHIobix0LGUpe3ZhciBpPW4uX2lkO3JldHVybiBuLmVhY2goZnVuY3Rpb24oKXt2YXIgcj1BZSh0aGlzLGkpOyhyLnZhbHVlfHwoci52YWx1ZT17fSkpW3RdPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksZnVuY3Rpb24ocil7cmV0dXJuIHVlKHIsaSkudmFsdWVbdF19fWZ1bmN0aW9uIFFvKG4sdCl7dmFyIGU7cmV0dXJuKHR5cGVvZiB0PT0ibnVtYmVyIj95ZTp0IGluc3RhbmNlb2YgSmU/bWk6KGU9SmUodCkpPyh0PWUsbWkpOmhzKShuLHQpfWZ1bmN0aW9uIGx5KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pfX1mdW5jdGlvbiBjeShuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9fWZ1bmN0aW9uIHV5KG4sdCxlKXt2YXIgaSxyPWUrIiIscztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZShuKTtyZXR1cm4gbz09PXI/bnVsbDpvPT09aT9zOnM9dChpPW8sZSl9fWZ1bmN0aW9uIGh5KG4sdCxlKXt2YXIgaSxyPWUrIiIscztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10aGlzLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk7cmV0dXJuIG89PT1yP251bGw6bz09PWk/czpzPXQoaT1vLGUpfX1mdW5jdGlvbiBmeShuLHQsZSl7dmFyIGkscixzO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLGE9ZSh0aGlzKSxsO3JldHVybiBhPT1udWxsP3ZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGUobik6KG89dGhpcy5nZXRBdHRyaWJ1dGUobiksbD1hKyIiLG89PT1sP251bGw6bz09PWkmJmw9PT1yP3M6KHI9bCxzPXQoaT1vLGEpKSl9fWZ1bmN0aW9uIGR5KG4sdCxlKXt2YXIgaSxyLHM7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG8sYT1lKHRoaXMpLGw7cmV0dXJuIGE9PW51bGw/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6KG89dGhpcy5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpLGw9YSsiIixvPT09bD9udWxsOm89PT1pJiZsPT09cj9zOihyPWwscz10KGk9byxhKSkpfX1mdW5jdGlvbiBGZChuLHQpe3ZhciBlPXduKG4pLGk9ZT09PSJ0cmFuc2Zvcm0iP2ljOlFvO3JldHVybiB0aGlzLmF0dHJUd2VlbihuLHR5cGVvZiB0PT0iZnVuY3Rpb24iPyhlLmxvY2FsP2R5OmZ5KShlLGksdHIodGhpcywiYXR0ci4iK24sdCkpOnQ9PW51bGw/KGUubG9jYWw/Y3k6bHkpKGUpOihlLmxvY2FsP2h5OnV5KShlLGksdCkpfWZ1bmN0aW9uIHB5KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMuc2V0QXR0cmlidXRlKG4sdC5jYWxsKHRoaXMsZSkpfX1mdW5jdGlvbiBteShuLHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnNldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCx0LmNhbGwodGhpcyxlKSl9fWZ1bmN0aW9uIGd5KG4sdCl7dmFyIGUsaTtmdW5jdGlvbiByKCl7dmFyIHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHMhPT1pJiYoZT0oaT1zKSYmbXkobixzKSksZX1yZXR1cm4gci5fdmFsdWU9dCxyfWZ1bmN0aW9uIHh5KG4sdCl7dmFyIGUsaTtmdW5jdGlvbiByKCl7dmFyIHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHMhPT1pJiYoZT0oaT1zKSYmcHkobixzKSksZX1yZXR1cm4gci5fdmFsdWU9dCxyfWZ1bmN0aW9uIHpkKG4sdCl7dmFyIGU9ImF0dHIuIituO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4oZT10aGlzLnR3ZWVuKGUpKSYmZS5fdmFsdWU7aWYodD09bnVsbClyZXR1cm4gdGhpcy50d2VlbihlLG51bGwpO2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjt2YXIgaT13bihuKTtyZXR1cm4gdGhpcy50d2VlbihlLChpLmxvY2FsP2d5Onh5KShpLHQpKX1mdW5jdGlvbiB5eShuLHQpe3JldHVybiBmdW5jdGlvbigpe3ZzKHRoaXMsbikuZGVsYXk9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB2eShuLHQpe3JldHVybiB0PSt0LGZ1bmN0aW9uKCl7dnModGhpcyxuKS5kZWxheT10fX1mdW5jdGlvbiBVZChuKXt2YXIgdD10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKHR5cGVvZiBuPT0iZnVuY3Rpb24iP3l5OnZ5KSh0LG4pKTp1ZSh0aGlzLm5vZGUoKSx0KS5kZWxheX1mdW5jdGlvbiBfeShuLHQpe3JldHVybiBmdW5jdGlvbigpe0FlKHRoaXMsbikuZHVyYXRpb249K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB3eShuLHQpe3JldHVybiB0PSt0LGZ1bmN0aW9uKCl7QWUodGhpcyxuKS5kdXJhdGlvbj10fX1mdW5jdGlvbiBCZChuKXt2YXIgdD10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKHR5cGVvZiBuPT0iZnVuY3Rpb24iP195Ond5KSh0LG4pKTp1ZSh0aGlzLm5vZGUoKSx0KS5kdXJhdGlvbn1mdW5jdGlvbiBNeShuLHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtBZSh0aGlzLG4pLmVhc2U9dH19ZnVuY3Rpb24gT2Qobil7dmFyIHQ9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKE15KHQsbikpOnVlKHRoaXMubm9kZSgpLHQpLmVhc2V9ZnVuY3Rpb24ga2Qobil7dHlwZW9mIG4hPSJmdW5jdGlvbiImJihuPW9zKG4pKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9dC5sZW5ndGgsaT1uZXcgQXJyYXkoZSkscj0wO3I8ZTsrK3IpZm9yKHZhciBzPXRbcl0sbz1zLmxlbmd0aCxhPWlbcl09W10sbCxjPTA7YzxvOysrYykobD1zW2NdKSYmbi5jYWxsKGwsbC5fX2RhdGFfXyxjLHMpJiZhLnB1c2gobCk7cmV0dXJuIG5ldyB3ZShpLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9ZnVuY3Rpb24gSGQobil7aWYobi5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPW4uX2dyb3VwcyxpPXQubGVuZ3RoLHI9ZS5sZW5ndGgscz1NYXRoLm1pbihpLHIpLG89bmV3IEFycmF5KGkpLGE9MDthPHM7KythKWZvcih2YXIgbD10W2FdLGM9ZVthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZixkPTA7ZDx1OysrZCkoZj1sW2RdfHxjW2RdKSYmKGhbZF09Zik7Zm9yKDthPGk7KythKW9bYV09dFthXTtyZXR1cm4gbmV3IHdlKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX1mdW5jdGlvbiBieShuKXtyZXR1cm4obisiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHx0PT09InN0YXJ0In0pfWZ1bmN0aW9uIFN5KG4sdCxlKXt2YXIgaSxyLHM9YnkodCk/dnM6QWU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89cyh0aGlzLG4pLGE9by5vbjthIT09aSYmKHI9KGk9YSkuY29weSgpKS5vbih0LGUpLG8ub249cn19ZnVuY3Rpb24gVmQobix0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3VlKHRoaXMubm9kZSgpLGUpLm9uLm9uKG4pOnRoaXMuZWFjaChTeShlLG4sdCkpfWZ1bmN0aW9uIEV5KG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIGUgaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK2UhPT1uKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX1mdW5jdGlvbiBHZCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIixFeSh0aGlzLl9pZCkpfWZ1bmN0aW9uIFdkKG4pe3ZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZDt0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmKG49ZGkobikpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxzPW5ldyBBcnJheShyKSxvPTA7bzxyOysrbylmb3IodmFyIGE9aVtvXSxsPWEubGVuZ3RoLGM9c1tvXT1uZXcgQXJyYXkobCksdSxoLGY9MDtmPGw7KytmKSh1PWFbZl0pJiYoaD1uLmNhbGwodSx1Ll9fZGF0YV9fLGYsYSkpJiYoIl9fZGF0YV9fImluIHUmJihoLl9fZGF0YV9fPXUuX19kYXRhX18pLGNbZl09aCxrbihjW2ZdLHQsZSxmLGMsdWUodSxlKSkpO3JldHVybiBuZXcgd2Uocyx0aGlzLl9wYXJlbnRzLHQsZSl9ZnVuY3Rpb24gcWQobil7dmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkO3R5cGVvZiBuIT0iZnVuY3Rpb24iJiYobj1zcyhuKSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLHM9W10sbz1bXSxhPTA7YTxyOysrYSlmb3IodmFyIGw9aVthXSxjPWwubGVuZ3RoLHUsaD0wO2g8YzsrK2gpaWYodT1sW2hdKXtmb3IodmFyIGY9bi5jYWxsKHUsdS5fX2RhdGFfXyxoLGwpLGQsZz11ZSh1LGUpLHg9MCx2PWYubGVuZ3RoO3g8djsrK3gpKGQ9Zlt4XSkmJmtuKGQsdCxlLHgsZixnKTtzLnB1c2goZiksby5wdXNoKHUpfXJldHVybiBuZXcgd2UocyxvLHQsZSl9dmFyIFR5PU1uLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBYZCgpe3JldHVybiBuZXcgVHkodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIEF5KG4sdCl7dmFyIGUsaSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBzPU9uKHRoaXMsbiksbz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKSxPbih0aGlzLG4pKTtyZXR1cm4gcz09PW8/bnVsbDpzPT09ZSYmbz09PWk/cjpyPXQoZT1zLGk9byl9fWZ1bmN0aW9uIFlkKG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9fWZ1bmN0aW9uIEN5KG4sdCxlKXt2YXIgaSxyPWUrIiIscztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1Pbih0aGlzLG4pO3JldHVybiBvPT09cj9udWxsOm89PT1pP3M6cz10KGk9byxlKX19ZnVuY3Rpb24gUnkobix0LGUpe3ZhciBpLHIscztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1Pbih0aGlzLG4pLGE9ZSh0aGlzKSxsPWErIiI7cmV0dXJuIGE9PW51bGwmJihsPWE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobiksT24odGhpcyxuKSkpLG89PT1sP251bGw6bz09PWkmJmw9PT1yP3M6KHI9bCxzPXQoaT1vLGEpKX19ZnVuY3Rpb24gTHkobix0KXt2YXIgZSxpLHIscz0ic3R5bGUuIit0LG89ImVuZC4iK3MsYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1BZSh0aGlzLG4pLGM9bC5vbix1PWwudmFsdWVbc109PW51bGw/YXx8KGE9WWQodCkpOnZvaWQgMDsoYyE9PWV8fHIhPT11KSYmKGk9KGU9YykuY29weSgpKS5vbihvLHI9dSksbC5vbj1pfX1mdW5jdGlvbiBaZChuLHQsZSl7dmFyIGk9KG4rPSIiKT09InRyYW5zZm9ybSI/bmM6UW87cmV0dXJuIHQ9PW51bGw/dGhpcy5zdHlsZVR3ZWVuKG4sQXkobixpKSkub24oImVuZC5zdHlsZS4iK24sWWQobikpOnR5cGVvZiB0PT0iZnVuY3Rpb24iP3RoaXMuc3R5bGVUd2VlbihuLFJ5KG4saSx0cih0aGlzLCJzdHlsZS4iK24sdCkpKS5lYWNoKEx5KHRoaXMuX2lkLG4pKTp0aGlzLnN0eWxlVHdlZW4obixDeShuLGksdCksZSkub24oImVuZC5zdHlsZS4iK24sbnVsbCl9ZnVuY3Rpb24gUHkobix0LGUpe3JldHVybiBmdW5jdGlvbihpKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4sdC5jYWxsKHRoaXMsaSksZSl9fWZ1bmN0aW9uIER5KG4sdCxlKXt2YXIgaSxyO2Z1bmN0aW9uIHMoKXt2YXIgbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PXImJihpPShyPW8pJiZQeShuLG8sZSkpLGl9cmV0dXJuIHMuX3ZhbHVlPXQsc31mdW5jdGlvbiBKZChuLHQsZSl7dmFyIGk9InN0eWxlLiIrKG4rPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGk9dGhpcy50d2VlbihpKSkmJmkuX3ZhbHVlO2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4oaSxudWxsKTtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oaSxEeShuLHQsZT09bnVsbD8iIjplKSl9ZnVuY3Rpb24gSXkobil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1ufX1mdW5jdGlvbiBOeShuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1uKHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiAkZChuKXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsdHlwZW9mIG49PSJmdW5jdGlvbiI/TnkodHIodGhpcywidGV4dCIsbikpOkl5KG49PW51bGw/IiI6bisiIikpfWZ1bmN0aW9uIEZ5KG4pe3JldHVybiBmdW5jdGlvbih0KXt0aGlzLnRleHRDb250ZW50PW4uY2FsbCh0aGlzLHQpfX1mdW5jdGlvbiB6eShuKXt2YXIgdCxlO2Z1bmN0aW9uIGkoKXt2YXIgcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWUmJih0PShlPXIpJiZGeShyKSksdH1yZXR1cm4gaS5fdmFsdWU9bixpfWZ1bmN0aW9uIEtkKG4pe3ZhciB0PSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKHQ9dGhpcy50d2Vlbih0KSkmJnQuX3ZhbHVlO2lmKG49PW51bGwpcmV0dXJuIHRoaXMudHdlZW4odCxudWxsKTtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4odCx6eShuKSl9ZnVuY3Rpb24gUWQoKXtmb3IodmFyIG49dGhpcy5fbmFtZSx0PXRoaXMuX2lkLGU9am8oKSxpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLHM9MDtzPHI7KytzKWZvcih2YXIgbz1pW3NdLGE9by5sZW5ndGgsbCxjPTA7YzxhOysrYylpZihsPW9bY10pe3ZhciB1PXVlKGwsdCk7a24obCxuLGUsYyxvLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyB3ZShpLHRoaXMuX3BhcmVudHMsbixlKX1mdW5jdGlvbiBqZCgpe3ZhciBuLHQsZT10aGlzLGk9ZS5faWQscj1lLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocyxvKXt2YXIgYT17dmFsdWU6b30sbD17dmFsdWU6ZnVuY3Rpb24oKXstLXI9PT0wJiZzKCl9fTtlLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1BZSh0aGlzLGkpLHU9Yy5vbjt1IT09biYmKHQ9KG49dSkuY29weSgpLHQuXy5jYW5jZWwucHVzaChhKSx0Ll8uaW50ZXJydXB0LnB1c2goYSksdC5fLmVuZC5wdXNoKGwpKSxjLm9uPXR9KX0pfXZhciBVeT0wO2Z1bmN0aW9uIHdlKG4sdCxlLGkpe3RoaXMuX2dyb3Vwcz1uLHRoaXMuX3BhcmVudHM9dCx0aGlzLl9uYW1lPWUsdGhpcy5faWQ9aX1mdW5jdGlvbiBhYyhuKXtyZXR1cm4gTW4oKS50cmFuc2l0aW9uKG4pfWZ1bmN0aW9uIGpvKCl7cmV0dXJuKytVeX12YXIgZXI9TW4ucHJvdG90eXBlO3dlLnByb3RvdHlwZT1hYy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOndlLHNlbGVjdDpXZCxzZWxlY3RBbGw6cWQsZmlsdGVyOmtkLG1lcmdlOkhkLHNlbGVjdGlvbjpYZCx0cmFuc2l0aW9uOlFkLGNhbGw6ZXIuY2FsbCxub2Rlczplci5ub2Rlcyxub2RlOmVyLm5vZGUsc2l6ZTplci5zaXplLGVtcHR5OmVyLmVtcHR5LGVhY2g6ZXIuZWFjaCxvbjpWZCxhdHRyOkZkLGF0dHJUd2Vlbjp6ZCxzdHlsZTpaZCxzdHlsZVR3ZWVuOkpkLHRleHQ6JGQsdGV4dFR3ZWVuOktkLHJlbW92ZTpHZCx0d2VlbjpOZCxkZWxheTpVZCxkdXJhdGlvbjpCZCxlYXNlOk9kLGVuZDpqZH07ZnVuY3Rpb24gdGEobil7cmV0dXJuKChuKj0yKTw9MT9uKm4qbjoobi09MikqbipuKzIpLzJ9dmFyIGxjPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTp0YX07ZnVuY3Rpb24gQnkobix0KXtmb3IodmFyIGU7IShlPW4uX190cmFuc2l0aW9uKXx8IShlPWVbdF0pOylpZighKG49bi5wYXJlbnROb2RlKSlyZXR1cm4gbGMudGltZT1qaSgpLGxjO3JldHVybiBlfWZ1bmN0aW9uIHRwKG4pe3ZhciB0LGU7biBpbnN0YW5jZW9mIHdlPyh0PW4uX2lkLG49bi5fbmFtZSk6KHQ9am8oKSwoZT1sYykudGltZT1qaSgpLG49bj09bnVsbD9udWxsOm4rIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxzPTA7czxyOysrcylmb3IodmFyIG89aVtzXSxhPW8ubGVuZ3RoLGwsYz0wO2M8YTsrK2MpKGw9b1tjXSkmJmtuKGwsbix0LGMsbyxlfHxCeShsLHQpKTtyZXR1cm4gbmV3IHdlKGksdGhpcy5fcGFyZW50cyxuLHQpfU1uLnByb3RvdHlwZS5pbnRlcnJ1cHQ9SWQ7TW4ucHJvdG90eXBlLnRyYW5zaXRpb249dHA7ZnVuY3Rpb24gZXAobil7cmV0dXJuWytuWzBdLCtuWzFdXX1mdW5jdGlvbiBPeShuKXtyZXR1cm5bZXAoblswXSksZXAoblsxXSldfXZhciBMUD17bmFtZToieCIsaGFuZGxlczpbInciLCJlIl0ubWFwKGNjKSxpbnB1dDpmdW5jdGlvbihuLHQpe3JldHVybiBuPT1udWxsP251bGw6W1srblswXSx0WzBdWzFdXSxbK25bMV0sdFsxXVsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24obil7cmV0dXJuIG4mJltuWzBdWzBdLG5bMV1bMF1dfX0sUFA9e25hbWU6InkiLGhhbmRsZXM6WyJuIiwicyJdLm1hcChjYyksaW5wdXQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gbj09bnVsbD9udWxsOltbdFswXVswXSwrblswXV0sW3RbMV1bMF0sK25bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKG4pe3JldHVybiBuJiZbblswXVsxXSxuWzFdWzFdXX19LERQPXtuYW1lOiJ4eSIsaGFuZGxlczpbIm4iLCJ3IiwiZSIsInMiLCJudyIsIm5lIiwic3ciLCJzZSJdLm1hcChjYyksaW5wdXQ6ZnVuY3Rpb24obil7cmV0dXJuIG49PW51bGw/bnVsbDpPeShuKX0sb3V0cHV0OmZ1bmN0aW9uKG4pe3JldHVybiBufX07ZnVuY3Rpb24gY2Mobil7cmV0dXJue3R5cGU6bn19dmFyIG5wPU1hdGguUEksa3k9bnAvMixIeT1ucCoyO3ZhciBWeT1BcnJheS5wcm90b3R5cGUuc2xpY2U7dmFyIEJlPSIkIjtmdW5jdGlvbiBlYSgpe31lYS5wcm90b3R5cGU9aXAucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplYSxoYXM6ZnVuY3Rpb24obil7cmV0dXJuIEJlK24gaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzW0JlK25dfSxzZXQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpc1tCZStuXT10LHRoaXN9LHJlbW92ZTpmdW5jdGlvbihuKXt2YXIgdD1CZStuO3JldHVybiB0IGluIHRoaXMmJmRlbGV0ZSB0aGlzW3RdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1CZSYmZGVsZXRlIHRoaXNbbl19LGtleXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09QmUmJm4ucHVzaCh0LnNsaWNlKDEpKTtyZXR1cm4gbn0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIG49W107Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PUJlJiZuLnB1c2godGhpc1t0XSk7cmV0dXJuIG59LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09QmUmJm4ucHVzaCh7a2V5OnQuc2xpY2UoMSksdmFsdWU6dGhpc1t0XX0pO3JldHVybiBufSxzaXplOmZ1bmN0aW9uKCl7dmFyIG49MDtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09QmUmJisrbjtyZXR1cm4gbn0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIG4gaW4gdGhpcylpZihuWzBdPT09QmUpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PUJlJiZuKHRoaXNbdF0sdC5zbGljZSgxKSx0aGlzKX19O2Z1bmN0aW9uIGlwKG4sdCl7dmFyIGU9bmV3IGVhO2lmKG4gaW5zdGFuY2VvZiBlYSluLmVhY2goZnVuY3Rpb24oYSxsKXtlLnNldChsLGEpfSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KG4pKXt2YXIgaT0tMSxyPW4ubGVuZ3RoLHM7aWYodD09bnVsbClmb3IoOysraTxyOyllLnNldChpLG5baV0pO2Vsc2UgZm9yKDsrK2k8cjspZS5zZXQodChzPW5baV0saSxuKSxzKX1lbHNlIGlmKG4pZm9yKHZhciBvIGluIG4pZS5zZXQobyxuW29dKTtyZXR1cm4gZX12YXIgeWk9aXA7ZnVuY3Rpb24gbmEoKXt9dmFyIHZpPXlpLnByb3RvdHlwZTtuYS5wcm90b3R5cGU9R3kucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpuYSxoYXM6dmkuaGFzLGFkZDpmdW5jdGlvbihuKXtyZXR1cm4gbis9IiIsdGhpc1tCZStuXT1uLHRoaXN9LHJlbW92ZTp2aS5yZW1vdmUsY2xlYXI6dmkuY2xlYXIsdmFsdWVzOnZpLmtleXMsc2l6ZTp2aS5zaXplLGVtcHR5OnZpLmVtcHR5LGVhY2g6dmkuZWFjaH07ZnVuY3Rpb24gR3kobix0KXt2YXIgZT1uZXcgbmE7aWYobiBpbnN0YW5jZW9mIG5hKW4uZWFjaChmdW5jdGlvbihzKXtlLmFkZChzKX0pO2Vsc2UgaWYobil7dmFyIGk9LTEscj1uLmxlbmd0aDtpZih0PT1udWxsKWZvcig7KytpPHI7KWUuYWRkKG5baV0pO2Vsc2UgZm9yKDsrK2k8cjspZS5hZGQodChuW2ldLGksbikpfXJldHVybiBlfXZhciBXeT1BcnJheS5wcm90b3R5cGUscnA9V3kuc2xpY2U7dmFyIGRJPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBvcChuKXtyZXR1cm4gTWF0aC5hYnMobj1NYXRoLnJvdW5kKG4pKT49MWUyMT9uLnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6bi50b1N0cmluZygxMCl9ZnVuY3Rpb24gX2kobix0KXtpZigoZT0obj10P24udG9FeHBvbmVudGlhbCh0LTEpOm4udG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIGUsaT1uLnNsaWNlKDAsZSk7cmV0dXJuW2kubGVuZ3RoPjE/aVswXStpLnNsaWNlKDIpOmksK24uc2xpY2UoZSsxKV19ZnVuY3Rpb24gdW4obil7cmV0dXJuIG49X2koTWF0aC5hYnMobikpLG4/blsxXTpOYU59ZnVuY3Rpb24gYXAobix0KXtyZXR1cm4gZnVuY3Rpb24oZSxpKXtmb3IodmFyIHI9ZS5sZW5ndGgscz1bXSxvPTAsYT1uWzBdLGw9MDtyPjAmJmE+MCYmKGwrYSsxPmkmJihhPU1hdGgubWF4KDEsaS1sKSkscy5wdXNoKGUuc3Vic3RyaW5nKHItPWEscithKSksISgobCs9YSsxKT5pKSk7KWE9bltvPShvKzEpJW4ubGVuZ3RoXTtyZXR1cm4gcy5yZXZlcnNlKCkuam9pbih0KX19ZnVuY3Rpb24gbHAobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24oZSl7cmV0dXJuIG5bK2VdfSl9fXZhciBZeT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBIbihuKXtpZighKHQ9WXkuZXhlYyhuKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIituKTt2YXIgdDtyZXR1cm4gbmV3IGlhKHtmaWxsOnRbMV0sYWxpZ246dFsyXSxzaWduOnRbM10sc3ltYm9sOnRbNF0semVybzp0WzVdLHdpZHRoOnRbNl0sY29tbWE6dFs3XSxwcmVjaXNpb246dFs4XSYmdFs4XS5zbGljZSgxKSx0cmltOnRbOV0sdHlwZTp0WzEwXX0pfUhuLnByb3RvdHlwZT1pYS5wcm90b3R5cGU7ZnVuY3Rpb24gaWEobil7dGhpcy5maWxsPW4uZmlsbD09PXZvaWQgMD8iICI6bi5maWxsKyIiLHRoaXMuYWxpZ249bi5hbGlnbj09PXZvaWQgMD8iPiI6bi5hbGlnbisiIix0aGlzLnNpZ249bi5zaWduPT09dm9pZCAwPyItIjpuLnNpZ24rIiIsdGhpcy5zeW1ib2w9bi5zeW1ib2w9PT12b2lkIDA/IiI6bi5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhbi56ZXJvLHRoaXMud2lkdGg9bi53aWR0aD09PXZvaWQgMD92b2lkIDA6K24ud2lkdGgsdGhpcy5jb21tYT0hIW4uY29tbWEsdGhpcy5wcmVjaXNpb249bi5wcmVjaXNpb249PT12b2lkIDA/dm9pZCAwOituLnByZWNpc2lvbix0aGlzLnRyaW09ISFuLnRyaW0sdGhpcy50eXBlPW4udHlwZT09PXZvaWQgMD8iIjpuLnR5cGUrIiJ9aWEucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHRoaXMud2lkdGg9PT12b2lkIDA/IiI6TWF0aC5tYXgoMSx0aGlzLndpZHRofDApKSsodGhpcy5jb21tYT8iLCI6IiIpKyh0aGlzLnByZWNpc2lvbj09PXZvaWQgMD8iIjoiLiIrTWF0aC5tYXgoMCx0aGlzLnByZWNpc2lvbnwwKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07ZnVuY3Rpb24gY3Aobil7dDpmb3IodmFyIHQ9bi5sZW5ndGgsZT0xLGk9LTEscjtlPHQ7KytlKXN3aXRjaChuW2VdKXtjYXNlIi4iOmk9cj1lO2JyZWFrO2Nhc2UiMCI6aT09PTAmJihpPWUpLHI9ZTticmVhaztkZWZhdWx0OmlmKCErbltlXSlicmVhayB0O2k+MCYmKGk9MCk7YnJlYWt9cmV0dXJuIGk+MD9uLnNsaWNlKDAsaSkrbi5zbGljZShyKzEpOm59dmFyIHVjO2Z1bmN0aW9uIHVwKG4sdCl7dmFyIGU9X2kobix0KTtpZighZSlyZXR1cm4gbisiIjt2YXIgaT1lWzBdLHI9ZVsxXSxzPXItKHVjPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkqMykrMSxvPWkubGVuZ3RoO3JldHVybiBzPT09bz9pOnM+bz9pK25ldyBBcnJheShzLW8rMSkuam9pbigiMCIpOnM+MD9pLnNsaWNlKDAscykrIi4iK2kuc2xpY2Uocyk6IjAuIituZXcgQXJyYXkoMS1zKS5qb2luKCIwIikrX2kobixNYXRoLm1heCgwLHQrcy0xKSlbMF19ZnVuY3Rpb24gaGMobix0KXt2YXIgZT1faShuLHQpO2lmKCFlKXJldHVybiBuKyIiO3ZhciBpPWVbMF0scj1lWzFdO3JldHVybiByPDA/IjAuIituZXcgQXJyYXkoLXIpLmpvaW4oIjAiKStpOmkubGVuZ3RoPnIrMT9pLnNsaWNlKDAscisxKSsiLiIraS5zbGljZShyKzEpOmkrbmV3IEFycmF5KHItaS5sZW5ndGgrMikuam9pbigiMCIpfXZhciBmYz17IiUiOmZ1bmN0aW9uKG4sdCl7cmV0dXJuKG4qMTAwKS50b0ZpeGVkKHQpfSxiOmZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKG4pe3JldHVybiBuKyIifSxkOm9wLGU6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b0V4cG9uZW50aWFsKHQpfSxmOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4udG9GaXhlZCh0KX0sZzpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvUHJlY2lzaW9uKHQpfSxvOmZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIGhjKG4qMTAwLHQpfSxyOmhjLHM6dXAsWDpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZChuKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZChuKS50b1N0cmluZygxNil9fTtmdW5jdGlvbiBkYyhuKXtyZXR1cm4gbn12YXIgaHA9QXJyYXkucHJvdG90eXBlLm1hcCxmcD1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIlx4QjUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiBkcChuKXt2YXIgdD1uLmdyb3VwaW5nPT09dm9pZCAwfHxuLnRob3VzYW5kcz09PXZvaWQgMD9kYzphcChocC5jYWxsKG4uZ3JvdXBpbmcsTnVtYmVyKSxuLnRob3VzYW5kcysiIiksZT1uLmN1cnJlbmN5PT09dm9pZCAwPyIiOm4uY3VycmVuY3lbMF0rIiIsaT1uLmN1cnJlbmN5PT09dm9pZCAwPyIiOm4uY3VycmVuY3lbMV0rIiIscj1uLmRlY2ltYWw9PT12b2lkIDA/Ii4iOm4uZGVjaW1hbCsiIixzPW4ubnVtZXJhbHM9PT12b2lkIDA/ZGM6bHAoaHAuY2FsbChuLm51bWVyYWxzLFN0cmluZykpLG89bi5wZXJjZW50PT09dm9pZCAwPyIlIjpuLnBlcmNlbnQrIiIsYT1uLm1pbnVzPT09dm9pZCAwPyItIjpuLm1pbnVzKyIiLGw9bi5uYW49PT12b2lkIDA/Ik5hTiI6bi5uYW4rIiI7ZnVuY3Rpb24gYyhoKXtoPUhuKGgpO3ZhciBmPWguZmlsbCxkPWguYWxpZ24sZz1oLnNpZ24seD1oLnN5bWJvbCx2PWguemVybyxtPWgud2lkdGgscD1oLmNvbW1hLGI9aC5wcmVjaXNpb24sXz1oLnRyaW0sUz1oLnR5cGU7Uz09PSJuIj8ocD0hMCxTPSJnIik6ZmNbU118fChiPT09dm9pZCAwJiYoYj0xMiksXz0hMCxTPSJnIiksKHZ8fGY9PT0iMCImJmQ9PT0iPSIpJiYodj0hMCxmPSIwIixkPSI9Iik7dmFyIEw9eD09PSIkIj9lOng9PT0iIyImJi9bYm94WF0vLnRlc3QoUyk/IjAiK1MudG9Mb3dlckNhc2UoKToiIixBPXg9PT0iJCI/aTovWyVwXS8udGVzdChTKT9vOiIiLEg9ZmNbU10sdHQ9L1tkZWZncHJzJV0vLnRlc3QoUyk7Yj1iPT09dm9pZCAwPzY6L1tncHJzXS8udGVzdChTKT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGIpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGIpKTtmdW5jdGlvbiBYKHkpe3ZhciBSPUwsRD1BLEYseixOO2lmKFM9PT0iYyIpRD1IKHkpK0QseT0iIjtlbHNle3k9K3k7dmFyIFY9eTwwfHwxL3k8MDtpZih5PWlzTmFOKHkpP2w6SChNYXRoLmFicyh5KSxiKSxfJiYoeT1jcCh5KSksViYmK3k9PTAmJmchPT0iKyImJihWPSExKSxSPShWP2c9PT0iKCI/ZzphOmc9PT0iLSJ8fGc9PT0iKCI/IiI6ZykrUixEPShTPT09InMiP2ZwWzgrdWMvM106IiIpK0QrKFYmJmc9PT0iKCI/IikiOiIiKSx0dCl7Zm9yKEY9LTEsej15Lmxlbmd0aDsrK0Y8ejspaWYoTj15LmNoYXJDb2RlQXQoRiksNDg+Tnx8Tj41Nyl7RD0oTj09PTQ2P3IreS5zbGljZShGKzEpOnkuc2xpY2UoRikpK0QseT15LnNsaWNlKDAsRik7YnJlYWt9fX1wJiYhdiYmKHk9dCh5LDEvMCkpO3ZhciBRPVIubGVuZ3RoK3kubGVuZ3RoK0QubGVuZ3RoLGF0PVE8bT9uZXcgQXJyYXkobS1RKzEpLmpvaW4oZik6IiI7c3dpdGNoKHAmJnYmJih5PXQoYXQreSxhdC5sZW5ndGg/bS1ELmxlbmd0aDoxLzApLGF0PSIiKSxkKXtjYXNlIjwiOnk9Uit5K0QrYXQ7YnJlYWs7Y2FzZSI9Ijp5PVIrYXQreStEO2JyZWFrO2Nhc2UiXiI6eT1hdC5zbGljZSgwLFE9YXQubGVuZ3RoPj4xKStSK3krRCthdC5zbGljZShRKTticmVhaztkZWZhdWx0Onk9YXQrUit5K0Q7YnJlYWt9cmV0dXJuIHMoeSl9cmV0dXJuIFgudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaCsiIn0sWH1mdW5jdGlvbiB1KGgsZil7dmFyIGQ9YygoaD1IbihoKSxoLnR5cGU9ImYiLGgpKSxnPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcih1bihmKS8zKSkpKjMseD1NYXRoLnBvdygxMCwtZyksdj1mcFs4K2cvM107cmV0dXJuIGZ1bmN0aW9uKG0pe3JldHVybiBkKHgqbSkrdn19cmV0dXJue2Zvcm1hdDpjLGZvcm1hdFByZWZpeDp1fX12YXIgcmEsT2Usc2E7cGMoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pO2Z1bmN0aW9uIHBjKG4pe3JldHVybiByYT1kcChuKSxPZT1yYS5mb3JtYXQsc2E9cmEuZm9ybWF0UHJlZml4LHJhfWZ1bmN0aW9uIG1jKG4pe3JldHVybiBNYXRoLm1heCgwLC11bihNYXRoLmFicyhuKSkpfWZ1bmN0aW9uIGdjKG4sdCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKHVuKHQpLzMpKSkqMy11bihNYXRoLmFicyhuKSkpfWZ1bmN0aW9uIHhjKG4sdCl7cmV0dXJuIG49TWF0aC5hYnMobiksdD1NYXRoLmFicyh0KS1uLE1hdGgubWF4KDAsdW4odCktdW4obikpKzF9ZnVuY3Rpb24gV2UoKXtyZXR1cm4gTWF0aC5yYW5kb20oKX12YXIgWnk9ZnVuY3Rpb24gbih0KXtmdW5jdGlvbiBlKGkscil7cmV0dXJuIGk9aT09bnVsbD8wOitpLHI9cj09bnVsbD8xOityLGFyZ3VtZW50cy5sZW5ndGg9PT0xPyhyPWksaT0wKTpyLT1pLGZ1bmN0aW9uKCl7cmV0dXJuIHQoKSpyK2l9fXJldHVybiBlLnNvdXJjZT1uLGV9KFdlKTt2YXIgeWM9ZnVuY3Rpb24gbih0KXtmdW5jdGlvbiBlKGkscil7dmFyIHMsbztyZXR1cm4gaT1pPT1udWxsPzA6K2kscj1yPT1udWxsPzE6K3IsZnVuY3Rpb24oKXt2YXIgYTtpZihzIT1udWxsKWE9cyxzPW51bGw7ZWxzZSBkbyBzPXQoKSoyLTEsYT10KCkqMi0xLG89cypzK2EqYTt3aGlsZSghb3x8bz4xKTtyZXR1cm4gaStyKmEqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKG8pL28pfX1yZXR1cm4gZS5zb3VyY2U9bixlfShXZSk7dmFyIEp5PWZ1bmN0aW9uIG4odCl7ZnVuY3Rpb24gZSgpe3ZhciBpPXljLnNvdXJjZSh0KS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKGkoKSl9fXJldHVybiBlLnNvdXJjZT1uLGV9KFdlKTt2YXIgdmM9ZnVuY3Rpb24gbih0KXtmdW5jdGlvbiBlKGkpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj0wLHM9MDtzPGk7KytzKXIrPXQoKTtyZXR1cm4gcn19cmV0dXJuIGUuc291cmNlPW4sZX0oV2UpO3ZhciAkeT1mdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIGUoaSl7dmFyIHI9dmMuc291cmNlKHQpKGkpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByKCkvaX19cmV0dXJuIGUuc291cmNlPW4sZX0oV2UpO3ZhciBLeT1mdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIGUoaSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLU1hdGgubG9nKDEtdCgpKS9pfX1yZXR1cm4gZS5zb3VyY2U9bixlfShXZSk7ZnVuY3Rpb24gUGUobix0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKG4pO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZSh0KS5kb21haW4obik7YnJlYWt9cmV0dXJuIHRoaXN9dmFyIHBwPUFycmF5LnByb3RvdHlwZSxNcz1wcC5tYXAsd2k9cHAuc2xpY2U7ZnVuY3Rpb24gbXAobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIF9jKG4pe3JldHVybitufXZhciBncD1bMCwxXTtmdW5jdGlvbiBEZShuKXtyZXR1cm4gbn1mdW5jdGlvbiB3YyhuLHQpe3JldHVybih0LT1uPStuKT9mdW5jdGlvbihlKXtyZXR1cm4oZS1uKS90fTptcChpc05hTih0KT9OYU46LjUpfWZ1bmN0aW9uIHhwKG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3RoLTFdLGk7cmV0dXJuIHQ+ZSYmKGk9dCx0PWUsZT1pKSxmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5tYXgodCxNYXRoLm1pbihlLHIpKX19ZnVuY3Rpb24gankobix0LGUpe3ZhciBpPW5bMF0scj1uWzFdLHM9dFswXSxvPXRbMV07cmV0dXJuIHI8aT8oaT13YyhyLGkpLHM9ZShvLHMpKTooaT13YyhpLHIpLHM9ZShzLG8pKSxmdW5jdGlvbihhKXtyZXR1cm4gcyhpKGEpKX19ZnVuY3Rpb24gdHYobix0LGUpe3ZhciBpPU1hdGgubWluKG4ubGVuZ3RoLHQubGVuZ3RoKS0xLHI9bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpLG89LTE7Zm9yKG5baV08blswXSYmKG49bi5zbGljZSgpLnJldmVyc2UoKSx0PXQuc2xpY2UoKS5yZXZlcnNlKCkpOysrbzxpOylyW29dPXdjKG5bb10sbltvKzFdKSxzW29dPWUodFtvXSx0W28rMV0pO3JldHVybiBmdW5jdGlvbihhKXt2YXIgbD1CbihuLGEsMSxpKS0xO3JldHVybiBzW2xdKHJbbF0oYSkpfX1mdW5jdGlvbiBWbihuLHQpe3JldHVybiB0LmRvbWFpbihuLmRvbWFpbigpKS5yYW5nZShuLnJhbmdlKCkpLmludGVycG9sYXRlKG4uaW50ZXJwb2xhdGUoKSkuY2xhbXAobi5jbGFtcCgpKS51bmtub3duKG4udW5rbm93bigpKX1mdW5jdGlvbiBicygpe3ZhciBuPWdwLHQ9Z3AsZT1naSxpLHIscyxvPURlLGEsbCxjO2Z1bmN0aW9uIHUoKXtyZXR1cm4gYT1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCk+Mj90djpqeSxsPWM9bnVsbCxofWZ1bmN0aW9uIGgoZil7cmV0dXJuIGlzTmFOKGY9K2YpP3M6KGx8fChsPWEobi5tYXAoaSksdCxlKSkpKGkobyhmKSkpfXJldHVybiBoLmludmVydD1mdW5jdGlvbihmKXtyZXR1cm4gbyhyKChjfHwoYz1hKHQsbi5tYXAoaSkseWUpKSkoZikpKX0saC5kb21haW49ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49TXMuY2FsbChmLF9jKSxvPT09RGV8fChvPXhwKG4pKSx1KCkpOm4uc2xpY2UoKX0saC5yYW5nZT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD13aS5jYWxsKGYpLHUoKSk6dC5zbGljZSgpfSxoLnJhbmdlUm91bmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHQ9d2kuY2FsbChmKSxlPWpsLHUoKX0saC5jbGFtcD1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1mP3hwKG4pOkRlLGgpOm8hPT1EZX0saC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1mLHUoKSk6ZX0saC51bmtub3duPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWYsaCk6c30sZnVuY3Rpb24oZixkKXtyZXR1cm4gaT1mLHI9ZCx1KCl9fWZ1bmN0aW9uIFNzKG4sdCl7cmV0dXJuIGJzKCkobix0KX1mdW5jdGlvbiBNYyhuLHQsZSxpKXt2YXIgcj1fbihuLHQsZSkscztzd2l0Y2goaT1IbihpPT1udWxsPyIsZiI6aSksaS50eXBlKXtjYXNlInMiOnt2YXIgbz1NYXRoLm1heChNYXRoLmFicyhuKSxNYXRoLmFicyh0KSk7cmV0dXJuIGkucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4ocz1nYyhyLG8pKSYmKGkucHJlY2lzaW9uPXMpLHNhKGksbyl9Y2FzZSIiOmNhc2UiZSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UiciI6e2kucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4ocz14YyhyLE1hdGgubWF4KE1hdGguYWJzKG4pLE1hdGguYWJzKHQpKSkpJiYoaS5wcmVjaXNpb249cy0oaS50eXBlPT09ImUiKSk7YnJlYWt9Y2FzZSJmIjpjYXNlIiUiOntpLnByZWNpc2lvbj09bnVsbCYmIWlzTmFOKHM9bWMocikpJiYoaS5wcmVjaXNpb249cy0oaS50eXBlPT09IiUiKSoyKTticmVha319cmV0dXJuIE9lKGkpfWZ1bmN0aW9uIE1pKG4pe3ZhciB0PW4uZG9tYWluO3JldHVybiBuLnRpY2tzPWZ1bmN0aW9uKGUpe3ZhciBpPXQoKTtyZXR1cm4gaXMoaVswXSxpW2kubGVuZ3RoLTFdLGU9PW51bGw/MTA6ZSl9LG4udGlja0Zvcm1hdD1mdW5jdGlvbihlLGkpe3ZhciByPXQoKTtyZXR1cm4gTWMoclswXSxyW3IubGVuZ3RoLTFdLGU9PW51bGw/MTA6ZSxpKX0sbi5uaWNlPWZ1bmN0aW9uKGUpe2U9PW51bGwmJihlPTEwKTt2YXIgaT10KCkscj0wLHM9aS5sZW5ndGgtMSxvPWlbcl0sYT1pW3NdLGw7cmV0dXJuIGE8byYmKGw9byxvPWEsYT1sLGw9cixyPXMscz1sKSxsPVppKG8sYSxlKSxsPjA/KG89TWF0aC5mbG9vcihvL2wpKmwsYT1NYXRoLmNlaWwoYS9sKSpsLGw9WmkobyxhLGUpKTpsPDAmJihvPU1hdGguY2VpbChvKmwpL2wsYT1NYXRoLmZsb29yKGEqbCkvbCxsPVppKG8sYSxlKSksbD4wPyhpW3JdPU1hdGguZmxvb3Ioby9sKSpsLGlbc109TWF0aC5jZWlsKGEvbCkqbCx0KGkpKTpsPDAmJihpW3JdPU1hdGguY2VpbChvKmwpL2wsaVtzXT1NYXRoLmZsb29yKGEqbCkvbCx0KGkpKSxufSxufWZ1bmN0aW9uIG5yKCl7dmFyIG49U3MoRGUsRGUpO3JldHVybiBuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVm4obixucigpKX0sUGUuYXBwbHkobixhcmd1bWVudHMpLE1pKG4pfWZ1bmN0aW9uIG9hKG4sdCl7bj1uLnNsaWNlKCk7dmFyIGU9MCxpPW4ubGVuZ3RoLTEscj1uW2VdLHM9bltpXSxvO3JldHVybiBzPHImJihvPWUsZT1pLGk9byxvPXIscj1zLHM9byksbltlXT10LmZsb29yKHIpLG5baV09dC5jZWlsKHMpLG59ZnVuY3Rpb24geXAobil7cmV0dXJuIE1hdGgubG9nKG4pfWZ1bmN0aW9uIHZwKG4pe3JldHVybiBNYXRoLmV4cChuKX1mdW5jdGlvbiBldihuKXtyZXR1cm4tTWF0aC5sb2coLW4pfWZ1bmN0aW9uIG52KG4pe3JldHVybi1NYXRoLmV4cCgtbil9ZnVuY3Rpb24gaXYobil7cmV0dXJuIGlzRmluaXRlKG4pPysoIjFlIituKTpuPDA/MDpufWZ1bmN0aW9uIHJ2KG4pe3JldHVybiBuPT09MTA/aXY6bj09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3cobix0KX19ZnVuY3Rpb24gc3Yobil7cmV0dXJuIG49PT1NYXRoLkU/TWF0aC5sb2c6bj09PTEwJiZNYXRoLmxvZzEwfHxuPT09MiYmTWF0aC5sb2cyfHwobj1NYXRoLmxvZyhuKSxmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codCkvbn0pfWZ1bmN0aW9uIF9wKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4tbigtdCl9fWZ1bmN0aW9uIGJjKG4pe3ZhciB0PW4oeXAsdnApLGU9dC5kb21haW4saT0xMCxyLHM7ZnVuY3Rpb24gbygpe3JldHVybiByPXN2KGkpLHM9cnYoaSksZSgpWzBdPDA/KHI9X3Aocikscz1fcChzKSxuKGV2LG52KSk6bih5cCx2cCksdH1yZXR1cm4gdC5iYXNlPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSthLG8oKSk6aX0sdC5kb21haW49ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUoYSksbygpKTplKCl9LHQudGlja3M9ZnVuY3Rpb24oYSl7dmFyIGw9ZSgpLGM9bFswXSx1PWxbbC5sZW5ndGgtMV0saDsoaD11PGMpJiYoZj1jLGM9dSx1PWYpO3ZhciBmPXIoYyksZD1yKHUpLGcseCx2LG09YT09bnVsbD8xMDorYSxwPVtdO2lmKCEoaSUxKSYmZC1mPG0pe2lmKGY9TWF0aC5yb3VuZChmKS0xLGQ9TWF0aC5yb3VuZChkKSsxLGM+MCl7Zm9yKDtmPGQ7KytmKWZvcih4PTEsZz1zKGYpO3g8aTsrK3gpaWYodj1nKngsISh2PGMpKXtpZih2PnUpYnJlYWs7cC5wdXNoKHYpfX1lbHNlIGZvcig7ZjxkOysrZilmb3IoeD1pLTEsZz1zKGYpO3g+PTE7LS14KWlmKHY9Zyp4LCEodjxjKSl7aWYodj51KWJyZWFrO3AucHVzaCh2KX19ZWxzZSBwPWlzKGYsZCxNYXRoLm1pbihkLWYsbSkpLm1hcChzKTtyZXR1cm4gaD9wLnJldmVyc2UoKTpwfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24oYSxsKXtpZihsPT1udWxsJiYobD1pPT09MTA/Ii4wZSI6IiwiKSx0eXBlb2YgbCE9ImZ1bmN0aW9uIiYmKGw9T2UobCkpLGE9PT0xLzApcmV0dXJuIGw7YT09bnVsbCYmKGE9MTApO3ZhciBjPU1hdGgubWF4KDEsaSphL3QudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih1KXt2YXIgaD11L3MoTWF0aC5yb3VuZChyKHUpKSk7cmV0dXJuIGgqaTxpLS41JiYoaCo9aSksaDw9Yz9sKHUpOiIifX0sdC5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGUob2EoZSgpLHtmbG9vcjpmdW5jdGlvbihhKXtyZXR1cm4gcyhNYXRoLmZsb29yKHIoYSkpKX0sY2VpbDpmdW5jdGlvbihhKXtyZXR1cm4gcyhNYXRoLmNlaWwocihhKSkpfX0pKX0sdH1mdW5jdGlvbiBFcygpe3ZhciBuPWJjKGJzKCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiBuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVm4obixFcygpKS5iYXNlKG4uYmFzZSgpKX0sUGUuYXBwbHkobixhcmd1bWVudHMpLG59dmFyIFNjPW5ldyBEYXRlLEVjPW5ldyBEYXRlO2Z1bmN0aW9uIFl0KG4sdCxlLGkpe2Z1bmN0aW9uIHIocyl7cmV0dXJuIG4ocz1hcmd1bWVudHMubGVuZ3RoPT09MD9uZXcgRGF0ZTpuZXcgRGF0ZSgrcykpLHN9cmV0dXJuIHIuZmxvb3I9ZnVuY3Rpb24ocyl7cmV0dXJuIG4ocz1uZXcgRGF0ZSgrcykpLHN9LHIuY2VpbD1mdW5jdGlvbihzKXtyZXR1cm4gbihzPW5ldyBEYXRlKHMtMSkpLHQocywxKSxuKHMpLHN9LHIucm91bmQ9ZnVuY3Rpb24ocyl7dmFyIG89cihzKSxhPXIuY2VpbChzKTtyZXR1cm4gcy1vPGEtcz9vOmF9LHIub2Zmc2V0PWZ1bmN0aW9uKHMsbyl7cmV0dXJuIHQocz1uZXcgRGF0ZSgrcyksbz09bnVsbD8xOk1hdGguZmxvb3IobykpLHN9LHIucmFuZ2U9ZnVuY3Rpb24ocyxvLGEpe3ZhciBsPVtdLGM7aWYocz1yLmNlaWwocyksYT1hPT1udWxsPzE6TWF0aC5mbG9vcihhKSwhKHM8byl8fCEoYT4wKSlyZXR1cm4gbDtkbyBsLnB1c2goYz1uZXcgRGF0ZSgrcykpLHQocyxhKSxuKHMpO3doaWxlKGM8cyYmczxvKTtyZXR1cm4gbH0sci5maWx0ZXI9ZnVuY3Rpb24ocyl7cmV0dXJuIFl0KGZ1bmN0aW9uKG8pe2lmKG8+PW8pZm9yKDtuKG8pLCFzKG8pOylvLnNldFRpbWUoby0xKX0sZnVuY3Rpb24obyxhKXtpZihvPj1vKWlmKGE8MClmb3IoOysrYTw9MDspZm9yKDt0KG8sLTEpLCFzKG8pOyk7ZWxzZSBmb3IoOy0tYT49MDspZm9yKDt0KG8sMSksIXMobyk7KTt9KX0sZSYmKHIuY291bnQ9ZnVuY3Rpb24ocyxvKXtyZXR1cm4gU2Muc2V0VGltZSgrcyksRWMuc2V0VGltZSgrbyksbihTYyksbihFYyksTWF0aC5mbG9vcihlKFNjLEVjKSl9LHIuZXZlcnk9ZnVuY3Rpb24ocyl7cmV0dXJuIHM9TWF0aC5mbG9vcihzKSwhaXNGaW5pdGUocyl8fCEocz4wKT9udWxsOnM+MT9yLmZpbHRlcihpP2Z1bmN0aW9uKG8pe3JldHVybiBpKG8pJXM9PT0wfTpmdW5jdGlvbihvKXtyZXR1cm4gci5jb3VudCgwLG8pJXM9PT0wfSk6cn0pLHJ9dmFyIGFhPVl0KGZ1bmN0aW9uKCl7fSxmdW5jdGlvbihuLHQpe24uc2V0VGltZSgrbit0KX0sZnVuY3Rpb24obix0KXtyZXR1cm4gdC1ufSk7YWEuZXZlcnk9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5mbG9vcihuKSwhaXNGaW5pdGUobil8fCEobj4wKT9udWxsOm4+MT9ZdChmdW5jdGlvbih0KXt0LnNldFRpbWUoTWF0aC5mbG9vcih0L24pKm4pfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKm4pfSxmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL259KTphYX07dmFyIGxhPWFhLHdwPWFhLnJhbmdlO3ZhciBiaT0xZTMsU249NmU0LFRjPTM2ZTUsY2E9ODY0ZTUsdWE9NjA0OGU1O3ZhciBNcD1ZdChmdW5jdGlvbihuKXtuLnNldFRpbWUobi1uLmdldE1pbGxpc2Vjb25kcygpKX0sZnVuY3Rpb24obix0KXtuLnNldFRpbWUoK24rdCpiaSl9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuKHQtbikvYml9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ1NlY29uZHMoKX0pLGhhPU1wLGJwPU1wLnJhbmdlO3ZhciBTcD1ZdChmdW5jdGlvbihuKXtuLnNldFRpbWUobi1uLmdldE1pbGxpc2Vjb25kcygpLW4uZ2V0U2Vjb25kcygpKmJpKX0sZnVuY3Rpb24obix0KXtuLnNldFRpbWUoK24rdCpTbil9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuKHQtbikvU259LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMoKX0pLEFjPVNwLG92PVNwLnJhbmdlO3ZhciBFcD1ZdChmdW5jdGlvbihuKXtuLnNldFRpbWUobi1uLmdldE1pbGxpc2Vjb25kcygpLW4uZ2V0U2Vjb25kcygpKmJpLW4uZ2V0TWludXRlcygpKlNuKX0sZnVuY3Rpb24obix0KXtuLnNldFRpbWUoK24rdCpUYyl9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuKHQtbikvVGN9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9KSxDYz1FcCxhdj1FcC5yYW5nZTt2YXIgVHA9WXQoZnVuY3Rpb24obil7bi5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24obix0KXtuLnNldERhdGUobi5nZXREYXRlKCkrdCl9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuKHQtbi0odC5nZXRUaW1lem9uZU9mZnNldCgpLW4uZ2V0VGltZXpvbmVPZmZzZXQoKSkqU24pL2NhfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXRlKCktMX0pLGlyPVRwLGx2PVRwLnJhbmdlO2Z1bmN0aW9uIFNpKG4pe3JldHVybiBZdChmdW5jdGlvbih0KXt0LnNldERhdGUodC5nZXREYXRlKCktKHQuZ2V0RGF5KCkrNy1uKSU3KSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStlKjcpfSxmdW5jdGlvbih0LGUpe3JldHVybihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKlNuKS91YX0pfXZhciBFaT1TaSgwKSxycj1TaSgxKSxBcD1TaSgyKSxDcD1TaSgzKSxHbj1TaSg0KSxScD1TaSg1KSxMcD1TaSg2KSxQcD1FaS5yYW5nZSxjdj1yci5yYW5nZSx1dj1BcC5yYW5nZSxodj1DcC5yYW5nZSxmdj1Hbi5yYW5nZSxkdj1ScC5yYW5nZSxwdj1McC5yYW5nZTt2YXIgRHA9WXQoZnVuY3Rpb24obil7bi5zZXREYXRlKDEpLG4uc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRNb250aChuLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQuZ2V0TW9udGgoKS1uLmdldE1vbnRoKCkrKHQuZ2V0RnVsbFllYXIoKS1uLmdldEZ1bGxZZWFyKCkpKjEyfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNb250aCgpfSksUmM9RHAsbXY9RHAucmFuZ2U7dmFyIExjPVl0KGZ1bmN0aW9uKG4pe24uc2V0TW9udGgoMCwxKSxuLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihuLHQpe24uc2V0RnVsbFllYXIobi5nZXRGdWxsWWVhcigpK3QpfSxmdW5jdGlvbihuLHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCktbi5nZXRGdWxsWWVhcigpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRGdWxsWWVhcigpfSk7TGMuZXZlcnk9ZnVuY3Rpb24obil7cmV0dXJuIWlzRmluaXRlKG49TWF0aC5mbG9vcihuKSl8fCEobj4wKT9udWxsOll0KGZ1bmN0aW9uKHQpe3Quc2V0RnVsbFllYXIoTWF0aC5mbG9vcih0LmdldEZ1bGxZZWFyKCkvbikqbiksdC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSpuKX0pfTt2YXIgRW49TGMsZ3Y9TGMucmFuZ2U7dmFyIElwPVl0KGZ1bmN0aW9uKG4pe24uc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRVVENEYXRlKG4uZ2V0VVRDRGF0ZSgpK3QpfSxmdW5jdGlvbihuLHQpe3JldHVybih0LW4pL2NhfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENEYXRlKCktMX0pLGZhPUlwLHh2PUlwLnJhbmdlO2Z1bmN0aW9uIFRpKG4pe3JldHVybiBZdChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCktKHQuZ2V0VVRDRGF5KCkrNy1uKSU3KSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKjcpfSxmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3VhfSl9dmFyIFRzPVRpKDApLHNyPVRpKDEpLE5wPVRpKDIpLEZwPVRpKDMpLFduPVRpKDQpLHpwPVRpKDUpLFVwPVRpKDYpLEJwPVRzLnJhbmdlLHl2PXNyLnJhbmdlLHZ2PU5wLnJhbmdlLF92PUZwLnJhbmdlLHd2PVduLnJhbmdlLE12PXpwLnJhbmdlLGJ2PVVwLnJhbmdlO3ZhciBQYz1ZdChmdW5jdGlvbihuKXtuLnNldFVUQ01vbnRoKDAsMSksbi5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24obix0KXtuLnNldFVUQ0Z1bGxZZWFyKG4uZ2V0VVRDRnVsbFllYXIoKSt0KX0sZnVuY3Rpb24obix0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpLW4uZ2V0VVRDRnVsbFllYXIoKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDRnVsbFllYXIoKX0pO1BjLmV2ZXJ5PWZ1bmN0aW9uKG4pe3JldHVybiFpc0Zpbml0ZShuPU1hdGguZmxvb3IobikpfHwhKG4+MCk/bnVsbDpZdChmdW5jdGlvbih0KXt0LnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IodC5nZXRVVENGdWxsWWVhcigpL24pKm4pLHQuc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2Uqbil9KX07dmFyIEFpPVBjLFN2PVBjLnJhbmdlO2Z1bmN0aW9uIERjKG4pe2lmKDA8PW4ueSYmbi55PDEwMCl7dmFyIHQ9bmV3IERhdGUoLTEsbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpO3JldHVybiB0LnNldEZ1bGxZZWFyKG4ueSksdH1yZXR1cm4gbmV3IERhdGUobi55LG4ubSxuLmQsbi5ILG4uTSxuLlMsbi5MKX1mdW5jdGlvbiBJYyhuKXtpZigwPD1uLnkmJm4ueTwxMDApe3ZhciB0PW5ldyBEYXRlKERhdGUuVVRDKC0xLG4ubSxuLmQsbi5ILG4uTSxuLlMsbi5MKSk7cmV0dXJuIHQuc2V0VVRDRnVsbFllYXIobi55KSx0fXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhuLnksbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpKX1mdW5jdGlvbiBBcyhuLHQsZSl7cmV0dXJue3k6bixtOnQsZDplLEg6MCxNOjAsUzowLEw6MH19ZnVuY3Rpb24gTmMobil7dmFyIHQ9bi5kYXRlVGltZSxlPW4uZGF0ZSxpPW4udGltZSxyPW4ucGVyaW9kcyxzPW4uZGF5cyxvPW4uc2hvcnREYXlzLGE9bi5tb250aHMsbD1uLnNob3J0TW9udGhzLGM9Q3MociksdT1ScyhyKSxoPUNzKHMpLGY9UnMocyksZD1DcyhvKSxnPVJzKG8pLHg9Q3MoYSksdj1ScyhhKSxtPUNzKGwpLHA9UnMobCksYj17YTpWLEE6USxiOmF0LEI6RyxjOm51bGwsZDpXcCxlOldwLGY6WXYsZzppXyxHOnNfLEg6V3YsSTpxdixqOlh2LEw6SnAsbTpadixNOkp2LHA6JCxxOmx0LFE6WXAsczpacCxTOiR2LHU6S3YsVTpRdixWOmp2LHc6dF8sVzplXyx4Om51bGwsWDpudWxsLHk6bl8sWTpyXyxaOm9fLCIlIjpYcH0sXz17YTpkdCxBOnh0LGI6ayxCOkZ0LGM6bnVsbCxkOnFwLGU6cXAsZjp1XyxnOl9fLEc6TV8sSDphXyxJOmxfLGo6Y18sTDpLcCxtOmhfLE06Zl8scDptdCxxOlN0LFE6WXAsczpacCxTOmRfLHU6cF8sVTptXyxWOmdfLHc6eF8sVzp5Xyx4Om51bGwsWDpudWxsLHk6dl8sWTp3XyxaOmJfLCIlIjpYcH0sUz17YTpYLEE6eSxiOlIsQjpELGM6RixkOlZwLGU6VnAsZjprdixnOkhwLEc6a3AsSDpHcCxJOkdwLGo6enYsTDpPdixtOkZ2LE06VXYscDp0dCxxOk52LFE6VnYsczpHdixTOkJ2LHU6UnYsVTpMdixWOlB2LHc6Q3YsVzpEdix4OnosWDpOLHk6SHAsWTprcCxaOkl2LCIlIjpIdn07Yi54PUwoZSxiKSxiLlg9TChpLGIpLGIuYz1MKHQsYiksXy54PUwoZSxfKSxfLlg9TChpLF8pLF8uYz1MKHQsXyk7ZnVuY3Rpb24gTChCLHN0KXtyZXR1cm4gZnVuY3Rpb24obnQpe3ZhciBDPVtdLGo9LTEsSj0wLGl0PUIubGVuZ3RoLGV0LHZ0LGJ0O2ZvcihudCBpbnN0YW5jZW9mIERhdGV8fChudD1uZXcgRGF0ZSgrbnQpKTsrK2o8aXQ7KUIuY2hhckNvZGVBdChqKT09PTM3JiYoQy5wdXNoKEIuc2xpY2UoSixqKSksKHZ0PU9wW2V0PUIuY2hhckF0KCsraildKSE9bnVsbD9ldD1CLmNoYXJBdCgrK2opOnZ0PWV0PT09ImUiPyIgIjoiMCIsKGJ0PXN0W2V0XSkmJihldD1idChudCx2dCkpLEMucHVzaChldCksSj1qKzEpO3JldHVybiBDLnB1c2goQi5zbGljZShKLGopKSxDLmpvaW4oIiIpfX1mdW5jdGlvbiBBKEIsc3Qpe3JldHVybiBmdW5jdGlvbihudCl7dmFyIEM9QXMoMTkwMCx2b2lkIDAsMSksaj1IKEMsQixudCs9IiIsMCksSixpdDtpZihqIT1udC5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gQylyZXR1cm4gbmV3IERhdGUoQy5RKTtpZigicyJpbiBDKXJldHVybiBuZXcgRGF0ZShDLnMqMWUzKygiTCJpbiBDP0MuTDowKSk7aWYoc3QmJiEoIloiaW4gQykmJihDLlo9MCksInAiaW4gQyYmKEMuSD1DLkglMTIrQy5wKjEyKSxDLm09PT12b2lkIDAmJihDLm09InEiaW4gQz9DLnE6MCksIlYiaW4gQyl7aWYoQy5WPDF8fEMuVj41MylyZXR1cm4gbnVsbDsidyJpbiBDfHwoQy53PTEpLCJaImluIEM/KEo9SWMoQXMoQy55LDAsMSkpLGl0PUouZ2V0VVRDRGF5KCksSj1pdD40fHxpdD09PTA/c3IuY2VpbChKKTpzcihKKSxKPWZhLm9mZnNldChKLChDLlYtMSkqNyksQy55PUouZ2V0VVRDRnVsbFllYXIoKSxDLm09Si5nZXRVVENNb250aCgpLEMuZD1KLmdldFVUQ0RhdGUoKSsoQy53KzYpJTcpOihKPURjKEFzKEMueSwwLDEpKSxpdD1KLmdldERheSgpLEo9aXQ+NHx8aXQ9PT0wP3JyLmNlaWwoSik6cnIoSiksSj1pci5vZmZzZXQoSiwoQy5WLTEpKjcpLEMueT1KLmdldEZ1bGxZZWFyKCksQy5tPUouZ2V0TW9udGgoKSxDLmQ9Si5nZXREYXRlKCkrKEMudys2KSU3KX1lbHNlKCJXImluIEN8fCJVImluIEMpJiYoInciaW4gQ3x8KEMudz0idSJpbiBDP0MudSU3OiJXImluIEM/MTowKSxpdD0iWiJpbiBDP0ljKEFzKEMueSwwLDEpKS5nZXRVVENEYXkoKTpEYyhBcyhDLnksMCwxKSkuZ2V0RGF5KCksQy5tPTAsQy5kPSJXImluIEM/KEMudys2KSU3K0MuVyo3LShpdCs1KSU3OkMudytDLlUqNy0oaXQrNiklNyk7cmV0dXJuIloiaW4gQz8oQy5IKz1DLlovMTAwfDAsQy5NKz1DLlolMTAwLEljKEMpKTpEYyhDKX19ZnVuY3Rpb24gSChCLHN0LG50LEMpe2Zvcih2YXIgaj0wLEo9c3QubGVuZ3RoLGl0PW50Lmxlbmd0aCxldCx2dDtqPEo7KXtpZihDPj1pdClyZXR1cm4tMTtpZihldD1zdC5jaGFyQ29kZUF0KGorKyksZXQ9PT0zNyl7aWYoZXQ9c3QuY2hhckF0KGorKyksdnQ9U1tldCBpbiBPcD9zdC5jaGFyQXQoaisrKTpldF0sIXZ0fHwoQz12dChCLG50LEMpKTwwKXJldHVybi0xfWVsc2UgaWYoZXQhPW50LmNoYXJDb2RlQXQoQysrKSlyZXR1cm4tMX1yZXR1cm4gQ31mdW5jdGlvbiB0dChCLHN0LG50KXt2YXIgQz1jLmV4ZWMoc3Quc2xpY2UobnQpKTtyZXR1cm4gQz8oQi5wPXVbQ1swXS50b0xvd2VyQ2FzZSgpXSxudCtDWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWChCLHN0LG50KXt2YXIgQz1kLmV4ZWMoc3Quc2xpY2UobnQpKTtyZXR1cm4gQz8oQi53PWdbQ1swXS50b0xvd2VyQ2FzZSgpXSxudCtDWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geShCLHN0LG50KXt2YXIgQz1oLmV4ZWMoc3Quc2xpY2UobnQpKTtyZXR1cm4gQz8oQi53PWZbQ1swXS50b0xvd2VyQ2FzZSgpXSxudCtDWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUihCLHN0LG50KXt2YXIgQz1tLmV4ZWMoc3Quc2xpY2UobnQpKTtyZXR1cm4gQz8oQi5tPXBbQ1swXS50b0xvd2VyQ2FzZSgpXSxudCtDWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRChCLHN0LG50KXt2YXIgQz14LmV4ZWMoc3Quc2xpY2UobnQpKTtyZXR1cm4gQz8oQi5tPXZbQ1swXS50b0xvd2VyQ2FzZSgpXSxudCtDWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRihCLHN0LG50KXtyZXR1cm4gSChCLHQsc3QsbnQpfWZ1bmN0aW9uIHooQixzdCxudCl7cmV0dXJuIEgoQixlLHN0LG50KX1mdW5jdGlvbiBOKEIsc3QsbnQpe3JldHVybiBIKEIsaSxzdCxudCl9ZnVuY3Rpb24gVihCKXtyZXR1cm4gb1tCLmdldERheSgpXX1mdW5jdGlvbiBRKEIpe3JldHVybiBzW0IuZ2V0RGF5KCldfWZ1bmN0aW9uIGF0KEIpe3JldHVybiBsW0IuZ2V0TW9udGgoKV19ZnVuY3Rpb24gRyhCKXtyZXR1cm4gYVtCLmdldE1vbnRoKCldfWZ1bmN0aW9uICQoQil7cmV0dXJuIHJbKyhCLmdldEhvdXJzKCk+PTEyKV19ZnVuY3Rpb24gbHQoQil7cmV0dXJuIDErfn4oQi5nZXRNb250aCgpLzMpfWZ1bmN0aW9uIGR0KEIpe3JldHVybiBvW0IuZ2V0VVRDRGF5KCldfWZ1bmN0aW9uIHh0KEIpe3JldHVybiBzW0IuZ2V0VVRDRGF5KCldfWZ1bmN0aW9uIGsoQil7cmV0dXJuIGxbQi5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBGdChCKXtyZXR1cm4gYVtCLmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIG10KEIpe3JldHVybiByWysoQi5nZXRVVENIb3VycygpPj0xMildfWZ1bmN0aW9uIFN0KEIpe3JldHVybiAxK35+KEIuZ2V0VVRDTW9udGgoKS8zKX1yZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKEIpe3ZhciBzdD1MKEIrPSIiLGIpO3JldHVybiBzdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBCfSxzdH0scGFyc2U6ZnVuY3Rpb24oQil7dmFyIHN0PUEoQis9IiIsITEpO3JldHVybiBzdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBCfSxzdH0sdXRjRm9ybWF0OmZ1bmN0aW9uKEIpe3ZhciBzdD1MKEIrPSIiLF8pO3JldHVybiBzdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBCfSxzdH0sdXRjUGFyc2U6ZnVuY3Rpb24oQil7dmFyIHN0PUEoQis9IiIsITApO3JldHVybiBzdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBCfSxzdH19fXZhciBPcD17Ii0iOiIiLF86IiAiLDA6IjAifSxwZT0vXlxzKlxkKy8sRXY9L14lLyxUdj0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gQnQobix0LGUpe3ZhciBpPW48MD8iLSI6IiIscj0oaT8tbjpuKSsiIixzPXIubGVuZ3RoO3JldHVybiBpKyhzPGU/bmV3IEFycmF5KGUtcysxKS5qb2luKHQpK3I6cil9ZnVuY3Rpb24gQXYobil7cmV0dXJuIG4ucmVwbGFjZShUdiwiXFwkJiIpfWZ1bmN0aW9uIENzKG4pe3JldHVybiBuZXcgUmVnRXhwKCJeKD86IituLm1hcChBdikuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIFJzKG4pe2Zvcih2YXIgdD17fSxlPS0xLGk9bi5sZW5ndGg7KytlPGk7KXRbbltlXS50b0xvd2VyQ2FzZSgpXT1lO3JldHVybiB0fWZ1bmN0aW9uIEN2KG4sdCxlKXt2YXIgaT1wZS5leGVjKHQuc2xpY2UoZSxlKzEpKTtyZXR1cm4gaT8obi53PStpWzBdLGUraVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFJ2KG4sdCxlKXt2YXIgaT1wZS5leGVjKHQuc2xpY2UoZSxlKzEpKTtyZXR1cm4gaT8obi51PStpWzBdLGUraVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEx2KG4sdCxlKXt2YXIgaT1wZS5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gaT8obi5VPStpWzBdLGUraVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFB2KG4sdCxlKXt2YXIgaT1wZS5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gaT8obi5WPStpWzBdLGUraVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIER2KG4sdCxlKXt2YXIgaT1wZS5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gaT8obi5XPStpWzBdLGUraVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtwKG4sdCxlKXt2YXIgaT1wZS5leGVjKHQuc2xpY2UoZSxlKzQpKTtyZXR1cm4gaT8obi55PStpWzBdLGUraVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEhwKG4sdCxlKXt2YXIgaT1wZS5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gaT8obi55PStpWzBdKygraVswXT42OD8xOTAwOjJlMyksZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSXYobix0LGUpe3ZhciBpPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKHQuc2xpY2UoZSxlKzYpKTtyZXR1cm4gaT8obi5aPWlbMV0/MDotKGlbMl0rKGlbM118fCIwMCIpKSxlK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBOdihuLHQsZSl7dmFyIGk9cGUuZXhlYyh0LnNsaWNlKGUsZSsxKSk7cmV0dXJuIGk/KG4ucT1pWzBdKjMtMyxlK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBGdihuLHQsZSl7dmFyIGk9cGUuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIGk/KG4ubT1pWzBdLTEsZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVnAobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBpPyhuLmQ9K2lbMF0sZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24genYobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlLGUrMykpO3JldHVybiBpPyhuLm09MCxuLmQ9K2lbMF0sZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gR3Aobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBpPyhuLkg9K2lbMF0sZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVXYobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBpPyhuLk09K2lbMF0sZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQnYobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBpPyhuLlM9K2lbMF0sZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gT3Yobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlLGUrMykpO3JldHVybiBpPyhuLkw9K2lbMF0sZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24ga3Yobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlLGUrNikpO3JldHVybiBpPyhuLkw9TWF0aC5mbG9vcihpWzBdLzFlMyksZStpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSHYobix0LGUpe3ZhciBpPUV2LmV4ZWModC5zbGljZShlLGUrMSkpO3JldHVybiBpP2UraVswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gVnYobix0LGUpe3ZhciBpPXBlLmV4ZWModC5zbGljZShlKSk7cmV0dXJuIGk/KG4uUT0raVswXSxlK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBHdihuLHQsZSl7dmFyIGk9cGUuZXhlYyh0LnNsaWNlKGUpKTtyZXR1cm4gaT8obi5zPStpWzBdLGUraVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFdwKG4sdCl7cmV0dXJuIEJ0KG4uZ2V0RGF0ZSgpLHQsMil9ZnVuY3Rpb24gV3Yobix0KXtyZXR1cm4gQnQobi5nZXRIb3VycygpLHQsMil9ZnVuY3Rpb24gcXYobix0KXtyZXR1cm4gQnQobi5nZXRIb3VycygpJTEyfHwxMix0LDIpfWZ1bmN0aW9uIFh2KG4sdCl7cmV0dXJuIEJ0KDEraXIuY291bnQoRW4obiksbiksdCwzKX1mdW5jdGlvbiBKcChuLHQpe3JldHVybiBCdChuLmdldE1pbGxpc2Vjb25kcygpLHQsMyl9ZnVuY3Rpb24gWXYobix0KXtyZXR1cm4gSnAobix0KSsiMDAwIn1mdW5jdGlvbiBadihuLHQpe3JldHVybiBCdChuLmdldE1vbnRoKCkrMSx0LDIpfWZ1bmN0aW9uIEp2KG4sdCl7cmV0dXJuIEJ0KG4uZ2V0TWludXRlcygpLHQsMil9ZnVuY3Rpb24gJHYobix0KXtyZXR1cm4gQnQobi5nZXRTZWNvbmRzKCksdCwyKX1mdW5jdGlvbiBLdihuKXt2YXIgdD1uLmdldERheSgpO3JldHVybiB0PT09MD83OnR9ZnVuY3Rpb24gUXYobix0KXtyZXR1cm4gQnQoRWkuY291bnQoRW4obiktMSxuKSx0LDIpfWZ1bmN0aW9uICRwKG4pe3ZhciB0PW4uZ2V0RGF5KCk7cmV0dXJuIHQ+PTR8fHQ9PT0wP0duKG4pOkduLmNlaWwobil9ZnVuY3Rpb24ganYobix0KXtyZXR1cm4gbj0kcChuKSxCdChHbi5jb3VudChFbihuKSxuKSsoRW4obikuZ2V0RGF5KCk9PT00KSx0LDIpfWZ1bmN0aW9uIHRfKG4pe3JldHVybiBuLmdldERheSgpfWZ1bmN0aW9uIGVfKG4sdCl7cmV0dXJuIEJ0KHJyLmNvdW50KEVuKG4pLTEsbiksdCwyKX1mdW5jdGlvbiBuXyhuLHQpe3JldHVybiBCdChuLmdldEZ1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gaV8obix0KXtyZXR1cm4gbj0kcChuKSxCdChuLmdldEZ1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gcl8obix0KXtyZXR1cm4gQnQobi5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIHNfKG4sdCl7dmFyIGU9bi5nZXREYXkoKTtyZXR1cm4gbj1lPj00fHxlPT09MD9HbihuKTpHbi5jZWlsKG4pLEJ0KG4uZ2V0RnVsbFllYXIoKSUxZTQsdCw0KX1mdW5jdGlvbiBvXyhuKXt2YXIgdD1uLmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKHQ+MD8iLSI6KHQqPS0xLCIrIikpK0J0KHQvNjB8MCwiMCIsMikrQnQodCU2MCwiMCIsMil9ZnVuY3Rpb24gcXAobix0KXtyZXR1cm4gQnQobi5nZXRVVENEYXRlKCksdCwyKX1mdW5jdGlvbiBhXyhuLHQpe3JldHVybiBCdChuLmdldFVUQ0hvdXJzKCksdCwyKX1mdW5jdGlvbiBsXyhuLHQpe3JldHVybiBCdChuLmdldFVUQ0hvdXJzKCklMTJ8fDEyLHQsMil9ZnVuY3Rpb24gY18obix0KXtyZXR1cm4gQnQoMStmYS5jb3VudChBaShuKSxuKSx0LDMpfWZ1bmN0aW9uIEtwKG4sdCl7cmV0dXJuIEJ0KG4uZ2V0VVRDTWlsbGlzZWNvbmRzKCksdCwzKX1mdW5jdGlvbiB1XyhuLHQpe3JldHVybiBLcChuLHQpKyIwMDAifWZ1bmN0aW9uIGhfKG4sdCl7cmV0dXJuIEJ0KG4uZ2V0VVRDTW9udGgoKSsxLHQsMil9ZnVuY3Rpb24gZl8obix0KXtyZXR1cm4gQnQobi5nZXRVVENNaW51dGVzKCksdCwyKX1mdW5jdGlvbiBkXyhuLHQpe3JldHVybiBCdChuLmdldFVUQ1NlY29uZHMoKSx0LDIpfWZ1bmN0aW9uIHBfKG4pe3ZhciB0PW4uZ2V0VVRDRGF5KCk7cmV0dXJuIHQ9PT0wPzc6dH1mdW5jdGlvbiBtXyhuLHQpe3JldHVybiBCdChUcy5jb3VudChBaShuKS0xLG4pLHQsMil9ZnVuY3Rpb24gUXAobil7dmFyIHQ9bi5nZXRVVENEYXkoKTtyZXR1cm4gdD49NHx8dD09PTA/V24obik6V24uY2VpbChuKX1mdW5jdGlvbiBnXyhuLHQpe3JldHVybiBuPVFwKG4pLEJ0KFduLmNvdW50KEFpKG4pLG4pKyhBaShuKS5nZXRVVENEYXkoKT09PTQpLHQsMil9ZnVuY3Rpb24geF8obil7cmV0dXJuIG4uZ2V0VVRDRGF5KCl9ZnVuY3Rpb24geV8obix0KXtyZXR1cm4gQnQoc3IuY291bnQoQWkobiktMSxuKSx0LDIpfWZ1bmN0aW9uIHZfKG4sdCl7cmV0dXJuIEJ0KG4uZ2V0VVRDRnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiBfXyhuLHQpe3JldHVybiBuPVFwKG4pLEJ0KG4uZ2V0VVRDRnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiB3XyhuLHQpe3JldHVybiBCdChuLmdldFVUQ0Z1bGxZZWFyKCklMWU0LHQsNCl9ZnVuY3Rpb24gTV8obix0KXt2YXIgZT1uLmdldFVUQ0RheSgpO3JldHVybiBuPWU+PTR8fGU9PT0wP1duKG4pOlduLmNlaWwobiksQnQobi5nZXRVVENGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIGJfKCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBYcCgpe3JldHVybiIlIn1mdW5jdGlvbiBZcChuKXtyZXR1cm4rbn1mdW5jdGlvbiBacChuKXtyZXR1cm4gTWF0aC5mbG9vcigrbi8xZTMpfXZhciBvcixkYSxqcCx0bSxlbTtGYyh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO2Z1bmN0aW9uIEZjKG4pe3JldHVybiBvcj1OYyhuKSxkYT1vci5mb3JtYXQsanA9b3IucGFyc2UsdG09b3IudXRjRm9ybWF0LGVtPW9yLnV0Y1BhcnNlLG9yfXZhciBMcz0xZTMsUHM9THMqNjAsRHM9UHMqNjAsSXM9RHMqMjQsU189SXMqNyxubT1JcyozMCx6Yz1JcyozNjU7ZnVuY3Rpb24gRV8obil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIFRfKG4pe3JldHVybiBuIGluc3RhbmNlb2YgRGF0ZT8rbjorbmV3IERhdGUoK24pfWZ1bmN0aW9uIFVjKG4sdCxlLGkscixzLG8sYSxsKXt2YXIgYz1TcyhEZSxEZSksdT1jLmludmVydCxoPWMuZG9tYWluLGY9bCgiLiVMIiksZD1sKCI6JVMiKSxnPWwoIiVJOiVNIikseD1sKCIlSSAlcCIpLHY9bCgiJWEgJWQiKSxtPWwoIiViICVkIikscD1sKCIlQiIpLGI9bCgiJVkiKSxfPVtbbywxLExzXSxbbyw1LDUqTHNdLFtvLDE1LDE1KkxzXSxbbywzMCwzMCpMc10sW3MsMSxQc10sW3MsNSw1KlBzXSxbcywxNSwxNSpQc10sW3MsMzAsMzAqUHNdLFtyLDEsRHNdLFtyLDMsMypEc10sW3IsNiw2KkRzXSxbciwxMiwxMipEc10sW2ksMSxJc10sW2ksMiwyKklzXSxbZSwxLFNfXSxbdCwxLG5tXSxbdCwzLDMqbm1dLFtuLDEsemNdXTtmdW5jdGlvbiBTKEEpe3JldHVybihvKEEpPEE/ZjpzKEEpPEE/ZDpyKEEpPEE/ZzppKEEpPEE/eDp0KEEpPEE/ZShBKTxBP3Y6bTpuKEEpPEE/cDpiKShBKX1mdW5jdGlvbiBMKEEsSCx0dCxYKXtpZihBPT1udWxsJiYoQT0xMCksdHlwZW9mIEE9PSJudW1iZXIiKXt2YXIgeT1NYXRoLmFicyh0dC1IKS9BLFI9bnMoZnVuY3Rpb24oRCl7cmV0dXJuIERbMl19KS5yaWdodChfLHkpO1I9PT1fLmxlbmd0aD8oWD1fbihIL3pjLHR0L3pjLEEpLEE9bik6Uj8oUj1fW3kvX1tSLTFdWzJdPF9bUl1bMl0veT9SLTE6Ul0sWD1SWzFdLEE9UlswXSk6KFg9TWF0aC5tYXgoX24oSCx0dCxBKSwxKSxBPWEpfXJldHVybiBYPT1udWxsP0E6QS5ldmVyeShYKX1yZXR1cm4gYy5pbnZlcnQ9ZnVuY3Rpb24oQSl7cmV0dXJuIG5ldyBEYXRlKHUoQSkpfSxjLmRvbWFpbj1mdW5jdGlvbihBKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9oKE1zLmNhbGwoQSxUXykpOmgoKS5tYXAoRV8pfSxjLnRpY2tzPWZ1bmN0aW9uKEEsSCl7dmFyIHR0PWgoKSxYPXR0WzBdLHk9dHRbdHQubGVuZ3RoLTFdLFI9eTxYLEQ7cmV0dXJuIFImJihEPVgsWD15LHk9RCksRD1MKEEsWCx5LEgpLEQ9RD9ELnJhbmdlKFgseSsxKTpbXSxSP0QucmV2ZXJzZSgpOkR9LGMudGlja0Zvcm1hdD1mdW5jdGlvbihBLEgpe3JldHVybiBIPT1udWxsP1M6bChIKX0sYy5uaWNlPWZ1bmN0aW9uKEEsSCl7dmFyIHR0PWgoKTtyZXR1cm4oQT1MKEEsdHRbMF0sdHRbdHQubGVuZ3RoLTFdLEgpKT9oKG9hKHR0LEEpKTpjfSxjLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVm4oYyxVYyhuLHQsZSxpLHIscyxvLGEsbCkpfSxjfWZ1bmN0aW9uIE5zKCl7cmV0dXJuIFBlLmFwcGx5KFVjKEVuLFJjLEVpLGlyLENjLEFjLGhhLGxhLGRhKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBCYygpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIGFyKG4pe24uVT1uLkM9bi5MPW4uUj1uLlA9bi5OPW51bGx9QmMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpCYyxpbnNlcnQ6ZnVuY3Rpb24obix0KXt2YXIgZSxpLHI7aWYobil7aWYodC5QPW4sdC5OPW4uTixuLk4mJihuLk4uUD10KSxuLk49dCxuLlIpe2ZvcihuPW4uUjtuLkw7KW49bi5MO24uTD10fWVsc2Ugbi5SPXQ7ZT1ufWVsc2UgdGhpcy5fPyhuPXJtKHRoaXMuXyksdC5QPW51bGwsdC5OPW4sbi5QPW4uTD10LGU9bik6KHQuUD10Lk49bnVsbCx0aGlzLl89dCxlPW51bGwpO2Zvcih0Lkw9dC5SPW51bGwsdC5VPWUsdC5DPSEwLG49dDtlJiZlLkM7KWk9ZS5VLGU9PT1pLkw/KHI9aS5SLHImJnIuQz8oZS5DPXIuQz0hMSxpLkM9ITAsbj1pKToobj09PWUuUiYmKEZzKHRoaXMsZSksbj1lLGU9bi5VKSxlLkM9ITEsaS5DPSEwLHpzKHRoaXMsaSkpKToocj1pLkwsciYmci5DPyhlLkM9ci5DPSExLGkuQz0hMCxuPWkpOihuPT09ZS5MJiYoenModGhpcyxlKSxuPWUsZT1uLlUpLGUuQz0hMSxpLkM9ITAsRnModGhpcyxpKSkpLGU9bi5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24obil7bi5OJiYobi5OLlA9bi5QKSxuLlAmJihuLlAuTj1uLk4pLG4uTj1uLlA9bnVsbDt2YXIgdD1uLlUsZSxpPW4uTCxyPW4uUixzLG87aWYoaT9yP3M9cm0ocik6cz1pOnM9cix0P3QuTD09PW4/dC5MPXM6dC5SPXM6dGhpcy5fPXMsaSYmcj8obz1zLkMscy5DPW4uQyxzLkw9aSxpLlU9cyxzIT09cj8odD1zLlUscy5VPW4uVSxuPXMuUix0Lkw9bixzLlI9cixyLlU9cyk6KHMuVT10LHQ9cyxuPXMuUikpOihvPW4uQyxuPXMpLG4mJihuLlU9dCksIW8pe2lmKG4mJm4uQyl7bi5DPSExO3JldHVybn1kb3tpZihuPT09dGhpcy5fKWJyZWFrO2lmKG49PT10Lkwpe2lmKGU9dC5SLGUuQyYmKGUuQz0hMSx0LkM9ITAsRnModGhpcyx0KSxlPXQuUiksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7KCFlLlJ8fCFlLlIuQykmJihlLkwuQz0hMSxlLkM9ITAsenModGhpcyxlKSxlPXQuUiksZS5DPXQuQyx0LkM9ZS5SLkM9ITEsRnModGhpcyx0KSxuPXRoaXMuXzticmVha319ZWxzZSBpZihlPXQuTCxlLkMmJihlLkM9ITEsdC5DPSEwLHpzKHRoaXMsdCksZT10LkwpLGUuTCYmZS5MLkN8fGUuUiYmZS5SLkMpeyghZS5MfHwhZS5MLkMpJiYoZS5SLkM9ITEsZS5DPSEwLEZzKHRoaXMsZSksZT10LkwpLGUuQz10LkMsdC5DPWUuTC5DPSExLHpzKHRoaXMsdCksbj10aGlzLl87YnJlYWt9ZS5DPSEwLG49dCx0PXQuVX13aGlsZSghbi5DKTtuJiYobi5DPSExKX19fTtmdW5jdGlvbiBGcyhuLHQpe3ZhciBlPXQsaT10LlIscj1lLlU7cj9yLkw9PT1lP3IuTD1pOnIuUj1pOm4uXz1pLGkuVT1yLGUuVT1pLGUuUj1pLkwsZS5SJiYoZS5SLlU9ZSksaS5MPWV9ZnVuY3Rpb24genMobix0KXt2YXIgZT10LGk9dC5MLHI9ZS5VO3I/ci5MPT09ZT9yLkw9aTpyLlI9aTpuLl89aSxpLlU9cixlLlU9aSxlLkw9aS5SLGUuTCYmKGUuTC5VPWUpLGkuUj1lfWZ1bmN0aW9uIHJtKG4pe2Zvcig7bi5MOyluPW4uTDtyZXR1cm4gbn12YXIgT2M9QmM7ZnVuY3Rpb24gbHIobix0LGUsaSl7dmFyIHI9W251bGwsbnVsbF0scz1tZS5wdXNoKHIpLTE7cmV0dXJuIHIubGVmdD1uLHIucmlnaHQ9dCxlJiZVcyhyLG4sdCxlKSxpJiZVcyhyLHQsbixpKSxDZVtuLmluZGV4XS5oYWxmZWRnZXMucHVzaChzKSxDZVt0LmluZGV4XS5oYWxmZWRnZXMucHVzaChzKSxyfWZ1bmN0aW9uIGNyKG4sdCxlKXt2YXIgaT1bdCxlXTtyZXR1cm4gaS5sZWZ0PW4saX1mdW5jdGlvbiBVcyhuLHQsZSxpKXshblswXSYmIW5bMV0/KG5bMF09aSxuLmxlZnQ9dCxuLnJpZ2h0PWUpOm4ubGVmdD09PWU/blsxXT1pOm5bMF09aX1mdW5jdGlvbiBSXyhuLHQsZSxpLHIpe3ZhciBzPW5bMF0sbz1uWzFdLGE9c1swXSxsPXNbMV0sYz1vWzBdLHU9b1sxXSxoPTAsZj0xLGQ9Yy1hLGc9dS1sLHg7aWYoeD10LWEsISghZCYmeD4wKSl7aWYoeC89ZCxkPDApe2lmKHg8aClyZXR1cm47eDxmJiYoZj14KX1lbHNlIGlmKGQ+MCl7aWYoeD5mKXJldHVybjt4PmgmJihoPXgpfWlmKHg9aS1hLCEoIWQmJng8MCkpe2lmKHgvPWQsZDwwKXtpZih4PmYpcmV0dXJuO3g+aCYmKGg9eCl9ZWxzZSBpZihkPjApe2lmKHg8aClyZXR1cm47eDxmJiYoZj14KX1pZih4PWUtbCwhKCFnJiZ4PjApKXtpZih4Lz1nLGc8MCl7aWYoeDxoKXJldHVybjt4PGYmJihmPXgpfWVsc2UgaWYoZz4wKXtpZih4PmYpcmV0dXJuO3g+aCYmKGg9eCl9aWYoeD1yLWwsISghZyYmeDwwKSl7aWYoeC89ZyxnPDApe2lmKHg+ZilyZXR1cm47eD5oJiYoaD14KX1lbHNlIGlmKGc+MCl7aWYoeDxoKXJldHVybjt4PGYmJihmPXgpfXJldHVybiEoaD4wKSYmIShmPDEpfHwoaD4wJiYoblswXT1bYStoKmQsbCtoKmddKSxmPDEmJihuWzFdPVthK2YqZCxsK2YqZ10pKSwhMH19fX19ZnVuY3Rpb24gTF8obix0LGUsaSxyKXt2YXIgcz1uWzFdO2lmKHMpcmV0dXJuITA7dmFyIG89blswXSxhPW4ubGVmdCxsPW4ucmlnaHQsYz1hWzBdLHU9YVsxXSxoPWxbMF0sZj1sWzFdLGQ9KGMraCkvMixnPSh1K2YpLzIseCx2O2lmKGY9PT11KXtpZihkPHR8fGQ+PWkpcmV0dXJuO2lmKGM+aCl7aWYoIW8pbz1bZCxlXTtlbHNlIGlmKG9bMV0+PXIpcmV0dXJuO3M9W2Qscl19ZWxzZXtpZighbylvPVtkLHJdO2Vsc2UgaWYob1sxXTxlKXJldHVybjtzPVtkLGVdfX1lbHNlIGlmKHg9KGMtaCkvKGYtdSksdj1nLXgqZCx4PC0xfHx4PjEpaWYoYz5oKXtpZighbylvPVsoZS12KS94LGVdO2Vsc2UgaWYob1sxXT49cilyZXR1cm47cz1bKHItdikveCxyXX1lbHNle2lmKCFvKW89WyhyLXYpL3gscl07ZWxzZSBpZihvWzFdPGUpcmV0dXJuO3M9WyhlLXYpL3gsZV19ZWxzZSBpZih1PGYpe2lmKCFvKW89W3QseCp0K3ZdO2Vsc2UgaWYob1swXT49aSlyZXR1cm47cz1baSx4Kmkrdl19ZWxzZXtpZighbylvPVtpLHgqaSt2XTtlbHNlIGlmKG9bMF08dClyZXR1cm47cz1bdCx4KnQrdl19cmV0dXJuIG5bMF09byxuWzFdPXMsITB9ZnVuY3Rpb24gc20obix0LGUsaSl7Zm9yKHZhciByPW1lLmxlbmd0aCxzO3ItLTspKCFMXyhzPW1lW3JdLG4sdCxlLGkpfHwhUl8ocyxuLHQsZSxpKXx8IShNYXRoLmFicyhzWzBdWzBdLXNbMV1bMF0pPlh0fHxNYXRoLmFicyhzWzBdWzFdLXNbMV1bMV0pPlh0KSkmJmRlbGV0ZSBtZVtyXX1mdW5jdGlvbiBvbShuKXtyZXR1cm4gQ2Vbbi5pbmRleF09e3NpdGU6bixoYWxmZWRnZXM6W119fWZ1bmN0aW9uIFBfKG4sdCl7dmFyIGU9bi5zaXRlLGk9dC5sZWZ0LHI9dC5yaWdodDtyZXR1cm4gZT09PXImJihyPWksaT1lKSxyP01hdGguYXRhbjIoclsxXS1pWzFdLHJbMF0taVswXSk6KGU9PT1pPyhpPXRbMV0scj10WzBdKTooaT10WzBdLHI9dFsxXSksTWF0aC5hdGFuMihpWzBdLXJbMF0sclsxXS1pWzFdKSl9ZnVuY3Rpb24ga2Mobix0KXtyZXR1cm4gdFsrKHQubGVmdCE9PW4uc2l0ZSldfWZ1bmN0aW9uIERfKG4sdCl7cmV0dXJuIHRbKyh0LmxlZnQ9PT1uLnNpdGUpXX1mdW5jdGlvbiBhbSgpe2Zvcih2YXIgbj0wLHQ9Q2UubGVuZ3RoLGUsaSxyLHM7bjx0OysrbilpZigoZT1DZVtuXSkmJihzPShpPWUuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgbz1uZXcgQXJyYXkocyksYT1uZXcgQXJyYXkocyk7Zm9yKHI9MDtyPHM7KytyKW9bcl09cixhW3JdPVBfKGUsbWVbaVtyXV0pO2ZvcihvLnNvcnQoZnVuY3Rpb24obCxjKXtyZXR1cm4gYVtjXS1hW2xdfSkscj0wO3I8czsrK3IpYVtyXT1pW29bcl1dO2ZvcihyPTA7cjxzOysrcilpW3JdPWFbcl19fWZ1bmN0aW9uIGxtKG4sdCxlLGkpe3ZhciByPUNlLmxlbmd0aCxzLG8sYSxsLGMsdSxoLGYsZCxnLHgsdixtPSEwO2ZvcihzPTA7czxyOysrcylpZihvPUNlW3NdKXtmb3IoYT1vLnNpdGUsYz1vLmhhbGZlZGdlcyxsPWMubGVuZ3RoO2wtLTspbWVbY1tsXV18fGMuc3BsaWNlKGwsMSk7Zm9yKGw9MCx1PWMubGVuZ3RoO2w8dTspZz1EXyhvLG1lW2NbbF1dKSx4PWdbMF0sdj1nWzFdLGg9a2MobyxtZVtjWysrbCV1XV0pLGY9aFswXSxkPWhbMV0sKE1hdGguYWJzKHgtZik+WHR8fE1hdGguYWJzKHYtZCk+WHQpJiYoYy5zcGxpY2UobCwwLG1lLnB1c2goY3IoYSxnLE1hdGguYWJzKHgtbik8WHQmJmktdj5YdD9bbixNYXRoLmFicyhmLW4pPFh0P2Q6aV06TWF0aC5hYnModi1pKTxYdCYmZS14Plh0P1tNYXRoLmFicyhkLWkpPFh0P2Y6ZSxpXTpNYXRoLmFicyh4LWUpPFh0JiZ2LXQ+WHQ/W2UsTWF0aC5hYnMoZi1lKTxYdD9kOnRdOk1hdGguYWJzKHYtdCk8WHQmJngtbj5YdD9bTWF0aC5hYnMoZC10KTxYdD9mOm4sdF06bnVsbCkpLTEpLCsrdSk7dSYmKG09ITEpfWlmKG0pe3ZhciBwLGIsXyxTPTEvMDtmb3Iocz0wLG09bnVsbDtzPHI7KytzKShvPUNlW3NdKSYmKGE9by5zaXRlLHA9YVswXS1uLGI9YVsxXS10LF89cCpwK2IqYixfPFMmJihTPV8sbT1vKSk7aWYobSl7dmFyIEw9W24sdF0sQT1bbixpXSxIPVtlLGldLHR0PVtlLHRdO20uaGFsZmVkZ2VzLnB1c2gobWUucHVzaChjcihhPW0uc2l0ZSxMLEEpKS0xLG1lLnB1c2goY3IoYSxBLEgpKS0xLG1lLnB1c2goY3IoYSxILHR0KSktMSxtZS5wdXNoKGNyKGEsdHQsTCkpLTEpfX1mb3Iocz0wO3M8cjsrK3MpKG89Q2Vbc10pJiYoby5oYWxmZWRnZXMubGVuZ3RofHxkZWxldGUgQ2Vbc10pfXZhciBjbT1bXSxwYTtmdW5jdGlvbiBJXygpe2FyKHRoaXMpLHRoaXMueD10aGlzLnk9dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBDaShuKXt2YXIgdD1uLlAsZT1uLk47aWYoISghdHx8IWUpKXt2YXIgaT10LnNpdGUscj1uLnNpdGUscz1lLnNpdGU7aWYoaSE9PXMpe3ZhciBvPXJbMF0sYT1yWzFdLGw9aVswXS1vLGM9aVsxXS1hLHU9c1swXS1vLGg9c1sxXS1hLGY9MioobCpoLWMqdSk7aWYoIShmPj0tdW0pKXt2YXIgZD1sKmwrYypjLGc9dSp1K2gqaCx4PShoKmQtYypnKS9mLHY9KGwqZy11KmQpL2YsbT1jbS5wb3AoKXx8bmV3IElfO20uYXJjPW4sbS5zaXRlPXIsbS54PXgrbyxtLnk9KG0uY3k9dithKStNYXRoLnNxcnQoeCp4K3Yqdiksbi5jaXJjbGU9bTtmb3IodmFyIHA9bnVsbCxiPXVyLl87YjspaWYobS55PGIueXx8bS55PT09Yi55JiZtLng8PWIueClpZihiLkwpYj1iLkw7ZWxzZXtwPWIuUDticmVha31lbHNlIGlmKGIuUiliPWIuUjtlbHNle3A9YjticmVha311ci5pbnNlcnQocCxtKSxwfHwocGE9bSl9fX19ZnVuY3Rpb24gUmkobil7dmFyIHQ9bi5jaXJjbGU7dCYmKHQuUHx8KHBhPXQuTiksdXIucmVtb3ZlKHQpLGNtLnB1c2godCksYXIodCksbi5jaXJjbGU9bnVsbCl9dmFyIGZtPVtdO2Z1bmN0aW9uIE5fKCl7YXIodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIGhtKG4pe3ZhciB0PWZtLnBvcCgpfHxuZXcgTl87cmV0dXJuIHQuc2l0ZT1uLHR9ZnVuY3Rpb24gSGMobil7UmkobiksTGkucmVtb3ZlKG4pLGZtLnB1c2gobiksYXIobil9ZnVuY3Rpb24gZG0obil7dmFyIHQ9bi5jaXJjbGUsZT10LngsaT10LmN5LHI9W2UsaV0scz1uLlAsbz1uLk4sYT1bbl07SGMobik7Zm9yKHZhciBsPXM7bC5jaXJjbGUmJk1hdGguYWJzKGUtbC5jaXJjbGUueCk8WHQmJk1hdGguYWJzKGktbC5jaXJjbGUuY3kpPFh0OylzPWwuUCxhLnVuc2hpZnQobCksSGMobCksbD1zO2EudW5zaGlmdChsKSxSaShsKTtmb3IodmFyIGM9bztjLmNpcmNsZSYmTWF0aC5hYnMoZS1jLmNpcmNsZS54KTxYdCYmTWF0aC5hYnMoaS1jLmNpcmNsZS5jeSk8WHQ7KW89Yy5OLGEucHVzaChjKSxIYyhjKSxjPW87YS5wdXNoKGMpLFJpKGMpO3ZhciB1PWEubGVuZ3RoLGg7Zm9yKGg9MTtoPHU7KytoKWM9YVtoXSxsPWFbaC0xXSxVcyhjLmVkZ2UsbC5zaXRlLGMuc2l0ZSxyKTtsPWFbMF0sYz1hW3UtMV0sYy5lZGdlPWxyKGwuc2l0ZSxjLnNpdGUsbnVsbCxyKSxDaShsKSxDaShjKX1mdW5jdGlvbiBwbShuKXtmb3IodmFyIHQ9blswXSxlPW5bMV0saSxyLHMsbyxhPUxpLl87YTspaWYocz1tbShhLGUpLXQscz5YdClhPWEuTDtlbHNlIGlmKG89dC1GXyhhLGUpLG8+WHQpe2lmKCFhLlIpe2k9YTticmVha31hPWEuUn1lbHNle3M+LVh0PyhpPWEuUCxyPWEpOm8+LVh0PyhpPWEscj1hLk4pOmk9cj1hO2JyZWFrfW9tKG4pO3ZhciBsPWhtKG4pO2lmKExpLmluc2VydChpLGwpLCEoIWkmJiFyKSl7aWYoaT09PXIpe1JpKGkpLHI9aG0oaS5zaXRlKSxMaS5pbnNlcnQobCxyKSxsLmVkZ2U9ci5lZGdlPWxyKGkuc2l0ZSxsLnNpdGUpLENpKGkpLENpKHIpO3JldHVybn1pZighcil7bC5lZGdlPWxyKGkuc2l0ZSxsLnNpdGUpO3JldHVybn1SaShpKSxSaShyKTt2YXIgYz1pLnNpdGUsdT1jWzBdLGg9Y1sxXSxmPW5bMF0tdSxkPW5bMV0taCxnPXIuc2l0ZSx4PWdbMF0tdSx2PWdbMV0taCxtPTIqKGYqdi1kKngpLHA9ZipmK2QqZCxiPXgqeCt2KnYsXz1bKHYqcC1kKmIpL20rdSwoZipiLXgqcCkvbStoXTtVcyhyLmVkZ2UsYyxnLF8pLGwuZWRnZT1scihjLG4sbnVsbCxfKSxyLmVkZ2U9bHIobixnLG51bGwsXyksQ2koaSksQ2kocil9fWZ1bmN0aW9uIG1tKG4sdCl7dmFyIGU9bi5zaXRlLGk9ZVswXSxyPWVbMV0scz1yLXQ7aWYoIXMpcmV0dXJuIGk7dmFyIG89bi5QO2lmKCFvKXJldHVybi0xLzA7ZT1vLnNpdGU7dmFyIGE9ZVswXSxsPWVbMV0sYz1sLXQ7aWYoIWMpcmV0dXJuIGE7dmFyIHU9YS1pLGg9MS9zLTEvYyxmPXUvYztyZXR1cm4gaD8oLWYrTWF0aC5zcXJ0KGYqZi0yKmgqKHUqdS8oLTIqYyktbCtjLzIrci1zLzIpKSkvaCtpOihpK2EpLzJ9ZnVuY3Rpb24gRl8obix0KXt2YXIgZT1uLk47aWYoZSlyZXR1cm4gbW0oZSx0KTt2YXIgaT1uLnNpdGU7cmV0dXJuIGlbMV09PT10P2lbMF06MS8wfXZhciBYdD0xZS02LHVtPTFlLTEyLExpLENlLHVyLG1lO2Z1bmN0aW9uIHpfKG4sdCxlKXtyZXR1cm4oblswXS1lWzBdKSoodFsxXS1uWzFdKS0oblswXS10WzBdKSooZVsxXS1uWzFdKX1mdW5jdGlvbiBVXyhuLHQpe3JldHVybiB0WzFdLW5bMV18fHRbMF0tblswXX1mdW5jdGlvbiBtYShuLHQpe3ZhciBlPW4uc29ydChVXykucG9wKCksaSxyLHM7Zm9yKG1lPVtdLENlPW5ldyBBcnJheShuLmxlbmd0aCksTGk9bmV3IE9jLHVyPW5ldyBPYzs7KWlmKHM9cGEsZSYmKCFzfHxlWzFdPHMueXx8ZVsxXT09PXMueSYmZVswXTxzLngpKShlWzBdIT09aXx8ZVsxXSE9PXIpJiYocG0oZSksaT1lWzBdLHI9ZVsxXSksZT1uLnBvcCgpO2Vsc2UgaWYocylkbShzLmFyYyk7ZWxzZSBicmVhaztpZihhbSgpLHQpe3ZhciBvPSt0WzBdWzBdLGE9K3RbMF1bMV0sbD0rdFsxXVswXSxjPSt0WzFdWzFdO3NtKG8sYSxsLGMpLGxtKG8sYSxsLGMpfXRoaXMuZWRnZXM9bWUsdGhpcy5jZWxscz1DZSxMaT11cj1tZT1DZT1udWxsfW1hLnByb3RvdHlwZT17Y29uc3RydWN0b3I6bWEscG9seWdvbnM6ZnVuY3Rpb24oKXt2YXIgbj10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLm1hcChmdW5jdGlvbih0KXt2YXIgZT10LmhhbGZlZGdlcy5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIGtjKHQsbltpXSl9KTtyZXR1cm4gZS5kYXRhPXQuc2l0ZS5kYXRhLGV9KX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIG49W10sdD10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oZSxpKXtpZighIShhPShzPWUuaGFsZmVkZ2VzKS5sZW5ndGgpKWZvcih2YXIgcj1lLnNpdGUscyxvPS0xLGEsbCxjPXRbc1thLTFdXSx1PWMubGVmdD09PXI/Yy5yaWdodDpjLmxlZnQ7KytvPGE7KWw9dSxjPXRbc1tvXV0sdT1jLmxlZnQ9PT1yP2MucmlnaHQ6Yy5sZWZ0LGwmJnUmJmk8bC5pbmRleCYmaTx1LmluZGV4JiZ6XyhyLGwsdSk8MCYmbi5wdXNoKFtyLmRhdGEsbC5kYXRhLHUuZGF0YV0pfSksbn0sbGlua3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIG4ucmlnaHR9KS5tYXAoZnVuY3Rpb24obil7cmV0dXJue3NvdXJjZTpuLmxlZnQuZGF0YSx0YXJnZXQ6bi5yaWdodC5kYXRhfX0pfSxmaW5kOmZ1bmN0aW9uKG4sdCxlKXtmb3IodmFyIGk9dGhpcyxyLHM9aS5fZm91bmR8fDAsbz1pLmNlbGxzLmxlbmd0aCxhOyEoYT1pLmNlbGxzW3NdKTspaWYoKytzPj1vKXJldHVybiBudWxsO3ZhciBsPW4tYS5zaXRlWzBdLGM9dC1hLnNpdGVbMV0sdT1sKmwrYypjO2RvIGE9aS5jZWxsc1tyPXNdLHM9bnVsbCxhLmhhbGZlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uKGgpe3ZhciBmPWkuZWRnZXNbaF0sZD1mLmxlZnQ7aWYoISgoZD09PWEuc2l0ZXx8IWQpJiYhKGQ9Zi5yaWdodCkpKXt2YXIgZz1uLWRbMF0seD10LWRbMV0sdj1nKmcreCp4O3Y8dSYmKHU9dixzPWQuaW5kZXgpfX0pO3doaWxlKHMhPT1udWxsKTtyZXR1cm4gaS5fZm91bmQ9cixlPT1udWxsfHx1PD1lKmU/YS5zaXRlOm51bGx9fTtmdW5jdGlvbiBQaShuLHQsZSl7dGhpcy5rPW4sdGhpcy54PXQsdGhpcy55PWV9UGkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQaSxzY2FsZTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PTE/dGhpczpuZXcgUGkodGhpcy5rKm4sdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbihuLHQpe3JldHVybiBuPT09MCZ0PT09MD90aGlzOm5ldyBQaSh0aGlzLmssdGhpcy54K3RoaXMuaypuLHRoaXMueSt0aGlzLmsqdCl9LGFwcGx5OmZ1bmN0aW9uKG4pe3JldHVybltuWzBdKnRoaXMuayt0aGlzLngsblsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKG4pe3JldHVybiBuKnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbihuKXtyZXR1cm4gbip0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24obil7cmV0dXJuWyhuWzBdLXRoaXMueCkvdGhpcy5rLChuWzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbihuKXtyZXR1cm4obi10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24obil7cmV0dXJuIG4uY29weSgpLmRvbWFpbihuLnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAobi5pbnZlcnQsbikpfSxyZXNjYWxlWTpmdW5jdGlvbihuKXtyZXR1cm4gbi5jb3B5KCkuZG9tYWluKG4ucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcChuLmludmVydCxuKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19O3ZhciBWYz1uZXcgUGkoMSwwLDApO0djLnByb3RvdHlwZT1QaS5wcm90b3R5cGU7ZnVuY3Rpb24gR2Mobil7Zm9yKDshbi5fX3pvb207KWlmKCEobj1uLnBhcmVudE5vZGUpKXJldHVybiBWYztyZXR1cm4gbi5fX3pvb219dmFyIHltPTFlNCx2bT0uMDAxLF9tPU9lKCIuMn5lIiksQl89T2UoIi40fnIiKSxnbT1PZSgiLH4iKTtmdW5jdGlvbiB4bShuKXtpZihuPT09MClyZXR1cm4iMCI7bGV0IHQ9TWF0aC5hYnMobik7cmV0dXJuIHQ+PXltfHx0PHZtP19tKG4pOkJfKG4pfXZhciBxYz17Zm9ybWF0VGljazp4bSxmb3JtYXRTaG9ydDp4bSxmb3JtYXRSZWFkYWJsZShuKXtsZXQgdD1NYXRoLmFicyhuKTtyZXR1cm4gdD49eW18fHQ8dm0/X20obik6Z20obil9LGZvcm1hdExvbmc6Z219LFhPPW5ldyBJbnRsLk51bWJlckZvcm1hdCh2b2lkIDAse21heGltdW1GcmFjdGlvbkRpZ2l0czozfSk7dmFyIFlPPU9lKCIwLjN+cyIpLFpPPU9lKCIsLjN+ZiIpO3ZhciBPXz0xZTMsa189NjAqT18sSF89NjAqa18sVl89MjQqSF8sSk89MzY1KlZfLCRPPU9lKCIuNH4iKTt2YXIgR189TnMoKS50aWNrRm9ybWF0KCksV2Msd209e2Zvcm1hdFRpY2sobil7cmV0dXJuIEdfKG5ldyBEYXRlKG4pKX0sZm9ybWF0U2hvcnQobil7cmV0dXJuIG5ldyBEYXRlKG4pLnRvTG9jYWxlU3RyaW5nKFdjLHt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQiLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMifSl9LGZvcm1hdFJlYWRhYmxlKG4pe3JldHVybiBuZXcgRGF0ZShuKS50b0xvY2FsZVN0cmluZyhXYyx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pfSxmb3JtYXRMb25nKG4pe3JldHVybiBuZXcgRGF0ZShuKS50b0xvY2FsZVN0cmluZyhXYyx7eWVhcjoibnVtZXJpYyIsbW9udGg6ImxvbmciLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMiLHRpbWVab25lTmFtZToic2hvcnQiLGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6M30pfX07ZnVuY3Rpb24gaHIobil7c3dpdGNoKG4pe2Nhc2Ugb24uTElORUFSOnJldHVybiBuZXcgWGM7Y2FzZSBvbi5MT0cxMDpyZXR1cm4gbmV3IFljO2Nhc2Ugb24uVElNRTpyZXR1cm4gbmV3IFpjO2RlZmF1bHQ6bGV0IHQ9bjt0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2NhbGVUeXBlICR7dH0gbm90IHN1cHBvcnRlZC5gKX19dmFyIFdfPS4wNSxYYz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1xY310cmFuc2Zvcm0odCxlLGkpe2xldFtyLHNdPXQsbz1zLXIsW2EsbF09ZSxjPWwtYTtyZXR1cm4gbz09PTA/YTpjL28qKGktcikrYX1mb3J3YXJkKHQsZSxpKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0odCxlLGkpfXJldmVyc2UodCxlLGkpe3JldHVybiB0aGlzLnRyYW5zZm9ybShlLHQsaSl9bmljZURvbWFpbih0KXtsZXRbZSxpXT10O2lmKGk8ZSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtpZihpPT09ZSlyZXR1cm4gZT09PTA/Wy0xLDFdOmU8MD9bMiplLDBdOlswLDIqZV07bGV0IHI9bnIoKSxzPShpLWUrTnVtYmVyLkVQU0lMT04pKldfLFtvLGFdPXIuZG9tYWluKFtlLXMsaStzXSkubmljZSgpLmRvbWFpbigpO3JldHVybltvLGFdfXRpY2tzKHQsZSl7cmV0dXJuIG5yKCkuZG9tYWluKHQpLnRpY2tzKGUpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX0sWWM9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9cWN9dHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmxvZzEwKHQ+MD90Ok51bWJlci5NSU5fVkFMVUUpfXVudHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmV4cCh0L01hdGguTE9HMTBFKX1mb3J3YXJkKHQsZSxpKXtpZihpPD0wKXJldHVybiBlWzBdO2xldFtyLHNdPXQsW28sYV09ZSxsPXRoaXMudHJhbnNmb3JtKHIpLHU9dGhpcy50cmFuc2Zvcm0ocyktbCxoPWEtbztyZXR1cm4gaT10aGlzLnRyYW5zZm9ybShpKSxoLyh1K051bWJlci5FUFNJTE9OKSooaS1sKStvfXJldmVyc2UodCxlLGkpe2xldFtyLHNdPXQsW28sYV09ZSxsPXRoaXMudHJhbnNmb3JtKHIpLHU9dGhpcy50cmFuc2Zvcm0ocyktbCxoPWEtbyxmPXUvKGgrTnVtYmVyLkVQU0lMT04pKihpLW8pK2w7cmV0dXJuIHRoaXMudW50cmFuc2Zvcm0oZil9bmljZURvbWFpbih0KXtsZXRbZSxpXT10O2lmKGU+aSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtsZXQgcj1NYXRoLm1heChlLE51bWJlci5NSU5fVkFMVUUpLHM9TWF0aC5tYXgoaSxOdW1iZXIuTUlOX1ZBTFVFKTtyZXR1cm4gaTw9MD9bTnVtYmVyLk1JTl9WQUxVRSwxXTpbTWF0aC5tYXgoTnVtYmVyLk1JTl9WQUxVRSxyKi41KSxzKjJdfXRpY2tzKHQsZSl7bGV0IGk9dFswXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMF0scj10WzFdPD0wP051bWJlci5NSU5fVkFMVUU6dFsxXSxzPUVzKCkuZG9tYWluKFtpLHJdKS50aWNrcyhlKTtyZXR1cm4gcy5sZW5ndGg/czp0fWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpJiZ0PjB9fSxaYz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc2NhbGU9TnMoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9d219Zm9yd2FyZCh0LGUsaSl7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnJhbmdlKGUpKGkpfXJldmVyc2UodCxlLGkpe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKS5pbnZlcnQoaSkuZ2V0VGltZSgpfW5pY2VEb21haW4odCl7bGV0W2UsaV09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltlLmdldFRpbWUoKSxpLmdldFRpbWUoKV19dGlja3ModCxlKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MoZSkubWFwKGk9PmkuZ2V0VGltZSgpKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19O2Z1bmN0aW9uIGJtKG4pe3JldHVybnt4OltuLngsbi54K24ud2lkdGhdLHk6W24ueSxuLnkrbi5oZWlnaHRdfX12YXIgTW09ITE7aWYoc2VsZi5oYXNPd25Qcm9wZXJ0eSgiV2ViR0wyUmVuZGVyaW5nQ29udGV4dCIpJiZzZWxmLmhhc093blByb3BlcnR5KCJkb2N1bWVudCIpKXtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtuLmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGNyZWF0aW9uZXJyb3IiLCgpPT57TW09ITF9KTtsZXQgdD1uLmdldENvbnRleHQoIndlYmdsMiIpO01tPUJvb2xlYW4odCl9ZnVuY3Rpb24gU20oKXtyZXR1cm4gc2VsZi5oYXNPd25Qcm9wZXJ0eSgiT2Zmc2NyZWVuQ2FudmFzIil9ZnVuY3Rpb24gZ2Eobix0KXtpZihuLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKG5bZV0hPT10W2VdKXJldHVybiExO3JldHVybiEwfXZhciBmcj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMueFNjYWxlPWhyKG9uLkxJTkVBUiksdGhpcy55U2NhbGU9aHIob24uTElORUFSKSx0aGlzLmRvbUNvbnRhaW5lclJlY3Q9e3g6MCx3aWR0aDoxLHk6MCxoZWlnaHQ6MX0sdGhpcy5sYXN0VXBkYXRlZD0wLHRoaXMuY3VycmVudFZpZXdCb3hSZWN0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9fWdldFVwZGF0ZUlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5sYXN0VXBkYXRlZH11cGRhdGVJZGVudGlmaWVyKCl7dGhpcy5sYXN0VXBkYXRlZCsrfWlzWUF4aXNQb2ludGVkRG93bigpe3JldHVybiEwfXNldFhTY2FsZSh0KXt0aGlzLnhTY2FsZT10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXNldFlTY2FsZSh0KXt0aGlzLnlTY2FsZT10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfWdldEN1cnJlbnRWaWV3Qm94UmVjdCgpe3JldHVybiB0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdH1zZXRWaWV3Qm94UmVjdCh0KXt0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdD10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXNldERvbUNvbnRhaW5lclJlY3QodCl7dGhpcy5kb21Db250YWluZXJSZWN0PXQsdGhpcy51cGRhdGVJZGVudGlmaWVyKCl9dHJhbnNmb3JtRGF0YVRvVWlDb29yZCh0LGUpe2xldCBpPXQscj1ibSh0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdCk7cmV0dXJuW3RoaXMueFNjYWxlLmZvcndhcmQoci54LFtpLngsaS54K2kud2lkdGhdLGVbMF0pLHRoaXMueVNjYWxlLmZvcndhcmQoci55LHRoaXMuaXNZQXhpc1BvaW50ZWREb3duKCk/W2kueStpLmhlaWdodCxpLnldOltpLnksaS55K2kuaGVpZ2h0XSxlWzFdKV19fTt2YXIgVG47KGZ1bmN0aW9uKG4pe25bbi5TVkc9MF09IlNWRyIsbltuLldFQkdMPTFdPSJXRUJHTCJ9KShUbnx8KFRuPXt9KSk7ZnVuY3Rpb24geGEobix0LGUsaSl7bGV0e2NvbG9yOnIsdmlzaWJsZTpzLG9wYWNpdHk6b309aSxhPW47cmV0dXJuIWEmJiFzP251bGw6KGE9YSE9bnVsbD9hOnQoKSxhPWUoYSksYS5zdHlsZS5kaXNwbGF5PXM/IiI6Im5vbmUiLGEuc3R5bGUuc3Ryb2tlPXIsYS5zdHlsZS5vcGFjaXR5PVN0cmluZyhvIT1udWxsP286MSksYSl9dmFyIEJzPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3ZnPXR9Zmx1c2goKXt9b25SZXNpemUodCl7fWRlc3Ryb3lPYmplY3QodCl7dGhpcy5zdmcucmVtb3ZlQ2hpbGQodC5kb20pfXNldFVzZURhcmtNb2RlKHQpe31jcmVhdGVQYXRoRFN0cmluZyh0KXtpZighdC5sZW5ndGgpcmV0dXJuIiI7bGV0IGU9bmV3IEFycmF5KHQubGVuZ3RoLzIpO2VbMF09YE0ke3RbMF19LCR7dFsxXX1gO2ZvcihsZXQgaT0xO2k8dC5sZW5ndGgvMjtpKyspZVtpXT1gTCR7dFtpKjJdfSwke3RbaSoyKzFdfWA7cmV0dXJuIGUuam9pbigiIil9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxpKXtsZXQgcj14YSh0PT1udWxsP3ZvaWQgMDp0LmRvbSwoKT0+e2xldCBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7cy5zdHlsZS5maWxsPSJub25lIjtsZXQgbz10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKGUpO3JldHVybiBzLnNldEF0dHJpYnV0ZSgiZCIsbyksdGhpcy5zdmcuYXBwZW5kQ2hpbGQocyksc30scz0+e2lmKCEodCE9bnVsbCYmdC5kYXRhKXx8IWdhKGUsdD09bnVsbD92b2lkIDA6dC5kYXRhKSl7bGV0IG89dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhlKTtzLnNldEF0dHJpYnV0ZSgiZCIsbyl9cmV0dXJuIHN9LGkpO3JldHVybiByPT09bnVsbD9udWxsOihyLnN0eWxlLnN0cm9rZVdpZHRoPVN0cmluZyhpLndpZHRoKSx7ZG9tOnIsZGF0YTplfSl9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LGUsaSl7bGV0e3NpemU6cixjb2xvcjpzfT1pLG89cipNYXRoLnNxcnQoMykvMixhPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1yLzIsZS55K28vMyxlLngrci8yLGUueStvLzMsZS54LGUueS1vKjIvM10pLGw9eGEodD09bnVsbD92b2lkIDA6dC5kb20sKCk9PntsZXQgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpO2MuY2xhc3NMaXN0LmFkZCgidHJpYW5nbGUiKSxjLnN0eWxlLmZpbGw9Im5vbmUiO2xldCB1PXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoYSk7cmV0dXJuIGMuc2V0QXR0cmlidXRlKCJkIix1KyJaIiksdGhpcy5zdmcuYXBwZW5kQ2hpbGQoYyksY30sYz0+e2xldCB1PXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoYSk7cmV0dXJuIGMuc2V0QXR0cmlidXRlKCJkIix1KyJaIiksY30saSk7cmV0dXJuIGw9PT1udWxsP251bGw6KGwuc3R5bGUuZmlsbD1zLHtkb206bCxkYXRhOmF9KX1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsaSl7bGV0e2NvbG9yOnIscmFkaXVzOnN9PWksbz14YSh0PT1udWxsP3ZvaWQgMDp0LmRvbSwoKT0+e2xldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJjbGUiKTtyZXR1cm4gYS5zdHlsZS5maWxsPXIsYS5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSksYS5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSksYS5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhzKSksdGhpcy5zdmcuYXBwZW5kQ2hpbGQoYSksYX0sYT0+KGEuc3R5bGUuZmlsbD1yLGEuc2V0QXR0cmlidXRlKCJjeCIsU3RyaW5nKGUueCkpLGEuc2V0QXR0cmlidXRlKCJjeSIsU3RyaW5nKGUueSkpLGEuc2V0QXR0cmlidXRlKCJyIixTdHJpbmcocykpLGEpLGkpO3JldHVybiBvPT09bnVsbD9udWxsOntkb206byxkYXRhOmV9fWNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHQsZSxpLHIpe2lmKGUueSE9PWkueSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5wdXQgZXJyb3I6IHN0YXJ0LnkgIT0gZW5kLnkuIik7bGV0e2FsdGl0dWRlOnMsY29sb3I6b309cixhPTIvTWF0aC5zcXJ0KDMpKnMsbD1uZXcgRmxvYXQzMkFycmF5KFtlLngtYS8yLGUueStzLzIsZS54LGUueS1zLzIsaS54LGkueS1zLzIsaS54K2EvMixpLnkrcy8yXSksYz14YSh0PT1udWxsP3ZvaWQgMDp0LmRvbSwoKT0+e2xldCB1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dS5jbGFzc0xpc3QuYWRkKCJ0cmFwZXpvaWQiKSx1LnN0eWxlLmZpbGw9Im5vbmUiO2xldCBoPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcobCk7cmV0dXJuIHUuc2V0QXR0cmlidXRlKCJkIixoKyJaIiksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodSksdX0sdT0+e2xldCBoPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcobCk7cmV0dXJuIHUuc2V0QXR0cmlidXRlKCJkIixoKyJaIiksdX0scik7cmV0dXJuIGM9PT1udWxsP251bGw6KGMuc3R5bGUuZmlsbD1vLHtkb206YyxkYXRhOmx9KX1kaXNwb3NlKCl7fX07dmFyIFpoPSIxMzciO3ZhciBxXz0wLEVtPTEsWF89Mjt2YXIgbzA9MSxZXz0yLFpzPTMsdG89MCxoZT0xLGtyPTIsYTA9MTt2YXIgam49MCwkcz0xLFRtPTIsQW09MyxDbT00LFpfPTUsRHI9MTAwLEpfPTEwMSwkXz0xMDIsUm09MTAzLExtPTEwNCxLXz0yMDAsUV89MjAxLGpfPTIwMix0dz0yMDMsbDA9MjA0LGMwPTIwNSxldz0yMDYsbnc9MjA3LGl3PTIwOCxydz0yMDksc3c9MjEwLG93PTAsYXc9MSxsdz0yLE51PTMsY3c9NCx1dz01LGh3PTYsZnc9NyxBbD0wLGR3PTEscHc9Mix0aT0wLG13PTEsZ3c9Mix4dz0zLHl3PTQsdnc9NSx1MD0zMDAsVG89MzAxLEFvPTMwMixGdT0zMDMsenU9MzA0LENsPTMwNixKaD0zMDcsVXU9MWUzLFZlPTEwMDEsQnU9MTAwMixmZT0xMDAzLFBtPTEwMDQ7dmFyIERtPTEwMDU7dmFyIGJlPTEwMDYsX3c9MTAwNzt2YXIgUmw9MTAwODt2YXIgZWk9MTAwOSx3dz0xMDEwLE13PTEwMTEsZW89MTAxMixidz0xMDEzLEthPTEwMTQsemk9MTAxNSx6cj0xMDE2LFN3PTEwMTcsRXc9MTAxOCxVcj0xMDIwLFR3PTEwMjEsUmU9MTAyMyxBdz0xMDI0LEN3PTEwMjUsQmk9MTAyNixIcj0xMDI3LFJ3PTEwMjgsTHc9MTAyOSxQdz0xMDMwLER3PTEwMzEsSXc9MTAzMyxKYz0zMzc3NiwkYz0zMzc3NyxLYz0zMzc3OCxRYz0zMzc3OSxJbT0zNTg0MCxObT0zNTg0MSxGbT0zNTg0Mix6bT0zNTg0MyxOdz0zNjE5NixVbT0zNzQ5MixCbT0zNzQ5NixPbT0zNzgwOCxrbT0zNzgwOSxIbT0zNzgxMCxWbT0zNzgxMSxHbT0zNzgxMixXbT0zNzgxMyxxbT0zNzgxNCxYbT0zNzgxNSxZbT0zNzgxNixabT0zNzgxNyxKbT0zNzgxOCwkbT0zNzgxOSxLbT0zNzgyMCxRbT0zNzgyMSxqbT0zNjQ5MixGdz0yMjAwLHp3PTIyMDEsVXc9MjIwMixRYT0yMzAwLGphPTIzMDEsamM9MjMwMixJcj0yNDAwLE5yPTI0MDEsdGw9MjQwMiwkaD0yNTAwLGgwPTI1MDEsQnc9MDt2YXIgcmk9M2UzLCR0PTMwMDEsT3c9MzIwMCxrdz0zMjAxLGpyPTAsSHc9MTt2YXIgdHU9NzY4MDt2YXIgVnc9NTE5LG5vPTM1MDQ0LGVsPTM1MDQ4O3ZhciB0Zz0iMzAwIGVzIixPdT0xMDM1LEluPWNsYXNze2FkZEV2ZW50TGlzdGVuZXIodCxlKXt0aGlzLl9saXN0ZW5lcnM9PT12b2lkIDAmJih0aGlzLl9saXN0ZW5lcnM9e30pO2xldCBpPXRoaXMuX2xpc3RlbmVycztpW3RdPT09dm9pZCAwJiYoaVt0XT1bXSksaVt0XS5pbmRleE9mKGUpPT09LTEmJmlbdF0ucHVzaChlKX1oYXNFdmVudExpc3RlbmVyKHQsZSl7aWYodGhpcy5fbGlzdGVuZXJzPT09dm9pZCAwKXJldHVybiExO2xldCBpPXRoaXMuX2xpc3RlbmVycztyZXR1cm4gaVt0XSE9PXZvaWQgMCYmaVt0XS5pbmRleE9mKGUpIT09LTF9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUpe2lmKHRoaXMuX2xpc3RlbmVycz09PXZvaWQgMClyZXR1cm47bGV0IHI9dGhpcy5fbGlzdGVuZXJzW3RdO2lmKHIhPT12b2lkIDApe2xldCBzPXIuaW5kZXhPZihlKTtzIT09LTEmJnIuc3BsaWNlKHMsMSl9fWRpc3BhdGNoRXZlbnQodCl7aWYodGhpcy5fbGlzdGVuZXJzPT09dm9pZCAwKXJldHVybjtsZXQgaT10aGlzLl9saXN0ZW5lcnNbdC50eXBlXTtpZihpIT09dm9pZCAwKXt0LnRhcmdldD10aGlzO2xldCByPWkuc2xpY2UoMCk7Zm9yKGxldCBzPTAsbz1yLmxlbmd0aDtzPG87cysrKXJbc10uY2FsbCh0aGlzLHQpO3QudGFyZ2V0PW51bGx9fX0sdmU9W107Zm9yKGxldCBuPTA7bjwyNTY7bisrKXZlW25dPShuPDE2PyIwIjoiIikrbi50b1N0cmluZygxNik7dmFyIGV1PU1hdGguUEkvMTgwLGt1PTE4MC9NYXRoLlBJO2Z1bmN0aW9uIHRuKCl7bGV0IG49TWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1fDAsdD1NYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTV8MCxlPU1hdGgucmFuZG9tKCkqNDI5NDk2NzI5NXwwLGk9TWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1fDA7cmV0dXJuKHZlW24mMjU1XSt2ZVtuPj44JjI1NV0rdmVbbj4+MTYmMjU1XSt2ZVtuPj4yNCYyNTVdKyItIit2ZVt0JjI1NV0rdmVbdD4+OCYyNTVdKyItIit2ZVt0Pj4xNiYxNXw2NF0rdmVbdD4+MjQmMjU1XSsiLSIrdmVbZSY2M3wxMjhdK3ZlW2U+PjgmMjU1XSsiLSIrdmVbZT4+MTYmMjU1XSt2ZVtlPj4yNCYyNTVdK3ZlW2kmMjU1XSt2ZVtpPj44JjI1NV0rdmVbaT4+MTYmMjU1XSt2ZVtpPj4yNCYyNTVdKS50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIEllKG4sdCxlKXtyZXR1cm4gTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKX1mdW5jdGlvbiBHdyhuLHQpe3JldHVybihuJXQrdCkldH1mdW5jdGlvbiBudShuLHQsZSl7cmV0dXJuKDEtZSkqbitlKnR9ZnVuY3Rpb24gZWcobil7cmV0dXJuKG4mbi0xKT09PTAmJm4hPT0wfWZ1bmN0aW9uIFd3KG4pe3JldHVybiBNYXRoLnBvdygyLE1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5MTjIpKX12YXIgSz1jbGFzc3tjb25zdHJ1Y3Rvcih0PTAsZT0wKXt0aGlzLng9dCx0aGlzLnk9ZX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy54fXNldCB3aWR0aCh0KXt0aGlzLng9dH1nZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMueX1zZXQgaGVpZ2h0KHQpe3RoaXMueT10fXNldCh0LGUpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9ZSx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnkpfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzfWFkZCh0LGUpe3JldHVybiBlIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXN9ZGl2aWRlKHQpe3JldHVybiB0aGlzLngvPXQueCx0aGlzLnkvPXQueSx0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfWFwcGx5TWF0cml4Myh0KXtsZXQgZT10aGlzLngsaT10aGlzLnkscj10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9clswXSplK3JbM10qaStyWzZdLHRoaXMueT1yWzFdKmUrcls0XSppK3JbN10sdGhpc31taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzfWNsYW1wTGVuZ3RoKHQsZSl7bGV0IGk9dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoaXx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLGkpKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtsZXQgZT10aGlzLngtdC54LGk9dGhpcy55LXQueTtyZXR1cm4gZSplK2kqaX1tYW5oYXR0YW5EaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLngtdC54KStNYXRoLmFicyh0aGlzLnktdC55KX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsaSl7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKmksdGhpcy55PXQueSsoZS55LXQueSkqaSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnl9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsaSl7cmV0dXJuIGkhPT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzfXJvdGF0ZUFyb3VuZCh0LGUpe2xldCBpPU1hdGguY29zKGUpLHI9TWF0aC5zaW4oZSkscz10aGlzLngtdC54LG89dGhpcy55LXQueTtyZXR1cm4gdGhpcy54PXMqaS1vKnIrdC54LHRoaXMueT1zKnIrbyppK3QueSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzfSpbU3ltYm9sLml0ZXJhdG9yXSgpe3lpZWxkIHRoaXMueCx5aWVsZCB0aGlzLnl9fTtLLnByb3RvdHlwZS5pc1ZlY3RvcjI9ITA7dmFyIGRlPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwxLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLGkscixzLG8sYSxsLGMpe2xldCB1PXRoaXMuZWxlbWVudHM7cmV0dXJuIHVbMF09dCx1WzFdPXIsdVsyXT1hLHVbM109ZSx1WzRdPXMsdVs1XT1sLHVbNl09aSx1WzddPW8sdVs4XT1jLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwxLDAsMCwwLDEpLHRoaXN9Y29weSh0KXtsZXQgZT10aGlzLmVsZW1lbnRzLGk9dC5lbGVtZW50cztyZXR1cm4gZVswXT1pWzBdLGVbMV09aVsxXSxlWzJdPWlbMl0sZVszXT1pWzNdLGVbNF09aVs0XSxlWzVdPWlbNV0sZVs2XT1pWzZdLGVbN109aVs3XSxlWzhdPWlbOF0sdGhpc31leHRyYWN0QmFzaXModCxlLGkpe3JldHVybiB0LnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDEpLGkuc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywyKSx0aGlzfXNldEZyb21NYXRyaXg0KHQpe2xldCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVs0XSxlWzhdLGVbMV0sZVs1XSxlWzldLGVbMl0sZVs2XSxlWzEwXSksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtsZXQgaT10LmVsZW1lbnRzLHI9ZS5lbGVtZW50cyxzPXRoaXMuZWxlbWVudHMsbz1pWzBdLGE9aVszXSxsPWlbNl0sYz1pWzFdLHU9aVs0XSxoPWlbN10sZj1pWzJdLGQ9aVs1XSxnPWlbOF0seD1yWzBdLHY9clszXSxtPXJbNl0scD1yWzFdLGI9cls0XSxfPXJbN10sUz1yWzJdLEw9cls1XSxBPXJbOF07cmV0dXJuIHNbMF09byp4K2EqcCtsKlMsc1szXT1vKnYrYSpiK2wqTCxzWzZdPW8qbSthKl8rbCpBLHNbMV09Yyp4K3UqcCtoKlMsc1s0XT1jKnYrdSpiK2gqTCxzWzddPWMqbSt1Kl8raCpBLHNbMl09Zip4K2QqcCtnKlMsc1s1XT1mKnYrZCpiK2cqTCxzWzhdPWYqbStkKl8rZypBLHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7bGV0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzNdKj10LGVbNl0qPXQsZVsxXSo9dCxlWzRdKj10LGVbN10qPXQsZVsyXSo9dCxlWzVdKj10LGVbOF0qPXQsdGhpc31kZXRlcm1pbmFudCgpe2xldCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLGk9dFsxXSxyPXRbMl0scz10WzNdLG89dFs0XSxhPXRbNV0sbD10WzZdLGM9dFs3XSx1PXRbOF07cmV0dXJuIGUqbyp1LWUqYSpjLWkqcyp1K2kqYSpsK3IqcypjLXIqbypsfWludmVydCgpe2xldCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLGk9dFsxXSxyPXRbMl0scz10WzNdLG89dFs0XSxhPXRbNV0sbD10WzZdLGM9dFs3XSx1PXRbOF0saD11Km8tYSpjLGY9YSpsLXUqcyxkPWMqcy1vKmwsZz1lKmgraSpmK3IqZDtpZihnPT09MClyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMCwwLDAsMCwwLDApO2xldCB4PTEvZztyZXR1cm4gdFswXT1oKngsdFsxXT0ocipjLXUqaSkqeCx0WzJdPShhKmktcipvKSp4LHRbM109Zip4LHRbNF09KHUqZS1yKmwpKngsdFs1XT0ocipzLWEqZSkqeCx0WzZdPWQqeCx0WzddPShpKmwtYyplKSp4LHRbOF09KG8qZS1pKnMpKngsdGhpc310cmFuc3Bvc2UoKXtsZXQgdCxlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQ9ZVsxXSxlWzFdPWVbM10sZVszXT10LHQ9ZVsyXSxlWzJdPWVbNl0sZVs2XT10LHQ9ZVs1XSxlWzVdPWVbN10sZVs3XT10LHRoaXN9Z2V0Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLnNldEZyb21NYXRyaXg0KHQpLmludmVydCgpLnRyYW5zcG9zZSgpfXRyYW5zcG9zZUludG9BcnJheSh0KXtsZXQgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0WzBdPWVbMF0sdFsxXT1lWzNdLHRbMl09ZVs2XSx0WzNdPWVbMV0sdFs0XT1lWzRdLHRbNV09ZVs3XSx0WzZdPWVbMl0sdFs3XT1lWzVdLHRbOF09ZVs4XSx0aGlzfXNldFV2VHJhbnNmb3JtKHQsZSxpLHIscyxvLGEpe2xldCBsPU1hdGguY29zKHMpLGM9TWF0aC5zaW4ocyk7cmV0dXJuIHRoaXMuc2V0KGkqbCxpKmMsLWkqKGwqbytjKmEpK28rdCwtcipjLHIqbCwtciooLWMqbytsKmEpK2ErZSwwLDAsMSksdGhpc31zY2FsZSh0LGUpe2xldCBpPXRoaXMuZWxlbWVudHM7cmV0dXJuIGlbMF0qPXQsaVszXSo9dCxpWzZdKj10LGlbMV0qPWUsaVs0XSo9ZSxpWzddKj1lLHRoaXN9cm90YXRlKHQpe2xldCBlPU1hdGguY29zKHQpLGk9TWF0aC5zaW4odCkscj10aGlzLmVsZW1lbnRzLHM9clswXSxvPXJbM10sYT1yWzZdLGw9clsxXSxjPXJbNF0sdT1yWzddO3JldHVybiByWzBdPWUqcytpKmwsclszXT1lKm8raSpjLHJbNl09ZSphK2kqdSxyWzFdPS1pKnMrZSpsLHJbNF09LWkqbytlKmMscls3XT0taSphK2UqdSx0aGlzfXRyYW5zbGF0ZSh0LGUpe2xldCBpPXRoaXMuZWxlbWVudHM7cmV0dXJuIGlbMF0rPXQqaVsyXSxpWzNdKz10KmlbNV0saVs2XSs9dCppWzhdLGlbMV0rPWUqaVsyXSxpWzRdKz1lKmlbNV0saVs3XSs9ZSppWzhdLHRoaXN9ZXF1YWxzKHQpe2xldCBlPXRoaXMuZWxlbWVudHMsaT10LmVsZW1lbnRzO2ZvcihsZXQgcj0wO3I8OTtyKyspaWYoZVtyXSE9PWlbcl0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsZT0wKXtmb3IobGV0IGk9MDtpPDk7aSsrKXRoaXMuZWxlbWVudHNbaV09dFtpK2VdO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2xldCBpPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09aVswXSx0W2UrMV09aVsxXSx0W2UrMl09aVsyXSx0W2UrM109aVszXSx0W2UrNF09aVs0XSx0W2UrNV09aVs1XSx0W2UrNl09aVs2XSx0W2UrN109aVs3XSx0W2UrOF09aVs4XSx0fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfX07ZGUucHJvdG90eXBlLmlzTWF0cml4Mz0hMDtmdW5jdGlvbiBmMChuKXtmb3IobGV0IHQ9bi5sZW5ndGgtMTt0Pj0wOy0tdClpZihuW3RdPjY1NTM1KXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGlvKG4pe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLG4pfXZhciBkMD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSwkZT17aDowLHM6MCxsOjB9LHlhPXtoOjAsczowLGw6MH07ZnVuY3Rpb24gaXUobix0LGUpe3JldHVybiBlPDAmJihlKz0xKSxlPjEmJihlLT0xKSxlPDEvNj9uKyh0LW4pKjYqZTplPDEvMj90OmU8Mi8zP24rKHQtbikqNiooMi8zLWUpOm59ZnVuY3Rpb24gQnIobil7cmV0dXJuIG48LjA0MDQ1P24qLjA3NzM5OTM4MDg6TWF0aC5wb3cobiouOTQ3ODY3Mjk4NisuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIHJ1KG4pe3JldHVybiBuPC4wMDMxMzA4P24qMTIuOTI6MS4wNTUqTWF0aC5wb3cobiwuNDE2NjYpLS4wNTV9dmFyIGZ0PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxpKXtyZXR1cm4gZT09PXZvaWQgMCYmaT09PXZvaWQgMD90aGlzLnNldCh0KTp0aGlzLnNldFJHQih0LGUsaSl9c2V0KHQpe3JldHVybiB0JiZ0LmlzQ29sb3I/dGhpcy5jb3B5KHQpOnR5cGVvZiB0PT0ibnVtYmVyIj90aGlzLnNldEhleCh0KTp0eXBlb2YgdD09InN0cmluZyImJnRoaXMuc2V0U3R5bGUodCksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMucj10LHRoaXMuZz10LHRoaXMuYj10LHRoaXN9c2V0SGV4KHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksdGhpcy5yPSh0Pj4xNiYyNTUpLzI1NSx0aGlzLmc9KHQ+PjgmMjU1KS8yNTUsdGhpcy5iPSh0JjI1NSkvMjU1LHRoaXN9c2V0UkdCKHQsZSxpKXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPWksdGhpc31zZXRIU0wodCxlLGkpe2lmKHQ9R3codCwxKSxlPUllKGUsMCwxKSxpPUllKGksMCwxKSxlPT09MCl0aGlzLnI9dGhpcy5nPXRoaXMuYj1pO2Vsc2V7bGV0IHI9aTw9LjU/aSooMStlKTppK2UtaSplLHM9MippLXI7dGhpcy5yPWl1KHMscix0KzEvMyksdGhpcy5nPWl1KHMscix0KSx0aGlzLmI9aXUocyxyLHQtMS8zKX1yZXR1cm4gdGhpc31zZXRTdHlsZSh0KXtmdW5jdGlvbiBlKHIpe3IhPT12b2lkIDAmJnBhcnNlRmxvYXQocik8MSYmY29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogQWxwaGEgY29tcG9uZW50IG9mICIrdCsiIHdpbGwgYmUgaWdub3JlZC4iKX1sZXQgaTtpZihpPS9eKCg/OnJnYnxoc2wpYT8pXCgoW15cKV0qKVwpLy5leGVjKHQpKXtsZXQgcixzPWlbMV0sbz1pWzJdO3N3aXRjaChzKXtjYXNlInJnYiI6Y2FzZSJyZ2JhIjppZihyPS9eXHMqKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigyNTUscGFyc2VJbnQoclsxXSwxMCkpLzI1NSx0aGlzLmc9TWF0aC5taW4oMjU1LHBhcnNlSW50KHJbMl0sMTApKS8yNTUsdGhpcy5iPU1hdGgubWluKDI1NSxwYXJzZUludChyWzNdLDEwKSkvMjU1LGUocls0XSksdGhpcztpZihyPS9eXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMobykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigxMDAscGFyc2VJbnQoclsxXSwxMCkpLzEwMCx0aGlzLmc9TWF0aC5taW4oMTAwLHBhcnNlSW50KHJbMl0sMTApKS8xMDAsdGhpcy5iPU1hdGgubWluKDEwMCxwYXJzZUludChyWzNdLDEwKSkvMTAwLGUocls0XSksdGhpczticmVhaztjYXNlImhzbCI6Y2FzZSJoc2xhIjppZihyPS9eXHMqKFxkKlwuP1xkKylccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKG8pKXtsZXQgYT1wYXJzZUZsb2F0KHJbMV0pLzM2MCxsPXBhcnNlSW50KHJbMl0sMTApLzEwMCxjPXBhcnNlSW50KHJbM10sMTApLzEwMDtyZXR1cm4gZShyWzRdKSx0aGlzLnNldEhTTChhLGwsYyl9YnJlYWt9fWVsc2UgaWYoaT0vXlwjKFtBLUZhLWZcZF0rKSQvLmV4ZWModCkpe2xldCByPWlbMV0scz1yLmxlbmd0aDtpZihzPT09MylyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHIuY2hhckF0KDApK3IuY2hhckF0KDApLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHIuY2hhckF0KDEpK3IuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHIuY2hhckF0KDIpK3IuY2hhckF0KDIpLDE2KS8yNTUsdGhpcztpZihzPT09NilyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHIuY2hhckF0KDApK3IuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHIuY2hhckF0KDIpK3IuY2hhckF0KDMpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHIuY2hhckF0KDQpK3IuY2hhckF0KDUpLDE2KS8yNTUsdGhpc31yZXR1cm4gdCYmdC5sZW5ndGg+MD90aGlzLnNldENvbG9yTmFtZSh0KTp0aGlzfXNldENvbG9yTmFtZSh0KXtsZXQgZT1kMFt0LnRvTG93ZXJDYXNlKCldO3JldHVybiBlIT09dm9pZCAwP3RoaXMuc2V0SGV4KGUpOmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IFVua25vd24gY29sb3IgIit0KSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMucix0aGlzLmcsdGhpcy5iKX1jb3B5KHQpe3JldHVybiB0aGlzLnI9dC5yLHRoaXMuZz10LmcsdGhpcy5iPXQuYix0aGlzfWNvcHlTUkdCVG9MaW5lYXIodCl7cmV0dXJuIHRoaXMucj1Ccih0LnIpLHRoaXMuZz1Ccih0LmcpLHRoaXMuYj1Ccih0LmIpLHRoaXN9Y29weUxpbmVhclRvU1JHQih0KXtyZXR1cm4gdGhpcy5yPXJ1KHQuciksdGhpcy5nPXJ1KHQuZyksdGhpcy5iPXJ1KHQuYiksdGhpc31jb252ZXJ0U1JHQlRvTGluZWFyKCl7cmV0dXJuIHRoaXMuY29weVNSR0JUb0xpbmVhcih0aGlzKSx0aGlzfWNvbnZlcnRMaW5lYXJUb1NSR0IoKXtyZXR1cm4gdGhpcy5jb3B5TGluZWFyVG9TUkdCKHRoaXMpLHRoaXN9Z2V0SGV4KCl7cmV0dXJuIHRoaXMucioyNTU8PDE2XnRoaXMuZyoyNTU8PDhedGhpcy5iKjI1NTw8MH1nZXRIZXhTdHJpbmcoKXtyZXR1cm4oIjAwMDAwMCIrdGhpcy5nZXRIZXgoKS50b1N0cmluZygxNikpLnNsaWNlKC02KX1nZXRIU0wodCl7bGV0IGU9dGhpcy5yLGk9dGhpcy5nLHI9dGhpcy5iLHM9TWF0aC5tYXgoZSxpLHIpLG89TWF0aC5taW4oZSxpLHIpLGEsbCxjPShvK3MpLzI7aWYobz09PXMpYT0wLGw9MDtlbHNle2xldCB1PXMtbztzd2l0Y2gobD1jPD0uNT91LyhzK28pOnUvKDItcy1vKSxzKXtjYXNlIGU6YT0oaS1yKS91KyhpPHI/NjowKTticmVhaztjYXNlIGk6YT0oci1lKS91KzI7YnJlYWs7Y2FzZSByOmE9KGUtaSkvdSs0O2JyZWFrfWEvPTZ9cmV0dXJuIHQuaD1hLHQucz1sLHQubD1jLHR9Z2V0U3R5bGUoKXtyZXR1cm4icmdiKCIrKHRoaXMucioyNTV8MCkrIiwiKyh0aGlzLmcqMjU1fDApKyIsIisodGhpcy5iKjI1NXwwKSsiKSJ9b2Zmc2V0SFNMKHQsZSxpKXtyZXR1cm4gdGhpcy5nZXRIU0woJGUpLCRlLmgrPXQsJGUucys9ZSwkZS5sKz1pLHRoaXMuc2V0SFNMKCRlLmgsJGUucywkZS5sKSx0aGlzfWFkZCh0KXtyZXR1cm4gdGhpcy5yKz10LnIsdGhpcy5nKz10LmcsdGhpcy5iKz10LmIsdGhpc31hZGRDb2xvcnModCxlKXtyZXR1cm4gdGhpcy5yPXQucitlLnIsdGhpcy5nPXQuZytlLmcsdGhpcy5iPXQuYitlLmIsdGhpc31hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMucis9dCx0aGlzLmcrPXQsdGhpcy5iKz10LHRoaXN9c3ViKHQpe3JldHVybiB0aGlzLnI9TWF0aC5tYXgoMCx0aGlzLnItdC5yKSx0aGlzLmc9TWF0aC5tYXgoMCx0aGlzLmctdC5nKSx0aGlzLmI9TWF0aC5tYXgoMCx0aGlzLmItdC5iKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLnIqPXQucix0aGlzLmcqPXQuZyx0aGlzLmIqPXQuYix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLnIqPXQsdGhpcy5nKj10LHRoaXMuYio9dCx0aGlzfWxlcnAodCxlKXtyZXR1cm4gdGhpcy5yKz0odC5yLXRoaXMucikqZSx0aGlzLmcrPSh0LmctdGhpcy5nKSplLHRoaXMuYis9KHQuYi10aGlzLmIpKmUsdGhpc31sZXJwQ29sb3JzKHQsZSxpKXtyZXR1cm4gdGhpcy5yPXQucisoZS5yLXQucikqaSx0aGlzLmc9dC5nKyhlLmctdC5nKSppLHRoaXMuYj10LmIrKGUuYi10LmIpKmksdGhpc31sZXJwSFNMKHQsZSl7dGhpcy5nZXRIU0woJGUpLHQuZ2V0SFNMKHlhKTtsZXQgaT1udSgkZS5oLHlhLmgsZSkscj1udSgkZS5zLHlhLnMsZSkscz1udSgkZS5sLHlhLmwsZSk7cmV0dXJuIHRoaXMuc2V0SFNMKGkscixzKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5yPT09dGhpcy5yJiZ0Lmc9PT10aGlzLmcmJnQuYj09PXRoaXMuYn1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLnI9dFtlXSx0aGlzLmc9dFtlKzFdLHRoaXMuYj10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLnIsdFtlKzFdPXRoaXMuZyx0W2UrMl09dGhpcy5iLHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLnI9dC5nZXRYKGUpLHRoaXMuZz10LmdldFkoZSksdGhpcy5iPXQuZ2V0WihlKSx0Lm5vcm1hbGl6ZWQ9PT0hMCYmKHRoaXMuci89MjU1LHRoaXMuZy89MjU1LHRoaXMuYi89MjU1KSx0aGlzfXRvSlNPTigpe3JldHVybiB0aGlzLmdldEhleCgpfX07ZnQuTkFNRVM9ZDA7ZnQucHJvdG90eXBlLmlzQ29sb3I9ITA7ZnQucHJvdG90eXBlLnI9MTtmdC5wcm90b3R5cGUuZz0xO2Z0LnByb3RvdHlwZS5iPTE7dmFyIGRyLE5uPWNsYXNze3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKXx8dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50PT0idW5kZWZpbmVkIilyZXR1cm4gdC5zcmM7bGV0IGU7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KWU9dDtlbHNle2RyPT09dm9pZCAwJiYoZHI9aW8oImNhbnZhcyIpKSxkci53aWR0aD10LndpZHRoLGRyLmhlaWdodD10LmhlaWdodDtsZXQgaT1kci5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/aS5wdXRJbWFnZURhdGEodCwwLDApOmkuZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLGU9ZHJ9cmV0dXJuIGUud2lkdGg+MjA0OHx8ZS5oZWlnaHQ+MjA0OD8oY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmdldERhdGFVUkw6IEltYWdlIGNvbnZlcnRlZCB0byBqcGcgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMiLHQpLGUudG9EYXRhVVJMKCJpbWFnZS9qcGVnIiwuNikpOmUudG9EYXRhVVJMKCJpbWFnZS9wbmciKX1zdGF0aWMgc1JHQlRvTGluZWFyKHQpe2lmKHR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50IT0idW5kZWZpbmVkIiYmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fHR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCE9InVuZGVmaW5lZCImJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8dHlwZW9mIEltYWdlQml0bWFwIT0idW5kZWZpbmVkIiYmdCBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXtsZXQgZT1pbygiY2FudmFzIik7ZS53aWR0aD10LndpZHRoLGUuaGVpZ2h0PXQuaGVpZ2h0O2xldCBpPWUuZ2V0Q29udGV4dCgiMmQiKTtpLmRyYXdJbWFnZSh0LDAsMCx0LndpZHRoLHQuaGVpZ2h0KTtsZXQgcj1pLmdldEltYWdlRGF0YSgwLDAsdC53aWR0aCx0LmhlaWdodCkscz1yLmRhdGE7Zm9yKGxldCBvPTA7bzxzLmxlbmd0aDtvKyspc1tvXT1CcihzW29dLzI1NSkqMjU1O3JldHVybiBpLnB1dEltYWdlRGF0YShyLDAsMCksZX1lbHNlIGlmKHQuZGF0YSl7bGV0IGU9dC5kYXRhLnNsaWNlKDApO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKWUgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxlIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXk/ZVtpXT1NYXRoLmZsb29yKEJyKGVbaV0vMjU1KSoyNTUpOmVbaV09QnIoZVtpXSk7cmV0dXJue2RhdGE6ZSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19ZWxzZSByZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLnNSR0JUb0xpbmVhcigpOiBVbnN1cHBvcnRlZCBpbWFnZSB0eXBlLiBObyBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGFwcGxpZWQuIiksdH19LHF3PTAsYWU9Y2xhc3MgZXh0ZW5kcyBJbntjb25zdHJ1Y3Rvcih0PWFlLkRFRkFVTFRfSU1BR0UsZT1hZS5ERUZBVUxUX01BUFBJTkcsaT1WZSxyPVZlLHM9YmUsbz1SbCxhPVJlLGw9ZWksYz0xLHU9cmkpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6cXcrK30pLHRoaXMudXVpZD10bigpLHRoaXMubmFtZT0iIix0aGlzLmltYWdlPXQsdGhpcy5taXBtYXBzPVtdLHRoaXMubWFwcGluZz1lLHRoaXMud3JhcFM9aSx0aGlzLndyYXBUPXIsdGhpcy5tYWdGaWx0ZXI9cyx0aGlzLm1pbkZpbHRlcj1vLHRoaXMuYW5pc290cm9weT1jLHRoaXMuZm9ybWF0PWEsdGhpcy5pbnRlcm5hbEZvcm1hdD1udWxsLHRoaXMudHlwZT1sLHRoaXMub2Zmc2V0PW5ldyBLKDAsMCksdGhpcy5yZXBlYXQ9bmV3IEsoMSwxKSx0aGlzLmNlbnRlcj1uZXcgSygwLDApLHRoaXMucm90YXRpb249MCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITAsdGhpcy5tYXRyaXg9bmV3IGRlLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSEwLHRoaXMucHJlbXVsdGlwbHlBbHBoYT0hMSx0aGlzLmZsaXBZPSEwLHRoaXMudW5wYWNrQWxpZ25tZW50PTQsdGhpcy5lbmNvZGluZz11LHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTAsdGhpcy5vblVwZGF0ZT1udWxsLHRoaXMuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSExLHRoaXMubmVlZHNQTVJFTVVwZGF0ZT0hMX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5zZXRVdlRyYW5zZm9ybSh0aGlzLm9mZnNldC54LHRoaXMub2Zmc2V0LnksdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55LHRoaXMucm90YXRpb24sdGhpcy5jZW50ZXIueCx0aGlzLmNlbnRlci55KX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmltYWdlPXQuaW1hZ2UsdGhpcy5taXBtYXBzPXQubWlwbWFwcy5zbGljZSgwKSx0aGlzLm1hcHBpbmc9dC5tYXBwaW5nLHRoaXMud3JhcFM9dC53cmFwUyx0aGlzLndyYXBUPXQud3JhcFQsdGhpcy5tYWdGaWx0ZXI9dC5tYWdGaWx0ZXIsdGhpcy5taW5GaWx0ZXI9dC5taW5GaWx0ZXIsdGhpcy5hbmlzb3Ryb3B5PXQuYW5pc290cm9weSx0aGlzLmZvcm1hdD10LmZvcm1hdCx0aGlzLmludGVybmFsRm9ybWF0PXQuaW50ZXJuYWxGb3JtYXQsdGhpcy50eXBlPXQudHlwZSx0aGlzLm9mZnNldC5jb3B5KHQub2Zmc2V0KSx0aGlzLnJlcGVhdC5jb3B5KHQucmVwZWF0KSx0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeC5jb3B5KHQubWF0cml4KSx0aGlzLmdlbmVyYXRlTWlwbWFwcz10LmdlbmVyYXRlTWlwbWFwcyx0aGlzLnByZW11bHRpcGx5QWxwaGE9dC5wcmVtdWx0aXBseUFscGhhLHRoaXMuZmxpcFk9dC5mbGlwWSx0aGlzLnVucGFja0FsaWdubWVudD10LnVucGFja0FsaWdubWVudCx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSx0aGlzfXRvSlNPTih0KXtsZXQgZT10PT09dm9pZCAwfHx0eXBlb2YgdD09InN0cmluZyI7aWYoIWUmJnQudGV4dHVyZXNbdGhpcy51dWlkXSE9PXZvaWQgMClyZXR1cm4gdC50ZXh0dXJlc1t0aGlzLnV1aWRdO2xldCBpPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiVGV4dHVyZSIsZ2VuZXJhdG9yOiJUZXh0dXJlLnRvSlNPTiJ9LHV1aWQ6dGhpcy51dWlkLG5hbWU6dGhpcy5uYW1lLG1hcHBpbmc6dGhpcy5tYXBwaW5nLHJlcGVhdDpbdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55XSxvZmZzZXQ6W3RoaXMub2Zmc2V0LngsdGhpcy5vZmZzZXQueV0sY2VudGVyOlt0aGlzLmNlbnRlci54LHRoaXMuY2VudGVyLnldLHJvdGF0aW9uOnRoaXMucm90YXRpb24sd3JhcDpbdGhpcy53cmFwUyx0aGlzLndyYXBUXSxmb3JtYXQ6dGhpcy5mb3JtYXQsdHlwZTp0aGlzLnR5cGUsZW5jb2Rpbmc6dGhpcy5lbmNvZGluZyxtaW5GaWx0ZXI6dGhpcy5taW5GaWx0ZXIsbWFnRmlsdGVyOnRoaXMubWFnRmlsdGVyLGFuaXNvdHJvcHk6dGhpcy5hbmlzb3Ryb3B5LGZsaXBZOnRoaXMuZmxpcFkscHJlbXVsdGlwbHlBbHBoYTp0aGlzLnByZW11bHRpcGx5QWxwaGEsdW5wYWNrQWxpZ25tZW50OnRoaXMudW5wYWNrQWxpZ25tZW50fTtpZih0aGlzLmltYWdlIT09dm9pZCAwKXtsZXQgcj10aGlzLmltYWdlO2lmKHIudXVpZD09PXZvaWQgMCYmKHIudXVpZD10bigpKSwhZSYmdC5pbWFnZXNbci51dWlkXT09PXZvaWQgMCl7bGV0IHM7aWYoQXJyYXkuaXNBcnJheShyKSl7cz1bXTtmb3IobGV0IG89MCxhPXIubGVuZ3RoO288YTtvKyspcltvXS5pc0RhdGFUZXh0dXJlP3MucHVzaChzdShyW29dLmltYWdlKSk6cy5wdXNoKHN1KHJbb10pKX1lbHNlIHM9c3Uocik7dC5pbWFnZXNbci51dWlkXT17dXVpZDpyLnV1aWQsdXJsOnN9fWkuaW1hZ2U9ci51dWlkfXJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSE9PSJ7fSImJihpLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLGV8fCh0LnRleHR1cmVzW3RoaXMudXVpZF09aSksaX1kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfXRyYW5zZm9ybVV2KHQpe2lmKHRoaXMubWFwcGluZyE9PXUwKXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgVXU6dC54PXQueC1NYXRoLmZsb29yKHQueCk7YnJlYWs7Y2FzZSBWZTp0Lng9dC54PDA/MDoxO2JyZWFrO2Nhc2UgQnU6TWF0aC5hYnMoTWF0aC5mbG9vcih0LngpJTIpPT09MT90Lng9TWF0aC5jZWlsKHQueCktdC54OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrfWlmKHQueTwwfHx0Lnk+MSlzd2l0Y2godGhpcy53cmFwVCl7Y2FzZSBVdTp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIFZlOnQueT10Lnk8MD8wOjE7YnJlYWs7Y2FzZSBCdTpNYXRoLmFicyhNYXRoLmZsb29yKHQueSklMik9PT0xP3QueT1NYXRoLmNlaWwodC55KS10Lnk6dC55PXQueS1NYXRoLmZsb29yKHQueSk7YnJlYWt9cmV0dXJuIHRoaXMuZmxpcFkmJih0Lnk9MS10LnkpLHR9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9fTthZS5ERUZBVUxUX0lNQUdFPXZvaWQgMDthZS5ERUZBVUxUX01BUFBJTkc9dTA7YWUucHJvdG90eXBlLmlzVGV4dHVyZT0hMDtmdW5jdGlvbiBzdShuKXtyZXR1cm4gdHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQhPSJ1bmRlZmluZWQiJiZuIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50IT0idW5kZWZpbmVkIiYmbiBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHx0eXBlb2YgSW1hZ2VCaXRtYXAhPSJ1bmRlZmluZWQiJiZuIGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/Tm4uZ2V0RGF0YVVSTChuKTpuLmRhdGE/e2RhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobi5kYXRhKSx3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCx0eXBlOm4uZGF0YS5jb25zdHJ1Y3Rvci5uYW1lfTooY29uc29sZS53YXJuKCJUSFJFRS5UZXh0dXJlOiBVbmFibGUgdG8gc2VyaWFsaXplIFRleHR1cmUuIikse30pfXZhciBXdD1jbGFzc3tjb25zdHJ1Y3Rvcih0PTAsZT0wLGk9MCxyPTEpe3RoaXMueD10LHRoaXMueT1lLHRoaXMuej1pLHRoaXMudz1yfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnp9c2V0IHdpZHRoKHQpe3RoaXMuej10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy53fXNldCBoZWlnaHQodCl7dGhpcy53PXR9c2V0KHQsZSxpLHIpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9aSx0aGlzLnc9cix0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpcy53PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRXKHQpe3JldHVybiB0aGlzLnc9dCx0aGlzfXNldENvbXBvbmVudCh0LGUpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PWU7YnJlYWs7Y2FzZSAxOnRoaXMueT1lO2JyZWFrO2Nhc2UgMjp0aGlzLno9ZTticmVhaztjYXNlIDM6dGhpcy53PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2Nhc2UgMzpyZXR1cm4gdGhpcy53O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56LHRoaXMudyl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpcy53PXQudyE9PXZvaWQgMD90Lnc6MSx0aGlzfWFkZCh0LGUpe3JldHVybiBlIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMudys9dC53LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpcy53Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzLno9dC56K2Uueix0aGlzLnc9dC53K2Uudyx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpcy56Kz10LnoqZSx0aGlzLncrPXQudyplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcy53LT10LncsdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzLnctPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXMuej10LnotZS56LHRoaXMudz10LnctZS53LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMudyo9dC53LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXMudyo9dCx0aGlzfWFwcGx5TWF0cml4NCh0KXtsZXQgZT10aGlzLngsaT10aGlzLnkscj10aGlzLnoscz10aGlzLncsbz10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9b1swXSplK29bNF0qaStvWzhdKnIrb1sxMl0qcyx0aGlzLnk9b1sxXSplK29bNV0qaStvWzldKnIrb1sxM10qcyx0aGlzLno9b1syXSplK29bNl0qaStvWzEwXSpyK29bMTRdKnMsdGhpcy53PW9bM10qZStvWzddKmkrb1sxMV0qcitvWzE1XSpzLHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9c2V0QXhpc0FuZ2xlRnJvbVF1YXRlcm5pb24odCl7dGhpcy53PTIqTWF0aC5hY29zKHQudyk7bGV0IGU9TWF0aC5zcXJ0KDEtdC53KnQudyk7cmV0dXJuIGU8MWUtND8odGhpcy54PTEsdGhpcy55PTAsdGhpcy56PTApOih0aGlzLng9dC54L2UsdGhpcy55PXQueS9lLHRoaXMuej10LnovZSksdGhpc31zZXRBeGlzQW5nbGVGcm9tUm90YXRpb25NYXRyaXgodCl7bGV0IGUsaSxyLHMsbD10LmVsZW1lbnRzLGM9bFswXSx1PWxbNF0saD1sWzhdLGY9bFsxXSxkPWxbNV0sZz1sWzldLHg9bFsyXSx2PWxbNl0sbT1sWzEwXTtpZihNYXRoLmFicyh1LWYpPC4wMSYmTWF0aC5hYnMoaC14KTwuMDEmJk1hdGguYWJzKGctdik8LjAxKXtpZihNYXRoLmFicyh1K2YpPC4xJiZNYXRoLmFicyhoK3gpPC4xJiZNYXRoLmFicyhnK3YpPC4xJiZNYXRoLmFicyhjK2QrbS0zKTwuMSlyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCksdGhpcztlPU1hdGguUEk7bGV0IGI9KGMrMSkvMixfPShkKzEpLzIsUz0obSsxKS8yLEw9KHUrZikvNCxBPShoK3gpLzQsSD0oZyt2KS80O3JldHVybiBiPl8mJmI+Uz9iPC4wMT8oaT0wLHI9LjcwNzEwNjc4MSxzPS43MDcxMDY3ODEpOihpPU1hdGguc3FydChiKSxyPUwvaSxzPUEvaSk6Xz5TP188LjAxPyhpPS43MDcxMDY3ODEscj0wLHM9LjcwNzEwNjc4MSk6KHI9TWF0aC5zcXJ0KF8pLGk9TC9yLHM9SC9yKTpTPC4wMT8oaT0uNzA3MTA2NzgxLHI9LjcwNzEwNjc4MSxzPTApOihzPU1hdGguc3FydChTKSxpPUEvcyxyPUgvcyksdGhpcy5zZXQoaSxyLHMsZSksdGhpc31sZXQgcD1NYXRoLnNxcnQoKHYtZykqKHYtZykrKGgteCkqKGgteCkrKGYtdSkqKGYtdSkpO3JldHVybiBNYXRoLmFicyhwKTwuMDAxJiYocD0xKSx0aGlzLng9KHYtZykvcCx0aGlzLnk9KGgteCkvcCx0aGlzLno9KGYtdSkvcCx0aGlzLnc9TWF0aC5hY29zKChjK2QrbS0xKS8yKSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpcy53PU1hdGgubWluKHRoaXMudyx0LncpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5tYXgodGhpcy53LHQudyksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodC53LE1hdGgubWluKGUudyx0aGlzLncpKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy53KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2xldCBpPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKGl8fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4oZSxpKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz1NYXRoLmZsb29yKHRoaXMudyksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXMudz1NYXRoLmNlaWwodGhpcy53KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXMudz1NYXRoLnJvdW5kKHRoaXMudyksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9dGhpcy53PDA/TWF0aC5jZWlsKHRoaXMudyk6TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXMuej0tdGhpcy56LHRoaXMudz0tdGhpcy53LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0LnkrdGhpcy56KnQueit0aGlzLncqdC53fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLnd9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpK01hdGguYWJzKHRoaXMueikrTWF0aC5hYnModGhpcy53KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxlKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqZSx0aGlzLnkrPSh0LnktdGhpcy55KSplLHRoaXMueis9KHQuei10aGlzLnopKmUsdGhpcy53Kz0odC53LXRoaXMudykqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxpKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqaSx0aGlzLnk9dC55KyhlLnktdC55KSppLHRoaXMuej10LnorKGUuei10LnopKmksdGhpcy53PXQudysoZS53LXQudykqaSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMueiYmdC53PT09dGhpcy53fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMueD10W2VdLHRoaXMueT10W2UrMV0sdGhpcy56PXRbZSsyXSx0aGlzLnc9dFtlKzNdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdFtlKzJdPXRoaXMueix0W2UrM109dGhpcy53LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsaSl7cmV0dXJuIGkhPT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzLno9dC5nZXRaKGUpLHRoaXMudz10LmdldFcoZSksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpcy53PU1hdGgucmFuZG9tKCksdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55LHlpZWxkIHRoaXMueix5aWVsZCB0aGlzLnd9fTtXdC5wcm90b3R5cGUuaXNWZWN0b3I0PSEwO3ZhciBOZT1jbGFzcyBleHRlbmRzIElue2NvbnN0cnVjdG9yKHQsZSxpPXt9KXtzdXBlcigpLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9MSx0aGlzLnNjaXNzb3I9bmV3IFd0KDAsMCx0LGUpLHRoaXMuc2Npc3NvclRlc3Q9ITEsdGhpcy52aWV3cG9ydD1uZXcgV3QoMCwwLHQsZSksdGhpcy50ZXh0dXJlPW5ldyBhZSh2b2lkIDAsaS5tYXBwaW5nLGkud3JhcFMsaS53cmFwVCxpLm1hZ0ZpbHRlcixpLm1pbkZpbHRlcixpLmZvcm1hdCxpLnR5cGUsaS5hbmlzb3Ryb3B5LGkuZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmltYWdlPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOjF9LHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9aS5nZW5lcmF0ZU1pcG1hcHMhPT12b2lkIDA/aS5nZW5lcmF0ZU1pcG1hcHM6ITEsdGhpcy50ZXh0dXJlLmludGVybmFsRm9ybWF0PWkuaW50ZXJuYWxGb3JtYXQhPT12b2lkIDA/aS5pbnRlcm5hbEZvcm1hdDpudWxsLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9aS5taW5GaWx0ZXIhPT12b2lkIDA/aS5taW5GaWx0ZXI6YmUsdGhpcy5kZXB0aEJ1ZmZlcj1pLmRlcHRoQnVmZmVyIT09dm9pZCAwP2kuZGVwdGhCdWZmZXI6ITAsdGhpcy5zdGVuY2lsQnVmZmVyPWkuc3RlbmNpbEJ1ZmZlciE9PXZvaWQgMD9pLnN0ZW5jaWxCdWZmZXI6ITEsdGhpcy5kZXB0aFRleHR1cmU9aS5kZXB0aFRleHR1cmUhPT12b2lkIDA/aS5kZXB0aFRleHR1cmU6bnVsbH1zZXRUZXh0dXJlKHQpe3QuaW1hZ2U9e3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0LGRlcHRoOnRoaXMuZGVwdGh9LHRoaXMudGV4dHVyZT10fXNldFNpemUodCxlLGk9MSl7KHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1pKSYmKHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9aSx0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlLmltYWdlLmRlcHRoPWksdGhpcy5kaXNwb3NlKCkpLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5jb3B5KHQudmlld3BvcnQpLHRoaXMudGV4dHVyZT10LnRleHR1cmUuY2xvbmUoKSx0aGlzLnRleHR1cmUuaW1hZ2U9T2JqZWN0LmFzc2lnbih7fSx0LnRleHR1cmUuaW1hZ2UpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19O05lLnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyVGFyZ2V0PSEwO3ZhciBIdT1jbGFzcyBleHRlbmRzIE5le2NvbnN0cnVjdG9yKHQsZSxpKXtzdXBlcih0LGUpO2xldCByPXRoaXMudGV4dHVyZTt0aGlzLnRleHR1cmU9W107Zm9yKGxldCBzPTA7czxpO3MrKyl0aGlzLnRleHR1cmVbc109ci5jbG9uZSgpfXNldFNpemUodCxlLGk9MSl7aWYodGhpcy53aWR0aCE9PXR8fHRoaXMuaGVpZ2h0IT09ZXx8dGhpcy5kZXB0aCE9PWkpe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1lLHRoaXMuZGVwdGg9aTtmb3IobGV0IHI9MCxzPXRoaXMudGV4dHVyZS5sZW5ndGg7cjxzO3IrKyl0aGlzLnRleHR1cmVbcl0uaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmVbcl0uaW1hZ2UuaGVpZ2h0PWUsdGhpcy50ZXh0dXJlW3JdLmltYWdlLmRlcHRoPWk7dGhpcy5kaXNwb3NlKCl9cmV0dXJuIHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSksdGhpc31jb3B5KHQpe3RoaXMuZGlzcG9zZSgpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXMudGV4dHVyZS5sZW5ndGg9MDtmb3IobGV0IGU9MCxpPXQudGV4dHVyZS5sZW5ndGg7ZTxpO2UrKyl0aGlzLnRleHR1cmVbZV09dC50ZXh0dXJlW2VdLmNsb25lKCk7cmV0dXJuIHRoaXN9fTtIdS5wcm90b3R5cGUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz0hMDt2YXIgcm89Y2xhc3MgZXh0ZW5kcyBOZXtjb25zdHJ1Y3Rvcih0LGUsaT17fSl7c3VwZXIodCxlLGkpLHRoaXMuc2FtcGxlcz00LHRoaXMuaWdub3JlRGVwdGhGb3JNdWx0aXNhbXBsZUNvcHk9aS5pZ25vcmVEZXB0aCE9PXZvaWQgMD9pLmlnbm9yZURlcHRoOiEwLHRoaXMudXNlUmVuZGVyVG9UZXh0dXJlPWkudXNlUmVuZGVyVG9UZXh0dXJlIT09dm9pZCAwP2kudXNlUmVuZGVyVG9UZXh0dXJlOiExLHRoaXMudXNlUmVuZGVyYnVmZmVyPXRoaXMudXNlUmVuZGVyVG9UZXh0dXJlPT09ITF9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weS5jYWxsKHRoaXMsdCksdGhpcy5zYW1wbGVzPXQuc2FtcGxlcyx0aGlzLnVzZVJlbmRlclRvVGV4dHVyZT10LnVzZVJlbmRlclRvVGV4dHVyZSx0aGlzLnVzZVJlbmRlcmJ1ZmZlcj10LnVzZVJlbmRlcmJ1ZmZlcix0aGlzfX07cm8ucHJvdG90eXBlLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD0hMDt2YXIgRWU9Y2xhc3N7Y29uc3RydWN0b3IodD0wLGU9MCxpPTAscj0xKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9aSx0aGlzLl93PXJ9c3RhdGljIHNsZXJwKHQsZSxpLHIpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IFN0YXRpYyAuc2xlcnAoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgcW0uc2xlcnBRdWF0ZXJuaW9ucyggcWEsIHFiLCB0ICkgaW5zdGVhZC4iKSxpLnNsZXJwUXVhdGVybmlvbnModCxlLHIpfXN0YXRpYyBzbGVycEZsYXQodCxlLGkscixzLG8sYSl7bGV0IGw9aVtyKzBdLGM9aVtyKzFdLHU9aVtyKzJdLGg9aVtyKzNdLGY9c1tvKzBdLGQ9c1tvKzFdLGc9c1tvKzJdLHg9c1tvKzNdO2lmKGE9PT0wKXt0W2UrMF09bCx0W2UrMV09Yyx0W2UrMl09dSx0W2UrM109aDtyZXR1cm59aWYoYT09PTEpe3RbZSswXT1mLHRbZSsxXT1kLHRbZSsyXT1nLHRbZSszXT14O3JldHVybn1pZihoIT09eHx8bCE9PWZ8fGMhPT1kfHx1IT09Zyl7bGV0IHY9MS1hLG09bCpmK2MqZCt1KmcraCp4LHA9bT49MD8xOi0xLGI9MS1tKm07aWYoYj5OdW1iZXIuRVBTSUxPTil7bGV0IFM9TWF0aC5zcXJ0KGIpLEw9TWF0aC5hdGFuMihTLG0qcCk7dj1NYXRoLnNpbih2KkwpL1MsYT1NYXRoLnNpbihhKkwpL1N9bGV0IF89YSpwO2lmKGw9bCp2K2YqXyxjPWMqditkKl8sdT11KnYrZypfLGg9aCp2K3gqXyx2PT09MS1hKXtsZXQgUz0xL01hdGguc3FydChsKmwrYypjK3UqdStoKmgpO2wqPVMsYyo9Uyx1Kj1TLGgqPVN9fXRbZV09bCx0W2UrMV09Yyx0W2UrMl09dSx0W2UrM109aH1zdGF0aWMgbXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxlLGkscixzLG8pe2xldCBhPWlbcl0sbD1pW3IrMV0sYz1pW3IrMl0sdT1pW3IrM10saD1zW29dLGY9c1tvKzFdLGQ9c1tvKzJdLGc9c1tvKzNdO3JldHVybiB0W2VdPWEqZyt1KmgrbCpkLWMqZix0W2UrMV09bCpnK3UqZitjKmgtYSpkLHRbZSsyXT1jKmcrdSpkK2EqZi1sKmgsdFtlKzNdPXUqZy1hKmgtbCpmLWMqZCx0fWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB3KCl7cmV0dXJuIHRoaXMuX3d9c2V0IHcodCl7dGhpcy5fdz10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxlLGkscil7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PWUsdGhpcy5fej1pLHRoaXMuX3c9cix0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl93KX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQueCx0aGlzLl95PXQueSx0aGlzLl96PXQueix0aGlzLl93PXQudyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tRXVsZXIodCxlKXtpZighKHQmJnQuaXNFdWxlcikpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtsZXQgaT10Ll94LHI9dC5feSxzPXQuX3osbz10Ll9vcmRlcixhPU1hdGguY29zLGw9TWF0aC5zaW4sYz1hKGkvMiksdT1hKHIvMiksaD1hKHMvMiksZj1sKGkvMiksZD1sKHIvMiksZz1sKHMvMik7c3dpdGNoKG8pe2Nhc2UiWFlaIjp0aGlzLl94PWYqdSpoK2MqZCpnLHRoaXMuX3k9YypkKmgtZip1KmcsdGhpcy5fej1jKnUqZytmKmQqaCx0aGlzLl93PWMqdSpoLWYqZCpnO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PWYqdSpoK2MqZCpnLHRoaXMuX3k9YypkKmgtZip1KmcsdGhpcy5fej1jKnUqZy1mKmQqaCx0aGlzLl93PWMqdSpoK2YqZCpnO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PWYqdSpoLWMqZCpnLHRoaXMuX3k9YypkKmgrZip1KmcsdGhpcy5fej1jKnUqZytmKmQqaCx0aGlzLl93PWMqdSpoLWYqZCpnO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl94PWYqdSpoLWMqZCpnLHRoaXMuX3k9YypkKmgrZip1KmcsdGhpcy5fej1jKnUqZy1mKmQqaCx0aGlzLl93PWMqdSpoK2YqZCpnO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl94PWYqdSpoK2MqZCpnLHRoaXMuX3k9YypkKmgrZip1KmcsdGhpcy5fej1jKnUqZy1mKmQqaCx0aGlzLl93PWMqdSpoLWYqZCpnO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl94PWYqdSpoLWMqZCpnLHRoaXMuX3k9YypkKmgtZip1KmcsdGhpcy5fej1jKnUqZytmKmQqaCx0aGlzLl93PWMqdSpoK2YqZCpnO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitvKX1yZXR1cm4gZSE9PSExJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tQXhpc0FuZ2xlKHQsZSl7bGV0IGk9ZS8yLHI9TWF0aC5zaW4oaSk7cmV0dXJuIHRoaXMuX3g9dC54KnIsdGhpcy5feT10Lnkqcix0aGlzLl96PXQueipyLHRoaXMuX3c9TWF0aC5jb3MoaSksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpe2xldCBlPXQuZWxlbWVudHMsaT1lWzBdLHI9ZVs0XSxzPWVbOF0sbz1lWzFdLGE9ZVs1XSxsPWVbOV0sYz1lWzJdLHU9ZVs2XSxoPWVbMTBdLGY9aSthK2g7aWYoZj4wKXtsZXQgZD0uNS9NYXRoLnNxcnQoZisxKTt0aGlzLl93PS4yNS9kLHRoaXMuX3g9KHUtbCkqZCx0aGlzLl95PShzLWMpKmQsdGhpcy5fej0oby1yKSpkfWVsc2UgaWYoaT5hJiZpPmgpe2xldCBkPTIqTWF0aC5zcXJ0KDEraS1hLWgpO3RoaXMuX3c9KHUtbCkvZCx0aGlzLl94PS4yNSpkLHRoaXMuX3k9KHIrbykvZCx0aGlzLl96PShzK2MpL2R9ZWxzZSBpZihhPmgpe2xldCBkPTIqTWF0aC5zcXJ0KDErYS1pLWgpO3RoaXMuX3c9KHMtYykvZCx0aGlzLl94PShyK28pL2QsdGhpcy5feT0uMjUqZCx0aGlzLl96PShsK3UpL2R9ZWxzZXtsZXQgZD0yKk1hdGguc3FydCgxK2gtaS1hKTt0aGlzLl93PShvLXIpL2QsdGhpcy5feD0ocytjKS9kLHRoaXMuX3k9KGwrdSkvZCx0aGlzLl96PS4yNSpkfXJldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tVW5pdFZlY3RvcnModCxlKXtsZXQgaT10LmRvdChlKSsxO3JldHVybiBpPE51bWJlci5FUFNJTE9OPyhpPTAsTWF0aC5hYnModC54KT5NYXRoLmFicyh0LnopPyh0aGlzLl94PS10LnksdGhpcy5feT10LngsdGhpcy5fej0wLHRoaXMuX3c9aSk6KHRoaXMuX3g9MCx0aGlzLl95PS10LnosdGhpcy5fej10LnksdGhpcy5fdz1pKSk6KHRoaXMuX3g9dC55KmUuei10LnoqZS55LHRoaXMuX3k9dC56KmUueC10LngqZS56LHRoaXMuX3o9dC54KmUueS10LnkqZS54LHRoaXMuX3c9aSksdGhpcy5ub3JtYWxpemUoKX1hbmdsZVRvKHQpe3JldHVybiAyKk1hdGguYWNvcyhNYXRoLmFicyhJZSh0aGlzLmRvdCh0KSwtMSwxKSkpfXJvdGF0ZVRvd2FyZHModCxlKXtsZXQgaT10aGlzLmFuZ2xlVG8odCk7aWYoaT09PTApcmV0dXJuIHRoaXM7bGV0IHI9TWF0aC5taW4oMSxlL2kpO3JldHVybiB0aGlzLnNsZXJwKHQsciksdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgwLDAsMCwxKX1pbnZlcnQoKXtyZXR1cm4gdGhpcy5jb25qdWdhdGUoKX1jb25qdWdhdGUoKXtyZXR1cm4gdGhpcy5feCo9LTEsdGhpcy5feSo9LTEsdGhpcy5feio9LTEsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLl94KnQuX3grdGhpcy5feSp0Ll95K3RoaXMuX3oqdC5feit0aGlzLl93KnQuX3d9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93KX1ub3JtYWxpemUoKXtsZXQgdD10aGlzLmxlbmd0aCgpO3JldHVybiB0PT09MD8odGhpcy5feD0wLHRoaXMuX3k9MCx0aGlzLl96PTAsdGhpcy5fdz0xKToodD0xL3QsdGhpcy5feD10aGlzLl94KnQsdGhpcy5feT10aGlzLl95KnQsdGhpcy5fej10aGlzLl96KnQsdGhpcy5fdz10aGlzLl93KnQpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlRdWF0ZXJuaW9ucyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQsZSkpOnRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCx0aGlzKX1tdWx0aXBseVF1YXRlcm5pb25zKHQsZSl7bGV0IGk9dC5feCxyPXQuX3kscz10Ll96LG89dC5fdyxhPWUuX3gsbD1lLl95LGM9ZS5feix1PWUuX3c7cmV0dXJuIHRoaXMuX3g9aSp1K28qYStyKmMtcypsLHRoaXMuX3k9cip1K28qbCtzKmEtaSpjLHRoaXMuX3o9cyp1K28qYytpKmwtciphLHRoaXMuX3c9byp1LWkqYS1yKmwtcypjLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwKHQsZSl7aWYoZT09PTApcmV0dXJuIHRoaXM7aWYoZT09PTEpcmV0dXJuIHRoaXMuY29weSh0KTtsZXQgaT10aGlzLl94LHI9dGhpcy5feSxzPXRoaXMuX3osbz10aGlzLl93LGE9byp0Ll93K2kqdC5feCtyKnQuX3krcyp0Ll96O2lmKGE8MD8odGhpcy5fdz0tdC5fdyx0aGlzLl94PS10Ll94LHRoaXMuX3k9LXQuX3ksdGhpcy5fej0tdC5feixhPS1hKTp0aGlzLmNvcHkodCksYT49MSlyZXR1cm4gdGhpcy5fdz1vLHRoaXMuX3g9aSx0aGlzLl95PXIsdGhpcy5fej1zLHRoaXM7bGV0IGw9MS1hKmE7aWYobDw9TnVtYmVyLkVQU0lMT04pe2xldCBkPTEtZTtyZXR1cm4gdGhpcy5fdz1kKm8rZSp0aGlzLl93LHRoaXMuX3g9ZCppK2UqdGhpcy5feCx0aGlzLl95PWQqcitlKnRoaXMuX3ksdGhpcy5fej1kKnMrZSp0aGlzLl96LHRoaXMubm9ybWFsaXplKCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9bGV0IGM9TWF0aC5zcXJ0KGwpLHU9TWF0aC5hdGFuMihjLGEpLGg9TWF0aC5zaW4oKDEtZSkqdSkvYyxmPU1hdGguc2luKGUqdSkvYztyZXR1cm4gdGhpcy5fdz1vKmgrdGhpcy5fdypmLHRoaXMuX3g9aSpoK3RoaXMuX3gqZix0aGlzLl95PXIqaCt0aGlzLl95KmYsdGhpcy5fej1zKmgrdGhpcy5feipmLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwUXVhdGVybmlvbnModCxlLGkpe3JldHVybiB0aGlzLmNvcHkodCkuc2xlcnAoZSxpKX1yYW5kb20oKXtsZXQgdD1NYXRoLnJhbmRvbSgpLGU9TWF0aC5zcXJ0KDEtdCksaT1NYXRoLnNxcnQodCkscj0yKk1hdGguUEkqTWF0aC5yYW5kb20oKSxzPTIqTWF0aC5QSSpNYXRoLnJhbmRvbSgpO3JldHVybiB0aGlzLnNldChlKk1hdGguY29zKHIpLGkqTWF0aC5zaW4ocyksaSpNYXRoLmNvcyhzKSxlKk1hdGguc2luKHIpKX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX3c9PT10aGlzLl93fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMuX3g9dFtlXSx0aGlzLl95PXRbZSsxXSx0aGlzLl96PXRbZSsyXSx0aGlzLl93PXRbZSszXSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl93LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLl94PXQuZ2V0WChlKSx0aGlzLl95PXQuZ2V0WShlKSx0aGlzLl96PXQuZ2V0WihlKSx0aGlzLl93PXQuZ2V0VyhlKSx0aGlzfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fTtFZS5wcm90b3R5cGUuaXNRdWF0ZXJuaW9uPSEwO3ZhciBUPWNsYXNze2NvbnN0cnVjdG9yKHQ9MCxlPTAsaT0wKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9aX1zZXQodCxlLGkpe3JldHVybiBpPT09dm9pZCAwJiYoaT10aGlzLnopLHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1pLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldENvbXBvbmVudCh0LGUpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PWU7YnJlYWs7Y2FzZSAxOnRoaXMueT1lO2JyZWFrO2Nhc2UgMjp0aGlzLno9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnopfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXN9YWRkKHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpcy56PXQueitlLnosdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXMueis9dC56KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gZSE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzLno9dC56LWUueix0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5VmVjdG9ycyh0LGUpKToodGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcyl9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXN9bXVsdGlwbHlWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngqZS54LHRoaXMueT10LnkqZS55LHRoaXMuej10LnoqZS56LHRoaXN9YXBwbHlFdWxlcih0KXtyZXR1cm4gdCYmdC5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlFdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIiksdGhpcy5hcHBseVF1YXRlcm5pb24obmcuc2V0RnJvbUV1bGVyKHQpKX1hcHBseUF4aXNBbmdsZSh0LGUpe3JldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbihuZy5zZXRGcm9tQXhpc0FuZ2xlKHQsZSkpfWFwcGx5TWF0cml4Myh0KXtsZXQgZT10aGlzLngsaT10aGlzLnkscj10aGlzLnoscz10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9c1swXSplK3NbM10qaStzWzZdKnIsdGhpcy55PXNbMV0qZStzWzRdKmkrc1s3XSpyLHRoaXMuej1zWzJdKmUrc1s1XSppK3NbOF0qcix0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4Myh0KS5ub3JtYWxpemUoKX1hcHBseU1hdHJpeDQodCl7bGV0IGU9dGhpcy54LGk9dGhpcy55LHI9dGhpcy56LHM9dC5lbGVtZW50cyxvPTEvKHNbM10qZStzWzddKmkrc1sxMV0qcitzWzE1XSk7cmV0dXJuIHRoaXMueD0oc1swXSplK3NbNF0qaStzWzhdKnIrc1sxMl0pKm8sdGhpcy55PShzWzFdKmUrc1s1XSppK3NbOV0qcitzWzEzXSkqbyx0aGlzLno9KHNbMl0qZStzWzZdKmkrc1sxMF0qcitzWzE0XSkqbyx0aGlzfWFwcGx5UXVhdGVybmlvbih0KXtsZXQgZT10aGlzLngsaT10aGlzLnkscj10aGlzLnoscz10Lngsbz10LnksYT10LnosbD10LncsYz1sKmUrbypyLWEqaSx1PWwqaSthKmUtcypyLGg9bCpyK3MqaS1vKmUsZj0tcyplLW8qaS1hKnI7cmV0dXJuIHRoaXMueD1jKmwrZiotcyt1Ki1hLWgqLW8sdGhpcy55PXUqbCtmKi1vK2gqLXMtYyotYSx0aGlzLno9aCpsK2YqLWErYyotby11Ki1zLHRoaXN9cHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZEludmVyc2UpLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXgpfXVucHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpfXRyYW5zZm9ybURpcmVjdGlvbih0KXtsZXQgZT10aGlzLngsaT10aGlzLnkscj10aGlzLnoscz10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9c1swXSplK3NbNF0qaStzWzhdKnIsdGhpcy55PXNbMV0qZStzWzVdKmkrc1s5XSpyLHRoaXMuej1zWzJdKmUrc1s2XSppK3NbMTBdKnIsdGhpcy5ub3JtYWxpemUoKX1kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXMuei89dC56LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1pbih0aGlzLnosdC56KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzLno9TWF0aC5tYXgodGhpcy56LHQueiksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtsZXQgaT10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihpfHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsaSkpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpcy56PU1hdGguZmxvb3IodGhpcy56KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzLno9TWF0aC5jZWlsKHRoaXMueiksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpcy56PU1hdGgucm91bmQodGhpcy56KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9dGhpcy56PDA/TWF0aC5jZWlsKHRoaXMueik6TWF0aC5mbG9vcih0aGlzLnopLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXMuej0tdGhpcy56LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0LnkrdGhpcy56KnQuen1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMuen1sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpK01hdGguYWJzKHRoaXMueil9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzLnorPSh0LnotdGhpcy56KSplLHRoaXN9bGVycFZlY3RvcnModCxlLGkpe3JldHVybiB0aGlzLng9dC54KyhlLngtdC54KSppLHRoaXMueT10LnkrKGUueS10LnkpKmksdGhpcy56PXQueisoZS56LXQueikqaSx0aGlzfWNyb3NzKHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmNyb3NzKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuY3Jvc3NWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmNyb3NzVmVjdG9ycyh0LGUpKTp0aGlzLmNyb3NzVmVjdG9ycyh0aGlzLHQpfWNyb3NzVmVjdG9ycyh0LGUpe2xldCBpPXQueCxyPXQueSxzPXQueixvPWUueCxhPWUueSxsPWUuejtyZXR1cm4gdGhpcy54PXIqbC1zKmEsdGhpcy55PXMqby1pKmwsdGhpcy56PWkqYS1yKm8sdGhpc31wcm9qZWN0T25WZWN0b3IodCl7bGV0IGU9dC5sZW5ndGhTcSgpO2lmKGU9PT0wKXJldHVybiB0aGlzLnNldCgwLDAsMCk7bGV0IGk9dC5kb3QodGhpcykvZTtyZXR1cm4gdGhpcy5jb3B5KHQpLm11bHRpcGx5U2NhbGFyKGkpfXByb2plY3RPblBsYW5lKHQpe3JldHVybiBvdS5jb3B5KHRoaXMpLnByb2plY3RPblZlY3Rvcih0KSx0aGlzLnN1YihvdSl9cmVmbGVjdCh0KXtyZXR1cm4gdGhpcy5zdWIob3UuY29weSh0KS5tdWx0aXBseVNjYWxhcigyKnRoaXMuZG90KHQpKSl9YW5nbGVUbyh0KXtsZXQgZT1NYXRoLnNxcnQodGhpcy5sZW5ndGhTcSgpKnQubGVuZ3RoU3EoKSk7aWYoZT09PTApcmV0dXJuIE1hdGguUEkvMjtsZXQgaT10aGlzLmRvdCh0KS9lO3JldHVybiBNYXRoLmFjb3MoSWUoaSwtMSwxKSl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2xldCBlPXRoaXMueC10LngsaT10aGlzLnktdC55LHI9dGhpcy56LXQuejtyZXR1cm4gZSplK2kqaStyKnJ9bWFuaGF0dGFuRGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5hYnModGhpcy54LXQueCkrTWF0aC5hYnModGhpcy55LXQueSkrTWF0aC5hYnModGhpcy56LXQueil9c2V0RnJvbVNwaGVyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQucmFkaXVzLHQucGhpLHQudGhldGEpfXNldEZyb21TcGhlcmljYWxDb29yZHModCxlLGkpe2xldCByPU1hdGguc2luKGUpKnQ7cmV0dXJuIHRoaXMueD1yKk1hdGguc2luKGkpLHRoaXMueT1NYXRoLmNvcyhlKSp0LHRoaXMuej1yKk1hdGguY29zKGkpLHRoaXN9c2V0RnJvbUN5bGluZHJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnRoZXRhLHQueSl9c2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQsZSxpKXtyZXR1cm4gdGhpcy54PXQqTWF0aC5zaW4oZSksdGhpcy55PWksdGhpcy56PXQqTWF0aC5jb3MoZSksdGhpc31zZXRGcm9tTWF0cml4UG9zaXRpb24odCl7bGV0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWVbMTJdLHRoaXMueT1lWzEzXSx0aGlzLno9ZVsxNF0sdGhpc31zZXRGcm9tTWF0cml4U2NhbGUodCl7bGV0IGU9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMCkubGVuZ3RoKCksaT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxyPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiB0aGlzLng9ZSx0aGlzLnk9aSx0aGlzLno9cix0aGlzfXNldEZyb21NYXRyaXhDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cyxlKjQpfXNldEZyb21NYXRyaXgzQ29sdW1uKHQsZSl7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsZSozKX1lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnp9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdFtlKzJdPXRoaXMueix0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLGkpe3JldHVybiBpIT09dm9pZCAwJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpcy56PXQuZ2V0WihlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzfXJhbmRvbURpcmVjdGlvbigpe2xldCB0PShNYXRoLnJhbmRvbSgpLS41KSoyLGU9TWF0aC5yYW5kb20oKSpNYXRoLlBJKjIsaT1NYXRoLnNxcnQoMS1zZih0LDIpKTtyZXR1cm4gdGhpcy54PWkqTWF0aC5jb3MoZSksdGhpcy55PWkqTWF0aC5zaW4oZSksdGhpcy56PXQsdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55LHlpZWxkIHRoaXMuen19O1QucHJvdG90eXBlLmlzVmVjdG9yMz0hMDt2YXIgb3U9bmV3IFQsbmc9bmV3IEVlLEdlPWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IFQoMS8wLDEvMCwxLzApLGU9bmV3IFQoLTEvMCwtMS8wLC0xLzApKXt0aGlzLm1pbj10LHRoaXMubWF4PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubWluLmNvcHkodCksdGhpcy5tYXguY29weShlKSx0aGlzfXNldEZyb21BcnJheSh0KXtsZXQgZT0xLzAsaT0xLzAscj0xLzAscz0tMS8wLG89LTEvMCxhPS0xLzA7Zm9yKGxldCBsPTAsYz10Lmxlbmd0aDtsPGM7bCs9Myl7bGV0IHU9dFtsXSxoPXRbbCsxXSxmPXRbbCsyXTt1PGUmJihlPXUpLGg8aSYmKGk9aCksZjxyJiYocj1mKSx1PnMmJihzPXUpLGg+byYmKG89aCksZj5hJiYoYT1mKX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsaSxyKSx0aGlzLm1heC5zZXQocyxvLGEpLHRoaXN9c2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KXtsZXQgZT0xLzAsaT0xLzAscj0xLzAscz0tMS8wLG89LTEvMCxhPS0xLzA7Zm9yKGxldCBsPTAsYz10LmNvdW50O2w8YztsKyspe2xldCB1PXQuZ2V0WChsKSxoPXQuZ2V0WShsKSxmPXQuZ2V0WihsKTt1PGUmJihlPXUpLGg8aSYmKGk9aCksZjxyJiYocj1mKSx1PnMmJihzPXUpLGg+byYmKG89aCksZj5hJiYoYT1mKX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsaSxyKSx0aGlzLm1heC5zZXQocyxvLGEpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgZT0wLGk9dC5sZW5ndGg7ZTxpO2UrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtlXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxlKXtsZXQgaT1EaS5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIoaSksdGhpcy5tYXguY29weSh0KS5hZGQoaSksdGhpc31zZXRGcm9tT2JqZWN0KHQsZT0hMSl7cmV0dXJuIHRoaXMubWFrZUVtcHR5KCksdGhpcy5leHBhbmRCeU9iamVjdCh0LGUpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9dGhpcy5taW4uej0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PXRoaXMubWF4Lno9LTEvMCx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl8fHRoaXMubWF4Lno8dGhpcy5taW4uen1nZXRDZW50ZXIodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCwwKTp0LmFkZFZlY3RvcnModGhpcy5taW4sdGhpcy5tYXgpLm11bHRpcGx5U2NhbGFyKC41KX1nZXRTaXplKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31leHBhbmRCeU9iamVjdCh0LGU9ITEpe3QudXBkYXRlV29ybGRNYXRyaXgoITEsITEpO2xldCBpPXQuZ2VvbWV0cnk7aWYoaSE9PXZvaWQgMClpZihlJiZpLmF0dHJpYnV0ZXMhPW51bGwmJmkuYXR0cmlidXRlcy5wb3NpdGlvbiE9PXZvaWQgMCl7bGV0IHM9aS5hdHRyaWJ1dGVzLnBvc2l0aW9uO2ZvcihsZXQgbz0wLGE9cy5jb3VudDtvPGE7bysrKURpLmZyb21CdWZmZXJBdHRyaWJ1dGUocyxvKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5leHBhbmRCeVBvaW50KERpKX1lbHNlIGkuYm91bmRpbmdCb3g9PT1udWxsJiZpLmNvbXB1dGVCb3VuZGluZ0JveCgpLGF1LmNvcHkoaS5ib3VuZGluZ0JveCksYXUuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMudW5pb24oYXUpO2xldCByPXQuY2hpbGRyZW47Zm9yKGxldCBzPTAsbz1yLmxlbmd0aDtzPG87cysrKXRoaXMuZXhwYW5kQnlPYmplY3QocltzXSxlKTtyZXR1cm4gdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4Lnl8fHQuejx0aGlzLm1pbi56fHx0Lno+dGhpcy5tYXgueil9Y29udGFpbnNCb3godCl7cmV0dXJuIHRoaXMubWluLng8PXQubWluLngmJnQubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PXQubWluLnkmJnQubWF4Lnk8PXRoaXMubWF4LnkmJnRoaXMubWluLno8PXQubWluLnomJnQubWF4Lno8PXRoaXMubWF4Lnp9Z2V0UGFyYW1ldGVyKHQsZSl7cmV0dXJuIGUuc2V0KCh0LngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKHQueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSwodC56LXRoaXMubWluLnopLyh0aGlzLm1heC56LXRoaXMubWluLnopKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55fHx0Lm1heC56PHRoaXMubWluLnp8fHQubWluLno+dGhpcy5tYXgueil9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5jbGFtcFBvaW50KHQuY2VudGVyLERpKSxEaS5kaXN0YW5jZVRvU3F1YXJlZCh0LmNlbnRlcik8PXQucmFkaXVzKnQucmFkaXVzfWludGVyc2VjdHNQbGFuZSh0KXtsZXQgZSxpO3JldHVybiB0Lm5vcm1hbC54PjA/KGU9dC5ub3JtYWwueCp0aGlzLm1pbi54LGk9dC5ub3JtYWwueCp0aGlzLm1heC54KTooZT10Lm5vcm1hbC54KnRoaXMubWF4LngsaT10Lm5vcm1hbC54KnRoaXMubWluLngpLHQubm9ybWFsLnk+MD8oZSs9dC5ub3JtYWwueSp0aGlzLm1pbi55LGkrPXQubm9ybWFsLnkqdGhpcy5tYXgueSk6KGUrPXQubm9ybWFsLnkqdGhpcy5tYXgueSxpKz10Lm5vcm1hbC55KnRoaXMubWluLnkpLHQubm9ybWFsLno+MD8oZSs9dC5ub3JtYWwueip0aGlzLm1pbi56LGkrPXQubm9ybWFsLnoqdGhpcy5tYXgueik6KGUrPXQubm9ybWFsLnoqdGhpcy5tYXgueixpKz10Lm5vcm1hbC56KnRoaXMubWluLnopLGU8PS10LmNvbnN0YW50JiZpPj0tdC5jb25zdGFudH1pbnRlcnNlY3RzVHJpYW5nbGUodCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuITE7dGhpcy5nZXRDZW50ZXIoT3MpLHZhLnN1YlZlY3RvcnModGhpcy5tYXgsT3MpLHByLnN1YlZlY3RvcnModC5hLE9zKSxtci5zdWJWZWN0b3JzKHQuYixPcyksZ3Iuc3ViVmVjdG9ycyh0LmMsT3MpLHFuLnN1YlZlY3RvcnMobXIscHIpLFhuLnN1YlZlY3RvcnMoZ3IsbXIpLElpLnN1YlZlY3RvcnMocHIsZ3IpO2xldCBlPVswLC1xbi56LHFuLnksMCwtWG4ueixYbi55LDAsLUlpLnosSWkueSxxbi56LDAsLXFuLngsWG4ueiwwLC1Ybi54LElpLnosMCwtSWkueCwtcW4ueSxxbi54LDAsLVhuLnksWG4ueCwwLC1JaS55LElpLngsMF07cmV0dXJuIWx1KGUscHIsbXIsZ3IsdmEpfHwoZT1bMSwwLDAsMCwxLDAsMCwwLDFdLCFsdShlLHByLG1yLGdyLHZhKSk/ITE6KF9hLmNyb3NzVmVjdG9ycyhxbixYbiksZT1bX2EueCxfYS55LF9hLnpdLGx1KGUscHIsbXIsZ3IsdmEpKX1jbGFtcFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBEaS5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIodCkubGVuZ3RoKCl9Z2V0Qm91bmRpbmdTcGhlcmUodCl7cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKHQuY2VudGVyKSx0LnJhZGl1cz10aGlzLmdldFNpemUoRGkpLmxlbmd0aCgpKi41LHR9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90aGlzOihBblswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxBblsxXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxBblsyXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxBblszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxBbls0XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxBbls1XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxBbls2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxBbls3XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldEZyb21Qb2ludHMoQW4pLHRoaXMpfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19O0dlLnByb3RvdHlwZS5pc0JveDM9ITA7dmFyIEFuPVtuZXcgVCxuZXcgVCxuZXcgVCxuZXcgVCxuZXcgVCxuZXcgVCxuZXcgVCxuZXcgVF0sRGk9bmV3IFQsYXU9bmV3IEdlLHByPW5ldyBULG1yPW5ldyBULGdyPW5ldyBULHFuPW5ldyBULFhuPW5ldyBULElpPW5ldyBULE9zPW5ldyBULHZhPW5ldyBULF9hPW5ldyBULE5pPW5ldyBUO2Z1bmN0aW9uIGx1KG4sdCxlLGkscil7Zm9yKGxldCBzPTAsbz1uLmxlbmd0aC0zO3M8PW87cys9Myl7TmkuZnJvbUFycmF5KG4scyk7bGV0IGE9ci54Kk1hdGguYWJzKE5pLngpK3IueSpNYXRoLmFicyhOaS55KStyLnoqTWF0aC5hYnMoTmkueiksbD10LmRvdChOaSksYz1lLmRvdChOaSksdT1pLmRvdChOaSk7aWYoTWF0aC5tYXgoLU1hdGgubWF4KGwsYyx1KSxNYXRoLm1pbihsLGMsdSkpPmEpcmV0dXJuITF9cmV0dXJuITB9dmFyIFh3PW5ldyBHZSxpZz1uZXcgVCx3YT1uZXcgVCxjdT1uZXcgVCxzaT1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBULGU9LTEpe3RoaXMuY2VudGVyPXQsdGhpcy5yYWRpdXM9ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5jZW50ZXIuY29weSh0KSx0aGlzLnJhZGl1cz1lLHRoaXN9c2V0RnJvbVBvaW50cyh0LGUpe2xldCBpPXRoaXMuY2VudGVyO2UhPT12b2lkIDA/aS5jb3B5KGUpOlh3LnNldEZyb21Qb2ludHModCkuZ2V0Q2VudGVyKGkpO2xldCByPTA7Zm9yKGxldCBzPTAsbz10Lmxlbmd0aDtzPG87cysrKXI9TWF0aC5tYXgocixpLmRpc3RhbmNlVG9TcXVhcmVkKHRbc10pKTtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KHIpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMucmFkaXVzPDB9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMuY2VudGVyLnNldCgwLDAsMCksdGhpcy5yYWRpdXM9LTEsdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiB0LmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXN9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiB0LmRpc3RhbmNlVG8odGhpcy5jZW50ZXIpLXRoaXMucmFkaXVzfWludGVyc2VjdHNTcGhlcmUodCl7bGV0IGU9dGhpcy5yYWRpdXMrdC5yYWRpdXM7cmV0dXJuIHQuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9ZSplfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1NwaGVyZSh0aGlzKX1pbnRlcnNlY3RzUGxhbmUodCl7cmV0dXJuIE1hdGguYWJzKHQuZGlzdGFuY2VUb1BvaW50KHRoaXMuY2VudGVyKSk8PXRoaXMucmFkaXVzfWNsYW1wUG9pbnQodCxlKXtsZXQgaT10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0KTtyZXR1cm4gZS5jb3B5KHQpLGk+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMmJihlLnN1Yih0aGlzLmNlbnRlcikubm9ybWFsaXplKCksZS5tdWx0aXBseVNjYWxhcih0aGlzLnJhZGl1cykuYWRkKHRoaXMuY2VudGVyKSksZX1nZXRCb3VuZGluZ0JveCh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/KHQubWFrZUVtcHR5KCksdCk6KHQuc2V0KHRoaXMuY2VudGVyLHRoaXMuY2VudGVyKSx0LmV4cGFuZEJ5U2NhbGFyKHRoaXMucmFkaXVzKSx0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFwcGx5TWF0cml4NCh0KSx0aGlzLnJhZGl1cz10aGlzLnJhZGl1cyp0LmdldE1heFNjYWxlT25BeGlzKCksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFkZCh0KSx0aGlzfWV4cGFuZEJ5UG9pbnQodCl7Y3Uuc3ViVmVjdG9ycyh0LHRoaXMuY2VudGVyKTtsZXQgZT1jdS5sZW5ndGhTcSgpO2lmKGU+dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXMpe2xldCBpPU1hdGguc3FydChlKSxyPShpLXRoaXMucmFkaXVzKSouNTt0aGlzLmNlbnRlci5hZGQoY3UubXVsdGlwbHlTY2FsYXIoci9pKSksdGhpcy5yYWRpdXMrPXJ9cmV0dXJuIHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMuY2VudGVyLmVxdWFscyh0LmNlbnRlcik9PT0hMD93YS5zZXQoMCwwLDEpLm11bHRpcGx5U2NhbGFyKHQucmFkaXVzKTp3YS5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0LnJhZGl1cyksdGhpcy5leHBhbmRCeVBvaW50KGlnLmNvcHkodC5jZW50ZXIpLmFkZCh3YSkpLHRoaXMuZXhwYW5kQnlQb2ludChpZy5jb3B5KHQuY2VudGVyKS5zdWIod2EpKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5jZW50ZXIuZXF1YWxzKHRoaXMuY2VudGVyKSYmdC5yYWRpdXM9PT10aGlzLnJhZGl1c31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fSxDbj1uZXcgVCx1dT1uZXcgVCxNYT1uZXcgVCxZbj1uZXcgVCxodT1uZXcgVCxiYT1uZXcgVCxmdT1uZXcgVCxvaT1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBULGU9bmV3IFQoMCwwLC0xKSl7dGhpcy5vcmlnaW49dCx0aGlzLmRpcmVjdGlvbj1lfXNldCh0LGUpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHQpLHRoaXMuZGlyZWN0aW9uLmNvcHkoZSksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm9yaWdpbi5jb3B5KHQub3JpZ2luKSx0aGlzLmRpcmVjdGlvbi5jb3B5KHQuZGlyZWN0aW9uKSx0aGlzfWF0KHQsZSl7cmV0dXJuIGUuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMub3JpZ2luKX1sb29rQXQodCl7cmV0dXJuIHRoaXMuZGlyZWN0aW9uLmNvcHkodCkuc3ViKHRoaXMub3JpZ2luKS5ub3JtYWxpemUoKSx0aGlzfXJlY2FzdCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0aGlzLmF0KHQsQ24pKSx0aGlzfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXtlLnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbik7bGV0IGk9ZS5kb3QodGhpcy5kaXJlY3Rpb24pO3JldHVybiBpPDA/ZS5jb3B5KHRoaXMub3JpZ2luKTplLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0aGlzLm9yaWdpbil9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVNxVG9Qb2ludCh0KSl9ZGlzdGFuY2VTcVRvUG9pbnQodCl7bGV0IGU9Q24uc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKS5kb3QodGhpcy5kaXJlY3Rpb24pO3JldHVybiBlPDA/dGhpcy5vcmlnaW4uZGlzdGFuY2VUb1NxdWFyZWQodCk6KENuLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGUpLmFkZCh0aGlzLm9yaWdpbiksQ24uZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlU3FUb1NlZ21lbnQodCxlLGkscil7dXUuY29weSh0KS5hZGQoZSkubXVsdGlwbHlTY2FsYXIoLjUpLE1hLmNvcHkoZSkuc3ViKHQpLm5vcm1hbGl6ZSgpLFluLmNvcHkodGhpcy5vcmlnaW4pLnN1Yih1dSk7bGV0IHM9dC5kaXN0YW5jZVRvKGUpKi41LG89LXRoaXMuZGlyZWN0aW9uLmRvdChNYSksYT1Zbi5kb3QodGhpcy5kaXJlY3Rpb24pLGw9LVluLmRvdChNYSksYz1Zbi5sZW5ndGhTcSgpLHU9TWF0aC5hYnMoMS1vKm8pLGgsZixkLGc7aWYodT4wKWlmKGg9bypsLWEsZj1vKmEtbCxnPXMqdSxoPj0wKWlmKGY+PS1nKWlmKGY8PWcpe2xldCB4PTEvdTtoKj14LGYqPXgsZD1oKihoK28qZisyKmEpK2YqKG8qaCtmKzIqbCkrY31lbHNlIGY9cyxoPU1hdGgubWF4KDAsLShvKmYrYSkpLGQ9LWgqaCtmKihmKzIqbCkrYztlbHNlIGY9LXMsaD1NYXRoLm1heCgwLC0obypmK2EpKSxkPS1oKmgrZiooZisyKmwpK2M7ZWxzZSBmPD0tZz8oaD1NYXRoLm1heCgwLC0oLW8qcythKSksZj1oPjA/LXM6TWF0aC5taW4oTWF0aC5tYXgoLXMsLWwpLHMpLGQ9LWgqaCtmKihmKzIqbCkrYyk6Zjw9Zz8oaD0wLGY9TWF0aC5taW4oTWF0aC5tYXgoLXMsLWwpLHMpLGQ9ZiooZisyKmwpK2MpOihoPU1hdGgubWF4KDAsLShvKnMrYSkpLGY9aD4wP3M6TWF0aC5taW4oTWF0aC5tYXgoLXMsLWwpLHMpLGQ9LWgqaCtmKihmKzIqbCkrYyk7ZWxzZSBmPW8+MD8tczpzLGg9TWF0aC5tYXgoMCwtKG8qZithKSksZD0taCpoK2YqKGYrMipsKStjO3JldHVybiBpJiZpLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGgpLmFkZCh0aGlzLm9yaWdpbiksciYmci5jb3B5KE1hKS5tdWx0aXBseVNjYWxhcihmKS5hZGQodXUpLGR9aW50ZXJzZWN0U3BoZXJlKHQsZSl7Q24uc3ViVmVjdG9ycyh0LmNlbnRlcix0aGlzLm9yaWdpbik7bGV0IGk9Q24uZG90KHRoaXMuZGlyZWN0aW9uKSxyPUNuLmRvdChDbiktaSppLHM9dC5yYWRpdXMqdC5yYWRpdXM7aWYocj5zKXJldHVybiBudWxsO2xldCBvPU1hdGguc3FydChzLXIpLGE9aS1vLGw9aStvO3JldHVybiBhPDAmJmw8MD9udWxsOmE8MD90aGlzLmF0KGwsZSk6dGhpcy5hdChhLGUpfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31kaXN0YW5jZVRvUGxhbmUodCl7bGV0IGU9dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZihlPT09MClyZXR1cm4gdC5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pPT09MD8wOm51bGw7bGV0IGk9LSh0aGlzLm9yaWdpbi5kb3QodC5ub3JtYWwpK3QuY29uc3RhbnQpL2U7cmV0dXJuIGk+PTA/aTpudWxsfWludGVyc2VjdFBsYW5lKHQsZSl7bGV0IGk9dGhpcy5kaXN0YW5jZVRvUGxhbmUodCk7cmV0dXJuIGk9PT1udWxsP251bGw6dGhpcy5hdChpLGUpfWludGVyc2VjdHNQbGFuZSh0KXtsZXQgZT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7cmV0dXJuIGU9PT0wfHx0Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pKmU8MH1pbnRlcnNlY3RCb3godCxlKXtsZXQgaSxyLHMsbyxhLGwsYz0xL3RoaXMuZGlyZWN0aW9uLngsdT0xL3RoaXMuZGlyZWN0aW9uLnksaD0xL3RoaXMuZGlyZWN0aW9uLnosZj10aGlzLm9yaWdpbjtyZXR1cm4gYz49MD8oaT0odC5taW4ueC1mLngpKmMscj0odC5tYXgueC1mLngpKmMpOihpPSh0Lm1heC54LWYueCkqYyxyPSh0Lm1pbi54LWYueCkqYyksdT49MD8ocz0odC5taW4ueS1mLnkpKnUsbz0odC5tYXgueS1mLnkpKnUpOihzPSh0Lm1heC55LWYueSkqdSxvPSh0Lm1pbi55LWYueSkqdSksaT5vfHxzPnJ8fCgocz5pfHxpIT09aSkmJihpPXMpLChvPHJ8fHIhPT1yKSYmKHI9byksaD49MD8oYT0odC5taW4uei1mLnopKmgsbD0odC5tYXguei1mLnopKmgpOihhPSh0Lm1heC56LWYueikqaCxsPSh0Lm1pbi56LWYueikqaCksaT5sfHxhPnIpfHwoKGE+aXx8aSE9PWkpJiYoaT1hKSwobDxyfHxyIT09cikmJihyPWwpLHI8MCk/bnVsbDp0aGlzLmF0KGk+PTA/aTpyLGUpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHRoaXMuaW50ZXJzZWN0Qm94KHQsQ24pIT09bnVsbH1pbnRlcnNlY3RUcmlhbmdsZSh0LGUsaSxyLHMpe2h1LnN1YlZlY3RvcnMoZSx0KSxiYS5zdWJWZWN0b3JzKGksdCksZnUuY3Jvc3NWZWN0b3JzKGh1LGJhKTtsZXQgbz10aGlzLmRpcmVjdGlvbi5kb3QoZnUpLGE7aWYobz4wKXtpZihyKXJldHVybiBudWxsO2E9MX1lbHNlIGlmKG88MClhPS0xLG89LW87ZWxzZSByZXR1cm4gbnVsbDtZbi5zdWJWZWN0b3JzKHRoaXMub3JpZ2luLHQpO2xldCBsPWEqdGhpcy5kaXJlY3Rpb24uZG90KGJhLmNyb3NzVmVjdG9ycyhZbixiYSkpO2lmKGw8MClyZXR1cm4gbnVsbDtsZXQgYz1hKnRoaXMuZGlyZWN0aW9uLmRvdChodS5jcm9zcyhZbikpO2lmKGM8MHx8bCtjPm8pcmV0dXJuIG51bGw7bGV0IHU9LWEqWW4uZG90KGZ1KTtyZXR1cm4gdTwwP251bGw6dGhpcy5hdCh1L28scyl9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLm9yaWdpbi5hcHBseU1hdHJpeDQodCksdGhpcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm9yaWdpbi5lcXVhbHModGhpcy5vcmlnaW4pJiZ0LmRpcmVjdGlvbi5lcXVhbHModGhpcy5kaXJlY3Rpb24pfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX19LHd0PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsaSxyLHMsbyxhLGwsYyx1LGgsZixkLGcseCx2KXtsZXQgbT10aGlzLmVsZW1lbnRzO3JldHVybiBtWzBdPXQsbVs0XT1lLG1bOF09aSxtWzEyXT1yLG1bMV09cyxtWzVdPW8sbVs5XT1hLG1bMTNdPWwsbVsyXT1jLG1bNl09dSxtWzEwXT1oLG1bMTRdPWYsbVszXT1kLG1bN109ZyxtWzExXT14LG1bMTVdPXYsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwxKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB3dCgpLmZyb21BcnJheSh0aGlzLmVsZW1lbnRzKX1jb3B5KHQpe2xldCBlPXRoaXMuZWxlbWVudHMsaT10LmVsZW1lbnRzO3JldHVybiBlWzBdPWlbMF0sZVsxXT1pWzFdLGVbMl09aVsyXSxlWzNdPWlbM10sZVs0XT1pWzRdLGVbNV09aVs1XSxlWzZdPWlbNl0sZVs3XT1pWzddLGVbOF09aVs4XSxlWzldPWlbOV0sZVsxMF09aVsxMF0sZVsxMV09aVsxMV0sZVsxMl09aVsxMl0sZVsxM109aVsxM10sZVsxNF09aVsxNF0sZVsxNV09aVsxNV0sdGhpc31jb3B5UG9zaXRpb24odCl7bGV0IGU9dGhpcy5lbGVtZW50cyxpPXQuZWxlbWVudHM7cmV0dXJuIGVbMTJdPWlbMTJdLGVbMTNdPWlbMTNdLGVbMTRdPWlbMTRdLHRoaXN9c2V0RnJvbU1hdHJpeDModCl7bGV0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy5zZXQoZVswXSxlWzNdLGVbNl0sMCxlWzFdLGVbNF0sZVs3XSwwLGVbMl0sZVs1XSxlWzhdLDAsMCwwLDAsMSksdGhpc31leHRyYWN0QmFzaXModCxlLGkpe3JldHVybiB0LnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywwKSxlLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywxKSxpLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywyKSx0aGlzfW1ha2VCYXNpcyh0LGUsaSl7cmV0dXJuIHRoaXMuc2V0KHQueCxlLngsaS54LDAsdC55LGUueSxpLnksMCx0LnosZS56LGkueiwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdFJvdGF0aW9uKHQpe2xldCBlPXRoaXMuZWxlbWVudHMsaT10LmVsZW1lbnRzLHI9MS94ci5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMCkubGVuZ3RoKCkscz0xL3hyLnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxvPTEveHIuc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiBlWzBdPWlbMF0qcixlWzFdPWlbMV0qcixlWzJdPWlbMl0qcixlWzNdPTAsZVs0XT1pWzRdKnMsZVs1XT1pWzVdKnMsZVs2XT1pWzZdKnMsZVs3XT0wLGVbOF09aVs4XSpvLGVbOV09aVs5XSpvLGVbMTBdPWlbMTBdKm8sZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbUV1bGVyKHQpe3QmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm1ha2VSb3RhdGlvbkZyb21FdWxlcigpIG5vdyBleHBlY3RzIGEgRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtsZXQgZT10aGlzLmVsZW1lbnRzLGk9dC54LHI9dC55LHM9dC56LG89TWF0aC5jb3MoaSksYT1NYXRoLnNpbihpKSxsPU1hdGguY29zKHIpLGM9TWF0aC5zaW4ociksdT1NYXRoLmNvcyhzKSxoPU1hdGguc2luKHMpO2lmKHQub3JkZXI9PT0iWFlaIil7bGV0IGY9byp1LGQ9bypoLGc9YSp1LHg9YSpoO2VbMF09bCp1LGVbNF09LWwqaCxlWzhdPWMsZVsxXT1kK2cqYyxlWzVdPWYteCpjLGVbOV09LWEqbCxlWzJdPXgtZipjLGVbNl09ZytkKmMsZVsxMF09bypsfWVsc2UgaWYodC5vcmRlcj09PSJZWFoiKXtsZXQgZj1sKnUsZD1sKmgsZz1jKnUseD1jKmg7ZVswXT1mK3gqYSxlWzRdPWcqYS1kLGVbOF09bypjLGVbMV09bypoLGVbNV09byp1LGVbOV09LWEsZVsyXT1kKmEtZyxlWzZdPXgrZiphLGVbMTBdPW8qbH1lbHNlIGlmKHQub3JkZXI9PT0iWlhZIil7bGV0IGY9bCp1LGQ9bCpoLGc9Yyp1LHg9YypoO2VbMF09Zi14KmEsZVs0XT0tbypoLGVbOF09ZytkKmEsZVsxXT1kK2cqYSxlWzVdPW8qdSxlWzldPXgtZiphLGVbMl09LW8qYyxlWzZdPWEsZVsxMF09bypsfWVsc2UgaWYodC5vcmRlcj09PSJaWVgiKXtsZXQgZj1vKnUsZD1vKmgsZz1hKnUseD1hKmg7ZVswXT1sKnUsZVs0XT1nKmMtZCxlWzhdPWYqYyt4LGVbMV09bCpoLGVbNV09eCpjK2YsZVs5XT1kKmMtZyxlWzJdPS1jLGVbNl09YSpsLGVbMTBdPW8qbH1lbHNlIGlmKHQub3JkZXI9PT0iWVpYIil7bGV0IGY9bypsLGQ9bypjLGc9YSpsLHg9YSpjO2VbMF09bCp1LGVbNF09eC1mKmgsZVs4XT1nKmgrZCxlWzFdPWgsZVs1XT1vKnUsZVs5XT0tYSp1LGVbMl09LWMqdSxlWzZdPWQqaCtnLGVbMTBdPWYteCpofWVsc2UgaWYodC5vcmRlcj09PSJYWlkiKXtsZXQgZj1vKmwsZD1vKmMsZz1hKmwseD1hKmM7ZVswXT1sKnUsZVs0XT0taCxlWzhdPWMqdSxlWzFdPWYqaCt4LGVbNV09byp1LGVbOV09ZCpoLWcsZVsyXT1nKmgtZCxlWzZdPWEqdSxlWzEwXT14KmgrZn1yZXR1cm4gZVszXT0wLGVbN109MCxlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsdGhpc31tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5jb21wb3NlKFl3LHQsWncpfWxvb2tBdCh0LGUsaSl7bGV0IHI9dGhpcy5lbGVtZW50cztyZXR1cm4ga2Uuc3ViVmVjdG9ycyh0LGUpLGtlLmxlbmd0aFNxKCk9PT0wJiYoa2Uuej0xKSxrZS5ub3JtYWxpemUoKSxabi5jcm9zc1ZlY3RvcnMoaSxrZSksWm4ubGVuZ3RoU3EoKT09PTAmJihNYXRoLmFicyhpLnopPT09MT9rZS54Kz0xZS00OmtlLnorPTFlLTQsa2Uubm9ybWFsaXplKCksWm4uY3Jvc3NWZWN0b3JzKGksa2UpKSxabi5ub3JtYWxpemUoKSxTYS5jcm9zc1ZlY3RvcnMoa2UsWm4pLHJbMF09Wm4ueCxyWzRdPVNhLngscls4XT1rZS54LHJbMV09Wm4ueSxyWzVdPVNhLnkscls5XT1rZS55LHJbMl09Wm4ueixyWzZdPVNhLnosclsxMF09a2Uueix0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlNYXRyaWNlcyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsZSkpOnRoaXMubXVsdGlwbHlNYXRyaWNlcyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModCx0aGlzKX1tdWx0aXBseU1hdHJpY2VzKHQsZSl7bGV0IGk9dC5lbGVtZW50cyxyPWUuZWxlbWVudHMscz10aGlzLmVsZW1lbnRzLG89aVswXSxhPWlbNF0sbD1pWzhdLGM9aVsxMl0sdT1pWzFdLGg9aVs1XSxmPWlbOV0sZD1pWzEzXSxnPWlbMl0seD1pWzZdLHY9aVsxMF0sbT1pWzE0XSxwPWlbM10sYj1pWzddLF89aVsxMV0sUz1pWzE1XSxMPXJbMF0sQT1yWzRdLEg9cls4XSx0dD1yWzEyXSxYPXJbMV0seT1yWzVdLFI9cls5XSxEPXJbMTNdLEY9clsyXSx6PXJbNl0sTj1yWzEwXSxWPXJbMTRdLFE9clszXSxhdD1yWzddLEc9clsxMV0sJD1yWzE1XTtyZXR1cm4gc1swXT1vKkwrYSpYK2wqRitjKlEsc1s0XT1vKkErYSp5K2wqeitjKmF0LHNbOF09bypIK2EqUitsKk4rYypHLHNbMTJdPW8qdHQrYSpEK2wqVitjKiQsc1sxXT11KkwraCpYK2YqRitkKlEsc1s1XT11KkEraCp5K2YqeitkKmF0LHNbOV09dSpIK2gqUitmKk4rZCpHLHNbMTNdPXUqdHQraCpEK2YqVitkKiQsc1syXT1nKkwreCpYK3YqRittKlEsc1s2XT1nKkEreCp5K3YqeittKmF0LHNbMTBdPWcqSCt4KlIrdipOK20qRyxzWzE0XT1nKnR0K3gqRCt2KlYrbSokLHNbM109cCpMK2IqWCtfKkYrUypRLHNbN109cCpBK2IqeStfKnorUyphdCxzWzExXT1wKkgrYipSK18qTitTKkcsc1sxNV09cCp0dCtiKkQrXypWK1MqJCx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2xldCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVs0XSo9dCxlWzhdKj10LGVbMTJdKj10LGVbMV0qPXQsZVs1XSo9dCxlWzldKj10LGVbMTNdKj10LGVbMl0qPXQsZVs2XSo9dCxlWzEwXSo9dCxlWzE0XSo9dCxlWzNdKj10LGVbN10qPXQsZVsxMV0qPXQsZVsxNV0qPXQsdGhpc31kZXRlcm1pbmFudCgpe2xldCB0PXRoaXMuZWxlbWVudHMsZT10WzBdLGk9dFs0XSxyPXRbOF0scz10WzEyXSxvPXRbMV0sYT10WzVdLGw9dFs5XSxjPXRbMTNdLHU9dFsyXSxoPXRbNl0sZj10WzEwXSxkPXRbMTRdLGc9dFszXSx4PXRbN10sdj10WzExXSxtPXRbMTVdO3JldHVybiBnKigrcypsKmgtcipjKmgtcyphKmYraSpjKmYrciphKmQtaSpsKmQpK3gqKCtlKmwqZC1lKmMqZitzKm8qZi1yKm8qZCtyKmMqdS1zKmwqdSkrdiooK2UqYypoLWUqYSpkLXMqbypoK2kqbypkK3MqYSp1LWkqYyp1KSttKigtciphKnUtZSpsKmgrZSphKmYrcipvKmgtaSpvKmYraSpsKnUpfXRyYW5zcG9zZSgpe2xldCB0PXRoaXMuZWxlbWVudHMsZTtyZXR1cm4gZT10WzFdLHRbMV09dFs0XSx0WzRdPWUsZT10WzJdLHRbMl09dFs4XSx0WzhdPWUsZT10WzZdLHRbNl09dFs5XSx0WzldPWUsZT10WzNdLHRbM109dFsxMl0sdFsxMl09ZSxlPXRbN10sdFs3XT10WzEzXSx0WzEzXT1lLGU9dFsxMV0sdFsxMV09dFsxNF0sdFsxNF09ZSx0aGlzfXNldFBvc2l0aW9uKHQsZSxpKXtsZXQgcj10aGlzLmVsZW1lbnRzO3JldHVybiB0LmlzVmVjdG9yMz8oclsxMl09dC54LHJbMTNdPXQueSxyWzE0XT10LnopOihyWzEyXT10LHJbMTNdPWUsclsxNF09aSksdGhpc31pbnZlcnQoKXtsZXQgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxpPXRbMV0scj10WzJdLHM9dFszXSxvPXRbNF0sYT10WzVdLGw9dFs2XSxjPXRbN10sdT10WzhdLGg9dFs5XSxmPXRbMTBdLGQ9dFsxMV0sZz10WzEyXSx4PXRbMTNdLHY9dFsxNF0sbT10WzE1XSxwPWgqdipjLXgqZipjK3gqbCpkLWEqdipkLWgqbCptK2EqZiptLGI9ZypmKmMtdSp2KmMtZypsKmQrbyp2KmQrdSpsKm0tbypmKm0sXz11KngqYy1nKmgqYytnKmEqZC1vKngqZC11KmEqbStvKmgqbSxTPWcqaCpsLXUqeCpsLWcqYSpmK28qeCpmK3UqYSp2LW8qaCp2LEw9ZSpwK2kqYityKl8rcypTO2lmKEw9PT0wKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKTtsZXQgQT0xL0w7cmV0dXJuIHRbMF09cCpBLHRbMV09KHgqZipzLWgqdipzLXgqcipkK2kqdipkK2gqciptLWkqZiptKSpBLHRbMl09KGEqdipzLXgqbCpzK3gqcipjLWkqdipjLWEqciptK2kqbCptKSpBLHRbM109KGgqbCpzLWEqZipzLWgqcipjK2kqZipjK2EqcipkLWkqbCpkKSpBLHRbNF09YipBLHRbNV09KHUqdipzLWcqZipzK2cqcipkLWUqdipkLXUqciptK2UqZiptKSpBLHRbNl09KGcqbCpzLW8qdipzLWcqcipjK2UqdipjK28qciptLWUqbCptKSpBLHRbN109KG8qZipzLXUqbCpzK3UqcipjLWUqZipjLW8qcipkK2UqbCpkKSpBLHRbOF09XypBLHRbOV09KGcqaCpzLXUqeCpzLWcqaSpkK2UqeCpkK3UqaSptLWUqaCptKSpBLHRbMTBdPShvKngqcy1nKmEqcytnKmkqYy1lKngqYy1vKmkqbStlKmEqbSkqQSx0WzExXT0odSphKnMtbypoKnMtdSppKmMrZSpoKmMrbyppKmQtZSphKmQpKkEsdFsxMl09UypBLHRbMTNdPSh1Kngqci1nKmgqcitnKmkqZi1lKngqZi11KmkqditlKmgqdikqQSx0WzE0XT0oZyphKnItbyp4KnItZyppKmwrZSp4KmwrbyppKnYtZSphKnYpKkEsdFsxNV09KG8qaCpyLXUqYSpyK3UqaSpsLWUqaCpsLW8qaSpmK2UqYSpmKSpBLHRoaXN9c2NhbGUodCl7bGV0IGU9dGhpcy5lbGVtZW50cyxpPXQueCxyPXQueSxzPXQuejtyZXR1cm4gZVswXSo9aSxlWzRdKj1yLGVbOF0qPXMsZVsxXSo9aSxlWzVdKj1yLGVbOV0qPXMsZVsyXSo9aSxlWzZdKj1yLGVbMTBdKj1zLGVbM10qPWksZVs3XSo9cixlWzExXSo9cyx0aGlzfWdldE1heFNjYWxlT25BeGlzKCl7bGV0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdLGk9dFs0XSp0WzRdK3RbNV0qdFs1XSt0WzZdKnRbNl0scj10WzhdKnRbOF0rdFs5XSp0WzldK3RbMTBdKnRbMTBdO3JldHVybiBNYXRoLnNxcnQoTWF0aC5tYXgoZSxpLHIpKX1tYWtlVHJhbnNsYXRpb24odCxlLGkpe3JldHVybiB0aGlzLnNldCgxLDAsMCx0LDAsMSwwLGUsMCwwLDEsaSwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvblgodCl7bGV0IGU9TWF0aC5jb3ModCksaT1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLGUsLWksMCwwLGksZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWSh0KXtsZXQgZT1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChlLDAsaSwwLDAsMSwwLDAsLWksMCxlLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25aKHQpe2xldCBlPU1hdGguY29zKHQpLGk9TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsLWksMCwwLGksZSwwLDAsMCwwLDEsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbkF4aXModCxlKXtsZXQgaT1NYXRoLmNvcyhlKSxyPU1hdGguc2luKGUpLHM9MS1pLG89dC54LGE9dC55LGw9dC56LGM9cypvLHU9cyphO3JldHVybiB0aGlzLnNldChjKm8raSxjKmEtcipsLGMqbCtyKmEsMCxjKmErcipsLHUqYStpLHUqbC1yKm8sMCxjKmwtciphLHUqbCtyKm8scypsKmwraSwwLDAsMCwwLDEpLHRoaXN9bWFrZVNjYWxlKHQsZSxpKXtyZXR1cm4gdGhpcy5zZXQodCwwLDAsMCwwLGUsMCwwLDAsMCxpLDAsMCwwLDAsMSksdGhpc31tYWtlU2hlYXIodCxlLGkscixzLG8pe3JldHVybiB0aGlzLnNldCgxLGkscywwLHQsMSxvLDAsZSxyLDEsMCwwLDAsMCwxKSx0aGlzfWNvbXBvc2UodCxlLGkpe2xldCByPXRoaXMuZWxlbWVudHMscz1lLl94LG89ZS5feSxhPWUuX3osbD1lLl93LGM9cytzLHU9bytvLGg9YSthLGY9cypjLGQ9cyp1LGc9cypoLHg9byp1LHY9bypoLG09YSpoLHA9bCpjLGI9bCp1LF89bCpoLFM9aS54LEw9aS55LEE9aS56O3JldHVybiByWzBdPSgxLSh4K20pKSpTLHJbMV09KGQrXykqUyxyWzJdPShnLWIpKlMsclszXT0wLHJbNF09KGQtXykqTCxyWzVdPSgxLShmK20pKSpMLHJbNl09KHYrcCkqTCxyWzddPTAscls4XT0oZytiKSpBLHJbOV09KHYtcCkqQSxyWzEwXT0oMS0oZit4KSkqQSxyWzExXT0wLHJbMTJdPXQueCxyWzEzXT10LnksclsxNF09dC56LHJbMTVdPTEsdGhpc31kZWNvbXBvc2UodCxlLGkpe2xldCByPXRoaXMuZWxlbWVudHMscz14ci5zZXQoclswXSxyWzFdLHJbMl0pLmxlbmd0aCgpLG89eHIuc2V0KHJbNF0scls1XSxyWzZdKS5sZW5ndGgoKSxhPXhyLnNldChyWzhdLHJbOV0sclsxMF0pLmxlbmd0aCgpO3RoaXMuZGV0ZXJtaW5hbnQoKTwwJiYocz0tcyksdC54PXJbMTJdLHQueT1yWzEzXSx0Lno9clsxNF0sS2UuY29weSh0aGlzKTtsZXQgYz0xL3MsdT0xL28saD0xL2E7cmV0dXJuIEtlLmVsZW1lbnRzWzBdKj1jLEtlLmVsZW1lbnRzWzFdKj1jLEtlLmVsZW1lbnRzWzJdKj1jLEtlLmVsZW1lbnRzWzRdKj11LEtlLmVsZW1lbnRzWzVdKj11LEtlLmVsZW1lbnRzWzZdKj11LEtlLmVsZW1lbnRzWzhdKj1oLEtlLmVsZW1lbnRzWzldKj1oLEtlLmVsZW1lbnRzWzEwXSo9aCxlLnNldEZyb21Sb3RhdGlvbk1hdHJpeChLZSksaS54PXMsaS55PW8saS56PWEsdGhpc31tYWtlUGVyc3BlY3RpdmUodCxlLGkscixzLG8pe289PT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLiIpO2xldCBhPXRoaXMuZWxlbWVudHMsbD0yKnMvKGUtdCksYz0yKnMvKGktciksdT0oZSt0KS8oZS10KSxoPShpK3IpLyhpLXIpLGY9LShvK3MpLyhvLXMpLGQ9LTIqbypzLyhvLXMpO3JldHVybiBhWzBdPWwsYVs0XT0wLGFbOF09dSxhWzEyXT0wLGFbMV09MCxhWzVdPWMsYVs5XT1oLGFbMTNdPTAsYVsyXT0wLGFbNl09MCxhWzEwXT1mLGFbMTRdPWQsYVszXT0wLGFbN109MCxhWzExXT0tMSxhWzE1XT0wLHRoaXN9bWFrZU9ydGhvZ3JhcGhpYyh0LGUsaSxyLHMsbyl7bGV0IGE9dGhpcy5lbGVtZW50cyxsPTEvKGUtdCksYz0xLyhpLXIpLHU9MS8oby1zKSxoPShlK3QpKmwsZj0oaStyKSpjLGQ9KG8rcykqdTtyZXR1cm4gYVswXT0yKmwsYVs0XT0wLGFbOF09MCxhWzEyXT0taCxhWzFdPTAsYVs1XT0yKmMsYVs5XT0wLGFbMTNdPS1mLGFbMl09MCxhWzZdPTAsYVsxMF09LTIqdSxhWzE0XT0tZCxhWzNdPTAsYVs3XT0wLGFbMTFdPTAsYVsxNV09MSx0aGlzfWVxdWFscyh0KXtsZXQgZT10aGlzLmVsZW1lbnRzLGk9dC5lbGVtZW50cztmb3IobGV0IHI9MDtyPDE2O3IrKylpZihlW3JdIT09aVtyXSlyZXR1cm4hMTtyZXR1cm4hMH1mcm9tQXJyYXkodCxlPTApe2ZvcihsZXQgaT0wO2k8MTY7aSsrKXRoaXMuZWxlbWVudHNbaV09dFtpK2VdO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxlPTApe2xldCBpPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbZV09aVswXSx0W2UrMV09aVsxXSx0W2UrMl09aVsyXSx0W2UrM109aVszXSx0W2UrNF09aVs0XSx0W2UrNV09aVs1XSx0W2UrNl09aVs2XSx0W2UrN109aVs3XSx0W2UrOF09aVs4XSx0W2UrOV09aVs5XSx0W2UrMTBdPWlbMTBdLHRbZSsxMV09aVsxMV0sdFtlKzEyXT1pWzEyXSx0W2UrMTNdPWlbMTNdLHRbZSsxNF09aVsxNF0sdFtlKzE1XT1pWzE1XSx0fX07d3QucHJvdG90eXBlLmlzTWF0cml4ND0hMDt2YXIgeHI9bmV3IFQsS2U9bmV3IHd0LFl3PW5ldyBUKDAsMCwwKSxadz1uZXcgVCgxLDEsMSksWm49bmV3IFQsU2E9bmV3IFQsa2U9bmV3IFQscmc9bmV3IHd0LHNnPW5ldyBFZSxhaT1jbGFzc3tjb25zdHJ1Y3Rvcih0PTAsZT0wLGk9MCxyPWFpLkRlZmF1bHRPcmRlcil7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PWksdGhpcy5fb3JkZXI9cn1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgb3JkZXIoKXtyZXR1cm4gdGhpcy5fb3JkZXJ9c2V0IG9yZGVyKHQpe3RoaXMuX29yZGVyPXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LGUsaSxyPXRoaXMuX29yZGVyKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PWksdGhpcy5fb3JkZXI9cix0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl9vcmRlcil9Y29weSh0KXtyZXR1cm4gdGhpcy5feD10Ll94LHRoaXMuX3k9dC5feSx0aGlzLl96PXQuX3osdGhpcy5fb3JkZXI9dC5fb3JkZXIsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQsZT10aGlzLl9vcmRlcixpPSEwKXtsZXQgcj10LmVsZW1lbnRzLHM9clswXSxvPXJbNF0sYT1yWzhdLGw9clsxXSxjPXJbNV0sdT1yWzldLGg9clsyXSxmPXJbNl0sZD1yWzEwXTtzd2l0Y2goZSl7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKEllKGEsLTEsMSkpLE1hdGguYWJzKGEpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIoLXUsZCksdGhpcy5fej1NYXRoLmF0YW4yKC1vLHMpKToodGhpcy5feD1NYXRoLmF0YW4yKGYsYyksdGhpcy5fej0wKTticmVhaztjYXNlIllYWiI6dGhpcy5feD1NYXRoLmFzaW4oLUllKHUsLTEsMSkpLE1hdGguYWJzKHUpPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIoYSxkKSx0aGlzLl96PU1hdGguYXRhbjIobCxjKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtaCxzKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PU1hdGguYXNpbihJZShmLC0xLDEpKSxNYXRoLmFicyhmKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC1oLGQpLHRoaXMuX3o9TWF0aC5hdGFuMigtbyxjKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIobCxzKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC1JZShoLC0xLDEpKSxNYXRoLmFicyhoKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKGYsZCksdGhpcy5fej1NYXRoLmF0YW4yKGwscykpOih0aGlzLl94PTAsdGhpcy5fej1NYXRoLmF0YW4yKC1vLGMpKTticmVhaztjYXNlIllaWCI6dGhpcy5fej1NYXRoLmFzaW4oSWUobCwtMSwxKSksTWF0aC5hYnMobCk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtdSxjKSx0aGlzLl95PU1hdGguYXRhbjIoLWgscykpOih0aGlzLl94PTAsdGhpcy5feT1NYXRoLmF0YW4yKGEsZCkpO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl96PU1hdGguYXNpbigtSWUobywtMSwxKSksTWF0aC5hYnMobyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihmLGMpLHRoaXMuX3k9TWF0aC5hdGFuMihhLHMpKToodGhpcy5feD1NYXRoLmF0YW4yKC11LGQpLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitlKX1yZXR1cm4gdGhpcy5fb3JkZXI9ZSxpPT09ITAmJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQsZSxpKXtyZXR1cm4gcmcubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5zZXRGcm9tUm90YXRpb25NYXRyaXgocmcsZSxpKX1zZXRGcm9tVmVjdG9yMyh0LGU9dGhpcy5fb3JkZXIpe3JldHVybiB0aGlzLnNldCh0LngsdC55LHQueixlKX1yZW9yZGVyKHQpe3JldHVybiBzZy5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbihzZyx0KX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX29yZGVyPT09dGhpcy5fb3JkZXJ9ZnJvbUFycmF5KHQpe3JldHVybiB0aGlzLl94PXRbMF0sdGhpcy5feT10WzFdLHRoaXMuX3o9dFsyXSx0WzNdIT09dm9pZCAwJiYodGhpcy5fb3JkZXI9dFszXSksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5feCx0W2UrMV09dGhpcy5feSx0W2UrMl09dGhpcy5feix0W2UrM109dGhpcy5fb3JkZXIsdH10b1ZlY3RvcjModCl7cmV0dXJuIHQ/dC5zZXQodGhpcy5feCx0aGlzLl95LHRoaXMuX3opOm5ldyBUKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KX1fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX07YWkucHJvdG90eXBlLmlzRXVsZXI9ITA7YWkuRGVmYXVsdE9yZGVyPSJYWVoiO2FpLlJvdGF0aW9uT3JkZXJzPVsiWFlaIiwiWVpYIiwiWlhZIiwiWFpZIiwiWVhaIiwiWllYIl07dmFyIG5sPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5tYXNrPTF9c2V0KHQpe3RoaXMubWFzaz0oMTw8dHwwKT4+PjB9ZW5hYmxlKHQpe3RoaXMubWFza3w9MTw8dHwwfWVuYWJsZUFsbCgpe3RoaXMubWFzaz0tMX10b2dnbGUodCl7dGhpcy5tYXNrXj0xPDx0fDB9ZGlzYWJsZSh0KXt0aGlzLm1hc2smPX4oMTw8dHwwKX1kaXNhYmxlQWxsKCl7dGhpcy5tYXNrPTB9dGVzdCh0KXtyZXR1cm4odGhpcy5tYXNrJnQubWFzaykhPT0wfWlzRW5hYmxlZCh0KXtyZXR1cm4odGhpcy5tYXNrJigxPDx0fDApKSE9PTB9fSxKdz0wLG9nPW5ldyBULHlyPW5ldyBFZSxSbj1uZXcgd3QsRWE9bmV3IFQsa3M9bmV3IFQsJHc9bmV3IFQsS3c9bmV3IEVlLGFnPW5ldyBUKDEsMCwwKSxsZz1uZXcgVCgwLDEsMCksY2c9bmV3IFQoMCwwLDEpLFF3PXt0eXBlOiJhZGRlZCJ9LHVnPXt0eXBlOiJyZW1vdmVkIn0sa3Q9Y2xhc3MgZXh0ZW5kcyBJbntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6SncrK30pLHRoaXMudXVpZD10bigpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik9iamVjdDNEIix0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49W10sdGhpcy51cD1rdC5EZWZhdWx0VXAuY2xvbmUoKTtsZXQgdD1uZXcgVCxlPW5ldyBhaSxpPW5ldyBFZSxyPW5ldyBUKDEsMSwxKTtmdW5jdGlvbiBzKCl7aS5zZXRGcm9tRXVsZXIoZSwhMSl9ZnVuY3Rpb24gbygpe2Uuc2V0RnJvbVF1YXRlcm5pb24oaSx2b2lkIDAsITEpfWUuX29uQ2hhbmdlKHMpLGkuX29uQ2hhbmdlKG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3Bvc2l0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp0fSxyb3RhdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZX0scXVhdGVybmlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6aX0sc2NhbGU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnJ9LG1vZGVsVmlld01hdHJpeDp7dmFsdWU6bmV3IHd0fSxub3JtYWxNYXRyaXg6e3ZhbHVlOm5ldyBkZX19KSx0aGlzLm1hdHJpeD1uZXcgd3QsdGhpcy5tYXRyaXhXb3JsZD1uZXcgd3QsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPWt0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0aGlzLmxheWVycz1uZXcgbmwsdGhpcy52aXNpYmxlPSEwLHRoaXMuY2FzdFNoYWRvdz0hMSx0aGlzLnJlY2VpdmVTaGFkb3c9ITEsdGhpcy5mcnVzdHVtQ3VsbGVkPSEwLHRoaXMucmVuZGVyT3JkZXI9MCx0aGlzLmFuaW1hdGlvbnM9W10sdGhpcy51c2VyRGF0YT17fX1vbkJlZm9yZVJlbmRlcigpe31vbkFmdGVyUmVuZGVyKCl7fWFwcGx5TWF0cml4NCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5tYXRyaXgucHJlbXVsdGlwbHkodCksdGhpcy5tYXRyaXguZGVjb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KHQpLHRoaXN9c2V0Um90YXRpb25Gcm9tQXhpc0FuZ2xlKHQsZSl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUodCxlKX1zZXRSb3RhdGlvbkZyb21FdWxlcih0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKHQsITApfXNldFJvdGF0aW9uRnJvbU1hdHJpeCh0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpfXNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7dGhpcy5xdWF0ZXJuaW9uLmNvcHkodCl9cm90YXRlT25BeGlzKHQsZSl7cmV0dXJuIHlyLnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ubXVsdGlwbHkoeXIpLHRoaXN9cm90YXRlT25Xb3JsZEF4aXModCxlKXtyZXR1cm4geXIuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh5ciksdGhpc31yb3RhdGVYKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhhZyx0KX1yb3RhdGVZKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhsZyx0KX1yb3RhdGVaKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhjZyx0KX10cmFuc2xhdGVPbkF4aXModCxlKXtyZXR1cm4gb2cuY29weSh0KS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKSx0aGlzLnBvc2l0aW9uLmFkZChvZy5tdWx0aXBseVNjYWxhcihlKSksdGhpc310cmFuc2xhdGVYKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhhZyx0KX10cmFuc2xhdGVZKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhsZyx0KX10cmFuc2xhdGVaKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhjZyx0KX1sb2NhbFRvV29ybGQodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpfXdvcmxkVG9Mb2NhbCh0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQoUm4uY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKSl9bG9va0F0KHQsZSxpKXt0LmlzVmVjdG9yMz9FYS5jb3B5KHQpOkVhLnNldCh0LGUsaSk7bGV0IHI9dGhpcy5wYXJlbnQ7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksa3Muc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpLHRoaXMuaXNDYW1lcmF8fHRoaXMuaXNMaWdodD9Sbi5sb29rQXQoa3MsRWEsdGhpcy51cCk6Um4ubG9va0F0KEVhLGtzLHRoaXMudXApLHRoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgoUm4pLHImJihSbi5leHRyYWN0Um90YXRpb24oci5tYXRyaXhXb3JsZCkseXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KFJuKSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoeXIuaW52ZXJ0KCkpKX1hZGQodCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRoaXMuYWRkKGFyZ3VtZW50c1tlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIHQ9PT10aGlzPyhjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3QzRC5hZGQ6IG9iamVjdCBjYW4ndCBiZSBhZGRlZCBhcyBhIGNoaWxkIG9mIGl0c2VsZi4iLHQpLHRoaXMpOih0JiZ0LmlzT2JqZWN0M0Q/KHQucGFyZW50IT09bnVsbCYmdC5wYXJlbnQucmVtb3ZlKHQpLHQucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlbi5wdXNoKHQpLHQuZGlzcGF0Y2hFdmVudChRdykpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC4iLHQpLHRoaXMpfXJlbW92ZSh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspdGhpcy5yZW1vdmUoYXJndW1lbnRzW2ldKTtyZXR1cm4gdGhpc31sZXQgZT10aGlzLmNoaWxkcmVuLmluZGV4T2YodCk7cmV0dXJuIGUhPT0tMSYmKHQucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbi5zcGxpY2UoZSwxKSx0LmRpc3BhdGNoRXZlbnQodWcpKSx0aGlzfXJlbW92ZUZyb21QYXJlbnQoKXtsZXQgdD10aGlzLnBhcmVudDtyZXR1cm4gdCE9PW51bGwmJnQucmVtb3ZlKHRoaXMpLHRoaXN9Y2xlYXIoKXtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrKyl7bGV0IGU9dGhpcy5jaGlsZHJlblt0XTtlLnBhcmVudD1udWxsLGUuZGlzcGF0Y2hFdmVudCh1Zyl9cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoPTAsdGhpc31hdHRhY2godCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLFJuLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksdC5wYXJlbnQhPT1udWxsJiYodC5wYXJlbnQudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLFJuLm11bHRpcGx5KHQucGFyZW50Lm1hdHJpeFdvcmxkKSksdC5hcHBseU1hdHJpeDQoUm4pLHRoaXMuYWRkKHQpLHQudXBkYXRlV29ybGRNYXRyaXgoITEsITApLHRoaXN9Z2V0T2JqZWN0QnlJZCh0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJpZCIsdCl9Z2V0T2JqZWN0QnlOYW1lKHQpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoIm5hbWUiLHQpfWdldE9iamVjdEJ5UHJvcGVydHkodCxlKXtpZih0aGlzW3RdPT09ZSlyZXR1cm4gdGhpcztmb3IobGV0IGk9MCxyPXRoaXMuY2hpbGRyZW4ubGVuZ3RoO2k8cjtpKyspe2xldCBvPXRoaXMuY2hpbGRyZW5baV0uZ2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpO2lmKG8hPT12b2lkIDApcmV0dXJuIG99fWdldFdvcmxkUG9zaXRpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpfWdldFdvcmxkUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2Uoa3MsdCwkdyksdH1nZXRXb3JsZFNjYWxlKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShrcyxLdyx0KSx0fWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2xldCBlPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KGVbOF0sZVs5XSxlWzEwXSkubm9ybWFsaXplKCl9cmF5Y2FzdCgpe310cmF2ZXJzZSh0KXt0KHRoaXMpO2xldCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBpPTAscj1lLmxlbmd0aDtpPHI7aSsrKWVbaV0udHJhdmVyc2UodCl9dHJhdmVyc2VWaXNpYmxlKHQpe2lmKHRoaXMudmlzaWJsZT09PSExKXJldHVybjt0KHRoaXMpO2xldCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBpPTAscj1lLmxlbmd0aDtpPHI7aSsrKWVbaV0udHJhdmVyc2VWaXNpYmxlKHQpfXRyYXZlcnNlQW5jZXN0b3JzKHQpe2xldCBlPXRoaXMucGFyZW50O2UhPT1udWxsJiYodChlKSxlLnRyYXZlcnNlQW5jZXN0b3JzKHQpKX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5jb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH11cGRhdGVNYXRyaXhXb3JsZCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksKHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZXx8dCkmJih0aGlzLnBhcmVudD09PW51bGw/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0PSEwKTtsZXQgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgaT0wLHI9ZS5sZW5ndGg7aTxyO2krKyllW2ldLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7bGV0IGk9dGhpcy5wYXJlbnQ7aWYodD09PSEwJiZpIT09bnVsbCYmaS51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMucGFyZW50PT09bnVsbD90aGlzLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5tYXRyaXgpOnRoaXMubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLnBhcmVudC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeCksZT09PSEwKXtsZXQgcj10aGlzLmNoaWxkcmVuO2ZvcihsZXQgcz0wLG89ci5sZW5ndGg7czxvO3MrKylyW3NdLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX19dG9KU09OKHQpe2xldCBlPXQ9PT12b2lkIDB8fHR5cGVvZiB0PT0ic3RyaW5nIixpPXt9O2UmJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxpLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2xldCByPXt9O3IudXVpZD10aGlzLnV1aWQsci50eXBlPXRoaXMudHlwZSx0aGlzLm5hbWUhPT0iIiYmKHIubmFtZT10aGlzLm5hbWUpLHRoaXMuY2FzdFNoYWRvdz09PSEwJiYoci5jYXN0U2hhZG93PSEwKSx0aGlzLnJlY2VpdmVTaGFkb3c9PT0hMCYmKHIucmVjZWl2ZVNoYWRvdz0hMCksdGhpcy52aXNpYmxlPT09ITEmJihyLnZpc2libGU9ITEpLHRoaXMuZnJ1c3R1bUN1bGxlZD09PSExJiYoci5mcnVzdHVtQ3VsbGVkPSExKSx0aGlzLnJlbmRlck9yZGVyIT09MCYmKHIucmVuZGVyT3JkZXI9dGhpcy5yZW5kZXJPcmRlciksSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkhPT0ie30iJiYoci51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxyLmxheWVycz10aGlzLmxheWVycy5tYXNrLHIubWF0cml4PXRoaXMubWF0cml4LnRvQXJyYXkoKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9PT0hMSYmKHIubWF0cml4QXV0b1VwZGF0ZT0hMSksdGhpcy5pc0luc3RhbmNlZE1lc2gmJihyLnR5cGU9Ikluc3RhbmNlZE1lc2giLHIuY291bnQ9dGhpcy5jb3VudCxyLmluc3RhbmNlTWF0cml4PXRoaXMuaW5zdGFuY2VNYXRyaXgudG9KU09OKCksdGhpcy5pbnN0YW5jZUNvbG9yIT09bnVsbCYmKHIuaW5zdGFuY2VDb2xvcj10aGlzLmluc3RhbmNlQ29sb3IudG9KU09OKCkpKTtmdW5jdGlvbiBzKGEsbCl7cmV0dXJuIGFbbC51dWlkXT09PXZvaWQgMCYmKGFbbC51dWlkXT1sLnRvSlNPTih0KSksbC51dWlkfWlmKHRoaXMuaXNTY2VuZSl0aGlzLmJhY2tncm91bmQmJih0aGlzLmJhY2tncm91bmQuaXNDb2xvcj9yLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kLnRvSlNPTigpOnRoaXMuYmFja2dyb3VuZC5pc1RleHR1cmUmJihyLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kLnRvSlNPTih0KS51dWlkKSksdGhpcy5lbnZpcm9ubWVudCYmdGhpcy5lbnZpcm9ubWVudC5pc1RleHR1cmUmJihyLmVudmlyb25tZW50PXRoaXMuZW52aXJvbm1lbnQudG9KU09OKHQpLnV1aWQpO2Vsc2UgaWYodGhpcy5pc01lc2h8fHRoaXMuaXNMaW5lfHx0aGlzLmlzUG9pbnRzKXtyLmdlb21ldHJ5PXModC5nZW9tZXRyaWVzLHRoaXMuZ2VvbWV0cnkpO2xldCBhPXRoaXMuZ2VvbWV0cnkucGFyYW1ldGVycztpZihhIT09dm9pZCAwJiZhLnNoYXBlcyE9PXZvaWQgMCl7bGV0IGw9YS5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShsKSlmb3IobGV0IGM9MCx1PWwubGVuZ3RoO2M8dTtjKyspe2xldCBoPWxbY107cyh0LnNoYXBlcyxoKX1lbHNlIHModC5zaGFwZXMsbCl9fWlmKHRoaXMuaXNTa2lubmVkTWVzaCYmKHIuYmluZE1vZGU9dGhpcy5iaW5kTW9kZSxyLmJpbmRNYXRyaXg9dGhpcy5iaW5kTWF0cml4LnRvQXJyYXkoKSx0aGlzLnNrZWxldG9uIT09dm9pZCAwJiYocyh0LnNrZWxldG9ucyx0aGlzLnNrZWxldG9uKSxyLnNrZWxldG9uPXRoaXMuc2tlbGV0b24udXVpZCkpLHRoaXMubWF0ZXJpYWwhPT12b2lkIDApaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7bGV0IGE9W107Zm9yKGxldCBsPTAsYz10aGlzLm1hdGVyaWFsLmxlbmd0aDtsPGM7bCsrKWEucHVzaChzKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWxbbF0pKTtyLm1hdGVyaWFsPWF9ZWxzZSByLm1hdGVyaWFsPXModC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbCk7aWYodGhpcy5jaGlsZHJlbi5sZW5ndGg+MCl7ci5jaGlsZHJlbj1bXTtmb3IobGV0IGE9MDthPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2ErKylyLmNoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlblthXS50b0pTT04odCkub2JqZWN0KX1pZih0aGlzLmFuaW1hdGlvbnMubGVuZ3RoPjApe3IuYW5pbWF0aW9ucz1bXTtmb3IobGV0IGE9MDthPHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg7YSsrKXtsZXQgbD10aGlzLmFuaW1hdGlvbnNbYV07ci5hbmltYXRpb25zLnB1c2gocyh0LmFuaW1hdGlvbnMsbCkpfX1pZihlKXtsZXQgYT1vKHQuZ2VvbWV0cmllcyksbD1vKHQubWF0ZXJpYWxzKSxjPW8odC50ZXh0dXJlcyksdT1vKHQuaW1hZ2VzKSxoPW8odC5zaGFwZXMpLGY9byh0LnNrZWxldG9ucyksZD1vKHQuYW5pbWF0aW9ucyk7YS5sZW5ndGg+MCYmKGkuZ2VvbWV0cmllcz1hKSxsLmxlbmd0aD4wJiYoaS5tYXRlcmlhbHM9bCksYy5sZW5ndGg+MCYmKGkudGV4dHVyZXM9YyksdS5sZW5ndGg+MCYmKGkuaW1hZ2VzPXUpLGgubGVuZ3RoPjAmJihpLnNoYXBlcz1oKSxmLmxlbmd0aD4wJiYoaS5za2VsZXRvbnM9ZiksZC5sZW5ndGg+MCYmKGkuYW5pbWF0aW9ucz1kKX1yZXR1cm4gaS5vYmplY3Q9cixpO2Z1bmN0aW9uIG8oYSl7bGV0IGw9W107Zm9yKGxldCBjIGluIGEpe2xldCB1PWFbY107ZGVsZXRlIHUubWV0YWRhdGEsbC5wdXNoKHUpfXJldHVybiBsfX1jbG9uZSh0KXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMsdCl9Y29weSh0LGU9ITApe2lmKHRoaXMubmFtZT10Lm5hbWUsdGhpcy51cC5jb3B5KHQudXApLHRoaXMucG9zaXRpb24uY29weSh0LnBvc2l0aW9uKSx0aGlzLnJvdGF0aW9uLm9yZGVyPXQucm90YXRpb24ub3JkZXIsdGhpcy5xdWF0ZXJuaW9uLmNvcHkodC5xdWF0ZXJuaW9uKSx0aGlzLnNjYWxlLmNvcHkodC5zY2FsZSksdGhpcy5tYXRyaXguY29weSh0Lm1hdHJpeCksdGhpcy5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLHRoaXMubWF0cml4QXV0b1VwZGF0ZT10Lm1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPXQubWF0cml4V29ybGROZWVkc1VwZGF0ZSx0aGlzLmxheWVycy5tYXNrPXQubGF5ZXJzLm1hc2ssdGhpcy52aXNpYmxlPXQudmlzaWJsZSx0aGlzLmNhc3RTaGFkb3c9dC5jYXN0U2hhZG93LHRoaXMucmVjZWl2ZVNoYWRvdz10LnJlY2VpdmVTaGFkb3csdGhpcy5mcnVzdHVtQ3VsbGVkPXQuZnJ1c3R1bUN1bGxlZCx0aGlzLnJlbmRlck9yZGVyPXQucmVuZGVyT3JkZXIsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSxlPT09ITApZm9yKGxldCBpPTA7aTx0LmNoaWxkcmVuLmxlbmd0aDtpKyspe2xldCByPXQuY2hpbGRyZW5baV07dGhpcy5hZGQoci5jbG9uZSgpKX1yZXR1cm4gdGhpc319O2t0LkRlZmF1bHRVcD1uZXcgVCgwLDEsMCk7a3QuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU9ITA7a3QucHJvdG90eXBlLmlzT2JqZWN0M0Q9ITA7dmFyIFFlPW5ldyBULExuPW5ldyBULGR1PW5ldyBULFBuPW5ldyBULHZyPW5ldyBULF9yPW5ldyBULGhnPW5ldyBULHB1PW5ldyBULG11PW5ldyBULGd1PW5ldyBULHJlPWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IFQsZT1uZXcgVCxpPW5ldyBUKXt0aGlzLmE9dCx0aGlzLmI9ZSx0aGlzLmM9aX1zdGF0aWMgZ2V0Tm9ybWFsKHQsZSxpLHIpe3Iuc3ViVmVjdG9ycyhpLGUpLFFlLnN1YlZlY3RvcnModCxlKSxyLmNyb3NzKFFlKTtsZXQgcz1yLmxlbmd0aFNxKCk7cmV0dXJuIHM+MD9yLm11bHRpcGx5U2NhbGFyKDEvTWF0aC5zcXJ0KHMpKTpyLnNldCgwLDAsMCl9c3RhdGljIGdldEJhcnljb29yZCh0LGUsaSxyLHMpe1FlLnN1YlZlY3RvcnMocixlKSxMbi5zdWJWZWN0b3JzKGksZSksZHUuc3ViVmVjdG9ycyh0LGUpO2xldCBvPVFlLmRvdChRZSksYT1RZS5kb3QoTG4pLGw9UWUuZG90KGR1KSxjPUxuLmRvdChMbiksdT1Mbi5kb3QoZHUpLGg9bypjLWEqYTtpZihoPT09MClyZXR1cm4gcy5zZXQoLTIsLTEsLTEpO2xldCBmPTEvaCxkPShjKmwtYSp1KSpmLGc9KG8qdS1hKmwpKmY7cmV0dXJuIHMuc2V0KDEtZC1nLGcsZCl9c3RhdGljIGNvbnRhaW5zUG9pbnQodCxlLGkscil7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxpLHIsUG4pLFBuLng+PTAmJlBuLnk+PTAmJlBuLngrUG4ueTw9MX1zdGF0aWMgZ2V0VVYodCxlLGkscixzLG8sYSxsKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxlLGkscixQbiksbC5zZXQoMCwwKSxsLmFkZFNjYWxlZFZlY3RvcihzLFBuLngpLGwuYWRkU2NhbGVkVmVjdG9yKG8sUG4ueSksbC5hZGRTY2FsZWRWZWN0b3IoYSxQbi56KSxsfXN0YXRpYyBpc0Zyb250RmFjaW5nKHQsZSxpLHIpe3JldHVybiBRZS5zdWJWZWN0b3JzKGksZSksTG4uc3ViVmVjdG9ycyh0LGUpLFFlLmNyb3NzKExuKS5kb3Qocik8MH1zZXQodCxlLGkpe3JldHVybiB0aGlzLmEuY29weSh0KSx0aGlzLmIuY29weShlKSx0aGlzLmMuY29weShpKSx0aGlzfXNldEZyb21Qb2ludHNBbmRJbmRpY2VzKHQsZSxpLHIpe3JldHVybiB0aGlzLmEuY29weSh0W2VdKSx0aGlzLmIuY29weSh0W2ldKSx0aGlzLmMuY29weSh0W3JdKSx0aGlzfXNldEZyb21BdHRyaWJ1dGVBbmRJbmRpY2VzKHQsZSxpLHIpe3JldHVybiB0aGlzLmEuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLHRoaXMuYi5mcm9tQnVmZmVyQXR0cmlidXRlKHQsaSksdGhpcy5jLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxyKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmEuY29weSh0LmEpLHRoaXMuYi5jb3B5KHQuYiksdGhpcy5jLmNvcHkodC5jKSx0aGlzfWdldEFyZWEoKXtyZXR1cm4gUWUuc3ViVmVjdG9ycyh0aGlzLmMsdGhpcy5iKSxMbi5zdWJWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLFFlLmNyb3NzKExuKS5sZW5ndGgoKSouNX1nZXRNaWRwb2ludCh0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLmFkZCh0aGlzLmMpLm11bHRpcGx5U2NhbGFyKDEvMyl9Z2V0Tm9ybWFsKHQpe3JldHVybiByZS5nZXROb3JtYWwodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9Z2V0UGxhbmUodCl7cmV0dXJuIHQuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1nZXRCYXJ5Y29vcmQodCxlKXtyZXR1cm4gcmUuZ2V0QmFyeWNvb3JkKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSl9Z2V0VVYodCxlLGkscixzKXtyZXR1cm4gcmUuZ2V0VVYodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyxlLGkscixzKX1jb250YWluc1BvaW50KHQpe3JldHVybiByZS5jb250YWluc1BvaW50KHQsdGhpcy5hLHRoaXMuYix0aGlzLmMpfWlzRnJvbnRGYWNpbmcodCl7cmV0dXJuIHJlLmlzRnJvbnRGYWNpbmcodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzVHJpYW5nbGUodGhpcyl9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpe2xldCBpPXRoaXMuYSxyPXRoaXMuYixzPXRoaXMuYyxvLGE7dnIuc3ViVmVjdG9ycyhyLGkpLF9yLnN1YlZlY3RvcnMocyxpKSxwdS5zdWJWZWN0b3JzKHQsaSk7bGV0IGw9dnIuZG90KHB1KSxjPV9yLmRvdChwdSk7aWYobDw9MCYmYzw9MClyZXR1cm4gZS5jb3B5KGkpO211LnN1YlZlY3RvcnModCxyKTtsZXQgdT12ci5kb3QobXUpLGg9X3IuZG90KG11KTtpZih1Pj0wJiZoPD11KXJldHVybiBlLmNvcHkocik7bGV0IGY9bCpoLXUqYztpZihmPD0wJiZsPj0wJiZ1PD0wKXJldHVybiBvPWwvKGwtdSksZS5jb3B5KGkpLmFkZFNjYWxlZFZlY3Rvcih2cixvKTtndS5zdWJWZWN0b3JzKHQscyk7bGV0IGQ9dnIuZG90KGd1KSxnPV9yLmRvdChndSk7aWYoZz49MCYmZDw9ZylyZXR1cm4gZS5jb3B5KHMpO2xldCB4PWQqYy1sKmc7aWYoeDw9MCYmYz49MCYmZzw9MClyZXR1cm4gYT1jLyhjLWcpLGUuY29weShpKS5hZGRTY2FsZWRWZWN0b3IoX3IsYSk7bGV0IHY9dSpnLWQqaDtpZih2PD0wJiZoLXU+PTAmJmQtZz49MClyZXR1cm4gaGcuc3ViVmVjdG9ycyhzLHIpLGE9KGgtdSkvKGgtdSsoZC1nKSksZS5jb3B5KHIpLmFkZFNjYWxlZFZlY3RvcihoZyxhKTtsZXQgbT0xLyh2K3grZik7cmV0dXJuIG89eCptLGE9ZiptLGUuY29weShpKS5hZGRTY2FsZWRWZWN0b3IodnIsbykuYWRkU2NhbGVkVmVjdG9yKF9yLGEpfWVxdWFscyh0KXtyZXR1cm4gdC5hLmVxdWFscyh0aGlzLmEpJiZ0LmIuZXF1YWxzKHRoaXMuYikmJnQuYy5lcXVhbHModGhpcy5jKX19LGp3PTAseGU9Y2xhc3MgZXh0ZW5kcyBJbntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6ancrK30pLHRoaXMudXVpZD10bigpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik1hdGVyaWFsIix0aGlzLmZvZz0hMCx0aGlzLmJsZW5kaW5nPSRzLHRoaXMuc2lkZT10byx0aGlzLnZlcnRleENvbG9ycz0hMSx0aGlzLm9wYWNpdHk9MSx0aGlzLnRyYW5zcGFyZW50PSExLHRoaXMuYmxlbmRTcmM9bDAsdGhpcy5ibGVuZERzdD1jMCx0aGlzLmJsZW5kRXF1YXRpb249RHIsdGhpcy5ibGVuZFNyY0FscGhhPW51bGwsdGhpcy5ibGVuZERzdEFscGhhPW51bGwsdGhpcy5ibGVuZEVxdWF0aW9uQWxwaGE9bnVsbCx0aGlzLmRlcHRoRnVuYz1OdSx0aGlzLmRlcHRoVGVzdD0hMCx0aGlzLmRlcHRoV3JpdGU9ITAsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGdW5jPVZ3LHRoaXMuc3RlbmNpbFJlZj0wLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGYWlsPXR1LHRoaXMuc3RlbmNpbFpGYWlsPXR1LHRoaXMuc3RlbmNpbFpQYXNzPXR1LHRoaXMuc3RlbmNpbFdyaXRlPSExLHRoaXMuY2xpcHBpbmdQbGFuZXM9bnVsbCx0aGlzLmNsaXBJbnRlcnNlY3Rpb249ITEsdGhpcy5jbGlwU2hhZG93cz0hMSx0aGlzLnNoYWRvd1NpZGU9bnVsbCx0aGlzLmNvbG9yV3JpdGU9ITAsdGhpcy5hbHBoYVdyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9ITEsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9ITEsdGhpcy52aXNpYmxlPSEwLHRoaXMudG9uZU1hcHBlZD0hMCx0aGlzLnVzZXJEYXRhPXt9LHRoaXMudmVyc2lvbj0wLHRoaXMuX2FscGhhVGVzdD0wfWdldCBhbHBoYVRlc3QoKXtyZXR1cm4gdGhpcy5fYWxwaGFUZXN0fXNldCBhbHBoYVRlc3QodCl7dGhpcy5fYWxwaGFUZXN0PjAhPXQ+MCYmdGhpcy52ZXJzaW9uKyssdGhpcy5fYWxwaGFUZXN0PXR9b25CdWlsZCgpe31vbkJlZm9yZVJlbmRlcigpe31vbkJlZm9yZUNvbXBpbGUoKXt9Y3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl7cmV0dXJuIHRoaXMub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCl9c2V0VmFsdWVzKHQpe2lmKHQhPT12b2lkIDApZm9yKGxldCBlIGluIHQpe2xldCBpPXRbZV07aWYoaT09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogJyIrZSsiJyBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWlmKGU9PT0ic2hhZGluZyIpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9aT09PWEwO2NvbnRpbnVlfWxldCByPXRoaXNbZV07aWYocj09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAnIitlKyInIGlzIG5vdCBhIHByb3BlcnR5IG9mIHRoaXMgbWF0ZXJpYWwuIik7Y29udGludWV9ciYmci5pc0NvbG9yP3Iuc2V0KGkpOnImJnIuaXNWZWN0b3IzJiZpJiZpLmlzVmVjdG9yMz9yLmNvcHkoaSk6dGhpc1tlXT1pfX10b0pTT04odCl7bGV0IGU9dD09PXZvaWQgMHx8dHlwZW9mIHQ9PSJzdHJpbmciO2UmJih0PXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTtsZXQgaT17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ik1hdGVyaWFsIixnZW5lcmF0b3I6Ik1hdGVyaWFsLnRvSlNPTiJ9fTtpLnV1aWQ9dGhpcy51dWlkLGkudHlwZT10aGlzLnR5cGUsdGhpcy5uYW1lIT09IiImJihpLm5hbWU9dGhpcy5uYW1lKSx0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLmlzQ29sb3ImJihpLmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCkpLHRoaXMucm91Z2huZXNzIT09dm9pZCAwJiYoaS5yb3VnaG5lc3M9dGhpcy5yb3VnaG5lc3MpLHRoaXMubWV0YWxuZXNzIT09dm9pZCAwJiYoaS5tZXRhbG5lc3M9dGhpcy5tZXRhbG5lc3MpLHRoaXMuc2hlZW4hPT12b2lkIDAmJihpLnNoZWVuPXRoaXMuc2hlZW4pLHRoaXMuc2hlZW5Db2xvciYmdGhpcy5zaGVlbkNvbG9yLmlzQ29sb3ImJihpLnNoZWVuQ29sb3I9dGhpcy5zaGVlbkNvbG9yLmdldEhleCgpKSx0aGlzLnNoZWVuUm91Z2huZXNzIT09dm9pZCAwJiYoaS5zaGVlblJvdWdobmVzcz10aGlzLnNoZWVuUm91Z2huZXNzKSx0aGlzLmVtaXNzaXZlJiZ0aGlzLmVtaXNzaXZlLmlzQ29sb3ImJihpLmVtaXNzaXZlPXRoaXMuZW1pc3NpdmUuZ2V0SGV4KCkpLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJnRoaXMuZW1pc3NpdmVJbnRlbnNpdHkhPT0xJiYoaS5lbWlzc2l2ZUludGVuc2l0eT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyJiZ0aGlzLnNwZWN1bGFyLmlzQ29sb3ImJihpLnNwZWN1bGFyPXRoaXMuc3BlY3VsYXIuZ2V0SGV4KCkpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHkhPT12b2lkIDAmJihpLnNwZWN1bGFySW50ZW5zaXR5PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXJDb2xvciYmdGhpcy5zcGVjdWxhckNvbG9yLmlzQ29sb3ImJihpLnNwZWN1bGFyQ29sb3I9dGhpcy5zcGVjdWxhckNvbG9yLmdldEhleCgpKSx0aGlzLnNoaW5pbmVzcyE9PXZvaWQgMCYmKGkuc2hpbmluZXNzPXRoaXMuc2hpbmluZXNzKSx0aGlzLmNsZWFyY29hdCE9PXZvaWQgMCYmKGkuY2xlYXJjb2F0PXRoaXMuY2xlYXJjb2F0KSx0aGlzLmNsZWFyY29hdFJvdWdobmVzcyE9PXZvaWQgMCYmKGkuY2xlYXJjb2F0Um91Z2huZXNzPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzKSx0aGlzLmNsZWFyY29hdE1hcCYmdGhpcy5jbGVhcmNvYXRNYXAuaXNUZXh0dXJlJiYoaS5jbGVhcmNvYXRNYXA9dGhpcy5jbGVhcmNvYXRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiZ0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC5pc1RleHR1cmUmJihpLmNsZWFyY29hdFJvdWdobmVzc01hcD10aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAmJnRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLmlzVGV4dHVyZSYmKGkuY2xlYXJjb2F0Tm9ybWFsTWFwPXRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLGkuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9dGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMubWFwJiZ0aGlzLm1hcC5pc1RleHR1cmUmJihpLm1hcD10aGlzLm1hcC50b0pTT04odCkudXVpZCksdGhpcy5tYXRjYXAmJnRoaXMubWF0Y2FwLmlzVGV4dHVyZSYmKGkubWF0Y2FwPXRoaXMubWF0Y2FwLnRvSlNPTih0KS51dWlkKSx0aGlzLmFscGhhTWFwJiZ0aGlzLmFscGhhTWFwLmlzVGV4dHVyZSYmKGkuYWxwaGFNYXA9dGhpcy5hbHBoYU1hcC50b0pTT04odCkudXVpZCksdGhpcy5saWdodE1hcCYmdGhpcy5saWdodE1hcC5pc1RleHR1cmUmJihpLmxpZ2h0TWFwPXRoaXMubGlnaHRNYXAudG9KU09OKHQpLnV1aWQsaS5saWdodE1hcEludGVuc2l0eT10aGlzLmxpZ2h0TWFwSW50ZW5zaXR5KSx0aGlzLmFvTWFwJiZ0aGlzLmFvTWFwLmlzVGV4dHVyZSYmKGkuYW9NYXA9dGhpcy5hb01hcC50b0pTT04odCkudXVpZCxpLmFvTWFwSW50ZW5zaXR5PXRoaXMuYW9NYXBJbnRlbnNpdHkpLHRoaXMuYnVtcE1hcCYmdGhpcy5idW1wTWFwLmlzVGV4dHVyZSYmKGkuYnVtcE1hcD10aGlzLmJ1bXBNYXAudG9KU09OKHQpLnV1aWQsaS5idW1wU2NhbGU9dGhpcy5idW1wU2NhbGUpLHRoaXMubm9ybWFsTWFwJiZ0aGlzLm5vcm1hbE1hcC5pc1RleHR1cmUmJihpLm5vcm1hbE1hcD10aGlzLm5vcm1hbE1hcC50b0pTT04odCkudXVpZCxpLm5vcm1hbE1hcFR5cGU9dGhpcy5ub3JtYWxNYXBUeXBlLGkubm9ybWFsU2NhbGU9dGhpcy5ub3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMuZGlzcGxhY2VtZW50TWFwJiZ0aGlzLmRpc3BsYWNlbWVudE1hcC5pc1RleHR1cmUmJihpLmRpc3BsYWNlbWVudE1hcD10aGlzLmRpc3BsYWNlbWVudE1hcC50b0pTT04odCkudXVpZCxpLmRpc3BsYWNlbWVudFNjYWxlPXRoaXMuZGlzcGxhY2VtZW50U2NhbGUsaS5kaXNwbGFjZW1lbnRCaWFzPXRoaXMuZGlzcGxhY2VtZW50QmlhcyksdGhpcy5yb3VnaG5lc3NNYXAmJnRoaXMucm91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKGkucm91Z2huZXNzTWFwPXRoaXMucm91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1ldGFsbmVzc01hcCYmdGhpcy5tZXRhbG5lc3NNYXAuaXNUZXh0dXJlJiYoaS5tZXRhbG5lc3NNYXA9dGhpcy5tZXRhbG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW1pc3NpdmVNYXAmJnRoaXMuZW1pc3NpdmVNYXAuaXNUZXh0dXJlJiYoaS5lbWlzc2l2ZU1hcD10aGlzLmVtaXNzaXZlTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyTWFwJiZ0aGlzLnNwZWN1bGFyTWFwLmlzVGV4dHVyZSYmKGkuc3BlY3VsYXJNYXA9dGhpcy5zcGVjdWxhck1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcCYmdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC5pc1RleHR1cmUmJihpLnNwZWN1bGFySW50ZW5zaXR5TWFwPXRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJDb2xvck1hcCYmdGhpcy5zcGVjdWxhckNvbG9yTWFwLmlzVGV4dHVyZSYmKGkuc3BlY3VsYXJDb2xvck1hcD10aGlzLnNwZWN1bGFyQ29sb3JNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW52TWFwJiZ0aGlzLmVudk1hcC5pc1RleHR1cmUmJihpLmVudk1hcD10aGlzLmVudk1hcC50b0pTT04odCkudXVpZCx0aGlzLmNvbWJpbmUhPT12b2lkIDAmJihpLmNvbWJpbmU9dGhpcy5jb21iaW5lKSksdGhpcy5lbnZNYXBJbnRlbnNpdHkhPT12b2lkIDAmJihpLmVudk1hcEludGVuc2l0eT10aGlzLmVudk1hcEludGVuc2l0eSksdGhpcy5yZWZsZWN0aXZpdHkhPT12b2lkIDAmJihpLnJlZmxlY3Rpdml0eT10aGlzLnJlZmxlY3Rpdml0eSksdGhpcy5yZWZyYWN0aW9uUmF0aW8hPT12b2lkIDAmJihpLnJlZnJhY3Rpb25SYXRpbz10aGlzLnJlZnJhY3Rpb25SYXRpbyksdGhpcy5ncmFkaWVudE1hcCYmdGhpcy5ncmFkaWVudE1hcC5pc1RleHR1cmUmJihpLmdyYWRpZW50TWFwPXRoaXMuZ3JhZGllbnRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMudHJhbnNtaXNzaW9uIT09dm9pZCAwJiYoaS50cmFuc21pc3Npb249dGhpcy50cmFuc21pc3Npb24pLHRoaXMudHJhbnNtaXNzaW9uTWFwJiZ0aGlzLnRyYW5zbWlzc2lvbk1hcC5pc1RleHR1cmUmJihpLnRyYW5zbWlzc2lvbk1hcD10aGlzLnRyYW5zbWlzc2lvbk1hcC50b0pTT04odCkudXVpZCksdGhpcy50aGlja25lc3MhPT12b2lkIDAmJihpLnRoaWNrbmVzcz10aGlzLnRoaWNrbmVzcyksdGhpcy50aGlja25lc3NNYXAmJnRoaXMudGhpY2tuZXNzTWFwLmlzVGV4dHVyZSYmKGkudGhpY2tuZXNzTWFwPXRoaXMudGhpY2tuZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2UhPT12b2lkIDAmJihpLmF0dGVudWF0aW9uRGlzdGFuY2U9dGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlKSx0aGlzLmF0dGVudWF0aW9uQ29sb3IhPT12b2lkIDAmJihpLmF0dGVudWF0aW9uQ29sb3I9dGhpcy5hdHRlbnVhdGlvbkNvbG9yLmdldEhleCgpKSx0aGlzLnNpemUhPT12b2lkIDAmJihpLnNpemU9dGhpcy5zaXplKSx0aGlzLnNoYWRvd1NpZGUhPT1udWxsJiYoaS5zaGFkb3dTaWRlPXRoaXMuc2hhZG93U2lkZSksdGhpcy5zaXplQXR0ZW51YXRpb24hPT12b2lkIDAmJihpLnNpemVBdHRlbnVhdGlvbj10aGlzLnNpemVBdHRlbnVhdGlvbiksdGhpcy5ibGVuZGluZyE9PSRzJiYoaS5ibGVuZGluZz10aGlzLmJsZW5kaW5nKSx0aGlzLnNpZGUhPT10byYmKGkuc2lkZT10aGlzLnNpZGUpLHRoaXMudmVydGV4Q29sb3JzJiYoaS52ZXJ0ZXhDb2xvcnM9ITApLHRoaXMub3BhY2l0eTwxJiYoaS5vcGFjaXR5PXRoaXMub3BhY2l0eSksdGhpcy50cmFuc3BhcmVudD09PSEwJiYoaS50cmFuc3BhcmVudD10aGlzLnRyYW5zcGFyZW50KSxpLmRlcHRoRnVuYz10aGlzLmRlcHRoRnVuYyxpLmRlcHRoVGVzdD10aGlzLmRlcHRoVGVzdCxpLmRlcHRoV3JpdGU9dGhpcy5kZXB0aFdyaXRlLGkuY29sb3JXcml0ZT10aGlzLmNvbG9yV3JpdGUsaS5hbHBoYVdyaXRlPXRoaXMuYWxwaGFXcml0ZSxpLnN0ZW5jaWxXcml0ZT10aGlzLnN0ZW5jaWxXcml0ZSxpLnN0ZW5jaWxXcml0ZU1hc2s9dGhpcy5zdGVuY2lsV3JpdGVNYXNrLGkuc3RlbmNpbEZ1bmM9dGhpcy5zdGVuY2lsRnVuYyxpLnN0ZW5jaWxSZWY9dGhpcy5zdGVuY2lsUmVmLGkuc3RlbmNpbEZ1bmNNYXNrPXRoaXMuc3RlbmNpbEZ1bmNNYXNrLGkuc3RlbmNpbEZhaWw9dGhpcy5zdGVuY2lsRmFpbCxpLnN0ZW5jaWxaRmFpbD10aGlzLnN0ZW5jaWxaRmFpbCxpLnN0ZW5jaWxaUGFzcz10aGlzLnN0ZW5jaWxaUGFzcyx0aGlzLnJvdGF0aW9uJiZ0aGlzLnJvdGF0aW9uIT09MCYmKGkucm90YXRpb249dGhpcy5yb3RhdGlvbiksdGhpcy5wb2x5Z29uT2Zmc2V0PT09ITAmJihpLnBvbHlnb25PZmZzZXQ9ITApLHRoaXMucG9seWdvbk9mZnNldEZhY3RvciE9PTAmJihpLnBvbHlnb25PZmZzZXRGYWN0b3I9dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yKSx0aGlzLnBvbHlnb25PZmZzZXRVbml0cyE9PTAmJihpLnBvbHlnb25PZmZzZXRVbml0cz10aGlzLnBvbHlnb25PZmZzZXRVbml0cyksdGhpcy5saW5ld2lkdGgmJnRoaXMubGluZXdpZHRoIT09MSYmKGkubGluZXdpZHRoPXRoaXMubGluZXdpZHRoKSx0aGlzLmRhc2hTaXplIT09dm9pZCAwJiYoaS5kYXNoU2l6ZT10aGlzLmRhc2hTaXplKSx0aGlzLmdhcFNpemUhPT12b2lkIDAmJihpLmdhcFNpemU9dGhpcy5nYXBTaXplKSx0aGlzLnNjYWxlIT09dm9pZCAwJiYoaS5zY2FsZT10aGlzLnNjYWxlKSx0aGlzLmRpdGhlcmluZz09PSEwJiYoaS5kaXRoZXJpbmc9ITApLHRoaXMuYWxwaGFUZXN0PjAmJihpLmFscGhhVGVzdD10aGlzLmFscGhhVGVzdCksdGhpcy5hbHBoYVRvQ292ZXJhZ2U9PT0hMCYmKGkuYWxwaGFUb0NvdmVyYWdlPXRoaXMuYWxwaGFUb0NvdmVyYWdlKSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT09PSEwJiYoaS5wcmVtdWx0aXBsaWVkQWxwaGE9dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEpLHRoaXMud2lyZWZyYW1lPT09ITAmJihpLndpcmVmcmFtZT10aGlzLndpcmVmcmFtZSksdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg+MSYmKGkud2lyZWZyYW1lTGluZXdpZHRoPXRoaXMud2lyZWZyYW1lTGluZXdpZHRoKSx0aGlzLndpcmVmcmFtZUxpbmVjYXAhPT0icm91bmQiJiYoaS53aXJlZnJhbWVMaW5lY2FwPXRoaXMud2lyZWZyYW1lTGluZWNhcCksdGhpcy53aXJlZnJhbWVMaW5lam9pbiE9PSJyb3VuZCImJihpLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWpvaW4pLHRoaXMuZmxhdFNoYWRpbmc9PT0hMCYmKGkuZmxhdFNoYWRpbmc9dGhpcy5mbGF0U2hhZGluZyksdGhpcy52aXNpYmxlPT09ITEmJihpLnZpc2libGU9ITEpLHRoaXMudG9uZU1hcHBlZD09PSExJiYoaS50b25lTWFwcGVkPSExKSxKU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSE9PSJ7fSImJihpLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpO2Z1bmN0aW9uIHIocyl7bGV0IG89W107Zm9yKGxldCBhIGluIHMpe2xldCBsPXNbYV07ZGVsZXRlIGwubWV0YWRhdGEsby5wdXNoKGwpfXJldHVybiBvfWlmKGUpe2xldCBzPXIodC50ZXh0dXJlcyksbz1yKHQuaW1hZ2VzKTtzLmxlbmd0aD4wJiYoaS50ZXh0dXJlcz1zKSxvLmxlbmd0aD4wJiYoaS5pbWFnZXM9byl9cmV0dXJuIGl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWNvcHkodCl7dGhpcy5uYW1lPXQubmFtZSx0aGlzLmZvZz10LmZvZyx0aGlzLmJsZW5kaW5nPXQuYmxlbmRpbmcsdGhpcy5zaWRlPXQuc2lkZSx0aGlzLnZlcnRleENvbG9ycz10LnZlcnRleENvbG9ycyx0aGlzLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCx0aGlzLmJsZW5kU3JjPXQuYmxlbmRTcmMsdGhpcy5ibGVuZERzdD10LmJsZW5kRHN0LHRoaXMuYmxlbmRFcXVhdGlvbj10LmJsZW5kRXF1YXRpb24sdGhpcy5ibGVuZFNyY0FscGhhPXQuYmxlbmRTcmNBbHBoYSx0aGlzLmJsZW5kRHN0QWxwaGE9dC5ibGVuZERzdEFscGhhLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPXQuYmxlbmRFcXVhdGlvbkFscGhhLHRoaXMuZGVwdGhGdW5jPXQuZGVwdGhGdW5jLHRoaXMuZGVwdGhUZXN0PXQuZGVwdGhUZXN0LHRoaXMuZGVwdGhXcml0ZT10LmRlcHRoV3JpdGUsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayx0aGlzLnN0ZW5jaWxGdW5jPXQuc3RlbmNpbEZ1bmMsdGhpcy5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZix0aGlzLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayx0aGlzLnN0ZW5jaWxGYWlsPXQuc3RlbmNpbEZhaWwsdGhpcy5zdGVuY2lsWkZhaWw9dC5zdGVuY2lsWkZhaWwsdGhpcy5zdGVuY2lsWlBhc3M9dC5zdGVuY2lsWlBhc3MsdGhpcy5zdGVuY2lsV3JpdGU9dC5zdGVuY2lsV3JpdGU7bGV0IGU9dC5jbGlwcGluZ1BsYW5lcyxpPW51bGw7aWYoZSE9PW51bGwpe2xldCByPWUubGVuZ3RoO2k9bmV3IEFycmF5KHIpO2ZvcihsZXQgcz0wO3MhPT1yOysrcylpW3NdPWVbc10uY2xvbmUoKX1yZXR1cm4gdGhpcy5jbGlwcGluZ1BsYW5lcz1pLHRoaXMuY2xpcEludGVyc2VjdGlvbj10LmNsaXBJbnRlcnNlY3Rpb24sdGhpcy5jbGlwU2hhZG93cz10LmNsaXBTaGFkb3dzLHRoaXMuc2hhZG93U2lkZT10LnNoYWRvd1NpZGUsdGhpcy5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSx0aGlzLmFscGhhV3JpdGU9dC5hbHBoYVdyaXRlLHRoaXMucHJlY2lzaW9uPXQucHJlY2lzaW9uLHRoaXMucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPXQucG9seWdvbk9mZnNldEZhY3Rvcix0aGlzLnBvbHlnb25PZmZzZXRVbml0cz10LnBvbHlnb25PZmZzZXRVbml0cyx0aGlzLmRpdGhlcmluZz10LmRpdGhlcmluZyx0aGlzLmFscGhhVGVzdD10LmFscGhhVGVzdCx0aGlzLmFscGhhVG9Db3ZlcmFnZT10LmFscGhhVG9Db3ZlcmFnZSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT10LnByZW11bHRpcGxpZWRBbHBoYSx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9fTt4ZS5wcm90b3R5cGUuaXNNYXRlcmlhbD0hMDt2YXIgT2k9Y2xhc3MgZXh0ZW5kcyB4ZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaEJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IGZ0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPUFsLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319O09pLnByb3RvdHlwZS5pc01lc2hCYXNpY01hdGVyaWFsPSEwO3ZhciBKdD1uZXcgVCxUYT1uZXcgSyxRdD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsaSl7aWYoQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IGFycmF5IHNob3VsZCBiZSBhIFR5cGVkIEFycmF5LiIpO3RoaXMubmFtZT0iIix0aGlzLmFycmF5PXQsdGhpcy5pdGVtU2l6ZT1lLHRoaXMuY291bnQ9dCE9PXZvaWQgMD90Lmxlbmd0aC9lOjAsdGhpcy5ub3JtYWxpemVkPWk9PT0hMCx0aGlzLnVzYWdlPW5vLHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MH1vblVwbG9hZENhbGxiYWNrKCl7fXNldCBuZWVkc1VwZGF0ZSh0KXt0PT09ITAmJnRoaXMudmVyc2lvbisrfXNldFVzYWdlKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuYXJyYXk9bmV3IHQuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheSksdGhpcy5pdGVtU2l6ZT10Lml0ZW1TaXplLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLm5vcm1hbGl6ZWQ9dC5ub3JtYWxpemVkLHRoaXMudXNhZ2U9dC51c2FnZSx0aGlzfWNvcHlBdCh0LGUsaSl7dCo9dGhpcy5pdGVtU2l6ZSxpKj1lLml0ZW1TaXplO2ZvcihsZXQgcj0wLHM9dGhpcy5pdGVtU2l6ZTtyPHM7cisrKXRoaXMuYXJyYXlbdCtyXT1lLmFycmF5W2krcl07cmV0dXJuIHRoaXN9Y29weUFycmF5KHQpe3JldHVybiB0aGlzLmFycmF5LnNldCh0KSx0aGlzfWNvcHlDb2xvcnNBcnJheSh0KXtsZXQgZT10aGlzLmFycmF5LGk9MDtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspe2xldCBvPXRbcl07bz09PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlDb2xvcnNBcnJheSgpOiBjb2xvciBpcyB1bmRlZmluZWQiLHIpLG89bmV3IGZ0KSxlW2krK109by5yLGVbaSsrXT1vLmcsZVtpKytdPW8uYn1yZXR1cm4gdGhpc31jb3B5VmVjdG9yMnNBcnJheSh0KXtsZXQgZT10aGlzLmFycmF5LGk9MDtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspe2xldCBvPXRbcl07bz09PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Iyc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLHIpLG89bmV3IEspLGVbaSsrXT1vLngsZVtpKytdPW8ueX1yZXR1cm4gdGhpc31jb3B5VmVjdG9yM3NBcnJheSh0KXtsZXQgZT10aGlzLmFycmF5LGk9MDtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspe2xldCBvPXRbcl07bz09PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLHIpLG89bmV3IFQpLGVbaSsrXT1vLngsZVtpKytdPW8ueSxlW2krK109by56fXJldHVybiB0aGlzfWNvcHlWZWN0b3I0c0FycmF5KHQpe2xldCBlPXRoaXMuYXJyYXksaT0wO2ZvcihsZXQgcj0wLHM9dC5sZW5ndGg7cjxzO3IrKyl7bGV0IG89dFtyXTtvPT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjRzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsciksbz1uZXcgV3QpLGVbaSsrXT1vLngsZVtpKytdPW8ueSxlW2krK109by56LGVbaSsrXT1vLnd9cmV0dXJuIHRoaXN9YXBwbHlNYXRyaXgzKHQpe2lmKHRoaXMuaXRlbVNpemU9PT0yKWZvcihsZXQgZT0wLGk9dGhpcy5jb3VudDtlPGk7ZSsrKVRhLmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxlKSxUYS5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWShlLFRhLngsVGEueSk7ZWxzZSBpZih0aGlzLml0ZW1TaXplPT09Mylmb3IobGV0IGU9MCxpPXRoaXMuY291bnQ7ZTxpO2UrKylKdC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksSnQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFlaKGUsSnQueCxKdC55LEp0LnopO3JldHVybiB0aGlzfWFwcGx5TWF0cml4NCh0KXtmb3IobGV0IGU9MCxpPXRoaXMuY291bnQ7ZTxpO2UrKylKdC54PXRoaXMuZ2V0WChlKSxKdC55PXRoaXMuZ2V0WShlKSxKdC56PXRoaXMuZ2V0WihlKSxKdC5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRYWVooZSxKdC54LEp0LnksSnQueik7cmV0dXJuIHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7Zm9yKGxldCBlPTAsaT10aGlzLmNvdW50O2U8aTtlKyspSnQueD10aGlzLmdldFgoZSksSnQueT10aGlzLmdldFkoZSksSnQuej10aGlzLmdldFooZSksSnQuYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVooZSxKdC54LEp0LnksSnQueik7cmV0dXJuIHRoaXN9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2ZvcihsZXQgZT0wLGk9dGhpcy5jb3VudDtlPGk7ZSsrKUp0Lng9dGhpcy5nZXRYKGUpLEp0Lnk9dGhpcy5nZXRZKGUpLEp0Lno9dGhpcy5nZXRaKGUpLEp0LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLEp0LngsSnQueSxKdC56KTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdfXNldFgodCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdPWUsdGhpc31nZXRZKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXX1zZXRZKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzFdPWUsdGhpc31nZXRaKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXX1zZXRaKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdPWUsdGhpc31nZXRXKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXX1zZXRXKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdPWUsdGhpc31zZXRYWSh0LGUsaSl7cmV0dXJuIHQqPXRoaXMuaXRlbVNpemUsdGhpcy5hcnJheVt0KzBdPWUsdGhpcy5hcnJheVt0KzFdPWksdGhpc31zZXRYWVoodCxlLGkscil7cmV0dXJuIHQqPXRoaXMuaXRlbVNpemUsdGhpcy5hcnJheVt0KzBdPWUsdGhpcy5hcnJheVt0KzFdPWksdGhpcy5hcnJheVt0KzJdPXIsdGhpc31zZXRYWVpXKHQsZSxpLHIscyl7cmV0dXJuIHQqPXRoaXMuaXRlbVNpemUsdGhpcy5hcnJheVt0KzBdPWUsdGhpcy5hcnJheVt0KzFdPWksdGhpcy5hcnJheVt0KzJdPXIsdGhpcy5hcnJheVt0KzNdPXMsdGhpc31vblVwbG9hZCh0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmFycmF5LHRoaXMuaXRlbVNpemUpLmNvcHkodGhpcyl9dG9KU09OKCl7bGV0IHQ9e2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5hcnJheSksbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9O3JldHVybiB0aGlzLm5hbWUhPT0iIiYmKHQubmFtZT10aGlzLm5hbWUpLHRoaXMudXNhZ2UhPT1ubyYmKHQudXNhZ2U9dGhpcy51c2FnZSksKHRoaXMudXBkYXRlUmFuZ2Uub2Zmc2V0IT09MHx8dGhpcy51cGRhdGVSYW5nZS5jb3VudCE9PS0xKSYmKHQudXBkYXRlUmFuZ2U9dGhpcy51cGRhdGVSYW5nZSksdH19O1F0LnByb3RvdHlwZS5pc0J1ZmZlckF0dHJpYnV0ZT0hMDt2YXIgaWw9Y2xhc3MgZXh0ZW5kcyBRdHtjb25zdHJ1Y3Rvcih0LGUsaSl7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLGUsaSl9fTt2YXIgcmw9Y2xhc3MgZXh0ZW5kcyBRdHtjb25zdHJ1Y3Rvcih0LGUsaSl7c3VwZXIobmV3IFVpbnQzMkFycmF5KHQpLGUsaSl9fSxWdT1jbGFzcyBleHRlbmRzIFF0e2NvbnN0cnVjdG9yKHQsZSxpKXtzdXBlcihuZXcgVWludDE2QXJyYXkodCksZSxpKX19O1Z1LnByb3RvdHlwZS5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU9ITA7dmFyIGVlPWNsYXNzIGV4dGVuZHMgUXR7Y29uc3RydWN0b3IodCxlLGkpe3N1cGVyKG5ldyBGbG9hdDMyQXJyYXkodCksZSxpKX19O3ZhciB0TT0wLHFlPW5ldyB3dCx4dT1uZXcga3Qsd3I9bmV3IFQsSGU9bmV3IEdlLEhzPW5ldyBHZSxnZT1uZXcgVCxIdD1jbGFzcyBleHRlbmRzIElue2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTp0TSsrfSksdGhpcy51dWlkPXRuKCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT0hMSx0aGlzLmdyb3Vwcz1bXSx0aGlzLmJvdW5kaW5nQm94PW51bGwsdGhpcy5ib3VuZGluZ1NwaGVyZT1udWxsLHRoaXMuZHJhd1JhbmdlPXtzdGFydDowLGNvdW50OjEvMH0sdGhpcy51c2VyRGF0YT17fX1nZXRJbmRleCgpe3JldHVybiB0aGlzLmluZGV4fXNldEluZGV4KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3RoaXMuaW5kZXg9bmV3KGYwKHQpP3JsOmlsKSh0LDEpOnRoaXMuaW5kZXg9dCx0aGlzfWdldEF0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdfXNldEF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF09ZSx0aGlzfWRlbGV0ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gZGVsZXRlIHRoaXMuYXR0cmlidXRlc1t0XSx0aGlzfWhhc0F0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdIT09dm9pZCAwfWFkZEdyb3VwKHQsZSxpPTApe3RoaXMuZ3JvdXBzLnB1c2goe3N0YXJ0OnQsY291bnQ6ZSxtYXRlcmlhbEluZGV4Oml9KX1jbGVhckdyb3Vwcygpe3RoaXMuZ3JvdXBzPVtdfXNldERyYXdSYW5nZSh0LGUpe3RoaXMuZHJhd1JhbmdlLnN0YXJ0PXQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9ZX1hcHBseU1hdHJpeDQodCl7bGV0IGU9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uO2UhPT12b2lkIDAmJihlLmFwcGx5TWF0cml4NCh0KSxlLm5lZWRzVXBkYXRlPSEwKTtsZXQgaT10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2lmKGkhPT12b2lkIDApe2xldCBzPW5ldyBkZSgpLmdldE5vcm1hbE1hdHJpeCh0KTtpLmFwcGx5Tm9ybWFsTWF0cml4KHMpLGkubmVlZHNVcGRhdGU9ITB9bGV0IHI9dGhpcy5hdHRyaWJ1dGVzLnRhbmdlbnQ7cmV0dXJuIHIhPT12b2lkIDAmJihyLnRyYW5zZm9ybURpcmVjdGlvbih0KSxyLm5lZWRzVXBkYXRlPSEwKSx0aGlzLmJvdW5kaW5nQm94IT09bnVsbCYmdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSx0aGlzLmJvdW5kaW5nU3BoZXJlIT09bnVsbCYmdGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSx0aGlzfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gcWUubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5hcHBseU1hdHJpeDQocWUpLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gcWUubWFrZVJvdGF0aW9uWCh0KSx0aGlzLmFwcGx5TWF0cml4NChxZSksdGhpc31yb3RhdGVZKHQpe3JldHVybiBxZS5tYWtlUm90YXRpb25ZKHQpLHRoaXMuYXBwbHlNYXRyaXg0KHFlKSx0aGlzfXJvdGF0ZVoodCl7cmV0dXJuIHFlLm1ha2VSb3RhdGlvbloodCksdGhpcy5hcHBseU1hdHJpeDQocWUpLHRoaXN9dHJhbnNsYXRlKHQsZSxpKXtyZXR1cm4gcWUubWFrZVRyYW5zbGF0aW9uKHQsZSxpKSx0aGlzLmFwcGx5TWF0cml4NChxZSksdGhpc31zY2FsZSh0LGUsaSl7cmV0dXJuIHFlLm1ha2VTY2FsZSh0LGUsaSksdGhpcy5hcHBseU1hdHJpeDQocWUpLHRoaXN9bG9va0F0KHQpe3JldHVybiB4dS5sb29rQXQodCkseHUudXBkYXRlTWF0cml4KCksdGhpcy5hcHBseU1hdHJpeDQoeHUubWF0cml4KSx0aGlzfWNlbnRlcigpe3JldHVybiB0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLHRoaXMuYm91bmRpbmdCb3guZ2V0Q2VudGVyKHdyKS5uZWdhdGUoKSx0aGlzLnRyYW5zbGF0ZSh3ci54LHdyLnksd3IueiksdGhpc31zZXRGcm9tUG9pbnRzKHQpe2xldCBlPVtdO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHM9dFtpXTtlLnB1c2gocy54LHMueSxzLnp8fDApfXJldHVybiB0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlZShlLDMpKSx0aGlzfWNvbXB1dGVCb3VuZGluZ0JveCgpe3RoaXMuYm91bmRpbmdCb3g9PT1udWxsJiYodGhpcy5ib3VuZGluZ0JveD1uZXcgR2UpO2xldCB0PXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixlPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHQmJnQuaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IEdMQnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIGEgbWFudWFsIGJvdW5kaW5nIGJveC4gQWx0ZXJuYXRpdmVseSBzZXQgIm1lc2guZnJ1c3R1bUN1bGxlZCIgdG8gImZhbHNlIi4nLHRoaXMpLHRoaXMuYm91bmRpbmdCb3guc2V0KG5ldyBUKC0xLzAsLTEvMCwtMS8wKSxuZXcgVCgxLzAsMS8wLDEvMCkpO3JldHVybn1pZih0IT09dm9pZCAwKXtpZih0aGlzLmJvdW5kaW5nQm94LnNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCksZSlmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2k8cjtpKyspe2xldCBzPWVbaV07SGUuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShzKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhnZS5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWluLEhlLm1pbiksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KGdlKSxnZS5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWF4LEhlLm1heCksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KGdlKSk6KHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChIZS5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChIZS5tYXgpKX19ZWxzZSB0aGlzLmJvdW5kaW5nQm94Lm1ha2VFbXB0eSgpOyhpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi54KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueSl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnopKSYmY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IENvbXB1dGVkIG1pbi9tYXggaGF2ZSBOYU4gdmFsdWVzLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLHRoaXMpfWNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpe3RoaXMuYm91bmRpbmdTcGhlcmU9PT1udWxsJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1uZXcgc2kpO2xldCB0PXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixlPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHQmJnQuaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk6IEdMQnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIGEgbWFudWFsIGJvdW5kaW5nIHNwaGVyZS4gQWx0ZXJuYXRpdmVseSBzZXQgIm1lc2guZnJ1c3R1bUN1bGxlZCIgdG8gImZhbHNlIi4nLHRoaXMpLHRoaXMuYm91bmRpbmdTcGhlcmUuc2V0KG5ldyBULDEvMCk7cmV0dXJufWlmKHQpe2xldCBpPXRoaXMuYm91bmRpbmdTcGhlcmUuY2VudGVyO2lmKEhlLnNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCksZSlmb3IobGV0IHM9MCxvPWUubGVuZ3RoO3M8bztzKyspe2xldCBhPWVbc107SHMuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShhKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhnZS5hZGRWZWN0b3JzKEhlLm1pbixIcy5taW4pLEhlLmV4cGFuZEJ5UG9pbnQoZ2UpLGdlLmFkZFZlY3RvcnMoSGUubWF4LEhzLm1heCksSGUuZXhwYW5kQnlQb2ludChnZSkpOihIZS5leHBhbmRCeVBvaW50KEhzLm1pbiksSGUuZXhwYW5kQnlQb2ludChIcy5tYXgpKX1IZS5nZXRDZW50ZXIoaSk7bGV0IHI9MDtmb3IobGV0IHM9MCxvPXQuY291bnQ7czxvO3MrKylnZS5mcm9tQnVmZmVyQXR0cmlidXRlKHQscykscj1NYXRoLm1heChyLGkuZGlzdGFuY2VUb1NxdWFyZWQoZ2UpKTtpZihlKWZvcihsZXQgcz0wLG89ZS5sZW5ndGg7czxvO3MrKyl7bGV0IGE9ZVtzXSxsPXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU7Zm9yKGxldCBjPTAsdT1hLmNvdW50O2M8dTtjKyspZ2UuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLGMpLGwmJih3ci5mcm9tQnVmZmVyQXR0cmlidXRlKHQsYyksZ2UuYWRkKHdyKSkscj1NYXRoLm1heChyLGkuZGlzdGFuY2VUb1NxdWFyZWQoZ2UpKX10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cz1NYXRoLnNxcnQociksaXNOYU4odGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXMpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogQ29tcHV0ZWQgcmFkaXVzIGlzIE5hTi4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX19Y29tcHV0ZVRhbmdlbnRzKCl7bGV0IHQ9dGhpcy5pbmRleCxlPXRoaXMuYXR0cmlidXRlcztpZih0PT09bnVsbHx8ZS5wb3NpdGlvbj09PXZvaWQgMHx8ZS5ub3JtYWw9PT12b2lkIDB8fGUudXY9PT12b2lkIDApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgZmFpbGVkLiBNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKGluZGV4LCBwb3NpdGlvbiwgbm9ybWFsIG9yIHV2KSIpO3JldHVybn1sZXQgaT10LmFycmF5LHI9ZS5wb3NpdGlvbi5hcnJheSxzPWUubm9ybWFsLmFycmF5LG89ZS51di5hcnJheSxhPXIubGVuZ3RoLzM7ZS50YW5nZW50PT09dm9pZCAwJiZ0aGlzLnNldEF0dHJpYnV0ZSgidGFuZ2VudCIsbmV3IFF0KG5ldyBGbG9hdDMyQXJyYXkoNCphKSw0KSk7bGV0IGw9ZS50YW5nZW50LmFycmF5LGM9W10sdT1bXTtmb3IobGV0IFg9MDtYPGE7WCsrKWNbWF09bmV3IFQsdVtYXT1uZXcgVDtsZXQgaD1uZXcgVCxmPW5ldyBULGQ9bmV3IFQsZz1uZXcgSyx4PW5ldyBLLHY9bmV3IEssbT1uZXcgVCxwPW5ldyBUO2Z1bmN0aW9uIGIoWCx5LFIpe2guZnJvbUFycmF5KHIsWCozKSxmLmZyb21BcnJheShyLHkqMyksZC5mcm9tQXJyYXkocixSKjMpLGcuZnJvbUFycmF5KG8sWCoyKSx4LmZyb21BcnJheShvLHkqMiksdi5mcm9tQXJyYXkobyxSKjIpLGYuc3ViKGgpLGQuc3ViKGgpLHguc3ViKGcpLHYuc3ViKGcpO2xldCBEPTEvKHgueCp2Lnktdi54KngueSk7IWlzRmluaXRlKEQpfHwobS5jb3B5KGYpLm11bHRpcGx5U2NhbGFyKHYueSkuYWRkU2NhbGVkVmVjdG9yKGQsLXgueSkubXVsdGlwbHlTY2FsYXIoRCkscC5jb3B5KGQpLm11bHRpcGx5U2NhbGFyKHgueCkuYWRkU2NhbGVkVmVjdG9yKGYsLXYueCkubXVsdGlwbHlTY2FsYXIoRCksY1tYXS5hZGQobSksY1t5XS5hZGQobSksY1tSXS5hZGQobSksdVtYXS5hZGQocCksdVt5XS5hZGQocCksdVtSXS5hZGQocCkpfWxldCBfPXRoaXMuZ3JvdXBzO18ubGVuZ3RoPT09MCYmKF89W3tzdGFydDowLGNvdW50OmkubGVuZ3RofV0pO2ZvcihsZXQgWD0wLHk9Xy5sZW5ndGg7WDx5OysrWCl7bGV0IFI9X1tYXSxEPVIuc3RhcnQsRj1SLmNvdW50O2ZvcihsZXQgej1ELE49RCtGO3o8Tjt6Kz0zKWIoaVt6KzBdLGlbeisxXSxpW3orMl0pfWxldCBTPW5ldyBULEw9bmV3IFQsQT1uZXcgVCxIPW5ldyBUO2Z1bmN0aW9uIHR0KFgpe0EuZnJvbUFycmF5KHMsWCozKSxILmNvcHkoQSk7bGV0IHk9Y1tYXTtTLmNvcHkoeSksUy5zdWIoQS5tdWx0aXBseVNjYWxhcihBLmRvdCh5KSkpLm5vcm1hbGl6ZSgpLEwuY3Jvc3NWZWN0b3JzKEgseSk7bGV0IEQ9TC5kb3QodVtYXSk8MD8tMToxO2xbWCo0XT1TLngsbFtYKjQrMV09Uy55LGxbWCo0KzJdPVMueixsW1gqNCszXT1EfWZvcihsZXQgWD0wLHk9Xy5sZW5ndGg7WDx5OysrWCl7bGV0IFI9X1tYXSxEPVIuc3RhcnQsRj1SLmNvdW50O2ZvcihsZXQgej1ELE49RCtGO3o8Tjt6Kz0zKXR0KGlbeiswXSksdHQoaVt6KzFdKSx0dChpW3orMl0pfX1jb21wdXRlVmVydGV4Tm9ybWFscygpe2xldCB0PXRoaXMuaW5kZXgsZT10aGlzLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtpZihlIT09dm9pZCAwKXtsZXQgaT10aGlzLmdldEF0dHJpYnV0ZSgibm9ybWFsIik7aWYoaT09PXZvaWQgMClpPW5ldyBRdChuZXcgRmxvYXQzMkFycmF5KGUuY291bnQqMyksMyksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsaSk7ZWxzZSBmb3IobGV0IGY9MCxkPWkuY291bnQ7ZjxkO2YrKylpLnNldFhZWihmLDAsMCwwKTtsZXQgcj1uZXcgVCxzPW5ldyBULG89bmV3IFQsYT1uZXcgVCxsPW5ldyBULGM9bmV3IFQsdT1uZXcgVCxoPW5ldyBUO2lmKHQpZm9yKGxldCBmPTAsZD10LmNvdW50O2Y8ZDtmKz0zKXtsZXQgZz10LmdldFgoZiswKSx4PXQuZ2V0WChmKzEpLHY9dC5nZXRYKGYrMik7ci5mcm9tQnVmZmVyQXR0cmlidXRlKGUsZykscy5mcm9tQnVmZmVyQXR0cmlidXRlKGUseCksby5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdiksdS5zdWJWZWN0b3JzKG8scyksaC5zdWJWZWN0b3JzKHIscyksdS5jcm9zcyhoKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxnKSxsLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSx4KSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSx2KSxhLmFkZCh1KSxsLmFkZCh1KSxjLmFkZCh1KSxpLnNldFhZWihnLGEueCxhLnksYS56KSxpLnNldFhZWih4LGwueCxsLnksbC56KSxpLnNldFhZWih2LGMueCxjLnksYy56KX1lbHNlIGZvcihsZXQgZj0wLGQ9ZS5jb3VudDtmPGQ7Zis9MylyLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxmKzApLHMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGYrMSksby5mcm9tQnVmZmVyQXR0cmlidXRlKGUsZisyKSx1LnN1YlZlY3RvcnMobyxzKSxoLnN1YlZlY3RvcnMocixzKSx1LmNyb3NzKGgpLGkuc2V0WFlaKGYrMCx1LngsdS55LHUueiksaS5zZXRYWVooZisxLHUueCx1LnksdS56KSxpLnNldFhZWihmKzIsdS54LHUueSx1LnopO3RoaXMubm9ybWFsaXplTm9ybWFscygpLGkubmVlZHNVcGRhdGU9ITB9fW1lcmdlKHQsZSl7aWYoISh0JiZ0LmlzQnVmZmVyR2VvbWV0cnkpKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBnZW9tZXRyeSBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQnVmZmVyR2VvbWV0cnkuIix0KTtyZXR1cm59ZT09PXZvaWQgMCYmKGU9MCxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IE92ZXJ3cml0aW5nIG9yaWdpbmFsIGdlb21ldHJ5LCBzdGFydGluZyBhdCBvZmZzZXQ9MC4gVXNlIEJ1ZmZlckdlb21ldHJ5VXRpbHMubWVyZ2VCdWZmZXJHZW9tZXRyaWVzKCkgZm9yIGxvc3NsZXNzIG1lcmdlLiIpKTtsZXQgaT10aGlzLmF0dHJpYnV0ZXM7Zm9yKGxldCByIGluIGkpe2lmKHQuYXR0cmlidXRlc1tyXT09PXZvaWQgMCljb250aW51ZTtsZXQgbz1pW3JdLmFycmF5LGE9dC5hdHRyaWJ1dGVzW3JdLGw9YS5hcnJheSxjPWEuaXRlbVNpemUqZSx1PU1hdGgubWluKGwubGVuZ3RoLG8ubGVuZ3RoLWMpO2ZvcihsZXQgaD0wLGY9YztoPHU7aCsrLGYrKylvW2ZdPWxbaF19cmV0dXJuIHRoaXN9bm9ybWFsaXplTm9ybWFscygpe2xldCB0PXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7Zm9yKGxldCBlPTAsaT10LmNvdW50O2U8aTtlKyspZ2UuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpLGdlLm5vcm1hbGl6ZSgpLHQuc2V0WFlaKGUsZ2UueCxnZS55LGdlLnopfXRvTm9uSW5kZXhlZCgpe2Z1bmN0aW9uIHQoYSxsKXtsZXQgYz1hLmFycmF5LHU9YS5pdGVtU2l6ZSxoPWEubm9ybWFsaXplZCxmPW5ldyBjLmNvbnN0cnVjdG9yKGwubGVuZ3RoKnUpLGQ9MCxnPTA7Zm9yKGxldCB4PTAsdj1sLmxlbmd0aDt4PHY7eCsrKXthLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/ZD1sW3hdKmEuZGF0YS5zdHJpZGUrYS5vZmZzZXQ6ZD1sW3hdKnU7Zm9yKGxldCBtPTA7bTx1O20rKylmW2crK109Y1tkKytdfXJldHVybiBuZXcgUXQoZix1LGgpfWlmKHRoaXMuaW5kZXg9PT1udWxsKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LnRvTm9uSW5kZXhlZCgpOiBCdWZmZXJHZW9tZXRyeSBpcyBhbHJlYWR5IG5vbi1pbmRleGVkLiIpLHRoaXM7bGV0IGU9bmV3IEh0LGk9dGhpcy5pbmRleC5hcnJheSxyPXRoaXMuYXR0cmlidXRlcztmb3IobGV0IGEgaW4gcil7bGV0IGw9clthXSxjPXQobCxpKTtlLnNldEF0dHJpYnV0ZShhLGMpfWxldCBzPXRoaXMubW9ycGhBdHRyaWJ1dGVzO2ZvcihsZXQgYSBpbiBzKXtsZXQgbD1bXSxjPXNbYV07Zm9yKGxldCB1PTAsaD1jLmxlbmd0aDt1PGg7dSsrKXtsZXQgZj1jW3VdLGQ9dChmLGkpO2wucHVzaChkKX1lLm1vcnBoQXR0cmlidXRlc1thXT1sfWUubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtsZXQgbz10aGlzLmdyb3Vwcztmb3IobGV0IGE9MCxsPW8ubGVuZ3RoO2E8bDthKyspe2xldCBjPW9bYV07ZS5hZGRHcm91cChjLnN0YXJ0LGMuY291bnQsYy5tYXRlcmlhbEluZGV4KX1yZXR1cm4gZX10b0pTT04oKXtsZXQgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkJ1ZmZlckdlb21ldHJ5IixnZW5lcmF0b3I6IkJ1ZmZlckdlb21ldHJ5LnRvSlNPTiJ9fTtpZih0LnV1aWQ9dGhpcy51dWlkLHQudHlwZT10aGlzLnR5cGUsdGhpcy5uYW1lIT09IiImJih0Lm5hbWU9dGhpcy5uYW1lKSxPYmplY3Qua2V5cyh0aGlzLnVzZXJEYXRhKS5sZW5ndGg+MCYmKHQudXNlckRhdGE9dGhpcy51c2VyRGF0YSksdGhpcy5wYXJhbWV0ZXJzIT09dm9pZCAwKXtsZXQgbD10aGlzLnBhcmFtZXRlcnM7Zm9yKGxldCBjIGluIGwpbFtjXSE9PXZvaWQgMCYmKHRbY109bFtjXSk7cmV0dXJuIHR9dC5kYXRhPXthdHRyaWJ1dGVzOnt9fTtsZXQgZT10aGlzLmluZGV4O2UhPT1udWxsJiYodC5kYXRhLmluZGV4PXt0eXBlOmUuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLmFycmF5KX0pO2xldCBpPXRoaXMuYXR0cmlidXRlcztmb3IobGV0IGwgaW4gaSl7bGV0IGM9aVtsXTt0LmRhdGEuYXR0cmlidXRlc1tsXT1jLnRvSlNPTih0LmRhdGEpfWxldCByPXt9LHM9ITE7Zm9yKGxldCBsIGluIHRoaXMubW9ycGhBdHRyaWJ1dGVzKXtsZXQgYz10aGlzLm1vcnBoQXR0cmlidXRlc1tsXSx1PVtdO2ZvcihsZXQgaD0wLGY9Yy5sZW5ndGg7aDxmO2grKyl7bGV0IGQ9Y1toXTt1LnB1c2goZC50b0pTT04odC5kYXRhKSl9dS5sZW5ndGg+MCYmKHJbbF09dSxzPSEwKX1zJiYodC5kYXRhLm1vcnBoQXR0cmlidXRlcz1yLHQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlKTtsZXQgbz10aGlzLmdyb3VwcztvLmxlbmd0aD4wJiYodC5kYXRhLmdyb3Vwcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8pKSk7bGV0IGE9dGhpcy5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gYSE9PW51bGwmJih0LmRhdGEuYm91bmRpbmdTcGhlcmU9e2NlbnRlcjphLmNlbnRlci50b0FycmF5KCkscmFkaXVzOmEucmFkaXVzfSksdH1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGw7bGV0IGU9e307dGhpcy5uYW1lPXQubmFtZTtsZXQgaT10LmluZGV4O2khPT1udWxsJiZ0aGlzLnNldEluZGV4KGkuY2xvbmUoZSkpO2xldCByPXQuYXR0cmlidXRlcztmb3IobGV0IGMgaW4gcil7bGV0IHU9cltjXTt0aGlzLnNldEF0dHJpYnV0ZShjLHUuY2xvbmUoZSkpfWxldCBzPXQubW9ycGhBdHRyaWJ1dGVzO2ZvcihsZXQgYyBpbiBzKXtsZXQgdT1bXSxoPXNbY107Zm9yKGxldCBmPTAsZD1oLmxlbmd0aDtmPGQ7ZisrKXUucHVzaChoW2ZdLmNsb25lKGUpKTt0aGlzLm1vcnBoQXR0cmlidXRlc1tjXT11fXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9dC5tb3JwaFRhcmdldHNSZWxhdGl2ZTtsZXQgbz10Lmdyb3Vwcztmb3IobGV0IGM9MCx1PW8ubGVuZ3RoO2M8dTtjKyspe2xldCBoPW9bY107dGhpcy5hZGRHcm91cChoLnN0YXJ0LGguY291bnQsaC5tYXRlcmlhbEluZGV4KX1sZXQgYT10LmJvdW5kaW5nQm94O2EhPT1udWxsJiYodGhpcy5ib3VuZGluZ0JveD1hLmNsb25lKCkpO2xldCBsPXQuYm91bmRpbmdTcGhlcmU7cmV0dXJuIGwhPT1udWxsJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1sLmNsb25lKCkpLHRoaXMuZHJhd1JhbmdlLnN0YXJ0PXQuZHJhd1JhbmdlLnN0YXJ0LHRoaXMuZHJhd1JhbmdlLmNvdW50PXQuZHJhd1JhbmdlLmNvdW50LHRoaXMudXNlckRhdGE9dC51c2VyRGF0YSx0LnBhcmFtZXRlcnMhPT12b2lkIDAmJih0aGlzLnBhcmFtZXRlcnM9T2JqZWN0LmFzc2lnbih7fSx0LnBhcmFtZXRlcnMpKSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fTtIdC5wcm90b3R5cGUuaXNCdWZmZXJHZW9tZXRyeT0hMDt2YXIgZmc9bmV3IHd0LE1yPW5ldyBvaSx5dT1uZXcgc2ksSm49bmV3IFQsJG49bmV3IFQsS249bmV3IFQsdnU9bmV3IFQsX3U9bmV3IFQsd3U9bmV3IFQsQWE9bmV3IFQsQ2E9bmV3IFQsUmE9bmV3IFQsTGE9bmV3IEssUGE9bmV3IEssRGE9bmV3IEssTXU9bmV3IFQsSWE9bmV3IFQsb2U9Y2xhc3MgZXh0ZW5kcyBrdHtjb25zdHJ1Y3Rvcih0PW5ldyBIdCxlPW5ldyBPaSl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2giLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPWUsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHQubW9ycGhUYXJnZXRJbmZsdWVuY2VzIT09dm9pZCAwJiYodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMuc2xpY2UoKSksdC5tb3JwaFRhcmdldERpY3Rpb25hcnkhPT12b2lkIDAmJih0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT1PYmplY3QuYXNzaWduKHt9LHQubW9ycGhUYXJnZXREaWN0aW9uYXJ5KSksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2xldCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtsZXQgZT10Lm1vcnBoQXR0cmlidXRlcyxpPU9iamVjdC5rZXlzKGUpO2lmKGkubGVuZ3RoPjApe2xldCByPWVbaVswXV07aWYociE9PXZvaWQgMCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBzPTAsbz1yLmxlbmd0aDtzPG87cysrKXtsZXQgYT1yW3NdLm5hbWV8fFN0cmluZyhzKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W2FdPXN9fX19ZWxzZXtsZXQgZT10Lm1vcnBoVGFyZ2V0cztlIT09dm9pZCAwJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fXJheWNhc3QodCxlKXtsZXQgaT10aGlzLmdlb21ldHJ5LHI9dGhpcy5tYXRlcmlhbCxzPXRoaXMubWF0cml4V29ybGQ7aWYocj09PXZvaWQgMHx8KGkuYm91bmRpbmdTcGhlcmU9PT1udWxsJiZpLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHl1LmNvcHkoaS5ib3VuZGluZ1NwaGVyZSkseXUuYXBwbHlNYXRyaXg0KHMpLHQucmF5LmludGVyc2VjdHNTcGhlcmUoeXUpPT09ITEpfHwoZmcuY29weShzKS5pbnZlcnQoKSxNci5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoZmcpLGkuYm91bmRpbmdCb3ghPT1udWxsJiZNci5pbnRlcnNlY3RzQm94KGkuYm91bmRpbmdCb3gpPT09ITEpKXJldHVybjtsZXQgbztpZihpLmlzQnVmZmVyR2VvbWV0cnkpe2xldCBhPWkuaW5kZXgsbD1pLmF0dHJpYnV0ZXMucG9zaXRpb24sYz1pLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbix1PWkubW9ycGhUYXJnZXRzUmVsYXRpdmUsaD1pLmF0dHJpYnV0ZXMudXYsZj1pLmF0dHJpYnV0ZXMudXYyLGQ9aS5ncm91cHMsZz1pLmRyYXdSYW5nZTtpZihhIT09bnVsbClpZihBcnJheS5pc0FycmF5KHIpKWZvcihsZXQgeD0wLHY9ZC5sZW5ndGg7eDx2O3grKyl7bGV0IG09ZFt4XSxwPXJbbS5tYXRlcmlhbEluZGV4XSxiPU1hdGgubWF4KG0uc3RhcnQsZy5zdGFydCksXz1NYXRoLm1pbihhLmNvdW50LE1hdGgubWluKG0uc3RhcnQrbS5jb3VudCxnLnN0YXJ0K2cuY291bnQpKTtmb3IobGV0IFM9YixMPV87UzxMO1MrPTMpe2xldCBBPWEuZ2V0WChTKSxIPWEuZ2V0WChTKzEpLHR0PWEuZ2V0WChTKzIpO289TmEodGhpcyxwLHQsTXIsbCxjLHUsaCxmLEEsSCx0dCksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3IoUy8zKSxvLmZhY2UubWF0ZXJpYWxJbmRleD1tLm1hdGVyaWFsSW5kZXgsZS5wdXNoKG8pKX19ZWxzZXtsZXQgeD1NYXRoLm1heCgwLGcuc3RhcnQpLHY9TWF0aC5taW4oYS5jb3VudCxnLnN0YXJ0K2cuY291bnQpO2ZvcihsZXQgbT14LHA9djttPHA7bSs9Myl7bGV0IGI9YS5nZXRYKG0pLF89YS5nZXRYKG0rMSksUz1hLmdldFgobSsyKTtvPU5hKHRoaXMscix0LE1yLGwsYyx1LGgsZixiLF8sUyksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3IobS8zKSxlLnB1c2gobykpfX1lbHNlIGlmKGwhPT12b2lkIDApaWYoQXJyYXkuaXNBcnJheShyKSlmb3IobGV0IHg9MCx2PWQubGVuZ3RoO3g8djt4Kyspe2xldCBtPWRbeF0scD1yW20ubWF0ZXJpYWxJbmRleF0sYj1NYXRoLm1heChtLnN0YXJ0LGcuc3RhcnQpLF89TWF0aC5taW4obC5jb3VudCxNYXRoLm1pbihtLnN0YXJ0K20uY291bnQsZy5zdGFydCtnLmNvdW50KSk7Zm9yKGxldCBTPWIsTD1fO1M8TDtTKz0zKXtsZXQgQT1TLEg9UysxLHR0PVMrMjtvPU5hKHRoaXMscCx0LE1yLGwsYyx1LGgsZixBLEgsdHQpLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKFMvMyksby5mYWNlLm1hdGVyaWFsSW5kZXg9bS5tYXRlcmlhbEluZGV4LGUucHVzaChvKSl9fWVsc2V7bGV0IHg9TWF0aC5tYXgoMCxnLnN0YXJ0KSx2PU1hdGgubWluKGwuY291bnQsZy5zdGFydCtnLmNvdW50KTtmb3IobGV0IG09eCxwPXY7bTxwO20rPTMpe2xldCBiPW0sXz1tKzEsUz1tKzI7bz1OYSh0aGlzLHIsdCxNcixsLGMsdSxoLGYsYixfLFMpLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG0vMyksZS5wdXNoKG8pKX19fWVsc2UgaS5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX07b2UucHJvdG90eXBlLmlzTWVzaD0hMDtmdW5jdGlvbiBlTShuLHQsZSxpLHIscyxvLGEpe2xldCBsO2lmKHQuc2lkZT09PWhlP2w9aS5pbnRlcnNlY3RUcmlhbmdsZShvLHMsciwhMCxhKTpsPWkuaW50ZXJzZWN0VHJpYW5nbGUocixzLG8sdC5zaWRlIT09a3IsYSksbD09PW51bGwpcmV0dXJuIG51bGw7SWEuY29weShhKSxJYS5hcHBseU1hdHJpeDQobi5tYXRyaXhXb3JsZCk7bGV0IGM9ZS5yYXkub3JpZ2luLmRpc3RhbmNlVG8oSWEpO3JldHVybiBjPGUubmVhcnx8Yz5lLmZhcj9udWxsOntkaXN0YW5jZTpjLHBvaW50OklhLmNsb25lKCksb2JqZWN0Om59fWZ1bmN0aW9uIE5hKG4sdCxlLGkscixzLG8sYSxsLGMsdSxoKXtKbi5mcm9tQnVmZmVyQXR0cmlidXRlKHIsYyksJG4uZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLHUpLEtuLmZyb21CdWZmZXJBdHRyaWJ1dGUocixoKTtsZXQgZj1uLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcztpZihzJiZmKXtBYS5zZXQoMCwwLDApLENhLnNldCgwLDAsMCksUmEuc2V0KDAsMCwwKTtmb3IobGV0IGc9MCx4PXMubGVuZ3RoO2c8eDtnKyspe2xldCB2PWZbZ10sbT1zW2ddO3YhPT0wJiYodnUuZnJvbUJ1ZmZlckF0dHJpYnV0ZShtLGMpLF91LmZyb21CdWZmZXJBdHRyaWJ1dGUobSx1KSx3dS5mcm9tQnVmZmVyQXR0cmlidXRlKG0saCksbz8oQWEuYWRkU2NhbGVkVmVjdG9yKHZ1LHYpLENhLmFkZFNjYWxlZFZlY3RvcihfdSx2KSxSYS5hZGRTY2FsZWRWZWN0b3Iod3UsdikpOihBYS5hZGRTY2FsZWRWZWN0b3IodnUuc3ViKEpuKSx2KSxDYS5hZGRTY2FsZWRWZWN0b3IoX3Uuc3ViKCRuKSx2KSxSYS5hZGRTY2FsZWRWZWN0b3Iod3Uuc3ViKEtuKSx2KSkpfUpuLmFkZChBYSksJG4uYWRkKENhKSxLbi5hZGQoUmEpfW4uaXNTa2lubmVkTWVzaCYmKG4uYm9uZVRyYW5zZm9ybShjLEpuKSxuLmJvbmVUcmFuc2Zvcm0odSwkbiksbi5ib25lVHJhbnNmb3JtKGgsS24pKTtsZXQgZD1lTShuLHQsZSxpLEpuLCRuLEtuLE11KTtpZihkKXthJiYoTGEuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLGMpLFBhLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSx1KSxEYS5mcm9tQnVmZmVyQXR0cmlidXRlKGEsaCksZC51dj1yZS5nZXRVVihNdSxKbiwkbixLbixMYSxQYSxEYSxuZXcgSykpLGwmJihMYS5mcm9tQnVmZmVyQXR0cmlidXRlKGwsYyksUGEuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLHUpLERhLmZyb21CdWZmZXJBdHRyaWJ1dGUobCxoKSxkLnV2Mj1yZS5nZXRVVihNdSxKbiwkbixLbixMYSxQYSxEYSxuZXcgSykpO2xldCBnPXthOmMsYjp1LGM6aCxub3JtYWw6bmV3IFQsbWF0ZXJpYWxJbmRleDowfTtyZS5nZXROb3JtYWwoSm4sJG4sS24sZy5ub3JtYWwpLGQuZmFjZT1nfXJldHVybiBkfXZhciBraT1jbGFzcyBleHRlbmRzIEh0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsaT0xLHI9MSxzPTEsbz0xKXtzdXBlcigpLHRoaXMudHlwZT0iQm94R2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17d2lkdGg6dCxoZWlnaHQ6ZSxkZXB0aDppLHdpZHRoU2VnbWVudHM6cixoZWlnaHRTZWdtZW50czpzLGRlcHRoU2VnbWVudHM6b307bGV0IGE9dGhpcztyPU1hdGguZmxvb3Iocikscz1NYXRoLmZsb29yKHMpLG89TWF0aC5mbG9vcihvKTtsZXQgbD1bXSxjPVtdLHU9W10saD1bXSxmPTAsZD0wO2coInoiLCJ5IiwieCIsLTEsLTEsaSxlLHQsbyxzLDApLGcoInoiLCJ5IiwieCIsMSwtMSxpLGUsLXQsbyxzLDEpLGcoIngiLCJ6IiwieSIsMSwxLHQsaSxlLHIsbywyKSxnKCJ4IiwieiIsInkiLDEsLTEsdCxpLC1lLHIsbywzKSxnKCJ4IiwieSIsInoiLDEsLTEsdCxlLGkscixzLDQpLGcoIngiLCJ5IiwieiIsLTEsLTEsdCxlLC1pLHIscyw1KSx0aGlzLnNldEluZGV4KGwpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVlKGMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBlZSh1LDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlZShoLDIpKTtmdW5jdGlvbiBnKHgsdixtLHAsYixfLFMsTCxBLEgsdHQpe2xldCBYPV8vQSx5PVMvSCxSPV8vMixEPVMvMixGPUwvMix6PUErMSxOPUgrMSxWPTAsUT0wLGF0PW5ldyBUO2ZvcihsZXQgRz0wO0c8TjtHKyspe2xldCAkPUcqeS1EO2ZvcihsZXQgbHQ9MDtsdDx6O2x0Kyspe2xldCBkdD1sdCpYLVI7YXRbeF09ZHQqcCxhdFt2XT0kKmIsYXRbbV09RixjLnB1c2goYXQueCxhdC55LGF0LnopLGF0W3hdPTAsYXRbdl09MCxhdFttXT1MPjA/MTotMSx1LnB1c2goYXQueCxhdC55LGF0LnopLGgucHVzaChsdC9BKSxoLnB1c2goMS1HL0gpLFYrPTF9fWZvcihsZXQgRz0wO0c8SDtHKyspZm9yKGxldCAkPTA7JDxBOyQrKyl7bGV0IGx0PWYrJCt6KkcsZHQ9ZiskK3oqKEcrMSkseHQ9ZisoJCsxKSt6KihHKzEpLGs9ZisoJCsxKSt6Kkc7bC5wdXNoKGx0LGR0LGspLGwucHVzaChkdCx4dCxrKSxRKz02fWEuYWRkR3JvdXAoZCxRLHR0KSxkKz1RLGYrPVZ9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IGtpKHQud2lkdGgsdC5oZWlnaHQsdC5kZXB0aCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0LmRlcHRoU2VnbWVudHMpfX07ZnVuY3Rpb24gVnIobil7bGV0IHQ9e307Zm9yKGxldCBlIGluIG4pe3RbZV09e307Zm9yKGxldCBpIGluIG5bZV0pe2xldCByPW5bZV1baV07ciYmKHIuaXNDb2xvcnx8ci5pc01hdHJpeDN8fHIuaXNNYXRyaXg0fHxyLmlzVmVjdG9yMnx8ci5pc1ZlY3RvcjN8fHIuaXNWZWN0b3I0fHxyLmlzVGV4dHVyZXx8ci5pc1F1YXRlcm5pb24pP3RbZV1baV09ci5jbG9uZSgpOkFycmF5LmlzQXJyYXkocik/dFtlXVtpXT1yLnNsaWNlKCk6dFtlXVtpXT1yfX1yZXR1cm4gdH1mdW5jdGlvbiBNZShuKXtsZXQgdD17fTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7bGV0IGk9VnIobltlXSk7Zm9yKGxldCByIGluIGkpdFtyXT1pW3JdfXJldHVybiB0fXZhciBuTT17Y2xvbmU6VnIsbWVyZ2U6TWV9LGlNPWB2b2lkIG1haW4oKSB7CglnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7Cn1gLHJNPWB2b2lkIG1haW4oKSB7CglnbF9GcmFnQ29sb3IgPSB2ZWM0KCAxLjAsIDAuMCwgMC4wLCAxLjAgKTsKfWAsRm49Y2xhc3MgZXh0ZW5kcyB4ZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZGVyTWF0ZXJpYWwiLHRoaXMuZGVmaW5lcz17fSx0aGlzLnVuaWZvcm1zPXt9LHRoaXMudmVydGV4U2hhZGVyPWlNLHRoaXMuZnJhZ21lbnRTaGFkZXI9ck0sdGhpcy5saW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMubGlnaHRzPSExLHRoaXMuY2xpcHBpbmc9ITEsdGhpcy5leHRlbnNpb25zPXtkZXJpdmF0aXZlczohMSxmcmFnRGVwdGg6ITEsZHJhd0J1ZmZlcnM6ITEsc2hhZGVyVGV4dHVyZUxPRDohMX0sdGhpcy5kZWZhdWx0QXR0cmlidXRlVmFsdWVzPXtjb2xvcjpbMSwxLDFdLHV2OlswLDBdLHV2MjpbMCwwXX0sdGhpcy5pbmRleDBBdHRyaWJ1dGVOYW1lPXZvaWQgMCx0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSx0aGlzLmdsc2xWZXJzaW9uPW51bGwsdCE9PXZvaWQgMCYmKHQuYXR0cmlidXRlcyE9PXZvaWQgMCYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksdGhpcy5zZXRWYWx1ZXModCkpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyLHRoaXMudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyLHRoaXMudW5pZm9ybXM9VnIodC51bmlmb3JtcyksdGhpcy5kZWZpbmVzPU9iamVjdC5hc3NpZ24oe30sdC5kZWZpbmVzKSx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmxpZ2h0cz10LmxpZ2h0cyx0aGlzLmNsaXBwaW5nPXQuY2xpcHBpbmcsdGhpcy5leHRlbnNpb25zPU9iamVjdC5hc3NpZ24oe30sdC5leHRlbnNpb25zKSx0aGlzLmdsc2xWZXJzaW9uPXQuZ2xzbFZlcnNpb24sdGhpc310b0pTT04odCl7bGV0IGU9c3VwZXIudG9KU09OKHQpO2UuZ2xzbFZlcnNpb249dGhpcy5nbHNsVmVyc2lvbixlLnVuaWZvcm1zPXt9O2ZvcihsZXQgciBpbiB0aGlzLnVuaWZvcm1zKXtsZXQgbz10aGlzLnVuaWZvcm1zW3JdLnZhbHVlO28mJm8uaXNUZXh0dXJlP2UudW5pZm9ybXNbcl09e3R5cGU6InQiLHZhbHVlOm8udG9KU09OKHQpLnV1aWR9Om8mJm8uaXNDb2xvcj9lLnVuaWZvcm1zW3JdPXt0eXBlOiJjIix2YWx1ZTpvLmdldEhleCgpfTpvJiZvLmlzVmVjdG9yMj9lLnVuaWZvcm1zW3JdPXt0eXBlOiJ2MiIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNWZWN0b3IzP2UudW5pZm9ybXNbcl09e3R5cGU6InYzIix2YWx1ZTpvLnRvQXJyYXkoKX06byYmby5pc1ZlY3RvcjQ/ZS51bmlmb3Jtc1tyXT17dHlwZToidjQiLHZhbHVlOm8udG9BcnJheSgpfTpvJiZvLmlzTWF0cml4Mz9lLnVuaWZvcm1zW3JdPXt0eXBlOiJtMyIsdmFsdWU6by50b0FycmF5KCl9Om8mJm8uaXNNYXRyaXg0P2UudW5pZm9ybXNbcl09e3R5cGU6Im00Iix2YWx1ZTpvLnRvQXJyYXkoKX06ZS51bmlmb3Jtc1tyXT17dmFsdWU6b319T2JqZWN0LmtleXModGhpcy5kZWZpbmVzKS5sZW5ndGg+MCYmKGUuZGVmaW5lcz10aGlzLmRlZmluZXMpLGUudmVydGV4U2hhZGVyPXRoaXMudmVydGV4U2hhZGVyLGUuZnJhZ21lbnRTaGFkZXI9dGhpcy5mcmFnbWVudFNoYWRlcjtsZXQgaT17fTtmb3IobGV0IHIgaW4gdGhpcy5leHRlbnNpb25zKXRoaXMuZXh0ZW5zaW9uc1tyXT09PSEwJiYoaVtyXT0hMCk7cmV0dXJuIE9iamVjdC5rZXlzKGkpLmxlbmd0aD4wJiYoZS5leHRlbnNpb25zPWkpLGV9fTtGbi5wcm90b3R5cGUuaXNTaGFkZXJNYXRlcmlhbD0hMDt2YXIgc289Y2xhc3MgZXh0ZW5kcyBrdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJDYW1lcmEiLHRoaXMubWF0cml4V29ybGRJbnZlcnNlPW5ldyB3dCx0aGlzLnByb2plY3Rpb25NYXRyaXg9bmV3IHd0LHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2U9bmV3IHd0fWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5jb3B5KHQucHJvamVjdGlvbk1hdHJpeCksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLHRoaXN9Z2V0V29ybGREaXJlY3Rpb24odCl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7bGV0IGU9dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQoLWVbOF0sLWVbOV0sLWVbMTBdKS5ub3JtYWxpemUoKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfXVwZGF0ZVdvcmxkTWF0cml4KHQsZSl7c3VwZXIudXBkYXRlV29ybGRNYXRyaXgodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX19O3NvLnByb3RvdHlwZS5pc0NhbWVyYT0hMDt2YXIgU2U9Y2xhc3MgZXh0ZW5kcyBzb3tjb25zdHJ1Y3Rvcih0PTUwLGU9MSxpPS4xLHI9MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iUGVyc3BlY3RpdmVDYW1lcmEiLHRoaXMuZm92PXQsdGhpcy56b29tPTEsdGhpcy5uZWFyPWksdGhpcy5mYXI9cix0aGlzLmZvY3VzPTEwLHRoaXMuYXNwZWN0PWUsdGhpcy52aWV3PW51bGwsdGhpcy5maWxtR2F1Z2U9MzUsdGhpcy5maWxtT2Zmc2V0PTAsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5mb3Y9dC5mb3YsdGhpcy56b29tPXQuem9vbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzLmFzcGVjdD10LmFzcGVjdCx0aGlzLnZpZXc9dC52aWV3PT09bnVsbD9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzLmZpbG1HYXVnZT10LmZpbG1HYXVnZSx0aGlzLmZpbG1PZmZzZXQ9dC5maWxtT2Zmc2V0LHRoaXN9c2V0Rm9jYWxMZW5ndGgodCl7bGV0IGU9LjUqdGhpcy5nZXRGaWxtSGVpZ2h0KCkvdDt0aGlzLmZvdj1rdSoyKk1hdGguYXRhbihlKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1nZXRGb2NhbExlbmd0aCgpe2xldCB0PU1hdGgudGFuKGV1Ki41KnRoaXMuZm92KTtyZXR1cm4gLjUqdGhpcy5nZXRGaWxtSGVpZ2h0KCkvdH1nZXRFZmZlY3RpdmVGT1YoKXtyZXR1cm4ga3UqMipNYXRoLmF0YW4oTWF0aC50YW4oZXUqLjUqdGhpcy5mb3YpL3RoaXMuem9vbSl9Z2V0RmlsbVdpZHRoKCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlKk1hdGgubWluKHRoaXMuYXNwZWN0LDEpfWdldEZpbG1IZWlnaHQoKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UvTWF0aC5tYXgodGhpcy5hc3BlY3QsMSl9c2V0Vmlld09mZnNldCh0LGUsaSxyLHMsbyl7dGhpcy5hc3BlY3Q9dC9lLHRoaXMudmlldz09PW51bGwmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMudmlldy5lbmFibGVkPSEwLHRoaXMudmlldy5mdWxsV2lkdGg9dCx0aGlzLnZpZXcuZnVsbEhlaWdodD1lLHRoaXMudmlldy5vZmZzZXRYPWksdGhpcy52aWV3Lm9mZnNldFk9cix0aGlzLnZpZXcud2lkdGg9cyx0aGlzLnZpZXcuaGVpZ2h0PW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y2xlYXJWaWV3T2Zmc2V0KCl7dGhpcy52aWV3IT09bnVsbCYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX11cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl7bGV0IHQ9dGhpcy5uZWFyLGU9dCpNYXRoLnRhbihldSouNSp0aGlzLmZvdikvdGhpcy56b29tLGk9MiplLHI9dGhpcy5hc3BlY3QqaSxzPS0uNSpyLG89dGhpcy52aWV3O2lmKHRoaXMudmlldyE9PW51bGwmJnRoaXMudmlldy5lbmFibGVkKXtsZXQgbD1vLmZ1bGxXaWR0aCxjPW8uZnVsbEhlaWdodDtzKz1vLm9mZnNldFgqci9sLGUtPW8ub2Zmc2V0WSppL2Mscio9by53aWR0aC9sLGkqPW8uaGVpZ2h0L2N9bGV0IGE9dGhpcy5maWxtT2Zmc2V0O2EhPT0wJiYocys9dCphL3RoaXMuZ2V0RmlsbVdpZHRoKCkpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUocyxzK3IsZSxlLWksdCx0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3QuZm92PXRoaXMuZm92LGUub2JqZWN0Lnpvb209dGhpcy56b29tLGUub2JqZWN0Lm5lYXI9dGhpcy5uZWFyLGUub2JqZWN0LmZhcj10aGlzLmZhcixlLm9iamVjdC5mb2N1cz10aGlzLmZvY3VzLGUub2JqZWN0LmFzcGVjdD10aGlzLmFzcGVjdCx0aGlzLnZpZXchPT1udWxsJiYoZS5vYmplY3Qudmlldz1PYmplY3QuYXNzaWduKHt9LHRoaXMudmlldykpLGUub2JqZWN0LmZpbG1HYXVnZT10aGlzLmZpbG1HYXVnZSxlLm9iamVjdC5maWxtT2Zmc2V0PXRoaXMuZmlsbU9mZnNldCxlfX07U2UucHJvdG90eXBlLmlzUGVyc3BlY3RpdmVDYW1lcmE9ITA7dmFyIGJyPTkwLFNyPTEsb289Y2xhc3MgZXh0ZW5kcyBrdHtjb25zdHJ1Y3Rvcih0LGUsaSl7aWYoc3VwZXIoKSx0aGlzLnR5cGU9IkN1YmVDYW1lcmEiLGkuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQhPT0hMCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQ3ViZUNhbWVyYTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIGFuIGluc3RhbmNlIG9mIFdlYkdMQ3ViZVJlbmRlclRhcmdldCBhcyB0aGlyZCBwYXJhbWV0ZXIuIik7cmV0dXJufXRoaXMucmVuZGVyVGFyZ2V0PWk7bGV0IHI9bmV3IFNlKGJyLFNyLHQsZSk7ci5sYXllcnM9dGhpcy5sYXllcnMsci51cC5zZXQoMCwtMSwwKSxyLmxvb2tBdChuZXcgVCgxLDAsMCkpLHRoaXMuYWRkKHIpO2xldCBzPW5ldyBTZShicixTcix0LGUpO3MubGF5ZXJzPXRoaXMubGF5ZXJzLHMudXAuc2V0KDAsLTEsMCkscy5sb29rQXQobmV3IFQoLTEsMCwwKSksdGhpcy5hZGQocyk7bGV0IG89bmV3IFNlKGJyLFNyLHQsZSk7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwwLDEpLG8ubG9va0F0KG5ldyBUKDAsMSwwKSksdGhpcy5hZGQobyk7bGV0IGE9bmV3IFNlKGJyLFNyLHQsZSk7YS5sYXllcnM9dGhpcy5sYXllcnMsYS51cC5zZXQoMCwwLC0xKSxhLmxvb2tBdChuZXcgVCgwLC0xLDApKSx0aGlzLmFkZChhKTtsZXQgbD1uZXcgU2UoYnIsU3IsdCxlKTtsLmxheWVycz10aGlzLmxheWVycyxsLnVwLnNldCgwLC0xLDApLGwubG9va0F0KG5ldyBUKDAsMCwxKSksdGhpcy5hZGQobCk7bGV0IGM9bmV3IFNlKGJyLFNyLHQsZSk7Yy5sYXllcnM9dGhpcy5sYXllcnMsYy51cC5zZXQoMCwtMSwwKSxjLmxvb2tBdChuZXcgVCgwLDAsLTEpKSx0aGlzLmFkZChjKX11cGRhdGUodCxlKXt0aGlzLnBhcmVudD09PW51bGwmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTtsZXQgaT10aGlzLnJlbmRlclRhcmdldCxbcixzLG8sYSxsLGNdPXRoaXMuY2hpbGRyZW4sdT10LnhyLmVuYWJsZWQsaD10LmdldFJlbmRlclRhcmdldCgpO3QueHIuZW5hYmxlZD0hMTtsZXQgZj1pLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzO2kudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ITEsdC5zZXRSZW5kZXJUYXJnZXQoaSwwKSx0LnJlbmRlcihlLHIpLHQuc2V0UmVuZGVyVGFyZ2V0KGksMSksdC5yZW5kZXIoZSxzKSx0LnNldFJlbmRlclRhcmdldChpLDIpLHQucmVuZGVyKGUsbyksdC5zZXRSZW5kZXJUYXJnZXQoaSwzKSx0LnJlbmRlcihlLGEpLHQuc2V0UmVuZGVyVGFyZ2V0KGksNCksdC5yZW5kZXIoZSxsKSxpLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWYsdC5zZXRSZW5kZXJUYXJnZXQoaSw1KSx0LnJlbmRlcihlLGMpLHQuc2V0UmVuZGVyVGFyZ2V0KGgpLHQueHIuZW5hYmxlZD11LGkudGV4dHVyZS5uZWVkc1BNUkVNVXBkYXRlPSEwfX0sR3I9Y2xhc3MgZXh0ZW5kcyBhZXtjb25zdHJ1Y3Rvcih0LGUsaSxyLHMsbyxhLGwsYyx1KXt0PXQhPT12b2lkIDA/dDpbXSxlPWUhPT12b2lkIDA/ZTpUbyxzdXBlcih0LGUsaSxyLHMsbyxhLGwsYyx1KSx0aGlzLmZsaXBZPSExfWdldCBpbWFnZXMoKXtyZXR1cm4gdGhpcy5pbWFnZX1zZXQgaW1hZ2VzKHQpe3RoaXMuaW1hZ2U9dH19O0dyLnByb3RvdHlwZS5pc0N1YmVUZXh0dXJlPSEwO3ZhciBzbD1jbGFzcyBleHRlbmRzIE5le2NvbnN0cnVjdG9yKHQsZSxpKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEN1YmVSZW5kZXJUYXJnZXQ6IGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBpcyBub3cgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KCBzaXplLCBvcHRpb25zICkiKSxlPWkpLHN1cGVyKHQsdCxlKSxlPWV8fHt9LHRoaXMudGV4dHVyZT1uZXcgR3Iodm9pZCAwLGUubWFwcGluZyxlLndyYXBTLGUud3JhcFQsZS5tYWdGaWx0ZXIsZS5taW5GaWx0ZXIsZS5mb3JtYXQsZS50eXBlLGUuYW5pc290cm9weSxlLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSEwLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ZS5nZW5lcmF0ZU1pcG1hcHMhPT12b2lkIDA/ZS5nZW5lcmF0ZU1pcG1hcHM6ITEsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj1lLm1pbkZpbHRlciE9PXZvaWQgMD9lLm1pbkZpbHRlcjpiZX1mcm9tRXF1aXJlY3Rhbmd1bGFyVGV4dHVyZSh0LGUpe3RoaXMudGV4dHVyZS50eXBlPWUudHlwZSx0aGlzLnRleHR1cmUuZm9ybWF0PVJlLHRoaXMudGV4dHVyZS5lbmNvZGluZz1lLmVuY29kaW5nLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ZS5nZW5lcmF0ZU1pcG1hcHMsdGhpcy50ZXh0dXJlLm1pbkZpbHRlcj1lLm1pbkZpbHRlcix0aGlzLnRleHR1cmUubWFnRmlsdGVyPWUubWFnRmlsdGVyO2xldCBpPXt1bmlmb3Jtczp7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOmAKCgkJCQl2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwoKCQkJCXZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7CgoJCQkJCXJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApOwoKCQkJCX0KCgkJCQl2b2lkIG1haW4oKSB7CgoJCQkJCXZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7CgoJCQkJCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkJCQkJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoKCQkJCX0KCQkJYCxmcmFnbWVudFNoYWRlcjpgCgoJCQkJdW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0OwoKCQkJCXZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247CgoJCQkJI2luY2x1ZGUgPGNvbW1vbj4KCgkJCQl2b2lkIG1haW4oKSB7CgoJCQkJCXZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTsKCgkJCQkJdmVjMiBzYW1wbGVVViA9IGVxdWlyZWN0VXYoIGRpcmVjdGlvbiApOwoKCQkJCQlnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTsKCgkJCQl9CgkJCWB9LHI9bmV3IGtpKDUsNSw1KSxzPW5ldyBGbih7bmFtZToiQ3ViZW1hcEZyb21FcXVpcmVjdCIsdW5pZm9ybXM6VnIoaS51bmlmb3JtcyksdmVydGV4U2hhZGVyOmkudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOmkuZnJhZ21lbnRTaGFkZXIsc2lkZTpoZSxibGVuZGluZzpqbn0pO3MudW5pZm9ybXMudEVxdWlyZWN0LnZhbHVlPWU7bGV0IG89bmV3IG9lKHIscyksYT1lLm1pbkZpbHRlcjtyZXR1cm4gZS5taW5GaWx0ZXI9PT1SbCYmKGUubWluRmlsdGVyPWJlKSxuZXcgb28oMSwxMCx0aGlzKS51cGRhdGUodCxvKSxlLm1pbkZpbHRlcj1hLG8uZ2VvbWV0cnkuZGlzcG9zZSgpLG8ubWF0ZXJpYWwuZGlzcG9zZSgpLHRoaXN9Y2xlYXIodCxlLGkscil7bGV0IHM9dC5nZXRSZW5kZXJUYXJnZXQoKTtmb3IobGV0IG89MDtvPDY7bysrKXQuc2V0UmVuZGVyVGFyZ2V0KHRoaXMsbyksdC5jbGVhcihlLGkscik7dC5zZXRSZW5kZXJUYXJnZXQocyl9fTtzbC5wcm90b3R5cGUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ9ITA7dmFyIGJ1PW5ldyBULHNNPW5ldyBULG9NPW5ldyBkZSxqZT1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBUKDEsMCwwKSxlPTApe3RoaXMubm9ybWFsPXQsdGhpcy5jb25zdGFudD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9ZSx0aGlzfXNldENvbXBvbmVudHModCxlLGkscil7cmV0dXJuIHRoaXMubm9ybWFsLnNldCh0LGUsaSksdGhpcy5jb25zdGFudD1yLHRoaXN9c2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PS1lLmRvdCh0aGlzLm5vcm1hbCksdGhpc31zZXRGcm9tQ29wbGFuYXJQb2ludHModCxlLGkpe2xldCByPWJ1LnN1YlZlY3RvcnMoaSxlKS5jcm9zcyhzTS5zdWJWZWN0b3JzKHQsZSkpLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KHIsdCksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQubm9ybWFsKSx0aGlzLmNvbnN0YW50PXQuY29uc3RhbnQsdGhpc31ub3JtYWxpemUoKXtsZXQgdD0xL3RoaXMubm9ybWFsLmxlbmd0aCgpO3JldHVybiB0aGlzLm5vcm1hbC5tdWx0aXBseVNjYWxhcih0KSx0aGlzLmNvbnN0YW50Kj10LHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMuY29uc3RhbnQqPS0xLHRoaXMubm9ybWFsLm5lZ2F0ZSgpLHRoaXN9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiB0aGlzLm5vcm1hbC5kb3QodCkrdGhpcy5jb25zdGFudH1kaXN0YW5jZVRvU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmNlbnRlciktdC5yYWRpdXN9cHJvamVjdFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0aGlzLm5vcm1hbCkubXVsdGlwbHlTY2FsYXIoLXRoaXMuZGlzdGFuY2VUb1BvaW50KHQpKS5hZGQodCl9aW50ZXJzZWN0TGluZSh0LGUpe2xldCBpPXQuZGVsdGEoYnUpLHI9dGhpcy5ub3JtYWwuZG90KGkpO2lmKHI9PT0wKXJldHVybiB0aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KT09PTA/ZS5jb3B5KHQuc3RhcnQpOm51bGw7bGV0IHM9LSh0LnN0YXJ0LmRvdCh0aGlzLm5vcm1hbCkrdGhpcy5jb25zdGFudCkvcjtyZXR1cm4gczwwfHxzPjE/bnVsbDplLmNvcHkoaSkubXVsdGlwbHlTY2FsYXIocykuYWRkKHQuc3RhcnQpfWludGVyc2VjdHNMaW5lKHQpe2xldCBlPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpLGk9dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5lbmQpO3JldHVybiBlPDAmJmk+MHx8aTwwJiZlPjB9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9Y29wbGFuYXJQb2ludCh0KXtyZXR1cm4gdC5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5jb25zdGFudCl9YXBwbHlNYXRyaXg0KHQsZSl7bGV0IGk9ZXx8b00uZ2V0Tm9ybWFsTWF0cml4KHQpLHI9dGhpcy5jb3BsYW5hclBvaW50KGJ1KS5hcHBseU1hdHJpeDQodCkscz10aGlzLm5vcm1hbC5hcHBseU1hdHJpeDMoaSkubm9ybWFsaXplKCk7cmV0dXJuIHRoaXMuY29uc3RhbnQ9LXIuZG90KHMpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLmNvbnN0YW50LT10LmRvdCh0aGlzLm5vcm1hbCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubm9ybWFsLmVxdWFscyh0aGlzLm5vcm1hbCkmJnQuY29uc3RhbnQ9PT10aGlzLmNvbnN0YW50fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX19O2plLnByb3RvdHlwZS5pc1BsYW5lPSEwO3ZhciBFcj1uZXcgc2ksRmE9bmV3IFQsV3I9Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgamUsZT1uZXcgamUsaT1uZXcgamUscj1uZXcgamUscz1uZXcgamUsbz1uZXcgamUpe3RoaXMucGxhbmVzPVt0LGUsaSxyLHMsb119c2V0KHQsZSxpLHIscyxvKXtsZXQgYT10aGlzLnBsYW5lcztyZXR1cm4gYVswXS5jb3B5KHQpLGFbMV0uY29weShlKSxhWzJdLmNvcHkoaSksYVszXS5jb3B5KHIpLGFbNF0uY29weShzKSxhWzVdLmNvcHkobyksdGhpc31jb3B5KHQpe2xldCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgaT0wO2k8NjtpKyspZVtpXS5jb3B5KHQucGxhbmVzW2ldKTtyZXR1cm4gdGhpc31zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0KXtsZXQgZT10aGlzLnBsYW5lcyxpPXQuZWxlbWVudHMscj1pWzBdLHM9aVsxXSxvPWlbMl0sYT1pWzNdLGw9aVs0XSxjPWlbNV0sdT1pWzZdLGg9aVs3XSxmPWlbOF0sZD1pWzldLGc9aVsxMF0seD1pWzExXSx2PWlbMTJdLG09aVsxM10scD1pWzE0XSxiPWlbMTVdO3JldHVybiBlWzBdLnNldENvbXBvbmVudHMoYS1yLGgtbCx4LWYsYi12KS5ub3JtYWxpemUoKSxlWzFdLnNldENvbXBvbmVudHMoYStyLGgrbCx4K2YsYit2KS5ub3JtYWxpemUoKSxlWzJdLnNldENvbXBvbmVudHMoYStzLGgrYyx4K2QsYittKS5ub3JtYWxpemUoKSxlWzNdLnNldENvbXBvbmVudHMoYS1zLGgtYyx4LWQsYi1tKS5ub3JtYWxpemUoKSxlWzRdLnNldENvbXBvbmVudHMoYS1vLGgtdSx4LWcsYi1wKS5ub3JtYWxpemUoKSxlWzVdLnNldENvbXBvbmVudHMoYStvLGgrdSx4K2csYitwKS5ub3JtYWxpemUoKSx0aGlzfWludGVyc2VjdHNPYmplY3QodCl7bGV0IGU9dC5nZW9tZXRyeTtyZXR1cm4gZS5ib3VuZGluZ1NwaGVyZT09PW51bGwmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksRXIuY29weShlLmJvdW5kaW5nU3BoZXJlKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKEVyKX1pbnRlcnNlY3RzU3ByaXRlKHQpe3JldHVybiBFci5jZW50ZXIuc2V0KDAsMCwwKSxFci5yYWRpdXM9LjcwNzEwNjc4MTE4NjU0NzYsRXIuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShFcil9aW50ZXJzZWN0c1NwaGVyZSh0KXtsZXQgZT10aGlzLnBsYW5lcyxpPXQuY2VudGVyLHI9LXQucmFkaXVzO2ZvcihsZXQgcz0wO3M8NjtzKyspaWYoZVtzXS5kaXN0YW5jZVRvUG9pbnQoaSk8cilyZXR1cm4hMTtyZXR1cm4hMH1pbnRlcnNlY3RzQm94KHQpe2xldCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgaT0wO2k8NjtpKyspe2xldCByPWVbaV07aWYoRmEueD1yLm5vcm1hbC54PjA/dC5tYXgueDp0Lm1pbi54LEZhLnk9ci5ub3JtYWwueT4wP3QubWF4Lnk6dC5taW4ueSxGYS56PXIubm9ybWFsLno+MD90Lm1heC56OnQubWluLnosci5kaXN0YW5jZVRvUG9pbnQoRmEpPDApcmV0dXJuITF9cmV0dXJuITB9Y29udGFpbnNQb2ludCh0KXtsZXQgZT10aGlzLnBsYW5lcztmb3IobGV0IGk9MDtpPDY7aSsrKWlmKGVbaV0uZGlzdGFuY2VUb1BvaW50KHQpPDApcmV0dXJuITE7cmV0dXJuITB9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfX07ZnVuY3Rpb24gcDAoKXtsZXQgbj1udWxsLHQ9ITEsZT1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHMsbyl7ZShzLG8pLGk9bi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocil9cmV0dXJue3N0YXJ0OmZ1bmN0aW9uKCl7dCE9PSEwJiZlIT09bnVsbCYmKGk9bi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUociksdD0hMCl9LHN0b3A6ZnVuY3Rpb24oKXtuLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGkpLHQ9ITF9LHNldEFuaW1hdGlvbkxvb3A6ZnVuY3Rpb24ocyl7ZT1zfSxzZXRDb250ZXh0OmZ1bmN0aW9uKHMpe249c319fWZ1bmN0aW9uIGFNKG4sdCl7bGV0IGU9dC5pc1dlYkdMMixpPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHIoYyx1KXtsZXQgaD1jLmFycmF5LGY9Yy51c2FnZSxkPW4uY3JlYXRlQnVmZmVyKCk7bi5iaW5kQnVmZmVyKHUsZCksbi5idWZmZXJEYXRhKHUsaCxmKSxjLm9uVXBsb2FkQ2FsbGJhY2soKTtsZXQgZz01MTI2O3JldHVybiBoIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5P2c9NTEyNjpoIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVbnN1cHBvcnRlZCBkYXRhIGJ1ZmZlciBmb3JtYXQ6IEZsb2F0NjRBcnJheS4iKTpoIGluc3RhbmNlb2YgVWludDE2QXJyYXk/Yy5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU/ZT9nPTUxMzE6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVzYWdlIG9mIEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgV2ViR0wyLiIpOmc9NTEyMzpoIGluc3RhbmNlb2YgSW50MTZBcnJheT9nPTUxMjI6aCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5P2c9NTEyNTpoIGluc3RhbmNlb2YgSW50MzJBcnJheT9nPTUxMjQ6aCBpbnN0YW5jZW9mIEludDhBcnJheT9nPTUxMjA6KGggaW5zdGFuY2VvZiBVaW50OEFycmF5fHxoIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpJiYoZz01MTIxKSx7YnVmZmVyOmQsdHlwZTpnLGJ5dGVzUGVyRWxlbWVudDpoLkJZVEVTX1BFUl9FTEVNRU5ULHZlcnNpb246Yy52ZXJzaW9ufX1mdW5jdGlvbiBzKGMsdSxoKXtsZXQgZj11LmFycmF5LGQ9dS51cGRhdGVSYW5nZTtuLmJpbmRCdWZmZXIoaCxjKSxkLmNvdW50PT09LTE/bi5idWZmZXJTdWJEYXRhKGgsMCxmKTooZT9uLmJ1ZmZlclN1YkRhdGEoaCxkLm9mZnNldCpmLkJZVEVTX1BFUl9FTEVNRU5ULGYsZC5vZmZzZXQsZC5jb3VudCk6bi5idWZmZXJTdWJEYXRhKGgsZC5vZmZzZXQqZi5CWVRFU19QRVJfRUxFTUVOVCxmLnN1YmFycmF5KGQub2Zmc2V0LGQub2Zmc2V0K2QuY291bnQpKSxkLmNvdW50PS0xKX1mdW5jdGlvbiBvKGMpe3JldHVybiBjLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihjPWMuZGF0YSksaS5nZXQoYyl9ZnVuY3Rpb24gYShjKXtjLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihjPWMuZGF0YSk7bGV0IHU9aS5nZXQoYyk7dSYmKG4uZGVsZXRlQnVmZmVyKHUuYnVmZmVyKSxpLmRlbGV0ZShjKSl9ZnVuY3Rpb24gbChjLHUpe2lmKGMuaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7bGV0IGY9aS5nZXQoYyk7KCFmfHxmLnZlcnNpb248Yy52ZXJzaW9uKSYmaS5zZXQoYyx7YnVmZmVyOmMuYnVmZmVyLHR5cGU6Yy50eXBlLGJ5dGVzUGVyRWxlbWVudDpjLmVsZW1lbnRTaXplLHZlcnNpb246Yy52ZXJzaW9ufSk7cmV0dXJufWMuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGM9Yy5kYXRhKTtsZXQgaD1pLmdldChjKTtoPT09dm9pZCAwP2kuc2V0KGMscihjLHUpKTpoLnZlcnNpb248Yy52ZXJzaW9uJiYocyhoLmJ1ZmZlcixjLHUpLGgudmVyc2lvbj1jLnZlcnNpb24pfXJldHVybntnZXQ6byxyZW1vdmU6YSx1cGRhdGU6bH19dmFyIGFvPWNsYXNzIGV4dGVuZHMgSHR7Y29uc3RydWN0b3IodD0xLGU9MSxpPTEscj0xKXtzdXBlcigpLHRoaXMudHlwZT0iUGxhbmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLHdpZHRoU2VnbWVudHM6aSxoZWlnaHRTZWdtZW50czpyfTtsZXQgcz10LzIsbz1lLzIsYT1NYXRoLmZsb29yKGkpLGw9TWF0aC5mbG9vcihyKSxjPWErMSx1PWwrMSxoPXQvYSxmPWUvbCxkPVtdLGc9W10seD1bXSx2PVtdO2ZvcihsZXQgbT0wO208dTttKyspe2xldCBwPW0qZi1vO2ZvcihsZXQgYj0wO2I8YztiKyspe2xldCBfPWIqaC1zO2cucHVzaChfLC1wLDApLHgucHVzaCgwLDAsMSksdi5wdXNoKGIvYSksdi5wdXNoKDEtbS9sKX19Zm9yKGxldCBtPTA7bTxsO20rKylmb3IobGV0IHA9MDtwPGE7cCsrKXtsZXQgYj1wK2MqbSxfPXArYyoobSsxKSxTPXArMStjKihtKzEpLEw9cCsxK2MqbTtkLnB1c2goYixfLEwpLGQucHVzaChfLFMsTCl9dGhpcy5zZXRJbmRleChkKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlZShnLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZWUoeCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZWUodiwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgYW8odC53aWR0aCx0LmhlaWdodCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyl9fSxsTT1gI2lmZGVmIFVTRV9BTFBIQU1BUAoJZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZzsKI2VuZGlmYCxjTT1gI2lmZGVmIFVTRV9BTFBIQU1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgYWxwaGFNYXA7CiNlbmRpZmAsdU09YCNpZmRlZiBVU0VfQUxQSEFURVNUCglpZiAoIGRpZmZ1c2VDb2xvci5hIDwgYWxwaGFUZXN0ICkgZGlzY2FyZDsKI2VuZGlmYCxoTT1gI2lmZGVmIFVTRV9BTFBIQVRFU1QKCXVuaWZvcm0gZmxvYXQgYWxwaGFUZXN0OwojZW5kaWZgLGZNPWAjaWZkZWYgVVNFX0FPTUFQCglmbG9hdCBhbWJpZW50T2NjbHVzaW9uID0gKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gYW1iaWVudE9jY2x1c2lvbjsKCSNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKQoJCWZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTsKCQlyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICo9IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggZG90TlYsIGFtYmllbnRPY2NsdXNpb24sIG1hdGVyaWFsLnJvdWdobmVzcyApOwoJI2VuZGlmCiNlbmRpZmAsZE09YCNpZmRlZiBVU0VfQU9NQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGFvTWFwOwoJdW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTsKI2VuZGlmYCxwTT0idmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMoIHBvc2l0aW9uICk7IixtTT1gdmVjMyBvYmplY3ROb3JtYWwgPSB2ZWMzKCBub3JtYWwgKTsKI2lmZGVmIFVTRV9UQU5HRU5UCgl2ZWMzIG9iamVjdFRhbmdlbnQgPSB2ZWMzKCB0YW5nZW50Lnh5eiApOwojZW5kaWZgLGdNPWB2ZWMzIEJSREZfTGFtYmVydCggY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IgKSB7CglyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjsKfQp2ZWMzIEZfU2NobGljayggY29uc3QgaW4gdmVjMyBmMCwgY29uc3QgaW4gZmxvYXQgZjkwLCBjb25zdCBpbiBmbG9hdCBkb3RWSCApIHsKCWZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC0gNS41NTQ3MyAqIGRvdFZIIC0gNi45ODMxNiApICogZG90VkggKTsKCXJldHVybiBmMCAqICggMS4wIC0gZnJlc25lbCApICsgKCBmOTAgKiBmcmVzbmVsICk7Cn0KZmxvYXQgVl9HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkgewoJZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApOwoJZmxvYXQgZ3YgPSBkb3ROTCAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TlYgKSApOwoJZmxvYXQgZ2wgPSBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApOwoJcmV0dXJuIDAuNSAvIG1heCggZ3YgKyBnbCwgRVBTSUxPTiApOwp9CmZsb2F0IERfR0dYKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7CglmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7CglmbG9hdCBkZW5vbSA9IHBvdzIoIGRvdE5IICkgKiAoIGEyIC0gMS4wICkgKyAxLjA7CglyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGEyIC8gcG93MiggZGVub20gKTsKfQp2ZWMzIEJSREZfR0dYKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiBmbG9hdCBmOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHsKCWZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7Cgl2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGxpZ2h0RGlyICsgdmlld0RpciApOwoJZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGxpZ2h0RGlyICkgKTsKCWZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTsKCWZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTsKCWZsb2F0IGRvdFZIID0gc2F0dXJhdGUoIGRvdCggdmlld0RpciwgaGFsZkRpciApICk7Cgl2ZWMzIEYgPSBGX1NjaGxpY2soIGYwLCBmOTAsIGRvdFZIICk7CglmbG9hdCBWID0gVl9HR1hfU21pdGhDb3JyZWxhdGVkKCBhbHBoYSwgZG90TkwsIGRvdE5WICk7CglmbG9hdCBEID0gRF9HR1goIGFscGhhLCBkb3ROSCApOwoJcmV0dXJuIEYgKiAoIFYgKiBEICk7Cn0KdmVjMiBMVENfVXYoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7Cgljb25zdCBmbG9hdCBMVVRfU0laRSA9IDY0LjA7Cgljb25zdCBmbG9hdCBMVVRfU0NBTEUgPSAoIExVVF9TSVpFIC0gMS4wICkgLyBMVVRfU0laRTsKCWNvbnN0IGZsb2F0IExVVF9CSUFTID0gMC41IC8gTFVUX1NJWkU7CglmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIE4sIFYgKSApOwoJdmVjMiB1diA9IHZlYzIoIHJvdWdobmVzcywgc3FydCggMS4wIC0gZG90TlYgKSApOwoJdXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTOwoJcmV0dXJuIHV2Owp9CmZsb2F0IExUQ19DbGlwcGVkU3BoZXJlRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyBmICkgewoJZmxvYXQgbCA9IGxlbmd0aCggZiApOwoJcmV0dXJuIG1heCggKCBsICogbCArIGYueiApIC8gKCBsICsgMS4wICksIDAuMCApOwp9CnZlYzMgTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIHYxLCBjb25zdCBpbiB2ZWMzIHYyICkgewoJZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7CglmbG9hdCB5ID0gYWJzKCB4ICk7CglmbG9hdCBhID0gMC44NTQzOTg1ICsgKCAwLjQ5NjUxNTUgKyAwLjAxNDUyMDYgKiB5ICkgKiB5OwoJZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTsKCWZsb2F0IHYgPSBhIC8gYjsKCWZsb2F0IHRoZXRhX3NpbnRoZXRhID0gKCB4ID4gMC4wICkgPyB2IDogMC41ICogaW52ZXJzZXNxcnQoIG1heCggMS4wIC0geCAqIHgsIDFlLTcgKSApIC0gdjsKCXJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTsKfQp2ZWMzIExUQ19FdmFsdWF0ZSggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIHZlYzMgUCwgY29uc3QgaW4gbWF0MyBtSW52LCBjb25zdCBpbiB2ZWMzIHJlY3RDb29yZHNbIDQgXSApIHsKCXZlYzMgdjEgPSByZWN0Q29vcmRzWyAxIF0gLSByZWN0Q29vcmRzWyAwIF07Cgl2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdOwoJdmVjMyBsaWdodE5vcm1hbCA9IGNyb3NzKCB2MSwgdjIgKTsKCWlmKCBkb3QoIGxpZ2h0Tm9ybWFsLCBQIC0gcmVjdENvb3Jkc1sgMCBdICkgPCAwLjAgKSByZXR1cm4gdmVjMyggMC4wICk7Cgl2ZWMzIFQxLCBUMjsKCVQxID0gbm9ybWFsaXplKCBWIC0gTiAqIGRvdCggViwgTiApICk7CglUMiA9IC0gY3Jvc3MoIE4sIFQxICk7CgltYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApOwoJdmVjMyBjb29yZHNbIDQgXTsKCWNvb3Jkc1sgMCBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAwIF0gLSBQICk7Cgljb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApOwoJY29vcmRzWyAyIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDIgXSAtIFAgKTsKCWNvb3Jkc1sgMyBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAzIF0gLSBQICk7Cgljb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTsKCWNvb3Jkc1sgMSBdID0gbm9ybWFsaXplKCBjb29yZHNbIDEgXSApOwoJY29vcmRzWyAyIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMiBdICk7Cgljb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTsKCXZlYzMgdmVjdG9yRm9ybUZhY3RvciA9IHZlYzMoIDAuMCApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMCBdLCBjb29yZHNbIDEgXSApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMiBdLCBjb29yZHNbIDMgXSApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMyBdLCBjb29yZHNbIDAgXSApOwoJZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7CglyZXR1cm4gdmVjMyggcmVzdWx0ICk7Cn0KZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHsKCXJldHVybiAwLjI1Owp9CmZsb2F0IERfQmxpbm5QaG9uZyggY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHsKCXJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApOwp9CnZlYzMgQlJERl9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcyApIHsKCXZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggbGlnaHREaXIgKyB2aWV3RGlyICk7CglmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7CglmbG9hdCBkb3RWSCA9IHNhdHVyYXRlKCBkb3QoIHZpZXdEaXIsIGhhbGZEaXIgKSApOwoJdmVjMyBGID0gRl9TY2hsaWNrKCBzcGVjdWxhckNvbG9yLCAxLjAsIGRvdFZIICk7CglmbG9hdCBHID0gR19CbGlublBob25nX0ltcGxpY2l0KCApOwoJZmxvYXQgRCA9IERfQmxpbm5QaG9uZyggc2hpbmluZXNzLCBkb3ROSCApOwoJcmV0dXJuIEYgKiAoIEcgKiBEICk7Cn0KI2lmIGRlZmluZWQoIFVTRV9TSEVFTiApCmZsb2F0IERfQ2hhcmxpZSggZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBkb3ROSCApIHsKCWZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7CglmbG9hdCBpbnZBbHBoYSA9IDEuMCAvIGFscGhhOwoJZmxvYXQgY29zMmggPSBkb3ROSCAqIGRvdE5IOwoJZmxvYXQgc2luMmggPSBtYXgoIDEuMCAtIGNvczJoLCAwLjAwNzgxMjUgKTsKCXJldHVybiAoIDIuMCArIGludkFscGhhICkgKiBwb3coIHNpbjJoLCBpbnZBbHBoYSAqIDAuNSApIC8gKCAyLjAgKiBQSSApOwp9CmZsb2F0IFZfTmV1YmVsdCggZmxvYXQgZG90TlYsIGZsb2F0IGRvdE5MICkgewoJcmV0dXJuIHNhdHVyYXRlKCAxLjAgLyAoIDQuMCAqICggZG90TkwgKyBkb3ROViAtIGRvdE5MICogZG90TlYgKSApICk7Cn0KdmVjMyBCUkRGX1NoZWVuKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCB2ZWMzIHNoZWVuQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoZWVuUm91Z2huZXNzICkgewoJdmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBsaWdodERpciArIHZpZXdEaXIgKTsKCWZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBsaWdodERpciApICk7CglmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7CglmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7CglmbG9hdCBEID0gRF9DaGFybGllKCBzaGVlblJvdWdobmVzcywgZG90TkggKTsKCWZsb2F0IFYgPSBWX05ldWJlbHQoIGRvdE5WLCBkb3ROTCApOwoJcmV0dXJuIHNoZWVuQ29sb3IgKiAoIEQgKiBWICk7Cn0KI2VuZGlmYCx4TT1gI2lmZGVmIFVTRV9CVU1QTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBidW1wTWFwOwoJdW5pZm9ybSBmbG9hdCBidW1wU2NhbGU7Cgl2ZWMyIGRIZHh5X2Z3ZCgpIHsKCQl2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7CgkJdmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApOwoJCWZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDsKCQlmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDsKCQlmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDsKCQlyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTsKCX0KCXZlYzMgcGVydHVyYk5vcm1hbEFyYiggdmVjMyBzdXJmX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgZEhkeHksIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7CgkJdmVjMyB2U2lnbWFYID0gdmVjMyggZEZkeCggc3VyZl9wb3MueCApLCBkRmR4KCBzdXJmX3Bvcy55ICksIGRGZHgoIHN1cmZfcG9zLnogKSApOwoJCXZlYzMgdlNpZ21hWSA9IHZlYzMoIGRGZHkoIHN1cmZfcG9zLnggKSwgZEZkeSggc3VyZl9wb3MueSApLCBkRmR5KCBzdXJmX3Bvcy56ICkgKTsKCQl2ZWMzIHZOID0gc3VyZl9ub3JtOwoJCXZlYzMgUjEgPSBjcm9zcyggdlNpZ21hWSwgdk4gKTsKCQl2ZWMzIFIyID0gY3Jvc3MoIHZOLCB2U2lnbWFYICk7CgkJZmxvYXQgZkRldCA9IGRvdCggdlNpZ21hWCwgUjEgKSAqIGZhY2VEaXJlY3Rpb247CgkJdmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7CgkJcmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApOwoJfQojZW5kaWZgLHlNPWAjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDAKCXZlYzQgcGxhbmU7CgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBVTklPTl9DTElQUElOR19QTEFORVM7IGkgKysgKSB7CgkJcGxhbmUgPSBjbGlwcGluZ1BsYW5lc1sgaSBdOwoJCWlmICggZG90KCB2Q2xpcFBvc2l0aW9uLCBwbGFuZS54eXogKSA+IHBsYW5lLncgKSBkaXNjYXJkOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKCSNpZiBVTklPTl9DTElQUElOR19QTEFORVMgPCBOVU1fQ0xJUFBJTkdfUExBTkVTCgkJYm9vbCBjbGlwcGVkID0gdHJ1ZTsKCQkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0CgkJZm9yICggaW50IGkgPSBVTklPTl9DTElQUElOR19QTEFORVM7IGkgPCBOVU1fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkgewoJCQlwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07CgkJCWNsaXBwZWQgPSAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgJiYgY2xpcHBlZDsKCQl9CgkJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKCQlpZiAoIGNsaXBwZWQgKSBkaXNjYXJkOwoJI2VuZGlmCiNlbmRpZmAsdk09YCNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMAoJdmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247Cgl1bmlmb3JtIHZlYzQgY2xpcHBpbmdQbGFuZXNbIE5VTV9DTElQUElOR19QTEFORVMgXTsKI2VuZGlmYCxfTT1gI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwCgl2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjsKI2VuZGlmYCx3TT1gI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwCgl2Q2xpcFBvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejsKI2VuZGlmYCxNTT1gI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApCglkaWZmdXNlQ29sb3IgKj0gdkNvbG9yOwojZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKQoJZGlmZnVzZUNvbG9yLnJnYiAqPSB2Q29sb3I7CiNlbmRpZmAsYk09YCNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKQoJdmFyeWluZyB2ZWM0IHZDb2xvcjsKI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkKCXZhcnlpbmcgdmVjMyB2Q29sb3I7CiNlbmRpZmAsU009YCNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKQoJdmFyeWluZyB2ZWM0IHZDb2xvcjsKI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKQoJdmFyeWluZyB2ZWMzIHZDb2xvcjsKI2VuZGlmYCxFTT1gI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApCgl2Q29sb3IgPSB2ZWM0KCAxLjAgKTsKI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKQoJdkNvbG9yID0gdmVjMyggMS4wICk7CiNlbmRpZgojaWZkZWYgVVNFX0NPTE9SCgl2Q29sb3IgKj0gY29sb3I7CiNlbmRpZgojaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1IKCXZDb2xvci54eXogKj0gaW5zdGFuY2VDb2xvci54eXo7CiNlbmRpZmAsVE09YCNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTMKI2RlZmluZSBQSTIgNi4yODMxODUzMDcxNzk1ODYKI2RlZmluZSBQSV9IQUxGIDEuNTcwNzk2MzI2Nzk0ODk2NgojZGVmaW5lIFJFQ0lQUk9DQUxfUEkgMC4zMTgzMDk4ODYxODM3OTA3CiNkZWZpbmUgUkVDSVBST0NBTF9QSTIgMC4xNTkxNTQ5NDMwOTE4OTUzNQojZGVmaW5lIEVQU0lMT04gMWUtNgojaWZuZGVmIHNhdHVyYXRlCiNkZWZpbmUgc2F0dXJhdGUoIGEgKSBjbGFtcCggYSwgMC4wLCAxLjAgKQojZW5kaWYKI2RlZmluZSB3aGl0ZUNvbXBsZW1lbnQoIGEgKSAoIDEuMCAtIHNhdHVyYXRlKCBhICkgKQpmbG9hdCBwb3cyKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4OyB9CmZsb2F0IHBvdzMoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4KngqeDsgfQpmbG9hdCBwb3c0KCBjb25zdCBpbiBmbG9hdCB4ICkgeyBmbG9hdCB4MiA9IHgqeDsgcmV0dXJuIHgyKngyOyB9CmZsb2F0IG1heDMoIGNvbnN0IGluIHZlYzMgdiApIHsgcmV0dXJuIG1heCggbWF4KCB2LngsIHYueSApLCB2LnogKTsgfQpmbG9hdCBhdmVyYWdlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkgeyByZXR1cm4gZG90KCBjb2xvciwgdmVjMyggMC4zMzMzICkgKTsgfQpoaWdocCBmbG9hdCByYW5kKCBjb25zdCBpbiB2ZWMyIHV2ICkgewoJY29uc3QgaGlnaHAgZmxvYXQgYSA9IDEyLjk4OTgsIGIgPSA3OC4yMzMsIGMgPSA0Mzc1OC41NDUzOwoJaGlnaHAgZmxvYXQgZHQgPSBkb3QoIHV2Lnh5LCB2ZWMyKCBhLGIgKSApLCBzbiA9IG1vZCggZHQsIFBJICk7CglyZXR1cm4gZnJhY3QoIHNpbiggc24gKSAqIGMgKTsKfQojaWZkZWYgSElHSF9QUkVDSVNJT04KCWZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHsgcmV0dXJuIGxlbmd0aCggdiApOyB9CiNlbHNlCglmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7CgkJZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4MyggYWJzKCB2ICkgKTsKCQlyZXR1cm4gbGVuZ3RoKCB2IC8gbWF4Q29tcG9uZW50ICkgKiBtYXhDb21wb25lbnQ7Cgl9CiNlbmRpZgpzdHJ1Y3QgSW5jaWRlbnRMaWdodCB7Cgl2ZWMzIGNvbG9yOwoJdmVjMyBkaXJlY3Rpb247Cglib29sIHZpc2libGU7Cn07CnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7Cgl2ZWMzIGRpcmVjdERpZmZ1c2U7Cgl2ZWMzIGRpcmVjdFNwZWN1bGFyOwoJdmVjMyBpbmRpcmVjdERpZmZ1c2U7Cgl2ZWMzIGluZGlyZWN0U3BlY3VsYXI7Cn07CnN0cnVjdCBHZW9tZXRyaWNDb250ZXh0IHsKCXZlYzMgcG9zaXRpb247Cgl2ZWMzIG5vcm1hbDsKCXZlYzMgdmlld0RpcjsKI2lmZGVmIFVTRV9DTEVBUkNPQVQKCXZlYzMgY2xlYXJjb2F0Tm9ybWFsOwojZW5kaWYKfTsKdmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHsKCXJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApOwp9CnZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkgewoJcmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBkaXIsIDAuMCApICogbWF0cml4ICkueHl6ICk7Cn0KbWF0MyB0cmFuc3Bvc2VNYXQzKCBjb25zdCBpbiBtYXQzIG0gKSB7CgltYXQzIHRtcDsKCXRtcFsgMCBdID0gdmVjMyggbVsgMCBdLngsIG1bIDEgXS54LCBtWyAyIF0ueCApOwoJdG1wWyAxIF0gPSB2ZWMzKCBtWyAwIF0ueSwgbVsgMSBdLnksIG1bIDIgXS55ICk7Cgl0bXBbIDIgXSA9IHZlYzMoIG1bIDAgXS56LCBtWyAxIF0ueiwgbVsgMiBdLnogKTsKCXJldHVybiB0bXA7Cn0KZmxvYXQgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsKCXZlYzMgd2VpZ2h0cyA9IHZlYzMoIDAuMjEyNiwgMC43MTUyLCAwLjA3MjIgKTsKCXJldHVybiBkb3QoIHdlaWdodHMsIGNvbG9yLnJnYiApOwp9CmJvb2wgaXNQZXJzcGVjdGl2ZU1hdHJpeCggbWF0NCBtICkgewoJcmV0dXJuIG1bIDIgXVsgMyBdID09IC0gMS4wOwp9CnZlYzIgZXF1aXJlY3RVdiggaW4gdmVjMyBkaXIgKSB7CglmbG9hdCB1ID0gYXRhbiggZGlyLnosIGRpci54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTsKCWZsb2F0IHYgPSBhc2luKCBjbGFtcCggZGlyLnksIC0gMS4wLCAxLjAgKSApICogUkVDSVBST0NBTF9QSSArIDAuNTsKCXJldHVybiB2ZWMyKCB1LCB2ICk7Cn1gLEFNPWAjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVgoJI2RlZmluZSBjdWJlVVZfbWF4TWlwTGV2ZWwgOC4wCgkjZGVmaW5lIGN1YmVVVl9taW5NaXBMZXZlbCA0LjAKCSNkZWZpbmUgY3ViZVVWX21heFRpbGVTaXplIDI1Ni4wCgkjZGVmaW5lIGN1YmVVVl9taW5UaWxlU2l6ZSAxNi4wCglmbG9hdCBnZXRGYWNlKCB2ZWMzIGRpcmVjdGlvbiApIHsKCQl2ZWMzIGFic0RpcmVjdGlvbiA9IGFicyggZGlyZWN0aW9uICk7CgkJZmxvYXQgZmFjZSA9IC0gMS4wOwoJCWlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueiApIHsKCQkJaWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi55ICkKCQkJCWZhY2UgPSBkaXJlY3Rpb24ueCA+IDAuMCA/IDAuMCA6IDMuMDsKCQkJZWxzZQoJCQkJZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wOwoJCX0gZWxzZSB7CgkJCWlmICggYWJzRGlyZWN0aW9uLnogPiBhYnNEaXJlY3Rpb24ueSApCgkJCQlmYWNlID0gZGlyZWN0aW9uLnogPiAwLjAgPyAyLjAgOiA1LjA7CgkJCWVsc2UKCQkJCWZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDsKCQl9CgkJcmV0dXJuIGZhY2U7Cgl9Cgl2ZWMyIGdldFVWKCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgZmFjZSApIHsKCQl2ZWMyIHV2OwoJCWlmICggZmFjZSA9PSAwLjAgKSB7CgkJCXV2ID0gdmVjMiggZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7CgkJfSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7CgkJCXV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgLSBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApOwoJCX0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkgewoJCQl1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7CgkJfSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7CgkJCXV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTsKCQl9IGVsc2UgaWYgKCBmYWNlID09IDQuMCApIHsKCQkJdXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApOwoJCX0gZWxzZSB7CgkJCXV2ID0gdmVjMiggZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7CgkJfQoJCXJldHVybiAwLjUgKiAoIHV2ICsgMS4wICk7Cgl9Cgl2ZWMzIGJpbGluZWFyQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgbWlwSW50ICkgewoJCWZsb2F0IGZhY2UgPSBnZXRGYWNlKCBkaXJlY3Rpb24gKTsKCQlmbG9hdCBmaWx0ZXJJbnQgPSBtYXgoIGN1YmVVVl9taW5NaXBMZXZlbCAtIG1pcEludCwgMC4wICk7CgkJbWlwSW50ID0gbWF4KCBtaXBJbnQsIGN1YmVVVl9taW5NaXBMZXZlbCApOwoJCWZsb2F0IGZhY2VTaXplID0gZXhwMiggbWlwSW50ICk7CgkJZmxvYXQgdGV4ZWxTaXplID0gMS4wIC8gKCAzLjAgKiBjdWJlVVZfbWF4VGlsZVNpemUgKTsKCQl2ZWMyIHV2ID0gZ2V0VVYoIGRpcmVjdGlvbiwgZmFjZSApICogKCBmYWNlU2l6ZSAtIDEuMCApICsgMC41OwoJCWlmICggZmFjZSA+IDIuMCApIHsKCQkJdXYueSArPSBmYWNlU2l6ZTsKCQkJZmFjZSAtPSAzLjA7CgkJfQoJCXV2LnggKz0gZmFjZSAqIGZhY2VTaXplOwoJCWlmICggbWlwSW50IDwgY3ViZVVWX21heE1pcExldmVsICkgewoJCQl1di55ICs9IDIuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZTsKCQl9CgkJdXYueSArPSBmaWx0ZXJJbnQgKiAyLjAgKiBjdWJlVVZfbWluVGlsZVNpemU7CgkJdXYueCArPSAzLjAgKiBtYXgoIDAuMCwgY3ViZVVWX21heFRpbGVTaXplIC0gMi4wICogZmFjZVNpemUgKTsKCQl1diAqPSB0ZXhlbFNpemU7CgkJcmV0dXJuIHRleHR1cmUyRCggZW52TWFwLCB1diApLnJnYjsKCX0KCSNkZWZpbmUgcjAgMS4wCgkjZGVmaW5lIHYwIDAuMzM5CgkjZGVmaW5lIG0wIC0gMi4wCgkjZGVmaW5lIHIxIDAuOAoJI2RlZmluZSB2MSAwLjI3NgoJI2RlZmluZSBtMSAtIDEuMAoJI2RlZmluZSByNCAwLjQKCSNkZWZpbmUgdjQgMC4wNDYKCSNkZWZpbmUgbTQgMi4wCgkjZGVmaW5lIHI1IDAuMzA1CgkjZGVmaW5lIHY1IDAuMDE2CgkjZGVmaW5lIG01IDMuMAoJI2RlZmluZSByNiAwLjIxCgkjZGVmaW5lIHY2IDAuMDAzOAoJI2RlZmluZSBtNiA0LjAKCWZsb2F0IHJvdWdobmVzc1RvTWlwKCBmbG9hdCByb3VnaG5lc3MgKSB7CgkJZmxvYXQgbWlwID0gMC4wOwoJCWlmICggcm91Z2huZXNzID49IHIxICkgewoJCQltaXAgPSAoIHIwIC0gcm91Z2huZXNzICkgKiAoIG0xIC0gbTAgKSAvICggcjAgLSByMSApICsgbTA7CgkJfSBlbHNlIGlmICggcm91Z2huZXNzID49IHI0ICkgewoJCQltaXAgPSAoIHIxIC0gcm91Z2huZXNzICkgKiAoIG00IC0gbTEgKSAvICggcjEgLSByNCApICsgbTE7CgkJfSBlbHNlIGlmICggcm91Z2huZXNzID49IHI1ICkgewoJCQltaXAgPSAoIHI0IC0gcm91Z2huZXNzICkgKiAoIG01IC0gbTQgKSAvICggcjQgLSByNSApICsgbTQ7CgkJfSBlbHNlIGlmICggcm91Z2huZXNzID49IHI2ICkgewoJCQltaXAgPSAoIHI1IC0gcm91Z2huZXNzICkgKiAoIG02IC0gbTUgKSAvICggcjUgLSByNiApICsgbTU7CgkJfSBlbHNlIHsKCQkJbWlwID0gLSAyLjAgKiBsb2cyKCAxLjE2ICogcm91Z2huZXNzICk7CQl9CgkJcmV0dXJuIG1pcDsKCX0KCXZlYzQgdGV4dHVyZUN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBzYW1wbGVEaXIsIGZsb2F0IHJvdWdobmVzcyApIHsKCQlmbG9hdCBtaXAgPSBjbGFtcCggcm91Z2huZXNzVG9NaXAoIHJvdWdobmVzcyApLCBtMCwgY3ViZVVWX21heE1pcExldmVsICk7CgkJZmxvYXQgbWlwRiA9IGZyYWN0KCBtaXAgKTsKCQlmbG9hdCBtaXBJbnQgPSBmbG9vciggbWlwICk7CgkJdmVjMyBjb2xvcjAgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCApOwoJCWlmICggbWlwRiA9PSAwLjAgKSB7CgkJCXJldHVybiB2ZWM0KCBjb2xvcjAsIDEuMCApOwoJCX0gZWxzZSB7CgkJCXZlYzMgY29sb3IxID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKyAxLjAgKTsKCQkJcmV0dXJuIHZlYzQoIG1peCggY29sb3IwLCBjb2xvcjEsIG1pcEYgKSwgMS4wICk7CgkJfQoJfQojZW5kaWZgLENNPWB2ZWMzIHRyYW5zZm9ybWVkTm9ybWFsID0gb2JqZWN0Tm9ybWFsOwojaWZkZWYgVVNFX0lOU1RBTkNJTkcKCW1hdDMgbSA9IG1hdDMoIGluc3RhbmNlTWF0cml4ICk7Cgl0cmFuc2Zvcm1lZE5vcm1hbCAvPSB2ZWMzKCBkb3QoIG1bIDAgXSwgbVsgMCBdICksIGRvdCggbVsgMSBdLCBtWyAxIF0gKSwgZG90KCBtWyAyIF0sIG1bIDIgXSApICk7Cgl0cmFuc2Zvcm1lZE5vcm1hbCA9IG0gKiB0cmFuc2Zvcm1lZE5vcm1hbDsKI2VuZGlmCnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7CiNpZmRlZiBGTElQX1NJREVECgl0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7CiNlbmRpZgojaWZkZWYgVVNFX1RBTkdFTlQKCXZlYzMgdHJhbnNmb3JtZWRUYW5nZW50ID0gKCBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejsKCSNpZmRlZiBGTElQX1NJREVECgkJdHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7CgkjZW5kaWYKI2VuZGlmYCxSTT1gI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDsKCXVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50U2NhbGU7Cgl1bmlmb3JtIGZsb2F0IGRpc3BsYWNlbWVudEJpYXM7CiNlbmRpZmAsTE09YCNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQCgl0cmFuc2Zvcm1lZCArPSBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApICogKCB0ZXh0dXJlMkQoIGRpc3BsYWNlbWVudE1hcCwgdlV2ICkueCAqIGRpc3BsYWNlbWVudFNjYWxlICsgZGlzcGxhY2VtZW50QmlhcyApOwojZW5kaWZgLFBNPWAjaWZkZWYgVVNFX0VNSVNTSVZFTUFQCgl2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTsKCXRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjsKI2VuZGlmYCxETT1gI2lmZGVmIFVTRV9FTUlTU0lWRU1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgZW1pc3NpdmVNYXA7CiNlbmRpZmAsSU09ImdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApOyIsTk09YHZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7CglyZXR1cm4gdmFsdWU7Cn0KdmVjNCBMaW5lYXJUb3NSR0IoIGluIHZlYzQgdmFsdWUgKSB7CglyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7Cn1gLEZNPWAjaWZkZWYgVVNFX0VOVk1BUAoJI2lmZGVmIEVOVl9XT1JMRFBPUwoJCXZlYzMgY2FtZXJhVG9GcmFnOwoJCWlmICggaXNPcnRob2dyYXBoaWMgKSB7CgkJCWNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7CgkJfSBlbHNlIHsKCQkJY2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7CgkJfQoJCXZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTsKCQkjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTgoJCQl2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsICk7CgkJI2Vsc2UKCQkJdmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7CgkJI2VuZGlmCgkjZWxzZQoJCXZlYzMgcmVmbGVjdFZlYyA9IHZSZWZsZWN0OwoJI2VuZGlmCgkjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRQoJCXZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICkgKTsKCSNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKQoJCXZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIDAuMCApOwoJI2Vsc2UKCQl2ZWM0IGVudkNvbG9yID0gdmVjNCggMC4wICk7CgkjZW5kaWYKCSNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFkKCQlvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7CgkjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfTUlYICkKCQlvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTsKCSNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19BREQgKQoJCW91dGdvaW5nTGlnaHQgKz0gZW52Q29sb3IueHl6ICogc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eTsKCSNlbmRpZgojZW5kaWZgLHpNPWAjaWZkZWYgVVNFX0VOVk1BUAoJdW5pZm9ybSBmbG9hdCBlbnZNYXBJbnRlbnNpdHk7Cgl1bmlmb3JtIGZsb2F0IGZsaXBFbnZNYXA7CgkjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRQoJCXVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwOwoJI2Vsc2UKCQl1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7CgkjZW5kaWYKCQojZW5kaWZgLFVNPWAjaWZkZWYgVVNFX0VOVk1BUAoJdW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7CgkjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKQoJCSNkZWZpbmUgRU5WX1dPUkxEUE9TCgkjZW5kaWYKCSNpZmRlZiBFTlZfV09STERQT1MKCQl2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CgkJdW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87CgkjZWxzZQoJCXZhcnlpbmcgdmVjMyB2UmVmbGVjdDsKCSNlbmRpZgojZW5kaWZgLEJNPWAjaWZkZWYgVVNFX0VOVk1BUAoJI2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8ZGVmaW5lZCggUEhPTkcgKQoJCSNkZWZpbmUgRU5WX1dPUkxEUE9TCgkjZW5kaWYKCSNpZmRlZiBFTlZfV09STERQT1MKCQkKCQl2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CgkjZWxzZQoJCXZhcnlpbmcgdmVjMyB2UmVmbGVjdDsKCQl1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbzsKCSNlbmRpZgojZW5kaWZgLE9NPWAjaWZkZWYgVVNFX0VOVk1BUAoJI2lmZGVmIEVOVl9XT1JMRFBPUwoJCXZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7CgkjZWxzZQoJCXZlYzMgY2FtZXJhVG9WZXJ0ZXg7CgkJaWYgKCBpc09ydGhvZ3JhcGhpYyApIHsKCQkJY2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApOwoJCX0gZWxzZSB7CgkJCWNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB3b3JsZFBvc2l0aW9uLnh5eiAtIGNhbWVyYVBvc2l0aW9uICk7CgkJfQoJCXZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApOwoJCSNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OCgkJCXZSZWZsZWN0ID0gcmVmbGVjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsICk7CgkJI2Vsc2UKCQkJdlJlZmxlY3QgPSByZWZyYWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApOwoJCSNlbmRpZgoJI2VuZGlmCiNlbmRpZmAsa009YCNpZmRlZiBVU0VfRk9HCgl2Rm9nRGVwdGggPSAtIG12UG9zaXRpb24uejsKI2VuZGlmYCxITT1gI2lmZGVmIFVTRV9GT0cKCXZhcnlpbmcgZmxvYXQgdkZvZ0RlcHRoOwojZW5kaWZgLFZNPWAjaWZkZWYgVVNFX0ZPRwoJI2lmZGVmIEZPR19FWFAyCgkJZmxvYXQgZm9nRmFjdG9yID0gMS4wIC0gZXhwKCAtIGZvZ0RlbnNpdHkgKiBmb2dEZW5zaXR5ICogdkZvZ0RlcHRoICogdkZvZ0RlcHRoICk7CgkjZWxzZQoJCWZsb2F0IGZvZ0ZhY3RvciA9IHNtb290aHN0ZXAoIGZvZ05lYXIsIGZvZ0ZhciwgdkZvZ0RlcHRoICk7CgkjZW5kaWYKCWdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIGdsX0ZyYWdDb2xvci5yZ2IsIGZvZ0NvbG9yLCBmb2dGYWN0b3IgKTsKI2VuZGlmYCxHTT1gI2lmZGVmIFVTRV9GT0cKCXVuaWZvcm0gdmVjMyBmb2dDb2xvcjsKCXZhcnlpbmcgZmxvYXQgdkZvZ0RlcHRoOwoJI2lmZGVmIEZPR19FWFAyCgkJdW5pZm9ybSBmbG9hdCBmb2dEZW5zaXR5OwoJI2Vsc2UKCQl1bmlmb3JtIGZsb2F0IGZvZ05lYXI7CgkJdW5pZm9ybSBmbG9hdCBmb2dGYXI7CgkjZW5kaWYKI2VuZGlmYCxXTT1gI2lmZGVmIFVTRV9HUkFESUVOVE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgZ3JhZGllbnRNYXA7CiNlbmRpZgp2ZWMzIGdldEdyYWRpZW50SXJyYWRpYW5jZSggdmVjMyBub3JtYWwsIHZlYzMgbGlnaHREaXJlY3Rpb24gKSB7CglmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBsaWdodERpcmVjdGlvbiApOwoJdmVjMiBjb29yZCA9IHZlYzIoIGRvdE5MICogMC41ICsgMC41LCAwLjAgKTsKCSNpZmRlZiBVU0VfR1JBRElFTlRNQVAKCQlyZXR1cm4gdmVjMyggdGV4dHVyZTJEKCBncmFkaWVudE1hcCwgY29vcmQgKS5yICk7CgkjZWxzZQoJCXJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7CgkjZW5kaWYKfWAscU09YCNpZmRlZiBVU0VfTElHSFRNQVAKCXZlYzQgbGlnaHRNYXBUZXhlbCA9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTsKCXZlYzMgbGlnaHRNYXBJcnJhZGlhbmNlID0gbGlnaHRNYXBUZXhlbC5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTsKCSNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUwoJCWxpZ2h0TWFwSXJyYWRpYW5jZSAqPSBQSTsKCSNlbmRpZgoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGxpZ2h0TWFwSXJyYWRpYW5jZTsKI2VuZGlmYCxYTT1gI2lmZGVmIFVTRV9MSUdIVE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgbGlnaHRNYXA7Cgl1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5OwojZW5kaWZgLFlNPWB2ZWMzIGRpZmZ1c2UgPSB2ZWMzKCAxLjAgKTsKR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTsKZ2VvbWV0cnkucG9zaXRpb24gPSBtdlBvc2l0aW9uLnh5ejsKZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApOwpnZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTsKR2VvbWV0cmljQ29udGV4dCBiYWNrR2VvbWV0cnk7CmJhY2tHZW9tZXRyeS5wb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uOwpiYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDsKYmFja0dlb21ldHJ5LnZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyOwp2TGlnaHRGcm9udCA9IHZlYzMoIDAuMCApOwp2SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApOwojaWZkZWYgRE9VQkxFX1NJREVECgl2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7Cgl2SW5kaXJlY3RCYWNrID0gdmVjMyggMC4wICk7CiNlbmRpZgpJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0OwpmbG9hdCBkb3ROTDsKdmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CnZJbmRpcmVjdEZyb250ICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7CnZJbmRpcmVjdEZyb250ICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeS5ub3JtYWwgKTsKI2lmZGVmIERPVUJMRV9TSURFRAoJdkluZGlyZWN0QmFjayArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApOwoJdkluZGlyZWN0QmFjayArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgYmFja0dlb21ldHJ5Lm5vcm1hbCApOwojZW5kaWYKI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkgewoJCWdldFBvaW50TGlnaHRJbmZvKCBwb2ludExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTsKCQlkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTsKCQlkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBkaXJlY3RMaWdodC5jb2xvcjsKCQl2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTsKCQkjaWZkZWYgRE9VQkxFX1NJREVECgkJCXZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC0gZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTsKCQkjZW5kaWYKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCiNlbmRpZgojaWYgTlVNX1NQT1RfTElHSFRTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkgewoJCWdldFNwb3RMaWdodEluZm8oIHNwb3RMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7CgkJZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7CgkJZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gZGlyZWN0TGlnaHQuY29sb3I7CgkJdkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CgkJI2lmZGVmIERPVUJMRV9TSURFRAoJCQl2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CgkJI2VuZGlmCgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmIE5VTV9ESVJfTElHSFRTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7CgkJZ2V0RGlyZWN0aW9uYWxMaWdodEluZm8oIGRpcmVjdGlvbmFsTGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApOwoJCWRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApOwoJCWRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IGRpcmVjdExpZ2h0LmNvbG9yOwoJCXZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlOwoJCSNpZmRlZiBET1VCTEVfU0lERUQKCQkJdkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLSBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlOwoJCSNlbmRpZgoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmCiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7CgkJdkluZGlyZWN0RnJvbnQgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeS5ub3JtYWwgKTsKCQkjaWZkZWYgRE9VQkxFX1NJREVECgkJCXZJbmRpcmVjdEJhY2sgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBiYWNrR2VvbWV0cnkubm9ybWFsICk7CgkJI2VuZGlmCgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWZgLFpNPWB1bmlmb3JtIGJvb2wgcmVjZWl2ZVNoYWRvdzsKdW5pZm9ybSB2ZWMzIGFtYmllbnRMaWdodENvbG9yOwp1bmlmb3JtIHZlYzMgbGlnaHRQcm9iZVsgOSBdOwp2ZWMzIHNoR2V0SXJyYWRpYW5jZUF0KCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBzaENvZWZmaWNpZW50c1sgOSBdICkgewoJZmxvYXQgeCA9IG5vcm1hbC54LCB5ID0gbm9ybWFsLnksIHogPSBub3JtYWwuejsKCXZlYzMgcmVzdWx0ID0gc2hDb2VmZmljaWVudHNbIDAgXSAqIDAuODg2MjI3OwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAxIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHk7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDIgXSAqIDIuMCAqIDAuNTExNjY0ICogejsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMyBdICogMi4wICogMC41MTE2NjQgKiB4OwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA0IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB5OwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA1IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHkgKiB6OwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA2IF0gKiAoIDAuNzQzMTI1ICogeiAqIHogLSAwLjI0NzcwOCApOwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA3IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB6OwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA4IF0gKiAwLjQyOTA0MyAqICggeCAqIHggLSB5ICogeSApOwoJcmV0dXJuIHJlc3VsdDsKfQp2ZWMzIGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGxpZ2h0UHJvYmVbIDkgXSwgY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7Cgl2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7Cgl2ZWMzIGlycmFkaWFuY2UgPSBzaEdldElycmFkaWFuY2VBdCggd29ybGROb3JtYWwsIGxpZ2h0UHJvYmUgKTsKCXJldHVybiBpcnJhZGlhbmNlOwp9CnZlYzMgZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBhbWJpZW50TGlnaHRDb2xvciApIHsKCXZlYzMgaXJyYWRpYW5jZSA9IGFtYmllbnRMaWdodENvbG9yOwoJcmV0dXJuIGlycmFkaWFuY2U7Cn0KZmxvYXQgZ2V0RGlzdGFuY2VBdHRlbnVhdGlvbiggY29uc3QgaW4gZmxvYXQgbGlnaHREaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgY3V0b2ZmRGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGRlY2F5RXhwb25lbnQgKSB7CgkjaWYgZGVmaW5lZCAoIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMgKQoJCWZsb2F0IGRpc3RhbmNlRmFsbG9mZiA9IDEuMCAvIG1heCggcG93KCBsaWdodERpc3RhbmNlLCBkZWNheUV4cG9uZW50ICksIDAuMDEgKTsKCQlpZiAoIGN1dG9mZkRpc3RhbmNlID4gMC4wICkgewoJCQlkaXN0YW5jZUZhbGxvZmYgKj0gcG93Miggc2F0dXJhdGUoIDEuMCAtIHBvdzQoIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSApICkgKTsKCQl9CgkJcmV0dXJuIGRpc3RhbmNlRmFsbG9mZjsKCSNlbHNlCgkJaWYgKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCAmJiBkZWNheUV4cG9uZW50ID4gMC4wICkgewoJCQlyZXR1cm4gcG93KCBzYXR1cmF0ZSggLSBsaWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKyAxLjAgKSwgZGVjYXlFeHBvbmVudCApOwoJCX0KCQlyZXR1cm4gMS4wOwoJI2VuZGlmCn0KZmxvYXQgZ2V0U3BvdEF0dGVudWF0aW9uKCBjb25zdCBpbiBmbG9hdCBjb25lQ29zaW5lLCBjb25zdCBpbiBmbG9hdCBwZW51bWJyYUNvc2luZSwgY29uc3QgaW4gZmxvYXQgYW5nbGVDb3NpbmUgKSB7CglyZXR1cm4gc21vb3Roc3RlcCggY29uZUNvc2luZSwgcGVudW1icmFDb3NpbmUsIGFuZ2xlQ29zaW5lICk7Cn0KI2lmIE5VTV9ESVJfTElHSFRTID4gMAoJc3RydWN0IERpcmVjdGlvbmFsTGlnaHQgewoJCXZlYzMgZGlyZWN0aW9uOwoJCXZlYzMgY29sb3I7Cgl9OwoJdW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHRzWyBOVU1fRElSX0xJR0hUUyBdOwoJdm9pZCBnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggY29uc3QgaW4gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBsaWdodCApIHsKCQlsaWdodC5jb2xvciA9IGRpcmVjdGlvbmFsTGlnaHQuY29sb3I7CgkJbGlnaHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uYWxMaWdodC5kaXJlY3Rpb247CgkJbGlnaHQudmlzaWJsZSA9IHRydWU7Cgl9CiNlbmRpZgojaWYgTlVNX1BPSU5UX0xJR0hUUyA+IDAKCXN0cnVjdCBQb2ludExpZ2h0IHsKCQl2ZWMzIHBvc2l0aW9uOwoJCXZlYzMgY29sb3I7CgkJZmxvYXQgZGlzdGFuY2U7CgkJZmxvYXQgZGVjYXk7Cgl9OwoJdW5pZm9ybSBQb2ludExpZ2h0IHBvaW50TGlnaHRzWyBOVU1fUE9JTlRfTElHSFRTIF07Cgl2b2lkIGdldFBvaW50TGlnaHRJbmZvKCBjb25zdCBpbiBQb2ludExpZ2h0IHBvaW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGxpZ2h0ICkgewoJCXZlYzMgbFZlY3RvciA9IHBvaW50TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjsKCQlsaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTsKCQlmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7CgkJbGlnaHQuY29sb3IgPSBwb2ludExpZ2h0LmNvbG9yOwoJCWxpZ2h0LmNvbG9yICo9IGdldERpc3RhbmNlQXR0ZW51YXRpb24oIGxpZ2h0RGlzdGFuY2UsIHBvaW50TGlnaHQuZGlzdGFuY2UsIHBvaW50TGlnaHQuZGVjYXkgKTsKCQlsaWdodC52aXNpYmxlID0gKCBsaWdodC5jb2xvciAhPSB2ZWMzKCAwLjAgKSApOwoJfQojZW5kaWYKI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDAKCXN0cnVjdCBTcG90TGlnaHQgewoJCXZlYzMgcG9zaXRpb247CgkJdmVjMyBkaXJlY3Rpb247CgkJdmVjMyBjb2xvcjsKCQlmbG9hdCBkaXN0YW5jZTsKCQlmbG9hdCBkZWNheTsKCQlmbG9hdCBjb25lQ29zOwoJCWZsb2F0IHBlbnVtYnJhQ29zOwoJfTsKCXVuaWZvcm0gU3BvdExpZ2h0IHNwb3RMaWdodHNbIE5VTV9TUE9UX0xJR0hUUyBdOwoJdm9pZCBnZXRTcG90TGlnaHRJbmZvKCBjb25zdCBpbiBTcG90TGlnaHQgc3BvdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBsaWdodCApIHsKCQl2ZWMzIGxWZWN0b3IgPSBzcG90TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjsKCQlsaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTsKCQlmbG9hdCBhbmdsZUNvcyA9IGRvdCggbGlnaHQuZGlyZWN0aW9uLCBzcG90TGlnaHQuZGlyZWN0aW9uICk7CgkJZmxvYXQgc3BvdEF0dGVudWF0aW9uID0gZ2V0U3BvdEF0dGVudWF0aW9uKCBzcG90TGlnaHQuY29uZUNvcywgc3BvdExpZ2h0LnBlbnVtYnJhQ29zLCBhbmdsZUNvcyApOwoJCWlmICggc3BvdEF0dGVudWF0aW9uID4gMC4wICkgewoJCQlmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7CgkJCWxpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yICogc3BvdEF0dGVudWF0aW9uOwoJCQlsaWdodC5jb2xvciAqPSBnZXREaXN0YW5jZUF0dGVudWF0aW9uKCBsaWdodERpc3RhbmNlLCBzcG90TGlnaHQuZGlzdGFuY2UsIHNwb3RMaWdodC5kZWNheSApOwoJCQlsaWdodC52aXNpYmxlID0gKCBsaWdodC5jb2xvciAhPSB2ZWMzKCAwLjAgKSApOwoJCX0gZWxzZSB7CgkJCWxpZ2h0LmNvbG9yID0gdmVjMyggMC4wICk7CgkJCWxpZ2h0LnZpc2libGUgPSBmYWxzZTsKCQl9Cgl9CiNlbmRpZgojaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwCglzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7CgkJdmVjMyBjb2xvcjsKCQl2ZWMzIHBvc2l0aW9uOwoJCXZlYzMgaGFsZldpZHRoOwoJCXZlYzMgaGFsZkhlaWdodDsKCX07Cgl1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMTsJdW5pZm9ybSBzYW1wbGVyMkQgbHRjXzI7Cgl1bmlmb3JtIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodHNbIE5VTV9SRUNUX0FSRUFfTElHSFRTIF07CiNlbmRpZgojaWYgTlVNX0hFTUlfTElHSFRTID4gMAoJc3RydWN0IEhlbWlzcGhlcmVMaWdodCB7CgkJdmVjMyBkaXJlY3Rpb247CgkJdmVjMyBza3lDb2xvcjsKCQl2ZWMzIGdyb3VuZENvbG9yOwoJfTsKCXVuaWZvcm0gSGVtaXNwaGVyZUxpZ2h0IGhlbWlzcGhlcmVMaWdodHNbIE5VTV9IRU1JX0xJR0hUUyBdOwoJdmVjMyBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBIZW1pc3BoZXJlTGlnaHQgaGVtaUxpZ2h0LCBjb25zdCBpbiB2ZWMzIG5vcm1hbCApIHsKCQlmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBoZW1pTGlnaHQuZGlyZWN0aW9uICk7CgkJZmxvYXQgaGVtaURpZmZ1c2VXZWlnaHQgPSAwLjUgKiBkb3ROTCArIDAuNTsKCQl2ZWMzIGlycmFkaWFuY2UgPSBtaXgoIGhlbWlMaWdodC5ncm91bmRDb2xvciwgaGVtaUxpZ2h0LnNreUNvbG9yLCBoZW1pRGlmZnVzZVdlaWdodCApOwoJCXJldHVybiBpcnJhZGlhbmNlOwoJfQojZW5kaWZgLEpNPWAjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApCgkjaWZkZWYgRU5WTUFQX01PREVfUkVGUkFDVElPTgoJCXVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvOwoJI2VuZGlmCgl2ZWMzIGdldElCTElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkgewoJCSNpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWICkKCQkJdmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApOwoJCQl2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCB3b3JsZE5vcm1hbCwgMS4wICk7CgkJCXJldHVybiBQSSAqIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTsKCQkjZWxzZQoJCQlyZXR1cm4gdmVjMyggMC4wICk7CgkJI2VuZGlmCgl9Cgl2ZWMzIGdldElCTFJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7CgkJI2lmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKQoJCQl2ZWMzIHJlZmxlY3RWZWM7CgkJCSNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OCgkJCQlyZWZsZWN0VmVjID0gcmVmbGVjdCggLSB2aWV3RGlyLCBub3JtYWwgKTsKCQkJCXJlZmxlY3RWZWMgPSBub3JtYWxpemUoIG1peCggcmVmbGVjdFZlYywgbm9ybWFsLCByb3VnaG5lc3MgKiByb3VnaG5lc3MpICk7CgkJCSNlbHNlCgkJCQlyZWZsZWN0VmVjID0gcmVmcmFjdCggLSB2aWV3RGlyLCBub3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApOwoJCQkjZW5kaWYKCQkJcmVmbGVjdFZlYyA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHJlZmxlY3RWZWMsIHZpZXdNYXRyaXggKTsKCQkJdmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcmVmbGVjdFZlYywgcm91Z2huZXNzICk7CgkJCXJldHVybiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7CgkJI2Vsc2UKCQkJcmV0dXJuIHZlYzMoIDAuMCApOwoJCSNlbmRpZgoJfQojZW5kaWZgLCRNPWBUb29uTWF0ZXJpYWwgbWF0ZXJpYWw7Cm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7YCxLTT1gdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CnN0cnVjdCBUb29uTWF0ZXJpYWwgewoJdmVjMyBkaWZmdXNlQ29sb3I7Cn07CnZvaWQgUkVfRGlyZWN0X1Rvb24oIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7Cgl2ZWMzIGlycmFkaWFuY2UgPSBnZXRHcmFkaWVudElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKiBkaXJlY3RMaWdodC5jb2xvcjsKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7Cn0Kdm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfVG9vbiggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkgewoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApOwp9CiNkZWZpbmUgUkVfRGlyZWN0CQkJCVJFX0RpcmVjdF9Ub29uCiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlCQlSRV9JbmRpcmVjdERpZmZ1c2VfVG9vbgojZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsICkJKDApYCxRTT1gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsOwptYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiOwptYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gc3BlY3VsYXI7Cm1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzID0gc2hpbmluZXNzOwptYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoID0gc3BlY3VsYXJTdHJlbmd0aDtgLGpNPWB2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKc3RydWN0IEJsaW5uUGhvbmdNYXRlcmlhbCB7Cgl2ZWMzIGRpZmZ1c2VDb2xvcjsKCXZlYzMgc3BlY3VsYXJDb2xvcjsKCWZsb2F0IHNwZWN1bGFyU2hpbmluZXNzOwoJZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDsKfTsKdm9pZCBSRV9EaXJlY3RfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCWZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApOwoJdmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjsKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7CglyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9CbGlublBob25nKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgKSAqIG1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGg7Cn0Kdm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZyggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkgewoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApOwp9CiNkZWZpbmUgUkVfRGlyZWN0CQkJCVJFX0RpcmVjdF9CbGlublBob25nCiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlCQlSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZwojZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsICkJKDApYCx0Yj1gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbDsKbWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYiAqICggMS4wIC0gbWV0YWxuZXNzRmFjdG9yICk7CnZlYzMgZHh5ID0gbWF4KCBhYnMoIGRGZHgoIGdlb21ldHJ5Tm9ybWFsICkgKSwgYWJzKCBkRmR5KCBnZW9tZXRyeU5vcm1hbCApICkgKTsKZmxvYXQgZ2VvbWV0cnlSb3VnaG5lc3MgPSBtYXgoIG1heCggZHh5LngsIGR4eS55ICksIGR4eS56ICk7Cm1hdGVyaWFsLnJvdWdobmVzcyA9IG1heCggcm91Z2huZXNzRmFjdG9yLCAwLjA1MjUgKTttYXRlcmlhbC5yb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7Cm1hdGVyaWFsLnJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwucm91Z2huZXNzLCAxLjAgKTsKI2lmZGVmIElPUgoJI2lmZGVmIFNQRUNVTEFSCgkJZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSBzcGVjdWxhckludGVuc2l0eTsKCQl2ZWMzIHNwZWN1bGFyQ29sb3JGYWN0b3IgPSBzcGVjdWxhckNvbG9yOwoJCSNpZmRlZiBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAKCQkJc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgKj0gdGV4dHVyZTJEKCBzcGVjdWxhckludGVuc2l0eU1hcCwgdlV2ICkuYTsKCQkjZW5kaWYKCQkjaWZkZWYgVVNFX1NQRUNVTEFSQ09MT1JNQVAKCQkJc3BlY3VsYXJDb2xvckZhY3RvciAqPSB0ZXh0dXJlMkQoIHNwZWN1bGFyQ29sb3JNYXAsIHZVdiApLnJnYjsKCQkjZW5kaWYKCQltYXRlcmlhbC5zcGVjdWxhckY5MCA9IG1peCggc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IsIDEuMCwgbWV0YWxuZXNzRmFjdG9yICk7CgkjZWxzZQoJCWZsb2F0IHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yID0gMS4wOwoJCXZlYzMgc3BlY3VsYXJDb2xvckZhY3RvciA9IHZlYzMoIDEuMCApOwoJCW1hdGVyaWFsLnNwZWN1bGFyRjkwID0gMS4wOwoJI2VuZGlmCgltYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCBtaW4oIHBvdzIoICggaW9yIC0gMS4wICkgLyAoIGlvciArIDEuMCApICkgKiBzcGVjdWxhckNvbG9yRmFjdG9yLCB2ZWMzKCAxLjAgKSApICogc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IsIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApOwojZWxzZQoJbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggdmVjMyggMC4wNCApLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTsKCW1hdGVyaWFsLnNwZWN1bGFyRjkwID0gMS4wOwojZW5kaWYKI2lmZGVmIFVTRV9DTEVBUkNPQVQKCW1hdGVyaWFsLmNsZWFyY29hdCA9IGNsZWFyY29hdDsKCW1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IGNsZWFyY29hdFJvdWdobmVzczsKCW1hdGVyaWFsLmNsZWFyY29hdEYwID0gdmVjMyggMC4wNCApOwoJbWF0ZXJpYWwuY2xlYXJjb2F0RjkwID0gMS4wOwoJI2lmZGVmIFVTRV9DTEVBUkNPQVRNQVAKCQltYXRlcmlhbC5jbGVhcmNvYXQgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRNYXAsIHZVdiApLng7CgkjZW5kaWYKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUAoJCW1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdFJvdWdobmVzc01hcCwgdlV2ICkueTsKCSNlbmRpZgoJbWF0ZXJpYWwuY2xlYXJjb2F0ID0gc2F0dXJhdGUoIG1hdGVyaWFsLmNsZWFyY29hdCApOwltYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtYXgoIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMC4wNTI1ICk7CgltYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7CgltYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMS4wICk7CiNlbmRpZgojaWZkZWYgVVNFX1NIRUVOCgltYXRlcmlhbC5zaGVlbkNvbG9yID0gc2hlZW5Db2xvcjsKCSNpZmRlZiBVU0VfU0hFRU5DT0xPUk1BUAoJCW1hdGVyaWFsLnNoZWVuQ29sb3IgKj0gdGV4dHVyZTJEKCBzaGVlbkNvbG9yTWFwLCB2VXYgKS5yZ2I7CgkjZW5kaWYKCW1hdGVyaWFsLnNoZWVuUm91Z2huZXNzID0gY2xhbXAoIHNoZWVuUm91Z2huZXNzLCAwLjA3LCAxLjAgKTsKCSNpZmRlZiBVU0VfU0hFRU5ST1VHSE5FU1NNQVAKCQltYXRlcmlhbC5zaGVlblJvdWdobmVzcyAqPSB0ZXh0dXJlMkQoIHNoZWVuUm91Z2huZXNzTWFwLCB2VXYgKS5hOwoJI2VuZGlmCiNlbmRpZmAsZWI9YHN0cnVjdCBQaHlzaWNhbE1hdGVyaWFsIHsKCXZlYzMgZGlmZnVzZUNvbG9yOwoJZmxvYXQgcm91Z2huZXNzOwoJdmVjMyBzcGVjdWxhckNvbG9yOwoJZmxvYXQgc3BlY3VsYXJGOTA7CgkjaWZkZWYgVVNFX0NMRUFSQ09BVAoJCWZsb2F0IGNsZWFyY29hdDsKCQlmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7CgkJdmVjMyBjbGVhcmNvYXRGMDsKCQlmbG9hdCBjbGVhcmNvYXRGOTA7CgkjZW5kaWYKCSNpZmRlZiBVU0VfU0hFRU4KCQl2ZWMzIHNoZWVuQ29sb3I7CgkJZmxvYXQgc2hlZW5Sb3VnaG5lc3M7CgkjZW5kaWYKfTsKdmVjMyBjbGVhcmNvYXRTcGVjdWxhciA9IHZlYzMoIDAuMCApOwp2ZWMzIHNoZWVuU3BlY3VsYXIgPSB2ZWMzKCAwLjAgKTsKZmxvYXQgSUJMU2hlZW5CUkRGKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MpIHsKCWZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTsKCWZsb2F0IHIyID0gcm91Z2huZXNzICogcm91Z2huZXNzOwoJZmxvYXQgYSA9IHJvdWdobmVzcyA8IDAuMjUgPyAtMzM5LjIgKiByMiArIDE2MS40ICogcm91Z2huZXNzIC0gMjUuOSA6IC04LjQ4ICogcjIgKyAxNC4zICogcm91Z2huZXNzIC0gOS45NTsKCWZsb2F0IGIgPSByb3VnaG5lc3MgPCAwLjI1ID8gNDQuMCAqIHIyIC0gMjMuNyAqIHJvdWdobmVzcyArIDMuMjYgOiAxLjk3ICogcjIgLSAzLjI3ICogcm91Z2huZXNzICsgMC43MjsKCWZsb2F0IERHID0gZXhwKCBhICogZG90TlYgKyBiICkgKyAoIHJvdWdobmVzcyA8IDAuMjUgPyAwLjAgOiAwLjEgKiAoIHJvdWdobmVzcyAtIDAuMjUgKSApOwoJcmV0dXJuIHNhdHVyYXRlKCBERyAqIFJFQ0lQUk9DQUxfUEkgKTsKfQp2ZWMyIERGR0FwcHJveCggY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkgewoJZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApOwoJY29uc3QgdmVjNCBjMCA9IHZlYzQoIC0gMSwgLSAwLjAyNzUsIC0gMC41NzIsIDAuMDIyICk7Cgljb25zdCB2ZWM0IGMxID0gdmVjNCggMSwgMC4wNDI1LCAxLjA0LCAtIDAuMDQgKTsKCXZlYzQgciA9IHJvdWdobmVzcyAqIGMwICsgYzE7CglmbG9hdCBhMDA0ID0gbWluKCByLnggKiByLngsIGV4cDIoIC0gOS4yOCAqIGRvdE5WICkgKSAqIHIueCArIHIueTsKCXZlYzIgZmFiID0gdmVjMiggLSAxLjA0LCAxLjA0ICkgKiBhMDA0ICsgci56dzsKCXJldHVybiBmYWI7Cn0KdmVjMyBFbnZpcm9ubWVudEJSREYoIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc3BlY3VsYXJGOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHsKCXZlYzIgZmFiID0gREZHQXBwcm94KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApOwoJcmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBmYWIueCArIHNwZWN1bGFyRjkwICogZmFiLnk7Cn0Kdm9pZCBjb21wdXRlTXVsdGlzY2F0dGVyaW5nKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNwZWN1bGFyRjkwLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGlub3V0IHZlYzMgc2luZ2xlU2NhdHRlciwgaW5vdXQgdmVjMyBtdWx0aVNjYXR0ZXIgKSB7Cgl2ZWMyIGZhYiA9IERGR0FwcHJveCggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTsKCXZlYzMgRnNzRXNzID0gc3BlY3VsYXJDb2xvciAqIGZhYi54ICsgc3BlY3VsYXJGOTAgKiBmYWIueTsKCWZsb2F0IEVzcyA9IGZhYi54ICsgZmFiLnk7CglmbG9hdCBFbXMgPSAxLjAgLSBFc3M7Cgl2ZWMzIEZhdmcgPSBzcGVjdWxhckNvbG9yICsgKCAxLjAgLSBzcGVjdWxhckNvbG9yICkgKiAwLjA0NzYxOTsJdmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7CglzaW5nbGVTY2F0dGVyICs9IEZzc0VzczsKCW11bHRpU2NhdHRlciArPSBGbXMgKiBFbXM7Cn0KI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMAoJdm9pZCBSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWwoIGNvbnN0IGluIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7CgkJdmVjMyBub3JtYWwgPSBnZW9tZXRyeS5ub3JtYWw7CgkJdmVjMyB2aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjsKCQl2ZWMzIHBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247CgkJdmVjMyBsaWdodFBvcyA9IHJlY3RBcmVhTGlnaHQucG9zaXRpb247CgkJdmVjMyBoYWxmV2lkdGggPSByZWN0QXJlYUxpZ2h0LmhhbGZXaWR0aDsKCQl2ZWMzIGhhbGZIZWlnaHQgPSByZWN0QXJlYUxpZ2h0LmhhbGZIZWlnaHQ7CgkJdmVjMyBsaWdodENvbG9yID0gcmVjdEFyZWFMaWdodC5jb2xvcjsKCQlmbG9hdCByb3VnaG5lc3MgPSBtYXRlcmlhbC5yb3VnaG5lc3M7CgkJdmVjMyByZWN0Q29vcmRzWyA0IF07CgkJcmVjdENvb3Jkc1sgMCBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0OwkJcmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0OwoJCXJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDsKCQlyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7CgkJdmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTsKCQl2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTsKCQl2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTsKCQltYXQzIG1JbnYgPSBtYXQzKAoJCQl2ZWMzKCB0MS54LCAwLCB0MS55ICksCgkJCXZlYzMoICAgIDAsIDEsICAgIDAgKSwKCQkJdmVjMyggdDEueiwgMCwgdDEudyApCgkJKTsKCQl2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTsKCQlyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApOwoJCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTsKCX0KI2VuZGlmCnZvaWQgUkVfRGlyZWN0X1BoeXNpY2FsKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCWZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApOwoJdmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjsKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUCgkJZmxvYXQgZG90TkxjYyA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTsKCQl2ZWMzIGNjSXJyYWRpYW5jZSA9IGRvdE5MY2MgKiBkaXJlY3RMaWdodC5jb2xvcjsKCQljbGVhcmNvYXRTcGVjdWxhciArPSBjY0lycmFkaWFuY2UgKiBCUkRGX0dHWCggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLmNsZWFyY29hdEYwLCBtYXRlcmlhbC5jbGVhcmNvYXRGOTAsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1NIRUVOCgkJc2hlZW5TcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9TaGVlbiggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNoZWVuQ29sb3IsIG1hdGVyaWFsLnNoZWVuUm91Z2huZXNzICk7CgkjZW5kaWYKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX0dHWCggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyRjkwLCBtYXRlcmlhbC5yb3VnaG5lc3MgKTsKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7Cn0Kdm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7Cn0Kdm9pZCBSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0KSB7CgkjaWZkZWYgVVNFX0NMRUFSQ09BVAoJCWNsZWFyY29hdFNwZWN1bGFyICs9IGNsZWFyY29hdFJhZGlhbmNlICogRW52aXJvbm1lbnRCUkRGKCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIsIG1hdGVyaWFsLmNsZWFyY29hdEYwLCBtYXRlcmlhbC5jbGVhcmNvYXRGOTAsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1NIRUVOCgkJc2hlZW5TcGVjdWxhciArPSBpcnJhZGlhbmNlICogbWF0ZXJpYWwuc2hlZW5Db2xvciAqIElCTFNoZWVuQlJERiggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyLCBtYXRlcmlhbC5zaGVlblJvdWdobmVzcyApOwoJI2VuZGlmCgl2ZWMzIHNpbmdsZVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTsKCXZlYzMgbXVsdGlTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7Cgl2ZWMzIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZSA9IGlycmFkaWFuY2UgKiBSRUNJUFJPQ0FMX1BJOwoJY29tcHV0ZU11bHRpc2NhdHRlcmluZyggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCwgbWF0ZXJpYWwucm91Z2huZXNzLCBzaW5nbGVTY2F0dGVyaW5nLCBtdWx0aVNjYXR0ZXJpbmcgKTsKCXZlYzMgZGlmZnVzZSA9IG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqICggMS4wIC0gKCBzaW5nbGVTY2F0dGVyaW5nICsgbXVsdGlTY2F0dGVyaW5nICkgKTsKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gcmFkaWFuY2UgKiBzaW5nbGVTY2F0dGVyaW5nOwoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBtdWx0aVNjYXR0ZXJpbmcgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gZGlmZnVzZSAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTsKfQojZGVmaW5lIFJFX0RpcmVjdAkJCQlSRV9EaXJlY3RfUGh5c2ljYWwKI2RlZmluZSBSRV9EaXJlY3RfUmVjdEFyZWEJCVJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbAojZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZQkJUkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsCiNkZWZpbmUgUkVfSW5kaXJlY3RTcGVjdWxhcgkJUkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbApmbG9hdCBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCBhbWJpZW50T2NjbHVzaW9uLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7CglyZXR1cm4gc2F0dXJhdGUoIHBvdyggZG90TlYgKyBhbWJpZW50T2NjbHVzaW9uLCBleHAyKCAtIDE2LjAgKiByb3VnaG5lc3MgLSAxLjAgKSApIC0gMS4wICsgYW1iaWVudE9jY2x1c2lvbiApOwp9YCxuYj1gCkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7Cmdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uOwpnZW9tZXRyeS5ub3JtYWwgPSBub3JtYWw7Cmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTsKI2lmZGVmIFVTRV9DTEVBUkNPQVQKCWdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDsKI2VuZGlmCkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7CiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0ICkKCVBvaW50TGlnaHQgcG9pbnRMaWdodDsKCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwCglQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3c7CgkjZW5kaWYKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7CgkJcG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07CgkJZ2V0UG9pbnRMaWdodEluZm8oIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApOwoJCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKQoJCXBvaW50TGlnaHRTaGFkb3cgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdOwoJCWRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYUZhciApIDogMS4wOwoJCSNlbmRpZgoJCVJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCiNlbmRpZgojaWYgKCBOVU1fU1BPVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0ICkKCVNwb3RMaWdodCBzcG90TGlnaHQ7CgkjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwCglTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93OwoJI2VuZGlmCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7CgkJc3BvdExpZ2h0ID0gc3BvdExpZ2h0c1sgaSBdOwoJCWdldFNwb3RMaWdodEluZm8oIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7CgkJI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTICkKCQlzcG90TGlnaHRTaGFkb3cgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07CgkJZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDsKCQkjZW5kaWYKCQlSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmICggTlVNX0RJUl9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0ICkKCURpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDsKCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMAoJRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93OwoJI2VuZGlmCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHsKCQlkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodHNbIGkgXTsKCQlnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7CgkJI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fRElSX0xJR0hUX1NIQURPV1MgKQoJCWRpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdOwoJCWRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDsKCQkjZW5kaWYKCQlSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhICkKCVJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodDsKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkgewoJCXJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdOwoJCVJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmCiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKQoJdmVjMyBpYmxJcnJhZGlhbmNlID0gdmVjMyggMC4wICk7Cgl2ZWMzIGlycmFkaWFuY2UgPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApOwoJaXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkubm9ybWFsICk7CgkjaWYgKCBOVU1fSEVNSV9MSUdIVFMgPiAwICkKCQkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0CgkJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkgewoJCQlpcnJhZGlhbmNlICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkubm9ybWFsICk7CgkJfQoJCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKI2VuZGlmCiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyICkKCXZlYzMgcmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTsKCXZlYzMgY2xlYXJjb2F0UmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTsKI2VuZGlmYCxpYj1gI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApCgkjaWZkZWYgVVNFX0xJR0hUTUFQCgkJdmVjNCBsaWdodE1hcFRleGVsID0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApOwoJCXZlYzMgbGlnaHRNYXBJcnJhZGlhbmNlID0gbGlnaHRNYXBUZXhlbC5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTsKCQkjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMKCQkJbGlnaHRNYXBJcnJhZGlhbmNlICo9IFBJOwoJCSNlbmRpZgoJCWlycmFkaWFuY2UgKz0gbGlnaHRNYXBJcnJhZGlhbmNlOwoJI2VuZGlmCgkjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEICkgJiYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApCgkJaWJsSXJyYWRpYW5jZSArPSBnZXRJQkxJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwgKTsKCSNlbmRpZgojZW5kaWYKI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyICkKCXJhZGlhbmNlICs9IGdldElCTFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnJvdWdobmVzcyApOwoJI2lmZGVmIFVTRV9DTEVBUkNPQVQKCQljbGVhcmNvYXRSYWRpYW5jZSArPSBnZXRJQkxSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTsKCSNlbmRpZgojZW5kaWZgLHJiPWAjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlICkKCVJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApOwojZW5kaWYKI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKQoJUkVfSW5kaXJlY3RTcGVjdWxhciggcmFkaWFuY2UsIGlibElycmFkaWFuY2UsIGNsZWFyY29hdFJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7CiNlbmRpZmAsc2I9YCNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUICkKCWdsX0ZyYWdEZXB0aEVYVCA9IHZJc1BlcnNwZWN0aXZlID09IDAuMCA/IGdsX0ZyYWdDb29yZC56IDogbG9nMiggdkZyYWdEZXB0aCApICogbG9nRGVwdGhCdWZGQyAqIDAuNTsKI2VuZGlmYCxvYj1gI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKQoJdW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDOwoJdmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoOwoJdmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTsKI2VuZGlmYCxhYj1gI2lmZGVmIFVTRV9MT0dERVBUSEJVRgoJI2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFQKCQl2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7CgkJdmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTsKCSNlbHNlCgkJdW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDOwoJI2VuZGlmCiNlbmRpZmAsbGI9YCNpZmRlZiBVU0VfTE9HREVQVEhCVUYKCSNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUCgkJdkZyYWdEZXB0aCA9IDEuMCArIGdsX1Bvc2l0aW9uLnc7CgkJdklzUGVyc3BlY3RpdmUgPSBmbG9hdCggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICk7CgkjZWxzZQoJCWlmICggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICkgewoJCQlnbF9Qb3NpdGlvbi56ID0gbG9nMiggbWF4KCBFUFNJTE9OLCBnbF9Qb3NpdGlvbi53ICsgMS4wICkgKSAqIGxvZ0RlcHRoQnVmRkMgLSAxLjA7CgkJCWdsX1Bvc2l0aW9uLnogKj0gZ2xfUG9zaXRpb24udzsKCQl9CgkjZW5kaWYKI2VuZGlmYCxjYj1gI2lmZGVmIFVTRV9NQVAKCXZlYzQgc2FtcGxlZERpZmZ1c2VDb2xvciA9IHRleHR1cmUyRCggbWFwLCB2VXYgKTsKCSNpZmRlZiBERUNPREVfVklERU9fVEVYVFVSRQoJCXNhbXBsZWREaWZmdXNlQ29sb3IgPSB2ZWM0KCBtaXgoIHBvdyggc2FtcGxlZERpZmZ1c2VDb2xvci5yZ2IgKiAwLjk0Nzg2NzI5ODYgKyB2ZWMzKCAwLjA1MjEzMjcwMTQgKSwgdmVjMyggMi40ICkgKSwgc2FtcGxlZERpZmZ1c2VDb2xvci5yZ2IgKiAwLjA3NzM5OTM4MDgsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHNhbXBsZWREaWZmdXNlQ29sb3IudyApOwoJI2VuZGlmCglkaWZmdXNlQ29sb3IgKj0gc2FtcGxlZERpZmZ1c2VDb2xvcjsKI2VuZGlmYCx1Yj1gI2lmZGVmIFVTRV9NQVAKCXVuaWZvcm0gc2FtcGxlcjJEIG1hcDsKI2VuZGlmYCxoYj1gI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKQoJdmVjMiB1diA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCBnbF9Qb2ludENvb3JkLngsIDEuMCAtIGdsX1BvaW50Q29vcmQueSwgMSApICkueHk7CiNlbmRpZgojaWZkZWYgVVNFX01BUAoJZGlmZnVzZUNvbG9yICo9IHRleHR1cmUyRCggbWFwLCB1diApOwojZW5kaWYKI2lmZGVmIFVTRV9BTFBIQU1BUAoJZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdXYgKS5nOwojZW5kaWZgLGZiPWAjaWYgZGVmaW5lZCggVVNFX01BUCApIHx8IGRlZmluZWQoIFVTRV9BTFBIQU1BUCApCgl1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07CiNlbmRpZgojaWZkZWYgVVNFX01BUAoJdW5pZm9ybSBzYW1wbGVyMkQgbWFwOwojZW5kaWYKI2lmZGVmIFVTRV9BTFBIQU1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgYWxwaGFNYXA7CiNlbmRpZmAsZGI9YGZsb2F0IG1ldGFsbmVzc0ZhY3RvciA9IG1ldGFsbmVzczsKI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVAKCXZlYzQgdGV4ZWxNZXRhbG5lc3MgPSB0ZXh0dXJlMkQoIG1ldGFsbmVzc01hcCwgdlV2ICk7CgltZXRhbG5lc3NGYWN0b3IgKj0gdGV4ZWxNZXRhbG5lc3MuYjsKI2VuZGlmYCxwYj1gI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIG1ldGFsbmVzc01hcDsKI2VuZGlmYCxtYj1gI2lmZGVmIFVTRV9NT1JQSE5PUk1BTFMKCW9iamVjdE5vcm1hbCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7CgkjaWZkZWYgTU9SUEhUQVJHRVRTX1RFWFRVUkUKCQlmb3IgKCBpbnQgaSA9IDA7IGkgPCBNT1JQSFRBUkdFVFNfQ09VTlQ7IGkgKysgKSB7CgkJCWlmICggbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF0gIT0gMC4wICkgb2JqZWN0Tm9ybWFsICs9IGdldE1vcnBoKCBnbF9WZXJ0ZXhJRCwgaSwgMSwgMiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF07CgkJfQoJI2Vsc2UKCQlvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07CgkJb2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdOwoJCW9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTsKCQlvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07CgkjZW5kaWYKI2VuZGlmYCxnYj1gI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFMKCXVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlOwoJI2lmZGVmIE1PUlBIVEFSR0VUU19URVhUVVJFCgkJdW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIE1PUlBIVEFSR0VUU19DT1VOVCBdOwoJCXVuaWZvcm0gc2FtcGxlcjJEQXJyYXkgbW9ycGhUYXJnZXRzVGV4dHVyZTsKCQl1bmlmb3JtIHZlYzIgbW9ycGhUYXJnZXRzVGV4dHVyZVNpemU7CgkJdmVjMyBnZXRNb3JwaCggY29uc3QgaW4gaW50IHZlcnRleEluZGV4LCBjb25zdCBpbiBpbnQgbW9ycGhUYXJnZXRJbmRleCwgY29uc3QgaW4gaW50IG9mZnNldCwgY29uc3QgaW4gaW50IHN0cmlkZSApIHsKCQkJZmxvYXQgdGV4ZWxJbmRleCA9IGZsb2F0KCB2ZXJ0ZXhJbmRleCAqIHN0cmlkZSArIG9mZnNldCApOwoJCQlmbG9hdCB5ID0gZmxvb3IoIHRleGVsSW5kZXggLyBtb3JwaFRhcmdldHNUZXh0dXJlU2l6ZS54ICk7CgkJCWZsb2F0IHggPSB0ZXhlbEluZGV4IC0geSAqIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLng7CgkJCXZlYzMgbW9ycGhVViA9IHZlYzMoICggeCArIDAuNSApIC8gbW9ycGhUYXJnZXRzVGV4dHVyZVNpemUueCwgeSAvIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLnksIG1vcnBoVGFyZ2V0SW5kZXggKTsKCQkJcmV0dXJuIHRleHR1cmUoIG1vcnBoVGFyZ2V0c1RleHR1cmUsIG1vcnBoVVYgKS54eXo7CgkJfQoJI2Vsc2UKCQkjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFMKCQkJdW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDggXTsKCQkjZWxzZQoJCQl1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdOwoJCSNlbmRpZgoJI2VuZGlmCiNlbmRpZmAseGI9YCNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTCgl0cmFuc2Zvcm1lZCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7CgkjaWZkZWYgTU9SUEhUQVJHRVRTX1RFWFRVUkUKCQlmb3IgKCBpbnQgaSA9IDA7IGkgPCBNT1JQSFRBUkdFVFNfQ09VTlQ7IGkgKysgKSB7CgkJCSNpZm5kZWYgVVNFX01PUlBITk9STUFMUwoJCQkJaWYgKCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXSAhPSAwLjAgKSB0cmFuc2Zvcm1lZCArPSBnZXRNb3JwaCggZ2xfVmVydGV4SUQsIGksIDAsIDEgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdOwoJCQkjZWxzZQoJCQkJaWYgKCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXSAhPSAwLjAgKSB0cmFuc2Zvcm1lZCArPSBnZXRNb3JwaCggZ2xfVmVydGV4SUQsIGksIDAsIDIgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdOwoJCQkjZW5kaWYKCQl9CgkjZWxzZQoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdOwoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdOwoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdOwoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdOwoJCSNpZm5kZWYgVVNFX01PUlBITk9STUFMUwoJCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDQgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTsKCQkJdHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ1ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA1IF07CgkJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNiBdOwoJCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDcgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTsKCQkjZW5kaWYKCSNlbmRpZgojZW5kaWZgLHliPWBmbG9hdCBmYWNlRGlyZWN0aW9uID0gZ2xfRnJvbnRGYWNpbmcgPyAxLjAgOiAtIDEuMDsKI2lmZGVmIEZMQVRfU0hBREVECgl2ZWMzIGZkeCA9IHZlYzMoIGRGZHgoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeCggdlZpZXdQb3NpdGlvbi56ICkgKTsKCXZlYzMgZmR5ID0gdmVjMyggZEZkeSggdlZpZXdQb3NpdGlvbi54ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnogKSApOwoJdmVjMyBub3JtYWwgPSBub3JtYWxpemUoIGNyb3NzKCBmZHgsIGZkeSApICk7CiNlbHNlCgl2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggdk5vcm1hbCApOwoJI2lmZGVmIERPVUJMRV9TSURFRAoJCW5vcm1hbCA9IG5vcm1hbCAqIGZhY2VEaXJlY3Rpb247CgkjZW5kaWYKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCXZlYzMgdGFuZ2VudCA9IG5vcm1hbGl6ZSggdlRhbmdlbnQgKTsKCQl2ZWMzIGJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggdkJpdGFuZ2VudCApOwoJCSNpZmRlZiBET1VCTEVfU0lERUQKCQkJdGFuZ2VudCA9IHRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uOwoJCQliaXRhbmdlbnQgPSBiaXRhbmdlbnQgKiBmYWNlRGlyZWN0aW9uOwoJCSNlbmRpZgoJCSNpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKQoJCQltYXQzIHZUQk4gPSBtYXQzKCB0YW5nZW50LCBiaXRhbmdlbnQsIG5vcm1hbCApOwoJCSNlbmRpZgoJI2VuZGlmCiNlbmRpZgp2ZWMzIGdlb21ldHJ5Tm9ybWFsID0gbm9ybWFsO2AsdmI9YCNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAKCW5vcm1hbCA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7CgkjaWZkZWYgRkxJUF9TSURFRAoJCW5vcm1hbCA9IC0gbm9ybWFsOwoJI2VuZGlmCgkjaWZkZWYgRE9VQkxFX1NJREVECgkJbm9ybWFsID0gbm9ybWFsICogZmFjZURpcmVjdGlvbjsKCSNlbmRpZgoJbm9ybWFsID0gbm9ybWFsaXplKCBub3JtYWxNYXRyaXggKiBub3JtYWwgKTsKI2VsaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApCgl2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wOwoJbWFwTi54eSAqPSBub3JtYWxTY2FsZTsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCW5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTsKCSNlbHNlCgkJbm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBtYXBOLCBmYWNlRGlyZWN0aW9uICk7CgkjZW5kaWYKI2VsaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKQoJbm9ybWFsID0gcGVydHVyYk5vcm1hbEFyYiggLSB2Vmlld1Bvc2l0aW9uLCBub3JtYWwsIGRIZHh5X2Z3ZCgpLCBmYWNlRGlyZWN0aW9uICk7CiNlbmRpZmAsX2I9YCNpZm5kZWYgRkxBVF9TSEFERUQKCXZhcnlpbmcgdmVjMyB2Tm9ybWFsOwoJI2lmZGVmIFVTRV9UQU5HRU5UCgkJdmFyeWluZyB2ZWMzIHZUYW5nZW50OwoJCXZhcnlpbmcgdmVjMyB2Qml0YW5nZW50OwoJI2VuZGlmCiNlbmRpZmAsd2I9YCNpZm5kZWYgRkxBVF9TSEFERUQKCXZhcnlpbmcgdmVjMyB2Tm9ybWFsOwoJI2lmZGVmIFVTRV9UQU5HRU5UCgkJdmFyeWluZyB2ZWMzIHZUYW5nZW50OwoJCXZhcnlpbmcgdmVjMyB2Qml0YW5nZW50OwoJI2VuZGlmCiNlbmRpZmAsTWI9YCNpZm5kZWYgRkxBVF9TSEFERUQKCXZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7CgkjaWZkZWYgVVNFX1RBTkdFTlQKCQl2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7CgkJdkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTsKCSNlbmRpZgojZW5kaWZgLGJiPWAjaWZkZWYgVVNFX05PUk1BTE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgbm9ybWFsTWFwOwoJdW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlOwojZW5kaWYKI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUAoJdW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDsKI2VuZGlmCiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkICggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKSApCgl2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMzIG1hcE4sIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7CgkJdmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTsKCQl2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApOwoJCXZlYzIgc3QwID0gZEZkeCggdlV2LnN0ICk7CgkJdmVjMiBzdDEgPSBkRmR5KCB2VXYuc3QgKTsKCQl2ZWMzIE4gPSBzdXJmX25vcm07CgkJdmVjMyBxMXBlcnAgPSBjcm9zcyggcTEsIE4gKTsKCQl2ZWMzIHEwcGVycCA9IGNyb3NzKCBOLCBxMCApOwoJCXZlYzMgVCA9IHExcGVycCAqIHN0MC54ICsgcTBwZXJwICogc3QxLng7CgkJdmVjMyBCID0gcTFwZXJwICogc3QwLnkgKyBxMHBlcnAgKiBzdDEueTsKCQlmbG9hdCBkZXQgPSBtYXgoIGRvdCggVCwgVCApLCBkb3QoIEIsIEIgKSApOwoJCWZsb2F0IHNjYWxlID0gKCBkZXQgPT0gMC4wICkgPyAwLjAgOiBmYWNlRGlyZWN0aW9uICogaW52ZXJzZXNxcnQoIGRldCApOwoJCXJldHVybiBub3JtYWxpemUoIFQgKiAoIG1hcE4ueCAqIHNjYWxlICkgKyBCICogKCBtYXBOLnkgKiBzY2FsZSApICsgTiAqIG1hcE4ueiApOwoJfQojZW5kaWZgLFNiPWAjaWZkZWYgVVNFX0NMRUFSQ09BVAoJdmVjMyBjbGVhcmNvYXROb3JtYWwgPSBnZW9tZXRyeU5vcm1hbDsKI2VuZGlmYCxFYj1gI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQCgl2ZWMzIGNsZWFyY29hdE1hcE4gPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wOwoJY2xlYXJjb2F0TWFwTi54eSAqPSBjbGVhcmNvYXROb3JtYWxTY2FsZTsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCWNsZWFyY29hdE5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIGNsZWFyY29hdE1hcE4gKTsKCSNlbHNlCgkJY2xlYXJjb2F0Tm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgY2xlYXJjb2F0Tm9ybWFsLCBjbGVhcmNvYXRNYXBOLCBmYWNlRGlyZWN0aW9uICk7CgkjZW5kaWYKI2VuZGlmYCxUYj1gI2lmZGVmIFVTRV9DTEVBUkNPQVRNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE1hcDsKI2VuZGlmCiNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUAoJdW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Um91Z2huZXNzTWFwOwojZW5kaWYKI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXROb3JtYWxNYXA7Cgl1bmlmb3JtIHZlYzIgY2xlYXJjb2F0Tm9ybWFsU2NhbGU7CiNlbmRpZmAsQWI9YCNpZmRlZiBPUEFRVUUKZGlmZnVzZUNvbG9yLmEgPSAxLjA7CiNlbmRpZgojaWZkZWYgVVNFX1RSQU5TTUlTU0lPTgpkaWZmdXNlQ29sb3IuYSAqPSB0cmFuc21pc3Npb25BbHBoYSArIDAuMTsKI2VuZGlmCmdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7YCxDYj1gdmVjMyBwYWNrTm9ybWFsVG9SR0IoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkgewoJcmV0dXJuIG5vcm1hbGl6ZSggbm9ybWFsICkgKiAwLjUgKyAwLjU7Cn0KdmVjMyB1bnBhY2tSR0JUb05vcm1hbCggY29uc3QgaW4gdmVjMyByZ2IgKSB7CglyZXR1cm4gMi4wICogcmdiLnh5eiAtIDEuMDsKfQpjb25zdCBmbG9hdCBQYWNrVXBzY2FsZSA9IDI1Ni4gLyAyNTUuO2NvbnN0IGZsb2F0IFVucGFja0Rvd25zY2FsZSA9IDI1NS4gLyAyNTYuOwpjb25zdCB2ZWMzIFBhY2tGYWN0b3JzID0gdmVjMyggMjU2LiAqIDI1Ni4gKiAyNTYuLCAyNTYuICogMjU2LiwgMjU2LiApOwpjb25zdCB2ZWM0IFVucGFja0ZhY3RvcnMgPSBVbnBhY2tEb3duc2NhbGUgLyB2ZWM0KCBQYWNrRmFjdG9ycywgMS4gKTsKY29uc3QgZmxvYXQgU2hpZnRSaWdodDggPSAxLiAvIDI1Ni47CnZlYzQgcGFja0RlcHRoVG9SR0JBKCBjb25zdCBpbiBmbG9hdCB2ICkgewoJdmVjNCByID0gdmVjNCggZnJhY3QoIHYgKiBQYWNrRmFjdG9ycyApLCB2ICk7CglyLnl6dyAtPSByLnh5eiAqIFNoaWZ0UmlnaHQ4OwlyZXR1cm4gciAqIFBhY2tVcHNjYWxlOwp9CmZsb2F0IHVucGFja1JHQkFUb0RlcHRoKCBjb25zdCBpbiB2ZWM0IHYgKSB7CglyZXR1cm4gZG90KCB2LCBVbnBhY2tGYWN0b3JzICk7Cn0KdmVjNCBwYWNrMkhhbGZUb1JHQkEoIHZlYzIgdiApIHsKCXZlYzQgciA9IHZlYzQoIHYueCwgZnJhY3QoIHYueCAqIDI1NS4wICksIHYueSwgZnJhY3QoIHYueSAqIDI1NS4wICkgKTsKCXJldHVybiB2ZWM0KCByLnggLSByLnkgLyAyNTUuMCwgci55LCByLnogLSByLncgLyAyNTUuMCwgci53ICk7Cn0KdmVjMiB1bnBhY2tSR0JBVG8ySGFsZiggdmVjNCB2ICkgewoJcmV0dXJuIHZlYzIoIHYueCArICggdi55IC8gMjU1LjAgKSwgdi56ICsgKCB2LncgLyAyNTUuMCApICk7Cn0KZmxvYXQgdmlld1pUb09ydGhvZ3JhcGhpY0RlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkgewoJcmV0dXJuICggdmlld1ogKyBuZWFyICkgLyAoIG5lYXIgLSBmYXIgKTsKfQpmbG9hdCBvcnRob2dyYXBoaWNEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGxpbmVhckNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7CglyZXR1cm4gbGluZWFyQ2xpcFogKiAoIG5lYXIgLSBmYXIgKSAtIG5lYXI7Cn0KZmxvYXQgdmlld1pUb1BlcnNwZWN0aXZlRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7CglyZXR1cm4gKCAoIG5lYXIgKyB2aWV3WiApICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogdmlld1ogKTsKfQpmbG9hdCBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgaW52Q2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHsKCXJldHVybiAoIG5lYXIgKiBmYXIgKSAvICggKCBmYXIgLSBuZWFyICkgKiBpbnZDbGlwWiAtIGZhciApOwp9YCxSYj1gI2lmZGVmIFBSRU1VTFRJUExJRURfQUxQSEEKCWdsX0ZyYWdDb2xvci5yZ2IgKj0gZ2xfRnJhZ0NvbG9yLmE7CiNlbmRpZmAsTGI9YHZlYzQgbXZQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTsKI2lmZGVmIFVTRV9JTlNUQU5DSU5HCgltdlBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiBtdlBvc2l0aW9uOwojZW5kaWYKbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIG12UG9zaXRpb247CmdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247YCxQYj1gI2lmZGVmIERJVEhFUklORwoJZ2xfRnJhZ0NvbG9yLnJnYiA9IGRpdGhlcmluZyggZ2xfRnJhZ0NvbG9yLnJnYiApOwojZW5kaWZgLERiPWAjaWZkZWYgRElUSEVSSU5HCgl2ZWMzIGRpdGhlcmluZyggdmVjMyBjb2xvciApIHsKCQlmbG9hdCBncmlkX3Bvc2l0aW9uID0gcmFuZCggZ2xfRnJhZ0Nvb3JkLnh5ICk7CgkJdmVjMyBkaXRoZXJfc2hpZnRfUkdCID0gdmVjMyggMC4yNSAvIDI1NS4wLCAtMC4yNSAvIDI1NS4wLCAwLjI1IC8gMjU1LjAgKTsKCQlkaXRoZXJfc2hpZnRfUkdCID0gbWl4KCAyLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCAtMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgZ3JpZF9wb3NpdGlvbiApOwoJCXJldHVybiBjb2xvciArIGRpdGhlcl9zaGlmdF9SR0I7Cgl9CiNlbmRpZmAsSWI9YGZsb2F0IHJvdWdobmVzc0ZhY3RvciA9IHJvdWdobmVzczsKI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVAKCXZlYzQgdGV4ZWxSb3VnaG5lc3MgPSB0ZXh0dXJlMkQoIHJvdWdobmVzc01hcCwgdlV2ICk7Cglyb3VnaG5lc3NGYWN0b3IgKj0gdGV4ZWxSb3VnaG5lc3MuZzsKI2VuZGlmYCxOYj1gI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIHJvdWdobmVzc01hcDsKI2VuZGlmYCxGYj1gI2lmZGVmIFVTRV9TSEFET1dNQVAKCSNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwCgkJdW5pZm9ybSBzYW1wbGVyMkQgZGlyZWN0aW9uYWxTaGFkb3dNYXBbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdOwoJCXZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07CgkJc3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQl9OwoJCXVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKCSNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNwb3RTaGFkb3dNYXBbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCQl2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdOwoJCXN0cnVjdCBTcG90TGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQl9OwoJCXVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCSNlbmRpZgoJI2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gc2FtcGxlcjJEIHBvaW50U2hhZG93TWFwWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdOwoJCXZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTsKCQlzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7CgkJCWZsb2F0IHNoYWRvd0JpYXM7CgkJCWZsb2F0IHNoYWRvd05vcm1hbEJpYXM7CgkJCWZsb2F0IHNoYWRvd1JhZGl1czsKCQkJdmVjMiBzaGFkb3dNYXBTaXplOwoJCQlmbG9hdCBzaGFkb3dDYW1lcmFOZWFyOwoJCQlmbG9hdCBzaGFkb3dDYW1lcmFGYXI7CgkJfTsKCQl1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKCWZsb2F0IHRleHR1cmUyRENvbXBhcmUoIHNhbXBsZXIyRCBkZXB0aHMsIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKSB7CgkJcmV0dXJuIHN0ZXAoIGNvbXBhcmUsIHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIGRlcHRocywgdXYgKSApICk7Cgl9Cgl2ZWMyIHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diApIHsKCQlyZXR1cm4gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93LCB1diApICk7Cgl9CglmbG9hdCBWU01TaGFkb3cgKHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKXsKCQlmbG9hdCBvY2NsdXNpb24gPSAxLjA7CgkJdmVjMiBkaXN0cmlidXRpb24gPSB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNoYWRvdywgdXYgKTsKCQlmbG9hdCBoYXJkX3NoYWRvdyA9IHN0ZXAoIGNvbXBhcmUgLCBkaXN0cmlidXRpb24ueCApOwoJCWlmIChoYXJkX3NoYWRvdyAhPSAxLjAgKSB7CgkJCWZsb2F0IGRpc3RhbmNlID0gY29tcGFyZSAtIGRpc3RyaWJ1dGlvbi54IDsKCQkJZmxvYXQgdmFyaWFuY2UgPSBtYXgoIDAuMDAwMDAsIGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKTsKCQkJZmxvYXQgc29mdG5lc3NfcHJvYmFiaWxpdHkgPSB2YXJpYW5jZSAvICh2YXJpYW5jZSArIGRpc3RhbmNlICogZGlzdGFuY2UgKTsJCQlzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IGNsYW1wKCAoIHNvZnRuZXNzX3Byb2JhYmlsaXR5IC0gMC4zICkgLyAoIDAuOTUgLSAwLjMgKSwgMC4wLCAxLjAgKTsJCQlvY2NsdXNpb24gPSBjbGFtcCggbWF4KCBoYXJkX3NoYWRvdywgc29mdG5lc3NfcHJvYmFiaWxpdHkgKSwgMC4wLCAxLjAgKTsKCQl9CgkJcmV0dXJuIG9jY2x1c2lvbjsKCX0KCWZsb2F0IGdldFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQgKSB7CgkJZmxvYXQgc2hhZG93ID0gMS4wOwoJCXNoYWRvd0Nvb3JkLnh5eiAvPSBzaGFkb3dDb29yZC53OwoJCXNoYWRvd0Nvb3JkLnogKz0gc2hhZG93QmlhczsKCQlidmVjNCBpbkZydXN0dW1WZWMgPSBidmVjNCAoIHNoYWRvd0Nvb3JkLnggPj0gMC4wLCBzaGFkb3dDb29yZC54IDw9IDEuMCwgc2hhZG93Q29vcmQueSA+PSAwLjAsIHNoYWRvd0Nvb3JkLnkgPD0gMS4wICk7CgkJYm9vbCBpbkZydXN0dW0gPSBhbGwoIGluRnJ1c3R1bVZlYyApOwoJCWJ2ZWMyIGZydXN0dW1UZXN0VmVjID0gYnZlYzIoIGluRnJ1c3R1bSwgc2hhZG93Q29vcmQueiA8PSAxLjAgKTsKCQlib29sIGZydXN0dW1UZXN0ID0gYWxsKCBmcnVzdHVtVGVzdFZlYyApOwoJCWlmICggZnJ1c3R1bVRlc3QgKSB7CgkJI2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApCgkJCXZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplOwoJCQlmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeTAgPSAtIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeDEgPSArIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeDIgPSBkeDAgLyAyLjA7CgkJCWZsb2F0IGR5MiA9IGR5MCAvIDIuMDsKCQkJZmxvYXQgZHgzID0gZHgxIC8gMi4wOwoJCQlmbG9hdCBkeTMgPSBkeTEgLyAyLjA7CgkJCXNoYWRvdyA9ICgKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApCgkJCSkgKiAoIDEuMCAvIDE3LjAgKTsKCQkjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApCgkJCXZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplOwoJCQlmbG9hdCBkeCA9IHRleGVsU2l6ZS54OwoJCQlmbG9hdCBkeSA9IHRleGVsU2l6ZS55OwoJCQl2ZWMyIHV2ID0gc2hhZG93Q29vcmQueHk7CgkJCXZlYzIgZiA9IGZyYWN0KCB1diAqIHNoYWRvd01hcFNpemUgKyAwLjUgKTsKCQkJdXYgLT0gZiAqIHRleGVsU2l6ZTsKCQkJc2hhZG93ID0gKAoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCBkeSApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHRleGVsU2l6ZSwgc2hhZG93Q29vcmQueiApICsKCQkJCW1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwKCQkJCQkgZi54ICkgKwoJCQkJbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksIAoJCQkJCSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwKCQkJCQkgZi54ICkgKwoJCQkJbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCAKCQkJCQkgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLAoJCQkJCSBmLnkgKSArCgkJCQltaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLAoJCQkJCSBmLnkgKSArCgkJCQltaXgoIG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJCSAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLAoJCQkJCQkgIGYueCApLAoJCQkJCSBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJCSAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksCgkJCQkJCSAgZi54ICksCgkJCQkJIGYueSApCgkJCSkgKiAoIDEuMCAvIDkuMCApOwoJCSNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApCgkJCXNoYWRvdyA9IFZTTVNoYWRvdyggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApOwoJCSNlbHNlCgkJCXNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTsKCQkjZW5kaWYKCQl9CgkJcmV0dXJuIHNoYWRvdzsKCX0KCXZlYzIgY3ViZVRvVVYoIHZlYzMgdiwgZmxvYXQgdGV4ZWxTaXplWSApIHsKCQl2ZWMzIGFic1YgPSBhYnMoIHYgKTsKCQlmbG9hdCBzY2FsZVRvQ3ViZSA9IDEuMCAvIG1heCggYWJzVi54LCBtYXgoIGFic1YueSwgYWJzVi56ICkgKTsKCQlhYnNWICo9IHNjYWxlVG9DdWJlOwoJCXYgKj0gc2NhbGVUb0N1YmUgKiAoIDEuMCAtIDIuMCAqIHRleGVsU2l6ZVkgKTsKCQl2ZWMyIHBsYW5hciA9IHYueHk7CgkJZmxvYXQgYWxtb3N0QVRleGVsID0gMS41ICogdGV4ZWxTaXplWTsKCQlmbG9hdCBhbG1vc3RPbmUgPSAxLjAgLSBhbG1vc3RBVGV4ZWw7CgkJaWYgKCBhYnNWLnogPj0gYWxtb3N0T25lICkgewoJCQlpZiAoIHYueiA+IDAuMCApCgkJCQlwbGFuYXIueCA9IDQuMCAtIHYueDsKCQl9IGVsc2UgaWYgKCBhYnNWLnggPj0gYWxtb3N0T25lICkgewoJCQlmbG9hdCBzaWduWCA9IHNpZ24oIHYueCApOwoJCQlwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7CgkJfSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHsKCQkJZmxvYXQgc2lnblkgPSBzaWduKCB2LnkgKTsKCQkJcGxhbmFyLnggPSB2LnggKyAyLjAgKiBzaWduWSArIDIuMDsKCQkJcGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDsKCQl9CgkJcmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApOwoJfQoJZmxvYXQgZ2V0UG9pbnRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkLCBmbG9hdCBzaGFkb3dDYW1lcmFOZWFyLCBmbG9hdCBzaGFkb3dDYW1lcmFGYXIgKSB7CgkJdmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvICggc2hhZG93TWFwU2l6ZSAqIHZlYzIoIDQuMCwgMi4wICkgKTsKCQl2ZWMzIGxpZ2h0VG9Qb3NpdGlvbiA9IHNoYWRvd0Nvb3JkLnh5ejsKCQlmbG9hdCBkcCA9ICggbGVuZ3RoKCBsaWdodFRvUG9zaXRpb24gKSAtIHNoYWRvd0NhbWVyYU5lYXIgKSAvICggc2hhZG93Q2FtZXJhRmFyIC0gc2hhZG93Q2FtZXJhTmVhciApOwkJZHAgKz0gc2hhZG93QmlhczsKCQl2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApOwoJCSNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApCgkJCXZlYzIgb2Zmc2V0ID0gdmVjMiggLSAxLCAxICkgKiBzaGFkb3dSYWRpdXMgKiB0ZXhlbFNpemUueTsKCQkJcmV0dXJuICgKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl5LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl4LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl4LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHksIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHksIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHgsIHRleGVsU2l6ZS55ICksIGRwICkKCQkJKSAqICggMS4wIC8gOS4wICk7CgkJI2Vsc2UKCQkJcmV0dXJuIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICk7CgkJI2VuZGlmCgl9CiNlbmRpZmAsemI9YCNpZmRlZiBVU0VfU0hBRE9XTUFQCgkjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gbWF0NCBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07CgkJdmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTsKCQlzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7CgkJCWZsb2F0IHNoYWRvd0JpYXM7CgkJCWZsb2F0IHNoYWRvd05vcm1hbEJpYXM7CgkJCWZsb2F0IHNoYWRvd1JhZGl1czsKCQkJdmVjMiBzaGFkb3dNYXBTaXplOwoJCX07CgkJdW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTsKCSNlbmRpZgoJI2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwCgkJdW5pZm9ybSBtYXQ0IHNwb3RTaGFkb3dNYXRyaXhbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCQl2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdOwoJCXN0cnVjdCBTcG90TGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQl9OwoJCXVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCSNlbmRpZgoJI2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gbWF0NCBwb2ludFNoYWRvd01hdHJpeFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTsKCQl2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07CgkJc3RydWN0IFBvaW50TGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQkJZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjsKCQkJZmxvYXQgc2hhZG93Q2FtZXJhRmFyOwoJCX07CgkJdW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdOwoJI2VuZGlmCiNlbmRpZmAsVWI9YCNpZmRlZiBVU0VfU0hBRE9XTUFQCgkjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDAKCQl2ZWMzIHNoYWRvd1dvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTsKCQl2ZWM0IHNoYWRvd1dvcmxkUG9zaXRpb247CgkjZW5kaWYKCSNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7CgkJc2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApOwoJCXZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gPSBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKCSNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHsKCQlzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogc3BvdExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTsKCQl2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gPSBzcG90U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKCSNlbmRpZgoJI2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7CgkJc2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHBvaW50TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApOwoJCXZQb2ludFNoYWRvd0Nvb3JkWyBpIF0gPSBwb2ludFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKI2VuZGlmYCxCYj1gZmxvYXQgZ2V0U2hhZG93TWFzaygpIHsKCWZsb2F0IHNoYWRvdyA9IDEuMDsKCSNpZmRlZiBVU0VfU0hBRE9XTUFQCgkjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMAoJRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0OwoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkgewoJCWRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdOwoJCXNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKCSNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodDsKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7CgkJc3BvdExpZ2h0ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdOwoJCXNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJI2VuZGlmCgkjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwCglQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHQ7CgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHsKCQlwb2ludExpZ2h0ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTsKCQlzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHQuc2hhZG93QmlhcywgcG9pbnRMaWdodC5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKCSNlbmRpZgoJcmV0dXJuIHNoYWRvdzsKfWAsT2I9YCNpZmRlZiBVU0VfU0tJTk5JTkcKCW1hdDQgYm9uZU1hdFggPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueCApOwoJbWF0NCBib25lTWF0WSA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC55ICk7CgltYXQ0IGJvbmVNYXRaID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnogKTsKCW1hdDQgYm9uZU1hdFcgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgudyApOwojZW5kaWZgLGtiPWAjaWZkZWYgVVNFX1NLSU5OSU5HCgl1bmlmb3JtIG1hdDQgYmluZE1hdHJpeDsKCXVuaWZvcm0gbWF0NCBiaW5kTWF0cml4SW52ZXJzZTsKCSNpZmRlZiBCT05FX1RFWFRVUkUKCQl1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCBib25lVGV4dHVyZTsKCQl1bmlmb3JtIGludCBib25lVGV4dHVyZVNpemU7CgkJbWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkgewoJCQlmbG9hdCBqID0gaSAqIDQuMDsKCQkJZmxvYXQgeCA9IG1vZCggaiwgZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7CgkJCWZsb2F0IHkgPSBmbG9vciggaiAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApOwoJCQlmbG9hdCBkeCA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTsKCQkJZmxvYXQgZHkgPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7CgkJCXkgPSBkeSAqICggeSArIDAuNSApOwoJCQl2ZWM0IHYxID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAwLjUgKSwgeSApICk7CgkJCXZlYzQgdjIgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDEuNSApLCB5ICkgKTsKCQkJdmVjNCB2MyA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMi41ICksIHkgKSApOwoJCQl2ZWM0IHY0ID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAzLjUgKSwgeSApICk7CgkJCW1hdDQgYm9uZSA9IG1hdDQoIHYxLCB2MiwgdjMsIHY0ICk7CgkJCXJldHVybiBib25lOwoJCX0KCSNlbHNlCgkJdW5pZm9ybSBtYXQ0IGJvbmVNYXRyaWNlc1sgTUFYX0JPTkVTIF07CgkJbWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkgewoJCQltYXQ0IGJvbmUgPSBib25lTWF0cmljZXNbIGludChpKSBdOwoJCQlyZXR1cm4gYm9uZTsKCQl9CgkjZW5kaWYKI2VuZGlmYCxIYj1gI2lmZGVmIFVTRV9TS0lOTklORwoJdmVjNCBza2luVmVydGV4ID0gYmluZE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTsKCXZlYzQgc2tpbm5lZCA9IHZlYzQoIDAuMCApOwoJc2tpbm5lZCArPSBib25lTWF0WCAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lng7Cglza2lubmVkICs9IGJvbmVNYXRZICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueTsKCXNraW5uZWQgKz0gYm9uZU1hdFogKiBza2luVmVydGV4ICogc2tpbldlaWdodC56OwoJc2tpbm5lZCArPSBib25lTWF0VyAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnc7Cgl0cmFuc2Zvcm1lZCA9ICggYmluZE1hdHJpeEludmVyc2UgKiBza2lubmVkICkueHl6OwojZW5kaWZgLFZiPWAjaWZkZWYgVVNFX1NLSU5OSU5HCgltYXQ0IHNraW5NYXRyaXggPSBtYXQ0KCAwLjAgKTsKCXNraW5NYXRyaXggKz0gc2tpbldlaWdodC54ICogYm9uZU1hdFg7Cglza2luTWF0cml4ICs9IHNraW5XZWlnaHQueSAqIGJvbmVNYXRZOwoJc2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnogKiBib25lTWF0WjsKCXNraW5NYXRyaXggKz0gc2tpbldlaWdodC53ICogYm9uZU1hdFc7Cglza2luTWF0cml4ID0gYmluZE1hdHJpeEludmVyc2UgKiBza2luTWF0cml4ICogYmluZE1hdHJpeDsKCW9iamVjdE5vcm1hbCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3ROb3JtYWwsIDAuMCApICkueHl6OwoJI2lmZGVmIFVTRV9UQU5HRU5UCgkJb2JqZWN0VGFuZ2VudCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejsKCSNlbmRpZgojZW5kaWZgLEdiPWBmbG9hdCBzcGVjdWxhclN0cmVuZ3RoOwojaWZkZWYgVVNFX1NQRUNVTEFSTUFQCgl2ZWM0IHRleGVsU3BlY3VsYXIgPSB0ZXh0dXJlMkQoIHNwZWN1bGFyTWFwLCB2VXYgKTsKCXNwZWN1bGFyU3RyZW5ndGggPSB0ZXhlbFNwZWN1bGFyLnI7CiNlbHNlCglzcGVjdWxhclN0cmVuZ3RoID0gMS4wOwojZW5kaWZgLFdiPWAjaWZkZWYgVVNFX1NQRUNVTEFSTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhck1hcDsKI2VuZGlmYCxxYj1gI2lmIGRlZmluZWQoIFRPTkVfTUFQUElORyApCglnbF9GcmFnQ29sb3IucmdiID0gdG9uZU1hcHBpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTsKI2VuZGlmYCxYYj1gI2lmbmRlZiBzYXR1cmF0ZQojZGVmaW5lIHNhdHVyYXRlKCBhICkgY2xhbXAoIGEsIDAuMCwgMS4wICkKI2VuZGlmCnVuaWZvcm0gZmxvYXQgdG9uZU1hcHBpbmdFeHBvc3VyZTsKdmVjMyBMaW5lYXJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHsKCXJldHVybiB0b25lTWFwcGluZ0V4cG9zdXJlICogY29sb3I7Cn0KdmVjMyBSZWluaGFyZFRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgewoJY29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTsKCXJldHVybiBzYXR1cmF0ZSggY29sb3IgLyAoIHZlYzMoIDEuMCApICsgY29sb3IgKSApOwp9CnZlYzMgT3B0aW1pemVkQ2luZW9uVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7Cgljb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlOwoJY29sb3IgPSBtYXgoIHZlYzMoIDAuMCApLCBjb2xvciAtIDAuMDA0ICk7CglyZXR1cm4gcG93KCAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDAuNSApICkgLyAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDEuNyApICsgMC4wNiApLCB2ZWMzKCAyLjIgKSApOwp9CnZlYzMgUlJUQW5kT0RURml0KCB2ZWMzIHYgKSB7Cgl2ZWMzIGEgPSB2ICogKCB2ICsgMC4wMjQ1Nzg2ICkgLSAwLjAwMDA5MDUzNzsKCXZlYzMgYiA9IHYgKiAoIDAuOTgzNzI5ICogdiArIDAuNDMyOTUxMCApICsgMC4yMzgwODE7CglyZXR1cm4gYSAvIGI7Cn0KdmVjMyBBQ0VTRmlsbWljVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7Cgljb25zdCBtYXQzIEFDRVNJbnB1dE1hdCA9IG1hdDMoCgkJdmVjMyggMC41OTcxOSwgMC4wNzYwMCwgMC4wMjg0MCApLAkJdmVjMyggMC4zNTQ1OCwgMC45MDgzNCwgMC4xMzM4MyApLAoJCXZlYzMoIDAuMDQ4MjMsIDAuMDE1NjYsIDAuODM3NzcgKQoJKTsKCWNvbnN0IG1hdDMgQUNFU091dHB1dE1hdCA9IG1hdDMoCgkJdmVjMyggIDEuNjA0NzUsIC0wLjEwMjA4LCAtMC4wMDMyNyApLAkJdmVjMyggLTAuNTMxMDgsICAxLjEwODEzLCAtMC4wNzI3NiApLAoJCXZlYzMoIC0wLjA3MzY3LCAtMC4wMDYwNSwgIDEuMDc2MDIgKQoJKTsKCWNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmUgLyAwLjY7Cgljb2xvciA9IEFDRVNJbnB1dE1hdCAqIGNvbG9yOwoJY29sb3IgPSBSUlRBbmRPRFRGaXQoIGNvbG9yICk7Cgljb2xvciA9IEFDRVNPdXRwdXRNYXQgKiBjb2xvcjsKCXJldHVybiBzYXR1cmF0ZSggY29sb3IgKTsKfQp2ZWMzIEN1c3RvbVRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gY29sb3I7IH1gLFliPWAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTgoJZmxvYXQgdHJhbnNtaXNzaW9uQWxwaGEgPSAxLjA7CglmbG9hdCB0cmFuc21pc3Npb25GYWN0b3IgPSB0cmFuc21pc3Npb247CglmbG9hdCB0aGlja25lc3NGYWN0b3IgPSB0aGlja25lc3M7CgkjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUAoJCXRyYW5zbWlzc2lvbkZhY3RvciAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjsKCSNlbmRpZgoJI2lmZGVmIFVTRV9USElDS05FU1NNQVAKCQl0aGlja25lc3NGYWN0b3IgKj0gdGV4dHVyZTJEKCB0aGlja25lc3NNYXAsIHZVdiApLmc7CgkjZW5kaWYKCXZlYzMgcG9zID0gdldvcmxkUG9zaXRpb247Cgl2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7Cgl2ZWMzIG4gPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTsKCXZlYzQgdHJhbnNtaXNzaW9uID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbigKCQluLCB2LCByb3VnaG5lc3NGYWN0b3IsIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJGOTAsCgkJcG9zLCBtb2RlbE1hdHJpeCwgdmlld01hdHJpeCwgcHJvamVjdGlvbk1hdHJpeCwgaW9yLCB0aGlja25lc3NGYWN0b3IsCgkJYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSApOwoJdG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbi5yZ2IsIHRyYW5zbWlzc2lvbkZhY3RvciApOwoJdHJhbnNtaXNzaW9uQWxwaGEgPSBtaXgoIHRyYW5zbWlzc2lvbkFscGhhLCB0cmFuc21pc3Npb24uYSwgdHJhbnNtaXNzaW9uRmFjdG9yICk7CiNlbmRpZmAsWmI9YCNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OCgl1bmlmb3JtIGZsb2F0IHRyYW5zbWlzc2lvbjsKCXVuaWZvcm0gZmxvYXQgdGhpY2tuZXNzOwoJdW5pZm9ybSBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlOwoJdW5pZm9ybSB2ZWMzIGF0dGVudWF0aW9uQ29sb3I7CgkjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvbk1hcDsKCSNlbmRpZgoJI2lmZGVmIFVTRV9USElDS05FU1NNQVAKCQl1bmlmb3JtIHNhbXBsZXIyRCB0aGlja25lc3NNYXA7CgkjZW5kaWYKCXVuaWZvcm0gdmVjMiB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZTsKCXVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvblNhbXBsZXJNYXA7Cgl1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7Cgl1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsKCXZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjsKCXZlYzMgZ2V0Vm9sdW1lVHJhbnNtaXNzaW9uUmF5KCBjb25zdCBpbiB2ZWMzIG4sIGNvbnN0IGluIHZlYzMgdiwgY29uc3QgaW4gZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBpbiBmbG9hdCBpb3IsIGNvbnN0IGluIG1hdDQgbW9kZWxNYXRyaXggKSB7CgkJdmVjMyByZWZyYWN0aW9uVmVjdG9yID0gcmVmcmFjdCggLSB2LCBub3JtYWxpemUoIG4gKSwgMS4wIC8gaW9yICk7CgkJdmVjMyBtb2RlbFNjYWxlOwoJCW1vZGVsU2NhbGUueCA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDAgXS54eXogKSApOwoJCW1vZGVsU2NhbGUueSA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDEgXS54eXogKSApOwoJCW1vZGVsU2NhbGUueiA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDIgXS54eXogKSApOwoJCXJldHVybiBub3JtYWxpemUoIHJlZnJhY3Rpb25WZWN0b3IgKSAqIHRoaWNrbmVzcyAqIG1vZGVsU2NhbGU7Cgl9CglmbG9hdCBhcHBseUlvclRvUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGlvciApIHsKCQlyZXR1cm4gcm91Z2huZXNzICogY2xhbXAoIGlvciAqIDIuMCAtIDIuMCwgMC4wLCAxLjAgKTsKCX0KCXZlYzQgZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKCBjb25zdCBpbiB2ZWMyIGZyYWdDb29yZCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBmbG9hdCBpb3IgKSB7CgkJZmxvYXQgZnJhbWVidWZmZXJMb2QgPSBsb2cyKCB0cmFuc21pc3Npb25TYW1wbGVyU2l6ZS54ICkgKiBhcHBseUlvclRvUm91Z2huZXNzKCByb3VnaG5lc3MsIGlvciApOwoJCSNpZmRlZiBURVhUVVJFX0xPRF9FWFQKCQkJcmV0dXJuIHRleHR1cmUyRExvZEVYVCggdHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCApOwoJCSNlbHNlCgkJCXJldHVybiB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QgKTsKCQkjZW5kaWYKCX0KCXZlYzMgYXBwbHlWb2x1bWVBdHRlbnVhdGlvbiggY29uc3QgaW4gdmVjMyByYWRpYW5jZSwgY29uc3QgaW4gZmxvYXQgdHJhbnNtaXNzaW9uRGlzdGFuY2UsIGNvbnN0IGluIHZlYzMgYXR0ZW51YXRpb25Db2xvciwgY29uc3QgaW4gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSApIHsKCQlpZiAoIGF0dGVudWF0aW9uRGlzdGFuY2UgPT0gMC4wICkgewoJCQlyZXR1cm4gcmFkaWFuY2U7CgkJfSBlbHNlIHsKCQkJdmVjMyBhdHRlbnVhdGlvbkNvZWZmaWNpZW50ID0gLWxvZyggYXR0ZW51YXRpb25Db2xvciApIC8gYXR0ZW51YXRpb25EaXN0YW5jZTsKCQkJdmVjMyB0cmFuc21pdHRhbmNlID0gZXhwKCAtIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgKiB0cmFuc21pc3Npb25EaXN0YW5jZSApOwkJCXJldHVybiB0cmFuc21pdHRhbmNlICogcmFkaWFuY2U7CgkJfQoJfQoJdmVjNCBnZXRJQkxWb2x1bWVSZWZyYWN0aW9uKCBjb25zdCBpbiB2ZWMzIG4sIGNvbnN0IGluIHZlYzMgdiwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiB2ZWMzIGRpZmZ1c2VDb2xvciwKCQljb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNwZWN1bGFyRjkwLCBjb25zdCBpbiB2ZWMzIHBvc2l0aW9uLCBjb25zdCBpbiBtYXQ0IG1vZGVsTWF0cml4LAoJCWNvbnN0IGluIG1hdDQgdmlld01hdHJpeCwgY29uc3QgaW4gbWF0NCBwcm9qTWF0cml4LCBjb25zdCBpbiBmbG9hdCBpb3IsIGNvbnN0IGluIGZsb2F0IHRoaWNrbmVzcywKCQljb25zdCBpbiB2ZWMzIGF0dGVudWF0aW9uQ29sb3IsIGNvbnN0IGluIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2UgKSB7CgkJdmVjMyB0cmFuc21pc3Npb25SYXkgPSBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkoIG4sIHYsIHRoaWNrbmVzcywgaW9yLCBtb2RlbE1hdHJpeCApOwoJCXZlYzMgcmVmcmFjdGVkUmF5RXhpdCA9IHBvc2l0aW9uICsgdHJhbnNtaXNzaW9uUmF5OwoJCXZlYzQgbmRjUG9zID0gcHJvak1hdHJpeCAqIHZpZXdNYXRyaXggKiB2ZWM0KCByZWZyYWN0ZWRSYXlFeGl0LCAxLjAgKTsKCQl2ZWMyIHJlZnJhY3Rpb25Db29yZHMgPSBuZGNQb3MueHkgLyBuZGNQb3MudzsKCQlyZWZyYWN0aW9uQ29vcmRzICs9IDEuMDsKCQlyZWZyYWN0aW9uQ29vcmRzIC89IDIuMDsKCQl2ZWM0IHRyYW5zbWl0dGVkTGlnaHQgPSBnZXRUcmFuc21pc3Npb25TYW1wbGUoIHJlZnJhY3Rpb25Db29yZHMsIHJvdWdobmVzcywgaW9yICk7CgkJdmVjMyBhdHRlbnVhdGVkQ29sb3IgPSBhcHBseVZvbHVtZUF0dGVudWF0aW9uKCB0cmFuc21pdHRlZExpZ2h0LnJnYiwgbGVuZ3RoKCB0cmFuc21pc3Npb25SYXkgKSwgYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSApOwoJCXZlYzMgRiA9IEVudmlyb25tZW50QlJERiggbiwgdiwgc3BlY3VsYXJDb2xvciwgc3BlY3VsYXJGOTAsIHJvdWdobmVzcyApOwoJCXJldHVybiB2ZWM0KCAoIDEuMCAtIEYgKSAqIGF0dGVudWF0ZWRDb2xvciAqIGRpZmZ1c2VDb2xvciwgdHJhbnNtaXR0ZWRMaWdodC5hICk7Cgl9CiNlbmRpZmAsSmI9YCNpZiAoIGRlZmluZWQoIFVTRV9VViApICYmICEgZGVmaW5lZCggVVZTX1ZFUlRFWF9PTkxZICkgKQoJdmFyeWluZyB2ZWMyIHZVdjsKI2VuZGlmYCwkYj1gI2lmZGVmIFVTRV9VVgoJI2lmZGVmIFVWU19WRVJURVhfT05MWQoJCXZlYzIgdlV2OwoJI2Vsc2UKCQl2YXJ5aW5nIHZlYzIgdlV2OwoJI2VuZGlmCgl1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07CiNlbmRpZmAsS2I9YCNpZmRlZiBVU0VfVVYKCXZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7CiNlbmRpZmAsUWI9YCNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKQoJdmFyeWluZyB2ZWMyIHZVdjI7CiNlbmRpZmAsamI9YCNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKQoJYXR0cmlidXRlIHZlYzIgdXYyOwoJdmFyeWluZyB2ZWMyIHZVdjI7Cgl1bmlmb3JtIG1hdDMgdXYyVHJhbnNmb3JtOwojZW5kaWZgLHQxPWAjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQICkKCXZVdjIgPSAoIHV2MlRyYW5zZm9ybSAqIHZlYzMoIHV2MiwgMSApICkueHk7CiNlbmRpZmAsZTE9YCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCggRElTVEFOQ0UgKSB8fCBkZWZpbmVkICggVVNFX1NIQURPV01BUCApIHx8IGRlZmluZWQgKCBVU0VfVFJBTlNNSVNTSU9OICkKCXZlYzQgd29ybGRQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTsKCSNpZmRlZiBVU0VfSU5TVEFOQ0lORwoJCXdvcmxkUG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIHdvcmxkUG9zaXRpb247CgkjZW5kaWYKCXdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHdvcmxkUG9zaXRpb247CiNlbmRpZmAsbjE9YHZhcnlpbmcgdmVjMiB2VXY7CnVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTsKdm9pZCBtYWluKCkgewoJdlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTsKCWdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24ueHksIDEuMCwgMS4wICk7Cn1gLGkxPWB1bmlmb3JtIHNhbXBsZXIyRCB0MkQ7CnZhcnlpbmcgdmVjMiB2VXY7CnZvaWQgbWFpbigpIHsKCWdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdDJELCB2VXYgKTsKCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+Cn1gLHIxPWB2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgp2b2lkIG1haW4oKSB7Cgl2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApOwoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCWdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53Owp9YCxzMT1gI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD4KdW5pZm9ybSBmbG9hdCBvcGFjaXR5Owp2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwojaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7Cgl2ZWMzIHZSZWZsZWN0ID0gdldvcmxkRGlyZWN0aW9uOwoJI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD4KCWdsX0ZyYWdDb2xvciA9IGVudkNvbG9yOwoJZ2xfRnJhZ0NvbG9yLmEgKj0gb3BhY2l0eTsKCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+Cn1gLG8xPWAjaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXOwp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQCgkJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCQkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNlbmRpZgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+Cgl2SGlnaFByZWNpc2lvblpXID0gZ2xfUG9zaXRpb24uenc7Cn1gLGExPWAjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwCgl1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNlbmRpZgojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8cGFja2luZz4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4KdmFyeWluZyB2ZWMyIHZIaWdoUHJlY2lzaW9uWlc7CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApOwoJI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMAoJCWRpZmZ1c2VDb2xvci5hID0gb3BhY2l0eTsKCSNlbmRpZgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CglmbG9hdCBmcmFnQ29vcmRaID0gMC41ICogdkhpZ2hQcmVjaXNpb25aV1swXSAvIHZIaWdoUHJlY2lzaW9uWldbMV0gKyAwLjU7CgkjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwCgkJZ2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggMS4wIC0gZnJhZ0Nvb3JkWiApLCBvcGFjaXR5ICk7CgkjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDEKCQlnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGZyYWdDb29yZFogKTsKCSNlbmRpZgp9YCxsMT1gI2RlZmluZSBESVNUQU5DRQp2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVAKCQkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2VuZGlmCgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCXZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7Cn1gLGMxPWAjZGVmaW5lIERJU1RBTkNFCnVuaWZvcm0gdmVjMyByZWZlcmVuY2VQb3NpdGlvbjsKdW5pZm9ybSBmbG9hdCBuZWFyRGlzdGFuY2U7CnVuaWZvcm0gZmxvYXQgZmFyRGlzdGFuY2U7CnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluICgpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApOwoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CglmbG9hdCBkaXN0ID0gbGVuZ3RoKCB2V29ybGRQb3NpdGlvbiAtIHJlZmVyZW5jZVBvc2l0aW9uICk7CglkaXN0ID0gKCBkaXN0IC0gbmVhckRpc3RhbmNlICkgLyAoIGZhckRpc3RhbmNlIC0gbmVhckRpc3RhbmNlICk7CglkaXN0ID0gc2F0dXJhdGUoIGRpc3QgKTsKCWdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZGlzdCApOwp9YCx1MT1gdmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4Kdm9pZCBtYWluKCkgewoJdldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTsKCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+Cn1gLGgxPWB1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7CnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247CiNpbmNsdWRlIDxjb21tb24+CnZvaWQgbWFpbigpIHsKCXZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTsKCXZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTsKCWdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApOwoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KfWAsZjE9YHVuaWZvcm0gZmxvYXQgc2NhbGU7CmF0dHJpYnV0ZSBmbG9hdCBsaW5lRGlzdGFuY2U7CnZhcnlpbmcgZmxvYXQgdkxpbmVEaXN0YW5jZTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJdkxpbmVEaXN0YW5jZSA9IHNjYWxlICogbGluZURpc3RhbmNlOwoJI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLGQxPWB1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5Owp1bmlmb3JtIGZsb2F0IGRhc2hTaXplOwp1bmlmb3JtIGZsb2F0IHRvdGFsU2l6ZTsKdmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJaWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7CgkJZGlzY2FyZDsKCX0KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApOwoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CglvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjsKCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50Pgp9YCxwMT1gI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8dXYyX3ZlcnRleD4KCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaWYgZGVmaW5lZCAoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkICggVVNFX1NLSU5OSU5HICkKCQkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCQkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2VuZGlmCgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsbTE9YHVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNpZm5kZWYgRkxBVF9TSEFERUQKCXZhcnlpbmcgdmVjMyB2Tm9ybWFsOwojZW5kaWYKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+CglSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApOwoJI2lmZGVmIFVTRV9MSUdIVE1BUAoJCXZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApOwoJCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBsaWdodE1hcFRleGVsLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5OwoJI2Vsc2UKCQlyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdmVjMyggMS4wICk7CgkjZW5kaWYKCSNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD4KCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBkaWZmdXNlQ29sb3IucmdiOwoJdmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlOwoJI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAsZzE9YCNkZWZpbmUgTEFNQkVSVAp2YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7CnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDsKI2lmZGVmIERPVUJMRV9TSURFRAoJdmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7Cgl2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjazsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDx1djJfdmVydGV4PgoJI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxsaWdodHNfbGFtYmVydF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxmb2dfdmVydGV4Pgp9YCx4MT1gdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5Owp2YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7CnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDsKI2lmZGVmIERPVUJMRV9TSURFRAoJdmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7Cgl2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjazsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTsKCXZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCSNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4KCSNpZmRlZiBET1VCTEVfU0lERUQKCQlyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gKCBnbF9Gcm9udEZhY2luZyApID8gdkluZGlyZWN0RnJvbnQgOiB2SW5kaXJlY3RCYWNrOwoJI2Vsc2UKCQlyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdkluZGlyZWN0RnJvbnQ7CgkjZW5kaWYKCSNpbmNsdWRlIDxsaWdodG1hcF9mcmFnbWVudD4KCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTsKCSNpZmRlZiBET1VCTEVfU0lERUQKCQlyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gKCBnbF9Gcm9udEZhY2luZyApID8gdkxpZ2h0RnJvbnQgOiB2TGlnaHRCYWNrOwoJI2Vsc2UKCQlyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gdkxpZ2h0RnJvbnQ7CgkjZW5kaWYKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKj0gQlJERl9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICkgKiBnZXRTaGFkb3dNYXNrKCk7CgkjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlOwoJI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAseTE9YCNkZWZpbmUgTUFUQ0FQCnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cgl2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejsKfWAsdjE9YCNkZWZpbmUgTUFUQ0FQCnVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CnVuaWZvcm0gc2FtcGxlcjJEIG1hdGNhcDsKdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4KCXZlYzMgdmlld0RpciA9IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApOwoJdmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLSB2aWV3RGlyLnggKSApOwoJdmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTsKCXZlYzIgdXYgPSB2ZWMyKCBkb3QoIHgsIG5vcm1hbCApLCBkb3QoIHksIG5vcm1hbCApICkgKiAwLjQ5NSArIDAuNTsKCSNpZmRlZiBVU0VfTUFUQ0FQCgkJdmVjNCBtYXRjYXBDb2xvciA9IHRleHR1cmUyRCggbWF0Y2FwLCB1diApOwoJI2Vsc2UKCQl2ZWM0IG1hdGNhcENvbG9yID0gdmVjNCggdmVjMyggbWl4KCAwLjIsIDAuOCwgdXYueSApICksIDEuMCApOwoJI2VuZGlmCgl2ZWMzIG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiICogbWF0Y2FwQ29sb3IucmdiOwoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50Pgp9YCxfMT1gI2RlZmluZSBOT1JNQUwKI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkKCXZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwojZW5kaWYKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkKCXZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6OwojZW5kaWYKfWAsdzE9YCNkZWZpbmUgTk9STUFMCnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkKCXZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwojZW5kaWYKI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+CglnbF9GcmFnQ29sb3IgPSB2ZWM0KCBwYWNrTm9ybWFsVG9SR0IoIG5vcm1hbCApLCBvcGFjaXR5ICk7Cn1gLE0xPWAjZGVmaW5lIFBIT05HCnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDx1djJfdmVydGV4PgoJI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+Cgl2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejsKCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLGIxPWAjZGVmaW5lIFBIT05HCnVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIHZlYzMgZW1pc3NpdmU7CnVuaWZvcm0gdmVjMyBzcGVjdWxhcjsKdW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxic2Rmcz4KI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CglSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApOwoJdmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxsaWdodHNfcGhvbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+CgkjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlOwoJI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAsUzE9YCNkZWZpbmUgU1RBTkRBUkQKdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OCgl2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CiNlbmRpZgojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDx1djJfdmVydGV4PgoJI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+Cgl2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejsKCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxmb2dfdmVydGV4PgojaWZkZWYgVVNFX1RSQU5TTUlTU0lPTgoJdldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejsKI2VuZGlmCn1gLEUxPWAjZGVmaW5lIFNUQU5EQVJECiNpZmRlZiBQSFlTSUNBTAoJI2RlZmluZSBJT1IKCSNkZWZpbmUgU1BFQ1VMQVIKI2VuZGlmCnVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIHZlYzMgZW1pc3NpdmU7CnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzOwp1bmlmb3JtIGZsb2F0IG1ldGFsbmVzczsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaWZkZWYgSU9SCgl1bmlmb3JtIGZsb2F0IGlvcjsKI2VuZGlmCiNpZmRlZiBTUEVDVUxBUgoJdW5pZm9ybSBmbG9hdCBzcGVjdWxhckludGVuc2l0eTsKCXVuaWZvcm0gdmVjMyBzcGVjdWxhckNvbG9yOwoJI2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFySW50ZW5zaXR5TWFwOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1NQRUNVTEFSQ09MT1JNQVAKCQl1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhckNvbG9yTWFwOwoJI2VuZGlmCiNlbmRpZgojaWZkZWYgVVNFX0NMRUFSQ09BVAoJdW5pZm9ybSBmbG9hdCBjbGVhcmNvYXQ7Cgl1bmlmb3JtIGZsb2F0IGNsZWFyY29hdFJvdWdobmVzczsKI2VuZGlmCiNpZmRlZiBVU0VfU0hFRU4KCXVuaWZvcm0gdmVjMyBzaGVlbkNvbG9yOwoJdW5pZm9ybSBmbG9hdCBzaGVlblJvdWdobmVzczsKCSNpZmRlZiBVU0VfU0hFRU5DT0xPUk1BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNoZWVuQ29sb3JNYXA7CgkjZW5kaWYKCSNpZmRlZiBVU0VfU0hFRU5ST1VHSE5FU1NNQVAKCQl1bmlmb3JtIHNhbXBsZXIyRCBzaGVlblJvdWdobmVzc01hcDsKCSNlbmRpZgojZW5kaWYKdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxic2Rmcz4KI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGVhcmNvYXRfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCVJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7Cgl2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8cm91Z2huZXNzbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1ldGFsbmVzc21hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+CgkjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM+CgkjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPgoJI2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PgoJdmVjMyB0b3RhbERpZmZ1c2UgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlOwoJdmVjMyB0b3RhbFNwZWN1bGFyID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyOwoJI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD4KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHRvdGFsRGlmZnVzZSArIHRvdGFsU3BlY3VsYXIgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7CgkjaWZkZWYgVVNFX1NIRUVOCgkJZmxvYXQgc2hlZW5FbmVyZ3lDb21wID0gMS4wIC0gMC4xNTcgKiBtYXgzKCBtYXRlcmlhbC5zaGVlbkNvbG9yICk7CgkJb3V0Z29pbmdMaWdodCA9IG91dGdvaW5nTGlnaHQgKiBzaGVlbkVuZXJneUNvbXAgKyBzaGVlblNwZWN1bGFyOwoJI2VuZGlmCgkjaWZkZWYgVVNFX0NMRUFSQ09BVAoJCWZsb2F0IGRvdE5WY2MgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApOwoJCXZlYzMgRmNjID0gRl9TY2hsaWNrKCBtYXRlcmlhbC5jbGVhcmNvYXRGMCwgbWF0ZXJpYWwuY2xlYXJjb2F0RjkwLCBkb3ROVmNjICk7CgkJb3V0Z29pbmdMaWdodCA9IG91dGdvaW5nTGlnaHQgKiAoIDEuMCAtIG1hdGVyaWFsLmNsZWFyY29hdCAqIEZjYyApICsgY2xlYXJjb2F0U3BlY3VsYXIgKiBtYXRlcmlhbC5jbGVhcmNvYXQ7CgkjZW5kaWYKCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAsVDE9YCNkZWZpbmUgVE9PTgp2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8dXYyX3ZlcnRleD4KCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJdlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsQTE9YCNkZWZpbmUgVE9PTgp1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSB2ZWMzIGVtaXNzaXZlOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxic2Rmcz4KI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTsKCXZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+CgkjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX3Rvb25fZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+CgkjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlOwoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50Pgp9YCxDMT1gdW5pZm9ybSBmbG9hdCBzaXplOwp1bmlmb3JtIGZsb2F0IHNjYWxlOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CglnbF9Qb2ludFNpemUgPSBzaXplOwoJI2lmZGVmIFVTRV9TSVpFQVRURU5VQVRJT04KCQlib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7CgkJaWYgKCBpc1BlcnNwZWN0aXZlICkgZ2xfUG9pbnRTaXplICo9ICggc2NhbGUgLyAtIG12UG9zaXRpb24ueiApOwoJI2VuZGlmCgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLFIxPWB1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApOwoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX3BhcnRpY2xlX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCW91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiOwoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+Cn1gLEwxPWAjaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD4KCSNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLFAxPWB1bmlmb3JtIHZlYzMgY29sb3I7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJZ2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IsIG9wYWNpdHkgKiAoIDEuMCAtIGdldFNoYWRvd01hc2soKSApICk7CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KfWAsRDE9YHVuaWZvcm0gZmxvYXQgcm90YXRpb247CnVuaWZvcm0gdmVjMiBjZW50ZXI7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJdmVjNCBtdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7Cgl2ZWMyIHNjYWxlOwoJc2NhbGUueCA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDAgXS54LCBtb2RlbE1hdHJpeFsgMCBdLnksIG1vZGVsTWF0cml4WyAwIF0ueiApICk7CglzY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLngsIG1vZGVsTWF0cml4WyAxIF0ueSwgbW9kZWxNYXRyaXhbIDEgXS56ICkgKTsKCSNpZm5kZWYgVVNFX1NJWkVBVFRFTlVBVElPTgoJCWJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTsKCQlpZiAoIGlzUGVyc3BlY3RpdmUgKSBzY2FsZSAqPSAtIG12UG9zaXRpb24uejsKCSNlbmRpZgoJdmVjMiBhbGlnbmVkUG9zaXRpb24gPSAoIHBvc2l0aW9uLnh5IC0gKCBjZW50ZXIgLSB2ZWMyKCAwLjUgKSApICkgKiBzY2FsZTsKCXZlYzIgcm90YXRlZFBvc2l0aW9uOwoJcm90YXRlZFBvc2l0aW9uLnggPSBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCAtIHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55OwoJcm90YXRlZFBvc2l0aW9uLnkgPSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCArIGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55OwoJbXZQb3NpdGlvbi54eSArPSByb3RhdGVkUG9zaXRpb247CglnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLEkxPWB1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTsKCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CglvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjsKCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KfWAsUHQ9e2FscGhhbWFwX2ZyYWdtZW50OmxNLGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ6Y00sYWxwaGF0ZXN0X2ZyYWdtZW50OnVNLGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50OmhNLGFvbWFwX2ZyYWdtZW50OmZNLGFvbWFwX3BhcnNfZnJhZ21lbnQ6ZE0sYmVnaW5fdmVydGV4OnBNLGJlZ2lubm9ybWFsX3ZlcnRleDptTSxic2RmczpnTSxidW1wbWFwX3BhcnNfZnJhZ21lbnQ6eE0sY2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50OnlNLGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50OnZNLGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleDpfTSxjbGlwcGluZ19wbGFuZXNfdmVydGV4OndNLGNvbG9yX2ZyYWdtZW50Ok1NLGNvbG9yX3BhcnNfZnJhZ21lbnQ6Yk0sY29sb3JfcGFyc192ZXJ0ZXg6U00sY29sb3JfdmVydGV4OkVNLGNvbW1vbjpUTSxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ6QU0sZGVmYXVsdG5vcm1hbF92ZXJ0ZXg6Q00sZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4OlJNLGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg6TE0sZW1pc3NpdmVtYXBfZnJhZ21lbnQ6UE0sZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudDpETSxlbmNvZGluZ3NfZnJhZ21lbnQ6SU0sZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ6Tk0sZW52bWFwX2ZyYWdtZW50OkZNLGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudDp6TSxlbnZtYXBfcGFyc19mcmFnbWVudDpVTSxlbnZtYXBfcGFyc192ZXJ0ZXg6Qk0sZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6Sk0sZW52bWFwX3ZlcnRleDpPTSxmb2dfdmVydGV4OmtNLGZvZ19wYXJzX3ZlcnRleDpITSxmb2dfZnJhZ21lbnQ6Vk0sZm9nX3BhcnNfZnJhZ21lbnQ6R00sZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudDpXTSxsaWdodG1hcF9mcmFnbWVudDpxTSxsaWdodG1hcF9wYXJzX2ZyYWdtZW50OlhNLGxpZ2h0c19sYW1iZXJ0X3ZlcnRleDpZTSxsaWdodHNfcGFyc19iZWdpbjpaTSxsaWdodHNfdG9vbl9mcmFnbWVudDokTSxsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50OktNLGxpZ2h0c19waG9uZ19mcmFnbWVudDpRTSxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudDpqTSxsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ6dGIsbGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6ZWIsbGlnaHRzX2ZyYWdtZW50X2JlZ2luOm5iLGxpZ2h0c19mcmFnbWVudF9tYXBzOmliLGxpZ2h0c19mcmFnbWVudF9lbmQ6cmIsbG9nZGVwdGhidWZfZnJhZ21lbnQ6c2IsbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudDpvYixsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleDphYixsb2dkZXB0aGJ1Zl92ZXJ0ZXg6bGIsbWFwX2ZyYWdtZW50OmNiLG1hcF9wYXJzX2ZyYWdtZW50OnViLG1hcF9wYXJ0aWNsZV9mcmFnbWVudDpoYixtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudDpmYixtZXRhbG5lc3NtYXBfZnJhZ21lbnQ6ZGIsbWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ6cGIsbW9ycGhub3JtYWxfdmVydGV4Om1iLG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4OmdiLG1vcnBodGFyZ2V0X3ZlcnRleDp4Yixub3JtYWxfZnJhZ21lbnRfYmVnaW46eWIsbm9ybWFsX2ZyYWdtZW50X21hcHM6dmIsbm9ybWFsX3BhcnNfZnJhZ21lbnQ6X2Isbm9ybWFsX3BhcnNfdmVydGV4OndiLG5vcm1hbF92ZXJ0ZXg6TWIsbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6YmIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbjpTYixjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM6RWIsY2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ6VGIsb3V0cHV0X2ZyYWdtZW50OkFiLHBhY2tpbmc6Q2IscHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudDpSYixwcm9qZWN0X3ZlcnRleDpMYixkaXRoZXJpbmdfZnJhZ21lbnQ6UGIsZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ6RGIscm91Z2huZXNzbWFwX2ZyYWdtZW50OkliLHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50Ok5iLHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50OkZiLHNoYWRvd21hcF9wYXJzX3ZlcnRleDp6YixzaGFkb3dtYXBfdmVydGV4OlViLHNoYWRvd21hc2tfcGFyc19mcmFnbWVudDpCYixza2luYmFzZV92ZXJ0ZXg6T2Isc2tpbm5pbmdfcGFyc192ZXJ0ZXg6a2Isc2tpbm5pbmdfdmVydGV4OkhiLHNraW5ub3JtYWxfdmVydGV4OlZiLHNwZWN1bGFybWFwX2ZyYWdtZW50OkdiLHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ6V2IsdG9uZW1hcHBpbmdfZnJhZ21lbnQ6cWIsdG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDpYYix0cmFuc21pc3Npb25fZnJhZ21lbnQ6WWIsdHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ6WmIsdXZfcGFyc19mcmFnbWVudDpKYix1dl9wYXJzX3ZlcnRleDokYix1dl92ZXJ0ZXg6S2IsdXYyX3BhcnNfZnJhZ21lbnQ6UWIsdXYyX3BhcnNfdmVydGV4OmpiLHV2Ml92ZXJ0ZXg6dDEsd29ybGRwb3NfdmVydGV4OmUxLGJhY2tncm91bmRfdmVydDpuMSxiYWNrZ3JvdW5kX2ZyYWc6aTEsY3ViZV92ZXJ0OnIxLGN1YmVfZnJhZzpzMSxkZXB0aF92ZXJ0Om8xLGRlcHRoX2ZyYWc6YTEsZGlzdGFuY2VSR0JBX3ZlcnQ6bDEsZGlzdGFuY2VSR0JBX2ZyYWc6YzEsZXF1aXJlY3RfdmVydDp1MSxlcXVpcmVjdF9mcmFnOmgxLGxpbmVkYXNoZWRfdmVydDpmMSxsaW5lZGFzaGVkX2ZyYWc6ZDEsbWVzaGJhc2ljX3ZlcnQ6cDEsbWVzaGJhc2ljX2ZyYWc6bTEsbWVzaGxhbWJlcnRfdmVydDpnMSxtZXNobGFtYmVydF9mcmFnOngxLG1lc2htYXRjYXBfdmVydDp5MSxtZXNobWF0Y2FwX2ZyYWc6djEsbWVzaG5vcm1hbF92ZXJ0Ol8xLG1lc2hub3JtYWxfZnJhZzp3MSxtZXNocGhvbmdfdmVydDpNMSxtZXNocGhvbmdfZnJhZzpiMSxtZXNocGh5c2ljYWxfdmVydDpTMSxtZXNocGh5c2ljYWxfZnJhZzpFMSxtZXNodG9vbl92ZXJ0OlQxLG1lc2h0b29uX2ZyYWc6QTEscG9pbnRzX3ZlcnQ6QzEscG9pbnRzX2ZyYWc6UjEsc2hhZG93X3ZlcnQ6TDEsc2hhZG93X2ZyYWc6UDEsc3ByaXRlX3ZlcnQ6RDEsc3ByaXRlX2ZyYWc6STF9LG90PXtjb21tb246e2RpZmZ1c2U6e3ZhbHVlOm5ldyBmdCgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBkZX0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgZGV9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSxhbHBoYVRlc3Q6e3ZhbHVlOjB9fSxzcGVjdWxhcm1hcDp7c3BlY3VsYXJNYXA6e3ZhbHVlOm51bGx9fSxlbnZtYXA6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9LHJlZmxlY3Rpdml0eTp7dmFsdWU6MX0saW9yOnt2YWx1ZToxLjV9LHJlZnJhY3Rpb25SYXRpbzp7dmFsdWU6Ljk4fX0sYW9tYXA6e2FvTWFwOnt2YWx1ZTpudWxsfSxhb01hcEludGVuc2l0eTp7dmFsdWU6MX19LGxpZ2h0bWFwOntsaWdodE1hcDp7dmFsdWU6bnVsbH0sbGlnaHRNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxlbWlzc2l2ZW1hcDp7ZW1pc3NpdmVNYXA6e3ZhbHVlOm51bGx9fSxidW1wbWFwOntidW1wTWFwOnt2YWx1ZTpudWxsfSxidW1wU2NhbGU6e3ZhbHVlOjF9fSxub3JtYWxtYXA6e25vcm1hbE1hcDp7dmFsdWU6bnVsbH0sbm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBLKDEsMSl9fSxkaXNwbGFjZW1lbnRtYXA6e2Rpc3BsYWNlbWVudE1hcDp7dmFsdWU6bnVsbH0sZGlzcGxhY2VtZW50U2NhbGU6e3ZhbHVlOjF9LGRpc3BsYWNlbWVudEJpYXM6e3ZhbHVlOjB9fSxyb3VnaG5lc3NtYXA6e3JvdWdobmVzc01hcDp7dmFsdWU6bnVsbH19LG1ldGFsbmVzc21hcDp7bWV0YWxuZXNzTWFwOnt2YWx1ZTpudWxsfX0sZ3JhZGllbnRtYXA6e2dyYWRpZW50TWFwOnt2YWx1ZTpudWxsfX0sZm9nOntmb2dEZW5zaXR5Ont2YWx1ZToyNWUtNX0sZm9nTmVhcjp7dmFsdWU6MX0sZm9nRmFyOnt2YWx1ZToyZTN9LGZvZ0NvbG9yOnt2YWx1ZTpuZXcgZnQoMTY3NzcyMTUpfX0sbGlnaHRzOnthbWJpZW50TGlnaHRDb2xvcjp7dmFsdWU6W119LGxpZ2h0UHJvYmU6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LGNvbG9yOnt9fX0sZGlyZWN0aW9uYWxMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LGRpcmVjdGlvbmFsU2hhZG93TWFwOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxzcG90TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkaXJlY3Rpb246e30sZGlzdGFuY2U6e30sY29uZUNvczp7fSxwZW51bWJyYUNvczp7fSxkZWNheTp7fX19LHNwb3RMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LHNwb3RTaGFkb3dNYXA6e3ZhbHVlOltdfSxzcG90U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0scG9pbnRMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRlY2F5Ont9LGRpc3RhbmNlOnt9fX0scG9pbnRMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fSxzaGFkb3dDYW1lcmFOZWFyOnt9LHNoYWRvd0NhbWVyYUZhcjp7fX19LHBvaW50U2hhZG93TWFwOnt2YWx1ZTpbXX0scG9pbnRTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxoZW1pc3BoZXJlTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sc2t5Q29sb3I6e30sZ3JvdW5kQ29sb3I6e319fSxyZWN0QXJlYUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sd2lkdGg6e30saGVpZ2h0Ont9fX0sbHRjXzE6e3ZhbHVlOm51bGx9LGx0Y18yOnt2YWx1ZTpudWxsfX0scG9pbnRzOntkaWZmdXNlOnt2YWx1ZTpuZXcgZnQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxzaXplOnt2YWx1ZToxfSxzY2FsZTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sYWxwaGFUZXN0Ont2YWx1ZTowfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IGRlfX0sc3ByaXRlOntkaWZmdXNlOnt2YWx1ZTpuZXcgZnQoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBLKC41LC41KX0scm90YXRpb246e3ZhbHVlOjB9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LGFscGhhVGVzdDp7dmFsdWU6MH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBkZX19fSxmbj17YmFzaWM6e3VuaWZvcm1zOk1lKFtvdC5jb21tb24sb3Quc3BlY3VsYXJtYXAsb3QuZW52bWFwLG90LmFvbWFwLG90LmxpZ2h0bWFwLG90LmZvZ10pLHZlcnRleFNoYWRlcjpQdC5tZXNoYmFzaWNfdmVydCxmcmFnbWVudFNoYWRlcjpQdC5tZXNoYmFzaWNfZnJhZ30sbGFtYmVydDp7dW5pZm9ybXM6TWUoW290LmNvbW1vbixvdC5zcGVjdWxhcm1hcCxvdC5lbnZtYXAsb3QuYW9tYXAsb3QubGlnaHRtYXAsb3QuZW1pc3NpdmVtYXAsb3QuZm9nLG90LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBmdCgwKX19XSksdmVydGV4U2hhZGVyOlB0Lm1lc2hsYW1iZXJ0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6UHQubWVzaGxhbWJlcnRfZnJhZ30scGhvbmc6e3VuaWZvcm1zOk1lKFtvdC5jb21tb24sb3Quc3BlY3VsYXJtYXAsb3QuZW52bWFwLG90LmFvbWFwLG90LmxpZ2h0bWFwLG90LmVtaXNzaXZlbWFwLG90LmJ1bXBtYXAsb3Qubm9ybWFsbWFwLG90LmRpc3BsYWNlbWVudG1hcCxvdC5mb2csb3QubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IGZ0KDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IGZ0KDExMTg0ODEpfSxzaGluaW5lc3M6e3ZhbHVlOjMwfX1dKSx2ZXJ0ZXhTaGFkZXI6UHQubWVzaHBob25nX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UHQubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3JtczpNZShbb3QuY29tbW9uLG90LmVudm1hcCxvdC5hb21hcCxvdC5saWdodG1hcCxvdC5lbWlzc2l2ZW1hcCxvdC5idW1wbWFwLG90Lm5vcm1hbG1hcCxvdC5kaXNwbGFjZW1lbnRtYXAsb3Qucm91Z2huZXNzbWFwLG90Lm1ldGFsbmVzc21hcCxvdC5mb2csb3QubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IGZ0KDApfSxyb3VnaG5lc3M6e3ZhbHVlOjF9LG1ldGFsbmVzczp7dmFsdWU6MH0sZW52TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6UHQubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UHQubWVzaHBoeXNpY2FsX2ZyYWd9LHRvb246e3VuaWZvcm1zOk1lKFtvdC5jb21tb24sb3QuYW9tYXAsb3QubGlnaHRtYXAsb3QuZW1pc3NpdmVtYXAsb3QuYnVtcG1hcCxvdC5ub3JtYWxtYXAsb3QuZGlzcGxhY2VtZW50bWFwLG90LmdyYWRpZW50bWFwLG90LmZvZyxvdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgZnQoMCl9fV0pLHZlcnRleFNoYWRlcjpQdC5tZXNodG9vbl92ZXJ0LGZyYWdtZW50U2hhZGVyOlB0Lm1lc2h0b29uX2ZyYWd9LG1hdGNhcDp7dW5pZm9ybXM6TWUoW290LmNvbW1vbixvdC5idW1wbWFwLG90Lm5vcm1hbG1hcCxvdC5kaXNwbGFjZW1lbnRtYXAsb3QuZm9nLHttYXRjYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpQdC5tZXNobWF0Y2FwX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UHQubWVzaG1hdGNhcF9mcmFnfSxwb2ludHM6e3VuaWZvcm1zOk1lKFtvdC5wb2ludHMsb3QuZm9nXSksdmVydGV4U2hhZGVyOlB0LnBvaW50c192ZXJ0LGZyYWdtZW50U2hhZGVyOlB0LnBvaW50c19mcmFnfSxkYXNoZWQ6e3VuaWZvcm1zOk1lKFtvdC5jb21tb24sb3QuZm9nLHtzY2FsZTp7dmFsdWU6MX0sZGFzaFNpemU6e3ZhbHVlOjF9LHRvdGFsU2l6ZTp7dmFsdWU6Mn19XSksdmVydGV4U2hhZGVyOlB0LmxpbmVkYXNoZWRfdmVydCxmcmFnbWVudFNoYWRlcjpQdC5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3JtczpNZShbb3QuY29tbW9uLG90LmRpc3BsYWNlbWVudG1hcF0pLHZlcnRleFNoYWRlcjpQdC5kZXB0aF92ZXJ0LGZyYWdtZW50U2hhZGVyOlB0LmRlcHRoX2ZyYWd9LG5vcm1hbDp7dW5pZm9ybXM6TWUoW290LmNvbW1vbixvdC5idW1wbWFwLG90Lm5vcm1hbG1hcCxvdC5kaXNwbGFjZW1lbnRtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpQdC5tZXNobm9ybWFsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UHQubWVzaG5vcm1hbF9mcmFnfSxzcHJpdGU6e3VuaWZvcm1zOk1lKFtvdC5zcHJpdGUsb3QuZm9nXSksdmVydGV4U2hhZGVyOlB0LnNwcml0ZV92ZXJ0LGZyYWdtZW50U2hhZGVyOlB0LnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBkZX0sdDJEOnt2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOlB0LmJhY2tncm91bmRfdmVydCxmcmFnbWVudFNoYWRlcjpQdC5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOk1lKFtvdC5lbnZtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpQdC5jdWJlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UHQuY3ViZV9mcmFnfSxlcXVpcmVjdDp7dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpQdC5lcXVpcmVjdF92ZXJ0LGZyYWdtZW50U2hhZGVyOlB0LmVxdWlyZWN0X2ZyYWd9LGRpc3RhbmNlUkdCQTp7dW5pZm9ybXM6TWUoW290LmNvbW1vbixvdC5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgVH0sbmVhckRpc3RhbmNlOnt2YWx1ZToxfSxmYXJEaXN0YW5jZTp7dmFsdWU6MWUzfX1dKSx2ZXJ0ZXhTaGFkZXI6UHQuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6UHQuZGlzdGFuY2VSR0JBX2ZyYWd9LHNoYWRvdzp7dW5pZm9ybXM6TWUoW290LmxpZ2h0cyxvdC5mb2cse2NvbG9yOnt2YWx1ZTpuZXcgZnQoMCl9LG9wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpQdC5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjpQdC5zaGFkb3dfZnJhZ319O2ZuLnBoeXNpY2FsPXt1bmlmb3JtczpNZShbZm4uc3RhbmRhcmQudW5pZm9ybXMse2NsZWFyY29hdDp7dmFsdWU6MH0sY2xlYXJjb2F0TWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXRSb3VnaG5lc3M6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Tm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBLKDEsMSl9LGNsZWFyY29hdE5vcm1hbE1hcDp7dmFsdWU6bnVsbH0sc2hlZW46e3ZhbHVlOjB9LHNoZWVuQ29sb3I6e3ZhbHVlOm5ldyBmdCgwKX0sc2hlZW5Db2xvck1hcDp7dmFsdWU6bnVsbH0sc2hlZW5Sb3VnaG5lc3M6e3ZhbHVlOjF9LHNoZWVuUm91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfSx0cmFuc21pc3Npb246e3ZhbHVlOjB9LHRyYW5zbWlzc2lvbk1hcDp7dmFsdWU6bnVsbH0sdHJhbnNtaXNzaW9uU2FtcGxlclNpemU6e3ZhbHVlOm5ldyBLfSx0cmFuc21pc3Npb25TYW1wbGVyTWFwOnt2YWx1ZTpudWxsfSx0aGlja25lc3M6e3ZhbHVlOjB9LHRoaWNrbmVzc01hcDp7dmFsdWU6bnVsbH0sYXR0ZW51YXRpb25EaXN0YW5jZTp7dmFsdWU6MH0sYXR0ZW51YXRpb25Db2xvcjp7dmFsdWU6bmV3IGZ0KDApfSxzcGVjdWxhckludGVuc2l0eTp7dmFsdWU6MX0sc3BlY3VsYXJJbnRlbnNpdHlNYXA6e3ZhbHVlOm51bGx9LHNwZWN1bGFyQ29sb3I6e3ZhbHVlOm5ldyBmdCgxLDEsMSl9LHNwZWN1bGFyQ29sb3JNYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpQdC5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpQdC5tZXNocGh5c2ljYWxfZnJhZ307ZnVuY3Rpb24gTjEobix0LGUsaSxyLHMpe2xldCBvPW5ldyBmdCgwKSxhPXI9PT0hMD8wOjEsbCxjLHU9bnVsbCxoPTAsZj1udWxsO2Z1bmN0aW9uIGQoeCx2KXtsZXQgbT0hMSxwPXYuaXNTY2VuZT09PSEwP3YuYmFja2dyb3VuZDpudWxsO3AmJnAuaXNUZXh0dXJlJiYocD10LmdldChwKSk7bGV0IGI9bi54cixfPWIuZ2V0U2Vzc2lvbiYmYi5nZXRTZXNzaW9uKCk7XyYmXy5lbnZpcm9ubWVudEJsZW5kTW9kZT09PSJhZGRpdGl2ZSImJihwPW51bGwpLHA9PT1udWxsP2cobyxhKTpwJiZwLmlzQ29sb3ImJihnKHAsMSksbT0hMCksKG4uYXV0b0NsZWFyfHxtKSYmbi5jbGVhcihuLmF1dG9DbGVhckNvbG9yLG4uYXV0b0NsZWFyRGVwdGgsbi5hdXRvQ2xlYXJTdGVuY2lsKSxwJiYocC5pc0N1YmVUZXh0dXJlfHxwLm1hcHBpbmc9PT1DbCk/KGM9PT12b2lkIDAmJihjPW5ldyBvZShuZXcga2koMSwxLDEpLG5ldyBGbih7bmFtZToiQmFja2dyb3VuZEN1YmVNYXRlcmlhbCIsdW5pZm9ybXM6VnIoZm4uY3ViZS51bmlmb3JtcyksdmVydGV4U2hhZGVyOmZuLmN1YmUudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOmZuLmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZTpoZSxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSksYy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLGMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJ1diIpLGMub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24oUyxMLEEpe3RoaXMubWF0cml4V29ybGQuY29weVBvc2l0aW9uKEEubWF0cml4V29ybGQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5tYXRlcmlhbCwiZW52TWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMuZW52TWFwLnZhbHVlfX0pLGkudXBkYXRlKGMpKSxjLm1hdGVyaWFsLnVuaWZvcm1zLmVudk1hcC52YWx1ZT1wLGMubWF0ZXJpYWwudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT1wLmlzQ3ViZVRleHR1cmUmJnAuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPT09ITE/LTE6MSwodSE9PXB8fGghPT1wLnZlcnNpb258fGYhPT1uLnRvbmVNYXBwaW5nKSYmKGMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsdT1wLGg9cC52ZXJzaW9uLGY9bi50b25lTWFwcGluZykseC51bnNoaWZ0KGMsYy5nZW9tZXRyeSxjLm1hdGVyaWFsLDAsMCxudWxsKSk6cCYmcC5pc1RleHR1cmUmJihsPT09dm9pZCAwJiYobD1uZXcgb2UobmV3IGFvKDIsMiksbmV3IEZuKHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOlZyKGZuLmJhY2tncm91bmQudW5pZm9ybXMpLHZlcnRleFNoYWRlcjpmbi5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpmbi5iYWNrZ3JvdW5kLmZyYWdtZW50U2hhZGVyLHNpZGU6dG8sZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLGwuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLGkudXBkYXRlKGwpKSxsLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT1wLHAubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZwLnVwZGF0ZU1hdHJpeCgpLGwubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weShwLm1hdHJpeCksKHUhPT1wfHxoIT09cC52ZXJzaW9ufHxmIT09bi50b25lTWFwcGluZykmJihsLm1hdGVyaWFsLm5lZWRzVXBkYXRlPSEwLHU9cCxoPXAudmVyc2lvbixmPW4udG9uZU1hcHBpbmcpLHgudW5zaGlmdChsLGwuZ2VvbWV0cnksbC5tYXRlcmlhbCwwLDAsbnVsbCkpfWZ1bmN0aW9uIGcoeCx2KXtlLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoeC5yLHguZyx4LmIsdixzKX1yZXR1cm57Z2V0Q2xlYXJDb2xvcjpmdW5jdGlvbigpe3JldHVybiBvfSxzZXRDbGVhckNvbG9yOmZ1bmN0aW9uKHgsdj0xKXtvLnNldCh4KSxhPXYsZyhvLGEpfSxnZXRDbGVhckFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LHNldENsZWFyQWxwaGE6ZnVuY3Rpb24oeCl7YT14LGcobyxhKX0scmVuZGVyOmR9fWZ1bmN0aW9uIEYxKG4sdCxlLGkpe2xldCByPW4uZ2V0UGFyYW1ldGVyKDM0OTIxKSxzPWkuaXNXZWJHTDI/bnVsbDp0LmdldCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxvPWkuaXNXZWJHTDJ8fHMhPT1udWxsLGE9e30sbD14KG51bGwpLGM9bDtmdW5jdGlvbiB1KEQsRix6LE4sVil7bGV0IFE9ITE7aWYobyl7bGV0IGF0PWcoTix6LEYpO2MhPT1hdCYmKGM9YXQsZihjLm9iamVjdCkpLFE9dihOLFYpLFEmJm0oTixWKX1lbHNle2xldCBhdD1GLndpcmVmcmFtZT09PSEwOyhjLmdlb21ldHJ5IT09Ti5pZHx8Yy5wcm9ncmFtIT09ei5pZHx8Yy53aXJlZnJhbWUhPT1hdCkmJihjLmdlb21ldHJ5PU4uaWQsYy5wcm9ncmFtPXouaWQsYy53aXJlZnJhbWU9YXQsUT0hMCl9RC5pc0luc3RhbmNlZE1lc2g9PT0hMCYmKFE9ITApLFYhPT1udWxsJiZlLnVwZGF0ZShWLDM0OTYzKSxRJiYoQShELEYseixOKSxWIT09bnVsbCYmbi5iaW5kQnVmZmVyKDM0OTYzLGUuZ2V0KFYpLmJ1ZmZlcikpfWZ1bmN0aW9uIGgoKXtyZXR1cm4gaS5pc1dlYkdMMj9uLmNyZWF0ZVZlcnRleEFycmF5KCk6cy5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpfWZ1bmN0aW9uIGYoRCl7cmV0dXJuIGkuaXNXZWJHTDI/bi5iaW5kVmVydGV4QXJyYXkoRCk6cy5iaW5kVmVydGV4QXJyYXlPRVMoRCl9ZnVuY3Rpb24gZChEKXtyZXR1cm4gaS5pc1dlYkdMMj9uLmRlbGV0ZVZlcnRleEFycmF5KEQpOnMuZGVsZXRlVmVydGV4QXJyYXlPRVMoRCl9ZnVuY3Rpb24gZyhELEYseil7bGV0IE49ei53aXJlZnJhbWU9PT0hMCxWPWFbRC5pZF07Vj09PXZvaWQgMCYmKFY9e30sYVtELmlkXT1WKTtsZXQgUT1WW0YuaWRdO1E9PT12b2lkIDAmJihRPXt9LFZbRi5pZF09USk7bGV0IGF0PVFbTl07cmV0dXJuIGF0PT09dm9pZCAwJiYoYXQ9eChoKCkpLFFbTl09YXQpLGF0fWZ1bmN0aW9uIHgoRCl7bGV0IEY9W10sej1bXSxOPVtdO2ZvcihsZXQgVj0wO1Y8cjtWKyspRltWXT0wLHpbVl09MCxOW1ZdPTA7cmV0dXJue2dlb21ldHJ5Om51bGwscHJvZ3JhbTpudWxsLHdpcmVmcmFtZTohMSxuZXdBdHRyaWJ1dGVzOkYsZW5hYmxlZEF0dHJpYnV0ZXM6eixhdHRyaWJ1dGVEaXZpc29yczpOLG9iamVjdDpELGF0dHJpYnV0ZXM6e30saW5kZXg6bnVsbH19ZnVuY3Rpb24gdihELEYpe2xldCB6PWMuYXR0cmlidXRlcyxOPUQuYXR0cmlidXRlcyxWPTA7Zm9yKGxldCBRIGluIE4pe2xldCBhdD16W1FdLEc9TltRXTtpZihhdD09PXZvaWQgMHx8YXQuYXR0cmlidXRlIT09R3x8YXQuZGF0YSE9PUcuZGF0YSlyZXR1cm4hMDtWKyt9cmV0dXJuIGMuYXR0cmlidXRlc051bSE9PVZ8fGMuaW5kZXghPT1GfWZ1bmN0aW9uIG0oRCxGKXtsZXQgej17fSxOPUQuYXR0cmlidXRlcyxWPTA7Zm9yKGxldCBRIGluIE4pe2xldCBhdD1OW1FdLEc9e307Ry5hdHRyaWJ1dGU9YXQsYXQuZGF0YSYmKEcuZGF0YT1hdC5kYXRhKSx6W1FdPUcsVisrfWMuYXR0cmlidXRlcz16LGMuYXR0cmlidXRlc051bT1WLGMuaW5kZXg9Rn1mdW5jdGlvbiBwKCl7bGV0IEQ9Yy5uZXdBdHRyaWJ1dGVzO2ZvcihsZXQgRj0wLHo9RC5sZW5ndGg7Rjx6O0YrKylEW0ZdPTB9ZnVuY3Rpb24gYihEKXtfKEQsMCl9ZnVuY3Rpb24gXyhELEYpe2xldCB6PWMubmV3QXR0cmlidXRlcyxOPWMuZW5hYmxlZEF0dHJpYnV0ZXMsVj1jLmF0dHJpYnV0ZURpdmlzb3JzO3pbRF09MSxOW0RdPT09MCYmKG4uZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoRCksTltEXT0xKSxWW0RdIT09RiYmKChpLmlzV2ViR0wyP246dC5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlbaS5pc1dlYkdMMj8idmVydGV4QXR0cmliRGl2aXNvciI6InZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSJdKEQsRiksVltEXT1GKX1mdW5jdGlvbiBTKCl7bGV0IEQ9Yy5uZXdBdHRyaWJ1dGVzLEY9Yy5lbmFibGVkQXR0cmlidXRlcztmb3IobGV0IHo9MCxOPUYubGVuZ3RoO3o8Tjt6KyspRlt6XSE9PURbel0mJihuLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh6KSxGW3pdPTApfWZ1bmN0aW9uIEwoRCxGLHosTixWLFEpe2kuaXNXZWJHTDI9PT0hMCYmKHo9PT01MTI0fHx6PT09NTEyNSk/bi52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihELEYseixWLFEpOm4udmVydGV4QXR0cmliUG9pbnRlcihELEYseixOLFYsUSl9ZnVuY3Rpb24gQShELEYseixOKXtpZihpLmlzV2ViR0wyPT09ITEmJihELmlzSW5zdGFuY2VkTWVzaHx8Ti5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KSYmdC5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKT09PW51bGwpcmV0dXJuO3AoKTtsZXQgVj1OLmF0dHJpYnV0ZXMsUT16LmdldEF0dHJpYnV0ZXMoKSxhdD1GLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGxldCBHIGluIFEpe2xldCAkPVFbR107aWYoJC5sb2NhdGlvbj49MCl7bGV0IGx0PVZbR107aWYobHQ9PT12b2lkIDAmJihHPT09Imluc3RhbmNlTWF0cml4IiYmRC5pbnN0YW5jZU1hdHJpeCYmKGx0PUQuaW5zdGFuY2VNYXRyaXgpLEc9PT0iaW5zdGFuY2VDb2xvciImJkQuaW5zdGFuY2VDb2xvciYmKGx0PUQuaW5zdGFuY2VDb2xvcikpLGx0IT09dm9pZCAwKXtsZXQgZHQ9bHQubm9ybWFsaXplZCx4dD1sdC5pdGVtU2l6ZSxrPWUuZ2V0KGx0KTtpZihrPT09dm9pZCAwKWNvbnRpbnVlO2xldCBGdD1rLmJ1ZmZlcixtdD1rLnR5cGUsU3Q9ay5ieXRlc1BlckVsZW1lbnQ7aWYobHQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7bGV0IEI9bHQuZGF0YSxzdD1CLnN0cmlkZSxudD1sdC5vZmZzZXQ7aWYoQiYmQi5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyKXtmb3IobGV0IEM9MDtDPCQubG9jYXRpb25TaXplO0MrKylfKCQubG9jYXRpb24rQyxCLm1lc2hQZXJBdHRyaWJ1dGUpO0QuaXNJbnN0YW5jZWRNZXNoIT09ITAmJk4uX21heEluc3RhbmNlQ291bnQ9PT12b2lkIDAmJihOLl9tYXhJbnN0YW5jZUNvdW50PUIubWVzaFBlckF0dHJpYnV0ZSpCLmNvdW50KX1lbHNlIGZvcihsZXQgQz0wO0M8JC5sb2NhdGlvblNpemU7QysrKWIoJC5sb2NhdGlvbitDKTtuLmJpbmRCdWZmZXIoMzQ5NjIsRnQpO2ZvcihsZXQgQz0wO0M8JC5sb2NhdGlvblNpemU7QysrKUwoJC5sb2NhdGlvbitDLHh0LyQubG9jYXRpb25TaXplLG10LGR0LHN0KlN0LChudCt4dC8kLmxvY2F0aW9uU2l6ZSpDKSpTdCl9ZWxzZXtpZihsdC5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSl7Zm9yKGxldCBCPTA7QjwkLmxvY2F0aW9uU2l6ZTtCKyspXygkLmxvY2F0aW9uK0IsbHQubWVzaFBlckF0dHJpYnV0ZSk7RC5pc0luc3RhbmNlZE1lc2ghPT0hMCYmTi5fbWF4SW5zdGFuY2VDb3VudD09PXZvaWQgMCYmKE4uX21heEluc3RhbmNlQ291bnQ9bHQubWVzaFBlckF0dHJpYnV0ZSpsdC5jb3VudCl9ZWxzZSBmb3IobGV0IEI9MDtCPCQubG9jYXRpb25TaXplO0IrKyliKCQubG9jYXRpb24rQik7bi5iaW5kQnVmZmVyKDM0OTYyLEZ0KTtmb3IobGV0IEI9MDtCPCQubG9jYXRpb25TaXplO0IrKylMKCQubG9jYXRpb24rQix4dC8kLmxvY2F0aW9uU2l6ZSxtdCxkdCx4dCpTdCx4dC8kLmxvY2F0aW9uU2l6ZSpCKlN0KX19ZWxzZSBpZihhdCE9PXZvaWQgMCl7bGV0IGR0PWF0W0ddO2lmKGR0IT09dm9pZCAwKXN3aXRjaChkdC5sZW5ndGgpe2Nhc2UgMjpuLnZlcnRleEF0dHJpYjJmdigkLmxvY2F0aW9uLGR0KTticmVhaztjYXNlIDM6bi52ZXJ0ZXhBdHRyaWIzZnYoJC5sb2NhdGlvbixkdCk7YnJlYWs7Y2FzZSA0Om4udmVydGV4QXR0cmliNGZ2KCQubG9jYXRpb24sZHQpO2JyZWFrO2RlZmF1bHQ6bi52ZXJ0ZXhBdHRyaWIxZnYoJC5sb2NhdGlvbixkdCl9fX19UygpfWZ1bmN0aW9uIEgoKXt5KCk7Zm9yKGxldCBEIGluIGEpe2xldCBGPWFbRF07Zm9yKGxldCB6IGluIEYpe2xldCBOPUZbel07Zm9yKGxldCBWIGluIE4pZChOW1ZdLm9iamVjdCksZGVsZXRlIE5bVl07ZGVsZXRlIEZbel19ZGVsZXRlIGFbRF19fWZ1bmN0aW9uIHR0KEQpe2lmKGFbRC5pZF09PT12b2lkIDApcmV0dXJuO2xldCBGPWFbRC5pZF07Zm9yKGxldCB6IGluIEYpe2xldCBOPUZbel07Zm9yKGxldCBWIGluIE4pZChOW1ZdLm9iamVjdCksZGVsZXRlIE5bVl07ZGVsZXRlIEZbel19ZGVsZXRlIGFbRC5pZF19ZnVuY3Rpb24gWChEKXtmb3IobGV0IEYgaW4gYSl7bGV0IHo9YVtGXTtpZih6W0QuaWRdPT09dm9pZCAwKWNvbnRpbnVlO2xldCBOPXpbRC5pZF07Zm9yKGxldCBWIGluIE4pZChOW1ZdLm9iamVjdCksZGVsZXRlIE5bVl07ZGVsZXRlIHpbRC5pZF19fWZ1bmN0aW9uIHkoKXtSKCksYyE9PWwmJihjPWwsZihjLm9iamVjdCkpfWZ1bmN0aW9uIFIoKXtsLmdlb21ldHJ5PW51bGwsbC5wcm9ncmFtPW51bGwsbC53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOnUscmVzZXQ6eSxyZXNldERlZmF1bHRTdGF0ZTpSLGRpc3Bvc2U6SCxyZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeTp0dCxyZWxlYXNlU3RhdGVzT2ZQcm9ncmFtOlgsaW5pdEF0dHJpYnV0ZXM6cCxlbmFibGVBdHRyaWJ1dGU6YixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpTfX1mdW5jdGlvbiB6MShuLHQsZSxpKXtsZXQgcj1pLmlzV2ViR0wyLHM7ZnVuY3Rpb24gbyhjKXtzPWN9ZnVuY3Rpb24gYShjLHUpe24uZHJhd0FycmF5cyhzLGMsdSksZS51cGRhdGUodSxzLDEpfWZ1bmN0aW9uIGwoYyx1LGgpe2lmKGg9PT0wKXJldHVybjtsZXQgZixkO2lmKHIpZj1uLGQ9ImRyYXdBcnJheXNJbnN0YW5jZWQiO2Vsc2UgaWYoZj10LmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLGQ9ImRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIsZj09PW51bGwpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3JldHVybn1mW2RdKHMsYyx1LGgpLGUudXBkYXRlKHUscyxoKX10aGlzLnNldE1vZGU9byx0aGlzLnJlbmRlcj1hLHRoaXMucmVuZGVySW5zdGFuY2VzPWx9ZnVuY3Rpb24gVTEobix0LGUpe2xldCBpO2Z1bmN0aW9uIHIoKXtpZihpIT09dm9pZCAwKXJldHVybiBpO2lmKHQuaGFzKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKT09PSEwKXtsZXQgQT10LmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7aT1uLmdldFBhcmFtZXRlcihBLk1BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCl9ZWxzZSBpPTA7cmV0dXJuIGl9ZnVuY3Rpb24gcyhBKXtpZihBPT09ImhpZ2hwIil7aWYobi5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzgpLnByZWNpc2lvbj4wJiZuLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzOCkucHJlY2lzaW9uPjApcmV0dXJuImhpZ2hwIjtBPSJtZWRpdW1wIn1yZXR1cm4gQT09PSJtZWRpdW1wIiYmbi5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbj4wJiZuLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPjA/Im1lZGl1bXAiOiJsb3dwIn1sZXQgbz10eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCE9InVuZGVmaW5lZCImJm4gaW5zdGFuY2VvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0fHx0eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQhPSJ1bmRlZmluZWQiJiZuIGluc3RhbmNlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQsYT1lLnByZWNpc2lvbiE9PXZvaWQgMD9lLnByZWNpc2lvbjoiaGlnaHAiLGw9cyhhKTtsIT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjoiLGEsIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixsLCJpbnN0ZWFkLiIpLGE9bCk7bGV0IGM9b3x8dC5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHU9ZS5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPT09ITAsaD1uLmdldFBhcmFtZXRlcigzNDkzMCksZj1uLmdldFBhcmFtZXRlcigzNTY2MCksZD1uLmdldFBhcmFtZXRlcigzMzc5KSxnPW4uZ2V0UGFyYW1ldGVyKDM0MDc2KSx4PW4uZ2V0UGFyYW1ldGVyKDM0OTIxKSx2PW4uZ2V0UGFyYW1ldGVyKDM2MzQ3KSxtPW4uZ2V0UGFyYW1ldGVyKDM2MzQ4KSxwPW4uZ2V0UGFyYW1ldGVyKDM2MzQ5KSxiPWY+MCxfPW98fHQuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpLFM9YiYmXyxMPW8/bi5nZXRQYXJhbWV0ZXIoMzYxODMpOjA7cmV0dXJue2lzV2ViR0wyOm8sZHJhd0J1ZmZlcnM6YyxnZXRNYXhBbmlzb3Ryb3B5OnIsZ2V0TWF4UHJlY2lzaW9uOnMscHJlY2lzaW9uOmEsbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjp1LG1heFRleHR1cmVzOmgsbWF4VmVydGV4VGV4dHVyZXM6ZixtYXhUZXh0dXJlU2l6ZTpkLG1heEN1YmVtYXBTaXplOmcsbWF4QXR0cmlidXRlczp4LG1heFZlcnRleFVuaWZvcm1zOnYsbWF4VmFyeWluZ3M6bSxtYXhGcmFnbWVudFVuaWZvcm1zOnAsdmVydGV4VGV4dHVyZXM6YixmbG9hdEZyYWdtZW50VGV4dHVyZXM6XyxmbG9hdFZlcnRleFRleHR1cmVzOlMsbWF4U2FtcGxlczpMfX1mdW5jdGlvbiBCMShuKXtsZXQgdD10aGlzLGU9bnVsbCxpPTAscj0hMSxzPSExLG89bmV3IGplLGE9bmV3IGRlLGw9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O3RoaXMudW5pZm9ybT1sLHRoaXMubnVtUGxhbmVzPTAsdGhpcy5udW1JbnRlcnNlY3Rpb249MCx0aGlzLmluaXQ9ZnVuY3Rpb24oaCxmLGQpe2xldCBnPWgubGVuZ3RoIT09MHx8Znx8aSE9PTB8fHI7cmV0dXJuIHI9ZixlPXUoaCxkLDApLGk9aC5sZW5ndGgsZ30sdGhpcy5iZWdpblNoYWRvd3M9ZnVuY3Rpb24oKXtzPSEwLHUobnVsbCl9LHRoaXMuZW5kU2hhZG93cz1mdW5jdGlvbigpe3M9ITEsYygpfSx0aGlzLnNldFN0YXRlPWZ1bmN0aW9uKGgsZixkKXtsZXQgZz1oLmNsaXBwaW5nUGxhbmVzLHg9aC5jbGlwSW50ZXJzZWN0aW9uLHY9aC5jbGlwU2hhZG93cyxtPW4uZ2V0KGgpO2lmKCFyfHxnPT09bnVsbHx8Zy5sZW5ndGg9PT0wfHxzJiYhdilzP3UobnVsbCk6YygpO2Vsc2V7bGV0IHA9cz8wOmksYj1wKjQsXz1tLmNsaXBwaW5nU3RhdGV8fG51bGw7bC52YWx1ZT1fLF89dShnLGYsYixkKTtmb3IobGV0IFM9MDtTIT09YjsrK1MpX1tTXT1lW1NdO20uY2xpcHBpbmdTdGF0ZT1fLHRoaXMubnVtSW50ZXJzZWN0aW9uPXg/dGhpcy5udW1QbGFuZXM6MCx0aGlzLm51bVBsYW5lcys9cH19O2Z1bmN0aW9uIGMoKXtsLnZhbHVlIT09ZSYmKGwudmFsdWU9ZSxsLm5lZWRzVXBkYXRlPWk+MCksdC5udW1QbGFuZXM9aSx0Lm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIHUoaCxmLGQsZyl7bGV0IHg9aCE9PW51bGw/aC5sZW5ndGg6MCx2PW51bGw7aWYoeCE9PTApe2lmKHY9bC52YWx1ZSxnIT09ITB8fHY9PT1udWxsKXtsZXQgbT1kK3gqNCxwPWYubWF0cml4V29ybGRJbnZlcnNlO2EuZ2V0Tm9ybWFsTWF0cml4KHApLCh2PT09bnVsbHx8di5sZW5ndGg8bSkmJih2PW5ldyBGbG9hdDMyQXJyYXkobSkpO2ZvcihsZXQgYj0wLF89ZDtiIT09eDsrK2IsXys9NClvLmNvcHkoaFtiXSkuYXBwbHlNYXRyaXg0KHAsYSksby5ub3JtYWwudG9BcnJheSh2LF8pLHZbXyszXT1vLmNvbnN0YW50fWwudmFsdWU9dixsLm5lZWRzVXBkYXRlPSEwfXJldHVybiB0Lm51bVBsYW5lcz14LHQubnVtSW50ZXJzZWN0aW9uPTAsdn19ZnVuY3Rpb24gTzEobil7bGV0IHQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gZShvLGEpe3JldHVybiBhPT09RnU/by5tYXBwaW5nPVRvOmE9PT16dSYmKG8ubWFwcGluZz1Bbyksb31mdW5jdGlvbiBpKG8pe2lmKG8mJm8uaXNUZXh0dXJlJiZvLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT09PSExKXtsZXQgYT1vLm1hcHBpbmc7aWYoYT09PUZ1fHxhPT09enUpaWYodC5oYXMobykpe2xldCBsPXQuZ2V0KG8pLnRleHR1cmU7cmV0dXJuIGUobCxvLm1hcHBpbmcpfWVsc2V7bGV0IGw9by5pbWFnZTtpZihsJiZsLmhlaWdodD4wKXtsZXQgYz1uZXcgc2wobC5oZWlnaHQvMik7cmV0dXJuIGMuZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUobixvKSx0LnNldChvLGMpLG8uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsciksZShjLnRleHR1cmUsby5tYXBwaW5nKX1lbHNlIHJldHVybiBudWxsfX1yZXR1cm4gb31mdW5jdGlvbiByKG8pe2xldCBhPW8udGFyZ2V0O2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIscik7bGV0IGw9dC5nZXQoYSk7bCE9PXZvaWQgMCYmKHQuZGVsZXRlKGEpLGwuZGlzcG9zZSgpKX1mdW5jdGlvbiBzKCl7dD1uZXcgV2Vha01hcH1yZXR1cm57Z2V0OmksZGlzcG9zZTpzfX12YXIgSGk9Y2xhc3MgZXh0ZW5kcyBzb3tjb25zdHJ1Y3Rvcih0PS0xLGU9MSxpPTEscj0tMSxzPS4xLG89MmUzKXtzdXBlcigpLHRoaXMudHlwZT0iT3J0aG9ncmFwaGljQ2FtZXJhIix0aGlzLnpvb209MSx0aGlzLnZpZXc9bnVsbCx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PWUsdGhpcy50b3A9aSx0aGlzLmJvdHRvbT1yLHRoaXMubmVhcj1zLHRoaXMuZmFyPW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdGhpcy5sZWZ0PXQubGVmdCx0aGlzLnJpZ2h0PXQucmlnaHQsdGhpcy50b3A9dC50b3AsdGhpcy5ib3R0b209dC5ib3R0b20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLnpvb209dC56b29tLHRoaXMudmlldz10LnZpZXc9PT1udWxsP251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXN9c2V0Vmlld09mZnNldCh0LGUsaSxyLHMsbyl7dGhpcy52aWV3PT09bnVsbCYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PWUsdGhpcy52aWV3Lm9mZnNldFg9aSx0aGlzLnZpZXcub2Zmc2V0WT1yLHRoaXMudmlldy53aWR0aD1zLHRoaXMudmlldy5oZWlnaHQ9byx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jbGVhclZpZXdPZmZzZXQoKXt0aGlzLnZpZXchPT1udWxsJiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKXtsZXQgdD0odGhpcy5yaWdodC10aGlzLmxlZnQpLygyKnRoaXMuem9vbSksZT0odGhpcy50b3AtdGhpcy5ib3R0b20pLygyKnRoaXMuem9vbSksaT0odGhpcy5yaWdodCt0aGlzLmxlZnQpLzIscj0odGhpcy50b3ArdGhpcy5ib3R0b20pLzIscz1pLXQsbz1pK3QsYT1yK2UsbD1yLWU7aWYodGhpcy52aWV3IT09bnVsbCYmdGhpcy52aWV3LmVuYWJsZWQpe2xldCBjPSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvdGhpcy52aWV3LmZ1bGxXaWR0aC90aGlzLnpvb20sdT0odGhpcy50b3AtdGhpcy5ib3R0b20pL3RoaXMudmlldy5mdWxsSGVpZ2h0L3RoaXMuem9vbTtzKz1jKnRoaXMudmlldy5vZmZzZXRYLG89cytjKnRoaXMudmlldy53aWR0aCxhLT11KnRoaXMudmlldy5vZmZzZXRZLGw9YS11KnRoaXMudmlldy5oZWlnaHR9dGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VPcnRob2dyYXBoaWMocyxvLGEsbCx0aGlzLm5lYXIsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfXRvSlNPTih0KXtsZXQgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0Lnpvb209dGhpcy56b29tLGUub2JqZWN0LmxlZnQ9dGhpcy5sZWZ0LGUub2JqZWN0LnJpZ2h0PXRoaXMucmlnaHQsZS5vYmplY3QudG9wPXRoaXMudG9wLGUub2JqZWN0LmJvdHRvbT10aGlzLmJvdHRvbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsdGhpcy52aWV3IT09bnVsbCYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlfX07SGkucHJvdG90eXBlLmlzT3J0aG9ncmFwaGljQ2FtZXJhPSEwO3ZhciBxcj1jbGFzcyBleHRlbmRzIEZue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMudHlwZT0iUmF3U2hhZGVyTWF0ZXJpYWwifX07cXIucHJvdG90eXBlLmlzUmF3U2hhZGVyTWF0ZXJpYWw9ITA7dmFyIE9yPTQsbmk9OCxobj1NYXRoLnBvdygyLG5pKSxtMD1bLjEyNSwuMjE1LC4zNSwuNDQ2LC41MjYsLjU4Ml0sZzA9bmktT3IrMSttMC5sZW5ndGgsVHI9MjAsU3U9bmV3IEhpLHtfbG9kUGxhbmVzOlZzLF9zaXplTG9kczpkZyxfc2lnbWFzOnphfT1rMSgpLHBnPW5ldyBmdCxFdT1udWxsLEZpPSgxK01hdGguc3FydCg1KSkvMixBcj0xL0ZpLG1nPVtuZXcgVCgxLDEsMSksbmV3IFQoLTEsMSwxKSxuZXcgVCgxLDEsLTEpLG5ldyBUKC0xLDEsLTEpLG5ldyBUKDAsRmksQXIpLG5ldyBUKDAsRmksLUFyKSxuZXcgVChBciwwLEZpKSxuZXcgVCgtQXIsMCxGaSksbmV3IFQoRmksQXIsMCksbmV3IFQoLUZpLEFyLDApXSxvbD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0PW51bGwsdGhpcy5fYmx1ck1hdGVyaWFsPUgxKFRyKSx0aGlzLl9lcXVpcmVjdFNoYWRlcj1udWxsLHRoaXMuX2N1YmVtYXBTaGFkZXI9bnVsbCx0aGlzLl9jb21waWxlTWF0ZXJpYWwodGhpcy5fYmx1ck1hdGVyaWFsKX1mcm9tU2NlbmUodCxlPTAsaT0uMSxyPTEwMCl7RXU9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7bGV0IHM9dGhpcy5fYWxsb2NhdGVUYXJnZXRzKCk7cmV0dXJuIHRoaXMuX3NjZW5lVG9DdWJlVVYodCxpLHIscyksZT4wJiZ0aGlzLl9ibHVyKHMsMCwwLGUpLHRoaXMuX2FwcGx5UE1SRU0ocyksdGhpcy5fY2xlYW51cChzKSxzfWZyb21FcXVpcmVjdGFuZ3VsYXIodCxlPW51bGwpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0LGUpfWZyb21DdWJlbWFwKHQsZT1udWxsKXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCxlKX1jb21waWxlQ3ViZW1hcFNoYWRlcigpe3RoaXMuX2N1YmVtYXBTaGFkZXI9PT1udWxsJiYodGhpcy5fY3ViZW1hcFNoYWRlcj15ZygpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9jdWJlbWFwU2hhZGVyKSl9Y29tcGlsZUVxdWlyZWN0YW5ndWxhclNoYWRlcigpe3RoaXMuX2VxdWlyZWN0U2hhZGVyPT09bnVsbCYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPXhnKCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2VxdWlyZWN0U2hhZGVyKSl9ZGlzcG9zZSgpe3RoaXMuX2JsdXJNYXRlcmlhbC5kaXNwb3NlKCksdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQhPT1udWxsJiZ0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldC5kaXNwb3NlKCksdGhpcy5fY3ViZW1hcFNoYWRlciE9PW51bGwmJnRoaXMuX2N1YmVtYXBTaGFkZXIuZGlzcG9zZSgpLHRoaXMuX2VxdWlyZWN0U2hhZGVyIT09bnVsbCYmdGhpcy5fZXF1aXJlY3RTaGFkZXIuZGlzcG9zZSgpO2ZvcihsZXQgdD0wO3Q8VnMubGVuZ3RoO3QrKylWc1t0XS5kaXNwb3NlKCl9X2NsZWFudXAodCl7dGhpcy5fcmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KEV1KSx0LnNjaXNzb3JUZXN0PSExLFVhKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpfV9mcm9tVGV4dHVyZSh0LGUpe0V1PXRoaXMuX3JlbmRlcmVyLmdldFJlbmRlclRhcmdldCgpO2xldCBpPWV8fHRoaXMuX2FsbG9jYXRlVGFyZ2V0cyh0KTtyZXR1cm4gdGhpcy5fdGV4dHVyZVRvQ3ViZVVWKHQsaSksdGhpcy5fYXBwbHlQTVJFTShpKSx0aGlzLl9jbGVhbnVwKGkpLGl9X2FsbG9jYXRlVGFyZ2V0cyh0KXtsZXQgZT17bWFnRmlsdGVyOmJlLG1pbkZpbHRlcjpiZSxnZW5lcmF0ZU1pcG1hcHM6ITEsdHlwZTp6cixmb3JtYXQ6UmUsZW5jb2Rpbmc6cmksZGVwdGhCdWZmZXI6ITF9LGk9Z2coZSk7cmV0dXJuIGkuZGVwdGhCdWZmZXI9IXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9PT1udWxsJiYodGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9Z2coZSkpLGl9X2NvbXBpbGVNYXRlcmlhbCh0KXtsZXQgZT1uZXcgb2UoVnNbMF0sdCk7dGhpcy5fcmVuZGVyZXIuY29tcGlsZShlLFN1KX1fc2NlbmVUb0N1YmVVVih0LGUsaSxyKXtsZXQgYT1uZXcgU2UoOTAsMSxlLGkpLGw9WzEsLTEsMSwxLDEsMV0sYz1bMSwxLDEsLTEsLTEsLTFdLHU9dGhpcy5fcmVuZGVyZXIsaD11LmF1dG9DbGVhcixmPXUudG9uZU1hcHBpbmc7dS5nZXRDbGVhckNvbG9yKHBnKSx1LnRvbmVNYXBwaW5nPXRpLHUuYXV0b0NsZWFyPSExO2xldCBkPW5ldyBPaSh7bmFtZToiUE1SRU0uQmFja2dyb3VuZCIsc2lkZTpoZSxkZXB0aFdyaXRlOiExLGRlcHRoVGVzdDohMX0pLGc9bmV3IG9lKG5ldyBraSxkKSx4PSExLHY9dC5iYWNrZ3JvdW5kO3Y/di5pc0NvbG9yJiYoZC5jb2xvci5jb3B5KHYpLHQuYmFja2dyb3VuZD1udWxsLHg9ITApOihkLmNvbG9yLmNvcHkocGcpLHg9ITApO2ZvcihsZXQgbT0wO208NjttKyspe2xldCBwPW0lMztwPT09MD8oYS51cC5zZXQoMCxsW21dLDApLGEubG9va0F0KGNbbV0sMCwwKSk6cD09PTE/KGEudXAuc2V0KDAsMCxsW21dKSxhLmxvb2tBdCgwLGNbbV0sMCkpOihhLnVwLnNldCgwLGxbbV0sMCksYS5sb29rQXQoMCwwLGNbbV0pKSxVYShyLHAqaG4sbT4yP2huOjAsaG4saG4pLHUuc2V0UmVuZGVyVGFyZ2V0KHIpLHgmJnUucmVuZGVyKGcsYSksdS5yZW5kZXIodCxhKX1nLmdlb21ldHJ5LmRpc3Bvc2UoKSxnLm1hdGVyaWFsLmRpc3Bvc2UoKSx1LnRvbmVNYXBwaW5nPWYsdS5hdXRvQ2xlYXI9aCx0LmJhY2tncm91bmQ9dn1fdGV4dHVyZVRvQ3ViZVVWKHQsZSl7bGV0IGk9dGhpcy5fcmVuZGVyZXIscj10Lm1hcHBpbmc9PT1Ub3x8dC5tYXBwaW5nPT09QW87cj8odGhpcy5fY3ViZW1hcFNoYWRlcj09PW51bGwmJih0aGlzLl9jdWJlbWFwU2hhZGVyPXlnKCkpLHRoaXMuX2N1YmVtYXBTaGFkZXIudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT10LmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT09PSExPy0xOjEpOnRoaXMuX2VxdWlyZWN0U2hhZGVyPT09bnVsbCYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPXhnKCkpO2xldCBzPXI/dGhpcy5fY3ViZW1hcFNoYWRlcjp0aGlzLl9lcXVpcmVjdFNoYWRlcixvPW5ldyBvZShWc1swXSxzKSxhPXMudW5pZm9ybXM7YS5lbnZNYXAudmFsdWU9dCxyfHxhLnRleGVsU2l6ZS52YWx1ZS5zZXQoMS90LmltYWdlLndpZHRoLDEvdC5pbWFnZS5oZWlnaHQpLFVhKGUsMCwwLDMqaG4sMipobiksaS5zZXRSZW5kZXJUYXJnZXQoZSksaS5yZW5kZXIobyxTdSl9X2FwcGx5UE1SRU0odCl7bGV0IGU9dGhpcy5fcmVuZGVyZXIsaT1lLmF1dG9DbGVhcjtlLmF1dG9DbGVhcj0hMTtmb3IobGV0IHI9MTtyPGcwO3IrKyl7bGV0IHM9TWF0aC5zcXJ0KHphW3JdKnphW3JdLXphW3ItMV0qemFbci0xXSksbz1tZ1soci0xKSVtZy5sZW5ndGhdO3RoaXMuX2JsdXIodCxyLTEscixzLG8pfWUuYXV0b0NsZWFyPWl9X2JsdXIodCxlLGkscixzKXtsZXQgbz10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldDt0aGlzLl9oYWxmQmx1cih0LG8sZSxpLHIsImxhdGl0dWRpbmFsIixzKSx0aGlzLl9oYWxmQmx1cihvLHQsaSxpLHIsImxvbmdpdHVkaW5hbCIscyl9X2hhbGZCbHVyKHQsZSxpLHIscyxvLGEpe2xldCBsPXRoaXMuX3JlbmRlcmVyLGM9dGhpcy5fYmx1ck1hdGVyaWFsO28hPT0ibGF0aXR1ZGluYWwiJiZvIT09ImxvbmdpdHVkaW5hbCImJmNvbnNvbGUuZXJyb3IoImJsdXIgZGlyZWN0aW9uIG11c3QgYmUgZWl0aGVyIGxhdGl0dWRpbmFsIG9yIGxvbmdpdHVkaW5hbCEiKTtsZXQgdT0zLGg9bmV3IG9lKFZzW3JdLGMpLGY9Yy51bmlmb3JtcyxkPWRnW2ldLTEsZz1pc0Zpbml0ZShzKT9NYXRoLlBJLygyKmQpOjIqTWF0aC5QSS8oMipUci0xKSx4PXMvZyx2PWlzRmluaXRlKHMpPzErTWF0aC5mbG9vcih1KngpOlRyO3Y+VHImJmNvbnNvbGUud2Fybihgc2lnbWFSYWRpYW5zLCAke3N9LCBpcyB0b28gbGFyZ2UgYW5kIHdpbGwgY2xpcCwgYXMgaXQgcmVxdWVzdGVkICR7dn0gc2FtcGxlcyB3aGVuIHRoZSBtYXhpbXVtIGlzIHNldCB0byAke1RyfWApO2xldCBtPVtdLHA9MDtmb3IobGV0IEw9MDtMPFRyOysrTCl7bGV0IEE9TC94LEg9TWF0aC5leHAoLUEqQS8yKTttLnB1c2goSCksTD09PTA/cCs9SDpMPHYmJihwKz0yKkgpfWZvcihsZXQgTD0wO0w8bS5sZW5ndGg7TCsrKW1bTF09bVtMXS9wO2YuZW52TWFwLnZhbHVlPXQudGV4dHVyZSxmLnNhbXBsZXMudmFsdWU9dixmLndlaWdodHMudmFsdWU9bSxmLmxhdGl0dWRpbmFsLnZhbHVlPW89PT0ibGF0aXR1ZGluYWwiLGEmJihmLnBvbGVBeGlzLnZhbHVlPWEpLGYuZFRoZXRhLnZhbHVlPWcsZi5taXBJbnQudmFsdWU9bmktaTtsZXQgYj1kZ1tyXSxfPTMqTWF0aC5tYXgoMCxobi0yKmIpLFM9KHI9PT0wPzA6MipobikrMipiKihyPm5pLU9yP3ItbmkrT3I6MCk7VWEoZSxfLFMsMypiLDIqYiksbC5zZXRSZW5kZXJUYXJnZXQoZSksbC5yZW5kZXIoaCxTdSl9fTtmdW5jdGlvbiBrMSgpe2xldCBuPVtdLHQ9W10sZT1bXSxpPW5pO2ZvcihsZXQgcj0wO3I8ZzA7cisrKXtsZXQgcz1NYXRoLnBvdygyLGkpO3QucHVzaChzKTtsZXQgbz0xL3M7cj5uaS1Pcj9vPW0wW3ItbmkrT3ItMV06cj09PTAmJihvPTApLGUucHVzaChvKTtsZXQgYT0xLyhzLTEpLGw9LWEvMixjPTErYS8yLHU9W2wsbCxjLGwsYyxjLGwsbCxjLGMsbCxjXSxoPTYsZj02LGQ9MyxnPTIseD0xLHY9bmV3IEZsb2F0MzJBcnJheShkKmYqaCksbT1uZXcgRmxvYXQzMkFycmF5KGcqZipoKSxwPW5ldyBGbG9hdDMyQXJyYXkoeCpmKmgpO2ZvcihsZXQgXz0wO188aDtfKyspe2xldCBTPV8lMyoyLzMtMSxMPV8+Mj8wOi0xLEE9W1MsTCwwLFMrMi8zLEwsMCxTKzIvMyxMKzEsMCxTLEwsMCxTKzIvMyxMKzEsMCxTLEwrMSwwXTt2LnNldChBLGQqZipfKSxtLnNldCh1LGcqZipfKTtsZXQgSD1bXyxfLF8sXyxfLF9dO3Auc2V0KEgseCpmKl8pfWxldCBiPW5ldyBIdDtiLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBRdCh2LGQpKSxiLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBRdChtLGcpKSxiLnNldEF0dHJpYnV0ZSgiZmFjZUluZGV4IixuZXcgUXQocCx4KSksbi5wdXNoKGIpLGk+T3ImJmktLX1yZXR1cm57X2xvZFBsYW5lczpuLF9zaXplTG9kczp0LF9zaWdtYXM6ZX19ZnVuY3Rpb24gZ2cobil7bGV0IHQ9bmV3IE5lKDMqaG4sMypobixuKTtyZXR1cm4gdC50ZXh0dXJlLm1hcHBpbmc9Q2wsdC50ZXh0dXJlLm5hbWU9IlBNUkVNLmN1YmVVdiIsdC5zY2lzc29yVGVzdD0hMCx0fWZ1bmN0aW9uIFVhKG4sdCxlLGkscil7bi52aWV3cG9ydC5zZXQodCxlLGksciksbi5zY2lzc29yLnNldCh0LGUsaSxyKX1mdW5jdGlvbiBIMShuKXtsZXQgdD1uZXcgRmxvYXQzMkFycmF5KG4pLGU9bmV3IFQoMCwxLDApO3JldHVybiBuZXcgcXIoe25hbWU6IlNwaGVyaWNhbEdhdXNzaWFuQmx1ciIsZGVmaW5lczp7bn0sdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sc2FtcGxlczp7dmFsdWU6MX0sd2VpZ2h0czp7dmFsdWU6dH0sbGF0aXR1ZGluYWw6e3ZhbHVlOiExfSxkVGhldGE6e3ZhbHVlOjB9LG1pcEludDp7dmFsdWU6MH0scG9sZUF4aXM6e3ZhbHVlOmV9fSx2ZXJ0ZXhTaGFkZXI6S2goKSxmcmFnbWVudFNoYWRlcjpgCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OwoKCQkJdmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247CgoJCQl1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7CgkJCXVuaWZvcm0gaW50IHNhbXBsZXM7CgkJCXVuaWZvcm0gZmxvYXQgd2VpZ2h0c1sgbiBdOwoJCQl1bmlmb3JtIGJvb2wgbGF0aXR1ZGluYWw7CgkJCXVuaWZvcm0gZmxvYXQgZFRoZXRhOwoJCQl1bmlmb3JtIGZsb2F0IG1pcEludDsKCQkJdW5pZm9ybSB2ZWMzIHBvbGVBeGlzOwoKCQkJI2RlZmluZSBFTlZNQVBfVFlQRV9DVUJFX1VWCgkJCSNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+CgoJCQl2ZWMzIGdldFNhbXBsZSggZmxvYXQgdGhldGEsIHZlYzMgYXhpcyApIHsKCgkJCQlmbG9hdCBjb3NUaGV0YSA9IGNvcyggdGhldGEgKTsKCQkJCS8vIFJvZHJpZ3VlcycgYXhpcy1hbmdsZSByb3RhdGlvbgoJCQkJdmVjMyBzYW1wbGVEaXJlY3Rpb24gPSB2T3V0cHV0RGlyZWN0aW9uICogY29zVGhldGEKCQkJCQkrIGNyb3NzKCBheGlzLCB2T3V0cHV0RGlyZWN0aW9uICkgKiBzaW4oIHRoZXRhICkKCQkJCQkrIGF4aXMgKiBkb3QoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqICggMS4wIC0gY29zVGhldGEgKTsKCgkJCQlyZXR1cm4gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyZWN0aW9uLCBtaXBJbnQgKTsKCgkJCX0KCgkJCXZvaWQgbWFpbigpIHsKCgkJCQl2ZWMzIGF4aXMgPSBsYXRpdHVkaW5hbCA/IHBvbGVBeGlzIDogY3Jvc3MoIHBvbGVBeGlzLCB2T3V0cHV0RGlyZWN0aW9uICk7CgoJCQkJaWYgKCBhbGwoIGVxdWFsKCBheGlzLCB2ZWMzKCAwLjAgKSApICkgKSB7CgoJCQkJCWF4aXMgPSB2ZWMzKCB2T3V0cHV0RGlyZWN0aW9uLnosIDAuMCwgLSB2T3V0cHV0RGlyZWN0aW9uLnggKTsKCgkJCQl9CgoJCQkJYXhpcyA9IG5vcm1hbGl6ZSggYXhpcyApOwoKCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApOwoJCQkJZ2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyAwIF0gKiBnZXRTYW1wbGUoIDAuMCwgYXhpcyApOwoKCQkJCWZvciAoIGludCBpID0gMTsgaSA8IG47IGkrKyApIHsKCgkJCQkJaWYgKCBpID49IHNhbXBsZXMgKSB7CgoJCQkJCQlicmVhazsKCgkJCQkJfQoKCQkJCQlmbG9hdCB0aGV0YSA9IGRUaGV0YSAqIGZsb2F0KCBpICk7CgkJCQkJZ2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIC0xLjAgKiB0aGV0YSwgYXhpcyApOwoJCQkJCWdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgaSBdICogZ2V0U2FtcGxlKCB0aGV0YSwgYXhpcyApOwoKCQkJCX0KCgkJCX0KCQlgLGJsZW5kaW5nOmpuLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24geGcoKXtsZXQgbj1uZXcgSygxLDEpO3JldHVybiBuZXcgcXIoe25hbWU6IkVxdWlyZWN0YW5ndWxhclRvQ3ViZVVWIix1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSx0ZXhlbFNpemU6e3ZhbHVlOm59fSx2ZXJ0ZXhTaGFkZXI6S2goKSxmcmFnbWVudFNoYWRlcjpgCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OwoKCQkJdmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247CgoJCQl1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7CgkJCXVuaWZvcm0gdmVjMiB0ZXhlbFNpemU7CgoJCQkjaW5jbHVkZSA8Y29tbW9uPgoKCQkJdm9pZCBtYWluKCkgewoKCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApOwoKCQkJCXZlYzMgb3V0cHV0RGlyZWN0aW9uID0gbm9ybWFsaXplKCB2T3V0cHV0RGlyZWN0aW9uICk7CgkJCQl2ZWMyIHV2ID0gZXF1aXJlY3RVdiggb3V0cHV0RGlyZWN0aW9uICk7CgoJCQkJdmVjMiBmID0gZnJhY3QoIHV2IC8gdGV4ZWxTaXplIC0gMC41ICk7CgkJCQl1diAtPSBmICogdGV4ZWxTaXplOwoJCQkJdmVjMyB0bCA9IHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKS5yZ2I7CgkJCQl1di54ICs9IHRleGVsU2l6ZS54OwoJCQkJdmVjMyB0ciA9IHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKS5yZ2I7CgkJCQl1di55ICs9IHRleGVsU2l6ZS55OwoJCQkJdmVjMyBiciA9IHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKS5yZ2I7CgkJCQl1di54IC09IHRleGVsU2l6ZS54OwoJCQkJdmVjMyBibCA9IHRleHR1cmUyRCAoIGVudk1hcCwgdXYgKS5yZ2I7CgoJCQkJdmVjMyB0bSA9IG1peCggdGwsIHRyLCBmLnggKTsKCQkJCXZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7CgkJCQlnbF9GcmFnQ29sb3IucmdiID0gbWl4KCB0bSwgYm0sIGYueSApOwoKCQkJfQoJCWAsYmxlbmRpbmc6am4sZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiB5Zygpe3JldHVybiBuZXcgcXIoe25hbWU6IkN1YmVtYXBUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9fSx2ZXJ0ZXhTaGFkZXI6S2goKSxmcmFnbWVudFNoYWRlcjpgCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OwoKCQkJdW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwOwoKCQkJdmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247CgoJCQl1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDsKCgkJCXZvaWQgbWFpbigpIHsKCgkJCQlnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCBmbGlwRW52TWFwICogdk91dHB1dERpcmVjdGlvbi54LCB2T3V0cHV0RGlyZWN0aW9uLnl6ICkgKTsKCgkJCX0KCQlgLGJsZW5kaW5nOmpuLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gS2goKXtyZXR1cm5gCgoJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKCgkJYXR0cmlidXRlIHZlYzMgcG9zaXRpb247CgkJYXR0cmlidXRlIHZlYzIgdXY7CgkJYXR0cmlidXRlIGZsb2F0IGZhY2VJbmRleDsKCgkJdmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247CgoJCS8vIFJIIGNvb3JkaW5hdGUgc3lzdGVtOyBQTVJFTSBmYWNlLWluZGV4aW5nIGNvbnZlbnRpb24KCQl2ZWMzIGdldERpcmVjdGlvbiggdmVjMiB1diwgZmxvYXQgZmFjZSApIHsKCgkJCXV2ID0gMi4wICogdXYgLSAxLjA7CgoJCQl2ZWMzIGRpcmVjdGlvbiA9IHZlYzMoIHV2LCAxLjAgKTsKCgkJCWlmICggZmFjZSA9PSAwLjAgKSB7CgoJCQkJZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDsgLy8gKCAxLCB2LCB1ICkgcG9zIHgKCgkJCX0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkgewoKCQkJCWRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7CgkJCQlkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtdSwgMSwgLXYgKSBwb3MgeQoKCQkJfSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7CgoJCQkJZGlyZWN0aW9uLnggKj0gLTEuMDsgLy8gKCAtdSwgdiwgMSApIHBvcyB6CgoJCQl9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHsKCgkJCQlkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OwoJCQkJZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLTEsIHYsIC11ICkgbmVnIHgKCgkJCX0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkgewoKCQkJCWRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7CgkJCQlkaXJlY3Rpb24ueHkgKj0gLTEuMDsgLy8gKCAtdSwgLTEsIHYgKSBuZWcgeQoKCQkJfSBlbHNlIGlmICggZmFjZSA9PSA1LjAgKSB7CgoJCQkJZGlyZWN0aW9uLnogKj0gLTEuMDsgLy8gKCB1LCB2LCAtMSApIG5lZyB6CgoJCQl9CgoJCQlyZXR1cm4gZGlyZWN0aW9uOwoKCQl9CgoJCXZvaWQgbWFpbigpIHsKCgkJCXZPdXRwdXREaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24oIHV2LCBmYWNlSW5kZXggKTsKCQkJZ2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7CgoJCX0KCWB9ZnVuY3Rpb24gVjEobil7bGV0IHQ9bmV3IFdlYWtNYXAsZT1udWxsO2Z1bmN0aW9uIGkoYSl7aWYoYSYmYS5pc1RleHR1cmUpe2xldCBsPWEubWFwcGluZyxjPWw9PT1GdXx8bD09PXp1LHU9bD09PVRvfHxsPT09QW87aWYoY3x8dSlpZihhLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSYmYS5uZWVkc1BNUkVNVXBkYXRlPT09ITApe2EubmVlZHNQTVJFTVVwZGF0ZT0hMTtsZXQgaD10LmdldChhKTtyZXR1cm4gZT09PW51bGwmJihlPW5ldyBvbChuKSksaD1jP2UuZnJvbUVxdWlyZWN0YW5ndWxhcihhLGgpOmUuZnJvbUN1YmVtYXAoYSxoKSx0LnNldChhLGgpLGgudGV4dHVyZX1lbHNle2lmKHQuaGFzKGEpKXJldHVybiB0LmdldChhKS50ZXh0dXJlO3tsZXQgaD1hLmltYWdlO2lmKGMmJmgmJmguaGVpZ2h0PjB8fHUmJmgmJnIoaCkpe2U9PT1udWxsJiYoZT1uZXcgb2wobikpO2xldCBmPWM/ZS5mcm9tRXF1aXJlY3Rhbmd1bGFyKGEpOmUuZnJvbUN1YmVtYXAoYSk7cmV0dXJuIHQuc2V0KGEsZiksYS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixzKSxmLnRleHR1cmV9ZWxzZSByZXR1cm4gbnVsbH19fXJldHVybiBhfWZ1bmN0aW9uIHIoYSl7bGV0IGw9MCxjPTY7Zm9yKGxldCB1PTA7dTxjO3UrKylhW3VdIT09dm9pZCAwJiZsKys7cmV0dXJuIGw9PT1jfWZ1bmN0aW9uIHMoYSl7bGV0IGw9YS50YXJnZXQ7bC5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixzKTtsZXQgYz10LmdldChsKTtjIT09dm9pZCAwJiYodC5kZWxldGUobCksYy5kaXNwb3NlKCkpfWZ1bmN0aW9uIG8oKXt0PW5ldyBXZWFrTWFwLGUhPT1udWxsJiYoZS5kaXNwb3NlKCksZT1udWxsKX1yZXR1cm57Z2V0OmksZGlzcG9zZTpvfX1mdW5jdGlvbiBHMShuKXtsZXQgdD17fTtmdW5jdGlvbiBlKGkpe2lmKHRbaV0hPT12b2lkIDApcmV0dXJuIHRbaV07bGV0IHI7c3dpdGNoKGkpe2Nhc2UiV0VCR0xfZGVwdGhfdGV4dHVyZSI6cj1uLmdldEV4dGVuc2lvbigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpfHxuLmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2RlcHRoX3RleHR1cmUiKXx8bi5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9kZXB0aF90ZXh0dXJlIik7YnJlYWs7Y2FzZSJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiOnI9bi5nZXRFeHRlbnNpb24oIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHxuLmdldEV4dGVuc2lvbigiTU9aX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHxuLmdldEV4dGVuc2lvbigiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2JyZWFrO2Nhc2UiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiOnI9bi5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fG4uZ2V0RXh0ZW5zaW9uKCJNT1pfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKXx8bi5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpO2JyZWFrO2Nhc2UiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIjpyPW4uZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKXx8bi5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKTticmVhaztkZWZhdWx0OnI9bi5nZXRFeHRlbnNpb24oaSl9cmV0dXJuIHRbaV09cixyfXJldHVybntoYXM6ZnVuY3Rpb24oaSl7cmV0dXJuIGUoaSkhPT1udWxsfSxpbml0OmZ1bmN0aW9uKGkpe2kuaXNXZWJHTDI/ZSgiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpOihlKCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksZSgiT0VTX3RleHR1cmVfZmxvYXQiKSxlKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksZSgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSxlKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSxlKCJPRVNfZWxlbWVudF9pbmRleF91aW50IiksZSgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxlKCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpLGUoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpLGUoIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpLGUoIldFQkdMX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpfSxnZXQ6ZnVuY3Rpb24oaSl7bGV0IHI9ZShpKTtyZXR1cm4gcj09PW51bGwmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIitpKyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIikscn19fWZ1bmN0aW9uIFcxKG4sdCxlLGkpe2xldCByPXt9LHM9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gbyhoKXtsZXQgZj1oLnRhcmdldDtmLmluZGV4IT09bnVsbCYmdC5yZW1vdmUoZi5pbmRleCk7Zm9yKGxldCBnIGluIGYuYXR0cmlidXRlcyl0LnJlbW92ZShmLmF0dHJpYnV0ZXNbZ10pO2YucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksZGVsZXRlIHJbZi5pZF07bGV0IGQ9cy5nZXQoZik7ZCYmKHQucmVtb3ZlKGQpLHMuZGVsZXRlKGYpKSxpLnJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5KGYpLGYuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT09PSEwJiZkZWxldGUgZi5fbWF4SW5zdGFuY2VDb3VudCxlLm1lbW9yeS5nZW9tZXRyaWVzLS19ZnVuY3Rpb24gYShoLGYpe3JldHVybiByW2YuaWRdPT09ITB8fChmLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLG8pLHJbZi5pZF09ITAsZS5tZW1vcnkuZ2VvbWV0cmllcysrKSxmfWZ1bmN0aW9uIGwoaCl7bGV0IGY9aC5hdHRyaWJ1dGVzO2ZvcihsZXQgZyBpbiBmKXQudXBkYXRlKGZbZ10sMzQ5NjIpO2xldCBkPWgubW9ycGhBdHRyaWJ1dGVzO2ZvcihsZXQgZyBpbiBkKXtsZXQgeD1kW2ddO2ZvcihsZXQgdj0wLG09eC5sZW5ndGg7djxtO3YrKyl0LnVwZGF0ZSh4W3ZdLDM0OTYyKX19ZnVuY3Rpb24gYyhoKXtsZXQgZj1bXSxkPWguaW5kZXgsZz1oLmF0dHJpYnV0ZXMucG9zaXRpb24seD0wO2lmKGQhPT1udWxsKXtsZXQgcD1kLmFycmF5O3g9ZC52ZXJzaW9uO2ZvcihsZXQgYj0wLF89cC5sZW5ndGg7YjxfO2IrPTMpe2xldCBTPXBbYiswXSxMPXBbYisxXSxBPXBbYisyXTtmLnB1c2goUyxMLEwsQSxBLFMpfX1lbHNle2xldCBwPWcuYXJyYXk7eD1nLnZlcnNpb247Zm9yKGxldCBiPTAsXz1wLmxlbmd0aC8zLTE7YjxfO2IrPTMpe2xldCBTPWIrMCxMPWIrMSxBPWIrMjtmLnB1c2goUyxMLEwsQSxBLFMpfX1sZXQgdj1uZXcoZjAoZik/cmw6aWwpKGYsMSk7di52ZXJzaW9uPXg7bGV0IG09cy5nZXQoaCk7bSYmdC5yZW1vdmUobSkscy5zZXQoaCx2KX1mdW5jdGlvbiB1KGgpe2xldCBmPXMuZ2V0KGgpO2lmKGYpe2xldCBkPWguaW5kZXg7ZCE9PW51bGwmJmYudmVyc2lvbjxkLnZlcnNpb24mJmMoaCl9ZWxzZSBjKGgpO3JldHVybiBzLmdldChoKX1yZXR1cm57Z2V0OmEsdXBkYXRlOmwsZ2V0V2lyZWZyYW1lQXR0cmlidXRlOnV9fWZ1bmN0aW9uIHExKG4sdCxlLGkpe2xldCByPWkuaXNXZWJHTDIscztmdW5jdGlvbiBvKGYpe3M9Zn1sZXQgYSxsO2Z1bmN0aW9uIGMoZil7YT1mLnR5cGUsbD1mLmJ5dGVzUGVyRWxlbWVudH1mdW5jdGlvbiB1KGYsZCl7bi5kcmF3RWxlbWVudHMocyxkLGEsZipsKSxlLnVwZGF0ZShkLHMsMSl9ZnVuY3Rpb24gaChmLGQsZyl7aWYoZz09PTApcmV0dXJuO2xldCB4LHY7aWYocil4PW4sdj0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkIjtlbHNlIGlmKHg9dC5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSx2PSJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIseD09PW51bGwpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5kZXhlZEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtyZXR1cm59eFt2XShzLGQsYSxmKmwsZyksZS51cGRhdGUoZCxzLGcpfXRoaXMuc2V0TW9kZT1vLHRoaXMuc2V0SW5kZXg9Yyx0aGlzLnJlbmRlcj11LHRoaXMucmVuZGVySW5zdGFuY2VzPWh9ZnVuY3Rpb24gWDEobil7bGV0IHQ9e2dlb21ldHJpZXM6MCx0ZXh0dXJlczowfSxlPXtmcmFtZTowLGNhbGxzOjAsdHJpYW5nbGVzOjAscG9pbnRzOjAsbGluZXM6MH07ZnVuY3Rpb24gaShzLG8sYSl7c3dpdGNoKGUuY2FsbHMrKyxvKXtjYXNlIDQ6ZS50cmlhbmdsZXMrPWEqKHMvMyk7YnJlYWs7Y2FzZSAxOmUubGluZXMrPWEqKHMvMik7YnJlYWs7Y2FzZSAzOmUubGluZXMrPWEqKHMtMSk7YnJlYWs7Y2FzZSAyOmUubGluZXMrPWEqczticmVhaztjYXNlIDA6ZS5wb2ludHMrPWEqczticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5mbzogVW5rbm93biBkcmF3IG1vZGU6IixvKTticmVha319ZnVuY3Rpb24gcigpe2UuZnJhbWUrKyxlLmNhbGxzPTAsZS50cmlhbmdsZXM9MCxlLnBvaW50cz0wLGUubGluZXM9MH1yZXR1cm57bWVtb3J5OnQscmVuZGVyOmUscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6cix1cGRhdGU6aX19dmFyIGxvPWNsYXNzIGV4dGVuZHMgYWV7Y29uc3RydWN0b3IodD1udWxsLGU9MSxpPTEscj0xKXtzdXBlcihudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6aSxkZXB0aDpyfSx0aGlzLm1hZ0ZpbHRlcj1mZSx0aGlzLm1pbkZpbHRlcj1mZSx0aGlzLndyYXBSPVZlLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MX19O2xvLnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlMkRBcnJheT0hMDtmdW5jdGlvbiBZMShuLHQpe3JldHVybiBuWzBdLXRbMF19ZnVuY3Rpb24gWjEobix0KXtyZXR1cm4gTWF0aC5hYnModFsxXSktTWF0aC5hYnMoblsxXSl9ZnVuY3Rpb24gdmcobix0KXtsZXQgZT0xLGk9dC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlP3QuZGF0YS5hcnJheTp0LmFycmF5O2kgaW5zdGFuY2VvZiBJbnQ4QXJyYXk/ZT0xMjc6aSBpbnN0YW5jZW9mIEludDE2QXJyYXk/ZT0zMjc2NzppIGluc3RhbmNlb2YgSW50MzJBcnJheT9lPTIxNDc0ODM2NDc6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xNb3JwaHRhcmdldHM6IFVuc3VwcG9ydGVkIG1vcnBoIGF0dHJpYnV0ZSBkYXRhIHR5cGU6ICIsaSksbi5kaXZpZGVTY2FsYXIoZSl9ZnVuY3Rpb24gSjEobix0LGUpe2xldCBpPXt9LHI9bmV3IEZsb2F0MzJBcnJheSg4KSxzPW5ldyBXZWFrTWFwLG89bmV3IFQsYT1bXTtmb3IobGV0IGM9MDtjPDg7YysrKWFbY109W2MsMF07ZnVuY3Rpb24gbChjLHUsaCxmKXtsZXQgZD1jLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcztpZih0LmlzV2ViR0wyPT09ITApe2xldCBnPXUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aCx4PXMuZ2V0KHUpO2lmKHg9PT12b2lkIDB8fHguY291bnQhPT1nKXtsZXQgUj1mdW5jdGlvbigpe1guZGlzcG9zZSgpLHMuZGVsZXRlKHUpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsUil9O3ghPT12b2lkIDAmJngudGV4dHVyZS5kaXNwb3NlKCk7bGV0IHA9dS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsIT09dm9pZCAwLGI9dS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sXz11Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWx8fFtdLFM9dS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmNvdW50LEw9cD09PSEwPzI6MSxBPVMqTCxIPTE7QT50Lm1heFRleHR1cmVTaXplJiYoSD1NYXRoLmNlaWwoQS90Lm1heFRleHR1cmVTaXplKSxBPXQubWF4VGV4dHVyZVNpemUpO2xldCB0dD1uZXcgRmxvYXQzMkFycmF5KEEqSCo0KmcpLFg9bmV3IGxvKHR0LEEsSCxnKTtYLmZvcm1hdD1SZSxYLnR5cGU9emksWC5uZWVkc1VwZGF0ZT0hMDtsZXQgeT1MKjQ7Zm9yKGxldCBEPTA7RDxnO0QrKyl7bGV0IEY9YltEXSx6PV9bRF0sTj1BKkgqNCpEO2ZvcihsZXQgVj0wO1Y8Ri5jb3VudDtWKyspe28uZnJvbUJ1ZmZlckF0dHJpYnV0ZShGLFYpLEYubm9ybWFsaXplZD09PSEwJiZ2ZyhvLEYpO2xldCBRPVYqeTt0dFtOK1ErMF09by54LHR0W04rUSsxXT1vLnksdHRbTitRKzJdPW8ueix0dFtOK1ErM109MCxwPT09ITAmJihvLmZyb21CdWZmZXJBdHRyaWJ1dGUoeixWKSx6Lm5vcm1hbGl6ZWQ9PT0hMCYmdmcobyx6KSx0dFtOK1ErNF09by54LHR0W04rUSs1XT1vLnksdHRbTitRKzZdPW8ueix0dFtOK1ErN109MCl9fXg9e2NvdW50OmcsdGV4dHVyZTpYLHNpemU6bmV3IEsoQSxIKX0scy5zZXQodSx4KSx1LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFIpfWxldCB2PTA7Zm9yKGxldCBwPTA7cDxkLmxlbmd0aDtwKyspdis9ZFtwXTtsZXQgbT11Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlPzE6MS12O2YuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZShuLCJtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2UiLG0pLGYuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZShuLCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiLGQpLGYuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZShuLCJtb3JwaFRhcmdldHNUZXh0dXJlIix4LnRleHR1cmUsZSksZi5nZXRVbmlmb3JtcygpLnNldFZhbHVlKG4sIm1vcnBoVGFyZ2V0c1RleHR1cmVTaXplIix4LnNpemUpfWVsc2V7bGV0IGc9ZD09PXZvaWQgMD8wOmQubGVuZ3RoLHg9aVt1LmlkXTtpZih4PT09dm9pZCAwfHx4Lmxlbmd0aCE9PWcpe3g9W107Zm9yKGxldCBfPTA7XzxnO18rKyl4W19dPVtfLDBdO2lbdS5pZF09eH1mb3IobGV0IF89MDtfPGc7XysrKXtsZXQgUz14W19dO1NbMF09XyxTWzFdPWRbX119eC5zb3J0KFoxKTtmb3IobGV0IF89MDtfPDg7XysrKV88ZyYmeFtfXVsxXT8oYVtfXVswXT14W19dWzBdLGFbX11bMV09eFtfXVsxXSk6KGFbX11bMF09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsYVtfXVsxXT0wKTthLnNvcnQoWTEpO2xldCB2PXUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLG09dS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsLHA9MDtmb3IobGV0IF89MDtfPDg7XysrKXtsZXQgUz1hW19dLEw9U1swXSxBPVNbMV07TCE9PU51bWJlci5NQVhfU0FGRV9JTlRFR0VSJiZBPyh2JiZ1LmdldEF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK18pIT09dltMXSYmdS5zZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0IitfLHZbTF0pLG0mJnUuZ2V0QXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrXykhPT1tW0xdJiZ1LnNldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK18sbVtMXSkscltfXT1BLHArPUEpOih2JiZ1Lmhhc0F0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK18pPT09ITAmJnUuZGVsZXRlQXR0cmlidXRlKCJtb3JwaFRhcmdldCIrXyksbSYmdS5oYXNBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIitfKT09PSEwJiZ1LmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK18pLHJbX109MCl9bGV0IGI9dS5tb3JwaFRhcmdldHNSZWxhdGl2ZT8xOjEtcDtmLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUobiwibW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlIixiKSxmLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUobiwibW9ycGhUYXJnZXRJbmZsdWVuY2VzIixyKX19cmV0dXJue3VwZGF0ZTpsfX1mdW5jdGlvbiAkMShuLHQsZSxpKXtsZXQgcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBzKGwpe2xldCBjPWkucmVuZGVyLmZyYW1lLHU9bC5nZW9tZXRyeSxoPXQuZ2V0KGwsdSk7cmV0dXJuIHIuZ2V0KGgpIT09YyYmKHQudXBkYXRlKGgpLHIuc2V0KGgsYykpLGwuaXNJbnN0YW5jZWRNZXNoJiYobC5oYXNFdmVudExpc3RlbmVyKCJkaXNwb3NlIixhKT09PSExJiZsLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLGUudXBkYXRlKGwuaW5zdGFuY2VNYXRyaXgsMzQ5NjIpLGwuaW5zdGFuY2VDb2xvciE9PW51bGwmJmUudXBkYXRlKGwuaW5zdGFuY2VDb2xvciwzNDk2MikpLGh9ZnVuY3Rpb24gbygpe3I9bmV3IFdlYWtNYXB9ZnVuY3Rpb24gYShsKXtsZXQgYz1sLnRhcmdldDtjLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLGUucmVtb3ZlKGMuaW5zdGFuY2VNYXRyaXgpLGMuaW5zdGFuY2VDb2xvciE9PW51bGwmJmUucmVtb3ZlKGMuaW5zdGFuY2VDb2xvcil9cmV0dXJue3VwZGF0ZTpzLGRpc3Bvc2U6b319dmFyIGFsPWNsYXNzIGV4dGVuZHMgYWV7Y29uc3RydWN0b3IodD1udWxsLGU9MSxpPTEscj0xKXtzdXBlcihudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6aSxkZXB0aDpyfSx0aGlzLm1hZ0ZpbHRlcj1mZSx0aGlzLm1pbkZpbHRlcj1mZSx0aGlzLndyYXBSPVZlLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MX19O2FsLnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlM0Q9ITA7dmFyIHgwPW5ldyBhZSx5MD1uZXcgbG8sdjA9bmV3IGFsLF8wPW5ldyBHcixfZz1bXSx3Zz1bXSxNZz1uZXcgRmxvYXQzMkFycmF5KDE2KSxiZz1uZXcgRmxvYXQzMkFycmF5KDkpLFNnPW5ldyBGbG9hdDMyQXJyYXkoNCk7ZnVuY3Rpb24gdHMobix0LGUpe2xldCBpPW5bMF07aWYoaTw9MHx8aT4wKXJldHVybiBuO2xldCByPXQqZSxzPV9nW3JdO2lmKHM9PT12b2lkIDAmJihzPW5ldyBGbG9hdDMyQXJyYXkociksX2dbcl09cyksdCE9PTApe2kudG9BcnJheShzLDApO2ZvcihsZXQgbz0xLGE9MDtvIT09dDsrK28pYSs9ZSxuW29dLnRvQXJyYXkocyxhKX1yZXR1cm4gc31mdW5jdGlvbiBMZShuLHQpe2lmKG4ubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKWlmKG5bZV0hPT10W2VdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFRlKG4sdCl7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKW5bZV09dFtlXX1mdW5jdGlvbiBMbChuLHQpe2xldCBlPXdnW3RdO2U9PT12b2lkIDAmJihlPW5ldyBJbnQzMkFycmF5KHQpLHdnW3RdPWUpO2ZvcihsZXQgaT0wO2khPT10OysraSllW2ldPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO3JldHVybiBlfWZ1bmN0aW9uIEsxKG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtlWzBdIT09dCYmKG4udW5pZm9ybTFmKHRoaXMuYWRkcix0KSxlWzBdPXQpfWZ1bmN0aW9uIFExKG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtpZih0LnghPT12b2lkIDApKGVbMF0hPT10Lnh8fGVbMV0hPT10LnkpJiYobi51bmlmb3JtMmYodGhpcy5hZGRyLHQueCx0LnkpLGVbMF09dC54LGVbMV09dC55KTtlbHNle2lmKExlKGUsdCkpcmV0dXJuO24udW5pZm9ybTJmdih0aGlzLmFkZHIsdCksVGUoZSx0KX19ZnVuY3Rpb24gajEobix0KXtsZXQgZT10aGlzLmNhY2hlO2lmKHQueCE9PXZvaWQgMCkoZVswXSE9PXQueHx8ZVsxXSE9PXQueXx8ZVsyXSE9PXQueikmJihuLnVuaWZvcm0zZih0aGlzLmFkZHIsdC54LHQueSx0LnopLGVbMF09dC54LGVbMV09dC55LGVbMl09dC56KTtlbHNlIGlmKHQuciE9PXZvaWQgMCkoZVswXSE9PXQucnx8ZVsxXSE9PXQuZ3x8ZVsyXSE9PXQuYikmJihuLnVuaWZvcm0zZih0aGlzLmFkZHIsdC5yLHQuZyx0LmIpLGVbMF09dC5yLGVbMV09dC5nLGVbMl09dC5iKTtlbHNle2lmKExlKGUsdCkpcmV0dXJuO24udW5pZm9ybTNmdih0aGlzLmFkZHIsdCksVGUoZSx0KX19ZnVuY3Rpb24gdFMobix0KXtsZXQgZT10aGlzLmNhY2hlO2lmKHQueCE9PXZvaWQgMCkoZVswXSE9PXQueHx8ZVsxXSE9PXQueXx8ZVsyXSE9PXQuenx8ZVszXSE9PXQudykmJihuLnVuaWZvcm00Zih0aGlzLmFkZHIsdC54LHQueSx0LnosdC53KSxlWzBdPXQueCxlWzFdPXQueSxlWzJdPXQueixlWzNdPXQudyk7ZWxzZXtpZihMZShlLHQpKXJldHVybjtuLnVuaWZvcm00ZnYodGhpcy5hZGRyLHQpLFRlKGUsdCl9fWZ1bmN0aW9uIGVTKG4sdCl7bGV0IGU9dGhpcy5jYWNoZSxpPXQuZWxlbWVudHM7aWYoaT09PXZvaWQgMCl7aWYoTGUoZSx0KSlyZXR1cm47bi51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSx0KSxUZShlLHQpfWVsc2V7aWYoTGUoZSxpKSlyZXR1cm47U2cuc2V0KGkpLG4udW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsU2cpLFRlKGUsaSl9fWZ1bmN0aW9uIG5TKG4sdCl7bGV0IGU9dGhpcy5jYWNoZSxpPXQuZWxlbWVudHM7aWYoaT09PXZvaWQgMCl7aWYoTGUoZSx0KSlyZXR1cm47bi51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSx0KSxUZShlLHQpfWVsc2V7aWYoTGUoZSxpKSlyZXR1cm47Ymcuc2V0KGkpLG4udW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsYmcpLFRlKGUsaSl9fWZ1bmN0aW9uIGlTKG4sdCl7bGV0IGU9dGhpcy5jYWNoZSxpPXQuZWxlbWVudHM7aWYoaT09PXZvaWQgMCl7aWYoTGUoZSx0KSlyZXR1cm47bi51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSx0KSxUZShlLHQpfWVsc2V7aWYoTGUoZSxpKSlyZXR1cm47TWcuc2V0KGkpLG4udW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsTWcpLFRlKGUsaSl9fWZ1bmN0aW9uIHJTKG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtlWzBdIT09dCYmKG4udW5pZm9ybTFpKHRoaXMuYWRkcix0KSxlWzBdPXQpfWZ1bmN0aW9uIHNTKG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtMZShlLHQpfHwobi51bmlmb3JtMml2KHRoaXMuYWRkcix0KSxUZShlLHQpKX1mdW5jdGlvbiBvUyhuLHQpe2xldCBlPXRoaXMuY2FjaGU7TGUoZSx0KXx8KG4udW5pZm9ybTNpdih0aGlzLmFkZHIsdCksVGUoZSx0KSl9ZnVuY3Rpb24gYVMobix0KXtsZXQgZT10aGlzLmNhY2hlO0xlKGUsdCl8fChuLnVuaWZvcm00aXYodGhpcy5hZGRyLHQpLFRlKGUsdCkpfWZ1bmN0aW9uIGxTKG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtlWzBdIT09dCYmKG4udW5pZm9ybTF1aSh0aGlzLmFkZHIsdCksZVswXT10KX1mdW5jdGlvbiBjUyhuLHQpe2xldCBlPXRoaXMuY2FjaGU7TGUoZSx0KXx8KG4udW5pZm9ybTJ1aXYodGhpcy5hZGRyLHQpLFRlKGUsdCkpfWZ1bmN0aW9uIHVTKG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtMZShlLHQpfHwobi51bmlmb3JtM3Vpdih0aGlzLmFkZHIsdCksVGUoZSx0KSl9ZnVuY3Rpb24gaFMobix0KXtsZXQgZT10aGlzLmNhY2hlO0xlKGUsdCl8fChuLnVuaWZvcm00dWl2KHRoaXMuYWRkcix0KSxUZShlLHQpKX1mdW5jdGlvbiBmUyhuLHQsZSl7bGV0IGk9dGhpcy5jYWNoZSxyPWUuYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYobi51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksZS5zYWZlU2V0VGV4dHVyZTJEKHR8fHgwLHIpfWZ1bmN0aW9uIGRTKG4sdCxlKXtsZXQgaT10aGlzLmNhY2hlLHI9ZS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJihuLnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxlLnNldFRleHR1cmUzRCh0fHx2MCxyKX1mdW5jdGlvbiBwUyhuLHQsZSl7bGV0IGk9dGhpcy5jYWNoZSxyPWUuYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYobi51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksZS5zYWZlU2V0VGV4dHVyZUN1YmUodHx8XzAscil9ZnVuY3Rpb24gbVMobix0LGUpe2xldCBpPXRoaXMuY2FjaGUscj1lLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtpWzBdIT09ciYmKG4udW5pZm9ybTFpKHRoaXMuYWRkcixyKSxpWzBdPXIpLGUuc2V0VGV4dHVyZTJEQXJyYXkodHx8eTAscil9ZnVuY3Rpb24gZ1Mobil7c3dpdGNoKG4pe2Nhc2UgNTEyNjpyZXR1cm4gSzE7Y2FzZSAzNTY2NDpyZXR1cm4gUTE7Y2FzZSAzNTY2NTpyZXR1cm4gajE7Y2FzZSAzNTY2NjpyZXR1cm4gdFM7Y2FzZSAzNTY3NDpyZXR1cm4gZVM7Y2FzZSAzNTY3NTpyZXR1cm4gblM7Y2FzZSAzNTY3NjpyZXR1cm4gaVM7Y2FzZSA1MTI0OmNhc2UgMzU2NzA6cmV0dXJuIHJTO2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gc1M7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBvUztjYXNlIDM1NjY5OmNhc2UgMzU2NzM6cmV0dXJuIGFTO2Nhc2UgNTEyNTpyZXR1cm4gbFM7Y2FzZSAzNjI5NDpyZXR1cm4gY1M7Y2FzZSAzNjI5NTpyZXR1cm4gdVM7Y2FzZSAzNjI5NjpyZXR1cm4gaFM7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBmUztjYXNlIDM1Njc5OmNhc2UgMzYyOTk6Y2FzZSAzNjMwNzpyZXR1cm4gZFM7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gcFM7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gbVN9fWZ1bmN0aW9uIHhTKG4sdCl7bi51bmlmb3JtMWZ2KHRoaXMuYWRkcix0KX1mdW5jdGlvbiB5UyhuLHQpe2xldCBlPXRzKHQsdGhpcy5zaXplLDIpO24udW5pZm9ybTJmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gdlMobix0KXtsZXQgZT10cyh0LHRoaXMuc2l6ZSwzKTtuLnVuaWZvcm0zZnYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIF9TKG4sdCl7bGV0IGU9dHModCx0aGlzLnNpemUsNCk7bi51bmlmb3JtNGZ2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiB3UyhuLHQpe2xldCBlPXRzKHQsdGhpcy5zaXplLDQpO24udW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSl9ZnVuY3Rpb24gTVMobix0KXtsZXQgZT10cyh0LHRoaXMuc2l6ZSw5KTtuLnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLGUpfWZ1bmN0aW9uIGJTKG4sdCl7bGV0IGU9dHModCx0aGlzLnNpemUsMTYpO24udW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsZSl9ZnVuY3Rpb24gU1Mobix0KXtuLnVuaWZvcm0xaXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIEVTKG4sdCl7bi51bmlmb3JtMml2KHRoaXMuYWRkcix0KX1mdW5jdGlvbiBUUyhuLHQpe24udW5pZm9ybTNpdih0aGlzLmFkZHIsdCl9ZnVuY3Rpb24gQVMobix0KXtuLnVuaWZvcm00aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIENTKG4sdCl7bi51bmlmb3JtMXVpdih0aGlzLmFkZHIsdCl9ZnVuY3Rpb24gUlMobix0KXtuLnVuaWZvcm0ydWl2KHRoaXMuYWRkcix0KX1mdW5jdGlvbiBMUyhuLHQpe24udW5pZm9ybTN1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIFBTKG4sdCl7bi51bmlmb3JtNHVpdih0aGlzLmFkZHIsdCl9ZnVuY3Rpb24gRFMobix0LGUpe2xldCBpPXQubGVuZ3RoLHI9TGwoZSxpKTtuLnVuaWZvcm0xaXYodGhpcy5hZGRyLHIpO2ZvcihsZXQgcz0wO3MhPT1pOysrcyllLnNhZmVTZXRUZXh0dXJlMkQodFtzXXx8eDAscltzXSl9ZnVuY3Rpb24gSVMobix0LGUpe2xldCBpPXQubGVuZ3RoLHI9TGwoZSxpKTtuLnVuaWZvcm0xaXYodGhpcy5hZGRyLHIpO2ZvcihsZXQgcz0wO3MhPT1pOysrcyllLnNldFRleHR1cmUzRCh0W3NdfHx2MCxyW3NdKX1mdW5jdGlvbiBOUyhuLHQsZSl7bGV0IGk9dC5sZW5ndGgscj1MbChlLGkpO24udW5pZm9ybTFpdih0aGlzLmFkZHIscik7Zm9yKGxldCBzPTA7cyE9PWk7KytzKWUuc2FmZVNldFRleHR1cmVDdWJlKHRbc118fF8wLHJbc10pfWZ1bmN0aW9uIEZTKG4sdCxlKXtsZXQgaT10Lmxlbmd0aCxyPUxsKGUsaSk7bi51bmlmb3JtMWl2KHRoaXMuYWRkcixyKTtmb3IobGV0IHM9MDtzIT09aTsrK3MpZS5zZXRUZXh0dXJlMkRBcnJheSh0W3NdfHx5MCxyW3NdKX1mdW5jdGlvbiB6UyhuKXtzd2l0Y2gobil7Y2FzZSA1MTI2OnJldHVybiB4UztjYXNlIDM1NjY0OnJldHVybiB5UztjYXNlIDM1NjY1OnJldHVybiB2UztjYXNlIDM1NjY2OnJldHVybiBfUztjYXNlIDM1Njc0OnJldHVybiB3UztjYXNlIDM1Njc1OnJldHVybiBNUztjYXNlIDM1Njc2OnJldHVybiBiUztjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gU1M7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBFUztjYXNlIDM1NjY4OmNhc2UgMzU2NzI6cmV0dXJuIFRTO2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gQVM7Y2FzZSA1MTI1OnJldHVybiBDUztjYXNlIDM2Mjk0OnJldHVybiBSUztjYXNlIDM2Mjk1OnJldHVybiBMUztjYXNlIDM2Mjk2OnJldHVybiBQUztjYXNlIDM1Njc4OmNhc2UgMzYxOTg6Y2FzZSAzNjI5ODpjYXNlIDM2MzA2OmNhc2UgMzU2ODI6cmV0dXJuIERTO2Nhc2UgMzU2Nzk6Y2FzZSAzNjI5OTpjYXNlIDM2MzA3OnJldHVybiBJUztjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBOUztjYXNlIDM2Mjg5OmNhc2UgMzYzMDM6Y2FzZSAzNjMxMTpjYXNlIDM2MjkyOnJldHVybiBGU319ZnVuY3Rpb24gVVMobix0LGUpe3RoaXMuaWQ9bix0aGlzLmFkZHI9ZSx0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9Z1ModC50eXBlKX1mdW5jdGlvbiB3MChuLHQsZSl7dGhpcy5pZD1uLHRoaXMuYWRkcj1lLHRoaXMuY2FjaGU9W10sdGhpcy5zaXplPXQuc2l6ZSx0aGlzLnNldFZhbHVlPXpTKHQudHlwZSl9dzAucHJvdG90eXBlLnVwZGF0ZUNhY2hlPWZ1bmN0aW9uKG4pe2xldCB0PXRoaXMuY2FjaGU7biBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSYmdC5sZW5ndGghPT1uLmxlbmd0aCYmKHRoaXMuY2FjaGU9bmV3IEZsb2F0MzJBcnJheShuLmxlbmd0aCkpLFRlKHQsbil9O2Z1bmN0aW9uIE0wKG4pe3RoaXMuaWQ9bix0aGlzLnNlcT1bXSx0aGlzLm1hcD17fX1NMC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24obix0LGUpe2xldCBpPXRoaXMuc2VxO2ZvcihsZXQgcj0wLHM9aS5sZW5ndGg7ciE9PXM7KytyKXtsZXQgbz1pW3JdO28uc2V0VmFsdWUobix0W28uaWRdLGUpfX07dmFyIFR1PS8oXHcrKShcXSk/KFxbfFwuKT8vZztmdW5jdGlvbiBFZyhuLHQpe24uc2VxLnB1c2godCksbi5tYXBbdC5pZF09dH1mdW5jdGlvbiBCUyhuLHQsZSl7bGV0IGk9bi5uYW1lLHI9aS5sZW5ndGg7Zm9yKFR1Lmxhc3RJbmRleD0wOzspe2xldCBzPVR1LmV4ZWMoaSksbz1UdS5sYXN0SW5kZXgsYT1zWzFdLGw9c1syXT09PSJdIixjPXNbM107aWYobCYmKGE9YXwwKSxjPT09dm9pZCAwfHxjPT09IlsiJiZvKzI9PT1yKXtFZyhlLGM9PT12b2lkIDA/bmV3IFVTKGEsbix0KTpuZXcgdzAoYSxuLHQpKTticmVha31lbHNle2xldCBoPWUubWFwW2FdO2g9PT12b2lkIDAmJihoPW5ldyBNMChhKSxFZyhlLGgpKSxlPWh9fX1mdW5jdGlvbiBpaShuLHQpe3RoaXMuc2VxPVtdLHRoaXMubWFwPXt9O2xldCBlPW4uZ2V0UHJvZ3JhbVBhcmFtZXRlcih0LDM1NzE4KTtmb3IobGV0IGk9MDtpPGU7KytpKXtsZXQgcj1uLmdldEFjdGl2ZVVuaWZvcm0odCxpKSxzPW4uZ2V0VW5pZm9ybUxvY2F0aW9uKHQsci5uYW1lKTtCUyhyLHMsdGhpcyl9fWlpLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihuLHQsZSxpKXtsZXQgcj10aGlzLm1hcFt0XTtyIT09dm9pZCAwJiZyLnNldFZhbHVlKG4sZSxpKX07aWkucHJvdG90eXBlLnNldE9wdGlvbmFsPWZ1bmN0aW9uKG4sdCxlKXtsZXQgaT10W2VdO2khPT12b2lkIDAmJnRoaXMuc2V0VmFsdWUobixlLGkpfTtpaS51cGxvYWQ9ZnVuY3Rpb24obix0LGUsaSl7Zm9yKGxldCByPTAscz10Lmxlbmd0aDtyIT09czsrK3Ipe2xldCBvPXRbcl0sYT1lW28uaWRdO2EubmVlZHNVcGRhdGUhPT0hMSYmby5zZXRWYWx1ZShuLGEudmFsdWUsaSl9fTtpaS5zZXFXaXRoVmFsdWU9ZnVuY3Rpb24obix0KXtsZXQgZT1bXTtmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2khPT1yOysraSl7bGV0IHM9bltpXTtzLmlkIGluIHQmJmUucHVzaChzKX1yZXR1cm4gZX07ZnVuY3Rpb24gVGcobix0LGUpe2xldCBpPW4uY3JlYXRlU2hhZGVyKHQpO3JldHVybiBuLnNoYWRlclNvdXJjZShpLGUpLG4uY29tcGlsZVNoYWRlcihpKSxpfXZhciBPUz0wO2Z1bmN0aW9uIGtTKG4pe2xldCB0PW4uc3BsaXQoYApgKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdPWUrMSsiOiAiK3RbZV07cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIEhTKG4pe3N3aXRjaChuKXtjYXNlIHJpOnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSAkdDpyZXR1cm5bInNSR0IiLCIoIHZhbHVlICkiXTtkZWZhdWx0OnJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgZW5jb2Rpbmc6IixuKSxbIkxpbmVhciIsIiggdmFsdWUgKSJdfX1mdW5jdGlvbiBBZyhuLHQsZSl7bGV0IGk9bi5nZXRTaGFkZXJQYXJhbWV0ZXIodCwzNTcxMykscj1uLmdldFNoYWRlckluZm9Mb2codCkudHJpbSgpO3JldHVybiBpJiZyPT09IiI/IiI6ZS50b1VwcGVyQ2FzZSgpK2AKCmArcitgCgpgK2tTKG4uZ2V0U2hhZGVyU291cmNlKHQpKX1mdW5jdGlvbiBWUyhuLHQpe2xldCBlPUhTKHQpO3JldHVybiJ2ZWM0ICIrbisiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gTGluZWFyVG8iK2VbMF0rZVsxXSsiOyB9In1mdW5jdGlvbiBHUyhuLHQpe2xldCBlO3N3aXRjaCh0KXtjYXNlIG13OmU9IkxpbmVhciI7YnJlYWs7Y2FzZSBndzplPSJSZWluaGFyZCI7YnJlYWs7Y2FzZSB4dzplPSJPcHRpbWl6ZWRDaW5lb24iO2JyZWFrO2Nhc2UgeXc6ZT0iQUNFU0ZpbG1pYyI7YnJlYWs7Y2FzZSB2dzplPSJDdXN0b20iO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIHRvbmVNYXBwaW5nOiIsdCksZT0iTGluZWFyIn1yZXR1cm4idmVjMyAiK24rIiggdmVjMyBjb2xvciApIHsgcmV0dXJuICIrZSsiVG9uZU1hcHBpbmcoIGNvbG9yICk7IH0ifWZ1bmN0aW9uIFdTKG4pe3JldHVybltuLmV4dGVuc2lvbkRlcml2YXRpdmVzfHxuLmVudk1hcEN1YmVVVnx8bi5idW1wTWFwfHxuLnRhbmdlbnRTcGFjZU5vcm1hbE1hcHx8bi5jbGVhcmNvYXROb3JtYWxNYXB8fG4uZmxhdFNoYWRpbmd8fG4uc2hhZGVySUQ9PT0icGh5c2ljYWwiPyIjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZSI6IiIsKG4uZXh0ZW5zaW9uRnJhZ0RlcHRofHxuLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIpJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlIjoiIixuLmV4dGVuc2lvbkRyYXdCdWZmZXJzJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM/IiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUiOiIiLChuLmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fG4uZW52TWFwfHxuLnRyYW5zbWlzc2lvbikmJm4ucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgOiBlbmFibGUiOiIiXS5maWx0ZXIoSnMpLmpvaW4oYApgKX1mdW5jdGlvbiBxUyhuKXtsZXQgdD1bXTtmb3IobGV0IGUgaW4gbil7bGV0IGk9bltlXTtpIT09ITEmJnQucHVzaCgiI2RlZmluZSAiK2UrIiAiK2kpfXJldHVybiB0LmpvaW4oYApgKX1mdW5jdGlvbiBYUyhuLHQpe2xldCBlPXt9LGk9bi5nZXRQcm9ncmFtUGFyYW1ldGVyKHQsMzU3MjEpO2ZvcihsZXQgcj0wO3I8aTtyKyspe2xldCBzPW4uZ2V0QWN0aXZlQXR0cmliKHQsciksbz1zLm5hbWUsYT0xO3MudHlwZT09PTM1Njc0JiYoYT0yKSxzLnR5cGU9PT0zNTY3NSYmKGE9Mykscy50eXBlPT09MzU2NzYmJihhPTQpLGVbb109e3R5cGU6cy50eXBlLGxvY2F0aW9uOm4uZ2V0QXR0cmliTG9jYXRpb24odCxvKSxsb2NhdGlvblNpemU6YX19cmV0dXJuIGV9ZnVuY3Rpb24gSnMobil7cmV0dXJuIG4hPT0iIn1mdW5jdGlvbiBDZyhuLHQpe3JldHVybiBuLnJlcGxhY2UoL05VTV9ESVJfTElHSFRTL2csdC5udW1EaXJMaWdodHMpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUUy9nLHQubnVtU3BvdExpZ2h0cykucmVwbGFjZSgvTlVNX1JFQ1RfQVJFQV9MSUdIVFMvZyx0Lm51bVJlY3RBcmVhTGlnaHRzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRTL2csdC5udW1Qb2ludExpZ2h0cykucmVwbGFjZSgvTlVNX0hFTUlfTElHSFRTL2csdC5udW1IZW1pTGlnaHRzKS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUX1NIQURPV1MvZyx0Lm51bURpckxpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRfU0hBRE9XUy9nLHQubnVtU3BvdExpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MvZyx0Lm51bVBvaW50TGlnaHRTaGFkb3dzKX1mdW5jdGlvbiBSZyhuLHQpe3JldHVybiBuLnJlcGxhY2UoL05VTV9DTElQUElOR19QTEFORVMvZyx0Lm51bUNsaXBwaW5nUGxhbmVzKS5yZXBsYWNlKC9VTklPTl9DTElQUElOR19QTEFORVMvZyx0Lm51bUNsaXBwaW5nUGxhbmVzLXQubnVtQ2xpcEludGVyc2VjdGlvbil9dmFyIFlTPS9eWyBcdF0qI2luY2x1ZGUgKzwoW1x3XGQuL10rKT4vZ207ZnVuY3Rpb24gR3Uobil7cmV0dXJuIG4ucmVwbGFjZShZUyxaUyl9ZnVuY3Rpb24gWlMobix0KXtsZXQgZT1QdFt0XTtpZihlPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCByZXNvbHZlICNpbmNsdWRlIDwiK3QrIj4iKTtyZXR1cm4gR3UoZSl9dmFyIEpTPS8jcHJhZ21hIHVucm9sbF9sb29wW1xzXSs/Zm9yIFwoIGludCBpIFw9IChcZCspXDsgaSA8IChcZCspXDsgaSBcK1wrIFwpIFx7KFtcc1xTXSs/KSg/PVx9KVx9L2csJFM9LyNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRccytmb3JccypcKFxzKmludFxzK2lccyo9XHMqKFxkKylccyo7XHMqaVxzKjxccyooXGQrKVxzKjtccyppXHMqXCtcK1xzKlwpXHMqeyhbXHNcU10rPyl9XHMrI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQvZztmdW5jdGlvbiBMZyhuKXtyZXR1cm4gbi5yZXBsYWNlKCRTLGIwKS5yZXBsYWNlKEpTLEtTKX1mdW5jdGlvbiBLUyhuLHQsZSxpKXtyZXR1cm4gY29uc29sZS53YXJuKCJXZWJHTFByb2dyYW06ICNwcmFnbWEgdW5yb2xsX2xvb3Agc2hhZGVyIHN5bnRheCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQgc3ludGF4IGluc3RlYWQuIiksYjAobix0LGUsaSl9ZnVuY3Rpb24gYjAobix0LGUsaSl7bGV0IHI9IiI7Zm9yKGxldCBzPXBhcnNlSW50KHQpO3M8cGFyc2VJbnQoZSk7cysrKXIrPWkucmVwbGFjZSgvXFtccyppXHMqXF0vZywiWyAiK3MrIiBdIikucmVwbGFjZSgvVU5ST0xMRURfTE9PUF9JTkRFWC9nLHMpO3JldHVybiByfWZ1bmN0aW9uIFBnKG4pe2xldCB0PSJwcmVjaXNpb24gIituLnByZWNpc2lvbitgIGZsb2F0OwpwcmVjaXNpb24gYCtuLnByZWNpc2lvbisiIGludDsiO3JldHVybiBuLnByZWNpc2lvbj09PSJoaWdocCI/dCs9YAojZGVmaW5lIEhJR0hfUFJFQ0lTSU9OYDpuLnByZWNpc2lvbj09PSJtZWRpdW1wIj90Kz1gCiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTmA6bi5wcmVjaXNpb249PT0ibG93cCImJih0Kz1gCiNkZWZpbmUgTE9XX1BSRUNJU0lPTmApLHR9ZnVuY3Rpb24gUVMobil7bGV0IHQ9IlNIQURPV01BUF9UWVBFX0JBU0lDIjtyZXR1cm4gbi5zaGFkb3dNYXBUeXBlPT09bzA/dD0iU0hBRE9XTUFQX1RZUEVfUENGIjpuLnNoYWRvd01hcFR5cGU9PT1ZXz90PSJTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCI6bi5zaGFkb3dNYXBUeXBlPT09WnMmJih0PSJTSEFET1dNQVBfVFlQRV9WU00iKSx0fWZ1bmN0aW9uIGpTKG4pe2xldCB0PSJFTlZNQVBfVFlQRV9DVUJFIjtpZihuLmVudk1hcClzd2l0Y2gobi5lbnZNYXBNb2RlKXtjYXNlIFRvOmNhc2UgQW86dD0iRU5WTUFQX1RZUEVfQ1VCRSI7YnJlYWs7Y2FzZSBDbDpjYXNlIEpoOnQ9IkVOVk1BUF9UWVBFX0NVQkVfVVYiO2JyZWFrfXJldHVybiB0fWZ1bmN0aW9uIHRFKG4pe2xldCB0PSJFTlZNQVBfTU9ERV9SRUZMRUNUSU9OIjtpZihuLmVudk1hcClzd2l0Y2gobi5lbnZNYXBNb2RlKXtjYXNlIEFvOmNhc2UgSmg6dD0iRU5WTUFQX01PREVfUkVGUkFDVElPTiI7YnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24gZUUobil7bGV0IHQ9IkVOVk1BUF9CTEVORElOR19OT05FIjtpZihuLmVudk1hcClzd2l0Y2gobi5jb21iaW5lKXtjYXNlIEFsOnQ9IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7YnJlYWs7Y2FzZSBkdzp0PSJFTlZNQVBfQkxFTkRJTkdfTUlYIjticmVhaztjYXNlIHB3OnQ9IkVOVk1BUF9CTEVORElOR19BREQiO2JyZWFrfXJldHVybiB0fWZ1bmN0aW9uIG5FKG4sdCxlLGkpe2xldCByPW4uZ2V0Q29udGV4dCgpLHM9ZS5kZWZpbmVzLG89ZS52ZXJ0ZXhTaGFkZXIsYT1lLmZyYWdtZW50U2hhZGVyLGw9UVMoZSksYz1qUyhlKSx1PXRFKGUpLGg9ZUUoZSksZj1lLmlzV2ViR0wyPyIiOldTKGUpLGQ9cVMocyksZz1yLmNyZWF0ZVByb2dyYW0oKSx4LHYsbT1lLmdsc2xWZXJzaW9uPyIjdmVyc2lvbiAiK2UuZ2xzbFZlcnNpb24rYApgOiIiO2UuaXNSYXdTaGFkZXJNYXRlcmlhbD8oeD1bZF0uZmlsdGVyKEpzKS5qb2luKGAKYCkseC5sZW5ndGg+MCYmKHgrPWAKYCksdj1bZixkXS5maWx0ZXIoSnMpLmpvaW4oYApgKSx2Lmxlbmd0aD4wJiYodis9YApgKSk6KHg9W1BnKGUpLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrZS5zaGFkZXJOYW1lLGQsZS5pbnN0YW5jaW5nPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HIjoiIixlLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfSU5TVEFOQ0lOR19DT0xPUiI6IiIsZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFZFUlRFWF9URVhUVVJFUyI6IiIsIiNkZWZpbmUgTUFYX0JPTkVTICIrZS5tYXhCb25lcyxlLnVzZUZvZyYmZS5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsZS51c2VGb2cmJmUuZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsZS5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsZS5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsZS5lbnZNYXA/IiNkZWZpbmUgIit1OiIiLGUubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixlLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsZS5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLGUuYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsZS5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsZS5ub3JtYWxNYXAmJmUub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixlLm5vcm1hbE1hcCYmZS50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsZS5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLGUuY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixlLmRpc3BsYWNlbWVudE1hcCYmZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFVTRV9ESVNQTEFDRU1FTlRNQVAiOiIiLGUuc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixlLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsZS5zcGVjdWxhckNvbG9yTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUkNPTE9STUFQIjoiIixlLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixlLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixlLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsZS50cmFuc21pc3Npb24/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTiI6IiIsZS50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsZS50aGlja25lc3NNYXA/IiNkZWZpbmUgVVNFX1RISUNLTkVTU01BUCI6IiIsZS5zaGVlbkNvbG9yTWFwPyIjZGVmaW5lIFVTRV9TSEVFTkNPTE9STUFQIjoiIixlLnNoZWVuUm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9TSEVFTlJPVUdITkVTU01BUCI6IiIsZS52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsZS52ZXJ0ZXhDb2xvcnM/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixlLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLGUudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsZS51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsZS5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsZS5za2lubmluZz8iI2RlZmluZSBVU0VfU0tJTk5JTkciOiIiLGUudXNlVmVydGV4VGV4dHVyZT8iI2RlZmluZSBCT05FX1RFWFRVUkUiOiIiLGUubW9ycGhUYXJnZXRzPyIjZGVmaW5lIFVTRV9NT1JQSFRBUkdFVFMiOiIiLGUubW9ycGhOb3JtYWxzJiZlLmZsYXRTaGFkaW5nPT09ITE/IiNkZWZpbmUgVVNFX01PUlBITk9STUFMUyI6IiIsZS5tb3JwaFRhcmdldHMmJmUuaXNXZWJHTDI/IiNkZWZpbmUgTU9SUEhUQVJHRVRTX1RFWFRVUkUiOiIiLGUubW9ycGhUYXJnZXRzJiZlLmlzV2ViR0wyPyIjZGVmaW5lIE1PUlBIVEFSR0VUU19DT1VOVCAiK2UubW9ycGhUYXJnZXRzQ291bnQ6IiIsZS5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLGUuZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLGUuc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixlLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitsOiIiLGUuc2l6ZUF0dGVudWF0aW9uPyIjZGVmaW5lIFVTRV9TSVpFQVRURU5VQVRJT04iOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmZS5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4OyIsInVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lORyIsIglhdHRyaWJ1dGUgbWF0NCBpbnN0YW5jZU1hdHJpeDsiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1IiLCIJYXR0cmlidXRlIHZlYzMgaW5zdGFuY2VDb2xvcjsiLCIjZW5kaWYiLCJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjsiLCJhdHRyaWJ1dGUgdmVjMyBub3JtYWw7IiwiYXR0cmlidXRlIHZlYzIgdXY7IiwiI2lmZGVmIFVTRV9UQU5HRU5UIiwiCWF0dHJpYnV0ZSB2ZWM0IHRhbmdlbnQ7IiwiI2VuZGlmIiwiI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApIiwiCWF0dHJpYnV0ZSB2ZWM0IGNvbG9yOyIsIiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIiwiCWF0dHJpYnV0ZSB2ZWMzIGNvbG9yOyIsIiNlbmRpZiIsIiNpZiAoIGRlZmluZWQoIFVTRV9NT1JQSFRBUkdFVFMgKSAmJiAhIGRlZmluZWQoIE1PUlBIVEFSR0VUU19URVhUVVJFICkgKSIsIglhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDA7IiwiCWF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MTsiLCIJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQyOyIsIglhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDM7IiwiCSNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTIiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDA7IiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDE7IiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDI7IiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDM7IiwiCSNlbHNlIiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDQ7IiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDU7IiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDY7IiwiCQlhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDc7IiwiCSNlbmRpZiIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfU0tJTk5JTkciLCIJYXR0cmlidXRlIHZlYzQgc2tpbkluZGV4OyIsIglhdHRyaWJ1dGUgdmVjNCBza2luV2VpZ2h0OyIsIiNlbmRpZiIsYApgXS5maWx0ZXIoSnMpLmpvaW4oYApgKSx2PVtmLFBnKGUpLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrZS5zaGFkZXJOYW1lLGQsZS51c2VGb2cmJmUuZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLGUudXNlRm9nJiZlLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLGUubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLGUubWF0Y2FwPyIjZGVmaW5lIFVTRV9NQVRDQVAiOiIiLGUuZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLGUuZW52TWFwPyIjZGVmaW5lICIrYzoiIixlLmVudk1hcD8iI2RlZmluZSAiK3U6IiIsZS5lbnZNYXA/IiNkZWZpbmUgIitoOiIiLGUubGlnaHRNYXA/IiNkZWZpbmUgVVNFX0xJR0hUTUFQIjoiIixlLmFvTWFwPyIjZGVmaW5lIFVTRV9BT01BUCI6IiIsZS5lbWlzc2l2ZU1hcD8iI2RlZmluZSBVU0VfRU1JU1NJVkVNQVAiOiIiLGUuYnVtcE1hcD8iI2RlZmluZSBVU0VfQlVNUE1BUCI6IiIsZS5ub3JtYWxNYXA/IiNkZWZpbmUgVVNFX05PUk1BTE1BUCI6IiIsZS5ub3JtYWxNYXAmJmUub2JqZWN0U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgT0JKRUNUU1BBQ0VfTk9STUFMTUFQIjoiIixlLm5vcm1hbE1hcCYmZS50YW5nZW50U3BhY2VOb3JtYWxNYXA/IiNkZWZpbmUgVEFOR0VOVFNQQUNFX05PUk1BTE1BUCI6IiIsZS5jbGVhcmNvYXQ/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVCI6IiIsZS5jbGVhcmNvYXRNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVE1BUCI6IiIsZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAiOiIiLGUuY2xlYXJjb2F0Tm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQIjoiIixlLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsZS5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLGUuc3BlY3VsYXJDb2xvck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJDT0xPUk1BUCI6IiIsZS5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsZS5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsZS5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLGUuYWxwaGFUZXN0PyIjZGVmaW5lIFVTRV9BTFBIQVRFU1QiOiIiLGUuc2hlZW4/IiNkZWZpbmUgVVNFX1NIRUVOIjoiIixlLnNoZWVuQ29sb3JNYXA/IiNkZWZpbmUgVVNFX1NIRUVOQ09MT1JNQVAiOiIiLGUuc2hlZW5Sb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1NIRUVOUk9VR0hORVNTTUFQIjoiIixlLnRyYW5zbWlzc2lvbj8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OIjoiIixlLnRyYW5zbWlzc2lvbk1hcD8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OTUFQIjoiIixlLnRoaWNrbmVzc01hcD8iI2RlZmluZSBVU0VfVEhJQ0tORVNTTUFQIjoiIixlLmRlY29kZVZpZGVvVGV4dHVyZT8iI2RlZmluZSBERUNPREVfVklERU9fVEVYVFVSRSI6IiIsZS52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsZS52ZXJ0ZXhDb2xvcnN8fGUuaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsZS52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixlLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLGUudXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLGUuZ3JhZGllbnRNYXA/IiNkZWZpbmUgVVNFX0dSQURJRU5UTUFQIjoiIixlLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixlLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsZS5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsZS5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLGUuc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsZS5wcmVtdWx0aXBsaWVkQWxwaGE/IiNkZWZpbmUgUFJFTVVMVElQTElFRF9BTFBIQSI6IiIsZS5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz8iI2RlZmluZSBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIjoiIixlLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixlLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJmUucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsKGUuZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8ZS5lbnZNYXApJiZlLnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2RlZmluZSBURVhUVVJFX0xPRF9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsZS50b25lTWFwcGluZyE9PXRpPyIjZGVmaW5lIFRPTkVfTUFQUElORyI6IiIsZS50b25lTWFwcGluZyE9PXRpP1B0LnRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiIsZS50b25lTWFwcGluZyE9PXRpP0dTKCJ0b25lTWFwcGluZyIsZS50b25lTWFwcGluZyk6IiIsZS5kaXRoZXJpbmc/IiNkZWZpbmUgRElUSEVSSU5HIjoiIixlLmFscGhhV3JpdGU/IiI6IiNkZWZpbmUgT1BBUVVFIixQdC5lbmNvZGluZ3NfcGFyc19mcmFnbWVudCxWUygibGluZWFyVG9PdXRwdXRUZXhlbCIsZS5vdXRwdXRFbmNvZGluZyksZS5kZXB0aFBhY2tpbmc/IiNkZWZpbmUgREVQVEhfUEFDS0lORyAiK2UuZGVwdGhQYWNraW5nOiIiLGAKYF0uZmlsdGVyKEpzKS5qb2luKGAKYCkpLG89R3Uobyksbz1DZyhvLGUpLG89UmcobyxlKSxhPUd1KGEpLGE9Q2coYSxlKSxhPVJnKGEsZSksbz1MZyhvKSxhPUxnKGEpLGUuaXNXZWJHTDImJmUuaXNSYXdTaGFkZXJNYXRlcmlhbCE9PSEwJiYobT1gI3ZlcnNpb24gMzAwIGVzCmAseD1bInByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyREFycmF5OyIsIiNkZWZpbmUgYXR0cmlidXRlIGluIiwiI2RlZmluZSB2YXJ5aW5nIG91dCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiXS5qb2luKGAKYCkrYApgK3gsdj1bIiNkZWZpbmUgdmFyeWluZyBpbiIsZS5nbHNsVmVyc2lvbj09PXRnPyIiOiJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgaGlnaHAgdmVjNCBwY19mcmFnQ29sb3I7IixlLmdsc2xWZXJzaW9uPT09dGc/IiI6IiNkZWZpbmUgZ2xfRnJhZ0NvbG9yIHBjX2ZyYWdDb2xvciIsIiNkZWZpbmUgZ2xfRnJhZ0RlcHRoRVhUIGdsX0ZyYWdEZXB0aCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmVDdWJlIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmUyRFByb2ogdGV4dHVyZVByb2oiLCIjZGVmaW5lIHRleHR1cmUyRExvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qTG9kRVhUIHRleHR1cmVQcm9qTG9kIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUxvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRHcmFkRVhUIHRleHR1cmVHcmFkIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qR3JhZEVYVCB0ZXh0dXJlUHJvakdyYWQiLCIjZGVmaW5lIHRleHR1cmVDdWJlR3JhZEVYVCB0ZXh0dXJlR3JhZCJdLmpvaW4oYApgKStgCmArdik7bGV0IHA9bSt4K28sYj1tK3YrYSxfPVRnKHIsMzU2MzMscCksUz1UZyhyLDM1NjMyLGIpO2lmKHIuYXR0YWNoU2hhZGVyKGcsXyksci5hdHRhY2hTaGFkZXIoZyxTKSxlLmluZGV4MEF0dHJpYnV0ZU5hbWUhPT12b2lkIDA/ci5iaW5kQXR0cmliTG9jYXRpb24oZywwLGUuaW5kZXgwQXR0cmlidXRlTmFtZSk6ZS5tb3JwaFRhcmdldHM9PT0hMCYmci5iaW5kQXR0cmliTG9jYXRpb24oZywwLCJwb3NpdGlvbiIpLHIubGlua1Byb2dyYW0oZyksbi5kZWJ1Zy5jaGVja1NoYWRlckVycm9ycyl7bGV0IEg9ci5nZXRQcm9ncmFtSW5mb0xvZyhnKS50cmltKCksdHQ9ci5nZXRTaGFkZXJJbmZvTG9nKF8pLnRyaW0oKSxYPXIuZ2V0U2hhZGVySW5mb0xvZyhTKS50cmltKCkseT0hMCxSPSEwO2lmKHIuZ2V0UHJvZ3JhbVBhcmFtZXRlcihnLDM1NzE0KT09PSExKXt5PSExO2xldCBEPUFnKHIsXywidmVydGV4IiksRj1BZyhyLFMsImZyYWdtZW50Iik7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xQcm9ncmFtOiBTaGFkZXIgRXJyb3IgIityLmdldEVycm9yKCkrIiAtIFZBTElEQVRFX1NUQVRVUyAiK3IuZ2V0UHJvZ3JhbVBhcmFtZXRlcihnLDM1NzE1KStgCgpQcm9ncmFtIEluZm8gTG9nOiBgK0grYApgK0QrYApgK0YpfWVsc2UgSCE9PSIiP2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBQcm9ncmFtIEluZm8gTG9nOiIsSCk6KHR0PT09IiJ8fFg9PT0iIikmJihSPSExKTtSJiYodGhpcy5kaWFnbm9zdGljcz17cnVubmFibGU6eSxwcm9ncmFtTG9nOkgsdmVydGV4U2hhZGVyOntsb2c6dHQscHJlZml4Onh9LGZyYWdtZW50U2hhZGVyOntsb2c6WCxwcmVmaXg6dn19KX1yLmRlbGV0ZVNoYWRlcihfKSxyLmRlbGV0ZVNoYWRlcihTKTtsZXQgTDt0aGlzLmdldFVuaWZvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuIEw9PT12b2lkIDAmJihMPW5ldyBpaShyLGcpKSxMfTtsZXQgQTtyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIEE9PT12b2lkIDAmJihBPVhTKHIsZykpLEF9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2kucmVsZWFzZVN0YXRlc09mUHJvZ3JhbSh0aGlzKSxyLmRlbGV0ZVByb2dyYW0oZyksdGhpcy5wcm9ncmFtPXZvaWQgMH0sdGhpcy5uYW1lPWUuc2hhZGVyTmFtZSx0aGlzLmlkPU9TKyssdGhpcy5jYWNoZUtleT10LHRoaXMudXNlZFRpbWVzPTEsdGhpcy5wcm9ncmFtPWcsdGhpcy52ZXJ0ZXhTaGFkZXI9Xyx0aGlzLmZyYWdtZW50U2hhZGVyPVMsdGhpc312YXIgaUU9MCxXdT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc2hhZGVyQ2FjaGU9bmV3IE1hcCx0aGlzLm1hdGVyaWFsQ2FjaGU9bmV3IE1hcH11cGRhdGUodCl7bGV0IGU9dC52ZXJ0ZXhTaGFkZXIsaT10LmZyYWdtZW50U2hhZGVyLHI9dGhpcy5fZ2V0U2hhZGVyU3RhZ2UoZSkscz10aGlzLl9nZXRTaGFkZXJTdGFnZShpKSxvPXRoaXMuX2dldFNoYWRlckNhY2hlRm9yTWF0ZXJpYWwodCk7cmV0dXJuIG8uaGFzKHIpPT09ITEmJihvLmFkZChyKSxyLnVzZWRUaW1lcysrKSxvLmhhcyhzKT09PSExJiYoby5hZGQocykscy51c2VkVGltZXMrKyksdGhpc31yZW1vdmUodCl7bGV0IGU9dGhpcy5tYXRlcmlhbENhY2hlLmdldCh0KTtmb3IobGV0IGkgb2YgZSlpLnVzZWRUaW1lcy0tLGkudXNlZFRpbWVzPT09MCYmdGhpcy5zaGFkZXJDYWNoZS5kZWxldGUoaSk7cmV0dXJuIHRoaXMubWF0ZXJpYWxDYWNoZS5kZWxldGUodCksdGhpc31nZXRWZXJ0ZXhTaGFkZXJJRCh0KXtyZXR1cm4gdGhpcy5fZ2V0U2hhZGVyU3RhZ2UodC52ZXJ0ZXhTaGFkZXIpLmlkfWdldEZyYWdtZW50U2hhZGVySUQodCl7cmV0dXJuIHRoaXMuX2dldFNoYWRlclN0YWdlKHQuZnJhZ21lbnRTaGFkZXIpLmlkfWRpc3Bvc2UoKXt0aGlzLnNoYWRlckNhY2hlLmNsZWFyKCksdGhpcy5tYXRlcmlhbENhY2hlLmNsZWFyKCl9X2dldFNoYWRlckNhY2hlRm9yTWF0ZXJpYWwodCl7bGV0IGU9dGhpcy5tYXRlcmlhbENhY2hlO3JldHVybiBlLmhhcyh0KT09PSExJiZlLnNldCh0LG5ldyBTZXQpLGUuZ2V0KHQpfV9nZXRTaGFkZXJTdGFnZSh0KXtsZXQgZT10aGlzLnNoYWRlckNhY2hlO2lmKGUuaGFzKHQpPT09ITEpe2xldCBpPW5ldyBxdTtlLnNldCh0LGkpfXJldHVybiBlLmdldCh0KX19LHF1PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pZD1pRSsrLHRoaXMudXNlZFRpbWVzPTB9fTtmdW5jdGlvbiByRShuLHQsZSxpLHIscyxvKXtsZXQgYT1uZXcgbmwsbD1uZXcgV3UsYz1bXSx1PXIuaXNXZWJHTDIsaD1yLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsZj1yLmZsb2F0VmVydGV4VGV4dHVyZXMsZD1yLm1heFZlcnRleFVuaWZvcm1zLGc9ci52ZXJ0ZXhUZXh0dXJlcyx4PXIucHJlY2lzaW9uLHY9e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsTWVzaE5vcm1hbE1hdGVyaWFsOiJub3JtYWwiLE1lc2hCYXNpY01hdGVyaWFsOiJiYXNpYyIsTWVzaExhbWJlcnRNYXRlcmlhbDoibGFtYmVydCIsTWVzaFBob25nTWF0ZXJpYWw6InBob25nIixNZXNoVG9vbk1hdGVyaWFsOiJ0b29uIixNZXNoU3RhbmRhcmRNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hQaHlzaWNhbE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaE1hdGNhcE1hdGVyaWFsOiJtYXRjYXAiLExpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifTtmdW5jdGlvbiBtKHkpe2xldCBEPXkuc2tlbGV0b24uYm9uZXM7aWYoZilyZXR1cm4gMTAyNDt7bGV0IHo9TWF0aC5mbG9vcigoZC0yMCkvNCksTj1NYXRoLm1pbih6LEQubGVuZ3RoKTtyZXR1cm4gTjxELmxlbmd0aD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBTa2VsZXRvbiBoYXMgIitELmxlbmd0aCsiIGJvbmVzLiBUaGlzIEdQVSBzdXBwb3J0cyAiK04rIi4iKSwwKTpOfX1mdW5jdGlvbiBwKHksUixELEYseil7bGV0IE49Ri5mb2csVj15LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/Ri5lbnZpcm9ubWVudDpudWxsLFE9KHkuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lOnQpLmdldCh5LmVudk1hcHx8ViksYXQ9dlt5LnR5cGVdLEc9ei5pc1NraW5uZWRNZXNoP20oeik6MDt5LnByZWNpc2lvbiE9PW51bGwmJih4PXIuZ2V0TWF4UHJlY2lzaW9uKHkucHJlY2lzaW9uKSx4IT09eS5wcmVjaXNpb24mJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtLmdldFBhcmFtZXRlcnM6Iix5LnByZWNpc2lvbiwibm90IHN1cHBvcnRlZCwgdXNpbmciLHgsImluc3RlYWQuIikpO2xldCAkLGx0LGR0LHh0O2lmKGF0KXtsZXQgQj1mblthdF07JD1CLnZlcnRleFNoYWRlcixsdD1CLmZyYWdtZW50U2hhZGVyfWVsc2UgJD15LnZlcnRleFNoYWRlcixsdD15LmZyYWdtZW50U2hhZGVyLGwudXBkYXRlKHkpLGR0PWwuZ2V0VmVydGV4U2hhZGVySUQoeSkseHQ9bC5nZXRGcmFnbWVudFNoYWRlcklEKHkpO2xldCBrPW4uZ2V0UmVuZGVyVGFyZ2V0KCksRnQ9eS5hbHBoYVRlc3Q+MCxtdD15LmNsZWFyY29hdD4wO3JldHVybntpc1dlYkdMMjp1LHNoYWRlcklEOmF0LHNoYWRlck5hbWU6eS50eXBlLHZlcnRleFNoYWRlcjokLGZyYWdtZW50U2hhZGVyOmx0LGRlZmluZXM6eS5kZWZpbmVzLGN1c3RvbVZlcnRleFNoYWRlcklEOmR0LGN1c3RvbUZyYWdtZW50U2hhZGVySUQ6eHQsaXNSYXdTaGFkZXJNYXRlcmlhbDp5LmlzUmF3U2hhZGVyTWF0ZXJpYWw9PT0hMCxnbHNsVmVyc2lvbjp5Lmdsc2xWZXJzaW9uLHByZWNpc2lvbjp4LGluc3RhbmNpbmc6ei5pc0luc3RhbmNlZE1lc2g9PT0hMCxpbnN0YW5jaW5nQ29sb3I6ei5pc0luc3RhbmNlZE1lc2g9PT0hMCYmei5pbnN0YW5jZUNvbG9yIT09bnVsbCxzdXBwb3J0c1ZlcnRleFRleHR1cmVzOmcsb3V0cHV0RW5jb2Rpbmc6az09PW51bGw/bi5vdXRwdXRFbmNvZGluZzprLmlzWFJSZW5kZXJUYXJnZXQ9PT0hMD9rLnRleHR1cmUuZW5jb2Rpbmc6cmksbWFwOiEheS5tYXAsbWF0Y2FwOiEheS5tYXRjYXAsZW52TWFwOiEhUSxlbnZNYXBNb2RlOlEmJlEubWFwcGluZyxlbnZNYXBDdWJlVVY6ISFRJiYoUS5tYXBwaW5nPT09Q2x8fFEubWFwcGluZz09PUpoKSxsaWdodE1hcDohIXkubGlnaHRNYXAsYW9NYXA6ISF5LmFvTWFwLGVtaXNzaXZlTWFwOiEheS5lbWlzc2l2ZU1hcCxidW1wTWFwOiEheS5idW1wTWFwLG5vcm1hbE1hcDohIXkubm9ybWFsTWFwLG9iamVjdFNwYWNlTm9ybWFsTWFwOnkubm9ybWFsTWFwVHlwZT09PUh3LHRhbmdlbnRTcGFjZU5vcm1hbE1hcDp5Lm5vcm1hbE1hcFR5cGU9PT1qcixkZWNvZGVWaWRlb1RleHR1cmU6ISF5Lm1hcCYmeS5tYXAuaXNWaWRlb1RleHR1cmU9PT0hMCYmeS5tYXAuZW5jb2Rpbmc9PT0kdCxjbGVhcmNvYXQ6bXQsY2xlYXJjb2F0TWFwOm10JiYhIXkuY2xlYXJjb2F0TWFwLGNsZWFyY29hdFJvdWdobmVzc01hcDptdCYmISF5LmNsZWFyY29hdFJvdWdobmVzc01hcCxjbGVhcmNvYXROb3JtYWxNYXA6bXQmJiEheS5jbGVhcmNvYXROb3JtYWxNYXAsZGlzcGxhY2VtZW50TWFwOiEheS5kaXNwbGFjZW1lbnRNYXAscm91Z2huZXNzTWFwOiEheS5yb3VnaG5lc3NNYXAsbWV0YWxuZXNzTWFwOiEheS5tZXRhbG5lc3NNYXAsc3BlY3VsYXJNYXA6ISF5LnNwZWN1bGFyTWFwLHNwZWN1bGFySW50ZW5zaXR5TWFwOiEheS5zcGVjdWxhckludGVuc2l0eU1hcCxzcGVjdWxhckNvbG9yTWFwOiEheS5zcGVjdWxhckNvbG9yTWFwLGFscGhhTWFwOiEheS5hbHBoYU1hcCxhbHBoYVRlc3Q6RnQsYWxwaGFXcml0ZTp5LmFscGhhV3JpdGV8fHkudHJhbnNwYXJlbnQsZ3JhZGllbnRNYXA6ISF5LmdyYWRpZW50TWFwLHNoZWVuOnkuc2hlZW4+MCxzaGVlbkNvbG9yTWFwOiEheS5zaGVlbkNvbG9yTWFwLHNoZWVuUm91Z2huZXNzTWFwOiEheS5zaGVlblJvdWdobmVzc01hcCx0cmFuc21pc3Npb246eS50cmFuc21pc3Npb24+MCx0cmFuc21pc3Npb25NYXA6ISF5LnRyYW5zbWlzc2lvbk1hcCx0aGlja25lc3NNYXA6ISF5LnRoaWNrbmVzc01hcCxjb21iaW5lOnkuY29tYmluZSx2ZXJ0ZXhUYW5nZW50czohIXkubm9ybWFsTWFwJiYhIXouZ2VvbWV0cnkmJiEhei5nZW9tZXRyeS5hdHRyaWJ1dGVzLnRhbmdlbnQsdmVydGV4Q29sb3JzOnkudmVydGV4Q29sb3JzLHZlcnRleEFscGhhczp5LnZlcnRleENvbG9ycz09PSEwJiYhIXouZ2VvbWV0cnkmJiEhei5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yJiZ6Lmdlb21ldHJ5LmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemU9PT00LHZlcnRleFV2czohIXkubWFwfHwhIXkuYnVtcE1hcHx8ISF5Lm5vcm1hbE1hcHx8ISF5LnNwZWN1bGFyTWFwfHwhIXkuYWxwaGFNYXB8fCEheS5lbWlzc2l2ZU1hcHx8ISF5LnJvdWdobmVzc01hcHx8ISF5Lm1ldGFsbmVzc01hcHx8ISF5LmNsZWFyY29hdE1hcHx8ISF5LmNsZWFyY29hdFJvdWdobmVzc01hcHx8ISF5LmNsZWFyY29hdE5vcm1hbE1hcHx8ISF5LmRpc3BsYWNlbWVudE1hcHx8ISF5LnRyYW5zbWlzc2lvbk1hcHx8ISF5LnRoaWNrbmVzc01hcHx8ISF5LnNwZWN1bGFySW50ZW5zaXR5TWFwfHwhIXkuc3BlY3VsYXJDb2xvck1hcHx8ISF5LnNoZWVuQ29sb3JNYXB8fCEheS5zaGVlblJvdWdobmVzc01hcCx1dnNWZXJ0ZXhPbmx5OiEoISF5Lm1hcHx8ISF5LmJ1bXBNYXB8fCEheS5ub3JtYWxNYXB8fCEheS5zcGVjdWxhck1hcHx8ISF5LmFscGhhTWFwfHwhIXkuZW1pc3NpdmVNYXB8fCEheS5yb3VnaG5lc3NNYXB8fCEheS5tZXRhbG5lc3NNYXB8fCEheS5jbGVhcmNvYXROb3JtYWxNYXB8fHkudHJhbnNtaXNzaW9uPjB8fCEheS50cmFuc21pc3Npb25NYXB8fCEheS50aGlja25lc3NNYXB8fCEheS5zcGVjdWxhckludGVuc2l0eU1hcHx8ISF5LnNwZWN1bGFyQ29sb3JNYXB8fHkuc2hlZW4+MHx8ISF5LnNoZWVuQ29sb3JNYXB8fCEheS5zaGVlblJvdWdobmVzc01hcCkmJiEheS5kaXNwbGFjZW1lbnRNYXAsZm9nOiEhTix1c2VGb2c6eS5mb2csZm9nRXhwMjpOJiZOLmlzRm9nRXhwMixmbGF0U2hhZGluZzohIXkuZmxhdFNoYWRpbmcsc2l6ZUF0dGVudWF0aW9uOnkuc2l6ZUF0dGVudWF0aW9uLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6aCxza2lubmluZzp6LmlzU2tpbm5lZE1lc2g9PT0hMCYmRz4wLG1heEJvbmVzOkcsdXNlVmVydGV4VGV4dHVyZTpmLG1vcnBoVGFyZ2V0czohIXouZ2VvbWV0cnkmJiEhei5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbW9ycGhOb3JtYWxzOiEhei5nZW9tZXRyeSYmISF6Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsbW9ycGhUYXJnZXRzQ291bnQ6ISF6Lmdlb21ldHJ5JiYhIXouZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uP3ouZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aDowLG51bURpckxpZ2h0czpSLmRpcmVjdGlvbmFsLmxlbmd0aCxudW1Qb2ludExpZ2h0czpSLnBvaW50Lmxlbmd0aCxudW1TcG90TGlnaHRzOlIuc3BvdC5sZW5ndGgsbnVtUmVjdEFyZWFMaWdodHM6Ui5yZWN0QXJlYS5sZW5ndGgsbnVtSGVtaUxpZ2h0czpSLmhlbWkubGVuZ3RoLG51bURpckxpZ2h0U2hhZG93czpSLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aCxudW1Qb2ludExpZ2h0U2hhZG93czpSLnBvaW50U2hhZG93TWFwLmxlbmd0aCxudW1TcG90TGlnaHRTaGFkb3dzOlIuc3BvdFNoYWRvd01hcC5sZW5ndGgsbnVtQ2xpcHBpbmdQbGFuZXM6by5udW1QbGFuZXMsbnVtQ2xpcEludGVyc2VjdGlvbjpvLm51bUludGVyc2VjdGlvbixkaXRoZXJpbmc6eS5kaXRoZXJpbmcsc2hhZG93TWFwRW5hYmxlZDpuLnNoYWRvd01hcC5lbmFibGVkJiZELmxlbmd0aD4wLHNoYWRvd01hcFR5cGU6bi5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzp5LnRvbmVNYXBwZWQ/bi50b25lTWFwcGluZzp0aSxwaHlzaWNhbGx5Q29ycmVjdExpZ2h0czpuLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLHByZW11bHRpcGxpZWRBbHBoYTp5LnByZW11bHRpcGxpZWRBbHBoYSxkb3VibGVTaWRlZDp5LnNpZGU9PT1rcixmbGlwU2lkZWQ6eS5zaWRlPT09aGUsZGVwdGhQYWNraW5nOnkuZGVwdGhQYWNraW5nIT09dm9pZCAwP3kuZGVwdGhQYWNraW5nOiExLGluZGV4MEF0dHJpYnV0ZU5hbWU6eS5pbmRleDBBdHRyaWJ1dGVOYW1lLGV4dGVuc2lvbkRlcml2YXRpdmVzOnkuZXh0ZW5zaW9ucyYmeS5leHRlbnNpb25zLmRlcml2YXRpdmVzLGV4dGVuc2lvbkZyYWdEZXB0aDp5LmV4dGVuc2lvbnMmJnkuZXh0ZW5zaW9ucy5mcmFnRGVwdGgsZXh0ZW5zaW9uRHJhd0J1ZmZlcnM6eS5leHRlbnNpb25zJiZ5LmV4dGVuc2lvbnMuZHJhd0J1ZmZlcnMsZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRDp5LmV4dGVuc2lvbnMmJnkuZXh0ZW5zaW9ucy5zaGFkZXJUZXh0dXJlTE9ELHJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoOnV8fGkuaGFzKCJFWFRfZnJhZ19kZXB0aCIpLHJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM6dXx8aS5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZDp1fHxpLmhhcygiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpLGN1c3RvbVByb2dyYW1DYWNoZUtleTp5LmN1c3RvbVByb2dyYW1DYWNoZUtleSgpfX1mdW5jdGlvbiBiKHkpe2xldCBSPVtdO2lmKHkuc2hhZGVySUQ/Ui5wdXNoKHkuc2hhZGVySUQpOihSLnB1c2goeS5jdXN0b21WZXJ0ZXhTaGFkZXJJRCksUi5wdXNoKHkuY3VzdG9tRnJhZ21lbnRTaGFkZXJJRCkpLHkuZGVmaW5lcyE9PXZvaWQgMClmb3IobGV0IEQgaW4geS5kZWZpbmVzKVIucHVzaChEKSxSLnB1c2goeS5kZWZpbmVzW0RdKTtyZXR1cm4geS5pc1Jhd1NoYWRlck1hdGVyaWFsPT09ITEmJihfKFIseSksUyhSLHkpLFIucHVzaChuLm91dHB1dEVuY29kaW5nKSksUi5wdXNoKHkuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KSxSLmpvaW4oKX1mdW5jdGlvbiBfKHksUil7eS5wdXNoKFIucHJlY2lzaW9uKSx5LnB1c2goUi5vdXRwdXRFbmNvZGluZykseS5wdXNoKFIuZW52TWFwTW9kZSkseS5wdXNoKFIuY29tYmluZSkseS5wdXNoKFIudmVydGV4VXZzKSx5LnB1c2goUi5mb2dFeHAyKSx5LnB1c2goUi5zaXplQXR0ZW51YXRpb24pLHkucHVzaChSLm1heEJvbmVzKSx5LnB1c2goUi5tb3JwaFRhcmdldHNDb3VudCkseS5wdXNoKFIubnVtRGlyTGlnaHRzKSx5LnB1c2goUi5udW1Qb2ludExpZ2h0cykseS5wdXNoKFIubnVtU3BvdExpZ2h0cykseS5wdXNoKFIubnVtSGVtaUxpZ2h0cykseS5wdXNoKFIubnVtUmVjdEFyZWFMaWdodHMpLHkucHVzaChSLm51bURpckxpZ2h0U2hhZG93cykseS5wdXNoKFIubnVtUG9pbnRMaWdodFNoYWRvd3MpLHkucHVzaChSLm51bVNwb3RMaWdodFNoYWRvd3MpLHkucHVzaChSLnNoYWRvd01hcFR5cGUpLHkucHVzaChSLnRvbmVNYXBwaW5nKSx5LnB1c2goUi5udW1DbGlwcGluZ1BsYW5lcykseS5wdXNoKFIubnVtQ2xpcEludGVyc2VjdGlvbikseS5wdXNoKFIuYWxwaGFXcml0ZSl9ZnVuY3Rpb24gUyh5LFIpe2EuZGlzYWJsZUFsbCgpLFIuaXNXZWJHTDImJmEuZW5hYmxlKDApLFIuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcyYmYS5lbmFibGUoMSksUi5pbnN0YW5jaW5nJiZhLmVuYWJsZSgyKSxSLmluc3RhbmNpbmdDb2xvciYmYS5lbmFibGUoMyksUi5tYXAmJmEuZW5hYmxlKDQpLFIubWF0Y2FwJiZhLmVuYWJsZSg1KSxSLmVudk1hcCYmYS5lbmFibGUoNiksUi5lbnZNYXBDdWJlVVYmJmEuZW5hYmxlKDcpLFIubGlnaHRNYXAmJmEuZW5hYmxlKDgpLFIuYW9NYXAmJmEuZW5hYmxlKDkpLFIuZW1pc3NpdmVNYXAmJmEuZW5hYmxlKDEwKSxSLmJ1bXBNYXAmJmEuZW5hYmxlKDExKSxSLm5vcm1hbE1hcCYmYS5lbmFibGUoMTIpLFIub2JqZWN0U3BhY2VOb3JtYWxNYXAmJmEuZW5hYmxlKDEzKSxSLnRhbmdlbnRTcGFjZU5vcm1hbE1hcCYmYS5lbmFibGUoMTQpLFIuY2xlYXJjb2F0JiZhLmVuYWJsZSgxNSksUi5jbGVhcmNvYXRNYXAmJmEuZW5hYmxlKDE2KSxSLmNsZWFyY29hdFJvdWdobmVzc01hcCYmYS5lbmFibGUoMTcpLFIuY2xlYXJjb2F0Tm9ybWFsTWFwJiZhLmVuYWJsZSgxOCksUi5kaXNwbGFjZW1lbnRNYXAmJmEuZW5hYmxlKDE5KSxSLnNwZWN1bGFyTWFwJiZhLmVuYWJsZSgyMCksUi5yb3VnaG5lc3NNYXAmJmEuZW5hYmxlKDIxKSxSLm1ldGFsbmVzc01hcCYmYS5lbmFibGUoMjIpLFIuZ3JhZGllbnRNYXAmJmEuZW5hYmxlKDIzKSxSLmFscGhhTWFwJiZhLmVuYWJsZSgyNCksUi5hbHBoYVRlc3QmJmEuZW5hYmxlKDI1KSxSLnZlcnRleENvbG9ycyYmYS5lbmFibGUoMjYpLFIudmVydGV4QWxwaGFzJiZhLmVuYWJsZSgyNyksUi52ZXJ0ZXhVdnMmJmEuZW5hYmxlKDI4KSxSLnZlcnRleFRhbmdlbnRzJiZhLmVuYWJsZSgyOSksUi51dnNWZXJ0ZXhPbmx5JiZhLmVuYWJsZSgzMCksUi5mb2cmJmEuZW5hYmxlKDMxKSx5LnB1c2goYS5tYXNrKSxhLmRpc2FibGVBbGwoKSxSLnVzZUZvZyYmYS5lbmFibGUoMCksUi5mbGF0U2hhZGluZyYmYS5lbmFibGUoMSksUi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZhLmVuYWJsZSgyKSxSLnNraW5uaW5nJiZhLmVuYWJsZSgzKSxSLnVzZVZlcnRleFRleHR1cmUmJmEuZW5hYmxlKDQpLFIubW9ycGhUYXJnZXRzJiZhLmVuYWJsZSg1KSxSLm1vcnBoTm9ybWFscyYmYS5lbmFibGUoNiksUi5wcmVtdWx0aXBsaWVkQWxwaGEmJmEuZW5hYmxlKDcpLFIuc2hhZG93TWFwRW5hYmxlZCYmYS5lbmFibGUoOCksUi5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyYmYS5lbmFibGUoOSksUi5kb3VibGVTaWRlZCYmYS5lbmFibGUoMTApLFIuZmxpcFNpZGVkJiZhLmVuYWJsZSgxMSksUi5kZXB0aFBhY2tpbmcmJmEuZW5hYmxlKDEyKSxSLmRpdGhlcmluZyYmYS5lbmFibGUoMTMpLFIuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJmEuZW5hYmxlKDE0KSxSLnNwZWN1bGFyQ29sb3JNYXAmJmEuZW5hYmxlKDE1KSxSLnRyYW5zbWlzc2lvbiYmYS5lbmFibGUoMTYpLFIudHJhbnNtaXNzaW9uTWFwJiZhLmVuYWJsZSgxNyksUi50aGlja25lc3NNYXAmJmEuZW5hYmxlKDE4KSxSLnNoZWVuJiZhLmVuYWJsZSgxOSksUi5zaGVlbkNvbG9yTWFwJiZhLmVuYWJsZSgyMCksUi5zaGVlblJvdWdobmVzc01hcCYmYS5lbmFibGUoMjEpLFIuZGVjb2RlVmlkZW9UZXh0dXJlJiZhLmVuYWJsZSgyMikseS5wdXNoKGEubWFzayl9ZnVuY3Rpb24gTCh5KXtsZXQgUj12W3kudHlwZV0sRDtpZihSKXtsZXQgRj1mbltSXTtEPW5NLmNsb25lKEYudW5pZm9ybXMpfWVsc2UgRD15LnVuaWZvcm1zO3JldHVybiBEfWZ1bmN0aW9uIEEoeSxSKXtsZXQgRDtmb3IobGV0IEY9MCx6PWMubGVuZ3RoO0Y8ejtGKyspe2xldCBOPWNbRl07aWYoTi5jYWNoZUtleT09PVIpe0Q9TiwrK0QudXNlZFRpbWVzO2JyZWFrfX1yZXR1cm4gRD09PXZvaWQgMCYmKEQ9bmV3IG5FKG4sUix5LHMpLGMucHVzaChEKSksRH1mdW5jdGlvbiBIKHkpe2lmKC0teS51c2VkVGltZXM9PT0wKXtsZXQgUj1jLmluZGV4T2YoeSk7Y1tSXT1jW2MubGVuZ3RoLTFdLGMucG9wKCkseS5kZXN0cm95KCl9fWZ1bmN0aW9uIHR0KHkpe2wucmVtb3ZlKHkpfWZ1bmN0aW9uIFgoKXtsLmRpc3Bvc2UoKX1yZXR1cm57Z2V0UGFyYW1ldGVyczpwLGdldFByb2dyYW1DYWNoZUtleTpiLGdldFVuaWZvcm1zOkwsYWNxdWlyZVByb2dyYW06QSxyZWxlYXNlUHJvZ3JhbTpILHJlbGVhc2VTaGFkZXJDYWNoZTp0dCxwcm9ncmFtczpjLGRpc3Bvc2U6WH19ZnVuY3Rpb24gc0UoKXtsZXQgbj1uZXcgV2Vha01hcDtmdW5jdGlvbiB0KHMpe2xldCBvPW4uZ2V0KHMpO3JldHVybiBvPT09dm9pZCAwJiYobz17fSxuLnNldChzLG8pKSxvfWZ1bmN0aW9uIGUocyl7bi5kZWxldGUocyl9ZnVuY3Rpb24gaShzLG8sYSl7bi5nZXQocylbb109YX1mdW5jdGlvbiByKCl7bj1uZXcgV2Vha01hcH1yZXR1cm57Z2V0OnQscmVtb3ZlOmUsdXBkYXRlOmksZGlzcG9zZTpyfX1mdW5jdGlvbiBvRShuLHQpe3JldHVybiBuLmdyb3VwT3JkZXIhPT10Lmdyb3VwT3JkZXI/bi5ncm91cE9yZGVyLXQuZ3JvdXBPcmRlcjpuLnJlbmRlck9yZGVyIT09dC5yZW5kZXJPcmRlcj9uLnJlbmRlck9yZGVyLXQucmVuZGVyT3JkZXI6bi5tYXRlcmlhbC5pZCE9PXQubWF0ZXJpYWwuaWQ/bi5tYXRlcmlhbC5pZC10Lm1hdGVyaWFsLmlkOm4ueiE9PXQuej9uLnotdC56Om4uaWQtdC5pZH1mdW5jdGlvbiBEZyhuLHQpe3JldHVybiBuLmdyb3VwT3JkZXIhPT10Lmdyb3VwT3JkZXI/bi5ncm91cE9yZGVyLXQuZ3JvdXBPcmRlcjpuLnJlbmRlck9yZGVyIT09dC5yZW5kZXJPcmRlcj9uLnJlbmRlck9yZGVyLXQucmVuZGVyT3JkZXI6bi56IT09dC56P3Quei1uLno6bi5pZC10LmlkfWZ1bmN0aW9uIElnKCl7bGV0IG49W10sdD0wLGU9W10saT1bXSxyPVtdO2Z1bmN0aW9uIHMoKXt0PTAsZS5sZW5ndGg9MCxpLmxlbmd0aD0wLHIubGVuZ3RoPTB9ZnVuY3Rpb24gbyhoLGYsZCxnLHgsdil7bGV0IG09blt0XTtyZXR1cm4gbT09PXZvaWQgMD8obT17aWQ6aC5pZCxvYmplY3Q6aCxnZW9tZXRyeTpmLG1hdGVyaWFsOmQsZ3JvdXBPcmRlcjpnLHJlbmRlck9yZGVyOmgucmVuZGVyT3JkZXIsejp4LGdyb3VwOnZ9LG5bdF09bSk6KG0uaWQ9aC5pZCxtLm9iamVjdD1oLG0uZ2VvbWV0cnk9ZixtLm1hdGVyaWFsPWQsbS5ncm91cE9yZGVyPWcsbS5yZW5kZXJPcmRlcj1oLnJlbmRlck9yZGVyLG0uej14LG0uZ3JvdXA9diksdCsrLG19ZnVuY3Rpb24gYShoLGYsZCxnLHgsdil7bGV0IG09byhoLGYsZCxnLHgsdik7ZC50cmFuc21pc3Npb24+MD9pLnB1c2gobSk6ZC50cmFuc3BhcmVudD09PSEwP3IucHVzaChtKTplLnB1c2gobSl9ZnVuY3Rpb24gbChoLGYsZCxnLHgsdil7bGV0IG09byhoLGYsZCxnLHgsdik7ZC50cmFuc21pc3Npb24+MD9pLnVuc2hpZnQobSk6ZC50cmFuc3BhcmVudD09PSEwP3IudW5zaGlmdChtKTplLnVuc2hpZnQobSl9ZnVuY3Rpb24gYyhoLGYpe2UubGVuZ3RoPjEmJmUuc29ydChofHxvRSksaS5sZW5ndGg+MSYmaS5zb3J0KGZ8fERnKSxyLmxlbmd0aD4xJiZyLnNvcnQoZnx8RGcpfWZ1bmN0aW9uIHUoKXtmb3IobGV0IGg9dCxmPW4ubGVuZ3RoO2g8ZjtoKyspe2xldCBkPW5baF07aWYoZC5pZD09PW51bGwpYnJlYWs7ZC5pZD1udWxsLGQub2JqZWN0PW51bGwsZC5nZW9tZXRyeT1udWxsLGQubWF0ZXJpYWw9bnVsbCxkLmdyb3VwPW51bGx9fXJldHVybntvcGFxdWU6ZSx0cmFuc21pc3NpdmU6aSx0cmFuc3BhcmVudDpyLGluaXQ6cyxwdXNoOmEsdW5zaGlmdDpsLGZpbmlzaDp1LHNvcnQ6Y319ZnVuY3Rpb24gYUUoKXtsZXQgbj1uZXcgV2Vha01hcDtmdW5jdGlvbiB0KGkscil7bGV0IHM7cmV0dXJuIG4uaGFzKGkpPT09ITE/KHM9bmV3IElnLG4uc2V0KGksW3NdKSk6cj49bi5nZXQoaSkubGVuZ3RoPyhzPW5ldyBJZyxuLmdldChpKS5wdXNoKHMpKTpzPW4uZ2V0KGkpW3JdLHN9ZnVuY3Rpb24gZSgpe249bmV3IFdlYWtNYXB9cmV0dXJue2dldDp0LGRpc3Bvc2U6ZX19ZnVuY3Rpb24gbEUoKXtsZXQgbj17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKHQpe2lmKG5bdC5pZF0hPT12b2lkIDApcmV0dXJuIG5bdC5pZF07bGV0IGU7c3dpdGNoKHQudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjplPXtkaXJlY3Rpb246bmV3IFQsY29sb3I6bmV3IGZ0fTticmVhaztjYXNlIlNwb3RMaWdodCI6ZT17cG9zaXRpb246bmV3IFQsZGlyZWN0aW9uOm5ldyBULGNvbG9yOm5ldyBmdCxkaXN0YW5jZTowLGNvbmVDb3M6MCxwZW51bWJyYUNvczowLGRlY2F5OjB9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6ZT17cG9zaXRpb246bmV3IFQsY29sb3I6bmV3IGZ0LGRpc3RhbmNlOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJIZW1pc3BoZXJlTGlnaHQiOmU9e2RpcmVjdGlvbjpuZXcgVCxza3lDb2xvcjpuZXcgZnQsZ3JvdW5kQ29sb3I6bmV3IGZ0fTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOmU9e2NvbG9yOm5ldyBmdCxwb3NpdGlvbjpuZXcgVCxoYWxmV2lkdGg6bmV3IFQsaGFsZkhlaWdodDpuZXcgVH07YnJlYWt9cmV0dXJuIG5bdC5pZF09ZSxlfX19ZnVuY3Rpb24gY0UoKXtsZXQgbj17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKHQpe2lmKG5bdC5pZF0hPT12b2lkIDApcmV0dXJuIG5bdC5pZF07bGV0IGU7c3dpdGNoKHQudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjplPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IEt9O2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjplPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IEt9O2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6ZT17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBLLHNoYWRvd0NhbWVyYU5lYXI6MSxzaGFkb3dDYW1lcmFGYXI6MWUzfTticmVha31yZXR1cm4gblt0LmlkXT1lLGV9fX12YXIgdUU9MDtmdW5jdGlvbiBoRShuLHQpe3JldHVybih0LmNhc3RTaGFkb3c/MTowKS0obi5jYXN0U2hhZG93PzE6MCl9ZnVuY3Rpb24gZkUobix0KXtsZXQgZT1uZXcgbEUsaT1jRSgpLHI9e3ZlcnNpb246MCxoYXNoOntkaXJlY3Rpb25hbExlbmd0aDotMSxwb2ludExlbmd0aDotMSxzcG90TGVuZ3RoOi0xLHJlY3RBcmVhTGVuZ3RoOi0xLGhlbWlMZW5ndGg6LTEsbnVtRGlyZWN0aW9uYWxTaGFkb3dzOi0xLG51bVBvaW50U2hhZG93czotMSxudW1TcG90U2hhZG93czotMX0sYW1iaWVudDpbMCwwLDBdLHByb2JlOltdLGRpcmVjdGlvbmFsOltdLGRpcmVjdGlvbmFsU2hhZG93OltdLGRpcmVjdGlvbmFsU2hhZG93TWFwOltdLGRpcmVjdGlvbmFsU2hhZG93TWF0cml4OltdLHNwb3Q6W10sc3BvdFNoYWRvdzpbXSxzcG90U2hhZG93TWFwOltdLHNwb3RTaGFkb3dNYXRyaXg6W10scmVjdEFyZWE6W10scmVjdEFyZWFMVEMxOm51bGwscmVjdEFyZWFMVEMyOm51bGwscG9pbnQ6W10scG9pbnRTaGFkb3c6W10scG9pbnRTaGFkb3dNYXA6W10scG9pbnRTaGFkb3dNYXRyaXg6W10saGVtaTpbXX07Zm9yKGxldCB1PTA7dTw5O3UrKylyLnByb2JlLnB1c2gobmV3IFQpO2xldCBzPW5ldyBULG89bmV3IHd0LGE9bmV3IHd0O2Z1bmN0aW9uIGwodSxoKXtsZXQgZj0wLGQ9MCxnPTA7Zm9yKGxldCB0dD0wO3R0PDk7dHQrKylyLnByb2JlW3R0XS5zZXQoMCwwLDApO2xldCB4PTAsdj0wLG09MCxwPTAsYj0wLF89MCxTPTAsTD0wO3Uuc29ydChoRSk7bGV0IEE9aCE9PSEwP01hdGguUEk6MTtmb3IobGV0IHR0PTAsWD11Lmxlbmd0aDt0dDxYO3R0Kyspe2xldCB5PXVbdHRdLFI9eS5jb2xvcixEPXkuaW50ZW5zaXR5LEY9eS5kaXN0YW5jZSx6PXkuc2hhZG93JiZ5LnNoYWRvdy5tYXA/eS5zaGFkb3cubWFwLnRleHR1cmU6bnVsbDtpZih5LmlzQW1iaWVudExpZ2h0KWYrPVIucipEKkEsZCs9Ui5nKkQqQSxnKz1SLmIqRCpBO2Vsc2UgaWYoeS5pc0xpZ2h0UHJvYmUpZm9yKGxldCBOPTA7Tjw5O04rKylyLnByb2JlW05dLmFkZFNjYWxlZFZlY3Rvcih5LnNoLmNvZWZmaWNpZW50c1tOXSxEKTtlbHNlIGlmKHkuaXNEaXJlY3Rpb25hbExpZ2h0KXtsZXQgTj1lLmdldCh5KTtpZihOLmNvbG9yLmNvcHkoeS5jb2xvcikubXVsdGlwbHlTY2FsYXIoeS5pbnRlbnNpdHkqQSkseS5jYXN0U2hhZG93KXtsZXQgVj15LnNoYWRvdyxRPWkuZ2V0KHkpO1Euc2hhZG93Qmlhcz1WLmJpYXMsUS5zaGFkb3dOb3JtYWxCaWFzPVYubm9ybWFsQmlhcyxRLnNoYWRvd1JhZGl1cz1WLnJhZGl1cyxRLnNoYWRvd01hcFNpemU9Vi5tYXBTaXplLHIuZGlyZWN0aW9uYWxTaGFkb3dbeF09USxyLmRpcmVjdGlvbmFsU2hhZG93TWFwW3hdPXosci5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeFt4XT15LnNoYWRvdy5tYXRyaXgsXysrfXIuZGlyZWN0aW9uYWxbeF09Tix4Kyt9ZWxzZSBpZih5LmlzU3BvdExpZ2h0KXtsZXQgTj1lLmdldCh5KTtpZihOLnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbih5Lm1hdHJpeFdvcmxkKSxOLmNvbG9yLmNvcHkoUikubXVsdGlwbHlTY2FsYXIoRCpBKSxOLmRpc3RhbmNlPUYsTi5jb25lQ29zPU1hdGguY29zKHkuYW5nbGUpLE4ucGVudW1icmFDb3M9TWF0aC5jb3MoeS5hbmdsZSooMS15LnBlbnVtYnJhKSksTi5kZWNheT15LmRlY2F5LHkuY2FzdFNoYWRvdyl7bGV0IFY9eS5zaGFkb3csUT1pLmdldCh5KTtRLnNoYWRvd0JpYXM9Vi5iaWFzLFEuc2hhZG93Tm9ybWFsQmlhcz1WLm5vcm1hbEJpYXMsUS5zaGFkb3dSYWRpdXM9Vi5yYWRpdXMsUS5zaGFkb3dNYXBTaXplPVYubWFwU2l6ZSxyLnNwb3RTaGFkb3dbbV09USxyLnNwb3RTaGFkb3dNYXBbbV09eixyLnNwb3RTaGFkb3dNYXRyaXhbbV09eS5zaGFkb3cubWF0cml4LEwrK31yLnNwb3RbbV09TixtKyt9ZWxzZSBpZih5LmlzUmVjdEFyZWFMaWdodCl7bGV0IE49ZS5nZXQoeSk7Ti5jb2xvci5jb3B5KFIpLm11bHRpcGx5U2NhbGFyKEQpLE4uaGFsZldpZHRoLnNldCh5LndpZHRoKi41LDAsMCksTi5oYWxmSGVpZ2h0LnNldCgwLHkuaGVpZ2h0Ki41LDApLHIucmVjdEFyZWFbcF09TixwKyt9ZWxzZSBpZih5LmlzUG9pbnRMaWdodCl7bGV0IE49ZS5nZXQoeSk7aWYoTi5jb2xvci5jb3B5KHkuY29sb3IpLm11bHRpcGx5U2NhbGFyKHkuaW50ZW5zaXR5KkEpLE4uZGlzdGFuY2U9eS5kaXN0YW5jZSxOLmRlY2F5PXkuZGVjYXkseS5jYXN0U2hhZG93KXtsZXQgVj15LnNoYWRvdyxRPWkuZ2V0KHkpO1Euc2hhZG93Qmlhcz1WLmJpYXMsUS5zaGFkb3dOb3JtYWxCaWFzPVYubm9ybWFsQmlhcyxRLnNoYWRvd1JhZGl1cz1WLnJhZGl1cyxRLnNoYWRvd01hcFNpemU9Vi5tYXBTaXplLFEuc2hhZG93Q2FtZXJhTmVhcj1WLmNhbWVyYS5uZWFyLFEuc2hhZG93Q2FtZXJhRmFyPVYuY2FtZXJhLmZhcixyLnBvaW50U2hhZG93W3ZdPVEsci5wb2ludFNoYWRvd01hcFt2XT16LHIucG9pbnRTaGFkb3dNYXRyaXhbdl09eS5zaGFkb3cubWF0cml4LFMrK31yLnBvaW50W3ZdPU4sdisrfWVsc2UgaWYoeS5pc0hlbWlzcGhlcmVMaWdodCl7bGV0IE49ZS5nZXQoeSk7Ti5za3lDb2xvci5jb3B5KHkuY29sb3IpLm11bHRpcGx5U2NhbGFyKEQqQSksTi5ncm91bmRDb2xvci5jb3B5KHkuZ3JvdW5kQ29sb3IpLm11bHRpcGx5U2NhbGFyKEQqQSksci5oZW1pW2JdPU4sYisrfX1wPjAmJih0LmlzV2ViR0wyfHxuLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik9PT0hMD8oci5yZWN0QXJlYUxUQzE9b3QuTFRDX0ZMT0FUXzEsci5yZWN0QXJlYUxUQzI9b3QuTFRDX0ZMT0FUXzIpOm4uaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpPT09ITA/KHIucmVjdEFyZWFMVEMxPW90LkxUQ19IQUxGXzEsci5yZWN0QXJlYUxUQzI9b3QuTFRDX0hBTEZfMik6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVW5hYmxlIHRvIHVzZSBSZWN0QXJlYUxpZ2h0LiBNaXNzaW5nIFdlYkdMIGV4dGVuc2lvbnMuIikpLHIuYW1iaWVudFswXT1mLHIuYW1iaWVudFsxXT1kLHIuYW1iaWVudFsyXT1nO2xldCBIPXIuaGFzaDsoSC5kaXJlY3Rpb25hbExlbmd0aCE9PXh8fEgucG9pbnRMZW5ndGghPT12fHxILnNwb3RMZW5ndGghPT1tfHxILnJlY3RBcmVhTGVuZ3RoIT09cHx8SC5oZW1pTGVuZ3RoIT09Ynx8SC5udW1EaXJlY3Rpb25hbFNoYWRvd3MhPT1ffHxILm51bVBvaW50U2hhZG93cyE9PVN8fEgubnVtU3BvdFNoYWRvd3MhPT1MKSYmKHIuZGlyZWN0aW9uYWwubGVuZ3RoPXgsci5zcG90Lmxlbmd0aD1tLHIucmVjdEFyZWEubGVuZ3RoPXAsci5wb2ludC5sZW5ndGg9dixyLmhlbWkubGVuZ3RoPWIsci5kaXJlY3Rpb25hbFNoYWRvdy5sZW5ndGg9XyxyLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aD1fLHIucG9pbnRTaGFkb3cubGVuZ3RoPVMsci5wb2ludFNoYWRvd01hcC5sZW5ndGg9UyxyLnNwb3RTaGFkb3cubGVuZ3RoPUwsci5zcG90U2hhZG93TWFwLmxlbmd0aD1MLHIuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgubGVuZ3RoPV8sci5wb2ludFNoYWRvd01hdHJpeC5sZW5ndGg9UyxyLnNwb3RTaGFkb3dNYXRyaXgubGVuZ3RoPUwsSC5kaXJlY3Rpb25hbExlbmd0aD14LEgucG9pbnRMZW5ndGg9dixILnNwb3RMZW5ndGg9bSxILnJlY3RBcmVhTGVuZ3RoPXAsSC5oZW1pTGVuZ3RoPWIsSC5udW1EaXJlY3Rpb25hbFNoYWRvd3M9XyxILm51bVBvaW50U2hhZG93cz1TLEgubnVtU3BvdFNoYWRvd3M9TCxyLnZlcnNpb249dUUrKyl9ZnVuY3Rpb24gYyh1LGgpe2xldCBmPTAsZD0wLGc9MCx4PTAsdj0wLG09aC5tYXRyaXhXb3JsZEludmVyc2U7Zm9yKGxldCBwPTAsYj11Lmxlbmd0aDtwPGI7cCsrKXtsZXQgXz11W3BdO2lmKF8uaXNEaXJlY3Rpb25hbExpZ2h0KXtsZXQgUz1yLmRpcmVjdGlvbmFsW2ZdO1MuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihfLm1hdHJpeFdvcmxkKSxzLnNldEZyb21NYXRyaXhQb3NpdGlvbihfLnRhcmdldC5tYXRyaXhXb3JsZCksUy5kaXJlY3Rpb24uc3ViKHMpLFMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihtKSxmKyt9ZWxzZSBpZihfLmlzU3BvdExpZ2h0KXtsZXQgUz1yLnNwb3RbZ107Uy5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oXy5tYXRyaXhXb3JsZCksUy5wb3NpdGlvbi5hcHBseU1hdHJpeDQobSksUy5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKF8ubWF0cml4V29ybGQpLHMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKF8udGFyZ2V0Lm1hdHJpeFdvcmxkKSxTLmRpcmVjdGlvbi5zdWIocyksUy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKG0pLGcrK31lbHNlIGlmKF8uaXNSZWN0QXJlYUxpZ2h0KXtsZXQgUz1yLnJlY3RBcmVhW3hdO1MucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKF8ubWF0cml4V29ybGQpLFMucG9zaXRpb24uYXBwbHlNYXRyaXg0KG0pLGEuaWRlbnRpdHkoKSxvLmNvcHkoXy5tYXRyaXhXb3JsZCksby5wcmVtdWx0aXBseShtKSxhLmV4dHJhY3RSb3RhdGlvbihvKSxTLmhhbGZXaWR0aC5zZXQoXy53aWR0aCouNSwwLDApLFMuaGFsZkhlaWdodC5zZXQoMCxfLmhlaWdodCouNSwwKSxTLmhhbGZXaWR0aC5hcHBseU1hdHJpeDQoYSksUy5oYWxmSGVpZ2h0LmFwcGx5TWF0cml4NChhKSx4Kyt9ZWxzZSBpZihfLmlzUG9pbnRMaWdodCl7bGV0IFM9ci5wb2ludFtkXTtTLnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihfLm1hdHJpeFdvcmxkKSxTLnBvc2l0aW9uLmFwcGx5TWF0cml4NChtKSxkKyt9ZWxzZSBpZihfLmlzSGVtaXNwaGVyZUxpZ2h0KXtsZXQgUz1yLmhlbWlbdl07Uy5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKF8ubWF0cml4V29ybGQpLFMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihtKSxTLmRpcmVjdGlvbi5ub3JtYWxpemUoKSx2Kyt9fX1yZXR1cm57c2V0dXA6bCxzZXR1cFZpZXc6YyxzdGF0ZTpyfX1mdW5jdGlvbiBOZyhuLHQpe2xldCBlPW5ldyBmRShuLHQpLGk9W10scj1bXTtmdW5jdGlvbiBzKCl7aS5sZW5ndGg9MCxyLmxlbmd0aD0wfWZ1bmN0aW9uIG8oaCl7aS5wdXNoKGgpfWZ1bmN0aW9uIGEoaCl7ci5wdXNoKGgpfWZ1bmN0aW9uIGwoaCl7ZS5zZXR1cChpLGgpfWZ1bmN0aW9uIGMoaCl7ZS5zZXR1cFZpZXcoaSxoKX1yZXR1cm57aW5pdDpzLHN0YXRlOntsaWdodHNBcnJheTppLHNoYWRvd3NBcnJheTpyLGxpZ2h0czplfSxzZXR1cExpZ2h0czpsLHNldHVwTGlnaHRzVmlldzpjLHB1c2hMaWdodDpvLHB1c2hTaGFkb3c6YX19ZnVuY3Rpb24gZEUobix0KXtsZXQgZT1uZXcgV2Vha01hcDtmdW5jdGlvbiBpKHMsbz0wKXtsZXQgYTtyZXR1cm4gZS5oYXMocyk9PT0hMT8oYT1uZXcgTmcobix0KSxlLnNldChzLFthXSkpOm8+PWUuZ2V0KHMpLmxlbmd0aD8oYT1uZXcgTmcobix0KSxlLmdldChzKS5wdXNoKGEpKTphPWUuZ2V0KHMpW29dLGF9ZnVuY3Rpb24gcigpe2U9bmV3IFdlYWtNYXB9cmV0dXJue2dldDppLGRpc3Bvc2U6cn19dmFyIGxsPWNsYXNzIGV4dGVuZHMgeGV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hEZXB0aE1hdGVyaWFsIix0aGlzLmRlcHRoUGFja2luZz1Pdyx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZXB0aFBhY2tpbmc9dC5kZXB0aFBhY2tpbmcsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXN9fTtsbC5wcm90b3R5cGUuaXNNZXNoRGVwdGhNYXRlcmlhbD0hMDt2YXIgY2w9Y2xhc3MgZXh0ZW5kcyB4ZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaERpc3RhbmNlTWF0ZXJpYWwiLHRoaXMucmVmZXJlbmNlUG9zaXRpb249bmV3IFQsdGhpcy5uZWFyRGlzdGFuY2U9MSx0aGlzLmZhckRpc3RhbmNlPTFlMyx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMucmVmZXJlbmNlUG9zaXRpb24uY29weSh0LnJlZmVyZW5jZVBvc2l0aW9uKSx0aGlzLm5lYXJEaXN0YW5jZT10Lm5lYXJEaXN0YW5jZSx0aGlzLmZhckRpc3RhbmNlPXQuZmFyRGlzdGFuY2UsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXN9fTtjbC5wcm90b3R5cGUuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD0hMDt2YXIgcEU9YHZvaWQgbWFpbigpIHsKCWdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApOwp9YCxtRT1gdW5pZm9ybSBzYW1wbGVyMkQgc2hhZG93X3Bhc3M7CnVuaWZvcm0gdmVjMiByZXNvbHV0aW9uOwp1bmlmb3JtIGZsb2F0IHJhZGl1czsKI2luY2x1ZGUgPHBhY2tpbmc+CnZvaWQgbWFpbigpIHsKCWNvbnN0IGZsb2F0IHNhbXBsZXMgPSBmbG9hdCggVlNNX1NBTVBMRVMgKTsKCWZsb2F0IG1lYW4gPSAwLjA7CglmbG9hdCBzcXVhcmVkX21lYW4gPSAwLjA7CglmbG9hdCB1dlN0cmlkZSA9IHNhbXBsZXMgPD0gMS4wID8gMC4wIDogMi4wIC8gKCBzYW1wbGVzIC0gMS4wICk7CglmbG9hdCB1dlN0YXJ0ID0gc2FtcGxlcyA8PSAxLjAgPyAwLjAgOiAtIDEuMDsKCWZvciAoIGZsb2F0IGkgPSAwLjA7IGkgPCBzYW1wbGVzOyBpICsrICkgewoJCWZsb2F0IHV2T2Zmc2V0ID0gdXZTdGFydCArIGkgKiB1dlN0cmlkZTsKCQkjaWZkZWYgSE9SSVpPTlRBTF9QQVNTCgkJCXZlYzIgZGlzdHJpYnV0aW9uID0gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggdXZPZmZzZXQsIDAuMCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTsKCQkJbWVhbiArPSBkaXN0cmlidXRpb24ueDsKCQkJc3F1YXJlZF9tZWFuICs9IGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKyBkaXN0cmlidXRpb24ueCAqIGRpc3RyaWJ1dGlvbi54OwoJCSNlbHNlCgkJCWZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggMC4wLCB1dk9mZnNldCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTsKCQkJbWVhbiArPSBkZXB0aDsKCQkJc3F1YXJlZF9tZWFuICs9IGRlcHRoICogZGVwdGg7CgkJI2VuZGlmCgl9CgltZWFuID0gbWVhbiAvIHNhbXBsZXM7CglzcXVhcmVkX21lYW4gPSBzcXVhcmVkX21lYW4gLyBzYW1wbGVzOwoJZmxvYXQgc3RkX2RldiA9IHNxcnQoIHNxdWFyZWRfbWVhbiAtIG1lYW4gKiBtZWFuICk7CglnbF9GcmFnQ29sb3IgPSBwYWNrMkhhbGZUb1JHQkEoIHZlYzIoIG1lYW4sIHN0ZF9kZXYgKSApOwp9YDtmdW5jdGlvbiBTMChuLHQsZSl7bGV0IGk9bmV3IFdyLHI9bmV3IEsscz1uZXcgSyxvPW5ldyBXdCxhPW5ldyBsbCh7ZGVwdGhQYWNraW5nOmt3fSksbD1uZXcgY2wsYz17fSx1PWUubWF4VGV4dHVyZVNpemUsaD17MDpoZSwxOnRvLDI6a3J9LGY9bmV3IEZuKHtkZWZpbmVzOntWU01fU0FNUExFUzo4fSx1bmlmb3Jtczp7c2hhZG93X3Bhc3M6e3ZhbHVlOm51bGx9LHJlc29sdXRpb246e3ZhbHVlOm5ldyBLfSxyYWRpdXM6e3ZhbHVlOjR9fSx2ZXJ0ZXhTaGFkZXI6cEUsZnJhZ21lbnRTaGFkZXI6bUV9KSxkPWYuY2xvbmUoKTtkLmRlZmluZXMuSE9SSVpPTlRBTF9QQVNTPTE7bGV0IGc9bmV3IEh0O2cuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFF0KG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC41LDMsLTEsLjUsLTEsMywuNV0pLDMpKTtsZXQgeD1uZXcgb2UoZyxmKSx2PXRoaXM7dGhpcy5lbmFibGVkPSExLHRoaXMuYXV0b1VwZGF0ZT0hMCx0aGlzLm5lZWRzVXBkYXRlPSExLHRoaXMudHlwZT1vMCx0aGlzLnJlbmRlcj1mdW5jdGlvbihfLFMsTCl7aWYodi5lbmFibGVkPT09ITF8fHYuYXV0b1VwZGF0ZT09PSExJiZ2Lm5lZWRzVXBkYXRlPT09ITF8fF8ubGVuZ3RoPT09MClyZXR1cm47bGV0IEE9bi5nZXRSZW5kZXJUYXJnZXQoKSxIPW4uZ2V0QWN0aXZlQ3ViZUZhY2UoKSx0dD1uLmdldEFjdGl2ZU1pcG1hcExldmVsKCksWD1uLnN0YXRlO1guc2V0QmxlbmRpbmcoam4pLFguYnVmZmVycy5jb2xvci5zZXRDbGVhcigxLDEsMSwxKSxYLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksWC5zZXRTY2lzc29yVGVzdCghMSk7Zm9yKGxldCB5PTAsUj1fLmxlbmd0aDt5PFI7eSsrKXtsZXQgRD1fW3ldLEY9RC5zaGFkb3c7aWYoRj09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDoiLEQsImhhcyBubyBzaGFkb3cuIik7Y29udGludWV9aWYoRi5hdXRvVXBkYXRlPT09ITEmJkYubmVlZHNVcGRhdGU9PT0hMSljb250aW51ZTtyLmNvcHkoRi5tYXBTaXplKTtsZXQgej1GLmdldEZyYW1lRXh0ZW50cygpO2lmKHIubXVsdGlwbHkoeikscy5jb3B5KEYubWFwU2l6ZSksKHIueD51fHxyLnk+dSkmJihyLng+dSYmKHMueD1NYXRoLmZsb29yKHUvei54KSxyLng9cy54KnoueCxGLm1hcFNpemUueD1zLngpLHIueT51JiYocy55PU1hdGguZmxvb3IodS96LnkpLHIueT1zLnkqei55LEYubWFwU2l6ZS55PXMueSkpLEYubWFwPT09bnVsbCYmIUYuaXNQb2ludExpZ2h0U2hhZG93JiZ0aGlzLnR5cGU9PT1acyl7bGV0IFY9e21pbkZpbHRlcjpiZSxtYWdGaWx0ZXI6YmUsZm9ybWF0OlJlfTtGLm1hcD1uZXcgTmUoci54LHIueSxWKSxGLm1hcC50ZXh0dXJlLm5hbWU9RC5uYW1lKyIuc2hhZG93TWFwIixGLm1hcFBhc3M9bmV3IE5lKHIueCxyLnksViksRi5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWlmKEYubWFwPT09bnVsbCl7bGV0IFY9e21pbkZpbHRlcjpmZSxtYWdGaWx0ZXI6ZmUsZm9ybWF0OlJlfTtGLm1hcD1uZXcgTmUoci54LHIueSxWKSxGLm1hcC50ZXh0dXJlLm5hbWU9RC5uYW1lKyIuc2hhZG93TWFwIixGLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9bi5zZXRSZW5kZXJUYXJnZXQoRi5tYXApLG4uY2xlYXIoKTtsZXQgTj1GLmdldFZpZXdwb3J0Q291bnQoKTtmb3IobGV0IFY9MDtWPE47VisrKXtsZXQgUT1GLmdldFZpZXdwb3J0KFYpO28uc2V0KHMueCpRLngscy55KlEueSxzLngqUS56LHMueSpRLncpLFgudmlld3BvcnQobyksRi51cGRhdGVNYXRyaWNlcyhELFYpLGk9Ri5nZXRGcnVzdHVtKCksYihTLEwsRi5jYW1lcmEsRCx0aGlzLnR5cGUpfSFGLmlzUG9pbnRMaWdodFNoYWRvdyYmdGhpcy50eXBlPT09WnMmJm0oRixMKSxGLm5lZWRzVXBkYXRlPSExfXYubmVlZHNVcGRhdGU9ITEsbi5zZXRSZW5kZXJUYXJnZXQoQSxILHR0KX07ZnVuY3Rpb24gbShfLFMpe2xldCBMPXQudXBkYXRlKHgpO2YuZGVmaW5lcy5WU01fU0FNUExFUyE9PV8uYmx1clNhbXBsZXMmJihmLmRlZmluZXMuVlNNX1NBTVBMRVM9Xy5ibHVyU2FtcGxlcyxkLmRlZmluZXMuVlNNX1NBTVBMRVM9Xy5ibHVyU2FtcGxlcyxmLm5lZWRzVXBkYXRlPSEwLGQubmVlZHNVcGRhdGU9ITApLGYudW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9Xy5tYXAudGV4dHVyZSxmLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9Xy5tYXBTaXplLGYudW5pZm9ybXMucmFkaXVzLnZhbHVlPV8ucmFkaXVzLG4uc2V0UmVuZGVyVGFyZ2V0KF8ubWFwUGFzcyksbi5jbGVhcigpLG4ucmVuZGVyQnVmZmVyRGlyZWN0KFMsbnVsbCxMLGYseCxudWxsKSxkLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPV8ubWFwUGFzcy50ZXh0dXJlLGQudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1fLm1hcFNpemUsZC51bmlmb3Jtcy5yYWRpdXMudmFsdWU9Xy5yYWRpdXMsbi5zZXRSZW5kZXJUYXJnZXQoXy5tYXApLG4uY2xlYXIoKSxuLnJlbmRlckJ1ZmZlckRpcmVjdChTLG51bGwsTCxkLHgsbnVsbCl9ZnVuY3Rpb24gcChfLFMsTCxBLEgsdHQsWCl7bGV0IHk9bnVsbCxSPUEuaXNQb2ludExpZ2h0PT09ITA/Xy5jdXN0b21EaXN0YW5jZU1hdGVyaWFsOl8uY3VzdG9tRGVwdGhNYXRlcmlhbDtpZihSIT09dm9pZCAwP3k9Ujp5PUEuaXNQb2ludExpZ2h0PT09ITA/bDphLG4ubG9jYWxDbGlwcGluZ0VuYWJsZWQmJkwuY2xpcFNoYWRvd3M9PT0hMCYmTC5jbGlwcGluZ1BsYW5lcy5sZW5ndGghPT0wfHxMLmRpc3BsYWNlbWVudE1hcCYmTC5kaXNwbGFjZW1lbnRTY2FsZSE9PTB8fEwuYWxwaGFNYXAmJkwuYWxwaGFUZXN0PjApe2xldCBEPXkudXVpZCxGPUwudXVpZCx6PWNbRF07ej09PXZvaWQgMCYmKHo9e30sY1tEXT16KTtsZXQgTj16W0ZdO049PT12b2lkIDAmJihOPXkuY2xvbmUoKSx6W0ZdPU4pLHk9Tn1yZXR1cm4geS52aXNpYmxlPUwudmlzaWJsZSx5LndpcmVmcmFtZT1MLndpcmVmcmFtZSxYPT09WnM/eS5zaWRlPUwuc2hhZG93U2lkZSE9PW51bGw/TC5zaGFkb3dTaWRlOkwuc2lkZTp5LnNpZGU9TC5zaGFkb3dTaWRlIT09bnVsbD9MLnNoYWRvd1NpZGU6aFtMLnNpZGVdLHkuYWxwaGFNYXA9TC5hbHBoYU1hcCx5LmFscGhhVGVzdD1MLmFscGhhVGVzdCx5LmNsaXBTaGFkb3dzPUwuY2xpcFNoYWRvd3MseS5jbGlwcGluZ1BsYW5lcz1MLmNsaXBwaW5nUGxhbmVzLHkuY2xpcEludGVyc2VjdGlvbj1MLmNsaXBJbnRlcnNlY3Rpb24seS5kaXNwbGFjZW1lbnRNYXA9TC5kaXNwbGFjZW1lbnRNYXAseS5kaXNwbGFjZW1lbnRTY2FsZT1MLmRpc3BsYWNlbWVudFNjYWxlLHkuZGlzcGxhY2VtZW50Qmlhcz1MLmRpc3BsYWNlbWVudEJpYXMseS53aXJlZnJhbWVMaW5ld2lkdGg9TC53aXJlZnJhbWVMaW5ld2lkdGgseS5saW5ld2lkdGg9TC5saW5ld2lkdGgsQS5pc1BvaW50TGlnaHQ9PT0hMCYmeS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPT09ITAmJih5LnJlZmVyZW5jZVBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihBLm1hdHJpeFdvcmxkKSx5Lm5lYXJEaXN0YW5jZT1ILHkuZmFyRGlzdGFuY2U9dHQpLHl9ZnVuY3Rpb24gYihfLFMsTCxBLEgpe2lmKF8udmlzaWJsZT09PSExKXJldHVybjtpZihfLmxheWVycy50ZXN0KFMubGF5ZXJzKSYmKF8uaXNNZXNofHxfLmlzTGluZXx8Xy5pc1BvaW50cykmJihfLmNhc3RTaGFkb3d8fF8ucmVjZWl2ZVNoYWRvdyYmSD09PVpzKSYmKCFfLmZydXN0dW1DdWxsZWR8fGkuaW50ZXJzZWN0c09iamVjdChfKSkpe18ubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoTC5tYXRyaXhXb3JsZEludmVyc2UsXy5tYXRyaXhXb3JsZCk7bGV0IHk9dC51cGRhdGUoXyksUj1fLm1hdGVyaWFsO2lmKEFycmF5LmlzQXJyYXkoUikpe2xldCBEPXkuZ3JvdXBzO2ZvcihsZXQgRj0wLHo9RC5sZW5ndGg7Rjx6O0YrKyl7bGV0IE49RFtGXSxWPVJbTi5tYXRlcmlhbEluZGV4XTtpZihWJiZWLnZpc2libGUpe2xldCBRPXAoXyx5LFYsQSxMLm5lYXIsTC5mYXIsSCk7bi5yZW5kZXJCdWZmZXJEaXJlY3QoTCxudWxsLHksUSxfLE4pfX19ZWxzZSBpZihSLnZpc2libGUpe2xldCBEPXAoXyx5LFIsQSxMLm5lYXIsTC5mYXIsSCk7bi5yZW5kZXJCdWZmZXJEaXJlY3QoTCxudWxsLHksRCxfLG51bGwpfX1sZXQgWD1fLmNoaWxkcmVuO2ZvcihsZXQgeT0wLFI9WC5sZW5ndGg7eTxSO3krKyliKFhbeV0sUyxMLEEsSCl9fWZ1bmN0aW9uIGdFKG4sdCxlKXtsZXQgaT1lLmlzV2ViR0wyO2Z1bmN0aW9uIHIoKXtsZXQgUD0hMSxwdD1uZXcgV3QsaHQ9bnVsbCxFdD1uZXcgV3QoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24oWSl7aHQhPT1ZJiYhUCYmKG4uY29sb3JNYXNrKFksWSxZLFkpLGh0PVkpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24oWSl7UD1ZfSxzZXRDbGVhcjpmdW5jdGlvbihZLE10LER0LGp0LHplKXt6ZT09PSEwJiYoWSo9anQsTXQqPWp0LER0Kj1qdCkscHQuc2V0KFksTXQsRHQsanQpLEV0LmVxdWFscyhwdCk9PT0hMSYmKG4uY2xlYXJDb2xvcihZLE10LER0LGp0KSxFdC5jb3B5KHB0KSl9LHJlc2V0OmZ1bmN0aW9uKCl7UD0hMSxodD1udWxsLEV0LnNldCgtMSwwLDAsMCl9fX1mdW5jdGlvbiBzKCl7bGV0IFA9ITEscHQ9bnVsbCxodD1udWxsLEV0PW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24oWSl7WT9rKDI5MjkpOkZ0KDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKFkpe3B0IT09WSYmIVAmJihuLmRlcHRoTWFzayhZKSxwdD1ZKX0sc2V0RnVuYzpmdW5jdGlvbihZKXtpZihodCE9PVkpe2lmKFkpc3dpdGNoKFkpe2Nhc2Ugb3c6bi5kZXB0aEZ1bmMoNTEyKTticmVhaztjYXNlIGF3Om4uZGVwdGhGdW5jKDUxOSk7YnJlYWs7Y2FzZSBsdzpuLmRlcHRoRnVuYyg1MTMpO2JyZWFrO2Nhc2UgTnU6bi5kZXB0aEZ1bmMoNTE1KTticmVhaztjYXNlIGN3Om4uZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSB1dzpuLmRlcHRoRnVuYyg1MTgpO2JyZWFrO2Nhc2UgaHc6bi5kZXB0aEZ1bmMoNTE2KTticmVhaztjYXNlIGZ3Om4uZGVwdGhGdW5jKDUxNyk7YnJlYWs7ZGVmYXVsdDpuLmRlcHRoRnVuYyg1MTUpfWVsc2Ugbi5kZXB0aEZ1bmMoNTE1KTtodD1ZfX0sc2V0TG9ja2VkOmZ1bmN0aW9uKFkpe1A9WX0sc2V0Q2xlYXI6ZnVuY3Rpb24oWSl7RXQhPT1ZJiYobi5jbGVhckRlcHRoKFkpLEV0PVkpfSxyZXNldDpmdW5jdGlvbigpe1A9ITEscHQ9bnVsbCxodD1udWxsLEV0PW51bGx9fX1mdW5jdGlvbiBvKCl7bGV0IFA9ITEscHQ9bnVsbCxodD1udWxsLEV0PW51bGwsWT1udWxsLE10PW51bGwsRHQ9bnVsbCxqdD1udWxsLHplPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24obmUpe1B8fChuZT9rKDI5NjApOkZ0KDI5NjApKX0sc2V0TWFzazpmdW5jdGlvbihuZSl7cHQhPT1uZSYmIVAmJihuLnN0ZW5jaWxNYXNrKG5lKSxwdD1uZSl9LHNldEZ1bmM6ZnVuY3Rpb24obmUsZW4seW4peyhodCE9PW5lfHxFdCE9PWVufHxZIT09eW4pJiYobi5zdGVuY2lsRnVuYyhuZSxlbix5biksaHQ9bmUsRXQ9ZW4sWT15bil9LHNldE9wOmZ1bmN0aW9uKG5lLGVuLHluKXsoTXQhPT1uZXx8RHQhPT1lbnx8anQhPT15bikmJihuLnN0ZW5jaWxPcChuZSxlbix5biksTXQ9bmUsRHQ9ZW4sanQ9eW4pfSxzZXRMb2NrZWQ6ZnVuY3Rpb24obmUpe1A9bmV9LHNldENsZWFyOmZ1bmN0aW9uKG5lKXt6ZSE9PW5lJiYobi5jbGVhclN0ZW5jaWwobmUpLHplPW5lKX0scmVzZXQ6ZnVuY3Rpb24oKXtQPSExLHB0PW51bGwsaHQ9bnVsbCxFdD1udWxsLFk9bnVsbCxNdD1udWxsLER0PW51bGwsanQ9bnVsbCx6ZT1udWxsfX19bGV0IGE9bmV3IHIsbD1uZXcgcyxjPW5ldyBvLHU9e30saD17fSxmPW5ldyBXZWFrTWFwLGQ9W10sZz1udWxsLHg9ITEsdj1udWxsLG09bnVsbCxwPW51bGwsYj1udWxsLF89bnVsbCxTPW51bGwsTD1udWxsLEE9ITEsSD1udWxsLHR0PW51bGwsWD1udWxsLHk9bnVsbCxSPW51bGwsRD1uLmdldFBhcmFtZXRlcigzNTY2MSksRj0hMSx6PTAsTj1uLmdldFBhcmFtZXRlcig3OTM4KTtOLmluZGV4T2YoIldlYkdMIikhPT0tMT8oej1wYXJzZUZsb2F0KC9eV2ViR0wgKFxkKS8uZXhlYyhOKVsxXSksRj16Pj0xKTpOLmluZGV4T2YoIk9wZW5HTCBFUyIpIT09LTEmJih6PXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFxkKS8uZXhlYyhOKVsxXSksRj16Pj0yKTtsZXQgVj1udWxsLFE9e30sYXQ9bi5nZXRQYXJhbWV0ZXIoMzA4OCksRz1uLmdldFBhcmFtZXRlcigyOTc4KSwkPW5ldyBXdCgpLmZyb21BcnJheShhdCksbHQ9bmV3IFd0KCkuZnJvbUFycmF5KEcpO2Z1bmN0aW9uIGR0KFAscHQsaHQpe2xldCBFdD1uZXcgVWludDhBcnJheSg0KSxZPW4uY3JlYXRlVGV4dHVyZSgpO24uYmluZFRleHR1cmUoUCxZKSxuLnRleFBhcmFtZXRlcmkoUCwxMDI0MSw5NzI4KSxuLnRleFBhcmFtZXRlcmkoUCwxMDI0MCw5NzI4KTtmb3IobGV0IE10PTA7TXQ8aHQ7TXQrKyluLnRleEltYWdlMkQocHQrTXQsMCw2NDA4LDEsMSwwLDY0MDgsNTEyMSxFdCk7cmV0dXJuIFl9bGV0IHh0PXt9O3h0WzM1NTNdPWR0KDM1NTMsMzU1MywxKSx4dFszNDA2N109ZHQoMzQwNjcsMzQwNjksNiksYS5zZXRDbGVhcigwLDAsMCwxKSxsLnNldENsZWFyKDEpLGMuc2V0Q2xlYXIoMCksaygyOTI5KSxsLnNldEZ1bmMoTnUpLEooITEpLGl0KEVtKSxrKDI4ODQpLEMoam4pO2Z1bmN0aW9uIGsoUCl7dVtQXSE9PSEwJiYobi5lbmFibGUoUCksdVtQXT0hMCl9ZnVuY3Rpb24gRnQoUCl7dVtQXSE9PSExJiYobi5kaXNhYmxlKFApLHVbUF09ITEpfWZ1bmN0aW9uIG10KFAscHQpe3JldHVybiBoW1BdIT09cHQ/KG4uYmluZEZyYW1lYnVmZmVyKFAscHQpLGhbUF09cHQsaSYmKFA9PT0zNjAwOSYmKGhbMzYxNjBdPXB0KSxQPT09MzYxNjAmJihoWzM2MDA5XT1wdCkpLCEwKTohMX1mdW5jdGlvbiBTdChQLHB0KXtsZXQgaHQ9ZCxFdD0hMTtpZihQKWlmKGh0PWYuZ2V0KHB0KSxodD09PXZvaWQgMCYmKGh0PVtdLGYuc2V0KHB0LGh0KSksUC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzKXtsZXQgWT1QLnRleHR1cmU7aWYoaHQubGVuZ3RoIT09WS5sZW5ndGh8fGh0WzBdIT09MzYwNjQpe2ZvcihsZXQgTXQ9MCxEdD1ZLmxlbmd0aDtNdDxEdDtNdCsrKWh0W010XT0zNjA2NCtNdDtodC5sZW5ndGg9WS5sZW5ndGgsRXQ9ITB9fWVsc2UgaHRbMF0hPT0zNjA2NCYmKGh0WzBdPTM2MDY0LEV0PSEwKTtlbHNlIGh0WzBdIT09MTAyOSYmKGh0WzBdPTEwMjksRXQ9ITApO0V0JiYoZS5pc1dlYkdMMj9uLmRyYXdCdWZmZXJzKGh0KTp0LmdldCgiV0VCR0xfZHJhd19idWZmZXJzIikuZHJhd0J1ZmZlcnNXRUJHTChodCkpfWZ1bmN0aW9uIEIoUCl7cmV0dXJuIGchPT1QPyhuLnVzZVByb2dyYW0oUCksZz1QLCEwKTohMX1sZXQgc3Q9e1tEcl06MzI3NzQsW0pfXTozMjc3OCxbJF9dOjMyNzc5fTtpZihpKXN0W1JtXT0zMjc3NSxzdFtMbV09MzI3NzY7ZWxzZXtsZXQgUD10LmdldCgiRVhUX2JsZW5kX21pbm1heCIpO1AhPT1udWxsJiYoc3RbUm1dPVAuTUlOX0VYVCxzdFtMbV09UC5NQVhfRVhUKX1sZXQgbnQ9e1tLX106MCxbUV9dOjEsW2pfXTo3NjgsW2wwXTo3NzAsW3N3XTo3NzYsW2l3XTo3NzQsW2V3XTo3NzIsW3R3XTo3NjksW2MwXTo3NzEsW3J3XTo3NzUsW253XTo3NzN9O2Z1bmN0aW9uIEMoUCxwdCxodCxFdCxZLE10LER0LGp0KXtpZihQPT09am4pe3g9PT0hMCYmKEZ0KDMwNDIpLHg9ITEpO3JldHVybn1pZih4PT09ITEmJihrKDMwNDIpLHg9ITApLFAhPT1aXyl7aWYoUCE9PXZ8fGp0IT09QSl7aWYoKG0hPT1Ecnx8XyE9PURyKSYmKG4uYmxlbmRFcXVhdGlvbigzMjc3NCksbT1EcixfPURyKSxqdClzd2l0Y2goUCl7Y2FzZSAkczpuLmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIFRtOm4uYmxlbmRGdW5jKDEsMSk7YnJlYWs7Y2FzZSBBbTpuLmJsZW5kRnVuY1NlcGFyYXRlKDAsNzY5LDAsMSk7YnJlYWs7Y2FzZSBDbTpuLmJsZW5kRnVuY1NlcGFyYXRlKDAsNzY4LDAsNzcwKTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsUCk7YnJlYWt9ZWxzZSBzd2l0Y2goUCl7Y2FzZSAkczpuLmJsZW5kRnVuY1NlcGFyYXRlKDc3MCw3NzEsMSw3NzEpO2JyZWFrO2Nhc2UgVG06bi5ibGVuZEZ1bmMoNzcwLDEpO2JyZWFrO2Nhc2UgQW06bi5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OSwwLDEpO2JyZWFrO2Nhc2UgQ206bi5ibGVuZEZ1bmMoMCw3NjgpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixQKTticmVha31wPW51bGwsYj1udWxsLFM9bnVsbCxMPW51bGwsdj1QLEE9anR9cmV0dXJufVk9WXx8cHQsTXQ9TXR8fGh0LER0PUR0fHxFdCwocHQhPT1tfHxZIT09XykmJihuLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShzdFtwdF0sc3RbWV0pLG09cHQsXz1ZKSwoaHQhPT1wfHxFdCE9PWJ8fE10IT09U3x8RHQhPT1MKSYmKG4uYmxlbmRGdW5jU2VwYXJhdGUobnRbaHRdLG50W0V0XSxudFtNdF0sbnRbRHRdKSxwPWh0LGI9RXQsUz1NdCxMPUR0KSx2PVAsQT1udWxsfWZ1bmN0aW9uIGooUCxwdCl7UC5zaWRlPT09a3I/RnQoMjg4NCk6aygyODg0KTtsZXQgaHQ9UC5zaWRlPT09aGU7cHQmJihodD0haHQpLEooaHQpLFAuYmxlbmRpbmc9PT0kcyYmUC50cmFuc3BhcmVudD09PSExP0Moam4pOkMoUC5ibGVuZGluZyxQLmJsZW5kRXF1YXRpb24sUC5ibGVuZFNyYyxQLmJsZW5kRHN0LFAuYmxlbmRFcXVhdGlvbkFscGhhLFAuYmxlbmRTcmNBbHBoYSxQLmJsZW5kRHN0QWxwaGEsUC5wcmVtdWx0aXBsaWVkQWxwaGEpLGwuc2V0RnVuYyhQLmRlcHRoRnVuYyksbC5zZXRUZXN0KFAuZGVwdGhUZXN0KSxsLnNldE1hc2soUC5kZXB0aFdyaXRlKSxhLnNldE1hc2soUC5jb2xvcldyaXRlKTtsZXQgRXQ9UC5zdGVuY2lsV3JpdGU7Yy5zZXRUZXN0KEV0KSxFdCYmKGMuc2V0TWFzayhQLnN0ZW5jaWxXcml0ZU1hc2spLGMuc2V0RnVuYyhQLnN0ZW5jaWxGdW5jLFAuc3RlbmNpbFJlZixQLnN0ZW5jaWxGdW5jTWFzayksYy5zZXRPcChQLnN0ZW5jaWxGYWlsLFAuc3RlbmNpbFpGYWlsLFAuc3RlbmNpbFpQYXNzKSksdnQoUC5wb2x5Z29uT2Zmc2V0LFAucG9seWdvbk9mZnNldEZhY3RvcixQLnBvbHlnb25PZmZzZXRVbml0cyksUC5hbHBoYVRvQ292ZXJhZ2U9PT0hMD9rKDMyOTI2KTpGdCgzMjkyNil9ZnVuY3Rpb24gSihQKXtIIT09UCYmKFA/bi5mcm9udEZhY2UoMjMwNCk6bi5mcm9udEZhY2UoMjMwNSksSD1QKX1mdW5jdGlvbiBpdChQKXtQIT09cV8/KGsoMjg4NCksUCE9PXR0JiYoUD09PUVtP24uY3VsbEZhY2UoMTAyOSk6UD09PVhfP24uY3VsbEZhY2UoMTAyOCk6bi5jdWxsRmFjZSgxMDMyKSkpOkZ0KDI4ODQpLHR0PVB9ZnVuY3Rpb24gZXQoUCl7UCE9PVgmJihGJiZuLmxpbmVXaWR0aChQKSxYPVApfWZ1bmN0aW9uIHZ0KFAscHQsaHQpe1A/KGsoMzI4MjMpLCh5IT09cHR8fFIhPT1odCkmJihuLnBvbHlnb25PZmZzZXQocHQsaHQpLHk9cHQsUj1odCkpOkZ0KDMyODIzKX1mdW5jdGlvbiBidChQKXtQP2soMzA4OSk6RnQoMzA4OSl9ZnVuY3Rpb24gSXQoUCl7UD09PXZvaWQgMCYmKFA9MzM5ODQrRC0xKSxWIT09UCYmKG4uYWN0aXZlVGV4dHVyZShQKSxWPVApfWZ1bmN0aW9uIFp0KFAscHQpe1Y9PT1udWxsJiZJdCgpO2xldCBodD1RW1ZdO2h0PT09dm9pZCAwJiYoaHQ9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxRW1ZdPWh0KSwoaHQudHlwZSE9PVB8fGh0LnRleHR1cmUhPT1wdCkmJihuLmJpbmRUZXh0dXJlKFAscHR8fHh0W1BdKSxodC50eXBlPVAsaHQudGV4dHVyZT1wdCl9ZnVuY3Rpb24gcXQoKXtsZXQgUD1RW1ZdO1AhPT12b2lkIDAmJlAudHlwZSE9PXZvaWQgMCYmKG4uYmluZFRleHR1cmUoUC50eXBlLG51bGwpLFAudHlwZT12b2lkIDAsUC50ZXh0dXJlPXZvaWQgMCl9ZnVuY3Rpb24gRSgpe3RyeXtuLmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KG4sYXJndW1lbnRzKX1jYXRjaChQKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsUCl9fWZ1bmN0aW9uIHcoKXt0cnl7bi50ZXhTdWJJbWFnZTJELmFwcGx5KG4sYXJndW1lbnRzKX1jYXRjaChQKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsUCl9fWZ1bmN0aW9uIHEoKXt0cnl7bi50ZXhTdWJJbWFnZTNELmFwcGx5KG4sYXJndW1lbnRzKX1jYXRjaChQKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsUCl9fWZ1bmN0aW9uIHJ0KCl7dHJ5e24uY29tcHJlc3NlZFRleFN1YkltYWdlMkQuYXBwbHkobixhcmd1bWVudHMpfWNhdGNoKFApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixQKX19ZnVuY3Rpb24gZ3QoKXt0cnl7bi50ZXhTdG9yYWdlMkQuYXBwbHkobixhcmd1bWVudHMpfWNhdGNoKFApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixQKX19ZnVuY3Rpb24gVygpe3RyeXtuLnRleFN0b3JhZ2UzRC5hcHBseShuLGFyZ3VtZW50cyl9Y2F0Y2goUCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLFApfX1mdW5jdGlvbiBfdCgpe3RyeXtuLnRleEltYWdlMkQuYXBwbHkobixhcmd1bWVudHMpfWNhdGNoKFApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixQKX19ZnVuY3Rpb24geXQoKXt0cnl7bi50ZXhJbWFnZTNELmFwcGx5KG4sYXJndW1lbnRzKX1jYXRjaChQKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsUCl9fWZ1bmN0aW9uIHV0KFApeyQuZXF1YWxzKFApPT09ITEmJihuLnNjaXNzb3IoUC54LFAueSxQLnosUC53KSwkLmNvcHkoUCkpfWZ1bmN0aW9uIGN0KFApe2x0LmVxdWFscyhQKT09PSExJiYobi52aWV3cG9ydChQLngsUC55LFAueixQLncpLGx0LmNvcHkoUCkpfWZ1bmN0aW9uIEF0KCl7bi5kaXNhYmxlKDMwNDIpLG4uZGlzYWJsZSgyODg0KSxuLmRpc2FibGUoMjkyOSksbi5kaXNhYmxlKDMyODIzKSxuLmRpc2FibGUoMzA4OSksbi5kaXNhYmxlKDI5NjApLG4uZGlzYWJsZSgzMjkyNiksbi5ibGVuZEVxdWF0aW9uKDMyNzc0KSxuLmJsZW5kRnVuYygxLDApLG4uYmxlbmRGdW5jU2VwYXJhdGUoMSwwLDEsMCksbi5jb2xvck1hc2soITAsITAsITAsITApLG4uY2xlYXJDb2xvcigwLDAsMCwwKSxuLmRlcHRoTWFzayghMCksbi5kZXB0aEZ1bmMoNTEzKSxuLmNsZWFyRGVwdGgoMSksbi5zdGVuY2lsTWFzayg0Mjk0OTY3Mjk1KSxuLnN0ZW5jaWxGdW5jKDUxOSwwLDQyOTQ5NjcyOTUpLG4uc3RlbmNpbE9wKDc2ODAsNzY4MCw3NjgwKSxuLmNsZWFyU3RlbmNpbCgwKSxuLmN1bGxGYWNlKDEwMjkpLG4uZnJvbnRGYWNlKDIzMDUpLG4ucG9seWdvbk9mZnNldCgwLDApLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCksaT09PSEwJiYobi5iaW5kRnJhbWVidWZmZXIoMzYwMDksbnVsbCksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDgsbnVsbCkpLG4udXNlUHJvZ3JhbShudWxsKSxuLmxpbmVXaWR0aCgxKSxuLnNjaXNzb3IoMCwwLG4uY2FudmFzLndpZHRoLG4uY2FudmFzLmhlaWdodCksbi52aWV3cG9ydCgwLDAsbi5jYW52YXMud2lkdGgsbi5jYW52YXMuaGVpZ2h0KSx1PXt9LFY9bnVsbCxRPXt9LGg9e30sZj1uZXcgV2Vha01hcCxkPVtdLGc9bnVsbCx4PSExLHY9bnVsbCxtPW51bGwscD1udWxsLGI9bnVsbCxfPW51bGwsUz1udWxsLEw9bnVsbCxBPSExLEg9bnVsbCx0dD1udWxsLFg9bnVsbCx5PW51bGwsUj1udWxsLCQuc2V0KDAsMCxuLmNhbnZhcy53aWR0aCxuLmNhbnZhcy5oZWlnaHQpLGx0LnNldCgwLDAsbi5jYW52YXMud2lkdGgsbi5jYW52YXMuaGVpZ2h0KSxhLnJlc2V0KCksbC5yZXNldCgpLGMucmVzZXQoKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6YSxkZXB0aDpsLHN0ZW5jaWw6Y30sZW5hYmxlOmssZGlzYWJsZTpGdCxiaW5kRnJhbWVidWZmZXI6bXQsZHJhd0J1ZmZlcnM6U3QsdXNlUHJvZ3JhbTpCLHNldEJsZW5kaW5nOkMsc2V0TWF0ZXJpYWw6aixzZXRGbGlwU2lkZWQ6SixzZXRDdWxsRmFjZTppdCxzZXRMaW5lV2lkdGg6ZXQsc2V0UG9seWdvbk9mZnNldDp2dCxzZXRTY2lzc29yVGVzdDpidCxhY3RpdmVUZXh0dXJlOkl0LGJpbmRUZXh0dXJlOlp0LHVuYmluZFRleHR1cmU6cXQsY29tcHJlc3NlZFRleEltYWdlMkQ6RSx0ZXhJbWFnZTJEOl90LHRleEltYWdlM0Q6eXQsdGV4U3RvcmFnZTJEOmd0LHRleFN0b3JhZ2UzRDpXLHRleFN1YkltYWdlMkQ6dyx0ZXhTdWJJbWFnZTNEOnEsY29tcHJlc3NlZFRleFN1YkltYWdlMkQ6cnQsc2Npc3Nvcjp1dCx2aWV3cG9ydDpjdCxyZXNldDpBdH19ZnVuY3Rpb24geEUobix0LGUsaSxyLHMsbyl7bGV0IGE9ci5pc1dlYkdMMixsPXIubWF4VGV4dHVyZXMsYz1yLm1heEN1YmVtYXBTaXplLHU9ci5tYXhUZXh0dXJlU2l6ZSxoPXIubWF4U2FtcGxlcyxkPXQuaGFzKCJXRUJHTF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKT90LmdldCgiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIik6dm9pZCAwLGc9bmV3IFdlYWtNYXAseCx2PSExO3RyeXt2PXR5cGVvZiBPZmZzY3JlZW5DYW52YXMhPSJ1bmRlZmluZWQiJiZuZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKSE9PW51bGx9Y2F0Y2goRSl7fWZ1bmN0aW9uIG0oRSx3KXtyZXR1cm4gdj9uZXcgT2Zmc2NyZWVuQ2FudmFzKEUsdyk6aW8oImNhbnZhcyIpfWZ1bmN0aW9uIHAoRSx3LHEscnQpe2xldCBndD0xO2lmKChFLndpZHRoPnJ0fHxFLmhlaWdodD5ydCkmJihndD1ydC9NYXRoLm1heChFLndpZHRoLEUuaGVpZ2h0KSksZ3Q8MXx8dz09PSEwKWlmKHR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50IT0idW5kZWZpbmVkIiYmRSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fHR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCE9InVuZGVmaW5lZCImJkUgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8dHlwZW9mIEltYWdlQml0bWFwIT0idW5kZWZpbmVkIiYmRSBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXtsZXQgVz13P1d3Ok1hdGguZmxvb3IsX3Q9VyhndCpFLndpZHRoKSx5dD1XKGd0KkUuaGVpZ2h0KTt4PT09dm9pZCAwJiYoeD1tKF90LHl0KSk7bGV0IHV0PXE/bShfdCx5dCk6eDtyZXR1cm4gdXQud2lkdGg9X3QsdXQuaGVpZ2h0PXl0LHV0LmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKEUsMCwwLF90LHl0KSxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaGFzIGJlZW4gcmVzaXplZCBmcm9tICgiK0Uud2lkdGgrIngiK0UuaGVpZ2h0KyIpIHRvICgiK190KyJ4Iit5dCsiKS4iKSx1dH1lbHNlIHJldHVybiJkYXRhImluIEUmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogSW1hZ2UgaW4gRGF0YVRleHR1cmUgaXMgdG9vIGJpZyAoIitFLndpZHRoKyJ4IitFLmhlaWdodCsiKS4iKSxFO3JldHVybiBFfWZ1bmN0aW9uIGIoRSl7cmV0dXJuIGVnKEUud2lkdGgpJiZlZyhFLmhlaWdodCl9ZnVuY3Rpb24gXyhFKXtyZXR1cm4gYT8hMTpFLndyYXBTIT09VmV8fEUud3JhcFQhPT1WZXx8RS5taW5GaWx0ZXIhPT1mZSYmRS5taW5GaWx0ZXIhPT1iZX1mdW5jdGlvbiBTKEUsdyl7cmV0dXJuIEUuZ2VuZXJhdGVNaXBtYXBzJiZ3JiZFLm1pbkZpbHRlciE9PWZlJiZFLm1pbkZpbHRlciE9PWJlfWZ1bmN0aW9uIEwoRSl7bi5nZW5lcmF0ZU1pcG1hcChFKX1mdW5jdGlvbiBBKEUsdyxxLHJ0LGd0PSExKXtpZihhPT09ITEpcmV0dXJuIHc7aWYoRSE9PW51bGwpe2lmKG5bRV0hPT12b2lkIDApcmV0dXJuIG5bRV07Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIHVzZSBub24tZXhpc3RpbmcgV2ViR0wgaW50ZXJuYWwgZm9ybWF0ICciK0UrIiciKX1sZXQgVz13O3JldHVybiB3PT09NjQwMyYmKHE9PT01MTI2JiYoVz0zMzMyNikscT09PTUxMzEmJihXPTMzMzI1KSxxPT09NTEyMSYmKFc9MzMzMjEpKSx3PT09MzMzMTkmJihxPT09NTEyNiYmKFc9MzMzMjgpLHE9PT01MTMxJiYoVz0zMzMyNykscT09PTUxMjEmJihXPTMzMzIzKSksdz09PTY0MDgmJihxPT09NTEyNiYmKFc9MzQ4MzYpLHE9PT01MTMxJiYoVz0zNDg0MikscT09PTUxMjEmJihXPXJ0PT09JHQmJmd0PT09ITE/MzU5MDc6MzI4NTYpLHE9PT0zMjgxOSYmKFc9MzI4NTQpLHE9PT0zMjgyMCYmKFc9MzI4NTUpKSwoVz09PTMzMzI1fHxXPT09MzMzMjZ8fFc9PT0zMzMyN3x8Vz09PTMzMzI4fHxXPT09MzQ4NDJ8fFc9PT0zNDgzNikmJnQuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiksV31mdW5jdGlvbiBIKEUsdyxxKXtyZXR1cm4gUyhFLHEpPT09ITB8fEUuaXNGcmFtZWJ1ZmZlclRleHR1cmUmJkUubWluRmlsdGVyIT09ZmUmJkUubWluRmlsdGVyIT09YmU/TWF0aC5sb2cyKE1hdGgubWF4KHcud2lkdGgsdy5oZWlnaHQpKSsxOkUubWlwbWFwcyE9PXZvaWQgMCYmRS5taXBtYXBzLmxlbmd0aD4wP0UubWlwbWFwcy5sZW5ndGg6RS5pc0NvbXByZXNzZWRUZXh0dXJlJiZBcnJheS5pc0FycmF5KEUuaW1hZ2UpP3cubWlwbWFwcy5sZW5ndGg6MX1mdW5jdGlvbiB0dChFKXtyZXR1cm4gRT09PWZlfHxFPT09UG18fEU9PT1EbT85NzI4Ojk3Mjl9ZnVuY3Rpb24gWChFKXtsZXQgdz1FLnRhcmdldDt3LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFgpLFIodyksdy5pc1ZpZGVvVGV4dHVyZSYmZy5kZWxldGUodyksby5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiB5KEUpe2xldCB3PUUudGFyZ2V0O3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseSksRCh3KX1mdW5jdGlvbiBSKEUpe2xldCB3PWkuZ2V0KEUpO3cuX193ZWJnbEluaXQhPT12b2lkIDAmJihuLmRlbGV0ZVRleHR1cmUody5fX3dlYmdsVGV4dHVyZSksaS5yZW1vdmUoRSkpfWZ1bmN0aW9uIEQoRSl7bGV0IHc9RS50ZXh0dXJlLHE9aS5nZXQoRSkscnQ9aS5nZXQodyk7aWYoISFFKXtpZihydC5fX3dlYmdsVGV4dHVyZSE9PXZvaWQgMCYmKG4uZGVsZXRlVGV4dHVyZShydC5fX3dlYmdsVGV4dHVyZSksby5tZW1vcnkudGV4dHVyZXMtLSksRS5kZXB0aFRleHR1cmUmJkUuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKSxFLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KWZvcihsZXQgZ3Q9MDtndDw2O2d0Kyspbi5kZWxldGVGcmFtZWJ1ZmZlcihxLl9fd2ViZ2xGcmFtZWJ1ZmZlcltndF0pLHEuX193ZWJnbERlcHRoYnVmZmVyJiZuLmRlbGV0ZVJlbmRlcmJ1ZmZlcihxLl9fd2ViZ2xEZXB0aGJ1ZmZlcltndF0pO2Vsc2Ugbi5kZWxldGVGcmFtZWJ1ZmZlcihxLl9fd2ViZ2xGcmFtZWJ1ZmZlcikscS5fX3dlYmdsRGVwdGhidWZmZXImJm4uZGVsZXRlUmVuZGVyYnVmZmVyKHEuX193ZWJnbERlcHRoYnVmZmVyKSxxLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciYmbi5kZWxldGVGcmFtZWJ1ZmZlcihxLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcikscS5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXImJm4uZGVsZXRlUmVuZGVyYnVmZmVyKHEuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSxxLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlciYmbi5kZWxldGVSZW5kZXJidWZmZXIocS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXIpO2lmKEUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cylmb3IobGV0IGd0PTAsVz13Lmxlbmd0aDtndDxXO2d0Kyspe2xldCBfdD1pLmdldCh3W2d0XSk7X3QuX193ZWJnbFRleHR1cmUmJihuLmRlbGV0ZVRleHR1cmUoX3QuX193ZWJnbFRleHR1cmUpLG8ubWVtb3J5LnRleHR1cmVzLS0pLGkucmVtb3ZlKHdbZ3RdKX1pLnJlbW92ZSh3KSxpLnJlbW92ZShFKX19bGV0IEY9MDtmdW5jdGlvbiB6KCl7Rj0wfWZ1bmN0aW9uIE4oKXtsZXQgRT1GO3JldHVybiBFPj1sJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXM6IFRyeWluZyB0byB1c2UgIitFKyIgdGV4dHVyZSB1bml0cyB3aGlsZSB0aGlzIEdQVSBzdXBwb3J0cyBvbmx5ICIrbCksRis9MSxFfWZ1bmN0aW9uIFYoRSx3KXtsZXQgcT1pLmdldChFKTtpZihFLmlzVmlkZW9UZXh0dXJlJiZldChFKSxFLnZlcnNpb24+MCYmcS5fX3ZlcnNpb24hPT1FLnZlcnNpb24pe2xldCBydD1FLmltYWdlO2lmKHJ0PT09dm9pZCAwKWNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBtYXJrZWQgZm9yIHVwZGF0ZSBidXQgaW1hZ2UgaXMgdW5kZWZpbmVkIik7ZWxzZSBpZihydC5jb21wbGV0ZT09PSExKWNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBtYXJrZWQgZm9yIHVwZGF0ZSBidXQgaW1hZ2UgaXMgaW5jb21wbGV0ZSIpO2Vsc2V7ayhxLEUsdyk7cmV0dXJufX1lLmFjdGl2ZVRleHR1cmUoMzM5ODQrdyksZS5iaW5kVGV4dHVyZSgzNTUzLHEuX193ZWJnbFRleHR1cmUpfWZ1bmN0aW9uIFEoRSx3KXtsZXQgcT1pLmdldChFKTtpZihFLnZlcnNpb24+MCYmcS5fX3ZlcnNpb24hPT1FLnZlcnNpb24pe2socSxFLHcpO3JldHVybn1lLmFjdGl2ZVRleHR1cmUoMzM5ODQrdyksZS5iaW5kVGV4dHVyZSgzNTg2NixxLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBhdChFLHcpe2xldCBxPWkuZ2V0KEUpO2lmKEUudmVyc2lvbj4wJiZxLl9fdmVyc2lvbiE9PUUudmVyc2lvbil7ayhxLEUsdyk7cmV0dXJufWUuYWN0aXZlVGV4dHVyZSgzMzk4NCt3KSxlLmJpbmRUZXh0dXJlKDMyODc5LHEuX193ZWJnbFRleHR1cmUpfWZ1bmN0aW9uIEcoRSx3KXtsZXQgcT1pLmdldChFKTtpZihFLnZlcnNpb24+MCYmcS5fX3ZlcnNpb24hPT1FLnZlcnNpb24pe0Z0KHEsRSx3KTtyZXR1cm59ZS5hY3RpdmVUZXh0dXJlKDMzOTg0K3cpLGUuYmluZFRleHR1cmUoMzQwNjcscS5fX3dlYmdsVGV4dHVyZSl9bGV0ICQ9e1tVdV06MTA0OTcsW1ZlXTozMzA3MSxbQnVdOjMzNjQ4fSxsdD17W2ZlXTo5NzI4LFtQbV06OTk4NCxbRG1dOjk5ODYsW2JlXTo5NzI5LFtfd106OTk4NSxbUmxdOjk5ODd9O2Z1bmN0aW9uIGR0KEUsdyxxKXtpZihxPyhuLnRleFBhcmFtZXRlcmkoRSwxMDI0MiwkW3cud3JhcFNdKSxuLnRleFBhcmFtZXRlcmkoRSwxMDI0MywkW3cud3JhcFRdKSwoRT09PTMyODc5fHxFPT09MzU4NjYpJiZuLnRleFBhcmFtZXRlcmkoRSwzMjg4MiwkW3cud3JhcFJdKSxuLnRleFBhcmFtZXRlcmkoRSwxMDI0MCxsdFt3Lm1hZ0ZpbHRlcl0pLG4udGV4UGFyYW1ldGVyaShFLDEwMjQxLGx0W3cubWluRmlsdGVyXSkpOihuLnRleFBhcmFtZXRlcmkoRSwxMDI0MiwzMzA3MSksbi50ZXhQYXJhbWV0ZXJpKEUsMTAyNDMsMzMwNzEpLChFPT09MzI4Nzl8fEU9PT0zNTg2NikmJm4udGV4UGFyYW1ldGVyaShFLDMyODgyLDMzMDcxKSwody53cmFwUyE9PVZlfHx3LndyYXBUIT09VmUpJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS53cmFwUyBhbmQgVGV4dHVyZS53cmFwVCBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLkNsYW1wVG9FZGdlV3JhcHBpbmcuIiksbi50ZXhQYXJhbWV0ZXJpKEUsMTAyNDAsdHQody5tYWdGaWx0ZXIpKSxuLnRleFBhcmFtZXRlcmkoRSwxMDI0MSx0dCh3Lm1pbkZpbHRlcikpLHcubWluRmlsdGVyIT09ZmUmJncubWluRmlsdGVyIT09YmUmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLm1pbkZpbHRlciBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLk5lYXJlc3RGaWx0ZXIgb3IgVEhSRUUuTGluZWFyRmlsdGVyLiIpKSx0LmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik9PT0hMCl7bGV0IHJ0PXQuZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtpZih3LnR5cGU9PT16aSYmdC5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpPT09ITF8fGE9PT0hMSYmdy50eXBlPT09enImJnQuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpPT09ITEpcmV0dXJuOyh3LmFuaXNvdHJvcHk+MXx8aS5nZXQodykuX19jdXJyZW50QW5pc290cm9weSkmJihuLnRleFBhcmFtZXRlcmYoRSxydC5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbih3LmFuaXNvdHJvcHksci5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxpLmdldCh3KS5fX2N1cnJlbnRBbmlzb3Ryb3B5PXcuYW5pc290cm9weSl9fWZ1bmN0aW9uIHh0KEUsdyl7RS5fX3dlYmdsSW5pdD09PXZvaWQgMCYmKEUuX193ZWJnbEluaXQ9ITAsdy5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixYKSxFLl9fd2ViZ2xUZXh0dXJlPW4uY3JlYXRlVGV4dHVyZSgpLG8ubWVtb3J5LnRleHR1cmVzKyspfWZ1bmN0aW9uIGsoRSx3LHEpe2xldCBydD0zNTUzO3cuaXNEYXRhVGV4dHVyZTJEQXJyYXkmJihydD0zNTg2Niksdy5pc0RhdGFUZXh0dXJlM0QmJihydD0zMjg3OSkseHQoRSx3KSxlLmFjdGl2ZVRleHR1cmUoMzM5ODQrcSksZS5iaW5kVGV4dHVyZShydCxFLl9fd2ViZ2xUZXh0dXJlKSxuLnBpeGVsU3RvcmVpKDM3NDQwLHcuZmxpcFkpLG4ucGl4ZWxTdG9yZWkoMzc0NDEsdy5wcmVtdWx0aXBseUFscGhhKSxuLnBpeGVsU3RvcmVpKDMzMTcsdy51bnBhY2tBbGlnbm1lbnQpLG4ucGl4ZWxTdG9yZWkoMzc0NDMsMCk7bGV0IGd0PV8odykmJmIody5pbWFnZSk9PT0hMSxXPXAody5pbWFnZSxndCwhMSx1KTtXPXZ0KHcsVyk7bGV0IF90PWIoVyl8fGEseXQ9cy5jb252ZXJ0KHcuZm9ybWF0LHcuZW5jb2RpbmcpLHV0PXMuY29udmVydCh3LnR5cGUpLGN0PUEody5pbnRlcm5hbEZvcm1hdCx5dCx1dCx3LmVuY29kaW5nLHcuaXNWaWRlb1RleHR1cmUpO2R0KHJ0LHcsX3QpO2xldCBBdCxQPXcubWlwbWFwcyxwdD1hJiZ3LmlzVmlkZW9UZXh0dXJlIT09ITAsaHQ9RS5fX3ZlcnNpb249PT12b2lkIDAsRXQ9SCh3LFcsX3QpO2lmKHcuaXNEZXB0aFRleHR1cmUpY3Q9NjQwMixhP3cudHlwZT09PXppP2N0PTM2MDEyOncudHlwZT09PUthP2N0PTMzMTkwOncudHlwZT09PVVyP2N0PTM1MDU2OmN0PTMzMTg5OncudHlwZT09PXppJiZjb25zb2xlLmVycm9yKCJXZWJHTFJlbmRlcmVyOiBGbG9hdGluZyBwb2ludCBkZXB0aCB0ZXh0dXJlIHJlcXVpcmVzIFdlYkdMMi4iKSx3LmZvcm1hdD09PUJpJiZjdD09PTY0MDImJncudHlwZSE9PWVvJiZ3LnR5cGUhPT1LYSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLHcudHlwZT1lbyx1dD1zLmNvbnZlcnQody50eXBlKSksdy5mb3JtYXQ9PT1IciYmY3Q9PT02NDAyJiYoY3Q9MzQwNDEsdy50eXBlIT09VXImJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksdy50eXBlPVVyLHV0PXMuY29udmVydCh3LnR5cGUpKSkscHQmJmh0P2UudGV4U3RvcmFnZTJEKDM1NTMsMSxjdCxXLndpZHRoLFcuaGVpZ2h0KTplLnRleEltYWdlMkQoMzU1MywwLGN0LFcud2lkdGgsVy5oZWlnaHQsMCx5dCx1dCxudWxsKTtlbHNlIGlmKHcuaXNEYXRhVGV4dHVyZSlpZihQLmxlbmd0aD4wJiZfdCl7cHQmJmh0JiZlLnRleFN0b3JhZ2UyRCgzNTUzLEV0LGN0LFBbMF0ud2lkdGgsUFswXS5oZWlnaHQpO2ZvcihsZXQgWT0wLE10PVAubGVuZ3RoO1k8TXQ7WSsrKUF0PVBbWV0scHQ/ZS50ZXhTdWJJbWFnZTJEKDM1NTMsMCwwLDAsQXQud2lkdGgsQXQuaGVpZ2h0LHl0LHV0LEF0LmRhdGEpOmUudGV4SW1hZ2UyRCgzNTUzLFksY3QsQXQud2lkdGgsQXQuaGVpZ2h0LDAseXQsdXQsQXQuZGF0YSk7dy5nZW5lcmF0ZU1pcG1hcHM9ITF9ZWxzZSBwdD8oaHQmJmUudGV4U3RvcmFnZTJEKDM1NTMsRXQsY3QsVy53aWR0aCxXLmhlaWdodCksZS50ZXhTdWJJbWFnZTJEKDM1NTMsMCwwLDAsVy53aWR0aCxXLmhlaWdodCx5dCx1dCxXLmRhdGEpKTplLnRleEltYWdlMkQoMzU1MywwLGN0LFcud2lkdGgsVy5oZWlnaHQsMCx5dCx1dCxXLmRhdGEpO2Vsc2UgaWYody5pc0NvbXByZXNzZWRUZXh0dXJlKXtwdCYmaHQmJmUudGV4U3RvcmFnZTJEKDM1NTMsRXQsY3QsUFswXS53aWR0aCxQWzBdLmhlaWdodCk7Zm9yKGxldCBZPTAsTXQ9UC5sZW5ndGg7WTxNdDtZKyspQXQ9UFtZXSx3LmZvcm1hdCE9PVJlP3l0IT09bnVsbD9wdD9lLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsWSwwLDAsQXQud2lkdGgsQXQuaGVpZ2h0LHl0LEF0LmRhdGEpOmUuY29tcHJlc3NlZFRleEltYWdlMkQoMzU1MyxZLGN0LEF0LndpZHRoLEF0LmhlaWdodCwwLEF0LmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnVwbG9hZFRleHR1cmUoKSIpOnB0P2UudGV4U3ViSW1hZ2UyRCgzNTUzLFksMCwwLEF0LndpZHRoLEF0LmhlaWdodCx5dCx1dCxBdC5kYXRhKTplLnRleEltYWdlMkQoMzU1MyxZLGN0LEF0LndpZHRoLEF0LmhlaWdodCwwLHl0LHV0LEF0LmRhdGEpfWVsc2UgaWYody5pc0RhdGFUZXh0dXJlMkRBcnJheSlwdD8oaHQmJmUudGV4U3RvcmFnZTNEKDM1ODY2LEV0LGN0LFcud2lkdGgsVy5oZWlnaHQsVy5kZXB0aCksZS50ZXhTdWJJbWFnZTNEKDM1ODY2LDAsMCwwLDAsVy53aWR0aCxXLmhlaWdodCxXLmRlcHRoLHl0LHV0LFcuZGF0YSkpOmUudGV4SW1hZ2UzRCgzNTg2NiwwLGN0LFcud2lkdGgsVy5oZWlnaHQsVy5kZXB0aCwwLHl0LHV0LFcuZGF0YSk7ZWxzZSBpZih3LmlzRGF0YVRleHR1cmUzRClwdD8oaHQmJmUudGV4U3RvcmFnZTNEKDMyODc5LEV0LGN0LFcud2lkdGgsVy5oZWlnaHQsVy5kZXB0aCksZS50ZXhTdWJJbWFnZTNEKDMyODc5LDAsMCwwLDAsVy53aWR0aCxXLmhlaWdodCxXLmRlcHRoLHl0LHV0LFcuZGF0YSkpOmUudGV4SW1hZ2UzRCgzMjg3OSwwLGN0LFcud2lkdGgsVy5oZWlnaHQsVy5kZXB0aCwwLHl0LHV0LFcuZGF0YSk7ZWxzZSBpZih3LmlzRnJhbWVidWZmZXJUZXh0dXJlKXB0JiZodD9lLnRleFN0b3JhZ2UyRCgzNTUzLEV0LGN0LFcud2lkdGgsVy5oZWlnaHQpOmUudGV4SW1hZ2UyRCgzNTUzLDAsY3QsVy53aWR0aCxXLmhlaWdodCwwLHl0LHV0LG51bGwpO2Vsc2UgaWYoUC5sZW5ndGg+MCYmX3Qpe3B0JiZodCYmZS50ZXhTdG9yYWdlMkQoMzU1MyxFdCxjdCxQWzBdLndpZHRoLFBbMF0uaGVpZ2h0KTtmb3IobGV0IFk9MCxNdD1QLmxlbmd0aDtZPE10O1krKylBdD1QW1ldLHB0P2UudGV4U3ViSW1hZ2UyRCgzNTUzLFksMCwwLHl0LHV0LEF0KTplLnRleEltYWdlMkQoMzU1MyxZLGN0LHl0LHV0LEF0KTt3LmdlbmVyYXRlTWlwbWFwcz0hMX1lbHNlIHB0PyhodCYmZS50ZXhTdG9yYWdlMkQoMzU1MyxFdCxjdCxXLndpZHRoLFcuaGVpZ2h0KSxlLnRleFN1YkltYWdlMkQoMzU1MywwLDAsMCx5dCx1dCxXKSk6ZS50ZXhJbWFnZTJEKDM1NTMsMCxjdCx5dCx1dCxXKTtTKHcsX3QpJiZMKHJ0KSxFLl9fdmVyc2lvbj13LnZlcnNpb24sdy5vblVwZGF0ZSYmdy5vblVwZGF0ZSh3KX1mdW5jdGlvbiBGdChFLHcscSl7aWYody5pbWFnZS5sZW5ndGghPT02KXJldHVybjt4dChFLHcpLGUuYWN0aXZlVGV4dHVyZSgzMzk4NCtxKSxlLmJpbmRUZXh0dXJlKDM0MDY3LEUuX193ZWJnbFRleHR1cmUpLG4ucGl4ZWxTdG9yZWkoMzc0NDAsdy5mbGlwWSksbi5waXhlbFN0b3JlaSgzNzQ0MSx3LnByZW11bHRpcGx5QWxwaGEpLG4ucGl4ZWxTdG9yZWkoMzMxNyx3LnVucGFja0FsaWdubWVudCksbi5waXhlbFN0b3JlaSgzNzQ0MywwKTtsZXQgcnQ9dyYmKHcuaXNDb21wcmVzc2VkVGV4dHVyZXx8dy5pbWFnZVswXS5pc0NvbXByZXNzZWRUZXh0dXJlKSxndD13LmltYWdlWzBdJiZ3LmltYWdlWzBdLmlzRGF0YVRleHR1cmUsVz1bXTtmb3IobGV0IFk9MDtZPDY7WSsrKSFydCYmIWd0P1dbWV09cCh3LmltYWdlW1ldLCExLCEwLGMpOldbWV09Z3Q/dy5pbWFnZVtZXS5pbWFnZTp3LmltYWdlW1ldLFdbWV09dnQodyxXW1ldKTtsZXQgX3Q9V1swXSx5dD1iKF90KXx8YSx1dD1zLmNvbnZlcnQody5mb3JtYXQsdy5lbmNvZGluZyksY3Q9cy5jb252ZXJ0KHcudHlwZSksQXQ9QSh3LmludGVybmFsRm9ybWF0LHV0LGN0LHcuZW5jb2RpbmcpLFA9YSYmdy5pc1ZpZGVvVGV4dHVyZSE9PSEwLHB0PUUuX192ZXJzaW9uPT09dm9pZCAwLGh0PUgodyxfdCx5dCk7ZHQoMzQwNjcsdyx5dCk7bGV0IEV0O2lmKHJ0KXtQJiZwdCYmZS50ZXhTdG9yYWdlMkQoMzQwNjcsaHQsQXQsX3Qud2lkdGgsX3QuaGVpZ2h0KTtmb3IobGV0IFk9MDtZPDY7WSsrKXtFdD1XW1ldLm1pcG1hcHM7Zm9yKGxldCBNdD0wO010PEV0Lmxlbmd0aDtNdCsrKXtsZXQgRHQ9RXRbTXRdO3cuZm9ybWF0IT09UmU/dXQhPT1udWxsP1A/ZS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNDA2OStZLE10LDAsMCxEdC53aWR0aCxEdC5oZWlnaHQsdXQsRHQuZGF0YSk6ZS5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNDA2OStZLE10LEF0LER0LndpZHRoLER0LmhlaWdodCwwLER0LmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnNldFRleHR1cmVDdWJlKCkiKTpQP2UudGV4U3ViSW1hZ2UyRCgzNDA2OStZLE10LDAsMCxEdC53aWR0aCxEdC5oZWlnaHQsdXQsY3QsRHQuZGF0YSk6ZS50ZXhJbWFnZTJEKDM0MDY5K1ksTXQsQXQsRHQud2lkdGgsRHQuaGVpZ2h0LDAsdXQsY3QsRHQuZGF0YSl9fX1lbHNle0V0PXcubWlwbWFwcyxQJiZwdCYmKEV0Lmxlbmd0aD4wJiZodCsrLGUudGV4U3RvcmFnZTJEKDM0MDY3LGh0LEF0LFdbMF0ud2lkdGgsV1swXS5oZWlnaHQpKTtmb3IobGV0IFk9MDtZPDY7WSsrKWlmKGd0KXtQP2UudGV4U3ViSW1hZ2UyRCgzNDA2OStZLDAsMCwwLFdbWV0ud2lkdGgsV1tZXS5oZWlnaHQsdXQsY3QsV1tZXS5kYXRhKTplLnRleEltYWdlMkQoMzQwNjkrWSwwLEF0LFdbWV0ud2lkdGgsV1tZXS5oZWlnaHQsMCx1dCxjdCxXW1ldLmRhdGEpO2ZvcihsZXQgTXQ9MDtNdDxFdC5sZW5ndGg7TXQrKyl7bGV0IGp0PUV0W010XS5pbWFnZVtZXS5pbWFnZTtQP2UudGV4U3ViSW1hZ2UyRCgzNDA2OStZLE10KzEsMCwwLGp0LndpZHRoLGp0LmhlaWdodCx1dCxjdCxqdC5kYXRhKTplLnRleEltYWdlMkQoMzQwNjkrWSxNdCsxLEF0LGp0LndpZHRoLGp0LmhlaWdodCwwLHV0LGN0LGp0LmRhdGEpfX1lbHNle1A/ZS50ZXhTdWJJbWFnZTJEKDM0MDY5K1ksMCwwLDAsdXQsY3QsV1tZXSk6ZS50ZXhJbWFnZTJEKDM0MDY5K1ksMCxBdCx1dCxjdCxXW1ldKTtmb3IobGV0IE10PTA7TXQ8RXQubGVuZ3RoO010Kyspe2xldCBEdD1FdFtNdF07UD9lLnRleFN1YkltYWdlMkQoMzQwNjkrWSxNdCsxLDAsMCx1dCxjdCxEdC5pbWFnZVtZXSk6ZS50ZXhJbWFnZTJEKDM0MDY5K1ksTXQrMSxBdCx1dCxjdCxEdC5pbWFnZVtZXSl9fX1TKHcseXQpJiZMKDM0MDY3KSxFLl9fdmVyc2lvbj13LnZlcnNpb24sdy5vblVwZGF0ZSYmdy5vblVwZGF0ZSh3KX1mdW5jdGlvbiBtdChFLHcscSxydCxndCl7bGV0IFc9cy5jb252ZXJ0KHEuZm9ybWF0LHEuZW5jb2RpbmcpLF90PXMuY29udmVydChxLnR5cGUpLHl0PUEocS5pbnRlcm5hbEZvcm1hdCxXLF90LHEuZW5jb2RpbmcpO2kuZ2V0KHcpLl9faGFzRXh0ZXJuYWxUZXh0dXJlc3x8KGd0PT09MzI4Nzl8fGd0PT09MzU4NjY/ZS50ZXhJbWFnZTNEKGd0LDAseXQsdy53aWR0aCx3LmhlaWdodCx3LmRlcHRoLDAsVyxfdCxudWxsKTplLnRleEltYWdlMkQoZ3QsMCx5dCx3LndpZHRoLHcuaGVpZ2h0LDAsVyxfdCxudWxsKSksZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsRSksdy51c2VSZW5kZXJUb1RleHR1cmU/ZC5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLHJ0LGd0LGkuZ2V0KHEpLl9fd2ViZ2xUZXh0dXJlLDAsaXQodykpOm4uZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAscnQsZ3QsaS5nZXQocSkuX193ZWJnbFRleHR1cmUsMCksZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24gU3QoRSx3LHEpe2lmKG4uYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxFKSx3LmRlcHRoQnVmZmVyJiYhdy5zdGVuY2lsQnVmZmVyKXtsZXQgcnQ9MzMxODk7aWYocXx8dy51c2VSZW5kZXJUb1RleHR1cmUpe2xldCBndD13LmRlcHRoVGV4dHVyZTtndCYmZ3QuaXNEZXB0aFRleHR1cmUmJihndC50eXBlPT09emk/cnQ9MzYwMTI6Z3QudHlwZT09PUthJiYocnQ9MzMxOTApKTtsZXQgVz1pdCh3KTt3LnVzZVJlbmRlclRvVGV4dHVyZT9kLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgzNjE2MSxXLHJ0LHcud2lkdGgsdy5oZWlnaHQpOm4ucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLFcscnQsdy53aWR0aCx3LmhlaWdodCl9ZWxzZSBuLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEscnQsdy53aWR0aCx3LmhlaWdodCk7bi5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA5NiwzNjE2MSxFKX1lbHNlIGlmKHcuZGVwdGhCdWZmZXImJncuc3RlbmNpbEJ1ZmZlcil7bGV0IHJ0PWl0KHcpO3EmJncudXNlUmVuZGVyYnVmZmVyP24ucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLHJ0LDM1MDU2LHcud2lkdGgsdy5oZWlnaHQpOncudXNlUmVuZGVyVG9UZXh0dXJlP2QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKDM2MTYxLHJ0LDM1MDU2LHcud2lkdGgsdy5oZWlnaHQpOm4ucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSwzNDA0MSx3LndpZHRoLHcuaGVpZ2h0KSxuLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDMzMzA2LDM2MTYxLEUpfWVsc2V7bGV0IHJ0PXcuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz09PSEwP3cudGV4dHVyZVswXTp3LnRleHR1cmUsZ3Q9cy5jb252ZXJ0KHJ0LmZvcm1hdCxydC5lbmNvZGluZyksVz1zLmNvbnZlcnQocnQudHlwZSksX3Q9QShydC5pbnRlcm5hbEZvcm1hdCxndCxXLHJ0LmVuY29kaW5nKSx5dD1pdCh3KTtxJiZ3LnVzZVJlbmRlcmJ1ZmZlcj9uLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSx5dCxfdCx3LndpZHRoLHcuaGVpZ2h0KTp3LnVzZVJlbmRlclRvVGV4dHVyZT9kLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgzNjE2MSx5dCxfdCx3LndpZHRoLHcuaGVpZ2h0KTpuLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsX3Qsdy53aWR0aCx3LmhlaWdodCl9bi5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIEIoRSx3KXtpZih3JiZ3LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXRocm93IG5ldyBFcnJvcigiRGVwdGggVGV4dHVyZSB3aXRoIGN1YmUgcmVuZGVyIHRhcmdldHMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKGUuYmluZEZyYW1lYnVmZmVyKDM2MTYwLEUpLCEody5kZXB0aFRleHR1cmUmJncuZGVwdGhUZXh0dXJlLmlzRGVwdGhUZXh0dXJlKSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTsoIWkuZ2V0KHcuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZXx8dy5kZXB0aFRleHR1cmUuaW1hZ2Uud2lkdGghPT13LndpZHRofHx3LmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQhPT13LmhlaWdodCkmJih3LmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD13LndpZHRoLHcuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD13LmhlaWdodCx3LmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksVih3LmRlcHRoVGV4dHVyZSwwKTtsZXQgcnQ9aS5nZXQody5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlLGd0PWl0KHcpO2lmKHcuZGVwdGhUZXh0dXJlLmZvcm1hdD09PUJpKXcudXNlUmVuZGVyVG9UZXh0dXJlP2QuZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCgzNjE2MCwzNjA5NiwzNTUzLHJ0LDAsZ3QpOm4uZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1MyxydCwwKTtlbHNlIGlmKHcuZGVwdGhUZXh0dXJlLmZvcm1hdD09PUhyKXcudXNlUmVuZGVyVG9UZXh0dXJlP2QuZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCgzNjE2MCwzMzMwNiwzNTUzLHJ0LDAsZ3QpOm4uZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzMzMDYsMzU1MyxydCwwKTtlbHNlIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBkZXB0aFRleHR1cmUgZm9ybWF0Iil9ZnVuY3Rpb24gc3QoRSl7bGV0IHc9aS5nZXQoRSkscT1FLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PT09ITA7aWYoRS5kZXB0aFRleHR1cmUmJiF3Ll9fYXV0b0FsbG9jYXRlRGVwdGhCdWZmZXIpe2lmKHEpdGhyb3cgbmV3IEVycm9yKCJ0YXJnZXQuZGVwdGhUZXh0dXJlIG5vdCBzdXBwb3J0ZWQgaW4gQ3ViZSByZW5kZXIgdGFyZ2V0cyIpO0Iody5fX3dlYmdsRnJhbWVidWZmZXIsRSl9ZWxzZSBpZihxKXt3Ll9fd2ViZ2xEZXB0aGJ1ZmZlcj1bXTtmb3IobGV0IHJ0PTA7cnQ8NjtydCsrKWUuYmluZEZyYW1lYnVmZmVyKDM2MTYwLHcuX193ZWJnbEZyYW1lYnVmZmVyW3J0XSksdy5fX3dlYmdsRGVwdGhidWZmZXJbcnRdPW4uY3JlYXRlUmVuZGVyYnVmZmVyKCksU3Qody5fX3dlYmdsRGVwdGhidWZmZXJbcnRdLEUsITEpfWVsc2UgZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsdy5fX3dlYmdsRnJhbWVidWZmZXIpLHcuX193ZWJnbERlcHRoYnVmZmVyPW4uY3JlYXRlUmVuZGVyYnVmZmVyKCksU3Qody5fX3dlYmdsRGVwdGhidWZmZXIsRSwhMSk7ZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24gbnQoRSx3LHEpe2xldCBydD1pLmdldChFKTt3IT09dm9pZCAwJiZtdChydC5fX3dlYmdsRnJhbWVidWZmZXIsRSxFLnRleHR1cmUsMzYwNjQsMzU1MykscSE9PXZvaWQgMCYmc3QoRSl9ZnVuY3Rpb24gQyhFKXtsZXQgdz1FLnRleHR1cmUscT1pLmdldChFKSxydD1pLmdldCh3KTtFLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHkpLEUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyE9PSEwJiYocnQuX193ZWJnbFRleHR1cmU9PT12b2lkIDAmJihydC5fX3dlYmdsVGV4dHVyZT1uLmNyZWF0ZVRleHR1cmUoKSkscnQuX192ZXJzaW9uPXcudmVyc2lvbixvLm1lbW9yeS50ZXh0dXJlcysrKTtsZXQgZ3Q9RS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD09PSEwLFc9RS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzPT09ITAsX3Q9dy5pc0RhdGFUZXh0dXJlM0R8fHcuaXNEYXRhVGV4dHVyZTJEQXJyYXkseXQ9YihFKXx8YTtpZihndCl7cS5fX3dlYmdsRnJhbWVidWZmZXI9W107Zm9yKGxldCB1dD0wO3V0PDY7dXQrKylxLl9fd2ViZ2xGcmFtZWJ1ZmZlclt1dF09bi5jcmVhdGVGcmFtZWJ1ZmZlcigpfWVsc2UgaWYocS5fX3dlYmdsRnJhbWVidWZmZXI9bi5jcmVhdGVGcmFtZWJ1ZmZlcigpLFcpaWYoci5kcmF3QnVmZmVycyl7bGV0IHV0PUUudGV4dHVyZTtmb3IobGV0IGN0PTAsQXQ9dXQubGVuZ3RoO2N0PEF0O2N0Kyspe2xldCBQPWkuZ2V0KHV0W2N0XSk7UC5fX3dlYmdsVGV4dHVyZT09PXZvaWQgMCYmKFAuX193ZWJnbFRleHR1cmU9bi5jcmVhdGVUZXh0dXJlKCksby5tZW1vcnkudGV4dHVyZXMrKyl9fWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cyBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyIG9yIFdFQkdMX2RyYXdfYnVmZmVycyBleHRlbnNpb24uIik7ZWxzZSBpZihFLnVzZVJlbmRlcmJ1ZmZlcilpZihhKXtxLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcj1uLmNyZWF0ZUZyYW1lYnVmZmVyKCkscS5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXI9bi5jcmVhdGVSZW5kZXJidWZmZXIoKSxuLmJpbmRSZW5kZXJidWZmZXIoMzYxNjEscS5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpO2xldCB1dD1zLmNvbnZlcnQody5mb3JtYXQsdy5lbmNvZGluZyksY3Q9cy5jb252ZXJ0KHcudHlwZSksQXQ9QSh3LmludGVybmFsRm9ybWF0LHV0LGN0LHcuZW5jb2RpbmcpLFA9aXQoRSk7bi5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsUCxBdCxFLndpZHRoLEUuaGVpZ2h0KSxlLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxxLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksbi5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA2NCwzNjE2MSxxLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksbi5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLEUuZGVwdGhCdWZmZXImJihxLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcj1uLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLFN0KHEuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyLEUsITApKSxlLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpO2lmKGd0KXtlLmJpbmRUZXh0dXJlKDM0MDY3LHJ0Ll9fd2ViZ2xUZXh0dXJlKSxkdCgzNDA2Nyx3LHl0KTtmb3IobGV0IHV0PTA7dXQ8Njt1dCsrKW10KHEuX193ZWJnbEZyYW1lYnVmZmVyW3V0XSxFLHcsMzYwNjQsMzQwNjkrdXQpO1Modyx5dCkmJkwoMzQwNjcpLGUudW5iaW5kVGV4dHVyZSgpfWVsc2UgaWYoVyl7bGV0IHV0PUUudGV4dHVyZTtmb3IobGV0IGN0PTAsQXQ9dXQubGVuZ3RoO2N0PEF0O2N0Kyspe2xldCBQPXV0W2N0XSxwdD1pLmdldChQKTtlLmJpbmRUZXh0dXJlKDM1NTMscHQuX193ZWJnbFRleHR1cmUpLGR0KDM1NTMsUCx5dCksbXQocS5fX3dlYmdsRnJhbWVidWZmZXIsRSxQLDM2MDY0K2N0LDM1NTMpLFMoUCx5dCkmJkwoMzU1Myl9ZS51bmJpbmRUZXh0dXJlKCl9ZWxzZXtsZXQgdXQ9MzU1MztfdCYmKGE/dXQ9dy5pc0RhdGFUZXh0dXJlM0Q/MzI4Nzk6MzU4NjY6Y29uc29sZS53YXJuKCJUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkgb25seSBzdXBwb3J0ZWQgd2l0aCBXZWJHTDIuIikpLGUuYmluZFRleHR1cmUodXQscnQuX193ZWJnbFRleHR1cmUpLGR0KHV0LHcseXQpLG10KHEuX193ZWJnbEZyYW1lYnVmZmVyLEUsdywzNjA2NCx1dCksUyh3LHl0KSYmTCh1dCksZS51bmJpbmRUZXh0dXJlKCl9RS5kZXB0aEJ1ZmZlciYmc3QoRSl9ZnVuY3Rpb24gaihFKXtsZXQgdz1iKEUpfHxhLHE9RS5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzPT09ITA/RS50ZXh0dXJlOltFLnRleHR1cmVdO2ZvcihsZXQgcnQ9MCxndD1xLmxlbmd0aDtydDxndDtydCsrKXtsZXQgVz1xW3J0XTtpZihTKFcsdykpe2xldCBfdD1FLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PzM0MDY3OjM1NTMseXQ9aS5nZXQoVykuX193ZWJnbFRleHR1cmU7ZS5iaW5kVGV4dHVyZShfdCx5dCksTChfdCksZS51bmJpbmRUZXh0dXJlKCl9fX1mdW5jdGlvbiBKKEUpe2lmKEUudXNlUmVuZGVyYnVmZmVyKWlmKGEpe2xldCB3PUUud2lkdGgscT1FLmhlaWdodCxydD0xNjM4NCxndD1bMzYwNjRdLFc9RS5zdGVuY2lsQnVmZmVyPzMzMzA2OjM2MDk2O0UuZGVwdGhCdWZmZXImJmd0LnB1c2goVyksRS5pZ25vcmVEZXB0aEZvck11bHRpc2FtcGxlQ29weXx8KEUuZGVwdGhCdWZmZXImJihydHw9MjU2KSxFLnN0ZW5jaWxCdWZmZXImJihydHw9MTAyNCkpO2xldCBfdD1pLmdldChFKTtlLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxfdC5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLGUuYmluZEZyYW1lYnVmZmVyKDM2MDA5LF90Ll9fd2ViZ2xGcmFtZWJ1ZmZlciksRS5pZ25vcmVEZXB0aEZvck11bHRpc2FtcGxlQ29weSYmKG4uaW52YWxpZGF0ZUZyYW1lYnVmZmVyKDM2MDA4LFtXXSksbi5pbnZhbGlkYXRlRnJhbWVidWZmZXIoMzYwMDksW1ddKSksbi5ibGl0RnJhbWVidWZmZXIoMCwwLHcscSwwLDAsdyxxLHJ0LDk3MjgpLG4uaW52YWxpZGF0ZUZyYW1lYnVmZmVyKDM2MDA4LGd0KSxlLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSxlLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxfdC5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIil9ZnVuY3Rpb24gaXQoRSl7cmV0dXJuIGEmJihFLnVzZVJlbmRlcmJ1ZmZlcnx8RS51c2VSZW5kZXJUb1RleHR1cmUpP01hdGgubWluKGgsRS5zYW1wbGVzKTowfWZ1bmN0aW9uIGV0KEUpe2xldCB3PW8ucmVuZGVyLmZyYW1lO2cuZ2V0KEUpIT09dyYmKGcuc2V0KEUsdyksRS51cGRhdGUoKSl9ZnVuY3Rpb24gdnQoRSx3KXtsZXQgcT1FLmVuY29kaW5nLHJ0PUUuZm9ybWF0LGd0PUUudHlwZTtyZXR1cm4gRS5pc0NvbXByZXNzZWRUZXh0dXJlPT09ITB8fEUuaXNWaWRlb1RleHR1cmU9PT0hMHx8RS5mb3JtYXQ9PT1PdXx8cSE9PXJpJiYocT09PSR0P2E9PT0hMT90LmhhcygiRVhUX3NSR0IiKT09PSEwJiZydD09PVJlPyhFLmZvcm1hdD1PdSxFLm1pbkZpbHRlcj1iZSxFLmdlbmVyYXRlTWlwbWFwcz0hMSk6dz1Obi5zUkdCVG9MaW5lYXIodyk6KHJ0IT09UmV8fGd0IT09ZWkpJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXM6IHNSR0IgZW5jb2RlZCB0ZXh0dXJlcyBoYXZlIHRvIHVzZSBSR0JBRm9ybWF0IGFuZCBVbnNpZ25lZEJ5dGVUeXBlLiIpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMVGV4dHVyZXM6IFVuc3VwcG9ydGVkIHRleHR1cmUgZW5jb2Rpbmc6IixxKSksd31sZXQgYnQ9ITEsSXQ9ITE7ZnVuY3Rpb24gWnQoRSx3KXtFJiZFLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihidD09PSExJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlMkQ6IGRvbid0IHVzZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksYnQ9ITApLEU9RS50ZXh0dXJlKSxWKEUsdyl9ZnVuY3Rpb24gcXQoRSx3KXtFJiZFLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiYoSXQ9PT0hMSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZUN1YmU6IGRvbid0IHVzZSBjdWJlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSxJdD0hMCksRT1FLnRleHR1cmUpLEcoRSx3KX10aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9Tix0aGlzLnJlc2V0VGV4dHVyZVVuaXRzPXosdGhpcy5zZXRUZXh0dXJlMkQ9Vix0aGlzLnNldFRleHR1cmUyREFycmF5PVEsdGhpcy5zZXRUZXh0dXJlM0Q9YXQsdGhpcy5zZXRUZXh0dXJlQ3ViZT1HLHRoaXMucmViaW5kVGV4dHVyZXM9bnQsdGhpcy5zZXR1cFJlbmRlclRhcmdldD1DLHRoaXMudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwPWosdGhpcy51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldD1KLHRoaXMuc2V0dXBEZXB0aFJlbmRlcmJ1ZmZlcj1zdCx0aGlzLnNldHVwRnJhbWVCdWZmZXJUZXh0dXJlPW10LHRoaXMuc2FmZVNldFRleHR1cmUyRD1adCx0aGlzLnNhZmVTZXRUZXh0dXJlQ3ViZT1xdH1mdW5jdGlvbiB5RShuLHQsZSl7bGV0IGk9ZS5pc1dlYkdMMjtmdW5jdGlvbiByKHMsbz1udWxsKXtsZXQgYTtpZihzPT09ZWkpcmV0dXJuIDUxMjE7aWYocz09PVN3KXJldHVybiAzMjgxOTtpZihzPT09RXcpcmV0dXJuIDMyODIwO2lmKHM9PT13dylyZXR1cm4gNTEyMDtpZihzPT09TXcpcmV0dXJuIDUxMjI7aWYocz09PWVvKXJldHVybiA1MTIzO2lmKHM9PT1idylyZXR1cm4gNTEyNDtpZihzPT09S2EpcmV0dXJuIDUxMjU7aWYocz09PXppKXJldHVybiA1MTI2O2lmKHM9PT16cilyZXR1cm4gaT81MTMxOihhPXQuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksYSE9PW51bGw/YS5IQUxGX0ZMT0FUX09FUzpudWxsKTtpZihzPT09VHcpcmV0dXJuIDY0MDY7aWYocz09PVJlKXJldHVybiA2NDA4O2lmKHM9PT1BdylyZXR1cm4gNjQwOTtpZihzPT09Q3cpcmV0dXJuIDY0MTA7aWYocz09PUJpKXJldHVybiA2NDAyO2lmKHM9PT1IcilyZXR1cm4gMzQwNDE7aWYocz09PVJ3KXJldHVybiA2NDAzO2lmKHM9PT1PdSlyZXR1cm4gYT10LmdldCgiRVhUX3NSR0IiKSxhIT09bnVsbD9hLlNSR0JfQUxQSEFfRVhUOm51bGw7aWYocz09PUx3KXJldHVybiAzNjI0NDtpZihzPT09UHcpcmV0dXJuIDMzMzE5O2lmKHM9PT1EdylyZXR1cm4gMzMzMjA7aWYocz09PUl3KXJldHVybiAzNjI0OTtpZihzPT09SmN8fHM9PT0kY3x8cz09PUtjfHxzPT09UWMpaWYobz09PSR0KWlmKGE9dC5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjX3NyZ2IiKSxhIT09bnVsbCl7aWYocz09PUpjKXJldHVybiBhLkNPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUO2lmKHM9PT0kYylyZXR1cm4gYS5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDtpZihzPT09S2MpcmV0dXJuIGEuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ7aWYocz09PVFjKXJldHVybiBhLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUfWVsc2UgcmV0dXJuIG51bGw7ZWxzZSBpZihhPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpLGEhPT1udWxsKXtpZihzPT09SmMpcmV0dXJuIGEuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDtpZihzPT09JGMpcmV0dXJuIGEuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYocz09PUtjKXJldHVybiBhLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUO2lmKHM9PT1RYylyZXR1cm4gYS5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVH1lbHNlIHJldHVybiBudWxsO2lmKHM9PT1JbXx8cz09PU5tfHxzPT09Rm18fHM9PT16bSlpZihhPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKSxhIT09bnVsbCl7aWYocz09PUltKXJldHVybiBhLkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc7aWYocz09PU5tKXJldHVybiBhLkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc7aWYocz09PUZtKXJldHVybiBhLkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HO2lmKHM9PT16bSlyZXR1cm4gYS5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNR31lbHNlIHJldHVybiBudWxsO2lmKHM9PT1OdylyZXR1cm4gYT10LmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiKSxhIT09bnVsbD9hLkNPTVBSRVNTRURfUkdCX0VUQzFfV0VCR0w6bnVsbDtpZihzPT09VW18fHM9PT1CbSlpZihhPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiksYSE9PW51bGwpe2lmKHM9PT1VbSlyZXR1cm4gbz09PSR0P2EuQ09NUFJFU1NFRF9TUkdCOF9FVEMyOmEuQ09NUFJFU1NFRF9SR0I4X0VUQzI7aWYocz09PUJtKXJldHVybiBvPT09JHQ/YS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQzphLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUN9ZWxzZSByZXR1cm4gbnVsbDtpZihzPT09T218fHM9PT1rbXx8cz09PUhtfHxzPT09Vm18fHM9PT1HbXx8cz09PVdtfHxzPT09cW18fHM9PT1YbXx8cz09PVltfHxzPT09Wm18fHM9PT1KbXx8cz09PSRtfHxzPT09S218fHM9PT1RbSlpZihhPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXN0YyIpLGEhPT1udWxsKXtpZihzPT09T20pcmV0dXJuIG89PT0kdD9hLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjphLkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFI7aWYocz09PWttKXJldHVybiBvPT09JHQ/YS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6YS5DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSO2lmKHM9PT1IbSlyZXR1cm4gbz09PSR0P2EuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOmEuQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUjtpZihzPT09Vm0pcmV0dXJuIG89PT0kdD9hLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUjphLkNPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI7aWYocz09PUdtKXJldHVybiBvPT09JHQ/YS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6YS5DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSO2lmKHM9PT1XbSlyZXR1cm4gbz09PSR0P2EuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSOmEuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUjtpZihzPT09cW0pcmV0dXJuIG89PT0kdD9hLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUjphLkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI7aWYocz09PVhtKXJldHVybiBvPT09JHQ/YS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6YS5DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSO2lmKHM9PT1ZbSlyZXR1cm4gbz09PSR0P2EuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUjphLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSO2lmKHM9PT1abSlyZXR1cm4gbz09PSR0P2EuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjphLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSO2lmKHM9PT1KbSlyZXR1cm4gbz09PSR0P2EuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjphLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSO2lmKHM9PT0kbSlyZXR1cm4gbz09PSR0P2EuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6YS5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI7aWYocz09PUttKXJldHVybiBvPT09JHQ/YS5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjphLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjtpZihzPT09UW0pcmV0dXJuIG89PT0kdD9hLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOmEuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSfWVsc2UgcmV0dXJuIG51bGw7aWYocz09PWptKWlmKGE9dC5nZXQoIkVYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2JwdGMiKSxhIT09bnVsbCl7aWYocz09PWptKXJldHVybiBvPT09JHQ/YS5DT01QUkVTU0VEX1NSR0JfQUxQSEFfQlBUQ19VTk9STV9FWFQ6YS5DT01QUkVTU0VEX1JHQkFfQlBUQ19VTk9STV9FWFR9ZWxzZSByZXR1cm4gbnVsbDtpZihzPT09VXIpcmV0dXJuIGk/MzQwNDI6KGE9dC5nZXQoIldFQkdMX2RlcHRoX3RleHR1cmUiKSxhIT09bnVsbD9hLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMOm51bGwpfXJldHVybntjb252ZXJ0OnJ9fXZhciB1bD1jbGFzcyBleHRlbmRzIFNle2NvbnN0cnVjdG9yKHQ9W10pe3N1cGVyKCksdGhpcy5jYW1lcmFzPXR9fTt1bC5wcm90b3R5cGUuaXNBcnJheUNhbWVyYT0hMDt2YXIgVWk9Y2xhc3MgZXh0ZW5kcyBrdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJHcm91cCJ9fTtVaS5wcm90b3R5cGUuaXNHcm91cD0hMDt2YXIgdkU9e3R5cGU6Im1vdmUifSxLcz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3RhcmdldFJheT1udWxsLHRoaXMuX2dyaXA9bnVsbCx0aGlzLl9oYW5kPW51bGx9Z2V0SGFuZFNwYWNlKCl7cmV0dXJuIHRoaXMuX2hhbmQ9PT1udWxsJiYodGhpcy5faGFuZD1uZXcgVWksdGhpcy5faGFuZC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2hhbmQudmlzaWJsZT0hMSx0aGlzLl9oYW5kLmpvaW50cz17fSx0aGlzLl9oYW5kLmlucHV0U3RhdGU9e3BpbmNoaW5nOiExfSksdGhpcy5faGFuZH1nZXRUYXJnZXRSYXlTcGFjZSgpe3JldHVybiB0aGlzLl90YXJnZXRSYXk9PT1udWxsJiYodGhpcy5fdGFyZ2V0UmF5PW5ldyBVaSx0aGlzLl90YXJnZXRSYXkubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSx0aGlzLl90YXJnZXRSYXkuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmxpbmVhclZlbG9jaXR5PW5ldyBULHRoaXMuX3RhcmdldFJheS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmFuZ3VsYXJWZWxvY2l0eT1uZXcgVCksdGhpcy5fdGFyZ2V0UmF5fWdldEdyaXBTcGFjZSgpe3JldHVybiB0aGlzLl9ncmlwPT09bnVsbCYmKHRoaXMuX2dyaXA9bmV3IFVpLHRoaXMuX2dyaXAubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9ncmlwLnZpc2libGU9ITEsdGhpcy5fZ3JpcC5oYXNMaW5lYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmxpbmVhclZlbG9jaXR5PW5ldyBULHRoaXMuX2dyaXAuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAuYW5ndWxhclZlbG9jaXR5PW5ldyBUKSx0aGlzLl9ncmlwfWRpc3BhdGNoRXZlbnQodCl7cmV0dXJuIHRoaXMuX3RhcmdldFJheSE9PW51bGwmJnRoaXMuX3RhcmdldFJheS5kaXNwYXRjaEV2ZW50KHQpLHRoaXMuX2dyaXAhPT1udWxsJiZ0aGlzLl9ncmlwLmRpc3BhdGNoRXZlbnQodCksdGhpcy5faGFuZCE9PW51bGwmJnRoaXMuX2hhbmQuZGlzcGF0Y2hFdmVudCh0KSx0aGlzfWRpc2Nvbm5lY3QodCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOnR9KSx0aGlzLl90YXJnZXRSYXkhPT1udWxsJiYodGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEpLHRoaXMuX2dyaXAhPT1udWxsJiYodGhpcy5fZ3JpcC52aXNpYmxlPSExKSx0aGlzLl9oYW5kIT09bnVsbCYmKHRoaXMuX2hhbmQudmlzaWJsZT0hMSksdGhpc311cGRhdGUodCxlLGkpe2xldCByPW51bGwscz1udWxsLG89bnVsbCxhPXRoaXMuX3RhcmdldFJheSxsPXRoaXMuX2dyaXAsYz10aGlzLl9oYW5kO2lmKHQmJmUuc2Vzc2lvbi52aXNpYmlsaXR5U3RhdGUhPT0idmlzaWJsZS1ibHVycmVkIilpZihhIT09bnVsbCYmKHI9ZS5nZXRQb3NlKHQudGFyZ2V0UmF5U3BhY2UsaSksciE9PW51bGwmJihhLm1hdHJpeC5mcm9tQXJyYXkoci50cmFuc2Zvcm0ubWF0cml4KSxhLm1hdHJpeC5kZWNvbXBvc2UoYS5wb3NpdGlvbixhLnJvdGF0aW9uLGEuc2NhbGUpLHIubGluZWFyVmVsb2NpdHk/KGEuaGFzTGluZWFyVmVsb2NpdHk9ITAsYS5saW5lYXJWZWxvY2l0eS5jb3B5KHIubGluZWFyVmVsb2NpdHkpKTphLmhhc0xpbmVhclZlbG9jaXR5PSExLHIuYW5ndWxhclZlbG9jaXR5PyhhLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxhLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KHIuYW5ndWxhclZlbG9jaXR5KSk6YS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KHZFKSkpLGMmJnQuaGFuZCl7bz0hMDtmb3IobGV0IHggb2YgdC5oYW5kLnZhbHVlcygpKXtsZXQgdj1lLmdldEpvaW50UG9zZSh4LGkpO2lmKGMuam9pbnRzW3guam9pbnROYW1lXT09PXZvaWQgMCl7bGV0IHA9bmV3IFVpO3AubWF0cml4QXV0b1VwZGF0ZT0hMSxwLnZpc2libGU9ITEsYy5qb2ludHNbeC5qb2ludE5hbWVdPXAsYy5hZGQocCl9bGV0IG09Yy5qb2ludHNbeC5qb2ludE5hbWVdO3YhPT1udWxsJiYobS5tYXRyaXguZnJvbUFycmF5KHYudHJhbnNmb3JtLm1hdHJpeCksbS5tYXRyaXguZGVjb21wb3NlKG0ucG9zaXRpb24sbS5yb3RhdGlvbixtLnNjYWxlKSxtLmpvaW50UmFkaXVzPXYucmFkaXVzKSxtLnZpc2libGU9diE9PW51bGx9bGV0IHU9Yy5qb2ludHNbImluZGV4LWZpbmdlci10aXAiXSxoPWMuam9pbnRzWyJ0aHVtYi10aXAiXSxmPXUucG9zaXRpb24uZGlzdGFuY2VUbyhoLnBvc2l0aW9uKSxkPS4wMixnPS4wMDU7Yy5pbnB1dFN0YXRlLnBpbmNoaW5nJiZmPmQrZz8oYy5pbnB1dFN0YXRlLnBpbmNoaW5nPSExLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hlbmQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpOiFjLmlucHV0U3RhdGUucGluY2hpbmcmJmY8PWQtZyYmKGMuaW5wdXRTdGF0ZS5waW5jaGluZz0hMCx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoc3RhcnQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpfWVsc2UgbCE9PW51bGwmJnQuZ3JpcFNwYWNlJiYocz1lLmdldFBvc2UodC5ncmlwU3BhY2UsaSkscyE9PW51bGwmJihsLm1hdHJpeC5mcm9tQXJyYXkocy50cmFuc2Zvcm0ubWF0cml4KSxsLm1hdHJpeC5kZWNvbXBvc2UobC5wb3NpdGlvbixsLnJvdGF0aW9uLGwuc2NhbGUpLHMubGluZWFyVmVsb2NpdHk/KGwuaGFzTGluZWFyVmVsb2NpdHk9ITAsbC5saW5lYXJWZWxvY2l0eS5jb3B5KHMubGluZWFyVmVsb2NpdHkpKTpsLmhhc0xpbmVhclZlbG9jaXR5PSExLHMuYW5ndWxhclZlbG9jaXR5PyhsLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxsLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KHMuYW5ndWxhclZlbG9jaXR5KSk6bC5oYXNBbmd1bGFyVmVsb2NpdHk9ITEpKTtyZXR1cm4gYSE9PW51bGwmJihhLnZpc2libGU9ciE9PW51bGwpLGwhPT1udWxsJiYobC52aXNpYmxlPXMhPT1udWxsKSxjIT09bnVsbCYmKGMudmlzaWJsZT1vIT09bnVsbCksdGhpc319LGNvPWNsYXNzIGV4dGVuZHMgYWV7Y29uc3RydWN0b3IodCxlLGkscixzLG8sYSxsLGMsdSl7aWYodT11IT09dm9pZCAwP3U6QmksdSE9PUJpJiZ1IT09SHIpdGhyb3cgbmV3IEVycm9yKCJEZXB0aFRleHR1cmUgZm9ybWF0IG11c3QgYmUgZWl0aGVyIFRIUkVFLkRlcHRoRm9ybWF0IG9yIFRIUkVFLkRlcHRoU3RlbmNpbEZvcm1hdCIpO2k9PT12b2lkIDAmJnU9PT1CaSYmKGk9ZW8pLGk9PT12b2lkIDAmJnU9PT1IciYmKGk9VXIpLHN1cGVyKG51bGwscixzLG8sYSxsLHUsaSxjKSx0aGlzLmltYWdlPXt3aWR0aDp0LGhlaWdodDplfSx0aGlzLm1hZ0ZpbHRlcj1hIT09dm9pZCAwP2E6ZmUsdGhpcy5taW5GaWx0ZXI9bCE9PXZvaWQgMD9sOmZlLHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9fTtjby5wcm90b3R5cGUuaXNEZXB0aFRleHR1cmU9ITA7dmFyIFh1PWNsYXNzIGV4dGVuZHMgSW57Y29uc3RydWN0b3IodCxlKXtzdXBlcigpO2xldCBpPXRoaXMscj1udWxsLHM9MSxvPW51bGwsYT0ibG9jYWwtZmxvb3IiLGw9dC5leHRlbnNpb25zLmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIiksYz1udWxsLHU9bnVsbCxoPW51bGwsZj1udWxsLGQ9ITEsZz1udWxsLHg9ZS5nZXRDb250ZXh0QXR0cmlidXRlcygpLHY9bnVsbCxtPW51bGwscD1bXSxiPW5ldyBNYXAsXz1uZXcgU2U7Xy5sYXllcnMuZW5hYmxlKDEpLF8udmlld3BvcnQ9bmV3IFd0O2xldCBTPW5ldyBTZTtTLmxheWVycy5lbmFibGUoMiksUy52aWV3cG9ydD1uZXcgV3Q7bGV0IEw9W18sU10sQT1uZXcgdWw7QS5sYXllcnMuZW5hYmxlKDEpLEEubGF5ZXJzLmVuYWJsZSgyKTtsZXQgSD1udWxsLHR0PW51bGw7dGhpcy5jYW1lcmFBdXRvVXBkYXRlPSEwLHRoaXMuZW5hYmxlZD0hMSx0aGlzLmlzUHJlc2VudGluZz0hMSx0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24oRyl7bGV0ICQ9cFtHXTtyZXR1cm4gJD09PXZvaWQgMCYmKCQ9bmV3IEtzLHBbR109JCksJC5nZXRUYXJnZXRSYXlTcGFjZSgpfSx0aGlzLmdldENvbnRyb2xsZXJHcmlwPWZ1bmN0aW9uKEcpe2xldCAkPXBbR107cmV0dXJuICQ9PT12b2lkIDAmJigkPW5ldyBLcyxwW0ddPSQpLCQuZ2V0R3JpcFNwYWNlKCl9LHRoaXMuZ2V0SGFuZD1mdW5jdGlvbihHKXtsZXQgJD1wW0ddO3JldHVybiAkPT09dm9pZCAwJiYoJD1uZXcgS3MscFtHXT0kKSwkLmdldEhhbmRTcGFjZSgpfTtmdW5jdGlvbiBYKEcpe2xldCAkPWIuZ2V0KEcuaW5wdXRTb3VyY2UpOyQmJiQuZGlzcGF0Y2hFdmVudCh7dHlwZTpHLnR5cGUsZGF0YTpHLmlucHV0U291cmNlfSl9ZnVuY3Rpb24geSgpe2IuZm9yRWFjaChmdW5jdGlvbihHLCQpe0cuZGlzY29ubmVjdCgkKX0pLGIuY2xlYXIoKSxIPW51bGwsdHQ9bnVsbCx0LnNldFJlbmRlclRhcmdldCh2KSxmPW51bGwsaD1udWxsLHU9bnVsbCxyPW51bGwsbT1udWxsLGF0LnN0b3AoKSxpLmlzUHJlc2VudGluZz0hMSxpLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlc3Npb25lbmQifSl9dGhpcy5zZXRGcmFtZWJ1ZmZlclNjYWxlRmFjdG9yPWZ1bmN0aW9uKEcpe3M9RyxpLmlzUHJlc2VudGluZz09PSEwJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSBmcmFtZWJ1ZmZlciBzY2FsZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLnNldFJlZmVyZW5jZVNwYWNlVHlwZT1mdW5jdGlvbihHKXthPUcsaS5pc1ByZXNlbnRpbmc9PT0hMCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgcmVmZXJlbmNlIHNwYWNlIHR5cGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5nZXRSZWZlcmVuY2VTcGFjZT1mdW5jdGlvbigpe3JldHVybiBvfSx0aGlzLmdldEJhc2VMYXllcj1mdW5jdGlvbigpe3JldHVybiBoIT09bnVsbD9oOmZ9LHRoaXMuZ2V0QmluZGluZz1mdW5jdGlvbigpe3JldHVybiB1fSx0aGlzLmdldEZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGd9LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiByfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oRyl7cmV0dXJuIG9mKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtpZihyPUcsciE9PW51bGwpe2lmKHY9dC5nZXRSZW5kZXJUYXJnZXQoKSxyLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsWCksci5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsWCksci5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlbmQiLFgpLHIuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZSIsWCksci5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLFgpLHIuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZWVuZCIsWCksci5hZGRFdmVudExpc3RlbmVyKCJlbmQiLHkpLHIuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIixSKSx4LnhyQ29tcGF0aWJsZSE9PSEwJiYoeWllbGQgZS5tYWtlWFJDb21wYXRpYmxlKCkpLHIucmVuZGVyU3RhdGUubGF5ZXJzPT09dm9pZCAwfHx0LmNhcGFiaWxpdGllcy5pc1dlYkdMMj09PSExKXtsZXQgJD17YW50aWFsaWFzOnIucmVuZGVyU3RhdGUubGF5ZXJzPT09dm9pZCAwP3guYW50aWFsaWFzOiEwLGFscGhhOnguYWxwaGEsZGVwdGg6eC5kZXB0aCxzdGVuY2lsOnguc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOnN9O2Y9bmV3IFhSV2ViR0xMYXllcihyLGUsJCksci51cGRhdGVSZW5kZXJTdGF0ZSh7YmFzZUxheWVyOmZ9KSxtPW5ldyBOZShmLmZyYW1lYnVmZmVyV2lkdGgsZi5mcmFtZWJ1ZmZlckhlaWdodCx7Zm9ybWF0OlJlLHR5cGU6ZWksZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pfWVsc2V7ZD14LmFudGlhbGlhcztsZXQgJD1udWxsLGx0PW51bGwsZHQ9bnVsbDt4LmRlcHRoJiYoZHQ9eC5zdGVuY2lsPzM1MDU2OjMzMTkwLCQ9eC5zdGVuY2lsP0hyOkJpLGx0PXguc3RlbmNpbD9Vcjplbyk7bGV0IHh0PXtjb2xvckZvcm1hdDp0Lm91dHB1dEVuY29kaW5nPT09JHQ/MzU5MDc6MzI4NTYsZGVwdGhGb3JtYXQ6ZHQsc2NhbGVGYWN0b3I6c307dT1uZXcgWFJXZWJHTEJpbmRpbmcocixlKSxoPXUuY3JlYXRlUHJvamVjdGlvbkxheWVyKHh0KSxyLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W2hdfSksZD9tPW5ldyBybyhoLnRleHR1cmVXaWR0aCxoLnRleHR1cmVIZWlnaHQse2Zvcm1hdDpSZSx0eXBlOmVpLGRlcHRoVGV4dHVyZTpuZXcgY28oaC50ZXh0dXJlV2lkdGgsaC50ZXh0dXJlSGVpZ2h0LGx0LHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLCQpLHN0ZW5jaWxCdWZmZXI6eC5zdGVuY2lsLGlnbm9yZURlcHRoOmguaWdub3JlRGVwdGhWYWx1ZXMsdXNlUmVuZGVyVG9UZXh0dXJlOmwsZW5jb2Rpbmc6dC5vdXRwdXRFbmNvZGluZ30pOm09bmV3IE5lKGgudGV4dHVyZVdpZHRoLGgudGV4dHVyZUhlaWdodCx7Zm9ybWF0OlJlLHR5cGU6ZWksZGVwdGhUZXh0dXJlOm5ldyBjbyhoLnRleHR1cmVXaWR0aCxoLnRleHR1cmVIZWlnaHQsbHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsJCksc3RlbmNpbEJ1ZmZlcjp4LnN0ZW5jaWwsaWdub3JlRGVwdGg6aC5pZ25vcmVEZXB0aFZhbHVlcyxlbmNvZGluZzp0Lm91dHB1dEVuY29kaW5nfSl9bS5pc1hSUmVuZGVyVGFyZ2V0PSEwLHRoaXMuc2V0Rm92ZWF0aW9uKDEpLG89eWllbGQgci5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoYSksYXQuc2V0Q29udGV4dChyKSxhdC5zdGFydCgpLGkuaXNQcmVzZW50aW5nPSEwLGkuZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbnN0YXJ0In0pfX0pfTtmdW5jdGlvbiBSKEcpe2xldCAkPXIuaW5wdXRTb3VyY2VzO2ZvcihsZXQgbHQ9MDtsdDxwLmxlbmd0aDtsdCsrKWIuc2V0KCRbbHRdLHBbbHRdKTtmb3IobGV0IGx0PTA7bHQ8Ry5yZW1vdmVkLmxlbmd0aDtsdCsrKXtsZXQgZHQ9Ry5yZW1vdmVkW2x0XSx4dD1iLmdldChkdCk7eHQmJih4dC5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNjb25uZWN0ZWQiLGRhdGE6ZHR9KSxiLmRlbGV0ZShkdCkpfWZvcihsZXQgbHQ9MDtsdDxHLmFkZGVkLmxlbmd0aDtsdCsrKXtsZXQgZHQ9Ry5hZGRlZFtsdF0seHQ9Yi5nZXQoZHQpO3h0JiZ4dC5kaXNwYXRjaEV2ZW50KHt0eXBlOiJjb25uZWN0ZWQiLGRhdGE6ZHR9KX19bGV0IEQ9bmV3IFQsRj1uZXcgVDtmdW5jdGlvbiB6KEcsJCxsdCl7RC5zZXRGcm9tTWF0cml4UG9zaXRpb24oJC5tYXRyaXhXb3JsZCksRi5zZXRGcm9tTWF0cml4UG9zaXRpb24obHQubWF0cml4V29ybGQpO2xldCBkdD1ELmRpc3RhbmNlVG8oRikseHQ9JC5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLGs9bHQucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxGdD14dFsxNF0vKHh0WzEwXS0xKSxtdD14dFsxNF0vKHh0WzEwXSsxKSxTdD0oeHRbOV0rMSkveHRbNV0sQj0oeHRbOV0tMSkveHRbNV0sc3Q9KHh0WzhdLTEpL3h0WzBdLG50PShrWzhdKzEpL2tbMF0sQz1GdCpzdCxqPUZ0Km50LEo9ZHQvKC1zdCtudCksaXQ9Siotc3Q7JC5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoRy5wb3NpdGlvbixHLnF1YXRlcm5pb24sRy5zY2FsZSksRy50cmFuc2xhdGVYKGl0KSxHLnRyYW5zbGF0ZVooSiksRy5tYXRyaXhXb3JsZC5jb21wb3NlKEcucG9zaXRpb24sRy5xdWF0ZXJuaW9uLEcuc2NhbGUpLEcubWF0cml4V29ybGRJbnZlcnNlLmNvcHkoRy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7bGV0IGV0PUZ0K0osdnQ9bXQrSixidD1DLWl0LEl0PWorKGR0LWl0KSxadD1TdCptdC92dCpldCxxdD1CKm10L3Z0KmV0O0cucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoYnQsSXQsWnQscXQsZXQsdnQpfWZ1bmN0aW9uIE4oRywkKXskPT09bnVsbD9HLm1hdHJpeFdvcmxkLmNvcHkoRy5tYXRyaXgpOkcubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcygkLm1hdHJpeFdvcmxkLEcubWF0cml4KSxHLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KEcubWF0cml4V29ybGQpLmludmVydCgpfXRoaXMudXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKEcpe2lmKHI9PT1udWxsKXJldHVybjtBLm5lYXI9Uy5uZWFyPV8ubmVhcj1HLm5lYXIsQS5mYXI9Uy5mYXI9Xy5mYXI9Ry5mYXIsKEghPT1BLm5lYXJ8fHR0IT09QS5mYXIpJiYoci51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOkEubmVhcixkZXB0aEZhcjpBLmZhcn0pLEg9QS5uZWFyLHR0PUEuZmFyKTtsZXQgJD1HLnBhcmVudCxsdD1BLmNhbWVyYXM7TihBLCQpO2ZvcihsZXQgeHQ9MDt4dDxsdC5sZW5ndGg7eHQrKylOKGx0W3h0XSwkKTtBLm1hdHJpeFdvcmxkLmRlY29tcG9zZShBLnBvc2l0aW9uLEEucXVhdGVybmlvbixBLnNjYWxlKSxHLnBvc2l0aW9uLmNvcHkoQS5wb3NpdGlvbiksRy5xdWF0ZXJuaW9uLmNvcHkoQS5xdWF0ZXJuaW9uKSxHLnNjYWxlLmNvcHkoQS5zY2FsZSksRy5tYXRyaXguY29weShBLm1hdHJpeCksRy5tYXRyaXhXb3JsZC5jb3B5KEEubWF0cml4V29ybGQpO2xldCBkdD1HLmNoaWxkcmVuO2ZvcihsZXQgeHQ9MCxrPWR0Lmxlbmd0aDt4dDxrO3h0KyspZHRbeHRdLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKTtsdC5sZW5ndGg9PT0yP3ooQSxfLFMpOkEucHJvamVjdGlvbk1hdHJpeC5jb3B5KF8ucHJvamVjdGlvbk1hdHJpeCl9LHRoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKCl7cmV0dXJuIEF9LHRoaXMuZ2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKCl7aWYoaCE9PW51bGwpcmV0dXJuIGguZml4ZWRGb3ZlYXRpb247aWYoZiE9PW51bGwpcmV0dXJuIGYuZml4ZWRGb3ZlYXRpb259LHRoaXMuc2V0Rm92ZWF0aW9uPWZ1bmN0aW9uKEcpe2ghPT1udWxsJiYoaC5maXhlZEZvdmVhdGlvbj1HKSxmIT09bnVsbCYmZi5maXhlZEZvdmVhdGlvbiE9PXZvaWQgMCYmKGYuZml4ZWRGb3ZlYXRpb249Ryl9O2xldCBWPW51bGw7ZnVuY3Rpb24gUShHLCQpe2lmKGM9JC5nZXRWaWV3ZXJQb3NlKG8pLGc9JCxjIT09bnVsbCl7bGV0IGR0PWMudmlld3M7ZiE9PW51bGwmJih0LnNldFJlbmRlclRhcmdldEZyYW1lYnVmZmVyKG0sZi5mcmFtZWJ1ZmZlciksdC5zZXRSZW5kZXJUYXJnZXQobSkpO2xldCB4dD0hMTtkdC5sZW5ndGghPT1BLmNhbWVyYXMubGVuZ3RoJiYoQS5jYW1lcmFzLmxlbmd0aD0wLHh0PSEwKTtmb3IobGV0IGs9MDtrPGR0Lmxlbmd0aDtrKyspe2xldCBGdD1kdFtrXSxtdD1udWxsO2lmKGYhPT1udWxsKW10PWYuZ2V0Vmlld3BvcnQoRnQpO2Vsc2V7bGV0IEI9dS5nZXRWaWV3U3ViSW1hZ2UoaCxGdCk7bXQ9Qi52aWV3cG9ydCxrPT09MCYmKHQuc2V0UmVuZGVyVGFyZ2V0VGV4dHVyZXMobSxCLmNvbG9yVGV4dHVyZSxoLmlnbm9yZURlcHRoVmFsdWVzP3ZvaWQgMDpCLmRlcHRoU3RlbmNpbFRleHR1cmUpLHQuc2V0UmVuZGVyVGFyZ2V0KG0pKX1sZXQgU3Q9TFtrXTtTdC5tYXRyaXguZnJvbUFycmF5KEZ0LnRyYW5zZm9ybS5tYXRyaXgpLFN0LnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KEZ0LnByb2plY3Rpb25NYXRyaXgpLFN0LnZpZXdwb3J0LnNldChtdC54LG10LnksbXQud2lkdGgsbXQuaGVpZ2h0KSxrPT09MCYmQS5tYXRyaXguY29weShTdC5tYXRyaXgpLHh0PT09ITAmJkEuY2FtZXJhcy5wdXNoKFN0KX19bGV0IGx0PXIuaW5wdXRTb3VyY2VzO2ZvcihsZXQgZHQ9MDtkdDxwLmxlbmd0aDtkdCsrKXtsZXQgeHQ9cFtkdF0saz1sdFtkdF07eHQudXBkYXRlKGssJCxvKX1WJiZWKEcsJCksZz1udWxsfWxldCBhdD1uZXcgcDA7YXQuc2V0QW5pbWF0aW9uTG9vcChRKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24oRyl7Vj1HfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fX07ZnVuY3Rpb24gX0Uobil7ZnVuY3Rpb24gdChtLHApe20uZm9nQ29sb3IudmFsdWUuY29weShwLmNvbG9yKSxwLmlzRm9nPyhtLmZvZ05lYXIudmFsdWU9cC5uZWFyLG0uZm9nRmFyLnZhbHVlPXAuZmFyKTpwLmlzRm9nRXhwMiYmKG0uZm9nRGVuc2l0eS52YWx1ZT1wLmRlbnNpdHkpfWZ1bmN0aW9uIGUobSxwLGIsXyxTKXtwLmlzTWVzaEJhc2ljTWF0ZXJpYWw/aShtLHApOnAuaXNNZXNoTGFtYmVydE1hdGVyaWFsPyhpKG0scCksbChtLHApKTpwLmlzTWVzaFRvb25NYXRlcmlhbD8oaShtLHApLHUobSxwKSk6cC5pc01lc2hQaG9uZ01hdGVyaWFsPyhpKG0scCksYyhtLHApKTpwLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KGkobSxwKSxwLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw/ZihtLHAsUyk6aChtLHApKTpwLmlzTWVzaE1hdGNhcE1hdGVyaWFsPyhpKG0scCksZChtLHApKTpwLmlzTWVzaERlcHRoTWF0ZXJpYWw/KGkobSxwKSxnKG0scCkpOnAuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8oaShtLHApLHgobSxwKSk6cC5pc01lc2hOb3JtYWxNYXRlcmlhbD8oaShtLHApLHYobSxwKSk6cC5pc0xpbmVCYXNpY01hdGVyaWFsPyhyKG0scCkscC5pc0xpbmVEYXNoZWRNYXRlcmlhbCYmcyhtLHApKTpwLmlzUG9pbnRzTWF0ZXJpYWw/byhtLHAsYixfKTpwLmlzU3ByaXRlTWF0ZXJpYWw/YShtLHApOnAuaXNTaGFkb3dNYXRlcmlhbD8obS5jb2xvci52YWx1ZS5jb3B5KHAuY29sb3IpLG0ub3BhY2l0eS52YWx1ZT1wLm9wYWNpdHkpOnAuaXNTaGFkZXJNYXRlcmlhbCYmKHAudW5pZm9ybXNOZWVkVXBkYXRlPSExKX1mdW5jdGlvbiBpKG0scCl7bS5vcGFjaXR5LnZhbHVlPXAub3BhY2l0eSxwLmNvbG9yJiZtLmRpZmZ1c2UudmFsdWUuY29weShwLmNvbG9yKSxwLmVtaXNzaXZlJiZtLmVtaXNzaXZlLnZhbHVlLmNvcHkocC5lbWlzc2l2ZSkubXVsdGlwbHlTY2FsYXIocC5lbWlzc2l2ZUludGVuc2l0eSkscC5tYXAmJihtLm1hcC52YWx1ZT1wLm1hcCkscC5hbHBoYU1hcCYmKG0uYWxwaGFNYXAudmFsdWU9cC5hbHBoYU1hcCkscC5zcGVjdWxhck1hcCYmKG0uc3BlY3VsYXJNYXAudmFsdWU9cC5zcGVjdWxhck1hcCkscC5hbHBoYVRlc3Q+MCYmKG0uYWxwaGFUZXN0LnZhbHVlPXAuYWxwaGFUZXN0KTtsZXQgYj1uLmdldChwKS5lbnZNYXA7YiYmKG0uZW52TWFwLnZhbHVlPWIsbS5mbGlwRW52TWFwLnZhbHVlPWIuaXNDdWJlVGV4dHVyZSYmYi5pc1JlbmRlclRhcmdldFRleHR1cmU9PT0hMT8tMToxLG0ucmVmbGVjdGl2aXR5LnZhbHVlPXAucmVmbGVjdGl2aXR5LG0uaW9yLnZhbHVlPXAuaW9yLG0ucmVmcmFjdGlvblJhdGlvLnZhbHVlPXAucmVmcmFjdGlvblJhdGlvKSxwLmxpZ2h0TWFwJiYobS5saWdodE1hcC52YWx1ZT1wLmxpZ2h0TWFwLG0ubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9cC5saWdodE1hcEludGVuc2l0eSkscC5hb01hcCYmKG0uYW9NYXAudmFsdWU9cC5hb01hcCxtLmFvTWFwSW50ZW5zaXR5LnZhbHVlPXAuYW9NYXBJbnRlbnNpdHkpO2xldCBfO3AubWFwP189cC5tYXA6cC5zcGVjdWxhck1hcD9fPXAuc3BlY3VsYXJNYXA6cC5kaXNwbGFjZW1lbnRNYXA/Xz1wLmRpc3BsYWNlbWVudE1hcDpwLm5vcm1hbE1hcD9fPXAubm9ybWFsTWFwOnAuYnVtcE1hcD9fPXAuYnVtcE1hcDpwLnJvdWdobmVzc01hcD9fPXAucm91Z2huZXNzTWFwOnAubWV0YWxuZXNzTWFwP189cC5tZXRhbG5lc3NNYXA6cC5hbHBoYU1hcD9fPXAuYWxwaGFNYXA6cC5lbWlzc2l2ZU1hcD9fPXAuZW1pc3NpdmVNYXA6cC5jbGVhcmNvYXRNYXA/Xz1wLmNsZWFyY29hdE1hcDpwLmNsZWFyY29hdE5vcm1hbE1hcD9fPXAuY2xlYXJjb2F0Tm9ybWFsTWFwOnAuY2xlYXJjb2F0Um91Z2huZXNzTWFwP189cC5jbGVhcmNvYXRSb3VnaG5lc3NNYXA6cC5zcGVjdWxhckludGVuc2l0eU1hcD9fPXAuc3BlY3VsYXJJbnRlbnNpdHlNYXA6cC5zcGVjdWxhckNvbG9yTWFwP189cC5zcGVjdWxhckNvbG9yTWFwOnAudHJhbnNtaXNzaW9uTWFwP189cC50cmFuc21pc3Npb25NYXA6cC50aGlja25lc3NNYXA/Xz1wLnRoaWNrbmVzc01hcDpwLnNoZWVuQ29sb3JNYXA/Xz1wLnNoZWVuQ29sb3JNYXA6cC5zaGVlblJvdWdobmVzc01hcCYmKF89cC5zaGVlblJvdWdobmVzc01hcCksXyE9PXZvaWQgMCYmKF8uaXNXZWJHTFJlbmRlclRhcmdldCYmKF89Xy50ZXh0dXJlKSxfLm1hdHJpeEF1dG9VcGRhdGU9PT0hMCYmXy51cGRhdGVNYXRyaXgoKSxtLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoXy5tYXRyaXgpKTtsZXQgUztwLmFvTWFwP1M9cC5hb01hcDpwLmxpZ2h0TWFwJiYoUz1wLmxpZ2h0TWFwKSxTIT09dm9pZCAwJiYoUy5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoUz1TLnRleHR1cmUpLFMubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZTLnVwZGF0ZU1hdHJpeCgpLG0udXYyVHJhbnNmb3JtLnZhbHVlLmNvcHkoUy5tYXRyaXgpKX1mdW5jdGlvbiByKG0scCl7bS5kaWZmdXNlLnZhbHVlLmNvcHkocC5jb2xvciksbS5vcGFjaXR5LnZhbHVlPXAub3BhY2l0eX1mdW5jdGlvbiBzKG0scCl7bS5kYXNoU2l6ZS52YWx1ZT1wLmRhc2hTaXplLG0udG90YWxTaXplLnZhbHVlPXAuZGFzaFNpemUrcC5nYXBTaXplLG0uc2NhbGUudmFsdWU9cC5zY2FsZX1mdW5jdGlvbiBvKG0scCxiLF8pe20uZGlmZnVzZS52YWx1ZS5jb3B5KHAuY29sb3IpLG0ub3BhY2l0eS52YWx1ZT1wLm9wYWNpdHksbS5zaXplLnZhbHVlPXAuc2l6ZSpiLG0uc2NhbGUudmFsdWU9XyouNSxwLm1hcCYmKG0ubWFwLnZhbHVlPXAubWFwKSxwLmFscGhhTWFwJiYobS5hbHBoYU1hcC52YWx1ZT1wLmFscGhhTWFwKSxwLmFscGhhVGVzdD4wJiYobS5hbHBoYVRlc3QudmFsdWU9cC5hbHBoYVRlc3QpO2xldCBTO3AubWFwP1M9cC5tYXA6cC5hbHBoYU1hcCYmKFM9cC5hbHBoYU1hcCksUyE9PXZvaWQgMCYmKFMubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZTLnVwZGF0ZU1hdHJpeCgpLG0udXZUcmFuc2Zvcm0udmFsdWUuY29weShTLm1hdHJpeCkpfWZ1bmN0aW9uIGEobSxwKXttLmRpZmZ1c2UudmFsdWUuY29weShwLmNvbG9yKSxtLm9wYWNpdHkudmFsdWU9cC5vcGFjaXR5LG0ucm90YXRpb24udmFsdWU9cC5yb3RhdGlvbixwLm1hcCYmKG0ubWFwLnZhbHVlPXAubWFwKSxwLmFscGhhTWFwJiYobS5hbHBoYU1hcC52YWx1ZT1wLmFscGhhTWFwKSxwLmFscGhhVGVzdD4wJiYobS5hbHBoYVRlc3QudmFsdWU9cC5hbHBoYVRlc3QpO2xldCBiO3AubWFwP2I9cC5tYXA6cC5hbHBoYU1hcCYmKGI9cC5hbHBoYU1hcCksYiE9PXZvaWQgMCYmKGIubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZiLnVwZGF0ZU1hdHJpeCgpLG0udXZUcmFuc2Zvcm0udmFsdWUuY29weShiLm1hdHJpeCkpfWZ1bmN0aW9uIGwobSxwKXtwLmVtaXNzaXZlTWFwJiYobS5lbWlzc2l2ZU1hcC52YWx1ZT1wLmVtaXNzaXZlTWFwKX1mdW5jdGlvbiBjKG0scCl7bS5zcGVjdWxhci52YWx1ZS5jb3B5KHAuc3BlY3VsYXIpLG0uc2hpbmluZXNzLnZhbHVlPU1hdGgubWF4KHAuc2hpbmluZXNzLDFlLTQpLHAuZW1pc3NpdmVNYXAmJihtLmVtaXNzaXZlTWFwLnZhbHVlPXAuZW1pc3NpdmVNYXApLHAuYnVtcE1hcCYmKG0uYnVtcE1hcC52YWx1ZT1wLmJ1bXBNYXAsbS5idW1wU2NhbGUudmFsdWU9cC5idW1wU2NhbGUscC5zaWRlPT09aGUmJihtLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxwLm5vcm1hbE1hcCYmKG0ubm9ybWFsTWFwLnZhbHVlPXAubm9ybWFsTWFwLG0ubm9ybWFsU2NhbGUudmFsdWUuY29weShwLm5vcm1hbFNjYWxlKSxwLnNpZGU9PT1oZSYmbS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSkscC5kaXNwbGFjZW1lbnRNYXAmJihtLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1wLmRpc3BsYWNlbWVudE1hcCxtLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPXAuZGlzcGxhY2VtZW50U2NhbGUsbS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPXAuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gdShtLHApe3AuZ3JhZGllbnRNYXAmJihtLmdyYWRpZW50TWFwLnZhbHVlPXAuZ3JhZGllbnRNYXApLHAuZW1pc3NpdmVNYXAmJihtLmVtaXNzaXZlTWFwLnZhbHVlPXAuZW1pc3NpdmVNYXApLHAuYnVtcE1hcCYmKG0uYnVtcE1hcC52YWx1ZT1wLmJ1bXBNYXAsbS5idW1wU2NhbGUudmFsdWU9cC5idW1wU2NhbGUscC5zaWRlPT09aGUmJihtLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxwLm5vcm1hbE1hcCYmKG0ubm9ybWFsTWFwLnZhbHVlPXAubm9ybWFsTWFwLG0ubm9ybWFsU2NhbGUudmFsdWUuY29weShwLm5vcm1hbFNjYWxlKSxwLnNpZGU9PT1oZSYmbS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSkscC5kaXNwbGFjZW1lbnRNYXAmJihtLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1wLmRpc3BsYWNlbWVudE1hcCxtLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPXAuZGlzcGxhY2VtZW50U2NhbGUsbS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPXAuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gaChtLHApe20ucm91Z2huZXNzLnZhbHVlPXAucm91Z2huZXNzLG0ubWV0YWxuZXNzLnZhbHVlPXAubWV0YWxuZXNzLHAucm91Z2huZXNzTWFwJiYobS5yb3VnaG5lc3NNYXAudmFsdWU9cC5yb3VnaG5lc3NNYXApLHAubWV0YWxuZXNzTWFwJiYobS5tZXRhbG5lc3NNYXAudmFsdWU9cC5tZXRhbG5lc3NNYXApLHAuZW1pc3NpdmVNYXAmJihtLmVtaXNzaXZlTWFwLnZhbHVlPXAuZW1pc3NpdmVNYXApLHAuYnVtcE1hcCYmKG0uYnVtcE1hcC52YWx1ZT1wLmJ1bXBNYXAsbS5idW1wU2NhbGUudmFsdWU9cC5idW1wU2NhbGUscC5zaWRlPT09aGUmJihtLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxwLm5vcm1hbE1hcCYmKG0ubm9ybWFsTWFwLnZhbHVlPXAubm9ybWFsTWFwLG0ubm9ybWFsU2NhbGUudmFsdWUuY29weShwLm5vcm1hbFNjYWxlKSxwLnNpZGU9PT1oZSYmbS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSkscC5kaXNwbGFjZW1lbnRNYXAmJihtLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1wLmRpc3BsYWNlbWVudE1hcCxtLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPXAuZGlzcGxhY2VtZW50U2NhbGUsbS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPXAuZGlzcGxhY2VtZW50Qmlhcyksbi5nZXQocCkuZW52TWFwJiYobS5lbnZNYXBJbnRlbnNpdHkudmFsdWU9cC5lbnZNYXBJbnRlbnNpdHkpfWZ1bmN0aW9uIGYobSxwLGIpe2gobSxwKSxtLmlvci52YWx1ZT1wLmlvcixwLnNoZWVuPjAmJihtLnNoZWVuQ29sb3IudmFsdWUuY29weShwLnNoZWVuQ29sb3IpLm11bHRpcGx5U2NhbGFyKHAuc2hlZW4pLG0uc2hlZW5Sb3VnaG5lc3MudmFsdWU9cC5zaGVlblJvdWdobmVzcyxwLnNoZWVuQ29sb3JNYXAmJihtLnNoZWVuQ29sb3JNYXAudmFsdWU9cC5zaGVlbkNvbG9yTWFwKSxwLnNoZWVuUm91Z2huZXNzTWFwJiYobS5zaGVlblJvdWdobmVzc01hcC52YWx1ZT1wLnNoZWVuUm91Z2huZXNzTWFwKSkscC5jbGVhcmNvYXQ+MCYmKG0uY2xlYXJjb2F0LnZhbHVlPXAuY2xlYXJjb2F0LG0uY2xlYXJjb2F0Um91Z2huZXNzLnZhbHVlPXAuY2xlYXJjb2F0Um91Z2huZXNzLHAuY2xlYXJjb2F0TWFwJiYobS5jbGVhcmNvYXRNYXAudmFsdWU9cC5jbGVhcmNvYXRNYXApLHAuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYobS5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudmFsdWU9cC5jbGVhcmNvYXRSb3VnaG5lc3NNYXApLHAuY2xlYXJjb2F0Tm9ybWFsTWFwJiYobS5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5jb3B5KHAuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLG0uY2xlYXJjb2F0Tm9ybWFsTWFwLnZhbHVlPXAuY2xlYXJjb2F0Tm9ybWFsTWFwLHAuc2lkZT09PWhlJiZtLmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSkscC50cmFuc21pc3Npb24+MCYmKG0udHJhbnNtaXNzaW9uLnZhbHVlPXAudHJhbnNtaXNzaW9uLG0udHJhbnNtaXNzaW9uU2FtcGxlck1hcC52YWx1ZT1iLnRleHR1cmUsbS50cmFuc21pc3Npb25TYW1wbGVyU2l6ZS52YWx1ZS5zZXQoYi53aWR0aCxiLmhlaWdodCkscC50cmFuc21pc3Npb25NYXAmJihtLnRyYW5zbWlzc2lvbk1hcC52YWx1ZT1wLnRyYW5zbWlzc2lvbk1hcCksbS50aGlja25lc3MudmFsdWU9cC50aGlja25lc3MscC50aGlja25lc3NNYXAmJihtLnRoaWNrbmVzc01hcC52YWx1ZT1wLnRoaWNrbmVzc01hcCksbS5hdHRlbnVhdGlvbkRpc3RhbmNlLnZhbHVlPXAuYXR0ZW51YXRpb25EaXN0YW5jZSxtLmF0dGVudWF0aW9uQ29sb3IudmFsdWUuY29weShwLmF0dGVudWF0aW9uQ29sb3IpKSxtLnNwZWN1bGFySW50ZW5zaXR5LnZhbHVlPXAuc3BlY3VsYXJJbnRlbnNpdHksbS5zcGVjdWxhckNvbG9yLnZhbHVlLmNvcHkocC5zcGVjdWxhckNvbG9yKSxwLnNwZWN1bGFySW50ZW5zaXR5TWFwJiYobS5zcGVjdWxhckludGVuc2l0eU1hcC52YWx1ZT1wLnNwZWN1bGFySW50ZW5zaXR5TWFwKSxwLnNwZWN1bGFyQ29sb3JNYXAmJihtLnNwZWN1bGFyQ29sb3JNYXAudmFsdWU9cC5zcGVjdWxhckNvbG9yTWFwKX1mdW5jdGlvbiBkKG0scCl7cC5tYXRjYXAmJihtLm1hdGNhcC52YWx1ZT1wLm1hdGNhcCkscC5idW1wTWFwJiYobS5idW1wTWFwLnZhbHVlPXAuYnVtcE1hcCxtLmJ1bXBTY2FsZS52YWx1ZT1wLmJ1bXBTY2FsZSxwLnNpZGU9PT1oZSYmKG0uYnVtcFNjYWxlLnZhbHVlKj0tMSkpLHAubm9ybWFsTWFwJiYobS5ub3JtYWxNYXAudmFsdWU9cC5ub3JtYWxNYXAsbS5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KHAubm9ybWFsU2NhbGUpLHAuc2lkZT09PWhlJiZtLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxwLmRpc3BsYWNlbWVudE1hcCYmKG0uZGlzcGxhY2VtZW50TWFwLnZhbHVlPXAuZGlzcGxhY2VtZW50TWFwLG0uZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9cC5kaXNwbGFjZW1lbnRTY2FsZSxtLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9cC5kaXNwbGFjZW1lbnRCaWFzKX1mdW5jdGlvbiBnKG0scCl7cC5kaXNwbGFjZW1lbnRNYXAmJihtLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1wLmRpc3BsYWNlbWVudE1hcCxtLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPXAuZGlzcGxhY2VtZW50U2NhbGUsbS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPXAuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24geChtLHApe3AuZGlzcGxhY2VtZW50TWFwJiYobS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9cC5kaXNwbGFjZW1lbnRNYXAsbS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1wLmRpc3BsYWNlbWVudFNjYWxlLG0uZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1wLmRpc3BsYWNlbWVudEJpYXMpLG0ucmVmZXJlbmNlUG9zaXRpb24udmFsdWUuY29weShwLnJlZmVyZW5jZVBvc2l0aW9uKSxtLm5lYXJEaXN0YW5jZS52YWx1ZT1wLm5lYXJEaXN0YW5jZSxtLmZhckRpc3RhbmNlLnZhbHVlPXAuZmFyRGlzdGFuY2V9ZnVuY3Rpb24gdihtLHApe3AuYnVtcE1hcCYmKG0uYnVtcE1hcC52YWx1ZT1wLmJ1bXBNYXAsbS5idW1wU2NhbGUudmFsdWU9cC5idW1wU2NhbGUscC5zaWRlPT09aGUmJihtLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxwLm5vcm1hbE1hcCYmKG0ubm9ybWFsTWFwLnZhbHVlPXAubm9ybWFsTWFwLG0ubm9ybWFsU2NhbGUudmFsdWUuY29weShwLm5vcm1hbFNjYWxlKSxwLnNpZGU9PT1oZSYmbS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSkscC5kaXNwbGFjZW1lbnRNYXAmJihtLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1wLmRpc3BsYWNlbWVudE1hcCxtLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPXAuZGlzcGxhY2VtZW50U2NhbGUsbS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPXAuZGlzcGxhY2VtZW50Qmlhcyl9cmV0dXJue3JlZnJlc2hGb2dVbmlmb3Jtczp0LHJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zOmV9fWZ1bmN0aW9uIHdFKCl7bGV0IG49aW8oImNhbnZhcyIpO3JldHVybiBuLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixufWZ1bmN0aW9uIFZ0KG49e30pe2xldCB0PW4uY2FudmFzIT09dm9pZCAwP24uY2FudmFzOndFKCksZT1uLmNvbnRleHQhPT12b2lkIDA/bi5jb250ZXh0Om51bGwsaT1uLmFscGhhIT09dm9pZCAwP24uYWxwaGE6ITEscj1uLmRlcHRoIT09dm9pZCAwP24uZGVwdGg6ITAscz1uLnN0ZW5jaWwhPT12b2lkIDA/bi5zdGVuY2lsOiEwLG89bi5hbnRpYWxpYXMhPT12b2lkIDA/bi5hbnRpYWxpYXM6ITEsYT1uLnByZW11bHRpcGxpZWRBbHBoYSE9PXZvaWQgMD9uLnByZW11bHRpcGxpZWRBbHBoYTohMCxsPW4ucHJlc2VydmVEcmF3aW5nQnVmZmVyIT09dm9pZCAwP24ucHJlc2VydmVEcmF3aW5nQnVmZmVyOiExLGM9bi5wb3dlclByZWZlcmVuY2UhPT12b2lkIDA/bi5wb3dlclByZWZlcmVuY2U6ImRlZmF1bHQiLHU9bi5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IT09dm9pZCAwP24uZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDohMSxoPW51bGwsZj1udWxsLGQ9W10sZz1bXTt0aGlzLmRvbUVsZW1lbnQ9dCx0aGlzLmRlYnVnPXtjaGVja1NoYWRlckVycm9yczohMH0sdGhpcy5hdXRvQ2xlYXI9ITAsdGhpcy5hdXRvQ2xlYXJDb2xvcj0hMCx0aGlzLmF1dG9DbGVhckRlcHRoPSEwLHRoaXMuYXV0b0NsZWFyU3RlbmNpbD0hMCx0aGlzLnNvcnRPYmplY3RzPSEwLHRoaXMuY2xpcHBpbmdQbGFuZXM9W10sdGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZD0hMSx0aGlzLm91dHB1dEVuY29kaW5nPXJpLHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHM9ITEsdGhpcy50b25lTWFwcGluZz10aSx0aGlzLnRvbmVNYXBwaW5nRXhwb3N1cmU9MTtsZXQgeD10aGlzLHY9ITEsbT0wLHA9MCxiPW51bGwsXz0tMSxTPW51bGwsTD1uZXcgV3QsQT1uZXcgV3QsSD1udWxsLHR0PXQud2lkdGgsWD10LmhlaWdodCx5PTEsUj1udWxsLEQ9bnVsbCxGPW5ldyBXdCgwLDAsdHQsWCksej1uZXcgV3QoMCwwLHR0LFgpLE49ITEsVj1uZXcgV3IsUT0hMSxhdD0hMSxHPW51bGwsJD1uZXcgd3QsbHQ9bmV3IFQsZHQ9e2JhY2tncm91bmQ6bnVsbCxmb2c6bnVsbCxlbnZpcm9ubWVudDpudWxsLG92ZXJyaWRlTWF0ZXJpYWw6bnVsbCxpc1NjZW5lOiEwfTtmdW5jdGlvbiB4dCgpe3JldHVybiBiPT09bnVsbD95OjF9bGV0IGs9ZTtmdW5jdGlvbiBGdChNLEkpe2ZvcihsZXQgTz0wO088TS5sZW5ndGg7TysrKXtsZXQgVT1NW09dLFo9dC5nZXRDb250ZXh0KFUsSSk7aWYoWiE9PW51bGwpcmV0dXJuIFp9cmV0dXJuIG51bGx9dHJ5e2xldCBNPXthbHBoYTohMCxkZXB0aDpyLHN0ZW5jaWw6cyxhbnRpYWxpYXM6byxwcmVtdWx0aXBsaWVkQWxwaGE6YSxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6bCxwb3dlclByZWZlcmVuY2U6YyxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OnV9O2lmKCJzZXRBdHRyaWJ1dGUiaW4gdCYmdC5zZXRBdHRyaWJ1dGUoImRhdGEtZW5naW5lIixgdGhyZWUuanMgciR7Wmh9YCksdC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixBdCwhMSksdC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsUCwhMSksaz09PW51bGwpe2xldCBJPVsid2ViZ2wyIiwid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiXTtpZih4LmlzV2ViR0wxUmVuZGVyZXI9PT0hMCYmSS5zaGlmdCgpLGs9RnQoSSxNKSxrPT09bnVsbCl0aHJvdyBGdChJKT9uZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQgd2l0aCB5b3VyIHNlbGVjdGVkIGF0dHJpYnV0ZXMuIik6bmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0LiIpfWsuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PT09dm9pZCAwJiYoay5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm57cmFuZ2VNaW46MSxyYW5nZU1heDoxLHByZWNpc2lvbjoxfX0pfWNhdGNoKE0pe3Rocm93IGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrTS5tZXNzYWdlKSxNfWxldCBtdCxTdCxCLHN0LG50LEMsaixKLGl0LGV0LHZ0LGJ0LEl0LFp0LHF0LEUsdyxxLHJ0LGd0LFcsX3QseXQ7ZnVuY3Rpb24gdXQoKXttdD1uZXcgRzEoayksU3Q9bmV3IFUxKGssbXQsbiksbXQuaW5pdChTdCksX3Q9bmV3IHlFKGssbXQsU3QpLEI9bmV3IGdFKGssbXQsU3QpLHN0PW5ldyBYMShrKSxudD1uZXcgc0UsQz1uZXcgeEUoayxtdCxCLG50LFN0LF90LHN0KSxqPW5ldyBPMSh4KSxKPW5ldyBWMSh4KSxpdD1uZXcgYU0oayxTdCkseXQ9bmV3IEYxKGssbXQsaXQsU3QpLGV0PW5ldyBXMShrLGl0LHN0LHl0KSx2dD1uZXcgJDEoayxldCxpdCxzdCkscnQ9bmV3IEoxKGssU3QsQyksRT1uZXcgQjEobnQpLGJ0PW5ldyByRSh4LGosSixtdCxTdCx5dCxFKSxJdD1uZXcgX0UobnQpLFp0PW5ldyBhRSxxdD1uZXcgZEUobXQsU3QpLHE9bmV3IE4xKHgsaixCLHZ0LGksYSksdz1uZXcgUzAoeCx2dCxTdCksZ3Q9bmV3IHoxKGssbXQsc3QsU3QpLFc9bmV3IHExKGssbXQsc3QsU3QpLHN0LnByb2dyYW1zPWJ0LnByb2dyYW1zLHguY2FwYWJpbGl0aWVzPVN0LHguZXh0ZW5zaW9ucz1tdCx4LnByb3BlcnRpZXM9bnQseC5yZW5kZXJMaXN0cz1adCx4LnNoYWRvd01hcD13LHguc3RhdGU9Qix4LmluZm89c3R9dXQoKTtsZXQgY3Q9bmV3IFh1KHgsayk7dGhpcy54cj1jdCx0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4ga30sdGhpcy5nZXRDb250ZXh0QXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiBrLmdldENvbnRleHRBdHRyaWJ1dGVzKCl9LHRoaXMuZm9yY2VDb250ZXh0TG9zcz1mdW5jdGlvbigpe2xldCBNPW10LmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7TSYmTS5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtsZXQgTT1tdC5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO00mJk0ucmVzdG9yZUNvbnRleHQoKX0sdGhpcy5nZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHl9LHRoaXMuc2V0UGl4ZWxSYXRpbz1mdW5jdGlvbihNKXtNIT09dm9pZCAwJiYoeT1NLHRoaXMuc2V0U2l6ZSh0dCxYLCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbihNKXtyZXR1cm4gTS5zZXQodHQsWCl9LHRoaXMuc2V0U2l6ZT1mdW5jdGlvbihNLEksTyl7aWYoY3QuaXNQcmVzZW50aW5nKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpO3JldHVybn10dD1NLFg9SSx0LndpZHRoPU1hdGguZmxvb3IoTSp5KSx0LmhlaWdodD1NYXRoLmZsb29yKEkqeSksTyE9PSExJiYodC5zdHlsZS53aWR0aD1NKyJweCIsdC5zdHlsZS5oZWlnaHQ9SSsicHgiKSx0aGlzLnNldFZpZXdwb3J0KDAsMCxNLEkpfSx0aGlzLmdldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKE0pe3JldHVybiBNLnNldCh0dCp5LFgqeSkuZmxvb3IoKX0sdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbihNLEksTyl7dHQ9TSxYPUkseT1PLHQud2lkdGg9TWF0aC5mbG9vcihNKk8pLHQuaGVpZ2h0PU1hdGguZmxvb3IoSSpPKSx0aGlzLnNldFZpZXdwb3J0KDAsMCxNLEkpfSx0aGlzLmdldEN1cnJlbnRWaWV3cG9ydD1mdW5jdGlvbihNKXtyZXR1cm4gTS5jb3B5KEwpfSx0aGlzLmdldFZpZXdwb3J0PWZ1bmN0aW9uKE0pe3JldHVybiBNLmNvcHkoRil9LHRoaXMuc2V0Vmlld3BvcnQ9ZnVuY3Rpb24oTSxJLE8sVSl7TS5pc1ZlY3RvcjQ/Ri5zZXQoTS54LE0ueSxNLnosTS53KTpGLnNldChNLEksTyxVKSxCLnZpZXdwb3J0KEwuY29weShGKS5tdWx0aXBseVNjYWxhcih5KS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yPWZ1bmN0aW9uKE0pe3JldHVybiBNLmNvcHkoeil9LHRoaXMuc2V0U2Npc3Nvcj1mdW5jdGlvbihNLEksTyxVKXtNLmlzVmVjdG9yND96LnNldChNLngsTS55LE0ueixNLncpOnouc2V0KE0sSSxPLFUpLEIuc2Npc3NvcihBLmNvcHkoeikubXVsdGlwbHlTY2FsYXIoeSkuZmxvb3IoKSl9LHRoaXMuZ2V0U2Npc3NvclRlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gTn0sdGhpcy5zZXRTY2lzc29yVGVzdD1mdW5jdGlvbihNKXtCLnNldFNjaXNzb3JUZXN0KE49TSl9LHRoaXMuc2V0T3BhcXVlU29ydD1mdW5jdGlvbihNKXtSPU19LHRoaXMuc2V0VHJhbnNwYXJlbnRTb3J0PWZ1bmN0aW9uKE0pe0Q9TX0sdGhpcy5nZXRDbGVhckNvbG9yPWZ1bmN0aW9uKE0pe3JldHVybiBNLmNvcHkocS5nZXRDbGVhckNvbG9yKCkpfSx0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXtxLnNldENsZWFyQ29sb3IuYXBwbHkocSxhcmd1bWVudHMpfSx0aGlzLmdldENsZWFyQWxwaGE9ZnVuY3Rpb24oKXtyZXR1cm4gcS5nZXRDbGVhckFscGhhKCl9LHRoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3Euc2V0Q2xlYXJBbHBoYS5hcHBseShxLGFyZ3VtZW50cyl9LHRoaXMuY2xlYXI9ZnVuY3Rpb24oTSxJLE8pe2xldCBVPTA7KE09PT12b2lkIDB8fE0pJiYoVXw9MTYzODQpLChJPT09dm9pZCAwfHxJKSYmKFV8PTI1NiksKE89PT12b2lkIDB8fE8pJiYoVXw9MTAyNCksay5jbGVhcihVKX0sdGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9LHRoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfSx0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLEF0LCExKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixQLCExKSxadC5kaXNwb3NlKCkscXQuZGlzcG9zZSgpLG50LmRpc3Bvc2UoKSxqLmRpc3Bvc2UoKSxKLmRpc3Bvc2UoKSx2dC5kaXNwb3NlKCkseXQuZGlzcG9zZSgpLGJ0LmRpc3Bvc2UoKSxjdC5kaXNwb3NlKCksY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Vzc2lvbnN0YXJ0IixEdCksY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Vzc2lvbmVuZCIsanQpLEcmJihHLmRpc3Bvc2UoKSxHPW51bGwpLHplLnN0b3AoKX07ZnVuY3Rpb24gQXQoTSl7TS5wcmV2ZW50RGVmYXVsdCgpLGNvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IExvc3QuIiksdj0hMH1mdW5jdGlvbiBQKCl7Y29uc29sZS5sb2coIlRIUkVFLldlYkdMUmVuZGVyZXI6IENvbnRleHQgUmVzdG9yZWQuIiksdj0hMTtsZXQgTT1zdC5hdXRvUmVzZXQsST13LmVuYWJsZWQsTz13LmF1dG9VcGRhdGUsVT13Lm5lZWRzVXBkYXRlLFo9dy50eXBlO3V0KCksc3QuYXV0b1Jlc2V0PU0sdy5lbmFibGVkPUksdy5hdXRvVXBkYXRlPU8sdy5uZWVkc1VwZGF0ZT1VLHcudHlwZT1afWZ1bmN0aW9uIHB0KE0pe2xldCBJPU0udGFyZ2V0O0kucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIscHQpLGh0KEkpfWZ1bmN0aW9uIGh0KE0pe0V0KE0pLG50LnJlbW92ZShNKX1mdW5jdGlvbiBFdChNKXtsZXQgST1udC5nZXQoTSkucHJvZ3JhbXM7SSE9PXZvaWQgMCYmKEkuZm9yRWFjaChmdW5jdGlvbihPKXtidC5yZWxlYXNlUHJvZ3JhbShPKX0pLE0uaXNTaGFkZXJNYXRlcmlhbCYmYnQucmVsZWFzZVNoYWRlckNhY2hlKE0pKX10aGlzLnJlbmRlckJ1ZmZlckRpcmVjdD1mdW5jdGlvbihNLEksTyxVLFosVHQpe0k9PT1udWxsJiYoST1kdCk7bGV0IEN0PVouaXNNZXNoJiZaLm1hdHJpeFdvcmxkLmRldGVybWluYW50KCk8MCxMdD16MChNLEksTyxVLFopO0Iuc2V0TWF0ZXJpYWwoVSxDdCk7bGV0IFJ0PU8uaW5kZXgsR3Q9Ty5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKFJ0PT09bnVsbCl7aWYoR3Q9PT12b2lkIDB8fEd0LmNvdW50PT09MClyZXR1cm59ZWxzZSBpZihSdC5jb3VudD09PTApcmV0dXJuO2xldCB6dD0xO1Uud2lyZWZyYW1lPT09ITAmJihSdD1ldC5nZXRXaXJlZnJhbWVBdHRyaWJ1dGUoTyksenQ9MikseXQuc2V0dXAoWixVLEx0LE8sUnQpO2xldCBVdCxpZT1ndDtSdCE9PW51bGwmJihVdD1pdC5nZXQoUnQpLGllPVcsaWUuc2V0SW5kZXgoVXQpKTtsZXQgZmk9UnQhPT1udWxsP1J0LmNvdW50Okd0LmNvdW50LFlpPU8uZHJhd1JhbmdlLnN0YXJ0Knp0LE90PU8uZHJhd1JhbmdlLmNvdW50Knp0LG5uPVR0IT09bnVsbD9UdC5zdGFydCp6dDowLGxlPVR0IT09bnVsbD9UdC5jb3VudCp6dDoxLzAscm49TWF0aC5tYXgoWWksbm4pLERvPU1hdGgubWluKGZpLFlpK090LG5uK2xlKS0xLHNuPU1hdGgubWF4KDAsRG8tcm4rMSk7aWYoc24hPT0wKXtpZihaLmlzTWVzaClVLndpcmVmcmFtZT09PSEwPyhCLnNldExpbmVXaWR0aChVLndpcmVmcmFtZUxpbmV3aWR0aCp4dCgpKSxpZS5zZXRNb2RlKDEpKTppZS5zZXRNb2RlKDQpO2Vsc2UgaWYoWi5pc0xpbmUpe2xldCB2bj1VLmxpbmV3aWR0aDt2bj09PXZvaWQgMCYmKHZuPTEpLEIuc2V0TGluZVdpZHRoKHZuKnh0KCkpLFouaXNMaW5lU2VnbWVudHM/aWUuc2V0TW9kZSgxKTpaLmlzTGluZUxvb3A/aWUuc2V0TW9kZSgyKTppZS5zZXRNb2RlKDMpfWVsc2UgWi5pc1BvaW50cz9pZS5zZXRNb2RlKDApOlouaXNTcHJpdGUmJmllLnNldE1vZGUoNCk7aWYoWi5pc0luc3RhbmNlZE1lc2gpaWUucmVuZGVySW5zdGFuY2VzKHJuLHNuLFouY291bnQpO2Vsc2UgaWYoTy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5KXtsZXQgdm49TWF0aC5taW4oTy5pbnN0YW5jZUNvdW50LE8uX21heEluc3RhbmNlQ291bnQpO2llLnJlbmRlckluc3RhbmNlcyhybixzbix2bil9ZWxzZSBpZS5yZW5kZXIocm4sc24pfX0sdGhpcy5jb21waWxlPWZ1bmN0aW9uKE0sSSl7Zj1xdC5nZXQoTSksZi5pbml0KCksZy5wdXNoKGYpLE0udHJhdmVyc2VWaXNpYmxlKGZ1bmN0aW9uKE8pe08uaXNMaWdodCYmTy5sYXllcnMudGVzdChJLmxheWVycykmJihmLnB1c2hMaWdodChPKSxPLmNhc3RTaGFkb3cmJmYucHVzaFNoYWRvdyhPKSl9KSxmLnNldHVwTGlnaHRzKHgucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLE0udHJhdmVyc2UoZnVuY3Rpb24oTyl7bGV0IFU9Ty5tYXRlcmlhbDtpZihVKWlmKEFycmF5LmlzQXJyYXkoVSkpZm9yKGxldCBaPTA7WjxVLmxlbmd0aDtaKyspe2xldCBUdD1VW1pdO0JsKFR0LE0sTyl9ZWxzZSBCbChVLE0sTyl9KSxnLnBvcCgpLGY9bnVsbH07bGV0IFk9bnVsbDtmdW5jdGlvbiBNdChNKXtZJiZZKE0pfWZ1bmN0aW9uIER0KCl7emUuc3RvcCgpfWZ1bmN0aW9uIGp0KCl7emUuc3RhcnQoKX1sZXQgemU9bmV3IHAwO3plLnNldEFuaW1hdGlvbkxvb3AoTXQpLHR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZ6ZS5zZXRDb250ZXh0KHdpbmRvdyksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKE0pe1k9TSxjdC5zZXRBbmltYXRpb25Mb29wKE0pLE09PT1udWxsP3plLnN0b3AoKTp6ZS5zdGFydCgpfSxjdC5hZGRFdmVudExpc3RlbmVyKCJzZXNzaW9uc3RhcnQiLER0KSxjdC5hZGRFdmVudExpc3RlbmVyKCJzZXNzaW9uZW5kIixqdCksdGhpcy5yZW5kZXI9ZnVuY3Rpb24oTSxJKXtpZihJIT09dm9pZCAwJiZJLmlzQ2FtZXJhIT09ITApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyOiBjYW1lcmEgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkNhbWVyYS4iKTtyZXR1cm59aWYodj09PSEwKXJldHVybjtNLmF1dG9VcGRhdGU9PT0hMCYmTS51cGRhdGVNYXRyaXhXb3JsZCgpLEkucGFyZW50PT09bnVsbCYmSS51cGRhdGVNYXRyaXhXb3JsZCgpLGN0LmVuYWJsZWQ9PT0hMCYmY3QuaXNQcmVzZW50aW5nPT09ITAmJihjdC5jYW1lcmFBdXRvVXBkYXRlPT09ITAmJmN0LnVwZGF0ZUNhbWVyYShJKSxJPWN0LmdldENhbWVyYSgpKSxNLmlzU2NlbmU9PT0hMCYmTS5vbkJlZm9yZVJlbmRlcih4LE0sSSxiKSxmPXF0LmdldChNLGcubGVuZ3RoKSxmLmluaXQoKSxnLnB1c2goZiksJC5tdWx0aXBseU1hdHJpY2VzKEkucHJvamVjdGlvbk1hdHJpeCxJLm1hdHJpeFdvcmxkSW52ZXJzZSksVi5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgkKSxhdD10aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkLFE9RS5pbml0KHRoaXMuY2xpcHBpbmdQbGFuZXMsYXQsSSksaD1adC5nZXQoTSxkLmxlbmd0aCksaC5pbml0KCksZC5wdXNoKGgpLG5lKE0sSSwwLHguc29ydE9iamVjdHMpLGguZmluaXNoKCkseC5zb3J0T2JqZWN0cz09PSEwJiZoLnNvcnQoUixEKSxRPT09ITAmJkUuYmVnaW5TaGFkb3dzKCk7bGV0IE89Zi5zdGF0ZS5zaGFkb3dzQXJyYXk7aWYody5yZW5kZXIoTyxNLEkpLFE9PT0hMCYmRS5lbmRTaGFkb3dzKCksdGhpcy5pbmZvLmF1dG9SZXNldD09PSEwJiZ0aGlzLmluZm8ucmVzZXQoKSxxLnJlbmRlcihoLE0pLGYuc2V0dXBMaWdodHMoeC5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyksSS5pc0FycmF5Q2FtZXJhKXtsZXQgVT1JLmNhbWVyYXM7Zm9yKGxldCBaPTAsVHQ9VS5sZW5ndGg7WjxUdDtaKyspe2xldCBDdD1VW1pdO2VuKGgsTSxDdCxDdC52aWV3cG9ydCl9fWVsc2UgZW4oaCxNLEkpO2IhPT1udWxsJiYoQy51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldChiKSxDLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcChiKSksTS5pc1NjZW5lPT09ITAmJk0ub25BZnRlclJlbmRlcih4LE0sSSksQi5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLEIuYnVmZmVycy5kZXB0aC5zZXRNYXNrKCEwKSxCLmJ1ZmZlcnMuY29sb3Iuc2V0TWFzayghMCksQi5zZXRQb2x5Z29uT2Zmc2V0KCExKSx5dC5yZXNldERlZmF1bHRTdGF0ZSgpLF89LTEsUz1udWxsLGcucG9wKCksZy5sZW5ndGg+MD9mPWdbZy5sZW5ndGgtMV06Zj1udWxsLGQucG9wKCksZC5sZW5ndGg+MD9oPWRbZC5sZW5ndGgtMV06aD1udWxsfTtmdW5jdGlvbiBuZShNLEksTyxVKXtpZihNLnZpc2libGU9PT0hMSlyZXR1cm47aWYoTS5sYXllcnMudGVzdChJLmxheWVycykpe2lmKE0uaXNHcm91cClPPU0ucmVuZGVyT3JkZXI7ZWxzZSBpZihNLmlzTE9EKU0uYXV0b1VwZGF0ZT09PSEwJiZNLnVwZGF0ZShJKTtlbHNlIGlmKE0uaXNMaWdodClmLnB1c2hMaWdodChNKSxNLmNhc3RTaGFkb3cmJmYucHVzaFNoYWRvdyhNKTtlbHNlIGlmKE0uaXNTcHJpdGUpe2lmKCFNLmZydXN0dW1DdWxsZWR8fFYuaW50ZXJzZWN0c1Nwcml0ZShNKSl7VSYmbHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKE0ubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NCgkKTtsZXQgQ3Q9dnQudXBkYXRlKE0pLEx0PU0ubWF0ZXJpYWw7THQudmlzaWJsZSYmaC5wdXNoKE0sQ3QsTHQsTyxsdC56LG51bGwpfX1lbHNlIGlmKChNLmlzTWVzaHx8TS5pc0xpbmV8fE0uaXNQb2ludHMpJiYoTS5pc1NraW5uZWRNZXNoJiZNLnNrZWxldG9uLmZyYW1lIT09c3QucmVuZGVyLmZyYW1lJiYoTS5za2VsZXRvbi51cGRhdGUoKSxNLnNrZWxldG9uLmZyYW1lPXN0LnJlbmRlci5mcmFtZSksIU0uZnJ1c3R1bUN1bGxlZHx8Vi5pbnRlcnNlY3RzT2JqZWN0KE0pKSl7VSYmbHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKE0ubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NCgkKTtsZXQgQ3Q9dnQudXBkYXRlKE0pLEx0PU0ubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShMdCkpe2xldCBSdD1DdC5ncm91cHM7Zm9yKGxldCBHdD0wLHp0PVJ0Lmxlbmd0aDtHdDx6dDtHdCsrKXtsZXQgVXQ9UnRbR3RdLGllPUx0W1V0Lm1hdGVyaWFsSW5kZXhdO2llJiZpZS52aXNpYmxlJiZoLnB1c2goTSxDdCxpZSxPLGx0LnosVXQpfX1lbHNlIEx0LnZpc2libGUmJmgucHVzaChNLEN0LEx0LE8sbHQueixudWxsKX19bGV0IFR0PU0uY2hpbGRyZW47Zm9yKGxldCBDdD0wLEx0PVR0Lmxlbmd0aDtDdDxMdDtDdCsrKW5lKFR0W0N0XSxJLE8sVSl9ZnVuY3Rpb24gZW4oTSxJLE8sVSl7bGV0IFo9TS5vcGFxdWUsVHQ9TS50cmFuc21pc3NpdmUsQ3Q9TS50cmFuc3BhcmVudDtmLnNldHVwTGlnaHRzVmlldyhPKSxUdC5sZW5ndGg+MCYmeW4oWixJLE8pLFUmJkIudmlld3BvcnQoTC5jb3B5KFUpKSxaLmxlbmd0aD4wJiZQbyhaLEksTyksVHQubGVuZ3RoPjAmJlBvKFR0LEksTyksQ3QubGVuZ3RoPjAmJlBvKEN0LEksTyl9ZnVuY3Rpb24geW4oTSxJLE8pe2lmKEc9PT1udWxsKXtsZXQgQ3Q9bz09PSEwJiZTdC5pc1dlYkdMMj09PSEwP3JvOk5lO0c9bmV3IEN0KDEwMjQsMTAyNCx7Z2VuZXJhdGVNaXBtYXBzOiEwLHR5cGU6X3QuY29udmVydCh6cikhPT1udWxsP3pyOmVpLG1pbkZpbHRlcjpSbCxtYWdGaWx0ZXI6ZmUsd3JhcFM6VmUsd3JhcFQ6VmUsdXNlUmVuZGVyVG9UZXh0dXJlOm10LmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIil9KX1sZXQgVT14LmdldFJlbmRlclRhcmdldCgpO3guc2V0UmVuZGVyVGFyZ2V0KEcpLHguY2xlYXIoKTtsZXQgWj14LnRvbmVNYXBwaW5nO3gudG9uZU1hcHBpbmc9dGksUG8oTSxJLE8pLHgudG9uZU1hcHBpbmc9WixDLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KEcpLEMudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKEcpLHguc2V0UmVuZGVyVGFyZ2V0KFUpfWZ1bmN0aW9uIFBvKE0sSSxPKXtsZXQgVT1JLmlzU2NlbmU9PT0hMD9JLm92ZXJyaWRlTWF0ZXJpYWw6bnVsbDtmb3IobGV0IFo9MCxUdD1NLmxlbmd0aDtaPFR0O1orKyl7bGV0IEN0PU1bWl0sTHQ9Q3Qub2JqZWN0LFJ0PUN0Lmdlb21ldHJ5LEd0PVU9PT1udWxsP0N0Lm1hdGVyaWFsOlUsenQ9Q3QuZ3JvdXA7THQubGF5ZXJzLnRlc3QoTy5sYXllcnMpJiZGMChMdCxJLE8sUnQsR3QsenQpfX1mdW5jdGlvbiBGMChNLEksTyxVLFosVHQpe00ub25CZWZvcmVSZW5kZXIoeCxJLE8sVSxaLFR0KSxNLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKE8ubWF0cml4V29ybGRJbnZlcnNlLE0ubWF0cml4V29ybGQpLE0ubm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeChNLm1vZGVsVmlld01hdHJpeCksWi5vbkJlZm9yZVJlbmRlcih4LEksTyxVLE0sVHQpLFoudHJhbnNwYXJlbnQ9PT0hMCYmWi5zaWRlPT09a3I/KFouc2lkZT1oZSxaLm5lZWRzVXBkYXRlPSEwLHgucmVuZGVyQnVmZmVyRGlyZWN0KE8sSSxVLFosTSxUdCksWi5zaWRlPXRvLFoubmVlZHNVcGRhdGU9ITAseC5yZW5kZXJCdWZmZXJEaXJlY3QoTyxJLFUsWixNLFR0KSxaLnNpZGU9a3IpOngucmVuZGVyQnVmZmVyRGlyZWN0KE8sSSxVLFosTSxUdCksTS5vbkFmdGVyUmVuZGVyKHgsSSxPLFUsWixUdCl9ZnVuY3Rpb24gQmwoTSxJLE8pe0kuaXNTY2VuZSE9PSEwJiYoST1kdCk7bGV0IFU9bnQuZ2V0KE0pLFo9Zi5zdGF0ZS5saWdodHMsVHQ9Zi5zdGF0ZS5zaGFkb3dzQXJyYXksQ3Q9Wi5zdGF0ZS52ZXJzaW9uLEx0PWJ0LmdldFBhcmFtZXRlcnMoTSxaLnN0YXRlLFR0LEksTyksUnQ9YnQuZ2V0UHJvZ3JhbUNhY2hlS2V5KEx0KSxHdD1VLnByb2dyYW1zO1UuZW52aXJvbm1lbnQ9TS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0kuZW52aXJvbm1lbnQ6bnVsbCxVLmZvZz1JLmZvZyxVLmVudk1hcD0oTS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP0o6aikuZ2V0KE0uZW52TWFwfHxVLmVudmlyb25tZW50KSxHdD09PXZvaWQgMCYmKE0uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIscHQpLEd0PW5ldyBNYXAsVS5wcm9ncmFtcz1HdCk7bGV0IHp0PUd0LmdldChSdCk7aWYoenQhPT12b2lkIDApe2lmKFUuY3VycmVudFByb2dyYW09PT16dCYmVS5saWdodHNTdGF0ZVZlcnNpb249PT1DdClyZXR1cm4gcmYoTSxMdCksenR9ZWxzZSBMdC51bmlmb3Jtcz1idC5nZXRVbmlmb3JtcyhNKSxNLm9uQnVpbGQoTyxMdCx4KSxNLm9uQmVmb3JlQ29tcGlsZShMdCx4KSx6dD1idC5hY3F1aXJlUHJvZ3JhbShMdCxSdCksR3Quc2V0KFJ0LHp0KSxVLnVuaWZvcm1zPUx0LnVuaWZvcm1zO2xldCBVdD1VLnVuaWZvcm1zOyghTS5pc1NoYWRlck1hdGVyaWFsJiYhTS5pc1Jhd1NoYWRlck1hdGVyaWFsfHxNLmNsaXBwaW5nPT09ITApJiYoVXQuY2xpcHBpbmdQbGFuZXM9RS51bmlmb3JtKSxyZihNLEx0KSxVLm5lZWRzTGlnaHRzPUIwKE0pLFUubGlnaHRzU3RhdGVWZXJzaW9uPUN0LFUubmVlZHNMaWdodHMmJihVdC5hbWJpZW50TGlnaHRDb2xvci52YWx1ZT1aLnN0YXRlLmFtYmllbnQsVXQubGlnaHRQcm9iZS52YWx1ZT1aLnN0YXRlLnByb2JlLFV0LmRpcmVjdGlvbmFsTGlnaHRzLnZhbHVlPVouc3RhdGUuZGlyZWN0aW9uYWwsVXQuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MudmFsdWU9Wi5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvdyxVdC5zcG90TGlnaHRzLnZhbHVlPVouc3RhdGUuc3BvdCxVdC5zcG90TGlnaHRTaGFkb3dzLnZhbHVlPVouc3RhdGUuc3BvdFNoYWRvdyxVdC5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1aLnN0YXRlLnJlY3RBcmVhLFV0Lmx0Y18xLnZhbHVlPVouc3RhdGUucmVjdEFyZWFMVEMxLFV0Lmx0Y18yLnZhbHVlPVouc3RhdGUucmVjdEFyZWFMVEMyLFV0LnBvaW50TGlnaHRzLnZhbHVlPVouc3RhdGUucG9pbnQsVXQucG9pbnRMaWdodFNoYWRvd3MudmFsdWU9Wi5zdGF0ZS5wb2ludFNoYWRvdyxVdC5oZW1pc3BoZXJlTGlnaHRzLnZhbHVlPVouc3RhdGUuaGVtaSxVdC5kaXJlY3Rpb25hbFNoYWRvd01hcC52YWx1ZT1aLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWFwLFV0LmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LnZhbHVlPVouc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgsVXQuc3BvdFNoYWRvd01hcC52YWx1ZT1aLnN0YXRlLnNwb3RTaGFkb3dNYXAsVXQuc3BvdFNoYWRvd01hdHJpeC52YWx1ZT1aLnN0YXRlLnNwb3RTaGFkb3dNYXRyaXgsVXQucG9pbnRTaGFkb3dNYXAudmFsdWU9Wi5zdGF0ZS5wb2ludFNoYWRvd01hcCxVdC5wb2ludFNoYWRvd01hdHJpeC52YWx1ZT1aLnN0YXRlLnBvaW50U2hhZG93TWF0cml4KTtsZXQgaWU9enQuZ2V0VW5pZm9ybXMoKSxmaT1paS5zZXFXaXRoVmFsdWUoaWUuc2VxLFV0KTtyZXR1cm4gVS5jdXJyZW50UHJvZ3JhbT16dCxVLnVuaWZvcm1zTGlzdD1maSx6dH1mdW5jdGlvbiByZihNLEkpe2xldCBPPW50LmdldChNKTtPLm91dHB1dEVuY29kaW5nPUkub3V0cHV0RW5jb2RpbmcsTy5pbnN0YW5jaW5nPUkuaW5zdGFuY2luZyxPLnNraW5uaW5nPUkuc2tpbm5pbmcsTy5tb3JwaFRhcmdldHM9SS5tb3JwaFRhcmdldHMsTy5tb3JwaE5vcm1hbHM9SS5tb3JwaE5vcm1hbHMsTy5tb3JwaFRhcmdldHNDb3VudD1JLm1vcnBoVGFyZ2V0c0NvdW50LE8ubnVtQ2xpcHBpbmdQbGFuZXM9SS5udW1DbGlwcGluZ1BsYW5lcyxPLm51bUludGVyc2VjdGlvbj1JLm51bUNsaXBJbnRlcnNlY3Rpb24sTy52ZXJ0ZXhBbHBoYXM9SS52ZXJ0ZXhBbHBoYXMsTy52ZXJ0ZXhUYW5nZW50cz1JLnZlcnRleFRhbmdlbnRzLE8udG9uZU1hcHBpbmc9SS50b25lTWFwcGluZ31mdW5jdGlvbiB6MChNLEksTyxVLFope0kuaXNTY2VuZSE9PSEwJiYoST1kdCksQy5yZXNldFRleHR1cmVVbml0cygpO2xldCBUdD1JLmZvZyxDdD1VLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/SS5lbnZpcm9ubWVudDpudWxsLEx0PWI9PT1udWxsP3gub3V0cHV0RW5jb2Rpbmc6Yi5pc1hSUmVuZGVyVGFyZ2V0PT09ITA/Yi50ZXh0dXJlLmVuY29kaW5nOnJpLFJ0PShVLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/SjpqKS5nZXQoVS5lbnZNYXB8fEN0KSxHdD1VLnZlcnRleENvbG9ycz09PSEwJiYhIU8uYXR0cmlidXRlcy5jb2xvciYmTy5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplPT09NCx6dD0hIVUubm9ybWFsTWFwJiYhIU8uYXR0cmlidXRlcy50YW5nZW50LFV0PSEhTy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24saWU9ISFPLm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsZmk9Ty5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24/Ty5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24ubGVuZ3RoOjAsWWk9VS50b25lTWFwcGVkP3gudG9uZU1hcHBpbmc6dGksT3Q9bnQuZ2V0KFUpLG5uPWYuc3RhdGUubGlnaHRzO2lmKFE9PT0hMCYmKGF0PT09ITB8fE0hPT1TKSl7bGV0IFplPU09PT1TJiZVLmlkPT09XztFLnNldFN0YXRlKFUsTSxaZSl9bGV0IGxlPSExO1UudmVyc2lvbj09PU90Ll9fdmVyc2lvbj8oT3QubmVlZHNMaWdodHMmJk90LmxpZ2h0c1N0YXRlVmVyc2lvbiE9PW5uLnN0YXRlLnZlcnNpb258fE90Lm91dHB1dEVuY29kaW5nIT09THR8fFouaXNJbnN0YW5jZWRNZXNoJiZPdC5pbnN0YW5jaW5nPT09ITF8fCFaLmlzSW5zdGFuY2VkTWVzaCYmT3QuaW5zdGFuY2luZz09PSEwfHxaLmlzU2tpbm5lZE1lc2gmJk90LnNraW5uaW5nPT09ITF8fCFaLmlzU2tpbm5lZE1lc2gmJk90LnNraW5uaW5nPT09ITB8fE90LmVudk1hcCE9PVJ0fHxVLmZvZyYmT3QuZm9nIT09VHR8fE90Lm51bUNsaXBwaW5nUGxhbmVzIT09dm9pZCAwJiYoT3QubnVtQ2xpcHBpbmdQbGFuZXMhPT1FLm51bVBsYW5lc3x8T3QubnVtSW50ZXJzZWN0aW9uIT09RS5udW1JbnRlcnNlY3Rpb24pfHxPdC52ZXJ0ZXhBbHBoYXMhPT1HdHx8T3QudmVydGV4VGFuZ2VudHMhPT16dHx8T3QubW9ycGhUYXJnZXRzIT09VXR8fE90Lm1vcnBoTm9ybWFscyE9PWllfHxPdC50b25lTWFwcGluZyE9PVlpfHxTdC5pc1dlYkdMMj09PSEwJiZPdC5tb3JwaFRhcmdldHNDb3VudCE9PWZpKSYmKGxlPSEwKToobGU9ITAsT3QuX192ZXJzaW9uPVUudmVyc2lvbik7bGV0IHJuPU90LmN1cnJlbnRQcm9ncmFtO2xlPT09ITAmJihybj1CbChVLEksWikpO2xldCBEbz0hMSxzbj0hMSx2bj0hMSxfZT1ybi5nZXRVbmlmb3JtcygpLGVzPU90LnVuaWZvcm1zO2lmKEIudXNlUHJvZ3JhbShybi5wcm9ncmFtKSYmKERvPSEwLHNuPSEwLHZuPSEwKSxVLmlkIT09XyYmKF89VS5pZCxzbj0hMCksRG98fFMhPT1NKXtpZihfZS5zZXRWYWx1ZShrLCJwcm9qZWN0aW9uTWF0cml4IixNLnByb2plY3Rpb25NYXRyaXgpLFN0LmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJl9lLnNldFZhbHVlKGssImxvZ0RlcHRoQnVmRkMiLDIvKE1hdGgubG9nKE0uZmFyKzEpL01hdGguTE4yKSksUyE9PU0mJihTPU0sc249ITAsdm49ITApLFUuaXNTaGFkZXJNYXRlcmlhbHx8VS5pc01lc2hQaG9uZ01hdGVyaWFsfHxVLmlzTWVzaFRvb25NYXRlcmlhbHx8VS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxVLmVudk1hcCl7bGV0IFplPV9lLm1hcC5jYW1lcmFQb3NpdGlvbjtaZSE9PXZvaWQgMCYmWmUuc2V0VmFsdWUoayxsdC5zZXRGcm9tTWF0cml4UG9zaXRpb24oTS5tYXRyaXhXb3JsZCkpfShVLmlzTWVzaFBob25nTWF0ZXJpYWx8fFUuaXNNZXNoVG9vbk1hdGVyaWFsfHxVLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8VS5pc01lc2hCYXNpY01hdGVyaWFsfHxVLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fFUuaXNTaGFkZXJNYXRlcmlhbCkmJl9lLnNldFZhbHVlKGssImlzT3J0aG9ncmFwaGljIixNLmlzT3J0aG9ncmFwaGljQ2FtZXJhPT09ITApLChVLmlzTWVzaFBob25nTWF0ZXJpYWx8fFUuaXNNZXNoVG9vbk1hdGVyaWFsfHxVLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8VS5pc01lc2hCYXNpY01hdGVyaWFsfHxVLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fFUuaXNTaGFkZXJNYXRlcmlhbHx8VS5pc1NoYWRvd01hdGVyaWFsfHxaLmlzU2tpbm5lZE1lc2gpJiZfZS5zZXRWYWx1ZShrLCJ2aWV3TWF0cml4IixNLm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYoWi5pc1NraW5uZWRNZXNoKXtfZS5zZXRPcHRpb25hbChrLFosImJpbmRNYXRyaXgiKSxfZS5zZXRPcHRpb25hbChrLFosImJpbmRNYXRyaXhJbnZlcnNlIik7bGV0IFplPVouc2tlbGV0b247WmUmJihTdC5mbG9hdFZlcnRleFRleHR1cmVzPyhaZS5ib25lVGV4dHVyZT09PW51bGwmJlplLmNvbXB1dGVCb25lVGV4dHVyZSgpLF9lLnNldFZhbHVlKGssImJvbmVUZXh0dXJlIixaZS5ib25lVGV4dHVyZSxDKSxfZS5zZXRWYWx1ZShrLCJib25lVGV4dHVyZVNpemUiLFplLmJvbmVUZXh0dXJlU2l6ZSkpOl9lLnNldE9wdGlvbmFsKGssWmUsImJvbmVNYXRyaWNlcyIpKX1yZXR1cm4hIU8mJihPLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbiE9PXZvaWQgMHx8Ty5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsIT09dm9pZCAwKSYmcnQudXBkYXRlKFosTyxVLHJuKSwoc258fE90LnJlY2VpdmVTaGFkb3chPT1aLnJlY2VpdmVTaGFkb3cpJiYoT3QucmVjZWl2ZVNoYWRvdz1aLnJlY2VpdmVTaGFkb3csX2Uuc2V0VmFsdWUoaywicmVjZWl2ZVNoYWRvdyIsWi5yZWNlaXZlU2hhZG93KSksc24mJihfZS5zZXRWYWx1ZShrLCJ0b25lTWFwcGluZ0V4cG9zdXJlIix4LnRvbmVNYXBwaW5nRXhwb3N1cmUpLE90Lm5lZWRzTGlnaHRzJiZVMChlcyx2biksVHQmJlUuZm9nJiZJdC5yZWZyZXNoRm9nVW5pZm9ybXMoZXMsVHQpLEl0LnJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zKGVzLFUseSxYLEcpLGlpLnVwbG9hZChrLE90LnVuaWZvcm1zTGlzdCxlcyxDKSksVS5pc1NoYWRlck1hdGVyaWFsJiZVLnVuaWZvcm1zTmVlZFVwZGF0ZT09PSEwJiYoaWkudXBsb2FkKGssT3QudW5pZm9ybXNMaXN0LGVzLEMpLFUudW5pZm9ybXNOZWVkVXBkYXRlPSExKSxVLmlzU3ByaXRlTWF0ZXJpYWwmJl9lLnNldFZhbHVlKGssImNlbnRlciIsWi5jZW50ZXIpLF9lLnNldFZhbHVlKGssIm1vZGVsVmlld01hdHJpeCIsWi5tb2RlbFZpZXdNYXRyaXgpLF9lLnNldFZhbHVlKGssIm5vcm1hbE1hdHJpeCIsWi5ub3JtYWxNYXRyaXgpLF9lLnNldFZhbHVlKGssIm1vZGVsTWF0cml4IixaLm1hdHJpeFdvcmxkKSxybn1mdW5jdGlvbiBVMChNLEkpe00uYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9SSxNLmxpZ2h0UHJvYmUubmVlZHNVcGRhdGU9SSxNLmRpcmVjdGlvbmFsTGlnaHRzLm5lZWRzVXBkYXRlPUksTS5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1JLE0ucG9pbnRMaWdodHMubmVlZHNVcGRhdGU9SSxNLnBvaW50TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPUksTS5zcG90TGlnaHRzLm5lZWRzVXBkYXRlPUksTS5zcG90TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPUksTS5yZWN0QXJlYUxpZ2h0cy5uZWVkc1VwZGF0ZT1JLE0uaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1JfWZ1bmN0aW9uIEIwKE0pe3JldHVybiBNLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8TS5pc01lc2hUb29uTWF0ZXJpYWx8fE0uaXNNZXNoUGhvbmdNYXRlcmlhbHx8TS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxNLmlzU2hhZG93TWF0ZXJpYWx8fE0uaXNTaGFkZXJNYXRlcmlhbCYmTS5saWdodHM9PT0hMH10aGlzLmdldEFjdGl2ZUN1YmVGYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG19LHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gcH0sdGhpcy5nZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sdGhpcy5zZXRSZW5kZXJUYXJnZXRUZXh0dXJlcz1mdW5jdGlvbihNLEksTyl7bnQuZ2V0KE0udGV4dHVyZSkuX193ZWJnbFRleHR1cmU9SSxudC5nZXQoTS5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlPU87bGV0IFU9bnQuZ2V0KE0pO1UuX19oYXNFeHRlcm5hbFRleHR1cmVzPSEwLFUuX19oYXNFeHRlcm5hbFRleHR1cmVzJiYoVS5fX2F1dG9BbGxvY2F0ZURlcHRoQnVmZmVyPU89PT12b2lkIDAsVS5fX2F1dG9BbGxvY2F0ZURlcHRoQnVmZmVyfHxNLnVzZVJlbmRlclRvVGV4dHVyZSYmKGNvbnNvbGUud2FybigicmVuZGVyLXRvLXRleHR1cmUgZXh0ZW5zaW9uIHdhcyBkaXNhYmxlZCBiZWNhdXNlIGFuIGV4dGVybmFsIHRleHR1cmUgd2FzIHByb3ZpZGVkIiksTS51c2VSZW5kZXJUb1RleHR1cmU9ITEsTS51c2VSZW5kZXJidWZmZXI9ITApKX0sdGhpcy5zZXRSZW5kZXJUYXJnZXRGcmFtZWJ1ZmZlcj1mdW5jdGlvbihNLEkpe2xldCBPPW50LmdldChNKTtPLl9fd2ViZ2xGcmFtZWJ1ZmZlcj1JLE8uX191c2VEZWZhdWx0RnJhbWVidWZmZXI9ST09PXZvaWQgMH0sdGhpcy5zZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oTSxJPTAsTz0wKXtiPU0sbT1JLHA9TztsZXQgVT0hMDtpZihNKXtsZXQgUnQ9bnQuZ2V0KE0pO1J0Ll9fdXNlRGVmYXVsdEZyYW1lYnVmZmVyIT09dm9pZCAwPyhCLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKSxVPSExKTpSdC5fX3dlYmdsRnJhbWVidWZmZXI9PT12b2lkIDA/Qy5zZXR1cFJlbmRlclRhcmdldChNKTpSdC5fX2hhc0V4dGVybmFsVGV4dHVyZXMmJkMucmViaW5kVGV4dHVyZXMoTSxudC5nZXQoTS50ZXh0dXJlKS5fX3dlYmdsVGV4dHVyZSxudC5nZXQoTS5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlKX1sZXQgWj1udWxsLFR0PSExLEN0PSExO2lmKE0pe2xldCBSdD1NLnRleHR1cmU7KFJ0LmlzRGF0YVRleHR1cmUzRHx8UnQuaXNEYXRhVGV4dHVyZTJEQXJyYXkpJiYoQ3Q9ITApO2xldCBHdD1udC5nZXQoTSkuX193ZWJnbEZyYW1lYnVmZmVyO00uaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/KFo9R3RbSV0sVHQ9ITApOk0udXNlUmVuZGVyYnVmZmVyP1o9bnQuZ2V0KE0pLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcjpaPUd0LEwuY29weShNLnZpZXdwb3J0KSxBLmNvcHkoTS5zY2lzc29yKSxIPU0uc2Npc3NvclRlc3R9ZWxzZSBMLmNvcHkoRikubXVsdGlwbHlTY2FsYXIoeSkuZmxvb3IoKSxBLmNvcHkoeikubXVsdGlwbHlTY2FsYXIoeSkuZmxvb3IoKSxIPU47aWYoQi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsWikmJlN0LmRyYXdCdWZmZXJzJiZVJiZCLmRyYXdCdWZmZXJzKE0sWiksQi52aWV3cG9ydChMKSxCLnNjaXNzb3IoQSksQi5zZXRTY2lzc29yVGVzdChIKSxUdCl7bGV0IFJ0PW50LmdldChNLnRleHR1cmUpO2suZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwNjQsMzQwNjkrSSxSdC5fX3dlYmdsVGV4dHVyZSxPKX1lbHNlIGlmKEN0KXtsZXQgUnQ9bnQuZ2V0KE0udGV4dHVyZSksR3Q9SXx8MDtrLmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKDM2MTYwLDM2MDY0LFJ0Ll9fd2ViZ2xUZXh0dXJlLE98fDAsR3QpfV89LTF9LHRoaXMucmVhZFJlbmRlclRhcmdldFBpeGVscz1mdW5jdGlvbihNLEksTyxVLFosVHQsQ3Qpe2lmKCEoTSYmTS5pc1dlYkdMUmVuZGVyVGFyZ2V0KSl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0LiIpO3JldHVybn1sZXQgTHQ9bnQuZ2V0KE0pLl9fd2ViZ2xGcmFtZWJ1ZmZlcjtpZihNLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiZDdCE9PXZvaWQgMCYmKEx0PUx0W0N0XSksTHQpe0IuYmluZEZyYW1lYnVmZmVyKDM2MTYwLEx0KTt0cnl7bGV0IFJ0PU0udGV4dHVyZSxHdD1SdC5mb3JtYXQsenQ9UnQudHlwZTtpZihHdCE9PVJlJiZfdC5jb252ZXJ0KEd0KSE9PWsuZ2V0UGFyYW1ldGVyKDM1NzM5KSl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFJHQkEgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBmb3JtYXQuIik7cmV0dXJufWxldCBVdD16dD09PXpyJiYobXQuaGFzKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKXx8U3QuaXNXZWJHTDImJm10LmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKTtpZih6dCE9PWVpJiZfdC5jb252ZXJ0KHp0KSE9PWsuZ2V0UGFyYW1ldGVyKDM1NzM4KSYmISh6dD09PXppJiYoU3QuaXNXZWJHTDJ8fG10LmhhcygiT0VTX3RleHR1cmVfZmxvYXQiKXx8bXQuaGFzKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiKSkpJiYhVXQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBpbiBVbnNpZ25lZEJ5dGVUeXBlIG9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHlwZS4iKTtyZXR1cm59ay5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKT09PTM2MDUzP0k+PTAmJkk8PU0ud2lkdGgtVSYmTz49MCYmTzw9TS5oZWlnaHQtWiYmay5yZWFkUGl4ZWxzKEksTyxVLFosX3QuY29udmVydChHdCksX3QuY29udmVydCh6dCksVHQpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVhZFBpeGVscyBmcm9tIHJlbmRlclRhcmdldCBmYWlsZWQuIEZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZS4iKX1maW5hbGx5e2xldCBSdD1iIT09bnVsbD9udC5nZXQoYikuX193ZWJnbEZyYW1lYnVmZmVyOm51bGw7Qi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsUnQpfX19LHRoaXMuY29weUZyYW1lYnVmZmVyVG9UZXh0dXJlPWZ1bmN0aW9uKE0sSSxPPTApe2lmKEkuaXNGcmFtZWJ1ZmZlclRleHR1cmUhPT0hMCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogY29weUZyYW1lYnVmZmVyVG9UZXh0dXJlKCkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIEZyYW1lYnVmZmVyVGV4dHVyZS4iKTtyZXR1cm59bGV0IFU9TWF0aC5wb3coMiwtTyksWj1NYXRoLmZsb29yKEkuaW1hZ2Uud2lkdGgqVSksVHQ9TWF0aC5mbG9vcihJLmltYWdlLmhlaWdodCpVKTtDLnNldFRleHR1cmUyRChJLDApLGsuY29weVRleFN1YkltYWdlMkQoMzU1MyxPLDAsMCxNLngsTS55LFosVHQpLEIudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlPWZ1bmN0aW9uKE0sSSxPLFU9MCl7bGV0IFo9SS5pbWFnZS53aWR0aCxUdD1JLmltYWdlLmhlaWdodCxDdD1fdC5jb252ZXJ0KE8uZm9ybWF0KSxMdD1fdC5jb252ZXJ0KE8udHlwZSk7Qy5zZXRUZXh0dXJlMkQoTywwKSxrLnBpeGVsU3RvcmVpKDM3NDQwLE8uZmxpcFkpLGsucGl4ZWxTdG9yZWkoMzc0NDEsTy5wcmVtdWx0aXBseUFscGhhKSxrLnBpeGVsU3RvcmVpKDMzMTcsTy51bnBhY2tBbGlnbm1lbnQpLEkuaXNEYXRhVGV4dHVyZT9rLnRleFN1YkltYWdlMkQoMzU1MyxVLE0ueCxNLnksWixUdCxDdCxMdCxJLmltYWdlLmRhdGEpOkkuaXNDb21wcmVzc2VkVGV4dHVyZT9rLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsVSxNLngsTS55LEkubWlwbWFwc1swXS53aWR0aCxJLm1pcG1hcHNbMF0uaGVpZ2h0LEN0LEkubWlwbWFwc1swXS5kYXRhKTprLnRleFN1YkltYWdlMkQoMzU1MyxVLE0ueCxNLnksQ3QsTHQsSS5pbWFnZSksVT09PTAmJk8uZ2VuZXJhdGVNaXBtYXBzJiZrLmdlbmVyYXRlTWlwbWFwKDM1NTMpLEIudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q9ZnVuY3Rpb24oTSxJLE8sVSxaPTApe2lmKHguaXNXZWJHTDFSZW5kZXJlcil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7cmV0dXJufWxldCBUdD1NLm1heC54LU0ubWluLngrMSxDdD1NLm1heC55LU0ubWluLnkrMSxMdD1NLm1heC56LU0ubWluLnorMSxSdD1fdC5jb252ZXJ0KFUuZm9ybWF0KSxHdD1fdC5jb252ZXJ0KFUudHlwZSksenQ7aWYoVS5pc0RhdGFUZXh0dXJlM0QpQy5zZXRUZXh0dXJlM0QoVSwwKSx6dD0zMjg3OTtlbHNlIGlmKFUuaXNEYXRhVGV4dHVyZTJEQXJyYXkpQy5zZXRUZXh0dXJlMkRBcnJheShVLDApLHp0PTM1ODY2O2Vsc2V7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IG9ubHkgc3VwcG9ydHMgVEhSRUUuRGF0YVRleHR1cmUzRCBhbmQgVEhSRUUuRGF0YVRleHR1cmUyREFycmF5LiIpO3JldHVybn1rLnBpeGVsU3RvcmVpKDM3NDQwLFUuZmxpcFkpLGsucGl4ZWxTdG9yZWkoMzc0NDEsVS5wcmVtdWx0aXBseUFscGhhKSxrLnBpeGVsU3RvcmVpKDMzMTcsVS51bnBhY2tBbGlnbm1lbnQpO2xldCBVdD1rLmdldFBhcmFtZXRlcigzMzE0KSxpZT1rLmdldFBhcmFtZXRlcigzMjg3OCksZmk9ay5nZXRQYXJhbWV0ZXIoMzMxNiksWWk9ay5nZXRQYXJhbWV0ZXIoMzMxNSksT3Q9ay5nZXRQYXJhbWV0ZXIoMzI4NzcpLG5uPU8uaXNDb21wcmVzc2VkVGV4dHVyZT9PLm1pcG1hcHNbMF06Ty5pbWFnZTtrLnBpeGVsU3RvcmVpKDMzMTQsbm4ud2lkdGgpLGsucGl4ZWxTdG9yZWkoMzI4Nzgsbm4uaGVpZ2h0KSxrLnBpeGVsU3RvcmVpKDMzMTYsTS5taW4ueCksay5waXhlbFN0b3JlaSgzMzE1LE0ubWluLnkpLGsucGl4ZWxTdG9yZWkoMzI4NzcsTS5taW4ueiksTy5pc0RhdGFUZXh0dXJlfHxPLmlzRGF0YVRleHR1cmUzRD9rLnRleFN1YkltYWdlM0QoenQsWixJLngsSS55LEkueixUdCxDdCxMdCxSdCxHdCxubi5kYXRhKTpPLmlzQ29tcHJlc3NlZFRleHR1cmU/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiB1bnRlc3RlZCBzdXBwb3J0IGZvciBjb21wcmVzc2VkIHNyY1RleHR1cmUuIiksay5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh6dCxaLEkueCxJLnksSS56LFR0LEN0LEx0LFJ0LG5uLmRhdGEpKTprLnRleFN1YkltYWdlM0QoenQsWixJLngsSS55LEkueixUdCxDdCxMdCxSdCxHdCxubiksay5waXhlbFN0b3JlaSgzMzE0LFV0KSxrLnBpeGVsU3RvcmVpKDMyODc4LGllKSxrLnBpeGVsU3RvcmVpKDMzMTYsZmkpLGsucGl4ZWxTdG9yZWkoMzMxNSxZaSksay5waXhlbFN0b3JlaSgzMjg3NyxPdCksWj09PTAmJlUuZ2VuZXJhdGVNaXBtYXBzJiZrLmdlbmVyYXRlTWlwbWFwKHp0KSxCLnVuYmluZFRleHR1cmUoKX0sdGhpcy5pbml0VGV4dHVyZT1mdW5jdGlvbihNKXtDLnNldFRleHR1cmUyRChNLDApLEIudW5iaW5kVGV4dHVyZSgpfSx0aGlzLnJlc2V0U3RhdGU9ZnVuY3Rpb24oKXttPTAscD0wLGI9bnVsbCxCLnJlc2V0KCkseXQucmVzZXQoKX0sdHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyE9InVuZGVmaW5lZCImJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfVZ0LnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyZXI9ITA7dmFyIFl1PWNsYXNzIGV4dGVuZHMgVnR7fTtZdS5wcm90b3R5cGUuaXNXZWJHTDFSZW5kZXJlcj0hMDt2YXIgdW89Y2xhc3N7Y29uc3RydWN0b3IodCxlPTI1ZS01KXt0aGlzLm5hbWU9IiIsdGhpcy5jb2xvcj1uZXcgZnQodCksdGhpcy5kZW5zaXR5PWV9Y2xvbmUoKXtyZXR1cm4gbmV3IHVvKHRoaXMuY29sb3IsdGhpcy5kZW5zaXR5KX10b0pTT04oKXtyZXR1cm57dHlwZToiRm9nRXhwMiIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxkZW5zaXR5OnRoaXMuZGVuc2l0eX19fTt1by5wcm90b3R5cGUuaXNGb2dFeHAyPSEwO3ZhciBobz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGU9MSxpPTFlMyl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IGZ0KHQpLHRoaXMubmVhcj1lLHRoaXMuZmFyPWl9Y2xvbmUoKXtyZXR1cm4gbmV3IGhvKHRoaXMuY29sb3IsdGhpcy5uZWFyLHRoaXMuZmFyKX10b0pTT04oKXtyZXR1cm57dHlwZToiRm9nIixjb2xvcjp0aGlzLmNvbG9yLmdldEhleCgpLG5lYXI6dGhpcy5uZWFyLGZhcjp0aGlzLmZhcn19fTtoby5wcm90b3R5cGUuaXNGb2c9ITA7dmFyIFhyPWNsYXNzIGV4dGVuZHMga3R7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCx0eXBlb2YgX19USFJFRV9ERVZUT09MU19fIT0idW5kZWZpbmVkIiYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LGUpe3JldHVybiBzdXBlci5jb3B5KHQsZSksdC5iYWNrZ3JvdW5kIT09bnVsbCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksdC5lbnZpcm9ubWVudCE9PW51bGwmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksdC5mb2chPT1udWxsJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksdC5vdmVycmlkZU1hdGVyaWFsIT09bnVsbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gdGhpcy5mb2chPT1udWxsJiYoZS5vYmplY3QuZm9nPXRoaXMuZm9nLnRvSlNPTigpKSxlfX07WHIucHJvdG90eXBlLmlzU2NlbmU9ITA7dmFyIFZpPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5hcnJheT10LHRoaXMuc3RyaWRlPWUsdGhpcy5jb3VudD10IT09dm9pZCAwP3QubGVuZ3RoL2U6MCx0aGlzLnVzYWdlPW5vLHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9dG4oKX1vblVwbG9hZENhbGxiYWNrKCl7fXNldCBuZWVkc1VwZGF0ZSh0KXt0PT09ITAmJnRoaXMudmVyc2lvbisrfXNldFVzYWdlKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLnN0cmlkZT10LnN0cmlkZSx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc31jb3B5QXQodCxlLGkpe3QqPXRoaXMuc3RyaWRlLGkqPWUuc3RyaWRlO2ZvcihsZXQgcj0wLHM9dGhpcy5zdHJpZGU7cjxzO3IrKyl0aGlzLmFycmF5W3Qrcl09ZS5hcnJheVtpK3JdO3JldHVybiB0aGlzfXNldCh0LGU9MCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQsZSksdGhpc31jbG9uZSh0KXt0LmFycmF5QnVmZmVycz09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzPXt9KSx0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD09PXZvaWQgMCYmKHRoaXMuYXJyYXkuYnVmZmVyLl91dWlkPXRuKCkpLHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT10aGlzLmFycmF5LnNsaWNlKDApLmJ1ZmZlcik7bGV0IGU9bmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdKSxpPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGUsdGhpcy5zdHJpZGUpO3JldHVybiBpLnNldFVzYWdlKHRoaXMudXNhZ2UpLGl9b25VcGxvYWQodCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9dG9KU09OKHQpe3JldHVybiB0LmFycmF5QnVmZmVycz09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzPXt9KSx0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD09PXZvaWQgMCYmKHRoaXMuYXJyYXkuYnVmZmVyLl91dWlkPXRuKCkpLHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuZXcgVWludDMyQXJyYXkodGhpcy5hcnJheS5idWZmZXIpKSkse3V1aWQ6dGhpcy51dWlkLGJ1ZmZlcjp0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZCx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxzdHJpZGU6dGhpcy5zdHJpZGV9fX07VmkucHJvdG90eXBlLmlzSW50ZXJsZWF2ZWRCdWZmZXI9ITA7dmFyIHNlPW5ldyBULEdpPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxpLHI9ITEpe3RoaXMubmFtZT0iIix0aGlzLmRhdGE9dCx0aGlzLml0ZW1TaXplPWUsdGhpcy5vZmZzZXQ9aSx0aGlzLm5vcm1hbGl6ZWQ9cj09PSEwfWdldCBjb3VudCgpe3JldHVybiB0aGlzLmRhdGEuY291bnR9Z2V0IGFycmF5KCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheX1zZXQgbmVlZHNVcGRhdGUodCl7dGhpcy5kYXRhLm5lZWRzVXBkYXRlPXR9YXBwbHlNYXRyaXg0KHQpe2ZvcihsZXQgZT0wLGk9dGhpcy5kYXRhLmNvdW50O2U8aTtlKyspc2UueD10aGlzLmdldFgoZSksc2UueT10aGlzLmdldFkoZSksc2Uuej10aGlzLmdldFooZSksc2UuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsc2UueCxzZS55LHNlLnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLGk9dGhpcy5jb3VudDtlPGk7ZSsrKXNlLng9dGhpcy5nZXRYKGUpLHNlLnk9dGhpcy5nZXRZKGUpLHNlLno9dGhpcy5nZXRaKGUpLHNlLmFwcGx5Tm9ybWFsTWF0cml4KHQpLHRoaXMuc2V0WFlaKGUsc2UueCxzZS55LHNlLnopO3JldHVybiB0aGlzfXRyYW5zZm9ybURpcmVjdGlvbih0KXtmb3IobGV0IGU9MCxpPXRoaXMuY291bnQ7ZTxpO2UrKylzZS54PXRoaXMuZ2V0WChlKSxzZS55PXRoaXMuZ2V0WShlKSxzZS56PXRoaXMuZ2V0WihlKSxzZS50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpcy5zZXRYWVooZSxzZS54LHNlLnksc2Uueik7cmV0dXJuIHRoaXN9c2V0WCh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XT1lLHRoaXN9c2V0WSh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdPWUsdGhpc31zZXRaKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl09ZSx0aGlzfXNldFcodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXT1lLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldF19Z2V0WSh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsxXX1nZXRaKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdfWdldFcodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrM119c2V0WFkodCxlLGkpe3JldHVybiB0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCx0aGlzLmRhdGEuYXJyYXlbdCswXT1lLHRoaXMuZGF0YS5hcnJheVt0KzFdPWksdGhpc31zZXRYWVoodCxlLGkscil7cmV0dXJuIHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0LHRoaXMuZGF0YS5hcnJheVt0KzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09aSx0aGlzLmRhdGEuYXJyYXlbdCsyXT1yLHRoaXN9c2V0WFlaVyh0LGUsaSxyLHMpe3JldHVybiB0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCx0aGlzLmRhdGEuYXJyYXlbdCswXT1lLHRoaXMuZGF0YS5hcnJheVt0KzFdPWksdGhpcy5kYXRhLmFycmF5W3QrMl09cix0aGlzLmRhdGEuYXJyYXlbdCszXT1zLHRoaXN9Y2xvbmUodCl7aWYodD09PXZvaWQgMCl7Y29uc29sZS5sb2coIlRIUkVFLkludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlLmNsb25lKCk6IENsb25pbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2xldCBlPVtdO2ZvcihsZXQgaT0wO2k8dGhpcy5jb3VudDtpKyspe2xldCByPWkqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IHM9MDtzPHRoaXMuaXRlbVNpemU7cysrKWUucHVzaCh0aGlzLmRhdGEuYXJyYXlbcitzXSl9cmV0dXJuIG5ldyBRdChuZXcgdGhpcy5hcnJheS5jb25zdHJ1Y3RvcihlKSx0aGlzLml0ZW1TaXplLHRoaXMubm9ybWFsaXplZCl9ZWxzZSByZXR1cm4gdC5pbnRlcmxlYXZlZEJ1ZmZlcnM9PT12b2lkIDAmJih0LmludGVybGVhdmVkQnVmZmVycz17fSksdC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPT09dm9pZCAwJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPXRoaXMuZGF0YS5jbG9uZSh0KSksbmV3IEdpKHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHQ9PT12b2lkIDApe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2xldCBlPVtdO2ZvcihsZXQgaT0wO2k8dGhpcy5jb3VudDtpKyspe2xldCByPWkqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IHM9MDtzPHRoaXMuaXRlbVNpemU7cysrKWUucHVzaCh0aGlzLmRhdGEuYXJyYXlbcitzXSl9cmV0dXJue2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6ZSxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19ZWxzZSByZXR1cm4gdC5pbnRlcmxlYXZlZEJ1ZmZlcnM9PT12b2lkIDAmJih0LmludGVybGVhdmVkQnVmZmVycz17fSksdC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPT09dm9pZCAwJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPXRoaXMuZGF0YS50b0pTT04odCkpLHtpc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlOiEwLGl0ZW1TaXplOnRoaXMuaXRlbVNpemUsZGF0YTp0aGlzLmRhdGEudXVpZCxvZmZzZXQ6dGhpcy5vZmZzZXQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fX07R2kucHJvdG90eXBlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU9ITA7dmFyIGhsPWNsYXNzIGV4dGVuZHMgeGV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBmdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5yb3RhdGlvbj0wLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMudHJhbnNwYXJlbnQ9ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLnNpemVBdHRlbnVhdGlvbj10LnNpemVBdHRlbnVhdGlvbix0aGlzfX07aGwucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7dmFyIENyLEdzPW5ldyBULFJyPW5ldyBULExyPW5ldyBULFByPW5ldyBLLFdzPW5ldyBLLEUwPW5ldyB3dCxCYT1uZXcgVCxxcz1uZXcgVCxPYT1uZXcgVCxGZz1uZXcgSyxBdT1uZXcgSyx6Zz1uZXcgSyxadT1jbGFzcyBleHRlbmRzIGt0e2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLENyPT09dm9pZCAwKXtDcj1uZXcgSHQ7bGV0IGU9bmV3IEZsb2F0MzJBcnJheShbLS41LC0uNSwwLDAsMCwuNSwtLjUsMCwxLDAsLjUsLjUsMCwxLDEsLS41LC41LDAsMCwxXSksaT1uZXcgVmkoZSw1KTtDci5zZXRJbmRleChbMCwxLDIsMCwyLDNdKSxDci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgR2koaSwzLDAsITEpKSxDci5zZXRBdHRyaWJ1dGUoInV2IixuZXcgR2koaSwyLDMsITEpKX10aGlzLmdlb21ldHJ5PUNyLHRoaXMubWF0ZXJpYWw9dCE9PXZvaWQgMD90Om5ldyBobCx0aGlzLmNlbnRlcj1uZXcgSyguNSwuNSl9cmF5Y2FzdCh0LGUpe3QuY2FtZXJhPT09bnVsbCYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLFJyLnNldEZyb21NYXRyaXhTY2FsZSh0aGlzLm1hdHJpeFdvcmxkKSxFMC5jb3B5KHQuY2FtZXJhLm1hdHJpeFdvcmxkKSx0aGlzLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKHQuY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSx0aGlzLm1hdHJpeFdvcmxkKSxMci5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJnRoaXMubWF0ZXJpYWwuc2l6ZUF0dGVudWF0aW9uPT09ITEmJlJyLm11bHRpcGx5U2NhbGFyKC1Mci56KTtsZXQgaT10aGlzLm1hdGVyaWFsLnJvdGF0aW9uLHIscztpIT09MCYmKHM9TWF0aC5jb3MoaSkscj1NYXRoLnNpbihpKSk7bGV0IG89dGhpcy5jZW50ZXI7a2EoQmEuc2V0KC0uNSwtLjUsMCksTHIsbyxScixyLHMpLGthKHFzLnNldCguNSwtLjUsMCksTHIsbyxScixyLHMpLGthKE9hLnNldCguNSwuNSwwKSxMcixvLFJyLHIscyksRmcuc2V0KDAsMCksQXUuc2V0KDEsMCksemcuc2V0KDEsMSk7bGV0IGE9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoQmEscXMsT2EsITEsR3MpO2lmKGE9PT1udWxsJiYoa2EocXMuc2V0KC0uNSwuNSwwKSxMcixvLFJyLHIscyksQXUuc2V0KDAsMSksYT10LnJheS5pbnRlcnNlY3RUcmlhbmdsZShCYSxPYSxxcywhMSxHcyksYT09PW51bGwpKXJldHVybjtsZXQgbD10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhHcyk7bDx0Lm5lYXJ8fGw+dC5mYXJ8fGUucHVzaCh7ZGlzdGFuY2U6bCxwb2ludDpHcy5jbG9uZSgpLHV2OnJlLmdldFVWKEdzLEJhLHFzLE9hLEZnLEF1LHpnLG5ldyBLKSxmYWNlOm51bGwsb2JqZWN0OnRoaXN9KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHQuY2VudGVyIT09dm9pZCAwJiZ0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpc319O1p1LnByb3RvdHlwZS5pc1Nwcml0ZT0hMDtmdW5jdGlvbiBrYShuLHQsZSxpLHIscyl7UHIuc3ViVmVjdG9ycyhuLGUpLmFkZFNjYWxhciguNSkubXVsdGlwbHkoaSksciE9PXZvaWQgMD8oV3MueD1zKlByLngtcipQci55LFdzLnk9cipQci54K3MqUHIueSk6V3MuY29weShQciksbi5jb3B5KHQpLG4ueCs9V3MueCxuLnkrPVdzLnksbi5hcHBseU1hdHJpeDQoRTApfXZhciBVZz1uZXcgVCxCZz1uZXcgV3QsT2c9bmV3IFd0LE1FPW5ldyBULGtnPW5ldyB3dCxmbD1jbGFzcyBleHRlbmRzIG9le2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlNraW5uZWRNZXNoIix0aGlzLmJpbmRNb2RlPSJhdHRhY2hlZCIsdGhpcy5iaW5kTWF0cml4PW5ldyB3dCx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlPW5ldyB3dH1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYmluZE1vZGU9dC5iaW5kTW9kZSx0aGlzLmJpbmRNYXRyaXguY29weSh0LmJpbmRNYXRyaXgpLHRoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0LmJpbmRNYXRyaXhJbnZlcnNlKSx0aGlzLnNrZWxldG9uPXQuc2tlbGV0b24sdGhpc31iaW5kKHQsZSl7dGhpcy5za2VsZXRvbj10LGU9PT12b2lkIDAmJih0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKSx0aGlzLnNrZWxldG9uLmNhbGN1bGF0ZUludmVyc2VzKCksZT10aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmJpbmRNYXRyaXguY29weShlKSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkoZSkuaW52ZXJ0KCl9cG9zZSgpe3RoaXMuc2tlbGV0b24ucG9zZSgpfW5vcm1hbGl6ZVNraW5XZWlnaHRzKCl7bGV0IHQ9bmV3IFd0LGU9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQ7Zm9yKGxldCBpPTAscj1lLmNvdW50O2k8cjtpKyspe3QueD1lLmdldFgoaSksdC55PWUuZ2V0WShpKSx0Lno9ZS5nZXRaKGkpLHQudz1lLmdldFcoaSk7bGV0IHM9MS90Lm1hbmhhdHRhbkxlbmd0aCgpO3MhPT0xLzA/dC5tdWx0aXBseVNjYWxhcihzKTp0LnNldCgxLDAsMCwwKSxlLnNldFhZWlcoaSx0LngsdC55LHQueix0LncpfX11cGRhdGVNYXRyaXhXb3JsZCh0KXtzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSx0aGlzLmJpbmRNb2RlPT09ImF0dGFjaGVkIj90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk6dGhpcy5iaW5kTW9kZT09PSJkZXRhY2hlZCI/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuYmluZE1hdHJpeCkuaW52ZXJ0KCk6Y29uc29sZS53YXJuKCJUSFJFRS5Ta2lubmVkTWVzaDogVW5yZWNvZ25pemVkIGJpbmRNb2RlOiAiK3RoaXMuYmluZE1vZGUpfWJvbmVUcmFuc2Zvcm0odCxlKXtsZXQgaT10aGlzLnNrZWxldG9uLHI9dGhpcy5nZW9tZXRyeTtCZy5mcm9tQnVmZmVyQXR0cmlidXRlKHIuYXR0cmlidXRlcy5za2luSW5kZXgsdCksT2cuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxVZy5jb3B5KGUpLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXgpLGUuc2V0KDAsMCwwKTtmb3IobGV0IHM9MDtzPDQ7cysrKXtsZXQgbz1PZy5nZXRDb21wb25lbnQocyk7aWYobyE9PTApe2xldCBhPUJnLmdldENvbXBvbmVudChzKTtrZy5tdWx0aXBseU1hdHJpY2VzKGkuYm9uZXNbYV0ubWF0cml4V29ybGQsaS5ib25lSW52ZXJzZXNbYV0pLGUuYWRkU2NhbGVkVmVjdG9yKE1FLmNvcHkoVWcpLmFwcGx5TWF0cml4NChrZyksbyl9fXJldHVybiBlLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXhJbnZlcnNlKX19O2ZsLnByb3RvdHlwZS5pc1NraW5uZWRNZXNoPSEwO3ZhciBKdT1jbGFzcyBleHRlbmRzIGt0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkJvbmUifX07SnUucHJvdG90eXBlLmlzQm9uZT0hMDt2YXIgJHU9Y2xhc3MgZXh0ZW5kcyBhZXtjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLGk9MSxyLHMsbyxhLGwsYz1mZSx1PWZlLGgsZil7c3VwZXIobnVsbCxvLGEsbCxjLHUscixzLGgsZiksdGhpcy5pbWFnZT17ZGF0YTp0LHdpZHRoOmUsaGVpZ2h0Oml9LHRoaXMubWFnRmlsdGVyPWMsdGhpcy5taW5GaWx0ZXI9dSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTF9fTskdS5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDt2YXIgZm89Y2xhc3MgZXh0ZW5kcyBRdHtjb25zdHJ1Y3Rvcih0LGUsaSxyPTEpe3R5cGVvZiBpPT0ibnVtYmVyIiYmKHI9aSxpPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKSxzdXBlcih0LGUsaSksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXJ9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9dC5tZXNoUGVyQXR0cmlidXRlLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsdC5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMCx0fX07Zm8ucHJvdG90eXBlLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwO3ZhciBIZz1uZXcgd3QsVmc9bmV3IHd0LEhhPVtdLFhzPW5ldyBvZSxLdT1jbGFzcyBleHRlbmRzIG9le2NvbnN0cnVjdG9yKHQsZSxpKXtzdXBlcih0LGUpLHRoaXMuaW5zdGFuY2VNYXRyaXg9bmV3IGZvKG5ldyBGbG9hdDMyQXJyYXkoaSoxNiksMTYpLHRoaXMuaW5zdGFuY2VDb2xvcj1udWxsLHRoaXMuY291bnQ9aSx0aGlzLmZydXN0dW1DdWxsZWQ9ITF9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmluc3RhbmNlTWF0cml4LmNvcHkodC5pbnN0YW5jZU1hdHJpeCksdC5pbnN0YW5jZUNvbG9yIT09bnVsbCYmKHRoaXMuaW5zdGFuY2VDb2xvcj10Lmluc3RhbmNlQ29sb3IuY2xvbmUoKSksdGhpcy5jb3VudD10LmNvdW50LHRoaXN9Z2V0Q29sb3JBdCh0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSx0KjMpfWdldE1hdHJpeEF0KHQsZSl7ZS5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZU1hdHJpeC5hcnJheSx0KjE2KX1yYXljYXN0KHQsZSl7bGV0IGk9dGhpcy5tYXRyaXhXb3JsZCxyPXRoaXMuY291bnQ7aWYoWHMuZ2VvbWV0cnk9dGhpcy5nZW9tZXRyeSxYcy5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLFhzLm1hdGVyaWFsIT09dm9pZCAwKWZvcihsZXQgcz0wO3M8cjtzKyspe3RoaXMuZ2V0TWF0cml4QXQocyxIZyksVmcubXVsdGlwbHlNYXRyaWNlcyhpLEhnKSxYcy5tYXRyaXhXb3JsZD1WZyxYcy5yYXljYXN0KHQsSGEpO2ZvcihsZXQgbz0wLGE9SGEubGVuZ3RoO288YTtvKyspe2xldCBsPUhhW29dO2wuaW5zdGFuY2VJZD1zLGwub2JqZWN0PXRoaXMsZS5wdXNoKGwpfUhhLmxlbmd0aD0wfX1zZXRDb2xvckF0KHQsZSl7dGhpcy5pbnN0YW5jZUNvbG9yPT09bnVsbCYmKHRoaXMuaW5zdGFuY2VDb2xvcj1uZXcgZm8obmV3IEZsb2F0MzJBcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmNvdW50KjMpLDMpKSxlLnRvQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LHQqMyl9c2V0TWF0cml4QXQodCxlKXtlLnRvQXJyYXkodGhpcy5pbnN0YW5jZU1hdHJpeC5hcnJheSx0KjE2KX11cGRhdGVNb3JwaFRhcmdldHMoKXt9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19O0t1LnByb3RvdHlwZS5pc0luc3RhbmNlZE1lc2g9ITA7dmFyIHpuPWNsYXNzIGV4dGVuZHMgeGV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBmdCgxNjc3NzIxNSksdGhpcy5saW5ld2lkdGg9MSx0aGlzLmxpbmVjYXA9InJvdW5kIix0aGlzLmxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5saW5ld2lkdGg9dC5saW5ld2lkdGgsdGhpcy5saW5lY2FwPXQubGluZWNhcCx0aGlzLmxpbmVqb2luPXQubGluZWpvaW4sdGhpc319O3puLnByb3RvdHlwZS5pc0xpbmVCYXNpY01hdGVyaWFsPSEwO3ZhciBHZz1uZXcgVCxXZz1uZXcgVCxxZz1uZXcgd3QsQ3U9bmV3IG9pLFZhPW5ldyBzaSxwbz1jbGFzcyBleHRlbmRzIGt0e2NvbnN0cnVjdG9yKHQ9bmV3IEh0LGU9bmV3IHpuKXtzdXBlcigpLHRoaXMudHlwZT0iTGluZSIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYodC5pbmRleD09PW51bGwpe2xldCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixpPVswXTtmb3IobGV0IHI9MSxzPWUuY291bnQ7cjxzO3IrKylHZy5mcm9tQnVmZmVyQXR0cmlidXRlKGUsci0xKSxXZy5mcm9tQnVmZmVyQXR0cmlidXRlKGUsciksaVtyXT1pW3ItMV0saVtyXSs9R2cuZGlzdGFuY2VUbyhXZyk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IGVlKGksMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIHQuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9cmF5Y2FzdCh0LGUpe2xldCBpPXRoaXMuZ2VvbWV0cnkscj10aGlzLm1hdHJpeFdvcmxkLHM9dC5wYXJhbXMuTGluZS50aHJlc2hvbGQsbz1pLmRyYXdSYW5nZTtpZihpLmJvdW5kaW5nU3BoZXJlPT09bnVsbCYmaS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxWYS5jb3B5KGkuYm91bmRpbmdTcGhlcmUpLFZhLmFwcGx5TWF0cml4NChyKSxWYS5yYWRpdXMrPXMsdC5yYXkuaW50ZXJzZWN0c1NwaGVyZShWYSk9PT0hMSlyZXR1cm47cWcuY29weShyKS5pbnZlcnQoKSxDdS5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQocWcpO2xldCBhPXMvKCh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMyksbD1hKmEsYz1uZXcgVCx1PW5ldyBULGg9bmV3IFQsZj1uZXcgVCxkPXRoaXMuaXNMaW5lU2VnbWVudHM/MjoxO2lmKGkuaXNCdWZmZXJHZW9tZXRyeSl7bGV0IGc9aS5pbmRleCx2PWkuYXR0cmlidXRlcy5wb3NpdGlvbjtpZihnIT09bnVsbCl7bGV0IG09TWF0aC5tYXgoMCxvLnN0YXJ0KSxwPU1hdGgubWluKGcuY291bnQsby5zdGFydCtvLmNvdW50KTtmb3IobGV0IGI9bSxfPXAtMTtiPF87Yis9ZCl7bGV0IFM9Zy5nZXRYKGIpLEw9Zy5nZXRYKGIrMSk7aWYoYy5mcm9tQnVmZmVyQXR0cmlidXRlKHYsUyksdS5mcm9tQnVmZmVyQXR0cmlidXRlKHYsTCksQ3UuZGlzdGFuY2VTcVRvU2VnbWVudChjLHUsZixoKT5sKWNvbnRpbnVlO2YuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2xldCBIPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKGYpO0g8dC5uZWFyfHxIPnQuZmFyfHxlLnB1c2goe2Rpc3RhbmNlOkgscG9pbnQ6aC5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxpbmRleDpiLGZhY2U6bnVsbCxmYWNlSW5kZXg6bnVsbCxvYmplY3Q6dGhpc30pfX1lbHNle2xldCBtPU1hdGgubWF4KDAsby5zdGFydCkscD1NYXRoLm1pbih2LmNvdW50LG8uc3RhcnQrby5jb3VudCk7Zm9yKGxldCBiPW0sXz1wLTE7YjxfO2IrPWQpe2lmKGMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh2LGIpLHUuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh2LGIrMSksQ3UuZGlzdGFuY2VTcVRvU2VnbWVudChjLHUsZixoKT5sKWNvbnRpbnVlO2YuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2xldCBMPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKGYpO0w8dC5uZWFyfHxMPnQuZmFyfHxlLnB1c2goe2Rpc3RhbmNlOkwscG9pbnQ6aC5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxpbmRleDpiLGZhY2U6bnVsbCxmYWNlSW5kZXg6bnVsbCxvYmplY3Q6dGhpc30pfX19ZWxzZSBpLmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9dXBkYXRlTW9ycGhUYXJnZXRzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2xldCBlPXQubW9ycGhBdHRyaWJ1dGVzLGk9T2JqZWN0LmtleXMoZSk7aWYoaS5sZW5ndGg+MCl7bGV0IHI9ZVtpWzBdXTtpZihyIT09dm9pZCAwKXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IHM9MCxvPXIubGVuZ3RoO3M8bztzKyspe2xldCBhPXJbc10ubmFtZXx8U3RyaW5nKHMpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbYV09c319fX1lbHNle2xldCBlPXQubW9ycGhUYXJnZXRzO2UhPT12b2lkIDAmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUudXBkYXRlTW9ycGhUYXJnZXRzKCkgZG9lcyBub3Qgc3VwcG9ydCBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fX07cG8ucHJvdG90eXBlLmlzTGluZT0hMDt2YXIgWGc9bmV3IFQsWWc9bmV3IFQsbW89Y2xhc3MgZXh0ZW5kcyBwb3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lU2VnbWVudHMifWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYodC5pbmRleD09PW51bGwpe2xldCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixpPVtdO2ZvcihsZXQgcj0wLHM9ZS5jb3VudDtyPHM7cis9MilYZy5mcm9tQnVmZmVyQXR0cmlidXRlKGUsciksWWcuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHIrMSksaVtyXT1yPT09MD8wOmlbci0xXSxpW3IrMV09aVtyXStYZy5kaXN0YW5jZVRvKFlnKTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgZWUoaSwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9fTttby5wcm90b3R5cGUuaXNMaW5lU2VnbWVudHM9ITA7dmFyIFF1PWNsYXNzIGV4dGVuZHMgcG97Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iTGluZUxvb3AifX07UXUucHJvdG90eXBlLmlzTGluZUxvb3A9ITA7dmFyIGRsPWNsYXNzIGV4dGVuZHMgeGV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvaW50c01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBmdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5zaXplPTEsdGhpcy5zaXplQXR0ZW51YXRpb249ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuc2l6ZT10LnNpemUsdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc319O2RsLnByb3RvdHlwZS5pc1BvaW50c01hdGVyaWFsPSEwO3ZhciBaZz1uZXcgd3QsanU9bmV3IG9pLEdhPW5ldyBzaSxXYT1uZXcgVCx0aD1jbGFzcyBleHRlbmRzIGt0e2NvbnN0cnVjdG9yKHQ9bmV3IEh0LGU9bmV3IGRsKXtzdXBlcigpLHRoaXMudHlwZT0iUG9pbnRzIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9cmF5Y2FzdCh0LGUpe2xldCBpPXRoaXMuZ2VvbWV0cnkscj10aGlzLm1hdHJpeFdvcmxkLHM9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxvPWkuZHJhd1JhbmdlO2lmKGkuYm91bmRpbmdTcGhlcmU9PT1udWxsJiZpLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEdhLmNvcHkoaS5ib3VuZGluZ1NwaGVyZSksR2EuYXBwbHlNYXRyaXg0KHIpLEdhLnJhZGl1cys9cyx0LnJheS5pbnRlcnNlY3RzU3BoZXJlKEdhKT09PSExKXJldHVybjtaZy5jb3B5KHIpLmludmVydCgpLGp1LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChaZyk7bGV0IGE9cy8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxsPWEqYTtpZihpLmlzQnVmZmVyR2VvbWV0cnkpe2xldCBjPWkuaW5kZXgsaD1pLmF0dHJpYnV0ZXMucG9zaXRpb247aWYoYyE9PW51bGwpe2xldCBmPU1hdGgubWF4KDAsby5zdGFydCksZD1NYXRoLm1pbihjLmNvdW50LG8uc3RhcnQrby5jb3VudCk7Zm9yKGxldCBnPWYseD1kO2c8eDtnKyspe2xldCB2PWMuZ2V0WChnKTtXYS5mcm9tQnVmZmVyQXR0cmlidXRlKGgsdiksSmcoV2EsdixsLHIsdCxlLHRoaXMpfX1lbHNle2xldCBmPU1hdGgubWF4KDAsby5zdGFydCksZD1NYXRoLm1pbihoLmNvdW50LG8uc3RhcnQrby5jb3VudCk7Zm9yKGxldCBnPWYseD1kO2c8eDtnKyspV2EuZnJvbUJ1ZmZlckF0dHJpYnV0ZShoLGcpLEpnKFdhLGcsbCxyLHQsZSx0aGlzKX19ZWxzZSBjb25zb2xlLmVycm9yKCJUSFJFRS5Qb2ludHMucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9dXBkYXRlTW9ycGhUYXJnZXRzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2xldCBlPXQubW9ycGhBdHRyaWJ1dGVzLGk9T2JqZWN0LmtleXMoZSk7aWYoaS5sZW5ndGg+MCl7bGV0IHI9ZVtpWzBdXTtpZihyIT09dm9pZCAwKXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IHM9MCxvPXIubGVuZ3RoO3M8bztzKyspe2xldCBhPXJbc10ubmFtZXx8U3RyaW5nKHMpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbYV09c319fX1lbHNle2xldCBlPXQubW9ycGhUYXJnZXRzO2UhPT12b2lkIDAmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlBvaW50cy51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19fTt0aC5wcm90b3R5cGUuaXNQb2ludHM9ITA7ZnVuY3Rpb24gSmcobix0LGUsaSxyLHMsbyl7bGV0IGE9anUuZGlzdGFuY2VTcVRvUG9pbnQobik7aWYoYTxlKXtsZXQgbD1uZXcgVDtqdS5jbG9zZXN0UG9pbnRUb1BvaW50KG4sbCksbC5hcHBseU1hdHJpeDQoaSk7bGV0IGM9ci5yYXkub3JpZ2luLmRpc3RhbmNlVG8obCk7aWYoYzxyLm5lYXJ8fGM+ci5mYXIpcmV0dXJuO3MucHVzaCh7ZGlzdGFuY2U6YyxkaXN0YW5jZVRvUmF5Ok1hdGguc3FydChhKSxwb2ludDpsLGluZGV4OnQsZmFjZTpudWxsLG9iamVjdDpvfSl9fXZhciBlaD1jbGFzcyBleHRlbmRzIGFle2NvbnN0cnVjdG9yKHQsZSxpLHIscyxvLGEsbCxjKXtzdXBlcih0LGUsaSxyLHMsbyxhLGwsYyksdGhpcy5taW5GaWx0ZXI9byE9PXZvaWQgMD9vOmJlLHRoaXMubWFnRmlsdGVyPXMhPT12b2lkIDA/czpiZSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMTtsZXQgdT10aGlzO2Z1bmN0aW9uIGgoKXt1Lm5lZWRzVXBkYXRlPSEwLHQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhoKX0icmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayJpbiB0JiZ0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soaCl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5pbWFnZSkuY29weSh0aGlzKX11cGRhdGUoKXtsZXQgdD10aGlzLmltYWdlOyJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQ9PT0hMSYmdC5yZWFkeVN0YXRlPj10LkhBVkVfQ1VSUkVOVF9EQVRBJiYodGhpcy5uZWVkc1VwZGF0ZT0hMCl9fTtlaC5wcm90b3R5cGUuaXNWaWRlb1RleHR1cmU9ITA7dmFyIG5oPWNsYXNzIGV4dGVuZHMgYWV7Y29uc3RydWN0b3IodCxlLGkpe3N1cGVyKHt3aWR0aDp0LGhlaWdodDplfSksdGhpcy5mb3JtYXQ9aSx0aGlzLm1hZ0ZpbHRlcj1mZSx0aGlzLm1pbkZpbHRlcj1mZSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLm5lZWRzVXBkYXRlPSEwfX07bmgucHJvdG90eXBlLmlzRnJhbWVidWZmZXJUZXh0dXJlPSEwO3ZhciBpaD1jbGFzcyBleHRlbmRzIGFle2NvbnN0cnVjdG9yKHQsZSxpLHIscyxvLGEsbCxjLHUsaCxmKXtzdXBlcihudWxsLG8sYSxsLGMsdSxyLHMsaCxmKSx0aGlzLmltYWdlPXt3aWR0aDplLGhlaWdodDppfSx0aGlzLm1pcG1hcHM9dCx0aGlzLmZsaXBZPSExLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfX07aWgucHJvdG90eXBlLmlzQ29tcHJlc3NlZFRleHR1cmU9ITA7dmFyIHJoPWNsYXNzIGV4dGVuZHMgYWV7Y29uc3RydWN0b3IodCxlLGkscixzLG8sYSxsLGMpe3N1cGVyKHQsZSxpLHIscyxvLGEsbCxjKSx0aGlzLm5lZWRzVXBkYXRlPSEwfX07cmgucHJvdG90eXBlLmlzQ2FudmFzVGV4dHVyZT0hMDt2YXIgWXI9Y2xhc3MgZXh0ZW5kcyBIdHtjb25zdHJ1Y3Rvcih0PTEsZT04LGk9MCxyPU1hdGguUEkqMil7c3VwZXIoKSx0aGlzLnR5cGU9IkNpcmNsZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHNlZ21lbnRzOmUsdGhldGFTdGFydDppLHRoZXRhTGVuZ3RoOnJ9LGU9TWF0aC5tYXgoMyxlKTtsZXQgcz1bXSxvPVtdLGE9W10sbD1bXSxjPW5ldyBULHU9bmV3IEs7by5wdXNoKDAsMCwwKSxhLnB1c2goMCwwLDEpLGwucHVzaCguNSwuNSk7Zm9yKGxldCBoPTAsZj0zO2g8PWU7aCsrLGYrPTMpe2xldCBkPWkraC9lKnI7Yy54PXQqTWF0aC5jb3MoZCksYy55PXQqTWF0aC5zaW4oZCksby5wdXNoKGMueCxjLnksYy56KSxhLnB1c2goMCwwLDEpLHUueD0ob1tmXS90KzEpLzIsdS55PShvW2YrMV0vdCsxKS8yLGwucHVzaCh1LngsdS55KX1mb3IobGV0IGg9MTtoPD1lO2grKylzLnB1c2goaCxoKzEsMCk7dGhpcy5zZXRJbmRleChzKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlZShvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZWUoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZWUobCwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgWXIodC5yYWRpdXMsdC5zZWdtZW50cyx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fTt2YXIgaGs9bmV3IFQsZms9bmV3IFQsZGs9bmV3IFQscGs9bmV3IHJlO3ZhciBGZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iQ3VydmUiLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPTIwMH1nZXRQb2ludCgpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIiksbnVsbH1nZXRQb2ludEF0KHQsZSl7bGV0IGk9dGhpcy5nZXRVdG9UbWFwcGluZyh0KTtyZXR1cm4gdGhpcy5nZXRQb2ludChpLGUpfWdldFBvaW50cyh0PTUpe2xldCBlPVtdO2ZvcihsZXQgaT0wO2k8PXQ7aSsrKWUucHVzaCh0aGlzLmdldFBvaW50KGkvdCkpO3JldHVybiBlfWdldFNwYWNlZFBvaW50cyh0PTUpe2xldCBlPVtdO2ZvcihsZXQgaT0wO2k8PXQ7aSsrKWUucHVzaCh0aGlzLmdldFBvaW50QXQoaS90KSk7cmV0dXJuIGV9Z2V0TGVuZ3RoKCl7bGV0IHQ9dGhpcy5nZXRMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19Z2V0TGVuZ3Rocyh0PXRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zKXtpZih0aGlzLmNhY2hlQXJjTGVuZ3RocyYmdGhpcy5jYWNoZUFyY0xlbmd0aHMubGVuZ3RoPT09dCsxJiYhdGhpcy5uZWVkc1VwZGF0ZSlyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM7dGhpcy5uZWVkc1VwZGF0ZT0hMTtsZXQgZT1bXSxpLHI9dGhpcy5nZXRQb2ludCgwKSxzPTA7ZS5wdXNoKDApO2ZvcihsZXQgbz0xO288PXQ7bysrKWk9dGhpcy5nZXRQb2ludChvL3QpLHMrPWkuZGlzdGFuY2VUbyhyKSxlLnB1c2gocykscj1pO3JldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Rocz1lLGV9dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5nZXRMZW5ndGhzKCl9Z2V0VXRvVG1hcHBpbmcodCxlKXtsZXQgaT10aGlzLmdldExlbmd0aHMoKSxyPTAscz1pLmxlbmd0aCxvO2U/bz1lOm89dCppW3MtMV07bGV0IGE9MCxsPXMtMSxjO2Zvcig7YTw9bDspaWYocj1NYXRoLmZsb29yKGErKGwtYSkvMiksYz1pW3JdLW8sYzwwKWE9cisxO2Vsc2UgaWYoYz4wKWw9ci0xO2Vsc2V7bD1yO2JyZWFrfWlmKHI9bCxpW3JdPT09bylyZXR1cm4gci8ocy0xKTtsZXQgdT1pW3JdLGY9aVtyKzFdLXUsZD0oby11KS9mO3JldHVybihyK2QpLyhzLTEpfWdldFRhbmdlbnQodCxlKXtsZXQgcj10LTFlLTQscz10KzFlLTQ7cjwwJiYocj0wKSxzPjEmJihzPTEpO2xldCBvPXRoaXMuZ2V0UG9pbnQociksYT10aGlzLmdldFBvaW50KHMpLGw9ZXx8KG8uaXNWZWN0b3IyP25ldyBLOm5ldyBUKTtyZXR1cm4gbC5jb3B5KGEpLnN1YihvKS5ub3JtYWxpemUoKSxsfWdldFRhbmdlbnRBdCh0LGUpe2xldCBpPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0VGFuZ2VudChpLGUpfWNvbXB1dGVGcmVuZXRGcmFtZXModCxlKXtsZXQgaT1uZXcgVCxyPVtdLHM9W10sbz1bXSxhPW5ldyBULGw9bmV3IHd0O2ZvcihsZXQgZD0wO2Q8PXQ7ZCsrKXtsZXQgZz1kL3Q7cltkXT10aGlzLmdldFRhbmdlbnRBdChnLG5ldyBUKX1zWzBdPW5ldyBULG9bMF09bmV3IFQ7bGV0IGM9TnVtYmVyLk1BWF9WQUxVRSx1PU1hdGguYWJzKHJbMF0ueCksaD1NYXRoLmFicyhyWzBdLnkpLGY9TWF0aC5hYnMoclswXS56KTt1PD1jJiYoYz11LGkuc2V0KDEsMCwwKSksaDw9YyYmKGM9aCxpLnNldCgwLDEsMCkpLGY8PWMmJmkuc2V0KDAsMCwxKSxhLmNyb3NzVmVjdG9ycyhyWzBdLGkpLm5vcm1hbGl6ZSgpLHNbMF0uY3Jvc3NWZWN0b3JzKHJbMF0sYSksb1swXS5jcm9zc1ZlY3RvcnMoclswXSxzWzBdKTtmb3IobGV0IGQ9MTtkPD10O2QrKyl7aWYoc1tkXT1zW2QtMV0uY2xvbmUoKSxvW2RdPW9bZC0xXS5jbG9uZSgpLGEuY3Jvc3NWZWN0b3JzKHJbZC0xXSxyW2RdKSxhLmxlbmd0aCgpPk51bWJlci5FUFNJTE9OKXthLm5vcm1hbGl6ZSgpO2xldCBnPU1hdGguYWNvcyhJZShyW2QtMV0uZG90KHJbZF0pLC0xLDEpKTtzW2RdLmFwcGx5TWF0cml4NChsLm1ha2VSb3RhdGlvbkF4aXMoYSxnKSl9b1tkXS5jcm9zc1ZlY3RvcnMocltkXSxzW2RdKX1pZihlPT09ITApe2xldCBkPU1hdGguYWNvcyhJZShzWzBdLmRvdChzW3RdKSwtMSwxKSk7ZC89dCxyWzBdLmRvdChhLmNyb3NzVmVjdG9ycyhzWzBdLHNbdF0pKT4wJiYoZD0tZCk7Zm9yKGxldCBnPTE7Zzw9dDtnKyspc1tnXS5hcHBseU1hdHJpeDQobC5tYWtlUm90YXRpb25BeGlzKHJbZ10sZCpnKSksb1tnXS5jcm9zc1ZlY3RvcnMocltnXSxzW2ddKX1yZXR1cm57dGFuZ2VudHM6cixub3JtYWxzOnMsYmlub3JtYWxzOm99fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfXRvSlNPTigpe2xldCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQ3VydmUiLGdlbmVyYXRvcjoiQ3VydmUudG9KU09OIn19O3JldHVybiB0LmFyY0xlbmd0aERpdmlzaW9ucz10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyx0LnR5cGU9dGhpcy50eXBlLHR9ZnJvbUpTT04odCl7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXQuYXJjTGVuZ3RoRGl2aXNpb25zLHRoaXN9fSxacj1jbGFzcyBleHRlbmRzIEZle2NvbnN0cnVjdG9yKHQ9MCxlPTAsaT0xLHI9MSxzPTAsbz1NYXRoLlBJKjIsYT0hMSxsPTApe3N1cGVyKCksdGhpcy50eXBlPSJFbGxpcHNlQ3VydmUiLHRoaXMuYVg9dCx0aGlzLmFZPWUsdGhpcy54UmFkaXVzPWksdGhpcy55UmFkaXVzPXIsdGhpcy5hU3RhcnRBbmdsZT1zLHRoaXMuYUVuZEFuZ2xlPW8sdGhpcy5hQ2xvY2t3aXNlPWEsdGhpcy5hUm90YXRpb249bH1nZXRQb2ludCh0LGUpe2xldCBpPWV8fG5ldyBLLHI9TWF0aC5QSSoyLHM9dGhpcy5hRW5kQW5nbGUtdGhpcy5hU3RhcnRBbmdsZSxvPU1hdGguYWJzKHMpPE51bWJlci5FUFNJTE9OO2Zvcig7czwwOylzKz1yO2Zvcig7cz5yOylzLT1yO3M8TnVtYmVyLkVQU0lMT04mJihvP3M9MDpzPXIpLHRoaXMuYUNsb2Nrd2lzZT09PSEwJiYhbyYmKHM9PT1yP3M9LXI6cz1zLXIpO2xldCBhPXRoaXMuYVN0YXJ0QW5nbGUrdCpzLGw9dGhpcy5hWCt0aGlzLnhSYWRpdXMqTWF0aC5jb3MoYSksYz10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihhKTtpZih0aGlzLmFSb3RhdGlvbiE9PTApe2xldCB1PU1hdGguY29zKHRoaXMuYVJvdGF0aW9uKSxoPU1hdGguc2luKHRoaXMuYVJvdGF0aW9uKSxmPWwtdGhpcy5hWCxkPWMtdGhpcy5hWTtsPWYqdS1kKmgrdGhpcy5hWCxjPWYqaCtkKnUrdGhpcy5hWX1yZXR1cm4gaS5zZXQobCxjKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuYVg9dC5hWCx0aGlzLmFZPXQuYVksdGhpcy54UmFkaXVzPXQueFJhZGl1cyx0aGlzLnlSYWRpdXM9dC55UmFkaXVzLHRoaXMuYVN0YXJ0QW5nbGU9dC5hU3RhcnRBbmdsZSx0aGlzLmFFbmRBbmdsZT10LmFFbmRBbmdsZSx0aGlzLmFDbG9ja3dpc2U9dC5hQ2xvY2t3aXNlLHRoaXMuYVJvdGF0aW9uPXQuYVJvdGF0aW9uLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQuYVg9dGhpcy5hWCx0LmFZPXRoaXMuYVksdC54UmFkaXVzPXRoaXMueFJhZGl1cyx0LnlSYWRpdXM9dGhpcy55UmFkaXVzLHQuYVN0YXJ0QW5nbGU9dGhpcy5hU3RhcnRBbmdsZSx0LmFFbmRBbmdsZT10aGlzLmFFbmRBbmdsZSx0LmFDbG9ja3dpc2U9dGhpcy5hQ2xvY2t3aXNlLHQuYVJvdGF0aW9uPXRoaXMuYVJvdGF0aW9uLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMuYVg9dC5hWCx0aGlzLmFZPXQuYVksdGhpcy54UmFkaXVzPXQueFJhZGl1cyx0aGlzLnlSYWRpdXM9dC55UmFkaXVzLHRoaXMuYVN0YXJ0QW5nbGU9dC5hU3RhcnRBbmdsZSx0aGlzLmFFbmRBbmdsZT10LmFFbmRBbmdsZSx0aGlzLmFDbG9ja3dpc2U9dC5hQ2xvY2t3aXNlLHRoaXMuYVJvdGF0aW9uPXQuYVJvdGF0aW9uLHRoaXN9fTtaci5wcm90b3R5cGUuaXNFbGxpcHNlQ3VydmU9ITA7dmFyIHBsPWNsYXNzIGV4dGVuZHMgWnJ7Y29uc3RydWN0b3IodCxlLGkscixzLG8pe3N1cGVyKHQsZSxpLGkscixzLG8pLHRoaXMudHlwZT0iQXJjQ3VydmUifX07cGwucHJvdG90eXBlLmlzQXJjQ3VydmU9ITA7ZnVuY3Rpb24gUWgoKXtsZXQgbj0wLHQ9MCxlPTAsaT0wO2Z1bmN0aW9uIHIocyxvLGEsbCl7bj1zLHQ9YSxlPS0zKnMrMypvLTIqYS1sLGk9MipzLTIqbythK2x9cmV0dXJue2luaXRDYXRtdWxsUm9tOmZ1bmN0aW9uKHMsbyxhLGwsYyl7cihvLGEsYyooYS1zKSxjKihsLW8pKX0saW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tOmZ1bmN0aW9uKHMsbyxhLGwsYyx1LGgpe2xldCBmPShvLXMpL2MtKGEtcykvKGMrdSkrKGEtbykvdSxkPShhLW8pL3UtKGwtbykvKHUraCkrKGwtYSkvaDtmKj11LGQqPXUscihvLGEsZixkKX0sY2FsYzpmdW5jdGlvbihzKXtsZXQgbz1zKnMsYT1vKnM7cmV0dXJuIG4rdCpzK2UqbytpKmF9fX12YXIgcWE9bmV3IFQsUnU9bmV3IFFoLEx1PW5ldyBRaCxQdT1uZXcgUWgsbWw9Y2xhc3MgZXh0ZW5kcyBGZXtjb25zdHJ1Y3Rvcih0PVtdLGU9ITEsaT0iY2VudHJpcGV0YWwiLHI9LjUpe3N1cGVyKCksdGhpcy50eXBlPSJDYXRtdWxsUm9tQ3VydmUzIix0aGlzLnBvaW50cz10LHRoaXMuY2xvc2VkPWUsdGhpcy5jdXJ2ZVR5cGU9aSx0aGlzLnRlbnNpb249cn1nZXRQb2ludCh0LGU9bmV3IFQpe2xldCBpPWUscj10aGlzLnBvaW50cyxzPXIubGVuZ3RoLG89KHMtKHRoaXMuY2xvc2VkPzA6MSkpKnQsYT1NYXRoLmZsb29yKG8pLGw9by1hO3RoaXMuY2xvc2VkP2ErPWE+MD8wOihNYXRoLmZsb29yKE1hdGguYWJzKGEpL3MpKzEpKnM6bD09PTAmJmE9PT1zLTEmJihhPXMtMixsPTEpO2xldCBjLHU7dGhpcy5jbG9zZWR8fGE+MD9jPXJbKGEtMSklc106KHFhLnN1YlZlY3RvcnMoclswXSxyWzFdKS5hZGQoclswXSksYz1xYSk7bGV0IGg9clthJXNdLGY9clsoYSsxKSVzXTtpZih0aGlzLmNsb3NlZHx8YSsyPHM/dT1yWyhhKzIpJXNdOihxYS5zdWJWZWN0b3JzKHJbcy0xXSxyW3MtMl0pLmFkZChyW3MtMV0pLHU9cWEpLHRoaXMuY3VydmVUeXBlPT09ImNlbnRyaXBldGFsInx8dGhpcy5jdXJ2ZVR5cGU9PT0iY2hvcmRhbCIpe2xldCBkPXRoaXMuY3VydmVUeXBlPT09ImNob3JkYWwiPy41Oi4yNSxnPU1hdGgucG93KGMuZGlzdGFuY2VUb1NxdWFyZWQoaCksZCkseD1NYXRoLnBvdyhoLmRpc3RhbmNlVG9TcXVhcmVkKGYpLGQpLHY9TWF0aC5wb3coZi5kaXN0YW5jZVRvU3F1YXJlZCh1KSxkKTt4PDFlLTQmJih4PTEpLGc8MWUtNCYmKGc9eCksdjwxZS00JiYodj14KSxSdS5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYy54LGgueCxmLngsdS54LGcseCx2KSxMdS5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYy55LGgueSxmLnksdS55LGcseCx2KSxQdS5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYy56LGgueixmLnosdS56LGcseCx2KX1lbHNlIHRoaXMuY3VydmVUeXBlPT09ImNhdG11bGxyb20iJiYoUnUuaW5pdENhdG11bGxSb20oYy54LGgueCxmLngsdS54LHRoaXMudGVuc2lvbiksTHUuaW5pdENhdG11bGxSb20oYy55LGgueSxmLnksdS55LHRoaXMudGVuc2lvbiksUHUuaW5pdENhdG11bGxSb20oYy56LGgueixmLnosdS56LHRoaXMudGVuc2lvbikpO3JldHVybiBpLnNldChSdS5jYWxjKGwpLEx1LmNhbGMobCksUHUuY2FsYyhsKSksaX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsaT10LnBvaW50cy5sZW5ndGg7ZTxpO2UrKyl7bGV0IHI9dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaChyLmNsb25lKCkpfXJldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsaT10aGlzLnBvaW50cy5sZW5ndGg7ZTxpO2UrKyl7bGV0IHI9dGhpcy5wb2ludHNbZV07dC5wb2ludHMucHVzaChyLnRvQXJyYXkoKSl9cmV0dXJuIHQuY2xvc2VkPXRoaXMuY2xvc2VkLHQuY3VydmVUeXBlPXRoaXMuY3VydmVUeXBlLHQudGVuc2lvbj10aGlzLnRlbnNpb24sdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxpPXQucG9pbnRzLmxlbmd0aDtlPGk7ZSsrKXtsZXQgcj10LnBvaW50c1tlXTt0aGlzLnBvaW50cy5wdXNoKG5ldyBUKCkuZnJvbUFycmF5KHIpKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfX07bWwucHJvdG90eXBlLmlzQ2F0bXVsbFJvbUN1cnZlMz0hMDtmdW5jdGlvbiAkZyhuLHQsZSxpLHIpe2xldCBzPShpLXQpKi41LG89KHItZSkqLjUsYT1uKm4sbD1uKmE7cmV0dXJuKDIqZS0yKmkrcytvKSpsKygtMyplKzMqaS0yKnMtbykqYStzKm4rZX1mdW5jdGlvbiBiRShuLHQpe2xldCBlPTEtbjtyZXR1cm4gZSplKnR9ZnVuY3Rpb24gU0Uobix0KXtyZXR1cm4gMiooMS1uKSpuKnR9ZnVuY3Rpb24gRUUobix0KXtyZXR1cm4gbipuKnR9ZnVuY3Rpb24gUXMobix0LGUsaSl7cmV0dXJuIGJFKG4sdCkrU0UobixlKStFRShuLGkpfWZ1bmN0aW9uIFRFKG4sdCl7bGV0IGU9MS1uO3JldHVybiBlKmUqZSp0fWZ1bmN0aW9uIEFFKG4sdCl7bGV0IGU9MS1uO3JldHVybiAzKmUqZSpuKnR9ZnVuY3Rpb24gQ0Uobix0KXtyZXR1cm4gMyooMS1uKSpuKm4qdH1mdW5jdGlvbiBSRShuLHQpe3JldHVybiBuKm4qbip0fWZ1bmN0aW9uIGpzKG4sdCxlLGkscil7cmV0dXJuIFRFKG4sdCkrQUUobixlKStDRShuLGkpK1JFKG4scil9dmFyIGdvPWNsYXNzIGV4dGVuZHMgRmV7Y29uc3RydWN0b3IodD1uZXcgSyxlPW5ldyBLLGk9bmV3IEsscj1uZXcgSyl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1pLHRoaXMudjM9cn1nZXRQb2ludCh0LGU9bmV3IEspe2xldCBpPWUscj10aGlzLnYwLHM9dGhpcy52MSxvPXRoaXMudjIsYT10aGlzLnYzO3JldHVybiBpLnNldChqcyh0LHIueCxzLngsby54LGEueCksanModCxyLnkscy55LG8ueSxhLnkpKSxpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHQudjM9dGhpcy52My50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpcy52My5mcm9tQXJyYXkodC52MyksdGhpc319O2dvLnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmU9ITA7dmFyIGdsPWNsYXNzIGV4dGVuZHMgRmV7Y29uc3RydWN0b3IodD1uZXcgVCxlPW5ldyBULGk9bmV3IFQscj1uZXcgVCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9aSx0aGlzLnYzPXJ9Z2V0UG9pbnQodCxlPW5ldyBUKXtsZXQgaT1lLHI9dGhpcy52MCxzPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gaS5zZXQoanModCxyLngscy54LG8ueCxhLngpLGpzKHQsci55LHMueSxvLnksYS55KSxqcyh0LHIueixzLnosby56LGEueikpLGl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX07Z2wucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZTM9ITA7dmFyIEpyPWNsYXNzIGV4dGVuZHMgRmV7Y29uc3RydWN0b3IodD1uZXcgSyxlPW5ldyBLKXtzdXBlcigpLHRoaXMudHlwZT0iTGluZUN1cnZlIix0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgSyl7bGV0IGk9ZTtyZXR1cm4gdD09PTE/aS5jb3B5KHRoaXMudjIpOihpLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLGkubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMudjEpKSxpfWdldFBvaW50QXQodCxlKXtyZXR1cm4gdGhpcy5nZXRQb2ludCh0LGUpfWdldFRhbmdlbnQodCxlKXtsZXQgaT1lfHxuZXcgSztyZXR1cm4gaS5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319O0pyLnByb3RvdHlwZS5pc0xpbmVDdXJ2ZT0hMDt2YXIgc2g9Y2xhc3MgZXh0ZW5kcyBGZXtjb25zdHJ1Y3Rvcih0PW5ldyBULGU9bmV3IFQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQ3VydmUzIix0aGlzLmlzTGluZUN1cnZlMz0hMCx0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgVCl7bGV0IGk9ZTtyZXR1cm4gdD09PTE/aS5jb3B5KHRoaXMudjIpOihpLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLGkubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMudjEpKSxpfWdldFBvaW50QXQodCxlKXtyZXR1cm4gdGhpcy5nZXRQb2ludCh0LGUpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319LHhvPWNsYXNzIGV4dGVuZHMgRmV7Y29uc3RydWN0b3IodD1uZXcgSyxlPW5ldyBLLGk9bmV3IEspe3N1cGVyKCksdGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZSIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPWl9Z2V0UG9pbnQodCxlPW5ldyBLKXtsZXQgaT1lLHI9dGhpcy52MCxzPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBpLnNldChRcyh0LHIueCxzLngsby54KSxRcyh0LHIueSxzLnksby55KSksaX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fTt4by5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZT0hMDt2YXIgeGw9Y2xhc3MgZXh0ZW5kcyBGZXtjb25zdHJ1Y3Rvcih0PW5ldyBULGU9bmV3IFQsaT1uZXcgVCl7c3VwZXIoKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlMyIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPWl9Z2V0UG9pbnQodCxlPW5ldyBUKXtsZXQgaT1lLHI9dGhpcy52MCxzPXRoaXMudjEsbz10aGlzLnYyO3JldHVybiBpLnNldChRcyh0LHIueCxzLngsby54KSxRcyh0LHIueSxzLnksby55KSxRcyh0LHIueixzLnosby56KSksaX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fTt4bC5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZTM9ITA7dmFyIHlvPWNsYXNzIGV4dGVuZHMgRmV7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwbGluZUN1cnZlIix0aGlzLnBvaW50cz10fWdldFBvaW50KHQsZT1uZXcgSyl7bGV0IGk9ZSxyPXRoaXMucG9pbnRzLHM9KHIubGVuZ3RoLTEpKnQsbz1NYXRoLmZsb29yKHMpLGE9cy1vLGw9cltvPT09MD9vOm8tMV0sYz1yW29dLHU9cltvPnIubGVuZ3RoLTI/ci5sZW5ndGgtMTpvKzFdLGg9cltvPnIubGVuZ3RoLTM/ci5sZW5ndGgtMTpvKzJdO3JldHVybiBpLnNldCgkZyhhLGwueCxjLngsdS54LGgueCksJGcoYSxsLnksYy55LHUueSxoLnkpKSxpfWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxpPXQucG9pbnRzLmxlbmd0aDtlPGk7ZSsrKXtsZXQgcj10LnBvaW50c1tlXTt0aGlzLnBvaW50cy5wdXNoKHIuY2xvbmUoKSl9cmV0dXJuIHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsaT10aGlzLnBvaW50cy5sZW5ndGg7ZTxpO2UrKyl7bGV0IHI9dGhpcy5wb2ludHNbZV07dC5wb2ludHMucHVzaChyLnRvQXJyYXkoKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsaT10LnBvaW50cy5sZW5ndGg7ZTxpO2UrKyl7bGV0IHI9dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaChuZXcgSygpLmZyb21BcnJheShyKSl9cmV0dXJuIHRoaXN9fTt5by5wcm90b3R5cGUuaXNTcGxpbmVDdXJ2ZT0hMDt2YXIgVDA9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6cGwsQ2F0bXVsbFJvbUN1cnZlMzptbCxDdWJpY0JlemllckN1cnZlOmdvLEN1YmljQmV6aWVyQ3VydmUzOmdsLEVsbGlwc2VDdXJ2ZTpacixMaW5lQ3VydmU6SnIsTGluZUN1cnZlMzpzaCxRdWFkcmF0aWNCZXppZXJDdXJ2ZTp4byxRdWFkcmF0aWNCZXppZXJDdXJ2ZTM6eGwsU3BsaW5lQ3VydmU6eW99KSxvaD1jbGFzcyBleHRlbmRzIEZle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1cnZlUGF0aCIsdGhpcy5jdXJ2ZXM9W10sdGhpcy5hdXRvQ2xvc2U9ITF9YWRkKHQpe3RoaXMuY3VydmVzLnB1c2godCl9Y2xvc2VQYXRoKCl7bGV0IHQ9dGhpcy5jdXJ2ZXNbMF0uZ2V0UG9pbnQoMCksZT10aGlzLmN1cnZlc1t0aGlzLmN1cnZlcy5sZW5ndGgtMV0uZ2V0UG9pbnQoMSk7dC5lcXVhbHMoZSl8fHRoaXMuY3VydmVzLnB1c2gobmV3IEpyKGUsdCkpfWdldFBvaW50KHQsZSl7bGV0IGk9dCp0aGlzLmdldExlbmd0aCgpLHI9dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKSxzPTA7Zm9yKDtzPHIubGVuZ3RoOyl7aWYocltzXT49aSl7bGV0IG89cltzXS1pLGE9dGhpcy5jdXJ2ZXNbc10sbD1hLmdldExlbmd0aCgpLGM9bD09PTA/MDoxLW8vbDtyZXR1cm4gYS5nZXRQb2ludEF0KGMsZSl9cysrfXJldHVybiBudWxsfWdldExlbmd0aCgpe2xldCB0PXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5jYWNoZUxlbmd0aHM9bnVsbCx0aGlzLmdldEN1cnZlTGVuZ3RocygpfWdldEN1cnZlTGVuZ3Rocygpe2lmKHRoaXMuY2FjaGVMZW5ndGhzJiZ0aGlzLmNhY2hlTGVuZ3Rocy5sZW5ndGg9PT10aGlzLmN1cnZlcy5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzO2xldCB0PVtdLGU9MDtmb3IobGV0IGk9MCxyPXRoaXMuY3VydmVzLmxlbmd0aDtpPHI7aSsrKWUrPXRoaXMuY3VydmVzW2ldLmdldExlbmd0aCgpLHQucHVzaChlKTtyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM9dCx0fWdldFNwYWNlZFBvaW50cyh0PTQwKXtsZXQgZT1bXTtmb3IobGV0IGk9MDtpPD10O2krKyllLnB1c2godGhpcy5nZXRQb2ludChpL3QpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUucHVzaChlWzBdKSxlfWdldFBvaW50cyh0PTEyKXtsZXQgZT1bXSxpO2ZvcihsZXQgcj0wLHM9dGhpcy5jdXJ2ZXM7cjxzLmxlbmd0aDtyKyspe2xldCBvPXNbcl0sYT1vJiZvLmlzRWxsaXBzZUN1cnZlP3QqMjpvJiYoby5pc0xpbmVDdXJ2ZXx8by5pc0xpbmVDdXJ2ZTMpPzE6byYmby5pc1NwbGluZUN1cnZlP3Qqby5wb2ludHMubGVuZ3RoOnQsbD1vLmdldFBvaW50cyhhKTtmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrKyl7bGV0IHU9bFtjXTtpJiZpLmVxdWFscyh1KXx8KGUucHVzaCh1KSxpPXUpfX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJmUubGVuZ3RoPjEmJiFlW2UubGVuZ3RoLTFdLmVxdWFscyhlWzBdKSYmZS5wdXNoKGVbMF0pLGV9Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLGk9dC5jdXJ2ZXMubGVuZ3RoO2U8aTtlKyspe2xldCByPXQuY3VydmVzW2VdO3RoaXMuY3VydmVzLnB1c2goci5jbG9uZSgpKX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTt0LmF1dG9DbG9zZT10aGlzLmF1dG9DbG9zZSx0LmN1cnZlcz1bXTtmb3IobGV0IGU9MCxpPXRoaXMuY3VydmVzLmxlbmd0aDtlPGk7ZSsrKXtsZXQgcj10aGlzLmN1cnZlc1tlXTt0LmN1cnZlcy5wdXNoKHIudG9KU09OKCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMuYXV0b0Nsb3NlPXQuYXV0b0Nsb3NlLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLGk9dC5jdXJ2ZXMubGVuZ3RoO2U8aTtlKyspe2xldCByPXQuY3VydmVzW2VdO3RoaXMuY3VydmVzLnB1c2gobmV3IFQwW3IudHlwZV0oKS5mcm9tSlNPTihyKSl9cmV0dXJuIHRoaXN9fSx2bz1jbGFzcyBleHRlbmRzIG9oe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQYXRoIix0aGlzLmN1cnJlbnRQb2ludD1uZXcgSyx0JiZ0aGlzLnNldEZyb21Qb2ludHModCl9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1vdmVUbyh0WzBdLngsdFswXS55KTtmb3IobGV0IGU9MSxpPXQubGVuZ3RoO2U8aTtlKyspdGhpcy5saW5lVG8odFtlXS54LHRbZV0ueSk7cmV0dXJuIHRoaXN9bW92ZVRvKHQsZSl7cmV0dXJuIHRoaXMuY3VycmVudFBvaW50LnNldCh0LGUpLHRoaXN9bGluZVRvKHQsZSl7bGV0IGk9bmV3IEpyKHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IEsodCxlKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2goaSksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc31xdWFkcmF0aWNDdXJ2ZVRvKHQsZSxpLHIpe2xldCBzPW5ldyB4byh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBLKHQsZSksbmV3IEsoaSxyKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gocyksdGhpcy5jdXJyZW50UG9pbnQuc2V0KGksciksdGhpc31iZXppZXJDdXJ2ZVRvKHQsZSxpLHIscyxvKXtsZXQgYT1uZXcgZ28odGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgSyh0LGUpLG5ldyBLKGksciksbmV3IEsocyxvKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2goYSksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHMsbyksdGhpc31zcGxpbmVUaHJ1KHQpe2xldCBlPVt0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpXS5jb25jYXQodCksaT1uZXcgeW8oZSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2goaSksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0W3QubGVuZ3RoLTFdKSx0aGlzfWFyYyh0LGUsaSxyLHMsbyl7bGV0IGE9dGhpcy5jdXJyZW50UG9pbnQueCxsPXRoaXMuY3VycmVudFBvaW50Lnk7cmV0dXJuIHRoaXMuYWJzYXJjKHQrYSxlK2wsaSxyLHMsbyksdGhpc31hYnNhcmModCxlLGkscixzLG8pe3JldHVybiB0aGlzLmFic2VsbGlwc2UodCxlLGksaSxyLHMsbyksdGhpc31lbGxpcHNlKHQsZSxpLHIscyxvLGEsbCl7bGV0IGM9dGhpcy5jdXJyZW50UG9pbnQueCx1PXRoaXMuY3VycmVudFBvaW50Lnk7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0K2MsZSt1LGkscixzLG8sYSxsKSx0aGlzfWFic2VsbGlwc2UodCxlLGkscixzLG8sYSxsKXtsZXQgYz1uZXcgWnIodCxlLGkscixzLG8sYSxsKTtpZih0aGlzLmN1cnZlcy5sZW5ndGg+MCl7bGV0IGg9Yy5nZXRQb2ludCgwKTtoLmVxdWFscyh0aGlzLmN1cnJlbnRQb2ludCl8fHRoaXMubGluZVRvKGgueCxoLnkpfXRoaXMuY3VydmVzLnB1c2goYyk7bGV0IHU9Yy5nZXRQb2ludCgxKTtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuY29weSh1KSx0aGlzfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0LmN1cnJlbnRQb2ludCksdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5jdXJyZW50UG9pbnQ9dGhpcy5jdXJyZW50UG9pbnQudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMuY3VycmVudFBvaW50LmZyb21BcnJheSh0LmN1cnJlbnRQb2ludCksdGhpc319LFVuPWNsYXNzIGV4dGVuZHMgdm97Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy51dWlkPXRuKCksdGhpcy50eXBlPSJTaGFwZSIsdGhpcy5ob2xlcz1bXX1nZXRQb2ludHNIb2xlcyh0KXtsZXQgZT1bXTtmb3IobGV0IGk9MCxyPXRoaXMuaG9sZXMubGVuZ3RoO2k8cjtpKyspZVtpXT10aGlzLmhvbGVzW2ldLmdldFBvaW50cyh0KTtyZXR1cm4gZX1leHRyYWN0UG9pbnRzKHQpe3JldHVybntzaGFwZTp0aGlzLmdldFBvaW50cyh0KSxob2xlczp0aGlzLmdldFBvaW50c0hvbGVzKHQpfX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxpPXQuaG9sZXMubGVuZ3RoO2U8aTtlKyspe2xldCByPXQuaG9sZXNbZV07dGhpcy5ob2xlcy5wdXNoKHIuY2xvbmUoKSl9cmV0dXJuIHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7dC51dWlkPXRoaXMudXVpZCx0LmhvbGVzPVtdO2ZvcihsZXQgZT0wLGk9dGhpcy5ob2xlcy5sZW5ndGg7ZTxpO2UrKyl7bGV0IHI9dGhpcy5ob2xlc1tlXTt0LmhvbGVzLnB1c2goci50b0pTT04oKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy51dWlkPXQudXVpZCx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLGk9dC5ob2xlcy5sZW5ndGg7ZTxpO2UrKyl7bGV0IHI9dC5ob2xlc1tlXTt0aGlzLmhvbGVzLnB1c2gobmV3IHZvKCkuZnJvbUpTT04ocikpfXJldHVybiB0aGlzfX0sTEU9e3RyaWFuZ3VsYXRlOmZ1bmN0aW9uKG4sdCxlPTIpe2xldCBpPXQmJnQubGVuZ3RoLHI9aT90WzBdKmU6bi5sZW5ndGgscz1BMChuLDAscixlLCEwKSxvPVtdO2lmKCFzfHxzLm5leHQ9PT1zLnByZXYpcmV0dXJuIG87bGV0IGEsbCxjLHUsaCxmLGQ7aWYoaSYmKHM9RkUobix0LHMsZSkpLG4ubGVuZ3RoPjgwKmUpe2E9Yz1uWzBdLGw9dT1uWzFdO2ZvcihsZXQgZz1lO2c8cjtnKz1lKWg9bltnXSxmPW5bZysxXSxoPGEmJihhPWgpLGY8bCYmKGw9ZiksaD5jJiYoYz1oKSxmPnUmJih1PWYpO2Q9TWF0aC5tYXgoYy1hLHUtbCksZD1kIT09MD8xL2Q6MH1yZXR1cm4gX28ocyxvLGUsYSxsLGQpLG99fTtmdW5jdGlvbiBBMChuLHQsZSxpLHIpe2xldCBzLG87aWYocj09PVhFKG4sdCxlLGkpPjApZm9yKHM9dDtzPGU7cys9aSlvPUtnKHMsbltzXSxuW3MrMV0sbyk7ZWxzZSBmb3Iocz1lLWk7cz49dDtzLT1pKW89S2cocyxuW3NdLG5bcysxXSxvKTtyZXR1cm4gbyYmUGwobyxvLm5leHQpJiYoTW8obyksbz1vLm5leHQpLG99ZnVuY3Rpb24gbGkobix0KXtpZighbilyZXR1cm4gbjt0fHwodD1uKTtsZXQgZT1uLGk7ZG8gaWYoaT0hMSwhZS5zdGVpbmVyJiYoUGwoZSxlLm5leHQpfHx0ZShlLnByZXYsZSxlLm5leHQpPT09MCkpe2lmKE1vKGUpLGU9dD1lLnByZXYsZT09PWUubmV4dClicmVhaztpPSEwfWVsc2UgZT1lLm5leHQ7d2hpbGUoaXx8ZSE9PXQpO3JldHVybiB0fWZ1bmN0aW9uIF9vKG4sdCxlLGkscixzLG8pe2lmKCFuKXJldHVybjshbyYmcyYma0UobixpLHIscyk7bGV0IGE9bixsLGM7Zm9yKDtuLnByZXYhPT1uLm5leHQ7KXtpZihsPW4ucHJldixjPW4ubmV4dCxzP0RFKG4saSxyLHMpOlBFKG4pKXt0LnB1c2gobC5pL2UpLHQucHVzaChuLmkvZSksdC5wdXNoKGMuaS9lKSxNbyhuKSxuPWMubmV4dCxhPWMubmV4dDtjb250aW51ZX1pZihuPWMsbj09PWEpe28/bz09PTE/KG49SUUobGkobiksdCxlKSxfbyhuLHQsZSxpLHIscywyKSk6bz09PTImJk5FKG4sdCxlLGkscixzKTpfbyhsaShuKSx0LGUsaSxyLHMsMSk7YnJlYWt9fX1mdW5jdGlvbiBQRShuKXtsZXQgdD1uLnByZXYsZT1uLGk9bi5uZXh0O2lmKHRlKHQsZSxpKT49MClyZXR1cm4hMTtsZXQgcj1uLm5leHQubmV4dDtmb3IoO3IhPT1uLnByZXY7KXtpZihGcih0LngsdC55LGUueCxlLnksaS54LGkueSxyLngsci55KSYmdGUoci5wcmV2LHIsci5uZXh0KT49MClyZXR1cm4hMTtyPXIubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiBERShuLHQsZSxpKXtsZXQgcj1uLnByZXYscz1uLG89bi5uZXh0O2lmKHRlKHIscyxvKT49MClyZXR1cm4hMTtsZXQgYT1yLng8cy54P3IueDxvLng/ci54Om8ueDpzLng8by54P3MueDpvLngsbD1yLnk8cy55P3IueTxvLnk/ci55Om8ueTpzLnk8by55P3MueTpvLnksYz1yLng+cy54P3IueD5vLng/ci54Om8ueDpzLng+by54P3MueDpvLngsdT1yLnk+cy55P3IueT5vLnk/ci55Om8ueTpzLnk+by55P3MueTpvLnksaD1haChhLGwsdCxlLGkpLGY9YWgoYyx1LHQsZSxpKSxkPW4ucHJldlosZz1uLm5leHRaO2Zvcig7ZCYmZC56Pj1oJiZnJiZnLno8PWY7KXtpZihkIT09bi5wcmV2JiZkIT09bi5uZXh0JiZGcihyLngsci55LHMueCxzLnksby54LG8ueSxkLngsZC55KSYmdGUoZC5wcmV2LGQsZC5uZXh0KT49MHx8KGQ9ZC5wcmV2WixnIT09bi5wcmV2JiZnIT09bi5uZXh0JiZGcihyLngsci55LHMueCxzLnksby54LG8ueSxnLngsZy55KSYmdGUoZy5wcmV2LGcsZy5uZXh0KT49MCkpcmV0dXJuITE7Zz1nLm5leHRafWZvcig7ZCYmZC56Pj1oOyl7aWYoZCE9PW4ucHJldiYmZCE9PW4ubmV4dCYmRnIoci54LHIueSxzLngscy55LG8ueCxvLnksZC54LGQueSkmJnRlKGQucHJldixkLGQubmV4dCk+PTApcmV0dXJuITE7ZD1kLnByZXZafWZvcig7ZyYmZy56PD1mOyl7aWYoZyE9PW4ucHJldiYmZyE9PW4ubmV4dCYmRnIoci54LHIueSxzLngscy55LG8ueCxvLnksZy54LGcueSkmJnRlKGcucHJldixnLGcubmV4dCk+PTApcmV0dXJuITE7Zz1nLm5leHRafXJldHVybiEwfWZ1bmN0aW9uIElFKG4sdCxlKXtsZXQgaT1uO2Rve2xldCByPWkucHJldixzPWkubmV4dC5uZXh0OyFQbChyLHMpJiZDMChyLGksaS5uZXh0LHMpJiZ3byhyLHMpJiZ3byhzLHIpJiYodC5wdXNoKHIuaS9lKSx0LnB1c2goaS5pL2UpLHQucHVzaChzLmkvZSksTW8oaSksTW8oaS5uZXh0KSxpPW49cyksaT1pLm5leHR9d2hpbGUoaSE9PW4pO3JldHVybiBsaShpKX1mdW5jdGlvbiBORShuLHQsZSxpLHIscyl7bGV0IG89bjtkb3tsZXQgYT1vLm5leHQubmV4dDtmb3IoO2EhPT1vLnByZXY7KXtpZihvLmkhPT1hLmkmJkdFKG8sYSkpe2xldCBsPVIwKG8sYSk7bz1saShvLG8ubmV4dCksbD1saShsLGwubmV4dCksX28obyx0LGUsaSxyLHMpLF9vKGwsdCxlLGkscixzKTtyZXR1cm59YT1hLm5leHR9bz1vLm5leHR9d2hpbGUobyE9PW4pfWZ1bmN0aW9uIEZFKG4sdCxlLGkpe2xldCByPVtdLHMsbyxhLGwsYztmb3Iocz0wLG89dC5sZW5ndGg7czxvO3MrKylhPXRbc10qaSxsPXM8by0xP3RbcysxXSppOm4ubGVuZ3RoLGM9QTAobixhLGwsaSwhMSksYz09PWMubmV4dCYmKGMuc3RlaW5lcj0hMCksci5wdXNoKFZFKGMpKTtmb3Ioci5zb3J0KHpFKSxzPTA7czxyLmxlbmd0aDtzKyspVUUocltzXSxlKSxlPWxpKGUsZS5uZXh0KTtyZXR1cm4gZX1mdW5jdGlvbiB6RShuLHQpe3JldHVybiBuLngtdC54fWZ1bmN0aW9uIFVFKG4sdCl7aWYodD1CRShuLHQpLHQpe2xldCBlPVIwKHQsbik7bGkodCx0Lm5leHQpLGxpKGUsZS5uZXh0KX19ZnVuY3Rpb24gQkUobix0KXtsZXQgZT10LGk9bi54LHI9bi55LHM9LTEvMCxvO2Rve2lmKHI8PWUueSYmcj49ZS5uZXh0LnkmJmUubmV4dC55IT09ZS55KXtsZXQgZj1lLngrKHItZS55KSooZS5uZXh0LngtZS54KS8oZS5uZXh0LnktZS55KTtpZihmPD1pJiZmPnMpe2lmKHM9ZixmPT09aSl7aWYocj09PWUueSlyZXR1cm4gZTtpZihyPT09ZS5uZXh0LnkpcmV0dXJuIGUubmV4dH1vPWUueDxlLm5leHQueD9lOmUubmV4dH19ZT1lLm5leHR9d2hpbGUoZSE9PXQpO2lmKCFvKXJldHVybiBudWxsO2lmKGk9PT1zKXJldHVybiBvO2xldCBhPW8sbD1vLngsYz1vLnksdT0xLzAsaDtlPW87ZG8gaT49ZS54JiZlLng+PWwmJmkhPT1lLngmJkZyKHI8Yz9pOnMscixsLGMscjxjP3M6aSxyLGUueCxlLnkpJiYoaD1NYXRoLmFicyhyLWUueSkvKGktZS54KSx3byhlLG4pJiYoaDx1fHxoPT09dSYmKGUueD5vLnh8fGUueD09PW8ueCYmT0UobyxlKSkpJiYobz1lLHU9aCkpLGU9ZS5uZXh0O3doaWxlKGUhPT1hKTtyZXR1cm4gb31mdW5jdGlvbiBPRShuLHQpe3JldHVybiB0ZShuLnByZXYsbix0LnByZXYpPDAmJnRlKHQubmV4dCxuLG4ubmV4dCk8MH1mdW5jdGlvbiBrRShuLHQsZSxpKXtsZXQgcj1uO2RvIHIuej09PW51bGwmJihyLno9YWgoci54LHIueSx0LGUsaSkpLHIucHJldlo9ci5wcmV2LHIubmV4dFo9ci5uZXh0LHI9ci5uZXh0O3doaWxlKHIhPT1uKTtyLnByZXZaLm5leHRaPW51bGwsci5wcmV2Wj1udWxsLEhFKHIpfWZ1bmN0aW9uIEhFKG4pe2xldCB0LGUsaSxyLHMsbyxhLGwsYz0xO2Rve2ZvcihlPW4sbj1udWxsLHM9bnVsbCxvPTA7ZTspe2ZvcihvKyssaT1lLGE9MCx0PTA7dDxjJiYoYSsrLGk9aS5uZXh0WiwhIWkpO3QrKyk7Zm9yKGw9YzthPjB8fGw+MCYmaTspYSE9PTAmJihsPT09MHx8IWl8fGUuejw9aS56KT8ocj1lLGU9ZS5uZXh0WixhLS0pOihyPWksaT1pLm5leHRaLGwtLSkscz9zLm5leHRaPXI6bj1yLHIucHJldlo9cyxzPXI7ZT1pfXMubmV4dFo9bnVsbCxjKj0yfXdoaWxlKG8+MSk7cmV0dXJuIG59ZnVuY3Rpb24gYWgobix0LGUsaSxyKXtyZXR1cm4gbj0zMjc2Nyoobi1lKSpyLHQ9MzI3NjcqKHQtaSkqcixuPShufG48PDgpJjE2NzExOTM1LG49KG58bjw8NCkmMjUyNjQ1MTM1LG49KG58bjw8MikmODU4OTkzNDU5LG49KG58bjw8MSkmMTQzMTY1NTc2NSx0PSh0fHQ8PDgpJjE2NzExOTM1LHQ9KHR8dDw8NCkmMjUyNjQ1MTM1LHQ9KHR8dDw8MikmODU4OTkzNDU5LHQ9KHR8dDw8MSkmMTQzMTY1NTc2NSxufHQ8PDF9ZnVuY3Rpb24gVkUobil7bGV0IHQ9bixlPW47ZG8odC54PGUueHx8dC54PT09ZS54JiZ0Lnk8ZS55KSYmKGU9dCksdD10Lm5leHQ7d2hpbGUodCE9PW4pO3JldHVybiBlfWZ1bmN0aW9uIEZyKG4sdCxlLGkscixzLG8sYSl7cmV0dXJuKHItbykqKHQtYSktKG4tbykqKHMtYSk+PTAmJihuLW8pKihpLWEpLShlLW8pKih0LWEpPj0wJiYoZS1vKSoocy1hKS0oci1vKSooaS1hKT49MH1mdW5jdGlvbiBHRShuLHQpe3JldHVybiBuLm5leHQuaSE9PXQuaSYmbi5wcmV2LmkhPT10LmkmJiFXRShuLHQpJiYod28obix0KSYmd28odCxuKSYmcUUobix0KSYmKHRlKG4ucHJldixuLHQucHJldil8fHRlKG4sdC5wcmV2LHQpKXx8UGwobix0KSYmdGUobi5wcmV2LG4sbi5uZXh0KT4wJiZ0ZSh0LnByZXYsdCx0Lm5leHQpPjApfWZ1bmN0aW9uIHRlKG4sdCxlKXtyZXR1cm4odC55LW4ueSkqKGUueC10LngpLSh0Lngtbi54KSooZS55LXQueSl9ZnVuY3Rpb24gUGwobix0KXtyZXR1cm4gbi54PT09dC54JiZuLnk9PT10Lnl9ZnVuY3Rpb24gQzAobix0LGUsaSl7bGV0IHI9WWEodGUobix0LGUpKSxzPVlhKHRlKG4sdCxpKSksbz1ZYSh0ZShlLGksbikpLGE9WWEodGUoZSxpLHQpKTtyZXR1cm4hIShyIT09cyYmbyE9PWF8fHI9PT0wJiZYYShuLGUsdCl8fHM9PT0wJiZYYShuLGksdCl8fG89PT0wJiZYYShlLG4saSl8fGE9PT0wJiZYYShlLHQsaSkpfWZ1bmN0aW9uIFhhKG4sdCxlKXtyZXR1cm4gdC54PD1NYXRoLm1heChuLngsZS54KSYmdC54Pj1NYXRoLm1pbihuLngsZS54KSYmdC55PD1NYXRoLm1heChuLnksZS55KSYmdC55Pj1NYXRoLm1pbihuLnksZS55KX1mdW5jdGlvbiBZYShuKXtyZXR1cm4gbj4wPzE6bjwwPy0xOjB9ZnVuY3Rpb24gV0Uobix0KXtsZXQgZT1uO2Rve2lmKGUuaSE9PW4uaSYmZS5uZXh0LmkhPT1uLmkmJmUuaSE9PXQuaSYmZS5uZXh0LmkhPT10LmkmJkMwKGUsZS5uZXh0LG4sdCkpcmV0dXJuITA7ZT1lLm5leHR9d2hpbGUoZSE9PW4pO3JldHVybiExfWZ1bmN0aW9uIHdvKG4sdCl7cmV0dXJuIHRlKG4ucHJldixuLG4ubmV4dCk8MD90ZShuLHQsbi5uZXh0KT49MCYmdGUobixuLnByZXYsdCk+PTA6dGUobix0LG4ucHJldik8MHx8dGUobixuLm5leHQsdCk8MH1mdW5jdGlvbiBxRShuLHQpe2xldCBlPW4saT0hMSxyPShuLngrdC54KS8yLHM9KG4ueSt0LnkpLzI7ZG8gZS55PnMhPWUubmV4dC55PnMmJmUubmV4dC55IT09ZS55JiZyPChlLm5leHQueC1lLngpKihzLWUueSkvKGUubmV4dC55LWUueSkrZS54JiYoaT0haSksZT1lLm5leHQ7d2hpbGUoZSE9PW4pO3JldHVybiBpfWZ1bmN0aW9uIFIwKG4sdCl7bGV0IGU9bmV3IGxoKG4uaSxuLngsbi55KSxpPW5ldyBsaCh0LmksdC54LHQueSkscj1uLm5leHQscz10LnByZXY7cmV0dXJuIG4ubmV4dD10LHQucHJldj1uLGUubmV4dD1yLHIucHJldj1lLGkubmV4dD1lLGUucHJldj1pLHMubmV4dD1pLGkucHJldj1zLGl9ZnVuY3Rpb24gS2cobix0LGUsaSl7bGV0IHI9bmV3IGxoKG4sdCxlKTtyZXR1cm4gaT8oci5uZXh0PWkubmV4dCxyLnByZXY9aSxpLm5leHQucHJldj1yLGkubmV4dD1yKTooci5wcmV2PXIsci5uZXh0PXIpLHJ9ZnVuY3Rpb24gTW8obil7bi5uZXh0LnByZXY9bi5wcmV2LG4ucHJldi5uZXh0PW4ubmV4dCxuLnByZXZaJiYobi5wcmV2Wi5uZXh0Wj1uLm5leHRaKSxuLm5leHRaJiYobi5uZXh0Wi5wcmV2Wj1uLnByZXZaKX1mdW5jdGlvbiBsaChuLHQsZSl7dGhpcy5pPW4sdGhpcy54PXQsdGhpcy55PWUsdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9ZnVuY3Rpb24gWEUobix0LGUsaSl7bGV0IHI9MDtmb3IobGV0IHM9dCxvPWUtaTtzPGU7cys9aSlyKz0obltvXS1uW3NdKSoobltzKzFdK25bbysxXSksbz1zO3JldHVybiByfXZhciBkbj1jbGFzc3tzdGF0aWMgYXJlYSh0KXtsZXQgZT10Lmxlbmd0aCxpPTA7Zm9yKGxldCByPWUtMSxzPTA7czxlO3I9cysrKWkrPXRbcl0ueCp0W3NdLnktdFtzXS54KnRbcl0ueTtyZXR1cm4gaSouNX1zdGF0aWMgaXNDbG9ja1dpc2UodCl7cmV0dXJuIGRuLmFyZWEodCk8MH1zdGF0aWMgdHJpYW5ndWxhdGVTaGFwZSh0LGUpe2xldCBpPVtdLHI9W10scz1bXTtRZyh0KSxqZyhpLHQpO2xldCBvPXQubGVuZ3RoO2UuZm9yRWFjaChRZyk7Zm9yKGxldCBsPTA7bDxlLmxlbmd0aDtsKyspci5wdXNoKG8pLG8rPWVbbF0ubGVuZ3RoLGpnKGksZVtsXSk7bGV0IGE9TEUudHJpYW5ndWxhdGUoaSxyKTtmb3IobGV0IGw9MDtsPGEubGVuZ3RoO2wrPTMpcy5wdXNoKGEuc2xpY2UobCxsKzMpKTtyZXR1cm4gc319O2Z1bmN0aW9uIFFnKG4pe2xldCB0PW4ubGVuZ3RoO3Q+MiYmblt0LTFdLmVxdWFscyhuWzBdKSYmbi5wb3AoKX1mdW5jdGlvbiBqZyhuLHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKW4ucHVzaCh0W2VdLngpLG4ucHVzaCh0W2VdLnkpfXZhciBjaT1jbGFzcyBleHRlbmRzIEh0e2NvbnN0cnVjdG9yKHQ9bmV3IFVuKFtuZXcgSyguNSwuNSksbmV3IEsoLS41LC41KSxuZXcgSygtLjUsLS41KSxuZXcgSyguNSwtLjUpXSksZT17fSl7c3VwZXIoKSx0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxvcHRpb25zOmV9LHQ9QXJyYXkuaXNBcnJheSh0KT90Olt0XTtsZXQgaT10aGlzLHI9W10scz1bXTtmb3IobGV0IGE9MCxsPXQubGVuZ3RoO2E8bDthKyspe2xldCBjPXRbYV07byhjKX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlZShyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlZShzLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7ZnVuY3Rpb24gbyhhKXtsZXQgbD1bXSxjPWUuY3VydmVTZWdtZW50cyE9PXZvaWQgMD9lLmN1cnZlU2VnbWVudHM6MTIsdT1lLnN0ZXBzIT09dm9pZCAwP2Uuc3RlcHM6MSxoPWUuZGVwdGghPT12b2lkIDA/ZS5kZXB0aDoxLGY9ZS5iZXZlbEVuYWJsZWQhPT12b2lkIDA/ZS5iZXZlbEVuYWJsZWQ6ITAsZD1lLmJldmVsVGhpY2tuZXNzIT09dm9pZCAwP2UuYmV2ZWxUaGlja25lc3M6LjIsZz1lLmJldmVsU2l6ZSE9PXZvaWQgMD9lLmJldmVsU2l6ZTpkLS4xLHg9ZS5iZXZlbE9mZnNldCE9PXZvaWQgMD9lLmJldmVsT2Zmc2V0OjAsdj1lLmJldmVsU2VnbWVudHMhPT12b2lkIDA/ZS5iZXZlbFNlZ21lbnRzOjMsbT1lLmV4dHJ1ZGVQYXRoLHA9ZS5VVkdlbmVyYXRvciE9PXZvaWQgMD9lLlVWR2VuZXJhdG9yOllFO2UuYW1vdW50IT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IGFtb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIGRlcHRoLiIpLGg9ZS5hbW91bnQpO2xldCBiLF89ITEsUyxMLEEsSDttJiYoYj1tLmdldFNwYWNlZFBvaW50cyh1KSxfPSEwLGY9ITEsUz1tLmNvbXB1dGVGcmVuZXRGcmFtZXModSwhMSksTD1uZXcgVCxBPW5ldyBULEg9bmV3IFQpLGZ8fCh2PTAsZD0wLGc9MCx4PTApO2xldCB0dD1hLmV4dHJhY3RQb2ludHMoYyksWD10dC5zaGFwZSx5PXR0LmhvbGVzO2lmKCFkbi5pc0Nsb2NrV2lzZShYKSl7WD1YLnJldmVyc2UoKTtmb3IobGV0IEM9MCxqPXkubGVuZ3RoO0M8ajtDKyspe2xldCBKPXlbQ107ZG4uaXNDbG9ja1dpc2UoSikmJih5W0NdPUoucmV2ZXJzZSgpKX19bGV0IEQ9ZG4udHJpYW5ndWxhdGVTaGFwZShYLHkpLEY9WDtmb3IobGV0IEM9MCxqPXkubGVuZ3RoO0M8ajtDKyspe2xldCBKPXlbQ107WD1YLmNvbmNhdChKKX1mdW5jdGlvbiB6KEMsaixKKXtyZXR1cm4ganx8Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiB2ZWMgZG9lcyBub3QgZXhpc3QiKSxqLmNsb25lKCkubXVsdGlwbHlTY2FsYXIoSikuYWRkKEMpfWxldCBOPVgubGVuZ3RoLFY9RC5sZW5ndGg7ZnVuY3Rpb24gUShDLGosSil7bGV0IGl0LGV0LHZ0LGJ0PUMueC1qLngsSXQ9Qy55LWoueSxadD1KLngtQy54LHF0PUoueS1DLnksRT1idCpidCtJdCpJdCx3PWJ0KnF0LUl0Klp0O2lmKE1hdGguYWJzKHcpPk51bWJlci5FUFNJTE9OKXtsZXQgcT1NYXRoLnNxcnQoRSkscnQ9TWF0aC5zcXJ0KFp0Klp0K3F0KnF0KSxndD1qLngtSXQvcSxXPWoueStidC9xLF90PUoueC1xdC9ydCx5dD1KLnkrWnQvcnQsdXQ9KChfdC1ndCkqcXQtKHl0LVcpKlp0KS8oYnQqcXQtSXQqWnQpO2l0PWd0K2J0KnV0LUMueCxldD1XK0l0KnV0LUMueTtsZXQgY3Q9aXQqaXQrZXQqZXQ7aWYoY3Q8PTIpcmV0dXJuIG5ldyBLKGl0LGV0KTt2dD1NYXRoLnNxcnQoY3QvMil9ZWxzZXtsZXQgcT0hMTtidD5OdW1iZXIuRVBTSUxPTj9adD5OdW1iZXIuRVBTSUxPTiYmKHE9ITApOmJ0PC1OdW1iZXIuRVBTSUxPTj9adDwtTnVtYmVyLkVQU0lMT04mJihxPSEwKTpNYXRoLnNpZ24oSXQpPT09TWF0aC5zaWduKHF0KSYmKHE9ITApLHE/KGl0PS1JdCxldD1idCx2dD1NYXRoLnNxcnQoRSkpOihpdD1idCxldD1JdCx2dD1NYXRoLnNxcnQoRS8yKSl9cmV0dXJuIG5ldyBLKGl0L3Z0LGV0L3Z0KX1sZXQgYXQ9W107Zm9yKGxldCBDPTAsaj1GLmxlbmd0aCxKPWotMSxpdD1DKzE7QzxqO0MrKyxKKyssaXQrKylKPT09aiYmKEo9MCksaXQ9PT1qJiYoaXQ9MCksYXRbQ109UShGW0NdLEZbSl0sRltpdF0pO2xldCBHPVtdLCQsbHQ9YXQuY29uY2F0KCk7Zm9yKGxldCBDPTAsaj15Lmxlbmd0aDtDPGo7QysrKXtsZXQgSj15W0NdOyQ9W107Zm9yKGxldCBpdD0wLGV0PUoubGVuZ3RoLHZ0PWV0LTEsYnQ9aXQrMTtpdDxldDtpdCsrLHZ0KyssYnQrKyl2dD09PWV0JiYodnQ9MCksYnQ9PT1ldCYmKGJ0PTApLCRbaXRdPVEoSltpdF0sSlt2dF0sSltidF0pO0cucHVzaCgkKSxsdD1sdC5jb25jYXQoJCl9Zm9yKGxldCBDPTA7Qzx2O0MrKyl7bGV0IGo9Qy92LEo9ZCpNYXRoLmNvcyhqKk1hdGguUEkvMiksaXQ9ZypNYXRoLnNpbihqKk1hdGguUEkvMikreDtmb3IobGV0IGV0PTAsdnQ9Ri5sZW5ndGg7ZXQ8dnQ7ZXQrKyl7bGV0IGJ0PXooRltldF0sYXRbZXRdLGl0KTttdChidC54LGJ0LnksLUopfWZvcihsZXQgZXQ9MCx2dD15Lmxlbmd0aDtldDx2dDtldCsrKXtsZXQgYnQ9eVtldF07JD1HW2V0XTtmb3IobGV0IEl0PTAsWnQ9YnQubGVuZ3RoO0l0PFp0O0l0Kyspe2xldCBxdD16KGJ0W0l0XSwkW0l0XSxpdCk7bXQocXQueCxxdC55LC1KKX19fWxldCBkdD1nK3g7Zm9yKGxldCBDPTA7QzxOO0MrKyl7bGV0IGo9Zj96KFhbQ10sbHRbQ10sZHQpOlhbQ107Xz8oQS5jb3B5KFMubm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoai54KSxMLmNvcHkoUy5iaW5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGoueSksSC5jb3B5KGJbMF0pLmFkZChBKS5hZGQoTCksbXQoSC54LEgueSxILnopKTptdChqLngsai55LDApfWZvcihsZXQgQz0xO0M8PXU7QysrKWZvcihsZXQgaj0wO2o8TjtqKyspe2xldCBKPWY/eihYW2pdLGx0W2pdLGR0KTpYW2pdO18/KEEuY29weShTLm5vcm1hbHNbQ10pLm11bHRpcGx5U2NhbGFyKEoueCksTC5jb3B5KFMuYmlub3JtYWxzW0NdKS5tdWx0aXBseVNjYWxhcihKLnkpLEguY29weShiW0NdKS5hZGQoQSkuYWRkKEwpLG10KEgueCxILnksSC56KSk6bXQoSi54LEoueSxoL3UqQyl9Zm9yKGxldCBDPXYtMTtDPj0wO0MtLSl7bGV0IGo9Qy92LEo9ZCpNYXRoLmNvcyhqKk1hdGguUEkvMiksaXQ9ZypNYXRoLnNpbihqKk1hdGguUEkvMikreDtmb3IobGV0IGV0PTAsdnQ9Ri5sZW5ndGg7ZXQ8dnQ7ZXQrKyl7bGV0IGJ0PXooRltldF0sYXRbZXRdLGl0KTttdChidC54LGJ0LnksaCtKKX1mb3IobGV0IGV0PTAsdnQ9eS5sZW5ndGg7ZXQ8dnQ7ZXQrKyl7bGV0IGJ0PXlbZXRdOyQ9R1tldF07Zm9yKGxldCBJdD0wLFp0PWJ0Lmxlbmd0aDtJdDxadDtJdCsrKXtsZXQgcXQ9eihidFtJdF0sJFtJdF0saXQpO18/bXQocXQueCxxdC55K2JbdS0xXS55LGJbdS0xXS54K0opOm10KHF0LngscXQueSxoK0opfX19eHQoKSxrKCk7ZnVuY3Rpb24geHQoKXtsZXQgQz1yLmxlbmd0aC8zO2lmKGYpe2xldCBqPTAsSj1OKmo7Zm9yKGxldCBpdD0wO2l0PFY7aXQrKyl7bGV0IGV0PURbaXRdO1N0KGV0WzJdK0osZXRbMV0rSixldFswXStKKX1qPXUrdioyLEo9TipqO2ZvcihsZXQgaXQ9MDtpdDxWO2l0Kyspe2xldCBldD1EW2l0XTtTdChldFswXStKLGV0WzFdK0osZXRbMl0rSil9fWVsc2V7Zm9yKGxldCBqPTA7ajxWO2orKyl7bGV0IEo9RFtqXTtTdChKWzJdLEpbMV0sSlswXSl9Zm9yKGxldCBqPTA7ajxWO2orKyl7bGV0IEo9RFtqXTtTdChKWzBdK04qdSxKWzFdK04qdSxKWzJdK04qdSl9fWkuYWRkR3JvdXAoQyxyLmxlbmd0aC8zLUMsMCl9ZnVuY3Rpb24gaygpe2xldCBDPXIubGVuZ3RoLzMsaj0wO0Z0KEYsaiksais9Ri5sZW5ndGg7Zm9yKGxldCBKPTAsaXQ9eS5sZW5ndGg7SjxpdDtKKyspe2xldCBldD15W0pdO0Z0KGV0LGopLGorPWV0Lmxlbmd0aH1pLmFkZEdyb3VwKEMsci5sZW5ndGgvMy1DLDEpfWZ1bmN0aW9uIEZ0KEMsail7bGV0IEo9Qy5sZW5ndGg7Zm9yKDstLUo+PTA7KXtsZXQgaXQ9SixldD1KLTE7ZXQ8MCYmKGV0PUMubGVuZ3RoLTEpO2ZvcihsZXQgdnQ9MCxidD11K3YqMjt2dDxidDt2dCsrKXtsZXQgSXQ9Tip2dCxadD1OKih2dCsxKSxxdD1qK2l0K0l0LEU9aitldCtJdCx3PWorZXQrWnQscT1qK2l0K1p0O0IocXQsRSx3LHEpfX19ZnVuY3Rpb24gbXQoQyxqLEope2wucHVzaChDKSxsLnB1c2goaiksbC5wdXNoKEopfWZ1bmN0aW9uIFN0KEMsaixKKXtzdChDKSxzdChqKSxzdChKKTtsZXQgaXQ9ci5sZW5ndGgvMyxldD1wLmdlbmVyYXRlVG9wVVYoaSxyLGl0LTMsaXQtMixpdC0xKTtudChldFswXSksbnQoZXRbMV0pLG50KGV0WzJdKX1mdW5jdGlvbiBCKEMsaixKLGl0KXtzdChDKSxzdChqKSxzdChpdCksc3Qoaiksc3QoSiksc3QoaXQpO2xldCBldD1yLmxlbmd0aC8zLHZ0PXAuZ2VuZXJhdGVTaWRlV2FsbFVWKGkscixldC02LGV0LTMsZXQtMixldC0xKTtudCh2dFswXSksbnQodnRbMV0pLG50KHZ0WzNdKSxudCh2dFsxXSksbnQodnRbMl0pLG50KHZ0WzNdKX1mdW5jdGlvbiBzdChDKXtyLnB1c2gobFtDKjMrMF0pLHIucHVzaChsW0MqMysxXSksci5wdXNoKGxbQyozKzJdKX1mdW5jdGlvbiBudChDKXtzLnB1c2goQy54KSxzLnB1c2goQy55KX19fXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpLGU9dGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyxpPXRoaXMucGFyYW1ldGVycy5vcHRpb25zO3JldHVybiBaRShlLGksdCl9c3RhdGljIGZyb21KU09OKHQsZSl7bGV0IGk9W107Zm9yKGxldCBzPTAsbz10LnNoYXBlcy5sZW5ndGg7czxvO3MrKyl7bGV0IGE9ZVt0LnNoYXBlc1tzXV07aS5wdXNoKGEpfWxldCByPXQub3B0aW9ucy5leHRydWRlUGF0aDtyZXR1cm4gciE9PXZvaWQgMCYmKHQub3B0aW9ucy5leHRydWRlUGF0aD1uZXcgVDBbci50eXBlXSgpLmZyb21KU09OKHIpKSxuZXcgY2koaSx0Lm9wdGlvbnMpfX0sWUU9e2dlbmVyYXRlVG9wVVY6ZnVuY3Rpb24obix0LGUsaSxyKXtsZXQgcz10W2UqM10sbz10W2UqMysxXSxhPXRbaSozXSxsPXRbaSozKzFdLGM9dFtyKjNdLHU9dFtyKjMrMV07cmV0dXJuW25ldyBLKHMsbyksbmV3IEsoYSxsKSxuZXcgSyhjLHUpXX0sZ2VuZXJhdGVTaWRlV2FsbFVWOmZ1bmN0aW9uKG4sdCxlLGkscixzKXtsZXQgbz10W2UqM10sYT10W2UqMysxXSxsPXRbZSozKzJdLGM9dFtpKjNdLHU9dFtpKjMrMV0saD10W2kqMysyXSxmPXRbciozXSxkPXRbciozKzFdLGc9dFtyKjMrMl0seD10W3MqM10sdj10W3MqMysxXSxtPXRbcyozKzJdO3JldHVybiBNYXRoLmFicyhhLXUpPE1hdGguYWJzKG8tYyk/W25ldyBLKG8sMS1sKSxuZXcgSyhjLDEtaCksbmV3IEsoZiwxLWcpLG5ldyBLKHgsMS1tKV06W25ldyBLKGEsMS1sKSxuZXcgSyh1LDEtaCksbmV3IEsoZCwxLWcpLG5ldyBLKHYsMS1tKV19fTtmdW5jdGlvbiBaRShuLHQsZSl7aWYoZS5zaGFwZXM9W10sQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2k8cjtpKyspe2xldCBzPW5baV07ZS5zaGFwZXMucHVzaChzLnV1aWQpfWVsc2UgZS5zaGFwZXMucHVzaChuLnV1aWQpO3JldHVybiB0LmV4dHJ1ZGVQYXRoIT09dm9pZCAwJiYoZS5vcHRpb25zLmV4dHJ1ZGVQYXRoPXQuZXh0cnVkZVBhdGgudG9KU09OKCkpLGV9dmFyIFdpPWNsYXNzIGV4dGVuZHMgSHR7Y29uc3RydWN0b3IodD1uZXcgVW4oW25ldyBLKDAsLjUpLG5ldyBLKC0uNSwtLjUpLG5ldyBLKC41LC0uNSldKSxlPTEyKXtzdXBlcigpLHRoaXMudHlwZT0iU2hhcGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxjdXJ2ZVNlZ21lbnRzOmV9O2xldCBpPVtdLHI9W10scz1bXSxvPVtdLGE9MCxsPTA7aWYoQXJyYXkuaXNBcnJheSh0KT09PSExKWModCk7ZWxzZSBmb3IobGV0IHU9MDt1PHQubGVuZ3RoO3UrKyljKHRbdV0pLHRoaXMuYWRkR3JvdXAoYSxsLHUpLGErPWwsbD0wO3RoaXMuc2V0SW5kZXgoaSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZWUociwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVlKHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVlKG8sMikpO2Z1bmN0aW9uIGModSl7bGV0IGg9ci5sZW5ndGgvMyxmPXUuZXh0cmFjdFBvaW50cyhlKSxkPWYuc2hhcGUsZz1mLmhvbGVzO2RuLmlzQ2xvY2tXaXNlKGQpPT09ITEmJihkPWQucmV2ZXJzZSgpKTtmb3IobGV0IHY9MCxtPWcubGVuZ3RoO3Y8bTt2Kyspe2xldCBwPWdbdl07ZG4uaXNDbG9ja1dpc2UocCk9PT0hMCYmKGdbdl09cC5yZXZlcnNlKCkpfWxldCB4PWRuLnRyaWFuZ3VsYXRlU2hhcGUoZCxnKTtmb3IobGV0IHY9MCxtPWcubGVuZ3RoO3Y8bTt2Kyspe2xldCBwPWdbdl07ZD1kLmNvbmNhdChwKX1mb3IobGV0IHY9MCxtPWQubGVuZ3RoO3Y8bTt2Kyspe2xldCBwPWRbdl07ci5wdXNoKHAueCxwLnksMCkscy5wdXNoKDAsMCwxKSxvLnB1c2gocC54LHAueSl9Zm9yKGxldCB2PTAsbT14Lmxlbmd0aDt2PG07disrKXtsZXQgcD14W3ZdLGI9cFswXStoLF89cFsxXStoLFM9cFsyXStoO2kucHVzaChiLF8sUyksbCs9M319fXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpLGU9dGhpcy5wYXJhbWV0ZXJzLnNoYXBlcztyZXR1cm4gSkUoZSx0KX1zdGF0aWMgZnJvbUpTT04odCxlKXtsZXQgaT1bXTtmb3IobGV0IHI9MCxzPXQuc2hhcGVzLmxlbmd0aDtyPHM7cisrKXtsZXQgbz1lW3Quc2hhcGVzW3JdXTtpLnB1c2gobyl9cmV0dXJuIG5ldyBXaShpLHQuY3VydmVTZWdtZW50cyl9fTtmdW5jdGlvbiBKRShuLHQpe2lmKHQuc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkobikpZm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKXtsZXQgcj1uW2VdO3Quc2hhcGVzLnB1c2goci51dWlkKX1lbHNlIHQuc2hhcGVzLnB1c2gobi51dWlkKTtyZXR1cm4gdH12YXIgY2g9Y2xhc3MgZXh0ZW5kcyB4ZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZG93TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IGZ0KDApLHRoaXMudHJhbnNwYXJlbnQ9ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpc319O2NoLnByb3RvdHlwZS5pc1NoYWRvd01hdGVyaWFsPSEwO3ZhciB5bD1jbGFzcyBleHRlbmRzIHhle2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy50eXBlPSJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgZnQoMTY3NzcyMTUpLHRoaXMucm91Z2huZXNzPTEsdGhpcy5tZXRhbG5lc3M9MCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBmdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9anIsdGhpcy5ub3JtYWxTY2FsZT1uZXcgSygxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMucm91Z2huZXNzTWFwPW51bGwsdGhpcy5tZXRhbG5lc3NNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmVudk1hcEludGVuc2l0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMucm91Z2huZXNzPXQucm91Z2huZXNzLHRoaXMubWV0YWxuZXNzPXQubWV0YWxuZXNzLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMucm91Z2huZXNzTWFwPXQucm91Z2huZXNzTWFwLHRoaXMubWV0YWxuZXNzTWFwPXQubWV0YWxuZXNzTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmVudk1hcEludGVuc2l0eT10LmVudk1hcEludGVuc2l0eSx0aGlzLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319O3lsLnByb3RvdHlwZS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPSEwO3ZhciB1aD1jbGFzcyBleHRlbmRzIHlse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCIsdGhpcy5jbGVhcmNvYXRNYXA9bnVsbCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz0wLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwPW51bGwsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZT1uZXcgSygxLDEpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPW51bGwsdGhpcy5pb3I9MS41LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJyZWZsZWN0aXZpdHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSWUoMi41Kih0aGlzLmlvci0xKS8odGhpcy5pb3IrMSksMCwxKX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuaW9yPSgxKy40KmUpLygxLS40KmUpfX0pLHRoaXMuc2hlZW5Db2xvcj1uZXcgZnQoMCksdGhpcy5zaGVlbkNvbG9yTWFwPW51bGwsdGhpcy5zaGVlblJvdWdobmVzcz0xLHRoaXMuc2hlZW5Sb3VnaG5lc3NNYXA9bnVsbCx0aGlzLnRyYW5zbWlzc2lvbk1hcD1udWxsLHRoaXMudGhpY2tuZXNzPTAsdGhpcy50aGlja25lc3NNYXA9bnVsbCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9MCx0aGlzLmF0dGVudWF0aW9uQ29sb3I9bmV3IGZ0KDEsMSwxKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD1udWxsLHRoaXMuc3BlY3VsYXJDb2xvcj1uZXcgZnQoMSwxLDEpLHRoaXMuc3BlY3VsYXJDb2xvck1hcD1udWxsLHRoaXMuX3NoZWVuPTAsdGhpcy5fY2xlYXJjb2F0PTAsdGhpcy5fdHJhbnNtaXNzaW9uPTAsdGhpcy5zZXRWYWx1ZXModCl9Z2V0IHNoZWVuKCl7cmV0dXJuIHRoaXMuX3NoZWVufXNldCBzaGVlbih0KXt0aGlzLl9zaGVlbj4wIT10PjAmJnRoaXMudmVyc2lvbisrLHRoaXMuX3NoZWVuPXR9Z2V0IGNsZWFyY29hdCgpe3JldHVybiB0aGlzLl9jbGVhcmNvYXR9c2V0IGNsZWFyY29hdCh0KXt0aGlzLl9jbGVhcmNvYXQ+MCE9dD4wJiZ0aGlzLnZlcnNpb24rKyx0aGlzLl9jbGVhcmNvYXQ9dH1nZXQgdHJhbnNtaXNzaW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbWlzc2lvbn1zZXQgdHJhbnNtaXNzaW9uKHQpe3RoaXMuX3RyYW5zbWlzc2lvbj4wIT10PjAmJnRoaXMudmVyc2lvbisrLHRoaXMuX3RyYW5zbWlzc2lvbj10fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQsdGhpcy5jbGVhcmNvYXRNYXA9dC5jbGVhcmNvYXRNYXAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9dC5jbGVhcmNvYXROb3JtYWxNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS5jb3B5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHRoaXMuaW9yPXQuaW9yLHRoaXMuc2hlZW49dC5zaGVlbix0aGlzLnNoZWVuQ29sb3IuY29weSh0LnNoZWVuQ29sb3IpLHRoaXMuc2hlZW5Db2xvck1hcD10LnNoZWVuQ29sb3JNYXAsdGhpcy5zaGVlblJvdWdobmVzcz10LnNoZWVuUm91Z2huZXNzLHRoaXMuc2hlZW5Sb3VnaG5lc3NNYXA9dC5zaGVlblJvdWdobmVzc01hcCx0aGlzLnRyYW5zbWlzc2lvbj10LnRyYW5zbWlzc2lvbix0aGlzLnRyYW5zbWlzc2lvbk1hcD10LnRyYW5zbWlzc2lvbk1hcCx0aGlzLnRoaWNrbmVzcz10LnRoaWNrbmVzcyx0aGlzLnRoaWNrbmVzc01hcD10LnRoaWNrbmVzc01hcCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9dC5hdHRlbnVhdGlvbkRpc3RhbmNlLHRoaXMuYXR0ZW51YXRpb25Db2xvci5jb3B5KHQuYXR0ZW51YXRpb25Db2xvciksdGhpcy5zcGVjdWxhckludGVuc2l0eT10LnNwZWN1bGFySW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9dC5zcGVjdWxhckludGVuc2l0eU1hcCx0aGlzLnNwZWN1bGFyQ29sb3IuY29weSh0LnNwZWN1bGFyQ29sb3IpLHRoaXMuc3BlY3VsYXJDb2xvck1hcD10LnNwZWN1bGFyQ29sb3JNYXAsdGhpc319O3VoLnByb3RvdHlwZS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPSEwO3ZhciBoaD1jbGFzcyBleHRlbmRzIHhle2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoUGhvbmdNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgZnQoMTY3NzcyMTUpLHRoaXMuc3BlY3VsYXI9bmV3IGZ0KDExMTg0ODEpLHRoaXMuc2hpbmluZXNzPTMwLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IGZ0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT1qcix0aGlzLm5vcm1hbFNjYWxlPW5ldyBLKDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT1BbCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fTtoaC5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMDt2YXIgZmg9Y2xhc3MgZXh0ZW5kcyB4ZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17VE9PTjoiIn0sdGhpcy50eXBlPSJNZXNoVG9vbk1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBmdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmdyYWRpZW50TWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IGZ0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT1qcix0aGlzLm5vcm1hbFNjYWxlPW5ldyBLKDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuZ3JhZGllbnRNYXA9dC5ncmFkaWVudE1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319O2ZoLnByb3RvdHlwZS5pc01lc2hUb29uTWF0ZXJpYWw9ITA7dmFyIGRoPWNsYXNzIGV4dGVuZHMgeGV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hOb3JtYWxNYXRlcmlhbCIsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT1qcix0aGlzLm5vcm1hbFNjYWxlPW5ldyBLKDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319O2RoLnByb3RvdHlwZS5pc01lc2hOb3JtYWxNYXRlcmlhbD0hMDt2YXIgcGg9Y2xhc3MgZXh0ZW5kcyB4ZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaExhbWJlcnRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgZnQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IGZ0KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT1BbCx0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fTtwaC5wcm90b3R5cGUuaXNNZXNoTGFtYmVydE1hdGVyaWFsPSEwO3ZhciBtaD1jbGFzcyBleHRlbmRzIHhle2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMudHlwZT0iTWVzaE1hdGNhcE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBmdCgxNjc3NzIxNSksdGhpcy5tYXRjYXA9bnVsbCx0aGlzLm1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9anIsdGhpcy5ub3JtYWxTY2FsZT1uZXcgSygxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hdGNhcD10Lm1hdGNhcCx0aGlzLm1hcD10Lm1hcCx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319O21oLnByb3RvdHlwZS5pc01lc2hNYXRjYXBNYXRlcmlhbD0hMDt2YXIgZ2g9Y2xhc3MgZXh0ZW5kcyB6bntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZURhc2hlZE1hdGVyaWFsIix0aGlzLnNjYWxlPTEsdGhpcy5kYXNoU2l6ZT0zLHRoaXMuZ2FwU2l6ZT0xLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zY2FsZT10LnNjYWxlLHRoaXMuZGFzaFNpemU9dC5kYXNoU2l6ZSx0aGlzLmdhcFNpemU9dC5nYXBTaXplLHRoaXN9fTtnaC5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7dmFyIEt0PXthcnJheVNsaWNlOmZ1bmN0aW9uKG4sdCxlKXtyZXR1cm4gS3QuaXNUeXBlZEFycmF5KG4pP25ldyBuLmNvbnN0cnVjdG9yKG4uc3ViYXJyYXkodCxlIT09dm9pZCAwP2U6bi5sZW5ndGgpKTpuLnNsaWNlKHQsZSl9LGNvbnZlcnRBcnJheTpmdW5jdGlvbihuLHQsZSl7cmV0dXJuIW58fCFlJiZuLmNvbnN0cnVjdG9yPT09dD9uOnR5cGVvZiB0LkJZVEVTX1BFUl9FTEVNRU5UPT0ibnVtYmVyIj9uZXcgdChuKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKX0saXNUeXBlZEFycmF5OmZ1bmN0aW9uKG4pe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcobikmJiEobiBpbnN0YW5jZW9mIERhdGFWaWV3KX0sZ2V0S2V5ZnJhbWVPcmRlcjpmdW5jdGlvbihuKXtmdW5jdGlvbiB0KHIscyl7cmV0dXJuIG5bcl0tbltzXX1sZXQgZT1uLmxlbmd0aCxpPW5ldyBBcnJheShlKTtmb3IobGV0IHI9MDtyIT09ZTsrK3IpaVtyXT1yO3JldHVybiBpLnNvcnQodCksaX0sc29ydGVkQXJyYXk6ZnVuY3Rpb24obix0LGUpe2xldCBpPW4ubGVuZ3RoLHI9bmV3IG4uY29uc3RydWN0b3IoaSk7Zm9yKGxldCBzPTAsbz0wO28hPT1pOysrcyl7bGV0IGE9ZVtzXSp0O2ZvcihsZXQgbD0wO2whPT10OysrbClyW28rK109blthK2xdfXJldHVybiByfSxmbGF0dGVuSlNPTjpmdW5jdGlvbihuLHQsZSxpKXtsZXQgcj0xLHM9blswXTtmb3IoO3MhPT12b2lkIDAmJnNbaV09PT12b2lkIDA7KXM9bltyKytdO2lmKHM9PT12b2lkIDApcmV0dXJuO2xldCBvPXNbaV07aWYobyE9PXZvaWQgMClpZihBcnJheS5pc0FycmF5KG8pKWRvIG89c1tpXSxvIT09dm9pZCAwJiYodC5wdXNoKHMudGltZSksZS5wdXNoLmFwcGx5KGUsbykpLHM9bltyKytdO3doaWxlKHMhPT12b2lkIDApO2Vsc2UgaWYoby50b0FycmF5IT09dm9pZCAwKWRvIG89c1tpXSxvIT09dm9pZCAwJiYodC5wdXNoKHMudGltZSksby50b0FycmF5KGUsZS5sZW5ndGgpKSxzPW5bcisrXTt3aGlsZShzIT09dm9pZCAwKTtlbHNlIGRvIG89c1tpXSxvIT09dm9pZCAwJiYodC5wdXNoKHMudGltZSksZS5wdXNoKG8pKSxzPW5bcisrXTt3aGlsZShzIT09dm9pZCAwKX0sc3ViY2xpcDpmdW5jdGlvbihuLHQsZSxpLHI9MzApe2xldCBzPW4uY2xvbmUoKTtzLm5hbWU9dDtsZXQgbz1bXTtmb3IobGV0IGw9MDtsPHMudHJhY2tzLmxlbmd0aDsrK2wpe2xldCBjPXMudHJhY2tzW2xdLHU9Yy5nZXRWYWx1ZVNpemUoKSxoPVtdLGY9W107Zm9yKGxldCBkPTA7ZDxjLnRpbWVzLmxlbmd0aDsrK2Qpe2xldCBnPWMudGltZXNbZF0qcjtpZighKGc8ZXx8Zz49aSkpe2gucHVzaChjLnRpbWVzW2RdKTtmb3IobGV0IHg9MDt4PHU7Kyt4KWYucHVzaChjLnZhbHVlc1tkKnUreF0pfX1oLmxlbmd0aCE9PTAmJihjLnRpbWVzPUt0LmNvbnZlcnRBcnJheShoLGMudGltZXMuY29uc3RydWN0b3IpLGMudmFsdWVzPUt0LmNvbnZlcnRBcnJheShmLGMudmFsdWVzLmNvbnN0cnVjdG9yKSxvLnB1c2goYykpfXMudHJhY2tzPW87bGV0IGE9MS8wO2ZvcihsZXQgbD0wO2w8cy50cmFja3MubGVuZ3RoOysrbClhPnMudHJhY2tzW2xdLnRpbWVzWzBdJiYoYT1zLnRyYWNrc1tsXS50aW1lc1swXSk7Zm9yKGxldCBsPTA7bDxzLnRyYWNrcy5sZW5ndGg7KytsKXMudHJhY2tzW2xdLnNoaWZ0KC0xKmEpO3JldHVybiBzLnJlc2V0RHVyYXRpb24oKSxzfSxtYWtlQ2xpcEFkZGl0aXZlOmZ1bmN0aW9uKG4sdD0wLGU9bixpPTMwKXtpPD0wJiYoaT0zMCk7bGV0IHI9ZS50cmFja3MubGVuZ3RoLHM9dC9pO2ZvcihsZXQgbz0wO288cjsrK28pe2xldCBhPWUudHJhY2tzW29dLGw9YS5WYWx1ZVR5cGVOYW1lO2lmKGw9PT0iYm9vbCJ8fGw9PT0ic3RyaW5nIiljb250aW51ZTtsZXQgYz1uLnRyYWNrcy5maW5kKGZ1bmN0aW9uKG0pe3JldHVybiBtLm5hbWU9PT1hLm5hbWUmJm0uVmFsdWVUeXBlTmFtZT09PWx9KTtpZihjPT09dm9pZCAwKWNvbnRpbnVlO2xldCB1PTAsaD1hLmdldFZhbHVlU2l6ZSgpO2EuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJih1PWgvMyk7bGV0IGY9MCxkPWMuZ2V0VmFsdWVTaXplKCk7Yy5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKGY9ZC8zKTtsZXQgZz1hLnRpbWVzLmxlbmd0aC0xLHg7aWYoczw9YS50aW1lc1swXSl7bGV0IG09dSxwPWgtdTt4PUt0LmFycmF5U2xpY2UoYS52YWx1ZXMsbSxwKX1lbHNlIGlmKHM+PWEudGltZXNbZ10pe2xldCBtPWcqaCt1LHA9bStoLXU7eD1LdC5hcnJheVNsaWNlKGEudmFsdWVzLG0scCl9ZWxzZXtsZXQgbT1hLmNyZWF0ZUludGVycG9sYW50KCkscD11LGI9aC11O20uZXZhbHVhdGUocykseD1LdC5hcnJheVNsaWNlKG0ucmVzdWx0QnVmZmVyLHAsYil9bD09PSJxdWF0ZXJuaW9uIiYmbmV3IEVlKCkuZnJvbUFycmF5KHgpLm5vcm1hbGl6ZSgpLmNvbmp1Z2F0ZSgpLnRvQXJyYXkoeCk7bGV0IHY9Yy50aW1lcy5sZW5ndGg7Zm9yKGxldCBtPTA7bTx2OysrbSl7bGV0IHA9bSpkK2Y7aWYobD09PSJxdWF0ZXJuaW9uIilFZS5tdWx0aXBseVF1YXRlcm5pb25zRmxhdChjLnZhbHVlcyxwLHgsMCxjLnZhbHVlcyxwKTtlbHNle2xldCBiPWQtZioyO2ZvcihsZXQgXz0wO188YjsrK18pYy52YWx1ZXNbcCtfXS09eFtfXX19fXJldHVybiBuLmJsZW5kTW9kZT1oMCxufX0scG49Y2xhc3N7Y29uc3RydWN0b3IodCxlLGkscil7dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM9dCx0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMucmVzdWx0QnVmZmVyPXIhPT12b2lkIDA/cjpuZXcgZS5jb25zdHJ1Y3RvcihpKSx0aGlzLnNhbXBsZVZhbHVlcz1lLHRoaXMudmFsdWVTaXplPWksdGhpcy5zZXR0aW5ncz1udWxsLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17fX1ldmFsdWF0ZSh0KXtsZXQgZT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucyxpPXRoaXMuX2NhY2hlZEluZGV4LHI9ZVtpXSxzPWVbaS0xXTt0OntlOntsZXQgbztuOntpOmlmKCEodDxyKSl7Zm9yKGxldCBhPWkrMjs7KXtpZihyPT09dm9pZCAwKXtpZih0PHMpYnJlYWsgaTtyZXR1cm4gaT1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1pLHRoaXMuYWZ0ZXJFbmRfKGktMSx0LHMpfWlmKGk9PT1hKWJyZWFrO2lmKHM9cixyPWVbKytpXSx0PHIpYnJlYWsgZX1vPWUubGVuZ3RoO2JyZWFrIG59aWYoISh0Pj1zKSl7bGV0IGE9ZVsxXTt0PGEmJihpPTIscz1hKTtmb3IobGV0IGw9aS0yOzspe2lmKHM9PT12b2lkIDApcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LHIpO2lmKGk9PT1sKWJyZWFrO2lmKHI9cyxzPWVbLS1pLTFdLHQ+PXMpYnJlYWsgZX1vPWksaT0wO2JyZWFrIG59YnJlYWsgdH1mb3IoO2k8bzspe2xldCBhPWkrbz4+PjE7dDxlW2FdP289YTppPWErMX1pZihyPWVbaV0scz1lW2ktMV0scz09PXZvaWQgMClyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQscik7aWYocj09PXZvaWQgMClyZXR1cm4gaT1lLmxlbmd0aCx0aGlzLl9jYWNoZWRJbmRleD1pLHRoaXMuYWZ0ZXJFbmRfKGktMSxzLHQpfXRoaXMuX2NhY2hlZEluZGV4PWksdGhpcy5pbnRlcnZhbENoYW5nZWRfKGkscyxyKX1yZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZV8oaSxzLHQscil9Z2V0U2V0dGluZ3NfKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3N8fHRoaXMuRGVmYXVsdFNldHRpbmdzX31jb3B5U2FtcGxlVmFsdWVfKHQpe2xldCBlPXRoaXMucmVzdWx0QnVmZmVyLGk9dGhpcy5zYW1wbGVWYWx1ZXMscj10aGlzLnZhbHVlU2l6ZSxzPXQqcjtmb3IobGV0IG89MDtvIT09cjsrK28pZVtvXT1pW3Mrb107cmV0dXJuIGV9aW50ZXJwb2xhdGVfKCl7dGhyb3cgbmV3IEVycm9yKCJjYWxsIHRvIGFic3RyYWN0IG1ldGhvZCIpfWludGVydmFsQ2hhbmdlZF8oKXt9fTtwbi5wcm90b3R5cGUuYmVmb3JlU3RhcnRfPXBuLnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfO3BuLnByb3RvdHlwZS5hZnRlckVuZF89cG4ucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV87dmFyIHhoPWNsYXNzIGV4dGVuZHMgcG57Y29uc3RydWN0b3IodCxlLGkscil7c3VwZXIodCxlLGksciksdGhpcy5fd2VpZ2h0UHJldj0tMCx0aGlzLl9vZmZzZXRQcmV2PS0wLHRoaXMuX3dlaWdodE5leHQ9LTAsdGhpcy5fb2Zmc2V0TmV4dD0tMCx0aGlzLkRlZmF1bHRTZXR0aW5nc189e2VuZGluZ1N0YXJ0OklyLGVuZGluZ0VuZDpJcn19aW50ZXJ2YWxDaGFuZ2VkXyh0LGUsaSl7bGV0IHI9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnMscz10LTIsbz10KzEsYT1yW3NdLGw9cltvXTtpZihhPT09dm9pZCAwKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0KXtjYXNlIE5yOnM9dCxhPTIqZS1pO2JyZWFrO2Nhc2UgdGw6cz1yLmxlbmd0aC0yLGE9ZStyW3NdLXJbcysxXTticmVhaztkZWZhdWx0OnM9dCxhPWl9aWYobD09PXZvaWQgMClzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdFbmQpe2Nhc2UgTnI6bz10LGw9MippLWU7YnJlYWs7Y2FzZSB0bDpvPTEsbD1pK3JbMV0tclswXTticmVhaztkZWZhdWx0Om89dC0xLGw9ZX1sZXQgYz0oaS1lKSouNSx1PXRoaXMudmFsdWVTaXplO3RoaXMuX3dlaWdodFByZXY9Yy8oZS1hKSx0aGlzLl93ZWlnaHROZXh0PWMvKGwtaSksdGhpcy5fb2Zmc2V0UHJldj1zKnUsdGhpcy5fb2Zmc2V0TmV4dD1vKnV9aW50ZXJwb2xhdGVfKHQsZSxpLHIpe2xldCBzPXRoaXMucmVzdWx0QnVmZmVyLG89dGhpcy5zYW1wbGVWYWx1ZXMsYT10aGlzLnZhbHVlU2l6ZSxsPXQqYSxjPWwtYSx1PXRoaXMuX29mZnNldFByZXYsaD10aGlzLl9vZmZzZXROZXh0LGY9dGhpcy5fd2VpZ2h0UHJldixkPXRoaXMuX3dlaWdodE5leHQsZz0oaS1lKS8oci1lKSx4PWcqZyx2PXgqZyxtPS1mKnYrMipmKngtZipnLHA9KDErZikqdisoLTEuNS0yKmYpKngrKC0uNStmKSpnKzEsYj0oLTEtZCkqdisoMS41K2QpKngrLjUqZyxfPWQqdi1kKng7Zm9yKGxldCBTPTA7UyE9PWE7KytTKXNbU109bSpvW3UrU10rcCpvW2MrU10rYipvW2wrU10rXypvW2grU107cmV0dXJuIHN9fSx2bD1jbGFzcyBleHRlbmRzIHBue2NvbnN0cnVjdG9yKHQsZSxpLHIpe3N1cGVyKHQsZSxpLHIpfWludGVycG9sYXRlXyh0LGUsaSxyKXtsZXQgcz10aGlzLnJlc3VsdEJ1ZmZlcixvPXRoaXMuc2FtcGxlVmFsdWVzLGE9dGhpcy52YWx1ZVNpemUsbD10KmEsYz1sLWEsdT0oaS1lKS8oci1lKSxoPTEtdTtmb3IobGV0IGY9MDtmIT09YTsrK2Ypc1tmXT1vW2MrZl0qaCtvW2wrZl0qdTtyZXR1cm4gc319LHloPWNsYXNzIGV4dGVuZHMgcG57Y29uc3RydWN0b3IodCxlLGkscil7c3VwZXIodCxlLGkscil9aW50ZXJwb2xhdGVfKHQpe3JldHVybiB0aGlzLmNvcHlTYW1wbGVWYWx1ZV8odC0xKX19LFhlPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxpLHIpe2lmKHQ9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiB0cmFjayBuYW1lIGlzIHVuZGVmaW5lZCIpO2lmKGU9PT12b2lkIDB8fGUubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IG5vIGtleWZyYW1lcyBpbiB0cmFjayBuYW1lZCAiK3QpO3RoaXMubmFtZT10LHRoaXMudGltZXM9S3QuY29udmVydEFycmF5KGUsdGhpcy5UaW1lQnVmZmVyVHlwZSksdGhpcy52YWx1ZXM9S3QuY29udmVydEFycmF5KGksdGhpcy5WYWx1ZUJ1ZmZlclR5cGUpLHRoaXMuc2V0SW50ZXJwb2xhdGlvbihyfHx0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKX1zdGF0aWMgdG9KU09OKHQpe2xldCBlPXQuY29uc3RydWN0b3IsaTtpZihlLnRvSlNPTiE9PXRoaXMudG9KU09OKWk9ZS50b0pTT04odCk7ZWxzZXtpPXtuYW1lOnQubmFtZSx0aW1lczpLdC5jb252ZXJ0QXJyYXkodC50aW1lcyxBcnJheSksdmFsdWVzOkt0LmNvbnZlcnRBcnJheSh0LnZhbHVlcyxBcnJheSl9O2xldCByPXQuZ2V0SW50ZXJwb2xhdGlvbigpO3IhPT10LkRlZmF1bHRJbnRlcnBvbGF0aW9uJiYoaS5pbnRlcnBvbGF0aW9uPXIpfXJldHVybiBpLnR5cGU9dC5WYWx1ZVR5cGVOYW1lLGl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGUodCl7cmV0dXJuIG5ldyB5aCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyKHQpe3JldHVybiBuZXcgdmwodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfUludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aCh0KXtyZXR1cm4gbmV3IHhoKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1zZXRJbnRlcnBvbGF0aW9uKHQpe2xldCBlO3N3aXRjaCh0KXtjYXNlIFFhOmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTticmVhaztjYXNlIGphOmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI7YnJlYWs7Y2FzZSBqYzplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoO2JyZWFrfWlmKGU9PT12b2lkIDApe2xldCBpPSJ1bnN1cHBvcnRlZCBpbnRlcnBvbGF0aW9uIGZvciAiK3RoaXMuVmFsdWVUeXBlTmFtZSsiIGtleWZyYW1lIHRyYWNrIG5hbWVkICIrdGhpcy5uYW1lO2lmKHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQ9PT12b2lkIDApaWYodCE9PXRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pdGhpcy5zZXRJbnRlcnBvbGF0aW9uKHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGkpO3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLktleWZyYW1lVHJhY2s6IixpKSx0aGlzfXJldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYW50PWUsdGhpc31nZXRJbnRlcnBvbGF0aW9uKCl7c3dpdGNoKHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQpe2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTpyZXR1cm4gUWE7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpyZXR1cm4gamE7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpyZXR1cm4gamN9fWdldFZhbHVlU2l6ZSgpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGgvdGhpcy50aW1lcy5sZW5ndGh9c2hpZnQodCl7aWYodCE9PTApe2xldCBlPXRoaXMudGltZXM7Zm9yKGxldCBpPTAscj1lLmxlbmd0aDtpIT09cjsrK2kpZVtpXSs9dH1yZXR1cm4gdGhpc31zY2FsZSh0KXtpZih0IT09MSl7bGV0IGU9dGhpcy50aW1lcztmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2khPT1yOysraSllW2ldKj10fXJldHVybiB0aGlzfXRyaW0odCxlKXtsZXQgaT10aGlzLnRpbWVzLHI9aS5sZW5ndGgscz0wLG89ci0xO2Zvcig7cyE9PXImJmlbc108dDspKytzO2Zvcig7byE9PS0xJiZpW29dPmU7KS0tbztpZigrK28scyE9PTB8fG8hPT1yKXtzPj1vJiYobz1NYXRoLm1heChvLDEpLHM9by0xKTtsZXQgYT10aGlzLmdldFZhbHVlU2l6ZSgpO3RoaXMudGltZXM9S3QuYXJyYXlTbGljZShpLHMsbyksdGhpcy52YWx1ZXM9S3QuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyxzKmEsbyphKX1yZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwLGU9dGhpcy5nZXRWYWx1ZVNpemUoKTtlLU1hdGguZmxvb3IoZSkhPT0wJiYoY29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogSW52YWxpZCB2YWx1ZSBzaXplIGluIHRyYWNrLiIsdGhpcyksdD0hMSk7bGV0IGk9dGhpcy50aW1lcyxyPXRoaXMudmFsdWVzLHM9aS5sZW5ndGg7cz09PTAmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUcmFjayBpcyBlbXB0eS4iLHRoaXMpLHQ9ITEpO2xldCBvPW51bGw7Zm9yKGxldCBhPTA7YSE9PXM7YSsrKXtsZXQgbD1pW2FdO2lmKHR5cGVvZiBsPT0ibnVtYmVyIiYmaXNOYU4obCkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRpbWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxhLGwpLHQ9ITE7YnJlYWt9aWYobyE9PW51bGwmJm8+bCl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogT3V0IG9mIG9yZGVyIGtleXMuIix0aGlzLGEsbCxvKSx0PSExO2JyZWFrfW89bH1pZihyIT09dm9pZCAwJiZLdC5pc1R5cGVkQXJyYXkocikpZm9yKGxldCBhPTAsbD1yLmxlbmd0aDthIT09bDsrK2Epe2xldCBjPXJbYV07aWYoaXNOYU4oYykpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFZhbHVlIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLHRoaXMsYSxjKSx0PSExO2JyZWFrfX1yZXR1cm4gdH1vcHRpbWl6ZSgpe2xldCB0PUt0LmFycmF5U2xpY2UodGhpcy50aW1lcyksZT1LdC5hcnJheVNsaWNlKHRoaXMudmFsdWVzKSxpPXRoaXMuZ2V0VmFsdWVTaXplKCkscj10aGlzLmdldEludGVycG9sYXRpb24oKT09PWpjLHM9dC5sZW5ndGgtMSxvPTE7Zm9yKGxldCBhPTE7YTxzOysrYSl7bGV0IGw9ITEsYz10W2FdLHU9dFthKzFdO2lmKGMhPT11JiYoYSE9PTF8fGMhPT10WzBdKSlpZihyKWw9ITA7ZWxzZXtsZXQgaD1hKmksZj1oLWksZD1oK2k7Zm9yKGxldCBnPTA7ZyE9PWk7KytnKXtsZXQgeD1lW2grZ107aWYoeCE9PWVbZitnXXx8eCE9PWVbZCtnXSl7bD0hMDticmVha319fWlmKGwpe2lmKGEhPT1vKXt0W29dPXRbYV07bGV0IGg9YSppLGY9byppO2ZvcihsZXQgZD0wO2QhPT1pOysrZCllW2YrZF09ZVtoK2RdfSsrb319aWYocz4wKXt0W29dPXRbc107Zm9yKGxldCBhPXMqaSxsPW8qaSxjPTA7YyE9PWk7KytjKWVbbCtjXT1lW2ErY107KytvfXJldHVybiBvIT09dC5sZW5ndGg/KHRoaXMudGltZXM9S3QuYXJyYXlTbGljZSh0LDAsbyksdGhpcy52YWx1ZXM9S3QuYXJyYXlTbGljZShlLDAsbyppKSk6KHRoaXMudGltZXM9dCx0aGlzLnZhbHVlcz1lKSx0aGlzfWNsb25lKCl7bGV0IHQ9S3QuYXJyYXlTbGljZSh0aGlzLnRpbWVzLDApLGU9S3QuYXJyYXlTbGljZSh0aGlzLnZhbHVlcywwKSxpPXRoaXMuY29uc3RydWN0b3Iscj1uZXcgaSh0aGlzLm5hbWUsdCxlKTtyZXR1cm4gci5jcmVhdGVJbnRlcnBvbGFudD10aGlzLmNyZWF0ZUludGVycG9sYW50LHJ9fTtYZS5wcm90b3R5cGUuVGltZUJ1ZmZlclR5cGU9RmxvYXQzMkFycmF5O1hlLnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9RmxvYXQzMkFycmF5O1hlLnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1qYTt2YXIgdWk9Y2xhc3MgZXh0ZW5kcyBYZXt9O3VpLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJib29sIjt1aS5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5O3VpLnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1RYTt1aS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMDt1aS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDt2YXIgX2w9Y2xhc3MgZXh0ZW5kcyBYZXt9O19sLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJjb2xvciI7dmFyICRyPWNsYXNzIGV4dGVuZHMgWGV7fTskci5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ibnVtYmVyIjt2YXIgdmg9Y2xhc3MgZXh0ZW5kcyBwbntjb25zdHJ1Y3Rvcih0LGUsaSxyKXtzdXBlcih0LGUsaSxyKX1pbnRlcnBvbGF0ZV8odCxlLGkscil7bGV0IHM9dGhpcy5yZXN1bHRCdWZmZXIsbz10aGlzLnNhbXBsZVZhbHVlcyxhPXRoaXMudmFsdWVTaXplLGw9KGktZSkvKHItZSksYz10KmE7Zm9yKGxldCB1PWMrYTtjIT09dTtjKz00KUVlLnNsZXJwRmxhdChzLDAsbyxjLWEsbyxjLGwpO3JldHVybiBzfX0scWk9Y2xhc3MgZXh0ZW5kcyBYZXtJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyB2aCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9fTtxaS5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0icXVhdGVybmlvbiI7cWkucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPWphO3FpLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO3ZhciBoaT1jbGFzcyBleHRlbmRzIFhle307aGkucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9InN0cmluZyI7aGkucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1BcnJheTtoaS5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249UWE7aGkucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcj12b2lkIDA7aGkucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7dmFyIEtyPWNsYXNzIGV4dGVuZHMgWGV7fTtLci5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0idmVjdG9yIjt2YXIgd2w9Y2xhc3N7Y29uc3RydWN0b3IodCxlPS0xLGkscj0kaCl7dGhpcy5uYW1lPXQsdGhpcy50cmFja3M9aSx0aGlzLmR1cmF0aW9uPWUsdGhpcy5ibGVuZE1vZGU9cix0aGlzLnV1aWQ9dG4oKSx0aGlzLmR1cmF0aW9uPDAmJnRoaXMucmVzZXREdXJhdGlvbigpfXN0YXRpYyBwYXJzZSh0KXtsZXQgZT1bXSxpPXQudHJhY2tzLHI9MS8odC5mcHN8fDEpO2ZvcihsZXQgbz0wLGE9aS5sZW5ndGg7byE9PWE7KytvKWUucHVzaChLRShpW29dKS5zY2FsZShyKSk7bGV0IHM9bmV3IHRoaXModC5uYW1lLHQuZHVyYXRpb24sZSx0LmJsZW5kTW9kZSk7cmV0dXJuIHMudXVpZD10LnV1aWQsc31zdGF0aWMgdG9KU09OKHQpe2xldCBlPVtdLGk9dC50cmFja3Mscj17bmFtZTp0Lm5hbWUsZHVyYXRpb246dC5kdXJhdGlvbix0cmFja3M6ZSx1dWlkOnQudXVpZCxibGVuZE1vZGU6dC5ibGVuZE1vZGV9O2ZvcihsZXQgcz0wLG89aS5sZW5ndGg7cyE9PW87KytzKWUucHVzaChYZS50b0pTT04oaVtzXSkpO3JldHVybiByfXN0YXRpYyBDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LGUsaSxyKXtsZXQgcz1lLmxlbmd0aCxvPVtdO2ZvcihsZXQgYT0wO2E8czthKyspe2xldCBsPVtdLGM9W107bC5wdXNoKChhK3MtMSklcyxhLChhKzEpJXMpLGMucHVzaCgwLDEsMCk7bGV0IHU9S3QuZ2V0S2V5ZnJhbWVPcmRlcihsKTtsPUt0LnNvcnRlZEFycmF5KGwsMSx1KSxjPUt0LnNvcnRlZEFycmF5KGMsMSx1KSwhciYmbFswXT09PTAmJihsLnB1c2gocyksYy5wdXNoKGNbMF0pKSxvLnB1c2gobmV3ICRyKCIubW9ycGhUYXJnZXRJbmZsdWVuY2VzWyIrZVthXS5uYW1lKyJdIixsLGMpLnNjYWxlKDEvaSkpfXJldHVybiBuZXcgdGhpcyh0LC0xLG8pfXN0YXRpYyBmaW5kQnlOYW1lKHQsZSl7bGV0IGk9dDtpZighQXJyYXkuaXNBcnJheSh0KSl7bGV0IHI9dDtpPXIuZ2VvbWV0cnkmJnIuZ2VvbWV0cnkuYW5pbWF0aW9uc3x8ci5hbmltYXRpb25zfWZvcihsZXQgcj0wO3I8aS5sZW5ndGg7cisrKWlmKGlbcl0ubmFtZT09PWUpcmV0dXJuIGlbcl07cmV0dXJuIG51bGx9c3RhdGljIENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzKHQsZSxpKXtsZXQgcj17fSxzPS9eKFtcdy1dKj8pKFtcZF0rKSQvO2ZvcihsZXQgYT0wLGw9dC5sZW5ndGg7YTxsO2ErKyl7bGV0IGM9dFthXSx1PWMubmFtZS5tYXRjaChzKTtpZih1JiZ1Lmxlbmd0aD4xKXtsZXQgaD11WzFdLGY9cltoXTtmfHwocltoXT1mPVtdKSxmLnB1c2goYyl9fWxldCBvPVtdO2ZvcihsZXQgYSBpbiByKW8ucHVzaCh0aGlzLkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKGEsclthXSxlLGkpKTtyZXR1cm4gb31zdGF0aWMgcGFyc2VBbmltYXRpb24odCxlKXtpZighdClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO2xldCBpPWZ1bmN0aW9uKGgsZixkLGcseCl7aWYoZC5sZW5ndGghPT0wKXtsZXQgdj1bXSxtPVtdO0t0LmZsYXR0ZW5KU09OKGQsdixtLGcpLHYubGVuZ3RoIT09MCYmeC5wdXNoKG5ldyBoKGYsdixtKSl9fSxyPVtdLHM9dC5uYW1lfHwiZGVmYXVsdCIsbz10LmZwc3x8MzAsYT10LmJsZW5kTW9kZSxsPXQubGVuZ3RofHwtMSxjPXQuaGllcmFyY2h5fHxbXTtmb3IobGV0IGg9MDtoPGMubGVuZ3RoO2grKyl7bGV0IGY9Y1toXS5rZXlzO2lmKCEoIWZ8fGYubGVuZ3RoPT09MCkpaWYoZlswXS5tb3JwaFRhcmdldHMpe2xldCBkPXt9LGc7Zm9yKGc9MDtnPGYubGVuZ3RoO2crKylpZihmW2ddLm1vcnBoVGFyZ2V0cylmb3IobGV0IHg9MDt4PGZbZ10ubW9ycGhUYXJnZXRzLmxlbmd0aDt4KyspZFtmW2ddLm1vcnBoVGFyZ2V0c1t4XV09LTE7Zm9yKGxldCB4IGluIGQpe2xldCB2PVtdLG09W107Zm9yKGxldCBwPTA7cCE9PWZbZ10ubW9ycGhUYXJnZXRzLmxlbmd0aDsrK3Ape2xldCBiPWZbZ107di5wdXNoKGIudGltZSksbS5wdXNoKGIubW9ycGhUYXJnZXQ9PT14PzE6MCl9ci5wdXNoKG5ldyAkcigiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWyIreCsiXSIsdixtKSl9bD1kLmxlbmd0aCoob3x8MSl9ZWxzZXtsZXQgZD0iLmJvbmVzWyIrZVtoXS5uYW1lKyJdIjtpKEtyLGQrIi5wb3NpdGlvbiIsZiwicG9zIixyKSxpKHFpLGQrIi5xdWF0ZXJuaW9uIixmLCJyb3QiLHIpLGkoS3IsZCsiLnNjYWxlIixmLCJzY2wiLHIpfX1yZXR1cm4gci5sZW5ndGg9PT0wP251bGw6bmV3IHRoaXMocyxsLHIsYSl9cmVzZXREdXJhdGlvbigpe2xldCB0PXRoaXMudHJhY2tzLGU9MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2khPT1yOysraSl7bGV0IHM9dGhpcy50cmFja3NbaV07ZT1NYXRoLm1heChlLHMudGltZXNbcy50aW1lcy5sZW5ndGgtMV0pfXJldHVybiB0aGlzLmR1cmF0aW9uPWUsdGhpc310cmltKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLnRyaW0oMCx0aGlzLmR1cmF0aW9uKTtyZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0PXQmJnRoaXMudHJhY2tzW2VdLnZhbGlkYXRlKCk7cmV0dXJuIHR9b3B0aW1pemUoKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc31jbG9uZSgpe2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0LnB1c2godGhpcy50cmFja3NbZV0uY2xvbmUoKSk7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSx0aGlzLmR1cmF0aW9uLHQsdGhpcy5ibGVuZE1vZGUpfXRvSlNPTigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnRvSlNPTih0aGlzKX19O2Z1bmN0aW9uICRFKG4pe3N3aXRjaChuLnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2NhbGFyIjpjYXNlImRvdWJsZSI6Y2FzZSJmbG9hdCI6Y2FzZSJudW1iZXIiOmNhc2UiaW50ZWdlciI6cmV0dXJuICRyO2Nhc2UidmVjdG9yIjpjYXNlInZlY3RvcjIiOmNhc2UidmVjdG9yMyI6Y2FzZSJ2ZWN0b3I0IjpyZXR1cm4gS3I7Y2FzZSJjb2xvciI6cmV0dXJuIF9sO2Nhc2UicXVhdGVybmlvbiI6cmV0dXJuIHFpO2Nhc2UiYm9vbCI6Y2FzZSJib29sZWFuIjpyZXR1cm4gdWk7Y2FzZSJzdHJpbmciOnJldHVybiBoaX10aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFVuc3VwcG9ydGVkIHR5cGVOYW1lOiAiK24pfWZ1bmN0aW9uIEtFKG4pe2lmKG4udHlwZT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7bGV0IHQ9JEUobi50eXBlKTtpZihuLnRpbWVzPT09dm9pZCAwKXtsZXQgZT1bXSxpPVtdO0t0LmZsYXR0ZW5KU09OKG4ua2V5cyxlLGksInZhbHVlIiksbi50aW1lcz1lLG4udmFsdWVzPWl9cmV0dXJuIHQucGFyc2UhPT12b2lkIDA/dC5wYXJzZShuKTpuZXcgdChuLm5hbWUsbi50aW1lcyxuLnZhbHVlcyxuLmludGVycG9sYXRpb24pfXZhciBRcj17ZW5hYmxlZDohMSxmaWxlczp7fSxhZGQ6ZnVuY3Rpb24obix0KXt0aGlzLmVuYWJsZWQhPT0hMSYmKHRoaXMuZmlsZXNbbl09dCl9LGdldDpmdW5jdGlvbihuKXtpZih0aGlzLmVuYWJsZWQhPT0hMSlyZXR1cm4gdGhpcy5maWxlc1tuXX0scmVtb3ZlOmZ1bmN0aW9uKG4pe2RlbGV0ZSB0aGlzLmZpbGVzW25dfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZmlsZXM9e319fSxfaD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsaSl7bGV0IHI9dGhpcyxzPSExLG89MCxhPTAsbCxjPVtdO3RoaXMub25TdGFydD12b2lkIDAsdGhpcy5vbkxvYWQ9dCx0aGlzLm9uUHJvZ3Jlc3M9ZSx0aGlzLm9uRXJyb3I9aSx0aGlzLml0ZW1TdGFydD1mdW5jdGlvbih1KXthKysscz09PSExJiZyLm9uU3RhcnQhPT12b2lkIDAmJnIub25TdGFydCh1LG8sYSkscz0hMH0sdGhpcy5pdGVtRW5kPWZ1bmN0aW9uKHUpe28rKyxyLm9uUHJvZ3Jlc3MhPT12b2lkIDAmJnIub25Qcm9ncmVzcyh1LG8sYSksbz09PWEmJihzPSExLHIub25Mb2FkIT09dm9pZCAwJiZyLm9uTG9hZCgpKX0sdGhpcy5pdGVtRXJyb3I9ZnVuY3Rpb24odSl7ci5vbkVycm9yIT09dm9pZCAwJiZyLm9uRXJyb3IodSl9LHRoaXMucmVzb2x2ZVVSTD1mdW5jdGlvbih1KXtyZXR1cm4gbD9sKHUpOnV9LHRoaXMuc2V0VVJMTW9kaWZpZXI9ZnVuY3Rpb24odSl7cmV0dXJuIGw9dSx0aGlzfSx0aGlzLmFkZEhhbmRsZXI9ZnVuY3Rpb24odSxoKXtyZXR1cm4gYy5wdXNoKHUsaCksdGhpc30sdGhpcy5yZW1vdmVIYW5kbGVyPWZ1bmN0aW9uKHUpe2xldCBoPWMuaW5kZXhPZih1KTtyZXR1cm4gaCE9PS0xJiZjLnNwbGljZShoLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbih1KXtmb3IobGV0IGg9MCxmPWMubGVuZ3RoO2g8ZjtoKz0yKXtsZXQgZD1jW2hdLGc9Y1toKzFdO2lmKGQuZ2xvYmFsJiYoZC5sYXN0SW5kZXg9MCksZC50ZXN0KHUpKXJldHVybiBnfXJldHVybiBudWxsfX19LFFFPW5ldyBfaCxtbj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLm1hbmFnZXI9dCE9PXZvaWQgMD90OlFFLHRoaXMuY3Jvc3NPcmlnaW49ImFub255bW91cyIsdGhpcy53aXRoQ3JlZGVudGlhbHM9ITEsdGhpcy5wYXRoPSIiLHRoaXMucmVzb3VyY2VQYXRoPSIiLHRoaXMucmVxdWVzdEhlYWRlcj17fX1sb2FkKCl7fWxvYWRBc3luYyh0LGUpe2xldCBpPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIscyl7aS5sb2FkKHQscixlLHMpfSl9cGFyc2UoKXt9c2V0Q3Jvc3NPcmlnaW4odCl7cmV0dXJuIHRoaXMuY3Jvc3NPcmlnaW49dCx0aGlzfXNldFdpdGhDcmVkZW50aWFscyh0KXtyZXR1cm4gdGhpcy53aXRoQ3JlZGVudGlhbHM9dCx0aGlzfXNldFBhdGgodCl7cmV0dXJuIHRoaXMucGF0aD10LHRoaXN9c2V0UmVzb3VyY2VQYXRoKHQpe3JldHVybiB0aGlzLnJlc291cmNlUGF0aD10LHRoaXN9c2V0UmVxdWVzdEhlYWRlcih0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyPXQsdGhpc319LERuPXt9LHdoPWNsYXNzIGV4dGVuZHMgbW57Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsaSxyKXt0PT09dm9pZCAwJiYodD0iIiksdGhpcy5wYXRoIT09dm9pZCAwJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtsZXQgcz1Rci5nZXQodCk7aWYocyE9PXZvaWQgMClyZXR1cm4gdGhpcy5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KCgpPT57ZSYmZShzKSx0aGlzLm1hbmFnZXIuaXRlbUVuZCh0KX0sMCkscztpZihEblt0XSE9PXZvaWQgMCl7RG5bdF0ucHVzaCh7b25Mb2FkOmUsb25Qcm9ncmVzczppLG9uRXJyb3I6cn0pO3JldHVybn1Eblt0XT1bXSxEblt0XS5wdXNoKHtvbkxvYWQ6ZSxvblByb2dyZXNzOmksb25FcnJvcjpyfSk7bGV0IG89bmV3IFJlcXVlc3QodCx7aGVhZGVyczpuZXcgSGVhZGVycyh0aGlzLnJlcXVlc3RIZWFkZXIpLGNyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzPyJpbmNsdWRlIjoic2FtZS1vcmlnaW4ifSksYT10aGlzLm1pbWVUeXBlLGw9dGhpcy5yZXNwb25zZVR5cGU7ZmV0Y2gobykudGhlbihjPT57aWYoYy5zdGF0dXM9PT0yMDB8fGMuc3RhdHVzPT09MCl7aWYoYy5zdGF0dXM9PT0wJiZjb25zb2xlLndhcm4oIlRIUkVFLkZpbGVMb2FkZXI6IEhUVFAgU3RhdHVzIDAgcmVjZWl2ZWQuIiksdHlwZW9mIFJlYWRhYmxlU3RyZWFtPT0idW5kZWZpbmVkInx8Yy5ib2R5LmdldFJlYWRlcj09PXZvaWQgMClyZXR1cm4gYztsZXQgdT1Eblt0XSxoPWMuYm9keS5nZXRSZWFkZXIoKSxmPWMuaGVhZGVycy5nZXQoIkNvbnRlbnQtTGVuZ3RoIiksZD1mP3BhcnNlSW50KGYpOjAsZz1kIT09MCx4PTAsdj1uZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0KG0pe3AoKTtmdW5jdGlvbiBwKCl7aC5yZWFkKCkudGhlbigoe2RvbmU6Yix2YWx1ZTpffSk9PntpZihiKW0uY2xvc2UoKTtlbHNle3grPV8uYnl0ZUxlbmd0aDtsZXQgUz1uZXcgUHJvZ3Jlc3NFdmVudCgicHJvZ3Jlc3MiLHtsZW5ndGhDb21wdXRhYmxlOmcsbG9hZGVkOngsdG90YWw6ZH0pO2ZvcihsZXQgTD0wLEE9dS5sZW5ndGg7TDxBO0wrKyl7bGV0IEg9dVtMXTtILm9uUHJvZ3Jlc3MmJkgub25Qcm9ncmVzcyhTKX1tLmVucXVldWUoXykscCgpfX0pfX19KTtyZXR1cm4gbmV3IFJlc3BvbnNlKHYpfWVsc2UgdGhyb3cgRXJyb3IoYGZldGNoIGZvciAiJHtjLnVybH0iIHJlc3BvbmRlZCB3aXRoICR7Yy5zdGF0dXN9OiAke2Muc3RhdHVzVGV4dH1gKX0pLnRoZW4oYz0+e3N3aXRjaChsKXtjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4gYy5hcnJheUJ1ZmZlcigpO2Nhc2UiYmxvYiI6cmV0dXJuIGMuYmxvYigpO2Nhc2UiZG9jdW1lbnQiOnJldHVybiBjLnRleHQoKS50aGVuKHU9Pm5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodSxhKSk7Y2FzZSJqc29uIjpyZXR1cm4gYy5qc29uKCk7ZGVmYXVsdDppZihhPT09dm9pZCAwKXJldHVybiBjLnRleHQoKTt7bGV0IGg9L2NoYXJzZXQ9Ij8oW147IlxzXSopIj8vaS5leGVjKGEpLGY9aCYmaFsxXT9oWzFdLnRvTG93ZXJDYXNlKCk6dm9pZCAwLGQ9bmV3IFRleHREZWNvZGVyKGYpO3JldHVybiBjLmFycmF5QnVmZmVyKCkudGhlbihnPT5kLmRlY29kZShnKSl9fX0pLnRoZW4oYz0+e1FyLmFkZCh0LGMpO2xldCB1PURuW3RdO2RlbGV0ZSBEblt0XTtmb3IobGV0IGg9MCxmPXUubGVuZ3RoO2g8ZjtoKyspe2xldCBkPXVbaF07ZC5vbkxvYWQmJmQub25Mb2FkKGMpfX0pLmNhdGNoKGM9PntsZXQgdT1Eblt0XTtpZih1PT09dm9pZCAwKXRocm93IHRoaXMubWFuYWdlci5pdGVtRXJyb3IodCksYztkZWxldGUgRG5bdF07Zm9yKGxldCBoPTAsZj11Lmxlbmd0aDtoPGY7aCsrKXtsZXQgZD11W2hdO2Qub25FcnJvciYmZC5vbkVycm9yKGMpfXRoaXMubWFuYWdlci5pdGVtRXJyb3IodCl9KS5maW5hbGx5KCgpPT57dGhpcy5tYW5hZ2VyLml0ZW1FbmQodCl9KSx0aGlzLm1hbmFnZXIuaXRlbVN0YXJ0KHQpfXNldFJlc3BvbnNlVHlwZSh0KXtyZXR1cm4gdGhpcy5yZXNwb25zZVR5cGU9dCx0aGlzfXNldE1pbWVUeXBlKHQpe3JldHVybiB0aGlzLm1pbWVUeXBlPXQsdGhpc319O3ZhciBNbD1jbGFzcyBleHRlbmRzIG1ue2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLGkscil7dGhpcy5wYXRoIT09dm9pZCAwJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtsZXQgcz10aGlzLG89UXIuZ2V0KHQpO2lmKG8hPT12b2lkIDApcmV0dXJuIHMubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dChmdW5jdGlvbigpe2UmJmUobykscy5tYW5hZ2VyLml0ZW1FbmQodCl9LDApLG87bGV0IGE9aW8oImltZyIpO2Z1bmN0aW9uIGwoKXt1KCksUXIuYWRkKHQsdGhpcyksZSYmZSh0aGlzKSxzLm1hbmFnZXIuaXRlbUVuZCh0KX1mdW5jdGlvbiBjKGgpe3UoKSxyJiZyKGgpLHMubWFuYWdlci5pdGVtRXJyb3IodCkscy5tYW5hZ2VyLml0ZW1FbmQodCl9ZnVuY3Rpb24gdSgpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsbCwhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsYywhMSl9cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsbCwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsYywhMSksdC5zdWJzdHIoMCw1KSE9PSJkYXRhOiImJnRoaXMuY3Jvc3NPcmlnaW4hPT12b2lkIDAmJihhLmNyb3NzT3JpZ2luPXRoaXMuY3Jvc3NPcmlnaW4pLHMubWFuYWdlci5pdGVtU3RhcnQodCksYS5zcmM9dCxhfX0sTWg9Y2xhc3MgZXh0ZW5kcyBtbntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxpLHIpe2xldCBzPW5ldyBHcixvPW5ldyBNbCh0aGlzLm1hbmFnZXIpO28uc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksby5zZXRQYXRoKHRoaXMucGF0aCk7bGV0IGE9MDtmdW5jdGlvbiBsKGMpe28ubG9hZCh0W2NdLGZ1bmN0aW9uKHUpe3MuaW1hZ2VzW2NdPXUsYSsrLGE9PT02JiYocy5uZWVkc1VwZGF0ZT0hMCxlJiZlKHMpKX0sdm9pZCAwLHIpfWZvcihsZXQgYz0wO2M8dC5sZW5ndGg7KytjKWwoYyk7cmV0dXJuIHN9fTt2YXIgYmg9Y2xhc3MgZXh0ZW5kcyBtbntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxpLHIpe2xldCBzPW5ldyBhZSxvPW5ldyBNbCh0aGlzLm1hbmFnZXIpO3JldHVybiBvLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pLG8uc2V0UGF0aCh0aGlzLnBhdGgpLG8ubG9hZCh0LGZ1bmN0aW9uKGEpe3MuaW1hZ2U9YSxzLm5lZWRzVXBkYXRlPSEwLGUhPT12b2lkIDAmJmUocyl9LGksciksc319LFllPWNsYXNzIGV4dGVuZHMga3R7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKCksdGhpcy50eXBlPSJMaWdodCIsdGhpcy5jb2xvcj1uZXcgZnQodCksdGhpcy5pbnRlbnNpdHk9ZX1kaXNwb3NlKCl7fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXN9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3QuY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSxlLm9iamVjdC5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHksdGhpcy5ncm91bmRDb2xvciE9PXZvaWQgMCYmKGUub2JqZWN0Lmdyb3VuZENvbG9yPXRoaXMuZ3JvdW5kQ29sb3IuZ2V0SGV4KCkpLHRoaXMuZGlzdGFuY2UhPT12b2lkIDAmJihlLm9iamVjdC5kaXN0YW5jZT10aGlzLmRpc3RhbmNlKSx0aGlzLmFuZ2xlIT09dm9pZCAwJiYoZS5vYmplY3QuYW5nbGU9dGhpcy5hbmdsZSksdGhpcy5kZWNheSE9PXZvaWQgMCYmKGUub2JqZWN0LmRlY2F5PXRoaXMuZGVjYXkpLHRoaXMucGVudW1icmEhPT12b2lkIDAmJihlLm9iamVjdC5wZW51bWJyYT10aGlzLnBlbnVtYnJhKSx0aGlzLnNoYWRvdyE9PXZvaWQgMCYmKGUub2JqZWN0LnNoYWRvdz10aGlzLnNoYWRvdy50b0pTT04oKSksZX19O1llLnByb3RvdHlwZS5pc0xpZ2h0PSEwO3ZhciBTaD1jbGFzcyBleHRlbmRzIFlle2NvbnN0cnVjdG9yKHQsZSxpKXtzdXBlcih0LGkpLHRoaXMudHlwZT0iSGVtaXNwaGVyZUxpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoa3QuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMuZ3JvdW5kQ29sb3I9bmV3IGZ0KGUpfWNvcHkodCl7cmV0dXJuIFllLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmdyb3VuZENvbG9yLmNvcHkodC5ncm91bmRDb2xvciksdGhpc319O1NoLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodD0hMDt2YXIgdDA9bmV3IHd0LGUwPW5ldyBULG4wPW5ldyBULGJvPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FtZXJhPXQsdGhpcy5iaWFzPTAsdGhpcy5ub3JtYWxCaWFzPTAsdGhpcy5yYWRpdXM9MSx0aGlzLmJsdXJTYW1wbGVzPTgsdGhpcy5tYXBTaXplPW5ldyBLKDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IHd0LHRoaXMuYXV0b1VwZGF0ZT0hMCx0aGlzLm5lZWRzVXBkYXRlPSExLHRoaXMuX2ZydXN0dW09bmV3IFdyLHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgSygxLDEpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9MSx0aGlzLl92aWV3cG9ydHM9W25ldyBXdCgwLDAsMSwxKV19Z2V0Vmlld3BvcnRDb3VudCgpe3JldHVybiB0aGlzLl92aWV3cG9ydENvdW50fWdldEZydXN0dW0oKXtyZXR1cm4gdGhpcy5fZnJ1c3R1bX11cGRhdGVNYXRyaWNlcyh0KXtsZXQgZT10aGlzLmNhbWVyYSxpPXRoaXMubWF0cml4O2UwLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxlLnBvc2l0aW9uLmNvcHkoZTApLG4wLnNldEZyb21NYXRyaXhQb3NpdGlvbih0LnRhcmdldC5tYXRyaXhXb3JsZCksZS5sb29rQXQobjApLGUudXBkYXRlTWF0cml4V29ybGQoKSx0MC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0MCksaS5zZXQoLjUsMCwwLC41LDAsLjUsMCwuNSwwLDAsLjUsLjUsMCwwLDAsMSksaS5tdWx0aXBseShlLnByb2plY3Rpb25NYXRyaXgpLGkubXVsdGlwbHkoZS5tYXRyaXhXb3JsZEludmVyc2UpfWdldFZpZXdwb3J0KHQpe3JldHVybiB0aGlzLl92aWV3cG9ydHNbdF19Z2V0RnJhbWVFeHRlbnRzKCl7cmV0dXJuIHRoaXMuX2ZyYW1lRXh0ZW50c31kaXNwb3NlKCl7dGhpcy5tYXAmJnRoaXMubWFwLmRpc3Bvc2UoKSx0aGlzLm1hcFBhc3MmJnRoaXMubWFwUGFzcy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gdGhpcy5jYW1lcmE9dC5jYW1lcmEuY2xvbmUoKSx0aGlzLmJpYXM9dC5iaWFzLHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXMubWFwU2l6ZS5jb3B5KHQubWFwU2l6ZSksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9dG9KU09OKCl7bGV0IHQ9e307cmV0dXJuIHRoaXMuYmlhcyE9PTAmJih0LmJpYXM9dGhpcy5iaWFzKSx0aGlzLm5vcm1hbEJpYXMhPT0wJiYodC5ub3JtYWxCaWFzPXRoaXMubm9ybWFsQmlhcyksdGhpcy5yYWRpdXMhPT0xJiYodC5yYWRpdXM9dGhpcy5yYWRpdXMpLCh0aGlzLm1hcFNpemUueCE9PTUxMnx8dGhpcy5tYXBTaXplLnkhPT01MTIpJiYodC5tYXBTaXplPXRoaXMubWFwU2l6ZS50b0FycmF5KCkpLHQuY2FtZXJhPXRoaXMuY2FtZXJhLnRvSlNPTighMSkub2JqZWN0LGRlbGV0ZSB0LmNhbWVyYS5tYXRyaXgsdH19LGJsPWNsYXNzIGV4dGVuZHMgYm97Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgU2UoNTAsMSwuNSw1MDApKSx0aGlzLmZvY3VzPTF9dXBkYXRlTWF0cmljZXModCl7bGV0IGU9dGhpcy5jYW1lcmEsaT1rdSoyKnQuYW5nbGUqdGhpcy5mb2N1cyxyPXRoaXMubWFwU2l6ZS53aWR0aC90aGlzLm1hcFNpemUuaGVpZ2h0LHM9dC5kaXN0YW5jZXx8ZS5mYXI7KGkhPT1lLmZvdnx8ciE9PWUuYXNwZWN0fHxzIT09ZS5mYXIpJiYoZS5mb3Y9aSxlLmFzcGVjdD1yLGUuZmFyPXMsZS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHN1cGVyLnVwZGF0ZU1hdHJpY2VzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5mb2N1cz10LmZvY3VzLHRoaXN9fTtibC5wcm90b3R5cGUuaXNTcG90TGlnaHRTaGFkb3c9ITA7dmFyIEVoPWNsYXNzIGV4dGVuZHMgWWV7Y29uc3RydWN0b3IodCxlLGk9MCxyPU1hdGguUEkvMyxzPTAsbz0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iU3BvdExpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoa3QuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyBrdCx0aGlzLmRpc3RhbmNlPWksdGhpcy5hbmdsZT1yLHRoaXMucGVudW1icmE9cyx0aGlzLmRlY2F5PW8sdGhpcy5zaGFkb3c9bmV3IGJsfWdldCBwb3dlcigpe3JldHVybiB0aGlzLmludGVuc2l0eSpNYXRoLlBJfXNldCBwb3dlcih0KXt0aGlzLmludGVuc2l0eT10L01hdGguUEl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmFuZ2xlPXQuYW5nbGUsdGhpcy5wZW51bWJyYT10LnBlbnVtYnJhLHRoaXMuZGVjYXk9dC5kZWNheSx0aGlzLnRhcmdldD10LnRhcmdldC5jbG9uZSgpLHRoaXMuc2hhZG93PXQuc2hhZG93LmNsb25lKCksdGhpc319O0VoLnByb3RvdHlwZS5pc1Nwb3RMaWdodD0hMDt2YXIgaTA9bmV3IHd0LFlzPW5ldyBULER1PW5ldyBULFNsPWNsYXNzIGV4dGVuZHMgYm97Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgU2UoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IEsoNCwyKSx0aGlzLl92aWV3cG9ydENvdW50PTYsdGhpcy5fdmlld3BvcnRzPVtuZXcgV3QoMiwxLDEsMSksbmV3IFd0KDAsMSwxLDEpLG5ldyBXdCgzLDEsMSwxKSxuZXcgV3QoMSwxLDEsMSksbmV3IFd0KDMsMCwxLDEpLG5ldyBXdCgxLDAsMSwxKV0sdGhpcy5fY3ViZURpcmVjdGlvbnM9W25ldyBUKDEsMCwwKSxuZXcgVCgtMSwwLDApLG5ldyBUKDAsMCwxKSxuZXcgVCgwLDAsLTEpLG5ldyBUKDAsMSwwKSxuZXcgVCgwLC0xLDApXSx0aGlzLl9jdWJlVXBzPVtuZXcgVCgwLDEsMCksbmV3IFQoMCwxLDApLG5ldyBUKDAsMSwwKSxuZXcgVCgwLDEsMCksbmV3IFQoMCwwLDEpLG5ldyBUKDAsMCwtMSldfXVwZGF0ZU1hdHJpY2VzKHQsZT0wKXtsZXQgaT10aGlzLmNhbWVyYSxyPXRoaXMubWF0cml4LHM9dC5kaXN0YW5jZXx8aS5mYXI7cyE9PWkuZmFyJiYoaS5mYXI9cyxpLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSksWXMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLGkucG9zaXRpb24uY29weShZcyksRHUuY29weShpLnBvc2l0aW9uKSxEdS5hZGQodGhpcy5fY3ViZURpcmVjdGlvbnNbZV0pLGkudXAuY29weSh0aGlzLl9jdWJlVXBzW2VdKSxpLmxvb2tBdChEdSksaS51cGRhdGVNYXRyaXhXb3JsZCgpLHIubWFrZVRyYW5zbGF0aW9uKC1Zcy54LC1Zcy55LC1Zcy56KSxpMC5tdWx0aXBseU1hdHJpY2VzKGkucHJvamVjdGlvbk1hdHJpeCxpLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChpMCl9fTtTbC5wcm90b3R5cGUuaXNQb2ludExpZ2h0U2hhZG93PSEwO3ZhciBUaD1jbGFzcyBleHRlbmRzIFlle2NvbnN0cnVjdG9yKHQsZSxpPTAscj0xKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1pLHRoaXMuZGVjYXk9cix0aGlzLnNoYWRvdz1uZXcgU2x9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5KjQqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC8oNCpNYXRoLlBJKX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuZGVjYXk9dC5kZWNheSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fTtUaC5wcm90b3R5cGUuaXNQb2ludExpZ2h0PSEwO3ZhciBFbD1jbGFzcyBleHRlbmRzIGJve2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IEhpKC01LDUsNSwtNSwuNSw1MDApKX19O0VsLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHRTaGFkb3c9ITA7dmFyIEFoPWNsYXNzIGV4dGVuZHMgWWV7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iRGlyZWN0aW9uYWxMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KGt0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcga3QsdGhpcy5zaGFkb3c9bmV3IEVsfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnRhcmdldD10LnRhcmdldC5jbG9uZSgpLHRoaXMuc2hhZG93PXQuc2hhZG93LmNsb25lKCksdGhpc319O0FoLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHQ9ITA7dmFyIENoPWNsYXNzIGV4dGVuZHMgWWV7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iQW1iaWVudExpZ2h0In19O0NoLnByb3RvdHlwZS5pc0FtYmllbnRMaWdodD0hMDt2YXIgUmg9Y2xhc3MgZXh0ZW5kcyBZZXtjb25zdHJ1Y3Rvcih0LGUsaT0xMCxyPTEwKXtzdXBlcih0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1pLHRoaXMuaGVpZ2h0PXJ9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5KnRoaXMud2lkdGgqdGhpcy5oZWlnaHQqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC8odGhpcy53aWR0aCp0aGlzLmhlaWdodCpNYXRoLlBJKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzfXRvSlNPTih0KXtsZXQgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LndpZHRoPXRoaXMud2lkdGgsZS5vYmplY3QuaGVpZ2h0PXRoaXMuaGVpZ2h0LGV9fTtSaC5wcm90b3R5cGUuaXNSZWN0QXJlYUxpZ2h0PSEwO3ZhciBUbD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY29lZmZpY2llbnRzPVtdO2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHMucHVzaChuZXcgVCl9c2V0KHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uY29weSh0W2VdKTtyZXR1cm4gdGhpc316ZXJvKCl7Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50c1t0XS5zZXQoMCwwLDApO3JldHVybiB0aGlzfWdldEF0KHQsZSl7bGV0IGk9dC54LHI9dC55LHM9dC56LG89dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIGUuY29weShvWzBdKS5tdWx0aXBseVNjYWxhciguMjgyMDk1KSxlLmFkZFNjYWxlZFZlY3RvcihvWzFdLC40ODg2MDMqciksZS5hZGRTY2FsZWRWZWN0b3Iob1syXSwuNDg4NjAzKnMpLGUuYWRkU2NhbGVkVmVjdG9yKG9bM10sLjQ4ODYwMyppKSxlLmFkZFNjYWxlZFZlY3RvcihvWzRdLDEuMDkyNTQ4KihpKnIpKSxlLmFkZFNjYWxlZFZlY3RvcihvWzVdLDEuMDkyNTQ4KihyKnMpKSxlLmFkZFNjYWxlZFZlY3RvcihvWzZdLC4zMTUzOTIqKDMqcypzLTEpKSxlLmFkZFNjYWxlZFZlY3RvcihvWzddLDEuMDkyNTQ4KihpKnMpKSxlLmFkZFNjYWxlZFZlY3RvcihvWzhdLC41NDYyNzQqKGkqaS1yKnIpKSxlfWdldElycmFkaWFuY2VBdCh0LGUpe2xldCBpPXQueCxyPXQueSxzPXQueixvPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiBlLmNvcHkob1swXSkubXVsdGlwbHlTY2FsYXIoLjg4NjIyNyksZS5hZGRTY2FsZWRWZWN0b3Iob1sxXSwyKi41MTE2NjQqciksZS5hZGRTY2FsZWRWZWN0b3Iob1syXSwyKi41MTE2NjQqcyksZS5hZGRTY2FsZWRWZWN0b3Iob1szXSwyKi41MTE2NjQqaSksZS5hZGRTY2FsZWRWZWN0b3Iob1s0XSwyKi40MjkwNDMqaSpyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzVdLDIqLjQyOTA0MypyKnMpLGUuYWRkU2NhbGVkVmVjdG9yKG9bNl0sLjc0MzEyNSpzKnMtLjI0NzcwOCksZS5hZGRTY2FsZWRWZWN0b3Iob1s3XSwyKi40MjkwNDMqaSpzKSxlLmFkZFNjYWxlZFZlY3RvcihvWzhdLC40MjkwNDMqKGkqaS1yKnIpKSxlfWFkZCh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLmFkZCh0LmNvZWZmaWNpZW50c1tlXSk7cmV0dXJuIHRoaXN9YWRkU2NhbGVkU0godCxlKXtmb3IobGV0IGk9MDtpPDk7aSsrKXRoaXMuY29lZmZpY2llbnRzW2ldLmFkZFNjYWxlZFZlY3Rvcih0LmNvZWZmaWNpZW50c1tpXSxlKTtyZXR1cm4gdGhpc31zY2FsZSh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuY29lZmZpY2llbnRzW2VdLm11bHRpcGx5U2NhbGFyKHQpO3JldHVybiB0aGlzfWxlcnAodCxlKXtmb3IobGV0IGk9MDtpPDk7aSsrKXRoaXMuY29lZmZpY2llbnRzW2ldLmxlcnAodC5jb2VmZmljaWVudHNbaV0sZSk7cmV0dXJuIHRoaXN9ZXF1YWxzKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspaWYoIXRoaXMuY29lZmZpY2llbnRzW2VdLmVxdWFscyh0LmNvZWZmaWNpZW50c1tlXSkpcmV0dXJuITE7cmV0dXJuITB9Y29weSh0KXtyZXR1cm4gdGhpcy5zZXQodC5jb2VmZmljaWVudHMpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1mcm9tQXJyYXkodCxlPTApe2xldCBpPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgcj0wO3I8OTtyKyspaVtyXS5mcm9tQXJyYXkodCxlK3IqMyk7cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7bGV0IGk9dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCByPTA7cjw5O3IrKylpW3JdLnRvQXJyYXkodCxlK3IqMyk7cmV0dXJuIHR9c3RhdGljIGdldEJhc2lzQXQodCxlKXtsZXQgaT10Lngscj10Lnkscz10Lno7ZVswXT0uMjgyMDk1LGVbMV09LjQ4ODYwMypyLGVbMl09LjQ4ODYwMypzLGVbM109LjQ4ODYwMyppLGVbNF09MS4wOTI1NDgqaSpyLGVbNV09MS4wOTI1NDgqcipzLGVbNl09LjMxNTM5MiooMypzKnMtMSksZVs3XT0xLjA5MjU0OCppKnMsZVs4XT0uNTQ2Mjc0KihpKmktcipyKX19O1RsLnByb3RvdHlwZS5pc1NwaGVyaWNhbEhhcm1vbmljczM9ITA7dmFyIFNvPWNsYXNzIGV4dGVuZHMgWWV7Y29uc3RydWN0b3IodD1uZXcgVGwsZT0xKXtzdXBlcih2b2lkIDAsZSksdGhpcy5zaD10fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zaC5jb3B5KHQuc2gpLHRoaXN9ZnJvbUpTT04odCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXMuc2guZnJvbUFycmF5KHQuc2gpLHRoaXN9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Quc2g9dGhpcy5zaC50b0FycmF5KCksZX19O1NvLnByb3RvdHlwZS5pc0xpZ2h0UHJvYmU9ITA7dmFyIExoPWNsYXNze3N0YXRpYyBkZWNvZGVUZXh0KHQpe2lmKHR5cGVvZiBUZXh0RGVjb2RlciE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh0KTtsZXQgZT0iIjtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W2ldKTt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoZSkpfWNhdGNoKGkpe3JldHVybiBlfX1zdGF0aWMgZXh0cmFjdFVybEJhc2UodCl7bGV0IGU9dC5sYXN0SW5kZXhPZigiLyIpO3JldHVybiBlPT09LTE/Ii4vIjp0LnN1YnN0cigwLGUrMSl9c3RhdGljIHJlc29sdmVVUkwodCxlKXtyZXR1cm4gdHlwZW9mIHQhPSJzdHJpbmcifHx0PT09IiI/IiI6KC9eaHR0cHM/OlwvXC8vaS50ZXN0KGUpJiYvXlwvLy50ZXN0KHQpJiYoZT1lLnJlcGxhY2UoLyheaHR0cHM/OlwvXC9bXlwvXSspLiovaSwiJDEiKSksL14oaHR0cHM/Oik/XC9cLy9pLnRlc3QodCl8fC9eZGF0YTouKiwuKiQvaS50ZXN0KHQpfHwvXmJsb2I6LiokL2kudGVzdCh0KT90OmUrdCl9fSxQaD1jbGFzcyBleHRlbmRzIEh0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluc3RhbmNlQ291bnQ9MS8wfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZUNvdW50PXQuaW5zdGFuY2VDb3VudCx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX10b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04odGhpcyk7cmV0dXJuIHQuaW5zdGFuY2VDb3VudD10aGlzLmluc3RhbmNlQ291bnQsdC5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwLHR9fTtQaC5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMDt2YXIgRGg9Y2xhc3MgZXh0ZW5kcyBtbntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXA9PSJ1bmRlZmluZWQiJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBjcmVhdGVJbWFnZUJpdG1hcCgpIG5vdCBzdXBwb3J0ZWQuIiksdHlwZW9mIGZldGNoPT0idW5kZWZpbmVkIiYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fXNldE9wdGlvbnModCl7cmV0dXJuIHRoaXMub3B0aW9ucz10LHRoaXN9bG9hZCh0LGUsaSxyKXt0PT09dm9pZCAwJiYodD0iIiksdGhpcy5wYXRoIT09dm9pZCAwJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtsZXQgcz10aGlzLG89UXIuZ2V0KHQpO2lmKG8hPT12b2lkIDApcmV0dXJuIHMubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dChmdW5jdGlvbigpe2UmJmUobykscy5tYW5hZ2VyLml0ZW1FbmQodCl9LDApLG87bGV0IGE9e307YS5jcmVkZW50aWFscz10aGlzLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/InNhbWUtb3JpZ2luIjoiaW5jbHVkZSIsYS5oZWFkZXJzPXRoaXMucmVxdWVzdEhlYWRlcixmZXRjaCh0LGEpLnRoZW4oZnVuY3Rpb24obCl7cmV0dXJuIGwuYmxvYigpfSkudGhlbihmdW5jdGlvbihsKXtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobCxPYmplY3QuYXNzaWduKHMub3B0aW9ucyx7Y29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifSkpfSkudGhlbihmdW5jdGlvbihsKXtRci5hZGQodCxsKSxlJiZlKGwpLHMubWFuYWdlci5pdGVtRW5kKHQpfSkuY2F0Y2goZnVuY3Rpb24obCl7ciYmcihsKSxzLm1hbmFnZXIuaXRlbUVycm9yKHQpLHMubWFuYWdlci5pdGVtRW5kKHQpfSkscy5tYW5hZ2VyLml0ZW1TdGFydCh0KX19O0RoLnByb3RvdHlwZS5pc0ltYWdlQml0bWFwTG9hZGVyPSEwO3ZhciBaYSxqRT17Z2V0Q29udGV4dDpmdW5jdGlvbigpe3JldHVybiBaYT09PXZvaWQgMCYmKFphPW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksWmF9LHNldENvbnRleHQ6ZnVuY3Rpb24obil7WmE9bn19LEloPWNsYXNzIGV4dGVuZHMgbW57Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsaSxyKXtsZXQgcz10aGlzLG89bmV3IHdoKHRoaXMubWFuYWdlcik7by5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIiksby5zZXRQYXRoKHRoaXMucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LGZ1bmN0aW9uKGEpe3RyeXtsZXQgbD1hLnNsaWNlKDApO2pFLmdldENvbnRleHQoKS5kZWNvZGVBdWRpb0RhdGEobCxmdW5jdGlvbih1KXtlKHUpfSl9Y2F0Y2gobCl7cj9yKGwpOmNvbnNvbGUuZXJyb3IobCkscy5tYW5hZ2VyLml0ZW1FcnJvcih0KX19LGkscil9fSxOaD1jbGFzcyBleHRlbmRzIFNve2NvbnN0cnVjdG9yKHQsZSxpPTEpe3N1cGVyKHZvaWQgMCxpKTtsZXQgcj1uZXcgZnQoKS5zZXQodCkscz1uZXcgZnQoKS5zZXQoZSksbz1uZXcgVChyLnIsci5nLHIuYiksYT1uZXcgVChzLnIscy5nLHMuYiksbD1NYXRoLnNxcnQoTWF0aC5QSSksYz1sKk1hdGguc3FydCguNzUpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLmNvcHkobykuYWRkKGEpLm11bHRpcGx5U2NhbGFyKGwpLHRoaXMuc2guY29lZmZpY2llbnRzWzFdLmNvcHkobykuc3ViKGEpLm11bHRpcGx5U2NhbGFyKGMpfX07TmgucHJvdG90eXBlLmlzSGVtaXNwaGVyZUxpZ2h0UHJvYmU9ITA7dmFyIEZoPWNsYXNzIGV4dGVuZHMgU297Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKHZvaWQgMCxlKTtsZXQgaT1uZXcgZnQoKS5zZXQodCk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uc2V0KGkucixpLmcsaS5iKS5tdWx0aXBseVNjYWxhcigyKk1hdGguc3FydChNYXRoLlBJKSl9fTtGaC5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDt2YXIgemg9Y2xhc3MgZXh0ZW5kcyBrdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKHRoaXMuaXNQbGF5aW5nPT09ITApe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IEF1ZGlvIGlzIGFscmVhZHkgcGxheWluZy4iKTtyZXR1cm59aWYodGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9PT0hMSl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTtyZXR1cm59dGhpcy5fc3RhcnRlZEF0PXRoaXMuY29udGV4dC5jdXJyZW50VGltZSt0O2xldCBlPXRoaXMuY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtyZXR1cm4gZS5idWZmZXI9dGhpcy5idWZmZXIsZS5sb29wPXRoaXMubG9vcCxlLmxvb3BTdGFydD10aGlzLmxvb3BTdGFydCxlLmxvb3BFbmQ9dGhpcy5sb29wRW5kLGUub25lbmRlZD10aGlzLm9uRW5kZWQuYmluZCh0aGlzKSxlLnN0YXJ0KHRoaXMuX3N0YXJ0ZWRBdCx0aGlzLl9wcm9ncmVzcyt0aGlzLm9mZnNldCx0aGlzLmR1cmF0aW9uKSx0aGlzLmlzUGxheWluZz0hMCx0aGlzLnNvdXJjZT1lLHRoaXMuc2V0RGV0dW5lKHRoaXMuZGV0dW5lKSx0aGlzLnNldFBsYXliYWNrUmF0ZSh0aGlzLnBsYXliYWNrUmF0ZSksdGhpcy5jb25uZWN0KCl9cGF1c2UoKXtpZih0aGlzLmhhc1BsYXliYWNrQ29udHJvbD09PSExKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpO3JldHVybn1yZXR1cm4gdGhpcy5pc1BsYXlpbmc9PT0hMCYmKHRoaXMuX3Byb2dyZXNzKz1NYXRoLm1heCh0aGlzLmNvbnRleHQuY3VycmVudFRpbWUtdGhpcy5fc3RhcnRlZEF0LDApKnRoaXMucGxheWJhY2tSYXRlLHRoaXMubG9vcD09PSEwJiYodGhpcy5fcHJvZ3Jlc3M9dGhpcy5fcHJvZ3Jlc3MlKHRoaXMuZHVyYXRpb258fHRoaXMuYnVmZmVyLmR1cmF0aW9uKSksdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSksdGhpc31zdG9wKCl7aWYodGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9PT0hMSl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTtyZXR1cm59cmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzfWNvbm5lY3QoKXtpZih0aGlzLmZpbHRlcnMubGVuZ3RoPjApe3RoaXMuc291cmNlLmNvbm5lY3QodGhpcy5maWx0ZXJzWzBdKTtmb3IobGV0IHQ9MSxlPXRoaXMuZmlsdGVycy5sZW5ndGg7dDxlO3QrKyl0aGlzLmZpbHRlcnNbdC0xXS5jb25uZWN0KHRoaXMuZmlsdGVyc1t0XSk7dGhpcy5maWx0ZXJzW3RoaXMuZmlsdGVycy5sZW5ndGgtMV0uY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKX1lbHNlIHRoaXMuc291cmNlLmNvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSk7cmV0dXJuIHRoaXMuX2Nvbm5lY3RlZD0hMCx0aGlzfWRpc2Nvbm5lY3QoKXtpZih0aGlzLmZpbHRlcnMubGVuZ3RoPjApe3RoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzWzBdKTtmb3IobGV0IHQ9MSxlPXRoaXMuZmlsdGVycy5sZW5ndGg7dDxlO3QrKyl0aGlzLmZpbHRlcnNbdC0xXS5kaXNjb25uZWN0KHRoaXMuZmlsdGVyc1t0XSk7dGhpcy5maWx0ZXJzW3RoaXMuZmlsdGVycy5sZW5ndGgtMV0uZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKX1lbHNlIHRoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSk7cmV0dXJuIHRoaXMuX2Nvbm5lY3RlZD0hMSx0aGlzfWdldEZpbHRlcnMoKXtyZXR1cm4gdGhpcy5maWx0ZXJzfXNldEZpbHRlcnModCl7cmV0dXJuIHR8fCh0PVtdKSx0aGlzLl9jb25uZWN0ZWQ9PT0hMD8odGhpcy5kaXNjb25uZWN0KCksdGhpcy5maWx0ZXJzPXQuc2xpY2UoKSx0aGlzLmNvbm5lY3QoKSk6dGhpcy5maWx0ZXJzPXQuc2xpY2UoKSx0aGlzfXNldERldHVuZSh0KXtpZih0aGlzLmRldHVuZT10LHRoaXMuc291cmNlLmRldHVuZSE9PXZvaWQgMClyZXR1cm4gdGhpcy5pc1BsYXlpbmc9PT0hMCYmdGhpcy5zb3VyY2UuZGV0dW5lLnNldFRhcmdldEF0VGltZSh0aGlzLmRldHVuZSx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfWdldERldHVuZSgpe3JldHVybiB0aGlzLmRldHVuZX1nZXRGaWx0ZXIoKXtyZXR1cm4gdGhpcy5nZXRGaWx0ZXJzKClbMF19c2V0RmlsdGVyKHQpe3JldHVybiB0aGlzLnNldEZpbHRlcnModD9bdF06W10pfXNldFBsYXliYWNrUmF0ZSh0KXtpZih0aGlzLmhhc1BsYXliYWNrQ29udHJvbD09PSExKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpO3JldHVybn1yZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCx0aGlzLmlzUGxheWluZz09PSEwJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9Z2V0UGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMucGxheWJhY2tSYXRlfW9uRW5kZWQoKXt0aGlzLmlzUGxheWluZz0hMX1nZXRMb29wKCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPT09ITE/KGNvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIiksITEpOnRoaXMubG9vcH1zZXRMb29wKHQpe2lmKHRoaXMuaGFzUGxheWJhY2tDb250cm9sPT09ITEpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIik7cmV0dXJufXJldHVybiB0aGlzLmxvb3A9dCx0aGlzLmlzUGxheWluZz09PSEwJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXN9c2V0TG9vcFN0YXJ0KHQpe3JldHVybiB0aGlzLmxvb3BTdGFydD10LHRoaXN9c2V0TG9vcEVuZCh0KXtyZXR1cm4gdGhpcy5sb29wRW5kPXQsdGhpc31nZXRWb2x1bWUoKXtyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWV9c2V0Vm9sdW1lKHQpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodCx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfX07dmFyIFVoPWNsYXNze2NvbnN0cnVjdG9yKHQsZT0yMDQ4KXt0aGlzLmFuYWx5c2VyPXQuY29udGV4dC5jcmVhdGVBbmFseXNlcigpLHRoaXMuYW5hbHlzZXIuZmZ0U2l6ZT1lLHRoaXMuZGF0YT1uZXcgVWludDhBcnJheSh0aGlzLmFuYWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50KSx0LmdldE91dHB1dCgpLmNvbm5lY3QodGhpcy5hbmFseXNlcil9Z2V0RnJlcXVlbmN5RGF0YSgpe3JldHVybiB0aGlzLmFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKHRoaXMuZGF0YSksdGhpcy5kYXRhfWdldEF2ZXJhZ2VGcmVxdWVuY3koKXtsZXQgdD0wLGU9dGhpcy5nZXRGcmVxdWVuY3lEYXRhKCk7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspdCs9ZVtpXTtyZXR1cm4gdC9lLmxlbmd0aH19LEJoPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxpKXt0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1pO2xldCByLHMsbztzd2l0Y2goZSl7Y2FzZSJxdWF0ZXJuaW9uIjpyPXRoaXMuX3NsZXJwLHM9dGhpcy5fc2xlcnBBZGRpdGl2ZSxvPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkoaSo2KSx0aGlzLl93b3JrSW5kZXg9NTticmVhaztjYXNlInN0cmluZyI6Y2FzZSJib29sIjpyPXRoaXMuX3NlbGVjdCxzPXRoaXMuX3NlbGVjdCxvPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlPdGhlcix0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkoaSo1KTticmVhaztkZWZhdWx0OnI9dGhpcy5fbGVycCxzPXRoaXMuX2xlcnBBZGRpdGl2ZSxvPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkoaSo1KX10aGlzLl9taXhCdWZmZXJSZWdpb249cix0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZT1zLHRoaXMuX3NldElkZW50aXR5PW8sdGhpcy5fb3JpZ0luZGV4PTMsdGhpcy5fYWRkSW5kZXg9NCx0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHRoaXMudXNlQ291bnQ9MCx0aGlzLnJlZmVyZW5jZUNvdW50PTB9YWNjdW11bGF0ZSh0LGUpe2xldCBpPXRoaXMuYnVmZmVyLHI9dGhpcy52YWx1ZVNpemUscz10KnIrcixvPXRoaXMuY3VtdWxhdGl2ZVdlaWdodDtpZihvPT09MCl7Zm9yKGxldCBhPTA7YSE9PXI7KythKWlbcythXT1pW2FdO289ZX1lbHNle28rPWU7bGV0IGE9ZS9vO3RoaXMuX21peEJ1ZmZlclJlZ2lvbihpLHMsMCxhLHIpfXRoaXMuY3VtdWxhdGl2ZVdlaWdodD1vfWFjY3VtdWxhdGVBZGRpdGl2ZSh0KXtsZXQgZT10aGlzLmJ1ZmZlcixpPXRoaXMudmFsdWVTaXplLHI9aSp0aGlzLl9hZGRJbmRleDt0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT09PTAmJnRoaXMuX3NldElkZW50aXR5KCksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUoZSxyLDAsdCxpKSx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSs9dH1hcHBseSh0KXtsZXQgZT10aGlzLnZhbHVlU2l6ZSxpPXRoaXMuYnVmZmVyLHI9dCplK2Uscz10aGlzLmN1bXVsYXRpdmVXZWlnaHQsbz10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxhPXRoaXMuYmluZGluZztpZih0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHM8MSl7bGV0IGw9ZSp0aGlzLl9vcmlnSW5kZXg7dGhpcy5fbWl4QnVmZmVyUmVnaW9uKGkscixsLDEtcyxlKX1vPjAmJnRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKGkscix0aGlzLl9hZGRJbmRleCplLDEsZSk7Zm9yKGxldCBsPWUsYz1lK2U7bCE9PWM7KytsKWlmKGlbbF0hPT1pW2wrZV0pe2Euc2V0VmFsdWUoaSxyKTticmVha319c2F2ZU9yaWdpbmFsU3RhdGUoKXtsZXQgdD10aGlzLmJpbmRpbmcsZT10aGlzLmJ1ZmZlcixpPXRoaXMudmFsdWVTaXplLHI9aSp0aGlzLl9vcmlnSW5kZXg7dC5nZXRWYWx1ZShlLHIpO2ZvcihsZXQgcz1pLG89cjtzIT09bzsrK3MpZVtzXT1lW3IrcyVpXTt0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTB9cmVzdG9yZU9yaWdpbmFsU3RhdGUoKXtsZXQgdD10aGlzLnZhbHVlU2l6ZSozO3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlcix0KX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtsZXQgdD10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXQrdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBpPXQ7aTxlO2krKyl0aGlzLmJ1ZmZlcltpXT0wfV9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbigpe3RoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCksdGhpcy5idWZmZXJbdGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemUrM109MX1fc2V0QWRkaXRpdmVJZGVudGl0eU90aGVyKCl7bGV0IHQ9dGhpcy5fb3JpZ0luZGV4KnRoaXMudmFsdWVTaXplLGU9dGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBpPTA7aTx0aGlzLnZhbHVlU2l6ZTtpKyspdGhpcy5idWZmZXJbZStpXT10aGlzLmJ1ZmZlclt0K2ldfV9zZWxlY3QodCxlLGkscixzKXtpZihyPj0uNSlmb3IobGV0IG89MDtvIT09czsrK28pdFtlK29dPXRbaStvXX1fc2xlcnAodCxlLGkscil7RWUuc2xlcnBGbGF0KHQsZSx0LGUsdCxpLHIpfV9zbGVycEFkZGl0aXZlKHQsZSxpLHIscyl7bGV0IG89dGhpcy5fd29ya0luZGV4KnM7RWUubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxvLHQsZSx0LGkpLEVlLnNsZXJwRmxhdCh0LGUsdCxlLHQsbyxyKX1fbGVycCh0LGUsaSxyLHMpe2xldCBvPTEtcjtmb3IobGV0IGE9MDthIT09czsrK2Epe2xldCBsPWUrYTt0W2xdPXRbbF0qbyt0W2krYV0qcn19X2xlcnBBZGRpdGl2ZSh0LGUsaSxyLHMpe2ZvcihsZXQgbz0wO28hPT1zOysrbyl7bGV0IGE9ZStvO3RbYV09dFthXSt0W2krb10qcn19fSxqaD0iXFxbXFxdXFwuOlxcLyIsdFQ9bmV3IFJlZ0V4cCgiWyIramgrIl0iLCJnIiksdGY9IlteIitqaCsiXSIsZVQ9IlteIitqaC5yZXBsYWNlKCJcXC4iLCIiKSsiXSIsblQ9LygoPzpXQytbXC86XSkqKS8uc291cmNlLnJlcGxhY2UoIldDIix0ZiksaVQ9LyhXQ09EKyk/Ly5zb3VyY2UucmVwbGFjZSgiV0NPRCIsZVQpLHJUPS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLHRmKSxzVD0vXC4oV0MrKSg/OlxbKC4rKVxdKT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsdGYpLG9UPW5ldyBSZWdFeHAoIl4iK25UK2lUK3JUK3NUKyIkIiksYVQ9WyJtYXRlcmlhbCIsIm1hdGVyaWFscyIsImJvbmVzIl0sT2g9Y2xhc3N7Y29uc3RydWN0b3IodCxlLGkpe2xldCByPWl8fE50LnBhcnNlVHJhY2tOYW1lKGUpO3RoaXMuX3RhcmdldEdyb3VwPXQsdGhpcy5fYmluZGluZ3M9dC5zdWJzY3JpYmVfKGUscil9Z2V0VmFsdWUodCxlKXt0aGlzLmJpbmQoKTtsZXQgaT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18scj10aGlzLl9iaW5kaW5nc1tpXTtyIT09dm9pZCAwJiZyLmdldFZhbHVlKHQsZSl9c2V0VmFsdWUodCxlKXtsZXQgaT10aGlzLl9iaW5kaW5ncztmb3IobGV0IHI9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLHM9aS5sZW5ndGg7ciE9PXM7KytyKWlbcl0uc2V0VmFsdWUodCxlKX1iaW5kKCl7bGV0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBlPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxpPXQubGVuZ3RoO2UhPT1pOysrZSl0W2VdLmJpbmQoKX11bmJpbmQoKXtsZXQgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IGU9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLGk9dC5sZW5ndGg7ZSE9PWk7KytlKXRbZV0udW5iaW5kKCl9fSxOdD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsaSl7dGhpcy5wYXRoPWUsdGhpcy5wYXJzZWRQYXRoPWl8fE50LnBhcnNlVHJhY2tOYW1lKGUpLHRoaXMubm9kZT1OdC5maW5kTm9kZSh0LHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fHQsdGhpcy5yb290Tm9kZT10LHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9c3RhdGljIGNyZWF0ZSh0LGUsaSl7cmV0dXJuIHQmJnQuaXNBbmltYXRpb25PYmplY3RHcm91cD9uZXcgTnQuQ29tcG9zaXRlKHQsZSxpKTpuZXcgTnQodCxlLGkpfXN0YXRpYyBzYW5pdGl6ZU5vZGVOYW1lKHQpe3JldHVybiB0LnJlcGxhY2UoL1xzL2csIl8iKS5yZXBsYWNlKHRULCIiKX1zdGF0aWMgcGFyc2VUcmFja05hbWUodCl7bGV0IGU9b1QuZXhlYyh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtsZXQgaT17bm9kZU5hbWU6ZVsyXSxvYmplY3ROYW1lOmVbM10sb2JqZWN0SW5kZXg6ZVs0XSxwcm9wZXJ0eU5hbWU6ZVs1XSxwcm9wZXJ0eUluZGV4OmVbNl19LHI9aS5ub2RlTmFtZSYmaS5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKHIhPT12b2lkIDAmJnIhPT0tMSl7bGV0IHM9aS5ub2RlTmFtZS5zdWJzdHJpbmcocisxKTthVC5pbmRleE9mKHMpIT09LTEmJihpLm5vZGVOYW1lPWkubm9kZU5hbWUuc3Vic3RyaW5nKDAsciksaS5vYmplY3ROYW1lPXMpfWlmKGkucHJvcGVydHlOYW1lPT09bnVsbHx8aS5wcm9wZXJ0eU5hbWUubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogY2FuIG5vdCBwYXJzZSBwcm9wZXJ0eU5hbWUgZnJvbSB0cmFja05hbWU6ICIrdCk7cmV0dXJuIGl9c3RhdGljIGZpbmROb2RlKHQsZSl7aWYoIWV8fGU9PT0iInx8ZT09PSIuInx8ZT09PS0xfHxlPT09dC5uYW1lfHxlPT09dC51dWlkKXJldHVybiB0O2lmKHQuc2tlbGV0b24pe2xldCBpPXQuc2tlbGV0b24uZ2V0Qm9uZUJ5TmFtZShlKTtpZihpIT09dm9pZCAwKXJldHVybiBpfWlmKHQuY2hpbGRyZW4pe2xldCBpPWZ1bmN0aW9uKHMpe2ZvcihsZXQgbz0wO288cy5sZW5ndGg7bysrKXtsZXQgYT1zW29dO2lmKGEubmFtZT09PWV8fGEudXVpZD09PWUpcmV0dXJuIGE7bGV0IGw9aShhLmNoaWxkcmVuKTtpZihsKXJldHVybiBsfXJldHVybiBudWxsfSxyPWkodC5jaGlsZHJlbik7aWYocilyZXR1cm4gcn1yZXR1cm4gbnVsbH1fZ2V0VmFsdWVfdW5hdmFpbGFibGUoKXt9X3NldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9nZXRWYWx1ZV9kaXJlY3QodCxlKXt0W2VdPXRoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXX1fZ2V0VmFsdWVfYXJyYXkodCxlKXtsZXQgaT10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCByPTAscz1pLmxlbmd0aDtyIT09czsrK3IpdFtlKytdPWlbcl19X2dldFZhbHVlX2FycmF5RWxlbWVudCh0LGUpe3RbZV09dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF19X2dldFZhbHVlX3RvQXJyYXkodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkudG9BcnJheSh0LGUpfV9zZXRWYWx1ZV9kaXJlY3QodCxlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09dFtlXX1fc2V0VmFsdWVfZGlyZWN0X3NldE5lZWRzVXBkYXRlKHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2RpcmVjdF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXkodCxlKXtsZXQgaT10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCByPTAscz1pLmxlbmd0aDtyIT09czsrK3IpaVtyXT10W2UrK119X3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlKHQsZSl7bGV0IGk9dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgcj0wLHM9aS5sZW5ndGg7ciE9PXM7KytyKWlbcl09dFtlKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7bGV0IGk9dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgcj0wLHM9aS5sZW5ndGg7ciE9PXM7KytyKWlbcl09dFtlKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5RWxlbWVudCh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV19X3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09dFtlXSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9mcm9tQXJyYXkodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSl9X3NldFZhbHVlX2Zyb21BcnJheV9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkodCxlKSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSksdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fZ2V0VmFsdWVfdW5ib3VuZCh0LGUpe3RoaXMuYmluZCgpLHRoaXMuZ2V0VmFsdWUodCxlKX1fc2V0VmFsdWVfdW5ib3VuZCh0LGUpe3RoaXMuYmluZCgpLHRoaXMuc2V0VmFsdWUodCxlKX1iaW5kKCl7bGV0IHQ9dGhpcy5ub2RlLGU9dGhpcy5wYXJzZWRQYXRoLGk9ZS5vYmplY3ROYW1lLHI9ZS5wcm9wZXJ0eU5hbWUscz1lLnByb3BlcnR5SW5kZXg7aWYodHx8KHQ9TnQuZmluZE5vZGUodGhpcy5yb290Tm9kZSxlLm5vZGVOYW1lKXx8dGhpcy5yb290Tm9kZSx0aGlzLm5vZGU9dCksdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmF2YWlsYWJsZSx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYXZhaWxhYmxlLCF0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgbm9kZSBmb3IgdHJhY2s6ICIrdGhpcy5wYXRoKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iKTtyZXR1cm59aWYoaSl7bGV0IGM9ZS5vYmplY3RJbmRleDtzd2l0Y2goaSl7Y2FzZSJtYXRlcmlhbHMiOmlmKCF0Lm1hdGVyaWFsKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbCBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbC4iLHRoaXMpO3JldHVybn1pZighdC5tYXRlcmlhbC5tYXRlcmlhbHMpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsLm1hdGVyaWFscyBhcyBub2RlLm1hdGVyaWFsIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbHMgYXJyYXkuIix0aGlzKTtyZXR1cm59dD10Lm1hdGVyaWFsLm1hdGVyaWFsczticmVhaztjYXNlImJvbmVzIjppZighdC5za2VsZXRvbil7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gYm9uZXMgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgc2tlbGV0b24uIix0aGlzKTtyZXR1cm59dD10LnNrZWxldG9uLmJvbmVzO2ZvcihsZXQgdT0wO3U8dC5sZW5ndGg7dSsrKWlmKHRbdV0ubmFtZT09PWMpe2M9dTticmVha31icmVhaztkZWZhdWx0OmlmKHRbaV09PT12b2lkIDApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG9iamVjdE5hbWUgb2Ygbm9kZSB1bmRlZmluZWQuIix0aGlzKTtyZXR1cm59dD10W2ldfWlmKGMhPT12b2lkIDApe2lmKHRbY109PT12b2lkIDApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIGJpbmQgdG8gb2JqZWN0SW5kZXggb2Ygb2JqZWN0TmFtZSwgYnV0IGlzIHVuZGVmaW5lZC4iLHRoaXMsdCk7cmV0dXJufXQ9dFtjXX19bGV0IG89dFtyXTtpZihvPT09dm9pZCAwKXtsZXQgYz1lLm5vZGVOYW1lO2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBwcm9wZXJ0eSBmb3IgdHJhY2s6ICIrYysiLiIrcisiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIix0KTtyZXR1cm59bGV0IGE9dGhpcy5WZXJzaW9uaW5nLk5vbmU7dGhpcy50YXJnZXRPYmplY3Q9dCx0Lm5lZWRzVXBkYXRlIT09dm9pZCAwP2E9dGhpcy5WZXJzaW9uaW5nLk5lZWRzVXBkYXRlOnQubWF0cml4V29ybGROZWVkc1VwZGF0ZSE9PXZvaWQgMCYmKGE9dGhpcy5WZXJzaW9uaW5nLk1hdHJpeFdvcmxkTmVlZHNVcGRhdGUpO2xldCBsPXRoaXMuQmluZGluZ1R5cGUuRGlyZWN0O2lmKHMhPT12b2lkIDApe2lmKHI9PT0ibW9ycGhUYXJnZXRJbmZsdWVuY2VzIil7aWYoIXQuZ2VvbWV0cnkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5LiIsdGhpcyk7cmV0dXJufWlmKHQuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSl7aWYoIXQuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMuIix0aGlzKTtyZXR1cm59dC5tb3JwaFRhcmdldERpY3Rpb25hcnlbc10hPT12b2lkIDAmJihzPXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W3NdKX1lbHNle2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBvbiBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIix0aGlzKTtyZXR1cm59fWw9dGhpcy5CaW5kaW5nVHlwZS5BcnJheUVsZW1lbnQsdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8sdGhpcy5wcm9wZXJ0eUluZGV4PXN9ZWxzZSBvLmZyb21BcnJheSE9PXZvaWQgMCYmby50b0FycmF5IT09dm9pZCAwPyhsPXRoaXMuQmluZGluZ1R5cGUuSGFzRnJvbVRvQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8pOkFycmF5LmlzQXJyYXkobyk/KGw9dGhpcy5CaW5kaW5nVHlwZS5FbnRpcmVBcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9byk6dGhpcy5wcm9wZXJ0eU5hbWU9cjt0aGlzLmdldFZhbHVlPXRoaXMuR2V0dGVyQnlCaW5kaW5nVHlwZVtsXSx0aGlzLnNldFZhbHVlPXRoaXMuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmdbbF1bYV19dW5iaW5kKCl7dGhpcy5ub2RlPW51bGwsdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmJvdW5kLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5ib3VuZH19O050LkNvbXBvc2l0ZT1PaDtOdC5wcm90b3R5cGUuQmluZGluZ1R5cGU9e0RpcmVjdDowLEVudGlyZUFycmF5OjEsQXJyYXlFbGVtZW50OjIsSGFzRnJvbVRvQXJyYXk6M307TnQucHJvdG90eXBlLlZlcnNpb25pbmc9e05vbmU6MCxOZWVkc1VwZGF0ZToxLE1hdHJpeFdvcmxkTmVlZHNVcGRhdGU6Mn07TnQucHJvdG90eXBlLkdldHRlckJ5QmluZGluZ1R5cGU9W050LnByb3RvdHlwZS5fZ2V0VmFsdWVfZGlyZWN0LE50LnByb3RvdHlwZS5fZ2V0VmFsdWVfYXJyYXksTnQucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheUVsZW1lbnQsTnQucHJvdG90eXBlLl9nZXRWYWx1ZV90b0FycmF5XTtOdC5wcm90b3R5cGUuU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmc9W1tOdC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdCxOdC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSxOdC5wcm90b3R5cGUuX3NldFZhbHVlX2RpcmVjdF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbTnQucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheSxOdC5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE5lZWRzVXBkYXRlLE50LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW050LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50LE50LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE5lZWRzVXBkYXRlLE50LnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlFbGVtZW50X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtOdC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheSxOdC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheV9zZXROZWVkc1VwZGF0ZSxOdC5wcm90b3R5cGUuX3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXV07dmFyIGtoPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy51dWlkPXRuKCksdGhpcy5fb2JqZWN0cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLHRoaXMubkNhY2hlZE9iamVjdHNfPTA7bGV0IHQ9e307dGhpcy5faW5kaWNlc0J5VVVJRD10O2ZvcihsZXQgaT0wLHI9YXJndW1lbnRzLmxlbmd0aDtpIT09cjsrK2kpdFthcmd1bWVudHNbaV0udXVpZF09aTt0aGlzLl9wYXRocz1bXSx0aGlzLl9wYXJzZWRQYXRocz1bXSx0aGlzLl9iaW5kaW5ncz1bXSx0aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGg9e307bGV0IGU9dGhpczt0aGlzLnN0YXRzPXtvYmplY3RzOntnZXQgdG90YWwoKXtyZXR1cm4gZS5fb2JqZWN0cy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0aGlzLnRvdGFsLWUubkNhY2hlZE9iamVjdHNffX0sZ2V0IGJpbmRpbmdzUGVyT2JqZWN0KCl7cmV0dXJuIGUuX2JpbmRpbmdzLmxlbmd0aH19fWFkZCgpe2xldCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELGk9dGhpcy5fcGF0aHMscj10aGlzLl9wYXJzZWRQYXRocyxzPXRoaXMuX2JpbmRpbmdzLG89cy5sZW5ndGgsYSxsPXQubGVuZ3RoLGM9dGhpcy5uQ2FjaGVkT2JqZWN0c187Zm9yKGxldCB1PTAsaD1hcmd1bWVudHMubGVuZ3RoO3UhPT1oOysrdSl7bGV0IGY9YXJndW1lbnRzW3VdLGQ9Zi51dWlkLGc9ZVtkXTtpZihnPT09dm9pZCAwKXtnPWwrKyxlW2RdPWcsdC5wdXNoKGYpO2ZvcihsZXQgeD0wLHY9bzt4IT09djsrK3gpc1t4XS5wdXNoKG5ldyBOdChmLGlbeF0sclt4XSkpfWVsc2UgaWYoZzxjKXthPXRbZ107bGV0IHg9LS1jLHY9dFt4XTtlW3YudXVpZF09Zyx0W2ddPXYsZVtkXT14LHRbeF09Zjtmb3IobGV0IG09MCxwPW87bSE9PXA7KyttKXtsZXQgYj1zW21dLF89Ylt4XSxTPWJbZ107YltnXT1fLFM9PT12b2lkIDAmJihTPW5ldyBOdChmLGlbbV0sclttXSkpLGJbeF09U319ZWxzZSB0W2ddIT09YSYmY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uT2JqZWN0R3JvdXA6IERpZmZlcmVudCBvYmplY3RzIHdpdGggdGhlIHNhbWUgVVVJRCBkZXRlY3RlZC4gQ2xlYW4gdGhlIGNhY2hlcyBvciByZWNyZWF0ZSB5b3VyIGluZnJhc3RydWN0dXJlIHdoZW4gcmVsb2FkaW5nIHNjZW5lcy4iKX10aGlzLm5DYWNoZWRPYmplY3RzXz1jfXJlbW92ZSgpe2xldCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELGk9dGhpcy5fYmluZGluZ3Mscj1pLmxlbmd0aCxzPXRoaXMubkNhY2hlZE9iamVjdHNfO2ZvcihsZXQgbz0wLGE9YXJndW1lbnRzLmxlbmd0aDtvIT09YTsrK28pe2xldCBsPWFyZ3VtZW50c1tvXSxjPWwudXVpZCx1PWVbY107aWYodSE9PXZvaWQgMCYmdT49cyl7bGV0IGg9cysrLGY9dFtoXTtlW2YudXVpZF09dSx0W3VdPWYsZVtjXT1oLHRbaF09bDtmb3IobGV0IGQ9MCxnPXI7ZCE9PWc7KytkKXtsZXQgeD1pW2RdLHY9eFtoXSxtPXhbdV07eFt1XT12LHhbaF09bX19fXRoaXMubkNhY2hlZE9iamVjdHNfPXN9dW5jYWNoZSgpe2xldCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELGk9dGhpcy5fYmluZGluZ3Mscj1pLmxlbmd0aCxzPXRoaXMubkNhY2hlZE9iamVjdHNfLG89dC5sZW5ndGg7Zm9yKGxldCBhPTAsbD1hcmd1bWVudHMubGVuZ3RoO2EhPT1sOysrYSl7bGV0IGM9YXJndW1lbnRzW2FdLHU9Yy51dWlkLGg9ZVt1XTtpZihoIT09dm9pZCAwKWlmKGRlbGV0ZSBlW3VdLGg8cyl7bGV0IGY9LS1zLGQ9dFtmXSxnPS0tbyx4PXRbZ107ZVtkLnV1aWRdPWgsdFtoXT1kLGVbeC51dWlkXT1mLHRbZl09eCx0LnBvcCgpO2ZvcihsZXQgdj0wLG09cjt2IT09bTsrK3Ype2xldCBwPWlbdl0sYj1wW2ZdLF89cFtnXTtwW2hdPWIscFtmXT1fLHAucG9wKCl9fWVsc2V7bGV0IGY9LS1vLGQ9dFtmXTtmPjAmJihlW2QudXVpZF09aCksdFtoXT1kLHQucG9wKCk7Zm9yKGxldCBnPTAseD1yO2chPT14OysrZyl7bGV0IHY9aVtnXTt2W2hdPXZbZl0sdi5wb3AoKX19fXRoaXMubkNhY2hlZE9iamVjdHNfPXN9c3Vic2NyaWJlXyh0LGUpe2xldCBpPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxyPWlbdF0scz10aGlzLl9iaW5kaW5ncztpZihyIT09dm9pZCAwKXJldHVybiBzW3JdO2xldCBvPXRoaXMuX3BhdGhzLGE9dGhpcy5fcGFyc2VkUGF0aHMsbD10aGlzLl9vYmplY3RzLGM9bC5sZW5ndGgsdT10aGlzLm5DYWNoZWRPYmplY3RzXyxoPW5ldyBBcnJheShjKTtyPXMubGVuZ3RoLGlbdF09cixvLnB1c2godCksYS5wdXNoKGUpLHMucHVzaChoKTtmb3IobGV0IGY9dSxkPWwubGVuZ3RoO2YhPT1kOysrZil7bGV0IGc9bFtmXTtoW2ZdPW5ldyBOdChnLHQsZSl9cmV0dXJuIGh9dW5zdWJzY3JpYmVfKHQpe2xldCBlPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxpPWVbdF07aWYoaSE9PXZvaWQgMCl7bGV0IHI9dGhpcy5fcGF0aHMscz10aGlzLl9wYXJzZWRQYXRocyxvPXRoaXMuX2JpbmRpbmdzLGE9by5sZW5ndGgtMSxsPW9bYV0sYz10W2FdO2VbY109aSxvW2ldPWwsby5wb3AoKSxzW2ldPXNbYV0scy5wb3AoKSxyW2ldPXJbYV0sci5wb3AoKX19fTtraC5wcm90b3R5cGUuaXNBbmltYXRpb25PYmplY3RHcm91cD0hMDt2YXIgSGg9Y2xhc3N7Y29uc3RydWN0b3IodCxlLGk9bnVsbCxyPWUuYmxlbmRNb2RlKXt0aGlzLl9taXhlcj10LHRoaXMuX2NsaXA9ZSx0aGlzLl9sb2NhbFJvb3Q9aSx0aGlzLmJsZW5kTW9kZT1yO2xldCBzPWUudHJhY2tzLG89cy5sZW5ndGgsYT1uZXcgQXJyYXkobyksbD17ZW5kaW5nU3RhcnQ6SXIsZW5kaW5nRW5kOklyfTtmb3IobGV0IGM9MDtjIT09bzsrK2Mpe2xldCB1PXNbY10uY3JlYXRlSW50ZXJwb2xhbnQobnVsbCk7YVtjXT11LHUuc2V0dGluZ3M9bH10aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzPWwsdGhpcy5faW50ZXJwb2xhbnRzPWEsdGhpcy5fcHJvcGVydHlCaW5kaW5ncz1uZXcgQXJyYXkobyksdGhpcy5fY2FjaGVJbmRleD1udWxsLHRoaXMuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5sb29wPXp3LHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xLHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT0xLHRoaXMud2VpZ2h0PTEsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PTEsdGhpcy5yZXBldGl0aW9ucz0xLzAsdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITEsdGhpcy56ZXJvU2xvcGVBdFN0YXJ0PSEwLHRoaXMuemVyb1Nsb3BlQXRFbmQ9ITB9cGxheSgpe3JldHVybiB0aGlzLl9taXhlci5fYWN0aXZhdGVBY3Rpb24odGhpcyksdGhpc31zdG9wKCl7cmV0dXJuIHRoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXMucmVzZXQoKX1yZXNldCgpe3JldHVybiB0aGlzLnBhdXNlZD0hMSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy50aW1lPTAsdGhpcy5fbG9vcENvdW50PS0xLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuc3RvcEZhZGluZygpLnN0b3BXYXJwaW5nKCl9aXNSdW5uaW5nKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMucGF1c2VkJiZ0aGlzLnRpbWVTY2FsZSE9PTAmJnRoaXMuX3N0YXJ0VGltZT09PW51bGwmJnRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX1pc1NjaGVkdWxlZCgpe3JldHVybiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9c3RhcnRBdCh0KXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lPXQsdGhpc31zZXRMb29wKHQsZSl7cmV0dXJuIHRoaXMubG9vcD10LHRoaXMucmVwZXRpdGlvbnM9ZSx0aGlzfXNldEVmZmVjdGl2ZVdlaWdodCh0KXtyZXR1cm4gdGhpcy53ZWlnaHQ9dCx0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9dGhpcy5lbmFibGVkP3Q6MCx0aGlzLnN0b3BGYWRpbmcoKX1nZXRFZmZlY3RpdmVXZWlnaHQoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0fWZhZGVJbih0KXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcodCwwLDEpfWZhZGVPdXQodCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMSwwKX1jcm9zc0ZhZGVGcm9tKHQsZSxpKXtpZih0LmZhZGVPdXQoZSksdGhpcy5mYWRlSW4oZSksaSl7bGV0IHI9dGhpcy5fY2xpcC5kdXJhdGlvbixzPXQuX2NsaXAuZHVyYXRpb24sbz1zL3IsYT1yL3M7dC53YXJwKDEsbyxlKSx0aGlzLndhcnAoYSwxLGUpfXJldHVybiB0aGlzfWNyb3NzRmFkZVRvKHQsZSxpKXtyZXR1cm4gdC5jcm9zc0ZhZGVGcm9tKHRoaXMsZSxpKX1zdG9wRmFkaW5nKCl7bGV0IHQ9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7cmV0dXJuIHQhPT1udWxsJiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9c2V0RWZmZWN0aXZlVGltZVNjYWxlKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10LHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnBhdXNlZD8wOnQsdGhpcy5zdG9wV2FycGluZygpfWdldEVmZmVjdGl2ZVRpbWVTY2FsZSgpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGV9c2V0RHVyYXRpb24odCl7cmV0dXJuIHRoaXMudGltZVNjYWxlPXRoaXMuX2NsaXAuZHVyYXRpb24vdCx0aGlzLnN0b3BXYXJwaW5nKCl9c3luY1dpdGgodCl7cmV0dXJuIHRoaXMudGltZT10LnRpbWUsdGhpcy50aW1lU2NhbGU9dC50aW1lU2NhbGUsdGhpcy5zdG9wV2FycGluZygpfWhhbHQodCl7cmV0dXJuIHRoaXMud2FycCh0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGUsMCx0KX13YXJwKHQsZSxpKXtsZXQgcj10aGlzLl9taXhlcixzPXIudGltZSxvPXRoaXMudGltZVNjYWxlLGE9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7YT09PW51bGwmJihhPXIuX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1hKTtsZXQgbD1hLnBhcmFtZXRlclBvc2l0aW9ucyxjPWEuc2FtcGxlVmFsdWVzO3JldHVybiBsWzBdPXMsbFsxXT1zK2ksY1swXT10L28sY1sxXT1lL28sdGhpc31zdG9wV2FycGluZygpe2xldCB0PXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O3JldHVybiB0IT09bnVsbCYmKHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpKSx0aGlzfWdldE1peGVyKCl7cmV0dXJuIHRoaXMuX21peGVyfWdldENsaXAoKXtyZXR1cm4gdGhpcy5fY2xpcH1nZXRSb290KCl7cmV0dXJuIHRoaXMuX2xvY2FsUm9vdHx8dGhpcy5fbWl4ZXIuX3Jvb3R9X3VwZGF0ZSh0LGUsaSxyKXtpZighdGhpcy5lbmFibGVkKXt0aGlzLl91cGRhdGVXZWlnaHQodCk7cmV0dXJufWxldCBzPXRoaXMuX3N0YXJ0VGltZTtpZihzIT09bnVsbCl7bGV0IGw9KHQtcykqaTtpZihsPDB8fGk9PT0wKXJldHVybjt0aGlzLl9zdGFydFRpbWU9bnVsbCxlPWkqbH1lKj10aGlzLl91cGRhdGVUaW1lU2NhbGUodCk7bGV0IG89dGhpcy5fdXBkYXRlVGltZShlKSxhPXRoaXMuX3VwZGF0ZVdlaWdodCh0KTtpZihhPjApe2xldCBsPXRoaXMuX2ludGVycG9sYW50cyxjPXRoaXMuX3Byb3BlcnR5QmluZGluZ3M7c3dpdGNoKHRoaXMuYmxlbmRNb2RlKXtjYXNlIGgwOmZvcihsZXQgdT0wLGg9bC5sZW5ndGg7dSE9PWg7Kyt1KWxbdV0uZXZhbHVhdGUobyksY1t1XS5hY2N1bXVsYXRlQWRkaXRpdmUoYSk7YnJlYWs7Y2FzZSAkaDpkZWZhdWx0OmZvcihsZXQgdT0wLGg9bC5sZW5ndGg7dSE9PWg7Kyt1KWxbdV0uZXZhbHVhdGUobyksY1t1XS5hY2N1bXVsYXRlKHIsYSl9fX1fdXBkYXRlV2VpZ2h0KHQpe2xldCBlPTA7aWYodGhpcy5lbmFibGVkKXtlPXRoaXMud2VpZ2h0O2xldCBpPXRoaXMuX3dlaWdodEludGVycG9sYW50O2lmKGkhPT1udWxsKXtsZXQgcj1pLmV2YWx1YXRlKHQpWzBdO2UqPXIsdD5pLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcEZhZGluZygpLHI9PT0wJiYodGhpcy5lbmFibGVkPSExKSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9ZSxlfV91cGRhdGVUaW1lU2NhbGUodCl7bGV0IGU9MDtpZighdGhpcy5wYXVzZWQpe2U9dGhpcy50aW1lU2NhbGU7bGV0IGk9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7aSE9PW51bGwmJihlKj1pLmV2YWx1YXRlKHQpWzBdLHQ+aS5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksZT09PTA/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSkpfXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2xldCBlPXRoaXMuX2NsaXAuZHVyYXRpb24saT10aGlzLmxvb3Ascj10aGlzLnRpbWUrdCxzPXRoaXMuX2xvb3BDb3VudCxvPWk9PT1VdztpZih0PT09MClyZXR1cm4gcz09PS0xP3I6byYmKHMmMSk9PT0xP2UtcjpyO2lmKGk9PT1Gdyl7cz09PS0xJiYodGhpcy5fbG9vcENvdW50PTAsdGhpcy5fc2V0RW5kaW5ncyghMCwhMCwhMSkpO3Q6e2lmKHI+PWUpcj1lO2Vsc2UgaWYocjwwKXI9MDtlbHNle3RoaXMudGltZT1yO2JyZWFrIHR9dGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITEsdGhpcy50aW1lPXIsdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PDA/LTE6MX0pfX1lbHNle2lmKHM9PT0tMSYmKHQ+PTA/KHM9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLHRoaXMucmVwZXRpdGlvbnM9PT0wLG8pKTp0aGlzLl9zZXRFbmRpbmdzKHRoaXMucmVwZXRpdGlvbnM9PT0wLCEwLG8pKSxyPj1lfHxyPDApe2xldCBhPU1hdGguZmxvb3Ioci9lKTtyLT1lKmEscys9TWF0aC5hYnMoYSk7bGV0IGw9dGhpcy5yZXBldGl0aW9ucy1zO2lmKGw8PTApdGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITEscj10PjA/ZTowLHRoaXMudGltZT1yLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dD4wPzE6LTF9KTtlbHNle2lmKGw9PT0xKXtsZXQgYz10PDA7dGhpcy5fc2V0RW5kaW5ncyhjLCFjLG8pfWVsc2UgdGhpcy5fc2V0RW5kaW5ncyghMSwhMSxvKTt0aGlzLl9sb29wQ291bnQ9cyx0aGlzLnRpbWU9cix0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJsb29wIixhY3Rpb246dGhpcyxsb29wRGVsdGE6YX0pfX1lbHNlIHRoaXMudGltZT1yO2lmKG8mJihzJjEpPT09MSlyZXR1cm4gZS1yfXJldHVybiByfV9zZXRFbmRpbmdzKHQsZSxpKXtsZXQgcj10aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzO2k/KHIuZW5kaW5nU3RhcnQ9TnIsci5lbmRpbmdFbmQ9TnIpOih0P3IuZW5kaW5nU3RhcnQ9dGhpcy56ZXJvU2xvcGVBdFN0YXJ0P05yOklyOnIuZW5kaW5nU3RhcnQ9dGwsZT9yLmVuZGluZ0VuZD10aGlzLnplcm9TbG9wZUF0RW5kP05yOklyOnIuZW5kaW5nRW5kPXRsKX1fc2NoZWR1bGVGYWRpbmcodCxlLGkpe2xldCByPXRoaXMuX21peGVyLHM9ci50aW1lLG89dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7bz09PW51bGwmJihvPXIuX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1vKTtsZXQgYT1vLnBhcmFtZXRlclBvc2l0aW9ucyxsPW8uc2FtcGxlVmFsdWVzO3JldHVybiBhWzBdPXMsbFswXT1lLGFbMV09cyt0LGxbMV09aSx0aGlzfX0sVmg9Y2xhc3MgZXh0ZW5kcyBJbntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX3Jvb3Q9dCx0aGlzLl9pbml0TWVtb3J5TWFuYWdlcigpLHRoaXMuX2FjY3VJbmRleD0wLHRoaXMudGltZT0wLHRoaXMudGltZVNjYWxlPTF9X2JpbmRBY3Rpb24odCxlKXtsZXQgaT10Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3Qscj10Ll9jbGlwLnRyYWNrcyxzPXIubGVuZ3RoLG89dC5fcHJvcGVydHlCaW5kaW5ncyxhPXQuX2ludGVycG9sYW50cyxsPWkudXVpZCxjPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSx1PWNbbF07dT09PXZvaWQgMCYmKHU9e30sY1tsXT11KTtmb3IobGV0IGg9MDtoIT09czsrK2gpe2xldCBmPXJbaF0sZD1mLm5hbWUsZz11W2RdO2lmKGchPT12b2lkIDApKytnLnJlZmVyZW5jZUNvdW50LG9baF09ZztlbHNle2lmKGc9b1toXSxnIT09dm9pZCAwKXtnLl9jYWNoZUluZGV4PT09bnVsbCYmKCsrZy5yZWZlcmVuY2VDb3VudCx0aGlzLl9hZGRJbmFjdGl2ZUJpbmRpbmcoZyxsLGQpKTtjb250aW51ZX1sZXQgeD1lJiZlLl9wcm9wZXJ0eUJpbmRpbmdzW2hdLmJpbmRpbmcucGFyc2VkUGF0aDtnPW5ldyBCaChOdC5jcmVhdGUoaSxkLHgpLGYuVmFsdWVUeXBlTmFtZSxmLmdldFZhbHVlU2l6ZSgpKSwrK2cucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKGcsbCxkKSxvW2hdPWd9YVtoXS5yZXN1bHRCdWZmZXI9Zy5idWZmZXJ9fV9hY3RpdmF0ZUFjdGlvbih0KXtpZighdGhpcy5faXNBY3RpdmVBY3Rpb24odCkpe2lmKHQuX2NhY2hlSW5kZXg9PT1udWxsKXtsZXQgaT0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLHI9dC5fY2xpcC51dWlkLHM9dGhpcy5fYWN0aW9uc0J5Q2xpcFtyXTt0aGlzLl9iaW5kQWN0aW9uKHQscyYmcy5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQscixpKX1sZXQgZT10Ll9wcm9wZXJ0eUJpbmRpbmdzO2ZvcihsZXQgaT0wLHI9ZS5sZW5ndGg7aSE9PXI7KytpKXtsZXQgcz1lW2ldO3MudXNlQ291bnQrKz09PTAmJih0aGlzLl9sZW5kQmluZGluZyhzKSxzLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fV9kZWFjdGl2YXRlQWN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtsZXQgZT10Ll9wcm9wZXJ0eUJpbmRpbmdzO2ZvcihsZXQgaT0wLHI9ZS5sZW5ndGg7aSE9PXI7KytpKXtsZXQgcz1lW2ldOy0tcy51c2VDb3VudD09PTAmJihzLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKHMpKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19X2luaXRNZW1vcnlNYW5hZ2VyKCl7dGhpcy5fYWN0aW9ucz1bXSx0aGlzLl9uQWN0aXZlQWN0aW9ucz0wLHRoaXMuX2FjdGlvbnNCeUNsaXA9e30sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fbkFjdGl2ZUJpbmRpbmdzPTAsdGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lPXt9LHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHM9W10sdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHM9MDtsZXQgdD10aGlzO3RoaXMuc3RhdHM9e2FjdGlvbnM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9hY3Rpb25zLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVBY3Rpb25zfX0sYmluZGluZ3M6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9iaW5kaW5ncy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0Ll9uQWN0aXZlQmluZGluZ3N9fSxjb250cm9sSW50ZXJwb2xhbnRzOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fY29udHJvbEludGVycG9sYW50cy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0Ll9uQWN0aXZlQ29udHJvbEludGVycG9sYW50c319fX1faXNBY3RpdmVBY3Rpb24odCl7bGV0IGU9dC5fY2FjaGVJbmRleDtyZXR1cm4gZSE9PW51bGwmJmU8dGhpcy5fbkFjdGl2ZUFjdGlvbnN9X2FkZEluYWN0aXZlQWN0aW9uKHQsZSxpKXtsZXQgcj10aGlzLl9hY3Rpb25zLHM9dGhpcy5fYWN0aW9uc0J5Q2xpcCxvPXNbZV07aWYobz09PXZvaWQgMClvPXtrbm93bkFjdGlvbnM6W3RdLGFjdGlvbkJ5Um9vdDp7fX0sdC5fYnlDbGlwQ2FjaGVJbmRleD0wLHNbZV09bztlbHNle2xldCBhPW8ua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9YS5sZW5ndGgsYS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9ci5sZW5ndGgsci5wdXNoKHQpLG8uYWN0aW9uQnlSb290W2ldPXR9X3JlbW92ZUluYWN0aXZlQWN0aW9uKHQpe2xldCBlPXRoaXMuX2FjdGlvbnMsaT1lW2UubGVuZ3RoLTFdLHI9dC5fY2FjaGVJbmRleDtpLl9jYWNoZUluZGV4PXIsZVtyXT1pLGUucG9wKCksdC5fY2FjaGVJbmRleD1udWxsO2xldCBzPXQuX2NsaXAudXVpZCxvPXRoaXMuX2FjdGlvbnNCeUNsaXAsYT1vW3NdLGw9YS5rbm93bkFjdGlvbnMsYz1sW2wubGVuZ3RoLTFdLHU9dC5fYnlDbGlwQ2FjaGVJbmRleDtjLl9ieUNsaXBDYWNoZUluZGV4PXUsbFt1XT1jLGwucG9wKCksdC5fYnlDbGlwQ2FjaGVJbmRleD1udWxsO2xldCBoPWEuYWN0aW9uQnlSb290LGY9KHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZDtkZWxldGUgaFtmXSxsLmxlbmd0aD09PTAmJmRlbGV0ZSBvW3NdLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24odCl9X3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24odCl7bGV0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IGk9MCxyPWUubGVuZ3RoO2khPT1yOysraSl7bGV0IHM9ZVtpXTstLXMucmVmZXJlbmNlQ291bnQ9PT0wJiZ0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcocyl9fV9sZW5kQWN0aW9uKHQpe2xldCBlPXRoaXMuX2FjdGlvbnMsaT10Ll9jYWNoZUluZGV4LHI9dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxzPWVbcl07dC5fY2FjaGVJbmRleD1yLGVbcl09dCxzLl9jYWNoZUluZGV4PWksZVtpXT1zfV90YWtlQmFja0FjdGlvbih0KXtsZXQgZT10aGlzLl9hY3Rpb25zLGk9dC5fY2FjaGVJbmRleCxyPS0tdGhpcy5fbkFjdGl2ZUFjdGlvbnMscz1lW3JdO3QuX2NhY2hlSW5kZXg9cixlW3JdPXQscy5fY2FjaGVJbmRleD1pLGVbaV09c31fYWRkSW5hY3RpdmVCaW5kaW5nKHQsZSxpKXtsZXQgcj10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUscz10aGlzLl9iaW5kaW5ncyxvPXJbZV07bz09PXZvaWQgMCYmKG89e30scltlXT1vKSxvW2ldPXQsdC5fY2FjaGVJbmRleD1zLmxlbmd0aCxzLnB1c2godCl9X3JlbW92ZUluYWN0aXZlQmluZGluZyh0KXtsZXQgZT10aGlzLl9iaW5kaW5ncyxpPXQuYmluZGluZyxyPWkucm9vdE5vZGUudXVpZCxzPWkucGF0aCxvPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxhPW9bcl0sbD1lW2UubGVuZ3RoLTFdLGM9dC5fY2FjaGVJbmRleDtsLl9jYWNoZUluZGV4PWMsZVtjXT1sLGUucG9wKCksZGVsZXRlIGFbc10sT2JqZWN0LmtleXMoYSkubGVuZ3RoPT09MCYmZGVsZXRlIG9bcl19X2xlbmRCaW5kaW5nKHQpe2xldCBlPXRoaXMuX2JpbmRpbmdzLGk9dC5fY2FjaGVJbmRleCxyPXRoaXMuX25BY3RpdmVCaW5kaW5ncysrLHM9ZVtyXTt0Ll9jYWNoZUluZGV4PXIsZVtyXT10LHMuX2NhY2hlSW5kZXg9aSxlW2ldPXN9X3Rha2VCYWNrQmluZGluZyh0KXtsZXQgZT10aGlzLl9iaW5kaW5ncyxpPXQuX2NhY2hlSW5kZXgscj0tLXRoaXMuX25BY3RpdmVCaW5kaW5ncyxzPWVbcl07dC5fY2FjaGVJbmRleD1yLGVbcl09dCxzLl9jYWNoZUluZGV4PWksZVtpXT1zfV9sZW5kQ29udHJvbEludGVycG9sYW50KCl7bGV0IHQ9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxlPXRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzKyssaT10W2VdO3JldHVybiBpPT09dm9pZCAwJiYoaT1uZXcgdmwobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksaS5fX2NhY2hlSW5kZXg9ZSx0W2VdPWkpLGl9X3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpe2xldCBlPXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsaT10Ll9fY2FjaGVJbmRleCxyPS0tdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMscz1lW3JdO3QuX19jYWNoZUluZGV4PXIsZVtyXT10LHMuX19jYWNoZUluZGV4PWksZVtpXT1zfWNsaXBBY3Rpb24odCxlLGkpe2xldCByPWV8fHRoaXMuX3Jvb3Qscz1yLnV1aWQsbz10eXBlb2YgdD09InN0cmluZyI/d2wuZmluZEJ5TmFtZShyLHQpOnQsYT1vIT09bnVsbD9vLnV1aWQ6dCxsPXRoaXMuX2FjdGlvbnNCeUNsaXBbYV0sYz1udWxsO2lmKGk9PT12b2lkIDAmJihvIT09bnVsbD9pPW8uYmxlbmRNb2RlOmk9JGgpLGwhPT12b2lkIDApe2xldCBoPWwuYWN0aW9uQnlSb290W3NdO2lmKGghPT12b2lkIDAmJmguYmxlbmRNb2RlPT09aSlyZXR1cm4gaDtjPWwua25vd25BY3Rpb25zWzBdLG89PT1udWxsJiYobz1jLl9jbGlwKX1pZihvPT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdT1uZXcgSGgodGhpcyxvLGUsaSk7cmV0dXJuIHRoaXMuX2JpbmRBY3Rpb24odSxjKSx0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbih1LGEscyksdX1leGlzdGluZ0FjdGlvbih0LGUpe2xldCBpPWV8fHRoaXMuX3Jvb3Qscj1pLnV1aWQscz10eXBlb2YgdD09InN0cmluZyI/d2wuZmluZEJ5TmFtZShpLHQpOnQsbz1zP3MudXVpZDp0LGE9dGhpcy5fYWN0aW9uc0J5Q2xpcFtvXTtyZXR1cm4gYSE9PXZvaWQgMCYmYS5hY3Rpb25CeVJvb3Rbcl18fG51bGx9c3RvcEFsbEFjdGlvbigpe2xldCB0PXRoaXMuX2FjdGlvbnMsZT10aGlzLl9uQWN0aXZlQWN0aW9ucztmb3IobGV0IGk9ZS0xO2k+PTA7LS1pKXRbaV0uc3RvcCgpO3JldHVybiB0aGlzfXVwZGF0ZSh0KXt0Kj10aGlzLnRpbWVTY2FsZTtsZXQgZT10aGlzLl9hY3Rpb25zLGk9dGhpcy5fbkFjdGl2ZUFjdGlvbnMscj10aGlzLnRpbWUrPXQscz1NYXRoLnNpZ24odCksbz10aGlzLl9hY2N1SW5kZXhePTE7Zm9yKGxldCBjPTA7YyE9PWk7KytjKWVbY10uX3VwZGF0ZShyLHQscyxvKTtsZXQgYT10aGlzLl9iaW5kaW5ncyxsPXRoaXMuX25BY3RpdmVCaW5kaW5ncztmb3IobGV0IGM9MDtjIT09bDsrK2MpYVtjXS5hcHBseShvKTtyZXR1cm4gdGhpc31zZXRUaW1lKHQpe3RoaXMudGltZT0wO2ZvcihsZXQgZT0wO2U8dGhpcy5fYWN0aW9ucy5sZW5ndGg7ZSsrKXRoaXMuX2FjdGlvbnNbZV0udGltZT0wO3JldHVybiB0aGlzLnVwZGF0ZSh0KX1nZXRSb290KCl7cmV0dXJuIHRoaXMuX3Jvb3R9dW5jYWNoZUNsaXAodCl7bGV0IGU9dGhpcy5fYWN0aW9ucyxpPXQudXVpZCxyPXRoaXMuX2FjdGlvbnNCeUNsaXAscz1yW2ldO2lmKHMhPT12b2lkIDApe2xldCBvPXMua25vd25BY3Rpb25zO2ZvcihsZXQgYT0wLGw9by5sZW5ndGg7YSE9PWw7KythKXtsZXQgYz1vW2FdO3RoaXMuX2RlYWN0aXZhdGVBY3Rpb24oYyk7bGV0IHU9Yy5fY2FjaGVJbmRleCxoPWVbZS5sZW5ndGgtMV07Yy5fY2FjaGVJbmRleD1udWxsLGMuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCxoLl9jYWNoZUluZGV4PXUsZVt1XT1oLGUucG9wKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbihjKX1kZWxldGUgcltpXX19dW5jYWNoZVJvb3QodCl7bGV0IGU9dC51dWlkLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IobGV0IG8gaW4gaSl7bGV0IGE9aVtvXS5hY3Rpb25CeVJvb3QsbD1hW2VdO2whPT12b2lkIDAmJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGwpLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKGwpKX1sZXQgcj10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUscz1yW2VdO2lmKHMhPT12b2lkIDApZm9yKGxldCBvIGluIHMpe2xldCBhPXNbb107YS5yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZyhhKX19dW5jYWNoZUFjdGlvbih0LGUpe2xldCBpPXRoaXMuZXhpc3RpbmdBY3Rpb24odCxlKTtpIT09bnVsbCYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24oaSksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24oaSkpfX07VmgucHJvdG90eXBlLl9jb250cm9sSW50ZXJwb2xhbnRzUmVzdWx0QnVmZmVyPW5ldyBGbG9hdDMyQXJyYXkoMSk7dmFyIEVvPWNsYXNze2NvbnN0cnVjdG9yKHQpe3R5cGVvZiB0PT0ic3RyaW5nIiYmKGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogVHlwZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIG5lZWRlZC4iKSx0PWFyZ3VtZW50c1sxXSksdGhpcy52YWx1ZT10fWNsb25lKCl7cmV0dXJuIG5ldyBFbyh0aGlzLnZhbHVlLmNsb25lPT09dm9pZCAwP3RoaXMudmFsdWU6dGhpcy52YWx1ZS5jbG9uZSgpKX19LEdoPWNsYXNzIGV4dGVuZHMgVml7Y29uc3RydWN0b3IodCxlLGk9MSl7c3VwZXIodCxlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9aX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc31jbG9uZSh0KXtsZXQgZT1zdXBlci5jbG9uZSh0KTtyZXR1cm4gZS5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSxlfXRvSlNPTih0KXtsZXQgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMCxlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9fTtHaC5wcm90b3R5cGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMDt2YXIgV2g9Y2xhc3N7Y29uc3RydWN0b3IodCxlLGkscixzKXt0aGlzLmJ1ZmZlcj10LHRoaXMudHlwZT1lLHRoaXMuaXRlbVNpemU9aSx0aGlzLmVsZW1lbnRTaXplPXIsdGhpcy5jb3VudD1zLHRoaXMudmVyc2lvbj0wfXNldCBuZWVkc1VwZGF0ZSh0KXt0PT09ITAmJnRoaXMudmVyc2lvbisrfXNldEJ1ZmZlcih0KXtyZXR1cm4gdGhpcy5idWZmZXI9dCx0aGlzfXNldFR5cGUodCxlKXtyZXR1cm4gdGhpcy50eXBlPXQsdGhpcy5lbGVtZW50U2l6ZT1lLHRoaXN9c2V0SXRlbVNpemUodCl7cmV0dXJuIHRoaXMuaXRlbVNpemU9dCx0aGlzfXNldENvdW50KHQpe3JldHVybiB0aGlzLmNvdW50PXQsdGhpc319O1doLnByb3RvdHlwZS5pc0dMQnVmZmVyQXR0cmlidXRlPSEwO3ZhciByMD1uZXcgSyxYaT1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBLKDEvMCwxLzApLGU9bmV3IEsoLTEvMCwtMS8wKSl7dGhpcy5taW49dCx0aGlzLm1heD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2xldCBpPXIwLmNvcHkoZSkubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihpKSx0aGlzLm1heC5jb3B5KHQpLmFkZChpKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9MS8wLHRoaXMubWF4Lng9dGhpcy5tYXgueT0tMS8wLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueX1nZXRDZW50ZXIodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwKTp0LnN1YlZlY3RvcnModGhpcy5tYXgsdGhpcy5taW4pfWV4cGFuZEJ5UG9pbnQodCl7cmV0dXJuIHRoaXMubWluLm1pbih0KSx0aGlzLm1heC5tYXgodCksdGhpc31leHBhbmRCeVZlY3Rvcih0KXtyZXR1cm4gdGhpcy5taW4uc3ViKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWV4cGFuZEJ5U2NhbGFyKHQpe3JldHVybiB0aGlzLm1pbi5hZGRTY2FsYXIoLXQpLHRoaXMubWF4LmFkZFNjYWxhcih0KSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuISh0Lng8dGhpcy5taW4ueHx8dC54PnRoaXMubWF4Lnh8fHQueTx0aGlzLm1pbi55fHx0Lnk+dGhpcy5tYXgueSl9Y29udGFpbnNCb3godCl7cmV0dXJuIHRoaXMubWluLng8PXQubWluLngmJnQubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PXQubWluLnkmJnQubWF4Lnk8PXRoaXMubWF4Lnl9Z2V0UGFyYW1ldGVyKHQsZSl7cmV0dXJuIGUuc2V0KCh0LngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKHQueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4hKHQubWF4Lng8dGhpcy5taW4ueHx8dC5taW4ueD50aGlzLm1heC54fHx0Lm1heC55PHRoaXMubWluLnl8fHQubWluLnk+dGhpcy5tYXgueSl9Y2xhbXBQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gcjAuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19O1hpLnByb3RvdHlwZS5pc0JveDI9ITA7dmFyIHMwPW5ldyBULEphPW5ldyBULHFoPWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IFQsZT1uZXcgVCl7dGhpcy5zdGFydD10LHRoaXMuZW5kPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0KSx0aGlzLmVuZC5jb3B5KGUpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5zdGFydC5jb3B5KHQuc3RhcnQpLHRoaXMuZW5kLmNvcHkodC5lbmQpLHRoaXN9Z2V0Q2VudGVyKHQpe3JldHVybiB0LmFkZFZlY3RvcnModGhpcy5zdGFydCx0aGlzLmVuZCkubXVsdGlwbHlTY2FsYXIoLjUpfWRlbHRhKHQpe3JldHVybiB0LnN1YlZlY3RvcnModGhpcy5lbmQsdGhpcy5zdGFydCl9ZGlzdGFuY2VTcSgpe3JldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuZW5kKX1kaXN0YW5jZSgpe3JldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG8odGhpcy5lbmQpfWF0KHQsZSl7cmV0dXJuIHRoaXMuZGVsdGEoZSkubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMuc3RhcnQpfWNsb3Nlc3RQb2ludFRvUG9pbnRQYXJhbWV0ZXIodCxlKXtzMC5zdWJWZWN0b3JzKHQsdGhpcy5zdGFydCksSmEuc3ViVmVjdG9ycyh0aGlzLmVuZCx0aGlzLnN0YXJ0KTtsZXQgaT1KYS5kb3QoSmEpLHM9SmEuZG90KHMwKS9pO3JldHVybiBlJiYocz1JZShzLDAsMSkpLHN9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUsaSl7bGV0IHI9dGhpcy5jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSk7cmV0dXJuIHRoaXMuZGVsdGEoaSkubXVsdGlwbHlTY2FsYXIocikuYWRkKHRoaXMuc3RhcnQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5zdGFydC5hcHBseU1hdHJpeDQodCksdGhpcy5lbmQuYXBwbHlNYXRyaXg0KHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnN0YXJ0LmVxdWFscyh0aGlzLnN0YXJ0KSYmdC5lbmQuZXF1YWxzKHRoaXMuZW5kKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fTt2YXIgUW49bmV3IFQsJGE9bmV3IHd0LEl1PW5ldyB3dCxYaD1jbGFzcyBleHRlbmRzIG1ve2NvbnN0cnVjdG9yKHQpe2xldCBlPUwwKHQpLGk9bmV3IEh0LHI9W10scz1bXSxvPW5ldyBmdCgwLDAsMSksYT1uZXcgZnQoMCwxLDApO2ZvcihsZXQgYz0wO2M8ZS5sZW5ndGg7YysrKXtsZXQgdT1lW2NdO3UucGFyZW50JiZ1LnBhcmVudC5pc0JvbmUmJihyLnB1c2goMCwwLDApLHIucHVzaCgwLDAsMCkscy5wdXNoKG8ucixvLmcsby5iKSxzLnB1c2goYS5yLGEuZyxhLmIpKX1pLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlZShyLDMpKSxpLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBlZShzLDMpKTtsZXQgbD1uZXcgem4oe3ZlcnRleENvbG9yczohMCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExLHRyYW5zcGFyZW50OiEwfSk7c3VwZXIoaSxsKSx0aGlzLnR5cGU9IlNrZWxldG9uSGVscGVyIix0aGlzLmlzU2tlbGV0b25IZWxwZXI9ITAsdGhpcy5yb290PXQsdGhpcy5ib25lcz1lLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2xldCBlPXRoaXMuYm9uZXMsaT10aGlzLmdlb21ldHJ5LHI9aS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7SXUuY29weSh0aGlzLnJvb3QubWF0cml4V29ybGQpLmludmVydCgpO2ZvcihsZXQgcz0wLG89MDtzPGUubGVuZ3RoO3MrKyl7bGV0IGE9ZVtzXTthLnBhcmVudCYmYS5wYXJlbnQuaXNCb25lJiYoJGEubXVsdGlwbHlNYXRyaWNlcyhJdSxhLm1hdHJpeFdvcmxkKSxRbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oJGEpLHIuc2V0WFlaKG8sUW4ueCxRbi55LFFuLnopLCRhLm11bHRpcGx5TWF0cmljZXMoSXUsYS5wYXJlbnQubWF0cml4V29ybGQpLFFuLnNldEZyb21NYXRyaXhQb3NpdGlvbigkYSksci5zZXRYWVoobysxLFFuLngsUW4ueSxRbi56KSxvKz0yKX1pLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKS5uZWVkc1VwZGF0ZT0hMCxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19O2Z1bmN0aW9uIEwwKG4pe2xldCB0PVtdO24mJm4uaXNCb25lJiZ0LnB1c2gobik7Zm9yKGxldCBlPTA7ZTxuLmNoaWxkcmVuLmxlbmd0aDtlKyspdC5wdXNoLmFwcGx5KHQsTDAobi5jaGlsZHJlbltlXSkpO3JldHVybiB0fXZhciBZaD1jbGFzcyBleHRlbmRzIG1ve2NvbnN0cnVjdG9yKHQ9MTAsZT0xMCxpPTQ0NzM5MjQscj04OTQ3ODQ4KXtpPW5ldyBmdChpKSxyPW5ldyBmdChyKTtsZXQgcz1lLzIsbz10L2UsYT10LzIsbD1bXSxjPVtdO2ZvcihsZXQgZj0wLGQ9MCxnPS1hO2Y8PWU7ZisrLGcrPW8pe2wucHVzaCgtYSwwLGcsYSwwLGcpLGwucHVzaChnLDAsLWEsZywwLGEpO2xldCB4PWY9PT1zP2k6cjt4LnRvQXJyYXkoYyxkKSxkKz0zLHgudG9BcnJheShjLGQpLGQrPTMseC50b0FycmF5KGMsZCksZCs9Myx4LnRvQXJyYXkoYyxkKSxkKz0zfWxldCB1PW5ldyBIdDt1LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlZShsLDMpKSx1LnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBlZShjLDMpKTtsZXQgaD1uZXcgem4oe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSk7c3VwZXIodSxoKSx0aGlzLnR5cGU9IkdyaWRIZWxwZXIifX07dmFyIGxUPW5ldyBGbG9hdDMyQXJyYXkoMSksbWs9bmV3IEludDMyQXJyYXkobFQuYnVmZmVyKTtGZS5jcmVhdGU9ZnVuY3Rpb24obix0KXtyZXR1cm4gY29uc29sZS5sb2coIlRIUkVFLkN1cnZlLmNyZWF0ZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQiKSxuLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEZlLnByb3RvdHlwZSksbi5wcm90b3R5cGUuY29uc3RydWN0b3I9bixuLnByb3RvdHlwZS5nZXRQb2ludD10LG59O3ZvLnByb3RvdHlwZS5mcm9tUG9pbnRzPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhdGg6IC5mcm9tUG9pbnRzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVBvaW50cygpLiIpLHRoaXMuc2V0RnJvbVBvaW50cyhuKX07WWgucHJvdG90eXBlLnNldENvbG9ycz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkdyaWRIZWxwZXI6IHNldENvbG9ycygpIGhhcyBiZWVuIGRlcHJlY2F0ZWQsIHBhc3MgdGhlbSBpbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZC4iKX07WGgucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNrZWxldG9uSGVscGVyOiB1cGRhdGUoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgY2FsbGVkLiIpfTttbi5wcm90b3R5cGUuZXh0cmFjdFVybEJhc2U9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTG9hZGVyOiAuZXh0cmFjdFVybEJhc2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoKSBpbnN0ZWFkLiIpLExoLmV4dHJhY3RVcmxCYXNlKG4pfTttbi5IYW5kbGVycz17YWRkOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTG9hZGVyOiBIYW5kbGVycy5hZGQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgTG9hZGluZ01hbmFnZXIuYWRkSGFuZGxlcigpIGluc3RlYWQuIil9LGdldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuZ2V0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmdldEhhbmRsZXIoKSBpbnN0ZWFkLiIpfX07WGkucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIobil9O1hpLnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX07WGkucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3gobil9O1hpLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZShuKX07R2UucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIobil9O0dlLnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX07R2UucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3gobil9O0dlLnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25TcGhlcmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzU3BoZXJlKCkuIiksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKG4pfTtHZS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4iKSx0aGlzLmdldFNpemUobil9O3NpLnByb3RvdHlwZS5lbXB0eT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfTtXci5wcm90b3R5cGUuc2V0RnJvbU1hdHJpeD1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5GcnVzdHVtOiAuc2V0RnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KCkuIiksdGhpcy5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChuKX07cWgucHJvdG90eXBlLmNlbnRlcj1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKG4pfTtkZS5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheShuLHQpfTtkZS5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSxuLmFwcGx5TWF0cml4Myh0aGlzKX07ZGUucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZGUucHJvdG90eXBlLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSxuLmFwcGx5TWF0cml4Myh0aGlzKX07ZGUucHJvdG90eXBlLmFwcGx5VG9WZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O2RlLnByb3RvdHlwZS5nZXRJbnZlcnNlPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5nZXRJbnZlcnNlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeEludi5jb3B5KCBtYXRyaXggKS5pbnZlcnQoKTsgaW5zdGVhZC4iKSx0aGlzLmNvcHkobikuaW52ZXJ0KCl9O3d0LnByb3RvdHlwZS5leHRyYWN0UG9zaXRpb249ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpLHRoaXMuY29weVBvc2l0aW9uKG4pfTt3dC5wcm90b3R5cGUuZmxhdHRlblRvQXJyYXlPZmZzZXQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZmxhdHRlblRvQXJyYXlPZmZzZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnRvQXJyYXkoKSBpbnN0ZWFkLiIpLHRoaXMudG9BcnJheShuLHQpfTt3dC5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0UG9zaXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy5zZXRGcm9tTWF0cml4UG9zaXRpb24oIG1hdHJpeCApIGluc3RlYWQuIiksbmV3IFQoKS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMyl9O3d0LnByb3RvdHlwZS5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5zZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKS4iKSx0aGlzLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKG4pfTt3dC5wcm90b3R5cGUubXVsdGlwbHlUb0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07d3QucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksbi5hcHBseU1hdHJpeDQodGhpcyl9O3d0LnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjQ9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yNCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLG4uYXBwbHlNYXRyaXg0KHRoaXMpfTt3dC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTt3dC5wcm90b3R5cGUucm90YXRlQXhpcz1mdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMudHJhbnNmb3JtRGlyZWN0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpLG4udHJhbnNmb3JtRGlyZWN0aW9uKHRoaXMpfTt3dC5wcm90b3R5cGUuY3Jvc3NWZWN0b3I9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmNyb3NzVmVjdG9yKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksbi5hcHBseU1hdHJpeDQodGhpcyl9O3d0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07d3QucHJvdG90eXBlLnJvdGF0ZVg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O3d0LnByb3RvdHlwZS5yb3RhdGVZPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTt3dC5wcm90b3R5cGUucm90YXRlWj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07d3QucHJvdG90eXBlLnJvdGF0ZUJ5QXhpcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVCeUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTt3dC5wcm90b3R5cGUuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhdHRyaWJ1dGUuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLG4uYXBwbHlNYXRyaXg0KHRoaXMpfTt3dC5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07d3QucHJvdG90eXBlLm1ha2VGcnVzdHVtPWZ1bmN0aW9uKG4sdCxlLGkscixzKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZUZydXN0dW0oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLm1ha2VQZXJzcGVjdGl2ZSggbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tLCBuZWFyLCBmYXIgKSBpbnN0ZWFkLiIpLHRoaXMubWFrZVBlcnNwZWN0aXZlKG4sdCxpLGUscixzKX07d3QucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weShuKS5pbnZlcnQoKX07amUucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmlzSW50ZXJzZWN0aW9uTGluZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNMaW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzTGluZShuKX07RWUucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGlzIG5vdyB2ZWN0b3IuYXBwbHlRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICkgaW5zdGVhZC4iKSxuLmFwcGx5UXVhdGVybmlvbih0aGlzKX07RWUucHJvdG90eXBlLmludmVyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuaW52ZXJzZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gaW52ZXJ0KCkuIiksdGhpcy5pbnZlcnQoKX07b2kucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uQm94PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveChuKX07b2kucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uUGxhbmU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25QbGFuZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNQbGFuZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1BsYW5lKG4pfTtvaS5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25TcGhlcmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzU3BoZXJlKCkuIiksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKG4pfTtyZS5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKSx0aGlzLmdldEFyZWEoKX07cmUucHJvdG90eXBlLmJhcnljb29yZEZyb21Qb2ludD1mdW5jdGlvbihuLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYmFyeWNvb3JkRnJvbVBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QmFyeWNvb3JkKCkuIiksdGhpcy5nZXRCYXJ5Y29vcmQobix0KX07cmUucHJvdG90eXBlLm1pZHBvaW50PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubWlkcG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRNaWRwb2ludCgpLiIpLHRoaXMuZ2V0TWlkcG9pbnQobil9O3JlLnByb3RvdHlwZW5vcm1hbD1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLHRoaXMuZ2V0Tm9ybWFsKG4pfTtyZS5wcm90b3R5cGUucGxhbmU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5wbGFuZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFBsYW5lKCkuIiksdGhpcy5nZXRQbGFuZShuKX07cmUuYmFyeWNvb3JkRnJvbVBvaW50PWZ1bmN0aW9uKG4sdCxlLGkscil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSxyZS5nZXRCYXJ5Y29vcmQobix0LGUsaSxyKX07cmUubm9ybWFsPWZ1bmN0aW9uKG4sdCxlLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubm9ybWFsKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Tm9ybWFsKCkuIikscmUuZ2V0Tm9ybWFsKG4sdCxlLGkpfTtVbi5wcm90b3R5cGUuZXh0cmFjdEFsbFBvaW50cz1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpLHRoaXMuZXh0cmFjdFBvaW50cyhuKX07VW4ucHJvdG90eXBlLmV4dHJ1ZGU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5leHRydWRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV4dHJ1ZGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IGNpKHRoaXMsbil9O1VuLnByb3RvdHlwZS5tYWtlR2VvbWV0cnk9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhcGU6IC5tYWtlR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgU2hhcGVHZW9tZXRyeSgpIGluc3RlYWQuIiksbmV3IFdpKHRoaXMsbil9O0sucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24obix0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHQsZSl9O0sucHJvdG90eXBlLmRpc3RhbmNlVG9NYW5oYXR0YW49ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKG4pfTtLLnByb3RvdHlwZS5sZW5ndGhNYW5oYXR0YW49ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX07VC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX07VC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUXVhdGVybmlvbj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21RdWF0ZXJuaW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21RdWF0ZXJuaW9uKCkgaW5zdGVhZC4iKX07VC5wcm90b3R5cGUuZ2V0UG9zaXRpb25Gcm9tTWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRQb3NpdGlvbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4UG9zaXRpb24oKS4iKSx0aGlzLnNldEZyb21NYXRyaXhQb3NpdGlvbihuKX07VC5wcm90b3R5cGUuZ2V0U2NhbGVGcm9tTWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKSx0aGlzLnNldEZyb21NYXRyaXhTY2FsZShuKX07VC5wcm90b3R5cGUuZ2V0Q29sdW1uRnJvbU1hdHJpeD1mdW5jdGlvbihuLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRDb2x1bW5Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeENvbHVtbigpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LG4pfTtULnByb3RvdHlwZS5hcHBseVByb2plY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFwcGx5UHJvamVjdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuYXBwbHlNYXRyaXg0KCBtICkgaW5zdGVhZC4iKSx0aGlzLmFwcGx5TWF0cml4NChuKX07VC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihuLHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKG4sdCxlKX07VC5wcm90b3R5cGUuZGlzdGFuY2VUb01hbmhhdHRhbj1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKSx0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8obil9O1QucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfTtXdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihuLHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKG4sdCxlKX07V3QucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfTtrdC5wcm90b3R5cGUuZ2V0Q2hpbGRCeU5hbWU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRDaGlsZEJ5TmFtZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE9iamVjdEJ5TmFtZSgpLiIpLHRoaXMuZ2V0T2JqZWN0QnlOYW1lKG4pfTtrdC5wcm90b3R5cGUucmVuZGVyRGVwdGg9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAucmVuZGVyRGVwdGggaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5yZW5kZXJPcmRlciwgaW5zdGVhZC4iKX07a3QucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbihuLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKSx0aGlzLnRyYW5zbGF0ZU9uQXhpcyh0LG4pfTtrdC5wcm90b3R5cGUuZ2V0V29ybGRSb3RhdGlvbj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRSb3RhdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5PYmplY3QzRC5nZXRXb3JsZFF1YXRlcm5pb24oIHRhcmdldCApIGluc3RlYWQuIil9O2t0LnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQobil9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGt0LnByb3RvdHlwZSx7ZXVsZXJPcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcn0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIiksdGhpcy5yb3RhdGlvbi5vcmRlcj1ufX0sdXNlUXVhdGVybmlvbjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnVzZVF1YXRlcm5pb24gaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIGxpYnJhcnkgbm93IHVzZXMgcXVhdGVybmlvbnMgYnkgZGVmYXVsdC4iKX19fSk7b2UucHJvdG90eXBlLnNldERyYXdNb2RlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLnNldERyYXdNb2RlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4gVHJhbnNmb3JtIHlvdXIgZ2VvbWV0cnkgdmlhIEJ1ZmZlckdlb21ldHJ5VXRpbHMudG9UcmlhbmdsZXNEcmF3TW9kZSgpIGlmIG5lY2Vzc2FyeS4iKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMob2UucHJvdG90eXBlLHtkcmF3TW9kZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5kcmF3TW9kZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiIpLEJ3fSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuZHJhd01vZGUgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4gVHJhbnNmb3JtIHlvdXIgZ2VvbWV0cnkgdmlhIEJ1ZmZlckdlb21ldHJ5VXRpbHMudG9UcmlhbmdsZXNEcmF3TW9kZSgpIGlmIG5lY2Vzc2FyeS4iKX19fSk7ZmwucHJvdG90eXBlLmluaXRCb25lcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoOiBpbml0Qm9uZXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtTZS5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbihuLHQpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx0IT09dm9pZCAwJiYodGhpcy5maWxtR2F1Z2U9dCksdGhpcy5zZXRGb2NhbExlbmd0aChuKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWWUucHJvdG90eXBlLHtvbmx5U2hhZG93OntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAub25seVNoYWRvdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93Q2FtZXJhRm92OntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZvdiBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZm92LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mb3Y9bn19LHNoYWRvd0NhbWVyYUxlZnQ6e3NldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTGVmdCBpcyBub3cgLnNoYWRvdy5jYW1lcmEubGVmdC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubGVmdD1ufX0sc2hhZG93Q2FtZXJhUmlnaHQ6e3NldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhUmlnaHQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnJpZ2h0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5yaWdodD1ufX0sc2hhZG93Q2FtZXJhVG9wOntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVRvcCBpcyBub3cgLnNoYWRvdy5jYW1lcmEudG9wLiIpLHRoaXMuc2hhZG93LmNhbWVyYS50b3A9bn19LHNoYWRvd0NhbWVyYUJvdHRvbTp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFCb3R0b20gaXMgbm93IC5zaGFkb3cuY2FtZXJhLmJvdHRvbS4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuYm90dG9tPW59fSxzaGFkb3dDYW1lcmFOZWFyOntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYU5lYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLm5lYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLm5lYXI9bn19LHNoYWRvd0NhbWVyYUZhcjp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZmFyPW59fSxzaGFkb3dDYW1lcmFWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVmlzaWJsZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkNhbWVyYUhlbHBlciggbGlnaHQuc2hhZG93LmNhbWVyYSApIGluc3RlYWQuIil9fSxzaGFkb3dCaWFzOntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0JpYXMgaXMgbm93IC5zaGFkb3cuYmlhcy4iKSx0aGlzLnNoYWRvdy5iaWFzPW59fSxzaGFkb3dEYXJrbmVzczp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0RhcmtuZXNzIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dNYXBXaWR0aDp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBXaWR0aCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLndpZHRoLiIpLHRoaXMuc2hhZG93Lm1hcFNpemUud2lkdGg9bn19LHNoYWRvd01hcEhlaWdodDp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBIZWlnaHQgaXMgbm93IC5zaGFkb3cubWFwU2l6ZS5oZWlnaHQuIiksdGhpcy5zaGFkb3cubWFwU2l6ZS5oZWlnaHQ9bn19fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUXQucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuIiksdGhpcy5hcnJheS5sZW5ndGh9fSxkeW5hbWljOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnVzYWdlPT09ZWx9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShlbCl9fX0pO1F0LnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKG49PT0hMD9lbDpubyksdGhpc307UXQucHJvdG90eXBlLmNvcHlJbmRpY2VzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5jb3B5SW5kaWNlc0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sUXQucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX07SHQucHJvdG90eXBlLmFkZEluZGV4PWZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRJbmRleCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEluZGV4KCkuIiksdGhpcy5zZXRJbmRleChuKX07SHQucHJvdG90eXBlLmFkZEF0dHJpYnV0ZT1mdW5jdGlvbihuLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0QXR0cmlidXRlKCkuIiksISh0JiZ0LmlzQnVmZmVyQXR0cmlidXRlKSYmISh0JiZ0LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpPyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4iKSx0aGlzLnNldEF0dHJpYnV0ZShuLG5ldyBRdChhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpOm49PT0iaW5kZXgiPyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LmFkZEF0dHJpYnV0ZTogVXNlIC5zZXRJbmRleCgpIGZvciBpbmRleCBhdHRyaWJ1dGUuIiksdGhpcy5zZXRJbmRleCh0KSx0aGlzKTp0aGlzLnNldEF0dHJpYnV0ZShuLHQpfTtIdC5wcm90b3R5cGUuYWRkRHJhd0NhbGw9ZnVuY3Rpb24obix0LGUpe2UhPT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIG5vIGxvbmdlciBzdXBwb3J0cyBpbmRleE9mZnNldC4iKSxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBpcyBub3cgLmFkZEdyb3VwKCkuIiksdGhpcy5hZGRHcm91cChuLHQpfTtIdC5wcm90b3R5cGUuY2xlYXJEcmF3Q2FsbHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY2xlYXJEcmF3Q2FsbHMoKSBpcyBub3cgLmNsZWFyR3JvdXBzKCkuIiksdGhpcy5jbGVhckdyb3VwcygpfTtIdC5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtIdC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAucmVtb3ZlQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZGVsZXRlQXR0cmlidXRlKCkuIiksdGhpcy5kZWxldGVBdHRyaWJ1dGUobil9O0h0LnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQobil9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEh0LnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSk7VmkucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5zZXREeW5hbWljKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRVc2FnZSgpIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShuPT09ITA/ZWw6bm8pLHRoaXN9O1ZpLnByb3RvdHlwZS5zZXRBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX07Y2kucHJvdG90eXBlLmdldEFycmF5cz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmdldEFycmF5cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9O2NpLnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtjaS5wcm90b3R5cGUuYWRkU2hhcGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O1hyLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmU6IC5kaXNwb3NlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07RW8ucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLm9uVXBkYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIiksdGhpc307T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeGUucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyBmdH19LHNoYWRpbmc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9bj09PWEwfX0sc3RlbmNpbE1hc2s6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFzaz1ufX0sdmVydGV4VGFuZ2VudHM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnZlcnRleFRhbmdlbnRzIGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZuLnByb3RvdHlwZSx7ZGVyaXZhdGl2ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS4gU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKSx0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXM9bn19fSk7VnQucHJvdG90eXBlLmNsZWFyVGFyZ2V0PWZ1bmN0aW9uKG4sdCxlLGkpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNsZWFyVGFyZ2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRSZW5kZXJUYXJnZXQoKSBhbmQgLmNsZWFyKCkgaW5zdGVhZC4iKSx0aGlzLnNldFJlbmRlclRhcmdldChuKSx0aGlzLmNsZWFyKHQsZSxpKX07VnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYW5pbWF0ZSgpIGlzIG5vdyAuc2V0QW5pbWF0aW9uTG9vcCgpLiIpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcChuKX07VnQucHJvdG90eXBlLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0Q3VycmVudFJlbmRlclRhcmdldCgpIGlzIG5vdyAuZ2V0UmVuZGVyVGFyZ2V0KCkuIiksdGhpcy5nZXRSZW5kZXJUYXJnZXQoKX07VnQucHJvdG90eXBlLmdldE1heEFuaXNvdHJvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0TWF4QW5pc290cm9weSgpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKS4iKSx0aGlzLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCl9O1Z0LnByb3RvdHlwZS5nZXRQcmVjaXNpb249ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0UHJlY2lzaW9uKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMucHJlY2lzaW9uLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnByZWNpc2lvbn07VnQucHJvdG90eXBlLnJlc2V0R0xTdGF0ZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5yZXNldEdMU3RhdGUoKSBpcyBub3cgLnN0YXRlLnJlc2V0KCkuIiksdGhpcy5zdGF0ZS5yZXNldCgpfTtWdC5wcm90b3R5cGUuc3VwcG9ydHNGbG9hdFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9mbG9hdCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpfTtWdC5wcm90b3R5cGUuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpfTtWdC5wcm90b3R5cGUuc3VwcG9ydHNTdGFuZGFyZERlcml2YXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIil9O1Z0LnByb3RvdHlwZS5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfTtWdC5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil9O1Z0LnByb3RvdHlwZS5zdXBwb3J0c0JsZW5kTWluTWF4PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQmxlbmRNaW5NYXgoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnRVhUX2JsZW5kX21pbm1heCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJFWFRfYmxlbmRfbWlubWF4Iil9O1Z0LnByb3RvdHlwZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMoKSBpcyBub3cgLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlcy4iKSx0aGlzLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlc307VnQucHJvdG90eXBlLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpfTtWdC5wcm90b3R5cGUuZW5hYmxlU2Npc3NvclRlc3Q9ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZW5hYmxlU2Npc3NvclRlc3QoKSBpcyBub3cgLnNldFNjaXNzb3JUZXN0KCkuIiksdGhpcy5zZXRTY2lzc29yVGVzdChuKX07VnQucHJvdG90eXBlLmluaXRNYXRlcmlhbD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmluaXRNYXRlcmlhbCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O1Z0LnByb3RvdHlwZS5hZGRQcmVQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQcmVQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtWdC5wcm90b3R5cGUuYWRkUG9zdFBsdWdpbj1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFkZFBvc3RQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtWdC5wcm90b3R5cGUudXBkYXRlU2hhZG93TWFwPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudXBkYXRlU2hhZG93TWFwKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07VnQucHJvdG90eXBlLnNldEZhY2VDdWxsaW5nPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0RmFjZUN1bGxpbmcoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtWdC5wcm90b3R5cGUuYWxsb2NUZXh0dXJlVW5pdD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFsbG9jVGV4dHVyZVVuaXQoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtWdC5wcm90b3R5cGUuc2V0VGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtWdC5wcm90b3R5cGUuc2V0VGV4dHVyZTJEPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZTJEKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07VnQucHJvdG90eXBlLnNldFRleHR1cmVDdWJlPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZUN1YmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtWdC5wcm90b3R5cGUuZ2V0QWN0aXZlTWlwTWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0QWN0aXZlTWlwTWFwTGV2ZWwoKSBpcyBub3cgLmdldEFjdGl2ZU1pcG1hcExldmVsKCkuIiksdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWdC5wcm90b3R5cGUse3NoYWRvd01hcEVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC5lbmFibGVkfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwRW5hYmxlZCBpcyBub3cgLnNoYWRvd01hcC5lbmFibGVkLiIpLHRoaXMuc2hhZG93TWFwLmVuYWJsZWQ9bn19LHNoYWRvd01hcFR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC50eXBlfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwVHlwZSBpcyBub3cgLnNoYWRvd01hcC50eXBlLiIpLHRoaXMuc2hhZG93TWFwLnR5cGU9bn19LHNoYWRvd01hcEN1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0sY29udGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5nZXRDb250ZXh0KCkgaW5zdGVhZC4iKSx0aGlzLmdldENvbnRleHQoKX19LHZyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudnIgaGFzIGJlZW4gcmVuYW1lZCB0byAueHIiKSx0aGlzLnhyfX0sZ2FtbWFJbnB1dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFJbnB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgdGhlIGVuY29kaW5nIGZvciB0ZXh0dXJlcyB2aWEgVGV4dHVyZS5lbmNvZGluZyBpbnN0ZWFkLiIpfX0sZ2FtbWFPdXRwdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYU91dHB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgV2ViR0xSZW5kZXJlci5vdXRwdXRFbmNvZGluZyBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSx0aGlzLm91dHB1dEVuY29kaW5nPW49PT0hMD8kdDpyaX19LHRvbmVNYXBwaW5nV2hpdGVQb2ludDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpLDF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sZ2FtbWFGYWN0b3I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUZhY3RvciBoYXMgYmVlbiByZW1vdmVkLiIpLDJ9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hRmFjdG9yIGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFMwLnByb3RvdHlwZSx7Y3VsbEZhY2U6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LHJlbmRlclJldmVyc2VTaWRlZDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJTaW5nbGVTaWRlZDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhOZS5wcm90b3R5cGUse3dyYXBTOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKSx0aGlzLnRleHR1cmUud3JhcFN9LHNldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwUz1ufX0sd3JhcFQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULiIpLHRoaXMudGV4dHVyZS53cmFwVH0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUPW59fSxtYWdGaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWFnRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5tYWdGaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcn0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyPW59fSxtaW5GaWx0ZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAubWluRmlsdGVyIGlzIG5vdyAudGV4dHVyZS5taW5GaWx0ZXIuIiksdGhpcy50ZXh0dXJlLm1pbkZpbHRlcn0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyPW59fSxhbmlzb3Ryb3B5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmFuaXNvdHJvcHkgaXMgbm93IC50ZXh0dXJlLmFuaXNvdHJvcHkuIiksdGhpcy50ZXh0dXJlLmFuaXNvdHJvcHl9LHNldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weT1ufX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm9mZnNldCBpcyBub3cgLnRleHR1cmUub2Zmc2V0LiIpLHRoaXMudGV4dHVyZS5vZmZzZXR9LHNldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldD1ufX0scmVwZWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpLHRoaXMudGV4dHVyZS5yZXBlYXR9LHNldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdD1ufX0sZm9ybWF0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpLHRoaXMudGV4dHVyZS5mb3JtYXR9LHNldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdD1ufX0sdHlwZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC50eXBlIGlzIG5vdyAudGV4dHVyZS50eXBlLiIpLHRoaXMudGV4dHVyZS50eXBlfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGU9bn19LGdlbmVyYXRlTWlwbWFwczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5nZW5lcmF0ZU1pcG1hcHMgaXMgbm93IC50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcy4iKSx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9bn19fSk7emgucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogLmxvYWQgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkF1ZGlvTG9hZGVyIGluc3RlYWQuIik7bGV0IHQ9dGhpcztyZXR1cm4gbmV3IEloKCkubG9hZChuLGZ1bmN0aW9uKGkpe3Quc2V0QnVmZmVyKGkpfSksdGhpc307VWgucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5BdWRpb0FuYWx5c2VyOiAuZ2V0RGF0YSgpIGlzIG5vdyAuZ2V0RnJlcXVlbmN5RGF0YSgpLiIpLHRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpfTtvby5wcm90b3R5cGUudXBkYXRlQ3ViZU1hcD1mdW5jdGlvbihuLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1YmVDYW1lcmE6IC51cGRhdGVDdWJlTWFwKCkgaXMgbm93IC51cGRhdGUoKS4iKSx0aGlzLnVwZGF0ZShuLHQpfTtvby5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24obix0LGUsaSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLmNsZWFyKCkgaXMgbm93IC5yZW5kZXJUYXJnZXQuY2xlYXIoKS4iKSx0aGlzLnJlbmRlclRhcmdldC5jbGVhcihuLHQsZSxpKX07Tm4uY3Jvc3NPcmlnaW49dm9pZCAwO05uLmxvYWRUZXh0dXJlPWZ1bmN0aW9uKG4sdCxlLGkpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7bGV0IHI9bmV3IGJoO3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7bGV0IHM9ci5sb2FkKG4sZSx2b2lkIDAsaSk7cmV0dXJuIHQmJihzLm1hcHBpbmc9dCksc307Tm4ubG9hZFRleHR1cmVDdWJlPWZ1bmN0aW9uKG4sdCxlLGkpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZUN1YmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkN1YmVUZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtsZXQgcj1uZXcgTWg7ci5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtsZXQgcz1yLmxvYWQobixlLHZvaWQgMCxpKTtyZXR1cm4gdCYmKHMubWFwcGluZz10KSxzfTtObi5sb2FkQ29tcHJlc3NlZFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O05uLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfTt0eXBlb2YgX19USFJFRV9ERVZUT09MU19fIT0idW5kZWZpbmVkIiYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246Wmh9fSkpO3R5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiYod2luZG93Ll9fVEhSRUVfXz9jb25zb2xlLndhcm4oIldBUk5JTkc6IE11bHRpcGxlIGluc3RhbmNlcyBvZiBUaHJlZS5qcyBiZWluZyBpbXBvcnRlZC4iKTp3aW5kb3cuX19USFJFRV9fPVpoKTtmdW5jdGlvbiBlZihuLHQsZSl7aWYoZT09PTEpcmV0dXJuIG5ldyBmdCh0KTtsZXQgaT1waSh0KTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYGQzIGZhaWxlZCB0byByZWNvZ25pemUgdGhlIGNvbG9yOiAke3R9YCk7cmV0dXJuIG5ldyBmdChyYyhpLG4pKDEtZSkpfXZhciBnbjsoZnVuY3Rpb24obil7bltuLkNJUkNMRT0wXT0iQ0lSQ0xFIixuW24uTElORT0xXT0iTElORSIsbltuLlRSSUFOR0xFPTJdPSJUUklBTkdMRSIsbltuLlRSQVBFWk9JRD0zXT0iVFJBUEVaT0lEIn0pKGdufHwoZ249e30pKTtmdW5jdGlvbiBEMChuLHQpe2xldCBlPXQubGVuZ3RoLzIsaT1uLmF0dHJpYnV0ZXMucG9zaXRpb247KCFpfHxpLmNvdW50IT09ZSozKSYmKGk9bmV3IFF0KG5ldyBGbG9hdDMyQXJyYXkoZSozKSwzKSxuLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLGkpKTtsZXQgcj1pLmFycmF5O2ZvcihsZXQgcz0wO3M8ZTtzKyspcltzKjNdPXRbcyoyXSxyW3MqMysxXT10W3MqMisxXTtpLm5lZWRzVXBkYXRlPSEwLG4uc2V0RHJhd1JhbmdlKDAsZSozKSxuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIEkwKG4sdCxlKXtsZXQgaT1NYXRoLm1heCh0Lmxlbmd0aC8yLTEsMCkscj1pKjIqMyxzPXIqMyxvPW4uYXR0cmlidXRlcy5wb3NpdGlvbjsoIW98fG8uY291bnQhPT1yKSYmKG89bmV3IFF0KG5ldyBGbG9hdDMyQXJyYXkocyksMyksbi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixvKSk7bGV0IGE9by5hcnJheTtmb3IobGV0IGw9MDtsPGk7bCsrKXtsZXRbYyx1LGgsZl09W3RbMipsXSx0WzIqbCsxXSx0WzIqbCsyXSx0WzIqbCszXV0sZD1uZXcgSyhjLHUpLGc9bmV3IEsoaCxmKSx4PW5ldyBLKGgtYyxmLXUpLHY9bmV3IEsoLXgueSx4LngpLnNldExlbmd0aChlLzIpLG09ZC5jbG9uZSgpLmFkZCh2KSxwPWQuY2xvbmUoKS5zdWIodiksYj1nLmNsb25lKCkuYWRkKHYpLF89Zy5jbG9uZSgpLnN1Yih2KSxTPVttLngsbS55LDAscC54LHAueSwwLGIueCxiLnksMCxiLngsYi55LDAscC54LHAueSwwLF8ueCxfLnksMF07YS5zZXQoUyxsKlMubGVuZ3RoKX1vLm5lZWRzVXBkYXRlPSEwLG4uc2V0RHJhd1JhbmdlKDAscyksbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKX1mdW5jdGlvbiBEbChuLHQsZSxpKXtsZXR7dmlzaWJsZTpyLGNvbG9yOnMsb3BhY2l0eTpvfT1pO2lmKEFycmF5LmlzQXJyYXkodC5tYXRlcmlhbCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IG9ubHkgZXhwZWN0IG9uZSBtYXRlcmlhbCBvbiBhbiBvYmplY3QiKTtsZXQgYT10Lm1hdGVyaWFsO2lmKGEudmlzaWJsZSE9PXImJihhLnZpc2libGU9cixhLm5lZWRzVXBkYXRlPSEwKSwhcilyZXR1cm4hMTtsZXQgbD1lZihuLHMsbyE9bnVsbD9vOjEpLGM9ZSh0Lmdlb21ldHJ5KTtyZXR1cm4gdC5nZW9tZXRyeSE9PWMmJih0Lmdlb21ldHJ5PWMpLGEuY29sb3IuZXF1YWxzKGwpfHwoYS5jb2xvci5zZXQobCksYS5uZWVkc1VwZGF0ZT0hMCksITB9dmFyIENvPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxpLHIpe3RoaXMuY29vcmRpbmF0b3I9ZSx0aGlzLnNjZW5lPW5ldyBYcix0aGlzLmJhY2tncm91bmRDb2xvcj0iI2ZmZiIsU20oKSYmdCBpbnN0YW5jZW9mIE9mZnNjcmVlbkNhbnZhcyYmKHQuc3R5bGU9dC5zdHlsZXx8e30pLHImJnQuYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsciksdGhpcy5yZW5kZXJlcj1uZXcgVnQoe2NhbnZhczp0LGFudGlhbGlhczohMCxhbHBoYTohMH0pLHRoaXMucmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhpKX1vblJlc2l6ZSh0KXt0aGlzLnJlbmRlcmVyLnNldFNpemUodC53aWR0aCx0LmhlaWdodCl9ZGVzdHJveU9iamVjdCh0KXtsZXQgZT10Lm9iajNkO2lmKHRoaXMuc2NlbmUucmVtb3ZlKGUpLGUgaW5zdGFuY2VvZiBvZSl7ZS5nZW9tZXRyeS5kaXNwb3NlKCk7bGV0IGk9QXJyYXkuaXNBcnJheShlLm1hdGVyaWFsKT9lLm1hdGVyaWFsOltlLm1hdGVyaWFsXTtmb3IobGV0IHIgb2YgaSlyLmRpc3Bvc2UoKX19c2V0VXNlRGFya01vZGUodCl7dGhpcy5iYWNrZ3JvdW5kQ29sb3I9dD8iIzMwMzAzMCI6IiNmZmYifWNyZWF0ZU9yVXBkYXRlTGluZU9iamVjdCh0LGUsaSl7dmFyIHI7aWYoIXQmJiFpLnZpc2libGUpcmV0dXJuIG51bGw7bGV0e3Zpc2libGU6cyx3aWR0aDpvfT1pO2lmKCF0KXtsZXQgaD1lZih0aGlzLmJhY2tncm91bmRDb2xvcixpLmNvbG9yLChyPWkub3BhY2l0eSkhPT1udWxsJiZyIT09dm9pZCAwP3I6MSksZj1uZXcgSHQsZD1uZXcgem4oe2NvbG9yOmh9KSxnPW5ldyBvZShmLGQpO3JldHVybiBkLnZpc2libGU9cyxJMChmLGUsbyksdGhpcy5zY2VuZS5hZGQoZykse3R5cGU6Z24uTElORSxkYXRhOmUsb2JqM2Q6Zyx3aWR0aDpvfX1sZXR7ZGF0YTphLG9iajNkOmwsd2lkdGg6Y309dDtyZXR1cm4gRGwodGhpcy5iYWNrZ3JvdW5kQ29sb3IsbCxoPT4oKG8hPT1jfHwhYXx8IWdhKGEsZSkpJiZJMChoLGUsbyksaCksaSk/e3R5cGU6Z24uTElORSxkYXRhOmUsb2JqM2Q6bCx3aWR0aDpvfTp0fWNyZWF0ZU1lc2godCxlKXtpZighZS52aXNpYmxlKXJldHVybiBudWxsO2xldHt2aXNpYmxlOmksY29sb3I6cixvcGFjaXR5OnN9PWUsbz1lZih0aGlzLmJhY2tncm91bmRDb2xvcixyLHMhPW51bGw/czoxKSxhPW5ldyBPaSh7Y29sb3I6byx2aXNpYmxlOml9KTtyZXR1cm4gbmV3IG9lKHQsYSl9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LGUsaSl7bGV0e3NpemU6cn09aSxzPXIqTWF0aC5zcXJ0KDMpLzIsbz1uZXcgRmxvYXQzMkFycmF5KFtlLngtci8yLGUueS1zLzMsZS54K3IvMixlLnktcy8zLGUueCxlLnkrcyoyLzNdKTtpZighdCl7bGV0IGw9bmV3IEh0O0QwKGwsbyk7bGV0IGM9dGhpcy5jcmVhdGVNZXNoKGwsaSk7cmV0dXJuIGM9PT1udWxsP251bGw6KHRoaXMuc2NlbmUuYWRkKGMpLHt0eXBlOmduLlRSSUFOR0xFLGRhdGE6ZSxvYmozZDpjfSl9cmV0dXJuIERsKHRoaXMuYmFja2dyb3VuZENvbG9yLHQub2JqM2QsbD0+KEQwKGwsbyksbCksaSk/e3R5cGU6Z24uVFJJQU5HTEUsZGF0YTplLG9iajNkOnQub2JqM2R9OnR9Y3JlYXRlT3JVcGRhdGVDaXJjbGVPYmplY3QodCxlLGkpe2xldHtyYWRpdXM6cn09aSxzPW5ldyBZcihpLnJhZGl1cyk7aWYoIXQpe2xldCBhPXRoaXMuY3JlYXRlTWVzaChzLGkpO3JldHVybiBhPT09bnVsbD9udWxsOihhLnBvc2l0aW9uLnNldChlLngsZS55LDApLHRoaXMuc2NlbmUuYWRkKGEpLHt0eXBlOmduLkNJUkNMRSxkYXRhOntsb2M6ZSxyYWRpdXM6cn0sb2JqM2Q6YX0pfXJldHVybiBEbCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgpPT5zLGkpPyh0Lm9iajNkLnBvc2l0aW9uLnNldChlLngsZS55LDApLHt0eXBlOmduLkNJUkNMRSxkYXRhOntsb2M6ZSxyYWRpdXM6cn0sb2JqM2Q6dC5vYmozZH0pOnR9Y3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodCxlLGkscil7aWYoZS55IT09aS55KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnB1dCBlcnJvcjogc3RhcnQueSAhPSBlbmQueS4iKTtsZXR7YWx0aXR1ZGU6c309cixvPTIvTWF0aC5zcXJ0KDMpKnMsYT1uZXcgVW4oW25ldyBLKGUueC1vLzIsZS55LXMvMiksbmV3IEsoZS54LGUueStzLzIpLG5ldyBLKGkueCxpLnkrcy8yKSxuZXcgSyhpLngrby8yLGkueS1zLzIpXSk7YS5hdXRvQ2xvc2U9ITA7bGV0IGw9bmV3IFdpKGEpO2lmKCF0KXtsZXQgdT10aGlzLmNyZWF0ZU1lc2gobCxyKTtyZXR1cm4gdT09PW51bGw/bnVsbDoodGhpcy5zY2VuZS5hZGQodSkse3R5cGU6Z24uVFJBUEVaT0lELGRhdGE6W2UsaV0sb2JqM2Q6dX0pfXJldHVybiBEbCh0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgpPT5sLHIpP3t0eXBlOmduLlRSQVBFWk9JRCxkYXRhOltlLGldLG9iajNkOnQub2JqM2R9OnR9Zmx1c2goKXt0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnNjZW5lLHRoaXMuY29vcmRpbmF0b3IuZ2V0Q2FtZXJhKCkpfWRpc3Bvc2UoKXt0aGlzLnJlbmRlcmVyLmRpc3Bvc2UoKX19O3ZhciBJbD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucmVuZGVyQ2FjaGU9dCx0aGlzLnJlbmRlcmVyPWV9c2V0TGluZSh0LGUsaSl7bGV0IHI9dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZUxpbmVPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLGkpO3ImJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxyKX1zZXRUcmlhbmdsZSh0LGUsaSl7bGV0IHI9dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxpKTtyJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQscil9c2V0Q2lyY2xlKHQsZSxpKXtsZXQgcj10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlQ2lyY2xlT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxpKTtyJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQscil9c2V0VHJhcGV6b2lkKHQsZSxpLHIpe2xldCBzPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodGhpcy5yZW5kZXJDYWNoZS5nZXRGcm9tUHJldmlvdXNGcmFtZSh0KSxlLGkscik7cyYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LHMpfX07dmFyIG5mPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5wcmV2RnJhbWVDYWNoZT1uZXcgTWFwLHRoaXMuY3VyckZyYW1lQ2FjaGU9bmV3IE1hcH1nZXRGcm9tUHJldmlvdXNGcmFtZSh0KXtsZXQgZT10aGlzLnByZXZGcmFtZUNhY2hlLmdldCh0KTtyZXR1cm4gZSE9bnVsbD9lOm51bGx9c2V0VG9DdXJyZW50RnJhbWUodCxlKXt0aGlzLmN1cnJGcmFtZUNhY2hlLnNldCh0LGUpfWZpbmFsaXplRnJhbWVBbmRHZXRSZW1vdmVkKCl7bGV0IHQ9W107Zm9yKGxldFtlLGldb2YgdGhpcy5wcmV2RnJhbWVDYWNoZS5lbnRyaWVzKCkpdGhpcy5jdXJyRnJhbWVDYWNoZS5oYXMoZSl8fHQucHVzaChpKTtyZXR1cm4gdGhpcy5wcmV2RnJhbWVDYWNoZT10aGlzLmN1cnJGcmFtZUNhY2hlLHRoaXMuY3VyckZyYW1lQ2FjaGU9bmV3IE1hcCx0fX0sTmw9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5yYXdTZXJpZXNEYXRhPVtdLHRoaXMuc2VyaWVzPVtdLHRoaXMucGFpbnREaXJ0eT0hMCx0aGlzLnJlbmRlckNhY2hlPW5ldyBuZix0aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPW51bGwsdGhpcy5sYXlvdXQ9e3g6MCx3aWR0aDoxLHk6MCxoZWlnaHQ6MX0sdGhpcy5nZXRNZXRhZGF0YU1hcEltcGw9dC5nZXRNZXRhZGF0YU1hcCx0aGlzLmNvb3JkaW5hdG9yPXQuY29vcmRpbmF0b3IsdGhpcy5yZW5kZXJlcj10LnJlbmRlcmVyLHRoaXMucGFpbnRCcnVzaD1uZXcgSWwodGhpcy5yZW5kZXJDYWNoZSx0aGlzLnJlbmRlcmVyKX1zZXRMYXlvdXRSZWN0KHQpeyh0aGlzLmxheW91dC54IT09dC54fHx0aGlzLmxheW91dC53aWR0aCE9PXQud2lkdGh8fHRoaXMubGF5b3V0LnkhPT10Lnl8fHRoaXMubGF5b3V0LmhlaWdodCE9PXQuaGVpZ2h0KSYmKHRoaXMucGFpbnREaXJ0eT0hMCksdGhpcy5sYXlvdXQ9dH1nZXRMYXlvdXRSZWN0KCl7cmV0dXJuIHRoaXMubGF5b3V0fWdldE1ldGFkYXRhTWFwKCl7cmV0dXJuIHRoaXMuZ2V0TWV0YWRhdGFNYXBJbXBsKCl9bWFya0FzUGFpbnREaXJ0eSgpe3RoaXMucGFpbnREaXJ0eT0hMH1yZW5kZXIoKXtpZih0aGlzLnRyYW5zZm9ybUNvb3JkaW5hdGVzSWZTdGFsZSgpLCEhdGhpcy5wYWludERpcnR5KXt0aGlzLnJlZHJhdygpO2ZvcihsZXQgdCBvZiB0aGlzLnJlbmRlckNhY2hlLmZpbmFsaXplRnJhbWVBbmRHZXRSZW1vdmVkKCkpdGhpcy5yZW5kZXJlci5kZXN0cm95T2JqZWN0KHQpO3RoaXMucGFpbnREaXJ0eT0hMX19aXNDb29yZGluYXRlVXBkYXRlZCgpe3JldHVybiB0aGlzLmNvb3JkaW5hdG9yLmdldFVwZGF0ZUlkZW50aWZpZXIoKSE9PXRoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXJ9Y2xlYXJDb29yZGluYXRlSWRlbnRpZmllcigpe3RoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXI9bnVsbH1zZXREYXRhKHQpe3RoaXMuY2xlYXJDb29yZGluYXRlSWRlbnRpZmllcigpLHRoaXMucmF3U2VyaWVzRGF0YT10fXRyYW5zZm9ybUNvb3JkaW5hdGVzSWZTdGFsZSgpe2lmKCF0aGlzLmlzQ29vcmRpbmF0ZVVwZGF0ZWQoKSlyZXR1cm47bGV0IHQ9dGhpcy5nZXRMYXlvdXRSZWN0KCk7dGhpcy5zZXJpZXM9bmV3IEFycmF5KHRoaXMucmF3U2VyaWVzRGF0YS5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8dGhpcy5yYXdTZXJpZXNEYXRhLmxlbmd0aDtlKyspe2xldCBpPXRoaXMucmF3U2VyaWVzRGF0YVtlXTt0aGlzLnNlcmllc1tlXT17aWQ6aS5pZCxwb2x5bGluZTpuZXcgRmxvYXQzMkFycmF5KGkucG9pbnRzLmxlbmd0aCoyKX07Zm9yKGxldCByPTA7cjxpLnBvaW50cy5sZW5ndGg7cisrKXtsZXRbcyxvXT10aGlzLmNvb3JkaW5hdG9yLnRyYW5zZm9ybURhdGFUb1VpQ29vcmQodCxbaS5wb2ludHNbcl0ueCxpLnBvaW50c1tyXS55XSk7dGhpcy5zZXJpZXNbZV0ucG9seWxpbmVbcioyXT1zLHRoaXMuc2VyaWVzW2VdLnBvbHlsaW5lW3IqMisxXT1vfX10aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPXRoaXMuY29vcmRpbmF0b3IuZ2V0VXBkYXRlSWRlbnRpZmllcigpLHRoaXMubWFya0FzUGFpbnREaXJ0eSgpfX07dmFyIFJvOyhmdW5jdGlvbihuKXtuW24uTlVNQkVSPTBdPSJOVU1CRVIiLG5bbi5OQU49MV09Ik5BTiJ9KShSb3x8KFJvPXt9KSk7dmFyIEZsPWNsYXNzIGV4dGVuZHMgTmx7cmVjb3JkUGFydGl0aW9uKHQsZSxpKXtyZXR1cm4gdD97dHlwZTpSby5OVU1CRVIscG9seWxpbmU6ZX06e3R5cGU6Um8uTkFOLHBvbHlsaW5lOmUubWFwKChyLHMpPT5pc05hTihyKT9zJTI9PT0wP2kueDppLnk6cil9fXBhcnRpdGlvblBvbHlsaW5lKHQpe2xldCBlPVtdLGk9MCxyPSExLHM9dGhpcy5jb29yZGluYXRvci50cmFuc2Zvcm1EYXRhVG9VaUNvb3JkKHRoaXMuZ2V0TGF5b3V0UmVjdCgpLFswLDBdKSxvPXt4OnNbMF0seTpzWzFdfSxhPW51bGw7Zm9yKGxldCBsPTA7bDx0Lmxlbmd0aDtsKz0yKXtsZXQgYz10W2xdLHU9dFtsKzFdLGg9aXNOYU4oYyl8fGlzTmFOKHUpO2ghPT1yJiZpIT09bCYmKGUucHVzaCh0aGlzLnJlY29yZFBhcnRpdGlvbighcix0LnNsaWNlKGksbCksYT09PW51bGw/e3g6Yyx5OnV9OmEpKSxpPWwpLGh8fChhPXt4OmMseTp1fSkscj1ofXJldHVybiBpIT09dC5sZW5ndGgtMSYmZS5wdXNoKHRoaXMucmVjb3JkUGFydGl0aW9uKCFyLHQuc2xpY2UoaSx0Lmxlbmd0aCksYSE9bnVsbD9hOm8pKSxlfXJlZHJhdygpe3ZhciB0LGUsaTtmb3IobGV0IHIgb2YgdGhpcy5zZXJpZXMpe2xldCBvPXRoaXMuZ2V0TWV0YWRhdGFNYXAoKVtyLmlkXTtpZighbyljb250aW51ZTtpZihyLnBvbHlsaW5lLmxlbmd0aCUyIT09MCl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBoYXZlIG9kZCBsZW5ndGgtZWQgcG9seWxpbmU6ICR7ci5wb2x5bGluZS5sZW5ndGh9YCk7bGV0IGE9dGhpcy5wYXJ0aXRpb25Qb2x5bGluZShyLnBvbHlsaW5lKTtmb3IobGV0W2wse3R5cGU6Yyxwb2x5bGluZTp1fV1vZiBhLmVudHJpZXMoKSlpZihjPT09Um8uTlVNQkVSKXUubGVuZ3RoPT09Mj90aGlzLnBhaW50QnJ1c2guc2V0Q2lyY2xlKEpTT04uc3RyaW5naWZ5KFsiY2lyY2xlIixyLmlkLGxdKSx7eDp1WzBdLHk6dVsxXX0se2NvbG9yOm8uY29sb3IsdmlzaWJsZTpvLnZpc2libGUsb3BhY2l0eToodD1vLm9wYWNpdHkpIT09bnVsbCYmdCE9PXZvaWQgMD90OjEscmFkaXVzOjR9KTp0aGlzLnBhaW50QnJ1c2guc2V0TGluZShKU09OLnN0cmluZ2lmeShbImxpbmUiLHIuaWQsbF0pLHUse2NvbG9yOm8uY29sb3IsdmlzaWJsZTpvLnZpc2libGUsb3BhY2l0eTooZT1vLm9wYWNpdHkpIT09bnVsbCYmZSE9PXZvaWQgMD9lOjEsd2lkdGg6Mn0pO2Vsc2UgaWYoIW8uYXV4KWZvcihsZXQgaD0wO2g8dS5sZW5ndGg7aCs9Mil0aGlzLnBhaW50QnJ1c2guc2V0VHJpYW5nbGUoSlNPTi5zdHJpbmdpZnkoWyJOYU4iLHIuaWQsdVtoXSx1W2grMV1dKSx7eDp1W2hdLHk6dVtoKzFdfSx7Y29sb3I6by5jb2xvcix2aXNpYmxlOm8udmlzaWJsZSxvcGFjaXR5OihpPW8ub3BhY2l0eSkhPT1udWxsJiZpIT09dm9pZCAwP2k6MSxzaXplOjEyfSl9fX07dmFyIHpsPWNsYXNzIGV4dGVuZHMgZnJ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY2FtZXJhPW5ldyBIaSgwLDFlMywxZTMsMCwwLDEwMCl9aXNZQXhpc1BvaW50ZWREb3duKCl7cmV0dXJuITF9c2V0RG9tQ29udGFpbmVyUmVjdCh0KXtzdXBlci5zZXREb21Db250YWluZXJSZWN0KHQpLHRoaXMuY2FtZXJhLmxlZnQ9dC54LHRoaXMuY2FtZXJhLnJpZ2h0PXQueCt0LndpZHRoLHRoaXMuY2FtZXJhLnRvcD10LnkrdC5oZWlnaHQsdGhpcy5jYW1lcmEuYm90dG9tPXQueSx0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Z2V0Q2FtZXJhKCl7cmV0dXJuIHRoaXMuY2FtZXJhfX07dmFyIGNUPXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWU6bj0+c2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobil9LFVsPWNsYXNze2NvbnN0cnVjdG9yKHQpe3N3aXRjaCh0aGlzLm1ldGFkYXRhTWFwPXt9LHRoaXMuc2hvdWxkUmVwYWludD0hMSx0aGlzLmNhbGxiYWNrcz10LmNhbGxiYWNrcyx0LnR5cGUpe2Nhc2UgVG4uU1ZHOnt0aGlzLmNvb3JkaW5hdG9yPW5ldyBmcix0aGlzLnJlbmRlcmVyPW5ldyBCcyh0LmNvbnRhaW5lcik7YnJlYWt9Y2FzZSBUbi5XRUJHTDp7bGV0IGU9bmV3IHpsO3RoaXMuY29vcmRpbmF0b3I9ZSx0aGlzLnJlbmRlcmVyPW5ldyBDbyh0LmNvbnRhaW5lcixlLHQuZGV2aWNlUGl4ZWxSYXRpbyx0LmNhbGxiYWNrcy5vbkNvbnRleHRMb3N0KTticmVha319dGhpcy5yZW5kZXJlci5zZXRVc2VEYXJrTW9kZSh0LnVzZURhcmtNb2RlKSx0aGlzLnNlcmllc0xpbmVWaWV3PW5ldyBGbCh7cmVuZGVyZXI6dGhpcy5yZW5kZXJlcixjb29yZGluYXRvcjp0aGlzLmNvb3JkaW5hdG9yLGdldE1ldGFkYXRhTWFwOigpPT50aGlzLm1ldGFkYXRhTWFwfSksdGhpcy5yZXNpemUodC5kb21EaW1lbnNpb24pfWRpc3Bvc2UoKXt9c2V0WFNjYWxlVHlwZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldFhTY2FsZShocih0KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRZU2NhbGVUeXBlKHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0WVNjYWxlKGhyKHQpKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXJlc2l6ZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldERvbUNvbnRhaW5lclJlY3QoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMucmVuZGVyZXIub25SZXNpemUoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMuc2VyaWVzTGluZVZpZXcuc2V0TGF5b3V0UmVjdChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6MCx5OjB9KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRNZXRhZGF0YSh0KXtsZXQgZT0hMTtPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChbaSxyXSk9PntsZXQgcz10aGlzLm1ldGFkYXRhTWFwW2ldOyghc3x8ci5jb2xvciE9PXMuY29sb3J8fHIudmlzaWJsZSE9PXMudmlzaWJsZXx8ci5vcGFjaXR5IT09cy5vcGFjaXR5KSYmKGU9ITApLHRoaXMubWV0YWRhdGFNYXBbaV09cn0pLGUmJnRoaXMuc2VyaWVzTGluZVZpZXcubWFya0FzUGFpbnREaXJ0eSgpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0Vmlld0JveCh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldFZpZXdCb3hSZWN0KHt4OnQueFswXSx3aWR0aDp0LnhbMV0tdC54WzBdLHk6dC55WzBdLGhlaWdodDp0LnlbMV0tdC55WzBdfSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXREYXRhKHQpe3RoaXMuc2VyaWVzTGluZVZpZXcuc2V0RGF0YSh0KSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFVzZURhcmtNb2RlKHQpe3RoaXMucmVuZGVyZXIuc2V0VXNlRGFya01vZGUodCksdGhpcy5zZXJpZXNMaW5lVmlldy5tYXJrQXNQYWludERpcnR5KCksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zY2hlZHVsZVJlcGFpbnQoKXt0aGlzLnNob3VsZFJlcGFpbnR8fCh0aGlzLnNob3VsZFJlcGFpbnQ9ITAsY1QucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5yZXBhaW50KCksdGhpcy5zaG91bGRSZXBhaW50PSExfSkpfXJlcGFpbnQoKXt0aGlzLnNlcmllc0xpbmVWaWV3LnJlbmRlcigpLHRoaXMucmVuZGVyZXIuZmx1c2goKSx0aGlzLmNhbGxiYWNrcy5vbkRyYXdFbmQoKX19O2Z1bmN0aW9uIE4wKG4pe2xldHtmbGF0dGVuZWRTZXJpZXM6dCxpZHNBbmRMZW5ndGhzOmV9PW4saT1uZXcgRmxvYXQ2NEFycmF5KHQpLHI9W107aWYoaS5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEVycm9yKCJgZmxhdHRlbmVkU2VyaWVzYCBtdXN0IGhhdmUgZXZlbiBudW1iZXIgb2YgZWxlbWVudHMiKTtsZXQgcz0wO2ZvcihsZXR7aWQ6byxsZW5ndGg6YX1vZiBlKXtsZXQgbD1bXTtmb3IobGV0IGM9MDtjPGE7YysrKWwucHVzaCh7eDppW3MrK10seTppW3MrK119KTtyLnB1c2goe2lkOm8scG9pbnRzOmx9KX1yZXR1cm4gcn12YXIgeG47KGZ1bmN0aW9uKG4pe25bbi5TRVJJRVNfREFUQV9VUERBVEVEPTBdPSJTRVJJRVNfREFUQV9VUERBVEVEIixuW24uU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQ9MV09IlNFUklFU19NRVRBREFUQV9DSEFOR0VEIixuW24uU0NBTEVfVVBEQVRFRD0yXT0iU0NBTEVfVVBEQVRFRCIsbltuLlZJRVdfQk9YX1VQREFURUQ9M109IlZJRVdfQk9YX1VQREFURUQiLG5bbi5JTklUPTRdPSJJTklUIixuW24uRE9NX1JFU0laRUQ9NV09IkRPTV9SRVNJWkVEIixuW24uREFSS19NT0RFX1VQREFURUQ9Nl09IkRBUktfTU9ERV9VUERBVEVEIixuW24uRElTUE9TRUQ9N109IkRJU1BPU0VEIn0pKHhufHwoeG49e30pKTt2YXIgTG87KGZ1bmN0aW9uKG4pe25bbi5PTl9SRURSQVdfRU5EPTBdPSJPTl9SRURSQVdfRU5EIixuW24uT05fQ09OVEVYVF9MT1NUPTFdPSJPTl9DT05URVhUX0xPU1QifSkoTG98fChMbz17fSkpO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbj0+e3VUKG4ucG9ydHNbMF0sbi5kYXRhKX0pO2Z1bmN0aW9uIHVUKG4sdCl7bGV0e2NhbnZhczplLGRldmljZVBpeGVsUmF0aW86aSxkaW06cixyZW5kZXJlclR5cGU6cyx1c2VEYXJrTW9kZTpvfT10LGE9e29uRHJhd0VuZDooKT0+e24ucG9zdE1lc3NhZ2Uoe3R5cGU6TG8uT05fUkVEUkFXX0VORH0pfSxvbkNvbnRleHRMb3N0OigpPT57bi5wb3N0TWVzc2FnZSh7dHlwZTpMby5PTl9DT05URVhUX0xPU1R9KX19LGw7c3dpdGNoKHMpe2Nhc2UgVG4uV0VCR0w6bD17dHlwZTpUbi5XRUJHTCxkb21EaW1lbnNpb246cixjYWxsYmFja3M6YSxjb250YWluZXI6ZSxkZXZpY2VQaXhlbFJhdGlvOmksdXNlRGFya01vZGU6b307YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YXJpYW50IGVycm9yOiBjYW5ub3QgaGF2ZSBPZmZzY3JlZW4gY2hhcnQgZm9yIHJlbmRlcmVyIHR5cGU6ICR7c31gKX1sZXQgYz1uZXcgVWwobCk7bi5vbm1lc3NhZ2U9ZnVuY3Rpb24odSl7bGV0IGg9dS5kYXRhO3N3aXRjaChoLnR5cGUpe2Nhc2UgeG4uU0VSSUVTX0RBVEFfVVBEQVRFRDp7bGV0IGY9TjAoaC5jb21wYWN0RGF0YVNlcmllcyk7Yy5zZXREYXRhKGYpO2JyZWFrfWNhc2UgeG4uU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQ6e2Muc2V0TWV0YWRhdGEoaC5tZXRhZGF0YSk7YnJlYWt9Y2FzZSB4bi5WSUVXX0JPWF9VUERBVEVEOntjLnNldFZpZXdCb3goaC5leHRlbnQpO2JyZWFrfWNhc2UgeG4uRE9NX1JFU0laRUQ6e2MucmVzaXplKGguZGltKTticmVha31jYXNlIHhuLkRBUktfTU9ERV9VUERBVEVEOntjLnNldFVzZURhcmtNb2RlKGgudXNlRGFya01vZGUpO2JyZWFrfWNhc2UgeG4uU0NBTEVfVVBEQVRFRDp7c3dpdGNoKGguYXhpcyl7Y2FzZSJ4IjpjLnNldFhTY2FsZVR5cGUoaC5zY2FsZVR5cGUpO2JyZWFrO2Nhc2UieSI6Yy5zZXRZU2NhbGVUeXBlKGguc2NhbGVUeXBlKTticmVhaztkZWZhdWx0OmxldCBmPWguYXhpczt0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVW5rbm93biBheGlzOiAke2Z9YCl9YnJlYWt9Y2FzZSB4bi5ESVNQT1NFRDp7Yy5kaXNwb3NlKCk7YnJlYWt9fX19fSkoKTsKLyoqCiAqIEBsaWNlbnNlCiAqIENvcHlyaWdodCAyMDEwLTIwMjIgVGhyZWUuanMgQXV0aG9ycwogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAqLwovLyMgc291cmNlTWFwcGluZ1VSTD1jaGFydF93b3JrZXIuanMubWFwCg==", + "headers": [ + [ + "content-type", + "text/javascript; charset=utf-8" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/data/environment": { + "data": "eyJ2ZXJzaW9uIjogIjIuMTEuMiIsICJkYXRhX2xvY2F0aW9uIjogInJ1bnMvIiwgIndpbmRvd190aXRsZSI6ICIiLCAiZXhwZXJpbWVudF9uYW1lIjogIiIsICJleHBlcmltZW50X2Rlc2NyaXB0aW9uIjogIiIsICJjcmVhdGlvbl90aW1lIjogMC4wLCAiZGVidWciOiB7ImRhdGFfcHJvdmlkZXIiOiAiR3JwY0RhdGFQcm92aWRlcihhZGRyPSdsb2NhbGhvc3Q6NDM0ODEnKSIsICJmbGFncyI6IHsibG9nZGlyIjogInJ1bnMvIiwgImxvZ2Rpcl9zcGVjIjogIiIsICJob3N0IjogbnVsbCwgImJpbmRfYWxsIjogZmFsc2UsICJwb3J0IjogbnVsbCwgInJldXNlX3BvcnQiOiBmYWxzZSwgImxvYWRfZmFzdCI6ICJhdXRvIiwgImV4dHJhX2RhdGFfc2VydmVyX2ZsYWdzIjogIiIsICJncnBjX2NyZWRzX3R5cGUiOiAibG9jYWwiLCAiZ3JwY19kYXRhX3Byb3ZpZGVyIjogIiIsICJwdXJnZV9vcnBoYW5lZF9kYXRhIjogdHJ1ZSwgImRiIjogIiIsICJkYl9pbXBvcnQiOiBmYWxzZSwgImluc3BlY3QiOiBmYWxzZSwgInZlcnNpb25fdGIiOiBmYWxzZSwgInRhZyI6ICIiLCAiZXZlbnRfZmlsZSI6ICIiLCAicGF0aF9wcmVmaXgiOiAiIiwgIndpbmRvd190aXRsZSI6ICIiLCAibWF4X3JlbG9hZF90aHJlYWRzIjogMSwgInJlbG9hZF9pbnRlcnZhbCI6IDUuMCwgInJlbG9hZF90YXNrIjogImF1dG8iLCAicmVsb2FkX211bHRpZmlsZSI6IG51bGwsICJyZWxvYWRfbXVsdGlmaWxlX2luYWN0aXZlX3NlY3MiOiA4NjQwMCwgImdlbmVyaWNfZGF0YSI6ICJhdXRvIiwgInNhbXBsZXNfcGVyX3BsdWdpbiI6IHt9LCAiZGV0ZWN0X2ZpbGVfcmVwbGFjZW1lbnQiOiBudWxsLCAiY3VzdG9tX3ByZWRpY3RfZm4iOiAiIiwgIndpdF9kYXRhX2RpciI6ICIiLCAiX190ZW5zb3Jib2FyZF9zdWJjb21tYW5kIjogInNlcnZlIn19fQ==", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/data/plugins_listing": { + "data": "eyJ0aW1lc2VyaWVzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJUaW1lIFNlcmllcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJOR19DT01QT05FTlQifX0sICJzY2FsYXJzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJzY2FsYXJzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1zY2FsYXItZGFzaGJvYXJkIn19LCAiY3VzdG9tX3NjYWxhcnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJDdXN0b20gU2NhbGFycyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQifX0sICJpbWFnZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJpbWFnZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWltYWdlLWRhc2hib2FyZCJ9fSwgImF1ZGlvIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiYXVkaW8iLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWF1ZGlvLWRhc2hib2FyZCJ9fSwgImRlYnVnZ2VyLXYyIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiRGVidWdnZXIgVjIiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiTkdfQ09NUE9ORU5UIn19LCAiZ3JhcGhzIjogeyJkaXNhYmxlX3JlbG9hZCI6IHRydWUsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJncmFwaHMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWdyYXBoLWRhc2hib2FyZCJ9fSwgImRpc3RyaWJ1dGlvbnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJkaXN0cmlidXRpb25zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIn19LCAiaGlzdG9ncmFtcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImhpc3RvZ3JhbXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQifX0sICJ0ZXh0IjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAidGV4dCIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtdGV4dC1kYXNoYm9hcmQifX0sICJwcl9jdXJ2ZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQUiBDdXJ2ZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLXByLWN1cnZlLWRhc2hib2FyZCJ9fSwgInByb2ZpbGVfcmVkaXJlY3QiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQcm9maWxlIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1wcm9maWxlLXJlZGlyZWN0LWRhc2hib2FyZCJ9fSwgImhwYXJhbXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJocGFyYW1zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1ocGFyYW1zLWRhc2hib2FyZCJ9fSwgIm1lc2giOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJtZXNoIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJtZXNoLWRhc2hib2FyZCJ9fSwgInByb2plY3RvciI6IHsiZGlzYWJsZV9yZWxvYWQiOiB0cnVlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAicHJvamVjdG9yIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vcHJvamVjdG9yL2luZGV4LmpzIn19LCAid2hhdGlmIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiV2hhdC1JZiBUb29sIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vd2hhdGlmL2luZGV4LmpzIn19fQ==", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/data/runs": { + "data": "WyJwZW5kdWx1bV9vbm54L3N1bW1hcmllcyJd", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/tags": { + "data": "eyJzY2FsYXJzIjogeyJydW5UYWdJbmZvIjogeyJwZW5kdWx1bV9vbm54L3N1bW1hcmllcyI6IFsiZXBpc29kZV9sZW5ndGhzL2l0ZXIiLCAiZXBpc29kZV9sZW5ndGhzL3N0ZXAiLCAiZXBpc29kZV9sZW5ndGhzL3RpbWUiLCAiaW5mby9lX2NsaXAiLCAiaW5mby9lcG9jaHMiLCAiaW5mby9rbCIsICJpbmZvL2xhc3RfbHIiLCAiaW5mby9scl9tdWwiLCAibG9zc2VzL2FfbG9zcyIsICJsb3NzZXMvYm91bmRzX2xvc3MiLCAibG9zc2VzL2NfbG9zcyIsICJsb3NzZXMvZW50cm9weSIsICJwZXJmb3JtYW5jZS9ybF91cGRhdGVfdGltZSIsICJwZXJmb3JtYW5jZS9zdGVwX2ZwcyIsICJwZXJmb3JtYW5jZS9zdGVwX2luZmVyZW5jZV9mcHMiLCAicGVyZm9ybWFuY2Uvc3RlcF9pbmZlcmVuY2VfcmxfdXBkYXRlX2ZwcyIsICJwZXJmb3JtYW5jZS9zdGVwX2luZmVyZW5jZV90aW1lIiwgInBlcmZvcm1hbmNlL3N0ZXBfdGltZSIsICJyZXdhcmRzL2l0ZXIiLCAicmV3YXJkcy9zdGVwIiwgInJld2FyZHMvdGltZSJdfSwgInRhZ0Rlc2NyaXB0aW9ucyI6IHt9fSwgImhpc3RvZ3JhbXMiOiB7InJ1blRhZ0luZm8iOiB7fSwgInRhZ0Rlc2NyaXB0aW9ucyI6IHt9fSwgImltYWdlcyI6IHsidGFnRGVzY3JpcHRpb25zIjoge30sICJ0YWdSdW5TYW1wbGVkSW5mbyI6IHt9fX0=", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22episode_lengths/iter%22%7D%5D": { + "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImVwaXNvZGVfbGVuZ3Rocy9pdGVyIiwgInJ1blRvU2VyaWVzIjogeyJwZW5kdWx1bV9vbm54L3N1bW1hcmllcyI6IFt7IndhbGxUaW1lIjogMTY3NjY1MDUxNC43NDExMjEsICJzdGVwIjogNywgInZhbHVlIjogMjAwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC44ODA1NSwgInN0ZXAiOiA4LCAidmFsdWUiOiAyMDAuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjAxMTY2MTgsICJzdGVwIjogOSwgInZhbHVlIjogMjAwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS4xMzY3NDQ1LCAic3RlcCI6IDEwLCAidmFsdWUiOiAyMDAuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjI2Nzg3OTUsICJzdGVwIjogMTEsICJ2YWx1ZSI6IDIwMC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuMzk3MTQwMywgInN0ZXAiOiAxMiwgInZhbHVlIjogMjAwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS41Mzg5Mjg3LCAic3RlcCI6IDEzLCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS42ODM4OTIzLCAic3RlcCI6IDE0LCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS44MjE1ODI2LCAic3RlcCI6IDE1LCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi4wMzE3MDgsICJzdGVwIjogMTYsICJ2YWx1ZSI6IDIwMC42Mzk5OTkzODk2NDg0NH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjIwODgwODQsICJzdGVwIjogMTcsICJ2YWx1ZSI6IDIwMC42Mzk5OTkzODk2NDg0NH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjM1MjY3MjMsICJzdGVwIjogMTgsICJ2YWx1ZSI6IDIwMC42Mzk5OTkzODk2NDg0NH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjQ4ODQxMzgsICJzdGVwIjogMTksICJ2YWx1ZSI6IDIwMC44NzAzOTE4NDU3MDMxMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjYyNjE2LCAic3RlcCI6IDIwLCAidmFsdWUiOiAyMDAuODcwMzkxODQ1NzAzMTJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi43NjE5ODYsICJzdGVwIjogMjEsICJ2YWx1ZSI6IDIwMC44NzAzOTE4NDU3MDMxMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2Ljg5NTYzNDIsICJzdGVwIjogMjIsICJ2YWx1ZSI6IDIwMC44NzAzOTE4NDU3MDMxMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjAyOTg0NCwgInN0ZXAiOiAyMywgInZhbHVlIjogMjAwLjg3MDM5MTg0NTcwMzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuMTYxNTcyLCAic3RlcCI6IDI0LCAidmFsdWUiOiAyMDAuODcwMzkxODQ1NzAzMTJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy4yODg3MDA4LCAic3RlcCI6IDI1LCAidmFsdWUiOiAyMDAuODcwMzkxODQ1NzAzMTJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy40MjUwODQ2LCAic3RlcCI6IDI2LCAidmFsdWUiOiAyMDAuOTUzMzM4NjIzMDQ2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy41NTU5MzQ3LCAic3RlcCI6IDI3LCAidmFsdWUiOiAyMDAuOTUzMzM4NjIzMDQ2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy42ODkzNjIzLCAic3RlcCI6IDI4LCAidmFsdWUiOiAyMDAuOTUzMzM4NjIzMDQ2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy44MjgzOTIsICJzdGVwIjogMjksICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3Ljk3NDMyMjMsICJzdGVwIjogMzAsICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjExMjY4MjgsICJzdGVwIjogMzEsICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjI0NTE1NDksICJzdGVwIjogMzIsICJ2YWx1ZSI6IDIwMC45ODMyMDAwNzMyNDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguMzkyMjk3MywgInN0ZXAiOiAzMywgInZhbHVlIjogMjAwLjk4MzIwMDA3MzI0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC41MjMxMjczLCAic3RlcCI6IDM0LCAidmFsdWUiOiAyMDAuOTgzMjAwMDczMjQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjY1MzA3MTYsICJzdGVwIjogMzUsICJ2YWx1ZSI6IDIwMC45ODMyMDAwNzMyNDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguNzg5OTQyLCAic3RlcCI6IDM2LCAidmFsdWUiOiAyMDAuOTgzMjAwMDczMjQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjkxOTU4ODgsICJzdGVwIjogMzcsICJ2YWx1ZSI6IDIwMC45ODMyMDAwNzMyNDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuMDY2MDU5NCwgInN0ZXAiOiAzOCwgInZhbHVlIjogMjAwLjk5Mzk0MjI2MDc0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS4xOTMwOTc0LCAic3RlcCI6IDM5LCAidmFsdWUiOiAyMDAuOTkzOTQyMjYwNzQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjMzMjg0MTYsICJzdGVwIjogNDAsICJ2YWx1ZSI6IDIwMC45OTM5NDIyNjA3NDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuNDU4ODY1NiwgInN0ZXAiOiA0MSwgInZhbHVlIjogMjAwLjk5Mzk0MjI2MDc0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS41OTI1MzEsICJzdGVwIjogNDIsICJ2YWx1ZSI6IDIwMC45OTM5NDIyNjA3NDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuNzE4MzY0LCAic3RlcCI6IDQzLCAidmFsdWUiOiAyMDAuOTkzOTQyMjYwNzQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5Ljg1NDcxNywgInN0ZXAiOiA0NCwgInZhbHVlIjogMjAwLjk5NzgwMjczNDM3NX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIwLjE1NTY5NDUsICJzdGVwIjogNDUsICJ2YWx1ZSI6IDIwMC45OTc4MDI3MzQzNzV9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMC4zODU0Nzg1LCAic3RlcCI6IDQ2LCAidmFsdWUiOiAyMDAuOTk3ODAyNzM0Mzc1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuNjYyMzQxLCAic3RlcCI6IDQ3LCAidmFsdWUiOiAyMDAuOTk3ODAyNzM0Mzc1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuOTM3NzQ3MiwgInN0ZXAiOiA0OCwgInZhbHVlIjogMjAwLjk5NzgwMjczNDM3NX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIxLjI4MDgzOTIsICJzdGVwIjogNDksICJ2YWx1ZSI6IDIwMC45OTc4MDI3MzQzNzV9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMS42NjkxMDM2LCAic3RlcCI6IDUwLCAidmFsdWUiOiAyMDAuOTk3ODAyNzM0Mzc1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjIuMTc5MzI4NCwgInN0ZXAiOiA1MSwgInZhbHVlIjogMjAwLjk5OTIyMTgwMTc1Nzh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMi41ODMyMTc5LCAic3RlcCI6IDUyLCAidmFsdWUiOiAyMDAuOTk5MjIxODAxNzU3OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIyLjkzMDgyNTUsICJzdGVwIjogNTMsICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjMuMzc1MzI3OCwgInN0ZXAiOiA1NCwgInZhbHVlIjogMjAwLjk5OTIyMTgwMTc1Nzh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMy44MTMzNDczLCAic3RlcCI6IDU1LCAidmFsdWUiOiAyMDAuOTk5MjIxODAxNzU3OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI0LjI1MDE0NzgsICJzdGVwIjogNTYsICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjQuNjg5NjU4NCwgInN0ZXAiOiA1NywgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuMTM1NzM1NSwgInN0ZXAiOiA1OCwgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuNTYwMzczNSwgInN0ZXAiOiA1OSwgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuOTc2MjQ3LCAic3RlcCI6IDYwLCAidmFsdWUiOiAyMDAuOTk5NzI1MzQxNzk2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNi41OTA0NjQ0LCAic3RlcCI6IDYxLCAidmFsdWUiOiAyMDAuOTk5NzI1MzQxNzk2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNy4wNDI5NCwgInN0ZXAiOiA2MiwgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuNDgzMDEwMywgInN0ZXAiOiA2MywgInZhbHVlIjogMjAwLjk5OTg5MzE4ODQ3NjU2fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuOTYxODY0NywgInN0ZXAiOiA2NCwgInZhbHVlIjogMjAwLjk5OTg5MzE4ODQ3NjU2fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjguMzA3NjMzNCwgInN0ZXAiOiA2NSwgInZhbHVlIjogMjAwLjk5OTg5MzE4ODQ3NjU2fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjguNTQ3ODEyLCAic3RlcCI6IDY2LCAidmFsdWUiOiAyMDAuOTk5ODkzMTg4NDc2NTZ9XX19XQ==", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22episode_lengths/step%22%7D%5D": { + "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImVwaXNvZGVfbGVuZ3Rocy9zdGVwIiwgInJ1blRvU2VyaWVzIjogeyJwZW5kdWx1bV9vbm54L3N1bW1hcmllcyI6IFt7IndhbGxUaW1lIjogMTY3NjY1MDUxNC43NDEwOTcsICJzdGVwIjogMTIyODgsICJ2YWx1ZSI6IDIwMC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTQuODgwNTEzNCwgInN0ZXAiOiAxNDMzNiwgInZhbHVlIjogMjAwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS4wMTE2MzgsICJzdGVwIjogMTYzODQsICJ2YWx1ZSI6IDIwMC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuMTM2NzIxLCAic3RlcCI6IDE4NDMyLCAidmFsdWUiOiAyMDAuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjI2Nzg1NTYsICJzdGVwIjogMjA0ODAsICJ2YWx1ZSI6IDIwMC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuMzk3MTE1MiwgInN0ZXAiOiAyMjUyOCwgInZhbHVlIjogMjAwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS41Mzg5MDMyLCAic3RlcCI6IDI0NTc2LCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS42ODM4NjU1LCAic3RlcCI6IDI2NjI0LCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS44MjE1NTUxLCAic3RlcCI6IDI4NjcyLCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi4wMzE2Njk5LCAic3RlcCI6IDMwNzIwLCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi4yMDg3ODQ2LCAic3RlcCI6IDMyNzY4LCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi4zNTIxMjE2LCAic3RlcCI6IDM0ODE2LCAidmFsdWUiOiAyMDAuNjM5OTk5Mzg5NjQ4NDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi40ODgzOSwgInN0ZXAiOiAzNjg2NCwgInZhbHVlIjogMjAwLjg3MDM5MTg0NTcwMzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuNjI2MTM1OCwgInN0ZXAiOiAzODkxMiwgInZhbHVlIjogMjAwLjg3MDM5MTg0NTcwMzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuNzYxOTYxNywgInN0ZXAiOiA0MDk2MCwgInZhbHVlIjogMjAwLjg3MDM5MTg0NTcwMzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuODk1NjA5OSwgInN0ZXAiOiA0MzAwOCwgInZhbHVlIjogMjAwLjg3MDM5MTg0NTcwMzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuMDI5ODE5MywgInN0ZXAiOiA0NTA1NiwgInZhbHVlIjogMjAwLjg3MDM5MTg0NTcwMzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuMTYxNTQ3LCAic3RlcCI6IDQ3MTA0LCAidmFsdWUiOiAyMDAuODcwMzkxODQ1NzAzMTJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy4yODg2NzYsICJzdGVwIjogNDkxNTIsICJ2YWx1ZSI6IDIwMC44NzAzOTE4NDU3MDMxMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjQyNTA2MDMsICJzdGVwIjogNTEyMDAsICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjU1NTkxMDYsICJzdGVwIjogNTMyNDgsICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjY4OTMzODIsICJzdGVwIjogNTUyOTYsICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjgyODM2ODQsICJzdGVwIjogNTczNDQsICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3Ljk3NDI5ODcsICJzdGVwIjogNTkzOTIsICJ2YWx1ZSI6IDIwMC45NTMzMzg2MjMwNDY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjExMjY1OSwgInN0ZXAiOiA2MTQ0MCwgInZhbHVlIjogMjAwLjk1MzMzODYyMzA0Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguMjQ1MTI5OCwgInN0ZXAiOiA2MzQ4OCwgInZhbHVlIjogMjAwLjk4MzIwMDA3MzI0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC4zOTIyNzM0LCAic3RlcCI6IDY1NTM2LCAidmFsdWUiOiAyMDAuOTgzMjAwMDczMjQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjUyMzEwMzIsICJzdGVwIjogNjc1ODQsICJ2YWx1ZSI6IDIwMC45ODMyMDAwNzMyNDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguNjUzMDQ3OCwgInN0ZXAiOiA2OTYzMiwgInZhbHVlIjogMjAwLjk4MzIwMDA3MzI0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC43ODk5MTgyLCAic3RlcCI6IDcxNjgwLCAidmFsdWUiOiAyMDAuOTgzMjAwMDczMjQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjkxOTU2NTIsICJzdGVwIjogNzM3MjgsICJ2YWx1ZSI6IDIwMC45ODMyMDAwNzMyNDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuMDY2MDM1LCAic3RlcCI6IDc1Nzc2LCAidmFsdWUiOiAyMDAuOTkzOTQyMjYwNzQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjE5Mjk5MDMsICJzdGVwIjogNzc4MjQsICJ2YWx1ZSI6IDIwMC45OTM5NDIyNjA3NDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuMzMyODE2NiwgInN0ZXAiOiA3OTg3MiwgInZhbHVlIjogMjAwLjk5Mzk0MjI2MDc0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS40NTg4NCwgInN0ZXAiOiA4MTkyMCwgInZhbHVlIjogMjAwLjk5Mzk0MjI2MDc0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS41OTI1MDY0LCAic3RlcCI6IDgzOTY4LCAidmFsdWUiOiAyMDAuOTkzOTQyMjYwNzQyMn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjcxODMzNCwgInN0ZXAiOiA4NjAxNiwgInZhbHVlIjogMjAwLjk5Mzk0MjI2MDc0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS44NTQ2NzM0LCAic3RlcCI6IDg4MDY0LCAidmFsdWUiOiAyMDAuOTk3ODAyNzM0Mzc1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuMTU1NjcwNiwgInN0ZXAiOiA5MDExMiwgInZhbHVlIjogMjAwLjk5NzgwMjczNDM3NX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIwLjM4NTQxNjcsICJzdGVwIjogOTIxNjAsICJ2YWx1ZSI6IDIwMC45OTc4MDI3MzQzNzV9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMC42NjIyOTYzLCAic3RlcCI6IDk0MjA4LCAidmFsdWUiOiAyMDAuOTk3ODAyNzM0Mzc1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuOTM3NzA4MSwgInN0ZXAiOiA5NjI1NiwgInZhbHVlIjogMjAwLjk5NzgwMjczNDM3NX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIxLjI4MDc5OTIsICJzdGVwIjogOTgzMDQsICJ2YWx1ZSI6IDIwMC45OTc4MDI3MzQzNzV9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMS42NjkwNTUyLCAic3RlcCI6IDEwMDM1MiwgInZhbHVlIjogMjAwLjk5NzgwMjczNDM3NX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIyLjE3OTI4OTYsICJzdGVwIjogMTAyNDAwLCAidmFsdWUiOiAyMDAuOTk5MjIxODAxNzU3OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIyLjU4MzE4MywgInN0ZXAiOiAxMDQ0NDgsICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjIuOTMwNzg2OCwgInN0ZXAiOiAxMDY0OTYsICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjMuMzc1MjkwNCwgInN0ZXAiOiAxMDg1NDQsICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjMuODEzMzA2MywgInN0ZXAiOiAxMTA1OTIsICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjQuMjUwMTA4NywgInN0ZXAiOiAxMTI2NDAsICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjQuNjg5NjIyNiwgInN0ZXAiOiAxMTQ2ODgsICJ2YWx1ZSI6IDIwMC45OTk3MjUzNDE3OTY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI1LjEzNTY5ODMsICJzdGVwIjogMTE2NzM2LCAidmFsdWUiOiAyMDAuOTk5NzI1MzQxNzk2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNS41NjAzMzMsICJzdGVwIjogMTE4Nzg0LCAidmFsdWUiOiAyMDAuOTk5NzI1MzQxNzk2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNS45NzYyMDg0LCAic3RlcCI6IDEyMDgzMiwgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjYuNTkwMzk2MiwgInN0ZXAiOiAxMjI4ODAsICJ2YWx1ZSI6IDIwMC45OTk3MjUzNDE3OTY4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI3LjA0Mjg5ODIsICJzdGVwIjogMTI0OTI4LCAidmFsdWUiOiAyMDAuOTk5NzI1MzQxNzk2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNy40ODI5NzEyLCAic3RlcCI6IDEyNjk3NiwgInZhbHVlIjogMjAwLjk5OTg5MzE4ODQ3NjU2fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuOTYxODIwOCwgInN0ZXAiOiAxMjkwMjQsICJ2YWx1ZSI6IDIwMC45OTk4OTMxODg0NzY1Nn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI4LjMwNzYwMjQsICJzdGVwIjogMTMxMDcyLCAidmFsdWUiOiAyMDAuOTk5ODkzMTg4NDc2NTZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyOC41NDc3NzM4LCAic3RlcCI6IDEzMzEyMCwgInZhbHVlIjogMjAwLjk5OTg5MzE4ODQ3NjU2fV19fV0=", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22episode_lengths/time%22%7D%5D": { + "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImVwaXNvZGVfbGVuZ3Rocy90aW1lIiwgInJ1blRvU2VyaWVzIjogeyJwZW5kdWx1bV9vbm54L3N1bW1hcmllcyI6IFt7IndhbGxUaW1lIjogMTY3NjY1MDUxNS41Mzg5NTMzLCAic3RlcCI6IDEsICJ2YWx1ZSI6IDIwMC42Mzk5OTkzODk2NDg0NH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjYyNjE4MjgsICJzdGVwIjogMiwgInZhbHVlIjogMjAwLjg3MDM5MTg0NTcwMzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuNTU1OTU3OCwgInN0ZXAiOiAzLCAidmFsdWUiOiAyMDAuOTUzMzM4NjIzMDQ2ODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC42NTMwOTQsICJzdGVwIjogNCwgInZhbHVlIjogMjAwLjk4MzIwMDA3MzI0MjJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS43MTgzODgzLCAic3RlcCI6IDUsICJ2YWx1ZSI6IDIwMC45OTM5NDIyNjA3NDIyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuNjYyMzg0MywgInN0ZXAiOiA2LCAidmFsdWUiOiAyMDAuOTk3ODAyNzM0Mzc1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjEuNjY5MTQzLCAic3RlcCI6IDcsICJ2YWx1ZSI6IDIwMC45OTc4MDI3MzQzNzV9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMi41ODMyNTQsICJzdGVwIjogOCwgInZhbHVlIjogMjAwLjk5OTIyMTgwMTc1Nzh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMy44MTMzODU1LCAic3RlcCI6IDksICJ2YWx1ZSI6IDIwMC45OTkyMjE4MDE3NTc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjQuNjg5Njk2NiwgInN0ZXAiOiAxMCwgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuOTc2Mjg1NywgInN0ZXAiOiAxMSwgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuMDQzMTQ0MiwgInN0ZXAiOiAxMiwgInZhbHVlIjogMjAwLjk5OTcyNTM0MTc5Njg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuOTYxOTAyMSwgInN0ZXAiOiAxMywgInZhbHVlIjogMjAwLjk5OTg5MzE4ODQ3NjU2fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjguODUxODE2LCAic3RlcCI6IDE0LCAidmFsdWUiOiAyMDAuOTk5ODkzMTg4NDc2NTZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMC4wNTY5ODk3LCAic3RlcCI6IDE1LCAidmFsdWUiOiAyMDAuOTk5OTU0MjIzNjMyOH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMwLjkxNDkxNTgsICJzdGVwIjogMTYsICJ2YWx1ZSI6IDIwMC45OTk5NTQyMjM2MzI4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzIuMjkxMjc3MiwgInN0ZXAiOiAxNywgInZhbHVlIjogMjAwLjk5OTk2OTQ4MjQyMTg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzMuMTE1NjkwNSwgInN0ZXAiOiAxOCwgInZhbHVlIjogMjAxLjB9XX19XQ==", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22info/e_clip%22%7D%5D": { + "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImluZm8vZV9jbGlwIiwgInJ1blRvU2VyaWVzIjogeyJwZW5kdWx1bV9vbm54L3N1bW1hcmllcyI6IFt7IndhbGxUaW1lIjogMTY3NjY1MDUxMy45NTczMTI4LCAic3RlcCI6IDAsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC4wOTQyMjA0LCAic3RlcCI6IDIwNDgsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC4yMjI1MTM3LCAic3RlcCI6IDQwOTYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC4zNTMyMDk1LCAic3RlcCI6IDYxNDQsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC40ODIwNjksICJzdGVwIjogODE5MiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE0LjYwNzI1NCwgInN0ZXAiOiAxMDI0MCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE0LjczODkwNiwgInN0ZXAiOiAxMjI4OCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE0Ljg3ODI2NTYsICJzdGVwIjogMTQzMzYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS4wMDk1MjI0LCAic3RlcCI6IDE2Mzg0LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuMTM0NzE1OCwgInN0ZXAiOiAxODQzMiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjI2NTcyNCwgInN0ZXAiOiAyMDQ4MCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjM5NDk4NSwgInN0ZXAiOiAyMjUyOCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjUzNjc5MjUsICJzdGVwIjogMjQ1NzYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS42ODE2NDczLCAic3RlcCI6IDI2NjI0LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuODE5MzU0OCwgInN0ZXAiOiAyODY3MiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjAyOTQ3MTYsICJzdGVwIjogMzA3MjAsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi4yMDY2NTQzLCAic3RlcCI6IDMyNzY4LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuMzQ5NzgyNywgInN0ZXAiOiAzNDgxNiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjQ4NjI1NjEsICJzdGVwIjogMzY4NjQsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi42MjQxMDE2LCAic3RlcCI6IDM4OTEyLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuNzU5OTAzLCAic3RlcCI6IDQwOTYwLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuODkzNTI1NiwgInN0ZXAiOiA0MzAwOCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjAyNzczMzYsICJzdGVwIjogNDUwNTYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy4xNTk0MTQ4LCAic3RlcCI6IDQ3MTA0LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuMjg2NTQ4MSwgInN0ZXAiOiA0OTE1MiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjQyMzAyMywgInN0ZXAiOiA1MTIwMCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjU1MzkyMzYsICJzdGVwIjogNTMyNDgsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy42ODczNywgInN0ZXAiOiA1NTI5NiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjgyNjI1OTQsICJzdGVwIjogNTczNDQsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy45NzIyNzU1LCAic3RlcCI6IDU5MzkyLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguMTEwNTQzNywgInN0ZXAiOiA2MTQ0MCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjI0MzAwNzQsICJzdGVwIjogNjM0ODgsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC4zOTAxMTc0LCAic3RlcCI6IDY1NTM2LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguNTIwOTU3LCAic3RlcCI6IDY3NTg0LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguNjUwODk2MywgInN0ZXAiOiA2OTYzMiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4Ljc4Nzc4NTMsICJzdGVwIjogNzE2ODAsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC45MTc1NTEzLCAic3RlcCI6IDczNzI4LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuMDYzOTIzMSwgInN0ZXAiOiA3NTc3NiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjE4OTMyMTMsICJzdGVwIjogNzc4MjQsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS4zMzA3MTAyLCAic3RlcCI6IDc5ODcyLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuNDU2NzYwMiwgInN0ZXAiOiA4MTkyMCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjU5MDQyODYsICJzdGVwIjogODM5NjgsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS43MTYyMzYsICJzdGVwIjogODYwMTYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS44NTA2OTY2LCAic3RlcCI6IDg4MDY0LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuMTUwODM3NCwgInN0ZXAiOiA5MDExMiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIwLjM4MzExMjQsICJzdGVwIjogOTIxNjAsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMC42NTkxMzM3LCAic3RlcCI6IDk0MjA4LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuOTM1MzY5LCAic3RlcCI6IDk2MjU2LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjEuMjc5ODM3MSwgInN0ZXAiOiA5ODMwNCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIxLjY2NjkyMTEsICJzdGVwIjogMTAwMzUyLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjIuMTczMjQwNywgInN0ZXAiOiAxMDI0MDAsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMi41ODA0MDc0LCAic3RlcCI6IDEwNDQ0OCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIyLjkyODY1NDcsICJzdGVwIjogMTA2NDk2LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjMuMzczMjU3OSwgInN0ZXAiOiAxMDg1NDQsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMy44MDc4NDI1LCAic3RlcCI6IDExMDU5MiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI0LjI0ODAxOSwgInN0ZXAiOiAxMTI2NDAsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNC42ODU1ODQzLCAic3RlcCI6IDExNDY4OCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI1LjEzMzQyNTIsICJzdGVwIjogMTE2NzM2LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuNTU4MDgwNywgInN0ZXAiOiAxMTg3ODQsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNS45NzQwMTM4LCAic3RlcCI6IDEyMDgzMiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI2LjU4Nzk5NjIsICJzdGVwIjogMTIyODgwLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuMDQwNDgzNSwgInN0ZXAiOiAxMjQ5MjgsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNy40NzgwNzc3LCAic3RlcCI6IDEyNjk3NiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI3Ljk1MzkyNzMsICJzdGVwIjogMTI5MDI0LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjguMzA1ODgxNywgInN0ZXAiOiAxMzEwNzIsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyOC41NDU2MzM4LCAic3RlcCI6IDEzMzEyMCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI4Ljg0NDI0ODMsICJzdGVwIjogMTM1MTY4LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjkuMjI5MjkyNCwgInN0ZXAiOiAxMzcyMTYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyOS41MjI5NDU2LCAic3RlcCI6IDEzOTI2NCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI5LjgwNjkxODEsICJzdGVwIjogMTQxMzEyLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzAuMDU0NTUzLCAic3RlcCI6IDE0MzM2MCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMwLjMyNDMwMjIsICJzdGVwIjogMTQ1NDA4LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzAuNjEzMzE5OSwgInN0ZXAiOiAxNDc0NTYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMC45MTE3NDQsICJzdGVwIjogMTQ5NTA0LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzEuMjY0MDcwNywgInN0ZXAiOiAxNTE1NTIsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMS41NTIzNjk4LCAic3RlcCI6IDE1MzYwMCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMxLjgwMDU1NDgsICJzdGVwIjogMTU1NjQ4LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzIuMDgwMzQ4NSwgInN0ZXAiOiAxNTc2OTYsICJ2YWx1ZSI6IDAuMjAwMDAwMDAyOTgwMjMyMjR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMi4yODg4NTc3LCAic3RlcCI6IDE1OTc0NCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMyLjUwNzY3LCAic3RlcCI6IDE2MTc5MiwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMyLjcxNTg0MjcsICJzdGVwIjogMTYzODQwLCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzIuOTEwMTEyLCAic3RlcCI6IDE2NTg4OCwgInZhbHVlIjogMC4yMDAwMDAwMDI5ODAyMzIyNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMzLjExMzQ1ODksICJzdGVwIjogMTY3OTM2LCAidmFsdWUiOiAwLjIwMDAwMDAwMjk4MDIzMjI0fV19fV0=", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22info/epochs%22%7D%5D": { + "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImluZm8vZXBvY2hzIiwgInJ1blRvU2VyaWVzIjogeyJwZW5kdWx1bV9vbm54L3N1bW1hcmllcyI6IFt7IndhbGxUaW1lIjogMTY3NjY1MDUxMy45NTc1MDcsICJzdGVwIjogMCwgInZhbHVlIjogMS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTQuMDk1MTY0LCAic3RlcCI6IDIwNDgsICJ2YWx1ZSI6IDIuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE0LjIyMzM0MDUsICJzdGVwIjogNDA5NiwgInZhbHVlIjogMy4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTQuMzUzOTgyNywgInN0ZXAiOiA2MTQ0LCAidmFsdWUiOiA0LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC40ODI3MzcsICJzdGVwIjogODE5MiwgInZhbHVlIjogNS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTQuNjA4MTAyLCAic3RlcCI6IDEwMjQwLCAidmFsdWUiOiA2LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC43Mzk1MDk2LCAic3RlcCI6IDEyMjg4LCAidmFsdWUiOiA3LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC44NzkxNTE2LCAic3RlcCI6IDE0MzM2LCAidmFsdWUiOiA4LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS4wMTA0NzYsICJzdGVwIjogMTYzODQsICJ2YWx1ZSI6IDkuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjEzNTY1NDQsICJzdGVwIjogMTg0MzIsICJ2YWx1ZSI6IDEwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS4yNjY2ODE3LCAic3RlcCI6IDIwNDgwLCAidmFsdWUiOiAxMS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuMzk1NjYzNSwgInN0ZXAiOiAyMjUyOCwgInZhbHVlIjogMTIuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjUzNzY3NzMsICJzdGVwIjogMjQ1NzYsICJ2YWx1ZSI6IDEzLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS42ODI0MDk4LCAic3RlcCI6IDI2NjI0LCAidmFsdWUiOiAxNC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuODIwMzE2MywgInN0ZXAiOiAyODY3MiwgInZhbHVlIjogMTUuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjAzMDM0ODMsICJzdGVwIjogMzA3MjAsICJ2YWx1ZSI6IDE2LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi4yMDc2MDc1LCAic3RlcCI6IDMyNzY4LCAidmFsdWUiOiAxNy4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuMzUwMDUwNCwgInN0ZXAiOiAzNDgxNiwgInZhbHVlIjogMTguMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjQ4NzIxOSwgInN0ZXAiOiAzNjg2NCwgInZhbHVlIjogMTkuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjYyNDk3OCwgInN0ZXAiOiAzODkxMiwgInZhbHVlIjogMjAuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2Ljc2MDg0MTgsICJzdGVwIjogNDA5NjAsICJ2YWx1ZSI6IDIxLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNi44OTQ0OTM2LCAic3RlcCI6IDQzMDA4LCAidmFsdWUiOiAyMi4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuMDI4NTM2MywgInN0ZXAiOiA0NTA1NiwgInZhbHVlIjogMjMuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjE2MDQxMSwgInN0ZXAiOiA0NzEwNCwgInZhbHVlIjogMjQuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjI4NzQ5MTgsICJzdGVwIjogNDkxNTIsICJ2YWx1ZSI6IDI1LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy40MjM3OSwgInN0ZXAiOiA1MTIwMCwgInZhbHVlIjogMjYuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjU1NDQ5NTgsICJzdGVwIjogNTMyNDgsICJ2YWx1ZSI6IDI3LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy42ODgyMjYyLCAic3RlcCI6IDU1Mjk2LCAidmFsdWUiOiAyOC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuODI3MDIxOCwgInN0ZXAiOiA1NzM0NCwgInZhbHVlIjogMjkuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3Ljk3Mjg2ODIsICJzdGVwIjogNTkzOTIsICJ2YWx1ZSI6IDMwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC4xMTE1MDg4LCAic3RlcCI6IDYxNDQwLCAidmFsdWUiOiAzMS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguMjQzODMxOSwgInN0ZXAiOiA2MzQ4OCwgInZhbHVlIjogMzIuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjM5MTExMiwgInN0ZXAiOiA2NTUzNiwgInZhbHVlIjogMzMuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjUyMTc5ODEsICJzdGVwIjogNjc1ODQsICJ2YWx1ZSI6IDM0LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC42NTE4NjE0LCAic3RlcCI6IDY5NjMyLCAidmFsdWUiOiAzNS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguNzg4NzEwNiwgInN0ZXAiOiA3MTY4MCwgInZhbHVlIjogMzYuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjkxODMwNiwgInN0ZXAiOiA3MzcyOCwgInZhbHVlIjogMzcuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjA2NDc2OSwgInN0ZXAiOiA3NTc3NiwgInZhbHVlIjogMzguMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjE5MDA4MzUsICJzdGVwIjogNzc4MjQsICJ2YWx1ZSI6IDM5LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS4zMzE2NDQ1LCAic3RlcCI6IDc5ODcyLCAidmFsdWUiOiA0MC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuNDU3NDI0MiwgInN0ZXAiOiA4MTkyMCwgInZhbHVlIjogNDEuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjU5MTEyNTUsICJzdGVwIjogODM5NjgsICJ2YWx1ZSI6IDQyLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS43MTcxMTEsICJzdGVwIjogODYwMTYsICJ2YWx1ZSI6IDQzLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS44NTEzMjM0LCAic3RlcCI6IDg4MDY0LCAidmFsdWUiOiA0NC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuMTU0MjE1LCAic3RlcCI6IDkwMTEyLCAidmFsdWUiOiA0NS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuMzg0MDU4NSwgInN0ZXAiOiA5MjE2MCwgInZhbHVlIjogNDYuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIwLjY2MDkxODIsICJzdGVwIjogOTQyMDgsICJ2YWx1ZSI6IDQ3LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMC45MzYzNjcsICJzdGVwIjogOTYyNTYsICJ2YWx1ZSI6IDQ4LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMS4yODAxMzUyLCAic3RlcCI6IDk4MzA0LCAidmFsdWUiOiA0OS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjEuNjY3MTg5NiwgInN0ZXAiOiAxMDAzNTIsICJ2YWx1ZSI6IDUwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMi4xNzM0OTUsICJzdGVwIjogMTAyNDAwLCAidmFsdWUiOiA1MS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjIuNTgwNjU4NywgInN0ZXAiOiAxMDQ0NDgsICJ2YWx1ZSI6IDUyLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMi45Mjk1NzQ1LCAic3RlcCI6IDEwNjQ5NiwgInZhbHVlIjogNTMuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIzLjM3NDA4MzgsICJzdGVwIjogMTA4NTQ0LCAidmFsdWUiOiA1NC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjMuODExNzA2OCwgInN0ZXAiOiAxMTA1OTIsICJ2YWx1ZSI6IDU1LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNC4yNDg4NTQyLCAic3RlcCI6IDExMjY0MCwgInZhbHVlIjogNTYuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI0LjY4NTg4ODgsICJzdGVwIjogMTE0Njg4LCAidmFsdWUiOiA1Ny4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuMTM0MzI2MiwgInN0ZXAiOiAxMTY3MzYsICJ2YWx1ZSI6IDU4LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNS41NTg5OTEsICJzdGVwIjogMTE4Nzg0LCAidmFsdWUiOiA1OS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuOTc0Mjg2MywgInN0ZXAiOiAxMjA4MzIsICJ2YWx1ZSI6IDYwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNi41ODg5NzA3LCAic3RlcCI6IDEyMjg4MCwgInZhbHVlIjogNjEuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI3LjA0MTM3MTMsICJzdGVwIjogMTI0OTI4LCAidmFsdWUiOiA2Mi4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuNDc5ODQyMiwgInN0ZXAiOiAxMjY5NzYsICJ2YWx1ZSI6IDYzLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNy45NTgzOTY0LCAic3RlcCI6IDEyOTAyNCwgInZhbHVlIjogNjQuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI4LjMwNjU1NzcsICJzdGVwIjogMTMxMDcyLCAidmFsdWUiOiA2NS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjguNTQ2NDcxNCwgInN0ZXAiOiAxMzMxMjAsICJ2YWx1ZSI6IDY2LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyOC44NDUxOTY1LCAic3RlcCI6IDEzNTE2OCwgInZhbHVlIjogNjcuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI5LjIyOTg4OTksICJzdGVwIjogMTM3MjE2LCAidmFsdWUiOiA2OC4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjkuNTIzNjM4MiwgInN0ZXAiOiAxMzkyNjQsICJ2YWx1ZSI6IDY5LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyOS44MDc4OTQ3LCAic3RlcCI6IDE0MTMxMiwgInZhbHVlIjogNzAuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMwLjA1NTQ2MjQsICJzdGVwIjogMTQzMzYwLCAidmFsdWUiOiA3MS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzAuMzI0NTcsICJzdGVwIjogMTQ1NDA4LCAidmFsdWUiOiA3Mi4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzAuNjE0MTQwMywgInN0ZXAiOiAxNDc0NTYsICJ2YWx1ZSI6IDczLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMC45MTI2ODY2LCAic3RlcCI6IDE0OTUwNCwgInZhbHVlIjogNzQuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMxLjI2NDM0NCwgInN0ZXAiOiAxNTE1NTIsICJ2YWx1ZSI6IDc1LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMS41NTMzMDgsICJzdGVwIjogMTUzNjAwLCAidmFsdWUiOiA3Ni4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzEuODA1NzUwMSwgInN0ZXAiOiAxNTU2NDgsICJ2YWx1ZSI6IDc3LjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMi4wODExOTI3LCAic3RlcCI6IDE1NzY5NiwgInZhbHVlIjogNzguMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMyLjI4OTg2NTMsICJzdGVwIjogMTU5NzQ0LCAidmFsdWUiOiA3OS4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzIuNTExMjQ3NCwgInN0ZXAiOiAxNjE3OTIsICJ2YWx1ZSI6IDgwLjB9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMi43MTY4NDQ2LCAic3RlcCI6IDE2Mzg0MCwgInZhbHVlIjogODEuMH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMyLjkxMTIxMjcsICJzdGVwIjogMTY1ODg4LCAidmFsdWUiOiA4Mi4wfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzMuMTE0MzE1MywgInN0ZXAiOiAxNjc5MzYsICJ2YWx1ZSI6IDgzLjB9XX19XQ==", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/experiment/defaultExperimentId/data/plugin/timeseries/timeSeries?requests=%5B%7B%22plugin%22:%22scalars%22,%22tag%22:%22info/kl%22%7D%5D": { + "data": "W3sicGx1Z2luIjogInNjYWxhcnMiLCAidGFnIjogImluZm8va2wiLCAicnVuVG9TZXJpZXMiOiB7InBlbmR1bHVtX29ubngvc3VtbWFyaWVzIjogW3sid2FsbFRpbWUiOiAxNjc2NjUwNTEzLjk1NzQyNjgsICJzdGVwIjogMCwgInZhbHVlIjogMC4wMDAxNjE1NTkyNDgyMjY2OTQ3Nn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE0LjA5NTA4MzcsICJzdGVwIjogMjA0OCwgInZhbHVlIjogMC4wMDA3MjI2NDU5NTY1NTcyNDQxfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTQuMjIzMjY2OCwgInN0ZXAiOiA0MDk2LCAidmFsdWUiOiAwLjAwMjczMjc5MDMwODA3MzE2M30sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE0LjM1MzkwOSwgInN0ZXAiOiA2MTQ0LCAidmFsdWUiOiAwLjAwMTUwNDg1Njk3NjY4MDQ1NzZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC40ODI2NjMsICJzdGVwIjogODE5MiwgInZhbHVlIjogMC4wMDA5MzU5MTMwMDUzNzgwOTczfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTQuNjA4MDI1LCAic3RlcCI6IDEwMjQwLCAidmFsdWUiOiAwLjAwMDk0OTMzODcxODc4MzExMDR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC43Mzk0MTg1LCAic3RlcCI6IDEyMjg4LCAidmFsdWUiOiAwLjAwMTMwOTIyNTMzNTcxNzIwMTJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNC44NzkwNjA3LCAic3RlcCI6IDE0MzM2LCAidmFsdWUiOiAwLjAwMjMwNzA0OTY5NzI2NTAyOX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjAxMDM5MTIsICJzdGVwIjogMTYzODQsICJ2YWx1ZSI6IDAuMDAxNDY1Nzg5NjI0NDg5ODQzOH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjEzNTU4NDQsICJzdGVwIjogMTg0MzIsICJ2YWx1ZSI6IDAuMDAyOTEyMTUzMjU3MDU3MDcwN30sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE1LjI2NjYwOTcsICJzdGVwIjogMjA0ODAsICJ2YWx1ZSI6IDAuMDA1MDY3OTExOTMwMzgyMjUyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuMzk1NTkxNywgInN0ZXAiOiAyMjUyOCwgInZhbHVlIjogMC4wMDU2NDg1NjQwODE2MzkwNTE0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuNTM3NTkyMiwgInN0ZXAiOiAyNDU3NiwgInZhbHVlIjogMC4wMDI0OTQyMjgzMDUyOTUxMDk3fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTUuNjgyMzIzMiwgInN0ZXAiOiAyNjYyNCwgInZhbHVlIjogMC4wMDY2NTAxNjYxMjAzODAxNjN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNS44MjAyMzI0LCAic3RlcCI6IDI4NjcyLCAidmFsdWUiOiAwLjAwNzQzMTA4NDc1NTgwODExNX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjAzMDI1MjcsICJzdGVwIjogMzA3MjAsICJ2YWx1ZSI6IDAuMDIyNDk3NTcwMTQyMTQ5OTI1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuMjA3NTI5LCAic3RlcCI6IDMyNzY4LCAidmFsdWUiOiAwLjAwNDU0NDA4MDIzNTA2NDAzfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuMzQ5OTg5MiwgInN0ZXAiOiAzNDgxNiwgInZhbHVlIjogMC4wMTg2OTY4MTEwNTAxNzY2Mn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjQ4NzE0NDUsICJzdGVwIjogMzY4NjQsICJ2YWx1ZSI6IDAuMDA0Njk1NzQ5Mzc1OTY5MTcxNX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE2LjYyNDkwNDYsICJzdGVwIjogMzg5MTIsICJ2YWx1ZSI6IDAuMDEwMDExMDA3MDc3OTkxOTYyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuNzYwNzY4NCwgInN0ZXAiOiA0MDk2MCwgInZhbHVlIjogMC4wMDI5MTEyNDYxNDg4NjkzOTUzfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTYuODk0NDA4NSwgInN0ZXAiOiA0MzAwOCwgInZhbHVlIjogMC4wMjkxNjg2NzQ3MjIzMTM4OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjAyODQ1ODgsICJzdGVwIjogNDUwNTYsICJ2YWx1ZSI6IDAuMDA1MDM1NTE0OTQzMzAxNjc4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuMTYwMzI3NCwgInN0ZXAiOiA0NzEwNCwgInZhbHVlIjogMC4wMjIzNTMwMTU4NDAwNTM1Nn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjI4NzQwNjQsICJzdGVwIjogNDkxNTIsICJ2YWx1ZSI6IDAuMDA5ODc4Njg2NjI5MjM1NzQ0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuNDIzNzE1NCwgInN0ZXAiOiA1MTIwMCwgInZhbHVlIjogMC4wMDc4Mjc0Mzg0MTQwOTY4MzJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxNy41NTQ0MTQ3LCAic3RlcCI6IDUzMjQ4LCAidmFsdWUiOiAwLjAwOTcxNjIyODU4MTk2NDk3fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuNjg4MTU1LCAic3RlcCI6IDU1Mjk2LCAidmFsdWUiOiAwLjAwNzI2MTU0MDc0MDcyODM3OH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE3LjgyNjk0OTQsICJzdGVwIjogNTczNDQsICJ2YWx1ZSI6IDAuMDEwMTM1MzIzNzQwNTQxOTM1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTcuOTcyNzg3LCAic3RlcCI6IDU5MzkyLCAidmFsdWUiOiAwLjAwMjg1NDY0OTQ0MzE3OTM2OX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4LjExMTQxNjgsICJzdGVwIjogNjE0NDAsICJ2YWx1ZSI6IDAuMDE5ODE3MzU2MDIwMjEyMTczfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguMjQzNzUyNSwgInN0ZXAiOiA2MzQ4OCwgInZhbHVlIjogMC4wMDQwMDU2NDAyNzk1MDE2NzY2fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguMzkxMDM4MiwgInN0ZXAiOiA2NTUzNiwgInZhbHVlIjogMC4wMDY3NzcyMzQzNzU0NzY4Mzd9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC41MjE3MjQsICJzdGVwIjogNjc1ODQsICJ2YWx1ZSI6IDAuMDAzMzA4NDE0MDE1OTE4OTd9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOC42NTE3ODMsICJzdGVwIjogNjk2MzIsICJ2YWx1ZSI6IDAuMDAyMjQ3NTcwNzgxMDM3MjExNH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE4Ljc4ODYzNCwgInN0ZXAiOiA3MTY4MCwgInZhbHVlIjogMC4wMDI4MTMyNzQwNDA4MTgyMTQ0fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTguOTE4MjMyLCAic3RlcCI6IDczNzI4LCAidmFsdWUiOiAwLjAwMzE0ODIzNTM4MDY0OTU2Njd9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS4wNjQ2OTUsICJzdGVwIjogNzU3NzYsICJ2YWx1ZSI6IDAuMDAyOTI1NjA0MTE2MTcxNTk4NH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjE4OTk2NDMsICJzdGVwIjogNzc4MjQsICJ2YWx1ZSI6IDAuMDA5MTI1NzExMzk2MzM2NTU1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuMzMxNTY4NywgInN0ZXAiOiA3OTg3MiwgInZhbHVlIjogMC4wMTUyNjg0OTk5NjI5ODU1MTZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS40NTczNDQzLCAic3RlcCI6IDgxOTIwLCAidmFsdWUiOiAwLjAwOTAyODA0MTczNTI5MTQ4MX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTE5LjU5MTA0OTIsICJzdGVwIjogODM5NjgsICJ2YWx1ZSI6IDAuMDA3MDkyNDAxMzg1MzA3MzEyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MTkuNzE3MDM3NywgInN0ZXAiOiA4NjAxNiwgInZhbHVlIjogMC4wMTIwMzM1ODgyNTI5NjE2MzZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUxOS44NTEyNTEsICJzdGVwIjogODgwNjQsICJ2YWx1ZSI6IDAuMDAyMjI0MTI4MjI3NjgwOTIxNn0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIwLjE1NDE2NDgsICJzdGVwIjogOTAxMTIsICJ2YWx1ZSI6IDAuMDEzNTYyMTAwOTM5NDUyNjQ4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuMzgzOTY1MywgInN0ZXAiOiA5MjE2MCwgInZhbHVlIjogMC4wMDMxNTcyNTY2MzY3Njg1Nzk1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjAuNjYwODEwNSwgInN0ZXAiOiA5NDIwOCwgInZhbHVlIjogMC4wMTExNzkwNzkzMDE2NTUyOTN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMC45MzYyNzAyLCAic3RlcCI6IDk2MjU2LCAidmFsdWUiOiAwLjAxMzQwNjUzNjU0MTg3OTE3N30sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIxLjI4MDA2OCwgInN0ZXAiOiA5ODMwNCwgInZhbHVlIjogMC4wMDg2MjM4Nzg0NzE1NTMzMjZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMS42NjcxMjgsICJzdGVwIjogMTAwMzUyLCAidmFsdWUiOiAwLjAxMDQwNTUwMjI4MjA4MzAzNX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIyLjE3MzQxODMsICJzdGVwIjogMTAyNDAwLCAidmFsdWUiOiAwLjAxNDcwNjcyODA0ODYyMjYwOH0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTIyLjU4MDYwMywgInN0ZXAiOiAxMDQ0NDgsICJ2YWx1ZSI6IDAuMDA5MzUwNTg0ODE5OTEyOTF9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMi45Mjk0ODg0LCAic3RlcCI6IDEwNjQ5NiwgInZhbHVlIjogMC4wMDcxOTI2NTYzOTc4MTk1MTl9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMy4zNzQwMDE3LCAic3RlcCI6IDEwODU0NCwgInZhbHVlIjogMC4wMDgxNTI4MjQ4MjY1Mzg1NjN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyMy44MDg4NzM3LCAic3RlcCI6IDExMDU5MiwgInZhbHVlIjogMC4wMTQxODk4MzA5ODExOTQ5NzN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNC4yNDg3Njg4LCAic3RlcCI6IDExMjY0MCwgInZhbHVlIjogMC4wMjA0NjU3ODU2Mzc0OTc5MDJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNC42ODU4MjEzLCAic3RlcCI6IDExNDY4OCwgInZhbHVlIjogMC4wMTQ0OTQ5NjI5OTAyODM5NjZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNS4xMzQyMzQ3LCAic3RlcCI6IDExNjczNiwgInZhbHVlIjogMC4wMDQ0NTUyNzgxNjE5MTMxNTY1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuNTU4ODk0OSwgInN0ZXAiOiAxMTg3ODQsICJ2YWx1ZSI6IDAuMDA2NzY3OTc2NTYzNDIzODcyfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjUuOTc0MjE4NiwgInN0ZXAiOiAxMjA4MzIsICJ2YWx1ZSI6IDAuMDExNjI3NTAxODA4MTA2OX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI2LjU4ODg2NiwgInN0ZXAiOiAxMjI4ODAsICJ2YWx1ZSI6IDAuMDA5OTY2MTQ5OTI2MTg1NjA4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuMDQxMjU2NywgInN0ZXAiOiAxMjQ5MjgsICJ2YWx1ZSI6IDAuMDA3MTM0NjEzNTgxMDAxNzU5fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjcuNDc5NzU1LCAic3RlcCI6IDEyNjk3NiwgInZhbHVlIjogMC4wMDkyNTMyMTQxMTM0MTQyODh9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyNy45NTgyOSwgInN0ZXAiOiAxMjkwMjQsICJ2YWx1ZSI6IDAuMDEwMDgxOTAwMjgzNjk0MjY3fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjguMzA2NDg2NCwgInN0ZXAiOiAxMzEwNzIsICJ2YWx1ZSI6IDAuMDExMjMzMTk0NzMxMTc1OX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTI4LjU0NjM3LCAic3RlcCI6IDEzMzEyMCwgInZhbHVlIjogMC4wMDQ5ODM2MDQ0MTk5NzY0NzN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyOC44NDUwOTU2LCAic3RlcCI6IDEzNTE2OCwgInZhbHVlIjogMC4wMjcyODc5MjA5MzY5NDIxfSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjkuMjI5ODIyNiwgInN0ZXAiOiAxMzcyMTYsICJ2YWx1ZSI6IDAuMDA5OTE1MDQ4MjU2NTE2NDU3fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MjkuNTIzNTYyNywgInN0ZXAiOiAxMzkyNjQsICJ2YWx1ZSI6IDAuMDEwNjQzODQyNjMwMDg4MzN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUyOS44MDc4MDMyLCAic3RlcCI6IDE0MTMxMiwgInZhbHVlIjogMC4wMDUxMDU4NzAzMTAyMTcxNDJ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMC4wNTUzNTM0LCAic3RlcCI6IDE0MzM2MCwgInZhbHVlIjogMC4wMDg4MTQxNzI4MTkyNTY3ODN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMC4zMjQ1MDYzLCAic3RlcCI6IDE0NTQwOCwgInZhbHVlIjogMC4wMTM2MzI4MTYyNjI1NDMyMDF9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMC42MTQwNjk3LCAic3RlcCI6IDE0NzQ1NiwgInZhbHVlIjogMC4wMDk5MzcxNzM2ODY5MjE1OTd9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMC45MTI2MTU1LCAic3RlcCI6IDE0OTUwNCwgInZhbHVlIjogMC4wMTQzNDY0Mzg0NjAwNTIwMTN9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMS4yNjQyNzAzLCAic3RlcCI6IDE1MTU1MiwgInZhbHVlIjogMC4wMTE3ODQyOTkyNzY3NjkxNjF9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMS41NTMyMDk4LCAic3RlcCI6IDE1MzYwMCwgInZhbHVlIjogMC4wMDc2NTQwMDg0NTU1NzQ1MTI1fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzEuODA1NjQ4MywgInN0ZXAiOiAxNTU2NDgsICJ2YWx1ZSI6IDAuMDEwODIwNzQ3MzUzMTM2NTR9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMi4wODExMDk4LCAic3RlcCI6IDE1NzY5NiwgInZhbHVlIjogMC4wMTI2ODQ3MjQyOTM2NDkxOTd9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMi4yODk3NTgyLCAic3RlcCI6IDE1OTc0NCwgInZhbHVlIjogMC4wMTAxMzY5NDQyNDE4MjE3NjZ9LCB7IndhbGxUaW1lIjogMTY3NjY1MDUzMi41MTExNTE2LCAic3RlcCI6IDE2MTc5MiwgInZhbHVlIjogMC4wMDg4MjQzMDM3NDYyMjM0NX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMyLjcxNjc0MDQsICJzdGVwIjogMTYzODQwLCAidmFsdWUiOiAwLjAxMTI1NzczNzg3NDk4NDc0MX0sIHsid2FsbFRpbWUiOiAxNjc2NjUwNTMyLjkxMTEwOSwgInN0ZXAiOiAxNjU4ODgsICJ2YWx1ZSI6IDAuMDA1NTI1NDA2NDUwMDMzMTg4fSwgeyJ3YWxsVGltZSI6IDE2NzY2NTA1MzMuMTE0MjI0LCAic3RlcCI6IDE2NzkzNiwgInZhbHVlIjogMC4wMTI3MzE0OTcxNzU5OTE1MzV9XX19XQ==", + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/font-roboto/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2": { + "data": "d09GMgABAAAAACokAA4AAAAAUkQAACnNAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmXocg0oGYACGTBEMCu1A1wwLg14AATYCJAOHNgQgBYMAByAbO0QF3Bhn2DiAgX12b1EEGwcBhTGLomxQFmT/lwnmGE77wayn0NBAJAPXITeLlQAVKYYKjM1mpr7CgS0HNgpkY1bqRLvLsXy3dA8XPXqvM/yN+w2v2FOlAb85QmOf5P7Az633/wJaSkUwMImTqgk4GDAic6S4MSrGqFakDCocigoYRBqEHnCIYBIGGExRT1Qeqv3690x3z90AwCasSP6ngswqFUVYHrB8VBQAKcYder52r1wzByMHJRZ//0+nNV9g+H/GsveOK0AqSpwZGZI47CReYMFvJOfQ2hTNUVES1lvdXXeyFKh29/XX4ACRY/9vTgMuqbMdO2B5UFAD4VG4vRkzpRE/HAS4Jss5uTZKgIn5b///mp923r+ZD/x22f0pcYRbsj0ne84XpsZN7mQyee9lwgszWcwvZJLFD4WkECjkFyHriuAA87NMWVUCV9VTC6S6tsdX+ApZK4nU+gqn6ipcefja71ffCTv/vpktBbH4Q8OmUzIhiS6SSKLxDYn4I3iKlCraxSKRmLCxMhnQLaUZLPeL70z9PLvdGe4aJpgghNJhdNDfIYfbP4Zrr4IRvQYW1AHHsRm/MoBA8QMAALCA4nacDoQBD4hYsRCpUiHSpUMwMSGyZUPkyoe4rB6qxyYEAgXAC0AAAgCBiIUA4KZAB3a3PfY7jNipySXnETvz4unnEjtv7bILiMECgG+hS5x7+iUX4AR8gRVUUNx1liijpQ3akVwcN9akGiFf5sfC53+NGKbR5WqKVWK9kAti+AS1eOOOyCvDaIwf8afMcFGbPJk65ZRuuRKVi5n34MXC5+eY8DF3ego/YaXaA/kGJCdNqR9aLDwevIQdJ0mKNBnyFChToUqNBoJTtOk4zZgJM5as2bDlwIkLV+48lSpzznk9evW57Y677uk3YNCQYfc98NAjk55Y9MySZa+9sWLVmnUbNiE0xggsAhGnnKBtjyf2QAgPTgoEFh8Jtbt2fBCTGwppEGEglZ5H9iEjajJmypb9zQ7WcvY+F29zpybfh8pFRalEVy+iPrfdcde9rn89b9acef9Z6HrqQ4ueWbLsjRWr1qx3vfW+d9770LXhbZuHCFeD868+CuUUv9RhOBpeRLDSKRtpW+4JClYxVTYdM1P8F5yw4yEH/bl6XJhQCcKlImFqL9vlsPiIpJtgDl7nnTDswuvDCv+DO1fDk/MxTTZl2ozHg0XCE4hnXuaoUGRvMwJjpuxnZEv+3pQmUBk753x56pZFeGbJ8s2IMhXxINvIiBgzZS/fU4ueWbJ8N5ZJIjmllGuC4g0HW6/PDdHeZGVFrFqzPhRHACMh5SpUzmRow4YNGzamMFQ4soqMGDNtbEWyl05HornGI/8uT9miZ5Ysd70RacWqNeumCoS86xhHXc3Jp1y9CINvDOn62prjoEx81Jz3IVIDWX7co1E3yT++FWYmuuNgIacdlV09TGcJJhPrX4ppsGwDXfCvkmLgAFmk6LCYxAftHyxYL1O0P9FCx9PR3lipv92N96FztJm7THzvXYCZF1CGmPHV7zjxlE+yUMyjYlkzeXrN1+XDXy7mZ4SaH3nFQ7Ww4uDmIe7T/PFaC3qFyJcS82v/iTr6GwvR3ze+XD27dfVbnYZQeRFxzohzSVz399nlr3kVWPXOwUJ5dHBrvN8bC/o9RRmDNlxKMCFjXvucAiWWoH0uC9Id0GRlZgrJ2SxOo/NX1BHQbaQBUf96uxZTd36ybZDQD2eu0GhiDfZmfDlc0VzFOlV8wKy9uuc9zoT+etNtsqFheWuKpVn11wnNyFUttlZgbJzVYnwrmDBpqX3O62J0xc3aVeaABaXbnkaGt5Tna0TncyyvCyiVfDTfNg2Tskx1qffMM0NtN69smvOiem3QnIGRMuk1rbqfMN9WYlYX54kVN9Zr843PpJvb6ivMNl+RmEB/BdWcgMMDITBSlFAjGMdJwzpJBRcNOoQYINvHmOh+Zu4HWLNzkAM9wsX9KDcejslxl1SqgpTK+nJ6LJP32jr7AVDWFUr1sbAX9oI4EVeZok7QfSSpICmKkKY4cpSbPOWhQPdQpggVKkKD8tGk3AhUzCkqSosK0Ka8dOguBhTPkHIg8915deAkWMcGli0ohh3l4ECFuVAublSIO+XiQfnlCI7BobVXOYT4INHaqwJUXCUV1+OO6HUPqn/XBA0YhnPfJMSUx7g9IXde/1qA99R9t0XLOL0eivXGOox6LVwgCIKWCEHQPYSoiOMCDwv1DyhKju6lTFGqFKXO+RXrwA1csBuEYRfwgABq5RhDmLJAVAIMYC0Me1CEI+XlzHGKeeAEnBafdFBUHkXlD0UUK7FHQxAEERAEEUvELYg9ALxA1QMUuICHcCSXIboBRsXRb32AMzlHPf3L87pFpik149XgSKLrYiABJiQbu7XX0EZ3qpa5pRm10HWgNpbmvXY2psKEBVBRiYumxxD0yfF+4RFhcOKf8uTBydDgQG9QA2iNNAqnhUWBFCuRLAAGylcAEIhW6rsQekPBdeKnxE2kSncIhFMQTwLtqlUHw4S5y9CmoHva/VBPrVxRoSAQJgJKgoic9kRheIYBERIBcwcACx1JTRqgQScM5u6itHBr0qhBsxat2rTrgDEjYrt2VZyzqFi6XHNdtxtQ2CIOaKHU/e2ri+Ee7MoA2fSUxbwhIBp/6EsBkrpI3jbygQfuiQiOrDHBHxAwqwyQgDwGALBLnUWCBAxYjpb9+Roy/wk3QM6CbfsB0CABSxQAnySXXv93+42ZtuaTv23HZhtjsRhL87XmG8w3mW8+33q+NN/tvsvue+KI0PgLi4TLN3UaMG7Gus+UbHrWnK8332j4spfb2B4r9owh3GMQ/P1r9sv3jkH4J/6/8X/35zeIF4eOyoczmc/Yz+9yx8tGBoAK8xg3HB/3Xk/VY2LM+/9p0k2ZNuOxJxgy/GvWnHn/WcCUORZ+dZZsb73z3gcbcmziBQDI4H0igCRkjW8HQ0ISbLrkpsva+aYOt3TqF2HAqN40JtW4af1pRo/H5k34z4I0Ty2b8twLDC+t+jetYVr3ydP0WaYvtr323Q9ZfvrtbfojJ/2tNjOyY0BujRxSHRqQl9GXAgoy+mFAYUY/DiiqJdZsXwtAMZBYr30DAKVAYqNqk4BzWWLzgAtZYuuAylpiWbUUUJUldguoyRKXBdRmiScCLuYjazwIlyBQnNDxd6jn4zYgH2sRfLeGyBuBeX8dvQgt3Aq6mTwCBwO5ip6gBxjoGBZbM34NE52ChI4XgbqSgsMohHqFmIhSL8HR1+qELePMETQQxH8ATAWSCRJ80KkVSFyshn4rVqc4xO4K9/sBbZUfGmjTrPCOlAJr8aYOsysMEbR4GDZjo5nqxAmguf2d+5ll4+q6dZTUZq1hMoksN66UXJTBBGyt+DrbhMcLq9Bk+7CpxVTXjuuYlC46w3z6kfH9bpWmwC9ElhFLbSMmAlXH7IyhWaYUCy19n4kkfj+MNwH1CXMxzHzrLGoTEVEJIpwww/SO24xCz4blyGgkPPISNVwJHMS8s9eaLgV7MO1MMFVxzgWKDObEffRpbR65hHZghKBm46hPHQIbxBUaIedU2SrMOQQSCxSYE85BZDigzEa1QKgIKEMqmHOWKIr7/orgvAATAUj2mnDy/ahrDOXUW7VsRjmHFUELlLgbeqsOaSaMtOVts1bo7cfGG5ZmMnzyvz7a9D8A49yfhKY0fT2zRlfuOMrMoba1d2Hf2SfChT0yvB6uDam/YVYHeti3rIR00JWgXBrYWqccXULUgWBDLc56ozkbZOKZwbkbwr43STuwCuPa2d9GGGB7Fc7RbV2Y1ryEAPZ+fo+bAVMVWitQuWZzibW7iEwCHXQ7lilW/mPjcU90+t1SKzITRy0tdDnD32eBJegGqTt8gwv7C7U0By0yLHifOEbuQI/HKbSqiN2A7cIrLxEuI4jzhl62d8SsW0WgmoflnBB4zekZkQIL7kLPmy8SnYVExDCJn/vsvX46iwidi74aH8QGlQbnqrSnHdb+O9sslbarcTLIeXWoS3vjlXrP/Atapqv5ib+Vp+qjuFwuDUd/fyHu9CVTIq+qFWJV1Ca09xxlk3lq/Sq37HDeHFvIRQz0Bit3uYQ2MH0kRGaKWNr6gj0uyh0nEF3uif0c7nh4lCgrKdH9hQwYPB6dSzZHuxICRr/dIPICn1SQxKhh5hC5lEbayfHCibqcyA3ZtYkTVgm64xjTZc9SxrTlX5q0if+LMeMTHtRHRueOGGKjMO15oLHaiPWlWmRl/IO10evXz7Uh09LcSPILgN4V8uqJuvCbsexNLzoP3QgU4zJftrAt4TZuhNhSaFJDq30QNy+xijFVzLR5y1ZKXp6namdX7u3I6Z6K8vco9tBP1UZPnALuwG2CMSEhWTElyCqRQIzcxyntYtKFHuO26n2pAIJzuhqKmVWMk0lxlhMvhrOMcQYnpoV7MSCclFSNxvg5F/MSasrgQr4o9P/8ce7LjPQpQTUxFy4xpt29wJlYCQSLskVnUbXUlJD+kq+gImoiUOysTerfknkgSGBDUDKkls/jNmRXBzLzuE4Pph76s3u6BjIpbNN2/uUtpLEO4NfUee3hd2ICHNJIbu7KwOJmXM0OKEjTZcEy+gJZO1A8QqI9juOkuT8zAuZZP3b47Ea8GRr/Yqom6GrAfgurEO3uc8eXUoGKktCRgBAsVnVIoJf9NmMuK5NrsY9ALjf2gU9eNkQ3qYUTAKnCxlt0ZamUlmPRKIzah/3WyZgfmmfwywWHYariaOMQdaAnLtycQZ5AEUKtcuPbwWIRiIXc0guTOqWrEHyCxSaVinmQAkGenh5YyHy4OjCmRFbrOukQ0opaxEEb9LTnu4pMNA5oajIR6FNAvzNYBLI5H1jCNkosMq20DStOahu6Tl25xsb5RqciLQK1kSpeRs15JKSgo+2DBNpTgyY1mugTZwLBQyFZ2LYikcEqfUfXzD5bqRfbmJc7cYYTstDGs2DiLeG4oBCqhtfubuK8OpzZGwftSZqHgjNcMqO0bGJkQTvYWwXWjfQkKZ/6Gt0O9Ma9RrPA7FkHm4ogchaY4T0BfhuQpl0SlqxIwD6dfNlAQepRTVGp5sm+1YGJbv55UKec+VpxVrICAWlg8rr/IVfIahPZWyD4cFFDlIMc+CTZ15JKxmYxJL5x33PQTi4/jNDXsEHs6OL1DQlR6YioBK1LayaotNggHdb6wZHpOYgdxN2h7EuKiQ2Cu82lamU02Q63JmZzS29vUgECR0IeX+G5RNlpnEnO7QNnchXLXsAOlQQHHeTBg7EsUtguvOiQEKbkgjf0n6GjHfqwIC4SWja8GiY+QtaysAIH+Xtc/S34rotjyJiIgZU5ikRm+iLHHqKCu1qwRWEv3fudKN0MuGkIb7vVjGeHHxCp9OWJ6ErT2plncvoXMmdytfNnJjFy1gw9xNMkd0saBFfI4o1358aFbq/Y7HG+0KmQY85AZYiQxA0RN7R7GoFWI0woIEO6jdfg5/lv1W9L8MdgGrzibDAjUzPbmi3IYPDcUi4SpawuXitn7HSA2yOtc0ts4mgYWjYsiSiVXBuGBQjXZXxxpS2Jq6yBdvXRk6hLpa/aV6B4YBjv08cEdkBW/TjBgnZNauhzxqZs3IZtaqmJYIwCdm2CuAwGScMv6WjknojNJSYEDVznSdIe4CUSKBCkndAmwd2jkRJS/wOiqKUozXfWEQvrk2GMFeh/k3cHmd+e5nwHpxKCSAEShab0a9gp/nOaf2S/o/xG9ll8TwiBm+JxaYSCbbEJObCxpFX4W0prjI5tAu+5849d5//w4G4tCb/Zm21f/T+Nbt3FsPz5tFFX9NlIbH+MUDEgQNPWNDZJoT5NdbIxox4IqtKPpOXydp7MulwVpi68NL3QjJdbr8VparAvCppfbCLx6mT+zMWP3/nLtb88S5po6i/tPz5fgrJign1I+C8ng+NvE7413p9rF168tNQhevfryFZSZJG3V0igtyMl6O9ysaVvgGqGS8vU4x6h4YtDo7tnP42xk5KyqVHRYYBXqWC0NOfkNTdnG6U3N+VkdtbnteAMzOxO65jaGRsbmNknmTiQDx9VYHY0ZGa1N+ST0xqbRVsbs1uw+hYOOkQjG1NTQ3NbbR0zW5Pf7ATySWpUAhnss/zDmi+ftaPolRu2TY+xLj7oy3F1rQgy9SGLmmrRS//lS2yb2xGz9qqistCVV0fiKdba0at0F5p/aiJS2moXkBRu+nbeQdPeSo9s6wkCN9L3MS9ieyHZcj2+9pNhhq58fh6l8yaHGNjLty5eiJdnZuh+NoqrBqvTz2Orv9swifLM8rOdS0p795yfyM/+IJ+ZrP3pVDKTYxpEhh8pOKo1y1L5Ha/zu0tFqbapOo5zFQVfP9S1p9gfZN4cTnie0LXRlfQ8qXwDaslp5pouMkwwuPsMOiE4aBZsOflG+ED4727GZgRNYxN9XVNjqrEZDCT0H52X7Qe9I/6E9zqfNz6qoQo7hPeaXz69V0QVtoQnI+7F0SO60X6TR2fG42gRPegI/N26X+yk+swhIP7btCIQRHWqtgyiJvtGpxYmsjNiZl/SSme/zt4Ji/uYe943oR5EfcllEZB2JjQoNCrSJzHSlR0ZfWs2gLH4Y3HYJ6Hd5x+6VMLVuBHe9WdPeF70sb1S6GFnUulRZzPjmYVAUOK4MXxDn61Pw5dKkhZ+SWJaEr0OQcdji2X+J/qSrn6ayTNrXK+e/51eTOBfc/d+4AuOj/SLTLiYk5FdGavnesQG1Hbfun/wIcp+umecGndz8Pmu/55jhWYX+XVxtsnULo8PN60YzgdNTK5k3ltIvMyZ3AAkf+lj/tJ/txSbX4a/APGYQkhYo4f8GZW4W9QBzMuFp9hX/bT43ghFd/nQxpC+T08fTX56yqdsHZrCmE1KDwtJSF6Kiz+44xkW1xdC9fcLpfWF0kDxtXdsSt3AG95nRWffzaXmLyFkYf0c3xov9MD9o/Po6sQzfuNk2yPGnpfTh58ktDOyE5tANdr8BVvFmjaoYk1lgw6b1+OBR5THfQ94Fx/8+pMaQh1UQ6ifwL0tQ7dm6M75BLKHm4+LQ5CXLRthbUwO33/58Fbd+Zq4GF0TpJCtdsrY6DQxgiXDv0ihT/A8P5cl7t3QuqBkyjQ1KTn3SXBi15Uk3FBBuF2KtIOuspLQaEZA2iKuQyBSJ5M4IjfcFcW5wfM5x+3gjWm7m5JfjmeNTykE/wmZd3no/oT7OI/gcnfKl+2fAYtdlacfU3kzjfOs1Tw9Dtic3BCSj8idAS1FWxWaDccRf9abIzQWp+/BxieuUAY4Fvs7MjriF3Ix8B/aoRRWwiT+2bfdReP76Bm04DfrWNneH9EMik9onGfaNlh0Le5++w/2ZydnfaE8OpE1Vawp0HL9y3Hc3o87gtUlOQUNrM/I29SN5u915eUZwlWyP5KdgzJtdaceGU/Xayq0jHL7rYg1jM/+QN5ab07+HAGdqByHgdsPegDH6nrUXeIA2teCTYJ/A45V8+hSlwlYwl2LgL3B127ta6hQQSejTE5FibMPfNr/6oc0nqOV9RXdiNwYw3YNWTseODkgBdYpsPNZbubQi/z2yPXYgYs7lzpH5DLsHv9+jP02v/J9dXKHGkUNC4hh0kGVWt851nI32nLbW34r7WccHf7nJBTdL39QUjEWHBhliem7iam4kUWM/VI0VWzF54bYrLdoykuh+WAdCb8fK+PiuvyukOrm4/sF1q+vzZfqCbVf7xJpP3caZmzmzhkItfsJtZYTYXYHu3UTaa7vAeS93ec+XGNz99/tivYf+A04luzXg78fz4tu/j75QCEzPykmujAvEVEH65Jr02lyNKefQ3Wlql8fGbLOE13d/MS/sdu3fjfXnfSd/UYPV1NLqlVBTPHgBw12eq/mS/JGElUMPfh2af/CphSmRNIYyekID2g8pnsxAz2DA4ljCfdZB9+sVmxGZE4l7UQVpGQkZAV7WpVSbP0mUzwbI2/umf9Uy0ktmcz+nVCXeYHBoIApdmVs5dfK0KN0MJ1jTb6V4v/+/3HuzUc7UyWlF4qOqYxBmdbeY2f3SIyyvkk0sHaD1eUgfqzRr9041pagnaRgtyT7OrL5i/+YoaCf4SxIlV5R5Dt26/HgsqTGbs3dJ4aWex4fg/DfFl2iB9MrRP+IHiyt2Aep97kfaNXLixA3Hh26BIdHZxoA79hwtwI4nlQAYsD6fAIv+xngqaASOJ5U3m0CvGMTiNs1dj2akplvk56fBM2U/vL+cpAoe/yAT243YP7wGJyNaa6b7M3ugJ5P5WQ7dz8v22AbItuZVvnAMfHeq3to+9sSKQdBtNMoyeD/R+mZme4Ohm42QDoitPNSevRecBYPdQnwwH4mKP7a2KvjnFt4VvzV6NrT2feIeRej4luQNtDocKUHY8xXMX60zvv+tDdcxzH7vnNIrQxuvcTdXMW4RdPdopNboUOSldQOFsf+X5cbbg+my7ABD0s8EaHpN++9V9z60pDUQyvXZ0zppZZHJ/eBk/D6wSNbB68k/HmVn7v8eR/qM8ydUV1FbwpipiUQvRYo3KSLfnG5AgnTQhyxZxLgCbOhu8G3e3y4m0gWxN2lq3Ze91rqXmKC9bGdjZMjvcEp3KHP9s1xfntFf+1DsIwqjmDUx+amJRsHUa/e+yz75Vsdoy+61DBxST+uNIZxF/YMj0Rn33TB5gyz+yK93DxKyKk4NuCBLZLZBDYiqmG4XvkGaaiTjRiGRrC3nlDZWN95kTQz4KQQi6bXidRmn02HhHsPXftVUw8Zq2PFQ3ei90GytP9z2iNCwEeeYYw9tWygNcxf7xxFBsbZA4HOnkG2QU4iZFhlT2Dv3SvRihZgE2D3CgGfQC8atsGlPWTfDXTy8S8lM1A2ASxOXEz88yar7JnAPu63nJfifq1kn1sVUvizxdmUfWc7q7+3Pq8/lp57B0io0K83MgPXKFSEDbjFl1xhlNSesZcn8F9wV1LuxpQT417qJp6jpvWBxfE/69JjN4KT+CgLgFtk7wRHtA69k9v61ph2h1pkELdhQCugMnrhH2W378pNmskrbMJbXIxjXrXKAVg8rkshfVe2kbzh2JT34fbNoY/9F9iGgW4OVn7GOhru2gd0rjhYxDqWfOkeyZj2PNvkvYG1p7v5evkagdicLkd/d7+bDv60TMsdmz3moqr+17qvcYDCAIWSOMrqnhy+y+6bauvSTuJiE1bh54v8tvhfe6mEf/fWE3aApGjZ9n5TiEqYWF97szYhxCBsdr5efn0LACd9+U1E7I/x/ndm/gy//TFjEV7YHj1bxoitPPcR2FT9cueJm5uemMURt70jqnhIHiQOhV88Ni8+YlkJXoFePnjPuVeD1wZfz6LXu5evKsrntqvjfi68andpd30zh/vZrg52fE2Av9cEYotXNTB/ZtZv2N+wfz+N+XNVQz73hlLXSu/Eq6FrQ69Gb19b6VYC82Eh1t3nBSYJ6hey9CROkMwC7QbbbiyWmTAIRel6hyVJthF20FL+GGGgiABNXYNsoqtHNtFQJ5vo6ZJNwKLDmR6Is1zBZI48KhZ/P/H+5uGHB5f2zz08dPPwq4mXNeI9/2GqVvCeNKrr2i51ILOS2mHH4K9mnrbrgfv7HtgEyYS74nsuj1dxfHnw89259ac93zyDgjycA1KDOL+ojwNpJqQ26eGDmsSU9LxCZpZv1ehEaH1hSV5hflFl1MBQJbWoNL+o9Byl9sGgd1VOXn6RRlp8TNjkXerSXVro5MfQh3eoz+9SQx/CEWFLnBef3f33FfI58uflZXdkVc6r5KhU/HC4LwiZfOKr4hOr26tgNDje0+rE9O3t4Bt9v31oYfoLhFfRs2LzPCzNM1z61G4r3Q1zuxDW0+xMVCRl+rUKPVz7zPPyEZtSlBwTn+NhY0d3SAscjHSuUAqzEjEVD5FMsPaxL5O7pvIiSo5mnekFuDkHJT1SNInkRyJF65EmFD78Ow0Gr+0qOi8T78x2n+m8N1tb115fXu3lauPkFpAZTYsOzHB1drbyaWA0lu8XbK27KFBXdciu8pBAI1Go5fwha4GmB33OJmMpxmN9zmV9zuSJoUGj8dvO4DkgQDKzTohOiwsOb4rpCFBOpuoaKSm08wV1pmRlXyhiaHnvs/JMlbI92pxNMQX7U4pOoHU4egIb30YCh4WrNVsLPJzAEY9FF+vzNvsutDETaXQd4n7l8Do86ZxA1eAlM10985qMQgM3bTVDQ4Ib5INKA+/V2qsgShuhXKhZOl8ZGlZZuVRdQ8lU1TdUVdE3pZBNg4zIID2c7jjuyFhg+I/7xy4IH/tlPWINXZV+ifuxkQEkGTsVgq6uWh+1uSKzsCr5bEiwv7dDbuRZEBgJs2Z4H7XTUSCeONrnWx+fVnglJpjOVCqTKqCwEgszW5PO9J3QV9E6PSbjnwFuIKwGu0XkhkFUn5CA5DmlUpoJMUJswgu8vSulNNZMbWgLcIvA4LRa4/w9P8f1Z+0w4FiQf59gbM40MSecMjcm6poagzbaUC5WEtxGq8Jn6RnKycgaHrHEHsoBpLKXMCFfEh4tDBxU70v3htT6BxuNLt4eqqm9O1zXifVxC7OycAkBLytvtzBLC7fQAKCVIfEqRUYWAcHOXhQPbzdnp2Df1e/efpwemno10dNQecXVzZzMFSWyraZhaMKISRWvjAnQIiGN33b7lu0RFVXWy1GmwPljo/uF75+3VgyMFcsEs5BTumOytJzw4Do1jEgggs2RjdXr2V2fbuJS3lK0OTQUSJorJwl3Xhst8HMoaCrZqh4ArVMDptOGyYd8CQ52mRutevc4Gv85c7D0mLlq8Lbo96oojSX65avg5sS44Ef21kk24Fhbi2vbiUWpz3PTYxGI27KeX9mcuj3f16Ij5q0fuZsoeZJo21VqlWXattAzZtV6wklh6GHSMTVvZ3uSooFLR6ZVppVT4oS5tauXVQ9mGyy8RH7nXiKazdkyWeNXq2s32971k109Apxco5z0vgiV7PSMvghnpDHHkdlN9EP2Lc6c8zXMbIrmoFGDgfrMabWUHkIm4cHjkUCE7mGo62ahdG3dNyl7V9LIwTOhsaByfO9vzmKbxkT8SnFezqvExFdZ5ZFrkwmMkkgXhebE2IdM89C2M4nWl6VNhjYVWczrdPPQgjXkb6pukZTTVJ6U1xQekTXeAaQow6+zX7e79I1No4xN9EmzWqZNsXU3CYaR3KUETWNjGzamzLVRHA8bFhT7Tw9XEMtm2t35ALnkU3NqsnxLtfq0t4zXqma7V5yNZZpukk6XlOOz+oEUJfT9tdxQEf3iHJfY0sHRrNHXx/Fb2Ma03mh2iGlsAhuiZsC3UTi2ibOklBdpIbQXCXKXN8c3Crv9Mvg7PeEwcNtIYb9vIK/GGT7Xy51TcFttsGsGXE784Jd7+TODRbS96R4K85voRlYrd05RDc25QNpQ0aLGUOcRMeZ7bkdGx/YbvpPoF87WjN5YekbPQCPzbgwts1dHoM+eniUcc2NfRGQsqKh84BkuryqrGuTjFy6E3QEy7slxrQl0L+8EemtSnMC0vC5RTp54WkFOR89HRw9Uae/Ck4q9JFOCTrWJnTCSK+MITyr31LzkrHLCSR4EG8XizVwYaGHFXA54BswA91eIN3NOQ4tr53ICg2agXTrO3C4JLS1dzAA3/2lgaSeZ22Wh1fcX+yBE7YyC73dikrljPqb84eJNX/8l4EzHeMbE+AXSY3yOe0RHB/rGRCFucEp0u6DpUIbwoYwm2HW95UX9rtguhJbQ/1cOQu3KLj9cx5W2inAPCfGH9P0pcPwQB9Ke354yH1IH759/xH5TGAfFH/kf9j9/uY2zzjffL8UPdLbCchm/u208JBNICr4x6JplVXLYYt+xiWz5qAhfL2/9ue45ZqDncpXLT/vzmYz0uG4oObvzx+8NN+eHRuJI8oBbZa8+R1MFHn98IlP+bIbNpDKnhJbvVeKqEqcWh9wmuIa+YTTXfRvYon2xpqWopLaltqKmpqO46GJ7bR9PCy0Kre1poUdgLgDPY5z+j4KHpud5z7rbdQGcMaE/7lIX+7bmwDtJuXzjnJ1w6SI5PTcjLuZKRV5qezri04u1jqIlauiR9EhkOHr0yIXiLA9eb0P9EBozP47eVMEsbW2sUnzyaf15ebOs7tG1Y8XJqiQDNSp0tNm0jdgkdZ+LgXNEaqRaulYK5VJsQV5dTEhKulakGjW4kpaaVkkTP6S65UKUp/wdbp1rdRhxkJT32gVrqroaLknM7MSYljpG7uUG5Nyp/54tvADh0sIYa582i6MGRrpEFWWiuab6KRJcy7vdejvud/wYOrmrQ3UPZzdAdj4bsl16trMHJwj9C8BBaPxKa5K4nayl8ATWSLdXfZuqajai9urlaXVLWl1S43gaFezUNHGc2viWGFVqfMapNI6ZqJrQkGIdrVlpSR2gMlMI5Rq69DmzV4hdMrcHAWfs9BAoTZU2Z769bOXxZc3VFkp4xWibBOFYwgTorrQA9CHSRO6XW+RWuU1ulzugk+IJJrd2XG6lfjva1JwnrQ15Fhg+vshoU78zxce0UticGgUkldh2f/wL0iv1vW3a8KS1TM8CWeMproOsp/4470mj6lkw1MdTho+p9Irw0VTODQiyMjyVlWFRVoYll3JHw5maAiAoawJL1qzs8owCRFg7UwQYHKuvA6APmyGAR8X+5eSiA+FGlKvISqHXVEyywqAtG9PLQDYOESOUrdi5bKecB7mT9W/92UnbzKds/CivQ1ggaPNaTYebto+Dm7It2LtszSNuSJ/mqPEUqaYzG67KzmDhcq440LVTrjHdCbAH3C3KLoZujDGxdgHfzSH/3ziKTf8HIG18azVlTW7R07J2d0c5mZEt3MkFd2eAu7W3sVJe7p0CX/6/fltthFVFKkqjtj7zaoWWRHyaxBAL0BcngJzxrUs1ANWoinudxTTyo7X3vEkF7WDJOkHMB/f2PmpRAYPiGEZh1PFXRQ6uOCwmCQHcLjO1QlaXT8roV1cmYLFRH/qIMoDdb6ZdyDqrc40JgDyupesAej3axsPANaHW0d+K3v6VKQO4dWcnBYyNfnCmBlndj15UYmvdLQVZXYXCAbDvSi53l78mgAvp6tvmI7ycB8vFRn4rC7Z0d8UzgaupqRsZLwDkzv5TIUDPRtu4pZzR/x9ttS/uo2IB5q++zRLVtCeAC/F3TemP0Fvzeym4EC8U3sW+Oa/B+37nEQDoFmu8ZrzdTlxV63fOfcsBAMDIT4LbAYC5ZvPd/8f+n1vebbmzALigAAAQwHHeYgTAdW6gdaFbBSKcajPz+Ekgi2VtdCuFUcG/XvOq0KvaX/LtBzg0FzbxQEo8IZXZxItGvw3ZH5eQQ0tmykBTWTCTZmJNLIkKSSU0YkCCXm33OCStrZMrQacrTnHJSMkVWjMprt2WUOdV1jUFdIKyYhLzf/dFofSrNUJPXZ0h23k0yS4yQ7itdzJmqjhwsrzqj+7MMqlnKY2qS+yyhGbcFLoA6XqJo95gFYoY6USEG+HNc6lmNUzcTbHsuFSqhFJgWYx5103ZxjzZymZTZ8QGj8RAxo2ShcMjb9pOU86KrQLkSLnRmOFGDjONFpx1CXp+s6dvOVx4h3IVL7nbxFUagep8f8S7NVocxKxEfnWDR6/hXkQ87T9Z9YNLZnCf9Dlmsfx8zbHCJMebeqYquSWXCc/YpjXvmnpUiazbSnKTQegpCAFh2s9hSjah52vufYbz9A+ryVFgrtCbZYzt0mfeGYLrgbJalzUNMqomgVWMVFks67y0EFM46+Y3I3DNNWVxTUwuiOvSaiYFqW2Ab7tDuU1RShGhKY6YnJTioazeKCeihEYwu6wmG9tUK49HpautZqJ1h+zsKPQcWAqIKVEnqsSSmJtqnhheK9M0WhgtmepO47uVyu7QWpqtDIeIjQmvctt4GOq3VGnMpi5Rs9OaD+OCoIJ9ijAlxEZ3q8K2cSvUZp3SmC0KHW3jbeojAD4qtIcFXFQPgB+g0B3g59viFAADqeUBeIDyWIQYj2NR/GIqMalKLI7FOYHJ8JDbG+VnZwxJhEixogQLFIRKghIFiqMigSxCBQ3lf2Jj4XzJMV2HhIZtGOJsxPx3x1+U6Iz5JTk2Ivg0hJqUYJ7IBqMJo7HA0wrlnUoclChnBYvwhxO5lcrUnXqV0epC08uiW50qEoH8CHRHjrfInPkG3P3JiRAlkIUK83VE+Guys6hlxhiJAQu2q5B9cEhhYPBIf8/JTwAA", + "headers": [ + [ + "content-type", + "font/woff2" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2": { + "data": "d09GMgABAAAAACn8AA4AAAAAUjgAACmjAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmUAcg0oGYACGTBEMCu1810YLg14AATYCJAOHNgQgBYJ0ByAbL0RFB2LYOGCA7DduwB2DjQOQz3hJ9n+ZwI0hWB/YxYSYMBRSFENBsWqrAkWbJBHpUKamYBECLd7YUy2OVYvlKX1dMf05+T/7LtU4wMKUW3v6cz1MLF0FGyHJLEG01r/VMHufgpZJIoGKBHQMKsYkFpgU4tsDmtv9xsaIGoiNiIJRtJKSElLSIdGjQuiRIypl0JtBlKISJSqZZnH/Oq0ZWaYZyYoPCFpukb7+N+xuwk6iBRZMI8WdlLQH1F3R7l157zoCyXjA9AD36nWBrP07PZhwgBLSeMnLEQ4VqJsqlv8siGuabsED3LeKFnxrugO3hMah9NJJ/ipRkvNo0bWSH6xvN8TX2qedvrqte1s1/yDEW6dCUB4tkIxQEeoDTSYMiiaAuBEGJLK/dSEgoaIi0Ua4CGXj/7vX2aa3YewLW7L1Fw6EC+fgxB/7NWWpMKZaUyFMhaxEyArLmA7J/62Zdje5MjlgYyvcOTf7ZycwswkX9oD2CklKoSNIzN4VWFXVET5/gKgKaO9USZgKCaxcreurQxDS1KS6SqUxAJqz+B+OtbQOoul9mcsgjITAKKN32318dn4Bhdn5t38EFHq8pCEUmUMECIAIFw4RKRIiRgxEnDiIBEkQpSqgdDmAQKCAVcCaECAgAiDACvyk0ex3gJounDg3gOACJy4k2DnDicusvN3gBBrAILTCpecT3AAH9C0NYpDo+7rNUJuyf/BUQ/cM42KIV0v11FyNhkyiUDj0XDKjjuX1lEnr9K7FjMnEPpZVifqZhCWKr4SbqzTQwLYaKjSBrueqpWpPjRbN9WixjymuFFH/CwqFBhYDRux4XXDRJZfdwE+IMBGibhEnQYq021SoUqPpHm069BkyZsKMhXQZsmTrQkH1yGNPPNWtR68+/Z4b8cJLr0x66515C1atWbdh05Z9BxC3mkNDHAcJeFI4TeKEYI8bP9Y44ePEm77r41+ewEGxRUrtUWZUuIsOetH6bTJql3HbzKjlpPZkximHvICSPiqPeMwTngZTLZpmhlleMxe8ac9b3jHPAmuss8EmW8F2u3bYZS/Yb9vBNIRJvask5+7FELPwimHcaoZ46yTaJ9WCSTY0DsjmwGD82Y7DoWmOfu1MGuY6fi64i8JTF1OyuErRYMJBFtuDaaussAMsMLJnmS0vuQHreu+JDYwyxjgTDXPAYsWQxpkTT6ltykCFu+glcU3S4tKxymCyyA7etO0t75hnoWEGSu1TRoW76JHEG97yjnkWzo2mioUhQSbYYOmYZg2ss8EmWw1jsBYFTyY55CV9Yp999tlnP46GGajhpolWtE5hDEphgsHaYdbBBptsWWTntaOdq59hH5i0BI2pTbJ9tW44FNXel24XIjwwjRl9q3SNYW6MMqPqdvrNMVySVP2Trj0U3CvhlYipV1w9cpuCyIgMoYoJ6uAoNADzvug45Zj7yoBXfrjWup4FNpUP90w83Gjmo+puO/m8JAbcN3D4dUpCw6N96EFl/RgLIB76ETisxR/w6aPfR7D+NjfOfbeHOYYeHrwM6cPqaG0C4EDa+qeN8E9UN/umlSM27Cex9S8bW/9cmENaN4plychcK2z/rnfLbrbSThvtiLBzSrZHuO7Wmpvu9U1ldbZfCTb4hlrtIxcAHO5g65ppXrrnhMPC1kvnK5fWHKkuAKxYS2ygcV0rlvjEtGOxglUm6USA2od7bZ7ZA0zgcMNXu6Vq96DjVnaFuUnt8GvYm+2/bLjrmx9odH8OHtYJcBgN/b8kxzn07RsPkp7oNsv+PxY7vLXhbI0B2O6kbBr78YIaGQ9mNpD/ZDn01If3Bh8OOu7XP4HYqD7kLYGVOfcyTk47aKYl0X7mMjiMDjPg7M42er6j3/abnabFTbZeexnmm/4ZPQMO37lXsuKw1GmniQNWEawkgpUo+P+g8bqExlXC6NwiDU+RkuNUiKeoeU+7RxcXffIw9p5jytx58d4L0uW4KO/t67osuGHVFr1lzLkJFBG7OIqjOKlO+kwUPh53gWwuEnGJGNdJ7wYZ8JOTEBHC5HCLTMRIT5wnSPAYSbKSIiNpslAk1h3SUiqP+NULp2hOtdHQAdF0S1ofe7ErOh/EMyMdczKLF9olnjsqE3JyqeeOygFPyuNJXV4ExVMo3X9j06MfxnOvIEZNoDdJXkZT5mC98R7x1gKc1fs01mxBk9dJBzawOQ5sKDkp7MUhWOFQrjBRrvMoIaKIEOVmyUxYL3rQ4QjYwQIGsIZUnapA3GVBSAIaNA5ND0QYkJFRiSHMgAOcYxIJoiQSJek+IlUaTgrBBg6wgcNx6IRwArCCIg8o0IFB0e4sQGgD2sfstj0Yi/vtsrpEq52XqxUx7wXavU9R5AbVfbV1p6EDtGWnJA/XVOMRsvo8RlPdHad9NxBpoVtpYHLL0QrVHnveFe6uwPf/7jyBq5c52luBaALJx8pX+LgSQAvlHBSU/jQISHSdPDXyK0T8EDNBpjzkeaygcCLzJqgiKV9QtldXCkW9eOkpVFBLmWjZoyokvMYGYuM3q7LDGjTAj7sPXGsYBaVQYdkTHmY1/zyKJHrVqlSqUatOvQaNHgpOvOwmgbx4I2vWolWbdigIDqeB6phIgQHjoSEEYoO3GfWG+xmO9H2b14EtgH09CwceqakEMmDjtbHwH1ywyEvghjwO6F0GGbeagAYru65f6TdFf8NxEZpQA3bCjcYxgDMmoUrc/1DdhozZ9MEhMsFlbnKRv254PFwOt8PD8DLMhvlhdVifRh0CAEy4lSj1fMkew8Zt+fiWtyg/Gs6H67an546+N+CsD3294PDnwOcHM058+/z/7Vt/15TJ8MUb+x/6/XXxtmRzAC4jjHlHw5q/XvcP1+XZL9e/HyHSqDHjJkyKEm3KtBmzXpsTI/YX7U0Txdm2Y9eeffEOMAIAZPHeNcAFkH5MT6DhJhQar4QOSmnAxmukk4d0404Pg1C8IcIZ7jem0m8c6GKCWZ7xmjkieMMCoyyyRBTLbDDlbRLDFh94430klk98Z5Uf/ITIL/6x7f0n3jtUBxqZCCT4yEItBRI1aiOQrFEfAiSN+hJI8bmP1LFAqs99ri4F0n3ua3UrkKW5HwRyNfeLQJ7PPVUzgXzNPRco1NwrgSLNvRYo1jyHQ6BkqJuBg+pwqVfwfijyRYUwvQnHv6TWp0PyKigaNh96H4GBhmyOegPVB40f59xGEvqhc+sAD9WxCKjVXrZAVDdIs68AhHKCotyajCaMMM33GHhE96JFqxBPQEEEoqpC8iJOGGL05OS/t6P7dswwoetDgYYOgzlyg98MT+zFf0ajcoEikxZ3w24atFBdBAG0lP/g72LZuroeHO2D0lGazKLkzmMauyiDCdhr2a5txrOVjSChgd2ova0t77MhhbcusVxATqdNzYG/FtlUbXRQPRO4OeZ3jE2LIpfa374QSXm/jXcJ1RlLGxZ+dBY1t4Brn0S4YIb5A885pd4Nm4nTxHTsncPU/uJFsrvfCo55+xh0RpRwlNVFmRZ5JT0a8vqz7YKjXITu0NETuTeLgWx0wlG1ZKwnE8zEIEPVAl29KW8grf5KvdJSAaHPwFwMFyKZcNGCzUM5o39uRYwWpCG2syOpPpQYJcOaFn+YiakAyoJBWW1PdQ3gky5Lyrv1Qu08YS8gSdFMp6Xw8V//1cwtjV/OeuogqHw10Ysw1TOlp8shZnahTTWfy4ZZH3Bv01/rq0FPiwuORTUH3Rr39SnJaRmeqQkMhbRqn4TlQFNuBzh2XJgnuDqHspyu0HjUXsMzfPUKBo4oQFl/59ra8oQdbCz13uBAOQ+7IIF6czUJA1lU66Bw5NYfWV31oNN7ypngGeWsuTqsEsrhFQEqG1WQZkIcz5vH8rsZjFklUsoKdqUiEv68IaVRHWA1ltQdWoR4IBbvBaMNWXDw7xohT2WjEINN7BucggQF7qiNneY8xhDhaJpbjN+TprJdqRJ68eUpZ5QTOoqiy71R/rGSuGKW/zv5f6bK+V+XqNf9bxu3tMVwufyHCz+PSnKjrh9+fWXoqLsUjumye4LFDWIi7dtumjw+brjklOBI+ScdTjXMTJQ4+jRhyjVAOkeCkt30cx/S2Z8qaXHhEDOrpWN7sCJd6FjeIVEmfARcWahxPLsI1sVRRvQyvF1z0BOqq/mw7dXZ5YiDWzSTRl1gQmV52yFfjGnz20KQxu571VcjSo6/lSSUtDza2mZJtR3ssJefgx5bpVWyM8HDYK/wkP5JPnL6UqVarauNUmfRkTOho3FTlGoP6PIFDRtZeBq6BcMRkGuIiNY4MYmDV0ujHNQz+aSb3NheHTbPCEeU8Mg3wvEIObtW60VLwLt7tL9LwT6HZUmRTfWEN7twFXImIwjFDI64QVhZ3NhBFt8eBbxHMZ8CaIe7H1C8xvXMdyxLPb6VIsSjjQ5Tu6SCqgAr05exOiWSIOmZeqYl2yAKsJ4IfFNStZo5LrDOMVUi2QHIrmqZ8dR/Sd8CWKfN1Wr8Mskb5eGEuUnILSj6pq4YSmagxspkGt6pTX8GqCojM8mUjwKb6kdQiWqQsEttHrQP39bBMb/jp+WMbYfEKRvFj3/DjHhrj/gV5E+5wKkhbQbvSCZBg9oF+S042qt+KCNAGgjS24pSDB1vg0HdlcYmpwORmpccTd0pV+zgEtazSNPfQ0pIHnElz5rKRywGsg04LtCsfnVCrglVCXW2UwSoJrdok1FMXuGCi+3BkEsTB73xIylxRo9pfLYQYxLuUC1A6WAXzk0miNkeiw1OG6sUC1JVAcxx+9QSh5gpb4ljMlXlQ8qQQ3dgkoicYMp93+rZewvB1cgE6qFuCI/w2OaxiJkb+/Jx6REGfgqeugr5MzGoCXlAhbvvgpRRatUGSqa0aT40UTVEIniStK2KkQNSWnadTS44MC0ZcShqn/tNbjSpzhJPWqmVtdIahqMy4JIurfISwFqdDknlN/ZkJWaJOfPmu0hCIViLEiCXeDo1fx31S8zs39RXB2funyM/h/4qJvzk1FE1AlLSBoRckNzDUC2Vie0A3dVydpP2+nlQlXWLmsM6kpxf2qNAnzxXE9I8zbaSdNBbUmBp9qN4v7SdxKEPSQw7OPKYqmGDHU1G25UrXOzQT8UESQ8gg7ZI7KplJNU1l8Ei8eqUd9TGu/Hq7MDh3qFLtVYpmTYB1RVu8jGGn+HIKixbp7pl08klbTB60qEpikY9sjLo9EaglvU96Bz3EvfEcLRjtkf+1rba2RopIJY4orU7uObY3Y9SlGnOR8UZRdWYYRWrEpkS6FgkfdvN4lxqew4RQe5mP6W+wnEkhvXYbXxIZd2qOGV+DxkBE9TT6D3p7Zq2VzJUAseOmluQLiocOOkAKDVWaXR015dYYhhgYrCcD6ml8QGDF/GOWXf4pN3DFIOvh2olo92vyup7stXa0MvaZcUB90LXMpfiqT0HdGwvKlR7KYetkJMa2zJ/eArTc+pPLwuQVoRD7jxII8nWDhElbFkfTa6MUhEyZ1g5yvyhBBlM5pzxUDZLT/37WD/EMrpTwTbt4IhlG7ZotGO0+OI4aZ8Go5MwWJcz21FJpnoSIFY/ccFOPVCPGOEsSkbF/PQIj5jGOrVbVnfwRTqNq6nNasQEQSYH7oLXLiW31UgXpk8J44vqKc0GKe+BUadt3wUGAkJHB7zFtQeGQxccdSieReslSPWf21E+PxPTi3gAyczhLgUOemFaBT28Nb0szb2eFfH0QV74/FTUWTUSxGVUnmvtGSxEF+eUJztVfeYpr5KlNEbYbqQ/w8UBwJAH0HamgKFli1D0/cDgt1aKRsyIiBkajPOqYfpIH2OmzjUXl2DjQBcnYNPzP23nDgeJTLHZjvA3F6eZS+qL+hBHp2CFSjh9r5hEHI5LWf8yYeu+fiXuj2dEpxTy4BSscCAS7mcaFpIjOC3TN15a8XSiiv1d5nw1J3XvVVdSdCXBLyTQ7X6UP791na9WoVPtyKsOfHdGN4V1cnOIkpCaGROZGQLYjJzIqtrI6Io6olJUVVV4RG1VQhxWw8BWVUnfSk9FQ88uQ89O+1zrjciqGmx1dYKSoDTFEzCaH0DKetZ6qpr6NipKhta6Pz/vyl71JjjIgm2Mo3dThbeljyxJqar/UU1W/8NoQ8MMt3tOGvIR8uHF1YdJ9djPRUuCiuyQgv0MsjKrmh7gbl1DWxUY4ZuThDq3YelD8tGWvyGgLy1vY6imbeEGLDOpHO7hsJgJURqr/sUfdMIUeQNS3akvcKdANyLxpG6ttwWvR5SKf+OeDogqLHnnfDSKVObzyPWhfkSuc08aOBScttLk84hUfq/nmw8c5a+vGV3LuuaOM8ilM73oei1b0HiQOciMcqb1WLAxXFpjymrKekl9Wf4AqqVC9FkHJbMIdHx1e6qd9XNg5NrO3gaSJT+J0MR/vZGQBOTgYj7stSKQKXNVXJDY31kSRgv+kF24ebC3cBUl1sW4FzlLSg6fQRYu7hOXE+KiplBr8IY64U2sYRs6DULU6B833EN1i/QIcale8TkFiZTnqB9vXuxNN79muxhd9Q6O2QgmRCCZ0QQ4jJKJnpTGv+v9oztv+iwCmx2v+PFGND0YOBw/gIUOqldmXGhMUkLkg/zYNCQBblntjGSPaFO1s10v9n8avPBleHDEAF69UZnZrVe/kugkTRzewS6vfEa97f0yw/q4iTWYFOobntaUn1ZEjgpQEKYF4W/NhTyv0Yd/jpcJkcNPVxmmV74yjU6gZf4ppenXaNNMkCyKPbn0FNpK3wWEJHdmZqV0gZyeMm+7ch9v5jGOnDmQHhB2JdRa3fDkj3rk9+T/0vjk3+XHvmFPPPktb7jXunTtve7t2X9N52URmJf7Oyv7Z1pSZER6MpvtCdeYGG/3KOJiemfEJYDQapiYQomOZSg1yG6ZmOa28yKIOPdT7qhorWaMNs35ggvr6G+bbL/MCjzP6ah2FK4FBKZTczOTe4A20vPvgNDZoDTV5MABkCq/LlcqJyNXIgcCLfEZqKciVoFpdFmDesA2F/EViFPTiYjRMXd1dPV1vB/kbEJBSleHOp5MjjQ3lda6OCtr5fRIdt1PHpfS7wyfXh9tfyRcLaIbr62anLqFf8lc4Y96mu5478FlTWmhS/jNdM+EJUwrPupOtsbzm0OtfvTfGH6QXPh6JozbrrScJ8y+FHD8bb/cUsVwggG/0BH0/sMvm6XGSpkVD6YkrWxDSTe7c+a4a9+DZXxyDkByItiaGDTEM0iu4ZkhD7Yc//CjBmoBQ54/eN/fc9+rwOayDzexK2zg39L2rRpGqZi8+EBartu5PKFZIS7+CS6kU6AePnpik+v3e5Sop2jiixQhuoqm7aMozvXeY41V+Vld4yx/kg4Gj7aU1KWcbDU7WvOfnqsuEoFnZqNFInyV/QiTCN5nZPE7+yH+3MbPICCNKvWjWSgsBAw5vWhq2g8k+yJtInsAQ44pGvpsA+o93SqOOAdyC3tVlhAy8kBF0JFz/cg210yPCDdP7xAzQPhtibvbpfSGstK9AlbQCoPe0sXS0v49hEVCL/h99hL428m9tBO/9ybefFp41hNCTIjwS8uEGDhR0dy1v7/a8ZixbckIvvJrm+BY0FLoZabrhRNHyKcHKnr6S5R8k83m9Hp++unpHLzlzRK4Kve1aWvrXsVreu2rvX03aKXVzpKkaavJDXQ1abeQV46TqbL0dQ1N9DUkmZmnCHqM41HHOAfqm/OfSS4K9QUz6i84iIkjPTGOf2D+8nwat/5Dv8AorzwlLqI8PxllC1r42qlofn899IsIf8EvSmxaRteT6WtFppluQF5yPm0H5ff4GW+Z9FRNX92p9/Tqd9zSLDHteYSAniPjaOrOBVJNenBsCSkb+ECP+P3O8mhOA355PmvXK+xFQG9UdVZuclGwu1FWoJPdy0Drcvdm9umtLDQhcfhBb1RfTnlOadBspjeo+OCnAYPvBgx+qug+qFaSF+EVYN6xnP1wEkFWlp++LWp8WFre0Fj0DuL/n6Bpnjw7SK47206egNWRk90XG/Don2Vs6T8vNHH1M59b7+U8Qm7CD/ByunG6sXvzNnHWWfcvykeYXlt9MTG7sG530/7m2uuFlxMrYDsd9PbtGZvUMz1npmGdh1sFsoXnUwTWI9iKfiQBd/t2N2CJ3TkBQNsVAKhoMpkPe40M8E5YoCEH5vQGfmL1womKR09WGi7PPrg0Ww9iYdkZ2RlwuuJtMcK7BBcPd0eHRbeWvGxLqAXqTpuelRfB0ybaRol6j5A1YOD7aIqKLv+cyWvA+jXRIN+IR2kxVXfYwMsK5FBsP9eu9rxyT8EF1wEWKFLu8fHLl9BdNE9SX8V1atZO69a2Rae/AqkIm3Q/WqMmGlOf6gEbtwUaPjhT5PVtLjaj4+Mb2sYmWofkGMekvJGec49yn4M576+9691P3cKFKYCFOpyXW+zQ432hn13YruyxGLJW4SftnAZi9gSosc+zc3/mKQ38O58cPrVzBK2+gC5uGYi3jtUUlPUwiB3He414ZJexpXEx0ybG5sFWfT2p3v0h5UmdzDJd5raIsZWDNWGLtFUPFrz/di73Drkl4PxquSd/fvrZZ8lGXN/CzTetITYrO97M7UHP010ByufOzPHYpntF73Xz6mKzJ4BDpzMwa9AAFfGC8hK8HdzdjWMteNXRFMACBfQo4pRhrmuuLiHGQS7OwNEm3nnrpJRAxg9haRk5nUd4rqtuIqKZvwlQvnr5B2uUXmrtq2WzUtE/4/MG9JI3MrBXiNP4+SaMrN1rFFFvsPC1xfjPUEa8HQkh9rGB9Paj1MH9rQ65PE6KOLC3iWNig/KfOSOIf67GfMXB/xbjSAusAv+Zivx/LyekzbMK/KXg2qreJCZVzg+31MwnxlW/AdlVth8r13oHPYLpKIB5W4vz80h43r/Ki+1Cd+ZPEWt0MjDa6fXRBZNgznu4PjDY4xZG61IHmLcUGnc/6sA2/98uWmrBVHSlfireILkspnAaLnllZAl0yOQBRbwNFWycUi36BPjPnrnroX1MokJHw0srermzqWv9SQZVLczV2s7TQEneUZ5Dql5P298gdeshJWLYxKPCkkJjGu9CcAzVhWM+MtgR0kixrIiMLHdQljK7YnBIZnzxIGkQC4Jhzs6hE41tz2Cgh/Lo+7NpxUJ2ijgZPv5e6b/95JiCeNKxKPEnoFBy6JYEhb1NPIvVS5gVLZzFXiHexaRzmaX/ciZ8f/ghfs6K04Vn9lfGr4zXLjxWnLNwwMzSf2XopPCKLdM8jwJjFru5w92zthddj52/PgJiWQHZJkReneNqucKR4OdKFmhZfzz8ZTp1+vM40vFwuUWQlzAud2JkrcqwymhjFIV/JQvyTJmAfZoJ+N8jMli6+a02nbZ7Oy9OjMvxEsgCzcvQNflhOnX6y8jjtpWHAqDxha6IOhen/EC4Jl3l3GUNHSfzEqSk81WCWsLtppJfvWrmXhZQW18D0xx9jJlqUfd4qETYpvvTGjZhQgafkY7vUHZbzg6fnD83/fwUmXuVspTJ2T2FyWx/XN5I63GlfZcnZbwABbhCdX+BCMQCRztfWViCQw9/PXj2dGGquds5NMjdMTw3BIe+XQgKHz2KIifGisKjY8Nj4hPt80dG3cvSssJj0zIL/foHivwzsiOJWbmuZS8G7IqSSZGx4qigIMJUf8Bqf6DHZNCww4C/h2e/370LcLb1uFDWjNsYJkShUiFYQa5XTjpYulI6hJZG+RykMR2lHn1G/U4FpdSmJxRdBX6lWNsa9NC6x7ObirfiPV5RkIjWrAJipbelUZLDuFT7jW430zx3aruBLP+dWNsq+uHFbfTKK0pIdV5CcgnBWvGmZowMl2aNkoelWBhXndFR1ROaeFVbxTsimlGyJ++R1dl1bBUN410Aq2cyj4Fgrmu8HNb/FBQ/6+U2lBQVPp7scCM/ncwvqS/PTLMx1zUxd44L8vR3jjM3NdWx+x/ZUHweXynDVll8vqGu8Cy+qrSEvaLoHKF2hGqkOhSmMkQ1GhlsNVAdHxpUHW03AMeeZr27emF+4UH27lV+DS7CscGKGiJCJQz29eFx0bnJMZJWx7VMAq8YXKAme2iDobSQOUis+FFx0aW3wWgO0UEYcqC8klL2moKzDfUF3Ozpp1v3V+2kexy5NREhQQ9kAgQgV0ofw5o6ReFmsSCgmx4UKCEGsqIq6pK28SC4wVlCKgHc+R6HjHwnh7Q8R6e0TAfHzMz/R0RV7oiJq6iK3lTVcFFVgYvp+i7ZLkXVReHZ4YXVHBxf5HPkoS7PwOXKcRc7RYG/knfv3BUrJFSl43JD3RycnHQ0mlJIwJpxX1dVSZL/2s4dMVXBS4XWZYHBcfn+DjcVjWWPZVwkOdUGE6MqQ5yLrmlIyN9RlhDyzEcMgX0Ilhl4M+GIsHgAlN3P9x6WyuamilfjCKYxdelayjMUwLyFGJzuJu7f7Azd/00mwJAhbe73yGi98ZCQDKdbc06kWRV7kLBOmvpCN67+ssKdiYb3eYVGr2+FWXvjgbbCpuhRX17+o54q1WJqr/CT3soyjK2lp66OOcFOw8bSU+eehStiCXerwfFiqIVPZw+9NYerF8HVNtjDhIKULL/oHJh51tpY/NDFQ1Y9rUcyfuzXrqbD6OMBXsyWwi8tV29iyJ05reyzGtnKR/C9emz+z7jmwVBZRVNJwzdQWUN5mq+koaJpVdXq8iy6yqyPuGeZl0zafNLtoDNDavVsevD9iqSi/0QqwislY/PVKvGcPNHOrWoRVqaAFlPHzQgeHU/j2wGzsc9NTgyZ92j6Owff3tA+2s01vBgVMGTKY54jycVZ/kHFWbEAz1AMxkd3qW0DLcUhD0YUhVTNH5H0YtWKR5o77rVdMbmcxxJzRcTZw0xbWMXicZp+3D2j+FFdc3snw7e8oLHMgYltldFbMUuqftSQXbjauLCk5+wa6OCY4HqvE0/61PbIq0lbQFtao1HfcXILdrzmsE2NTzMz/O++vx1b6H/bI0u5UOXIwbo3kuCqo+5oKoIW9sqoY40/cSYqOg2EFI/8pM01K/L++5oUE/suzH8pJt19ezQ8vNzf80ZfYuKbdGXr7ohI4w7+W0XvRR7GPw5TtsFGMh1ljFc2TS19Wp1Y1R8WkrPSBXKThptdmxZiMZHcSEhC/WAVfhwwcr7SgX+X40luZpeU04PtXvblyhQF/Vsipjjo8ahkBNuMvMzoEu2zdNNvX1KOr35j19ah76bT5CCXUPWWAnKE0fTiaUsooh6RfbKHelRxKnikgFYzB6HsX2YCM9SJNMSz/ssqC65lv/Nj4Uuu0I9mQUnmpKcdU7ILs0tj7zoyKjbVtwuWfCX+/94Sk+OeeUvayNj1EzzGdv7teY9ia8sHYh77OauEECO/xb50l7aRsh7yiJmnvfG/C9dZ/Dohrnh2tKNkLj62dEZufNYms+xIHPOJEGIm8Nu+p8/NrM2ozWX8xuIBPD5hBkHeJqaBPg2BAV2BAap6N+TkBfjlZa3lFAQEZRVBaGPeJTDa9FKrpVTDqUtFAkFYZ/8Es3NeFmJnz1y5JX8NWDfZHZVMQ1FpxC7v+5bDQJfB6aBkGo4ipXRGgI3lECSecFA2DkWl+lJs7ayfQ+JVByVjIiqHQqlwsZ6cv50bQmqFs+U44MppDNzcTU08Xcx4DVxdzc3c3AzhNC+SmMQXyc4XlQTMXu2zkGVMRpKQZChztf9XC2d/bUXwp8PQfa0Tld52Z9mL/U77/zx1HsPQEtwS1xLSQoc5xfXFKYaLvdSFx62CPIJ59CAkLC4MpFsS5LPlYWTu2FLT9tHnTzzqJLnygwU8/RycnM0XSAv1Ko2WUQhjE8Su9mzSeT5JKQc+HL7Q0N3ZbHdZEjBzlLlngRRjHMHL0cV8kbT46iml1KdRxEuEMJrPJpQ6HKgfYi0ferUX0wUKZdmNSQn59VCcXJ7XmJCUXY8UFGB74qPRra19CVHoNsCNDMfvAs3LzhHOtYW1fhg7f0xp0M7SWQZwjxBIXYwyO7JVVStzSjUsmRgQXJwSE1AVgrF9mM76elklVQVpdTVVlTrguZFrzMYI54dKhxF8Y1L8vItyoxKqKrOFflz46uUOuVPolSssPMdp696WUtcIvnMXKp40pVaZpg1GBBC/j6+vaLz42KnYn7Uv2klOxfL31Tv42mf5hISqKoiDwupi0rdVxYRF7oqF4k2b8OHmOv/1LY/vTvvDtz33k7HzTYwLDSgrDo/Lr0Cl7/5RIvvag6xIq8BC80t3JHU0NCUl7urIy6qow/BDX2R/8eCH/sKLD/7dvqB0/Tw9bdbyF/8BbA7/B8ACfv5RXi4s/FISFuuq3TPy/xld+aEw/7/MKFgNXAXhBB65quZ3mSNchXEMzjWjNmffEVy77YdFatbn0cri6o3s6doSBL/VEMh8d5R8AGqv7OXj7Ca4f4GMTaYvg+n0kAfMWAUnGXGbq5WubLETFC6/WIYgF1AL8uFFVasHdK2u0/W6QTfiIbHA5gvygmuF4A/RnOkT3Way54spBkO81cmv3dOk0ApZXJgOiMn5By5dK/gTcmD6RLyZLGPEyQCumQpztelDxEyeZUacZg8r6CL+WCHfqB23tFDzijCT7c2n2ArJAFtxcrcVQzi4EqKJ6RNUM9nAiJOvVkoJxLqiODYDRAJrtvBsknxFNpJyCU2M1VykPk3yDYNVohi3tQoHgVZp6OZCZDnjOkFDskq4nijcegh9PuvE5JKvQ50g+jd1bdeqZ1sdixjTOjCv6diLvkJ1nJdYR4410sawNoJ+zUjOShINpFgzFZyEmXM6HtqB8mpjAeduDMj/r/PZkuf+D7hl/haureDS0u+otzR8X3bZVuu5csq/2umBcedopEW8gHvF349HyjOhk4pHKvnj+bNyaIF8NLGTbM6MmQDumb/1qAmimZ+PBplWJmXh6LqSU9bIxFQDfVc/Ooi7qETTFD9xKpmamfyj8OaZZEJ1OAXGegvRs0KesdMf8OOk8lvar+fGgFrQByzkYE7awz8Q118VeWAeDX/e4QBmRp+xoE2+m7GMlofvvD/oaG9B4fka2H8Se6HrFqJLTH+wgH5KKNfdqN0JIDb2+w0mUSZMl/ar/dZgRnxZN8SfnmUeAnHhOHQfyB3h9xrb8lTF+40BiaA+G/tMsBstPAFki2qMQUS/5tcNCQScSy8XOQVfxRiEALnJ2ldCUowtWCR/bx1fBoCnf+puD8A7of3bP+v8X7X5l3kBy6EAAiwuW1oFsPzgUpZe2gHEfVPfVyJbQ+Pfi3eaa0BJkhD7gF+HchvzHPsXu7Bjn49F5zN8RXCq42hEmtMpgjdPSik1+KfGC9Rhhjki5BGFOh7P2jY+iolml5qNctvK6etiatjdxQ1O45ZT/UftEOE3bqvtRDIu1wZeAkdbRF7T2U5EBo1LadSY/qpN8LQwvoPx7dm69oGa7qbVQwQGv8Rx1KnFcVKDBsR6FEuP0M8z0krZRXo2dGVIpgrQZACxNubaIRKbn2lHsmgpZjlM0jyXZTtIjE+SYmfuBjMu9EnBAg0J7SSxU5jouEQW2Q64r7UQXTsi1rKzExqu1A+X6jlOatkw28nEF02OfXiKPKIS2pJjVzEZbbh3ISyxJ723GZchu0mFSaVLr173282DSdX1rOok5z8RfYdVfiCXH0hnhKAmyqsd8skpPf7wplGBVT7cT4/7Y57eJEJrEuNezyksAufPrcCIunfeVFXdJ2HqpdFkoZ1KqYlMukBm/Ja/KOWwUGBVA2qzUUANCRoyyqbbUiKXJc7FH9nO5zSHfEcye4+oFvHDWEbe54KHMapyEvmBaIey6DQ17eZMJ5Ccps8yPphAoIU0opigjziaqITS2h0IHAZOJg0ztFwK+wTcwrzSCwDrvIzxyBPmHfMMp0JDJH6JwCfgTFgBHAL+5BPz43dD42VNaMz8iDuhIZIjIvBGKEtHgB+QcNKFyZXG6iChNoVd1bfMfWhI0wE4A1wvQzAyX4bCzEmN3qWmgWUYfPyXYZ1S1F1muqjkufMQgMCRPQfeuAniJ9At5KbEXeAZLuxWVeHGxnWjrMG7WLQ1mFfOaLe47BD4atnWdUN2Z13y3lDgbc+HC6sgr7+IwIsjc7PHX98u5CYJ6wVv6hZ2bQUWvb15EHej0/q5rrPikXjbcGDnOhsJmr8hO7LRvBu4V/sNalTIU6RBh6Jrts38i4GTzfts3QMAAAA=", + "headers": [ + [ + "content-type", + "font/woff2" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/font-roboto/vPcynSL0qHq_6dX7lKVByXYhjbSpvc47ee6xR_80Hnw.woff2": { + "data": "d09GMgABAAAAADBAAA4AAAAAWSgAAC/nAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmUAcg0oGYACGTBEMCvtU5E8Lg14AATYCJAOHNgQgBYMKByAbzkqzoqzvGjeKSs5nUZTtzWj2XyXwZOjNKyMiImBY6zWKNWA4InKyCXHjC4uVkc/4jsPk6tWO0dBIYh7RfvvZ2xfNC6JEQBvBRsACoSVa6XxUtYSUCCLyUMJGxQYVRREVMb/RPwqiaO3/++ju6jlvgdCDQkS1EtguC4OoERR+EIr4ZoID9KtY027T2QGFC8Sv3Wdr/ZL9V7XGmSLf7eVq1V0NM8fgyzEnvgOVQLoTJHeOBOnpy033erpXvoAXNLb//7rMVtfPikfHmhw/mzsrxFN0S6eXEzdVikojDfjPtwysJR4vzhKPJzAOEfRLwFWQSiyarXJStOlSlGlLxmrvXfu0V2RVV2FkMjP5L5lJPmT3mHIAoFJEoSpsHaOtc/Xd3n97Iqt3cLdZiriXiEgIUqQLI3uXfvxtVWfBTplCeE5blssTmOjrTLc6eFqS0E7GBITAcXnvmyMwrLEPos8VEi8eki4dkikTkiMHki8fUqgY0uYowhmfIAgBgAWACwFAkHgIAMMW+5COOsbUFmSvjI8IBtlrI3yCQPYmj6hQkEUCAN9CU914dUQo0IBckjoaBEapySreYP2mPI4vu7Ctb1pjaFwYc+NO0+4EQcNznUNId7Wu3T171HjWc3pRSfcur/xpY6KxduwohWEOw3scHykWzHNjqODCuJM1d17PSlpRcJT6uiWhYGIRWGOd9TbYaLMtttthJ3UatOy21z77GTNhyoIVazbsHebIiQs3larUqHXGqDHjJpx1znkXXHTJZdfdcNMtt93zxLynFry05JXX3njro08Qjcwh0SJuN769JN0jCRFE0RbcSOLTqq2JPbW1P2kQp59nDPOB0QRjHIQN7GZtnzcc8hvHvOMyBRbng+pIqkODMRp7YxjHBM7inHE/zzzALB7iEeaMx/ngCebxFAtYwiu8xhu8Nd7lN+/xGz4YH/POpwp0rc/FO9tym3IYR3qOINPILK28sjsf7c2Ce06QKhgUnwpMW3RYaEiZYx8Rp1wTsnampKyXHjM5KZGfNiRs4nTw2OclDwKAGFj4IDkbT/wahVo+0yTcwV1MY+bU4ii4mKE+iXyGeccIMMZB2Nl9RXGKV+KqItSg1nicd55gHk+xcGomw3xkBGMchB2K8RhPMI+nWFg0ZkLMYds44aGwKcUS8Aqv8QZvT03GTRY+qlGHBosLNWjiDu5iGjOJTKYUWQCWs7ZJmkMp44Rp6UW8Al7jDd5KVJ0QW5XLDudLpuX5xOy8oZOfPIotI5jkM6f8BknPcxyMvMQmjpO7mgmT+mD7zDmcHK0SQzIgKbeZn6NWObkoPxfU5z6kKoMQE2zEtEQC5C9XHJAnLWTzHb+8lFfKCzyNyx9cj9eZ9QW/5X1Fg/eD1l9g+WcM4tR38iWpaXdZDeQ9+jhY7u1f/e3J/QoZt+VFE8ou12lY/hTr88U/UW8AiHfCtzb8ZT/LTf8lCqG8S/mGH8nuWpe/N0PX1F2k2IzqNnG9f7O7kd9kMe/zenXcZZ1jyQsufj5LmYub+jjtOZ2PacXDz9W8zFdsALD8Hi+qpbhVT4Tl5rxKJY3elpMpzZnfwhHcFGXy3Y2fIpa1Zat0uMBH4oUfveKDd+j5/YQNll/vVb7lyg/oskXm5F5K8WVf6p32MV740dM/Cc59Dh/cm8JythXCbrzlmPwiBmcnet7w/x/lX9a48Gb1A8jzjh8QPFVibqx9WubB9/9rvuVwfdmqbvnK4FouF+bljr48mMKUDcuLbrR8ymyeozMcbTn7skwOe2uvc73ivkvygS7xe3kV0fWy/JI/ryvB8rxQZtmeJH7LLA+IMyHchQn8RWNrbECyyQ50GvaVifoMyTAGyzMNXMGKLQX2rMwxcBVnrlYrCFynUp31Guas5owFm730lt0xZhQnhJ22JSmSIjnIWcSEtSxjHfOsZ2QDk6kxw2Zm2sKStjOyg8VpMJsmM2ixrN0sbQ9z7WWWfSxGnykMmMowJrGvbDSQ4tZIbMCYLVPZs4Aj0zkznwvTuTJHgaQe8Twp1ZByRz1PSh1YTgPLOROIjDqHcH7VeC64jOy625A7ZjDcmwJZ7ptD8ThQwhMLaF6OTrLkLaxeFp14xPPE8cCS+FJcQ0khj6BCTFBjKduZsJMJu2IcxbIxiE4SJCAxYhLX1ipuDDlIEqlEmEgeZgdGDjGLQ4ysmAkN0ST73OERiogJxaMj5SpIakg8EiceiXviTkNKgiiSUI8IohMT1G4LkG6ELRz/zgdkl3Z2KV+Rl1kbM4ZjvFlQD79AXxFMjrS2jTnHWOuU7DnZwpRP0bHnMyzMcs6yPihNRFQ3JSFnHWMQT0256hZhCKz9vzuTwaabAvw8QJ1oz9hGt0SHRIBll6EAGCEvAQQ51/AKgtCyyCg4tnEWpsEEAzSpnSTRkh0Hyqc204Zg1u5Qno6ypXZpuR2bQPYVSBaUBQIUgQF+D18wmiAWNA8D6DQwcKj36u3B0K1Lpx69julzXH87OkN2b5+QIFKUQScNOWWYCAERtwIALmErQwbkZ+Z2gHZJw/B3fPvbEQqlaWAdv65dYHiqhSEgoLw5Bf4HvquGDorQiwCAdMAcpHjTCwMv5fcVSlvCAOg6pGYKQIMiEmkAbClax9+z51111xtfLKOtzaZf7U/6013FFWUVFRSVFdcqainqKUYpHlfmLy8jgqJs2/nEF1wz7a2vUK2PFyhKK8p3qLnolt/zimQuYeQiWP5zxfcj7xit/0/9J3pYikQJYkXx5GDj8x/PSiAwi43ADrh2MSSfXh+a7oypk+uRz5DpjrumzbgnS7b7Hpj10CNzcuSeaNc7T7533vvNBx8V+IQFANDhvcN1QC57BYYiUkBSWzGCNhyHl9qP0xjAeQhxAVcwql5FOq65dznuNHAGM3iIKTzCHDLwGAu4g2d4jiy8wGvcV98gB2/dLxL3K5CLb/gdL/EH/kQe/sJ/eKf+jwJ1Wfmko318UKihM5QzfVCkEx/7oEQnfvJBqU784oMyTXELZUsflGuK24rtX1CJHbEzarA7dkc99sbeaMD+OACNOApHoRl34S60VL4EHxzRlTc/B7RCCLTGLB/1Mj43oF+08HEO9cl+Pxr+DRC3IYssieX8I2QYSicSiBjub1G0sFGJs1RQiS5FIGaI7RD3wggdtDVEjBhLR0pBboIDoEgknIZ24jAchLlpKE9WI/ySrE5yqEP61Qg0XYwA+K6b4x6/4bGw7FpLNLCoWacXj+Uo65icZAV0wv9g/qK1a+/ptkSmJNeyt+OS7MU0bbTOwCiw8Y2byrEZLdngAgM2rdTGwnAa9TUwuyUWY/jdeplHwDeS81iWTnKeWpDE+IA+GTXGCfMfp85F+3h4tyC8nxpXiVHcFWfJoZleGFEVR4wwOeM21siDx7x5HZD9mFKJjCClRCYmX4vD0mRHXKyAYHLt1Ve3XuZm2LoYCpQycIS99jSgB4zkuEKABrMJamFAsTDxzmnH3jMjZRkKT8ct2WyZtFhLw2B2jhH6qMxLE0Shy9693ptc+baB+dtpZ28Td6DiR7SogHG6iKkmLajt86QvKdDfbx3KePzrFl9mYtUH7HnRQc2KgQAj395kZRv/qJmmItcKPFdtY430ZuR1S3PWbJIlGeahAM2IGuyjfqOlQHkDQd5aqa2qtTGzCL7/0r6w9VmvQHBoDMob25vKDGmsideq9jVWNTWfdwlkkI9jZ5mr7M1oJq/9Q0ZLotJbxWRVqBxWvOQCUU8gCi2u/sWgyIJJIXo/ikpUNF5lTbJrdhc0Zqae+b8IgV2iDkJ2b57j9mZhYt5CM4Ve5CQBKXKntBe9DxSq4ROdKGZ7DhifAw4atwrXNtYGgdGv6n+l8JD75Fz2QRYfpVMsJGXuDLc1copPUsKVco8jSOhGDPCa9o19fr0+5XRidXHtYUyFNmeH/nbgWzi+1DC2Wf0aKwtupdXh2purKltu5mbaUzb/wJ/tDB595xokRQOCU3CuMIAylGZk4xAMhEMurw5vRFwEUuNbh7Kmgpb+0jWIzGWuGpeb4V2Xl0Slm+w9+kophiUqSycVTekL8FDapWZiu+3CqGDZaJifDgrPD/Jc2gpRwTkYliIsXKqSpLgZIANcJfPFnCqemYKR5Nropqo2iKKtMR0G2a2nS3otCUc7Ye4HqhlqNMjGyTfU1tL2OIQJjd5l6/OKtIVqGESF2cCCZKzmJfXJ0UPb4NznlNf6p5X4Kwi6b1xRSi0TSITurGUv+QS2Id4qiXsBvGRhlNP29E9jhcTOKcUnUdP5yyXGM4dhcgKqk1jt+5IQoiFxJ21hsK4ngQQpL4XAquMzSZ5RQEYhxkNwFGSLoR9LFzt24HnWKqqkmxfSXPeuYaCWuoYXrmEXNfkb4VzMd9kSyegY/Uihij2+t3qZ0xBv7JqjfATQFGECXGBQLygbZvhYYIdciw8KdG9ZtLBt2Gnf9Ud3eocCjINhtkoV3fyuppgiJEhqDAyLQrPApveRJYlBAxAtHlAYQOFw++P+Wy9zl9m6fyWJtfqe5htfpCxBgp3MXZZKH5ufcAVHD0PxQkjFvbWx3QXf6L2FWmKJvezyDaUqh/4ApynK93jIOLcpPMPUATwrD4YiJkaI5ue1axchmXYwmhRdo6TUTPrtaa/Jn8LDT/rb6SzT0DeTYZYDM60Lz+/OMP2eIB45yl1y/H6KMLy8XzkE26URQVzDc9PUq+MKThyG/lGIB7AindfQNzV/4XmlG+ISlQHIYzkKPID0f3lEWfPJTF3ZR7Q7U30gSD5QK+3xqwe1DXDb4Nz+TPGEDBLoQv2XA0f7CNCqZgBTzz2IhX2lI0gIPMOg6BiTYS/lIN3uQxuTOXScyqzkCKPaqmt011kgAXbUXNbyKQpSbYqy/HiDWqZtoFDstBLjBFKe2M/x9v4BNIKJQIRiiScyrtS0AlYyH12t+H9ALQ9rSrBPH0SNXBA+HznUhPV3KV7a3TFqO5KtH2m1rV0L+TvJt7E+kW0safRPVW2h1u0Yqt5Le+qhe7ZL1/Ey03V5/3DKDNY+8alw512dUVkNwrgHDUfnZDlkqI7nAvmaLru7exdcPci9+XdMed+7OABjliVpnDTmuajF3mvjjT2jhh9OlbmzWuSK52v1L53tYrrBP6ggNY3VoUZQH8RAr50dOCPZM/6CUZDQdgOViGVTTRuQUvRd7v0yDiXRov/+1svcnG+uO/yYogFJ/lf9JccQEY+gjKmKqs265pK+gZlZgoAQ/KakHBRH85rafiMsTReioDLOYxU1Okbjo0dJkznpFSKsDiCykB3vnQzIR506ydi7WUyiLoNhA9LHwha/ypgIpg1q5i5FAPGaUrdIGr2LJt+rMY4MDg7XPK036QppIcJKd7/UUz5N8dqlr7R3sSdoUJqG6Mi3sldQg4M5KbJwnMM8bWk+NevdUVsPF/dBBpDM12Kqrl/o3dneDK2Kpx7puNMTD6e2mae+0xjmJBB128pEfVuLA99epZSbFyQZi4PRpPbJxbhDcxoQMYl2oVszH+K9PCv05ofs/WJOa6KOCor3mGY5mzB3XH4JW7gYevTs0eee3JjeyR6+lbIo5On0op/uZc3miPJRg7JP/m1H3Af9eysofbtGodLPWpTkrVIXXW7JHZAqtjczHn5wAXHA18CGh1i7wm1acMlFoCMdC3Amoaaiqiird/MnF+Z7SyeQfLKVGamYsDxzD0wtT4qD9xspJa4vDKswRFaUXBJ1wl2Lh+ZgaK87jQQEnM+9CYO3g8D87seYFrJ6FO758bvaZN45wOs4ARlYReOQn1M8GqtOQJxHX21B2xkihgcxv4KkC58uBNfqsi/eUgk9KU5lwi67BG9y6nXdt/fSnqvfEGRtM2Z1NOXtFYGRLwRt8G133ySQByexjzOQqbwM/ZgvzNilNoxc8pALhi0NRxlVEufkJOw5Td9mxtU2j7ngXpCuDrV2CgGL33Npn8uellCLX7DycKn+7+r6sqr6N1J5yw8M/SlVwK89Ul535J9aqaiYpCueSSrm5BXftL8EKrYr/53m8Tds46XQ7QJS/3U32VMZx77M6Hj4cFBy7ZOKdQuV8mVfOedPUSt8m7yIMFSRwQyl2Tkn8oKLY7TrKZ6sY69mJgRK58qVL3RIdb9njIoYGVGN0SgFHcsCxdmrcbikh5pGNuVkD/cm4ThU3kdNdmOVjhw/kEKy1HP9pou8vRmWNDPKQR2fA0gP+fgwLJ+QE3HxMWoy+QCraHggFceiil5qGlmXVXCyf28KyeKAuw7SR54+DEuaOcWkSo4B8voJZcH66Wm4S9zf0wAMUjmjd8rDD240NcykhjGPPprqwDnoxDFqCq3vZkmFx59JjjmSDW2y/9f3Nf28YRTWnzuNJ9DrFz2m2UR1JKe7fyiRn8EJSi6m4qdUGw3vgTrfQAuGv5uVjZ6NMA6kfAoO+qeZPquALBPFN0MivOOIuWxiU9SLuHgK+uduoJa34yZhV+TgFepq5Ma0B2Uj5R+nh2Bjo5lchD2K0FJ9jR6Qjt8YVRMKzRoII3t8mnBn2oE0nhd30C2VCNvmVKN/SC2I36LlWMFPPZShtCAV7gEbO9gFCgP5FjdHVnt71LVxzwjQlP1MIkvkimRqTornrFqCHwrzsjXz0DED/yGPf93wE8+92rAt6ag6RbUDHglO49P/Uj8hY5rhqu+b1dlbn5JG8cjvlN8IE5qh8m87jJibmTbZ7Dg4QPrvPKWQdHxO6e1GJXYkGJFo5yhZ5ON3Vy+C8wjb+1ZGrsIJuUuKMHJEokia7uHe08MrYYUIC3xwBj7Ryi8cAlZ2wZ2XoVnEMH5wj9PNPX/zvpPz/YnzIIu3xULWcAErhhUpzApE4agljxc5BNxT3BcTaARPP2UP03wLexN3ea7zOE6NFJuU/jKFx/DCc+rgMJCFsXnhOBX31jPTGDHpWWm4AGBn+ftJ2ZrLWlYjWlZZ4jHb8NurW+5fG0y/eR2ePD1z76HsMS1hcYh2KhpGF1m8u/znUmLTuB/NzpNHeimx8Zl+KBUPnBWrZ+fED0RjIxS2OQl2i4bEmlZdw3JfzN7n5opwBOpIMJ1jZgieiitcJ7fhu685F6j+ikN6UTX5Wpql7qg3UtWBcgBZWm+t97DQgTjS8bPcBrrDhmp3ezDs3Lc1et/VrTul/5SqnYADWXtpwXkD0RouOx2HqYGcCyveXccTeH6RM8BIqh/L0jTbadJBdWGfIS+dw/345mNepiUzLLYmHCeiE63sFGZkXGEoSsYnGiirlBje/vnuWIjqK1iRDL/AbHcUjBrKYHtEmrFZp6kVikDtySbzzHRWae6XJxmZuB9f+UG9RQTKtehEZyVsIauKNa55iPnvZv90xN2hO12oRoQlbgjs9sKJpIEpdk0wL/nETnegpO74V3HscYJM+c6ZhFW3YN8qtY1yrSre+zfKHVGBLfdK7AhF0T8JMmUaKGnVFGjXsSLcTgS5WRokhYrFM13soh2xD8oI4x4+BfyjP68Oom585ib7KFc01h3v53FYsuaP/Zymb9M3OGrjLxZ7weSr+GEUfJhlmttXQkQioYjZSG+tNZ8fTEcFRJZPlipdR46U405UkEV2DDblVADvTWEP8RTH//fzNVOSOhwi97ysDXpwr5VsVIH963Mg01WvfQ/NtVyStfcfvEZcJCS7K3RuLWa4PR0+uZd0LIoIJDlX/WRk/bXbvYB0QUrpI2jMJJlfTby+NXqwk08eHN0v8zyuC3aLzQ4eg+cL19hDvOmfAR5r3E/TQjmTK94sXetxZK6HvNPlnER2dEhmNFZp4EDqQDonnBUQHJRMWgFgzJvesKhHfUnOIa6nCD+Ty7AVw4wbq2YYmkAh3cJfgLI0ztr6UgpNkP5VXv2PRA35EPl0yVwRriVdbdx+vOXDEA9DcFKoIXmRbqSytzphO6rms7yjz8CDtVSV18qnGWmchhMDlRj2Em3eDnhKrimzxCLkms9a3veG3RGZlsKMCUEJfkEN2n2zAsPBC0a+kqFDqISYTY3/TKulxBhVi9ZxG08QN/DXd9x7Y4z80soUPE75V24dl19IHLzS9rAc3SMlBu82MJJrBEiYiGq9tto19p4IDr+a9zkLpHGq9zhovBb2BOMnVf624OdtfB7PPGdeHmfECkuEKAH3tvHTYGX7g3M2S5VWIXHy9eT3o4XyNqtngN/UItfkqJjtWVC2GxT72b5hsv2PxhbntT/GeINeQRlXr80h0n1TqVlAwohiViBLL/AsZZGXYpWQZSscB0tBAXErNfpPcgM5TserbUWkXVPkFH6AfynQfmL/bboZEt4uJzq4S7Xkyeq5SpyN79XmqPHeEtrky7ULZXiC9Kfs+uWWDA6anpodvBhew+KPz9wrvOn1X37sa9aF+sv13DyxhOy6VHwYQGPQdG66IOy/78ZiJnlwNyPid3IjOVnbuVlaaHck/jYuIu6mh4sflrChWzNt9w74J1Gu1c6Wt7maOGLvtRw/D+I05W+pDf+Lp8BxU0sfU3Pe7CJ4BV9e868w8gbvVuxY9GVNwXsBlF2p46ZyktKLs7AygPpMrMSRcePj++pWZfG/0uPKR7965xKZxB1h0BQ5eQLo2YUV6SgPnc5khwuqbphW7TBZKZMuvuwSSod+9ygm8uBlRPQ1Sso40NJb6pTweDqYz/KvcCT449vRZlfkmvXBmjzIyHys9FKX9QqXEPcSvJ5xixmZT0YZkfPcuvyBQlxLnh6UPcLIfAp7YfXPEw82kwe7+NGDV+DsBXxCt09u+48j1B1A79w3JaW7cHFV52Af9ZUq9toQuYK0oo+6ZvA0bOjI7Nn0Tv2J9YP7SF2k/u7AG+OpafCc/fz4xfr7jc7i424bxG1ybsH7JmW5JrJs/R7vuJ9yzU9kamB957tRrn3emFStUGB4JgyYvwaPCkZUO4Dxe1qY4NCZMKnaca593gQoTo4yn59sfZjU/rAF/q5JkK1JAOXhJyW31twGUbD8+qr8LlyChgapWfQ+6QuvJ4BpR3d3DXNFzqjEVcxMBDTX9IqblsGoB49PctoPSZFMJWe59wvtUYP9LtO1z/KgTxTE9KQdPOwN+62lBZ3F9OupCcRl7FqyOrmbOwKi4L3ppaO4EfcvkC6JBfXbEOV+DYG4B0f1Wz7cffQoDsAt2VZf4W26O2qMknI9BhyfrO7rLgFEDhrLO/STXafDbyz99TavEPfim/O9PYACwjPccREx9kjy4gY3rEuJis4FawXB0WL63cwkYhi7p/rtEHG7oJMfmVo4jqvxyZeUcxtFEkRJULMfaqLEH7X7sbuyGQcS7Tm23+G74DpeUuItmnBbm+iLORlEFz47SxshtCnaDOvLvIqs25n4CM6t9Duk6/EwFAluC4mu5i2NbNgvlhzWBbEM3b5u6ZIuXqpMu5eTv1s72m7Glaj5C7lGRbHdxQJfSJe8YGzvAxsFqcES0q2keGIcu+Wviuti6q2SvyPx501yCJry0rT3DfUoa8VpeKhWvlDglpk5iL2JKl+rSzhWdkRAlPg3BeA2HNVu+3V3ZRO5Ak/8wb0HUoKR4oYzuBZV3OKfiZ4UxVyzNOYWVhKdOPYkzYsk4o6ACJaGmZNaw2sLZm5s4fS54FHk0gwy3lqsB+OCuqNHspCODk+s0mgmXaae9XNcQY5T/G3mlhpnfPHiOLR/L07ZH1nHlyED14QKU90+fL1lF3wVloa5XSACab3dknG5pRewLypxkLWqPXkHt+H6GcFgzNXh6CkbR35uC+GJWlMkfRPujMReY4U6x3qgHuzVTKuUEjEntUDae7dMXvmRUVyHy2+qX9JOJAw6BV7767LMc9HFUud/OdUS/Obq/z8VF+McdKnU4Q9WFae7lvm54rlhKEWXHh1X6E04ELWufuc5UVQnc2ZcfKE3LiQuL0qOwP5t0oKj+dSbGYnEOPZKcKeLuPpPOkAQl106Bs1d4CQi2VSENvjjJhxe50jZU9qMc4iJOVhdZTGC3VIUQ7rdD9+wB05P7MO1SLRIOU9O1OcX3Drrc8eQZEOUhbb6oTocXe0i0CmoxnnE+CPYhKttaQNeTTQbZMc32wDIJkfUNGIlc5hYzRHmq46rf7KinqWU/D7ShTrQrTFcfQqQZYDPIeSCdDd/pBuxXFI3OkqPbm6sJ4eTvWOrr5mHEX3o+SRuGAanyBAfT1RqDytntVXJV6RLJsNaN0hQzMyVAtg12jzdIBTUwMwIaT4vXXJelQy3A1MyLuMGXDXLPxM5Joo6e3ADyfCglS5xkRzQTssUV+5v+z7o/lfaa+95ZXGtArae1hDsawOJSq1xhQdalVS8TdprWyXVVquftGqtNF5bAV9OrMl/dnIlVebKUOWWyoVzKsvhKrRzpQUbptav/pxNmSG0Dbli1a/scJLtZlftRObwqrPwvsZdtuaAdNkmG+5OuTp5qUJYCG7eUfmZ3yd3x9KYm1tBFSubo6/8TWFJy9rVWzbqvv4mhtIXxWsnXXxN6cUqWgrfkYECtyV7BwyxK7hvzlVA5N9zBhu5CosKdy85h+mxKjRNFX4hA+J0leamsMYdpZ/5x2TvWhmJ5VRQOWWP6Ss/yd3Z5hHgB2b3Gez2S3OFKJlIEI4aHjiQS6h0RTUSYm2XpotwDBHkfNhad8/+g/4hPB8Y6utkVImfk/1lsbnZDferih1bnL4O79LdUVOErHsfiGdPTxxZofpOpPYhZkXZOLuIGarCiJsZzYoR37Qo2vQiY2XFjepjgcJMd1xLvrLMXqITxZFNcDpE7r6g7pDvDUK+6YN84wEUtl7+qeztVtmmJoV/pW9K/DpP7sbnp6mDY0AJ8Ij3xiG4vkMsbeXf6rJNsE87dCz7LL6Kc5ObcoNLW7JX2NLt+dWHFf2iopqKUsIrh+JFeBzlxQzUhpYfr1hpzzzMK7WU8YyNqC5J2foyghNufLclIQhH4YfJZQtiCewIo9vNcUE4Gj9KLp0H5UzZpuonL+7+KZGkJX90t0Si1i6dsxo6OyUSd8gf3SmRRHpzdwpobFqH1Mj2vcLInBrJ/DUCut9O887dc/P1ZfWw+1feXEBz+NtrxtVhINvuS07XOwTWqHKnkydNj2kaGCp+2GLNtwjBB/bpGV/PAFYnNSj7eIxawuYidAe/eMW8MkxNzqxOxDloJIrjz7B0C+bYGCiwIj9Q6rd3qUnUsL1M9kgjS23p/u0SFQwjV2HMBmB3OrCn1LNffNHbuondvPh1TGzzWKjefHrWduya0a4qXIaPPGJ30T0EE3eeNKFi3NBOriwBsq2ehwNyRSll8v+z+RRTcwddopeifO6ejMQdTDmLxrDps5EkwVmJW8voAmkCmz4XxTqukbi65OVy4yI+ieQuFzuKX5a8seRx6No4MEawFPdag+hz2NjJLiIgNgG7kyJGE7tDIXujFMXclgiz3/K2kcEIPpGSgRJwVhU9caejJitZL/6go65cicshwm9/jIkL7DoZO6JGjZRvXQfRMx0tfADJnqtwlJiSvPna0/H6eTwEFrswl0xVZkba/K3oZGIMG8+3E/AvsbPSHt2IzJUzf3fPTiRNhO6wKqDZWAEUkKrSKOEbdN0sVU1VaO4shr3CZm6BrYBiaEfR2ayniyvTSsAQeevlt2jvPUwUgYa+ZLFkSTFwJk/j0NZWX+SOUqqQNxa2NPogD5RRluRrucdoq7qtxSG3XeY71O1tYcOSvYdUjbt281Ht5hjpmmjtpg6q+A8VqVoVaGswEER6bvC0YRoL9b/qgIXJQj0wovqrUlEsKkgm+VATapK+Xy5LBIkoXzPQQc57fCynt4XJOzcxvFvikpOJ4miSOyWmVid6I04jhQ6nZaEYVJUYXLtNR11L23G/N8uniGQPIPc7vN265gjIvNLyFdJtNtBHyokRsnsT7ZTSCHNSq50fEZrfhnItTA7PDnP1n4C4I/XrPeLF/4IpdnHl4y9RZeIgdmUQjs7CHm3et/+2wf/oorYWdBukyeNswqc/vJrAQZ1kMW+mgR9zVjULPjQ0+NnO75LK8QqTgNWzV4pw6ySrjmLA7ZyeqsbFuPUaq5qiz+2+d83kNN3NMMIUmRPCcI4fzZLqYxxsiKyQMJLtBYY9zGDrVn8vd8eYCFYEy8Ml0hl5oKwwnssp4Hf9uDGIj+Oz1zmdnJFzA5E+jrbSVb/2b+5f/NavyhmbmZ6CoDBwUHOXJ7m/018z2C5b27Lv4T7Zml0G/H5zpbhhtxlYZ5VgTrJIDSebxZl5Z8RakL//ASkWCRZgJt6JoywSG2on3gYcI70G9y0qMcTJM4vuKcRtnBafcbTm7vKWSHo8u8dufHFfi45Q7cj/KEjBepNXkalfI0lE+keg8kPp/LZyQ2zGMFPZHmOsGY7Pkf5ds44tUQEKosFtqz/BXfjwkjPOSC+a/BRYLgnqGiNis4P+E65KAIUX67gp7Ni04mgM90XMV4d42dG3RwPiUAvuP8mqpLm2/WAezNkZVF6pGaZC73g7dhyfROFGWnUBJmHIp8CTYeevHlhRvSfG1WSXu7ajhms83epgkCX2J3JrxMvAEMTj0BnnbbY9pwW4HPUcpxfRj/x36vEiMO2YfnZxDtgPlQZy7Ib4YjX/nBhFwajdXsm0reciTkH9ycZPufm86HM03VJWYFqSHzigpt3Gajvy8mP3DVbroxYjHY2Nn25AXGcY05Fm7GC/+9TOEKK3aUczwy3Hg2Hh4wSarwWDa7dGsByluproL7LSiXH8nM+fYpfmf1/IzcT1ODQUiwLqPldqBd1J9rE7uV2/aX5Xde50umbwm6ldyb2kUnz5Br+HU5A6JiRSSKInCudB++XhG4qnr0upbwXo2J888HzRsnflv91wC9a9svRFjht9qjKh9E5IOuWKJNWO39hC+ZJbjA4jZ+Wrb6GiW9GJlFvyTitXUXZuO1FFz9zmeGM0+FsTnubb8wljBb1rpyTTC4mpeYUxlivsvyQt6Cyk30hLJEaxd6I7XSSxq3U4QD0jbxg34+NLxARrdC/JplzY6IeOYGGtA2VPSRMpj5h4Aksjja0VgZ8ibJrj6UEtftLszhNvUdu4kXfY+DsyRvf4mj/ff6LLNXk54CkDkD5I5LPY4mVBXLcB9OG74n01FboZxYyeUVwD616Zx6GzkRs9Tz6dI5LQiWTjeW4uP344yY0eFJXmRvSRS0P3pOhqX9OJQIloIkzF9djcD3IWGi+2/VOsauUq0qbtTUYhWJcUFVHiTeSSLs3LjEmQ7EsjOoJxIenCG8lhfaVab+JovXrNf3Awyp1l7usI6npfORUorOdEdx3BlWAHAndnHHJMS3awjoi0Q4fTEh1sI8I9bPe6qqiZG1i57NLZqGZhBFqvF5ih8dkua+6IFrbYEgrB8RRmSFKhM5J7EaCNWu1XhoGspMDLWFgomy2VPcwTrloAzgNJL+PoCql8yYwhftyqF0CS9TSJKJUq4AWIOG7K84BV/Uwia2RrVhwblm5c+9WnxpfOqZephGhnfYHWf8kuUWH2Vv7Bh2XIDmEhjta+AXbAkDuZkfwiQ+CYVQc8L9ED8UkMawezwFLo8Y+ytb9pYdvLFRE0Y4oBMzY7O5xwJRKVSK3h8jFoEX/aufLXKZBIPC6d1y+R1LmXpSX7FjlUrlDqCFjliVrRveuqFxMkkqKk8qJhr2ehimyNCjgxtvd1SZd0AttLdiTWK8J1ABmgLGV9KZXmsG2h6BVWWmLZP5IueegS00DmpY6A5i+fNIndXrGhHFdexOLvqCrRz60Vp8h0PRrtRMHo9AY3gdjrOdEvscPDjZPsvn/+CLIyEZOo/Qs5RAVwXfhxmWxvmcE3U8PIEOWt0ZVSa4jYFoqWkNIiy35OuuRRvcENmZVCaMpYZe1OJpUXxbv4mBUjndpWu3G9U1SImC83KIsTKH1q9kIvskNhEufWtd8ittO7/KB7biGll2zXRZmS5zXeILCZ79Ljs8fCVjLTcdopZh0rnt9//HTeZ1XK8Gc2dhq/99ip7VtwoieRRchfFgxRcIo3kUmWn+KLYOlGtpyQsdFfMt1vRU/D+g0cxBKe++fouffTmsouoJ8dXXJfKtNS69g/B0LSsnAEObG/IQNFobJUkmcl0LxDkY6dFVXXSVt/UPc9rLq8kpXB/I+we2Fl5oMCoyvIQeT4Ey3/4PI+RqGhxE3apwdXy53RHsutFANNtxR7e2f/3cbQOjg52D9ZMSSZ7ggRJpSwXKMgLRxN+LenJhHcZKI0huRBSW80clTH/jiwPSkWRaK8mMtntXXU1ffZ7vey2nwBtdNWyze23aJutNvVMUptm9keuLjfdL9jUHwxOYycMNCdjlJQ1iCjdJtE6MzAix+3sFIebHA51GaJ95yQvGmTuZ/qXlsnis6FWgfB4Y76cdma8dCU/x8fubn+x6H/iVV8xub3PwHW4v8DgIqvdERahyHE9aXgbljnxv/837uxaQVWxk0bwaybmhuAdbqY9zrMvrnx0FD19gvgTvPGbsHYquV3Dkp2KzJ6hwxYXI+O3shA609g+pV2T60Pge812lty5TowKpsm4KoNoV9V22lUpZR13dpxIw8e+wCRjF6RvRHdqFN71WNqn3pc7aeBkSjAA4TjNWCEXgto6pk5uv0wl/jr5LKGkNZNA9v2ulHaUpoOrTPi26X84W7ozrvaAXVD+kUyl7iWF9gQqZr18tkcLdZckpS8wJxxt41IO2n7CL1W0DRgju7ippImG5QUKbc9eYHN1tXs0Mu7qZM5un02l/iZF9jU3L0sOkv6I/TMAxRFN5+7UJTcOOeV3Ulyel1VJ98o9RXTNdSY9rnGnemCakwmmcZpp1XzAhVQYS+955Zf9Oi9Quo2bgo5kL5ZpfVoGTe4NhvSddXGtSEH8vxriN/B5XmBKl0HMd1WHehQpoN7MTkCqnVdOKRALl7gJRCOxWZLIga8dgf0/wcy7dr/AVDJ93a0DNK4toCKy4CD2lEyThFTN+yHyCgg7zf7DSfcj5aZPzbP6u6FVT2UNUzafLhrRmrr2LcIVJfkkFgANPO9bNzn1Rv7mzmorOf1nxIrR11Lv3zUDsJNWN4L+vw8o72mjbVbmtKL+oc5rreX9t/mGJm+sosRIzkBSI+u1IGnk/L8V1dKjct/9OmpELV2oP6a1+0GpNdXByiRDsaA2A5B6HgnnfhjLV6v9WnZDcj3rpTE5u1kUzWQuaqEsgzXlkNxpT7R8p8eQN4Xo27Pu3F3AejFjOZ5SvNDj9/ntdqSnRmsHRhvypp+fhsvFiD16zEvgtxR1QD6ZC7DT3yhPlX67rxqZR/StvMDHsO7WrkA/PMDX+NUDoUFrNYp0rmmPz6GEHSHAQEg9th87stPo0vF9vydJrMOAAAm/8RTAwCYbda/+1vjv1m66bpIBDoCzQwB6k1rLAD61rP2f/DdAL0pnOnTqOGtAf3j9pAS64FuzzZVM6zLl8kcNV4LtJq3Y/2kkH42pcNTUIUxbWUp7WpkuoSdY29KucIf+AtS2AEyIhCGZujMqqp9oNIG0jj+zYVpfdOkaY1hnSsC9KZsTtRzu6eUqKlkd0WSsKVSG/Gzwv5mSShrjHrrlF3aMh2sjTbdxdaXtGuFNUOrOq2rPj2Tz6/+dnT56HK9zYM6padO5EOXyfLQdH7aNQnDiMUoSHoPM126tpePlSXLoAIdrLX0+4SocvGksrSyfbS5vYr4+IviS8LyiEJZc3dlLP3yyaOKZNyPWVkMUOuVdMuK07gldD6XNpYyOUbS6cSn9mCN9pkSWlI08VswoH3OtzJiXUX5MSvwawXd9iZ/1K0sDCNPllU8R4bLY4BD2UtfVvMYdf7oX72rzdb0l5z7S6E93mwJ83rMSuxcne33TPWXno1yF0Y/sTlqdBGD4UWgZYzk/upgskrV+ulOsVppVDeFpZagajhXHL0S0qzMvGi/qK3C2K4kGY6TTaq3N4RPWZjKuhcZ9a3WQKuV36pT16eM9Luq+0iqerfWuZtmd+XWXRGjPF/6S17ly6ri9ZW9wxUhajm2FveXea8JUlZo+Uf5qpGEAjaDCXWUwQv5KEc7UmK9FrYt2Xfux7NSSmdby7FVlEJIQsRSbaMMn59tJ8cyqci2kG2fJLJ1TELUOm2ijBUn2zaWXwIE4LMykuyRs20F4AACsT0KBIDGF4aKDgCuYD4RYXEFoQaeiMmK6ZB0ItlaZYJSU0c2lcPWNF1CYeJFCODHXxRF22yxdTEUGRJa4GA+pzYWyoua0CkQXG0tkJGZ5yNy9SLE+Im9qbEm5AlECWM8vYdgAbxq7RW9tJd6kQIgQ8eA2ojtdtk9VPtdriNVhxKjhNGyeaFYodbIC+Ph+VCjEyP42dzNR+jAIrIQppSoS585myhVN07cAoPln9d7C+TtAgAAAA==", + "headers": [ + [ + "content-type", + "font/woff2" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/icon_bundle.svg": { + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiA/Pjxzdmc+PGRlZnM+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iYXJyb3dfZG93bndhcmRfMjRweCI+PHBhdGggZmlsbD0iIzAxMDEwMSIgZD0iTTIwIDEybC0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJhcnJvd191cHdhcmRfMjRweCI+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJicmlnaHRuZXNzXzZfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThWNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJidWdfcmVwb3J0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNhbmNlbF8yNHB4Ij48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iY2hhbmdlX2hpc3RvcnlfMjRweCI+PHBhdGggZD0iTTEyIDcuNzdMMTguMzkgMThINS42MUwxMiA3Ljc3TTEyIDRMMiAyMGgyMEwxMiA0eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNoZXZyb25fbGVmdF8yNHB4Ij48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJjaGV2cm9uX3JpZ2h0XzI0cHgiPjxwYXRoIGQ9Ik0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJjbGVhcl8yNHB4Ij48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImNsb3NlXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNvbnRlbnRfY29weV8yNHB4Ij48cGF0aCBkPSJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptMyA0SDhjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTFjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNkg4VjdoMTF2MTR6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImRhcmtfbW9kZV8yNHB4Ij48cmVjdCBmaWxsPSJub25lIiBoZWlnaHQ9IjI0IiB3aWR0aD0iMjQiLz48cGF0aCBkPSJNMTIsM2MtNC45NywwLTksNC4wMy05LDlzNC4wMyw5LDksOXM5LTQuMDMsOS05YzAtMC40Ni0wLjA0LTAuOTItMC4xLTEuMzZjLTAuOTgsMS4zNy0yLjU4LDIuMjYtNC40LDIuMjYgYy0yLjk4LDAtNS40LTIuNDItNS40LTUuNGMwLTEuODEsMC44OS0zLjQyLDIuMjYtNC40QzEyLjkyLDMuMDQsMTIuNDYsMywxMiwzTDEyLDN6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZG9uZV8yNHB4Ij48cGF0aCBkPSJNOSAxNi4yTDQuOCAxMmwtMS40IDEuNEw5IDE5IDIxIDdsLTEuNC0xLjRMOSAxNi4yeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImRyYWdfaW5kaWNhdG9yXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMSAxOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTIgMiAuOSAyIDJ6bS0yLThjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wLTZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDRjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImVkaXRfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZXJyb3JfMjRweCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjZ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZXhwYW5kX2xlc3NfMjRweCI+PHBhdGggZD0iTTEyIDhsLTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImV4cGFuZF9tb3JlXzI0cHgiPjxwYXRoIGQ9Ik0xNi41OSA4LjU5TDEyIDEzLjE3IDcuNDEgOC41OSA2IDEwbDYgNiA2LTZ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImZpbHRlcl9hbHRfMjRweCI+PGc+PHBhdGggZD0iTTAsMGgyNCBNMjQsMjRIMCIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik00LjI1LDUuNjFDNi4yNyw4LjIsMTAsMTMsMTAsMTN2NmMwLDAuNTUsMC40NSwxLDEsMWgyYzAuNTUsMCwxLTAuNDUsMS0xdi02YzAsMCwzLjcyLTQuOCw1Ljc0LTcuMzkgQzIwLjI1LDQuOTUsMTkuNzgsNCwxOC45NSw0SDUuMDRDNC4yMSw0LDMuNzQsNC45NSw0LjI1LDUuNjF6Ii8+PHBhdGggZD0iTTAsMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PC9nPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImZsYWdfMjRweCI+PHBhdGggZD0iTTE0LjQgNkwxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZnVsbHNjcmVlbl8yNHB4Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTcgMTRINXY1aDV2LTJIN3YtM3ptLTItNGgyVjdoM1Y1SDV2NXptMTIgN2gtM3YyaDV2LTVoLTJ2M3pNMTQgNXYyaDN2M2gyVjVoLTV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iZnVsbHNjcmVlbl9leGl0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNSAxNmgzdjNoMnYtNUg1djJ6bTMtOEg1djJoNVY1SDh2M3ptNiAxMWgydi0zaDN2LTJoLTV2NXptMi0xMVY1aC0ydjVoNVY4aC0zeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImdldF9hcHBfMjRweCI+PHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJncm91cF93b3JrXzI0cHgiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek04IDE3LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41ek05LjUgOGMwLTEuMzggMS4xMi0yLjUgMi41LTIuNXMyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjVTOS41IDkuMzggOS41IDh6bTYuNSA5LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImhlbHBfb3V0bGluZV8yNHB4Ij48cGF0aCBkPSJNMTEgMThoMnYtMmgtMnYyem0xLTE2QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMi4yMSAwLTQgMS43OS00IDRoMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgMi0zIDEuNzUtMyA1aDJjMC0yLjI1IDMtMi41IDMtNSAwLTIuMjEtMS43OS00LTQtNHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJpbWFnZV9zZWFyY2hfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xOCAxM3Y3SDRWNmg1LjAyYy4wNS0uNzEuMjItMS4zOC40OC0ySDRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTVsLTItMnptLTEuNSA1aC0xMWwyLjc1LTMuNTMgMS45NiAyLjM2IDIuNzUtMy41NHptMi44LTkuMTFjLjQ0LS43LjctMS41MS43LTIuMzlDMjAgNC4wMSAxNy45OSAyIDE1LjUgMlMxMSA0LjAxIDExIDYuNXMyLjAxIDQuNSA0LjQ5IDQuNWMuODggMCAxLjctLjI2IDIuMzktLjdMMjEgMTMuNDIgMjIuNDIgMTIgMTkuMyA4Ljg5ek0xNS41IDlDMTQuMTIgOSAxMyA3Ljg4IDEzIDYuNVMxNC4xMiA0IDE1LjUgNCAxOCA1LjEyIDE4IDYuNSAxNi44OCA5IDE1LjUgOXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJpbmZvX291dGxpbmVfMjRweCI+PHBhdGggZD0iTTExIDE3aDJ2LTZoLTJ2NnptMS0xNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6TTExIDloMlY3aC0ydjJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImtlZXBfMjRweCI+PGc+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PC9nPjxnPjxwYXRoIGQ9Ik0xNiw5VjRsMSwwYzAuNTUsMCwxLTAuNDUsMS0xdjBjMC0wLjU1LTAuNDUtMS0xLTFIN0M2LjQ1LDIsNiwyLjQ1LDYsM3YwIGMwLDAuNTUsMC40NSwxLDEsMWwxLDB2NWMwLDEuNjYtMS4zNCwzLTMsM2gwdjJoNS45N3Y3bDEsMWwxLTF2LTdIMTl2LTJoMEMxNy4zNCwxMiwxNiwxMC42NiwxNiw5eiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9nPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJrZWVwX291dGxpbmVfMjRweCI+PGc+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0Ii8+PC9nPjxnPjxwYXRoIGQ9Ik0xNCw0djVjMCwxLjEyLDAuMzcsMi4xNiwxLDNIOWMwLjY1LTAuODYsMS0xLjksMS0zVjRIMTQgTTE3LDJIN0M2LjQ1LDIsNiwyLjQ1LDYsM2MwLDAuNTUsMC40NSwxLDEsMWMwLDAsMCwwLDAsMGwxLDB2NSBjMCwxLjY2LTEuMzQsMy0zLDN2Mmg1Ljk3djdsMSwxbDEtMXYtN0gxOXYtMmMwLDAsMCwwLDAsMGMtMS42NiwwLTMtMS4zNC0zLTNWNGwxLDBjMCwwLDAsMCwwLDBjMC41NSwwLDEtMC40NSwxLTEgQzE4LDIuNDUsMTcuNTUsMiwxNywyTDE3LDJ6Ii8+PC9nPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJsaWdodF9tb2RlXzI0cHgiPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjxwYXRoIGQ9Ik0xMiw3Yy0yLjc2LDAtNSwyLjI0LTUsNXMyLjI0LDUsNSw1czUtMi4yNCw1LTVTMTQuNzYsNywxMiw3TDEyLDd6IE0yLDEzbDIsMGMwLjU1LDAsMS0wLjQ1LDEtMXMtMC40NS0xLTEtMWwtMiwwIGMtMC41NSwwLTEsMC40NS0xLDFTMS40NSwxMywyLDEzeiBNMjAsMTNsMiwwYzAuNTUsMCwxLTAuNDUsMS0xcy0wLjQ1LTEtMS0xbC0yLDBjLTAuNTUsMC0xLDAuNDUtMSwxUzE5LjQ1LDEzLDIwLDEzeiBNMTEsMnYyIGMwLDAuNTUsMC40NSwxLDEsMXMxLTAuNDUsMS0xVjJjMC0wLjU1LTAuNDUtMS0xLTFTMTEsMS40NSwxMSwyeiBNMTEsMjB2MmMwLDAuNTUsMC40NSwxLDEsMXMxLTAuNDUsMS0xdi0yYzAtMC41NS0wLjQ1LTEtMS0xIEMxMS40NSwxOSwxMSwxOS40NSwxMSwyMHogTTUuOTksNC41OGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBjLTAuMzksMC4zOS0wLjM5LDEuMDMsMCwxLjQxbDEuMDYsMS4wNiBjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBzMC4zOS0xLjAzLDAtMS40MUw1Ljk5LDQuNTh6IE0xOC4zNiwxNi45NWMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBjLTAuMzksMC4zOS0wLjM5LDEuMDMsMCwxLjQxIGwxLjA2LDEuMDZjMC4zOSwwLjM5LDEuMDMsMC4zOSwxLjQxLDBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFMMTguMzYsMTYuOTV6IE0xOS40Miw1Ljk5YzAuMzktMC4zOSwwLjM5LTEuMDMsMC0xLjQxIGMtMC4zOS0wLjM5LTEuMDMtMC4zOS0xLjQxLDBsLTEuMDYsMS4wNmMtMC4zOSwwLjM5LTAuMzksMS4wMywwLDEuNDFzMS4wMywwLjM5LDEuNDEsMEwxOS40Miw1Ljk5eiBNNy4wNSwxOC4zNiBjMC4zOS0wLjM5LDAuMzktMS4wMywwLTEuNDFjLTAuMzktMC4zOS0xLjAzLTAuMzktMS40MSwwbC0xLjA2LDEuMDZjLTAuMzksMC4zOS0wLjM5LDEuMDMsMCwxLjQxczEuMDMsMC4zOSwxLjQxLDBMNy4wNSwxOC4zNnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ibGluZV93ZWlnaHRfMjRweCI+PGc+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IiB4PSIwIi8+PC9nPjxnPjxnPjxnPjxwYXRoIGQ9Ik0zLDE3aDE4di0ySDNWMTd6IE0zLDIwaDE4di0xSDNWMjB6IE0zLDEzaDE4di0zSDNWMTN6IE0zLDR2NGgxOFY0SDN6Ii8+PC9nPjwvZz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ibW9yZV92ZXJ0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ibm90aWZpY2F0aW9uc19ub25lXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnptNi02di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJwYWxldHRlXzI0cHgiPjxwYXRoIGQ9Ik0xMiAzYy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAzIDkgOSA5Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLS4zOS0uMTUtLjc0LS4zOS0xLjAxLS4yMy0uMjYtLjM4LS42MS0uMzgtLjk5IDAtLjgzLjY3LTEuNSAxLjUtMS41SDE2YzIuNzYgMCA1LTIuMjQgNS01IDAtNC40Mi00LjAzLTgtOS04em0tNS41IDljLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDkgNi41IDkgOCA5LjY3IDggMTAuNSA3LjMzIDEyIDYuNSAxMnptMy00QzguNjcgOCA4IDcuMzMgOCA2LjVTOC42NyA1IDkuNSA1czEuNS42NyAxLjUgMS41UzEwLjMzIDggOS41IDh6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzEzLjY3IDUgMTQuNSA1czEuNS42NyAxLjUgMS41UzE1LjMzIDggMTQuNSA4em0zIDRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi42NyA5IDE3LjUgOXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0icmVmcmVzaF8yNHB4Ij48cGF0aCBkPSJNMTcuNjUgNi4zNUMxNi4yIDQuOSAxNC4yMSA0IDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhjLS44MiAyLjMzLTMuMDQgNC01LjY1IDQtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0ic2VhcmNoXzI0cHgiPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9InNldHRpbmdzXzI0cHgiPjxwYXRoIGQ9Ik0xOS40MyAxMi45OGMuMDQtLjMyLjA3LS42NC4wNy0uOThzLS4wMy0uNjYtLjA3LS45OGwyLjExLTEuNjVjLjE5LS4xNS4yNC0uNDIuMTItLjY0bC0yLTMuNDZjLS4xMi0uMjItLjM5LS4zLS42MS0uMjJsLTIuNDkgMWMtLjUyLS40LTEuMDgtLjczLTEuNjktLjk4bC0uMzgtMi42NUMxNC40NiAyLjE4IDE0LjI1IDIgMTQgMmgtNGMtLjI1IDAtLjQ2LjE4LS40OS40MmwtLjM4IDIuNjVjLS42MS4yNS0xLjE3LjU5LTEuNjkuOThsLTIuNDktMWMtLjIzLS4wOS0uNDkgMC0uNjEuMjJsLTIgMy40NmMtLjEzLjIyLS4wNy40OS4xMi42NGwyLjExIDEuNjVjLS4wNC4zMi0uMDcuNjUtLjA3Ljk4cy4wMy42Ni4wNy45OGwtMi4xMSAxLjY1Yy0uMTkuMTUtLjI0LjQyLS4xMi42NGwyIDMuNDZjLjEyLjIyLjM5LjMuNjEuMjJsMi40OS0xYy41Mi40IDEuMDguNzMgMS42OS45OGwuMzggMi42NWMuMDMuMjQuMjQuNDIuNDkuNDJoNGMuMjUgMCAuNDYtLjE4LjQ5LS40MmwuMzgtMi42NWMuNjEtLjI1IDEuMTctLjU5IDEuNjktLjk4bDIuNDkgMWMuMjMuMDkuNDkgMCAuNjEtLjIybDItMy40NmMuMTItLjIyLjA3LS40OS0uMTItLjY0bC0yLjExLTEuNjV6TTEyIDE1LjVjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9InNldHRpbmdzX2JhY2t1cF9yZXN0b3JlXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTQgMTJjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyIC45IDIgMiAyIDItLjkgMi0yem0tMi05Yy00Ljk3IDAtOSA0LjAzLTkgOUgwbDQgNCA0LTRINWMwLTMuODcgMy4xMy03IDctN3M3IDMuMTMgNyA3LTMuMTMgNy03IDdjLTEuNTEgMC0yLjkxLS40OS00LjA2LTEuM2wtMS40MiAxLjQ0QzguMDQgMjAuMyA5Ljk0IDIxIDEyIDIxYzQuOTcgMCA5LTQuMDMgOS05cy00LjAzLTktOS05eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9InNldHRpbmdzX292ZXJzY2FuXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIuMDEgNS41TDEwIDhoNGwtMS45OS0yLjV6TTE4IDEwdjRsMi41LTEuOTlMMTggMTB6TTYgMTBsLTIuNSAyLjAxTDYgMTR2LTR6bTggNmgtNGwyLjAxIDIuNUwxNCAxNnptNy0xM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9InZpc2liaWxpdHlfb2ZmXzI0cHgiPjxwYXRoIGQ9Ik0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY1LS4xMyAxLjI2LS4zNiAxLjgzbDIuOTIgMi45MmMxLjUxLTEuMjYgMi43LTIuODkgMy40My00Ljc1LTEuNzMtNC4zOS02LTcuNS0xMS03LjUtMS40IDAtMi43NC4yNS0zLjk4LjdsMi4xNiAyLjE2QzEwLjc0IDcuMTMgMTEuMzUgNyAxMiA3ek0yIDQuMjdsMi4yOCAyLjI4LjQ2LjQ2QzMuMDggOC4zIDEuNzggMTAuMDIgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41IDEuNTUgMCAzLjAzLS4zIDQuMzgtLjg0bC40Mi40MkwxOS43MyAyMiAyMSAyMC43MyAzLjI3IDMgMiA0LjI3ek03LjUzIDkuOGwxLjU1IDEuNTVjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42NiAxLjM0IDMgMyAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNTUgMS41NWMtLjY3LjMzLTEuNDEuNTMtMi4yLjUzLTIuNzYgMC01LTIuMjQtNS01IDAtLjc5LjItMS41My41My0yLjJ6bTQuMzEtLjc4bDMuMTUgMy4xNS4wMi0uMTZjMC0xLjY2LTEuMzQtMy0zLTNsLS4xNy4wMXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJ3YXJuaW5nXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIvPjwvc3ZnPjwvZGVmcz48L3N2Zz4K", + "headers": [ + [ + "content-type", + "image/svg+xml; charset=utf-8" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + }, + "https://localhost:6006/index.js?_file_hash=8b6358c7": { + "data": "dmFyIENMT1NVUkVfTk9fREVQUyA9IHRydWU7CndpbmRvdy5wb2x5bWVyU2tpcExvYWRpbmdGb250Um9ib3RvID0gdHJ1ZTsKLy8gQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgohZnVuY3Rpb24oKXt2YXIgYT17fSxiPXt9LGM9e307IWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGE7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifWZ1bmN0aW9uIGQoKXt0aGlzLl9kZWxheT0wLHRoaXMuX2VuZERlbGF5PTAsdGhpcy5fZmlsbD0ibm9uZSIsdGhpcy5faXRlcmF0aW9uU3RhcnQ9MCx0aGlzLl9pdGVyYXRpb25zPTEsdGhpcy5fZHVyYXRpb249MCx0aGlzLl9wbGF5YmFja1JhdGU9MSx0aGlzLl9kaXJlY3Rpb249Im5vcm1hbCIsdGhpcy5fZWFzaW5nPSJsaW5lYXIiLHRoaXMuX2Vhc2luZ0Z1bmN0aW9uPXh9ZnVuY3Rpb24gZSgpe3JldHVybiBhLmlzRGVwcmVjYXRlZCgiSW52YWxpZCB0aW1pbmcgaW5wdXRzIiwiMjAxNi0wMy0wMiIsIlR5cGVFcnJvciBleGNlcHRpb25zIHdpbGwgYmUgdGhyb3duIGluc3RlYWQuIiwhMCl9ZnVuY3Rpb24gZihiLGMsZSl7dmFyIGY9bmV3IGQ7cmV0dXJuIGMmJihmLmZpbGw9ImJvdGgiLGYuZHVyYXRpb249ImF1dG8iKSwibnVtYmVyIiE9dHlwZW9mIGJ8fGlzTmFOKGIpP3ZvaWQgMCE9PWImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGIpLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoImF1dG8iIT1iW2NdKXtpZigoIm51bWJlciI9PXR5cGVvZiBmW2NdfHwiZHVyYXRpb24iPT1jKSYmKCJudW1iZXIiIT10eXBlb2YgYltjXXx8aXNOYU4oYltjXSkpKXJldHVybjtpZigiZmlsbCI9PWMmJi0xPT12LmluZGV4T2YoYltjXSkpcmV0dXJuO2lmKCJkaXJlY3Rpb24iPT1jJiYtMT09dy5pbmRleE9mKGJbY10pKXJldHVybjtpZigicGxheWJhY2tSYXRlIj09YyYmMSE9PWJbY10mJmEuaXNEZXByZWNhdGVkKCJBbmltYXRpb25FZmZlY3RUaW1pbmcucGxheWJhY2tSYXRlIiwiMjAxNC0xMS0yOCIsIlVzZSBBbmltYXRpb24ucGxheWJhY2tSYXRlIGluc3RlYWQuIikpcmV0dXJuO2ZbY109YltjXX19KTpmLmR1cmF0aW9uPWIsZn1mdW5jdGlvbiBnKGEpe3JldHVybiJudW1iZXIiPT10eXBlb2YgYSYmKGE9aXNOYU4oYSk/e2R1cmF0aW9uOjB9OntkdXJhdGlvbjphfSksYX1mdW5jdGlvbiBoKGIsYyl7cmV0dXJuIGI9YS5udW1lcmljVGltaW5nVG9PYmplY3QoYiksZihiLGMpfWZ1bmN0aW9uIGkoYSxiLGMsZCl7cmV0dXJuIGE8MHx8YT4xfHxjPDB8fGM+MT94OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoYSxiLGMpe3JldHVybiAzKmEqKDEtYykqKDEtYykqYyszKmIqKDEtYykqYypjK2MqYypjfWlmKGU8PTApe3ZhciBnPTA7cmV0dXJuIGE+MD9nPWIvYTohYiYmYz4wJiYoZz1kL2MpLGcqZX1pZihlPj0xKXt2YXIgaD0wO3JldHVybiBjPDE/aD0oZC0xKS8oYy0xKToxPT1jJiZhPDEmJihoPShiLTEpLyhhLTEpKSwxK2gqKGUtMSl9Zm9yKHZhciBpPTAsaj0xO2k8ajspe3ZhciBrPShpK2opLzIsbD1mKGEsYyxrKTtpZihNYXRoLmFicyhlLWwpPDFlLTUpcmV0dXJuIGYoYixkLGspO2w8ZT9pPWs6aj1rfXJldHVybiBmKGIsZCxrKX19ZnVuY3Rpb24gaihhLGIpe3JldHVybiBmdW5jdGlvbihjKXtpZihjPj0xKXJldHVybiAxO3ZhciBkPTEvYTtyZXR1cm4oYys9YipkKS1jJWR9fWZ1bmN0aW9uIGsoYSl7Q3x8KEM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUpLEMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb249IiIsQy5hbmltYXRpb25UaW1pbmdGdW5jdGlvbj1hO3ZhciBiPUMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb247aWYoIiI9PWImJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKGErIiBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgZWFzaW5nIik7cmV0dXJuIGJ9ZnVuY3Rpb24gbChhKXtpZigibGluZWFyIj09YSlyZXR1cm4geDt2YXIgYj1FLmV4ZWMoYSk7aWYoYilyZXR1cm4gaS5hcHBseSh0aGlzLGIuc2xpY2UoMSkubWFwKE51bWJlcikpO3ZhciBjPUYuZXhlYyhhKTtpZihjKXJldHVybiBqKE51bWJlcihjWzFdKSxBKTt2YXIgZD1HLmV4ZWMoYSk7cmV0dXJuIGQ/aihOdW1iZXIoZFsxXSkse3N0YXJ0OnksbWlkZGxlOnosZW5kOkF9W2RbMl1dKTpCW2FdfHx4fWZ1bmN0aW9uIG0oYSl7cmV0dXJuIE1hdGguYWJzKG4oYSkvYS5wbGF5YmFja1JhdGUpfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIDA9PT1hLmR1cmF0aW9ufHwwPT09YS5pdGVyYXRpb25zPzA6YS5kdXJhdGlvbiphLml0ZXJhdGlvbnN9ZnVuY3Rpb24gbyhhLGIsYyl7aWYobnVsbD09YilyZXR1cm4gSDt2YXIgZD1jLmRlbGF5K2ErYy5lbmREZWxheTtyZXR1cm4gYjxNYXRoLm1pbihjLmRlbGF5LGQpP0k6Yj49TWF0aC5taW4oYy5kZWxheSthLGQpP0o6S31mdW5jdGlvbiBwKGEsYixjLGQsZSl7c3dpdGNoKGQpe2Nhc2UgSTpyZXR1cm4iYmFja3dhcmRzIj09Ynx8ImJvdGgiPT1iPzA6bnVsbDtjYXNlIEs6cmV0dXJuIGMtZTtjYXNlIEo6cmV0dXJuImZvcndhcmRzIj09Ynx8ImJvdGgiPT1iP2E6bnVsbDtjYXNlIEg6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHEoYSxiLGMsZCxlKXt2YXIgZj1lO3JldHVybiAwPT09YT9iIT09SSYmKGYrPWMpOmYrPWQvYSxmfWZ1bmN0aW9uIHIoYSxiLGMsZCxlLGYpe3ZhciBnPWE9PT0xLzA/YiUxOmElMTtyZXR1cm4gMCE9PWd8fGMhPT1KfHwwPT09ZHx8MD09PWUmJjAhPT1mfHwoZz0xKSxnfWZ1bmN0aW9uIHMoYSxiLGMsZCl7cmV0dXJuIGE9PT1KJiZiPT09MS8wPzEvMDoxPT09Yz9NYXRoLmZsb29yKGQpLTE6TWF0aC5mbG9vcihkKX1mdW5jdGlvbiB0KGEsYixjKXt2YXIgZD1hO2lmKCJub3JtYWwiIT09YSYmInJldmVyc2UiIT09YSl7dmFyIGU9YjsiYWx0ZXJuYXRlLXJldmVyc2UiPT09YSYmKGUrPTEpLGQ9Im5vcm1hbCIsZSE9PTEvMCYmZSUyIT0wJiYoZD0icmV2ZXJzZSIpfXJldHVybiJub3JtYWwiPT09ZD9jOjEtY31mdW5jdGlvbiB1KGEsYixjKXt2YXIgZD1vKGEsYixjKSxlPXAoYSxjLmZpbGwsYixkLGMuZGVsYXkpO2lmKG51bGw9PT1lKXJldHVybiBudWxsO3ZhciBmPXEoYy5kdXJhdGlvbixkLGMuaXRlcmF0aW9ucyxlLGMuaXRlcmF0aW9uU3RhcnQpLGc9cihmLGMuaXRlcmF0aW9uU3RhcnQsZCxjLml0ZXJhdGlvbnMsZSxjLmR1cmF0aW9uKSxoPXMoZCxjLml0ZXJhdGlvbnMsZyxmKSxpPXQoYy5kaXJlY3Rpb24saCxnKTtyZXR1cm4gYy5fZWFzaW5nRnVuY3Rpb24oaSl9dmFyIHY9ImJhY2t3YXJkc3xmb3J3YXJkc3xib3RofG5vbmUiLnNwbGl0KCJ8Iiksdz0icmV2ZXJzZXxhbHRlcm5hdGV8YWx0ZXJuYXRlLXJldmVyc2UiLnNwbGl0KCJ8IikseD1mdW5jdGlvbihhKXtyZXR1cm4gYX07ZC5wcm90b3R5cGU9e19zZXRNZW1iZXI6ZnVuY3Rpb24oYixjKXt0aGlzWyJfIitiXT1jLHRoaXMuX2VmZmVjdCYmKHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXRbYl09Yyx0aGlzLl9lZmZlY3QuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KHRoaXMuX2VmZmVjdC5fdGltaW5nSW5wdXQpLHRoaXMuX2VmZmVjdC5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX2VmZmVjdC5fdGltaW5nKSx0aGlzLl9lZmZlY3QuX2FuaW1hdGlvbiYmdGhpcy5fZWZmZWN0Ll9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCkpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IGRlbGF5KGEpe3RoaXMuX3NldE1lbWJlcigiZGVsYXkiLGEpfSxnZXQgZGVsYXkoKXtyZXR1cm4gdGhpcy5fZGVsYXl9LHNldCBlbmREZWxheShhKXt0aGlzLl9zZXRNZW1iZXIoImVuZERlbGF5IixhKX0sZ2V0IGVuZERlbGF5KCl7cmV0dXJuIHRoaXMuX2VuZERlbGF5fSxzZXQgZmlsbChhKXt0aGlzLl9zZXRNZW1iZXIoImZpbGwiLGEpfSxnZXQgZmlsbCgpe3JldHVybiB0aGlzLl9maWxsfSxzZXQgaXRlcmF0aW9uU3RhcnQoYSl7aWYoKGlzTmFOKGEpfHxhPDApJiZlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaXRlcmF0aW9uU3RhcnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9uU3RhcnQiLGEpfSxnZXQgaXRlcmF0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy5faXRlcmF0aW9uU3RhcnR9LHNldCBkdXJhdGlvbihhKXtpZigiYXV0byIhPWEmJihpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoImR1cmF0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIG9yIGF1dG8sIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiZHVyYXRpb24iLGEpfSxnZXQgZHVyYXRpb24oKXtyZXR1cm4gdGhpcy5fZHVyYXRpb259LHNldCBkaXJlY3Rpb24oYSl7dGhpcy5fc2V0TWVtYmVyKCJkaXJlY3Rpb24iLGEpfSxnZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbn0sc2V0IGVhc2luZyhhKXt0aGlzLl9lYXNpbmdGdW5jdGlvbj1sKGsoYSkpLHRoaXMuX3NldE1lbWJlcigiZWFzaW5nIixhKX0sZ2V0IGVhc2luZygpe3JldHVybiB0aGlzLl9lYXNpbmd9LHNldCBpdGVyYXRpb25zKGEpe2lmKChpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdGlvbnMgbXVzdCBiZSBub24tbmVnYXRpdmUsIHJlY2VpdmVkOiAiK2EpO3RoaXMuX3NldE1lbWJlcigiaXRlcmF0aW9ucyIsYSl9LGdldCBpdGVyYXRpb25zKCl7cmV0dXJuIHRoaXMuX2l0ZXJhdGlvbnN9fTt2YXIgeT0xLHo9LjUsQT0wLEI9e2Vhc2U6aSguMjUsLjEsLjI1LDEpLCJlYXNlLWluIjppKC40MiwwLDEsMSksImVhc2Utb3V0IjppKDAsMCwuNTgsMSksImVhc2UtaW4tb3V0IjppKC40MiwwLC41OCwxKSwic3RlcC1zdGFydCI6aigxLHkpLCJzdGVwLW1pZGRsZSI6aigxLHopLCJzdGVwLWVuZCI6aigxLEEpfSxDPW51bGwsRD0iXFxzKigtP1xcZCtcXC4/XFxkKnwtP1xcLlxcZCspXFxzKiIsRT1uZXcgUmVnRXhwKCJjdWJpYy1iZXppZXJcXCgiK0QrIiwiK0QrIiwiK0QrIiwiK0QrIlxcKSIpLEY9L3N0ZXBzXChccyooXGQrKVxzKlwpLyxHPS9zdGVwc1woXHMqKFxkKylccyosXHMqKHN0YXJ0fG1pZGRsZXxlbmQpXHMqXCkvLEg9MCxJPTEsSj0yLEs9MzthLmNsb25lVGltaW5nSW5wdXQ9YyxhLm1ha2VUaW1pbmc9ZixhLm51bWVyaWNUaW1pbmdUb09iamVjdD1nLGEubm9ybWFsaXplVGltaW5nSW5wdXQ9aCxhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uPW0sYS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcz11LGEuY2FsY3VsYXRlUGhhc2U9byxhLm5vcm1hbGl6ZUVhc2luZz1rLGEucGFyc2VFYXNpbmdGdW5jdGlvbj1sfShhKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtyZXR1cm4gYSBpbiBrP2tbYV1bYl18fGI6Yn1mdW5jdGlvbiBkKGEpe3JldHVybiJkaXNwbGF5Ij09PWF8fDA9PT1hLmxhc3RJbmRleE9mKCJhbmltYXRpb24iLDApfHwwPT09YS5sYXN0SW5kZXhPZigidHJhbnNpdGlvbiIsMCl9ZnVuY3Rpb24gZShhLGIsZSl7aWYoIWQoYSkpe3ZhciBmPWhbYV07aWYoZil7aS5zdHlsZVthXT1iO2Zvcih2YXIgZyBpbiBmKXt2YXIgaj1mW2ddLGs9aS5zdHlsZVtqXTtlW2pdPWMoaixrKX19ZWxzZSBlW2FdPWMoYSxiKX19ZnVuY3Rpb24gZihhKXt2YXIgYj1bXTtmb3IodmFyIGMgaW4gYSlpZighKGMgaW5bImVhc2luZyIsIm9mZnNldCIsImNvbXBvc2l0ZSJdKSl7dmFyIGQ9YVtjXTtBcnJheS5pc0FycmF5KGQpfHwoZD1bZF0pO2Zvcih2YXIgZSxmPWQubGVuZ3RoLGc9MDtnPGY7ZysrKWU9e30sZS5vZmZzZXQ9Im9mZnNldCJpbiBhP2Eub2Zmc2V0OjE9PWY/MTpnLyhmLTEpLCJlYXNpbmciaW4gYSYmKGUuZWFzaW5nPWEuZWFzaW5nKSwiY29tcG9zaXRlImluIGEmJihlLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZSksZVtjXT1kW2ddLGIucHVzaChlKX1yZXR1cm4gYi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEub2Zmc2V0LWIub2Zmc2V0fSksYn1mdW5jdGlvbiBnKGIpe2Z1bmN0aW9uIGMoKXt2YXIgYT1kLmxlbmd0aDtudWxsPT1kW2EtMV0ub2Zmc2V0JiYoZFthLTFdLm9mZnNldD0xKSxhPjEmJm51bGw9PWRbMF0ub2Zmc2V0JiYoZFswXS5vZmZzZXQ9MCk7Zm9yKHZhciBiPTAsYz1kWzBdLm9mZnNldCxlPTE7ZTxhO2UrKyl7dmFyIGY9ZFtlXS5vZmZzZXQ7aWYobnVsbCE9Zil7Zm9yKHZhciBnPTE7ZzxlLWI7ZysrKWRbYitnXS5vZmZzZXQ9YysoZi1jKSpnLyhlLWIpO2I9ZSxjPWZ9fX1pZihudWxsPT1iKXJldHVybltdO3dpbmRvdy5TeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmQXJyYXkucHJvdG90eXBlLmZyb20mJmJbU3ltYm9sLml0ZXJhdG9yXSYmKGI9QXJyYXkuZnJvbShiKSksQXJyYXkuaXNBcnJheShiKXx8KGI9ZihiKSk7Zm9yKHZhciBkPWIubWFwKGZ1bmN0aW9uKGIpe3ZhciBjPXt9O2Zvcih2YXIgZCBpbiBiKXt2YXIgZj1iW2RdO2lmKCJvZmZzZXQiPT1kKXtpZihudWxsIT1mKXtpZihmPU51bWJlcihmKSwhaXNGaW5pdGUoZikpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIG51bWJlcnMuIik7aWYoZjwwfHxmPjEpdGhyb3cgbmV3IFR5cGVFcnJvcigiS2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMS4iKX19ZWxzZSBpZigiY29tcG9zaXRlIj09ZCl7aWYoImFkZCI9PWZ8fCJhY2N1bXVsYXRlIj09Zil0aHJvd3t0eXBlOkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUixuYW1lOiJOb3RTdXBwb3J0ZWRFcnJvciIsbWVzc2FnZToiYWRkIGNvbXBvc2l0aW5nIGlzIG5vdCBzdXBwb3J0ZWQifTtpZigicmVwbGFjZSIhPWYpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjb21wb3NpdGUgbW9kZSAiK2YrIi4iKX1lbHNlIGY9ImVhc2luZyI9PWQ/YS5ub3JtYWxpemVFYXNpbmcoZik6IiIrZjtlKGQsZixjKX1yZXR1cm4gdm9pZCAwPT1jLm9mZnNldCYmKGMub2Zmc2V0PW51bGwpLHZvaWQgMD09Yy5lYXNpbmcmJihjLmVhc2luZz0ibGluZWFyIiksY30pLGc9ITAsaD0tMS8wLGk9MDtpPGQubGVuZ3RoO2krKyl7dmFyIGo9ZFtpXS5vZmZzZXQ7aWYobnVsbCE9ail7aWYoajxoKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lcyBhcmUgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldC4gU29ydCBvciBzcGVjaWZ5IG9mZnNldHMuIik7aD1qfWVsc2UgZz0hMX1yZXR1cm4gZD1kLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXQ+PTAmJmEub2Zmc2V0PD0xfSksZ3x8YygpLGR9dmFyIGg9e2JhY2tncm91bmQ6WyJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kQXR0YWNobWVudCIsImJhY2tncm91bmRPcmlnaW4iLCJiYWNrZ3JvdW5kQ2xpcCIsImJhY2tncm91bmRDb2xvciJdLGJvcmRlcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyVG9wU3R5bGUiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0Q29sb3IiLCJib3JkZXJSaWdodFN0eWxlIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxlZnRXaWR0aCJdLGJvcmRlckJvdHRvbTpbImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tU3R5bGUiLCJib3JkZXJCb3R0b21Db2xvciJdLGJvcmRlckNvbG9yOlsiYm9yZGVyVG9wQ29sb3IiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJMZWZ0Q29sb3IiXSxib3JkZXJMZWZ0OlsiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyUmFkaXVzOlsiYm9yZGVyVG9wTGVmdFJhZGl1cyIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCJib3JkZXJCb3R0b21MZWZ0UmFkaXVzIl0sYm9yZGVyUmlnaHQ6WyJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0Q29sb3IiXSxib3JkZXJUb3A6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wQ29sb3IiXSxib3JkZXJXaWR0aDpbImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyTGVmdFdpZHRoIl0sZmxleDpbImZsZXhHcm93IiwiZmxleFNocmluayIsImZsZXhCYXNpcyJdLGZvbnQ6WyJmb250RmFtaWx5IiwiZm9udFNpemUiLCJmb250U3R5bGUiLCJmb250VmFyaWFudCIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Il0sbWFyZ2luOlsibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0Il0sb3V0bGluZTpbIm91dGxpbmVDb2xvciIsIm91dGxpbmVTdHlsZSIsIm91dGxpbmVXaWR0aCJdLHBhZGRpbmc6WyJwYWRkaW5nVG9wIiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdMZWZ0Il19LGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksaj17dGhpbjoiMXB4IixtZWRpdW06IjNweCIsdGhpY2s6IjVweCJ9LGs9e2JvcmRlckJvdHRvbVdpZHRoOmosYm9yZGVyTGVmdFdpZHRoOmosYm9yZGVyUmlnaHRXaWR0aDpqLGJvcmRlclRvcFdpZHRoOmosZm9udFNpemU6eyJ4eC1zbWFsbCI6IjYwJSIsIngtc21hbGwiOiI3NSUiLHNtYWxsOiI4OSUiLG1lZGl1bToiMTAwJSIsbGFyZ2U6IjEyMCUiLCJ4LWxhcmdlIjoiMTUwJSIsInh4LWxhcmdlIjoiMjAwJSJ9LGZvbnRXZWlnaHQ6e25vcm1hbDoiNDAwIixib2xkOiI3MDAifSxvdXRsaW5lV2lkdGg6aix0ZXh0U2hhZG93Ontub25lOiIwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9LGJveFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggMHB4IHRyYW5zcGFyZW50In19O2EuY29udmVydFRvQXJyYXlGb3JtPWYsYS5ub3JtYWxpemVLZXlmcmFtZXM9Z30oYSksZnVuY3Rpb24oYSl7dmFyIGI9e307YS5pc0RlcHJlY2F0ZWQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiLGc9bmV3IERhdGUsaD1uZXcgRGF0ZShjKTtyZXR1cm4gaC5zZXRNb250aChoLmdldE1vbnRoKCkrMyksIShnPGgmJihhIGluIGJ8fGNvbnNvbGUud2FybigiV2ViIEFuaW1hdGlvbnM6ICIrYSsiICIrZisiIGRlcHJlY2F0ZWQgYW5kIHdpbGwgc3RvcCB3b3JraW5nIG9uICIraC50b0RhdGVTdHJpbmcoKSsiLiAiK2QpLGJbYV09ITAsMSkpfSxhLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiO2lmKGEuaXNEZXByZWNhdGVkKGIsYyxkLGUpKXRocm93IG5ldyBFcnJvcihiKyIgIitmKyIgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIitkKX19KGEpLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFuaW1hdGUpe3ZhciBjPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKFtdLDApLGQ9ITA7aWYoYyYmKGQ9ITEsInBsYXl8Y3VycmVudFRpbWV8cGF1c2V8cmV2ZXJzZXxwbGF5YmFja1JhdGV8Y2FuY2VsfGZpbmlzaHxzdGFydFRpbWV8cGxheVN0YXRlIi5zcGxpdCgifCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dm9pZCAwPT09Y1thXSYmKGQ9ITApfSkpLCFkKXJldHVybn0hZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPXt9LGM9MDtjPGEubGVuZ3RoO2MrKylmb3IodmFyIGQgaW4gYVtjXSlpZigib2Zmc2V0IiE9ZCYmImVhc2luZyIhPWQmJiJjb21wb3NpdGUiIT1kKXt2YXIgZT17b2Zmc2V0OmFbY10ub2Zmc2V0LGVhc2luZzphW2NdLmVhc2luZyx2YWx1ZTphW2NdW2RdfTtiW2RdPWJbZF18fFtdLGJbZF0ucHVzaChlKX1mb3IodmFyIGYgaW4gYil7dmFyIGc9YltmXTtpZigwIT1nWzBdLm9mZnNldHx8MSE9Z1tnLmxlbmd0aC0xXS5vZmZzZXQpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFtZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6IlBhcnRpYWwga2V5ZnJhbWVzIGFyZSBub3Qgc3VwcG9ydGVkIn19cmV0dXJuIGJ9ZnVuY3Rpb24gZShjKXt2YXIgZD1bXTtmb3IodmFyIGUgaW4gYylmb3IodmFyIGY9Y1tlXSxnPTA7ZzxmLmxlbmd0aC0xO2crKyl7dmFyIGg9ZyxpPWcrMSxqPWZbaF0ub2Zmc2V0LGs9ZltpXS5vZmZzZXQsbD1qLG09azswPT1nJiYobD0tMS8wLDA9PWsmJihpPWgpKSxnPT1mLmxlbmd0aC0yJiYobT0xLzAsMT09aiYmKGg9aSkpLGQucHVzaCh7YXBwbHlGcm9tOmwsYXBwbHlUbzptLHN0YXJ0T2Zmc2V0OmZbaF0ub2Zmc2V0LGVuZE9mZnNldDpmW2ldLm9mZnNldCxlYXNpbmdGdW5jdGlvbjphLnBhcnNlRWFzaW5nRnVuY3Rpb24oZltoXS5lYXNpbmcpLHByb3BlcnR5OmUsaW50ZXJwb2xhdGlvbjpiLnByb3BlcnR5SW50ZXJwb2xhdGlvbihlLGZbaF0udmFsdWUsZltpXS52YWx1ZSl9KX1yZXR1cm4gZC5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3RhcnRPZmZzZXQtYi5zdGFydE9mZnNldH0pLGR9Yi5jb252ZXJ0RWZmZWN0SW5wdXQ9ZnVuY3Rpb24oYyl7dmFyIGY9YS5ub3JtYWxpemVLZXlmcmFtZXMoYyksZz1kKGYpLGg9ZShnKTtyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZihudWxsIT1jKWguZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBjPj1hLmFwcGx5RnJvbSYmYzxhLmFwcGx5VG99KS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBlPWMtZC5zdGFydE9mZnNldCxmPWQuZW5kT2Zmc2V0LWQuc3RhcnRPZmZzZXQsZz0wPT1mPzA6ZC5lYXNpbmdGdW5jdGlvbihlL2YpO2IuYXBwbHkoYSxkLnByb3BlcnR5LGQuaW50ZXJwb2xhdGlvbihnKSl9KTtlbHNlIGZvcih2YXIgZCBpbiBnKSJvZmZzZXQiIT1kJiYiZWFzaW5nIiE9ZCYmImNvbXBvc2l0ZSIhPWQmJmIuY2xlYXIoYSxkKX19fShhLGIpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiBhLnJlcGxhY2UoLy0oLikvZyxmdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9KX1mdW5jdGlvbiBlKGEsYixjKXtoW2NdPWhbY118fFtdLGhbY10ucHVzaChbYSxiXSl9ZnVuY3Rpb24gZihhLGIsYyl7Zm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspe2UoYSxiLGQoY1tmXSkpfX1mdW5jdGlvbiBnKGMsZSxmKXt2YXIgZz1jOy8tLy50ZXN0KGMpJiYhYS5pc0RlcHJlY2F0ZWQoIkh5cGhlbmF0ZWQgcHJvcGVydHkgbmFtZXMiLCIyMDE2LTAzLTIyIiwiVXNlIGNhbWVsQ2FzZSBpbnN0ZWFkLiIsITApJiYoZz1kKGMpKSwiaW5pdGlhbCIhPWUmJiJpbml0aWFsIiE9Znx8KCJpbml0aWFsIj09ZSYmKGU9aVtnXSksImluaXRpYWwiPT1mJiYoZj1pW2ddKSk7Zm9yKHZhciBqPWU9PWY/W106aFtnXSxrPTA7aiYmazxqLmxlbmd0aDtrKyspe3ZhciBsPWpba11bMF0oZSksbT1qW2tdWzBdKGYpO2lmKHZvaWQgMCE9PWwmJnZvaWQgMCE9PW0pe3ZhciBuPWpba11bMV0obCxtKTtpZihuKXt2YXIgbz1iLkludGVycG9sYXRpb24uYXBwbHkobnVsbCxuKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDA9PWE/ZToxPT1hP2Y6byhhKX19fX1yZXR1cm4gYi5JbnRlcnBvbGF0aW9uKCExLCEwLGZ1bmN0aW9uKGEpe3JldHVybiBhP2Y6ZX0pfXZhciBoPXt9O2IuYWRkUHJvcGVydGllc0hhbmRsZXI9Zjt2YXIgaT17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYmFja2dyb3VuZFBvc2l0aW9uOiIwJSAwJSIsYm9yZGVyQm90dG9tQ29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21XaWR0aDoiM3B4Iixib3JkZXJMZWZ0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyTGVmdFdpZHRoOiIzcHgiLGJvcmRlclJpZ2h0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyUmlnaHRXaWR0aDoiM3B4Iixib3JkZXJTcGFjaW5nOiIycHgiLGJvcmRlclRvcENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclRvcExlZnRSYWRpdXM6IjBweCIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyVG9wV2lkdGg6IjNweCIsYm90dG9tOiJhdXRvIixjbGlwOiJyZWN0KDBweCwgMHB4LCAwcHgsIDBweCkiLGNvbG9yOiJibGFjayIsZm9udFNpemU6IjEwMCUiLGZvbnRXZWlnaHQ6IjQwMCIsaGVpZ2h0OiJhdXRvIixsZWZ0OiJhdXRvIixsZXR0ZXJTcGFjaW5nOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEyMCUiLG1hcmdpbkJvdHRvbToiMHB4IixtYXJnaW5MZWZ0OiIwcHgiLG1hcmdpblJpZ2h0OiIwcHgiLG1hcmdpblRvcDoiMHB4IixtYXhIZWlnaHQ6Im5vbmUiLG1heFdpZHRoOiJub25lIixtaW5IZWlnaHQ6IjBweCIsbWluV2lkdGg6IjBweCIsb3BhY2l0eToiMS4wIixvdXRsaW5lQ29sb3I6ImludmVydCIsb3V0bGluZU9mZnNldDoiMHB4IixvdXRsaW5lV2lkdGg6IjNweCIscGFkZGluZ0JvdHRvbToiMHB4IixwYWRkaW5nTGVmdDoiMHB4IixwYWRkaW5nUmlnaHQ6IjBweCIscGFkZGluZ1RvcDoiMHB4IixyaWdodDoiYXV0byIsc3Ryb2tlRGFzaGFycmF5OiJub25lIixzdHJva2VEYXNob2Zmc2V0OiIwcHgiLHRleHRJbmRlbnQ6IjBweCIsdGV4dFNoYWRvdzoiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQiLHRvcDoiYXV0byIsdHJhbnNmb3JtOiIiLHZlcnRpY2FsQWxpZ246IjBweCIsdmlzaWJpbGl0eToidmlzaWJsZSIsd2lkdGg6ImF1dG8iLHdvcmRTcGFjaW5nOiJub3JtYWwiLHpJbmRleDoiYXV0byJ9O2IucHJvcGVydHlJbnRlcnBvbGF0aW9uPWd9KGEsYiksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYil7dmFyIGM9YS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihiKSxkPWZ1bmN0aW9uKGQpe3JldHVybiBhLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGMsZCxiKX07cmV0dXJuIGQuX3RvdGFsRHVyYXRpb249Yi5kZWxheStjK2IuZW5kRGVsYXksZH1iLktleWZyYW1lRWZmZWN0PWZ1bmN0aW9uKGMsZSxmLGcpe3ZhciBoLGk9ZChhLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGYpKSxqPWIuY29udmVydEVmZmVjdElucHV0KGUpLGs9ZnVuY3Rpb24oKXtqKGMsaCl9O3JldHVybiBrLl91cGRhdGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPT0oaD1pKGEpKX0say5fY2xlYXI9ZnVuY3Rpb24oKXtqKGMsbnVsbCl9LGsuX2hhc1NhbWVUYXJnZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGM9PT1hfSxrLl90YXJnZXQ9YyxrLl90b3RhbER1cmF0aW9uPWkuX3RvdGFsRHVyYXRpb24say5faWQ9ZyxrfX0oYSxiKSxmdW5jdGlvbihhLGIpe2EuYXBwbHk9ZnVuY3Rpb24oYixjLGQpe2Iuc3R5bGVbYS5wcm9wZXJ0eU5hbWUoYyldPWR9LGEuY2xlYXI9ZnVuY3Rpb24oYixjKXtiLnN0eWxlW2EucHJvcGVydHlOYW1lKGMpXT0iIn19KGIpLGZ1bmN0aW9uKGEpe3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGEudGltZWxpbmUuX3BsYXkoYS5LZXlmcmFtZUVmZmVjdCh0aGlzLGIsYyxkKSl9fShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiLGQpe2lmKCJudW1iZXIiPT10eXBlb2YgYSYmIm51bWJlciI9PXR5cGVvZiBiKXJldHVybiBhKigxLWQpK2IqZDtpZigiYm9vbGVhbiI9PXR5cGVvZiBhJiYiYm9vbGVhbiI9PXR5cGVvZiBiKXJldHVybiBkPC41P2E6YjtpZihhLmxlbmd0aD09Yi5sZW5ndGgpe2Zvcih2YXIgZT1bXSxmPTA7ZjxhLmxlbmd0aDtmKyspZS5wdXNoKGMoYVtmXSxiW2ZdLGQpKTtyZXR1cm4gZX10aHJvdyJNaXNtYXRjaGVkIGludGVycG9sYXRpb24gYXJndW1lbnRzICIrYSsiOiIrYn1hLkludGVycG9sYXRpb249ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZChjKGEsYixlKSl9fX0oYiksZnVuY3Rpb24oYSxiLGMpe2Euc2VxdWVuY2VOdW1iZXI9MDt2YXIgZD1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImZpbmlzaCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfTtiLkFuaW1hdGlvbj1mdW5jdGlvbihiKXt0aGlzLmlkPSIiLGImJmIuX2lkJiYodGhpcy5pZD1iLl9pZCksdGhpcy5fc2VxdWVuY2VOdW1iZXI9YS5zZXF1ZW5jZU51bWJlcisrLHRoaXMuX2N1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSExLHRoaXMuX3BsYXliYWNrUmF0ZT0xLHRoaXMuX2luVGltZWxpbmU9ITAsdGhpcy5fZmluaXNoZWRGbGFnPSEwLHRoaXMub25maW5pc2g9bnVsbCx0aGlzLl9maW5pc2hIYW5kbGVycz1bXSx0aGlzLl9lZmZlY3Q9Yix0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgwKSx0aGlzLl9pZGxlPSEwLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfZW5zdXJlQWxpdmU6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZTwwJiYwPT09dGhpcy5jdXJyZW50VGltZT90aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSgtMSk6dGhpcy5faW5FZmZlY3Q9dGhpcy5fZWZmZWN0Ll91cGRhdGUodGhpcy5jdXJyZW50VGltZSksdGhpcy5faW5UaW1lbGluZXx8IXRoaXMuX2luRWZmZWN0JiZ0aGlzLl9maW5pc2hlZEZsYWd8fCh0aGlzLl9pblRpbWVsaW5lPSEwLGIudGltZWxpbmUuX2FuaW1hdGlvbnMucHVzaCh0aGlzKSl9LF90aWNrQ3VycmVudFRpbWU6ZnVuY3Rpb24oYSxiKXthIT10aGlzLl9jdXJyZW50VGltZSYmKHRoaXMuX2N1cnJlbnRUaW1lPWEsdGhpcy5faXNGaW5pc2hlZCYmIWImJih0aGlzLl9jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD90aGlzLl90b3RhbER1cmF0aW9uOjApLHRoaXMuX2Vuc3VyZUFsaXZlKCkpfSxnZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5faWRsZXx8dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nP251bGw6dGhpcy5fY3VycmVudFRpbWV9LHNldCBjdXJyZW50VGltZShhKXthPSthLGlzTmFOKGEpfHwoYi5yZXN0YXJ0KCksdGhpcy5fcGF1c2VkfHxudWxsPT10aGlzLl9zdGFydFRpbWV8fCh0aGlzLl9zdGFydFRpbWU9dGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtYS90aGlzLl9wbGF5YmFja1JhdGUpLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSx0aGlzLl9jdXJyZW50VGltZSE9YSYmKHRoaXMuX2lkbGUmJih0aGlzLl9pZGxlPSExLHRoaXMuX3BhdXNlZD0hMCksdGhpcy5fdGlja0N1cnJlbnRUaW1lKGEsITApLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKSl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lfSxzZXQgc3RhcnRUaW1lKGEpe2E9K2EsaXNOYU4oYSl8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZXx8KHRoaXMuX3N0YXJ0VGltZT1hLHRoaXMuX3RpY2tDdXJyZW50VGltZSgodGhpcy5fdGltZWxpbmUuY3VycmVudFRpbWUtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSksYi5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX3BsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXtpZihhIT10aGlzLl9wbGF5YmFja1JhdGUpe3ZhciBjPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fcGxheWJhY2tSYXRlPWEsdGhpcy5fc3RhcnRUaW1lPW51bGwsInBhdXNlZCIhPXRoaXMucGxheVN0YXRlJiYiaWRsZSIhPXRoaXMucGxheVN0YXRlJiYodGhpcy5fZmluaXNoZWRGbGFnPSExLHRoaXMuX2lkbGU9ITEsdGhpcy5fZW5zdXJlQWxpdmUoKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSksbnVsbCE9YyYmKHRoaXMuY3VycmVudFRpbWU9Yyl9fSxnZXQgX2lzRmluaXNoZWQoKXtyZXR1cm4hdGhpcy5faWRsZSYmKHRoaXMuX3BsYXliYWNrUmF0ZT4wJiZ0aGlzLl9jdXJyZW50VGltZT49dGhpcy5fdG90YWxEdXJhdGlvbnx8dGhpcy5fcGxheWJhY2tSYXRlPDAmJnRoaXMuX2N1cnJlbnRUaW1lPD0wKX0sZ2V0IF90b3RhbER1cmF0aW9uKCl7cmV0dXJuIHRoaXMuX2VmZmVjdC5fdG90YWxEdXJhdGlvbn0sZ2V0IHBsYXlTdGF0ZSgpe3JldHVybiB0aGlzLl9pZGxlPyJpZGxlIjpudWxsPT10aGlzLl9zdGFydFRpbWUmJiF0aGlzLl9wYXVzZWQmJjAhPXRoaXMucGxheWJhY2tSYXRlfHx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc/InBlbmRpbmciOnRoaXMuX3BhdXNlZD8icGF1c2VkIjp0aGlzLl9pc0ZpbmlzaGVkPyJmaW5pc2hlZCI6InJ1bm5pbmcifSxfcmV3aW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5fcGxheWJhY2tSYXRlPj0wKXRoaXMuX2N1cnJlbnRUaW1lPTA7ZWxzZXtpZighKHRoaXMuX3RvdGFsRHVyYXRpb248MS8wKSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJVbmFibGUgdG8gcmV3aW5kIG5lZ2F0aXZlIHBsYXliYWNrIHJhdGUgYW5pbWF0aW9uIHdpdGggaW5maW5pdGUgZHVyYXRpb24iLCJJbnZhbGlkU3RhdGVFcnJvciIpO3RoaXMuX2N1cnJlbnRUaW1lPXRoaXMuX3RvdGFsRHVyYXRpb259fSxwbGF5OmZ1bmN0aW9uKCl7dGhpcy5fcGF1c2VkPSExLCh0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl9pZGxlKSYmKHRoaXMuX3Jld2luZCgpLHRoaXMuX3N0YXJ0VGltZT1udWxsKSx0aGlzLl9maW5pc2hlZEZsYWc9ITEsdGhpcy5faWRsZT0hMSx0aGlzLl9lbnN1cmVBbGl2ZSgpLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZT90aGlzLl9pZGxlJiYodGhpcy5fcmV3aW5kKCksdGhpcy5faWRsZT0hMSk6dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSEwLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuX3BhdXNlZD0hMH0sZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5faWRsZXx8KHRoaXMuY3VycmVudFRpbWU9dGhpcy5fcGxheWJhY2tSYXRlPjA/dGhpcy5fdG90YWxEdXJhdGlvbjowLHRoaXMuX3N0YXJ0VGltZT10aGlzLl90b3RhbER1cmF0aW9uLXRoaXMuY3VycmVudFRpbWUsdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5faW5FZmZlY3QmJih0aGlzLl9pbkVmZmVjdD0hMSx0aGlzLl9pZGxlPSEwLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9maW5pc2hlZEZsYWc9ITAsdGhpcy5fY3VycmVudFRpbWU9MCx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLl9lZmZlY3QuX3VwZGF0ZShudWxsKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSl9LHJldmVyc2U6ZnVuY3Rpb24oKXt0aGlzLnBsYXliYWNrUmF0ZSo9LTEsdGhpcy5wbGF5KCl9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXsiZnVuY3Rpb24iPT10eXBlb2YgYiYmImZpbmlzaCI9PWEmJnRoaXMuX2ZpbmlzaEhhbmRsZXJzLnB1c2goYil9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXtpZigiZmluaXNoIj09YSl7dmFyIGM9dGhpcy5fZmluaXNoSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9maW5pc2hIYW5kbGVycy5zcGxpY2UoYywxKX19LF9maXJlRXZlbnRzOmZ1bmN0aW9uKGEpe2lmKHRoaXMuX2lzRmluaXNoZWQpe2lmKCF0aGlzLl9maW5pc2hlZEZsYWcpe3ZhciBiPW5ldyBkKHRoaXMsdGhpcy5fY3VycmVudFRpbWUsYSksYz10aGlzLl9maW5pc2hIYW5kbGVycy5jb25jYXQodGhpcy5vbmZpbmlzaD9bdGhpcy5vbmZpbmlzaF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGIudGFyZ2V0LGIpfSl9LDApLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMH19ZWxzZSB0aGlzLl9maW5pc2hlZEZsYWc9ITF9LF90aWNrOmZ1bmN0aW9uKGEsYil7dGhpcy5faWRsZXx8dGhpcy5fcGF1c2VkfHwobnVsbD09dGhpcy5fc3RhcnRUaW1lP2ImJih0aGlzLnN0YXJ0VGltZT1hLXRoaXMuX2N1cnJlbnRUaW1lL3RoaXMucGxheWJhY2tSYXRlKTp0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl90aWNrQ3VycmVudFRpbWUoKGEtdGhpcy5fc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSkpLGImJih0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsdGhpcy5fZmlyZUV2ZW50cyhhKSl9LGdldCBfbmVlZHNUaWNrKCl7cmV0dXJuIHRoaXMucGxheVN0YXRlIGlue3BlbmRpbmc6MSxydW5uaW5nOjF9fHwhdGhpcy5fZmluaXNoZWRGbGFnfSxfdGFyZ2V0QW5pbWF0aW9uczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2VmZmVjdC5fdGFyZ2V0O3JldHVybiBhLl9hY3RpdmVBbmltYXRpb25zfHwoYS5fYWN0aXZlQW5pbWF0aW9ucz1bXSksYS5fYWN0aXZlQW5pbWF0aW9uc30sX21hcmtUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90YXJnZXRBbmltYXRpb25zKCk7LTE9PT1hLmluZGV4T2YodGhpcykmJmEucHVzaCh0aGlzKX0sX3VubWFya1RhcmdldDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3RhcmdldEFuaW1hdGlvbnMoKSxiPWEuaW5kZXhPZih0aGlzKTstMSE9PWImJmEuc3BsaWNlKGIsMSl9fX0oYSxiKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXt2YXIgYj1qO2o9W10sYTxxLmN1cnJlbnRUaW1lJiYoYT1xLmN1cnJlbnRUaW1lKSxxLl9hbmltYXRpb25zLnNvcnQoZSkscS5fYW5pbWF0aW9ucz1oKGEsITAscS5fYW5pbWF0aW9ucylbMF0sYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMV0oYSl9KSxnKCksbD12b2lkIDB9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBhLl9zZXF1ZW5jZU51bWJlci1iLl9zZXF1ZW5jZU51bWJlcn1mdW5jdGlvbiBmKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOjB9ZnVuY3Rpb24gZygpe28uZm9yRWFjaChmdW5jdGlvbihhKXthKCl9KSxvLmxlbmd0aD0wfWZ1bmN0aW9uIGgoYSxjLGQpe3A9ITAsbj0hMSxiLnRpbWVsaW5lLmN1cnJlbnRUaW1lPWEsbT0hMTt2YXIgZT1bXSxmPVtdLGc9W10saD1bXTtyZXR1cm4gZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuX3RpY2soYSxjKSxiLl9pbkVmZmVjdD8oZi5wdXNoKGIuX2VmZmVjdCksYi5fbWFya1RhcmdldCgpKTooZS5wdXNoKGIuX2VmZmVjdCksYi5fdW5tYXJrVGFyZ2V0KCkpLGIuX25lZWRzVGljayYmKG09ITApO3ZhciBkPWIuX2luRWZmZWN0fHxiLl9uZWVkc1RpY2s7Yi5faW5UaW1lbGluZT1kLGQ/Zy5wdXNoKGIpOmgucHVzaChiKX0pLG8ucHVzaC5hcHBseShvLGUpLG8ucHVzaC5hcHBseShvLGYpLG0mJnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLHA9ITEsW2csaF19dmFyIGk9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxqPVtdLGs9MDt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe3ZhciBiPWsrKztyZXR1cm4gMD09ai5sZW5ndGgmJmkoZCksai5wdXNoKFtiLGFdKSxifSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7ai5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMF09PWEmJihiWzFdPWZ1bmN0aW9uKCl7fSl9KX0sZi5wcm90b3R5cGU9e19wbGF5OmZ1bmN0aW9uKGMpe2MuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMudGltaW5nKTt2YXIgZD1uZXcgYi5BbmltYXRpb24oYyk7cmV0dXJuIGQuX2lkbGU9ITEsZC5fdGltZWxpbmU9dGhpcyx0aGlzLl9hbmltYXRpb25zLnB1c2goZCksYi5yZXN0YXJ0KCksYi5hcHBseURpcnRpZWRBbmltYXRpb24oZCksZH19O3ZhciBsPXZvaWQgMCxtPSExLG49ITE7Yi5yZXN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG18fChtPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe30pLG49ITApLG59LGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uPWZ1bmN0aW9uKGEpe2lmKCFwKXthLl9tYXJrVGFyZ2V0KCk7dmFyIGM9YS5fdGFyZ2V0QW5pbWF0aW9ucygpO2Muc29ydChlKSxoKGIudGltZWxpbmUuY3VycmVudFRpbWUsITEsYy5zbGljZSgpKVsxXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXEuX2FuaW1hdGlvbnMuaW5kZXhPZihhKTstMSE9PWImJnEuX2FuaW1hdGlvbnMuc3BsaWNlKGIsMSl9KSxnKCl9fTt2YXIgbz1bXSxwPSExLHE9bmV3IGY7Yi50aW1lbGluZT1xfShhLGIpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiKXt2YXIgYz1hLmV4ZWMoYik7aWYoYylyZXR1cm4gYz1hLmlnbm9yZUNhc2U/Y1swXS50b0xvd2VyQ2FzZSgpOmNbMF0sW2MsYi5zdWJzdHIoYy5sZW5ndGgpXX1mdW5jdGlvbiBjKGEsYil7Yj1iLnJlcGxhY2UoL15ccyovLCIiKTt2YXIgYz1hKGIpO2lmKGMpcmV0dXJuW2NbMF0sY1sxXS5yZXBsYWNlKC9eXHMqLywiIildfWZ1bmN0aW9uIGQoYSxkLGUpe2E9Yy5iaW5kKG51bGwsYSk7Zm9yKHZhciBmPVtdOzspe3ZhciBnPWEoZSk7aWYoIWcpcmV0dXJuW2YsZV07aWYoZi5wdXNoKGdbMF0pLGU9Z1sxXSwhKGc9YihkLGUpKXx8IiI9PWdbMV0pcmV0dXJuW2YsZV07ZT1nWzFdfX1mdW5jdGlvbiBlKGEsYil7Zm9yKHZhciBjPTAsZD0wO2Q8Yi5sZW5ndGgmJighL1xzfCwvLnRlc3QoYltkXSl8fDAhPWMpO2QrKylpZigiKCI9PWJbZF0pYysrO2Vsc2UgaWYoIikiPT1iW2RdJiYoYy0tLDA9PWMmJmQrKyxjPD0wKSlicmVhazt2YXIgZT1hKGIuc3Vic3RyKDAsZCkpO3JldHVybiB2b2lkIDA9PWU/dm9pZCAwOltlLGIuc3Vic3RyKGQpXX1mdW5jdGlvbiBmKGEsYil7Zm9yKHZhciBjPWEsZD1iO2MmJmQ7KWM+ZD9jJT1kOmQlPWM7cmV0dXJuIGM9YSpiLyhjK2QpfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWEoYik7cmV0dXJuIGMmJihjWzBdPXZvaWQgMCksY319ZnVuY3Rpb24gaChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYShjKXx8W2IsY119fWZ1bmN0aW9uIGkoYixjKXtmb3IodmFyIGQ9W10sZT0wO2U8Yi5sZW5ndGg7ZSsrKXt2YXIgZj1hLmNvbnN1bWVUcmltbWVkKGJbZV0sYyk7aWYoIWZ8fCIiPT1mWzBdKXJldHVybjt2b2lkIDAhPT1mWzBdJiZkLnB1c2goZlswXSksYz1mWzFdfWlmKCIiPT1jKXJldHVybiBkfWZ1bmN0aW9uIGooYSxiLGMsZCxlKXtmb3IodmFyIGc9W10saD1bXSxpPVtdLGo9ZihkLmxlbmd0aCxlLmxlbmd0aCksaz0wO2s8ajtrKyspe3ZhciBsPWIoZFtrJWQubGVuZ3RoXSxlW2slZS5sZW5ndGhdKTtpZighbClyZXR1cm47Zy5wdXNoKGxbMF0pLGgucHVzaChsWzFdKSxpLnB1c2gobFsyXSl9cmV0dXJuW2csaCxmdW5jdGlvbihiKXt2YXIgZD1iLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBpW2JdKGEpfSkuam9pbihjKTtyZXR1cm4gYT9hKGQpOmR9XX1mdW5jdGlvbiBrKGEsYixjKXtmb3IodmFyIGQ9W10sZT1bXSxmPVtdLGc9MCxoPTA7aDxjLmxlbmd0aDtoKyspaWYoImZ1bmN0aW9uIj09dHlwZW9mIGNbaF0pe3ZhciBpPWNbaF0oYVtnXSxiW2crK10pO2QucHVzaChpWzBdKSxlLnB1c2goaVsxXSksZi5wdXNoKGlbMl0pfWVsc2UhZnVuY3Rpb24oYSl7ZC5wdXNoKCExKSxlLnB1c2goITEpLGYucHVzaChmdW5jdGlvbigpe3JldHVybiBjW2FdfSl9KGgpO3JldHVybltkLGUsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1mW2NdKGFbY10pO3JldHVybiBifV19YS5jb25zdW1lVG9rZW49YixhLmNvbnN1bWVUcmltbWVkPWMsYS5jb25zdW1lUmVwZWF0ZWQ9ZCxhLmNvbnN1bWVQYXJlbnRoZXNpc2VkPWUsYS5pZ25vcmU9ZyxhLm9wdGlvbmFsPWgsYS5jb25zdW1lTGlzdD1pLGEubWVyZ2VOZXN0ZWRSZXBlYXRlZD1qLmJpbmQobnVsbCxudWxsKSxhLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkPWosYS5tZXJnZUxpc3Q9a30oYiksZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihiKXtmdW5jdGlvbiBjKGIpe3ZhciBjPWEuY29uc3VtZVRva2VuKC9eaW5zZXQvaSxiKTtyZXR1cm4gYz8oZC5pbnNldD0hMCxjKTooYz1hLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYikpPyhkLmxlbmd0aHMucHVzaChjWzBdKSxjKTooYz1hLmNvbnN1bWVDb2xvcihiKSxjPyhkLmNvbG9yPWNbMF0sYyk6dm9pZCAwKX12YXIgZD17aW5zZXQ6ITEsbGVuZ3RoczpbXSxjb2xvcjpudWxsfSxlPWEuY29uc3VtZVJlcGVhdGVkKGMsL14vLGIpO2lmKGUmJmVbMF0ubGVuZ3RoKXJldHVybltkLGVbMV1dfWZ1bmN0aW9uIGMoYyl7dmFyIGQ9YS5jb25zdW1lUmVwZWF0ZWQoYiwvXiwvLGMpO2lmKGQmJiIiPT1kWzFdKXJldHVybiBkWzBdfWZ1bmN0aW9uIGQoYixjKXtmb3IoO2IubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYi5sZW5ndGhzLnB1c2goe3B4OjB9KTtmb3IoO2MubGVuZ3Rocy5sZW5ndGg8TWF0aC5tYXgoYi5sZW5ndGhzLmxlbmd0aCxjLmxlbmd0aHMubGVuZ3RoKTspYy5sZW5ndGhzLnB1c2goe3B4OjB9KTtpZihiLmluc2V0PT1jLmluc2V0JiYhIWIuY29sb3I9PSEhYy5jb2xvcil7Zm9yKHZhciBkLGU9W10sZj1bW10sMF0sZz1bW10sMF0saD0wO2g8Yi5sZW5ndGhzLmxlbmd0aDtoKyspe3ZhciBpPWEubWVyZ2VEaW1lbnNpb25zKGIubGVuZ3Roc1toXSxjLmxlbmd0aHNbaF0sMj09aCk7ZlswXS5wdXNoKGlbMF0pLGdbMF0ucHVzaChpWzFdKSxlLnB1c2goaVsyXSl9aWYoYi5jb2xvciYmYy5jb2xvcil7dmFyIGo9YS5tZXJnZUNvbG9ycyhiLmNvbG9yLGMuY29sb3IpO2ZbMV09alswXSxnWzFdPWpbMV0sZD1qWzJdfXJldHVybltmLGcsZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWIuaW5zZXQ/Imluc2V0ICI6IiAiLGY9MDtmPGUubGVuZ3RoO2YrKyljKz1lW2ZdKGFbMF1bZl0pKyIgIjtyZXR1cm4gZCYmKGMrPWQoYVsxXSkpLGN9XX19ZnVuY3Rpb24gZShiLGMsZCxlKXtmdW5jdGlvbiBmKGEpe3JldHVybntpbnNldDphLGNvbG9yOlswLDAsMCwwXSxsZW5ndGhzOlt7cHg6MH0se3B4OjB9LHtweDowfSx7cHg6MH1dfX1mb3IodmFyIGc9W10saD1bXSxpPTA7aTxkLmxlbmd0aHx8aTxlLmxlbmd0aDtpKyspe3ZhciBqPWRbaV18fGYoZVtpXS5pbnNldCksaz1lW2ldfHxmKGRbaV0uaW5zZXQpO2cucHVzaChqKSxoLnB1c2goayl9cmV0dXJuIGEubWVyZ2VOZXN0ZWRSZXBlYXRlZChiLGMsZyxoKX12YXIgZj1lLmJpbmQobnVsbCxkLCIsICIpO2EuYWRkUHJvcGVydGllc0hhbmRsZXIoYyxmLFsiYm94LXNoYWRvdyIsInRleHQtc2hhZG93Il0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGEudG9GaXhlZCgzKS5yZXBsYWNlKC8wKyQvLCIiKS5yZXBsYWNlKC9cLiQvLCIiKX1mdW5jdGlvbiBkKGEsYixjKXtyZXR1cm4gTWF0aC5taW4oYixNYXRoLm1heChhLGMpKX1mdW5jdGlvbiBlKGEpe2lmKC9eXHMqWy0rXT8oXGQqXC4pP1xkK1xzKiQvLnRlc3QoYSkpcmV0dXJuIE51bWJlcihhKX1mdW5jdGlvbiBmKGEsYil7cmV0dXJuW2EsYixjXX1mdW5jdGlvbiBnKGEsYil7aWYoMCE9YSlyZXR1cm4gaSgwLDEvMCkoYSxiKX1mdW5jdGlvbiBoKGEsYil7cmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5yb3VuZChkKDEsMS8wLGEpKX1dfWZ1bmN0aW9uIGkoYSxiKXtyZXR1cm4gZnVuY3Rpb24oZSxmKXtyZXR1cm5bZSxmLGZ1bmN0aW9uKGUpe3JldHVybiBjKGQoYSxiLGUpKX1dfX1mdW5jdGlvbiBqKGEpe3ZhciBiPWEudHJpbSgpLnNwbGl0KC9ccypbXHMsXVxzKi8pO2lmKDAhPT1iLmxlbmd0aCl7Zm9yKHZhciBjPVtdLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGY9ZShiW2RdKTtpZih2b2lkIDA9PT1mKXJldHVybjtjLnB1c2goZil9cmV0dXJuIGN9fWZ1bmN0aW9uIGsoYSxiKXtpZihhLmxlbmd0aD09Yi5sZW5ndGgpcmV0dXJuW2EsYixmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoYykuam9pbigiICIpfV19ZnVuY3Rpb24gbChhLGIpe3JldHVyblthLGIsTWF0aC5yb3VuZF19YS5jbGFtcD1kLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaixrLFsic3Ryb2tlLWRhc2hhcnJheSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEvMCksWyJib3JkZXItaW1hZ2Utd2lkdGgiLCJsaW5lLWhlaWdodCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaSgwLDEpLFsib3BhY2l0eSIsInNoYXBlLWltYWdlLXRocmVzaG9sZCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsZyxbImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxoLFsib3JwaGFucyIsIndpZG93cyJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsbCxbInotaW5kZXgiXSksYS5wYXJzZU51bWJlcj1lLGEucGFyc2VOdW1iZXJMaXN0PWosYS5tZXJnZU51bWJlcnM9ZixhLm51bWJlclRvU3RyaW5nPWN9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIpe2lmKCJ2aXNpYmxlIj09YXx8InZpc2libGUiPT1iKXJldHVyblswLDEsZnVuY3Rpb24oYyl7cmV0dXJuIGM8PTA/YTpjPj0xP2I6InZpc2libGUifV19YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihTdHJpbmcsYyxbInZpc2liaWxpdHkiXSl9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXthPWEudHJpbSgpLGYuZmlsbFN0eWxlPSIjMDAwIixmLmZpbGxTdHlsZT1hO3ZhciBiPWYuZmlsbFN0eWxlO2lmKGYuZmlsbFN0eWxlPSIjZmZmIixmLmZpbGxTdHlsZT1hLGI9PWYuZmlsbFN0eWxlKXtmLmZpbGxSZWN0KDAsMCwxLDEpO3ZhciBjPWYuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGE7Zi5jbGVhclJlY3QoMCwwLDEsMSk7dmFyIGQ9Y1szXS8yNTU7cmV0dXJuW2NbMF0qZCxjWzFdKmQsY1syXSpkLGRdfX1mdW5jdGlvbiBkKGIsYyl7cmV0dXJuW2IsYyxmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxhKSl9aWYoYlszXSlmb3IodmFyIGQ9MDtkPDM7ZCsrKWJbZF09TWF0aC5yb3VuZChjKGJbZF0vYlszXSkpO3JldHVybiBiWzNdPWEubnVtYmVyVG9TdHJpbmcoYS5jbGFtcCgwLDEsYlszXSkpLCJyZ2JhKCIrYi5qb2luKCIsIikrIikifV19dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7ZS53aWR0aD1lLmhlaWdodD0xO3ZhciBmPWUuZ2V0Q29udGV4dCgiMmQiKTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGMsZCxbImJhY2tncm91bmQtY29sb3IiLCJib3JkZXItYm90dG9tLWNvbG9yIiwiYm9yZGVyLWxlZnQtY29sb3IiLCJib3JkZXItcmlnaHQtY29sb3IiLCJib3JkZXItdG9wLWNvbG9yIiwiY29sb3IiLCJmaWxsIiwiZmxvb2QtY29sb3IiLCJsaWdodGluZy1jb2xvciIsIm91dGxpbmUtY29sb3IiLCJzdG9wLWNvbG9yIiwic3Ryb2tlIiwidGV4dC1kZWNvcmF0aW9uLWNvbG9yIl0pLGEuY29uc3VtZUNvbG9yPWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGMpLGEubWVyZ2VDb2xvcnM9ZH0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe2Z1bmN0aW9uIGIoKXt2YXIgYj1oLmV4ZWMoYSk7Zz1iP2JbMF06dm9pZCAwfWZ1bmN0aW9uIGMoKXt2YXIgYT1OdW1iZXIoZyk7cmV0dXJuIGIoKSxhfWZ1bmN0aW9uIGQoKXtpZigiKCIhPT1nKXJldHVybiBjKCk7YigpO3ZhciBhPWYoKTtyZXR1cm4iKSIhPT1nP05hTjooYigpLGEpfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9ZCgpOyIqIj09PWd8fCIvIj09PWc7KXt2YXIgYz1nO2IoKTt2YXIgZT1kKCk7IioiPT09Yz9hKj1lOmEvPWV9cmV0dXJuIGF9ZnVuY3Rpb24gZigpe2Zvcih2YXIgYT1lKCk7IisiPT09Z3x8Ii0iPT09Zzspe3ZhciBjPWc7YigpO3ZhciBkPWUoKTsiKyI9PT1jP2ErPWQ6YS09ZH1yZXR1cm4gYX12YXIgZyxoPS8oW1wrXC1cd1wuXSt8W1woXClcKlwvXSkvZztyZXR1cm4gYigpLGYoKX1mdW5jdGlvbiBkKGEsYil7aWYoIjAiPT0oYj1iLnRyaW0oKS50b0xvd2VyQ2FzZSgpKSYmInB4Ii5zZWFyY2goYSk+PTApcmV0dXJue3B4OjB9O2lmKC9eW14oXSokfF5jYWxjLy50ZXN0KGIpKXtiPWIucmVwbGFjZSgvY2FsY1woL2csIigiKTt2YXIgZD17fTtiPWIucmVwbGFjZShhLGZ1bmN0aW9uKGEpe3JldHVybiBkW2FdPW51bGwsIlUiK2F9KTtmb3IodmFyIGU9IlUoIithLnNvdXJjZSsiKSIsZj1iLnJlcGxhY2UoL1stK10/KFxkKlwuKT9cZCsoW0VlXVstK10/XGQrKT8vZywiTiIpLnJlcGxhY2UobmV3IFJlZ0V4cCgiTiIrZSwiZyIpLCJEIikucmVwbGFjZSgvXHNbKy1dXHMvZywiTyIpLnJlcGxhY2UoL1xzL2csIiIpLGc9Wy9OXCooRCkvZywvKE58RClbKlwvXU4vZywvKE58RClPXDEvZywvXCgoTnxEKVwpL2ddLGg9MDtoPGcubGVuZ3RoOylnW2hdLnRlc3QoZik/KGY9Zi5yZXBsYWNlKGdbaF0sIiQxIiksaD0wKTpoKys7aWYoIkQiPT1mKXtmb3IodmFyIGkgaW4gZCl7dmFyIGo9YyhiLnJlcGxhY2UobmV3IFJlZ0V4cCgiVSIraSwiZyIpLCIiKS5yZXBsYWNlKG5ldyBSZWdFeHAoZSwiZyIpLCIqMCIpKTtpZighaXNGaW5pdGUoaikpcmV0dXJuO2RbaV09an1yZXR1cm4gZH19fWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gZihhLGIsITApfWZ1bmN0aW9uIGYoYixjLGQpe3ZhciBlLGY9W107Zm9yKGUgaW4gYilmLnB1c2goZSk7Zm9yKGUgaW4gYylmLmluZGV4T2YoZSk8MCYmZi5wdXNoKGUpO3JldHVybiBiPWYubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBiW2FdfHwwfSksYz1mLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gY1thXXx8MH0pLFtiLGMsZnVuY3Rpb24oYil7dmFyIGM9Yi5tYXAoZnVuY3Rpb24oYyxlKXtyZXR1cm4gMT09Yi5sZW5ndGgmJmQmJihjPU1hdGgubWF4KGMsMCkpLGEubnVtYmVyVG9TdHJpbmcoYykrZltlXX0pLmpvaW4oIiArICIpO3JldHVybiBiLmxlbmd0aD4xPyJjYWxjKCIrYysiKSI6Y31dfXZhciBnPSJweHxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjIixoPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZywiZyIpKSxpPWQuYmluZChudWxsLG5ldyBSZWdFeHAoZysifCUiLCJnIikpLGo9ZC5iaW5kKG51bGwsL2RlZ3xyYWR8Z3JhZHx0dXJuL2cpO2EucGFyc2VMZW5ndGg9aCxhLnBhcnNlTGVuZ3RoT3JQZXJjZW50PWksYS5jb25zdW1lTGVuZ3RoT3JQZXJjZW50PWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGkpLGEucGFyc2VBbmdsZT1qLGEubWVyZ2VEaW1lbnNpb25zPWY7dmFyIGs9YS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsaCksbD1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxrLC9eLyksbT1hLmNvbnN1bWVSZXBlYXRlZC5iaW5kKHZvaWQgMCxsLC9eLC8pO2EuY29uc3VtZVNpemVQYWlyTGlzdD1tO3ZhciBuPWZ1bmN0aW9uKGEpe3ZhciBiPW0oYSk7aWYoYiYmIiI9PWJbMV0pcmV0dXJuIGJbMF19LG89YS5tZXJnZU5lc3RlZFJlcGVhdGVkLmJpbmQodm9pZCAwLGUsIiAiKSxwPWEubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxvLCIsIik7YS5tZXJnZU5vbk5lZ2F0aXZlU2l6ZVBhaXI9byxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKG4scCxbImJhY2tncm91bmQtc2l6ZSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGksZSxbImJvcmRlci1ib3R0b20td2lkdGgiLCJib3JkZXItaW1hZ2Utd2lkdGgiLCJib3JkZXItbGVmdC13aWR0aCIsImJvcmRlci1yaWdodC13aWR0aCIsImJvcmRlci10b3Atd2lkdGgiLCJmbGV4LWJhc2lzIiwiZm9udC1zaXplIiwiaGVpZ2h0IiwibGluZS1oZWlnaHQiLCJtYXgtaGVpZ2h0IiwibWF4LXdpZHRoIiwib3V0bGluZS13aWR0aCIsIndpZHRoIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaSxmLFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwiYm90dG9tIiwibGVmdCIsImxldHRlci1zcGFjaW5nIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsIm1pbi1oZWlnaHQiLCJtaW4td2lkdGgiLCJvdXRsaW5lLW9mZnNldCIsInBhZGRpbmctYm90dG9tIiwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCIsInBhZGRpbmctdG9wIiwicGVyc3BlY3RpdmUiLCJyaWdodCIsInNoYXBlLW1hcmdpbiIsInN0cm9rZS1kYXNob2Zmc2V0IiwidGV4dC1pbmRlbnQiLCJ0b3AiLCJ2ZXJ0aWNhbC1hbGlnbiIsIndvcmQtc3BhY2luZyJdKX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGIpe3JldHVybiBhLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYil8fGEuY29uc3VtZVRva2VuKC9eYXV0by8sYil9ZnVuY3Rpb24gZChiKXt2YXIgZD1hLmNvbnN1bWVMaXN0KFthLmlnbm9yZShhLmNvbnN1bWVUb2tlbi5iaW5kKG51bGwsL15yZWN0LykpLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwoLykpLGEuY29uc3VtZVJlcGVhdGVkLmJpbmQobnVsbCxjLC9eLC8pLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwpLykpXSxiKTtpZihkJiY0PT1kWzBdLmxlbmd0aClyZXR1cm4gZFswXX1mdW5jdGlvbiBlKGIsYyl7cmV0dXJuImF1dG8iPT1ifHwiYXV0byI9PWM/WyEwLCExLGZ1bmN0aW9uKGQpe3ZhciBlPWQ/YjpjO2lmKCJhdXRvIj09ZSlyZXR1cm4iYXV0byI7dmFyIGY9YS5tZXJnZURpbWVuc2lvbnMoZSxlKTtyZXR1cm4gZlsyXShmWzBdKX1dOmEubWVyZ2VEaW1lbnNpb25zKGIsYyl9ZnVuY3Rpb24gZihhKXtyZXR1cm4icmVjdCgiK2ErIikifXZhciBnPWEubWVyZ2VXcmFwcGVkTmVzdGVkUmVwZWF0ZWQuYmluZChudWxsLGYsZSwiLCAiKTthLnBhcnNlQm94PWQsYS5tZXJnZUJveGVzPWcsYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihkLGcsWyJjbGlwIl0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPTA7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09az9iW2MrK106YX0pfX1mdW5jdGlvbiBkKGEpe3JldHVybiBhfWZ1bmN0aW9uIGUoYil7aWYoIm5vbmUiPT0oYj1iLnRvTG93ZXJDYXNlKCkudHJpbSgpKSlyZXR1cm5bXTtmb3IodmFyIGMsZD0vXHMqKFx3KylcKChbXildKilcKS9nLGU9W10sZj0wO2M9ZC5leGVjKGIpOyl7aWYoYy5pbmRleCE9ZilyZXR1cm47Zj1jLmluZGV4K2NbMF0ubGVuZ3RoO3ZhciBnPWNbMV0saD1uW2ddO2lmKCFoKXJldHVybjt2YXIgaT1jWzJdLnNwbGl0KCIsIiksaj1oWzBdO2lmKGoubGVuZ3RoPGkubGVuZ3RoKXJldHVybjtmb3IodmFyIGs9W10sbz0wO288ai5sZW5ndGg7bysrKXt2YXIgcCxxPWlbb10scj1qW29dO2lmKHZvaWQgMD09PShwPXE/e0E6ZnVuY3Rpb24oYil7cmV0dXJuIjAiPT1iLnRyaW0oKT9tOmEucGFyc2VBbmdsZShiKX0sTjphLnBhcnNlTnVtYmVyLFQ6YS5wYXJzZUxlbmd0aE9yUGVyY2VudCxMOmEucGFyc2VMZW5ndGh9W3IudG9VcHBlckNhc2UoKV0ocSk6e2E6bSxuOmtbMF0sdDpsfVtyXSkpcmV0dXJuO2sucHVzaChwKX1pZihlLnB1c2goe3Q6ZyxkOmt9KSxkLmxhc3RJbmRleD09Yi5sZW5ndGgpcmV0dXJuIGV9fWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEudG9GaXhlZCg2KS5yZXBsYWNlKCIuMDAwMDAwIiwiIil9ZnVuY3Rpb24gZyhiLGMpe2lmKGIuZGVjb21wb3NpdGlvblBhaXIhPT1jKXtiLmRlY29tcG9zaXRpb25QYWlyPWM7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbihiKX1pZihjLmRlY29tcG9zaXRpb25QYWlyIT09Yil7Yy5kZWNvbXBvc2l0aW9uUGFpcj1iO3ZhciBlPWEubWFrZU1hdHJpeERlY29tcG9zaXRpb24oYyl9cmV0dXJuIG51bGw9PWRbMF18fG51bGw9PWVbMF0/W1shMV0sWyEwXSxmdW5jdGlvbihhKXtyZXR1cm4gYT9jWzBdLmQ6YlswXS5kfV06KGRbMF0ucHVzaCgwKSxlWzBdLnB1c2goMSksW2QsZSxmdW5jdGlvbihiKXt2YXIgYz1hLnF1YXQoZFswXVszXSxlWzBdWzNdLGJbNV0pO3JldHVybiBhLmNvbXBvc2VNYXRyaXgoYlswXSxiWzFdLGJbMl0sYyxiWzRdKS5tYXAoZikuam9pbigiLCIpfV0pfWZ1bmN0aW9uIGgoYSl7cmV0dXJuIGEucmVwbGFjZSgvW3h5XS8sIiIpfWZ1bmN0aW9uIGkoYSl7cmV0dXJuIGEucmVwbGFjZSgvKHh8eXx6fDNkKT8kLywiM2QiKX1mdW5jdGlvbiBqKGIsYyl7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbiYmITAsZT0hMTtpZighYi5sZW5ndGh8fCFjLmxlbmd0aCl7Yi5sZW5ndGh8fChlPSEwLGI9YyxjPVtdKTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGo9YltmXS50LGs9YltmXS5kLGw9InNjYWxlIj09ai5zdWJzdHIoMCw1KT8xOjA7Yy5wdXNoKHt0OmosZDprLm1hcChmdW5jdGlvbihhKXtpZigibnVtYmVyIj09dHlwZW9mIGEpcmV0dXJuIGw7dmFyIGI9e307Zm9yKHZhciBjIGluIGEpYltjXT1sO3JldHVybiBifSl9KX19dmFyIG09ZnVuY3Rpb24oYSxiKXtyZXR1cm4icGVyc3BlY3RpdmUiPT1hJiYicGVyc3BlY3RpdmUiPT1ifHwoIm1hdHJpeCI9PWF8fCJtYXRyaXgzZCI9PWEpJiYoIm1hdHJpeCI9PWJ8fCJtYXRyaXgzZCI9PWIpfSxvPVtdLHA9W10scT1bXTtpZihiLmxlbmd0aCE9Yy5sZW5ndGgpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dfWVsc2UgZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBqLHM9YltmXS50LHQ9Y1tmXS50LHU9YltmXS5kLHY9Y1tmXS5kLHc9bltzXSx4PW5bdF07aWYobShzLHQpKXtpZighZClyZXR1cm47dmFyIHI9ZyhbYltmXV0sW2NbZl1dKTtvLnB1c2goclswXSkscC5wdXNoKHJbMV0pLHEucHVzaChbIm1hdHJpeCIsW3JbMl1dXSl9ZWxzZXtpZihzPT10KWo9cztlbHNlIGlmKHdbMl0mJnhbMl0mJmgocyk9PWgodCkpaj1oKHMpLHU9d1syXSh1KSx2PXhbMl0odik7ZWxzZXtpZighd1sxXXx8IXhbMV18fGkocykhPWkodCkpe2lmKCFkKXJldHVybjt2YXIgcj1nKGIsYyk7bz1bclswXV0scD1bclsxXV0scT1bWyJtYXRyaXgiLFtyWzJdXV1dO2JyZWFrfWo9aShzKSx1PXdbMV0odSksdj14WzFdKHYpfWZvcih2YXIgeT1bXSx6PVtdLEE9W10sQj0wO0I8dS5sZW5ndGg7QisrKXt2YXIgQz0ibnVtYmVyIj09dHlwZW9mIHVbQl0/YS5tZXJnZU51bWJlcnM6YS5tZXJnZURpbWVuc2lvbnMscj1DKHVbQl0sdltCXSk7eVtCXT1yWzBdLHpbQl09clsxXSxBLnB1c2goclsyXSl9by5wdXNoKHkpLHAucHVzaCh6KSxxLnB1c2goW2osQV0pfX1pZihlKXt2YXIgRD1vO289cCxwPUR9cmV0dXJuW28scCxmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm1hcChmdW5jdGlvbihhLGMpe3JldHVybiBxW2JdWzFdW2NdKGEpfSkuam9pbigiLCIpO3JldHVybiJtYXRyaXgiPT1xW2JdWzBdJiYxNj09Yy5zcGxpdCgiLCIpLmxlbmd0aCYmKHFbYl1bMF09Im1hdHJpeDNkIikscVtiXVswXSsiKCIrYysiKSJ9KS5qb2luKCIgIil9XX12YXIgaz1udWxsLGw9e3B4OjB9LG09e2RlZzowfSxuPXttYXRyaXg6WyJOTk5OTk4iLFtrLGssMCwwLGssaywwLDAsMCwwLDEsMCxrLGssMCwxXSxkXSxtYXRyaXgzZDpbIk5OTk5OTk5OTk5OTk5OTk4iLGRdLHJvdGF0ZTpbIkEiXSxyb3RhdGV4OlsiQSJdLHJvdGF0ZXk6WyJBIl0scm90YXRlejpbIkEiXSxyb3RhdGUzZDpbIk5OTkEiXSxwZXJzcGVjdGl2ZTpbIkwiXSxzY2FsZTpbIk5uIixjKFtrLGssMV0pLGRdLHNjYWxleDpbIk4iLGMoW2ssMSwxXSksYyhbaywxXSldLHNjYWxleTpbIk4iLGMoWzEsaywxXSksYyhbMSxrXSldLHNjYWxlejpbIk4iLGMoWzEsMSxrXSldLHNjYWxlM2Q6WyJOTk4iLGRdLHNrZXc6WyJBYSIsbnVsbCxkXSxza2V3eDpbIkEiLG51bGwsYyhbayxtXSldLHNrZXd5OlsiQSIsbnVsbCxjKFttLGtdKV0sdHJhbnNsYXRlOlsiVHQiLGMoW2ssayxsXSksZF0sdHJhbnNsYXRleDpbIlQiLGMoW2ssbCxsXSksYyhbayxsXSldLHRyYW5zbGF0ZXk6WyJUIixjKFtsLGssbF0pLGMoW2wsa10pXSx0cmFuc2xhdGV6OlsiTCIsYyhbbCxsLGtdKV0sdHJhbnNsYXRlM2Q6WyJUVEwiLGRdfTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaixbInRyYW5zZm9ybSJdKSxhLnRyYW5zZm9ybVRvU3ZnTWF0cml4PWZ1bmN0aW9uKGIpe3ZhciBjPWEudHJhbnNmb3JtTGlzdFRvTWF0cml4KGUoYikpO3JldHVybiJtYXRyaXgoIitmKGNbMF0pKyIgIitmKGNbMV0pKyIgIitmKGNbNF0pKyIgIitmKGNbNV0pKyIgIitmKGNbMTJdKSsiICIrZihjWzEzXSkrIikifX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7Yi5jb25jYXQoW2FdKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlJiYoZFthXT1iKSxlW2JdPWF9KX12YXIgZD17fSxlPXt9O2MoInRyYW5zZm9ybSIsWyJ3ZWJraXRUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSJdKSxjKCJ0cmFuc2Zvcm1PcmlnaW4iLFsid2Via2l0VHJhbnNmb3JtT3JpZ2luIl0pLGMoInBlcnNwZWN0aXZlIixbIndlYmtpdFBlcnNwZWN0aXZlIl0pLGMoInBlcnNwZWN0aXZlT3JpZ2luIixbIndlYmtpdFBlcnNwZWN0aXZlT3JpZ2luIl0pLGEucHJvcGVydHlOYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBkW2FdfHxhfSxhLnVucHJlZml4ZWRQcm9wZXJ0eU5hbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGVbYV18fGF9fShiKX0oKSxmdW5jdGlvbigpe2lmKHZvaWQgMD09PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLmFuaW1hdGUoW10pLm9uY2FuY2VsKXt2YXIgYTtpZih3aW5kb3cucGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdyl2YXIgYT1mdW5jdGlvbigpe3JldHVybiBwZXJmb3JtYW5jZS5ub3coKX07ZWxzZSB2YXIgYT1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfTt2YXIgYj1mdW5jdGlvbihhLGIsYyl7dGhpcy50YXJnZXQ9YSx0aGlzLmN1cnJlbnRUaW1lPWIsdGhpcy50aW1lbGluZVRpbWU9Yyx0aGlzLnR5cGU9ImNhbmNlbCIsdGhpcy5idWJibGVzPSExLHRoaXMuY2FuY2VsYWJsZT0hMSx0aGlzLmN1cnJlbnRUYXJnZXQ9YSx0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITEsdGhpcy5ldmVudFBoYXNlPUV2ZW50LkFUX1RBUkdFVCx0aGlzLnRpbWVTdGFtcD1EYXRlLm5vdygpfSxjPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlO3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGQsZSl7dmFyIGY9Yy5jYWxsKHRoaXMsZCxlKTtmLl9jYW5jZWxIYW5kbGVycz1bXSxmLm9uY2FuY2VsPW51bGw7dmFyIGc9Zi5jYW5jZWw7Zi5jYW5jZWw9ZnVuY3Rpb24oKXtnLmNhbGwodGhpcyk7dmFyIGM9bmV3IGIodGhpcyxudWxsLGEoKSksZD10aGlzLl9jYW5jZWxIYW5kbGVycy5jb25jYXQodGhpcy5vbmNhbmNlbD9bdGhpcy5vbmNhbmNlbF06W10pO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jYWxsKGMudGFyZ2V0LGMpfSl9LDApfTt2YXIgaD1mLmFkZEV2ZW50TGlzdGVuZXI7Zi5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7ImZ1bmN0aW9uIj09dHlwZW9mIGImJiJjYW5jZWwiPT1hP3RoaXMuX2NhbmNlbEhhbmRsZXJzLnB1c2goYik6aC5jYWxsKHRoaXMsYSxiKX07dmFyIGk9Zi5yZW1vdmVFdmVudExpc3RlbmVyO3JldHVybiBmLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtpZigiY2FuY2VsIj09YSl7dmFyIGM9dGhpcy5fY2FuY2VsSGFuZGxlcnMuaW5kZXhPZihiKTtjPj0wJiZ0aGlzLl9jYW5jZWxIYW5kbGVycy5zcGxpY2UoYywxKX1lbHNlIGkuY2FsbCh0aGlzLGEsYil9LGZ9fX0oKSxmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYz1udWxsLGQ9ITE7dHJ5e3ZhciBlPWdldENvbXB1dGVkU3R5bGUoYikuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpLGY9IjAiPT1lPyIxIjoiMCI7Yz1iLmFuaW1hdGUoe29wYWNpdHk6W2YsZl19LHtkdXJhdGlvbjoxfSksYy5jdXJyZW50VGltZT0wLGQ9Z2V0Q29tcHV0ZWRTdHlsZShiKS5nZXRQcm9wZXJ0eVZhbHVlKCJvcGFjaXR5Iik9PWZ9Y2F0Y2goYSl7fWZpbmFsbHl7YyYmYy5jYW5jZWwoKX1pZighZCl7dmFyIGc9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24oYixjKXtyZXR1cm4gd2luZG93LlN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yJiZBcnJheS5wcm90b3R5cGUuZnJvbSYmYltTeW1ib2wuaXRlcmF0b3JdJiYoYj1BcnJheS5mcm9tKGIpKSxBcnJheS5pc0FycmF5KGIpfHxudWxsPT09Ynx8KGI9YS5jb252ZXJ0VG9BcnJheUZvcm0oYikpLGcuY2FsbCh0aGlzLGIsYyl9fX0oYSksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7dmFyIGM9Yi50aW1lbGluZTtjLmN1cnJlbnRUaW1lPWEsYy5fZGlzY2FyZEFuaW1hdGlvbnMoKSwwPT1jLl9hbmltYXRpb25zLmxlbmd0aD9mPSExOnJlcXVlc3RBbmltYXRpb25GcmFtZShkKX12YXIgZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lO3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7cmV0dXJuIGUoZnVuY3Rpb24oYyl7Yi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYShjKSxiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKX0pfSxiLkFuaW1hdGlvblRpbWVsaW5lPWZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXZvaWQgMH0sYi5BbmltYXRpb25UaW1lbGluZS5wcm90b3R5cGU9e2dldEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzY2FyZEFuaW1hdGlvbnMoKSx0aGlzLl9hbmltYXRpb25zLnNsaWNlKCl9LF91cGRhdGVBbmltYXRpb25zUHJvbWlzZXM6ZnVuY3Rpb24oKXtiLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXM9Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5fdXBkYXRlUHJvbWlzZXMoKX0pfSxfZGlzY2FyZEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb25zPXRoaXMuX2FuaW1hdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiJmaW5pc2hlZCIhPWEucGxheVN0YXRlJiYiaWRsZSIhPWEucGxheVN0YXRlfSl9LF9wbGF5OmZ1bmN0aW9uKGEpe3ZhciBjPW5ldyBiLkFuaW1hdGlvbihhLHRoaXMpO3JldHVybiB0aGlzLl9hbmltYXRpb25zLnB1c2goYyksYi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrKCksYy5fdXBkYXRlUHJvbWlzZXMoKSxjLl9hbmltYXRpb24ucGxheSgpLGMuX3VwZGF0ZVByb21pc2VzKCksY30scGxheTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmYS5yZW1vdmUoKSx0aGlzLl9wbGF5KGEpfX07dmFyIGY9ITE7Yi5yZXN0YXJ0V2ViQW5pbWF0aW9uc05leHRUaWNrPWZ1bmN0aW9uKCl7Znx8KGY9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGQpKX07dmFyIGc9bmV3IGIuQW5pbWF0aW9uVGltZWxpbmU7Yi50aW1lbGluZT1nO3RyeXtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LmRvY3VtZW50LCJ0aW1lbGluZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ319KX1jYXRjaChhKXt9dHJ5e3dpbmRvdy5kb2N1bWVudC50aW1lbGluZT1nfWNhdGNoKGEpe319KDAsYyksZnVuY3Rpb24oYSxiLGMpe2IuYW5pbWF0aW9uc1dpdGhQcm9taXNlcz1bXSxiLkFuaW1hdGlvbj1mdW5jdGlvbihiLGMpe2lmKHRoaXMuaWQ9IiIsYiYmYi5faWQmJih0aGlzLmlkPWIuX2lkKSx0aGlzLmVmZmVjdD1iLGImJihiLl9hbmltYXRpb249dGhpcyksIWMpdGhyb3cgbmV3IEVycm9yKCJBbmltYXRpb24gd2l0aCBudWxsIHRpbWVsaW5lIGlzIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLl90aW1lbGluZT1jLHRoaXMuX3NlcXVlbmNlTnVtYmVyPWEuc2VxdWVuY2VOdW1iZXIrKyx0aGlzLl9ob2xkVGltZT0wLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9pc0dyb3VwPSExLHRoaXMuX2FuaW1hdGlvbj1udWxsLHRoaXMuX2NoaWxkQW5pbWF0aW9ucz1bXSx0aGlzLl9jYWxsYmFjaz1udWxsLHRoaXMuX29sZFBsYXlTdGF0ZT0iaWRsZSIsdGhpcy5fcmVidWlsZFVuZGVybHlpbmdBbmltYXRpb24oKSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sYi5BbmltYXRpb24ucHJvdG90eXBlPXtfdXBkYXRlUHJvbWlzZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9vbGRQbGF5U3RhdGUsYj10aGlzLnBsYXlTdGF0ZTtyZXR1cm4gdGhpcy5fcmVhZHlQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0UmVhZHlQcm9taXNlKCksdGhpcy5fcmVhZHlQcm9taXNlPXZvaWQgMCk6InBlbmRpbmciPT1hP3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2UoKToicGVuZGluZyI9PWImJih0aGlzLl9yZWFkeVByb21pc2U9dm9pZCAwKSksdGhpcy5fZmluaXNoZWRQcm9taXNlJiZiIT09YSYmKCJpZGxlIj09Yj8odGhpcy5fcmVqZWN0RmluaXNoZWRQcm9taXNlKCksdGhpcy5fZmluaXNoZWRQcm9taXNlPXZvaWQgMCk6ImZpbmlzaGVkIj09Yj90aGlzLl9yZXNvbHZlRmluaXNoZWRQcm9taXNlKCk6ImZpbmlzaGVkIj09YSYmKHRoaXMuX2ZpbmlzaGVkUHJvbWlzZT12b2lkIDApKSx0aGlzLl9vbGRQbGF5U3RhdGU9dGhpcy5wbGF5U3RhdGUsdGhpcy5fcmVhZHlQcm9taXNlfHx0aGlzLl9maW5pc2hlZFByb21pc2V9LF9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGEsYyxkLGUsZj0hIXRoaXMuX2FuaW1hdGlvbjtmJiYoYT10aGlzLnBsYXliYWNrUmF0ZSxjPXRoaXMuX3BhdXNlZCxkPXRoaXMuc3RhcnRUaW1lLGU9dGhpcy5jdXJyZW50VGltZSx0aGlzLl9hbmltYXRpb24uY2FuY2VsKCksdGhpcy5fYW5pbWF0aW9uLl93cmFwcGVyPW51bGwsdGhpcy5fYW5pbWF0aW9uPW51bGwpLCghdGhpcy5lZmZlY3R8fHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93LktleWZyYW1lRWZmZWN0KSYmKHRoaXMuX2FuaW1hdGlvbj1iLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdCh0aGlzLmVmZmVjdCksYi5iaW5kQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3QodGhpcykpLCh0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdHx8dGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuR3JvdXBFZmZlY3QpJiYodGhpcy5fYW5pbWF0aW9uPWIubmV3VW5kZXJseWluZ0FuaW1hdGlvbkZvckdyb3VwKHRoaXMuZWZmZWN0KSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cCh0aGlzKSksdGhpcy5lZmZlY3QmJnRoaXMuZWZmZWN0Ll9vbnNhbXBsZSYmYi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0KHRoaXMpLGYmJigxIT1hJiYodGhpcy5wbGF5YmFja1JhdGU9YSksbnVsbCE9PWQ/dGhpcy5zdGFydFRpbWU9ZDpudWxsIT09ZT90aGlzLmN1cnJlbnRUaW1lPWU6bnVsbCE9PXRoaXMuX2hvbGRUaW1lJiYodGhpcy5jdXJyZW50VGltZT10aGlzLl9ob2xkVGltZSksYyYmdGhpcy5wYXVzZSgpKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oKXtpZih0aGlzLmVmZmVjdCYmImlkbGUiIT10aGlzLnBsYXlTdGF0ZSl7dmFyIGE9dGhpcy5lZmZlY3QuX3RpbWluZy5kZWxheTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbihjKXt0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oYyxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMuZWZmZWN0KSl9LmJpbmQodGhpcykpfX0sX3NldEV4dGVybmFsQW5pbWF0aW9uOmZ1bmN0aW9uKGEpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKWZvcih2YXIgYj0wO2I8dGhpcy5lZmZlY3QuY2hpbGRyZW4ubGVuZ3RoO2IrKyl0aGlzLmVmZmVjdC5jaGlsZHJlbltiXS5fYW5pbWF0aW9uPWEsdGhpcy5fY2hpbGRBbmltYXRpb25zW2JdLl9zZXRFeHRlcm5hbEFuaW1hdGlvbihhKX0sX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9uczpmdW5jdGlvbigpe2lmKHRoaXMuZWZmZWN0JiZ0aGlzLl9pc0dyb3VwKXt2YXIgYT10aGlzLmVmZmVjdC5fdGltaW5nLmRlbGF5O3RoaXMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpLHRoaXMuZWZmZWN0LmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9Yi50aW1lbGluZS5fcGxheShjKTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMucHVzaChkKSxkLnBsYXliYWNrUmF0ZT10aGlzLnBsYXliYWNrUmF0ZSx0aGlzLl9wYXVzZWQmJmQucGF1c2UoKSxjLl9hbmltYXRpb249dGhpcy5lZmZlY3QuX2FuaW1hdGlvbix0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oZCxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMpKX0uYmluZCh0aGlzKSl9fSxfYXJyYW5nZUNoaWxkcmVuOmZ1bmN0aW9uKGEsYil7bnVsbD09PXRoaXMuc3RhcnRUaW1lP2EuY3VycmVudFRpbWU9dGhpcy5jdXJyZW50VGltZS1iL3RoaXMucGxheWJhY2tSYXRlOmEuc3RhcnRUaW1lIT09dGhpcy5zdGFydFRpbWUrYi90aGlzLnBsYXliYWNrUmF0ZSYmKGEuc3RhcnRUaW1lPXRoaXMuc3RhcnRUaW1lK2IvdGhpcy5wbGF5YmFja1JhdGUpfSxnZXQgdGltZWxpbmUoKXtyZXR1cm4gdGhpcy5fdGltZWxpbmV9LGdldCBwbGF5U3RhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGU6ImlkbGUifSxnZXQgZmluaXNoZWQoKXtyZXR1cm4gd2luZG93LlByb21pc2U/KHRoaXMuX2ZpbmlzaGVkUHJvbWlzZXx8KC0xPT1iLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXMuaW5kZXhPZih0aGlzKSYmYi5hbmltYXRpb25zV2l0aFByb21pc2VzLnB1c2godGhpcyksdGhpcy5fZmluaXNoZWRQcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsYil7dGhpcy5fcmVzb2x2ZUZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2EodGhpcyl9LHRoaXMuX3JlamVjdEZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2Ioe3R5cGU6RE9NRXhjZXB0aW9uLkFCT1JUX0VSUixuYW1lOiJBYm9ydEVycm9yIn0pfX0uYmluZCh0aGlzKSksImZpbmlzaGVkIj09dGhpcy5wbGF5U3RhdGUmJnRoaXMuX3Jlc29sdmVGaW5pc2hlZFByb21pc2UoKSksdGhpcy5fZmluaXNoZWRQcm9taXNlKTooY29uc29sZS53YXJuKCJBbmltYXRpb24gUHJvbWlzZXMgcmVxdWlyZSBKYXZhU2NyaXB0IFByb21pc2UgY29uc3RydWN0b3IiKSxudWxsKX0sZ2V0IHJlYWR5KCl7cmV0dXJuIHdpbmRvdy5Qcm9taXNlPyh0aGlzLl9yZWFkeVByb21pc2V8fCgtMT09Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmluZGV4T2YodGhpcykmJmIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5wdXNoKHRoaXMpLHRoaXMuX3JlYWR5UHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGIpe3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXthKHRoaXMpfSx0aGlzLl9yZWplY3RSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXtiKHt0eXBlOkRPTUV4Y2VwdGlvbi5BQk9SVF9FUlIsbmFtZToiQWJvcnRFcnJvciJ9KX19LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9PXRoaXMucGxheVN0YXRlJiZ0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCkpLHRoaXMuX3JlYWR5UHJvbWlzZSk6KGNvbnNvbGUud2FybigiQW5pbWF0aW9uIFByb21pc2VzIHJlcXVpcmUgSmF2YVNjcmlwdCBQcm9taXNlIGNvbnN0cnVjdG9yIiksbnVsbCl9LGdldCBvbmZpbmlzaCgpe3JldHVybiB0aGlzLl9hbmltYXRpb24ub25maW5pc2h9LHNldCBvbmZpbmlzaChhKXt0aGlzLl9hbmltYXRpb24ub25maW5pc2g9ImZ1bmN0aW9uIj09dHlwZW9mIGE/ZnVuY3Rpb24oYil7Yi50YXJnZXQ9dGhpcyxhLmNhbGwodGhpcyxiKX0uYmluZCh0aGlzKTphfSxnZXQgb25jYW5jZWwoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsfSxzZXQgb25jYW5jZWwoYSl7dGhpcy5fYW5pbWF0aW9uLm9uY2FuY2VsPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2Z1bmN0aW9uKGIpe2IudGFyZ2V0PXRoaXMsYS5jYWxsKHRoaXMsYil9LmJpbmQodGhpcyk6YX0sZ2V0IGN1cnJlbnRUaW1lKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKTt2YXIgYT10aGlzLl9hbmltYXRpb24uY3VycmVudFRpbWU7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2VzKCksYX0sc2V0IGN1cnJlbnRUaW1lKGEpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmN1cnJlbnRUaW1lPWlzRmluaXRlKGEpP2E6TWF0aC5zaWduKGEpKk51bWJlci5NQVhfVkFMVUUsdGhpcy5fcmVnaXN0ZXIoKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYixjKXtiLmN1cnJlbnRUaW1lPWEtY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBzdGFydFRpbWUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnN0YXJ0VGltZX0sc2V0IHN0YXJ0VGltZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5zdGFydFRpbWU9aXNGaW5pdGUoYSk/YTpNYXRoLnNpZ24oYSkqTnVtYmVyLk1BWF9WQUxVRSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiLGMpe2Iuc3RhcnRUaW1lPWErY30pLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZX0sc2V0IHBsYXliYWNrUmF0ZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBiPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fYW5pbWF0aW9uLnBsYXliYWNrUmF0ZT1hLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiKXtiLnBsYXliYWNrUmF0ZT1hfSksbnVsbCE9PWImJih0aGlzLmN1cnJlbnRUaW1lPWIpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LHBsYXk6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9hbmltYXRpb24ucGxheSgpLC0xPT10aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5pbmRleE9mKHRoaXMpJiZ0aGlzLl90aW1lbGluZS5fYW5pbWF0aW9ucy5wdXNoKHRoaXMpLHRoaXMuX3JlZ2lzdGVyKCksYi5hd2FpdFN0YXJ0VGltZSh0aGlzKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7dmFyIGI9YS5jdXJyZW50VGltZTthLnBsYXkoKSxhLmN1cnJlbnRUaW1lPWJ9KSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5jdXJyZW50VGltZSYmKHRoaXMuX2hvbGRUaW1lPXRoaXMuY3VycmVudFRpbWUpLHRoaXMuX2FuaW1hdGlvbi5wYXVzZSgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGEpe2EucGF1c2UoKX0pLHRoaXMuX3BhdXNlZD0hMCx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxmaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5maW5pc2goKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGE9dGhpcy5jdXJyZW50VGltZTt0aGlzLl9hbmltYXRpb24ucmV2ZXJzZSgpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihhKXthLnJldmVyc2UoKX0pLG51bGwhPT1hJiYodGhpcy5jdXJyZW50VGltZT1hKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YjsiZnVuY3Rpb24iPT10eXBlb2YgYiYmKGM9ZnVuY3Rpb24oYSl7YS50YXJnZXQ9dGhpcyxiLmNhbGwodGhpcyxhKX0uYmluZCh0aGlzKSxiLl93cmFwcGVyPWMpLHRoaXMuX2FuaW1hdGlvbi5hZGRFdmVudExpc3RlbmVyKGEsYyl9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLl9hbmltYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGImJmIuX3dyYXBwZXJ8fGIpfSxfcmVtb3ZlQ2hpbGRBbmltYXRpb25zOmZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9jaGlsZEFuaW1hdGlvbnMubGVuZ3RoOyl0aGlzLl9jaGlsZEFuaW1hdGlvbnMucG9wKCkuY2FuY2VsKCl9LF9mb3JFYWNoQ2hpbGQ6ZnVuY3Rpb24oYil7dmFyIGM9MDtpZih0aGlzLmVmZmVjdC5jaGlsZHJlbiYmdGhpcy5fY2hpbGRBbmltYXRpb25zLmxlbmd0aDx0aGlzLmVmZmVjdC5jaGlsZHJlbi5sZW5ndGgmJnRoaXMuX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9ucygpLHRoaXMuX2NoaWxkQW5pbWF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IuY2FsbCh0aGlzLGEsYyksdGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3QmJihjKz1hLmVmZmVjdC5hY3RpdmVEdXJhdGlvbil9LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9dGhpcy5wbGF5U3RhdGUpe3ZhciBkPXRoaXMuZWZmZWN0Ll90aW1pbmcsZT10aGlzLmN1cnJlbnRUaW1lO251bGwhPT1lJiYoZT1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZCksZSxkKSksKG51bGw9PWV8fGlzTmFOKGUpKSYmdGhpcy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCl9fX0sd2luZG93LkFuaW1hdGlvbj1iLkFuaW1hdGlvbn0oYSxjKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChiKXt0aGlzLl9mcmFtZXM9YS5ub3JtYWxpemVLZXlmcmFtZXMoYil9ZnVuY3Rpb24gZSgpe2Zvcih2YXIgYT0hMTtpLmxlbmd0aDspaS5zaGlmdCgpLl91cGRhdGVDaGlsZHJlbigpLGE9ITA7cmV0dXJuIGF9dmFyIGY9ZnVuY3Rpb24oYSl7aWYoYS5fYW5pbWF0aW9uPXZvaWQgMCxhIGluc3RhbmNlb2Ygd2luZG93LlNlcXVlbmNlRWZmZWN0fHxhIGluc3RhbmNlb2Ygd2luZG93Lkdyb3VwRWZmZWN0KWZvcih2YXIgYj0wO2I8YS5jaGlsZHJlbi5sZW5ndGg7YisrKWYoYS5jaGlsZHJlbltiXSl9O2IucmVtb3ZlTXVsdGk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXTtkLl9wYXJlbnQ/KC0xPT1iLmluZGV4T2YoZC5fcGFyZW50KSYmYi5wdXNoKGQuX3BhcmVudCksZC5fcGFyZW50LmNoaWxkcmVuLnNwbGljZShkLl9wYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihkKSwxKSxkLl9wYXJlbnQ9bnVsbCxmKGQpKTpkLl9hbmltYXRpb24mJmQuX2FuaW1hdGlvbi5lZmZlY3Q9PWQmJihkLl9hbmltYXRpb24uY2FuY2VsKCksZC5fYW5pbWF0aW9uLmVmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSksZC5fYW5pbWF0aW9uLl9jYWxsYmFjayYmKGQuX2FuaW1hdGlvbi5fY2FsbGJhY2suX2FuaW1hdGlvbj1udWxsKSxkLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCksZihkKSl9Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKyliW2NdLl9yZWJ1aWxkKCl9LGIuS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYixjLGUsZil7cmV0dXJuIHRoaXMudGFyZ2V0PWIsdGhpcy5fcGFyZW50PW51bGwsZT1hLm51bWVyaWNUaW1pbmdUb09iamVjdChlKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoZSksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoZSksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGUsITEsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJmdW5jdGlvbiI9PXR5cGVvZiBjPyhhLmRlcHJlY2F0ZWQoIkN1c3RvbSBLZXlmcmFtZUVmZmVjdCIsIjIwMTUtMDYtMjIiLCJVc2UgS2V5ZnJhbWVFZmZlY3Qub25zYW1wbGUgaW5zdGVhZC4iKSx0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzPWMpOnRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM9bmV3IGQoYyksdGhpcy5fa2V5ZnJhbWVzPWMsdGhpcy5hY3RpdmVEdXJhdGlvbj1hLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKHRoaXMuX3RpbWluZyksdGhpcy5faWQ9Zix0aGlzfSxiLktleWZyYW1lRWZmZWN0LnByb3RvdHlwZT17Z2V0RnJhbWVzOmZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM/dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lczp0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLl9mcmFtZXN9LHNldCBvbnNhbXBsZShhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5nZXRGcmFtZXMoKSl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgb25zYW1wbGUgb24gY3VzdG9tIGVmZmVjdCBLZXlmcmFtZUVmZmVjdCBpcyBub3Qgc3VwcG9ydGVkLiIpO3RoaXMuX29uc2FtcGxlPWEsdGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LGdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxjbG9uZTpmdW5jdGlvbigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmdldEZyYW1lcygpKXRocm93IG5ldyBFcnJvcigiQ2xvbmluZyBjdXN0b20gZWZmZWN0cyBpcyBub3Qgc3VwcG9ydGVkLiIpO3ZhciBiPW5ldyBLZXlmcmFtZUVmZmVjdCh0aGlzLnRhcmdldCxbXSxhLmNsb25lVGltaW5nSW5wdXQodGhpcy5fdGltaW5nSW5wdXQpLHRoaXMuX2lkKTtyZXR1cm4gYi5fbm9ybWFsaXplZEtleWZyYW1lcz10aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzLGIuX2tleWZyYW1lcz10aGlzLl9rZXlmcmFtZXMsYn0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX07dmFyIGc9RWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZTtFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9IiI7cmV0dXJuIGMmJmMuaWQmJihkPWMuaWQpLGIudGltZWxpbmUuX3BsYXkobmV3IGIuS2V5ZnJhbWVFZmZlY3QodGhpcyxhLGMsZCkpfTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKTtiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXtpZihhKXt2YXIgYj1hLnRhcmdldHx8aCxjPWEuX2tleWZyYW1lczsiZnVuY3Rpb24iPT10eXBlb2YgYyYmKGM9W10pO3ZhciBkPWEuX3RpbWluZ0lucHV0O2QuaWQ9YS5faWR9ZWxzZSB2YXIgYj1oLGM9W10sZD0wO3JldHVybiBnLmFwcGx5KGIsW2MsZF0pfSxiLmJpbmRBbmltYXRpb25Gb3JLZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihhKXthLmVmZmVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIGEuZWZmZWN0Ll9ub3JtYWxpemVkS2V5ZnJhbWVzJiZiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3QoYSl9O3ZhciBpPVtdO2IuYXdhaXRTdGFydFRpbWU9ZnVuY3Rpb24oYSl7bnVsbD09PWEuc3RhcnRUaW1lJiZhLl9pc0dyb3VwJiYoMD09aS5sZW5ndGgmJnJlcXVlc3RBbmltYXRpb25GcmFtZShlKSxpLnB1c2goYSkpfTt2YXIgaj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZTtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCJnZXRDb21wdXRlZFN0eWxlIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtiLnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKTt2YXIgYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZSgpJiYoYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYX19KSx3aW5kb3cuS2V5ZnJhbWVFZmZlY3Q9Yi5LZXlmcmFtZUVmZmVjdCx3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QW5pbWF0aW9ucz1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC50aW1lbGluZS5nZXRBbmltYXRpb25zKCkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT09YS5lZmZlY3QmJmEuZWZmZWN0LnRhcmdldD09dGhpc30uYmluZCh0aGlzKSl9fShhLGMpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe2EuX3JlZ2lzdGVyZWR8fChhLl9yZWdpc3RlcmVkPSEwLGcucHVzaChhKSxofHwoaD0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSkpKX1mdW5jdGlvbiBlKGEpe3ZhciBiPWc7Zz1bXSxiLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5fc2VxdWVuY2VOdW1iZXItYi5fc2VxdWVuY2VOdW1iZXJ9KSxiPWIuZmlsdGVyKGZ1bmN0aW9uKGEpe2EoKTt2YXIgYj1hLl9hbmltYXRpb24/YS5fYW5pbWF0aW9uLnBsYXlTdGF0ZToiaWRsZSI7cmV0dXJuInJ1bm5pbmciIT1iJiYicGVuZGluZyIhPWImJihhLl9yZWdpc3RlcmVkPSExKSxhLl9yZWdpc3RlcmVkfSksZy5wdXNoLmFwcGx5KGcsYiksZy5sZW5ndGg/KGg9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpKTpoPSExfXZhciBmPShkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJkaXYiKSwwKTtiLmJpbmRBbmltYXRpb25Gb3JDdXN0b21FZmZlY3Q9ZnVuY3Rpb24oYil7dmFyIGMsZT1iLmVmZmVjdC50YXJnZXQsZz0iZnVuY3Rpb24iPT10eXBlb2YgYi5lZmZlY3QuZ2V0RnJhbWVzKCk7Yz1nP2IuZWZmZWN0LmdldEZyYW1lcygpOmIuZWZmZWN0Ll9vbnNhbXBsZTt2YXIgaD1iLmVmZmVjdC50aW1pbmcsaT1udWxsO2g9YS5ub3JtYWxpemVUaW1pbmdJbnB1dChoKTt2YXIgaj1mdW5jdGlvbigpe3ZhciBkPWouX2FuaW1hdGlvbj9qLl9hbmltYXRpb24uY3VycmVudFRpbWU6bnVsbDtudWxsIT09ZCYmKGQ9YS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcyhhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKGgpLGQsaCksaXNOYU4oZCkmJihkPW51bGwpKSxkIT09aSYmKGc/YyhkLGUsYi5lZmZlY3QpOmMoZCxiLmVmZmVjdCxiLmVmZmVjdC5fYW5pbWF0aW9uKSksaT1kfTtqLl9hbmltYXRpb249YixqLl9yZWdpc3RlcmVkPSExLGouX3NlcXVlbmNlTnVtYmVyPWYrKyxiLl9jYWxsYmFjaz1qLGQoail9O3ZhciBnPVtdLGg9ITE7Yi5BbmltYXRpb24ucHJvdG90eXBlLl9yZWdpc3Rlcj1mdW5jdGlvbigpe3RoaXMuX2NhbGxiYWNrJiZkKHRoaXMuX2NhbGxiYWNrKX19KGEsYyksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGEuX3RpbWluZy5kZWxheSthLmFjdGl2ZUR1cmF0aW9uK2EuX3RpbWluZy5lbmREZWxheX1mdW5jdGlvbiBlKGIsYyxkKXt0aGlzLl9pZD1kLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49Ynx8W10sdGhpcy5fcmVwYXJlbnQodGhpcy5jaGlsZHJlbiksYz1hLm51bWVyaWNUaW1pbmdUb09iamVjdChjKSx0aGlzLl90aW1pbmdJbnB1dD1hLmNsb25lVGltaW5nSW5wdXQoYyksdGhpcy5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYywhMCksdGhpcy50aW1pbmc9YS5tYWtlVGltaW5nKGMsITAsdGhpcyksdGhpcy50aW1pbmcuX2VmZmVjdD10aGlzLCJhdXRvIj09PXRoaXMuX3RpbWluZy5kdXJhdGlvbiYmKHRoaXMuX3RpbWluZy5kdXJhdGlvbj10aGlzLmFjdGl2ZUR1cmF0aW9uKX13aW5kb3cuU2VxdWVuY2VFZmZlY3Q9ZnVuY3Rpb24oKXtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sd2luZG93Lkdyb3VwRWZmZWN0PWZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUucHJvdG90eXBlPXtfaXNBbmNlc3RvcjpmdW5jdGlvbihhKXtmb3IodmFyIGI9dGhpcztudWxsIT09Yjspe2lmKGI9PWEpcmV0dXJuITA7Yj1iLl9wYXJlbnR9cmV0dXJuITF9LF9yZWJ1aWxkOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXM7YTspImF1dG8iPT09YS50aW1pbmcuZHVyYXRpb24mJihhLl90aW1pbmcuZHVyYXRpb249YS5hY3RpdmVEdXJhdGlvbiksYT1hLl9wYXJlbnQ7dGhpcy5fYW5pbWF0aW9uJiZ0aGlzLl9hbmltYXRpb24uX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCl9LF9yZXBhcmVudDpmdW5jdGlvbihhKXtiLnJlbW92ZU11bHRpKGEpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWFbY10uX3BhcmVudD10aGlzfSxfcHV0Q2hpbGQ6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yj8iQ2Fubm90IGFwcGVuZCBhbiBhbmNlc3RvciBvciBzZWxmIjoiQ2Fubm90IHByZXBlbmQgYW4gYW5jZXN0b3Igb3Igc2VsZiIsZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKHRoaXMuX2lzQW5jZXN0b3IoYVtkXSkpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uSElFUkFSQ0hZX1JFUVVFU1RfRVJSLG5hbWU6IkhpZXJhcmNoeVJlcXVlc3RFcnJvciIsbWVzc2FnZTpjfTtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoO2QrKyliP3RoaXMuY2hpbGRyZW4ucHVzaChhW2RdKTp0aGlzLmNoaWxkcmVuLnVuc2hpZnQoYVtkXSk7dGhpcy5fcmVwYXJlbnQoYSksdGhpcy5fcmVidWlsZCgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wdXRDaGlsZChhcmd1bWVudHMsITApfSxwcmVwZW5kOmZ1bmN0aW9uKCl7dGhpcy5fcHV0Q2hpbGQoYXJndW1lbnRzLCExKX0sZ2V0IHBhcmVudCgpe3JldHVybiB0aGlzLl9wYXJlbnR9LGdldCBmaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuY2hpbGRyZW5bMF06bnVsbH0sZ2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdOm51bGx9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPWEuY2xvbmVUaW1pbmdJbnB1dCh0aGlzLl90aW1pbmdJbnB1dCksYz1bXSxkPTA7ZDx0aGlzLmNoaWxkcmVuLmxlbmd0aDtkKyspYy5wdXNoKHRoaXMuY2hpbGRyZW5bZF0uY2xvbmUoKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBHcm91cEVmZmVjdD9uZXcgR3JvdXBFZmZlY3QoYyxiKTpuZXcgU2VxdWVuY2VFZmZlY3QoYyxiKX0scmVtb3ZlOmZ1bmN0aW9uKCl7Yi5yZW1vdmVNdWx0aShbdGhpc10pfX0sd2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LlNlcXVlbmNlRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YSs9ZChiKX0pLE1hdGgubWF4KGEsMCl9fSksd2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93Lkdyb3VwRWZmZWN0LnByb3RvdHlwZSwiYWN0aXZlRHVyYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgYT0wO3JldHVybiB0aGlzLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYil7YT1NYXRoLm1heChhLGQoYikpfSksYX19KSxiLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihjKXt2YXIgZCxlPW51bGwsZj1mdW5jdGlvbihiKXt2YXIgYz1kLl93cmFwcGVyO2lmKGMmJiJwZW5kaW5nIiE9Yy5wbGF5U3RhdGUmJmMuZWZmZWN0KXJldHVybiBudWxsPT1iP3ZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCk6MD09YiYmYy5wbGF5YmFja1JhdGU8MCYmKGV8fChlPWEubm9ybWFsaXplVGltaW5nSW5wdXQoYy5lZmZlY3QudGltaW5nKSksYj1hLmNhbGN1bGF0ZUl0ZXJhdGlvblByb2dyZXNzKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oZSksLTEsZSksaXNOYU4oYil8fG51bGw9PWIpPyhjLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7YS5jdXJyZW50VGltZT0tMX0pLHZvaWQgYy5fcmVtb3ZlQ2hpbGRBbmltYXRpb25zKCkpOnZvaWQgMH0sZz1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSxjLl90aW1pbmcsYy5faWQpO3JldHVybiBnLm9uc2FtcGxlPWYsZD1iLnRpbWVsaW5lLl9wbGF5KGcpfSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihhKXthLl9hbmltYXRpb24uX3dyYXBwZXI9YSxhLl9pc0dyb3VwPSEwLGIuYXdhaXRTdGFydFRpbWUoYSksYS5fY29uc3RydWN0Q2hpbGRBbmltYXRpb25zKCksYS5fc2V0RXh0ZXJuYWxBbmltYXRpb24oYSl9LGIuZ3JvdXBDaGlsZER1cmF0aW9uPWR9KGEsYyl9KCk7CgooKCk9Pnt2YXIgdXZlPU9iamVjdC5jcmVhdGU7dmFyIFNJPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgaHZlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7dmFyIGZ2ZT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lczt2YXIgcHZlPU9iamVjdC5nZXRQcm90b3R5cGVPZixkdmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgY2R0PU1hdGgucG93O3ZhciBNeD0oZT0+dHlwZW9mIHJlcXVpcmUhPSJ1bmRlZmluZWQiP3JlcXVpcmU6dHlwZW9mIFByb3h5IT0idW5kZWZpbmVkIj9uZXcgUHJveHkoZSx7Z2V0Oih0LHIpPT4odHlwZW9mIHJlcXVpcmUhPSJ1bmRlZmluZWQiP3JlcXVpcmU6dClbcl19KTplKShmdW5jdGlvbihlKXtpZih0eXBlb2YgcmVxdWlyZSE9InVuZGVmaW5lZCIpcmV0dXJuIHJlcXVpcmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3Rocm93IG5ldyBFcnJvcignRHluYW1pYyByZXF1aXJlIG9mICInK2UrJyIgaXMgbm90IHN1cHBvcnRlZCcpfSk7dmFyIE09KGUsdCk9PigpPT4oZSYmKHQ9ZShlPTApKSx0KTt2YXIgSD0oZSx0KT0+KCk9Pih0fHxlKCh0PXtleHBvcnRzOnt9fSkuZXhwb3J0cyx0KSx0LmV4cG9ydHMpLCRzPShlLHQpPT57Zm9yKHZhciByIGluIHQpU0koZSxyLHtnZXQ6dFtyXSxlbnVtZXJhYmxlOiEwfSl9LHVkdD0oZSx0LHIsbik9PntpZih0JiZ0eXBlb2YgdD09Im9iamVjdCJ8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKWZvcihsZXQgaSBvZiBmdmUodCkpIWR2ZS5jYWxsKGUsaSkmJmkhPT1yJiZTSShlLGkse2dldDooKT0+dFtpXSxlbnVtZXJhYmxlOiEobj1odmUodCxpKSl8fG4uZW51bWVyYWJsZX0pO3JldHVybiBlfTt2YXIgRWU9KGUsdCxyKT0+KHI9ZSE9bnVsbD91dmUocHZlKGUpKTp7fSx1ZHQodHx8IWV8fCFlLl9fZXNNb2R1bGU/U0kociwiZGVmYXVsdCIse3ZhbHVlOmUsZW51bWVyYWJsZTohMH0pOnIsZSkpLFV0PWU9PnVkdChTSSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZSk7dmFyIGZwPShlLHQscik9Pm5ldyBQcm9taXNlKChuLGkpPT57dmFyIG89bD0+e3RyeXtzKHIubmV4dChsKSl9Y2F0Y2goYyl7aShjKX19LGE9bD0+e3RyeXtzKHIudGhyb3cobCkpfWNhdGNoKGMpe2koYyl9fSxzPWw9PmwuZG9uZT9uKGwudmFsdWUpOlByb21pc2UucmVzb2x2ZShsLnZhbHVlKS50aGVuKG8sYSk7cygocj1yLmFwcGx5KGUsdCkpLm5leHQoKSl9KTt2YXIga2R0PUgoKHJfcixUSSk9Pnt2YXIgaGR0LGZkdCxwZHQsZGR0LG1kdCxnZHQsX2R0LHlkdCx2ZHQsTUksbEcseGR0LGJkdCx3ZHQsRXgsU2R0LE1kdCxFZHQsVGR0LENkdCxBZHQsUGR0LElkdCxMZHQsRUk7KGZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBnbG9iYWw9PSJvYmplY3QiP2dsb2JhbDp0eXBlb2Ygc2VsZj09Im9iamVjdCI/c2VsZjp0eXBlb2YgdGhpcz09Im9iamVjdCI/dGhpczp7fTt0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZSgidHNsaWIiLFsiZXhwb3J0cyJdLGZ1bmN0aW9uKG4pe2Uocih0LHIobikpKX0pOnR5cGVvZiBUST09Im9iamVjdCImJnR5cGVvZiBUSS5leHBvcnRzPT0ib2JqZWN0Ij9lKHIodCxyKFRJLmV4cG9ydHMpKSk6ZShyKHQpKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG4hPT10JiYodHlwZW9mIE9iamVjdC5jcmVhdGU9PSJmdW5jdGlvbiI/T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pOm4uX19lc01vZHVsZT0hMCksZnVuY3Rpb24obyxhKXtyZXR1cm4gbltvXT1pP2kobyxhKTphfX19KShmdW5jdGlvbihlKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24obixpKXtuLl9fcHJvdG9fXz1pfXx8ZnVuY3Rpb24obixpKXtmb3IodmFyIG8gaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxvKSYmKG5bb109aVtvXSl9O2hkdD1mdW5jdGlvbihuLGkpe2lmKHR5cGVvZiBpIT0iZnVuY3Rpb24iJiZpIT09bnVsbCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKGkpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO3QobixpKTtmdW5jdGlvbiBvKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ufW4ucHJvdG90eXBlPWk9PT1udWxsP09iamVjdC5jcmVhdGUoaSk6KG8ucHJvdG90eXBlPWkucHJvdG90eXBlLG5ldyBvKX0sZmR0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKG4pe2Zvcih2YXIgaSxvPTEsYT1hcmd1bWVudHMubGVuZ3RoO288YTtvKyspe2k9YXJndW1lbnRzW29dO2Zvcih2YXIgcyBpbiBpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiYobltzXT1pW3NdKX1yZXR1cm4gbn0scGR0PWZ1bmN0aW9uKG4saSl7dmFyIG89e307Zm9yKHZhciBhIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sYSkmJmkuaW5kZXhPZihhKTwwJiYob1thXT1uW2FdKTtpZihuIT1udWxsJiZ0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz09ImZ1bmN0aW9uIilmb3IodmFyIHM9MCxhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobik7czxhLmxlbmd0aDtzKyspaS5pbmRleE9mKGFbc10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChuLGFbc10pJiYob1thW3NdXT1uW2Fbc11dKTtyZXR1cm4gb30sZGR0PWZ1bmN0aW9uKG4saSxvLGEpe3ZhciBzPWFyZ3VtZW50cy5sZW5ndGgsbD1zPDM/aTphPT09bnVsbD9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxvKTphLGM7aWYodHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZ0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZT09ImZ1bmN0aW9uIilsPVJlZmxlY3QuZGVjb3JhdGUobixpLG8sYSk7ZWxzZSBmb3IodmFyIHU9bi5sZW5ndGgtMTt1Pj0wO3UtLSkoYz1uW3VdKSYmKGw9KHM8Mz9jKGwpOnM+Mz9jKGksbyxsKTpjKGksbykpfHxsKTtyZXR1cm4gcz4zJiZsJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxvLGwpLGx9LG1kdD1mdW5jdGlvbihuLGkpe3JldHVybiBmdW5jdGlvbihvLGEpe2kobyxhLG4pfX0sZ2R0PWZ1bmN0aW9uKG4saSl7aWYodHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZ0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YT09ImZ1bmN0aW9uIilyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShuLGkpfSxfZHQ9ZnVuY3Rpb24obixpLG8sYSl7ZnVuY3Rpb24gcyhsKXtyZXR1cm4gbCBpbnN0YW5jZW9mIG8/bDpuZXcgbyhmdW5jdGlvbihjKXtjKGwpfSl9cmV0dXJuIG5ldyhvfHwobz1Qcm9taXNlKSkoZnVuY3Rpb24obCxjKXtmdW5jdGlvbiB1KHApe3RyeXtmKGEubmV4dChwKSl9Y2F0Y2goZCl7YyhkKX19ZnVuY3Rpb24gaChwKXt0cnl7ZihhLnRocm93KHApKX1jYXRjaChkKXtjKGQpfX1mdW5jdGlvbiBmKHApe3AuZG9uZT9sKHAudmFsdWUpOnMocC52YWx1ZSkudGhlbih1LGgpfWYoKGE9YS5hcHBseShuLGl8fFtdKSkubmV4dCgpKX0pfSx5ZHQ9ZnVuY3Rpb24obixpKXt2YXIgbz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYobFswXSYxKXRocm93IGxbMV07cmV0dXJuIGxbMV19LHRyeXM6W10sb3BzOltdfSxhLHMsbCxjO3JldHVybiBjPXtuZXh0OnUoMCksdGhyb3c6dSgxKSxyZXR1cm46dSgyKX0sdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmKGNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYztmdW5jdGlvbiB1KGYpe3JldHVybiBmdW5jdGlvbihwKXtyZXR1cm4gaChbZixwXSl9fWZ1bmN0aW9uIGgoZil7aWYoYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtvOyl0cnl7aWYoYT0xLHMmJihsPWZbMF0mMj9zLnJldHVybjpmWzBdP3MudGhyb3d8fCgobD1zLnJldHVybikmJmwuY2FsbChzKSwwKTpzLm5leHQpJiYhKGw9bC5jYWxsKHMsZlsxXSkpLmRvbmUpcmV0dXJuIGw7c3dpdGNoKHM9MCxsJiYoZj1bZlswXSYyLGwudmFsdWVdKSxmWzBdKXtjYXNlIDA6Y2FzZSAxOmw9ZjticmVhaztjYXNlIDQ6cmV0dXJuIG8ubGFiZWwrKyx7dmFsdWU6ZlsxXSxkb25lOiExfTtjYXNlIDU6by5sYWJlbCsrLHM9ZlsxXSxmPVswXTtjb250aW51ZTtjYXNlIDc6Zj1vLm9wcy5wb3AoKSxvLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZihsPW8udHJ5cywhKGw9bC5sZW5ndGg+MCYmbFtsLmxlbmd0aC0xXSkmJihmWzBdPT09Nnx8ZlswXT09PTIpKXtvPTA7Y29udGludWV9aWYoZlswXT09PTMmJighbHx8ZlsxXT5sWzBdJiZmWzFdPGxbM10pKXtvLmxhYmVsPWZbMV07YnJlYWt9aWYoZlswXT09PTYmJm8ubGFiZWw8bFsxXSl7by5sYWJlbD1sWzFdLGw9ZjticmVha31pZihsJiZvLmxhYmVsPGxbMl0pe28ubGFiZWw9bFsyXSxvLm9wcy5wdXNoKGYpO2JyZWFrfWxbMl0mJm8ub3BzLnBvcCgpLG8udHJ5cy5wb3AoKTtjb250aW51ZX1mPWkuY2FsbChuLG8pfWNhdGNoKHApe2Y9WzYscF0scz0wfWZpbmFsbHl7YT1sPTB9aWYoZlswXSY1KXRocm93IGZbMV07cmV0dXJue3ZhbHVlOmZbMF0/ZlsxXTp2b2lkIDAsZG9uZTohMH19fSx2ZHQ9ZnVuY3Rpb24obixpKXtmb3IodmFyIG8gaW4gbilvIT09ImRlZmF1bHQiJiYhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGksbykmJkVJKGksbixvKX0sRUk9T2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihuLGksbyxhKXthPT09dm9pZCAwJiYoYT1vKTt2YXIgcz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksbyk7KCFzfHwoImdldCJpbiBzPyFpLl9fZXNNb2R1bGU6cy53cml0YWJsZXx8cy5jb25maWd1cmFibGUpKSYmKHM9e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGlbb119fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sYSxzKX06ZnVuY3Rpb24obixpLG8sYSl7YT09PXZvaWQgMCYmKGE9byksblthXT1pW29dfSxNST1mdW5jdGlvbihuKXt2YXIgaT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZTeW1ib2wuaXRlcmF0b3Isbz1pJiZuW2ldLGE9MDtpZihvKXJldHVybiBvLmNhbGwobik7aWYobiYmdHlwZW9mIG4ubGVuZ3RoPT0ibnVtYmVyIilyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybiBuJiZhPj1uLmxlbmd0aCYmKG49dm9pZCAwKSx7dmFsdWU6biYmblthKytdLGRvbmU6IW59fX07dGhyb3cgbmV3IFR5cGVFcnJvcihpPyJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLiI6IlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKX0sbEc9ZnVuY3Rpb24obixpKXt2YXIgbz10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZuW1N5bWJvbC5pdGVyYXRvcl07aWYoIW8pcmV0dXJuIG47dmFyIGE9by5jYWxsKG4pLHMsbD1bXSxjO3RyeXtmb3IoOyhpPT09dm9pZCAwfHxpLS0gPjApJiYhKHM9YS5uZXh0KCkpLmRvbmU7KWwucHVzaChzLnZhbHVlKX1jYXRjaCh1KXtjPXtlcnJvcjp1fX1maW5hbGx5e3RyeXtzJiYhcy5kb25lJiYobz1hLnJldHVybikmJm8uY2FsbChhKX1maW5hbGx5e2lmKGMpdGhyb3cgYy5lcnJvcn19cmV0dXJuIGx9LHhkdD1mdW5jdGlvbigpe2Zvcih2YXIgbj1bXSxpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluPW4uY29uY2F0KGxHKGFyZ3VtZW50c1tpXSkpO3JldHVybiBufSxiZHQ9ZnVuY3Rpb24oKXtmb3IodmFyIG49MCxpPTAsbz1hcmd1bWVudHMubGVuZ3RoO2k8bztpKyspbis9YXJndW1lbnRzW2ldLmxlbmd0aDtmb3IodmFyIGE9QXJyYXkobikscz0wLGk9MDtpPG87aSsrKWZvcih2YXIgbD1hcmd1bWVudHNbaV0sYz0wLHU9bC5sZW5ndGg7Yzx1O2MrKyxzKyspYVtzXT1sW2NdO3JldHVybiBhfSx3ZHQ9ZnVuY3Rpb24obixpLG8pe2lmKG98fGFyZ3VtZW50cy5sZW5ndGg9PT0yKWZvcih2YXIgYT0wLHM9aS5sZW5ndGgsbDthPHM7YSsrKShsfHwhKGEgaW4gaSkpJiYobHx8KGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaSwwLGEpKSxsW2FdPWlbYV0pO3JldHVybiBuLmNvbmNhdChsfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpKSl9LEV4PWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzIGluc3RhbmNlb2YgRXg/KHRoaXMudj1uLHRoaXMpOm5ldyBFeChuKX0sU2R0PWZ1bmN0aW9uKG4saSxvKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGE9by5hcHBseShuLGl8fFtdKSxzLGw9W107cmV0dXJuIHM9e30sYygibmV4dCIpLGMoInRocm93IiksYygicmV0dXJuIiksc1tTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scztmdW5jdGlvbiBjKGcpe2FbZ10mJihzW2ddPWZ1bmN0aW9uKF8pe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih5LHgpe2wucHVzaChbZyxfLHkseF0pPjF8fHUoZyxfKX0pfSl9ZnVuY3Rpb24gdShnLF8pe3RyeXtoKGFbZ10oXykpfWNhdGNoKHkpe2QobFswXVszXSx5KX19ZnVuY3Rpb24gaChnKXtnLnZhbHVlIGluc3RhbmNlb2YgRXg/UHJvbWlzZS5yZXNvbHZlKGcudmFsdWUudikudGhlbihmLHApOmQobFswXVsyXSxnKX1mdW5jdGlvbiBmKGcpe3UoIm5leHQiLGcpfWZ1bmN0aW9uIHAoZyl7dSgidGhyb3ciLGcpfWZ1bmN0aW9uIGQoZyxfKXtnKF8pLGwuc2hpZnQoKSxsLmxlbmd0aCYmdShsWzBdWzBdLGxbMF1bMV0pfX0sTWR0PWZ1bmN0aW9uKG4pe3ZhciBpLG87cmV0dXJuIGk9e30sYSgibmV4dCIpLGEoInRocm93IixmdW5jdGlvbihzKXt0aHJvdyBzfSksYSgicmV0dXJuIiksaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGk7ZnVuY3Rpb24gYShzLGwpe2lbc109bltzXT9mdW5jdGlvbihjKXtyZXR1cm4obz0hbyk/e3ZhbHVlOkV4KG5bc10oYykpLGRvbmU6cz09PSJyZXR1cm4ifTpsP2woYyk6Y306bH19LEVkdD1mdW5jdGlvbihuKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIGk9bltTeW1ib2wuYXN5bmNJdGVyYXRvcl0sbztyZXR1cm4gaT9pLmNhbGwobik6KG49dHlwZW9mIE1JPT0iZnVuY3Rpb24iP01JKG4pOm5bU3ltYm9sLml0ZXJhdG9yXSgpLG89e30sYSgibmV4dCIpLGEoInRocm93IiksYSgicmV0dXJuIiksb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sbyk7ZnVuY3Rpb24gYShsKXtvW2xdPW5bbF0mJmZ1bmN0aW9uKGMpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih1LGgpe2M9bltsXShjKSxzKHUsaCxjLmRvbmUsYy52YWx1ZSl9KX19ZnVuY3Rpb24gcyhsLGMsdSxoKXtQcm9taXNlLnJlc29sdmUoaCkudGhlbihmdW5jdGlvbihmKXtsKHt2YWx1ZTpmLGRvbmU6dX0pfSxjKX19LFRkdD1mdW5jdGlvbihuLGkpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHk/T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInJhdyIse3ZhbHVlOml9KTpuLnJhdz1pLG59O3ZhciByPU9iamVjdC5jcmVhdGU/ZnVuY3Rpb24obixpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6aX0pfTpmdW5jdGlvbihuLGkpe24uZGVmYXVsdD1pfTtDZHQ9ZnVuY3Rpb24obil7aWYobiYmbi5fX2VzTW9kdWxlKXJldHVybiBuO3ZhciBpPXt9O2lmKG4hPW51bGwpZm9yKHZhciBvIGluIG4pbyE9PSJkZWZhdWx0IiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJkVJKGksbixvKTtyZXR1cm4gcihpLG4pLGl9LEFkdD1mdW5jdGlvbihuKXtyZXR1cm4gbiYmbi5fX2VzTW9kdWxlP246e2RlZmF1bHQ6bn19LFBkdD1mdW5jdGlvbihuLGksbyxhKXtpZihvPT09ImEiJiYhYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXIiKTtpZih0eXBlb2YgaT09ImZ1bmN0aW9uIj9uIT09aXx8IWE6IWkuaGFzKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdCIpO3JldHVybiBvPT09Im0iP2E6bz09PSJhIj9hLmNhbGwobik6YT9hLnZhbHVlOmkuZ2V0KG4pfSxJZHQ9ZnVuY3Rpb24obixpLG8sYSxzKXtpZihhPT09Im0iKXRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZSIpO2lmKGE9PT0iYSImJiFzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlciIpO2lmKHR5cGVvZiBpPT0iZnVuY3Rpb24iP24hPT1pfHwhczohaS5oYXMobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXQiKTtyZXR1cm4gYT09PSJhIj9zLmNhbGwobixvKTpzP3MudmFsdWU9bzppLnNldChuLG8pLG99LExkdD1mdW5jdGlvbihuLGkpe2lmKGk9PT1udWxsfHx0eXBlb2YgaSE9Im9iamVjdCImJnR5cGVvZiBpIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0Iik7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP2k9PT1uOm4uaGFzKGkpfSxlKCJfX2V4dGVuZHMiLGhkdCksZSgiX19hc3NpZ24iLGZkdCksZSgiX19yZXN0IixwZHQpLGUoIl9fZGVjb3JhdGUiLGRkdCksZSgiX19wYXJhbSIsbWR0KSxlKCJfX21ldGFkYXRhIixnZHQpLGUoIl9fYXdhaXRlciIsX2R0KSxlKCJfX2dlbmVyYXRvciIseWR0KSxlKCJfX2V4cG9ydFN0YXIiLHZkdCksZSgiX19jcmVhdGVCaW5kaW5nIixFSSksZSgiX192YWx1ZXMiLE1JKSxlKCJfX3JlYWQiLGxHKSxlKCJfX3NwcmVhZCIseGR0KSxlKCJfX3NwcmVhZEFycmF5cyIsYmR0KSxlKCJfX3NwcmVhZEFycmF5Iix3ZHQpLGUoIl9fYXdhaXQiLEV4KSxlKCJfX2FzeW5jR2VuZXJhdG9yIixTZHQpLGUoIl9fYXN5bmNEZWxlZ2F0b3IiLE1kdCksZSgiX19hc3luY1ZhbHVlcyIsRWR0KSxlKCJfX21ha2VUZW1wbGF0ZU9iamVjdCIsVGR0KSxlKCJfX2ltcG9ydFN0YXIiLENkdCksZSgiX19pbXBvcnREZWZhdWx0IixBZHQpLGUoIl9fY2xhc3NQcml2YXRlRmllbGRHZXQiLFBkdCksZSgiX19jbGFzc1ByaXZhdGVGaWVsZFNldCIsSWR0KSxlKCJfX2NsYXNzUHJpdmF0ZUZpZWxkSW4iLExkdCl9KX0pO3ZhciBPZT1IKChreCxqTSk9PnsoZnVuY3Rpb24oKXt2YXIgZSx0PSI0LjE3LjIxIixyPTIwMCxuPSJVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cT1wb255ZmlsbC4iLGk9IkV4cGVjdGVkIGEgZnVuY3Rpb24iLG89IkludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgIixhPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIixzPTUwMCxsPSJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fIixjPTEsdT0yLGg9NCxmPTEscD0yLGQ9MSxnPTIsXz00LHk9OCx4PTE2LGI9MzIsUz02NCxDPTEyOCxQPTI1NixrPTUxMixPPTMwLEQ9Ii4uLiIsQj04MDAsST0xNixMPTEsUj0yLEY9Myx6PTEvMCxVPTkwMDcxOTkyNTQ3NDA5OTEsVz0xNzk3NjkzMTM0ODYyMzE1N2UyOTIsWj0wLzAscnQ9NDI5NDk2NzI5NSxvdD1ydC0xLHN0PXJ0Pj4+MSxTdD1bWyJhcnkiLENdLFsiYmluZCIsZF0sWyJiaW5kS2V5IixnXSxbImN1cnJ5Iix5XSxbImN1cnJ5UmlnaHQiLHhdLFsiZmxpcCIsa10sWyJwYXJ0aWFsIixiXSxbInBhcnRpYWxSaWdodCIsU10sWyJyZWFyZyIsUF1dLGJ0PSJbb2JqZWN0IEFyZ3VtZW50c10iLE10PSJbb2JqZWN0IEFycmF5XSIsbHQ9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLEt0PSJbb2JqZWN0IEJvb2xlYW5dIixfdD0iW29iamVjdCBEYXRlXSIsY3Q9IltvYmplY3QgRE9NRXhjZXB0aW9uXSIsWD0iW29iamVjdCBFcnJvcl0iLGV0PSJbb2JqZWN0IEZ1bmN0aW9uXSIsZHQ9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixxPSJbb2JqZWN0IE1hcF0iLHB0PSJbb2JqZWN0IE51bWJlcl0iLGh0PSJbb2JqZWN0IE51bGxdIix3dD0iW29iamVjdCBPYmplY3RdIixrdD0iW29iamVjdCBQcm9taXNlXSIsaWU9IltvYmplY3QgUHJveHldIixlZT0iW29iamVjdCBSZWdFeHBdIixMZT0iW29iamVjdCBTZXRdIixhcj0iW29iamVjdCBTdHJpbmddIixmcj0iW29iamVjdCBTeW1ib2xdIix0dD0iW29iamVjdCBVbmRlZmluZWRdIiwkPSJbb2JqZWN0IFdlYWtNYXBdIixJdD0iW29iamVjdCBXZWFrU2V0XSIsJHQ9IltvYmplY3QgQXJyYXlCdWZmZXJdIixoZT0iW29iamVjdCBEYXRhVmlld10iLFR0PSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLGJlPSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLG50PSJbb2JqZWN0IEludDhBcnJheV0iLEN0PSJbb2JqZWN0IEludDE2QXJyYXldIixXdD0iW29iamVjdCBJbnQzMkFycmF5XSIsZmU9IltvYmplY3QgVWludDhBcnJheV0iLGF0PSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsc2U9IltvYmplY3QgVWludDE2QXJyYXldIixRdD0iW29iamVjdCBVaW50MzJBcnJheV0iLENlPS9cYl9fcCBcKz0gJyc7L2csUHQ9L1xiKF9fcCBcKz0pICcnIFwrL2csTnQ9LyhfX2VcKC4qP1wpfFxiX190XCkpIFwrXG4nJzsvZyx6ZT0vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2cseW49L1smPD4iJ10vZyxHaT1SZWdFeHAoemUuc291cmNlKSxBcj1SZWdFeHAoeW4uc291cmNlKSxBYT0vPCUtKFtcc1xTXSs/KSU+L2csdW89LzwlKFtcc1xTXSs/KSU+L2csUGE9LzwlPShbXHNcU10rPyklPi9nLGx4PS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGNtPS9eXHcqJC8sSjA9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csY249L1tcXF4kLiorPygpW1xde318XS9nLGN4PVJlZ0V4cChjbi5zb3VyY2UpLGVwPS9eXHMrLyxLPS9ccy8sZ3Q9L1x7KD86XG5cL1wqIFxbd3JhcHBlZCB3aXRoIC4rXF0gXCpcLyk/XG4/LyxFdD0vXHtcblwvXCogXFt3cmFwcGVkIHdpdGggKC4rKVxdIFwqLyx4dD0vLD8gJiAvLEZ0PS9bXlx4MDAtXHgyZlx4M2EtXHg0MFx4NWItXHg2MFx4N2ItXHg3Zl0rL2csVmU9L1soKT0se31cW1xdXC9cc10vLFVlPS9cXChcXCk/L2csdHI9L1wkXHsoW15cXH1dKig/OlxcLlteXFx9XSopKilcfS9nLEtlPS9cdyokLyxYcj0vXlstK10weFswLTlhLWZdKyQvaSxfcj0vXjBiWzAxXSskL2ksUHI9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sWG49L14wb1swLTddKyQvaSxycD0vXig/OjB8WzEtOV1cZCopJC8sdW09L1tceGMwLVx4ZDZceGQ4LVx4ZjZceGY4LVx4ZmZcdTAxMDAtXHUwMTdmXS9nLG1yPS8oJF4pLyx6bD0vWydcblxyXHUyMDI4XHUyMDI5XFxdL2csJG49IlxcdWQ4MDAtXFx1ZGZmZiIsRmw9IlxcdTAzMDAtXFx1MDM2ZiIsdXg9IlxcdWZlMjAtXFx1ZmUyZiIsQmw9IlxcdTIwZDAtXFx1MjBmZiIsSGw9RmwrdXgrQmwsV2k9IlxcdTI3MDAtXFx1MjdiZiIsaG09ImEtelxceGRmLVxceGY2XFx4ZjgtXFx4ZmYiLFVzPSJcXHhhY1xceGIxXFx4ZDdcXHhmNyIsc3BlPSJcXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHhiZiIsbHBlPSJcXHUyMDAwLVxcdTIwNmYiLGNwZT0iIFxcdFxceDBiXFxmXFx4YTBcXHVmZWZmXFxuXFxyXFx1MjAyOFxcdTIwMjlcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwIixWaHQ9IkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGUiLFVodD0iXFx1ZmUwZVxcdWZlMGYiLHFodD1VcytzcGUrbHBlK2NwZSxKVT0iWydcdTIwMTldIix1cGU9IlsiKyRuKyJdIixHaHQ9IlsiK3FodCsiXSIsejY9IlsiK0hsKyJdIixXaHQ9IlxcZCsiLGhwZT0iWyIrV2krIl0iLFlodD0iWyIraG0rIl0iLGpodD0iW14iKyRuK3FodCtXaHQrV2kraG0rVmh0KyJdIixRVT0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixmcGU9Iig/OiIrejYrInwiK1FVKyIpIixYaHQ9IlteIiskbisiXSIsdHE9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLGVxPSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixoeD0iWyIrVmh0KyJdIiwkaHQ9IlxcdTIwMGQiLEtodD0iKD86IitZaHQrInwiK2podCsiKSIscHBlPSIoPzoiK2h4KyJ8IitqaHQrIikiLFpodD0iKD86IitKVSsiKD86ZHxsbHxtfHJlfHN8dHx2ZSkpPyIsSmh0PSIoPzoiK0pVKyIoPzpEfExMfE18UkV8U3xUfFZFKSk/IixRaHQ9ZnBlKyI/Iix0ZnQ9IlsiK1VodCsiXT8iLGRwZT0iKD86IiskaHQrIig/OiIrW1hodCx0cSxlcV0uam9pbigifCIpKyIpIit0ZnQrUWh0KyIpKiIsbXBlPSJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLGdwZT0iXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcZFRIKSg/PVxcYnxbYS16X10pIixlZnQ9dGZ0K1FodCtkcGUsX3BlPSIoPzoiK1tocGUsdHEsZXFdLmpvaW4oInwiKSsiKSIrZWZ0LHlwZT0iKD86IitbWGh0K3o2KyI/Iix6Nix0cSxlcSx1cGVdLmpvaW4oInwiKSsiKSIsdnBlPVJlZ0V4cChKVSwiZyIpLHhwZT1SZWdFeHAoejYsImciKSxycT1SZWdFeHAoUVUrIig/PSIrUVUrIil8Iit5cGUrZWZ0LCJnIiksYnBlPVJlZ0V4cChbaHgrIj8iK1lodCsiKyIrWmh0KyIoPz0iK1tHaHQsaHgsIiQiXS5qb2luKCJ8IikrIikiLHBwZSsiKyIrSmh0KyIoPz0iK1tHaHQsaHgrS2h0LCIkIl0uam9pbigifCIpKyIpIixoeCsiPyIrS2h0KyIrIitaaHQsaHgrIisiK0podCxncGUsbXBlLFdodCxfcGVdLmpvaW4oInwiKSwiZyIpLHdwZT1SZWdFeHAoIlsiKyRodCskbitIbCtVaHQrIl0iKSxTcGU9L1thLXpdW0EtWl18W0EtWl17Mn1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS8sTXBlPVsiQXJyYXkiLCJCdWZmZXIiLCJEYXRhVmlldyIsIkRhdGUiLCJFcnJvciIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIkZ1bmN0aW9uIiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJNYXAiLCJNYXRoIiwiT2JqZWN0IiwiUHJvbWlzZSIsIlJlZ0V4cCIsIlNldCIsIlN0cmluZyIsIlN5bWJvbCIsIlR5cGVFcnJvciIsIlVpbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIlVpbnQxNkFycmF5IiwiVWludDMyQXJyYXkiLCJXZWFrTWFwIiwiXyIsImNsZWFyVGltZW91dCIsImlzRmluaXRlIiwicGFyc2VJbnQiLCJzZXRUaW1lb3V0Il0sRXBlPS0xLFJuPXt9O1JuW1R0XT1SbltiZV09Um5bbnRdPVJuW0N0XT1SbltXdF09Um5bZmVdPVJuW2F0XT1SbltzZV09Um5bUXRdPSEwLFJuW2J0XT1SbltNdF09Um5bJHRdPVJuW0t0XT1SbltoZV09Um5bX3RdPVJuW1hdPVJuW2V0XT1SbltxXT1SbltwdF09Um5bd3RdPVJuW2VlXT1SbltMZV09Um5bYXJdPVJuWyRdPSExO3ZhciBUbj17fTtUbltidF09VG5bTXRdPVRuWyR0XT1UbltoZV09VG5bS3RdPVRuW190XT1UbltUdF09VG5bYmVdPVRuW250XT1UbltDdF09VG5bV3RdPVRuW3FdPVRuW3B0XT1Ublt3dF09VG5bZWVdPVRuW0xlXT1Ublthcl09VG5bZnJdPVRuW2ZlXT1UblthdF09VG5bc2VdPVRuW1F0XT0hMCxUbltYXT1UbltldF09VG5bJF09ITE7dmFyIFRwZT17XHUwMEMwOiJBIixcdTAwQzE6IkEiLFx1MDBDMjoiQSIsXHUwMEMzOiJBIixcdTAwQzQ6IkEiLFx1MDBDNToiQSIsXHUwMEUwOiJhIixcdTAwRTE6ImEiLFx1MDBFMjoiYSIsXHUwMEUzOiJhIixcdTAwRTQ6ImEiLFx1MDBFNToiYSIsXHUwMEM3OiJDIixcdTAwRTc6ImMiLFx1MDBEMDoiRCIsXHUwMEYwOiJkIixcdTAwQzg6IkUiLFx1MDBDOToiRSIsXHUwMENBOiJFIixcdTAwQ0I6IkUiLFx1MDBFODoiZSIsXHUwMEU5OiJlIixcdTAwRUE6ImUiLFx1MDBFQjoiZSIsXHUwMENDOiJJIixcdTAwQ0Q6IkkiLFx1MDBDRToiSSIsXHUwMENGOiJJIixcdTAwRUM6ImkiLFx1MDBFRDoiaSIsXHUwMEVFOiJpIixcdTAwRUY6ImkiLFx1MDBEMToiTiIsXHUwMEYxOiJuIixcdTAwRDI6Ik8iLFx1MDBEMzoiTyIsXHUwMEQ0OiJPIixcdTAwRDU6Ik8iLFx1MDBENjoiTyIsXHUwMEQ4OiJPIixcdTAwRjI6Im8iLFx1MDBGMzoibyIsXHUwMEY0OiJvIixcdTAwRjU6Im8iLFx1MDBGNjoibyIsXHUwMEY4OiJvIixcdTAwRDk6IlUiLFx1MDBEQToiVSIsXHUwMERCOiJVIixcdTAwREM6IlUiLFx1MDBGOToidSIsXHUwMEZBOiJ1IixcdTAwRkI6InUiLFx1MDBGQzoidSIsXHUwMEREOiJZIixcdTAwRkQ6InkiLFx1MDBGRjoieSIsXHUwMEM2OiJBZSIsXHUwMEU2OiJhZSIsXHUwMERFOiJUaCIsXHUwMEZFOiJ0aCIsXHUwMERGOiJzcyIsXHUwMTAwOiJBIixcdTAxMDI6IkEiLFx1MDEwNDoiQSIsXHUwMTAxOiJhIixcdTAxMDM6ImEiLFx1MDEwNToiYSIsXHUwMTA2OiJDIixcdTAxMDg6IkMiLFx1MDEwQToiQyIsXHUwMTBDOiJDIixcdTAxMDc6ImMiLFx1MDEwOToiYyIsXHUwMTBCOiJjIixcdTAxMEQ6ImMiLFx1MDEwRToiRCIsXHUwMTEwOiJEIixcdTAxMEY6ImQiLFx1MDExMToiZCIsXHUwMTEyOiJFIixcdTAxMTQ6IkUiLFx1MDExNjoiRSIsXHUwMTE4OiJFIixcdTAxMUE6IkUiLFx1MDExMzoiZSIsXHUwMTE1OiJlIixcdTAxMTc6ImUiLFx1MDExOToiZSIsXHUwMTFCOiJlIixcdTAxMUM6IkciLFx1MDExRToiRyIsXHUwMTIwOiJHIixcdTAxMjI6IkciLFx1MDExRDoiZyIsXHUwMTFGOiJnIixcdTAxMjE6ImciLFx1MDEyMzoiZyIsXHUwMTI0OiJIIixcdTAxMjY6IkgiLFx1MDEyNToiaCIsXHUwMTI3OiJoIixcdTAxMjg6IkkiLFx1MDEyQToiSSIsXHUwMTJDOiJJIixcdTAxMkU6IkkiLFx1MDEzMDoiSSIsXHUwMTI5OiJpIixcdTAxMkI6ImkiLFx1MDEyRDoiaSIsXHUwMTJGOiJpIixcdTAxMzE6ImkiLFx1MDEzNDoiSiIsXHUwMTM1OiJqIixcdTAxMzY6IksiLFx1MDEzNzoiayIsXHUwMTM4OiJrIixcdTAxMzk6IkwiLFx1MDEzQjoiTCIsXHUwMTNEOiJMIixcdTAxM0Y6IkwiLFx1MDE0MToiTCIsXHUwMTNBOiJsIixcdTAxM0M6ImwiLFx1MDEzRToibCIsXHUwMTQwOiJsIixcdTAxNDI6ImwiLFx1MDE0MzoiTiIsXHUwMTQ1OiJOIixcdTAxNDc6Ik4iLFx1MDE0QToiTiIsXHUwMTQ0OiJuIixcdTAxNDY6Im4iLFx1MDE0ODoibiIsXHUwMTRCOiJuIixcdTAxNEM6Ik8iLFx1MDE0RToiTyIsXHUwMTUwOiJPIixcdTAxNEQ6Im8iLFx1MDE0RjoibyIsXHUwMTUxOiJvIixcdTAxNTQ6IlIiLFx1MDE1NjoiUiIsXHUwMTU4OiJSIixcdTAxNTU6InIiLFx1MDE1NzoiciIsXHUwMTU5OiJyIixcdTAxNUE6IlMiLFx1MDE1QzoiUyIsXHUwMTVFOiJTIixcdTAxNjA6IlMiLFx1MDE1QjoicyIsXHUwMTVEOiJzIixcdTAxNUY6InMiLFx1MDE2MToicyIsXHUwMTYyOiJUIixcdTAxNjQ6IlQiLFx1MDE2NjoiVCIsXHUwMTYzOiJ0IixcdTAxNjU6InQiLFx1MDE2NzoidCIsXHUwMTY4OiJVIixcdTAxNkE6IlUiLFx1MDE2QzoiVSIsXHUwMTZFOiJVIixcdTAxNzA6IlUiLFx1MDE3MjoiVSIsXHUwMTY5OiJ1IixcdTAxNkI6InUiLFx1MDE2RDoidSIsXHUwMTZGOiJ1IixcdTAxNzE6InUiLFx1MDE3MzoidSIsXHUwMTc0OiJXIixcdTAxNzU6InciLFx1MDE3NjoiWSIsXHUwMTc3OiJ5IixcdTAxNzg6IlkiLFx1MDE3OToiWiIsXHUwMTdCOiJaIixcdTAxN0Q6IloiLFx1MDE3QToieiIsXHUwMTdDOiJ6IixcdTAxN0U6InoiLFx1MDEzMjoiSUoiLFx1MDEzMzoiaWoiLFx1MDE1MjoiT2UiLFx1MDE1Mzoib2UiLFx1MDE0OToiJ24iLFx1MDE3RjoicyJ9LENwZT17IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0sQXBlPXsiJmFtcDsiOiImIiwiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImIzM5OyI6IicifSxQcGU9eyJcXCI6IlxcIiwiJyI6IiciLCJcbiI6Im4iLCJcciI6InIiLCJcdTIwMjgiOiJ1MjAyOCIsIlx1MjAyOSI6InUyMDI5In0sSXBlPXBhcnNlRmxvYXQsTHBlPXBhcnNlSW50LHJmdD10eXBlb2YgZ2xvYmFsPT0ib2JqZWN0IiYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsa3BlPXR5cGVvZiBzZWxmPT0ib2JqZWN0IiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaG89cmZ0fHxrcGV8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksbnE9dHlwZW9mIGt4PT0ib2JqZWN0IiYma3gmJiFreC5ub2RlVHlwZSYma3gsUTA9bnEmJnR5cGVvZiBqTT09Im9iamVjdCImJmpNJiYhak0ubm9kZVR5cGUmJmpNLG5mdD1RMCYmUTAuZXhwb3J0cz09PW5xLGlxPW5mdCYmcmZ0LnByb2Nlc3MsVmw9ZnVuY3Rpb24oKXt0cnl7dmFyIHV0PVEwJiZRMC5yZXF1aXJlJiZRMC5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHV0fHxpcSYmaXEuYmluZGluZyYmaXEuYmluZGluZygidXRpbCIpfWNhdGNoKEF0KXt9fSgpLGlmdD1WbCYmVmwuaXNBcnJheUJ1ZmZlcixvZnQ9VmwmJlZsLmlzRGF0ZSxhZnQ9VmwmJlZsLmlzTWFwLHNmdD1WbCYmVmwuaXNSZWdFeHAsbGZ0PVZsJiZWbC5pc1NldCxjZnQ9VmwmJlZsLmlzVHlwZWRBcnJheTtmdW5jdGlvbiBxcyh1dCxBdCx2dCl7c3dpdGNoKHZ0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiB1dC5jYWxsKEF0KTtjYXNlIDE6cmV0dXJuIHV0LmNhbGwoQXQsdnRbMF0pO2Nhc2UgMjpyZXR1cm4gdXQuY2FsbChBdCx2dFswXSx2dFsxXSk7Y2FzZSAzOnJldHVybiB1dC5jYWxsKEF0LHZ0WzBdLHZ0WzFdLHZ0WzJdKX1yZXR1cm4gdXQuYXBwbHkoQXQsdnQpfWZ1bmN0aW9uIFJwZSh1dCxBdCx2dCxnZSl7Zm9yKHZhciBXZT0tMSwkcj11dD09bnVsbD8wOnV0Lmxlbmd0aDsrK1dlPCRyOyl7dmFyIFlpPXV0W1dlXTtBdChnZSxZaSx2dChZaSksdXQpfXJldHVybiBnZX1mdW5jdGlvbiBVbCh1dCxBdCl7Zm9yKHZhciB2dD0tMSxnZT11dD09bnVsbD8wOnV0Lmxlbmd0aDsrK3Z0PGdlJiZBdCh1dFt2dF0sdnQsdXQpIT09ITE7KTtyZXR1cm4gdXR9ZnVuY3Rpb24gTnBlKHV0LEF0KXtmb3IodmFyIHZ0PXV0PT1udWxsPzA6dXQubGVuZ3RoO3Z0LS0mJkF0KHV0W3Z0XSx2dCx1dCkhPT0hMTspO3JldHVybiB1dH1mdW5jdGlvbiB1ZnQodXQsQXQpe2Zvcih2YXIgdnQ9LTEsZ2U9dXQ9PW51bGw/MDp1dC5sZW5ndGg7Kyt2dDxnZTspaWYoIUF0KHV0W3Z0XSx2dCx1dCkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZm0odXQsQXQpe2Zvcih2YXIgdnQ9LTEsZ2U9dXQ9PW51bGw/MDp1dC5sZW5ndGgsV2U9MCwkcj1bXTsrK3Z0PGdlOyl7dmFyIFlpPXV0W3Z0XTtBdChZaSx2dCx1dCkmJigkcltXZSsrXT1ZaSl9cmV0dXJuICRyfWZ1bmN0aW9uIEY2KHV0LEF0KXt2YXIgdnQ9dXQ9PW51bGw/MDp1dC5sZW5ndGg7cmV0dXJuISF2dCYmZngodXQsQXQsMCk+LTF9ZnVuY3Rpb24gb3EodXQsQXQsdnQpe2Zvcih2YXIgZ2U9LTEsV2U9dXQ9PW51bGw/MDp1dC5sZW5ndGg7KytnZTxXZTspaWYodnQoQXQsdXRbZ2VdKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBLbih1dCxBdCl7Zm9yKHZhciB2dD0tMSxnZT11dD09bnVsbD8wOnV0Lmxlbmd0aCxXZT1BcnJheShnZSk7Kyt2dDxnZTspV2VbdnRdPUF0KHV0W3Z0XSx2dCx1dCk7cmV0dXJuIFdlfWZ1bmN0aW9uIHBtKHV0LEF0KXtmb3IodmFyIHZ0PS0xLGdlPUF0Lmxlbmd0aCxXZT11dC5sZW5ndGg7Kyt2dDxnZTspdXRbV2UrdnRdPUF0W3Z0XTtyZXR1cm4gdXR9ZnVuY3Rpb24gYXEodXQsQXQsdnQsZ2Upe3ZhciBXZT0tMSwkcj11dD09bnVsbD8wOnV0Lmxlbmd0aDtmb3IoZ2UmJiRyJiYodnQ9dXRbKytXZV0pOysrV2U8JHI7KXZ0PUF0KHZ0LHV0W1dlXSxXZSx1dCk7cmV0dXJuIHZ0fWZ1bmN0aW9uIERwZSh1dCxBdCx2dCxnZSl7dmFyIFdlPXV0PT1udWxsPzA6dXQubGVuZ3RoO2ZvcihnZSYmV2UmJih2dD11dFstLVdlXSk7V2UtLTspdnQ9QXQodnQsdXRbV2VdLFdlLHV0KTtyZXR1cm4gdnR9ZnVuY3Rpb24gc3EodXQsQXQpe2Zvcih2YXIgdnQ9LTEsZ2U9dXQ9PW51bGw/MDp1dC5sZW5ndGg7Kyt2dDxnZTspaWYoQXQodXRbdnRdLHZ0LHV0KSlyZXR1cm4hMDtyZXR1cm4hMX12YXIgT3BlPWxxKCJsZW5ndGgiKTtmdW5jdGlvbiB6cGUodXQpe3JldHVybiB1dC5zcGxpdCgiIil9ZnVuY3Rpb24gRnBlKHV0KXtyZXR1cm4gdXQubWF0Y2goRnQpfHxbXX1mdW5jdGlvbiBoZnQodXQsQXQsdnQpe3ZhciBnZTtyZXR1cm4gdnQodXQsZnVuY3Rpb24oV2UsJHIsWWkpe2lmKEF0KFdlLCRyLFlpKSlyZXR1cm4gZ2U9JHIsITF9KSxnZX1mdW5jdGlvbiBCNih1dCxBdCx2dCxnZSl7Zm9yKHZhciBXZT11dC5sZW5ndGgsJHI9dnQrKGdlPzE6LTEpO2dlPyRyLS06KyskcjxXZTspaWYoQXQodXRbJHJdLCRyLHV0KSlyZXR1cm4gJHI7cmV0dXJuLTF9ZnVuY3Rpb24gZngodXQsQXQsdnQpe3JldHVybiBBdD09PUF0P0twZSh1dCxBdCx2dCk6QjYodXQsZmZ0LHZ0KX1mdW5jdGlvbiBCcGUodXQsQXQsdnQsZ2Upe2Zvcih2YXIgV2U9dnQtMSwkcj11dC5sZW5ndGg7KytXZTwkcjspaWYoZ2UodXRbV2VdLEF0KSlyZXR1cm4gV2U7cmV0dXJuLTF9ZnVuY3Rpb24gZmZ0KHV0KXtyZXR1cm4gdXQhPT11dH1mdW5jdGlvbiBwZnQodXQsQXQpe3ZhciB2dD11dD09bnVsbD8wOnV0Lmxlbmd0aDtyZXR1cm4gdnQ/dXEodXQsQXQpL3Z0Olp9ZnVuY3Rpb24gbHEodXQpe3JldHVybiBmdW5jdGlvbihBdCl7cmV0dXJuIEF0PT1udWxsP2U6QXRbdXRdfX1mdW5jdGlvbiBjcSh1dCl7cmV0dXJuIGZ1bmN0aW9uKEF0KXtyZXR1cm4gdXQ9PW51bGw/ZTp1dFtBdF19fWZ1bmN0aW9uIGRmdCh1dCxBdCx2dCxnZSxXZSl7cmV0dXJuIFdlKHV0LGZ1bmN0aW9uKCRyLFlpLHZuKXt2dD1nZT8oZ2U9ITEsJHIpOkF0KHZ0LCRyLFlpLHZuKX0pLHZ0fWZ1bmN0aW9uIEhwZSh1dCxBdCl7dmFyIHZ0PXV0Lmxlbmd0aDtmb3IodXQuc29ydChBdCk7dnQtLTspdXRbdnRdPXV0W3Z0XS52YWx1ZTtyZXR1cm4gdXR9ZnVuY3Rpb24gdXEodXQsQXQpe2Zvcih2YXIgdnQsZ2U9LTEsV2U9dXQubGVuZ3RoOysrZ2U8V2U7KXt2YXIgJHI9QXQodXRbZ2VdKTskciE9PWUmJih2dD12dD09PWU/JHI6dnQrJHIpfXJldHVybiB2dH1mdW5jdGlvbiBocSh1dCxBdCl7Zm9yKHZhciB2dD0tMSxnZT1BcnJheSh1dCk7Kyt2dDx1dDspZ2VbdnRdPUF0KHZ0KTtyZXR1cm4gZ2V9ZnVuY3Rpb24gVnBlKHV0LEF0KXtyZXR1cm4gS24oQXQsZnVuY3Rpb24odnQpe3JldHVyblt2dCx1dFt2dF1dfSl9ZnVuY3Rpb24gbWZ0KHV0KXtyZXR1cm4gdXQmJnV0LnNsaWNlKDAsdmZ0KHV0KSsxKS5yZXBsYWNlKGVwLCIiKX1mdW5jdGlvbiBHcyh1dCl7cmV0dXJuIGZ1bmN0aW9uKEF0KXtyZXR1cm4gdXQoQXQpfX1mdW5jdGlvbiBmcSh1dCxBdCl7cmV0dXJuIEtuKEF0LGZ1bmN0aW9uKHZ0KXtyZXR1cm4gdXRbdnRdfSl9ZnVuY3Rpb24gU00odXQsQXQpe3JldHVybiB1dC5oYXMoQXQpfWZ1bmN0aW9uIGdmdCh1dCxBdCl7Zm9yKHZhciB2dD0tMSxnZT11dC5sZW5ndGg7Kyt2dDxnZSYmZngoQXQsdXRbdnRdLDApPi0xOyk7cmV0dXJuIHZ0fWZ1bmN0aW9uIF9mdCh1dCxBdCl7Zm9yKHZhciB2dD11dC5sZW5ndGg7dnQtLSYmZngoQXQsdXRbdnRdLDApPi0xOyk7cmV0dXJuIHZ0fWZ1bmN0aW9uIFVwZSh1dCxBdCl7Zm9yKHZhciB2dD11dC5sZW5ndGgsZ2U9MDt2dC0tOyl1dFt2dF09PT1BdCYmKytnZTtyZXR1cm4gZ2V9dmFyIHFwZT1jcShUcGUpLEdwZT1jcShDcGUpO2Z1bmN0aW9uIFdwZSh1dCl7cmV0dXJuIlxcIitQcGVbdXRdfWZ1bmN0aW9uIFlwZSh1dCxBdCl7cmV0dXJuIHV0PT1udWxsP2U6dXRbQXRdfWZ1bmN0aW9uIHB4KHV0KXtyZXR1cm4gd3BlLnRlc3QodXQpfWZ1bmN0aW9uIGpwZSh1dCl7cmV0dXJuIFNwZS50ZXN0KHV0KX1mdW5jdGlvbiBYcGUodXQpe2Zvcih2YXIgQXQsdnQ9W107IShBdD11dC5uZXh0KCkpLmRvbmU7KXZ0LnB1c2goQXQudmFsdWUpO3JldHVybiB2dH1mdW5jdGlvbiBwcSh1dCl7dmFyIEF0PS0xLHZ0PUFycmF5KHV0LnNpemUpO3JldHVybiB1dC5mb3JFYWNoKGZ1bmN0aW9uKGdlLFdlKXt2dFsrK0F0XT1bV2UsZ2VdfSksdnR9ZnVuY3Rpb24geWZ0KHV0LEF0KXtyZXR1cm4gZnVuY3Rpb24odnQpe3JldHVybiB1dChBdCh2dCkpfX1mdW5jdGlvbiBkbSh1dCxBdCl7Zm9yKHZhciB2dD0tMSxnZT11dC5sZW5ndGgsV2U9MCwkcj1bXTsrK3Z0PGdlOyl7dmFyIFlpPXV0W3Z0XTsoWWk9PT1BdHx8WWk9PT1sKSYmKHV0W3Z0XT1sLCRyW1dlKytdPXZ0KX1yZXR1cm4gJHJ9ZnVuY3Rpb24gSDYodXQpe3ZhciBBdD0tMSx2dD1BcnJheSh1dC5zaXplKTtyZXR1cm4gdXQuZm9yRWFjaChmdW5jdGlvbihnZSl7dnRbKytBdF09Z2V9KSx2dH1mdW5jdGlvbiAkcGUodXQpe3ZhciBBdD0tMSx2dD1BcnJheSh1dC5zaXplKTtyZXR1cm4gdXQuZm9yRWFjaChmdW5jdGlvbihnZSl7dnRbKytBdF09W2dlLGdlXX0pLHZ0fWZ1bmN0aW9uIEtwZSh1dCxBdCx2dCl7Zm9yKHZhciBnZT12dC0xLFdlPXV0Lmxlbmd0aDsrK2dlPFdlOylpZih1dFtnZV09PT1BdClyZXR1cm4gZ2U7cmV0dXJuLTF9ZnVuY3Rpb24gWnBlKHV0LEF0LHZ0KXtmb3IodmFyIGdlPXZ0KzE7Z2UtLTspaWYodXRbZ2VdPT09QXQpcmV0dXJuIGdlO3JldHVybiBnZX1mdW5jdGlvbiBkeCh1dCl7cmV0dXJuIHB4KHV0KT9RcGUodXQpOk9wZSh1dCl9ZnVuY3Rpb24gSmModXQpe3JldHVybiBweCh1dCk/dGRlKHV0KTp6cGUodXQpfWZ1bmN0aW9uIHZmdCh1dCl7Zm9yKHZhciBBdD11dC5sZW5ndGg7QXQtLSYmSy50ZXN0KHV0LmNoYXJBdChBdCkpOyk7cmV0dXJuIEF0fXZhciBKcGU9Y3EoQXBlKTtmdW5jdGlvbiBRcGUodXQpe2Zvcih2YXIgQXQ9cnEubGFzdEluZGV4PTA7cnEudGVzdCh1dCk7KSsrQXQ7cmV0dXJuIEF0fWZ1bmN0aW9uIHRkZSh1dCl7cmV0dXJuIHV0Lm1hdGNoKHJxKXx8W119ZnVuY3Rpb24gZWRlKHV0KXtyZXR1cm4gdXQubWF0Y2goYnBlKXx8W119dmFyIHJkZT1mdW5jdGlvbiB1dChBdCl7QXQ9QXQ9PW51bGw/aG86bW0uZGVmYXVsdHMoaG8uT2JqZWN0KCksQXQsbW0ucGljayhobyxNcGUpKTt2YXIgdnQ9QXQuQXJyYXksZ2U9QXQuRGF0ZSxXZT1BdC5FcnJvciwkcj1BdC5GdW5jdGlvbixZaT1BdC5NYXRoLHZuPUF0Lk9iamVjdCxkcT1BdC5SZWdFeHAsbmRlPUF0LlN0cmluZyxxbD1BdC5UeXBlRXJyb3IsVjY9dnQucHJvdG90eXBlLGlkZT0kci5wcm90b3R5cGUsbXg9dm4ucHJvdG90eXBlLFU2PUF0WyJfX2NvcmUtanNfc2hhcmVkX18iXSxxNj1pZGUudG9TdHJpbmcsdW49bXguaGFzT3duUHJvcGVydHksb2RlPTAseGZ0PWZ1bmN0aW9uKCl7dmFyIG09L1teLl0rJC8uZXhlYyhVNiYmVTYua2V5cyYmVTYua2V5cy5JRV9QUk9UT3x8IiIpO3JldHVybiBtPyJTeW1ib2woc3JjKV8xLiIrbToiIn0oKSxHNj1teC50b1N0cmluZyxhZGU9cTYuY2FsbCh2biksc2RlPWhvLl8sbGRlPWRxKCJeIitxNi5jYWxsKHVuKS5yZXBsYWNlKGNuLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpLFc2PW5mdD9BdC5CdWZmZXI6ZSxnbT1BdC5TeW1ib2wsWTY9QXQuVWludDhBcnJheSxiZnQ9VzY/VzYuYWxsb2NVbnNhZmU6ZSxqNj15ZnQodm4uZ2V0UHJvdG90eXBlT2Ysdm4pLHdmdD12bi5jcmVhdGUsU2Z0PW14LnByb3BlcnR5SXNFbnVtZXJhYmxlLFg2PVY2LnNwbGljZSxNZnQ9Z20/Z20uaXNDb25jYXRTcHJlYWRhYmxlOmUsTU09Z20/Z20uaXRlcmF0b3I6ZSx0Xz1nbT9nbS50b1N0cmluZ1RhZzplLCQ2PWZ1bmN0aW9uKCl7dHJ5e3ZhciBtPW9fKHZuLCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiBtKHt9LCIiLHt9KSxtfWNhdGNoKHYpe319KCksY2RlPUF0LmNsZWFyVGltZW91dCE9PWhvLmNsZWFyVGltZW91dCYmQXQuY2xlYXJUaW1lb3V0LHVkZT1nZSYmZ2Uubm93IT09aG8uRGF0ZS5ub3cmJmdlLm5vdyxoZGU9QXQuc2V0VGltZW91dCE9PWhvLnNldFRpbWVvdXQmJkF0LnNldFRpbWVvdXQsSzY9WWkuY2VpbCxaNj1ZaS5mbG9vcixtcT12bi5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsZmRlPVc2P1c2LmlzQnVmZmVyOmUsRWZ0PUF0LmlzRmluaXRlLHBkZT1WNi5qb2luLGRkZT15ZnQodm4ua2V5cyx2biksamk9WWkubWF4LGVhPVlpLm1pbixtZGU9Z2Uubm93LGdkZT1BdC5wYXJzZUludCxUZnQ9WWkucmFuZG9tLF9kZT1WNi5yZXZlcnNlLGdxPW9fKEF0LCJEYXRhVmlldyIpLEVNPW9fKEF0LCJNYXAiKSxfcT1vXyhBdCwiUHJvbWlzZSIpLGd4PW9fKEF0LCJTZXQiKSxUTT1vXyhBdCwiV2Vha01hcCIpLENNPW9fKHZuLCJjcmVhdGUiKSxKNj1UTSYmbmV3IFRNLF94PXt9LHlkZT1hXyhncSksdmRlPWFfKEVNKSx4ZGU9YV8oX3EpLGJkZT1hXyhneCksd2RlPWFfKFRNKSxRNj1nbT9nbS5wcm90b3R5cGU6ZSxBTT1RNj9RNi52YWx1ZU9mOmUsQ2Z0PVE2P1E2LnRvU3RyaW5nOmU7ZnVuY3Rpb24gRyhtKXtpZihsaShtKSYmISRlKG0pJiYhKG0gaW5zdGFuY2VvZiBncikpe2lmKG0gaW5zdGFuY2VvZiBHbClyZXR1cm4gbTtpZih1bi5jYWxsKG0sIl9fd3JhcHBlZF9fIikpcmV0dXJuIEFwdChtKX1yZXR1cm4gbmV3IEdsKG0pfXZhciB5eD1mdW5jdGlvbigpe2Z1bmN0aW9uIG0oKXt9cmV0dXJuIGZ1bmN0aW9uKHYpe2lmKCFyaSh2KSlyZXR1cm57fTtpZih3ZnQpcmV0dXJuIHdmdCh2KTttLnByb3RvdHlwZT12O3ZhciBUPW5ldyBtO3JldHVybiBtLnByb3RvdHlwZT1lLFR9fSgpO2Z1bmN0aW9uIHRJKCl7fWZ1bmN0aW9uIEdsKG0sdil7dGhpcy5fX3dyYXBwZWRfXz1tLHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2NoYWluX189ISF2LHRoaXMuX19pbmRleF9fPTAsdGhpcy5fX3ZhbHVlc19fPWV9Ry50ZW1wbGF0ZVNldHRpbmdzPXtlc2NhcGU6QWEsZXZhbHVhdGU6dW8saW50ZXJwb2xhdGU6UGEsdmFyaWFibGU6IiIsaW1wb3J0czp7XzpHfX0sRy5wcm90b3R5cGU9dEkucHJvdG90eXBlLEcucHJvdG90eXBlLmNvbnN0cnVjdG9yPUcsR2wucHJvdG90eXBlPXl4KHRJLnByb3RvdHlwZSksR2wucHJvdG90eXBlLmNvbnN0cnVjdG9yPUdsO2Z1bmN0aW9uIGdyKG0pe3RoaXMuX193cmFwcGVkX189bSx0aGlzLl9fYWN0aW9uc19fPVtdLHRoaXMuX19kaXJfXz0xLHRoaXMuX19maWx0ZXJlZF9fPSExLHRoaXMuX19pdGVyYXRlZXNfXz1bXSx0aGlzLl9fdGFrZUNvdW50X189cnQsdGhpcy5fX3ZpZXdzX189W119ZnVuY3Rpb24gU2RlKCl7dmFyIG09bmV3IGdyKHRoaXMuX193cmFwcGVkX18pO3JldHVybiBtLl9fYWN0aW9uc19fPWZzKHRoaXMuX19hY3Rpb25zX18pLG0uX19kaXJfXz10aGlzLl9fZGlyX18sbS5fX2ZpbHRlcmVkX189dGhpcy5fX2ZpbHRlcmVkX18sbS5fX2l0ZXJhdGVlc19fPWZzKHRoaXMuX19pdGVyYXRlZXNfXyksbS5fX3Rha2VDb3VudF9fPXRoaXMuX190YWtlQ291bnRfXyxtLl9fdmlld3NfXz1mcyh0aGlzLl9fdmlld3NfXyksbX1mdW5jdGlvbiBNZGUoKXtpZih0aGlzLl9fZmlsdGVyZWRfXyl7dmFyIG09bmV3IGdyKHRoaXMpO20uX19kaXJfXz0tMSxtLl9fZmlsdGVyZWRfXz0hMH1lbHNlIG09dGhpcy5jbG9uZSgpLG0uX19kaXJfXyo9LTE7cmV0dXJuIG19ZnVuY3Rpb24gRWRlKCl7dmFyIG09dGhpcy5fX3dyYXBwZWRfXy52YWx1ZSgpLHY9dGhpcy5fX2Rpcl9fLFQ9JGUobSksTj12PDAsVj1UP20ubGVuZ3RoOjAsWT16bWUoMCxWLHRoaXMuX192aWV3c19fKSxKPVkuc3RhcnQsaXQ9WS5lbmQsZnQ9aXQtSixEdD1OP2l0OkotMSxPdD10aGlzLl9faXRlcmF0ZWVzX18sVnQ9T3QubGVuZ3RoLG9lPTAsVGU9ZWEoZnQsdGhpcy5fX3Rha2VDb3VudF9fKTtpZighVHx8IU4mJlY9PWZ0JiZUZT09ZnQpcmV0dXJuIFpmdChtLHRoaXMuX19hY3Rpb25zX18pO3ZhciBOZT1bXTt0OmZvcig7ZnQtLSYmb2U8VGU7KXtEdCs9djtmb3IodmFyIGVyPS0xLERlPW1bRHRdOysrZXI8VnQ7KXt2YXIgcHI9T3RbZXJdLHlyPXByLml0ZXJhdGVlLGpzPXByLnR5cGUsa2E9eXIoRGUpO2lmKGpzPT1SKURlPWthO2Vsc2UgaWYoIWthKXtpZihqcz09TCljb250aW51ZSB0O2JyZWFrIHR9fU5lW29lKytdPURlfXJldHVybiBOZX1nci5wcm90b3R5cGU9eXgodEkucHJvdG90eXBlKSxnci5wcm90b3R5cGUuY29uc3RydWN0b3I9Z3I7ZnVuY3Rpb24gZV8obSl7dmFyIHY9LTEsVD1tPT1udWxsPzA6bS5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3Y8VDspe3ZhciBOPW1bdl07dGhpcy5zZXQoTlswXSxOWzFdKX19ZnVuY3Rpb24gVGRlKCl7dGhpcy5fX2RhdGFfXz1DTT9DTShudWxsKTp7fSx0aGlzLnNpemU9MH1mdW5jdGlvbiBDZGUobSl7dmFyIHY9dGhpcy5oYXMobSkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW21dO3JldHVybiB0aGlzLnNpemUtPXY/MTowLHZ9ZnVuY3Rpb24gQWRlKG0pe3ZhciB2PXRoaXMuX19kYXRhX187aWYoQ00pe3ZhciBUPXZbbV07cmV0dXJuIFQ9PT1hP2U6VH1yZXR1cm4gdW4uY2FsbCh2LG0pP3ZbbV06ZX1mdW5jdGlvbiBQZGUobSl7dmFyIHY9dGhpcy5fX2RhdGFfXztyZXR1cm4gQ00/dlttXSE9PWU6dW4uY2FsbCh2LG0pfWZ1bmN0aW9uIElkZShtLHYpe3ZhciBUPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMobSk/MDoxLFRbbV09Q00mJnY9PT1lP2E6dix0aGlzfWVfLnByb3RvdHlwZS5jbGVhcj1UZGUsZV8ucHJvdG90eXBlLmRlbGV0ZT1DZGUsZV8ucHJvdG90eXBlLmdldD1BZGUsZV8ucHJvdG90eXBlLmhhcz1QZGUsZV8ucHJvdG90eXBlLnNldD1JZGU7ZnVuY3Rpb24gbnAobSl7dmFyIHY9LTEsVD1tPT1udWxsPzA6bS5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3Y8VDspe3ZhciBOPW1bdl07dGhpcy5zZXQoTlswXSxOWzFdKX19ZnVuY3Rpb24gTGRlKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH1mdW5jdGlvbiBrZGUobSl7dmFyIHY9dGhpcy5fX2RhdGFfXyxUPWVJKHYsbSk7aWYoVDwwKXJldHVybiExO3ZhciBOPXYubGVuZ3RoLTE7cmV0dXJuIFQ9PU4/di5wb3AoKTpYNi5jYWxsKHYsVCwxKSwtLXRoaXMuc2l6ZSwhMH1mdW5jdGlvbiBSZGUobSl7dmFyIHY9dGhpcy5fX2RhdGFfXyxUPWVJKHYsbSk7cmV0dXJuIFQ8MD9lOnZbVF1bMV19ZnVuY3Rpb24gTmRlKG0pe3JldHVybiBlSSh0aGlzLl9fZGF0YV9fLG0pPi0xfWZ1bmN0aW9uIERkZShtLHYpe3ZhciBUPXRoaXMuX19kYXRhX18sTj1lSShULG0pO3JldHVybiBOPDA/KCsrdGhpcy5zaXplLFQucHVzaChbbSx2XSkpOlRbTl1bMV09dix0aGlzfW5wLnByb3RvdHlwZS5jbGVhcj1MZGUsbnAucHJvdG90eXBlLmRlbGV0ZT1rZGUsbnAucHJvdG90eXBlLmdldD1SZGUsbnAucHJvdG90eXBlLmhhcz1OZGUsbnAucHJvdG90eXBlLnNldD1EZGU7ZnVuY3Rpb24gaXAobSl7dmFyIHY9LTEsVD1tPT1udWxsPzA6bS5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK3Y8VDspe3ZhciBOPW1bdl07dGhpcy5zZXQoTlswXSxOWzFdKX19ZnVuY3Rpb24gT2RlKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgZV8sbWFwOm5ldyhFTXx8bnApLHN0cmluZzpuZXcgZV99fWZ1bmN0aW9uIHpkZShtKXt2YXIgdj1wSSh0aGlzLG0pLmRlbGV0ZShtKTtyZXR1cm4gdGhpcy5zaXplLT12PzE6MCx2fWZ1bmN0aW9uIEZkZShtKXtyZXR1cm4gcEkodGhpcyxtKS5nZXQobSl9ZnVuY3Rpb24gQmRlKG0pe3JldHVybiBwSSh0aGlzLG0pLmhhcyhtKX1mdW5jdGlvbiBIZGUobSx2KXt2YXIgVD1wSSh0aGlzLG0pLE49VC5zaXplO3JldHVybiBULnNldChtLHYpLHRoaXMuc2l6ZSs9VC5zaXplPT1OPzA6MSx0aGlzfWlwLnByb3RvdHlwZS5jbGVhcj1PZGUsaXAucHJvdG90eXBlLmRlbGV0ZT16ZGUsaXAucHJvdG90eXBlLmdldD1GZGUsaXAucHJvdG90eXBlLmhhcz1CZGUsaXAucHJvdG90eXBlLnNldD1IZGU7ZnVuY3Rpb24gcl8obSl7dmFyIHY9LTEsVD1tPT1udWxsPzA6bS5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IGlwOysrdjxUOyl0aGlzLmFkZChtW3ZdKX1mdW5jdGlvbiBWZGUobSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KG0sYSksdGhpc31mdW5jdGlvbiBVZGUobSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKG0pfXJfLnByb3RvdHlwZS5hZGQ9cl8ucHJvdG90eXBlLnB1c2g9VmRlLHJfLnByb3RvdHlwZS5oYXM9VWRlO2Z1bmN0aW9uIFFjKG0pe3ZhciB2PXRoaXMuX19kYXRhX189bmV3IG5wKG0pO3RoaXMuc2l6ZT12LnNpemV9ZnVuY3Rpb24gcWRlKCl7dGhpcy5fX2RhdGFfXz1uZXcgbnAsdGhpcy5zaXplPTB9ZnVuY3Rpb24gR2RlKG0pe3ZhciB2PXRoaXMuX19kYXRhX18sVD12LmRlbGV0ZShtKTtyZXR1cm4gdGhpcy5zaXplPXYuc2l6ZSxUfWZ1bmN0aW9uIFdkZShtKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQobSl9ZnVuY3Rpb24gWWRlKG0pe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhtKX1mdW5jdGlvbiBqZGUobSx2KXt2YXIgVD10aGlzLl9fZGF0YV9fO2lmKFQgaW5zdGFuY2VvZiBucCl7dmFyIE49VC5fX2RhdGFfXztpZighRU18fE4ubGVuZ3RoPHItMSlyZXR1cm4gTi5wdXNoKFttLHZdKSx0aGlzLnNpemU9KytULnNpemUsdGhpcztUPXRoaXMuX19kYXRhX189bmV3IGlwKE4pfXJldHVybiBULnNldChtLHYpLHRoaXMuc2l6ZT1ULnNpemUsdGhpc31RYy5wcm90b3R5cGUuY2xlYXI9cWRlLFFjLnByb3RvdHlwZS5kZWxldGU9R2RlLFFjLnByb3RvdHlwZS5nZXQ9V2RlLFFjLnByb3RvdHlwZS5oYXM9WWRlLFFjLnByb3RvdHlwZS5zZXQ9amRlO2Z1bmN0aW9uIEFmdChtLHYpe3ZhciBUPSRlKG0pLE49IVQmJnNfKG0pLFY9IVQmJiFOJiZibShtKSxZPSFUJiYhTiYmIVYmJnd4KG0pLEo9VHx8Tnx8Vnx8WSxpdD1KP2hxKG0ubGVuZ3RoLG5kZSk6W10sZnQ9aXQubGVuZ3RoO2Zvcih2YXIgRHQgaW4gbSkodnx8dW4uY2FsbChtLER0KSkmJiEoSiYmKER0PT0ibGVuZ3RoInx8ViYmKER0PT0ib2Zmc2V0Inx8RHQ9PSJwYXJlbnQiKXx8WSYmKER0PT0iYnVmZmVyInx8RHQ9PSJieXRlTGVuZ3RoInx8RHQ9PSJieXRlT2Zmc2V0Iil8fGxwKER0LGZ0KSkpJiZpdC5wdXNoKER0KTtyZXR1cm4gaXR9ZnVuY3Rpb24gUGZ0KG0pe3ZhciB2PW0ubGVuZ3RoO3JldHVybiB2P21bQXEoMCx2LTEpXTplfWZ1bmN0aW9uIFhkZShtLHYpe3JldHVybiBkSShmcyhtKSxuXyh2LDAsbS5sZW5ndGgpKX1mdW5jdGlvbiAkZGUobSl7cmV0dXJuIGRJKGZzKG0pKX1mdW5jdGlvbiB5cShtLHYsVCl7KFQhPT1lJiYhdHUobVt2XSxUKXx8VD09PWUmJiEodiBpbiBtKSkmJm9wKG0sdixUKX1mdW5jdGlvbiBQTShtLHYsVCl7dmFyIE49bVt2XTsoISh1bi5jYWxsKG0sdikmJnR1KE4sVCkpfHxUPT09ZSYmISh2IGluIG0pKSYmb3AobSx2LFQpfWZ1bmN0aW9uIGVJKG0sdil7Zm9yKHZhciBUPW0ubGVuZ3RoO1QtLTspaWYodHUobVtUXVswXSx2KSlyZXR1cm4gVDtyZXR1cm4tMX1mdW5jdGlvbiBLZGUobSx2LFQsTil7cmV0dXJuIF9tKG0sZnVuY3Rpb24oVixZLEope3YoTixWLFQoViksSil9KSxOfWZ1bmN0aW9uIElmdChtLHYpe3JldHVybiBtJiZtaCh2LGZvKHYpLG0pfWZ1bmN0aW9uIFpkZShtLHYpe3JldHVybiBtJiZtaCh2LGRzKHYpLG0pfWZ1bmN0aW9uIG9wKG0sdixUKXt2PT0iX19wcm90b19fIiYmJDY/JDYobSx2LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpULHdyaXRhYmxlOiEwfSk6bVt2XT1UfWZ1bmN0aW9uIHZxKG0sdil7Zm9yKHZhciBUPS0xLE49di5sZW5ndGgsVj12dChOKSxZPW09PW51bGw7KytUPE47KVZbVF09WT9lOlFxKG0sdltUXSk7cmV0dXJuIFZ9ZnVuY3Rpb24gbl8obSx2LFQpe3JldHVybiBtPT09bSYmKFQhPT1lJiYobT1tPD1UP206VCksdiE9PWUmJihtPW0+PXY/bTp2KSksbX1mdW5jdGlvbiBXbChtLHYsVCxOLFYsWSl7dmFyIEosaXQ9diZjLGZ0PXYmdSxEdD12Jmg7aWYoVCYmKEo9Vj9UKG0sTixWLFkpOlQobSkpLEohPT1lKXJldHVybiBKO2lmKCFyaShtKSlyZXR1cm4gbTt2YXIgT3Q9JGUobSk7aWYoT3Qpe2lmKEo9Qm1lKG0pLCFpdClyZXR1cm4gZnMobSxKKX1lbHNle3ZhciBWdD1yYShtKSxvZT1WdD09ZXR8fFZ0PT1kdDtpZihibShtKSlyZXR1cm4gdHB0KG0saXQpO2lmKFZ0PT13dHx8VnQ9PWJ0fHxvZSYmIVYpe2lmKEo9ZnR8fG9lP3t9OnZwdChtKSwhaXQpcmV0dXJuIGZ0P0FtZShtLFpkZShKLG0pKTpDbWUobSxJZnQoSixtKSl9ZWxzZXtpZighVG5bVnRdKXJldHVybiBWP206e307Sj1IbWUobSxWdCxpdCl9fVl8fChZPW5ldyBRYyk7dmFyIFRlPVkuZ2V0KG0pO2lmKFRlKXJldHVybiBUZTtZLnNldChtLEopLFhwdChtKT9tLmZvckVhY2goZnVuY3Rpb24oRGUpe0ouYWRkKFdsKERlLHYsVCxEZSxtLFkpKX0pOllwdChtKSYmbS5mb3JFYWNoKGZ1bmN0aW9uKERlLHByKXtKLnNldChwcixXbChEZSx2LFQscHIsbSxZKSl9KTt2YXIgTmU9RHQ/ZnQ/QnE6RnE6ZnQ/ZHM6Zm8sZXI9T3Q/ZTpOZShtKTtyZXR1cm4gVWwoZXJ8fG0sZnVuY3Rpb24oRGUscHIpe2VyJiYocHI9RGUsRGU9bVtwcl0pLFBNKEoscHIsV2woRGUsdixULHByLG0sWSkpfSksSn1mdW5jdGlvbiBKZGUobSl7dmFyIHY9Zm8obSk7cmV0dXJuIGZ1bmN0aW9uKFQpe3JldHVybiBMZnQoVCxtLHYpfX1mdW5jdGlvbiBMZnQobSx2LFQpe3ZhciBOPVQubGVuZ3RoO2lmKG09PW51bGwpcmV0dXJuIU47Zm9yKG09dm4obSk7Ti0tOyl7dmFyIFY9VFtOXSxZPXZbVl0sSj1tW1ZdO2lmKEo9PT1lJiYhKFYgaW4gbSl8fCFZKEopKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGtmdChtLHYsVCl7aWYodHlwZW9mIG0hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHFsKGkpO3JldHVybiBPTShmdW5jdGlvbigpe20uYXBwbHkoZSxUKX0sdil9ZnVuY3Rpb24gSU0obSx2LFQsTil7dmFyIFY9LTEsWT1GNixKPSEwLGl0PW0ubGVuZ3RoLGZ0PVtdLER0PXYubGVuZ3RoO2lmKCFpdClyZXR1cm4gZnQ7VCYmKHY9S24odixHcyhUKSkpLE4/KFk9b3EsSj0hMSk6di5sZW5ndGg+PXImJihZPVNNLEo9ITEsdj1uZXcgcl8odikpO3Q6Zm9yKDsrK1Y8aXQ7KXt2YXIgT3Q9bVtWXSxWdD1UPT1udWxsP090OlQoT3QpO2lmKE90PU58fE90IT09MD9PdDowLEomJlZ0PT09VnQpe2Zvcih2YXIgb2U9RHQ7b2UtLTspaWYodltvZV09PT1WdCljb250aW51ZSB0O2Z0LnB1c2goT3QpfWVsc2UgWSh2LFZ0LE4pfHxmdC5wdXNoKE90KX1yZXR1cm4gZnR9dmFyIF9tPW9wdChkaCksUmZ0PW9wdChicSwhMCk7ZnVuY3Rpb24gUWRlKG0sdil7dmFyIFQ9ITA7cmV0dXJuIF9tKG0sZnVuY3Rpb24oTixWLFkpe3JldHVybiBUPSEhdihOLFYsWSksVH0pLFR9ZnVuY3Rpb24gckkobSx2LFQpe2Zvcih2YXIgTj0tMSxWPW0ubGVuZ3RoOysrTjxWOyl7dmFyIFk9bVtOXSxKPXYoWSk7aWYoSiE9bnVsbCYmKGl0PT09ZT9KPT09SiYmIVlzKEopOlQoSixpdCkpKXZhciBpdD1KLGZ0PVl9cmV0dXJuIGZ0fWZ1bmN0aW9uIHRtZShtLHYsVCxOKXt2YXIgVj1tLmxlbmd0aDtmb3IoVD1RZShUKSxUPDAmJihUPS1UPlY/MDpWK1QpLE49Tj09PWV8fE4+Vj9WOlFlKE4pLE48MCYmKE4rPVYpLE49VD5OPzA6S3B0KE4pO1Q8TjspbVtUKytdPXY7cmV0dXJuIG19ZnVuY3Rpb24gTmZ0KG0sdil7dmFyIFQ9W107cmV0dXJuIF9tKG0sZnVuY3Rpb24oTixWLFkpe3YoTixWLFkpJiZULnB1c2goTil9KSxUfWZ1bmN0aW9uIGtvKG0sdixULE4sVil7dmFyIFk9LTEsSj1tLmxlbmd0aDtmb3IoVHx8KFQ9VW1lKSxWfHwoVj1bXSk7KytZPEo7KXt2YXIgaXQ9bVtZXTt2PjAmJlQoaXQpP3Y+MT9rbyhpdCx2LTEsVCxOLFYpOnBtKFYsaXQpOk58fChWW1YubGVuZ3RoXT1pdCl9cmV0dXJuIFZ9dmFyIHhxPWFwdCgpLERmdD1hcHQoITApO2Z1bmN0aW9uIGRoKG0sdil7cmV0dXJuIG0mJnhxKG0sdixmbyl9ZnVuY3Rpb24gYnEobSx2KXtyZXR1cm4gbSYmRGZ0KG0sdixmbyl9ZnVuY3Rpb24gbkkobSx2KXtyZXR1cm4gZm0odixmdW5jdGlvbihUKXtyZXR1cm4gY3AobVtUXSl9KX1mdW5jdGlvbiBpXyhtLHYpe3Y9dm0odixtKTtmb3IodmFyIFQ9MCxOPXYubGVuZ3RoO20hPW51bGwmJlQ8TjspbT1tW2doKHZbVCsrXSldO3JldHVybiBUJiZUPT1OP206ZX1mdW5jdGlvbiBPZnQobSx2LFQpe3ZhciBOPXYobSk7cmV0dXJuICRlKG0pP046cG0oTixUKG0pKX1mdW5jdGlvbiBJYShtKXtyZXR1cm4gbT09bnVsbD9tPT09ZT90dDpodDp0XyYmdF8gaW4gdm4obSk/T21lKG0pOiRtZShtKX1mdW5jdGlvbiB3cShtLHYpe3JldHVybiBtPnZ9ZnVuY3Rpb24gZW1lKG0sdil7cmV0dXJuIG0hPW51bGwmJnVuLmNhbGwobSx2KX1mdW5jdGlvbiBybWUobSx2KXtyZXR1cm4gbSE9bnVsbCYmdiBpbiB2bihtKX1mdW5jdGlvbiBubWUobSx2LFQpe3JldHVybiBtPj1lYSh2LFQpJiZtPGppKHYsVCl9ZnVuY3Rpb24gU3EobSx2LFQpe2Zvcih2YXIgTj1UP29xOkY2LFY9bVswXS5sZW5ndGgsWT1tLmxlbmd0aCxKPVksaXQ9dnQoWSksZnQ9MS8wLER0PVtdO0otLTspe3ZhciBPdD1tW0pdO0omJnYmJihPdD1LbihPdCxHcyh2KSkpLGZ0PWVhKE90Lmxlbmd0aCxmdCksaXRbSl09IVQmJih2fHxWPj0xMjAmJk90Lmxlbmd0aD49MTIwKT9uZXcgcl8oSiYmT3QpOmV9T3Q9bVswXTt2YXIgVnQ9LTEsb2U9aXRbMF07dDpmb3IoOysrVnQ8ViYmRHQubGVuZ3RoPGZ0Oyl7dmFyIFRlPU90W1Z0XSxOZT12P3YoVGUpOlRlO2lmKFRlPVR8fFRlIT09MD9UZTowLCEob2U/U00ob2UsTmUpOk4oRHQsTmUsVCkpKXtmb3IoSj1ZOy0tSjspe3ZhciBlcj1pdFtKXTtpZighKGVyP1NNKGVyLE5lKTpOKG1bSl0sTmUsVCkpKWNvbnRpbnVlIHR9b2UmJm9lLnB1c2goTmUpLER0LnB1c2goVGUpfX1yZXR1cm4gRHR9ZnVuY3Rpb24gaW1lKG0sdixULE4pe3JldHVybiBkaChtLGZ1bmN0aW9uKFYsWSxKKXt2KE4sVChWKSxZLEopfSksTn1mdW5jdGlvbiBMTShtLHYsVCl7dj12bSh2LG0pLG09U3B0KG0sdik7dmFyIE49bT09bnVsbD9tOm1bZ2goamwodikpXTtyZXR1cm4gTj09bnVsbD9lOnFzKE4sbSxUKX1mdW5jdGlvbiB6ZnQobSl7cmV0dXJuIGxpKG0pJiZJYShtKT09YnR9ZnVuY3Rpb24gb21lKG0pe3JldHVybiBsaShtKSYmSWEobSk9PSR0fWZ1bmN0aW9uIGFtZShtKXtyZXR1cm4gbGkobSkmJklhKG0pPT1fdH1mdW5jdGlvbiBrTShtLHYsVCxOLFYpe3JldHVybiBtPT09dj8hMDptPT1udWxsfHx2PT1udWxsfHwhbGkobSkmJiFsaSh2KT9tIT09bSYmdiE9PXY6c21lKG0sdixULE4sa00sVil9ZnVuY3Rpb24gc21lKG0sdixULE4sVixZKXt2YXIgSj0kZShtKSxpdD0kZSh2KSxmdD1KP010OnJhKG0pLER0PWl0P010OnJhKHYpO2Z0PWZ0PT1idD93dDpmdCxEdD1EdD09YnQ/d3Q6RHQ7dmFyIE90PWZ0PT13dCxWdD1EdD09d3Qsb2U9ZnQ9PUR0O2lmKG9lJiZibShtKSl7aWYoIWJtKHYpKXJldHVybiExO0o9ITAsT3Q9ITF9aWYob2UmJiFPdClyZXR1cm4gWXx8KFk9bmV3IFFjKSxKfHx3eChtKT9ncHQobSx2LFQsTixWLFkpOk5tZShtLHYsZnQsVCxOLFYsWSk7aWYoIShUJmYpKXt2YXIgVGU9T3QmJnVuLmNhbGwobSwiX193cmFwcGVkX18iKSxOZT1WdCYmdW4uY2FsbCh2LCJfX3dyYXBwZWRfXyIpO2lmKFRlfHxOZSl7dmFyIGVyPVRlP20udmFsdWUoKTptLERlPU5lP3YudmFsdWUoKTp2O3JldHVybiBZfHwoWT1uZXcgUWMpLFYoZXIsRGUsVCxOLFkpfX1yZXR1cm4gb2U/KFl8fChZPW5ldyBRYyksRG1lKG0sdixULE4sVixZKSk6ITF9ZnVuY3Rpb24gbG1lKG0pe3JldHVybiBsaShtKSYmcmEobSk9PXF9ZnVuY3Rpb24gTXEobSx2LFQsTil7dmFyIFY9VC5sZW5ndGgsWT1WLEo9IU47aWYobT09bnVsbClyZXR1cm4hWTtmb3IobT12bihtKTtWLS07KXt2YXIgaXQ9VFtWXTtpZihKJiZpdFsyXT9pdFsxXSE9PW1baXRbMF1dOiEoaXRbMF1pbiBtKSlyZXR1cm4hMX1mb3IoOysrVjxZOyl7aXQ9VFtWXTt2YXIgZnQ9aXRbMF0sRHQ9bVtmdF0sT3Q9aXRbMV07aWYoSiYmaXRbMl0pe2lmKER0PT09ZSYmIShmdCBpbiBtKSlyZXR1cm4hMX1lbHNle3ZhciBWdD1uZXcgUWM7aWYoTil2YXIgb2U9TihEdCxPdCxmdCxtLHYsVnQpO2lmKCEob2U9PT1lP2tNKE90LER0LGZ8cCxOLFZ0KTpvZSkpcmV0dXJuITF9fXJldHVybiEwfWZ1bmN0aW9uIEZmdChtKXtpZighcmkobSl8fEdtZShtKSlyZXR1cm4hMTt2YXIgdj1jcChtKT9sZGU6UHI7cmV0dXJuIHYudGVzdChhXyhtKSl9ZnVuY3Rpb24gY21lKG0pe3JldHVybiBsaShtKSYmSWEobSk9PWVlfWZ1bmN0aW9uIHVtZShtKXtyZXR1cm4gbGkobSkmJnJhKG0pPT1MZX1mdW5jdGlvbiBobWUobSl7cmV0dXJuIGxpKG0pJiZ4SShtLmxlbmd0aCkmJiEhUm5bSWEobSldfWZ1bmN0aW9uIEJmdChtKXtyZXR1cm4gdHlwZW9mIG09PSJmdW5jdGlvbiI/bTptPT1udWxsP21zOnR5cGVvZiBtPT0ib2JqZWN0Ij8kZShtKT9VZnQobVswXSxtWzFdKTpWZnQobSk6c2R0KG0pfWZ1bmN0aW9uIEVxKG0pe2lmKCFETShtKSlyZXR1cm4gZGRlKG0pO3ZhciB2PVtdO2Zvcih2YXIgVCBpbiB2bihtKSl1bi5jYWxsKG0sVCkmJlQhPSJjb25zdHJ1Y3RvciImJnYucHVzaChUKTtyZXR1cm4gdn1mdW5jdGlvbiBmbWUobSl7aWYoIXJpKG0pKXJldHVybiBYbWUobSk7dmFyIHY9RE0obSksVD1bXTtmb3IodmFyIE4gaW4gbSlOPT0iY29uc3RydWN0b3IiJiYodnx8IXVuLmNhbGwobSxOKSl8fFQucHVzaChOKTtyZXR1cm4gVH1mdW5jdGlvbiBUcShtLHYpe3JldHVybiBtPHZ9ZnVuY3Rpb24gSGZ0KG0sdil7dmFyIFQ9LTEsTj1wcyhtKT92dChtLmxlbmd0aCk6W107cmV0dXJuIF9tKG0sZnVuY3Rpb24oVixZLEope05bKytUXT12KFYsWSxKKX0pLE59ZnVuY3Rpb24gVmZ0KG0pe3ZhciB2PVZxKG0pO3JldHVybiB2Lmxlbmd0aD09MSYmdlswXVsyXT9icHQodlswXVswXSx2WzBdWzFdKTpmdW5jdGlvbihUKXtyZXR1cm4gVD09PW18fE1xKFQsbSx2KX19ZnVuY3Rpb24gVWZ0KG0sdil7cmV0dXJuIHFxKG0pJiZ4cHQodik/YnB0KGdoKG0pLHYpOmZ1bmN0aW9uKFQpe3ZhciBOPVFxKFQsbSk7cmV0dXJuIE49PT1lJiZOPT09dj90RyhULG0pOmtNKHYsTixmfHApfX1mdW5jdGlvbiBpSShtLHYsVCxOLFYpe20hPT12JiZ4cSh2LGZ1bmN0aW9uKFksSil7aWYoVnx8KFY9bmV3IFFjKSxyaShZKSlwbWUobSx2LEosVCxpSSxOLFYpO2Vsc2V7dmFyIGl0PU4/TihXcShtLEopLFksSisiIixtLHYsVik6ZTtpdD09PWUmJihpdD1ZKSx5cShtLEosaXQpfX0sZHMpfWZ1bmN0aW9uIHBtZShtLHYsVCxOLFYsWSxKKXt2YXIgaXQ9V3EobSxUKSxmdD1XcSh2LFQpLER0PUouZ2V0KGZ0KTtpZihEdCl7eXEobSxULER0KTtyZXR1cm59dmFyIE90PVk/WShpdCxmdCxUKyIiLG0sdixKKTplLFZ0PU90PT09ZTtpZihWdCl7dmFyIG9lPSRlKGZ0KSxUZT0hb2UmJmJtKGZ0KSxOZT0hb2UmJiFUZSYmd3goZnQpO090PWZ0LG9lfHxUZXx8TmU/JGUoaXQpP090PWl0OmJpKGl0KT9PdD1mcyhpdCk6VGU/KFZ0PSExLE90PXRwdChmdCwhMCkpOk5lPyhWdD0hMSxPdD1lcHQoZnQsITApKTpPdD1bXTp6TShmdCl8fHNfKGZ0KT8oT3Q9aXQsc18oaXQpP090PVpwdChpdCk6KCFyaShpdCl8fGNwKGl0KSkmJihPdD12cHQoZnQpKSk6VnQ9ITF9VnQmJihKLnNldChmdCxPdCksVihPdCxmdCxOLFksSiksSi5kZWxldGUoZnQpKSx5cShtLFQsT3QpfWZ1bmN0aW9uIHFmdChtLHYpe3ZhciBUPW0ubGVuZ3RoO2lmKCEhVClyZXR1cm4gdis9djwwP1Q6MCxscCh2LFQpP21bdl06ZX1mdW5jdGlvbiBHZnQobSx2LFQpe3YubGVuZ3RoP3Y9S24odixmdW5jdGlvbihZKXtyZXR1cm4gJGUoWSk/ZnVuY3Rpb24oSil7cmV0dXJuIGlfKEosWS5sZW5ndGg9PT0xP1lbMF06WSl9Oll9KTp2PVttc107dmFyIE49LTE7dj1Lbih2LEdzKGtlKCkpKTt2YXIgVj1IZnQobSxmdW5jdGlvbihZLEosaXQpe3ZhciBmdD1Lbih2LGZ1bmN0aW9uKER0KXtyZXR1cm4gRHQoWSl9KTtyZXR1cm57Y3JpdGVyaWE6ZnQsaW5kZXg6KytOLHZhbHVlOll9fSk7cmV0dXJuIEhwZShWLGZ1bmN0aW9uKFksSil7cmV0dXJuIFRtZShZLEosVCl9KX1mdW5jdGlvbiBkbWUobSx2KXtyZXR1cm4gV2Z0KG0sdixmdW5jdGlvbihULE4pe3JldHVybiB0RyhtLE4pfSl9ZnVuY3Rpb24gV2Z0KG0sdixUKXtmb3IodmFyIE49LTEsVj12Lmxlbmd0aCxZPXt9OysrTjxWOyl7dmFyIEo9dltOXSxpdD1pXyhtLEopO1QoaXQsSikmJlJNKFksdm0oSixtKSxpdCl9cmV0dXJuIFl9ZnVuY3Rpb24gbW1lKG0pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gaV8odixtKX19ZnVuY3Rpb24gQ3EobSx2LFQsTil7dmFyIFY9Tj9CcGU6ZngsWT0tMSxKPXYubGVuZ3RoLGl0PW07Zm9yKG09PT12JiYodj1mcyh2KSksVCYmKGl0PUtuKG0sR3MoVCkpKTsrK1k8SjspZm9yKHZhciBmdD0wLER0PXZbWV0sT3Q9VD9UKER0KTpEdDsoZnQ9VihpdCxPdCxmdCxOKSk+LTE7KWl0IT09bSYmWDYuY2FsbChpdCxmdCwxKSxYNi5jYWxsKG0sZnQsMSk7cmV0dXJuIG19ZnVuY3Rpb24gWWZ0KG0sdil7Zm9yKHZhciBUPW0/di5sZW5ndGg6MCxOPVQtMTtULS07KXt2YXIgVj12W1RdO2lmKFQ9PU58fFYhPT1ZKXt2YXIgWT1WO2xwKFYpP1g2LmNhbGwobSxWLDEpOkxxKG0sVil9fXJldHVybiBtfWZ1bmN0aW9uIEFxKG0sdil7cmV0dXJuIG0rWjYoVGZ0KCkqKHYtbSsxKSl9ZnVuY3Rpb24gZ21lKG0sdixULE4pe2Zvcih2YXIgVj0tMSxZPWppKEs2KCh2LW0pLyhUfHwxKSksMCksSj12dChZKTtZLS07KUpbTj9ZOisrVl09bSxtKz1UO3JldHVybiBKfWZ1bmN0aW9uIFBxKG0sdil7dmFyIFQ9IiI7aWYoIW18fHY8MXx8dj5VKXJldHVybiBUO2RvIHYlMiYmKFQrPW0pLHY9WjYodi8yKSx2JiYobSs9bSk7d2hpbGUodik7cmV0dXJuIFR9ZnVuY3Rpb24gbnIobSx2KXtyZXR1cm4gWXEod3B0KG0sdixtcyksbSsiIil9ZnVuY3Rpb24gX21lKG0pe3JldHVybiBQZnQoU3gobSkpfWZ1bmN0aW9uIHltZShtLHYpe3ZhciBUPVN4KG0pO3JldHVybiBkSShULG5fKHYsMCxULmxlbmd0aCkpfWZ1bmN0aW9uIFJNKG0sdixULE4pe2lmKCFyaShtKSlyZXR1cm4gbTt2PXZtKHYsbSk7Zm9yKHZhciBWPS0xLFk9di5sZW5ndGgsSj1ZLTEsaXQ9bTtpdCE9bnVsbCYmKytWPFk7KXt2YXIgZnQ9Z2godltWXSksRHQ9VDtpZihmdD09PSJfX3Byb3RvX18ifHxmdD09PSJjb25zdHJ1Y3RvciJ8fGZ0PT09InByb3RvdHlwZSIpcmV0dXJuIG07aWYoViE9Sil7dmFyIE90PWl0W2Z0XTtEdD1OP04oT3QsZnQsaXQpOmUsRHQ9PT1lJiYoRHQ9cmkoT3QpP090OmxwKHZbVisxXSk/W106e30pfVBNKGl0LGZ0LER0KSxpdD1pdFtmdF19cmV0dXJuIG19dmFyIGpmdD1KNj9mdW5jdGlvbihtLHYpe3JldHVybiBKNi5zZXQobSx2KSxtfTptcyx2bWU9JDY/ZnVuY3Rpb24obSx2KXtyZXR1cm4gJDYobSwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpyRyh2KSx3cml0YWJsZTohMH0pfTptcztmdW5jdGlvbiB4bWUobSl7cmV0dXJuIGRJKFN4KG0pKX1mdW5jdGlvbiBZbChtLHYsVCl7dmFyIE49LTEsVj1tLmxlbmd0aDt2PDAmJih2PS12PlY/MDpWK3YpLFQ9VD5WP1Y6VCxUPDAmJihUKz1WKSxWPXY+VD8wOlQtdj4+PjAsdj4+Pj0wO2Zvcih2YXIgWT12dChWKTsrK048VjspWVtOXT1tW04rdl07cmV0dXJuIFl9ZnVuY3Rpb24gYm1lKG0sdil7dmFyIFQ7cmV0dXJuIF9tKG0sZnVuY3Rpb24oTixWLFkpe3JldHVybiBUPXYoTixWLFkpLCFUfSksISFUfWZ1bmN0aW9uIG9JKG0sdixUKXt2YXIgTj0wLFY9bT09bnVsbD9OOm0ubGVuZ3RoO2lmKHR5cGVvZiB2PT0ibnVtYmVyIiYmdj09PXYmJlY8PXN0KXtmb3IoO048Vjspe3ZhciBZPU4rVj4+PjEsSj1tW1ldO0ohPT1udWxsJiYhWXMoSikmJihUP0o8PXY6Sjx2KT9OPVkrMTpWPVl9cmV0dXJuIFZ9cmV0dXJuIElxKG0sdixtcyxUKX1mdW5jdGlvbiBJcShtLHYsVCxOKXt2YXIgVj0wLFk9bT09bnVsbD8wOm0ubGVuZ3RoO2lmKFk9PT0wKXJldHVybiAwO3Y9VCh2KTtmb3IodmFyIEo9diE9PXYsaXQ9dj09PW51bGwsZnQ9WXModiksRHQ9dj09PWU7VjxZOyl7dmFyIE90PVo2KChWK1kpLzIpLFZ0PVQobVtPdF0pLG9lPVZ0IT09ZSxUZT1WdD09PW51bGwsTmU9VnQ9PT1WdCxlcj1ZcyhWdCk7aWYoSil2YXIgRGU9Tnx8TmU7ZWxzZSBEdD9EZT1OZSYmKE58fG9lKTppdD9EZT1OZSYmb2UmJihOfHwhVGUpOmZ0P0RlPU5lJiZvZSYmIVRlJiYoTnx8IWVyKTpUZXx8ZXI/RGU9ITE6RGU9Tj9WdDw9djpWdDx2O0RlP1Y9T3QrMTpZPU90fXJldHVybiBlYShZLG90KX1mdW5jdGlvbiBYZnQobSx2KXtmb3IodmFyIFQ9LTEsTj1tLmxlbmd0aCxWPTAsWT1bXTsrK1Q8Tjspe3ZhciBKPW1bVF0saXQ9dj92KEopOko7aWYoIVR8fCF0dShpdCxmdCkpe3ZhciBmdD1pdDtZW1YrK109Sj09PTA/MDpKfX1yZXR1cm4gWX1mdW5jdGlvbiAkZnQobSl7cmV0dXJuIHR5cGVvZiBtPT0ibnVtYmVyIj9tOllzKG0pP1o6K219ZnVuY3Rpb24gV3MobSl7aWYodHlwZW9mIG09PSJzdHJpbmciKXJldHVybiBtO2lmKCRlKG0pKXJldHVybiBLbihtLFdzKSsiIjtpZihZcyhtKSlyZXR1cm4gQ2Z0P0NmdC5jYWxsKG0pOiIiO3ZhciB2PW0rIiI7cmV0dXJuIHY9PSIwIiYmMS9tPT0tej8iLTAiOnZ9ZnVuY3Rpb24geW0obSx2LFQpe3ZhciBOPS0xLFY9RjYsWT1tLmxlbmd0aCxKPSEwLGl0PVtdLGZ0PWl0O2lmKFQpSj0hMSxWPW9xO2Vsc2UgaWYoWT49cil7dmFyIER0PXY/bnVsbDprbWUobSk7aWYoRHQpcmV0dXJuIEg2KER0KTtKPSExLFY9U00sZnQ9bmV3IHJffWVsc2UgZnQ9dj9bXTppdDt0OmZvcig7KytOPFk7KXt2YXIgT3Q9bVtOXSxWdD12P3YoT3QpOk90O2lmKE90PVR8fE90IT09MD9PdDowLEomJlZ0PT09VnQpe2Zvcih2YXIgb2U9ZnQubGVuZ3RoO29lLS07KWlmKGZ0W29lXT09PVZ0KWNvbnRpbnVlIHQ7diYmZnQucHVzaChWdCksaXQucHVzaChPdCl9ZWxzZSBWKGZ0LFZ0LFQpfHwoZnQhPT1pdCYmZnQucHVzaChWdCksaXQucHVzaChPdCkpfXJldHVybiBpdH1mdW5jdGlvbiBMcShtLHYpe3JldHVybiB2PXZtKHYsbSksbT1TcHQobSx2KSxtPT1udWxsfHxkZWxldGUgbVtnaChqbCh2KSldfWZ1bmN0aW9uIEtmdChtLHYsVCxOKXtyZXR1cm4gUk0obSx2LFQoaV8obSx2KSksTil9ZnVuY3Rpb24gYUkobSx2LFQsTil7Zm9yKHZhciBWPW0ubGVuZ3RoLFk9Tj9WOi0xOyhOP1ktLTorK1k8VikmJnYobVtZXSxZLG0pOyk7cmV0dXJuIFQ/WWwobSxOPzA6WSxOP1krMTpWKTpZbChtLE4/WSsxOjAsTj9WOlkpfWZ1bmN0aW9uIFpmdChtLHYpe3ZhciBUPW07cmV0dXJuIFQgaW5zdGFuY2VvZiBnciYmKFQ9VC52YWx1ZSgpKSxhcSh2LGZ1bmN0aW9uKE4sVil7cmV0dXJuIFYuZnVuYy5hcHBseShWLnRoaXNBcmcscG0oW05dLFYuYXJncykpfSxUKX1mdW5jdGlvbiBrcShtLHYsVCl7dmFyIE49bS5sZW5ndGg7aWYoTjwyKXJldHVybiBOP3ltKG1bMF0pOltdO2Zvcih2YXIgVj0tMSxZPXZ0KE4pOysrVjxOOylmb3IodmFyIEo9bVtWXSxpdD0tMTsrK2l0PE47KWl0IT1WJiYoWVtWXT1JTShZW1ZdfHxKLG1baXRdLHYsVCkpO3JldHVybiB5bShrbyhZLDEpLHYsVCl9ZnVuY3Rpb24gSmZ0KG0sdixUKXtmb3IodmFyIE49LTEsVj1tLmxlbmd0aCxZPXYubGVuZ3RoLEo9e307KytOPFY7KXt2YXIgaXQ9TjxZP3ZbTl06ZTtUKEosbVtOXSxpdCl9cmV0dXJuIEp9ZnVuY3Rpb24gUnEobSl7cmV0dXJuIGJpKG0pP206W119ZnVuY3Rpb24gTnEobSl7cmV0dXJuIHR5cGVvZiBtPT0iZnVuY3Rpb24iP206bXN9ZnVuY3Rpb24gdm0obSx2KXtyZXR1cm4gJGUobSk/bTpxcShtLHYpP1ttXTpDcHQob24obSkpfXZhciB3bWU9bnI7ZnVuY3Rpb24geG0obSx2LFQpe3ZhciBOPW0ubGVuZ3RoO3JldHVybiBUPVQ9PT1lP046VCwhdiYmVD49Tj9tOllsKG0sdixUKX12YXIgUWZ0PWNkZXx8ZnVuY3Rpb24obSl7cmV0dXJuIGhvLmNsZWFyVGltZW91dChtKX07ZnVuY3Rpb24gdHB0KG0sdil7aWYodilyZXR1cm4gbS5zbGljZSgpO3ZhciBUPW0ubGVuZ3RoLE49YmZ0P2JmdChUKTpuZXcgbS5jb25zdHJ1Y3RvcihUKTtyZXR1cm4gbS5jb3B5KE4pLE59ZnVuY3Rpb24gRHEobSl7dmFyIHY9bmV3IG0uY29uc3RydWN0b3IobS5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IFk2KHYpLnNldChuZXcgWTYobSkpLHZ9ZnVuY3Rpb24gU21lKG0sdil7dmFyIFQ9dj9EcShtLmJ1ZmZlcik6bS5idWZmZXI7cmV0dXJuIG5ldyBtLmNvbnN0cnVjdG9yKFQsbS5ieXRlT2Zmc2V0LG0uYnl0ZUxlbmd0aCl9ZnVuY3Rpb24gTW1lKG0pe3ZhciB2PW5ldyBtLmNvbnN0cnVjdG9yKG0uc291cmNlLEtlLmV4ZWMobSkpO3JldHVybiB2Lmxhc3RJbmRleD1tLmxhc3RJbmRleCx2fWZ1bmN0aW9uIEVtZShtKXtyZXR1cm4gQU0/dm4oQU0uY2FsbChtKSk6e319ZnVuY3Rpb24gZXB0KG0sdil7dmFyIFQ9dj9EcShtLmJ1ZmZlcik6bS5idWZmZXI7cmV0dXJuIG5ldyBtLmNvbnN0cnVjdG9yKFQsbS5ieXRlT2Zmc2V0LG0ubGVuZ3RoKX1mdW5jdGlvbiBycHQobSx2KXtpZihtIT09dil7dmFyIFQ9bSE9PWUsTj1tPT09bnVsbCxWPW09PT1tLFk9WXMobSksSj12IT09ZSxpdD12PT09bnVsbCxmdD12PT09dixEdD1Zcyh2KTtpZighaXQmJiFEdCYmIVkmJm0+dnx8WSYmSiYmZnQmJiFpdCYmIUR0fHxOJiZKJiZmdHx8IVQmJmZ0fHwhVilyZXR1cm4gMTtpZighTiYmIVkmJiFEdCYmbTx2fHxEdCYmVCYmViYmIU4mJiFZfHxpdCYmVCYmVnx8IUomJlZ8fCFmdClyZXR1cm4tMX1yZXR1cm4gMH1mdW5jdGlvbiBUbWUobSx2LFQpe2Zvcih2YXIgTj0tMSxWPW0uY3JpdGVyaWEsWT12LmNyaXRlcmlhLEo9Vi5sZW5ndGgsaXQ9VC5sZW5ndGg7KytOPEo7KXt2YXIgZnQ9cnB0KFZbTl0sWVtOXSk7aWYoZnQpe2lmKE4+PWl0KXJldHVybiBmdDt2YXIgRHQ9VFtOXTtyZXR1cm4gZnQqKER0PT0iZGVzYyI/LTE6MSl9fXJldHVybiBtLmluZGV4LXYuaW5kZXh9ZnVuY3Rpb24gbnB0KG0sdixULE4pe2Zvcih2YXIgVj0tMSxZPW0ubGVuZ3RoLEo9VC5sZW5ndGgsaXQ9LTEsZnQ9di5sZW5ndGgsRHQ9amkoWS1KLDApLE90PXZ0KGZ0K0R0KSxWdD0hTjsrK2l0PGZ0OylPdFtpdF09dltpdF07Zm9yKDsrK1Y8SjspKFZ0fHxWPFkpJiYoT3RbVFtWXV09bVtWXSk7Zm9yKDtEdC0tOylPdFtpdCsrXT1tW1YrK107cmV0dXJuIE90fWZ1bmN0aW9uIGlwdChtLHYsVCxOKXtmb3IodmFyIFY9LTEsWT1tLmxlbmd0aCxKPS0xLGl0PVQubGVuZ3RoLGZ0PS0xLER0PXYubGVuZ3RoLE90PWppKFktaXQsMCksVnQ9dnQoT3QrRHQpLG9lPSFOOysrVjxPdDspVnRbVl09bVtWXTtmb3IodmFyIFRlPVY7KytmdDxEdDspVnRbVGUrZnRdPXZbZnRdO2Zvcig7KytKPGl0Oykob2V8fFY8WSkmJihWdFtUZStUW0pdXT1tW1YrK10pO3JldHVybiBWdH1mdW5jdGlvbiBmcyhtLHYpe3ZhciBUPS0xLE49bS5sZW5ndGg7Zm9yKHZ8fCh2PXZ0KE4pKTsrK1Q8TjspdltUXT1tW1RdO3JldHVybiB2fWZ1bmN0aW9uIG1oKG0sdixULE4pe3ZhciBWPSFUO1R8fChUPXt9KTtmb3IodmFyIFk9LTEsSj12Lmxlbmd0aDsrK1k8Sjspe3ZhciBpdD12W1ldLGZ0PU4/TihUW2l0XSxtW2l0XSxpdCxULG0pOmU7ZnQ9PT1lJiYoZnQ9bVtpdF0pLFY/b3AoVCxpdCxmdCk6UE0oVCxpdCxmdCl9cmV0dXJuIFR9ZnVuY3Rpb24gQ21lKG0sdil7cmV0dXJuIG1oKG0sVXEobSksdil9ZnVuY3Rpb24gQW1lKG0sdil7cmV0dXJuIG1oKG0sX3B0KG0pLHYpfWZ1bmN0aW9uIHNJKG0sdil7cmV0dXJuIGZ1bmN0aW9uKFQsTil7dmFyIFY9JGUoVCk/UnBlOktkZSxZPXY/digpOnt9O3JldHVybiBWKFQsbSxrZShOLDIpLFkpfX1mdW5jdGlvbiB2eChtKXtyZXR1cm4gbnIoZnVuY3Rpb24odixUKXt2YXIgTj0tMSxWPVQubGVuZ3RoLFk9Vj4xP1RbVi0xXTplLEo9Vj4yP1RbMl06ZTtmb3IoWT1tLmxlbmd0aD4zJiZ0eXBlb2YgWT09ImZ1bmN0aW9uIj8oVi0tLFkpOmUsSiYmTGEoVFswXSxUWzFdLEopJiYoWT1WPDM/ZTpZLFY9MSksdj12bih2KTsrK048Vjspe3ZhciBpdD1UW05dO2l0JiZtKHYsaXQsTixZKX1yZXR1cm4gdn0pfWZ1bmN0aW9uIG9wdChtLHYpe3JldHVybiBmdW5jdGlvbihULE4pe2lmKFQ9PW51bGwpcmV0dXJuIFQ7aWYoIXBzKFQpKXJldHVybiBtKFQsTik7Zm9yKHZhciBWPVQubGVuZ3RoLFk9dj9WOi0xLEo9dm4oVCk7KHY/WS0tOisrWTxWKSYmTihKW1ldLFksSikhPT0hMTspO3JldHVybiBUfX1mdW5jdGlvbiBhcHQobSl7cmV0dXJuIGZ1bmN0aW9uKHYsVCxOKXtmb3IodmFyIFY9LTEsWT12bih2KSxKPU4odiksaXQ9Si5sZW5ndGg7aXQtLTspe3ZhciBmdD1KW20/aXQ6KytWXTtpZihUKFlbZnRdLGZ0LFkpPT09ITEpYnJlYWt9cmV0dXJuIHZ9fWZ1bmN0aW9uIFBtZShtLHYsVCl7dmFyIE49diZkLFY9Tk0obSk7ZnVuY3Rpb24gWSgpe3ZhciBKPXRoaXMmJnRoaXMhPT1obyYmdGhpcyBpbnN0YW5jZW9mIFk/VjptO3JldHVybiBKLmFwcGx5KE4/VDp0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIFl9ZnVuY3Rpb24gc3B0KG0pe3JldHVybiBmdW5jdGlvbih2KXt2PW9uKHYpO3ZhciBUPXB4KHYpP0pjKHYpOmUsTj1UP1RbMF06di5jaGFyQXQoMCksVj1UP3htKFQsMSkuam9pbigiIik6di5zbGljZSgxKTtyZXR1cm4gTlttXSgpK1Z9fWZ1bmN0aW9uIHh4KG0pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gYXEob2R0KGlkdCh2KS5yZXBsYWNlKHZwZSwiIikpLG0sIiIpfX1mdW5jdGlvbiBOTShtKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdj1hcmd1bWVudHM7c3dpdGNoKHYubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBtO2Nhc2UgMTpyZXR1cm4gbmV3IG0odlswXSk7Y2FzZSAyOnJldHVybiBuZXcgbSh2WzBdLHZbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IG0odlswXSx2WzFdLHZbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IG0odlswXSx2WzFdLHZbMl0sdlszXSk7Y2FzZSA1OnJldHVybiBuZXcgbSh2WzBdLHZbMV0sdlsyXSx2WzNdLHZbNF0pO2Nhc2UgNjpyZXR1cm4gbmV3IG0odlswXSx2WzFdLHZbMl0sdlszXSx2WzRdLHZbNV0pO2Nhc2UgNzpyZXR1cm4gbmV3IG0odlswXSx2WzFdLHZbMl0sdlszXSx2WzRdLHZbNV0sdls2XSl9dmFyIFQ9eXgobS5wcm90b3R5cGUpLE49bS5hcHBseShULHYpO3JldHVybiByaShOKT9OOlR9fWZ1bmN0aW9uIEltZShtLHYsVCl7dmFyIE49Tk0obSk7ZnVuY3Rpb24gVigpe2Zvcih2YXIgWT1hcmd1bWVudHMubGVuZ3RoLEo9dnQoWSksaXQ9WSxmdD1ieChWKTtpdC0tOylKW2l0XT1hcmd1bWVudHNbaXRdO3ZhciBEdD1ZPDMmJkpbMF0hPT1mdCYmSltZLTFdIT09ZnQ/W106ZG0oSixmdCk7aWYoWS09RHQubGVuZ3RoLFk8VClyZXR1cm4gZnB0KG0sdixsSSxWLnBsYWNlaG9sZGVyLGUsSixEdCxlLGUsVC1ZKTt2YXIgT3Q9dGhpcyYmdGhpcyE9PWhvJiZ0aGlzIGluc3RhbmNlb2YgVj9OOm07cmV0dXJuIHFzKE90LHRoaXMsSil9cmV0dXJuIFZ9ZnVuY3Rpb24gbHB0KG0pe3JldHVybiBmdW5jdGlvbih2LFQsTil7dmFyIFY9dm4odik7aWYoIXBzKHYpKXt2YXIgWT1rZShULDMpO3Y9Zm8odiksVD1mdW5jdGlvbihpdCl7cmV0dXJuIFkoVltpdF0saXQsVil9fXZhciBKPW0odixULE4pO3JldHVybiBKPi0xP1ZbWT92W0pdOkpdOmV9fWZ1bmN0aW9uIGNwdChtKXtyZXR1cm4gc3AoZnVuY3Rpb24odil7dmFyIFQ9di5sZW5ndGgsTj1ULFY9R2wucHJvdG90eXBlLnRocnU7Zm9yKG0mJnYucmV2ZXJzZSgpO04tLTspe3ZhciBZPXZbTl07aWYodHlwZW9mIFkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHFsKGkpO2lmKFYmJiFKJiZmSShZKT09IndyYXBwZXIiKXZhciBKPW5ldyBHbChbXSwhMCl9Zm9yKE49Sj9OOlQ7KytOPFQ7KXtZPXZbTl07dmFyIGl0PWZJKFkpLGZ0PWl0PT0id3JhcHBlciI/SHEoWSk6ZTtmdCYmR3EoZnRbMF0pJiZmdFsxXT09KEN8eXxifFApJiYhZnRbNF0ubGVuZ3RoJiZmdFs5XT09MT9KPUpbZkkoZnRbMF0pXS5hcHBseShKLGZ0WzNdKTpKPVkubGVuZ3RoPT0xJiZHcShZKT9KW2l0XSgpOkoudGhydShZKX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgRHQ9YXJndW1lbnRzLE90PUR0WzBdO2lmKEomJkR0Lmxlbmd0aD09MSYmJGUoT3QpKXJldHVybiBKLnBsYW50KE90KS52YWx1ZSgpO2Zvcih2YXIgVnQ9MCxvZT1UP3ZbVnRdLmFwcGx5KHRoaXMsRHQpOk90OysrVnQ8VDspb2U9dltWdF0uY2FsbCh0aGlzLG9lKTtyZXR1cm4gb2V9fSl9ZnVuY3Rpb24gbEkobSx2LFQsTixWLFksSixpdCxmdCxEdCl7dmFyIE90PXYmQyxWdD12JmQsb2U9diZnLFRlPXYmKHl8eCksTmU9diZrLGVyPW9lP2U6Tk0obSk7ZnVuY3Rpb24gRGUoKXtmb3IodmFyIHByPWFyZ3VtZW50cy5sZW5ndGgseXI9dnQocHIpLGpzPXByO2pzLS07KXlyW2pzXT1hcmd1bWVudHNbanNdO2lmKFRlKXZhciBrYT1ieChEZSksWHM9VXBlKHlyLGthKTtpZihOJiYoeXI9bnB0KHlyLE4sVixUZSkpLFkmJih5cj1pcHQoeXIsWSxKLFRlKSkscHItPVhzLFRlJiZwcjxEdCl7dmFyIHdpPWRtKHlyLGthKTtyZXR1cm4gZnB0KG0sdixsSSxEZS5wbGFjZWhvbGRlcixULHlyLHdpLGl0LGZ0LER0LXByKX12YXIgZXU9VnQ/VDp0aGlzLGhwPW9lP2V1W21dOm07cmV0dXJuIHByPXlyLmxlbmd0aCxpdD95cj1LbWUoeXIsaXQpOk5lJiZwcj4xJiZ5ci5yZXZlcnNlKCksT3QmJmZ0PHByJiYoeXIubGVuZ3RoPWZ0KSx0aGlzJiZ0aGlzIT09aG8mJnRoaXMgaW5zdGFuY2VvZiBEZSYmKGhwPWVyfHxOTShocCkpLGhwLmFwcGx5KGV1LHlyKX1yZXR1cm4gRGV9ZnVuY3Rpb24gdXB0KG0sdil7cmV0dXJuIGZ1bmN0aW9uKFQsTil7cmV0dXJuIGltZShULG0sdihOKSx7fSl9fWZ1bmN0aW9uIGNJKG0sdil7cmV0dXJuIGZ1bmN0aW9uKFQsTil7dmFyIFY7aWYoVD09PWUmJk49PT1lKXJldHVybiB2O2lmKFQhPT1lJiYoVj1UKSxOIT09ZSl7aWYoVj09PWUpcmV0dXJuIE47dHlwZW9mIFQ9PSJzdHJpbmcifHx0eXBlb2YgTj09InN0cmluZyI/KFQ9V3MoVCksTj1XcyhOKSk6KFQ9JGZ0KFQpLE49JGZ0KE4pKSxWPW0oVCxOKX1yZXR1cm4gVn19ZnVuY3Rpb24gT3EobSl7cmV0dXJuIHNwKGZ1bmN0aW9uKHYpe3JldHVybiB2PUtuKHYsR3Moa2UoKSkpLG5yKGZ1bmN0aW9uKFQpe3ZhciBOPXRoaXM7cmV0dXJuIG0odixmdW5jdGlvbihWKXtyZXR1cm4gcXMoVixOLFQpfSl9KX0pfWZ1bmN0aW9uIHVJKG0sdil7dj12PT09ZT8iICI6V3Modik7dmFyIFQ9di5sZW5ndGg7aWYoVDwyKXJldHVybiBUP1BxKHYsbSk6djt2YXIgTj1QcSh2LEs2KG0vZHgodikpKTtyZXR1cm4gcHgodik/eG0oSmMoTiksMCxtKS5qb2luKCIiKTpOLnNsaWNlKDAsbSl9ZnVuY3Rpb24gTG1lKG0sdixULE4pe3ZhciBWPXYmZCxZPU5NKG0pO2Z1bmN0aW9uIEooKXtmb3IodmFyIGl0PS0xLGZ0PWFyZ3VtZW50cy5sZW5ndGgsRHQ9LTEsT3Q9Ti5sZW5ndGgsVnQ9dnQoT3QrZnQpLG9lPXRoaXMmJnRoaXMhPT1obyYmdGhpcyBpbnN0YW5jZW9mIEo/WTptOysrRHQ8T3Q7KVZ0W0R0XT1OW0R0XTtmb3IoO2Z0LS07KVZ0W0R0KytdPWFyZ3VtZW50c1srK2l0XTtyZXR1cm4gcXMob2UsVj9UOnRoaXMsVnQpfXJldHVybiBKfWZ1bmN0aW9uIGhwdChtKXtyZXR1cm4gZnVuY3Rpb24odixULE4pe3JldHVybiBOJiZ0eXBlb2YgTiE9Im51bWJlciImJkxhKHYsVCxOKSYmKFQ9Tj1lKSx2PXVwKHYpLFQ9PT1lPyhUPXYsdj0wKTpUPXVwKFQpLE49Tj09PWU/djxUPzE6LTE6dXAoTiksZ21lKHYsVCxOLG0pfX1mdW5jdGlvbiBoSShtKXtyZXR1cm4gZnVuY3Rpb24odixUKXtyZXR1cm4gdHlwZW9mIHY9PSJzdHJpbmciJiZ0eXBlb2YgVD09InN0cmluZyJ8fCh2PVhsKHYpLFQ9WGwoVCkpLG0odixUKX19ZnVuY3Rpb24gZnB0KG0sdixULE4sVixZLEosaXQsZnQsRHQpe3ZhciBPdD12JnksVnQ9T3Q/SjplLG9lPU90P2U6SixUZT1PdD9ZOmUsTmU9T3Q/ZTpZO3Z8PU90P2I6Uyx2Jj1+KE90P1M6YiksdiZffHwodiY9fihkfGcpKTt2YXIgZXI9W20sdixWLFRlLFZ0LE5lLG9lLGl0LGZ0LER0XSxEZT1ULmFwcGx5KGUsZXIpO3JldHVybiBHcShtKSYmTXB0KERlLGVyKSxEZS5wbGFjZWhvbGRlcj1OLEVwdChEZSxtLHYpfWZ1bmN0aW9uIHpxKG0pe3ZhciB2PVlpW21dO3JldHVybiBmdW5jdGlvbihULE4pe2lmKFQ9WGwoVCksTj1OPT1udWxsPzA6ZWEoUWUoTiksMjkyKSxOJiZFZnQoVCkpe3ZhciBWPShvbihUKSsiZSIpLnNwbGl0KCJlIiksWT12KFZbMF0rImUiKygrVlsxXStOKSk7cmV0dXJuIFY9KG9uKFkpKyJlIikuc3BsaXQoImUiKSwrKFZbMF0rImUiKygrVlsxXS1OKSl9cmV0dXJuIHYoVCl9fXZhciBrbWU9Z3gmJjEvSDYobmV3IGd4KFssLTBdKSlbMV09PXo/ZnVuY3Rpb24obSl7cmV0dXJuIG5ldyBneChtKX06b0c7ZnVuY3Rpb24gcHB0KG0pe3JldHVybiBmdW5jdGlvbih2KXt2YXIgVD1yYSh2KTtyZXR1cm4gVD09cT9wcSh2KTpUPT1MZT8kcGUodik6VnBlKHYsbSh2KSl9fWZ1bmN0aW9uIGFwKG0sdixULE4sVixZLEosaXQpe3ZhciBmdD12Jmc7aWYoIWZ0JiZ0eXBlb2YgbSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgcWwoaSk7dmFyIER0PU4/Ti5sZW5ndGg6MDtpZihEdHx8KHYmPX4oYnxTKSxOPVY9ZSksSj1KPT09ZT9KOmppKFFlKEopLDApLGl0PWl0PT09ZT9pdDpRZShpdCksRHQtPVY/Vi5sZW5ndGg6MCx2JlMpe3ZhciBPdD1OLFZ0PVY7Tj1WPWV9dmFyIG9lPWZ0P2U6SHEobSksVGU9W20sdixULE4sVixPdCxWdCxZLEosaXRdO2lmKG9lJiZqbWUoVGUsb2UpLG09VGVbMF0sdj1UZVsxXSxUPVRlWzJdLE49VGVbM10sVj1UZVs0XSxpdD1UZVs5XT1UZVs5XT09PWU/ZnQ/MDptLmxlbmd0aDpqaShUZVs5XS1EdCwwKSwhaXQmJnYmKHl8eCkmJih2Jj1+KHl8eCkpLCF2fHx2PT1kKXZhciBOZT1QbWUobSx2LFQpO2Vsc2Ugdj09eXx8dj09eD9OZT1JbWUobSx2LGl0KToodj09Ynx8dj09KGR8YikpJiYhVi5sZW5ndGg/TmU9TG1lKG0sdixULE4pOk5lPWxJLmFwcGx5KGUsVGUpO3ZhciBlcj1vZT9qZnQ6TXB0O3JldHVybiBFcHQoZXIoTmUsVGUpLG0sdil9ZnVuY3Rpb24gZHB0KG0sdixULE4pe3JldHVybiBtPT09ZXx8dHUobSxteFtUXSkmJiF1bi5jYWxsKE4sVCk/djptfWZ1bmN0aW9uIG1wdChtLHYsVCxOLFYsWSl7cmV0dXJuIHJpKG0pJiZyaSh2KSYmKFkuc2V0KHYsbSksaUkobSx2LGUsbXB0LFkpLFkuZGVsZXRlKHYpKSxtfWZ1bmN0aW9uIFJtZShtKXtyZXR1cm4gek0obSk/ZTptfWZ1bmN0aW9uIGdwdChtLHYsVCxOLFYsWSl7dmFyIEo9VCZmLGl0PW0ubGVuZ3RoLGZ0PXYubGVuZ3RoO2lmKGl0IT1mdCYmIShKJiZmdD5pdCkpcmV0dXJuITE7dmFyIER0PVkuZ2V0KG0pLE90PVkuZ2V0KHYpO2lmKER0JiZPdClyZXR1cm4gRHQ9PXYmJk90PT1tO3ZhciBWdD0tMSxvZT0hMCxUZT1UJnA/bmV3IHJfOmU7Zm9yKFkuc2V0KG0sdiksWS5zZXQodixtKTsrK1Z0PGl0Oyl7dmFyIE5lPW1bVnRdLGVyPXZbVnRdO2lmKE4pdmFyIERlPUo/TihlcixOZSxWdCx2LG0sWSk6TihOZSxlcixWdCxtLHYsWSk7aWYoRGUhPT1lKXtpZihEZSljb250aW51ZTtvZT0hMTticmVha31pZihUZSl7aWYoIXNxKHYsZnVuY3Rpb24ocHIseXIpe2lmKCFTTShUZSx5cikmJihOZT09PXByfHxWKE5lLHByLFQsTixZKSkpcmV0dXJuIFRlLnB1c2goeXIpfSkpe29lPSExO2JyZWFrfX1lbHNlIGlmKCEoTmU9PT1lcnx8VihOZSxlcixULE4sWSkpKXtvZT0hMTticmVha319cmV0dXJuIFkuZGVsZXRlKG0pLFkuZGVsZXRlKHYpLG9lfWZ1bmN0aW9uIE5tZShtLHYsVCxOLFYsWSxKKXtzd2l0Y2goVCl7Y2FzZSBoZTppZihtLmJ5dGVMZW5ndGghPXYuYnl0ZUxlbmd0aHx8bS5ieXRlT2Zmc2V0IT12LmJ5dGVPZmZzZXQpcmV0dXJuITE7bT1tLmJ1ZmZlcix2PXYuYnVmZmVyO2Nhc2UgJHQ6cmV0dXJuIShtLmJ5dGVMZW5ndGghPXYuYnl0ZUxlbmd0aHx8IVkobmV3IFk2KG0pLG5ldyBZNih2KSkpO2Nhc2UgS3Q6Y2FzZSBfdDpjYXNlIHB0OnJldHVybiB0dSgrbSwrdik7Y2FzZSBYOnJldHVybiBtLm5hbWU9PXYubmFtZSYmbS5tZXNzYWdlPT12Lm1lc3NhZ2U7Y2FzZSBlZTpjYXNlIGFyOnJldHVybiBtPT12KyIiO2Nhc2UgcTp2YXIgaXQ9cHE7Y2FzZSBMZTp2YXIgZnQ9TiZmO2lmKGl0fHwoaXQ9SDYpLG0uc2l6ZSE9di5zaXplJiYhZnQpcmV0dXJuITE7dmFyIER0PUouZ2V0KG0pO2lmKER0KXJldHVybiBEdD09djtOfD1wLEouc2V0KG0sdik7dmFyIE90PWdwdChpdChtKSxpdCh2KSxOLFYsWSxKKTtyZXR1cm4gSi5kZWxldGUobSksT3Q7Y2FzZSBmcjppZihBTSlyZXR1cm4gQU0uY2FsbChtKT09QU0uY2FsbCh2KX1yZXR1cm4hMX1mdW5jdGlvbiBEbWUobSx2LFQsTixWLFkpe3ZhciBKPVQmZixpdD1GcShtKSxmdD1pdC5sZW5ndGgsRHQ9RnEodiksT3Q9RHQubGVuZ3RoO2lmKGZ0IT1PdCYmIUopcmV0dXJuITE7Zm9yKHZhciBWdD1mdDtWdC0tOyl7dmFyIG9lPWl0W1Z0XTtpZighKEo/b2UgaW4gdjp1bi5jYWxsKHYsb2UpKSlyZXR1cm4hMX12YXIgVGU9WS5nZXQobSksTmU9WS5nZXQodik7aWYoVGUmJk5lKXJldHVybiBUZT09diYmTmU9PW07dmFyIGVyPSEwO1kuc2V0KG0sdiksWS5zZXQodixtKTtmb3IodmFyIERlPUo7KytWdDxmdDspe29lPWl0W1Z0XTt2YXIgcHI9bVtvZV0seXI9dltvZV07aWYoTil2YXIganM9Sj9OKHlyLHByLG9lLHYsbSxZKTpOKHByLHlyLG9lLG0sdixZKTtpZighKGpzPT09ZT9wcj09PXlyfHxWKHByLHlyLFQsTixZKTpqcykpe2VyPSExO2JyZWFrfURlfHwoRGU9b2U9PSJjb25zdHJ1Y3RvciIpfWlmKGVyJiYhRGUpe3ZhciBrYT1tLmNvbnN0cnVjdG9yLFhzPXYuY29uc3RydWN0b3I7a2EhPVhzJiYiY29uc3RydWN0b3IiaW4gbSYmImNvbnN0cnVjdG9yImluIHYmJiEodHlwZW9mIGthPT0iZnVuY3Rpb24iJiZrYSBpbnN0YW5jZW9mIGthJiZ0eXBlb2YgWHM9PSJmdW5jdGlvbiImJlhzIGluc3RhbmNlb2YgWHMpJiYoZXI9ITEpfXJldHVybiBZLmRlbGV0ZShtKSxZLmRlbGV0ZSh2KSxlcn1mdW5jdGlvbiBzcChtKXtyZXR1cm4gWXEod3B0KG0sZSxMcHQpLG0rIiIpfWZ1bmN0aW9uIEZxKG0pe3JldHVybiBPZnQobSxmbyxVcSl9ZnVuY3Rpb24gQnEobSl7cmV0dXJuIE9mdChtLGRzLF9wdCl9dmFyIEhxPUo2P2Z1bmN0aW9uKG0pe3JldHVybiBKNi5nZXQobSl9Om9HO2Z1bmN0aW9uIGZJKG0pe2Zvcih2YXIgdj1tLm5hbWUrIiIsVD1feFt2XSxOPXVuLmNhbGwoX3gsdik/VC5sZW5ndGg6MDtOLS07KXt2YXIgVj1UW05dLFk9Vi5mdW5jO2lmKFk9PW51bGx8fFk9PW0pcmV0dXJuIFYubmFtZX1yZXR1cm4gdn1mdW5jdGlvbiBieChtKXt2YXIgdj11bi5jYWxsKEcsInBsYWNlaG9sZGVyIik/RzptO3JldHVybiB2LnBsYWNlaG9sZGVyfWZ1bmN0aW9uIGtlKCl7dmFyIG09Ry5pdGVyYXRlZXx8bkc7cmV0dXJuIG09bT09PW5HP0JmdDptLGFyZ3VtZW50cy5sZW5ndGg/bShhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTptfWZ1bmN0aW9uIHBJKG0sdil7dmFyIFQ9bS5fX2RhdGFfXztyZXR1cm4gcW1lKHYpP1RbdHlwZW9mIHY9PSJzdHJpbmciPyJzdHJpbmciOiJoYXNoIl06VC5tYXB9ZnVuY3Rpb24gVnEobSl7Zm9yKHZhciB2PWZvKG0pLFQ9di5sZW5ndGg7VC0tOyl7dmFyIE49dltUXSxWPW1bTl07dltUXT1bTixWLHhwdChWKV19cmV0dXJuIHZ9ZnVuY3Rpb24gb18obSx2KXt2YXIgVD1ZcGUobSx2KTtyZXR1cm4gRmZ0KFQpP1Q6ZX1mdW5jdGlvbiBPbWUobSl7dmFyIHY9dW4uY2FsbChtLHRfKSxUPW1bdF9dO3RyeXttW3RfXT1lO3ZhciBOPSEwfWNhdGNoKFkpe312YXIgVj1HNi5jYWxsKG0pO3JldHVybiBOJiYodj9tW3RfXT1UOmRlbGV0ZSBtW3RfXSksVn12YXIgVXE9bXE/ZnVuY3Rpb24obSl7cmV0dXJuIG09PW51bGw/W106KG09dm4obSksZm0obXEobSksZnVuY3Rpb24odil7cmV0dXJuIFNmdC5jYWxsKG0sdil9KSl9OmFHLF9wdD1tcT9mdW5jdGlvbihtKXtmb3IodmFyIHY9W107bTspcG0odixVcShtKSksbT1qNihtKTtyZXR1cm4gdn06YUcscmE9SWE7KGdxJiZyYShuZXcgZ3EobmV3IEFycmF5QnVmZmVyKDEpKSkhPWhlfHxFTSYmcmEobmV3IEVNKSE9cXx8X3EmJnJhKF9xLnJlc29sdmUoKSkhPWt0fHxneCYmcmEobmV3IGd4KSE9TGV8fFRNJiZyYShuZXcgVE0pIT0kKSYmKHJhPWZ1bmN0aW9uKG0pe3ZhciB2PUlhKG0pLFQ9dj09d3Q/bS5jb25zdHJ1Y3RvcjplLE49VD9hXyhUKToiIjtpZihOKXN3aXRjaChOKXtjYXNlIHlkZTpyZXR1cm4gaGU7Y2FzZSB2ZGU6cmV0dXJuIHE7Y2FzZSB4ZGU6cmV0dXJuIGt0O2Nhc2UgYmRlOnJldHVybiBMZTtjYXNlIHdkZTpyZXR1cm4gJH1yZXR1cm4gdn0pO2Z1bmN0aW9uIHptZShtLHYsVCl7Zm9yKHZhciBOPS0xLFY9VC5sZW5ndGg7KytOPFY7KXt2YXIgWT1UW05dLEo9WS5zaXplO3N3aXRjaChZLnR5cGUpe2Nhc2UiZHJvcCI6bSs9SjticmVhaztjYXNlImRyb3BSaWdodCI6di09SjticmVhaztjYXNlInRha2UiOnY9ZWEodixtK0opO2JyZWFrO2Nhc2UidGFrZVJpZ2h0IjptPWppKG0sdi1KKTticmVha319cmV0dXJue3N0YXJ0Om0sZW5kOnZ9fWZ1bmN0aW9uIEZtZShtKXt2YXIgdj1tLm1hdGNoKEV0KTtyZXR1cm4gdj92WzFdLnNwbGl0KHh0KTpbXX1mdW5jdGlvbiB5cHQobSx2LFQpe3Y9dm0odixtKTtmb3IodmFyIE49LTEsVj12Lmxlbmd0aCxZPSExOysrTjxWOyl7dmFyIEo9Z2godltOXSk7aWYoIShZPW0hPW51bGwmJlQobSxKKSkpYnJlYWs7bT1tW0pdfXJldHVybiBZfHwrK04hPVY/WTooVj1tPT1udWxsPzA6bS5sZW5ndGgsISFWJiZ4SShWKSYmbHAoSixWKSYmKCRlKG0pfHxzXyhtKSkpfWZ1bmN0aW9uIEJtZShtKXt2YXIgdj1tLmxlbmd0aCxUPW5ldyBtLmNvbnN0cnVjdG9yKHYpO3JldHVybiB2JiZ0eXBlb2YgbVswXT09InN0cmluZyImJnVuLmNhbGwobSwiaW5kZXgiKSYmKFQuaW5kZXg9bS5pbmRleCxULmlucHV0PW0uaW5wdXQpLFR9ZnVuY3Rpb24gdnB0KG0pe3JldHVybiB0eXBlb2YgbS5jb25zdHJ1Y3Rvcj09ImZ1bmN0aW9uIiYmIURNKG0pP3l4KGo2KG0pKTp7fX1mdW5jdGlvbiBIbWUobSx2LFQpe3ZhciBOPW0uY29uc3RydWN0b3I7c3dpdGNoKHYpe2Nhc2UgJHQ6cmV0dXJuIERxKG0pO2Nhc2UgS3Q6Y2FzZSBfdDpyZXR1cm4gbmV3IE4oK20pO2Nhc2UgaGU6cmV0dXJuIFNtZShtLFQpO2Nhc2UgVHQ6Y2FzZSBiZTpjYXNlIG50OmNhc2UgQ3Q6Y2FzZSBXdDpjYXNlIGZlOmNhc2UgYXQ6Y2FzZSBzZTpjYXNlIFF0OnJldHVybiBlcHQobSxUKTtjYXNlIHE6cmV0dXJuIG5ldyBOO2Nhc2UgcHQ6Y2FzZSBhcjpyZXR1cm4gbmV3IE4obSk7Y2FzZSBlZTpyZXR1cm4gTW1lKG0pO2Nhc2UgTGU6cmV0dXJuIG5ldyBOO2Nhc2UgZnI6cmV0dXJuIEVtZShtKX19ZnVuY3Rpb24gVm1lKG0sdil7dmFyIFQ9di5sZW5ndGg7aWYoIVQpcmV0dXJuIG07dmFyIE49VC0xO3JldHVybiB2W05dPShUPjE/IiYgIjoiIikrdltOXSx2PXYuam9pbihUPjI/IiwgIjoiICIpLG0ucmVwbGFjZShndCxgewovKiBbd3JhcHBlZCB3aXRoIGArditgXSAqLwpgKX1mdW5jdGlvbiBVbWUobSl7cmV0dXJuICRlKG0pfHxzXyhtKXx8ISEoTWZ0JiZtJiZtW01mdF0pfWZ1bmN0aW9uIGxwKG0sdil7dmFyIFQ9dHlwZW9mIG07cmV0dXJuIHY9dj09bnVsbD9VOnYsISF2JiYoVD09Im51bWJlciJ8fFQhPSJzeW1ib2wiJiZycC50ZXN0KG0pKSYmbT4tMSYmbSUxPT0wJiZtPHZ9ZnVuY3Rpb24gTGEobSx2LFQpe2lmKCFyaShUKSlyZXR1cm4hMTt2YXIgTj10eXBlb2YgdjtyZXR1cm4oTj09Im51bWJlciI/cHMoVCkmJmxwKHYsVC5sZW5ndGgpOk49PSJzdHJpbmciJiZ2IGluIFQpP3R1KFRbdl0sbSk6ITF9ZnVuY3Rpb24gcXEobSx2KXtpZigkZShtKSlyZXR1cm4hMTt2YXIgVD10eXBlb2YgbTtyZXR1cm4gVD09Im51bWJlciJ8fFQ9PSJzeW1ib2wifHxUPT0iYm9vbGVhbiJ8fG09PW51bGx8fFlzKG0pPyEwOmNtLnRlc3QobSl8fCFseC50ZXN0KG0pfHx2IT1udWxsJiZtIGluIHZuKHYpfWZ1bmN0aW9uIHFtZShtKXt2YXIgdj10eXBlb2YgbTtyZXR1cm4gdj09InN0cmluZyJ8fHY9PSJudW1iZXIifHx2PT0ic3ltYm9sInx8dj09ImJvb2xlYW4iP20hPT0iX19wcm90b19fIjptPT09bnVsbH1mdW5jdGlvbiBHcShtKXt2YXIgdj1mSShtKSxUPUdbdl07aWYodHlwZW9mIFQhPSJmdW5jdGlvbiJ8fCEodiBpbiBnci5wcm90b3R5cGUpKXJldHVybiExO2lmKG09PT1UKXJldHVybiEwO3ZhciBOPUhxKFQpO3JldHVybiEhTiYmbT09PU5bMF19ZnVuY3Rpb24gR21lKG0pe3JldHVybiEheGZ0JiZ4ZnQgaW4gbX12YXIgV21lPVU2P2NwOnNHO2Z1bmN0aW9uIERNKG0pe3ZhciB2PW0mJm0uY29uc3RydWN0b3IsVD10eXBlb2Ygdj09ImZ1bmN0aW9uIiYmdi5wcm90b3R5cGV8fG14O3JldHVybiBtPT09VH1mdW5jdGlvbiB4cHQobSl7cmV0dXJuIG09PT1tJiYhcmkobSl9ZnVuY3Rpb24gYnB0KG0sdil7cmV0dXJuIGZ1bmN0aW9uKFQpe3JldHVybiBUPT1udWxsPyExOlRbbV09PT12JiYodiE9PWV8fG0gaW4gdm4oVCkpfX1mdW5jdGlvbiBZbWUobSl7dmFyIHY9eUkobSxmdW5jdGlvbihOKXtyZXR1cm4gVC5zaXplPT09cyYmVC5jbGVhcigpLE59KSxUPXYuY2FjaGU7cmV0dXJuIHZ9ZnVuY3Rpb24gam1lKG0sdil7dmFyIFQ9bVsxXSxOPXZbMV0sVj1UfE4sWT1WPChkfGd8QyksSj1OPT1DJiZUPT15fHxOPT1DJiZUPT1QJiZtWzddLmxlbmd0aDw9dls4XXx8Tj09KEN8UCkmJnZbN10ubGVuZ3RoPD12WzhdJiZUPT15O2lmKCEoWXx8SikpcmV0dXJuIG07TiZkJiYobVsyXT12WzJdLFZ8PVQmZD8wOl8pO3ZhciBpdD12WzNdO2lmKGl0KXt2YXIgZnQ9bVszXTttWzNdPWZ0P25wdChmdCxpdCx2WzRdKTppdCxtWzRdPWZ0P2RtKG1bM10sbCk6dls0XX1yZXR1cm4gaXQ9dls1XSxpdCYmKGZ0PW1bNV0sbVs1XT1mdD9pcHQoZnQsaXQsdls2XSk6aXQsbVs2XT1mdD9kbShtWzVdLGwpOnZbNl0pLGl0PXZbN10saXQmJihtWzddPWl0KSxOJkMmJihtWzhdPW1bOF09PW51bGw/dls4XTplYShtWzhdLHZbOF0pKSxtWzldPT1udWxsJiYobVs5XT12WzldKSxtWzBdPXZbMF0sbVsxXT1WLG19ZnVuY3Rpb24gWG1lKG0pe3ZhciB2PVtdO2lmKG0hPW51bGwpZm9yKHZhciBUIGluIHZuKG0pKXYucHVzaChUKTtyZXR1cm4gdn1mdW5jdGlvbiAkbWUobSl7cmV0dXJuIEc2LmNhbGwobSl9ZnVuY3Rpb24gd3B0KG0sdixUKXtyZXR1cm4gdj1qaSh2PT09ZT9tLmxlbmd0aC0xOnYsMCksZnVuY3Rpb24oKXtmb3IodmFyIE49YXJndW1lbnRzLFY9LTEsWT1qaShOLmxlbmd0aC12LDApLEo9dnQoWSk7KytWPFk7KUpbVl09Tlt2K1ZdO1Y9LTE7Zm9yKHZhciBpdD12dCh2KzEpOysrVjx2OylpdFtWXT1OW1ZdO3JldHVybiBpdFt2XT1UKEopLHFzKG0sdGhpcyxpdCl9fWZ1bmN0aW9uIFNwdChtLHYpe3JldHVybiB2Lmxlbmd0aDwyP206aV8obSxZbCh2LDAsLTEpKX1mdW5jdGlvbiBLbWUobSx2KXtmb3IodmFyIFQ9bS5sZW5ndGgsTj1lYSh2Lmxlbmd0aCxUKSxWPWZzKG0pO04tLTspe3ZhciBZPXZbTl07bVtOXT1scChZLFQpP1ZbWV06ZX1yZXR1cm4gbX1mdW5jdGlvbiBXcShtLHYpe2lmKCEodj09PSJjb25zdHJ1Y3RvciImJnR5cGVvZiBtW3ZdPT0iZnVuY3Rpb24iKSYmdiE9Il9fcHJvdG9fXyIpcmV0dXJuIG1bdl19dmFyIE1wdD1UcHQoamZ0KSxPTT1oZGV8fGZ1bmN0aW9uKG0sdil7cmV0dXJuIGhvLnNldFRpbWVvdXQobSx2KX0sWXE9VHB0KHZtZSk7ZnVuY3Rpb24gRXB0KG0sdixUKXt2YXIgTj12KyIiO3JldHVybiBZcShtLFZtZShOLFptZShGbWUoTiksVCkpKX1mdW5jdGlvbiBUcHQobSl7dmFyIHY9MCxUPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIE49bWRlKCksVj1JLShOLVQpO2lmKFQ9TixWPjApe2lmKCsrdj49QilyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2Ugdj0wO3JldHVybiBtLmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gZEkobSx2KXt2YXIgVD0tMSxOPW0ubGVuZ3RoLFY9Ti0xO2Zvcih2PXY9PT1lP046djsrK1Q8djspe3ZhciBZPUFxKFQsViksSj1tW1ldO21bWV09bVtUXSxtW1RdPUp9cmV0dXJuIG0ubGVuZ3RoPXYsbX12YXIgQ3B0PVltZShmdW5jdGlvbihtKXt2YXIgdj1bXTtyZXR1cm4gbS5jaGFyQ29kZUF0KDApPT09NDYmJnYucHVzaCgiIiksbS5yZXBsYWNlKEowLGZ1bmN0aW9uKFQsTixWLFkpe3YucHVzaChWP1kucmVwbGFjZShVZSwiJDEiKTpOfHxUKX0pLHZ9KTtmdW5jdGlvbiBnaChtKXtpZih0eXBlb2YgbT09InN0cmluZyJ8fFlzKG0pKXJldHVybiBtO3ZhciB2PW0rIiI7cmV0dXJuIHY9PSIwIiYmMS9tPT0tej8iLTAiOnZ9ZnVuY3Rpb24gYV8obSl7aWYobSE9bnVsbCl7dHJ5e3JldHVybiBxNi5jYWxsKG0pfWNhdGNoKHYpe310cnl7cmV0dXJuIG0rIiJ9Y2F0Y2godil7fX1yZXR1cm4iIn1mdW5jdGlvbiBabWUobSx2KXtyZXR1cm4gVWwoU3QsZnVuY3Rpb24oVCl7dmFyIE49Il8uIitUWzBdO3YmVFsxXSYmIUY2KG0sTikmJm0ucHVzaChOKX0pLG0uc29ydCgpfWZ1bmN0aW9uIEFwdChtKXtpZihtIGluc3RhbmNlb2YgZ3IpcmV0dXJuIG0uY2xvbmUoKTt2YXIgdj1uZXcgR2wobS5fX3dyYXBwZWRfXyxtLl9fY2hhaW5fXyk7cmV0dXJuIHYuX19hY3Rpb25zX189ZnMobS5fX2FjdGlvbnNfXyksdi5fX2luZGV4X189bS5fX2luZGV4X18sdi5fX3ZhbHVlc19fPW0uX192YWx1ZXNfXyx2fWZ1bmN0aW9uIEptZShtLHYsVCl7KFQ/TGEobSx2LFQpOnY9PT1lKT92PTE6dj1qaShRZSh2KSwwKTt2YXIgTj1tPT1udWxsPzA6bS5sZW5ndGg7aWYoIU58fHY8MSlyZXR1cm5bXTtmb3IodmFyIFY9MCxZPTAsSj12dChLNihOL3YpKTtWPE47KUpbWSsrXT1ZbChtLFYsVis9dik7cmV0dXJuIEp9ZnVuY3Rpb24gUW1lKG0pe2Zvcih2YXIgdj0tMSxUPW09PW51bGw/MDptLmxlbmd0aCxOPTAsVj1bXTsrK3Y8VDspe3ZhciBZPW1bdl07WSYmKFZbTisrXT1ZKX1yZXR1cm4gVn1mdW5jdGlvbiB0Z2UoKXt2YXIgbT1hcmd1bWVudHMubGVuZ3RoO2lmKCFtKXJldHVybltdO2Zvcih2YXIgdj12dChtLTEpLFQ9YXJndW1lbnRzWzBdLE49bTtOLS07KXZbTi0xXT1hcmd1bWVudHNbTl07cmV0dXJuIHBtKCRlKFQpP2ZzKFQpOltUXSxrbyh2LDEpKX12YXIgZWdlPW5yKGZ1bmN0aW9uKG0sdil7cmV0dXJuIGJpKG0pP0lNKG0sa28odiwxLGJpLCEwKSk6W119KSxyZ2U9bnIoZnVuY3Rpb24obSx2KXt2YXIgVD1qbCh2KTtyZXR1cm4gYmkoVCkmJihUPWUpLGJpKG0pP0lNKG0sa28odiwxLGJpLCEwKSxrZShULDIpKTpbXX0pLG5nZT1ucihmdW5jdGlvbihtLHYpe3ZhciBUPWpsKHYpO3JldHVybiBiaShUKSYmKFQ9ZSksYmkobSk/SU0obSxrbyh2LDEsYmksITApLGUsVCk6W119KTtmdW5jdGlvbiBpZ2UobSx2LFQpe3ZhciBOPW09PW51bGw/MDptLmxlbmd0aDtyZXR1cm4gTj8odj1UfHx2PT09ZT8xOlFlKHYpLFlsKG0sdjwwPzA6dixOKSk6W119ZnVuY3Rpb24gb2dlKG0sdixUKXt2YXIgTj1tPT1udWxsPzA6bS5sZW5ndGg7cmV0dXJuIE4/KHY9VHx8dj09PWU/MTpRZSh2KSx2PU4tdixZbChtLDAsdjwwPzA6dikpOltdfWZ1bmN0aW9uIGFnZShtLHYpe3JldHVybiBtJiZtLmxlbmd0aD9hSShtLGtlKHYsMyksITAsITApOltdfWZ1bmN0aW9uIHNnZShtLHYpe3JldHVybiBtJiZtLmxlbmd0aD9hSShtLGtlKHYsMyksITApOltdfWZ1bmN0aW9uIGxnZShtLHYsVCxOKXt2YXIgVj1tPT1udWxsPzA6bS5sZW5ndGg7cmV0dXJuIFY/KFQmJnR5cGVvZiBUIT0ibnVtYmVyIiYmTGEobSx2LFQpJiYoVD0wLE49ViksdG1lKG0sdixULE4pKTpbXX1mdW5jdGlvbiBQcHQobSx2LFQpe3ZhciBOPW09PW51bGw/MDptLmxlbmd0aDtpZighTilyZXR1cm4tMTt2YXIgVj1UPT1udWxsPzA6UWUoVCk7cmV0dXJuIFY8MCYmKFY9amkoTitWLDApKSxCNihtLGtlKHYsMyksVil9ZnVuY3Rpb24gSXB0KG0sdixUKXt2YXIgTj1tPT1udWxsPzA6bS5sZW5ndGg7aWYoIU4pcmV0dXJuLTE7dmFyIFY9Ti0xO3JldHVybiBUIT09ZSYmKFY9UWUoVCksVj1UPDA/amkoTitWLDApOmVhKFYsTi0xKSksQjYobSxrZSh2LDMpLFYsITApfWZ1bmN0aW9uIExwdChtKXt2YXIgdj1tPT1udWxsPzA6bS5sZW5ndGg7cmV0dXJuIHY/a28obSwxKTpbXX1mdW5jdGlvbiBjZ2UobSl7dmFyIHY9bT09bnVsbD8wOm0ubGVuZ3RoO3JldHVybiB2P2tvKG0seik6W119ZnVuY3Rpb24gdWdlKG0sdil7dmFyIFQ9bT09bnVsbD8wOm0ubGVuZ3RoO3JldHVybiBUPyh2PXY9PT1lPzE6UWUodiksa28obSx2KSk6W119ZnVuY3Rpb24gaGdlKG0pe2Zvcih2YXIgdj0tMSxUPW09PW51bGw/MDptLmxlbmd0aCxOPXt9OysrdjxUOyl7dmFyIFY9bVt2XTtOW1ZbMF1dPVZbMV19cmV0dXJuIE59ZnVuY3Rpb24ga3B0KG0pe3JldHVybiBtJiZtLmxlbmd0aD9tWzBdOmV9ZnVuY3Rpb24gZmdlKG0sdixUKXt2YXIgTj1tPT1udWxsPzA6bS5sZW5ndGg7aWYoIU4pcmV0dXJuLTE7dmFyIFY9VD09bnVsbD8wOlFlKFQpO3JldHVybiBWPDAmJihWPWppKE4rViwwKSksZngobSx2LFYpfWZ1bmN0aW9uIHBnZShtKXt2YXIgdj1tPT1udWxsPzA6bS5sZW5ndGg7cmV0dXJuIHY/WWwobSwwLC0xKTpbXX12YXIgZGdlPW5yKGZ1bmN0aW9uKG0pe3ZhciB2PUtuKG0sUnEpO3JldHVybiB2Lmxlbmd0aCYmdlswXT09PW1bMF0/U3Eodik6W119KSxtZ2U9bnIoZnVuY3Rpb24obSl7dmFyIHY9amwobSksVD1LbihtLFJxKTtyZXR1cm4gdj09PWpsKFQpP3Y9ZTpULnBvcCgpLFQubGVuZ3RoJiZUWzBdPT09bVswXT9TcShULGtlKHYsMikpOltdfSksZ2dlPW5yKGZ1bmN0aW9uKG0pe3ZhciB2PWpsKG0pLFQ9S24obSxScSk7cmV0dXJuIHY9dHlwZW9mIHY9PSJmdW5jdGlvbiI/djplLHYmJlQucG9wKCksVC5sZW5ndGgmJlRbMF09PT1tWzBdP1NxKFQsZSx2KTpbXX0pO2Z1bmN0aW9uIF9nZShtLHYpe3JldHVybiBtPT1udWxsPyIiOnBkZS5jYWxsKG0sdil9ZnVuY3Rpb24gamwobSl7dmFyIHY9bT09bnVsbD8wOm0ubGVuZ3RoO3JldHVybiB2P21bdi0xXTplfWZ1bmN0aW9uIHlnZShtLHYsVCl7dmFyIE49bT09bnVsbD8wOm0ubGVuZ3RoO2lmKCFOKXJldHVybi0xO3ZhciBWPU47cmV0dXJuIFQhPT1lJiYoVj1RZShUKSxWPVY8MD9qaShOK1YsMCk6ZWEoVixOLTEpKSx2PT09dj9acGUobSx2LFYpOkI2KG0sZmZ0LFYsITApfWZ1bmN0aW9uIHZnZShtLHYpe3JldHVybiBtJiZtLmxlbmd0aD9xZnQobSxRZSh2KSk6ZX12YXIgeGdlPW5yKFJwdCk7ZnVuY3Rpb24gUnB0KG0sdil7cmV0dXJuIG0mJm0ubGVuZ3RoJiZ2JiZ2Lmxlbmd0aD9DcShtLHYpOm19ZnVuY3Rpb24gYmdlKG0sdixUKXtyZXR1cm4gbSYmbS5sZW5ndGgmJnYmJnYubGVuZ3RoP0NxKG0sdixrZShULDIpKTptfWZ1bmN0aW9uIHdnZShtLHYsVCl7cmV0dXJuIG0mJm0ubGVuZ3RoJiZ2JiZ2Lmxlbmd0aD9DcShtLHYsZSxUKTptfXZhciBTZ2U9c3AoZnVuY3Rpb24obSx2KXt2YXIgVD1tPT1udWxsPzA6bS5sZW5ndGgsTj12cShtLHYpO3JldHVybiBZZnQobSxLbih2LGZ1bmN0aW9uKFYpe3JldHVybiBscChWLFQpPytWOlZ9KS5zb3J0KHJwdCkpLE59KTtmdW5jdGlvbiBNZ2UobSx2KXt2YXIgVD1bXTtpZighKG0mJm0ubGVuZ3RoKSlyZXR1cm4gVDt2YXIgTj0tMSxWPVtdLFk9bS5sZW5ndGg7Zm9yKHY9a2UodiwzKTsrK048WTspe3ZhciBKPW1bTl07dihKLE4sbSkmJihULnB1c2goSiksVi5wdXNoKE4pKX1yZXR1cm4gWWZ0KG0sViksVH1mdW5jdGlvbiBqcShtKXtyZXR1cm4gbT09bnVsbD9tOl9kZS5jYWxsKG0pfWZ1bmN0aW9uIEVnZShtLHYsVCl7dmFyIE49bT09bnVsbD8wOm0ubGVuZ3RoO3JldHVybiBOPyhUJiZ0eXBlb2YgVCE9Im51bWJlciImJkxhKG0sdixUKT8odj0wLFQ9Tik6KHY9dj09bnVsbD8wOlFlKHYpLFQ9VD09PWU/TjpRZShUKSksWWwobSx2LFQpKTpbXX1mdW5jdGlvbiBUZ2UobSx2KXtyZXR1cm4gb0kobSx2KX1mdW5jdGlvbiBDZ2UobSx2LFQpe3JldHVybiBJcShtLHYsa2UoVCwyKSl9ZnVuY3Rpb24gQWdlKG0sdil7dmFyIFQ9bT09bnVsbD8wOm0ubGVuZ3RoO2lmKFQpe3ZhciBOPW9JKG0sdik7aWYoTjxUJiZ0dShtW05dLHYpKXJldHVybiBOfXJldHVybi0xfWZ1bmN0aW9uIFBnZShtLHYpe3JldHVybiBvSShtLHYsITApfWZ1bmN0aW9uIElnZShtLHYsVCl7cmV0dXJuIElxKG0sdixrZShULDIpLCEwKX1mdW5jdGlvbiBMZ2UobSx2KXt2YXIgVD1tPT1udWxsPzA6bS5sZW5ndGg7aWYoVCl7dmFyIE49b0kobSx2LCEwKS0xO2lmKHR1KG1bTl0sdikpcmV0dXJuIE59cmV0dXJuLTF9ZnVuY3Rpb24ga2dlKG0pe3JldHVybiBtJiZtLmxlbmd0aD9YZnQobSk6W119ZnVuY3Rpb24gUmdlKG0sdil7cmV0dXJuIG0mJm0ubGVuZ3RoP1hmdChtLGtlKHYsMikpOltdfWZ1bmN0aW9uIE5nZShtKXt2YXIgdj1tPT1udWxsPzA6bS5sZW5ndGg7cmV0dXJuIHY/WWwobSwxLHYpOltdfWZ1bmN0aW9uIERnZShtLHYsVCl7cmV0dXJuIG0mJm0ubGVuZ3RoPyh2PVR8fHY9PT1lPzE6UWUodiksWWwobSwwLHY8MD8wOnYpKTpbXX1mdW5jdGlvbiBPZ2UobSx2LFQpe3ZhciBOPW09PW51bGw/MDptLmxlbmd0aDtyZXR1cm4gTj8odj1UfHx2PT09ZT8xOlFlKHYpLHY9Ti12LFlsKG0sdjwwPzA6dixOKSk6W119ZnVuY3Rpb24gemdlKG0sdil7cmV0dXJuIG0mJm0ubGVuZ3RoP2FJKG0sa2UodiwzKSwhMSwhMCk6W119ZnVuY3Rpb24gRmdlKG0sdil7cmV0dXJuIG0mJm0ubGVuZ3RoP2FJKG0sa2UodiwzKSk6W119dmFyIEJnZT1ucihmdW5jdGlvbihtKXtyZXR1cm4geW0oa28obSwxLGJpLCEwKSl9KSxIZ2U9bnIoZnVuY3Rpb24obSl7dmFyIHY9amwobSk7cmV0dXJuIGJpKHYpJiYodj1lKSx5bShrbyhtLDEsYmksITApLGtlKHYsMikpfSksVmdlPW5yKGZ1bmN0aW9uKG0pe3ZhciB2PWpsKG0pO3JldHVybiB2PXR5cGVvZiB2PT0iZnVuY3Rpb24iP3Y6ZSx5bShrbyhtLDEsYmksITApLGUsdil9KTtmdW5jdGlvbiBVZ2UobSl7cmV0dXJuIG0mJm0ubGVuZ3RoP3ltKG0pOltdfWZ1bmN0aW9uIHFnZShtLHYpe3JldHVybiBtJiZtLmxlbmd0aD95bShtLGtlKHYsMikpOltdfWZ1bmN0aW9uIEdnZShtLHYpe3JldHVybiB2PXR5cGVvZiB2PT0iZnVuY3Rpb24iP3Y6ZSxtJiZtLmxlbmd0aD95bShtLGUsdik6W119ZnVuY3Rpb24gWHEobSl7aWYoIShtJiZtLmxlbmd0aCkpcmV0dXJuW107dmFyIHY9MDtyZXR1cm4gbT1mbShtLGZ1bmN0aW9uKFQpe2lmKGJpKFQpKXJldHVybiB2PWppKFQubGVuZ3RoLHYpLCEwfSksaHEodixmdW5jdGlvbihUKXtyZXR1cm4gS24obSxscShUKSl9KX1mdW5jdGlvbiBOcHQobSx2KXtpZighKG0mJm0ubGVuZ3RoKSlyZXR1cm5bXTt2YXIgVD1YcShtKTtyZXR1cm4gdj09bnVsbD9UOktuKFQsZnVuY3Rpb24oTil7cmV0dXJuIHFzKHYsZSxOKX0pfXZhciBXZ2U9bnIoZnVuY3Rpb24obSx2KXtyZXR1cm4gYmkobSk/SU0obSx2KTpbXX0pLFlnZT1ucihmdW5jdGlvbihtKXtyZXR1cm4ga3EoZm0obSxiaSkpfSksamdlPW5yKGZ1bmN0aW9uKG0pe3ZhciB2PWpsKG0pO3JldHVybiBiaSh2KSYmKHY9ZSksa3EoZm0obSxiaSksa2UodiwyKSl9KSxYZ2U9bnIoZnVuY3Rpb24obSl7dmFyIHY9amwobSk7cmV0dXJuIHY9dHlwZW9mIHY9PSJmdW5jdGlvbiI/djplLGtxKGZtKG0sYmkpLGUsdil9KSwkZ2U9bnIoWHEpO2Z1bmN0aW9uIEtnZShtLHYpe3JldHVybiBKZnQobXx8W10sdnx8W10sUE0pfWZ1bmN0aW9uIFpnZShtLHYpe3JldHVybiBKZnQobXx8W10sdnx8W10sUk0pfXZhciBKZ2U9bnIoZnVuY3Rpb24obSl7dmFyIHY9bS5sZW5ndGgsVD12PjE/bVt2LTFdOmU7cmV0dXJuIFQ9dHlwZW9mIFQ9PSJmdW5jdGlvbiI/KG0ucG9wKCksVCk6ZSxOcHQobSxUKX0pO2Z1bmN0aW9uIERwdChtKXt2YXIgdj1HKG0pO3JldHVybiB2Ll9fY2hhaW5fXz0hMCx2fWZ1bmN0aW9uIFFnZShtLHYpe3JldHVybiB2KG0pLG19ZnVuY3Rpb24gbUkobSx2KXtyZXR1cm4gdihtKX12YXIgdDBlPXNwKGZ1bmN0aW9uKG0pe3ZhciB2PW0ubGVuZ3RoLFQ9dj9tWzBdOjAsTj10aGlzLl9fd3JhcHBlZF9fLFY9ZnVuY3Rpb24oWSl7cmV0dXJuIHZxKFksbSl9O3JldHVybiB2PjF8fHRoaXMuX19hY3Rpb25zX18ubGVuZ3RofHwhKE4gaW5zdGFuY2VvZiBncil8fCFscChUKT90aGlzLnRocnUoVik6KE49Ti5zbGljZShULCtUKyh2PzE6MCkpLE4uX19hY3Rpb25zX18ucHVzaCh7ZnVuYzptSSxhcmdzOltWXSx0aGlzQXJnOmV9KSxuZXcgR2woTix0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihZKXtyZXR1cm4gdiYmIVkubGVuZ3RoJiZZLnB1c2goZSksWX0pKX0pO2Z1bmN0aW9uIGUwZSgpe3JldHVybiBEcHQodGhpcyl9ZnVuY3Rpb24gcjBlKCl7cmV0dXJuIG5ldyBHbCh0aGlzLnZhbHVlKCksdGhpcy5fX2NoYWluX18pfWZ1bmN0aW9uIG4wZSgpe3RoaXMuX192YWx1ZXNfXz09PWUmJih0aGlzLl9fdmFsdWVzX189JHB0KHRoaXMudmFsdWUoKSkpO3ZhciBtPXRoaXMuX19pbmRleF9fPj10aGlzLl9fdmFsdWVzX18ubGVuZ3RoLHY9bT9lOnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXTtyZXR1cm57ZG9uZTptLHZhbHVlOnZ9fWZ1bmN0aW9uIGkwZSgpe3JldHVybiB0aGlzfWZ1bmN0aW9uIG8wZShtKXtmb3IodmFyIHYsVD10aGlzO1QgaW5zdGFuY2VvZiB0STspe3ZhciBOPUFwdChUKTtOLl9faW5kZXhfXz0wLE4uX192YWx1ZXNfXz1lLHY/Vi5fX3dyYXBwZWRfXz1OOnY9Tjt2YXIgVj1OO1Q9VC5fX3dyYXBwZWRfX31yZXR1cm4gVi5fX3dyYXBwZWRfXz1tLHZ9ZnVuY3Rpb24gYTBlKCl7dmFyIG09dGhpcy5fX3dyYXBwZWRfXztpZihtIGluc3RhbmNlb2YgZ3Ipe3ZhciB2PW07cmV0dXJuIHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoJiYodj1uZXcgZ3IodGhpcykpLHY9di5yZXZlcnNlKCksdi5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOm1JLGFyZ3M6W2pxXSx0aGlzQXJnOmV9KSxuZXcgR2wodix0aGlzLl9fY2hhaW5fXyl9cmV0dXJuIHRoaXMudGhydShqcSl9ZnVuY3Rpb24gczBlKCl7cmV0dXJuIFpmdCh0aGlzLl9fd3JhcHBlZF9fLHRoaXMuX19hY3Rpb25zX18pfXZhciBsMGU9c0koZnVuY3Rpb24obSx2LFQpe3VuLmNhbGwobSxUKT8rK21bVF06b3AobSxULDEpfSk7ZnVuY3Rpb24gYzBlKG0sdixUKXt2YXIgTj0kZShtKT91ZnQ6UWRlO3JldHVybiBUJiZMYShtLHYsVCkmJih2PWUpLE4obSxrZSh2LDMpKX1mdW5jdGlvbiB1MGUobSx2KXt2YXIgVD0kZShtKT9mbTpOZnQ7cmV0dXJuIFQobSxrZSh2LDMpKX12YXIgaDBlPWxwdChQcHQpLGYwZT1scHQoSXB0KTtmdW5jdGlvbiBwMGUobSx2KXtyZXR1cm4ga28oZ0kobSx2KSwxKX1mdW5jdGlvbiBkMGUobSx2KXtyZXR1cm4ga28oZ0kobSx2KSx6KX1mdW5jdGlvbiBtMGUobSx2LFQpe3JldHVybiBUPVQ9PT1lPzE6UWUoVCksa28oZ0kobSx2KSxUKX1mdW5jdGlvbiBPcHQobSx2KXt2YXIgVD0kZShtKT9VbDpfbTtyZXR1cm4gVChtLGtlKHYsMykpfWZ1bmN0aW9uIHpwdChtLHYpe3ZhciBUPSRlKG0pP05wZTpSZnQ7cmV0dXJuIFQobSxrZSh2LDMpKX12YXIgZzBlPXNJKGZ1bmN0aW9uKG0sdixUKXt1bi5jYWxsKG0sVCk/bVtUXS5wdXNoKHYpOm9wKG0sVCxbdl0pfSk7ZnVuY3Rpb24gXzBlKG0sdixULE4pe209cHMobSk/bTpTeChtKSxUPVQmJiFOP1FlKFQpOjA7dmFyIFY9bS5sZW5ndGg7cmV0dXJuIFQ8MCYmKFQ9amkoVitULDApKSxiSShtKT9UPD1WJiZtLmluZGV4T2YodixUKT4tMTohIVYmJmZ4KG0sdixUKT4tMX12YXIgeTBlPW5yKGZ1bmN0aW9uKG0sdixUKXt2YXIgTj0tMSxWPXR5cGVvZiB2PT0iZnVuY3Rpb24iLFk9cHMobSk/dnQobS5sZW5ndGgpOltdO3JldHVybiBfbShtLGZ1bmN0aW9uKEope1lbKytOXT1WP3FzKHYsSixUKTpMTShKLHYsVCl9KSxZfSksdjBlPXNJKGZ1bmN0aW9uKG0sdixUKXtvcChtLFQsdil9KTtmdW5jdGlvbiBnSShtLHYpe3ZhciBUPSRlKG0pP0tuOkhmdDtyZXR1cm4gVChtLGtlKHYsMykpfWZ1bmN0aW9uIHgwZShtLHYsVCxOKXtyZXR1cm4gbT09bnVsbD9bXTooJGUodil8fCh2PXY9PW51bGw/W106W3ZdKSxUPU4/ZTpULCRlKFQpfHwoVD1UPT1udWxsP1tdOltUXSksR2Z0KG0sdixUKSl9dmFyIGIwZT1zSShmdW5jdGlvbihtLHYsVCl7bVtUPzA6MV0ucHVzaCh2KX0sZnVuY3Rpb24oKXtyZXR1cm5bW10sW11dfSk7ZnVuY3Rpb24gdzBlKG0sdixUKXt2YXIgTj0kZShtKT9hcTpkZnQsVj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIE4obSxrZSh2LDQpLFQsVixfbSl9ZnVuY3Rpb24gUzBlKG0sdixUKXt2YXIgTj0kZShtKT9EcGU6ZGZ0LFY9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBOKG0sa2Uodiw0KSxULFYsUmZ0KX1mdW5jdGlvbiBNMGUobSx2KXt2YXIgVD0kZShtKT9mbTpOZnQ7cmV0dXJuIFQobSx2SShrZSh2LDMpKSl9ZnVuY3Rpb24gRTBlKG0pe3ZhciB2PSRlKG0pP1BmdDpfbWU7cmV0dXJuIHYobSl9ZnVuY3Rpb24gVDBlKG0sdixUKXsoVD9MYShtLHYsVCk6dj09PWUpP3Y9MTp2PVFlKHYpO3ZhciBOPSRlKG0pP1hkZTp5bWU7cmV0dXJuIE4obSx2KX1mdW5jdGlvbiBDMGUobSl7dmFyIHY9JGUobSk/JGRlOnhtZTtyZXR1cm4gdihtKX1mdW5jdGlvbiBBMGUobSl7aWYobT09bnVsbClyZXR1cm4gMDtpZihwcyhtKSlyZXR1cm4gYkkobSk/ZHgobSk6bS5sZW5ndGg7dmFyIHY9cmEobSk7cmV0dXJuIHY9PXF8fHY9PUxlP20uc2l6ZTpFcShtKS5sZW5ndGh9ZnVuY3Rpb24gUDBlKG0sdixUKXt2YXIgTj0kZShtKT9zcTpibWU7cmV0dXJuIFQmJkxhKG0sdixUKSYmKHY9ZSksTihtLGtlKHYsMykpfXZhciBJMGU9bnIoZnVuY3Rpb24obSx2KXtpZihtPT1udWxsKXJldHVybltdO3ZhciBUPXYubGVuZ3RoO3JldHVybiBUPjEmJkxhKG0sdlswXSx2WzFdKT92PVtdOlQ+MiYmTGEodlswXSx2WzFdLHZbMl0pJiYodj1bdlswXV0pLEdmdChtLGtvKHYsMSksW10pfSksX0k9dWRlfHxmdW5jdGlvbigpe3JldHVybiBoby5EYXRlLm5vdygpfTtmdW5jdGlvbiBMMGUobSx2KXtpZih0eXBlb2YgdiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgcWwoaSk7cmV0dXJuIG09UWUobSksZnVuY3Rpb24oKXtpZigtLW08MSlyZXR1cm4gdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIEZwdChtLHYsVCl7cmV0dXJuIHY9VD9lOnYsdj1tJiZ2PT1udWxsP20ubGVuZ3RoOnYsYXAobSxDLGUsZSxlLGUsdil9ZnVuY3Rpb24gQnB0KG0sdil7dmFyIFQ7aWYodHlwZW9mIHYhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHFsKGkpO3JldHVybiBtPVFlKG0pLGZ1bmN0aW9uKCl7cmV0dXJuLS1tPjAmJihUPXYuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxtPD0xJiYodj1lKSxUfX12YXIgJHE9bnIoZnVuY3Rpb24obSx2LFQpe3ZhciBOPWQ7aWYoVC5sZW5ndGgpe3ZhciBWPWRtKFQsYngoJHEpKTtOfD1ifXJldHVybiBhcChtLE4sdixULFYpfSksSHB0PW5yKGZ1bmN0aW9uKG0sdixUKXt2YXIgTj1kfGc7aWYoVC5sZW5ndGgpe3ZhciBWPWRtKFQsYngoSHB0KSk7Tnw9Yn1yZXR1cm4gYXAodixOLG0sVCxWKX0pO2Z1bmN0aW9uIFZwdChtLHYsVCl7dj1UP2U6djt2YXIgTj1hcChtLHksZSxlLGUsZSxlLHYpO3JldHVybiBOLnBsYWNlaG9sZGVyPVZwdC5wbGFjZWhvbGRlcixOfWZ1bmN0aW9uIFVwdChtLHYsVCl7dj1UP2U6djt2YXIgTj1hcChtLHgsZSxlLGUsZSxlLHYpO3JldHVybiBOLnBsYWNlaG9sZGVyPVVwdC5wbGFjZWhvbGRlcixOfWZ1bmN0aW9uIHFwdChtLHYsVCl7dmFyIE4sVixZLEosaXQsZnQsRHQ9MCxPdD0hMSxWdD0hMSxvZT0hMDtpZih0eXBlb2YgbSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgcWwoaSk7dj1YbCh2KXx8MCxyaShUKSYmKE90PSEhVC5sZWFkaW5nLFZ0PSJtYXhXYWl0ImluIFQsWT1WdD9qaShYbChULm1heFdhaXQpfHwwLHYpOlksb2U9InRyYWlsaW5nImluIFQ/ISFULnRyYWlsaW5nOm9lKTtmdW5jdGlvbiBUZSh3aSl7dmFyIGV1PU4saHA9VjtyZXR1cm4gTj1WPWUsRHQ9d2ksSj1tLmFwcGx5KGhwLGV1KSxKfWZ1bmN0aW9uIE5lKHdpKXtyZXR1cm4gRHQ9d2ksaXQ9T00ocHIsdiksT3Q/VGUod2kpOkp9ZnVuY3Rpb24gZXIod2kpe3ZhciBldT13aS1mdCxocD13aS1EdCxsZHQ9di1ldTtyZXR1cm4gVnQ/ZWEobGR0LFktaHApOmxkdH1mdW5jdGlvbiBEZSh3aSl7dmFyIGV1PXdpLWZ0LGhwPXdpLUR0O3JldHVybiBmdD09PWV8fGV1Pj12fHxldTwwfHxWdCYmaHA+PVl9ZnVuY3Rpb24gcHIoKXt2YXIgd2k9X0koKTtpZihEZSh3aSkpcmV0dXJuIHlyKHdpKTtpdD1PTShwcixlcih3aSkpfWZ1bmN0aW9uIHlyKHdpKXtyZXR1cm4gaXQ9ZSxvZSYmTj9UZSh3aSk6KE49Vj1lLEopfWZ1bmN0aW9uIGpzKCl7aXQhPT1lJiZRZnQoaXQpLER0PTAsTj1mdD1WPWl0PWV9ZnVuY3Rpb24ga2EoKXtyZXR1cm4gaXQ9PT1lP0o6eXIoX0koKSl9ZnVuY3Rpb24gWHMoKXt2YXIgd2k9X0koKSxldT1EZSh3aSk7aWYoTj1hcmd1bWVudHMsVj10aGlzLGZ0PXdpLGV1KXtpZihpdD09PWUpcmV0dXJuIE5lKGZ0KTtpZihWdClyZXR1cm4gUWZ0KGl0KSxpdD1PTShwcix2KSxUZShmdCl9cmV0dXJuIGl0PT09ZSYmKGl0PU9NKHByLHYpKSxKfXJldHVybiBYcy5jYW5jZWw9anMsWHMuZmx1c2g9a2EsWHN9dmFyIGswZT1ucihmdW5jdGlvbihtLHYpe3JldHVybiBrZnQobSwxLHYpfSksUjBlPW5yKGZ1bmN0aW9uKG0sdixUKXtyZXR1cm4ga2Z0KG0sWGwodil8fDAsVCl9KTtmdW5jdGlvbiBOMGUobSl7cmV0dXJuIGFwKG0sayl9ZnVuY3Rpb24geUkobSx2KXtpZih0eXBlb2YgbSE9ImZ1bmN0aW9uInx8diE9bnVsbCYmdHlwZW9mIHYhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHFsKGkpO3ZhciBUPWZ1bmN0aW9uKCl7dmFyIE49YXJndW1lbnRzLFY9dj92LmFwcGx5KHRoaXMsTik6TlswXSxZPVQuY2FjaGU7aWYoWS5oYXMoVikpcmV0dXJuIFkuZ2V0KFYpO3ZhciBKPW0uYXBwbHkodGhpcyxOKTtyZXR1cm4gVC5jYWNoZT1ZLnNldChWLEopfHxZLEp9O3JldHVybiBULmNhY2hlPW5ldyh5SS5DYWNoZXx8aXApLFR9eUkuQ2FjaGU9aXA7ZnVuY3Rpb24gdkkobSl7aWYodHlwZW9mIG0hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHFsKGkpO3JldHVybiBmdW5jdGlvbigpe3ZhciB2PWFyZ3VtZW50cztzd2l0Y2godi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hbS5jYWxsKHRoaXMpO2Nhc2UgMTpyZXR1cm4hbS5jYWxsKHRoaXMsdlswXSk7Y2FzZSAyOnJldHVybiFtLmNhbGwodGhpcyx2WzBdLHZbMV0pO2Nhc2UgMzpyZXR1cm4hbS5jYWxsKHRoaXMsdlswXSx2WzFdLHZbMl0pfXJldHVybiFtLmFwcGx5KHRoaXMsdil9fWZ1bmN0aW9uIEQwZShtKXtyZXR1cm4gQnB0KDIsbSl9dmFyIE8wZT13bWUoZnVuY3Rpb24obSx2KXt2PXYubGVuZ3RoPT0xJiYkZSh2WzBdKT9Lbih2WzBdLEdzKGtlKCkpKTpLbihrbyh2LDEpLEdzKGtlKCkpKTt2YXIgVD12Lmxlbmd0aDtyZXR1cm4gbnIoZnVuY3Rpb24oTil7Zm9yKHZhciBWPS0xLFk9ZWEoTi5sZW5ndGgsVCk7KytWPFk7KU5bVl09dltWXS5jYWxsKHRoaXMsTltWXSk7cmV0dXJuIHFzKG0sdGhpcyxOKX0pfSksS3E9bnIoZnVuY3Rpb24obSx2KXt2YXIgVD1kbSh2LGJ4KEtxKSk7cmV0dXJuIGFwKG0sYixlLHYsVCl9KSxHcHQ9bnIoZnVuY3Rpb24obSx2KXt2YXIgVD1kbSh2LGJ4KEdwdCkpO3JldHVybiBhcChtLFMsZSx2LFQpfSksejBlPXNwKGZ1bmN0aW9uKG0sdil7cmV0dXJuIGFwKG0sUCxlLGUsZSx2KX0pO2Z1bmN0aW9uIEYwZShtLHYpe2lmKHR5cGVvZiBtIT0iZnVuY3Rpb24iKXRocm93IG5ldyBxbChpKTtyZXR1cm4gdj12PT09ZT92OlFlKHYpLG5yKG0sdil9ZnVuY3Rpb24gQjBlKG0sdil7aWYodHlwZW9mIG0hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IHFsKGkpO3JldHVybiB2PXY9PW51bGw/MDpqaShRZSh2KSwwKSxucihmdW5jdGlvbihUKXt2YXIgTj1UW3ZdLFY9eG0oVCwwLHYpO3JldHVybiBOJiZwbShWLE4pLHFzKG0sdGhpcyxWKX0pfWZ1bmN0aW9uIEgwZShtLHYsVCl7dmFyIE49ITAsVj0hMDtpZih0eXBlb2YgbSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgcWwoaSk7cmV0dXJuIHJpKFQpJiYoTj0ibGVhZGluZyJpbiBUPyEhVC5sZWFkaW5nOk4sVj0idHJhaWxpbmciaW4gVD8hIVQudHJhaWxpbmc6VikscXB0KG0sdix7bGVhZGluZzpOLG1heFdhaXQ6dix0cmFpbGluZzpWfSl9ZnVuY3Rpb24gVjBlKG0pe3JldHVybiBGcHQobSwxKX1mdW5jdGlvbiBVMGUobSx2KXtyZXR1cm4gS3EoTnEodiksbSl9ZnVuY3Rpb24gcTBlKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIG09YXJndW1lbnRzWzBdO3JldHVybiAkZShtKT9tOlttXX1mdW5jdGlvbiBHMGUobSl7cmV0dXJuIFdsKG0saCl9ZnVuY3Rpb24gVzBlKG0sdil7cmV0dXJuIHY9dHlwZW9mIHY9PSJmdW5jdGlvbiI/djplLFdsKG0saCx2KX1mdW5jdGlvbiBZMGUobSl7cmV0dXJuIFdsKG0sY3xoKX1mdW5jdGlvbiBqMGUobSx2KXtyZXR1cm4gdj10eXBlb2Ygdj09ImZ1bmN0aW9uIj92OmUsV2wobSxjfGgsdil9ZnVuY3Rpb24gWDBlKG0sdil7cmV0dXJuIHY9PW51bGx8fExmdChtLHYsZm8odikpfWZ1bmN0aW9uIHR1KG0sdil7cmV0dXJuIG09PT12fHxtIT09bSYmdiE9PXZ9dmFyICQwZT1oSSh3cSksSzBlPWhJKGZ1bmN0aW9uKG0sdil7cmV0dXJuIG0+PXZ9KSxzXz16ZnQoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT96ZnQ6ZnVuY3Rpb24obSl7cmV0dXJuIGxpKG0pJiZ1bi5jYWxsKG0sImNhbGxlZSIpJiYhU2Z0LmNhbGwobSwiY2FsbGVlIil9LCRlPXZ0LmlzQXJyYXksWjBlPWlmdD9HcyhpZnQpOm9tZTtmdW5jdGlvbiBwcyhtKXtyZXR1cm4gbSE9bnVsbCYmeEkobS5sZW5ndGgpJiYhY3AobSl9ZnVuY3Rpb24gYmkobSl7cmV0dXJuIGxpKG0pJiZwcyhtKX1mdW5jdGlvbiBKMGUobSl7cmV0dXJuIG09PT0hMHx8bT09PSExfHxsaShtKSYmSWEobSk9PUt0fXZhciBibT1mZGV8fHNHLFEwZT1vZnQ/R3Mob2Z0KTphbWU7ZnVuY3Rpb24gdF9lKG0pe3JldHVybiBsaShtKSYmbS5ub2RlVHlwZT09PTEmJiF6TShtKX1mdW5jdGlvbiBlX2UobSl7aWYobT09bnVsbClyZXR1cm4hMDtpZihwcyhtKSYmKCRlKG0pfHx0eXBlb2YgbT09InN0cmluZyJ8fHR5cGVvZiBtLnNwbGljZT09ImZ1bmN0aW9uInx8Ym0obSl8fHd4KG0pfHxzXyhtKSkpcmV0dXJuIW0ubGVuZ3RoO3ZhciB2PXJhKG0pO2lmKHY9PXF8fHY9PUxlKXJldHVybiFtLnNpemU7aWYoRE0obSkpcmV0dXJuIUVxKG0pLmxlbmd0aDtmb3IodmFyIFQgaW4gbSlpZih1bi5jYWxsKG0sVCkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gcl9lKG0sdil7cmV0dXJuIGtNKG0sdil9ZnVuY3Rpb24gbl9lKG0sdixUKXtUPXR5cGVvZiBUPT0iZnVuY3Rpb24iP1Q6ZTt2YXIgTj1UP1QobSx2KTplO3JldHVybiBOPT09ZT9rTShtLHYsZSxUKTohIU59ZnVuY3Rpb24gWnEobSl7aWYoIWxpKG0pKXJldHVybiExO3ZhciB2PUlhKG0pO3JldHVybiB2PT1YfHx2PT1jdHx8dHlwZW9mIG0ubWVzc2FnZT09InN0cmluZyImJnR5cGVvZiBtLm5hbWU9PSJzdHJpbmciJiYhek0obSl9ZnVuY3Rpb24gaV9lKG0pe3JldHVybiB0eXBlb2YgbT09Im51bWJlciImJkVmdChtKX1mdW5jdGlvbiBjcChtKXtpZighcmkobSkpcmV0dXJuITE7dmFyIHY9SWEobSk7cmV0dXJuIHY9PWV0fHx2PT1kdHx8dj09bHR8fHY9PWllfWZ1bmN0aW9uIFdwdChtKXtyZXR1cm4gdHlwZW9mIG09PSJudW1iZXIiJiZtPT1RZShtKX1mdW5jdGlvbiB4SShtKXtyZXR1cm4gdHlwZW9mIG09PSJudW1iZXIiJiZtPi0xJiZtJTE9PTAmJm08PVV9ZnVuY3Rpb24gcmkobSl7dmFyIHY9dHlwZW9mIG07cmV0dXJuIG0hPW51bGwmJih2PT0ib2JqZWN0Inx8dj09ImZ1bmN0aW9uIil9ZnVuY3Rpb24gbGkobSl7cmV0dXJuIG0hPW51bGwmJnR5cGVvZiBtPT0ib2JqZWN0In12YXIgWXB0PWFmdD9HcyhhZnQpOmxtZTtmdW5jdGlvbiBvX2UobSx2KXtyZXR1cm4gbT09PXZ8fE1xKG0sdixWcSh2KSl9ZnVuY3Rpb24gYV9lKG0sdixUKXtyZXR1cm4gVD10eXBlb2YgVD09ImZ1bmN0aW9uIj9UOmUsTXEobSx2LFZxKHYpLFQpfWZ1bmN0aW9uIHNfZShtKXtyZXR1cm4ganB0KG0pJiZtIT0rbX1mdW5jdGlvbiBsX2UobSl7aWYoV21lKG0pKXRocm93IG5ldyBXZShuKTtyZXR1cm4gRmZ0KG0pfWZ1bmN0aW9uIGNfZShtKXtyZXR1cm4gbT09PW51bGx9ZnVuY3Rpb24gdV9lKG0pe3JldHVybiBtPT1udWxsfWZ1bmN0aW9uIGpwdChtKXtyZXR1cm4gdHlwZW9mIG09PSJudW1iZXIifHxsaShtKSYmSWEobSk9PXB0fWZ1bmN0aW9uIHpNKG0pe2lmKCFsaShtKXx8SWEobSkhPXd0KXJldHVybiExO3ZhciB2PWo2KG0pO2lmKHY9PT1udWxsKXJldHVybiEwO3ZhciBUPXVuLmNhbGwodiwiY29uc3RydWN0b3IiKSYmdi5jb25zdHJ1Y3RvcjtyZXR1cm4gdHlwZW9mIFQ9PSJmdW5jdGlvbiImJlQgaW5zdGFuY2VvZiBUJiZxNi5jYWxsKFQpPT1hZGV9dmFyIEpxPXNmdD9HcyhzZnQpOmNtZTtmdW5jdGlvbiBoX2UobSl7cmV0dXJuIFdwdChtKSYmbT49LVUmJm08PVV9dmFyIFhwdD1sZnQ/R3MobGZ0KTp1bWU7ZnVuY3Rpb24gYkkobSl7cmV0dXJuIHR5cGVvZiBtPT0ic3RyaW5nInx8ISRlKG0pJiZsaShtKSYmSWEobSk9PWFyfWZ1bmN0aW9uIFlzKG0pe3JldHVybiB0eXBlb2YgbT09InN5bWJvbCJ8fGxpKG0pJiZJYShtKT09ZnJ9dmFyIHd4PWNmdD9HcyhjZnQpOmhtZTtmdW5jdGlvbiBmX2UobSl7cmV0dXJuIG09PT1lfWZ1bmN0aW9uIHBfZShtKXtyZXR1cm4gbGkobSkmJnJhKG0pPT0kfWZ1bmN0aW9uIGRfZShtKXtyZXR1cm4gbGkobSkmJklhKG0pPT1JdH12YXIgbV9lPWhJKFRxKSxnX2U9aEkoZnVuY3Rpb24obSx2KXtyZXR1cm4gbTw9dn0pO2Z1bmN0aW9uICRwdChtKXtpZighbSlyZXR1cm5bXTtpZihwcyhtKSlyZXR1cm4gYkkobSk/SmMobSk6ZnMobSk7aWYoTU0mJm1bTU1dKXJldHVybiBYcGUobVtNTV0oKSk7dmFyIHY9cmEobSksVD12PT1xP3BxOnY9PUxlP0g2OlN4O3JldHVybiBUKG0pfWZ1bmN0aW9uIHVwKG0pe2lmKCFtKXJldHVybiBtPT09MD9tOjA7aWYobT1YbChtKSxtPT09enx8bT09PS16KXt2YXIgdj1tPDA/LTE6MTtyZXR1cm4gdipXfXJldHVybiBtPT09bT9tOjB9ZnVuY3Rpb24gUWUobSl7dmFyIHY9dXAobSksVD12JTE7cmV0dXJuIHY9PT12P1Q/di1UOnY6MH1mdW5jdGlvbiBLcHQobSl7cmV0dXJuIG0/bl8oUWUobSksMCxydCk6MH1mdW5jdGlvbiBYbChtKXtpZih0eXBlb2YgbT09Im51bWJlciIpcmV0dXJuIG07aWYoWXMobSkpcmV0dXJuIFo7aWYocmkobSkpe3ZhciB2PXR5cGVvZiBtLnZhbHVlT2Y9PSJmdW5jdGlvbiI/bS52YWx1ZU9mKCk6bTttPXJpKHYpP3YrIiI6dn1pZih0eXBlb2YgbSE9InN0cmluZyIpcmV0dXJuIG09PT0wP206K207bT1tZnQobSk7dmFyIFQ9X3IudGVzdChtKTtyZXR1cm4gVHx8WG4udGVzdChtKT9McGUobS5zbGljZSgyKSxUPzI6OCk6WHIudGVzdChtKT9aOittfWZ1bmN0aW9uIFpwdChtKXtyZXR1cm4gbWgobSxkcyhtKSl9ZnVuY3Rpb24gX19lKG0pe3JldHVybiBtP25fKFFlKG0pLC1VLFUpOm09PT0wP206MH1mdW5jdGlvbiBvbihtKXtyZXR1cm4gbT09bnVsbD8iIjpXcyhtKX12YXIgeV9lPXZ4KGZ1bmN0aW9uKG0sdil7aWYoRE0odil8fHBzKHYpKXttaCh2LGZvKHYpLG0pO3JldHVybn1mb3IodmFyIFQgaW4gdil1bi5jYWxsKHYsVCkmJlBNKG0sVCx2W1RdKX0pLEpwdD12eChmdW5jdGlvbihtLHYpe21oKHYsZHModiksbSl9KSx3ST12eChmdW5jdGlvbihtLHYsVCxOKXttaCh2LGRzKHYpLG0sTil9KSx2X2U9dngoZnVuY3Rpb24obSx2LFQsTil7bWgodixmbyh2KSxtLE4pfSkseF9lPXNwKHZxKTtmdW5jdGlvbiBiX2UobSx2KXt2YXIgVD15eChtKTtyZXR1cm4gdj09bnVsbD9UOklmdChULHYpfXZhciB3X2U9bnIoZnVuY3Rpb24obSx2KXttPXZuKG0pO3ZhciBUPS0xLE49di5sZW5ndGgsVj1OPjI/dlsyXTplO2ZvcihWJiZMYSh2WzBdLHZbMV0sVikmJihOPTEpOysrVDxOOylmb3IodmFyIFk9dltUXSxKPWRzKFkpLGl0PS0xLGZ0PUoubGVuZ3RoOysraXQ8ZnQ7KXt2YXIgRHQ9SltpdF0sT3Q9bVtEdF07KE90PT09ZXx8dHUoT3QsbXhbRHRdKSYmIXVuLmNhbGwobSxEdCkpJiYobVtEdF09WVtEdF0pfXJldHVybiBtfSksU19lPW5yKGZ1bmN0aW9uKG0pe3JldHVybiBtLnB1c2goZSxtcHQpLHFzKFFwdCxlLG0pfSk7ZnVuY3Rpb24gTV9lKG0sdil7cmV0dXJuIGhmdChtLGtlKHYsMyksZGgpfWZ1bmN0aW9uIEVfZShtLHYpe3JldHVybiBoZnQobSxrZSh2LDMpLGJxKX1mdW5jdGlvbiBUX2UobSx2KXtyZXR1cm4gbT09bnVsbD9tOnhxKG0sa2UodiwzKSxkcyl9ZnVuY3Rpb24gQ19lKG0sdil7cmV0dXJuIG09PW51bGw/bTpEZnQobSxrZSh2LDMpLGRzKX1mdW5jdGlvbiBBX2UobSx2KXtyZXR1cm4gbSYmZGgobSxrZSh2LDMpKX1mdW5jdGlvbiBQX2UobSx2KXtyZXR1cm4gbSYmYnEobSxrZSh2LDMpKX1mdW5jdGlvbiBJX2UobSl7cmV0dXJuIG09PW51bGw/W106bkkobSxmbyhtKSl9ZnVuY3Rpb24gTF9lKG0pe3JldHVybiBtPT1udWxsP1tdOm5JKG0sZHMobSkpfWZ1bmN0aW9uIFFxKG0sdixUKXt2YXIgTj1tPT1udWxsP2U6aV8obSx2KTtyZXR1cm4gTj09PWU/VDpOfWZ1bmN0aW9uIGtfZShtLHYpe3JldHVybiBtIT1udWxsJiZ5cHQobSx2LGVtZSl9ZnVuY3Rpb24gdEcobSx2KXtyZXR1cm4gbSE9bnVsbCYmeXB0KG0sdixybWUpfXZhciBSX2U9dXB0KGZ1bmN0aW9uKG0sdixUKXt2IT1udWxsJiZ0eXBlb2Ygdi50b1N0cmluZyE9ImZ1bmN0aW9uIiYmKHY9RzYuY2FsbCh2KSksbVt2XT1UfSxyRyhtcykpLE5fZT11cHQoZnVuY3Rpb24obSx2LFQpe3YhPW51bGwmJnR5cGVvZiB2LnRvU3RyaW5nIT0iZnVuY3Rpb24iJiYodj1HNi5jYWxsKHYpKSx1bi5jYWxsKG0sdik/bVt2XS5wdXNoKFQpOm1bdl09W1RdfSxrZSksRF9lPW5yKExNKTtmdW5jdGlvbiBmbyhtKXtyZXR1cm4gcHMobSk/QWZ0KG0pOkVxKG0pfWZ1bmN0aW9uIGRzKG0pe3JldHVybiBwcyhtKT9BZnQobSwhMCk6Zm1lKG0pfWZ1bmN0aW9uIE9fZShtLHYpe3ZhciBUPXt9O3JldHVybiB2PWtlKHYsMyksZGgobSxmdW5jdGlvbihOLFYsWSl7b3AoVCx2KE4sVixZKSxOKX0pLFR9ZnVuY3Rpb24gel9lKG0sdil7dmFyIFQ9e307cmV0dXJuIHY9a2UodiwzKSxkaChtLGZ1bmN0aW9uKE4sVixZKXtvcChULFYsdihOLFYsWSkpfSksVH12YXIgRl9lPXZ4KGZ1bmN0aW9uKG0sdixUKXtpSShtLHYsVCl9KSxRcHQ9dngoZnVuY3Rpb24obSx2LFQsTil7aUkobSx2LFQsTil9KSxCX2U9c3AoZnVuY3Rpb24obSx2KXt2YXIgVD17fTtpZihtPT1udWxsKXJldHVybiBUO3ZhciBOPSExO3Y9S24odixmdW5jdGlvbihZKXtyZXR1cm4gWT12bShZLG0pLE58fChOPVkubGVuZ3RoPjEpLFl9KSxtaChtLEJxKG0pLFQpLE4mJihUPVdsKFQsY3x1fGgsUm1lKSk7Zm9yKHZhciBWPXYubGVuZ3RoO1YtLTspTHEoVCx2W1ZdKTtyZXR1cm4gVH0pO2Z1bmN0aW9uIEhfZShtLHYpe3JldHVybiB0ZHQobSx2SShrZSh2KSkpfXZhciBWX2U9c3AoZnVuY3Rpb24obSx2KXtyZXR1cm4gbT09bnVsbD97fTpkbWUobSx2KX0pO2Z1bmN0aW9uIHRkdChtLHYpe2lmKG09PW51bGwpcmV0dXJue307dmFyIFQ9S24oQnEobSksZnVuY3Rpb24oTil7cmV0dXJuW05dfSk7cmV0dXJuIHY9a2UodiksV2Z0KG0sVCxmdW5jdGlvbihOLFYpe3JldHVybiB2KE4sVlswXSl9KX1mdW5jdGlvbiBVX2UobSx2LFQpe3Y9dm0odixtKTt2YXIgTj0tMSxWPXYubGVuZ3RoO2ZvcihWfHwoVj0xLG09ZSk7KytOPFY7KXt2YXIgWT1tPT1udWxsP2U6bVtnaCh2W05dKV07WT09PWUmJihOPVYsWT1UKSxtPWNwKFkpP1kuY2FsbChtKTpZfXJldHVybiBtfWZ1bmN0aW9uIHFfZShtLHYsVCl7cmV0dXJuIG09PW51bGw/bTpSTShtLHYsVCl9ZnVuY3Rpb24gR19lKG0sdixULE4pe3JldHVybiBOPXR5cGVvZiBOPT0iZnVuY3Rpb24iP046ZSxtPT1udWxsP206Uk0obSx2LFQsTil9dmFyIGVkdD1wcHQoZm8pLHJkdD1wcHQoZHMpO2Z1bmN0aW9uIFdfZShtLHYsVCl7dmFyIE49JGUobSksVj1OfHxibShtKXx8d3gobSk7aWYodj1rZSh2LDQpLFQ9PW51bGwpe3ZhciBZPW0mJm0uY29uc3RydWN0b3I7Vj9UPU4/bmV3IFk6W106cmkobSk/VD1jcChZKT95eChqNihtKSk6e306VD17fX1yZXR1cm4oVj9VbDpkaCkobSxmdW5jdGlvbihKLGl0LGZ0KXtyZXR1cm4gdihULEosaXQsZnQpfSksVH1mdW5jdGlvbiBZX2UobSx2KXtyZXR1cm4gbT09bnVsbD8hMDpMcShtLHYpfWZ1bmN0aW9uIGpfZShtLHYsVCl7cmV0dXJuIG09PW51bGw/bTpLZnQobSx2LE5xKFQpKX1mdW5jdGlvbiBYX2UobSx2LFQsTil7cmV0dXJuIE49dHlwZW9mIE49PSJmdW5jdGlvbiI/TjplLG09PW51bGw/bTpLZnQobSx2LE5xKFQpLE4pfWZ1bmN0aW9uIFN4KG0pe3JldHVybiBtPT1udWxsP1tdOmZxKG0sZm8obSkpfWZ1bmN0aW9uICRfZShtKXtyZXR1cm4gbT09bnVsbD9bXTpmcShtLGRzKG0pKX1mdW5jdGlvbiBLX2UobSx2LFQpe3JldHVybiBUPT09ZSYmKFQ9dix2PWUpLFQhPT1lJiYoVD1YbChUKSxUPVQ9PT1UP1Q6MCksdiE9PWUmJih2PVhsKHYpLHY9dj09PXY/djowKSxuXyhYbChtKSx2LFQpfWZ1bmN0aW9uIFpfZShtLHYsVCl7cmV0dXJuIHY9dXAodiksVD09PWU/KFQ9dix2PTApOlQ9dXAoVCksbT1YbChtKSxubWUobSx2LFQpfWZ1bmN0aW9uIEpfZShtLHYsVCl7aWYoVCYmdHlwZW9mIFQhPSJib29sZWFuIiYmTGEobSx2LFQpJiYodj1UPWUpLFQ9PT1lJiYodHlwZW9mIHY9PSJib29sZWFuIj8oVD12LHY9ZSk6dHlwZW9mIG09PSJib29sZWFuIiYmKFQ9bSxtPWUpKSxtPT09ZSYmdj09PWU/KG09MCx2PTEpOihtPXVwKG0pLHY9PT1lPyh2PW0sbT0wKTp2PXVwKHYpKSxtPnYpe3ZhciBOPW07bT12LHY9Tn1pZihUfHxtJTF8fHYlMSl7dmFyIFY9VGZ0KCk7cmV0dXJuIGVhKG0rVioodi1tK0lwZSgiMWUtIisoKFYrIiIpLmxlbmd0aC0xKSkpLHYpfXJldHVybiBBcShtLHYpfXZhciBRX2U9eHgoZnVuY3Rpb24obSx2LFQpe3JldHVybiB2PXYudG9Mb3dlckNhc2UoKSxtKyhUP25kdCh2KTp2KX0pO2Z1bmN0aW9uIG5kdChtKXtyZXR1cm4gZUcob24obSkudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gaWR0KG0pe3JldHVybiBtPW9uKG0pLG0mJm0ucmVwbGFjZSh1bSxxcGUpLnJlcGxhY2UoeHBlLCIiKX1mdW5jdGlvbiB0eWUobSx2LFQpe209b24obSksdj1Xcyh2KTt2YXIgTj1tLmxlbmd0aDtUPVQ9PT1lP046bl8oUWUoVCksMCxOKTt2YXIgVj1UO3JldHVybiBULT12Lmxlbmd0aCxUPj0wJiZtLnNsaWNlKFQsVik9PXZ9ZnVuY3Rpb24gZXllKG0pe3JldHVybiBtPW9uKG0pLG0mJkFyLnRlc3QobSk/bS5yZXBsYWNlKHluLEdwZSk6bX1mdW5jdGlvbiByeWUobSl7cmV0dXJuIG09b24obSksbSYmY3gudGVzdChtKT9tLnJlcGxhY2UoY24sIlxcJCYiKTptfXZhciBueWU9eHgoZnVuY3Rpb24obSx2LFQpe3JldHVybiBtKyhUPyItIjoiIikrdi50b0xvd2VyQ2FzZSgpfSksaXllPXh4KGZ1bmN0aW9uKG0sdixUKXtyZXR1cm4gbSsoVD8iICI6IiIpK3YudG9Mb3dlckNhc2UoKX0pLG95ZT1zcHQoInRvTG93ZXJDYXNlIik7ZnVuY3Rpb24gYXllKG0sdixUKXttPW9uKG0pLHY9UWUodik7dmFyIE49dj9keChtKTowO2lmKCF2fHxOPj12KXJldHVybiBtO3ZhciBWPSh2LU4pLzI7cmV0dXJuIHVJKFo2KFYpLFQpK20rdUkoSzYoViksVCl9ZnVuY3Rpb24gc3llKG0sdixUKXttPW9uKG0pLHY9UWUodik7dmFyIE49dj9keChtKTowO3JldHVybiB2JiZOPHY/bSt1SSh2LU4sVCk6bX1mdW5jdGlvbiBseWUobSx2LFQpe209b24obSksdj1RZSh2KTt2YXIgTj12P2R4KG0pOjA7cmV0dXJuIHYmJk48dj91SSh2LU4sVCkrbTptfWZ1bmN0aW9uIGN5ZShtLHYsVCl7cmV0dXJuIFR8fHY9PW51bGw/dj0wOnYmJih2PSt2KSxnZGUob24obSkucmVwbGFjZShlcCwiIiksdnx8MCl9ZnVuY3Rpb24gdXllKG0sdixUKXtyZXR1cm4oVD9MYShtLHYsVCk6dj09PWUpP3Y9MTp2PVFlKHYpLFBxKG9uKG0pLHYpfWZ1bmN0aW9uIGh5ZSgpe3ZhciBtPWFyZ3VtZW50cyx2PW9uKG1bMF0pO3JldHVybiBtLmxlbmd0aDwzP3Y6di5yZXBsYWNlKG1bMV0sbVsyXSl9dmFyIGZ5ZT14eChmdW5jdGlvbihtLHYsVCl7cmV0dXJuIG0rKFQ/Il8iOiIiKSt2LnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiBweWUobSx2LFQpe3JldHVybiBUJiZ0eXBlb2YgVCE9Im51bWJlciImJkxhKG0sdixUKSYmKHY9VD1lKSxUPVQ9PT1lP3J0OlQ+Pj4wLFQ/KG09b24obSksbSYmKHR5cGVvZiB2PT0ic3RyaW5nInx8diE9bnVsbCYmIUpxKHYpKSYmKHY9V3ModiksIXYmJnB4KG0pKT94bShKYyhtKSwwLFQpOm0uc3BsaXQodixUKSk6W119dmFyIGR5ZT14eChmdW5jdGlvbihtLHYsVCl7cmV0dXJuIG0rKFQ/IiAiOiIiKStlRyh2KX0pO2Z1bmN0aW9uIG15ZShtLHYsVCl7cmV0dXJuIG09b24obSksVD1UPT1udWxsPzA6bl8oUWUoVCksMCxtLmxlbmd0aCksdj1Xcyh2KSxtLnNsaWNlKFQsVCt2Lmxlbmd0aCk9PXZ9ZnVuY3Rpb24gZ3llKG0sdixUKXt2YXIgTj1HLnRlbXBsYXRlU2V0dGluZ3M7VCYmTGEobSx2LFQpJiYodj1lKSxtPW9uKG0pLHY9d0koe30sdixOLGRwdCk7dmFyIFY9d0koe30sdi5pbXBvcnRzLE4uaW1wb3J0cyxkcHQpLFk9Zm8oViksSj1mcShWLFkpLGl0LGZ0LER0PTAsT3Q9di5pbnRlcnBvbGF0ZXx8bXIsVnQ9Il9fcCArPSAnIixvZT1kcSgodi5lc2NhcGV8fG1yKS5zb3VyY2UrInwiK090LnNvdXJjZSsifCIrKE90PT09UGE/dHI6bXIpLnNvdXJjZSsifCIrKHYuZXZhbHVhdGV8fG1yKS5zb3VyY2UrInwkIiwiZyIpLFRlPSIvLyMgc291cmNlVVJMPSIrKHVuLmNhbGwodiwic291cmNlVVJMIik/KHYuc291cmNlVVJMKyIiKS5yZXBsYWNlKC9ccy9nLCIgIik6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKytFcGUrIl0iKStgCmA7bS5yZXBsYWNlKG9lLGZ1bmN0aW9uKERlLHByLHlyLGpzLGthLFhzKXtyZXR1cm4geXJ8fCh5cj1qcyksVnQrPW0uc2xpY2UoRHQsWHMpLnJlcGxhY2UoemwsV3BlKSxwciYmKGl0PSEwLFZ0Kz1gJyArCl9fZShgK3ByK2ApICsKJ2ApLGthJiYoZnQ9ITAsVnQrPWAnOwpgK2thK2A7Cl9fcCArPSAnYCkseXImJihWdCs9YCcgKwooKF9fdCA9IChgK3lyK2ApKSA9PSBudWxsID8gJycgOiBfX3QpICsKJ2ApLER0PVhzK0RlLmxlbmd0aCxEZX0pLFZ0Kz1gJzsKYDt2YXIgTmU9dW4uY2FsbCh2LCJ2YXJpYWJsZSIpJiZ2LnZhcmlhYmxlO2lmKCFOZSlWdD1gd2l0aCAob2JqKSB7CmArVnQrYAp9CmA7ZWxzZSBpZihWZS50ZXN0KE5lKSl0aHJvdyBuZXcgV2Uobyk7VnQ9KGZ0P1Z0LnJlcGxhY2UoQ2UsIiIpOlZ0KS5yZXBsYWNlKFB0LCIkMSIpLnJlcGxhY2UoTnQsIiQxOyIpLFZ0PSJmdW5jdGlvbigiKyhOZXx8Im9iaiIpK2ApIHsKYCsoTmU/IiI6YG9iaiB8fCAob2JqID0ge30pOwpgKSsidmFyIF9fdCwgX19wID0gJyciKyhpdD8iLCBfX2UgPSBfLmVzY2FwZSI6IiIpKyhmdD9gLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjsKZnVuY3Rpb24gcHJpbnQoKSB7IF9fcCArPSBfX2ouY2FsbChhcmd1bWVudHMsICcnKSB9CmA6YDsKYCkrVnQrYHJldHVybiBfX3AKfWA7dmFyIGVyPWFkdChmdW5jdGlvbigpe3JldHVybiAkcihZLFRlKyJyZXR1cm4gIitWdCkuYXBwbHkoZSxKKX0pO2lmKGVyLnNvdXJjZT1WdCxacShlcikpdGhyb3cgZXI7cmV0dXJuIGVyfWZ1bmN0aW9uIF95ZShtKXtyZXR1cm4gb24obSkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB5eWUobSl7cmV0dXJuIG9uKG0pLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gdnllKG0sdixUKXtpZihtPW9uKG0pLG0mJihUfHx2PT09ZSkpcmV0dXJuIG1mdChtKTtpZighbXx8ISh2PVdzKHYpKSlyZXR1cm4gbTt2YXIgTj1KYyhtKSxWPUpjKHYpLFk9Z2Z0KE4sViksSj1fZnQoTixWKSsxO3JldHVybiB4bShOLFksSikuam9pbigiIil9ZnVuY3Rpb24geHllKG0sdixUKXtpZihtPW9uKG0pLG0mJihUfHx2PT09ZSkpcmV0dXJuIG0uc2xpY2UoMCx2ZnQobSkrMSk7aWYoIW18fCEodj1Xcyh2KSkpcmV0dXJuIG07dmFyIE49SmMobSksVj1fZnQoTixKYyh2KSkrMTtyZXR1cm4geG0oTiwwLFYpLmpvaW4oIiIpfWZ1bmN0aW9uIGJ5ZShtLHYsVCl7aWYobT1vbihtKSxtJiYoVHx8dj09PWUpKXJldHVybiBtLnJlcGxhY2UoZXAsIiIpO2lmKCFtfHwhKHY9V3ModikpKXJldHVybiBtO3ZhciBOPUpjKG0pLFY9Z2Z0KE4sSmModikpO3JldHVybiB4bShOLFYpLmpvaW4oIiIpfWZ1bmN0aW9uIHd5ZShtLHYpe3ZhciBUPU8sTj1EO2lmKHJpKHYpKXt2YXIgVj0ic2VwYXJhdG9yImluIHY/di5zZXBhcmF0b3I6VjtUPSJsZW5ndGgiaW4gdj9RZSh2Lmxlbmd0aCk6VCxOPSJvbWlzc2lvbiJpbiB2P1dzKHYub21pc3Npb24pOk59bT1vbihtKTt2YXIgWT1tLmxlbmd0aDtpZihweChtKSl7dmFyIEo9SmMobSk7WT1KLmxlbmd0aH1pZihUPj1ZKXJldHVybiBtO3ZhciBpdD1ULWR4KE4pO2lmKGl0PDEpcmV0dXJuIE47dmFyIGZ0PUo/eG0oSiwwLGl0KS5qb2luKCIiKTptLnNsaWNlKDAsaXQpO2lmKFY9PT1lKXJldHVybiBmdCtOO2lmKEomJihpdCs9ZnQubGVuZ3RoLWl0KSxKcShWKSl7aWYobS5zbGljZShpdCkuc2VhcmNoKFYpKXt2YXIgRHQsT3Q9ZnQ7Zm9yKFYuZ2xvYmFsfHwoVj1kcShWLnNvdXJjZSxvbihLZS5leGVjKFYpKSsiZyIpKSxWLmxhc3RJbmRleD0wO0R0PVYuZXhlYyhPdCk7KXZhciBWdD1EdC5pbmRleDtmdD1mdC5zbGljZSgwLFZ0PT09ZT9pdDpWdCl9fWVsc2UgaWYobS5pbmRleE9mKFdzKFYpLGl0KSE9aXQpe3ZhciBvZT1mdC5sYXN0SW5kZXhPZihWKTtvZT4tMSYmKGZ0PWZ0LnNsaWNlKDAsb2UpKX1yZXR1cm4gZnQrTn1mdW5jdGlvbiBTeWUobSl7cmV0dXJuIG09b24obSksbSYmR2kudGVzdChtKT9tLnJlcGxhY2UoemUsSnBlKTptfXZhciBNeWU9eHgoZnVuY3Rpb24obSx2LFQpe3JldHVybiBtKyhUPyIgIjoiIikrdi50b1VwcGVyQ2FzZSgpfSksZUc9c3B0KCJ0b1VwcGVyQ2FzZSIpO2Z1bmN0aW9uIG9kdChtLHYsVCl7cmV0dXJuIG09b24obSksdj1UP2U6dix2PT09ZT9qcGUobSk/ZWRlKG0pOkZwZShtKTptLm1hdGNoKHYpfHxbXX12YXIgYWR0PW5yKGZ1bmN0aW9uKG0sdil7dHJ5e3JldHVybiBxcyhtLGUsdil9Y2F0Y2goVCl7cmV0dXJuIFpxKFQpP1Q6bmV3IFdlKFQpfX0pLEV5ZT1zcChmdW5jdGlvbihtLHYpe3JldHVybiBVbCh2LGZ1bmN0aW9uKFQpe1Q9Z2goVCksb3AobSxULCRxKG1bVF0sbSkpfSksbX0pO2Z1bmN0aW9uIFR5ZShtKXt2YXIgdj1tPT1udWxsPzA6bS5sZW5ndGgsVD1rZSgpO3JldHVybiBtPXY/S24obSxmdW5jdGlvbihOKXtpZih0eXBlb2YgTlsxXSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgcWwoaSk7cmV0dXJuW1QoTlswXSksTlsxXV19KTpbXSxucihmdW5jdGlvbihOKXtmb3IodmFyIFY9LTE7KytWPHY7KXt2YXIgWT1tW1ZdO2lmKHFzKFlbMF0sdGhpcyxOKSlyZXR1cm4gcXMoWVsxXSx0aGlzLE4pfX0pfWZ1bmN0aW9uIEN5ZShtKXtyZXR1cm4gSmRlKFdsKG0sYykpfWZ1bmN0aW9uIHJHKG0pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBtfX1mdW5jdGlvbiBBeWUobSx2KXtyZXR1cm4gbT09bnVsbHx8bSE9PW0/djptfXZhciBQeWU9Y3B0KCksSXllPWNwdCghMCk7ZnVuY3Rpb24gbXMobSl7cmV0dXJuIG19ZnVuY3Rpb24gbkcobSl7cmV0dXJuIEJmdCh0eXBlb2YgbT09ImZ1bmN0aW9uIj9tOldsKG0sYykpfWZ1bmN0aW9uIEx5ZShtKXtyZXR1cm4gVmZ0KFdsKG0sYykpfWZ1bmN0aW9uIGt5ZShtLHYpe3JldHVybiBVZnQobSxXbCh2LGMpKX12YXIgUnllPW5yKGZ1bmN0aW9uKG0sdil7cmV0dXJuIGZ1bmN0aW9uKFQpe3JldHVybiBMTShULG0sdil9fSksTnllPW5yKGZ1bmN0aW9uKG0sdil7cmV0dXJuIGZ1bmN0aW9uKFQpe3JldHVybiBMTShtLFQsdil9fSk7ZnVuY3Rpb24gaUcobSx2LFQpe3ZhciBOPWZvKHYpLFY9bkkodixOKTtUPT1udWxsJiYhKHJpKHYpJiYoVi5sZW5ndGh8fCFOLmxlbmd0aCkpJiYoVD12LHY9bSxtPXRoaXMsVj1uSSh2LGZvKHYpKSk7dmFyIFk9IShyaShUKSYmImNoYWluImluIFQpfHwhIVQuY2hhaW4sSj1jcChtKTtyZXR1cm4gVWwoVixmdW5jdGlvbihpdCl7dmFyIGZ0PXZbaXRdO21baXRdPWZ0LEomJihtLnByb3RvdHlwZVtpdF09ZnVuY3Rpb24oKXt2YXIgRHQ9dGhpcy5fX2NoYWluX187aWYoWXx8RHQpe3ZhciBPdD1tKHRoaXMuX193cmFwcGVkX18pLFZ0PU90Ll9fYWN0aW9uc19fPWZzKHRoaXMuX19hY3Rpb25zX18pO3JldHVybiBWdC5wdXNoKHtmdW5jOmZ0LGFyZ3M6YXJndW1lbnRzLHRoaXNBcmc6bX0pLE90Ll9fY2hhaW5fXz1EdCxPdH1yZXR1cm4gZnQuYXBwbHkobSxwbShbdGhpcy52YWx1ZSgpXSxhcmd1bWVudHMpKX0pfSksbX1mdW5jdGlvbiBEeWUoKXtyZXR1cm4gaG8uXz09PXRoaXMmJihoby5fPXNkZSksdGhpc31mdW5jdGlvbiBvRygpe31mdW5jdGlvbiBPeWUobSl7cmV0dXJuIG09UWUobSksbnIoZnVuY3Rpb24odil7cmV0dXJuIHFmdCh2LG0pfSl9dmFyIHp5ZT1PcShLbiksRnllPU9xKHVmdCksQnllPU9xKHNxKTtmdW5jdGlvbiBzZHQobSl7cmV0dXJuIHFxKG0pP2xxKGdoKG0pKTptbWUobSl9ZnVuY3Rpb24gSHllKG0pe3JldHVybiBmdW5jdGlvbih2KXtyZXR1cm4gbT09bnVsbD9lOmlfKG0sdil9fXZhciBWeWU9aHB0KCksVXllPWhwdCghMCk7ZnVuY3Rpb24gYUcoKXtyZXR1cm5bXX1mdW5jdGlvbiBzRygpe3JldHVybiExfWZ1bmN0aW9uIHF5ZSgpe3JldHVybnt9fWZ1bmN0aW9uIEd5ZSgpe3JldHVybiIifWZ1bmN0aW9uIFd5ZSgpe3JldHVybiEwfWZ1bmN0aW9uIFl5ZShtLHYpe2lmKG09UWUobSksbTwxfHxtPlUpcmV0dXJuW107dmFyIFQ9cnQsTj1lYShtLHJ0KTt2PWtlKHYpLG0tPXJ0O2Zvcih2YXIgVj1ocShOLHYpOysrVDxtOyl2KFQpO3JldHVybiBWfWZ1bmN0aW9uIGp5ZShtKXtyZXR1cm4gJGUobSk/S24obSxnaCk6WXMobSk/W21dOmZzKENwdChvbihtKSkpfWZ1bmN0aW9uIFh5ZShtKXt2YXIgdj0rK29kZTtyZXR1cm4gb24obSkrdn12YXIgJHllPWNJKGZ1bmN0aW9uKG0sdil7cmV0dXJuIG0rdn0sMCksS3llPXpxKCJjZWlsIiksWnllPWNJKGZ1bmN0aW9uKG0sdil7cmV0dXJuIG0vdn0sMSksSnllPXpxKCJmbG9vciIpO2Z1bmN0aW9uIFF5ZShtKXtyZXR1cm4gbSYmbS5sZW5ndGg/ckkobSxtcyx3cSk6ZX1mdW5jdGlvbiB0dmUobSx2KXtyZXR1cm4gbSYmbS5sZW5ndGg/ckkobSxrZSh2LDIpLHdxKTplfWZ1bmN0aW9uIGV2ZShtKXtyZXR1cm4gcGZ0KG0sbXMpfWZ1bmN0aW9uIHJ2ZShtLHYpe3JldHVybiBwZnQobSxrZSh2LDIpKX1mdW5jdGlvbiBudmUobSl7cmV0dXJuIG0mJm0ubGVuZ3RoP3JJKG0sbXMsVHEpOmV9ZnVuY3Rpb24gaXZlKG0sdil7cmV0dXJuIG0mJm0ubGVuZ3RoP3JJKG0sa2UodiwyKSxUcSk6ZX12YXIgb3ZlPWNJKGZ1bmN0aW9uKG0sdil7cmV0dXJuIG0qdn0sMSksYXZlPXpxKCJyb3VuZCIpLHN2ZT1jSShmdW5jdGlvbihtLHYpe3JldHVybiBtLXZ9LDApO2Z1bmN0aW9uIGx2ZShtKXtyZXR1cm4gbSYmbS5sZW5ndGg/dXEobSxtcyk6MH1mdW5jdGlvbiBjdmUobSx2KXtyZXR1cm4gbSYmbS5sZW5ndGg/dXEobSxrZSh2LDIpKTowfXJldHVybiBHLmFmdGVyPUwwZSxHLmFyeT1GcHQsRy5hc3NpZ249eV9lLEcuYXNzaWduSW49SnB0LEcuYXNzaWduSW5XaXRoPXdJLEcuYXNzaWduV2l0aD12X2UsRy5hdD14X2UsRy5iZWZvcmU9QnB0LEcuYmluZD0kcSxHLmJpbmRBbGw9RXllLEcuYmluZEtleT1IcHQsRy5jYXN0QXJyYXk9cTBlLEcuY2hhaW49RHB0LEcuY2h1bms9Sm1lLEcuY29tcGFjdD1RbWUsRy5jb25jYXQ9dGdlLEcuY29uZD1UeWUsRy5jb25mb3Jtcz1DeWUsRy5jb25zdGFudD1yRyxHLmNvdW50Qnk9bDBlLEcuY3JlYXRlPWJfZSxHLmN1cnJ5PVZwdCxHLmN1cnJ5UmlnaHQ9VXB0LEcuZGVib3VuY2U9cXB0LEcuZGVmYXVsdHM9d19lLEcuZGVmYXVsdHNEZWVwPVNfZSxHLmRlZmVyPWswZSxHLmRlbGF5PVIwZSxHLmRpZmZlcmVuY2U9ZWdlLEcuZGlmZmVyZW5jZUJ5PXJnZSxHLmRpZmZlcmVuY2VXaXRoPW5nZSxHLmRyb3A9aWdlLEcuZHJvcFJpZ2h0PW9nZSxHLmRyb3BSaWdodFdoaWxlPWFnZSxHLmRyb3BXaGlsZT1zZ2UsRy5maWxsPWxnZSxHLmZpbHRlcj11MGUsRy5mbGF0TWFwPXAwZSxHLmZsYXRNYXBEZWVwPWQwZSxHLmZsYXRNYXBEZXB0aD1tMGUsRy5mbGF0dGVuPUxwdCxHLmZsYXR0ZW5EZWVwPWNnZSxHLmZsYXR0ZW5EZXB0aD11Z2UsRy5mbGlwPU4wZSxHLmZsb3c9UHllLEcuZmxvd1JpZ2h0PUl5ZSxHLmZyb21QYWlycz1oZ2UsRy5mdW5jdGlvbnM9SV9lLEcuZnVuY3Rpb25zSW49TF9lLEcuZ3JvdXBCeT1nMGUsRy5pbml0aWFsPXBnZSxHLmludGVyc2VjdGlvbj1kZ2UsRy5pbnRlcnNlY3Rpb25CeT1tZ2UsRy5pbnRlcnNlY3Rpb25XaXRoPWdnZSxHLmludmVydD1SX2UsRy5pbnZlcnRCeT1OX2UsRy5pbnZva2VNYXA9eTBlLEcuaXRlcmF0ZWU9bkcsRy5rZXlCeT12MGUsRy5rZXlzPWZvLEcua2V5c0luPWRzLEcubWFwPWdJLEcubWFwS2V5cz1PX2UsRy5tYXBWYWx1ZXM9el9lLEcubWF0Y2hlcz1MeWUsRy5tYXRjaGVzUHJvcGVydHk9a3llLEcubWVtb2l6ZT15SSxHLm1lcmdlPUZfZSxHLm1lcmdlV2l0aD1RcHQsRy5tZXRob2Q9UnllLEcubWV0aG9kT2Y9TnllLEcubWl4aW49aUcsRy5uZWdhdGU9dkksRy5udGhBcmc9T3llLEcub21pdD1CX2UsRy5vbWl0Qnk9SF9lLEcub25jZT1EMGUsRy5vcmRlckJ5PXgwZSxHLm92ZXI9enllLEcub3ZlckFyZ3M9TzBlLEcub3ZlckV2ZXJ5PUZ5ZSxHLm92ZXJTb21lPUJ5ZSxHLnBhcnRpYWw9S3EsRy5wYXJ0aWFsUmlnaHQ9R3B0LEcucGFydGl0aW9uPWIwZSxHLnBpY2s9Vl9lLEcucGlja0J5PXRkdCxHLnByb3BlcnR5PXNkdCxHLnByb3BlcnR5T2Y9SHllLEcucHVsbD14Z2UsRy5wdWxsQWxsPVJwdCxHLnB1bGxBbGxCeT1iZ2UsRy5wdWxsQWxsV2l0aD13Z2UsRy5wdWxsQXQ9U2dlLEcucmFuZ2U9VnllLEcucmFuZ2VSaWdodD1VeWUsRy5yZWFyZz16MGUsRy5yZWplY3Q9TTBlLEcucmVtb3ZlPU1nZSxHLnJlc3Q9RjBlLEcucmV2ZXJzZT1qcSxHLnNhbXBsZVNpemU9VDBlLEcuc2V0PXFfZSxHLnNldFdpdGg9R19lLEcuc2h1ZmZsZT1DMGUsRy5zbGljZT1FZ2UsRy5zb3J0Qnk9STBlLEcuc29ydGVkVW5pcT1rZ2UsRy5zb3J0ZWRVbmlxQnk9UmdlLEcuc3BsaXQ9cHllLEcuc3ByZWFkPUIwZSxHLnRhaWw9TmdlLEcudGFrZT1EZ2UsRy50YWtlUmlnaHQ9T2dlLEcudGFrZVJpZ2h0V2hpbGU9emdlLEcudGFrZVdoaWxlPUZnZSxHLnRhcD1RZ2UsRy50aHJvdHRsZT1IMGUsRy50aHJ1PW1JLEcudG9BcnJheT0kcHQsRy50b1BhaXJzPWVkdCxHLnRvUGFpcnNJbj1yZHQsRy50b1BhdGg9anllLEcudG9QbGFpbk9iamVjdD1acHQsRy50cmFuc2Zvcm09V19lLEcudW5hcnk9VjBlLEcudW5pb249QmdlLEcudW5pb25CeT1IZ2UsRy51bmlvbldpdGg9VmdlLEcudW5pcT1VZ2UsRy51bmlxQnk9cWdlLEcudW5pcVdpdGg9R2dlLEcudW5zZXQ9WV9lLEcudW56aXA9WHEsRy51bnppcFdpdGg9TnB0LEcudXBkYXRlPWpfZSxHLnVwZGF0ZVdpdGg9WF9lLEcudmFsdWVzPVN4LEcudmFsdWVzSW49JF9lLEcud2l0aG91dD1XZ2UsRy53b3Jkcz1vZHQsRy53cmFwPVUwZSxHLnhvcj1ZZ2UsRy54b3JCeT1qZ2UsRy54b3JXaXRoPVhnZSxHLnppcD0kZ2UsRy56aXBPYmplY3Q9S2dlLEcuemlwT2JqZWN0RGVlcD1aZ2UsRy56aXBXaXRoPUpnZSxHLmVudHJpZXM9ZWR0LEcuZW50cmllc0luPXJkdCxHLmV4dGVuZD1KcHQsRy5leHRlbmRXaXRoPXdJLGlHKEcsRyksRy5hZGQ9JHllLEcuYXR0ZW1wdD1hZHQsRy5jYW1lbENhc2U9UV9lLEcuY2FwaXRhbGl6ZT1uZHQsRy5jZWlsPUt5ZSxHLmNsYW1wPUtfZSxHLmNsb25lPUcwZSxHLmNsb25lRGVlcD1ZMGUsRy5jbG9uZURlZXBXaXRoPWowZSxHLmNsb25lV2l0aD1XMGUsRy5jb25mb3Jtc1RvPVgwZSxHLmRlYnVycj1pZHQsRy5kZWZhdWx0VG89QXllLEcuZGl2aWRlPVp5ZSxHLmVuZHNXaXRoPXR5ZSxHLmVxPXR1LEcuZXNjYXBlPWV5ZSxHLmVzY2FwZVJlZ0V4cD1yeWUsRy5ldmVyeT1jMGUsRy5maW5kPWgwZSxHLmZpbmRJbmRleD1QcHQsRy5maW5kS2V5PU1fZSxHLmZpbmRMYXN0PWYwZSxHLmZpbmRMYXN0SW5kZXg9SXB0LEcuZmluZExhc3RLZXk9RV9lLEcuZmxvb3I9SnllLEcuZm9yRWFjaD1PcHQsRy5mb3JFYWNoUmlnaHQ9enB0LEcuZm9ySW49VF9lLEcuZm9ySW5SaWdodD1DX2UsRy5mb3JPd249QV9lLEcuZm9yT3duUmlnaHQ9UF9lLEcuZ2V0PVFxLEcuZ3Q9JDBlLEcuZ3RlPUswZSxHLmhhcz1rX2UsRy5oYXNJbj10RyxHLmhlYWQ9a3B0LEcuaWRlbnRpdHk9bXMsRy5pbmNsdWRlcz1fMGUsRy5pbmRleE9mPWZnZSxHLmluUmFuZ2U9Wl9lLEcuaW52b2tlPURfZSxHLmlzQXJndW1lbnRzPXNfLEcuaXNBcnJheT0kZSxHLmlzQXJyYXlCdWZmZXI9WjBlLEcuaXNBcnJheUxpa2U9cHMsRy5pc0FycmF5TGlrZU9iamVjdD1iaSxHLmlzQm9vbGVhbj1KMGUsRy5pc0J1ZmZlcj1ibSxHLmlzRGF0ZT1RMGUsRy5pc0VsZW1lbnQ9dF9lLEcuaXNFbXB0eT1lX2UsRy5pc0VxdWFsPXJfZSxHLmlzRXF1YWxXaXRoPW5fZSxHLmlzRXJyb3I9WnEsRy5pc0Zpbml0ZT1pX2UsRy5pc0Z1bmN0aW9uPWNwLEcuaXNJbnRlZ2VyPVdwdCxHLmlzTGVuZ3RoPXhJLEcuaXNNYXA9WXB0LEcuaXNNYXRjaD1vX2UsRy5pc01hdGNoV2l0aD1hX2UsRy5pc05hTj1zX2UsRy5pc05hdGl2ZT1sX2UsRy5pc05pbD11X2UsRy5pc051bGw9Y19lLEcuaXNOdW1iZXI9anB0LEcuaXNPYmplY3Q9cmksRy5pc09iamVjdExpa2U9bGksRy5pc1BsYWluT2JqZWN0PXpNLEcuaXNSZWdFeHA9SnEsRy5pc1NhZmVJbnRlZ2VyPWhfZSxHLmlzU2V0PVhwdCxHLmlzU3RyaW5nPWJJLEcuaXNTeW1ib2w9WXMsRy5pc1R5cGVkQXJyYXk9d3gsRy5pc1VuZGVmaW5lZD1mX2UsRy5pc1dlYWtNYXA9cF9lLEcuaXNXZWFrU2V0PWRfZSxHLmpvaW49X2dlLEcua2ViYWJDYXNlPW55ZSxHLmxhc3Q9amwsRy5sYXN0SW5kZXhPZj15Z2UsRy5sb3dlckNhc2U9aXllLEcubG93ZXJGaXJzdD1veWUsRy5sdD1tX2UsRy5sdGU9Z19lLEcubWF4PVF5ZSxHLm1heEJ5PXR2ZSxHLm1lYW49ZXZlLEcubWVhbkJ5PXJ2ZSxHLm1pbj1udmUsRy5taW5CeT1pdmUsRy5zdHViQXJyYXk9YUcsRy5zdHViRmFsc2U9c0csRy5zdHViT2JqZWN0PXF5ZSxHLnN0dWJTdHJpbmc9R3llLEcuc3R1YlRydWU9V3llLEcubXVsdGlwbHk9b3ZlLEcubnRoPXZnZSxHLm5vQ29uZmxpY3Q9RHllLEcubm9vcD1vRyxHLm5vdz1fSSxHLnBhZD1heWUsRy5wYWRFbmQ9c3llLEcucGFkU3RhcnQ9bHllLEcucGFyc2VJbnQ9Y3llLEcucmFuZG9tPUpfZSxHLnJlZHVjZT13MGUsRy5yZWR1Y2VSaWdodD1TMGUsRy5yZXBlYXQ9dXllLEcucmVwbGFjZT1oeWUsRy5yZXN1bHQ9VV9lLEcucm91bmQ9YXZlLEcucnVuSW5Db250ZXh0PXV0LEcuc2FtcGxlPUUwZSxHLnNpemU9QTBlLEcuc25ha2VDYXNlPWZ5ZSxHLnNvbWU9UDBlLEcuc29ydGVkSW5kZXg9VGdlLEcuc29ydGVkSW5kZXhCeT1DZ2UsRy5zb3J0ZWRJbmRleE9mPUFnZSxHLnNvcnRlZExhc3RJbmRleD1QZ2UsRy5zb3J0ZWRMYXN0SW5kZXhCeT1JZ2UsRy5zb3J0ZWRMYXN0SW5kZXhPZj1MZ2UsRy5zdGFydENhc2U9ZHllLEcuc3RhcnRzV2l0aD1teWUsRy5zdWJ0cmFjdD1zdmUsRy5zdW09bHZlLEcuc3VtQnk9Y3ZlLEcudGVtcGxhdGU9Z3llLEcudGltZXM9WXllLEcudG9GaW5pdGU9dXAsRy50b0ludGVnZXI9UWUsRy50b0xlbmd0aD1LcHQsRy50b0xvd2VyPV95ZSxHLnRvTnVtYmVyPVhsLEcudG9TYWZlSW50ZWdlcj1fX2UsRy50b1N0cmluZz1vbixHLnRvVXBwZXI9eXllLEcudHJpbT12eWUsRy50cmltRW5kPXh5ZSxHLnRyaW1TdGFydD1ieWUsRy50cnVuY2F0ZT13eWUsRy51bmVzY2FwZT1TeWUsRy51bmlxdWVJZD1YeWUsRy51cHBlckNhc2U9TXllLEcudXBwZXJGaXJzdD1lRyxHLmVhY2g9T3B0LEcuZWFjaFJpZ2h0PXpwdCxHLmZpcnN0PWtwdCxpRyhHLGZ1bmN0aW9uKCl7dmFyIG09e307cmV0dXJuIGRoKEcsZnVuY3Rpb24odixUKXt1bi5jYWxsKEcucHJvdG90eXBlLFQpfHwobVtUXT12KX0pLG19KCkse2NoYWluOiExfSksRy5WRVJTSU9OPXQsVWwoWyJiaW5kIiwiYmluZEtleSIsImN1cnJ5IiwiY3VycnlSaWdodCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiXSxmdW5jdGlvbihtKXtHW21dLnBsYWNlaG9sZGVyPUd9KSxVbChbImRyb3AiLCJ0YWtlIl0sZnVuY3Rpb24obSx2KXtnci5wcm90b3R5cGVbbV09ZnVuY3Rpb24oVCl7VD1UPT09ZT8xOmppKFFlKFQpLDApO3ZhciBOPXRoaXMuX19maWx0ZXJlZF9fJiYhdj9uZXcgZ3IodGhpcyk6dGhpcy5jbG9uZSgpO3JldHVybiBOLl9fZmlsdGVyZWRfXz9OLl9fdGFrZUNvdW50X189ZWEoVCxOLl9fdGFrZUNvdW50X18pOk4uX192aWV3c19fLnB1c2goe3NpemU6ZWEoVCxydCksdHlwZTptKyhOLl9fZGlyX188MD8iUmlnaHQiOiIiKX0pLE59LGdyLnByb3RvdHlwZVttKyJSaWdodCJdPWZ1bmN0aW9uKFQpe3JldHVybiB0aGlzLnJldmVyc2UoKVttXShUKS5yZXZlcnNlKCl9fSksVWwoWyJmaWx0ZXIiLCJtYXAiLCJ0YWtlV2hpbGUiXSxmdW5jdGlvbihtLHYpe3ZhciBUPXYrMSxOPVQ9PUx8fFQ9PUY7Z3IucHJvdG90eXBlW21dPWZ1bmN0aW9uKFYpe3ZhciBZPXRoaXMuY2xvbmUoKTtyZXR1cm4gWS5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOmtlKFYsMyksdHlwZTpUfSksWS5fX2ZpbHRlcmVkX189WS5fX2ZpbHRlcmVkX198fE4sWX19KSxVbChbImhlYWQiLCJsYXN0Il0sZnVuY3Rpb24obSx2KXt2YXIgVD0idGFrZSIrKHY/IlJpZ2h0IjoiIik7Z3IucHJvdG90eXBlW21dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbVF0oMSkudmFsdWUoKVswXX19KSxVbChbImluaXRpYWwiLCJ0YWlsIl0sZnVuY3Rpb24obSx2KXt2YXIgVD0iZHJvcCIrKHY/IiI6IlJpZ2h0Iik7Z3IucHJvdG90eXBlW21dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19maWx0ZXJlZF9fP25ldyBncih0aGlzKTp0aGlzW1RdKDEpfX0pLGdyLnByb3RvdHlwZS5jb21wYWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKG1zKX0sZ3IucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMuZmlsdGVyKG0pLmhlYWQoKX0sZ3IucHJvdG90eXBlLmZpbmRMYXN0PWZ1bmN0aW9uKG0pe3JldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKG0pfSxnci5wcm90b3R5cGUuaW52b2tlTWFwPW5yKGZ1bmN0aW9uKG0sdil7cmV0dXJuIHR5cGVvZiBtPT0iZnVuY3Rpb24iP25ldyBncih0aGlzKTp0aGlzLm1hcChmdW5jdGlvbihUKXtyZXR1cm4gTE0oVCxtLHYpfSl9KSxnci5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKG0pe3JldHVybiB0aGlzLmZpbHRlcih2SShrZShtKSkpfSxnci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24obSx2KXttPVFlKG0pO3ZhciBUPXRoaXM7cmV0dXJuIFQuX19maWx0ZXJlZF9fJiYobT4wfHx2PDApP25ldyBncihUKToobTwwP1Q9VC50YWtlUmlnaHQoLW0pOm0mJihUPVQuZHJvcChtKSksdiE9PWUmJih2PVFlKHYpLFQ9djwwP1QuZHJvcFJpZ2h0KC12KTpULnRha2Uodi1tKSksVCl9LGdyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKG0pLnJldmVyc2UoKX0sZ3IucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWtlKHJ0KX0sZGgoZ3IucHJvdG90eXBlLGZ1bmN0aW9uKG0sdil7dmFyIFQ9L14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QodiksTj0vXig/OmhlYWR8bGFzdCkkLy50ZXN0KHYpLFY9R1tOPyJ0YWtlIisodj09Imxhc3QiPyJSaWdodCI6IiIpOnZdLFk9Tnx8L15maW5kLy50ZXN0KHYpOyFWfHwoRy5wcm90b3R5cGVbdl09ZnVuY3Rpb24oKXt2YXIgSj10aGlzLl9fd3JhcHBlZF9fLGl0PU4/WzFdOmFyZ3VtZW50cyxmdD1KIGluc3RhbmNlb2YgZ3IsRHQ9aXRbMF0sT3Q9ZnR8fCRlKEopLFZ0PWZ1bmN0aW9uKHByKXt2YXIgeXI9Vi5hcHBseShHLHBtKFtwcl0saXQpKTtyZXR1cm4gTiYmb2U/eXJbMF06eXJ9O090JiZUJiZ0eXBlb2YgRHQ9PSJmdW5jdGlvbiImJkR0Lmxlbmd0aCE9MSYmKGZ0PU90PSExKTt2YXIgb2U9dGhpcy5fX2NoYWluX18sVGU9ISF0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCxOZT1ZJiYhb2UsZXI9ZnQmJiFUZTtpZighWSYmT3Qpe0o9ZXI/SjpuZXcgZ3IodGhpcyk7dmFyIERlPW0uYXBwbHkoSixpdCk7cmV0dXJuIERlLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6bUksYXJnczpbVnRdLHRoaXNBcmc6ZX0pLG5ldyBHbChEZSxvZSl9cmV0dXJuIE5lJiZlcj9tLmFwcGx5KHRoaXMsaXQpOihEZT10aGlzLnRocnUoVnQpLE5lP04/RGUudmFsdWUoKVswXTpEZS52YWx1ZSgpOkRlKX0pfSksVWwoWyJwb3AiLCJwdXNoIiwic2hpZnQiLCJzb3J0Iiwic3BsaWNlIiwidW5zaGlmdCJdLGZ1bmN0aW9uKG0pe3ZhciB2PVY2W21dLFQ9L14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG0pPyJ0YXAiOiJ0aHJ1IixOPS9eKD86cG9wfHNoaWZ0KSQvLnRlc3QobSk7Ry5wcm90b3R5cGVbbV09ZnVuY3Rpb24oKXt2YXIgVj1hcmd1bWVudHM7aWYoTiYmIXRoaXMuX19jaGFpbl9fKXt2YXIgWT10aGlzLnZhbHVlKCk7cmV0dXJuIHYuYXBwbHkoJGUoWSk/WTpbXSxWKX1yZXR1cm4gdGhpc1tUXShmdW5jdGlvbihKKXtyZXR1cm4gdi5hcHBseSgkZShKKT9KOltdLFYpfSl9fSksZGgoZ3IucHJvdG90eXBlLGZ1bmN0aW9uKG0sdil7dmFyIFQ9R1t2XTtpZihUKXt2YXIgTj1ULm5hbWUrIiI7dW4uY2FsbChfeCxOKXx8KF94W05dPVtdKSxfeFtOXS5wdXNoKHtuYW1lOnYsZnVuYzpUfSl9fSksX3hbbEkoZSxnKS5uYW1lXT1be25hbWU6IndyYXBwZXIiLGZ1bmM6ZX1dLGdyLnByb3RvdHlwZS5jbG9uZT1TZGUsZ3IucHJvdG90eXBlLnJldmVyc2U9TWRlLGdyLnByb3RvdHlwZS52YWx1ZT1FZGUsRy5wcm90b3R5cGUuYXQ9dDBlLEcucHJvdG90eXBlLmNoYWluPWUwZSxHLnByb3RvdHlwZS5jb21taXQ9cjBlLEcucHJvdG90eXBlLm5leHQ9bjBlLEcucHJvdG90eXBlLnBsYW50PW8wZSxHLnByb3RvdHlwZS5yZXZlcnNlPWEwZSxHLnByb3RvdHlwZS50b0pTT049Ry5wcm90b3R5cGUudmFsdWVPZj1HLnByb3RvdHlwZS52YWx1ZT1zMGUsRy5wcm90b3R5cGUuZmlyc3Q9Ry5wcm90b3R5cGUuaGVhZCxNTSYmKEcucHJvdG90eXBlW01NXT1pMGUpLEd9LG1tPXJkZSgpO3R5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJnR5cGVvZiBkZWZpbmUuYW1kPT0ib2JqZWN0IiYmZGVmaW5lLmFtZD8oaG8uXz1tbSxkZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gbW19KSk6UTA/KChRMC5leHBvcnRzPW1tKS5fPW1tLG5xLl89bW0pOmhvLl89bW19KS5jYWxsKGt4KX0pO2Z1bmN0aW9uIGxfdCgpe2Zvcih2YXIgZT0wLHQ9YXJndW1lbnRzLmxlbmd0aCxyPXt9LG47ZTx0OysrZSl7aWYoIShuPWFyZ3VtZW50c1tlXSsiIil8fG4gaW4gcnx8L1tccy5dLy50ZXN0KG4pKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK24pO3Jbbl09W119cmV0dXJuIG5ldyAkOShyKX1mdW5jdGlvbiAkOShlKXt0aGlzLl89ZX1mdW5jdGlvbiBvMmUoZSx0KXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHIpe3ZhciBuPSIiLGk9ci5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49ci5zbGljZShpKzEpLHI9ci5zbGljZSgwLGkpKSxyJiYhdC5oYXNPd25Qcm9wZXJ0eShyKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIityKTtyZXR1cm57dHlwZTpyLG5hbWU6bn19KX1mdW5jdGlvbiBhMmUoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLGk7cjxuOysrcilpZigoaT1lW3JdKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZX1mdW5jdGlvbiBzX3QoZSx0LHIpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilpZihlW25dLm5hbWU9PT10KXtlW25dPWkyZSxlPWUuc2xpY2UoMCxuKS5jb25jYXQoZS5zbGljZShuKzEpKTticmVha31yZXR1cm4gciE9bnVsbCYmZS5wdXNoKHtuYW1lOnQsdmFsdWU6cn0pLGV9dmFyIGkyZSx5cyxjX3Q9TSgoKT0+e2kyZT17dmFsdWU6ZnVuY3Rpb24oKXt9fTskOS5wcm90b3R5cGU9bF90LnByb3RvdHlwZT17Y29uc3RydWN0b3I6JDksb246ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl8sbj1vMmUoZSsiIixyKSxpLG89LTEsYT1uLmxlbmd0aDtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcig7KytvPGE7KWlmKChpPShlPW5bb10pLnR5cGUpJiYoaT1hMmUocltpXSxlLm5hbWUpKSlyZXR1cm4gaTtyZXR1cm59aWYodCE9bnVsbCYmdHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK3QpO2Zvcig7KytvPGE7KWlmKGk9KGU9bltvXSkudHlwZSlyW2ldPXNfdChyW2ldLGUubmFtZSx0KTtlbHNlIGlmKHQ9PW51bGwpZm9yKGkgaW4gcilyW2ldPXNfdChyW2ldLGUubmFtZSxudWxsKTtyZXR1cm4gdGhpc30sY29weTpmdW5jdGlvbigpe3ZhciBlPXt9LHQ9dGhpcy5fO2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXS5zbGljZSgpO3JldHVybiBuZXcgJDkoZSl9LGNhbGw6ZnVuY3Rpb24oZSx0KXtpZigoaT1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciByPW5ldyBBcnJheShpKSxuPTAsaSxvO248aTsrK24pcltuXT1hcmd1bWVudHNbbisyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2UpO2ZvcihvPXRoaXMuX1tlXSxuPTAsaT1vLmxlbmd0aDtuPGk7KytuKW9bbl0udmFsdWUuYXBwbHkodCxyKX0sYXBwbHk6ZnVuY3Rpb24oZSx0LHIpe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrZSk7Zm9yKHZhciBuPXRoaXMuX1tlXSxpPTAsbz1uLmxlbmd0aDtpPG87KytpKW5baV0udmFsdWUuYXBwbHkodCxyKX19O3lzPWxfdH0pO3ZhciBrbT1NKCgpPT57Y190KCl9KTtmdW5jdGlvbiBnWShlKXtyZXR1cm4rZX12YXIgeXZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBfWShlKXtyZXR1cm4gZSplfWZ1bmN0aW9uIHlZKGUpe3JldHVybiBlKigyLWUpfWZ1bmN0aW9uIENMKGUpe3JldHVybigoZSo9Mik8PTE/ZSplOi0tZSooMi1lKSsxKS8yfXZhciB2dnQ9TSgoKT0+e30pO2Z1bmN0aW9uIHZZKGUpe3JldHVybiBlKmUqZX1mdW5jdGlvbiB4WShlKXtyZXR1cm4tLWUqZSplKzF9ZnVuY3Rpb24gdnMoZSl7cmV0dXJuKChlKj0yKTw9MT9lKmUqZTooZS09MikqZSplKzIpLzJ9dmFyIHh2dD1NKCgpPT57fSk7dmFyIGJZLHdZLFNZLEFMLGJ2dD1NKCgpPT57Ylk9Myx3WT1mdW5jdGlvbiBlKHQpe3Q9K3Q7ZnVuY3Rpb24gcihuKXtyZXR1cm4gTWF0aC5wb3cobix0KX1yZXR1cm4gci5leHBvbmVudD1lLHJ9KGJZKSxTWT1mdW5jdGlvbiBlKHQpe3Q9K3Q7ZnVuY3Rpb24gcihuKXtyZXR1cm4gMS1NYXRoLnBvdygxLW4sdCl9cmV0dXJuIHIuZXhwb25lbnQ9ZSxyfShiWSksQUw9ZnVuY3Rpb24gZSh0KXt0PSt0O2Z1bmN0aW9uIHIobil7cmV0dXJuKChuKj0yKTw9MT9NYXRoLnBvdyhuLHQpOjItTWF0aC5wb3coMi1uLHQpKS8yfXJldHVybiByLmV4cG9uZW50PWUscn0oYlkpfSk7ZnVuY3Rpb24gTVkoZSl7cmV0dXJuK2U9PTE/MToxLU1hdGguY29zKGUqU3Z0KX1mdW5jdGlvbiBFWShlKXtyZXR1cm4gTWF0aC5zaW4oZSpTdnQpfWZ1bmN0aW9uIFBMKGUpe3JldHVybigxLU1hdGguY29zKHd2dCplKSkvMn12YXIgd3Z0LFN2dCxNdnQ9TSgoKT0+e3d2dD1NYXRoLlBJLFN2dD13dnQvMn0pO2Z1bmN0aW9uIE5oKGUpe3JldHVybihNYXRoLnBvdygyLC0xMCplKS0uMDAwOTc2NTYyNSkqMS4wMDA5Nzc1MTcxMDY1NDk0fXZhciBUWT1NKCgpPT57fSk7ZnVuY3Rpb24gQ1koZSl7cmV0dXJuIE5oKDEtK2UpfWZ1bmN0aW9uIEFZKGUpe3JldHVybiAxLU5oKGUpfWZ1bmN0aW9uIElMKGUpe3JldHVybigoZSo9Mik8PTE/TmgoMS1lKToyLU5oKGUtMSkpLzJ9dmFyIEV2dD1NKCgpPT57VFkoKX0pO2Z1bmN0aW9uIFBZKGUpe3JldHVybiAxLU1hdGguc3FydCgxLWUqZSl9ZnVuY3Rpb24gSVkoZSl7cmV0dXJuIE1hdGguc3FydCgxLSAtLWUqZSl9ZnVuY3Rpb24gTEwoZSl7cmV0dXJuKChlKj0yKTw9MT8xLU1hdGguc3FydCgxLWUqZSk6TWF0aC5zcXJ0KDEtKGUtPTIpKmUpKzEpLzJ9dmFyIFR2dD1NKCgpPT57fSk7ZnVuY3Rpb24ga1koZSl7cmV0dXJuIDEtUF8oMS1lKX1mdW5jdGlvbiBQXyhlKXtyZXR1cm4oZT0rZSk8TFk/a0wqZSplOmU8UXdlP2tMKihlLT1Kd2UpKmUrdFNlOmU8clNlP2tMKihlLT1lU2UpKmUrblNlOmtMKihlLT1pU2UpKmUrb1NlfWZ1bmN0aW9uIFJZKGUpe3JldHVybigoZSo9Mik8PTE/MS1QXygxLWUpOlBfKGUtMSkrMSkvMn12YXIgTFksSndlLFF3ZSx0U2UsZVNlLHJTZSxuU2UsaVNlLG9TZSxrTCxDdnQ9TSgoKT0+e0xZPS4zNjM2MzYzNjM2MzYzNjM2NSxKd2U9Ni8xMSxRd2U9OC8xMSx0U2U9My80LGVTZT05LzExLHJTZT0xMC8xMSxuU2U9MTUvMTYsaVNlPTIxLzIyLG9TZT02My82NCxrTD0xL0xZL0xZfSk7dmFyIE5ZLERZLE9ZLFJMLEF2dD1NKCgpPT57Tlk9MS43MDE1OCxEWT1mdW5jdGlvbiBlKHQpe3Q9K3Q7ZnVuY3Rpb24gcihuKXtyZXR1cm4obj0rbikqbioodCoobi0xKStuKX1yZXR1cm4gci5vdmVyc2hvb3Q9ZSxyfShOWSksT1k9ZnVuY3Rpb24gZSh0KXt0PSt0O2Z1bmN0aW9uIHIobil7cmV0dXJuLS1uKm4qKChuKzEpKnQrbikrMX1yZXR1cm4gci5vdmVyc2hvb3Q9ZSxyfShOWSksUkw9ZnVuY3Rpb24gZSh0KXt0PSt0O2Z1bmN0aW9uIHIobil7cmV0dXJuKChuKj0yKTwxP24qbiooKHQrMSkqbi10KToobi09MikqbiooKHQrMSkqbit0KSsyKS8yfXJldHVybiByLm92ZXJzaG9vdD1lLHJ9KE5ZKX0pO3ZhciB3Yix6WSxGWSxCWSxOTCxIWSxQdnQ9TSgoKT0+e1RZKCk7d2I9MipNYXRoLlBJLHpZPTEsRlk9LjMsQlk9ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPU1hdGguYXNpbigxLyh0PU1hdGgubWF4KDEsdCkpKSooci89d2IpO2Z1bmN0aW9uIGkobyl7cmV0dXJuIHQqTmgoLSAtLW8pKk1hdGguc2luKChuLW8pL3IpfXJldHVybiBpLmFtcGxpdHVkZT1mdW5jdGlvbihvKXtyZXR1cm4gZShvLHIqd2IpfSxpLnBlcmlvZD1mdW5jdGlvbihvKXtyZXR1cm4gZSh0LG8pfSxpfSh6WSxGWSksTkw9ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPU1hdGguYXNpbigxLyh0PU1hdGgubWF4KDEsdCkpKSooci89d2IpO2Z1bmN0aW9uIGkobyl7cmV0dXJuIDEtdCpOaChvPStvKSpNYXRoLnNpbigobytuKS9yKX1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24obyl7cmV0dXJuIGUobyxyKndiKX0saS5wZXJpb2Q9ZnVuY3Rpb24obyl7cmV0dXJuIGUodCxvKX0saX0oelksRlkpLEhZPWZ1bmN0aW9uIGUodCxyKXt2YXIgbj1NYXRoLmFzaW4oMS8odD1NYXRoLm1heCgxLHQpKSkqKHIvPXdiKTtmdW5jdGlvbiBpKG8pe3JldHVybigobz1vKjItMSk8MD90Kk5oKC1vKSpNYXRoLnNpbigobi1vKS9yKToyLXQqTmgobykqTWF0aC5zaW4oKG4rbykvcikpLzJ9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG8pe3JldHVybiBlKG8scip3Yil9LGkucGVyaW9kPWZ1bmN0aW9uKG8pe3JldHVybiBlKHQsbyl9LGl9KHpZLEZZKX0pO3ZhciBJdnQ9e307JHMoSXZ0LHtlYXNlQmFjazooKT0+UkwsZWFzZUJhY2tJbjooKT0+RFksZWFzZUJhY2tJbk91dDooKT0+UkwsZWFzZUJhY2tPdXQ6KCk9Pk9ZLGVhc2VCb3VuY2U6KCk9PlBfLGVhc2VCb3VuY2VJbjooKT0+a1ksZWFzZUJvdW5jZUluT3V0OigpPT5SWSxlYXNlQm91bmNlT3V0OigpPT5QXyxlYXNlQ2lyY2xlOigpPT5MTCxlYXNlQ2lyY2xlSW46KCk9PlBZLGVhc2VDaXJjbGVJbk91dDooKT0+TEwsZWFzZUNpcmNsZU91dDooKT0+SVksZWFzZUN1YmljOigpPT52cyxlYXNlQ3ViaWNJbjooKT0+dlksZWFzZUN1YmljSW5PdXQ6KCk9PnZzLGVhc2VDdWJpY091dDooKT0+eFksZWFzZUVsYXN0aWM6KCk9Pk5MLGVhc2VFbGFzdGljSW46KCk9PkJZLGVhc2VFbGFzdGljSW5PdXQ6KCk9PkhZLGVhc2VFbGFzdGljT3V0OigpPT5OTCxlYXNlRXhwOigpPT5JTCxlYXNlRXhwSW46KCk9PkNZLGVhc2VFeHBJbk91dDooKT0+SUwsZWFzZUV4cE91dDooKT0+QVksZWFzZUxpbmVhcjooKT0+Z1ksZWFzZVBvbHk6KCk9PkFMLGVhc2VQb2x5SW46KCk9PndZLGVhc2VQb2x5SW5PdXQ6KCk9PkFMLGVhc2VQb2x5T3V0OigpPT5TWSxlYXNlUXVhZDooKT0+Q0wsZWFzZVF1YWRJbjooKT0+X1ksZWFzZVF1YWRJbk91dDooKT0+Q0wsZWFzZVF1YWRPdXQ6KCk9PnlZLGVhc2VTaW46KCk9PlBMLGVhc2VTaW5JbjooKT0+TVksZWFzZVNpbkluT3V0OigpPT5QTCxlYXNlU2luT3V0OigpPT5FWX0pO3ZhciBJXz1NKCgpPT57eXZ0KCk7dnZ0KCk7eHZ0KCk7YnZ0KCk7TXZ0KCk7RXZ0KCk7VHZ0KCk7Q3Z0KCk7QXZ0KCk7UHZ0KCl9KTtmdW5jdGlvbiBxTCgpe31mdW5jdGlvbiBHdnQoZSx0KXt2YXIgcj1uZXcgcUw7aWYoZSBpbnN0YW5jZW9mIHFMKWUuZWFjaChmdW5jdGlvbihzLGwpe3Iuc2V0KGwscyl9KTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpe3ZhciBuPS0xLGk9ZS5sZW5ndGgsbztpZih0PT1udWxsKWZvcig7KytuPGk7KXIuc2V0KG4sZVtuXSk7ZWxzZSBmb3IoOysrbjxpOylyLnNldCh0KG89ZVtuXSxuLGUpLG8pfWVsc2UgaWYoZSlmb3IodmFyIGEgaW4gZSlyLnNldChhLGVbYV0pO3JldHVybiByfXZhciB0bCxaaSxHTD1NKCgpPT57dGw9IiQiO3FMLnByb3RvdHlwZT1HdnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxTCxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRsK2UgaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzW3RsK2VdfSxzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpc1t0bCtlXT10LHRoaXN9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10bCtlO3JldHVybiB0IGluIHRoaXMmJmRlbGV0ZSB0aGlzW3RdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT10bCYmZGVsZXRlIHRoaXNbZV19LGtleXM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09dGwmJmUucHVzaCh0LnNsaWNlKDEpKTtyZXR1cm4gZX0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PXRsJiZlLnB1c2godGhpc1t0XSk7cmV0dXJuIGV9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09dGwmJmUucHVzaCh7a2V5OnQuc2xpY2UoMSksdmFsdWU6dGhpc1t0XX0pO3JldHVybiBlfSxzaXplOmZ1bmN0aW9uKCl7dmFyIGU9MDtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09dGwmJisrZTtyZXR1cm4gZX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcylpZihlWzBdPT09dGwpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PXRsJiZlKHRoaXNbdF0sdC5zbGljZSgxKSx0aGlzKX19O1ppPUd2dH0pO2Z1bmN0aW9uIGp2dCgpe3ZhciBlPVtdLHQ9W10scixuLGk7ZnVuY3Rpb24gbyhzLGwsYyx1KXtpZihsPj1lLmxlbmd0aClyZXR1cm4gciE9bnVsbCYmcy5zb3J0KHIpLG4hPW51bGw/bihzKTpzO2Zvcih2YXIgaD0tMSxmPXMubGVuZ3RoLHA9ZVtsKytdLGQsZyxfPVppKCkseSx4PWMoKTsrK2g8ZjspKHk9Xy5nZXQoZD1wKGc9c1toXSkrIiIpKT95LnB1c2goZyk6Xy5zZXQoZCxbZ10pO3JldHVybiBfLmVhY2goZnVuY3Rpb24oYixTKXt1KHgsUyxvKGIsbCxjLHUpKX0pLHh9ZnVuY3Rpb24gYShzLGwpe2lmKCsrbD5lLmxlbmd0aClyZXR1cm4gczt2YXIgYyx1PXRbbC0xXTtyZXR1cm4gbiE9bnVsbCYmbD49ZS5sZW5ndGg/Yz1zLmVudHJpZXMoKTooYz1bXSxzLmVhY2goZnVuY3Rpb24oaCxmKXtjLnB1c2goe2tleTpmLHZhbHVlczphKGgsbCl9KX0pKSx1IT1udWxsP2Muc29ydChmdW5jdGlvbihoLGYpe3JldHVybiB1KGgua2V5LGYua2V5KX0pOmN9cmV0dXJuIGk9e29iamVjdDpmdW5jdGlvbihzKXtyZXR1cm4gbyhzLDAsU1NlLE1TZSl9LG1hcDpmdW5jdGlvbihzKXtyZXR1cm4gbyhzLDAsV3Z0LFl2dCl9LGVudHJpZXM6ZnVuY3Rpb24ocyl7cmV0dXJuIGEobyhzLDAsV3Z0LFl2dCksMCl9LGtleTpmdW5jdGlvbihzKXtyZXR1cm4gZS5wdXNoKHMpLGl9LHNvcnRLZXlzOmZ1bmN0aW9uKHMpe3JldHVybiB0W2UubGVuZ3RoLTFdPXMsaX0sc29ydFZhbHVlczpmdW5jdGlvbihzKXtyZXR1cm4gcj1zLGl9LHJvbGx1cDpmdW5jdGlvbihzKXtyZXR1cm4gbj1zLGl9fX1mdW5jdGlvbiBTU2UoKXtyZXR1cm57fX1mdW5jdGlvbiBNU2UoZSx0LHIpe2VbdF09cn1mdW5jdGlvbiBXdnQoKXtyZXR1cm4gWmkoKX1mdW5jdGlvbiBZdnQoZSx0LHIpe2Uuc2V0KHQscil9dmFyIFh2dD1NKCgpPT57R0woKX0pO2Z1bmN0aW9uIFdMKCl7fWZ1bmN0aW9uICR2dChlLHQpe3ZhciByPW5ldyBXTDtpZihlIGluc3RhbmNlb2YgV0wpZS5lYWNoKGZ1bmN0aW9uKG8pe3IuYWRkKG8pfSk7ZWxzZSBpZihlKXt2YXIgbj0tMSxpPWUubGVuZ3RoO2lmKHQ9PW51bGwpZm9yKDsrK248aTspci5hZGQoZVtuXSk7ZWxzZSBmb3IoOysrbjxpOylyLmFkZCh0KGVbbl0sbixlKSl9cmV0dXJuIHJ9dmFyIGtfLEt2dCxadnQ9TSgoKT0+e0dMKCk7a189WmkucHJvdG90eXBlO1dMLnByb3RvdHlwZT0kdnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpXTCxoYXM6a18uaGFzLGFkZDpmdW5jdGlvbihlKXtyZXR1cm4gZSs9IiIsdGhpc1t0bCtlXT1lLHRoaXN9LHJlbW92ZTprXy5yZW1vdmUsY2xlYXI6a18uY2xlYXIsdmFsdWVzOmtfLmtleXMsc2l6ZTprXy5zaXplLGVtcHR5OmtfLmVtcHR5LGVhY2g6a18uZWFjaH07S3Z0PSR2dH0pO2Z1bmN0aW9uIFlMKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdH12YXIgSnZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBRdnQoZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKGVbcl0pO3JldHVybiB0fXZhciB0MXQ9TSgoKT0+e30pO2Z1bmN0aW9uIGUxdChlKXt2YXIgdD1bXTtmb3IodmFyIHIgaW4gZSl0LnB1c2goe2tleTpyLHZhbHVlOmVbcl19KTtyZXR1cm4gdH12YXIgcjF0PU0oKCk9Pnt9KTt2YXIgRWI9TSgoKT0+e1h2dCgpO1p2dCgpO0dMKCk7SnZ0KCk7dDF0KCk7cjF0KCl9KTtmdW5jdGlvbiB1MXQoZSl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7IitlLm1hcChmdW5jdGlvbih0LHIpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KSsiOiBkWyIrcisnXSB8fCAiIid9KS5qb2luKCIsIikrIn0iKX1mdW5jdGlvbiBSU2UoZSx0KXt2YXIgcj11MXQoZSk7cmV0dXJuIGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQocihuKSxpLGUpfX1mdW5jdGlvbiBjMXQoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxyPVtdO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24obil7Zm9yKHZhciBpIGluIG4paSBpbiB0fHxyLnB1c2godFtpXT1pKX0pLHJ9ZnVuY3Rpb24gYnMoZSx0KXt2YXIgcj1lKyIiLG49ci5sZW5ndGg7cmV0dXJuIG48dD9uZXcgQXJyYXkodC1uKzEpLmpvaW4oMCkrcjpyfWZ1bmN0aW9uIE5TZShlKXtyZXR1cm4gZTwwPyItIiticygtZSw2KTplPjk5OTk/IisiK2JzKGUsNik6YnMoZSw0KX1mdW5jdGlvbiBEU2UoZSl7dmFyIHQ9ZS5nZXRVVENIb3VycygpLHI9ZS5nZXRVVENNaW51dGVzKCksbj1lLmdldFVUQ1NlY29uZHMoKSxpPWUuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7cmV0dXJuIGlzTmFOKGUpPyJJbnZhbGlkIERhdGUiOk5TZShlLmdldFVUQ0Z1bGxZZWFyKCksNCkrIi0iK2JzKGUuZ2V0VVRDTW9udGgoKSsxLDIpKyItIiticyhlLmdldFVUQ0RhdGUoKSwyKSsoaT8iVCIrYnModCwyKSsiOiIrYnMociwyKSsiOiIrYnMobiwyKSsiLiIrYnMoaSwzKSsiWiI6bj8iVCIrYnModCwyKSsiOiIrYnMociwyKSsiOiIrYnMobiwyKSsiWiI6cnx8dD8iVCIrYnModCwyKSsiOiIrYnMociwyKSsiWiI6IiIpfWZ1bmN0aW9uIFdtKGUpe3ZhciB0PW5ldyBSZWdFeHAoJ1siJytlK2AKXHJdYCkscj1lLmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gbihoLGYpe3ZhciBwLGQsZz1pKGgsZnVuY3Rpb24oXyx5KXtpZihwKXJldHVybiBwKF8seS0xKTtkPV8scD1mP1JTZShfLGYpOnUxdChfKX0pO3JldHVybiBnLmNvbHVtbnM9ZHx8W10sZ31mdW5jdGlvbiBpKGgsZil7dmFyIHA9W10sZD1oLmxlbmd0aCxnPTAsXz0wLHkseD1kPD0wLGI9ITE7aC5jaGFyQ29kZUF0KGQtMSk9PT1CRSYmLS1kLGguY2hhckNvZGVBdChkLTEpPT09cmomJi0tZDtmdW5jdGlvbiBTKCl7aWYoeClyZXR1cm4gdGo7aWYoYilyZXR1cm4gYj0hMSxsMXQ7dmFyIFAsaz1nLE87aWYoaC5jaGFyQ29kZUF0KGspPT09ZWope2Zvcig7ZysrPGQmJmguY2hhckNvZGVBdChnKSE9PWVqfHxoLmNoYXJDb2RlQXQoKytnKT09PWVqOyk7cmV0dXJuKFA9Zyk+PWQ/eD0hMDooTz1oLmNoYXJDb2RlQXQoZysrKSk9PT1CRT9iPSEwOk89PT1yaiYmKGI9ITAsaC5jaGFyQ29kZUF0KGcpPT09QkUmJisrZyksaC5zbGljZShrKzEsUC0xKS5yZXBsYWNlKC8iIi9nLCciJyl9Zm9yKDtnPGQ7KXtpZigoTz1oLmNoYXJDb2RlQXQoUD1nKyspKT09PUJFKWI9ITA7ZWxzZSBpZihPPT09cmopYj0hMCxoLmNoYXJDb2RlQXQoZyk9PT1CRSYmKytnO2Vsc2UgaWYoTyE9PXIpY29udGludWU7cmV0dXJuIGguc2xpY2UoayxQKX1yZXR1cm4geD0hMCxoLnNsaWNlKGssZCl9Zm9yKDsoeT1TKCkpIT09dGo7KXtmb3IodmFyIEM9W107eSE9PWwxdCYmeSE9PXRqOylDLnB1c2goeSkseT1TKCk7ZiYmKEM9ZihDLF8rKykpPT1udWxsfHxwLnB1c2goQyl9cmV0dXJuIHB9ZnVuY3Rpb24gbyhoLGYpe3JldHVybiBoLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gZi5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIHUocFtkXSl9KS5qb2luKGUpfSl9ZnVuY3Rpb24gYShoLGYpe3JldHVybiBmPT1udWxsJiYoZj1jMXQoaCkpLFtmLm1hcCh1KS5qb2luKGUpXS5jb25jYXQobyhoLGYpKS5qb2luKGAKYCl9ZnVuY3Rpb24gcyhoLGYpe3JldHVybiBmPT1udWxsJiYoZj1jMXQoaCkpLG8oaCxmKS5qb2luKGAKYCl9ZnVuY3Rpb24gbChoKXtyZXR1cm4gaC5tYXAoYykuam9pbihgCmApfWZ1bmN0aW9uIGMoaCl7cmV0dXJuIGgubWFwKHUpLmpvaW4oZSl9ZnVuY3Rpb24gdShoKXtyZXR1cm4gaD09bnVsbD8iIjpoIGluc3RhbmNlb2YgRGF0ZT9EU2UoaCk6dC50ZXN0KGgrPSIiKT8nIicraC5yZXBsYWNlKC8iL2csJyIiJykrJyInOmh9cmV0dXJue3BhcnNlOm4scGFyc2VSb3dzOmksZm9ybWF0OmEsZm9ybWF0Qm9keTpzLGZvcm1hdFJvd3M6bCxmb3JtYXRSb3c6Yyxmb3JtYXRWYWx1ZTp1fX12YXIgbDF0LHRqLGVqLEJFLHJqLFpMPU0oKCk9PntsMXQ9e30sdGo9e30sZWo9MzQsQkU9MTAscmo9MTN9KTt2YXIgUl8sVGIsaDF0LGYxdCxwMXQsZDF0LG0xdCxnMXQsXzF0PU0oKCk9PntaTCgpO1JfPVdtKCIsIiksVGI9Ul8ucGFyc2UsaDF0PVJfLnBhcnNlUm93cyxmMXQ9Ul8uZm9ybWF0LHAxdD1SXy5mb3JtYXRCb2R5LGQxdD1SXy5mb3JtYXRSb3dzLG0xdD1SXy5mb3JtYXRSb3csZzF0PVJfLmZvcm1hdFZhbHVlfSk7dmFyIE5fLENiLHkxdCx2MXQseDF0LGIxdCx3MXQsUzF0LE0xdD1NKCgpPT57WkwoKTtOXz1XbSgiCSIpLENiPU5fLnBhcnNlLHkxdD1OXy5wYXJzZVJvd3MsdjF0PU5fLmZvcm1hdCx4MXQ9Tl8uZm9ybWF0Qm9keSxiMXQ9Tl8uZm9ybWF0Um93cyx3MXQ9Tl8uZm9ybWF0Um93LFMxdD1OXy5mb3JtYXRWYWx1ZX0pO2Z1bmN0aW9uIG5qKGUpe2Zvcih2YXIgdCBpbiBlKXt2YXIgcj1lW3RdLnRyaW0oKSxuLGk7aWYoIXIpcj1udWxsO2Vsc2UgaWYocj09PSJ0cnVlIilyPSEwO2Vsc2UgaWYocj09PSJmYWxzZSIpcj0hMTtlbHNlIGlmKHI9PT0iTmFOIilyPU5hTjtlbHNlIGlmKCFpc05hTihuPStyKSlyPW47ZWxzZSBpZihpPXIubWF0Y2goL14oWy0rXVxkezJ9KT9cZHs0fSgtXGR7Mn0oLVxkezJ9KT8pPyhUXGR7Mn06XGR7Mn0oOlxkezJ9KFwuXGR7M30pPyk/KFp8Wy0rXVxkezJ9OlxkezJ9KT8pPyQvKSlPU2UmJiEhaVs0XSYmIWlbN10mJihyPXIucmVwbGFjZSgvLS9nLCIvIikucmVwbGFjZSgvVC8sIiAiKSkscj1uZXcgRGF0ZShyKTtlbHNlIGNvbnRpbnVlO2VbdF09cn1yZXR1cm4gZX12YXIgT1NlLEUxdD1NKCgpPT57T1NlPW5ldyBEYXRlKCIyMDE5LTAxLTAxVDAwOjAwIikuZ2V0SG91cnMoKXx8bmV3IERhdGUoIjIwMTktMDctMDFUMDA6MDAiKS5nZXRIb3VycygpfSk7dmFyIEhFPU0oKCk9PntaTCgpO18xdCgpO00xdCgpO0UxdCgpfSk7dmFyIHBlPXt9OyRzKHBlLHtfX2Fzc2lnbjooKT0+czVlLF9fYXN5bmNEZWxlZ2F0b3I6KCk9Pl81ZSxfX2FzeW5jR2VuZXJhdG9yOigpPT5nNWUsX19hc3luY1ZhbHVlczooKT0+eTVlLF9fYXdhaXQ6KCk9PkI1LF9fYXdhaXRlcjooKT0+ZjVlLF9fZGVjb3JhdGU6KCk9PmM1ZSxfX2V4cG9ydFN0YXI6KCk9PmQ1ZSxfX2V4dGVuZHM6KCk9PmE1ZSxfX2dlbmVyYXRvcjooKT0+cDVlLF9fbWFrZVRlbXBsYXRlT2JqZWN0OigpPT52NWUsX19tZXRhZGF0YTooKT0+aDVlLF9fcGFyYW06KCk9PnU1ZSxfX3JlYWQ6KCk9PlgzdCxfX3Jlc3Q6KCk9Pmw1ZSxfX3NwcmVhZDooKT0+bTVlLF9fdmFsdWVzOigpPT5fJH0pO2Z1bmN0aW9uIGE1ZShlLHQpe281ZShlLHQpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9ZS5wcm90b3R5cGU9dD09PW51bGw/T2JqZWN0LmNyZWF0ZSh0KTooci5wcm90b3R5cGU9dC5wcm90b3R5cGUsbmV3IHIpfWZ1bmN0aW9uIGw1ZShlLHQpe3ZhciByPXt9O2Zvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0LmluZGV4T2Yobik8MCYmKHJbbl09ZVtuXSk7aWYoZSE9bnVsbCYmdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM9PSJmdW5jdGlvbiIpZm9yKHZhciBpPTAsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2k8bi5sZW5ndGg7aSsrKXQuaW5kZXhPZihuW2ldKTwwJiYocltuW2ldXT1lW25baV1dKTtyZXR1cm4gcn1mdW5jdGlvbiBjNWUoZSx0LHIsbil7dmFyIGk9YXJndW1lbnRzLmxlbmd0aCxvPWk8Mz90Om49PT1udWxsP249T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOm4sYTtpZih0eXBlb2YgUmVmbGVjdD09Im9iamVjdCImJnR5cGVvZiBSZWZsZWN0LmRlY29yYXRlPT0iZnVuY3Rpb24iKW89UmVmbGVjdC5kZWNvcmF0ZShlLHQscixuKTtlbHNlIGZvcih2YXIgcz1lLmxlbmd0aC0xO3M+PTA7cy0tKShhPWVbc10pJiYobz0oaTwzP2Eobyk6aT4zP2EodCxyLG8pOmEodCxyKSl8fG8pO3JldHVybiBpPjMmJm8mJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbyksb31mdW5jdGlvbiB1NWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixuKXt0KHIsbixlKX19ZnVuY3Rpb24gaDVlKGUsdCl7aWYodHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZ0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YT09ImZ1bmN0aW9uIilyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShlLHQpfWZ1bmN0aW9uIGY1ZShlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKShmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIGEoYyl7dHJ5e2wobi5uZXh0KGMpKX1jYXRjaCh1KXtvKHUpfX1mdW5jdGlvbiBzKGMpe3RyeXtsKG4udGhyb3coYykpfWNhdGNoKHUpe28odSl9fWZ1bmN0aW9uIGwoYyl7Yy5kb25lP2koYy52YWx1ZSk6bmV3IHIoZnVuY3Rpb24odSl7dShjLnZhbHVlKX0pLnRoZW4oYSxzKX1sKChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBwNWUoZSx0KXt2YXIgcj17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYob1swXSYxKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxuLGksbyxhO3JldHVybiBhPXtuZXh0OnMoMCksdGhyb3c6cygxKSxyZXR1cm46cygyKX0sdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmKGFbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYTtmdW5jdGlvbiBzKGMpe3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gbChbYyx1XSl9fWZ1bmN0aW9uIGwoYyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDtyOyl0cnl7aWYobj0xLGkmJihvPWlbY1swXSYyPyJyZXR1cm4iOmNbMF0/InRocm93IjoibmV4dCJdKSYmIShvPW8uY2FsbChpLGNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChpPTAsbyYmKGM9WzAsby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gci5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTpyLmxhYmVsKyssaT1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPXIub3BzLnBvcCgpLHIudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKG89ci50cnlzLCEobz1vLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKGNbMF09PT02fHxjWzBdPT09Mikpe3I9MDtjb250aW51ZX1pZihjWzBdPT09MyYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe3IubGFiZWw9Y1sxXTticmVha31pZihjWzBdPT09NiYmci5sYWJlbDxvWzFdKXtyLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJnIubGFiZWw8b1syXSl7ci5sYWJlbD1vWzJdLHIub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmci5vcHMucG9wKCksci50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKGUscil9Y2F0Y2godSl7Yz1bNix1XSxpPTB9ZmluYWxseXtuPW89MH1pZihjWzBdJjUpdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19ZnVuY3Rpb24gZDVlKGUsdCl7Zm9yKHZhciByIGluIGUpdC5oYXNPd25Qcm9wZXJ0eShyKXx8KHRbcl09ZVtyXSl9ZnVuY3Rpb24gXyQoZSl7dmFyIHQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmZVtTeW1ib2wuaXRlcmF0b3JdLHI9MDtyZXR1cm4gdD90LmNhbGwoZSk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSYmcj49ZS5sZW5ndGgmJihlPXZvaWQgMCkse3ZhbHVlOmUmJmVbcisrXSxkb25lOiFlfX19fWZ1bmN0aW9uIFgzdChlLHQpe3ZhciByPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJmVbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gZTt2YXIgbj1yLmNhbGwoZSksaSxvPVtdLGE7dHJ5e2Zvcig7KHQ9PT12b2lkIDB8fHQtLSA+MCkmJiEoaT1uLm5leHQoKSkuZG9uZTspby5wdXNoKGkudmFsdWUpfWNhdGNoKHMpe2E9e2Vycm9yOnN9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihyPW4ucmV0dXJuKSYmci5jYWxsKG4pfWZpbmFsbHl7aWYoYSl0aHJvdyBhLmVycm9yfX1yZXR1cm4gb31mdW5jdGlvbiBtNWUoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZT1lLmNvbmNhdChYM3QoYXJndW1lbnRzW3RdKSk7cmV0dXJuIGV9ZnVuY3Rpb24gQjUoZSl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBCNT8odGhpcy52PWUsdGhpcyk6bmV3IEI1KGUpfWZ1bmN0aW9uIGc1ZShlLHQscil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBuPXIuYXBwbHkoZSx0fHxbXSksaSxvPVtdO3JldHVybiBpPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGk7ZnVuY3Rpb24gYShmKXtuW2ZdJiYoaVtmXT1mdW5jdGlvbihwKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxnKXtvLnB1c2goW2YscCxkLGddKT4xfHxzKGYscCl9KX0pfWZ1bmN0aW9uIHMoZixwKXt0cnl7bChuW2ZdKHApKX1jYXRjaChkKXtoKG9bMF1bM10sZCl9fWZ1bmN0aW9uIGwoZil7Zi52YWx1ZSBpbnN0YW5jZW9mIEI1P1Byb21pc2UucmVzb2x2ZShmLnZhbHVlLnYpLnRoZW4oYyx1KTpoKG9bMF1bMl0sZil9ZnVuY3Rpb24gYyhmKXtzKCJuZXh0IixmKX1mdW5jdGlvbiB1KGYpe3MoInRocm93IixmKX1mdW5jdGlvbiBoKGYscCl7ZihwKSxvLnNoaWZ0KCksby5sZW5ndGgmJnMob1swXVswXSxvWzBdWzFdKX19ZnVuY3Rpb24gXzVlKGUpe3ZhciB0LHI7cmV0dXJuIHQ9e30sbigibmV4dCIpLG4oInRocm93IixmdW5jdGlvbihpKXt0aHJvdyBpfSksbigicmV0dXJuIiksdFtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQ7ZnVuY3Rpb24gbihpLG8pe2VbaV0mJih0W2ldPWZ1bmN0aW9uKGEpe3JldHVybihyPSFyKT97dmFsdWU6QjUoZVtpXShhKSksZG9uZTppPT09InJldHVybiJ9Om8/byhhKTphfSl9fWZ1bmN0aW9uIHk1ZShlKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIHQ9ZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIHQ/dC5jYWxsKGUpOnR5cGVvZiBfJD09ImZ1bmN0aW9uIj9fJChlKTplW1N5bWJvbC5pdGVyYXRvcl0oKX1mdW5jdGlvbiB2NWUoZSx0KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJyYXciLHt2YWx1ZTp0fSk6ZS5yYXc9dCxlfXZhciBvNWUsczVlLGRlPU0oKCk9PntvNWU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKGVbcl09dFtyXSl9O3M1ZT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIHIsbj0xLGk9YXJndW1lbnRzLmxlbmd0aDtuPGk7bisrKXtyPWFyZ3VtZW50c1tuXTtmb3IodmFyIG8gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixvKSYmKHRbb109cltvXSl9cmV0dXJuIHR9fSk7dmFyICQzdCxLM3Q9TSgoKT0+eyQzdD0iNC4xMy4wIn0pO2Z1bmN0aW9uIG1jKGUsdCl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfXZhciBweT1NKCgpPT57fSk7ZnVuY3Rpb24gblIoZSl7cmV0dXJuIGUubGVuZ3RoPT09MSYmKGU9eDVlKGUpKSx7bGVmdDpmdW5jdGlvbih0LHIsbixpKXtmb3Iobj09bnVsbCYmKG49MCksaT09bnVsbCYmKGk9dC5sZW5ndGgpO248aTspe3ZhciBvPW4raT4+PjE7ZSh0W29dLHIpPDA/bj1vKzE6aT1vfXJldHVybiBufSxyaWdodDpmdW5jdGlvbih0LHIsbixpKXtmb3Iobj09bnVsbCYmKG49MCksaT09bnVsbCYmKGk9dC5sZW5ndGgpO248aTspe3ZhciBvPW4raT4+PjE7ZSh0W29dLHIpPjA/aT1vOm49bysxfXJldHVybiBufX19ZnVuY3Rpb24geDVlKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBtYyhlKHQpLHIpfX12YXIgeSQ9TSgoKT0+e3B5KCl9KTt2YXIgWjN0LHYkLEozdCxpUix4JD1NKCgpPT57cHkoKTt5JCgpO1ozdD1uUihtYyksdiQ9WjN0LnJpZ2h0LEozdD1aM3QubGVmdCxpUj12JH0pO2Z1bmN0aW9uIFEzdChlLHQpe3Q9PW51bGwmJih0PWIkKTtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLTEsaT1lWzBdLG89bmV3IEFycmF5KG48MD8wOm4pO3I8bjspb1tyXT10KGksaT1lWysrcl0pO3JldHVybiBvfWZ1bmN0aW9uIGIkKGUsdCl7cmV0dXJuW2UsdF19dmFyIHckPU0oKCk9Pnt9KTtmdW5jdGlvbiB0TXQoZSx0LHIpe3ZhciBuPWUubGVuZ3RoLGk9dC5sZW5ndGgsbz1uZXcgQXJyYXkobippKSxhLHMsbCxjO2ZvcihyPT1udWxsJiYocj1iJCksYT1sPTA7YTxuOysrYSlmb3IoYz1lW2FdLHM9MDtzPGk7KytzLCsrbClvW2xdPXIoYyx0W3NdKTtyZXR1cm4gb312YXIgZU10PU0oKCk9Pnt3JCgpfSk7ZnVuY3Rpb24gck10KGUsdCl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfXZhciBuTXQ9TSgoKT0+e30pO2Z1bmN0aW9uIG9sKGUpe3JldHVybiBlPT09bnVsbD9OYU46K2V9dmFyIHMyPU0oKCk9Pnt9KTtmdW5jdGlvbiBvUihlLHQpe3ZhciByPWUubGVuZ3RoLG49MCxpPS0xLG89MCxhLHMsbD0wO2lmKHQ9PW51bGwpZm9yKDsrK2k8cjspaXNOYU4oYT1vbChlW2ldKSl8fChzPWEtbyxvKz1zLysrbixsKz1zKihhLW8pKTtlbHNlIGZvcig7KytpPHI7KWlzTmFOKGE9b2wodChlW2ldLGksZSkpKXx8KHM9YS1vLG8rPXMvKytuLGwrPXMqKGEtbykpO2lmKG4+MSlyZXR1cm4gbC8obi0xKX12YXIgUyQ9TSgoKT0+e3MyKCl9KTtmdW5jdGlvbiBhUihlLHQpe3ZhciByPW9SKGUsdCk7cmV0dXJuIHImJk1hdGguc3FydChyKX12YXIgTSQ9TSgoKT0+e1MkKCl9KTtmdW5jdGlvbiBzUihlLHQpe3ZhciByPWUubGVuZ3RoLG49LTEsaSxvLGE7aWYodD09bnVsbCl7Zm9yKDsrK248cjspaWYoKGk9ZVtuXSkhPW51bGwmJmk+PWkpZm9yKG89YT1pOysrbjxyOykoaT1lW25dKSE9bnVsbCYmKG8+aSYmKG89aSksYTxpJiYoYT1pKSl9ZWxzZSBmb3IoOysrbjxyOylpZigoaT10KGVbbl0sbixlKSkhPW51bGwmJmk+PWkpZm9yKG89YT1pOysrbjxyOykoaT10KGVbbl0sbixlKSkhPW51bGwmJihvPmkmJihvPWkpLGE8aSYmKGE9aSkpO3JldHVybltvLGFdfXZhciBFJD1NKCgpPT57fSk7dmFyIGlNdCxvTXQsYU10LFQkPU0oKCk9PntpTXQ9QXJyYXkucHJvdG90eXBlLG9NdD1pTXQuc2xpY2UsYU10PWlNdC5tYXB9KTtmdW5jdGlvbiBINShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIHNNdD1NKCgpPT57fSk7ZnVuY3Rpb24gbE10KGUpe3JldHVybiBlfXZhciBjTXQ9TSgoKT0+e30pO2Z1bmN0aW9uIGxSKGUsdCxyKXtlPStlLHQ9K3Qscj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyh0PWUsZT0wLDEpOmk8Mz8xOityO2Zvcih2YXIgbj0tMSxpPU1hdGgubWF4KDAsTWF0aC5jZWlsKCh0LWUpL3IpKXwwLG89bmV3IEFycmF5KGkpOysrbjxpOylvW25dPWUrbipyO3JldHVybiBvfXZhciBDJD1NKCgpPT57fSk7ZnVuY3Rpb24gdU10KGUsdCxyKXt2YXIgbixpPS0xLG8sYSxzO2lmKHQ9K3QsZT0rZSxyPStyLGU9PT10JiZyPjApcmV0dXJuW2VdO2lmKChuPXQ8ZSkmJihvPWUsZT10LHQ9byksKHM9TCQoZSx0LHIpKT09PTB8fCFpc0Zpbml0ZShzKSlyZXR1cm5bXTtpZihzPjApZm9yKGU9TWF0aC5jZWlsKGUvcyksdD1NYXRoLmZsb29yKHQvcyksYT1uZXcgQXJyYXkobz1NYXRoLmNlaWwodC1lKzEpKTsrK2k8bzspYVtpXT0oZStpKSpzO2Vsc2UgZm9yKGU9TWF0aC5mbG9vcihlKnMpLHQ9TWF0aC5jZWlsKHQqcyksYT1uZXcgQXJyYXkobz1NYXRoLmNlaWwoZS10KzEpKTsrK2k8bzspYVtpXT0oZS1pKS9zO3JldHVybiBuJiZhLnJldmVyc2UoKSxhfWZ1bmN0aW9uIEwkKGUsdCxyKXt2YXIgbj0odC1lKS9NYXRoLm1heCgwLHIpLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMTApLG89bi9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8obz49QSQ/MTA6bz49UCQ/NTpvPj1JJD8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKG8+PUEkPzEwOm8+PVAkPzU6bz49SSQ/MjoxKX1mdW5jdGlvbiBjUihlLHQscil7dmFyIG49TWF0aC5hYnModC1lKS9NYXRoLm1heCgwLHIpLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMTApKSxvPW4vaTtyZXR1cm4gbz49QSQ/aSo9MTA6bz49UCQ/aSo9NTpvPj1JJCYmKGkqPTIpLHQ8ZT8taTppfXZhciBBJCxQJCxJJCxrJD1NKCgpPT57QSQ9TWF0aC5zcXJ0KDUwKSxQJD1NYXRoLnNxcnQoMTApLEkkPU1hdGguc3FydCgyKX0pO2Z1bmN0aW9uIHVSKGUpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2coZS5sZW5ndGgpL01hdGguTE4yKSsxfXZhciBSJD1NKCgpPT57fSk7ZnVuY3Rpb24gaE10KCl7dmFyIGU9bE10LHQ9c1Iscj11UjtmdW5jdGlvbiBuKGkpe3ZhciBvLGE9aS5sZW5ndGgscyxsPW5ldyBBcnJheShhKTtmb3Iobz0wO288YTsrK28pbFtvXT1lKGlbb10sbyxpKTt2YXIgYz10KGwpLHU9Y1swXSxoPWNbMV0sZj1yKGwsdSxoKTtBcnJheS5pc0FycmF5KGYpfHwoZj1jUih1LGgsZiksZj1sUihNYXRoLmNlaWwodS9mKSpmLE1hdGguZmxvb3IoaC9mKSpmLGYpKTtmb3IodmFyIHA9Zi5sZW5ndGg7ZlswXTw9dTspZi5zaGlmdCgpLC0tcDtmb3IoO2ZbcC0xXT5oOylmLnBvcCgpLC0tcDt2YXIgZD1uZXcgQXJyYXkocCsxKSxnO2ZvcihvPTA7bzw9cDsrK28pZz1kW29dPVtdLGcueDA9bz4wP2Zbby0xXTp1LGcueDE9bzxwP2Zbb106aDtmb3Iobz0wO288YTsrK28pcz1sW29dLHU8PXMmJnM8PWgmJmRbaVIoZixzLDAscCldLnB1c2goaVtvXSk7cmV0dXJuIGR9cmV0dXJuIG4udmFsdWU9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIGk9PSJmdW5jdGlvbiI/aTpINShpKSxuKTplfSxuLmRvbWFpbj1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOkg1KFtpWzBdLGlbMV1dKSxuKTp0fSxuLnRocmVzaG9sZHM9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIGk9PSJmdW5jdGlvbiI/aTpBcnJheS5pc0FycmF5KGkpP0g1KG9NdC5jYWxsKGkpKTpINShpKSxuKTpyfSxufXZhciBmTXQ9TSgoKT0+e1QkKCk7eCQoKTtzTXQoKTtFJCgpO2NNdCgpO0MkKCk7ayQoKTtSJCgpfSk7ZnVuY3Rpb24gZHkoZSx0LHIpe2lmKHI9PW51bGwmJihyPW9sKSwhIShuPWUubGVuZ3RoKSl7aWYoKHQ9K3QpPD0wfHxuPDIpcmV0dXJuK3IoZVswXSwwLGUpO2lmKHQ+PTEpcmV0dXJuK3IoZVtuLTFdLG4tMSxlKTt2YXIgbixpPShuLTEpKnQsbz1NYXRoLmZsb29yKGkpLGE9K3IoZVtvXSxvLGUpLHM9K3IoZVtvKzFdLG8rMSxlKTtyZXR1cm4gYSsocy1hKSooaS1vKX19dmFyIGhSPU0oKCk9PntzMigpfSk7ZnVuY3Rpb24gcE10KGUsdCxyKXtyZXR1cm4gZT1hTXQuY2FsbChlLG9sKS5zb3J0KG1jKSxNYXRoLmNlaWwoKHItdCkvKDIqKGR5KGUsLjc1KS1keShlLC4yNSkpKk1hdGgucG93KGUubGVuZ3RoLC0xLzMpKSl9dmFyIGRNdD1NKCgpPT57VCQoKTtweSgpO3MyKCk7aFIoKX0pO2Z1bmN0aW9uIG1NdChlLHQscil7cmV0dXJuIE1hdGguY2VpbCgoci10KS8oMy41KmFSKGUpKk1hdGgucG93KGUubGVuZ3RoLC0xLzMpKSl9dmFyIGdNdD1NKCgpPT57TSQoKX0pO2Z1bmN0aW9uIF9NdChlLHQpe3ZhciByPWUubGVuZ3RoLG49LTEsaSxvO2lmKHQ9PW51bGwpe2Zvcig7KytuPHI7KWlmKChpPWVbbl0pIT1udWxsJiZpPj1pKWZvcihvPWk7KytuPHI7KShpPWVbbl0pIT1udWxsJiZpPm8mJihvPWkpfWVsc2UgZm9yKDsrK248cjspaWYoKGk9dChlW25dLG4sZSkpIT1udWxsJiZpPj1pKWZvcihvPWk7KytuPHI7KShpPXQoZVtuXSxuLGUpKSE9bnVsbCYmaT5vJiYobz1pKTtyZXR1cm4gb312YXIgeU10PU0oKCk9Pnt9KTtmdW5jdGlvbiB2TXQoZSx0KXt2YXIgcj1lLmxlbmd0aCxuPXIsaT0tMSxvLGE9MDtpZih0PT1udWxsKWZvcig7KytpPHI7KWlzTmFOKG89b2woZVtpXSkpPy0tbjphKz1vO2Vsc2UgZm9yKDsrK2k8cjspaXNOYU4obz1vbCh0KGVbaV0saSxlKSkpPy0tbjphKz1vO2lmKG4pcmV0dXJuIGEvbn12YXIgeE10PU0oKCk9PntzMigpfSk7ZnVuY3Rpb24gYk10KGUsdCl7dmFyIHI9ZS5sZW5ndGgsbj0tMSxpLG89W107aWYodD09bnVsbClmb3IoOysrbjxyOylpc05hTihpPW9sKGVbbl0pKXx8by5wdXNoKGkpO2Vsc2UgZm9yKDsrK248cjspaXNOYU4oaT1vbCh0KGVbbl0sbixlKSkpfHxvLnB1c2goaSk7cmV0dXJuIGR5KG8uc29ydChtYyksLjUpfXZhciB3TXQ9TSgoKT0+e3B5KCk7czIoKTtoUigpfSk7ZnVuY3Rpb24gU010KGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyLG49LTEsaT0wLG8sYTsrK248dDspaSs9ZVtuXS5sZW5ndGg7Zm9yKG89bmV3IEFycmF5KGkpOy0tdD49MDspZm9yKGE9ZVt0XSxyPWEubGVuZ3RoOy0tcj49MDspb1stLWldPWFbcl07cmV0dXJuIG99dmFyIE1NdD1NKCgpPT57fSk7ZnVuY3Rpb24gZlIoZSx0KXt2YXIgcj1lLmxlbmd0aCxuPS0xLGksbztpZih0PT1udWxsKXtmb3IoOysrbjxyOylpZigoaT1lW25dKSE9bnVsbCYmaT49aSlmb3Iobz1pOysrbjxyOykoaT1lW25dKSE9bnVsbCYmbz5pJiYobz1pKX1lbHNlIGZvcig7KytuPHI7KWlmKChpPXQoZVtuXSxuLGUpKSE9bnVsbCYmaT49aSlmb3Iobz1pOysrbjxyOykoaT10KGVbbl0sbixlKSkhPW51bGwmJm8+aSYmKG89aSk7cmV0dXJuIG99dmFyIE4kPU0oKCk9Pnt9KTtmdW5jdGlvbiBFTXQoZSx0KXtmb3IodmFyIHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkocik7ci0tOyluW3JdPWVbdFtyXV07cmV0dXJuIG59dmFyIFRNdD1NKCgpPT57fSk7ZnVuY3Rpb24gQ010KGUsdCl7aWYoISEocj1lLmxlbmd0aCkpe3ZhciByLG49MCxpPTAsbyxhPWVbaV07Zm9yKHQ9PW51bGwmJih0PW1jKTsrK248cjspKHQobz1lW25dLGEpPDB8fHQoYSxhKSE9PTApJiYoYT1vLGk9bik7aWYodChhLGEpPT09MClyZXR1cm4gaX19dmFyIEFNdD1NKCgpPT57cHkoKX0pO2Z1bmN0aW9uIFBNdChlLHQscil7Zm9yKHZhciBuPShyPT1udWxsP2UubGVuZ3RoOnIpLSh0PXQ9PW51bGw/MDordCksaSxvO247KW89TWF0aC5yYW5kb20oKSpuLS18MCxpPWVbbit0XSxlW24rdF09ZVtvK3RdLGVbbyt0XT1pO3JldHVybiBlfXZhciBJTXQ9TSgoKT0+e30pO2Z1bmN0aW9uIExNdChlLHQpe3ZhciByPWUubGVuZ3RoLG49LTEsaSxvPTA7aWYodD09bnVsbClmb3IoOysrbjxyOykoaT0rZVtuXSkmJihvKz1pKTtlbHNlIGZvcig7KytuPHI7KShpPSt0KGVbbl0sbixlKSkmJihvKz1pKTtyZXR1cm4gb312YXIga010PU0oKCk9Pnt9KTtmdW5jdGlvbiBwUihlKXtpZighKG89ZS5sZW5ndGgpKXJldHVybltdO2Zvcih2YXIgdD0tMSxyPWZSKGUsYjVlKSxuPW5ldyBBcnJheShyKTsrK3Q8cjspZm9yKHZhciBpPS0xLG8sYT1uW3RdPW5ldyBBcnJheShvKTsrK2k8bzspYVtpXT1lW2ldW3RdO3JldHVybiBufWZ1bmN0aW9uIGI1ZShlKXtyZXR1cm4gZS5sZW5ndGh9dmFyIEQkPU0oKCk9PntOJCgpfSk7ZnVuY3Rpb24gUk10KCl7cmV0dXJuIHBSKGFyZ3VtZW50cyl9dmFyIE5NdD1NKCgpPT57RCQoKX0pO3ZhciBETXQ9TSgoKT0+e3gkKCk7cHkoKTt5JCgpO2VNdCgpO25NdCgpO00kKCk7RSQoKTtmTXQoKTtkTXQoKTtnTXQoKTtSJCgpO3lNdCgpO3hNdCgpO3dNdCgpO01NdCgpO04kKCk7dyQoKTtUTXQoKTtoUigpO0MkKCk7QU10KCk7SU10KCk7a010KCk7ayQoKTtEJCgpO1MkKCk7Tk10KCl9KTt2YXIgZFIsT010PU0oKCk9PntkUj1BcnJheS5wcm90b3R5cGUuc2xpY2V9KTtmdW5jdGlvbiB6TXQoZSl7cmV0dXJuIGV9dmFyIEZNdD1NKCgpPT57fSk7ZnVuY3Rpb24gdzVlKGUpe3JldHVybiJ0cmFuc2xhdGUoIisoZSsuNSkrIiwwKSJ9ZnVuY3Rpb24gUzVlKGUpe3JldHVybiJ0cmFuc2xhdGUoMCwiKyhlKy41KSsiKSJ9ZnVuY3Rpb24gTTVlKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4rZSh0KX19ZnVuY3Rpb24gRTVlKGUpe3ZhciB0PU1hdGgubWF4KDAsZS5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiBlLnJvdW5kKCkmJih0PU1hdGgucm91bmQodCkpLGZ1bmN0aW9uKHIpe3JldHVybitlKHIpK3R9fWZ1bmN0aW9uIFQ1ZSgpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiBfUihlLHQpe3ZhciByPVtdLG49bnVsbCxpPW51bGwsbz02LGE9NixzPTMsbD1lPT09bVJ8fGU9PT1WNT8tMToxLGM9ZT09PVY1fHxlPT09Z1I/IngiOiJ5Iix1PWU9PT1tUnx8ZT09PU8kP3c1ZTpTNWU7ZnVuY3Rpb24gaChmKXt2YXIgcD1uPT1udWxsP3QudGlja3M/dC50aWNrcy5hcHBseSh0LHIpOnQuZG9tYWluKCk6bixkPWk9PW51bGw/dC50aWNrRm9ybWF0P3QudGlja0Zvcm1hdC5hcHBseSh0LHIpOnpNdDppLGc9TWF0aC5tYXgobywwKStzLF89dC5yYW5nZSgpLHk9K19bMF0rLjUseD0rX1tfLmxlbmd0aC0xXSsuNSxiPSh0LmJhbmR3aWR0aD9FNWU6TTVlKSh0LmNvcHkoKSksUz1mLnNlbGVjdGlvbj9mLnNlbGVjdGlvbigpOmYsQz1TLnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSxQPVMuc2VsZWN0QWxsKCIudGljayIpLmRhdGEocCx0KS5vcmRlcigpLGs9UC5leGl0KCksTz1QLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIiksRD1QLnNlbGVjdCgibGluZSIpLEI9UC5zZWxlY3QoInRleHQiKTtDPUMubWVyZ2UoQy5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCIjMDAwIikpLFA9UC5tZXJnZShPKSxEPUQubWVyZ2UoTy5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCIjMDAwIikuYXR0cihjKyIyIixsKm8pKSxCPUIubWVyZ2UoTy5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiIzAwMCIpLmF0dHIoYyxsKmcpLmF0dHIoImR5IixlPT09bVI/IjBlbSI6ZT09PU8kPyIwLjcxZW0iOiIwLjMyZW0iKSksZiE9PVMmJihDPUMudHJhbnNpdGlvbihmKSxQPVAudHJhbnNpdGlvbihmKSxEPUQudHJhbnNpdGlvbihmKSxCPUIudHJhbnNpdGlvbihmKSxrPWsudHJhbnNpdGlvbihmKS5hdHRyKCJvcGFjaXR5IixCTXQpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oSSl7cmV0dXJuIGlzRmluaXRlKEk9YihJKSk/dShJKTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSxPLmF0dHIoIm9wYWNpdHkiLEJNdCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihJKXt2YXIgTD10aGlzLnBhcmVudE5vZGUuX19heGlzO3JldHVybiB1KEwmJmlzRmluaXRlKEw9TChJKSk/TDpiKEkpKX0pKSxrLnJlbW92ZSgpLEMuYXR0cigiZCIsZT09PVY1fHxlPT1nUj8iTSIrbCphKyIsIit5KyJIMC41ViIreCsiSCIrbCphOiJNIit5KyIsIitsKmErIlYwLjVIIit4KyJWIitsKmEpLFAuYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihJKXtyZXR1cm4gdShiKEkpKX0pLEQuYXR0cihjKyIyIixsKm8pLEIuYXR0cihjLGwqZykudGV4dChkKSxTLmZpbHRlcihUNWUpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZm9udC1zaXplIiwxMCkuYXR0cigiZm9udC1mYW1pbHkiLCJzYW5zLXNlcmlmIikuYXR0cigidGV4dC1hbmNob3IiLGU9PT1nUj8ic3RhcnQiOmU9PT1WNT8iZW5kIjoibWlkZGxlIiksUy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9Yn0pfXJldHVybiBoLnNjYWxlPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWYsaCk6dH0saC50aWNrcz1mdW5jdGlvbigpe3JldHVybiByPWRSLmNhbGwoYXJndW1lbnRzKSxofSxoLnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9Zj09bnVsbD9bXTpkUi5jYWxsKGYpLGgpOnIuc2xpY2UoKX0saC50aWNrVmFsdWVzPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWY9PW51bGw/bnVsbDpkUi5jYWxsKGYpLGgpOm4mJm4uc2xpY2UoKX0saC50aWNrRm9ybWF0PWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWYsaCk6aX0saC50aWNrU2l6ZT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hPStmLGgpOm99LGgudGlja1NpemVJbm5lcj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rZixoKTpvfSxoLnRpY2tTaXplT3V0ZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K2YsaCk6YX0saC50aWNrUGFkZGluZz1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rZixoKTpzfSxofWZ1bmN0aW9uIEhNdChlKXtyZXR1cm4gX1IobVIsZSl9ZnVuY3Rpb24gVk10KGUpe3JldHVybiBfUihnUixlKX1mdW5jdGlvbiBVTXQoZSl7cmV0dXJuIF9SKE8kLGUpfWZ1bmN0aW9uIHFNdChlKXtyZXR1cm4gX1IoVjUsZSl9dmFyIG1SLGdSLE8kLFY1LEJNdCxHTXQ9TSgoKT0+e09NdCgpO0ZNdCgpO21SPTEsZ1I9MixPJD0zLFY1PTQsQk10PTFlLTZ9KTt2YXIgV010PU0oKCk9PntHTXQoKX0pO2Z1bmN0aW9uIGpNdCgpe2Zvcih2YXIgZT0wLHQ9YXJndW1lbnRzLmxlbmd0aCxyPXt9LG47ZTx0OysrZSl7aWYoIShuPWFyZ3VtZW50c1tlXSsiIil8fG4gaW4gcnx8L1tccy5dLy50ZXN0KG4pKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK24pO3Jbbl09W119cmV0dXJuIG5ldyB5UihyKX1mdW5jdGlvbiB5UihlKXt0aGlzLl89ZX1mdW5jdGlvbiBBNWUoZSx0KXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHIpe3ZhciBuPSIiLGk9ci5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49ci5zbGljZShpKzEpLHI9ci5zbGljZSgwLGkpKSxyJiYhdC5oYXNPd25Qcm9wZXJ0eShyKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIityKTtyZXR1cm57dHlwZTpyLG5hbWU6bn19KX1mdW5jdGlvbiBQNWUoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLGk7cjxuOysrcilpZigoaT1lW3JdKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZX1mdW5jdGlvbiBZTXQoZSx0LHIpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilpZihlW25dLm5hbWU9PT10KXtlW25dPUM1ZSxlPWUuc2xpY2UoMCxuKS5jb25jYXQoZS5zbGljZShuKzEpKTticmVha31yZXR1cm4gciE9bnVsbCYmZS5wdXNoKHtuYW1lOnQsdmFsdWU6cn0pLGV9dmFyIEM1ZSxVNSxYTXQ9TSgoKT0+e0M1ZT17dmFsdWU6ZnVuY3Rpb24oKXt9fTt5Ui5wcm90b3R5cGU9ak10LnByb3RvdHlwZT17Y29uc3RydWN0b3I6eVIsb246ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl8sbj1BNWUoZSsiIixyKSxpLG89LTEsYT1uLmxlbmd0aDtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcig7KytvPGE7KWlmKChpPShlPW5bb10pLnR5cGUpJiYoaT1QNWUocltpXSxlLm5hbWUpKSlyZXR1cm4gaTtyZXR1cm59aWYodCE9bnVsbCYmdHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK3QpO2Zvcig7KytvPGE7KWlmKGk9KGU9bltvXSkudHlwZSlyW2ldPVlNdChyW2ldLGUubmFtZSx0KTtlbHNlIGlmKHQ9PW51bGwpZm9yKGkgaW4gcilyW2ldPVlNdChyW2ldLGUubmFtZSxudWxsKTtyZXR1cm4gdGhpc30sY29weTpmdW5jdGlvbigpe3ZhciBlPXt9LHQ9dGhpcy5fO2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXS5zbGljZSgpO3JldHVybiBuZXcgeVIoZSl9LGNhbGw6ZnVuY3Rpb24oZSx0KXtpZigoaT1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciByPW5ldyBBcnJheShpKSxuPTAsaSxvO248aTsrK24pcltuXT1hcmd1bWVudHNbbisyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2UpO2ZvcihvPXRoaXMuX1tlXSxuPTAsaT1vLmxlbmd0aDtuPGk7KytuKW9bbl0udmFsdWUuYXBwbHkodCxyKX0sYXBwbHk6ZnVuY3Rpb24oZSx0LHIpe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrZSk7Zm9yKHZhciBuPXRoaXMuX1tlXSxpPTAsbz1uLmxlbmd0aDtpPG87KytpKW5baV0udmFsdWUuYXBwbHkodCxyKX19O1U1PWpNdH0pO3ZhciB6JD1NKCgpPT57WE10KCl9KTt2YXIgdlIsRiQsQiQ9TSgoKT0+e3ZSPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixGJD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6dlIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifX0pO2Z1bmN0aW9uIFZwKGUpe3ZhciB0PWUrPSIiLHI9dC5pbmRleE9mKCI6Iik7cmV0dXJuIHI+PTAmJih0PWUuc2xpY2UoMCxyKSkhPT0ieG1sbnMiJiYoZT1lLnNsaWNlKHIrMSkpLEYkLmhhc093blByb3BlcnR5KHQpP3tzcGFjZTpGJFt0XSxsb2NhbDplfTplfXZhciB4Uj1NKCgpPT57QiQoKX0pO2Z1bmN0aW9uIEk1ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLm93bmVyRG9jdW1lbnQscj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gcj09PXZSJiZ0LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT12Uj90LmNyZWF0ZUVsZW1lbnQoZSk6dC5jcmVhdGVFbGVtZW50TlMocixlKX19ZnVuY3Rpb24gTDVlKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuc3BhY2UsZS5sb2NhbCl9fWZ1bmN0aW9uIGJSKGUpe3ZhciB0PVZwKGUpO3JldHVybih0LmxvY2FsP0w1ZTpJNWUpKHQpfXZhciBIJD1NKCgpPT57eFIoKTtCJCgpfSk7ZnVuY3Rpb24gazVlKCl7fWZ1bmN0aW9uIG15KGUpe3JldHVybiBlPT1udWxsP2s1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IoZSl9fXZhciB3Uj1NKCgpPT57fSk7ZnVuY3Rpb24gJE10KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1teShlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgbz10W2ldLGE9by5sZW5ndGgscz1uW2ldPW5ldyBBcnJheShhKSxsLGMsdT0wO3U8YTsrK3UpKGw9b1t1XSkmJihjPWUuY2FsbChsLGwuX19kYXRhX18sdSxvKSkmJigiX19kYXRhX18iaW4gbCYmKGMuX19kYXRhX189bC5fX2RhdGFfXyksc1t1XT1jKTtyZXR1cm4gbmV3IHBpKG4sdGhpcy5fcGFyZW50cyl9dmFyIEtNdD1NKCgpPT57YnUoKTt3UigpfSk7ZnVuY3Rpb24gUjVlKCl7cmV0dXJuW119ZnVuY3Rpb24gcTUoZSl7cmV0dXJuIGU9PW51bGw/UjVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChlKX19dmFyIFYkPU0oKCk9Pnt9KTtmdW5jdGlvbiBaTXQoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPXE1KGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1bXSxpPVtdLG89MDtvPHI7KytvKWZvcih2YXIgYT10W29dLHM9YS5sZW5ndGgsbCxjPTA7YzxzOysrYykobD1hW2NdKSYmKG4ucHVzaChlLmNhbGwobCxsLl9fZGF0YV9fLGMsYSkpLGkucHVzaChsKSk7cmV0dXJuIG5ldyBwaShuLGkpfXZhciBKTXQ9TSgoKT0+e2J1KCk7ViQoKX0pO2Z1bmN0aW9uIEc1KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXMoZSl9fXZhciBVJD1NKCgpPT57fSk7ZnVuY3Rpb24gUU10KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1HNShlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgbz10W2ldLGE9by5sZW5ndGgscz1uW2ldPVtdLGwsYz0wO2M8YTsrK2MpKGw9b1tjXSkmJmUuY2FsbChsLGwuX19kYXRhX18sYyxvKSYmcy5wdXNoKGwpO3JldHVybiBuZXcgcGkobix0aGlzLl9wYXJlbnRzKX12YXIgdEV0PU0oKCk9PntidSgpO1UkKCl9KTtmdW5jdGlvbiBTUihlKXtyZXR1cm4gbmV3IEFycmF5KGUubGVuZ3RoKX12YXIgcSQ9TSgoKT0+e30pO2Z1bmN0aW9uIGVFdCgpe3JldHVybiBuZXcgcGkodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoU1IpLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIFc1KGUsdCl7dGhpcy5vd25lckRvY3VtZW50PWUub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST1lLm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PWUsdGhpcy5fX2RhdGFfXz10fXZhciBHJD1NKCgpPT57cSQoKTtidSgpO1c1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6VzUsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoZSx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoZSx0KX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IoZSl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKGUpfX19KTtmdW5jdGlvbiByRXQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBuRXQ9TSgoKT0+e30pO2Z1bmN0aW9uIE41ZShlLHQscixuLGksbyl7Zm9yKHZhciBhPTAscyxsPXQubGVuZ3RoLGM9by5sZW5ndGg7YTxjOysrYSkocz10W2FdKT8ocy5fX2RhdGFfXz1vW2FdLG5bYV09cyk6clthXT1uZXcgVzUoZSxvW2FdKTtmb3IoO2E8bDsrK2EpKHM9dFthXSkmJihpW2FdPXMpfWZ1bmN0aW9uIEQ1ZShlLHQscixuLGksbyxhKXt2YXIgcyxsLGM9e30sdT10Lmxlbmd0aCxoPW8ubGVuZ3RoLGY9bmV3IEFycmF5KHUpLHA7Zm9yKHM9MDtzPHU7KytzKShsPXRbc10pJiYoZltzXT1wPWlFdCthLmNhbGwobCxsLl9fZGF0YV9fLHMsdCkscCBpbiBjP2lbc109bDpjW3BdPWwpO2ZvcihzPTA7czxoOysrcylwPWlFdCthLmNhbGwoZSxvW3NdLHMsbyksKGw9Y1twXSk/KG5bc109bCxsLl9fZGF0YV9fPW9bc10sY1twXT1udWxsKTpyW3NdPW5ldyBXNShlLG9bc10pO2ZvcihzPTA7czx1OysrcykobD10W3NdKSYmY1tmW3NdXT09PWwmJihpW3NdPWwpfWZ1bmN0aW9uIG9FdChlLHQpe2lmKCFlKXJldHVybiBwPW5ldyBBcnJheSh0aGlzLnNpemUoKSksYz0tMSx0aGlzLmVhY2goZnVuY3Rpb24oUCl7cFsrK2NdPVB9KSxwO3ZhciByPXQ/RDVlOk41ZSxuPXRoaXMuX3BhcmVudHMsaT10aGlzLl9ncm91cHM7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPXJFdChlKSk7Zm9yKHZhciBvPWkubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9bmV3IEFycmF5KG8pLGM9MDtjPG87KytjKXt2YXIgdT1uW2NdLGg9aVtjXSxmPWgubGVuZ3RoLHA9ZS5jYWxsKHUsdSYmdS5fX2RhdGFfXyxjLG4pLGQ9cC5sZW5ndGgsZz1zW2NdPW5ldyBBcnJheShkKSxfPWFbY109bmV3IEFycmF5KGQpLHk9bFtjXT1uZXcgQXJyYXkoZik7cih1LGgsZyxfLHkscCx0KTtmb3IodmFyIHg9MCxiPTAsUyxDO3g8ZDsrK3gpaWYoUz1nW3hdKXtmb3IoeD49YiYmKGI9eCsxKTshKEM9X1tiXSkmJisrYjxkOyk7Uy5fbmV4dD1DfHxudWxsfX1yZXR1cm4gYT1uZXcgcGkoYSxuKSxhLl9lbnRlcj1zLGEuX2V4aXQ9bCxhfXZhciBpRXQsYUV0PU0oKCk9PntidSgpO0ckKCk7bkV0KCk7aUV0PSIkIn0pO2Z1bmN0aW9uIHNFdCgpe3JldHVybiBuZXcgcGkodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChTUiksdGhpcy5fcGFyZW50cyl9dmFyIGxFdD1NKCgpPT57cSQoKTtidSgpfSk7ZnVuY3Rpb24gY0V0KGUsdCxyKXt2YXIgbj10aGlzLmVudGVyKCksaT10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIG49dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShuKTpuLmFwcGVuZChlKyIiKSx0IT1udWxsJiYoaT10KGkpKSxyPT1udWxsP28ucmVtb3ZlKCk6cihvKSxuJiZpP24ubWVyZ2UoaSkub3JkZXIoKTppfXZhciB1RXQ9TSgoKT0+e30pO2Z1bmN0aW9uIGhFdChlKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9ZS5fZ3JvdXBzLG49dC5sZW5ndGgsaT1yLmxlbmd0aCxvPU1hdGgubWluKG4saSksYT1uZXcgQXJyYXkobikscz0wO3M8bzsrK3MpZm9yKHZhciBsPXRbc10sYz1yW3NdLHU9bC5sZW5ndGgsaD1hW3NdPW5ldyBBcnJheSh1KSxmLHA9MDtwPHU7KytwKShmPWxbcF18fGNbcF0pJiYoaFtwXT1mKTtmb3IoO3M8bjsrK3MpYVtzXT10W3NdO3JldHVybiBuZXcgcGkoYSx0aGlzLl9wYXJlbnRzKX12YXIgZkV0PU0oKCk9PntidSgpfSk7ZnVuY3Rpb24gcEV0KCl7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PS0xLHI9ZS5sZW5ndGg7Kyt0PHI7KWZvcih2YXIgbj1lW3RdLGk9bi5sZW5ndGgtMSxvPW5baV0sYTstLWk+PTA7KShhPW5baV0pJiYobyYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKV40JiZvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbyksbz1hKTtyZXR1cm4gdGhpc312YXIgZEV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBtRXQoZSl7ZXx8KGU9TzVlKTtmdW5jdGlvbiB0KGgsZil7cmV0dXJuIGgmJmY/ZShoLl9fZGF0YV9fLGYuX19kYXRhX18pOiFoLSFmfWZvcih2YXIgcj10aGlzLl9ncm91cHMsbj1yLmxlbmd0aCxpPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbyl7Zm9yKHZhciBhPXJbb10scz1hLmxlbmd0aCxsPWlbb109bmV3IEFycmF5KHMpLGMsdT0wO3U8czsrK3UpKGM9YVt1XSkmJihsW3VdPWMpO2wuc29ydCh0KX1yZXR1cm4gbmV3IHBpKGksdGhpcy5fcGFyZW50cykub3JkZXIoKX1mdW5jdGlvbiBPNWUoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59dmFyIGdFdD1NKCgpPT57YnUoKX0pO2Z1bmN0aW9uIF9FdCgpe3ZhciBlPWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsZS5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc312YXIgeUV0PU0oKCk9Pnt9KTtmdW5jdGlvbiB2RXQoKXt2YXIgZT1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHQ9LTE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2VbKyt0XT10aGlzfSksZX12YXIgeEV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBiRXQoKXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpZm9yKHZhciBuPWVbdF0saT0wLG89bi5sZW5ndGg7aTxvOysraSl7dmFyIGE9bltpXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfXZhciB3RXQ9TSgoKT0+e30pO2Z1bmN0aW9uIFNFdCgpe3ZhciBlPTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeysrZX0pLGV9dmFyIE1FdD1NKCgpPT57fSk7ZnVuY3Rpb24gRUV0KCl7cmV0dXJuIXRoaXMubm9kZSgpfXZhciBURXQ9TSgoKT0+e30pO2Z1bmN0aW9uIENFdChlKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3IpZm9yKHZhciBpPXRbcl0sbz0wLGE9aS5sZW5ndGgscztvPGE7KytvKShzPWlbb10pJiZlLmNhbGwocyxzLl9fZGF0YV9fLG8saSk7cmV0dXJuIHRoaXN9dmFyIEFFdD1NKCgpPT57fSk7ZnVuY3Rpb24gejVlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpfX1mdW5jdGlvbiBGNWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpfX1mdW5jdGlvbiBCNWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZShlLHQpfX1mdW5jdGlvbiBINWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCx0KX19ZnVuY3Rpb24gVjVlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZShlKTp0aGlzLnNldEF0dHJpYnV0ZShlLHIpfX1mdW5jdGlvbiBVNWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyPT1udWxsP3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCxyKX19ZnVuY3Rpb24gUEV0KGUsdCl7dmFyIHI9VnAoZSk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgbj10aGlzLm5vZGUoKTtyZXR1cm4gci5sb2NhbD9uLmdldEF0dHJpYnV0ZU5TKHIuc3BhY2Usci5sb2NhbCk6bi5nZXRBdHRyaWJ1dGUocil9cmV0dXJuIHRoaXMuZWFjaCgodD09bnVsbD9yLmxvY2FsP0Y1ZTp6NWU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/ci5sb2NhbD9VNWU6VjVlOnIubG9jYWw/SDVlOkI1ZSkocix0KSl9dmFyIElFdD1NKCgpPT57eFIoKX0pO2Z1bmN0aW9uIE1SKGUpe3JldHVybiBlLm93bmVyRG9jdW1lbnQmJmUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8ZS5kb2N1bWVudCYmZXx8ZS5kZWZhdWx0Vmlld312YXIgVyQ9TSgoKT0+e30pO2Z1bmN0aW9uIHE1ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpfX1mdW5jdGlvbiBHNWUoZSx0LHIpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkoZSx0LHIpfX1mdW5jdGlvbiBXNWUoZSx0LHIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO249PW51bGw/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KGUsbixyKX19ZnVuY3Rpb24gTEV0KGUsdCxyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgodD09bnVsbD9xNWU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/VzVlOkc1ZSkoZSx0LHI9PW51bGw/IiI6cikpOmFnKHRoaXMubm9kZSgpLGUpfWZ1bmN0aW9uIGFnKGUsdCl7cmV0dXJuIGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSh0KXx8TVIoZSkuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpLmdldFByb3BlcnR5VmFsdWUodCl9dmFyIFkkPU0oKCk9PntXJCgpfSk7ZnVuY3Rpb24gWTVlKGUpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW2VdfX1mdW5jdGlvbiBqNWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW2VdPXR9fWZ1bmN0aW9uIFg1ZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3I9PW51bGw/ZGVsZXRlIHRoaXNbZV06dGhpc1tlXT1yfX1mdW5jdGlvbiBrRXQoZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgodD09bnVsbD9ZNWU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/WDVlOmo1ZSkoZSx0KSk6dGhpcy5ub2RlKClbZV19dmFyIFJFdD1NKCgpPT57fSk7ZnVuY3Rpb24gTkV0KGUpe3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBqJChlKXtyZXR1cm4gZS5jbGFzc0xpc3R8fG5ldyBERXQoZSl9ZnVuY3Rpb24gREV0KGUpe3RoaXMuX25vZGU9ZSx0aGlzLl9uYW1lcz1ORXQoZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBPRXQoZSx0KXtmb3IodmFyIHI9aiQoZSksbj0tMSxpPXQubGVuZ3RoOysrbjxpOylyLmFkZCh0W25dKX1mdW5jdGlvbiB6RXQoZSx0KXtmb3IodmFyIHI9aiQoZSksbj0tMSxpPXQubGVuZ3RoOysrbjxpOylyLnJlbW92ZSh0W25dKX1mdW5jdGlvbiAkNWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7T0V0KHRoaXMsZSl9fWZ1bmN0aW9uIEs1ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt6RXQodGhpcyxlKX19ZnVuY3Rpb24gWjVlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpP09FdDp6RXQpKHRoaXMsZSl9fWZ1bmN0aW9uIEZFdChlLHQpe3ZhciByPU5FdChlKyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbj1qJCh0aGlzLm5vZGUoKSksaT0tMSxvPXIubGVuZ3RoOysraTxvOylpZighbi5jb250YWlucyhyW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9aNWU6dD8kNWU6SzVlKShyLHQpKX12YXIgQkV0PU0oKCk9PntERXQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbmFtZXMuaW5kZXhPZihlKTt0PDAmJih0aGlzLl9uYW1lcy5wdXNoKGUpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9uYW1lcy5pbmRleE9mKGUpO3Q+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UodCwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihlKT49MH19fSk7ZnVuY3Rpb24gSjVlKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBRNWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1lfX1mdW5jdGlvbiB0VGUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIEhFdChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZT09bnVsbD9KNWU6KHR5cGVvZiBlPT0iZnVuY3Rpb24iP3RUZTpRNWUpKGUpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH12YXIgVkV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBlVGUoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiByVGUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9ZX19ZnVuY3Rpb24gblRlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPXQ9PW51bGw/IiI6dH19ZnVuY3Rpb24gVUV0KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChlPT1udWxsP2VUZToodHlwZW9mIGU9PSJmdW5jdGlvbiI/blRlOnJUZSkoZSkpOnRoaXMubm9kZSgpLmlubmVySFRNTH12YXIgcUV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBpVGUoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gR0V0KCl7cmV0dXJuIHRoaXMuZWFjaChpVGUpfXZhciBXRXQ9TSgoKT0+e30pO2Z1bmN0aW9uIG9UZSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIFlFdCgpe3JldHVybiB0aGlzLmVhY2gob1RlKX12YXIgakV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBYRXQoZSl7dmFyIHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpiUihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZCh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX12YXIgJEV0PU0oKCk9PntIJCgpfSk7ZnVuY3Rpb24gYVRlKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gS0V0KGUsdCl7dmFyIHI9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpiUihlKSxuPXQ9PW51bGw/YVRlOnR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6bXkodCk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfXZhciBaRXQ9TSgoKT0+e0gkKCk7d1IoKX0pO2Z1bmN0aW9uIHNUZSgpe3ZhciBlPXRoaXMucGFyZW50Tm9kZTtlJiZlLnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIEpFdCgpe3JldHVybiB0aGlzLmVhY2goc1RlKX12YXIgUUV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBsVGUoKXt2YXIgZT10aGlzLmNsb25lTm9kZSghMSksdD10aGlzLnBhcmVudE5vZGU7cmV0dXJuIHQ/dC5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKTplfWZ1bmN0aW9uIGNUZSgpe3ZhciBlPXRoaXMuY2xvbmVOb2RlKCEwKSx0PXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gdD90Lmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpOmV9ZnVuY3Rpb24gdDV0KGUpe3JldHVybiB0aGlzLnNlbGVjdChlP2NUZTpsVGUpfXZhciBlNXQ9TSgoKT0+e30pO2Z1bmN0aW9uIHI1dChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsZSk6dGhpcy5ub2RlKCkuX19kYXRhX199dmFyIG41dD1NKCgpPT57fSk7ZnVuY3Rpb24gdVRlKGUsdCxyKXtyZXR1cm4gZT1hNXQoZSx0LHIpLGZ1bmN0aW9uKG4pe3ZhciBpPW4ucmVsYXRlZFRhcmdldDsoIWl8fGkhPT10aGlzJiYhKGkuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykmOCkpJiZlLmNhbGwodGhpcyxuKX19ZnVuY3Rpb24gYTV0KGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9d3I7d3I9bjt0cnl7ZS5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyx0LHIpfWZpbmFsbHl7d3I9aX19fWZ1bmN0aW9uIGhUZShlKXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHQpe3ZhciByPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihyPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOnJ9fSl9ZnVuY3Rpb24gZlRlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX19vbjtpZighIXQpe2Zvcih2YXIgcj0wLG49LTEsaT10Lmxlbmd0aCxvO3I8aTsrK3Ipbz10W3JdLCghZS50eXBlfHxvLnR5cGU9PT1lLnR5cGUpJiZvLm5hbWU9PT1lLm5hbWU/dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8udHlwZSxvLmxpc3RlbmVyLG8uY2FwdHVyZSk6dFsrK25dPW87KytuP3QubGVuZ3RoPW46ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIHBUZShlLHQscil7dmFyIG49bzV0Lmhhc093blByb3BlcnR5KGUudHlwZSk/dVRlOmE1dDtyZXR1cm4gZnVuY3Rpb24oaSxvLGEpe3ZhciBzPXRoaXMuX19vbixsLGM9bih0LG8sYSk7aWYocyl7Zm9yKHZhciB1PTAsaD1zLmxlbmd0aDt1PGg7Kyt1KWlmKChsPXNbdV0pLnR5cGU9PT1lLnR5cGUmJmwubmFtZT09PWUubmFtZSl7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGwudHlwZSxsLmxpc3RlbmVyLGwuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKGwudHlwZSxsLmxpc3RlbmVyPWMsbC5jYXB0dXJlPXIpLGwudmFsdWU9dDtyZXR1cm59fXRoaXMuYWRkRXZlbnRMaXN0ZW5lcihlLnR5cGUsYyxyKSxsPXt0eXBlOmUudHlwZSxuYW1lOmUubmFtZSx2YWx1ZTp0LGxpc3RlbmVyOmMsY2FwdHVyZTpyfSxzP3MucHVzaChsKTp0aGlzLl9fb249W2xdfX1mdW5jdGlvbiBzNXQoZSx0LHIpe3ZhciBuPWhUZShlKyIiKSxpLG89bi5sZW5ndGgsYTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocyl7Zm9yKHZhciBsPTAsYz1zLmxlbmd0aCx1O2w8YzsrK2wpZm9yKGk9MCx1PXNbbF07aTxvOysraSlpZigoYT1uW2ldKS50eXBlPT09dS50eXBlJiZhLm5hbWU9PT11Lm5hbWUpcmV0dXJuIHUudmFsdWV9cmV0dXJufWZvcihzPXQ/cFRlOmZUZSxyPT1udWxsJiYocj0hMSksaT0wO2k8bzsrK2kpdGhpcy5lYWNoKHMobltpXSx0LHIpKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBYJChlLHQscixuKXt2YXIgaT13cjtlLnNvdXJjZUV2ZW50PXdyLHdyPWU7dHJ5e3JldHVybiB0LmFwcGx5KHIsbil9ZmluYWxseXt3cj1pfX12YXIgbzV0LHdyLGk1dCxFUj1NKCgpPT57bzV0PXt9LHdyPW51bGw7dHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIiYmKGk1dD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIm9ubW91c2VlbnRlciJpbiBpNXR8fChvNXQ9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpfSk7ZnVuY3Rpb24gbDV0KGUsdCxyKXt2YXIgbj1NUihlKSxpPW4uQ3VzdG9tRXZlbnQ7dHlwZW9mIGk9PSJmdW5jdGlvbiI/aT1uZXcgaSh0LHIpOihpPW4uZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iikscj8oaS5pbml0RXZlbnQodCxyLmJ1YmJsZXMsci5jYW5jZWxhYmxlKSxpLmRldGFpbD1yLmRldGFpbCk6aS5pbml0RXZlbnQodCwhMSwhMSkpLGUuZGlzcGF0Y2hFdmVudChpKX1mdW5jdGlvbiBkVGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbDV0KHRoaXMsZSx0KX19ZnVuY3Rpb24gbVRlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGw1dCh0aGlzLGUsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBjNXQoZSx0KXtyZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9tVGU6ZFRlKShlLHQpKX12YXIgdTV0PU0oKCk9PntXJCgpfSk7ZnVuY3Rpb24gcGkoZSx0KXt0aGlzLl9ncm91cHM9ZSx0aGlzLl9wYXJlbnRzPXR9ZnVuY3Rpb24gaDV0KCl7cmV0dXJuIG5ldyBwaShbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLCQkKX12YXIgJCQsVXAsYnU9TSgoKT0+e0tNdCgpO0pNdCgpO3RFdCgpO2FFdCgpO0ckKCk7bEV0KCk7dUV0KCk7ZkV0KCk7ZEV0KCk7Z0V0KCk7eUV0KCk7eEV0KCk7d0V0KCk7TUV0KCk7VEV0KCk7QUV0KCk7SUV0KCk7WSQoKTtSRXQoKTtCRXQoKTtWRXQoKTtxRXQoKTtXRXQoKTtqRXQoKTskRXQoKTtaRXQoKTtRRXQoKTtlNXQoKTtuNXQoKTtFUigpO3U1dCgpOyQkPVtudWxsXTtwaS5wcm90b3R5cGU9aDV0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6cGksc2VsZWN0OiRNdCxzZWxlY3RBbGw6Wk10LGZpbHRlcjpRTXQsZGF0YTpvRXQsZW50ZXI6ZUV0LGV4aXQ6c0V0LGpvaW46Y0V0LG1lcmdlOmhFdCxvcmRlcjpwRXQsc29ydDptRXQsY2FsbDpfRXQsbm9kZXM6dkV0LG5vZGU6YkV0LHNpemU6U0V0LGVtcHR5OkVFdCxlYWNoOkNFdCxhdHRyOlBFdCxzdHlsZTpMRXQscHJvcGVydHk6a0V0LGNsYXNzZWQ6RkV0LHRleHQ6SEV0LGh0bWw6VUV0LHJhaXNlOkdFdCxsb3dlcjpZRXQsYXBwZW5kOlhFdCxpbnNlcnQ6S0V0LHJlbW92ZTpKRXQsY2xvbmU6dDV0LGRhdHVtOnI1dCxvbjpzNXQsZGlzcGF0Y2g6YzV0fTtVcD1oNXR9KTtmdW5jdGlvbiBxcChlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP25ldyBwaShbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHBpKFtbZV1dLCQkKX12YXIgZjV0PU0oKCk9PntidSgpfSk7ZnVuY3Rpb24gcDV0KCl7Zm9yKHZhciBlPXdyLHQ7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9dmFyIGQ1dD1NKCgpPT57RVIoKX0pO2Z1bmN0aW9uIG01dChlLHQpe3ZhciByPWUub3duZXJTVkdFbGVtZW50fHxlO2lmKHIuY3JlYXRlU1ZHUG9pbnQpe3ZhciBuPXIuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gbi54PXQuY2xpZW50WCxuLnk9dC5jbGllbnRZLG49bi5tYXRyaXhUcmFuc2Zvcm0oZS5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpLFtuLngsbi55XX12YXIgaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVyblt0LmNsaWVudFgtaS5sZWZ0LWUuY2xpZW50TGVmdCx0LmNsaWVudFktaS50b3AtZS5jbGllbnRUb3BdfXZhciBnNXQ9TSgoKT0+e30pO2Z1bmN0aW9uIFRSKGUpe3ZhciB0PXA1dCgpO3JldHVybiB0LmNoYW5nZWRUb3VjaGVzJiYodD10LmNoYW5nZWRUb3VjaGVzWzBdKSxtNXQoZSx0KX12YXIgXzV0PU0oKCk9PntkNXQoKTtnNXQoKX0pO3ZhciBNcz1NKCgpPT57VSQoKTtfNXQoKTt4UigpO2Y1dCgpO2J1KCk7d1IoKTtWJCgpO1kkKCk7RVIoKX0pO2Z1bmN0aW9uIENSKCl7d3IucHJldmVudERlZmF1bHQoKSx3ci5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX12YXIgeTV0PU0oKCk9PntNcygpfSk7ZnVuY3Rpb24gSyQoZSl7dmFyIHQ9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscj1xcChlKS5vbigiZHJhZ3N0YXJ0LmRyYWciLENSLCEwKTsib25zZWxlY3RzdGFydCJpbiB0P3Iub24oInNlbGVjdHN0YXJ0LmRyYWciLENSLCEwKToodC5fX25vc2VsZWN0PXQuc3R5bGUuTW96VXNlclNlbGVjdCx0LnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBaJChlLHQpe3ZhciByPWUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49cXAoZSkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTt0JiYobi5vbigiY2xpY2suZHJhZyIsQ1IsITApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLm9uKCJjbGljay5kcmFnIixudWxsKX0sMCkpLCJvbnNlbGVjdHN0YXJ0ImluIHI/bi5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KHIuc3R5bGUuTW96VXNlclNlbGVjdD1yLl9fbm9zZWxlY3QsZGVsZXRlIHIuX19ub3NlbGVjdCl9dmFyIHY1dD1NKCgpPT57TXMoKTt5NXQoKX0pO3ZhciB4NXQ9TSgoKT0+e3Y1dCgpfSk7ZnVuY3Rpb24gQVIoZSx0LHIpe2UucHJvdG90eXBlPXQucHJvdG90eXBlPXIsci5jb25zdHJ1Y3Rvcj1lfWZ1bmN0aW9uIEokKGUsdCl7dmFyIHI9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSk7Zm9yKHZhciBuIGluIHQpcltuXT10W25dO3JldHVybiByfXZhciBiNXQ9TSgoKT0+e30pO2Z1bmN0aW9uIFg1KCl7fWZ1bmN0aW9uIFM1dCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFNUZSgpe3JldHVybiBQNXQodGhpcykuZm9ybWF0SHNsKCl9ZnVuY3Rpb24gTTV0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gd3UoZSl7dmFyIHQscjtyZXR1cm4gZT0oZSsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKHQ9Z1RlLmV4ZWMoZSkpPyhyPXRbMV0ubGVuZ3RoLHQ9cGFyc2VJbnQodFsxXSwxNikscj09PTY/RTV0KHQpOnI9PT0zP25ldyBhbCh0Pj44JjE1fHQ+PjQmMjQwLHQ+PjQmMTV8dCYyNDAsKHQmMTUpPDw0fHQmMTUsMSk6cj09PTg/UFIodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwodCYyNTUpLzI1NSk6cj09PTQ/UFIodD4+MTImMTV8dD4+OCYyNDAsdD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCgodCYxNSk8PDR8dCYxNSkvMjU1KTpudWxsKToodD1fVGUuZXhlYyhlKSk/bmV3IGFsKHRbMV0sdFsyXSx0WzNdLDEpOih0PXlUZS5leGVjKGUpKT9uZXcgYWwodFsxXSoyNTUvMTAwLHRbMl0qMjU1LzEwMCx0WzNdKjI1NS8xMDAsMSk6KHQ9dlRlLmV4ZWMoZSkpP1BSKHRbMV0sdFsyXSx0WzNdLHRbNF0pOih0PXhUZS5leGVjKGUpKT9QUih0WzFdKjI1NS8xMDAsdFsyXSoyNTUvMTAwLHRbM10qMjU1LzEwMCx0WzRdKToodD1iVGUuZXhlYyhlKSk/QTV0KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsMSk6KHQ9d1RlLmV4ZWMoZSkpP0E1dCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLHRbNF0pOnc1dC5oYXNPd25Qcm9wZXJ0eShlKT9FNXQodzV0W2VdKTplPT09InRyYW5zcGFyZW50Ij9uZXcgYWwoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBFNXQoZSl7cmV0dXJuIG5ldyBhbChlPj4xNiYyNTUsZT4+OCYyNTUsZSYyNTUsMSl9ZnVuY3Rpb24gUFIoZSx0LHIsbil7cmV0dXJuIG48PTAmJihlPXQ9cj1OYU4pLG5ldyBhbChlLHQscixuKX1mdW5jdGlvbiBNVGUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBYNXx8KGU9d3UoZSkpLGU/KGU9ZS5yZ2IoKSxuZXcgYWwoZS5yLGUuZyxlLmIsZS5vcGFjaXR5KSk6bmV3IGFsfWZ1bmN0aW9uIGMyKGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9NVGUoZSk6bmV3IGFsKGUsdCxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBhbChlLHQscixuKXt0aGlzLnI9K2UsdGhpcy5nPSt0LHRoaXMuYj0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gVDV0KCl7cmV0dXJuIiMiK1EkKHRoaXMucikrUSQodGhpcy5nKStRJCh0aGlzLmIpfWZ1bmN0aW9uIEM1dCgpe3ZhciBlPXRoaXMub3BhY2l0eTtyZXR1cm4gZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSksKGU9PT0xPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKGU9PT0xPyIpIjoiLCAiK2UrIikiKX1mdW5jdGlvbiBRJChlKXtyZXR1cm4gZT1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKGUpfHwwKSksKGU8MTY/IjAiOiIiKStlLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBBNXQoZSx0LHIsbil7cmV0dXJuIG48PTA/ZT10PXI9TmFOOnI8PTB8fHI+PTE/ZT10PU5hTjp0PD0wJiYoZT1OYU4pLG5ldyAkaChlLHQscixuKX1mdW5jdGlvbiBQNXQoZSl7aWYoZSBpbnN0YW5jZW9mICRoKXJldHVybiBuZXcgJGgoZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgWDV8fChlPXd1KGUpKSwhZSlyZXR1cm4gbmV3ICRoO2lmKGUgaW5zdGFuY2VvZiAkaClyZXR1cm4gZTtlPWUucmdiKCk7dmFyIHQ9ZS5yLzI1NSxyPWUuZy8yNTUsbj1lLmIvMjU1LGk9TWF0aC5taW4odCxyLG4pLG89TWF0aC5tYXgodCxyLG4pLGE9TmFOLHM9by1pLGw9KG8raSkvMjtyZXR1cm4gcz8odD09PW8/YT0oci1uKS9zKyhyPG4pKjY6cj09PW8/YT0obi10KS9zKzI6YT0odC1yKS9zKzQscy89bDwuNT9vK2k6Mi1vLWksYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyAkaChhLHMsbCxlLm9wYWNpdHkpfWZ1bmN0aW9uIEk1dChlLHQscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/UDV0KGUpOm5ldyAkaChlLHQscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gJGgoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMucz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIHRLKGUsdCxyKXtyZXR1cm4oZTw2MD90KyhyLXQpKmUvNjA6ZTwxODA/cjplPDI0MD90KyhyLXQpKigyNDAtZSkvNjA6dCkqMjU1fXZhciBZNSxJUixsMixqNSxLaCxnVGUsX1RlLHlUZSx2VGUseFRlLGJUZSx3VGUsdzV0LEw1dD1NKCgpPT57YjV0KCk7WTU9LjcsSVI9MS9ZNSxsMj0iXFxzKihbKy1dP1xcZCspXFxzKiIsajU9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsS2g9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGdUZT0vXiMoWzAtOWEtZl17Myw4fSkkLyxfVGU9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2wyLGwyLGwyXSsiXFwpJCIpLHlUZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbS2gsS2gsS2hdKyJcXCkkIiksdlRlPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbbDIsbDIsbDIsajVdKyJcXCkkIikseFRlPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbS2gsS2gsS2gsajVdKyJcXCkkIiksYlRlPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tqNSxLaCxLaF0rIlxcKSQiKSx3VGU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tqNSxLaCxLaCxqNV0rIlxcKSQiKSx3NXQ9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07QVIoWDUsd3Use2NvcHk6ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyxlKX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6UzV0LGZvcm1hdEhleDpTNXQsZm9ybWF0SHNsOlNUZSxmb3JtYXRSZ2I6TTV0LHRvU3RyaW5nOk01dH0pO0FSKGFsLGMyLEokKFg1LHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP0lSOk1hdGgucG93KElSLGUpLG5ldyBhbCh0aGlzLnIqZSx0aGlzLmcqZSx0aGlzLmIqZSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9ZNTpNYXRoLnBvdyhZNSxlKSxuZXcgYWwodGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpUNXQsZm9ybWF0SGV4OlQ1dCxmb3JtYXRSZ2I6QzV0LHRvU3RyaW5nOkM1dH0pKTtBUigkaCxJNXQsSiQoWDUse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/SVI6TWF0aC5wb3coSVIsZSksbmV3ICRoKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/WTU6TWF0aC5wb3coWTUsZSksbmV3ICRoKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5oJTM2MCsodGhpcy5oPDApKjM2MCx0PWlzTmFOKGUpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLHI9dGhpcy5sLG49cisocjwuNT9yOjEtcikqdCxpPTIqci1uO3JldHVybiBuZXcgYWwodEsoZT49MjQwP2UtMjQwOmUrMTIwLGksbiksdEsoZSxpLG4pLHRLKGU8MTIwP2UrMjQwOmUtMTIwLGksbiksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3BhY2l0eTtyZXR1cm4gZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSksKGU9PT0xPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKyh0aGlzLnN8fDApKjEwMCsiJSwgIisodGhpcy5sfHwwKSoxMDArIiUiKyhlPT09MT8iKSI6IiwgIitlKyIpIil9fSkpfSk7dmFyIExSPU0oKCk9PntMNXQoKX0pO2Z1bmN0aW9uIGVLKGUsdCxyLG4saSl7dmFyIG89ZSplLGE9byplO3JldHVybigoMS0zKmUrMypvLWEpKnQrKDQtNipvKzMqYSkqcisoMSszKmUrMypvLTMqYSkqbithKmkpLzZ9ZnVuY3Rpb24gazV0KGUpe3ZhciB0PWUubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXI8PTA/cj0wOnI+PTE/KHI9MSx0LTEpOk1hdGguZmxvb3Iocip0KSxpPWVbbl0sbz1lW24rMV0sYT1uPjA/ZVtuLTFdOjIqaS1vLHM9bjx0LTE/ZVtuKzJdOjIqby1pO3JldHVybiBlSygoci1uL3QpKnQsYSxpLG8scyl9fXZhciBySz1NKCgpPT57fSk7ZnVuY3Rpb24gUjV0KGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1NYXRoLmZsb29yKCgociU9MSk8MD8rK3I6cikqdCksaT1lWyhuK3QtMSkldF0sbz1lW24ldF0sYT1lWyhuKzEpJXRdLHM9ZVsobisyKSV0XTtyZXR1cm4gZUsoKHItbi90KSp0LGksbyxhLHMpfX12YXIgTjV0PU0oKCk9PntySygpfSk7ZnVuY3Rpb24gJDUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBuSz1NKCgpPT57fSk7ZnVuY3Rpb24gRVRlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlK3IqdH19ZnVuY3Rpb24gVFRlKGUsdCxyKXtyZXR1cm4gZT1NYXRoLnBvdyhlLHIpLHQ9TWF0aC5wb3codCxyKS1lLHI9MS9yLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnBvdyhlK24qdCxyKX19ZnVuY3Rpb24gRDV0KGUpe3JldHVybihlPStlKT09MT9rUjpmdW5jdGlvbih0LHIpe3JldHVybiByLXQ/VFRlKHQscixlKTokNShpc05hTih0KT9yOnQpfX1mdW5jdGlvbiBrUihlLHQpe3ZhciByPXQtZTtyZXR1cm4gcj9FVGUoZSxyKTokNShpc05hTihlKT90OmUpfXZhciBPNXQ9TSgoKT0+e25LKCl9KTtmdW5jdGlvbiB6NXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9bmV3IEFycmF5KHIpLG89bmV3IEFycmF5KHIpLGEscztmb3IoYT0wO2E8cjsrK2Epcz1jMih0W2FdKSxuW2FdPXMucnx8MCxpW2FdPXMuZ3x8MCxvW2FdPXMuYnx8MDtyZXR1cm4gbj1lKG4pLGk9ZShpKSxvPWUobykscy5vcGFjaXR5PTEsZnVuY3Rpb24obCl7cmV0dXJuIHMucj1uKGwpLHMuZz1pKGwpLHMuYj1vKGwpLHMrIiJ9fX12YXIgZ3ksQ1RlLEFUZSxpSz1NKCgpPT57TFIoKTtySygpO041dCgpO081dCgpO2d5PWZ1bmN0aW9uIGUodCl7dmFyIHI9RDV0KHQpO2Z1bmN0aW9uIG4oaSxvKXt2YXIgYT1yKChpPWMyKGkpKS5yLChvPWMyKG8pKS5yKSxzPXIoaS5nLG8uZyksbD1yKGkuYixvLmIpLGM9a1IoaS5vcGFjaXR5LG8ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBpLnI9YSh1KSxpLmc9cyh1KSxpLmI9bCh1KSxpLm9wYWNpdHk9Yyh1KSxpKyIifX1yZXR1cm4gbi5nYW1tYT1lLG59KDEpO0NUZT16NXQoazV0KSxBVGU9ejV0KFI1dCl9KTtmdW5jdGlvbiBGNXQoZSx0KXt0fHwodD1bXSk7dmFyIHI9ZT9NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCk6MCxuPXQuc2xpY2UoKSxpO3JldHVybiBmdW5jdGlvbihvKXtmb3IoaT0wO2k8cjsrK2kpbltpXT1lW2ldKigxLW8pK3RbaV0qbztyZXR1cm4gbn19ZnVuY3Rpb24gQjV0KGUpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJiEoZSBpbnN0YW5jZW9mIERhdGFWaWV3KX12YXIgSDV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBWNXQoZSx0KXt2YXIgcj10P3QubGVuZ3RoOjAsbj1lP01hdGgubWluKHIsZS5sZW5ndGgpOjAsaT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkociksYTtmb3IoYT0wO2E8bjsrK2EpaVthXT1feShlW2FdLHRbYV0pO2Zvcig7YTxyOysrYSlvW2FdPXRbYV07cmV0dXJuIGZ1bmN0aW9uKHMpe2ZvcihhPTA7YTxuOysrYSlvW2FdPWlbYV0ocyk7cmV0dXJuIG99fXZhciBVNXQ9TSgoKT0+e1JSKCl9KTtmdW5jdGlvbiBxNXQoZSx0KXt2YXIgcj1uZXcgRGF0ZTtyZXR1cm4gZT0rZSx0PSt0LGZ1bmN0aW9uKG4pe3JldHVybiByLnNldFRpbWUoZSooMS1uKSt0Km4pLHJ9fXZhciBHNXQ9TSgoKT0+e30pO2Z1bmN0aW9uIFZhKGUsdCl7cmV0dXJuIGU9K2UsdD0rdCxmdW5jdGlvbihyKXtyZXR1cm4gZSooMS1yKSt0KnJ9fXZhciBLNT1NKCgpPT57fSk7ZnVuY3Rpb24gVzV0KGUsdCl7dmFyIHI9e30sbj17fSxpOyhlPT09bnVsbHx8dHlwZW9mIGUhPSJvYmplY3QiKSYmKGU9e30pLCh0PT09bnVsbHx8dHlwZW9mIHQhPSJvYmplY3QiKSYmKHQ9e30pO2ZvcihpIGluIHQpaSBpbiBlP3JbaV09X3koZVtpXSx0W2ldKTpuW2ldPXRbaV07cmV0dXJuIGZ1bmN0aW9uKG8pe2ZvcihpIGluIHIpbltpXT1yW2ldKG8pO3JldHVybiBufX12YXIgWTV0PU0oKCk9PntSUigpfSk7ZnVuY3Rpb24gUFRlKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiBJVGUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpKyIifX1mdW5jdGlvbiBaNShlLHQpe3ZhciByPWFLLmxhc3RJbmRleD1vSy5sYXN0SW5kZXg9MCxuLGksbyxhPS0xLHM9W10sbD1bXTtmb3IoZT1lKyIiLHQ9dCsiIjsobj1hSy5leGVjKGUpKSYmKGk9b0suZXhlYyh0KSk7KShvPWkuaW5kZXgpPnImJihvPXQuc2xpY2UocixvKSxzW2FdP3NbYV0rPW86c1srK2FdPW8pLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OlZhKG4saSl9KSkscj1vSy5sYXN0SW5kZXg7cmV0dXJuIHI8dC5sZW5ndGgmJihvPXQuc2xpY2Uociksc1thXT9zW2FdKz1vOnNbKythXT1vKSxzLmxlbmd0aDwyP2xbMF0/SVRlKGxbMF0ueCk6UFRlKHQpOih0PWwubGVuZ3RoLGZ1bmN0aW9uKGMpe2Zvcih2YXIgdT0wLGg7dTx0OysrdSlzWyhoPWxbdV0pLmldPWgueChjKTtyZXR1cm4gcy5qb2luKCIiKX0pfXZhciBhSyxvSyxzSz1NKCgpPT57SzUoKTthSz0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csb0s9bmV3IFJlZ0V4cChhSy5zb3VyY2UsImciKX0pO2Z1bmN0aW9uIF95KGUsdCl7dmFyIHI9dHlwZW9mIHQsbjtyZXR1cm4gdD09bnVsbHx8cj09PSJib29sZWFuIj8kNSh0KToocj09PSJudW1iZXIiP1ZhOnI9PT0ic3RyaW5nIj8obj13dSh0KSk/KHQ9bixneSk6WjU6dCBpbnN0YW5jZW9mIHd1P2d5OnQgaW5zdGFuY2VvZiBEYXRlP3E1dDpCNXQodCk/RjV0OkFycmF5LmlzQXJyYXkodCk/VjV0OnR5cGVvZiB0LnZhbHVlT2YhPSJmdW5jdGlvbiImJnR5cGVvZiB0LnRvU3RyaW5nIT0iZnVuY3Rpb24ifHxpc05hTih0KT9XNXQ6VmEpKGUsdCl9dmFyIFJSPU0oKCk9PntMUigpO2lLKCk7VTV0KCk7RzV0KCk7SzUoKTtZNXQoKTtzSygpO25LKCk7SDV0KCl9KTtmdW5jdGlvbiBsSyhlLHQscixuLGksbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydChlKmUrdCp0KSkmJihlLz1hLHQvPWEpLChsPWUqcit0Km4pJiYoci09ZSpsLG4tPXQqbCksKHM9TWF0aC5zcXJ0KHIqcituKm4pKSYmKHIvPXMsbi89cyxsLz1zKSxlKm48dCpyJiYoZT0tZSx0PS10LGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIodCxlKSpqNXQsc2tld1g6TWF0aC5hdGFuKGwpKmo1dCxzY2FsZVg6YSxzY2FsZVk6c319dmFyIGo1dCxOUixYNXQ9TSgoKT0+e2o1dD0xODAvTWF0aC5QSSxOUj17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfX0pO2Z1bmN0aW9uIEs1dChlKXtyZXR1cm4gZT09PSJub25lIj9OUjooSjV8fChKNT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxjSz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsJDV0PWRvY3VtZW50LmRlZmF1bHRWaWV3KSxKNS5zdHlsZS50cmFuc2Zvcm09ZSxlPSQ1dC5nZXRDb21wdXRlZFN0eWxlKGNLLmFwcGVuZENoaWxkKEo1KSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxjSy5yZW1vdmVDaGlsZChKNSksZT1lLnNsaWNlKDcsLTEpLnNwbGl0KCIsIiksbEsoK2VbMF0sK2VbMV0sK2VbMl0sK2VbM10sK2VbNF0sK2VbNV0pKX1mdW5jdGlvbiBaNXQoZSl7cmV0dXJuIGU9PW51bGw/TlI6KERSfHwoRFI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksRFIuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLGUpLChlPURSLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpPyhlPWUubWF0cml4LGxLKGUuYSxlLmIsZS5jLGUuZCxlLmUsZS5mKSk6TlIpfXZhciBKNSxjSywkNXQsRFIsSjV0PU0oKCk9PntYNXQoKX0pO2Z1bmN0aW9uIFE1dChlLHQscixuKXtmdW5jdGlvbiBpKGMpe3JldHVybiBjLmxlbmd0aD9jLnBvcCgpKyIgIjoiIn1mdW5jdGlvbiBvKGMsdSxoLGYscCxkKXtpZihjIT09aHx8dSE9PWYpe3ZhciBnPXAucHVzaCgidHJhbnNsYXRlKCIsbnVsbCx0LG51bGwscik7ZC5wdXNoKHtpOmctNCx4OlZhKGMsaCl9LHtpOmctMix4OlZhKHUsZil9KX1lbHNlKGh8fGYpJiZwLnB1c2goInRyYW5zbGF0ZSgiK2grdCtmK3IpfWZ1bmN0aW9uIGEoYyx1LGgsZil7YyE9PXU/KGMtdT4xODA/dSs9MzYwOnUtYz4xODAmJihjKz0zNjApLGYucHVzaCh7aTpoLnB1c2goaShoKSsicm90YXRlKCIsbnVsbCxuKS0yLHg6VmEoYyx1KX0pKTp1JiZoLnB1c2goaShoKSsicm90YXRlKCIrdStuKX1mdW5jdGlvbiBzKGMsdSxoLGYpe2MhPT11P2YucHVzaCh7aTpoLnB1c2goaShoKSsic2tld1goIixudWxsLG4pLTIseDpWYShjLHUpfSk6dSYmaC5wdXNoKGkoaCkrInNrZXdYKCIrdStuKX1mdW5jdGlvbiBsKGMsdSxoLGYscCxkKXtpZihjIT09aHx8dSE9PWYpe3ZhciBnPXAucHVzaChpKHApKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtkLnB1c2goe2k6Zy00LHg6VmEoYyxoKX0se2k6Zy0yLHg6VmEodSxmKX0pfWVsc2UoaCE9PTF8fGYhPT0xKSYmcC5wdXNoKGkocCkrInNjYWxlKCIraCsiLCIrZisiKSIpfXJldHVybiBmdW5jdGlvbihjLHUpe3ZhciBoPVtdLGY9W107cmV0dXJuIGM9ZShjKSx1PWUodSksbyhjLnRyYW5zbGF0ZVgsYy50cmFuc2xhdGVZLHUudHJhbnNsYXRlWCx1LnRyYW5zbGF0ZVksaCxmKSxhKGMucm90YXRlLHUucm90YXRlLGgsZikscyhjLnNrZXdYLHUuc2tld1gsaCxmKSxsKGMuc2NhbGVYLGMuc2NhbGVZLHUuc2NhbGVYLHUuc2NhbGVZLGgsZiksYz11PW51bGwsZnVuY3Rpb24ocCl7Zm9yKHZhciBkPS0xLGc9Zi5sZW5ndGgsXzsrK2Q8ZzspaFsoXz1mW2RdKS5pXT1fLngocCk7cmV0dXJuIGguam9pbigiIil9fX12YXIgdUssaEssdFR0PU0oKCk9PntLNSgpO0o1dCgpO3VLPVE1dChLNXQsInB4LCAiLCJweCkiLCJkZWcpIiksaEs9UTV0KFo1dCwiLCAiLCIpIiwiKSIpfSk7dmFyIFE1PU0oKCk9PntSUigpO0s1KCk7c0soKTt0VHQoKTtpSygpfSk7ZnVuY3Rpb24gaDIoKXtyZXR1cm4geXl8fChuVHQoTFRlKSx5eT1uVC5ub3coKStGUil9ZnVuY3Rpb24gTFRlKCl7eXk9MH1mdW5jdGlvbiBpVCgpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gQlIoZSx0LHIpe3ZhciBuPW5ldyBpVDtyZXR1cm4gbi5yZXN0YXJ0KGUsdCxyKSxufWZ1bmN0aW9uIGlUdCgpe2gyKCksKyt1Mjtmb3IodmFyIGU9T1IsdDtlOykodD15eS1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tdTJ9ZnVuY3Rpb24gZVR0KCl7eXk9KHpSPW5ULm5vdygpKStGUix1Mj1lVD0wO3RyeXtpVHQoKX1maW5hbGx5e3UyPTAsUlRlKCkseXk9MH19ZnVuY3Rpb24ga1RlKCl7dmFyIGU9blQubm93KCksdD1lLXpSO3Q+clR0JiYoRlItPXQselI9ZSl9ZnVuY3Rpb24gUlRlKCl7Zm9yKHZhciBlLHQ9T1IscixuPTEvMDt0Oyl0Ll9jYWxsPyhuPnQuX3RpbWUmJihuPXQuX3RpbWUpLGU9dCx0PXQuX25leHQpOihyPXQuX25leHQsdC5fbmV4dD1udWxsLHQ9ZT9lLl9uZXh0PXI6T1I9cik7clQ9ZSxmSyhuKX1mdW5jdGlvbiBmSyhlKXtpZighdTIpe2VUJiYoZVQ9Y2xlYXJUaW1lb3V0KGVUKSk7dmFyIHQ9ZS15eTt0PjI0PyhlPDEvMCYmKGVUPXNldFRpbWVvdXQoZVR0LGUtblQubm93KCktRlIpKSx0VCYmKHRUPWNsZWFySW50ZXJ2YWwodFQpKSk6KHRUfHwoelI9blQubm93KCksdFQ9c2V0SW50ZXJ2YWwoa1RlLHJUdCkpLHUyPTEsblR0KGVUdCkpfX12YXIgdTIsZVQsdFQsclR0LE9SLHJULHpSLHl5LEZSLG5ULG5UdCxwSz1NKCgpPT57dTI9MCxlVD0wLHRUPTAsclR0PTFlMyx6Uj0wLHl5PTAsRlI9MCxuVD10eXBlb2YgcGVyZm9ybWFuY2U9PSJvYmplY3QiJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxuVHQ9dHlwZW9mIHdpbmRvdz09Im9iamVjdCImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24oZSl7c2V0VGltZW91dChlLDE3KX07aVQucHJvdG90eXBlPUJSLnByb3RvdHlwZT17Y29uc3RydWN0b3I6aVQscmVzdGFydDpmdW5jdGlvbihlLHQscil7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtyPShyPT1udWxsP2gyKCk6K3IpKyh0PT1udWxsPzA6K3QpLCF0aGlzLl9uZXh0JiZyVCE9PXRoaXMmJihyVD9yVC5fbmV4dD10aGlzOk9SPXRoaXMsclQ9dGhpcyksdGhpcy5fY2FsbD1lLHRoaXMuX3RpbWU9cixmSygpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxmSygpKX19fSk7ZnVuY3Rpb24gSFIoZSx0LHIpe3ZhciBuPW5ldyBpVDtyZXR1cm4gdD10PT1udWxsPzA6K3Qsbi5yZXN0YXJ0KGZ1bmN0aW9uKGkpe24uc3RvcCgpLGUoaSt0KX0sdCxyKSxufXZhciBvVHQ9TSgoKT0+e3BLKCl9KTt2YXIgZEs9TSgoKT0+e3BLKCk7b1R0KCl9KTtmdW5jdGlvbiBzZyhlLHQscixuLGksbyl7dmFyIGE9ZS5fX3RyYW5zaXRpb247aWYoIWEpZS5fX3RyYW5zaXRpb249e307ZWxzZSBpZihyIGluIGEpcmV0dXJuO09UZShlLHIse25hbWU6dCxpbmRleDpuLGdyb3VwOmksb246TlRlLHR3ZWVuOkRUZSx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTpzVHR9KX1mdW5jdGlvbiBhVChlLHQpe3ZhciByPUppKGUsdCk7aWYoci5zdGF0ZT5zVHQpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gcn1mdW5jdGlvbiBVYShlLHQpe3ZhciByPUppKGUsdCk7aWYoci5zdGF0ZT5WUil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gcn1mdW5jdGlvbiBKaShlLHQpe3ZhciByPWUuX190cmFuc2l0aW9uO2lmKCFyfHwhKHI9clt0XSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiByfWZ1bmN0aW9uIE9UZShlLHQscil7dmFyIG49ZS5fX3RyYW5zaXRpb24saTtuW3RdPXIsci50aW1lcj1CUihvLDAsci50aW1lKTtmdW5jdGlvbiBvKGMpe3Iuc3RhdGU9bUssci50aW1lci5yZXN0YXJ0KGEsci5kZWxheSxyLnRpbWUpLHIuZGVsYXk8PWMmJmEoYy1yLmRlbGF5KX1mdW5jdGlvbiBhKGMpe3ZhciB1LGgsZixwO2lmKHIuc3RhdGUhPT1tSylyZXR1cm4gbCgpO2Zvcih1IGluIG4paWYocD1uW3VdLHAubmFtZT09PXIubmFtZSl7aWYocC5zdGF0ZT09PVZSKXJldHVybiBIUihhKTtwLnN0YXRlPT09YVR0PyhwLnN0YXRlPW9ULHAudGltZXIuc3RvcCgpLHAub24uY2FsbCgiaW50ZXJydXB0IixlLGUuX19kYXRhX18scC5pbmRleCxwLmdyb3VwKSxkZWxldGUgblt1XSk6K3U8dCYmKHAuc3RhdGU9b1QscC50aW1lci5zdG9wKCkscC5vbi5jYWxsKCJjYW5jZWwiLGUsZS5fX2RhdGFfXyxwLmluZGV4LHAuZ3JvdXApLGRlbGV0ZSBuW3VdKX1pZihIUihmdW5jdGlvbigpe3Iuc3RhdGU9PT1WUiYmKHIuc3RhdGU9YVR0LHIudGltZXIucmVzdGFydChzLHIuZGVsYXksci50aW1lKSxzKGMpKX0pLHIuc3RhdGU9VVIsci5vbi5jYWxsKCJzdGFydCIsZSxlLl9fZGF0YV9fLHIuaW5kZXgsci5ncm91cCksci5zdGF0ZT09PVVSKXtmb3Ioci5zdGF0ZT1WUixpPW5ldyBBcnJheShmPXIudHdlZW4ubGVuZ3RoKSx1PTAsaD0tMTt1PGY7Kyt1KShwPXIudHdlZW5bdV0udmFsdWUuY2FsbChlLGUuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSkmJihpWysraF09cCk7aS5sZW5ndGg9aCsxfX1mdW5jdGlvbiBzKGMpe2Zvcih2YXIgdT1jPHIuZHVyYXRpb24/ci5lYXNlLmNhbGwobnVsbCxjL3IuZHVyYXRpb24pOihyLnRpbWVyLnJlc3RhcnQobCksci5zdGF0ZT1xUiwxKSxoPS0xLGY9aS5sZW5ndGg7KytoPGY7KWlbaF0uY2FsbChlLHUpO3Iuc3RhdGU9PT1xUiYmKHIub24uY2FsbCgiZW5kIixlLGUuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSxsKCkpfWZ1bmN0aW9uIGwoKXtyLnN0YXRlPW9ULHIudGltZXIuc3RvcCgpLGRlbGV0ZSBuW3RdO2Zvcih2YXIgYyBpbiBuKXJldHVybjtkZWxldGUgZS5fX3RyYW5zaXRpb259fXZhciBOVGUsRFRlLHNUdCxtSyxVUixWUixhVHQscVIsb1QsRXM9TSgoKT0+e3okKCk7ZEsoKTtOVGU9VTUoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksRFRlPVtdLHNUdD0wLG1LPTEsVVI9MixWUj0zLGFUdD00LHFSPTUsb1Q9Nn0pO2Z1bmN0aW9uIGYyKGUsdCl7dmFyIHI9ZS5fX3RyYW5zaXRpb24sbixpLG89ITAsYTtpZighIXIpe3Q9dD09bnVsbD9udWxsOnQrIiI7Zm9yKGEgaW4gcil7aWYoKG49clthXSkubmFtZSE9PXQpe289ITE7Y29udGludWV9aT1uLnN0YXRlPlVSJiZuLnN0YXRlPHFSLG4uc3RhdGU9b1Qsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsZSxlLl9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIHJbYV19byYmZGVsZXRlIGUuX190cmFuc2l0aW9ufX12YXIgZ0s9TSgoKT0+e0VzKCl9KTtmdW5jdGlvbiBsVHQoZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YyKHRoaXMsZSl9KX12YXIgY1R0PU0oKCk9PntnSygpfSk7ZnVuY3Rpb24gelRlKGUsdCl7dmFyIHIsbjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1VYSh0aGlzLGUpLG89aS50d2VlbjtpZihvIT09cil7bj1yPW87Zm9yKHZhciBhPTAscz1uLmxlbmd0aDthPHM7KythKWlmKG5bYV0ubmFtZT09PXQpe249bi5zbGljZSgpLG4uc3BsaWNlKGEsMSk7YnJlYWt9fWkudHdlZW49bn19ZnVuY3Rpb24gRlRlKGUsdCxyKXt2YXIgbixpO2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1VYSh0aGlzLGUpLGE9by50d2VlbjtpZihhIT09bil7aT0obj1hKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTp0LHZhbHVlOnJ9LGw9MCxjPWkubGVuZ3RoO2w8YzsrK2wpaWYoaVtsXS5uYW1lPT09dCl7aVtsXT1zO2JyZWFrfWw9PT1jJiZpLnB1c2gocyl9by50d2Vlbj1pfX1mdW5jdGlvbiB1VHQoZSx0KXt2YXIgcj10aGlzLl9pZDtpZihlKz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbj1KaSh0aGlzLm5vZGUoKSxyKS50d2VlbixpPTAsbz1uLmxlbmd0aCxhO2k8bzsrK2kpaWYoKGE9bltpXSkubmFtZT09PWUpcmV0dXJuIGEudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgodD09bnVsbD96VGU6RlRlKShyLGUsdCkpfWZ1bmN0aW9uIHAyKGUsdCxyKXt2YXIgbj1lLl9pZDtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9VWEodGhpcyxuKTsoaS52YWx1ZXx8KGkudmFsdWU9e30pKVt0XT1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLGZ1bmN0aW9uKGkpe3JldHVybiBKaShpLG4pLnZhbHVlW3RdfX12YXIgc1Q9TSgoKT0+e0VzKCl9KTtmdW5jdGlvbiBHUihlLHQpe3ZhciByO3JldHVybih0eXBlb2YgdD09Im51bWJlciI/VmE6dCBpbnN0YW5jZW9mIHd1P2d5OihyPXd1KHQpKT8odD1yLGd5KTpaNSkoZSx0KX12YXIgX0s9TSgoKT0+e0xSKCk7UTUoKX0pO2Z1bmN0aW9uIEJUZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKX19ZnVuY3Rpb24gSFRlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKX19ZnVuY3Rpb24gVlRlKGUsdCxyKXt2YXIgbixpPXIrIiIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEF0dHJpYnV0ZShlKTtyZXR1cm4gYT09PWk/bnVsbDphPT09bj9vOm89dChuPWEscil9fWZ1bmN0aW9uIFVUZShlLHQscil7dmFyIG4saT1yKyIiLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpO3JldHVybiBhPT09aT9udWxsOmE9PT1uP286bz10KG49YSxyKX19ZnVuY3Rpb24gcVRlKGUsdCxyKXt2YXIgbixpLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscz1yKHRoaXMpLGw7cmV0dXJuIHM9PW51bGw/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKTooYT10aGlzLmdldEF0dHJpYnV0ZShlKSxsPXMrIiIsYT09PWw/bnVsbDphPT09biYmbD09PWk/bzooaT1sLG89dChuPWEscykpKX19ZnVuY3Rpb24gR1RlKGUsdCxyKXt2YXIgbixpLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscz1yKHRoaXMpLGw7cmV0dXJuIHM9PW51bGw/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk6KGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpLGw9cysiIixhPT09bD9udWxsOmE9PT1uJiZsPT09aT9vOihpPWwsbz10KG49YSxzKSkpfX1mdW5jdGlvbiBoVHQoZSx0KXt2YXIgcj1WcChlKSxuPXI9PT0idHJhbnNmb3JtIj9oSzpHUjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4oZSx0eXBlb2YgdD09ImZ1bmN0aW9uIj8oci5sb2NhbD9HVGU6cVRlKShyLG4scDIodGhpcywiYXR0ci4iK2UsdCkpOnQ9PW51bGw/KHIubG9jYWw/SFRlOkJUZSkocik6KHIubG9jYWw/VVRlOlZUZSkocixuLHQpKX12YXIgZlR0PU0oKCk9PntRNSgpO01zKCk7c1QoKTtfSygpfSk7ZnVuY3Rpb24gV1RlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3RoaXMuc2V0QXR0cmlidXRlKGUsdC5jYWxsKHRoaXMscikpfX1mdW5jdGlvbiBZVGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5zZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwsdC5jYWxsKHRoaXMscikpfX1mdW5jdGlvbiBqVGUoZSx0KXt2YXIgcixuO2Z1bmN0aW9uIGkoKXt2YXIgbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PW4mJihyPShuPW8pJiZZVGUoZSxvKSkscn1yZXR1cm4gaS5fdmFsdWU9dCxpfWZ1bmN0aW9uIFhUZShlLHQpe3ZhciByLG47ZnVuY3Rpb24gaSgpe3ZhciBvPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09biYmKHI9KG49bykmJldUZShlLG8pKSxyfXJldHVybiBpLl92YWx1ZT10LGl9ZnVuY3Rpb24gcFR0KGUsdCl7dmFyIHI9ImF0dHIuIitlO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4ocj10aGlzLnR3ZWVuKHIpKSYmci5fdmFsdWU7aWYodD09bnVsbClyZXR1cm4gdGhpcy50d2VlbihyLG51bGwpO2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjt2YXIgbj1WcChlKTtyZXR1cm4gdGhpcy50d2VlbihyLChuLmxvY2FsP2pUZTpYVGUpKG4sdCkpfXZhciBkVHQ9TSgoKT0+e01zKCl9KTtmdW5jdGlvbiAkVGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXthVCh0aGlzLGUpLmRlbGF5PSt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gS1RlKGUsdCl7cmV0dXJuIHQ9K3QsZnVuY3Rpb24oKXthVCh0aGlzLGUpLmRlbGF5PXR9fWZ1bmN0aW9uIG1UdChlKXt2YXIgdD10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKHR5cGVvZiBlPT0iZnVuY3Rpb24iPyRUZTpLVGUpKHQsZSkpOkppKHRoaXMubm9kZSgpLHQpLmRlbGF5fXZhciBnVHQ9TSgoKT0+e0VzKCl9KTtmdW5jdGlvbiBaVGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtVYSh0aGlzLGUpLmR1cmF0aW9uPSt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gSlRlKGUsdCl7cmV0dXJuIHQ9K3QsZnVuY3Rpb24oKXtVYSh0aGlzLGUpLmR1cmF0aW9uPXR9fWZ1bmN0aW9uIF9UdChlKXt2YXIgdD10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKHR5cGVvZiBlPT0iZnVuY3Rpb24iP1pUZTpKVGUpKHQsZSkpOkppKHRoaXMubm9kZSgpLHQpLmR1cmF0aW9ufXZhciB5VHQ9TSgoKT0+e0VzKCl9KTtmdW5jdGlvbiBRVGUoZSx0KXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7VWEodGhpcyxlKS5lYXNlPXR9fWZ1bmN0aW9uIHZUdChlKXt2YXIgdD10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goUVRlKHQsZSkpOkppKHRoaXMubm9kZSgpLHQpLmVhc2V9dmFyIHhUdD1NKCgpPT57RXMoKX0pO2Z1bmN0aW9uIGJUdChlKXt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9RzUoZSkpO2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPTA7aTxyOysraSlmb3IodmFyIG89dFtpXSxhPW8ubGVuZ3RoLHM9bltpXT1bXSxsLGM9MDtjPGE7KytjKShsPW9bY10pJiZlLmNhbGwobCxsLl9fZGF0YV9fLGMsbykmJnMucHVzaChsKTtyZXR1cm4gbmV3IGNhKG4sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX12YXIgd1R0PU0oKCk9PntNcygpO0dwKCl9KTtmdW5jdGlvbiBTVHQoZSl7aWYoZS5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPWUuX2dyb3VwcyxuPXQubGVuZ3RoLGk9ci5sZW5ndGgsbz1NYXRoLm1pbihuLGkpLGE9bmV3IEFycmF5KG4pLHM9MDtzPG87KytzKWZvcih2YXIgbD10W3NdLGM9cltzXSx1PWwubGVuZ3RoLGg9YVtzXT1uZXcgQXJyYXkodSksZixwPTA7cDx1OysrcCkoZj1sW3BdfHxjW3BdKSYmKGhbcF09Zik7Zm9yKDtzPG47KytzKWFbc109dFtzXTtyZXR1cm4gbmV3IGNhKGEsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX12YXIgTVR0PU0oKCk9PntHcCgpfSk7ZnVuY3Rpb24gdENlKGUpe3JldHVybihlKyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoZnVuY3Rpb24odCl7dmFyIHI9dC5pbmRleE9mKCIuIik7cmV0dXJuIHI+PTAmJih0PXQuc2xpY2UoMCxyKSksIXR8fHQ9PT0ic3RhcnQifSl9ZnVuY3Rpb24gZUNlKGUsdCxyKXt2YXIgbixpLG89dENlKHQpP2FUOlVhO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyxlKSxzPWEub247cyE9PW4mJihpPShuPXMpLmNvcHkoKSkub24odCxyKSxhLm9uPWl9fWZ1bmN0aW9uIEVUdChlLHQpe3ZhciByPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/SmkodGhpcy5ub2RlKCkscikub24ub24oZSk6dGhpcy5lYWNoKGVDZShyLGUsdCkpfXZhciBUVHQ9TSgoKT0+e0VzKCl9KTtmdW5jdGlvbiByQ2UoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgciBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrciE9PWUpcmV0dXJuO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9fWZ1bmN0aW9uIENUdCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIixyQ2UodGhpcy5faWQpKX12YXIgQVR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBQVHQoZSl7dmFyIHQ9dGhpcy5fbmFtZSxyPXRoaXMuX2lkO3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1teShlKSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLG89bmV3IEFycmF5KGkpLGE9MDthPGk7KythKWZvcih2YXIgcz1uW2FdLGw9cy5sZW5ndGgsYz1vW2FdPW5ldyBBcnJheShsKSx1LGgsZj0wO2Y8bDsrK2YpKHU9c1tmXSkmJihoPWUuY2FsbCh1LHUuX19kYXRhX18sZixzKSkmJigiX19kYXRhX18iaW4gdSYmKGguX19kYXRhX189dS5fX2RhdGFfXyksY1tmXT1oLHNnKGNbZl0sdCxyLGYsYyxKaSh1LHIpKSk7cmV0dXJuIG5ldyBjYShvLHRoaXMuX3BhcmVudHMsdCxyKX12YXIgSVR0PU0oKCk9PntNcygpO0dwKCk7RXMoKX0pO2Z1bmN0aW9uIExUdChlKXt2YXIgdD10aGlzLl9uYW1lLHI9dGhpcy5faWQ7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPXE1KGUpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPGk7KytzKWZvcih2YXIgbD1uW3NdLGM9bC5sZW5ndGgsdSxoPTA7aDxjOysraClpZih1PWxbaF0pe2Zvcih2YXIgZj1lLmNhbGwodSx1Ll9fZGF0YV9fLGgsbCkscCxkPUppKHUsciksZz0wLF89Zi5sZW5ndGg7ZzxfOysrZykocD1mW2ddKSYmc2cocCx0LHIsZyxmLGQpO28ucHVzaChmKSxhLnB1c2godSl9cmV0dXJuIG5ldyBjYShvLGEsdCxyKX12YXIga1R0PU0oKCk9PntNcygpO0dwKCk7RXMoKX0pO2Z1bmN0aW9uIFJUdCgpe3JldHVybiBuZXcgbkNlKHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX12YXIgbkNlLE5UdD1NKCgpPT57TXMoKTtuQ2U9VXAucHJvdG90eXBlLmNvbnN0cnVjdG9yfSk7ZnVuY3Rpb24gaUNlKGUsdCl7dmFyIHIsbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWFnKHRoaXMsZSksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKSxhZyh0aGlzLGUpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09ciYmYT09PW4/aTppPXQocj1vLG49YSl9fWZ1bmN0aW9uIERUdChlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpfX1mdW5jdGlvbiBvQ2UoZSx0LHIpe3ZhciBuLGk9cisiIixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWFnKHRoaXMsZSk7cmV0dXJuIGE9PT1pP251bGw6YT09PW4/bzpvPXQobj1hLHIpfX1mdW5jdGlvbiBhQ2UoZSx0LHIpe3ZhciBuLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1hZyh0aGlzLGUpLHM9cih0aGlzKSxsPXMrIiI7cmV0dXJuIHM9PW51bGwmJihsPXM9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSksYWcodGhpcyxlKSkpLGE9PT1sP251bGw6YT09PW4mJmw9PT1pP286KGk9bCxvPXQobj1hLHMpKX19ZnVuY3Rpb24gc0NlKGUsdCl7dmFyIHIsbixpLG89InN0eWxlLiIrdCxhPSJlbmQuIitvLHM7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9VWEodGhpcyxlKSxjPWwub24sdT1sLnZhbHVlW29dPT1udWxsP3N8fChzPURUdCh0KSk6dm9pZCAwOyhjIT09cnx8aSE9PXUpJiYobj0ocj1jKS5jb3B5KCkpLm9uKGEsaT11KSxsLm9uPW59fWZ1bmN0aW9uIE9UdChlLHQscil7dmFyIG49KGUrPSIiKT09InRyYW5zZm9ybSI/dUs6R1I7cmV0dXJuIHQ9PW51bGw/dGhpcy5zdHlsZVR3ZWVuKGUsaUNlKGUsbikpLm9uKCJlbmQuc3R5bGUuIitlLERUdChlKSk6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dGhpcy5zdHlsZVR3ZWVuKGUsYUNlKGUsbixwMih0aGlzLCJzdHlsZS4iK2UsdCkpKS5lYWNoKHNDZSh0aGlzLl9pZCxlKSk6dGhpcy5zdHlsZVR3ZWVuKGUsb0NlKGUsbix0KSxyKS5vbigiZW5kLnN0eWxlLiIrZSxudWxsKX12YXIgelR0PU0oKCk9PntRNSgpO01zKCk7RXMoKTtzVCgpO19LKCl9KTtmdW5jdGlvbiBsQ2UoZSx0LHIpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KGUsdC5jYWxsKHRoaXMsbikscil9fWZ1bmN0aW9uIGNDZShlLHQscil7dmFyIG4saTtmdW5jdGlvbiBvKCl7dmFyIGE9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1pJiYobj0oaT1hKSYmbENlKGUsYSxyKSksbn1yZXR1cm4gby5fdmFsdWU9dCxvfWZ1bmN0aW9uIEZUdChlLHQscil7dmFyIG49InN0eWxlLiIrKGUrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4obixjQ2UoZSx0LHI9PW51bGw/IiI6cikpfXZhciBCVHQ9TSgoKT0+e30pO2Z1bmN0aW9uIHVDZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PWV9fWZ1bmN0aW9uIGhDZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiBIVHQoZSl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLHR5cGVvZiBlPT0iZnVuY3Rpb24iP2hDZShwMih0aGlzLCJ0ZXh0IixlKSk6dUNlKGU9PW51bGw/IiI6ZSsiIikpfXZhciBWVHQ9TSgoKT0+e3NUKCl9KTtmdW5jdGlvbiBmQ2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMudGV4dENvbnRlbnQ9ZS5jYWxsKHRoaXMsdCl9fWZ1bmN0aW9uIHBDZShlKXt2YXIgdCxyO2Z1bmN0aW9uIG4oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJih0PShyPWkpJiZmQ2UoaSkpLHR9cmV0dXJuIG4uX3ZhbHVlPWUsbn1mdW5jdGlvbiBVVHQoZSl7dmFyIHQ9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4odD10aGlzLnR3ZWVuKHQpKSYmdC5fdmFsdWU7aWYoZT09bnVsbClyZXR1cm4gdGhpcy50d2Vlbih0LG51bGwpO2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2Vlbih0LHBDZShlKSl9dmFyIHFUdD1NKCgpPT57fSk7ZnVuY3Rpb24gR1R0KCl7Zm9yKHZhciBlPXRoaXMuX25hbWUsdD10aGlzLl9pZCxyPVdSKCksbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPTA7bzxpOysrbylmb3IodmFyIGE9bltvXSxzPWEubGVuZ3RoLGwsYz0wO2M8czsrK2MpaWYobD1hW2NdKXt2YXIgdT1KaShsLHQpO3NnKGwsZSxyLGMsYSx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgY2Eobix0aGlzLl9wYXJlbnRzLGUscil9dmFyIFdUdD1NKCgpPT57R3AoKTtFcygpfSk7ZnVuY3Rpb24gWVR0KCl7dmFyIGUsdCxyPXRoaXMsbj1yLl9pZCxpPXIuc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpey0taT09PTAmJm8oKX19O3IuZWFjaChmdW5jdGlvbigpe3ZhciBjPVVhKHRoaXMsbiksdT1jLm9uO3UhPT1lJiYodD0oZT11KS5jb3B5KCksdC5fLmNhbmNlbC5wdXNoKHMpLHQuXy5pbnRlcnJ1cHQucHVzaChzKSx0Ll8uZW5kLnB1c2gobCkpLGMub249dH0pfSl9dmFyIGpUdD1NKCgpPT57RXMoKX0pO2Z1bmN0aW9uIGNhKGUsdCxyLG4pe3RoaXMuX2dyb3Vwcz1lLHRoaXMuX3BhcmVudHM9dCx0aGlzLl9uYW1lPXIsdGhpcy5faWQ9bn1mdW5jdGlvbiB5SyhlKXtyZXR1cm4gVXAoKS50cmFuc2l0aW9uKGUpfWZ1bmN0aW9uIFdSKCl7cmV0dXJuKytkQ2V9dmFyIGRDZSxkMixHcD1NKCgpPT57TXMoKTtmVHQoKTtkVHQoKTtnVHQoKTt5VHQoKTt4VHQoKTt3VHQoKTtNVHQoKTtUVHQoKTtBVHQoKTtJVHQoKTtrVHQoKTtOVHQoKTt6VHQoKTtCVHQoKTtWVHQoKTtxVHQoKTtXVHQoKTtzVCgpO2pUdCgpO2RDZT0wO2QyPVVwLnByb3RvdHlwZTtjYS5wcm90b3R5cGU9eUsucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjYSxzZWxlY3Q6UFR0LHNlbGVjdEFsbDpMVHQsZmlsdGVyOmJUdCxtZXJnZTpTVHQsc2VsZWN0aW9uOlJUdCx0cmFuc2l0aW9uOkdUdCxjYWxsOmQyLmNhbGwsbm9kZXM6ZDIubm9kZXMsbm9kZTpkMi5ub2RlLHNpemU6ZDIuc2l6ZSxlbXB0eTpkMi5lbXB0eSxlYWNoOmQyLmVhY2gsb246RVR0LGF0dHI6aFR0LGF0dHJUd2VlbjpwVHQsc3R5bGU6T1R0LHN0eWxlVHdlZW46RlR0LHRleHQ6SFR0LHRleHRUd2VlbjpVVHQscmVtb3ZlOkNUdCx0d2Vlbjp1VHQsZGVsYXk6bVR0LGR1cmF0aW9uOl9UdCxlYXNlOnZUdCxlbmQ6WVR0fX0pO2Z1bmN0aW9uIG1DZShlLHQpe2Zvcih2YXIgcjshKHI9ZS5fX3RyYW5zaXRpb24pfHwhKHI9clt0XSk7KWlmKCEoZT1lLnBhcmVudE5vZGUpKXJldHVybiB2Sy50aW1lPWgyKCksdks7cmV0dXJuIHJ9ZnVuY3Rpb24gWFR0KGUpe3ZhciB0LHI7ZSBpbnN0YW5jZW9mIGNhPyh0PWUuX2lkLGU9ZS5fbmFtZSk6KHQ9V1IoKSwocj12SykudGltZT1oMigpLGU9ZT09bnVsbD9udWxsOmUrIiIpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPTA7bzxpOysrbylmb3IodmFyIGE9bltvXSxzPWEubGVuZ3RoLGwsYz0wO2M8czsrK2MpKGw9YVtjXSkmJnNnKGwsZSx0LGMsYSxyfHxtQ2UobCx0KSk7cmV0dXJuIG5ldyBjYShuLHRoaXMuX3BhcmVudHMsZSx0KX12YXIgdkssJFR0PU0oKCk9PntHcCgpO0VzKCk7SV8oKTtkSygpO3ZLPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTp2c319KTt2YXIgS1R0PU0oKCk9PntNcygpO2NUdCgpOyRUdCgpO1VwLnByb3RvdHlwZS5pbnRlcnJ1cHQ9bFR0O1VwLnByb3RvdHlwZS50cmFuc2l0aW9uPVhUdH0pO3ZhciBaVHQ9TSgoKT0+e0dwKCk7RXMoKX0pO3ZhciBKVHQ9TSgoKT0+e0tUdCgpO0dwKCk7WlR0KCk7Z0soKX0pO2Z1bmN0aW9uIHhLKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgUVR0PU0oKCk9Pnt9KTtmdW5jdGlvbiB0Q3QoZSx0LHIpe3RoaXMudGFyZ2V0PWUsdGhpcy50eXBlPXQsdGhpcy5zZWxlY3Rpb249cn12YXIgZUN0PU0oKCk9Pnt9KTtmdW5jdGlvbiBiSygpe3dyLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGxUKCl7d3IucHJldmVudERlZmF1bHQoKSx3ci5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX12YXIgckN0PU0oKCk9PntNcygpfSk7ZnVuY3Rpb24gY1QoZSl7cmV0dXJue3R5cGU6ZX19ZnVuY3Rpb24gdkNlKCl7cmV0dXJuIXdyLmJ1dHRvbn1mdW5jdGlvbiB4Q2UoKXt2YXIgZT10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm5bWzAsMF0sW2Uud2lkdGguYmFzZVZhbC52YWx1ZSxlLmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gU0soZSl7Zm9yKDshZS5fX2JydXNoOylpZighKGU9ZS5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIGUuX19icnVzaH1mdW5jdGlvbiBNSyhlKXtyZXR1cm4gZVswXVswXT09PWVbMV1bMF18fGVbMF1bMV09PT1lWzFdWzFdfWZ1bmN0aW9uIGFDdChlKXt2YXIgdD1lLl9fYnJ1c2g7cmV0dXJuIHQ/dC5kaW0ub3V0cHV0KHQuc2VsZWN0aW9uKTpudWxsfWZ1bmN0aW9uIHNDdCgpe3JldHVybiBFSyhZUil9ZnVuY3Rpb24gbEN0KCl7cmV0dXJuIEVLKGpSKX1mdW5jdGlvbiBjQ3QoKXtyZXR1cm4gRUsoZ0NlKX1mdW5jdGlvbiBFSyhlKXt2YXIgdD14Q2Uscj12Q2Usbj1VNShhLCJzdGFydCIsImJydXNoIiwiZW5kIiksaT02LG87ZnVuY3Rpb24gYShmKXt2YXIgcD1mLnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbY1QoIm92ZXJsYXkiKV0pO3AuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsV3Aub3ZlcmxheSkubWVyZ2UocCkuZWFjaChmdW5jdGlvbigpe3ZhciBnPVNLKHRoaXMpLmV4dGVudDtxcCh0aGlzKS5hdHRyKCJ4IixnWzBdWzBdKS5hdHRyKCJ5IixnWzBdWzFdKS5hdHRyKCJ3aWR0aCIsZ1sxXVswXS1nWzBdWzBdKS5hdHRyKCJoZWlnaHQiLGdbMV1bMV0tZ1swXVsxXSl9KSxmLnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLmRhdGEoW2NUKCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLFdwLnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciBkPWYuc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YShlLmhhbmRsZXMsZnVuY3Rpb24oZyl7cmV0dXJuIGcudHlwZX0pO2QuZXhpdCgpLnJlbW92ZSgpLGQuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZyl7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrZy50eXBlfSkuYXR0cigiY3Vyc29yIixmdW5jdGlvbihnKXtyZXR1cm4gV3BbZy50eXBlXX0pLGYuZWFjaChzKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3duLmJydXNoIHRvdWNoc3RhcnQuYnJ1c2giLHUpfWEubW92ZT1mdW5jdGlvbihmLHApe2Yuc2VsZWN0aW9uP2Yub24oInN0YXJ0LmJydXNoIixmdW5jdGlvbigpe2wodGhpcyxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCkuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIixmdW5jdGlvbigpe2wodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkudHdlZW4oImJydXNoIixmdW5jdGlvbigpe3ZhciBkPXRoaXMsZz1kLl9fYnJ1c2gsXz1sKGQsYXJndW1lbnRzKSx5PWcuc2VsZWN0aW9uLHg9ZS5pbnB1dCh0eXBlb2YgcD09ImZ1bmN0aW9uIj9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpwLGcuZXh0ZW50KSxiPV95KHkseCk7ZnVuY3Rpb24gUyhDKXtnLnNlbGVjdGlvbj1DPT09MSYmTUsoeCk/bnVsbDpiKEMpLHMuY2FsbChkKSxfLmJydXNoKCl9cmV0dXJuIHkmJng/UzpTKDEpfSk6Zi5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcyxnPWFyZ3VtZW50cyxfPWQuX19icnVzaCx5PWUuaW5wdXQodHlwZW9mIHA9PSJmdW5jdGlvbiI/cC5hcHBseShkLGcpOnAsXy5leHRlbnQpLHg9bChkLGcpLmJlZm9yZXN0YXJ0KCk7ZjIoZCksXy5zZWxlY3Rpb249eT09bnVsbHx8TUsoeSk/bnVsbDp5LHMuY2FsbChkKSx4LnN0YXJ0KCkuYnJ1c2goKS5lbmQoKX0pfTtmdW5jdGlvbiBzKCl7dmFyIGY9cXAodGhpcykscD1TSyh0aGlzKS5zZWxlY3Rpb247cD8oZi5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIscFswXVswXSkuYXR0cigieSIscFswXVsxXSkuYXR0cigid2lkdGgiLHBbMV1bMF0tcFswXVswXSkuYXR0cigiaGVpZ2h0IixwWzFdWzFdLXBbMF1bMV0pLGYuc2VsZWN0QWxsKCIuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGZ1bmN0aW9uKGQpe3JldHVybiBkLnR5cGVbZC50eXBlLmxlbmd0aC0xXT09PSJlIj9wWzFdWzBdLWkvMjpwWzBdWzBdLWkvMn0pLmF0dHIoInkiLGZ1bmN0aW9uKGQpe3JldHVybiBkLnR5cGVbMF09PT0icyI/cFsxXVsxXS1pLzI6cFswXVsxXS1pLzJ9KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24oZCl7cmV0dXJuIGQudHlwZT09PSJuInx8ZC50eXBlPT09InMiP3BbMV1bMF0tcFswXVswXStpOml9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKGQpe3JldHVybiBkLnR5cGU9PT0iZSJ8fGQudHlwZT09PSJ3Ij9wWzFdWzFdLXBbMF1bMV0raTppfSkpOmYuc2VsZWN0QWxsKCIuc2VsZWN0aW9uLC5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKS5hdHRyKCJ4IixudWxsKS5hdHRyKCJ5IixudWxsKS5hdHRyKCJ3aWR0aCIsbnVsbCkuYXR0cigiaGVpZ2h0IixudWxsKX1mdW5jdGlvbiBsKGYscCl7cmV0dXJuIGYuX19icnVzaC5lbWl0dGVyfHxuZXcgYyhmLHApfWZ1bmN0aW9uIGMoZixwKXt0aGlzLnRoYXQ9Zix0aGlzLmFyZ3M9cCx0aGlzLnN0YXRlPWYuX19icnVzaCx0aGlzLmFjdGl2ZT0wfWMucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybisrdGhpcy5hY3RpdmU9PT0xJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZyYmKHRoaXMuc3RhcnRpbmc9ITEsdGhpcy5lbWl0KCJzdGFydCIpKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuLS10aGlzLmFjdGl2ZT09PTAmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oZil7WCQobmV3IHRDdChhLGYsZS5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxuLmFwcGx5LG4sW2YsdGhpcy50aGF0LHRoaXMuYXJnc10pfX07ZnVuY3Rpb24gdSgpe2lmKHdyLnRvdWNoZXMpe2lmKHdyLmNoYW5nZWRUb3VjaGVzLmxlbmd0aDx3ci50b3VjaGVzLmxlbmd0aClyZXR1cm4gbFQoKX1lbHNlIGlmKG8pcmV0dXJuO2lmKCFyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm47dmFyIGY9dGhpcyxwPXdyLnRhcmdldC5fX2RhdGFfXy50eXBlLGQ9KHdyLm1ldGFLZXk/cD0ib3ZlcmxheSI6cCk9PT0ic2VsZWN0aW9uIj9uQ3Q6d3IuYWx0S2V5P2cyOm0yLGc9ZT09PWpSP251bGw6X0NlW3BdLF89ZT09PVlSP251bGw6eUNlW3BdLHk9U0soZikseD15LmV4dGVudCxiPXkuc2VsZWN0aW9uLFM9eFswXVswXSxDLFAsaz14WzBdWzFdLE8sRCxCPXhbMV1bMF0sSSxMLFI9eFsxXVsxXSxGLHosVSxXLFoscnQ9ZyYmXyYmd3Iuc2hpZnRLZXksb3Qsc3QsU3Q9VFIoZiksYnQ9U3QsTXQ9bChmLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKTtwPT09Im92ZXJsYXkiP3kuc2VsZWN0aW9uPWI9W1tDPWU9PT1qUj9TOlN0WzBdLE89ZT09PVlSP2s6U3RbMV1dLFtJPWU9PT1qUj9COkMsRj1lPT09WVI/UjpPXV06KEM9YlswXVswXSxPPWJbMF1bMV0sST1iWzFdWzBdLEY9YlsxXVsxXSksUD1DLEQ9TyxMPUksej1GO3ZhciBsdD1xcChmKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxLdD1sdC5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixXcFtwXSk7aWYod3IudG91Y2hlcylsdC5vbigidG91Y2htb3ZlLmJydXNoIixjdCwhMCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixldCwhMCk7ZWxzZXt2YXIgX3Q9cXAod3Iudmlldykub24oImtleWRvd24uYnJ1c2giLGR0LCEwKS5vbigia2V5dXAuYnJ1c2giLHEsITApLm9uKCJtb3VzZW1vdmUuYnJ1c2giLGN0LCEwKS5vbigibW91c2V1cC5icnVzaCIsZXQsITApO0skKHdyLnZpZXcpfWJLKCksZjIoZikscy5jYWxsKGYpLE10LnN0YXJ0KCk7ZnVuY3Rpb24gY3QoKXt2YXIgcHQ9VFIoZik7cnQmJiFvdCYmIXN0JiYoTWF0aC5hYnMocHRbMF0tYnRbMF0pPk1hdGguYWJzKHB0WzFdLWJ0WzFdKT9zdD0hMDpvdD0hMCksYnQ9cHQsWj0hMCxsVCgpLFgoKX1mdW5jdGlvbiBYKCl7dmFyIHB0O3N3aXRjaChVPWJ0WzBdLVN0WzBdLFc9YnRbMV0tU3RbMV0sZCl7Y2FzZSB3SzpjYXNlIG5DdDp7ZyYmKFU9TWF0aC5tYXgoUy1DLE1hdGgubWluKEItSSxVKSksUD1DK1UsTD1JK1UpLF8mJihXPU1hdGgubWF4KGstTyxNYXRoLm1pbihSLUYsVykpLEQ9TytXLHo9RitXKTticmVha31jYXNlIG0yOntnPDA/KFU9TWF0aC5tYXgoUy1DLE1hdGgubWluKEItQyxVKSksUD1DK1UsTD1JKTpnPjAmJihVPU1hdGgubWF4KFMtSSxNYXRoLm1pbihCLUksVSkpLFA9QyxMPUkrVSksXzwwPyhXPU1hdGgubWF4KGstTyxNYXRoLm1pbihSLU8sVykpLEQ9TytXLHo9Rik6Xz4wJiYoVz1NYXRoLm1heChrLUYsTWF0aC5taW4oUi1GLFcpKSxEPU8sej1GK1cpO2JyZWFrfWNhc2UgZzI6e2cmJihQPU1hdGgubWF4KFMsTWF0aC5taW4oQixDLVUqZykpLEw9TWF0aC5tYXgoUyxNYXRoLm1pbihCLEkrVSpnKSkpLF8mJihEPU1hdGgubWF4KGssTWF0aC5taW4oUixPLVcqXykpLHo9TWF0aC5tYXgoayxNYXRoLm1pbihSLEYrVypfKSkpO2JyZWFrfX1MPFAmJihnKj0tMSxwdD1DLEM9SSxJPXB0LHB0PVAsUD1MLEw9cHQscCBpbiBpQ3QmJkt0LmF0dHIoImN1cnNvciIsV3BbcD1pQ3RbcF1dKSksejxEJiYoXyo9LTEscHQ9TyxPPUYsRj1wdCxwdD1ELEQ9eix6PXB0LHAgaW4gb0N0JiZLdC5hdHRyKCJjdXJzb3IiLFdwW3A9b0N0W3BdXSkpLHkuc2VsZWN0aW9uJiYoYj15LnNlbGVjdGlvbiksb3QmJihQPWJbMF1bMF0sTD1iWzFdWzBdKSxzdCYmKEQ9YlswXVsxXSx6PWJbMV1bMV0pLChiWzBdWzBdIT09UHx8YlswXVsxXSE9PUR8fGJbMV1bMF0hPT1MfHxiWzFdWzFdIT09eikmJih5LnNlbGVjdGlvbj1bW1AsRF0sW0wsel1dLHMuY2FsbChmKSxNdC5icnVzaCgpKX1mdW5jdGlvbiBldCgpe2lmKGJLKCksd3IudG91Y2hlcyl7aWYod3IudG91Y2hlcy5sZW5ndGgpcmV0dXJuO28mJmNsZWFyVGltZW91dChvKSxvPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvPW51bGx9LDUwMCksbHQub24oInRvdWNobW92ZS5icnVzaCB0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsbnVsbCl9ZWxzZSBaJCh3ci52aWV3LFopLF90Lm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtsdC5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLEt0LmF0dHIoImN1cnNvciIsV3Aub3ZlcmxheSkseS5zZWxlY3Rpb24mJihiPXkuc2VsZWN0aW9uKSxNSyhiKSYmKHkuc2VsZWN0aW9uPW51bGwscy5jYWxsKGYpKSxNdC5lbmQoKX1mdW5jdGlvbiBkdCgpe3N3aXRjaCh3ci5rZXlDb2RlKXtjYXNlIDE2OntydD1nJiZfO2JyZWFrfWNhc2UgMTg6e2Q9PT1tMiYmKGcmJihJPUwtVSpnLEM9UCtVKmcpLF8mJihGPXotVypfLE89RCtXKl8pLGQ9ZzIsWCgpKTticmVha31jYXNlIDMyOnsoZD09PW0yfHxkPT09ZzIpJiYoZzwwP0k9TC1VOmc+MCYmKEM9UC1VKSxfPDA/Rj16LVc6Xz4wJiYoTz1ELVcpLGQ9d0ssS3QuYXR0cigiY3Vyc29yIixXcC5zZWxlY3Rpb24pLFgoKSk7YnJlYWt9ZGVmYXVsdDpyZXR1cm59bFQoKX1mdW5jdGlvbiBxKCl7c3dpdGNoKHdyLmtleUNvZGUpe2Nhc2UgMTY6e3J0JiYob3Q9c3Q9cnQ9ITEsWCgpKTticmVha31jYXNlIDE4OntkPT09ZzImJihnPDA/ST1MOmc+MCYmKEM9UCksXzwwP0Y9ejpfPjAmJihPPUQpLGQ9bTIsWCgpKTticmVha31jYXNlIDMyOntkPT09d0smJih3ci5hbHRLZXk/KGcmJihJPUwtVSpnLEM9UCtVKmcpLF8mJihGPXotVypfLE89RCtXKl8pLGQ9ZzIpOihnPDA/ST1MOmc+MCYmKEM9UCksXzwwP0Y9ejpfPjAmJihPPUQpLGQ9bTIpLEt0LmF0dHIoImN1cnNvciIsV3BbcF0pLFgoKSk7YnJlYWt9ZGVmYXVsdDpyZXR1cm59bFQoKX19ZnVuY3Rpb24gaCgpe3ZhciBmPXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gZi5leHRlbnQ9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksZi5kaW09ZSxmfXJldHVybiBhLmV4dGVudD1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgZj09ImZ1bmN0aW9uIj9mOnhLKFtbK2ZbMF1bMF0sK2ZbMF1bMV1dLFsrZlsxXVswXSwrZlsxXVsxXV1dKSxhKTp0fSxhLmZpbHRlcj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgZj09ImZ1bmN0aW9uIj9mOnhLKCEhZiksYSk6cn0sYS5oYW5kbGVTaXplPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPStmLGEpOml9LGEub249ZnVuY3Rpb24oKXt2YXIgZj1uLm9uLmFwcGx5KG4sYXJndW1lbnRzKTtyZXR1cm4gZj09PW4/YTpmfSxhfXZhciBuQ3Qsd0ssbTIsZzIsWVIsalIsZ0NlLFdwLGlDdCxvQ3QsX0NlLHlDZSx1Q3Q9TSgoKT0+e3okKCk7eDV0KCk7UTUoKTtNcygpO0pUdCgpO1FUdCgpO2VDdCgpO3JDdCgpO25DdD17bmFtZToiZHJhZyJ9LHdLPXtuYW1lOiJzcGFjZSJ9LG0yPXtuYW1lOiJoYW5kbGUifSxnMj17bmFtZToiY2VudGVyIn0sWVI9e25hbWU6IngiLGhhbmRsZXM6WyJlIiwidyJdLm1hcChjVCksaW5wdXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSYmW1tlWzBdLHRbMF1bMV1dLFtlWzFdLHRbMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZbZVswXVswXSxlWzFdWzBdXX19LGpSPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAoY1QpLGlucHV0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJltbdFswXVswXSxlWzBdXSxbdFsxXVswXSxlWzFdXV19LG91dHB1dDpmdW5jdGlvbihlKXtyZXR1cm4gZSYmW2VbMF1bMV0sZVsxXVsxXV19fSxnQ2U9e25hbWU6Inh5IixoYW5kbGVzOlsibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0ubWFwKGNUKSxpbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4gZX0sb3V0cHV0OmZ1bmN0aW9uKGUpe3JldHVybiBlfX0sV3A9e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LGlDdD17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sb0N0PXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSxfQ2U9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0seUNlPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjotMSxlOm51bGwsczoxLHc6bnVsbCxudzotMSxuZTotMSxzZToxLHN3OjF9fSk7dmFyIGhDdD1NKCgpPT57dUN0KCl9KTtmdW5jdGlvbiBsZyhlLHQpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn12YXIgdnk9TSgoKT0+e30pO2Z1bmN0aW9uIFRLKGUpe3JldHVybiBlLmxlbmd0aD09PTEmJihlPWJDZShlKSkse2xlZnQ6ZnVuY3Rpb24odCxyLG4saSl7Zm9yKG49PW51bGwmJihuPTApLGk9PW51bGwmJihpPXQubGVuZ3RoKTtuPGk7KXt2YXIgbz1uK2k+Pj4xO2UodFtvXSxyKTwwP249bysxOmk9b31yZXR1cm4gbn0scmlnaHQ6ZnVuY3Rpb24odCxyLG4saSl7Zm9yKG49PW51bGwmJihuPTApLGk9PW51bGwmJihpPXQubGVuZ3RoKTtuPGk7KXt2YXIgbz1uK2k+Pj4xO2UodFtvXSxyKT4wP2k9bzpuPW8rMX1yZXR1cm4gbn19fWZ1bmN0aW9uIGJDZShlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtyZXR1cm4gbGcoZSh0KSxyKX19dmFyIENLPU0oKCk9Pnt2eSgpfSk7dmFyIGZDdCx3Q2UsU0NlLEFLPU0oKCk9Pnt2eSgpO0NLKCk7ZkN0PVRLKGxnKSx3Q2U9ZkN0LnJpZ2h0LFNDZT1mQ3QubGVmdH0pO3ZhciBQSz1NKCgpPT57fSk7dmFyIHBDdD1NKCgpPT57UEsoKX0pO3ZhciBkQ3Q9TSgoKT0+e30pO3ZhciBfMj1NKCgpPT57fSk7dmFyIElLPU0oKCk9PntfMigpfSk7dmFyIExLPU0oKCk9PntJSygpfSk7dmFyIGtLPU0oKCk9Pnt9KTt2YXIgbUN0LEVDZSxUQ2UsUks9TSgoKT0+e21DdD1BcnJheS5wcm90b3R5cGUsRUNlPW1DdC5zbGljZSxUQ2U9bUN0Lm1hcH0pO3ZhciBnQ3Q9TSgoKT0+e30pO3ZhciBfQ3Q9TSgoKT0+e30pO2Z1bmN0aW9uIHVUKGUsdCxyKXtlPStlLHQ9K3Qscj0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyh0PWUsZT0wLDEpOmk8Mz8xOityO2Zvcih2YXIgbj0tMSxpPU1hdGgubWF4KDAsTWF0aC5jZWlsKCh0LWUpL3IpKXwwLG89bmV3IEFycmF5KGkpOysrbjxpOylvW25dPWUrbipyO3JldHVybiBvfXZhciBOSz1NKCgpPT57fSk7dmFyIGlsbixvbG4sYWxuLERLPU0oKCk9PntpbG49TWF0aC5zcXJ0KDUwKSxvbG49TWF0aC5zcXJ0KDEwKSxhbG49TWF0aC5zcXJ0KDIpfSk7dmFyIE9LPU0oKCk9Pnt9KTt2YXIgeUN0PU0oKCk9PntSSygpO0FLKCk7Z0N0KCk7a0soKTtfQ3QoKTtOSygpO0RLKCk7T0soKX0pO3ZhciAkUj1NKCgpPT57XzIoKX0pO3ZhciB4Q3Q9TSgoKT0+e1JLKCk7dnkoKTtfMigpOyRSKCl9KTt2YXIgYkN0PU0oKCk9PntMSygpfSk7dmFyIHdDdD1NKCgpPT57fSk7dmFyIFNDdD1NKCgpPT57XzIoKX0pO3ZhciBNQ3Q9TSgoKT0+e3Z5KCk7XzIoKTskUigpfSk7dmFyIEVDdD1NKCgpPT57fSk7dmFyIHpLPU0oKCk9Pnt9KTt2YXIgVEN0PU0oKCk9Pnt9KTt2YXIgQ0N0PU0oKCk9Pnt2eSgpfSk7dmFyIEFDdD1NKCgpPT57fSk7dmFyIFBDdD1NKCgpPT57fSk7dmFyIEZLPU0oKCk9Pnt6SygpfSk7dmFyIElDdD1NKCgpPT57RksoKX0pO3ZhciBMQ3Q9TSgoKT0+e0FLKCk7dnkoKTtDSygpO3BDdCgpO2RDdCgpO0xLKCk7a0soKTt5Q3QoKTt4Q3QoKTtiQ3QoKTtPSygpO3dDdCgpO1NDdCgpO01DdCgpO0VDdCgpO3pLKCk7UEsoKTtUQ3QoKTskUigpO05LKCk7Q0N0KCk7QUN0KCk7UEN0KCk7REsoKTtGSygpO0lLKCk7SUN0KCl9KTt2YXIgQkssSEssa0N0LGhULFZLLFVLLHFLPU0oKCk9PntCSz1NYXRoLmNvcyxISz1NYXRoLnNpbixrQ3Q9TWF0aC5QSSxoVD1rQ3QvMixWSz1rQ3QqMixVSz1NYXRoLm1heH0pO2Z1bmN0aW9uIE5DZShlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtyZXR1cm4gZSh0LnNvdXJjZS52YWx1ZSt0LnRhcmdldC52YWx1ZSxyLnNvdXJjZS52YWx1ZStyLnRhcmdldC52YWx1ZSl9fWZ1bmN0aW9uIFJDdCgpe3ZhciBlPTAsdD1udWxsLHI9bnVsbCxuPW51bGw7ZnVuY3Rpb24gaShvKXt2YXIgYT1vLmxlbmd0aCxzPVtdLGw9dVQoYSksYz1bXSx1PVtdLGg9dS5ncm91cHM9bmV3IEFycmF5KGEpLGY9bmV3IEFycmF5KGEqYSkscCxkLGcsXyx5LHg7Zm9yKHA9MCx5PS0xOysreTxhOyl7Zm9yKGQ9MCx4PS0xOysreDxhOylkKz1vW3ldW3hdO3MucHVzaChkKSxjLnB1c2godVQoYSkpLHArPWR9Zm9yKHQmJmwuc29ydChmdW5jdGlvbihCLEkpe3JldHVybiB0KHNbQl0sc1tJXSl9KSxyJiZjLmZvckVhY2goZnVuY3Rpb24oQixJKXtCLnNvcnQoZnVuY3Rpb24oTCxSKXtyZXR1cm4gcihvW0ldW0xdLG9bSV1bUl0pfSl9KSxwPVVLKDAsVkstZSphKS9wLF89cD9lOlZLL2EsZD0wLHk9LTE7Kyt5PGE7KXtmb3IoZz1kLHg9LTE7Kyt4PGE7KXt2YXIgYj1sW3ldLFM9Y1tiXVt4XSxDPW9bYl1bU10sUD1kLGs9ZCs9QypwO2ZbUyphK2JdPXtpbmRleDpiLHN1YmluZGV4OlMsc3RhcnRBbmdsZTpQLGVuZEFuZ2xlOmssdmFsdWU6Q319aFtiXT17aW5kZXg6YixzdGFydEFuZ2xlOmcsZW5kQW5nbGU6ZCx2YWx1ZTpzW2JdfSxkKz1ffWZvcih5PS0xOysreTxhOylmb3IoeD15LTE7Kyt4PGE7KXt2YXIgTz1mW3gqYSt5XSxEPWZbeSphK3hdOyhPLnZhbHVlfHxELnZhbHVlKSYmdS5wdXNoKE8udmFsdWU8RC52YWx1ZT97c291cmNlOkQsdGFyZ2V0Ok99Ontzb3VyY2U6Tyx0YXJnZXQ6RH0pfXJldHVybiBuP3Uuc29ydChuKTp1fXJldHVybiBpLnBhZEFuZ2xlPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVVLKDAsbyksaSk6ZX0saS5zb3J0R3JvdXBzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW8saSk6dH0saS5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW8saSk6cn0saS5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPT1udWxsP249bnVsbDoobj1OQ2UobykpLl89byxpKTpuJiZuLl99LGl9dmFyIE5DdD1NKCgpPT57TEN0KCk7cUsoKX0pO3ZhciBEQ3QsT0N0PU0oKCk9PntEQ3Q9QXJyYXkucHJvdG90eXBlLnNsaWNlfSk7ZnVuY3Rpb24gS1IoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciB6Q3Q9TSgoKT0+e30pO2Z1bmN0aW9uIFlLKCl7dGhpcy5feDA9dGhpcy5feTA9dGhpcy5feDE9dGhpcy5feTE9bnVsbCx0aGlzLl89IiJ9ZnVuY3Rpb24gRkN0KCl7cmV0dXJuIG5ldyBZS312YXIgR0ssV0sseHksRENlLGpLLEJDdD1NKCgpPT57R0s9TWF0aC5QSSxXSz0yKkdLLHh5PTFlLTYsRENlPVdLLXh5O1lLLnByb3RvdHlwZT1GQ3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZSyxtb3ZlVG86ZnVuY3Rpb24oZSx0KXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K2UpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K3QpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl94MSE9PW51bGwmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbihlLHQpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rZSkrIiwiKyh0aGlzLl95MT0rdCl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24oZSx0LHIsbil7dGhpcy5fKz0iUSIrICtlKyIsIisgK3QrIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbil9LGJlemllckN1cnZlVG86ZnVuY3Rpb24oZSx0LHIsbixpLG8pe3RoaXMuXys9IkMiKyArZSsiLCIrICt0KyIsIisgK3IrIiwiKyArbisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24oZSx0LHIsbixpKXtlPStlLHQ9K3Qscj0rcixuPStuLGk9K2k7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPXItZSxsPW4tdCxjPW8tZSx1PWEtdCxoPWMqYyt1KnU7aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKHRoaXMuX3gxPT09bnVsbCl0aGlzLl8rPSJNIisodGhpcy5feDE9ZSkrIiwiKyh0aGlzLl95MT10KTtlbHNlIGlmKGg+eHkpaWYoIShNYXRoLmFicyh1KnMtbCpjKT54eSl8fCFpKXRoaXMuXys9IkwiKyh0aGlzLl94MT1lKSsiLCIrKHRoaXMuX3kxPXQpO2Vsc2V7dmFyIGY9ci1vLHA9bi1hLGQ9cypzK2wqbCxnPWYqZitwKnAsXz1NYXRoLnNxcnQoZCkseT1NYXRoLnNxcnQoaCkseD1pKk1hdGgudGFuKChHSy1NYXRoLmFjb3MoKGQraC1nKS8oMipfKnkpKSkvMiksYj14L3ksUz14L187TWF0aC5hYnMoYi0xKT54eSYmKHRoaXMuXys9IkwiKyhlK2IqYykrIiwiKyh0K2IqdSkpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyh1KmY+YypwKSsiLCIrKHRoaXMuX3gxPWUrUypzKSsiLCIrKHRoaXMuX3kxPXQrUypsKX19LGFyYzpmdW5jdGlvbihlLHQscixuLGksbyl7ZT0rZSx0PSt0LHI9K3Isbz0hIW87dmFyIGE9cipNYXRoLmNvcyhuKSxzPXIqTWF0aC5zaW4obiksbD1lK2EsYz10K3MsdT0xXm8saD1vP24taTppLW47aWYocjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO3RoaXMuX3gxPT09bnVsbD90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT54eXx8TWF0aC5hYnModGhpcy5feTEtYyk+eHkpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksciYmKGg8MCYmKGg9aCVXSytXSyksaD5EQ2U/dGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMSwiK3UrIiwiKyhlLWEpKyIsIisodC1zKSsiQSIrcisiLCIrcisiLDAsMSwiK3UrIiwiKyh0aGlzLl94MT1sKSsiLCIrKHRoaXMuX3kxPWMpOmg+eHkmJih0aGlzLl8rPSJBIityKyIsIityKyIsMCwiKyArKGg+PUdLKSsiLCIrdSsiLCIrKHRoaXMuX3gxPWUrcipNYXRoLmNvcyhpKSkrIiwiKyh0aGlzLl95MT10K3IqTWF0aC5zaW4oaSkpKSl9LHJlY3Q6ZnVuY3Rpb24oZSx0LHIsbil7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPStlKSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPSt0KSsiaCIrICtyKyJ2IisgK24rImgiKy1yKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07aks9RkN0fSk7dmFyIEhDdD1NKCgpPT57QkN0KCl9KTtmdW5jdGlvbiBPQ2UoZSl7cmV0dXJuIGUuc291cmNlfWZ1bmN0aW9uIHpDZShlKXtyZXR1cm4gZS50YXJnZXR9ZnVuY3Rpb24gRkNlKGUpe3JldHVybiBlLnJhZGl1c31mdW5jdGlvbiBCQ2UoZSl7cmV0dXJuIGUuc3RhcnRBbmdsZX1mdW5jdGlvbiBIQ2UoZSl7cmV0dXJuIGUuZW5kQW5nbGV9ZnVuY3Rpb24gVkN0KCl7dmFyIGU9T0NlLHQ9ekNlLHI9RkNlLG49QkNlLGk9SENlLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIHMsbD1EQ3QuY2FsbChhcmd1bWVudHMpLGM9ZS5hcHBseSh0aGlzLGwpLHU9dC5hcHBseSh0aGlzLGwpLGg9K3IuYXBwbHkodGhpcywobFswXT1jLGwpKSxmPW4uYXBwbHkodGhpcyxsKS1oVCxwPWkuYXBwbHkodGhpcyxsKS1oVCxkPWgqQksoZiksZz1oKkhLKGYpLF89K3IuYXBwbHkodGhpcywobFswXT11LGwpKSx5PW4uYXBwbHkodGhpcyxsKS1oVCx4PWkuYXBwbHkodGhpcyxsKS1oVDtpZihvfHwobz1zPWpLKCkpLG8ubW92ZVRvKGQsZyksby5hcmMoMCwwLGgsZixwKSwoZiE9PXl8fHAhPT14KSYmKG8ucXVhZHJhdGljQ3VydmVUbygwLDAsXypCSyh5KSxfKkhLKHkpKSxvLmFyYygwLDAsXyx5LHgpKSxvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLGQsZyksby5jbG9zZVBhdGgoKSxzKXJldHVybiBvPW51bGwscysiInx8bnVsbH1yZXR1cm4gYS5yYWRpdXM9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpLUigrcyksYSk6cn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6S1IoK3MpLGEpOm59LGEuZW5kQW5nbGU9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpLUigrcyksYSk6aX0sYS5zb3VyY2U9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cyxhKTplfSxhLnRhcmdldD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1zLGEpOnR9LGEuY29udGV4dD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1zPT1udWxsP251bGw6cyxhKTpvfSxhfXZhciBVQ3Q9TSgoKT0+e09DdCgpO3pDdCgpO3FLKCk7SEN0KCl9KTt2YXIgcUN0PU0oKCk9PntOQ3QoKTtVQ3QoKX0pO2Z1bmN0aW9uIFpSKCl7fWZ1bmN0aW9uIEdDdChlLHQpe3ZhciByPW5ldyBaUjtpZihlIGluc3RhbmNlb2YgWlIpZS5lYWNoKGZ1bmN0aW9uKHMsbCl7ci5zZXQobCxzKX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIG49LTEsaT1lLmxlbmd0aCxvO2lmKHQ9PW51bGwpZm9yKDsrK248aTspci5zZXQobixlW25dKTtlbHNlIGZvcig7KytuPGk7KXIuc2V0KHQobz1lW25dLG4sZSksbyl9ZWxzZSBpZihlKWZvcih2YXIgYSBpbiBlKXIuc2V0KGEsZVthXSk7cmV0dXJuIHJ9dmFyIHNsLGJ5LEpSPU0oKCk9PntzbD0iJCI7WlIucHJvdG90eXBlPUdDdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlpSLGhhczpmdW5jdGlvbihlKXtyZXR1cm4gc2wrZSBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbc2wrZV19LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzW3NsK2VdPXQsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0PXNsK2U7cmV0dXJuIHQgaW4gdGhpcyYmZGVsZXRlIHRoaXNbdF19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PXNsJiZkZWxldGUgdGhpc1tlXX0sa2V5czpmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1zbCYmZS5wdXNoKHQuc2xpY2UoMSkpO3JldHVybiBlfSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09c2wmJmUucHVzaCh0aGlzW3RdKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1zbCYmZS5wdXNoKHtrZXk6dC5zbGljZSgxKSx2YWx1ZTp0aGlzW3RdfSk7cmV0dXJuIGV9LHNpemU6ZnVuY3Rpb24oKXt2YXIgZT0wO2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1zbCYmKytlO3JldHVybiBlfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzKWlmKGVbMF09PT1zbClyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09c2wmJmUodGhpc1t0XSx0LnNsaWNlKDEpLHRoaXMpfX07Ynk9R0N0fSk7ZnVuY3Rpb24gakN0KCl7dmFyIGU9W10sdD1bXSxyLG4saTtmdW5jdGlvbiBvKHMsbCxjLHUpe2lmKGw+PWUubGVuZ3RoKXJldHVybiByIT1udWxsJiZzLnNvcnQociksbiE9bnVsbD9uKHMpOnM7Zm9yKHZhciBoPS0xLGY9cy5sZW5ndGgscD1lW2wrK10sZCxnLF89YnkoKSx5LHg9YygpOysraDxmOykoeT1fLmdldChkPXAoZz1zW2hdKSsiIikpP3kucHVzaChnKTpfLnNldChkLFtnXSk7cmV0dXJuIF8uZWFjaChmdW5jdGlvbihiLFMpe3UoeCxTLG8oYixsLGMsdSkpfSkseH1mdW5jdGlvbiBhKHMsbCl7aWYoKytsPmUubGVuZ3RoKXJldHVybiBzO3ZhciBjLHU9dFtsLTFdO3JldHVybiBuIT1udWxsJiZsPj1lLmxlbmd0aD9jPXMuZW50cmllcygpOihjPVtdLHMuZWFjaChmdW5jdGlvbihoLGYpe2MucHVzaCh7a2V5OmYsdmFsdWVzOmEoaCxsKX0pfSkpLHUhPW51bGw/Yy5zb3J0KGZ1bmN0aW9uKGgsZil7cmV0dXJuIHUoaC5rZXksZi5rZXkpfSk6Y31yZXR1cm4gaT17b2JqZWN0OmZ1bmN0aW9uKHMpe3JldHVybiBvKHMsMCxWQ2UsVUNlKX0sbWFwOmZ1bmN0aW9uKHMpe3JldHVybiBvKHMsMCxXQ3QsWUN0KX0sZW50cmllczpmdW5jdGlvbihzKXtyZXR1cm4gYShvKHMsMCxXQ3QsWUN0KSwwKX0sa2V5OmZ1bmN0aW9uKHMpe3JldHVybiBlLnB1c2gocyksaX0sc29ydEtleXM6ZnVuY3Rpb24ocyl7cmV0dXJuIHRbZS5sZW5ndGgtMV09cyxpfSxzb3J0VmFsdWVzOmZ1bmN0aW9uKHMpe3JldHVybiByPXMsaX0scm9sbHVwOmZ1bmN0aW9uKHMpe3JldHVybiBuPXMsaX19fWZ1bmN0aW9uIFZDZSgpe3JldHVybnt9fWZ1bmN0aW9uIFVDZShlLHQscil7ZVt0XT1yfWZ1bmN0aW9uIFdDdCgpe3JldHVybiBieSgpfWZ1bmN0aW9uIFlDdChlLHQscil7ZS5zZXQodCxyKX12YXIgWEN0PU0oKCk9PntKUigpfSk7ZnVuY3Rpb24gUVIoKXt9ZnVuY3Rpb24gJEN0KGUsdCl7dmFyIHI9bmV3IFFSO2lmKGUgaW5zdGFuY2VvZiBRUillLmVhY2goZnVuY3Rpb24obyl7ci5hZGQobyl9KTtlbHNlIGlmKGUpe3ZhciBuPS0xLGk9ZS5sZW5ndGg7aWYodD09bnVsbClmb3IoOysrbjxpOylyLmFkZChlW25dKTtlbHNlIGZvcig7KytuPGk7KXIuYWRkKHQoZVtuXSxuLGUpKX1yZXR1cm4gcn12YXIgd3ksS0N0LFpDdD1NKCgpPT57SlIoKTt3eT1ieS5wcm90b3R5cGU7UVIucHJvdG90eXBlPSRDdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlFSLGhhczp3eS5oYXMsYWRkOmZ1bmN0aW9uKGUpe3JldHVybiBlKz0iIix0aGlzW3NsK2VdPWUsdGhpc30scmVtb3ZlOnd5LnJlbW92ZSxjbGVhcjp3eS5jbGVhcix2YWx1ZXM6d3kua2V5cyxzaXplOnd5LnNpemUsZW1wdHk6d3kuZW1wdHksZWFjaDp3eS5lYWNofTtLQ3Q9JEN0fSk7ZnVuY3Rpb24gSkN0KGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdH12YXIgUUN0PU0oKCk9Pnt9KTtmdW5jdGlvbiB0QXQoZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKGVbcl0pO3JldHVybiB0fXZhciBlQXQ9TSgoKT0+e30pO2Z1bmN0aW9uIHJBdChlKXt2YXIgdD1bXTtmb3IodmFyIHIgaW4gZSl0LnB1c2goe2tleTpyLHZhbHVlOmVbcl19KTtyZXR1cm4gdH12YXIgbkF0PU0oKCk9Pnt9KTt2YXIgaUF0PU0oKCk9PntYQ3QoKTtaQ3QoKTtKUigpO1FDdCgpO2VBdCgpO25BdCgpfSk7ZnVuY3Rpb24gWXAoZSx0LHIpe2UucHJvdG90eXBlPXQucHJvdG90eXBlPXIsci5jb25zdHJ1Y3Rvcj1lfWZ1bmN0aW9uIGNnKGUsdCl7dmFyIHI9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSk7Zm9yKHZhciBuIGluIHQpcltuXT10W25dO3JldHVybiByfXZhciB0Tj1NKCgpPT57fSk7ZnVuY3Rpb24gUWgoKXt9ZnVuY3Rpb24gdjIoZSl7dmFyIHQ7cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PXFDZS5leGVjKGUpKT8odD1wYXJzZUludCh0WzFdLDE2KSxuZXcgUWkodD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCh0JjE1KTw8NHx0JjE1LDEpKToodD1HQ2UuZXhlYyhlKSk/YUF0KHBhcnNlSW50KHRbMV0sMTYpKToodD1XQ2UuZXhlYyhlKSk/bmV3IFFpKHRbMV0sdFsyXSx0WzNdLDEpOih0PVlDZS5leGVjKGUpKT9uZXcgUWkodFsxXSoyNTUvMTAwLHRbMl0qMjU1LzEwMCx0WzNdKjI1NS8xMDAsMSk6KHQ9akNlLmV4ZWMoZSkpP3NBdCh0WzFdLHRbMl0sdFszXSx0WzRdKToodD1YQ2UuZXhlYyhlKSk/c0F0KHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLHRbNF0pOih0PSRDZS5leGVjKGUpKT9sQXQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCwxKToodD1LQ2UuZXhlYyhlKSk/bEF0KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XSk6b0F0Lmhhc093blByb3BlcnR5KGUpP2FBdChvQXRbZV0pOmU9PT0idHJhbnNwYXJlbnQiP25ldyBRaShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIGFBdChlKXtyZXR1cm4gbmV3IFFpKGU+PjE2JjI1NSxlPj44JjI1NSxlJjI1NSwxKX1mdW5jdGlvbiBzQXQoZSx0LHIsbil7cmV0dXJuIG48PTAmJihlPXQ9cj1OYU4pLG5ldyBRaShlLHQscixuKX1mdW5jdGlvbiBwVChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFFofHwoZT12MihlKSksZT8oZT1lLnJnYigpLG5ldyBRaShlLnIsZS5nLGUuYixlLm9wYWNpdHkpKTpuZXcgUWl9ZnVuY3Rpb24gJEsoZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP3BUKGUpOm5ldyBRaShlLHQscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gUWkoZSx0LHIsbil7dGhpcy5yPStlLHRoaXMuZz0rdCx0aGlzLmI9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIGxBdChlLHQscixuKXtyZXR1cm4gbjw9MD9lPXQ9cj1OYU46cjw9MHx8cj49MT9lPXQ9TmFOOnQ8PTAmJihlPU5hTiksbmV3IFpoKGUsdCxyLG4pfWZ1bmN0aW9uIFpDZShlKXtpZihlIGluc3RhbmNlb2YgWmgpcmV0dXJuIG5ldyBaaChlLmgsZS5zLGUubCxlLm9wYWNpdHkpO2lmKGUgaW5zdGFuY2VvZiBRaHx8KGU9djIoZSkpLCFlKXJldHVybiBuZXcgWmg7aWYoZSBpbnN0YW5jZW9mIFpoKXJldHVybiBlO2U9ZS5yZ2IoKTt2YXIgdD1lLnIvMjU1LHI9ZS5nLzI1NSxuPWUuYi8yNTUsaT1NYXRoLm1pbih0LHIsbiksbz1NYXRoLm1heCh0LHIsbiksYT1OYU4scz1vLWksbD0obytpKS8yO3JldHVybiBzPyh0PT09bz9hPShyLW4pL3MrKHI8bikqNjpyPT09bz9hPShuLXQpL3MrMjphPSh0LXIpL3MrNCxzLz1sPC41P28raToyLW8taSxhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IFpoKGEscyxsLGUub3BhY2l0eSl9ZnVuY3Rpb24gS0soZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP1pDZShlKTpuZXcgWmgoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIFpoKGUsdCxyLG4pe3RoaXMuaD0rZSx0aGlzLnM9K3QsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBYSyhlLHQscil7cmV0dXJuKGU8NjA/dCsoci10KSplLzYwOmU8MTgwP3I6ZTwyNDA/dCsoci10KSooMjQwLWUpLzYwOnQpKjI1NX12YXIgdWcsU3kseTIsZlQsSmgscUNlLEdDZSxXQ2UsWUNlLGpDZSxYQ2UsJENlLEtDZSxvQXQsZU49TSgoKT0+e3ROKCk7dWc9LjcsU3k9MS91Zyx5Mj0iXFxzKihbKy1dP1xcZCspXFxzKiIsZlQ9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsSmg9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLHFDZT0vXiMoWzAtOWEtZl17M30pJC8sR0NlPS9eIyhbMC05YS1mXXs2fSkkLyxXQ2U9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3kyLHkyLHkyXSsiXFwpJCIpLFlDZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbSmgsSmgsSmhdKyJcXCkkIiksakNlPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbeTIseTIseTIsZlRdKyJcXCkkIiksWENlPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbSmgsSmgsSmgsZlRdKyJcXCkkIiksJENlPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tmVCxKaCxKaF0rIlxcKSQiKSxLQ2U9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tmVCxKaCxKaCxmVF0rIlxcKSQiKSxvQXQ9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07WXAoUWgsdjIse2Rpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKSsiIn19KTtZcChRaSwkSyxjZyhRaCx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9TeTpNYXRoLnBvdyhTeSxlKSxuZXcgUWkodGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/dWc6TWF0aC5wb3codWcsZSksbmV3IFFpKHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiAwPD10aGlzLnImJnRoaXMucjw9MjU1JiYwPD10aGlzLmcmJnRoaXMuZzw9MjU1JiYwPD10aGlzLmImJnRoaXMuYjw9MjU1JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuIGU9aXNOYU4oZSk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLChlPT09MT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKyhlPT09MT8iKSI6IiwgIitlKyIpIil9fSkpO1lwKFpoLEtLLGNnKFFoLHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP1N5Ok1hdGgucG93KFN5LGUpLG5ldyBaaCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP3VnOk1hdGgucG93KHVnLGUpLG5ldyBaaCh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaCUzNjArKHRoaXMuaDwwKSozNjAsdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKnQsaT0yKnItbjtyZXR1cm4gbmV3IFFpKFhLKGU+PTI0MD9lLTI0MDplKzEyMCxpLG4pLFhLKGUsaSxuKSxYSyhlPDEyMD9lKzI0MDplLTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfX0pKX0pO3ZhciByTixuTixaSz1NKCgpPT57ck49TWF0aC5QSS8xODAsbk49MTgwL01hdGguUEl9KTtmdW5jdGlvbiByWihlKXtpZihlIGluc3RhbmNlb2YganApcmV0dXJuIG5ldyBqcChlLmwsZS5hLGUuYixlLm9wYWNpdHkpO2lmKGUgaW5zdGFuY2VvZiBoZyl7dmFyIHQ9ZS5oKnJOO3JldHVybiBuZXcganAoZS5sLE1hdGguY29zKHQpKmUuYyxNYXRoLnNpbih0KSplLmMsZS5vcGFjaXR5KX1lIGluc3RhbmNlb2YgUWl8fChlPXBUKGUpKTt2YXIgcj1lWihlLnIpLG49ZVooZS5nKSxpPWVaKGUuYiksbz1KSygoLjQxMjQ1NjQqcisuMzU3NTc2MSpuKy4xODA0Mzc1KmkpL2NBdCksYT1KSygoLjIxMjY3MjkqcisuNzE1MTUyMipuKy4wNzIxNzUqaSkvdUF0KSxzPUpLKCguMDE5MzMzOSpyKy4xMTkxOTIqbisuOTUwMzA0MSppKS9oQXQpO3JldHVybiBuZXcganAoMTE2KmEtMTYsNTAwKihvLWEpLDIwMCooYS1zKSxlLm9wYWNpdHkpfWZ1bmN0aW9uIG9OKGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9yWihlKTpuZXcganAoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIGpwKGUsdCxyLG4pe3RoaXMubD0rZSx0aGlzLmE9K3QsdGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBKSyhlKXtyZXR1cm4gZT5KQ2U/TWF0aC5wb3coZSwxLzMpOmUvcEF0K2ZBdH1mdW5jdGlvbiBRSyhlKXtyZXR1cm4gZT54Mj9lKmUqZTpwQXQqKGUtZkF0KX1mdW5jdGlvbiB0WihlKXtyZXR1cm4gMjU1KihlPD0uMDAzMTMwOD8xMi45MiplOjEuMDU1Kk1hdGgucG93KGUsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIGVaKGUpe3JldHVybihlLz0yNTUpPD0uMDQwNDU/ZS8xMi45MjpNYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIFFDZShlKXtpZihlIGluc3RhbmNlb2YgaGcpcmV0dXJuIG5ldyBoZyhlLmgsZS5jLGUubCxlLm9wYWNpdHkpO2UgaW5zdGFuY2VvZiBqcHx8KGU9clooZSkpO3ZhciB0PU1hdGguYXRhbjIoZS5iLGUuYSkqbk47cmV0dXJuIG5ldyBoZyh0PDA/dCszNjA6dCxNYXRoLnNxcnQoZS5hKmUuYStlLmIqZS5iKSxlLmwsZS5vcGFjaXR5KX1mdW5jdGlvbiBuWihlLHQscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/UUNlKGUpOm5ldyBoZyhlLHQscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gaGcoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMuYz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufXZhciBpTixjQXQsdUF0LGhBdCxmQXQseDIscEF0LEpDZSxkQXQ9TSgoKT0+e3ROKCk7ZU4oKTtaSygpO2lOPTE4LGNBdD0uOTUwNDcsdUF0PTEsaEF0PTEuMDg4ODMsZkF0PTQvMjkseDI9Ni8yOSxwQXQ9Myp4Mip4MixKQ2U9eDIqeDIqeDI7WXAoanAsb04sY2coUWgse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcganAodGhpcy5sK2lOKihlPT1udWxsPzE6ZSksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBqcCh0aGlzLmwtaU4qKGU9PW51bGw/MTplKSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPSh0aGlzLmwrMTYpLzExNix0PWlzTmFOKHRoaXMuYSk/ZTplK3RoaXMuYS81MDAscj1pc05hTih0aGlzLmIpP2U6ZS10aGlzLmIvMjAwO3JldHVybiBlPXVBdCpRSyhlKSx0PWNBdCpRSyh0KSxyPWhBdCpRSyhyKSxuZXcgUWkodFooMy4yNDA0NTQyKnQtMS41MzcxMzg1KmUtLjQ5ODUzMTQqciksdFooLS45NjkyNjYqdCsxLjg3NjAxMDgqZSsuMDQxNTU2KnIpLHRaKC4wNTU2NDM0KnQtLjIwNDAyNTkqZSsxLjA1NzIyNTIqciksdGhpcy5vcGFjaXR5KX19KSk7WXAoaGcsblosY2coUWgse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaGcodGhpcy5oLHRoaXMuYyx0aGlzLmwraU4qKGU9PW51bGw/MTplKSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBoZyh0aGlzLmgsdGhpcy5jLHRoaXMubC1pTiooZT09bnVsbD8xOmUpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiByWih0aGlzKS5yZ2IoKX19KSl9KTtmdW5jdGlvbiB0QWUoZSl7aWYoZSBpbnN0YW5jZW9mIE15KXJldHVybiBuZXcgTXkoZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtlIGluc3RhbmNlb2YgUWl8fChlPXBUKGUpKTt2YXIgdD1lLnIvMjU1LHI9ZS5nLzI1NSxuPWUuYi8yNTUsaT0oX0F0Km4rbUF0KnQtZ0F0KnIpLyhfQXQrbUF0LWdBdCksbz1uLWksYT0oZFQqKHItaSktb1oqbykvYU4scz1NYXRoLnNxcnQoYSphK28qbykvKGRUKmkqKDEtaSkpLGw9cz9NYXRoLmF0YW4yKGEsbykqbk4tMTIwOk5hTjtyZXR1cm4gbmV3IE15KGw8MD9sKzM2MDpsLHMsaSxlLm9wYWNpdHkpfWZ1bmN0aW9uIHNOKGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT90QWUoZSk6bmV3IE15KGUsdCxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBNeShlLHQscixuKXt0aGlzLmg9K2UsdGhpcy5zPSt0LHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259dmFyIHlBdCxpWixvWixhTixkVCxtQXQsZ0F0LF9BdCx2QXQ9TSgoKT0+e3ROKCk7ZU4oKTtaSygpO3lBdD0tLjE0ODYxLGlaPTEuNzgyNzcsb1o9LS4yOTIyNyxhTj0tLjkwNjQ5LGRUPTEuOTcyOTQsbUF0PWRUKmFOLGdBdD1kVCppWixfQXQ9aVoqb1otYU4qeUF0O1lwKE15LHNOLGNnKFFoLHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP1N5Ok1hdGgucG93KFN5LGUpLG5ldyBNeSh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP3VnOk1hdGgucG93KHVnLGUpLG5ldyBNeSh0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqck4sdD0rdGhpcy5sLHI9aXNOYU4odGhpcy5zKT8wOnRoaXMucyp0KigxLXQpLG49TWF0aC5jb3MoZSksaT1NYXRoLnNpbihlKTtyZXR1cm4gbmV3IFFpKDI1NSoodCtyKih5QXQqbitpWippKSksMjU1Kih0K3IqKG9aKm4rYU4qaSkpLDI1NSoodCtyKihkVCpuKSksdGhpcy5vcGFjaXR5KX19KSl9KTt2YXIgeEF0PU0oKCk9PntlTigpO2RBdCgpO3ZBdCgpfSk7ZnVuY3Rpb24gd0F0KCl7Zm9yKHZhciBlPTAsdD1hcmd1bWVudHMubGVuZ3RoLHI9e30sbjtlPHQ7KytlKXtpZighKG49YXJndW1lbnRzW2VdKyIiKXx8biBpbiByKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK24pO3Jbbl09W119cmV0dXJuIG5ldyBsTihyKX1mdW5jdGlvbiBsTihlKXt0aGlzLl89ZX1mdW5jdGlvbiByQWUoZSx0KXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHIpe3ZhciBuPSIiLGk9ci5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49ci5zbGljZShpKzEpLHI9ci5zbGljZSgwLGkpKSxyJiYhdC5oYXNPd25Qcm9wZXJ0eShyKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIityKTtyZXR1cm57dHlwZTpyLG5hbWU6bn19KX1mdW5jdGlvbiBuQWUoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLGk7cjxuOysrcilpZigoaT1lW3JdKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZX1mdW5jdGlvbiBiQXQoZSx0LHIpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilpZihlW25dLm5hbWU9PT10KXtlW25dPWVBZSxlPWUuc2xpY2UoMCxuKS5jb25jYXQoZS5zbGljZShuKzEpKTticmVha31yZXR1cm4gciE9bnVsbCYmZS5wdXNoKHtuYW1lOnQsdmFsdWU6cn0pLGV9dmFyIGVBZSxTQXQsTUF0PU0oKCk9PntlQWU9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07bE4ucHJvdG90eXBlPXdBdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmxOLG9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fLG49ckFlKGUrIiIsciksaSxvPS0xLGE9bi5sZW5ndGg7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IoOysrbzxhOylpZigoaT0oZT1uW29dKS50eXBlKSYmKGk9bkFlKHJbaV0sZS5uYW1lKSkpcmV0dXJuIGk7cmV0dXJufWlmKHQhPW51bGwmJnR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIit0KTtmb3IoOysrbzxhOylpZihpPShlPW5bb10pLnR5cGUpcltpXT1iQXQocltpXSxlLm5hbWUsdCk7ZWxzZSBpZih0PT1udWxsKWZvcihpIGluIHIpcltpXT1iQXQocltpXSxlLm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgZT17fSx0PXRoaXMuXztmb3IodmFyIHIgaW4gdCllW3JdPXRbcl0uc2xpY2UoKTtyZXR1cm4gbmV3IGxOKGUpfSxjYWxsOmZ1bmN0aW9uKGUsdCl7aWYoKGk9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgcj1uZXcgQXJyYXkoaSksbj0wLGksbztuPGk7KytuKXJbbl09YXJndW1lbnRzW24rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIitlKTtmb3Iobz10aGlzLl9bZV0sbj0wLGk9by5sZW5ndGg7bjxpOysrbilvW25dLnZhbHVlLmFwcGx5KHQscil9LGFwcGx5OmZ1bmN0aW9uKGUsdCxyKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2UpO2Zvcih2YXIgbj10aGlzLl9bZV0saT0wLG89bi5sZW5ndGg7aTxvOysraSluW2ldLnZhbHVlLmFwcGx5KHQscil9fTtTQXQ9d0F0fSk7dmFyIEVBdD1NKCgpPT57TUF0KCl9KTtmdW5jdGlvbiBDQXQoKXtmb3IodmFyIGU9MCx0PWFyZ3VtZW50cy5sZW5ndGgscj17fSxuO2U8dDsrK2Upe2lmKCEobj1hcmd1bWVudHNbZV0rIiIpfHxuIGluIHJ8fC9bXHMuXS8udGVzdChuKSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIituKTtyW25dPVtdfXJldHVybiBuZXcgY04ocil9ZnVuY3Rpb24gY04oZSl7dGhpcy5fPWV9ZnVuY3Rpb24gb0FlKGUsdCl7cmV0dXJuIGUudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbihyKXt2YXIgbj0iIixpPXIuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXIuc2xpY2UoaSsxKSxyPXIuc2xpY2UoMCxpKSksciYmIXQuaGFzT3duUHJvcGVydHkocikpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrcik7cmV0dXJue3R5cGU6cixuYW1lOm59fSl9ZnVuY3Rpb24gYUFlKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aCxpO3I8bjsrK3IpaWYoKGk9ZVtyXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWV9ZnVuY3Rpb24gVEF0KGUsdCxyKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoO248aTsrK24paWYoZVtuXS5uYW1lPT09dCl7ZVtuXT1pQWUsZT1lLnNsaWNlKDAsbikuY29uY2F0KGUuc2xpY2UobisxKSk7YnJlYWt9cmV0dXJuIHIhPW51bGwmJmUucHVzaCh7bmFtZTp0LHZhbHVlOnJ9KSxlfXZhciBpQWUsYVosQUF0PU0oKCk9PntpQWU9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07Y04ucHJvdG90eXBlPUNBdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmNOLG9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fLG49b0FlKGUrIiIsciksaSxvPS0xLGE9bi5sZW5ndGg7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IoOysrbzxhOylpZigoaT0oZT1uW29dKS50eXBlKSYmKGk9YUFlKHJbaV0sZS5uYW1lKSkpcmV0dXJuIGk7cmV0dXJufWlmKHQhPW51bGwmJnR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIit0KTtmb3IoOysrbzxhOylpZihpPShlPW5bb10pLnR5cGUpcltpXT1UQXQocltpXSxlLm5hbWUsdCk7ZWxzZSBpZih0PT1udWxsKWZvcihpIGluIHIpcltpXT1UQXQocltpXSxlLm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgZT17fSx0PXRoaXMuXztmb3IodmFyIHIgaW4gdCllW3JdPXRbcl0uc2xpY2UoKTtyZXR1cm4gbmV3IGNOKGUpfSxjYWxsOmZ1bmN0aW9uKGUsdCl7aWYoKGk9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgcj1uZXcgQXJyYXkoaSksbj0wLGksbztuPGk7KytuKXJbbl09YXJndW1lbnRzW24rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIitlKTtmb3Iobz10aGlzLl9bZV0sbj0wLGk9by5sZW5ndGg7bjxpOysrbilvW25dLnZhbHVlLmFwcGx5KHQscil9LGFwcGx5OmZ1bmN0aW9uKGUsdCxyKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2UpO2Zvcih2YXIgbj10aGlzLl9bZV0saT0wLG89bi5sZW5ndGg7aTxvOysraSluW2ldLnZhbHVlLmFwcGx5KHQscil9fTthWj1DQXR9KTt2YXIgUEF0PU0oKCk9PntBQXQoKX0pO3ZhciB1TixzWixsWj1NKCgpPT57dU49Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHNaPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDp1Tix4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9fSk7ZnVuY3Rpb24gaE4oZSl7dmFyIHQ9ZSs9IiIscj10LmluZGV4T2YoIjoiKTtyZXR1cm4gcj49MCYmKHQ9ZS5zbGljZSgwLHIpKSE9PSJ4bWxucyImJihlPWUuc2xpY2UocisxKSksc1ouaGFzT3duUHJvcGVydHkodCk/e3NwYWNlOnNaW3RdLGxvY2FsOmV9OmV9dmFyIGNaPU0oKCk9PntsWigpfSk7ZnVuY3Rpb24gc0FlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMub3duZXJEb2N1bWVudCxyPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiByPT09dU4mJnQuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PXVOP3QuY3JlYXRlRWxlbWVudChlKTp0LmNyZWF0ZUVsZW1lbnROUyhyLGUpfX1mdW5jdGlvbiBsQWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5zcGFjZSxlLmxvY2FsKX19ZnVuY3Rpb24gZk4oZSl7dmFyIHQ9aE4oZSk7cmV0dXJuKHQubG9jYWw/bEFlOnNBZSkodCl9dmFyIHVaPU0oKCk9PntjWigpO2xaKCl9KTtmdW5jdGlvbiBjQWUoKXt9ZnVuY3Rpb24gcE4oZSl7cmV0dXJuIGU9PW51bGw/Y0FlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihlKX19dmFyIGhaPU0oKCk9Pnt9KTtmdW5jdGlvbiBJQXQoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPXBOKGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpZm9yKHZhciBvPXRbaV0sYT1vLmxlbmd0aCxzPW5baV09bmV3IEFycmF5KGEpLGwsYyx1PTA7dTxhOysrdSkobD1vW3VdKSYmKGM9ZS5jYWxsKGwsbC5fX2RhdGFfXyx1LG8pKSYmKCJfX2RhdGFfXyJpbiBsJiYoYy5fX2RhdGFfXz1sLl9fZGF0YV9fKSxzW3VdPWMpO3JldHVybiBuZXcgZGkobix0aGlzLl9wYXJlbnRzKX12YXIgTEF0PU0oKCk9Pnt0ZigpO2haKCl9KTtmdW5jdGlvbiB1QWUoKXtyZXR1cm5bXX1mdW5jdGlvbiBrQXQoZSl7cmV0dXJuIGU9PW51bGw/dUFlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChlKX19dmFyIFJBdD1NKCgpPT57fSk7ZnVuY3Rpb24gTkF0KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1rQXQoZSkpO2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj10Lmxlbmd0aCxuPVtdLGk9W10sbz0wO288cjsrK28pZm9yKHZhciBhPXRbb10scz1hLmxlbmd0aCxsLGM9MDtjPHM7KytjKShsPWFbY10pJiYobi5wdXNoKGUuY2FsbChsLGwuX19kYXRhX18sYyxhKSksaS5wdXNoKGwpKTtyZXR1cm4gbmV3IGRpKG4saSl9dmFyIERBdD1NKCgpPT57dGYoKTtSQXQoKX0pO2Z1bmN0aW9uIE9BdChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKGUpfX12YXIgekF0PU0oKCk9Pnt9KTtmdW5jdGlvbiBGQXQoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPU9BdChlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgbz10W2ldLGE9by5sZW5ndGgscz1uW2ldPVtdLGwsYz0wO2M8YTsrK2MpKGw9b1tjXSkmJmUuY2FsbChsLGwuX19kYXRhX18sYyxvKSYmcy5wdXNoKGwpO3JldHVybiBuZXcgZGkobix0aGlzLl9wYXJlbnRzKX12YXIgQkF0PU0oKCk9Pnt0ZigpO3pBdCgpfSk7ZnVuY3Rpb24gZE4oZSl7cmV0dXJuIG5ldyBBcnJheShlLmxlbmd0aCl9dmFyIGZaPU0oKCk9Pnt9KTtmdW5jdGlvbiBIQXQoKXtyZXR1cm4gbmV3IGRpKHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKGROKSx0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiBtVChlLHQpe3RoaXMub3duZXJEb2N1bWVudD1lLm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9ZS5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD1lLHRoaXMuX19kYXRhX189dH12YXIgcFo9TSgoKT0+e2ZaKCk7dGYoKTttVC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm1ULGFwcGVuZENoaWxkOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGUsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGUsdCl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKGUpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbChlKX19fSk7ZnVuY3Rpb24gVkF0KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgVUF0PU0oKCk9Pnt9KTtmdW5jdGlvbiBoQWUoZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0wLHMsbD10Lmxlbmd0aCxjPW8ubGVuZ3RoO2E8YzsrK2EpKHM9dFthXSk/KHMuX19kYXRhX189b1thXSxuW2FdPXMpOnJbYV09bmV3IG1UKGUsb1thXSk7Zm9yKDthPGw7KythKShzPXRbYV0pJiYoaVthXT1zKX1mdW5jdGlvbiBmQWUoZSx0LHIsbixpLG8sYSl7dmFyIHMsbCxjPXt9LHU9dC5sZW5ndGgsaD1vLmxlbmd0aCxmPW5ldyBBcnJheSh1KSxwO2ZvcihzPTA7czx1OysrcykobD10W3NdKSYmKGZbc109cD1xQXQrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLHQpLHAgaW4gYz9pW3NdPWw6Y1twXT1sKTtmb3Iocz0wO3M8aDsrK3MpcD1xQXQrYS5jYWxsKGUsb1tzXSxzLG8pLChsPWNbcF0pPyhuW3NdPWwsbC5fX2RhdGFfXz1vW3NdLGNbcF09bnVsbCk6cltzXT1uZXcgbVQoZSxvW3NdKTtmb3Iocz0wO3M8dTsrK3MpKGw9dFtzXSkmJmNbZltzXV09PT1sJiYoaVtzXT1sKX1mdW5jdGlvbiBHQXQoZSx0KXtpZighZSlyZXR1cm4gcD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGM9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKFApe3BbKytjXT1QfSkscDt2YXIgcj10P2ZBZTpoQWUsbj10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzO3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1WQXQoZSkpO2Zvcih2YXIgbz1pLmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPW5ldyBBcnJheShvKSxsPW5ldyBBcnJheShvKSxjPTA7YzxvOysrYyl7dmFyIHU9bltjXSxoPWlbY10sZj1oLmxlbmd0aCxwPWUuY2FsbCh1LHUmJnUuX19kYXRhX18sYyxuKSxkPXAubGVuZ3RoLGc9c1tjXT1uZXcgQXJyYXkoZCksXz1hW2NdPW5ldyBBcnJheShkKSx5PWxbY109bmV3IEFycmF5KGYpO3IodSxoLGcsXyx5LHAsdCk7Zm9yKHZhciB4PTAsYj0wLFMsQzt4PGQ7Kyt4KWlmKFM9Z1t4XSl7Zm9yKHg+PWImJihiPXgrMSk7IShDPV9bYl0pJiYrK2I8ZDspO1MuX25leHQ9Q3x8bnVsbH19cmV0dXJuIGE9bmV3IGRpKGEsbiksYS5fZW50ZXI9cyxhLl9leGl0PWwsYX12YXIgcUF0LFdBdD1NKCgpPT57dGYoKTtwWigpO1VBdCgpO3FBdD0iJCJ9KTtmdW5jdGlvbiBZQXQoKXtyZXR1cm4gbmV3IGRpKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoZE4pLHRoaXMuX3BhcmVudHMpfXZhciBqQXQ9TSgoKT0+e2ZaKCk7dGYoKX0pO2Z1bmN0aW9uIFhBdChlLHQscil7dmFyIG49dGhpcy5lbnRlcigpLGk9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBuPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2Uobik6bi5hcHBlbmQoZSsiIiksdCE9bnVsbCYmKGk9dChpKSkscj09bnVsbD9vLnJlbW92ZSgpOnIobyksbiYmaT9uLm1lcmdlKGkpLm9yZGVyKCk6aX12YXIgJEF0PU0oKCk9Pnt9KTtmdW5jdGlvbiBLQXQoZSl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPWUuX2dyb3VwcyxuPXQubGVuZ3RoLGk9ci5sZW5ndGgsbz1NYXRoLm1pbihuLGkpLGE9bmV3IEFycmF5KG4pLHM9MDtzPG87KytzKWZvcih2YXIgbD10W3NdLGM9cltzXSx1PWwubGVuZ3RoLGg9YVtzXT1uZXcgQXJyYXkodSksZixwPTA7cDx1OysrcCkoZj1sW3BdfHxjW3BdKSYmKGhbcF09Zik7Zm9yKDtzPG47KytzKWFbc109dFtzXTtyZXR1cm4gbmV3IGRpKGEsdGhpcy5fcGFyZW50cyl9dmFyIFpBdD1NKCgpPT57dGYoKX0pO2Z1bmN0aW9uIEpBdCgpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsdD0tMSxyPWUubGVuZ3RoOysrdDxyOylmb3IodmFyIG49ZVt0XSxpPW4ubGVuZ3RoLTEsbz1uW2ldLGE7LS1pPj0wOykoYT1uW2ldKSYmKG8mJmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24obyleNCYmby5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG8pLG89YSk7cmV0dXJuIHRoaXN9dmFyIFFBdD1NKCgpPT57fSk7ZnVuY3Rpb24gdDR0KGUpe2V8fChlPXBBZSk7ZnVuY3Rpb24gdChoLGYpe3JldHVybiBoJiZmP2UoaC5fX2RhdGFfXyxmLl9fZGF0YV9fKTohaC0hZn1mb3IodmFyIHI9dGhpcy5fZ3JvdXBzLG49ci5sZW5ndGgsaT1uZXcgQXJyYXkobiksbz0wO288bjsrK28pe2Zvcih2YXIgYT1yW29dLHM9YS5sZW5ndGgsbD1pW29dPW5ldyBBcnJheShzKSxjLHU9MDt1PHM7Kyt1KShjPWFbdV0pJiYobFt1XT1jKTtsLnNvcnQodCl9cmV0dXJuIG5ldyBkaShpLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9ZnVuY3Rpb24gcEFlKGUsdCl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfXZhciBlNHQ9TSgoKT0+e3RmKCl9KTtmdW5jdGlvbiByNHQoKXt2YXIgZT1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLGUuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9dmFyIG40dD1NKCgpPT57fSk7ZnVuY3Rpb24gaTR0KCl7dmFyIGU9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx0PS0xO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtlWysrdF09dGhpc30pLGV9dmFyIG80dD1NKCgpPT57fSk7ZnVuY3Rpb24gYTR0KCl7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PTAscj1lLmxlbmd0aDt0PHI7Kyt0KWZvcih2YXIgbj1lW3RdLGk9MCxvPW4ubGVuZ3RoO2k8bzsrK2kpe3ZhciBhPW5baV07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH12YXIgczR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBsNHQoKXt2YXIgZT0wO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsrK2V9KSxlfXZhciBjNHQ9TSgoKT0+e30pO2Z1bmN0aW9uIHU0dCgpe3JldHVybiF0aGlzLm5vZGUoKX12YXIgaDR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBmNHQoZSl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPTAsbj10Lmxlbmd0aDtyPG47KytyKWZvcih2YXIgaT10W3JdLG89MCxhPWkubGVuZ3RoLHM7bzxhOysrbykocz1pW29dKSYmZS5jYWxsKHMscy5fX2RhdGFfXyxvLGkpO3JldHVybiB0aGlzfXZhciBwNHQ9TSgoKT0+e30pO2Z1bmN0aW9uIGRBZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKX19ZnVuY3Rpb24gbUFlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKX19ZnVuY3Rpb24gZ0FlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUoZSx0KX19ZnVuY3Rpb24gX0FlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwsdCl9fWZ1bmN0aW9uIHlBZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3I9PW51bGw/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSk6dGhpcy5zZXRBdHRyaWJ1dGUoZSxyKX19ZnVuY3Rpb24gdkFlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwscil9fWZ1bmN0aW9uIGQ0dChlLHQpe3ZhciByPWhOKGUpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIG49dGhpcy5ub2RlKCk7cmV0dXJuIHIubG9jYWw/bi5nZXRBdHRyaWJ1dGVOUyhyLnNwYWNlLHIubG9jYWwpOm4uZ2V0QXR0cmlidXRlKHIpfXJldHVybiB0aGlzLmVhY2goKHQ9PW51bGw/ci5sb2NhbD9tQWU6ZEFlOnR5cGVvZiB0PT0iZnVuY3Rpb24iP3IubG9jYWw/dkFlOnlBZTpyLmxvY2FsP19BZTpnQWUpKHIsdCkpfXZhciBtNHQ9TSgoKT0+e2NaKCl9KTtmdW5jdGlvbiBtTihlKXtyZXR1cm4gZS5vd25lckRvY3VtZW50JiZlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fGUuZG9jdW1lbnQmJmV8fGUuZGVmYXVsdFZpZXd9dmFyIGRaPU0oKCk9Pnt9KTtmdW5jdGlvbiB4QWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKX19ZnVuY3Rpb24gYkFlKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KGUsdCxyKX19ZnVuY3Rpb24gd0FlKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtuPT1udWxsP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShlLG4scil9fWZ1bmN0aW9uIGc0dChlLHQscil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKHQ9PW51bGw/eEFlOnR5cGVvZiB0PT0iZnVuY3Rpb24iP3dBZTpiQWUpKGUsdCxyPT1udWxsPyIiOnIpKTpTQWUodGhpcy5ub2RlKCksZSl9ZnVuY3Rpb24gU0FlKGUsdCl7cmV0dXJuIGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSh0KXx8bU4oZSkuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpLmdldFByb3BlcnR5VmFsdWUodCl9dmFyIF80dD1NKCgpPT57ZFooKX0pO2Z1bmN0aW9uIE1BZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tlXX19ZnVuY3Rpb24gRUFlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1tlXT10fX1mdW5jdGlvbiBUQWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyPT1udWxsP2RlbGV0ZSB0aGlzW2VdOnRoaXNbZV09cn19ZnVuY3Rpb24geTR0KGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKHQ9PW51bGw/TUFlOnR5cGVvZiB0PT0iZnVuY3Rpb24iP1RBZTpFQWUpKGUsdCkpOnRoaXMubm9kZSgpW2VdfXZhciB2NHQ9TSgoKT0+e30pO2Z1bmN0aW9uIHg0dChlKXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gbVooZSl7cmV0dXJuIGUuY2xhc3NMaXN0fHxuZXcgYjR0KGUpfWZ1bmN0aW9uIGI0dChlKXt0aGlzLl9ub2RlPWUsdGhpcy5fbmFtZXM9eDR0KGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gdzR0KGUsdCl7Zm9yKHZhciByPW1aKGUpLG49LTEsaT10Lmxlbmd0aDsrK248aTspci5hZGQodFtuXSl9ZnVuY3Rpb24gUzR0KGUsdCl7Zm9yKHZhciByPW1aKGUpLG49LTEsaT10Lmxlbmd0aDsrK248aTspci5yZW1vdmUodFtuXSl9ZnVuY3Rpb24gQ0FlKGUpe3JldHVybiBmdW5jdGlvbigpe3c0dCh0aGlzLGUpfX1mdW5jdGlvbiBBQWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7UzR0KHRoaXMsZSl9fWZ1bmN0aW9uIFBBZShlLHQpe3JldHVybiBmdW5jdGlvbigpeyh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKT93NHQ6UzR0KSh0aGlzLGUpfX1mdW5jdGlvbiBNNHQoZSx0KXt2YXIgcj14NHQoZSsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIG49bVoodGhpcy5ub2RlKCkpLGk9LTEsbz1yLmxlbmd0aDsrK2k8bzspaWYoIW4uY29udGFpbnMocltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHQ9PSJmdW5jdGlvbiI/UEFlOnQ/Q0FlOkFBZSkocix0KSl9dmFyIEU0dD1NKCgpPT57YjR0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX25hbWVzLmluZGV4T2YoZSk7dDwwJiYodGhpcy5fbmFtZXMucHVzaChlKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbmFtZXMuaW5kZXhPZihlKTt0Pj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKHQsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YoZSk+PTB9fX0pO2Z1bmN0aW9uIElBZSgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gTEFlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9ZX19ZnVuY3Rpb24ga0FlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiBUNHQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKGU9PW51bGw/SUFlOih0eXBlb2YgZT09ImZ1bmN0aW9uIj9rQWU6TEFlKShlKSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9dmFyIEM0dD1NKCgpPT57fSk7ZnVuY3Rpb24gUkFlKCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gTkFlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPWV9fWZ1bmN0aW9uIERBZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIEE0dChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZT09bnVsbD9SQWU6KHR5cGVvZiBlPT0iZnVuY3Rpb24iP0RBZTpOQWUpKGUpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9dmFyIFA0dD1NKCgpPT57fSk7ZnVuY3Rpb24gT0FlKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIEk0dCgpe3JldHVybiB0aGlzLmVhY2goT0FlKX12YXIgTDR0PU0oKCk9Pnt9KTtmdW5jdGlvbiB6QWUoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBrNHQoKXtyZXR1cm4gdGhpcy5lYWNoKHpBZSl9dmFyIFI0dD1NKCgpPT57fSk7ZnVuY3Rpb24gTjR0KGUpe3ZhciB0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6Zk4oZSk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQodC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9dmFyIEQ0dD1NKCgpPT57dVooKX0pO2Z1bmN0aW9uIEZBZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIE80dChlLHQpe3ZhciByPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6Zk4oZSksbj10PT1udWxsP0ZBZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OnBOKHQpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KX12YXIgejR0PU0oKCk9Pnt1WigpO2haKCl9KTtmdW5jdGlvbiBCQWUoKXt2YXIgZT10aGlzLnBhcmVudE5vZGU7ZSYmZS5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBGNHQoKXtyZXR1cm4gdGhpcy5lYWNoKEJBZSl9dmFyIEI0dD1NKCgpPT57fSk7ZnVuY3Rpb24gSEFlKCl7dmFyIGU9dGhpcy5jbG9uZU5vZGUoITEpLHQ9dGhpcy5wYXJlbnROb2RlO3JldHVybiB0P3QuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyk6ZX1mdW5jdGlvbiBWQWUoKXt2YXIgZT10aGlzLmNsb25lTm9kZSghMCksdD10aGlzLnBhcmVudE5vZGU7cmV0dXJuIHQ/dC5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKTplfWZ1bmN0aW9uIEg0dChlKXtyZXR1cm4gdGhpcy5zZWxlY3QoZT9WQWU6SEFlKX12YXIgVjR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBVNHQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLGUpOnRoaXMubm9kZSgpLl9fZGF0YV9ffXZhciBxNHQ9TSgoKT0+e30pO2Z1bmN0aW9uIFVBZShlLHQscil7cmV0dXJuIGU9WTR0KGUsdCxyKSxmdW5jdGlvbihuKXt2YXIgaT1uLnJlbGF0ZWRUYXJnZXQ7KCFpfHxpIT09dGhpcyYmIShpLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpJjgpKSYmZS5jYWxsKHRoaXMsbil9fWZ1bmN0aW9uIFk0dChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPXNuO3NuPW47dHJ5e2UuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sdCxyKX1maW5hbGx5e3NuPWl9fX1mdW5jdGlvbiBxQWUoZSl7cmV0dXJuIGUudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbih0KXt2YXIgcj0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYocj10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTpyfX0pfWZ1bmN0aW9uIEdBZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fb247aWYoISF0KXtmb3IodmFyIHI9MCxuPS0xLGk9dC5sZW5ndGgsbztyPGk7KytyKW89dFtyXSwoIWUudHlwZXx8by50eXBlPT09ZS50eXBlKSYmby5uYW1lPT09ZS5uYW1lP3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLnR5cGUsby5saXN0ZW5lcixvLmNhcHR1cmUpOnRbKytuXT1vOysrbj90Lmxlbmd0aD1uOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBXQWUoZSx0LHIpe3ZhciBuPVc0dC5oYXNPd25Qcm9wZXJ0eShlLnR5cGUpP1VBZTpZNHQ7cmV0dXJuIGZ1bmN0aW9uKGksbyxhKXt2YXIgcz10aGlzLl9fb24sbCxjPW4odCxvLGEpO2lmKHMpe2Zvcih2YXIgdT0wLGg9cy5sZW5ndGg7dTxoOysrdSlpZigobD1zW3VdKS50eXBlPT09ZS50eXBlJiZsLm5hbWU9PT1lLm5hbWUpe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihsLnR5cGUsbC5saXN0ZW5lcixsLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihsLnR5cGUsbC5saXN0ZW5lcj1jLGwuY2FwdHVyZT1yKSxsLnZhbHVlPXQ7cmV0dXJufX10aGlzLmFkZEV2ZW50TGlzdGVuZXIoZS50eXBlLGMsciksbD17dHlwZTplLnR5cGUsbmFtZTplLm5hbWUsdmFsdWU6dCxsaXN0ZW5lcjpjLGNhcHR1cmU6cn0scz9zLnB1c2gobCk6dGhpcy5fX29uPVtsXX19ZnVuY3Rpb24gajR0KGUsdCxyKXt2YXIgbj1xQWUoZSsiIiksaSxvPW4ubGVuZ3RoLGE7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpe2Zvcih2YXIgbD0wLGM9cy5sZW5ndGgsdTtsPGM7KytsKWZvcihpPTAsdT1zW2xdO2k8bzsrK2kpaWYoKGE9bltpXSkudHlwZT09PXUudHlwZSYmYS5uYW1lPT09dS5uYW1lKXJldHVybiB1LnZhbHVlfXJldHVybn1mb3Iocz10P1dBZTpHQWUscj09bnVsbCYmKHI9ITEpLGk9MDtpPG87KytpKXRoaXMuZWFjaChzKG5baV0sdCxyKSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gZ04oZSx0LHIsbil7dmFyIGk9c247ZS5zb3VyY2VFdmVudD1zbixzbj1lO3RyeXtyZXR1cm4gdC5hcHBseShyLG4pfWZpbmFsbHl7c249aX19dmFyIFc0dCxzbixHNHQsX049TSgoKT0+e1c0dD17fSxzbj1udWxsO3R5cGVvZiBkb2N1bWVudCE9InVuZGVmaW5lZCImJihHNHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJvbm1vdXNlZW50ZXIiaW4gRzR0fHwoVzR0PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKX0pO2Z1bmN0aW9uIFg0dChlLHQscil7dmFyIG49bU4oZSksaT1uLkN1c3RvbUV2ZW50O3R5cGVvZiBpPT0iZnVuY3Rpb24iP2k9bmV3IGkodCxyKTooaT1uLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLHI/KGkuaW5pdEV2ZW50KHQsci5idWJibGVzLHIuY2FuY2VsYWJsZSksaS5kZXRhaWw9ci5kZXRhaWwpOmkuaW5pdEV2ZW50KHQsITEsITEpKSxlLmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gWUFlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFg0dCh0aGlzLGUsdCl9fWZ1bmN0aW9uIGpBZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBYNHQodGhpcyxlLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19ZnVuY3Rpb24gJDR0KGUsdCl7cmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHQ9PSJmdW5jdGlvbiI/akFlOllBZSkoZSx0KSl9dmFyIEs0dD1NKCgpPT57ZFooKX0pO2Z1bmN0aW9uIGRpKGUsdCl7dGhpcy5fZ3JvdXBzPWUsdGhpcy5fcGFyZW50cz10fWZ1bmN0aW9uIFhBZSgpe3JldHVybiBuZXcgZGkoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxnWil9dmFyIGdaLHRmPU0oKCk9PntMQXQoKTtEQXQoKTtCQXQoKTtXQXQoKTtwWigpO2pBdCgpOyRBdCgpO1pBdCgpO1FBdCgpO2U0dCgpO240dCgpO280dCgpO3M0dCgpO2M0dCgpO2g0dCgpO3A0dCgpO200dCgpO180dCgpO3Y0dCgpO0U0dCgpO0M0dCgpO1A0dCgpO0w0dCgpO1I0dCgpO0Q0dCgpO3o0dCgpO0I0dCgpO1Y0dCgpO3E0dCgpO19OKCk7SzR0KCk7Z1o9W251bGxdO2RpLnByb3RvdHlwZT1YQWUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkaSxzZWxlY3Q6SUF0LHNlbGVjdEFsbDpOQXQsZmlsdGVyOkZBdCxkYXRhOkdBdCxlbnRlcjpIQXQsZXhpdDpZQXQsam9pbjpYQXQsbWVyZ2U6S0F0LG9yZGVyOkpBdCxzb3J0OnQ0dCxjYWxsOnI0dCxub2RlczppNHQsbm9kZTphNHQsc2l6ZTpsNHQsZW1wdHk6dTR0LGVhY2g6ZjR0LGF0dHI6ZDR0LHN0eWxlOmc0dCxwcm9wZXJ0eTp5NHQsY2xhc3NlZDpNNHQsdGV4dDpUNHQsaHRtbDpBNHQscmFpc2U6STR0LGxvd2VyOms0dCxhcHBlbmQ6TjR0LGluc2VydDpPNHQscmVtb3ZlOkY0dCxjbG9uZTpINHQsZGF0dW06VTR0LG9uOmo0dCxkaXNwYXRjaDokNHR9fSk7ZnVuY3Rpb24gRXkoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9uZXcgZGkoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBkaShbW2VdXSxnWil9dmFyIFo0dD1NKCgpPT57dGYoKX0pO2Z1bmN0aW9uIHlOKCl7Zm9yKHZhciBlPXNuLHQ7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9dmFyIF9aPU0oKCk9PntfTigpfSk7ZnVuY3Rpb24gdk4oZSx0KXt2YXIgcj1lLm93bmVyU1ZHRWxlbWVudHx8ZTtpZihyLmNyZWF0ZVNWR1BvaW50KXt2YXIgbj1yLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIG4ueD10LmNsaWVudFgsbi55PXQuY2xpZW50WSxuPW4ubWF0cml4VHJhbnNmb3JtKGUuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSxbbi54LG4ueV19dmFyIGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bdC5jbGllbnRYLWkubGVmdC1lLmNsaWVudExlZnQsdC5jbGllbnRZLWkudG9wLWUuY2xpZW50VG9wXX12YXIgeVo9TSgoKT0+e30pO2Z1bmN0aW9uIHZaKGUpe3ZhciB0PXlOKCk7cmV0dXJuIHQuY2hhbmdlZFRvdWNoZXMmJih0PXQuY2hhbmdlZFRvdWNoZXNbMF0pLHZOKGUsdCl9dmFyIEo0dD1NKCgpPT57X1ooKTt5WigpfSk7ZnVuY3Rpb24geFooZSx0LHIpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKHI9dCx0PXlOKCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgbj0wLGk9dD90Lmxlbmd0aDowLG87bjxpOysrbilpZigobz10W25dKS5pZGVudGlmaWVyPT09cilyZXR1cm4gdk4oZSxvKTtyZXR1cm4gbnVsbH12YXIgUTR0PU0oKCk9PntfWigpO3laKCl9KTt2YXIgeE49TSgoKT0+e0o0dCgpO1o0dCgpO1E0dCgpO19OKCl9KTtmdW5jdGlvbiBiTigpe3NuLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGZnKCl7c24ucHJldmVudERlZmF1bHQoKSxzbi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX12YXIgYlo9TSgoKT0+e3hOKCl9KTtmdW5jdGlvbiB3TihlKXt2YXIgdD1lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxyPUV5KGUpLm9uKCJkcmFnc3RhcnQuZHJhZyIsZmcsITApOyJvbnNlbGVjdHN0YXJ0ImluIHQ/ci5vbigic2VsZWN0c3RhcnQuZHJhZyIsZmcsITApOih0Ll9fbm9zZWxlY3Q9dC5zdHlsZS5Nb3pVc2VyU2VsZWN0LHQuc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfWZ1bmN0aW9uIFNOKGUsdCl7dmFyIHI9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1FeShlKS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO3QmJihuLm9uKCJjbGljay5kcmFnIixmZywhMCksc2V0VGltZW91dChmdW5jdGlvbigpe24ub24oImNsaWNrLmRyYWciLG51bGwpfSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gcj9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKTooci5zdHlsZS5Nb3pVc2VyU2VsZWN0PXIuX19ub3NlbGVjdCxkZWxldGUgci5fX25vc2VsZWN0KX12YXIgd1o9TSgoKT0+e3hOKCk7YlooKX0pO2Z1bmN0aW9uIGdUKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgdFB0PU0oKCk9Pnt9KTtmdW5jdGlvbiBfVChlLHQscixuLGksbyxhLHMsbCxjKXt0aGlzLnRhcmdldD1lLHRoaXMudHlwZT10LHRoaXMuc3ViamVjdD1yLHRoaXMuaWRlbnRpZmllcj1uLHRoaXMuYWN0aXZlPWksdGhpcy54PW8sdGhpcy55PWEsdGhpcy5keD1zLHRoaXMuZHk9bCx0aGlzLl89Y312YXIgZVB0PU0oKCk9PntfVC5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIGU9PT10aGlzLl8/dGhpczplfX0pO2Z1bmN0aW9uICRBZSgpe3JldHVybiFzbi5idXR0b259ZnVuY3Rpb24gS0FlKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZX1mdW5jdGlvbiBaQWUoZSl7cmV0dXJuIGU9PW51bGw/e3g6c24ueCx5OnNuLnl9OmV9ZnVuY3Rpb24gSkFlKCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIHJQdCgpe3ZhciBlPSRBZSx0PUtBZSxyPVpBZSxuPUpBZSxpPXt9LG89YVooInN0YXJ0IiwiZHJhZyIsImVuZCIpLGE9MCxzLGwsYyx1LGg9MDtmdW5jdGlvbiBmKFMpe1Mub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIobikub24oInRvdWNoc3RhcnQuZHJhZyIsXykub24oInRvdWNobW92ZS5kcmFnIix5KS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix4KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCEodXx8IWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKSl7dmFyIFM9YigibW91c2UiLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHZaLHRoaXMsYXJndW1lbnRzKTshU3x8KEV5KHNuLnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyIsZCwhMCkub24oIm1vdXNldXAuZHJhZyIsZywhMCksd04oc24udmlldyksYk4oKSxjPSExLHM9c24uY2xpZW50WCxsPXNuLmNsaWVudFksUygic3RhcnQiKSl9fWZ1bmN0aW9uIGQoKXtpZihmZygpLCFjKXt2YXIgUz1zbi5jbGllbnRYLXMsQz1zbi5jbGllbnRZLWw7Yz1TKlMrQypDPmh9aS5tb3VzZSgiZHJhZyIpfWZ1bmN0aW9uIGcoKXtFeShzbi52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWcgbW91c2V1cC5kcmFnIixudWxsKSxTTihzbi52aWV3LGMpLGZnKCksaS5tb3VzZSgiZW5kIil9ZnVuY3Rpb24gXygpe2lmKCEhZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBTPXNuLmNoYW5nZWRUb3VjaGVzLEM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksUD1TLmxlbmd0aCxrLE87Zm9yKGs9MDtrPFA7KytrKShPPWIoU1trXS5pZGVudGlmaWVyLEMseFosdGhpcyxhcmd1bWVudHMpKSYmKGJOKCksTygic3RhcnQiKSl9fWZ1bmN0aW9uIHkoKXt2YXIgUz1zbi5jaGFuZ2VkVG91Y2hlcyxDPVMubGVuZ3RoLFAsaztmb3IoUD0wO1A8QzsrK1ApKGs9aVtTW1BdLmlkZW50aWZpZXJdKSYmKGZnKCksaygiZHJhZyIpKX1mdW5jdGlvbiB4KCl7dmFyIFM9c24uY2hhbmdlZFRvdWNoZXMsQz1TLmxlbmd0aCxQLGs7Zm9yKHUmJmNsZWFyVGltZW91dCh1KSx1PXNldFRpbWVvdXQoZnVuY3Rpb24oKXt1PW51bGx9LDUwMCksUD0wO1A8QzsrK1ApKGs9aVtTW1BdLmlkZW50aWZpZXJdKSYmKGJOKCksaygiZW5kIikpfWZ1bmN0aW9uIGIoUyxDLFAsayxPKXt2YXIgRD1QKEMsUyksQixJLEwsUj1vLmNvcHkoKTtpZighIWdOKG5ldyBfVChmLCJiZWZvcmVzdGFydCIsQixTLGEsRFswXSxEWzFdLDAsMCxSKSxmdW5jdGlvbigpe3JldHVybihzbi5zdWJqZWN0PUI9ci5hcHBseShrLE8pKT09bnVsbD8hMTooST1CLngtRFswXXx8MCxMPUIueS1EWzFdfHwwLCEwKX0pKXJldHVybiBmdW5jdGlvbiBGKHope3ZhciBVPUQsVztzd2l0Y2goeil7Y2FzZSJzdGFydCI6aVtTXT1GLFc9YSsrO2JyZWFrO2Nhc2UiZW5kIjpkZWxldGUgaVtTXSwtLWE7Y2FzZSJkcmFnIjpEPVAoQyxTKSxXPWE7YnJlYWt9Z04obmV3IF9UKGYseixCLFMsVyxEWzBdK0ksRFsxXStMLERbMF0tVVswXSxEWzFdLVVbMV0sUiksUi5hcHBseSxSLFt6LGssT10pfX1yZXR1cm4gZi5maWx0ZXI9ZnVuY3Rpb24oUyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIFM9PSJmdW5jdGlvbiI/UzpnVCghIVMpLGYpOmV9LGYuY29udGFpbmVyPWZ1bmN0aW9uKFMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBTPT0iZnVuY3Rpb24iP1M6Z1QoUyksZik6dH0sZi5zdWJqZWN0PWZ1bmN0aW9uKFMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiBTPT0iZnVuY3Rpb24iP1M6Z1QoUyksZik6cn0sZi50b3VjaGFibGU9ZnVuY3Rpb24oUyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIFM9PSJmdW5jdGlvbiI/UzpnVCghIVMpLGYpOm59LGYub249ZnVuY3Rpb24oKXt2YXIgUz1vLm9uLmFwcGx5KG8sYXJndW1lbnRzKTtyZXR1cm4gUz09PW8/ZjpTfSxmLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24oUyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9KFM9K1MpKlMsZik6TWF0aC5zcXJ0KGgpfSxmfXZhciBuUHQ9TSgoKT0+e1BBdCgpO3hOKCk7d1ooKTtiWigpO3RQdCgpO2VQdCgpfSk7dmFyIGlQdD1NKCgpPT57blB0KCk7d1ooKX0pO2Z1bmN0aW9uIGFQdChlKXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK2UubWFwKGZ1bmN0aW9uKHQscil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpKyI6IGRbIityKyJdIn0pLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIFFBZShlLHQpe3ZhciByPWFQdChlKTtyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gdChyKG4pLGksZSl9fWZ1bmN0aW9uIHQ0ZShlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpLHI9W107cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihuKXtmb3IodmFyIGkgaW4gbilpIGluIHR8fHIucHVzaCh0W2ldPWkpfSkscn1mdW5jdGlvbiBiMihlKXt2YXIgdD1uZXcgUmVnRXhwKCdbIicrZStgClxyXWApLHI9ZS5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIG4oYyx1KXt2YXIgaCxmLHA9aShjLGZ1bmN0aW9uKGQsZyl7aWYoaClyZXR1cm4gaChkLGctMSk7Zj1kLGg9dT9RQWUoZCx1KTphUHQoZCl9KTtyZXR1cm4gcC5jb2x1bW5zPWZ8fFtdLHB9ZnVuY3Rpb24gaShjLHUpe3ZhciBoPVtdLGY9Yy5sZW5ndGgscD0wLGQ9MCxnLF89Zjw9MCx5PSExO2MuY2hhckNvZGVBdChmLTEpPT09eVQmJi0tZixjLmNoYXJDb2RlQXQoZi0xKT09PUVaJiYtLWY7ZnVuY3Rpb24geCgpe2lmKF8pcmV0dXJuIFNaO2lmKHkpcmV0dXJuIHk9ITEsb1B0O3ZhciBTLEM9cCxQO2lmKGMuY2hhckNvZGVBdChDKT09PU1aKXtmb3IoO3ArKzxmJiZjLmNoYXJDb2RlQXQocCkhPT1NWnx8Yy5jaGFyQ29kZUF0KCsrcCk9PT1NWjspO3JldHVybihTPXApPj1mP189ITA6KFA9Yy5jaGFyQ29kZUF0KHArKykpPT09eVQ/eT0hMDpQPT09RVomJih5PSEwLGMuY2hhckNvZGVBdChwKT09PXlUJiYrK3ApLGMuc2xpY2UoQysxLFMtMSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7cDxmOyl7aWYoKFA9Yy5jaGFyQ29kZUF0KFM9cCsrKSk9PT15VCl5PSEwO2Vsc2UgaWYoUD09PUVaKXk9ITAsYy5jaGFyQ29kZUF0KHApPT09eVQmJisrcDtlbHNlIGlmKFAhPT1yKWNvbnRpbnVlO3JldHVybiBjLnNsaWNlKEMsUyl9cmV0dXJuIF89ITAsYy5zbGljZShDLGYpfWZvcig7KGc9eCgpKSE9PVNaOyl7Zm9yKHZhciBiPVtdO2chPT1vUHQmJmchPT1TWjspYi5wdXNoKGcpLGc9eCgpO3UmJihiPXUoYixkKyspKT09bnVsbHx8aC5wdXNoKGIpfXJldHVybiBofWZ1bmN0aW9uIG8oYyx1KXtyZXR1cm4gdT09bnVsbCYmKHU9dDRlKGMpKSxbdS5tYXAobCkuam9pbihlKV0uY29uY2F0KGMubWFwKGZ1bmN0aW9uKGgpe3JldHVybiB1Lm1hcChmdW5jdGlvbihmKXtyZXR1cm4gbChoW2ZdKX0pLmpvaW4oZSl9KSkuam9pbihgCmApfWZ1bmN0aW9uIGEoYyl7cmV0dXJuIGMubWFwKHMpLmpvaW4oYApgKX1mdW5jdGlvbiBzKGMpe3JldHVybiBjLm1hcChsKS5qb2luKGUpfWZ1bmN0aW9uIGwoYyl7cmV0dXJuIGM9PW51bGw/IiI6dC50ZXN0KGMrPSIiKT8nIicrYy5yZXBsYWNlKC8iL2csJyIiJykrJyInOmN9cmV0dXJue3BhcnNlOm4scGFyc2VSb3dzOmksZm9ybWF0Om8sZm9ybWF0Um93czphfX12YXIgb1B0LFNaLE1aLHlULEVaLE1OPU0oKCk9PntvUHQ9e30sU1o9e30sTVo9MzQseVQ9MTAsRVo9MTN9KTt2YXIgRU4sc1B0LGxQdCxjUHQsdVB0LGhQdD1NKCgpPT57TU4oKTtFTj1iMigiLCIpLHNQdD1FTi5wYXJzZSxsUHQ9RU4ucGFyc2VSb3dzLGNQdD1FTi5mb3JtYXQsdVB0PUVOLmZvcm1hdFJvd3N9KTt2YXIgVE4sZlB0LHBQdCxkUHQsbVB0LGdQdD1NKCgpPT57TU4oKTtUTj1iMigiCSIpLGZQdD1UTi5wYXJzZSxwUHQ9VE4ucGFyc2VSb3dzLGRQdD1UTi5mb3JtYXQsbVB0PVROLmZvcm1hdFJvd3N9KTt2YXIgX1B0PU0oKCk9PntNTigpO2hQdCgpO2dQdCgpfSk7ZnVuY3Rpb24geVB0KGUpe3JldHVybitlfXZhciB2UHQ9TSgoKT0+e30pO2Z1bmN0aW9uIHhQdChlKXtyZXR1cm4gZSplfWZ1bmN0aW9uIGJQdChlKXtyZXR1cm4gZSooMi1lKX1mdW5jdGlvbiBUWihlKXtyZXR1cm4oKGUqPTIpPD0xP2UqZTotLWUqKDItZSkrMSkvMn12YXIgd1B0PU0oKCk9Pnt9KTtmdW5jdGlvbiBTUHQoZSl7cmV0dXJuIGUqZSplfWZ1bmN0aW9uIE1QdChlKXtyZXR1cm4tLWUqZSplKzF9ZnVuY3Rpb24gQ1ooZSl7cmV0dXJuKChlKj0yKTw9MT9lKmUqZTooZS09MikqZSplKzIpLzJ9dmFyIEVQdD1NKCgpPT57fSk7dmFyIEFaLFRQdCxDUHQsUFosQVB0PU0oKCk9PntBWj0zLFRQdD1mdW5jdGlvbiBlKHQpe3Q9K3Q7ZnVuY3Rpb24gcihuKXtyZXR1cm4gTWF0aC5wb3cobix0KX1yZXR1cm4gci5leHBvbmVudD1lLHJ9KEFaKSxDUHQ9ZnVuY3Rpb24gZSh0KXt0PSt0O2Z1bmN0aW9uIHIobil7cmV0dXJuIDEtTWF0aC5wb3coMS1uLHQpfXJldHVybiByLmV4cG9uZW50PWUscn0oQVopLFBaPWZ1bmN0aW9uIGUodCl7dD0rdDtmdW5jdGlvbiByKG4pe3JldHVybigobio9Mik8PTE/TWF0aC5wb3cobix0KToyLU1hdGgucG93KDItbix0KSkvMn1yZXR1cm4gci5leHBvbmVudD1lLHJ9KEFaKX0pO2Z1bmN0aW9uIExQdChlKXtyZXR1cm4gMS1NYXRoLmNvcyhlKklQdCl9ZnVuY3Rpb24ga1B0KGUpe3JldHVybiBNYXRoLnNpbihlKklQdCl9ZnVuY3Rpb24gSVooZSl7cmV0dXJuKDEtTWF0aC5jb3MoUFB0KmUpKS8yfXZhciBQUHQsSVB0LFJQdD1NKCgpPT57UFB0PU1hdGguUEksSVB0PVBQdC8yfSk7ZnVuY3Rpb24gTlB0KGUpe3JldHVybiBNYXRoLnBvdygyLDEwKmUtMTApfWZ1bmN0aW9uIERQdChlKXtyZXR1cm4gMS1NYXRoLnBvdygyLC0xMCplKX1mdW5jdGlvbiBMWihlKXtyZXR1cm4oKGUqPTIpPD0xP01hdGgucG93KDIsMTAqZS0xMCk6Mi1NYXRoLnBvdygyLDEwLTEwKmUpKS8yfXZhciBPUHQ9TSgoKT0+e30pO2Z1bmN0aW9uIHpQdChlKXtyZXR1cm4gMS1NYXRoLnNxcnQoMS1lKmUpfWZ1bmN0aW9uIEZQdChlKXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tZSplKX1mdW5jdGlvbiBrWihlKXtyZXR1cm4oKGUqPTIpPD0xPzEtTWF0aC5zcXJ0KDEtZSplKTpNYXRoLnNxcnQoMS0oZS09MikqZSkrMSkvMn12YXIgQlB0PU0oKCk9Pnt9KTtmdW5jdGlvbiBIUHQoZSl7cmV0dXJuIDEtdzIoMS1lKX1mdW5jdGlvbiB3MihlKXtyZXR1cm4oZT0rZSk8Ulo/Q04qZSplOmU8cjRlP0NOKihlLT1lNGUpKmUrbjRlOmU8bzRlP0NOKihlLT1pNGUpKmUrYTRlOkNOKihlLT1zNGUpKmUrbDRlfWZ1bmN0aW9uIFZQdChlKXtyZXR1cm4oKGUqPTIpPD0xPzEtdzIoMS1lKTp3MihlLTEpKzEpLzJ9dmFyIFJaLGU0ZSxyNGUsbjRlLGk0ZSxvNGUsYTRlLHM0ZSxsNGUsQ04sVVB0PU0oKCk9PntSWj0uMzYzNjM2MzYzNjM2MzYzNjUsZTRlPTYvMTEscjRlPTgvMTEsbjRlPTMvNCxpNGU9OS8xMSxvNGU9MTAvMTEsYTRlPTE1LzE2LHM0ZT0yMS8yMixsNGU9NjMvNjQsQ049MS9SWi9SWn0pO3ZhciBOWixxUHQsR1B0LERaLFdQdD1NKCgpPT57Tlo9MS43MDE1OCxxUHQ9ZnVuY3Rpb24gZSh0KXt0PSt0O2Z1bmN0aW9uIHIobil7cmV0dXJuIG4qbiooKHQrMSkqbi10KX1yZXR1cm4gci5vdmVyc2hvb3Q9ZSxyfShOWiksR1B0PWZ1bmN0aW9uIGUodCl7dD0rdDtmdW5jdGlvbiByKG4pe3JldHVybi0tbipuKigodCsxKSpuK3QpKzF9cmV0dXJuIHIub3ZlcnNob290PWUscn0oTlopLERaPWZ1bmN0aW9uIGUodCl7dD0rdDtmdW5jdGlvbiByKG4pe3JldHVybigobio9Mik8MT9uKm4qKCh0KzEpKm4tdCk6KG4tPTIpKm4qKCh0KzEpKm4rdCkrMikvMn1yZXR1cm4gci5vdmVyc2hvb3Q9ZSxyfShOWil9KTt2YXIgUzIsT1oselosWVB0LEZaLGpQdCxYUHQ9TSgoKT0+e1MyPTIqTWF0aC5QSSxPWj0xLHpaPS4zLFlQdD1mdW5jdGlvbiBlKHQscil7dmFyIG49TWF0aC5hc2luKDEvKHQ9TWF0aC5tYXgoMSx0KSkpKihyLz1TMik7ZnVuY3Rpb24gaShvKXtyZXR1cm4gdCpNYXRoLnBvdygyLDEwKi0tbykqTWF0aC5zaW4oKG4tbykvcil9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG8pe3JldHVybiBlKG8scipTMil9LGkucGVyaW9kPWZ1bmN0aW9uKG8pe3JldHVybiBlKHQsbyl9LGl9KE9aLHpaKSxGWj1mdW5jdGlvbiBlKHQscil7dmFyIG49TWF0aC5hc2luKDEvKHQ9TWF0aC5tYXgoMSx0KSkpKihyLz1TMik7ZnVuY3Rpb24gaShvKXtyZXR1cm4gMS10Kk1hdGgucG93KDIsLTEwKihvPStvKSkqTWF0aC5zaW4oKG8rbikvcil9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG8pe3JldHVybiBlKG8scipTMil9LGkucGVyaW9kPWZ1bmN0aW9uKG8pe3JldHVybiBlKHQsbyl9LGl9KE9aLHpaKSxqUHQ9ZnVuY3Rpb24gZSh0LHIpe3ZhciBuPU1hdGguYXNpbigxLyh0PU1hdGgubWF4KDEsdCkpKSooci89UzIpO2Z1bmN0aW9uIGkobyl7cmV0dXJuKChvPW8qMi0xKTwwP3QqTWF0aC5wb3coMiwxMCpvKSpNYXRoLnNpbigobi1vKS9yKToyLXQqTWF0aC5wb3coMiwtMTAqbykqTWF0aC5zaW4oKG4rbykvcikpLzJ9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG8pe3JldHVybiBlKG8scipTMil9LGkucGVyaW9kPWZ1bmN0aW9uKG8pe3JldHVybiBlKHQsbyl9LGl9KE9aLHpaKX0pO3ZhciAkUHQ9TSgoKT0+e3ZQdCgpO3dQdCgpO0VQdCgpO0FQdCgpO1JQdCgpO09QdCgpO0JQdCgpO1VQdCgpO1dQdCgpO1hQdCgpfSk7ZnVuY3Rpb24gS1B0KGUsdCl7dmFyIHI7ZT09bnVsbCYmKGU9MCksdD09bnVsbCYmKHQ9MCk7ZnVuY3Rpb24gbigpe3ZhciBpLG89ci5sZW5ndGgsYSxzPTAsbD0wO2ZvcihpPTA7aTxvOysraSlhPXJbaV0scys9YS54LGwrPWEueTtmb3Iocz1zL28tZSxsPWwvby10LGk9MDtpPG87KytpKWE9cltpXSxhLngtPXMsYS55LT1sfXJldHVybiBuLmluaXRpYWxpemU9ZnVuY3Rpb24oaSl7cj1pfSxuLng9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K2ksbik6ZX0sbi55PWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStpLG4pOnR9LG59dmFyIFpQdD1NKCgpPT57fSk7ZnVuY3Rpb24gRm4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBUeT1NKCgpPT57fSk7ZnVuY3Rpb24gU3UoKXtyZXR1cm4oTWF0aC5yYW5kb20oKS0uNSkqMWUtNn12YXIgQU49TSgoKT0+e30pO2Z1bmN0aW9uIEpQdChlKXt2YXIgdD0rdGhpcy5feC5jYWxsKG51bGwsZSkscj0rdGhpcy5feS5jYWxsKG51bGwsZSk7cmV0dXJuIFFQdCh0aGlzLmNvdmVyKHQsciksdCxyLGUpfWZ1bmN0aW9uIFFQdChlLHQscixuKXtpZihpc05hTih0KXx8aXNOYU4ocikpcmV0dXJuIGU7dmFyIGksbz1lLl9yb290LGE9e2RhdGE6bn0scz1lLl94MCxsPWUuX3kwLGM9ZS5feDEsdT1lLl95MSxoLGYscCxkLGcsXyx5LHg7aWYoIW8pcmV0dXJuIGUuX3Jvb3Q9YSxlO2Zvcig7by5sZW5ndGg7KWlmKChnPXQ+PShoPShzK2MpLzIpKT9zPWg6Yz1oLChfPXI+PShmPShsK3UpLzIpKT9sPWY6dT1mLGk9bywhKG89b1t5PV88PDF8Z10pKXJldHVybiBpW3ldPWEsZTtpZihwPStlLl94LmNhbGwobnVsbCxvLmRhdGEpLGQ9K2UuX3kuY2FsbChudWxsLG8uZGF0YSksdD09PXAmJnI9PT1kKXJldHVybiBhLm5leHQ9byxpP2lbeV09YTplLl9yb290PWEsZTtkbyBpPWk/aVt5XT1uZXcgQXJyYXkoNCk6ZS5fcm9vdD1uZXcgQXJyYXkoNCksKGc9dD49KGg9KHMrYykvMikpP3M9aDpjPWgsKF89cj49KGY9KGwrdSkvMikpP2w9Zjp1PWY7d2hpbGUoKHk9Xzw8MXxnKT09PSh4PShkPj1mKTw8MXxwPj1oKSk7cmV0dXJuIGlbeF09byxpW3ldPWEsZX1mdW5jdGlvbiB0NnQoZSl7dmFyIHQscixuPWUubGVuZ3RoLGksbyxhPW5ldyBBcnJheShuKSxzPW5ldyBBcnJheShuKSxsPTEvMCxjPTEvMCx1PS0xLzAsaD0tMS8wO2ZvcihyPTA7cjxuOysrcilpc05hTihpPSt0aGlzLl94LmNhbGwobnVsbCx0PWVbcl0pKXx8aXNOYU4obz0rdGhpcy5feS5jYWxsKG51bGwsdCkpfHwoYVtyXT1pLHNbcl09byxpPGwmJihsPWkpLGk+dSYmKHU9aSksbzxjJiYoYz1vKSxvPmgmJihoPW8pKTtpZihsPnV8fGM+aClyZXR1cm4gdGhpcztmb3IodGhpcy5jb3ZlcihsLGMpLmNvdmVyKHUsaCkscj0wO3I8bjsrK3IpUVB0KHRoaXMsYVtyXSxzW3JdLGVbcl0pO3JldHVybiB0aGlzfXZhciBlNnQ9TSgoKT0+e30pO2Z1bmN0aW9uIHI2dChlLHQpe2lmKGlzTmFOKGU9K2UpfHxpc05hTih0PSt0KSlyZXR1cm4gdGhpczt2YXIgcj10aGlzLl94MCxuPXRoaXMuX3kwLGk9dGhpcy5feDEsbz10aGlzLl95MTtpZihpc05hTihyKSlpPShyPU1hdGguZmxvb3IoZSkpKzEsbz0obj1NYXRoLmZsb29yKHQpKSsxO2Vsc2V7Zm9yKHZhciBhPWktcixzPXRoaXMuX3Jvb3QsbCxjO3I+ZXx8ZT49aXx8bj50fHx0Pj1vOylzd2l0Y2goYz0odDxuKTw8MXxlPHIsbD1uZXcgQXJyYXkoNCksbFtjXT1zLHM9bCxhKj0yLGMpe2Nhc2UgMDppPXIrYSxvPW4rYTticmVhaztjYXNlIDE6cj1pLWEsbz1uK2E7YnJlYWs7Y2FzZSAyOmk9cithLG49by1hO2JyZWFrO2Nhc2UgMzpyPWktYSxuPW8tYTticmVha310aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9cyl9cmV0dXJuIHRoaXMuX3gwPXIsdGhpcy5feTA9bix0aGlzLl94MT1pLHRoaXMuX3kxPW8sdGhpc312YXIgbjZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBpNnQoKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbih0KXtpZighdC5sZW5ndGgpZG8gZS5wdXNoKHQuZGF0YSk7d2hpbGUodD10Lm5leHQpfSksZX12YXIgbzZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBhNnQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrZVswXVswXSwrZVswXVsxXSkuY292ZXIoK2VbMV1bMF0sK2VbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19dmFyIHM2dD1NKCgpPT57fSk7ZnVuY3Rpb24gd28oZSx0LHIsbixpKXt0aGlzLm5vZGU9ZSx0aGlzLngwPXQsdGhpcy55MD1yLHRoaXMueDE9bix0aGlzLnkxPWl9dmFyIFBOPU0oKCk9Pnt9KTtmdW5jdGlvbiBsNnQoZSx0LHIpe3ZhciBuLGk9dGhpcy5feDAsbz10aGlzLl95MCxhLHMsbCxjLHU9dGhpcy5feDEsaD10aGlzLl95MSxmPVtdLHA9dGhpcy5fcm9vdCxkLGc7Zm9yKHAmJmYucHVzaChuZXcgd28ocCxpLG8sdSxoKSkscj09bnVsbD9yPTEvMDooaT1lLXIsbz10LXIsdT1lK3IsaD10K3Iscio9cik7ZD1mLnBvcCgpOylpZighKCEocD1kLm5vZGUpfHwoYT1kLngwKT51fHwocz1kLnkwKT5ofHwobD1kLngxKTxpfHwoYz1kLnkxKTxvKSlpZihwLmxlbmd0aCl7dmFyIF89KGErbCkvMix5PShzK2MpLzI7Zi5wdXNoKG5ldyB3byhwWzNdLF8seSxsLGMpLG5ldyB3byhwWzJdLGEseSxfLGMpLG5ldyB3byhwWzFdLF8scyxsLHkpLG5ldyB3byhwWzBdLGEscyxfLHkpKSwoZz0odD49eSk8PDF8ZT49XykmJihkPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtZ10sZltmLmxlbmd0aC0xLWddPWQpfWVsc2V7dmFyIHg9ZS0rdGhpcy5feC5jYWxsKG51bGwscC5kYXRhKSxiPXQtK3RoaXMuX3kuY2FsbChudWxsLHAuZGF0YSksUz14KngrYipiO2lmKFM8cil7dmFyIEM9TWF0aC5zcXJ0KHI9Uyk7aT1lLUMsbz10LUMsdT1lK0MsaD10K0Msbj1wLmRhdGF9fXJldHVybiBufXZhciBjNnQ9TSgoKT0+e1BOKCl9KTtmdW5jdGlvbiB1NnQoZSl7aWYoaXNOYU4odT0rdGhpcy5feC5jYWxsKG51bGwsZSkpfHxpc05hTihoPSt0aGlzLl95LmNhbGwobnVsbCxlKSkpcmV0dXJuIHRoaXM7dmFyIHQscj10aGlzLl9yb290LG4saSxvLGE9dGhpcy5feDAscz10aGlzLl95MCxsPXRoaXMuX3gxLGM9dGhpcy5feTEsdSxoLGYscCxkLGcsXyx5O2lmKCFyKXJldHVybiB0aGlzO2lmKHIubGVuZ3RoKWZvcig7Oyl7aWYoKGQ9dT49KGY9KGErbCkvMikpP2E9ZjpsPWYsKGc9aD49KHA9KHMrYykvMikpP3M9cDpjPXAsdD1yLCEocj1yW189Zzw8MXxkXSkpcmV0dXJuIHRoaXM7aWYoIXIubGVuZ3RoKWJyZWFrOyh0W18rMSYzXXx8dFtfKzImM118fHRbXyszJjNdKSYmKG49dCx5PV8pfWZvcig7ci5kYXRhIT09ZTspaWYoaT1yLCEocj1yLm5leHQpKXJldHVybiB0aGlzO3JldHVybihvPXIubmV4dCkmJmRlbGV0ZSByLm5leHQsaT8obz9pLm5leHQ9bzpkZWxldGUgaS5uZXh0LHRoaXMpOnQ/KG8/dFtfXT1vOmRlbGV0ZSB0W19dLChyPXRbMF18fHRbMV18fHRbMl18fHRbM10pJiZyPT09KHRbM118fHRbMl18fHRbMV18fHRbMF0pJiYhci5sZW5ndGgmJihuP25beV09cjp0aGlzLl9yb290PXIpLHRoaXMpOih0aGlzLl9yb290PW8sdGhpcyl9ZnVuY3Rpb24gaDZ0KGUpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOysrdCl0aGlzLnJlbW92ZShlW3RdKTtyZXR1cm4gdGhpc312YXIgZjZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBwNnQoKXtyZXR1cm4gdGhpcy5fcm9vdH12YXIgZDZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBtNnQoKXt2YXIgZT0wO3JldHVybiB0aGlzLnZpc2l0KGZ1bmN0aW9uKHQpe2lmKCF0Lmxlbmd0aClkbysrZTt3aGlsZSh0PXQubmV4dCl9KSxlfXZhciBnNnQ9TSgoKT0+e30pO2Z1bmN0aW9uIF82dChlKXt2YXIgdD1bXSxyLG49dGhpcy5fcm9vdCxpLG8sYSxzLGw7Zm9yKG4mJnQucHVzaChuZXcgd28obix0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO3I9dC5wb3AoKTspaWYoIWUobj1yLm5vZGUsbz1yLngwLGE9ci55MCxzPXIueDEsbD1yLnkxKSYmbi5sZW5ndGgpe3ZhciBjPShvK3MpLzIsdT0oYStsKS8yOyhpPW5bM10pJiZ0LnB1c2gobmV3IHdvKGksYyx1LHMsbCkpLChpPW5bMl0pJiZ0LnB1c2gobmV3IHdvKGksbyx1LGMsbCkpLChpPW5bMV0pJiZ0LnB1c2gobmV3IHdvKGksYyxhLHMsdSkpLChpPW5bMF0pJiZ0LnB1c2gobmV3IHdvKGksbyxhLGMsdSkpfXJldHVybiB0aGlzfXZhciB5NnQ9TSgoKT0+e1BOKCl9KTtmdW5jdGlvbiB2NnQoZSl7dmFyIHQ9W10scj1bXSxuO2Zvcih0aGlzLl9yb290JiZ0LnB1c2gobmV3IHdvKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtuPXQucG9wKCk7KXt2YXIgaT1uLm5vZGU7aWYoaS5sZW5ndGgpe3ZhciBvLGE9bi54MCxzPW4ueTAsbD1uLngxLGM9bi55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPWlbMF0pJiZ0LnB1c2gobmV3IHdvKG8sYSxzLHUsaCkpLChvPWlbMV0pJiZ0LnB1c2gobmV3IHdvKG8sdSxzLGwsaCkpLChvPWlbMl0pJiZ0LnB1c2gobmV3IHdvKG8sYSxoLHUsYykpLChvPWlbM10pJiZ0LnB1c2gobmV3IHdvKG8sdSxoLGwsYykpfXIucHVzaChuKX1mb3IoO249ci5wb3AoKTspZShuLm5vZGUsbi54MCxuLnkwLG4ueDEsbi55MSk7cmV0dXJuIHRoaXN9dmFyIHg2dD1NKCgpPT57UE4oKX0pO2Z1bmN0aW9uIGI2dChlKXtyZXR1cm4gZVswXX1mdW5jdGlvbiB3NnQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9ZSx0aGlzKTp0aGlzLl94fXZhciBTNnQ9TSgoKT0+e30pO2Z1bmN0aW9uIE02dChlKXtyZXR1cm4gZVsxXX1mdW5jdGlvbiBFNnQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9ZSx0aGlzKTp0aGlzLl95fXZhciBUNnQ9TSgoKT0+e30pO2Z1bmN0aW9uIEN5KGUsdCxyKXt2YXIgbj1uZXcgQloodD09bnVsbD9iNnQ6dCxyPT1udWxsP002dDpyLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIGU9PW51bGw/bjpuLmFkZEFsbChlKX1mdW5jdGlvbiBCWihlLHQscixuLGksbyl7dGhpcy5feD1lLHRoaXMuX3k9dCx0aGlzLl94MD1yLHRoaXMuX3kwPW4sdGhpcy5feDE9aSx0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIEM2dChlKXtmb3IodmFyIHQ9e2RhdGE6ZS5kYXRhfSxyPXQ7ZT1lLm5leHQ7KXI9ci5uZXh0PXtkYXRhOmUuZGF0YX07cmV0dXJuIHR9dmFyIHFhLEE2dD1NKCgpPT57ZTZ0KCk7bjZ0KCk7bzZ0KCk7czZ0KCk7YzZ0KCk7ZjZ0KCk7ZDZ0KCk7ZzZ0KCk7eTZ0KCk7eDZ0KCk7UzZ0KCk7VDZ0KCk7cWE9Q3kucHJvdG90eXBlPUJaLnByb3RvdHlwZTtxYS5jb3B5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IEJaKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSksdD10aGlzLl9yb290LHIsbjtpZighdClyZXR1cm4gZTtpZighdC5sZW5ndGgpcmV0dXJuIGUuX3Jvb3Q9QzZ0KHQpLGU7Zm9yKHI9W3tzb3VyY2U6dCx0YXJnZXQ6ZS5fcm9vdD1uZXcgQXJyYXkoNCl9XTt0PXIucG9wKCk7KWZvcih2YXIgaT0wO2k8NDsrK2kpKG49dC5zb3VyY2VbaV0pJiYobi5sZW5ndGg/ci5wdXNoKHtzb3VyY2U6bix0YXJnZXQ6dC50YXJnZXRbaV09bmV3IEFycmF5KDQpfSk6dC50YXJnZXRbaV09QzZ0KG4pKTtyZXR1cm4gZX07cWEuYWRkPUpQdDtxYS5hZGRBbGw9dDZ0O3FhLmNvdmVyPXI2dDtxYS5kYXRhPWk2dDtxYS5leHRlbnQ9YTZ0O3FhLmZpbmQ9bDZ0O3FhLnJlbW92ZT11NnQ7cWEucmVtb3ZlQWxsPWg2dDtxYS5yb290PXA2dDtxYS5zaXplPW02dDtxYS52aXNpdD1fNnQ7cWEudmlzaXRBZnRlcj12NnQ7cWEueD13NnQ7cWEueT1FNnR9KTt2YXIgSFo9TSgoKT0+e0E2dCgpfSk7ZnVuY3Rpb24gYzRlKGUpe3JldHVybiBlLngrZS52eH1mdW5jdGlvbiB1NGUoZSl7cmV0dXJuIGUueStlLnZ5fWZ1bmN0aW9uIFA2dChlKXt2YXIgdCxyLG49MSxpPTE7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPUZuKGU9PW51bGw/MTorZSkpO2Z1bmN0aW9uIG8oKXtmb3IodmFyIGwsYz10Lmxlbmd0aCx1LGgsZixwLGQsZyxfPTA7XzxpOysrXylmb3IodT1DeSh0LGM0ZSx1NGUpLnZpc2l0QWZ0ZXIoYSksbD0wO2w8YzsrK2wpaD10W2xdLGQ9cltoLmluZGV4XSxnPWQqZCxmPWgueCtoLnZ4LHA9aC55K2gudnksdS52aXNpdCh5KTtmdW5jdGlvbiB5KHgsYixTLEMsUCl7dmFyIGs9eC5kYXRhLE89eC5yLEQ9ZCtPO2lmKGspe2lmKGsuaW5kZXg+aC5pbmRleCl7dmFyIEI9Zi1rLngtay52eCxJPXAtay55LWsudnksTD1CKkIrSSpJO0w8RCpEJiYoQj09PTAmJihCPVN1KCksTCs9QipCKSxJPT09MCYmKEk9U3UoKSxMKz1JKkkpLEw9KEQtKEw9TWF0aC5zcXJ0KEwpKSkvTCpuLGgudngrPShCKj1MKSooRD0oTyo9TykvKGcrTykpLGgudnkrPShJKj1MKSpELGsudngtPUIqKEQ9MS1EKSxrLnZ5LT1JKkQpfXJldHVybn1yZXR1cm4gYj5mK0R8fEM8Zi1EfHxTPnArRHx8UDxwLUR9fWZ1bmN0aW9uIGEobCl7aWYobC5kYXRhKXJldHVybiBsLnI9cltsLmRhdGEuaW5kZXhdO2Zvcih2YXIgYz1sLnI9MDtjPDQ7KytjKWxbY10mJmxbY10ucj5sLnImJihsLnI9bFtjXS5yKX1mdW5jdGlvbiBzKCl7aWYoISF0KXt2YXIgbCxjPXQubGVuZ3RoLHU7Zm9yKHI9bmV3IEFycmF5KGMpLGw9MDtsPGM7KytsKXU9dFtsXSxyW3UuaW5kZXhdPStlKHUsbCx0KX19cmV0dXJuIG8uaW5pdGlhbGl6ZT1mdW5jdGlvbihsKXt0PWwscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K2wsbyk6aX0sby5zdHJlbmd0aD1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rbCxvKTpufSxvLnJhZGl1cz1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgbD09ImZ1bmN0aW9uIj9sOkZuKCtsKSxzKCksbyk6ZX0sb312YXIgSTZ0PU0oKCk9PntUeSgpO0FOKCk7SFooKX0pO2Z1bmN0aW9uIElOKCl7fWZ1bmN0aW9uIEw2dChlLHQpe3ZhciByPW5ldyBJTjtpZihlIGluc3RhbmNlb2YgSU4pZS5lYWNoKGZ1bmN0aW9uKHMsbCl7ci5zZXQobCxzKX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIG49LTEsaT1lLmxlbmd0aCxvO2lmKHQ9PW51bGwpZm9yKDsrK248aTspci5zZXQobixlW25dKTtlbHNlIGZvcig7KytuPGk7KXIuc2V0KHQobz1lW25dLG4sZSksbyl9ZWxzZSBpZihlKWZvcih2YXIgYSBpbiBlKXIuc2V0KGEsZVthXSk7cmV0dXJuIHJ9dmFyIGxsLHBnLExOPU0oKCk9PntsbD0iJCI7SU4ucHJvdG90eXBlPUw2dC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOklOLGhhczpmdW5jdGlvbihlKXtyZXR1cm4gbGwrZSBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbbGwrZV19LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzW2xsK2VdPXQsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0PWxsK2U7cmV0dXJuIHQgaW4gdGhpcyYmZGVsZXRlIHRoaXNbdF19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PWxsJiZkZWxldGUgdGhpc1tlXX0sa2V5czpmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1sbCYmZS5wdXNoKHQuc2xpY2UoMSkpO3JldHVybiBlfSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09bGwmJmUucHVzaCh0aGlzW3RdKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1sbCYmZS5wdXNoKHtrZXk6dC5zbGljZSgxKSx2YWx1ZTp0aGlzW3RdfSk7cmV0dXJuIGV9LHNpemU6ZnVuY3Rpb24oKXt2YXIgZT0wO2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1sbCYmKytlO3JldHVybiBlfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzKWlmKGVbMF09PT1sbClyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09bGwmJmUodGhpc1t0XSx0LnNsaWNlKDEpLHRoaXMpfX07cGc9TDZ0fSk7dmFyIGs2dD1NKCgpPT57TE4oKX0pO2Z1bmN0aW9uIGtOKCl7fWZ1bmN0aW9uIGg0ZShlLHQpe3ZhciByPW5ldyBrTjtpZihlIGluc3RhbmNlb2Yga04pZS5lYWNoKGZ1bmN0aW9uKG8pe3IuYWRkKG8pfSk7ZWxzZSBpZihlKXt2YXIgbj0tMSxpPWUubGVuZ3RoO2lmKHQ9PW51bGwpZm9yKDsrK248aTspci5hZGQoZVtuXSk7ZWxzZSBmb3IoOysrbjxpOylyLmFkZCh0KGVbbl0sbixlKSl9cmV0dXJuIHJ9dmFyIEF5LFI2dD1NKCgpPT57TE4oKTtBeT1wZy5wcm90b3R5cGU7a04ucHJvdG90eXBlPWg0ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmtOLGhhczpBeS5oYXMsYWRkOmZ1bmN0aW9uKGUpe3JldHVybiBlKz0iIix0aGlzW2xsK2VdPWUsdGhpc30scmVtb3ZlOkF5LnJlbW92ZSxjbGVhcjpBeS5jbGVhcix2YWx1ZXM6QXkua2V5cyxzaXplOkF5LnNpemUsZW1wdHk6QXkuZW1wdHksZWFjaDpBeS5lYWNofX0pO3ZhciBONnQ9TSgoKT0+e30pO3ZhciBENnQ9TSgoKT0+e30pO3ZhciBPNnQ9TSgoKT0+e30pO3ZhciBWWj1NKCgpPT57azZ0KCk7UjZ0KCk7TE4oKTtONnQoKTtENnQoKTtPNnQoKX0pO2Z1bmN0aW9uIGY0ZShlKXtyZXR1cm4gZS5pbmRleH1mdW5jdGlvbiB6NnQoZSx0KXt2YXIgcj1lLmdldCh0KTtpZighcil0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrdCk7cmV0dXJuIHJ9ZnVuY3Rpb24gRjZ0KGUpe3ZhciB0PWY0ZSxyPXUsbixpPUZuKDMwKSxvLGEscyxsLGM9MTtlPT1udWxsJiYoZT1bXSk7ZnVuY3Rpb24gdShnKXtyZXR1cm4gMS9NYXRoLm1pbihzW2cuc291cmNlLmluZGV4XSxzW2cudGFyZ2V0LmluZGV4XSl9ZnVuY3Rpb24gaChnKXtmb3IodmFyIF89MCx5PWUubGVuZ3RoO188YzsrK18pZm9yKHZhciB4PTAsYixTLEMsUCxrLE8sRDt4PHk7Kyt4KWI9ZVt4XSxTPWIuc291cmNlLEM9Yi50YXJnZXQsUD1DLngrQy52eC1TLngtUy52eHx8U3UoKSxrPUMueStDLnZ5LVMueS1TLnZ5fHxTdSgpLE89TWF0aC5zcXJ0KFAqUCtrKmspLE89KE8tb1t4XSkvTypnKm5beF0sUCo9TyxrKj1PLEMudngtPVAqKEQ9bFt4XSksQy52eS09aypELFMudngrPVAqKEQ9MS1EKSxTLnZ5Kz1rKkR9ZnVuY3Rpb24gZigpe2lmKCEhYSl7dmFyIGcsXz1hLmxlbmd0aCx5PWUubGVuZ3RoLHg9cGcoYSx0KSxiO2ZvcihnPTAscz1uZXcgQXJyYXkoXyk7Zzx5OysrZyliPWVbZ10sYi5pbmRleD1nLHR5cGVvZiBiLnNvdXJjZSE9Im9iamVjdCImJihiLnNvdXJjZT16NnQoeCxiLnNvdXJjZSkpLHR5cGVvZiBiLnRhcmdldCE9Im9iamVjdCImJihiLnRhcmdldD16NnQoeCxiLnRhcmdldCkpLHNbYi5zb3VyY2UuaW5kZXhdPShzW2Iuc291cmNlLmluZGV4XXx8MCkrMSxzW2IudGFyZ2V0LmluZGV4XT0oc1tiLnRhcmdldC5pbmRleF18fDApKzE7Zm9yKGc9MCxsPW5ldyBBcnJheSh5KTtnPHk7KytnKWI9ZVtnXSxsW2ddPXNbYi5zb3VyY2UuaW5kZXhdLyhzW2Iuc291cmNlLmluZGV4XStzW2IudGFyZ2V0LmluZGV4XSk7bj1uZXcgQXJyYXkoeSkscCgpLG89bmV3IEFycmF5KHkpLGQoKX19ZnVuY3Rpb24gcCgpe2lmKCEhYSlmb3IodmFyIGc9MCxfPWUubGVuZ3RoO2c8XzsrK2cpbltnXT0rcihlW2ddLGcsZSl9ZnVuY3Rpb24gZCgpe2lmKCEhYSlmb3IodmFyIGc9MCxfPWUubGVuZ3RoO2c8XzsrK2cpb1tnXT0raShlW2ddLGcsZSl9cmV0dXJuIGguaW5pdGlhbGl6ZT1mdW5jdGlvbihnKXthPWcsZigpfSxoLmxpbmtzPWZ1bmN0aW9uKGcpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWcsZigpLGgpOmV9LGguaWQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZyxoKTp0fSxoLml0ZXJhdGlvbnM9ZnVuY3Rpb24oZyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K2csaCk6Y30saC5zdHJlbmd0aD1mdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgZz09ImZ1bmN0aW9uIj9nOkZuKCtnKSxwKCksaCk6cn0saC5kaXN0YW5jZT1mdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10eXBlb2YgZz09ImZ1bmN0aW9uIj9nOkZuKCtnKSxkKCksaCk6aX0saH12YXIgQjZ0PU0oKCk9PntUeSgpO0FOKCk7VlooKX0pO2Z1bmN0aW9uIFY2dCgpe2Zvcih2YXIgZT0wLHQ9YXJndW1lbnRzLmxlbmd0aCxyPXt9LG47ZTx0OysrZSl7aWYoIShuPWFyZ3VtZW50c1tlXSsiIil8fG4gaW4gcnx8L1tccy5dLy50ZXN0KG4pKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK24pO3Jbbl09W119cmV0dXJuIG5ldyBSTihyKX1mdW5jdGlvbiBSTihlKXt0aGlzLl89ZX1mdW5jdGlvbiBkNGUoZSx0KXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHIpe3ZhciBuPSIiLGk9ci5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49ci5zbGljZShpKzEpLHI9ci5zbGljZSgwLGkpKSxyJiYhdC5oYXNPd25Qcm9wZXJ0eShyKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIityKTtyZXR1cm57dHlwZTpyLG5hbWU6bn19KX1mdW5jdGlvbiBtNGUoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLGk7cjxuOysrcilpZigoaT1lW3JdKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZX1mdW5jdGlvbiBINnQoZSx0LHIpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilpZihlW25dLm5hbWU9PT10KXtlW25dPXA0ZSxlPWUuc2xpY2UoMCxuKS5jb25jYXQoZS5zbGljZShuKzEpKTticmVha31yZXR1cm4gciE9bnVsbCYmZS5wdXNoKHtuYW1lOnQsdmFsdWU6cn0pLGV9dmFyIHA0ZSxVWixVNnQ9TSgoKT0+e3A0ZT17dmFsdWU6ZnVuY3Rpb24oKXt9fTtSTi5wcm90b3R5cGU9VjZ0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Uk4sb246ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl8sbj1kNGUoZSsiIixyKSxpLG89LTEsYT1uLmxlbmd0aDtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcig7KytvPGE7KWlmKChpPShlPW5bb10pLnR5cGUpJiYoaT1tNGUocltpXSxlLm5hbWUpKSlyZXR1cm4gaTtyZXR1cm59aWYodCE9bnVsbCYmdHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK3QpO2Zvcig7KytvPGE7KWlmKGk9KGU9bltvXSkudHlwZSlyW2ldPUg2dChyW2ldLGUubmFtZSx0KTtlbHNlIGlmKHQ9PW51bGwpZm9yKGkgaW4gcilyW2ldPUg2dChyW2ldLGUubmFtZSxudWxsKTtyZXR1cm4gdGhpc30sY29weTpmdW5jdGlvbigpe3ZhciBlPXt9LHQ9dGhpcy5fO2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXS5zbGljZSgpO3JldHVybiBuZXcgUk4oZSl9LGNhbGw6ZnVuY3Rpb24oZSx0KXtpZigoaT1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciByPW5ldyBBcnJheShpKSxuPTAsaSxvO248aTsrK24pcltuXT1hcmd1bWVudHNbbisyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2UpO2ZvcihvPXRoaXMuX1tlXSxuPTAsaT1vLmxlbmd0aDtuPGk7KytuKW9bbl0udmFsdWUuYXBwbHkodCxyKX0sYXBwbHk6ZnVuY3Rpb24oZSx0LHIpe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrZSk7Zm9yKHZhciBuPXRoaXMuX1tlXSxpPTAsbz1uLmxlbmd0aDtpPG87KytpKW5baV0udmFsdWUuYXBwbHkodCxyKX19O1VaPVY2dH0pO3ZhciBxNnQ9TSgoKT0+e1U2dCgpfSk7ZnVuY3Rpb24gV1ooKXtyZXR1cm4gUHl8fChZNnQoZzRlKSxQeT13VC5ub3coKStPTil9ZnVuY3Rpb24gZzRlKCl7UHk9MH1mdW5jdGlvbiBxWigpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gek4oZSx0LHIpe3ZhciBuPW5ldyBxWjtyZXR1cm4gbi5yZXN0YXJ0KGUsdCxyKSxufWZ1bmN0aW9uIGo2dCgpe1daKCksKytNMjtmb3IodmFyIGU9Tk4sdDtlOykodD1QeS1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tTTJ9ZnVuY3Rpb24gRzZ0KCl7UHk9KEROPXdULm5vdygpKStPTixNMj14VD0wO3RyeXtqNnQoKX1maW5hbGx5e00yPTAseTRlKCksUHk9MH19ZnVuY3Rpb24gXzRlKCl7dmFyIGU9d1Qubm93KCksdD1lLUROO3Q+VzZ0JiYoT04tPXQsRE49ZSl9ZnVuY3Rpb24geTRlKCl7Zm9yKHZhciBlLHQ9Tk4scixuPTEvMDt0Oyl0Ll9jYWxsPyhuPnQuX3RpbWUmJihuPXQuX3RpbWUpLGU9dCx0PXQuX25leHQpOihyPXQuX25leHQsdC5fbmV4dD1udWxsLHQ9ZT9lLl9uZXh0PXI6Tk49cik7YlQ9ZSxHWihuKX1mdW5jdGlvbiBHWihlKXtpZighTTIpe3hUJiYoeFQ9Y2xlYXJUaW1lb3V0KHhUKSk7dmFyIHQ9ZS1QeTt0PjI0PyhlPDEvMCYmKHhUPXNldFRpbWVvdXQoRzZ0LGUtd1Qubm93KCktT04pKSx2VCYmKHZUPWNsZWFySW50ZXJ2YWwodlQpKSk6KHZUfHwoRE49d1Qubm93KCksdlQ9c2V0SW50ZXJ2YWwoXzRlLFc2dCkpLE0yPTEsWTZ0KEc2dCkpfX12YXIgTTIseFQsdlQsVzZ0LE5OLGJULEROLFB5LE9OLHdULFk2dCxYNnQ9TSgoKT0+e00yPTAseFQ9MCx2VD0wLFc2dD0xZTMsRE49MCxQeT0wLE9OPTAsd1Q9dHlwZW9mIHBlcmZvcm1hbmNlPT0ib2JqZWN0IiYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsWTZ0PXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZSwxNyl9O3FaLnByb3RvdHlwZT16Ti5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnFaLHJlc3RhcnQ6ZnVuY3Rpb24oZSx0LHIpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7cj0ocj09bnVsbD9XWigpOityKSsodD09bnVsbD8wOit0KSwhdGhpcy5fbmV4dCYmYlQhPT10aGlzJiYoYlQ/YlQuX25leHQ9dGhpczpOTj10aGlzLGJUPXRoaXMpLHRoaXMuX2NhbGw9ZSx0aGlzLl90aW1lPXIsR1ooKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsR1ooKSl9fX0pO3ZhciAkNnQ9TSgoKT0+e1g2dCgpfSk7ZnVuY3Rpb24gSzZ0KGUpe3JldHVybiBlLnh9ZnVuY3Rpb24gWjZ0KGUpe3JldHVybiBlLnl9ZnVuY3Rpb24gSjZ0KGUpe3ZhciB0LHI9MSxuPS4wMDEsaT0xLU1hdGgucG93KG4sMS8zMDApLG89MCxhPS42LHM9cGcoKSxsPXpOKHUpLGM9VVooInRpY2siLCJlbmQiKTtlPT1udWxsJiYoZT1bXSk7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLHQpLHI8biYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIix0KSl9ZnVuY3Rpb24gaCgpe3ZhciBkLGc9ZS5sZW5ndGgsXztmb3Iocis9KG8tcikqaSxzLmVhY2goZnVuY3Rpb24oeSl7eShyKX0pLGQ9MDtkPGc7KytkKV89ZVtkXSxfLmZ4PT1udWxsP18ueCs9Xy52eCo9YTooXy54PV8uZngsXy52eD0wKSxfLmZ5PT1udWxsP18ueSs9Xy52eSo9YTooXy55PV8uZnksXy52eT0wKX1mdW5jdGlvbiBmKCl7Zm9yKHZhciBkPTAsZz1lLmxlbmd0aCxfO2Q8ZzsrK2Qpe2lmKF89ZVtkXSxfLmluZGV4PWQsaXNOYU4oXy54KXx8aXNOYU4oXy55KSl7dmFyIHk9djRlKk1hdGguc3FydChkKSx4PWQqeDRlO18ueD15Kk1hdGguY29zKHgpLF8ueT15Kk1hdGguc2luKHgpfShpc05hTihfLnZ4KXx8aXNOYU4oXy52eSkpJiYoXy52eD1fLnZ5PTApfX1mdW5jdGlvbiBwKGQpe3JldHVybiBkLmluaXRpYWxpemUmJmQuaW5pdGlhbGl6ZShlKSxkfXJldHVybiBmKCksdD17dGljazpoLHJlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5yZXN0YXJ0KHUpLHR9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gbC5zdG9wKCksdH0sbm9kZXM6ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ZCxmKCkscy5lYWNoKHApLHQpOmV9LGFscGhhOmZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPStkLHQpOnJ9LGFscGhhTWluOmZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPStkLHQpOm59LGFscGhhRGVjYXk6ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K2QsdCk6K2l9LGFscGhhVGFyZ2V0OmZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPStkLHQpOm99LHZlbG9jaXR5RGVjYXk6ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9MS1kLHQpOjEtYX0sZm9yY2U6ZnVuY3Rpb24oZCxnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyhnPT1udWxsP3MucmVtb3ZlKGQpOnMuc2V0KGQscChnKSksdCk6cy5nZXQoZCl9LGZpbmQ6ZnVuY3Rpb24oZCxnLF8pe3ZhciB5PTAseD1lLmxlbmd0aCxiLFMsQyxQLGs7Zm9yKF89PW51bGw/Xz0xLzA6Xyo9Xyx5PTA7eTx4OysreSlQPWVbeV0sYj1kLVAueCxTPWctUC55LEM9YipiK1MqUyxDPF8mJihrPVAsXz1DKTtyZXR1cm4ga30sb246ZnVuY3Rpb24oZCxnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyhjLm9uKGQsZyksdCk6Yy5vbihkKX19fXZhciB2NGUseDRlLFlaPU0oKCk9PntxNnQoKTtWWigpOyQ2dCgpO3Y0ZT0xMCx4NGU9TWF0aC5QSSooMy1NYXRoLnNxcnQoNSkpfSk7ZnVuY3Rpb24gUTZ0KCl7dmFyIGUsdCxyLG49Rm4oLTMwKSxpLG89MSxhPTEvMCxzPS44MTtmdW5jdGlvbiBsKGYpe3ZhciBwLGQ9ZS5sZW5ndGgsZz1DeShlLEs2dCxaNnQpLnZpc2l0QWZ0ZXIodSk7Zm9yKHI9ZixwPTA7cDxkOysrcCl0PWVbcF0sZy52aXNpdChoKX1mdW5jdGlvbiBjKCl7aWYoISFlKXt2YXIgZixwPWUubGVuZ3RoLGQ7Zm9yKGk9bmV3IEFycmF5KHApLGY9MDtmPHA7KytmKWQ9ZVtmXSxpW2QuaW5kZXhdPStuKGQsZixlKX19ZnVuY3Rpb24gdShmKXt2YXIgcD0wLGQsZyxfPTAseSx4LGI7aWYoZi5sZW5ndGgpe2Zvcih5PXg9Yj0wO2I8NDsrK2IpKGQ9ZltiXSkmJihnPU1hdGguYWJzKGQudmFsdWUpKSYmKHArPWQudmFsdWUsXys9Zyx5Kz1nKmQueCx4Kz1nKmQueSk7Zi54PXkvXyxmLnk9eC9ffWVsc2V7ZD1mLGQueD1kLmRhdGEueCxkLnk9ZC5kYXRhLnk7ZG8gcCs9aVtkLmRhdGEuaW5kZXhdO3doaWxlKGQ9ZC5uZXh0KX1mLnZhbHVlPXB9ZnVuY3Rpb24gaChmLHAsZCxnKXtpZighZi52YWx1ZSlyZXR1cm4hMDt2YXIgXz1mLngtdC54LHk9Zi55LXQueSx4PWctcCxiPV8qXyt5Knk7aWYoeCp4L3M8YilyZXR1cm4gYjxhJiYoXz09PTAmJihfPVN1KCksYis9XypfKSx5PT09MCYmKHk9U3UoKSxiKz15KnkpLGI8byYmKGI9TWF0aC5zcXJ0KG8qYikpLHQudngrPV8qZi52YWx1ZSpyL2IsdC52eSs9eSpmLnZhbHVlKnIvYiksITA7aWYoZi5sZW5ndGh8fGI+PWEpcmV0dXJuOyhmLmRhdGEhPT10fHxmLm5leHQpJiYoXz09PTAmJihfPVN1KCksYis9XypfKSx5PT09MCYmKHk9U3UoKSxiKz15KnkpLGI8byYmKGI9TWF0aC5zcXJ0KG8qYikpKTtkbyBmLmRhdGEhPT10JiYoeD1pW2YuZGF0YS5pbmRleF0qci9iLHQudngrPV8qeCx0LnZ5Kz15KngpO3doaWxlKGY9Zi5uZXh0KX1yZXR1cm4gbC5pbml0aWFsaXplPWZ1bmN0aW9uKGYpe2U9ZixjKCl9LGwuc3RyZW5ndGg9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpGbigrZiksYygpLGwpOm59LGwuZGlzdGFuY2VNaW49ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ZipmLGwpOk1hdGguc3FydChvKX0sbC5kaXN0YW5jZU1heD1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1mKmYsbCk6TWF0aC5zcXJ0KGEpfSxsLnRoZXRhPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWYqZixsKTpNYXRoLnNxcnQocyl9LGx9dmFyIHRJdD1NKCgpPT57VHkoKTtBTigpO0haKCk7WVooKX0pO2Z1bmN0aW9uIGVJdChlLHQscil7dmFyIG4saT1GbiguMSksbyxhO3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1GbigrZSkpLHQ9PW51bGwmJih0PTApLHI9PW51bGwmJihyPTApO2Z1bmN0aW9uIHMoYyl7Zm9yKHZhciB1PTAsaD1uLmxlbmd0aDt1PGg7Kyt1KXt2YXIgZj1uW3VdLHA9Zi54LXR8fDFlLTYsZD1mLnktcnx8MWUtNixnPU1hdGguc3FydChwKnArZCpkKSxfPShhW3VdLWcpKm9bdV0qYy9nO2YudngrPXAqXyxmLnZ5Kz1kKl99fWZ1bmN0aW9uIGwoKXtpZighIW4pe3ZhciBjLHU9bi5sZW5ndGg7Zm9yKG89bmV3IEFycmF5KHUpLGE9bmV3IEFycmF5KHUpLGM9MDtjPHU7KytjKWFbY109K2UobltjXSxjLG4pLG9bY109aXNOYU4oYVtjXSk/MDoraShuW2NdLGMsbil9fXJldHVybiBzLmluaXRpYWxpemU9ZnVuY3Rpb24oYyl7bj1jLGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10eXBlb2YgYz09ImZ1bmN0aW9uIj9jOkZuKCtjKSxsKCkscyk6aX0scy5yYWRpdXM9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpGbigrYyksbCgpLHMpOmV9LHMueD1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rYyxzKTp0fSxzLnk9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2Mscyk6cn0sc312YXIgckl0PU0oKCk9PntUeSgpfSk7ZnVuY3Rpb24gbkl0KGUpe3ZhciB0PUZuKC4xKSxyLG4saTt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9Rm4oZT09bnVsbD8wOitlKSk7ZnVuY3Rpb24gbyhzKXtmb3IodmFyIGw9MCxjPXIubGVuZ3RoLHU7bDxjOysrbCl1PXJbbF0sdS52eCs9KGlbbF0tdS54KSpuW2xdKnN9ZnVuY3Rpb24gYSgpe2lmKCEhcil7dmFyIHMsbD1yLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobCksaT1uZXcgQXJyYXkobCkscz0wO3M8bDsrK3MpbltzXT1pc05hTihpW3NdPStlKHJbc10scyxyKSk/MDordChyW3NdLHMscil9fXJldHVybiBvLmluaXRpYWxpemU9ZnVuY3Rpb24ocyl7cj1zLGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOkZuKCtzKSxhKCksbyk6dH0sby54PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6Rm4oK3MpLGEoKSxvKTplfSxvfXZhciBpSXQ9TSgoKT0+e1R5KCl9KTtmdW5jdGlvbiBvSXQoZSl7dmFyIHQ9Rm4oLjEpLHIsbixpO3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1GbihlPT1udWxsPzA6K2UpKTtmdW5jdGlvbiBvKHMpe2Zvcih2YXIgbD0wLGM9ci5sZW5ndGgsdTtsPGM7KytsKXU9cltsXSx1LnZ5Kz0oaVtsXS11LnkpKm5bbF0qc31mdW5jdGlvbiBhKCl7aWYoISFyKXt2YXIgcyxsPXIubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShsKSxpPW5ldyBBcnJheShsKSxzPTA7czxsOysrcyluW3NdPWlzTmFOKGlbc109K2UocltzXSxzLHIpKT8wOit0KHJbc10scyxyKX19cmV0dXJuIG8uaW5pdGlhbGl6ZT1mdW5jdGlvbihzKXtyPXMsYSgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6Rm4oK3MpLGEoKSxvKTp0fSxvLnk9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpGbigrcyksYSgpLG8pOmV9LG99dmFyIGFJdD1NKCgpPT57VHkoKX0pO3ZhciBzSXQ9TSgoKT0+e1pQdCgpO0k2dCgpO0I2dCgpO3RJdCgpO3JJdCgpO1laKCk7aUl0KCk7YUl0KCl9KTtmdW5jdGlvbiBJeShlLHQpe2lmKChyPShlPXQ/ZS50b0V4cG9uZW50aWFsKHQtMSk6ZS50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgcixuPWUuc2xpY2UoMCxyKTtyZXR1cm5bbi5sZW5ndGg+MT9uWzBdK24uc2xpY2UoMik6biwrZS5zbGljZShyKzEpXX12YXIgRk49TSgoKT0+e30pO2Z1bmN0aW9uIGVmKGUpe3JldHVybiBlPUl5KE1hdGguYWJzKGUpKSxlP2VbMV06TmFOfXZhciBTVD1NKCgpPT57Rk4oKX0pO2Z1bmN0aW9uIGxJdChlLHQpe3JldHVybiBmdW5jdGlvbihyLG4pe2Zvcih2YXIgaT1yLmxlbmd0aCxvPVtdLGE9MCxzPWVbMF0sbD0wO2k+MCYmcz4wJiYobCtzKzE+biYmKHM9TWF0aC5tYXgoMSxuLWwpKSxvLnB1c2goci5zdWJzdHJpbmcoaS09cyxpK3MpKSwhKChsKz1zKzEpPm4pKTspcz1lW2E9KGErMSklZS5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKHQpfX12YXIgY0l0PU0oKCk9Pnt9KTtmdW5jdGlvbiB1SXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24ocil7cmV0dXJuIGVbK3JdfSl9fXZhciBoSXQ9TSgoKT0+e30pO2Z1bmN0aW9uIGZJdChlLHQpe2U9ZS50b1ByZWNpc2lvbih0KTt0OmZvcih2YXIgcj1lLmxlbmd0aCxuPTEsaT0tMSxvO248cjsrK24pc3dpdGNoKGVbbl0pe2Nhc2UiLiI6aT1vPW47YnJlYWs7Y2FzZSIwIjppPT09MCYmKGk9biksbz1uO2JyZWFrO2Nhc2UiZSI6YnJlYWsgdDtkZWZhdWx0Omk+MCYmKGk9MCk7YnJlYWt9cmV0dXJuIGk+MD9lLnNsaWNlKDAsaSkrZS5zbGljZShvKzEpOmV9dmFyIHBJdD1NKCgpPT57fSk7ZnVuY3Rpb24gZEl0KGUsdCl7dmFyIHI9SXkoZSx0KTtpZighcilyZXR1cm4gZSsiIjt2YXIgbj1yWzBdLGk9clsxXSxvPWktKGpaPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihpLzMpKSkqMykrMSxhPW4ubGVuZ3RoO3JldHVybiBvPT09YT9uOm8+YT9uK25ldyBBcnJheShvLWErMSkuam9pbigiMCIpOm8+MD9uLnNsaWNlKDAsbykrIi4iK24uc2xpY2Uobyk6IjAuIituZXcgQXJyYXkoMS1vKS5qb2luKCIwIikrSXkoZSxNYXRoLm1heCgwLHQrby0xKSlbMF19dmFyIGpaLFhaPU0oKCk9PntGTigpfSk7ZnVuY3Rpb24gJFooZSx0KXt2YXIgcj1JeShlLHQpO2lmKCFyKXJldHVybiBlKyIiO3ZhciBuPXJbMF0saT1yWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStuOm4ubGVuZ3RoPmkrMT9uLnNsaWNlKDAsaSsxKSsiLiIrbi5zbGljZShpKzEpOm4rbmV3IEFycmF5KGktbi5sZW5ndGgrMikuam9pbigiMCIpfXZhciBtSXQ9TSgoKT0+e0ZOKCl9KTt2YXIgQk4sS1o9TSgoKT0+e3BJdCgpO1haKCk7bUl0KCk7Qk49eyIiOmZJdCwiJSI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZSoxMDApLnRvRml4ZWQodCl9LGI6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQoZSkudG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrIiJ9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQoZSkudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudG9FeHBvbmVudGlhbCh0KX0sZjpmdW5jdGlvbihlLHQpe3JldHVybiBlLnRvRml4ZWQodCl9LGc6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b1ByZWNpc2lvbih0KX0sbzpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZyg4KX0scDpmdW5jdGlvbihlLHQpe3JldHVybiAkWihlKjEwMCx0KX0scjokWixzOmRJdCxYOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KX19fSk7ZnVuY3Rpb24gTHkoZSl7cmV0dXJuIG5ldyBaWihlKX1mdW5jdGlvbiBaWihlKXtpZighKHQ9YjRlLmV4ZWMoZSkpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrZSk7dmFyIHQscj10WzFdfHwiICIsbj10WzJdfHwiPiIsaT10WzNdfHwiLSIsbz10WzRdfHwiIixhPSEhdFs1XSxzPXRbNl0mJit0WzZdLGw9ISF0WzddLGM9dFs4XSYmK3RbOF0uc2xpY2UoMSksdT10WzldfHwiIjt1PT09Im4iPyhsPSEwLHU9ImciKTpCTlt1XXx8KHU9IiIpLChhfHxyPT09IjAiJiZuPT09Ij0iKSYmKGE9ITAscj0iMCIsbj0iPSIpLHRoaXMuZmlsbD1yLHRoaXMuYWxpZ249bix0aGlzLnNpZ249aSx0aGlzLnN5bWJvbD1vLHRoaXMuemVybz1hLHRoaXMud2lkdGg9cyx0aGlzLmNvbW1hPWwsdGhpcy5wcmVjaXNpb249Yyx0aGlzLnR5cGU9dX12YXIgYjRlLEpaPU0oKCk9PntLWigpO2I0ZT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC1cKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyhbYS16JV0pPyQvaTtMeS5wcm90b3R5cGU9WloucHJvdG90eXBlO1paLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh0aGlzLndpZHRoPT1udWxsPyIiOk1hdGgubWF4KDEsdGhpcy53aWR0aHwwKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodGhpcy5wcmVjaXNpb249PW51bGw/IiI6Ii4iK01hdGgubWF4KDAsdGhpcy5wcmVjaXNpb258MCkpK3RoaXMudHlwZX19KTtmdW5jdGlvbiBRWihlKXtyZXR1cm4gZX12YXIgZ0l0PU0oKCk9Pnt9KTtmdW5jdGlvbiBITihlKXt2YXIgdD1lLmdyb3VwaW5nJiZlLnRob3VzYW5kcz9sSXQoZS5ncm91cGluZyxlLnRob3VzYW5kcyk6UVoscj1lLmN1cnJlbmN5LG49ZS5kZWNpbWFsLGk9ZS5udW1lcmFscz91SXQoZS5udW1lcmFscyk6UVosbz1lLnBlcmNlbnR8fCIlIjtmdW5jdGlvbiBhKGwpe2w9THkobCk7dmFyIGM9bC5maWxsLHU9bC5hbGlnbixoPWwuc2lnbixmPWwuc3ltYm9sLHA9bC56ZXJvLGQ9bC53aWR0aCxnPWwuY29tbWEsXz1sLnByZWNpc2lvbix5PWwudHlwZSx4PWY9PT0iJCI/clswXTpmPT09IiMiJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsYj1mPT09IiQiP3JbMV06L1slcF0vLnRlc3QoeSk/bzoiIixTPUJOW3ldLEM9IXl8fC9bZGVmZ3BycyVdLy50ZXN0KHkpO189Xz09bnVsbD95PzY6MTI6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLF8pKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLF8pKTtmdW5jdGlvbiBQKGspe3ZhciBPPXgsRD1iLEIsSSxMO2lmKHk9PT0iYyIpRD1TKGspK0Qsaz0iIjtlbHNle2s9K2s7dmFyIFI9azwwO2lmKGs9UyhNYXRoLmFicyhrKSxfKSxSJiYraz09MCYmKFI9ITEpLE89KFI/aD09PSIoIj9oOiItIjpoPT09Ii0ifHxoPT09IigiPyIiOmgpK08sRD0oeT09PSJzIj9fSXRbOCtqWi8zXToiIikrRCsoUiYmaD09PSIoIj8iKSI6IiIpLEMpe2ZvcihCPS0xLEk9ay5sZW5ndGg7KytCPEk7KWlmKEw9ay5jaGFyQ29kZUF0KEIpLDQ4Pkx8fEw+NTcpe0Q9KEw9PT00Nj9uK2suc2xpY2UoQisxKTprLnNsaWNlKEIpKStELGs9ay5zbGljZSgwLEIpO2JyZWFrfX19ZyYmIXAmJihrPXQoaywxLzApKTt2YXIgRj1PLmxlbmd0aCtrLmxlbmd0aCtELmxlbmd0aCx6PUY8ZD9uZXcgQXJyYXkoZC1GKzEpLmpvaW4oYyk6IiI7c3dpdGNoKGcmJnAmJihrPXQoeitrLHoubGVuZ3RoP2QtRC5sZW5ndGg6MS8wKSx6PSIiKSx1KXtjYXNlIjwiOms9TytrK0QrejticmVhaztjYXNlIj0iOms9Tyt6K2srRDticmVhaztjYXNlIl4iOms9ei5zbGljZSgwLEY9ei5sZW5ndGg+PjEpK08raytEK3ouc2xpY2UoRik7YnJlYWs7ZGVmYXVsdDprPXorTytrK0Q7YnJlYWt9cmV0dXJuIGkoayl9cmV0dXJuIFAudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gbCsiIn0sUH1mdW5jdGlvbiBzKGwsYyl7dmFyIHU9YSgobD1MeShsKSxsLnR5cGU9ImYiLGwpKSxoPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihlZihjKS8zKSkpKjMsZj1NYXRoLnBvdygxMCwtaCkscD1fSXRbOCtoLzNdO3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gdShmKmQpK3B9fXJldHVybntmb3JtYXQ6YSxmb3JtYXRQcmVmaXg6c319dmFyIF9JdCx0Sj1NKCgpPT57U1QoKTtjSXQoKTtoSXQoKTtKWigpO0taKCk7WFooKTtnSXQoKTtfSXQ9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJceEI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl19KTtmdW5jdGlvbiBVTihlKXtyZXR1cm4gVk49SE4oZSksZUo9Vk4uZm9ybWF0LHJKPVZOLmZvcm1hdFByZWZpeCxWTn12YXIgVk4sZUosckoseUl0PU0oKCk9Pnt0SigpO1VOKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXX0pfSk7ZnVuY3Rpb24gdkl0KGUpe3JldHVybiBNYXRoLm1heCgwLC1lZihNYXRoLmFicyhlKSkpfXZhciB4SXQ9TSgoKT0+e1NUKCl9KTtmdW5jdGlvbiBiSXQoZSx0KXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoZWYodCkvMykpKSozLWVmKE1hdGguYWJzKGUpKSl9dmFyIHdJdD1NKCgpPT57U1QoKX0pO2Z1bmN0aW9uIFNJdChlLHQpe3JldHVybiBlPU1hdGguYWJzKGUpLHQ9TWF0aC5hYnModCktZSxNYXRoLm1heCgwLGVmKHQpLWVmKGUpKSsxfXZhciBNSXQ9TSgoKT0+e1NUKCl9KTt2YXIgRUl0PU0oKCk9Pnt5SXQoKTt0SigpO0paKCk7eEl0KCk7d0l0KCk7TUl0KCl9KTtmdW5jdGlvbiBUcygpe3JldHVybiBuZXcgR059ZnVuY3Rpb24gR04oKXt0aGlzLnJlc2V0KCl9ZnVuY3Rpb24gVEl0KGUsdCxyKXt2YXIgbj1lLnM9dCtyLGk9bi10LG89bi1pO2UudD10LW8rKHItaSl9dmFyIHFOLGt5PU0oKCk9PntHTi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkdOLHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSxhZGQ6ZnVuY3Rpb24oZSl7VEl0KHFOLGUsdGhpcy50KSxUSXQodGhpcyxxTi5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9cU4udDp0aGlzLnM9cU4udH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTtxTj1uZXcgR059KTtmdW5jdGlvbiBqTihlKXtyZXR1cm4gZT4xPzA6ZTwtMT9ycjpNYXRoLmFjb3MoZSl9ZnVuY3Rpb24gSm4oZSl7cmV0dXJuIGU+MT9CbjplPC0xPy1CbjpNYXRoLmFzaW4oZSl9ZnVuY3Rpb24gaUooZSl7cmV0dXJuKGU9SnQoZS8yKSkqZX12YXIgY2UsbkoscnIsQm4sRTIsRmksVXIsd2UsWWUsZ2MsU24sYWUsTVQsV04sUnksWU4sSnQsZGcsUnIsVDIsbHI9TSgoKT0+e2NlPTFlLTYsbko9MWUtMTIscnI9TWF0aC5QSSxCbj1yci8yLEUyPXJyLzQsRmk9cnIqMixVcj0xODAvcnIsd2U9cnIvMTgwLFllPU1hdGguYWJzLGdjPU1hdGguYXRhbixTbj1NYXRoLmF0YW4yLGFlPU1hdGguY29zLE1UPU1hdGguY2VpbCxXTj1NYXRoLmV4cCxSeT1NYXRoLmxvZyxZTj1NYXRoLnBvdyxKdD1NYXRoLnNpbixkZz1NYXRoLnNpZ258fGZ1bmN0aW9uKGUpe3JldHVybiBlPjA/MTplPDA/LTE6MH0sUnI9TWF0aC5zcXJ0LFQyPU1hdGgudGFufSk7ZnVuY3Rpb24gcXIoKXt9dmFyIFhwPU0oKCk9Pnt9KTtmdW5jdGlvbiBYTihlLHQpe2UmJkFJdC5oYXNPd25Qcm9wZXJ0eShlLnR5cGUpJiZBSXRbZS50eXBlXShlLHQpfWZ1bmN0aW9uIG9KKGUsdCxyKXt2YXIgbj0tMSxpPWUubGVuZ3RoLXIsbztmb3IodC5saW5lU3RhcnQoKTsrK248aTspbz1lW25dLHQucG9pbnQob1swXSxvWzFdLG9bMl0pO3QubGluZUVuZCgpfWZ1bmN0aW9uIFBJdChlLHQpe3ZhciByPS0xLG49ZS5sZW5ndGg7Zm9yKHQucG9seWdvblN0YXJ0KCk7KytyPG47KW9KKGVbcl0sdCwxKTt0LnBvbHlnb25FbmQoKX1mdW5jdGlvbiBTbyhlLHQpe2UmJkNJdC5oYXNPd25Qcm9wZXJ0eShlLnR5cGUpP0NJdFtlLnR5cGVdKGUsdCk6WE4oZSx0KX12YXIgQ0l0LEFJdCxtZz1NKCgpPT57Q0l0PXtGZWF0dXJlOmZ1bmN0aW9uKGUsdCl7WE4oZS5nZW9tZXRyeSx0KX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9ZS5mZWF0dXJlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KVhOKHJbbl0uZ2VvbWV0cnksdCl9fSxBSXQ9e1NwaGVyZTpmdW5jdGlvbihlLHQpe3Quc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKGUsdCl7ZT1lLmNvb3JkaW5hdGVzLHQucG9pbnQoZVswXSxlWzFdLGVbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOyllPXJbbl0sdC5wb2ludChlWzBdLGVbMV0sZVsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24oZSx0KXtvSihlLmNvb3JkaW5hdGVzLHQsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspb0oocltuXSx0LDApfSxQb2x5Z29uOmZ1bmN0aW9uKGUsdCl7UEl0KGUuY29vcmRpbmF0ZXMsdCl9LE11bHRpUG9seWdvbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspUEl0KHJbbl0sdCl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmdlb21ldHJpZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylYTihyW25dLHQpfX19KTtmdW5jdGlvbiB3NGUoKXtNdS5wb2ludD1NNGV9ZnVuY3Rpb24gUzRlKCl7a0l0KElJdCxMSXQpfWZ1bmN0aW9uIE00ZShlLHQpe011LnBvaW50PWtJdCxJSXQ9ZSxMSXQ9dCxlKj13ZSx0Kj13ZSxhSj1lLHNKPWFlKHQ9dC8yK0UyKSxsSj1KdCh0KX1mdW5jdGlvbiBrSXQoZSx0KXtlKj13ZSx0Kj13ZSx0PXQvMitFMjt2YXIgcj1lLWFKLG49cj49MD8xOi0xLGk9bipyLG89YWUodCksYT1KdCh0KSxzPWxKKmEsbD1zSipvK3MqYWUoaSksYz1zKm4qSnQoaSk7RVQuYWRkKFNuKGMsbCkpLGFKPWUsc0o9byxsSj1hfWZ1bmN0aW9uIFJJdChlKXtyZXR1cm4gJE4ucmVzZXQoKSxTbyhlLE11KSwkTioyfXZhciBFVCwkTixJSXQsTEl0LGFKLHNKLGxKLE11LGNKPU0oKCk9PntreSgpO2xyKCk7WHAoKTttZygpO0VUPVRzKCksJE49VHMoKSxNdT17cG9pbnQ6cXIsbGluZVN0YXJ0OnFyLGxpbmVFbmQ6cXIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7RVQucmVzZXQoKSxNdS5saW5lU3RhcnQ9dzRlLE11LmxpbmVFbmQ9UzRlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIGU9K0VUOyROLmFkZChlPDA/RmkrZTplKSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD1xcn0sc3BoZXJlOmZ1bmN0aW9uKCl7JE4uYWRkKEZpKX19fSk7ZnVuY3Rpb24gTnkoZSl7cmV0dXJuW1NuKGVbMV0sZVswXSksSm4oZVsyXSldfWZ1bmN0aW9uIF9jKGUpe3ZhciB0PWVbMF0scj1lWzFdLG49YWUocik7cmV0dXJuW24qYWUodCksbipKdCh0KSxKdChyKV19ZnVuY3Rpb24gVFQoZSx0KXtyZXR1cm4gZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl19ZnVuY3Rpb24gJHAoZSx0KXtyZXR1cm5bZVsxXSp0WzJdLWVbMl0qdFsxXSxlWzJdKnRbMF0tZVswXSp0WzJdLGVbMF0qdFsxXS1lWzFdKnRbMF1dfWZ1bmN0aW9uIEtOKGUsdCl7ZVswXSs9dFswXSxlWzFdKz10WzFdLGVbMl0rPXRbMl19ZnVuY3Rpb24gQ1QoZSx0KXtyZXR1cm5bZVswXSp0LGVbMV0qdCxlWzJdKnRdfWZ1bmN0aW9uIER5KGUpe3ZhciB0PVJyKGVbMF0qZVswXStlWzFdKmVbMV0rZVsyXSplWzJdKTtlWzBdLz10LGVbMV0vPXQsZVsyXS89dH12YXIgQzI9TSgoKT0+e2xyKCl9KTtmdW5jdGlvbiB1SihlLHQpe2dnLnB1c2goWnA9W21pPWUsRWk9ZV0pLHQ8dWwmJih1bD10KSx0PnljJiYoeWM9dCl9ZnVuY3Rpb24gQkl0KGUsdCl7dmFyIHI9X2MoW2Uqd2UsdCp3ZV0pO2lmKEEyKXt2YXIgbj0kcChBMixyKSxpPVtuWzFdLC1uWzBdLDBdLG89JHAoaSxuKTtEeShvKSxvPU55KG8pO3ZhciBhPWUtT3kscz1hPjA/MTotMSxsPW9bMF0qVXIqcyxjLHU9WWUoYSk+MTgwO3VeKHMqT3k8bCYmbDxzKmUpPyhjPW9bMV0qVXIsYz55YyYmKHljPWMpKToobD0obCszNjApJTM2MC0xODAsdV4ocypPeTxsJiZsPHMqZSk/KGM9LW9bMV0qVXIsYzx1bCYmKHVsPWMpKToodDx1bCYmKHVsPXQpLHQ+eWMmJih5Yz10KSkpLHU/ZTxPeT9jbChtaSxlKT5jbChtaSxFaSkmJihFaT1lKTpjbChlLEVpKT5jbChtaSxFaSkmJihtaT1lKTpFaT49bWk/KGU8bWkmJihtaT1lKSxlPkVpJiYoRWk9ZSkpOmU+T3k/Y2wobWksZSk+Y2wobWksRWkpJiYoRWk9ZSk6Y2woZSxFaSk+Y2wobWksRWkpJiYobWk9ZSl9ZWxzZSBnZy5wdXNoKFpwPVttaT1lLEVpPWVdKTt0PHVsJiYodWw9dCksdD55YyYmKHljPXQpLEEyPXIsT3k9ZX1mdW5jdGlvbiBOSXQoKXtLcC5wb2ludD1CSXR9ZnVuY3Rpb24gREl0KCl7WnBbMF09bWksWnBbMV09RWksS3AucG9pbnQ9dUosQTI9bnVsbH1mdW5jdGlvbiBISXQoZSx0KXtpZihBMil7dmFyIHI9ZS1PeTtBVC5hZGQoWWUocik+MTgwP3IrKHI+MD8zNjA6LTM2MCk6cil9ZWxzZSB6SXQ9ZSxGSXQ9dDtNdS5wb2ludChlLHQpLEJJdChlLHQpfWZ1bmN0aW9uIEU0ZSgpe011LmxpbmVTdGFydCgpfWZ1bmN0aW9uIFQ0ZSgpe0hJdCh6SXQsRkl0KSxNdS5saW5lRW5kKCksWWUoQVQpPmNlJiYobWk9LShFaT0xODApKSxacFswXT1taSxacFsxXT1FaSxBMj1udWxsfWZ1bmN0aW9uIGNsKGUsdCl7cmV0dXJuKHQtPWUpPDA/dCszNjA6dH1mdW5jdGlvbiBDNGUoZSx0KXtyZXR1cm4gZVswXS10WzBdfWZ1bmN0aW9uIE9JdChlLHQpe3JldHVybiBlWzBdPD1lWzFdP2VbMF08PXQmJnQ8PWVbMV06dDxlWzBdfHxlWzFdPHR9ZnVuY3Rpb24gVkl0KGUpe3ZhciB0LHIsbixpLG8sYSxzO2lmKHljPUVpPS0obWk9dWw9MS8wKSxnZz1bXSxTbyhlLEtwKSxyPWdnLmxlbmd0aCl7Zm9yKGdnLnNvcnQoQzRlKSx0PTEsbj1nZ1swXSxvPVtuXTt0PHI7Kyt0KWk9Z2dbdF0sT0l0KG4saVswXSl8fE9JdChuLGlbMV0pPyhjbChuWzBdLGlbMV0pPmNsKG5bMF0sblsxXSkmJihuWzFdPWlbMV0pLGNsKGlbMF0sblsxXSk+Y2woblswXSxuWzFdKSYmKG5bMF09aVswXSkpOm8ucHVzaChuPWkpO2ZvcihhPS0xLzAscj1vLmxlbmd0aC0xLHQ9MCxuPW9bcl07dDw9cjtuPWksKyt0KWk9b1t0XSwocz1jbChuWzFdLGlbMF0pKT5hJiYoYT1zLG1pPWlbMF0sRWk9blsxXSl9cmV0dXJuIGdnPVpwPW51bGwsbWk9PT0xLzB8fHVsPT09MS8wP1tbTmFOLE5hTl0sW05hTixOYU5dXTpbW21pLHVsXSxbRWkseWNdXX12YXIgbWksdWwsRWkseWMsT3ksekl0LEZJdCxBMixBVCxnZyxacCxLcCxVSXQ9TSgoKT0+e2t5KCk7Y0ooKTtDMigpO2xyKCk7bWcoKTtBVD1UcygpLEtwPXtwb2ludDp1SixsaW5lU3RhcnQ6Tkl0LGxpbmVFbmQ6REl0LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0twLnBvaW50PUhJdCxLcC5saW5lU3RhcnQ9RTRlLEtwLmxpbmVFbmQ9VDRlLEFULnJlc2V0KCksTXUucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtNdS5wb2x5Z29uRW5kKCksS3AucG9pbnQ9dUosS3AubGluZVN0YXJ0PU5JdCxLcC5saW5lRW5kPURJdCxFVDwwPyhtaT0tKEVpPTE4MCksdWw9LSh5Yz05MCkpOkFUPmNlP3ljPTkwOkFUPC1jZSYmKHVsPS05MCksWnBbMF09bWksWnBbMV09RWl9fX0pO2Z1bmN0aW9uIGRKKGUsdCl7ZSo9d2UsdCo9d2U7dmFyIHI9YWUodCk7SVQociphZShlKSxyKkp0KGUpLEp0KHQpKX1mdW5jdGlvbiBJVChlLHQscil7KytQVCxKTis9KGUtSk4pL1BULFFOKz0odC1RTikvUFQsdEQrPShyLXREKS9QVH1mdW5jdGlvbiBxSXQoKXtFdS5wb2ludD1BNGV9ZnVuY3Rpb24gQTRlKGUsdCl7ZSo9d2UsdCo9d2U7dmFyIHI9YWUodCk7R2E9ciphZShlKSxXYT1yKkp0KGUpLFlhPUp0KHQpLEV1LnBvaW50PVA0ZSxJVChHYSxXYSxZYSl9ZnVuY3Rpb24gUDRlKGUsdCl7ZSo9d2UsdCo9d2U7dmFyIHI9YWUodCksbj1yKmFlKGUpLGk9cipKdChlKSxvPUp0KHQpLGE9U24oUnIoKGE9V2Eqby1ZYSppKSphKyhhPVlhKm4tR2EqbykqYSsoYT1HYSppLVdhKm4pKmEpLEdhKm4rV2EqaStZYSpvKTtaTis9YSxlRCs9YSooR2ErKEdhPW4pKSxyRCs9YSooV2ErKFdhPWkpKSxuRCs9YSooWWErKFlhPW8pKSxJVChHYSxXYSxZYSl9ZnVuY3Rpb24gR0l0KCl7RXUucG9pbnQ9ZEp9ZnVuY3Rpb24gSTRlKCl7RXUucG9pbnQ9azRlfWZ1bmN0aW9uIEw0ZSgpe2pJdChXSXQsWUl0KSxFdS5wb2ludD1kSn1mdW5jdGlvbiBrNGUoZSx0KXtXSXQ9ZSxZSXQ9dCxlKj13ZSx0Kj13ZSxFdS5wb2ludD1qSXQ7dmFyIHI9YWUodCk7R2E9ciphZShlKSxXYT1yKkp0KGUpLFlhPUp0KHQpLElUKEdhLFdhLFlhKX1mdW5jdGlvbiBqSXQoZSx0KXtlKj13ZSx0Kj13ZTt2YXIgcj1hZSh0KSxuPXIqYWUoZSksaT1yKkp0KGUpLG89SnQodCksYT1XYSpvLVlhKmkscz1ZYSpuLUdhKm8sbD1HYSppLVdhKm4sYz1ScihhKmErcypzK2wqbCksdT1KbihjKSxoPWMmJi11L2M7aEorPWgqYSxmSis9aCpzLHBKKz1oKmwsWk4rPXUsZUQrPXUqKEdhKyhHYT1uKSksckQrPXUqKFdhKyhXYT1pKSksbkQrPXUqKFlhKyhZYT1vKSksSVQoR2EsV2EsWWEpfWZ1bmN0aW9uIFhJdChlKXtQVD1aTj1KTj1RTj10RD1lRD1yRD1uRD1oSj1mSj1wSj0wLFNvKGUsRXUpO3ZhciB0PWhKLHI9Zkosbj1wSixpPXQqdCtyKnIrbipuO3JldHVybiBpPG5KJiYodD1lRCxyPXJELG49bkQsWk48Y2UmJih0PUpOLHI9UU4sbj10RCksaT10KnQrcipyK24qbixpPG5KKT9bTmFOLE5hTl06W1NuKHIsdCkqVXIsSm4obi9ScihpKSkqVXJdfXZhciBQVCxaTixKTixRTix0RCxlRCxyRCxuRCxoSixmSixwSixXSXQsWUl0LEdhLFdhLFlhLEV1LCRJdD1NKCgpPT57bHIoKTtYcCgpO21nKCk7RXU9e3NwaGVyZTpxcixwb2ludDpkSixsaW5lU3RhcnQ6cUl0LGxpbmVFbmQ6R0l0LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0V1LmxpbmVTdGFydD1JNGUsRXUubGluZUVuZD1MNGV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtFdS5saW5lU3RhcnQ9cUl0LEV1LmxpbmVFbmQ9R0l0fX19KTtmdW5jdGlvbiB6eShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIEtJdD1NKCgpPT57fSk7ZnVuY3Rpb24gaUQoZSx0KXtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG49ZShuLGkpLHQoblswXSxuWzFdKX1yZXR1cm4gZS5pbnZlcnQmJnQuaW52ZXJ0JiYoci5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm4gbj10LmludmVydChuLGkpLG4mJmUuaW52ZXJ0KG5bMF0sblsxXSl9KSxyfXZhciBtSj1NKCgpPT57fSk7ZnVuY3Rpb24gZ0ooZSx0KXtyZXR1cm5bZT5ycj9lLUZpOmU8LXJyP2UrRmk6ZSx0XX1mdW5jdGlvbiBMVChlLHQscil7cmV0dXJuKGUlPUZpKT90fHxyP2lEKEpJdChlKSxRSXQodCxyKSk6Skl0KGUpOnR8fHI/UUl0KHQscik6Z0p9ZnVuY3Rpb24gWkl0KGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiB0Kz1lLFt0PnJyP3QtRmk6dDwtcnI/dCtGaTp0LHJdfX1mdW5jdGlvbiBKSXQoZSl7dmFyIHQ9Wkl0KGUpO3JldHVybiB0LmludmVydD1aSXQoLWUpLHR9ZnVuY3Rpb24gUUl0KGUsdCl7dmFyIHI9YWUoZSksbj1KdChlKSxpPWFlKHQpLG89SnQodCk7ZnVuY3Rpb24gYShzLGwpe3ZhciBjPWFlKGwpLHU9YWUocykqYyxoPUp0KHMpKmMsZj1KdChsKSxwPWYqcit1Km47cmV0dXJuW1NuKGgqaS1wKm8sdSpyLWYqbiksSm4ocCppK2gqbyldfXJldHVybiBhLmludmVydD1mdW5jdGlvbihzLGwpe3ZhciBjPWFlKGwpLHU9YWUocykqYyxoPUp0KHMpKmMsZj1KdChsKSxwPWYqaS1oKm87cmV0dXJuW1NuKGgqaStmKm8sdSpyK3AqbiksSm4ocCpyLXUqbildfSxhfWZ1bmN0aW9uIG9EKGUpe2U9TFQoZVswXSp3ZSxlWzFdKndlLGUubGVuZ3RoPjI/ZVsyXSp3ZTowKTtmdW5jdGlvbiB0KHIpe3JldHVybiByPWUoclswXSp3ZSxyWzFdKndlKSxyWzBdKj1VcixyWzFdKj1VcixyfXJldHVybiB0LmludmVydD1mdW5jdGlvbihyKXtyZXR1cm4gcj1lLmludmVydChyWzBdKndlLHJbMV0qd2UpLHJbMF0qPVVyLHJbMV0qPVVyLHJ9LHR9dmFyIGtUPU0oKCk9PnttSigpO2xyKCk7Z0ouaW52ZXJ0PWdKfSk7ZnVuY3Rpb24gX0ooZSx0LHIsbixpLG8pe2lmKCEhcil7dmFyIGE9YWUodCkscz1KdCh0KSxsPW4qcjtpPT1udWxsPyhpPXQrbipGaSxvPXQtbC8yKTooaT10OXQoYSxpKSxvPXQ5dChhLG8pLChuPjA/aTxvOmk+bykmJihpKz1uKkZpKSk7Zm9yKHZhciBjLHU9aTtuPjA/dT5vOnU8bzt1LT1sKWM9TnkoW2EsLXMqYWUodSksLXMqSnQodSldKSxlLnBvaW50KGNbMF0sY1sxXSl9fWZ1bmN0aW9uIHQ5dChlLHQpe3Q9X2ModCksdFswXS09ZSxEeSh0KTt2YXIgcj1qTigtdFsxXSk7cmV0dXJuKCgtdFsyXTwwPy1yOnIpK0ZpLWNlKSVGaX1mdW5jdGlvbiBlOXQoKXt2YXIgZT16eShbMCwwXSksdD16eSg5MCkscj16eSg2KSxuLGksbz17cG9pbnQ6YX07ZnVuY3Rpb24gYShsLGMpe24ucHVzaChsPWkobCxjKSksbFswXSo9VXIsbFsxXSo9VXJ9ZnVuY3Rpb24gcygpe3ZhciBsPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykqd2UsdT1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSp3ZTtyZXR1cm4gbj1bXSxpPUxUKC1sWzBdKndlLC1sWzFdKndlLDApLmludmVydCxfSihvLGMsdSwxKSxsPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbbl19LG49aT1udWxsLGx9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBsPT0iZnVuY3Rpb24iP2w6enkoWytsWzBdLCtsWzFdXSkscyk6ZX0scy5yYWRpdXM9ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGw9PSJmdW5jdGlvbiI/bDp6eSgrbCkscyk6dH0scy5wcmVjaXNpb249ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIGw9PSJmdW5jdGlvbiI/bDp6eSgrbCkscyk6cn0sc312YXIgeUo9TSgoKT0+e0MyKCk7S0l0KCk7bHIoKTtrVCgpfSk7ZnVuY3Rpb24gYUQoKXt2YXIgZT1bXSx0O3JldHVybntwb2ludDpmdW5jdGlvbihyLG4pe3QucHVzaChbcixuXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0sbGluZUVuZDpxcixyZWpvaW46ZnVuY3Rpb24oKXtlLmxlbmd0aD4xJiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciByPWU7cmV0dXJuIGU9W10sdD1udWxsLHJ9fX12YXIgdko9TSgoKT0+e1hwKCl9KTtmdW5jdGlvbiBQMihlLHQpe3JldHVybiBZZShlWzBdLXRbMF0pPGNlJiZZZShlWzFdLXRbMV0pPGNlfXZhciB4Sj1NKCgpPT57bHIoKX0pO2Z1bmN0aW9uIHNEKGUsdCxyLG4pe3RoaXMueD1lLHRoaXMuej10LHRoaXMubz1yLHRoaXMuZT1uLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24gbEQoZSx0LHIsbixpKXt2YXIgbz1bXSxhPVtdLHMsbDtpZihlLmZvckVhY2goZnVuY3Rpb24oZCl7aWYoISgoZz1kLmxlbmd0aC0xKTw9MCkpe3ZhciBnLF89ZFswXSx5PWRbZ10seDtpZihQMihfLHkpKXtmb3IoaS5saW5lU3RhcnQoKSxzPTA7czxnOysrcylpLnBvaW50KChfPWRbc10pWzBdLF9bMV0pO2kubGluZUVuZCgpO3JldHVybn1vLnB1c2goeD1uZXcgc0QoXyxkLG51bGwsITApKSxhLnB1c2goeC5vPW5ldyBzRChfLG51bGwseCwhMSkpLG8ucHVzaCh4PW5ldyBzRCh5LGQsbnVsbCwhMSkpLGEucHVzaCh4Lm89bmV3IHNEKHksbnVsbCx4LCEwKSl9fSksISFvLmxlbmd0aCl7Zm9yKGEuc29ydCh0KSxyOXQobykscjl0KGEpLHM9MCxsPWEubGVuZ3RoO3M8bDsrK3MpYVtzXS5lPXI9IXI7Zm9yKHZhciBjPW9bMF0sdSxoOzspe2Zvcih2YXIgZj1jLHA9ITA7Zi52OylpZigoZj1mLm4pPT09YylyZXR1cm47dT1mLnosaS5saW5lU3RhcnQoKTtkb3tpZihmLnY9Zi5vLnY9ITAsZi5lKXtpZihwKWZvcihzPTAsbD11Lmxlbmd0aDtzPGw7KytzKWkucG9pbnQoKGg9dVtzXSlbMF0saFsxXSk7ZWxzZSBuKGYueCxmLm4ueCwxLGkpO2Y9Zi5ufWVsc2V7aWYocClmb3IodT1mLnAueixzPXUubGVuZ3RoLTE7cz49MDstLXMpaS5wb2ludCgoaD11W3NdKVswXSxoWzFdKTtlbHNlIG4oZi54LGYucC54LC0xLGkpO2Y9Zi5wfWY9Zi5vLHU9Zi56LHA9IXB9d2hpbGUoIWYudik7aS5saW5lRW5kKCl9fX1mdW5jdGlvbiByOXQoZSl7aWYoISEodD1lLmxlbmd0aCkpe2Zvcih2YXIgdCxyPTAsbj1lWzBdLGk7KytyPHQ7KW4ubj1pPWVbcl0saS5wPW4sbj1pO24ubj1pPWVbMF0saS5wPW59fXZhciBiSj1NKCgpPT57eEooKX0pO2Z1bmN0aW9uIGNEKGUsdCl7dmFyIHI9dFswXSxuPXRbMV0saT1bSnQociksLWFlKHIpLDBdLG89MCxhPTA7d0oucmVzZXQoKTtmb3IodmFyIHM9MCxsPWUubGVuZ3RoO3M8bDsrK3MpaWYoISEodT0oYz1lW3NdKS5sZW5ndGgpKWZvcih2YXIgYyx1LGg9Y1t1LTFdLGY9aFswXSxwPWhbMV0vMitFMixkPUp0KHApLGc9YWUocCksXz0wO188dTsrK18sZj14LGQ9UyxnPUMsaD15KXt2YXIgeT1jW19dLHg9eVswXSxiPXlbMV0vMitFMixTPUp0KGIpLEM9YWUoYiksUD14LWYsaz1QPj0wPzE6LTEsTz1rKlAsRD1PPnJyLEI9ZCpTO2lmKHdKLmFkZChTbihCKmsqSnQoTyksZypDK0IqYWUoTykpKSxvKz1EP1AraypGaTpQLEReZj49cl54Pj1yKXt2YXIgST0kcChfYyhoKSxfYyh5KSk7RHkoSSk7dmFyIEw9JHAoaSxJKTtEeShMKTt2YXIgUj0oRF5QPj0wPy0xOjEpKkpuKExbMl0pOyhuPlJ8fG49PT1SJiYoSVswXXx8SVsxXSkpJiYoYSs9RF5QPj0wPzE6LTEpfX1yZXR1cm4obzwtY2V8fG88Y2UmJndKPC1jZSleYSYxfXZhciB3SixTSj1NKCgpPT57a3koKTtDMigpO2xyKCk7d0o9VHMoKX0pO2Z1bmN0aW9uIF9nKGUsdCl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfXZhciBGeT1NKCgpPT57fSk7ZnVuY3Rpb24gTUooZSl7cmV0dXJuIGUubGVuZ3RoPT09MSYmKGU9UjRlKGUpKSx7bGVmdDpmdW5jdGlvbih0LHIsbixpKXtmb3Iobj09bnVsbCYmKG49MCksaT09bnVsbCYmKGk9dC5sZW5ndGgpO248aTspe3ZhciBvPW4raT4+PjE7ZSh0W29dLHIpPDA/bj1vKzE6aT1vfXJldHVybiBufSxyaWdodDpmdW5jdGlvbih0LHIsbixpKXtmb3Iobj09bnVsbCYmKG49MCksaT09bnVsbCYmKGk9dC5sZW5ndGgpO248aTspe3ZhciBvPW4raT4+PjE7ZSh0W29dLHIpPjA/aT1vOm49bysxfXJldHVybiBufX19ZnVuY3Rpb24gUjRlKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBfZyhlKHQpLHIpfX12YXIgRUo9TSgoKT0+e0Z5KCl9KTt2YXIgbjl0LE40ZSxENGUsVEo9TSgoKT0+e0Z5KCk7RUooKTtuOXQ9TUooX2cpLE40ZT1uOXQucmlnaHQsRDRlPW45dC5sZWZ0fSk7dmFyIENKPU0oKCk9Pnt9KTt2YXIgaTl0PU0oKCk9PntDSigpfSk7dmFyIG85dD1NKCgpPT57fSk7dmFyIEkyPU0oKCk9Pnt9KTt2YXIgQUo9TSgoKT0+e0kyKCl9KTt2YXIgUEo9TSgoKT0+e0FKKCl9KTt2YXIgSUo9TSgoKT0+e30pO3ZhciBhOXQsejRlLEY0ZSxMSj1NKCgpPT57YTl0PUFycmF5LnByb3RvdHlwZSx6NGU9YTl0LnNsaWNlLEY0ZT1hOXQubWFwfSk7dmFyIHM5dD1NKCgpPT57fSk7dmFyIGw5dD1NKCgpPT57fSk7ZnVuY3Rpb24gSnAoZSx0LHIpe2U9K2UsdD0rdCxyPShpPWFyZ3VtZW50cy5sZW5ndGgpPDI/KHQ9ZSxlPTAsMSk6aTwzPzE6K3I7Zm9yKHZhciBuPS0xLGk9TWF0aC5tYXgoMCxNYXRoLmNlaWwoKHQtZSkvcikpfDAsbz1uZXcgQXJyYXkoaSk7KytuPGk7KW9bbl09ZStuKnI7cmV0dXJuIG99dmFyIGtKPU0oKCk9Pnt9KTt2YXIgcDBuLGQwbixtMG4sUko9TSgoKT0+e3Awbj1NYXRoLnNxcnQoNTApLGQwbj1NYXRoLnNxcnQoMTApLG0wbj1NYXRoLnNxcnQoMil9KTt2YXIgTko9TSgoKT0+e30pO3ZhciBjOXQ9TSgoKT0+e0xKKCk7VEooKTtzOXQoKTtJSigpO2w5dCgpO2tKKCk7UkooKTtOSigpfSk7dmFyIGhEPU0oKCk9PntJMigpfSk7dmFyIGg5dD1NKCgpPT57TEooKTtGeSgpO0kyKCk7aEQoKX0pO3ZhciBmOXQ9TSgoKT0+e1BKKCl9KTt2YXIgcDl0PU0oKCk9Pnt9KTt2YXIgZDl0PU0oKCk9PntJMigpfSk7dmFyIG05dD1NKCgpPT57RnkoKTtJMigpO2hEKCl9KTtmdW5jdGlvbiBSVChlKXtmb3IodmFyIHQ9ZS5sZW5ndGgscixuPS0xLGk9MCxvLGE7KytuPHQ7KWkrPWVbbl0ubGVuZ3RoO2ZvcihvPW5ldyBBcnJheShpKTstLXQ+PTA7KWZvcihhPWVbdF0scj1hLmxlbmd0aDstLXI+PTA7KW9bLS1pXT1hW3JdO3JldHVybiBvfXZhciBnOXQ9TSgoKT0+e30pO3ZhciBESj1NKCgpPT57fSk7dmFyIF85dD1NKCgpPT57fSk7dmFyIHk5dD1NKCgpPT57RnkoKX0pO3ZhciB2OXQ9TSgoKT0+e30pO3ZhciB4OXQ9TSgoKT0+e30pO3ZhciBPSj1NKCgpPT57REooKX0pO3ZhciBiOXQ9TSgoKT0+e09KKCl9KTt2YXIgZkQ9TSgoKT0+e1RKKCk7RnkoKTtFSigpO2k5dCgpO285dCgpO1BKKCk7SUooKTtjOXQoKTtoOXQoKTtmOXQoKTtOSigpO3A5dCgpO2Q5dCgpO205dCgpO2c5dCgpO0RKKCk7Q0ooKTtfOXQoKTtoRCgpO2tKKCk7eTl0KCk7djl0KCk7eDl0KCk7UkooKTtPSigpO0FKKCk7Yjl0KCl9KTtmdW5jdGlvbiBwRChlLHQscixuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIG89dChpKSxhPWFEKCkscz10KGEpLGw9ITEsYyx1LGgsZj17cG9pbnQ6cCxsaW5lU3RhcnQ6ZyxsaW5lRW5kOl8scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Zi5wb2ludD15LGYubGluZVN0YXJ0PXgsZi5saW5lRW5kPWIsdT1bXSxjPVtdfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7Zi5wb2ludD1wLGYubGluZVN0YXJ0PWcsZi5saW5lRW5kPV8sdT1SVCh1KTt2YXIgUz1jRChjLG4pO3UubGVuZ3RoPyhsfHwoaS5wb2x5Z29uU3RhcnQoKSxsPSEwKSxsRCh1LGo0ZSxTLHIsaSkpOlMmJihsfHwoaS5wb2x5Z29uU3RhcnQoKSxsPSEwKSxpLmxpbmVTdGFydCgpLHIobnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCkpLGwmJihpLnBvbHlnb25FbmQoKSxsPSExKSx1PWM9bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7aS5wb2x5Z29uU3RhcnQoKSxpLmxpbmVTdGFydCgpLHIobnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCksaS5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBwKFMsQyl7ZShTLEMpJiZpLnBvaW50KFMsQyl9ZnVuY3Rpb24gZChTLEMpe28ucG9pbnQoUyxDKX1mdW5jdGlvbiBnKCl7Zi5wb2ludD1kLG8ubGluZVN0YXJ0KCl9ZnVuY3Rpb24gXygpe2YucG9pbnQ9cCxvLmxpbmVFbmQoKX1mdW5jdGlvbiB5KFMsQyl7aC5wdXNoKFtTLENdKSxzLnBvaW50KFMsQyl9ZnVuY3Rpb24geCgpe3MubGluZVN0YXJ0KCksaD1bXX1mdW5jdGlvbiBiKCl7eShoWzBdWzBdLGhbMF1bMV0pLHMubGluZUVuZCgpO3ZhciBTPXMuY2xlYW4oKSxDPWEucmVzdWx0KCksUCxrPUMubGVuZ3RoLE8sRCxCO2lmKGgucG9wKCksYy5wdXNoKGgpLGg9bnVsbCwhIWspe2lmKFMmMSl7aWYoRD1DWzBdLChPPUQubGVuZ3RoLTEpPjApe2ZvcihsfHwoaS5wb2x5Z29uU3RhcnQoKSxsPSEwKSxpLmxpbmVTdGFydCgpLFA9MDtQPE87KytQKWkucG9pbnQoKEI9RFtQXSlbMF0sQlsxXSk7aS5saW5lRW5kKCl9cmV0dXJufWs+MSYmUyYyJiZDLnB1c2goQy5wb3AoKS5jb25jYXQoQy5zaGlmdCgpKSksdS5wdXNoKEMuZmlsdGVyKFk0ZSkpfX1yZXR1cm4gZn19ZnVuY3Rpb24gWTRlKGUpe3JldHVybiBlLmxlbmd0aD4xfWZ1bmN0aW9uIGo0ZShlLHQpe3JldHVybigoZT1lLngpWzBdPDA/ZVsxXS1Cbi1jZTpCbi1lWzFdKS0oKHQ9dC54KVswXTwwP3RbMV0tQm4tY2U6Qm4tdFsxXSl9dmFyIHpKPU0oKCk9Pnt2SigpO2JKKCk7bHIoKTtTSigpO2ZEKCl9KTtmdW5jdGlvbiBYNGUoZSl7dmFyIHQ9TmFOLHI9TmFOLG49TmFOLGk7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2UubGluZVN0YXJ0KCksaT0xfSxwb2ludDpmdW5jdGlvbihvLGEpe3ZhciBzPW8+MD9ycjotcnIsbD1ZZShvLXQpO1llKGwtcnIpPGNlPyhlLnBvaW50KHQscj0ocithKS8yPjA/Qm46LUJuKSxlLnBvaW50KG4sciksZS5saW5lRW5kKCksZS5saW5lU3RhcnQoKSxlLnBvaW50KHMsciksZS5wb2ludChvLHIpLGk9MCk6biE9PXMmJmw+PXJyJiYoWWUodC1uKTxjZSYmKHQtPW4qY2UpLFllKG8tcyk8Y2UmJihvLT1zKmNlKSxyPSQ0ZSh0LHIsbyxhKSxlLnBvaW50KG4sciksZS5saW5lRW5kKCksZS5saW5lU3RhcnQoKSxlLnBvaW50KHMsciksaT0wKSxlLnBvaW50KHQ9byxyPWEpLG49c30sbGluZUVuZDpmdW5jdGlvbigpe2UubGluZUVuZCgpLHQ9cj1OYU59LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIDItaX19fWZ1bmN0aW9uICQ0ZShlLHQscixuKXt2YXIgaSxvLGE9SnQoZS1yKTtyZXR1cm4gWWUoYSk+Y2U/Z2MoKEp0KHQpKihvPWFlKG4pKSpKdChyKS1KdChuKSooaT1hZSh0KSkqSnQoZSkpLyhpKm8qYSkpOih0K24pLzJ9ZnVuY3Rpb24gSzRlKGUsdCxyLG4pe3ZhciBpO2lmKGU9PW51bGwpaT1yKkJuLG4ucG9pbnQoLXJyLGkpLG4ucG9pbnQoMCxpKSxuLnBvaW50KHJyLGkpLG4ucG9pbnQocnIsMCksbi5wb2ludChyciwtaSksbi5wb2ludCgwLC1pKSxuLnBvaW50KC1yciwtaSksbi5wb2ludCgtcnIsMCksbi5wb2ludCgtcnIsaSk7ZWxzZSBpZihZZShlWzBdLXRbMF0pPmNlKXt2YXIgbz1lWzBdPHRbMF0/cnI6LXJyO2k9cipvLzIsbi5wb2ludCgtbyxpKSxuLnBvaW50KDAsaSksbi5wb2ludChvLGkpfWVsc2Ugbi5wb2ludCh0WzBdLHRbMV0pfXZhciBOVCxGSj1NKCgpPT57ekooKTtscigpO05UPXBEKGZ1bmN0aW9uKCl7cmV0dXJuITB9LFg0ZSxLNGUsWy1yciwtQm5dKX0pO2Z1bmN0aW9uIGREKGUpe3ZhciB0PWFlKGUpLHI9Nip3ZSxuPXQ+MCxpPVllKHQpPmNlO2Z1bmN0aW9uIG8odSxoLGYscCl7X0oocCxlLHIsZix1LGgpfWZ1bmN0aW9uIGEodSxoKXtyZXR1cm4gYWUodSkqYWUoaCk+dH1mdW5jdGlvbiBzKHUpe3ZhciBoLGYscCxkLGc7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2Q9cD0hMSxnPTF9LHBvaW50OmZ1bmN0aW9uKF8seSl7dmFyIHg9W18seV0sYixTPWEoXyx5KSxDPW4/Uz8wOmMoXyx5KTpTP2MoXysoXzwwP3JyOi1ycikseSk6MDtpZighaCYmKGQ9cD1TKSYmdS5saW5lU3RhcnQoKSxTIT09cCYmKGI9bChoLHgpLCghYnx8UDIoaCxiKXx8UDIoeCxiKSkmJih4WzBdKz1jZSx4WzFdKz1jZSxTPWEoeFswXSx4WzFdKSkpLFMhPT1wKWc9MCxTPyh1LmxpbmVTdGFydCgpLGI9bCh4LGgpLHUucG9pbnQoYlswXSxiWzFdKSk6KGI9bChoLHgpLHUucG9pbnQoYlswXSxiWzFdKSx1LmxpbmVFbmQoKSksaD1iO2Vsc2UgaWYoaSYmaCYmbl5TKXt2YXIgUDshKEMmZikmJihQPWwoeCxoLCEwKSkmJihnPTAsbj8odS5saW5lU3RhcnQoKSx1LnBvaW50KFBbMF1bMF0sUFswXVsxXSksdS5wb2ludChQWzFdWzBdLFBbMV1bMV0pLHUubGluZUVuZCgpKToodS5wb2ludChQWzFdWzBdLFBbMV1bMV0pLHUubGluZUVuZCgpLHUubGluZVN0YXJ0KCksdS5wb2ludChQWzBdWzBdLFBbMF1bMV0pKSl9UyYmKCFofHwhUDIoaCx4KSkmJnUucG9pbnQoeFswXSx4WzFdKSxoPXgscD1TLGY9Q30sbGluZUVuZDpmdW5jdGlvbigpe3AmJnUubGluZUVuZCgpLGg9bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gZ3woZCYmcCk8PDF9fX1mdW5jdGlvbiBsKHUsaCxmKXt2YXIgcD1fYyh1KSxkPV9jKGgpLGc9WzEsMCwwXSxfPSRwKHAsZCkseT1UVChfLF8pLHg9X1swXSxiPXkteCp4O2lmKCFiKXJldHVybiFmJiZ1O3ZhciBTPXQqeS9iLEM9LXQqeC9iLFA9JHAoZyxfKSxrPUNUKGcsUyksTz1DVChfLEMpO0tOKGssTyk7dmFyIEQ9UCxCPVRUKGssRCksST1UVChELEQpLEw9QipCLUkqKFRUKGssayktMSk7aWYoIShMPDApKXt2YXIgUj1ScihMKSxGPUNUKEQsKC1CLVIpL0kpO2lmKEtOKEYsayksRj1OeShGKSwhZilyZXR1cm4gRjt2YXIgej11WzBdLFU9aFswXSxXPXVbMV0sWj1oWzFdLHJ0O1U8eiYmKHJ0PXosej1VLFU9cnQpO3ZhciBvdD1VLXosc3Q9WWUob3QtcnIpPGNlLFN0PXN0fHxvdDxjZTtpZighc3QmJlo8VyYmKHJ0PVcsVz1aLFo9cnQpLFN0P3N0P1crWj4wXkZbMV08KFllKEZbMF0teik8Y2U/VzpaKTpXPD1GWzFdJiZGWzFdPD1aOm90PnJyXih6PD1GWzBdJiZGWzBdPD1VKSl7dmFyIGJ0PUNUKEQsKC1CK1IpL0kpO3JldHVybiBLTihidCxrKSxbRixOeShidCldfX19ZnVuY3Rpb24gYyh1LGgpe3ZhciBmPW4/ZTpyci1lLHA9MDtyZXR1cm4gdTwtZj9wfD0xOnU+ZiYmKHB8PTIpLGg8LWY/cHw9NDpoPmYmJihwfD04KSxwfXJldHVybiBwRChhLHMsbyxuP1swLC1lXTpbLXJyLGUtcnJdKX12YXIgQko9TSgoKT0+e0MyKCk7eUooKTtscigpO3hKKCk7ekooKX0pO2Z1bmN0aW9uIHc5dChlLHQscixuLGksbyl7dmFyIGE9ZVswXSxzPWVbMV0sbD10WzBdLGM9dFsxXSx1PTAsaD0xLGY9bC1hLHA9Yy1zLGQ7aWYoZD1yLWEsISghZiYmZD4wKSl7aWYoZC89ZixmPDApe2lmKGQ8dSlyZXR1cm47ZDxoJiYoaD1kKX1lbHNlIGlmKGY+MCl7aWYoZD5oKXJldHVybjtkPnUmJih1PWQpfWlmKGQ9aS1hLCEoIWYmJmQ8MCkpe2lmKGQvPWYsZjwwKXtpZihkPmgpcmV0dXJuO2Q+dSYmKHU9ZCl9ZWxzZSBpZihmPjApe2lmKGQ8dSlyZXR1cm47ZDxoJiYoaD1kKX1pZihkPW4tcywhKCFwJiZkPjApKXtpZihkLz1wLHA8MCl7aWYoZDx1KXJldHVybjtkPGgmJihoPWQpfWVsc2UgaWYocD4wKXtpZihkPmgpcmV0dXJuO2Q+dSYmKHU9ZCl9aWYoZD1vLXMsISghcCYmZDwwKSl7aWYoZC89cCxwPDApe2lmKGQ+aClyZXR1cm47ZD51JiYodT1kKX1lbHNlIGlmKHA+MCl7aWYoZDx1KXJldHVybjtkPGgmJihoPWQpfXJldHVybiB1PjAmJihlWzBdPWErdSpmLGVbMV09cyt1KnApLGg8MSYmKHRbMF09YStoKmYsdFsxXT1zK2gqcCksITB9fX19fXZhciBTOXQ9TSgoKT0+e30pO2Z1bmN0aW9uIFFwKGUsdCxyLG4pe2Z1bmN0aW9uIGkoYyx1KXtyZXR1cm4gZTw9YyYmYzw9ciYmdDw9dSYmdTw9bn1mdW5jdGlvbiBvKGMsdSxoLGYpe3ZhciBwPTAsZD0wO2lmKGM9PW51bGx8fChwPWEoYyxoKSkhPT0oZD1hKHUsaCkpfHxsKGMsdSk8MF5oPjApZG8gZi5wb2ludChwPT09MHx8cD09PTM/ZTpyLHA+MT9uOnQpO3doaWxlKChwPShwK2grNCklNCkhPT1kKTtlbHNlIGYucG9pbnQodVswXSx1WzFdKX1mdW5jdGlvbiBhKGMsdSl7cmV0dXJuIFllKGNbMF0tZSk8Y2U/dT4wPzA6MzpZZShjWzBdLXIpPGNlP3U+MD8yOjE6WWUoY1sxXS10KTxjZT91PjA/MTowOnU+MD8zOjJ9ZnVuY3Rpb24gcyhjLHUpe3JldHVybiBsKGMueCx1LngpfWZ1bmN0aW9uIGwoYyx1KXt2YXIgaD1hKGMsMSksZj1hKHUsMSk7cmV0dXJuIGghPT1mP2gtZjpoPT09MD91WzFdLWNbMV06aD09PTE/Y1swXS11WzBdOmg9PT0yP2NbMV0tdVsxXTp1WzBdLWNbMF19cmV0dXJuIGZ1bmN0aW9uKGMpe3ZhciB1PWMsaD1hRCgpLGYscCxkLGcsXyx5LHgsYixTLEMsUCxrPXtwb2ludDpPLGxpbmVTdGFydDpMLGxpbmVFbmQ6Uixwb2x5Z29uU3RhcnQ6Qixwb2x5Z29uRW5kOkl9O2Z1bmN0aW9uIE8oeixVKXtpKHosVSkmJnUucG9pbnQoeixVKX1mdW5jdGlvbiBEKCl7Zm9yKHZhciB6PTAsVT0wLFc9cC5sZW5ndGg7VTxXOysrVSlmb3IodmFyIFo9cFtVXSxydD0xLG90PVoubGVuZ3RoLHN0PVpbMF0sU3QsYnQsTXQ9c3RbMF0sbHQ9c3RbMV07cnQ8b3Q7KytydClTdD1NdCxidD1sdCxzdD1aW3J0XSxNdD1zdFswXSxsdD1zdFsxXSxidDw9bj9sdD5uJiYoTXQtU3QpKihuLWJ0KT4obHQtYnQpKihlLVN0KSYmKyt6Omx0PD1uJiYoTXQtU3QpKihuLWJ0KTwobHQtYnQpKihlLVN0KSYmLS16O3JldHVybiB6fWZ1bmN0aW9uIEIoKXt1PWgsZj1bXSxwPVtdLFA9ITB9ZnVuY3Rpb24gSSgpe3ZhciB6PUQoKSxVPVAmJnosVz0oZj1SVChmKSkubGVuZ3RoOyhVfHxXKSYmKGMucG9seWdvblN0YXJ0KCksVSYmKGMubGluZVN0YXJ0KCksbyhudWxsLG51bGwsMSxjKSxjLmxpbmVFbmQoKSksVyYmbEQoZixzLHosbyxjKSxjLnBvbHlnb25FbmQoKSksdT1jLGY9cD1kPW51bGx9ZnVuY3Rpb24gTCgpe2sucG9pbnQ9RixwJiZwLnB1c2goZD1bXSksQz0hMCxTPSExLHg9Yj1OYU59ZnVuY3Rpb24gUigpe2YmJihGKGcsXykseSYmUyYmaC5yZWpvaW4oKSxmLnB1c2goaC5yZXN1bHQoKSkpLGsucG9pbnQ9TyxTJiZ1LmxpbmVFbmQoKX1mdW5jdGlvbiBGKHosVSl7dmFyIFc9aSh6LFUpO2lmKHAmJmQucHVzaChbeixVXSksQylnPXosXz1VLHk9VyxDPSExLFcmJih1LmxpbmVTdGFydCgpLHUucG9pbnQoeixVKSk7ZWxzZSBpZihXJiZTKXUucG9pbnQoeixVKTtlbHNle3ZhciBaPVt4PU1hdGgubWF4KG1ELE1hdGgubWluKERULHgpKSxiPU1hdGgubWF4KG1ELE1hdGgubWluKERULGIpKV0scnQ9W3o9TWF0aC5tYXgobUQsTWF0aC5taW4oRFQseikpLFU9TWF0aC5tYXgobUQsTWF0aC5taW4oRFQsVSkpXTt3OXQoWixydCxlLHQscixuKT8oU3x8KHUubGluZVN0YXJ0KCksdS5wb2ludChaWzBdLFpbMV0pKSx1LnBvaW50KHJ0WzBdLHJ0WzFdKSxXfHx1LmxpbmVFbmQoKSxQPSExKTpXJiYodS5saW5lU3RhcnQoKSx1LnBvaW50KHosVSksUD0hMSl9eD16LGI9VSxTPVd9cmV0dXJuIGt9fXZhciBEVCxtRCxPVD1NKCgpPT57bHIoKTt2SigpO1M5dCgpO2JKKCk7ZkQoKTtEVD0xZTksbUQ9LURUfSk7ZnVuY3Rpb24gTTl0KCl7dmFyIGU9MCx0PTAscj05NjAsbj01MDAsaSxvLGE7cmV0dXJuIGE9e3N0cmVhbTpmdW5jdGlvbihzKXtyZXR1cm4gaSYmbz09PXM/aTppPVFwKGUsdCxyLG4pKG89cyl9LGV4dGVudDpmdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rc1swXVswXSx0PStzWzBdWzFdLHI9K3NbMV1bMF0sbj0rc1sxXVsxXSxpPW89bnVsbCxhKTpbW2UsdF0sW3Isbl1dfX19dmFyIEU5dD1NKCgpPT57T1QoKX0pO2Z1bmN0aW9uIFo0ZSgpe0wyLnBvaW50PVE0ZSxMMi5saW5lRW5kPUo0ZX1mdW5jdGlvbiBKNGUoKXtMMi5wb2ludD1MMi5saW5lRW5kPXFyfWZ1bmN0aW9uIFE0ZShlLHQpe2UqPXdlLHQqPXdlLFZKPWUsZ0Q9SnQodCksX0Q9YWUodCksTDIucG9pbnQ9dFBlfWZ1bmN0aW9uIHRQZShlLHQpe2UqPXdlLHQqPXdlO3ZhciByPUp0KHQpLG49YWUodCksaT1ZZShlLVZKKSxvPWFlKGkpLGE9SnQoaSkscz1uKmEsbD1fRCpyLWdEKm4qbyxjPWdEKnIrX0QqbipvO0hKLmFkZChTbihScihzKnMrbCpsKSxjKSksVko9ZSxnRD1yLF9EPW59ZnVuY3Rpb24geUQoZSl7cmV0dXJuIEhKLnJlc2V0KCksU28oZSxMMiksK0hKfXZhciBISixWSixnRCxfRCxMMixVSj1NKCgpPT57a3koKTtscigpO1hwKCk7bWcoKTtISj1UcygpLEwyPXtzcGhlcmU6cXIscG9pbnQ6cXIsbGluZVN0YXJ0Olo0ZSxsaW5lRW5kOnFyLHBvbHlnb25TdGFydDpxcixwb2x5Z29uRW5kOnFyfX0pO2Z1bmN0aW9uIEJ5KGUsdCl7cmV0dXJuIHFKWzBdPWUscUpbMV09dCx5RChlUGUpfXZhciBxSixlUGUsR0o9TSgoKT0+e1VKKCk7cUo9W251bGwsbnVsbF0sZVBlPXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpxSn19KTtmdW5jdGlvbiB2RChlLHQpe3JldHVybiBlJiZDOXQuaGFzT3duUHJvcGVydHkoZS50eXBlKT9DOXRbZS50eXBlXShlLHQpOiExfWZ1bmN0aW9uIEE5dChlLHQpe3JldHVybiBCeShlLHQpPT09MH1mdW5jdGlvbiBQOXQoZSx0KXt2YXIgcj1CeShlWzBdLGVbMV0pLG49QnkoZVswXSx0KSxpPUJ5KHQsZVsxXSk7cmV0dXJuIG4raTw9citjZX1mdW5jdGlvbiBJOXQoZSx0KXtyZXR1cm4hIWNEKGUubWFwKHJQZSksTDl0KHQpKX1mdW5jdGlvbiByUGUoZSl7cmV0dXJuIGU9ZS5tYXAoTDl0KSxlLnBvcCgpLGV9ZnVuY3Rpb24gTDl0KGUpe3JldHVybltlWzBdKndlLGVbMV0qd2VdfWZ1bmN0aW9uIGs5dChlLHQpe3JldHVybihlJiZUOXQuaGFzT3duUHJvcGVydHkoZS50eXBlKT9UOXRbZS50eXBlXTp2RCkoZSx0KX12YXIgVDl0LEM5dCxSOXQ9TSgoKT0+e1NKKCk7R0ooKTtscigpO1Q5dD17RmVhdHVyZTpmdW5jdGlvbihlLHQpe3JldHVybiB2RChlLmdlb21ldHJ5LHQpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmZlYXR1cmVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspaWYodkQocltuXS5nZW9tZXRyeSx0KSlyZXR1cm4hMDtyZXR1cm4hMX19LEM5dD17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEE5dChlLmNvb3JkaW5hdGVzLHQpfSxNdWx0aVBvaW50OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylpZihBOXQocltuXSx0KSlyZXR1cm4hMDtyZXR1cm4hMX0sTGluZVN0cmluZzpmdW5jdGlvbihlLHQpe3JldHVybiBQOXQoZS5jb29yZGluYXRlcyx0KX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylpZihQOXQocltuXSx0KSlyZXR1cm4hMDtyZXR1cm4hMX0sUG9seWdvbjpmdW5jdGlvbihlLHQpe3JldHVybiBJOXQoZS5jb29yZGluYXRlcyx0KX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylpZihJOXQocltuXSx0KSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuZ2VvbWV0cmllcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KWlmKHZEKHJbbl0sdCkpcmV0dXJuITA7cmV0dXJuITF9fX0pO2Z1bmN0aW9uIE45dChlLHQscil7dmFyIG49SnAoZSx0LWNlLHIpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG8pe3JldHVybltpLG9dfSl9fWZ1bmN0aW9uIEQ5dChlLHQscil7dmFyIG49SnAoZSx0LWNlLHIpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG8pe3JldHVybltvLGldfSl9fWZ1bmN0aW9uIHhEKCl7dmFyIGUsdCxyLG4saSxvLGEscyxsPTEwLGM9bCx1PTkwLGg9MzYwLGYscCxkLGcsXz0yLjU7ZnVuY3Rpb24geSgpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOngoKX19ZnVuY3Rpb24geCgpe3JldHVybiBKcChNVChuL3UpKnUscix1KS5tYXAoZCkuY29uY2F0KEpwKE1UKHMvaCkqaCxhLGgpLm1hcChnKSkuY29uY2F0KEpwKE1UKHQvbCkqbCxlLGwpLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gWWUoYiV1KT5jZX0pLm1hcChmKSkuY29uY2F0KEpwKE1UKG8vYykqYyxpLGMpLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gWWUoYiVoKT5jZX0pLm1hcChwKSl9cmV0dXJuIHkubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geCgpLm1hcChmdW5jdGlvbihiKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6Yn19KX0seS5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltkKG4pLmNvbmNhdChnKGEpLnNsaWNlKDEpLGQocikucmV2ZXJzZSgpLnNsaWNlKDEpLGcocykucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSx5LmV4dGVudD1mdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD95LmV4dGVudE1ham9yKGIpLmV4dGVudE1pbm9yKGIpOnkuZXh0ZW50TWlub3IoKX0seS5leHRlbnRNYWpvcj1mdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rYlswXVswXSxyPStiWzFdWzBdLHM9K2JbMF1bMV0sYT0rYlsxXVsxXSxuPnImJihiPW4sbj1yLHI9Yikscz5hJiYoYj1zLHM9YSxhPWIpLHkucHJlY2lzaW9uKF8pKTpbW24sc10sW3IsYV1dfSx5LmV4dGVudE1pbm9yPWZ1bmN0aW9uKGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStiWzBdWzBdLGU9K2JbMV1bMF0sbz0rYlswXVsxXSxpPStiWzFdWzFdLHQ+ZSYmKGI9dCx0PWUsZT1iKSxvPmkmJihiPW8sbz1pLGk9YikseS5wcmVjaXNpb24oXykpOltbdCxvXSxbZSxpXV19LHkuc3RlcD1mdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD95LnN0ZXBNYWpvcihiKS5zdGVwTWlub3IoYik6eS5zdGVwTWlub3IoKX0seS5zdGVwTWFqb3I9ZnVuY3Rpb24oYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K2JbMF0saD0rYlsxXSx5KTpbdSxoXX0seS5zdGVwTWlub3I9ZnVuY3Rpb24oYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K2JbMF0sYz0rYlsxXSx5KTpbbCxjXX0seS5wcmVjaXNpb249ZnVuY3Rpb24oYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89K2IsZj1OOXQobyxpLDkwKSxwPUQ5dCh0LGUsXyksZD1OOXQocyxhLDkwKSxnPUQ5dChuLHIsXykseSk6X30seS5leHRlbnRNYWpvcihbWy0xODAsLTkwK2NlXSxbMTgwLDkwLWNlXV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAtY2VdLFsxODAsODArY2VdXSl9ZnVuY3Rpb24gTzl0KCl7cmV0dXJuIHhEKCkoKX12YXIgejl0PU0oKCk9PntmRCgpO2xyKCl9KTtmdW5jdGlvbiBGOXQoZSx0KXt2YXIgcj1lWzBdKndlLG49ZVsxXSp3ZSxpPXRbMF0qd2Usbz10WzFdKndlLGE9YWUobikscz1KdChuKSxsPWFlKG8pLGM9SnQobyksdT1hKmFlKHIpLGg9YSpKdChyKSxmPWwqYWUoaSkscD1sKkp0KGkpLGQ9MipKbihScihpSihvLW4pK2EqbCppSihpLXIpKSksZz1KdChkKSxfPWQ/ZnVuY3Rpb24oeSl7dmFyIHg9SnQoeSo9ZCkvZyxiPUp0KGQteSkvZyxTPWIqdSt4KmYsQz1iKmgreCpwLFA9YipzK3gqYztyZXR1cm5bU24oQyxTKSpVcixTbihQLFJyKFMqUytDKkMpKSpVcl19OmZ1bmN0aW9uKCl7cmV0dXJuW3IqVXIsbipVcl19O3JldHVybiBfLmRpc3RhbmNlPWQsX312YXIgQjl0PU0oKCk9PntscigpfSk7ZnVuY3Rpb24gcmYoZSl7cmV0dXJuIGV9dmFyIGJEPU0oKCk9Pnt9KTtmdW5jdGlvbiBuUGUoKXt5Zy5wb2ludD1pUGV9ZnVuY3Rpb24gaVBlKGUsdCl7eWcucG9pbnQ9VTl0LEg5dD1qSj1lLFY5dD1YSj10fWZ1bmN0aW9uIFU5dChlLHQpe1lKLmFkZChYSiplLWpKKnQpLGpKPWUsWEo9dH1mdW5jdGlvbiBvUGUoKXtVOXQoSDl0LFY5dCl9dmFyIFdKLFlKLEg5dCxWOXQsakosWEoseWcsJEoscTl0PU0oKCk9PntreSgpO2xyKCk7WHAoKTtXSj1UcygpLFlKPVRzKCkseWc9e3BvaW50OnFyLGxpbmVTdGFydDpxcixsaW5lRW5kOnFyLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3lnLmxpbmVTdGFydD1uUGUseWcubGluZUVuZD1vUGV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt5Zy5saW5lU3RhcnQ9eWcubGluZUVuZD15Zy5wb2ludD1xcixXSi5hZGQoWWUoWUopKSxZSi5yZXNldCgpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgZT1XSi8yO3JldHVybiBXSi5yZXNldCgpLGV9fTskSj15Z30pO2Z1bmN0aW9uIHNQZShlLHQpe2U8azImJihrMj1lKSxlPnpUJiYoelQ9ZSksdDx3RCYmKHdEPXQpLHQ+U0QmJihTRD10KX12YXIgazIsd0QselQsU0QsYVBlLFIyLEtKPU0oKCk9PntYcCgpO2syPTEvMCx3RD1rMix6VD0tazIsU0Q9elQsYVBlPXtwb2ludDpzUGUsbGluZVN0YXJ0OnFyLGxpbmVFbmQ6cXIscG9seWdvblN0YXJ0OnFyLHBvbHlnb25FbmQ6cXIscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIGU9W1trMix3RF0sW3pULFNEXV07cmV0dXJuIHpUPVNEPS0od0Q9azI9MS8wKSxlfX07UjI9YVBlfSk7ZnVuY3Rpb24gSHkoZSx0KXtaSis9ZSxKSis9dCwrK0ZUfWZ1bmN0aW9uIEc5dCgpe1R1LnBvaW50PWxQZX1mdW5jdGlvbiBsUGUoZSx0KXtUdS5wb2ludD1jUGUsSHkobmY9ZSxvZj10KX1mdW5jdGlvbiBjUGUoZSx0KXt2YXIgcj1lLW5mLG49dC1vZixpPVJyKHIqcituKm4pO01EKz1pKihuZitlKS8yLEVEKz1pKihvZit0KS8yLE4yKz1pLEh5KG5mPWUsb2Y9dCl9ZnVuY3Rpb24gVzl0KCl7VHUucG9pbnQ9SHl9ZnVuY3Rpb24gdVBlKCl7VHUucG9pbnQ9ZlBlfWZ1bmN0aW9uIGhQZSgpe1g5dChZOXQsajl0KX1mdW5jdGlvbiBmUGUoZSx0KXtUdS5wb2ludD1YOXQsSHkoWTl0PW5mPWUsajl0PW9mPXQpfWZ1bmN0aW9uIFg5dChlLHQpe3ZhciByPWUtbmYsbj10LW9mLGk9UnIocipyK24qbik7TUQrPWkqKG5mK2UpLzIsRUQrPWkqKG9mK3QpLzIsTjIrPWksaT1vZiplLW5mKnQsUUorPWkqKG5mK2UpLHRRKz1pKihvZit0KSxCVCs9aSozLEh5KG5mPWUsb2Y9dCl9dmFyIFpKLEpKLEZULE1ELEVELE4yLFFKLHRRLEJULFk5dCxqOXQsbmYsb2YsVHUsZVEsJDl0PU0oKCk9PntscigpO1pKPTAsSko9MCxGVD0wLE1EPTAsRUQ9MCxOMj0wLFFKPTAsdFE9MCxCVD0wLFR1PXtwb2ludDpIeSxsaW5lU3RhcnQ6Rzl0LGxpbmVFbmQ6Vzl0LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1R1LmxpbmVTdGFydD11UGUsVHUubGluZUVuZD1oUGV9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtUdS5wb2ludD1IeSxUdS5saW5lU3RhcnQ9Rzl0LFR1LmxpbmVFbmQ9Vzl0fSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgZT1CVD9bUUovQlQsdFEvQlRdOk4yP1tNRC9OMixFRC9OMl06RlQ/W1pKL0ZULEpKL0ZUXTpbTmFOLE5hTl07cmV0dXJuIFpKPUpKPUZUPU1EPUVEPU4yPVFKPXRRPUJUPTAsZX19O2VRPVR1fSk7ZnVuY3Rpb24gVEQoZSl7dGhpcy5fY29udGV4dD1lfXZhciBLOXQ9TSgoKT0+e2xyKCk7WHAoKTtURC5wcm90b3R5cGU9e19yYWRpdXM6NC41LHBvaW50UmFkaXVzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9yYWRpdXM9ZSx0aGlzfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9PT0wJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX3BvaW50PU5hTn0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KSx0aGlzLl9wb2ludD0xO2JyZWFrfWNhc2UgMTp7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTticmVha31kZWZhdWx0Ont0aGlzLl9jb250ZXh0Lm1vdmVUbyhlK3RoaXMuX3JhZGl1cyx0KSx0aGlzLl9jb250ZXh0LmFyYyhlLHQsdGhpcy5fcmFkaXVzLDAsRmkpO2JyZWFrfX19LHJlc3VsdDpxcn19KTtmdW5jdGlvbiBwUGUoZSx0KXtDRC5wb2ludD1ROXQsWjl0PUhUPWUsSjl0PVZUPXR9ZnVuY3Rpb24gUTl0KGUsdCl7SFQtPWUsVlQtPXQsblEuYWRkKFJyKEhUKkhUK1ZUKlZUKSksSFQ9ZSxWVD10fXZhciBuUSxyUSxaOXQsSjl0LEhULFZULENELGlRLHRMdD1NKCgpPT57a3koKTtscigpO1hwKCk7blE9VHMoKSxDRD17cG9pbnQ6cXIsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7Q0QucG9pbnQ9cFBlfSxsaW5lRW5kOmZ1bmN0aW9uKCl7clEmJlE5dChaOXQsSjl0KSxDRC5wb2ludD1xcn0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7clE9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtyUT1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgZT0rblE7cmV0dXJuIG5RLnJlc2V0KCksZX19O2lRPUNEfSk7ZnVuY3Rpb24gQUQoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gZUx0KGUpe3JldHVybiJtMCwiK2UrImEiK2UrIiwiK2UrIiAwIDEsMSAwLCIrLTIqZSsiYSIrZSsiLCIrZSsiIDAgMSwxIDAsIisyKmUrInoifXZhciByTHQ9TSgoKT0+e0FELnByb3RvdHlwZT17X3JhZGl1czo0LjUsX2NpcmNsZTplTHQoNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbihlKXtyZXR1cm4oZT0rZSkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9ZSx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPT09MCYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6e3RoaXMuX3N0cmluZy5wdXNoKCJNIixlLCIsIix0KSx0aGlzLl9wb2ludD0xO2JyZWFrfWNhc2UgMTp7dGhpcy5fc3RyaW5nLnB1c2goIkwiLGUsIiwiLHQpO2JyZWFrfWRlZmF1bHQ6e3RoaXMuX2NpcmNsZT09bnVsbCYmKHRoaXMuX2NpcmNsZT1lTHQodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLGUsIiwiLHQsdGhpcy5fY2lyY2xlKTticmVha319fSxyZXN1bHQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdHJpbmcubGVuZ3RoKXt2YXIgZT10aGlzLl9zdHJpbmcuam9pbigiIik7cmV0dXJuIHRoaXMuX3N0cmluZz1bXSxlfWVsc2UgcmV0dXJuIG51bGx9fX0pO2Z1bmN0aW9uIG5MdChlLHQpe3ZhciByPTQuNSxuLGk7ZnVuY3Rpb24gbyhhKXtyZXR1cm4gYSYmKHR5cGVvZiByPT0iZnVuY3Rpb24iJiZpLnBvaW50UmFkaXVzKCtyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksU28oYSxuKGkpKSksaS5yZXN1bHQoKX1yZXR1cm4gby5hcmVhPWZ1bmN0aW9uKGEpe3JldHVybiBTbyhhLG4oJEopKSwkSi5yZXN1bHQoKX0sby5tZWFzdXJlPWZ1bmN0aW9uKGEpe3JldHVybiBTbyhhLG4oaVEpKSxpUS5yZXN1bHQoKX0sby5ib3VuZHM9ZnVuY3Rpb24oYSl7cmV0dXJuIFNvKGEsbihSMikpLFIyLnJlc3VsdCgpfSxvLmNlbnRyb2lkPWZ1bmN0aW9uKGEpe3JldHVybiBTbyhhLG4oZVEpKSxlUS5yZXN1bHQoKX0sby5wcm9qZWN0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWE9PW51bGw/KGU9bnVsbCxyZik6KGU9YSkuc3RyZWFtLG8pOmV9LG8uY29udGV4dD1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1hPT1udWxsPyh0PW51bGwsbmV3IEFEKTpuZXcgVEQodD1hKSx0eXBlb2YgciE9ImZ1bmN0aW9uIiYmaS5wb2ludFJhZGl1cyhyKSxvKTp0fSxvLnBvaW50UmFkaXVzPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiBhPT0iZnVuY3Rpb24iP2E6KGkucG9pbnRSYWRpdXMoK2EpLCthKSxvKTpyfSxvLnByb2plY3Rpb24oZSkuY29udGV4dCh0KX12YXIgaUx0PU0oKCk9PntiRCgpO21nKCk7cTl0KCk7S0ooKTskOXQoKTtLOXQoKTt0THQoKTtyTHQoKX0pO2Z1bmN0aW9uIG9MdChlKXtyZXR1cm57c3RyZWFtOnZnKGUpfX1mdW5jdGlvbiB2ZyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9bmV3IG9RO2Zvcih2YXIgbiBpbiBlKXJbbl09ZVtuXTtyZXR1cm4gci5zdHJlYW09dCxyfX1mdW5jdGlvbiBvUSgpe312YXIgVVQ9TSgoKT0+e29RLnByb3RvdHlwZT17Y29uc3RydWN0b3I6b1EscG9pbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLnN0cmVhbS5wb2ludChlLHQpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX19KTtmdW5jdGlvbiBhUShlLHQscil7dmFyIG49ZS5jbGlwRXh0ZW50JiZlLmNsaXBFeHRlbnQoKTtyZXR1cm4gZS5zY2FsZSgxNTApLnRyYW5zbGF0ZShbMCwwXSksbiE9bnVsbCYmZS5jbGlwRXh0ZW50KG51bGwpLFNvKHIsZS5zdHJlYW0oUjIpKSx0KFIyLnJlc3VsdCgpKSxuIT1udWxsJiZlLmNsaXBFeHRlbnQobiksZX1mdW5jdGlvbiBWeShlLHQscil7cmV0dXJuIGFRKGUsZnVuY3Rpb24obil7dmFyIGk9dFsxXVswXS10WzBdWzBdLG89dFsxXVsxXS10WzBdWzFdLGE9TWF0aC5taW4oaS8oblsxXVswXS1uWzBdWzBdKSxvLyhuWzFdWzFdLW5bMF1bMV0pKSxzPSt0WzBdWzBdKyhpLWEqKG5bMV1bMF0rblswXVswXSkpLzIsbD0rdFswXVsxXSsoby1hKihuWzFdWzFdK25bMF1bMV0pKS8yO2Uuc2NhbGUoMTUwKmEpLnRyYW5zbGF0ZShbcyxsXSl9LHIpfWZ1bmN0aW9uIEQyKGUsdCxyKXtyZXR1cm4gVnkoZSxbWzAsMF0sdF0scil9ZnVuY3Rpb24gTzIoZSx0LHIpe3JldHVybiBhUShlLGZ1bmN0aW9uKG4pe3ZhciBpPSt0LG89aS8oblsxXVswXS1uWzBdWzBdKSxhPShpLW8qKG5bMV1bMF0rblswXVswXSkpLzIscz0tbypuWzBdWzFdO2Uuc2NhbGUoMTUwKm8pLnRyYW5zbGF0ZShbYSxzXSl9LHIpfWZ1bmN0aW9uIHoyKGUsdCxyKXtyZXR1cm4gYVEoZSxmdW5jdGlvbihuKXt2YXIgaT0rdCxvPWkvKG5bMV1bMV0tblswXVsxXSksYT0tbypuWzBdWzBdLHM9KGktbyooblsxXVsxXStuWzBdWzFdKSkvMjtlLnNjYWxlKDE1MCpvKS50cmFuc2xhdGUoW2Esc10pfSxyKX12YXIgUEQ9TSgoKT0+e21nKCk7S0ooKX0pO2Z1bmN0aW9uIHNRKGUsdCl7cmV0dXJuK3Q/Z1BlKGUsdCk6bVBlKGUpfWZ1bmN0aW9uIG1QZShlKXtyZXR1cm4gdmcoe3BvaW50OmZ1bmN0aW9uKHQscil7dD1lKHQsciksdGhpcy5zdHJlYW0ucG9pbnQodFswXSx0WzFdKX19KX1mdW5jdGlvbiBnUGUoZSx0KXtmdW5jdGlvbiByKG4saSxvLGEscyxsLGMsdSxoLGYscCxkLGcsXyl7dmFyIHk9Yy1uLHg9dS1pLGI9eSp5K3gqeDtpZihiPjQqdCYmZy0tKXt2YXIgUz1hK2YsQz1zK3AsUD1sK2Qsaz1ScihTKlMrQypDK1AqUCksTz1KbihQLz1rKSxEPVllKFllKFApLTEpPGNlfHxZZShvLWgpPGNlPyhvK2gpLzI6U24oQyxTKSxCPWUoRCxPKSxJPUJbMF0sTD1CWzFdLFI9SS1uLEY9TC1pLHo9eCpSLXkqRjsoeip6L2I+dHx8WWUoKHkqUit4KkYpL2ItLjUpPi4zfHxhKmYrcypwK2wqZDxkUGUpJiYocihuLGksbyxhLHMsbCxJLEwsRCxTLz1rLEMvPWssUCxnLF8pLF8ucG9pbnQoSSxMKSxyKEksTCxELFMsQyxQLGMsdSxoLGYscCxkLGcsXykpfX1yZXR1cm4gZnVuY3Rpb24obil7dmFyIGksbyxhLHMsbCxjLHUsaCxmLHAsZCxnLF89e3BvaW50OnksbGluZVN0YXJ0OngsbGluZUVuZDpTLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe24ucG9seWdvblN0YXJ0KCksXy5saW5lU3RhcnQ9Q30scG9seWdvbkVuZDpmdW5jdGlvbigpe24ucG9seWdvbkVuZCgpLF8ubGluZVN0YXJ0PXh9fTtmdW5jdGlvbiB5KE8sRCl7Tz1lKE8sRCksbi5wb2ludChPWzBdLE9bMV0pfWZ1bmN0aW9uIHgoKXtoPU5hTixfLnBvaW50PWIsbi5saW5lU3RhcnQoKX1mdW5jdGlvbiBiKE8sRCl7dmFyIEI9X2MoW08sRF0pLEk9ZShPLEQpO3IoaCxmLHUscCxkLGcsaD1JWzBdLGY9SVsxXSx1PU8scD1CWzBdLGQ9QlsxXSxnPUJbMl0sYUx0LG4pLG4ucG9pbnQoaCxmKX1mdW5jdGlvbiBTKCl7Xy5wb2ludD15LG4ubGluZUVuZCgpfWZ1bmN0aW9uIEMoKXt4KCksXy5wb2ludD1QLF8ubGluZUVuZD1rfWZ1bmN0aW9uIFAoTyxEKXtiKGk9TyxEKSxvPWgsYT1mLHM9cCxsPWQsYz1nLF8ucG9pbnQ9Yn1mdW5jdGlvbiBrKCl7cihoLGYsdSxwLGQsZyxvLGEsaSxzLGwsYyxhTHQsbiksXy5saW5lRW5kPVMsUygpfXJldHVybiBffX12YXIgYUx0LGRQZSxzTHQ9TSgoKT0+e0MyKCk7bHIoKTtVVCgpO2FMdD0xNixkUGU9YWUoMzAqd2UpfSk7ZnVuY3Rpb24geVBlKGUpe3JldHVybiB2Zyh7cG9pbnQ6ZnVuY3Rpb24odCxyKXt2YXIgbj1lKHQscik7cmV0dXJuIHRoaXMuc3RyZWFtLnBvaW50KG5bMF0sblsxXSl9fSl9ZnVuY3Rpb24gdG8oZSl7cmV0dXJuIHFUKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KSgpfWZ1bmN0aW9uIHFUKGUpe3ZhciB0LHI9MTUwLG49NDgwLGk9MjUwLG8sYSxzPTAsbD0wLGM9MCx1PTAsaD0wLGYscCxkPW51bGwsZz1OVCxfPW51bGwseSx4LGIsUz1yZixDPS41LFA9c1EoSSxDKSxrLE87ZnVuY3Rpb24gRChGKXtyZXR1cm4gRj1wKEZbMF0qd2UsRlsxXSp3ZSksW0ZbMF0qcitvLGEtRlsxXSpyXX1mdW5jdGlvbiBCKEYpe3JldHVybiBGPXAuaW52ZXJ0KChGWzBdLW8pL3IsKGEtRlsxXSkvciksRiYmW0ZbMF0qVXIsRlsxXSpVcl19ZnVuY3Rpb24gSShGLHope3JldHVybiBGPXQoRix6KSxbRlswXSpyK28sYS1GWzFdKnJdfUQuc3RyZWFtPWZ1bmN0aW9uKEYpe3JldHVybiBrJiZPPT09Rj9rOms9X1BlKHlQZShmKShnKFAoUyhPPUYpKSkpKX0sRC5wcmVjbGlwPWZ1bmN0aW9uKEYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPUYsZD12b2lkIDAsUigpKTpnfSxELnBvc3RjbGlwPWZ1bmN0aW9uKEYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPUYsXz15PXg9Yj1udWxsLFIoKSk6U30sRC5jbGlwQW5nbGU9ZnVuY3Rpb24oRil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9K0Y/ZEQoZD1GKndlKTooZD1udWxsLE5UKSxSKCkpOmQqVXJ9LEQuY2xpcEV4dGVudD1mdW5jdGlvbihGKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz1GPT1udWxsPyhfPXk9eD1iPW51bGwscmYpOlFwKF89K0ZbMF1bMF0seT0rRlswXVsxXSx4PStGWzFdWzBdLGI9K0ZbMV1bMV0pLFIoKSk6Xz09bnVsbD9udWxsOltbXyx5XSxbeCxiXV19LEQuc2NhbGU9ZnVuY3Rpb24oRil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K0YsTCgpKTpyfSxELnRyYW5zbGF0ZT1mdW5jdGlvbihGKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rRlswXSxpPStGWzFdLEwoKSk6W24saV19LEQuY2VudGVyPWZ1bmN0aW9uKEYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPUZbMF0lMzYwKndlLGw9RlsxXSUzNjAqd2UsTCgpKTpbcypVcixsKlVyXX0sRC5yb3RhdGU9ZnVuY3Rpb24oRil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9RlswXSUzNjAqd2UsdT1GWzFdJTM2MCp3ZSxoPUYubGVuZ3RoPjI/RlsyXSUzNjAqd2U6MCxMKCkpOltjKlVyLHUqVXIsaCpVcl19LEQucHJlY2lzaW9uPWZ1bmN0aW9uKEYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhQPXNRKEksQz1GKkYpLFIoKSk6UnIoQyl9LEQuZml0RXh0ZW50PWZ1bmN0aW9uKEYseil7cmV0dXJuIFZ5KEQsRix6KX0sRC5maXRTaXplPWZ1bmN0aW9uKEYseil7cmV0dXJuIEQyKEQsRix6KX0sRC5maXRXaWR0aD1mdW5jdGlvbihGLHope3JldHVybiBPMihELEYseil9LEQuZml0SGVpZ2h0PWZ1bmN0aW9uKEYseil7cmV0dXJuIHoyKEQsRix6KX07ZnVuY3Rpb24gTCgpe3A9aUQoZj1MVChjLHUsaCksdCk7dmFyIEY9dChzLGwpO3JldHVybiBvPW4tRlswXSpyLGE9aStGWzFdKnIsUigpfWZ1bmN0aW9uIFIoKXtyZXR1cm4gaz1PPW51bGwsRH1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxELmludmVydD10LmludmVydCYmQixMKCl9fXZhciBfUGUsQ3U9TSgoKT0+e0ZKKCk7QkooKTtPVCgpO21KKCk7YkQoKTtscigpO2tUKCk7VVQoKTtQRCgpO3NMdCgpO19QZT12Zyh7cG9pbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLnN0cmVhbS5wb2ludChlKndlLHQqd2UpfX0pfSk7ZnVuY3Rpb24gRjIoZSl7dmFyIHQ9MCxyPXJyLzMsbj1xVChlKSxpPW4odCxyKTtyZXR1cm4gaS5wYXJhbGxlbHM9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bih0PW9bMF0qd2Uscj1vWzFdKndlKTpbdCpVcixyKlVyXX0saX12YXIgSUQ9TSgoKT0+e2xyKCk7Q3UoKX0pO2Z1bmN0aW9uIGxMdChlKXt2YXIgdD1hZShlKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuW24qdCxKdChpKS90XX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm5bbi90LEpuKGkqdCldfSxyfXZhciBjTHQ9TSgoKT0+e2xyKCl9KTtmdW5jdGlvbiBsUShlLHQpe3ZhciByPUp0KGUpLG49KHIrSnQodCkpLzI7aWYoWWUobik8Y2UpcmV0dXJuIGxMdChlKTt2YXIgaT0xK3IqKDIqbi1yKSxvPVJyKGkpL247ZnVuY3Rpb24gYShzLGwpe3ZhciBjPVJyKGktMipuKkp0KGwpKS9uO3JldHVybltjKkp0KHMqPW4pLG8tYyphZShzKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHMsbCl7dmFyIGM9by1sO3JldHVybltTbihzLFllKGMpKS9uKmRnKGMpLEpuKChpLShzKnMrYypjKSpuKm4pLygyKm4pKV19LGF9ZnVuY3Rpb24gVXkoKXtyZXR1cm4gRjIobFEpLnNjYWxlKDE1NS40MjQpLmNlbnRlcihbMCwzMy42NDQyXSl9dmFyIExEPU0oKCk9PntscigpO0lEKCk7Y0x0KCl9KTtmdW5jdGlvbiBrRCgpe3JldHVybiBVeSgpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfXZhciBjUT1NKCgpPT57TEQoKX0pO2Z1bmN0aW9uIHZQZShlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24ocixuKXtmb3IodmFyIGk9LTE7KytpPHQ7KWVbaV0ucG9pbnQocixuKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciByPS0xOysrcjx0OyllW3JdLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPHQ7KWVbcl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPHQ7KWVbcl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPHQ7KWVbcl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPHQ7KWVbcl0ucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gdUx0KCl7dmFyIGUsdCxyPWtEKCksbixpPVV5KCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxvLGE9VXkoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSkscyxsLGM9e3BvaW50OmZ1bmN0aW9uKGYscCl7bD1bZixwXX19O2Z1bmN0aW9uIHUoZil7dmFyIHA9ZlswXSxkPWZbMV07cmV0dXJuIGw9bnVsbCxuLnBvaW50KHAsZCksbHx8KG8ucG9pbnQocCxkKSxsKXx8KHMucG9pbnQocCxkKSxsKX11LmludmVydD1mdW5jdGlvbihmKXt2YXIgcD1yLnNjYWxlKCksZD1yLnRyYW5zbGF0ZSgpLGc9KGZbMF0tZFswXSkvcCxfPShmWzFdLWRbMV0pL3A7cmV0dXJuKF8+PS4xMiYmXzwuMjM0JiZnPj0tLjQyNSYmZzwtLjIxND9pOl8+PS4xNjYmJl88LjIzNCYmZz49LS4yMTQmJmc8LS4xMTU/YTpyKS5pbnZlcnQoZil9LHUuc3RyZWFtPWZ1bmN0aW9uKGYpe3JldHVybiBlJiZ0PT09Zj9lOmU9dlBlKFtyLnN0cmVhbSh0PWYpLGkuc3RyZWFtKGYpLGEuc3RyZWFtKGYpXSl9LHUucHJlY2lzaW9uPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyLnByZWNpc2lvbihmKSxpLnByZWNpc2lvbihmKSxhLnByZWNpc2lvbihmKSxoKCkpOnIucHJlY2lzaW9uKCl9LHUuc2NhbGU9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIuc2NhbGUoZiksaS5zY2FsZShmKi4zNSksYS5zY2FsZShmKSx1LnRyYW5zbGF0ZShyLnRyYW5zbGF0ZSgpKSk6ci5zY2FsZSgpfSx1LnRyYW5zbGF0ZT1mdW5jdGlvbihmKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gci50cmFuc2xhdGUoKTt2YXIgcD1yLnNjYWxlKCksZD0rZlswXSxnPStmWzFdO3JldHVybiBuPXIudHJhbnNsYXRlKGYpLmNsaXBFeHRlbnQoW1tkLS40NTUqcCxnLS4yMzgqcF0sW2QrLjQ1NSpwLGcrLjIzOCpwXV0pLnN0cmVhbShjKSxvPWkudHJhbnNsYXRlKFtkLS4zMDcqcCxnKy4yMDEqcF0pLmNsaXBFeHRlbnQoW1tkLS40MjUqcCtjZSxnKy4xMipwK2NlXSxbZC0uMjE0KnAtY2UsZysuMjM0KnAtY2VdXSkuc3RyZWFtKGMpLHM9YS50cmFuc2xhdGUoW2QtLjIwNSpwLGcrLjIxMipwXSkuY2xpcEV4dGVudChbW2QtLjIxNCpwK2NlLGcrLjE2NipwK2NlXSxbZC0uMTE1KnAtY2UsZysuMjM0KnAtY2VdXSkuc3RyZWFtKGMpLGgoKX0sdS5maXRFeHRlbnQ9ZnVuY3Rpb24oZixwKXtyZXR1cm4gVnkodSxmLHApfSx1LmZpdFNpemU9ZnVuY3Rpb24oZixwKXtyZXR1cm4gRDIodSxmLHApfSx1LmZpdFdpZHRoPWZ1bmN0aW9uKGYscCl7cmV0dXJuIE8yKHUsZixwKX0sdS5maXRIZWlnaHQ9ZnVuY3Rpb24oZixwKXtyZXR1cm4gejIodSxmLHApfTtmdW5jdGlvbiBoKCl7cmV0dXJuIGU9dD1udWxsLHV9cmV0dXJuIHUuc2NhbGUoMTA3MCl9dmFyIGhMdD1NKCgpPT57bHIoKTtjUSgpO0xEKCk7UEQoKX0pO2Z1bmN0aW9uIFJEKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuPWFlKHQpLGk9YWUociksbz1lKG4qaSk7cmV0dXJuW28qaSpKdCh0KSxvKkp0KHIpXX19ZnVuY3Rpb24gYWYoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7dmFyIG49UnIodCp0K3IqciksaT1lKG4pLG89SnQoaSksYT1hZShpKTtyZXR1cm5bU24odCpvLG4qYSksSm4obiYmcipvL24pXX19dmFyIEIyPU0oKCk9PntscigpfSk7ZnVuY3Rpb24gZkx0KCl7cmV0dXJuIHRvKE5EKS5zY2FsZSgxMjQuNzUpLmNsaXBBbmdsZSgxODAtLjAwMSl9dmFyIE5ELHBMdD1NKCgpPT57bHIoKTtCMigpO0N1KCk7TkQ9UkQoZnVuY3Rpb24oZSl7cmV0dXJuIFJyKDIvKDErZSkpfSk7TkQuaW52ZXJ0PWFmKGZ1bmN0aW9uKGUpe3JldHVybiAyKkpuKGUvMil9KX0pO2Z1bmN0aW9uIGRMdCgpe3JldHVybiB0byhERCkuc2NhbGUoNzkuNDE4OCkuY2xpcEFuZ2xlKDE4MC0uMDAxKX12YXIgREQsbUx0PU0oKCk9PntscigpO0IyKCk7Q3UoKTtERD1SRChmdW5jdGlvbihlKXtyZXR1cm4oZT1qTihlKSkmJmUvSnQoZSl9KTtERC5pbnZlcnQ9YWYoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KX0pO2Z1bmN0aW9uIHF5KGUsdCl7cmV0dXJuW2UsUnkoVDIoKEJuK3QpLzIpKV19ZnVuY3Rpb24gZ0x0KCl7cmV0dXJuIHVRKHF5KS5zY2FsZSg5NjEvRmkpfWZ1bmN0aW9uIHVRKGUpe3ZhciB0PXRvKGUpLHI9dC5jZW50ZXIsbj10LnNjYWxlLGk9dC50cmFuc2xhdGUsbz10LmNsaXBFeHRlbnQsYT1udWxsLHMsbCxjO3Quc2NhbGU9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4oaCksdSgpKTpuKCl9LHQudHJhbnNsYXRlPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKGgpLHUoKSk6aSgpfSx0LmNlbnRlcj1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocihoKSx1KCkpOnIoKX0sdC5jbGlwRXh0ZW50PWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPT1udWxsP2E9cz1sPWM9bnVsbDooYT0raFswXVswXSxzPStoWzBdWzFdLGw9K2hbMV1bMF0sYz0raFsxXVsxXSksdSgpKTphPT1udWxsP251bGw6W1thLHNdLFtsLGNdXX07ZnVuY3Rpb24gdSgpe3ZhciBoPXJyKm4oKSxmPXQob0QodC5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIG8oYT09bnVsbD9bW2ZbMF0taCxmWzFdLWhdLFtmWzBdK2gsZlsxXStoXV06ZT09PXF5P1tbTWF0aC5tYXgoZlswXS1oLGEpLHNdLFtNYXRoLm1pbihmWzBdK2gsbCksY11dOltbYSxNYXRoLm1heChmWzFdLWgscyldLFtsLE1hdGgubWluKGZbMV0raCxjKV1dKX1yZXR1cm4gdSgpfXZhciBPRD1NKCgpPT57bHIoKTtrVCgpO0N1KCk7cXkuaW52ZXJ0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuW2UsMipnYyhXTih0KSktQm5dfX0pO2Z1bmN0aW9uIHpEKGUpe3JldHVybiBUMigoQm4rZSkvMil9ZnVuY3Rpb24gaFEoZSx0KXt2YXIgcj1hZShlKSxuPWU9PT10P0p0KGUpOlJ5KHIvYWUodCkpL1J5KHpEKHQpL3pEKGUpKSxpPXIqWU4oekQoZSksbikvbjtpZighbilyZXR1cm4gcXk7ZnVuY3Rpb24gbyhhLHMpe2k+MD9zPC1CbitjZSYmKHM9LUJuK2NlKTpzPkJuLWNlJiYocz1Cbi1jZSk7dmFyIGw9aS9ZTih6RChzKSxuKTtyZXR1cm5bbCpKdChuKmEpLGktbCphZShuKmEpXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24oYSxzKXt2YXIgbD1pLXMsYz1kZyhuKSpScihhKmErbCpsKTtyZXR1cm5bU24oYSxZZShsKSkvbipkZyhsKSwyKmdjKFlOKGkvYywxL24pKS1Cbl19LG99ZnVuY3Rpb24gX0x0KCl7cmV0dXJuIEYyKGhRKS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfXZhciB5THQ9TSgoKT0+e2xyKCk7SUQoKTtPRCgpfSk7ZnVuY3Rpb24gR3koZSx0KXtyZXR1cm5bZSx0XX1mdW5jdGlvbiB2THQoKXtyZXR1cm4gdG8oR3kpLnNjYWxlKDE1Mi42Myl9dmFyIGZRPU0oKCk9PntDdSgpO0d5LmludmVydD1HeX0pO2Z1bmN0aW9uIHBRKGUsdCl7dmFyIHI9YWUoZSksbj1lPT09dD9KdChlKTooci1hZSh0KSkvKHQtZSksaT1yL24rZTtpZihZZShuKTxjZSlyZXR1cm4gR3k7ZnVuY3Rpb24gbyhhLHMpe3ZhciBsPWktcyxjPW4qYTtyZXR1cm5bbCpKdChjKSxpLWwqYWUoYyldfXJldHVybiBvLmludmVydD1mdW5jdGlvbihhLHMpe3ZhciBsPWktcztyZXR1cm5bU24oYSxZZShsKSkvbipkZyhsKSxpLWRnKG4pKlJyKGEqYStsKmwpXX0sb31mdW5jdGlvbiB4THQoKXtyZXR1cm4gRjIocFEpLnNjYWxlKDEzMS4xNTQpLmNlbnRlcihbMCwxMy45Mzg5XSl9dmFyIGJMdD1NKCgpPT57bHIoKTtJRCgpO2ZRKCl9KTtmdW5jdGlvbiBGRChlLHQpe3ZhciByPWFlKHQpLG49YWUoZSkqcjtyZXR1cm5bcipKdChlKS9uLEp0KHQpL25dfWZ1bmN0aW9uIHdMdCgpe3JldHVybiB0byhGRCkuc2NhbGUoMTQ0LjA0OSkuY2xpcEFuZ2xlKDYwKX12YXIgU0x0PU0oKCk9PntscigpO0IyKCk7Q3UoKTtGRC5pbnZlcnQ9YWYoZ2MpfSk7ZnVuY3Rpb24gQkQoZSx0LHIsbil7cmV0dXJuIGU9PT0xJiZ0PT09MSYmcj09PTAmJm49PT0wP3JmOnZnKHtwb2ludDpmdW5jdGlvbihpLG8pe3RoaXMuc3RyZWFtLnBvaW50KGkqZStyLG8qdCtuKX19KX1mdW5jdGlvbiBNTHQoKXt2YXIgZT0xLHQ9MCxyPTAsbj0xLGk9MSxvPXJmLGE9bnVsbCxzLGwsYyx1PXJmLGgsZixwO2Z1bmN0aW9uIGQoKXtyZXR1cm4gaD1mPW51bGwscH1yZXR1cm4gcD17c3RyZWFtOmZ1bmN0aW9uKGcpe3JldHVybiBoJiZmPT09Zz9oOmg9byh1KGY9ZykpfSxwb3N0Y2xpcDpmdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1nLGE9cz1sPWM9bnVsbCxkKCkpOnV9LGNsaXBFeHRlbnQ6ZnVuY3Rpb24oZyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9Zz09bnVsbD8oYT1zPWw9Yz1udWxsLHJmKTpRcChhPStnWzBdWzBdLHM9K2dbMF1bMV0sbD0rZ1sxXVswXSxjPStnWzFdWzFdKSxkKCkpOmE9PW51bGw/bnVsbDpbW2Esc10sW2wsY11dfSxzY2FsZTpmdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1CRCgoZT0rZykqbixlKmksdCxyKSxkKCkpOmV9LHRyYW5zbGF0ZTpmdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1CRChlKm4sZSppLHQ9K2dbMF0scj0rZ1sxXSksZCgpKTpbdCxyXX0scmVmbGVjdFg6ZnVuY3Rpb24oZyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89QkQoZSoobj1nPy0xOjEpLGUqaSx0LHIpLGQoKSk6bjwwfSxyZWZsZWN0WTpmdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1CRChlKm4sZSooaT1nPy0xOjEpLHQsciksZCgpKTppPDB9LGZpdEV4dGVudDpmdW5jdGlvbihnLF8pe3JldHVybiBWeShwLGcsXyl9LGZpdFNpemU6ZnVuY3Rpb24oZyxfKXtyZXR1cm4gRDIocCxnLF8pfSxmaXRXaWR0aDpmdW5jdGlvbihnLF8pe3JldHVybiBPMihwLGcsXyl9LGZpdEhlaWdodDpmdW5jdGlvbihnLF8pe3JldHVybiB6MihwLGcsXyl9fX12YXIgRUx0PU0oKCk9PntPVCgpO2JEKCk7VVQoKTtQRCgpfSk7ZnVuY3Rpb24gSEQoZSx0KXt2YXIgcj10KnQsbj1yKnI7cmV0dXJuW2UqKC44NzA3LS4xMzE5NzkqcituKigtLjAxMzc5MStuKiguMDAzOTcxKnItLjAwMTUyOSpuKSkpLHQqKDEuMDA3MjI2K3IqKC4wMTUwODUrbiooLS4wNDQ0NzUrLjAyODg3NCpyLS4wMDU5MTYqbikpKV19ZnVuY3Rpb24gVEx0KCl7cmV0dXJuIHRvKEhEKS5zY2FsZSgxNzUuMjk1KX12YXIgQ0x0PU0oKCk9PntDdSgpO2xyKCk7SEQuaW52ZXJ0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dCxuPTI1LGk7ZG97dmFyIG89cipyLGE9bypvO3ItPWk9KHIqKDEuMDA3MjI2K28qKC4wMTUwODUrYSooLS4wNDQ0NzUrLjAyODg3NCpvLS4wMDU5MTYqYSkpKS10KS8oMS4wMDcyMjYrbyooLjAxNTA4NSozK2EqKC0uMDQ0NDc1KjcrLjAyODg3NCo5Km8tLjAwNTkxNioxMSphKSkpfXdoaWxlKFllKGkpPmNlJiYtLW4+MCk7cmV0dXJuW2UvKC44NzA3KyhvPXIqcikqKC0uMTMxOTc5K28qKC0uMDEzNzkxK28qbypvKiguMDAzOTcxLS4wMDE1MjkqbykpKSkscl19fSk7ZnVuY3Rpb24gVkQoZSx0KXtyZXR1cm5bYWUodCkqSnQoZSksSnQodCldfWZ1bmN0aW9uIEFMdCgpe3JldHVybiB0byhWRCkuc2NhbGUoMjQ5LjUpLmNsaXBBbmdsZSg5MCtjZSl9dmFyIFBMdD1NKCgpPT57bHIoKTtCMigpO0N1KCk7VkQuaW52ZXJ0PWFmKEpuKX0pO2Z1bmN0aW9uIFVEKGUsdCl7dmFyIHI9YWUodCksbj0xK2FlKGUpKnI7cmV0dXJuW3IqSnQoZSkvbixKdCh0KS9uXX1mdW5jdGlvbiBJTHQoKXtyZXR1cm4gdG8oVUQpLnNjYWxlKDI1MCkuY2xpcEFuZ2xlKDE0Mil9dmFyIExMdD1NKCgpPT57bHIoKTtCMigpO0N1KCk7VUQuaW52ZXJ0PWFmKGZ1bmN0aW9uKGUpe3JldHVybiAyKmdjKGUpfSl9KTtmdW5jdGlvbiBxRChlLHQpe3JldHVybltSeShUMigoQm4rdCkvMikpLC1lXX1mdW5jdGlvbiBrTHQoKXt2YXIgZT11UShxRCksdD1lLmNlbnRlcixyPWUucm90YXRlO3JldHVybiBlLmNlbnRlcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90KFstblsxXSxuWzBdXSk6KG49dCgpLFtuWzFdLC1uWzBdXSl9LGUucm90YXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3IoW25bMF0sblsxXSxuLmxlbmd0aD4yP25bMl0rOTA6OTBdKToobj1yKCksW25bMF0sblsxXSxuWzJdLTkwXSl9LHIoWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfXZhciBSTHQ9TSgoKT0+e2xyKCk7T0QoKTtxRC5pbnZlcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm5bLXQsMipnYyhXTihlKSktQm5dfX0pO3ZhciBOTHQ9TSgoKT0+e2NKKCk7VUl0KCk7JEl0KCk7eUooKTtGSigpO0JKKCk7RTl0KCk7T1QoKTtSOXQoKTtHSigpO3o5dCgpO0I5dCgpO1VKKCk7aUx0KCk7Y1EoKTtoTHQoKTtwTHQoKTttTHQoKTt5THQoKTtMRCgpO2JMdCgpO2ZRKCk7U0x0KCk7RUx0KCk7Q3UoKTtPRCgpO0NMdCgpO1BMdCgpO0xMdCgpO1JMdCgpO2tUKCk7bWcoKTtVVCgpfSk7ZnVuY3Rpb24geFBlKGUsdCl7cmV0dXJuIGUucGFyZW50PT09dC5wYXJlbnQ/MToyfWZ1bmN0aW9uIGJQZShlKXtyZXR1cm4gZS5yZWR1Y2Uod1BlLDApL2UubGVuZ3RofWZ1bmN0aW9uIHdQZShlLHQpe3JldHVybiBlK3QueH1mdW5jdGlvbiBTUGUoZSl7cmV0dXJuIDErZS5yZWR1Y2UoTVBlLDApfWZ1bmN0aW9uIE1QZShlLHQpe3JldHVybiBNYXRoLm1heChlLHQueSl9ZnVuY3Rpb24gRVBlKGUpe2Zvcih2YXIgdDt0PWUuY2hpbGRyZW47KWU9dFswXTtyZXR1cm4gZX1mdW5jdGlvbiBUUGUoZSl7Zm9yKHZhciB0O3Q9ZS5jaGlsZHJlbjspZT10W3QubGVuZ3RoLTFdO3JldHVybiBlfWZ1bmN0aW9uIERMdCgpe3ZhciBlPXhQZSx0PTEscj0xLG49ITE7ZnVuY3Rpb24gaShvKXt2YXIgYSxzPTA7by5lYWNoQWZ0ZXIoZnVuY3Rpb24oZil7dmFyIHA9Zi5jaGlsZHJlbjtwPyhmLng9YlBlKHApLGYueT1TUGUocCkpOihmLng9YT9zKz1lKGYsYSk6MCxmLnk9MCxhPWYpfSk7dmFyIGw9RVBlKG8pLGM9VFBlKG8pLHU9bC54LWUobCxjKS8yLGg9Yy54K2UoYyxsKS8yO3JldHVybiBvLmVhY2hBZnRlcihuP2Z1bmN0aW9uKGYpe2YueD0oZi54LW8ueCkqdCxmLnk9KG8ueS1mLnkpKnJ9OmZ1bmN0aW9uKGYpe2YueD0oZi54LXUpLyhoLXUpKnQsZi55PSgxLShvLnk/Zi55L28ueToxKSkqcn0pfXJldHVybiBpLnNlcGFyYXRpb249ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9byxpKTplfSxpLnNpemU9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ITEsdD0rb1swXSxyPStvWzFdLGkpOm4/bnVsbDpbdCxyXX0saS5ub2RlU2l6ZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hMCx0PStvWzBdLHI9K29bMV0saSk6bj9bdCxyXTpudWxsfSxpfXZhciBPTHQ9TSgoKT0+e30pO2Z1bmN0aW9uIENQZShlKXt2YXIgdD0wLHI9ZS5jaGlsZHJlbixuPXImJnIubGVuZ3RoO2lmKCFuKXQ9MTtlbHNlIGZvcig7LS1uPj0wOyl0Kz1yW25dLnZhbHVlO2UudmFsdWU9dH1mdW5jdGlvbiB6THQoKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoQ1BlKX12YXIgRkx0PU0oKCk9Pnt9KTtmdW5jdGlvbiBCTHQoZSl7dmFyIHQ9dGhpcyxyLG49W3RdLGksbyxhO2RvIGZvcihyPW4ucmV2ZXJzZSgpLG49W107dD1yLnBvcCgpOylpZihlKHQpLGk9dC5jaGlsZHJlbixpKWZvcihvPTAsYT1pLmxlbmd0aDtvPGE7KytvKW4ucHVzaChpW29dKTt3aGlsZShuLmxlbmd0aCk7cmV0dXJuIHRoaXN9dmFyIEhMdD1NKCgpPT57fSk7ZnVuY3Rpb24gVkx0KGUpe2Zvcih2YXIgdD10aGlzLHI9W3RdLG4saTt0PXIucG9wKCk7KWlmKGUodCksbj10LmNoaWxkcmVuLG4pZm9yKGk9bi5sZW5ndGgtMTtpPj0wOy0taSlyLnB1c2gobltpXSk7cmV0dXJuIHRoaXN9dmFyIFVMdD1NKCgpPT57fSk7ZnVuY3Rpb24gcUx0KGUpe2Zvcih2YXIgdD10aGlzLHI9W3RdLG49W10saSxvLGE7dD1yLnBvcCgpOylpZihuLnB1c2godCksaT10LmNoaWxkcmVuLGkpZm9yKG89MCxhPWkubGVuZ3RoO288YTsrK28pci5wdXNoKGlbb10pO2Zvcig7dD1uLnBvcCgpOyllKHQpO3JldHVybiB0aGlzfXZhciBHTHQ9TSgoKT0+e30pO2Z1bmN0aW9uIFdMdChlKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoZnVuY3Rpb24odCl7Zm9yKHZhciByPStlKHQuZGF0YSl8fDAsbj10LmNoaWxkcmVuLGk9biYmbi5sZW5ndGg7LS1pPj0wOylyKz1uW2ldLnZhbHVlO3QudmFsdWU9cn0pfXZhciBZTHQ9TSgoKT0+e30pO2Z1bmN0aW9uIGpMdChlKXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW4mJnQuY2hpbGRyZW4uc29ydChlKX0pfXZhciBYTHQ9TSgoKT0+e30pO2Z1bmN0aW9uICRMdChlKXtmb3IodmFyIHQ9dGhpcyxyPUFQZSh0LGUpLG49W3RdO3QhPT1yOyl0PXQucGFyZW50LG4ucHVzaCh0KTtmb3IodmFyIGk9bi5sZW5ndGg7ZSE9PXI7KW4uc3BsaWNlKGksMCxlKSxlPWUucGFyZW50O3JldHVybiBufWZ1bmN0aW9uIEFQZShlLHQpe2lmKGU9PT10KXJldHVybiBlO3ZhciByPWUuYW5jZXN0b3JzKCksbj10LmFuY2VzdG9ycygpLGk9bnVsbDtmb3IoZT1yLnBvcCgpLHQ9bi5wb3AoKTtlPT09dDspaT1lLGU9ci5wb3AoKSx0PW4ucG9wKCk7cmV0dXJuIGl9dmFyIEtMdD1NKCgpPT57fSk7ZnVuY3Rpb24gWkx0KCl7Zm9yKHZhciBlPXRoaXMsdD1bZV07ZT1lLnBhcmVudDspdC5wdXNoKGUpO3JldHVybiB0fXZhciBKTHQ9TSgoKT0+e30pO2Z1bmN0aW9uIFFMdCgpe3ZhciBlPVtdO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSksZX12YXIgdGt0PU0oKCk9Pnt9KTtmdW5jdGlvbiBla3QoKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW58fGUucHVzaCh0KX0pLGV9dmFyIHJrdD1NKCgpPT57fSk7ZnVuY3Rpb24gbmt0KCl7dmFyIGU9dGhpcyx0PVtdO3JldHVybiBlLmVhY2goZnVuY3Rpb24ocil7ciE9PWUmJnQucHVzaCh7c291cmNlOnIucGFyZW50LHRhcmdldDpyfSl9KSx0fXZhciBpa3Q9TSgoKT0+e30pO2Z1bmN0aW9uIEdUKGUsdCl7dmFyIHI9bmV3IHhnKGUpLG49K2UudmFsdWUmJihyLnZhbHVlPWUudmFsdWUpLGksbz1bcl0sYSxzLGwsYztmb3IodD09bnVsbCYmKHQ9SVBlKTtpPW8ucG9wKCk7KWlmKG4mJihpLnZhbHVlPStpLmRhdGEudmFsdWUpLChzPXQoaS5kYXRhKSkmJihjPXMubGVuZ3RoKSlmb3IoaS5jaGlsZHJlbj1uZXcgQXJyYXkoYyksbD1jLTE7bD49MDstLWwpby5wdXNoKGE9aS5jaGlsZHJlbltsXT1uZXcgeGcoc1tsXSkpLGEucGFyZW50PWksYS5kZXB0aD1pLmRlcHRoKzE7cmV0dXJuIHIuZWFjaEJlZm9yZShkUSl9ZnVuY3Rpb24gUFBlKCl7cmV0dXJuIEdUKHRoaXMpLmVhY2hCZWZvcmUoTFBlKX1mdW5jdGlvbiBJUGUoZSl7cmV0dXJuIGUuY2hpbGRyZW59ZnVuY3Rpb24gTFBlKGUpe2UuZGF0YT1lLmRhdGEuZGF0YX1mdW5jdGlvbiBkUShlKXt2YXIgdD0wO2RvIGUuaGVpZ2h0PXQ7d2hpbGUoKGU9ZS5wYXJlbnQpJiZlLmhlaWdodDwrK3QpfWZ1bmN0aW9uIHhnKGUpe3RoaXMuZGF0YT1lLHRoaXMuZGVwdGg9dGhpcy5oZWlnaHQ9MCx0aGlzLnBhcmVudD1udWxsfXZhciBHRD1NKCgpPT57Rkx0KCk7SEx0KCk7VUx0KCk7R0x0KCk7WUx0KCk7WEx0KCk7S0x0KCk7Skx0KCk7dGt0KCk7cmt0KCk7aWt0KCk7eGcucHJvdG90eXBlPUdULnByb3RvdHlwZT17Y29uc3RydWN0b3I6eGcsY291bnQ6ekx0LGVhY2g6Qkx0LGVhY2hBZnRlcjpxTHQsZWFjaEJlZm9yZTpWTHQsc3VtOldMdCxzb3J0OmpMdCxwYXRoOiRMdCxhbmNlc3RvcnM6Wkx0LGRlc2NlbmRhbnRzOlFMdCxsZWF2ZXM6ZWt0LGxpbmtzOm5rdCxjb3B5OlBQZX19KTtmdW5jdGlvbiBha3QoZSl7Zm9yKHZhciB0PWUubGVuZ3RoLHIsbjt0OyluPU1hdGgucmFuZG9tKCkqdC0tfDAscj1lW3RdLGVbdF09ZVtuXSxlW25dPXI7cmV0dXJuIGV9dmFyIG9rdCxza3Q9TSgoKT0+e29rdD1BcnJheS5wcm90b3R5cGUuc2xpY2V9KTtmdW5jdGlvbiBZRChlKXtmb3IodmFyIHQ9MCxyPShlPWFrdChva3QuY2FsbChlKSkpLmxlbmd0aCxuPVtdLGksbzt0PHI7KWk9ZVt0XSxvJiZsa3QobyxpKT8rK3Q6KG89UlBlKG49a1BlKG4saSkpLHQ9MCk7cmV0dXJuIG99ZnVuY3Rpb24ga1BlKGUsdCl7dmFyIHIsbjtpZihtUSh0LGUpKXJldHVyblt0XTtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKWlmKFdEKHQsZVtyXSkmJm1RKFdUKGVbcl0sdCksZSkpcmV0dXJuW2Vbcl0sdF07Zm9yKHI9MDtyPGUubGVuZ3RoLTE7KytyKWZvcihuPXIrMTtuPGUubGVuZ3RoOysrbilpZihXRChXVChlW3JdLGVbbl0pLHQpJiZXRChXVChlW3JdLHQpLGVbbl0pJiZXRChXVChlW25dLHQpLGVbcl0pJiZtUShja3QoZVtyXSxlW25dLHQpLGUpKXJldHVybltlW3JdLGVbbl0sdF07dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uIFdEKGUsdCl7dmFyIHI9ZS5yLXQucixuPXQueC1lLngsaT10LnktZS55O3JldHVybiByPDB8fHIqcjxuKm4raSppfWZ1bmN0aW9uIGxrdChlLHQpe3ZhciByPWUuci10LnIrMWUtNixuPXQueC1lLngsaT10LnktZS55O3JldHVybiByPjAmJnIqcj5uKm4raSppfWZ1bmN0aW9uIG1RKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpaWYoIWxrdChlLHRbcl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFJQZShlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gTlBlKGVbMF0pO2Nhc2UgMjpyZXR1cm4gV1QoZVswXSxlWzFdKTtjYXNlIDM6cmV0dXJuIGNrdChlWzBdLGVbMV0sZVsyXSl9fWZ1bmN0aW9uIE5QZShlKXtyZXR1cm57eDplLngseTplLnkscjplLnJ9fWZ1bmN0aW9uIFdUKGUsdCl7dmFyIHI9ZS54LG49ZS55LGk9ZS5yLG89dC54LGE9dC55LHM9dC5yLGw9by1yLGM9YS1uLHU9cy1pLGg9TWF0aC5zcXJ0KGwqbCtjKmMpO3JldHVybnt4OihyK28rbC9oKnUpLzIseToobithK2MvaCp1KS8yLHI6KGgraStzKS8yfX1mdW5jdGlvbiBja3QoZSx0LHIpe3ZhciBuPWUueCxpPWUueSxvPWUucixhPXQueCxzPXQueSxsPXQucixjPXIueCx1PXIueSxoPXIucixmPW4tYSxwPW4tYyxkPWktcyxnPWktdSxfPWwtbyx5PWgtbyx4PW4qbitpKmktbypvLGI9eC1hKmEtcypzK2wqbCxTPXgtYypjLXUqdStoKmgsQz1wKmQtZipnLFA9KGQqUy1nKmIpLyhDKjIpLW4saz0oZypfLWQqeSkvQyxPPShwKmItZipTKS8oQyoyKS1pLEQ9KGYqeS1wKl8pL0MsQj1rKmsrRCpELTEsST0yKihvK1AqaytPKkQpLEw9UCpQK08qTy1vKm8sUj0tKEI/KEkrTWF0aC5zcXJ0KEkqSS00KkIqTCkpLygyKkIpOkwvSSk7cmV0dXJue3g6bitQK2sqUix5OmkrTytEKlIscjpSfX12YXIgZ1E9TSgoKT0+e3NrdCgpfSk7ZnVuY3Rpb24gdWt0KGUsdCxyKXt2YXIgbj1lLngsaT1lLnksbz10LnIrci5yLGE9ZS5yK3IucixzPXQueC1uLGw9dC55LWksYz1zKnMrbCpsO2lmKGMpe3ZhciB1PS41KygoYSo9YSktKG8qPW8pKS8oMipjKSxoPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyooYStjKS0oYS09YykqYS1vKm8pKS8oMipjKTtyLng9bit1KnMraCpsLHIueT1pK3UqbC1oKnN9ZWxzZSByLng9bithLHIueT1pfWZ1bmN0aW9uIGhrdChlLHQpe3ZhciByPXQueC1lLngsbj10LnktZS55LGk9ZS5yK3QucjtyZXR1cm4gaSppLTFlLTY+cipyK24qbn1mdW5jdGlvbiBma3QoZSl7dmFyIHQ9ZS5fLHI9ZS5uZXh0Ll8sbj10LnIrci5yLGk9KHQueCpyLnIrci54KnQucikvbixvPSh0Lnkqci5yK3IueSp0LnIpL247cmV0dXJuIGkqaStvKm99ZnVuY3Rpb24gakQoZSl7dGhpcy5fPWUsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIF9RKGUpe2lmKCEoaT1lLmxlbmd0aCkpcmV0dXJuIDA7dmFyIHQscixuLGksbyxhLHMsbCxjLHUsaDtpZih0PWVbMF0sdC54PTAsdC55PTAsIShpPjEpKXJldHVybiB0LnI7aWYocj1lWzFdLHQueD0tci5yLHIueD10LnIsci55PTAsIShpPjIpKXJldHVybiB0LnIrci5yO3VrdChyLHQsbj1lWzJdKSx0PW5ldyBqRCh0KSxyPW5ldyBqRChyKSxuPW5ldyBqRChuKSx0Lm5leHQ9bi5wcmV2aW91cz1yLHIubmV4dD10LnByZXZpb3VzPW4sbi5uZXh0PXIucHJldmlvdXM9dDt0OmZvcihzPTM7czxpOysrcyl7dWt0KHQuXyxyLl8sbj1lW3NdKSxuPW5ldyBqRChuKSxsPXIubmV4dCxjPXQucHJldmlvdXMsdT1yLl8ucixoPXQuXy5yO2RvIGlmKHU8PWgpe2lmKGhrdChsLl8sbi5fKSl7cj1sLHQubmV4dD1yLHIucHJldmlvdXM9dCwtLXM7Y29udGludWUgdH11Kz1sLl8ucixsPWwubmV4dH1lbHNle2lmKGhrdChjLl8sbi5fKSl7dD1jLHQubmV4dD1yLHIucHJldmlvdXM9dCwtLXM7Y29udGludWUgdH1oKz1jLl8ucixjPWMucHJldmlvdXN9d2hpbGUobCE9PWMubmV4dCk7Zm9yKG4ucHJldmlvdXM9dCxuLm5leHQ9cix0Lm5leHQ9ci5wcmV2aW91cz1yPW4sbz1ma3QodCk7KG49bi5uZXh0KSE9PXI7KShhPWZrdChuKSk8byYmKHQ9bixvPWEpO3I9dC5uZXh0fWZvcih0PVtyLl9dLG49cjsobj1uLm5leHQpIT09cjspdC5wdXNoKG4uXyk7Zm9yKG49WUQodCkscz0wO3M8aTsrK3MpdD1lW3NdLHQueC09bi54LHQueS09bi55O3JldHVybiBuLnJ9ZnVuY3Rpb24gcGt0KGUpe3JldHVybiBfUShlKSxlfXZhciB5UT1NKCgpPT57Z1EoKX0pO2Z1bmN0aW9uIGRrdChlKXtyZXR1cm4gZT09bnVsbD9udWxsOkgyKGUpfWZ1bmN0aW9uIEgyKGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZX12YXIgWEQ9TSgoKT0+e30pO2Z1bmN0aW9uIHRkKCl7cmV0dXJuIDB9ZnVuY3Rpb24gYmcoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciB2UT1NKCgpPT57fSk7ZnVuY3Rpb24gRFBlKGUpe3JldHVybiBNYXRoLnNxcnQoZS52YWx1ZSl9ZnVuY3Rpb24gX2t0KCl7dmFyIGU9bnVsbCx0PTEscj0xLG49dGQ7ZnVuY3Rpb24gaShvKXtyZXR1cm4gby54PXQvMixvLnk9ci8yLGU/by5lYWNoQmVmb3JlKG1rdChlKSkuZWFjaEFmdGVyKHhRKG4sLjUpKS5lYWNoQmVmb3JlKGdrdCgxKSk6by5lYWNoQmVmb3JlKG1rdChEUGUpKS5lYWNoQWZ0ZXIoeFEodGQsMSkpLmVhY2hBZnRlcih4UShuLG8uci9NYXRoLm1pbih0LHIpKSkuZWFjaEJlZm9yZShna3QoTWF0aC5taW4odCxyKS8oMipvLnIpKSksb31yZXR1cm4gaS5yYWRpdXM9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ZGt0KG8pLGkpOmV9LGkuc2l6ZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rb1swXSxyPStvWzFdLGkpOlt0LHJdfSxpLnBhZGRpbmc9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIG89PSJmdW5jdGlvbiI/bzpiZygrbyksaSk6bn0saX1mdW5jdGlvbiBta3QoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW58fCh0LnI9TWF0aC5tYXgoMCwrZSh0KXx8MCkpfX1mdW5jdGlvbiB4UShlLHQpe3JldHVybiBmdW5jdGlvbihyKXtpZihuPXIuY2hpbGRyZW4pe3ZhciBuLGksbz1uLmxlbmd0aCxhPWUocikqdHx8MCxzO2lmKGEpZm9yKGk9MDtpPG87KytpKW5baV0ucis9YTtpZihzPV9RKG4pLGEpZm9yKGk9MDtpPG87KytpKW5baV0uci09YTtyLnI9cythfX19ZnVuY3Rpb24gZ2t0KGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj10LnBhcmVudDt0LnIqPWUsciYmKHQueD1yLngrZSp0LngsdC55PXIueStlKnQueSl9fXZhciB5a3Q9TSgoKT0+e3lRKCk7WEQoKTt2USgpfSk7ZnVuY3Rpb24gJEQoZSl7ZS54MD1NYXRoLnJvdW5kKGUueDApLGUueTA9TWF0aC5yb3VuZChlLnkwKSxlLngxPU1hdGgucm91bmQoZS54MSksZS55MT1NYXRoLnJvdW5kKGUueTEpfXZhciBiUT1NKCgpPT57fSk7ZnVuY3Rpb24gc2YoZSx0LHIsbixpKXtmb3IodmFyIG89ZS5jaGlsZHJlbixhLHM9LTEsbD1vLmxlbmd0aCxjPWUudmFsdWUmJihuLXQpL2UudmFsdWU7KytzPGw7KWE9b1tzXSxhLnkwPXIsYS55MT1pLGEueDA9dCxhLngxPXQrPWEudmFsdWUqY312YXIgVjI9TSgoKT0+e30pO2Z1bmN0aW9uIHZrdCgpe3ZhciBlPTEsdD0xLHI9MCxuPSExO2Z1bmN0aW9uIGkoYSl7dmFyIHM9YS5oZWlnaHQrMTtyZXR1cm4gYS54MD1hLnkwPXIsYS54MT1lLGEueTE9dC9zLGEuZWFjaEJlZm9yZShvKHQscykpLG4mJmEuZWFjaEJlZm9yZSgkRCksYX1mdW5jdGlvbiBvKGEscyl7cmV0dXJuIGZ1bmN0aW9uKGwpe2wuY2hpbGRyZW4mJnNmKGwsbC54MCxhKihsLmRlcHRoKzEpL3MsbC54MSxhKihsLmRlcHRoKzIpL3MpO3ZhciBjPWwueDAsdT1sLnkwLGg9bC54MS1yLGY9bC55MS1yO2g8YyYmKGM9aD0oYytoKS8yKSxmPHUmJih1PWY9KHUrZikvMiksbC54MD1jLGwueTA9dSxsLngxPWgsbC55MT1mfX1yZXR1cm4gaS5yb3VuZD1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hIWEsaSk6bn0saS5zaXplPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSthWzBdLHQ9K2FbMV0saSk6W2UsdF19LGkucGFkZGluZz1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rYSxpKTpyfSxpfXZhciB4a3Q9TSgoKT0+e2JRKCk7VjIoKX0pO2Z1bmN0aW9uIHpQZShlKXtyZXR1cm4gZS5pZH1mdW5jdGlvbiBGUGUoZSl7cmV0dXJuIGUucGFyZW50SWR9ZnVuY3Rpb24gU2t0KCl7dmFyIGU9elBlLHQ9RlBlO2Z1bmN0aW9uIHIobil7dmFyIGksbyxhPW4ubGVuZ3RoLHMsbCxjLHU9bmV3IEFycmF5KGEpLGgsZixwPXt9O2ZvcihvPTA7bzxhOysrbylpPW5bb10sYz11W29dPW5ldyB4ZyhpKSwoaD1lKGksbyxuKSkhPW51bGwmJihoKz0iIikmJihmPWJrdCsoYy5pZD1oKSxwW2ZdPWYgaW4gcD93a3Q6Yyk7Zm9yKG89MDtvPGE7KytvKWlmKGM9dVtvXSxoPXQobltvXSxvLG4pLGg9PW51bGx8fCEoaCs9IiIpKXtpZihzKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtzPWN9ZWxzZXtpZihsPXBbYmt0K2hdLCFsKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIitoKTtpZihsPT09d2t0KXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2gpO2wuY2hpbGRyZW4/bC5jaGlsZHJlbi5wdXNoKGMpOmwuY2hpbGRyZW49W2NdLGMucGFyZW50PWx9aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYocy5wYXJlbnQ9T1BlLHMuZWFjaEJlZm9yZShmdW5jdGlvbihkKXtkLmRlcHRoPWQucGFyZW50LmRlcHRoKzEsLS1hfSkuZWFjaEJlZm9yZShkUSkscy5wYXJlbnQ9bnVsbCxhPjApdGhyb3cgbmV3IEVycm9yKCJjeWNsZSIpO3JldHVybiBzfXJldHVybiByLmlkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUgyKG4pLHIpOmV9LHIucGFyZW50SWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9SDIobikscik6dH0scn12YXIgYmt0LE9QZSx3a3QsTWt0PU0oKCk9PntYRCgpO0dEKCk7Ymt0PSIkIixPUGU9e2RlcHRoOi0xfSx3a3Q9e319KTtmdW5jdGlvbiBCUGUoZSx0KXtyZXR1cm4gZS5wYXJlbnQ9PT10LnBhcmVudD8xOjJ9ZnVuY3Rpb24gd1EoZSl7dmFyIHQ9ZS5jaGlsZHJlbjtyZXR1cm4gdD90WzBdOmUudH1mdW5jdGlvbiBTUShlKXt2YXIgdD1lLmNoaWxkcmVuO3JldHVybiB0P3RbdC5sZW5ndGgtMV06ZS50fWZ1bmN0aW9uIEhQZShlLHQscil7dmFyIG49ci8odC5pLWUuaSk7dC5jLT1uLHQucys9cixlLmMrPW4sdC56Kz1yLHQubSs9cn1mdW5jdGlvbiBWUGUoZSl7Zm9yKHZhciB0PTAscj0wLG49ZS5jaGlsZHJlbixpPW4ubGVuZ3RoLG87LS1pPj0wOylvPW5baV0sby56Kz10LG8ubSs9dCx0Kz1vLnMrKHIrPW8uYyl9ZnVuY3Rpb24gVVBlKGUsdCxyKXtyZXR1cm4gZS5hLnBhcmVudD09PXQucGFyZW50P2UuYTpyfWZ1bmN0aW9uIEtEKGUsdCl7dGhpcy5fPWUsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPXR9ZnVuY3Rpb24gcVBlKGUpe2Zvcih2YXIgdD1uZXcgS0QoZSwwKSxyLG49W3RdLGksbyxhLHM7cj1uLnBvcCgpOylpZihvPXIuXy5jaGlsZHJlbilmb3Ioci5jaGlsZHJlbj1uZXcgQXJyYXkocz1vLmxlbmd0aCksYT1zLTE7YT49MDstLWEpbi5wdXNoKGk9ci5jaGlsZHJlblthXT1uZXcgS0Qob1thXSxhKSksaS5wYXJlbnQ9cjtyZXR1cm4odC5wYXJlbnQ9bmV3IEtEKG51bGwsMCkpLmNoaWxkcmVuPVt0XSx0fWZ1bmN0aW9uIEVrdCgpe3ZhciBlPUJQZSx0PTEscj0xLG49bnVsbDtmdW5jdGlvbiBpKGMpe3ZhciB1PXFQZShjKTtpZih1LmVhY2hBZnRlcihvKSx1LnBhcmVudC5tPS11LnosdS5lYWNoQmVmb3JlKGEpLG4pYy5lYWNoQmVmb3JlKGwpO2Vsc2V7dmFyIGg9YyxmPWMscD1jO2MuZWFjaEJlZm9yZShmdW5jdGlvbih4KXt4Lng8aC54JiYoaD14KSx4Lng+Zi54JiYoZj14KSx4LmRlcHRoPnAuZGVwdGgmJihwPXgpfSk7dmFyIGQ9aD09PWY/MTplKGgsZikvMixnPWQtaC54LF89dC8oZi54K2QrZykseT1yLyhwLmRlcHRofHwxKTtjLmVhY2hCZWZvcmUoZnVuY3Rpb24oeCl7eC54PSh4LngrZykqXyx4Lnk9eC5kZXB0aCp5fSl9cmV0dXJuIGN9ZnVuY3Rpb24gbyhjKXt2YXIgdT1jLmNoaWxkcmVuLGg9Yy5wYXJlbnQuY2hpbGRyZW4sZj1jLmk/aFtjLmktMV06bnVsbDtpZih1KXtWUGUoYyk7dmFyIHA9KHVbMF0ueit1W3UubGVuZ3RoLTFdLnopLzI7Zj8oYy56PWYueitlKGMuXyxmLl8pLGMubT1jLnotcCk6Yy56PXB9ZWxzZSBmJiYoYy56PWYueitlKGMuXyxmLl8pKTtjLnBhcmVudC5BPXMoYyxmLGMucGFyZW50LkF8fGhbMF0pfWZ1bmN0aW9uIGEoYyl7Yy5fLng9Yy56K2MucGFyZW50Lm0sYy5tKz1jLnBhcmVudC5tfWZ1bmN0aW9uIHMoYyx1LGgpe2lmKHUpe2Zvcih2YXIgZj1jLHA9YyxkPXUsZz1mLnBhcmVudC5jaGlsZHJlblswXSxfPWYubSx5PXAubSx4PWQubSxiPWcubSxTO2Q9U1EoZCksZj13UShmKSxkJiZmOylnPXdRKGcpLHA9U1EocCkscC5hPWMsUz1kLnoreC1mLnotXytlKGQuXyxmLl8pLFM+MCYmKEhQZShVUGUoZCxjLGgpLGMsUyksXys9Uyx5Kz1TKSx4Kz1kLm0sXys9Zi5tLGIrPWcubSx5Kz1wLm07ZCYmIVNRKHApJiYocC50PWQscC5tKz14LXkpLGYmJiF3UShnKSYmKGcudD1mLGcubSs9Xy1iLGg9Yyl9cmV0dXJuIGh9ZnVuY3Rpb24gbChjKXtjLngqPXQsYy55PWMuZGVwdGgqcn1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1bmN0aW9uKGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWMsaSk6ZX0saS5zaXplPWZ1bmN0aW9uKGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSExLHQ9K2NbMF0scj0rY1sxXSxpKTpuP251bGw6W3Qscl19LGkubm9kZVNpemU9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ITAsdD0rY1swXSxyPStjWzFdLGkpOm4/W3Qscl06bnVsbH0saX12YXIgVGt0PU0oKCk9PntHRCgpO0tELnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHhnLnByb3RvdHlwZSl9KTtmdW5jdGlvbiB3ZyhlLHQscixuLGkpe2Zvcih2YXIgbz1lLmNoaWxkcmVuLGEscz0tMSxsPW8ubGVuZ3RoLGM9ZS52YWx1ZSYmKGktcikvZS52YWx1ZTsrK3M8bDspYT1vW3NdLGEueDA9dCxhLngxPW4sYS55MD1yLGEueTE9cis9YS52YWx1ZSpjfXZhciBZVD1NKCgpPT57fSk7ZnVuY3Rpb24gRVEoZSx0LHIsbixpLG8pe2Zvcih2YXIgYT1bXSxzPXQuY2hpbGRyZW4sbCxjLHU9MCxoPTAsZj1zLmxlbmd0aCxwLGQsZz10LnZhbHVlLF8seSx4LGIsUyxDLFA7dTxmOyl7cD1pLXIsZD1vLW47ZG8gXz1zW2grK10udmFsdWU7d2hpbGUoIV8mJmg8Zik7Zm9yKHk9eD1fLEM9TWF0aC5tYXgoZC9wLHAvZCkvKGcqZSksUD1fKl8qQyxTPU1hdGgubWF4KHgvUCxQL3kpO2g8ZjsrK2gpe2lmKF8rPWM9c1toXS52YWx1ZSxjPHkmJih5PWMpLGM+eCYmKHg9YyksUD1fKl8qQyxiPU1hdGgubWF4KHgvUCxQL3kpLGI+Uyl7Xy09YzticmVha31TPWJ9YS5wdXNoKGw9e3ZhbHVlOl8sZGljZTpwPGQsY2hpbGRyZW46cy5zbGljZSh1LGgpfSksbC5kaWNlP3NmKGwscixuLGksZz9uKz1kKl8vZzpvKTp3ZyhsLHIsbixnP3IrPXAqXy9nOmksbyksZy09Xyx1PWh9cmV0dXJuIGF9dmFyIE1RLFpELEpEPU0oKCk9PntWMigpO1lUKCk7TVE9KDErTWF0aC5zcXJ0KDUpKS8yO1pEPWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuLGksbyxhLHMpe0VRKHQsbixpLG8sYSxzKX1yZXR1cm4gci5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gZSgobj0rbik+MT9uOjEpfSxyfShNUSl9KTtmdW5jdGlvbiBDa3QoKXt2YXIgZT1aRCx0PSExLHI9MSxuPTEsaT1bMF0sbz10ZCxhPXRkLHM9dGQsbD10ZCxjPXRkO2Z1bmN0aW9uIHUoZil7cmV0dXJuIGYueDA9Zi55MD0wLGYueDE9cixmLnkxPW4sZi5lYWNoQmVmb3JlKGgpLGk9WzBdLHQmJmYuZWFjaEJlZm9yZSgkRCksZn1mdW5jdGlvbiBoKGYpe3ZhciBwPWlbZi5kZXB0aF0sZD1mLngwK3AsZz1mLnkwK3AsXz1mLngxLXAseT1mLnkxLXA7XzxkJiYoZD1fPShkK18pLzIpLHk8ZyYmKGc9eT0oZyt5KS8yKSxmLngwPWQsZi55MD1nLGYueDE9XyxmLnkxPXksZi5jaGlsZHJlbiYmKHA9aVtmLmRlcHRoKzFdPW8oZikvMixkKz1jKGYpLXAsZys9YShmKS1wLF8tPXMoZiktcCx5LT1sKGYpLXAsXzxkJiYoZD1fPShkK18pLzIpLHk8ZyYmKGc9eT0oZyt5KS8yKSxlKGYsZCxnLF8seSkpfXJldHVybiB1LnJvdW5kPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSEhZix1KTp0fSx1LnNpemU9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2ZbMF0sbj0rZlsxXSx1KTpbcixuXX0sdS50aWxlPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUgyKGYpLHUpOmV9LHUucGFkZGluZz1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdJbm5lcihmKS5wYWRkaW5nT3V0ZXIoZik6dS5wYWRkaW5nSW5uZXIoKX0sdS5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpiZygrZiksdSk6b30sdS5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nVG9wKGYpLnBhZGRpbmdSaWdodChmKS5wYWRkaW5nQm90dG9tKGYpLnBhZGRpbmdMZWZ0KGYpOnUucGFkZGluZ1RvcCgpfSx1LnBhZGRpbmdUb3A9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpiZygrZiksdSk6YX0sdS5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpiZygrZiksdSk6c30sdS5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXR5cGVvZiBmPT0iZnVuY3Rpb24iP2Y6YmcoK2YpLHUpOmx9LHUucGFkZGluZ0xlZnQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpiZygrZiksdSk6Y30sdX12YXIgQWt0PU0oKCk9PntiUSgpO0pEKCk7WEQoKTt2USgpfSk7ZnVuY3Rpb24gUGt0KGUsdCxyLG4saSl7dmFyIG89ZS5jaGlsZHJlbixhLHM9by5sZW5ndGgsbCxjPW5ldyBBcnJheShzKzEpO2ZvcihjWzBdPWw9YT0wO2E8czsrK2EpY1thKzFdPWwrPW9bYV0udmFsdWU7dSgwLHMsZS52YWx1ZSx0LHIsbixpKTtmdW5jdGlvbiB1KGgsZixwLGQsZyxfLHkpe2lmKGg+PWYtMSl7dmFyIHg9b1toXTt4LngwPWQseC55MD1nLHgueDE9Xyx4LnkxPXk7cmV0dXJufWZvcih2YXIgYj1jW2hdLFM9cC8yK2IsQz1oKzEsUD1mLTE7QzxQOyl7dmFyIGs9QytQPj4+MTtjW2tdPFM/Qz1rKzE6UD1rfVMtY1tDLTFdPGNbQ10tUyYmaCsxPEMmJi0tQzt2YXIgTz1jW0NdLWIsRD1wLU87aWYoXy1kPnktZyl7dmFyIEI9KGQqRCtfKk8pL3A7dShoLEMsTyxkLGcsQix5KSx1KEMsZixELEIsZyxfLHkpfWVsc2V7dmFyIEk9KGcqRCt5Kk8pL3A7dShoLEMsTyxkLGcsXyxJKSx1KEMsZixELGQsSSxfLHkpfX19dmFyIElrdD1NKCgpPT57fSk7ZnVuY3Rpb24gTGt0KGUsdCxyLG4saSl7KGUuZGVwdGgmMT93ZzpzZikoZSx0LHIsbixpKX12YXIga2t0PU0oKCk9PntWMigpO1lUKCl9KTt2YXIgUmt0LE5rdD1NKCgpPT57VjIoKTtZVCgpO0pEKCk7Umt0PWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuLGksbyxhLHMpe2lmKChsPW4uX3NxdWFyaWZ5KSYmbC5yYXRpbz09PXQpZm9yKHZhciBsLGMsdSxoLGY9LTEscCxkPWwubGVuZ3RoLGc9bi52YWx1ZTsrK2Y8ZDspe2ZvcihjPWxbZl0sdT1jLmNoaWxkcmVuLGg9Yy52YWx1ZT0wLHA9dS5sZW5ndGg7aDxwOysraCljLnZhbHVlKz11W2hdLnZhbHVlO2MuZGljZT9zZihjLGksbyxhLG8rPShzLW8pKmMudmFsdWUvZyk6d2coYyxpLG8saSs9KGEtaSkqYy52YWx1ZS9nLHMpLGctPWMudmFsdWV9ZWxzZSBuLl9zcXVhcmlmeT1sPUVRKHQsbixpLG8sYSxzKSxsLnJhdGlvPXR9cmV0dXJuIHIucmF0aW89ZnVuY3Rpb24obil7cmV0dXJuIGUoKG49K24pPjE/bjoxKX0scn0oTVEpfSk7dmFyIERrdD1NKCgpPT57T0x0KCk7R0QoKTt5a3QoKTt5USgpO2dRKCk7eGt0KCk7TWt0KCk7VGt0KCk7QWt0KCk7SWt0KCk7VjIoKTtZVCgpO2trdCgpO0pEKCk7Tmt0KCl9KTtmdW5jdGlvbiBlZChlLHQscil7ZS5wcm90b3R5cGU9dC5wcm90b3R5cGU9cixyLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gU2coZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKTtmb3IodmFyIG4gaW4gdClyW25dPXRbbl07cmV0dXJuIHJ9dmFyIFFEPU0oKCk9Pnt9KTtmdW5jdGlvbiB1Zigpe31mdW5jdGlvbiB6a3QoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBaUGUoKXtyZXR1cm4gcWt0KHRoaXMpLmZvcm1hdEhzbCgpfWZ1bmN0aW9uIEZrdCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIEVnKGUpe3ZhciB0LHI7cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PUdQZS5leGVjKGUpKT8ocj10WzFdLmxlbmd0aCx0PXBhcnNlSW50KHRbMV0sMTYpLHI9PT02P0JrdCh0KTpyPT09Mz9uZXcgZW8odD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCh0JjE1KTw8NHx0JjE1LDEpOnI9PT04P3RPKHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsKHQmMjU1KS8yNTUpOnI9PT00P3RPKHQ+PjEyJjE1fHQ+PjgmMjQwLHQ+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXx0JjI0MCwoKHQmMTUpPDw0fHQmMTUpLzI1NSk6bnVsbCk6KHQ9V1BlLmV4ZWMoZSkpP25ldyBlbyh0WzFdLHRbMl0sdFszXSwxKToodD1ZUGUuZXhlYyhlKSk/bmV3IGVvKHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLDEpOih0PWpQZS5leGVjKGUpKT90Tyh0WzFdLHRbMl0sdFszXSx0WzRdKToodD1YUGUuZXhlYyhlKSk/dE8odFsxXSoyNTUvMTAwLHRbMl0qMjU1LzEwMCx0WzNdKjI1NS8xMDAsdFs0XSk6KHQ9JFBlLmV4ZWMoZSkpP1VrdCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLDEpOih0PUtQZS5leGVjKGUpKT9Va3QodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCx0WzRdKTpPa3QuaGFzT3duUHJvcGVydHkoZSk/Qmt0KE9rdFtlXSk6ZT09PSJ0cmFuc3BhcmVudCI/bmV3IGVvKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gQmt0KGUpe3JldHVybiBuZXcgZW8oZT4+MTYmMjU1LGU+PjgmMjU1LGUmMjU1LDEpfWZ1bmN0aW9uIHRPKGUsdCxyLG4pe3JldHVybiBuPD0wJiYoZT10PXI9TmFOKSxuZXcgZW8oZSx0LHIsbil9ZnVuY3Rpb24gWFQoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB1Znx8KGU9RWcoZSkpLGU/KGU9ZS5yZ2IoKSxuZXcgZW8oZS5yLGUuZyxlLmIsZS5vcGFjaXR5KSk6bmV3IGVvfWZ1bmN0aW9uIHEyKGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9YVChlKTpuZXcgZW8oZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIGVvKGUsdCxyLG4pe3RoaXMucj0rZSx0aGlzLmc9K3QsdGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBIa3QoKXtyZXR1cm4iIyIrVFEodGhpcy5yKStUUSh0aGlzLmcpK1RRKHRoaXMuYil9ZnVuY3Rpb24gVmt0KCl7dmFyIGU9dGhpcy5vcGFjaXR5O3JldHVybiBlPWlzTmFOKGUpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKSwoZT09PTE/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoZT09PTE/IikiOiIsICIrZSsiKSIpfWZ1bmN0aW9uIFRRKGUpe3JldHVybiBlPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoZSl8fDApKSwoZTwxNj8iMCI6IiIpK2UudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFVrdChlLHQscixuKXtyZXR1cm4gbjw9MD9lPXQ9cj1OYU46cjw9MHx8cj49MT9lPXQ9TmFOOnQ8PTAmJihlPU5hTiksbmV3IGxmKGUsdCxyLG4pfWZ1bmN0aW9uIHFrdChlKXtpZihlIGluc3RhbmNlb2YgbGYpcmV0dXJuIG5ldyBsZihlLmgsZS5zLGUubCxlLm9wYWNpdHkpO2lmKGUgaW5zdGFuY2VvZiB1Znx8KGU9RWcoZSkpLCFlKXJldHVybiBuZXcgbGY7aWYoZSBpbnN0YW5jZW9mIGxmKXJldHVybiBlO2U9ZS5yZ2IoKTt2YXIgdD1lLnIvMjU1LHI9ZS5nLzI1NSxuPWUuYi8yNTUsaT1NYXRoLm1pbih0LHIsbiksbz1NYXRoLm1heCh0LHIsbiksYT1OYU4scz1vLWksbD0obytpKS8yO3JldHVybiBzPyh0PT09bz9hPShyLW4pL3MrKHI8bikqNjpyPT09bz9hPShuLXQpL3MrMjphPSh0LXIpL3MrNCxzLz1sPC41P28raToyLW8taSxhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IGxmKGEscyxsLGUub3BhY2l0eSl9ZnVuY3Rpb24gJFQoZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP3FrdChlKTpuZXcgbGYoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIGxmKGUsdCxyLG4pe3RoaXMuaD0rZSx0aGlzLnM9K3QsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBDUShlLHQscil7cmV0dXJuKGU8NjA/dCsoci10KSplLzYwOmU8MTgwP3I6ZTwyNDA/dCsoci10KSooMjQwLWUpLzYwOnQpKjI1NX12YXIgTWcsV3ksVTIsalQsY2YsR1BlLFdQZSxZUGUsalBlLFhQZSwkUGUsS1BlLE9rdCxlTz1NKCgpPT57UUQoKTtNZz0uNyxXeT0xL01nLFUyPSJcXHMqKFsrLV0/XFxkKylcXHMqIixqVD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixjZj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsR1BlPS9eIyhbMC05YS1mXXszLDh9KSQvLFdQZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbVTIsVTIsVTJdKyJcXCkkIiksWVBlPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tjZixjZixjZl0rIlxcKSQiKSxqUGU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tVMixVMixVMixqVF0rIlxcKSQiKSxYUGU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tjZixjZixjZixqVF0rIlxcKSQiKSwkUGU9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW2pULGNmLGNmXSsiXFwpJCIpLEtQZT1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW2pULGNmLGNmLGpUXSsiXFwpJCIpLE9rdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtlZCh1ZixFZyx7Y29weTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLGUpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDp6a3QsZm9ybWF0SGV4OnprdCxmb3JtYXRIc2w6WlBlLGZvcm1hdFJnYjpGa3QsdG9TdHJpbmc6Rmt0fSk7ZWQoZW8scTIsU2codWYse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/V3k6TWF0aC5wb3coV3ksZSksbmV3IGVvKHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP01nOk1hdGgucG93KE1nLGUpLG5ldyBlbyh0aGlzLnIqZSx0aGlzLmcqZSx0aGlzLmIqZSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OkhrdCxmb3JtYXRIZXg6SGt0LGZvcm1hdFJnYjpWa3QsdG9TdHJpbmc6Vmt0fSkpO2VkKGxmLCRULFNnKHVmLHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP1d5Ok1hdGgucG93KFd5LGUpLG5ldyBsZih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP01nOk1hdGgucG93KE1nLGUpLG5ldyBsZih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaCUzNjArKHRoaXMuaDwwKSozNjAsdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKnQsaT0yKnItbjtyZXR1cm4gbmV3IGVvKENRKGU+PTI0MD9lLTI0MDplKzEyMCxpLG4pLENRKGUsaSxuKSxDUShlPDEyMD9lKzI0MDplLTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuIGU9aXNOYU4oZSk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLChlPT09MT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisodGhpcy5zfHwwKSoxMDArIiUsICIrKHRoaXMubHx8MCkqMTAwKyIlIisoZT09PTE/IikiOiIsICIrZSsiKSIpfX0pKX0pO3ZhciByTyxuTyxBUT1NKCgpPT57ck89TWF0aC5QSS8xODAsbk89MTgwL01hdGguUEl9KTtmdW5jdGlvbiAka3QoZSl7aWYoZSBpbnN0YW5jZW9mIGhmKXJldHVybiBuZXcgaGYoZS5sLGUuYSxlLmIsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgcmQpcmV0dXJuIEtrdChlKTtlIGluc3RhbmNlb2YgZW98fChlPVhUKGUpKTt2YXIgdD1rUShlLnIpLHI9a1EoZS5nKSxuPWtRKGUuYiksaT1QUSgoLjIyMjUwNDUqdCsuNzE2ODc4NipyKy4wNjA2MTY5Km4pL1drdCksbyxhO3JldHVybiB0PT09ciYmcj09PW4/bz1hPWk6KG89UFEoKC40MzYwNzQ3KnQrLjM4NTA2NDkqcisuMTQzMDgwNCpuKS9Ha3QpLGE9UFEoKC4wMTM5MzIyKnQrLjA5NzEwNDUqcisuNzE0MTczMypuKS9Za3QpKSxuZXcgaGYoMTE2KmktMTYsNTAwKihvLWkpLDIwMCooaS1hKSxlLm9wYWNpdHkpfWZ1bmN0aW9uIFcyKGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT8ka3QoZSk6bmV3IGhmKGUsdCxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBoZihlLHQscixuKXt0aGlzLmw9K2UsdGhpcy5hPSt0LHRoaXMuYj0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gUFEoZSl7cmV0dXJuIGU+SlBlP01hdGgucG93KGUsMS8zKTplL1hrdCtqa3R9ZnVuY3Rpb24gSVEoZSl7cmV0dXJuIGU+RzI/ZSplKmU6WGt0KihlLWprdCl9ZnVuY3Rpb24gTFEoZSl7cmV0dXJuIDI1NSooZTw9LjAwMzEzMDg/MTIuOTIqZToxLjA1NSpNYXRoLnBvdyhlLDEvMi40KS0uMDU1KX1mdW5jdGlvbiBrUShlKXtyZXR1cm4oZS89MjU1KTw9LjA0MDQ1P2UvMTIuOTI6TWF0aC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBRUGUoZSl7aWYoZSBpbnN0YW5jZW9mIHJkKXJldHVybiBuZXcgcmQoZS5oLGUuYyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgaGZ8fChlPSRrdChlKSksZS5hPT09MCYmZS5iPT09MClyZXR1cm4gbmV3IHJkKE5hTiwwPGUubCYmZS5sPDEwMD8wOk5hTixlLmwsZS5vcGFjaXR5KTt2YXIgdD1NYXRoLmF0YW4yKGUuYixlLmEpKm5PO3JldHVybiBuZXcgcmQodDwwP3QrMzYwOnQsTWF0aC5zcXJ0KGUuYSplLmErZS5iKmUuYiksZS5sLGUub3BhY2l0eSl9ZnVuY3Rpb24gS1QoZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP1FQZShlKTpuZXcgcmQoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIHJkKGUsdCxyLG4pe3RoaXMuaD0rZSx0aGlzLmM9K3QsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBLa3QoZSl7aWYoaXNOYU4oZS5oKSlyZXR1cm4gbmV3IGhmKGUubCwwLDAsZS5vcGFjaXR5KTt2YXIgdD1lLmgqck87cmV0dXJuIG5ldyBoZihlLmwsTWF0aC5jb3ModCkqZS5jLE1hdGguc2luKHQpKmUuYyxlLm9wYWNpdHkpfXZhciBpTyxHa3QsV2t0LFlrdCxqa3QsRzIsWGt0LEpQZSxaa3Q9TSgoKT0+e1FEKCk7ZU8oKTtBUSgpO2lPPTE4LEdrdD0uOTY0MjIsV2t0PTEsWWt0PS44MjUyMSxqa3Q9NC8yOSxHMj02LzI5LFhrdD0zKkcyKkcyLEpQZT1HMipHMipHMjtlZChoZixXMixTZyh1Zix7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBoZih0aGlzLmwraU8qKGU9PW51bGw/MTplKSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGhmKHRoaXMubC1pTyooZT09bnVsbD8xOmUpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGU9KHRoaXMubCsxNikvMTE2LHQ9aXNOYU4odGhpcy5hKT9lOmUrdGhpcy5hLzUwMCxyPWlzTmFOKHRoaXMuYik/ZTplLXRoaXMuYi8yMDA7cmV0dXJuIHQ9R2t0KklRKHQpLGU9V2t0KklRKGUpLHI9WWt0KklRKHIpLG5ldyBlbyhMUSgzLjEzMzg1NjEqdC0xLjYxNjg2NjcqZS0uNDkwNjE0NipyKSxMUSgtLjk3ODc2ODQqdCsxLjkxNjE0MTUqZSsuMDMzNDU0KnIpLExRKC4wNzE5NDUzKnQtLjIyODk5MTQqZSsxLjQwNTI0MjcqciksdGhpcy5vcGFjaXR5KX19KSk7ZWQocmQsS1QsU2codWYse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgcmQodGhpcy5oLHRoaXMuYyx0aGlzLmwraU8qKGU9PW51bGw/MTplKSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyByZCh0aGlzLmgsdGhpcy5jLHRoaXMubC1pTyooZT09bnVsbD8xOmUpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBLa3QodGhpcykucmdiKCl9fSkpfSk7ZnVuY3Rpb24gdDZlKGUpe2lmKGUgaW5zdGFuY2VvZiBZeSlyZXR1cm4gbmV3IFl5KGUuaCxlLnMsZS5sLGUub3BhY2l0eSk7ZSBpbnN0YW5jZW9mIGVvfHwoZT1YVChlKSk7dmFyIHQ9ZS5yLzI1NSxyPWUuZy8yNTUsbj1lLmIvMjU1LGk9KHQ4dCpuK0prdCp0LVFrdCpyKS8odDh0K0prdC1Ra3QpLG89bi1pLGE9KFpUKihyLWkpLU5RKm8pL29PLHM9TWF0aC5zcXJ0KGEqYStvKm8pLyhaVCppKigxLWkpKSxsPXM/TWF0aC5hdGFuMihhLG8pKm5PLTEyMDpOYU47cmV0dXJuIG5ldyBZeShsPDA/bCszNjA6bCxzLGksZS5vcGFjaXR5KX1mdW5jdGlvbiBZMihlLHQscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/dDZlKGUpOm5ldyBZeShlLHQscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gWXkoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMucz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufXZhciBlOHQsUlEsTlEsb08sWlQsSmt0LFFrdCx0OHQscjh0PU0oKCk9PntRRCgpO2VPKCk7QVEoKTtlOHQ9LS4xNDg2MSxSUT0xLjc4Mjc3LE5RPS0uMjkyMjcsb089LS45MDY0OSxaVD0xLjk3Mjk0LEprdD1aVCpvTyxRa3Q9WlQqUlEsdDh0PVJRKk5RLW9PKmU4dDtlZChZeSxZMixTZyh1Zix7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9XeTpNYXRoLnBvdyhXeSxlKSxuZXcgWXkodGhpcy5oLHRoaXMucyx0aGlzLmwqZSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9NZzpNYXRoLnBvdyhNZyxlKSxuZXcgWXkodGhpcy5oLHRoaXMucyx0aGlzLmwqZSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgZT1pc05hTih0aGlzLmgpPzA6KHRoaXMuaCsxMjApKnJPLHQ9K3RoaXMubCxyPWlzTmFOKHRoaXMucyk/MDp0aGlzLnMqdCooMS10KSxuPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSk7cmV0dXJuIG5ldyBlbygyNTUqKHQrciooZTh0Km4rUlEqaSkpLDI1NSoodCtyKihOUSpuK29PKmkpKSwyNTUqKHQrciooWlQqbikpLHRoaXMub3BhY2l0eSl9fSkpfSk7dmFyIGp5PU0oKCk9PntlTygpO1prdCgpO3I4dCgpfSk7ZnVuY3Rpb24gRFEoZSx0LHIsbixpKXt2YXIgbz1lKmUsYT1vKmU7cmV0dXJuKCgxLTMqZSszKm8tYSkqdCsoNC02Km8rMyphKSpyKygxKzMqZSszKm8tMyphKSpuK2EqaSkvNn1mdW5jdGlvbiBhTyhlKXt2YXIgdD1lLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1yPD0wP3I9MDpyPj0xPyhyPTEsdC0xKTpNYXRoLmZsb29yKHIqdCksaT1lW25dLG89ZVtuKzFdLGE9bj4wP2Vbbi0xXToyKmktbyxzPW48dC0xP2VbbisyXToyKm8taTtyZXR1cm4gRFEoKHItbi90KSp0LGEsaSxvLHMpfX12YXIgc089TSgoKT0+e30pO2Z1bmN0aW9uIGxPKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1NYXRoLmZsb29yKCgociU9MSk8MD8rK3I6cikqdCksaT1lWyhuK3QtMSkldF0sbz1lW24ldF0sYT1lWyhuKzEpJXRdLHM9ZVsobisyKSV0XTtyZXR1cm4gRFEoKHItbi90KSp0LGksbyxhLHMpfX12YXIgT1E9TSgoKT0+e3NPKCl9KTtmdW5jdGlvbiBqMihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIHpRPU0oKCk9Pnt9KTtmdW5jdGlvbiBuOHQoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUrcip0fX1mdW5jdGlvbiBlNmUoZSx0LHIpe3JldHVybiBlPU1hdGgucG93KGUsciksdD1NYXRoLnBvdyh0LHIpLWUscj0xL3IsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucG93KGUrbip0LHIpfX1mdW5jdGlvbiBYMihlLHQpe3ZhciByPXQtZTtyZXR1cm4gcj9uOHQoZSxyPjE4MHx8cjwtMTgwP3ItMzYwKk1hdGgucm91bmQoci8zNjApOnIpOmoyKGlzTmFOKGUpP3Q6ZSl9ZnVuY3Rpb24gaTh0KGUpe3JldHVybihlPStlKT09MT9RbjpmdW5jdGlvbih0LHIpe3JldHVybiByLXQ/ZTZlKHQscixlKTpqMihpc05hTih0KT9yOnQpfX1mdW5jdGlvbiBRbihlLHQpe3ZhciByPXQtZTtyZXR1cm4gcj9uOHQoZSxyKTpqMihpc05hTihlKT90OmUpfXZhciAkMj1NKCgpPT57elEoKX0pO2Z1bmN0aW9uIG84dChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkociksYSxzO2ZvcihhPTA7YTxyOysrYSlzPXEyKHRbYV0pLG5bYV09cy5yfHwwLGlbYV09cy5nfHwwLG9bYV09cy5ifHwwO3JldHVybiBuPWUobiksaT1lKGkpLG89ZShvKSxzLm9wYWNpdHk9MSxmdW5jdGlvbihsKXtyZXR1cm4gcy5yPW4obCkscy5nPWkobCkscy5iPW8obCkscysiIn19fXZhciBKVCxhOHQsczh0LEZRPU0oKCk9PntqeSgpO3NPKCk7T1EoKTskMigpO0pUPWZ1bmN0aW9uIGUodCl7dmFyIHI9aTh0KHQpO2Z1bmN0aW9uIG4oaSxvKXt2YXIgYT1yKChpPXEyKGkpKS5yLChvPXEyKG8pKS5yKSxzPXIoaS5nLG8uZyksbD1yKGkuYixvLmIpLGM9UW4oaS5vcGFjaXR5LG8ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBpLnI9YSh1KSxpLmc9cyh1KSxpLmI9bCh1KSxpLm9wYWNpdHk9Yyh1KSxpKyIifX1yZXR1cm4gbi5nYW1tYT1lLG59KDEpO2E4dD1vOHQoYU8pLHM4dD1vOHQobE8pfSk7ZnVuY3Rpb24gY08oZSx0KXt2YXIgcj10P3QubGVuZ3RoOjAsbj1lP01hdGgubWluKHIsZS5sZW5ndGgpOjAsaT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkociksYTtmb3IoYT0wO2E8bjsrK2EpaVthXT1LMihlW2FdLHRbYV0pO2Zvcig7YTxyOysrYSlvW2FdPXRbYV07cmV0dXJuIGZ1bmN0aW9uKHMpe2ZvcihhPTA7YTxuOysrYSlvW2FdPWlbYV0ocyk7cmV0dXJuIG99fXZhciBCUT1NKCgpPT57dU8oKX0pO2Z1bmN0aW9uIGhPKGUsdCl7dmFyIHI9bmV3IERhdGU7cmV0dXJuIGU9K2UsdC09ZSxmdW5jdGlvbihuKXtyZXR1cm4gci5zZXRUaW1lKGUrdCpuKSxyfX12YXIgSFE9TSgoKT0+e30pO2Z1bmN0aW9uIENzKGUsdCl7cmV0dXJuIGU9K2UsdC09ZSxmdW5jdGlvbihyKXtyZXR1cm4gZSt0KnJ9fXZhciBRVD1NKCgpPT57fSk7ZnVuY3Rpb24gZk8oZSx0KXt2YXIgcj17fSxuPXt9LGk7KGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpJiYoZT17fSksKHQ9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCIpJiYodD17fSk7Zm9yKGkgaW4gdClpIGluIGU/cltpXT1LMihlW2ldLHRbaV0pOm5baV09dFtpXTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKGkgaW4gciluW2ldPXJbaV0obyk7cmV0dXJuIG59fXZhciBWUT1NKCgpPT57dU8oKX0pO2Z1bmN0aW9uIHI2ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19ZnVuY3Rpb24gbjZlKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSh0KSsiIn19ZnVuY3Rpb24gcE8oZSx0KXt2YXIgcj1xUS5sYXN0SW5kZXg9VVEubGFzdEluZGV4PTAsbixpLG8sYT0tMSxzPVtdLGw9W107Zm9yKGU9ZSsiIix0PXQrIiI7KG49cVEuZXhlYyhlKSkmJihpPVVRLmV4ZWModCkpOykobz1pLmluZGV4KT5yJiYobz10LnNsaWNlKHIsbyksc1thXT9zW2FdKz1vOnNbKythXT1vKSwobj1uWzBdKT09PShpPWlbMF0pP3NbYV0/c1thXSs9aTpzWysrYV09aTooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpDcyhuLGkpfSkpLHI9VVEubGFzdEluZGV4O3JldHVybiByPHQubGVuZ3RoJiYobz10LnNsaWNlKHIpLHNbYV0/c1thXSs9bzpzWysrYV09bykscy5sZW5ndGg8Mj9sWzBdP242ZShsWzBdLngpOnI2ZSh0KToodD1sLmxlbmd0aCxmdW5jdGlvbihjKXtmb3IodmFyIHU9MCxoO3U8dDsrK3Upc1soaD1sW3VdKS5pXT1oLngoYyk7cmV0dXJuIHMuam9pbigiIil9KX12YXIgcVEsVVEsR1E9TSgoKT0+e1FUKCk7cVE9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLFVRPW5ldyBSZWdFeHAocVEuc291cmNlLCJnIil9KTtmdW5jdGlvbiBLMihlLHQpe3ZhciByPXR5cGVvZiB0LG47cmV0dXJuIHQ9PW51bGx8fHI9PT0iYm9vbGVhbiI/ajIodCk6KHI9PT0ibnVtYmVyIj9DczpyPT09InN0cmluZyI/KG49RWcodCkpPyh0PW4sSlQpOnBPOnQgaW5zdGFuY2VvZiBFZz9KVDp0IGluc3RhbmNlb2YgRGF0ZT9oTzpBcnJheS5pc0FycmF5KHQpP2NPOnR5cGVvZiB0LnZhbHVlT2YhPSJmdW5jdGlvbiImJnR5cGVvZiB0LnRvU3RyaW5nIT0iZnVuY3Rpb24ifHxpc05hTih0KT9mTzpDcykoZSx0KX12YXIgdU89TSgoKT0+e2p5KCk7RlEoKTtCUSgpO0hRKCk7UVQoKTtWUSgpO0dRKCk7elEoKX0pO2Z1bmN0aW9uIGw4dChlLHQpe3JldHVybiBlPStlLHQtPWUsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucm91bmQoZSt0KnIpfX12YXIgYzh0PU0oKCk9Pnt9KTtmdW5jdGlvbiBXUShlLHQscixuLGksbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydChlKmUrdCp0KSkmJihlLz1hLHQvPWEpLChsPWUqcit0Km4pJiYoci09ZSpsLG4tPXQqbCksKHM9TWF0aC5zcXJ0KHIqcituKm4pKSYmKHIvPXMsbi89cyxsLz1zKSxlKm48dCpyJiYoZT0tZSx0PS10LGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIodCxlKSp1OHQsc2tld1g6TWF0aC5hdGFuKGwpKnU4dCxzY2FsZVg6YSxzY2FsZVk6c319dmFyIHU4dCxkTyxoOHQ9TSgoKT0+e3U4dD0xODAvTWF0aC5QSSxkTz17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfX0pO2Z1bmN0aW9uIHA4dChlKXtyZXR1cm4gZT09PSJub25lIj9kTzoodEN8fCh0Qz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxZUT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZjh0PWRvY3VtZW50LmRlZmF1bHRWaWV3KSx0Qy5zdHlsZS50cmFuc2Zvcm09ZSxlPWY4dC5nZXRDb21wdXRlZFN0eWxlKFlRLmFwcGVuZENoaWxkKHRDKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxZUS5yZW1vdmVDaGlsZCh0QyksZT1lLnNsaWNlKDcsLTEpLnNwbGl0KCIsIiksV1EoK2VbMF0sK2VbMV0sK2VbMl0sK2VbM10sK2VbNF0sK2VbNV0pKX1mdW5jdGlvbiBkOHQoZSl7cmV0dXJuIGU9PW51bGw/ZE86KG1PfHwobU89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksbU8uc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLGUpLChlPW1PLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpPyhlPWUubWF0cml4LFdRKGUuYSxlLmIsZS5jLGUuZCxlLmUsZS5mKSk6ZE8pfXZhciB0QyxZUSxmOHQsbU8sbTh0PU0oKCk9PntoOHQoKX0pO2Z1bmN0aW9uIGc4dChlLHQscixuKXtmdW5jdGlvbiBpKGMpe3JldHVybiBjLmxlbmd0aD9jLnBvcCgpKyIgIjoiIn1mdW5jdGlvbiBvKGMsdSxoLGYscCxkKXtpZihjIT09aHx8dSE9PWYpe3ZhciBnPXAucHVzaCgidHJhbnNsYXRlKCIsbnVsbCx0LG51bGwscik7ZC5wdXNoKHtpOmctNCx4OkNzKGMsaCl9LHtpOmctMix4OkNzKHUsZil9KX1lbHNlKGh8fGYpJiZwLnB1c2goInRyYW5zbGF0ZSgiK2grdCtmK3IpfWZ1bmN0aW9uIGEoYyx1LGgsZil7YyE9PXU/KGMtdT4xODA/dSs9MzYwOnUtYz4xODAmJihjKz0zNjApLGYucHVzaCh7aTpoLnB1c2goaShoKSsicm90YXRlKCIsbnVsbCxuKS0yLHg6Q3MoYyx1KX0pKTp1JiZoLnB1c2goaShoKSsicm90YXRlKCIrdStuKX1mdW5jdGlvbiBzKGMsdSxoLGYpe2MhPT11P2YucHVzaCh7aTpoLnB1c2goaShoKSsic2tld1goIixudWxsLG4pLTIseDpDcyhjLHUpfSk6dSYmaC5wdXNoKGkoaCkrInNrZXdYKCIrdStuKX1mdW5jdGlvbiBsKGMsdSxoLGYscCxkKXtpZihjIT09aHx8dSE9PWYpe3ZhciBnPXAucHVzaChpKHApKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtkLnB1c2goe2k6Zy00LHg6Q3MoYyxoKX0se2k6Zy0yLHg6Q3ModSxmKX0pfWVsc2UoaCE9PTF8fGYhPT0xKSYmcC5wdXNoKGkocCkrInNjYWxlKCIraCsiLCIrZisiKSIpfXJldHVybiBmdW5jdGlvbihjLHUpe3ZhciBoPVtdLGY9W107cmV0dXJuIGM9ZShjKSx1PWUodSksbyhjLnRyYW5zbGF0ZVgsYy50cmFuc2xhdGVZLHUudHJhbnNsYXRlWCx1LnRyYW5zbGF0ZVksaCxmKSxhKGMucm90YXRlLHUucm90YXRlLGgsZikscyhjLnNrZXdYLHUuc2tld1gsaCxmKSxsKGMuc2NhbGVYLGMuc2NhbGVZLHUuc2NhbGVYLHUuc2NhbGVZLGgsZiksYz11PW51bGwsZnVuY3Rpb24ocCl7Zm9yKHZhciBkPS0xLGc9Zi5sZW5ndGgsXzsrK2Q8ZzspaFsoXz1mW2RdKS5pXT1fLngocCk7cmV0dXJuIGguam9pbigiIil9fX12YXIgXzh0LHk4dCx2OHQ9TSgoKT0+e1FUKCk7bTh0KCk7Xzh0PWc4dChwOHQsInB4LCAiLCJweCkiLCJkZWcpIikseTh0PWc4dChkOHQsIiwgIiwiKSIsIikiKX0pO2Z1bmN0aW9uIGI4dChlKXtyZXR1cm4oKGU9TWF0aC5leHAoZSkpKzEvZSkvMn1mdW5jdGlvbiBvNmUoZSl7cmV0dXJuKChlPU1hdGguZXhwKGUpKS0xL2UpLzJ9ZnVuY3Rpb24gYTZlKGUpe3JldHVybigoZT1NYXRoLmV4cCgyKmUpKS0xKS8oZSsxKX1mdW5jdGlvbiB3OHQoZSx0KXt2YXIgcj1lWzBdLG49ZVsxXSxpPWVbMl0sbz10WzBdLGE9dFsxXSxzPXRbMl0sbD1vLXIsYz1hLW4sdT1sKmwrYypjLGgsZjtpZih1PGk2ZSlmPU1hdGgubG9nKHMvaSkvZUMsaD1mdW5jdGlvbih4KXtyZXR1cm5bcit4Kmwsbit4KmMsaSpNYXRoLmV4cChlQyp4KmYpXX07ZWxzZXt2YXIgcD1NYXRoLnNxcnQodSksZD0ocypzLWkqaSt4OHQqdSkvKDIqaSpqUSpwKSxnPShzKnMtaSppLXg4dCp1KS8oMipzKmpRKnApLF89TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSx5PU1hdGgubG9nKE1hdGguc3FydChnKmcrMSktZyk7Zj0oeS1fKS9lQyxoPWZ1bmN0aW9uKHgpe3ZhciBiPXgqZixTPWI4dChfKSxDPWkvKGpRKnApKihTKmE2ZShlQypiK18pLW82ZShfKSk7cmV0dXJuW3IrQypsLG4rQypjLGkqUy9iOHQoZUMqYitfKV19fXJldHVybiBoLmR1cmF0aW9uPWYqMWUzLGh9dmFyIGVDLGpRLHg4dCxpNmUsUzh0PU0oKCk9PntlQz1NYXRoLlNRUlQyLGpRPTIseDh0PTQsaTZlPTFlLTEyfSk7ZnVuY3Rpb24gTTh0KGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuPWUoKHQ9JFQodCkpLmgsKHI9JFQocikpLmgpLGk9UW4odC5zLHIucyksbz1Rbih0Lmwsci5sKSxhPVFuKHQub3BhY2l0eSxyLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gdC5oPW4ocyksdC5zPWkocyksdC5sPW8ocyksdC5vcGFjaXR5PWEocyksdCsiIn19fXZhciBFOHQsVDh0LEM4dD1NKCgpPT57ankoKTskMigpO0U4dD1NOHQoWDIpLFQ4dD1NOHQoUW4pfSk7ZnVuY3Rpb24gWFEoZSx0KXt2YXIgcj1RbigoZT1XMihlKSkubCwodD1XMih0KSkubCksbj1RbihlLmEsdC5hKSxpPVFuKGUuYix0LmIpLG89UW4oZS5vcGFjaXR5LHQub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBlLmw9cihhKSxlLmE9bihhKSxlLmI9aShhKSxlLm9wYWNpdHk9byhhKSxlKyIifX12YXIgQTh0PU0oKCk9PntqeSgpOyQyKCl9KTtmdW5jdGlvbiBQOHQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7dmFyIG49ZSgodD1LVCh0KSkuaCwocj1LVChyKSkuaCksaT1Rbih0LmMsci5jKSxvPVFuKHQubCxyLmwpLGE9UW4odC5vcGFjaXR5LHIub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiB0Lmg9bihzKSx0LmM9aShzKSx0Lmw9byhzKSx0Lm9wYWNpdHk9YShzKSx0KyIifX19dmFyIEk4dCxMOHQsazh0PU0oKCk9PntqeSgpOyQyKCk7STh0PVA4dChYMiksTDh0PVA4dChRbil9KTtmdW5jdGlvbiBSOHQoZSl7cmV0dXJuIGZ1bmN0aW9uIHQocil7cj0rcjtmdW5jdGlvbiBuKGksbyl7dmFyIGE9ZSgoaT1ZMihpKSkuaCwobz1ZMihvKSkuaCkscz1RbihpLnMsby5zKSxsPVFuKGkubCxvLmwpLGM9UW4oaS5vcGFjaXR5LG8ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBpLmg9YSh1KSxpLnM9cyh1KSxpLmw9bChNYXRoLnBvdyh1LHIpKSxpLm9wYWNpdHk9Yyh1KSxpKyIifX1yZXR1cm4gbi5nYW1tYT10LG59KDEpfXZhciBOOHQsRDh0LE84dD1NKCgpPT57ankoKTskMigpO044dD1SOHQoWDIpLEQ4dD1SOHQoUW4pfSk7ZnVuY3Rpb24gejh0KGUsdCl7Zm9yKHZhciByPW5ldyBBcnJheSh0KSxuPTA7bjx0OysrbilyW25dPWUobi8odC0xKSk7cmV0dXJuIHJ9dmFyIEY4dD1NKCgpPT57fSk7dmFyIEI4dD1NKCgpPT57dU8oKTtCUSgpO3NPKCk7T1EoKTtIUSgpO1FUKCk7VlEoKTtjOHQoKTtHUSgpO3Y4dCgpO1M4dCgpO0ZRKCk7Qzh0KCk7QTh0KCk7azh0KCk7Tzh0KCk7Rjh0KCl9KTtmdW5jdGlvbiBaUSgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIEg4dCgpe3JldHVybiBuZXcgWlF9dmFyICRRLEtRLFh5LHM2ZSxWOHQsVTh0PU0oKCk9PnskUT1NYXRoLlBJLEtRPTIqJFEsWHk9MWUtNixzNmU9S1EtWHk7WlEucHJvdG90eXBlPUg4dC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlpRLG1vdmVUbzpmdW5jdGlvbihlLHQpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rZSkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX3gxIT09bnVsbCYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuXys9IloiKX0sbGluZVRvOmZ1bmN0aW9uKGUsdCl7dGhpcy5fKz0iTCIrKHRoaXMuX3gxPStlKSsiLCIrKHRoaXMuX3kxPSt0KX0scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbihlLHQscixuKXt0aGlzLl8rPSJRIisgK2UrIiwiKyArdCsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kxPStuKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbihlLHQscixuLGksbyl7dGhpcy5fKz0iQyIrICtlKyIsIisgK3QrIiwiKyArcisiLCIrICtuKyIsIisodGhpcy5feDE9K2kpKyIsIisodGhpcy5feTE9K28pfSxhcmNUbzpmdW5jdGlvbihlLHQscixuLGkpe2U9K2UsdD0rdCxyPStyLG49K24saT0raTt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHM9ci1lLGw9bi10LGM9by1lLHU9YS10LGg9YypjK3UqdTtpZihpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIraSk7aWYodGhpcy5feDE9PT1udWxsKXRoaXMuXys9Ik0iKyh0aGlzLl94MT1lKSsiLCIrKHRoaXMuX3kxPXQpO2Vsc2UgaWYoaD5YeSlpZighKE1hdGguYWJzKHUqcy1sKmMpPlh5KXx8IWkpdGhpcy5fKz0iTCIrKHRoaXMuX3gxPWUpKyIsIisodGhpcy5feTE9dCk7ZWxzZXt2YXIgZj1yLW8scD1uLWEsZD1zKnMrbCpsLGc9ZipmK3AqcCxfPU1hdGguc3FydChkKSx5PU1hdGguc3FydChoKSx4PWkqTWF0aC50YW4oKCRRLU1hdGguYWNvcygoZCtoLWcpLygyKl8qeSkpKS8yKSxiPXgveSxTPXgvXztNYXRoLmFicyhiLTEpPlh5JiYodGhpcy5fKz0iTCIrKGUrYipjKSsiLCIrKHQrYip1KSksdGhpcy5fKz0iQSIraSsiLCIraSsiLDAsMCwiKyArKHUqZj5jKnApKyIsIisodGhpcy5feDE9ZStTKnMpKyIsIisodGhpcy5feTE9dCtTKmwpfX0sYXJjOmZ1bmN0aW9uKGUsdCxyLG4saSxvKXtlPStlLHQ9K3Qscj0rcjt2YXIgYT1yKk1hdGguY29zKG4pLHM9cipNYXRoLnNpbihuKSxsPWUrYSxjPXQrcyx1PTFebyxoPW8/bi1pOmktbjtpZihyPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrcik7dGhpcy5feDE9PT1udWxsP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPlh5fHxNYXRoLmFicyh0aGlzLl95MS1jKT5YeSkmJih0aGlzLl8rPSJMIitsKyIsIitjKSxyJiYoaDwwJiYoaD1oJUtRK0tRKSxoPnM2ZT90aGlzLl8rPSJBIityKyIsIityKyIsMCwxLCIrdSsiLCIrKGUtYSkrIiwiKyh0LXMpKyJBIityKyIsIityKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5YeSYmKHRoaXMuXys9IkEiK3IrIiwiK3IrIiwwLCIrICsoaD49JFEpKyIsIit1KyIsIisodGhpcy5feDE9ZStyKk1hdGguY29zKGkpKSsiLCIrKHRoaXMuX3kxPXQrcipNYXRoLnNpbihpKSkpKX0scmVjdDpmdW5jdGlvbihlLHQscixuKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K2UpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K3QpKyJoIisgK3IrInYiKyArbisiaCIrLXIrIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTtWOHQ9SDh0fSk7dmFyIHE4dD1NKCgpPT57VTh0KCl9KTtmdW5jdGlvbiBHOHQoZSl7Zm9yKHZhciB0PS0xLHI9ZS5sZW5ndGgsbixpPWVbci0xXSxvPTA7Kyt0PHI7KW49aSxpPWVbdF0sbys9blsxXSppWzBdLW5bMF0qaVsxXTtyZXR1cm4gby8yfXZhciBXOHQ9TSgoKT0+e30pO2Z1bmN0aW9uIFk4dChlKXtmb3IodmFyIHQ9LTEscj1lLmxlbmd0aCxuPTAsaT0wLG8sYT1lW3ItMV0scyxsPTA7Kyt0PHI7KW89YSxhPWVbdF0sbCs9cz1vWzBdKmFbMV0tYVswXSpvWzFdLG4rPShvWzBdK2FbMF0pKnMsaSs9KG9bMV0rYVsxXSkqcztyZXR1cm4gbCo9Myxbbi9sLGkvbF19dmFyIGo4dD1NKCgpPT57fSk7ZnVuY3Rpb24gWDh0KGUsdCxyKXtyZXR1cm4odFswXS1lWzBdKSooclsxXS1lWzFdKS0odFsxXS1lWzFdKSooclswXS1lWzBdKX12YXIgJDh0PU0oKCk9Pnt9KTtmdW5jdGlvbiBsNmUoZSx0KXtyZXR1cm4gZVswXS10WzBdfHxlWzFdLXRbMV19ZnVuY3Rpb24gSzh0KGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPVswLDFdLG49MixpPTI7aTx0OysraSl7Zm9yKDtuPjEmJlg4dChlW3Jbbi0yXV0sZVtyW24tMV1dLGVbaV0pPD0wOyktLW47cltuKytdPWl9cmV0dXJuIHIuc2xpY2UoMCxuKX1mdW5jdGlvbiBaOHQoZSl7aWYoKHI9ZS5sZW5ndGgpPDMpcmV0dXJuIG51bGw7dmFyIHQscixuPW5ldyBBcnJheShyKSxpPW5ldyBBcnJheShyKTtmb3IodD0wO3Q8cjsrK3Qpblt0XT1bK2VbdF1bMF0sK2VbdF1bMV0sdF07Zm9yKG4uc29ydChsNmUpLHQ9MDt0PHI7Kyt0KWlbdF09W25bdF1bMF0sLW5bdF1bMV1dO3ZhciBvPUs4dChuKSxhPUs4dChpKSxzPWFbMF09PT1vWzBdLGw9YVthLmxlbmd0aC0xXT09PW9bby5sZW5ndGgtMV0sYz1bXTtmb3IodD1vLmxlbmd0aC0xO3Q+PTA7LS10KWMucHVzaChlW25bb1t0XV1bMl1dKTtmb3IodD0rczt0PGEubGVuZ3RoLWw7Kyt0KWMucHVzaChlW25bYVt0XV1bMl1dKTtyZXR1cm4gY312YXIgSjh0PU0oKCk9PnskOHQoKX0pO2Z1bmN0aW9uIFE4dChlLHQpe2Zvcih2YXIgcj1lLmxlbmd0aCxuPWVbci0xXSxpPXRbMF0sbz10WzFdLGE9blswXSxzPW5bMV0sbCxjLHU9ITEsaD0wO2g8cjsrK2gpbj1lW2hdLGw9blswXSxjPW5bMV0sYz5vIT1zPm8mJmk8KGEtbCkqKG8tYykvKHMtYykrbCYmKHU9IXUpLGE9bCxzPWM7cmV0dXJuIHV9dmFyIHRSdD1NKCgpPT57fSk7ZnVuY3Rpb24gZVJ0KGUpe2Zvcih2YXIgdD0tMSxyPWUubGVuZ3RoLG49ZVtyLTFdLGksbyxhPW5bMF0scz1uWzFdLGw9MDsrK3Q8cjspaT1hLG89cyxuPWVbdF0sYT1uWzBdLHM9blsxXSxpLT1hLG8tPXMsbCs9TWF0aC5zcXJ0KGkqaStvKm8pO3JldHVybiBsfXZhciByUnQ9TSgoKT0+e30pO3ZhciBuUnQ9TSgoKT0+e1c4dCgpO2o4dCgpO0o4dCgpO3RSdCgpO3JSdCgpfSk7ZnVuY3Rpb24gaVJ0KGUpe3ZhciB0PSt0aGlzLl94LmNhbGwobnVsbCxlKSxyPSt0aGlzLl95LmNhbGwobnVsbCxlKTtyZXR1cm4gb1J0KHRoaXMuY292ZXIodCxyKSx0LHIsZSl9ZnVuY3Rpb24gb1J0KGUsdCxyLG4pe2lmKGlzTmFOKHQpfHxpc05hTihyKSlyZXR1cm4gZTt2YXIgaSxvPWUuX3Jvb3QsYT17ZGF0YTpufSxzPWUuX3gwLGw9ZS5feTAsYz1lLl94MSx1PWUuX3kxLGgsZixwLGQsZyxfLHkseDtpZighbylyZXR1cm4gZS5fcm9vdD1hLGU7Zm9yKDtvLmxlbmd0aDspaWYoKGc9dD49KGg9KHMrYykvMikpP3M9aDpjPWgsKF89cj49KGY9KGwrdSkvMikpP2w9Zjp1PWYsaT1vLCEobz1vW3k9Xzw8MXxnXSkpcmV0dXJuIGlbeV09YSxlO2lmKHA9K2UuX3guY2FsbChudWxsLG8uZGF0YSksZD0rZS5feS5jYWxsKG51bGwsby5kYXRhKSx0PT09cCYmcj09PWQpcmV0dXJuIGEubmV4dD1vLGk/aVt5XT1hOmUuX3Jvb3Q9YSxlO2RvIGk9aT9pW3ldPW5ldyBBcnJheSg0KTplLl9yb290PW5ldyBBcnJheSg0KSwoZz10Pj0oaD0ocytjKS8yKSk/cz1oOmM9aCwoXz1yPj0oZj0obCt1KS8yKSk/bD1mOnU9Zjt3aGlsZSgoeT1fPDwxfGcpPT09KHg9KGQ+PWYpPDwxfHA+PWgpKTtyZXR1cm4gaVt4XT1vLGlbeV09YSxlfWZ1bmN0aW9uIGFSdChlKXt2YXIgdCxyLG49ZS5sZW5ndGgsaSxvLGE9bmV3IEFycmF5KG4pLHM9bmV3IEFycmF5KG4pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKHI9MDtyPG47KytyKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLHQ9ZVtyXSkpfHxpc05hTihvPSt0aGlzLl95LmNhbGwobnVsbCx0KSl8fChhW3JdPWksc1tyXT1vLGk8bCYmKGw9aSksaT51JiYodT1pKSxvPGMmJihjPW8pLG8+aCYmKGg9bykpO2Zvcih1PGwmJihsPXRoaXMuX3gwLHU9dGhpcy5feDEpLGg8YyYmKGM9dGhpcy5feTAsaD10aGlzLl95MSksdGhpcy5jb3ZlcihsLGMpLmNvdmVyKHUsaCkscj0wO3I8bjsrK3Ipb1J0KHRoaXMsYVtyXSxzW3JdLGVbcl0pO3JldHVybiB0aGlzfXZhciBzUnQ9TSgoKT0+e30pO2Z1bmN0aW9uIGxSdChlLHQpe2lmKGlzTmFOKGU9K2UpfHxpc05hTih0PSt0KSlyZXR1cm4gdGhpczt2YXIgcj10aGlzLl94MCxuPXRoaXMuX3kwLGk9dGhpcy5feDEsbz10aGlzLl95MTtpZihpc05hTihyKSlpPShyPU1hdGguZmxvb3IoZSkpKzEsbz0obj1NYXRoLmZsb29yKHQpKSsxO2Vsc2UgaWYocj5lfHxlPml8fG4+dHx8dD5vKXt2YXIgYT1pLXIscz10aGlzLl9yb290LGwsYztzd2l0Y2goYz0odDwobitvKS8yKTw8MXxlPChyK2kpLzIpe2Nhc2UgMDp7ZG8gbD1uZXcgQXJyYXkoNCksbFtjXT1zLHM9bDt3aGlsZShhKj0yLGk9cithLG89bithLGU+aXx8dD5vKTticmVha31jYXNlIDE6e2RvIGw9bmV3IEFycmF5KDQpLGxbY109cyxzPWw7d2hpbGUoYSo9MixyPWktYSxvPW4rYSxyPmV8fHQ+byk7YnJlYWt9Y2FzZSAyOntkbyBsPW5ldyBBcnJheSg0KSxsW2NdPXMscz1sO3doaWxlKGEqPTIsaT1yK2Esbj1vLWEsZT5pfHxuPnQpO2JyZWFrfWNhc2UgMzp7ZG8gbD1uZXcgQXJyYXkoNCksbFtjXT1zLHM9bDt3aGlsZShhKj0yLHI9aS1hLG49by1hLHI+ZXx8bj50KTticmVha319dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PXMpfWVsc2UgcmV0dXJuIHRoaXM7cmV0dXJuIHRoaXMuX3gwPXIsdGhpcy5feTA9bix0aGlzLl94MT1pLHRoaXMuX3kxPW8sdGhpc312YXIgY1J0PU0oKCk9Pnt9KTtmdW5jdGlvbiB1UnQoKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbih0KXtpZighdC5sZW5ndGgpZG8gZS5wdXNoKHQuZGF0YSk7d2hpbGUodD10Lm5leHQpfSksZX12YXIgaFJ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBmUnQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrZVswXVswXSwrZVswXVsxXSkuY292ZXIoK2VbMV1bMF0sK2VbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19dmFyIHBSdD1NKCgpPT57fSk7ZnVuY3Rpb24gTW8oZSx0LHIsbixpKXt0aGlzLm5vZGU9ZSx0aGlzLngwPXQsdGhpcy55MD1yLHRoaXMueDE9bix0aGlzLnkxPWl9dmFyIGdPPU0oKCk9Pnt9KTtmdW5jdGlvbiBkUnQoZSx0LHIpe3ZhciBuLGk9dGhpcy5feDAsbz10aGlzLl95MCxhLHMsbCxjLHU9dGhpcy5feDEsaD10aGlzLl95MSxmPVtdLHA9dGhpcy5fcm9vdCxkLGc7Zm9yKHAmJmYucHVzaChuZXcgTW8ocCxpLG8sdSxoKSkscj09bnVsbD9yPTEvMDooaT1lLXIsbz10LXIsdT1lK3IsaD10K3Iscio9cik7ZD1mLnBvcCgpOylpZighKCEocD1kLm5vZGUpfHwoYT1kLngwKT51fHwocz1kLnkwKT5ofHwobD1kLngxKTxpfHwoYz1kLnkxKTxvKSlpZihwLmxlbmd0aCl7dmFyIF89KGErbCkvMix5PShzK2MpLzI7Zi5wdXNoKG5ldyBNbyhwWzNdLF8seSxsLGMpLG5ldyBNbyhwWzJdLGEseSxfLGMpLG5ldyBNbyhwWzFdLF8scyxsLHkpLG5ldyBNbyhwWzBdLGEscyxfLHkpKSwoZz0odD49eSk8PDF8ZT49XykmJihkPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtZ10sZltmLmxlbmd0aC0xLWddPWQpfWVsc2V7dmFyIHg9ZS0rdGhpcy5feC5jYWxsKG51bGwscC5kYXRhKSxiPXQtK3RoaXMuX3kuY2FsbChudWxsLHAuZGF0YSksUz14KngrYipiO2lmKFM8cil7dmFyIEM9TWF0aC5zcXJ0KHI9Uyk7aT1lLUMsbz10LUMsdT1lK0MsaD10K0Msbj1wLmRhdGF9fXJldHVybiBufXZhciBtUnQ9TSgoKT0+e2dPKCl9KTtmdW5jdGlvbiBnUnQoZSl7aWYoaXNOYU4odT0rdGhpcy5feC5jYWxsKG51bGwsZSkpfHxpc05hTihoPSt0aGlzLl95LmNhbGwobnVsbCxlKSkpcmV0dXJuIHRoaXM7dmFyIHQscj10aGlzLl9yb290LG4saSxvLGE9dGhpcy5feDAscz10aGlzLl95MCxsPXRoaXMuX3gxLGM9dGhpcy5feTEsdSxoLGYscCxkLGcsXyx5O2lmKCFyKXJldHVybiB0aGlzO2lmKHIubGVuZ3RoKWZvcig7Oyl7aWYoKGQ9dT49KGY9KGErbCkvMikpP2E9ZjpsPWYsKGc9aD49KHA9KHMrYykvMikpP3M9cDpjPXAsdD1yLCEocj1yW189Zzw8MXxkXSkpcmV0dXJuIHRoaXM7aWYoIXIubGVuZ3RoKWJyZWFrOyh0W18rMSYzXXx8dFtfKzImM118fHRbXyszJjNdKSYmKG49dCx5PV8pfWZvcig7ci5kYXRhIT09ZTspaWYoaT1yLCEocj1yLm5leHQpKXJldHVybiB0aGlzO3JldHVybihvPXIubmV4dCkmJmRlbGV0ZSByLm5leHQsaT8obz9pLm5leHQ9bzpkZWxldGUgaS5uZXh0LHRoaXMpOnQ/KG8/dFtfXT1vOmRlbGV0ZSB0W19dLChyPXRbMF18fHRbMV18fHRbMl18fHRbM10pJiZyPT09KHRbM118fHRbMl18fHRbMV18fHRbMF0pJiYhci5sZW5ndGgmJihuP25beV09cjp0aGlzLl9yb290PXIpLHRoaXMpOih0aGlzLl9yb290PW8sdGhpcyl9ZnVuY3Rpb24gX1J0KGUpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOysrdCl0aGlzLnJlbW92ZShlW3RdKTtyZXR1cm4gdGhpc312YXIgeVJ0PU0oKCk9Pnt9KTtmdW5jdGlvbiB2UnQoKXtyZXR1cm4gdGhpcy5fcm9vdH12YXIgeFJ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBiUnQoKXt2YXIgZT0wO3JldHVybiB0aGlzLnZpc2l0KGZ1bmN0aW9uKHQpe2lmKCF0Lmxlbmd0aClkbysrZTt3aGlsZSh0PXQubmV4dCl9KSxlfXZhciB3UnQ9TSgoKT0+e30pO2Z1bmN0aW9uIFNSdChlKXt2YXIgdD1bXSxyLG49dGhpcy5fcm9vdCxpLG8sYSxzLGw7Zm9yKG4mJnQucHVzaChuZXcgTW8obix0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO3I9dC5wb3AoKTspaWYoIWUobj1yLm5vZGUsbz1yLngwLGE9ci55MCxzPXIueDEsbD1yLnkxKSYmbi5sZW5ndGgpe3ZhciBjPShvK3MpLzIsdT0oYStsKS8yOyhpPW5bM10pJiZ0LnB1c2gobmV3IE1vKGksYyx1LHMsbCkpLChpPW5bMl0pJiZ0LnB1c2gobmV3IE1vKGksbyx1LGMsbCkpLChpPW5bMV0pJiZ0LnB1c2gobmV3IE1vKGksYyxhLHMsdSkpLChpPW5bMF0pJiZ0LnB1c2gobmV3IE1vKGksbyxhLGMsdSkpfXJldHVybiB0aGlzfXZhciBNUnQ9TSgoKT0+e2dPKCl9KTtmdW5jdGlvbiBFUnQoZSl7dmFyIHQ9W10scj1bXSxuO2Zvcih0aGlzLl9yb290JiZ0LnB1c2gobmV3IE1vKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtuPXQucG9wKCk7KXt2YXIgaT1uLm5vZGU7aWYoaS5sZW5ndGgpe3ZhciBvLGE9bi54MCxzPW4ueTAsbD1uLngxLGM9bi55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPWlbMF0pJiZ0LnB1c2gobmV3IE1vKG8sYSxzLHUsaCkpLChvPWlbMV0pJiZ0LnB1c2gobmV3IE1vKG8sdSxzLGwsaCkpLChvPWlbMl0pJiZ0LnB1c2gobmV3IE1vKG8sYSxoLHUsYykpLChvPWlbM10pJiZ0LnB1c2gobmV3IE1vKG8sdSxoLGwsYykpfXIucHVzaChuKX1mb3IoO249ci5wb3AoKTspZShuLm5vZGUsbi54MCxuLnkwLG4ueDEsbi55MSk7cmV0dXJuIHRoaXN9dmFyIFRSdD1NKCgpPT57Z08oKX0pO2Z1bmN0aW9uIENSdChlKXtyZXR1cm4gZVswXX1mdW5jdGlvbiBBUnQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9ZSx0aGlzKTp0aGlzLl94fXZhciBQUnQ9TSgoKT0+e30pO2Z1bmN0aW9uIElSdChlKXtyZXR1cm4gZVsxXX1mdW5jdGlvbiBMUnQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9ZSx0aGlzKTp0aGlzLl95fXZhciBrUnQ9TSgoKT0+e30pO2Z1bmN0aW9uIF9PKGUsdCxyKXt2YXIgbj1uZXcgSlEodD09bnVsbD9DUnQ6dCxyPT1udWxsP0lSdDpyLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIGU9PW51bGw/bjpuLmFkZEFsbChlKX1mdW5jdGlvbiBKUShlLHQscixuLGksbyl7dGhpcy5feD1lLHRoaXMuX3k9dCx0aGlzLl94MD1yLHRoaXMuX3kwPW4sdGhpcy5feDE9aSx0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIFJSdChlKXtmb3IodmFyIHQ9e2RhdGE6ZS5kYXRhfSxyPXQ7ZT1lLm5leHQ7KXI9ci5uZXh0PXtkYXRhOmUuZGF0YX07cmV0dXJuIHR9dmFyIGphLE5SdD1NKCgpPT57c1J0KCk7Y1J0KCk7aFJ0KCk7cFJ0KCk7bVJ0KCk7eVJ0KCk7eFJ0KCk7d1J0KCk7TVJ0KCk7VFJ0KCk7UFJ0KCk7a1J0KCk7amE9X08ucHJvdG90eXBlPUpRLnByb3RvdHlwZTtqYS5jb3B5PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IEpRKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSksdD10aGlzLl9yb290LHIsbjtpZighdClyZXR1cm4gZTtpZighdC5sZW5ndGgpcmV0dXJuIGUuX3Jvb3Q9UlJ0KHQpLGU7Zm9yKHI9W3tzb3VyY2U6dCx0YXJnZXQ6ZS5fcm9vdD1uZXcgQXJyYXkoNCl9XTt0PXIucG9wKCk7KWZvcih2YXIgaT0wO2k8NDsrK2kpKG49dC5zb3VyY2VbaV0pJiYobi5sZW5ndGg/ci5wdXNoKHtzb3VyY2U6bix0YXJnZXQ6dC50YXJnZXRbaV09bmV3IEFycmF5KDQpfSk6dC50YXJnZXRbaV09UlJ0KG4pKTtyZXR1cm4gZX07amEuYWRkPWlSdDtqYS5hZGRBbGw9YVJ0O2phLmNvdmVyPWxSdDtqYS5kYXRhPXVSdDtqYS5leHRlbnQ9ZlJ0O2phLmZpbmQ9ZFJ0O2phLnJlbW92ZT1nUnQ7amEucmVtb3ZlQWxsPV9SdDtqYS5yb290PXZSdDtqYS5zaXplPWJSdDtqYS52aXNpdD1TUnQ7amEudmlzaXRBZnRlcj1FUnQ7amEueD1BUnQ7amEueT1MUnR9KTt2YXIgRFJ0PU0oKCk9PntOUnQoKX0pO3ZhciBPUnQselJ0PU0oKCk9PntPUnQ9W10uc2xpY2V9KTtmdW5jdGlvbiBRUShlKXt0aGlzLl9zaXplPWUsdGhpcy5fY2FsbD10aGlzLl9lcnJvcj1udWxsLHRoaXMuX3Rhc2tzPVtdLHRoaXMuX2RhdGE9W10sdGhpcy5fd2FpdGluZz10aGlzLl9hY3RpdmU9dGhpcy5fZW5kZWQ9dGhpcy5fc3RhcnQ9MH1mdW5jdGlvbiBGUnQoZSl7aWYoIWUuX3N0YXJ0KXRyeXt1NmUoZSl9Y2F0Y2godCl7aWYoZS5fdGFza3NbZS5fZW5kZWQrZS5fYWN0aXZlLTFdKXR0dChlLHQpO2Vsc2UgaWYoIWUuX2RhdGEpdGhyb3cgdH19ZnVuY3Rpb24gdTZlKGUpe2Zvcig7ZS5fc3RhcnQ9ZS5fd2FpdGluZyYmZS5fYWN0aXZlPGUuX3NpemU7KXt2YXIgdD1lLl9lbmRlZCtlLl9hY3RpdmUscj1lLl90YXNrc1t0XSxuPXIubGVuZ3RoLTEsaT1yW25dO3Jbbl09aDZlKGUsdCksLS1lLl93YWl0aW5nLCsrZS5fYWN0aXZlLHI9aS5hcHBseShudWxsLHIpLGUuX3Rhc2tzW3RdJiYoZS5fdGFza3NbdF09cnx8YzZlKX19ZnVuY3Rpb24gaDZlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsbil7IWUuX3Rhc2tzW3RdfHwoLS1lLl9hY3RpdmUsKytlLl9lbmRlZCxlLl90YXNrc1t0XT1udWxsLGUuX2Vycm9yPT1udWxsJiYociE9bnVsbD90dHQoZSxyKTooZS5fZGF0YVt0XT1uLGUuX3dhaXRpbmc/RlJ0KGUpOnlPKGUpKSkpfX1mdW5jdGlvbiB0dHQoZSx0KXt2YXIgcj1lLl90YXNrcy5sZW5ndGgsbjtmb3IoZS5fZXJyb3I9dCxlLl9kYXRhPXZvaWQgMCxlLl93YWl0aW5nPU5hTjstLXI+PTA7KWlmKChuPWUuX3Rhc2tzW3JdKSYmKGUuX3Rhc2tzW3JdPW51bGwsbi5hYm9ydCkpdHJ5e24uYWJvcnQoKX1jYXRjaChpKXt9ZS5fYWN0aXZlPU5hTix5TyhlKX1mdW5jdGlvbiB5TyhlKXtpZighZS5fYWN0aXZlJiZlLl9jYWxsKXt2YXIgdD1lLl9kYXRhO2UuX2RhdGE9dm9pZCAwLGUuX2NhbGwoZS5fZXJyb3IsdCl9fWZ1bmN0aW9uIHZPKGUpe2lmKGU9PW51bGwpZT0xLzA7ZWxzZSBpZighKChlPStlKT49MSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNvbmN1cnJlbmN5Iik7cmV0dXJuIG5ldyBRUShlKX12YXIgYzZlLEJSdD1NKCgpPT57elJ0KCk7YzZlPXt9O1FRLnByb3RvdHlwZT12Ty5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlFRLGRlZmVyOmZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjayIpO2lmKHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yKCJkZWZlciBhZnRlciBhd2FpdCIpO2lmKHRoaXMuX2Vycm9yIT1udWxsKXJldHVybiB0aGlzO3ZhciB0PU9SdC5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gdC5wdXNoKGUpLCsrdGhpcy5fd2FpdGluZyx0aGlzLl90YXNrcy5wdXNoKHQpLEZSdCh0aGlzKSx0aGlzfSxhYm9ydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lcnJvcj09bnVsbCYmdHR0KHRoaXMsbmV3IEVycm9yKCJhYm9ydCIpKSx0aGlzfSxhd2FpdDpmdW5jdGlvbihlKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKTtpZih0aGlzLl9jYWxsKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgYXdhaXQiKTtyZXR1cm4gdGhpcy5fY2FsbD1mdW5jdGlvbih0LHIpe2UuYXBwbHkobnVsbCxbdF0uY29uY2F0KHIpKX0seU8odGhpcyksdGhpc30sYXdhaXRBbGw6ZnVuY3Rpb24oZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrIik7aWYodGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIGF3YWl0Iik7cmV0dXJuIHRoaXMuX2NhbGw9ZSx5Tyh0aGlzKSx0aGlzfX19KTt2YXIgSFJ0PU0oKCk9PntCUnQoKX0pO2Z1bmN0aW9uIHZjKCl7cmV0dXJuIE1hdGgucmFuZG9tKCl9dmFyICR5PU0oKCk9Pnt9KTt2YXIgVlJ0LFVSdD1NKCgpPT57JHkoKTtWUnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG49bj09bnVsbD8wOituLGk9aT09bnVsbD8xOitpLGFyZ3VtZW50cy5sZW5ndGg9PT0xPyhpPW4sbj0wKTppLT1uLGZ1bmN0aW9uKCl7cmV0dXJuIHQoKSppK259fXJldHVybiByLnNvdXJjZT1lLHJ9KHZjKX0pO3ZhciB4TyxldHQ9TSgoKT0+eyR5KCk7eE89ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4saSl7dmFyIG8sYTtyZXR1cm4gbj1uPT1udWxsPzA6K24saT1pPT1udWxsPzE6K2ksZnVuY3Rpb24oKXt2YXIgcztpZihvIT1udWxsKXM9byxvPW51bGw7ZWxzZSBkbyBvPXQoKSoyLTEscz10KCkqMi0xLGE9bypvK3Mqczt3aGlsZSghYXx8YT4xKTtyZXR1cm4gbitpKnMqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKGEpL2EpfX1yZXR1cm4gci5zb3VyY2U9ZSxyfSh2Yyl9KTt2YXIgcVJ0LEdSdD1NKCgpPT57JHkoKTtldHQoKTtxUnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKCl7dmFyIG49eE8uc291cmNlKHQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAobigpKX19cmV0dXJuIHIuc291cmNlPWUscn0odmMpfSk7dmFyIGJPLHJ0dD1NKCgpPT57JHkoKTtiTz1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTAsbz0wO288bjsrK28paSs9dCgpO3JldHVybiBpfX1yZXR1cm4gci5zb3VyY2U9ZSxyfSh2Yyl9KTt2YXIgV1J0LFlSdD1NKCgpPT57JHkoKTtydHQoKTtXUnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4pe3ZhciBpPWJPLnNvdXJjZSh0KShuKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaSgpL259fXJldHVybiByLnNvdXJjZT1lLHJ9KHZjKX0pO3ZhciBqUnQsWFJ0PU0oKCk9PnskeSgpO2pSdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLU1hdGgubG9nKDEtdCgpKS9ufX1yZXR1cm4gci5zb3VyY2U9ZSxyfSh2Yyl9KTt2YXIgJFJ0PU0oKCk9PntVUnQoKTtldHQoKTtHUnQoKTtZUnQoKTtydHQoKTtYUnQoKX0pO2Z1bmN0aW9uIFoyKGUsdCl7dmFyIHIsbj15cygiYmVmb3Jlc2VuZCIsInByb2dyZXNzIiwibG9hZCIsImVycm9yIiksaSxvPVppKCksYT1uZXcgWE1MSHR0cFJlcXVlc3Qscz1udWxsLGw9bnVsbCxjLHUsaD0wO3R5cGVvZiBYRG9tYWluUmVxdWVzdCE9InVuZGVmaW5lZCImJiEoIndpdGhDcmVkZW50aWFscyJpbiBhKSYmL14oaHR0cChzKT86KT9cL1wvLy50ZXN0KGUpJiYoYT1uZXcgWERvbWFpblJlcXVlc3QpLCJvbmxvYWQiaW4gYT9hLm9ubG9hZD1hLm9uZXJyb3I9YS5vbnRpbWVvdXQ9ZjphLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihwKXthLnJlYWR5U3RhdGU+MyYmZihwKX07ZnVuY3Rpb24gZihwKXt2YXIgZD1hLnN0YXR1cyxnO2lmKCFkJiZwNmUoYSl8fGQ+PTIwMCYmZDwzMDB8fGQ9PT0zMDQpe2lmKGMpdHJ5e2c9Yy5jYWxsKHIsYSl9Y2F0Y2goXyl7bi5jYWxsKCJlcnJvciIscixfKTtyZXR1cm59ZWxzZSBnPWE7bi5jYWxsKCJsb2FkIixyLGcpfWVsc2Ugbi5jYWxsKCJlcnJvciIscixwKX1pZihhLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24ocCl7bi5jYWxsKCJwcm9ncmVzcyIscixwKX0scj17aGVhZGVyOmZ1bmN0aW9uKHAsZCl7cmV0dXJuIHA9KHArIiIpLnRvTG93ZXJDYXNlKCksYXJndW1lbnRzLmxlbmd0aDwyP28uZ2V0KHApOihkPT1udWxsP28ucmVtb3ZlKHApOm8uc2V0KHAsZCsiIikscil9LG1pbWVUeXBlOmZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXA9PW51bGw/bnVsbDpwKyIiLHIpOml9LHJlc3BvbnNlVHlwZTpmdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1wLHIpOnV9LHRpbWVvdXQ6ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3Ascik6aH0sdXNlcjpmdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3M6KHM9cD09bnVsbD9udWxsOnArIiIscil9LHBhc3N3b3JkOmZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDE/bDoobD1wPT1udWxsP251bGw6cCsiIixyKX0scmVzcG9uc2U6ZnVuY3Rpb24ocCl7cmV0dXJuIGM9cCxyfSxnZXQ6ZnVuY3Rpb24ocCxkKXtyZXR1cm4gci5zZW5kKCJHRVQiLHAsZCl9LHBvc3Q6ZnVuY3Rpb24ocCxkKXtyZXR1cm4gci5zZW5kKCJQT1NUIixwLGQpfSxzZW5kOmZ1bmN0aW9uKHAsZCxnKXtyZXR1cm4gYS5vcGVuKHAsZSwhMCxzLGwpLGkhPW51bGwmJiFvLmhhcygiYWNjZXB0IikmJm8uc2V0KCJhY2NlcHQiLGkrIiwqLyoiKSxhLnNldFJlcXVlc3RIZWFkZXImJm8uZWFjaChmdW5jdGlvbihfLHkpe2Euc2V0UmVxdWVzdEhlYWRlcih5LF8pfSksaSE9bnVsbCYmYS5vdmVycmlkZU1pbWVUeXBlJiZhLm92ZXJyaWRlTWltZVR5cGUoaSksdSE9bnVsbCYmKGEucmVzcG9uc2VUeXBlPXUpLGg+MCYmKGEudGltZW91dD1oKSxnPT1udWxsJiZ0eXBlb2YgZD09ImZ1bmN0aW9uIiYmKGc9ZCxkPW51bGwpLGchPW51bGwmJmcubGVuZ3RoPT09MSYmKGc9ZjZlKGcpKSxnIT1udWxsJiZyLm9uKCJlcnJvciIsZykub24oImxvYWQiLGZ1bmN0aW9uKF8pe2cobnVsbCxfKX0pLG4uY2FsbCgiYmVmb3Jlc2VuZCIscixhKSxhLnNlbmQoZD09bnVsbD9udWxsOmQpLHJ9LGFib3J0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuYWJvcnQoKSxyfSxvbjpmdW5jdGlvbigpe3ZhciBwPW4ub24uYXBwbHkobixhcmd1bWVudHMpO3JldHVybiBwPT09bj9yOnB9fSx0IT1udWxsKXtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrdCk7cmV0dXJuIHIuZ2V0KHQpfXJldHVybiByfWZ1bmN0aW9uIGY2ZShlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtlKHQ9PW51bGw/cjpudWxsKX19ZnVuY3Rpb24gcDZlKGUpe3ZhciB0PWUucmVzcG9uc2VUeXBlO3JldHVybiB0JiZ0IT09InRleHQiP2UucmVzcG9uc2U6ZS5yZXNwb25zZVRleHR9dmFyIHdPPU0oKCk9PntFYigpO2ttKCl9KTtmdW5jdGlvbiBUZyhlLHQpe3JldHVybiBmdW5jdGlvbihyLG4pe3ZhciBpPVoyKHIpLm1pbWVUeXBlKGUpLnJlc3BvbnNlKHQpO2lmKG4hPW51bGwpe2lmKHR5cGVvZiBuIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIituKTtyZXR1cm4gaS5nZXQobil9cmV0dXJuIGl9fXZhciByQz1NKCgpPT57d08oKX0pO3ZhciBLUnQsWlJ0PU0oKCk9PntyQygpO0tSdD1UZygidGV4dC9odG1sIixmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoZS5yZXNwb25zZVRleHQpfSl9KTt2YXIgSlJ0LFFSdD1NKCgpPT57ckMoKTtKUnQ9VGcoImFwcGxpY2F0aW9uL2pzb24iLGZ1bmN0aW9uKGUpe3JldHVybiBKU09OLnBhcnNlKGUucmVzcG9uc2VUZXh0KX0pfSk7dmFyIHROdCxlTnQ9TSgoKT0+e3JDKCk7dE50PVRnKCJ0ZXh0L3BsYWluIixmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXNwb25zZVRleHR9KX0pO3ZhciByTnQsbk50PU0oKCk9PntyQygpO3JOdD1UZygiYXBwbGljYXRpb24veG1sIixmdW5jdGlvbihlKXt2YXIgdD1lLnJlc3BvbnNlWE1MO2lmKCF0KXRocm93IG5ldyBFcnJvcigicGFyc2UgZXJyb3IiKTtyZXR1cm4gdH0pfSk7ZnVuY3Rpb24gU08oZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixuLGkpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKGk9bixuPW51bGwpO3ZhciBvPVoyKHIpLm1pbWVUeXBlKGUpO3JldHVybiBvLnJvdz1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9vLnJlc3BvbnNlKGQ2ZSh0LG49YSkpOm59LG8ucm93KG4pLGk/by5nZXQoaSk6b319ZnVuY3Rpb24gZDZlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlKHIucmVzcG9uc2VUZXh0LHQpfX12YXIgbnR0PU0oKCk9Pnt3TygpfSk7dmFyIGlOdCxvTnQ9TSgoKT0+e0hFKCk7bnR0KCk7aU50PVNPKCJ0ZXh0L2NzdiIsVGIpfSk7dmFyIGFOdCxzTnQ9TSgoKT0+e0hFKCk7bnR0KCk7YU50PVNPKCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIixDYil9KTt2YXIgbE50PU0oKCk9Pnt3TygpO1pSdCgpO1FSdCgpO2VOdCgpO25OdCgpO29OdCgpO3NOdCgpfSk7ZnVuY3Rpb24gZmYoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59dmFyIEt5PU0oKCk9Pnt9KTtmdW5jdGlvbiBuQyhlKXtyZXR1cm4gZS5sZW5ndGg9PT0xJiYoZT1tNmUoZSkpLHtsZWZ0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihuPT1udWxsJiYobj0wKSxpPT1udWxsJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik8MD9uPW8rMTppPW99cmV0dXJuIG59LHJpZ2h0OmZ1bmN0aW9uKHQscixuLGkpe2ZvcihuPT1udWxsJiYobj0wKSxpPT1udWxsJiYoaT10Lmxlbmd0aCk7bjxpOyl7dmFyIG89bitpPj4+MTtlKHRbb10scik+MD9pPW86bj1vKzF9cmV0dXJuIG59fX1mdW5jdGlvbiBtNmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIGZmKGUodCkscil9fXZhciBpdHQ9TSgoKT0+e0t5KCl9KTt2YXIgY050LHVOdCxnNmUscGYsb3R0PU0oKCk9PntLeSgpO2l0dCgpO2NOdD1uQyhmZiksdU50PWNOdC5yaWdodCxnNmU9Y050LmxlZnQscGY9dU50fSk7dmFyIGF0dD1NKCgpPT57fSk7dmFyIGhOdD1NKCgpPT57YXR0KCl9KTt2YXIgZk50PU0oKCk9Pnt9KTtmdW5jdGlvbiBKMihlKXtyZXR1cm4gZT09PW51bGw/TmFOOitlfXZhciBRMj1NKCgpPT57fSk7dmFyIHN0dD1NKCgpPT57UTIoKX0pO3ZhciBsdHQ9TSgoKT0+e3N0dCgpfSk7dmFyIGN0dD1NKCgpPT57fSk7dmFyIHBOdCx5NmUsdjZlLHV0dD1NKCgpPT57cE50PUFycmF5LnByb3RvdHlwZSx5NmU9cE50LnNsaWNlLHY2ZT1wTnQubWFwfSk7dmFyIGROdD1NKCgpPT57fSk7dmFyIG1OdD1NKCgpPT57fSk7ZnVuY3Rpb24gTU8oZSx0LHIpe2U9K2UsdD0rdCxyPShpPWFyZ3VtZW50cy5sZW5ndGgpPDI/KHQ9ZSxlPTAsMSk6aTwzPzE6K3I7Zm9yKHZhciBuPS0xLGk9TWF0aC5tYXgoMCxNYXRoLmNlaWwoKHQtZSkvcikpfDAsbz1uZXcgQXJyYXkoaSk7KytuPGk7KW9bbl09ZStuKnI7cmV0dXJuIG99dmFyIGh0dD1NKCgpPT57fSk7ZnVuY3Rpb24gaUMoZSx0LHIpe3ZhciBuLGk9LTEsbyxhLHM7aWYodD0rdCxlPStlLHI9K3IsZT09PXQmJnI+MClyZXR1cm5bZV07aWYoKG49dDxlKSYmKG89ZSxlPXQsdD1vKSwocz10dyhlLHQscikpPT09MHx8IWlzRmluaXRlKHMpKXJldHVybltdO2lmKHM+MClmb3IoZT1NYXRoLmNlaWwoZS9zKSx0PU1hdGguZmxvb3IodC9zKSxhPW5ldyBBcnJheShvPU1hdGguY2VpbCh0LWUrMSkpOysraTxvOylhW2ldPShlK2kpKnM7ZWxzZSBmb3IoZT1NYXRoLmZsb29yKGUqcyksdD1NYXRoLmNlaWwodCpzKSxhPW5ldyBBcnJheShvPU1hdGguY2VpbChlLXQrMSkpOysraTxvOylhW2ldPShlLWkpL3M7cmV0dXJuIG4mJmEucmV2ZXJzZSgpLGF9ZnVuY3Rpb24gdHcoZSx0LHIpe3ZhciBuPSh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCksbz1uL01hdGgucG93KDEwLGkpO3JldHVybiBpPj0wPyhvPj1mdHQ/MTA6bz49cHR0PzU6bz49ZHR0PzI6MSkqTWF0aC5wb3coMTAsaSk6LU1hdGgucG93KDEwLC1pKS8obz49ZnR0PzEwOm8+PXB0dD81Om8+PWR0dD8yOjEpfWZ1bmN0aW9uIFp5KGUsdCxyKXt2YXIgbj1NYXRoLmFicyh0LWUpL01hdGgubWF4KDAsciksaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4xMCkpLG89bi9pO3JldHVybiBvPj1mdHQ/aSo9MTA6bz49cHR0P2kqPTU6bz49ZHR0JiYoaSo9MiksdDxlPy1pOml9dmFyIGZ0dCxwdHQsZHR0LG10dD1NKCgpPT57ZnR0PU1hdGguc3FydCg1MCkscHR0PU1hdGguc3FydCgxMCksZHR0PU1hdGguc3FydCgyKX0pO3ZhciBndHQ9TSgoKT0+e30pO3ZhciBnTnQ9TSgoKT0+e3V0dCgpO290dCgpO2ROdCgpO2N0dCgpO21OdCgpO2h0dCgpO210dCgpO2d0dCgpfSk7ZnVuY3Rpb24gb0MoZSx0LHIpe2lmKHI9PW51bGwmJihyPUoyKSwhIShuPWUubGVuZ3RoKSl7aWYoKHQ9K3QpPD0wfHxuPDIpcmV0dXJuK3IoZVswXSwwLGUpO2lmKHQ+PTEpcmV0dXJuK3IoZVtuLTFdLG4tMSxlKTt2YXIgbixpPShuLTEpKnQsbz1NYXRoLmZsb29yKGkpLGE9K3IoZVtvXSxvLGUpLHM9K3IoZVtvKzFdLG8rMSxlKTtyZXR1cm4gYSsocy1hKSooaS1vKX19dmFyIEVPPU0oKCk9PntRMigpfSk7dmFyIF9OdD1NKCgpPT57dXR0KCk7S3koKTtRMigpO0VPKCl9KTt2YXIgeU50PU0oKCk9PntsdHQoKX0pO3ZhciB2TnQ9TSgoKT0+e30pO3ZhciB4TnQ9TSgoKT0+e1EyKCl9KTt2YXIgYk50PU0oKCk9PntLeSgpO1EyKCk7RU8oKX0pO3ZhciB3TnQ9TSgoKT0+e30pO3ZhciBfdHQ9TSgoKT0+e30pO3ZhciBTTnQ9TSgoKT0+e30pO3ZhciBNTnQ9TSgoKT0+e0t5KCl9KTt2YXIgRU50PU0oKCk9Pnt9KTt2YXIgVE50PU0oKCk9Pnt9KTt2YXIgeXR0PU0oKCk9PntfdHQoKX0pO3ZhciBDTnQ9TSgoKT0+e3l0dCgpfSk7dmFyIGRmPU0oKCk9PntvdHQoKTtLeSgpO2l0dCgpO2hOdCgpO2ZOdCgpO2x0dCgpO2N0dCgpO2dOdCgpO19OdCgpO3lOdCgpO2d0dCgpO3ZOdCgpO3hOdCgpO2JOdCgpO3dOdCgpO190dCgpO2F0dCgpO1NOdCgpO0VPKCk7aHR0KCk7TU50KCk7RU50KCk7VE50KCk7bXR0KCk7eXR0KCk7c3R0KCk7Q050KCl9KTtmdW5jdGlvbiBUTygpe31mdW5jdGlvbiBBTnQoZSx0KXt2YXIgcj1uZXcgVE87aWYoZSBpbnN0YW5jZW9mIFRPKWUuZWFjaChmdW5jdGlvbihzLGwpe3Iuc2V0KGwscyl9KTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpe3ZhciBuPS0xLGk9ZS5sZW5ndGgsbztpZih0PT1udWxsKWZvcig7KytuPGk7KXIuc2V0KG4sZVtuXSk7ZWxzZSBmb3IoOysrbjxpOylyLnNldCh0KG89ZVtuXSxuLGUpLG8pfWVsc2UgaWYoZSlmb3IodmFyIGEgaW4gZSlyLnNldChhLGVbYV0pO3JldHVybiByfXZhciBobCxKeSxDTz1NKCgpPT57aGw9IiQiO1RPLnByb3RvdHlwZT1BTnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUTyxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGhsK2UgaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzW2hsK2VdfSxzZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpc1tobCtlXT10LHRoaXN9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD1obCtlO3JldHVybiB0IGluIHRoaXMmJmRlbGV0ZSB0aGlzW3RdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1obCYmZGVsZXRlIHRoaXNbZV19LGtleXM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09aGwmJmUucHVzaCh0LnNsaWNlKDEpKTtyZXR1cm4gZX0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PWhsJiZlLnB1c2godGhpc1t0XSk7cmV0dXJuIGV9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09aGwmJmUucHVzaCh7a2V5OnQuc2xpY2UoMSksdmFsdWU6dGhpc1t0XX0pO3JldHVybiBlfSxzaXplOmZ1bmN0aW9uKCl7dmFyIGU9MDtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09aGwmJisrZTtyZXR1cm4gZX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUgaW4gdGhpcylpZihlWzBdPT09aGwpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PWhsJiZlKHRoaXNbdF0sdC5zbGljZSgxKSx0aGlzKX19O0p5PUFOdH0pO3ZhciBQTnQ9TSgoKT0+e0NPKCl9KTtmdW5jdGlvbiBBTygpe31mdW5jdGlvbiBFNmUoZSx0KXt2YXIgcj1uZXcgQU87aWYoZSBpbnN0YW5jZW9mIEFPKWUuZWFjaChmdW5jdGlvbihvKXtyLmFkZChvKX0pO2Vsc2UgaWYoZSl7dmFyIG49LTEsaT1lLmxlbmd0aDtpZih0PT1udWxsKWZvcig7KytuPGk7KXIuYWRkKGVbbl0pO2Vsc2UgZm9yKDsrK248aTspci5hZGQodChlW25dLG4sZSkpfXJldHVybiByfXZhciBReSxJTnQ9TSgoKT0+e0NPKCk7UXk9SnkucHJvdG90eXBlO0FPLnByb3RvdHlwZT1FNmUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpBTyxoYXM6UXkuaGFzLGFkZDpmdW5jdGlvbihlKXtyZXR1cm4gZSs9IiIsdGhpc1tobCtlXT1lLHRoaXN9LHJlbW92ZTpReS5yZW1vdmUsY2xlYXI6UXkuY2xlYXIsdmFsdWVzOlF5LmtleXMsc2l6ZTpReS5zaXplLGVtcHR5OlF5LmVtcHR5LGVhY2g6UXkuZWFjaH19KTt2YXIgTE50PU0oKCk9Pnt9KTt2YXIga050PU0oKCk9Pnt9KTt2YXIgUk50PU0oKCk9Pnt9KTt2YXIgTk50PU0oKCk9PntQTnQoKTtJTnQoKTtDTygpO0xOdCgpO2tOdCgpO1JOdCgpfSk7dmFyIEROdCxldyxmbCxDZz1NKCgpPT57RE50PUFycmF5LnByb3RvdHlwZSxldz1ETnQubWFwLGZsPUROdC5zbGljZX0pO2Z1bmN0aW9uIHJ3KGUpe3ZhciB0PUp5KCkscj1bXSxuPVBPO2U9ZT09bnVsbD9bXTpmbC5jYWxsKGUpO2Z1bmN0aW9uIGkobyl7dmFyIGE9bysiIixzPXQuZ2V0KGEpO2lmKCFzKXtpZihuIT09UE8pcmV0dXJuIG47dC5zZXQoYSxzPXIucHVzaChvKSl9cmV0dXJuIGVbKHMtMSklZS5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihvKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gci5zbGljZSgpO3I9W10sdD1KeSgpO2Zvcih2YXIgYT0tMSxzPW8ubGVuZ3RoLGwsYzsrK2E8czspdC5oYXMoYz0obD1vW2FdKSsiIil8fHQuc2V0KGMsci5wdXNoKGwpKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1mbC5jYWxsKG8pLGkpOmUuc2xpY2UoKX0saS51bmtub3duPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW8saSk6bn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHJ3KCkuZG9tYWluKHIpLnJhbmdlKGUpLnVua25vd24obil9LGl9dmFyIFBPLHZ0dD1NKCgpPT57Tk50KCk7Q2coKTtQTz17bmFtZToiaW1wbGljaXQifX0pO2Z1bmN0aW9uIGFDKCl7dmFyIGU9cncoKS51bmtub3duKHZvaWQgMCksdD1lLmRvbWFpbixyPWUucmFuZ2Usbj1bMCwxXSxpLG8sYT0hMSxzPTAsbD0wLGM9LjU7ZGVsZXRlIGUudW5rbm93bjtmdW5jdGlvbiB1KCl7dmFyIGg9dCgpLmxlbmd0aCxmPW5bMV08blswXSxwPW5bZi0wXSxkPW5bMS1mXTtpPShkLXApL01hdGgubWF4KDEsaC1zK2wqMiksYSYmKGk9TWF0aC5mbG9vcihpKSkscCs9KGQtcC1pKihoLXMpKSpjLG89aSooMS1zKSxhJiYocD1NYXRoLnJvdW5kKHApLG89TWF0aC5yb3VuZChvKSk7dmFyIGc9TU8oaCkubWFwKGZ1bmN0aW9uKF8pe3JldHVybiBwK2kqX30pO3JldHVybiByKGY/Zy5yZXZlcnNlKCk6Zyl9cmV0dXJuIGUuZG9tYWluPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0KGgpLHUoKSk6dCgpfSxlLnJhbmdlPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPVsraFswXSwraFsxXV0sdSgpKTpuLnNsaWNlKCl9LGUucmFuZ2VSb3VuZD1mdW5jdGlvbihoKXtyZXR1cm4gbj1bK2hbMF0sK2hbMV1dLGE9ITAsdSgpfSxlLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBvfSxlLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sZS5yb3VuZD1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIWgsdSgpKTphfSxlLnBhZGRpbmc9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bD1NYXRoLm1heCgwLE1hdGgubWluKDEsaCkpLHUoKSk6c30sZS5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLGgpKSx1KCkpOnN9LGUucGFkZGluZ091dGVyPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPU1hdGgubWF4KDAsTWF0aC5taW4oMSxoKSksdSgpKTpsfSxlLmFsaWduPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPU1hdGgubWF4KDAsTWF0aC5taW4oMSxoKSksdSgpKTpjfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gYUMoKS5kb21haW4odCgpKS5yYW5nZShuKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSx1KCl9ZnVuY3Rpb24gT050KGUpe3ZhciB0PWUuY29weTtyZXR1cm4gZS5wYWRkaW5nPWUucGFkZGluZ091dGVyLGRlbGV0ZSBlLnBhZGRpbmdJbm5lcixkZWxldGUgZS5wYWRkaW5nT3V0ZXIsZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIE9OdCh0KCkpfSxlfWZ1bmN0aW9uIHpOdCgpe3JldHVybiBPTnQoYUMoKS5wYWRkaW5nSW5uZXIoMSkpfXZhciBGTnQ9TSgoKT0+e2RmKCk7dnR0KCl9KTtmdW5jdGlvbiBudyhlLHQscil7ZS5wcm90b3R5cGU9dC5wcm90b3R5cGU9cixyLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gc0MoZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKTtmb3IodmFyIG4gaW4gdClyW25dPXRbbl07cmV0dXJuIHJ9dmFyIHh0dD1NKCgpPT57fSk7ZnVuY3Rpb24gZXYoKXt9ZnVuY3Rpb24gSE50KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gUjZlKCl7cmV0dXJuIFlOdCh0aGlzKS5mb3JtYXRIc2woKX1mdW5jdGlvbiBWTnQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBQZyhlKXt2YXIgdCxyO3JldHVybiBlPShlKyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwodD1UNmUuZXhlYyhlKSk/KHI9dFsxXS5sZW5ndGgsdD1wYXJzZUludCh0WzFdLDE2KSxyPT09Nj9VTnQodCk6cj09PTM/bmV3IHVhKHQ+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXx0JjI0MCwodCYxNSk8PDR8dCYxNSwxKTpyPT09OD9JTyh0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LCh0JjI1NSkvMjU1KTpyPT09ND9JTyh0Pj4xMiYxNXx0Pj44JjI0MCx0Pj44JjE1fHQ+PjQmMjQwLHQ+PjQmMTV8dCYyNDAsKCh0JjE1KTw8NHx0JjE1KS8yNTUpOm51bGwpOih0PUM2ZS5leGVjKGUpKT9uZXcgdWEodFsxXSx0WzJdLHRbM10sMSk6KHQ9QTZlLmV4ZWMoZSkpP25ldyB1YSh0WzFdKjI1NS8xMDAsdFsyXSoyNTUvMTAwLHRbM10qMjU1LzEwMCwxKToodD1QNmUuZXhlYyhlKSk/SU8odFsxXSx0WzJdLHRbM10sdFs0XSk6KHQ9STZlLmV4ZWMoZSkpP0lPKHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLHRbNF0pOih0PUw2ZS5leGVjKGUpKT9XTnQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCwxKToodD1rNmUuZXhlYyhlKSk/V050KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XSk6Qk50Lmhhc093blByb3BlcnR5KGUpP1VOdChCTnRbZV0pOmU9PT0idHJhbnNwYXJlbnQiP25ldyB1YShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFVOdChlKXtyZXR1cm4gbmV3IHVhKGU+PjE2JjI1NSxlPj44JjI1NSxlJjI1NSwxKX1mdW5jdGlvbiBJTyhlLHQscixuKXtyZXR1cm4gbjw9MCYmKGU9dD1yPU5hTiksbmV3IHVhKGUsdCxyLG4pfWZ1bmN0aW9uIFN0dChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGV2fHwoZT1QZyhlKSksZT8oZT1lLnJnYigpLG5ldyB1YShlLnIsZS5nLGUuYixlLm9wYWNpdHkpKTpuZXcgdWF9ZnVuY3Rpb24gb3coZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP1N0dChlKTpuZXcgdWEoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIHVhKGUsdCxyLG4pe3RoaXMucj0rZSx0aGlzLmc9K3QsdGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBxTnQoKXtyZXR1cm4iIyIrYnR0KHRoaXMucikrYnR0KHRoaXMuZykrYnR0KHRoaXMuYil9ZnVuY3Rpb24gR050KCl7dmFyIGU9dGhpcy5vcGFjaXR5O3JldHVybiBlPWlzTmFOKGUpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKSwoZT09PTE/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoZT09PTE/IikiOiIsICIrZSsiKSIpfWZ1bmN0aW9uIGJ0dChlKXtyZXR1cm4gZT1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKGUpfHwwKSksKGU8MTY/IjAiOiIiKStlLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBXTnQoZSx0LHIsbil7cmV0dXJuIG48PTA/ZT10PXI9TmFOOnI8PTB8fHI+PTE/ZT10PU5hTjp0PD0wJiYoZT1OYU4pLG5ldyBtZihlLHQscixuKX1mdW5jdGlvbiBZTnQoZSl7aWYoZSBpbnN0YW5jZW9mIG1mKXJldHVybiBuZXcgbWYoZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgZXZ8fChlPVBnKGUpKSwhZSlyZXR1cm4gbmV3IG1mO2lmKGUgaW5zdGFuY2VvZiBtZilyZXR1cm4gZTtlPWUucmdiKCk7dmFyIHQ9ZS5yLzI1NSxyPWUuZy8yNTUsbj1lLmIvMjU1LGk9TWF0aC5taW4odCxyLG4pLG89TWF0aC5tYXgodCxyLG4pLGE9TmFOLHM9by1pLGw9KG8raSkvMjtyZXR1cm4gcz8odD09PW8/YT0oci1uKS9zKyhyPG4pKjY6cj09PW8/YT0obi10KS9zKzI6YT0odC1yKS9zKzQscy89bDwuNT9vK2k6Mi1vLWksYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBtZihhLHMsbCxlLm9wYWNpdHkpfWZ1bmN0aW9uIGpOdChlLHQscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/WU50KGUpOm5ldyBtZihlLHQscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gbWYoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMucz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIHd0dChlLHQscil7cmV0dXJuKGU8NjA/dCsoci10KSplLzYwOmU8MTgwP3I6ZTwyNDA/dCsoci10KSooMjQwLWUpLzYwOnQpKjI1NX12YXIgQWcsdHYsaXcsbEMsZ2YsVDZlLEM2ZSxBNmUsUDZlLEk2ZSxMNmUsazZlLEJOdCxNdHQ9TSgoKT0+e3h0dCgpO0FnPS43LHR2PTEvQWcsaXc9IlxccyooWystXT9cXGQrKVxccyoiLGxDPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLGdmPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixUNmU9L14jKFswLTlhLWZdezMsOH0pJC8sQzZlPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tpdyxpdyxpd10rIlxcKSQiKSxBNmU9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2dmLGdmLGdmXSsiXFwpJCIpLFA2ZT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2l3LGl3LGl3LGxDXSsiXFwpJCIpLEk2ZT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2dmLGdmLGdmLGxDXSsiXFwpJCIpLEw2ZT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbbEMsZ2YsZ2ZdKyJcXCkkIiksazZlPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbbEMsZ2YsZ2YsbENdKyJcXCkkIiksQk50PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O253KGV2LFBnLHtjb3B5OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsZSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OkhOdCxmb3JtYXRIZXg6SE50LGZvcm1hdEhzbDpSNmUsZm9ybWF0UmdiOlZOdCx0b1N0cmluZzpWTnR9KTtudyh1YSxvdyxzQyhldix7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD90djpNYXRoLnBvdyh0dixlKSxuZXcgdWEodGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/QWc6TWF0aC5wb3coQWcsZSksbmV3IHVhKHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6cU50LGZvcm1hdEhleDpxTnQsZm9ybWF0UmdiOkdOdCx0b1N0cmluZzpHTnR9KSk7bncobWYsak50LHNDKGV2LHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP3R2Ok1hdGgucG93KHR2LGUpLG5ldyBtZih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP0FnOk1hdGgucG93KEFnLGUpLG5ldyBtZih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaCUzNjArKHRoaXMuaDwwKSozNjAsdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKnQsaT0yKnItbjtyZXR1cm4gbmV3IHVhKHd0dChlPj0yNDA/ZS0yNDA6ZSsxMjAsaSxuKSx3dHQoZSxpLG4pLHd0dChlPDEyMD9lKzI0MDplLTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuIGU9aXNOYU4oZSk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLChlPT09MT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisodGhpcy5zfHwwKSoxMDArIiUsICIrKHRoaXMubHx8MCkqMTAwKyIlIisoZT09PTE/IikiOiIsICIrZSsiKSIpfX0pKX0pO3ZhciBYTnQsJE50LEtOdD1NKCgpPT57WE50PU1hdGguUEkvMTgwLCROdD0xODAvTWF0aC5QSX0pO2Z1bmN0aW9uIE42ZShlKXtpZihlIGluc3RhbmNlb2YgcnYpcmV0dXJuIG5ldyBydihlLmgsZS5zLGUubCxlLm9wYWNpdHkpO2UgaW5zdGFuY2VvZiB1YXx8KGU9U3R0KGUpKTt2YXIgdD1lLnIvMjU1LHI9ZS5nLzI1NSxuPWUuYi8yNTUsaT0oUU50Km4rWk50KnQtSk50KnIpLyhRTnQrWk50LUpOdCksbz1uLWksYT0oY0MqKHItaSktVHR0Km8pL0xPLHM9TWF0aC5zcXJ0KGEqYStvKm8pLyhjQyppKigxLWkpKSxsPXM/TWF0aC5hdGFuMihhLG8pKiROdC0xMjA6TmFOO3JldHVybiBuZXcgcnYobDwwP2wrMzYwOmwscyxpLGUub3BhY2l0eSl9ZnVuY3Rpb24gWGEoZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP042ZShlKTpuZXcgcnYoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIHJ2KGUsdCxyLG4pe3RoaXMuaD0rZSx0aGlzLnM9K3QsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn12YXIgdER0LEV0dCxUdHQsTE8sY0MsWk50LEpOdCxRTnQsZUR0PU0oKCk9Pnt4dHQoKTtNdHQoKTtLTnQoKTt0RHQ9LS4xNDg2MSxFdHQ9MS43ODI3NyxUdHQ9LS4yOTIyNyxMTz0tLjkwNjQ5LGNDPTEuOTcyOTQsWk50PWNDKkxPLEpOdD1jQypFdHQsUU50PUV0dCpUdHQtTE8qdER0O253KHJ2LFhhLHNDKGV2LHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP3R2Ok1hdGgucG93KHR2LGUpLG5ldyBydih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP0FnOk1hdGgucG93KEFnLGUpLG5ldyBydih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqWE50LHQ9K3RoaXMubCxyPWlzTmFOKHRoaXMucyk/MDp0aGlzLnMqdCooMS10KSxuPU1hdGguY29zKGUpLGk9TWF0aC5zaW4oZSk7cmV0dXJuIG5ldyB1YSgyNTUqKHQrcioodER0Km4rRXR0KmkpKSwyNTUqKHQrciooVHR0Km4rTE8qaSkpLDI1NSoodCtyKihjQypuKSksdGhpcy5vcGFjaXR5KX19KSl9KTt2YXIgYXc9TSgoKT0+e010dCgpO2VEdCgpfSk7ZnVuY3Rpb24gQ3R0KGUsdCxyLG4saSl7dmFyIG89ZSplLGE9byplO3JldHVybigoMS0zKmUrMypvLWEpKnQrKDQtNipvKzMqYSkqcisoMSszKmUrMypvLTMqYSkqbithKmkpLzZ9ZnVuY3Rpb24gckR0KGUpe3ZhciB0PWUubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXI8PTA/cj0wOnI+PTE/KHI9MSx0LTEpOk1hdGguZmxvb3Iocip0KSxpPWVbbl0sbz1lW24rMV0sYT1uPjA/ZVtuLTFdOjIqaS1vLHM9bjx0LTE/ZVtuKzJdOjIqby1pO3JldHVybiBDdHQoKHItbi90KSp0LGEsaSxvLHMpfX12YXIgQXR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBuRHQoZSl7dmFyIHQ9ZS5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPU1hdGguZmxvb3IoKChyJT0xKTwwPysrcjpyKSp0KSxpPWVbKG4rdC0xKSV0XSxvPWVbbiV0XSxhPWVbKG4rMSkldF0scz1lWyhuKzIpJXRdO3JldHVybiBDdHQoKHItbi90KSp0LGksbyxhLHMpfX12YXIgaUR0PU0oKCk9PntBdHQoKX0pO2Z1bmN0aW9uIHN3KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgUHR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBvRHQoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUrcip0fX1mdW5jdGlvbiBENmUoZSx0LHIpe3JldHVybiBlPU1hdGgucG93KGUsciksdD1NYXRoLnBvdyh0LHIpLWUscj0xL3IsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucG93KGUrbip0LHIpfX1mdW5jdGlvbiBhRHQoZSx0KXt2YXIgcj10LWU7cmV0dXJuIHI/b0R0KGUscj4xODB8fHI8LTE4MD9yLTM2MCpNYXRoLnJvdW5kKHIvMzYwKTpyKTpzdyhpc05hTihlKT90OmUpfWZ1bmN0aW9uIHNEdChlKXtyZXR1cm4oZT0rZSk9PTE/bmQ6ZnVuY3Rpb24odCxyKXtyZXR1cm4gci10P0Q2ZSh0LHIsZSk6c3coaXNOYU4odCk/cjp0KX19ZnVuY3Rpb24gbmQoZSx0KXt2YXIgcj10LWU7cmV0dXJuIHI/b0R0KGUscik6c3coaXNOYU4oZSk/dDplKX12YXIgSXR0PU0oKCk9PntQdHQoKX0pO2Z1bmN0aW9uIGxEdChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkociksYSxzO2ZvcihhPTA7YTxyOysrYSlzPW93KHRbYV0pLG5bYV09cy5yfHwwLGlbYV09cy5nfHwwLG9bYV09cy5ifHwwO3JldHVybiBuPWUobiksaT1lKGkpLG89ZShvKSxzLm9wYWNpdHk9MSxmdW5jdGlvbihsKXtyZXR1cm4gcy5yPW4obCkscy5nPWkobCkscy5iPW8obCkscysiIn19fXZhciBMdHQsSkVuLFFFbixjRHQ9TSgoKT0+e2F3KCk7QXR0KCk7aUR0KCk7SXR0KCk7THR0PWZ1bmN0aW9uIGUodCl7dmFyIHI9c0R0KHQpO2Z1bmN0aW9uIG4oaSxvKXt2YXIgYT1yKChpPW93KGkpKS5yLChvPW93KG8pKS5yKSxzPXIoaS5nLG8uZyksbD1yKGkuYixvLmIpLGM9bmQoaS5vcGFjaXR5LG8ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBpLnI9YSh1KSxpLmc9cyh1KSxpLmI9bCh1KSxpLm9wYWNpdHk9Yyh1KSxpKyIifX1yZXR1cm4gbi5nYW1tYT1lLG59KDEpO0pFbj1sRHQockR0KSxRRW49bER0KG5EdCl9KTtmdW5jdGlvbiB1RHQoZSx0KXt0fHwodD1bXSk7dmFyIHI9ZT9NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCk6MCxuPXQuc2xpY2UoKSxpO3JldHVybiBmdW5jdGlvbihvKXtmb3IoaT0wO2k8cjsrK2kpbltpXT1lW2ldKigxLW8pK3RbaV0qbztyZXR1cm4gbn19ZnVuY3Rpb24gaER0KGUpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJiEoZSBpbnN0YW5jZW9mIERhdGFWaWV3KX12YXIgZkR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBwRHQoZSx0KXt2YXIgcj10P3QubGVuZ3RoOjAsbj1lP01hdGgubWluKHIsZS5sZW5ndGgpOjAsaT1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkociksYTtmb3IoYT0wO2E8bjsrK2EpaVthXT1udihlW2FdLHRbYV0pO2Zvcig7YTxyOysrYSlvW2FdPXRbYV07cmV0dXJuIGZ1bmN0aW9uKHMpe2ZvcihhPTA7YTxuOysrYSlvW2FdPWlbYV0ocyk7cmV0dXJuIG99fXZhciBkRHQ9TSgoKT0+e2tPKCl9KTtmdW5jdGlvbiBtRHQoZSx0KXt2YXIgcj1uZXcgRGF0ZTtyZXR1cm4gZT0rZSx0PSt0LGZ1bmN0aW9uKG4pe3JldHVybiByLnNldFRpbWUoZSooMS1uKSt0Km4pLHJ9fXZhciBnRHQ9TSgoKT0+e30pO2Z1bmN0aW9uIF9mKGUsdCl7cmV0dXJuIGU9K2UsdD0rdCxmdW5jdGlvbihyKXtyZXR1cm4gZSooMS1yKSt0KnJ9fXZhciBSTz1NKCgpPT57fSk7ZnVuY3Rpb24gX0R0KGUsdCl7dmFyIHI9e30sbj17fSxpOyhlPT09bnVsbHx8dHlwZW9mIGUhPSJvYmplY3QiKSYmKGU9e30pLCh0PT09bnVsbHx8dHlwZW9mIHQhPSJvYmplY3QiKSYmKHQ9e30pO2ZvcihpIGluIHQpaSBpbiBlP3JbaV09bnYoZVtpXSx0W2ldKTpuW2ldPXRbaV07cmV0dXJuIGZ1bmN0aW9uKG8pe2ZvcihpIGluIHIpbltpXT1yW2ldKG8pO3JldHVybiBufX12YXIgeUR0PU0oKCk9PntrTygpfSk7ZnVuY3Rpb24gTzZlKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiB6NmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpKyIifX1mdW5jdGlvbiB2RHQoZSx0KXt2YXIgcj1SdHQubGFzdEluZGV4PWt0dC5sYXN0SW5kZXg9MCxuLGksbyxhPS0xLHM9W10sbD1bXTtmb3IoZT1lKyIiLHQ9dCsiIjsobj1SdHQuZXhlYyhlKSkmJihpPWt0dC5leGVjKHQpKTspKG89aS5pbmRleCk+ciYmKG89dC5zbGljZShyLG8pLHNbYV0/c1thXSs9bzpzWysrYV09byksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6X2YobixpKX0pKSxyPWt0dC5sYXN0SW5kZXg7cmV0dXJuIHI8dC5sZW5ndGgmJihvPXQuc2xpY2Uociksc1thXT9zW2FdKz1vOnNbKythXT1vKSxzLmxlbmd0aDwyP2xbMF0/ejZlKGxbMF0ueCk6TzZlKHQpOih0PWwubGVuZ3RoLGZ1bmN0aW9uKGMpe2Zvcih2YXIgdT0wLGg7dTx0OysrdSlzWyhoPWxbdV0pLmldPWgueChjKTtyZXR1cm4gcy5qb2luKCIiKX0pfXZhciBSdHQsa3R0LHhEdD1NKCgpPT57Uk8oKTtSdHQ9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLGt0dD1uZXcgUmVnRXhwKFJ0dC5zb3VyY2UsImciKX0pO2Z1bmN0aW9uIG52KGUsdCl7dmFyIHI9dHlwZW9mIHQsbjtyZXR1cm4gdD09bnVsbHx8cj09PSJib29sZWFuIj9zdyh0KToocj09PSJudW1iZXIiP19mOnI9PT0ic3RyaW5nIj8obj1QZyh0KSk/KHQ9bixMdHQpOnZEdDp0IGluc3RhbmNlb2YgUGc/THR0OnQgaW5zdGFuY2VvZiBEYXRlP21EdDpoRHQodCk/dUR0OkFycmF5LmlzQXJyYXkodCk/cER0OnR5cGVvZiB0LnZhbHVlT2YhPSJmdW5jdGlvbiImJnR5cGVvZiB0LnRvU3RyaW5nIT0iZnVuY3Rpb24ifHxpc05hTih0KT9fRHQ6X2YpKGUsdCl9dmFyIGtPPU0oKCk9PnthdygpO2NEdCgpO2REdCgpO2dEdCgpO1JPKCk7eUR0KCk7eER0KCk7UHR0KCk7ZkR0KCl9KTtmdW5jdGlvbiBOdHQoZSx0KXtyZXR1cm4gZT0rZSx0PSt0LGZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLnJvdW5kKGUqKDEtcikrdCpyKX19dmFyIGJEdD1NKCgpPT57fSk7ZnVuY3Rpb24gd0R0KGUpe3JldHVybiBmdW5jdGlvbiB0KHIpe3I9K3I7ZnVuY3Rpb24gbihpLG8pe3ZhciBhPWUoKGk9WGEoaSkpLmgsKG89WGEobykpLmgpLHM9bmQoaS5zLG8ucyksbD1uZChpLmwsby5sKSxjPW5kKGkub3BhY2l0eSxvLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gaS5oPWEodSksaS5zPXModSksaS5sPWwoTWF0aC5wb3codSxyKSksaS5vcGFjaXR5PWModSksaSsiIn19cmV0dXJuIG4uZ2FtbWE9dCxufSgxKX12YXIgRjZlLGx3LFNEdD1NKCgpPT57YXcoKTtJdHQoKTtGNmU9d0R0KGFEdCksbHc9d0R0KG5kKX0pO3ZhciBjdz1NKCgpPT57a08oKTtSTygpO2JEdCgpO1NEdCgpfSk7ZnVuY3Rpb24gdXcoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBOTz1NKCgpPT57fSk7ZnVuY3Rpb24gRE8oZSl7cmV0dXJuK2V9dmFyIER0dD1NKCgpPT57fSk7ZnVuY3Rpb24gdUMoZSx0KXtyZXR1cm4odC09ZT0rZSk/ZnVuY3Rpb24ocil7cmV0dXJuKHItZSkvdH06dXcodCl9ZnVuY3Rpb24gQjZlKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuPWUodD0rdCxyPStyKTtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIGk8PXQ/MDppPj1yPzE6bihpKX19fWZ1bmN0aW9uIEg2ZShlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbj1lKHQ9K3Qscj0rcik7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBpPD0wP3Q6aT49MT9yOm4oaSl9fX1mdW5jdGlvbiBWNmUoZSx0LHIsbil7dmFyIGk9ZVswXSxvPWVbMV0sYT10WzBdLHM9dFsxXTtyZXR1cm4gbzxpPyhpPXIobyxpKSxhPW4ocyxhKSk6KGk9cihpLG8pLGE9bihhLHMpKSxmdW5jdGlvbihsKXtyZXR1cm4gYShpKGwpKX19ZnVuY3Rpb24gVTZlKGUsdCxyLG4pe3ZhciBpPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKS0xLG89bmV3IEFycmF5KGkpLGE9bmV3IEFycmF5KGkpLHM9LTE7Zm9yKGVbaV08ZVswXSYmKGU9ZS5zbGljZSgpLnJldmVyc2UoKSx0PXQuc2xpY2UoKS5yZXZlcnNlKCkpOysrczxpOylvW3NdPXIoZVtzXSxlW3MrMV0pLGFbc109bih0W3NdLHRbcysxXSk7cmV0dXJuIGZ1bmN0aW9uKGwpe3ZhciBjPXBmKGUsbCwxLGkpLTE7cmV0dXJuIGFbY10ob1tjXShsKSl9fWZ1bmN0aW9uIElnKGUsdCl7cmV0dXJuIHQuZG9tYWluKGUuZG9tYWluKCkpLnJhbmdlKGUucmFuZ2UoKSkuaW50ZXJwb2xhdGUoZS5pbnRlcnBvbGF0ZSgpKS5jbGFtcChlLmNsYW1wKCkpfWZ1bmN0aW9uIGlkKGUsdCl7dmFyIHI9TUR0LG49TUR0LGk9bnYsbz0hMSxhLHMsbDtmdW5jdGlvbiBjKCl7cmV0dXJuIGE9TWF0aC5taW4oci5sZW5ndGgsbi5sZW5ndGgpPjI/VTZlOlY2ZSxzPWw9bnVsbCx1fWZ1bmN0aW9uIHUoaCl7cmV0dXJuKHN8fChzPWEocixuLG8/QjZlKGUpOmUsaSkpKSgraCl9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKGgpe3JldHVybihsfHwobD1hKG4scix1QyxvP0g2ZSh0KTp0KSkpKCtoKX0sdS5kb21haW49ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZXcuY2FsbChoLERPKSxjKCkpOnIuc2xpY2UoKX0sdS5yYW5nZT1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1mbC5jYWxsKGgpLGMoKSk6bi5zbGljZSgpfSx1LnJhbmdlUm91bmQ9ZnVuY3Rpb24oaCl7cmV0dXJuIG49ZmwuY2FsbChoKSxpPU50dCxjKCl9LHUuY2xhbXA9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ISFoLGMoKSk6b30sdS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1oLGMoKSk6aX0sYygpfXZhciBNRHQsaEM9TSgoKT0+e2RmKCk7Y3coKTtDZygpO05PKCk7RHR0KCk7TUR0PVswLDFdfSk7ZnVuY3Rpb24gRUR0KGUpe3JldHVybiBNYXRoLmFicyhlPU1hdGgucm91bmQoZSkpPj0xZTIxP2UudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTplLnRvU3RyaW5nKDEwKX1mdW5jdGlvbiBpdihlLHQpe2lmKChyPShlPXQ/ZS50b0V4cG9uZW50aWFsKHQtMSk6ZS50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgcixuPWUuc2xpY2UoMCxyKTtyZXR1cm5bbi5sZW5ndGg+MT9uWzBdK24uc2xpY2UoMik6biwrZS5zbGljZShyKzEpXX12YXIgZkM9TSgoKT0+e30pO2Z1bmN0aW9uIHlmKGUpe3JldHVybiBlPWl2KE1hdGguYWJzKGUpKSxlP2VbMV06TmFOfXZhciBwQz1NKCgpPT57ZkMoKX0pO2Z1bmN0aW9uIFREdChlLHQpe3JldHVybiBmdW5jdGlvbihyLG4pe2Zvcih2YXIgaT1yLmxlbmd0aCxvPVtdLGE9MCxzPWVbMF0sbD0wO2k+MCYmcz4wJiYobCtzKzE+biYmKHM9TWF0aC5tYXgoMSxuLWwpKSxvLnB1c2goci5zdWJzdHJpbmcoaS09cyxpK3MpKSwhKChsKz1zKzEpPm4pKTspcz1lW2E9KGErMSklZS5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKHQpfX12YXIgQ0R0PU0oKCk9Pnt9KTtmdW5jdGlvbiBBRHQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24ocil7cmV0dXJuIGVbK3JdfSl9fXZhciBQRHQ9TSgoKT0+e30pO2Z1bmN0aW9uIExnKGUpe2lmKCEodD1xNmUuZXhlYyhlKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIitlKTt2YXIgdDtyZXR1cm4gbmV3IE9PKHtmaWxsOnRbMV0sYWxpZ246dFsyXSxzaWduOnRbM10sc3ltYm9sOnRbNF0semVybzp0WzVdLHdpZHRoOnRbNl0sY29tbWE6dFs3XSxwcmVjaXNpb246dFs4XSYmdFs4XS5zbGljZSgxKSx0cmltOnRbOV0sdHlwZTp0WzEwXX0pfWZ1bmN0aW9uIE9PKGUpe3RoaXMuZmlsbD1lLmZpbGw9PT12b2lkIDA/IiAiOmUuZmlsbCsiIix0aGlzLmFsaWduPWUuYWxpZ249PT12b2lkIDA/Ij4iOmUuYWxpZ24rIiIsdGhpcy5zaWduPWUuc2lnbj09PXZvaWQgMD8iLSI6ZS5zaWduKyIiLHRoaXMuc3ltYm9sPWUuc3ltYm9sPT09dm9pZCAwPyIiOmUuc3ltYm9sKyIiLHRoaXMuemVybz0hIWUuemVybyx0aGlzLndpZHRoPWUud2lkdGg9PT12b2lkIDA/dm9pZCAwOitlLndpZHRoLHRoaXMuY29tbWE9ISFlLmNvbW1hLHRoaXMucHJlY2lzaW9uPWUucHJlY2lzaW9uPT09dm9pZCAwP3ZvaWQgMDorZS5wcmVjaXNpb24sdGhpcy50cmltPSEhZS50cmltLHRoaXMudHlwZT1lLnR5cGU9PT12b2lkIDA/IiI6ZS50eXBlKyIifXZhciBxNmUsT3R0PU0oKCk9PntxNmU9L14oPzooLik/KFs8Pj1eXSkpPyhbK1wtKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyh+KT8oW2EteiVdKT8kL2k7TGcucHJvdG90eXBlPU9PLnByb3RvdHlwZTtPTy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodGhpcy53aWR0aD09PXZvaWQgMD8iIjpNYXRoLm1heCgxLHRoaXMud2lkdGh8MCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHRoaXMucHJlY2lzaW9uPT09dm9pZCAwPyIiOiIuIitNYXRoLm1heCgwLHRoaXMucHJlY2lzaW9ufDApKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfX0pO2Z1bmN0aW9uIElEdChlKXt0OmZvcih2YXIgdD1lLmxlbmd0aCxyPTEsbj0tMSxpO3I8dDsrK3Ipc3dpdGNoKGVbcl0pe2Nhc2UiLiI6bj1pPXI7YnJlYWs7Y2FzZSIwIjpuPT09MCYmKG49ciksaT1yO2JyZWFrO2RlZmF1bHQ6aWYoIStlW3JdKWJyZWFrIHQ7bj4wJiYobj0wKTticmVha31yZXR1cm4gbj4wP2Uuc2xpY2UoMCxuKStlLnNsaWNlKGkrMSk6ZX12YXIgTER0PU0oKCk9Pnt9KTtmdW5jdGlvbiBrRHQoZSx0KXt2YXIgcj1pdihlLHQpO2lmKCFyKXJldHVybiBlKyIiO3ZhciBuPXJbMF0saT1yWzFdLG89aS0oenR0PU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihpLzMpKSkqMykrMSxhPW4ubGVuZ3RoO3JldHVybiBvPT09YT9uOm8+YT9uK25ldyBBcnJheShvLWErMSkuam9pbigiMCIpOm8+MD9uLnNsaWNlKDAsbykrIi4iK24uc2xpY2Uobyk6IjAuIituZXcgQXJyYXkoMS1vKS5qb2luKCIwIikraXYoZSxNYXRoLm1heCgwLHQrby0xKSlbMF19dmFyIHp0dCxGdHQ9TSgoKT0+e2ZDKCl9KTtmdW5jdGlvbiBCdHQoZSx0KXt2YXIgcj1pdihlLHQpO2lmKCFyKXJldHVybiBlKyIiO3ZhciBuPXJbMF0saT1yWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStuOm4ubGVuZ3RoPmkrMT9uLnNsaWNlKDAsaSsxKSsiLiIrbi5zbGljZShpKzEpOm4rbmV3IEFycmF5KGktbi5sZW5ndGgrMikuam9pbigiMCIpfXZhciBSRHQ9TSgoKT0+e2ZDKCl9KTt2YXIgSHR0LE5EdD1NKCgpPT57ZkMoKTtGdHQoKTtSRHQoKTtIdHQ9eyIlIjpmdW5jdGlvbihlLHQpe3JldHVybihlKjEwMCkudG9GaXhlZCh0KX0sYjpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygyKX0sYzpmdW5jdGlvbihlKXtyZXR1cm4gZSsiIn0sZDpFRHQsZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnRvRXhwb25lbnRpYWwodCl9LGY6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b0ZpeGVkKHQpfSxnOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudG9QcmVjaXNpb24odCl9LG86ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQoZSkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQnR0KGUqMTAwLHQpfSxyOkJ0dCxzOmtEdCxYOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKGUpLnRvU3RyaW5nKDE2KX19fSk7ZnVuY3Rpb24gVnR0KGUpe3JldHVybiBlfXZhciBERHQ9TSgoKT0+e30pO2Z1bmN0aW9uIEZEdChlKXt2YXIgdD1lLmdyb3VwaW5nPT09dm9pZCAwfHxlLnRob3VzYW5kcz09PXZvaWQgMD9WdHQ6VER0KE9EdC5jYWxsKGUuZ3JvdXBpbmcsTnVtYmVyKSxlLnRob3VzYW5kcysiIikscj1lLmN1cnJlbmN5PT09dm9pZCAwPyIiOmUuY3VycmVuY3lbMF0rIiIsbj1lLmN1cnJlbmN5PT09dm9pZCAwPyIiOmUuY3VycmVuY3lbMV0rIiIsaT1lLmRlY2ltYWw9PT12b2lkIDA/Ii4iOmUuZGVjaW1hbCsiIixvPWUubnVtZXJhbHM9PT12b2lkIDA/VnR0OkFEdChPRHQuY2FsbChlLm51bWVyYWxzLFN0cmluZykpLGE9ZS5wZXJjZW50PT09dm9pZCAwPyIlIjplLnBlcmNlbnQrIiIscz1lLm1pbnVzPT09dm9pZCAwPyItIjplLm1pbnVzKyIiLGw9ZS5uYW49PT12b2lkIDA/Ik5hTiI6ZS5uYW4rIiI7ZnVuY3Rpb24gYyhoKXtoPUxnKGgpO3ZhciBmPWguZmlsbCxwPWguYWxpZ24sZD1oLnNpZ24sZz1oLnN5bWJvbCxfPWguemVybyx5PWgud2lkdGgseD1oLmNvbW1hLGI9aC5wcmVjaXNpb24sUz1oLnRyaW0sQz1oLnR5cGU7Qz09PSJuIj8oeD0hMCxDPSJnIik6SHR0W0NdfHwoYj09PXZvaWQgMCYmKGI9MTIpLFM9ITAsQz0iZyIpLChffHxmPT09IjAiJiZwPT09Ij0iKSYmKF89ITAsZj0iMCIscD0iPSIpO3ZhciBQPWc9PT0iJCI/cjpnPT09IiMiJiYvW2JveFhdLy50ZXN0KEMpPyIwIitDLnRvTG93ZXJDYXNlKCk6IiIsaz1nPT09IiQiP246L1slcF0vLnRlc3QoQyk/YToiIixPPUh0dFtDXSxEPS9bZGVmZ3BycyVdLy50ZXN0KEMpO2I9Yj09PXZvaWQgMD82Oi9bZ3Byc10vLnRlc3QoQyk/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxiKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxiKSk7ZnVuY3Rpb24gQihJKXt2YXIgTD1QLFI9ayxGLHosVTtpZihDPT09ImMiKVI9TyhJKStSLEk9IiI7ZWxzZXtJPStJO3ZhciBXPUk8MHx8MS9JPDA7aWYoST1pc05hTihJKT9sOk8oTWF0aC5hYnMoSSksYiksUyYmKEk9SUR0KEkpKSxXJiYrST09MCYmZCE9PSIrIiYmKFc9ITEpLEw9KFc/ZD09PSIoIj9kOnM6ZD09PSItInx8ZD09PSIoIj8iIjpkKStMLFI9KEM9PT0icyI/ekR0WzgrenR0LzNdOiIiKStSKyhXJiZkPT09IigiPyIpIjoiIiksRCl7Zm9yKEY9LTEsej1JLmxlbmd0aDsrK0Y8ejspaWYoVT1JLmNoYXJDb2RlQXQoRiksNDg+VXx8VT41Nyl7Uj0oVT09PTQ2P2krSS5zbGljZShGKzEpOkkuc2xpY2UoRikpK1IsST1JLnNsaWNlKDAsRik7YnJlYWt9fX14JiYhXyYmKEk9dChJLDEvMCkpO3ZhciBaPUwubGVuZ3RoK0kubGVuZ3RoK1IubGVuZ3RoLHJ0PVo8eT9uZXcgQXJyYXkoeS1aKzEpLmpvaW4oZik6IiI7c3dpdGNoKHgmJl8mJihJPXQocnQrSSxydC5sZW5ndGg/eS1SLmxlbmd0aDoxLzApLHJ0PSIiKSxwKXtjYXNlIjwiOkk9TCtJK1IrcnQ7YnJlYWs7Y2FzZSI9IjpJPUwrcnQrSStSO2JyZWFrO2Nhc2UiXiI6ST1ydC5zbGljZSgwLFo9cnQubGVuZ3RoPj4xKStMK0krUitydC5zbGljZShaKTticmVhaztkZWZhdWx0Okk9cnQrTCtJK1I7YnJlYWt9cmV0dXJuIG8oSSl9cmV0dXJuIEIudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaCsiIn0sQn1mdW5jdGlvbiB1KGgsZil7dmFyIHA9YygoaD1MZyhoKSxoLnR5cGU9ImYiLGgpKSxkPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcih5ZihmKS8zKSkpKjMsZz1NYXRoLnBvdygxMCwtZCksXz16RHRbOCtkLzNdO3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4gcChnKnkpK199fXJldHVybntmb3JtYXQ6Yyxmb3JtYXRQcmVmaXg6dX19dmFyIE9EdCx6RHQsQkR0PU0oKCk9PntwQygpO0NEdCgpO1BEdCgpO090dCgpO0xEdCgpO05EdCgpO0Z0dCgpO0REdCgpO09EdD1BcnJheS5wcm90b3R5cGUubWFwLHpEdD1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIlx4QjUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXX0pO2Z1bmN0aW9uIFV0dChlKXtyZXR1cm4gek89RkR0KGUpLGh3PXpPLmZvcm1hdCxGTz16Ty5mb3JtYXRQcmVmaXgsek99dmFyIHpPLGh3LEZPLEhEdD1NKCgpPT57QkR0KCk7VXR0KHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KX0pO2Z1bmN0aW9uIHF0dChlKXtyZXR1cm4gTWF0aC5tYXgoMCwteWYoTWF0aC5hYnMoZSkpKX12YXIgVkR0PU0oKCk9PntwQygpfSk7ZnVuY3Rpb24gR3R0KGUsdCl7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKHlmKHQpLzMpKSkqMy15ZihNYXRoLmFicyhlKSkpfXZhciBVRHQ9TSgoKT0+e3BDKCl9KTtmdW5jdGlvbiBXdHQoZSx0KXtyZXR1cm4gZT1NYXRoLmFicyhlKSx0PU1hdGguYWJzKHQpLWUsTWF0aC5tYXgoMCx5Zih0KS15ZihlKSkrMX12YXIgcUR0PU0oKCk9PntwQygpfSk7dmFyIFl0dD1NKCgpPT57SER0KCk7T3R0KCk7VkR0KCk7VUR0KCk7cUR0KCl9KTtmdW5jdGlvbiBHRHQoZSx0LHIpe3ZhciBuPWVbMF0saT1lW2UubGVuZ3RoLTFdLG89WnkobixpLHQ9PW51bGw/MTA6dCksYTtzd2l0Y2gocj1MZyhyPT1udWxsPyIsZiI6ciksci50eXBlKXtjYXNlInMiOnt2YXIgcz1NYXRoLm1heChNYXRoLmFicyhuKSxNYXRoLmFicyhpKSk7cmV0dXJuIHIucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4oYT1HdHQobyxzKSkmJihyLnByZWNpc2lvbj1hKSxGTyhyLHMpfWNhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOntyLnByZWNpc2lvbj09bnVsbCYmIWlzTmFOKGE9V3R0KG8sTWF0aC5tYXgoTWF0aC5hYnMobiksTWF0aC5hYnMoaSkpKSkmJihyLnByZWNpc2lvbj1hLShyLnR5cGU9PT0iZSIpKTticmVha31jYXNlImYiOmNhc2UiJSI6e3IucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4oYT1xdHQobykpJiYoci5wcmVjaXNpb249YS0oci50eXBlPT09IiUiKSoyKTticmVha319cmV0dXJuIGh3KHIpfXZhciBXRHQ9TSgoKT0+e2RmKCk7WXR0KCl9KTtmdW5jdGlvbiBvZChlKXt2YXIgdD1lLmRvbWFpbjtyZXR1cm4gZS50aWNrcz1mdW5jdGlvbihyKXt2YXIgbj10KCk7cmV0dXJuIGlDKG5bMF0sbltuLmxlbmd0aC0xXSxyPT1udWxsPzEwOnIpfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24ocixuKXtyZXR1cm4gR0R0KHQoKSxyLG4pfSxlLm5pY2U9ZnVuY3Rpb24ocil7cj09bnVsbCYmKHI9MTApO3ZhciBuPXQoKSxpPTAsbz1uLmxlbmd0aC0xLGE9bltpXSxzPW5bb10sbDtyZXR1cm4gczxhJiYobD1hLGE9cyxzPWwsbD1pLGk9byxvPWwpLGw9dHcoYSxzLHIpLGw+MD8oYT1NYXRoLmZsb29yKGEvbCkqbCxzPU1hdGguY2VpbChzL2wpKmwsbD10dyhhLHMscikpOmw8MCYmKGE9TWF0aC5jZWlsKGEqbCkvbCxzPU1hdGguZmxvb3IocypsKS9sLGw9dHcoYSxzLHIpKSxsPjA/KG5baV09TWF0aC5mbG9vcihhL2wpKmwsbltvXT1NYXRoLmNlaWwocy9sKSpsLHQobikpOmw8MCYmKG5baV09TWF0aC5jZWlsKGEqbCkvbCxuW29dPU1hdGguZmxvb3IocypsKS9sLHQobikpLGV9LGV9ZnVuY3Rpb24gQk8oKXt2YXIgZT1pZCh1QyxfZik7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBJZyhlLEJPKCkpfSxvZChlKX12YXIgZnc9TSgoKT0+e2RmKCk7Y3coKTtoQygpO1dEdCgpfSk7ZnVuY3Rpb24gSE8oKXt2YXIgZT1bMCwxXTtmdW5jdGlvbiB0KHIpe3JldHVybityfXJldHVybiB0LmludmVydD10LHQuZG9tYWluPXQucmFuZ2U9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ZXcuY2FsbChyLERPKSx0KTplLnNsaWNlKCl9LHQuY29weT1mdW5jdGlvbigpe3JldHVybiBITygpLmRvbWFpbihlKX0sb2QodCl9dmFyIFlEdD1NKCgpPT57Q2coKTtmdygpO0R0dCgpfSk7ZnVuY3Rpb24gVk8oZSx0KXtlPWUuc2xpY2UoKTt2YXIgcj0wLG49ZS5sZW5ndGgtMSxpPWVbcl0sbz1lW25dLGE7cmV0dXJuIG88aSYmKGE9cixyPW4sbj1hLGE9aSxpPW8sbz1hKSxlW3JdPXQuZmxvb3IoaSksZVtuXT10LmNlaWwobyksZX12YXIganR0PU0oKCk9Pnt9KTtmdW5jdGlvbiBHNmUoZSx0KXtyZXR1cm4odD1NYXRoLmxvZyh0L2UpKT9mdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5sb2coci9lKS90fTp1dyh0KX1mdW5jdGlvbiBXNmUoZSx0KXtyZXR1cm4gZTwwP2Z1bmN0aW9uKHIpe3JldHVybi1NYXRoLnBvdygtdCxyKSpNYXRoLnBvdygtZSwxLXIpfTpmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5wb3codCxyKSpNYXRoLnBvdyhlLDEtcil9fWZ1bmN0aW9uIFk2ZShlKXtyZXR1cm4gaXNGaW5pdGUoZSk/KygiMWUiK2UpOmU8MD8wOmV9ZnVuY3Rpb24gakR0KGUpe3JldHVybiBlPT09MTA/WTZlOmU9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIFhEdChlKXtyZXR1cm4gZT09PU1hdGguRT9NYXRoLmxvZzplPT09MTAmJk1hdGgubG9nMTB8fGU9PT0yJiZNYXRoLmxvZzJ8fChlPU1hdGgubG9nKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9lfSl9ZnVuY3Rpb24gJER0KGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4tZSgtdCl9fWZ1bmN0aW9uIFVPKCl7dmFyIGU9aWQoRzZlLFc2ZSkuZG9tYWluKFsxLDEwXSksdD1lLmRvbWFpbixyPTEwLG49WER0KDEwKSxpPWpEdCgxMCk7ZnVuY3Rpb24gbygpe3JldHVybiBuPVhEdChyKSxpPWpEdChyKSx0KClbMF08MCYmKG49JER0KG4pLGk9JER0KGkpKSxlfXJldHVybiBlLmJhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2EsbygpKTpyfSxlLmRvbWFpbj1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odChhKSxvKCkpOnQoKX0sZS50aWNrcz1mdW5jdGlvbihhKXt2YXIgcz10KCksbD1zWzBdLGM9c1tzLmxlbmd0aC0xXSx1Oyh1PWM8bCkmJihoPWwsbD1jLGM9aCk7dmFyIGg9bihsKSxmPW4oYykscCxkLGcsXz1hPT1udWxsPzEwOithLHk9W107aWYoIShyJTEpJiZmLWg8Xyl7aWYoaD1NYXRoLnJvdW5kKGgpLTEsZj1NYXRoLnJvdW5kKGYpKzEsbD4wKXtmb3IoO2g8ZjsrK2gpZm9yKGQ9MSxwPWkoaCk7ZDxyOysrZClpZihnPXAqZCwhKGc8bCkpe2lmKGc+YylicmVhazt5LnB1c2goZyl9fWVsc2UgZm9yKDtoPGY7KytoKWZvcihkPXItMSxwPWkoaCk7ZD49MTstLWQpaWYoZz1wKmQsIShnPGwpKXtpZihnPmMpYnJlYWs7eS5wdXNoKGcpfX1lbHNlIHk9aUMoaCxmLE1hdGgubWluKGYtaCxfKSkubWFwKGkpO3JldHVybiB1P3kucmV2ZXJzZSgpOnl9LGUudGlja0Zvcm1hdD1mdW5jdGlvbihhLHMpe2lmKHM9PW51bGwmJihzPXI9PT0xMD8iLjBlIjoiLCIpLHR5cGVvZiBzIT0iZnVuY3Rpb24iJiYocz1odyhzKSksYT09PTEvMClyZXR1cm4gczthPT1udWxsJiYoYT0xMCk7dmFyIGw9TWF0aC5tYXgoMSxyKmEvZS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKGMpe3ZhciB1PWMvaShNYXRoLnJvdW5kKG4oYykpKTtyZXR1cm4gdSpyPHItLjUmJih1Kj1yKSx1PD1sP3MoYyk6IiJ9fSxlLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdChWTyh0KCkse2Zsb29yOmZ1bmN0aW9uKGEpe3JldHVybiBpKE1hdGguZmxvb3IobihhKSkpfSxjZWlsOmZ1bmN0aW9uKGEpe3JldHVybiBpKE1hdGguY2VpbChuKGEpKSl9fSkpfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gSWcoZSxVTygpLmJhc2UocikpfSxlfXZhciBLRHQ9TSgoKT0+e2RmKCk7WXR0KCk7Tk8oKTtqdHQoKTtoQygpfSk7ZnVuY3Rpb24gcHcoZSx0KXtyZXR1cm4gZTwwPy1NYXRoLnBvdygtZSx0KTpNYXRoLnBvdyhlLHQpfWZ1bmN0aW9uIGRDKCl7dmFyIGU9MSx0PWlkKG4saSkscj10LmRvbWFpbjtmdW5jdGlvbiBuKG8sYSl7cmV0dXJuKGE9cHcoYSxlKS0obz1wdyhvLGUpKSk/ZnVuY3Rpb24ocyl7cmV0dXJuKHB3KHMsZSktbykvYX06dXcoYSl9ZnVuY3Rpb24gaShvLGEpe3JldHVybiBhPXB3KGEsZSktKG89cHcobyxlKSksZnVuY3Rpb24ocyl7cmV0dXJuIHB3KG8rYSpzLDEvZSl9fXJldHVybiB0LmV4cG9uZW50PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPStvLHIocigpKSk6ZX0sdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIElnKHQsZEMoKS5leHBvbmVudChlKSl9LG9kKHQpfWZ1bmN0aW9uIFpEdCgpe3JldHVybiBkQygpLmV4cG9uZW50KC41KX12YXIgSkR0PU0oKCk9PntOTygpO2Z3KCk7aEMoKX0pO2Z1bmN0aW9uIHFPKCl7dmFyIGU9W10sdD1bXSxyPVtdO2Z1bmN0aW9uIG4oKXt2YXIgbz0wLGE9TWF0aC5tYXgoMSx0Lmxlbmd0aCk7Zm9yKHI9bmV3IEFycmF5KGEtMSk7KytvPGE7KXJbby0xXT1vQyhlLG8vYSk7cmV0dXJuIGl9ZnVuY3Rpb24gaShvKXtpZighaXNOYU4obz0rbykpcmV0dXJuIHRbcGYocixvKV19cmV0dXJuIGkuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKG8pe3ZhciBhPXQuaW5kZXhPZihvKTtyZXR1cm4gYTwwP1tOYU4sTmFOXTpbYT4wP3JbYS0xXTplWzBdLGE8ci5sZW5ndGg/clthXTplW2UubGVuZ3RoLTFdXX0saS5kb21haW49ZnVuY3Rpb24obyl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdO2Zvcih2YXIgYT0wLHM9by5sZW5ndGgsbDthPHM7KythKWw9b1thXSxsIT1udWxsJiYhaXNOYU4obD0rbCkmJmUucHVzaChsKTtyZXR1cm4gZS5zb3J0KGZmKSxuKCl9LGkucmFuZ2U9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZmwuY2FsbChvKSxuKCkpOnQuc2xpY2UoKX0saS5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gci5zbGljZSgpfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gcU8oKS5kb21haW4oZSkucmFuZ2UodCl9LGl9dmFyIFFEdD1NKCgpPT57ZGYoKTtDZygpfSk7ZnVuY3Rpb24gR08oKXt2YXIgZT0wLHQ9MSxyPTEsbj1bLjVdLGk9WzAsMV07ZnVuY3Rpb24gbyhzKXtpZihzPD1zKXJldHVybiBpW3BmKG4scywwLHIpXX1mdW5jdGlvbiBhKCl7dmFyIHM9LTE7Zm9yKG49bmV3IEFycmF5KHIpOysrczxyOyluW3NdPSgocysxKSp0LShzLXIpKmUpLyhyKzEpO3JldHVybiBvfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rc1swXSx0PStzWzFdLGEoKSk6W2UsdF19LG8ucmFuZ2U9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9KGk9ZmwuY2FsbChzKSkubGVuZ3RoLTEsYSgpKTppLnNsaWNlKCl9LG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHMpe3ZhciBsPWkuaW5kZXhPZihzKTtyZXR1cm4gbDwwP1tOYU4sTmFOXTpsPDE/W2UsblswXV06bD49cj9bbltyLTFdLHRdOltuW2wtMV0sbltsXV19LG8uY29weT1mdW5jdGlvbigpe3JldHVybiBHTygpLmRvbWFpbihbZSx0XSkucmFuZ2UoaSl9LG9kKG8pfXZhciB0T3Q9TSgoKT0+e2RmKCk7Q2coKTtmdygpfSk7ZnVuY3Rpb24gV08oKXt2YXIgZT1bLjVdLHQ9WzAsMV0scj0xO2Z1bmN0aW9uIG4oaSl7aWYoaTw9aSlyZXR1cm4gdFtwZihlLGksMCxyKV19cmV0dXJuIG4uZG9tYWluPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWZsLmNhbGwoaSkscj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aC0xKSxuKTplLnNsaWNlKCl9LG4ucmFuZ2U9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZmwuY2FsbChpKSxyPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoLTEpLG4pOnQuc2xpY2UoKX0sbi5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24oaSl7dmFyIG89dC5pbmRleE9mKGkpO3JldHVybltlW28tMV0sZVtvXV19LG4uY29weT1mdW5jdGlvbigpe3JldHVybiBXTygpLmRvbWFpbihlKS5yYW5nZSh0KX0sbn12YXIgZU90PU0oKCk9PntkZigpO0NnKCl9KTtmdW5jdGlvbiBOcihlLHQscixuKXtmdW5jdGlvbiBpKG8pe3JldHVybiBlKG89YXJndW1lbnRzLmxlbmd0aD09PTA/bmV3IERhdGU6bmV3IERhdGUoK28pKSxvfXJldHVybiBpLmZsb29yPWZ1bmN0aW9uKG8pe3JldHVybiBlKG89bmV3IERhdGUoK28pKSxvfSxpLmNlaWw9ZnVuY3Rpb24obyl7cmV0dXJuIGUobz1uZXcgRGF0ZShvLTEpKSx0KG8sMSksZShvKSxvfSxpLnJvdW5kPWZ1bmN0aW9uKG8pe3ZhciBhPWkobykscz1pLmNlaWwobyk7cmV0dXJuIG8tYTxzLW8/YTpzfSxpLm9mZnNldD1mdW5jdGlvbihvLGEpe3JldHVybiB0KG89bmV3IERhdGUoK28pLGE9PW51bGw/MTpNYXRoLmZsb29yKGEpKSxvfSxpLnJhbmdlPWZ1bmN0aW9uKG8sYSxzKXt2YXIgbD1bXSxjO2lmKG89aS5jZWlsKG8pLHM9cz09bnVsbD8xOk1hdGguZmxvb3IocyksIShvPGEpfHwhKHM+MCkpcmV0dXJuIGw7ZG8gbC5wdXNoKGM9bmV3IERhdGUoK28pKSx0KG8scyksZShvKTt3aGlsZShjPG8mJm88YSk7cmV0dXJuIGx9LGkuZmlsdGVyPWZ1bmN0aW9uKG8pe3JldHVybiBOcihmdW5jdGlvbihhKXtpZihhPj1hKWZvcig7ZShhKSwhbyhhKTspYS5zZXRUaW1lKGEtMSl9LGZ1bmN0aW9uKGEscyl7aWYoYT49YSlpZihzPDApZm9yKDsrK3M8PTA7KWZvcig7dChhLC0xKSwhbyhhKTspO2Vsc2UgZm9yKDstLXM+PTA7KWZvcig7dChhLDEpLCFvKGEpOyk7fSl9LHImJihpLmNvdW50PWZ1bmN0aW9uKG8sYSl7cmV0dXJuIFh0dC5zZXRUaW1lKCtvKSwkdHQuc2V0VGltZSgrYSksZShYdHQpLGUoJHR0KSxNYXRoLmZsb29yKHIoWHR0LCR0dCkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKG8pe3JldHVybiBvPU1hdGguZmxvb3IobyksIWlzRmluaXRlKG8pfHwhKG8+MCk/bnVsbDpvPjE/aS5maWx0ZXIobj9mdW5jdGlvbihhKXtyZXR1cm4gbihhKSVvPT09MH06ZnVuY3Rpb24oYSl7cmV0dXJuIGkuY291bnQoMCxhKSVvPT09MH0pOml9KSxpfXZhciBYdHQsJHR0LCRhPU0oKCk9PntYdHQ9bmV3IERhdGUsJHR0PW5ldyBEYXRlfSk7dmFyIFlPLGR3LHJPdCxuT3Q9TSgoKT0+eyRhKCk7WU89TnIoZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LWV9KTtZTy5ldmVyeT1mdW5jdGlvbihlKXtyZXR1cm4gZT1NYXRoLmZsb29yKGUpLCFpc0Zpbml0ZShlKXx8IShlPjApP251bGw6ZT4xP05yKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvZSkqZSl9LGZ1bmN0aW9uKHQscil7dC5zZXRUaW1lKCt0K3IqZSl9LGZ1bmN0aW9uKHQscil7cmV0dXJuKHItdCkvZX0pOllPfTtkdz1ZTyxyT3Q9WU8ucmFuZ2V9KTt2YXIgb3YseGMsbXcsak8sWE8sdmY9TSgoKT0+e292PTFlMyx4Yz02ZTQsbXc9MzZlNSxqTz04NjRlNSxYTz02MDQ4ZTV9KTt2YXIgaU90LGd3LG9PdCxhT3Q9TSgoKT0+eyRhKCk7dmYoKTtpT3Q9TnIoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKGUtZS5nZXRNaWxsaXNlY29uZHMoKSl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3Qqb3YpfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL292fSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENTZWNvbmRzKCl9KSxndz1pT3Qsb090PWlPdC5yYW5nZX0pO3ZhciBzT3QsS3R0LGo2ZSxsT3Q9TSgoKT0+eyRhKCk7dmYoKTtzT3Q9TnIoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKGUtZS5nZXRNaWxsaXNlY29uZHMoKS1lLmdldFNlY29uZHMoKSpvdil9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QqeGMpfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL3hjfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNaW51dGVzKCl9KSxLdHQ9c090LGo2ZT1zT3QucmFuZ2V9KTt2YXIgY090LFp0dCxYNmUsdU90PU0oKCk9PnskYSgpO3ZmKCk7Y090PU5yKGZ1bmN0aW9uKGUpe2Uuc2V0VGltZShlLWUuZ2V0TWlsbGlzZWNvbmRzKCktZS5nZXRTZWNvbmRzKCkqb3YtZS5nZXRNaW51dGVzKCkqeGMpfSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0Km13KX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS9td30sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG91cnMoKX0pLFp0dD1jT3QsWDZlPWNPdC5yYW5nZX0pO3ZhciBoT3QsX3csJDZlLGZPdD1NKCgpPT57JGEoKTt2ZigpO2hPdD1OcihmdW5jdGlvbihlKXtlLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0RGF0ZShlLmdldERhdGUoKSt0KX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lLSh0LmdldFRpbWV6b25lT2Zmc2V0KCktZS5nZXRUaW1lem9uZU9mZnNldCgpKSp4Yykvak99LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldERhdGUoKS0xfSksX3c9aE90LCQ2ZT1oT3QucmFuZ2V9KTtmdW5jdGlvbiBhdihlKXtyZXR1cm4gTnIoZnVuY3Rpb24odCl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpLSh0LmdldERheSgpKzctZSklNyksdC5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxyKXt0LnNldERhdGUodC5nZXREYXRlKCkrcio3KX0sZnVuY3Rpb24odCxyKXtyZXR1cm4oci10LShyLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSp4YykvWE99KX12YXIgc3YseXcscE90LGRPdCxrZyxtT3QsZ090LF9PdCxLNmUsWjZlLEo2ZSxRNmUsdEllLGVJZSx5T3Q9TSgoKT0+eyRhKCk7dmYoKTtzdj1hdigwKSx5dz1hdigxKSxwT3Q9YXYoMiksZE90PWF2KDMpLGtnPWF2KDQpLG1PdD1hdig1KSxnT3Q9YXYoNiksX090PXN2LnJhbmdlLEs2ZT15dy5yYW5nZSxaNmU9cE90LnJhbmdlLEo2ZT1kT3QucmFuZ2UsUTZlPWtnLnJhbmdlLHRJZT1tT3QucmFuZ2UsZUllPWdPdC5yYW5nZX0pO3ZhciB2T3QsSnR0LHJJZSx4T3Q9TSgoKT0+eyRhKCk7dk90PU5yKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZSgxKSxlLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0TW9udGgoZS5nZXRNb250aCgpK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldE1vbnRoKCktZS5nZXRNb250aCgpKyh0LmdldEZ1bGxZZWFyKCktZS5nZXRGdWxsWWVhcigpKSoxMn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0TW9udGgoKX0pLEp0dD12T3QsckllPXZPdC5yYW5nZX0pO3ZhciBRdHQsYWQsbkllLGJPdD1NKCgpPT57JGEoKTtRdHQ9TnIoZnVuY3Rpb24oZSl7ZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKS1lLmdldEZ1bGxZZWFyKCl9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCl9KTtRdHQuZXZlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIWlzRmluaXRlKGU9TWF0aC5mbG9vcihlKSl8fCEoZT4wKT9udWxsOk5yKGZ1bmN0aW9uKHQpe3Quc2V0RnVsbFllYXIoTWF0aC5mbG9vcih0LmdldEZ1bGxZZWFyKCkvZSkqZSksdC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQscil7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrciplKX0pfTthZD1RdHQsbkllPVF0dC5yYW5nZX0pO3ZhciB3T3QsdGV0LGlJZSxTT3Q9TSgoKT0+eyRhKCk7dmYoKTt3T3Q9TnIoZnVuY3Rpb24oZSl7ZS5zZXRVVENTZWNvbmRzKDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QqeGMpfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL3hjfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENNaW51dGVzKCl9KSx0ZXQ9d090LGlJZT13T3QucmFuZ2V9KTt2YXIgTU90LGVldCxvSWUsRU90PU0oKCk9PnskYSgpO3ZmKCk7TU90PU5yKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDTWludXRlcygwLDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QqbXcpfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL213fSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENIb3VycygpfSksZWV0PU1PdCxvSWU9TU90LnJhbmdlfSk7dmFyIFRPdCx2dyxhSWUsQ090PU0oKCk9PnskYSgpO3ZmKCk7VE90PU5yKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL2pPfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENEYXRlKCktMX0pLHZ3PVRPdCxhSWU9VE90LnJhbmdlfSk7ZnVuY3Rpb24gbHYoZSl7cmV0dXJuIE5yKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKS0odC5nZXRVVENEYXkoKSs3LWUpJTcpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQscil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK3IqNyl9LGZ1bmN0aW9uKHQscil7cmV0dXJuKHItdCkvWE99KX12YXIgY3YseHcsQU90LFBPdCxSZyxJT3QsTE90LGtPdCxzSWUsbEllLGNJZSx1SWUsaEllLGZJZSxST3Q9TSgoKT0+eyRhKCk7dmYoKTtjdj1sdigwKSx4dz1sdigxKSxBT3Q9bHYoMiksUE90PWx2KDMpLFJnPWx2KDQpLElPdD1sdig1KSxMT3Q9bHYoNiksa090PWN2LnJhbmdlLHNJZT14dy5yYW5nZSxsSWU9QU90LnJhbmdlLGNJZT1QT3QucmFuZ2UsdUllPVJnLnJhbmdlLGhJZT1JT3QucmFuZ2UsZkllPUxPdC5yYW5nZX0pO3ZhciBOT3QscmV0LHBJZSxET3Q9TSgoKT0+eyRhKCk7Tk90PU5yKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZSgxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0VVRDTW9udGgoZS5nZXRVVENNb250aCgpK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCktZS5nZXRVVENNb250aCgpKyh0LmdldFVUQ0Z1bGxZZWFyKCktZS5nZXRVVENGdWxsWWVhcigpKSoxMn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKX0pLHJldD1OT3QscEllPU5PdC5yYW5nZX0pO3ZhciBuZXQsc2QsZEllLE9PdD1NKCgpPT57JGEoKTtuZXQ9TnIoZnVuY3Rpb24oZSl7ZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKS1lLmdldFVUQ0Z1bGxZZWFyKCl9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCl9KTtuZXQuZXZlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIWlzRmluaXRlKGU9TWF0aC5mbG9vcihlKSl8fCEoZT4wKT9udWxsOk5yKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcih0LmdldFVUQ0Z1bGxZZWFyKCkvZSkqZSksdC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQscil7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrciplKX0pfTtzZD1uZXQsZEllPW5ldC5yYW5nZX0pO3ZhciAkTz1NKCgpPT57bk90KCk7YU90KCk7bE90KCk7dU90KCk7Zk90KCk7eU90KCk7eE90KCk7Yk90KCk7U090KCk7RU90KCk7Q090KCk7Uk90KCk7RE90KCk7T090KCl9KTtmdW5jdGlvbiBpZXQoZSl7aWYoMDw9ZS55JiZlLnk8MTAwKXt2YXIgdD1uZXcgRGF0ZSgtMSxlLm0sZS5kLGUuSCxlLk0sZS5TLGUuTCk7cmV0dXJuIHQuc2V0RnVsbFllYXIoZS55KSx0fXJldHVybiBuZXcgRGF0ZShlLnksZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpfWZ1bmN0aW9uIG9ldChlKXtpZigwPD1lLnkmJmUueTwxMDApe3ZhciB0PW5ldyBEYXRlKERhdGUuVVRDKC0xLGUubSxlLmQsZS5ILGUuTSxlLlMsZS5MKSk7cmV0dXJuIHQuc2V0VVRDRnVsbFllYXIoZS55KSx0fXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhlLnksZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpKX1mdW5jdGlvbiBtQyhlLHQscil7cmV0dXJue3k6ZSxtOnQsZDpyLEg6MCxNOjAsUzowLEw6MH19ZnVuY3Rpb24gYWV0KGUpe3ZhciB0PWUuZGF0ZVRpbWUscj1lLmRhdGUsbj1lLnRpbWUsaT1lLnBlcmlvZHMsbz1lLmRheXMsYT1lLnNob3J0RGF5cyxzPWUubW9udGhzLGw9ZS5zaG9ydE1vbnRocyxjPWdDKGkpLHU9X0MoaSksaD1nQyhvKSxmPV9DKG8pLHA9Z0MoYSksZD1fQyhhKSxnPWdDKHMpLF89X0MocykseT1nQyhsKSx4PV9DKGwpLGI9e2E6VyxBOlosYjpydCxCOm90LGM6bnVsbCxkOlVPdCxlOlVPdCxmOnpJZSxnOmpJZSxHOiRJZSxIOk5JZSxJOkRJZSxqOk9JZSxMOmpPdCxtOkZJZSxNOkJJZSxwOnN0LHE6U3QsUTpXT3QsczpZT3QsUzpISWUsdTpWSWUsVTpVSWUsVjpxSWUsdzpHSWUsVzpXSWUseDpudWxsLFg6bnVsbCx5OllJZSxZOlhJZSxaOktJZSwiJSI6R090fSxTPXthOmJ0LEE6TXQsYjpsdCxCOkt0LGM6bnVsbCxkOnFPdCxlOnFPdCxmOnQ5ZSxnOnU5ZSxHOmY5ZSxIOlpJZSxJOkpJZSxqOlFJZSxMOiRPdCxtOmU5ZSxNOnI5ZSxwOl90LHE6Y3QsUTpXT3QsczpZT3QsUzpuOWUsdTppOWUsVTpvOWUsVjphOWUsdzpzOWUsVzpsOWUseDpudWxsLFg6bnVsbCx5OmM5ZSxZOmg5ZSxaOnA5ZSwiJSI6R090fSxDPXthOkIsQTpJLGI6TCxCOlIsYzpGLGQ6SE90LGU6SE90LGY6SUllLGc6Qk90LEc6Rk90LEg6Vk90LEk6Vk90LGo6VEllLEw6UEllLG06RUllLE06Q0llLHA6RCxxOk1JZSxROmtJZSxzOlJJZSxTOkFJZSx1OnZJZSxVOnhJZSxWOmJJZSx3OnlJZSxXOndJZSx4OnosWDpVLHk6Qk90LFk6Rk90LFo6U0llLCIlIjpMSWV9O2IueD1QKHIsYiksYi5YPVAobixiKSxiLmM9UCh0LGIpLFMueD1QKHIsUyksUy5YPVAobixTKSxTLmM9UCh0LFMpO2Z1bmN0aW9uIFAoWCxldCl7cmV0dXJuIGZ1bmN0aW9uKGR0KXt2YXIgcT1bXSxwdD0tMSxodD0wLHd0PVgubGVuZ3RoLGt0LGllLGVlO2ZvcihkdCBpbnN0YW5jZW9mIERhdGV8fChkdD1uZXcgRGF0ZSgrZHQpKTsrK3B0PHd0OylYLmNoYXJDb2RlQXQocHQpPT09MzcmJihxLnB1c2goWC5zbGljZShodCxwdCkpLChpZT16T3Rba3Q9WC5jaGFyQXQoKytwdCldKSE9bnVsbD9rdD1YLmNoYXJBdCgrK3B0KTppZT1rdD09PSJlIj8iICI6IjAiLChlZT1ldFtrdF0pJiYoa3Q9ZWUoZHQsaWUpKSxxLnB1c2goa3QpLGh0PXB0KzEpO3JldHVybiBxLnB1c2goWC5zbGljZShodCxwdCkpLHEuam9pbigiIil9fWZ1bmN0aW9uIGsoWCxldCl7cmV0dXJuIGZ1bmN0aW9uKGR0KXt2YXIgcT1tQygxOTAwLHZvaWQgMCwxKSxwdD1PKHEsWCxkdCs9IiIsMCksaHQsd3Q7aWYocHQhPWR0Lmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBxKXJldHVybiBuZXcgRGF0ZShxLlEpO2lmKCJzImluIHEpcmV0dXJuIG5ldyBEYXRlKHEucyoxZTMrKCJMImluIHE/cS5MOjApKTtpZihldCYmISgiWiJpbiBxKSYmKHEuWj0wKSwicCJpbiBxJiYocS5IPXEuSCUxMitxLnAqMTIpLHEubT09PXZvaWQgMCYmKHEubT0icSJpbiBxP3EucTowKSwiViJpbiBxKXtpZihxLlY8MXx8cS5WPjUzKXJldHVybiBudWxsOyJ3ImluIHF8fChxLnc9MSksIloiaW4gcT8oaHQ9b2V0KG1DKHEueSwwLDEpKSx3dD1odC5nZXRVVENEYXkoKSxodD13dD40fHx3dD09PTA/eHcuY2VpbChodCk6eHcoaHQpLGh0PXZ3Lm9mZnNldChodCwocS5WLTEpKjcpLHEueT1odC5nZXRVVENGdWxsWWVhcigpLHEubT1odC5nZXRVVENNb250aCgpLHEuZD1odC5nZXRVVENEYXRlKCkrKHEudys2KSU3KTooaHQ9aWV0KG1DKHEueSwwLDEpKSx3dD1odC5nZXREYXkoKSxodD13dD40fHx3dD09PTA/eXcuY2VpbChodCk6eXcoaHQpLGh0PV93Lm9mZnNldChodCwocS5WLTEpKjcpLHEueT1odC5nZXRGdWxsWWVhcigpLHEubT1odC5nZXRNb250aCgpLHEuZD1odC5nZXREYXRlKCkrKHEudys2KSU3KX1lbHNlKCJXImluIHF8fCJVImluIHEpJiYoInciaW4gcXx8KHEudz0idSJpbiBxP3EudSU3OiJXImluIHE/MTowKSx3dD0iWiJpbiBxP29ldChtQyhxLnksMCwxKSkuZ2V0VVRDRGF5KCk6aWV0KG1DKHEueSwwLDEpKS5nZXREYXkoKSxxLm09MCxxLmQ9IlciaW4gcT8ocS53KzYpJTcrcS5XKjctKHd0KzUpJTc6cS53K3EuVSo3LSh3dCs2KSU3KTtyZXR1cm4iWiJpbiBxPyhxLkgrPXEuWi8xMDB8MCxxLk0rPXEuWiUxMDAsb2V0KHEpKTppZXQocSl9fWZ1bmN0aW9uIE8oWCxldCxkdCxxKXtmb3IodmFyIHB0PTAsaHQ9ZXQubGVuZ3RoLHd0PWR0Lmxlbmd0aCxrdCxpZTtwdDxodDspe2lmKHE+PXd0KXJldHVybi0xO2lmKGt0PWV0LmNoYXJDb2RlQXQocHQrKyksa3Q9PT0zNyl7aWYoa3Q9ZXQuY2hhckF0KHB0KyspLGllPUNba3QgaW4gek90P2V0LmNoYXJBdChwdCsrKTprdF0sIWllfHwocT1pZShYLGR0LHEpKTwwKXJldHVybi0xfWVsc2UgaWYoa3QhPWR0LmNoYXJDb2RlQXQocSsrKSlyZXR1cm4tMX1yZXR1cm4gcX1mdW5jdGlvbiBEKFgsZXQsZHQpe3ZhciBxPWMuZXhlYyhldC5zbGljZShkdCkpO3JldHVybiBxPyhYLnA9dVtxWzBdLnRvTG93ZXJDYXNlKCldLGR0K3FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCKFgsZXQsZHQpe3ZhciBxPXAuZXhlYyhldC5zbGljZShkdCkpO3JldHVybiBxPyhYLnc9ZFtxWzBdLnRvTG93ZXJDYXNlKCldLGR0K3FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJKFgsZXQsZHQpe3ZhciBxPWguZXhlYyhldC5zbGljZShkdCkpO3JldHVybiBxPyhYLnc9ZltxWzBdLnRvTG93ZXJDYXNlKCldLGR0K3FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBMKFgsZXQsZHQpe3ZhciBxPXkuZXhlYyhldC5zbGljZShkdCkpO3JldHVybiBxPyhYLm09eFtxWzBdLnRvTG93ZXJDYXNlKCldLGR0K3FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBSKFgsZXQsZHQpe3ZhciBxPWcuZXhlYyhldC5zbGljZShkdCkpO3JldHVybiBxPyhYLm09X1txWzBdLnRvTG93ZXJDYXNlKCldLGR0K3FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBGKFgsZXQsZHQpe3JldHVybiBPKFgsdCxldCxkdCl9ZnVuY3Rpb24geihYLGV0LGR0KXtyZXR1cm4gTyhYLHIsZXQsZHQpfWZ1bmN0aW9uIFUoWCxldCxkdCl7cmV0dXJuIE8oWCxuLGV0LGR0KX1mdW5jdGlvbiBXKFgpe3JldHVybiBhW1guZ2V0RGF5KCldfWZ1bmN0aW9uIFooWCl7cmV0dXJuIG9bWC5nZXREYXkoKV19ZnVuY3Rpb24gcnQoWCl7cmV0dXJuIGxbWC5nZXRNb250aCgpXX1mdW5jdGlvbiBvdChYKXtyZXR1cm4gc1tYLmdldE1vbnRoKCldfWZ1bmN0aW9uIHN0KFgpe3JldHVybiBpWysoWC5nZXRIb3VycygpPj0xMildfWZ1bmN0aW9uIFN0KFgpe3JldHVybiAxK35+KFguZ2V0TW9udGgoKS8zKX1mdW5jdGlvbiBidChYKXtyZXR1cm4gYVtYLmdldFVUQ0RheSgpXX1mdW5jdGlvbiBNdChYKXtyZXR1cm4gb1tYLmdldFVUQ0RheSgpXX1mdW5jdGlvbiBsdChYKXtyZXR1cm4gbFtYLmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIEt0KFgpe3JldHVybiBzW1guZ2V0VVRDTW9udGgoKV19ZnVuY3Rpb24gX3QoWCl7cmV0dXJuIGlbKyhYLmdldFVUQ0hvdXJzKCk+PTEyKV19ZnVuY3Rpb24gY3QoWCl7cmV0dXJuIDErfn4oWC5nZXRVVENNb250aCgpLzMpfXJldHVybntmb3JtYXQ6ZnVuY3Rpb24oWCl7dmFyIGV0PVAoWCs9IiIsYik7cmV0dXJuIGV0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFh9LGV0fSxwYXJzZTpmdW5jdGlvbihYKXt2YXIgZXQ9ayhYKz0iIiwhMSk7cmV0dXJuIGV0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFh9LGV0fSx1dGNGb3JtYXQ6ZnVuY3Rpb24oWCl7dmFyIGV0PVAoWCs9IiIsUyk7cmV0dXJuIGV0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFh9LGV0fSx1dGNQYXJzZTpmdW5jdGlvbihYKXt2YXIgZXQ9ayhYKz0iIiwhMCk7cmV0dXJuIGV0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIFh9LGV0fX19ZnVuY3Rpb24gR3IoZSx0LHIpe3ZhciBuPWU8MD8iLSI6IiIsaT0obj8tZTplKSsiIixvPWkubGVuZ3RoO3JldHVybiBuKyhvPHI/bmV3IEFycmF5KHItbysxKS5qb2luKHQpK2k6aSl9ZnVuY3Rpb24gX0llKGUpe3JldHVybiBlLnJlcGxhY2UoZ0llLCJcXCQmIil9ZnVuY3Rpb24gZ0MoZSl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK2UubWFwKF9JZSkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIF9DKGUpe2Zvcih2YXIgdD17fSxyPS0xLG49ZS5sZW5ndGg7KytyPG47KXRbZVtyXS50b0xvd2VyQ2FzZSgpXT1yO3JldHVybiB0fWZ1bmN0aW9uIHlJZShlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIscisxKSk7cmV0dXJuIG4/KGUudz0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB2SWUoZSx0LHIpe3ZhciBuPUVvLmV4ZWModC5zbGljZShyLHIrMSkpO3JldHVybiBuPyhlLnU9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24geEllKGUsdCxyKXt2YXIgbj1Fby5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS5VPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGJJZShlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuVj0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB3SWUoZSx0LHIpe3ZhciBuPUVvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLlc9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRk90KGUsdCxyKXt2YXIgbj1Fby5leGVjKHQuc2xpY2UocixyKzQpKTtyZXR1cm4gbj8oZS55PStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEJPdChlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUueT0rblswXSsoK25bMF0+Njg/MTkwMDoyZTMpLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFNJZShlLHQscil7dmFyIG49L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWModC5zbGljZShyLHIrNikpO3JldHVybiBuPyhlLlo9blsxXT8wOi0oblsyXSsoblszXXx8IjAwIikpLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE1JZShlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIscisxKSk7cmV0dXJuIG4/KGUucT1uWzBdKjMtMyxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBFSWUoZSx0LHIpe3ZhciBuPUVvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLm09blswXS0xLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEhPdChlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuZD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBUSWUoZSx0LHIpe3ZhciBuPUVvLmV4ZWModC5zbGljZShyLHIrMykpO3JldHVybiBuPyhlLm09MCxlLmQ9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVk90KGUsdCxyKXt2YXIgbj1Fby5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS5IPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIENJZShlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuTT0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBBSWUoZSx0LHIpe3ZhciBuPUVvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLlM9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUEllKGUsdCxyKXt2YXIgbj1Fby5leGVjKHQuc2xpY2UocixyKzMpKTtyZXR1cm4gbj8oZS5MPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIElJZShlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIscis2KSk7cmV0dXJuIG4/KGUuTD1NYXRoLmZsb29yKG5bMF0vMWUzKSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBMSWUoZSx0LHIpe3ZhciBuPW1JZS5leGVjKHQuc2xpY2UocixyKzEpKTtyZXR1cm4gbj9yK25bMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIGtJZShlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIpKTtyZXR1cm4gbj8oZS5RPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFJJZShlLHQscil7dmFyIG49RW8uZXhlYyh0LnNsaWNlKHIpKTtyZXR1cm4gbj8oZS5zPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFVPdChlLHQpe3JldHVybiBHcihlLmdldERhdGUoKSx0LDIpfWZ1bmN0aW9uIE5JZShlLHQpe3JldHVybiBHcihlLmdldEhvdXJzKCksdCwyKX1mdW5jdGlvbiBESWUoZSx0KXtyZXR1cm4gR3IoZS5nZXRIb3VycygpJTEyfHwxMix0LDIpfWZ1bmN0aW9uIE9JZShlLHQpe3JldHVybiBHcigxK193LmNvdW50KGFkKGUpLGUpLHQsMyl9ZnVuY3Rpb24gak90KGUsdCl7cmV0dXJuIEdyKGUuZ2V0TWlsbGlzZWNvbmRzKCksdCwzKX1mdW5jdGlvbiB6SWUoZSx0KXtyZXR1cm4gak90KGUsdCkrIjAwMCJ9ZnVuY3Rpb24gRkllKGUsdCl7cmV0dXJuIEdyKGUuZ2V0TW9udGgoKSsxLHQsMil9ZnVuY3Rpb24gQkllKGUsdCl7cmV0dXJuIEdyKGUuZ2V0TWludXRlcygpLHQsMil9ZnVuY3Rpb24gSEllKGUsdCl7cmV0dXJuIEdyKGUuZ2V0U2Vjb25kcygpLHQsMil9ZnVuY3Rpb24gVkllKGUpe3ZhciB0PWUuZ2V0RGF5KCk7cmV0dXJuIHQ9PT0wPzc6dH1mdW5jdGlvbiBVSWUoZSx0KXtyZXR1cm4gR3Ioc3YuY291bnQoYWQoZSktMSxlKSx0LDIpfWZ1bmN0aW9uIFhPdChlKXt2YXIgdD1lLmdldERheSgpO3JldHVybiB0Pj00fHx0PT09MD9rZyhlKTprZy5jZWlsKGUpfWZ1bmN0aW9uIHFJZShlLHQpe3JldHVybiBlPVhPdChlKSxHcihrZy5jb3VudChhZChlKSxlKSsoYWQoZSkuZ2V0RGF5KCk9PT00KSx0LDIpfWZ1bmN0aW9uIEdJZShlKXtyZXR1cm4gZS5nZXREYXkoKX1mdW5jdGlvbiBXSWUoZSx0KXtyZXR1cm4gR3IoeXcuY291bnQoYWQoZSktMSxlKSx0LDIpfWZ1bmN0aW9uIFlJZShlLHQpe3JldHVybiBHcihlLmdldEZ1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gakllKGUsdCl7cmV0dXJuIGU9WE90KGUpLEdyKGUuZ2V0RnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiBYSWUoZSx0KXtyZXR1cm4gR3IoZS5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uICRJZShlLHQpe3ZhciByPWUuZ2V0RGF5KCk7cmV0dXJuIGU9cj49NHx8cj09PTA/a2coZSk6a2cuY2VpbChlKSxHcihlLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9ZnVuY3Rpb24gS0llKGUpe3ZhciB0PWUuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4odD4wPyItIjoodCo9LTEsIisiKSkrR3IodC82MHwwLCIwIiwyKStHcih0JTYwLCIwIiwyKX1mdW5jdGlvbiBxT3QoZSx0KXtyZXR1cm4gR3IoZS5nZXRVVENEYXRlKCksdCwyKX1mdW5jdGlvbiBaSWUoZSx0KXtyZXR1cm4gR3IoZS5nZXRVVENIb3VycygpLHQsMil9ZnVuY3Rpb24gSkllKGUsdCl7cmV0dXJuIEdyKGUuZ2V0VVRDSG91cnMoKSUxMnx8MTIsdCwyKX1mdW5jdGlvbiBRSWUoZSx0KXtyZXR1cm4gR3IoMSt2dy5jb3VudChzZChlKSxlKSx0LDMpfWZ1bmN0aW9uICRPdChlLHQpe3JldHVybiBHcihlLmdldFVUQ01pbGxpc2Vjb25kcygpLHQsMyl9ZnVuY3Rpb24gdDllKGUsdCl7cmV0dXJuICRPdChlLHQpKyIwMDAifWZ1bmN0aW9uIGU5ZShlLHQpe3JldHVybiBHcihlLmdldFVUQ01vbnRoKCkrMSx0LDIpfWZ1bmN0aW9uIHI5ZShlLHQpe3JldHVybiBHcihlLmdldFVUQ01pbnV0ZXMoKSx0LDIpfWZ1bmN0aW9uIG45ZShlLHQpe3JldHVybiBHcihlLmdldFVUQ1NlY29uZHMoKSx0LDIpfWZ1bmN0aW9uIGk5ZShlKXt2YXIgdD1lLmdldFVUQ0RheSgpO3JldHVybiB0PT09MD83OnR9ZnVuY3Rpb24gbzllKGUsdCl7cmV0dXJuIEdyKGN2LmNvdW50KHNkKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBLT3QoZSl7dmFyIHQ9ZS5nZXRVVENEYXkoKTtyZXR1cm4gdD49NHx8dD09PTA/UmcoZSk6UmcuY2VpbChlKX1mdW5jdGlvbiBhOWUoZSx0KXtyZXR1cm4gZT1LT3QoZSksR3IoUmcuY291bnQoc2QoZSksZSkrKHNkKGUpLmdldFVUQ0RheSgpPT09NCksdCwyKX1mdW5jdGlvbiBzOWUoZSl7cmV0dXJuIGUuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24gbDllKGUsdCl7cmV0dXJuIEdyKHh3LmNvdW50KHNkKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBjOWUoZSx0KXtyZXR1cm4gR3IoZS5nZXRVVENGdWxsWWVhcigpJTEwMCx0LDIpfWZ1bmN0aW9uIHU5ZShlLHQpe3JldHVybiBlPUtPdChlKSxHcihlLmdldFVUQ0Z1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gaDllKGUsdCl7cmV0dXJuIEdyKGUuZ2V0VVRDRnVsbFllYXIoKSUxZTQsdCw0KX1mdW5jdGlvbiBmOWUoZSx0KXt2YXIgcj1lLmdldFVUQ0RheSgpO3JldHVybiBlPXI+PTR8fHI9PT0wP1JnKGUpOlJnLmNlaWwoZSksR3IoZS5nZXRVVENGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIHA5ZSgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gR090KCl7cmV0dXJuIiUifWZ1bmN0aW9uIFdPdChlKXtyZXR1cm4rZX1mdW5jdGlvbiBZT3QoZSl7cmV0dXJuIE1hdGguZmxvb3IoK2UvMWUzKX12YXIgek90LEVvLG1JZSxnSWUsWk90PU0oKCk9PnskTygpO3pPdD17Ii0iOiIiLF86IiAiLDA6IjAifSxFbz0vXlxzKlxkKy8sbUllPS9eJS8sZ0llPS9bXFxeJCorP3xbXF0oKS57fV0vZ30pO2Z1bmN0aW9uIHNldChlKXtyZXR1cm4gYnc9YWV0KGUpLEtPPWJ3LmZvcm1hdCxKT3Q9YncucGFyc2UsWk89YncudXRjRm9ybWF0LFFPdD1idy51dGNQYXJzZSxid312YXIgYncsS08sSk90LFpPLFFPdCx0N3Q9TSgoKT0+e1pPdCgpO3NldCh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pfSk7dmFyIGNldD1NKCgpPT57dDd0KCl9KTtmdW5jdGlvbiBtOWUoZSl7cmV0dXJuIG5ldyBEYXRlKGUpfWZ1bmN0aW9uIGc5ZShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIERhdGU/K2U6K25ldyBEYXRlKCtlKX1mdW5jdGlvbiBKTyhlLHQscixuLGksbyxhLHMsbCl7dmFyIGM9aWQodUMsX2YpLHU9Yy5pbnZlcnQsaD1jLmRvbWFpbixmPWwoIi4lTCIpLHA9bCgiOiVTIiksZD1sKCIlSTolTSIpLGc9bCgiJUkgJXAiKSxfPWwoIiVhICVkIikseT1sKCIlYiAlZCIpLHg9bCgiJUIiKSxiPWwoIiVZIiksUz1bW2EsMSx5Q10sW2EsNSw1KnlDXSxbYSwxNSwxNSp5Q10sW2EsMzAsMzAqeUNdLFtvLDEsdkNdLFtvLDUsNSp2Q10sW28sMTUsMTUqdkNdLFtvLDMwLDMwKnZDXSxbaSwxLHhDXSxbaSwzLDMqeENdLFtpLDYsNip4Q10sW2ksMTIsMTIqeENdLFtuLDEsYkNdLFtuLDIsMipiQ10sW3IsMSxkOWVdLFt0LDEsZTd0XSxbdCwzLDMqZTd0XSxbZSwxLHVldF1dO2Z1bmN0aW9uIEMoayl7cmV0dXJuKGEoayk8az9mOm8oayk8az9wOmkoayk8az9kOm4oayk8az9nOnQoayk8az9yKGspPGs/Xzp5OmUoayk8az94OmIpKGspfWZ1bmN0aW9uIFAoayxPLEQsQil7aWYoaz09bnVsbCYmKGs9MTApLHR5cGVvZiBrPT0ibnVtYmVyIil7dmFyIEk9TWF0aC5hYnMoRC1PKS9rLEw9bkMoZnVuY3Rpb24oUil7cmV0dXJuIFJbMl19KS5yaWdodChTLEkpO0w9PT1TLmxlbmd0aD8oQj1aeShPL3VldCxEL3VldCxrKSxrPWUpOkw/KEw9U1tJL1NbTC0xXVsyXTxTW0xdWzJdL0k/TC0xOkxdLEI9TFsxXSxrPUxbMF0pOihCPU1hdGgubWF4KFp5KE8sRCxrKSwxKSxrPXMpfXJldHVybiBCPT1udWxsP2s6ay5ldmVyeShCKX1yZXR1cm4gYy5pbnZlcnQ9ZnVuY3Rpb24oayl7cmV0dXJuIG5ldyBEYXRlKHUoaykpfSxjLmRvbWFpbj1mdW5jdGlvbihrKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9oKGV3LmNhbGwoayxnOWUpKTpoKCkubWFwKG05ZSl9LGMudGlja3M9ZnVuY3Rpb24oayxPKXt2YXIgRD1oKCksQj1EWzBdLEk9RFtELmxlbmd0aC0xXSxMPUk8QixSO3JldHVybiBMJiYoUj1CLEI9SSxJPVIpLFI9UChrLEIsSSxPKSxSPVI/Ui5yYW5nZShCLEkrMSk6W10sTD9SLnJldmVyc2UoKTpSfSxjLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oayxPKXtyZXR1cm4gTz09bnVsbD9DOmwoTyl9LGMubmljZT1mdW5jdGlvbihrLE8pe3ZhciBEPWgoKTtyZXR1cm4oaz1QKGssRFswXSxEW0QubGVuZ3RoLTFdLE8pKT9oKFZPKEQsaykpOmN9LGMuY29weT1mdW5jdGlvbigpe3JldHVybiBJZyhjLEpPKGUsdCxyLG4saSxvLGEscyxsKSl9LGN9ZnVuY3Rpb24gcjd0KCl7cmV0dXJuIEpPKGFkLEp0dCxzdixfdyxadHQsS3R0LGd3LGR3LEtPKS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSl9dmFyIHlDLHZDLHhDLGJDLGQ5ZSxlN3QsdWV0LGhldD1NKCgpPT57ZGYoKTtjdygpOyRPKCk7Y2V0KCk7Q2coKTtoQygpO2p0dCgpO3lDPTFlMyx2Qz15Qyo2MCx4Qz12Qyo2MCxiQz14QyoyNCxkOWU9YkMqNyxlN3Q9YkMqMzAsdWV0PWJDKjM2NX0pO2Z1bmN0aW9uIG43dCgpe3JldHVybiBKTyhzZCxyZXQsY3YsdncsZWV0LHRldCxndyxkdyxaTykuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pfXZhciBpN3Q9TSgoKT0+e2hldCgpO2NldCgpOyRPKCl9KTtmdW5jdGlvbiBwbChlKXtyZXR1cm4gZS5tYXRjaCgvLns2fS9nKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIiMiK3R9KX12YXIgd3c9TSgoKT0+e30pO3ZhciBvN3QsYTd0PU0oKCk9Pnt3dygpO283dD1wbCgiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmIil9KTt2YXIgczd0LGw3dD1NKCgpPT57d3coKTtzN3Q9cGwoIjM5M2I3OTUyNTRhMzZiNmVjZjljOWVkZTYzNzkzOThjYTI1MmI1Y2Y2YmNlZGI5YzhjNmQzMWJkOWUzOWU3YmE1MmU3Y2I5NDg0M2MzOWFkNDk0YWQ2NjE2YmU3OTY5YzdiNDE3M2E1NTE5NGNlNmRiZGRlOWVkNiIpfSk7dmFyIGM3dCx1N3Q9TSgoKT0+e3d3KCk7Yzd0PXBsKCIzMTgyYmQ2YmFlZDY5ZWNhZTFjNmRiZWZlNjU1MGRmZDhkM2NmZGFlNmJmZGQwYTIzMWEzNTQ3NGM0NzZhMWQ5OWJjN2U5YzA3NTZiYjE5ZTlhYzhiY2JkZGNkYWRhZWI2MzYzNjM5Njk2OTZiZGJkYmRkOWQ5ZDkiKX0pO3ZhciBoN3QsZjd0PU0oKCk9Pnt3dygpO2g3dD1wbCgiMWY3N2I0YWVjN2U4ZmY3ZjBlZmZiYjc4MmNhMDJjOThkZjhhZDYyNzI4ZmY5ODk2OTQ2N2JkYzViMGQ1OGM1NjRiYzQ5Yzk0ZTM3N2MyZjdiNmQyN2Y3ZjdmYzdjN2M3YmNiZDIyZGJkYjhkMTdiZWNmOWVkYWU1Iil9KTt2YXIgcDd0LGQ3dD1NKCgpPT57YXcoKTtjdygpO3A3dD1sdyhYYSgzMDAsLjUsMCksWGEoLTI0MCwuNSwxKSl9KTtmdW5jdGlvbiBfN3QoZSl7KGU8MHx8ZT4xKSYmKGUtPU1hdGguZmxvb3IoZSkpO3ZhciB0PU1hdGguYWJzKGUtLjUpO3JldHVybiBRTy5oPTM2MCplLTEwMCxRTy5zPTEuNS0xLjUqdCxRTy5sPS44LS45KnQsUU8rIiJ9dmFyIG03dCxnN3QsUU8seTd0PU0oKCk9PnthdygpO2N3KCk7bTd0PWx3KFhhKC0xMDAsLjc1LC4zNSksWGEoODAsMS41LC44KSksZzd0PWx3KFhhKDI2MCwuNzUsLjM1KSxYYSg4MCwxLjUsLjgpKSxRTz1YYSgpfSk7ZnVuY3Rpb24gdDcoZSl7dmFyIHQ9ZS5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlW01hdGgubWF4KDAsTWF0aC5taW4odC0xLE1hdGguZmxvb3Iocip0KSkpXX19dmFyIHY3dCx4N3QsYjd0LHc3dCxTN3Q9TSgoKT0+e3d3KCk7djd0PXQ3KHBsKCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSkseDd0PXQ3KHBsKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksYjd0PXQ3KHBsKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMGEwMjAyMGMwMjAyMGUwMzAyMTAwNDAzMTIwNDAzMTQwNTA0MTcwNjA0MTkwNzA1MWIwODA1MWQwOTA2MWYwYTA3MjIwYjA3MjQwYzA4MjYwZDA4MjkwZTA5MmIxMDA5MmQxMTBhMzAxMjBhMzIxNDBiMzQxNTBiMzcxNjBiMzkxODBjM2MxOTBjM2UxYjBjNDExYzBjNDMxZTBjNDUxZjBjNDgyMTBjNGEyMzBjNGMyNDBjNGYyNjBjNTEyODBiNTMyOTBiNTUyYjBiNTcyZDBiNTkyZjBhNWIzMTBhNWMzMjBhNWUzNDBhNWYzNjA5NjEzODA5NjIzOTA5NjMzYjA5NjQzZDA5NjUzZTA5NjY0MDBhNjc0MjBhNjg0NDBhNjg0NTBhNjk0NzBiNmE0OTBiNmE0YTBjNmI0YzBjNmI0ZDBkNmM0ZjBkNmM1MTBlNmM1MjBlNmQ1NDBmNmQ1NTBmNmQ1NzEwNmU1OTEwNmU1YTExNmU1YzEyNmU1ZDEyNmU1ZjEzNmU2MTEzNmU2MjE0NmU2NDE1NmU2NTE1NmU2NzE2NmU2OTE2NmU2YTE3NmU2YzE4NmU2ZDE4NmU2ZjE5NmU3MTE5NmU3MjFhNmU3NDFhNmU3NTFiNmU3NzFjNmQ3ODFjNmQ3YTFkNmQ3YzFkNmQ3ZDFlNmQ3ZjFlNmM4MDFmNmM4MjIwNmM4NDIwNmI4NTIxNmI4NzIxNmI4ODIyNmE4YTIyNmE4YzIzNjk4ZDIzNjk4ZjI0Njk5MDI1Njg5MjI1Njg5MzI2Njc5NTI2Njc5NzI3NjY5ODI3NjY5YTI4NjU5YjI5NjQ5ZDI5NjQ5ZjJhNjNhMDJhNjNhMjJiNjJhMzJjNjFhNTJjNjBhNjJkNjBhODJlNWZhOTJlNWVhYjJmNWVhZDMwNWRhZTMwNWNiMDMxNWJiMTMyNWFiMzMyNWFiNDMzNTliNjM0NThiNzM1NTdiOTM1NTZiYTM2NTViYzM3NTRiZDM4NTNiZjM5NTJjMDNhNTFjMTNhNTBjMzNiNGZjNDNjNGVjNjNkNGRjNzNlNGNjODNmNGJjYTQwNGFjYjQxNDljYzQyNDhjZTQzNDdjZjQ0NDZkMDQ1NDVkMjQ2NDRkMzQ3NDNkNDQ4NDJkNTRhNDFkNzRiM2ZkODRjM2VkOTRkM2RkYTRlM2NkYjUwM2JkZDUxM2FkZTUyMzhkZjUzMzdlMDU1MzZlMTU2MzVlMjU3MzRlMzU5MzNlNDVhMzFlNTVjMzBlNjVkMmZlNzVlMmVlODYwMmRlOTYxMmJlYTYzMmFlYjY0MjllYjY2MjhlYzY3MjZlZDY5MjVlZTZhMjRlZjZjMjNlZjZlMjFmMDZmMjBmMTcxMWZmMTczMWRmMjc0MWNmMzc2MWJmMzc4MTlmNDc5MThmNTdiMTdmNTdkMTVmNjdlMTRmNjgwMTNmNzgyMTJmNzg0MTBmODg1MGZmODg3MGVmODg5MGNmOThiMGJmOThjMGFmOThlMDlmYTkwMDhmYTkyMDdmYTk0MDdmYjk2MDZmYjk3MDZmYjk5MDZmYjliMDZmYjlkMDdmYzlmMDdmY2ExMDhmY2EzMDlmY2E1MGFmY2E2MGNmY2E4MGRmY2FhMGZmY2FjMTFmY2FlMTJmY2IwMTRmY2IyMTZmY2I0MThmYmI2MWFmYmI4MWRmYmJhMWZmYmJjMjFmYmJlMjNmYWMwMjZmYWMyMjhmYWM0MmFmYWM2MmRmOWM3MmZmOWM5MzJmOWNiMzVmOGNkMzdmOGNmM2FmN2QxM2RmN2QzNDBmNmQ1NDNmNmQ3NDZmNWQ5NDlmNWRiNGNmNGRkNGZmNGRmNTNmNGUxNTZmM2UzNWFmM2U1NWRmMmU2NjFmMmU4NjVmMmVhNjlmMWVjNmRmMWVkNzFmMWVmNzVmMWYxNzlmMmYyN2RmMmY0ODJmM2Y1ODZmM2Y2OGFmNGY4OGVmNWY5OTJmNmZhOTZmOGZiOWFmOWZjOWRmYWZkYTFmY2ZmYTQiKSksdzd0PXQ3KHBsKCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSl9KTtmdW5jdGlvbiBlNyhlKXt2YXIgdD0wLHI9MSxuPSExO2Z1bmN0aW9uIGkobyl7dmFyIGE9KG8tdCkvKHItdCk7cmV0dXJuIGUobj9NYXRoLm1heCgwLE1hdGgubWluKDEsYSkpOmEpfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rb1swXSxyPStvWzFdLGkpOlt0LHJdfSxpLmNsYW1wPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSEhbyxpKTpufSxpLmludGVycG9sYXRvcj1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1vLGkpOmV9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBlNyhlKS5kb21haW4oW3Qscl0pLmNsYW1wKG4pfSxvZChpKX12YXIgTTd0PU0oKCk9PntmdygpfSk7dmFyIEU3dD1NKCgpPT57Rk50KCk7WUR0KCk7ZncoKTtLRHQoKTt2dHQoKTtKRHQoKTtRRHQoKTt0T3QoKTtlT3QoKTtoZXQoKTtpN3QoKTthN3QoKTtsN3QoKTt1N3QoKTtmN3QoKTtkN3QoKTt5N3QoKTtTN3QoKTtNN3QoKX0pO3ZhciByNyx3QyxuNz1NKCgpPT57cjc9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHdDPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpyNyx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9fSk7ZnVuY3Rpb24gU3coZSl7dmFyIHQ9ZSs9IiIscj10LmluZGV4T2YoIjoiKTtyZXR1cm4gcj49MCYmKHQ9ZS5zbGljZSgwLHIpKSE9PSJ4bWxucyImJihlPWUuc2xpY2UocisxKSksd0MuaGFzT3duUHJvcGVydHkodCk/e3NwYWNlOndDW3RdLGxvY2FsOmV9OmV9dmFyIGk3PU0oKCk9PntuNygpfSk7ZnVuY3Rpb24gXzllKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMub3duZXJEb2N1bWVudCxyPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiByPT09cjcmJnQuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PXI3P3QuY3JlYXRlRWxlbWVudChlKTp0LmNyZWF0ZUVsZW1lbnROUyhyLGUpfX1mdW5jdGlvbiB5OWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZS5zcGFjZSxlLmxvY2FsKX19ZnVuY3Rpb24gTmcoZSl7dmFyIHQ9U3coZSk7cmV0dXJuKHQubG9jYWw/eTllOl85ZSkodCl9dmFyIFNDPU0oKCk9PntpNygpO243KCl9KTtmdW5jdGlvbiB2OWUoKXt9ZnVuY3Rpb24gTXcoZSl7cmV0dXJuIGU9PW51bGw/djllOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihlKX19dmFyIG83PU0oKCk9Pnt9KTtmdW5jdGlvbiBUN3QoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPU13KGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpZm9yKHZhciBvPXRbaV0sYT1vLmxlbmd0aCxzPW5baV09bmV3IEFycmF5KGEpLGwsYyx1PTA7dTxhOysrdSkobD1vW3VdKSYmKGM9ZS5jYWxsKGwsbC5fX2RhdGFfXyx1LG8pKSYmKCJfX2RhdGFfXyJpbiBsJiYoYy5fX2RhdGFfXz1sLl9fZGF0YV9fKSxzW3VdPWMpO3JldHVybiBuZXcgSG4obix0aGlzLl9wYXJlbnRzKX12YXIgQzd0PU0oKCk9PntiYygpO283KCl9KTtmdW5jdGlvbiB4OWUoKXtyZXR1cm5bXX1mdW5jdGlvbiBhNyhlKXtyZXR1cm4gZT09bnVsbD94OWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGUpfX12YXIgZmV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBBN3QoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPWE3KGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1bXSxpPVtdLG89MDtvPHI7KytvKWZvcih2YXIgYT10W29dLHM9YS5sZW5ndGgsbCxjPTA7YzxzOysrYykobD1hW2NdKSYmKG4ucHVzaChlLmNhbGwobCxsLl9fZGF0YV9fLGMsYSkpLGkucHVzaChsKSk7cmV0dXJuIG5ldyBIbihuLGkpfXZhciBQN3Q9TSgoKT0+e2JjKCk7ZmV0KCl9KTt2YXIgTDd0LEV3LEk3dCxzNyxwZXQ9TSgoKT0+e0w3dD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKGUpfX07dHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIiYmKEV3PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxFdy5tYXRjaGVzfHwoSTd0PUV3LndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8RXcubXNNYXRjaGVzU2VsZWN0b3J8fEV3Lm1vek1hdGNoZXNTZWxlY3Rvcnx8RXcub01hdGNoZXNTZWxlY3RvcixMN3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEk3dC5jYWxsKHRoaXMsZSl9fSkpO3M3PUw3dH0pO2Z1bmN0aW9uIGs3dChlKXt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9czcoZSkpO2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPTA7aTxyOysraSlmb3IodmFyIG89dFtpXSxhPW8ubGVuZ3RoLHM9bltpXT1bXSxsLGM9MDtjPGE7KytjKShsPW9bY10pJiZlLmNhbGwobCxsLl9fZGF0YV9fLGMsbykmJnMucHVzaChsKTtyZXR1cm4gbmV3IEhuKG4sdGhpcy5fcGFyZW50cyl9dmFyIFI3dD1NKCgpPT57YmMoKTtwZXQoKX0pO2Z1bmN0aW9uIGw3KGUpe3JldHVybiBuZXcgQXJyYXkoZS5sZW5ndGgpfXZhciBkZXQ9TSgoKT0+e30pO2Z1bmN0aW9uIE43dCgpe3JldHVybiBuZXcgSG4odGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAobDcpLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIE1DKGUsdCl7dGhpcy5vd25lckRvY3VtZW50PWUub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST1lLm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PWUsdGhpcy5fX2RhdGFfXz10fXZhciBtZXQ9TSgoKT0+e2RldCgpO2JjKCk7TUMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpNQyxhcHBlbmRDaGlsZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShlLHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZShlLHQpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvcihlKX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSl9fX0pO2Z1bmN0aW9uIEQ3dChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIE83dD1NKCgpPT57fSk7ZnVuY3Rpb24gYjllKGUsdCxyLG4saSxvKXtmb3IodmFyIGE9MCxzLGw9dC5sZW5ndGgsYz1vLmxlbmd0aDthPGM7KythKShzPXRbYV0pPyhzLl9fZGF0YV9fPW9bYV0sblthXT1zKTpyW2FdPW5ldyBNQyhlLG9bYV0pO2Zvcig7YTxsOysrYSkocz10W2FdKSYmKGlbYV09cyl9ZnVuY3Rpb24gdzllKGUsdCxyLG4saSxvLGEpe3ZhciBzLGwsYz17fSx1PXQubGVuZ3RoLGg9by5sZW5ndGgsZj1uZXcgQXJyYXkodSkscDtmb3Iocz0wO3M8dTsrK3MpKGw9dFtzXSkmJihmW3NdPXA9ejd0K2EuY2FsbChsLGwuX19kYXRhX18scyx0KSxwIGluIGM/aVtzXT1sOmNbcF09bCk7Zm9yKHM9MDtzPGg7KytzKXA9ejd0K2EuY2FsbChlLG9bc10scyxvKSwobD1jW3BdKT8obltzXT1sLGwuX19kYXRhX189b1tzXSxjW3BdPW51bGwpOnJbc109bmV3IE1DKGUsb1tzXSk7Zm9yKHM9MDtzPHU7KytzKShsPXRbc10pJiZjW2Zbc11dPT09bCYmKGlbc109bCl9ZnVuY3Rpb24gRjd0KGUsdCl7aWYoIWUpcmV0dXJuIHA9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxjPS0xLHRoaXMuZWFjaChmdW5jdGlvbihQKXtwWysrY109UH0pLHA7dmFyIHI9dD93OWU6YjllLG49dGhpcy5fcGFyZW50cyxpPXRoaXMuX2dyb3Vwczt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9RDd0KGUpKTtmb3IodmFyIG89aS5sZW5ndGgsYT1uZXcgQXJyYXkobykscz1uZXcgQXJyYXkobyksbD1uZXcgQXJyYXkobyksYz0wO2M8bzsrK2Mpe3ZhciB1PW5bY10saD1pW2NdLGY9aC5sZW5ndGgscD1lLmNhbGwodSx1JiZ1Ll9fZGF0YV9fLGMsbiksZD1wLmxlbmd0aCxnPXNbY109bmV3IEFycmF5KGQpLF89YVtjXT1uZXcgQXJyYXkoZCkseT1sW2NdPW5ldyBBcnJheShmKTtyKHUsaCxnLF8seSxwLHQpO2Zvcih2YXIgeD0wLGI9MCxTLEM7eDxkOysreClpZihTPWdbeF0pe2Zvcih4Pj1iJiYoYj14KzEpOyEoQz1fW2JdKSYmKytiPGQ7KTtTLl9uZXh0PUN8fG51bGx9fXJldHVybiBhPW5ldyBIbihhLG4pLGEuX2VudGVyPXMsYS5fZXhpdD1sLGF9dmFyIHo3dCxCN3Q9TSgoKT0+e2JjKCk7bWV0KCk7Tzd0KCk7ejd0PSIkIn0pO2Z1bmN0aW9uIEg3dCgpe3JldHVybiBuZXcgSG4odGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChsNyksdGhpcy5fcGFyZW50cyl9dmFyIFY3dD1NKCgpPT57ZGV0KCk7YmMoKX0pO2Z1bmN0aW9uIFU3dChlKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9ZS5fZ3JvdXBzLG49dC5sZW5ndGgsaT1yLmxlbmd0aCxvPU1hdGgubWluKG4saSksYT1uZXcgQXJyYXkobikscz0wO3M8bzsrK3MpZm9yKHZhciBsPXRbc10sYz1yW3NdLHU9bC5sZW5ndGgsaD1hW3NdPW5ldyBBcnJheSh1KSxmLHA9MDtwPHU7KytwKShmPWxbcF18fGNbcF0pJiYoaFtwXT1mKTtmb3IoO3M8bjsrK3MpYVtzXT10W3NdO3JldHVybiBuZXcgSG4oYSx0aGlzLl9wYXJlbnRzKX12YXIgcTd0PU0oKCk9PntiYygpfSk7ZnVuY3Rpb24gRzd0KCl7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PS0xLHI9ZS5sZW5ndGg7Kyt0PHI7KWZvcih2YXIgbj1lW3RdLGk9bi5sZW5ndGgtMSxvPW5baV0sYTstLWk+PTA7KShhPW5baV0pJiYobyYmbyE9PWEubmV4dFNpYmxpbmcmJm8ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxvKSxvPWEpO3JldHVybiB0aGlzfXZhciBXN3Q9TSgoKT0+e30pO2Z1bmN0aW9uIFk3dChlKXtlfHwoZT1TOWUpO2Z1bmN0aW9uIHQoaCxmKXtyZXR1cm4gaCYmZj9lKGguX19kYXRhX18sZi5fX2RhdGFfXyk6IWgtIWZ9Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxuPXIubGVuZ3RoLGk9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXtmb3IodmFyIGE9cltvXSxzPWEubGVuZ3RoLGw9aVtvXT1uZXcgQXJyYXkocyksYyx1PTA7dTxzOysrdSkoYz1hW3VdKSYmKGxbdV09Yyk7bC5zb3J0KHQpfXJldHVybiBuZXcgSG4oaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfWZ1bmN0aW9uIFM5ZShlLHQpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn12YXIgajd0PU0oKCk9PntiYygpfSk7ZnVuY3Rpb24gWDd0KCl7dmFyIGU9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyxlLmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfXZhciAkN3Q9TSgoKT0+e30pO2Z1bmN0aW9uIEs3dCgpe3ZhciBlPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdD0tMTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZVsrK3RdPXRoaXN9KSxlfXZhciBaN3Q9TSgoKT0+e30pO2Z1bmN0aW9uIEo3dCgpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClmb3IodmFyIG49ZVt0XSxpPTAsbz1uLmxlbmd0aDtpPG87KytpKXt2YXIgYT1uW2ldO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9dmFyIFE3dD1NKCgpPT57fSk7ZnVuY3Rpb24gdHp0KCl7dmFyIGU9MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KytlfSksZX12YXIgZXp0PU0oKCk9Pnt9KTtmdW5jdGlvbiByenQoKXtyZXR1cm4hdGhpcy5ub2RlKCl9dmFyIG56dD1NKCgpPT57fSk7ZnVuY3Rpb24gaXp0KGUpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj0wLG49dC5sZW5ndGg7cjxuOysrcilmb3IodmFyIGk9dFtyXSxvPTAsYT1pLmxlbmd0aCxzO288YTsrK28pKHM9aVtvXSkmJmUuY2FsbChzLHMuX19kYXRhX18sbyxpKTtyZXR1cm4gdGhpc312YXIgb3p0PU0oKCk9Pnt9KTtmdW5jdGlvbiBNOWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9fWZ1bmN0aW9uIEU5ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCl9fWZ1bmN0aW9uIFQ5ZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKGUsdCl9fWZ1bmN0aW9uIEM5ZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHQpfX1mdW5jdGlvbiBBOWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyPT1udWxsP3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpOnRoaXMuc2V0QXR0cmlidXRlKGUscil9fWZ1bmN0aW9uIFA5ZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3I9PW51bGw/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHIpfX1mdW5jdGlvbiBhenQoZSx0KXt2YXIgcj1TdyhlKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBuPXRoaXMubm9kZSgpO3JldHVybiByLmxvY2FsP24uZ2V0QXR0cmlidXRlTlMoci5zcGFjZSxyLmxvY2FsKTpuLmdldEF0dHJpYnV0ZShyKX1yZXR1cm4gdGhpcy5lYWNoKCh0PT1udWxsP3IubG9jYWw/RTllOk05ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj9yLmxvY2FsP1A5ZTpBOWU6ci5sb2NhbD9DOWU6VDllKShyLHQpKX12YXIgc3p0PU0oKCk9PntpNygpfSk7ZnVuY3Rpb24gVHcoZSl7cmV0dXJuIGUub3duZXJEb2N1bWVudCYmZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHxlLmRvY3VtZW50JiZlfHxlLmRlZmF1bHRWaWV3fXZhciBjNz1NKCgpPT57fSk7ZnVuY3Rpb24gSTllKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSl9fWZ1bmN0aW9uIEw5ZShlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShlLHQscil9fWZ1bmN0aW9uIGs5ZShlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bj09bnVsbD90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkoZSxuLHIpfX1mdW5jdGlvbiBsenQoZSx0LHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKCh0PT1udWxsP0k5ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj9rOWU6TDllKShlLHQscj09bnVsbD8iIjpyKSk6Z2V0KHRoaXMubm9kZSgpLGUpfWZ1bmN0aW9uIGdldChlLHQpe3JldHVybiBlLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodCl8fFR3KGUpLmdldENvbXB1dGVkU3R5bGUoZSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfXZhciBfZXQ9TSgoKT0+e2M3KCl9KTtmdW5jdGlvbiBSOWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbZV19fWZ1bmN0aW9uIE45ZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbZV09dH19ZnVuY3Rpb24gRDllKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD9kZWxldGUgdGhpc1tlXTp0aGlzW2VdPXJ9fWZ1bmN0aW9uIGN6dChlLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKCh0PT1udWxsP1I5ZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj9EOWU6TjllKShlLHQpKTp0aGlzLm5vZGUoKVtlXX12YXIgdXp0PU0oKCk9Pnt9KTtmdW5jdGlvbiBoenQoZSl7cmV0dXJuIGUudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIHlldChlKXtyZXR1cm4gZS5jbGFzc0xpc3R8fG5ldyBmenQoZSl9ZnVuY3Rpb24gZnp0KGUpe3RoaXMuX25vZGU9ZSx0aGlzLl9uYW1lcz1oenQoZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBwenQoZSx0KXtmb3IodmFyIHI9eWV0KGUpLG49LTEsaT10Lmxlbmd0aDsrK248aTspci5hZGQodFtuXSl9ZnVuY3Rpb24gZHp0KGUsdCl7Zm9yKHZhciByPXlldChlKSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KXIucmVtb3ZlKHRbbl0pfWZ1bmN0aW9uIE85ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtwenQodGhpcyxlKX19ZnVuY3Rpb24gejllKGUpe3JldHVybiBmdW5jdGlvbigpe2R6dCh0aGlzLGUpfX1mdW5jdGlvbiBGOWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXsodC5hcHBseSh0aGlzLGFyZ3VtZW50cyk/cHp0OmR6dCkodGhpcyxlKX19ZnVuY3Rpb24gbXp0KGUsdCl7dmFyIHI9aHp0KGUrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBuPXlldCh0aGlzLm5vZGUoKSksaT0tMSxvPXIubGVuZ3RoOysraTxvOylpZighbi5jb250YWlucyhyW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9GOWU6dD9POWU6ejllKShyLHQpKX12YXIgZ3p0PU0oKCk9PntmenQucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbmFtZXMuaW5kZXhPZihlKTt0PDAmJih0aGlzLl9uYW1lcy5wdXNoKGUpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9uYW1lcy5pbmRleE9mKGUpO3Q+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UodCwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihlKT49MH19fSk7ZnVuY3Rpb24gQjllKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBIOWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1lfX1mdW5jdGlvbiBWOWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIF96dChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZT09bnVsbD9COWU6KHR5cGVvZiBlPT0iZnVuY3Rpb24iP1Y5ZTpIOWUpKGUpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH12YXIgeXp0PU0oKCk9Pnt9KTtmdW5jdGlvbiBVOWUoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBxOWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9ZX19ZnVuY3Rpb24gRzllKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPXQ9PW51bGw/IiI6dH19ZnVuY3Rpb24gdnp0KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChlPT1udWxsP1U5ZToodHlwZW9mIGU9PSJmdW5jdGlvbiI/RzllOnE5ZSkoZSkpOnRoaXMubm9kZSgpLmlubmVySFRNTH12YXIgeHp0PU0oKCk9Pnt9KTtmdW5jdGlvbiBXOWUoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gYnp0KCl7cmV0dXJuIHRoaXMuZWFjaChXOWUpfXZhciB3enQ9TSgoKT0+e30pO2Z1bmN0aW9uIFk5ZSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIFN6dCgpe3JldHVybiB0aGlzLmVhY2goWTllKX12YXIgTXp0PU0oKCk9Pnt9KTtmdW5jdGlvbiBFenQoZSl7dmFyIHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpOZyhlKTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZCh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX12YXIgVHp0PU0oKCk9PntTQygpfSk7ZnVuY3Rpb24gajllKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gQ3p0KGUsdCl7dmFyIHI9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpOZyhlKSxuPXQ9PW51bGw/ajllOnR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6TXcodCk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfXZhciBBenQ9TSgoKT0+e1NDKCk7bzcoKX0pO2Z1bmN0aW9uIFg5ZSgpe3ZhciBlPXRoaXMucGFyZW50Tm9kZTtlJiZlLnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIFB6dCgpe3JldHVybiB0aGlzLmVhY2goWDllKX12YXIgSXp0PU0oKCk9Pnt9KTtmdW5jdGlvbiAkOWUoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLmNsb25lTm9kZSghMSksdGhpcy5uZXh0U2libGluZyl9ZnVuY3Rpb24gSzllKCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5jbG9uZU5vZGUoITApLHRoaXMubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIEx6dChlKXtyZXR1cm4gdGhpcy5zZWxlY3QoZT9LOWU6JDllKX12YXIga3p0PU0oKCk9Pnt9KTtmdW5jdGlvbiBSenQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLGUpOnRoaXMubm9kZSgpLl9fZGF0YV9ffXZhciBOenQ9TSgoKT0+e30pO2Z1bmN0aW9uIFo5ZShlLHQscil7cmV0dXJuIGU9enp0KGUsdCxyKSxmdW5jdGlvbihuKXt2YXIgaT1uLnJlbGF0ZWRUYXJnZXQ7KCFpfHxpIT09dGhpcyYmIShpLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpJjgpKSYmZS5jYWxsKHRoaXMsbil9fWZ1bmN0aW9uIHp6dChlLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPUF1O0F1PW47dHJ5e2UuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sdCxyKX1maW5hbGx5e0F1PWl9fX1mdW5jdGlvbiBKOWUoZSl7cmV0dXJuIGUudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbih0KXt2YXIgcj0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYocj10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTpyfX0pfWZ1bmN0aW9uIFE5ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fb247aWYoISF0KXtmb3IodmFyIHI9MCxuPS0xLGk9dC5sZW5ndGgsbztyPGk7KytyKW89dFtyXSwoIWUudHlwZXx8by50eXBlPT09ZS50eXBlKSYmby5uYW1lPT09ZS5uYW1lP3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihvLnR5cGUsby5saXN0ZW5lcixvLmNhcHR1cmUpOnRbKytuXT1vOysrbj90Lmxlbmd0aD1uOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiB0TGUoZSx0LHIpe3ZhciBuPU96dC5oYXNPd25Qcm9wZXJ0eShlLnR5cGUpP1o5ZTp6enQ7cmV0dXJuIGZ1bmN0aW9uKGksbyxhKXt2YXIgcz10aGlzLl9fb24sbCxjPW4odCxvLGEpO2lmKHMpe2Zvcih2YXIgdT0wLGg9cy5sZW5ndGg7dTxoOysrdSlpZigobD1zW3VdKS50eXBlPT09ZS50eXBlJiZsLm5hbWU9PT1lLm5hbWUpe3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihsLnR5cGUsbC5saXN0ZW5lcixsLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihsLnR5cGUsbC5saXN0ZW5lcj1jLGwuY2FwdHVyZT1yKSxsLnZhbHVlPXQ7cmV0dXJufX10aGlzLmFkZEV2ZW50TGlzdGVuZXIoZS50eXBlLGMsciksbD17dHlwZTplLnR5cGUsbmFtZTplLm5hbWUsdmFsdWU6dCxsaXN0ZW5lcjpjLGNhcHR1cmU6cn0scz9zLnB1c2gobCk6dGhpcy5fX29uPVtsXX19ZnVuY3Rpb24gRnp0KGUsdCxyKXt2YXIgbj1KOWUoZSsiIiksaSxvPW4ubGVuZ3RoLGE7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpe2Zvcih2YXIgbD0wLGM9cy5sZW5ndGgsdTtsPGM7KytsKWZvcihpPTAsdT1zW2xdO2k8bzsrK2kpaWYoKGE9bltpXSkudHlwZT09PXUudHlwZSYmYS5uYW1lPT09dS5uYW1lKXJldHVybiB1LnZhbHVlfXJldHVybn1mb3Iocz10P3RMZTpROWUscj09bnVsbCYmKHI9ITEpLGk9MDtpPG87KytpKXRoaXMuZWFjaChzKG5baV0sdCxyKSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gQnp0KGUsdCxyLG4pe3ZhciBpPUF1O2Uuc291cmNlRXZlbnQ9QXUsQXU9ZTt0cnl7cmV0dXJuIHQuYXBwbHkocixuKX1maW5hbGx5e0F1PWl9fXZhciBPenQsQXUsRHp0LHU3PU0oKCk9PntPenQ9e30sQXU9bnVsbDt0eXBlb2YgZG9jdW1lbnQhPSJ1bmRlZmluZWQiJiYoRHp0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwib25tb3VzZWVudGVyImluIER6dHx8KE96dD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSl9KTtmdW5jdGlvbiBIenQoZSx0LHIpe3ZhciBuPVR3KGUpLGk9bi5DdXN0b21FdmVudDt0eXBlb2YgaT09ImZ1bmN0aW9uIj9pPW5ldyBpKHQscik6KGk9bi5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxyPyhpLmluaXRFdmVudCh0LHIuYnViYmxlcyxyLmNhbmNlbGFibGUpLGkuZGV0YWlsPXIuZGV0YWlsKTppLmluaXRFdmVudCh0LCExLCExKSksZS5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIGVMZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBIenQodGhpcyxlLHQpfX1mdW5jdGlvbiByTGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSHp0KHRoaXMsZSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIFZ6dChlLHQpe3JldHVybiB0aGlzLmVhY2goKHR5cGVvZiB0PT0iZnVuY3Rpb24iP3JMZTplTGUpKGUsdCkpfXZhciBVenQ9TSgoKT0+e2M3KCl9KTtmdW5jdGlvbiBIbihlLHQpe3RoaXMuX2dyb3Vwcz1lLHRoaXMuX3BhcmVudHM9dH1mdW5jdGlvbiBxenQoKXtyZXR1cm4gbmV3IEhuKFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sRUMpfXZhciBFQyxHenQsYmM9TSgoKT0+e0M3dCgpO1A3dCgpO1I3dCgpO0I3dCgpO21ldCgpO1Y3dCgpO3E3dCgpO1c3dCgpO2o3dCgpOyQ3dCgpO1o3dCgpO1E3dCgpO2V6dCgpO256dCgpO296dCgpO3N6dCgpO19ldCgpO3V6dCgpO2d6dCgpO3l6dCgpO3h6dCgpO3d6dCgpO016dCgpO1R6dCgpO0F6dCgpO0l6dCgpO2t6dCgpO056dCgpO3U3KCk7VXp0KCk7RUM9W251bGxdO0huLnByb3RvdHlwZT1xenQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpIbixzZWxlY3Q6VDd0LHNlbGVjdEFsbDpBN3QsZmlsdGVyOms3dCxkYXRhOkY3dCxlbnRlcjpON3QsZXhpdDpIN3QsbWVyZ2U6VTd0LG9yZGVyOkc3dCxzb3J0Olk3dCxjYWxsOlg3dCxub2RlczpLN3Qsbm9kZTpKN3Qsc2l6ZTp0enQsZW1wdHk6cnp0LGVhY2g6aXp0LGF0dHI6YXp0LHN0eWxlOmx6dCxwcm9wZXJ0eTpjenQsY2xhc3NlZDptenQsdGV4dDpfenQsaHRtbDp2enQscmFpc2U6Ynp0LGxvd2VyOlN6dCxhcHBlbmQ6RXp0LGluc2VydDpDenQscmVtb3ZlOlB6dCxjbG9uZTpMenQsZGF0dW06Unp0LG9uOkZ6dCxkaXNwYXRjaDpWenR9O0d6dD1xenR9KTtmdW5jdGlvbiBoNyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP25ldyBIbihbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IEhuKFtbZV1dLEVDKX12YXIgdmV0PU0oKCk9PntiYygpfSk7ZnVuY3Rpb24gV3p0KGUpe3JldHVybiBoNyhOZyhlKS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfXZhciBZenQ9TSgoKT0+e1NDKCk7dmV0KCl9KTtmdW5jdGlvbiBmNygpe3JldHVybiBuZXcgeGV0fWZ1bmN0aW9uIHhldCgpe3RoaXMuXz0iQCIrKCsrbkxlKS50b1N0cmluZygzNil9dmFyIG5MZSxqenQ9TSgoKT0+e25MZT0wO3hldC5wcm90b3R5cGU9ZjcucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp4ZXQsZ2V0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl87ISh0IGluIGUpOylpZighKGU9ZS5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIGVbdF19LHNldDpmdW5jdGlvbihlLHQpe3JldHVybiBlW3RoaXMuX109dH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl8gaW4gZSYmZGVsZXRlIGVbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX19KTtmdW5jdGlvbiBDdygpe2Zvcih2YXIgZT1BdSx0O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfXZhciBwNz1NKCgpPT57dTcoKX0pO2Z1bmN0aW9uIERnKGUsdCl7dmFyIHI9ZS5vd25lclNWR0VsZW1lbnR8fGU7aWYoci5jcmVhdGVTVkdQb2ludCl7dmFyIG49ci5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBuLng9dC5jbGllbnRYLG4ueT10LmNsaWVudFksbj1uLm1hdHJpeFRyYW5zZm9ybShlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW24ueCxuLnldfXZhciBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3QuY2xpZW50WC1pLmxlZnQtZS5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1lLmNsaWVudFRvcF19dmFyIFRDPU0oKCk9Pnt9KTtmdW5jdGlvbiBYenQoZSl7dmFyIHQ9Q3coKTtyZXR1cm4gdC5jaGFuZ2VkVG91Y2hlcyYmKHQ9dC5jaGFuZ2VkVG91Y2hlc1swXSksRGcoZSx0KX12YXIgJHp0PU0oKCk9PntwNygpO1RDKCl9KTtmdW5jdGlvbiBLenQoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9uZXcgSG4oW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgSG4oW2U9PW51bGw/W106ZV0sRUMpfXZhciBaenQ9TSgoKT0+e2JjKCl9KTtmdW5jdGlvbiBKenQoZSx0LHIpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKHI9dCx0PUN3KCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgbj0wLGk9dD90Lmxlbmd0aDowLG87bjxpOysrbilpZigobz10W25dKS5pZGVudGlmaWVyPT09cilyZXR1cm4gRGcoZSxvKTtyZXR1cm4gbnVsbH12YXIgUXp0PU0oKCk9PntwNygpO1RDKCl9KTtmdW5jdGlvbiB0RnQoZSx0KXt0PT1udWxsJiYodD1DdygpLnRvdWNoZXMpO2Zvcih2YXIgcj0wLG49dD90Lmxlbmd0aDowLGk9bmV3IEFycmF5KG4pO3I8bjsrK3IpaVtyXT1EZyhlLHRbcl0pO3JldHVybiBpfXZhciBlRnQ9TSgoKT0+e3A3KCk7VEMoKX0pO3ZhciByRnQ9TSgoKT0+e1l6dCgpO1NDKCk7anp0KCk7cGV0KCk7JHp0KCk7aTcoKTtuNygpO1RDKCk7dmV0KCk7Wnp0KCk7YmMoKTtvNygpO2ZldCgpO19ldCgpO1F6dCgpO2VGdCgpO2M3KCk7dTcoKX0pO2Z1bmN0aW9uIE1ldCgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIG5GdCgpe3JldHVybiBuZXcgTWV0fXZhciBiZXQsd2V0LHV2LGlMZSxQdSxpRnQ9TSgoKT0+e2JldD1NYXRoLlBJLHdldD0yKmJldCx1dj0xZS02LGlMZT13ZXQtdXY7TWV0LnByb3RvdHlwZT1uRnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpNZXQsbW92ZVRvOmZ1bmN0aW9uKGUsdCl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPStlKSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPSt0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5feDEhPT1udWxsJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24oZSx0KXt0aGlzLl8rPSJMIisodGhpcy5feDE9K2UpKyIsIisodGhpcy5feTE9K3QpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKGUsdCxyLG4pe3RoaXMuXys9IlEiKyArZSsiLCIrICt0KyIsIisodGhpcy5feDE9K3IpKyIsIisodGhpcy5feTE9K24pfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKGUsdCxyLG4saSxvKXt0aGlzLl8rPSJDIisgK2UrIiwiKyArdCsiLCIrICtyKyIsIisgK24rIiwiKyh0aGlzLl94MT0raSkrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKGUsdCxyLG4saSl7ZT0rZSx0PSt0LHI9K3Isbj0rbixpPStpO3ZhciBvPXRoaXMuX3gxLGE9dGhpcy5feTEscz1yLWUsbD1uLXQsYz1vLWUsdT1hLXQsaD1jKmMrdSp1O2lmKGk8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIitpKTtpZih0aGlzLl94MT09PW51bGwpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPWUpKyIsIisodGhpcy5feTE9dCk7ZWxzZSBpZihoPnV2KWlmKCEoTWF0aC5hYnModSpzLWwqYyk+dXYpfHwhaSl0aGlzLl8rPSJMIisodGhpcy5feDE9ZSkrIiwiKyh0aGlzLl95MT10KTtlbHNle3ZhciBmPXItbyxwPW4tYSxkPXMqcytsKmwsZz1mKmYrcCpwLF89TWF0aC5zcXJ0KGQpLHk9TWF0aC5zcXJ0KGgpLHg9aSpNYXRoLnRhbigoYmV0LU1hdGguYWNvcygoZCtoLWcpLygyKl8qeSkpKS8yKSxiPXgveSxTPXgvXztNYXRoLmFicyhiLTEpPnV2JiYodGhpcy5fKz0iTCIrKGUrYipjKSsiLCIrKHQrYip1KSksdGhpcy5fKz0iQSIraSsiLCIraSsiLDAsMCwiKyArKHUqZj5jKnApKyIsIisodGhpcy5feDE9ZStTKnMpKyIsIisodGhpcy5feTE9dCtTKmwpfX0sYXJjOmZ1bmN0aW9uKGUsdCxyLG4saSxvKXtlPStlLHQ9K3Qscj0rcixvPSEhbzt2YXIgYT1yKk1hdGguY29zKG4pLHM9cipNYXRoLnNpbihuKSxsPWUrYSxjPXQrcyx1PTFebyxoPW8/bi1pOmktbjtpZihyPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrcik7dGhpcy5feDE9PT1udWxsP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPnV2fHxNYXRoLmFicyh0aGlzLl95MS1jKT51dikmJih0aGlzLl8rPSJMIitsKyIsIitjKSxyJiYoaDwwJiYoaD1oJXdldCt3ZXQpLGg+aUxlP3RoaXMuXys9IkEiK3IrIiwiK3IrIiwwLDEsIit1KyIsIisoZS1hKSsiLCIrKHQtcykrIkEiK3IrIiwiK3IrIiwwLDEsIit1KyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpoPnV2JiYodGhpcy5fKz0iQSIrcisiLCIrcisiLDAsIisgKyhoPj1iZXQpKyIsIit1KyIsIisodGhpcy5feDE9ZStyKk1hdGguY29zKGkpKSsiLCIrKHRoaXMuX3kxPXQrcipNYXRoLnNpbihpKSkpKX0scmVjdDpmdW5jdGlvbihlLHQscixuKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K2UpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K3QpKyJoIisgK3IrInYiKyArbisiaCIrLXIrIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTtQdT1uRnR9KTt2YXIgQXc9TSgoKT0+e2lGdCgpfSk7ZnVuY3Rpb24gR2UoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBPZz1NKCgpPT57fSk7ZnVuY3Rpb24gYUZ0KGUpe3JldHVybiBlPjE/MDplPC0xP0x1Ok1hdGguYWNvcyhlKX1mdW5jdGlvbiBUZXQoZSl7cmV0dXJuIGU+PTE/Q0M6ZTw9LTE/LUNDOk1hdGguYXNpbihlKX12YXIgRWV0LEJvLHpnLG9GdCxkNyxJdSxodixUbyxMdSxDQyx3YyxQdz1NKCgpPT57RWV0PU1hdGguYWJzLEJvPU1hdGguYXRhbjIsemc9TWF0aC5jb3Msb0Z0PU1hdGgubWF4LGQ3PU1hdGgubWluLEl1PU1hdGguc2luLGh2PU1hdGguc3FydCxUbz0xZS0xMixMdT1NYXRoLlBJLENDPUx1LzIsd2M9MipMdX0pO2Z1bmN0aW9uIG9MZShlKXtyZXR1cm4gZS5pbm5lclJhZGl1c31mdW5jdGlvbiBhTGUoZSl7cmV0dXJuIGUub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gc0xlKGUpe3JldHVybiBlLnN0YXJ0QW5nbGV9ZnVuY3Rpb24gbExlKGUpe3JldHVybiBlLmVuZEFuZ2xlfWZ1bmN0aW9uIGNMZShlKXtyZXR1cm4gZSYmZS5wYWRBbmdsZX1mdW5jdGlvbiB1TGUoZSx0LHIsbixpLG8sYSxzKXt2YXIgbD1yLWUsYz1uLXQsdT1hLWksaD1zLW8sZj0odSoodC1vKS1oKihlLWkpKS8oaCpsLXUqYyk7cmV0dXJuW2UrZipsLHQrZipjXX1mdW5jdGlvbiBtNyhlLHQscixuLGksbyxhKXt2YXIgcz1lLXIsbD10LW4sYz0oYT9vOi1vKS9odihzKnMrbCpsKSx1PWMqbCxoPS1jKnMsZj1lK3UscD10K2gsZD1yK3UsZz1uK2gsXz0oZitkKS8yLHk9KHArZykvMix4PWQtZixiPWctcCxTPXgqeCtiKmIsQz1pLW8sUD1mKmctZCpwLGs9KGI8MD8tMToxKSpodihvRnQoMCxDKkMqUy1QKlApKSxPPShQKmIteCprKS9TLEQ9KC1QKngtYiprKS9TLEI9KFAqYit4KmspL1MsST0oLVAqeCtiKmspL1MsTD1PLV8sUj1ELXksRj1CLV8sej1JLXk7cmV0dXJuIEwqTCtSKlI+RipGK3oqeiYmKE89QixEPUkpLHtjeDpPLGN5OkQseDAxOi11LHkwMTotaCx4MTE6TyooaS9DLTEpLHkxMTpEKihpL0MtMSl9fWZ1bmN0aW9uIHNGdCgpe3ZhciBlPW9MZSx0PWFMZSxyPUdlKDApLG49bnVsbCxpPXNMZSxvPWxMZSxhPWNMZSxzPW51bGw7ZnVuY3Rpb24gbCgpe3ZhciBjLHUsaD0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZj0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cykscD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1DQyxkPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLUNDLGc9RWV0KGQtcCksXz1kPnA7aWYoc3x8KHM9Yz1QdSgpKSxmPGgmJih1PWYsZj1oLGg9dSksIShmPlRvKSlzLm1vdmVUbygwLDApO2Vsc2UgaWYoZz53Yy1UbylzLm1vdmVUbyhmKnpnKHApLGYqSXUocCkpLHMuYXJjKDAsMCxmLHAsZCwhXyksaD5UbyYmKHMubW92ZVRvKGgqemcoZCksaCpJdShkKSkscy5hcmMoMCwwLGgsZCxwLF8pKTtlbHNle3ZhciB5PXAseD1kLGI9cCxTPWQsQz1nLFA9ZyxrPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsTz1rPlRvJiYobj8rbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6aHYoaCpoK2YqZikpLEQ9ZDcoRWV0KGYtaCkvMiwrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLEI9RCxJPUQsTCxSO2lmKE8+VG8pe3ZhciBGPVRldChPL2gqSXUoaykpLHo9VGV0KE8vZipJdShrKSk7KEMtPUYqMik+VG8/KEYqPV8/MTotMSxiKz1GLFMtPUYpOihDPTAsYj1TPShwK2QpLzIpLChQLT16KjIpPlRvPyh6Kj1fPzE6LTEseSs9eix4LT16KTooUD0wLHk9eD0ocCtkKS8yKX12YXIgVT1mKnpnKHkpLFc9ZipJdSh5KSxaPWgqemcoUykscnQ9aCpJdShTKTtpZihEPlRvKXt2YXIgb3Q9Zip6Zyh4KSxzdD1mKkl1KHgpLFN0PWgqemcoYiksYnQ9aCpJdShiKTtpZihnPEx1KXt2YXIgTXQ9Qz5Ubz91TGUoVSxXLFN0LGJ0LG90LHN0LFoscnQpOltaLHJ0XSxsdD1VLU10WzBdLEt0PVctTXRbMV0sX3Q9b3QtTXRbMF0sY3Q9c3QtTXRbMV0sWD0xL0l1KGFGdCgobHQqX3QrS3QqY3QpLyhodihsdCpsdCtLdCpLdCkqaHYoX3QqX3QrY3QqY3QpKSkvMiksZXQ9aHYoTXRbMF0qTXRbMF0rTXRbMV0qTXRbMV0pO0I9ZDcoRCwoaC1ldCkvKFgtMSkpLEk9ZDcoRCwoZi1ldCkvKFgrMSkpfX1QPlRvP0k+VG8/KEw9bTcoU3QsYnQsVSxXLGYsSSxfKSxSPW03KG90LHN0LFoscnQsZixJLF8pLHMubW92ZVRvKEwuY3grTC54MDEsTC5jeStMLnkwMSksSTxEP3MuYXJjKEwuY3gsTC5jeSxJLEJvKEwueTAxLEwueDAxKSxCbyhSLnkwMSxSLngwMSksIV8pOihzLmFyYyhMLmN4LEwuY3ksSSxCbyhMLnkwMSxMLngwMSksQm8oTC55MTEsTC54MTEpLCFfKSxzLmFyYygwLDAsZixCbyhMLmN5K0wueTExLEwuY3grTC54MTEpLEJvKFIuY3krUi55MTEsUi5jeCtSLngxMSksIV8pLHMuYXJjKFIuY3gsUi5jeSxJLEJvKFIueTExLFIueDExKSxCbyhSLnkwMSxSLngwMSksIV8pKSk6KHMubW92ZVRvKFUsVykscy5hcmMoMCwwLGYseSx4LCFfKSk6cy5tb3ZlVG8oVSxXKSwhKGg+VG8pfHwhKEM+VG8pP3MubGluZVRvKFoscnQpOkI+VG8/KEw9bTcoWixydCxvdCxzdCxoLC1CLF8pLFI9bTcoVSxXLFN0LGJ0LGgsLUIsXykscy5saW5lVG8oTC5jeCtMLngwMSxMLmN5K0wueTAxKSxCPEQ/cy5hcmMoTC5jeCxMLmN5LEIsQm8oTC55MDEsTC54MDEpLEJvKFIueTAxLFIueDAxKSwhXyk6KHMuYXJjKEwuY3gsTC5jeSxCLEJvKEwueTAxLEwueDAxKSxCbyhMLnkxMSxMLngxMSksIV8pLHMuYXJjKDAsMCxoLEJvKEwuY3krTC55MTEsTC5jeCtMLngxMSksQm8oUi5jeStSLnkxMSxSLmN4K1IueDExKSxfKSxzLmFyYyhSLmN4LFIuY3ksQixCbyhSLnkxMSxSLngxMSksQm8oUi55MDEsUi54MDEpLCFfKSkpOnMuYXJjKDAsMCxoLFMsYixfKX1pZihzLmNsb3NlUGF0aCgpLGMpcmV0dXJuIHM9bnVsbCxjKyIifHxudWxsfXJldHVybiBsLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIGM9KCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLHU9KCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK28uYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLUx1LzI7cmV0dXJuW3pnKHUpKmMsSXUodSkqY119LGwuaW5uZXJSYWRpdXM9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpHZSgrYyksbCk6ZX0sbC5vdXRlclJhZGl1cz1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgYz09ImZ1bmN0aW9uIj9jOkdlKCtjKSxsKTp0fSxsLmNvcm5lclJhZGl1cz1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgYz09ImZ1bmN0aW9uIj9jOkdlKCtjKSxsKTpyfSxsLnBhZFJhZGl1cz1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1jPT1udWxsP251bGw6dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpHZSgrYyksbCk6bn0sbC5zdGFydEFuZ2xlPWZ1bmN0aW9uKGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBjPT0iZnVuY3Rpb24iP2M6R2UoK2MpLGwpOml9LGwuZW5kQW5nbGU9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpHZSgrYyksbCk6b30sbC5wYWRBbmdsZT1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10eXBlb2YgYz09ImZ1bmN0aW9uIj9jOkdlKCtjKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9Yz09bnVsbD9udWxsOmMsbCk6c30sbH12YXIgbEZ0PU0oKCk9PntBdygpO09nKCk7UHcoKX0pO2Z1bmN0aW9uIGNGdChlKXt0aGlzLl9jb250ZXh0PWV9ZnVuY3Rpb24gRmcoZSl7cmV0dXJuIG5ldyBjRnQoZSl9dmFyIEFDPU0oKCk9PntjRnQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZT0rZSx0PSt0LHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKGUsdCk7YnJlYWt9fX19KTtmdW5jdGlvbiBJdyhlKXtyZXR1cm4gZVswXX1mdW5jdGlvbiBMdyhlKXtyZXR1cm4gZVsxXX12YXIgZzc9TSgoKT0+e30pO2Z1bmN0aW9uIGt3KCl7dmFyIGU9SXcsdD1MdyxyPUdlKCEwKSxuPW51bGwsaT1GZyxvPW51bGw7ZnVuY3Rpb24gYShzKXt2YXIgbCxjPXMubGVuZ3RoLHUsaD0hMSxmO2ZvcihuPT1udWxsJiYobz1pKGY9UHUoKSkpLGw9MDtsPD1jOysrbCkhKGw8YyYmcih1PXNbbF0sbCxzKSk9PT1oJiYoKGg9IWgpP28ubGluZVN0YXJ0KCk6by5saW5lRW5kKCkpLGgmJm8ucG9pbnQoK2UodSxsLHMpLCt0KHUsbCxzKSk7aWYoZilyZXR1cm4gbz1udWxsLGYrIiJ8fG51bGx9cmV0dXJuIGEueD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOkdlKCtzKSxhKTplfSxhLnk9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpHZSgrcyksYSk6dH0sYS5kZWZpbmVkPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6R2UoISFzKSxhKTpyfSxhLmN1cnZlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXMsbiE9bnVsbCYmKG89aShuKSksYSk6aX0sYS5jb250ZXh0PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPT1udWxsP249bz1udWxsOm89aShuPXMpLGEpOm59LGF9dmFyIF83PU0oKCk9PntBdygpO09nKCk7QUMoKTtnNygpfSk7ZnVuY3Rpb24geTcoKXt2YXIgZT1Jdyx0PW51bGwscj1HZSgwKSxuPUx3LGk9R2UoITApLG89bnVsbCxhPUZnLHM9bnVsbDtmdW5jdGlvbiBsKHUpe3ZhciBoLGYscCxkPXUubGVuZ3RoLGcsXz0hMSx5LHg9bmV3IEFycmF5KGQpLGI9bmV3IEFycmF5KGQpO2ZvcihvPT1udWxsJiYocz1hKHk9UHUoKSkpLGg9MDtoPD1kOysraCl7aWYoIShoPGQmJmkoZz11W2hdLGgsdSkpPT09XylpZihfPSFfKWY9aCxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxwPWgtMTtwPj1mOy0tcClzLnBvaW50KHhbcF0sYltwXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9XyYmKHhbaF09K2UoZyxoLHUpLGJbaF09K3IoZyxoLHUpLHMucG9pbnQodD8rdChnLGgsdSk6eFtoXSxuPytuKGcsaCx1KTpiW2hdKSl9aWYoeSlyZXR1cm4gcz1udWxsLHkrIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiBrdygpLmRlZmluZWQoaSkuY3VydmUoYSkuY29udGV4dChvKX1yZXR1cm4gbC54PWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6R2UoK3UpLHQ9bnVsbCxsKTplfSxsLngwPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6R2UoK3UpLGwpOmV9LGwueDE9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dT09bnVsbD9udWxsOnR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6R2UoK3UpLGwpOnR9LGwueT1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgdT09ImZ1bmN0aW9uIj91OkdlKCt1KSxuPW51bGwsbCk6cn0sbC55MD1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgdT09ImZ1bmN0aW9uIj91OkdlKCt1KSxsKTpyfSxsLnkxPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXU9PW51bGw/bnVsbDp0eXBlb2YgdT09ImZ1bmN0aW9uIj91OkdlKCt1KSxsKTpufSxsLmxpbmVYMD1sLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KHIpfSxsLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KG4pfSxsLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KHIpfSxsLmRlZmluZWQ9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIHU9PSJmdW5jdGlvbiI/dTpHZSghIXUpLGwpOml9LGwuY3VydmU9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dSxvIT1udWxsJiYocz1hKG8pKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9PW51bGw/bz1zPW51bGw6cz1hKG89dSksbCk6b30sbH12YXIgQ2V0PU0oKCk9PntBdygpO09nKCk7QUMoKTtfNygpO2c3KCl9KTtmdW5jdGlvbiB1RnQoZSx0KXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59dmFyIGhGdD1NKCgpPT57fSk7ZnVuY3Rpb24gZkZ0KGUpe3JldHVybiBlfXZhciBwRnQ9TSgoKT0+e30pO2Z1bmN0aW9uIGRGdCgpe3ZhciBlPWZGdCx0PXVGdCxyPW51bGwsbj1HZSgwKSxpPUdlKHdjKSxvPUdlKDApO2Z1bmN0aW9uIGEocyl7dmFyIGwsYz1zLmxlbmd0aCx1LGgsZj0wLHA9bmV3IEFycmF5KGMpLGQ9bmV3IEFycmF5KGMpLGc9K24uYXBwbHkodGhpcyxhcmd1bWVudHMpLF89TWF0aC5taW4od2MsTWF0aC5tYXgoLXdjLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLWcpKSx5LHg9TWF0aC5taW4oTWF0aC5hYnMoXykvYyxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksYj14KihfPDA/LTE6MSksUztmb3IobD0wO2w8YzsrK2wpKFM9ZFtwW2xdPWxdPStlKHNbbF0sbCxzKSk+MCYmKGYrPVMpO2Zvcih0IT1udWxsP3Auc29ydChmdW5jdGlvbihDLFApe3JldHVybiB0KGRbQ10sZFtQXSl9KTpyIT1udWxsJiZwLnNvcnQoZnVuY3Rpb24oQyxQKXtyZXR1cm4gcihzW0NdLHNbUF0pfSksbD0wLGg9Zj8oXy1jKmIpL2Y6MDtsPGM7KytsLGc9eSl1PXBbbF0sUz1kW3VdLHk9ZysoUz4wP1MqaDowKStiLGRbdV09e2RhdGE6c1t1XSxpbmRleDpsLHZhbHVlOlMsc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnkscGFkQW5nbGU6eH07cmV0dXJuIGR9cmV0dXJuIGEudmFsdWU9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpHZSgrcyksYSk6ZX0sYS5zb3J0VmFsdWVzPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXMscj1udWxsLGEpOnR9LGEuc29ydD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1zLHQ9bnVsbCxhKTpyfSxhLnN0YXJ0QW5nbGU9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpHZSgrcyksYSk6bn0sYS5lbmRBbmdsZT1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOkdlKCtzKSxhKTppfSxhLnBhZEFuZ2xlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6R2UoK3MpLGEpOm99LGF9dmFyIG1GdD1NKCgpPT57T2coKTtoRnQoKTtwRnQoKTtQdygpfSk7ZnVuY3Rpb24gZ0Z0KGUpe3RoaXMuX2N1cnZlPWV9ZnVuY3Rpb24gUncoZSl7ZnVuY3Rpb24gdChyKXtyZXR1cm4gbmV3IGdGdChlKHIpKX1yZXR1cm4gdC5fY3VydmU9ZSx0fXZhciB2NyxBZXQ9TSgoKT0+e0FDKCk7djc9UncoRmcpO2dGdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jdXJ2ZS5wb2ludCh0Kk1hdGguc2luKGUpLHQqLU1hdGguY29zKGUpKX19fSk7ZnVuY3Rpb24gTncoZSl7dmFyIHQ9ZS5jdXJ2ZTtyZXR1cm4gZS5hbmdsZT1lLngsZGVsZXRlIGUueCxlLnJhZGl1cz1lLnksZGVsZXRlIGUueSxlLmN1cnZlPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QoUncocikpOnQoKS5fY3VydmV9LGV9ZnVuY3Rpb24gUGV0KCl7cmV0dXJuIE53KGt3KCkuY3VydmUodjcpKX12YXIgSWV0PU0oKCk9PntBZXQoKTtfNygpfSk7ZnVuY3Rpb24gTGV0KCl7dmFyIGU9eTcoKS5jdXJ2ZSh2NyksdD1lLmN1cnZlLHI9ZS5saW5lWDAsbj1lLmxpbmVYMSxpPWUubGluZVkwLG89ZS5saW5lWTE7cmV0dXJuIGUuYW5nbGU9ZS54LGRlbGV0ZSBlLngsZS5zdGFydEFuZ2xlPWUueDAsZGVsZXRlIGUueDAsZS5lbmRBbmdsZT1lLngxLGRlbGV0ZSBlLngxLGUucmFkaXVzPWUueSxkZWxldGUgZS55LGUuaW5uZXJSYWRpdXM9ZS55MCxkZWxldGUgZS55MCxlLm91dGVyUmFkaXVzPWUueTEsZGVsZXRlIGUueTEsZS5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBOdyhyKCkpfSxkZWxldGUgZS5saW5lWDAsZS5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gTncobigpKX0sZGVsZXRlIGUubGluZVgxLGUubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIE53KGkoKSl9LGRlbGV0ZSBlLmxpbmVZMCxlLmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBOdyhvKCkpfSxkZWxldGUgZS5saW5lWTEsZS5jdXJ2ZT1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90KFJ3KGEpKTp0KCkuX2N1cnZlfSxlfXZhciBfRnQ9TSgoKT0+e0FldCgpO0NldCgpO0lldCgpfSk7ZnVuY3Rpb24gZnYoZSx0KXtyZXR1cm5bKHQ9K3QpKk1hdGguY29zKGUtPU1hdGguUEkvMiksdCpNYXRoLnNpbihlKV19dmFyIGtldD1NKCgpPT57fSk7dmFyIFBDLFJldD1NKCgpPT57UEM9QXJyYXkucHJvdG90eXBlLnNsaWNlfSk7ZnVuY3Rpb24gaExlKGUpe3JldHVybiBlLnNvdXJjZX1mdW5jdGlvbiBmTGUoZSl7cmV0dXJuIGUudGFyZ2V0fWZ1bmN0aW9uIE5ldChlKXt2YXIgdD1oTGUscj1mTGUsbj1JdyxpPUx3LG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIHMsbD1QQy5jYWxsKGFyZ3VtZW50cyksYz10LmFwcGx5KHRoaXMsbCksdT1yLmFwcGx5KHRoaXMsbCk7aWYob3x8KG89cz1QdSgpKSxlKG8sK24uYXBwbHkodGhpcywobFswXT1jLGwpKSwraS5hcHBseSh0aGlzLGwpLCtuLmFwcGx5KHRoaXMsKGxbMF09dSxsKSksK2kuYXBwbHkodGhpcyxsKSkscylyZXR1cm4gbz1udWxsLHMrIiJ8fG51bGx9cmV0dXJuIGEuc291cmNlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXMsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9cyxhKTpyfSxhLng9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpHZSgrcyksYSk6bn0sYS55PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6R2UoK3MpLGEpOml9LGEuY29udGV4dD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1zPT1udWxsP251bGw6cyxhKTpvfSxhfWZ1bmN0aW9uIHBMZShlLHQscixuLGkpe2UubW92ZVRvKHQsciksZS5iZXppZXJDdXJ2ZVRvKHQ9KHQrbikvMixyLHQsaSxuLGkpfWZ1bmN0aW9uIGRMZShlLHQscixuLGkpe2UubW92ZVRvKHQsciksZS5iZXppZXJDdXJ2ZVRvKHQscj0ocitpKS8yLG4scixuLGkpfWZ1bmN0aW9uIG1MZShlLHQscixuLGkpe3ZhciBvPWZ2KHQsciksYT1mdih0LHI9KHIraSkvMikscz1mdihuLHIpLGw9ZnYobixpKTtlLm1vdmVUbyhvWzBdLG9bMV0pLGUuYmV6aWVyQ3VydmVUbyhhWzBdLGFbMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9ZnVuY3Rpb24geUZ0KCl7cmV0dXJuIE5ldChwTGUpfWZ1bmN0aW9uIHZGdCgpe3JldHVybiBOZXQoZExlKX1mdW5jdGlvbiB4RnQoKXt2YXIgZT1OZXQobUxlKTtyZXR1cm4gZS5hbmdsZT1lLngsZGVsZXRlIGUueCxlLnJhZGl1cz1lLnksZGVsZXRlIGUueSxlfXZhciBiRnQ9TSgoKT0+e0F3KCk7UmV0KCk7T2coKTtnNygpO2tldCgpfSk7dmFyIElDLERldD1NKCgpPT57UHcoKTtJQz17ZHJhdzpmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguc3FydCh0L0x1KTtlLm1vdmVUbyhyLDApLGUuYXJjKDAsMCxyLDAsd2MpfX19KTt2YXIgeDcsT2V0PU0oKCk9Pnt4Nz17ZHJhdzpmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguc3FydCh0LzUpLzI7ZS5tb3ZlVG8oLTMqciwtciksZS5saW5lVG8oLXIsLXIpLGUubGluZVRvKC1yLC0zKnIpLGUubGluZVRvKHIsLTMqciksZS5saW5lVG8ociwtciksZS5saW5lVG8oMypyLC1yKSxlLmxpbmVUbygzKnIsciksZS5saW5lVG8ocixyKSxlLmxpbmVUbyhyLDMqciksZS5saW5lVG8oLXIsMypyKSxlLmxpbmVUbygtcixyKSxlLmxpbmVUbygtMypyLHIpLGUuY2xvc2VQYXRoKCl9fX0pO3ZhciB3RnQsZ0xlLGI3LHpldD1NKCgpPT57d0Z0PU1hdGguc3FydCguMzMzMzMzMzMzMzMzMzMzMyksZ0xlPXdGdCoyLGI3PXtkcmF3OmZ1bmN0aW9uKGUsdCl7dmFyIHI9TWF0aC5zcXJ0KHQvZ0xlKSxuPXIqd0Z0O2UubW92ZVRvKDAsLXIpLGUubGluZVRvKG4sMCksZS5saW5lVG8oMCxyKSxlLmxpbmVUbygtbiwwKSxlLmNsb3NlUGF0aCgpfX19KTt2YXIgX0xlLFNGdCx5TGUsdkxlLHc3LEZldD1NKCgpPT57UHcoKTtfTGU9Ljg5MDgxMzA5MTUyOTI4NTIsU0Z0PU1hdGguc2luKEx1LzEwKS9NYXRoLnNpbig3Kkx1LzEwKSx5TGU9TWF0aC5zaW4od2MvMTApKlNGdCx2TGU9LU1hdGguY29zKHdjLzEwKSpTRnQsdzc9e2RyYXc6ZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLnNxcnQodCpfTGUpLG49eUxlKnIsaT12TGUqcjtlLm1vdmVUbygwLC1yKSxlLmxpbmVUbyhuLGkpO2Zvcih2YXIgbz0xO288NTsrK28pe3ZhciBhPXdjKm8vNSxzPU1hdGguY29zKGEpLGw9TWF0aC5zaW4oYSk7ZS5saW5lVG8obCpyLC1zKnIpLGUubGluZVRvKHMqbi1sKmksbCpuK3MqaSl9ZS5jbG9zZVBhdGgoKX19fSk7dmFyIFM3LEJldD1NKCgpPT57Uzc9e2RyYXc6ZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLnNxcnQodCksbj0tci8yO2UucmVjdChuLG4scixyKX19fSk7dmFyIEhldCxNNyxWZXQ9TSgoKT0+e0hldD1NYXRoLnNxcnQoMyksTTc9e2RyYXc6ZnVuY3Rpb24oZSx0KXt2YXIgcj0tTWF0aC5zcXJ0KHQvKEhldCozKSk7ZS5tb3ZlVG8oMCxyKjIpLGUubGluZVRvKC1IZXQqciwtciksZS5saW5lVG8oSGV0KnIsLXIpLGUuY2xvc2VQYXRoKCl9fX0pO3ZhciBTYyxNYyxVZXQseExlLEU3LHFldD1NKCgpPT57U2M9LS41LE1jPU1hdGguc3FydCgzKS8yLFVldD0xL01hdGguc3FydCgxMikseExlPShVZXQvMisxKSozLEU3PXtkcmF3OmZ1bmN0aW9uKGUsdCl7dmFyIHI9TWF0aC5zcXJ0KHQveExlKSxuPXIvMixpPXIqVWV0LG89bixhPXIqVWV0K3Iscz0tbyxsPWE7ZS5tb3ZlVG8obixpKSxlLmxpbmVUbyhvLGEpLGUubGluZVRvKHMsbCksZS5saW5lVG8oU2Mqbi1NYyppLE1jKm4rU2MqaSksZS5saW5lVG8oU2Mqby1NYyphLE1jKm8rU2MqYSksZS5saW5lVG8oU2Mqcy1NYypsLE1jKnMrU2MqbCksZS5saW5lVG8oU2MqbitNYyppLFNjKmktTWMqbiksZS5saW5lVG8oU2MqbytNYyphLFNjKmEtTWMqbyksZS5saW5lVG8oU2MqcytNYypsLFNjKmwtTWMqcyksZS5jbG9zZVBhdGgoKX19fSk7ZnVuY3Rpb24gRUZ0KCl7dmFyIGU9R2UoSUMpLHQ9R2UoNjQpLHI9bnVsbDtmdW5jdGlvbiBuKCl7dmFyIGk7aWYocnx8KHI9aT1QdSgpKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKS5kcmF3KHIsK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxpKXJldHVybiByPW51bGwsaSsiInx8bnVsbH1yZXR1cm4gbi50eXBlPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6R2UoaSksbik6ZX0sbi5zaXplPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6R2UoK2kpLG4pOnR9LG4uY29udGV4dD1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1pPT1udWxsP251bGw6aSxuKTpyfSxufXZhciBNRnQsVEZ0PU0oKCk9PntBdygpO0RldCgpO09ldCgpO3pldCgpO0ZldCgpO0JldCgpO1ZldCgpO3FldCgpO09nKCk7TUZ0PVtJQyx4NyxiNyxTNyx3NyxNNyxFN119KTtmdW5jdGlvbiBFYygpe312YXIgTEM9TSgoKT0+e30pO2Z1bmN0aW9uIER3KGUsdCxyKXtlLl9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqZS5feDArZS5feDEpLzMsKDIqZS5feTArZS5feTEpLzMsKGUuX3gwKzIqZS5feDEpLzMsKGUuX3kwKzIqZS5feTEpLzMsKGUuX3gwKzQqZS5feDErdCkvNiwoZS5feTArNCplLl95MStyKS82KX1mdW5jdGlvbiBrQyhlKXt0aGlzLl9jb250ZXh0PWV9ZnVuY3Rpb24gQ0Z0KGUpe3JldHVybiBuZXcga0MoZSl9dmFyIFJDPU0oKCk9PntrQy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAzOkR3KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWt9KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2NvbnRleHQubGluZVRvKCg1KnRoaXMuX3gwK3RoaXMuX3gxKS82LCg1KnRoaXMuX3kwK3RoaXMuX3kxKS82KTtkZWZhdWx0OkR3KHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXR9fX0pO2Z1bmN0aW9uIEFGdChlKXt0aGlzLl9jb250ZXh0PWV9ZnVuY3Rpb24gUEZ0KGUpe3JldHVybiBuZXcgQUZ0KGUpfXZhciBJRnQ9TSgoKT0+e0xDKCk7UkMoKTtBRnQucHJvdG90eXBlPXthcmVhU3RhcnQ6RWMsYXJlYUVuZDpFYyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnt0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDI6e3RoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDM6e3RoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpO2JyZWFrfX19LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9ZSx0aGlzLl95Mj10O2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPWUsdGhpcy5feTM9dDticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND1lLHRoaXMuX3k0PXQsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErZSkvNiwodGhpcy5feTArNCp0aGlzLl95MSt0KS82KTticmVhaztkZWZhdWx0OkR3KHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXR9fX0pO2Z1bmN0aW9uIExGdChlKXt0aGlzLl9jb250ZXh0PWV9ZnVuY3Rpb24ga0Z0KGUpe3JldHVybiBuZXcgTEZ0KGUpfXZhciBSRnQ9TSgoKT0+e1JDKCk7TEZ0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTMpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciByPSh0aGlzLl94MCs0KnRoaXMuX3gxK2UpLzYsbj0odGhpcy5feTArNCp0aGlzLl95MSt0KS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8ocixuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhyLG4pO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6RHcodGhpcyxlLHQpO2JyZWFrfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPWUsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dH19fSk7ZnVuY3Rpb24gTkZ0KGUsdCl7dGhpcy5fYmFzaXM9bmV3IGtDKGUpLHRoaXMuX2JldGE9dH12YXIgREZ0LE9GdD1NKCgpPT57UkMoKTtORnQucHJvdG90eXBlPXtsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W10sdGhpcy5fYmFzaXMubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl94LHQ9dGhpcy5feSxyPWUubGVuZ3RoLTE7aWYocj4wKWZvcih2YXIgbj1lWzBdLGk9dFswXSxvPWVbcl0tbixhPXRbcl0taSxzPS0xLGw7KytzPD1yOylsPXMvcix0aGlzLl9iYXNpcy5wb2ludCh0aGlzLl9iZXRhKmVbc10rKDEtdGhpcy5fYmV0YSkqKG4rbCpvKSx0aGlzLl9iZXRhKnRbc10rKDEtdGhpcy5fYmV0YSkqKGkrbCphKSk7dGhpcy5feD10aGlzLl95PW51bGwsdGhpcy5fYmFzaXMubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbihlLHQpe3RoaXMuX3gucHVzaCgrZSksdGhpcy5feS5wdXNoKCt0KX19O0RGdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIHQ9PT0xP25ldyBrQyhuKTpuZXcgTkZ0KG4sdCl9cmV0dXJuIHIuYmV0YT1mdW5jdGlvbihuKXtyZXR1cm4gZSgrbil9LHJ9KC44NSl9KTtmdW5jdGlvbiBPdyhlLHQscil7ZS5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUuX3gxK2UuX2sqKGUuX3gyLWUuX3gwKSxlLl95MStlLl9rKihlLl95Mi1lLl95MCksZS5feDIrZS5fayooZS5feDEtdCksZS5feTIrZS5fayooZS5feTEtciksZS5feDIsZS5feTIpfWZ1bmN0aW9uIFQ3KGUsdCl7dGhpcy5fY29udGV4dD1lLHRoaXMuX2s9KDEtdCkvNn12YXIgekZ0LE5DPU0oKCk9PntUNy5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6T3codGhpcyx0aGlzLl94MSx0aGlzLl95MSk7YnJlYWt9KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPWUsdGhpcy5feTE9dDticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Ok93KHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPXR9fTt6RnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4pe3JldHVybiBuZXcgVDcobix0KX1yZXR1cm4gci50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBlKCtuKX0scn0oMCl9KTtmdW5jdGlvbiBDNyhlLHQpe3RoaXMuX2NvbnRleHQ9ZSx0aGlzLl9rPSgxLXQpLzZ9dmFyIEZGdCxHZXQ9TSgoKT0+e0xDKCk7TkMoKTtDNy5wcm90b3R5cGU9e2FyZWFTdGFydDpFYyxhcmVhRW5kOkVjLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6e3RoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrfWNhc2UgMjp7dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWt9Y2FzZSAzOnt0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KTticmVha319fSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPWUsdGhpcy5feTM9dDticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND1lLHRoaXMuX3k0PXQpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PWUsdGhpcy5feTU9dDticmVhaztkZWZhdWx0Ok93KHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPXR9fTtGRnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4pe3JldHVybiBuZXcgQzcobix0KX1yZXR1cm4gci50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBlKCtuKX0scn0oMCl9KTtmdW5jdGlvbiBBNyhlLHQpe3RoaXMuX2NvbnRleHQ9ZSx0aGlzLl9rPSgxLXQpLzZ9dmFyIEJGdCxXZXQ9TSgoKT0+e05DKCk7QTcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MykmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6T3codGhpcyxlLHQpO2JyZWFrfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPWUsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9dH19O0JGdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIG5ldyBBNyhuLHQpfXJldHVybiByLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIGUoK24pfSxyfSgwKX0pO2Z1bmN0aW9uIERDKGUsdCxyKXt2YXIgbj1lLl94MSxpPWUuX3kxLG89ZS5feDIsYT1lLl95MjtpZihlLl9sMDFfYT5Ubyl7dmFyIHM9MiplLl9sMDFfMmErMyplLl9sMDFfYSplLl9sMTJfYStlLl9sMTJfMmEsbD0zKmUuX2wwMV9hKihlLl9sMDFfYStlLl9sMTJfYSk7bj0obipzLWUuX3gwKmUuX2wxMl8yYStlLl94MiplLl9sMDFfMmEpL2wsaT0oaSpzLWUuX3kwKmUuX2wxMl8yYStlLl95MiplLl9sMDFfMmEpL2x9aWYoZS5fbDIzX2E+VG8pe3ZhciBjPTIqZS5fbDIzXzJhKzMqZS5fbDIzX2EqZS5fbDEyX2ErZS5fbDEyXzJhLHU9MyplLl9sMjNfYSooZS5fbDIzX2ErZS5fbDEyX2EpO289KG8qYytlLl94MSplLl9sMjNfMmEtdCplLl9sMTJfMmEpL3UsYT0oYSpjK2UuX3kxKmUuX2wyM18yYS1yKmUuX2wxMl8yYSkvdX1lLl9jb250ZXh0LmJlemllckN1cnZlVG8obixpLG8sYSxlLl94MixlLl95Mil9ZnVuY3Rpb24gSEZ0KGUsdCl7dGhpcy5fY29udGV4dD1lLHRoaXMuX2FscGhhPXR9dmFyIFZGdCxQNz1NKCgpPT57UHcoKTtOQygpO0hGdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWt9KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe2lmKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItZSxuPXRoaXMuX3kyLXQ7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OkRDKHRoaXMsZSx0KTticmVha310aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj10fX07VkZ0PWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gdD9uZXcgSEZ0KG4sdCk6bmV3IFQ3KG4sMCl9cmV0dXJuIHIuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIGUoK24pfSxyfSguNSl9KTtmdW5jdGlvbiBVRnQoZSx0KXt0aGlzLl9jb250ZXh0PWUsdGhpcy5fYWxwaGE9dH12YXIgcUZ0LEdGdD1NKCgpPT57R2V0KCk7TEMoKTtQNygpO1VGdC5wcm90b3R5cGU9e2FyZWFTdGFydDpFYyxhcmVhRW5kOkVjLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6e3RoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrfWNhc2UgMjp7dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWt9Y2FzZSAzOnt0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KTticmVha319fSxwb2ludDpmdW5jdGlvbihlLHQpe2lmKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItZSxuPXRoaXMuX3kyLXQ7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz1lLHRoaXMuX3kzPXQ7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9ZSx0aGlzLl95ND10KTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT1lLHRoaXMuX3k1PXQ7YnJlYWs7ZGVmYXVsdDpEQyh0aGlzLGUsdCk7YnJlYWt9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPWUsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9dH19O3FGdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIHQ/bmV3IFVGdChuLHQpOm5ldyBDNyhuLDApfXJldHVybiByLmFscGhhPWZ1bmN0aW9uKG4pe3JldHVybiBlKCtuKX0scn0oLjUpfSk7ZnVuY3Rpb24gV0Z0KGUsdCl7dGhpcy5fY29udGV4dD1lLHRoaXMuX2FscGhhPXR9dmFyIFlGdCxqRnQ9TSgoKT0+e1dldCgpO1A3KCk7V0Z0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTMpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe2lmKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItZSxuPXRoaXMuX3kyLXQ7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpEQyh0aGlzLGUsdCk7YnJlYWt9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPWUsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9dH19O1lGdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIHQ/bmV3IFdGdChuLHQpOm5ldyBBNyhuLDApfXJldHVybiByLmFscGhhPWZ1bmN0aW9uKG4pe3JldHVybiBlKCtuKX0scn0oLjUpfSk7ZnVuY3Rpb24gWEZ0KGUpe3RoaXMuX2NvbnRleHQ9ZX1mdW5jdGlvbiAkRnQoZSl7cmV0dXJuIG5ldyBYRnQoZSl9dmFyIEtGdD1NKCgpPT57TEMoKTtYRnQucHJvdG90eXBlPXthcmVhU3RhcnQ6RWMsYXJlYUVuZDpFYyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LHBvaW50OmZ1bmN0aW9uKGUsdCl7ZT0rZSx0PSt0LHRoaXMuX3BvaW50P3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6KHRoaXMuX3BvaW50PTEsdGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KSl9fX0pO2Z1bmN0aW9uIFpGdChlKXtyZXR1cm4gZTwwPy0xOjF9ZnVuY3Rpb24gSkZ0KGUsdCxyKXt2YXIgbj1lLl94MS1lLl94MCxpPXQtZS5feDEsbz0oZS5feTEtZS5feTApLyhufHxpPDAmJi0wKSxhPShyLWUuX3kxKS8oaXx8bjwwJiYtMCkscz0obyppK2EqbikvKG4raSk7cmV0dXJuKFpGdChvKStaRnQoYSkpKk1hdGgubWluKE1hdGguYWJzKG8pLE1hdGguYWJzKGEpLC41Kk1hdGguYWJzKHMpKXx8MH1mdW5jdGlvbiBRRnQoZSx0KXt2YXIgcj1lLl94MS1lLl94MDtyZXR1cm4gcj8oMyooZS5feTEtZS5feTApL3ItdCkvMjp0fWZ1bmN0aW9uIFlldChlLHQscil7dmFyIG49ZS5feDAsaT1lLl95MCxvPWUuX3gxLGE9ZS5feTEscz0oby1uKS8zO2UuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhuK3MsaStzKnQsby1zLGEtcypyLG8sYSl9ZnVuY3Rpb24gSTcoZSl7dGhpcy5fY29udGV4dD1lfWZ1bmN0aW9uIHRCdChlKXt0aGlzLl9jb250ZXh0PW5ldyBlQnQoZSl9ZnVuY3Rpb24gZUJ0KGUpe3RoaXMuX2NvbnRleHQ9ZX1mdW5jdGlvbiByQnQoZSl7cmV0dXJuIG5ldyBJNyhlKX1mdW5jdGlvbiBuQnQoZSl7cmV0dXJuIG5ldyB0QnQoZSl9dmFyIGlCdD1NKCgpPT57STcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOllldCh0aGlzLHRoaXMuX3QwLFFGdCh0aGlzLHRoaXMuX3QwKSk7YnJlYWt9KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe3ZhciByPU5hTjtpZihlPStlLHQ9K3QsIShlPT09dGhpcy5feDEmJnQ9PT10aGlzLl95MSkpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhlLHQpOnRoaXMuX2NvbnRleHQubW92ZVRvKGUsdCk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsWWV0KHRoaXMsUUZ0KHRoaXMscj1KRnQodGhpcyxlLHQpKSxyKTticmVhaztkZWZhdWx0OllldCh0aGlzLHRoaXMuX3QwLHI9SkZ0KHRoaXMsZSx0KSk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10LHRoaXMuX3QwPXJ9fX07KHRCdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShJNy5wcm90b3R5cGUpKS5wb2ludD1mdW5jdGlvbihlLHQpe0k3LnByb3RvdHlwZS5wb2ludC5jYWxsKHRoaXMsdCxlKX07ZUJ0LnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKGUsdCl7dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKGUsdCl7dGhpcy5fY29udGV4dC5saW5lVG8odCxlKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbihlLHQscixuLGksbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHQsZSxuLHIsbyxpKX19fSk7ZnVuY3Rpb24gYUJ0KGUpe3RoaXMuX2NvbnRleHQ9ZX1mdW5jdGlvbiBvQnQoZSl7dmFyIHQscj1lLmxlbmd0aC0xLG4saT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocik7Zm9yKGlbMF09MCxvWzBdPTIsYVswXT1lWzBdKzIqZVsxXSx0PTE7dDxyLTE7Kyt0KWlbdF09MSxvW3RdPTQsYVt0XT00KmVbdF0rMiplW3QrMV07Zm9yKGlbci0xXT0yLG9bci0xXT03LGFbci0xXT04KmVbci0xXStlW3JdLHQ9MTt0PHI7Kyt0KW49aVt0XS9vW3QtMV0sb1t0XS09bixhW3RdLT1uKmFbdC0xXTtmb3IoaVtyLTFdPWFbci0xXS9vW3ItMV0sdD1yLTI7dD49MDstLXQpaVt0XT0oYVt0XS1pW3QrMV0pL29bdF07Zm9yKG9bci0xXT0oZVtyXStpW3ItMV0pLzIsdD0wO3Q8ci0xOysrdClvW3RdPTIqZVt0KzFdLWlbdCsxXTtyZXR1cm5baSxvXX1mdW5jdGlvbiBzQnQoZSl7cmV0dXJuIG5ldyBhQnQoZSl9dmFyIGxCdD1NKCgpPT57YUJ0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3gsdD10aGlzLl95LHI9ZS5sZW5ndGg7aWYocilpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGVbMF0sdFswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZVswXSx0WzBdKSxyPT09Mil0aGlzLl9jb250ZXh0LmxpbmVUbyhlWzFdLHRbMV0pO2Vsc2UgZm9yKHZhciBuPW9CdChlKSxpPW9CdCh0KSxvPTAsYT0xO2E8cjsrK28sKythKXRoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhuWzBdW29dLGlbMF1bb10sblsxXVtvXSxpWzFdW29dLGVbYV0sdFthXSk7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZyPT09MSkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUsdGhpcy5feD10aGlzLl95PW51bGx9LHBvaW50OmZ1bmN0aW9uKGUsdCl7dGhpcy5feC5wdXNoKCtlKSx0aGlzLl95LnB1c2goK3QpfX19KTtmdW5jdGlvbiBMNyhlLHQpe3RoaXMuX2NvbnRleHQ9ZSx0aGlzLl90PXR9ZnVuY3Rpb24gY0J0KGUpe3JldHVybiBuZXcgTDcoZSwuNSl9ZnVuY3Rpb24gdUJ0KGUpe3JldHVybiBuZXcgTDcoZSwwKX1mdW5jdGlvbiBoQnQoZSl7cmV0dXJuIG5ldyBMNyhlLDEpfXZhciBmQnQ9TSgoKT0+e0w3LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiZ0aGlzLl9wb2ludD09PTImJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhlLHQpOnRoaXMuX2NvbnRleHQubW92ZVRvKGUsdCk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp7aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHQpLHRoaXMuX2NvbnRleHQubGluZVRvKGUsdCk7ZWxzZXt2YXIgcj10aGlzLl94KigxLXRoaXMuX3QpK2UqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhyLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKHIsdCl9YnJlYWt9fXRoaXMuX3g9ZSx0aGlzLl95PXR9fX0pO2Z1bmN0aW9uIGt1KGUsdCl7aWYoKGE9ZS5sZW5ndGgpPjEpZm9yKHZhciByPTEsbixpLG89ZVt0WzBdXSxhLHM9by5sZW5ndGg7cjxhOysrcilmb3IoaT1vLG89ZVt0W3JdXSxuPTA7bjxzOysrbilvW25dWzFdKz1vW25dWzBdPWlzTmFOKGlbbl1bMV0pP2lbbl1bMF06aVtuXVsxXX12YXIgenc9TSgoKT0+e30pO2Z1bmN0aW9uIFJ1KGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPW5ldyBBcnJheSh0KTstLXQ+PTA7KXJbdF09dDtyZXR1cm4gcn12YXIgRnc9TSgoKT0+e30pO2Z1bmN0aW9uIGJMZShlLHQpe3JldHVybiBlW3RdfWZ1bmN0aW9uIHBCdCgpe3ZhciBlPUdlKFtdKSx0PVJ1LHI9a3Usbj1iTGU7ZnVuY3Rpb24gaShvKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxzLGw9by5sZW5ndGgsYz1hLmxlbmd0aCx1PW5ldyBBcnJheShjKSxoO2ZvcihzPTA7czxjOysrcyl7Zm9yKHZhciBmPWFbc10scD11W3NdPW5ldyBBcnJheShsKSxkPTAsZztkPGw7KytkKXBbZF09Zz1bMCwrbihvW2RdLGYsZCxvKV0sZy5kYXRhPW9bZF07cC5rZXk9Zn1mb3Iocz0wLGg9dCh1KTtzPGM7KytzKXVbaFtzXV0uaW5kZXg9cztyZXR1cm4gcih1LGgpLHV9cmV0dXJuIGkua2V5cz1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOkdlKFBDLmNhbGwobykpLGkpOmV9LGkudmFsdWU9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIG89PSJmdW5jdGlvbiI/bzpHZSgrbyksaSk6bn0saS5vcmRlcj1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1vPT1udWxsP1J1OnR5cGVvZiBvPT0iZnVuY3Rpb24iP286R2UoUEMuY2FsbChvKSksaSk6dH0saS5vZmZzZXQ9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9bz09bnVsbD9rdTpvLGkpOnJ9LGl9dmFyIGRCdD1NKCgpPT57UmV0KCk7T2coKTt6dygpO0Z3KCl9KTtmdW5jdGlvbiBtQnQoZSx0KXtpZigobj1lLmxlbmd0aCk+MCl7Zm9yKHZhciByLG4saT0wLG89ZVswXS5sZW5ndGgsYTtpPG87KytpKXtmb3IoYT1yPTA7cjxuOysrcilhKz1lW3JdW2ldWzFdfHwwO2lmKGEpZm9yKHI9MDtyPG47KytyKWVbcl1baV1bMV0vPWF9a3UoZSx0KX19dmFyIGdCdD1NKCgpPT57encoKX0pO2Z1bmN0aW9uIF9CdChlLHQpe2lmKChsPWUubGVuZ3RoKT4xKWZvcih2YXIgcixuPTAsaSxvLGEscyxsLGM9ZVt0WzBdXS5sZW5ndGg7bjxjOysrbilmb3IoYT1zPTAscj0wO3I8bDsrK3IpKG89KGk9ZVt0W3JdXVtuXSlbMV0taVswXSk+PTA/KGlbMF09YSxpWzFdPWErPW8pOm88MD8oaVsxXT1zLGlbMF09cys9byk6aVswXT1hfXZhciB5QnQ9TSgoKT0+e30pO2Z1bmN0aW9uIHZCdChlLHQpe2lmKChpPWUubGVuZ3RoKT4wKXtmb3IodmFyIHI9MCxuPWVbdFswXV0saSxvPW4ubGVuZ3RoO3I8bzsrK3Ipe2Zvcih2YXIgYT0wLHM9MDthPGk7KythKXMrPWVbYV1bcl1bMV18fDA7bltyXVsxXSs9bltyXVswXT0tcy8yfWt1KGUsdCl9fXZhciB4QnQ9TSgoKT0+e3p3KCl9KTtmdW5jdGlvbiBiQnQoZSx0KXtpZighKCEoKGE9ZS5sZW5ndGgpPjApfHwhKChvPShpPWVbdFswXV0pLmxlbmd0aCk+MCkpKXtmb3IodmFyIHI9MCxuPTEsaSxvLGE7bjxvOysrbil7Zm9yKHZhciBzPTAsbD0wLGM9MDtzPGE7KytzKXtmb3IodmFyIHU9ZVt0W3NdXSxoPXVbbl1bMV18fDAsZj11W24tMV1bMV18fDAscD0oaC1mKS8yLGQ9MDtkPHM7KytkKXt2YXIgZz1lW3RbZF1dLF89Z1tuXVsxXXx8MCx5PWdbbi0xXVsxXXx8MDtwKz1fLXl9bCs9aCxjKz1wKmh9aVtuLTFdWzFdKz1pW24tMV1bMF09cixsJiYoci09Yy9sKX1pW24tMV1bMV0rPWlbbi0xXVswXT1yLGt1KGUsdCl9fXZhciB3QnQ9TSgoKT0+e3p3KCl9KTtmdW5jdGlvbiBrNyhlKXt2YXIgdD1lLm1hcChqZXQpO3JldHVybiBSdShlKS5zb3J0KGZ1bmN0aW9uKHIsbil7cmV0dXJuIHRbcl0tdFtuXX0pfWZ1bmN0aW9uIGpldChlKXtmb3IodmFyIHQ9MCxyPS0xLG49ZS5sZW5ndGgsaTsrK3I8bjspKGk9K2Vbcl1bMV0pJiYodCs9aSk7cmV0dXJuIHR9dmFyIFI3PU0oKCk9PntGdygpfSk7ZnVuY3Rpb24gU0J0KGUpe3JldHVybiBrNyhlKS5yZXZlcnNlKCl9dmFyIE1CdD1NKCgpPT57UjcoKX0pO2Z1bmN0aW9uIEVCdChlKXt2YXIgdD1lLmxlbmd0aCxyLG4saT1lLm1hcChqZXQpLG89UnUoZSkuc29ydChmdW5jdGlvbih1LGgpe3JldHVybiBpW2hdLWlbdV19KSxhPTAscz0wLGw9W10sYz1bXTtmb3Iocj0wO3I8dDsrK3Ipbj1vW3JdLGE8cz8oYSs9aVtuXSxsLnB1c2gobikpOihzKz1pW25dLGMucHVzaChuKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChsKX12YXIgVEJ0PU0oKCk9PntGdygpO1I3KCl9KTtmdW5jdGlvbiBDQnQoZSl7cmV0dXJuIFJ1KGUpLnJldmVyc2UoKX12YXIgQUJ0PU0oKCk9PntGdygpfSk7dmFyIFBCdD1NKCgpPT57bEZ0KCk7Q2V0KCk7XzcoKTttRnQoKTtfRnQoKTtJZXQoKTtrZXQoKTtiRnQoKTtURnQoKTtEZXQoKTtPZXQoKTt6ZXQoKTtCZXQoKTtGZXQoKTtWZXQoKTtxZXQoKTtJRnQoKTtSRnQoKTtSQygpO09GdCgpO0dldCgpO1dldCgpO05DKCk7R0Z0KCk7akZ0KCk7UDcoKTtLRnQoKTtBQygpO2lCdCgpO2xCdCgpO2ZCdCgpO2RCdCgpO2dCdCgpO3lCdCgpO3p3KCk7eEJ0KCk7d0J0KCk7UjcoKTtNQnQoKTtUQnQoKTtGdygpO0FCdCgpfSk7ZnVuY3Rpb24gU3IoZSx0LHIsbil7ZnVuY3Rpb24gaShvKXtyZXR1cm4gZShvPW5ldyBEYXRlKCtvKSksb31yZXR1cm4gaS5mbG9vcj1pLGkuY2VpbD1mdW5jdGlvbihvKXtyZXR1cm4gZShvPW5ldyBEYXRlKG8tMSkpLHQobywxKSxlKG8pLG99LGkucm91bmQ9ZnVuY3Rpb24obyl7dmFyIGE9aShvKSxzPWkuY2VpbChvKTtyZXR1cm4gby1hPHMtbz9hOnN9LGkub2Zmc2V0PWZ1bmN0aW9uKG8sYSl7cmV0dXJuIHQobz1uZXcgRGF0ZSgrbyksYT09bnVsbD8xOk1hdGguZmxvb3IoYSkpLG99LGkucmFuZ2U9ZnVuY3Rpb24obyxhLHMpe3ZhciBsPVtdLGM7aWYobz1pLmNlaWwobykscz1zPT1udWxsPzE6TWF0aC5mbG9vcihzKSwhKG88YSl8fCEocz4wKSlyZXR1cm4gbDtkbyBsLnB1c2goYz1uZXcgRGF0ZSgrbykpLHQobyxzKSxlKG8pO3doaWxlKGM8byYmbzxhKTtyZXR1cm4gbH0saS5maWx0ZXI9ZnVuY3Rpb24obyl7cmV0dXJuIFNyKGZ1bmN0aW9uKGEpe2lmKGE+PWEpZm9yKDtlKGEpLCFvKGEpOylhLnNldFRpbWUoYS0xKX0sZnVuY3Rpb24oYSxzKXtpZihhPj1hKWlmKHM8MClmb3IoOysrczw9MDspZm9yKDt0KGEsLTEpLCFvKGEpOyk7ZWxzZSBmb3IoOy0tcz49MDspZm9yKDt0KGEsMSksIW8oYSk7KTt9KX0sciYmKGkuY291bnQ9ZnVuY3Rpb24obyxhKXtyZXR1cm4gWGV0LnNldFRpbWUoK28pLCRldC5zZXRUaW1lKCthKSxlKFhldCksZSgkZXQpLE1hdGguZmxvb3IocihYZXQsJGV0KSl9LGkuZXZlcnk9ZnVuY3Rpb24obyl7cmV0dXJuIG89TWF0aC5mbG9vcihvKSwhaXNGaW5pdGUobyl8fCEobz4wKT9udWxsOm8+MT9pLmZpbHRlcihuP2Z1bmN0aW9uKGEpe3JldHVybiBuKGEpJW89PT0wfTpmdW5jdGlvbihhKXtyZXR1cm4gaS5jb3VudCgwLGEpJW89PT0wfSk6aX0pLGl9dmFyIFhldCwkZXQsaGE9TSgoKT0+e1hldD1uZXcgRGF0ZSwkZXQ9bmV3IERhdGV9KTt2YXIgTjcsS2V0LFpldCxJQnQ9TSgoKT0+e2hhKCk7Tjc9U3IoZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LWV9KTtONy5ldmVyeT1mdW5jdGlvbihlKXtyZXR1cm4gZT1NYXRoLmZsb29yKGUpLCFpc0Zpbml0ZShlKXx8IShlPjApP251bGw6ZT4xP1NyKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvZSkqZSl9LGZ1bmN0aW9uKHQscil7dC5zZXRUaW1lKCt0K3IqZSl9LGZ1bmN0aW9uKHQscil7cmV0dXJuKHItdCkvZX0pOk43fTtLZXQ9TjcsWmV0PU43LnJhbmdlfSk7dmFyIE9DLEFzLHhmLEQ3LE83LGJmPU0oKCk9PntPQz0xZTMsQXM9NmU0LHhmPTM2ZTUsRDc9ODY0ZTUsTzc9NjA0OGU1fSk7dmFyIExCdCxKZXQsUWV0LGtCdD1NKCgpPT57aGEoKTtiZigpO0xCdD1TcihmdW5jdGlvbihlKXtlLnNldFRpbWUoTWF0aC5mbG9vcihlL09DKSpPQyl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QqT0MpfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL09DfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENTZWNvbmRzKCl9KSxKZXQ9TEJ0LFFldD1MQnQucmFuZ2V9KTt2YXIgUkJ0LE5CdCxEQnQsT0J0PU0oKCk9PntoYSgpO2JmKCk7UkJ0PVNyKGZ1bmN0aW9uKGUpe2Uuc2V0VGltZShNYXRoLmZsb29yKGUvQXMpKkFzKX0sZnVuY3Rpb24oZSx0KXtlLnNldFRpbWUoK2UrdCpBcyl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZSkvQXN9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldE1pbnV0ZXMoKX0pLE5CdD1SQnQsREJ0PVJCdC5yYW5nZX0pO3ZhciB6QnQsRkJ0LEJCdCxIQnQ9TSgoKT0+e2hhKCk7YmYoKTt6QnQ9U3IoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRUaW1lem9uZU9mZnNldCgpKkFzJXhmO3Q8MCYmKHQrPXhmKSxlLnNldFRpbWUoTWF0aC5mbG9vcigoK2UtdCkveGYpKnhmK3QpfSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0KnhmKX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS94Zn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG91cnMoKX0pLEZCdD16QnQsQkJ0PXpCdC5yYW5nZX0pO3ZhciBWQnQsVUJ0LHFCdCxHQnQ9TSgoKT0+e2hhKCk7YmYoKTtWQnQ9U3IoZnVuY3Rpb24oZSl7ZS5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldERhdGUoZS5nZXREYXRlKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZS0odC5nZXRUaW1lem9uZU9mZnNldCgpLWUuZ2V0VGltZXpvbmVPZmZzZXQoKSkqQXMpL0Q3fSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXREYXRlKCktMX0pLFVCdD1WQnQscUJ0PVZCdC5yYW5nZX0pO2Z1bmN0aW9uIHB2KGUpe3JldHVybiBTcihmdW5jdGlvbih0KXt0LnNldERhdGUodC5nZXREYXRlKCktKHQuZ2V0RGF5KCkrNy1lKSU3KSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LHIpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStyKjcpfSxmdW5jdGlvbih0LHIpe3JldHVybihyLXQtKHIuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKkFzKS9PN30pfXZhciB6Nyx0cnQsZXJ0LHJydCxucnQsaXJ0LG9ydCxhcnQsV0J0LFlCdCxqQnQsWEJ0LCRCdCxLQnQsWkJ0PU0oKCk9PntoYSgpO2JmKCk7ejc9cHYoMCksdHJ0PXB2KDEpLGVydD1wdigyKSxycnQ9cHYoMyksbnJ0PXB2KDQpLGlydD1wdig1KSxvcnQ9cHYoNiksYXJ0PXo3LnJhbmdlLFdCdD10cnQucmFuZ2UsWUJ0PWVydC5yYW5nZSxqQnQ9cnJ0LnJhbmdlLFhCdD1ucnQucmFuZ2UsJEJ0PWlydC5yYW5nZSxLQnQ9b3J0LnJhbmdlfSk7dmFyIEpCdCxRQnQsdEh0LGVIdD1NKCgpPT57aGEoKTtKQnQ9U3IoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRNb250aChlLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZ2V0TW9udGgoKS1lLmdldE1vbnRoKCkrKHQuZ2V0RnVsbFllYXIoKS1lLmdldEZ1bGxZZWFyKCkpKjEyfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNb250aCgpfSksUUJ0PUpCdCx0SHQ9SkJ0LnJhbmdlfSk7dmFyIHNydCxySHQsbkh0LGlIdD1NKCgpPT57aGEoKTtzcnQ9U3IoZnVuY3Rpb24oZSl7ZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKS1lLmdldEZ1bGxZZWFyKCl9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEZ1bGxZZWFyKCl9KTtzcnQuZXZlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIWlzRmluaXRlKGU9TWF0aC5mbG9vcihlKSl8fCEoZT4wKT9udWxsOlNyKGZ1bmN0aW9uKHQpe3Quc2V0RnVsbFllYXIoTWF0aC5mbG9vcih0LmdldEZ1bGxZZWFyKCkvZSkqZSksdC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQscil7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrciplKX0pfTtySHQ9c3J0LG5IdD1zcnQucmFuZ2V9KTt2YXIgb0h0LGFIdCxzSHQsbEh0PU0oKCk9PntoYSgpO2JmKCk7b0h0PVNyKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDU2Vjb25kcygwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0KkFzKX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS9Bc30sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDTWludXRlcygpfSksYUh0PW9IdCxzSHQ9b0h0LnJhbmdlfSk7dmFyIGNIdCx1SHQsaEh0LGZIdD1NKCgpPT57aGEoKTtiZigpO2NIdD1TcihmdW5jdGlvbihlKXtlLnNldFVUQ01pbnV0ZXMoMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0KnhmKX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS94Zn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDSG91cnMoKX0pLHVIdD1jSHQsaEh0PWNIdC5yYW5nZX0pO3ZhciBwSHQsZEh0LG1IdCxnSHQ9TSgoKT0+e2hhKCk7YmYoKTtwSHQ9U3IoZnVuY3Rpb24oZSl7ZS5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZSkvRDd9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0RhdGUoKS0xfSksZEh0PXBIdCxtSHQ9cEh0LnJhbmdlfSk7ZnVuY3Rpb24gZHYoZSl7cmV0dXJuIFNyKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKS0odC5nZXRVVENEYXkoKSs3LWUpJTcpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQscil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK3IqNyl9LGZ1bmN0aW9uKHQscil7cmV0dXJuKHItdCkvTzd9KX12YXIgRjcsbHJ0LGNydCx1cnQsaHJ0LGZydCxwcnQsZHJ0LF9IdCx5SHQsdkh0LHhIdCxiSHQsd0h0LFNIdD1NKCgpPT57aGEoKTtiZigpO0Y3PWR2KDApLGxydD1kdigxKSxjcnQ9ZHYoMiksdXJ0PWR2KDMpLGhydD1kdig0KSxmcnQ9ZHYoNSkscHJ0PWR2KDYpLGRydD1GNy5yYW5nZSxfSHQ9bHJ0LnJhbmdlLHlIdD1jcnQucmFuZ2Usdkh0PXVydC5yYW5nZSx4SHQ9aHJ0LnJhbmdlLGJIdD1mcnQucmFuZ2Usd0h0PXBydC5yYW5nZX0pO3ZhciBNSHQsRUh0LFRIdCxDSHQ9TSgoKT0+e2hhKCk7TUh0PVNyKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZSgxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0VVRDTW9udGgoZS5nZXRVVENNb250aCgpK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCktZS5nZXRVVENNb250aCgpKyh0LmdldFVUQ0Z1bGxZZWFyKCktZS5nZXRVVENGdWxsWWVhcigpKSoxMn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKX0pLEVIdD1NSHQsVEh0PU1IdC5yYW5nZX0pO3ZhciBtcnQsQUh0LFBIdCxJSHQ9TSgoKT0+e2hhKCk7bXJ0PVNyKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCktZS5nZXRVVENGdWxsWWVhcigpfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpfSk7bXJ0LmV2ZXJ5PWZ1bmN0aW9uKGUpe3JldHVybiFpc0Zpbml0ZShlPU1hdGguZmxvb3IoZSkpfHwhKGU+MCk/bnVsbDpTcihmdW5jdGlvbih0KXt0LnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IodC5nZXRVVENGdWxsWWVhcigpL2UpKmUpLHQuc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LHIpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK3IqZSl9KX07QUh0PW1ydCxQSHQ9bXJ0LnJhbmdlfSk7dmFyIExIdD1NKCgpPT57aGEoKTtJQnQoKTtrQnQoKTtPQnQoKTtIQnQoKTtHQnQoKTtaQnQoKTtlSHQoKTtpSHQoKTtsSHQoKTtmSHQoKTtnSHQoKTtTSHQoKTtDSHQoKTtJSHQoKX0pO2Z1bmN0aW9uIGZhKGUsdCxyLG4pe2Z1bmN0aW9uIGkobyl7cmV0dXJuIGUobz1hcmd1bWVudHMubGVuZ3RoPT09MD9uZXcgRGF0ZTpuZXcgRGF0ZSgrbykpLG99cmV0dXJuIGkuZmxvb3I9ZnVuY3Rpb24obyl7cmV0dXJuIGUobz1uZXcgRGF0ZSgrbykpLG99LGkuY2VpbD1mdW5jdGlvbihvKXtyZXR1cm4gZShvPW5ldyBEYXRlKG8tMSkpLHQobywxKSxlKG8pLG99LGkucm91bmQ9ZnVuY3Rpb24obyl7dmFyIGE9aShvKSxzPWkuY2VpbChvKTtyZXR1cm4gby1hPHMtbz9hOnN9LGkub2Zmc2V0PWZ1bmN0aW9uKG8sYSl7cmV0dXJuIHQobz1uZXcgRGF0ZSgrbyksYT09bnVsbD8xOk1hdGguZmxvb3IoYSkpLG99LGkucmFuZ2U9ZnVuY3Rpb24obyxhLHMpe3ZhciBsPVtdLGM7aWYobz1pLmNlaWwobykscz1zPT1udWxsPzE6TWF0aC5mbG9vcihzKSwhKG88YSl8fCEocz4wKSlyZXR1cm4gbDtkbyBsLnB1c2goYz1uZXcgRGF0ZSgrbykpLHQobyxzKSxlKG8pO3doaWxlKGM8byYmbzxhKTtyZXR1cm4gbH0saS5maWx0ZXI9ZnVuY3Rpb24obyl7cmV0dXJuIGZhKGZ1bmN0aW9uKGEpe2lmKGE+PWEpZm9yKDtlKGEpLCFvKGEpOylhLnNldFRpbWUoYS0xKX0sZnVuY3Rpb24oYSxzKXtpZihhPj1hKWlmKHM8MClmb3IoOysrczw9MDspZm9yKDt0KGEsLTEpLCFvKGEpOyk7ZWxzZSBmb3IoOy0tcz49MDspZm9yKDt0KGEsMSksIW8oYSk7KTt9KX0sciYmKGkuY291bnQ9ZnVuY3Rpb24obyxhKXtyZXR1cm4gZ3J0LnNldFRpbWUoK28pLF9ydC5zZXRUaW1lKCthKSxlKGdydCksZShfcnQpLE1hdGguZmxvb3IocihncnQsX3J0KSl9LGkuZXZlcnk9ZnVuY3Rpb24obyl7cmV0dXJuIG89TWF0aC5mbG9vcihvKSwhaXNGaW5pdGUobyl8fCEobz4wKT9udWxsOm8+MT9pLmZpbHRlcihuP2Z1bmN0aW9uKGEpe3JldHVybiBuKGEpJW89PT0wfTpmdW5jdGlvbihhKXtyZXR1cm4gaS5jb3VudCgwLGEpJW89PT0wfSk6aX0pLGl9dmFyIGdydCxfcnQsbXY9TSgoKT0+e2dydD1uZXcgRGF0ZSxfcnQ9bmV3IERhdGV9KTt2YXIgQjcsSDcsVjcsekM9TSgoKT0+e0I3PTZlNCxINz04NjRlNSxWNz02MDQ4ZTV9KTt2YXIga0h0LFU3LHdMZSxSSHQ9TSgoKT0+e212KCk7ekMoKTtrSHQ9ZmEoZnVuY3Rpb24oZSl7ZS5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldERhdGUoZS5nZXREYXRlKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZS0odC5nZXRUaW1lem9uZU9mZnNldCgpLWUuZ2V0VGltZXpvbmVPZmZzZXQoKSkqQjcpL0g3fSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXREYXRlKCktMX0pLFU3PWtIdCx3TGU9a0h0LnJhbmdlfSk7ZnVuY3Rpb24gZ3YoZSl7cmV0dXJuIGZhKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSh0LmdldERhdGUoKS0odC5nZXREYXkoKSs3LWUpJTcpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQscil7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK3IqNyl9LGZ1bmN0aW9uKHQscil7cmV0dXJuKHItdC0oci5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqQjcpL1Y3fSl9dmFyIEZDLEJ3LE5IdCxESHQsSHcsT0h0LHpIdCxGSHQsU0xlLE1MZSxFTGUsVExlLENMZSxBTGUsQkh0PU0oKCk9PnttdigpO3pDKCk7RkM9Z3YoMCksQnc9Z3YoMSksTkh0PWd2KDIpLERIdD1ndigzKSxIdz1ndig0KSxPSHQ9Z3YoNSksekh0PWd2KDYpLEZIdD1GQy5yYW5nZSxTTGU9QncucmFuZ2UsTUxlPU5IdC5yYW5nZSxFTGU9REh0LnJhbmdlLFRMZT1Idy5yYW5nZSxDTGU9T0h0LnJhbmdlLEFMZT16SHQucmFuZ2V9KTt2YXIgeXJ0LF92LFBMZSxISHQ9TSgoKT0+e212KCk7eXJ0PWZhKGZ1bmN0aW9uKGUpe2Uuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCktZS5nZXRGdWxsWWVhcigpfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpfSk7eXJ0LmV2ZXJ5PWZ1bmN0aW9uKGUpe3JldHVybiFpc0Zpbml0ZShlPU1hdGguZmxvb3IoZSkpfHwhKGU+MCk/bnVsbDpmYShmdW5jdGlvbih0KXt0LnNldEZ1bGxZZWFyKE1hdGguZmxvb3IodC5nZXRGdWxsWWVhcigpL2UpKmUpLHQuc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LHIpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK3IqZSl9KX07X3Y9eXJ0LFBMZT15cnQucmFuZ2V9KTt2YXIgVkh0LHE3LElMZSxVSHQ9TSgoKT0+e212KCk7ekMoKTtWSHQ9ZmEoZnVuY3Rpb24oZSl7ZS5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZSkvSDd9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0RhdGUoKS0xfSkscTc9Vkh0LElMZT1WSHQucmFuZ2V9KTtmdW5jdGlvbiB5dihlKXtyZXR1cm4gZmEoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpLSh0LmdldFVUQ0RheSgpKzctZSklNyksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxyKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrcio3KX0sZnVuY3Rpb24odCxyKXtyZXR1cm4oci10KS9WN30pfXZhciBCQyxWdyxxSHQsR0h0LFV3LFdIdCxZSHQsakh0LExMZSxrTGUsUkxlLE5MZSxETGUsT0xlLFhIdD1NKCgpPT57bXYoKTt6QygpO0JDPXl2KDApLFZ3PXl2KDEpLHFIdD15digyKSxHSHQ9eXYoMyksVXc9eXYoNCksV0h0PXl2KDUpLFlIdD15dig2KSxqSHQ9QkMucmFuZ2UsTExlPVZ3LnJhbmdlLGtMZT1xSHQucmFuZ2UsUkxlPUdIdC5yYW5nZSxOTGU9VXcucmFuZ2UsRExlPVdIdC5yYW5nZSxPTGU9WUh0LnJhbmdlfSk7dmFyIHZydCx2dix6TGUsJEh0PU0oKCk9PnttdigpO3ZydD1mYShmdW5jdGlvbihlKXtlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKSt0KX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpLWUuZ2V0VVRDRnVsbFllYXIoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKX0pO3ZydC5ldmVyeT1mdW5jdGlvbihlKXtyZXR1cm4haXNGaW5pdGUoZT1NYXRoLmZsb29yKGUpKXx8IShlPjApP251bGw6ZmEoZnVuY3Rpb24odCl7dC5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKHQuZ2V0VVRDRnVsbFllYXIoKS9lKSplKSx0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxyKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStyKmUpfSl9O3Z2PXZydCx6TGU9dnJ0LnJhbmdlfSk7dmFyIEtIdD1NKCgpPT57Ukh0KCk7Qkh0KCk7SEh0KCk7VUh0KCk7WEh0KCk7JEh0KCl9KTtmdW5jdGlvbiBGTGUoZSl7aWYoMDw9ZS55JiZlLnk8MTAwKXt2YXIgdD1uZXcgRGF0ZSgtMSxlLm0sZS5kLGUuSCxlLk0sZS5TLGUuTCk7cmV0dXJuIHQuc2V0RnVsbFllYXIoZS55KSx0fXJldHVybiBuZXcgRGF0ZShlLnksZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpfWZ1bmN0aW9uIEc3KGUpe2lmKDA8PWUueSYmZS55PDEwMCl7dmFyIHQ9bmV3IERhdGUoRGF0ZS5VVEMoLTEsZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpKTtyZXR1cm4gdC5zZXRVVENGdWxsWWVhcihlLnkpLHR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGUueSxlLm0sZS5kLGUuSCxlLk0sZS5TLGUuTCkpfWZ1bmN0aW9uIEhDKGUpe3JldHVybnt5OmUsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIHFDKGUpe3ZhciB0PWUuZGF0ZVRpbWUscj1lLmRhdGUsbj1lLnRpbWUsaT1lLnBlcmlvZHMsbz1lLmRheXMsYT1lLnNob3J0RGF5cyxzPWUubW9udGhzLGw9ZS5zaG9ydE1vbnRocyxjPVZDKGkpLHU9VUMoaSksaD1WQyhvKSxmPVVDKG8pLHA9VkMoYSksZD1VQyhhKSxnPVZDKHMpLF89VUMocykseT1WQyhsKSx4PVVDKGwpLGI9e2E6VyxBOlosYjpydCxCOm90LGM6bnVsbCxkOnRWdCxlOnRWdCxmOmxrZSxIOm9rZSxJOmFrZSxqOnNrZSxMOm9WdCxtOmNrZSxNOnVrZSxwOnN0LFE6blZ0LHM6aVZ0LFM6aGtlLHU6ZmtlLFU6cGtlLFY6ZGtlLHc6bWtlLFc6Z2tlLHg6bnVsbCxYOm51bGwseTpfa2UsWTp5a2UsWjp2a2UsIiUiOnJWdH0sUz17YTpTdCxBOmJ0LGI6TXQsQjpsdCxjOm51bGwsZDplVnQsZTplVnQsZjpTa2UsSDp4a2UsSTpia2Usajp3a2UsTDphVnQsbTpNa2UsTTpFa2UscDpLdCxROm5WdCxzOmlWdCxTOlRrZSx1OkNrZSxVOkFrZSxWOlBrZSx3OklrZSxXOkxrZSx4Om51bGwsWDpudWxsLHk6a2tlLFk6UmtlLFo6TmtlLCIlIjpyVnR9LEM9e2E6QixBOkksYjpMLEI6UixjOkYsZDpKSHQsZTpKSHQsZjpla2UsSDpRSHQsSTpRSHQsajpaTGUsTDp0a2UsbTpLTGUsTTpKTGUscDpELFE6bmtlLHM6aWtlLFM6UUxlLHU6cUxlLFU6R0xlLFY6V0xlLHc6VUxlLFc6WUxlLHg6eixYOlUseTpYTGUsWTpqTGUsWjokTGUsIiUiOnJrZX07Yi54PVAocixiKSxiLlg9UChuLGIpLGIuYz1QKHQsYiksUy54PVAocixTKSxTLlg9UChuLFMpLFMuYz1QKHQsUyk7ZnVuY3Rpb24gUChfdCxjdCl7cmV0dXJuIGZ1bmN0aW9uKFgpe3ZhciBldD1bXSxkdD0tMSxxPTAscHQ9X3QubGVuZ3RoLGh0LHd0LGt0O2ZvcihYIGluc3RhbmNlb2YgRGF0ZXx8KFg9bmV3IERhdGUoK1gpKTsrK2R0PHB0OylfdC5jaGFyQ29kZUF0KGR0KT09PTM3JiYoZXQucHVzaChfdC5zbGljZShxLGR0KSksKHd0PVpIdFtodD1fdC5jaGFyQXQoKytkdCldKSE9bnVsbD9odD1fdC5jaGFyQXQoKytkdCk6d3Q9aHQ9PT0iZSI/IiAiOiIwIiwoa3Q9Y3RbaHRdKSYmKGh0PWt0KFgsd3QpKSxldC5wdXNoKGh0KSxxPWR0KzEpO3JldHVybiBldC5wdXNoKF90LnNsaWNlKHEsZHQpKSxldC5qb2luKCIiKX19ZnVuY3Rpb24gayhfdCxjdCl7cmV0dXJuIGZ1bmN0aW9uKFgpe3ZhciBldD1IQygxOTAwKSxkdD1PKGV0LF90LFgrPSIiLDApLHEscHQ7aWYoZHQhPVgubGVuZ3RoKXJldHVybiBudWxsO2lmKCJRImluIGV0KXJldHVybiBuZXcgRGF0ZShldC5RKTtpZigicCJpbiBldCYmKGV0Lkg9ZXQuSCUxMitldC5wKjEyKSwiViJpbiBldCl7aWYoZXQuVjwxfHxldC5WPjUzKXJldHVybiBudWxsOyJ3ImluIGV0fHwoZXQudz0xKSwiWiJpbiBldD8ocT1HNyhIQyhldC55KSkscHQ9cS5nZXRVVENEYXkoKSxxPXB0PjR8fHB0PT09MD9Wdy5jZWlsKHEpOlZ3KHEpLHE9cTcub2Zmc2V0KHEsKGV0LlYtMSkqNyksZXQueT1xLmdldFVUQ0Z1bGxZZWFyKCksZXQubT1xLmdldFVUQ01vbnRoKCksZXQuZD1xLmdldFVUQ0RhdGUoKSsoZXQudys2KSU3KToocT1jdChIQyhldC55KSkscHQ9cS5nZXREYXkoKSxxPXB0PjR8fHB0PT09MD9Cdy5jZWlsKHEpOkJ3KHEpLHE9VTcub2Zmc2V0KHEsKGV0LlYtMSkqNyksZXQueT1xLmdldEZ1bGxZZWFyKCksZXQubT1xLmdldE1vbnRoKCksZXQuZD1xLmdldERhdGUoKSsoZXQudys2KSU3KX1lbHNlKCJXImluIGV0fHwiVSJpbiBldCkmJigidyJpbiBldHx8KGV0Lnc9InUiaW4gZXQ/ZXQudSU3OiJXImluIGV0PzE6MCkscHQ9IloiaW4gZXQ/RzcoSEMoZXQueSkpLmdldFVUQ0RheSgpOmN0KEhDKGV0LnkpKS5nZXREYXkoKSxldC5tPTAsZXQuZD0iVyJpbiBldD8oZXQudys2KSU3K2V0LlcqNy0ocHQrNSklNzpldC53K2V0LlUqNy0ocHQrNiklNyk7cmV0dXJuIloiaW4gZXQ/KGV0LkgrPWV0LlovMTAwfDAsZXQuTSs9ZXQuWiUxMDAsRzcoZXQpKTpjdChldCl9fWZ1bmN0aW9uIE8oX3QsY3QsWCxldCl7Zm9yKHZhciBkdD0wLHE9Y3QubGVuZ3RoLHB0PVgubGVuZ3RoLGh0LHd0O2R0PHE7KXtpZihldD49cHQpcmV0dXJuLTE7aWYoaHQ9Y3QuY2hhckNvZGVBdChkdCsrKSxodD09PTM3KXtpZihodD1jdC5jaGFyQXQoZHQrKyksd3Q9Q1todCBpbiBaSHQ/Y3QuY2hhckF0KGR0KyspOmh0XSwhd3R8fChldD13dChfdCxYLGV0KSk8MClyZXR1cm4tMX1lbHNlIGlmKGh0IT1YLmNoYXJDb2RlQXQoZXQrKykpcmV0dXJuLTF9cmV0dXJuIGV0fWZ1bmN0aW9uIEQoX3QsY3QsWCl7dmFyIGV0PWMuZXhlYyhjdC5zbGljZShYKSk7cmV0dXJuIGV0PyhfdC5wPXVbZXRbMF0udG9Mb3dlckNhc2UoKV0sWCtldFswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEIoX3QsY3QsWCl7dmFyIGV0PXAuZXhlYyhjdC5zbGljZShYKSk7cmV0dXJuIGV0PyhfdC53PWRbZXRbMF0udG9Mb3dlckNhc2UoKV0sWCtldFswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEkoX3QsY3QsWCl7dmFyIGV0PWguZXhlYyhjdC5zbGljZShYKSk7cmV0dXJuIGV0PyhfdC53PWZbZXRbMF0udG9Mb3dlckNhc2UoKV0sWCtldFswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEwoX3QsY3QsWCl7dmFyIGV0PXkuZXhlYyhjdC5zbGljZShYKSk7cmV0dXJuIGV0PyhfdC5tPXhbZXRbMF0udG9Mb3dlckNhc2UoKV0sWCtldFswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFIoX3QsY3QsWCl7dmFyIGV0PWcuZXhlYyhjdC5zbGljZShYKSk7cmV0dXJuIGV0PyhfdC5tPV9bZXRbMF0udG9Mb3dlckNhc2UoKV0sWCtldFswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEYoX3QsY3QsWCl7cmV0dXJuIE8oX3QsdCxjdCxYKX1mdW5jdGlvbiB6KF90LGN0LFgpe3JldHVybiBPKF90LHIsY3QsWCl9ZnVuY3Rpb24gVShfdCxjdCxYKXtyZXR1cm4gTyhfdCxuLGN0LFgpfWZ1bmN0aW9uIFcoX3Qpe3JldHVybiBhW190LmdldERheSgpXX1mdW5jdGlvbiBaKF90KXtyZXR1cm4gb1tfdC5nZXREYXkoKV19ZnVuY3Rpb24gcnQoX3Qpe3JldHVybiBsW190LmdldE1vbnRoKCldfWZ1bmN0aW9uIG90KF90KXtyZXR1cm4gc1tfdC5nZXRNb250aCgpXX1mdW5jdGlvbiBzdChfdCl7cmV0dXJuIGlbKyhfdC5nZXRIb3VycygpPj0xMildfWZ1bmN0aW9uIFN0KF90KXtyZXR1cm4gYVtfdC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gYnQoX3Qpe3JldHVybiBvW190LmdldFVUQ0RheSgpXX1mdW5jdGlvbiBNdChfdCl7cmV0dXJuIGxbX3QuZ2V0VVRDTW9udGgoKV19ZnVuY3Rpb24gbHQoX3Qpe3JldHVybiBzW190LmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIEt0KF90KXtyZXR1cm4gaVsrKF90LmdldFVUQ0hvdXJzKCk+PTEyKV19cmV0dXJue2Zvcm1hdDpmdW5jdGlvbihfdCl7dmFyIGN0PVAoX3QrPSIiLGIpO3JldHVybiBjdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBfdH0sY3R9LHBhcnNlOmZ1bmN0aW9uKF90KXt2YXIgY3Q9ayhfdCs9IiIsRkxlKTtyZXR1cm4gY3QudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gX3R9LGN0fSx1dGNGb3JtYXQ6ZnVuY3Rpb24oX3Qpe3ZhciBjdD1QKF90Kz0iIixTKTtyZXR1cm4gY3QudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gX3R9LGN0fSx1dGNQYXJzZTpmdW5jdGlvbihfdCl7dmFyIGN0PWsoX3QsRzcpO3JldHVybiBjdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBfdH0sY3R9fX1mdW5jdGlvbiBnbihlLHQscil7dmFyIG49ZTwwPyItIjoiIixpPShuPy1lOmUpKyIiLG89aS5sZW5ndGg7cmV0dXJuIG4rKG88cj9uZXcgQXJyYXkoci1vKzEpLmpvaW4odCkraTppKX1mdW5jdGlvbiBWTGUoZSl7cmV0dXJuIGUucmVwbGFjZShITGUsIlxcJCYiKX1mdW5jdGlvbiBWQyhlKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrZS5tYXAoVkxlKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gVUMoZSl7Zm9yKHZhciB0PXt9LHI9LTEsbj1lLmxlbmd0aDsrK3I8bjspdFtlW3JdLnRvTG93ZXJDYXNlKCldPXI7cmV0dXJuIHR9ZnVuY3Rpb24gVUxlKGUsdCxyKXt2YXIgbj1Iby5leGVjKHQuc2xpY2UocixyKzEpKTtyZXR1cm4gbj8oZS53PStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHFMZShlLHQscil7dmFyIG49SG8uZXhlYyh0LnNsaWNlKHIscisxKSk7cmV0dXJuIG4/KGUudT0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBHTGUoZSx0LHIpe3ZhciBuPUhvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLlU9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gV0xlKGUsdCxyKXt2YXIgbj1Iby5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS5WPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFlMZShlLHQscil7dmFyIG49SG8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuVz0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBqTGUoZSx0LHIpe3ZhciBuPUhvLmV4ZWModC5zbGljZShyLHIrNCkpO3JldHVybiBuPyhlLnk9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWExlKGUsdCxyKXt2YXIgbj1Iby5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS55PStuWzBdKygrblswXT42OD8xOTAwOjJlMykscituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gJExlKGUsdCxyKXt2YXIgbj0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyh0LnNsaWNlKHIscis2KSk7cmV0dXJuIG4/KGUuWj1uWzFdPzA6LShuWzJdKyhuWzNdfHwiMDAiKSkscituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS0xlKGUsdCxyKXt2YXIgbj1Iby5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS5tPW5bMF0tMSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBKSHQoZSx0LHIpe3ZhciBuPUhvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLmQ9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWkxlKGUsdCxyKXt2YXIgbj1Iby5leGVjKHQuc2xpY2UocixyKzMpKTtyZXR1cm4gbj8oZS5tPTAsZS5kPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFFIdChlLHQscil7dmFyIG49SG8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuSD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBKTGUoZSx0LHIpe3ZhciBuPUhvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLk09K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUUxlKGUsdCxyKXt2YXIgbj1Iby5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS5TPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHRrZShlLHQscil7dmFyIG49SG8uZXhlYyh0LnNsaWNlKHIsciszKSk7cmV0dXJuIG4/KGUuTD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBla2UoZSx0LHIpe3ZhciBuPUhvLmV4ZWModC5zbGljZShyLHIrNikpO3JldHVybiBuPyhlLkw9TWF0aC5mbG9vcihuWzBdLzFlMykscituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gcmtlKGUsdCxyKXt2YXIgbj1CTGUuZXhlYyh0LnNsaWNlKHIscisxKSk7cmV0dXJuIG4/cituWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBua2UoZSx0LHIpe3ZhciBuPUhvLmV4ZWModC5zbGljZShyKSk7cmV0dXJuIG4/KGUuUT0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBpa2UoZSx0LHIpe3ZhciBuPUhvLmV4ZWModC5zbGljZShyKSk7cmV0dXJuIG4/KGUuUT0rblswXSoxZTMscituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdFZ0KGUsdCl7cmV0dXJuIGduKGUuZ2V0RGF0ZSgpLHQsMil9ZnVuY3Rpb24gb2tlKGUsdCl7cmV0dXJuIGduKGUuZ2V0SG91cnMoKSx0LDIpfWZ1bmN0aW9uIGFrZShlLHQpe3JldHVybiBnbihlLmdldEhvdXJzKCklMTJ8fDEyLHQsMil9ZnVuY3Rpb24gc2tlKGUsdCl7cmV0dXJuIGduKDErVTcuY291bnQoX3YoZSksZSksdCwzKX1mdW5jdGlvbiBvVnQoZSx0KXtyZXR1cm4gZ24oZS5nZXRNaWxsaXNlY29uZHMoKSx0LDMpfWZ1bmN0aW9uIGxrZShlLHQpe3JldHVybiBvVnQoZSx0KSsiMDAwIn1mdW5jdGlvbiBja2UoZSx0KXtyZXR1cm4gZ24oZS5nZXRNb250aCgpKzEsdCwyKX1mdW5jdGlvbiB1a2UoZSx0KXtyZXR1cm4gZ24oZS5nZXRNaW51dGVzKCksdCwyKX1mdW5jdGlvbiBoa2UoZSx0KXtyZXR1cm4gZ24oZS5nZXRTZWNvbmRzKCksdCwyKX1mdW5jdGlvbiBma2UoZSl7dmFyIHQ9ZS5nZXREYXkoKTtyZXR1cm4gdD09PTA/Nzp0fWZ1bmN0aW9uIHBrZShlLHQpe3JldHVybiBnbihGQy5jb3VudChfdihlKSxlKSx0LDIpfWZ1bmN0aW9uIGRrZShlLHQpe3ZhciByPWUuZ2V0RGF5KCk7cmV0dXJuIGU9cj49NHx8cj09PTA/SHcoZSk6SHcuY2VpbChlKSxnbihIdy5jb3VudChfdihlKSxlKSsoX3YoZSkuZ2V0RGF5KCk9PT00KSx0LDIpfWZ1bmN0aW9uIG1rZShlKXtyZXR1cm4gZS5nZXREYXkoKX1mdW5jdGlvbiBna2UoZSx0KXtyZXR1cm4gZ24oQncuY291bnQoX3YoZSksZSksdCwyKX1mdW5jdGlvbiBfa2UoZSx0KXtyZXR1cm4gZ24oZS5nZXRGdWxsWWVhcigpJTEwMCx0LDIpfWZ1bmN0aW9uIHlrZShlLHQpe3JldHVybiBnbihlLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9ZnVuY3Rpb24gdmtlKGUpe3ZhciB0PWUuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4odD4wPyItIjoodCo9LTEsIisiKSkrZ24odC82MHwwLCIwIiwyKStnbih0JTYwLCIwIiwyKX1mdW5jdGlvbiBlVnQoZSx0KXtyZXR1cm4gZ24oZS5nZXRVVENEYXRlKCksdCwyKX1mdW5jdGlvbiB4a2UoZSx0KXtyZXR1cm4gZ24oZS5nZXRVVENIb3VycygpLHQsMil9ZnVuY3Rpb24gYmtlKGUsdCl7cmV0dXJuIGduKGUuZ2V0VVRDSG91cnMoKSUxMnx8MTIsdCwyKX1mdW5jdGlvbiB3a2UoZSx0KXtyZXR1cm4gZ24oMStxNy5jb3VudCh2dihlKSxlKSx0LDMpfWZ1bmN0aW9uIGFWdChlLHQpe3JldHVybiBnbihlLmdldFVUQ01pbGxpc2Vjb25kcygpLHQsMyl9ZnVuY3Rpb24gU2tlKGUsdCl7cmV0dXJuIGFWdChlLHQpKyIwMDAifWZ1bmN0aW9uIE1rZShlLHQpe3JldHVybiBnbihlLmdldFVUQ01vbnRoKCkrMSx0LDIpfWZ1bmN0aW9uIEVrZShlLHQpe3JldHVybiBnbihlLmdldFVUQ01pbnV0ZXMoKSx0LDIpfWZ1bmN0aW9uIFRrZShlLHQpe3JldHVybiBnbihlLmdldFVUQ1NlY29uZHMoKSx0LDIpfWZ1bmN0aW9uIENrZShlKXt2YXIgdD1lLmdldFVUQ0RheSgpO3JldHVybiB0PT09MD83OnR9ZnVuY3Rpb24gQWtlKGUsdCl7cmV0dXJuIGduKEJDLmNvdW50KHZ2KGUpLGUpLHQsMil9ZnVuY3Rpb24gUGtlKGUsdCl7dmFyIHI9ZS5nZXRVVENEYXkoKTtyZXR1cm4gZT1yPj00fHxyPT09MD9VdyhlKTpVdy5jZWlsKGUpLGduKFV3LmNvdW50KHZ2KGUpLGUpKyh2dihlKS5nZXRVVENEYXkoKT09PTQpLHQsMil9ZnVuY3Rpb24gSWtlKGUpe3JldHVybiBlLmdldFVUQ0RheSgpfWZ1bmN0aW9uIExrZShlLHQpe3JldHVybiBnbihWdy5jb3VudCh2dihlKSxlKSx0LDIpfWZ1bmN0aW9uIGtrZShlLHQpe3JldHVybiBnbihlLmdldFVUQ0Z1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gUmtlKGUsdCl7cmV0dXJuIGduKGUuZ2V0VVRDRnVsbFllYXIoKSUxZTQsdCw0KX1mdW5jdGlvbiBOa2UoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIHJWdCgpe3JldHVybiIlIn1mdW5jdGlvbiBuVnQoZSl7cmV0dXJuK2V9ZnVuY3Rpb24gaVZ0KGUpe3JldHVybiBNYXRoLmZsb29yKCtlLzFlMyl9dmFyIFpIdCxIbyxCTGUsSExlLHhydD1NKCgpPT57S0h0KCk7Wkh0PXsiLSI6IiIsXzoiICIsMDoiMCJ9LEhvPS9eXHMqXGQrLyxCTGU9L14lLyxITGU9L1tcXF4kKis/fFtcXSgpLnt9XS9nfSk7ZnVuY3Rpb24gVzcoZSl7cmV0dXJuIHF3PXFDKGUpLGJydD1xdy5mb3JtYXQsd3J0PXF3LnBhcnNlLEdDPXF3LnV0Y0Zvcm1hdCxXQz1xdy51dGNQYXJzZSxxd312YXIgcXcsYnJ0LHdydCxHQyxXQyxZNz1NKCgpPT57eHJ0KCk7Vzcoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KX0pO2Z1bmN0aW9uIERrZShlKXtyZXR1cm4gZS50b0lTT1N0cmluZygpfXZhciBTcnQsT2tlLHNWdCxNcnQ9TSgoKT0+e1k3KCk7U3J0PSIlWS0lbS0lZFQlSDolTTolUy4lTFoiO09rZT1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz9Ea2U6R0MoU3J0KSxzVnQ9T2tlfSk7ZnVuY3Rpb24gemtlKGUpe3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiBpc05hTih0KT9udWxsOnR9dmFyIEZrZSxsVnQsY1Z0PU0oKCk9PntNcnQoKTtZNygpO0ZrZT0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP3prZTpXQyhTcnQpLGxWdD1Ga2V9KTt2YXIgdVZ0PU0oKCk9PntZNygpO3hydCgpO01ydCgpO2NWdCgpfSk7ZnVuY3Rpb24gV3coKXtyZXR1cm4geHZ8fChwVnQoQmtlKSx4dj0kQy5ub3coKSskNyl9ZnVuY3Rpb24gQmtlKCl7eHY9MH1mdW5jdGlvbiBidigpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gVHJ0KGUsdCxyKXt2YXIgbj1uZXcgYnY7cmV0dXJuIG4ucmVzdGFydChlLHQsciksbn1mdW5jdGlvbiBDcnQoKXtXdygpLCsrR3c7Zm9yKHZhciBlPWo3LHQ7ZTspKHQ9eHYtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLUd3fWZ1bmN0aW9uIGhWdCgpe3h2PShYNz0kQy5ub3coKSkrJDcsR3c9akM9MDt0cnl7Q3J0KCl9ZmluYWxseXtHdz0wLFZrZSgpLHh2PTB9fWZ1bmN0aW9uIEhrZSgpe3ZhciBlPSRDLm5vdygpLHQ9ZS1YNzt0PmZWdCYmKCQ3LT10LFg3PWUpfWZ1bmN0aW9uIFZrZSgpe2Zvcih2YXIgZSx0PWo3LHIsbj0xLzA7dDspdC5fY2FsbD8obj50Ll90aW1lJiYobj10Ll90aW1lKSxlPXQsdD10Ll9uZXh0KToocj10Ll9uZXh0LHQuX25leHQ9bnVsbCx0PWU/ZS5fbmV4dD1yOmo3PXIpO1hDPWUsRXJ0KG4pfWZ1bmN0aW9uIEVydChlKXtpZighR3cpe2pDJiYoakM9Y2xlYXJUaW1lb3V0KGpDKSk7dmFyIHQ9ZS14djt0PjI0PyhlPDEvMCYmKGpDPXNldFRpbWVvdXQoaFZ0LGUtJEMubm93KCktJDcpKSxZQyYmKFlDPWNsZWFySW50ZXJ2YWwoWUMpKSk6KFlDfHwoWDc9JEMubm93KCksWUM9c2V0SW50ZXJ2YWwoSGtlLGZWdCkpLEd3PTEscFZ0KGhWdCkpfX12YXIgR3csakMsWUMsZlZ0LGo3LFhDLFg3LHh2LCQ3LCRDLHBWdCxLNz1NKCgpPT57R3c9MCxqQz0wLFlDPTAsZlZ0PTFlMyxYNz0wLHh2PTAsJDc9MCwkQz10eXBlb2YgcGVyZm9ybWFuY2U9PSJvYmplY3QiJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxwVnQ9dHlwZW9mIHdpbmRvdz09Im9iamVjdCImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24oZSl7c2V0VGltZW91dChlLDE3KX07YnYucHJvdG90eXBlPVRydC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmJ2LHJlc3RhcnQ6ZnVuY3Rpb24oZSx0LHIpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7cj0ocj09bnVsbD9XdygpOityKSsodD09bnVsbD8wOit0KSwhdGhpcy5fbmV4dCYmWEMhPT10aGlzJiYoWEM/WEMuX25leHQ9dGhpczpqNz10aGlzLFhDPXRoaXMpLHRoaXMuX2NhbGw9ZSx0aGlzLl90aW1lPXIsRXJ0KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLEVydCgpKX19fSk7ZnVuY3Rpb24gZFZ0KGUsdCxyKXt2YXIgbj1uZXcgYnY7cmV0dXJuIHQ9dD09bnVsbD8wOit0LG4ucmVzdGFydChmdW5jdGlvbihpKXtuLnN0b3AoKSxlKGkrdCl9LHQsciksbn12YXIgbVZ0PU0oKCk9PntLNygpfSk7ZnVuY3Rpb24gZ1Z0KGUsdCxyKXt2YXIgbj1uZXcgYnYsaT10O3JldHVybiB0PT1udWxsPyhuLnJlc3RhcnQoZSx0LHIpLG4pOih0PSt0LHI9cj09bnVsbD9XdygpOityLG4ucmVzdGFydChmdW5jdGlvbiBvKGEpe2ErPWksbi5yZXN0YXJ0KG8saSs9dCxyKSxlKGEpfSx0LHIpLG4pfXZhciBfVnQ9TSgoKT0+e0s3KCl9KTt2YXIgeVZ0PU0oKCk9PntLNygpO21WdCgpO19WdCgpfSk7dmFyIFo3LEFydCxQcnQ9TSgoKT0+e1o3PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixBcnQ9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOlo3LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn19KTtmdW5jdGlvbiBsZChlKXt2YXIgdD1lKz0iIixyPXQuaW5kZXhPZigiOiIpO3JldHVybiByPj0wJiYodD1lLnNsaWNlKDAscikpIT09InhtbG5zIiYmKGU9ZS5zbGljZShyKzEpKSxBcnQuaGFzT3duUHJvcGVydHkodCk/e3NwYWNlOkFydFt0XSxsb2NhbDplfTplfXZhciBKNz1NKCgpPT57UHJ0KCl9KTtmdW5jdGlvbiBVa2UoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vd25lckRvY3VtZW50LHI9dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIHI9PT1aNyYmdC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09Wjc/dC5jcmVhdGVFbGVtZW50KGUpOnQuY3JlYXRlRWxlbWVudE5TKHIsZSl9fWZ1bmN0aW9uIHFrZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLnNwYWNlLGUubG9jYWwpfX1mdW5jdGlvbiBRNyhlKXt2YXIgdD1sZChlKTtyZXR1cm4odC5sb2NhbD9xa2U6VWtlKSh0KX12YXIgSXJ0PU0oKCk9PntKNygpO1BydCgpfSk7ZnVuY3Rpb24gR2tlKCl7fWZ1bmN0aW9uIHd2KGUpe3JldHVybiBlPT1udWxsP0drZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IoZSl9fXZhciB0ej1NKCgpPT57fSk7ZnVuY3Rpb24gdlZ0KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT13dihlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgbz10W2ldLGE9by5sZW5ndGgscz1uW2ldPW5ldyBBcnJheShhKSxsLGMsdT0wO3U8YTsrK3UpKGw9b1t1XSkmJihjPWUuY2FsbChsLGwuX19kYXRhX18sdSxvKSkmJigiX19kYXRhX18iaW4gbCYmKGMuX19kYXRhX189bC5fX2RhdGFfXyksc1t1XT1jKTtyZXR1cm4gbmV3IHJvKG4sdGhpcy5fcGFyZW50cyl9dmFyIHhWdD1NKCgpPT57d2YoKTt0eigpfSk7ZnVuY3Rpb24gV2tlKCl7cmV0dXJuW119ZnVuY3Rpb24gS0MoZSl7cmV0dXJuIGU9PW51bGw/V2tlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChlKX19dmFyIExydD1NKCgpPT57fSk7ZnVuY3Rpb24gYlZ0KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1LQyhlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49W10saT1bXSxvPTA7bzxyOysrbylmb3IodmFyIGE9dFtvXSxzPWEubGVuZ3RoLGwsYz0wO2M8czsrK2MpKGw9YVtjXSkmJihuLnB1c2goZS5jYWxsKGwsbC5fX2RhdGFfXyxjLGEpKSxpLnB1c2gobCkpO3JldHVybiBuZXcgcm8obixpKX12YXIgd1Z0PU0oKCk9Pnt3ZigpO0xydCgpfSk7ZnVuY3Rpb24gWkMoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyhlKX19dmFyIGtydD1NKCgpPT57fSk7ZnVuY3Rpb24gU1Z0KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1aQyhlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgbz10W2ldLGE9by5sZW5ndGgscz1uW2ldPVtdLGwsYz0wO2M8YTsrK2MpKGw9b1tjXSkmJmUuY2FsbChsLGwuX19kYXRhX18sYyxvKSYmcy5wdXNoKGwpO3JldHVybiBuZXcgcm8obix0aGlzLl9wYXJlbnRzKX12YXIgTVZ0PU0oKCk9Pnt3ZigpO2tydCgpfSk7ZnVuY3Rpb24gZXooZSl7cmV0dXJuIG5ldyBBcnJheShlLmxlbmd0aCl9dmFyIFJydD1NKCgpPT57fSk7ZnVuY3Rpb24gRVZ0KCl7cmV0dXJuIG5ldyBybyh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChleiksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gSkMoZSx0KXt0aGlzLm93bmVyRG9jdW1lbnQ9ZS5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPWUubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9fZGF0YV9fPXR9dmFyIE5ydD1NKCgpPT57UnJ0KCk7d2YoKTtKQy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkpDLGFwcGVuZENoaWxkOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGUsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKGUsdCl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKGUpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbChlKX19fSk7ZnVuY3Rpb24gVFZ0KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgQ1Z0PU0oKCk9Pnt9KTtmdW5jdGlvbiBZa2UoZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0wLHMsbD10Lmxlbmd0aCxjPW8ubGVuZ3RoO2E8YzsrK2EpKHM9dFthXSk/KHMuX19kYXRhX189b1thXSxuW2FdPXMpOnJbYV09bmV3IEpDKGUsb1thXSk7Zm9yKDthPGw7KythKShzPXRbYV0pJiYoaVthXT1zKX1mdW5jdGlvbiBqa2UoZSx0LHIsbixpLG8sYSl7dmFyIHMsbCxjPXt9LHU9dC5sZW5ndGgsaD1vLmxlbmd0aCxmPW5ldyBBcnJheSh1KSxwO2ZvcihzPTA7czx1OysrcykobD10W3NdKSYmKGZbc109cD1BVnQrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLHQpLHAgaW4gYz9pW3NdPWw6Y1twXT1sKTtmb3Iocz0wO3M8aDsrK3MpcD1BVnQrYS5jYWxsKGUsb1tzXSxzLG8pLChsPWNbcF0pPyhuW3NdPWwsbC5fX2RhdGFfXz1vW3NdLGNbcF09bnVsbCk6cltzXT1uZXcgSkMoZSxvW3NdKTtmb3Iocz0wO3M8dTsrK3MpKGw9dFtzXSkmJmNbZltzXV09PT1sJiYoaVtzXT1sKX1mdW5jdGlvbiBQVnQoZSx0KXtpZighZSlyZXR1cm4gcD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGM9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKFApe3BbKytjXT1QfSkscDt2YXIgcj10P2prZTpZa2Usbj10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzO3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1UVnQoZSkpO2Zvcih2YXIgbz1pLmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPW5ldyBBcnJheShvKSxsPW5ldyBBcnJheShvKSxjPTA7YzxvOysrYyl7dmFyIHU9bltjXSxoPWlbY10sZj1oLmxlbmd0aCxwPWUuY2FsbCh1LHUmJnUuX19kYXRhX18sYyxuKSxkPXAubGVuZ3RoLGc9c1tjXT1uZXcgQXJyYXkoZCksXz1hW2NdPW5ldyBBcnJheShkKSx5PWxbY109bmV3IEFycmF5KGYpO3IodSxoLGcsXyx5LHAsdCk7Zm9yKHZhciB4PTAsYj0wLFMsQzt4PGQ7Kyt4KWlmKFM9Z1t4XSl7Zm9yKHg+PWImJihiPXgrMSk7IShDPV9bYl0pJiYrK2I8ZDspO1MuX25leHQ9Q3x8bnVsbH19cmV0dXJuIGE9bmV3IHJvKGEsbiksYS5fZW50ZXI9cyxhLl9leGl0PWwsYX12YXIgQVZ0LElWdD1NKCgpPT57d2YoKTtOcnQoKTtDVnQoKTtBVnQ9IiQifSk7ZnVuY3Rpb24gTFZ0KCl7cmV0dXJuIG5ldyBybyh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKGV6KSx0aGlzLl9wYXJlbnRzKX12YXIga1Z0PU0oKCk9PntScnQoKTt3ZigpfSk7ZnVuY3Rpb24gUlZ0KGUsdCxyKXt2YXIgbj10aGlzLmVudGVyKCksaT10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIG49dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShuKTpuLmFwcGVuZChlKyIiKSx0IT1udWxsJiYoaT10KGkpKSxyPT1udWxsP28ucmVtb3ZlKCk6cihvKSxuJiZpP24ubWVyZ2UoaSkub3JkZXIoKTppfXZhciBOVnQ9TSgoKT0+e30pO2Z1bmN0aW9uIERWdChlKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9ZS5fZ3JvdXBzLG49dC5sZW5ndGgsaT1yLmxlbmd0aCxvPU1hdGgubWluKG4saSksYT1uZXcgQXJyYXkobikscz0wO3M8bzsrK3MpZm9yKHZhciBsPXRbc10sYz1yW3NdLHU9bC5sZW5ndGgsaD1hW3NdPW5ldyBBcnJheSh1KSxmLHA9MDtwPHU7KytwKShmPWxbcF18fGNbcF0pJiYoaFtwXT1mKTtmb3IoO3M8bjsrK3MpYVtzXT10W3NdO3JldHVybiBuZXcgcm8oYSx0aGlzLl9wYXJlbnRzKX12YXIgT1Z0PU0oKCk9Pnt3ZigpfSk7ZnVuY3Rpb24gelZ0KCl7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PS0xLHI9ZS5sZW5ndGg7Kyt0PHI7KWZvcih2YXIgbj1lW3RdLGk9bi5sZW5ndGgtMSxvPW5baV0sYTstLWk+PTA7KShhPW5baV0pJiYobyYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKV40JiZvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbyksbz1hKTtyZXR1cm4gdGhpc312YXIgRlZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBCVnQoZSl7ZXx8KGU9WGtlKTtmdW5jdGlvbiB0KGgsZil7cmV0dXJuIGgmJmY/ZShoLl9fZGF0YV9fLGYuX19kYXRhX18pOiFoLSFmfWZvcih2YXIgcj10aGlzLl9ncm91cHMsbj1yLmxlbmd0aCxpPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbyl7Zm9yKHZhciBhPXJbb10scz1hLmxlbmd0aCxsPWlbb109bmV3IEFycmF5KHMpLGMsdT0wO3U8czsrK3UpKGM9YVt1XSkmJihsW3VdPWMpO2wuc29ydCh0KX1yZXR1cm4gbmV3IHJvKGksdGhpcy5fcGFyZW50cykub3JkZXIoKX1mdW5jdGlvbiBYa2UoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59dmFyIEhWdD1NKCgpPT57d2YoKX0pO2Z1bmN0aW9uIFZWdCgpe3ZhciBlPWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsZS5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc312YXIgVVZ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBxVnQoKXt2YXIgZT1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHQ9LTE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2VbKyt0XT10aGlzfSksZX12YXIgR1Z0PU0oKCk9Pnt9KTtmdW5jdGlvbiBXVnQoKXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpZm9yKHZhciBuPWVbdF0saT0wLG89bi5sZW5ndGg7aTxvOysraSl7dmFyIGE9bltpXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfXZhciBZVnQ9TSgoKT0+e30pO2Z1bmN0aW9uIGpWdCgpe3ZhciBlPTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeysrZX0pLGV9dmFyIFhWdD1NKCgpPT57fSk7ZnVuY3Rpb24gJFZ0KCl7cmV0dXJuIXRoaXMubm9kZSgpfXZhciBLVnQ9TSgoKT0+e30pO2Z1bmN0aW9uIFpWdChlKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9MCxuPXQubGVuZ3RoO3I8bjsrK3IpZm9yKHZhciBpPXRbcl0sbz0wLGE9aS5sZW5ndGgscztvPGE7KytvKShzPWlbb10pJiZlLmNhbGwocyxzLl9fZGF0YV9fLG8saSk7cmV0dXJuIHRoaXN9dmFyIEpWdD1NKCgpPT57fSk7ZnVuY3Rpb24gJGtlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpfX1mdW5jdGlvbiBLa2UoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpfX1mdW5jdGlvbiBaa2UoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZShlLHQpfX1mdW5jdGlvbiBKa2UoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCx0KX19ZnVuY3Rpb24gUWtlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZShlKTp0aGlzLnNldEF0dHJpYnV0ZShlLHIpfX1mdW5jdGlvbiB0OGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyPT1udWxsP3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCxyKX19ZnVuY3Rpb24gUVZ0KGUsdCl7dmFyIHI9bGQoZSk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgbj10aGlzLm5vZGUoKTtyZXR1cm4gci5sb2NhbD9uLmdldEF0dHJpYnV0ZU5TKHIuc3BhY2Usci5sb2NhbCk6bi5nZXRBdHRyaWJ1dGUocil9cmV0dXJuIHRoaXMuZWFjaCgodD09bnVsbD9yLmxvY2FsP0trZToka2U6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/ci5sb2NhbD90OGU6UWtlOnIubG9jYWw/SmtlOlprZSkocix0KSl9dmFyIHRVdD1NKCgpPT57SjcoKX0pO2Z1bmN0aW9uIHJ6KGUpe3JldHVybiBlLm93bmVyRG9jdW1lbnQmJmUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8ZS5kb2N1bWVudCYmZXx8ZS5kZWZhdWx0Vmlld312YXIgRHJ0PU0oKCk9Pnt9KTtmdW5jdGlvbiBlOGUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKX19ZnVuY3Rpb24gcjhlKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KGUsdCxyKX19ZnVuY3Rpb24gbjhlKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtuPT1udWxsP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShlLG4scil9fWZ1bmN0aW9uIGVVdChlLHQscil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKHQ9PW51bGw/ZThlOnR5cGVvZiB0PT0iZnVuY3Rpb24iP244ZTpyOGUpKGUsdCxyPT1udWxsPyIiOnIpKTpCZyh0aGlzLm5vZGUoKSxlKX1mdW5jdGlvbiBCZyhlLHQpe3JldHVybiBlLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodCl8fHJ6KGUpLmdldENvbXB1dGVkU3R5bGUoZSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfXZhciBPcnQ9TSgoKT0+e0RydCgpfSk7ZnVuY3Rpb24gaThlKGUpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW2VdfX1mdW5jdGlvbiBvOGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW2VdPXR9fWZ1bmN0aW9uIGE4ZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3I9PW51bGw/ZGVsZXRlIHRoaXNbZV06dGhpc1tlXT1yfX1mdW5jdGlvbiByVXQoZSx0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgodD09bnVsbD9pOGU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/YThlOm84ZSkoZSx0KSk6dGhpcy5ub2RlKClbZV19dmFyIG5VdD1NKCgpPT57fSk7ZnVuY3Rpb24gaVV0KGUpe3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiB6cnQoZSl7cmV0dXJuIGUuY2xhc3NMaXN0fHxuZXcgb1V0KGUpfWZ1bmN0aW9uIG9VdChlKXt0aGlzLl9ub2RlPWUsdGhpcy5fbmFtZXM9aVV0KGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gYVV0KGUsdCl7Zm9yKHZhciByPXpydChlKSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KXIuYWRkKHRbbl0pfWZ1bmN0aW9uIHNVdChlLHQpe2Zvcih2YXIgcj16cnQoZSksbj0tMSxpPXQubGVuZ3RoOysrbjxpOylyLnJlbW92ZSh0W25dKX1mdW5jdGlvbiBzOGUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7YVV0KHRoaXMsZSl9fWZ1bmN0aW9uIGw4ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtzVXQodGhpcyxlKX19ZnVuY3Rpb24gYzhlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpP2FVdDpzVXQpKHRoaXMsZSl9fWZ1bmN0aW9uIGxVdChlLHQpe3ZhciByPWlVdChlKyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbj16cnQodGhpcy5ub2RlKCkpLGk9LTEsbz1yLmxlbmd0aDsrK2k8bzspaWYoIW4uY29udGFpbnMocltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHQ9PSJmdW5jdGlvbiI/YzhlOnQ/czhlOmw4ZSkocix0KSl9dmFyIGNVdD1NKCgpPT57b1V0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX25hbWVzLmluZGV4T2YoZSk7dDwwJiYodGhpcy5fbmFtZXMucHVzaChlKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbmFtZXMuaW5kZXhPZihlKTt0Pj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKHQsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YoZSk+PTB9fX0pO2Z1bmN0aW9uIHU4ZSgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gaDhlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9ZX19ZnVuY3Rpb24gZjhlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiB1VXQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKGU9PW51bGw/dThlOih0eXBlb2YgZT09ImZ1bmN0aW9uIj9mOGU6aDhlKShlKSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9dmFyIGhVdD1NKCgpPT57fSk7ZnVuY3Rpb24gcDhlKCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gZDhlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPWV9fWZ1bmN0aW9uIG04ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIGZVdChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZT09bnVsbD9wOGU6KHR5cGVvZiBlPT0iZnVuY3Rpb24iP204ZTpkOGUpKGUpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9dmFyIHBVdD1NKCgpPT57fSk7ZnVuY3Rpb24gZzhlKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIGRVdCgpe3JldHVybiB0aGlzLmVhY2goZzhlKX12YXIgbVV0PU0oKCk9Pnt9KTtmdW5jdGlvbiBfOGUoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBnVXQoKXtyZXR1cm4gdGhpcy5lYWNoKF84ZSl9dmFyIF9VdD1NKCgpPT57fSk7ZnVuY3Rpb24geVV0KGUpe3ZhciB0PXR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6UTcoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQodC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9dmFyIHZVdD1NKCgpPT57SXJ0KCl9KTtmdW5jdGlvbiB5OGUoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB4VXQoZSx0KXt2YXIgcj10eXBlb2YgZT09ImZ1bmN0aW9uIj9lOlE3KGUpLG49dD09bnVsbD95OGU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dDp3dih0KTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoci5hcHBseSh0aGlzLGFyZ3VtZW50cyksbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9dmFyIGJVdD1NKCgpPT57SXJ0KCk7dHooKX0pO2Z1bmN0aW9uIHY4ZSgpe3ZhciBlPXRoaXMucGFyZW50Tm9kZTtlJiZlLnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIHdVdCgpe3JldHVybiB0aGlzLmVhY2godjhlKX12YXIgU1V0PU0oKCk9Pnt9KTtmdW5jdGlvbiB4OGUoKXt2YXIgZT10aGlzLmNsb25lTm9kZSghMSksdD10aGlzLnBhcmVudE5vZGU7cmV0dXJuIHQ/dC5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKTplfWZ1bmN0aW9uIGI4ZSgpe3ZhciBlPXRoaXMuY2xvbmVOb2RlKCEwKSx0PXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gdD90Lmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpOmV9ZnVuY3Rpb24gTVV0KGUpe3JldHVybiB0aGlzLnNlbGVjdChlP2I4ZTp4OGUpfXZhciBFVXQ9TSgoKT0+e30pO2Z1bmN0aW9uIFRVdChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsZSk6dGhpcy5ub2RlKCkuX19kYXRhX199dmFyIENVdD1NKCgpPT57fSk7ZnVuY3Rpb24gdzhlKGUsdCxyKXtyZXR1cm4gZT1JVXQoZSx0LHIpLGZ1bmN0aW9uKG4pe3ZhciBpPW4ucmVsYXRlZFRhcmdldDsoIWl8fGkhPT10aGlzJiYhKGkuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykmOCkpJiZlLmNhbGwodGhpcyxuKX19ZnVuY3Rpb24gSVV0KGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9RnJ0O0ZydD1uO3RyeXtlLmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLHQscil9ZmluYWxseXtGcnQ9aX19fWZ1bmN0aW9uIFM4ZShlKXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHQpe3ZhciByPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihyPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOnJ9fSl9ZnVuY3Rpb24gTThlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX19vbjtpZighIXQpe2Zvcih2YXIgcj0wLG49LTEsaT10Lmxlbmd0aCxvO3I8aTsrK3Ipbz10W3JdLCghZS50eXBlfHxvLnR5cGU9PT1lLnR5cGUpJiZvLm5hbWU9PT1lLm5hbWU/dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8udHlwZSxvLmxpc3RlbmVyLG8uY2FwdHVyZSk6dFsrK25dPW87KytuP3QubGVuZ3RoPW46ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIEU4ZShlLHQscil7dmFyIG49UFV0Lmhhc093blByb3BlcnR5KGUudHlwZSk/dzhlOklVdDtyZXR1cm4gZnVuY3Rpb24oaSxvLGEpe3ZhciBzPXRoaXMuX19vbixsLGM9bih0LG8sYSk7aWYocyl7Zm9yKHZhciB1PTAsaD1zLmxlbmd0aDt1PGg7Kyt1KWlmKChsPXNbdV0pLnR5cGU9PT1lLnR5cGUmJmwubmFtZT09PWUubmFtZSl7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGwudHlwZSxsLmxpc3RlbmVyLGwuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKGwudHlwZSxsLmxpc3RlbmVyPWMsbC5jYXB0dXJlPXIpLGwudmFsdWU9dDtyZXR1cm59fXRoaXMuYWRkRXZlbnRMaXN0ZW5lcihlLnR5cGUsYyxyKSxsPXt0eXBlOmUudHlwZSxuYW1lOmUubmFtZSx2YWx1ZTp0LGxpc3RlbmVyOmMsY2FwdHVyZTpyfSxzP3MucHVzaChsKTp0aGlzLl9fb249W2xdfX1mdW5jdGlvbiBMVXQoZSx0LHIpe3ZhciBuPVM4ZShlKyIiKSxpLG89bi5sZW5ndGgsYTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocyl7Zm9yKHZhciBsPTAsYz1zLmxlbmd0aCx1O2w8YzsrK2wpZm9yKGk9MCx1PXNbbF07aTxvOysraSlpZigoYT1uW2ldKS50eXBlPT09dS50eXBlJiZhLm5hbWU9PT11Lm5hbWUpcmV0dXJuIHUudmFsdWV9cmV0dXJufWZvcihzPXQ/RThlOk04ZSxyPT1udWxsJiYocj0hMSksaT0wO2k8bzsrK2kpdGhpcy5lYWNoKHMobltpXSx0LHIpKTtyZXR1cm4gdGhpc312YXIgUFV0LEZydCxBVXQsa1V0PU0oKCk9PntQVXQ9e30sRnJ0PW51bGw7dHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIiYmKEFVdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIm9ubW91c2VlbnRlciJpbiBBVXR8fChQVXQ9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpfSk7ZnVuY3Rpb24gUlV0KGUsdCxyKXt2YXIgbj1yeihlKSxpPW4uQ3VzdG9tRXZlbnQ7dHlwZW9mIGk9PSJmdW5jdGlvbiI/aT1uZXcgaSh0LHIpOihpPW4uZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iikscj8oaS5pbml0RXZlbnQodCxyLmJ1YmJsZXMsci5jYW5jZWxhYmxlKSxpLmRldGFpbD1yLmRldGFpbCk6aS5pbml0RXZlbnQodCwhMSwhMSkpLGUuZGlzcGF0Y2hFdmVudChpKX1mdW5jdGlvbiBUOGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUlV0KHRoaXMsZSx0KX19ZnVuY3Rpb24gQzhlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFJVdCh0aGlzLGUsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBOVXQoZSx0KXtyZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9DOGU6VDhlKShlLHQpKX12YXIgRFV0PU0oKCk9PntEcnQoKX0pO2Z1bmN0aW9uIHJvKGUsdCl7dGhpcy5fZ3JvdXBzPWUsdGhpcy5fcGFyZW50cz10fWZ1bmN0aW9uIE9VdCgpe3JldHVybiBuZXcgcm8oW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxBOGUpfXZhciBBOGUsY2Qsd2Y9TSgoKT0+e3hWdCgpO3dWdCgpO01WdCgpO0lWdCgpO05ydCgpO2tWdCgpO05WdCgpO09WdCgpO0ZWdCgpO0hWdCgpO1VWdCgpO0dWdCgpO1lWdCgpO1hWdCgpO0tWdCgpO0pWdCgpO3RVdCgpO09ydCgpO25VdCgpO2NVdCgpO2hVdCgpO3BVdCgpO21VdCgpO19VdCgpO3ZVdCgpO2JVdCgpO1NVdCgpO0VVdCgpO0NVdCgpO2tVdCgpO0RVdCgpO0E4ZT1bbnVsbF07cm8ucHJvdG90eXBlPU9VdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnJvLHNlbGVjdDp2VnQsc2VsZWN0QWxsOmJWdCxmaWx0ZXI6U1Z0LGRhdGE6UFZ0LGVudGVyOkVWdCxleGl0OkxWdCxqb2luOlJWdCxtZXJnZTpEVnQsb3JkZXI6elZ0LHNvcnQ6QlZ0LGNhbGw6VlZ0LG5vZGVzOnFWdCxub2RlOldWdCxzaXplOmpWdCxlbXB0eTokVnQsZWFjaDpaVnQsYXR0cjpRVnQsc3R5bGU6ZVV0LHByb3BlcnR5OnJVdCxjbGFzc2VkOmxVdCx0ZXh0OnVVdCxodG1sOmZVdCxyYWlzZTpkVXQsbG93ZXI6Z1V0LGFwcGVuZDp5VXQsaW5zZXJ0OnhVdCxyZW1vdmU6d1V0LGNsb25lOk1VdCxkYXR1bTpUVXQsb246TFV0LGRpc3BhdGNoOk5VdH07Y2Q9T1V0fSk7dmFyIFNmPU0oKCk9PntrcnQoKTtKNygpO3dmKCk7dHooKTtMcnQoKTtPcnQoKX0pO2Z1bmN0aW9uIEZVdCgpe2Zvcih2YXIgZT0wLHQ9YXJndW1lbnRzLmxlbmd0aCxyPXt9LG47ZTx0OysrZSl7aWYoIShuPWFyZ3VtZW50c1tlXSsiIil8fG4gaW4gcnx8L1tccy5dLy50ZXN0KG4pKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK24pO3Jbbl09W119cmV0dXJuIG5ldyBueihyKX1mdW5jdGlvbiBueihlKXt0aGlzLl89ZX1mdW5jdGlvbiBJOGUoZSx0KXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHIpe3ZhciBuPSIiLGk9ci5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49ci5zbGljZShpKzEpLHI9ci5zbGljZSgwLGkpKSxyJiYhdC5oYXNPd25Qcm9wZXJ0eShyKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIityKTtyZXR1cm57dHlwZTpyLG5hbWU6bn19KX1mdW5jdGlvbiBMOGUoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLGk7cjxuOysrcilpZigoaT1lW3JdKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZX1mdW5jdGlvbiB6VXQoZSx0LHIpe2Zvcih2YXIgbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilpZihlW25dLm5hbWU9PT10KXtlW25dPVA4ZSxlPWUuc2xpY2UoMCxuKS5jb25jYXQoZS5zbGljZShuKzEpKTticmVha31yZXR1cm4gciE9bnVsbCYmZS5wdXNoKHtuYW1lOnQsdmFsdWU6cn0pLGV9dmFyIFA4ZSxCcnQsQlV0PU0oKCk9PntQOGU9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07bnoucHJvdG90eXBlPUZVdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm56LG9uOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fLG49SThlKGUrIiIsciksaSxvPS0xLGE9bi5sZW5ndGg7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IoOysrbzxhOylpZigoaT0oZT1uW29dKS50eXBlKSYmKGk9TDhlKHJbaV0sZS5uYW1lKSkpcmV0dXJuIGk7cmV0dXJufWlmKHQhPW51bGwmJnR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIit0KTtmb3IoOysrbzxhOylpZihpPShlPW5bb10pLnR5cGUpcltpXT16VXQocltpXSxlLm5hbWUsdCk7ZWxzZSBpZih0PT1udWxsKWZvcihpIGluIHIpcltpXT16VXQocltpXSxlLm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgZT17fSx0PXRoaXMuXztmb3IodmFyIHIgaW4gdCllW3JdPXRbcl0uc2xpY2UoKTtyZXR1cm4gbmV3IG56KGUpfSxjYWxsOmZ1bmN0aW9uKGUsdCl7aWYoKGk9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgcj1uZXcgQXJyYXkoaSksbj0wLGksbztuPGk7KytuKXJbbl09YXJndW1lbnRzW24rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIitlKTtmb3Iobz10aGlzLl9bZV0sbj0wLGk9by5sZW5ndGg7bjxpOysrbilvW25dLnZhbHVlLmFwcGx5KHQscil9LGFwcGx5OmZ1bmN0aW9uKGUsdCxyKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2UpO2Zvcih2YXIgbj10aGlzLl9bZV0saT0wLG89bi5sZW5ndGg7aTxvOysraSluW2ldLnZhbHVlLmFwcGx5KHQscil9fTtCcnQ9RlV0fSk7dmFyIEhVdD1NKCgpPT57QlV0KCl9KTtmdW5jdGlvbiBqdygpe3JldHVybiBTdnx8KHFVdChrOGUpLFN2PXJBLm5vdygpK2F6KX1mdW5jdGlvbiBrOGUoKXtTdj0wfWZ1bmN0aW9uIG5BKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBzeihlLHQscil7dmFyIG49bmV3IG5BO3JldHVybiBuLnJlc3RhcnQoZSx0LHIpLG59ZnVuY3Rpb24gR1V0KCl7ancoKSwrK1l3O2Zvcih2YXIgZT1peix0O2U7KSh0PVN2LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1Zd31mdW5jdGlvbiBWVXQoKXtTdj0ob3o9ckEubm93KCkpK2F6LFl3PXRBPTA7dHJ5e0dVdCgpfWZpbmFsbHl7WXc9MCxOOGUoKSxTdj0wfX1mdW5jdGlvbiBSOGUoKXt2YXIgZT1yQS5ub3coKSx0PWUtb3o7dD5VVXQmJihhei09dCxvej1lKX1mdW5jdGlvbiBOOGUoKXtmb3IodmFyIGUsdD1peixyLG49MS8wO3Q7KXQuX2NhbGw/KG4+dC5fdGltZSYmKG49dC5fdGltZSksZT10LHQ9dC5fbmV4dCk6KHI9dC5fbmV4dCx0Ll9uZXh0PW51bGwsdD1lP2UuX25leHQ9cjppej1yKTtlQT1lLEhydChuKX1mdW5jdGlvbiBIcnQoZSl7aWYoIVl3KXt0QSYmKHRBPWNsZWFyVGltZW91dCh0QSkpO3ZhciB0PWUtU3Y7dD4yND8oZTwxLzAmJih0QT1zZXRUaW1lb3V0KFZVdCxlLXJBLm5vdygpLWF6KSksUUMmJihRQz1jbGVhckludGVydmFsKFFDKSkpOihRQ3x8KG96PXJBLm5vdygpLFFDPXNldEludGVydmFsKFI4ZSxVVXQpKSxZdz0xLHFVdChWVXQpKX19dmFyIFl3LHRBLFFDLFVVdCxpeixlQSxveixTdixheixyQSxxVXQsVnJ0PU0oKCk9PntZdz0wLHRBPTAsUUM9MCxVVXQ9MWUzLG96PTAsU3Y9MCxhej0wLHJBPXR5cGVvZiBwZXJmb3JtYW5jZT09Im9iamVjdCImJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLHFVdD10eXBlb2Ygd2luZG93PT0ib2JqZWN0IiYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KGUsMTcpfTtuQS5wcm90b3R5cGU9c3oucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpuQSxyZXN0YXJ0OmZ1bmN0aW9uKGUsdCxyKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO3I9KHI9PW51bGw/ancoKTorcikrKHQ9PW51bGw/MDordCksIXRoaXMuX25leHQmJmVBIT09dGhpcyYmKGVBP2VBLl9uZXh0PXRoaXM6aXo9dGhpcyxlQT10aGlzKSx0aGlzLl9jYWxsPWUsdGhpcy5fdGltZT1yLEhydCgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxIcnQoKSl9fX0pO2Z1bmN0aW9uIGx6KGUsdCxyKXt2YXIgbj1uZXcgbkE7cmV0dXJuIHQ9dD09bnVsbD8wOit0LG4ucmVzdGFydChmdW5jdGlvbihpKXtuLnN0b3AoKSxlKGkrdCl9LHQsciksbn12YXIgV1V0PU0oKCk9PntWcnQoKX0pO3ZhciBVcnQ9TSgoKT0+e1ZydCgpO1dVdCgpfSk7ZnVuY3Rpb24gSGcoZSx0LHIsbixpLG8pe3ZhciBhPWUuX190cmFuc2l0aW9uO2lmKCFhKWUuX190cmFuc2l0aW9uPXt9O2Vsc2UgaWYociBpbiBhKXJldHVybjt6OGUoZSxyLHtuYW1lOnQsaW5kZXg6bixncm91cDppLG9uOkQ4ZSx0d2VlbjpPOGUsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6alV0fSl9ZnVuY3Rpb24gYUEoZSx0KXt2YXIgcj1ubyhlLHQpO2lmKHIuc3RhdGU+alV0KXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIHJ9ZnVuY3Rpb24gTnUoZSx0KXt2YXIgcj1ubyhlLHQpO2lmKHIuc3RhdGU+b0EpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzdGFydGVkIik7cmV0dXJuIHJ9ZnVuY3Rpb24gbm8oZSx0KXt2YXIgcj1lLl9fdHJhbnNpdGlvbjtpZighcnx8IShyPXJbdF0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gcn1mdW5jdGlvbiB6OGUoZSx0LHIpe3ZhciBuPWUuX190cmFuc2l0aW9uLGk7blt0XT1yLHIudGltZXI9c3oobywwLHIudGltZSk7ZnVuY3Rpb24gbyhjKXtyLnN0YXRlPWN6LHIudGltZXIucmVzdGFydChhLHIuZGVsYXksci50aW1lKSxyLmRlbGF5PD1jJiZhKGMtci5kZWxheSl9ZnVuY3Rpb24gYShjKXt2YXIgdSxoLGYscDtpZihyLnN0YXRlIT09Y3opcmV0dXJuIGwoKTtmb3IodSBpbiBuKWlmKHA9blt1XSxwLm5hbWU9PT1yLm5hbWUpe2lmKHAuc3RhdGU9PT1xcnQpcmV0dXJuIGx6KGEpO3Auc3RhdGU9PT1ZVXQ/KHAuc3RhdGU9aUEscC50aW1lci5zdG9wKCkscC5vbi5jYWxsKCJpbnRlcnJ1cHQiLGUsZS5fX2RhdGFfXyxwLmluZGV4LHAuZ3JvdXApLGRlbGV0ZSBuW3VdKTordTx0JiYocC5zdGF0ZT1pQSxwLnRpbWVyLnN0b3AoKSxkZWxldGUgblt1XSl9aWYobHooZnVuY3Rpb24oKXtyLnN0YXRlPT09cXJ0JiYoci5zdGF0ZT1ZVXQsci50aW1lci5yZXN0YXJ0KHMsci5kZWxheSxyLnRpbWUpLHMoYykpfSksci5zdGF0ZT1vQSxyLm9uLmNhbGwoInN0YXJ0IixlLGUuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSxyLnN0YXRlPT09b0Epe2ZvcihyLnN0YXRlPXFydCxpPW5ldyBBcnJheShmPXIudHdlZW4ubGVuZ3RoKSx1PTAsaD0tMTt1PGY7Kyt1KShwPXIudHdlZW5bdV0udmFsdWUuY2FsbChlLGUuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSkmJihpWysraF09cCk7aS5sZW5ndGg9aCsxfX1mdW5jdGlvbiBzKGMpe2Zvcih2YXIgdT1jPHIuZHVyYXRpb24/ci5lYXNlLmNhbGwobnVsbCxjL3IuZHVyYXRpb24pOihyLnRpbWVyLnJlc3RhcnQobCksci5zdGF0ZT11eiwxKSxoPS0xLGY9aS5sZW5ndGg7KytoPGY7KWlbaF0uY2FsbChudWxsLHUpO3Iuc3RhdGU9PT11eiYmKHIub24uY2FsbCgiZW5kIixlLGUuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSxsKCkpfWZ1bmN0aW9uIGwoKXtyLnN0YXRlPWlBLHIudGltZXIuc3RvcCgpLGRlbGV0ZSBuW3RdO2Zvcih2YXIgYyBpbiBuKXJldHVybjtkZWxldGUgZS5fX3RyYW5zaXRpb259fXZhciBEOGUsTzhlLGpVdCxjeixvQSxxcnQsWVV0LHV6LGlBLFRjPU0oKCk9PntIVXQoKTtVcnQoKTtEOGU9QnJ0KCJzdGFydCIsImVuZCIsImludGVycnVwdCIpLE84ZT1bXSxqVXQ9MCxjej0xLG9BPTIscXJ0PTMsWVV0PTQsdXo9NSxpQT02fSk7ZnVuY3Rpb24gaHooZSx0KXt2YXIgcj1lLl9fdHJhbnNpdGlvbixuLGksbz0hMCxhO2lmKCEhcil7dD10PT1udWxsP251bGw6dCsiIjtmb3IoYSBpbiByKXtpZigobj1yW2FdKS5uYW1lIT09dCl7bz0hMTtjb250aW51ZX1pPW4uc3RhdGU+b0EmJm4uc3RhdGU8dXosbi5zdGF0ZT1pQSxuLnRpbWVyLnN0b3AoKSxpJiZuLm9uLmNhbGwoImludGVycnVwdCIsZSxlLl9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIHJbYV19byYmZGVsZXRlIGUuX190cmFuc2l0aW9ufX12YXIgR3J0PU0oKCk9PntUYygpfSk7ZnVuY3Rpb24gWFV0KGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtoeih0aGlzLGUpfSl9dmFyICRVdD1NKCgpPT57R3J0KCl9KTtmdW5jdGlvbiBmeihlLHQscil7ZS5wcm90b3R5cGU9dC5wcm90b3R5cGU9cixyLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gV3J0KGUsdCl7dmFyIHI9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSk7Zm9yKHZhciBuIGluIHQpcltuXT10W25dO3JldHVybiByfXZhciBLVXQ9TSgoKT0+e30pO2Z1bmN0aW9uIGNBKCl7fWZ1bmN0aW9uIEpVdCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFc4ZSgpe3JldHVybiBpcXQodGhpcykuZm9ybWF0SHNsKCl9ZnVuY3Rpb24gUVV0KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gVmcoZSl7dmFyIHQscjtyZXR1cm4gZT0oZSsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKHQ9RjhlLmV4ZWMoZSkpPyhyPXRbMV0ubGVuZ3RoLHQ9cGFyc2VJbnQodFsxXSwxNikscj09PTY/dHF0KHQpOnI9PT0zP25ldyBkbCh0Pj44JjE1fHQ+PjQmMjQwLHQ+PjQmMTV8dCYyNDAsKHQmMTUpPDw0fHQmMTUsMSk6cj09PTg/cHoodD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwodCYyNTUpLzI1NSk6cj09PTQ/cHoodD4+MTImMTV8dD4+OCYyNDAsdD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCgodCYxNSk8PDR8dCYxNSkvMjU1KTpudWxsKToodD1COGUuZXhlYyhlKSk/bmV3IGRsKHRbMV0sdFsyXSx0WzNdLDEpOih0PUg4ZS5leGVjKGUpKT9uZXcgZGwodFsxXSoyNTUvMTAwLHRbMl0qMjU1LzEwMCx0WzNdKjI1NS8xMDAsMSk6KHQ9VjhlLmV4ZWMoZSkpP3B6KHRbMV0sdFsyXSx0WzNdLHRbNF0pOih0PVU4ZS5leGVjKGUpKT9weih0WzFdKjI1NS8xMDAsdFsyXSoyNTUvMTAwLHRbM10qMjU1LzEwMCx0WzRdKToodD1xOGUuZXhlYyhlKSk/bnF0KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsMSk6KHQ9RzhlLmV4ZWMoZSkpP25xdCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLHRbNF0pOlpVdC5oYXNPd25Qcm9wZXJ0eShlKT90cXQoWlV0W2VdKTplPT09InRyYW5zcGFyZW50Ij9uZXcgZGwoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiB0cXQoZSl7cmV0dXJuIG5ldyBkbChlPj4xNiYyNTUsZT4+OCYyNTUsZSYyNTUsMSl9ZnVuY3Rpb24gcHooZSx0LHIsbil7cmV0dXJuIG48PTAmJihlPXQ9cj1OYU4pLG5ldyBkbChlLHQscixuKX1mdW5jdGlvbiBZOGUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBjQXx8KGU9VmcoZSkpLGU/KGU9ZS5yZ2IoKSxuZXcgZGwoZS5yLGUuZyxlLmIsZS5vcGFjaXR5KSk6bmV3IGRsfWZ1bmN0aW9uICR3KGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9ZOGUoZSk6bmV3IGRsKGUsdCxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBkbChlLHQscixuKXt0aGlzLnI9K2UsdGhpcy5nPSt0LHRoaXMuYj0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gZXF0KCl7cmV0dXJuIiMiK1lydCh0aGlzLnIpK1lydCh0aGlzLmcpK1lydCh0aGlzLmIpfWZ1bmN0aW9uIHJxdCgpe3ZhciBlPXRoaXMub3BhY2l0eTtyZXR1cm4gZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSksKGU9PT0xPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKGU9PT0xPyIpIjoiLCAiK2UrIikiKX1mdW5jdGlvbiBZcnQoZSl7cmV0dXJuIGU9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChlKXx8MCkpLChlPDE2PyIwIjoiIikrZS50b1N0cmluZygxNil9ZnVuY3Rpb24gbnF0KGUsdCxyLG4pe3JldHVybiBuPD0wP2U9dD1yPU5hTjpyPD0wfHxyPj0xP2U9dD1OYU46dDw9MCYmKGU9TmFOKSxuZXcgTWYoZSx0LHIsbil9ZnVuY3Rpb24gaXF0KGUpe2lmKGUgaW5zdGFuY2VvZiBNZilyZXR1cm4gbmV3IE1mKGUuaCxlLnMsZS5sLGUub3BhY2l0eSk7aWYoZSBpbnN0YW5jZW9mIGNBfHwoZT1WZyhlKSksIWUpcmV0dXJuIG5ldyBNZjtpZihlIGluc3RhbmNlb2YgTWYpcmV0dXJuIGU7ZT1lLnJnYigpO3ZhciB0PWUuci8yNTUscj1lLmcvMjU1LG49ZS5iLzI1NSxpPU1hdGgubWluKHQscixuKSxvPU1hdGgubWF4KHQscixuKSxhPU5hTixzPW8taSxsPShvK2kpLzI7cmV0dXJuIHM/KHQ9PT1vP2E9KHItbikvcysocjxuKSo2OnI9PT1vP2E9KG4tdCkvcysyOmE9KHQtcikvcys0LHMvPWw8LjU/bytpOjItby1pLGEqPTYwKTpzPWw+MCYmbDwxPzA6YSxuZXcgTWYoYSxzLGwsZS5vcGFjaXR5KX1mdW5jdGlvbiBvcXQoZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP2lxdChlKTpuZXcgTWYoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIE1mKGUsdCxyLG4pe3RoaXMuaD0rZSx0aGlzLnM9K3QsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn1mdW5jdGlvbiBqcnQoZSx0LHIpe3JldHVybihlPDYwP3QrKHItdCkqZS82MDplPDE4MD9yOmU8MjQwP3QrKHItdCkqKDI0MC1lKS82MDp0KSoyNTV9dmFyIHNBLGR6LFh3LGxBLEVmLEY4ZSxCOGUsSDhlLFY4ZSxVOGUscThlLEc4ZSxaVXQsYXF0PU0oKCk9PntLVXQoKTtzQT0uNyxkej0xL3NBLFh3PSJcXHMqKFsrLV0/XFxkKylcXHMqIixsQT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixFZj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsRjhlPS9eIyhbMC05YS1mXXszLDh9KSQvLEI4ZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbWHcsWHcsWHddKyJcXCkkIiksSDhlPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tFZixFZixFZl0rIlxcKSQiKSxWOGU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tYdyxYdyxYdyxsQV0rIlxcKSQiKSxVOGU9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tFZixFZixFZixsQV0rIlxcKSQiKSxxOGU9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW2xBLEVmLEVmXSsiXFwpJCIpLEc4ZT1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW2xBLEVmLEVmLGxBXSsiXFwpJCIpLFpVdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmeihjQSxWZyx7Y29weTpmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLGUpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpKVXQsZm9ybWF0SGV4OkpVdCxmb3JtYXRIc2w6VzhlLGZvcm1hdFJnYjpRVXQsdG9TdHJpbmc6UVV0fSk7ZnooZGwsJHcsV3J0KGNBLHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP2R6Ok1hdGgucG93KGR6LGUpLG5ldyBkbCh0aGlzLnIqZSx0aGlzLmcqZSx0aGlzLmIqZSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9zQTpNYXRoLnBvdyhzQSxlKSxuZXcgZGwodGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDplcXQsZm9ybWF0SGV4OmVxdCxmb3JtYXRSZ2I6cnF0LHRvU3RyaW5nOnJxdH0pKTtmeihNZixvcXQsV3J0KGNBLHticmlnaHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP2R6Ok1hdGgucG93KGR6LGUpLG5ldyBNZih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT1lPT1udWxsP3NBOk1hdGgucG93KHNBLGUpLG5ldyBNZih0aGlzLmgsdGhpcy5zLHRoaXMubCplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaCUzNjArKHRoaXMuaDwwKSozNjAsdD1pc05hTihlKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKnQsaT0yKnItbjtyZXR1cm4gbmV3IGRsKGpydChlPj0yNDA/ZS0yNDA6ZSsxMjAsaSxuKSxqcnQoZSxpLG4pLGpydChlPDEyMD9lKzI0MDplLTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuIGU9aXNOYU4oZSk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLChlPT09MT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisodGhpcy5zfHwwKSoxMDArIiUsICIrKHRoaXMubHx8MCkqMTAwKyIlIisoZT09PTE/IikiOiIsICIrZSsiKSIpfX0pKX0pO3ZhciBYcnQ9TSgoKT0+e2FxdCgpfSk7ZnVuY3Rpb24gJHJ0KGUsdCxyLG4saSl7dmFyIG89ZSplLGE9byplO3JldHVybigoMS0zKmUrMypvLWEpKnQrKDQtNipvKzMqYSkqcisoMSszKmUrMypvLTMqYSkqbithKmkpLzZ9ZnVuY3Rpb24gc3F0KGUpe3ZhciB0PWUubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXI8PTA/cj0wOnI+PTE/KHI9MSx0LTEpOk1hdGguZmxvb3Iocip0KSxpPWVbbl0sbz1lW24rMV0sYT1uPjA/ZVtuLTFdOjIqaS1vLHM9bjx0LTE/ZVtuKzJdOjIqby1pO3JldHVybiAkcnQoKHItbi90KSp0LGEsaSxvLHMpfX12YXIgS3J0PU0oKCk9Pnt9KTtmdW5jdGlvbiBscXQoZSl7dmFyIHQ9ZS5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPU1hdGguZmxvb3IoKChyJT0xKTwwPysrcjpyKSp0KSxpPWVbKG4rdC0xKSV0XSxvPWVbbiV0XSxhPWVbKG4rMSkldF0scz1lWyhuKzIpJXRdO3JldHVybiAkcnQoKHItbi90KSp0LGksbyxhLHMpfX12YXIgY3F0PU0oKCk9PntLcnQoKX0pO2Z1bmN0aW9uIFpydChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIHVxdD1NKCgpPT57fSk7ZnVuY3Rpb24gajhlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlK3IqdH19ZnVuY3Rpb24gWDhlKGUsdCxyKXtyZXR1cm4gZT1NYXRoLnBvdyhlLHIpLHQ9TWF0aC5wb3codCxyKS1lLHI9MS9yLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnBvdyhlK24qdCxyKX19ZnVuY3Rpb24gaHF0KGUpe3JldHVybihlPStlKT09MT9tejpmdW5jdGlvbih0LHIpe3JldHVybiByLXQ/WDhlKHQscixlKTpacnQoaXNOYU4odCk/cjp0KX19ZnVuY3Rpb24gbXooZSx0KXt2YXIgcj10LWU7cmV0dXJuIHI/ajhlKGUscik6WnJ0KGlzTmFOKGUpP3Q6ZSl9dmFyIGZxdD1NKCgpPT57dXF0KCl9KTtmdW5jdGlvbiBwcXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9bmV3IEFycmF5KHIpLG89bmV3IEFycmF5KHIpLGEscztmb3IoYT0wO2E8cjsrK2Epcz0kdyh0W2FdKSxuW2FdPXMucnx8MCxpW2FdPXMuZ3x8MCxvW2FdPXMuYnx8MDtyZXR1cm4gbj1lKG4pLGk9ZShpKSxvPWUobykscy5vcGFjaXR5PTEsZnVuY3Rpb24obCl7cmV0dXJuIHMucj1uKGwpLHMuZz1pKGwpLHMuYj1vKGwpLHMrIiJ9fX12YXIgZ3osJDhlLEs4ZSxkcXQ9TSgoKT0+e1hydCgpO0tydCgpO2NxdCgpO2ZxdCgpO2d6PWZ1bmN0aW9uIGUodCl7dmFyIHI9aHF0KHQpO2Z1bmN0aW9uIG4oaSxvKXt2YXIgYT1yKChpPSR3KGkpKS5yLChvPSR3KG8pKS5yKSxzPXIoaS5nLG8uZyksbD1yKGkuYixvLmIpLGM9bXooaS5vcGFjaXR5LG8ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBpLnI9YSh1KSxpLmc9cyh1KSxpLmI9bCh1KSxpLm9wYWNpdHk9Yyh1KSxpKyIifX1yZXR1cm4gbi5nYW1tYT1lLG59KDEpOyQ4ZT1wcXQoc3F0KSxLOGU9cHF0KGxxdCl9KTtmdW5jdGlvbiBDYyhlLHQpe3JldHVybiBlPStlLHQ9K3QsZnVuY3Rpb24ocil7cmV0dXJuIGUqKDEtcikrdCpyfX12YXIgX3o9TSgoKT0+e30pO2Z1bmN0aW9uIFo4ZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19ZnVuY3Rpb24gSjhlKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZSh0KSsiIn19ZnVuY3Rpb24gdG50KGUsdCl7dmFyIHI9UXJ0Lmxhc3RJbmRleD1KcnQubGFzdEluZGV4PTAsbixpLG8sYT0tMSxzPVtdLGw9W107Zm9yKGU9ZSsiIix0PXQrIiI7KG49UXJ0LmV4ZWMoZSkpJiYoaT1KcnQuZXhlYyh0KSk7KShvPWkuaW5kZXgpPnImJihvPXQuc2xpY2UocixvKSxzW2FdP3NbYV0rPW86c1srK2FdPW8pLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OkNjKG4saSl9KSkscj1KcnQubGFzdEluZGV4O3JldHVybiByPHQubGVuZ3RoJiYobz10LnNsaWNlKHIpLHNbYV0/c1thXSs9bzpzWysrYV09bykscy5sZW5ndGg8Mj9sWzBdP0o4ZShsWzBdLngpOlo4ZSh0KToodD1sLmxlbmd0aCxmdW5jdGlvbihjKXtmb3IodmFyIHU9MCxoO3U8dDsrK3Upc1soaD1sW3VdKS5pXT1oLngoYyk7cmV0dXJuIHMuam9pbigiIil9KX12YXIgUXJ0LEpydCxtcXQ9TSgoKT0+e196KCk7UXJ0PS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxKcnQ9bmV3IFJlZ0V4cChRcnQuc291cmNlLCJnIil9KTtmdW5jdGlvbiBlbnQoZSx0LHIsbixpLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQoZSplK3QqdCkpJiYoZS89YSx0Lz1hKSwobD1lKnIrdCpuKSYmKHItPWUqbCxuLT10KmwpLChzPU1hdGguc3FydChyKnIrbipuKSkmJihyLz1zLG4vPXMsbC89cyksZSpuPHQqciYmKGU9LWUsdD0tdCxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKHQsZSkqZ3F0LHNrZXdYOk1hdGguYXRhbihsKSpncXQsc2NhbGVYOmEsc2NhbGVZOnN9fXZhciBncXQseXosX3F0PU0oKCk9PntncXQ9MTgwL01hdGguUEkseXo9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX19KTtmdW5jdGlvbiB2cXQoZSl7cmV0dXJuIGU9PT0ibm9uZSI/eXo6KHVBfHwodUE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIikscm50PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx5cXQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLHVBLnN0eWxlLnRyYW5zZm9ybT1lLGU9eXF0LmdldENvbXB1dGVkU3R5bGUocm50LmFwcGVuZENoaWxkKHVBKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxybnQucmVtb3ZlQ2hpbGQodUEpLGU9ZS5zbGljZSg3LC0xKS5zcGxpdCgiLCIpLGVudCgrZVswXSwrZVsxXSwrZVsyXSwrZVszXSwrZVs0XSwrZVs1XSkpfWZ1bmN0aW9uIHhxdChlKXtyZXR1cm4gZT09bnVsbD95ejoodnp8fCh2ej1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx2ei5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsZSksKGU9dnoudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/KGU9ZS5tYXRyaXgsZW50KGUuYSxlLmIsZS5jLGUuZCxlLmUsZS5mKSk6eXopfXZhciB1QSxybnQseXF0LHZ6LGJxdD1NKCgpPT57X3F0KCl9KTtmdW5jdGlvbiB3cXQoZSx0LHIsbil7ZnVuY3Rpb24gaShjKXtyZXR1cm4gYy5sZW5ndGg/Yy5wb3AoKSsiICI6IiJ9ZnVuY3Rpb24gbyhjLHUsaCxmLHAsZCl7aWYoYyE9PWh8fHUhPT1mKXt2YXIgZz1wLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsdCxudWxsLHIpO2QucHVzaCh7aTpnLTQseDpDYyhjLGgpfSx7aTpnLTIseDpDYyh1LGYpfSl9ZWxzZShofHxmKSYmcC5wdXNoKCJ0cmFuc2xhdGUoIitoK3QrZityKX1mdW5jdGlvbiBhKGMsdSxoLGYpe2MhPT11PyhjLXU+MTgwP3UrPTM2MDp1LWM+MTgwJiYoYys9MzYwKSxmLnB1c2goe2k6aC5wdXNoKGkoaCkrInJvdGF0ZSgiLG51bGwsbiktMix4OkNjKGMsdSl9KSk6dSYmaC5wdXNoKGkoaCkrInJvdGF0ZSgiK3Urbil9ZnVuY3Rpb24gcyhjLHUsaCxmKXtjIT09dT9mLnB1c2goe2k6aC5wdXNoKGkoaCkrInNrZXdYKCIsbnVsbCxuKS0yLHg6Q2MoYyx1KX0pOnUmJmgucHVzaChpKGgpKyJza2V3WCgiK3Urbil9ZnVuY3Rpb24gbChjLHUsaCxmLHAsZCl7aWYoYyE9PWh8fHUhPT1mKXt2YXIgZz1wLnB1c2goaShwKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7ZC5wdXNoKHtpOmctNCx4OkNjKGMsaCl9LHtpOmctMix4OkNjKHUsZil9KX1lbHNlKGghPT0xfHxmIT09MSkmJnAucHVzaChpKHApKyJzY2FsZSgiK2grIiwiK2YrIikiKX1yZXR1cm4gZnVuY3Rpb24oYyx1KXt2YXIgaD1bXSxmPVtdO3JldHVybiBjPWUoYyksdT1lKHUpLG8oYy50cmFuc2xhdGVYLGMudHJhbnNsYXRlWSx1LnRyYW5zbGF0ZVgsdS50cmFuc2xhdGVZLGgsZiksYShjLnJvdGF0ZSx1LnJvdGF0ZSxoLGYpLHMoYy5za2V3WCx1LnNrZXdYLGgsZiksbChjLnNjYWxlWCxjLnNjYWxlWSx1LnNjYWxlWCx1LnNjYWxlWSxoLGYpLGM9dT1udWxsLGZ1bmN0aW9uKHApe2Zvcih2YXIgZD0tMSxnPWYubGVuZ3RoLF87KytkPGc7KWhbKF89ZltkXSkuaV09Xy54KHApO3JldHVybiBoLmpvaW4oIiIpfX19dmFyIG5udCxpbnQsU3F0PU0oKCk9PntfeigpO2JxdCgpO25udD13cXQodnF0LCJweCwgIiwicHgpIiwiZGVnKSIpLGludD13cXQoeHF0LCIsICIsIikiLCIpIil9KTt2YXIgeHo9TSgoKT0+e196KCk7bXF0KCk7U3F0KCk7ZHF0KCl9KTtmdW5jdGlvbiBROGUoZSx0KXt2YXIgcixuO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPU51KHRoaXMsZSksbz1pLnR3ZWVuO2lmKG8hPT1yKXtuPXI9bztmb3IodmFyIGE9MCxzPW4ubGVuZ3RoO2E8czsrK2EpaWYoblthXS5uYW1lPT09dCl7bj1uLnNsaWNlKCksbi5zcGxpY2UoYSwxKTticmVha319aS50d2Vlbj1ufX1mdW5jdGlvbiB0UmUoZSx0LHIpe3ZhciBuLGk7aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPU51KHRoaXMsZSksYT1vLnR3ZWVuO2lmKGEhPT1uKXtpPShuPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOnQsdmFsdWU6cn0sbD0wLGM9aS5sZW5ndGg7bDxjOysrbClpZihpW2xdLm5hbWU9PT10KXtpW2xdPXM7YnJlYWt9bD09PWMmJmkucHVzaChzKX1vLnR3ZWVuPWl9fWZ1bmN0aW9uIE1xdChlLHQpe3ZhciByPXRoaXMuX2lkO2lmKGUrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBuPW5vKHRoaXMubm9kZSgpLHIpLnR3ZWVuLGk9MCxvPW4ubGVuZ3RoLGE7aTxvOysraSlpZigoYT1uW2ldKS5uYW1lPT09ZSlyZXR1cm4gYS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKCh0PT1udWxsP1E4ZTp0UmUpKHIsZSx0KSl9ZnVuY3Rpb24gS3coZSx0LHIpe3ZhciBuPWUuX2lkO3JldHVybiBlLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1OdSh0aGlzLG4pOyhpLnZhbHVlfHwoaS52YWx1ZT17fSkpW3RdPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksZnVuY3Rpb24oaSl7cmV0dXJuIG5vKGksbikudmFsdWVbdF19fXZhciBoQT1NKCgpPT57VGMoKX0pO2Z1bmN0aW9uIGJ6KGUsdCl7dmFyIHI7cmV0dXJuKHR5cGVvZiB0PT0ibnVtYmVyIj9DYzp0IGluc3RhbmNlb2YgVmc/Z3o6KHI9VmcodCkpPyh0PXIsZ3opOnRudCkoZSx0KX12YXIgb250PU0oKCk9PntYcnQoKTt4eigpfSk7ZnVuY3Rpb24gZVJlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpfX1mdW5jdGlvbiByUmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpfX1mdW5jdGlvbiBuUmUoZSx0LHIpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRBdHRyaWJ1dGUoZSk7cmV0dXJuIG89PT1yP251bGw6bz09PW4/aTppPXQobj1vLHIpfX1mdW5jdGlvbiBpUmUoZSx0LHIpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpO3JldHVybiBvPT09cj9udWxsOm89PT1uP2k6aT10KG49byxyKX19ZnVuY3Rpb24gb1JlKGUsdCxyKXt2YXIgbixpLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscz1yKHRoaXMpO3JldHVybiBzPT1udWxsP3ZvaWQgdGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSk6KGE9dGhpcy5nZXRBdHRyaWJ1dGUoZSksYT09PXM/bnVsbDphPT09biYmcz09PWk/bzpvPXQobj1hLGk9cykpfX1mdW5jdGlvbiBhUmUoZSx0LHIpe3ZhciBuLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPXIodGhpcyk7cmV0dXJuIHM9PW51bGw/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk6KGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpLGE9PT1zP251bGw6YT09PW4mJnM9PT1pP286bz10KG49YSxpPXMpKX19ZnVuY3Rpb24gRXF0KGUsdCl7dmFyIHI9bGQoZSksbj1yPT09InRyYW5zZm9ybSI/aW50OmJ6O3JldHVybiB0aGlzLmF0dHJUd2VlbihlLHR5cGVvZiB0PT0iZnVuY3Rpb24iPyhyLmxvY2FsP2FSZTpvUmUpKHIsbixLdyh0aGlzLCJhdHRyLiIrZSx0KSk6dD09bnVsbD8oci5sb2NhbD9yUmU6ZVJlKShyKTooci5sb2NhbD9pUmU6blJlKShyLG4sdCsiIikpfXZhciBUcXQ9TSgoKT0+e3h6KCk7U2YoKTtoQSgpO29udCgpfSk7ZnVuY3Rpb24gc1JlKGUsdCl7ZnVuY3Rpb24gcigpe3ZhciBuPXRoaXMsaT10LmFwcGx5KG4sYXJndW1lbnRzKTtyZXR1cm4gaSYmZnVuY3Rpb24obyl7bi5zZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwsaShvKSl9fXJldHVybiByLl92YWx1ZT10LHJ9ZnVuY3Rpb24gbFJlKGUsdCl7ZnVuY3Rpb24gcigpe3ZhciBuPXRoaXMsaT10LmFwcGx5KG4sYXJndW1lbnRzKTtyZXR1cm4gaSYmZnVuY3Rpb24obyl7bi5zZXRBdHRyaWJ1dGUoZSxpKG8pKX19cmV0dXJuIHIuX3ZhbHVlPXQscn1mdW5jdGlvbiBDcXQoZSx0KXt2YXIgcj0iYXR0ci4iK2U7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihyPXRoaXMudHdlZW4ocikpJiZyLl92YWx1ZTtpZih0PT1udWxsKXJldHVybiB0aGlzLnR3ZWVuKHIsbnVsbCk7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3ZhciBuPWxkKGUpO3JldHVybiB0aGlzLnR3ZWVuKHIsKG4ubG9jYWw/c1JlOmxSZSkobix0KSl9dmFyIEFxdD1NKCgpPT57U2YoKX0pO2Z1bmN0aW9uIGNSZShlLHQpe3JldHVybiBmdW5jdGlvbigpe2FBKHRoaXMsZSkuZGVsYXk9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiB1UmUoZSx0KXtyZXR1cm4gdD0rdCxmdW5jdGlvbigpe2FBKHRoaXMsZSkuZGVsYXk9dH19ZnVuY3Rpb24gUHF0KGUpe3ZhciB0PXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgodHlwZW9mIGU9PSJmdW5jdGlvbiI/Y1JlOnVSZSkodCxlKSk6bm8odGhpcy5ub2RlKCksdCkuZGVsYXl9dmFyIElxdD1NKCgpPT57VGMoKX0pO2Z1bmN0aW9uIGhSZShlLHQpe3JldHVybiBmdW5jdGlvbigpe051KHRoaXMsZSkuZHVyYXRpb249K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBmUmUoZSx0KXtyZXR1cm4gdD0rdCxmdW5jdGlvbigpe051KHRoaXMsZSkuZHVyYXRpb249dH19ZnVuY3Rpb24gTHF0KGUpe3ZhciB0PXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgodHlwZW9mIGU9PSJmdW5jdGlvbiI/aFJlOmZSZSkodCxlKSk6bm8odGhpcy5ub2RlKCksdCkuZHVyYXRpb259dmFyIGtxdD1NKCgpPT57VGMoKX0pO2Z1bmN0aW9uIHBSZShlLHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtOdSh0aGlzLGUpLmVhc2U9dH19ZnVuY3Rpb24gUnF0KGUpe3ZhciB0PXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChwUmUodCxlKSk6bm8odGhpcy5ub2RlKCksdCkuZWFzZX12YXIgTnF0PU0oKCk9PntUYygpfSk7ZnVuY3Rpb24gRHF0KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1aQyhlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgbz10W2ldLGE9by5sZW5ndGgscz1uW2ldPVtdLGwsYz0wO2M8YTsrK2MpKGw9b1tjXSkmJmUuY2FsbChsLGwuX19kYXRhX18sYyxvKSYmcy5wdXNoKGwpO3JldHVybiBuZXcgVm8obix0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfXZhciBPcXQ9TSgoKT0+e1NmKCk7dWQoKX0pO2Z1bmN0aW9uIHpxdChlKXtpZihlLl9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9ZS5fZ3JvdXBzLG49dC5sZW5ndGgsaT1yLmxlbmd0aCxvPU1hdGgubWluKG4saSksYT1uZXcgQXJyYXkobikscz0wO3M8bzsrK3MpZm9yKHZhciBsPXRbc10sYz1yW3NdLHU9bC5sZW5ndGgsaD1hW3NdPW5ldyBBcnJheSh1KSxmLHA9MDtwPHU7KytwKShmPWxbcF18fGNbcF0pJiYoaFtwXT1mKTtmb3IoO3M8bjsrK3MpYVtzXT10W3NdO3JldHVybiBuZXcgVm8oYSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfXZhciBGcXQ9TSgoKT0+e3VkKCl9KTtmdW5jdGlvbiBkUmUoZSl7cmV0dXJuKGUrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeShmdW5jdGlvbih0KXt2YXIgcj10LmluZGV4T2YoIi4iKTtyZXR1cm4gcj49MCYmKHQ9dC5zbGljZSgwLHIpKSwhdHx8dD09PSJzdGFydCJ9KX1mdW5jdGlvbiBtUmUoZSx0LHIpe3ZhciBuLGksbz1kUmUodCk/YUE6TnU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLGUpLHM9YS5vbjtzIT09biYmKGk9KG49cykuY29weSgpKS5vbih0LHIpLGEub249aX19ZnVuY3Rpb24gQnF0KGUsdCl7dmFyIHI9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9ubyh0aGlzLm5vZGUoKSxyKS5vbi5vbihlKTp0aGlzLmVhY2gobVJlKHIsZSx0KSl9dmFyIEhxdD1NKCgpPT57VGMoKX0pO2Z1bmN0aW9uIGdSZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciByIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtyIT09ZSlyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19ZnVuY3Rpb24gVnF0KCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLGdSZSh0aGlzLl9pZCkpfXZhciBVcXQ9TSgoKT0+e30pO2Z1bmN0aW9uIHFxdChlKXt2YXIgdD10aGlzLl9uYW1lLHI9dGhpcy5faWQ7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPXd2KGUpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgsbz1uZXcgQXJyYXkoaSksYT0wO2E8aTsrK2EpZm9yKHZhciBzPW5bYV0sbD1zLmxlbmd0aCxjPW9bYV09bmV3IEFycmF5KGwpLHUsaCxmPTA7ZjxsOysrZikodT1zW2ZdKSYmKGg9ZS5jYWxsKHUsdS5fX2RhdGFfXyxmLHMpKSYmKCJfX2RhdGFfXyJpbiB1JiYoaC5fX2RhdGFfXz11Ll9fZGF0YV9fKSxjW2ZdPWgsSGcoY1tmXSx0LHIsZixjLG5vKHUscikpKTtyZXR1cm4gbmV3IFZvKG8sdGhpcy5fcGFyZW50cyx0LHIpfXZhciBHcXQ9TSgoKT0+e1NmKCk7dWQoKTtUYygpfSk7ZnVuY3Rpb24gV3F0KGUpe3ZhciB0PXRoaXMuX25hbWUscj10aGlzLl9pZDt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9S0MoZSkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPVtdLGE9W10scz0wO3M8aTsrK3MpZm9yKHZhciBsPW5bc10sYz1sLmxlbmd0aCx1LGg9MDtoPGM7KytoKWlmKHU9bFtoXSl7Zm9yKHZhciBmPWUuY2FsbCh1LHUuX19kYXRhX18saCxsKSxwLGQ9bm8odSxyKSxnPTAsXz1mLmxlbmd0aDtnPF87KytnKShwPWZbZ10pJiZIZyhwLHQscixnLGYsZCk7by5wdXNoKGYpLGEucHVzaCh1KX1yZXR1cm4gbmV3IFZvKG8sYSx0LHIpfXZhciBZcXQ9TSgoKT0+e1NmKCk7dWQoKTtUYygpfSk7ZnVuY3Rpb24ganF0KCl7cmV0dXJuIG5ldyBfUmUodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfXZhciBfUmUsWHF0PU0oKCk9PntTZigpO19SZT1jZC5wcm90b3R5cGUuY29uc3RydWN0b3J9KTtmdW5jdGlvbiB5UmUoZSx0KXt2YXIgcixuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89QmcodGhpcyxlKSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpLEJnKHRoaXMsZSkpO3JldHVybiBvPT09YT9udWxsOm89PT1yJiZhPT09bj9pOmk9dChyPW8sbj1hKX19ZnVuY3Rpb24gdlJlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSl9fWZ1bmN0aW9uIHhSZShlLHQscil7dmFyIG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1CZyh0aGlzLGUpO3JldHVybiBvPT09cj9udWxsOm89PT1uP2k6aT10KG49byxyKX19ZnVuY3Rpb24gYlJlKGUsdCxyKXt2YXIgbixpLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9QmcodGhpcyxlKSxzPXIodGhpcyk7cmV0dXJuIHM9PW51bGwmJihzPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpLEJnKHRoaXMsZSkpKSxhPT09cz9udWxsOmE9PT1uJiZzPT09aT9vOm89dChuPWEsaT1zKX19ZnVuY3Rpb24gJHF0KGUsdCxyKXt2YXIgbj0oZSs9IiIpPT0idHJhbnNmb3JtIj9ubnQ6Yno7cmV0dXJuIHQ9PW51bGw/dGhpcy5zdHlsZVR3ZWVuKGUseVJlKGUsbikpLm9uKCJlbmQuc3R5bGUuIitlLHZSZShlKSk6dGhpcy5zdHlsZVR3ZWVuKGUsdHlwZW9mIHQ9PSJmdW5jdGlvbiI/YlJlKGUsbixLdyh0aGlzLCJzdHlsZS4iK2UsdCkpOnhSZShlLG4sdCsiIikscil9dmFyIEtxdD1NKCgpPT57eHooKTtTZigpO2hBKCk7b250KCl9KTtmdW5jdGlvbiB3UmUoZSx0LHIpe2Z1bmN0aW9uIG4oKXt2YXIgaT10aGlzLG89dC5hcHBseShpLGFyZ3VtZW50cyk7cmV0dXJuIG8mJmZ1bmN0aW9uKGEpe2kuc3R5bGUuc2V0UHJvcGVydHkoZSxvKGEpLHIpfX1yZXR1cm4gbi5fdmFsdWU9dCxufWZ1bmN0aW9uIFpxdChlLHQscil7dmFyIG49InN0eWxlLiIrKGUrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4obix3UmUoZSx0LHI9PW51bGw/IiI6cikpfXZhciBKcXQ9TSgoKT0+e30pO2Z1bmN0aW9uIFNSZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PWV9fWZ1bmN0aW9uIE1SZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiBRcXQoZSl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLHR5cGVvZiBlPT0iZnVuY3Rpb24iP01SZShLdyh0aGlzLCJ0ZXh0IixlKSk6U1JlKGU9PW51bGw/IiI6ZSsiIikpfXZhciB0R3Q9TSgoKT0+e2hBKCl9KTtmdW5jdGlvbiBlR3QoKXtmb3IodmFyIGU9dGhpcy5fbmFtZSx0PXRoaXMuX2lkLHI9d3ooKSxuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLG89MDtvPGk7KytvKWZvcih2YXIgYT1uW29dLHM9YS5sZW5ndGgsbCxjPTA7YzxzOysrYylpZihsPWFbY10pe3ZhciB1PW5vKGwsdCk7SGcobCxlLHIsYyxhLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyBWbyhuLHRoaXMuX3BhcmVudHMsZSxyKX12YXIgckd0PU0oKCk9Pnt1ZCgpO1RjKCl9KTtmdW5jdGlvbiBWbyhlLHQscixuKXt0aGlzLl9ncm91cHM9ZSx0aGlzLl9wYXJlbnRzPXQsdGhpcy5fbmFtZT1yLHRoaXMuX2lkPW59ZnVuY3Rpb24gU3ooZSl7cmV0dXJuIGNkKCkudHJhbnNpdGlvbihlKX1mdW5jdGlvbiB3eigpe3JldHVybisrRVJlfXZhciBFUmUsWncsdWQ9TSgoKT0+e1NmKCk7VHF0KCk7QXF0KCk7SXF0KCk7a3F0KCk7TnF0KCk7T3F0KCk7RnF0KCk7SHF0KCk7VXF0KCk7R3F0KCk7WXF0KCk7WHF0KCk7S3F0KCk7SnF0KCk7dEd0KCk7ckd0KCk7aEEoKTtFUmU9MDtadz1jZC5wcm90b3R5cGU7Vm8ucHJvdG90eXBlPVN6LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Vm8sc2VsZWN0OnFxdCxzZWxlY3RBbGw6V3F0LGZpbHRlcjpEcXQsbWVyZ2U6enF0LHNlbGVjdGlvbjpqcXQsdHJhbnNpdGlvbjplR3QsY2FsbDpady5jYWxsLG5vZGVzOlp3Lm5vZGVzLG5vZGU6Wncubm9kZSxzaXplOlp3LnNpemUsZW1wdHk6WncuZW1wdHksZWFjaDpady5lYWNoLG9uOkJxdCxhdHRyOkVxdCxhdHRyVHdlZW46Q3F0LHN0eWxlOiRxdCxzdHlsZVR3ZWVuOlpxdCx0ZXh0OlFxdCxyZW1vdmU6VnF0LHR3ZWVuOk1xdCxkZWxheTpQcXQsZHVyYXRpb246THF0LGVhc2U6UnF0fX0pO2Z1bmN0aW9uIFRSZShlLHQpe2Zvcih2YXIgcjshKHI9ZS5fX3RyYW5zaXRpb24pfHwhKHI9clt0XSk7KWlmKCEoZT1lLnBhcmVudE5vZGUpKXJldHVybiBhbnQudGltZT1qdygpLGFudDtyZXR1cm4gcn1mdW5jdGlvbiBuR3QoZSl7dmFyIHQscjtlIGluc3RhbmNlb2YgVm8/KHQ9ZS5faWQsZT1lLl9uYW1lKToodD13eigpLChyPWFudCkudGltZT1qdygpLGU9ZT09bnVsbD9udWxsOmUrIiIpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPTA7bzxpOysrbylmb3IodmFyIGE9bltvXSxzPWEubGVuZ3RoLGwsYz0wO2M8czsrK2MpKGw9YVtjXSkmJkhnKGwsZSx0LGMsYSxyfHxUUmUobCx0KSk7cmV0dXJuIG5ldyBWbyhuLHRoaXMuX3BhcmVudHMsZSx0KX12YXIgYW50LGlHdD1NKCgpPT57dWQoKTtUYygpO0lfKCk7VXJ0KCk7YW50PXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTp2c319KTt2YXIgb0d0PU0oKCk9PntTZigpOyRVdCgpO2lHdCgpO2NkLnByb3RvdHlwZS5pbnRlcnJ1cHQ9WFV0O2NkLnByb3RvdHlwZS50cmFuc2l0aW9uPW5HdH0pO2Z1bmN0aW9uIGFHdChlLHQpe3ZhciByPWUuX190cmFuc2l0aW9uLG4saTtpZihyKXt0PXQ9PW51bGw/bnVsbDp0KyIiO2ZvcihpIGluIHIpaWYoKG49cltpXSkuc3RhdGU+Y3omJm4ubmFtZT09PXQpcmV0dXJuIG5ldyBWbyhbW2VdXSxDUmUsdCwraSl9cmV0dXJuIG51bGx9dmFyIENSZSxzR3Q9TSgoKT0+e3VkKCk7VGMoKTtDUmU9W251bGxdfSk7dmFyIGxHdD1NKCgpPT57b0d0KCk7dWQoKTtzR3QoKTtHcnQoKX0pO2Z1bmN0aW9uIHNudChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIGNHdD1NKCgpPT57fSk7ZnVuY3Rpb24gdUd0KGUpe3JldHVybiBlWzBdfWZ1bmN0aW9uIGhHdChlKXtyZXR1cm4gZVsxXX12YXIgZkd0PU0oKCk9Pnt9KTtmdW5jdGlvbiBsbnQoKXt0aGlzLl89bnVsbH1mdW5jdGlvbiBKdyhlKXtlLlU9ZS5DPWUuTD1lLlI9ZS5QPWUuTj1udWxsfWZ1bmN0aW9uIGZBKGUsdCl7dmFyIHI9dCxuPXQuUixpPXIuVTtpP2kuTD09PXI/aS5MPW46aS5SPW46ZS5fPW4sbi5VPWksci5VPW4sci5SPW4uTCxyLlImJihyLlIuVT1yKSxuLkw9cn1mdW5jdGlvbiBwQShlLHQpe3ZhciByPXQsbj10LkwsaT1yLlU7aT9pLkw9PT1yP2kuTD1uOmkuUj1uOmUuXz1uLG4uVT1pLHIuVT1uLHIuTD1uLlIsci5MJiYoci5MLlU9ciksbi5SPXJ9ZnVuY3Rpb24gcEd0KGUpe2Zvcig7ZS5MOyllPWUuTDtyZXR1cm4gZX12YXIgY250LE16PU0oKCk9PntsbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpsbnQsaW5zZXJ0OmZ1bmN0aW9uKGUsdCl7dmFyIHIsbixpO2lmKGUpe2lmKHQuUD1lLHQuTj1lLk4sZS5OJiYoZS5OLlA9dCksZS5OPXQsZS5SKXtmb3IoZT1lLlI7ZS5MOyllPWUuTDtlLkw9dH1lbHNlIGUuUj10O3I9ZX1lbHNlIHRoaXMuXz8oZT1wR3QodGhpcy5fKSx0LlA9bnVsbCx0Lk49ZSxlLlA9ZS5MPXQscj1lKToodC5QPXQuTj1udWxsLHRoaXMuXz10LHI9bnVsbCk7Zm9yKHQuTD10LlI9bnVsbCx0LlU9cix0LkM9ITAsZT10O3ImJnIuQzspbj1yLlUscj09PW4uTD8oaT1uLlIsaSYmaS5DPyhyLkM9aS5DPSExLG4uQz0hMCxlPW4pOihlPT09ci5SJiYoZkEodGhpcyxyKSxlPXIscj1lLlUpLHIuQz0hMSxuLkM9ITAscEEodGhpcyxuKSkpOihpPW4uTCxpJiZpLkM/KHIuQz1pLkM9ITEsbi5DPSEwLGU9bik6KGU9PT1yLkwmJihwQSh0aGlzLHIpLGU9cixyPWUuVSksci5DPSExLG4uQz0hMCxmQSh0aGlzLG4pKSkscj1lLlU7dGhpcy5fLkM9ITF9LHJlbW92ZTpmdW5jdGlvbihlKXtlLk4mJihlLk4uUD1lLlApLGUuUCYmKGUuUC5OPWUuTiksZS5OPWUuUD1udWxsO3ZhciB0PWUuVSxyLG49ZS5MLGk9ZS5SLG8sYTtpZihuP2k/bz1wR3QoaSk6bz1uOm89aSx0P3QuTD09PWU/dC5MPW86dC5SPW86dGhpcy5fPW8sbiYmaT8oYT1vLkMsby5DPWUuQyxvLkw9bixuLlU9byxvIT09aT8odD1vLlUsby5VPWUuVSxlPW8uUix0Lkw9ZSxvLlI9aSxpLlU9byk6KG8uVT10LHQ9byxlPW8uUikpOihhPWUuQyxlPW8pLGUmJihlLlU9dCksIWEpe2lmKGUmJmUuQyl7ZS5DPSExO3JldHVybn1kb3tpZihlPT09dGhpcy5fKWJyZWFrO2lmKGU9PT10Lkwpe2lmKHI9dC5SLHIuQyYmKHIuQz0hMSx0LkM9ITAsZkEodGhpcyx0KSxyPXQuUiksci5MJiZyLkwuQ3x8ci5SJiZyLlIuQyl7KCFyLlJ8fCFyLlIuQykmJihyLkwuQz0hMSxyLkM9ITAscEEodGhpcyxyKSxyPXQuUiksci5DPXQuQyx0LkM9ci5SLkM9ITEsZkEodGhpcyx0KSxlPXRoaXMuXzticmVha319ZWxzZSBpZihyPXQuTCxyLkMmJihyLkM9ITEsdC5DPSEwLHBBKHRoaXMsdCkscj10LkwpLHIuTCYmci5MLkN8fHIuUiYmci5SLkMpeyghci5MfHwhci5MLkMpJiYoci5SLkM9ITEsci5DPSEwLGZBKHRoaXMscikscj10LkwpLHIuQz10LkMsdC5DPXIuTC5DPSExLHBBKHRoaXMsdCksZT10aGlzLl87YnJlYWt9ci5DPSEwLGU9dCx0PXQuVX13aGlsZSghZS5DKTtlJiYoZS5DPSExKX19fTtjbnQ9bG50fSk7ZnVuY3Rpb24gUXcoZSx0LHIsbil7dmFyIGk9W251bGwsbnVsbF0sbz1Dby5wdXNoKGkpLTE7cmV0dXJuIGkubGVmdD1lLGkucmlnaHQ9dCxyJiZkQShpLGUsdCxyKSxuJiZkQShpLHQsZSxuKSxLYVtlLmluZGV4XS5oYWxmZWRnZXMucHVzaChvKSxLYVt0LmluZGV4XS5oYWxmZWRnZXMucHVzaChvKSxpfWZ1bmN0aW9uIHRTKGUsdCxyKXt2YXIgbj1bdCxyXTtyZXR1cm4gbi5sZWZ0PWUsbn1mdW5jdGlvbiBkQShlLHQscixuKXshZVswXSYmIWVbMV0/KGVbMF09bixlLmxlZnQ9dCxlLnJpZ2h0PXIpOmUubGVmdD09PXI/ZVsxXT1uOmVbMF09bn1mdW5jdGlvbiBBUmUoZSx0LHIsbixpKXt2YXIgbz1lWzBdLGE9ZVsxXSxzPW9bMF0sbD1vWzFdLGM9YVswXSx1PWFbMV0saD0wLGY9MSxwPWMtcyxkPXUtbCxnO2lmKGc9dC1zLCEoIXAmJmc+MCkpe2lmKGcvPXAscDwwKXtpZihnPGgpcmV0dXJuO2c8ZiYmKGY9Zyl9ZWxzZSBpZihwPjApe2lmKGc+ZilyZXR1cm47Zz5oJiYoaD1nKX1pZihnPW4tcywhKCFwJiZnPDApKXtpZihnLz1wLHA8MCl7aWYoZz5mKXJldHVybjtnPmgmJihoPWcpfWVsc2UgaWYocD4wKXtpZihnPGgpcmV0dXJuO2c8ZiYmKGY9Zyl9aWYoZz1yLWwsISghZCYmZz4wKSl7aWYoZy89ZCxkPDApe2lmKGc8aClyZXR1cm47ZzxmJiYoZj1nKX1lbHNlIGlmKGQ+MCl7aWYoZz5mKXJldHVybjtnPmgmJihoPWcpfWlmKGc9aS1sLCEoIWQmJmc8MCkpe2lmKGcvPWQsZDwwKXtpZihnPmYpcmV0dXJuO2c+aCYmKGg9Zyl9ZWxzZSBpZihkPjApe2lmKGc8aClyZXR1cm47ZzxmJiYoZj1nKX1yZXR1cm4hKGg+MCkmJiEoZjwxKXx8KGg+MCYmKGVbMF09W3MraCpwLGwraCpkXSksZjwxJiYoZVsxXT1bcytmKnAsbCtmKmRdKSksITB9fX19fWZ1bmN0aW9uIFBSZShlLHQscixuLGkpe3ZhciBvPWVbMV07aWYobylyZXR1cm4hMDt2YXIgYT1lWzBdLHM9ZS5sZWZ0LGw9ZS5yaWdodCxjPXNbMF0sdT1zWzFdLGg9bFswXSxmPWxbMV0scD0oYytoKS8yLGQ9KHUrZikvMixnLF87aWYoZj09PXUpe2lmKHA8dHx8cD49bilyZXR1cm47aWYoYz5oKXtpZighYSlhPVtwLHJdO2Vsc2UgaWYoYVsxXT49aSlyZXR1cm47bz1bcCxpXX1lbHNle2lmKCFhKWE9W3AsaV07ZWxzZSBpZihhWzFdPHIpcmV0dXJuO289W3Ascl19fWVsc2UgaWYoZz0oYy1oKS8oZi11KSxfPWQtZypwLGc8LTF8fGc+MSlpZihjPmgpe2lmKCFhKWE9WyhyLV8pL2cscl07ZWxzZSBpZihhWzFdPj1pKXJldHVybjtvPVsoaS1fKS9nLGldfWVsc2V7aWYoIWEpYT1bKGktXykvZyxpXTtlbHNlIGlmKGFbMV08cilyZXR1cm47bz1bKHItXykvZyxyXX1lbHNlIGlmKHU8Zil7aWYoIWEpYT1bdCxnKnQrX107ZWxzZSBpZihhWzBdPj1uKXJldHVybjtvPVtuLGcqbitfXX1lbHNle2lmKCFhKWE9W24sZypuK19dO2Vsc2UgaWYoYVswXTx0KXJldHVybjtvPVt0LGcqdCtfXX1yZXR1cm4gZVswXT1hLGVbMV09bywhMH1mdW5jdGlvbiBkR3QoZSx0LHIsbil7Zm9yKHZhciBpPUNvLmxlbmd0aCxvO2ktLTspKCFQUmUobz1Db1tpXSxlLHQscixuKXx8IUFSZShvLGUsdCxyLG4pfHwhKE1hdGguYWJzKG9bMF1bMF0tb1sxXVswXSk+V3J8fE1hdGguYWJzKG9bMF1bMV0tb1sxXVsxXSk+V3IpKSYmZGVsZXRlIENvW2ldfXZhciBFej1NKCgpPT57ZVMoKX0pO2Z1bmN0aW9uIG1HdChlKXtyZXR1cm4gS2FbZS5pbmRleF09e3NpdGU6ZSxoYWxmZWRnZXM6W119fWZ1bmN0aW9uIElSZShlLHQpe3ZhciByPWUuc2l0ZSxuPXQubGVmdCxpPXQucmlnaHQ7cmV0dXJuIHI9PT1pJiYoaT1uLG49ciksaT9NYXRoLmF0YW4yKGlbMV0tblsxXSxpWzBdLW5bMF0pOihyPT09bj8obj10WzFdLGk9dFswXSk6KG49dFswXSxpPXRbMV0pLE1hdGguYXRhbjIoblswXS1pWzBdLGlbMV0tblsxXSkpfWZ1bmN0aW9uIHVudChlLHQpe3JldHVybiB0WysodC5sZWZ0IT09ZS5zaXRlKV19ZnVuY3Rpb24gTFJlKGUsdCl7cmV0dXJuIHRbKyh0LmxlZnQ9PT1lLnNpdGUpXX1mdW5jdGlvbiBnR3QoKXtmb3IodmFyIGU9MCx0PUthLmxlbmd0aCxyLG4saSxvO2U8dDsrK2UpaWYoKHI9S2FbZV0pJiYobz0obj1yLmhhbGZlZGdlcykubGVuZ3RoKSl7dmFyIGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pO2ZvcihpPTA7aTxvOysraSlhW2ldPWksc1tpXT1JUmUocixDb1tuW2ldXSk7Zm9yKGEuc29ydChmdW5jdGlvbihsLGMpe3JldHVybiBzW2NdLXNbbF19KSxpPTA7aTxvOysraSlzW2ldPW5bYVtpXV07Zm9yKGk9MDtpPG87KytpKW5baV09c1tpXX19ZnVuY3Rpb24gX0d0KGUsdCxyLG4pe3ZhciBpPUthLmxlbmd0aCxvLGEscyxsLGMsdSxoLGYscCxkLGcsXyx5PSEwO2ZvcihvPTA7bzxpOysrbylpZihhPUthW29dKXtmb3Iocz1hLnNpdGUsYz1hLmhhbGZlZGdlcyxsPWMubGVuZ3RoO2wtLTspQ29bY1tsXV18fGMuc3BsaWNlKGwsMSk7Zm9yKGw9MCx1PWMubGVuZ3RoO2w8dTspZD1MUmUoYSxDb1tjW2xdXSksZz1kWzBdLF89ZFsxXSxoPXVudChhLENvW2NbKytsJXVdXSksZj1oWzBdLHA9aFsxXSwoTWF0aC5hYnMoZy1mKT5Xcnx8TWF0aC5hYnMoXy1wKT5XcikmJihjLnNwbGljZShsLDAsQ28ucHVzaCh0UyhzLGQsTWF0aC5hYnMoZy1lKTxXciYmbi1fPldyP1tlLE1hdGguYWJzKGYtZSk8V3I/cDpuXTpNYXRoLmFicyhfLW4pPFdyJiZyLWc+V3I/W01hdGguYWJzKHAtbik8V3I/ZjpyLG5dOk1hdGguYWJzKGctcik8V3ImJl8tdD5Xcj9bcixNYXRoLmFicyhmLXIpPFdyP3A6dF06TWF0aC5hYnMoXy10KTxXciYmZy1lPldyP1tNYXRoLmFicyhwLXQpPFdyP2Y6ZSx0XTpudWxsKSktMSksKyt1KTt1JiYoeT0hMSl9aWYoeSl7dmFyIHgsYixTLEM9MS8wO2ZvcihvPTAseT1udWxsO288aTsrK28pKGE9S2Fbb10pJiYocz1hLnNpdGUseD1zWzBdLWUsYj1zWzFdLXQsUz14KngrYipiLFM8QyYmKEM9Uyx5PWEpKTtpZih5KXt2YXIgUD1bZSx0XSxrPVtlLG5dLE89W3Isbl0sRD1bcix0XTt5LmhhbGZlZGdlcy5wdXNoKENvLnB1c2godFMocz15LnNpdGUsUCxrKSktMSxDby5wdXNoKHRTKHMsayxPKSktMSxDby5wdXNoKHRTKHMsTyxEKSktMSxDby5wdXNoKHRTKHMsRCxQKSktMSl9fWZvcihvPTA7bzxpOysrbykoYT1LYVtvXSkmJihhLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBLYVtvXSl9dmFyIGhudD1NKCgpPT57RXooKTtlUygpfSk7ZnVuY3Rpb24ga1JlKCl7SncodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1udWxsfWZ1bmN0aW9uIE12KGUpe3ZhciB0PWUuUCxyPWUuTjtpZighKCF0fHwhcikpe3ZhciBuPXQuc2l0ZSxpPWUuc2l0ZSxvPXIuc2l0ZTtpZihuIT09byl7dmFyIGE9aVswXSxzPWlbMV0sbD1uWzBdLWEsYz1uWzFdLXMsdT1vWzBdLWEsaD1vWzFdLXMsZj0yKihsKmgtYyp1KTtpZighKGY+PS12R3QpKXt2YXIgcD1sKmwrYypjLGQ9dSp1K2gqaCxnPShoKnAtYypkKS9mLF89KGwqZC11KnApL2YseT15R3QucG9wKCl8fG5ldyBrUmU7eS5hcmM9ZSx5LnNpdGU9aSx5Lng9ZythLHkueT0oeS5jeT1fK3MpK01hdGguc3FydChnKmcrXypfKSxlLmNpcmNsZT15O2Zvcih2YXIgeD1udWxsLGI9clMuXztiOylpZih5Lnk8Yi55fHx5Lnk9PT1iLnkmJnkueDw9Yi54KWlmKGIuTCliPWIuTDtlbHNle3g9Yi5QO2JyZWFrfWVsc2UgaWYoYi5SKWI9Yi5SO2Vsc2V7eD1iO2JyZWFrfXJTLmluc2VydCh4LHkpLHh8fChUej15KX19fX1mdW5jdGlvbiBFdihlKXt2YXIgdD1lLmNpcmNsZTt0JiYodC5QfHwoVHo9dC5OKSxyUy5yZW1vdmUodCkseUd0LnB1c2godCksSncodCksZS5jaXJjbGU9bnVsbCl9dmFyIHlHdCxUeixmbnQ9TSgoKT0+e016KCk7ZVMoKTt5R3Q9W119KTtmdW5jdGlvbiBSUmUoKXtKdyh0aGlzKSx0aGlzLmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24geEd0KGUpe3ZhciB0PWJHdC5wb3AoKXx8bmV3IFJSZTtyZXR1cm4gdC5zaXRlPWUsdH1mdW5jdGlvbiBwbnQoZSl7RXYoZSksVHYucmVtb3ZlKGUpLGJHdC5wdXNoKGUpLEp3KGUpfWZ1bmN0aW9uIHdHdChlKXt2YXIgdD1lLmNpcmNsZSxyPXQueCxuPXQuY3ksaT1bcixuXSxvPWUuUCxhPWUuTixzPVtlXTtwbnQoZSk7Zm9yKHZhciBsPW87bC5jaXJjbGUmJk1hdGguYWJzKHItbC5jaXJjbGUueCk8V3ImJk1hdGguYWJzKG4tbC5jaXJjbGUuY3kpPFdyOylvPWwuUCxzLnVuc2hpZnQobCkscG50KGwpLGw9bztzLnVuc2hpZnQobCksRXYobCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJk1hdGguYWJzKHItYy5jaXJjbGUueCk8V3ImJk1hdGguYWJzKG4tYy5jaXJjbGUuY3kpPFdyOylhPWMuTixzLnB1c2goYykscG50KGMpLGM9YTtzLnB1c2goYyksRXYoYyk7dmFyIHU9cy5sZW5ndGgsaDtmb3IoaD0xO2g8dTsrK2gpYz1zW2hdLGw9c1toLTFdLGRBKGMuZWRnZSxsLnNpdGUsYy5zaXRlLGkpO2w9c1swXSxjPXNbdS0xXSxjLmVkZ2U9UXcobC5zaXRlLGMuc2l0ZSxudWxsLGkpLE12KGwpLE12KGMpfWZ1bmN0aW9uIFNHdChlKXtmb3IodmFyIHQ9ZVswXSxyPWVbMV0sbixpLG8sYSxzPVR2Ll87czspaWYobz1NR3QocyxyKS10LG8+V3Ipcz1zLkw7ZWxzZSBpZihhPXQtTlJlKHMsciksYT5Xcil7aWYoIXMuUil7bj1zO2JyZWFrfXM9cy5SfWVsc2V7bz4tV3I/KG49cy5QLGk9cyk6YT4tV3I/KG49cyxpPXMuTik6bj1pPXM7YnJlYWt9bUd0KGUpO3ZhciBsPXhHdChlKTtpZihUdi5pbnNlcnQobixsKSwhKCFuJiYhaSkpe2lmKG49PT1pKXtFdihuKSxpPXhHdChuLnNpdGUpLFR2Lmluc2VydChsLGkpLGwuZWRnZT1pLmVkZ2U9UXcobi5zaXRlLGwuc2l0ZSksTXYobiksTXYoaSk7cmV0dXJufWlmKCFpKXtsLmVkZ2U9UXcobi5zaXRlLGwuc2l0ZSk7cmV0dXJufUV2KG4pLEV2KGkpO3ZhciBjPW4uc2l0ZSx1PWNbMF0saD1jWzFdLGY9ZVswXS11LHA9ZVsxXS1oLGQ9aS5zaXRlLGc9ZFswXS11LF89ZFsxXS1oLHk9MiooZipfLXAqZykseD1mKmYrcCpwLGI9ZypnK18qXyxTPVsoXyp4LXAqYikveSt1LChmKmItZyp4KS95K2hdO2RBKGkuZWRnZSxjLGQsUyksbC5lZGdlPVF3KGMsZSxudWxsLFMpLGkuZWRnZT1RdyhlLGQsbnVsbCxTKSxNdihuKSxNdihpKX19ZnVuY3Rpb24gTUd0KGUsdCl7dmFyIHI9ZS5zaXRlLG49clswXSxpPXJbMV0sbz1pLXQ7aWYoIW8pcmV0dXJuIG47dmFyIGE9ZS5QO2lmKCFhKXJldHVybi0xLzA7cj1hLnNpdGU7dmFyIHM9clswXSxsPXJbMV0sYz1sLXQ7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1uLGg9MS9vLTEvYyxmPXUvYztyZXR1cm4gaD8oLWYrTWF0aC5zcXJ0KGYqZi0yKmgqKHUqdS8oLTIqYyktbCtjLzIraS1vLzIpKSkvaCtuOihuK3MpLzJ9ZnVuY3Rpb24gTlJlKGUsdCl7dmFyIHI9ZS5OO2lmKHIpcmV0dXJuIE1HdChyLHQpO3ZhciBuPWUuc2l0ZTtyZXR1cm4gblsxXT09PXQ/blswXToxLzB9dmFyIGJHdCxFR3Q9TSgoKT0+e016KCk7aG50KCk7Zm50KCk7RXooKTtlUygpO2JHdD1bXX0pO2Z1bmN0aW9uIERSZShlLHQscil7cmV0dXJuKGVbMF0tclswXSkqKHRbMV0tZVsxXSktKGVbMF0tdFswXSkqKHJbMV0tZVsxXSl9ZnVuY3Rpb24gT1JlKGUsdCl7cmV0dXJuIHRbMV0tZVsxXXx8dFswXS1lWzBdfWZ1bmN0aW9uIG1BKGUsdCl7dmFyIHI9ZS5zb3J0KE9SZSkucG9wKCksbixpLG87Zm9yKENvPVtdLEthPW5ldyBBcnJheShlLmxlbmd0aCksVHY9bmV3IGNudCxyUz1uZXcgY250OzspaWYobz1UeixyJiYoIW98fHJbMV08by55fHxyWzFdPT09by55JiZyWzBdPG8ueCkpKHJbMF0hPT1ufHxyWzFdIT09aSkmJihTR3Qociksbj1yWzBdLGk9clsxXSkscj1lLnBvcCgpO2Vsc2UgaWYobyl3R3Qoby5hcmMpO2Vsc2UgYnJlYWs7aWYoZ0d0KCksdCl7dmFyIGE9K3RbMF1bMF0scz0rdFswXVsxXSxsPSt0WzFdWzBdLGM9K3RbMV1bMV07ZEd0KGEscyxsLGMpLF9HdChhLHMsbCxjKX10aGlzLmVkZ2VzPUNvLHRoaXMuY2VsbHM9S2EsVHY9clM9Q289S2E9bnVsbH12YXIgV3Isdkd0LFR2LEthLHJTLENvLGVTPU0oKCk9PntFR3QoKTtobnQoKTtmbnQoKTtFeigpO016KCk7V3I9MWUtNix2R3Q9MWUtMTI7bUEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjptQSxwb2x5Z29uczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMubWFwKGZ1bmN0aW9uKHQpe3ZhciByPXQuaGFsZmVkZ2VzLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gdW50KHQsZVtuXSl9KTtyZXR1cm4gci5kYXRhPXQuc2l0ZS5kYXRhLHJ9KX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goZnVuY3Rpb24ocixuKXtpZighIShzPShvPXIuaGFsZmVkZ2VzKS5sZW5ndGgpKWZvcih2YXIgaT1yLnNpdGUsbyxhPS0xLHMsbCxjPXRbb1tzLTFdXSx1PWMubGVmdD09PWk/Yy5yaWdodDpjLmxlZnQ7KythPHM7KWw9dSxjPXRbb1thXV0sdT1jLmxlZnQ9PT1pP2MucmlnaHQ6Yy5sZWZ0LGwmJnUmJm48bC5pbmRleCYmbjx1LmluZGV4JiZEUmUoaSxsLHUpPDAmJmUucHVzaChbaS5kYXRhLGwuZGF0YSx1LmRhdGFdKX0pLGV9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJpZ2h0fSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntzb3VyY2U6ZS5sZWZ0LmRhdGEsdGFyZ2V0OmUucmlnaHQuZGF0YX19KX0sZmluZDpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXRoaXMsaSxvPW4uX2ZvdW5kfHwwLGE9bi5jZWxscy5sZW5ndGgsczshKHM9bi5jZWxsc1tvXSk7KWlmKCsrbz49YSlyZXR1cm4gbnVsbDt2YXIgbD1lLXMuc2l0ZVswXSxjPXQtcy5zaXRlWzFdLHU9bCpsK2MqYztkbyBzPW4uY2VsbHNbaT1vXSxvPW51bGwscy5oYWxmZWRnZXMuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgZj1uLmVkZ2VzW2hdLHA9Zi5sZWZ0O2lmKCEoKHA9PT1zLnNpdGV8fCFwKSYmIShwPWYucmlnaHQpKSl7dmFyIGQ9ZS1wWzBdLGc9dC1wWzFdLF89ZCpkK2cqZztfPHUmJih1PV8sbz1wLmluZGV4KX19KTt3aGlsZShvIT09bnVsbCk7cmV0dXJuIG4uX2ZvdW5kPWkscj09bnVsbHx8dTw9cipyP3Muc2l0ZTpudWxsfX19KTtmdW5jdGlvbiBUR3QoKXt2YXIgZT11R3QsdD1oR3Qscj1udWxsO2Z1bmN0aW9uIG4oaSl7cmV0dXJuIG5ldyBtQShpLm1hcChmdW5jdGlvbihvLGEpe3ZhciBzPVtNYXRoLnJvdW5kKGUobyxhLGkpL1dyKSpXcixNYXRoLnJvdW5kKHQobyxhLGkpL1dyKSpXcl07cmV0dXJuIHMuaW5kZXg9YSxzLmRhdGE9byxzfSkscil9cmV0dXJuIG4ucG9seWdvbnM9ZnVuY3Rpb24oaSl7cmV0dXJuIG4oaSkucG9seWdvbnMoKX0sbi5saW5rcz1mdW5jdGlvbihpKXtyZXR1cm4gbihpKS5saW5rcygpfSxuLnRyaWFuZ2xlcz1mdW5jdGlvbihpKXtyZXR1cm4gbihpKS50cmlhbmdsZXMoKX0sbi54PWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6c250KCtpKSxuKTplfSxuLnk9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGk9PSJmdW5jdGlvbiI/aTpzbnQoK2kpLG4pOnR9LG4uZXh0ZW50PWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWk9PW51bGw/bnVsbDpbWytpWzBdWzBdLCtpWzBdWzFdXSxbK2lbMV1bMF0sK2lbMV1bMV1dXSxuKTpyJiZbW3JbMF1bMF0sclswXVsxXV0sW3JbMV1bMF0sclsxXVsxXV1dfSxuLnNpemU9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9aT09bnVsbD9udWxsOltbMCwwXSxbK2lbMF0sK2lbMV1dXSxuKTpyJiZbclsxXVswXS1yWzBdWzBdLHJbMV1bMV0tclswXVsxXV19LG59dmFyIENHdD1NKCgpPT57Y0d0KCk7Zkd0KCk7ZVMoKX0pO3ZhciBBR3Q9TSgoKT0+e0NHdCgpfSk7ZnVuY3Rpb24gSUd0KCl7Zm9yKHZhciBlPTAsdD1hcmd1bWVudHMubGVuZ3RoLHI9e30sbjtlPHQ7KytlKXtpZighKG49YXJndW1lbnRzW2VdKyIiKXx8biBpbiByfHwvW1xzLl0vLnRlc3QobikpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrbik7cltuXT1bXX1yZXR1cm4gbmV3IEN6KHIpfWZ1bmN0aW9uIEN6KGUpe3RoaXMuXz1lfWZ1bmN0aW9uIEZSZShlLHQpe3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24ocil7dmFyIG49IiIsaT1yLmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj1yLnNsaWNlKGkrMSkscj1yLnNsaWNlKDAsaSkpLHImJiF0Lmhhc093blByb3BlcnR5KHIpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3IpO3JldHVybnt0eXBlOnIsbmFtZTpufX0pfWZ1bmN0aW9uIEJSZShlLHQpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGgsaTtyPG47KytyKWlmKChpPWVbcl0pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlfWZ1bmN0aW9uIFBHdChlLHQscil7Zm9yKHZhciBuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWlmKGVbbl0ubmFtZT09PXQpe2Vbbl09elJlLGU9ZS5zbGljZSgwLG4pLmNvbmNhdChlLnNsaWNlKG4rMSkpO2JyZWFrfXJldHVybiByIT1udWxsJiZlLnB1c2goe25hbWU6dCx2YWx1ZTpyfSksZX12YXIgelJlLGdBLExHdD1NKCgpPT57elJlPXt2YWx1ZTpmdW5jdGlvbigpe319O0N6LnByb3RvdHlwZT1JR3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDeixvbjpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuXyxuPUZSZShlKyIiLHIpLGksbz0tMSxhPW4ubGVuZ3RoO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKDsrK288YTspaWYoKGk9KGU9bltvXSkudHlwZSkmJihpPUJSZShyW2ldLGUubmFtZSkpKXJldHVybiBpO3JldHVybn1pZih0IT1udWxsJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrdCk7Zm9yKDsrK288YTspaWYoaT0oZT1uW29dKS50eXBlKXJbaV09UEd0KHJbaV0sZS5uYW1lLHQpO2Vsc2UgaWYodD09bnVsbClmb3IoaSBpbiByKXJbaV09UEd0KHJbaV0sZS5uYW1lLG51bGwpO3JldHVybiB0aGlzfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIGU9e30sdD10aGlzLl87Zm9yKHZhciByIGluIHQpZVtyXT10W3JdLnNsaWNlKCk7cmV0dXJuIG5ldyBDeihlKX0sY2FsbDpmdW5jdGlvbihlLHQpe2lmKChpPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIHI9bmV3IEFycmF5KGkpLG49MCxpLG87bjxpOysrbilyW25dPWFyZ3VtZW50c1tuKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkoZSkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrZSk7Zm9yKG89dGhpcy5fW2VdLG49MCxpPW8ubGVuZ3RoO248aTsrK24pb1tuXS52YWx1ZS5hcHBseSh0LHIpfSxhcHBseTpmdW5jdGlvbihlLHQscil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShlKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIitlKTtmb3IodmFyIG49dGhpcy5fW2VdLGk9MCxvPW4ubGVuZ3RoO2k8bzsrK2kpbltpXS52YWx1ZS5hcHBseSh0LHIpfX07Z0E9SUd0fSk7dmFyIGRudD1NKCgpPT57TEd0KCl9KTt2YXIgQXosbW50LGdudD1NKCgpPT57QXo9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLG1udD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6QXoseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifX0pO2Z1bmN0aW9uIGhkKGUpe3ZhciB0PWUrPSIiLHI9dC5pbmRleE9mKCI6Iik7cmV0dXJuIHI+PTAmJih0PWUuc2xpY2UoMCxyKSkhPT0ieG1sbnMiJiYoZT1lLnNsaWNlKHIrMSkpLG1udC5oYXNPd25Qcm9wZXJ0eSh0KT97c3BhY2U6bW50W3RdLGxvY2FsOmV9OmV9dmFyIFB6PU0oKCk9PntnbnQoKX0pO2Z1bmN0aW9uIEhSZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLm93bmVyRG9jdW1lbnQscj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gcj09PUF6JiZ0LmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1Bej90LmNyZWF0ZUVsZW1lbnQoZSk6dC5jcmVhdGVFbGVtZW50TlMocixlKX19ZnVuY3Rpb24gVlJlKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuc3BhY2UsZS5sb2NhbCl9fWZ1bmN0aW9uIEl6KGUpe3ZhciB0PWhkKGUpO3JldHVybih0LmxvY2FsP1ZSZTpIUmUpKHQpfXZhciBfbnQ9TSgoKT0+e1B6KCk7Z250KCl9KTtmdW5jdGlvbiBVUmUoKXt9ZnVuY3Rpb24gQ3YoZSl7cmV0dXJuIGU9PW51bGw/VVJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihlKX19dmFyIEx6PU0oKCk9Pnt9KTtmdW5jdGlvbiBrR3QoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPUN2KGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpZm9yKHZhciBvPXRbaV0sYT1vLmxlbmd0aCxzPW5baV09bmV3IEFycmF5KGEpLGwsYyx1PTA7dTxhOysrdSkobD1vW3VdKSYmKGM9ZS5jYWxsKGwsbC5fX2RhdGFfXyx1LG8pKSYmKCJfX2RhdGFfXyJpbiBsJiYoYy5fX2RhdGFfXz1sLl9fZGF0YV9fKSxzW3VdPWMpO3JldHVybiBuZXcgZ2kobix0aGlzLl9wYXJlbnRzKX12YXIgUkd0PU0oKCk9PntEdSgpO0x6KCl9KTtmdW5jdGlvbiBxUmUoKXtyZXR1cm5bXX1mdW5jdGlvbiBfQShlKXtyZXR1cm4gZT09bnVsbD9xUmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKGUpfX12YXIgeW50PU0oKCk9Pnt9KTtmdW5jdGlvbiBOR3QoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPV9BKGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1bXSxpPVtdLG89MDtvPHI7KytvKWZvcih2YXIgYT10W29dLHM9YS5sZW5ndGgsbCxjPTA7YzxzOysrYykobD1hW2NdKSYmKG4ucHVzaChlLmNhbGwobCxsLl9fZGF0YV9fLGMsYSkpLGkucHVzaChsKSk7cmV0dXJuIG5ldyBnaShuLGkpfXZhciBER3Q9TSgoKT0+e0R1KCk7eW50KCl9KTtmdW5jdGlvbiB5QShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKGUpfX12YXIgdm50PU0oKCk9Pnt9KTtmdW5jdGlvbiBPR3QoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPXlBKGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpZm9yKHZhciBvPXRbaV0sYT1vLmxlbmd0aCxzPW5baV09W10sbCxjPTA7YzxhOysrYykobD1vW2NdKSYmZS5jYWxsKGwsbC5fX2RhdGFfXyxjLG8pJiZzLnB1c2gobCk7cmV0dXJuIG5ldyBnaShuLHRoaXMuX3BhcmVudHMpfXZhciB6R3Q9TSgoKT0+e0R1KCk7dm50KCl9KTtmdW5jdGlvbiBreihlKXtyZXR1cm4gbmV3IEFycmF5KGUubGVuZ3RoKX12YXIgeG50PU0oKCk9Pnt9KTtmdW5jdGlvbiBGR3QoKXtyZXR1cm4gbmV3IGdpKHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKGt6KSx0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiB2QShlLHQpe3RoaXMub3duZXJEb2N1bWVudD1lLm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9ZS5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD1lLHRoaXMuX19kYXRhX189dH12YXIgYm50PU0oKCk9Pnt4bnQoKTtEdSgpO3ZBLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dkEsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoZSx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoZSx0KX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IoZSl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKGUpfX19KTtmdW5jdGlvbiBCR3QoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBIR3Q9TSgoKT0+e30pO2Z1bmN0aW9uIEdSZShlLHQscixuLGksbyl7Zm9yKHZhciBhPTAscyxsPXQubGVuZ3RoLGM9by5sZW5ndGg7YTxjOysrYSkocz10W2FdKT8ocy5fX2RhdGFfXz1vW2FdLG5bYV09cyk6clthXT1uZXcgdkEoZSxvW2FdKTtmb3IoO2E8bDsrK2EpKHM9dFthXSkmJihpW2FdPXMpfWZ1bmN0aW9uIFdSZShlLHQscixuLGksbyxhKXt2YXIgcyxsLGM9e30sdT10Lmxlbmd0aCxoPW8ubGVuZ3RoLGY9bmV3IEFycmF5KHUpLHA7Zm9yKHM9MDtzPHU7KytzKShsPXRbc10pJiYoZltzXT1wPVZHdCthLmNhbGwobCxsLl9fZGF0YV9fLHMsdCkscCBpbiBjP2lbc109bDpjW3BdPWwpO2ZvcihzPTA7czxoOysrcylwPVZHdCthLmNhbGwoZSxvW3NdLHMsbyksKGw9Y1twXSk/KG5bc109bCxsLl9fZGF0YV9fPW9bc10sY1twXT1udWxsKTpyW3NdPW5ldyB2QShlLG9bc10pO2ZvcihzPTA7czx1OysrcykobD10W3NdKSYmY1tmW3NdXT09PWwmJihpW3NdPWwpfWZ1bmN0aW9uIFVHdChlLHQpe2lmKCFlKXJldHVybiBwPW5ldyBBcnJheSh0aGlzLnNpemUoKSksYz0tMSx0aGlzLmVhY2goZnVuY3Rpb24oUCl7cFsrK2NdPVB9KSxwO3ZhciByPXQ/V1JlOkdSZSxuPXRoaXMuX3BhcmVudHMsaT10aGlzLl9ncm91cHM7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPUJHdChlKSk7Zm9yKHZhciBvPWkubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9bmV3IEFycmF5KG8pLGM9MDtjPG87KytjKXt2YXIgdT1uW2NdLGg9aVtjXSxmPWgubGVuZ3RoLHA9ZS5jYWxsKHUsdSYmdS5fX2RhdGFfXyxjLG4pLGQ9cC5sZW5ndGgsZz1zW2NdPW5ldyBBcnJheShkKSxfPWFbY109bmV3IEFycmF5KGQpLHk9bFtjXT1uZXcgQXJyYXkoZik7cih1LGgsZyxfLHkscCx0KTtmb3IodmFyIHg9MCxiPTAsUyxDO3g8ZDsrK3gpaWYoUz1nW3hdKXtmb3IoeD49YiYmKGI9eCsxKTshKEM9X1tiXSkmJisrYjxkOyk7Uy5fbmV4dD1DfHxudWxsfX1yZXR1cm4gYT1uZXcgZ2koYSxuKSxhLl9lbnRlcj1zLGEuX2V4aXQ9bCxhfXZhciBWR3QscUd0PU0oKCk9PntEdSgpO2JudCgpO0hHdCgpO1ZHdD0iJCJ9KTtmdW5jdGlvbiBHR3QoKXtyZXR1cm4gbmV3IGdpKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoa3opLHRoaXMuX3BhcmVudHMpfXZhciBXR3Q9TSgoKT0+e3hudCgpO0R1KCl9KTtmdW5jdGlvbiBZR3QoZSx0LHIpe3ZhciBuPXRoaXMuZW50ZXIoKSxpPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gbj10eXBlb2YgZT09ImZ1bmN0aW9uIj9lKG4pOm4uYXBwZW5kKGUrIiIpLHQhPW51bGwmJihpPXQoaSkpLHI9PW51bGw/by5yZW1vdmUoKTpyKG8pLG4mJmk/bi5tZXJnZShpKS5vcmRlcigpOml9dmFyIGpHdD1NKCgpPT57fSk7ZnVuY3Rpb24gWEd0KGUpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj1lLl9ncm91cHMsbj10Lmxlbmd0aCxpPXIubGVuZ3RoLG89TWF0aC5taW4obixpKSxhPW5ldyBBcnJheShuKSxzPTA7czxvOysrcylmb3IodmFyIGw9dFtzXSxjPXJbc10sdT1sLmxlbmd0aCxoPWFbc109bmV3IEFycmF5KHUpLGYscD0wO3A8dTsrK3ApKGY9bFtwXXx8Y1twXSkmJihoW3BdPWYpO2Zvcig7czxuOysrcylhW3NdPXRbc107cmV0dXJuIG5ldyBnaShhLHRoaXMuX3BhcmVudHMpfXZhciAkR3Q9TSgoKT0+e0R1KCl9KTtmdW5jdGlvbiBLR3QoKXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHQ9LTEscj1lLmxlbmd0aDsrK3Q8cjspZm9yKHZhciBuPWVbdF0saT1uLmxlbmd0aC0xLG89bltpXSxhOy0taT49MDspKGE9bltpXSkmJihvJiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG8pXjQmJm8ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxvKSxvPWEpO3JldHVybiB0aGlzfXZhciBaR3Q9TSgoKT0+e30pO2Z1bmN0aW9uIEpHdChlKXtlfHwoZT1ZUmUpO2Z1bmN0aW9uIHQoaCxmKXtyZXR1cm4gaCYmZj9lKGguX19kYXRhX18sZi5fX2RhdGFfXyk6IWgtIWZ9Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxuPXIubGVuZ3RoLGk9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXtmb3IodmFyIGE9cltvXSxzPWEubGVuZ3RoLGw9aVtvXT1uZXcgQXJyYXkocyksYyx1PTA7dTxzOysrdSkoYz1hW3VdKSYmKGxbdV09Yyk7bC5zb3J0KHQpfXJldHVybiBuZXcgZ2koaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfWZ1bmN0aW9uIFlSZShlLHQpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn12YXIgUUd0PU0oKCk9PntEdSgpfSk7ZnVuY3Rpb24gdFd0KCl7dmFyIGU9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyxlLmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfXZhciBlV3Q9TSgoKT0+e30pO2Z1bmN0aW9uIHJXdCgpe3ZhciBlPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdD0tMTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZVsrK3RdPXRoaXN9KSxlfXZhciBuV3Q9TSgoKT0+e30pO2Z1bmN0aW9uIGlXdCgpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClmb3IodmFyIG49ZVt0XSxpPTAsbz1uLmxlbmd0aDtpPG87KytpKXt2YXIgYT1uW2ldO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9dmFyIG9XdD1NKCgpPT57fSk7ZnVuY3Rpb24gYVd0KCl7dmFyIGU9MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KytlfSksZX12YXIgc1d0PU0oKCk9Pnt9KTtmdW5jdGlvbiBsV3QoKXtyZXR1cm4hdGhpcy5ub2RlKCl9dmFyIGNXdD1NKCgpPT57fSk7ZnVuY3Rpb24gdVd0KGUpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj0wLG49dC5sZW5ndGg7cjxuOysrcilmb3IodmFyIGk9dFtyXSxvPTAsYT1pLmxlbmd0aCxzO288YTsrK28pKHM9aVtvXSkmJmUuY2FsbChzLHMuX19kYXRhX18sbyxpKTtyZXR1cm4gdGhpc312YXIgaFd0PU0oKCk9Pnt9KTtmdW5jdGlvbiBqUmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9fWZ1bmN0aW9uIFhSZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCl9fWZ1bmN0aW9uICRSZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKGUsdCl9fWZ1bmN0aW9uIEtSZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHQpfX1mdW5jdGlvbiBaUmUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyPT1udWxsP3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpOnRoaXMuc2V0QXR0cmlidXRlKGUscil9fWZ1bmN0aW9uIEpSZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3I9PW51bGw/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHIpfX1mdW5jdGlvbiBmV3QoZSx0KXt2YXIgcj1oZChlKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBuPXRoaXMubm9kZSgpO3JldHVybiByLmxvY2FsP24uZ2V0QXR0cmlidXRlTlMoci5zcGFjZSxyLmxvY2FsKTpuLmdldEF0dHJpYnV0ZShyKX1yZXR1cm4gdGhpcy5lYWNoKCh0PT1udWxsP3IubG9jYWw/WFJlOmpSZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj9yLmxvY2FsP0pSZTpaUmU6ci5sb2NhbD9LUmU6JFJlKShyLHQpKX12YXIgcFd0PU0oKCk9PntQeigpfSk7ZnVuY3Rpb24gUnooZSl7cmV0dXJuIGUub3duZXJEb2N1bWVudCYmZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHxlLmRvY3VtZW50JiZlfHxlLmRlZmF1bHRWaWV3fXZhciB3bnQ9TSgoKT0+e30pO2Z1bmN0aW9uIFFSZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpfX1mdW5jdGlvbiB0TmUoZSx0LHIpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkoZSx0LHIpfX1mdW5jdGlvbiBlTmUoZSx0LHIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO249PW51bGw/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KGUsbixyKX19ZnVuY3Rpb24gZFd0KGUsdCxyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgodD09bnVsbD9RUmU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/ZU5lOnROZSkoZSx0LHI9PW51bGw/IiI6cikpOlVnKHRoaXMubm9kZSgpLGUpfWZ1bmN0aW9uIFVnKGUsdCl7cmV0dXJuIGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSh0KXx8UnooZSkuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpLmdldFByb3BlcnR5VmFsdWUodCl9dmFyIFNudD1NKCgpPT57d250KCl9KTtmdW5jdGlvbiByTmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbZV19fWZ1bmN0aW9uIG5OZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbZV09dH19ZnVuY3Rpb24gaU5lKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD9kZWxldGUgdGhpc1tlXTp0aGlzW2VdPXJ9fWZ1bmN0aW9uIG1XdChlLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKCh0PT1udWxsP3JOZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj9pTmU6bk5lKShlLHQpKTp0aGlzLm5vZGUoKVtlXX12YXIgZ1d0PU0oKCk9Pnt9KTtmdW5jdGlvbiBfV3QoZSl7cmV0dXJuIGUudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIE1udChlKXtyZXR1cm4gZS5jbGFzc0xpc3R8fG5ldyB5V3QoZSl9ZnVuY3Rpb24geVd0KGUpe3RoaXMuX25vZGU9ZSx0aGlzLl9uYW1lcz1fV3QoZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiB2V3QoZSx0KXtmb3IodmFyIHI9TW50KGUpLG49LTEsaT10Lmxlbmd0aDsrK248aTspci5hZGQodFtuXSl9ZnVuY3Rpb24geFd0KGUsdCl7Zm9yKHZhciByPU1udChlKSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KXIucmVtb3ZlKHRbbl0pfWZ1bmN0aW9uIG9OZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2V3QodGhpcyxlKX19ZnVuY3Rpb24gYU5lKGUpe3JldHVybiBmdW5jdGlvbigpe3hXdCh0aGlzLGUpfX1mdW5jdGlvbiBzTmUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXsodC5hcHBseSh0aGlzLGFyZ3VtZW50cyk/dld0OnhXdCkodGhpcyxlKX19ZnVuY3Rpb24gYld0KGUsdCl7dmFyIHI9X1d0KGUrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBuPU1udCh0aGlzLm5vZGUoKSksaT0tMSxvPXIubGVuZ3RoOysraTxvOylpZighbi5jb250YWlucyhyW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9zTmU6dD9vTmU6YU5lKShyLHQpKX12YXIgd1d0PU0oKCk9Pnt5V3QucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fbmFtZXMuaW5kZXhPZihlKTt0PDAmJih0aGlzLl9uYW1lcy5wdXNoKGUpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9uYW1lcy5pbmRleE9mKGUpO3Q+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UodCwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZihlKT49MH19fSk7ZnVuY3Rpb24gbE5lKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBjTmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1lfX1mdW5jdGlvbiB1TmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIFNXdChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZT09bnVsbD9sTmU6KHR5cGVvZiBlPT0iZnVuY3Rpb24iP3VOZTpjTmUpKGUpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH12YXIgTVd0PU0oKCk9Pnt9KTtmdW5jdGlvbiBoTmUoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBmTmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9ZX19ZnVuY3Rpb24gcE5lKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPXQ9PW51bGw/IiI6dH19ZnVuY3Rpb24gRVd0KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChlPT1udWxsP2hOZToodHlwZW9mIGU9PSJmdW5jdGlvbiI/cE5lOmZOZSkoZSkpOnRoaXMubm9kZSgpLmlubmVySFRNTH12YXIgVFd0PU0oKCk9Pnt9KTtmdW5jdGlvbiBkTmUoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gQ1d0KCl7cmV0dXJuIHRoaXMuZWFjaChkTmUpfXZhciBBV3Q9TSgoKT0+e30pO2Z1bmN0aW9uIG1OZSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIFBXdCgpe3JldHVybiB0aGlzLmVhY2gobU5lKX12YXIgSVd0PU0oKCk9Pnt9KTtmdW5jdGlvbiBMV3QoZSl7dmFyIHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpJeihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZCh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX12YXIga1d0PU0oKCk9PntfbnQoKX0pO2Z1bmN0aW9uIGdOZSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIFJXdChlLHQpe3ZhciByPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6SXooZSksbj10PT1udWxsP2dOZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OkN2KHQpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KX12YXIgTld0PU0oKCk9PntfbnQoKTtMeigpfSk7ZnVuY3Rpb24gX05lKCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlO2UmJmUucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gRFd0KCl7cmV0dXJuIHRoaXMuZWFjaChfTmUpfXZhciBPV3Q9TSgoKT0+e30pO2Z1bmN0aW9uIHlOZSgpe3ZhciBlPXRoaXMuY2xvbmVOb2RlKCExKSx0PXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gdD90Lmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpOmV9ZnVuY3Rpb24gdk5lKCl7dmFyIGU9dGhpcy5jbG9uZU5vZGUoITApLHQ9dGhpcy5wYXJlbnROb2RlO3JldHVybiB0P3QuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyk6ZX1mdW5jdGlvbiB6V3QoZSl7cmV0dXJuIHRoaXMuc2VsZWN0KGU/dk5lOnlOZSl9dmFyIEZXdD1NKCgpPT57fSk7ZnVuY3Rpb24gQld0KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIixlKTp0aGlzLm5vZGUoKS5fX2RhdGFfX312YXIgSFd0PU0oKCk9Pnt9KTtmdW5jdGlvbiB4TmUoZSx0LHIpe3JldHVybiBlPXFXdChlLHQsciksZnVuY3Rpb24obil7dmFyIGk9bi5yZWxhdGVkVGFyZ2V0OyghaXx8aSE9PXRoaXMmJiEoaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSY4KSkmJmUuY2FsbCh0aGlzLG4pfX1mdW5jdGlvbiBxV3QoZSx0LHIpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1ZcjtZcj1uO3RyeXtlLmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLHQscil9ZmluYWxseXtZcj1pfX19ZnVuY3Rpb24gYk5lKGUpe3JldHVybiBlLnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24odCl7dmFyIHI9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKHI9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6cn19KX1mdW5jdGlvbiB3TmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX29uO2lmKCEhdCl7Zm9yKHZhciByPTAsbj0tMSxpPXQubGVuZ3RoLG87cjxpOysrcilvPXRbcl0sKCFlLnR5cGV8fG8udHlwZT09PWUudHlwZSkmJm8ubmFtZT09PWUubmFtZT90aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoby50eXBlLG8ubGlzdGVuZXIsby5jYXB0dXJlKTp0Wysrbl09bzsrK24/dC5sZW5ndGg9bjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gU05lKGUsdCxyKXt2YXIgbj1VV3QuaGFzT3duUHJvcGVydHkoZS50eXBlKT94TmU6cVd0O3JldHVybiBmdW5jdGlvbihpLG8sYSl7dmFyIHM9dGhpcy5fX29uLGwsYz1uKHQsbyxhKTtpZihzKXtmb3IodmFyIHU9MCxoPXMubGVuZ3RoO3U8aDsrK3UpaWYoKGw9c1t1XSkudHlwZT09PWUudHlwZSYmbC5uYW1lPT09ZS5uYW1lKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobC50eXBlLGwubGlzdGVuZXIsbC5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobC50eXBlLGwubGlzdGVuZXI9YyxsLmNhcHR1cmU9ciksbC52YWx1ZT10O3JldHVybn19dGhpcy5hZGRFdmVudExpc3RlbmVyKGUudHlwZSxjLHIpLGw9e3R5cGU6ZS50eXBlLG5hbWU6ZS5uYW1lLHZhbHVlOnQsbGlzdGVuZXI6YyxjYXB0dXJlOnJ9LHM/cy5wdXNoKGwpOnRoaXMuX19vbj1bbF19fWZ1bmN0aW9uIEdXdChlLHQscil7dmFyIG49Yk5lKGUrIiIpLGksbz1uLmxlbmd0aCxhO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKXtmb3IodmFyIGw9MCxjPXMubGVuZ3RoLHU7bDxjOysrbClmb3IoaT0wLHU9c1tsXTtpPG87KytpKWlmKChhPW5baV0pLnR5cGU9PT11LnR5cGUmJmEubmFtZT09PXUubmFtZSlyZXR1cm4gdS52YWx1ZX1yZXR1cm59Zm9yKHM9dD9TTmU6d05lLHI9PW51bGwmJihyPSExKSxpPTA7aTxvOysraSl0aGlzLmVhY2gocyhuW2ldLHQscikpO3JldHVybiB0aGlzfWZ1bmN0aW9uIEVudChlLHQscixuKXt2YXIgaT1ZcjtlLnNvdXJjZUV2ZW50PVlyLFlyPWU7dHJ5e3JldHVybiB0LmFwcGx5KHIsbil9ZmluYWxseXtZcj1pfX12YXIgVVd0LFlyLFZXdCxOej1NKCgpPT57VVd0PXt9LFlyPW51bGw7dHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIiYmKFZXdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIm9ubW91c2VlbnRlciJpbiBWV3R8fChVV3Q9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpfSk7ZnVuY3Rpb24gV1d0KGUsdCxyKXt2YXIgbj1SeihlKSxpPW4uQ3VzdG9tRXZlbnQ7dHlwZW9mIGk9PSJmdW5jdGlvbiI/aT1uZXcgaSh0LHIpOihpPW4uZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iikscj8oaS5pbml0RXZlbnQodCxyLmJ1YmJsZXMsci5jYW5jZWxhYmxlKSxpLmRldGFpbD1yLmRldGFpbCk6aS5pbml0RXZlbnQodCwhMSwhMSkpLGUuZGlzcGF0Y2hFdmVudChpKX1mdW5jdGlvbiBNTmUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gV1d0KHRoaXMsZSx0KX19ZnVuY3Rpb24gRU5lKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFdXdCh0aGlzLGUsdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBZV3QoZSx0KXtyZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9FTmU6TU5lKShlLHQpKX12YXIgald0PU0oKCk9Pnt3bnQoKX0pO2Z1bmN0aW9uIGdpKGUsdCl7dGhpcy5fZ3JvdXBzPWUsdGhpcy5fcGFyZW50cz10fWZ1bmN0aW9uIFhXdCgpe3JldHVybiBuZXcgZ2koW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxUbnQpfXZhciBUbnQsZmQsRHU9TSgoKT0+e1JHdCgpO0RHdCgpO3pHdCgpO3FHdCgpO2JudCgpO1dHdCgpO2pHdCgpOyRHdCgpO1pHdCgpO1FHdCgpO2VXdCgpO25XdCgpO29XdCgpO3NXdCgpO2NXdCgpO2hXdCgpO3BXdCgpO1NudCgpO2dXdCgpO3dXdCgpO01XdCgpO1RXdCgpO0FXdCgpO0lXdCgpO2tXdCgpO05XdCgpO09XdCgpO0ZXdCgpO0hXdCgpO056KCk7ald0KCk7VG50PVtudWxsXTtnaS5wcm90b3R5cGU9WFd0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6Z2ksc2VsZWN0OmtHdCxzZWxlY3RBbGw6Tkd0LGZpbHRlcjpPR3QsZGF0YTpVR3QsZW50ZXI6Rkd0LGV4aXQ6R0d0LGpvaW46WUd0LG1lcmdlOlhHdCxvcmRlcjpLR3Qsc29ydDpKR3QsY2FsbDp0V3Qsbm9kZXM6cld0LG5vZGU6aVd0LHNpemU6YVd0LGVtcHR5OmxXdCxlYWNoOnVXdCxhdHRyOmZXdCxzdHlsZTpkV3QscHJvcGVydHk6bVd0LGNsYXNzZWQ6Yld0LHRleHQ6U1d0LGh0bWw6RVd0LHJhaXNlOkNXdCxsb3dlcjpQV3QsYXBwZW5kOkxXdCxpbnNlcnQ6Uld0LHJlbW92ZTpEV3QsY2xvbmU6eld0LGRhdHVtOkJXdCxvbjpHV3QsZGlzcGF0Y2g6WVd0fTtmZD1YV3R9KTtmdW5jdGlvbiBwZChlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP25ldyBnaShbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IGdpKFtbZV1dLFRudCl9dmFyICRXdD1NKCgpPT57RHUoKX0pO2Z1bmN0aW9uIER6KCl7Zm9yKHZhciBlPVlyLHQ7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9dmFyIENudD1NKCgpPT57TnooKX0pO2Z1bmN0aW9uIE96KGUsdCl7dmFyIHI9ZS5vd25lclNWR0VsZW1lbnR8fGU7aWYoci5jcmVhdGVTVkdQb2ludCl7dmFyIG49ci5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBuLng9dC5jbGllbnRYLG4ueT10LmNsaWVudFksbj1uLm1hdHJpeFRyYW5zZm9ybShlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW24ueCxuLnldfXZhciBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3QuY2xpZW50WC1pLmxlZnQtZS5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1lLmNsaWVudFRvcF19dmFyIEFudD1NKCgpPT57fSk7ZnVuY3Rpb24gblMoZSl7dmFyIHQ9RHooKTtyZXR1cm4gdC5jaGFuZ2VkVG91Y2hlcyYmKHQ9dC5jaGFuZ2VkVG91Y2hlc1swXSksT3ooZSx0KX12YXIgS1d0PU0oKCk9PntDbnQoKTtBbnQoKX0pO2Z1bmN0aW9uIHp6KGUsdCxyKXthcmd1bWVudHMubGVuZ3RoPDMmJihyPXQsdD1EeigpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIG49MCxpPXQ/dC5sZW5ndGg6MCxvO248aTsrK24paWYoKG89dFtuXSkuaWRlbnRpZmllcj09PXIpcmV0dXJuIE96KGUsbyk7cmV0dXJuIG51bGx9dmFyIFpXdD1NKCgpPT57Q250KCk7QW50KCl9KTt2YXIgUHM9TSgoKT0+e3ZudCgpO0tXdCgpO1B6KCk7JFd0KCk7RHUoKTtMeigpO3ludCgpO1NudCgpO1pXdCgpO056KCl9KTtmdW5jdGlvbiBGeigpe1lyLnByZXZlbnREZWZhdWx0KCksWXIuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIEpXdD1NKCgpPT57UHMoKX0pO2Z1bmN0aW9uIFBudChlKXt2YXIgdD1lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxyPXBkKGUpLm9uKCJkcmFnc3RhcnQuZHJhZyIsRnosITApOyJvbnNlbGVjdHN0YXJ0ImluIHQ/ci5vbigic2VsZWN0c3RhcnQuZHJhZyIsRnosITApOih0Ll9fbm9zZWxlY3Q9dC5zdHlsZS5Nb3pVc2VyU2VsZWN0LHQuc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfWZ1bmN0aW9uIEludChlLHQpe3ZhciByPWUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49cGQoZSkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTt0JiYobi5vbigiY2xpY2suZHJhZyIsRnosITApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLm9uKCJjbGljay5kcmFnIixudWxsKX0sMCkpLCJvbnNlbGVjdHN0YXJ0ImluIHI/bi5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KHIuc3R5bGUuTW96VXNlclNlbGVjdD1yLl9fbm9zZWxlY3QsZGVsZXRlIHIuX19ub3NlbGVjdCl9dmFyIFFXdD1NKCgpPT57UHMoKTtKV3QoKX0pO3ZhciB0WXQ9TSgoKT0+e1FXdCgpfSk7ZnVuY3Rpb24gQnooZSx0LHIpe2UucHJvdG90eXBlPXQucHJvdG90eXBlPXIsci5jb25zdHJ1Y3Rvcj1lfWZ1bmN0aW9uIExudChlLHQpe3ZhciByPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUpO2Zvcih2YXIgbiBpbiB0KXJbbl09dFtuXTtyZXR1cm4gcn12YXIgZVl0PU0oKCk9Pnt9KTtmdW5jdGlvbiB3QSgpe31mdW5jdGlvbiBuWXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBSTmUoKXtyZXR1cm4gY1l0KHRoaXMpLmZvcm1hdEhzbCgpfWZ1bmN0aW9uIGlZdCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIHFnKGUpe3ZhciB0LHI7cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PVROZS5leGVjKGUpKT8ocj10WzFdLmxlbmd0aCx0PXBhcnNlSW50KHRbMV0sMTYpLHI9PT02P29ZdCh0KTpyPT09Mz9uZXcgbWwodD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCh0JjE1KTw8NHx0JjE1LDEpOnI9PT04P0h6KHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsKHQmMjU1KS8yNTUpOnI9PT00P0h6KHQ+PjEyJjE1fHQ+PjgmMjQwLHQ+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXx0JjI0MCwoKHQmMTUpPDw0fHQmMTUpLzI1NSk6bnVsbCk6KHQ9Q05lLmV4ZWMoZSkpP25ldyBtbCh0WzFdLHRbMl0sdFszXSwxKToodD1BTmUuZXhlYyhlKSk/bmV3IG1sKHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLDEpOih0PVBOZS5leGVjKGUpKT9Ieih0WzFdLHRbMl0sdFszXSx0WzRdKToodD1JTmUuZXhlYyhlKSk/SHoodFsxXSoyNTUvMTAwLHRbMl0qMjU1LzEwMCx0WzNdKjI1NS8xMDAsdFs0XSk6KHQ9TE5lLmV4ZWMoZSkpP2xZdCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLDEpOih0PWtOZS5leGVjKGUpKT9sWXQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCx0WzRdKTpyWXQuaGFzT3duUHJvcGVydHkoZSk/b1l0KHJZdFtlXSk6ZT09PSJ0cmFuc3BhcmVudCI/bmV3IG1sKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gb1l0KGUpe3JldHVybiBuZXcgbWwoZT4+MTYmMjU1LGU+PjgmMjU1LGUmMjU1LDEpfWZ1bmN0aW9uIEh6KGUsdCxyLG4pe3JldHVybiBuPD0wJiYoZT10PXI9TmFOKSxuZXcgbWwoZSx0LHIsbil9ZnVuY3Rpb24gTk5lKGUpe3JldHVybiBlIGluc3RhbmNlb2Ygd0F8fChlPXFnKGUpKSxlPyhlPWUucmdiKCksbmV3IG1sKGUucixlLmcsZS5iLGUub3BhY2l0eSkpOm5ldyBtbH1mdW5jdGlvbiBvUyhlLHQscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/Tk5lKGUpOm5ldyBtbChlLHQscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gbWwoZSx0LHIsbil7dGhpcy5yPStlLHRoaXMuZz0rdCx0aGlzLmI9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIGFZdCgpe3JldHVybiIjIitrbnQodGhpcy5yKStrbnQodGhpcy5nKStrbnQodGhpcy5iKX1mdW5jdGlvbiBzWXQoKXt2YXIgZT10aGlzLm9wYWNpdHk7cmV0dXJuIGU9aXNOYU4oZSk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLChlPT09MT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKyhlPT09MT8iKSI6IiwgIitlKyIpIil9ZnVuY3Rpb24ga250KGUpe3JldHVybiBlPU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoZSl8fDApKSwoZTwxNj8iMCI6IiIpK2UudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGxZdChlLHQscixuKXtyZXR1cm4gbjw9MD9lPXQ9cj1OYU46cjw9MHx8cj49MT9lPXQ9TmFOOnQ8PTAmJihlPU5hTiksbmV3IFRmKGUsdCxyLG4pfWZ1bmN0aW9uIGNZdChlKXtpZihlIGluc3RhbmNlb2YgVGYpcmV0dXJuIG5ldyBUZihlLmgsZS5zLGUubCxlLm9wYWNpdHkpO2lmKGUgaW5zdGFuY2VvZiB3QXx8KGU9cWcoZSkpLCFlKXJldHVybiBuZXcgVGY7aWYoZSBpbnN0YW5jZW9mIFRmKXJldHVybiBlO2U9ZS5yZ2IoKTt2YXIgdD1lLnIvMjU1LHI9ZS5nLzI1NSxuPWUuYi8yNTUsaT1NYXRoLm1pbih0LHIsbiksbz1NYXRoLm1heCh0LHIsbiksYT1OYU4scz1vLWksbD0obytpKS8yO3JldHVybiBzPyh0PT09bz9hPShyLW4pL3MrKHI8bikqNjpyPT09bz9hPShuLXQpL3MrMjphPSh0LXIpL3MrNCxzLz1sPC41P28raToyLW8taSxhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IFRmKGEscyxsLGUub3BhY2l0eSl9ZnVuY3Rpb24gdVl0KGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9jWXQoZSk6bmV3IFRmKGUsdCxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBUZihlLHQscixuKXt0aGlzLmg9K2UsdGhpcy5zPSt0LHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gUm50KGUsdCxyKXtyZXR1cm4oZTw2MD90KyhyLXQpKmUvNjA6ZTwxODA/cjplPDI0MD90KyhyLXQpKigyNDAtZSkvNjA6dCkqMjU1fXZhciB4QSxWeixpUyxiQSxDZixUTmUsQ05lLEFOZSxQTmUsSU5lLExOZSxrTmUscll0LGhZdD1NKCgpPT57ZVl0KCk7eEE9LjcsVno9MS94QSxpUz0iXFxzKihbKy1dP1xcZCspXFxzKiIsYkE9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsQ2Y9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLFROZT0vXiMoWzAtOWEtZl17Myw4fSkkLyxDTmU9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2lTLGlTLGlTXSsiXFwpJCIpLEFOZT1uZXcgUmVnRXhwKCJecmdiXFwoIitbQ2YsQ2YsQ2ZdKyJcXCkkIiksUE5lPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbaVMsaVMsaVMsYkFdKyJcXCkkIiksSU5lPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbQ2YsQ2YsQ2YsYkFdKyJcXCkkIiksTE5lPW5ldyBSZWdFeHAoIl5oc2xcXCgiK1tiQSxDZixDZl0rIlxcKSQiKSxrTmU9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tiQSxDZixDZixiQV0rIlxcKSQiKSxyWXQ9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07Qnood0EscWcse2NvcHk6ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyxlKX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6bll0LGZvcm1hdEhleDpuWXQsZm9ybWF0SHNsOlJOZSxmb3JtYXRSZ2I6aVl0LHRvU3RyaW5nOmlZdH0pO0J6KG1sLG9TLExudCh3QSx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9WejpNYXRoLnBvdyhWeixlKSxuZXcgbWwodGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/eEE6TWF0aC5wb3coeEEsZSksbmV3IG1sKHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6YVl0LGZvcm1hdEhleDphWXQsZm9ybWF0UmdiOnNZdCx0b1N0cmluZzpzWXR9KSk7QnooVGYsdVl0LExudCh3QSx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9WejpNYXRoLnBvdyhWeixlKSxuZXcgVGYodGhpcy5oLHRoaXMucyx0aGlzLmwqZSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD94QTpNYXRoLnBvdyh4QSxlKSxuZXcgVGYodGhpcy5oLHRoaXMucyx0aGlzLmwqZSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmglMzYwKyh0aGlzLmg8MCkqMzYwLHQ9aXNOYU4oZSl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMscj10aGlzLmwsbj1yKyhyPC41P3I6MS1yKSp0LGk9MipyLW47cmV0dXJuIG5ldyBtbChSbnQoZT49MjQwP2UtMjQwOmUrMTIwLGksbiksUm50KGUsaSxuKSxSbnQoZTwxMjA/ZSsyNDA6ZS0xMjAsaSxuKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcGFjaXR5O3JldHVybiBlPWlzTmFOKGUpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKSwoZT09PTE/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrKHRoaXMuc3x8MCkqMTAwKyIlLCAiKyh0aGlzLmx8fDApKjEwMCsiJSIrKGU9PT0xPyIpIjoiLCAiK2UrIikiKX19KSl9KTt2YXIgTm50PU0oKCk9PntoWXQoKX0pO2Z1bmN0aW9uIERudChlLHQscixuLGkpe3ZhciBvPWUqZSxhPW8qZTtyZXR1cm4oKDEtMyplKzMqby1hKSp0Kyg0LTYqbyszKmEpKnIrKDErMyplKzMqby0zKmEpKm4rYSppKS82fWZ1bmN0aW9uIGZZdChlKXt2YXIgdD1lLmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1yPD0wP3I9MDpyPj0xPyhyPTEsdC0xKTpNYXRoLmZsb29yKHIqdCksaT1lW25dLG89ZVtuKzFdLGE9bj4wP2Vbbi0xXToyKmktbyxzPW48dC0xP2VbbisyXToyKm8taTtyZXR1cm4gRG50KChyLW4vdCkqdCxhLGksbyxzKX19dmFyIE9udD1NKCgpPT57fSk7ZnVuY3Rpb24gcFl0KGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1NYXRoLmZsb29yKCgociU9MSk8MD8rK3I6cikqdCksaT1lWyhuK3QtMSkldF0sbz1lW24ldF0sYT1lWyhuKzEpJXRdLHM9ZVsobisyKSV0XTtyZXR1cm4gRG50KChyLW4vdCkqdCxpLG8sYSxzKX19dmFyIGRZdD1NKCgpPT57T250KCl9KTtmdW5jdGlvbiB6bnQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBtWXQ9TSgoKT0+e30pO2Z1bmN0aW9uIEROZShlLHQpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gZStyKnR9fWZ1bmN0aW9uIE9OZShlLHQscil7cmV0dXJuIGU9TWF0aC5wb3coZSxyKSx0PU1hdGgucG93KHQsciktZSxyPTEvcixmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3coZStuKnQscil9fWZ1bmN0aW9uIGdZdChlKXtyZXR1cm4oZT0rZSk9PTE/VXo6ZnVuY3Rpb24odCxyKXtyZXR1cm4gci10P09OZSh0LHIsZSk6em50KGlzTmFOKHQpP3I6dCl9fWZ1bmN0aW9uIFV6KGUsdCl7dmFyIHI9dC1lO3JldHVybiByP0ROZShlLHIpOnpudChpc05hTihlKT90OmUpfXZhciBfWXQ9TSgoKT0+e21ZdCgpfSk7ZnVuY3Rpb24geVl0KGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPW5ldyBBcnJheShyKSxvPW5ldyBBcnJheShyKSxhLHM7Zm9yKGE9MDthPHI7KythKXM9b1ModFthXSksblthXT1zLnJ8fDAsaVthXT1zLmd8fDAsb1thXT1zLmJ8fDA7cmV0dXJuIG49ZShuKSxpPWUoaSksbz1lKG8pLHMub3BhY2l0eT0xLGZ1bmN0aW9uKGwpe3JldHVybiBzLnI9bihsKSxzLmc9aShsKSxzLmI9byhsKSxzKyIifX19dmFyIHF6LHpOZSxGTmUsdll0PU0oKCk9PntObnQoKTtPbnQoKTtkWXQoKTtfWXQoKTtxej1mdW5jdGlvbiBlKHQpe3ZhciByPWdZdCh0KTtmdW5jdGlvbiBuKGksbyl7dmFyIGE9cigoaT1vUyhpKSkuciwobz1vUyhvKSkucikscz1yKGkuZyxvLmcpLGw9cihpLmIsby5iKSxjPVV6KGkub3BhY2l0eSxvLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gaS5yPWEodSksaS5nPXModSksaS5iPWwodSksaS5vcGFjaXR5PWModSksaSsiIn19cmV0dXJuIG4uZ2FtbWE9ZSxufSgxKTt6TmU9eVl0KGZZdCksRk5lPXlZdChwWXQpfSk7ZnVuY3Rpb24gQWMoZSx0KXtyZXR1cm4gZT0rZSx0PSt0LGZ1bmN0aW9uKHIpe3JldHVybiBlKigxLXIpK3Qqcn19dmFyIEd6PU0oKCk9Pnt9KTtmdW5jdGlvbiBCTmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fWZ1bmN0aW9uIEhOZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodCkrIiJ9fWZ1bmN0aW9uIEhudChlLHQpe3ZhciByPUJudC5sYXN0SW5kZXg9Rm50Lmxhc3RJbmRleD0wLG4saSxvLGE9LTEscz1bXSxsPVtdO2ZvcihlPWUrIiIsdD10KyIiOyhuPUJudC5leGVjKGUpKSYmKGk9Rm50LmV4ZWModCkpOykobz1pLmluZGV4KT5yJiYobz10LnNsaWNlKHIsbyksc1thXT9zW2FdKz1vOnNbKythXT1vKSwobj1uWzBdKT09PShpPWlbMF0pP3NbYV0/c1thXSs9aTpzWysrYV09aTooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpBYyhuLGkpfSkpLHI9Rm50Lmxhc3RJbmRleDtyZXR1cm4gcjx0Lmxlbmd0aCYmKG89dC5zbGljZShyKSxzW2FdP3NbYV0rPW86c1srK2FdPW8pLHMubGVuZ3RoPDI/bFswXT9ITmUobFswXS54KTpCTmUodCk6KHQ9bC5sZW5ndGgsZnVuY3Rpb24oYyl7Zm9yKHZhciB1PTAsaDt1PHQ7Kyt1KXNbKGg9bFt1XSkuaV09aC54KGMpO3JldHVybiBzLmpvaW4oIiIpfSl9dmFyIEJudCxGbnQseFl0PU0oKCk9PntHeigpO0JudD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csRm50PW5ldyBSZWdFeHAoQm50LnNvdXJjZSwiZyIpfSk7ZnVuY3Rpb24gVm50KGUsdCxyLG4saSxvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KGUqZSt0KnQpKSYmKGUvPWEsdC89YSksKGw9ZSpyK3QqbikmJihyLT1lKmwsbi09dCpsKSwocz1NYXRoLnNxcnQocipyK24qbikpJiYoci89cyxuLz1zLGwvPXMpLGUqbjx0KnImJihlPS1lLHQ9LXQsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDppLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMih0LGUpKmJZdCxza2V3WDpNYXRoLmF0YW4obCkqYll0LHNjYWxlWDphLHNjYWxlWTpzfX12YXIgYll0LFd6LHdZdD1NKCgpPT57Yll0PTE4MC9NYXRoLlBJLFd6PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9fSk7ZnVuY3Rpb24gTVl0KGUpe3JldHVybiBlPT09Im5vbmUiP1d6OihTQXx8KFNBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLFVudD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsU1l0PWRvY3VtZW50LmRlZmF1bHRWaWV3KSxTQS5zdHlsZS50cmFuc2Zvcm09ZSxlPVNZdC5nZXRDb21wdXRlZFN0eWxlKFVudC5hcHBlbmRDaGlsZChTQSksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksVW50LnJlbW92ZUNoaWxkKFNBKSxlPWUuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSxWbnQoK2VbMF0sK2VbMV0sK2VbMl0sK2VbM10sK2VbNF0sK2VbNV0pKX1mdW5jdGlvbiBFWXQoZSl7cmV0dXJuIGU9PW51bGw/V3o6KFl6fHwoWXo9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksWXouc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLGUpLChlPVl6LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpPyhlPWUubWF0cml4LFZudChlLmEsZS5iLGUuYyxlLmQsZS5lLGUuZikpOld6KX12YXIgU0EsVW50LFNZdCxZeixUWXQ9TSgoKT0+e3dZdCgpfSk7ZnVuY3Rpb24gQ1l0KGUsdCxyLG4pe2Z1bmN0aW9uIGkoYyl7cmV0dXJuIGMubGVuZ3RoP2MucG9wKCkrIiAiOiIifWZ1bmN0aW9uIG8oYyx1LGgsZixwLGQpe2lmKGMhPT1ofHx1IT09Zil7dmFyIGc9cC5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLHQsbnVsbCxyKTtkLnB1c2goe2k6Zy00LHg6QWMoYyxoKX0se2k6Zy0yLHg6QWModSxmKX0pfWVsc2UoaHx8ZikmJnAucHVzaCgidHJhbnNsYXRlKCIraCt0K2Yrcil9ZnVuY3Rpb24gYShjLHUsaCxmKXtjIT09dT8oYy11PjE4MD91Kz0zNjA6dS1jPjE4MCYmKGMrPTM2MCksZi5wdXNoKHtpOmgucHVzaChpKGgpKyJyb3RhdGUoIixudWxsLG4pLTIseDpBYyhjLHUpfSkpOnUmJmgucHVzaChpKGgpKyJyb3RhdGUoIit1K24pfWZ1bmN0aW9uIHMoYyx1LGgsZil7YyE9PXU/Zi5wdXNoKHtpOmgucHVzaChpKGgpKyJza2V3WCgiLG51bGwsbiktMix4OkFjKGMsdSl9KTp1JiZoLnB1c2goaShoKSsic2tld1goIit1K24pfWZ1bmN0aW9uIGwoYyx1LGgsZixwLGQpe2lmKGMhPT1ofHx1IT09Zil7dmFyIGc9cC5wdXNoKGkocCkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2QucHVzaCh7aTpnLTQseDpBYyhjLGgpfSx7aTpnLTIseDpBYyh1LGYpfSl9ZWxzZShoIT09MXx8ZiE9PTEpJiZwLnB1c2goaShwKSsic2NhbGUoIitoKyIsIitmKyIpIil9cmV0dXJuIGZ1bmN0aW9uKGMsdSl7dmFyIGg9W10sZj1bXTtyZXR1cm4gYz1lKGMpLHU9ZSh1KSxvKGMudHJhbnNsYXRlWCxjLnRyYW5zbGF0ZVksdS50cmFuc2xhdGVYLHUudHJhbnNsYXRlWSxoLGYpLGEoYy5yb3RhdGUsdS5yb3RhdGUsaCxmKSxzKGMuc2tld1gsdS5za2V3WCxoLGYpLGwoYy5zY2FsZVgsYy5zY2FsZVksdS5zY2FsZVgsdS5zY2FsZVksaCxmKSxjPXU9bnVsbCxmdW5jdGlvbihwKXtmb3IodmFyIGQ9LTEsZz1mLmxlbmd0aCxfOysrZDxnOyloWyhfPWZbZF0pLmldPV8ueChwKTtyZXR1cm4gaC5qb2luKCIiKX19fXZhciBxbnQsR250LEFZdD1NKCgpPT57R3ooKTtUWXQoKTtxbnQ9Q1l0KE1ZdCwicHgsICIsInB4KSIsImRlZykiKSxHbnQ9Q1l0KEVZdCwiLCAiLCIpIiwiKSIpfSk7ZnVuY3Rpb24gSVl0KGUpe3JldHVybigoZT1NYXRoLmV4cChlKSkrMS9lKS8yfWZ1bmN0aW9uIFVOZShlKXtyZXR1cm4oKGU9TWF0aC5leHAoZSkpLTEvZSkvMn1mdW5jdGlvbiBxTmUoZSl7cmV0dXJuKChlPU1hdGguZXhwKDIqZSkpLTEpLyhlKzEpfWZ1bmN0aW9uIFludChlLHQpe3ZhciByPWVbMF0sbj1lWzFdLGk9ZVsyXSxvPXRbMF0sYT10WzFdLHM9dFsyXSxsPW8tcixjPWEtbix1PWwqbCtjKmMsaCxmO2lmKHU8Vk5lKWY9TWF0aC5sb2cocy9pKS9NQSxoPWZ1bmN0aW9uKHgpe3JldHVybltyK3gqbCxuK3gqYyxpKk1hdGguZXhwKE1BKngqZildfTtlbHNle3ZhciBwPU1hdGguc3FydCh1KSxkPShzKnMtaSppK1BZdCp1KS8oMippKldudCpwKSxnPShzKnMtaSppLVBZdCp1KS8oMipzKldudCpwKSxfPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCkseT1NYXRoLmxvZyhNYXRoLnNxcnQoZypnKzEpLWcpO2Y9KHktXykvTUEsaD1mdW5jdGlvbih4KXt2YXIgYj14KmYsUz1JWXQoXyksQz1pLyhXbnQqcCkqKFMqcU5lKE1BKmIrXyktVU5lKF8pKTtyZXR1cm5bcitDKmwsbitDKmMsaSpTL0lZdChNQSpiK18pXX19cmV0dXJuIGguZHVyYXRpb249ZioxZTMsaH12YXIgTUEsV250LFBZdCxWTmUsTFl0PU0oKCk9PntNQT1NYXRoLlNRUlQyLFdudD0yLFBZdD00LFZOZT0xZS0xMn0pO3ZhciBFQT1NKCgpPT57R3ooKTt4WXQoKTtBWXQoKTtMWXQoKTt2WXQoKX0pO2Z1bmN0aW9uIHNTKCl7cmV0dXJuIEF2fHwoTll0KEdOZSksQXY9UEEubm93KCkrJHopfWZ1bmN0aW9uIEdOZSgpe0F2PTB9ZnVuY3Rpb24gSUEoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIEt6KGUsdCxyKXt2YXIgbj1uZXcgSUE7cmV0dXJuIG4ucmVzdGFydChlLHQsciksbn1mdW5jdGlvbiBEWXQoKXtzUygpLCsrYVM7Zm9yKHZhciBlPWp6LHQ7ZTspKHQ9QXYtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLWFTfWZ1bmN0aW9uIGtZdCgpe0F2PShYej1QQS5ub3coKSkrJHosYVM9Q0E9MDt0cnl7RFl0KCl9ZmluYWxseXthUz0wLFlOZSgpLEF2PTB9fWZ1bmN0aW9uIFdOZSgpe3ZhciBlPVBBLm5vdygpLHQ9ZS1Yejt0PlJZdCYmKCR6LT10LFh6PWUpfWZ1bmN0aW9uIFlOZSgpe2Zvcih2YXIgZSx0PWp6LHIsbj0xLzA7dDspdC5fY2FsbD8obj50Ll90aW1lJiYobj10Ll90aW1lKSxlPXQsdD10Ll9uZXh0KToocj10Ll9uZXh0LHQuX25leHQ9bnVsbCx0PWU/ZS5fbmV4dD1yOmp6PXIpO0FBPWUsam50KG4pfWZ1bmN0aW9uIGpudChlKXtpZighYVMpe0NBJiYoQ0E9Y2xlYXJUaW1lb3V0KENBKSk7dmFyIHQ9ZS1Bdjt0PjI0PyhlPDEvMCYmKENBPXNldFRpbWVvdXQoa1l0LGUtUEEubm93KCktJHopKSxUQSYmKFRBPWNsZWFySW50ZXJ2YWwoVEEpKSk6KFRBfHwoWHo9UEEubm93KCksVEE9c2V0SW50ZXJ2YWwoV05lLFJZdCkpLGFTPTEsTll0KGtZdCkpfX12YXIgYVMsQ0EsVEEsUll0LGp6LEFBLFh6LEF2LCR6LFBBLE5ZdCxYbnQ9TSgoKT0+e2FTPTAsQ0E9MCxUQT0wLFJZdD0xZTMsWHo9MCxBdj0wLCR6PTAsUEE9dHlwZW9mIHBlcmZvcm1hbmNlPT0ib2JqZWN0IiYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsTll0PXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKGUpe3NldFRpbWVvdXQoZSwxNyl9O0lBLnByb3RvdHlwZT1Lei5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOklBLHJlc3RhcnQ6ZnVuY3Rpb24oZSx0LHIpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7cj0ocj09bnVsbD9zUygpOityKSsodD09bnVsbD8wOit0KSwhdGhpcy5fbmV4dCYmQUEhPT10aGlzJiYoQUE/QUEuX25leHQ9dGhpczpqej10aGlzLEFBPXRoaXMpLHRoaXMuX2NhbGw9ZSx0aGlzLl90aW1lPXIsam50KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLGpudCgpKX19fSk7ZnVuY3Rpb24gWnooZSx0LHIpe3ZhciBuPW5ldyBJQTtyZXR1cm4gdD10PT1udWxsPzA6K3Qsbi5yZXN0YXJ0KGZ1bmN0aW9uKGkpe24uc3RvcCgpLGUoaSt0KX0sdCxyKSxufXZhciBPWXQ9TSgoKT0+e1hudCgpfSk7dmFyICRudD1NKCgpPT57WG50KCk7T1l0KCl9KTtmdW5jdGlvbiBHZyhlLHQscixuLGksbyl7dmFyIGE9ZS5fX3RyYW5zaXRpb247aWYoIWEpZS5fX3RyYW5zaXRpb249e307ZWxzZSBpZihyIGluIGEpcmV0dXJuOyROZShlLHIse25hbWU6dCxpbmRleDpuLGdyb3VwOmksb246ak5lLHR3ZWVuOlhOZSx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTpGWXR9KX1mdW5jdGlvbiBrQShlLHQpe3ZhciByPWlvKGUsdCk7aWYoci5zdGF0ZT5GWXQpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gcn1mdW5jdGlvbiBaYShlLHQpe3ZhciByPWlvKGUsdCk7aWYoci5zdGF0ZT5Keil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gcn1mdW5jdGlvbiBpbyhlLHQpe3ZhciByPWUuX190cmFuc2l0aW9uO2lmKCFyfHwhKHI9clt0XSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiByfWZ1bmN0aW9uICROZShlLHQscil7dmFyIG49ZS5fX3RyYW5zaXRpb24saTtuW3RdPXIsci50aW1lcj1LeihvLDAsci50aW1lKTtmdW5jdGlvbiBvKGMpe3Iuc3RhdGU9S250LHIudGltZXIucmVzdGFydChhLHIuZGVsYXksci50aW1lKSxyLmRlbGF5PD1jJiZhKGMtci5kZWxheSl9ZnVuY3Rpb24gYShjKXt2YXIgdSxoLGYscDtpZihyLnN0YXRlIT09S250KXJldHVybiBsKCk7Zm9yKHUgaW4gbilpZihwPW5bdV0scC5uYW1lPT09ci5uYW1lKXtpZihwLnN0YXRlPT09SnopcmV0dXJuIFp6KGEpO3Auc3RhdGU9PT16WXQ/KHAuc3RhdGU9TEEscC50aW1lci5zdG9wKCkscC5vbi5jYWxsKCJpbnRlcnJ1cHQiLGUsZS5fX2RhdGFfXyxwLmluZGV4LHAuZ3JvdXApLGRlbGV0ZSBuW3VdKTordTx0JiYocC5zdGF0ZT1MQSxwLnRpbWVyLnN0b3AoKSxwLm9uLmNhbGwoImNhbmNlbCIsZSxlLl9fZGF0YV9fLHAuaW5kZXgscC5ncm91cCksZGVsZXRlIG5bdV0pfWlmKFp6KGZ1bmN0aW9uKCl7ci5zdGF0ZT09PUp6JiYoci5zdGF0ZT16WXQsci50aW1lci5yZXN0YXJ0KHMsci5kZWxheSxyLnRpbWUpLHMoYykpfSksci5zdGF0ZT1ReixyLm9uLmNhbGwoInN0YXJ0IixlLGUuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSxyLnN0YXRlPT09UXope2ZvcihyLnN0YXRlPUp6LGk9bmV3IEFycmF5KGY9ci50d2Vlbi5sZW5ndGgpLHU9MCxoPS0xO3U8ZjsrK3UpKHA9ci50d2Vlblt1XS52YWx1ZS5jYWxsKGUsZS5fX2RhdGFfXyxyLmluZGV4LHIuZ3JvdXApKSYmKGlbKytoXT1wKTtpLmxlbmd0aD1oKzF9fWZ1bmN0aW9uIHMoYyl7Zm9yKHZhciB1PWM8ci5kdXJhdGlvbj9yLmVhc2UuY2FsbChudWxsLGMvci5kdXJhdGlvbik6KHIudGltZXIucmVzdGFydChsKSxyLnN0YXRlPXRGLDEpLGg9LTEsZj1pLmxlbmd0aDsrK2g8ZjspaVtoXS5jYWxsKGUsdSk7ci5zdGF0ZT09PXRGJiYoci5vbi5jYWxsKCJlbmQiLGUsZS5fX2RhdGFfXyxyLmluZGV4LHIuZ3JvdXApLGwoKSl9ZnVuY3Rpb24gbCgpe3Iuc3RhdGU9TEEsci50aW1lci5zdG9wKCksZGVsZXRlIG5bdF07Zm9yKHZhciBjIGluIG4pcmV0dXJuO2RlbGV0ZSBlLl9fdHJhbnNpdGlvbn19dmFyIGpOZSxYTmUsRll0LEtudCxReixKeix6WXQsdEYsTEEsSXM9TSgoKT0+e2RudCgpOyRudCgpO2pOZT1nQSgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSxYTmU9W10sRll0PTAsS250PTEsUXo9MixKej0zLHpZdD00LHRGPTUsTEE9Nn0pO2Z1bmN0aW9uIFB2KGUsdCl7dmFyIHI9ZS5fX3RyYW5zaXRpb24sbixpLG89ITAsYTtpZighIXIpe3Q9dD09bnVsbD9udWxsOnQrIiI7Zm9yKGEgaW4gcil7aWYoKG49clthXSkubmFtZSE9PXQpe289ITE7Y29udGludWV9aT1uLnN0YXRlPlF6JiZuLnN0YXRlPHRGLG4uc3RhdGU9TEEsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsZSxlLl9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIHJbYV19byYmZGVsZXRlIGUuX190cmFuc2l0aW9ufX12YXIgWm50PU0oKCk9PntJcygpfSk7ZnVuY3Rpb24gQll0KGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtQdih0aGlzLGUpfSl9dmFyIEhZdD1NKCgpPT57Wm50KCl9KTtmdW5jdGlvbiBLTmUoZSx0KXt2YXIgcixuO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPVphKHRoaXMsZSksbz1pLnR3ZWVuO2lmKG8hPT1yKXtuPXI9bztmb3IodmFyIGE9MCxzPW4ubGVuZ3RoO2E8czsrK2EpaWYoblthXS5uYW1lPT09dCl7bj1uLnNsaWNlKCksbi5zcGxpY2UoYSwxKTticmVha319aS50d2Vlbj1ufX1mdW5jdGlvbiBaTmUoZSx0LHIpe3ZhciBuLGk7aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPVphKHRoaXMsZSksYT1vLnR3ZWVuO2lmKGEhPT1uKXtpPShuPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOnQsdmFsdWU6cn0sbD0wLGM9aS5sZW5ndGg7bDxjOysrbClpZihpW2xdLm5hbWU9PT10KXtpW2xdPXM7YnJlYWt9bD09PWMmJmkucHVzaChzKX1vLnR3ZWVuPWl9fWZ1bmN0aW9uIFZZdChlLHQpe3ZhciByPXRoaXMuX2lkO2lmKGUrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBuPWlvKHRoaXMubm9kZSgpLHIpLnR3ZWVuLGk9MCxvPW4ubGVuZ3RoLGE7aTxvOysraSlpZigoYT1uW2ldKS5uYW1lPT09ZSlyZXR1cm4gYS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKCh0PT1udWxsP0tOZTpaTmUpKHIsZSx0KSl9ZnVuY3Rpb24gbFMoZSx0LHIpe3ZhciBuPWUuX2lkO3JldHVybiBlLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1aYSh0aGlzLG4pOyhpLnZhbHVlfHwoaS52YWx1ZT17fSkpW3RdPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksZnVuY3Rpb24oaSl7cmV0dXJuIGlvKGksbikudmFsdWVbdF19fXZhciBSQT1NKCgpPT57SXMoKX0pO2Z1bmN0aW9uIGVGKGUsdCl7dmFyIHI7cmV0dXJuKHR5cGVvZiB0PT0ibnVtYmVyIj9BYzp0IGluc3RhbmNlb2YgcWc/cXo6KHI9cWcodCkpPyh0PXIscXopOkhudCkoZSx0KX12YXIgSm50PU0oKCk9PntObnQoKTtFQSgpfSk7ZnVuY3Rpb24gSk5lKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpfX1mdW5jdGlvbiBRTmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpfX1mdW5jdGlvbiB0RGUoZSx0LHIpe3ZhciBuLGk9cisiIixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKGUpO3JldHVybiBhPT09aT9udWxsOmE9PT1uP286bz10KG49YSxyKX19ZnVuY3Rpb24gZURlKGUsdCxyKXt2YXIgbixpPXIrIiIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk7cmV0dXJuIGE9PT1pP251bGw6YT09PW4/bzpvPXQobj1hLHIpfX1mdW5jdGlvbiByRGUoZSx0LHIpe3ZhciBuLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPXIodGhpcyksbDtyZXR1cm4gcz09bnVsbD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKGUpOihhPXRoaXMuZ2V0QXR0cmlidXRlKGUpLGw9cysiIixhPT09bD9udWxsOmE9PT1uJiZsPT09aT9vOihpPWwsbz10KG49YSxzKSkpfX1mdW5jdGlvbiBuRGUoZSx0LHIpe3ZhciBuLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPXIodGhpcyksbDtyZXR1cm4gcz09bnVsbD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKTooYT10aGlzLmdldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCksbD1zKyIiLGE9PT1sP251bGw6YT09PW4mJmw9PT1pP286KGk9bCxvPXQobj1hLHMpKSl9fWZ1bmN0aW9uIFVZdChlLHQpe3ZhciByPWhkKGUpLG49cj09PSJ0cmFuc2Zvcm0iP0dudDplRjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4oZSx0eXBlb2YgdD09ImZ1bmN0aW9uIj8oci5sb2NhbD9uRGU6ckRlKShyLG4sbFModGhpcywiYXR0ci4iK2UsdCkpOnQ9PW51bGw/KHIubG9jYWw/UU5lOkpOZSkocik6KHIubG9jYWw/ZURlOnREZSkocixuLHQpKX12YXIgcVl0PU0oKCk9PntFQSgpO1BzKCk7UkEoKTtKbnQoKX0pO2Z1bmN0aW9uIGlEZShlLHQpe3JldHVybiBmdW5jdGlvbihyKXt0aGlzLnNldEF0dHJpYnV0ZShlLHQuY2FsbCh0aGlzLHIpKX19ZnVuY3Rpb24gb0RlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3RoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHQuY2FsbCh0aGlzLHIpKX19ZnVuY3Rpb24gYURlKGUsdCl7dmFyIHIsbjtmdW5jdGlvbiBpKCl7dmFyIG89dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1uJiYocj0obj1vKSYmb0RlKGUsbykpLHJ9cmV0dXJuIGkuX3ZhbHVlPXQsaX1mdW5jdGlvbiBzRGUoZSx0KXt2YXIgcixuO2Z1bmN0aW9uIGkoKXt2YXIgbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PW4mJihyPShuPW8pJiZpRGUoZSxvKSkscn1yZXR1cm4gaS5fdmFsdWU9dCxpfWZ1bmN0aW9uIEdZdChlLHQpe3ZhciByPSJhdHRyLiIrZTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7dmFyIG49aGQoZSk7cmV0dXJuIHRoaXMudHdlZW4ociwobi5sb2NhbD9hRGU6c0RlKShuLHQpKX12YXIgV1l0PU0oKCk9PntQcygpfSk7ZnVuY3Rpb24gbERlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7a0EodGhpcyxlKS5kZWxheT0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGNEZShlLHQpe3JldHVybiB0PSt0LGZ1bmN0aW9uKCl7a0EodGhpcyxlKS5kZWxheT10fX1mdW5jdGlvbiBZWXQoZSl7dmFyIHQ9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCh0eXBlb2YgZT09ImZ1bmN0aW9uIj9sRGU6Y0RlKSh0LGUpKTppbyh0aGlzLm5vZGUoKSx0KS5kZWxheX12YXIgall0PU0oKCk9PntJcygpfSk7ZnVuY3Rpb24gdURlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7WmEodGhpcyxlKS5kdXJhdGlvbj0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGhEZShlLHQpe3JldHVybiB0PSt0LGZ1bmN0aW9uKCl7WmEodGhpcyxlKS5kdXJhdGlvbj10fX1mdW5jdGlvbiBYWXQoZSl7dmFyIHQ9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCh0eXBlb2YgZT09ImZ1bmN0aW9uIj91RGU6aERlKSh0LGUpKTppbyh0aGlzLm5vZGUoKSx0KS5kdXJhdGlvbn12YXIgJFl0PU0oKCk9PntJcygpfSk7ZnVuY3Rpb24gZkRlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe1phKHRoaXMsZSkuZWFzZT10fX1mdW5jdGlvbiBLWXQoZSl7dmFyIHQ9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKGZEZSh0LGUpKTppbyh0aGlzLm5vZGUoKSx0KS5lYXNlfXZhciBaWXQ9TSgoKT0+e0lzKCl9KTtmdW5jdGlvbiBKWXQoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPXlBKGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpZm9yKHZhciBvPXRbaV0sYT1vLmxlbmd0aCxzPW5baV09W10sbCxjPTA7YzxhOysrYykobD1vW2NdKSYmZS5jYWxsKGwsbC5fX2RhdGFfXyxjLG8pJiZzLnB1c2gobCk7cmV0dXJuIG5ldyBwYShuLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9dmFyIFFZdD1NKCgpPT57UHMoKTtkZCgpfSk7ZnVuY3Rpb24gdGp0KGUpe2lmKGUuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj1lLl9ncm91cHMsbj10Lmxlbmd0aCxpPXIubGVuZ3RoLG89TWF0aC5taW4obixpKSxhPW5ldyBBcnJheShuKSxzPTA7czxvOysrcylmb3IodmFyIGw9dFtzXSxjPXJbc10sdT1sLmxlbmd0aCxoPWFbc109bmV3IEFycmF5KHUpLGYscD0wO3A8dTsrK3ApKGY9bFtwXXx8Y1twXSkmJihoW3BdPWYpO2Zvcig7czxuOysrcylhW3NdPXRbc107cmV0dXJuIG5ldyBwYShhLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9dmFyIGVqdD1NKCgpPT57ZGQoKX0pO2Z1bmN0aW9uIHBEZShlKXtyZXR1cm4oZSsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KGZ1bmN0aW9uKHQpe3ZhciByPXQuaW5kZXhPZigiLiIpO3JldHVybiByPj0wJiYodD10LnNsaWNlKDAscikpLCF0fHx0PT09InN0YXJ0In0pfWZ1bmN0aW9uIGREZShlLHQscil7dmFyIG4saSxvPXBEZSh0KT9rQTpaYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1vKHRoaXMsZSkscz1hLm9uO3MhPT1uJiYoaT0obj1zKS5jb3B5KCkpLm9uKHQsciksYS5vbj1pfX1mdW5jdGlvbiByanQoZSx0KXt2YXIgcj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP2lvKHRoaXMubm9kZSgpLHIpLm9uLm9uKGUpOnRoaXMuZWFjaChkRGUocixlLHQpKX12YXIgbmp0PU0oKCk9PntJcygpfSk7ZnVuY3Rpb24gbURlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIHIgaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK3IhPT1lKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX1mdW5jdGlvbiBpanQoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsbURlKHRoaXMuX2lkKSl9dmFyIG9qdD1NKCgpPT57fSk7ZnVuY3Rpb24gYWp0KGUpe3ZhciB0PXRoaXMuX25hbWUscj10aGlzLl9pZDt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9Q3YoZSkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPW5ldyBBcnJheShpKSxhPTA7YTxpOysrYSlmb3IodmFyIHM9blthXSxsPXMubGVuZ3RoLGM9b1thXT1uZXcgQXJyYXkobCksdSxoLGY9MDtmPGw7KytmKSh1PXNbZl0pJiYoaD1lLmNhbGwodSx1Ll9fZGF0YV9fLGYscykpJiYoIl9fZGF0YV9fImluIHUmJihoLl9fZGF0YV9fPXUuX19kYXRhX18pLGNbZl09aCxHZyhjW2ZdLHQscixmLGMsaW8odSxyKSkpO3JldHVybiBuZXcgcGEobyx0aGlzLl9wYXJlbnRzLHQscil9dmFyIHNqdD1NKCgpPT57UHMoKTtkZCgpO0lzKCl9KTtmdW5jdGlvbiBsanQoZSl7dmFyIHQ9dGhpcy5fbmFtZSxyPXRoaXMuX2lkO3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1fQShlKSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLG89W10sYT1bXSxzPTA7czxpOysrcylmb3IodmFyIGw9bltzXSxjPWwubGVuZ3RoLHUsaD0wO2g8YzsrK2gpaWYodT1sW2hdKXtmb3IodmFyIGY9ZS5jYWxsKHUsdS5fX2RhdGFfXyxoLGwpLHAsZD1pbyh1LHIpLGc9MCxfPWYubGVuZ3RoO2c8XzsrK2cpKHA9ZltnXSkmJkdnKHAsdCxyLGcsZixkKTtvLnB1c2goZiksYS5wdXNoKHUpfXJldHVybiBuZXcgcGEobyxhLHQscil9dmFyIGNqdD1NKCgpPT57UHMoKTtkZCgpO0lzKCl9KTtmdW5jdGlvbiB1anQoKXtyZXR1cm4gbmV3IGdEZSh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9dmFyIGdEZSxoanQ9TSgoKT0+e1BzKCk7Z0RlPWZkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcn0pO2Z1bmN0aW9uIF9EZShlLHQpe3ZhciByLG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1VZyh0aGlzLGUpLGE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSksVWcodGhpcyxlKSk7cmV0dXJuIG89PT1hP251bGw6bz09PXImJmE9PT1uP2k6aT10KHI9byxuPWEpfX1mdW5jdGlvbiBmanQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKX19ZnVuY3Rpb24geURlKGUsdCxyKXt2YXIgbixpPXIrIiIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1VZyh0aGlzLGUpO3JldHVybiBhPT09aT9udWxsOmE9PT1uP286bz10KG49YSxyKX19ZnVuY3Rpb24gdkRlKGUsdCxyKXt2YXIgbixpLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9VWcodGhpcyxlKSxzPXIodGhpcyksbD1zKyIiO3JldHVybiBzPT1udWxsJiYobD1zPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpLFVnKHRoaXMsZSkpKSxhPT09bD9udWxsOmE9PT1uJiZsPT09aT9vOihpPWwsbz10KG49YSxzKSl9fWZ1bmN0aW9uIHhEZShlLHQpe3ZhciByLG4saSxvPSJzdHlsZS4iK3QsYT0iZW5kLiIrbyxzO3JldHVybiBmdW5jdGlvbigpe3ZhciBsPVphKHRoaXMsZSksYz1sLm9uLHU9bC52YWx1ZVtvXT09bnVsbD9zfHwocz1manQodCkpOnZvaWQgMDsoYyE9PXJ8fGkhPT11KSYmKG49KHI9YykuY29weSgpKS5vbihhLGk9dSksbC5vbj1ufX1mdW5jdGlvbiBwanQoZSx0LHIpe3ZhciBuPShlKz0iIik9PSJ0cmFuc2Zvcm0iP3FudDplRjtyZXR1cm4gdD09bnVsbD90aGlzLnN0eWxlVHdlZW4oZSxfRGUoZSxuKSkub24oImVuZC5zdHlsZS4iK2UsZmp0KGUpKTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90aGlzLnN0eWxlVHdlZW4oZSx2RGUoZSxuLGxTKHRoaXMsInN0eWxlLiIrZSx0KSkpLmVhY2goeERlKHRoaXMuX2lkLGUpKTp0aGlzLnN0eWxlVHdlZW4oZSx5RGUoZSxuLHQpLHIpLm9uKCJlbmQuc3R5bGUuIitlLG51bGwpfXZhciBkanQ9TSgoKT0+e0VBKCk7UHMoKTtJcygpO1JBKCk7Sm50KCl9KTtmdW5jdGlvbiBiRGUoZSx0LHIpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KGUsdC5jYWxsKHRoaXMsbikscil9fWZ1bmN0aW9uIHdEZShlLHQscil7dmFyIG4saTtmdW5jdGlvbiBvKCl7dmFyIGE9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1pJiYobj0oaT1hKSYmYkRlKGUsYSxyKSksbn1yZXR1cm4gby5fdmFsdWU9dCxvfWZ1bmN0aW9uIG1qdChlLHQscil7dmFyIG49InN0eWxlLiIrKGUrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4obix3RGUoZSx0LHI9PW51bGw/IiI6cikpfXZhciBnanQ9TSgoKT0+e30pO2Z1bmN0aW9uIFNEZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PWV9fWZ1bmN0aW9uIE1EZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiBfanQoZSl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLHR5cGVvZiBlPT0iZnVuY3Rpb24iP01EZShsUyh0aGlzLCJ0ZXh0IixlKSk6U0RlKGU9PW51bGw/IiI6ZSsiIikpfXZhciB5anQ9TSgoKT0+e1JBKCl9KTtmdW5jdGlvbiBFRGUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMudGV4dENvbnRlbnQ9ZS5jYWxsKHRoaXMsdCl9fWZ1bmN0aW9uIFREZShlKXt2YXIgdCxyO2Z1bmN0aW9uIG4oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PXImJih0PShyPWkpJiZFRGUoaSkpLHR9cmV0dXJuIG4uX3ZhbHVlPWUsbn1mdW5jdGlvbiB2anQoZSl7dmFyIHQ9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4odD10aGlzLnR3ZWVuKHQpKSYmdC5fdmFsdWU7aWYoZT09bnVsbClyZXR1cm4gdGhpcy50d2Vlbih0LG51bGwpO2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2Vlbih0LFREZShlKSl9dmFyIHhqdD1NKCgpPT57fSk7ZnVuY3Rpb24gYmp0KCl7Zm9yKHZhciBlPXRoaXMuX25hbWUsdD10aGlzLl9pZCxyPXJGKCksbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPTA7bzxpOysrbylmb3IodmFyIGE9bltvXSxzPWEubGVuZ3RoLGwsYz0wO2M8czsrK2MpaWYobD1hW2NdKXt2YXIgdT1pbyhsLHQpO0dnKGwsZSxyLGMsYSx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgcGEobix0aGlzLl9wYXJlbnRzLGUscil9dmFyIHdqdD1NKCgpPT57ZGQoKTtJcygpfSk7ZnVuY3Rpb24gU2p0KCl7dmFyIGUsdCxyPXRoaXMsbj1yLl9pZCxpPXIuc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpey0taT09PTAmJm8oKX19O3IuZWFjaChmdW5jdGlvbigpe3ZhciBjPVphKHRoaXMsbiksdT1jLm9uO3UhPT1lJiYodD0oZT11KS5jb3B5KCksdC5fLmNhbmNlbC5wdXNoKHMpLHQuXy5pbnRlcnJ1cHQucHVzaChzKSx0Ll8uZW5kLnB1c2gobCkpLGMub249dH0pfSl9dmFyIE1qdD1NKCgpPT57SXMoKX0pO2Z1bmN0aW9uIHBhKGUsdCxyLG4pe3RoaXMuX2dyb3Vwcz1lLHRoaXMuX3BhcmVudHM9dCx0aGlzLl9uYW1lPXIsdGhpcy5faWQ9bn1mdW5jdGlvbiBRbnQoZSl7cmV0dXJuIGZkKCkudHJhbnNpdGlvbihlKX1mdW5jdGlvbiByRigpe3JldHVybisrQ0RlfXZhciBDRGUsY1MsZGQ9TSgoKT0+e1BzKCk7cVl0KCk7V1l0KCk7all0KCk7JFl0KCk7Wll0KCk7UVl0KCk7ZWp0KCk7bmp0KCk7b2p0KCk7c2p0KCk7Y2p0KCk7aGp0KCk7ZGp0KCk7Z2p0KCk7eWp0KCk7eGp0KCk7d2p0KCk7UkEoKTtNanQoKTtDRGU9MDtjUz1mZC5wcm90b3R5cGU7cGEucHJvdG90eXBlPVFudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnBhLHNlbGVjdDphanQsc2VsZWN0QWxsOmxqdCxmaWx0ZXI6Sll0LG1lcmdlOnRqdCxzZWxlY3Rpb246dWp0LHRyYW5zaXRpb246Ymp0LGNhbGw6Y1MuY2FsbCxub2RlczpjUy5ub2Rlcyxub2RlOmNTLm5vZGUsc2l6ZTpjUy5zaXplLGVtcHR5OmNTLmVtcHR5LGVhY2g6Y1MuZWFjaCxvbjpyanQsYXR0cjpVWXQsYXR0clR3ZWVuOkdZdCxzdHlsZTpwanQsc3R5bGVUd2VlbjptanQsdGV4dDpfanQsdGV4dFR3ZWVuOnZqdCxyZW1vdmU6aWp0LHR3ZWVuOlZZdCxkZWxheTpZWXQsZHVyYXRpb246WFl0LGVhc2U6S1l0LGVuZDpTanR9fSk7ZnVuY3Rpb24gQURlKGUsdCl7Zm9yKHZhciByOyEocj1lLl9fdHJhbnNpdGlvbil8fCEocj1yW3RdKTspaWYoIShlPWUucGFyZW50Tm9kZSkpcmV0dXJuIHRpdC50aW1lPXNTKCksdGl0O3JldHVybiByfWZ1bmN0aW9uIEVqdChlKXt2YXIgdCxyO2UgaW5zdGFuY2VvZiBwYT8odD1lLl9pZCxlPWUuX25hbWUpOih0PXJGKCksKHI9dGl0KS50aW1lPXNTKCksZT1lPT1udWxsP251bGw6ZSsiIik7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLG89MDtvPGk7KytvKWZvcih2YXIgYT1uW29dLHM9YS5sZW5ndGgsbCxjPTA7YzxzOysrYykobD1hW2NdKSYmR2cobCxlLHQsYyxhLHJ8fEFEZShsLHQpKTtyZXR1cm4gbmV3IHBhKG4sdGhpcy5fcGFyZW50cyxlLHQpfXZhciB0aXQsVGp0PU0oKCk9PntkZCgpO0lzKCk7SV8oKTskbnQoKTt0aXQ9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOnZzfX0pO3ZhciBDanQ9TSgoKT0+e1BzKCk7SFl0KCk7VGp0KCk7ZmQucHJvdG90eXBlLmludGVycnVwdD1CWXQ7ZmQucHJvdG90eXBlLnRyYW5zaXRpb249RWp0fSk7dmFyIEFqdD1NKCgpPT57ZGQoKTtJcygpfSk7dmFyIFBqdD1NKCgpPT57Q2p0KCk7ZGQoKTtBanQoKTtabnQoKX0pO2Z1bmN0aW9uIE5BKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgSWp0PU0oKCk9Pnt9KTtmdW5jdGlvbiBlaXQoZSx0LHIpe3RoaXMudGFyZ2V0PWUsdGhpcy50eXBlPXQsdGhpcy50cmFuc2Zvcm09cn12YXIgTGp0PU0oKCk9Pnt9KTtmdW5jdGlvbiBBZihlLHQscil7dGhpcy5rPWUsdGhpcy54PXQsdGhpcy55PXJ9ZnVuY3Rpb24gbkYoZSl7cmV0dXJuIGUuX196b29tfHx1U312YXIgdVMscml0PU0oKCk9PntBZi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkFmLHNjYWxlOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09MT90aGlzOm5ldyBBZih0aGlzLmsqZSx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT0wJnQ9PT0wP3RoaXM6bmV3IEFmKHRoaXMuayx0aGlzLngrdGhpcy5rKmUsdGhpcy55K3RoaXMuayp0KX0sYXBwbHk6ZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0qdGhpcy5rK3RoaXMueCxlWzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKGUpe3JldHVybiBlKnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbihlKXtyZXR1cm5bKGVbMF0tdGhpcy54KS90aGlzLmssKGVbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKGUpe3JldHVybihlLXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKGUpe3JldHVybihlLXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jb3B5KCkuZG9tYWluKGUucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcChlLmludmVydCxlKSl9LHJlc2NhbGVZOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNvcHkoKS5kb21haW4oZS5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKGUuaW52ZXJ0LGUpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dVM9bmV3IEFmKDEsMCwwKTtuRi5wcm90b3R5cGU9QWYucHJvdG90eXBlfSk7ZnVuY3Rpb24gaUYoKXtZci5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBoUygpe1lyLnByZXZlbnREZWZhdWx0KCksWXIuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIGtqdD1NKCgpPT57UHMoKX0pO2Z1bmN0aW9uIFBEZSgpe3JldHVybiFZci5idXR0b259ZnVuY3Rpb24gSURlKCl7dmFyIGU9dGhpcyx0LHI7cmV0dXJuIGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50PyhlPWUub3duZXJTVkdFbGVtZW50fHxlLHQ9ZS53aWR0aC5iYXNlVmFsLnZhbHVlLHI9ZS5oZWlnaHQuYmFzZVZhbC52YWx1ZSk6KHQ9ZS5jbGllbnRXaWR0aCxyPWUuY2xpZW50SGVpZ2h0KSxbWzAsMF0sW3Qscl1dfWZ1bmN0aW9uIFJqdCgpe3JldHVybiB0aGlzLl9fem9vbXx8dVN9ZnVuY3Rpb24gTERlKCl7cmV0dXJuLVlyLmRlbHRhWSooWXIuZGVsdGFNb2RlPzEyMDoxKS81MDB9ZnVuY3Rpb24ga0RlKCl7cmV0dXJuIm9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIFJEZShlLHQscil7dmFyIG49ZS5pbnZlcnRYKHRbMF1bMF0pLXJbMF1bMF0saT1lLmludmVydFgodFsxXVswXSktclsxXVswXSxvPWUuaW52ZXJ0WSh0WzBdWzFdKS1yWzBdWzFdLGE9ZS5pbnZlcnRZKHRbMV1bMV0pLXJbMV1bMV07cmV0dXJuIGUudHJhbnNsYXRlKGk+bj8obitpKS8yOk1hdGgubWluKDAsbil8fE1hdGgubWF4KDAsaSksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9ZnVuY3Rpb24gTmp0KCl7dmFyIGU9UERlLHQ9SURlLHI9UkRlLG49TERlLGk9a0RlLG89WzAsMS8wXSxhPVtbLTEvMCwtMS8wXSxbMS8wLDEvMF1dLHM9MjUwLGw9WW50LGM9W10sdT1nQSgic3RhcnQiLCJ6b29tIiwiZW5kIiksaCxmLHA9NTAwLGQ9MTUwLGc9MDtmdW5jdGlvbiBfKFIpe1IucHJvcGVydHkoIl9fem9vbSIsUmp0KS5vbigid2hlZWwuem9vbSIsaykub24oIm1vdXNlZG93bi56b29tIixPKS5vbigiZGJsY2xpY2suem9vbSIsRCkuZmlsdGVyKGkpLm9uKCJ0b3VjaHN0YXJ0Lnpvb20iLEIpLm9uKCJ0b3VjaG1vdmUuem9vbSIsSSkub24oInRvdWNoZW5kLnpvb20gdG91Y2hjYW5jZWwuem9vbSIsTCkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfV8udHJhbnNmb3JtPWZ1bmN0aW9uKFIsRil7dmFyIHo9Ui5zZWxlY3Rpb24/Ui5zZWxlY3Rpb24oKTpSO3oucHJvcGVydHkoIl9fem9vbSIsUmp0KSxSIT09ej9TKFIsRik6ei5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCl7Qyh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKS56b29tKG51bGwsdHlwZW9mIEY9PSJmdW5jdGlvbiI/Ri5hcHBseSh0aGlzLGFyZ3VtZW50cyk6RikuZW5kKCl9KX0sXy5zY2FsZUJ5PWZ1bmN0aW9uKFIsRil7Xy5zY2FsZVRvKFIsZnVuY3Rpb24oKXt2YXIgej10aGlzLl9fem9vbS5rLFU9dHlwZW9mIEY9PSJmdW5jdGlvbiI/Ri5hcHBseSh0aGlzLGFyZ3VtZW50cyk6RjtyZXR1cm4geipVfSl9LF8uc2NhbGVUbz1mdW5jdGlvbihSLEYpe18udHJhbnNmb3JtKFIsZnVuY3Rpb24oKXt2YXIgej10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxVPXRoaXMuX196b29tLFc9Yih6KSxaPVUuaW52ZXJ0KFcpLHJ0PXR5cGVvZiBGPT0iZnVuY3Rpb24iP0YuYXBwbHkodGhpcyxhcmd1bWVudHMpOkY7cmV0dXJuIHIoeCh5KFUscnQpLFcsWikseixhKX0pfSxfLnRyYW5zbGF0ZUJ5PWZ1bmN0aW9uKFIsRix6KXtfLnRyYW5zZm9ybShSLGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5fX3pvb20udHJhbnNsYXRlKHR5cGVvZiBGPT0iZnVuY3Rpb24iP0YuYXBwbHkodGhpcyxhcmd1bWVudHMpOkYsdHlwZW9mIHo9PSJmdW5jdGlvbiI/ei5hcHBseSh0aGlzLGFyZ3VtZW50cyk6eiksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksYSl9KX0sXy50cmFuc2xhdGVUbz1mdW5jdGlvbihSLEYseil7Xy50cmFuc2Zvcm0oUixmdW5jdGlvbigpe3ZhciBVPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLFc9dGhpcy5fX3pvb20sWj1iKFUpO3JldHVybiByKHVTLnRyYW5zbGF0ZShaWzBdLFpbMV0pLnNjYWxlKFcuaykudHJhbnNsYXRlKHR5cGVvZiBGPT0iZnVuY3Rpb24iPy1GLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotRix0eXBlb2Ygej09ImZ1bmN0aW9uIj8tei5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LXopLFUsYSl9KX07ZnVuY3Rpb24geShSLEYpe3JldHVybiBGPU1hdGgubWF4KG9bMF0sTWF0aC5taW4ob1sxXSxGKSksRj09PVIuaz9SOm5ldyBBZihGLFIueCxSLnkpfWZ1bmN0aW9uIHgoUixGLHope3ZhciBVPUZbMF0telswXSpSLmssVz1GWzFdLXpbMV0qUi5rO3JldHVybiBVPT09Ui54JiZXPT09Ui55P1I6bmV3IEFmKFIuayxVLFcpfWZ1bmN0aW9uIGIoUil7cmV0dXJuWygrUlswXVswXSsgK1JbMV1bMF0pLzIsKCtSWzBdWzFdKyArUlsxXVsxXSkvMl19ZnVuY3Rpb24gUyhSLEYseil7Ui5vbigic3RhcnQuem9vbSIsZnVuY3Rpb24oKXtDKHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkub24oImludGVycnVwdC56b29tIGVuZC56b29tIixmdW5jdGlvbigpe0ModGhpcyxhcmd1bWVudHMpLmVuZCgpfSkudHdlZW4oInpvb20iLGZ1bmN0aW9uKCl7dmFyIFU9dGhpcyxXPWFyZ3VtZW50cyxaPUMoVSxXKSxydD10LmFwcGx5KFUsVyksb3Q9enx8YihydCksc3Q9TWF0aC5tYXgocnRbMV1bMF0tcnRbMF1bMF0scnRbMV1bMV0tcnRbMF1bMV0pLFN0PVUuX196b29tLGJ0PXR5cGVvZiBGPT0iZnVuY3Rpb24iP0YuYXBwbHkoVSxXKTpGLE10PWwoU3QuaW52ZXJ0KG90KS5jb25jYXQoc3QvU3QuayksYnQuaW52ZXJ0KG90KS5jb25jYXQoc3QvYnQuaykpO3JldHVybiBmdW5jdGlvbihsdCl7aWYobHQ9PT0xKWx0PWJ0O2Vsc2V7dmFyIEt0PU10KGx0KSxfdD1zdC9LdFsyXTtsdD1uZXcgQWYoX3Qsb3RbMF0tS3RbMF0qX3Qsb3RbMV0tS3RbMV0qX3QpfVouem9vbShudWxsLGx0KX19KX1mdW5jdGlvbiBDKFIsRil7Zm9yKHZhciB6PTAsVT1jLmxlbmd0aCxXO3o8VTsrK3opaWYoKFc9Y1t6XSkudGhhdD09PVIpcmV0dXJuIFc7cmV0dXJuIG5ldyBQKFIsRil9ZnVuY3Rpb24gUChSLEYpe3RoaXMudGhhdD1SLHRoaXMuYXJncz1GLHRoaXMuaW5kZXg9LTEsdGhpcy5hY3RpdmU9MCx0aGlzLmV4dGVudD10LmFwcGx5KFIsRil9UC5wcm90b3R5cGU9e3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuKyt0aGlzLmFjdGl2ZT09PTEmJih0aGlzLmluZGV4PWMucHVzaCh0aGlzKS0xLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbihSLEYpe3JldHVybiB0aGlzLm1vdXNlJiZSIT09Im1vdXNlIiYmKHRoaXMubW91c2VbMV09Ri5pbnZlcnQodGhpcy5tb3VzZVswXSkpLHRoaXMudG91Y2gwJiZSIT09InRvdWNoIiYmKHRoaXMudG91Y2gwWzFdPUYuaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJlIhPT0idG91Y2giJiYodGhpcy50b3VjaDFbMV09Ri5pbnZlcnQodGhpcy50b3VjaDFbMF0pKSx0aGlzLnRoYXQuX196b29tPUYsdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuLS10aGlzLmFjdGl2ZT09PTAmJihjLnNwbGljZSh0aGlzLmluZGV4LDEpLHRoaXMuaW5kZXg9LTEsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihSKXtFbnQobmV3IGVpdChfLFIsdGhpcy50aGF0Ll9fem9vbSksdS5hcHBseSx1LFtSLHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19O2Z1bmN0aW9uIGsoKXtpZighZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuO3ZhciBSPUModGhpcyxhcmd1bWVudHMpLEY9dGhpcy5fX3pvb20sej1NYXRoLm1heChvWzBdLE1hdGgubWluKG9bMV0sRi5rKk1hdGgucG93KDIsbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksVT1uUyh0aGlzKTtpZihSLndoZWVsKShSLm1vdXNlWzBdWzBdIT09VVswXXx8Ui5tb3VzZVswXVsxXSE9PVVbMV0pJiYoUi5tb3VzZVsxXT1GLmludmVydChSLm1vdXNlWzBdPVUpKSxjbGVhclRpbWVvdXQoUi53aGVlbCk7ZWxzZXtpZihGLms9PT16KXJldHVybjtSLm1vdXNlPVtVLEYuaW52ZXJ0KFUpXSxQdih0aGlzKSxSLnN0YXJ0KCl9aFMoKSxSLndoZWVsPXNldFRpbWVvdXQoVyxkKSxSLnpvb20oIm1vdXNlIixyKHgoeShGLHopLFIubW91c2VbMF0sUi5tb3VzZVsxXSksUi5leHRlbnQsYSkpO2Z1bmN0aW9uIFcoKXtSLndoZWVsPW51bGwsUi5lbmQoKX19ZnVuY3Rpb24gTygpe2lmKGZ8fCFlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm47dmFyIFI9Qyh0aGlzLGFyZ3VtZW50cyksRj1wZChZci52aWV3KS5vbigibW91c2Vtb3ZlLnpvb20iLFosITApLm9uKCJtb3VzZXVwLnpvb20iLHJ0LCEwKSx6PW5TKHRoaXMpLFU9WXIuY2xpZW50WCxXPVlyLmNsaWVudFk7UG50KFlyLnZpZXcpLGlGKCksUi5tb3VzZT1beix0aGlzLl9fem9vbS5pbnZlcnQoeildLFB2KHRoaXMpLFIuc3RhcnQoKTtmdW5jdGlvbiBaKCl7aWYoaFMoKSwhUi5tb3ZlZCl7dmFyIG90PVlyLmNsaWVudFgtVSxzdD1Zci5jbGllbnRZLVc7Ui5tb3ZlZD1vdCpvdCtzdCpzdD5nfVIuem9vbSgibW91c2UiLHIoeChSLnRoYXQuX196b29tLFIubW91c2VbMF09blMoUi50aGF0KSxSLm1vdXNlWzFdKSxSLmV4dGVudCxhKSl9ZnVuY3Rpb24gcnQoKXtGLm9uKCJtb3VzZW1vdmUuem9vbSBtb3VzZXVwLnpvb20iLG51bGwpLEludChZci52aWV3LFIubW92ZWQpLGhTKCksUi5lbmQoKX19ZnVuY3Rpb24gRCgpe2lmKCEhZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBSPXRoaXMuX196b29tLEY9blModGhpcyksej1SLmludmVydChGKSxVPVIuayooWXIuc2hpZnRLZXk/LjU6MiksVz1yKHgoeShSLFUpLEYseiksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksYSk7aFMoKSxzPjA/cGQodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKHMpLmNhbGwoUyxXLEYpOnBkKHRoaXMpLmNhbGwoXy50cmFuc2Zvcm0sVyl9fWZ1bmN0aW9uIEIoKXtpZighIWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgUj1DKHRoaXMsYXJndW1lbnRzKSxGPVlyLmNoYW5nZWRUb3VjaGVzLHosVT1GLmxlbmd0aCxXLFoscnQ7Zm9yKGlGKCksVz0wO1c8VTsrK1cpWj1GW1ddLHJ0PXp6KHRoaXMsRixaLmlkZW50aWZpZXIpLHJ0PVtydCx0aGlzLl9fem9vbS5pbnZlcnQocnQpLFouaWRlbnRpZmllcl0sUi50b3VjaDA/Ui50b3VjaDF8fChSLnRvdWNoMT1ydCk6KFIudG91Y2gwPXJ0LHo9ITApO2lmKGgmJihoPWNsZWFyVGltZW91dChoKSwhUi50b3VjaDEpKXtSLmVuZCgpLHJ0PXBkKHRoaXMpLm9uKCJkYmxjbGljay56b29tIikscnQmJnJ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm59eiYmKGg9c2V0VGltZW91dChmdW5jdGlvbigpe2g9bnVsbH0scCksUHYodGhpcyksUi5zdGFydCgpKX19ZnVuY3Rpb24gSSgpe3ZhciBSPUModGhpcyxhcmd1bWVudHMpLEY9WXIuY2hhbmdlZFRvdWNoZXMsej1GLmxlbmd0aCxVLFcsWixydDtmb3IoaFMoKSxoJiYoaD1jbGVhclRpbWVvdXQoaCkpLFU9MDtVPHo7KytVKVc9RltVXSxaPXp6KHRoaXMsRixXLmlkZW50aWZpZXIpLFIudG91Y2gwJiZSLnRvdWNoMFsyXT09PVcuaWRlbnRpZmllcj9SLnRvdWNoMFswXT1aOlIudG91Y2gxJiZSLnRvdWNoMVsyXT09PVcuaWRlbnRpZmllciYmKFIudG91Y2gxWzBdPVopO2lmKFc9Ui50aGF0Ll9fem9vbSxSLnRvdWNoMSl7dmFyIG90PVIudG91Y2gwWzBdLHN0PVIudG91Y2gwWzFdLFN0PVIudG91Y2gxWzBdLGJ0PVIudG91Y2gxWzFdLE10PShNdD1TdFswXS1vdFswXSkqTXQrKE10PVN0WzFdLW90WzFdKSpNdCxsdD0obHQ9YnRbMF0tc3RbMF0pKmx0KyhsdD1idFsxXS1zdFsxXSkqbHQ7Vz15KFcsTWF0aC5zcXJ0KE10L2x0KSksWj1bKG90WzBdK1N0WzBdKS8yLChvdFsxXStTdFsxXSkvMl0scnQ9WyhzdFswXStidFswXSkvMiwoc3RbMV0rYnRbMV0pLzJdfWVsc2UgaWYoUi50b3VjaDApWj1SLnRvdWNoMFswXSxydD1SLnRvdWNoMFsxXTtlbHNlIHJldHVybjtSLnpvb20oInRvdWNoIixyKHgoVyxaLHJ0KSxSLmV4dGVudCxhKSl9ZnVuY3Rpb24gTCgpe3ZhciBSPUModGhpcyxhcmd1bWVudHMpLEY9WXIuY2hhbmdlZFRvdWNoZXMsej1GLmxlbmd0aCxVLFc7Zm9yKGlGKCksZiYmY2xlYXJUaW1lb3V0KGYpLGY9c2V0VGltZW91dChmdW5jdGlvbigpe2Y9bnVsbH0scCksVT0wO1U8ejsrK1UpVz1GW1VdLFIudG91Y2gwJiZSLnRvdWNoMFsyXT09PVcuaWRlbnRpZmllcj9kZWxldGUgUi50b3VjaDA6Ui50b3VjaDEmJlIudG91Y2gxWzJdPT09Vy5pZGVudGlmaWVyJiZkZWxldGUgUi50b3VjaDE7Ui50b3VjaDEmJiFSLnRvdWNoMCYmKFIudG91Y2gwPVIudG91Y2gxLGRlbGV0ZSBSLnRvdWNoMSksUi50b3VjaDA/Ui50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KFIudG91Y2gwWzBdKTpSLmVuZCgpfXJldHVybiBfLndoZWVsRGVsdGE9ZnVuY3Rpb24oUil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIFI9PSJmdW5jdGlvbiI/UjpOQSgrUiksXyk6bn0sXy5maWx0ZXI9ZnVuY3Rpb24oUil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIFI9PSJmdW5jdGlvbiI/UjpOQSghIVIpLF8pOmV9LF8udG91Y2hhYmxlPWZ1bmN0aW9uKFIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBSPT0iZnVuY3Rpb24iP1I6TkEoISFSKSxfKTppfSxfLmV4dGVudD1mdW5jdGlvbihSKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgUj09ImZ1bmN0aW9uIj9SOk5BKFtbK1JbMF1bMF0sK1JbMF1bMV1dLFsrUlsxXVswXSwrUlsxXVsxXV1dKSxfKTp0fSxfLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKFIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvWzBdPStSWzBdLG9bMV09K1JbMV0sXyk6W29bMF0sb1sxXV19LF8udHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKFIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhWzBdWzBdPStSWzBdWzBdLGFbMV1bMF09K1JbMV1bMF0sYVswXVsxXT0rUlswXVsxXSxhWzFdWzFdPStSWzFdWzFdLF8pOltbYVswXVswXSxhWzBdWzFdXSxbYVsxXVswXSxhWzFdWzFdXV19LF8uY29uc3RyYWluPWZ1bmN0aW9uKFIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPVIsXyk6cn0sXy5kdXJhdGlvbj1mdW5jdGlvbihSKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rUixfKTpzfSxfLmludGVycG9sYXRlPWZ1bmN0aW9uKFIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPVIsXyk6bH0sXy5vbj1mdW5jdGlvbigpe3ZhciBSPXUub24uYXBwbHkodSxhcmd1bWVudHMpO3JldHVybiBSPT09dT9fOlJ9LF8uY2xpY2tEaXN0YW5jZT1mdW5jdGlvbihSKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0oUj0rUikqUixfKTpNYXRoLnNxcnQoZyl9LF99dmFyIERqdD1NKCgpPT57ZG50KCk7dFl0KCk7RUEoKTtQcygpO1BqdCgpO0lqdCgpO0xqdCgpO3JpdCgpO2tqdCgpfSk7dmFyIE9qdD1NKCgpPT57RGp0KCk7cml0KCl9KTt2YXIgTXI9e307JHMoTXIse2FjdGl2ZTooKT0+YUd0LGFyYzooKT0+c0Z0LGFyZWE6KCk9Pnk3LGFyZWFSYWRpYWw6KCk9PkxldCxhc2NlbmRpbmc6KCk9Pm1jLGF4aXNCb3R0b206KCk9PlVNdCxheGlzTGVmdDooKT0+cU10LGF4aXNSaWdodDooKT0+Vk10LGF4aXNUb3A6KCk9PkhNdCxiaXNlY3Q6KCk9PmlSLGJpc2VjdExlZnQ6KCk9PkozdCxiaXNlY3RSaWdodDooKT0+diQsYmlzZWN0b3I6KCk9Pm5SLGJydXNoOigpPT5jQ3QsYnJ1c2hTZWxlY3Rpb246KCk9PmFDdCxicnVzaFg6KCk9PnNDdCxicnVzaFk6KCk9PmxDdCxjaG9yZDooKT0+UkN0LGNsaWVudFBvaW50OigpPT5EZyxjbHVzdGVyOigpPT5ETHQsY29sb3I6KCk9PnYyLGNyZWF0ZTooKT0+V3p0LGNyZWF0b3I6KCk9Pk5nLGNyb3NzOigpPT50TXQsY3N2OigpPT5pTnQsY3N2Rm9ybWF0OigpPT5jUHQsY3N2Rm9ybWF0Um93czooKT0+dVB0LGNzdlBhcnNlOigpPT5zUHQsY3N2UGFyc2VSb3dzOigpPT5sUHQsY3ViZWhlbGl4OigpPT5zTixjdXJ2ZUJhc2lzOigpPT5DRnQsY3VydmVCYXNpc0Nsb3NlZDooKT0+UEZ0LGN1cnZlQmFzaXNPcGVuOigpPT5rRnQsY3VydmVCdW5kbGU6KCk9PkRGdCxjdXJ2ZUNhcmRpbmFsOigpPT56RnQsY3VydmVDYXJkaW5hbENsb3NlZDooKT0+RkZ0LGN1cnZlQ2FyZGluYWxPcGVuOigpPT5CRnQsY3VydmVDYXRtdWxsUm9tOigpPT5WRnQsY3VydmVDYXRtdWxsUm9tQ2xvc2VkOigpPT5xRnQsY3VydmVDYXRtdWxsUm9tT3BlbjooKT0+WUZ0LGN1cnZlTGluZWFyOigpPT5GZyxjdXJ2ZUxpbmVhckNsb3NlZDooKT0+JEZ0LGN1cnZlTW9ub3RvbmVYOigpPT5yQnQsY3VydmVNb25vdG9uZVk6KCk9Pm5CdCxjdXJ2ZU5hdHVyYWw6KCk9PnNCdCxjdXJ2ZVN0ZXA6KCk9PmNCdCxjdXJ2ZVN0ZXBBZnRlcjooKT0+aEJ0LGN1cnZlU3RlcEJlZm9yZTooKT0+dUJ0LGN1c3RvbUV2ZW50OigpPT5CenQsZGVzY2VuZGluZzooKT0+ck10LGRldmlhdGlvbjooKT0+YVIsZGlzcGF0Y2g6KCk9PlNBdCxkcmFnOigpPT5yUHQsZHJhZ0Rpc2FibGU6KCk9PndOLGRyYWdFbmFibGU6KCk9PlNOLGRzdkZvcm1hdDooKT0+YjIsZWFzZUJhY2s6KCk9PkRaLGVhc2VCYWNrSW46KCk9PnFQdCxlYXNlQmFja0luT3V0OigpPT5EWixlYXNlQmFja091dDooKT0+R1B0LGVhc2VCb3VuY2U6KCk9PncyLGVhc2VCb3VuY2VJbjooKT0+SFB0LGVhc2VCb3VuY2VJbk91dDooKT0+VlB0LGVhc2VCb3VuY2VPdXQ6KCk9PncyLGVhc2VDaXJjbGU6KCk9PmtaLGVhc2VDaXJjbGVJbjooKT0+elB0LGVhc2VDaXJjbGVJbk91dDooKT0+a1osZWFzZUNpcmNsZU91dDooKT0+RlB0LGVhc2VDdWJpYzooKT0+Q1osZWFzZUN1YmljSW46KCk9PlNQdCxlYXNlQ3ViaWNJbk91dDooKT0+Q1osZWFzZUN1YmljT3V0OigpPT5NUHQsZWFzZUVsYXN0aWM6KCk9PkZaLGVhc2VFbGFzdGljSW46KCk9PllQdCxlYXNlRWxhc3RpY0luT3V0OigpPT5qUHQsZWFzZUVsYXN0aWNPdXQ6KCk9PkZaLGVhc2VFeHA6KCk9PkxaLGVhc2VFeHBJbjooKT0+TlB0LGVhc2VFeHBJbk91dDooKT0+TFosZWFzZUV4cE91dDooKT0+RFB0LGVhc2VMaW5lYXI6KCk9PnlQdCxlYXNlUG9seTooKT0+UFosZWFzZVBvbHlJbjooKT0+VFB0LGVhc2VQb2x5SW5PdXQ6KCk9PlBaLGVhc2VQb2x5T3V0OigpPT5DUHQsZWFzZVF1YWQ6KCk9PlRaLGVhc2VRdWFkSW46KCk9PnhQdCxlYXNlUXVhZEluT3V0OigpPT5UWixlYXNlUXVhZE91dDooKT0+YlB0LGVhc2VTaW46KCk9PklaLGVhc2VTaW5JbjooKT0+TFB0LGVhc2VTaW5Jbk91dDooKT0+SVosZWFzZVNpbk91dDooKT0+a1B0LGVudHJpZXM6KCk9PnJBdCxldmVudDooKT0+QXUsZXh0ZW50OigpPT5zUixmb3JjZUNlbnRlcjooKT0+S1B0LGZvcmNlQ29sbGlkZTooKT0+UDZ0LGZvcmNlTGluazooKT0+RjZ0LGZvcmNlTWFueUJvZHk6KCk9PlE2dCxmb3JjZVJhZGlhbDooKT0+ZUl0LGZvcmNlU2ltdWxhdGlvbjooKT0+SjZ0LGZvcmNlWDooKT0+bkl0LGZvcmNlWTooKT0+b0l0LGZvcm1hdDooKT0+ZUosZm9ybWF0RGVmYXVsdExvY2FsZTooKT0+VU4sZm9ybWF0TG9jYWxlOigpPT5ITixmb3JtYXRQcmVmaXg6KCk9PnJKLGZvcm1hdFNwZWNpZmllcjooKT0+THksZ2VvQWxiZXJzOigpPT5rRCxnZW9BbGJlcnNVc2E6KCk9PnVMdCxnZW9BcmVhOigpPT5SSXQsZ2VvQXppbXV0aGFsRXF1YWxBcmVhOigpPT5mTHQsZ2VvQXppbXV0aGFsRXF1YWxBcmVhUmF3OigpPT5ORCxnZW9BemltdXRoYWxFcXVpZGlzdGFudDooKT0+ZEx0LGdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3OigpPT5ERCxnZW9Cb3VuZHM6KCk9PlZJdCxnZW9DZW50cm9pZDooKT0+WEl0LGdlb0NpcmNsZTooKT0+ZTl0LGdlb0NsaXBBbnRpbWVyaWRpYW46KCk9Pk5ULGdlb0NsaXBDaXJjbGU6KCk9PmRELGdlb0NsaXBFeHRlbnQ6KCk9Pk05dCxnZW9DbGlwUmVjdGFuZ2xlOigpPT5RcCxnZW9Db25pY0NvbmZvcm1hbDooKT0+X0x0LGdlb0NvbmljQ29uZm9ybWFsUmF3OigpPT5oUSxnZW9Db25pY0VxdWFsQXJlYTooKT0+VXksZ2VvQ29uaWNFcXVhbEFyZWFSYXc6KCk9PmxRLGdlb0NvbmljRXF1aWRpc3RhbnQ6KCk9PnhMdCxnZW9Db25pY0VxdWlkaXN0YW50UmF3OigpPT5wUSxnZW9Db250YWluczooKT0+azl0LGdlb0Rpc3RhbmNlOigpPT5CeSxnZW9FcXVpcmVjdGFuZ3VsYXI6KCk9PnZMdCxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6KCk9Pkd5LGdlb0dub21vbmljOigpPT53THQsZ2VvR25vbW9uaWNSYXc6KCk9PkZELGdlb0dyYXRpY3VsZTooKT0+eEQsZ2VvR3JhdGljdWxlMTA6KCk9Pk85dCxnZW9JZGVudGl0eTooKT0+TUx0LGdlb0ludGVycG9sYXRlOigpPT5GOXQsZ2VvTGVuZ3RoOigpPT55RCxnZW9NZXJjYXRvcjooKT0+Z0x0LGdlb01lcmNhdG9yUmF3OigpPT5xeSxnZW9OYXR1cmFsRWFydGgxOigpPT5UTHQsZ2VvTmF0dXJhbEVhcnRoMVJhdzooKT0+SEQsZ2VvT3J0aG9ncmFwaGljOigpPT5BTHQsZ2VvT3J0aG9ncmFwaGljUmF3OigpPT5WRCxnZW9QYXRoOigpPT5uTHQsZ2VvUHJvamVjdGlvbjooKT0+dG8sZ2VvUHJvamVjdGlvbk11dGF0b3I6KCk9PnFULGdlb1JvdGF0aW9uOigpPT5vRCxnZW9TdGVyZW9ncmFwaGljOigpPT5JTHQsZ2VvU3RlcmVvZ3JhcGhpY1JhdzooKT0+VUQsZ2VvU3RyZWFtOigpPT5TbyxnZW9UcmFuc2Zvcm06KCk9Pm9MdCxnZW9UcmFuc3ZlcnNlTWVyY2F0b3I6KCk9PmtMdCxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6KCk9PnFELGhjbDooKT0+blosaGllcmFyY2h5OigpPT5HVCxoaXN0b2dyYW06KCk9PmhNdCxoc2w6KCk9PktLLGh0bWw6KCk9PktSdCxpbnRlcnBvbGF0ZTooKT0+SzIsaW50ZXJwb2xhdGVBcnJheTooKT0+Y08saW50ZXJwb2xhdGVCYXNpczooKT0+YU8saW50ZXJwb2xhdGVCYXNpc0Nsb3NlZDooKT0+bE8saW50ZXJwb2xhdGVDb29sOigpPT5nN3QsaW50ZXJwb2xhdGVDdWJlaGVsaXg6KCk9Pk44dCxpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6KCk9PnA3dCxpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc6KCk9PkQ4dCxpbnRlcnBvbGF0ZURhdGU6KCk9PmhPLGludGVycG9sYXRlSGNsOigpPT5JOHQsaW50ZXJwb2xhdGVIY2xMb25nOigpPT5MOHQsaW50ZXJwb2xhdGVIc2w6KCk9PkU4dCxpbnRlcnBvbGF0ZUhzbExvbmc6KCk9PlQ4dCxpbnRlcnBvbGF0ZUluZmVybm86KCk9PmI3dCxpbnRlcnBvbGF0ZUxhYjooKT0+WFEsaW50ZXJwb2xhdGVNYWdtYTooKT0+eDd0LGludGVycG9sYXRlTnVtYmVyOigpPT5DcyxpbnRlcnBvbGF0ZU9iamVjdDooKT0+Zk8saW50ZXJwb2xhdGVQbGFzbWE6KCk9Pnc3dCxpbnRlcnBvbGF0ZVJhaW5ib3c6KCk9Pl83dCxpbnRlcnBvbGF0ZVJnYjooKT0+SlQsaW50ZXJwb2xhdGVSZ2JCYXNpczooKT0+YTh0LGludGVycG9sYXRlUmdiQmFzaXNDbG9zZWQ6KCk9PnM4dCxpbnRlcnBvbGF0ZVJvdW5kOigpPT5sOHQsaW50ZXJwb2xhdGVTdHJpbmc6KCk9PnBPLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOigpPT5fOHQsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6KCk9Pnk4dCxpbnRlcnBvbGF0ZVZpcmlkaXM6KCk9PnY3dCxpbnRlcnBvbGF0ZVdhcm06KCk9Pm03dCxpbnRlcnBvbGF0ZVpvb206KCk9Pnc4dCxpbnRlcnJ1cHQ6KCk9Pmh6LGludGVydmFsOigpPT5nVnQsaXNvRm9ybWF0OigpPT5zVnQsaXNvUGFyc2U6KCk9PmxWdCxqc29uOigpPT5KUnQsa2V5czooKT0+SkN0LGxhYjooKT0+b04sbGluZTooKT0+a3csbGluZVJhZGlhbDooKT0+UGV0LGxpbmtIb3Jpem9udGFsOigpPT55RnQsbGlua1JhZGlhbDooKT0+eEZ0LGxpbmtWZXJ0aWNhbDooKT0+dkZ0LGxvY2FsOigpPT5mNyxtYXA6KCk9PmJ5LG1hdGNoZXI6KCk9PnM3LG1heDooKT0+X010LG1lYW46KCk9PnZNdCxtZWRpYW46KCk9PmJNdCxtZXJnZTooKT0+U010LG1pbjooKT0+ZlIsbW91c2U6KCk9Plh6dCxuYW1lc3BhY2U6KCk9PlN3LG5hbWVzcGFjZXM6KCk9PndDLG5lc3Q6KCk9PmpDdCxub3c6KCk9Pld3LHBhY2s6KCk9Pl9rdCxwYWNrRW5jbG9zZTooKT0+WUQscGFja1NpYmxpbmdzOigpPT5wa3QscGFpcnM6KCk9PlEzdCxwYXJ0aXRpb246KCk9PnZrdCxwYXRoOigpPT5WOHQscGVybXV0ZTooKT0+RU10LHBpZTooKT0+ZEZ0LHBvaW50UmFkaWFsOigpPT5mdixwb2x5Z29uQXJlYTooKT0+Rzh0LHBvbHlnb25DZW50cm9pZDooKT0+WTh0LHBvbHlnb25Db250YWluczooKT0+UTh0LHBvbHlnb25IdWxsOigpPT5aOHQscG9seWdvbkxlbmd0aDooKT0+ZVJ0LHByZWNpc2lvbkZpeGVkOigpPT52SXQscHJlY2lzaW9uUHJlZml4OigpPT5iSXQscHJlY2lzaW9uUm91bmQ6KCk9PlNJdCxxdWFkdHJlZTooKT0+X08scXVhbnRpbGU6KCk9PmR5LHF1YW50aXplOigpPT56OHQscXVldWU6KCk9PnZPLHJhZGlhbEFyZWE6KCk9PkxldCxyYWRpYWxMaW5lOigpPT5QZXQscmFuZG9tQmF0ZXM6KCk9PldSdCxyYW5kb21FeHBvbmVudGlhbDooKT0+alJ0LHJhbmRvbUlyd2luSGFsbDooKT0+Yk8scmFuZG9tTG9nTm9ybWFsOigpPT5xUnQscmFuZG9tTm9ybWFsOigpPT54TyxyYW5kb21Vbmlmb3JtOigpPT5WUnQscmFuZ2U6KCk9PmxSLHJlcXVlc3Q6KCk9PloyLHJnYjooKT0+JEsscmliYm9uOigpPT5WQ3Qsc2NhbGVCYW5kOigpPT5hQyxzY2FsZUlkZW50aXR5OigpPT5ITyxzY2FsZUltcGxpY2l0OigpPT5QTyxzY2FsZUxpbmVhcjooKT0+Qk8sc2NhbGVMb2c6KCk9PlVPLHNjYWxlT3JkaW5hbDooKT0+cncsc2NhbGVQb2ludDooKT0+ek50LHNjYWxlUG93OigpPT5kQyxzY2FsZVF1YW50aWxlOigpPT5xTyxzY2FsZVF1YW50aXplOigpPT5HTyxzY2FsZVNlcXVlbnRpYWw6KCk9PmU3LHNjYWxlU3FydDooKT0+WkR0LHNjYWxlVGhyZXNob2xkOigpPT5XTyxzY2FsZVRpbWU6KCk9PnI3dCxzY2FsZVV0YzooKT0+bjd0LHNjYW46KCk9PkNNdCxzY2hlbWVDYXRlZ29yeTEwOigpPT5vN3Qsc2NoZW1lQ2F0ZWdvcnkyMDooKT0+aDd0LHNjaGVtZUNhdGVnb3J5MjBiOigpPT5zN3Qsc2NoZW1lQ2F0ZWdvcnkyMGM6KCk9PmM3dCxzZWxlY3Q6KCk9Pmg3LHNlbGVjdEFsbDooKT0+S3p0LHNlbGVjdGlvbjooKT0+R3p0LHNlbGVjdG9yOigpPT5NdyxzZWxlY3RvckFsbDooKT0+YTcsc2V0OigpPT5LQ3Qsc2h1ZmZsZTooKT0+UE10LHN0YWNrOigpPT5wQnQsc3RhY2tPZmZzZXREaXZlcmdpbmc6KCk9Pl9CdCxzdGFja09mZnNldEV4cGFuZDooKT0+bUJ0LHN0YWNrT2Zmc2V0Tm9uZTooKT0+a3Usc3RhY2tPZmZzZXRTaWxob3VldHRlOigpPT52QnQsc3RhY2tPZmZzZXRXaWdnbGU6KCk9PmJCdCxzdGFja09yZGVyQXNjZW5kaW5nOigpPT5rNyxzdGFja09yZGVyRGVzY2VuZGluZzooKT0+U0J0LHN0YWNrT3JkZXJJbnNpZGVPdXQ6KCk9PkVCdCxzdGFja09yZGVyTm9uZTooKT0+UnUsc3RhY2tPcmRlclJldmVyc2U6KCk9PkNCdCxzdHJhdGlmeTooKT0+U2t0LHN0eWxlOigpPT5nZXQsc3VtOigpPT5MTXQsc3ltYm9sOigpPT5FRnQsc3ltYm9sQ2lyY2xlOigpPT5JQyxzeW1ib2xDcm9zczooKT0+eDcsc3ltYm9sRGlhbW9uZDooKT0+Yjcsc3ltYm9sU3F1YXJlOigpPT5TNyxzeW1ib2xTdGFyOigpPT53NyxzeW1ib2xUcmlhbmdsZTooKT0+TTcsc3ltYm9sV3llOigpPT5FNyxzeW1ib2xzOigpPT5NRnQsdGV4dDooKT0+dE50LHRocmVzaG9sZEZyZWVkbWFuRGlhY29uaXM6KCk9PnBNdCx0aHJlc2hvbGRTY290dDooKT0+bU10LHRocmVzaG9sZFN0dXJnZXM6KCk9PnVSLHRpY2tJbmNyZW1lbnQ6KCk9PkwkLHRpY2tTdGVwOigpPT5jUix0aWNrczooKT0+dU10LHRpbWVEYXk6KCk9PlVCdCx0aW1lRGF5czooKT0+cUJ0LHRpbWVGb3JtYXQ6KCk9PmJydCx0aW1lRm9ybWF0RGVmYXVsdExvY2FsZTooKT0+VzcsdGltZUZvcm1hdExvY2FsZTooKT0+cUMsdGltZUZyaWRheTooKT0+aXJ0LHRpbWVGcmlkYXlzOigpPT4kQnQsdGltZUhvdXI6KCk9PkZCdCx0aW1lSG91cnM6KCk9PkJCdCx0aW1lSW50ZXJ2YWw6KCk9PlNyLHRpbWVNaWxsaXNlY29uZDooKT0+S2V0LHRpbWVNaWxsaXNlY29uZHM6KCk9PlpldCx0aW1lTWludXRlOigpPT5OQnQsdGltZU1pbnV0ZXM6KCk9PkRCdCx0aW1lTW9uZGF5OigpPT50cnQsdGltZU1vbmRheXM6KCk9PldCdCx0aW1lTW9udGg6KCk9PlFCdCx0aW1lTW9udGhzOigpPT50SHQsdGltZVBhcnNlOigpPT53cnQsdGltZVNhdHVyZGF5OigpPT5vcnQsdGltZVNhdHVyZGF5czooKT0+S0J0LHRpbWVTZWNvbmQ6KCk9PkpldCx0aW1lU2Vjb25kczooKT0+UWV0LHRpbWVTdW5kYXk6KCk9Pno3LHRpbWVTdW5kYXlzOigpPT5hcnQsdGltZVRodXJzZGF5OigpPT5ucnQsdGltZVRodXJzZGF5czooKT0+WEJ0LHRpbWVUdWVzZGF5OigpPT5lcnQsdGltZVR1ZXNkYXlzOigpPT5ZQnQsdGltZVdlZG5lc2RheTooKT0+cnJ0LHRpbWVXZWRuZXNkYXlzOigpPT5qQnQsdGltZVdlZWs6KCk9Pno3LHRpbWVXZWVrczooKT0+YXJ0LHRpbWVZZWFyOigpPT5ySHQsdGltZVllYXJzOigpPT5uSHQsdGltZW91dDooKT0+ZFZ0LHRpbWVyOigpPT5UcnQsdGltZXJGbHVzaDooKT0+Q3J0LHRvdWNoOigpPT5KenQsdG91Y2hlczooKT0+dEZ0LHRyYW5zaXRpb246KCk9PlN6LHRyYW5zcG9zZTooKT0+cFIsdHJlZTooKT0+RWt0LHRyZWVtYXA6KCk9PkNrdCx0cmVlbWFwQmluYXJ5OigpPT5Qa3QsdHJlZW1hcERpY2U6KCk9PnNmLHRyZWVtYXBSZXNxdWFyaWZ5OigpPT5Sa3QsdHJlZW1hcFNsaWNlOigpPT53Zyx0cmVlbWFwU2xpY2VEaWNlOigpPT5Ma3QsdHJlZW1hcFNxdWFyaWZ5OigpPT5aRCx0c3Y6KCk9PmFOdCx0c3ZGb3JtYXQ6KCk9PmRQdCx0c3ZGb3JtYXRSb3dzOigpPT5tUHQsdHN2UGFyc2U6KCk9PmZQdCx0c3ZQYXJzZVJvd3M6KCk9PnBQdCx1dGNEYXk6KCk9PmRIdCx1dGNEYXlzOigpPT5tSHQsdXRjRm9ybWF0OigpPT5HQyx1dGNGcmlkYXk6KCk9PmZydCx1dGNGcmlkYXlzOigpPT5iSHQsdXRjSG91cjooKT0+dUh0LHV0Y0hvdXJzOigpPT5oSHQsdXRjTWlsbGlzZWNvbmQ6KCk9PktldCx1dGNNaWxsaXNlY29uZHM6KCk9PlpldCx1dGNNaW51dGU6KCk9PmFIdCx1dGNNaW51dGVzOigpPT5zSHQsdXRjTW9uZGF5OigpPT5scnQsdXRjTW9uZGF5czooKT0+X0h0LHV0Y01vbnRoOigpPT5FSHQsdXRjTW9udGhzOigpPT5USHQsdXRjUGFyc2U6KCk9PldDLHV0Y1NhdHVyZGF5OigpPT5wcnQsdXRjU2F0dXJkYXlzOigpPT53SHQsdXRjU2Vjb25kOigpPT5KZXQsdXRjU2Vjb25kczooKT0+UWV0LHV0Y1N1bmRheTooKT0+RjcsdXRjU3VuZGF5czooKT0+ZHJ0LHV0Y1RodXJzZGF5OigpPT5ocnQsdXRjVGh1cnNkYXlzOigpPT54SHQsdXRjVHVlc2RheTooKT0+Y3J0LHV0Y1R1ZXNkYXlzOigpPT55SHQsdXRjV2VkbmVzZGF5OigpPT51cnQsdXRjV2VkbmVzZGF5czooKT0+dkh0LHV0Y1dlZWs6KCk9PkY3LHV0Y1dlZWtzOigpPT5kcnQsdXRjWWVhcjooKT0+QUh0LHV0Y1llYXJzOigpPT5QSHQsdmFsdWVzOigpPT50QXQsdmFyaWFuY2U6KCk9Pm9SLHZlcnNpb246KCk9PiQzdCx2b3Jvbm9pOigpPT5UR3Qsd2luZG93OigpPT5Udyx4bWw6KCk9PnJOdCx6aXA6KCk9PlJNdCx6b29tOigpPT5OanQsem9vbUlkZW50aXR5OigpPT51Uyx6b29tVHJhbnNmb3JtOigpPT5uRn0pO3ZhciBFcj1NKCgpPT57SzN0KCk7RE10KCk7V010KCk7aEN0KCk7cUN0KCk7aUF0KCk7eEF0KCk7RUF0KCk7aVB0KCk7X1B0KCk7JFB0KCk7c0l0KCk7RUl0KCk7Tkx0KCk7RGt0KCk7Qjh0KCk7cTh0KCk7blJ0KCk7RFJ0KCk7SFJ0KCk7JFJ0KCk7bE50KCk7RTd0KCk7ckZ0KCk7UEJ0KCk7TEh0KCk7dVZ0KCk7eVZ0KCk7bEd0KCk7QUd0KCk7T2p0KCl9KTt2YXIgSGp0PUgoQmp0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCanQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6anQ9KEVyKCksVXQoTXIpKSxXZz16anQsRmp0PXpqdDtmdW5jdGlvbiBORGUoZSx0KXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1XZy5zZWxlY3QodGhpcyk7Zm9yKHZhciBpIGluIHIpbi5hdHRyKGkscltpXSl9KX1mdW5jdGlvbiBERGUoZSx0KXtmb3IodmFyIHIgaW4gdCllLmF0dHIocix0W3JdKTtyZXR1cm4gZX1mdW5jdGlvbiBPRGUoZSl7cmV0dXJuKHR5cGVvZiBlPT0iZnVuY3Rpb24iP05EZTpERGUpKHRoaXMsZSl9ZnVuY3Rpb24gekRlKGUsdCxyKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksaT1XZy5zZWxlY3QodGhpcyk7Zm9yKHZhciBvIGluIG4paS5zdHlsZShvLG5bb10scil9KX1mdW5jdGlvbiBGRGUoZSx0LHIpe2Zvcih2YXIgbiBpbiB0KWUuc3R5bGUobix0W25dLHIpO3JldHVybiBlfWZ1bmN0aW9uIEJEZShlLHQpe3JldHVybih0eXBlb2YgZT09ImZ1bmN0aW9uIj96RGU6RkRlKSh0aGlzLGUsdD09bnVsbD8iIjp0KX1mdW5jdGlvbiBIRGUoZSx0KXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1XZy5zZWxlY3QodGhpcyk7Zm9yKHZhciBpIGluIHIpbi5wcm9wZXJ0eShpLHJbaV0pfSl9ZnVuY3Rpb24gVkRlKGUsdCl7Zm9yKHZhciByIGluIHQpZS5wcm9wZXJ0eShyLHRbcl0pO3JldHVybiBlfWZ1bmN0aW9uIFVEZShlKXtyZXR1cm4odHlwZW9mIGU9PSJmdW5jdGlvbiI/SERlOlZEZSkodGhpcyxlKX1mdW5jdGlvbiBxRGUoZSx0KXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1XZy5zZWxlY3QodGhpcykudHJhbnNpdGlvbihlKTtmb3IodmFyIGkgaW4gciluLmF0dHIoaSxyW2ldKX0pfWZ1bmN0aW9uIEdEZShlLHQpe2Zvcih2YXIgciBpbiB0KWUuYXR0cihyLHRbcl0pO3JldHVybiBlfWZ1bmN0aW9uIFdEZShlKXtyZXR1cm4odHlwZW9mIGU9PSJmdW5jdGlvbiI/cURlOkdEZSkodGhpcyxlKX1mdW5jdGlvbiBZRGUoZSx0LHIpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPVdnLnNlbGVjdCh0aGlzKS50cmFuc2l0aW9uKGUpO2Zvcih2YXIgbyBpbiBuKWkuc3R5bGUobyxuW29dLHIpfSl9ZnVuY3Rpb24gakRlKGUsdCxyKXtmb3IodmFyIG4gaW4gdCllLnN0eWxlKG4sdFtuXSxyKTtyZXR1cm4gZX1mdW5jdGlvbiBYRGUoZSx0KXtyZXR1cm4odHlwZW9mIGU9PSJmdW5jdGlvbiI/WURlOmpEZSkodGhpcyxlLHQ9PW51bGw/IiI6dCl9V2cuc2VsZWN0aW9uLnByb3RvdHlwZS5hdHRycz1PRGU7V2cuc2VsZWN0aW9uLnByb3RvdHlwZS5zdHlsZXM9QkRlO1dnLnNlbGVjdGlvbi5wcm90b3R5cGUucHJvcGVydGllcz1VRGU7Rmp0LnRyYW5zaXRpb24ucHJvdG90eXBlLmF0dHJzPVdEZTtGanQudHJhbnNpdGlvbi5wcm90b3R5cGUuc3R5bGVzPVhEZX0pO3ZhciBZZz1IKG5pdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobml0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVmp0PShFcigpLFV0KE1yKSk7ZnVuY3Rpb24gJERlKGUpe2lmKGUuYXR0cnM9PW51bGwpaWYoZS5ub2Rlcz09bnVsbCl7dmFyIHQ9W107cmV0dXJuIGUuZWFjaChmdW5jdGlvbigpe3QucHVzaCh0aGlzKX0pLFZqdC5zZWxlY3RBbGwodCl9ZWxzZSByZXR1cm4gVmp0LnNlbGVjdEFsbChlLm5vZGVzKCkpO2Vsc2UgcmV0dXJuIGV9bml0LmNvZXJjZUV4dGVybmFsRDM9JERlfSk7dmFyIFBmPUgoaWl0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShpaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2Z1bmN0aW9uIEtEZShlKXtyZXR1cm4gZS5yZWR1Y2UoZnVuY3Rpb24odCxyKXtyZXR1cm4gdFtyXT1yLHR9LHt9KX1paXQubWFrZUVudW09S0RlfSk7dmFyIHFqdD1IKG9GPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvRiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGRyPShJXygpLFV0KEl2dCkpLFpEZT1ZZygpLEpEZT1QZigpLFVqdD17bGluZWFyOmRyLmVhc2VMaW5lYXIscXVhZDpkci5lYXNlUXVhZCxxdWFkSW46ZHIuZWFzZVF1YWRJbixxdWFkT3V0OmRyLmVhc2VRdWFkT3V0LHF1YWRJbk91dDpkci5lYXNlUXVhZEluT3V0LGN1YmljOmRyLmVhc2VDdWJpYyxjdWJpY0luOmRyLmVhc2VDdWJpY0luLGN1YmljT3V0OmRyLmVhc2VDdWJpY091dCxjdWJpY0luT3V0OmRyLmVhc2VDdWJpY0luT3V0LHBvbHk6ZHIuZWFzZVBvbHkscG9seUluOmRyLmVhc2VQb2x5SW4scG9seU91dDpkci5lYXNlUG9seU91dCxwb2x5SW5PdXQ6ZHIuZWFzZVBvbHlJbk91dCxzaW46ZHIuZWFzZVNpbixzaW5Jbjpkci5lYXNlU2luSW4sc2luT3V0OmRyLmVhc2VTaW5PdXQsc2luSW5PdXQ6ZHIuZWFzZVNpbkluT3V0LGV4cDpkci5lYXNlRXhwLGV4cEluOmRyLmVhc2VFeHBJbixleHBPdXQ6ZHIuZWFzZUV4cE91dCxleHBJbk91dDpkci5lYXNlRXhwSW5PdXQsY2lyY2xlOmRyLmVhc2VDaXJjbGUsY2lyY2xlSW46ZHIuZWFzZUNpcmNsZUluLGNpcmNsZU91dDpkci5lYXNlQ2lyY2xlT3V0LGNpcmNsZUluT3V0OmRyLmVhc2VDaXJjbGVJbk91dCxib3VuY2U6ZHIuZWFzZUJvdW5jZSxib3VuY2VJbjpkci5lYXNlQm91bmNlSW4sYm91bmNlT3V0OmRyLmVhc2VCb3VuY2VPdXQsYm91bmNlSW5PdXQ6ZHIuZWFzZUJvdW5jZUluT3V0LGJhY2s6ZHIuZWFzZUJhY2ssYmFja0luOmRyLmVhc2VCYWNrSW4sYmFja091dDpkci5lYXNlQmFja091dCxiYWNrSW5PdXQ6ZHIuZWFzZUJhY2tJbk91dCxlbGFzdGljOmRyLmVhc2VFbGFzdGljLGVsYXN0aWNJbjpkci5lYXNlRWxhc3RpY0luLGVsYXN0aWNPdXQ6ZHIuZWFzZUVsYXN0aWNPdXQsZWxhc3RpY0luT3V0OmRyLmVhc2VFbGFzdGljSW5PdXR9O29GLkVhc2VOYW1lPUpEZS5tYWtlRW51bShbImxpbmVhciIsInF1YWQiLCJxdWFkSW4iLCJxdWFkT3V0IiwicXVhZEluT3V0IiwiY3ViaWMiLCJjdWJpY0luIiwiY3ViaWNPdXQiLCJjdWJpY0luT3V0IiwicG9seSIsInBvbHlJbiIsInBvbHlPdXQiLCJwb2x5SW5PdXQiLCJzaW4iLCJzaW5JbiIsInNpbk91dCIsInNpbkluT3V0IiwiZXhwIiwiZXhwSW4iLCJleHBPdXQiLCJleHBJbk91dCIsImNpcmNsZSIsImNpcmNsZUluIiwiY2lyY2xlT3V0IiwiY2lyY2xlSW5PdXQiLCJib3VuY2UiLCJib3VuY2VJbiIsImJvdW5jZU91dCIsImJvdW5jZUluT3V0IiwiYmFjayIsImJhY2tJbiIsImJhY2tPdXQiLCJiYWNrSW5PdXQiLCJlbGFzdGljIiwiZWxhc3RpY0luIiwiZWxhc3RpY091dCIsImVsYXN0aWNJbk91dCJdKTt2YXIgUURlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX3N0YXJ0RGVsYXk9ZS5fREVGQVVMVF9TVEFSVF9ERUxBWV9NSUxMSVNFQ09ORFMsdGhpcy5fc3RlcER1cmF0aW9uPWUuX0RFRkFVTFRfU1RFUF9EVVJBVElPTl9NSUxMSVNFQ09ORFMsdGhpcy5fc3RlcERlbGF5PWUuX0RFRkFVTFRfSVRFUkFUSVZFX0RFTEFZX01JTExJU0VDT05EUyx0aGlzLl9tYXhUb3RhbER1cmF0aW9uPWUuX0RFRkFVTFRfTUFYX1RPVEFMX0RVUkFUSU9OX01JTExJU0VDT05EUyx0aGlzLl9lYXNpbmdNb2RlPWUuX0RFRkFVTFRfRUFTSU5HX01PREV9cmV0dXJuIGUucHJvdG90eXBlLnRvdGFsVGltZT1mdW5jdGlvbih0KXt2YXIgcj10aGlzLl9nZXRBZGp1c3RlZEl0ZXJhdGl2ZURlbGF5KHQpO3JldHVybiB0aGlzLnN0YXJ0RGVsYXkoKStyKk1hdGgubWF4KHQtMSwwKSt0aGlzLnN0ZXBEdXJhdGlvbigpfSxlLnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKHQscil7dmFyIG49dGhpczt0PVpEZS5jb2VyY2VFeHRlcm5hbEQzKHQpO3ZhciBpPXQuc2l6ZSgpLG89dGhpcy5fZ2V0QWRqdXN0ZWRJdGVyYXRpdmVEZWxheShpKTtyZXR1cm4gdC50cmFuc2l0aW9uKCkuZWFzZSh0aGlzLl9nZXRFYXNlRmFjdG9yeSgpKS5kdXJhdGlvbih0aGlzLnN0ZXBEdXJhdGlvbigpKS5kZWxheShmdW5jdGlvbihhLHMpe3JldHVybiBuLnN0YXJ0RGVsYXkoKStvKnN9KS5hdHRycyhyKX0sZS5wcm90b3R5cGUuc3RhcnREZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD90aGlzLl9zdGFydERlbGF5Oih0aGlzLl9zdGFydERlbGF5PXQsdGhpcyl9LGUucHJvdG90eXBlLnN0ZXBEdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD9NYXRoLm1pbih0aGlzLl9zdGVwRHVyYXRpb24sdGhpcy5fbWF4VG90YWxEdXJhdGlvbik6KHRoaXMuX3N0ZXBEdXJhdGlvbj10LHRoaXMpfSxlLnByb3RvdHlwZS5zdGVwRGVsYXk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PW51bGw/dGhpcy5fc3RlcERlbGF5Oih0aGlzLl9zdGVwRGVsYXk9dCx0aGlzKX0sZS5wcm90b3R5cGUubWF4VG90YWxEdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD90aGlzLl9tYXhUb3RhbER1cmF0aW9uOih0aGlzLl9tYXhUb3RhbER1cmF0aW9uPXQsdGhpcyl9LGUucHJvdG90eXBlLmVhc2luZ01vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PW51bGw/dGhpcy5fZWFzaW5nTW9kZToodGhpcy5fZWFzaW5nTW9kZT10LHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0RWFzZUZhY3Rvcnk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVhc2luZ01vZGUoKTtpZih0eXBlb2YgdD09InN0cmluZyIpe3ZhciByPVVqdFt0XTtyZXR1cm4gcj09bnVsbD9VanQubGluZWFyOnJ9ZWxzZSByZXR1cm4gdH0sZS5wcm90b3R5cGUuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXk9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5tYXhUb3RhbER1cmF0aW9uKCktdGhpcy5zdGVwRHVyYXRpb24oKTtyPU1hdGgubWF4KHIsMCk7dmFyIG49ci9NYXRoLm1heCh0LTEsMSk7cmV0dXJuIE1hdGgubWluKHRoaXMuc3RlcERlbGF5KCksbil9LGUuX0RFRkFVTFRfU1RBUlRfREVMQVlfTUlMTElTRUNPTkRTPTAsZS5fREVGQVVMVF9TVEVQX0RVUkFUSU9OX01JTExJU0VDT05EUz0zMDAsZS5fREVGQVVMVF9JVEVSQVRJVkVfREVMQVlfTUlMTElTRUNPTkRTPTE1LGUuX0RFRkFVTFRfTUFYX1RPVEFMX0RVUkFUSU9OX01JTExJU0VDT05EUz0xLzAsZS5fREVGQVVMVF9FQVNJTkdfTU9ERT0iZXhwT3V0IixlfSgpO29GLkVhc2luZz1RRGV9KTt2YXIgR2p0PUgob2l0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0T2U9WWcoKSxlT2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS50b3RhbFRpbWU9ZnVuY3Rpb24odCl7cmV0dXJuIDB9LGUucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdD10T2UuY29lcmNlRXh0ZXJuYWxEMyh0KSx0LmF0dHJzKHIpfSxlfSgpO29pdC5OdWxsPWVPZX0pO3ZhciBJZj1IKGFGPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhRiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFdqdD0oZGUoKSxVdChwZSkpO1dqdC5fX2V4cG9ydFN0YXIocWp0KCksYUYpO1dqdC5fX2V4cG9ydFN0YXIoR2p0KCksYUYpfSk7dmFyIFlqdD1IKGFpdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoYWl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgck9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt0aGlzLmNhY2hlPXt9LHRoaXMuY29tcHV0ZT10fXJldHVybiBlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2FjaGUuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLmNhY2hlW3RdPXRoaXMuY29tcHV0ZSh0KSksdGhpcy5jYWNoZVt0XX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYWNoZT17fSx0aGlzfSxlfSgpO2FpdC5DYWNoZT1yT2V9KTt2YXIgamp0PUgoc2l0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuT2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLmFycmF5RXE9ZnVuY3Rpb24odCxyKXtpZih0PT1udWxsfHxyPT1udWxsKXJldHVybiB0PT09cjtpZih0Lmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0hPT1yW25dKXJldHVybiExO3JldHVybiEwfSxlLm9iakVxPWZ1bmN0aW9uKHQscil7aWYodD09bnVsbHx8cj09bnVsbClyZXR1cm4gdD09PXI7dmFyIG49T2JqZWN0LmtleXModCkuc29ydCgpLGk9T2JqZWN0LmtleXMocikuc29ydCgpLG89bi5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHRbc119KSxhPWkubWFwKGZ1bmN0aW9uKHMpe3JldHVybiByW3NdfSk7cmV0dXJuIGUuYXJyYXlFcShuLGkpJiZlLmFycmF5RXEobyxhKX0sZS5zdHJpY3RFcT1mdW5jdGlvbih0LHIpe3JldHVybiB0PT09cn0sZS5kZWZhdWx0cz1mdW5jdGlvbih0KXtmb3IodmFyIHI9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspcltuLTFdPWFyZ3VtZW50c1tuXTtpZih0PT1udWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO3ZhciBpPU9iamVjdCh0KTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKG8pe2lmKG8hPW51bGwpZm9yKHZhciBhIGluIG8pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sYSkmJihpW2FdPW9bYV0pfSksaX0sZX0oKTtzaXQuTWV0aG9kcz1uT2V9KTt2YXIgWGp0PUgobGl0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpT2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLmNvbWJpbmVXaGl0ZXNwYWNlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1sgXHRdKy9nLCIgIil9LGUuaXNOb3RFbXB0eVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC50cmltKCkhPT0iIn0sZS50cmltU3RhcnQ9ZnVuY3Rpb24odCxyKXtpZighdClyZXR1cm4gdDt2YXIgbj10LnNwbGl0KCIiKSxpPXI/ZnVuY3Rpb24obyl7cmV0dXJuIG8uc3BsaXQocikuc29tZShlLmlzTm90RW1wdHlTdHJpbmcpfTplLmlzTm90RW1wdHlTdHJpbmc7cmV0dXJuIG4ucmVkdWNlKGZ1bmN0aW9uKG8sYSl7cmV0dXJuIGkobythKT9vK2E6b30sIiIpfSxlLnRyaW1FbmQ9ZnVuY3Rpb24odCxyKXtpZighdClyZXR1cm4gdDt2YXIgbj10LnNwbGl0KCIiKTtyZXR1cm4gbi5yZXZlcnNlKCksbj1lLnRyaW1TdGFydChuLmpvaW4oIiIpLHIpLnNwbGl0KCIiKSxuLnJldmVyc2UoKSxuLmpvaW4oIiIpfSxlfSgpO2xpdC5TdHJpbmdNZXRob2RzPWlPZX0pO3ZhciAkanQ9SChjaXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGNpdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG9PZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLldvcmREaXZpZGVyUmVnRXhwPW5ldyBSZWdFeHAoIlxcVyIpLHRoaXMuV2hpdGVzcGFjZVJlZ0V4cD1uZXcgUmVnRXhwKCJcXHMiKX1yZXR1cm4gZS5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcztyZXR1cm4gdC5zcGxpdCgiIikucmVkdWNlKGZ1bmN0aW9uKG4saSl7cmV0dXJuIG4uc2xpY2UoMCwtMSkuY29uY2F0KHIuc2hvdWxkQ3JlYXRlTmV3VG9rZW4obltuLmxlbmd0aC0xXSxpKSl9LFsiIl0pfSxlLnByb3RvdHlwZS5zaG91bGRDcmVhdGVOZXdUb2tlbj1mdW5jdGlvbih0LHIpe2lmKCF0KXJldHVybltyXTt2YXIgbj10W3QubGVuZ3RoLTFdO3JldHVybiB0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChuKSYmdGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3Qocik/W3Qrcl06dGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3Qobil8fHRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KHIpP1t0LHJdOnRoaXMuV29yZERpdmlkZXJSZWdFeHAudGVzdChuKT9uPT09cj9bdCtyXTpbdCxyXTpbdCtyXX0sZX0oKTtjaXQuVG9rZW5pemVyPW9PZX0pO3ZhciBmUz1IKHNGPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGxGKGUpe2Zvcih2YXIgdCBpbiBlKXNGLmhhc093blByb3BlcnR5KHQpfHwoc0ZbdF09ZVt0XSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHNGLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtsRihZanQoKSk7bEYoamp0KCkpO2xGKFhqdCgpKTtsRigkanQoKSl9KTt2YXIgWmp0PUgodWl0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1aXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBLanQ9ZlMoKSxhT2U9e3RleHRSb3RhdGlvbjowLHRleHRTaGVhcjowLHhBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AifSxjRj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4pe3RoaXMuX21lYXN1cmVyPXQsdGhpcy5fcGVuRmFjdG9yeT1yLHRoaXMuX3dyYXBwZXI9bn1yZXR1cm4gZS5wcm90b3R5cGUubWVhc3VyZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21lYXN1cmVyPXQsdGhpc30sZS5wcm90b3R5cGUud3JhcHBlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fd3JhcHBlcj10LHRoaXN9LGUucHJvdG90eXBlLnBlbkZhY3Rvcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BlbkZhY3Rvcnk9dCx0aGlzfSxlLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0LHIsbixpLG8pe2lmKGk9PT12b2lkIDAmJihpPXt9KSxpPUtqdC5NZXRob2RzLmRlZmF1bHRzKHt9LGFPZSxpKSxlLlN1cHBvcnRlZFJvdGF0aW9uLmluZGV4T2YoaS50ZXh0Um90YXRpb24pPT09LTEpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCByb3RhdGlvbiAtICIraS50ZXh0Um90YXRpb24rIi4gU3VwcG9ydGVkIHJvdGF0aW9ucyBhcmUgIitlLlN1cHBvcnRlZFJvdGF0aW9uLmpvaW4oIiwgIikpO2lmKGkudGV4dFNoZWFyIT1udWxsJiZpLnRleHRTaGVhcjwtODB8fGkudGV4dFNoZWFyPjgwKXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgc2hlYXIgYW5nbGUgLSAiK2kudGV4dFNoZWFyKyIuIE11c3QgYmUgYmV0d2VlbiAtODAgYW5kIDgwIik7dmFyIGE9TWF0aC5hYnMoTWF0aC5hYnMoaS50ZXh0Um90YXRpb24pLTkwKT40NSxzPWE/cjpuLGw9YT9uOnIsYz1pLnRleHRTaGVhcix1PWMqTWF0aC5QSS8xODAsaD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LGY9aCpNYXRoLnRhbih1KSxwPXMvTWF0aC5jb3ModSktTWF0aC5hYnMoZiksZD1sKk1hdGguY29zKHUpLGc9S2p0LlN0cmluZ01ldGhvZHMuY29tYmluZVdoaXRlc3BhY2UodCksXz10aGlzLl93cmFwcGVyP3RoaXMuX3dyYXBwZXIud3JhcChnLHRoaXMuX21lYXN1cmVyLHAsZCkud3JhcHBlZFRleHQ6Zyx5PV8uc3BsaXQoYApgKSx4PWUuWE9mZnNldEZhY3RvcltpLnhBbGlnbl0qcCpNYXRoLnNpbih1KSxiPWUuWU9mZnNldEZhY3RvcltpLnlBbGlnbl0qKGQteS5sZW5ndGgqaCksUz14LWIsQz1bMCwwXSxQPWkudGV4dFJvdGF0aW9uK2M7c3dpdGNoKGkudGV4dFJvdGF0aW9uKXtjYXNlIDkwOkM9W3IrUywwXTticmVhaztjYXNlLTkwOkM9Wy1TLG5dO2JyZWFrO2Nhc2UgMTgwOkM9W3IsbitTXTticmVhaztkZWZhdWx0OkM9WzAsLVNdO2JyZWFrfXZhciBrPXRoaXMuX3BlbkZhY3RvcnkuY3JlYXRlUGVuKHQse3RyYW5zbGF0ZTpDLHJvdGF0ZTpQfSxvKTt0aGlzLndyaXRlTGluZXMoeSxrLHAsaCxmLGkueEFsaWduKSxrLmRlc3Ryb3khPW51bGwmJmsuZGVzdHJveSgpfSxlLnByb3RvdHlwZS53cml0ZUxpbmVzPWZ1bmN0aW9uKHQscixuLGksbyxhKXt0LmZvckVhY2goZnVuY3Rpb24ocyxsKXt2YXIgYz1vPjA/KGwrMSkqbzpsKm87ci53cml0ZShzLG4sYSxjLChsKzEpKmkpfSl9LGV9KCk7Y0YuWE9mZnNldEZhY3Rvcj17Y2VudGVyOi41LGxlZnQ6MCxyaWdodDoxfTtjRi5ZT2Zmc2V0RmFjdG9yPXtib3R0b206MSxjZW50ZXI6LjUsdG9wOjB9O2NGLlN1cHBvcnRlZFJvdGF0aW9uPVstOTAsMCwxODAsOTBdO3VpdC5Xcml0ZXI9Y0Z9KTt2YXIgREE9SCh1Rj0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBzT2UoZSl7Zm9yKHZhciB0IGluIGUpdUYuaGFzT3duUHJvcGVydHkodCl8fCh1Rlt0XT1lW3RdKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodUYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3NPZShaanQoKSl9KTt2YXIgaGl0PUgoaEY9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGhGLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgT0E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLmFwcGVuZD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgbj1bXSxpPTI7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMl09YXJndW1lbnRzW2ldO3ZhciBvPWUuY3JlYXRlLmFwcGx5KGUsW3JdLmNvbmNhdChuKSk7cmV0dXJuIHQuYXBwZW5kQ2hpbGQobyksb30sZS5jcmVhdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciByPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXJbbi0xXT1hcmd1bWVudHNbbl07dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtyZXR1cm4gZS5hZGRDbGFzc2VzLmFwcGx5KGUsW2ldLmNvbmNhdChyKSksaX0sZS5hZGRDbGFzc2VzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKylyW24tMV09YXJndW1lbnRzW25dO3I9ci5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIGkhPW51bGx9KSx0LmNsYXNzTGlzdCE9bnVsbD9yLmZvckVhY2goZnVuY3Rpb24oaSl7dC5jbGFzc0xpc3QuYWRkKGkpfSk6dC5zZXRBdHRyaWJ1dGUoImNsYXNzIixyLmpvaW4oIiAiKSl9LGUuZ2V0RGltZW5zaW9ucz1mdW5jdGlvbih0KXtpZih0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl0cnl7dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIud2lkdGgsaT1yLmhlaWdodDtyZXR1cm57d2lkdGg6bixoZWlnaHQ6aX19Y2F0Y2gobyl7fXJldHVybntoZWlnaHQ6MCx3aWR0aDowfX0sZX0oKTtoRi5IdG1sVXRpbHM9T0E7dmFyIGxPZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4pe249PT12b2lkIDAmJihuPSExKTt2YXIgaT10aGlzO3RoaXMuZWxlbWVudD10LHRoaXMuY2xhc3NOYW1lPXIsdGhpcy5hZGRUaXRsZT1uLHRoaXMuY3JlYXRlUnVsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obyl7dmFyIGE9T0EuYXBwZW5kKGkuZWxlbWVudCwic3BhbiIsInRleHQtdG1wIixpLmNsYXNzTmFtZSk7YS50ZXh0Q29udGVudD1vO3ZhciBzPU9BLmdldERpbWVuc2lvbnMoYSk7cmV0dXJuIGkuZWxlbWVudC5yZW1vdmVDaGlsZChhKSxzfX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24obyxhLHMpe3M9PW51bGwmJihzPWkuZWxlbWVudCk7dmFyIGw9T0EuYXBwZW5kKHMsImRpdiIsInRleHQtYmxvY2siLGkuY2xhc3NOYW1lKTtyZXR1cm4gbC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGwuc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgLTFlbSkgIisoInRyYW5zbGF0ZSgiK2EudHJhbnNsYXRlWzBdKyJweCwgIithLnRyYW5zbGF0ZVsxXSsicHgpICIpKygicm90YXRlKCIrYS5yb3RhdGUrImRlZykiKSxsLnN0eWxlLnRyYW5zZm9ybU9yaWdpbj0iMCAxLjJlbSIsaS5hZGRUaXRsZSYmbC5zZXRBdHRyaWJ1dGUoInRpdGxlIixvKSxpLmNyZWF0ZUh0bWxMaW5lUGVuKGwpfX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0QWRkVGl0bGU9ZnVuY3Rpb24odCl7dGhpcy5hZGRUaXRsZT10fSxlLnByb3RvdHlwZS5jcmVhdGVIdG1sTGluZVBlbj1mdW5jdGlvbih0KXtyZXR1cm57d3JpdGU6ZnVuY3Rpb24ocixuLGksbyxhKXt2YXIgcz1PQS5hcHBlbmQodCwiZGl2IiwidGV4dC1saW5lIik7cy50ZXh0Q29udGVudD1yLHMuc3R5bGUud2lkdGg9bisicHgiLHMuc3R5bGUudGV4dEFsaWduPWkscy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHMuc3R5bGUud2hpdGVTcGFjZT0ibm93cmFwIixzLnN0eWxlLnRvcD1hKyJweCIscy5zdHlsZS5sZWZ0PW8rInB4In19fSxlfSgpO2hGLkh0bWxDb250ZXh0PWxPZX0pO3ZhciB0WHQ9SChmRj0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZkYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBjT2U9REEoKSxKanQ9aGl0KCksamc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLmFwcGVuZD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgbj1bXSxpPTI7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMl09YXJndW1lbnRzW2ldO3ZhciBvPWUuY3JlYXRlLmFwcGx5KGUsW3JdLmNvbmNhdChuKSk7cmV0dXJuIHQuYXBwZW5kQ2hpbGQobyksb30sZS5jcmVhdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciByPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXJbbi0xXT1hcmd1bWVudHNbbl07dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGUuU1ZHX05TLHQpO3JldHVybiBKanQuSHRtbFV0aWxzLmFkZENsYXNzZXMuYXBwbHkoSmp0Lkh0bWxVdGlscyxbaV0uY29uY2F0KHIpKSxpfSxlLmdldERpbWVuc2lvbnM9ZnVuY3Rpb24odCl7aWYodC5nZXRCQm94KXRyeXt2YXIgcj10LmdldEJCb3goKSxuPXIud2lkdGgsaT1yLmhlaWdodDtyZXR1cm57d2lkdGg6bixoZWlnaHQ6aX19Y2F0Y2gobyl7fXJldHVybntoZWlnaHQ6MCx3aWR0aDowfX0sZX0oKTtqZy5TVkdfTlM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtmRi5TdmdVdGlscz1qZzt2YXIgUWp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7bj09PXZvaWQgMCYmKG49ITEpO3ZhciBpPXRoaXM7dGhpcy5lbGVtZW50PXQsdGhpcy5jbGFzc05hbWU9cix0aGlzLmFkZFRpdGxlRWxlbWVudD1uLHRoaXMuY3JlYXRlUnVsZXI9ZnVuY3Rpb24oKXt2YXIgbz1pLmdldFRleHRFbGVtZW50cyhpLmVsZW1lbnQpLGE9by5wYXJlbnRFbGVtZW50LHM9by5jb250YWluZXJFbGVtZW50LGw9by50ZXh0RWxlbWVudDtyZXR1cm4gZnVuY3Rpb24oYyl7YS5hcHBlbmRDaGlsZChzKSxsLnRleHRDb250ZW50PWM7dmFyIHU9amcuZ2V0RGltZW5zaW9ucyhsKTtyZXR1cm4gYS5yZW1vdmVDaGlsZChzKSx1fX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24obyxhLHMpe3M9PW51bGwmJihzPWkuZWxlbWVudCk7dmFyIGw9amcuYXBwZW5kKHMsImciLCJ0ZXh0LWNvbnRhaW5lciIsaS5jbGFzc05hbWUpO2kuYWRkVGl0bGVFbGVtZW50JiYoamcuYXBwZW5kKGwsInRpdGxlIikudGV4dENvbnRlbnQ9byxsLnNldEF0dHJpYnV0ZSgidGl0bGUiLG8pKTt2YXIgYz1qZy5hcHBlbmQobCwiZyIsInRleHQtYXJlYSIpO3JldHVybiBjLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYS50cmFuc2xhdGVbMF0rIiwiK2EudHJhbnNsYXRlWzFdKyIpIisoInJvdGF0ZSgiK2Eucm90YXRlKyIpIikpLGkuY3JlYXRlU3ZnTGluZVBlbihjKX19cmV0dXJuIGUucHJvdG90eXBlLnNldEFkZFRpdGxlRWxlbWVudD1mdW5jdGlvbih0KXt0aGlzLmFkZFRpdGxlRWxlbWVudD10fSxlLnByb3RvdHlwZS5jcmVhdGVTdmdMaW5lUGVuPWZ1bmN0aW9uKHQpe3JldHVybnt3cml0ZTpmdW5jdGlvbihyLG4saSxvLGEpe28rPW4qY09lLldyaXRlci5YT2Zmc2V0RmFjdG9yW2ldO3ZhciBzPWpnLmFwcGVuZCh0LCJ0ZXh0IiwidGV4dC1saW5lIik7cy50ZXh0Q29udGVudD1yLHMuc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIsZS5BbmNob3JNYXBbaV0pLHMuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvKyIsIithKyIpIikscy5zZXRBdHRyaWJ1dGUoInkiLCItMC4yNWVtIil9fX0sZS5wcm90b3R5cGUuZ2V0VGV4dEVsZW1lbnRzPWZ1bmN0aW9uKHQpe2lmKHQudGFnTmFtZT09PSJ0ZXh0Iil7dmFyIHI9dC5wYXJlbnRFbGVtZW50O3JldHVybiByPT1udWxsJiYocj10LnBhcmVudE5vZGUpLHIucmVtb3ZlQ2hpbGQodCkse2NvbnRhaW5lckVsZW1lbnQ6dCxwYXJlbnRFbGVtZW50OnIsdGV4dEVsZW1lbnQ6dH19dmFyIG49dC5xdWVyeVNlbGVjdG9yKCJ0ZXh0Iik7aWYobiE9bnVsbCl7dmFyIHI9bi5wYXJlbnRFbGVtZW50O3JldHVybiByPT1udWxsJiYocj1uLnBhcmVudE5vZGUpLHIucmVtb3ZlQ2hpbGQobikse2NvbnRhaW5lckVsZW1lbnQ6bixwYXJlbnRFbGVtZW50OnIsdGV4dEVsZW1lbnQ6bn19dmFyIGk9amcuY3JlYXRlKCJ0ZXh0Iix0aGlzLmNsYXNzTmFtZSk7cmV0dXJue2NvbnRhaW5lckVsZW1lbnQ6aSxwYXJlbnRFbGVtZW50OnQsdGV4dEVsZW1lbnQ6aX19LGV9KCk7UWp0LkFuY2hvck1hcD17Y2VudGVyOiJtaWRkbGUiLGxlZnQ6InN0YXJ0IixyaWdodDoiZW5kIn07ZkYuU3ZnQ29udGV4dD1RanR9KTt2YXIgZVh0PUgoZml0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShmaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1T2U9REEoKSxoT2U9IiM0NDQiLGZPZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4pe3I9PT12b2lkIDAmJihyPTEwKSxuPT09dm9pZCAwJiYobj17fSk7dmFyIGk9dGhpczt0aGlzLmN0eD10LHRoaXMubGluZUhlaWdodD1yLHRoaXMuc3R5bGU9bix0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG8pe2kuY3R4LmZvbnQ9aS5zdHlsZS5mb250O3ZhciBhPWkuY3R4Lm1lYXN1cmVUZXh0KG8pLndpZHRoO3JldHVybnt3aWR0aDphLGhlaWdodDppLmxpbmVIZWlnaHR9fX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24obyxhLHMpe3JldHVybiBzPT1udWxsJiYocz1pLmN0eCkscy5zYXZlKCkscy50cmFuc2xhdGUoYS50cmFuc2xhdGVbMF0sYS50cmFuc2xhdGVbMV0pLHMucm90YXRlKGEucm90YXRlKk1hdGguUEkvMTgwKSxpLmNyZWF0ZUNhbnZhc1BlbihzKX0sdGhpcy5zdHlsZS5maWxsPT09dm9pZCAwJiYodGhpcy5zdHlsZS5maWxsPWhPZSl9cmV0dXJuIGUucHJvdG90eXBlLmNyZWF0ZUNhbnZhc1Blbj1mdW5jdGlvbih0KXt2YXIgcj10aGlzO3JldHVybntkZXN0cm95OmZ1bmN0aW9uKCl7dC5yZXN0b3JlKCl9LHdyaXRlOmZ1bmN0aW9uKG4saSxvLGEscyl7YSs9aSp1T2UuV3JpdGVyLlhPZmZzZXRGYWN0b3Jbb10sdC50ZXh0QWxpZ249byxyLnN0eWxlLmZvbnQhPW51bGwmJih0LmZvbnQ9ci5zdHlsZS5mb250KSxyLnN0eWxlLmZpbGwhPW51bGwmJih0LmZpbGxTdHlsZT1yLnN0eWxlLmZpbGwsdC5maWxsVGV4dChuLGEscykpLHIuc3R5bGUuc3Ryb2tlIT1udWxsJiYodC5zdHJva2VTdHlsZT1yLnN0eWxlLmZpbGwsdC5zdHJva2VUZXh0KG4sYSxzKSl9fX0sZX0oKTtmaXQuQ2FudmFzQ29udGV4dD1mT2V9KTt2YXIgZGl0PUgocEY9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcGl0KGUpe2Zvcih2YXIgdCBpbiBlKXBGLmhhc093blByb3BlcnR5KHQpfHwocEZbdF09ZVt0XSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHBGLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtwaXQodFh0KCkpO3BpdChlWHQoKSk7cGl0KGhpdCgpKX0pO3ZhciBkRj1IKG1pdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobWl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgclh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt0LmNyZWF0ZVJ1bGVyIT1udWxsP3RoaXMucnVsZXI9dC5jcmVhdGVSdWxlcigpOnRoaXMucnVsZXI9dH1yZXR1cm4gZS5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PXZvaWQgMCYmKHQ9ZS5IRUlHSFRfVEVYVCksdGhpcy5ydWxlcih0KX0sZX0oKTtyWHQuSEVJR0hUX1RFWFQ9ImJkcHFsIjttaXQuQWJzdHJhY3RNZWFzdXJlcj1yWHR9KTt2YXIgZ2l0PUgoekE9PnsidXNlIHN0cmljdCI7dmFyIHBPZT16QSYmekEuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LHIpe3QuX19wcm90b19fPXJ9fHxmdW5jdGlvbih0LHIpe2Zvcih2YXIgbiBpbiByKXIuaGFzT3duUHJvcGVydHkobikmJih0W25dPXJbbl0pfTtyZXR1cm4gZnVuY3Rpb24odCxyKXtlKHQscik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH10LnByb3RvdHlwZT1yPT09bnVsbD9PYmplY3QuY3JlYXRlKHIpOihuLnByb3RvdHlwZT1yLnByb3RvdHlwZSxuZXcgbil9fSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6QSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG1GPWRGKCksZE9lPWZ1bmN0aW9uKGUpe3BPZSh0LGUpO2Z1bmN0aW9uIHQocixuKXtuPT09dm9pZCAwJiYobj0hMSk7dmFyIGk9ZS5jYWxsKHRoaXMscil8fHRoaXM7cmV0dXJuIGkudXNlR3VhcmRzPW4saX1yZXR1cm4gdC5wcm90b3R5cGUuX2FkZEd1YXJkcz1mdW5jdGlvbihyKXtyZXR1cm4gbUYuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCtyK21GLkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFR9LHQucHJvdG90eXBlLl9tZWFzdXJlTGluZT1mdW5jdGlvbihyLG4pe249PT12b2lkIDAmJihuPSExKTt2YXIgaT10aGlzLnVzZUd1YXJkc3x8bnx8L15bXHQgXSQvLnRlc3Qociksbz1pP3RoaXMuX2FkZEd1YXJkcyhyKTpyLGE9ZS5wcm90b3R5cGUubWVhc3VyZS5jYWxsKHRoaXMsbyk7cmV0dXJuIGEud2lkdGgtPWk/Mip0aGlzLmdldEd1YXJkV2lkdGgoKTowLGF9LHQucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24ocil7dmFyIG49dGhpcztpZihyPT09dm9pZCAwJiYocj1tRi5BYnN0cmFjdE1lYXN1cmVyLkhFSUdIVF9URVhUKSxyLnRyaW0oKT09PSIiKXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgaT1yLnRyaW0oKS5zcGxpdChgCmApLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gbi5fbWVhc3VyZUxpbmUobyl9KTtyZXR1cm57aGVpZ2h0OmkucmVkdWNlKGZ1bmN0aW9uKG8sYSl7cmV0dXJuIG8rYS5oZWlnaHR9LDApLHdpZHRoOmkucmVkdWNlKGZ1bmN0aW9uKG8sYSl7cmV0dXJuIE1hdGgubWF4KG8sYS53aWR0aCl9LDApfX0sdC5wcm90b3R5cGUuZ2V0R3VhcmRXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmd1YXJkV2lkdGg9PW51bGwmJih0aGlzLmd1YXJkV2lkdGg9ZS5wcm90b3R5cGUubWVhc3VyZS5jYWxsKHRoaXMpLndpZHRoKSx0aGlzLmd1YXJkV2lkdGh9LHR9KG1GLkFic3RyYWN0TWVhc3VyZXIpO3pBLk1lYXN1cmVyPWRPZX0pO3ZhciBfaXQ9SChGQT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbU9lPUZBJiZGQS5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQscil7dC5fX3Byb3RvX189cn18fGZ1bmN0aW9uKHQscil7Zm9yKHZhciBuIGluIHIpci5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09cltuXSl9O3JldHVybiBmdW5jdGlvbih0LHIpe2UodCxyKTtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXQucHJvdG90eXBlPXI9PT1udWxsP09iamVjdC5jcmVhdGUocik6KG4ucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyBuKX19KCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KEZBLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZ09lPWdpdCgpLF9PZT1mdW5jdGlvbihlKXttT2UodCxlKTtmdW5jdGlvbiB0KCl7cmV0dXJuIGUhPT1udWxsJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gdC5wcm90b3R5cGUuX21lYXN1cmVDaGFyYWN0ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIGUucHJvdG90eXBlLl9tZWFzdXJlTGluZS5jYWxsKHRoaXMscil9LHQucHJvdG90eXBlLl9tZWFzdXJlTGluZT1mdW5jdGlvbihyKXt2YXIgbj10aGlzLGk9ci5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBuLl9tZWFzdXJlQ2hhcmFjdGVyKG8pfSk7cmV0dXJue2hlaWdodDppLnJlZHVjZShmdW5jdGlvbihvLGEpe3JldHVybiBNYXRoLm1heChvLGEuaGVpZ2h0KX0sMCksd2lkdGg6aS5yZWR1Y2UoZnVuY3Rpb24obyxhKXtyZXR1cm4gbythLndpZHRofSwwKX19LHR9KGdPZS5NZWFzdXJlcik7RkEuQ2hhcmFjdGVyTWVhc3VyZXI9X09lfSk7dmFyIHlpdD1IKEJBPT57InVzZSBzdHJpY3QiO3ZhciB5T2U9QkEmJkJBLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxyKXt0Ll9fcHJvdG9fXz1yfXx8ZnVuY3Rpb24odCxyKXtmb3IodmFyIG4gaW4gcilyLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1yW25dKX07cmV0dXJuIGZ1bmN0aW9uKHQscil7ZSh0LHIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9dC5wcm90b3R5cGU9cj09PW51bGw/T2JqZWN0LmNyZWF0ZShyKToobi5wcm90b3R5cGU9ci5wcm90b3R5cGUsbmV3IG4pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQkEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB2T2U9ZlMoKSx4T2U9X2l0KCksYk9lPWZ1bmN0aW9uKGUpe3lPZSh0LGUpO2Z1bmN0aW9uIHQocixuKXt2YXIgaT1lLmNhbGwodGhpcyxyLG4pfHx0aGlzO3JldHVybiBpLmNhY2hlPW5ldyB2T2UuQ2FjaGUoZnVuY3Rpb24obyl7cmV0dXJuIGkuX21lYXN1cmVDaGFyYWN0ZXJOb3RGcm9tQ2FjaGUobyl9KSxpfXJldHVybiB0LnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlck5vdEZyb21DYWNoZT1mdW5jdGlvbihyKXtyZXR1cm4gZS5wcm90b3R5cGUuX21lYXN1cmVDaGFyYWN0ZXIuY2FsbCh0aGlzLHIpfSx0LnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlcj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5jYWNoZS5nZXQocil9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5jYWNoZS5jbGVhcigpfSx0fSh4T2UuQ2hhcmFjdGVyTWVhc3VyZXIpO0JBLkNhY2hlQ2hhcmFjdGVyTWVhc3VyZXI9Yk9lfSk7dmFyIG5YdD1IKEhBPT57InVzZSBzdHJpY3QiO3ZhciB3T2U9SEEmJkhBLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxyKXt0Ll9fcHJvdG9fXz1yfXx8ZnVuY3Rpb24odCxyKXtmb3IodmFyIG4gaW4gcilyLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1yW25dKX07cmV0dXJuIGZ1bmN0aW9uKHQscil7ZSh0LHIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9dC5wcm90b3R5cGU9cj09PW51bGw/T2JqZWN0LmNyZWF0ZShyKToobi5wcm90b3R5cGU9ci5wcm90b3R5cGUsbmV3IG4pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSEEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBTT2U9ZlMoKSxNT2U9ZEYoKSxFT2U9eWl0KCksVE9lPWZ1bmN0aW9uKGUpe3dPZSh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMscil8fHRoaXM7cmV0dXJuIG4uZGltQ2FjaGU9bmV3IFNPZS5DYWNoZShmdW5jdGlvbihpKXtyZXR1cm4gbi5fbWVhc3VyZU5vdEZyb21DYWNoZShpKX0pLG59cmV0dXJuIHQucHJvdG90eXBlLl9tZWFzdXJlTm90RnJvbUNhY2hlPWZ1bmN0aW9uKHIpe3JldHVybiBlLnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcyxyKX0sdC5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbihyKXtyZXR1cm4gcj09PXZvaWQgMCYmKHI9TU9lLkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFQpLHRoaXMuZGltQ2FjaGUuZ2V0KHIpfSx0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZGltQ2FjaGUuY2xlYXIoKSxlLnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpfSx0fShFT2UuQ2FjaGVDaGFyYWN0ZXJNZWFzdXJlcik7SEEuQ2FjaGVNZWFzdXJlcj1UT2V9KTt2YXIgdml0PUgoZ0Y9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gVkEoZSl7Zm9yKHZhciB0IGluIGUpZ0YuaGFzT3duUHJvcGVydHkodCl8fChnRlt0XT1lW3RdKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZ0YsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO1ZBKGRGKCkpO1ZBKHlpdCgpKTtWQShuWHQoKSk7VkEoX2l0KCkpO1ZBKGdpdCgpKX0pO3ZhciBiaXQ9SCh4aXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHhpdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFVBPWZTKCksQ09lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMubWF4TGluZXMoMS8wKSx0aGlzLnRleHRUcmltbWluZygiZWxsaXBzaXMiKSx0aGlzLmFsbG93QnJlYWtpbmdXb3JkcyghMSksdGhpcy5fdG9rZW5pemVyPW5ldyBVQS5Ub2tlbml6ZXIsdGhpcy5fYnJlYWtpbmdDaGFyYWN0ZXI9Ii0ifXJldHVybiBlLnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD90aGlzLl9tYXhMaW5lczoodGhpcy5fbWF4TGluZXM9dCx0aGlzKX0sZS5wcm90b3R5cGUudGV4dFRyaW1taW5nPWZ1bmN0aW9uKHQpe2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMuX3RleHRUcmltbWluZztpZih0IT09ImVsbGlwc2lzIiYmdCE9PSJub25lIil0aHJvdyBuZXcgRXJyb3IodCsiIC0gdW5zdXBwb3J0ZWQgdGV4dCB0cmltbWluZyBvcHRpb24uIik7cmV0dXJuIHRoaXMuX3RleHRUcmltbWluZz10LHRoaXN9LGUucHJvdG90eXBlLmFsbG93QnJlYWtpbmdXb3Jkcz1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD90aGlzLl9hbGxvd0JyZWFraW5nV29yZHM6KHRoaXMuX2FsbG93QnJlYWtpbmdXb3Jkcz10LHRoaXMpfSxlLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHQscixuLGkpe3ZhciBvPXRoaXM7aT09PXZvaWQgMCYmKGk9MS8wKTt2YXIgYT17bm9Ccm9rZVdvcmRzOjAsbm9MaW5lczowLG9yaWdpbmFsVGV4dDp0LHRydW5jYXRlZFRleHQ6IiIsd3JhcHBlZFRleHQ6IiJ9LHM9e2F2YWlsYWJsZUxpbmVzOk1hdGgubWluKE1hdGguZmxvb3IoaS9yLm1lYXN1cmUoKS5oZWlnaHQpLHRoaXMuX21heExpbmVzKSxhdmFpbGFibGVXaWR0aDpuLGNhbkZpdFRleHQ6ITAsY3VycmVudExpbmU6IiIsd3JhcHBpbmc6YX0sbD10LnNwbGl0KGAKYCk7cmV0dXJuIGwucmVkdWNlKGZ1bmN0aW9uKGMsdSxoKXtyZXR1cm4gby5icmVha0xpbmVUb0ZpdFdpZHRoKGMsdSxoIT09bC5sZW5ndGgtMSxyKX0scykud3JhcHBpbmd9LGUucHJvdG90eXBlLmJyZWFrTGluZVRvRml0V2lkdGg9ZnVuY3Rpb24odCxyLG4saSl7dmFyIG89dGhpczshdC5jYW5GaXRUZXh0JiZ0LndyYXBwaW5nLnRydW5jYXRlZFRleHQhPT0iIiYmKHQud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9YApgKTt2YXIgYT10aGlzLl90b2tlbml6ZXIudG9rZW5pemUocik7dD1hLnJlZHVjZShmdW5jdGlvbihsLGMpe3JldHVybiBvLndyYXBOZXh0VG9rZW4oYyxsLGkpfSx0KTt2YXIgcz1VQS5TdHJpbmdNZXRob2RzLnRyaW1FbmQodC5jdXJyZW50TGluZSk7cmV0dXJuIHQud3JhcHBpbmcubm9MaW5lcys9KyhzIT09IiIpLHQud3JhcHBpbmcubm9MaW5lcz09PXQuYXZhaWxhYmxlTGluZXMmJnRoaXMuX3RleHRUcmltbWluZyE9PSJub25lIiYmbj90LmNhbkZpdFRleHQ9ITE6dC53cmFwcGluZy53cmFwcGVkVGV4dCs9cyx0LmN1cnJlbnRMaW5lPWAKYCx0fSxlLnByb3RvdHlwZS5jYW5GaXRUb2tlbj1mdW5jdGlvbih0LHIsbil7dmFyIGk9dGhpcyxvPXQuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihhLHMpe3JldHVybiBzIT09dC5sZW5ndGgtMT9hK2kuX2JyZWFraW5nQ2hhcmFjdGVyOmF9KTtyZXR1cm4gbi5tZWFzdXJlKHQpLndpZHRoPD1yfHxvLmV2ZXJ5KGZ1bmN0aW9uKGEpe3JldHVybiBuLm1lYXN1cmUoYSkud2lkdGg8PXJ9KX0sZS5wcm90b3R5cGUuYWRkRWxsaXBzaXM9ZnVuY3Rpb24odCxyLG4pe2lmKHRoaXMuX3RleHRUcmltbWluZz09PSJub25lIilyZXR1cm57cmVtYWluaW5nVG9rZW46IiIsd3JhcHBlZFRva2VuOnR9O3ZhciBpPXQuc3Vic3RyaW5nKDApLnRyaW0oKSxvPW4ubWVhc3VyZShpKS53aWR0aCxhPW4ubWVhc3VyZSgiLi4uIikud2lkdGgscz10Lmxlbmd0aD4wJiZ0WzBdPT09YApgP2AKYDoiIjtpZihyPD1hKXt2YXIgbD1hLzMsYz1NYXRoLmZsb29yKHIvbCk7cmV0dXJue3JlbWFpbmluZ1Rva2VuOnQsd3JhcHBlZFRva2VuOnMrIi4uLiIuc3Vic3RyKDAsYyl9fWZvcig7bythPnI7KWk9VUEuU3RyaW5nTWV0aG9kcy50cmltRW5kKGkuc3Vic3RyKDAsaS5sZW5ndGgtMSkpLG89bi5tZWFzdXJlKGkpLndpZHRoO3JldHVybntyZW1haW5pbmdUb2tlbjpVQS5TdHJpbmdNZXRob2RzLnRyaW1FbmQodC5zdWJzdHJpbmcoaS5sZW5ndGgpLCItIikudHJpbSgpLHdyYXBwZWRUb2tlbjpzK2krIi4uLiJ9fSxlLnByb3RvdHlwZS53cmFwTmV4dFRva2VuPWZ1bmN0aW9uKHQscixuKXtpZighci5jYW5GaXRUZXh0fHxyLmF2YWlsYWJsZUxpbmVzPT09ci53cmFwcGluZy5ub0xpbmVzfHwhdGhpcy5jYW5GaXRUb2tlbih0LHIuYXZhaWxhYmxlV2lkdGgsbikpcmV0dXJuIHRoaXMuZmluaXNoV3JhcHBpbmcodCxyLG4pO2Zvcih2YXIgaT10O2k7KXt2YXIgbz10aGlzLmJyZWFrVG9rZW5Ub0ZpdEluV2lkdGgoaSxyLmN1cnJlbnRMaW5lLHIuYXZhaWxhYmxlV2lkdGgsbik7aWYoci5jdXJyZW50TGluZT1vLmxpbmUsaT1vLnJlbWFpbmluZ1Rva2VuLGkhPW51bGwpaWYoci53cmFwcGluZy5ub0Jyb2tlV29yZHMrPStvLmJyZWFrV29yZCwrK3Iud3JhcHBpbmcubm9MaW5lcyxyLmF2YWlsYWJsZUxpbmVzPT09ci53cmFwcGluZy5ub0xpbmVzKXt2YXIgYT10aGlzLmFkZEVsbGlwc2lzKHIuY3VycmVudExpbmUsci5hdmFpbGFibGVXaWR0aCxuKTtyZXR1cm4gci53cmFwcGluZy53cmFwcGVkVGV4dCs9YS53cmFwcGVkVG9rZW4sci53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1hLnJlbWFpbmluZ1Rva2VuK2ksci5jdXJyZW50TGluZT1gCmAscn1lbHNlIHIud3JhcHBpbmcud3JhcHBlZFRleHQrPVVBLlN0cmluZ01ldGhvZHMudHJpbUVuZChyLmN1cnJlbnRMaW5lKSxyLmN1cnJlbnRMaW5lPWAKYH1yZXR1cm4gcn0sZS5wcm90b3R5cGUuZmluaXNoV3JhcHBpbmc9ZnVuY3Rpb24odCxyLG4pe2lmKHIuY2FuRml0VGV4dCYmci5hdmFpbGFibGVMaW5lcyE9PXIud3JhcHBpbmcubm9MaW5lcyYmdGhpcy5fdGV4dFRyaW1taW5nIT09Im5vbmUiKXt2YXIgaT10aGlzLmFkZEVsbGlwc2lzKHIuY3VycmVudExpbmUrdCxyLmF2YWlsYWJsZVdpZHRoLG4pO3Iud3JhcHBpbmcud3JhcHBlZFRleHQrPWkud3JhcHBlZFRva2VuLHIud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9aS5yZW1haW5pbmdUb2tlbixyLndyYXBwaW5nLm5vQnJva2VXb3Jkcys9KyhpLnJlbWFpbmluZ1Rva2VuLmxlbmd0aDx0Lmxlbmd0aCksci53cmFwcGluZy5ub0xpbmVzKz0rKGkud3JhcHBlZFRva2VuLmxlbmd0aD4wKSxyLmN1cnJlbnRMaW5lPSIifWVsc2Ugci53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz10O3JldHVybiByLmNhbkZpdFRleHQ9ITEscn0sZS5wcm90b3R5cGUuYnJlYWtUb2tlblRvRml0SW5XaWR0aD1mdW5jdGlvbih0LHIsbixpLG8pe2lmKG89PT12b2lkIDAmJihvPXRoaXMuX2JyZWFraW5nQ2hhcmFjdGVyKSxpLm1lYXN1cmUocit0KS53aWR0aDw9bilyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6cit0LHJlbWFpbmluZ1Rva2VuOm51bGx9O2lmKHQudHJpbSgpPT09IiIpcmV0dXJue2JyZWFrV29yZDohMSxsaW5lOnIscmVtYWluaW5nVG9rZW46IiJ9O2lmKCF0aGlzLl9hbGxvd0JyZWFraW5nV29yZHMmJnIudHJpbSgpIT09IiIpcmV0dXJue2JyZWFrV29yZDohMSxsaW5lOnIscmVtYWluaW5nVG9rZW46dH07Zm9yKHZhciBhPTA7YTx0Lmxlbmd0aCYmaS5tZWFzdXJlKHIrdC5zdWJzdHJpbmcoMCxhKzEpK28pLndpZHRoPD1uOykrK2E7dmFyIHM9IiI7cmV0dXJuIGE+MCYmKHM9bykse2JyZWFrV29yZDphPjAsbGluZTpyK3Quc3Vic3RyaW5nKDAsYSkrcyxyZW1haW5pbmdUb2tlbjp0LnN1YnN0cmluZyhhKX19LGV9KCk7eGl0LldyYXBwZXI9Q09lfSk7dmFyIG9YdD1IKHFBPT57InVzZSBzdHJpY3QiO3ZhciBBT2U9cUEmJnFBLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxyKXt0Ll9fcHJvdG9fXz1yfXx8ZnVuY3Rpb24odCxyKXtmb3IodmFyIG4gaW4gcilyLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1yW25dKX07cmV0dXJuIGZ1bmN0aW9uKHQscil7ZSh0LHIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9dC5wcm90b3R5cGU9cj09PW51bGw/T2JqZWN0LmNyZWF0ZShyKToobi5wcm90b3R5cGU9ci5wcm90b3R5cGUsbmV3IG4pfX0oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocUEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBQT2U9Yml0KCksaVh0PWZ1bmN0aW9uKGUpe0FPZSh0LGUpO2Z1bmN0aW9uIHQoKXtyZXR1cm4gZSE9PW51bGwmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiB0LnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKHIsbixpLG8pe3ZhciBhPXRoaXM7bz09PXZvaWQgMCYmKG89MS8wKTt2YXIgcz1yLnNwbGl0KGAKYCk7aWYocy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlNpbmdsZUxpbmVXcmFwcGVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgb25seSBvbiBzaW5nbGUgbGluZSIpO3ZhciBsPWZ1bmN0aW9uKGcpe3JldHVybiBlLnByb3RvdHlwZS53cmFwLmNhbGwoYSxyLG4sZyxvKX0sYz1sKGkpO2lmKGMubm9MaW5lczwyKXJldHVybiBjO2Zvcih2YXIgdT0wLGg9aSxmPTA7Zjx0Lk5PX1dSQVBfSVRFUkFUSU9OUyYmaD51OysrZil7dmFyIHA9KGgrdSkvMixkPWwocCk7dGhpcy5hcmVTYW1lUmVzdWx0cyhjLGQpPyhoPXAsYz1kKTp1PXB9cmV0dXJuIGN9LHQucHJvdG90eXBlLmFyZVNhbWVSZXN1bHRzPWZ1bmN0aW9uKHIsbil7cmV0dXJuIHIubm9MaW5lcz09PW4ubm9MaW5lcyYmci50cnVuY2F0ZWRUZXh0PT09bi50cnVuY2F0ZWRUZXh0fSx0fShQT2UuV3JhcHBlcik7aVh0Lk5PX1dSQVBfSVRFUkFUSU9OUz01O3FBLlNpbmdsZUxpbmVXcmFwcGVyPWlYdH0pO3ZhciB3aXQ9SChfRj0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhWHQoZSl7Zm9yKHZhciB0IGluIGUpX0YuaGFzT3duUHJvcGVydHkodCl8fChfRlt0XT1lW3RdKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoX0YsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO2FYdChvWHQoKSk7YVh0KGJpdCgpKX0pO3ZhciBzWHQ9SChNaXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE1pdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFNpdD1kaXQoKSxJT2U9dml0KCksTE9lPXdpdCgpLGtPZT1EQSgpLFJPZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7dGhpcy5jb250ZXh0PXQsdGhpcy5tZWFzdXJlcj1uZXcgSU9lLkNhY2hlTWVhc3VyZXIodGhpcy5jb250ZXh0KSx0aGlzLndyYXBwZXI9bmV3IExPZS5XcmFwcGVyLHRoaXMud3JpdGVyPW5ldyBrT2UuV3JpdGVyKHRoaXMubWVhc3VyZXIsdGhpcy5jb250ZXh0LHRoaXMud3JhcHBlcil9cmV0dXJuIGUuc3ZnPWZ1bmN0aW9uKHQscixuKXtyZXR1cm4gbmV3IGUobmV3IFNpdC5TdmdDb250ZXh0KHQscixuKSl9LGUuY2FudmFzPWZ1bmN0aW9uKHQscixuKXtyZXR1cm4gbmV3IGUobmV3IFNpdC5DYW52YXNDb250ZXh0KHQscixuKSl9LGUuaHRtbD1mdW5jdGlvbih0LHIsbil7cmV0dXJuIG5ldyBlKG5ldyBTaXQuSHRtbENvbnRleHQodCxyLG4pKX0sZS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxyLG4saSxvKXt0aGlzLndyaXRlci53cml0ZSh0LHIsbixpLG8pfSxlLnByb3RvdHlwZS5jbGVhck1lYXN1cmVyQ2FjaGU9ZnVuY3Rpb24oKXt0aGlzLm1lYXN1cmVyLnJlc2V0KCl9LGV9KCk7TWl0LlR5cGVzZXR0ZXI9Uk9lfSk7dmFyIGdsPUgoeUY9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcFMoZSl7Zm9yKHZhciB0IGluIGUpeUYuaGFzT3duUHJvcGVydHkodCl8fCh5Rlt0XT1lW3RdKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoeUYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3BTKGRpdCgpKTtwUyh2aXQoKSk7cFMoc1h0KCkpO3BTKGZTKCkpO3BTKHdpdCgpKTtwUyhEQSgpKX0pO3ZhciBsWHQ9SChkUz0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZFMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBOT2U9KEVyKCksVXQoTXIpKSxET2U9d2luZG93LkFycmF5O2Z1bmN0aW9uIE9PZShlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhdHRlbXB0ZWQgdG8gYWRkIGFycmF5cyBvZiB1bmVxdWFsIGxlbmd0aCIpO3JldHVybiBlLm1hcChmdW5jdGlvbihyLG4pe3JldHVybiBlW25dK3Rbbl19KX1kUy5hZGQ9T09lO2Z1bmN0aW9uIHpPZShlKXt2YXIgdD1OT2Uuc2V0KCkscj1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3QuaGFzKFN0cmluZyhuKSl8fCh0LmFkZChTdHJpbmcobikpLHIucHVzaChuKSl9KSxyfWRTLnVuaXE9ek9lO2Z1bmN0aW9uIEZPZShlKXtyZXR1cm4gRE9lLnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sZSl9ZFMuZmxhdHRlbj1GT2U7ZnVuY3Rpb24gQk9lKGUsdCl7Zm9yKHZhciByPVtdLG49MDtuPHQ7bisrKXJbbl09dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZShuKTplO3JldHVybiByfWRTLmNyZWF0ZUZpbGxlZEFycmF5PUJPZX0pO3ZhciBoWHQ9SChHQT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoR0EsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1WHQ9KEVyKCksVXQoTXIpKSxIT2U9d2luZG93Lk1hdGg7ZnVuY3Rpb24gVk9lKGUsdCl7dmFyIHI9Y1h0KGUpKy4wNSxuPWNYdCh0KSsuMDU7cmV0dXJuIHI+bj9yL246bi9yfUdBLmNvbnRyYXN0PVZPZTtmdW5jdGlvbiBVT2UoZSx0KXt2YXIgcj11WHQuY29sb3IoZSkuYnJpZ2h0ZXIodCk7cmV0dXJuIHIucmdiKCkudG9TdHJpbmcoKX1HQS5saWdodGVuQ29sb3I9VU9lO2Z1bmN0aW9uIHFPZShlLHQpe2UuY2xhc3NlZCh0LCEwKTt2YXIgcj1lLnN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIik7aWYocj09PSJ0cmFuc3BhcmVudCIpcmV0dXJuIG51bGw7dmFyIG49L1woKC4rKVwpLy5leGVjKHIpO2lmKCFuKXJldHVybiBudWxsO3ZhciBpPW5bMV0uc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24oYSl7dmFyIHM9K2EsbD1zLnRvU3RyaW5nKDE2KTtyZXR1cm4gczwxNj8iMCIrbDpsfSk7aWYoaS5sZW5ndGg9PT00JiZpWzNdPT09IjAwIilyZXR1cm4gbnVsbDt2YXIgbz0iIyIraS5qb2luKCIiKTtyZXR1cm4gZS5jbGFzc2VkKHQsITEpLG99R0EuY29sb3JUZXN0PXFPZTtmdW5jdGlvbiBjWHQoZSl7dmFyIHQ9dVh0LnJnYihlKSxyPWZ1bmN0aW9uKGEpe3JldHVybiBhPWEvMjU1LGE8PS4wMzkyOD9hLzEyLjkyOkhPZS5wb3coKGErLjA1NSkvMS4wNTUsMi40KX0sbj1yKHQuciksaT1yKHQuZyksbz1yKHQuYik7cmV0dXJuIC4yMTI2Km4rLjcxNTIqaSsuMDcyMipvfX0pO3ZhciBUaXQ9SChvbz0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkob28sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBFaXQ9KEVyKCksVXQoTXIpKSxkYT13aW5kb3cuTWF0aDtmdW5jdGlvbiBHT2UoZSx0KXtmb3IodmFyIHI9dDtyIT1udWxsJiZyIT09ZTspcj1yLnBhcmVudE5vZGU7cmV0dXJuIHI9PT1lfW9vLmNvbnRhaW5zPUdPZTtmdW5jdGlvbiBwWHQoZSl7dmFyIHQ7dHJ5e3Q9ZS5ub2RlKCkuZ2V0QkJveCgpfWNhdGNoKHIpe3Q9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH19cmV0dXJuIHR9b28uZWxlbWVudEJCb3g9cFh0O2Z1bmN0aW9uIFdPZShlKXtpZihlIGluc3RhbmNlb2YgU1ZHRWxlbWVudClyZXR1cm4gcFh0KEVpdC5zZWxlY3QoZSkpO2lmKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57eDp0LmxlZnQseTp0LnRvcCx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19ZWxzZSByZXR1cm57eDowLHk6MCx3aWR0aDowLGhlaWdodDowfX1vby5lbnRpdHlCb3VuZHM9V09lO29vLlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTPTFlMy82MDtmdW5jdGlvbiBZT2UoZSl7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSE9bnVsbD93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpOnNldFRpbWVvdXQoZSxvby5TQ1JFRU5fUkVGUkVTSF9SQVRFX01JTExJU0VDT05EUyl9b28ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGw9WU9lO2Z1bmN0aW9uIGpPZShlKXt2YXIgdD1lIGluc3RhbmNlb2YgRWl0LnNlbGVjdGlvbj9lLm5vZGUoKTplLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7cmV0dXJuIExmKHIsIndpZHRoIikrTGYociwicGFkZGluZy1sZWZ0IikrTGYociwicGFkZGluZy1yaWdodCIpK0xmKHIsImJvcmRlci1sZWZ0LXdpZHRoIikrTGYociwiYm9yZGVyLXJpZ2h0LXdpZHRoIil9b28uZWxlbWVudFdpZHRoPWpPZTtmdW5jdGlvbiBYT2UoZSl7dmFyIHQ9ZSBpbnN0YW5jZW9mIEVpdC5zZWxlY3Rpb24/ZS5ub2RlKCk6ZSxyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpO3JldHVybiBMZihyLCJoZWlnaHQiKStMZihyLCJwYWRkaW5nLXRvcCIpK0xmKHIsInBhZGRpbmctYm90dG9tIikrTGYociwiYm9yZGVyLXRvcC13aWR0aCIpK0xmKHIsImJvcmRlci1ib3R0b20td2lkdGgiKX1vby5lbGVtZW50SGVpZ2h0PVhPZTt2YXIgUGM9IlxccyIsV0E9Iig/OlstK10/WzAtOV0qXFwuP1swLTldKykiLGRYdD0iKD86KD86IitQYysiKyw/IitQYysiKil8KD86LCIrUGMrIiopKSIsJE9lPW5ldyBSZWdFeHAoInRyYW5zbGF0ZSIrUGMrIipcXCgiK1BjKyIqKCIrV0ErIikoPzoiK2RYdCsiKCIrV0ErIikpPyIrUGMrIipcXCkiKSxLT2U9bmV3IFJlZ0V4cCgicm90YXRlIitQYysiKlxcKCIrUGMrIiooIitXQSsiKSIrUGMrIipcXCkiKSxaT2U9bmV3IFJlZ0V4cCgic2NhbGUiK1BjKyIqXFwoIitQYysiKigiK1dBKyIpKD86IitkWHQrIigiK1dBKyIpKT8iK1BjKyIqXFwpIik7ZnVuY3Rpb24gSk9lKGUpe3ZhciB0PSRPZS5leGVjKGUuYXR0cigidHJhbnNmb3JtIikpO2lmKHQhPW51bGwpe3ZhciByPXRbMV0sbj10WzJdLGk9bj09PXZvaWQgMD8wOm47cmV0dXJuWytyLCtpXX1lbHNlIHJldHVyblswLDBdfW9vLmdldFRyYW5zbGF0ZVZhbHVlcz1KT2U7ZnVuY3Rpb24gUU9lKGUpe3ZhciB0PUtPZS5leGVjKGUuYXR0cigidHJhbnNmb3JtIikpO2lmKHQhPW51bGwpe3ZhciByPXRbMV07cmV0dXJuK3J9ZWxzZSByZXR1cm4gMH1vby5nZXRSb3RhdGU9UU9lO2Z1bmN0aW9uIHQ3ZShlKXt2YXIgdD1aT2UuZXhlYyhlLmF0dHIoInRyYW5zZm9ybSIpKTtpZih0IT1udWxsKXt2YXIgcj10WzFdLG49dFsyXTtyZXR1cm5bK3Isbj09bnVsbD8rcjorbl19ZWxzZSByZXR1cm5bMCwwXX1vby5nZXRTY2FsZVZhbHVlcz10N2U7ZnVuY3Rpb24gZTdlKGUsdCl7cmV0dXJuIShkYS5mbG9vcihlLnJpZ2h0KTw9ZGEuY2VpbCh0LmxlZnQpfHxkYS5jZWlsKGUubGVmdCk+PWRhLmZsb29yKHQucmlnaHQpfHxkYS5mbG9vcihlLmJvdHRvbSk8PWRhLmNlaWwodC50b3ApfHxkYS5jZWlsKGUudG9wKT49ZGEuZmxvb3IodC5ib3R0b20pKX1vby5jbGllbnRSZWN0c092ZXJsYXA9ZTdlO2Z1bmN0aW9uIHI3ZShlLHQpe3JldHVybntsZWZ0OmUubGVmdC10LHRvcDplLnRvcC10LHJpZ2h0OmUucmlnaHQrdCxib3R0b206ZS5ib3R0b20rdCx3aWR0aDplLndpZHRoK3QqMixoZWlnaHQ6ZS5oZWlnaHQrdCoyfX1vby5leHBhbmRSZWN0PXI3ZTtmdW5jdGlvbiBuN2UoZSx0KXtyZXR1cm4gZGEuZmxvb3IodC5sZWZ0KTw9ZGEuY2VpbChlLmxlZnQpJiZkYS5mbG9vcih0LnRvcCk8PWRhLmNlaWwoZS50b3ApJiZkYS5mbG9vcihlLnJpZ2h0KTw9ZGEuY2VpbCh0LnJpZ2h0KSYmZGEuZmxvb3IoZS5ib3R0b20pPD1kYS5jZWlsKHQuYm90dG9tKX1vby5jbGllbnRSZWN0SW5zaWRlPW43ZTtmdW5jdGlvbiBpN2UoZSx0LHIsbil7bj09PXZvaWQgMCYmKG49LjUpO3ZhciBpPWZYdChlKSxvPWZYdCh0KTtyZXR1cm4gci54K3Iud2lkdGg+PWkubWluLW4mJnIueDw9aS5tYXgrbiYmci55K3IuaGVpZ2h0Pj1vLm1pbi1uJiZyLnk8PW8ubWF4K259b28uaW50ZXJzZWN0c0JCb3g9aTdlO2Z1bmN0aW9uIGZYdChlKXtpZih0eXBlb2YgZT09Im51bWJlciIpe3ZhciB0PWU7cmV0dXJue21pbjp0LG1heDp0fX12YXIgcj1lO2lmKHIgaW5zdGFuY2VvZiBPYmplY3QmJiJtaW4iaW4gciYmIm1heCJpbiByKXJldHVybiByO3Rocm93IG5ldyBFcnJvcigiaW5wdXQgJyIrZSsiJyBjYW4ndCBiZSBwYXJzZWQgYXMgYW4gUmFuZ2UiKX1mdW5jdGlvbiBMZihlLHQpe3ZhciByPWUuZ2V0UHJvcGVydHlWYWx1ZSh0KSxuPXBhcnNlRmxvYXQocik7cmV0dXJuIG58fDB9ZnVuY3Rpb24gbzdlKGUpe2Zvcih2YXIgdD1bXTtlJiZlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7KXQucHVzaChlKSxlPWUucGFyZW50RWxlbWVudDtyZXR1cm4gdH1vby5nZXRIdG1sRWxlbWVudEFuY2VzdG9ycz1vN2U7ZnVuY3Rpb24gYTdlKGUpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkscj10LmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdHJhbnNmb3JtIil8fHQuZ2V0UHJvcGVydHlWYWx1ZSgiLW1vei10cmFuc2Zvcm0iKXx8dC5nZXRQcm9wZXJ0eVZhbHVlKCItbXMtdHJhbnNmb3JtIil8fHQuZ2V0UHJvcGVydHlWYWx1ZSgiLW8tdHJhbnNmb3JtIil8fHQuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIik7cmV0dXJuIGM3ZShyKX1vby5nZXRFbGVtZW50VHJhbnNmb3JtPWE3ZTt2YXIgczdlPS9ebWF0cml4XCgoW14pXSspXCkkLyxsN2U9L1ssIF0rLztmdW5jdGlvbiBjN2UoZSl7aWYoZT09bnVsbHx8ZT09PSJub25lIilyZXR1cm4gbnVsbDt2YXIgdD1lLm1hdGNoKHM3ZSk7aWYodD09bnVsbHx8dC5sZW5ndGg8MilyZXR1cm4gbnVsbDt2YXIgcj10WzFdLnNwbGl0KGw3ZSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBwYXJzZUZsb2F0KG4pfSk7cmV0dXJuIHIubGVuZ3RoIT02P251bGw6cn19KTt2YXIgQ2l0PUgoYW89PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFvLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeEY9KEVyKCksVXQoTXIpKSxtWHQ9VGl0KCksbWQ9d2luZG93Lk1hdGgsdTdlPVsxLDAsMCwxLDAsMF07ZnVuY3Rpb24gaDdlKGUsdCxyKXtyZXR1cm4gbWQubWluKHQscik8PWUmJmU8PW1kLm1heCh0LHIpfWFvLmluUmFuZ2U9aDdlO2Z1bmN0aW9uIGY3ZShlLHQscil7cmV0dXJuIG1kLm1pbihtZC5tYXgodCxlKSxyKX1hby5jbGFtcD1mN2U7ZnVuY3Rpb24gcDdlKGUsdCxyKXt2YXIgbj10eXBlb2YgdD09ImZ1bmN0aW9uIj90Om51bGwsaT1uPT1udWxsP3Q6cixvPW49PW51bGw/eEYubWF4KGUpOnhGLm1heChlLG4pO3JldHVybiBvIT09dm9pZCAwP286aX1hby5tYXg9cDdlO2Z1bmN0aW9uIGQ3ZShlLHQscil7dmFyIG49dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dDpudWxsLGk9bj09bnVsbD90OnIsbz1uPT1udWxsP3hGLm1pbihlKTp4Ri5taW4oZSxuKTtyZXR1cm4gbyE9PXZvaWQgMD9vOml9YW8ubWluPWQ3ZTtmdW5jdGlvbiBtN2UoZSl7cmV0dXJuIGUhPT1lfWFvLmlzTmFOPW03ZTtmdW5jdGlvbiBnN2UoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIiYmZS1lPDF9YW8uaXNWYWxpZE51bWJlcj1nN2U7ZnVuY3Rpb24gXzdlKGUsdCxyKXtpZihyPT09dm9pZCAwJiYocj0xKSxyPT09MCl0aHJvdyBuZXcgRXJyb3IoInN0ZXAgY2Fubm90IGJlIDAiKTtmb3IodmFyIG49bWQubWF4KG1kLmNlaWwoKHQtZSkvciksMCksaT1bXSxvPTA7bzxuOysrbylpW29dPWUrcipvO3JldHVybiBpfWFvLnJhbmdlPV83ZTtmdW5jdGlvbiB5N2UoZSx0KXtyZXR1cm4gbWQucG93KHQueS1lLnksMikrbWQucG93KHQueC1lLngsMil9YW8uZGlzdGFuY2VTcXVhcmVkPXk3ZTtmdW5jdGlvbiB2N2UoZSl7cmV0dXJuIGUvMzYwKm1kLlBJKjJ9YW8uZGVncmVlc1RvUmFkaWFucz12N2U7ZnVuY3Rpb24geDdlKGUsdCl7cmV0dXJuIHQudG9wTGVmdC54PD1lLngmJnQuYm90dG9tUmlnaHQueD49ZS54JiZ0LnRvcExlZnQueTw9ZS55JiZ0LmJvdHRvbVJpZ2h0Lnk+PWUueX1hby53aXRoaW49eDdlO2Z1bmN0aW9uIGI3ZShlLHQscixuLGksbyxhLHMpe3JldHVybiBlPD1pK2EmJmk8PWUrciYmdDw9bytzJiZvPD10K259YW8uYm91bmRzSW50ZXJzZWN0cz1iN2U7ZnVuY3Rpb24gdzdlKGUpe2Zvcih2YXIgdD1tWHQuZ2V0SHRtbEVsZW1lbnRBbmNlc3RvcnMoZSkscj11N2Usbj1udWxsLGk9MCxvPXQ7aTxvLmxlbmd0aDtpKyspe3ZhciBhPW9baV0scz1tWHQuZ2V0RWxlbWVudFRyYW5zZm9ybShhKTtpZihzIT1udWxsKXt2YXIgbD1hLmNsaWVudFdpZHRoLzIsYz1hLmNsaWVudEhlaWdodC8yO3I9dkYocixbbCxjXSkscj1nWHQocixfWHQocykpLHI9dkYocixbLWwsLWNdKX12YXIgdT1hLnNjcm9sbExlZnQsaD1hLnNjcm9sbFRvcDsobj09PW51bGx8fGE9PT1uKSYmKHUtPWEub2Zmc2V0TGVmdCthLmNsaWVudExlZnQsaC09YS5vZmZzZXRUb3ArYS5jbGllbnRUb3Asbj1hLm9mZnNldFBhcmVudCkscj12RihyLFt1LGhdKX1yZXR1cm4gcn1hby5nZXRDdW11bGF0aXZlVHJhbnNmb3JtPXc3ZTtmdW5jdGlvbiBnWHQoZSx0KXtyZXR1cm5bZVswXSp0WzBdK2VbMl0qdFsxXSxlWzFdKnRbMF0rZVszXSp0WzFdLGVbMF0qdFsyXStlWzJdKnRbM10sZVsxXSp0WzJdK2VbM10qdFszXSxlWzBdKnRbNF0rZVsyXSp0WzVdK2VbNF0sZVsxXSp0WzRdK2VbM10qdFs1XStlWzVdXX1hby5tdWx0aXBseU1hdHJpeD1nWHQ7ZnVuY3Rpb24gUzdlKGUsdCl7cmV0dXJuW3RbMF0sdFsxXSx0WzJdLHRbM10sdFs0XStlWzBdLHRbNV0rZVsxXV19YW8ucHJlbXVsdGlwbHlUcmFuc2xhdGU9UzdlO2Z1bmN0aW9uIHZGKGUsdCl7cmV0dXJuW2VbMF0sZVsxXSxlWzJdLGVbM10sZVswXSp0WzBdK2VbMl0qdFsxXStlWzRdLGVbMV0qdFswXStlWzNdKnRbMV0rZVs1XV19YW8ubXVsdGlwbHlUcmFuc2xhdGU9dkY7ZnVuY3Rpb24gX1h0KGUpe3ZhciB0PWVbMF0qZVszXS1lWzFdKmVbMl07aWYodD09PTApdGhyb3cgbmV3IEVycm9yKCJzaW5ndWxhciBtYXRyaXgiKTt2YXIgcj0xL3Q7cmV0dXJuW3IqZVszXSxyKi1lWzFdLHIqLWVbMl0sciplWzBdLHIqKC1lWzNdKmVbNF0rZVsyXSplWzVdKSxyKihlWzFdKmVbNF0rLWVbMF0qZVs1XSldfWFvLmludmVydE1hdHJpeD1fWHQ7ZnVuY3Rpb24gTTdlKGUsdCl7cmV0dXJue3g6ZVswXSp0LngrZVsyXSp0LnkrZVs0XSx5OmVbMV0qdC54K2VbM10qdC55K2VbNV19fWFvLmFwcGx5VHJhbnNmb3JtPU03ZX0pO3ZhciB5WHQ9SChiRj0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoYkYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBFN2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgbj1NYXRoLmNlaWwodC5sZW5ndGgvMiksaT0wO2k8bjtpKyspclswXS5pbnNlcnQodFtpXSk7Zm9yKHZhciBpPW47aTx0Lmxlbmd0aDtpKyspclsxXS5pbnNlcnQodFtpXSl9LGV9KCk7YkYuU3BsaXRTdHJhdGVneVRyaXZpYWw9RTdlO3ZhciBUN2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0LHIpe2Zvcih0PXQuc2xpY2UoKSx0aGlzLmNob29zZUZpcnN0U3BsaXQodCxyKTt0Lmxlbmd0aD4wOyl0aGlzLmFkZE5leHQodCxyKX0sZS5wcm90b3R5cGUuY2hvb3NlRmlyc3RTcGxpdD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgbj0wLGk9MCxvPXQubGVuZ3RoLTEsYT10Lmxlbmd0aC0xLHM9MTtzPHQubGVuZ3RoLTE7cysrKXt2YXIgbD10W3NdO2wuYm91bmRzLnhsPnRbb10uYm91bmRzLnhsP289czpsLmJvdW5kcy54aDx0W25dLmJvdW5kcy54aCYmKG49cyksbC5ib3VuZHMueWw+dFthXS5ib3VuZHMueWw/YT1zOmwuYm91bmRzLnloPHRbaV0uYm91bmRzLnloJiYoaT1zKX12YXIgYz1NYXRoLmFicyh0W25dLmJvdW5kcy54aC10W29dLmJvdW5kcy54bCksdT1NYXRoLmFicyh0W2ldLmJvdW5kcy55aC10W2FdLmJvdW5kcy55bCksaD1jPnU/W24sb106W2ksYV0sZj1oWzBdLHA9aFsxXTtmPT09cCYmKGY9MCxwPXQubGVuZ3RoLTEpLHJbMF0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWF4KGYscCksMSlbMF0pLHJbMV0uaW5zZXJ0KHQuc3BsaWNlKE1hdGgubWluKGYscCksMSlbMF0pfSxlLnByb3RvdHlwZS5hZGROZXh0PWZ1bmN0aW9uKHQscil7Zm9yKHZhciBuPW51bGwsaT1udWxsLG89bnVsbCxhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBzPXRbYV0sbD1yWzBdLnVuaW9uQXJlYURpZmZlcmVuY2Uocy5ib3VuZHMpLGM9clsxXS51bmlvbkFyZWFEaWZmZXJlbmNlKHMuYm91bmRzKTsobDxpfHxuPT1udWxsKSYmKG49YSxpPWwsbz1yWzBdKSxjPGkmJihuPWEsaT1jLG89clsxXSl9by5pbnNlcnQodC5zcGxpY2UobiwxKVswXSl9LGV9KCk7YkYuU3BsaXRTdHJhdGVneUxpbmVhcj1UN2V9KTt2YXIgUGl0PUgoZ2Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGdkLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgQzdlPXlYdCgpLEE3ZT01LFA3ZT1uZXcgQzdlLlNwbGl0U3RyYXRlZ3lMaW5lYXIsa2Y7KGZ1bmN0aW9uKGUpe2VbZS5QQVNTPTBdPSJQQVNTIixlW2UuRkFJTD0xXT0iRkFJTCIsZVtlLlBBU1NfQU5EX09WRVJXUklURT0yXT0iUEFTU19BTkRfT1ZFUldSSVRFIn0pKGtmPWdkLlF1ZXJ5UHJlZGljYXRlUmVzdWx0fHwoZ2QuUXVlcnlQcmVkaWNhdGVSZXN1bHQ9e30pKTtmdW5jdGlvbiB3RihlLHQscil7dmFyIG49MS8wLGk9MS8wLG89MS8wO3JldHVybiBmdW5jdGlvbihhKXt2YXIgcz10KGEuYm91bmRzLGUpLGw9cihhLmJvdW5kcyxlKTtyZXR1cm4gYS52YWx1ZSE9bnVsbD9zPG4/KG49cyxpPXMsbz1sLGtmLlBBU1NfQU5EX09WRVJXUklURSk6cz09PW4/a2YuUEFTUzprZi5GQUlMOnM+bz9rZi5GQUlMOihpPU1hdGgubWluKHMsaSksbz1NYXRoLm1heChsLG8pLGtmLlBBU1MpfX1nZC5jcmVhdGVNaW5pbWl6aW5nTm9kZVByZWRpY2F0ZT13RjtmdW5jdGlvbiBBaXQoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gdChuLmJvdW5kcyxlKS10KHIuYm91bmRzLGUpfX1nZC5jcmVhdGVOb2RlU29ydD1BaXQ7dmFyIEk3ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt0PT09dm9pZCAwJiYodD1BN2UpLHI9PT12b2lkIDAmJihyPVA3ZSksdGhpcy5tYXhOb2RlQ2hpbGRyZW49dCx0aGlzLnNwbGl0U3RyYXRlZ3k9cix0aGlzLnJvb3Q9bmV3IFNGKCEwKSx0aGlzLnNpemU9MH1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvb3R9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5yb290PW5ldyBTRighMCksdGhpcy5zaXplPTB9LGUucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LHIpe2Zvcih2YXIgbj10aGlzLnJvb3Q7IW4ubGVhZjspbj1uLnN1YnRyZWUodCk7dmFyIGk9U0YudmFsdWVOb2RlKHQscik7Zm9yKG4uaW5zZXJ0KGkpLHRoaXMuc2l6ZSs9MTtuLm92ZXJmbG93KHRoaXMubWF4Tm9kZUNoaWxkcmVuKTspbj1uLnNwbGl0KHRoaXMuc3BsaXRTdHJhdGVneSksbi5wYXJlbnQ9PW51bGwmJih0aGlzLnJvb3Q9bik7cmV0dXJuIGl9LGUucHJvdG90eXBlLmxvY2F0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeShmdW5jdGlvbihyKXtyZXR1cm4gci5jb250YWlucyh0KX0pfSxlLnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0PWZ1bmN0aW9uKHQpe3ZhciByPXdGKHQsSmEuZGlzdGFuY2VTcXVhcmVkVG9OZWFyRWRnZSxKYS5kaXN0YW5jZVNxdWFyZWRUb0ZhckVkZ2UpLG49dGhpcy5xdWVyeU5vZGVzKHIpO3JldHVybiBuLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gaS52YWx1ZX0pfSxlLnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0WD1mdW5jdGlvbih0KXt2YXIgcj13Rih0LEphLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWCxKYS5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWCksbj10aGlzLnF1ZXJ5Tm9kZXMocik7cmV0dXJuIG4uc29ydChBaXQodCxKYS5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVkpKSxuLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gaS52YWx1ZX0pfSxlLnByb3RvdHlwZS5sb2NhdGVOZWFyZXN0WT1mdW5jdGlvbih0KXt2YXIgcj13Rih0LEphLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWSxKYS5hYnNvbHV0ZURpc3RhbmNlVG9GYXJFZGdlWSksbj10aGlzLnF1ZXJ5Tm9kZXMocik7cmV0dXJuIG4uc29ydChBaXQodCxKYS5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgpKSxuLm1hcChmdW5jdGlvbihpKXtyZXR1cm4gaS52YWx1ZX0pfSxlLnByb3RvdHlwZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoZnVuY3Rpb24ocil7cmV0dXJuIEphLmlzQm91bmRzT3ZlcmxhcEJvdW5kcyhyLHQpfSl9LGUucHJvdG90eXBlLmludGVyc2VjdFg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoZnVuY3Rpb24ocil7cmV0dXJuIEphLmlzQm91bmRzT3ZlcmxhcFgocix0KX0pfSxlLnByb3RvdHlwZS5pbnRlcnNlY3RZPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnF1ZXJ5KGZ1bmN0aW9uKHIpe3JldHVybiBKYS5pc0JvdW5kc092ZXJsYXBZKHIsdCl9KX0sZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCl7dmFyIHI9W107aWYodGhpcy5yb290LmJvdW5kcyE9bnVsbCYmIXQodGhpcy5yb290LmJvdW5kcykpcmV0dXJuIHI7Zm9yKHZhciBuPVt0aGlzLnJvb3RdO24ubGVuZ3RoPjA7KWZvcih2YXIgaT1uLnNoaWZ0KCksbz0wO288aS5lbnRyaWVzLmxlbmd0aDtvKyspe3ZhciBhPWkuZW50cmllc1tvXTt0KGEuYm91bmRzKSYmKGkubGVhZj9yLnB1c2goYS52YWx1ZSk6bi5wdXNoKGEpKX1yZXR1cm4gcn0sZS5wcm90b3R5cGUucXVlcnlOb2Rlcz1mdW5jdGlvbih0KXt2YXIgcj1bXTtpZih0aGlzLnJvb3QuYm91bmRzIT1udWxsJiZ0KHRoaXMucm9vdCk9PT1rZi5GQUlMKXJldHVybiByO2Zvcih2YXIgbj1bdGhpcy5yb290XTtuLmxlbmd0aD4wOylmb3IodmFyIGk9bi5zaGlmdCgpLG89MDtvPGkuZW50cmllcy5sZW5ndGg7bysrKXt2YXIgYT1pLmVudHJpZXNbb10scz10KGEpO3M9PT1rZi5QQVNTX0FORF9PVkVSV1JJVEUmJihyPVtdKSwocz09PWtmLlBBU1N8fHM9PT1rZi5QQVNTX0FORF9PVkVSV1JJVEUpJiYoaS5sZWFmP3IucHVzaChhKTpuLnB1c2goYSkpfXJldHVybiByfSxlfSgpO2dkLlJUcmVlPUk3ZTt2YXIgU0Y9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3RoaXMubGVhZj10LHRoaXMuYm91bmRzPW51bGwsdGhpcy5lbnRyaWVzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy52YWx1ZT1udWxsfXJldHVybiBlLnZhbHVlTm9kZT1mdW5jdGlvbih0LHIpe3ZhciBuPW5ldyBlKCEwKTtyZXR1cm4gbi5ib3VuZHM9dCxuLnZhbHVlPXIsbn0sZS5wcm90b3R5cGUub3ZlcmZsb3c9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW50cmllcy5sZW5ndGg+dH0sZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9uKHQpe3RoaXMuZW50cmllcy5wdXNoKHQpLHQucGFyZW50PXRoaXM7Zm9yKHZhciByPXRoaXM7ciE9bnVsbDspci5ib3VuZHM9SmEudW5pb25BbGwoW3IuYm91bmRzLHQuYm91bmRzXSkscj1yLnBhcmVudDtyZXR1cm4gdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuZW50cmllcy5pbmRleE9mKHQpO2lmKHI+PTApe3RoaXMuZW50cmllcy5zcGxpY2UociwxKTtmb3IodmFyIG49dGhpcztuIT1udWxsOyluLmJvdW5kcz1KYS51bmlvbkFsbChuLmVudHJpZXMubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpLmJvdW5kc30pKSxuPW4ucGFyZW50fXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5zdWJ0cmVlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj0xLzAsbj1udWxsLGk9MDtpPHRoaXMuZW50cmllcy5sZW5ndGg7aSsrKXt2YXIgbz10aGlzLmVudHJpZXNbaV0sYT1vLnVuaW9uQXJlYURpZmZlcmVuY2UodCk7KGE8cnx8YT09PXImJm4hPW51bGwmJm8uZW50cmllcy5sZW5ndGg8bi5lbnRyaWVzLmxlbmd0aCkmJihuPW8pfXJldHVybiBufSxlLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbih0KXt0aGlzLnBhcmVudCE9bnVsbCYmdGhpcy5wYXJlbnQucmVtb3ZlKHRoaXMpO3ZhciByPVtuZXcgZSh0aGlzLmxlYWYpLG5ldyBlKHRoaXMubGVhZildO3Quc3BsaXQodGhpcy5lbnRyaWVzLHIpO3ZhciBuPXRoaXMucGFyZW50IT1udWxsP3RoaXMucGFyZW50Om5ldyBlKCExKTtyZXR1cm4gbi5pbnNlcnQoclswXSksbi5pbnNlcnQoclsxXSksbi5sZWFmPSExLG59LGUucHJvdG90eXBlLnVuaW9uQXJlYURpZmZlcmVuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKEphLnVuaW9uKHRoaXMuYm91bmRzLHQpLmFyZWEoKS10aGlzLmJvdW5kcy5hcmVhKCkpfSxlLnByb3RvdHlwZS5tYXhEZXB0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlYWY/MToxK3RoaXMuZW50cmllcy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubWF4RGVwdGgoKX0pLnJlZHVjZShmdW5jdGlvbih0LHIpe3JldHVybiBNYXRoLm1heCh0LHIpfSl9LGV9KCk7Z2QuUlRyZWVOb2RlPVNGO3ZhciBKYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4saSl7dGhpcy54bD10LHRoaXMueWw9cix0aGlzLnhoPW4sdGhpcy55aD1pLHRoaXMud2lkdGg9dGhpcy54aC10aGlzLnhsLHRoaXMuaGVpZ2h0PXRoaXMueWgtdGhpcy55bH1yZXR1cm4gZS54eXdoPWZ1bmN0aW9uKHQscixuLGkpe3JldHVybiBuZXcgZSh0LHIsdCtuLHIraSl9LGUuZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZSh0LngsdC55LHQueCt0LndpZHRoLHQueSt0LmhlaWdodCl9LGUuYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBlLnBvaW50UGFpcih0LnRvcExlZnQsdC5ib3R0b21SaWdodCl9LGUucG9pbnRQYWlyPWZ1bmN0aW9uKHQscil7cmV0dXJuIG5ldyBlKE1hdGgubWluKHQueCxyLngpLE1hdGgubWluKHQueSxyLnkpLE1hdGgubWF4KHQueCxyLngpLE1hdGgubWF4KHQueSxyLnkpKX0sZS5wb2ludHM9ZnVuY3Rpb24odCl7aWYodC5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoIm5lZWQgYXQgbGVhc3QgMiBwb2ludHMgdG8gY3JlYXRlIGJvdW5kcyIpO3ZhciByPXQubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpLnh9KSxuPXQubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpLnl9KTtyZXR1cm4gbmV3IGUoci5yZWR1Y2UoZnVuY3Rpb24oaSxvKXtyZXR1cm4gTWF0aC5taW4oaSxvKX0pLG4ucmVkdWNlKGZ1bmN0aW9uKGksbyl7cmV0dXJuIE1hdGgubWluKGksbyl9KSxyLnJlZHVjZShmdW5jdGlvbihpLG8pe3JldHVybiBNYXRoLm1heChpLG8pfSksbi5yZWR1Y2UoZnVuY3Rpb24oaSxvKXtyZXR1cm4gTWF0aC5tYXgoaSxvKX0pKX0sZS51bmlvbj1mdW5jdGlvbih0LHIpe3JldHVybiBuZXcgZShNYXRoLm1pbih0LnhsLHIueGwpLE1hdGgubWluKHQueWwsci55bCksTWF0aC5tYXgodC54aCxyLnhoKSxNYXRoLm1heCh0LnloLHIueWgpKX0sZS51bmlvbkFsbD1mdW5jdGlvbih0KXtyZXR1cm4gdD10LmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gciE9bnVsbH0pLHQubGVuZ3RoPT09MD9udWxsOnQucmVkdWNlKGZ1bmN0aW9uKHIsbil7cmV0dXJuIGUudW5pb24ocixuKX0pfSxlLmlzQm91bmRzT3ZlcmxhcEJvdW5kcz1mdW5jdGlvbih0LHIpe3JldHVybiBlLmlzQm91bmRzT3ZlcmxhcFgodCxyKSYmZS5pc0JvdW5kc092ZXJsYXBZKHQscil9LGUuaXNCb3VuZHNPdmVybGFwWD1mdW5jdGlvbih0LHIpe3JldHVybiEodC54aDxyLnhsKSYmISh0LnhsPnIueGgpfSxlLmlzQm91bmRzT3ZlcmxhcFk9ZnVuY3Rpb24odCxyKXtyZXR1cm4hKHQueWg8ci55bCkmJiEodC55bD5yLnloKX0sZS5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVg9ZnVuY3Rpb24odCxyKXt2YXIgbj10LndpZHRoLzIsaT10LnhsK247cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHIueC1pKS1uLDApfSxlLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWT1mdW5jdGlvbih0LHIpe3ZhciBuPXQuaGVpZ2h0LzIsaT10LnlsK247cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHIueS1pKS1uLDApfSxlLmFic29sdXRlRGlzdGFuY2VUb0ZhckVkZ2VYPWZ1bmN0aW9uKHQscil7dmFyIG49ZS5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgodCxyKTtyZXR1cm4gbj09PTA/MDpuK3Qud2lkdGh9LGUuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVk9ZnVuY3Rpb24odCxyKXt2YXIgbj1lLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWSh0LHIpO3JldHVybiBuPT09MD8wOm4rdC5oZWlnaHR9LGUuZGlzdGFuY2VTcXVhcmVkVG9OZWFyRWRnZT1mdW5jdGlvbih0LHIpe3ZhciBuPWUuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYKHQsciksaT1lLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWSh0LHIpO3JldHVybiBuKm4raSppfSxlLmRpc3RhbmNlU3F1YXJlZFRvRmFyRWRnZT1mdW5jdGlvbih0LHIpe3ZhciBuPWUuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVgodCxyKSxpPWUuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVkodCxyKTtyZXR1cm4gbipuK2kqaX0sZS5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFyZWFDYWNoZWQ9PW51bGwmJih0aGlzLmFyZWFDYWNoZWQ9KHRoaXMueGgtdGhpcy54bCkqKHRoaXMueWgtdGhpcy55bCkpLHRoaXMuYXJlYUNhY2hlZH0sZS5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueGw8PXQueCYmdGhpcy54aD49dC54JiZ0aGlzLnlsPD10LnkmJnRoaXMueWg+PXQueX0sZX0oKTtnZC5SVHJlZUJvdW5kcz1KYX0pO3ZhciBiWHQ9SChfZD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoX2QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB2WHQ9KEVyKCksVXQoTXIpKSxMN2U9T2UoKSxYZz1GZSgpLGs3ZT1QZigpO19kLklTdGFja2luZ09yZGVyPWs3ZS5tYWtlRW51bShbInRvcGRvd24iLCJib3R0b211cCJdKTt2YXIgeFh0PXdpbmRvdy5NYXRoO2Z1bmN0aW9uIFI3ZShlLHQscixuKXtuPT09dm9pZCAwJiYobj0iYm90dG9tdXAiKTt2YXIgaT12WHQubWFwKCksbz12WHQubWFwKCksYT1uZXcgWGcuTWFwO249PT0idG9wZG93biImJihlPWUuc2xpY2UoKSxlLnJldmVyc2UoKSk7Zm9yKHZhciBzPTAsbD1lO3M8bC5sZW5ndGg7cysrKXtmb3IodmFyIGM9bFtzXSx1PW5ldyBYZy5NYXAsaD1jLmRhdGEoKSxmPWgubGVuZ3RoLHA9MDtwPGY7cCsrKXt2YXIgZD1oW3BdLGc9dChkLHAsYyksXz1fZC5ub3JtYWxpemVLZXkoZykseT0rcihkLHAsYykseD12b2lkIDAsYj15Pj0wP2k6bztiLmhhcyhfKT8oeD1iLmdldChfKSxiLnNldChfLHgreSkpOih4PTAsYi5zZXQoXyx5KSksdS5zZXQoXyx7b2Zmc2V0OngsdmFsdWU6eSxheGlzVmFsdWU6ZyxvcmlnaW5hbERhdHVtOmQsb3JpZ2luYWxEYXRhc2V0OmMsb3JpZ2luYWxJbmRleDpwfSl9YS5zZXQoYyx1KX1yZXR1cm4gYX1fZC5zdGFjaz1SN2U7ZnVuY3Rpb24gTjdlKGUpe3ZhciB0PW5ldyBYZy5NYXAscj1uZXcgWGcuTWFwO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24obil7bi5mb3JFYWNoKGZ1bmN0aW9uKGksbyl7dmFyIGE9aS5vZmZzZXQraS52YWx1ZSxzPVhnLk1hdGgubWF4KFthLGkub2Zmc2V0XSxpLm9mZnNldCksbD1YZy5NYXRoLm1pbihbYSxpLm9mZnNldF0saS5vZmZzZXQpLGM9aS5heGlzVmFsdWU7dC5oYXMobyk/dC5nZXQobykuZXh0ZW50PHMmJnQuc2V0KG8se2V4dGVudDpzLGF4aXNWYWx1ZTpjLHN0YWNrZWREYXR1bTppfSk6dC5zZXQobyx7ZXh0ZW50OnMsYXhpc1ZhbHVlOmMsc3RhY2tlZERhdHVtOml9KSxyLmhhcyhvKT9yLmdldChvKS5leHRlbnQ+bCYmci5zZXQobyx7ZXh0ZW50OmwsYXhpc1ZhbHVlOmMsc3RhY2tlZERhdHVtOml9KTpyLnNldChvLHtleHRlbnQ6bCxheGlzVmFsdWU6YyxzdGFja2VkRGF0dW06aX0pfSl9KSx7bWF4aW11bUV4dGVudHM6dCxtaW5pbXVtRXh0ZW50czpyfX1fZC5zdGFja2VkRXh0ZW50cz1ON2U7ZnVuY3Rpb24gRDdlKGUsdCxyKXt2YXIgbj1bXTtlLmZvckVhY2goZnVuY3Rpb24oYSxzKXtmb3IodmFyIGw9cy5kYXRhKCksYz1sLmxlbmd0aCx1PTA7dTxjO3UrKyl7dmFyIGg9bFt1XTtpZighKHIhPW51bGwmJiFyKGgsdSxzKSkpe3ZhciBmPWEuZ2V0KF9kLm5vcm1hbGl6ZUtleSh0KGgsdSxzKSkpO24ucHVzaChmLnZhbHVlK2Yub2Zmc2V0KX19fSk7dmFyIGk9WGcuTWF0aC5tYXgobiwwKSxvPVhnLk1hdGgubWluKG4sMCk7cmV0dXJuW3hYdC5taW4obywwKSx4WHQubWF4KDAsaSldfV9kLnN0YWNrZWRFeHRlbnQ9RDdlO19kLm5vcm1hbGl6ZUtleT1MN2UubWVtb2l6ZShmdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpfSl9KTt2YXIgWUE9SChNRj0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTUYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO01GLlNIT1dfV0FSTklOR1M9ITA7TUYuQUREX1RJVExFX0VMRU1FTlRTPSEwfSk7dmFyIEVGPUgobVM9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG1TLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTzdlPVlBKCk7ZnVuY3Rpb24gd1h0KGUpeyFPN2UuU0hPV19XQVJOSU5HU3x8Y29uc29sZS53YXJuKGUpfW1TLndhcm49d1h0O2Z1bmN0aW9uIFNYdChlLHQpe2Zvcih2YXIgcj1bXSxuPTI7bjxhcmd1bWVudHMubGVuZ3RoO24rKylyW24tMl09YXJndW1lbnRzW25dO3JldHVybiB0PT09MD8oZShyKSwtMSk6d2luZG93LnNldFRpbWVvdXQoZSx0LHIpfW1TLnNldFRpbWVvdXQ9U1h0O2Z1bmN0aW9uIHo3ZShlLHQscil7dmFyIG49bnVsbCxpPVtdLG89ZnVuY3Rpb24oKXt0LmFwcGx5KHIsaSl9O3JldHVybiBmdW5jdGlvbigpe2k9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxjbGVhclRpbWVvdXQobiksbj1TWHQobyxlKX19bVMuZGVib3VuY2U9ejdlO2Z1bmN0aW9uIEY3ZShlLHQscil7cj09PXZvaWQgMCYmKHI9IiIpLHdYdCgiTWV0aG9kICIrZSsiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAiK3QrIi4gUGxlYXNlIHJlZmVyIHRvIHRoZSByZWxlYXNlIG5vdGVzLiAiK3IpfW1TLmRlcHJlY2F0ZWQ9RjdlfSk7dmFyIE1YdD1IKElpdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoSWl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgQjdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7dGhpcy5lbnRyeUluZGV4PXQsdGhpcy5leGl0SW5kZXg9dCx0aGlzLm1pbkluZGV4PXQsdGhpcy5tYXhJbmRleD10LHRoaXMuYnVja2V0VmFsdWU9cix0aGlzLm1pblZhbHVlPW4sdGhpcy5tYXhWYWx1ZT1ufXJldHVybiBlLnByb3RvdHlwZS5pc0luQnVja2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT10aGlzLmJ1Y2tldFZhbHVlfSxlLnByb3RvdHlwZS5hZGRUb0J1Y2tldD1mdW5jdGlvbih0LHIpe3Q8dGhpcy5taW5WYWx1ZSYmKHRoaXMubWluVmFsdWU9dCx0aGlzLm1pbkluZGV4PXIpLHQ+dGhpcy5tYXhWYWx1ZSYmKHRoaXMubWF4VmFsdWU9dCx0aGlzLm1heEluZGV4PXIpLHRoaXMuZXhpdEluZGV4PXJ9LGUucHJvdG90eXBlLmdldFVuaXF1ZUluZGljZXM9ZnVuY3Rpb24oKXt2YXIgdD1bdGhpcy5lbnRyeUluZGV4LHRoaXMubWF4SW5kZXgsdGhpcy5taW5JbmRleCx0aGlzLmV4aXRJbmRleF07cmV0dXJuIHQuZmlsdGVyKGZ1bmN0aW9uKHIsbil7cmV0dXJuIG49PTB8fHIhPXRbbi0xXX0pfSxlfSgpO0lpdC5CdWNrZXQ9QjdlfSk7dmFyIGtpdD1IKExpdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTGl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSDdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3R5cGVvZiB3aW5kb3cuU2V0PT0iZnVuY3Rpb24iP3RoaXMuX2VzNlNldD1uZXcgd2luZG93LlNldDp0aGlzLl92YWx1ZXM9W10sdGhpcy5zaXplPTB9cmV0dXJuIGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXM2U2V0IT1udWxsPyh0aGlzLl9lczZTZXQuYWRkKHQpLHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSx0aGlzKToodGhpcy5oYXModCl8fCh0aGlzLl92YWx1ZXMucHVzaCh0KSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCksdGhpcyl9LGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZih0aGlzLl9lczZTZXQhPW51bGwpe3ZhciByPXRoaXMuX2VzNlNldC5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT10aGlzLl9lczZTZXQuc2l6ZSxyfXZhciBuPXRoaXMuX3ZhbHVlcy5pbmRleE9mKHQpO3JldHVybiBuIT09LTE/KHRoaXMuX3ZhbHVlcy5zcGxpY2UobiwxKSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCwhMCk6ITF9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXM2U2V0IT1udWxsP3RoaXMuX2VzNlNldC5oYXModCk6dGhpcy5fdmFsdWVzLmluZGV4T2YodCkhPT0tMX0sZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LHIpe3ZhciBuPXRoaXM7aWYodGhpcy5fZXM2U2V0IT1udWxsKXt2YXIgaT1mdW5jdGlvbihvLGEpe3JldHVybiB0LmNhbGwocixvLGEsbil9O3RoaXMuX2VzNlNldC5mb3JFYWNoKGkscik7cmV0dXJufXRoaXMuX3ZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKG8pe3QuY2FsbChyLG8sbyxuKX0pfSxlfSgpO0xpdC5TZXQ9SDdlfSk7dmFyIEVYdD1IKFJpdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUml0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVjdlPShkZSgpLFV0KHBlKSksVTdlPWtpdCgpLHE3ZT1mdW5jdGlvbihlKXtWN2UuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3JldHVybiBlIT09bnVsbCYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHQucHJvdG90eXBlLmNhbGxDYWxsYmFja3M9ZnVuY3Rpb24oKXtmb3IodmFyIHI9dGhpcyxuPVtdLGk9MDtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baV09YXJndW1lbnRzW2ldO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24obyl7by5hcHBseShyLG4pfSksdGhpc30sdH0oVTdlLlNldCk7Uml0LkNhbGxiYWNrU2V0PXE3ZX0pO3ZhciBUWHQ9SChOaXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE5pdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyICRnPVBpdCgpLEc3ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLl9lbnRpdGllcz1bXSx0aGlzLl9ydHJlZT1uZXcgJGcuUlRyZWV9cmV0dXJuIGUucHJvdG90eXBlLmFkZEFsbD1mdW5jdGlvbih0LHIsbil7aWYodGhpcy5fZW50aXRpZXM9dGhpcy5fZW50aXRpZXMuY29uY2F0KHQpLG4hPT12b2lkIDApZm9yKHZhciBpPSRnLlJUcmVlQm91bmRzLmJvdW5kcyhuKSxvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBhPXRbb10scz0kZy5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMocihhKSk7JGcuUlRyZWVCb3VuZHMuaXNCb3VuZHNPdmVybGFwQm91bmRzKGkscykmJnRoaXMuX3J0cmVlLmluc2VydChzLGEpfWVsc2UgZm9yKHZhciBvPTA7bzx0Lmxlbmd0aDtvKyspe3ZhciBhPXRbb10scz0kZy5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMocihhKSk7dGhpcy5fcnRyZWUuaW5zZXJ0KHMsYSl9fSxlLnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5sb2NhdGVOZWFyZXN0KHQpLnBvcCgpfSxlLnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0WD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUubG9jYXRlTmVhcmVzdFgodCkucG9wKCl9LGUucHJvdG90eXBlLmVudGl0eU5lYXJlc3RZPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5sb2NhdGVOZWFyZXN0WSh0KS5wb3AoKX0sZS5wcm90b3R5cGUuZW50aXRpZXNJbkJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUuaW50ZXJzZWN0KCRnLlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3RYKCRnLlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW5ZQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3RZKCRnLlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LGUucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VudGl0aWVzfSxlfSgpO05pdC5FbnRpdHlTdG9yZT1HN2V9KTt2YXIgQ1h0PUgoRGl0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBXN2U9Q2l0KCksWTdlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3R5cGVvZiB3aW5kb3cuTWFwPT0iZnVuY3Rpb24iP3RoaXMuX2VzNk1hcD1uZXcgd2luZG93Lk1hcDp0aGlzLl9rZXlWYWx1ZVBhaXJzPVtdfXJldHVybiBlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxyKXtpZihXN2UuaXNOYU4odCkpdGhyb3cgbmV3IEVycm9yKCJOYU4gbWF5IG5vdCBiZSB1c2VkIGFzIGEga2V5IHRvIHRoZSBNYXAiKTtpZih0aGlzLl9lczZNYXAhPW51bGwpcmV0dXJuIHRoaXMuX2VzNk1hcC5zZXQodCxyKSx0aGlzO2Zvcih2YXIgbj0wO248dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7bisrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbbl0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlyc1tuXS52YWx1ZT1yLHRoaXM7cmV0dXJuIHRoaXMuX2tleVZhbHVlUGFpcnMucHVzaCh7a2V5OnQsdmFsdWU6cn0pLHRoaXN9LGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtpZih0aGlzLl9lczZNYXAhPW51bGwpcmV0dXJuIHRoaXMuX2VzNk1hcC5nZXQodCk7Zm9yKHZhciByPTA7cjx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtyKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tyXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzW3JdLnZhbHVlfSxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7aWYodGhpcy5fZXM2TWFwIT1udWxsKXJldHVybiB0aGlzLl9lczZNYXAuaGFzKHQpO2Zvcih2YXIgcj0wO3I8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7cisrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbcl0ua2V5PT09dClyZXR1cm4hMDtyZXR1cm4hMX0sZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0LHIpe3ZhciBuPXRoaXM7aWYodGhpcy5fZXM2TWFwIT1udWxsKXt2YXIgaT1mdW5jdGlvbihvLGEpe3JldHVybiB0LmNhbGwocixvLGEsbil9O3RoaXMuX2VzNk1hcC5mb3JFYWNoKGkscik7cmV0dXJufXRoaXMuX2tleVZhbHVlUGFpcnMuZm9yRWFjaChmdW5jdGlvbihvKXt0LmNhbGwocixvLnZhbHVlLG8ua2V5LG4pfSl9LGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtpZih0aGlzLl9lczZNYXAhPW51bGwpcmV0dXJuIHRoaXMuX2VzNk1hcC5kZWxldGUodCk7Zm9yKHZhciByPTA7cjx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtyKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1tyXS5rZXk9PT10KXJldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzLnNwbGljZShyLDEpLCEwO3JldHVybiExfSxlfSgpO0RpdC5NYXA9WTdlfSk7dmFyIEFYdD1IKE9pdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoT2l0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBqN2UoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspZVt0XT1hcmd1bWVudHNbdF07Zm9yKHZhciByPXt9LG49MCxpPWU7bjxpLmxlbmd0aDtuKyspZm9yKHZhciBvPWlbbl0sYT1PYmplY3Qua2V5cyhvKSxzPTAsbD1hO3M8bC5sZW5ndGg7cysrKXt2YXIgYz1sW3NdO3JbY109b1tjXX1yZXR1cm4gcn1PaXQuYXNzaWduPWo3ZX0pO3ZhciBMWHQ9SChURj0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoVEYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6aXQ9RmUoKSxQWHQ9Il9fUGxvdHRhYmxlX0NsaWVudFRyYW5zbGF0b3IiO2Z1bmN0aW9uIFg3ZShlKXt2YXIgdD1lLnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSxyPXRbUFh0XTtyZXR1cm4gcj09bnVsbCYmKHI9bmV3IElYdCh0KSx0W1BYdF09cikscn1URi5nZXRUcmFuc2xhdG9yPVg3ZTt2YXIgSVh0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt0aGlzLl9yb290RWxlbWVudD10fXJldHVybiBlLnByb3RvdHlwZS5jb21wdXRlUG9zaXRpb249ZnVuY3Rpb24odCxyKXt2YXIgbj17eDp0LHk6cn0saT16aXQuTWF0aC5nZXRDdW11bGF0aXZlVHJhbnNmb3JtKHRoaXMuX3Jvb3RFbGVtZW50KTtpZihpPT1udWxsKXJldHVybiBuO3ZhciBvPXppdC5NYXRoLmFwcGx5VHJhbnNmb3JtKGksbik7cmV0dXJuIG99LGUuaXNFdmVudEluc2lkZT1mdW5jdGlvbih0LHIpe3JldHVybiB6aXQuRE9NLmNvbnRhaW5zKHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLHIudGFyZ2V0KX0sZX0oKTtURi5UcmFuc2xhdG9yPUlYdH0pO3ZhciBGZT1IKFVvPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShVbywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEtnPShkZSgpLFV0KHBlKSksJDdlPWxYdCgpO1VvLkFycmF5PSQ3ZTt2YXIgSzdlPWhYdCgpO1VvLkNvbG9yPUs3ZTt2YXIgWjdlPVRpdCgpO1VvLkRPTT1aN2U7dmFyIEo3ZT1DaXQoKTtVby5NYXRoPUo3ZTt2YXIgUTdlPVBpdCgpO1VvLlJUcmVlPVE3ZTt2YXIgdHplPWJYdCgpO1VvLlN0YWNraW5nPXR6ZTt2YXIgZXplPUVGKCk7VW8uV2luZG93PWV6ZTtLZy5fX2V4cG9ydFN0YXIoTVh0KCksVW8pO0tnLl9fZXhwb3J0U3RhcihFWHQoKSxVbyk7S2cuX19leHBvcnRTdGFyKFlnKCksVW8pO0tnLl9fZXhwb3J0U3RhcihUWHQoKSxVbyk7S2cuX19leHBvcnRTdGFyKENYdCgpLFVvKTtLZy5fX2V4cG9ydFN0YXIoQVh0KCksVW8pO0tnLl9fZXhwb3J0U3RhcihraXQoKSxVbyk7S2cuX19leHBvcnRTdGFyKExYdCgpLFVvKX0pO3ZhciBCaXQ9SChqQT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoakEsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrWHQ9RmUoKSxGaXQ9Q0YoKSxyemU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtGaXQuZmx1c2goKX0sZX0oKTtqQS5JbW1lZGlhdGU9cnplO3ZhciBuemU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtrWHQuRE9NLnJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsKEZpdC5mbHVzaCl9LGV9KCk7akEuQW5pbWF0aW9uRnJhbWU9bnplO3ZhciBpemU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5fdGltZW91dE1zZWM9a1h0LkRPTS5TQ1JFRU5fUkVGUkVTSF9SQVRFX01JTExJU0VDT05EU31yZXR1cm4gZS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7c2V0VGltZW91dChGaXQuZmx1c2gsdGhpcy5fdGltZW91dE1zZWMpfSxlfSgpO2pBLlRpbWVvdXQ9aXplfSk7dmFyIENGPUgoT3U9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KE91LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZ1M9RmUoKSxvemU9UGYoKSxBRj1CaXQoKSwkQT1uZXcgZ1MuU2V0LEhpdD1uZXcgZ1MuU2V0LFBGPSExLFZpdD0hMTtPdS5Qb2xpY3k9b3plLm1ha2VFbnVtKFsiaW1tZWRpYXRlIiwiYW5pbWF0aW9uRnJhbWUiLCJ0aW1lb3V0Il0pO3ZhciBYQT1uZXcgQUYuQW5pbWF0aW9uRnJhbWU7ZnVuY3Rpb24gYXplKGUpe2lmKGU9PW51bGwpcmV0dXJuIFhBO3N3aXRjaChlKXtjYXNlIE91LlBvbGljeS5pbW1lZGlhdGU6WEE9bmV3IEFGLkltbWVkaWF0ZTticmVhaztjYXNlIE91LlBvbGljeS5hbmltYXRpb25GcmFtZTpYQT1uZXcgQUYuQW5pbWF0aW9uRnJhbWU7YnJlYWs7Y2FzZSBPdS5Qb2xpY3kudGltZW91dDpYQT1uZXcgQUYuVGltZW91dDticmVhaztkZWZhdWx0OmdTLldpbmRvdy53YXJuKCJVbnJlY29nbml6ZWQgcmVuZGVyUG9saWN5OiAiK2UpfX1PdS5yZW5kZXJQb2xpY3k9YXplO2Z1bmN0aW9uIHN6ZShlKXtWaXQmJmdTLldpbmRvdy53YXJuKCJSZWdpc3RlcmVkIHRvIHJlbmRlciB3aGlsZSBvdGhlciBjb21wb25lbnRzIGFyZSBmbHVzaGluZzogcmVxdWVzdCBtYXkgYmUgaWdub3JlZCIpLCRBLmFkZChlKSxOWHQoKX1PdS5yZWdpc3RlclRvUmVuZGVyPXN6ZTtmdW5jdGlvbiBSWHQoZSl7SGl0LmFkZChlKSwkQS5hZGQoZSksTlh0KCl9T3UucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXI9Ulh0O2Z1bmN0aW9uIGx6ZShlKXtSWHQoZSl9T3UucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXQ9bHplO2Z1bmN0aW9uIE5YdCgpe1BGfHwoUEY9ITAsWEEucmVuZGVyKCkpfWZ1bmN0aW9uIGN6ZSgpe2lmKFBGKXtIaXQuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wdXRlTGF5b3V0KCl9KSwkQS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbmRlcigpfSksVml0PSEwO3ZhciBlPW5ldyBnUy5TZXQ7JEEuZm9yRWFjaChmdW5jdGlvbih0KXt0cnl7dC5yZW5kZXJJbW1lZGlhdGVseSgpfWNhdGNoKHIpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgcn0sMCksZS5hZGQodCl9fSksSGl0PW5ldyBnUy5TZXQsJEE9ZSxQRj0hMSxWaXQ9ITF9fU91LmZsdXNoPWN6ZX0pO3ZhciBJYz1IKEtBPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShLQSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIERYdD0oRXIoKSxVdChNcikpLElGPUNGKCksX1M9RmUoKSx1emU9T2UoKSxPWHQ9WWcoKSx6WHQ9UGYoKTtLQS5YQWxpZ25tZW50PXpYdC5tYWtlRW51bShbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdKTtLQS5ZQWxpZ25tZW50PXpYdC5tYWtlRW51bShbInRvcCIsImNlbnRlciIsImJvdHRvbSJdKTt2YXIgaHplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX292ZXJmbG93SGlkZGVuPSExLHRoaXMuX29yaWdpbj17eDowLHk6MH0sdGhpcy5feEFsaWdubWVudD0ibGVmdCIsdGhpcy5feUFsaWdubWVudD0idG9wIix0aGlzLl9pc1NldHVwPSExLHRoaXMuX2lzQW5jaG9yZWQ9ITEsdGhpcy5fY3NzQ2xhc3Nlcz1uZXcgX1MuU2V0LHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkFuY2hvckNhbGxiYWNrcz1uZXcgX1MuQ2FsbGJhY2tTZXQsdGhpcy5fb25EZXRhY2hDYWxsYmFja3M9bmV3IF9TLkNhbGxiYWNrU2V0LHRoaXMuX2Nzc0NsYXNzZXMuYWRkKCJjb21wb25lbnQiKX1yZXR1cm4gZS5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKHQpe2lmKHQ9T1h0LmNvZXJjZUV4dGVybmFsRDModCksdGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiQ2FuJ3QgcmV1c2UgZGVzdHJveSgpLWVkIENvbXBvbmVudHMhIik7cmV0dXJuIHRoaXMuaXNSb290KCkmJih0aGlzLl9yb290RWxlbWVudD10LHRoaXMuX3Jvb3RFbGVtZW50LmNsYXNzZWQoInBsb3R0YWJsZSIsITApKSx0aGlzLl9lbGVtZW50IT1udWxsP3Qubm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQubm9kZSgpKToodGhpcy5fZWxlbWVudD10LmFwcGVuZCgiZGl2IiksdGhpcy5fc2V0dXAoKSksdGhpcy5faXNBbmNob3JlZD0hMCx0aGlzLl9vbkFuY2hvckNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLm9uQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0KHRoaXMpLHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZBbmNob3I9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2lzU2V0dXB8fCh0aGlzLl9jc3NDbGFzc2VzLmZvckVhY2goZnVuY3Rpb24ocil7dC5fZWxlbWVudC5jbGFzc2VkKHIsITApfSksdGhpcy5fY3NzQ2xhc3Nlcz1uZXcgX1MuU2V0LHRoaXMuX2JhY2tncm91bmRDb250YWluZXI9dGhpcy5fZWxlbWVudC5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoImJhY2tncm91bmQtY29udGFpbmVyIiwhMCksdGhpcy5fY29udGVudD10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiY29udGVudCIsITApLHRoaXMuX2ZvcmVncm91bmRDb250YWluZXI9dGhpcy5fZWxlbWVudC5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoImZvcmVncm91bmQtY29udGFpbmVyIiwhMCksdGhpcy5fb3ZlcmZsb3dIaWRkZW4/dGhpcy5fY29udGVudC5jbGFzc2VkKCJjb21wb25lbnQtb3ZlcmZsb3ctaGlkZGVuIiwhMCk6dGhpcy5fY29udGVudC5jbGFzc2VkKCJjb21wb25lbnQtb3ZlcmZsb3ctdmlzaWJsZSIsITApLHRoaXMuX2lzU2V0dXA9ITApfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LHIpe3JldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbih0LHIsbil7aWYodD09bnVsbHx8cj09bnVsbHx8bj09bnVsbCl7aWYodGhpcy5fZWxlbWVudD09bnVsbCl0aHJvdyBuZXcgRXJyb3IoImFuY2hvcigpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBjb21wdXRlTGF5b3V0KCkiKTtpZih0aGlzLl9yb290RWxlbWVudCE9bnVsbCl7dD17eDowLHk6MH07dmFyIGk9dGhpcy5fcm9vdEVsZW1lbnQubm9kZSgpO3I9X1MuRE9NLmVsZW1lbnRXaWR0aChpKSxuPV9TLkRPTS5lbGVtZW50SGVpZ2h0KGkpfWVsc2UgdGhyb3cgbmV3IEVycm9yKCJudWxsIGFyZ3VtZW50cyBjYW5ub3QgYmUgcGFzc2VkIHRvIGNvbXB1dGVMYXlvdXQoKSBvbiBhIG5vbi1yb290LCB1bmFuY2hvcmVkIG5vZGUiKX12YXIgbz10aGlzLl9zaXplRnJvbU9mZmVyKHIsbiksYT1vLmhlaWdodCxzPW8ud2lkdGgsbD1lLl94QWxpZ25Ub1Byb3BvcnRpb25bdGhpcy5feEFsaWdubWVudF0sYz1lLl95QWxpZ25Ub1Byb3BvcnRpb25bdGhpcy5feUFsaWdubWVudF0sdT10LngrKHItcykqbCxoPXQueSsobi1hKSpjO3JldHVybiB0aGlzLnNldEJvdW5kcyhzLGEsdSxoKSx0aGlzfSxlLnByb3RvdHlwZS5zZXRCb3VuZHM9ZnVuY3Rpb24odCxyLG4saSl7cmV0dXJuIG49PT12b2lkIDAmJihuPTApLGk9PT12b2lkIDAmJihpPTApLHRoaXMuX3dpZHRoPXQsdGhpcy5faGVpZ2h0PXIsdGhpcy5fb3JpZ2luPXt4Om4seTppfSx0aGlzLl9lbGVtZW50IT1udWxsJiZ0aGlzLl9lbGVtZW50LnN0eWxlcyh7bGVmdDpuKyJweCIsaGVpZ2h0OnIrInB4Iix0b3A6aSsicHgiLHdpZHRoOnQrInB4In0pLHRoaXMuX3Jlc2l6ZUhhbmRsZXIhPW51bGwmJnRoaXMuX3Jlc2l6ZUhhbmRsZXIoe3dpZHRoOnQsaGVpZ2h0OnJ9KSx0aGlzfSxlLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbih0LHIpe3ZhciBuPXRoaXMucmVxdWVzdGVkU3BhY2UodCxyKTtyZXR1cm57d2lkdGg6dGhpcy5maXhlZFdpZHRoKCk/TWF0aC5taW4odCxuLm1pbldpZHRoKTp0LGhlaWdodDp0aGlzLmZpeGVkSGVpZ2h0KCk/TWF0aC5taW4ocixuLm1pbkhlaWdodCk6cn19LGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiZ0aGlzLndpZHRoKCk+PTAmJnRoaXMuaGVpZ2h0KCk+PTAmJklGLnJlZ2lzdGVyVG9SZW5kZXIodGhpcyksdGhpc30sZS5wcm90b3R5cGUucmVuZGVyTG93UHJpb3JpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZW5kZXIoKX0sZS5wcm90b3R5cGUuX3NjaGVkdWxlQ29tcHV0ZUxheW91dD1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2lzU2V0dXAmJklGLnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyKHRoaXMpfSxlLnByb3RvdHlwZS5vblJlc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzaXplSGFuZGxlcj10LHRoaXN9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiYodGhpcy5pc1Jvb3QoKT90aGlzLl9zY2hlZHVsZUNvbXB1dGVMYXlvdXQoKTp0aGlzLnBhcmVudCgpLnJlZHJhdygpKSx0aGlzfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLnJlbmRlclRvPWZ1bmN0aW9uKHQpe2lmKHRoaXMuZGV0YWNoKCksdCE9bnVsbCl7dmFyIHI9dm9pZCAwO2lmKHR5cGVvZiB0PT0ic3RyaW5nInx8dXplLmlzRWxlbWVudCh0KT9yPURYdC5zZWxlY3QodCk6cj1PWHQuY29lcmNlRXh0ZXJuYWxEMyh0KSwhci5ub2RlKCl8fHIubm9kZSgpLm5vZGVOYW1lPT1udWxsKXRocm93IG5ldyBFcnJvcigiUGxvdHRhYmxlIHJlcXVpcmVzIGEgdmFsaWQgRWxlbWVudCB0byByZW5kZXJUbyIpO2lmKHIubm9kZSgpLm5vZGVOYW1lPT09InN2ZyIpdGhyb3cgbmV3IEVycm9yKCJQbG90dGFibGUgMy54IGFuZCBsYXRlciBjYW4gb25seSByZW5kZXJUbyBhbiBIVE1MIGNvbXBvbmVudDsgcGFzcyBhIGRpdiBpbnN0ZWFkISIpO3RoaXMuYW5jaG9yKHIpfWlmKHRoaXMuX2VsZW1lbnQ9PW51bGwpdGhyb3cgbmV3IEVycm9yKCJJZiBhIENvbXBvbmVudCBoYXMgbmV2ZXIgYmVlbiByZW5kZXJlZCBiZWZvcmUsIHRoZW4gcmVuZGVyVG8gbXVzdCBiZSBnaXZlbiBhIG5vZGUgdG8gcmVuZGVyIHRvLCBvciBhIGQzLlNlbGVjdGlvbiwgb3IgYSBzZWxlY3RvciBzdHJpbmciKTtyZXR1cm4gSUYucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXIodGhpcyksSUYuZmx1c2goKSx0aGlzfSxlLnByb3RvdHlwZS54QWxpZ25tZW50PWZ1bmN0aW9uKHQpe2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMuX3hBbGlnbm1lbnQ7aWYodD10LnRvTG93ZXJDYXNlKCksZS5feEFsaWduVG9Qcm9wb3J0aW9uW3RdPT1udWxsKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK3QpO3JldHVybiB0aGlzLl94QWxpZ25tZW50PXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS55QWxpZ25tZW50PWZ1bmN0aW9uKHQpe2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMuX3lBbGlnbm1lbnQ7aWYodD10LnRvTG93ZXJDYXNlKCksZS5feUFsaWduVG9Qcm9wb3J0aW9uW3RdPT1udWxsKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgYWxpZ25tZW50OiAiK3QpO3JldHVybiB0aGlzLl95QWxpZ25tZW50PXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5oYXNDbGFzcz1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD8hMTp0aGlzLl9lbGVtZW50PT1udWxsP3RoaXMuX2Nzc0NsYXNzZXMuaGFzKHQpOnRoaXMuX2VsZW1lbnQuY2xhc3NlZCh0KX0sZS5wcm90b3R5cGUuYWRkQ2xhc3M9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PW51bGw/dGhpczoodGhpcy5fZWxlbWVudD09bnVsbD90aGlzLl9jc3NDbGFzc2VzLmFkZCh0KTp0aGlzLl9lbGVtZW50LmNsYXNzZWQodCwhMCksdGhpcyl9LGUucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQpe3JldHVybiB0PT1udWxsP3RoaXM6KHRoaXMuX2VsZW1lbnQ9PW51bGw/dGhpcy5fY3NzQ2xhc3Nlcy5kZWxldGUodCk6dGhpcy5fZWxlbWVudC5jbGFzc2VkKHQsITEpLHRoaXMpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LGUucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudChudWxsKSx0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9lbGVtZW50LnJlbW92ZSgpLHRoaXMuX2lzQW5jaG9yZWQ9ITEsdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzKSx0aGlzfSxlLnByb3RvdHlwZS5vbkRldGFjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRldGFjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXtpZih0PT09dm9pZCAwKXJldHVybiB0aGlzLl9wYXJlbnQ7aWYodCE9PW51bGwmJiF0Lmhhcyh0aGlzKSl0aHJvdyBuZXcgRXJyb3IoIlBhc3NlZCBpbnZhbGlkIHBhcmVudCIpO3JldHVybiB0aGlzLl9wYXJlbnQ9dCx0aGlzfSxlLnByb3RvdHlwZS5ib3VuZHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9yaWdpbigpO3JldHVybnt0b3BMZWZ0OnQsYm90dG9tUmlnaHQ6e3g6dC54K3RoaXMud2lkdGgoKSx5OnQueSt0aGlzLmhlaWdodCgpfX19LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5kZXRhY2goKX0sZS5wcm90b3R5cGUud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd2lkdGh9LGUucHJvdG90eXBlLmhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWlnaHR9LGUucHJvdG90eXBlLm9yaWdpbj1mdW5jdGlvbigpe3JldHVybnt4OnRoaXMuX29yaWdpbi54LHk6dGhpcy5fb3JpZ2luLnl9fSxlLnByb3RvdHlwZS5vcmlnaW5Ub1Jvb3Q9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5vcmlnaW4oKSxyPXRoaXMucGFyZW50KCk7ciE9bnVsbDspe3ZhciBuPXIub3JpZ2luKCk7dC54Kz1uLngsdC55Kz1uLnkscj1yLnBhcmVudCgpfXJldHVybiB0fSxlLnByb3RvdHlwZS5yb290PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXM7IXQuaXNSb290KCk7KXQ9dC5wYXJlbnQoKTtyZXR1cm4gdH0sZS5wcm90b3R5cGUuaXNSb290PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCk9PW51bGx9LGUucHJvdG90eXBlLmZvcmVncm91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9yZWdyb3VuZENvbnRhaW5lcn0sZS5wcm90b3R5cGUuY29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50fSxlLnByb3RvdHlwZS5lbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsZW1lbnR9LGUucHJvdG90eXBlLnJvb3RFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdCgpLl9yb290RWxlbWVudH0sZS5wcm90b3R5cGUuYmFja2dyb3VuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29udGFpbmVyfSxlLl94QWxpZ25Ub1Byb3BvcnRpb249e2xlZnQ6MCxjZW50ZXI6LjUscmlnaHQ6MX0sZS5feUFsaWduVG9Qcm9wb3J0aW9uPXt0b3A6MCxjZW50ZXI6LjUsYm90dG9tOjF9LGV9KCk7S0EuQ29tcG9uZW50PWh6ZX0pO3ZhciBGdT1IKHp1PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6dSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHlTPShFcigpLFV0KE1yKSksZnplPSExO2Z1bmN0aW9uIHB6ZShlLHQscil7ZT09PXZvaWQgMCYmKGU9MiksdD09PXZvaWQgMCYmKHQ9IiQiKSxyPT09dm9pZCAwJiYocj0hMCk7dmFyIG49VWl0KGUpO3JldHVybiBmdW5jdGlvbihpKXt2YXIgbz1uKE1hdGguYWJzKGkpKTtyZXR1cm4gbyE9PSIiJiYocj9vPXQrbzpvKz10LGk8MCYmKG89Ii0iK28pKSxvfX16dS5jdXJyZW5jeT1wemU7ZnVuY3Rpb24gVWl0KGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0zKSxMRihlKSxmdW5jdGlvbih0KXtyZXR1cm4gdC50b0ZpeGVkKGUpfX16dS5maXhlZD1VaXQ7ZnVuY3Rpb24gZHplKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0zKSxMRihlKSxmdW5jdGlvbih0KXtpZih0eXBlb2YgdD09Im51bWJlciIpe3ZhciByPU1hdGgucG93KDEwLGUpO3JldHVybiBTdHJpbmcoTWF0aC5yb3VuZCh0KnIpL3IpfWVsc2UgcmV0dXJuIFN0cmluZyh0KX19enUuZ2VuZXJhbD1kemU7ZnVuY3Rpb24gbXplKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZSl9fXp1LmlkZW50aXR5PW16ZTtmdW5jdGlvbiBnemUoZSl7ZT09PXZvaWQgMCYmKGU9MCk7dmFyIHQ9VWl0KGUpO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1yKjEwMCxpPXIudG9TdHJpbmcoKSxvPU1hdGgucG93KDEwLGkubGVuZ3RoLShpLmluZGV4T2YoIi4iKSsxKSk7cmV0dXJuIG49cGFyc2VJbnQoKG4qbykudG9TdHJpbmcoKSwxMCkvbyx0KG4pKyIlIn19enUucGVyY2VudGFnZT1nemU7ZnVuY3Rpb24gX3plKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0zKSxMRihlKSxmdW5jdGlvbih0KXtyZXR1cm4geVMuZm9ybWF0KCIuIitlKyJzIikodCl9fXp1LnNpU3VmZml4PV96ZTtmdW5jdGlvbiB5emUoZSl7ZT09PXZvaWQgMCYmKGU9MyksTEYoZSk7dmFyIHQ9IktNQlRRIixyPXlTLmZvcm1hdCgiLiIrZSsiZSIpLG49eVMuZm9ybWF0KCIuIitlKyJmIiksaT1NYXRoLnBvdygxMCwzKih0Lmxlbmd0aCsxKSksbz1NYXRoLnBvdygxMCwtZSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBzPU1hdGguYWJzKGEpO2lmKChzPG98fHM+PWkpJiZzIT09MClyZXR1cm4gcihhKTtmb3IodmFyIGw9LTE7cz49TWF0aC5wb3coMWUzLGwrMikmJmw8dC5sZW5ndGgtMTspbCsrO3ZhciBjPSIiO3JldHVybiBsPT09LTE/Yz1uKGEpOmM9bihhL01hdGgucG93KDFlMyxsKzEpKSt0W2xdLChhPjAmJmMuc3Vic3RyKDAsNCk9PT0iMTAwMCJ8fGE8MCYmYy5zdWJzdHIoMCw1KT09PSItMTAwMCIpJiYobDx0Lmxlbmd0aC0xPyhsKyssYz1uKGEvTWF0aC5wb3coMWUzLGwrMSkpK3RbbF0pOmM9cihhKSksY319enUuc2hvcnRTY2FsZT15emU7ZnVuY3Rpb24gdnplKCl7dmFyIGU9W3tzcGVjaWZpZXI6Ii4lTCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbGxpc2Vjb25kcygpIT09MH19LHtzcGVjaWZpZXI6IjolUyIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFNlY29uZHMoKSE9PTB9fSx7c3BlY2lmaWVyOiIlSTolTSIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKSE9PTB9fSx7c3BlY2lmaWVyOiIlSSAlcCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCkhPT0wfX0se3NwZWNpZmllcjoiJWEgJWQiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXkoKSE9PTAmJnQuZ2V0RGF0ZSgpIT09MX19LHtzcGVjaWZpZXI6IiViICVkIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpIT09MX19LHtzcGVjaWZpZXI6IiViIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKSE9PTB9fV07cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPWUuZmlsdGVyKGZ1bmN0aW9uKGkpe3JldHVybiBpLnByZWRpY2F0ZSh0KX0pLG49ci5sZW5ndGg+MD9yWzBdLnNwZWNpZmllcjoiJVkiO3JldHVybiB5Uy50aW1lRm9ybWF0KG4pKHQpfX16dS5tdWx0aVRpbWU9dnplO2Z1bmN0aW9uIHh6ZShlLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD1memUpLHQ/eVMudXRjRm9ybWF0KGUpOnlTLnRpbWVGb3JtYXQoZSl9enUudGltZT14emU7ZnVuY3Rpb24gTEYoZSl7aWYoZTwwfHxlPjIwKXRocm93IG5ldyBSYW5nZUVycm9yKCJGb3JtYXR0ZXIgcHJlY2lzaW9uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMCIpO2lmKGUhPT1NYXRoLmZsb29yKGUpKXRocm93IG5ldyBSYW5nZUVycm9yKCJGb3JtYXR0ZXIgcHJlY2lzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpfX0pO3ZhciBaQT1IKGtGPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShrRiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGJ6ZT0oZGUoKSxVdChwZSkpLHlkPShFcigpLFV0KE1yKSkscWl0PWdsKCksd3plPUljKCksRlh0PUZ1KCksdlM9RmUoKSxTemU9UGYoKTtrRi5BeGlzT3JpZW50YXRpb249U3plLm1ha2VFbnVtKFsiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwidG9wIl0pO3ZhciBNemU9ZnVuY3Rpb24oZSl7YnplLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocixuKXt2YXIgaT1lLmNhbGwodGhpcyl8fHRoaXM7aWYoaS5fZW5kVGlja0xlbmd0aD01LGkuX2lubmVyVGlja0xlbmd0aD01LGkuX3RpY2tMYWJlbFBhZGRpbmc9MTAsaS5fbWFyZ2luPTE1LGkuX3Nob3dFbmRUaWNrTGFiZWxzPSExLGkuX2Fubm90YXRpb25zRW5hYmxlZD0hMSxpLl9hbm5vdGF0aW9uVGllckNvdW50PTEscj09bnVsbHx8bj09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIkF4aXMgcmVxdWlyZXMgYSBzY2FsZSBhbmQgb3JpZW50YXRpb24iKTtyZXR1cm4gaS5fc2NhbGU9cixpLm9yaWVudGF0aW9uKG4pLGkuX3NldERlZmF1bHRBbGlnbm1lbnQoKSxpLmFkZENsYXNzKCJheGlzIiksaS5pc0hvcml6b250YWwoKT9pLmFkZENsYXNzKCJ4LWF4aXMiKTppLmFkZENsYXNzKCJ5LWF4aXMiKSxpLmZvcm1hdHRlcihGWHQuaWRlbnRpdHkoKSksaS5fcmVzY2FsZUNhbGxiYWNrPWZ1bmN0aW9uKG8pe3JldHVybiBpLl9yZXNjYWxlKCl9LGkuX3NjYWxlLm9uVXBkYXRlKGkuX3Jlc2NhbGVDYWxsYmFjayksaS5fYW5ub3RhdGVkVGlja3M9W10saS5fYW5ub3RhdGlvbkZvcm1hdHRlcj1GWHQuaWRlbnRpdHkoKSxpfXJldHVybiB0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3NjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZXNjYWxlQ2FsbGJhY2spfSx0LnByb3RvdHlwZS50aWNrTGFiZWxEYXRhT25FbGVtZW50PWZ1bmN0aW9uKHIpe2lmKHIhPW51bGwpe2Zvcih2YXIgbjtyIT1udWxsJiZyLmNsYXNzTGlzdCYmbj09PXZvaWQgMDspci5jbGFzc0xpc3QuY29udGFpbnModC5USUNLX0xBQkVMX0NMQVNTKT9uPXI6cj1yLnBhcmVudE5vZGU7cmV0dXJuIHI9PT12b2lkIDA/dm9pZCAwOnlkLnNlbGVjdChyKS5kYXR1bSgpfX0sdC5wcm90b3R5cGUuX2NvbXB1dGVXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKX0sdC5wcm90b3R5cGUuX2NvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCl9LHQucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHIsbil7dmFyIGk9MCxvPTA7aWYodGhpcy5pc0hvcml6b250YWwoKSl7aWYobz10aGlzLl9jb21wdXRlSGVpZ2h0KCkrdGhpcy5fbWFyZ2luLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCkpe3ZhciBhPXRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqdC5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HO28rPWEqdGhpcy5hbm5vdGF0aW9uVGllckNvdW50KCl9fWVsc2UgaWYoaT10aGlzLl9jb21wdXRlV2lkdGgoKSt0aGlzLl9tYXJnaW4sdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKSl7dmFyIGE9dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMip0Ll9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkc7aSs9YSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKX1yZXR1cm57bWluV2lkdGg6aSxtaW5IZWlnaHQ6b319LHQucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCl9LHQucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0hvcml6b250YWwoKX0sdC5wcm90b3R5cGUuX3Jlc2NhbGU9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcigpfSx0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMscixuLGkpLHRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5fc2NhbGUucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk6dGhpcy5fc2NhbGUucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LHQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcy5yZXF1ZXN0ZWRTcGFjZShyLG4pO3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbCgpP3t3aWR0aDpyLGhlaWdodDppLm1pbkhlaWdodH06e2hlaWdodDpuLHdpZHRoOmkubWluV2lkdGh9fSx0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90aWNrTWFya0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKHQuVElDS19NQVJLX0NMQVNTKyItY29udGFpbmVyIiwhMCksdGhpcy5fdGlja0xhYmVsQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQodC5USUNLX0xBQkVMX0NMQVNTKyItY29udGFpbmVyIiwhMCksdGhpcy5fYmFzZWxpbmU9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZCgiYmFzZWxpbmUiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tY29udGFpbmVyIiwhMCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLWxpbmUtY29udGFpbmVyIiwhMCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLWNpcmNsZS1jb250YWluZXIiLCEwKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tcmVjdC1jb250YWluZXIiLCEwKTt2YXIgcj10aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tbGFiZWwtY29udGFpbmVyIiwhMCksbj1uZXcgcWl0LlN2Z0NvbnRleHQoci5ub2RlKCkpO3RoaXMuX2Fubm90YXRpb25NZWFzdXJlcj1uZXcgcWl0LkNhY2hlTWVhc3VyZXIobiksdGhpcy5fYW5ub3RhdGlvbldyaXRlcj1uZXcgcWl0LldyaXRlcih0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIsbil9LHQucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLG49dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIit0LlRJQ0tfTUFSS19DTEFTUykuZGF0YShyKSxpPW4uZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKHQuVElDS19NQVJLX0NMQVNTLCEwKS5tZXJnZShuKTtyZXR1cm4gaS5hdHRycyh0aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKSkseWQuc2VsZWN0KGkubm9kZXMoKVswXSkuY2xhc3NlZCh0LkVORF9USUNLX01BUktfQ0xBU1MsITApLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCghMCkpLHlkLnNlbGVjdChpLm5vZGVzKClbci5sZW5ndGgtMV0pLmNsYXNzZWQodC5FTkRfVElDS19NQVJLX0NMQVNTLCEwKS5hdHRycyh0aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goITApKSxuLmV4aXQoKS5yZW1vdmUoKSx0aGlzLl9iYXNlbGluZS5hdHRycyh0aGlzLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2goKSksdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpLHRoaXN9LHQucHJvdG90eXBlLmFubm90YXRlZFRpY2tzPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2Fubm90YXRlZFRpY2tzOih0aGlzLl9hbm5vdGF0ZWRUaWNrcz1yLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLmFubm90YXRpb25Gb3JtYXR0ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fYW5ub3RhdGlvbkZvcm1hdHRlcjoodGhpcy5fYW5ub3RhdGlvbkZvcm1hdHRlcj1yLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLmFubm90YXRpb25zRW5hYmxlZD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9hbm5vdGF0aW9uc0VuYWJsZWQ6KHRoaXMuX2Fubm90YXRpb25zRW5hYmxlZD1yLHRoaXMucmVkcmF3KCksdGhpcyl9LHQucHJvdG90eXBlLmFubm90YXRpb25UaWVyQ291bnQ9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fYW5ub3RhdGlvblRpZXJDb3VudDtpZihyPDApdGhyb3cgbmV3IEVycm9yKCJhbm5vdGF0aW9uVGllckNvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9hbm5vdGF0aW9uVGllckNvdW50PXIsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5fZHJhd0Fubm90YXRpb25zPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPXQuX0FOTk9UQVRJT05fTEFCRUxfUEFERElORyxpPW5ldyB2Uy5NYXAsbz10aGlzLl9hbm5vdGF0ZWRUaWNrc1RvUmVuZGVyKCk7by5mb3JFYWNoKGZ1bmN0aW9uKFApe3ZhciBrPXIuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKHIuYW5ub3RhdGlvbkZvcm1hdHRlcigpKFApKSxPPXt3aWR0aDprLndpZHRoKzIqbixoZWlnaHQ6ay5oZWlnaHQrMipufTtpLnNldChQLE8pfSk7dmFyIGE9dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMipuLHM9dGhpcy5fYW5ub3RhdGlvblRvVGllcihpKSxsPW5ldyB2Uy5TZXQsYz10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLHU9dGhpcy5fY29yZVNpemUoKSxoPU1hdGgubWluKHRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpLE1hdGguZmxvb3IoKGMtdSkvYSkpO3MuZm9yRWFjaChmdW5jdGlvbihQLGspeyhQPT09LTF8fFA+PWgpJiZsLmFkZChrKX0pO3ZhciBmPWZ1bmN0aW9uKFAsayxPKXt2YXIgRD1QLnNlbGVjdEFsbCgiLiIrTykuZGF0YShvKSxCPUQuZW50ZXIoKS5hcHBlbmQoaykuY2xhc3NlZChPLCEwKS5tZXJnZShEKTtyZXR1cm4gRC5leGl0KCkucmVtb3ZlKCksQn0scD1mdW5jdGlvbihQKXtzd2l0Y2goci5vcmllbnRhdGlvbigpKXtjYXNlImJvdHRvbSI6Y2FzZSJyaWdodCI6cmV0dXJuIHMuZ2V0KFApKmErdTtjYXNlInRvcCI6Y2FzZSJsZWZ0IjpyZXR1cm4gYy11LXMuZ2V0KFApKmF9fSxkPWZ1bmN0aW9uKFApe3JldHVybiByLl9zY2FsZS5zY2FsZShQKX0sZz1mdW5jdGlvbihQKXtyZXR1cm4gbC5oYXMoUCk/ImhpZGRlbiI6InZpc2libGUifSxfO3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpfPTA7YnJlYWs7Y2FzZSJ0b3AiOl89dGhpcy5oZWlnaHQoKTticmVhaztjYXNlImxlZnQiOl89dGhpcy53aWR0aCgpO2JyZWFrfXZhciB5PXRoaXMuaXNIb3Jpem9udGFsKCk7Zih0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdCgiLmFubm90YXRpb24tbGluZS1jb250YWluZXIiKSwibGluZSIsdC5BTk5PVEFUSU9OX0xJTkVfQ0xBU1MpLmF0dHJzKHt4MTp5P2Q6Xyx4Mjp5P2Q6cCx5MTp5P186ZCx5Mjp5P3A6ZCx2aXNpYmlsaXR5Omd9KSxmKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1jaXJjbGUtY29udGFpbmVyIiksImNpcmNsZSIsdC5BTk5PVEFUSU9OX0NJUkNMRV9DTEFTUykuYXR0cnMoe2N4Onk/ZDpfLGN5Onk/XzpkLHI6M30pO3ZhciB4PWZ1bmN0aW9uKFApe3N3aXRjaChyLm9yaWVudGF0aW9uKCkpe2Nhc2UiYm90dG9tIjpjYXNlInJpZ2h0IjpyZXR1cm4gcChQKTtjYXNlInRvcCI6Y2FzZSJsZWZ0IjpyZXR1cm4gcChQKS1pLmdldChQKS5oZWlnaHR9fTtmKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIpLCJyZWN0Iix0LkFOTk9UQVRJT05fUkVDVF9DTEFTUykuYXR0cnMoe3g6eT9kOngseTp5P3g6ZCx3aWR0aDp5P2Z1bmN0aW9uKFApe3JldHVybiBpLmdldChQKS53aWR0aH06ZnVuY3Rpb24oUCl7cmV0dXJuIGkuZ2V0KFApLmhlaWdodH0saGVpZ2h0Onk/ZnVuY3Rpb24oUCl7cmV0dXJuIGkuZ2V0KFApLmhlaWdodH06ZnVuY3Rpb24oUCl7cmV0dXJuIGkuZ2V0KFApLndpZHRofSx2aXNpYmlsaXR5Omd9KTt2YXIgYj10aGlzLl9hbm5vdGF0aW9uV3JpdGVyLFM9dGhpcy5hbm5vdGF0aW9uRm9ybWF0dGVyKCksQz1mKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiKSwiZyIsdC5BTk5PVEFUSU9OX0xBQkVMX0NMQVNTKTtDLnNlbGVjdEFsbCgiLnRleHQtY29udGFpbmVyIikucmVtb3ZlKCksQy5hdHRycyh7dHJhbnNmb3JtOmZ1bmN0aW9uKFApe3ZhciBrPXk/ZChQKTp4KFApLE89eT94KFApOmQoUCk7cmV0dXJuInRyYW5zbGF0ZSgiK2srIiwiK08rIikifSx2aXNpYmlsaXR5Omd9KS5lYWNoKGZ1bmN0aW9uKFApe2Iud3JpdGUoUyhQKSx5P2kuZ2V0KFApLndpZHRoOmkuZ2V0KFApLmhlaWdodCx5P2kuZ2V0KFApLmhlaWdodDppLmdldChQKS53aWR0aCx7eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIix0ZXh0Um90YXRpb246eT8wOjkwfSx5ZC5zZWxlY3QodGhpcykubm9kZSgpKX0pfSx0LnByb3RvdHlwZS5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcj1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj10aGlzLl9zY2FsZS5yYW5nZSgpO3JldHVybiB2Uy5BcnJheS51bmlxKHRoaXMuYW5ub3RhdGVkVGlja3MoKS5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIGk9PW51bGw/ITE6dlMuTWF0aC5pblJhbmdlKHIuX3NjYWxlLnNjYWxlKGkpLG5bMF0sblsxXSl9KSl9LHQucHJvdG90eXBlLl9jb3JlU2l6ZT1mdW5jdGlvbigpe3ZhciByPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCksbj10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX2NvbXB1dGVIZWlnaHQoKTp0aGlzLl9jb21wdXRlV2lkdGgoKTtyZXR1cm4gTWF0aC5taW4obixyKX0sdC5wcm90b3R5cGUuX2Fubm90YXRpb25UaWVySGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0KzIqdC5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HfSx0LnByb3RvdHlwZS5fYW5ub3RhdGlvblRvVGllcj1mdW5jdGlvbihyKXt2YXIgbj10aGlzLGk9W1tdXSxvPW5ldyB2Uy5NYXAsYT10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpO3JldHVybiB0aGlzLl9hbm5vdGF0ZWRUaWNrc1RvUmVuZGVyKCkuZm9yRWFjaChmdW5jdGlvbihzKXt2YXIgbD1uLl9zY2FsZS5zY2FsZShzKSxjPXIuZ2V0KHMpLndpZHRoO2lmKGw8MHx8bCtjPmEpe28uc2V0KHMsLTEpO3JldHVybn1mb3IodmFyIHU9ZnVuY3Rpb24oZil7cmV0dXJuIGlbZl0uc29tZShmdW5jdGlvbihwKXt2YXIgZD1uLl9zY2FsZS5zY2FsZShwKSxnPXIuZ2V0KHApLndpZHRoO3JldHVybiBsK2M+PWQmJmw8PWQrZ30pfSxoPTA7dShoKTspaCsrLGkubGVuZ3RoPT09aCYmaS5wdXNoKFtdKTtpW2hdLnB1c2gocyksby5zZXQocyxoKX0pLG99LHQucHJvdG90eXBlLl9yZW1vdmVBbm5vdGF0aW9ucz1mdW5jdGlvbigpe3RoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1saW5lIikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWNpcmNsZSIpLnJlbW92ZSgpLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0QWxsKCIuYW5ub3RhdGlvbi1yZWN0IikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWxhYmVsIikucmVtb3ZlKCl9LHQucHJvdG90eXBlLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2g9ZnVuY3Rpb24oKXt2YXIgcj17eDE6MCx5MTowLHgyOjAseTI6MH07c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6ci54Mj10aGlzLndpZHRoKCk7YnJlYWs7Y2FzZSJ0b3AiOnIueDI9dGhpcy53aWR0aCgpLHIueTE9dGhpcy5oZWlnaHQoKSxyLnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJsZWZ0IjpyLngxPXRoaXMud2lkdGgoKSxyLngyPXRoaXMud2lkdGgoKSxyLnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSJyaWdodCI6ci55Mj10aGlzLmhlaWdodCgpO2JyZWFrfXJldHVybiByfSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7cj09PXZvaWQgMCYmKHI9ITEpO3ZhciBpPXt4MTowLHkxOjAseDI6MCx5MjowfSxvPWZ1bmN0aW9uKHMpe3JldHVybiBuLl9zY2FsZS5zY2FsZShzKX07dGhpcy5pc0hvcml6b250YWwoKT8oaS54MT1vLGkueDI9byk6KGkueTE9byxpLnkyPW8pO3ZhciBhPXI/dGhpcy5fZW5kVGlja0xlbmd0aDp0aGlzLl9pbm5lclRpY2tMZW5ndGg7c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlImJvdHRvbSI6aS55Mj1hO2JyZWFrO2Nhc2UidG9wIjppLnkxPXRoaXMuaGVpZ2h0KCksaS55Mj10aGlzLmhlaWdodCgpLWE7YnJlYWs7Y2FzZSJsZWZ0IjppLngxPXRoaXMud2lkdGgoKSxpLngyPXRoaXMud2lkdGgoKS1hO2JyZWFrO2Nhc2UicmlnaHQiOmkueDI9YTticmVha31yZXR1cm4gaX0sdC5wcm90b3R5cGUuX3NldERlZmF1bHRBbGlnbm1lbnQ9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjp0aGlzLnlBbGlnbm1lbnQoInRvcCIpO2JyZWFrO2Nhc2UidG9wIjp0aGlzLnlBbGlnbm1lbnQoImJvdHRvbSIpO2JyZWFrO2Nhc2UibGVmdCI6dGhpcy54QWxpZ25tZW50KCJyaWdodCIpO2JyZWFrO2Nhc2UicmlnaHQiOnRoaXMueEFsaWdubWVudCgibGVmdCIpO2JyZWFrfX0sdC5wcm90b3R5cGUuaXNIb3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yaWVudGF0aW9uPT09InRvcCJ8fHRoaXMuX29yaWVudGF0aW9uPT09ImJvdHRvbSJ9LHQucHJvdG90eXBlLmdldFNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NjYWxlfSx0LnByb3RvdHlwZS5mb3JtYXR0ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fZm9ybWF0dGVyOih0aGlzLl9mb3JtYXR0ZXI9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5pbm5lclRpY2tMZW5ndGg9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5faW5uZXJUaWNrTGVuZ3RoO2lmKHI8MCl0aHJvdyBuZXcgRXJyb3IoImlubmVyIHRpY2sgbGVuZ3RoIG11c3QgYmUgcG9zaXRpdmUiKTtyZXR1cm4gdGhpcy5faW5uZXJUaWNrTGVuZ3RoPXIsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5lbmRUaWNrTGVuZ3RoPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX2VuZFRpY2tMZW5ndGg7aWYocjwwKXRocm93IG5ldyBFcnJvcigiZW5kIHRpY2sgbGVuZ3RoIG11c3QgYmUgcG9zaXRpdmUiKTtyZXR1cm4gdGhpcy5fZW5kVGlja0xlbmd0aD1yLHRoaXMucmVkcmF3KCksdGhpc30sdC5wcm90b3R5cGUuX21heExhYmVsVGlja0xlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNob3dFbmRUaWNrTGFiZWxzKCk/TWF0aC5tYXgodGhpcy5pbm5lclRpY2tMZW5ndGgoKSx0aGlzLmVuZFRpY2tMZW5ndGgoKSk6dGhpcy5pbm5lclRpY2tMZW5ndGgoKX0sdC5wcm90b3R5cGUudGlja0xhYmVsUGFkZGluZz1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl90aWNrTGFiZWxQYWRkaW5nO2lmKHI8MCl0aHJvdyBuZXcgRXJyb3IoInRpY2sgbGFiZWwgcGFkZGluZyBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBhZGRpbmc9cix0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLm1hcmdpbj1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl9tYXJnaW47aWYocjwwKXRocm93IG5ldyBFcnJvcigibWFyZ2luIHNpemUgbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl9tYXJnaW49cix0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX29yaWVudGF0aW9uO3ZhciBuPXIudG9Mb3dlckNhc2UoKTtpZihuIT09InRvcCImJm4hPT0iYm90dG9tIiYmbiE9PSJsZWZ0IiYmbiE9PSJyaWdodCIpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBvcmllbnRhdGlvbiIpO3JldHVybiB0aGlzLl9vcmllbnRhdGlvbj1uLHRoaXMucmVkcmF3KCksdGhpc30sdC5wcm90b3R5cGUuc2hvd0VuZFRpY2tMYWJlbHM9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fc2hvd0VuZFRpY2tMYWJlbHM6KHRoaXMuX3Nob3dFbmRUaWNrTGFiZWxzPXIsdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUuX3Nob3dBbGxUaWNrTWFya3M9ZnVuY3Rpb24oKXt0aGlzLl90aWNrTWFya0NvbnRhaW5lci5zZWxlY3RBbGwoIi4iK3QuVElDS19NQVJLX0NMQVNTKS5lYWNoKGZ1bmN0aW9uKCl7eWQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpfSl9LHQucHJvdG90eXBlLl9zaG93QWxsVGlja0xhYmVscz1mdW5jdGlvbigpe3RoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK3QuVElDS19MQUJFTF9DTEFTUykuZWFjaChmdW5jdGlvbigpe3lkLnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKX0pfSx0LnByb3RvdHlwZS5faGlkZU92ZXJmbG93aW5nVGlja0xhYmVscz1mdW5jdGlvbigpe3ZhciByPXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK3QuVElDS19MQUJFTF9DTEFTUyk7bi5lbXB0eSgpfHxuLmVhY2goZnVuY3Rpb24oaSxvKXt2Uy5ET00uY2xpZW50UmVjdEluc2lkZSh0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHIpfHx5ZC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pfSx0LnByb3RvdHlwZS5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbD1mdW5jdGlvbigpe3ZhciByPXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrdC5USUNLX01BUktfQ0xBU1MpLG49dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrdC5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoZnVuY3Rpb24obyxhKXt2YXIgcz15ZC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4gcz09PSJpbmhlcml0Inx8cz09PSJ2aXNpYmxlIn0pLGk9bi5kYXRhKCk7ci5lYWNoKGZ1bmN0aW9uKG8sYSl7aS5pbmRleE9mKG8pPT09LTEmJnlkLnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSl9LHQucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe2UucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5yZXNldCgpfSx0LkVORF9USUNLX01BUktfQ0xBU1M9ImVuZC10aWNrLW1hcmsiLHQuVElDS19NQVJLX0NMQVNTPSJ0aWNrLW1hcmsiLHQuVElDS19MQUJFTF9DTEFTUz0idGljay1sYWJlbCIsdC5BTk5PVEFUSU9OX0xJTkVfQ0xBU1M9ImFubm90YXRpb24tbGluZSIsdC5BTk5PVEFUSU9OX1JFQ1RfQ0xBU1M9ImFubm90YXRpb24tcmVjdCIsdC5BTk5PVEFUSU9OX0NJUkNMRV9DTEFTUz0iYW5ub3RhdGlvbi1jaXJjbGUiLHQuQU5OT1RBVElPTl9MQUJFTF9DTEFTUz0iYW5ub3RhdGlvbi1sYWJlbCIsdC5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HPTQsdH0od3plLkNvbXBvbmVudCk7a0YuQXhpcz1NemV9KTt2YXIgSFh0PUgoWWl0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShZaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBFemU9KGRlKCksVXQocGUpKSxHaXQ9KEVyKCksVXQoTXIpKSxSRj1nbCgpLFR6ZT1JYygpLEJYdD1GZSgpLFdpdD1aQSgpLEN6ZT1mdW5jdGlvbihlKXtFemUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdChyLG4pe249PT12b2lkIDAmJihuPSJib3R0b20iKTt2YXIgaT1lLmNhbGwodGhpcyxyLG4pfHx0aGlzO3JldHVybiBpLl90aWNrTGFiZWxBbmdsZT0wLGkuX3RpY2tMYWJlbFNoZWFyQW5nbGU9MCxpLmFkZENsYXNzKCJjYXRlZ29yeS1heGlzIiksaX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJfd3JhcHBlciIse2dldDpmdW5jdGlvbigpe3ZhciByPW5ldyBSRi5XcmFwcGVyO3JldHVybiB0aGlzLl90aWNrTGFiZWxNYXhMaW5lcyE9bnVsbCYmci5tYXhMaW5lcyh0aGlzLl90aWNrTGFiZWxNYXhMaW5lcykscn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIl93cml0ZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJGLldyaXRlcih0aGlzLl9tZWFzdXJlcix0aGlzLl90eXBlc2V0dGVyQ29udGV4dCx0aGlzLl93cmFwcGVyKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90eXBlc2V0dGVyQ29udGV4dD1uZXcgUkYuU3ZnQ29udGV4dCh0aGlzLl90aWNrTGFiZWxDb250YWluZXIubm9kZSgpKSx0aGlzLl9tZWFzdXJlcj1uZXcgUkYuQ2FjaGVNZWFzdXJlcih0aGlzLl90eXBlc2V0dGVyQ29udGV4dCl9LHQucHJvdG90eXBlLl9yZXNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVkcmF3KCl9LHQucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcy5pc0hvcml6b250YWwoKT8wOnRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkrdGhpcy5tYXJnaW4oKSxvPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSt0aGlzLm1hcmdpbigpOjA7aWYodGhpcy5fc2NhbGUuZG9tYWluKCkubGVuZ3RoPT09MClyZXR1cm57bWluV2lkdGg6MCxtaW5IZWlnaHQ6MH07aWYodGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKSl7dmFyIGE9dGhpcy5fYW5ub3RhdGlvblRpZXJIZWlnaHQoKSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKTt0aGlzLmlzSG9yaXpvbnRhbCgpP28rPWE6aSs9YX12YXIgcz10aGlzLl9tZWFzdXJlVGlja0xhYmVscyhyLG4pO3JldHVybnttaW5XaWR0aDpzLnVzZWRXaWR0aCtpLG1pbkhlaWdodDpzLnVzZWRIZWlnaHQrb319LHQucHJvdG90eXBlLl9jb3JlU2l6ZT1mdW5jdGlvbigpe3ZhciByPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLndpZHRoKCksbj10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMucmVxdWVzdGVkU3BhY2UodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkpLm1pbkhlaWdodDp0aGlzLnJlcXVlc3RlZFNwYWNlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKS5taW5XaWR0aCxpPXRoaXMubWFyZ2luKCkrdGhpcy5fYW5ub3RhdGlvblRpZXJIZWlnaHQoKSxvPW4taTtyZXR1cm4gTWF0aC5taW4obyxyKX0sdC5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXREb3duc2FtcGxlSW5mbygpLmRvbWFpbn0sdC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24ocixuKXtyZXR1cm4gVHplLkNvbXBvbmVudC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLHIsbil9LHQucHJvdG90eXBlLmdldERvd25zYW1wbGVJbmZvPWZ1bmN0aW9uKHIsbil7cj09PXZvaWQgMCYmKHI9dGhpcy5fc2NhbGUpLG49PT12b2lkIDAmJihuPXIuaW52ZXJ0UmFuZ2UoKSk7dmFyIGk9dGhpcy5fdGlja0xhYmVsQW5nbGU9PT0wPzE6MS9NYXRoLmNvcyh0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlLzE4MCpNYXRoLlBJKSxvPXQuX01JTklNVU1fV0lEVEhfUEVSX0xBQkVMX1BYKmksYT1NYXRoLmNlaWwoby9yLnN0ZXBXaWR0aCgpKTtyZXR1cm57ZG9tYWluOm4uZmlsdGVyKGZ1bmN0aW9uKHMsbCl7cmV0dXJuIGwlYT09PTB9KSxzdGVwV2lkdGg6YSpyLnN0ZXBXaWR0aCgpfX0sdC5wcm90b3R5cGUudGlja0xhYmVsQW5nbGU9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fdGlja0xhYmVsQW5nbGU7aWYociE9PTAmJnIhPT05MCYmciE9PS05MCl0aHJvdyBuZXcgRXJyb3IoIkFuZ2xlICIrcisiIG5vdCBzdXBwb3J0ZWQ7IG9ubHkgMCwgOTAsIGFuZCAtOTAgYXJlIHZhbGlkIHZhbHVlcyIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxBbmdsZT1yLHRoaXMucmVkcmF3KCksdGhpc30sdC5wcm90b3R5cGUudGlja0xhYmVsU2hlYXJBbmdsZT1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlO2lmKHI8LTgwfHxyPjgwKXRocm93IG5ldyBFcnJvcigiQW5nbGUgIityKyIgbm90IHN1cHBvcnRlZDsgTXVzdCBiZSBiZXR3ZWVuIFstODAsIDgwXSIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlPXIsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS50aWNrTGFiZWxNYXhXaWR0aD1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTA/dGhpcy5fdGlja0xhYmVsTWF4V2lkdGg6KHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoPXIsdGhpcy5yZWRyYXcoKSx0aGlzKX0sdC5wcm90b3R5cGUudGlja0xhYmVsTWF4TGluZXM9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0wP3RoaXMuX3RpY2tMYWJlbE1heExpbmVzOih0aGlzLl90aWNrTGFiZWxNYXhMaW5lcz1yLHRoaXMucmVkcmF3KCksdGhpcyl9LHQucHJvdG90eXBlLl90aWNrU3BhY2VSZXF1aXJlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKX0sdC5wcm90b3R5cGUuX2RyYXdUaWNrcz1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMsbyxhO3N3aXRjaCh0aGlzLnRpY2tMYWJlbEFuZ2xlKCkpe2Nhc2UgMDpvPXtsZWZ0OiJyaWdodCIscmlnaHQ6ImxlZnQiLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9LGE9e2xlZnQ6ImNlbnRlciIscmlnaHQ6ImNlbnRlciIsdG9wOiJib3R0b20iLGJvdHRvbToidG9wIn07YnJlYWs7Y2FzZSA5MDpvPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoicmlnaHQiLGJvdHRvbToibGVmdCJ9LGE9e2xlZnQ6InRvcCIscmlnaHQ6ImJvdHRvbSIsdG9wOiJjZW50ZXIiLGJvdHRvbToiY2VudGVyIn07YnJlYWs7Y2FzZS05MDpvPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoibGVmdCIsYm90dG9tOiJyaWdodCJ9LGE9e2xlZnQ6ImJvdHRvbSIscmlnaHQ6InRvcCIsdG9wOiJjZW50ZXIiLGJvdHRvbToiY2VudGVyIn07YnJlYWt9bi5lYWNoKGZ1bmN0aW9uKHMpe3ZhciBsPUdpdC5zZWxlY3QodGhpcyksYz1pLmlzSG9yaXpvbnRhbCgpP3I6aS53aWR0aCgpLWkuX3RpY2tTcGFjZVJlcXVpcmVkKCksdT1pLmlzSG9yaXpvbnRhbCgpP2kuaGVpZ2h0KCktaS5fdGlja1NwYWNlUmVxdWlyZWQoKTpyLGg9e3hBbGlnbjpvW2kub3JpZW50YXRpb24oKV0seUFsaWduOmFbaS5vcmllbnRhdGlvbigpXSx0ZXh0Um90YXRpb246aS50aWNrTGFiZWxBbmdsZSgpLHRleHRTaGVhcjppLnRpY2tMYWJlbFNoZWFyQW5nbGUoKX07aWYoaS5fdGlja0xhYmVsTWF4V2lkdGghPW51bGwpe2lmKGkub3JpZW50YXRpb24oKT09PSJsZWZ0IiYmYz5pLl90aWNrTGFiZWxNYXhXaWR0aCl7dmFyIGY9Yy1pLl90aWNrTGFiZWxNYXhXaWR0aCxwPWwuYXR0cigidHJhbnNmb3JtIikrIiB0cmFuc2xhdGUoIitmKyIsIDApIjtsLmF0dHIoInRyYW5zZm9ybSIscCl9Yz1NYXRoLm1pbihjLGkuX3RpY2tMYWJlbE1heFdpZHRoKX1pLl93cml0ZXIud3JpdGUoaS5mb3JtYXR0ZXIoKShzKSxjLHUsaCxsLm5vZGUoKSl9KX0sdC5wcm90b3R5cGUuX21lYXN1cmVUaWNrTGFiZWxzPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcyxvPXRoaXMuX3NjYWxlLGE9by5jbG9uZVdpdGhvdXRQcm92aWRlcnMoKS5yYW5nZShbMCx0aGlzLmlzSG9yaXpvbnRhbCgpP3I6bl0pLHM9dGhpcy5nZXREb3duc2FtcGxlSW5mbyhhKSxsPXMuZG9tYWluLGM9cy5zdGVwV2lkdGgsdT1yLXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk7dGhpcy5pc0hvcml6b250YWwoKSYmKHU9Yyx0aGlzLl90aWNrTGFiZWxBbmdsZSE9PTAmJih1PW4tdGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSksdT1NYXRoLm1heCh1LDApKTt2YXIgaD1jO3RoaXMuaXNIb3Jpem9udGFsKCkmJihoPW4tdGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSx0aGlzLl90aWNrTGFiZWxBbmdsZSE9PTAmJihoPXItdGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSksaD1NYXRoLm1heChoLDApKSx0aGlzLl90aWNrTGFiZWxNYXhXaWR0aCE9bnVsbCYmKHU9TWF0aC5taW4odSx0aGlzLl90aWNrTGFiZWxNYXhXaWR0aCkpO3ZhciBmPWwubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBpLl93cmFwcGVyLndyYXAoaS5mb3JtYXR0ZXIoKSh4KSxpLl9tZWFzdXJlcix1LGgpfSkscD10aGlzLmlzSG9yaXpvbnRhbCgpJiZ0aGlzLl90aWNrTGFiZWxBbmdsZT09PTA/R2l0LnN1bTpCWHQuTWF0aC5tYXgsZD10aGlzLmlzSG9yaXpvbnRhbCgpJiZ0aGlzLl90aWNrTGFiZWxBbmdsZT09PTA/Qlh0Lk1hdGgubWF4OkdpdC5zdW0sZz1wKGYsZnVuY3Rpb24oeCl7cmV0dXJuIGkuX21lYXN1cmVyLm1lYXN1cmUoeC53cmFwcGVkVGV4dCkud2lkdGh9LDApLF89ZChmLGZ1bmN0aW9uKHgpe3JldHVybiBpLl9tZWFzdXJlci5tZWFzdXJlKHgud3JhcHBlZFRleHQpLmhlaWdodH0sMCk7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbEFuZ2xlIT09MCYmKHk9W18sZ10sZz15WzBdLF89eVsxXSkse3VzZWRXaWR0aDpnLHVzZWRIZWlnaHQ6X307dmFyIHl9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcztlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpO3ZhciBuPXRoaXMuX3NjYWxlLGk9dGhpcy5nZXREb3duc2FtcGxlSW5mbyhuKSxvPWkuZG9tYWluLGE9aS5zdGVwV2lkdGgscz1hO3RoaXMuaXNIb3Jpem9udGFsKCkmJnRoaXMuX3RpY2tMYWJlbE1heFdpZHRoIT1udWxsJiYocz1NYXRoLm1pbihzLHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoKSk7dmFyIGw9ZnVuY3Rpb24ocCxkKXt2YXIgZz1uLnNjYWxlKHApLXMvMixfPXIuaXNIb3Jpem9udGFsKCk/ZzowLHk9ci5pc0hvcml6b250YWwoKT8wOmc7cmV0dXJuInRyYW5zbGF0ZSgiK18rIiwiK3krIikifSxjPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK1dpdC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEobyksdT1jLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChXaXQuQXhpcy5USUNLX0xBQkVMX0NMQVNTLCEwKS5tZXJnZShjKTtjLmV4aXQoKS5yZW1vdmUoKSx1LmF0dHIoInRyYW5zZm9ybSIsbCksdS50ZXh0KCIiKSx0aGlzLl9kcmF3VGlja3MoYSx1KTt2YXIgaD10aGlzLm9yaWVudGF0aW9uKCk9PT0icmlnaHQiP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk6MCxmPXRoaXMub3JpZW50YXRpb24oKT09PSJib3R0b20iP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk6MDtyZXR1cm4gdGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2grIiwiK2YrIikiKSx0aGlzLl9zaG93QWxsVGlja01hcmtzKCksdGhpcy5fc2hvd0FsbFRpY2tMYWJlbHMoKSx0aGlzLl9oaWRlVGlja01hcmtzV2l0aG91dExhYmVsKCksdGhpc30sdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihyLG4saSl7cmV0dXJuIGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLHIsbixpKSx0aGlzLmlzSG9yaXpvbnRhbCgpfHx0aGlzLl9zY2FsZS5yYW5nZShbMCx0aGlzLmhlaWdodCgpXSksdGhpc30sdC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sdC5fTUlOSU1VTV9XSURUSF9QRVJfTEFCRUxfUFg9MTUsdH0oV2l0LkF4aXMpO1lpdC5DYXRlZ29yeT1DemV9KTt2YXIgVlh0PUgoWGl0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShYaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBBemU9KGRlKCksVXQocGUpKSxORj0oRXIoKSxVdChNcikpLGppdD1nbCgpLFB6ZT1GdSgpLHhTPUZlKCksYlM9WkEoKSxJemU9ZnVuY3Rpb24oZSl7QXplLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocixuKXt2YXIgaT1lLmNhbGwodGhpcyxyLG4pfHx0aGlzO3JldHVybiBpLl90aWNrTGFiZWxQb3NpdGlvbmluZz0iY2VudGVyIixpLl91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj0hMSxpLmZvcm1hdHRlcihQemUuZ2VuZXJhbCgpKSxpfXJldHVybiB0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt2YXIgcj1uZXcgaml0LlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSxiUy5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpO3RoaXMuX21lYXN1cmVyPW5ldyBqaXQuQ2FjaGVNZWFzdXJlcihyKSx0aGlzLl93cmFwcGVyPW5ldyBqaXQuV3JhcHBlcigpLm1heExpbmVzKDEpfSx0LnByb3RvdHlwZS5fY29tcHV0ZVdpZHRoPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5fdXNlc1RleHRXaWR0aEFwcHJveGltYXRpb24/dGhpcy5fY29tcHV0ZUFwcHJveGltYXRlVGV4dFdpZHRoKCk6dGhpcy5fY29tcHV0ZUV4YWN0VGV4dFdpZHRoKCk7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPT09ImNlbnRlciI/dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrcjpNYXRoLm1heCh0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSx0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKStyKX0sdC5wcm90b3R5cGUuX2NvbXB1dGVFeGFjdFRleHRXaWR0aD1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj10aGlzLl9nZXRUaWNrVmFsdWVzKCksaT1uLm1hcChmdW5jdGlvbihvKXt2YXIgYT1yLmZvcm1hdHRlcigpKG8pO3JldHVybiByLl9tZWFzdXJlci5tZWFzdXJlKGEpLndpZHRofSk7cmV0dXJuIHhTLk1hdGgubWF4KGksMCl9LHQucHJvdG90eXBlLl9jb21wdXRlQXBwcm94aW1hdGVUZXh0V2lkdGg9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49dGhpcy5fZ2V0VGlja1ZhbHVlcygpLGk9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgiTSIpLndpZHRoLG89bi5tYXAoZnVuY3Rpb24oYSl7dmFyIHM9ci5mb3JtYXR0ZXIoKShhKTtyZXR1cm4gcy5sZW5ndGgqaX0pO3JldHVybiB4Uy5NYXRoLm1heChvLDApfSx0LnByb3RvdHlwZS5fY29tcHV0ZUhlaWdodD1mdW5jdGlvbigpe3ZhciByPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQ7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPT09ImNlbnRlciI/dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrcjpNYXRoLm1heCh0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSx0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKStyKX0sdC5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLl9zY2FsZSxuPXIuZG9tYWluKCksaT1uWzBdPD1uWzFdP25bMF06blsxXSxvPW5bMF0+PW5bMV0/blswXTpuWzFdO3JldHVybiByLnRpY2tzKCkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhPj1pJiZhPD1vfSl9LHQucHJvdG90eXBlLl9yZXNjYWxlPWZ1bmN0aW9uKCl7aWYoISF0aGlzLl9pc1NldHVwKXtpZighdGhpcy5pc0hvcml6b250YWwoKSl7dmFyIHI9dGhpcy5fY29tcHV0ZVdpZHRoKCk7aWYocj50aGlzLndpZHRoKCl8fHI8dGhpcy53aWR0aCgpLXRoaXMubWFyZ2luKCkpe3RoaXMucmVkcmF3KCk7cmV0dXJufX10aGlzLnJlbmRlcigpfX0sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgcj10aGlzO2UucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG49e3g6MCx5OjAsZHg6IjBlbSIsZHk6IjAuM2VtIn0saT10aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSxvPXRoaXMudGlja0xhYmVsUGFkZGluZygpLGE9Im1pZGRsZSIscz0wLGw9MCxjPTAsdT0wO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpc3dpdGNoKHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nKXtjYXNlImxlZnQiOmE9ImVuZCIscz0tbyx1PW87YnJlYWs7Y2FzZSJjZW50ZXIiOnU9aStvO2JyZWFrO2Nhc2UicmlnaHQiOmE9InN0YXJ0IixzPW8sdT1vO2JyZWFrfWVsc2Ugc3dpdGNoKHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nKXtjYXNlInRvcCI6bi5keT0iLTAuM2VtIixjPW8sbD0tbzticmVhaztjYXNlImNlbnRlciI6Yz1pK287YnJlYWs7Y2FzZSJib3R0b20iOm4uZHk9IjFlbSIsYz1vLGw9bzticmVha312YXIgaD10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKTtzd2l0Y2godGhpcy5vcmllbnRhdGlvbigpKXtjYXNlImJvdHRvbSI6bi54PWgueDEsbi5keT0iMC45NWVtIixsPWgueTErdTticmVhaztjYXNlInRvcCI6bi54PWgueDEsbi5keT0iLS4yNWVtIixsPWgueTEtdTticmVhaztjYXNlImxlZnQiOmE9ImVuZCIscz1oLngxLWMsbi55PWgueTE7YnJlYWs7Y2FzZSJyaWdodCI6YT0ic3RhcnQiLHM9aC54MStjLG4ueT1oLnkxO2JyZWFrfXZhciBmPXRoaXMuX2dldFRpY2tWYWx1ZXMoKSxwPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK2JTLkF4aXMuVElDS19MQUJFTF9DTEFTUykuZGF0YShmKTtwLmV4aXQoKS5yZW1vdmUoKTt2YXIgZD1wLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZChiUy5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsITApLm1lcmdlKHApO2Quc3R5bGUoInRleHQtYW5jaG9yIixhKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKS5hdHRycyhuKS50ZXh0KGZ1bmN0aW9uKF8pe3JldHVybiByLmZvcm1hdHRlcigpKF8pfSk7dmFyIGc9InRyYW5zbGF0ZSgiK3MrIiwgIitsKyIpIjtyZXR1cm4gdGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsZyksdGhpcy5fc2hvd0FsbFRpY2tNYXJrcygpLHRoaXMuc2hvd0VuZFRpY2tMYWJlbHMoKXx8dGhpcy5faGlkZUVuZFRpY2tMYWJlbHMoKSx0aGlzLl9oaWRlT3ZlcmZsb3dpbmdUaWNrTGFiZWxzKCksdGhpcy5faGlkZU92ZXJsYXBwaW5nVGlja0xhYmVscygpLHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nIT09ImNlbnRlciImJnRoaXMuX2hpZGVUaWNrTWFya3NXaXRob3V0TGFiZWwoKSx0aGlzfSx0LnByb3RvdHlwZS50aWNrTGFiZWxQb3NpdGlvbj1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZzt2YXIgbj1yLnRvTG93ZXJDYXNlKCk7aWYodGhpcy5pc0hvcml6b250YWwoKSl7aWYoIShuPT09ImxlZnQifHxuPT09ImNlbnRlciJ8fG49PT0icmlnaHQiKSl0aHJvdyBuZXcgRXJyb3IobisiIGlzIG5vdCBhIHZhbGlkIHRpY2sgbGFiZWwgcG9zaXRpb24gZm9yIGEgaG9yaXpvbnRhbCBOdW1lcmljQXhpcyIpfWVsc2UgaWYoIShuPT09InRvcCJ8fG49PT0iY2VudGVyInx8bj09PSJib3R0b20iKSl0aHJvdyBuZXcgRXJyb3IobisiIGlzIG5vdCBhIHZhbGlkIHRpY2sgbGFiZWwgcG9zaXRpb24gZm9yIGEgdmVydGljYWwgTnVtZXJpY0F4aXMiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc9bix0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLnVzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uOih0aGlzLl91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj1yLHRoaXMpfSx0LnByb3RvdHlwZS5faGlkZUVuZFRpY2tMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLmVsZW1lbnQoKS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitiUy5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpO2lmKG4uc2l6ZSgpIT09MCl7dmFyIGk9bi5ub2RlcygpWzBdO3hTLkRPTS5jbGllbnRSZWN0SW5zaWRlKGkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscil8fE5GLnNlbGVjdChpKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpO3ZhciBvPW4ubm9kZXMoKVtuLnNpemUoKS0xXTt4Uy5ET00uY2xpZW50UmVjdEluc2lkZShvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHIpfHxORi5zZWxlY3Qobykuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX19LHQucHJvdG90eXBlLl9oaWRlT3ZlcmxhcHBpbmdUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7Zm9yKHZhciByPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK2JTLkF4aXMuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKGZ1bmN0aW9uKG8sYSl7dmFyIHM9TkYuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuIHM9PT0iaW5oZXJpdCJ8fHM9PT0idmlzaWJsZSJ9KSxuPXIubm9kZXMoKS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9KSxpPTE7IXRoaXMuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWwoaSxuKSYmaTxuLmxlbmd0aDspaSs9MTtyLmVhY2goZnVuY3Rpb24obyxhKXt2YXIgcz1ORi5zZWxlY3QodGhpcyk7YSVpIT09MCYmcy5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSl9LHQucHJvdG90eXBlLl9oYXNPdmVybGFwV2l0aEludGVydmFsPWZ1bmN0aW9uKHIsbil7Zm9yKHZhciBpPXRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPT09ImNlbnRlciI/dGhpcy50aWNrTGFiZWxQYWRkaW5nKCk6dGhpcy50aWNrTGFiZWxQYWRkaW5nKCkqMyxvPW4ubWFwKGZ1bmN0aW9uKGMpe3JldHVybiB4Uy5ET00uZXhwYW5kUmVjdChjLGkpfSksYT0wO2E8by5sZW5ndGgtcjthKz1yKXt2YXIgcz1vW2FdLGw9b1thK3JdO2lmKHhTLkRPTS5jbGllbnRSZWN0c092ZXJsYXAocyxsKSlyZXR1cm4hMX1yZXR1cm4hMH0sdC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sdH0oYlMuQXhpcyk7WGl0Lk51bWVyaWM9SXplfSk7dmFyIFVYdD1IKERGPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShERiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEx6ZT1GZSgpO2Z1bmN0aW9uIGt6ZShlKXtpZihlPD0wKXRocm93IG5ldyBFcnJvcigiaW50ZXJ2YWwgbXVzdCBiZSBwb3NpdGl2ZSBudW1iZXIiKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9dC5kb21haW4oKSxuPU1hdGgubWluKHJbMF0sclsxXSksaT1NYXRoLm1heChyWzBdLHJbMV0pLG89TWF0aC5jZWlsKG4vZSkqZSxhPU1hdGguZmxvb3IoKGktbykvZSkrMSxzPW4lZT09PTA/W106W25dLGw9THplLk1hdGgucmFuZ2UoMCxhKS5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIG8rdSplfSksYz1pJWU9PT0wP1tdOltpXTtyZXR1cm4gcy5jb25jYXQobCkuY29uY2F0KGMpfX1ERi5pbnRlcnZhbFRpY2tHZW5lcmF0b3I9a3plO2Z1bmN0aW9uIFJ6ZSgpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmRlZmF1bHRUaWNrcygpO3JldHVybiB0LmZpbHRlcihmdW5jdGlvbihyLG4pe3JldHVybiByJTE9PT0wfHxuPT09MHx8bj09PXQubGVuZ3RoLTF9KX19REYuaW50ZWdlclRpY2tHZW5lcmF0b3I9UnplfSk7dmFyIEpBPUgoSXY9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEl2LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtmdW5jdGlvbiBLaXQoZSx0LHIpe3JldHVybiByLShyLWUpKnR9SXYuem9vbU91dD1LaXQ7ZnVuY3Rpb24gJGl0KGUsdCxyKXtyZXR1cm4oZSp0LXIpLyh0LTEpfWZ1bmN0aW9uIE56ZShlLHQscixuLGksbyxhKXtyZXR1cm4gdD1xWHQoZSx0LG4saSksR1h0KGUsdCxyLG8sYSl9SXYuY29uc3RyYWluZWRab29tPU56ZTtmdW5jdGlvbiBxWHQoZSx0LHIsbil7dmFyIGk9dD4xLG89aT9uOnI7aWYobz09bnVsbClyZXR1cm4gdDt2YXIgYT1lLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCkscz1hWzBdLGw9YVsxXSxjPU1hdGguYWJzKGwtcyksdT1pP01hdGgubWluOk1hdGgubWF4O3JldHVybiB1KHQsby9jKX1Jdi5jb25zdHJhaW5ab29tRXh0ZW50cz1xWHQ7ZnVuY3Rpb24gR1h0KGUsdCxyLG4saSl7aWYodDw9MSlyZXR1cm57Y2VudGVyUG9pbnQ6cix6b29tQW1vdW50OnR9O2lmKG49PW51bGwmJmk9PW51bGwpcmV0dXJue2NlbnRlclBvaW50OnIsem9vbUFtb3VudDp0fTt2YXIgbz1XWHQoZSksYT1PemUoZSkscz1hPzEvMDotMS8wLGw9YT8tMS8wOjEvMDtuPW49PW51bGw/czpuLGk9aT09bnVsbD9sOmk7dmFyIGM9ZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpLHU9Y1swXSxoPWNbMV0sZj1lLnNjYWxlVHJhbnNmb3JtYXRpb24oaSkscD1lLnNjYWxlVHJhbnNmb3JtYXRpb24oaCksZD1LaXQocCx0LHIpLGc9ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKG4pLF89ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHUpLHk9S2l0KF8sdCxyKSx4PU1hdGguYWJzKGYtZyksYj1NYXRoLmFicyhkLXkpO2lmKGI+eCl7dmFyIFM9KGYtZykvKHAtXyk7aWYoUyE9PTEpe3ZhciBDPSRpdChwLFMsZik7cmV0dXJue2NlbnRlclBvaW50OkMsem9vbUFtb3VudDpTfX1lbHNlIHJldHVybntjZW50ZXJQb2ludDpyLHpvb21BbW91bnQ6U319ZWxzZSByZXR1cm4gZD5mIT1vP3tjZW50ZXJQb2ludDokaXQocCx0LGYpLHpvb21BbW91bnQ6dH06eTxnIT1vP3tjZW50ZXJQb2ludDokaXQoXyx0LGcpLHpvb21BbW91bnQ6dH06e2NlbnRlclBvaW50OnIsem9vbUFtb3VudDp0fX1Jdi5jb25zdHJhaW5ab29tVmFsdWVzPUdYdDtmdW5jdGlvbiBEemUoZSx0LHIsbil7dmFyIGk9ZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpLG89aVswXSxhPWlbMV0scz1XWHQoZSk7aWYodD4wIT09cyl7dmFyIGw9bjtpZihsIT1udWxsKXt2YXIgYz1lLnNjYWxlVHJhbnNmb3JtYXRpb24oYSksdT1lLnNjYWxlVHJhbnNmb3JtYXRpb24obCk7dD0ocz9NYXRoLm1heDpNYXRoLm1pbikoYyt0LHUpLWN9fWVsc2V7dmFyIGw9cjtpZihsIT1udWxsKXt2YXIgaD1lLnNjYWxlVHJhbnNmb3JtYXRpb24obyksZj1lLnNjYWxlVHJhbnNmb3JtYXRpb24obCk7dD0ocz9NYXRoLm1pbjpNYXRoLm1heCkoaCt0LGYpLWh9fXJldHVybiB0fUl2LmNvbnN0cmFpbmVkVHJhbnNsYXRpb249RHplO2Z1bmN0aW9uIFdYdChlKXt2YXIgdD1lLnJhbmdlKCk7cmV0dXJuIHRbMV08dFswXX1mdW5jdGlvbiBPemUoZSl7dmFyIHQ9ZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpO3JldHVybiB0WzFdPHRbMF19fSk7dmFyIEx2PUgoWml0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShaaXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBZWHQ9RmUoKSx6emU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITAsdGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMSx0aGlzLl91cGRhdGVJZD0wLHRoaXMuX2NhbGxiYWNrcz1uZXcgWVh0LkNhbGxiYWNrU2V0LHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzPW5ldyBZWHQuU2V0fXJldHVybiBlLnByb3RvdHlwZS5leHRlbnRPZlZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm5bXX0sZS5wcm90b3R5cGUuX2dldEFsbEluY2x1ZGVkVmFsdWVzPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXM7dD09PXZvaWQgMCYmKHQ9ITEpO3ZhciBuPVtdO3JldHVybiB0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPWkocix0KTtuPW4uY29uY2F0KG8pfSksbn0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybltdfSxlLnByb3RvdHlwZS5vblVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZVcGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuX2Rpc3BhdGNoVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSWQrKyx0aGlzLl9jYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzKX0sZS5wcm90b3R5cGUuYXV0b0RvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseT0hMCx0aGlzLl9zZXREb21haW4odGhpcy5fZ2V0RXh0ZW50KCkpLHRoaXN9LGUucHJvdG90eXBlLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGU9ZnVuY3Rpb24oKXt0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseSYmdGhpcy5hdXRvRG9tYWluKCl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgc2NhbGUiKX0sZS5wcm90b3R5cGUudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sZS5wcm90b3R5cGUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiB0PT1udWxsP3RoaXMuX2dldERvbWFpbigpOih0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseT0hMSx0aGlzLl9zZXREb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9nZXREb21haW4iKX0sZS5wcm90b3R5cGUuX3NldERvbWFpbj1mdW5jdGlvbih0KXt0aGlzLl9kb21haW5Nb2RpZmljYXRpb25JblByb2dyZXNzfHwodGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMCx0aGlzLl9iYWNraW5nU2NhbGVEb21haW4odCksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKSx0aGlzLl9kb21haW5Nb2RpZmljYXRpb25JblByb2dyZXNzPSExKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9iYWNraW5nRG9tYWluIil9LGUucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT1udWxsP3RoaXMuX2dldFJhbmdlKCk6KHRoaXMuX3NldFJhbmdlKHQpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9nZXRSYW5nZSIpfSxlLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfc2V0UmFuZ2UiKX0sZS5wcm90b3R5cGUuYWRkSW5jbHVkZWRWYWx1ZXNQcm92aWRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnMuYWRkKHQpLHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZUluY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmRlbGV0ZSh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSxlLnByb3RvdHlwZS51cGRhdGVJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVJZH0sZX0oKTtaaXQuU2NhbGU9enplfSk7dmFyIHRvdD1IKFFpdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUWl0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgRnplPShkZSgpLFV0KHBlKSksT0Y9KEVyKCksVXQoTXIpKSxCemU9SkEoKSxqWHQ9RmUoKSxIemU9THYoKSxKaXQ9WzAsMV0sVnplPWZ1bmN0aW9uKGUpe0Z6ZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZS5jYWxsKHRoaXMpfHx0aGlzO3IuX3JhbmdlPVswLDFdLHIuX2QzU2NhbGU9T0Yuc2NhbGVCYW5kKCksci5fZDNTY2FsZS5yYW5nZShKaXQpLHIuX2QzVHJhbnNmb3JtYXRpb25TY2FsZT1PRi5zY2FsZUxpbmVhcigpLHIuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4oSml0KTt2YXIgbj0uMztyZXR1cm4gci5faW5uZXJQYWRkaW5nPXQuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZyhuKSxyLl9vdXRlclBhZGRpbmc9dC5fY29udmVydFRvUGxvdHRhYmxlT3V0ZXJQYWRkaW5nKC41LG4pLHJ9cmV0dXJuIHQucHJvdG90eXBlLmNsb25lV2l0aG91dFByb3ZpZGVycz1mdW5jdGlvbigpe3ZhciByPW5ldyB0KCkuZG9tYWluKHRoaXMuZG9tYWluKCkpLnJhbmdlKHRoaXMucmFuZ2UoKSkuaW5uZXJQYWRkaW5nKHRoaXMuaW5uZXJQYWRkaW5nKCkpLm91dGVyUGFkZGluZyh0aGlzLm91dGVyUGFkZGluZygpKTtyZXR1cm4gci5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKCkpLHJ9LHQucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHIpe3JldHVybiBqWHQuQXJyYXkudW5pcShyKX0sdC5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybiBqWHQuQXJyYXkudW5pcSh0aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpKX0sdC5wcm90b3R5cGUuZG9tYWluPWZ1bmN0aW9uKHIpe3JldHVybiBlLnByb3RvdHlwZS5kb21haW4uY2FsbCh0aGlzLHIpfSx0LnByb3RvdHlwZS5pbnZlcnRSYW5nZT1mdW5jdGlvbihyKXt2YXIgbj10aGlzO3I9PT12b2lkIDAmJihyPXRoaXMucmFuZ2UoKSk7dmFyIGk9dGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSxvPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbihyWzBdKSxhPXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbihyWzFdKSxzPXRoaXMuX2QzU2NhbGUuZG9tYWluKCksbD1zLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gbi5fZDNTY2FsZShoKStpLzJ9KSxjPU9GLmJpc2VjdChsLG8pLHU9T0YuYmlzZWN0KGwsYSk7cmV0dXJuIHMuc2xpY2UoYyx1KX0sdC5wcm90b3R5cGUucmFuZ2U9ZnVuY3Rpb24ocil7cmV0dXJuIGUucHJvdG90eXBlLnJhbmdlLmNhbGwodGhpcyxyKX0sdC5fY29udmVydFRvUGxvdHRhYmxlSW5uZXJQYWRkaW5nPWZ1bmN0aW9uKHIpe3JldHVybiAxLygxLXIpLTF9LHQuX2NvbnZlcnRUb1Bsb3R0YWJsZU91dGVyUGFkZGluZz1mdW5jdGlvbihyLG4pe3JldHVybiByLygxLW4pfSx0LnByb3RvdHlwZS5fc2V0QmFuZHM9ZnVuY3Rpb24oKXt2YXIgcj0xLTEvKDErdGhpcy5pbm5lclBhZGRpbmcoKSksbj10aGlzLm91dGVyUGFkZGluZygpLygxK3RoaXMuaW5uZXJQYWRkaW5nKCkpO3RoaXMuX2QzU2NhbGUucGFkZGluZ0lubmVyKHIpLHRoaXMuX2QzU2NhbGUucGFkZGluZ091dGVyKG4pfSx0LnByb3RvdHlwZS5yYW5nZUJhbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzY2FsZUJhbmQodGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSl9LHQucHJvdG90eXBlLnN0ZXBXaWR0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNjYWxlQmFuZCh0aGlzLl9kM1NjYWxlLmJhbmR3aWR0aCgpKigxK3RoaXMuaW5uZXJQYWRkaW5nKCkpKX0sdC5wcm90b3R5cGUudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sdC5wcm90b3R5cGUuaW5uZXJQYWRkaW5nPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2lubmVyUGFkZGluZzoodGhpcy5faW5uZXJQYWRkaW5nPXIsdGhpcy5yYW5nZSh0aGlzLnJhbmdlKCkpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcyl9LHQucHJvdG90eXBlLm91dGVyUGFkZGluZz1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9vdXRlclBhZGRpbmc6KHRoaXMuX291dGVyUGFkZGluZz1yLHRoaXMucmFuZ2UodGhpcy5yYW5nZSgpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihyKXt2YXIgbj10aGlzLl9kM1NjYWxlKHIpK3RoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkvMjtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKG4pfSx0LnByb3RvdHlwZS56b29tPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcyxvPWZ1bmN0aW9uKGEpe3JldHVybiBpLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuaW52ZXJ0KEJ6ZS56b29tT3V0KGEscixuKSl9O3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKCkubWFwKG8pKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSx0LnByb3RvdHlwZS5wYW49ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPWZ1bmN0aW9uKG8pe3JldHVybiBuLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuaW52ZXJ0KG8rcil9O3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKCkubWFwKGkpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSx0LnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUocil9LHQucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQocil9LHQucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIEppdH0sdC5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbigpfSx0LnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbihyKXt0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKHIpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCl9LHQucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LHQucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4ociksdGhpcy5fc2V0QmFuZHMoKSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhbmdlfSx0LnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24ocil7dGhpcy5fcmFuZ2U9cix0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UociksdGhpcy5fc2V0QmFuZHMoKX0sdC5wcm90b3R5cGUuX3Jlc2NhbGVCYW5kPWZ1bmN0aW9uKHIpe3JldHVybiBNYXRoLmFicyh0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUociktdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKDApKX0sdH0oSHplLlNjYWxlKTtRaXQuQ2F0ZWdvcnk9VnplfSk7dmFyIFhYdD1IKGVvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZW90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVXplPShkZSgpLFV0KHBlKSksUmY9KEVyKCksVXQoTXIpKSx3Uz1GZSgpLHF6ZT1MdigpLEd6ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLmNvdW50PTAsdGhpcy50cmFja2VyPXt9fXJldHVybiBlLnByb3RvdHlwZS5nZXRJbmRleD1mdW5jdGlvbih0KXtpZih0aGlzLnRyYWNrZXJbdF0hPW51bGwpcmV0dXJuIHRoaXMudHJhY2tlclt0XTt2YXIgcj10aGlzLmNvdW50O3JldHVybiB0aGlzLnRyYWNrZXJbdF09cix0aGlzLmNvdW50Kz0xLHJ9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5jb3VudD0wLHRoaXMudHJhY2tlcj17fX0sZX0oKSxXemU9ZnVuY3Rpb24oZSl7VXplLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO24uX3JhbmdlTGVuZ3RoPTEsbi5fdHJhY2tlcj1uZXcgR3plO3ZhciBpO3N3aXRjaChyKXtjYXNlIG51bGw6Y2FzZSB2b2lkIDA6dC5fcGxvdHRhYmxlQ29sb3JDYWNoZT09bnVsbCYmKHQuX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9dC5fZ2V0UGxvdHRhYmxlQ29sb3JzKCkpLGk9UmYuc2NhbGVPcmRpbmFsKCkucmFuZ2UodC5fcGxvdHRhYmxlQ29sb3JDYWNoZSk7YnJlYWs7Y2FzZSJDYXRlZ29yeTEwIjpjYXNlImNhdGVnb3J5MTAiOmNhc2UiMTAiOmk9UmYuc2NhbGVPcmRpbmFsKFJmLnNjaGVtZUNhdGVnb3J5MTApO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMCI6Y2FzZSJjYXRlZ29yeTIwIjpjYXNlIjIwIjppPVJmLnNjYWxlT3JkaW5hbChSZi5zY2hlbWVDYXRlZ29yeTIwKTticmVhaztjYXNlIkNhdGVnb3J5MjBiIjpjYXNlImNhdGVnb3J5MjBiIjpjYXNlIjIwYiI6aT1SZi5zY2FsZU9yZGluYWwoUmYuc2NoZW1lQ2F0ZWdvcnkyMGIpO2JyZWFrO2Nhc2UiQ2F0ZWdvcnkyMGMiOmNhc2UiY2F0ZWdvcnkyMGMiOmNhc2UiMjBjIjppPVJmLnNjYWxlT3JkaW5hbChSZi5zY2hlbWVDYXRlZ29yeTIwYyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVuc3VwcG9ydGVkIENvbG9yU2NhbGUgdHlwZSIpfXJldHVybiBuLl9kM1NjYWxlPWksbi5fcmFuZ2VMZW5ndGg9bi5fZDNTY2FsZS5yYW5nZSgpLmxlbmd0aCxufXJldHVybiB0LnByb3RvdHlwZS5leHRlbnRPZlZhbHVlcz1mdW5jdGlvbihyKXtyZXR1cm4gd1MuQXJyYXkudW5pcShyKX0sdC5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB3Uy5BcnJheS51bmlxKHRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCkpfSx0LmludmFsaWRhdGVDb2xvckNhY2hlPWZ1bmN0aW9uKCl7dC5fcGxvdHRhYmxlQ29sb3JDYWNoZT1udWxsfSx0Ll9nZXRQbG90dGFibGVDb2xvcnM9ZnVuY3Rpb24oKXtmb3IodmFyIHI9W10sbj1SZi5zZWxlY3QoImJvZHkiKS5hcHBlbmQoInBsb3R0YWJsZS1jb2xvci10ZXN0ZXIiKSxpPXdTLkNvbG9yLmNvbG9yVGVzdChuLCIiKSxvPTAsYT13Uy5Db2xvci5jb2xvclRlc3QobiwicGxvdHRhYmxlLWNvbG9ycy0wIik7YSE9bnVsbCYmbzx0aGlzLl9NQVhJTVVNX0NPTE9SU19GUk9NX0NTUyYmIShhPT09aSYmYT09PXJbci5sZW5ndGgtMV0pOylyLnB1c2goYSksbysrLGE9d1MuQ29sb3IuY29sb3JUZXN0KG4sInBsb3R0YWJsZS1jb2xvcnMtIitvKTtyZXR1cm4gbi5yZW1vdmUoKSxyfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihyKXt2YXIgbj10aGlzLl9kM1NjYWxlKHIpLGk9dGhpcy5fdHJhY2tlci5nZXRJbmRleChyKSxvPU1hdGguZmxvb3IoaS90aGlzLl9yYW5nZUxlbmd0aCk7aWYobz09PTApcmV0dXJuIG47dmFyIGE9TWF0aC5sb2cobyp0Ll9MT09QX0xJR0hURU5fRkFDVE9SKzEpO3JldHVybiB3Uy5Db2xvci5saWdodGVuQ29sb3IobixhKX0sdC5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sdC5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbihyKSx0aGlzLl90cmFja2VyLmNsZWFyKCksdGhpcyl9LHQucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LHQucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbihyKXt0aGlzLl9kM1NjYWxlLnJhbmdlKHIpLHRoaXMuX3JhbmdlTGVuZ3RoPXIubGVuZ3RofSx0Ll9MT09QX0xJR0hURU5fRkFDVE9SPTEuNix0Ll9NQVhJTVVNX0NPTE9SU19GUk9NX0NTUz0yNTYsdH0ocXplLlNjYWxlKTtlb3QuQ29sb3I9V3plfSk7dmFyIEtYdD1IKHJvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkocm90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWXplPShkZSgpLFV0KHBlKSksU1M9KEVyKCksVXQoTXIpKSwkWHQ9RmUoKSxqemU9THYoKSxYemU9ZnVuY3Rpb24oZSl7WXplLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cj09PXZvaWQgMCYmKHI9ImxpbmVhciIpO3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztzd2l0Y2gocil7Y2FzZSJsaW5lYXIiOm4uX2NvbG9yU2NhbGU9U1Muc2NhbGVMaW5lYXIoKTticmVhaztjYXNlImxvZyI6bi5fY29sb3JTY2FsZT1TUy5zY2FsZUxvZygpO2JyZWFrO2Nhc2Uic3FydCI6bi5fY29sb3JTY2FsZT1TUy5zY2FsZVNxcnQoKTticmVhaztjYXNlInBvdyI6bi5fY29sb3JTY2FsZT1TUy5zY2FsZVBvdygpO2JyZWFrfWlmKG4uX2NvbG9yU2NhbGU9PW51bGwpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIFF1YW50aXRhdGl2ZVNjYWxlIHNjYWxlIHR5cGUgIityKTtyZXR1cm4gbi5yYW5nZSh0LlJFRFMpLG59cmV0dXJuIHQucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHIpe3ZhciBuPVNTLmV4dGVudChyKTtyZXR1cm4gblswXT09bnVsbHx8blsxXT09bnVsbD9bXTpufSx0LnByb3RvdHlwZS5fZDNJbnRlcnBvbGF0ZWRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlLnJhbmdlKFswLDFdKS5pbnRlcnBvbGF0ZSh0aGlzLl9pbnRlcnBvbGF0ZUNvbG9ycygpKX0sdC5wcm90b3R5cGUuX2ludGVycG9sYXRlQ29sb3JzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5fY29sb3JSYW5nZTtpZihyLmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiQ29sb3Igc2NhbGUgYXJyYXlzIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuIik7cmV0dXJuIGZ1bmN0aW9uKG4saSl7cmV0dXJuIGZ1bmN0aW9uKG8pe289TWF0aC5tYXgoMCxNYXRoLm1pbigxLG8pKTt2YXIgYT1vKihyLmxlbmd0aC0xKSxzPU1hdGguZmxvb3IoYSksbD1NYXRoLmNlaWwoYSksYz1hLXM7cmV0dXJuIFNTLmludGVycG9sYXRlTGFiKHJbc10scltsXSkoYyl9fX0sdC5wcm90b3R5cGUuX3Jlc2V0U2NhbGU9ZnVuY3Rpb24oKXt0aGlzLl9kM1NjYWxlPXRoaXMuX2QzSW50ZXJwb2xhdGVkU2NhbGUoKSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSx0LnByb3RvdHlwZS5hdXRvRG9tYWluPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKTtyZXR1cm4gci5sZW5ndGg+MCYmdGhpcy5fc2V0RG9tYWluKFskWHQuTWF0aC5taW4ociwwKSwkWHQuTWF0aC5tYXgociwwKV0pLHRoaXN9LHQucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kM1NjYWxlKHIpfSx0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSx0LnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHIpLHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29sb3JSYW5nZX0sdC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHIpe3RoaXMuX2NvbG9yUmFuZ2U9cix0aGlzLl9yZXNldFNjYWxlKCl9LHQuUkVEUz1bIiNGRkZGRkYiLCIjRkZGNkUxIiwiI0ZFRjRDMCIsIiNGRUQ5NzYiLCIjRkVCMjRDIiwiI0ZEOEQzQyIsIiNGQzRFMkEiLCIjRTMxQTFDIiwiI0IxMDAyNiJdLHQuQkxVRVM9WyIjRkZGRkZGIiwiI0NDRkZGRiIsIiNBNUZGRkQiLCIjODVGN0ZCIiwiIzZFRDNFRiIsIiM1NUE3RTAiLCIjNDE3RkQwIiwiIzI1NDVEMyIsIiMwQjAyRTEiXSx0LlBPU05FRz1bIiMwQjAyRTEiLCIjMjU0NUQzIiwiIzQxN0ZEMCIsIiM1NUE3RTAiLCIjNkVEM0VGIiwiIzg1RjdGQiIsIiNBNUZGRkQiLCIjQ0NGRkZGIiwiI0ZGRkZGRiIsIiNGRkY2RTEiLCIjRkVGNEMwIiwiI0ZFRDk3NiIsIiNGRUIyNEMiLCIjRkQ4RDNDIiwiI0ZDNEUyQSIsIiNFMzFBMUMiLCIjQjEwMDI2Il0sdH0oanplLlNjYWxlKTtyb3QuSW50ZXJwb2xhdGVkQ29sb3I9WHplfSk7dmFyIHZkPUgobm90PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShub3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkemU9KGRlKCksVXQocGUpKSxLemU9KEVyKCksVXQoTXIpKSxaemU9SkEoKSxNUz1GZSgpLEp6ZT1MdigpLFF6ZT1mdW5jdGlvbihlKXskemUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fdGlja0dlbmVyYXRvcj1mdW5jdGlvbihuKXtyZXR1cm4gbi5kZWZhdWx0VGlja3MoKX0sci5fcGFkUHJvcG9ydGlvbj0uMDUsci5fc25hcHBpbmdEb21haW5FbmFibGVkPSEwLHIuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzPW5ldyBNUy5TZXQscn1yZXR1cm4gdC5wcm90b3R5cGUuYXV0b0RvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb21haW5NaW49bnVsbCx0aGlzLl9kb21haW5NYXg9bnVsbCxlLnByb3RvdHlwZS5hdXRvRG9tYWluLmNhbGwodGhpcyksdGhpc30sdC5wcm90b3R5cGUuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZT1mdW5jdGlvbigpe2lmKHRoaXMuX2RvbWFpbk1pbiE9bnVsbCYmdGhpcy5fZG9tYWluTWF4IT1udWxsKXt0aGlzLl9zZXREb21haW4oW3RoaXMuX2RvbWFpbk1pbix0aGlzLl9kb21haW5NYXhdKTtyZXR1cm59dmFyIHI9dGhpcy5fZ2V0RXh0ZW50KCk7aWYodGhpcy5fZG9tYWluTWluIT1udWxsKXt2YXIgbj1yWzFdO3RoaXMuX2RvbWFpbk1pbj49biYmKG49dGhpcy5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW4oW3RoaXMuX2RvbWFpbk1pbix0aGlzLl9kb21haW5NaW5dKVsxXSksdGhpcy5fc2V0RG9tYWluKFt0aGlzLl9kb21haW5NaW4sbl0pO3JldHVybn1pZih0aGlzLl9kb21haW5NYXghPW51bGwpe3ZhciBpPXJbMF07dGhpcy5fZG9tYWluTWF4PD1pJiYoaT10aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihbdGhpcy5fZG9tYWluTWF4LHRoaXMuX2RvbWFpbk1heF0pWzBdKSx0aGlzLl9zZXREb21haW4oW2ksdGhpcy5fZG9tYWluTWF4XSk7cmV0dXJufWUucHJvdG90eXBlLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUuY2FsbCh0aGlzKX0sdC5wcm90b3R5cGUuX2dldFVuYm91bmRlZEV4dGVudD1mdW5jdGlvbihyKXtyPT09dm9pZCAwJiYocj0hMSk7dmFyIG49dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMociksaT10aGlzLl9kZWZhdWx0RXh0ZW50KCk7aWYobi5sZW5ndGghPT0wKXt2YXIgbz1bTVMuTWF0aC5taW4obixpWzBdKSxNUy5NYXRoLm1heChuLGlbMV0pXTtpPXRoaXMuX3BhZERvbWFpbihvKX1yZXR1cm4gaX0sdC5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3ZhciByPXRoaXMuX2dldFVuYm91bmRlZEV4dGVudCgpO3JldHVybiB0aGlzLl9kb21haW5NaW4hPW51bGwmJihyWzBdPXRoaXMuX2RvbWFpbk1pbiksdGhpcy5fZG9tYWluTWF4IT1udWxsJiYoclsxXT10aGlzLl9kb21haW5NYXgpLHJ9LHQucHJvdG90eXBlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzLmFkZChyKSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmVQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5kZWxldGUociksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sdC5wcm90b3R5cGUucGFkUHJvcG9ydGlvbj1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl9wYWRQcm9wb3J0aW9uO2lmKHI8MCl0aHJvdyBuZXcgRXJyb3IoInBhZFByb3BvcnRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUiKTtyZXR1cm4gdGhpcy5fcGFkUHJvcG9ydGlvbj1yLHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LHQucHJvdG90eXBlLl9wYWREb21haW49ZnVuY3Rpb24ocil7dmFyIG49dGhpcztpZihyWzBdLnZhbHVlT2YoKT09PXJbMV0udmFsdWVPZigpKXJldHVybiB0aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihyKTtpZih0aGlzLl9wYWRQcm9wb3J0aW9uPT09MClyZXR1cm4gcjt2YXIgaT10aGlzLl9wYWRQcm9wb3J0aW9uLzIsbz1yWzBdLGE9clsxXSxzPSExLGw9ITE7dGhpcy5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnMuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcD1mKG4pO3AuZm9yRWFjaChmdW5jdGlvbihkKXtkLnZhbHVlT2YoKT09PW8udmFsdWVPZigpJiYocz0hMCksZC52YWx1ZU9mKCk9PT1hLnZhbHVlT2YoKSYmKGw9ITApfSl9KTt2YXIgYz10aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKTt0aGlzLl9iYWNraW5nU2NhbGVEb21haW4ocik7dmFyIHU9cz9vOnRoaXMuaW52ZXJ0KHRoaXMuc2NhbGUobyktKHRoaXMuc2NhbGUoYSktdGhpcy5zY2FsZShvKSkqaSksaD1sP2E6dGhpcy5pbnZlcnQodGhpcy5zY2FsZShhKSsodGhpcy5zY2FsZShhKS10aGlzLnNjYWxlKG8pKSppKTtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKGMpLHRoaXMuX3NuYXBwaW5nRG9tYWluRW5hYmxlZD90aGlzLl9uaWNlRG9tYWluKFt1LGhdKTpbdSxoXX0sdC5wcm90b3R5cGUuc25hcHBpbmdEb21haW5FbmFibGVkPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX3NuYXBwaW5nRG9tYWluRW5hYmxlZDoodGhpcy5fc25hcHBpbmdEb21haW5FbmFibGVkPXIsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcyl9LHQucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbihyKXtyZXR1cm4gcn0sdC5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHIpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgaW52ZXJ0Iil9LHQucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbihyKXtyZXR1cm4gciE9bnVsbCYmKHRoaXMuX2RvbWFpbk1pbj1yWzBdLHRoaXMuX2RvbWFpbk1heD1yWzFdKSxlLnByb3RvdHlwZS5kb21haW4uY2FsbCh0aGlzLHIpfSx0LnByb3RvdHlwZS5kb21haW5NaW49ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5kb21haW4oKVswXToodGhpcy5fZG9tYWluTWluPXIsdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcyl9LHQucHJvdG90eXBlLmRvbWFpbk1heD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLmRvbWFpbigpWzFdOih0aGlzLl9kb21haW5NYXg9cix0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzKX0sdC5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24ocil7dmFyIG49S3plLmV4dGVudChyLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gTVMuTWF0aC5pc1ZhbGlkTnVtYmVyKCtpKX0pKTtyZXR1cm4gblswXT09bnVsbHx8blsxXT09bnVsbD9bXTpufSx0LnByb3RvdHlwZS56b29tPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcyxvPWZ1bmN0aW9uKGEpe3JldHVybiBpLmludmVydChaemUuem9vbU91dChhLHIsbikpfTt0aGlzLmRvbWFpbih0aGlzLnJhbmdlKCkubWFwKG8pKX0sdC5wcm90b3R5cGUucGFuPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMsaT1mdW5jdGlvbihvKXtyZXR1cm4gbi5pbnZlcnQobytyKX07dGhpcy5kb21haW4odGhpcy5yYW5nZSgpLm1hcChpKSl9LHQucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24ocil7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzY2FsZVRyYW5zZm9ybWF0aW9uIil9LHQucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24ocil7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnRlZFRyYW5zZm9ybWF0aW9uIil9LHQucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBnZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCIpfSx0LnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4iKX0sdC5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24ocil7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbiIpfSx0LnByb3RvdHlwZS5fc2V0RG9tYWluPWZ1bmN0aW9uKHIpe3ZhciBuPWZ1bmN0aW9uKGkpe3JldHVybiBNUy5NYXRoLmlzTmFOKGkpfHxpPT09MS8wfHxpPT09LTEvMH07aWYobihyWzBdKXx8bihyWzFdKSl7TVMuV2luZG93Lndhcm4oIldhcm5pbmc6IFF1YW50aXRhdGl2ZVNjYWxlcyBjYW5ub3QgdGFrZSBOYU4gb3IgSW5maW5pdHkgYXMgYSBkb21haW4gdmFsdWUuIElnbm9yaW5nLiIpO3JldHVybn1lLnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxyKX0sdC5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RGVmYXVsdFRpY2tzIil9LHQucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpY2tHZW5lcmF0b3IodGhpcyl9LHQucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHIsbil7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfbmljZURvbWFpbiIpfSx0LnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2RlZmF1bHRFeHRlbnQiKX0sdC5wcm90b3R5cGUudGlja0dlbmVyYXRvcj1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl90aWNrR2VuZXJhdG9yOih0aGlzLl90aWNrR2VuZXJhdG9yPXIsdGhpcyl9LHQuX0RFRkFVTFRfTlVNX1RJQ0tTPTEwLHR9KEp6ZS5TY2FsZSk7bm90LlF1YW50aXRhdGl2ZVNjYWxlPVF6ZX0pO3ZhciBaWHQ9SChpb3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGlvdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHRGZT0oZGUoKSxVdChwZSkpLGVGZT0oRXIoKSxVdChNcikpLHJGZT12ZCgpLG5GZT1mdW5jdGlvbihlKXt0RmUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fZDNTY2FsZT1lRmUuc2NhbGVMaW5lYXIoKSxyfXJldHVybiB0LnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblswLDFdfSx0LnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIHJbMF09PT1yWzFdP1tyWzBdLTEsclsxXSsxXTpyfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZDNTY2FsZShyKX0sdC5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5zY2FsZShyKX0sdC5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5pbnZlcnQocil9LHQucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LHQucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LHQucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHIpe3RoaXMuZG9tYWluKHIpfSx0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSx0LnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHIpLHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfSx0LnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24ocil7dGhpcy5fZDNTY2FsZS5yYW5nZShyKX0sdC5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kM1NjYWxlLmludmVydChyKX0sdC5wcm90b3R5cGUuZGVmYXVsdFRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUudGlja3ModC5fREVGQVVMVF9OVU1fVElDS1MpfSx0LnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLl9kM1NjYWxlLmNvcHkoKS5kb21haW4ocikubmljZShuKS5kb21haW4oKX0sdH0ockZlLlF1YW50aXRhdGl2ZVNjYWxlKTtpb3QuTGluZWFyPW5GZX0pO3ZhciBKWHQ9SChvb3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG9vdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGlGZT0oZGUoKSxVdChwZSkpLG9GZT0oRXIoKSxVdChNcikpLGFGZT12ZCgpLHNGZT1mdW5jdGlvbihlKXtpRmUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdChyKXtyPT09dm9pZCAwJiYocj0xMCk7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9kM1NjYWxlPW9GZS5zY2FsZUxvZygpLmJhc2Uociksbi5fc2V0RG9tYWluKG4uX2RlZmF1bHRFeHRlbnQoKSksbn1yZXR1cm4gdC5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bMSx0aGlzLl9kM1NjYWxlLmJhc2UoKV19LHQucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbihyKXtyZXR1cm4gclswXT09PXJbMV0/W3JbMF0vdGhpcy5fZDNTY2FsZS5iYXNlKCksclsxXSp0aGlzLl9kM1NjYWxlLmJhc2UoKV06cn0sdC5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2QzU2NhbGUocil9LHQucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuc2NhbGUocil9LHQucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuaW52ZXJ0KHIpfSx0LnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfSx0LnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbWFpbigpfSx0LnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbihyKXt0aGlzLmRvbWFpbihyKX0sdC5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sdC5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbihyKSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sdC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHIpe3RoaXMuX2QzU2NhbGUucmFuZ2Uocil9LHQucHJvdG90eXBlLmludmVydD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5pbnZlcnQocil9LHQucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKHQuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sdC5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5jb3B5KCkuZG9tYWluKHIpLm5pY2UoKS5kb21haW4oKX0sdH0oYUZlLlF1YW50aXRhdGl2ZVNjYWxlKTtvb3QuTG9nPXNGZX0pO3ZhciBRWHQ9SChzb3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHNvdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGxGZT0oZGUoKSxVdChwZSkpLFFBPShFcigpLFV0KE1yKSksRVM9RmUoKSxhb3Q9THMoKSxjRmU9dmQoKSx1RmU9ZnVuY3Rpb24oZSl7bEZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cj09PXZvaWQgMCYmKHI9MTApO3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztpZihuLl9sb2dUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uKGkpe3ZhciBvPWZ1bmN0aW9uKHgsYixTKXtyZXR1cm5beCxiLFNdLnNvcnQoZnVuY3Rpb24oQyxQKXtyZXR1cm4gQy1QfSlbMV19LGE9RVMuTWF0aC5taW4obi5fdW50cmFuc2Zvcm1lZERvbWFpbiwwKSxzPUVTLk1hdGgubWF4KG4uX3VudHJhbnNmb3JtZWREb21haW4sMCksbD1hLGM9byhhLHMsLW4uX3Bpdm90KSx1PW8oYSxzLG4uX3Bpdm90KSxoPXMsZj1uLl9sb2dUaWNrcygtYywtbCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybi14fSkucmV2ZXJzZSgpLHA9bi5fbG9nVGlja3ModSxoKSxkPU1hdGgubWF4KGEsLW4uX3Bpdm90KSxnPU1hdGgubWluKHMsbi5fcGl2b3QpLF89UUEuc2NhbGVMaW5lYXIoKS5kb21haW4oW2QsZ10pLnRpY2tzKG4uX2hvd01hbnlUaWNrcyhkLGcpKSx5PWYuY29uY2F0KF8pLmNvbmNhdChwKTtyZXR1cm4geS5sZW5ndGg8PTEmJih5PVFBLnNjYWxlTGluZWFyKCkuZG9tYWluKFthLHNdKS50aWNrcyhhb3QuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKSkseX0sbi5fZDNTY2FsZT1RQS5zY2FsZUxpbmVhcigpLG4uX2Jhc2U9cixuLl9waXZvdD1uLl9iYXNlLG4uX3NldERvbWFpbihuLl9kZWZhdWx0RXh0ZW50KCkpLG4udGlja0dlbmVyYXRvcihuLl9sb2dUaWNrR2VuZXJhdG9yKSxyPD0xKXRocm93IG5ldyBFcnJvcigiTW9kaWZpZWRMb2dTY2FsZTogVGhlIGJhc2UgbXVzdCBiZSA+IDEiKTtyZXR1cm4gbn1yZXR1cm4gdC5wcm90b3R5cGUuX2FkanVzdGVkTG9nPWZ1bmN0aW9uKHIpe3ZhciBuPXI8MD8tMToxO3JldHVybiByKj1uLHI8dGhpcy5fcGl2b3QmJihyKz0odGhpcy5fcGl2b3QtcikvdGhpcy5fcGl2b3QpLHI9TWF0aC5sb2cocikvTWF0aC5sb2codGhpcy5fYmFzZSkscio9bixyfSx0LnByb3RvdHlwZS5faW52ZXJ0ZWRBZGp1c3RlZExvZz1mdW5jdGlvbihyKXt2YXIgbj1yPDA/LTE6MTtyZXR1cm4gcio9bixyPU1hdGgucG93KHRoaXMuX2Jhc2Uscikscjx0aGlzLl9waXZvdCYmKHI9dGhpcy5fcGl2b3QqKHItMSkvKHRoaXMuX3Bpdm90LTEpKSxyKj1uLHJ9LHQucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kM1NjYWxlKHRoaXMuX2FkanVzdGVkTG9nKHIpKX0sdC5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9pbnZlcnRlZEFkanVzdGVkTG9nKHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHIpKX0sdC5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5zY2FsZShyKX0sdC5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5pbnZlcnQocil9LHQucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9LHQucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LHQucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHIpe3RoaXMuZG9tYWluKHIpfSx0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VudHJhbnNmb3JtZWREb21haW59LHQucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24ocil7dGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbj1yO3ZhciBuPVt0aGlzLl9hZGp1c3RlZExvZyhyWzBdKSx0aGlzLl9hZGp1c3RlZExvZyhyWzFdKV07ZS5wcm90b3R5cGUuX3NldERvbWFpbi5jYWxsKHRoaXMsbil9LHQucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4ociksdGhpcyl9LHQucHJvdG90eXBlLl9sb2dUaWNrcz1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMsbz10aGlzLl9ob3dNYW55VGlja3MocixuKTtpZihvPT09MClyZXR1cm5bXTt2YXIgYT1NYXRoLmZsb29yKE1hdGgubG9nKHIpL01hdGgubG9nKHRoaXMuX2Jhc2UpKSxzPU1hdGguY2VpbChNYXRoLmxvZyhuKS9NYXRoLmxvZyh0aGlzLl9iYXNlKSksbD1RQS5yYW5nZShzLGEsLU1hdGguY2VpbCgocy1hKS9vKSksYz1RQS5yYW5nZSh0aGlzLl9iYXNlLDEsLSh0aGlzLl9iYXNlLTEpKS5tYXAoTWF0aC5mbG9vciksdT1FUy5BcnJheS51bmlxKGMpLGg9bC5tYXAoZnVuY3Rpb24oZyl7cmV0dXJuIHUubWFwKGZ1bmN0aW9uKF8pe3JldHVybiBNYXRoLnBvdyhpLl9iYXNlLGctMSkqX30pfSksZj1FUy5BcnJheS5mbGF0dGVuKGgpLHA9Zi5maWx0ZXIoZnVuY3Rpb24oZyl7cmV0dXJuIHI8PWcmJmc8PW59KSxkPXAuc29ydChmdW5jdGlvbihnLF8pe3JldHVybiBnLV99KTtyZXR1cm4gZH0sdC5wcm90b3R5cGUuX2hvd01hbnlUaWNrcz1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMuX2FkanVzdGVkTG9nKEVTLk1hdGgubWluKHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCkpLG89dGhpcy5fYWRqdXN0ZWRMb2coRVMuTWF0aC5tYXgodGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbiwwKSksYT10aGlzLl9hZGp1c3RlZExvZyhyKSxzPXRoaXMuX2FkanVzdGVkTG9nKG4pLGw9KHMtYSkvKG8taSksYz1NYXRoLmNlaWwobCphb3QuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKTtyZXR1cm4gY30sdC5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24ocixuKXtyZXR1cm4gcn0sdC5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bMCx0aGlzLl9iYXNlXX0sdC5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHIpe2lmKHJbMF09PT1yWzFdKXt2YXIgbj1yWzBdO3JldHVybiBuPjA/W24vdGhpcy5fYmFzZSxuKnRoaXMuX2Jhc2VdOm49PT0wP1stdGhpcy5fYmFzZSx0aGlzLl9iYXNlXTpbbip0aGlzLl9iYXNlLG4vdGhpcy5fYmFzZV19cmV0dXJuIHJ9LHQucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LHQucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbihyKXt0aGlzLl9kM1NjYWxlLnJhbmdlKHIpfSx0LnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhhb3QuTW9kaWZpZWRMb2cuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sdH0oY0ZlLlF1YW50aXRhdGl2ZVNjYWxlKTtzb3QuTW9kaWZpZWRMb2c9dUZlfSk7dmFyIHQkdD1IKGxvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobG90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaEZlPShkZSgpLFV0KHBlKSksbWE9KEVyKCksVXQoTXIpKSxrdj16RigpLGZGZT12ZCgpLHBGZT1mdW5jdGlvbihlKXtoRmUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fZDNTY2FsZT1tYS5zY2FsZVRpbWUoKSxyLmF1dG9Eb21haW4oKSxyfXJldHVybiB0LnByb3RvdHlwZS50aWNrSW50ZXJ2YWw9ZnVuY3Rpb24ocixuLGkpe249PT12b2lkIDAmJihuPTEpLGk9PT12b2lkIDAmJihpPSExKTt2YXIgbz1tYS5zY2FsZVRpbWUoKSxhPXQudGltZUludGVydmFsVG9EM1RpbWUocixpKS5ldmVyeShuKTtyZXR1cm4gby5kb21haW4odGhpcy5kb21haW4oKSksby5yYW5nZSh0aGlzLnJhbmdlKCkpLG8udGlja3MoYSl9LHQucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24ocil7aWYoclsxXTxyWzBdKXRocm93IG5ldyBFcnJvcigiU2NhbGUuVGltZSBkb21haW4gdmFsdWVzIG11c3QgYmUgaW4gY2hyb25vbG9naWNhbCBvcmRlciIpO3JldHVybiBlLnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxyKX0sdC5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bbmV3IERhdGUoIjE5NzAtMDEtMDEiKSxuZXcgRGF0ZSgiMTk3MC0wMS0wMiIpXX0sdC5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHIpe3ZhciBuPXJbMF0uZ2V0VGltZSgpLGk9clsxXS5nZXRUaW1lKCk7aWYobj09PWkpe3ZhciBvPW5ldyBEYXRlKG4pO28uc2V0RGF0ZShvLmdldERhdGUoKS0xKTt2YXIgYT1uZXcgRGF0ZShpKTtyZXR1cm4gYS5zZXREYXRlKGEuZ2V0RGF0ZSgpKzEpLFtvLGFdfXJldHVybiByfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZDNTY2FsZShyKX0sdC5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5zY2FsZShuZXcgRGF0ZShyKSl9LHQucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuaW52ZXJ0KHIpLmdldFRpbWUoKX0sdC5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApO3JldHVybltyWzBdLnZhbHVlT2YoKSxyWzFdLnZhbHVlT2YoKV19LHQucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5kb21haW4oKTtyZXR1cm5bclswXS52YWx1ZU9mKCksclsxXS52YWx1ZU9mKCldfSx0LnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbihyKXt2YXIgbj1yWzBdLGk9clsxXTt0aGlzLmRvbWFpbihbbmV3IERhdGUobiksbmV3IERhdGUoaSldKX0sdC5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sdC5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbihyKSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sdC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHIpe3RoaXMuX2QzU2NhbGUucmFuZ2Uocil9LHQucHJvdG90eXBlLmludmVydD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5pbnZlcnQocil9LHQucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKHQuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sdC5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2QzU2NhbGUuY29weSgpLmRvbWFpbihyKS5uaWNlKCkuZG9tYWluKCl9LHQudGltZUludGVydmFsVG9EM1RpbWU9ZnVuY3Rpb24ocixuKXtzd2l0Y2gocil7Y2FzZSBrdi5UaW1lSW50ZXJ2YWwuc2Vjb25kOnJldHVybiBuP21hLnV0Y1NlY29uZDptYS50aW1lU2Vjb25kO2Nhc2Uga3YuVGltZUludGVydmFsLm1pbnV0ZTpyZXR1cm4gbj9tYS51dGNNaW51dGU6bWEudGltZU1pbnV0ZTtjYXNlIGt2LlRpbWVJbnRlcnZhbC5ob3VyOnJldHVybiBuP21hLnV0Y0hvdXI6bWEudGltZUhvdXI7Y2FzZSBrdi5UaW1lSW50ZXJ2YWwuZGF5OnJldHVybiBuP21hLnV0Y0RheTptYS50aW1lRGF5O2Nhc2Uga3YuVGltZUludGVydmFsLndlZWs6cmV0dXJuIG4/bWEudXRjV2VlazptYS50aW1lV2VlaztjYXNlIGt2LlRpbWVJbnRlcnZhbC5tb250aDpyZXR1cm4gbj9tYS51dGNNb250aDptYS50aW1lTW9udGg7Y2FzZSBrdi5UaW1lSW50ZXJ2YWwueWVhcjpyZXR1cm4gbj9tYS51dGNZZWFyOm1hLnRpbWVZZWFyO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlRpbWVJbnRlcnZhbCBzcGVjaWZpZWQgZG9lcyBub3QgZXhpc3Q6ICIrcil9fSx0fShmRmUuUXVhbnRpdGF0aXZlU2NhbGUpO2xvdC5UaW1lPXBGZX0pO3ZhciBMcz1IKEJ1PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCdSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFJ2PShkZSgpLFV0KHBlKSksZEZlPVVYdCgpO0J1LlRpY2tHZW5lcmF0b3JzPWRGZTtSdi5fX2V4cG9ydFN0YXIodG90KCksQnUpO1J2Ll9fZXhwb3J0U3RhcihYWHQoKSxCdSk7UnYuX19leHBvcnRTdGFyKEtYdCgpLEJ1KTtSdi5fX2V4cG9ydFN0YXIoWlh0KCksQnUpO1J2Ll9fZXhwb3J0U3RhcihKWHQoKSxCdSk7UnYuX19leHBvcnRTdGFyKFFYdCgpLEJ1KTtSdi5fX2V4cG9ydFN0YXIodCR0KCksQnUpO3ZhciBtRmU9dG90KCksZ0ZlPXZkKCk7ZnVuY3Rpb24gX0ZlKGUpe3JldHVybiBlIGluc3RhbmNlb2YgZ0ZlLlF1YW50aXRhdGl2ZVNjYWxlfHxlIGluc3RhbmNlb2YgbUZlLkNhdGVnb3J5fUJ1LmlzVHJhbnNmb3JtYWJsZT1fRmV9KTt2YXIgekY9SChTZT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoU2UsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB5RmU9KGRlKCksVXQocGUpKSxIdT0oRXIoKSxVdChNcikpLGUkdD1nbCgpLHIkdD1GdSgpLHZGZT1McygpLHQ0PUZlKCksY290PVBmKCksUWE9WkEoKTtTZS5UaW1lSW50ZXJ2YWw9Y290Lm1ha2VFbnVtKFsic2Vjb25kIiwibWludXRlIiwiaG91ciIsImRheSIsIndlZWsiLCJtb250aCIsInllYXIiXSk7U2UuVGltZUF4aXNPcmllbnRhdGlvbj1jb3QubWFrZUVudW0oWyJ0b3AiLCJib3R0b20iXSk7U2UuVGllckxhYmVsUG9zaXRpb249Y290Lm1ha2VFbnVtKFsiYmV0d2VlbiIsImNlbnRlciJdKTt2YXIgeEZlPWZ1bmN0aW9uKGUpe3lGZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KHIsbixpKXt2YXIgbz1lLmNhbGwodGhpcyxyLG4pfHx0aGlzO3JldHVybiBvLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249bnVsbCxvLl90aWVyTGFiZWxQb3NpdGlvbnM9W10sby5fdXNlVVRDPWksby5hZGRDbGFzcygidGltZS1heGlzIiksby50aWNrTGFiZWxQYWRkaW5nKDUpLG8uYXhpc0NvbmZpZ3VyYXRpb25zKHQuX0RFRkFVTFRfVElNRV9BWElTX0NPTkZJR1VSQVRJT05TKG8uX3VzZVVUQykpLG8uYW5ub3RhdGlvbkZvcm1hdHRlcihyJHQudGltZSgiJWEgJWIgJWQsICVZIixvLl91c2VVVEMpKSxvfXJldHVybiB0LnByb3RvdHlwZS50aWVyTGFiZWxQb3NpdGlvbnM9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fdGllckxhYmVsUG9zaXRpb25zO2lmKCFyLmV2ZXJ5KGZ1bmN0aW9uKG4pe3JldHVybiBuLnRvTG93ZXJDYXNlKCk9PT0iYmV0d2VlbiJ8fG4udG9Mb3dlckNhc2UoKT09PSJjZW50ZXIifSkpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBwb3NpdGlvbiBmb3IgdGllciBsYWJlbHMiKTtyZXR1cm4gdGhpcy5fdGllckxhYmVsUG9zaXRpb25zPXIsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uOih0aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5jdXJyZW50QXhpc0NvbmZpZ3VyYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXhdfSx0LnByb3RvdHlwZS5heGlzQ29uZmlndXJhdGlvbnM9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zO3RoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucz1yLHRoaXMuX251bVRpZXJzPXQ0Lk1hdGgubWF4KHRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEubGVuZ3RofSksMCksdGhpcy5faXNBbmNob3JlZCYmdGhpcy5fc2V0dXBEb21FbGVtZW50cygpO2Zvcih2YXIgbj10aGlzLnRpZXJMYWJlbFBvc2l0aW9ucygpLGk9W10sbz0wO288dGhpcy5fbnVtVGllcnM7bysrKWkucHVzaChuW29dfHwiYmV0d2VlbiIpO3JldHVybiB0aGlzLnRpZXJMYWJlbFBvc2l0aW9ucyhpKSx0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLl9nZXRNb3N0UHJlY2lzZUNvbmZpZ3VyYXRpb25JbmRleD1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj10aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnMubGVuZ3RoO3JldHVybiB0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihpLG8pe288biYmaS5ldmVyeShmdW5jdGlvbihhKXtyZXR1cm4gci5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uKGEpfSkmJihuPW8pfSksbj09PXRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucy5sZW5ndGgmJih0NC5XaW5kb3cud2Fybigiem9vbWVkIG91dCB0b28gZmFyOiBjb3VsZCBub3QgZmluZCBzdWl0YWJsZSBpbnRlcnZhbCB0byBkaXNwbGF5IGxhYmVscyIpLC0tbiksbn0sdC5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24ocil7aWYociYmKHIudG9Mb3dlckNhc2UoKT09PSJyaWdodCJ8fHIudG9Mb3dlckNhc2UoKT09PSJsZWZ0IikpdGhyb3cgbmV3IEVycm9yKHIrIiBpcyBub3QgYSBzdXBwb3J0ZWQgb3JpZW50YXRpb24gZm9yIFRpbWVBeGlzIC0gb25seSBob3Jpem9udGFsIG9yaWVudGF0aW9ucyBhcmUgc3VwcG9ydGVkIik7cmV0dXJuIGUucHJvdG90eXBlLm9yaWVudGF0aW9uLmNhbGwodGhpcyxyKX0sdC5wcm90b3R5cGUuX2NvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0O3RoaXMuX3RpZXJIZWlnaHRzPVtdO2Zvcih2YXIgbj0wO248dGhpcy5fbnVtVGllcnM7bisrKXRoaXMuX3RpZXJIZWlnaHRzLnB1c2gocit0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSsodGhpcy5fdGllckxhYmVsUG9zaXRpb25zW25dPT09ImJldHdlZW4iPzA6dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkpKTtyZXR1cm4gSHUuc3VtKHRoaXMuX3RpZXJIZWlnaHRzKX0sdC5wcm90b3R5cGUuX2dldEludGVydmFsTGVuZ3RoPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuX3NjYWxlLmRvbWFpbigpWzBdLGk9dkZlLlRpbWUudGltZUludGVydmFsVG9EM1RpbWUoci5pbnRlcnZhbCx0aGlzLl91c2VVVEMpLG89aS5vZmZzZXQobixyLnN0ZXApO2lmKG8+dGhpcy5fc2NhbGUuZG9tYWluKClbMV0pcmV0dXJuIHRoaXMud2lkdGgoKTt2YXIgYT1NYXRoLmFicyh0aGlzLl9zY2FsZS5zY2FsZShvKS10aGlzLl9zY2FsZS5zY2FsZShuKSk7cmV0dXJuIGF9LHQucHJvdG90eXBlLl9tYXhXaWR0aEZvckludGVydmFsPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9tZWFzdXJlci5tZWFzdXJlKHIuZm9ybWF0dGVyKHQuX0xPTkdfREFURSkpLndpZHRofSx0LnByb3RvdHlwZS5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uPWZ1bmN0aW9uKHIpe2lmKHRoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbiE9bnVsbCl7dmFyIG49dC5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVhbdGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uXSxpPXQuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYW3IuaW50ZXJ2YWxdO2lmKG4hPW51bGwmJmkhPW51bGwmJmk8bilyZXR1cm4hMX12YXIgbz10aGlzLl9tYXhXaWR0aEZvckludGVydmFsKHIpKzIqdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7cmV0dXJuIE1hdGgubWluKHRoaXMuX2dldEludGVydmFsTGVuZ3RoKHIpLHRoaXMud2lkdGgoKSk+PW99LHQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHIsbil7dmFyIGk9ZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLHIsbiksbz10aGlzLl90aWVySGVpZ2h0cy5yZWR1Y2UoZnVuY3Rpb24ocyxsLGMsdSl7cmV0dXJuIHMrbD5pLmhlaWdodD9zOnMrbH0pLGE9dGhpcy5tYXJnaW4oKSsodGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLmFubm90YXRpb25UaWVyQ291bnQoKSp0aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpOjApO3JldHVybiBpLmhlaWdodD1NYXRoLm1pbihpLmhlaWdodCxvK2EpLGl9LHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe2UucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3NldHVwRG9tRWxlbWVudHMoKX0sdC5wcm90b3R5cGUuX3NldHVwRG9tRWxlbWVudHM9ZnVuY3Rpb24oKXt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIi4iK3QuVElNRV9BWElTX1RJRVJfQ0xBU1MpLnJlbW92ZSgpLHRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnM9W10sdGhpcy5fdGllck1hcmtDb250YWluZXJzPVtdLHRoaXMuX3RpZXJCYXNlbGluZXM9W10sdGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnJlbW92ZSgpLHRoaXMuX2Jhc2VsaW5lLnJlbW92ZSgpO2Zvcih2YXIgcj0wO3I8dGhpcy5fbnVtVGllcnM7KytyKXt2YXIgbj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKHQuVElNRV9BWElTX1RJRVJfQ0xBU1MsITApO3RoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnMucHVzaChuLmFwcGVuZCgiZyIpLmNsYXNzZWQoUWEuQXhpcy5USUNLX0xBQkVMX0NMQVNTKyItY29udGFpbmVyIiwhMCkpLHRoaXMuX3RpZXJNYXJrQ29udGFpbmVycy5wdXNoKG4uYXBwZW5kKCJnIikuY2xhc3NlZChRYS5BeGlzLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApKSx0aGlzLl90aWVyQmFzZWxpbmVzLnB1c2gobi5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApKX12YXIgaT1uZXcgZSR0LlN2Z0NvbnRleHQodGhpcy5fdGllckxhYmVsQ29udGFpbmVyc1swXS5ub2RlKCkpO3RoaXMuX21lYXN1cmVyPW5ldyBlJHQuQ2FjaGVNZWFzdXJlcihpKX0sdC5wcm90b3R5cGUuX2dldFRpY2tJbnRlcnZhbFZhbHVlcz1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fc2NhbGUudGlja0ludGVydmFsKHIuaW50ZXJ2YWwsci5zdGVwLHRoaXMuX3VzZVVUQyl9LHQucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXhdLnJlZHVjZShmdW5jdGlvbihuLGkpe3JldHVybiBuLmNvbmNhdChyLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXMoaSkpfSxbXSl9LHQucHJvdG90eXBlLl9jbGVhblRpZXJzPWZ1bmN0aW9uKCl7Zm9yKHZhciByPTA7cjx0aGlzLl90aWVyTGFiZWxDb250YWluZXJzLmxlbmd0aDtyKyspdGhpcy5fdGllckxhYmVsQ29udGFpbmVyc1tyXS5zZWxlY3RBbGwoIi4iK1FhLkF4aXMuVElDS19MQUJFTF9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllck1hcmtDb250YWluZXJzW3JdLnNlbGVjdEFsbCgiLiIrUWEuQXhpcy5USUNLX01BUktfQ0xBU1MpLnJlbW92ZSgpLHRoaXMuX3RpZXJCYXNlbGluZXNbcl0uc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0sdC5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuX3NjYWxlLnRpY2tJbnRlcnZhbChyLmludGVydmFsLHIuc3RlcCx0aGlzLl91c2VVVEMpLGk9dGhpcy5fc2NhbGUuZG9tYWluKCksbz1uLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS52YWx1ZU9mKCl9KTtyZXR1cm4gby5pbmRleE9mKGlbMF0udmFsdWVPZigpKT09PS0xJiZuLnVuc2hpZnQoaVswXSksby5pbmRleE9mKGlbMV0udmFsdWVPZigpKT09PS0xJiZuLnB1c2goaVsxXSksbn0sdC5wcm90b3R5cGUuX3JlbmRlclRpZXJMYWJlbHM9ZnVuY3Rpb24ocixuLGkpe3ZhciBvPXRoaXMsYT10aGlzLl9nZXRUaWNrVmFsdWVzRm9yQ29uZmlndXJhdGlvbihuKSxzPVtdO3RoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXT09PSJiZXR3ZWVuIiYmbi5zdGVwPT09MT9hLm1hcChmdW5jdGlvbihnLF8pe18rMT49YS5sZW5ndGh8fHMucHVzaChuZXcgRGF0ZSgoYVtfKzFdLnZhbHVlT2YoKS1hW19dLnZhbHVlT2YoKSkvMithW19dLnZhbHVlT2YoKSkpfSk6cz1hO3ZhciBsPXIuc2VsZWN0QWxsKCIuIitRYS5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEocyxmdW5jdGlvbihnKXtyZXR1cm4gU3RyaW5nKGcudmFsdWVPZigpKX0pLGM9bC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoUWEuQXhpcy5USUNLX0xBQkVMX0NMQVNTLCEwKTtjLmFwcGVuZCgidGV4dCIpO3ZhciB1PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXT09PSJjZW50ZXIifHxuLnN0ZXA9PT0xPzA6dGhpcy50aWNrTGFiZWxQYWRkaW5nKCksaDt0aGlzLm9yaWVudGF0aW9uKCk9PT0iYm90dG9tIj9oPUh1LnN1bSh0aGlzLl90aWVySGVpZ2h0cy5zbGljZSgwLGkrMSkpLXRoaXMudGlja0xhYmVsUGFkZGluZygpOnRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tpXT09PSJjZW50ZXIiP2g9dGhpcy5oZWlnaHQoKS1IdS5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxpKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCktdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCk6aD10aGlzLmhlaWdodCgpLUh1LnN1bSh0aGlzLl90aWVySGVpZ2h0cy5zbGljZSgwLGkpKS10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTt2YXIgZj1sLm1lcmdlKGMpLHA9Zi5zZWxlY3RBbGwoInRleHQiKTtwLnNpemUoKT4wJiZwLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3UrIiwiK2grIikiKSxsLmV4aXQoKS5yZW1vdmUoKSxmLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZyl7cmV0dXJuInRyYW5zbGF0ZSgiK28uX3NjYWxlLnNjYWxlKGcpKyIsMCkifSk7dmFyIGQ9dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2ldPT09ImNlbnRlciJ8fG4uc3RlcD09PTE/Im1pZGRsZSI6InN0YXJ0IjtmLnNlbGVjdEFsbCgidGV4dCIpLnRleHQobi5mb3JtYXR0ZXIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZCl9LHQucHJvdG90eXBlLl9yZW5kZXJUaWNrTWFya3M9ZnVuY3Rpb24ocixuKXt2YXIgaT10aGlzLl90aWVyTWFya0NvbnRhaW5lcnNbbl0uc2VsZWN0QWxsKCIuIitRYS5BeGlzLlRJQ0tfTUFSS19DTEFTUykuZGF0YShyKSxvPWkuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKFFhLkF4aXMuVElDS19NQVJLX0NMQVNTLCEwKS5tZXJnZShpKSxhPXRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpLHM9dGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxuKS5yZWR1Y2UoZnVuY3Rpb24obCxjKXtyZXR1cm4gbCtjfSwwKTt0aGlzLm9yaWVudGF0aW9uKCk9PT0iYm90dG9tIj8oYS55MT1zLGEueTI9cysodGhpcy5fdGllckxhYmVsUG9zaXRpb25zW25dPT09ImNlbnRlciI/dGhpcy5pbm5lclRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tuXSkpOihhLnkxPXRoaXMuaGVpZ2h0KCktcyxhLnkyPXRoaXMuaGVpZ2h0KCktKHMrKHRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tuXT09PSJjZW50ZXIiP3RoaXMuaW5uZXJUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbbl0pKSksby5hdHRycyhhKSx0aGlzLm9yaWVudGF0aW9uKCk9PT0iYm90dG9tIj8oYS55MT1zLGEueTI9cysodGhpcy5fdGllckxhYmVsUG9zaXRpb25zW25dPT09ImNlbnRlciI/dGhpcy5lbmRUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbbl0pKTooYS55MT10aGlzLmhlaWdodCgpLXMsYS55Mj10aGlzLmhlaWdodCgpLShzKyh0aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbbl09PT0iY2VudGVyIj90aGlzLmVuZFRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tuXSkpKSxIdS5zZWxlY3Qoby5ub2RlcygpWzBdKS5hdHRycyhhKSxIdS5zZWxlY3Qoby5ub2RlcygpW28uc2l6ZSgpLTFdKS5hdHRycyhhKSxIdS5zZWxlY3Qoby5ub2RlcygpWzBdKS5jbGFzc2VkKFFhLkF4aXMuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCksSHUuc2VsZWN0KG8ubm9kZXMoKVtvLnNpemUoKS0xXSkuY2xhc3NlZChRYS5BeGlzLkVORF9USUNLX01BUktfQ0xBU1MsITApLGkuZXhpdCgpLnJlbW92ZSgpfSx0LnByb3RvdHlwZS5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrUWEuQXhpcy5USUNLX01BUktfQ0xBU1MpLmRhdGEociksaT1uLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChRYS5BeGlzLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2Uobiksbz10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKTtvLnkyPXRoaXMub3JpZW50YXRpb24oKT09PSJib3R0b20iP3RoaXMudGlja0xhYmVsUGFkZGluZygpOnRoaXMuaGVpZ2h0KCktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCksaS5hdHRycyhvKSxuLmV4aXQoKS5yZW1vdmUoKX0sdC5wcm90b3R5cGUuX2dlbmVyYXRlTGFiZWxsZXNzVGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleDwxP1tdOnRoaXMuX2dldFRpY2tJbnRlcnZhbFZhbHVlcyh0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnNbdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleC0xXVswXSl9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIHI9dGhpczt0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4PXRoaXMuX2dldE1vc3RQcmVjaXNlQ29uZmlndXJhdGlvbkluZGV4KCk7dmFyIG49dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXhdO3RoaXMuX2NsZWFuVGllcnMoKSxuLmZvckVhY2goZnVuY3Rpb24oaCxmKXtyZXR1cm4gci5fcmVuZGVyVGllckxhYmVscyhyLl90aWVyTGFiZWxDb250YWluZXJzW2ZdLGgsZil9KTtmb3IodmFyIGk9bi5tYXAoZnVuY3Rpb24oaCxmKXtyZXR1cm4gci5fZ2V0VGlja1ZhbHVlc0ZvckNvbmZpZ3VyYXRpb24oaCl9KSxvPTAsYT0wO2E8TWF0aC5tYXgobi5sZW5ndGgsMSk7KythKXt2YXIgcz10aGlzLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2goKTtzLnkxKz10aGlzLm9yaWVudGF0aW9uKCk9PT0iYm90dG9tIj9vOi1vLHMueTI9cy55MSx0aGlzLl90aWVyQmFzZWxpbmVzW2FdLmF0dHJzKHMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpLG8rPXRoaXMuX3RpZXJIZWlnaHRzW2FdfXZhciBsPVtdLGM9dGhpcy5fc2NhbGUuZG9tYWluKCksdT10aGlzLl9zY2FsZS5zY2FsZShjWzFdKS10aGlzLl9zY2FsZS5zY2FsZShjWzBdKTt0aGlzLl9nZXRJbnRlcnZhbExlbmd0aChuWzBdKSoxLjU+PXUmJihsPXRoaXMuX2dlbmVyYXRlTGFiZWxsZXNzVGlja3MoKSksdGhpcy5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzKGwpLHRoaXMuX2hpZGVPdmVyZmxvd2luZ1RpZXJzKCk7Zm9yKHZhciBhPTA7YTxuLmxlbmd0aDsrK2EpdGhpcy5fcmVuZGVyVGlja01hcmtzKGlbYV0sYSksdGhpcy5faGlkZU92ZXJsYXBwaW5nQW5kQ3V0T2ZmTGFiZWxzKGEpO3JldHVybiB0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpP3RoaXMuX2RyYXdBbm5vdGF0aW9ucygpOnRoaXMuX3JlbW92ZUFubm90YXRpb25zKCksdGhpc30sdC5wcm90b3R5cGUuX2hpZGVPdmVyZmxvd2luZ1RpZXJzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPXRoaXMuaGVpZ2h0KCksaT0wO3RoaXMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIrdC5USU1FX0FYSVNfVElFUl9DTEFTUykuYXR0cigidmlzaWJpbGl0eSIsZnVuY3Rpb24obyxhKXtyZXR1cm4gaSs9ci5fdGllckhlaWdodHNbYV0saTw9bj8iaW5oZXJpdCI6ImhpZGRlbiJ9KX0sdC5wcm90b3R5cGUuX2hpZGVPdmVybGFwcGluZ0FuZEN1dE9mZkxhYmVscz1mdW5jdGlvbihyKXt2YXIgbj10aGlzLGk9dGhpcy5lbGVtZW50KCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89ZnVuY3Rpb24odSl7cmV0dXJuIE1hdGguZmxvb3IoaS5sZWZ0KTw9TWF0aC5jZWlsKHUubGVmdCkmJk1hdGguZmxvb3IoaS50b3ApPD1NYXRoLmNlaWwodS50b3ApJiZNYXRoLmZsb29yKHUucmlnaHQpPD1NYXRoLmNlaWwoaS5sZWZ0K24ud2lkdGgoKSkmJk1hdGguZmxvb3IodS5ib3R0b20pPD1NYXRoLmNlaWwoaS50b3Arbi5oZWlnaHQoKSl9LGE9dGhpcy5fdGllck1hcmtDb250YWluZXJzW3JdLnNlbGVjdEFsbCgiLiIrUWEuQXhpcy5USUNLX01BUktfQ0xBU1MpLmZpbHRlcihmdW5jdGlvbih1LGgpe3ZhciBmPUh1LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIpO3JldHVybiBmPT09InZpc2libGUifHxmPT09ImluaGVyaXQifSkscz1hLm5vZGVzKCkubWFwKGZ1bmN0aW9uKHUpe3JldHVybiB1LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSksbD10aGlzLl90aWVyTGFiZWxDb250YWluZXJzW3JdLnNlbGVjdEFsbCgiLiIrUWEuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5maWx0ZXIoZnVuY3Rpb24odSxoKXt2YXIgZj1IdS5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4gZj09PSJ2aXNpYmxlInx8Zj09PSJpbmhlcml0In0pLGM7bC5lYWNoKGZ1bmN0aW9uKHUsaCl7dmFyIGY9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxwPUh1LnNlbGVjdCh0aGlzKSxkPXNbaF0sZz1zW2grMV0sXz1jIT1udWxsJiZ0NC5ET00uY2xpZW50UmVjdHNPdmVybGFwKGYsYykseT1kIT1udWxsJiZ0NC5ET00uY2xpZW50UmVjdHNPdmVybGFwKGYsZCkseD1nIT1udWxsJiZ0NC5ET00uY2xpZW50UmVjdHNPdmVybGFwKGYsZyk7IW8oZil8fF98fHl8fHg/cC5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOihjPWYscC5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKSl9KX0sdC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sdC5USU1FX0FYSVNfVElFUl9DTEFTUz0idGltZS1heGlzLXRpZXIiLHQuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYPSh4ZD17fSx4ZFtTZS5UaW1lSW50ZXJ2YWwuc2Vjb25kXT0wLHhkW1NlLlRpbWVJbnRlcnZhbC5taW51dGVdPTEseGRbU2UuVGltZUludGVydmFsLmhvdXJdPTIseGRbU2UuVGltZUludGVydmFsLmRheV09Myx4ZFtTZS5UaW1lSW50ZXJ2YWwud2Vla109NCx4ZFtTZS5UaW1lSW50ZXJ2YWwubW9udGhdPTUseGRbU2UuVGltZUludGVydmFsLnllYXJdPTYseGQpLHQuX0RFRkFVTFRfVElNRV9BWElTX0NPTkZJR1VSQVRJT05TPWZ1bmN0aW9uKHIpe3ZhciBuPWZ1bmN0aW9uKGkpe3JldHVybiByJHQudGltZShpLHIpfTtyZXR1cm5bW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUk6JU06JVMgJXAiKX0se2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLnNlY29uZCxzdGVwOjUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxMCxmb3JtYXR0ZXI6bigiJUk6JU06JVMgJXAiKX0se2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLnNlY29uZCxzdGVwOjE1LGZvcm1hdHRlcjpuKCIlSTolTTolUyAlcCIpfSx7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MzAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6NSxmb3JtYXR0ZXI6bigiJUk6JU0gJXAiKX0se2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjEwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MTUsZm9ybWF0dGVyOm4oIiVJOiVNICVwIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDozMCxmb3JtYXR0ZXI6bigiJUk6JU0gJXAiKX0se2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLmhvdXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuaG91cixzdGVwOjMsZm9ybWF0dGVyOm4oIiVJICVwIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5ob3VyLHN0ZXA6Nixmb3JtYXR0ZXI6bigiJUkgJXAiKX0se2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLmhvdXIsc3RlcDoxMixmb3JtYXR0ZXI6bigiJUkgJXAiKX0se2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVhICVlIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJWUiKX0se2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjMsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjYsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIleSIpfV0sW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjUsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MjUsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NTAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MTAwLGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDpTZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjIwMCxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6U2UuVGltZUludGVydmFsLnllYXIsc3RlcDo1MDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOlNlLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MWUzLGZvcm1hdHRlcjpuKCIlWSIpfV1dfSx0Ll9MT05HX0RBVEU9bmV3IERhdGUoOTk5OSw4LDI5LDEyLDU5LDk5OTkpLHR9KFFhLkF4aXMpO1NlLlRpbWU9eEZlO3ZhciB4ZH0pO3ZhciBuJHQ9SChlND0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZTQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1b3Q9KGRlKCksVXQocGUpKTt1b3QuX19leHBvcnRTdGFyKEhYdCgpLGU0KTt1b3QuX19leHBvcnRTdGFyKFZYdCgpLGU0KTt1b3QuX19leHBvcnRTdGFyKHpGKCksZTQpfSk7dmFyIHI0PUgoaG90PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShob3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBiRmU9RmUoKSx3RmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbj17fSx0aGlzLl9ldmVudFRhcmdldD1kb2N1bWVudCx0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0PXt9LHRoaXMuX2Nvbm5lY3RlZD0hMX1yZXR1cm4gZS5wcm90b3R5cGUuX2hhc05vQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKHRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXQpLHI9MDtyPHQubGVuZ3RoO3IrKylpZih0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3Rbcl1dLnNpemUhPT0wKXJldHVybiExO3JldHVybiEwfSxlLnByb3RvdHlwZS5fY29ubmVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fY29ubmVjdGVkfHwoT2JqZWN0LmtleXModGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbikuZm9yRWFjaChmdW5jdGlvbihyKXt2YXIgbj10Ll9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3JdLGk9cj09PSJ3aGVlbCI/e3Bhc3NpdmU6ITF9OnZvaWQgMDt0Ll9ldmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKHIsbixpKX0pLHRoaXMuX2Nvbm5lY3RlZD0hMCl9LGUucHJvdG90eXBlLl9kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9jb25uZWN0ZWQmJnRoaXMuX2hhc05vQ2FsbGJhY2tzKCkmJihPYmplY3Qua2V5cyh0aGlzLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ZhciBuPXQuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bcl07dC5fZXZlbnRUYXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLG4pfSksdGhpcy5fY29ubmVjdGVkPSExKX0sZS5wcm90b3R5cGUuX2FkZENhbGxiYWNrRm9yRXZlbnQ9ZnVuY3Rpb24odCxyKXt0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdPT1udWxsJiYodGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XT1uZXcgYkZlLkNhbGxiYWNrU2V0KSx0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdLmFkZChyKSx0aGlzLl9jb25uZWN0KCl9LGUucHJvdG90eXBlLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50PWZ1bmN0aW9uKHQscil7dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XSE9bnVsbCYmdGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XS5kZWxldGUociksdGhpcy5fZGlzY29ubmVjdCgpfSxlLnByb3RvdHlwZS5fY2FsbENhbGxiYWNrc0ZvckV2ZW50PWZ1bmN0aW9uKHQpe2Zvcih2YXIgcj1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKylyW24tMV09YXJndW1lbnRzW25dO3ZhciBpPXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF07aSE9bnVsbCYmaS5jYWxsQ2FsbGJhY2tzLmFwcGx5KGkscil9LGV9KCk7aG90LkRpc3BhdGNoZXI9d0ZlfSk7dmFyIGkkdD1IKGZvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZm90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgU0ZlPShkZSgpLFV0KHBlKSksTUZlPXI0KCksRUZlPWZ1bmN0aW9uKGUpe1NGZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3QuX0tFWURPV05fRVZFTlRfTkFNRV09ZnVuY3Rpb24obil7cmV0dXJuIHIuX3Byb2Nlc3NLZXlkb3duKG4pfSxyLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3QuX0tFWVVQX0VWRU5UX05BTUVdPWZ1bmN0aW9uKG4pe3JldHVybiByLl9wcm9jZXNzS2V5dXAobil9LHJ9cmV0dXJuIHQuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbigpe3ZhciByPWRvY3VtZW50W3QuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gcj09bnVsbCYmKHI9bmV3IHQsZG9jdW1lbnRbdC5fRElTUEFUQ0hFUl9LRVldPXIpLHJ9LHQucHJvdG90eXBlLl9wcm9jZXNzS2V5ZG93bj1mdW5jdGlvbihyKXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQodC5fS0VZRE9XTl9FVkVOVF9OQU1FLHIua2V5Q29kZSxyKX0sdC5wcm90b3R5cGUuX3Byb2Nlc3NLZXl1cD1mdW5jdGlvbihyKXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQodC5fS0VZVVBfRVZFTlRfTkFNRSxyLmtleUNvZGUscil9LHQucHJvdG90eXBlLm9uS2V5RG93bj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudCh0Ll9LRVlET1dOX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUub2ZmS2V5RG93bj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudCh0Ll9LRVlET1dOX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUub25LZXlVcD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudCh0Ll9LRVlVUF9FVkVOVF9OQU1FLHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZktleVVwPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHQuX0tFWVVQX0VWRU5UX05BTUUsciksdGhpc30sdC5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfS2V5Iix0Ll9LRVlET1dOX0VWRU5UX05BTUU9ImtleWRvd24iLHQuX0tFWVVQX0VWRU5UX05BTUU9ImtleXVwIix0fShNRmUuRGlzcGF0Y2hlcik7Zm90LktleT1FRmV9KTt2YXIgYSR0PUgocG90PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShwb3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBURmU9KGRlKCksVXQocGUpKSxvJHQ9RmUoKSxDRmU9cjQoKSxBRmU9ZnVuY3Rpb24oZSl7VEZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO24uX2xhc3RNb3VzZVBvc2l0aW9uPXt4Oi0xLHk6LTF9LG4uX3RyYW5zbGF0b3I9byR0LmdldFRyYW5zbGF0b3Iocik7dmFyIGk9ZnVuY3Rpb24obyl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChyLG8sdC5fTU9VU0VNT1ZFX0VWRU5UX05BTUUsInBhZ2UiKX07cmV0dXJuIG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bdC5fTU9VU0VPVkVSX0VWRU5UX05BTUVdPWksbi5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvblt0Ll9NT1VTRU1PVkVfRVZFTlRfTkFNRV09aSxuLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3QuX01PVVNFT1VUX0VWRU5UX05BTUVdPWksbi5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvblt0Ll9NT1VTRURPV05fRVZFTlRfTkFNRV09ZnVuY3Rpb24obyl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChyLG8sdC5fTU9VU0VET1dOX0VWRU5UX05BTUUpfSxuLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3QuX01PVVNFVVBfRVZFTlRfTkFNRV09ZnVuY3Rpb24obyl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChyLG8sdC5fTU9VU0VVUF9FVkVOVF9OQU1FLCJwYWdlIil9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bdC5fV0hFRUxfRVZFTlRfTkFNRV09ZnVuY3Rpb24obyl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChyLG8sdC5fV0hFRUxfRVZFTlRfTkFNRSl9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bdC5fREJMQ0xJQ0tfRVZFTlRfTkFNRV09ZnVuY3Rpb24obyl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChyLG8sdC5fREJMQ0xJQ0tfRVZFTlRfTkFNRSl9LG59cmV0dXJuIHQuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbihyKXt2YXIgbj1yLnJvb3QoKS5yb290RWxlbWVudCgpLGk9blt0Ll9ESVNQQVRDSEVSX0tFWV07cmV0dXJuIGk9PW51bGwmJihpPW5ldyB0KHIpLG5bdC5fRElTUEFUQ0hFUl9LRVldPWkpLGl9LHQucHJvdG90eXBlLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHQuX01PVVNFTU9WRV9FVkVOVF9OQU1FLHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZk1vdXNlTW92ZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudCh0Ll9NT1VTRU1PVkVfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vbk1vdXNlRG93bj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudCh0Ll9NT1VTRURPV05fRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZNb3VzZURvd249ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQodC5fTU9VU0VET1dOX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUub25Nb3VzZVVwPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHQuX01PVVNFVVBfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZNb3VzZVVwPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHQuX01PVVNFVVBfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vbldoZWVsPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHQuX1dIRUVMX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUub2ZmV2hlZWw9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQodC5fV0hFRUxfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vbkRibENsaWNrPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHQuX0RCTENMSUNLX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUub2ZmRGJsQ2xpY2s9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQodC5fREJMQ0xJQ0tfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5fbWVhc3VyZUFuZERpc3BhdGNoPWZ1bmN0aW9uKHIsbixpLG8pe2lmKG89PT12b2lkIDAmJihvPSJlbGVtZW50IiksbyE9PSJwYWdlIiYmbyE9PSJlbGVtZW50Iil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NvcGUgJyIrbysiJywgbXVzdCBiZSAnZWxlbWVudCcgb3IgJ3BhZ2UnIik7aWYobz09PSJwYWdlInx8dGhpcy5ldmVudEluc2lkZShyLG4pKXt2YXIgYT10aGlzLl90cmFuc2xhdG9yLmNvbXB1dGVQb3NpdGlvbihuLmNsaWVudFgsbi5jbGllbnRZKTt0aGlzLl9sYXN0TW91c2VQb3NpdGlvbj1hLHRoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChpLHRoaXMubGFzdE1vdXNlUG9zaXRpb24oKSxuKX19LHQucHJvdG90eXBlLmV2ZW50SW5zaWRlPWZ1bmN0aW9uKHIsbil7cmV0dXJuIG8kdC5UcmFuc2xhdG9yLmlzRXZlbnRJbnNpZGUocixuKX0sdC5wcm90b3R5cGUubGFzdE1vdXNlUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFzdE1vdXNlUG9zaXRpb259LHQuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX01vdXNlIix0Ll9NT1VTRU9WRVJfRVZFTlRfTkFNRT0ibW91c2VvdmVyIix0Ll9NT1VTRU1PVkVfRVZFTlRfTkFNRT0ibW91c2Vtb3ZlIix0Ll9NT1VTRU9VVF9FVkVOVF9OQU1FPSJtb3VzZW91dCIsdC5fTU9VU0VET1dOX0VWRU5UX05BTUU9Im1vdXNlZG93biIsdC5fTU9VU0VVUF9FVkVOVF9OQU1FPSJtb3VzZXVwIix0Ll9XSEVFTF9FVkVOVF9OQU1FPSJ3aGVlbCIsdC5fREJMQ0xJQ0tfRVZFTlRfTkFNRT0iZGJsY2xpY2siLHR9KENGZS5EaXNwYXRjaGVyKTtwb3QuTW91c2U9QUZlfSk7dmFyIGwkdD1IKGRvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZG90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgUEZlPShkZSgpLFV0KHBlKSkscyR0PUZlKCksSUZlPXI0KCksTEZlPWZ1bmN0aW9uKGUpe1BGZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KHIpe3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fdHJhbnNsYXRvcj1zJHQuZ2V0VHJhbnNsYXRvcihyKSxuLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3QuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRV09ZnVuY3Rpb24oaSl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChyLGksdC5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FLCJwYWdlIil9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bdC5fVE9VQ0hNT1ZFX0VWRU5UX05BTUVdPWZ1bmN0aW9uKGkpe3JldHVybiBuLl9tZWFzdXJlQW5kRGlzcGF0Y2gocixpLHQuX1RPVUNITU9WRV9FVkVOVF9OQU1FLCJwYWdlIil9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bdC5fVE9VQ0hFTkRfRVZFTlRfTkFNRV09ZnVuY3Rpb24oaSl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChyLGksdC5fVE9VQ0hFTkRfRVZFTlRfTkFNRSwicGFnZSIpfSxuLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3QuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUVdPWZ1bmN0aW9uKGkpe3JldHVybiBuLl9tZWFzdXJlQW5kRGlzcGF0Y2gocixpLHQuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsInBhZ2UiKX0sbn1yZXR1cm4gdC5nZXREaXNwYXRjaGVyPWZ1bmN0aW9uKHIpe3ZhciBuPXIucm9vdCgpLnJvb3RFbGVtZW50KCksaT1uW3QuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gaT09bnVsbCYmKGk9bmV3IHQociksblt0Ll9ESVNQQVRDSEVSX0tFWV09aSksaX0sdC5wcm90b3R5cGUub25Ub3VjaFN0YXJ0PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHQuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZUb3VjaFN0YXJ0PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHQuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vblRvdWNoTW92ZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudCh0Ll9UT1VDSE1PVkVfRVZFTlRfTkFNRSxyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZUb3VjaE1vdmU9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQodC5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUub25Ub3VjaEVuZD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudCh0Ll9UT1VDSEVORF9FVkVOVF9OQU1FLHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZlRvdWNoRW5kPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHQuX1RPVUNIRU5EX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUub25Ub3VjaENhbmNlbD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudCh0Ll9UT1VDSENBTkNFTF9FVkVOVF9OQU1FLHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZlRvdWNoQ2FuY2VsPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHQuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsciksdGhpc30sdC5wcm90b3R5cGUuX21lYXN1cmVBbmREaXNwYXRjaD1mdW5jdGlvbihyLG4saSxvKXtpZihvPT09dm9pZCAwJiYobz0iZWxlbWVudCIpLG8hPT0icGFnZSImJm8hPT0iZWxlbWVudCIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNjb3BlICciK28rIicsIG11c3QgYmUgJ2VsZW1lbnQnIG9yICdwYWdlJyIpO2lmKCEobz09PSJlbGVtZW50IiYmIXRoaXMuZXZlbnRJbnNpZGUocixuKSkpe2Zvcih2YXIgYT1uLmNoYW5nZWRUb3VjaGVzLHM9e30sbD1bXSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciB1PWFbY10saD11LmlkZW50aWZpZXIsZj10aGlzLl90cmFuc2xhdG9yLmNvbXB1dGVQb3NpdGlvbih1LmNsaWVudFgsdS5jbGllbnRZKTtmIT1udWxsJiYoc1toXT1mLGwucHVzaChoKSl9bC5sZW5ndGg+MCYmdGhpcy5fY2FsbENhbGxiYWNrc0ZvckV2ZW50KGksbCxzLG4pfX0sdC5wcm90b3R5cGUuZXZlbnRJbnNpZGU9ZnVuY3Rpb24ocixuKXtyZXR1cm4gcyR0LlRyYW5zbGF0b3IuaXNFdmVudEluc2lkZShyLG4pfSx0Ll9ESVNQQVRDSEVSX0tFWT0iX19QbG90dGFibGVfRGlzcGF0Y2hlcl9Ub3VjaCIsdC5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FPSJ0b3VjaHN0YXJ0Iix0Ll9UT1VDSE1PVkVfRVZFTlRfTkFNRT0idG91Y2htb3ZlIix0Ll9UT1VDSEVORF9FVkVOVF9OQU1FPSJ0b3VjaGVuZCIsdC5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRT0idG91Y2hjYW5jZWwiLHR9KElGZS5EaXNwYXRjaGVyKTtkb3QuVG91Y2g9TEZlfSk7dmFyIE52PUgobjQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG40LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbW90PShkZSgpLFV0KHBlKSk7bW90Ll9fZXhwb3J0U3RhcihpJHQoKSxuNCk7bW90Ll9fZXhwb3J0U3RhcihhJHQoKSxuNCk7bW90Ll9fZXhwb3J0U3RhcihsJHQoKSxuNCl9KTt2YXIgRHY9SChnb3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGdvdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGtGZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgdD10aGlzO3RoaXMuX2FuY2hvckNhbGxiYWNrPWZ1bmN0aW9uKHIpe3JldHVybiB0Ll9hbmNob3Iocil9LHRoaXMuX2VuYWJsZWQ9ITB9cmV0dXJuIGUucHJvdG90eXBlLmF0dGFjaFRvPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kaXNjb25uZWN0KCksdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbz10LHRoaXMuX2Nvbm5lY3QoKSx0aGlzfSxlLnByb3RvdHlwZS5kZXRhY2hGcm9tPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRldGFjaCgpfSxlLnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlzY29ubmVjdCgpLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG89bnVsbCx0aGlzfSxlLnByb3RvdHlwZS5lbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0PT1udWxsP3RoaXMuX2VuYWJsZWQ6KHRoaXMuX2VuYWJsZWQ9dCx0aGlzLl9lbmFibGVkP3RoaXMuX2Nvbm5lY3QoKTp0aGlzLl9kaXNjb25uZWN0KCksdGhpcyl9LGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24odCl7dGhpcy5faXNBbmNob3JlZD0hMH0sZS5wcm90b3R5cGUuX3VuYW5jaG9yPWZ1bmN0aW9uKCl7dGhpcy5faXNBbmNob3JlZD0hMX0sZS5wcm90b3R5cGUuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2U9ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5vcmlnaW5Ub1Jvb3QoKTtyZXR1cm57eDp0Lngtci54LHk6dC55LXIueX19LGUucHJvdG90eXBlLl9pc0luc2lkZUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gMDw9dC54JiYwPD10LnkmJnQueDw9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpJiZ0Lnk8PXRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8uaGVpZ2h0KCl9LGUucHJvdG90eXBlLl9jb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkKCkmJnRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8hPW51bGwmJiF0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLm9uQW5jaG9yKHRoaXMuX2FuY2hvckNhbGxiYWNrKX0sZS5wcm90b3R5cGUuX2Rpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl91bmFuY2hvcigpLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8hPW51bGwmJnRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ub2ZmQW5jaG9yKHRoaXMuX2FuY2hvckNhbGxiYWNrKX0sZX0oKTtnb3QuSW50ZXJhY3Rpb249a0ZlfSk7dmFyIGgkdD1IKF9vdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoX290LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgUkZlPShkZSgpLFV0KHBlKSksYyR0PU52KCksdSR0PUZlKCksTkZlPUR2KCksREZlPWZ1bmN0aW9uKGUpe1JGZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZSE9PW51bGwmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiByLl9jbGlja2VkRG93bj0hMSxyLl9kb3VibGVDbGlja2luZz0hMSxyLl9vbkNsaWNrQ2FsbGJhY2tzPW5ldyB1JHQuQ2FsbGJhY2tTZXQsci5fb25Eb3VibGVDbGlja0NhbGxiYWNrcz1uZXcgdSR0LkNhbGxiYWNrU2V0LHIuX21vdXNlRG93bkNhbGxiYWNrPWZ1bmN0aW9uKG4saSl7cmV0dXJuIHIuX2hhbmRsZUNsaWNrRG93bihuLGkpfSxyLl9tb3VzZVVwQ2FsbGJhY2s9ZnVuY3Rpb24obixpKXtyZXR1cm4gci5faGFuZGxlQ2xpY2tVcChuLGkpfSxyLl9kYmxDbGlja0NhbGxiYWNrPWZ1bmN0aW9uKG4saSl7cmV0dXJuIHIuX2hhbmRsZURibENsaWNrKG4saSl9LHIuX3RvdWNoU3RhcnRDYWxsYmFjaz1mdW5jdGlvbihuLGksbyl7cmV0dXJuIHIuX2hhbmRsZUNsaWNrRG93bihpW25bMF1dLG8pfSxyLl90b3VjaEVuZENhbGxiYWNrPWZ1bmN0aW9uKG4saSxvKXtyZXR1cm4gci5faGFuZGxlQ2xpY2tVcChpW25bMF1dLG8pfSxyLl90b3VjaENhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKG4saSl7cmV0dXJuIHIuX2NsaWNrZWREb3duPSExfSxyfXJldHVybiB0LnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKHIpe2UucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLHIpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1jJHQuTW91c2UuZ2V0RGlzcGF0Y2hlcihyKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlVXAodGhpcy5fbW91c2VVcENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25EYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9YyR0LlRvdWNoLmdldERpc3BhdGNoZXIociksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoQ2FuY2VsKHRoaXMuX3RvdWNoQ2FuY2VsQ2FsbGJhY2spfSx0LnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZEYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LHQucHJvdG90eXBlLl9oYW5kbGVDbGlja0Rvd249ZnVuY3Rpb24ocixuKXt2YXIgaT10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHIpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KGkpJiYodGhpcy5fY2xpY2tlZERvd249ITAsdGhpcy5fY2xpY2tlZFBvaW50PWkpfSx0LnByb3RvdHlwZS5faGFuZGxlQ2xpY2tVcD1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMsbz10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHIpO3RoaXMuX2NsaWNrZWREb3duJiZ0Ll9wb2ludHNFcXVhbChvLHRoaXMuX2NsaWNrZWRQb2ludCkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLl9kb3VibGVDbGlja2luZ3x8aS5fb25DbGlja0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKG8sbil9LDApLHRoaXMuX2NsaWNrZWREb3duPSExfSx0LnByb3RvdHlwZS5faGFuZGxlRGJsQ2xpY2s9ZnVuY3Rpb24ocixuKXt2YXIgaT10aGlzLG89dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShyKTt0aGlzLl9kb3VibGVDbGlja2luZz0hMCx0aGlzLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobyxuKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGkuX2RvdWJsZUNsaWNraW5nPSExfSwwKX0sdC5fcG9pbnRzRXF1YWw9ZnVuY3Rpb24ocixuKXtyZXR1cm4gci54PT09bi54JiZyLnk9PT1uLnl9LHQucHJvdG90eXBlLm9uQ2xpY2s9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX29uQ2xpY2tDYWxsYmFja3MuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZkNsaWNrPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9vbkNsaWNrQ2FsbGJhY2tzLmRlbGV0ZShyKSx0aGlzfSx0LnByb3RvdHlwZS5vbkRvdWJsZUNsaWNrPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzLmFkZChyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEb3VibGVDbGljaz1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5kZWxldGUociksdGhpc30sdH0oTkZlLkludGVyYWN0aW9uKTtfb3QuQ2xpY2s9REZlfSk7dmFyIHAkdD1IKHlvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoeW90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgT0ZlPShkZSgpLFV0KHBlKSksZiR0PU52KCksaTQ9RmUoKSx6RmU9RHYoKSxGRmU9ZnVuY3Rpb24oZSl7T0ZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9kcmFnZ2luZz0hMSxuLl9jb25zdHJhaW5lZFRvQ29tcG9uZW50PSEwLG4uX21vdXNlRmlsdGVyPXQuX0RFRkFVTFRfTU9VU0VfRklMVEVSLG4uX2RyYWdTdGFydENhbGxiYWNrcz1uZXcgaTQuQ2FsbGJhY2tTZXQsbi5fZHJhZ0NhbGxiYWNrcz1uZXcgaTQuQ2FsbGJhY2tTZXQsbi5fZHJhZ0VuZENhbGxiYWNrcz1uZXcgaTQuQ2FsbGJhY2tTZXQsbi5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24oaSxvKXtyZXR1cm4gbi5fc3RhcnREcmFnKGksbyl9LG4uX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKGksbyl7cmV0dXJuIG4uX2RvRHJhZyhpLG8pfSxuLl9tb3VzZVVwQ2FsbGJhY2s9ZnVuY3Rpb24oaSxvKXtyZXR1cm4gbi5fZW5kRHJhZyhpLG8pfSxuLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oaSxvLGEpe3JldHVybiBuLl9zdGFydERyYWcob1tpWzBdXSxhKX0sbi5fdG91Y2hNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24oaSxvLGEpe3JldHVybiBuLl9kb0RyYWcob1tpWzBdXSxhKX0sbi5fdG91Y2hFbmRDYWxsYmFjaz1mdW5jdGlvbihpLG8sYSl7cmV0dXJuIG4uX2VuZERyYWcob1tpWzBdXSxhKX0sbi5fbW91c2VCdXR0b249ciE9PXZvaWQgMD9yOjAsbn1yZXR1cm4gdC5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbihyKXtlLnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxyKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9ZiR0Lk1vdXNlLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlVXAodGhpcy5fbW91c2VVcENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9ZiR0LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayl9LHQucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe2UucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyPW51bGwsdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoU3RhcnQodGhpcy5fdG91Y2hTdGFydENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hNb3ZlKHRoaXMuX3RvdWNoTW92ZUNhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LHQucHJvdG90eXBlLl90cmFuc2xhdGVBbmRDb25zdHJhaW49ZnVuY3Rpb24ocil7dmFyIG49dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShyKTtyZXR1cm4gdGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudD97eDppNC5NYXRoLmNsYW1wKG4ueCwwLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ud2lkdGgoKSkseTppNC5NYXRoLmNsYW1wKG4ueSwwLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8uaGVpZ2h0KCkpfTpufSx0LnByb3RvdHlwZS5fc3RhcnREcmFnPWZ1bmN0aW9uKHIsbil7aWYoIShuIGluc3RhbmNlb2YgTW91c2VFdmVudCYmIXRoaXMuX21vdXNlRmlsdGVyKG4pKSl7dmFyIGk9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShyKTt0aGlzLl9pc0luc2lkZUNvbXBvbmVudChpKSYmKG4ucHJldmVudERlZmF1bHQoKSx0aGlzLl9kcmFnZ2luZz0hMCx0aGlzLl9kcmFnT3JpZ2luPWksdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcy5fZHJhZ09yaWdpbikpfX0sdC5wcm90b3R5cGUuX2RvRHJhZz1mdW5jdGlvbihyLG4pe3RoaXMuX2RyYWdnaW5nJiZ0aGlzLl9kcmFnQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcy5fZHJhZ09yaWdpbix0aGlzLl90cmFuc2xhdGVBbmRDb25zdHJhaW4ocikpfSx0LnByb3RvdHlwZS5fZW5kRHJhZz1mdW5jdGlvbihyLG4pe24gaW5zdGFuY2VvZiBNb3VzZUV2ZW50JiZuLmJ1dHRvbiE9PXRoaXMuX21vdXNlQnV0dG9ufHx0aGlzLl9kcmFnZ2luZyYmKHRoaXMuX2RyYWdnaW5nPSExLHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luLHRoaXMuX3RyYW5zbGF0ZUFuZENvbnN0cmFpbihyKSkpfSx0LnByb3RvdHlwZS5jb25zdHJhaW5lZFRvQ29tcG9uZW50PWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ6KHRoaXMuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ9cix0aGlzKX0sdC5wcm90b3R5cGUubW91c2VGaWx0ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0wP3RoaXMuX21vdXNlRmlsdGVyOih0aGlzLl9tb3VzZUZpbHRlcj1yLHRoaXMpfSx0LnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZChyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUociksdGhpc30sdC5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZChyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZShyKSx0aGlzfSx0LnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHIpLHRoaXN9LHQuX0RFRkFVTFRfTU9VU0VfRklMVEVSPWZ1bmN0aW9uKHIpe3JldHVybiByLmJ1dHRvbj09PTB9LHR9KHpGZS5JbnRlcmFjdGlvbik7eW90LkRyYWc9RkZlfSk7dmFyIGJvdD1IKHhvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoeG90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgQkZlPShkZSgpLFV0KHBlKSksZCR0PU52KCksdm90PUZlKCksSEZlPUR2KCksVkZlPWZ1bmN0aW9uKGUpe0JGZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZSE9PW51bGwmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiByLl9rZXlQcmVzc0NhbGxiYWNrcz17fSxyLl9rZXlSZWxlYXNlQ2FsbGJhY2tzPXt9LHIuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKG4pe3JldHVybiExfSxyLl9kb3duZWRLZXlzPW5ldyB2b3QuU2V0LHIuX2tleURvd25DYWxsYmFjaz1mdW5jdGlvbihuLGkpe3JldHVybiByLl9oYW5kbGVLZXlEb3duRXZlbnQobixpKX0sci5fa2V5VXBDYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gci5faGFuZGxlS2V5VXBFdmVudChuKX0scn1yZXR1cm4gdC5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbihyKXtlLnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxyKSx0aGlzLl9wb3NpdGlvbkRpc3BhdGNoZXI9ZCR0Lk1vdXNlLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyPWQkdC5LZXkuZ2V0RGlzcGF0Y2hlcigpLHRoaXMuX2tleURpc3BhdGNoZXIub25LZXlEb3duKHRoaXMuX2tleURvd25DYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlci5vbktleVVwKHRoaXMuX2tleVVwQ2FsbGJhY2spfSx0LnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9wb3NpdGlvbkRpc3BhdGNoZXIub2ZmTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9wb3NpdGlvbkRpc3BhdGNoZXI9bnVsbCx0aGlzLl9rZXlEaXNwYXRjaGVyLm9mZktleURvd24odGhpcy5fa2V5RG93bkNhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyLm9mZktleVVwKHRoaXMuX2tleVVwQ2FsbGJhY2spLHRoaXMuX2tleURpc3BhdGNoZXI9bnVsbH0sdC5wcm90b3R5cGUuX2hhbmRsZUtleURvd25FdmVudD1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLmxhc3RNb3VzZVBvc2l0aW9uKCkpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KGkpJiYhbi5yZXBlYXQmJih0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1tyXSYmdGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbcl0uY2FsbENhbGxiYWNrcyhyKSx0aGlzLl9kb3duZWRLZXlzLmFkZChyKSl9LHQucHJvdG90eXBlLl9oYW5kbGVLZXlVcEV2ZW50PWZ1bmN0aW9uKHIpe3RoaXMuX2Rvd25lZEtleXMuaGFzKHIpJiZ0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3JdJiZ0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3JdLmNhbGxDYWxsYmFja3MociksdGhpcy5fZG93bmVkS2V5cy5kZWxldGUocil9LHQucHJvdG90eXBlLm9uS2V5UHJlc3M9ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbcl18fCh0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1tyXT1uZXcgdm90LkNhbGxiYWNrU2V0KSx0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1tyXS5hZGQobiksdGhpc30sdC5wcm90b3R5cGUub2ZmS2V5UHJlc3M9ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbcl0uZGVsZXRlKG4pLHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3JdLnNpemU9PT0wJiZkZWxldGUgdGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbcl0sdGhpc30sdC5wcm90b3R5cGUub25LZXlSZWxlYXNlPWZ1bmN0aW9uKHIsbil7cmV0dXJuIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3Nbcl18fCh0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3JdPW5ldyB2b3QuQ2FsbGJhY2tTZXQpLHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3Nbcl0uYWRkKG4pLHRoaXN9LHQucHJvdG90eXBlLm9mZktleVJlbGVhc2U9ZnVuY3Rpb24ocixuKXtyZXR1cm4gdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1tyXS5kZWxldGUobiksdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1tyXS5zaXplPT09MCYmZGVsZXRlIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3Nbcl0sdGhpc30sdH0oSEZlLkludGVyYWN0aW9uKTt4b3QuS2V5PVZGZX0pO3ZhciB5JHQ9SCh3b3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHdvdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFVGZT0oZGUoKSxVdChwZSkpLHFGZT0oRXIoKSxVdChNcikpLG0kdD1OdigpLGckdD1McygpLF9sPUZlKCksR0ZlPW80KCksV0ZlPUR2KCksXyR0PUpBKCksWUZlPWZ1bmN0aW9uKGUpe1VGZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KHIsbil7dmFyIGk9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl93aGVlbEZpbHRlcj1mdW5jdGlvbihvKXtyZXR1cm4hMH0saS5fd2hlZWxDYWxsYmFjaz1mdW5jdGlvbihvLGEpe3JldHVybiBpLl9oYW5kbGVXaGVlbEV2ZW50KG8sYSl9LGkuX3RvdWNoU3RhcnRDYWxsYmFjaz1mdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2hhbmRsZVRvdWNoU3RhcnQobyxhLHMpfSxpLl90b3VjaE1vdmVDYWxsYmFjaz1mdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2hhbmRsZVBpbmNoKG8sYSxzKX0saS5fdG91Y2hFbmRDYWxsYmFjaz1mdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2hhbmRsZVRvdWNoRW5kKG8sYSxzKX0saS5fdG91Y2hDYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihvLGEscyl7cmV0dXJuIGkuX2hhbmRsZVRvdWNoRW5kKG8sYSxzKX0saS5fcGFuRW5kQ2FsbGJhY2tzPW5ldyBfbC5DYWxsYmFja1NldCxpLl96b29tRW5kQ2FsbGJhY2tzPW5ldyBfbC5DYWxsYmFja1NldCxpLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzPW5ldyBfbC5DYWxsYmFja1NldCxpLl94U2NhbGVzPW5ldyBfbC5TZXQsaS5feVNjYWxlcz1uZXcgX2wuU2V0LGkuX2RyYWdJbnRlcmFjdGlvbj1uZXcgR0ZlLkRyYWcsaS5fc2V0dXBEcmFnSW50ZXJhY3Rpb24oKSxpLl90b3VjaElkcz1xRmUubWFwKCksaS5fbWluRG9tYWluRXh0ZW50cz1uZXcgX2wuTWFwLGkuX21heERvbWFpbkV4dGVudHM9bmV3IF9sLk1hcCxpLl9taW5Eb21haW5WYWx1ZXM9bmV3IF9sLk1hcCxpLl9tYXhEb21haW5WYWx1ZXM9bmV3IF9sLk1hcCxyIT1udWxsJiZpLmFkZFhTY2FsZShyKSxuIT1udWxsJiZpLmFkZFlTY2FsZShuKSxpfXJldHVybiB0LnByb3RvdHlwZS5kcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufSx0LnByb3RvdHlwZS53aGVlbEZpbHRlcj1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTA/dGhpcy5fd2hlZWxGaWx0ZXI6KHRoaXMuX3doZWVsRmlsdGVyPXIsdGhpcyl9LHQucHJvdG90eXBlLnBhbj1mdW5jdGlvbihyKXt2YXIgbj10aGlzO3RoaXMueFNjYWxlcygpLmZvckVhY2goZnVuY3Rpb24oaSl7aS5wYW4obi5fY29uc3RyYWluZWRUcmFuc2xhdGlvbihpLHIueCkpfSksdGhpcy55U2NhbGVzKCkuZm9yRWFjaChmdW5jdGlvbihpKXtpLnBhbihuLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uKGksci55KSl9KSx0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX0sdC5wcm90b3R5cGUuem9vbT1mdW5jdGlvbihyLG4saSl7dmFyIG89dGhpcztpPT09dm9pZCAwJiYoaT0hMCk7dmFyIGEscztyZXR1cm4gbiE9bnVsbCYmKGE9bi54LHM9bi55LGkmJih0aGlzLnhTY2FsZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBjPW8uX2NvbnN0cmFpbmVkWm9vbShsLHIsYSk7YT1jLmNlbnRlclBvaW50LHI9Yy56b29tQW1vdW50fSksdGhpcy55U2NhbGVzKCkuZm9yRWFjaChmdW5jdGlvbihsKXt2YXIgYz1vLl9jb25zdHJhaW5lZFpvb20obCxyLHMpO3M9Yy5jZW50ZXJQb2ludCxyPWMuem9vbUFtb3VudH0pKSksdGhpcy54U2NhbGVzKCkuZm9yRWFjaChmdW5jdGlvbihsKXt2YXIgYz1sLnJhbmdlKCksdT1hPT1udWxsPyhjWzFdK2NbMF0pLzI6YTtsLnpvb20ocix1KX0pLHRoaXMueVNjYWxlcygpLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIGM9bC5yYW5nZSgpLHU9cz09bnVsbD8oY1sxXStjWzBdKS8yOnM7bC56b29tKHIsdSl9KSx0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKSx7em9vbUFtb3VudDpyLGNlbnRlclZhbHVlOntjZW50ZXJYOmEsY2VudGVyWTpzfX19LHQucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24ocil7ZS5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsciksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKHIpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1tJHQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9bSR0LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayl9LHQucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe2UucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZXaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGwsdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpfSx0LnByb3RvdHlwZS5faGFuZGxlVG91Y2hTdGFydD1mdW5jdGlvbihyLG4saSl7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aCYmdGhpcy5fdG91Y2hJZHMuc2l6ZSgpPDI7bysrKXt2YXIgYT1yW29dO3RoaXMuX3RvdWNoSWRzLnNldChhLnRvU3RyaW5nKCksdGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShuW2FdKSl9fSx0LnByb3RvdHlwZS5faGFuZGxlUGluY2g9ZnVuY3Rpb24ocixuLGkpe3ZhciBvPXRoaXM7aWYoISh0aGlzLl90b3VjaElkcy5zaXplKCk8Mikpe3ZhciBhPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpO2lmKCEoIXRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UoYVswXSkpfHwhdGhpcy5faXNJbnNpZGVDb21wb25lbnQodGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShhWzFdKSkpKXt2YXIgcz10Ll9wb2ludERpc3RhbmNlKGFbMF0sYVsxXSk7aWYocyE9PTApe3IuZm9yRWFjaChmdW5jdGlvbihTKXtvLl90b3VjaElkcy5oYXMoUy50b1N0cmluZygpKSYmby5fdG91Y2hJZHMuc2V0KFMudG9TdHJpbmcoKSxvLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKG5bU10pKX0pO3ZhciBsPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpLGM9dC5fcG9pbnREaXN0YW5jZShsWzBdLGxbMV0pO2lmKGMhPT0wKXt2YXIgdT1zL2MsaD1sLm1hcChmdW5jdGlvbihTLEMpe3JldHVybnt4OihTLngtYVtDXS54KS91LHk6KFMueS1hW0NdLnkpL3V9fSksZj10LmNlbnRlclBvaW50KGFbMF0sYVsxXSkscD10aGlzLnpvb20odSxmKSxkPXAuY2VudGVyVmFsdWUsZz1wLnpvb21BbW91bnQsXz1kLmNlbnRlclgseT1kLmNlbnRlclkseD1hLm1hcChmdW5jdGlvbihTLEMpe3JldHVybnt4OmhbQ10ueCpnK1MueCx5OmhbQ10ueSpnK1MueX19KSxiPXt4Ol8tKHhbMF0ueCt4WzFdLngpLzIseTp5LSh4WzBdLnkreFsxXS55KS8yfTt0aGlzLnBhbihiKX19fX19LHQuY2VudGVyUG9pbnQ9ZnVuY3Rpb24ocixuKXt2YXIgaT1NYXRoLm1pbihyLngsbi54KSxvPU1hdGgubWF4KHIueCxuLngpLGE9TWF0aC5taW4oci55LG4ueSkscz1NYXRoLm1heChyLnksbi55KTtyZXR1cm57eDooaStvKS8yLHk6KHMrYSkvMn19LHQuX3BvaW50RGlzdGFuY2U9ZnVuY3Rpb24ocixuKXt2YXIgaT1NYXRoLm1pbihyLngsbi54KSxvPU1hdGgubWF4KHIueCxuLngpLGE9TWF0aC5taW4oci55LG4ueSkscz1NYXRoLm1heChyLnksbi55KTtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KG8taSwyKStNYXRoLnBvdyhzLWEsMikpfSx0LnByb3RvdHlwZS5faGFuZGxlVG91Y2hFbmQ9ZnVuY3Rpb24ocixuLGkpe3ZhciBvPXRoaXM7ci5mb3JFYWNoKGZ1bmN0aW9uKGEpe28uX3RvdWNoSWRzLnJlbW92ZShhLnRvU3RyaW5nKCkpfSksdGhpcy5fdG91Y2hJZHMuc2l6ZSgpPjAmJnRoaXMuX3pvb21FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfSx0LnByb3RvdHlwZS5faGFuZGxlV2hlZWxFdmVudD1mdW5jdGlvbihyLG4pe2lmKCEhdGhpcy5fd2hlZWxGaWx0ZXIobikpe3ZhciBpPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uocik7aWYodGhpcy5faXNJbnNpZGVDb21wb25lbnQoaSkpe24ucHJldmVudERlZmF1bHQoKTt2YXIgbz1uLmRlbHRhWSE9PTA/bi5kZWx0YVk6bi5kZWx0YVgsYT1vKihuLmRlbHRhTW9kZT90Ll9QSVhFTFNfUEVSX0xJTkU6MSkscz1NYXRoLnBvdygyLGEqLjAwMik7dGhpcy56b29tKHMsaSksdGhpcy5fem9vbUVuZENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCl9fX0sdC5wcm90b3R5cGUuX2NvbnN0cmFpbmVkWm9vbT1mdW5jdGlvbihyLG4saSl7cmV0dXJuIF8kdC5jb25zdHJhaW5lZFpvb20ocixuLGksdGhpcy5taW5Eb21haW5FeHRlbnQociksdGhpcy5tYXhEb21haW5FeHRlbnQociksdGhpcy5taW5Eb21haW5WYWx1ZShyKSx0aGlzLm1heERvbWFpblZhbHVlKHIpKX0sdC5wcm90b3R5cGUuX2NvbnN0cmFpbmVkVHJhbnNsYXRpb249ZnVuY3Rpb24ocixuKXtyZXR1cm4gXyR0LmNvbnN0cmFpbmVkVHJhbnNsYXRpb24ocixuLHRoaXMubWluRG9tYWluVmFsdWUociksdGhpcy5tYXhEb21haW5WYWx1ZShyKSl9LHQucHJvdG90eXBlLl9zZXR1cERyYWdJbnRlcmFjdGlvbj1mdW5jdGlvbigpe3ZhciByPXRoaXM7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmNvbnN0cmFpbmVkVG9Db21wb25lbnQoITEpO3ZhciBuO3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydChmdW5jdGlvbigpe3JldHVybiBuPW51bGx9KSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnKGZ1bmN0aW9uKGksbyl7aWYoIShyLl90b3VjaElkcy5zaXplKCk+PTIpKXt2YXIgYT17eDoobj09bnVsbD9pLng6bi54KS1vLngseToobj09bnVsbD9pLnk6bi55KS1vLnl9O3IucGFuKGEpLG49b319KSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnRW5kKGZ1bmN0aW9uKCl7cmV0dXJuIHIuX3BhbkVuZENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCl9KX0sdC5wcm90b3R5cGUuX25vbkxpbmVhclNjYWxlV2l0aEV4dGVudHM9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMubWluRG9tYWluRXh0ZW50KHIpIT1udWxsJiZ0aGlzLm1heERvbWFpbkV4dGVudChyKSE9bnVsbCYmIShyIGluc3RhbmNlb2YgZyR0LkxpbmVhcikmJiEociBpbnN0YW5jZW9mIGckdC5UaW1lKX0sdC5wcm90b3R5cGUueFNjYWxlcz1mdW5jdGlvbihyKXt2YXIgbj10aGlzO2lmKHI9PW51bGwpe3ZhciBpPVtdO3JldHVybiB0aGlzLl94U2NhbGVzLmZvckVhY2goZnVuY3Rpb24obyl7aS5wdXNoKG8pfSksaX1yZXR1cm4gdGhpcy5feFNjYWxlcz1uZXcgX2wuU2V0LHIuZm9yRWFjaChmdW5jdGlvbihvKXtuLmFkZFhTY2FsZShvKX0pLHRoaXN9LHQucHJvdG90eXBlLnlTY2FsZXM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcztpZihyPT1udWxsKXt2YXIgaT1bXTtyZXR1cm4gdGhpcy5feVNjYWxlcy5mb3JFYWNoKGZ1bmN0aW9uKG8pe2kucHVzaChvKX0pLGl9cmV0dXJuIHRoaXMuX3lTY2FsZXM9bmV3IF9sLlNldCxyLmZvckVhY2goZnVuY3Rpb24obyl7bi5hZGRZU2NhbGUobyl9KSx0aGlzfSx0LnByb3RvdHlwZS5hZGRYU2NhbGU9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3hTY2FsZXMuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLnJlbW92ZVhTY2FsZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5feFNjYWxlcy5kZWxldGUociksdGhpcy5fbWluRG9tYWluRXh0ZW50cy5kZWxldGUociksdGhpcy5fbWF4RG9tYWluRXh0ZW50cy5kZWxldGUociksdGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZShyKSx0aGlzLl9tYXhEb21haW5WYWx1ZXMuZGVsZXRlKHIpLHRoaXN9LHQucHJvdG90eXBlLmFkZFlTY2FsZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5feVNjYWxlcy5hZGQociksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlWVNjYWxlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl95U2NhbGVzLmRlbGV0ZShyKSx0aGlzLl9taW5Eb21haW5FeHRlbnRzLmRlbGV0ZShyKSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLmRlbGV0ZShyKSx0aGlzLl9taW5Eb21haW5WYWx1ZXMuZGVsZXRlKHIpLHRoaXMuX21heERvbWFpblZhbHVlcy5kZWxldGUociksdGhpc30sdC5wcm90b3R5cGUubWluRG9tYWluRXh0ZW50PWZ1bmN0aW9uKHIsbil7aWYobj09bnVsbClyZXR1cm4gdGhpcy5fbWluRG9tYWluRXh0ZW50cy5nZXQocik7aWYobi52YWx1ZU9mKCk8MCl0aHJvdyBuZXcgRXJyb3IoImV4dGVudCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpO3ZhciBpPXRoaXMubWF4RG9tYWluRXh0ZW50KHIpO2lmKGkhPW51bGwmJmkudmFsdWVPZigpPG4udmFsdWVPZigpKXRocm93IG5ldyBFcnJvcigibWluRG9tYWluRXh0ZW50IG11c3QgYmUgc21hbGxlciB0aGFuIG1heERvbWFpbkV4dGVudCBmb3IgdGhlIHNhbWUgU2NhbGUiKTtyZXR1cm4gdGhpcy5fbm9uTGluZWFyU2NhbGVXaXRoRXh0ZW50cyhyKSYmX2wuV2luZG93Lndhcm4oIlBhbm5pbmcgYW5kIHpvb21pbmcgd2l0aCBleHRlbnRzIG9uIGEgbm9ubGluZWFyIHNjYWxlIG1heSBoYXZlIHVuaW50ZW5kZWQgYmVoYXZpb3IuIiksdGhpcy5fbWluRG9tYWluRXh0ZW50cy5zZXQocixuKSx0aGlzfSx0LnByb3RvdHlwZS5tYXhEb21haW5FeHRlbnQ9ZnVuY3Rpb24ocixuKXtpZihuPT1udWxsKXJldHVybiB0aGlzLl9tYXhEb21haW5FeHRlbnRzLmdldChyKTtpZihuLnZhbHVlT2YoKTw9MCl0aHJvdyBuZXcgRXJyb3IoImV4dGVudCBtdXN0IGJlIHBvc2l0aXZlIik7dmFyIGk9dGhpcy5taW5Eb21haW5FeHRlbnQocik7aWYoaSE9bnVsbCYmbi52YWx1ZU9mKCk8aS52YWx1ZU9mKCkpdGhyb3cgbmV3IEVycm9yKCJtYXhEb21haW5FeHRlbnQgbXVzdCBiZSBsYXJnZXIgdGhhbiBtaW5Eb21haW5FeHRlbnQgZm9yIHRoZSBzYW1lIFNjYWxlIik7cmV0dXJuIHRoaXMuX25vbkxpbmVhclNjYWxlV2l0aEV4dGVudHMocikmJl9sLldpbmRvdy53YXJuKCJQYW5uaW5nIGFuZCB6b29taW5nIHdpdGggZXh0ZW50cyBvbiBhIG5vbmxpbmVhciBzY2FsZSBtYXkgaGF2ZSB1bmludGVuZGVkIGJlaGF2aW9yLiIpLHRoaXMuX21heERvbWFpbkV4dGVudHMuc2V0KHIsbiksdGhpc30sdC5wcm90b3R5cGUubWluRG9tYWluVmFsdWU9ZnVuY3Rpb24ocixuKXtyZXR1cm4gbj09bnVsbD90aGlzLl9taW5Eb21haW5WYWx1ZXMuZ2V0KHIpOih0aGlzLl9taW5Eb21haW5WYWx1ZXMuc2V0KHIsbiksdGhpcyl9LHQucHJvdG90eXBlLm1heERvbWFpblZhbHVlPWZ1bmN0aW9uKHIsbil7cmV0dXJuIG49PW51bGw/dGhpcy5fbWF4RG9tYWluVmFsdWVzLmdldChyKToodGhpcy5fbWF4RG9tYWluVmFsdWVzLnNldChyLG4pLHRoaXMpfSx0LnByb3RvdHlwZS5zZXRNaW5NYXhEb21haW5WYWx1ZXNUbz1mdW5jdGlvbihyKXt0aGlzLl9taW5Eb21haW5WYWx1ZXMuZGVsZXRlKHIpLHRoaXMuX21heERvbWFpblZhbHVlcy5kZWxldGUocik7dmFyIG49ci5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpLGk9blswXSxvPW5bMV07cmV0dXJuIHRoaXMubWluRG9tYWluVmFsdWUocixpKSx0aGlzLm1heERvbWFpblZhbHVlKHIsbyksdGhpc30sdC5wcm90b3R5cGUub25QYW5FbmQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3BhbkVuZENhbGxiYWNrcy5hZGQociksdGhpc30sdC5wcm90b3R5cGUub2ZmUGFuRW5kPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9wYW5FbmRDYWxsYmFja3MuZGVsZXRlKHIpLHRoaXN9LHQucHJvdG90eXBlLm9uWm9vbUVuZD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5hZGQociksdGhpc30sdC5wcm90b3R5cGUub2ZmWm9vbUVuZD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fem9vbUVuZENhbGxiYWNrcy5kZWxldGUociksdGhpc30sdC5wcm90b3R5cGUub25QYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmFkZChyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZQYW5ab29tVXBkYXRlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmRlbGV0ZShyKSx0aGlzfSx0Ll9QSVhFTFNfUEVSX0xJTkU9MTIwLHR9KFdGZS5JbnRlcmFjdGlvbik7d290LlBhblpvb209WUZlfSk7dmFyIHgkdD1IKE1vdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoTW90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgakZlPShkZSgpLFV0KHBlKSksdiR0PU52KCksU290PUZlKCksWEZlPUR2KCksJEZlPWZ1bmN0aW9uKGUpe2pGZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZSE9PW51bGwmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiByLl9vdmVyQ29tcG9uZW50PSExLHIuX3BvaW50ZXJFbnRlckNhbGxiYWNrcz1uZXcgU290LkNhbGxiYWNrU2V0LHIuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzPW5ldyBTb3QuQ2FsbGJhY2tTZXQsci5fcG9pbnRlckV4aXRDYWxsYmFja3M9bmV3IFNvdC5DYWxsYmFja1NldCxyLl9tb3VzZU1vdmVDYWxsYmFjaz1mdW5jdGlvbihuLGkpe3JldHVybiByLl9oYW5kbGVNb3VzZUV2ZW50KG4saSl9LHIuX3RvdWNoU3RhcnRDYWxsYmFjaz1mdW5jdGlvbihuLGksbyl7cmV0dXJuIHIuX2hhbmRsZVRvdWNoRXZlbnQoaVtuWzBdXSxvKX0scn1yZXR1cm4gdC5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbihyKXtlLnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxyKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9diR0Lk1vdXNlLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9diR0LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spfSx0LnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj1udWxsfSx0LnByb3RvdHlwZS5faGFuZGxlTW91c2VFdmVudD1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMuX21vdXNlRGlzcGF0Y2hlci5ldmVudEluc2lkZSh0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLG4pO3RoaXMuX2hhbmRsZVBvaW50ZXJFdmVudChyLGkpfSx0LnByb3RvdHlwZS5faGFuZGxlVG91Y2hFdmVudD1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMuX3RvdWNoRGlzcGF0Y2hlci5ldmVudEluc2lkZSh0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLG4pO3RoaXMuX2hhbmRsZVBvaW50ZXJFdmVudChyLGkpfSx0LnByb3RvdHlwZS5faGFuZGxlUG9pbnRlckV2ZW50PWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShyKSxvPXRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KGkpO28mJm4/KHRoaXMuX292ZXJDb21wb25lbnR8fHRoaXMuX3BvaW50ZXJFbnRlckNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKGkpLHRoaXMuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoaSkpOnRoaXMuX292ZXJDb21wb25lbnQmJnRoaXMuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoaSksdGhpcy5fb3ZlckNvbXBvbmVudD1vJiZufSx0LnByb3RvdHlwZS5vblBvaW50ZXJFbnRlcj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmFkZChyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZQb2ludGVyRW50ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX3BvaW50ZXJFbnRlckNhbGxiYWNrcy5kZWxldGUociksdGhpc30sdC5wcm90b3R5cGUub25Qb2ludGVyTW92ZT1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fcG9pbnRlck1vdmVDYWxsYmFja3MuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZlBvaW50ZXJNb3ZlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9wb2ludGVyTW92ZUNhbGxiYWNrcy5kZWxldGUociksdGhpc30sdC5wcm90b3R5cGUub25Qb2ludGVyRXhpdD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fcG9pbnRlckV4aXRDYWxsYmFja3MuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZlBvaW50ZXJFeGl0PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9wb2ludGVyRXhpdENhbGxiYWNrcy5kZWxldGUociksdGhpc30sdH0oWEZlLkludGVyYWN0aW9uKTtNb3QuUG9pbnRlcj0kRmV9KTt2YXIgbzQ9SChaZz0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoWmcsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBhND0oZGUoKSxVdChwZSkpO2E0Ll9fZXhwb3J0U3RhcihoJHQoKSxaZyk7YTQuX19leHBvcnRTdGFyKHAkdCgpLFpnKTthNC5fX2V4cG9ydFN0YXIoYm90KCksWmcpO2E0Ll9fZXhwb3J0U3Rhcih5JHQoKSxaZyk7YTQuX19leHBvcnRTdGFyKHgkdCgpLFpnKTt2YXIgS0ZlPUpBKCk7Wmcuem9vbU91dD1LRmUuem9vbU91dH0pO3ZhciBFb3Q9SChzND0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoczQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBaRmU9KGRlKCksVXQocGUpKSxGRj1GZSgpLEpGZT1JYygpLHRzOyhmdW5jdGlvbihlKXtlW2UuVkFMVUU9MF09IlZBTFVFIixlW2UuUElYRUw9MV09IlBJWEVMIn0pKHRzPXM0LlByb3BlcnR5TW9kZXx8KHM0LlByb3BlcnR5TW9kZT17fSkpO3ZhciBRRmU9ZnVuY3Rpb24oZSl7WkZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX2JveFZpc2libGU9ITEsci5fYm94Qm91bmRzPXt0b3BMZWZ0Ont4OjAseTowfSxib3R0b21SaWdodDp7eDowLHk6MH19LHIuX3hCb3VuZHNNb2RlPXRzLlBJWEVMLHIuX3lCb3VuZHNNb2RlPXRzLlBJWEVMLHIuYWRkQ2xhc3MoInNlbGVjdGlvbi1ib3gtbGF5ZXIiKSxyLl9hZGp1c3RCb3VuZHNDYWxsYmFjaz1mdW5jdGlvbigpe3IucmVuZGVyKCl9LHIuX292ZXJmbG93SGlkZGVuPSEwLHIuX3hFeHRlbnQ9W3ZvaWQgMCx2b2lkIDBdLHIuX3lFeHRlbnQ9W3ZvaWQgMCx2b2lkIDBdLHJ9cmV0dXJuIHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe2UucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX2JveD10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzZWxlY3Rpb24tYm94IiwhMCkucmVtb3ZlKCksdGhpcy5fYm94QXJlYT10aGlzLl9ib3guYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic2VsZWN0aW9uLWFyZWEiLCEwKX0sdC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24ocixuKXtyZXR1cm57d2lkdGg6cixoZWlnaHQ6bn19LHQucHJvdG90eXBlLmJvdW5kcz1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9nZXRCb3VuZHMoKToodGhpcy5fc2V0Qm91bmRzKHIpLHRoaXMuX3hCb3VuZHNNb2RlPXRzLlBJWEVMLHRoaXMuX3lCb3VuZHNNb2RlPXRzLlBJWEVMLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24ocil7dmFyIG49e3g6TWF0aC5taW4oci50b3BMZWZ0Lngsci5ib3R0b21SaWdodC54KSx5Ok1hdGgubWluKHIudG9wTGVmdC55LHIuYm90dG9tUmlnaHQueSl9LGk9e3g6TWF0aC5tYXgoci50b3BMZWZ0Lngsci5ib3R0b21SaWdodC54KSx5Ok1hdGgubWF4KHIudG9wTGVmdC55LHIuYm90dG9tUmlnaHQueSl9O3RoaXMuX2JveEJvdW5kcz17dG9wTGVmdDpuLGJvdHRvbVJpZ2h0Oml9fSx0LnByb3RvdHlwZS5fZ2V0Qm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJue3RvcExlZnQ6e3g6dGhpcy5feEJvdW5kc01vZGU9PT10cy5QSVhFTD90aGlzLl9ib3hCb3VuZHMudG9wTGVmdC54OnRoaXMuX3hTY2FsZT09bnVsbD8wOk1hdGgubWluKHRoaXMueFNjYWxlKCkuc2NhbGUodGhpcy54RXh0ZW50KClbMF0pLHRoaXMueFNjYWxlKCkuc2NhbGUodGhpcy54RXh0ZW50KClbMV0pKSx5OnRoaXMuX3lCb3VuZHNNb2RlPT09dHMuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueTp0aGlzLl95U2NhbGU9PW51bGw/MDpNYXRoLm1pbih0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzBdKSx0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzFdKSl9LGJvdHRvbVJpZ2h0Ont4OnRoaXMuX3hCb3VuZHNNb2RlPT09dHMuUElYRUw/dGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0Lng6dGhpcy5feFNjYWxlPT1udWxsPzA6TWF0aC5tYXgodGhpcy54U2NhbGUoKS5zY2FsZSh0aGlzLnhFeHRlbnQoKVswXSksdGhpcy54U2NhbGUoKS5zY2FsZSh0aGlzLnhFeHRlbnQoKVsxXSkpLHk6dGhpcy5feUJvdW5kc01vZGU9PT10cy5QSVhFTD90aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueTp0aGlzLl95U2NhbGU9PW51bGw/MDpNYXRoLm1heCh0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzBdKSx0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzFdKSl9fX0sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtpZihlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuX2JveFZpc2libGUpe3ZhciByPXRoaXMuYm91bmRzKCksbj1yLnRvcExlZnQueSxpPXIuYm90dG9tUmlnaHQueSxvPXIudG9wTGVmdC54LGE9ci5ib3R0b21SaWdodC54O2lmKCEoRkYuTWF0aC5pc1ZhbGlkTnVtYmVyKG4pJiZGRi5NYXRoLmlzVmFsaWROdW1iZXIoaSkmJkZGLk1hdGguaXNWYWxpZE51bWJlcihvKSYmRkYuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpKSl0aHJvdyBuZXcgRXJyb3IoImJvdW5kcyBoYXZlIG5vdCBiZWVuIHByb3Blcmx5IHNldCIpO3RoaXMuX2JveEFyZWEuYXR0cnMoe3g6byx5Om4sd2lkdGg6YS1vLGhlaWdodDppLW59KSx0aGlzLmNvbnRlbnQoKS5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fYm94Lm5vZGUoKSl9ZWxzZSB0aGlzLl9ib3gucmVtb3ZlKCk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmJveFZpc2libGU9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fYm94VmlzaWJsZToodGhpcy5fYm94VmlzaWJsZT1yLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX3hTY2FsZToodGhpcy5feFNjYWxlIT1udWxsJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl94U2NhbGU9cix0aGlzLl94Qm91bmRzTW9kZT10cy5WQUxVRSx0aGlzLl94U2NhbGUub25VcGRhdGUodGhpcy5fYWRqdXN0Qm91bmRzQ2FsbGJhY2spLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLnlTY2FsZT1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl95U2NhbGU6KHRoaXMuX3lTY2FsZSE9bnVsbCYmdGhpcy5feVNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5feVNjYWxlPXIsdGhpcy5feUJvdW5kc01vZGU9dHMuVkFMVUUsdGhpcy5feVNjYWxlLm9uVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS54RXh0ZW50PWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2dldFhFeHRlbnQoKToodGhpcy5fc2V0WEV4dGVudChyKSx0aGlzLl94Qm91bmRzTW9kZT10cy5WQUxVRSx0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0WEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl94Qm91bmRzTW9kZT09PXRzLlZBTFVFP3RoaXMuX3hFeHRlbnQ6dGhpcy5feFNjYWxlPT1udWxsP1t2b2lkIDAsdm9pZCAwXTpbdGhpcy5feFNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMudG9wTGVmdC54KSx0aGlzLl94U2NhbGUuaW52ZXJ0KHRoaXMuX2JveEJvdW5kcy5ib3R0b21SaWdodC54KV19LHQucHJvdG90eXBlLl9zZXRYRXh0ZW50PWZ1bmN0aW9uKHIpe3RoaXMuX3hFeHRlbnQ9cn0sdC5wcm90b3R5cGUueUV4dGVudD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9nZXRZRXh0ZW50KCk6KHRoaXMuX3NldFlFeHRlbnQociksdGhpcy5feUJvdW5kc01vZGU9dHMuVkFMVUUsdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFlFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feUJvdW5kc01vZGU9PT10cy5WQUxVRT90aGlzLl95RXh0ZW50OnRoaXMuX3lTY2FsZT09bnVsbD9bdm9pZCAwLHZvaWQgMF06W3RoaXMuX3lTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLnRvcExlZnQueSksdGhpcy5feVNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueSldfSx0LnByb3RvdHlwZS5fc2V0WUV4dGVudD1mdW5jdGlvbihyKXt0aGlzLl95RXh0ZW50PXJ9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5feFNjYWxlIT1udWxsJiZ0aGlzLnhTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5feVNjYWxlIT1udWxsJiZ0aGlzLnlTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayl9LHR9KEpGZS5Db21wb25lbnQpO3M0LlNlbGVjdGlvbkJveExheWVyPVFGZX0pO3ZhciBIRj1IKENvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ290LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdEJlPShkZSgpLFV0KHBlKSksZUJlPW80KCksVG90PUZlKCksckJlPVlnKCksQkY9QW90KCksbkJlPUVvdCgpLGlCZT1mdW5jdGlvbihlKXt0QmUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fZGV0ZWN0aW9uUmFkaXVzPTMsci5fcmVzaXphYmxlPSExLHIuX21vdmFibGU9ITEsci5faGFzQ29ybmVycz0hMCxyLmFkZENsYXNzKCJkcmFnLWJveC1sYXllciIpLHIuX2RyYWdJbnRlcmFjdGlvbj1uZXcgZUJlLkRyYWcsci5fc2V0VXBDYWxsYmFja3MoKSxyLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8ociksci5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBUb3QuQ2FsbGJhY2tTZXQsci5fZHJhZ0NhbGxiYWNrcz1uZXcgVG90LkNhbGxiYWNrU2V0LHIuX2RyYWdFbmRDYWxsYmFja3M9bmV3IFRvdC5DYWxsYmFja1NldCxyfXJldHVybiB0LnByb3RvdHlwZS5fc2V0VXBDYWxsYmFja3M9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLG4saSxvLGEscz17bmV3Qm94OjAscmVzaXplOjEsbW92ZToyfSxsPXMubmV3Qm94LGM9ZnVuY3Rpb24oZil7bj1yLl9nZXRSZXNpemluZ0VkZ2VzKGYpO3ZhciBwPXIuYm91bmRzKCksZD1wLnRvcExlZnQueDw9Zi54JiZmLng8PXAuYm90dG9tUmlnaHQueCYmcC50b3BMZWZ0Lnk8PWYueSYmZi55PD1wLmJvdHRvbVJpZ2h0Lnk7ci5ib3hWaXNpYmxlKCkmJihuLnRvcHx8bi5ib3R0b218fG4ubGVmdHx8bi5yaWdodCk/bD1zLnJlc2l6ZTpyLmJveFZpc2libGUoKSYmci5tb3ZhYmxlKCkmJmQ/bD1zLm1vdmU6KGw9cy5uZXdCb3gsci5fc2V0Qm91bmRzKHt0b3BMZWZ0OmYsYm90dG9tUmlnaHQ6Zn0pLHIuX3hCb3VuZHNNb2RlPT09QkYuUHJvcGVydHlNb2RlLlZBTFVFJiZyLnhTY2FsZSgpIT1udWxsJiZyLl9zZXRYRXh0ZW50KFtyLnhTY2FsZSgpLmludmVydChmLngpLHIueFNjYWxlKCkuaW52ZXJ0KGYueCldKSxyLl95Qm91bmRzTW9kZT09PUJGLlByb3BlcnR5TW9kZS5WQUxVRSYmci55U2NhbGUoKSE9bnVsbCYmci5fc2V0WUV4dGVudChbci55U2NhbGUoKS5pbnZlcnQoZi55KSxyLnlTY2FsZSgpLmludmVydChmLnkpXSksci5yZW5kZXIoKSksci5ib3hWaXNpYmxlKCEwKSxwPXIuYm91bmRzKCksaT17eDpwLnRvcExlZnQueCx5OnAudG9wTGVmdC55fSxvPXt4OnAuYm90dG9tUmlnaHQueCx5OnAuYm90dG9tUmlnaHQueX0sYT1mLHIuX2RyYWdTdGFydENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHApfSx1PWZ1bmN0aW9uKGYscCl7c3dpdGNoKGwpe2Nhc2Ugcy5uZXdCb3g6by54PXAueCxvLnk9cC55O2JyZWFrO2Nhc2Ugcy5yZXNpemU6bi5ib3R0b20/by55PXAueTpuLnRvcCYmKGkueT1wLnkpLG4ucmlnaHQ/by54PXAueDpuLmxlZnQmJihpLng9cC54KTticmVhaztjYXNlIHMubW92ZTp2YXIgZD1wLngtYS54LGc9cC55LWEueTtpLngrPWQsaS55Kz1nLG8ueCs9ZCxvLnkrPWcsYT1wO2JyZWFrfXIuX3NldEJvdW5kcyh7dG9wTGVmdDppLGJvdHRvbVJpZ2h0Om99KSxyLl94Qm91bmRzTW9kZT09PUJGLlByb3BlcnR5TW9kZS5WQUxVRSYmci54U2NhbGUoKSE9bnVsbCYmci5fc2V0WEV4dGVudChbci54U2NhbGUoKS5pbnZlcnQoaS54KSxyLnhTY2FsZSgpLmludmVydChvLngpXSksci5feUJvdW5kc01vZGU9PT1CRi5Qcm9wZXJ0eU1vZGUuVkFMVUUmJnIueVNjYWxlKCkhPW51bGwmJnIuX3NldFlFeHRlbnQoW3IueVNjYWxlKCkuaW52ZXJ0KGkueSksci55U2NhbGUoKS5pbnZlcnQoby55KV0pLHIucmVuZGVyKCksci5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHIuYm91bmRzKCkpfSxoPWZ1bmN0aW9uKGYscCl7bD09PXMubmV3Qm94JiZmLng9PT1wLngmJmYueT09PXAueSYmci5ib3hWaXNpYmxlKCExKSxyLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3Moci5ib3VuZHMoKSl9O3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydChjKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnKHUpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdFbmQoaCksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uPWZ1bmN0aW9uKCl7ci5fZHJhZ0ludGVyYWN0aW9uLm9mZkRyYWdTdGFydChjKSxyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZyh1KSxyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ0VuZChoKSxyLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCl9fSx0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt2YXIgcj10aGlzO2UucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciBuPWZ1bmN0aW9uKCl7cmV0dXJuIHIuX2JveC5hcHBlbmQoImxpbmUiKS5zdHlsZXMoe29wYWNpdHk6MCxzdHJva2U6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVTdHJva2UifSl9O2lmKHRoaXMuX2RldGVjdGlvbkVkZ2VUPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtdGIiLCEwKSx0aGlzLl9kZXRlY3Rpb25FZGdlQj1uKCkuY2xhc3NlZCgiZHJhZy1lZGdlLXRiIiwhMCksdGhpcy5fZGV0ZWN0aW9uRWRnZUw9bigpLmNsYXNzZWQoImRyYWctZWRnZS1sciIsITApLHRoaXMuX2RldGVjdGlvbkVkZ2VSPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtbHIiLCEwKSx0aGlzLl9oYXNDb3JuZXJzKXt2YXIgaT1mdW5jdGlvbigpe3JldHVybiByLl9ib3guYXBwZW5kKCJjaXJjbGUiKS5zdHlsZXMoe29wYWNpdHk6MCxmaWxsOiJwaW5rIiwicG9pbnRlci1ldmVudHMiOiJ2aXNpYmxlRmlsbCJ9KX07dGhpcy5fZGV0ZWN0aW9uQ29ybmVyVEw9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLXRsIiwhMCksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyVFI9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLXRyIiwhMCksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQkw9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLWJsIiwhMCksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQlI9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLWJyIiwhMCl9fSx0LnByb3RvdHlwZS5fZ2V0UmVzaXppbmdFZGdlcz1mdW5jdGlvbihyKXt2YXIgbj17dG9wOiExLGJvdHRvbTohMSxsZWZ0OiExLHJpZ2h0OiExfTtpZighdGhpcy5yZXNpemFibGUoKSlyZXR1cm4gbjt2YXIgaT10aGlzLmJvdW5kcygpLG89aS50b3BMZWZ0LnksYT1pLmJvdHRvbVJpZ2h0Lnkscz1pLnRvcExlZnQueCxsPWkuYm90dG9tUmlnaHQueCxjPXRoaXMuX2RldGVjdGlvblJhZGl1cztyZXR1cm4gcy1jPD1yLngmJnIueDw9bCtjJiYobi50b3A9by1jPD1yLnkmJnIueTw9bytjLG4uYm90dG9tPWEtYzw9ci55JiZyLnk8PWErYyksby1jPD1yLnkmJnIueTw9YStjJiYobi5sZWZ0PXMtYzw9ci54JiZyLng8PXMrYyxuLnJpZ2h0PWwtYzw9ci54JiZyLng8PWwrYyksbn0sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtpZihlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuYm94VmlzaWJsZSgpKXt2YXIgcj10aGlzLmJvdW5kcygpLG49ci50b3BMZWZ0LnksaT1yLmJvdHRvbVJpZ2h0Lnksbz1yLnRvcExlZnQueCxhPXIuYm90dG9tUmlnaHQueDt0aGlzLl9kZXRlY3Rpb25FZGdlVC5hdHRycyh7eDE6byx5MTpuLHgyOmEseTI6biwic3Ryb2tlLXdpZHRoIjp0aGlzLl9kZXRlY3Rpb25SYWRpdXMqMn0pLHRoaXMuX2RldGVjdGlvbkVkZ2VCLmF0dHJzKHt4MTpvLHkxOmkseDI6YSx5MjppLCJzdHJva2Utd2lkdGgiOnRoaXMuX2RldGVjdGlvblJhZGl1cyoyfSksdGhpcy5fZGV0ZWN0aW9uRWRnZUwuYXR0cnMoe3gxOm8seTE6bix4MjpvLHkyOmksInN0cm9rZS13aWR0aCI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzKjJ9KSx0aGlzLl9kZXRlY3Rpb25FZGdlUi5hdHRycyh7eDE6YSx5MTpuLHgyOmEseTI6aSwic3Ryb2tlLXdpZHRoIjp0aGlzLl9kZXRlY3Rpb25SYWRpdXMqMn0pLHRoaXMuX2hhc0Nvcm5lcnMmJih0aGlzLl9kZXRlY3Rpb25Db3JuZXJUTC5hdHRycyh7Y3g6byxjeTpuLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyVFIuYXR0cnMoe2N4OmEsY3k6bixyOnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkNvcm5lckJMLmF0dHJzKHtjeDpvLGN5Omkscjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCUi5hdHRycyh7Y3g6YSxjeTppLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSkpfXJldHVybiB0aGlzfSx0LnByb3RvdHlwZS5kZXRlY3Rpb25SYWRpdXM9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fZGV0ZWN0aW9uUmFkaXVzO2lmKHI8MCl0aHJvdyBuZXcgRXJyb3IoImRldGVjdGlvbiByYWRpdXMgY2Fubm90IGJlIG5lZ2F0aXZlLiIpO3JldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM9cix0aGlzLnJlbmRlcigpLHRoaXN9LHQucHJvdG90eXBlLnJlc2l6YWJsZT1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9yZXNpemFibGU6KHRoaXMuX3Jlc2l6YWJsZT1yLHRoaXMuX3NldFJlc2l6YWJsZUNsYXNzZXMociksdGhpcyl9LHQucHJvdG90eXBlLl9zZXRSZXNpemFibGVDbGFzc2VzPWZ1bmN0aW9uKHIpe3ImJnRoaXMuZW5hYmxlZCgpPyh0aGlzLmFkZENsYXNzKCJ4LXJlc2l6YWJsZSIpLHRoaXMuYWRkQ2xhc3MoInktcmVzaXphYmxlIikpOih0aGlzLnJlbW92ZUNsYXNzKCJ4LXJlc2l6YWJsZSIpLHRoaXMucmVtb3ZlQ2xhc3MoInktcmVzaXphYmxlIikpfSx0LnByb3RvdHlwZS5tb3ZhYmxlPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX21vdmFibGU6KHRoaXMuX21vdmFibGU9cix0aGlzLl9zZXRNb3ZhYmxlQ2xhc3MoKSx0aGlzKX0sdC5wcm90b3R5cGUuX3NldE1vdmFibGVDbGFzcz1mdW5jdGlvbigpe3RoaXMubW92YWJsZSgpJiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJtb3ZhYmxlIik6dGhpcy5yZW1vdmVDbGFzcygibW92YWJsZSIpfSx0LnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZChyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUociksdGhpc30sdC5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZChyKSx0aGlzfSx0LnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZShyKSx0aGlzfSx0LnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHIpLHRoaXN9LHQucHJvdG90eXBlLmRyYWdJbnRlcmFjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnSW50ZXJhY3Rpb259LHQucHJvdG90eXBlLmVuYWJsZWQ9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQoKToodGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQociksdGhpcy5fc2V0UmVzaXphYmxlQ2xhc3Nlcyh0aGlzLnJlc2l6YWJsZSgpKSx0aGlzLl9zZXRNb3ZhYmxlQ2xhc3MoKSx0aGlzKX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciByPXRoaXM7ZS5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiByLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZShuKX0pLHRoaXMuX2RyYWdDYWxsYmFja3MuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gci5fZHJhZ0NhbGxiYWNrcy5kZWxldGUobil9KSx0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIHIuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKG4pfSksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uKCl9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNldFN0YXRlKCksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpLGUucHJvdG90eXBlLmRldGFjaC5jYWxsKHRoaXMpLHRoaXN9LHQucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihyKXtyZXR1cm4gcj1yQmUuY29lcmNlRXh0ZXJuYWxEMyhyKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8odGhpcyksZS5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxyKSx0aGlzfSx0LnByb3RvdHlwZS5fcmVzZXRTdGF0ZT1mdW5jdGlvbigpe3RoaXMuYm91bmRzKHt0b3BMZWZ0Ont4OjAseTowfSxib3R0b21SaWdodDp7eDowLHk6MH19KX0sdH0obkJlLlNlbGVjdGlvbkJveExheWVyKTtDb3QuRHJhZ0JveExheWVyPWlCZX0pO3ZhciBJb3Q9SChQb3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFBvdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG9CZT0oZGUoKSxVdChwZSkpLGFCZT1GZSgpLHNCZT1JYygpLE92OyhmdW5jdGlvbihlKXtlW2UuVkFMVUU9MF09IlZBTFVFIixlW2UuUElYRUw9MV09IlBJWEVMIn0pKE92fHwoT3Y9e30pKTt2YXIgbEJlPWZ1bmN0aW9uKGUpe29CZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KHIpe3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztpZihuLl9tb2RlPU92LlZBTFVFLHIhPT10Lk9SSUVOVEFUSU9OX1ZFUlRJQ0FMJiZyIT09dC5PUklFTlRBVElPTl9IT1JJWk9OVEFMKXRocm93IG5ldyBFcnJvcihyKyIgaXMgbm90IGEgdmFsaWQgb3JpZW50YXRpb24gZm9yIEd1aWRlTGluZUxheWVyIik7cmV0dXJuIG4uX29yaWVudGF0aW9uPXIsbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5hZGRDbGFzcygiZ3VpZGUtbGluZS1sYXllciIpLG4uX2lzVmVydGljYWwoKT9uLmFkZENsYXNzKCJ2ZXJ0aWNhbCIpOm4uYWRkQ2xhc3MoImhvcml6b250YWwiKSxuLl9zY2FsZVVwZGF0ZUNhbGxiYWNrPWZ1bmN0aW9uKCl7bi5fc3luY1BpeGVsUG9zaXRpb25BbmRWYWx1ZSgpLG4ucmVuZGVyKCl9LG59cmV0dXJuIHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe2UucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX2d1aWRlTGluZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJndWlkZS1saW5lIiwhMCl9LHQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHIsbil7cmV0dXJue3dpZHRoOnIsaGVpZ2h0Om59fSx0LnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmllbnRhdGlvbj09PXQuT1JJRU5UQVRJT05fVkVSVElDQUx9LHQucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihyLG4saSl7cmV0dXJuIGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLHIsbixpKSx0aGlzLnNjYWxlKCkhPW51bGwmJih0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5zY2FsZSgpLnJhbmdlKFswLHRoaXMud2lkdGgoKV0pOnRoaXMuc2NhbGUoKS5yYW5nZShbdGhpcy5oZWlnaHQoKSwwXSkpLHRoaXN9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fc3luY1BpeGVsUG9zaXRpb25BbmRWYWx1ZSgpLHRoaXMuX2d1aWRlTGluZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKX0pLHRoaXN9LHQucHJvdG90eXBlLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlPWZ1bmN0aW9uKCl7dGhpcy5zY2FsZSgpIT1udWxsJiYodGhpcy5fbW9kZT09PU92LlZBTFVFJiZ0aGlzLnZhbHVlKCkhPW51bGw/dGhpcy5fcGl4ZWxQb3NpdGlvbj10aGlzLnNjYWxlKCkuc2NhbGUodGhpcy52YWx1ZSgpKTp0aGlzLl9tb2RlPT09T3YuUElYRUwmJnRoaXMucGl4ZWxQb3NpdGlvbigpIT1udWxsJiYodGhpcy5fdmFsdWU9dGhpcy5zY2FsZSgpLmludmVydCh0aGlzLnBpeGVsUG9zaXRpb24oKSkpKX0sdC5wcm90b3R5cGUuX3NldFBpeGVsUG9zaXRpb25XaXRob3V0Q2hhbmdpbmdNb2RlPWZ1bmN0aW9uKHIpe3RoaXMuX3BpeGVsUG9zaXRpb249cix0aGlzLnNjYWxlKCkhPW51bGwmJih0aGlzLl92YWx1ZT10aGlzLnNjYWxlKCkuaW52ZXJ0KHRoaXMucGl4ZWxQb3NpdGlvbigpKSksdGhpcy5yZW5kZXIoKX0sdC5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fc2NhbGU7dmFyIG49dGhpcy5fc2NhbGU7cmV0dXJuIG4hPW51bGwmJm4ub2ZmVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spLHRoaXMuX3NjYWxlPXIsdGhpcy5fc2NhbGUub25VcGRhdGUodGhpcy5fc2NhbGVVcGRhdGVDYWxsYmFjayksdGhpcy5fc3luY1BpeGVsUG9zaXRpb25BbmRWYWx1ZSgpLHRoaXMucmVkcmF3KCksdGhpc30sdC5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fdmFsdWU6KHRoaXMuX3ZhbHVlPXIsdGhpcy5fbW9kZT1Pdi5WQUxVRSx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUucGl4ZWxQb3NpdGlvbj1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl9waXhlbFBvc2l0aW9uO2lmKCFhQmUuTWF0aC5pc1ZhbGlkTnVtYmVyKHIpKXRocm93IG5ldyBFcnJvcigicGl4ZWxQb3NpdGlvbiBtdXN0IGJlIGEgZmluaXRlIG51bWJlciIpO3JldHVybiB0aGlzLl9waXhlbFBvc2l0aW9uPXIsdGhpcy5fbW9kZT1Pdi5QSVhFTCx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5yZW5kZXIoKSx0aGlzfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuc2NhbGUoKSE9bnVsbCYmdGhpcy5zY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKX0sdC5PUklFTlRBVElPTl9WRVJUSUNBTD0idmVydGljYWwiLHQuT1JJRU5UQVRJT05fSE9SSVpPTlRBTD0iaG9yaXpvbnRhbCIsdH0oc0JlLkNvbXBvbmVudCk7UG90Lkd1aWRlTGluZUxheWVyPWxCZX0pO3ZhciBiJHQ9SChrb3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGtvdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGNCZT0oZGUoKSxVdChwZSkpLHVCZT1Jb3QoKSxoQmU9bzQoKSxMb3Q9RmUoKSxmQmU9ZnVuY3Rpb24oZSl7Y0JlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMscil8fHRoaXM7bi5fZGV0ZWN0aW9uUmFkaXVzPTMsbi5fZW5hYmxlZD0hMCxuLmFkZENsYXNzKCJkcmFnLWxpbmUtbGF5ZXIiKSxuLmFkZENsYXNzKCJlbmFibGVkIiksbi5fZHJhZ0ludGVyYWN0aW9uPW5ldyBoQmUuRHJhZyxuLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8obik7dmFyIGk9ZnVuY3Rpb24oYyl7cmV0dXJuIG4uX2lzVmVydGljYWwoKSYmbi5waXhlbFBvc2l0aW9uKCktbi5kZXRlY3Rpb25SYWRpdXMoKTw9Yy54JiZjLng8PW4ucGl4ZWxQb3NpdGlvbigpK24uZGV0ZWN0aW9uUmFkaXVzKCl8fCFuLl9pc1ZlcnRpY2FsKCkmJm4ucGl4ZWxQb3NpdGlvbigpLW4uZGV0ZWN0aW9uUmFkaXVzKCk8PWMueSYmYy55PD1uLnBpeGVsUG9zaXRpb24oKStuLmRldGVjdGlvblJhZGl1cygpfSxvPSExLGE9ZnVuY3Rpb24oYyl7aShjKSYmKG89ITAsbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtuLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQoYSk7dmFyIHM9ZnVuY3Rpb24oYyx1KXtvJiYobi5fc2V0UGl4ZWxQb3NpdGlvbldpdGhvdXRDaGFuZ2luZ01vZGUobi5faXNWZXJ0aWNhbCgpP3UueDp1LnkpLG4uX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSl9O24uX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcocyk7dmFyIGw9ZnVuY3Rpb24oYyx1KXtvJiYobz0hMSxuLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobikpfTtyZXR1cm4gbi5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChsKSxuLl9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtuLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KGEpLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKHMpLG4uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKGwpLG4uX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX0sbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBMb3QuQ2FsbGJhY2tTZXQsbi5fZHJhZ0NhbGxiYWNrcz1uZXcgTG90LkNhbGxiYWNrU2V0LG4uX2RyYWdFbmRDYWxsYmFja3M9bmV3IExvdC5DYWxsYmFja1NldCxufXJldHVybiB0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9kZXRlY3Rpb25FZGdlPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLnN0eWxlcyh7b3BhY2l0eTowLHN0cm9rZToicGluayIsInBvaW50ZXItZXZlbnRzIjoidmlzaWJsZVN0cm9rZSJ9KS5jbGFzc2VkKCJkcmFnLWVkZ2UiLCEwKX0sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9kZXRlY3Rpb25FZGdlLmF0dHJzKHt4MTp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6MCx5MTp0aGlzLl9pc1ZlcnRpY2FsKCk/MDp0aGlzLnBpeGVsUG9zaXRpb24oKSx4Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6dGhpcy53aWR0aCgpLHkyOnRoaXMuX2lzVmVydGljYWwoKT90aGlzLmhlaWdodCgpOnRoaXMucGl4ZWxQb3NpdGlvbigpLCJzdHJva2Utd2lkdGgiOnRoaXMuX2RldGVjdGlvblJhZGl1cyoyfSksdGhpc30sdC5wcm90b3R5cGUuZGV0ZWN0aW9uUmFkaXVzPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cztpZihyPDApdGhyb3cgbmV3IEVycm9yKCJkZXRlY3Rpb24gcmFkaXVzIGNhbm5vdCBiZSBuZWdhdGl2ZS4iKTtyZXR1cm4gdGhpcy5fZGV0ZWN0aW9uUmFkaXVzPXIsdGhpcy5yZW5kZXIoKSx0aGlzfSx0LnByb3RvdHlwZS5lbmFibGVkPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2VuYWJsZWQ6KHRoaXMuX2VuYWJsZWQ9cixyP3RoaXMuYWRkQ2xhc3MoImVuYWJsZWQiKTp0aGlzLnJlbW92ZUNsYXNzKCJlbmFibGVkIiksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQociksdGhpcyl9LHQucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZShyKSx0aGlzfSx0LnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHIpLHRoaXN9LHQucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHIpLHRoaXN9LHQucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQociksdGhpc30sdC5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUociksdGhpc30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciByPXRoaXM7ZS5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiByLl9kcmFnU3RhcnRDYWxsYmFja3MuZGVsZXRlKG4pfSksdGhpcy5fZHJhZ0NhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiByLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZShuKX0pLHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gci5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUobil9KSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb24oKX0sdH0odUJlLkd1aWRlTGluZUxheWVyKTtrb3QuRHJhZ0xpbmVMYXllcj1mQmV9KTt2YXIgdyR0PUgoUm90PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSb3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBwQmU9KGRlKCksVXQocGUpKSxkQmU9SWMoKTtmdW5jdGlvbiBWRihlLHQscil7dmFyIG49e307aWYociE9PXZvaWQgMClmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpLTFdLGE9cltpXTtuW2FdPW99cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBsPWUuc2NhbGUocyk7aWYoIXQpcmV0dXJuIGw7dmFyIGMsdT1uW3NdPT09dm9pZCAwP3ZvaWQgMDplLnNjYWxlKG5bc10pO3JldHVybiB1IT09dm9pZCAwJiYoYz11KyhsLXUpLzIpLGN9fXZhciBtQmU9ZnVuY3Rpb24oZSl7cEJlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocixuKXt2YXIgaT1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuYWRkQ2xhc3MoImdyaWRsaW5lcyIpLGkuX3hTY2FsZT1yLGkuX3lTY2FsZT1uLGkuX3JlbmRlckNhbGxiYWNrPWZ1bmN0aW9uKG8pe3JldHVybiBpLnJlbmRlcigpfSxpLl94U2NhbGUmJmkuX3hTY2FsZS5vblVwZGF0ZShpLl9yZW5kZXJDYWxsYmFjayksaS5feVNjYWxlJiZpLl95U2NhbGUub25VcGRhdGUoaS5fcmVuZGVyQ2FsbGJhY2spLGl9cmV0dXJuIHQucHJvdG90eXBlLmJldHdlZW5YPWZ1bmN0aW9uKHIpe3JldHVybiByPT09dm9pZCAwP3RoaXMuX2JldHdlZW5YOihyIT09dGhpcy5fYmV0d2VlblgmJih0aGlzLl9iZXR3ZWVuWD1yLHRoaXMucmVuZGVyKCkpLHRoaXMpfSx0LnByb3RvdHlwZS5iZXR3ZWVuWT1mdW5jdGlvbihyKXtyZXR1cm4gcj09PXZvaWQgMD90aGlzLl9iZXR3ZWVuWToociE9PXRoaXMuX2JldHdlZW5ZJiYodGhpcy5fYmV0d2Vlblk9cix0aGlzLnJlbmRlcigpKSx0aGlzKX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiBlLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSx0aGlzLl95U2NhbGUmJnRoaXMuX3lTY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spLHRoaXN9LHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe2UucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3hMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWdyaWRsaW5lcyIsITApLHRoaXMuX3lMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ5LWdyaWRsaW5lcyIsITApfSx0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3JldHVybiBlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuX3JlZHJhd1hMaW5lcygpLHRoaXMuX3JlZHJhd1lMaW5lcygpLHRoaXN9LHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24ocixuLGkpe3JldHVybiBlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxyLG4saSksdGhpcy5feFNjYWxlIT1udWxsJiZ0aGlzLl94U2NhbGUucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSksdGhpcy5feVNjYWxlIT1udWxsJiZ0aGlzLl95U2NhbGUucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LHQucHJvdG90eXBlLl9yZWRyYXdYTGluZXM9ZnVuY3Rpb24oKXtpZih0aGlzLl94U2NhbGUpe3ZhciByPXRoaXMuYmV0d2VlblgoKSxuPXRoaXMuX3hTY2FsZS50aWNrcygpLnNsaWNlKHI/MTowKSxpPXRoaXMuX3hMaW5lc0NvbnRhaW5lci5zZWxlY3RBbGwoImxpbmUiKS5kYXRhKG4pLG89aS5lbnRlcigpLmFwcGVuZCgibGluZSIpLm1lcmdlKGkpO28uYXR0cigieDEiLFZGKHRoaXMuX3hTY2FsZSxyLHRoaXMuX3hTY2FsZS50aWNrcygpKSkuYXR0cigieTEiLDApLmF0dHIoIngyIixWRih0aGlzLl94U2NhbGUscix0aGlzLl94U2NhbGUudGlja3MoKSkpLmF0dHIoInkyIix0aGlzLmhlaWdodCgpKS5jbGFzc2VkKCJiZXR3ZWVubGluZSIscikuY2xhc3NlZCgiemVyb2xpbmUiLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09MH0pLGkuZXhpdCgpLnJlbW92ZSgpfX0sdC5wcm90b3R5cGUuX3JlZHJhd1lMaW5lcz1mdW5jdGlvbigpe2lmKHRoaXMuX3lTY2FsZSl7dmFyIHI9dGhpcy5iZXR3ZWVuWSgpLG49dGhpcy5feVNjYWxlLnRpY2tzKCkuc2xpY2Uocj8xOjApLGk9dGhpcy5feUxpbmVzQ29udGFpbmVyLnNlbGVjdEFsbCgibGluZSIpLmRhdGEobiksbz1pLmVudGVyKCkuYXBwZW5kKCJsaW5lIikubWVyZ2UoaSk7by5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLFZGKHRoaXMuX3lTY2FsZSxyLHRoaXMuX3lTY2FsZS50aWNrcygpKSkuYXR0cigieDIiLHRoaXMud2lkdGgoKSkuYXR0cigieTIiLFZGKHRoaXMuX3lTY2FsZSxyLHRoaXMuX3lTY2FsZS50aWNrcygpKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLHIpLmNsYXNzZWQoInplcm9saW5lIixmdW5jdGlvbihhKXtyZXR1cm4gYT09PTB9KSxpLmV4aXQoKS5yZW1vdmUoKX19LHR9KGRCZS5Db21wb25lbnQpO1JvdC5HcmlkbGluZXM9bUJlfSk7dmFyIFVGPUgoTm90PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShOb3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBnQmU9KGRlKCksVXQocGUpKSxfQmU9WWcoKSx5QmU9SWMoKSx2QmU9ZnVuY3Rpb24oZSl7Z0JlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX2RldGFjaENhbGxiYWNrPWZ1bmN0aW9uKG4pe3JldHVybiByLnJlbW92ZShuKX0scn1yZXR1cm4gdC5wcm90b3R5cGUuYW5jaG9yPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7cmV0dXJuIHI9X0JlLmNvZXJjZUV4dGVybmFsRDMociksZS5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxyKSx0aGlzLl9mb3JFYWNoKGZ1bmN0aW9uKGkpe3JldHVybiBpLmFuY2hvcihuLmVsZW1lbnQoKSl9KSx0aGlzfSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9yRWFjaChmdW5jdGlvbihyKXtyZXR1cm4gci5yZW5kZXIoKX0pLHRoaXN9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbihyKXt0aHJvdyBuZXcgRXJyb3IoImhhcygpIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBDb21wb25lbnRDb250YWluZXIiKX0sdC5wcm90b3R5cGUuX2Fkb3B0QW5kQW5jaG9yPWZ1bmN0aW9uKHIpe3IucGFyZW50KHRoaXMpLHIub25EZXRhY2godGhpcy5fZGV0YWNoQ2FsbGJhY2spLHRoaXMuX2lzQW5jaG9yZWQmJnIuYW5jaG9yKHRoaXMuZWxlbWVudCgpKX0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLmhhcyhyKSYmKHIub2ZmRGV0YWNoKHRoaXMuX2RldGFjaENhbGxiYWNrKSx0aGlzLl9yZW1vdmUociksci5kZXRhY2goKSx0aGlzLnJlZHJhdygpKSx0aGlzfSx0LnByb3RvdHlwZS5fcmVtb3ZlPWZ1bmN0aW9uKHIpe3JldHVybiExfSx0LnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbihyKXt0aHJvdyBuZXcgRXJyb3IoIl9mb3JFYWNoKCkgaXMgbm90IGltcGxlbWVudGVkIG9uIENvbXBvbmVudENvbnRhaW5lciIpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX2ZvckVhY2goZnVuY3Rpb24ocil7cmV0dXJuIHIuZGVzdHJveSgpfSl9LHQucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3RoaXMuX2ZvckVhY2goZnVuY3Rpb24ocil7cmV0dXJuIHIuaW52YWxpZGF0ZUNhY2hlKCl9KX0sdH0oeUJlLkNvbXBvbmVudCk7Tm90LkNvbXBvbmVudENvbnRhaW5lcj12QmV9KTt2YXIgT290PUgoRG90PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShEb3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB4QmU9KGRlKCksVXQocGUpKSxTJHQ9RmUoKSxiQmU9VUYoKSx3QmU9ZnVuY3Rpb24oZSl7eEJlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cj09PXZvaWQgMCYmKHI9W10pO3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fY29tcG9uZW50cz1bXSxuLmFkZENsYXNzKCJjb21wb25lbnQtZ3JvdXAiKSxyLmZvckVhY2goZnVuY3Rpb24oaSl7cmV0dXJuIG4uYXBwZW5kKGkpfSksbn1yZXR1cm4gdC5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24ocil7dGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaChyKX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmluZGV4T2Yocik+PTB9LHQucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcy5fY29tcG9uZW50cy5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG8ucmVxdWVzdGVkU3BhY2UocixuKX0pO3JldHVybnttaW5XaWR0aDpTJHQuTWF0aC5tYXgoaSxmdW5jdGlvbihvKXtyZXR1cm4gby5taW5XaWR0aH0sMCksbWluSGVpZ2h0OlMkdC5NYXRoLm1heChpLGZ1bmN0aW9uKG8pe3JldHVybiBvLm1pbkhlaWdodH0sMCl9fSx0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHIsbixpKXt2YXIgbz10aGlzO3JldHVybiBlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxyLG4saSksdGhpcy5fZm9yRWFjaChmdW5jdGlvbihhKXthLmNvbXB1dGVMYXlvdXQoe3g6MCx5OjB9LG8ud2lkdGgoKSxvLmhlaWdodCgpKX0pLHRoaXN9LHQucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHIsbil7cmV0dXJue3dpZHRoOnIsaGVpZ2h0Om59fSx0LnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuZXZlcnkoZnVuY3Rpb24ocil7cmV0dXJuIHIuZml4ZWRXaWR0aCgpfSl9LHQucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuZXZlcnkoZnVuY3Rpb24ocil7cmV0dXJuIHIuZml4ZWRIZWlnaHQoKX0pfSx0LnByb3RvdHlwZS5jb21wb25lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuc2xpY2UoKX0sdC5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHIpe3JldHVybiByIT1udWxsJiYhdGhpcy5oYXMocikmJihyLmRldGFjaCgpLHRoaXMuX2NvbXBvbmVudHMucHVzaChyKSx0aGlzLl9hZG9wdEFuZEFuY2hvcihyKSx0aGlzLnJlZHJhdygpKSx0aGlzfSx0LnByb3RvdHlwZS5fcmVtb3ZlPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuX2NvbXBvbmVudHMuaW5kZXhPZihyKTtyZXR1cm4gbj49MD8odGhpcy5fY29tcG9uZW50cy5zcGxpY2UobiwxKSwhMCk6ITF9LHR9KGJCZS5Db21wb25lbnRDb250YWluZXIpO0RvdC5Hcm91cD13QmV9KTt2YXIgTSR0PUgoem90PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh6b3QsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBTQmU9KGRlKCksVXQocGUpKSxxRj1nbCgpLE1CZT1ZQSgpLEVCZT1GdSgpLFRCZT1GZSgpLENCZT1JYygpLEFCZT1mdW5jdGlvbihlKXtTQmUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdChyKXt2YXIgbj1lLmNhbGwodGhpcyl8fHRoaXM7aWYobi5fdGV4dFBhZGRpbmc9NSxyPT1udWxsKXRocm93IG5ldyBFcnJvcigiSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQgcmVxdWlyZXMgYSBpbnRlcnBvbGF0ZWRDb2xvclNjYWxlIik7cmV0dXJuIG4uX3NjYWxlPXIsbi5fcmVkcmF3Q2FsbGJhY2s9ZnVuY3Rpb24oaSl7cmV0dXJuIG4ucmVkcmF3KCl9LG4uX3NjYWxlLm9uVXBkYXRlKG4uX3JlZHJhd0NhbGxiYWNrKSxuLl9mb3JtYXR0ZXI9RUJlLmdlbmVyYWwoKSxuLl9vcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIsbi5fZXhwYW5kcz0hMSxuLmFkZENsYXNzKCJsZWdlbmQiKSxuLmFkZENsYXNzKCJpbnRlcnBvbGF0ZWQtY29sb3ItbGVnZW5kIiksbn1yZXR1cm4gdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2UucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9zY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spfSx0LnByb3RvdHlwZS5mb3JtYXR0ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT12b2lkIDA/dGhpcy5fZm9ybWF0dGVyOih0aGlzLl9mb3JtYXR0ZXI9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5leHBhbmRzPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2V4cGFuZHM6KHRoaXMuX2V4cGFuZHM9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0Ll9lbnN1cmVPcmllbnRhdGlvbj1mdW5jdGlvbihyKXtpZihyPXIudG9Mb3dlckNhc2UoKSxyPT09Imhvcml6b250YWwifHxyPT09ImxlZnQifHxyPT09InJpZ2h0IilyZXR1cm4gcjt0aHJvdyBuZXcgRXJyb3IoJyInK3IrJyIgaXMgbm90IGEgdmFsaWQgb3JpZW50YXRpb24gZm9yIEludGVycG9sYXRlZENvbG9yTGVnZW5kJyl9LHQucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX29yaWVudGF0aW9uOih0aGlzLl9vcmllbnRhdGlvbj10Ll9lbnN1cmVPcmllbnRhdGlvbihyKSx0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZXhwYW5kcygpfHx0aGlzLl9pc1ZlcnRpY2FsKCl9LHQucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZXhwYW5kcygpfHwhdGhpcy5faXNWZXJ0aWNhbCgpfSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVUaWNrcz1mdW5jdGlvbihyKXtyPT09dm9pZCAwJiYocj10Ll9ERUZBVUxUX05VTV9TV0FUQ0hFUyk7dmFyIG49dGhpcy5fc2NhbGUuZG9tYWluKCk7aWYocj09PTEpcmV0dXJuW25bMF1dO2Zvcih2YXIgaT0oblsxXS1uWzBdKS8oci0xKSxvPVtdLGE9MDthPHI7YSsrKW8ucHVzaChuWzBdK2kqYSk7cmV0dXJuIG99LHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe2UucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3N3YXRjaENvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJzd2F0Y2gtY29udGFpbmVyIiwhMCksdGhpcy5fc3dhdGNoQm91bmRpbmdCb3g9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJyZWN0IikuY2xhc3NlZCgic3dhdGNoLWJvdW5kaW5nLWJveCIsITApLHRoaXMuX2xvd2VyTGFiZWw9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCh0LkxFR0VORF9MQUJFTF9DTEFTUywhMCksdGhpcy5fdXBwZXJMYWJlbD10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKHQuTEVHRU5EX0xBQkVMX0NMQVNTLCEwKTt2YXIgcj1uZXcgcUYuU3ZnQ29udGV4dCh0aGlzLmNvbnRlbnQoKS5ub2RlKCkpO3RoaXMuX21lYXN1cmVyPW5ldyBxRi5NZWFzdXJlcihyKSx0aGlzLl93cmFwcGVyPW5ldyBxRi5XcmFwcGVyLHRoaXMuX3dyaXRlcj1uZXcgcUYuV3JpdGVyKHRoaXMuX21lYXN1cmVyLHIsdGhpcy5fd3JhcHBlcil9LHQucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcyxvPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsYT1vLHM9dGhpcy5fc2NhbGUuZG9tYWluKCksbD1zLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gaS5fbWVhc3VyZXIubWVhc3VyZShpLl9mb3JtYXR0ZXIocCkpLndpZHRofSksYyx1LGg9dC5fREVGQVVMVF9OVU1fU1dBVENIRVM7aWYodGhpcy5faXNWZXJ0aWNhbCgpKXt2YXIgZj1UQmUuTWF0aC5tYXgobCwwKTt1PWErbyt0aGlzLl90ZXh0UGFkZGluZytmK3RoaXMuX3RleHRQYWRkaW5nLGM9aCpvfWVsc2UgYz1hK28rYSx1PXRoaXMuX3RleHRQYWRkaW5nK2xbMF0raCpvK2xbMV0rdGhpcy5fdGV4dFBhZGRpbmc7cmV0dXJue21pbldpZHRoOnUsbWluSGVpZ2h0OmN9fSx0LnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmllbnRhdGlvbiE9PSJob3Jpem9udGFsIn0sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgcj10aGlzO2UucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG49dGhpcy5fc2NhbGUuZG9tYWluKCksaT10aGlzLl9mb3JtYXR0ZXIoblswXSksbz10aGlzLl9tZWFzdXJlci5tZWFzdXJlKGkpLndpZHRoLGE9dGhpcy5fZm9ybWF0dGVyKG5bMV0pLHM9dGhpcy5fbWVhc3VyZXIubWVhc3VyZShhKS53aWR0aCxsPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsYz10aGlzLl90ZXh0UGFkZGluZyx1PXt4OjAseTowfSxoPXt4OjAseTowfSxmPXt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIiLHRleHRSb3RhdGlvbjowfSxwPXt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIiLHRleHRSb3RhdGlvbjowfSxkLGcsXyx5LHg9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH0sYixTO2lmKHRoaXMuX2lzVmVydGljYWwoKSl7Uz1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KCkpO3ZhciBDPU1hdGgubWF4KG8scyk7Yj0odGhpcy53aWR0aCgpLUMtMip0aGlzLl90ZXh0UGFkZGluZykvMixkPU1hdGgubWF4KHRoaXMud2lkdGgoKS1iLTIqYy1DLDApLGc9MSx5PWZ1bmN0aW9uKEwsUil7cmV0dXJuIHIuaGVpZ2h0KCktKFIrMSl9LHAueUFsaWduPSJ0b3AiLHUueT0wLGYueUFsaWduPSJib3R0b20iLGgueT0wLHRoaXMuX29yaWVudGF0aW9uPT09ImxlZnQiPyhfPWZ1bmN0aW9uKEwsUil7cmV0dXJuIGMrQytjfSxwLnhBbGlnbj0icmlnaHQiLHUueD0tKGIrZCtjKSxmLnhBbGlnbj0icmlnaHQiLGgueD0tKGIrZCtjKSk6KF89ZnVuY3Rpb24oTCxSKXtyZXR1cm4gYn0scC54QWxpZ249ImxlZnQiLHUueD1iK2QrYyxmLnhBbGlnbj0ibGVmdCIsaC54PWIrZCtjKSx4LndpZHRoPWQseC5oZWlnaHQ9UypnfWVsc2UgYj1NYXRoLm1heChjLCh0aGlzLmhlaWdodCgpLWwpLzIpLFM9TWF0aC5tYXgoTWF0aC5mbG9vcih0aGlzLndpZHRoKCktYyo0LW8tcyksMCksZD0xLGc9TWF0aC5tYXgodGhpcy5oZWlnaHQoKS0yKmIsMCksXz1mdW5jdGlvbihMLFIpe3JldHVybiBNYXRoLmZsb29yKG8rMipjKStSfSx5PWZ1bmN0aW9uKEwsUil7cmV0dXJuIGJ9LHAueEFsaWduPSJyaWdodCIsdS54PS1jLGYueEFsaWduPSJsZWZ0IixoLng9Yyx4Lnk9Yix4LndpZHRoPVMqZCx4LmhlaWdodD1nO3gueD1fKG51bGwsMCksdGhpcy5fdXBwZXJMYWJlbC50ZXh0KCIiKSx0aGlzLl93cml0ZXIud3JpdGUoYSx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSxwLHRoaXMuX3VwcGVyTGFiZWwubm9kZSgpKTt2YXIgUD0idHJhbnNsYXRlKCIrdS54KyIsICIrdS55KyIpIjt0aGlzLl91cHBlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsUCksdGhpcy5fbG93ZXJMYWJlbC50ZXh0KCIiKSx0aGlzLl93cml0ZXIud3JpdGUoaSx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSxmLHRoaXMuX2xvd2VyTGFiZWwubm9kZSgpKTt2YXIgaz0idHJhbnNsYXRlKCIraC54KyIsICIraC55KyIpIjt0aGlzLl9sb3dlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsayksdGhpcy5fc3dhdGNoQm91bmRpbmdCb3guYXR0cnMoeCk7dmFyIE89dGhpcy5fZ2VuZXJhdGVUaWNrcyhTKSxEPXRoaXMuX3N3YXRjaENvbnRhaW5lci5zZWxlY3RBbGwoInJlY3Quc3dhdGNoIikuZGF0YShPKSxCPUQuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzd2F0Y2giLCEwKSxJPUQubWVyZ2UoQik7cmV0dXJuIEQuZXhpdCgpLnJlbW92ZSgpLEkuYXR0cnMoe2ZpbGw6ZnVuY3Rpb24oTCxSKXtyZXR1cm4gci5fc2NhbGUuc2NhbGUoTCl9LHdpZHRoOmQsaGVpZ2h0OmcseDpfLHksInNoYXBlLXJlbmRlcmluZyI6ImNyaXNwRWRnZXMifSksTUJlLkFERF9USVRMRV9FTEVNRU5UUyYmQi5hcHBlbmQoInRpdGxlIikudGV4dChmdW5jdGlvbihMKXtyZXR1cm4gci5fZm9ybWF0dGVyKEwpfSksdGhpc30sdC5fREVGQVVMVF9OVU1fU1dBVENIRVM9MTEsdC5MRUdFTkRfTEFCRUxfQ0xBU1M9ImxlZ2VuZC1sYWJlbCIsdH0oQ0JlLkNvbXBvbmVudCk7em90LkludGVycG9sYXRlZENvbG9yTGVnZW5kPUFCZX0pO3ZhciBIb3Q9SChsND0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobDQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBGb3Q9KGRlKCksVXQocGUpKSxHRj1nbCgpLFBCZT1JYygpLEJvdD1mdW5jdGlvbihlKXtGb3QuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdChyLG4pe3I9PT12b2lkIDAmJihyPSIiKSxuPT09dm9pZCAwJiYobj0wKTt2YXIgaT1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuYWRkQ2xhc3MoImxhYmVsIiksaS50ZXh0KHIpLGkuYW5nbGUobiksaS54QWxpZ25tZW50KCJjZW50ZXIiKS55QWxpZ25tZW50KCJjZW50ZXIiKSxpLl9wYWRkaW5nPTAsaX1yZXR1cm4gdC5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24ocixuKXt2YXIgaT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKHRoaXMuX3RleHQpLG89KHRoaXMuYW5nbGUoKT09PTA/aS53aWR0aDppLmhlaWdodCkrMip0aGlzLnBhZGRpbmcoKSxhPSh0aGlzLmFuZ2xlKCk9PT0wP2kuaGVpZ2h0Omkud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCk7cmV0dXJue21pbldpZHRoOm8sbWluSGVpZ2h0OmF9fSx0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl90ZXh0Q29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpO3ZhciByPW5ldyBHRi5TdmdDb250ZXh0KHRoaXMuX3RleHRDb250YWluZXIubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgR0YuQ2FjaGVNZWFzdXJlcihyKSx0aGlzLl93cmFwcGVyPW5ldyBHRi5XcmFwcGVyLHRoaXMuX3dyaXRlcj1uZXcgR0YuV3JpdGVyKHRoaXMuX21lYXN1cmVyLHIsdGhpcy5fd3JhcHBlciksdGhpcy50ZXh0KHRoaXMuX3RleHQpfSx0LnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX3RleHQ7aWYodHlwZW9mIHIhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiTGFiZWwudGV4dCgpIG9ubHkgdGFrZXMgc3RyaW5ncyBhcyBpbnB1dCIpO3JldHVybiB0aGlzLl90ZXh0PXIsdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5hbmdsZT1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl9hbmdsZTtpZihyJT0zNjAscj4xODA/ci09MzYwOnI8LTE4MCYmKHIrPTM2MCkscj09PS05MHx8cj09PTB8fHI9PT05MCl0aGlzLl9hbmdsZT1yO2Vsc2UgdGhyb3cgbmV3IEVycm9yKHIrIiBpcyBub3QgYSB2YWxpZCBhbmdsZSBmb3IgTGFiZWwiKTtyZXR1cm4gdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5wYWRkaW5nPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX3BhZGRpbmc7aWYocj0rcixyPDApdGhyb3cgbmV3IEVycm9yKHIrIiBpcyBub3QgYSB2YWxpZCBwYWRkaW5nIHZhbHVlLiBDYW5ub3QgYmUgbGVzcyB0aGFuIDAuIik7cmV0dXJuIHRoaXMuX3BhZGRpbmc9cix0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuX3RleHRDb250YWluZXIuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCk7dmFyIHI9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSh0aGlzLl90ZXh0KSxuPU1hdGgubWF4KE1hdGgubWluKCh0aGlzLmhlaWdodCgpLXIuaGVpZ2h0KS8yLHRoaXMucGFkZGluZygpKSwwKSxpPU1hdGgubWF4KE1hdGgubWluKCh0aGlzLndpZHRoKCktci53aWR0aCkvMix0aGlzLnBhZGRpbmcoKSksMCk7dGhpcy5fdGV4dENvbnRhaW5lci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpKyIsIituKyIpIik7dmFyIG89dGhpcy53aWR0aCgpLTIqaSxhPXRoaXMuaGVpZ2h0KCktMipuLHM9e3hBbGlnbjp0aGlzLnhBbGlnbm1lbnQoKSx5QWxpZ246dGhpcy55QWxpZ25tZW50KCksdGV4dFJvdGF0aW9uOnRoaXMuYW5nbGUoKX07cmV0dXJuIHRoaXMuX3dyaXRlci53cml0ZSh0aGlzLl90ZXh0LG8sYSxzKSx0aGlzfSx0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9tZWFzdXJlci5yZXNldCgpfSx0fShQQmUuQ29tcG9uZW50KTtsNC5MYWJlbD1Cb3Q7dmFyIElCZT1mdW5jdGlvbihlKXtGb3QuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdChyLG4pe3ZhciBpPWUuY2FsbCh0aGlzLHIsbil8fHRoaXM7cmV0dXJuIGkuYWRkQ2xhc3ModC5USVRMRV9MQUJFTF9DTEFTUyksaX1yZXR1cm4gdC5USVRMRV9MQUJFTF9DTEFTUz0idGl0bGUtbGFiZWwiLHR9KEJvdCk7bDQuVGl0bGVMYWJlbD1JQmU7dmFyIExCZT1mdW5jdGlvbihlKXtGb3QuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdChyLG4pe3ZhciBpPWUuY2FsbCh0aGlzLHIsbil8fHRoaXM7cmV0dXJuIGkuYWRkQ2xhc3ModC5BWElTX0xBQkVMX0NMQVNTKSxpfXJldHVybiB0LkFYSVNfTEFCRUxfQ0xBU1M9ImF4aXMtbGFiZWwiLHR9KEJvdCk7bDQuQXhpc0xhYmVsPUxCZX0pO3ZhciBXRj1IKGJkPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiZCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGtzPShFcigpLFV0KE1yKSk7ZnVuY3Rpb24ga0JlKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBrcy5zeW1ib2woKS50eXBlKGtzLnN5bWJvbENpcmNsZSkuc2l6ZShNYXRoLlBJKk1hdGgucG93KGUvMiwyKSl9fWJkLmNpcmNsZT1rQmU7ZnVuY3Rpb24gUkJlKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBrcy5zeW1ib2woKS50eXBlKGtzLnN5bWJvbFNxdWFyZSkuc2l6ZShNYXRoLnBvdyhlLDIpKX19YmQuc3F1YXJlPVJCZTtmdW5jdGlvbiBOQmUoKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGtzLnN5bWJvbCgpLnR5cGUoa3Muc3ltYm9sQ3Jvc3MpLnNpemUoNS85Kk1hdGgucG93KGUsMikpfX1iZC5jcm9zcz1OQmU7ZnVuY3Rpb24gREJlKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBrcy5zeW1ib2woKS50eXBlKGtzLnN5bWJvbERpYW1vbmQpLnNpemUoTWF0aC50YW4oTWF0aC5QSS82KSpNYXRoLnBvdyhlLDIpLzIpfX1iZC5kaWFtb25kPURCZTtmdW5jdGlvbiBPQmUoKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGtzLnN5bWJvbCgpLnR5cGUoa3Muc3ltYm9sVHJpYW5nbGUpLnNpemUoTWF0aC5zcXJ0KDMpKk1hdGgucG93KGUvMiwyKSl9fWJkLnRyaWFuZ2xlPU9CZTt2YXIgekJlPS44OTA4MTMwOTE1MjkyODUyO2Z1bmN0aW9uIEZCZSgpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4ga3Muc3ltYm9sKCkudHlwZShrcy5zeW1ib2xTdGFyKS5zaXplKHpCZSpNYXRoLnBvdyhlLzIsMikpfX1iZC5zdGFyPUZCZTt2YXIgQkJlPSgxL01hdGguc3FydCgxMikvMisxKSozO2Z1bmN0aW9uIEhCZSgpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4ga3Muc3ltYm9sKCkudHlwZShrcy5zeW1ib2xXeWUpLnNpemUoQkJlKk1hdGgucG93KGUvMi40LDIpKX19YmQud3llPUhCZX0pO3ZhciBFJHQ9SChVb3Q9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFVvdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFZCZT0oZGUoKSxVdChwZSkpLHp2PShFcigpLFV0KE1yKSksWUY9Z2woKSxVQmU9WUEoKSxxQmU9RnUoKSxHQmU9V0YoKSxKZz1GZSgpLFdCZT1JYygpLFZvdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG4pe3Q9PT12b2lkIDAmJih0PVtdKSxyPT09dm9pZCAwJiYocj0wKSxuPT09dm9pZCAwJiYobj0xLzApLHRoaXMuY29sdW1ucz10LHRoaXMuYm90dG9tUGFkZGluZz1yLHRoaXMubWF4V2lkdGg9bn1yZXR1cm4gZS5wcm90b3R5cGUuYWRkQ29sdW1uPWZ1bmN0aW9uKHQpe3ZhciByPXQud2lkdGgsbj10aGlzLmdldFdpZHRoQXZhaWxhYmxlKCk7dC53aWR0aD1NYXRoLm1pbihuLHIpLHRoaXMuY29sdW1ucy5wdXNoKHQpfSxlLnByb3RvdHlwZS5nZXRCb3VuZHM9ZnVuY3Rpb24odCl7Zm9yKHZhciByPXRoaXMuY29sdW1uc1t0XSxuPTAsaT0wO2k8dDtpKyspbis9dGhpcy5jb2x1bW5zW2ldLndpZHRoO3JldHVybnt0b3BMZWZ0Ont4Om4seTowfSxib3R0b21SaWdodDp7eDpuK3Iud2lkdGgseTpyLmhlaWdodH19fSxlLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gSmcuTWF0aC5tYXgodGhpcy5jb2x1bW5zLm1hcChmdW5jdGlvbih0KXt2YXIgcj10LmhlaWdodDtyZXR1cm4gcn0pLDApK3RoaXMuYm90dG9tUGFkZGluZ30sZS5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5jb2x1bW5zLnJlZHVjZShmdW5jdGlvbih0LHIpe3ZhciBuPXIud2lkdGg7cmV0dXJuIHQrbn0sMCksdGhpcy5tYXhXaWR0aCl9LGUucHJvdG90eXBlLmdldFdpZHRoQXZhaWxhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRXaWR0aCgpO3JldHVybiBNYXRoLm1heCh0aGlzLm1heFdpZHRoLXQsMCl9LGV9KCksWUJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbixpKXt0PT09dm9pZCAwJiYodD0xLzApLHI9PT12b2lkIDAmJihyPTEvMCksbj09PXZvaWQgMCYmKG49MCksaT09PXZvaWQgMCYmKGk9W10pLHRoaXMubWF4V2lkdGg9dCx0aGlzLm1heEhlaWdodD1yLHRoaXMucGFkZGluZz1uLHRoaXMucm93cz1pfXJldHVybiBlLnByb3RvdHlwZS5hZGRSb3c9ZnVuY3Rpb24odCl7dC5tYXhXaWR0aD10aGlzLm1heFdpZHRoLXRoaXMucGFkZGluZyoyLHRoaXMucm93cy5wdXNoKHQpfSxlLnByb3RvdHlwZS5nZXRDb2x1bW5Cb3VuZHM9ZnVuY3Rpb24odCxyKXt2YXIgbj10aGlzLmdldFJvd0JvdW5kcyh0KSxpPXRoaXMucm93c1t0XS5nZXRCb3VuZHMocik7cmV0dXJuIGkudG9wTGVmdC54Kz1uLnRvcExlZnQueCxpLmJvdHRvbVJpZ2h0LngrPW4udG9wTGVmdC54LGkudG9wTGVmdC55Kz1uLnRvcExlZnQueSxpLmJvdHRvbVJpZ2h0LnkrPW4udG9wTGVmdC55LGl9LGUucHJvdG90eXBlLmdldFJvd0JvdW5kcz1mdW5jdGlvbih0KXtmb3IodmFyIHI9dGhpcy5wYWRkaW5nLG49dGhpcy5wYWRkaW5nLGk9MDtpPHQ7aSsrKW4rPXRoaXMucm93c1tpXS5nZXRIZWlnaHQoKTt2YXIgbz17dG9wTGVmdDp7eDpyLHk6bn0sYm90dG9tUmlnaHQ6e3g6cit0aGlzLnJvd3NbdF0uZ2V0V2lkdGgoKSx5Om4rdGhpcy5yb3dzW3RdLmdldEhlaWdodCgpfX07cmV0dXJuIG99LGUucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLnJvd3MucmVkdWNlKGZ1bmN0aW9uKHQscil7cmV0dXJuIHQrci5nZXRIZWlnaHQoKX0sMCkrdGhpcy5wYWRkaW5nKjIsdGhpcy5tYXhIZWlnaHQpfSxlLnByb3RvdHlwZS5nZXRXaWR0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbihKZy5NYXRoLm1heCh0aGlzLnJvd3MubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFdpZHRoKCl9KSwwKSt0aGlzLnBhZGRpbmcqMix0aGlzLm1heFdpZHRoKX0sZX0oKSxqQmU9ZnVuY3Rpb24oZSl7VkJlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX3BhZGRpbmc9NSxuLl9yb3dCb3R0b21QYWRkaW5nPTMsbi5hZGRDbGFzcygibGVnZW5kIiksbi5tYXhFbnRyaWVzUGVyUm93KDEpLHI9PW51bGwpdGhyb3cgbmV3IEVycm9yKCJMZWdlbmQgcmVxdWlyZXMgYSBjb2xvclNjYWxlIik7cmV0dXJuIG4uX2NvbG9yU2NhbGU9cixuLl9yZWRyYXdDYWxsYmFjaz1mdW5jdGlvbihpKXtyZXR1cm4gbi5yZWRyYXcoKX0sbi5fY29sb3JTY2FsZS5vblVwZGF0ZShuLl9yZWRyYXdDYWxsYmFjayksbi5fZm9ybWF0dGVyPXFCZS5pZGVudGl0eSgpLG4ubWF4TGluZXNQZXJFbnRyeSgxKSxuLnhBbGlnbm1lbnQoInJpZ2h0IikueUFsaWdubWVudCgidG9wIiksbi5jb21wYXJhdG9yKGZ1bmN0aW9uKGksbyl7dmFyIGE9bi5fY29sb3JTY2FsZS5kb21haW4oKS5zbGljZSgpLm1hcChmdW5jdGlvbihzKXtyZXR1cm4gbi5fZm9ybWF0dGVyKHMpfSk7cmV0dXJuIGEuaW5kZXhPZihpKS1hLmluZGV4T2Yobyl9KSxuLl9zeW1ib2xGYWN0b3J5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gR0JlLmNpcmNsZSgpfSxuLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gMX0sbn1yZXR1cm4gdC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIHI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCh0LkxFR0VORF9ST1dfQ0xBU1MsITApLG49ci5hcHBlbmQoImciKS5jbGFzc2VkKHQuTEVHRU5EX0VOVFJZX0NMQVNTLCEwKTtuLmFwcGVuZCgidGV4dCIpO3ZhciBpPW5ldyBZRi5TdmdDb250ZXh0KHIubm9kZSgpLG51bGwsVUJlLkFERF9USVRMRV9FTEVNRU5UUyk7dGhpcy5fbWVhc3VyZXI9bmV3IFlGLkNhY2hlTWVhc3VyZXIoaSksdGhpcy5fd3JhcHBlcj1uZXcgWUYuV3JhcHBlcigpLm1heExpbmVzKHRoaXMubWF4TGluZXNQZXJFbnRyeSgpKSx0aGlzLl93cml0ZXI9bmV3IFlGLldyaXRlcih0aGlzLl9tZWFzdXJlcixpLHRoaXMuX3dyYXBwZXIpfSx0LnByb3RvdHlwZS5mb3JtYXR0ZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fZm9ybWF0dGVyOih0aGlzLl9mb3JtYXR0ZXI9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5tYXhFbnRyaWVzUGVyUm93PWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX21heEVudHJpZXNQZXJSb3c6KHRoaXMuX21heEVudHJpZXNQZXJSb3c9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5tYXhMaW5lc1BlckVudHJ5PWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX21heExpbmVzUGVyRW50cnk6KHRoaXMuX21heExpbmVzUGVyRW50cnk9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5tYXhXaWR0aD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9tYXhXaWR0aDoodGhpcy5fbWF4V2lkdGg9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5jb21wYXJhdG9yPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2NvbXBhcmF0b3I6KHRoaXMuX2NvbXBhcmF0b3I9cix0aGlzLnJlZHJhdygpLHRoaXMpfSx0LnByb3RvdHlwZS5jb2xvclNjYWxlPWZ1bmN0aW9uKHIpe3JldHVybiByIT1udWxsPyh0aGlzLl9jb2xvclNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayksdGhpcy5fY29sb3JTY2FsZT1yLHRoaXMuX2NvbG9yU2NhbGUub25VcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spLHRoaXMucmVkcmF3KCksdGhpcyk6dGhpcy5fY29sb3JTY2FsZX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2UucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9jb2xvclNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayl9LHQucHJvdG90eXBlLl9idWlsZExlZ2VuZFRhYmxlPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcyxvPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsYT1uZXcgWUJlKHIsbix0aGlzLl9wYWRkaW5nKSxzPXRoaXMuX2NvbG9yU2NhbGUuZG9tYWluKCkuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGMsdSl7cmV0dXJuIGkuX2NvbXBhcmF0b3IoaS5fZm9ybWF0dGVyKGMpLGkuX2Zvcm1hdHRlcih1KSl9KSxsPW5ldyBWb3Q7cmV0dXJuIGEuYWRkUm93KGwpLGwuYm90dG9tUGFkZGluZz10aGlzLl9yb3dCb3R0b21QYWRkaW5nLHMuZm9yRWFjaChmdW5jdGlvbihjLHUpe2wuY29sdW1ucy5sZW5ndGgvMj09PWkubWF4RW50cmllc1BlclJvdygpJiYobD1uZXcgVm90LGwuYm90dG9tUGFkZGluZz1pLl9yb3dCb3R0b21QYWRkaW5nLGEuYWRkUm93KGwpKTt2YXIgaD1sLmdldFdpZHRoQXZhaWxhYmxlKCksZj1pLl9mb3JtYXR0ZXIoYykscD1pLl9tZWFzdXJlci5tZWFzdXJlKGYpLndpZHRoLGQ9aC1vLXA8MDtkJiZsLmNvbHVtbnMubGVuZ3RoPjEmJihsPW5ldyBWb3QsbC5ib3R0b21QYWRkaW5nPWkuX3Jvd0JvdHRvbVBhZGRpbmcsYS5hZGRSb3cobCkpO3ZhciBnPXt3aWR0aDpvLGhlaWdodDpvLGRhdGE6e25hbWU6Yyx0eXBlOiJzeW1ib2wifX07bC5hZGRDb2x1bW4oZyksaD1sLmdldFdpZHRoQXZhaWxhYmxlKCk7dmFyIF89TWF0aC5taW4oaCxwKTtpLl93cmFwcGVyLm1heExpbmVzKGkubWF4TGluZXNQZXJFbnRyeSgpKTt2YXIgeT1pLl93cmFwcGVyLndyYXAoZixpLl9tZWFzdXJlcixfKS5ub0xpbmVzLHg9eSpvLGI9e3dpZHRoOl8saGVpZ2h0OngsZGF0YTp7bmFtZTpjLHR5cGU6InRleHQifX07bC5hZGRDb2x1bW4oYil9KSxhfSx0LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMuX2J1aWxkTGVnZW5kVGFibGUoSmcuTWF0aC5taW4oW3RoaXMubWF4V2lkdGgoKSxyXSxyKSxuKTtyZXR1cm57bWluSGVpZ2h0OmkuZ2V0SGVpZ2h0KCksbWluV2lkdGg6aS5nZXRXaWR0aCgpfX0sdC5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbihyKXt2YXIgbj10aGlzO2lmKCF0aGlzLl9pc1NldHVwKXJldHVybltdO3ZhciBpPXRoaXMuX2J1aWxkTGVnZW5kVGFibGUodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCkpO3JldHVybiBpLnJvd3MucmVkdWNlKGZ1bmN0aW9uKG8sYSxzKXtpZihvLmxlbmd0aCE9PTApcmV0dXJuIG87dmFyIGw9aS5nZXRSb3dCb3VuZHMocyksYz1KZy5NYXRoLndpdGhpbihyLGwpO3JldHVybiBjP2EuY29sdW1ucy5yZWR1Y2UoZnVuY3Rpb24odSxoLGYpe3ZhciBwPWkuZ2V0Q29sdW1uQm91bmRzKHMsZiksZD1KZy5NYXRoLndpdGhpbihyLHApO2lmKGQpe3ZhciBnPW4uY29udGVudCgpLnNlbGVjdEFsbCgiLiIrdC5MRUdFTkRfUk9XX0NMQVNTKS5ub2RlcygpW3NdLF89enYuc2VsZWN0KGcpLnNlbGVjdEFsbCgiLiIrdC5MRUdFTkRfRU5UUllfQ0xBU1MpLm5vZGVzKClbTWF0aC5mbG9vcihmLzIpXSx5PXp2LnNlbGVjdChfKS5zZWxlY3QoIi4iK3QuTEVHRU5EX1NZTUJPTF9DTEFTUykseD1KZy5ET00uZ2V0VHJhbnNsYXRlVmFsdWVzKHp2LnNlbGVjdChnKSksYj1KZy5ET00uZ2V0VHJhbnNsYXRlVmFsdWVzKHkpO3JldHVyblt7Ym91bmRzOkpnLkRPTS5lbGVtZW50QkJveCh6di5zZWxlY3QoZykpLGRhdHVtOmguZGF0YS5uYW1lLHBvc2l0aW9uOnt4OnhbMF0rYlswXSx5OnhbMV0rYlsxXX0sc2VsZWN0aW9uOnp2LnNlbGVjdChfKSxjb21wb25lbnQ6bn1dfXJldHVybiB1fSxvKTpvfSxbXSl9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgcj10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTt2YXIgbj10aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoImcuIit0LkxFR0VORF9ST1dfQ0xBU1MpLmRhdGEoci5yb3dzKSxpPW4uZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHQuTEVHRU5EX1JPV19DTEFTUywhMCkubWVyZ2Uobik7bi5leGl0KCkucmVtb3ZlKCksaS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGEscyl7dmFyIGw9ci5nZXRSb3dCb3VuZHMocyk7cmV0dXJuInRyYW5zbGF0ZSgiK2wudG9wTGVmdC54KyIsICIrbC50b3BMZWZ0LnkrIikifSk7dmFyIG89dGhpcztyZXR1cm4gaS5lYWNoKGZ1bmN0aW9uKGEscyl7Zm9yKHZhciBsPVtdLGM9MDtjPGEuY29sdW1ucy5sZW5ndGg7Yys9MilsLnB1c2goW2EuY29sdW1uc1tjXSxhLmNvbHVtbnNbYysxXV0pO3ZhciB1PXp2LnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuIit0LkxFR0VORF9FTlRSWV9DTEFTUykuZGF0YShsKSxoPXUuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHQuTEVHRU5EX0VOVFJZX0NMQVNTLCEwKS5tZXJnZSh1KTtoLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLGZ1bmN0aW9uKGYscCl7dmFyIGQ9ZlswXTtyZXR1cm4gby5zeW1ib2woKShkLmRhdGEubmFtZSxzKShkLmhlaWdodCouNikobnVsbCl9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGYscCl7dmFyIGQ9ZlswXSxnPXIucm93c1tzXS5jb2x1bW5zLmluZGV4T2YoZCksXz1yLmdldENvbHVtbkJvdW5kcyhzLGcpO3JldHVybiJ0cmFuc2xhdGUoIisoXy50b3BMZWZ0LngrZC53aWR0aC8yKSsiLCAiK2QuaGVpZ2h0LzIrIikifSkuYXR0cigiZmlsbCIsZnVuY3Rpb24oZil7cmV0dXJuIG8uX2NvbG9yU2NhbGUuc2NhbGUoZlswXS5kYXRhLm5hbWUpfSkuYXR0cigib3BhY2l0eSIsZnVuY3Rpb24oZixwKXtyZXR1cm4gby5zeW1ib2xPcGFjaXR5KCkoZlswXS5kYXRhLm5hbWUscyl9KS5jbGFzc2VkKHQuTEVHRU5EX1NZTUJPTF9DTEFTUywhMCksaC5hcHBlbmQoImciKS5jbGFzc2VkKCJ0ZXh0LWNvbnRhaW5lciIsITApLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZixwKXt2YXIgZD1mWzFdLGc9ci5yb3dzW3NdLmNvbHVtbnMuaW5kZXhPZihkKSxfPXIuZ2V0Q29sdW1uQm91bmRzKHMsZyk7cmV0dXJuInRyYW5zbGF0ZSgiK18udG9wTGVmdC54KyIsIDApIn0pLmVhY2goZnVuY3Rpb24oZixwLGQpe3ZhciBnPXp2LnNlbGVjdCh0aGlzKSxfPWZbMV0seT17eEFsaWduOiJsZWZ0Iix5QWxpZ246InRvcCIsdGV4dFJvdGF0aW9uOjB9O28uX3dyaXRlci53cml0ZShvLl9mb3JtYXR0ZXIoXy5kYXRhLm5hbWUpLF8ud2lkdGgsby5oZWlnaHQoKSx5LGcubm9kZSgpKX0pLHUuZXhpdCgpLnJlbW92ZSgpfSksdGhpc30sdC5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX3N5bWJvbEZhY3RvcnlBY2Nlc3NvcjoodGhpcy5fc3ltYm9sRmFjdG9yeUFjY2Vzc29yPXIsdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUuc3ltYm9sT3BhY2l0eT1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I6KHR5cGVvZiByPT0ibnVtYmVyIj90aGlzLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gcn06dGhpcy5fc3ltYm9sT3BhY2l0eUFjY2Vzc29yPXIsdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfSx0LnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfSx0LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLl9tZWFzdXJlci5yZXNldCgpfSx0LkxFR0VORF9ST1dfQ0xBU1M9ImxlZ2VuZC1yb3ciLHQuTEVHRU5EX0VOVFJZX0NMQVNTPSJsZWdlbmQtZW50cnkiLHQuTEVHRU5EX1NZTUJPTF9DTEFTUz0ibGVnZW5kLXN5bWJvbCIsdH0oV0JlLkNvbXBvbmVudCk7VW90LkxlZ2VuZD1qQmV9KTt2YXIgcW90PUgoakY9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGpGLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgWEJlOyhmdW5jdGlvbihlKXtlLk1BSU49Im1haW4iLGUuUkVTRVQ9InJlc2V0In0pKFhCZT1qRi5BbmltYXRvcnx8KGpGLkFuaW1hdG9yPXt9KSl9KTt2YXIgQyR0PUgoKE9xbixUJHQpPT57InVzZSBzdHJpY3QiO1QkdC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0IT1udWxsJiZ0eXBlb2YgdD09Im9iamVjdCImJkFycmF5LmlzQXJyYXkodCk9PT0hMX19KTt2YXIgSSR0PUgoKHpxbixQJHQpPT57InVzZSBzdHJpY3QiO3ZhciAkQmU9QyR0KCk7ZnVuY3Rpb24gQSR0KGUpe3JldHVybiAkQmUoZSk9PT0hMCYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpPT09IltvYmplY3QgT2JqZWN0XSJ9UCR0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIHIsbjtyZXR1cm4hKEEkdCh0KT09PSExfHwocj10LmNvbnN0cnVjdG9yLHR5cGVvZiByIT0iZnVuY3Rpb24iKXx8KG49ci5wcm90b3R5cGUsQSR0KG4pPT09ITEpfHxuLmhhc093blByb3BlcnR5KCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9fSk7dmFyIFdvdD1IKEdvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoR290LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgS0JlPUZlKCksTCR0PTAsWkJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe3Q9PT12b2lkIDAmJih0PVtdKSxyPT09dm9pZCAwJiYocj17fSksdGhpcy5fdXBkYXRlSWQ9TCR0KyssdGhpcy5fZGF0YT10LHRoaXMuX21ldGFkYXRhPXIsdGhpcy5fY2FsbGJhY2tzPW5ldyBLQmUuQ2FsbGJhY2tTZXR9cmV0dXJuIGUucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKHQpe3JldHVybiB0PT1udWxsP3RoaXMuX2RhdGE6KHRoaXMuX2RhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5tZXRhZGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD90aGlzLl9tZXRhZGF0YToodGhpcy5fbWV0YWRhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS51cGRhdGVJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVJZH0sZS5wcm90b3R5cGUuX2Rpc3BhdGNoVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSWQ9TCR0KyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LGV9KCk7R290LkRhdGFzZXQ9WkJlfSk7dmFyIFhvdD1IKExjPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMYywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFlvdD0oZGUoKSxVdChwZSkpLEpCZT1JJHQoKSxRQmU9V290KCksdEhlPUx2KCk7ZnVuY3Rpb24gam90KGUpe3JldHVybiBlIGluc3RhbmNlb2YgdTQ/ZTplIGluc3RhbmNlb2YgRGF0ZT9jNChlLnZhbHVlT2YoKSk6ZSBpbnN0YW5jZW9mIHRIZS5TY2FsZT9rJHQoZSk6ZSBpbnN0YW5jZW9mIFFCZS5EYXRhc2V0P1IkdChlKTpKQmUoZSk/WEYoZSk6QXJyYXkuaXNBcnJheShlKT9OJHQoZSk6YzQoZSl9TGMuc2lnbj1qb3Q7ZnVuY3Rpb24gayR0KGUpe3ZhciB0PXtkb21haW46ZS5kb21haW4oKSxyYW5nZTplLnJhbmdlKCksdXBkYXRlSWQ6ZS51cGRhdGVJZCgpLHJlZjpjNChlKX07cmV0dXJuIFhGKHQpfUxjLnNpZ25TY2FsZT1rJHQ7ZnVuY3Rpb24gUiR0KGUpe3ZhciB0PXtyZWY6YzQoZSksdXBkYXRlSWQ6ZS51cGRhdGVJZCgpfTtyZXR1cm4gWEYodCl9TGMuc2lnbkRhdGFzZXQ9UiR0O2Z1bmN0aW9uIGM0KGUpe3JldHVybiBuZXcgTyR0KGUpfUxjLnNpZ25SZWY9YzQ7ZnVuY3Rpb24gTiR0KGUpe3JldHVybiBuZXcgRCR0KGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBqb3QodCl9KSl9TGMuc2lnbkFycmF5PU4kdDtmdW5jdGlvbiBYRihlKXt2YXIgdD17fTtmb3IodmFyIHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiYodFtyXT1qb3QoZVtyXSkpO3JldHVybiBuZXcgeiR0KHQpfUxjLnNpZ25PYmo9WEY7dmFyIHU0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuaXNEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yP3RoaXMuaXNTaWduYXR1cmVEaWZmZXJlbnQodCk6ITB9LGV9KCk7TGMuU2lnbmF0dXJlPXU0O3ZhciBEJHQ9ZnVuY3Rpb24oZSl7WW90Ll9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLmFycmF5PXIsbn1yZXR1cm4gdC5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24ocil7aWYoci5hcnJheS5sZW5ndGghPT10aGlzLmFycmF5Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIG49MDtuPHRoaXMuYXJyYXkubGVuZ3RoO24rKylpZih0aGlzLmFycmF5W25dLmlzRGlmZmVyZW50KHIuYXJyYXlbbl0pKXJldHVybiEwO3JldHVybiExfSx0fSh1NCk7TGMuQXJyYXlTaWduYXR1cmU9RCR0O3ZhciBPJHQ9ZnVuY3Rpb24oZSl7WW90Ll9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLnJlZj1yLG59cmV0dXJuIHQucHJvdG90eXBlLmlzU2lnbmF0dXJlRGlmZmVyZW50PWZ1bmN0aW9uKHIpe3JldHVybiB0aGlzLnJlZiE9PXIucmVmfSx0fSh1NCk7TGMuUmVmZXJlbmNlU2lnbmF0dXJlPU8kdDt2YXIgeiR0PWZ1bmN0aW9uKGUpe1lvdC5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KHIpe3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5vYmo9cixufXJldHVybiB0LnByb3RvdHlwZS5pc1NpZ25hdHVyZURpZmZlcmVudD1mdW5jdGlvbihyKXt2YXIgbj1PYmplY3Qua2V5cyh0aGlzLm9iaiksaT1PYmplY3Qua2V5cyhyLm9iaik7aWYobi5sZW5ndGghPT1pLmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIG89MCxhPW47bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb107aWYoIXIub2JqLmhhc093blByb3BlcnR5KHMpfHx0aGlzLm9ialtzXS5pc0RpZmZlcmVudChyLm9ialtzXSkpcmV0dXJuITB9cmV0dXJuITF9LHR9KHU0KTtMYy5PYmplY3RTaWduYXR1cmU9eiR0fSk7dmFyIEYkdD1IKCRvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoJG90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZUhlPVhvdCgpO2Z1bmN0aW9uIHJIZShlKXt2YXIgdD12b2lkIDAscixuPSExLGk9ITEsbz1mdW5jdGlvbigpe2Zvcih2YXIgYT1bXSxzPTA7czxhcmd1bWVudHMubGVuZ3RoO3MrKylhW3NdPWFyZ3VtZW50c1tzXTtpZihuKXJldHVybiByO3ZhciBsPWVIZS5zaWduQXJyYXkoYSk7cmV0dXJuIHQ9PT12b2lkIDB8fHQuaXNEaWZmZXJlbnQobCk/KGkmJmNvbnNvbGUud2FybigiY2FjaGUgbWlzcyEgY29tcHV0aW5nIiksdD1sLHI9ZS5hcHBseSh0aGlzLGEpKTppJiZjb25zb2xlLndhcm4oImNhY2hlIGhpdCEiKSxyfTtyZXR1cm4gby5kb0xvY2tlZD1mdW5jdGlvbihhKXtpZihuKXRocm93IG5ldyBFcnJvcigiTG9ja2luZyBhbiBhbHJlYWR5IGxvY2tlZCBtZW1vaXplIGZ1bmN0aW9uISIpO249ITA7dmFyIHM9YS5hcHBseSh0aGlzKTtyZXR1cm4gbj0hMSxzfSxvLmxvZ1BlcmZvcm1hbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBhPT09dm9pZCAwJiYoYT0hMCksaT1hLHRoaXN9LG99JG90Lm1lbW9pemU9ckhlfSk7dmFyIFYkdD1IKCRGPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSgkRiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG5IZT1PZSgpLEtvdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLm1hcD1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZXhpc3RzPU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHRoaXMubWFwW3RdLGRlbGV0ZSB0aGlzLmV4aXN0c1t0XSwhMH0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcFt0XX0sZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiEhdGhpcy5leGlzdHNbdF19LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLm1hcFt0XT1yLHRoaXMuZXhpc3RzW3RdPSEwLHRoaXN9LGV9KCksQiR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMubWFwPW5ldyBLb3R9cmV0dXJuIGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAuZ2V0KHRbMF0pLmdldCh0WzFdKX0sZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcC5oYXModFswXSkmJnRoaXMubWFwLmdldCh0WzBdKS5oYXModFsxXSl9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLm1hcC5oYXModFswXSl8fHRoaXMubWFwLnNldCh0WzBdLG5ldyBLb3QpLHRoaXMubWFwLmdldCh0WzBdKS5zZXQodFsxXSxyKSx0aGlzfSxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLmhhcyh0WzBdKSYmdGhpcy5tYXAuZ2V0KHRbMF0pLmRlbGV0ZSh0WzFdKSwhMH0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLm1hcD1uZXcgS290fSxlLnJlc29sdmVyPWZ1bmN0aW9uKHQscixuKXtyZXR1cm5bbi51cGRhdGVJZCgpLHJdfSxlfSgpO2Z1bmN0aW9uIEgkdChlKXt2YXIgdD1uSGUubWVtb2l6ZShlLEIkdC5yZXNvbHZlcik7cmV0dXJuIHQuY2FjaGU9bmV3IEIkdCx0fSRGLm1lbW9pemVQcm9qZWN0b3I9SCR0O2Z1bmN0aW9uIGlIZShlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPUgkdChlW3RdKX0pLGV9JEYubWVtb2l6ZVByb2plY3RvcnM9aUhlfSk7dmFyIFUkdD1IKFpvdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoWm90LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgb0hlPVRTKCk7ZnVuY3Rpb24gYUhlKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3ZhciByPWUuc2xpY2UoMCwtMSksbj1lW2UubGVuZ3RoLTFdLGk9b0hlLm1lbW9pemUobiksbz1mdW5jdGlvbigpe3ZhciBhPXRoaXMscz1yLm1hcChmdW5jdGlvbihsKXtyZXR1cm4gbC5hcHBseShhKX0pO3JldHVybiBpLmFwcGx5KHZvaWQgMCxzKX07cmV0dXJuIG99Wm90Lm1lbVRodW5rPWFIZX0pO3ZhciBUUz1IKENTPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShDUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIEpvdD0oZGUoKSxVdChwZSkpO0pvdC5fX2V4cG9ydFN0YXIoRiR0KCksQ1MpO0pvdC5fX2V4cG9ydFN0YXIoViR0KCksQ1MpO0pvdC5fX2V4cG9ydFN0YXIoVSR0KCksQ1MpO3ZhciBzSGU9WG90KCk7Q1Muc2lnbj1zSGUuc2lnbn0pO3ZhciBGdj1IKGtjPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShrYywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHEkdD0oRXIoKSxVdChNcikpLGxIZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fZHJhd1N0ZXA9cn1yZXR1cm4gZS5wcm90b3R5cGUuZ2V0RHJhd1N0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhd1N0ZXB9LGUucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxyKXt2YXIgbj1yW3IubGVuZ3RoLTFdLmF0dHJUb0FwcGxpZWRQcm9qZWN0b3I7dGhpcy5fY29udGV4dC5zYXZlKCksdGhpcy5fZHJhd1N0ZXAodGhpcy5fY29udGV4dCx0LG4pLHRoaXMuX2NvbnRleHQucmVzdG9yZSgpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LGUucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe30sZX0oKTtrYy5DYW52YXNEcmF3ZXI9bEhlO2tjLkNvbnRleHRTdHlsZUF0dHJzPVsiZmlsbC1vcGFjaXR5IiwiZmlsbCIsIm9wYWNpdHkiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZS13aWR0aCIsInN0cm9rZSIsInN0cm9rZS1kYXNoYXJyYXkiXTtmdW5jdGlvbiBjSGUoZSx0LHIsbil7dmFyIGk9a2MuQ29udGV4dFN0eWxlQXR0cnMuY29uY2F0KHQpO3JldHVybiBHJHQoZSxpLHIsbil9a2MucmVzb2x2ZUF0dHJpYnV0ZXNTdWJzZXRXaXRoU3R5bGVzPWNIZTtmdW5jdGlvbiBHJHQoZSx0LHIsbil7Zm9yKHZhciBpPXt9LG89MCxhPXQ7bzxhLmxlbmd0aDtvKyspe3ZhciBzPWFbb107ZS5oYXNPd25Qcm9wZXJ0eShzKSYmKGlbc109ZVtzXShyLG4pKX1yZXR1cm4gaX1rYy5yZXNvbHZlQXR0cmlidXRlcz1HJHQ7ZnVuY3Rpb24gdUhlKGUpe3ZhciB0PWUub3BhY2l0eSE9bnVsbD9wYXJzZUZsb2F0KGUub3BhY2l0eSk6MSxyPWVbInN0cm9rZS1vcGFjaXR5Il0hPW51bGw/cGFyc2VGbG9hdChlWyJzdHJva2Utb3BhY2l0eSJdKToxO3JldHVybiByKnR9ZnVuY3Rpb24gaEhlKGUpe3ZhciB0PWUub3BhY2l0eSE9bnVsbD9wYXJzZUZsb2F0KGUub3BhY2l0eSk6MSxyPWVbImZpbGwtb3BhY2l0eSJdIT1udWxsP3BhcnNlRmxvYXQoZVsiZmlsbC1vcGFjaXR5Il0pOjE7cmV0dXJuIHIqdH1mdW5jdGlvbiBXJHQoZSl7cmV0dXJuIGVbInN0cm9rZS13aWR0aCJdIT1udWxsP3BhcnNlRmxvYXQoZVsic3Ryb2tlLXdpZHRoIl0pOjF9a2MuZ2V0U3Ryb2tlV2lkdGg9VyR0O2Z1bmN0aW9uIFkkdChlKXt2YXIgdD1lWyJzdHJva2UtZGFzaGFycmF5Il07aWYodCE9bnVsbCl0cnl7cmV0dXJuIHQuc3BsaXQoL1sgLF0rLykubWFwKGZ1bmN0aW9uKHIpe3JldHVybiBwYXJzZUludChyLDEwKX0pfWNhdGNoKHIpe3JldHVybiBjb25zb2xlLmVycm9yKCJnZXRTdHJva2VEYXNoQXJyYXkgZmFpbGVkIHdpdGg6ICIrciksW119cmV0dXJuW119a2MuZ2V0U3Ryb2tlRGFzaEFycmF5PVkkdDtmdW5jdGlvbiBmSGUoZSx0LHIsbil7ZS5zYXZlKCksZS5iZWdpblBhdGgoKSx0LmNvbnRleHQoZSksdChyKSxlLmxpbmVKb2luPSJyb3VuZCIsUW90KGUsbiksZS5yZXN0b3JlKCl9a2MucmVuZGVyQXJlYT1mSGU7ZnVuY3Rpb24gcEhlKGUsdCxyLG4pe2Uuc2F2ZSgpLGUuYmVnaW5QYXRoKCksdC5jb250ZXh0KGUpLHQociksZS5saW5lSm9pbj0icm91bmQiLFFvdChlLG4pLGUucmVzdG9yZSgpfWtjLnJlbmRlckxpbmU9cEhlO2Z1bmN0aW9uIFFvdChlLHQpe2lmKHQuc3Ryb2tlKXtlLmxpbmVXaWR0aD1XJHQodCk7dmFyIHI9cSR0LmNvbG9yKHQuc3Ryb2tlKSxuPVkkdCh0KTtlLnNldExpbmVEYXNoKG4pLHIub3BhY2l0eSo9dUhlKHQpLGUuc3Ryb2tlU3R5bGU9ci50b1N0cmluZygpLGUuc3Ryb2tlKCl9aWYodC5maWxsKXt2YXIgaT1xJHQuY29sb3IodC5maWxsKTtpLm9wYWNpdHkqPWhIZSh0KSxlLmZpbGxTdHlsZT1pLnRvU3RyaW5nKCksZS5maWxsKCl9fWtjLnJlbmRlclBhdGhXaXRoU3R5bGU9UW90fSk7dmFyIFZ1PUgodGF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBkSGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dGhpcy5fc3ZnRHJhd2VyRmFjdG9yeT10LHRoaXMuX2NhbnZhc0RyYXdlckZhY3Rvcnk9cn1yZXR1cm4gZS5wcm90b3R5cGUudXNlU1ZHPWZ1bmN0aW9uKHQpe3RoaXMuX2N1cnJlbnREcmF3ZXIhPW51bGwmJnRoaXMuX2N1cnJlbnREcmF3ZXIucmVtb3ZlKCk7dmFyIHI9dGhpcy5fc3ZnRHJhd2VyRmFjdG9yeSgpO3IuYXR0YWNoVG8odCksdGhpcy5fY3VycmVudERyYXdlcj1yfSxlLnByb3RvdHlwZS51c2VDYW52YXM9ZnVuY3Rpb24odCl7dGhpcy5fY3VycmVudERyYXdlciE9bnVsbCYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKSx0aGlzLl9jdXJyZW50RHJhd2VyPXRoaXMuX2NhbnZhc0RyYXdlckZhY3RvcnkodC5ub2RlKCkuZ2V0Q29udGV4dCgiMmQiKSl9LGUucHJvdG90eXBlLmdldERyYXdlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyfSxlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50RHJhd2VyIT1udWxsJiZ0aGlzLl9jdXJyZW50RHJhd2VyLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHQscil7dGhpcy5fY3VycmVudERyYXdlci5kcmF3KHQscil9LGUucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudERyYXdlci5nZXRWaXN1YWxQcmltaXRpdmVzKCl9LGUucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2N1cnJlbnREcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleCh0KX0sZX0oKTt0YXQuUHJveHlEcmF3ZXI9ZEhlfSk7dmFyIE5mPUgoZWF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBtSGU9KEVyKCksVXQoTXIpKSxqJHQ9RmUoKSxnSGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dGhpcy5fcm9vdD1tSGUuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLHRoaXMuX2NsYXNzTmFtZT1yLHRoaXMuX3N2Z0VsZW1lbnROYW1lPXR9cmV0dXJuIGUucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxyKXt2YXIgbj10aGlzO3RoaXMuX2NyZWF0ZUFuZERlc3Ryb3lET01FbGVtZW50cyh0KTtmb3IodmFyIGk9MCxvPXIubGVuZ3RoLGE9ZnVuY3Rpb24obCl7dmFyIGM9cltsXTtqJHQuV2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gbi5fZHJhd1N0ZXAoYyl9LGkpLGkrPWMuYW5pbWF0b3IudG90YWxUaW1lKHQubGVuZ3RoKX0scz0wO3M8bztzKyspYShzKX0sZS5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9PW51bGwmJih0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZXM9dGhpcy5fc2VsZWN0aW9uLm5vZGVzKCkpLHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlc30sZS5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlQXRJbmRleD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVNYXA9PW51bGw/bnVsbDp0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZU1hcC5nZXQodCl9LGUucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3Jvb3QucmVtb3ZlKCl9LGUucHJvdG90eXBlLmF0dGFjaFRvPWZ1bmN0aW9uKHQpe3Qubm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX3Jvb3Qubm9kZSgpKX0sZS5wcm90b3R5cGUuZ2V0Um9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSxlLnByb3RvdHlwZS5zZWxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdmdFbGVtZW50TmFtZX0sZS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7fSxlLnByb3RvdHlwZS5fY3JlYXRlQW5kRGVzdHJveURPTUVsZW1lbnRzPWZ1bmN0aW9uKHQpe3ZhciByPXQubWFwKGZ1bmN0aW9uKGEscyl7cmV0dXJuIGEhPW51bGw/e2Q6YSxpOnN9Om51bGx9KSxuPXIuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsfSksaT10aGlzLl9yb290LnNlbGVjdEFsbCh0aGlzLnNlbGVjdG9yKCkpLmRhdGEobik7dGhpcy5fc2VsZWN0aW9uPWkuZW50ZXIoKS5hcHBlbmQodGhpcy5fc3ZnRWxlbWVudE5hbWUpLm1lcmdlKGkpLGkuZXhpdCgpLnJlbW92ZSgpO3ZhciBvPW5ldyBqJHQuTWFwO3RoaXMuX3NlbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKGEpe28uc2V0KGEuaSx0aGlzKX0pLHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2RlTWFwPW8sdGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVzPW51bGwsdGhpcy5fc2VsZWN0aW9uLmRhdGEodGhpcy5fc2VsZWN0aW9uLmRhdGEoKS5tYXAoZnVuY3Rpb24oYSl7dmFyIHM9YS5kO3JldHVybiBzfSkpLHRoaXMuX2NsYXNzTmFtZSE9bnVsbCYmdGhpcy5fc2VsZWN0aW9uLmNsYXNzZWQodGhpcy5fY2xhc3NOYW1lLCEwKSx0aGlzLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzKHRoaXMuX3NlbGVjdGlvbil9LGUucHJvdG90eXBlLl9kcmF3U3RlcD1mdW5jdGlvbih0KXt2YXIgcj10aGlzLG49WyJmaWxsIiwic3Ryb2tlIl07bi5mb3JFYWNoKGZ1bmN0aW9uKGkpe3QuYXR0clRvQXBwbGllZFByb2plY3RvcltpXSE9bnVsbCYmci5fc2VsZWN0aW9uLmF0dHIoaSx0LmF0dHJUb0FwcGxpZWRQcm9qZWN0b3JbaV0pfSksdC5hbmltYXRvci5hbmltYXRlKHRoaXMuX3NlbGVjdGlvbix0LmF0dHJUb0FwcGxpZWRQcm9qZWN0b3IpLHRoaXMuX2NsYXNzTmFtZSE9bnVsbCYmdGhpcy5fc2VsZWN0aW9uLmNsYXNzZWQodGhpcy5fY2xhc3NOYW1lLCEwKX0sZX0oKTtlYXQuU1ZHRHJhd2VyPWdIZX0pO3ZhciBuYXQ9SChyYXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHJhdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFgkdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2YXIgdD10aGlzO3RoaXMuc2NhbGU9MCx0aGlzLnRyYW5zbGF0ZT0wLHRoaXMuY2FjaGVkRG9tYWluPVtudWxsLG51bGxdLHRoaXMubGFzdFNlZW5Eb21haW49W251bGwsbnVsbF0sdGhpcy51cGRhdGVEb21haW49ZnVuY3Rpb24ocil7dC5sYXN0U2VlbkRvbWFpbj1yLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7dmFyIG49ci5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzFdKS1yLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLGk9ci5zY2FsZVRyYW5zZm9ybWF0aW9uKHQubGFzdFNlZW5Eb21haW5bMV0pLXIuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKTt0LnNjYWxlPW4vaXx8MSx0LnRyYW5zbGF0ZT1yLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLXIuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKSp0LnNjYWxlfHwwfX1yZXR1cm4gZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnNjYWxlPTEsdGhpcy50cmFuc2xhdGU9MCx0aGlzLmNhY2hlZERvbWFpbj10aGlzLmxhc3RTZWVuRG9tYWlufSxlLnByb3RvdHlwZS5zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5jYWNoZWREb21haW49dC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpfSxlfSgpLF9IZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO3RoaXMucmVuZGVyQ2FsbGJhY2s9dCx0aGlzLmFwcGx5VHJhbnNmb3JtQ2FsbGJhY2s9cix0aGlzLmRvbWFpblRyYW5zZm9ybVg9bmV3IFgkdCx0aGlzLmRvbWFpblRyYW5zZm9ybVk9bmV3IFgkdCx0aGlzLnJlbmRlckRlZmVycmVkPWZ1bmN0aW9uKCl7bi5hcHBseVRyYW5zZm9ybSgpLGNsZWFyVGltZW91dChuLnRpbWVvdXRUb2tlbiksbi50aW1lb3V0VG9rZW49c2V0VGltZW91dChmdW5jdGlvbigpe24ucmVuZGVyQ2FsbGJhY2soKX0sZS5ERUZFUlJFRF9SRU5ERVJJTkdfREVMQVkpfX1yZXR1cm4gZS5wcm90b3R5cGUuc2V0RG9tYWlucz1mdW5jdGlvbih0LHIpe3QmJnRoaXMuZG9tYWluVHJhbnNmb3JtWC5zZXREb21haW4odCksciYmdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnNldERvbWFpbihyKSx0aGlzLnJlbmRlckRlZmVycmVkKCl9LGUucHJvdG90eXBlLnVwZGF0ZURvbWFpbnM9ZnVuY3Rpb24odCxyKXt0JiZ0aGlzLmRvbWFpblRyYW5zZm9ybVgudXBkYXRlRG9tYWluKHQpLHImJnRoaXMuZG9tYWluVHJhbnNmb3JtWS51cGRhdGVEb21haW4ociksdGhpcy5yZW5kZXJEZWZlcnJlZCgpfSxlLnByb3RvdHlwZS5yZXNldFRyYW5zZm9ybXM9ZnVuY3Rpb24oKXt0aGlzLmRvbWFpblRyYW5zZm9ybVgucmVzZXQoKSx0aGlzLmRvbWFpblRyYW5zZm9ybVkucmVzZXQoKSx0aGlzLmFwcGx5VHJhbnNmb3JtKCl9LGUucHJvdG90eXBlLmFwcGx5VHJhbnNmb3JtPWZ1bmN0aW9uKCl7dGhpcy5hcHBseVRyYW5zZm9ybUNhbGxiYWNrKHRoaXMuZG9tYWluVHJhbnNmb3JtWC50cmFuc2xhdGUsdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnRyYW5zbGF0ZSx0aGlzLmRvbWFpblRyYW5zZm9ybVguc2NhbGUsdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnNjYWxlKX0sZS5ERUZFUlJFRF9SRU5ERVJJTkdfREVMQVk9MjAwLGV9KCk7cmF0LkRlZmVycmVkUmVuZGVyZXI9X0hlfSk7dmFyIGVzPUgoS0Y9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KEtGLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgeUhlPShkZSgpLFV0KHBlKSksd2Q9KEVyKCksVXQoTXIpKSxoND1JZigpLFNkPUZlKCksJCR0PXFvdCgpLGlhdD1UUygpLHZIZT1JYygpLHhIZT1GdigpLGJIZT1WdSgpLHdIZT1OZigpLFNIZT1ZZygpLE1IZT1QZigpLEVIZT1uYXQoKTtLRi5SZW5kZXJlcj1NSGUubWFrZUVudW0oWyJzdmciLCJjYW52YXMiXSk7dmFyIFRIZT1mdW5jdGlvbihlKXt5SGUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyLl9kYXRhQ2hhbmdlZD0hMSxyLl9hdHRyRXh0ZW50cz17fSxyLl9hbmltYXRlPSExLHIuX2FuaW1hdG9ycz17fSxyLl9wcm9wZXJ0eUV4dGVudHM9e30sci5fcmVzZXRFbnRpdHlTdG9yZT1mdW5jdGlvbigpe3IuX2NhY2hlZEVudGl0eVN0b3JlPXZvaWQgMH0sci5fb3ZlcmZsb3dIaWRkZW49ITAsci5hZGRDbGFzcygicGxvdCIpLHIuX2RhdGFzZXRUb0RyYXdlcj1uZXcgU2QuTWFwLHIuX2F0dHJCaW5kaW5ncz13ZC5tYXAoKSxyLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKGksbyl7cmV0dXJuIHIuX2luY2x1ZGVkVmFsdWVzRm9yU2NhbGUoaSxvKX0sci5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gci5yZW5kZXIoKX0sci5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gci5fb25EYXRhc2V0VXBkYXRlKCl9LHIuX3Byb3BlcnR5QmluZGluZ3M9d2QubWFwKCk7dmFyIG49bmV3IGg0LkVhc2luZygpLm1heFRvdGFsRHVyYXRpb24odC5fQU5JTUFUSU9OX01BWF9EVVJBVElPTik7cmV0dXJuIHIuYW5pbWF0b3IoJCR0LkFuaW1hdG9yLk1BSU4sbiksci5hbmltYXRvcigkJHQuQW5pbWF0b3IuUkVTRVQsbmV3IGg0Lk51bGwpLHIuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZT1TZC5XaW5kb3cuZGVib3VuY2UoRUhlLkRlZmVycmVkUmVuZGVyZXIuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZLHIuX3Jlc2V0RW50aXR5U3RvcmUpLHJ9cmV0dXJuIHQuZ2V0VG90YWxEcmF3VGltZT1mdW5jdGlvbihyLG4pe3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihpLG8pe3JldHVybiBpK28uYW5pbWF0b3IudG90YWxUaW1lKHIubGVuZ3RoKX0sMCl9LHQuYXBwbHlEcmF3U3RlcHM9ZnVuY3Rpb24ocixuKXt2YXIgaT1yLm1hcChmdW5jdGlvbihvKXt2YXIgYT1vLmF0dHJUb1Byb2plY3RvcixzPXt9O3JldHVybiBPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3NbbF09ZnVuY3Rpb24oYyx1KXtyZXR1cm4gYVtsXShjLHUsbil9fSkse2F0dHJUb0FwcGxpZWRQcm9qZWN0b3I6cyxhbmltYXRvcjpvLmFuaW1hdG9yfX0pO3JldHVybiBpfSx0LnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24ocil7cmV0dXJuIHI9U0hlLmNvZXJjZUV4dGVybmFsRDMociksZS5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxyKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMCx0aGlzLl9yZXNldEVudGl0eVN0b3JlKCksdGhpcy5fdXBkYXRlRXh0ZW50cygpLHRoaXN9LHQucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciByPXRoaXM7dGhpcy5faXNTZXR1cHx8KGUucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX2NhbnZhcyE9bnVsbCYmdGhpcy5fYXBwZW5kQ2FudmFzTm9kZSgpLHRoaXMuX3JlbmRlckFyZWE9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicmVuZGVyLWFyZWEiLCEwKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gci5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0KG4pfSkpfSx0LnByb3RvdHlwZS5fYXBwZW5kQ2FudmFzTm9kZT1mdW5jdGlvbigpe3ZhciByPXRoaXMuZWxlbWVudCgpLnNlbGVjdCgiLnBsb3QtY2FudmFzLWNvbnRhaW5lciIpO3IuZW1wdHkoKSYmKHI9dGhpcy5lbGVtZW50KCkuYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJwbG90LWNhbnZhcy1jb250YWluZXIiLCEwKSxyLm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMubm9kZSgpKSl9LHQucHJvdG90eXBlLnNldEJvdW5kcz1mdW5jdGlvbihyLG4saSxvKXtpZihlLnByb3RvdHlwZS5zZXRCb3VuZHMuY2FsbCh0aGlzLHIsbixpLG8pLHRoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzLl9jYW52YXMhPW51bGwpe2lmKHRoaXMuX2J1ZmZlckNhbnZhcyYmIXRoaXMuX2J1ZmZlckNhbnZhc1ZhbGlkKXt0aGlzLl9idWZmZXJDYW52YXMuYXR0cigid2lkdGgiLHRoaXMuX2NhbnZhcy5hdHRyKCJ3aWR0aCIpKSx0aGlzLl9idWZmZXJDYW52YXMuYXR0cigiaGVpZ2h0Iix0aGlzLl9jYW52YXMuYXR0cigiaGVpZ2h0IikpO3ZhciBhPXRoaXMuX2J1ZmZlckNhbnZhcy5ub2RlKCkuZ2V0Q29udGV4dCgiMmQiKTtpZihhKXt2YXIgcz10aGlzLl9jYW52YXMubm9kZSgpO3Mud2lkdGg+MCYmcy5oZWlnaHQ+MD9hLmNhbnZhcy53aWR0aD4wJiZhLmNhbnZhcy5oZWlnaHQ+MCYmYS5kcmF3SW1hZ2UocywwLDApOmNvbnNvbGUud2FybigiRmFpbGVkIHRvIGZpbGwgYnVmZmVyIGNhbnZhcyB3aXRoIHdpdGggMHgwIGNhbnZhcyIpfXRoaXMuX2J1ZmZlckNhbnZhc1ZhbGlkPSEwfXZhciBsPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvIT1udWxsP3dpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOjE7dGhpcy5fY2FudmFzLmF0dHIoIndpZHRoIixyKmwpLHRoaXMuX2NhbnZhcy5hdHRyKCJoZWlnaHQiLG4qbCk7dmFyIGM9dGhpcy5fY2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpO2lmKGMmJihjLnNldFRyYW5zZm9ybShsLDAsMCxsLDAsMCksdGhpcy5fYnVmZmVyQ2FudmFzKSl7dmFyIHU9dGhpcy5fYnVmZmVyQ2FudmFzLm5vZGUoKTt1LndpZHRoPjAmJnUuaGVpZ2h0PjA/Yy5jYW52YXMud2lkdGg+MCYmYy5jYW52YXMuaGVpZ2h0PjAmJmMuZHJhd0ltYWdlKHUsMCwwLHIsbik6Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gZmlsbCBjYW52YXMgd2l0aCAweDAgYnVmZmVyIGNhbnZhcyIpfX1yZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciByPXRoaXM7ZS5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3NjYWxlcygpLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIG4ub2ZmVXBkYXRlKHIuX3JlbmRlckNhbGxiYWNrKX0pLHRoaXMuZGF0YXNldHMoW10pfSx0LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuX2RhdGFzZXRUb0RyYXdlci5nZXQocik7cmV0dXJuIHRoaXMucmVuZGVyZXIoKT09PSJzdmciP24udXNlU1ZHKHRoaXMuX3JlbmRlckFyZWEpOm4udXNlQ2FudmFzKHRoaXMuX2NhbnZhcyksbn0sdC5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbihyKXtyZXR1cm4gbmV3IGJIZS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgd0hlLlNWR0RyYXdlcigicGF0aCIsIiIpfSxmdW5jdGlvbihuKXtyZXR1cm4gbmV3IHhIZS5DYW52YXNEcmF3ZXIobixmdW5jdGlvbigpe30pfSl9LHQucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpP3RoaXMuX2FuaW1hdG9yc1tyXXx8bmV3IGg0Lk51bGw6bmV3IGg0Lk51bGx9LHQucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpcy5fZGF0YUNoYW5nZWQ9ITAsdGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpLHRoaXMucmVuZGVyTG93UHJpb3JpdHkoKX0sdC5wcm90b3R5cGUuYXR0cj1mdW5jdGlvbihyLG4saSl7cmV0dXJuIG49PW51bGw/dGhpcy5fYXR0ckJpbmRpbmdzLmdldChyKToodGhpcy5fYmluZEF0dHIocixuLGkpLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLl9iaW5kUHJvcGVydHk9ZnVuY3Rpb24ocixuLGksbyl7dmFyIGE9dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQocikscz1hIT1udWxsP2Euc2NhbGU6bnVsbCxsPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246ZnVuY3Rpb24oKXtyZXR1cm4gbn07dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5zZXQocix7YWNjZXNzb3I6bCxzY2FsZTppLHBvc3RTY2FsZTpvfSkscyE9bnVsbCYmdGhpcy5fdW5pbnN0YWxsU2NhbGVGb3JLZXkocyxyKSxpIT1udWxsJiZ0aGlzLl9pbnN0YWxsU2NhbGVGb3JLZXkoaSxyKSx0aGlzLl9jbGVhckF0dHJUb1Byb2plY3RvckNhY2hlKCl9LHQucHJvdG90eXBlLl9iaW5kQXR0cj1mdW5jdGlvbihyLG4saSl7dmFyIG89dGhpcy5fYXR0ckJpbmRpbmdzLmdldChyKSxhPW8hPW51bGw/by5zY2FsZTpudWxsLHM9dHlwZW9mIG49PSJmdW5jdGlvbiI/bjpmdW5jdGlvbigpe3JldHVybiBufTt0aGlzLl9hdHRyQmluZGluZ3Muc2V0KHIse2FjY2Vzc29yOnMsc2NhbGU6aX0pLGEhPW51bGwmJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KGEsciksaSE9bnVsbCYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KGksciksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSx0LnByb3RvdHlwZS5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3J9LHQucHJvdG90eXBlLl9nZXRBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXtpZih0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3I9PW51bGwpe3ZhciByPXRoaXMuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCk7dC5PUFRJTUlaRV9NRU1PSVpFX1BST0pFQ1RPUlMmJihyPWlhdC5tZW1vaXplUHJvamVjdG9ycyhyKSksdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yPXJ9cmV0dXJuIFNkLmFzc2lnbih7fSx0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3IpfSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgcj17fTt0aGlzLl9hdHRyQmluZGluZ3MuZWFjaChmdW5jdGlvbihpLG8pe3Jbb109dC5fc2NhbGVkQWNjZXNzb3IoaSl9KTt2YXIgbj10aGlzLl9wcm9wZXJ0eVByb2plY3RvcnMoKTtyZXR1cm4gT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbihpKXtyW2ldPT1udWxsJiYocltpXT1uW2ldKX0pLHJ9LHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5faXNBbmNob3JlZCYmKHRoaXMuX3BhaW50KCksdGhpcy5fZGF0YUNoYW5nZWQ9ITEpLHRoaXN9LHQucHJvdG90eXBlLnJlbmRlckxvd1ByaW9yaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlbmRlckNhbGxiYWNrKCksdGhpc30sdC5wcm90b3R5cGUuYW5pbWF0ZWQ9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fYW5pbWF0ZToodGhpcy5fYW5pbWF0ZT1yLHRoaXMpfSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXtyZXR1cm4gZS5wcm90b3R5cGUuZGV0YWNoLmNhbGwodGhpcyksdGhpcy5fdXBkYXRlRXh0ZW50cygpLHRoaXN9LHQucHJvdG90eXBlLl9zY2FsZXM9ZnVuY3Rpb24oKXt2YXIgcj1bXTtyZXR1cm4gdGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goZnVuY3Rpb24obixpKXt2YXIgbz1uLnNjYWxlO28hPW51bGwmJnIuaW5kZXhPZihvKT09PS0xJiZyLnB1c2gobyl9KSx0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmVhY2goZnVuY3Rpb24obixpKXt2YXIgbz1uLnNjYWxlO28hPW51bGwmJnIuaW5kZXhPZihvKT09PS0xJiZyLnB1c2gobyl9KSxyfSx0LnByb3RvdHlwZS5fdXBkYXRlRXh0ZW50cz1mdW5jdGlvbigpe3ZhciByPXRoaXM7dGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpLHRoaXMuX3NjYWxlcygpLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIG4uYWRkSW5jbHVkZWRWYWx1ZXNQcm92aWRlcihyLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKX0pfSx0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24ocil7cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmdldEV4dGVudHNGb3JBdHRyPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7aWYodGhpcy5fYXR0ckV4dGVudHNbcl09PW51bGwpe3ZhciBpPWlhdC5tZW1UaHVuayhmdW5jdGlvbigpe3JldHVybiBuLmRhdGFzZXRzKCl9LGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2F0dHJCaW5kaW5ncy5nZXQocil9LGZ1bmN0aW9uKG8sYSl7cmV0dXJuIGE9PW51bGx8fGEuYWNjZXNzb3I9PW51bGw/bnVsbDpvLm1hcChmdW5jdGlvbihzKXtyZXR1cm4gSyR0KHMsYSxudWxsKX0pfSk7dGhpcy5fYXR0ckV4dGVudHNbcl09aX1yZXR1cm4gdGhpcy5fYXR0ckV4dGVudHNbcl0oKX0sdC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7aWYodGhpcy5fcHJvcGVydHlFeHRlbnRzW3JdPT1udWxsKXt2YXIgaT1pYXQubWVtVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gbi5kYXRhc2V0cygpfSxmdW5jdGlvbigpe3JldHVybiBuLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChyKX0sZnVuY3Rpb24oKXtyZXR1cm4gbi5fZmlsdGVyRm9yUHJvcGVydHkocil9LGZ1bmN0aW9uKG8sYSxzKXtyZXR1cm4gYT09bnVsbHx8YS5hY2Nlc3Nvcj09bnVsbD9udWxsOm8ubWFwKGZ1bmN0aW9uKGwpe3JldHVybiBLJHQobCxhLHMpfSl9KTt0aGlzLl9wcm9wZXJ0eUV4dGVudHNbcl09aX1yZXR1cm4gdGhpcy5fcHJvcGVydHlFeHRlbnRzW3JdKCl9LHQucHJvdG90eXBlLl9pbmNsdWRlZFZhbHVlc0ZvclNjYWxlPWZ1bmN0aW9uKHIsbil7dmFyIGk9dGhpcztpZighdGhpcy5faXNBbmNob3JlZCYmIW4pcmV0dXJuW107dmFyIG89W107cmV0dXJuIHRoaXMuX2F0dHJCaW5kaW5ncy5lYWNoKGZ1bmN0aW9uKGEscyl7aWYoYS5zY2FsZT09PXIpe3ZhciBsPWkuZ2V0RXh0ZW50c0ZvckF0dHIocyk7bCE9bnVsbCYmKG89by5jb25jYXQod2QubWVyZ2UobCkpKX19KSx0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmVhY2goZnVuY3Rpb24oYSxzKXtpZihhLnNjYWxlPT09cil7dmFyIGw9aS5nZXRFeHRlbnRzRm9yUHJvcGVydHkocyk7bCE9bnVsbCYmKG89by5jb25jYXQod2QubWVyZ2UobCkpKX19KSxvfSx0LnByb3RvdHlwZS5hbmltYXRvcj1mdW5jdGlvbihyLG4pe3JldHVybiBuPT09dm9pZCAwP3RoaXMuX2FuaW1hdG9yc1tyXToodGhpcy5fYW5pbWF0b3JzW3JdPW4sdGhpcyl9LHQucHJvdG90eXBlLnJlbmRlcmVyPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7cmV0dXJuIHI9PT12b2lkIDA/dGhpcy5fY2FudmFzPT1udWxsPyJzdmciOiJjYW52YXMiOih0aGlzLl9jYW52YXM9PW51bGwmJnI9PT0iY2FudmFzIj8odGhpcy5fY2FudmFzPXdkLnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSkuY2xhc3NlZCgicGxvdC1jYW52YXMiLCEwKSx0aGlzLl9idWZmZXJDYW52YXM9d2Quc2VsZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpKSx0aGlzLmVsZW1lbnQoKSE9bnVsbCYmdGhpcy5fYXBwZW5kQ2FudmFzTm9kZSgpLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKGZ1bmN0aW9uKGkpe2kudXNlQ2FudmFzKG4uX2NhbnZhcyl9KSx0aGlzLnJlbmRlcigpKTp0aGlzLl9jYW52YXMhPW51bGwmJnI9PSJzdmciJiYodGhpcy5fY2FudmFzLnJlbW92ZSgpLHRoaXMuX2NhbnZhcz1udWxsLHRoaXMuX2J1ZmZlckNhbnZhcz1udWxsLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKGZ1bmN0aW9uKGkpe2kudXNlU1ZHKG4uX3JlbmRlckFyZWEpfSksdGhpcy5yZW5kZXIoKSksdGhpcyl9LHQucHJvdG90eXBlLmFkZERhdGFzZXQ9ZnVuY3Rpb24ocil7cmV0dXJuIHRoaXMuX2FkZERhdGFzZXQociksdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpc30sdC5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24ocil7dGhpcy5fcmVtb3ZlRGF0YXNldChyKTt2YXIgbj10aGlzLl9jcmVhdGVEcmF3ZXIocik7cmV0dXJuIHRoaXMuX2RhdGFzZXRUb0RyYXdlci5zZXQocixuKSx0aGlzLl9pc1NldHVwJiZ0aGlzLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQociksci5vblVwZGF0ZSh0aGlzLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjayksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlRGF0YXNldD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5fcmVtb3ZlRGF0YXNldChyKSx0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKSx0aGlzfSx0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmluZGV4T2Yocik9PT0tMT90aGlzOih0aGlzLl9yZW1vdmVEYXRhc2V0Tm9kZXMociksci5vZmZVcGRhdGUodGhpcy5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2spLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5kZWxldGUociksdGhpcyl9LHQucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcy5fZGF0YXNldFRvRHJhd2VyLmdldChyKTtuLnJlbW92ZSgpfSx0LnByb3RvdHlwZS5kYXRhc2V0cz1mdW5jdGlvbihyKXt2YXIgbj10aGlzLGk9W107cmV0dXJuIHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKGZ1bmN0aW9uKG8sYSl7cmV0dXJuIGkucHVzaChhKX0pLHI9PW51bGw/aTooaS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3JldHVybiBuLl9yZW1vdmVEYXRhc2V0KG8pfSksci5mb3JFYWNoKGZ1bmN0aW9uKG8pe3JldHVybiBuLl9hZGREYXRhc2V0KG8pfSksdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpcyl9LHQucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOm5ldyBoNC5OdWxsfV19LHQucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24ocil7fSx0LnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcz1mdW5jdGlvbihyKXt2YXIgbj10aGlzLGk9W107cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihvLGEpe2Zvcih2YXIgcz1uLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KG8pLGw9MCxjPW8uZGF0YSgpLHU9Yy5sZW5ndGgsaD1mdW5jdGlvbihwKXt2YXIgZD1jW3BdLGc9bi5fcGl4ZWxQb2ludChkLHAsbyk7aWYoU2QuTWF0aC5pc05hTihnLngpfHxTZC5NYXRoLmlzTmFOKGcueSkpcmV0dXJuImNvbnRpbnVlIjt2YXIgXz1uO2kucHVzaCh7ZGF0dW06ZCxnZXQgcG9zaXRpb24oKXtyZXR1cm4gXy5fcGl4ZWxQb2ludC5jYWxsKF8sZCxwLG8pfSxpbmRleDpwLGRhdGFzZXQ6byxkYXRhc2V0SW5kZXg6YSxjb21wb25lbnQ6bixkcmF3ZXI6cyx2YWxpZERhdHVtSW5kZXg6bH0pLGwrK30sZj0wO2Y8dTtmKyspaChmKX0pLGl9LHQucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHI9bmV3IFNkLk1hcDtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIHIuc2V0KG4sbi5kYXRhKCkpfSkscn0sdC5wcm90b3R5cGUuX3BhaW50PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcztkZWxldGUgdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yO3ZhciBuPXRoaXMuX2dlbmVyYXRlRHJhd1N0ZXBzKCksaT10aGlzLl9nZXREYXRhVG9EcmF3KCksbz10aGlzLmRhdGFzZXRzKCkubWFwKGZ1bmN0aW9uKHUpe3JldHVybiByLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHUpfSk7aWYodGhpcy5yZW5kZXJlcigpPT09ImNhbnZhcyIpe3ZhciBhPXRoaXMuX2NhbnZhcy5ub2RlKCkscz1hLmdldENvbnRleHQoIjJkIik7cy5jbGVhclJlY3QoMCwwLGEuY2xpZW50V2lkdGgsYS5jbGllbnRIZWlnaHQpLHRoaXMuX2J1ZmZlckNhbnZhc1ZhbGlkPSExfXRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKHUsaCl7dmFyIGY9dC5hcHBseURyYXdTdGVwcyhuLHUpO29baF0uZHJhdyhpLmdldCh1KSxmKX0pO3ZhciBsPXRoaXMuZGF0YXNldHMoKS5tYXAoZnVuY3Rpb24odSxoKXtyZXR1cm4gdC5nZXRUb3RhbERyYXdUaW1lKGkuZ2V0KHUpLG4pfSksYz1TZC5NYXRoLm1heChsLDApO3RoaXMuX2FkZGl0aW9uYWxQYWludChjKX0sdC5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbihyKXt2YXIgbj10aGlzO2lmKHI9PT12b2lkIDAmJihyPXRoaXMuZGF0YXNldHMoKSksdGhpcy5yZW5kZXJlcigpPT09ImNhbnZhcyIpcmV0dXJuIHdkLnNlbGVjdEFsbCgpO3ZhciBpPVtdO3JldHVybiByLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIGE9bi5fZGF0YXNldFRvRHJhd2VyLmdldChvKTtpZihhIT1udWxsKXt2YXIgcz1hLmdldFZpc3VhbFByaW1pdGl2ZXMoKTtpLnB1c2guYXBwbHkoaSxzKX19KSx3ZC5zZWxlY3RBbGwoaSl9LHQucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7cmV0dXJuIHRoaXMuX2dldEVudGl0eVN0b3JlKHIpLmVudGl0aWVzKCkubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBuLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkoaSl9KX0sdC5wcm90b3R5cGUuZmlsdGVyRW50aXRpZXM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllcygpLmZpbHRlcihyKS5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIG4uX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShpKX0pfSx0LnByb3RvdHlwZS5fZ2V0RW50aXR5U3RvcmU9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPWZ1bmN0aW9uKGEpe3JldHVybiBuLl9lbnRpdHlCb3VuZHMoYSl9O2lmKHIhPT12b2lkIDApe3ZhciBvPW5ldyBTZC5FbnRpdHlTdG9yZTtyZXR1cm4gby5hZGRBbGwodGhpcy5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcyhyKSxpLHRoaXMuX2xvY2FsT3JpZ2luQm91bmRzKCkpLG99ZWxzZSBpZih0aGlzLl9jYWNoZWRFbnRpdHlTdG9yZT09PXZvaWQgMCl7dmFyIG89bmV3IFNkLkVudGl0eVN0b3JlO28uYWRkQWxsKHRoaXMuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXModGhpcy5kYXRhc2V0cygpKSxpLHRoaXMuX2xvY2FsT3JpZ2luQm91bmRzKCkpLHRoaXMuX2NhY2hlZEVudGl0eVN0b3JlPW99cmV0dXJuIHRoaXMuX2NhY2hlZEVudGl0eVN0b3JlfSx0LnByb3RvdHlwZS5fbG9jYWxPcmlnaW5Cb3VuZHM9ZnVuY3Rpb24oKXtyZXR1cm57dG9wTGVmdDp7eDowLHk6MH0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6dGhpcy5oZWlnaHQoKX19fSx0LnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHIpe3ZhciBuPXIuZGF0dW0saT1yLmluZGV4LG89ci5kYXRhc2V0LGE9dGhpcy5fcGl4ZWxQb2ludChuLGksbykscz1hLngsbD1hLnk7cmV0dXJue3g6cyx5Omwsd2lkdGg6MCxoZWlnaHQ6MH19LHQucHJvdG90eXBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHk9ZnVuY3Rpb24ocil7dmFyIG49e2JvdW5kczp0aGlzLl9lbnRpdHlCb3VuZHMociksY29tcG9uZW50OnIuY29tcG9uZW50LGRhdGFzZXQ6ci5kYXRhc2V0LGRhdGFzZXRJbmRleDpyLmRhdGFzZXRJbmRleCxkYXR1bTpyLmRhdHVtLGluZGV4OnIuaW5kZXgscG9zaXRpb246ci5wb3NpdGlvbixzZWxlY3Rpb246d2Quc2VsZWN0KHIuZHJhd2VyLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgoci52YWxpZERhdHVtSW5kZXgpKX07cmV0dXJuIG59LHQucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24ocil7dGhyb3cgbmV3IEVycm9yKCJwbG90cyBtdXN0IGltcGxlbWVudCBlbnRpdGllc0F0Iil9LHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24ocil7dmFyIG49dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdHlOZWFyZXN0KHIpO3JldHVybiBuPT09dm9pZCAwP3ZvaWQgMDp0aGlzLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkobil9LHQucHJvdG90eXBlLmVudGl0aWVzSW49ZnVuY3Rpb24ocixuKXt2YXIgaTtpZihuPT1udWxsKXt2YXIgbz1yO2k9e3g6by50b3BMZWZ0LngseTpvLnRvcExlZnQueSx3aWR0aDpvLmJvdHRvbVJpZ2h0Lngtby50b3BMZWZ0LngsaGVpZ2h0Om8uYm90dG9tUmlnaHQueS1vLnRvcExlZnQueX19ZWxzZXt2YXIgYT1yO2k9e3g6YS5taW4seTpuLm1pbix3aWR0aDphLm1heC1hLm1pbixoZWlnaHQ6bi5tYXgtbi5taW59fXJldHVybiB0aGlzLmVudGl0aWVzSW5Cb3VuZHMoaSl9LHQucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPXRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXRpZXNJbkJvdW5kcyhyKTtpZighIWkpcmV0dXJuIGkubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBuLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkobyl9KX0sdC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPXRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXRpZXNJblhCb3VuZHMocik7aWYoISFpKXJldHVybiBpLm1hcChmdW5jdGlvbihvKXtyZXR1cm4gbi5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KG8pfSl9LHQucHJvdG90eXBlLmVudGl0aWVzSW5ZQm91bmRzPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMsaT10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5ZQm91bmRzKHIpO2lmKCEhaSlyZXR1cm4gaS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG4uX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShvKX0pfSx0LnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24ocixuKXtyLm9mZlVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayksci5vZmZVcGRhdGUodGhpcy5fZGVmZXJyZWRSZXNldEVudGl0eVN0b3JlKSxyLnJlbW92ZUluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcil9LHQucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24ocixuKXtyLm9uVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSxyLm9uVXBkYXRlKHRoaXMuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZSksci5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfSx0LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7cmV0dXJue319LHQuX3NjYWxlZEFjY2Vzc29yPWZ1bmN0aW9uKHIpe3ZhciBuPXIuc2NhbGUsaT1yLmFjY2Vzc29yLG89ci5wb3N0U2NhbGUsYT1uPT1udWxsP2k6ZnVuY3Rpb24obCxjLHUpe3JldHVybiBuLnNjYWxlKGkobCxjLHUpKX0scz1vPT1udWxsP2E6ZnVuY3Rpb24obCxjLHUpe3JldHVybiBvKGEobCxjLHUpLGwsYyx1KX07cmV0dXJuIHN9LHQucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHIsbixpKXtyZXR1cm57eDowLHk6MH19LHQucHJvdG90eXBlLl9hbmltYXRlT25OZXh0UmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGUmJnRoaXMuX2RhdGFDaGFuZ2VkfSx0Lk9QVElNSVpFX01FTU9JWkVfUFJPSkVDVE9SUz0hMSx0Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OPTYwMCx0fSh2SGUuQ29tcG9uZW50KTtLRi5QbG90PVRIZTtmdW5jdGlvbiBLJHQoZSx0LHIpe3ZhciBuPXQuYWNjZXNzb3IsaT10LnNjYWxlO2lmKGk9PW51bGwpcmV0dXJuW107dmFyIG89ZS5kYXRhKCk7ciE9bnVsbCYmKG89by5maWx0ZXIoZnVuY3Rpb24obCxjKXtyZXR1cm4gcihsLGMsZSl9KSk7dmFyIGE9ZnVuY3Rpb24obCxjKXtyZXR1cm4gbihsLGMsZSl9LHM9by5tYXAoYSk7cmV0dXJuIGkuZXh0ZW50T2ZWYWx1ZXMocyl9fSk7dmFyIFokdD1IKG9hdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkob2F0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgQ0hlPShkZSgpLFV0KHBlKSksQUhlPWVzKCksUEhlPUZlKCksSUhlPU9vdCgpLExIZT1mdW5jdGlvbihlKXtDSGUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3JldHVybiBlIT09bnVsbCYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHQucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24ocil7dmFyIG4saT0xLzA7cmV0dXJuIHRoaXMuY29tcG9uZW50cygpLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIGE9byxzPWEuZW50aXR5TmVhcmVzdChyKTtpZihzIT1udWxsKXt2YXIgbD1QSGUuTWF0aC5kaXN0YW5jZVNxdWFyZWQocy5wb3NpdGlvbixyKTtsPD1pJiYoaT1sLG49cyl9fSksbn0sdC5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHIpe2lmKHIhPW51bGwmJiEociBpbnN0YW5jZW9mIEFIZS5QbG90KSl0aHJvdyBuZXcgRXJyb3IoIlBsb3QgR3JvdXAgb25seSBhY2NlcHRzIHBsb3RzIik7cmV0dXJuIGUucHJvdG90eXBlLmFwcGVuZC5jYWxsKHRoaXMsciksdGhpc30sdH0oSUhlLkdyb3VwKTtvYXQuUGxvdEdyb3VwPUxIZX0pO3ZhciBKJHQ9SChhYXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGFhdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGtIZT0oZGUoKSxVdChwZSkpLFV1PShFcigpLFV0KE1yKSkscW89RmUoKSxSSGU9VUYoKSxOSGU9ZnVuY3Rpb24oZSl7a0hlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cj09PXZvaWQgMCYmKHI9W10pO3ZhciBuPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fcm93UGFkZGluZz0wLG4uX2NvbHVtblBhZGRpbmc9MCxuLl9yb3dzPVtdLG4uX3Jvd1dlaWdodHM9W10sbi5fY29sdW1uV2VpZ2h0cz1bXSxuLl9uUm93cz0wLG4uX25Db2xzPTAsbi5fY2FsY3VsYXRlZExheW91dD1udWxsLG4uYWRkQ2xhc3MoInRhYmxlIiksci5mb3JFYWNoKGZ1bmN0aW9uKGksbyl7aS5mb3JFYWNoKGZ1bmN0aW9uKGEscyl7YSE9bnVsbCYmbi5hZGQoYSxvLHMpfSl9KSxufXJldHVybiB0LnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbihyKXtmb3IodmFyIG49MDtuPHRoaXMuX25Sb3dzO24rKylmb3IodmFyIGk9MDtpPHRoaXMuX25Db2xzO2krKyl0aGlzLl9yb3dzW25dW2ldIT1udWxsJiZyKHRoaXMuX3Jvd3Nbbl1baV0pfSx0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24ocil7Zm9yKHZhciBuPTA7bjx0aGlzLl9uUm93cztuKyspZm9yKHZhciBpPTA7aTx0aGlzLl9uQ29scztpKyspaWYodGhpcy5fcm93c1tuXVtpXT09PXIpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLmNvbXBvbmVudEF0PWZ1bmN0aW9uKHIsbil7cmV0dXJuIHI8MHx8cj49dGhpcy5fblJvd3N8fG48MHx8bj49dGhpcy5fbkNvbHM/bnVsbDp0aGlzLl9yb3dzW3JdW25dfSx0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24ocixuLGkpe2lmKHI9PW51bGwpdGhyb3cgRXJyb3IoIkNhbm5vdCBhZGQgbnVsbCB0byBhIHRhYmxlIGNlbGwiKTtpZighdGhpcy5oYXMocikpe3ZhciBvPXRoaXMuX3Jvd3Nbbl0mJnRoaXMuX3Jvd3Nbbl1baV07aWYobyE9bnVsbCl0aHJvdyBuZXcgRXJyb3IoImNlbGwgaXMgb2NjdXBpZWQiKTtyLmRldGFjaCgpLHRoaXMuX25Sb3dzPU1hdGgubWF4KG4rMSx0aGlzLl9uUm93cyksdGhpcy5fbkNvbHM9TWF0aC5tYXgoaSsxLHRoaXMuX25Db2xzKSx0aGlzLl9wYWRUYWJsZVRvU2l6ZSh0aGlzLl9uUm93cyx0aGlzLl9uQ29scyksdGhpcy5fcm93c1tuXVtpXT1yLHRoaXMuX2Fkb3B0QW5kQW5jaG9yKHIpLHRoaXMucmVkcmF3KCl9cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24ocil7Zm9yKHZhciBuPTA7bjx0aGlzLl9uUm93cztuKyspZm9yKHZhciBpPTA7aTx0aGlzLl9uQ29scztpKyspaWYodGhpcy5fcm93c1tuXVtpXT09PXIpcmV0dXJuIHRoaXMuX3Jvd3Nbbl1baV09bnVsbCwhMDtyZXR1cm4hMX0sdC5wcm90b3R5cGUuX2l0ZXJhdGVMYXlvdXQ9ZnVuY3Rpb24ocixuLGkpe2k9PT12b2lkIDAmJihpPSExKTtmb3IodmFyIG89dGhpcy5fcm93cyxhPVV1LnRyYW5zcG9zZSh0aGlzLl9yb3dzKSxzPXItdGhpcy5fY29sdW1uUGFkZGluZyoodGhpcy5fbkNvbHMtMSksbD1uLXRoaXMuX3Jvd1BhZGRpbmcqKHRoaXMuX25Sb3dzLTEpLGM9dC5fY2FsY0NvbXBvbmVudFdlaWdodHModGhpcy5fcm93V2VpZ2h0cyxvLGZ1bmN0aW9uKHope3JldHVybiB6PT1udWxsfHx6LmZpeGVkSGVpZ2h0KCl9KSx1PXQuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX2NvbHVtbldlaWdodHMsYSxmdW5jdGlvbih6KXtyZXR1cm4gej09bnVsbHx8ei5maXhlZFdpZHRoKCl9KSxoPXUubWFwKGZ1bmN0aW9uKHope3JldHVybiB6PT09MD8uNTp6fSksZj1jLm1hcChmdW5jdGlvbih6KXtyZXR1cm4gej09PTA/LjU6en0pLHA9dC5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKGgscyksZD10Ll9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoZixsKSxnPXFvLkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KDAsdGhpcy5fbkNvbHMpLF89cW8uQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uUm93cykseSx4LGI9MCxTLEMsUDs7KXt2YXIgaz1xby5BcnJheS5hZGQoXyxkKSxPPXFvLkFycmF5LmFkZChnLHApO1M9dGhpcy5fZGV0ZXJtaW5lR3VhcmFudGVlcyhPLGssaSksZz1TLmd1YXJhbnRlZWRXaWR0aHMsXz1TLmd1YXJhbnRlZWRIZWlnaHRzLEM9Uy53YW50c1dpZHRoQXJyLnNvbWUoZnVuY3Rpb24oeil7cmV0dXJuIHp9KSxQPVMud2FudHNIZWlnaHRBcnIuc29tZShmdW5jdGlvbih6KXtyZXR1cm4gen0pO3ZhciBEPXksQj14O3k9cy1VdS5zdW0oUy5ndWFyYW50ZWVkV2lkdGhzKSx4PWwtVXUuc3VtKFMuZ3VhcmFudGVlZEhlaWdodHMpO3ZhciBJPXZvaWQgMDtDPyhJPVMud2FudHNXaWR0aEFyci5tYXAoZnVuY3Rpb24oeil7cmV0dXJuIHo/LjE6MH0pLEk9cW8uQXJyYXkuYWRkKEksdSkpOkk9dTt2YXIgTD12b2lkIDA7UD8oTD1TLndhbnRzSGVpZ2h0QXJyLm1hcChmdW5jdGlvbih6KXtyZXR1cm4gej8uMTowfSksTD1xby5BcnJheS5hZGQoTCxjKSk6TD1jLHA9dC5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKEkseSksZD10Ll9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoTCx4KSxiKys7dmFyIFI9eT4wJiZ5IT09RCxGPXg+MCYmeCE9PUI7aWYoIShSfHxGKXx8Yj41KWJyZWFrfXJldHVybiB5PXMtVXUuc3VtKFMuZ3VhcmFudGVlZFdpZHRocykseD1sLVV1LnN1bShTLmd1YXJhbnRlZWRIZWlnaHRzKSxwPXQuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZSh1LHkpLGQ9dC5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKGMseCkse2NvbFByb3BvcnRpb25hbFNwYWNlOnAscm93UHJvcG9ydGlvbmFsU3BhY2U6ZCxndWFyYW50ZWVkV2lkdGhzOlMuZ3VhcmFudGVlZFdpZHRocyxndWFyYW50ZWVkSGVpZ2h0czpTLmd1YXJhbnRlZWRIZWlnaHRzLHdhbnRzV2lkdGg6Qyx3YW50c0hlaWdodDpQfX0sdC5wcm90b3R5cGUuX2RldGVybWluZUd1YXJhbnRlZXM9ZnVuY3Rpb24ocixuLGkpe2k9PT12b2lkIDAmJihpPSExKTt2YXIgbz1xby5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Db2xzKSxhPXFvLkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KDAsdGhpcy5fblJvd3MpLHM9cW8uQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoITEsdGhpcy5fbkNvbHMpLGw9cW8uQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoITEsdGhpcy5fblJvd3MpO3JldHVybiB0aGlzLl9yb3dzLmZvckVhY2goZnVuY3Rpb24oYyx1KXtjLmZvckVhY2goZnVuY3Rpb24oaCxmKXt2YXIgcDtoIT1udWxsP3A9aC5yZXF1ZXN0ZWRTcGFjZShyW2ZdLG5bdV0pOnA9e21pbldpZHRoOjAsbWluSGVpZ2h0OjB9O3ZhciBkPWk/TWF0aC5taW4ocC5taW5XaWR0aCxyW2ZdKTpwLm1pbldpZHRoO29bZl09TWF0aC5tYXgob1tmXSxkKTt2YXIgZz1pP01hdGgubWluKHAubWluSGVpZ2h0LG5bdV0pOnAubWluSGVpZ2h0O2FbdV09TWF0aC5tYXgoYVt1XSxnKTt2YXIgXz1wLm1pbldpZHRoPnJbZl07c1tmXT1zW2ZdfHxfO3ZhciB5PXAubWluSGVpZ2h0Pm5bdV07bFt1XT1sW3VdfHx5fSl9KSx7Z3VhcmFudGVlZFdpZHRoczpvLGd1YXJhbnRlZWRIZWlnaHRzOmEsd2FudHNXaWR0aEFycjpzLHdhbnRzSGVpZ2h0QXJyOmx9fSx0LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbihyLG4pe3JldHVybiB0aGlzLl9jYWxjdWxhdGVkTGF5b3V0PXRoaXMuX2l0ZXJhdGVMYXlvdXQocixuKSx7bWluV2lkdGg6VXUuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksbWluSGVpZ2h0OlV1LnN1bSh0aGlzLl9jYWxjdWxhdGVkTGF5b3V0Lmd1YXJhbnRlZWRIZWlnaHRzKX19LHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24ocixuLGkpe3ZhciBvPXRoaXM7ZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMscixuLGkpO3ZhciBhPVV1LnN1bSh0aGlzLl9jYWxjdWxhdGVkTGF5b3V0Lmd1YXJhbnRlZWRXaWR0aHMpLHM9VXUuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZEhlaWdodHMpLGw9dGhpcy5fY2FsY3VsYXRlZExheW91dDsoYT50aGlzLndpZHRoKCl8fHM+dGhpcy5oZWlnaHQoKSkmJihsPXRoaXMuX2l0ZXJhdGVMYXlvdXQodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCksITApKTt2YXIgYz0wLHU9cW8uQXJyYXkuYWRkKGwucm93UHJvcG9ydGlvbmFsU3BhY2UsbC5ndWFyYW50ZWVkSGVpZ2h0cyksaD1xby5BcnJheS5hZGQobC5jb2xQcm9wb3J0aW9uYWxTcGFjZSxsLmd1YXJhbnRlZWRXaWR0aHMpO3JldHVybiB0aGlzLl9yb3dzLmZvckVhY2goZnVuY3Rpb24oZixwKXt2YXIgZD0wO2YuZm9yRWFjaChmdW5jdGlvbihnLF8pe2chPW51bGwmJmcuY29tcHV0ZUxheW91dCh7eDpkLHk6Y30saFtfXSx1W3BdKSxkKz1oW19dK28uX2NvbHVtblBhZGRpbmd9KSxjKz11W3BdK28uX3Jvd1BhZGRpbmd9KSx0aGlzfSx0LnByb3RvdHlwZS5yb3dQYWRkaW5nPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX3Jvd1BhZGRpbmc7aWYoIXFvLk1hdGguaXNWYWxpZE51bWJlcihyKXx8cjwwKXRocm93IEVycm9yKCJyb3dQYWRkaW5nIG11c3QgYmUgYSBub24tbmVnYXRpdmUgZmluaXRlIHZhbHVlIik7cmV0dXJuIHRoaXMuX3Jvd1BhZGRpbmc9cix0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLmNvbHVtblBhZGRpbmc9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fY29sdW1uUGFkZGluZztpZighcW8uTWF0aC5pc1ZhbGlkTnVtYmVyKHIpfHxyPDApdGhyb3cgRXJyb3IoImNvbHVtblBhZGRpbmcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBmaW5pdGUgdmFsdWUiKTtyZXR1cm4gdGhpcy5fY29sdW1uUGFkZGluZz1yLHRoaXMucmVkcmF3KCksdGhpc30sdC5wcm90b3R5cGUucm93V2VpZ2h0PWZ1bmN0aW9uKHIsbil7aWYobj09bnVsbClyZXR1cm4gdGhpcy5fcm93V2VpZ2h0c1tyXTtpZighcW8uTWF0aC5pc1ZhbGlkTnVtYmVyKG4pfHxuPDApdGhyb3cgRXJyb3IoInJvd1dlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dXZWlnaHRzW3JdPW4sdGhpcy5yZWRyYXcoKSx0aGlzfSx0LnByb3RvdHlwZS5jb2x1bW5XZWlnaHQ9ZnVuY3Rpb24ocixuKXtpZihuPT1udWxsKXJldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3JdO2lmKCFxby5NYXRoLmlzVmFsaWROdW1iZXIobil8fG48MCl0aHJvdyBFcnJvcigiY29sdW1uV2VpZ2h0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgZmluaXRlIHZhbHVlIik7cmV0dXJuIHRoaXMuX2NvbHVtbldlaWdodHNbcl09bix0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXt2YXIgcj1VdS50cmFuc3Bvc2UodGhpcy5fcm93cyk7cmV0dXJuIHQuX2ZpeGVkU3BhY2UocixmdW5jdGlvbihuKXtyZXR1cm4gbj09bnVsbHx8bi5maXhlZFdpZHRoKCl9KX0sdC5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5fZml4ZWRTcGFjZSh0aGlzLl9yb3dzLGZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsfHxyLmZpeGVkSGVpZ2h0KCl9KX0sdC5wcm90b3R5cGUuX3BhZFRhYmxlVG9TaXplPWZ1bmN0aW9uKHIsbil7Zm9yKHZhciBpPTA7aTxyO2krKyl7dGhpcy5fcm93c1tpXT09PXZvaWQgMCYmKHRoaXMuX3Jvd3NbaV09W10sdGhpcy5fcm93V2VpZ2h0c1tpXT1udWxsKTtmb3IodmFyIG89MDtvPG47bysrKXRoaXMuX3Jvd3NbaV1bb109PT12b2lkIDAmJih0aGlzLl9yb3dzW2ldW29dPW51bGwpfWZvcih2YXIgbz0wO288bjtvKyspdGhpcy5fY29sdW1uV2VpZ2h0c1tvXT09PXZvaWQgMCYmKHRoaXMuX2NvbHVtbldlaWdodHNbb109bnVsbCl9LHQuX2NhbGNDb21wb25lbnRXZWlnaHRzPWZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gci5tYXAoZnVuY3Rpb24obyxhKXtpZihvIT1udWxsKXJldHVybiBvO3ZhciBzPW5bYV0ubWFwKGkpLGw9cy5yZWR1Y2UoZnVuY3Rpb24oYyx1KXtyZXR1cm4gYyYmdX0sITApO3JldHVybiBsPzA6MX0pfSx0Ll9jYWxjUHJvcG9ydGlvbmFsU3BhY2U9ZnVuY3Rpb24ocixuKXt2YXIgaT1VdS5zdW0ocik7cmV0dXJuIGk9PT0wP3FvLkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KDAsci5sZW5ndGgpOnIubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBuKm8vaX0pfSx0Ll9maXhlZFNwYWNlPWZ1bmN0aW9uKHIsbil7dmFyIGk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVkdWNlKGZ1bmN0aW9uKHMsbCl7cmV0dXJuIHMmJmx9LCEwKX0sbz1mdW5jdGlvbihhKXtyZXR1cm4gaShhLm1hcChuKSl9O3JldHVybiBpKHIubWFwKG8pKX0sdH0oUkhlLkNvbXBvbmVudENvbnRhaW5lcik7YWF0LlRhYmxlPU5IZX0pO3ZhciBRJHQ9SChzYXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHNhdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIERIZT0oZGUoKSxVdChwZSkpLE9IZT1Ib3QoKSx6SGU9MixGSGU9ZnVuY3Rpb24oZSl7REhlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lIT09bnVsbCYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHIuX21heExpbmVzPXpIZSxyfXJldHVybiB0LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbihyLG4pe3RoaXMuX3dyYXBwZXIubWF4TGluZXModGhpcy5fbWF4TGluZXMpO3ZhciBpPXRoaXMuYW5nbGUoKT09PTA/cjpuO2k9PT0wJiYoaT0xLzApO3ZhciBvPXRoaXMuX3dyYXBwZXIud3JhcCh0aGlzLl90ZXh0LHRoaXMuX21lYXN1cmVyLGkpLGE9dGhpcy5fbWVhc3VyZXIubWVhc3VyZShvLndyYXBwZWRUZXh0KSxzPSh0aGlzLmFuZ2xlKCk9PT0wP2Eud2lkdGg6YS5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbD0odGhpcy5hbmdsZSgpPT09MD9hLmhlaWdodDphLndpZHRoKSsyKnRoaXMucGFkZGluZygpO3JldHVybnttaW5XaWR0aDpzLG1pbkhlaWdodDpsfX0sdC5wcm90b3R5cGUubWF4TGluZXM9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0wP3RoaXMuX21heExpbmVzOih0aGlzLl9tYXhMaW5lcz1yLHRoaXMucmVkcmF3KCksdGhpcyl9LHR9KE9IZS5MYWJlbCk7c2F0LldyYXBwZWRMYWJlbD1GSGV9KTt2YXIgdEt0PUgobGF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShsYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBCSGU9KGRlKCksVXQocGUpKSxISGU9SEYoKSxWSGU9ZnVuY3Rpb24oZSl7QkhlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuYWRkQ2xhc3MoIngtZHJhZy1ib3gtbGF5ZXIiKSxyLl9oYXNDb3JuZXJzPSExLHJ9cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24ocixuLGkpe3JldHVybiBlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxyLG4saSksdGhpcy5fc2V0Qm91bmRzKHRoaXMuYm91bmRzKCkpLHRoaXN9LHQucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24ocil7ZS5wcm90b3R5cGUuX3NldEJvdW5kcy5jYWxsKHRoaXMse3RvcExlZnQ6e3g6ci50b3BMZWZ0LngseTowfSxib3R0b21SaWdodDp7eDpyLmJvdHRvbVJpZ2h0LngseTp0aGlzLmhlaWdodCgpfX0pfSx0LnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbihyKXtyJiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ4LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIil9LHQucHJvdG90eXBlLnlTY2FsZT1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiBlLnByb3RvdHlwZS55U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInlTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBYRHJhZ0JveExheWVyIil9LHQucHJvdG90eXBlLnlFeHRlbnQ9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gZS5wcm90b3R5cGUueUV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWERyYWdCb3hMYXllciBoYXMgbm8geUV4dGVudCIpfSx0fShISGUuRHJhZ0JveExheWVyKTtsYXQuWERyYWdCb3hMYXllcj1WSGV9KTt2YXIgZUt0PUgoY2F0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShjYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBVSGU9KGRlKCksVXQocGUpKSxxSGU9SEYoKSxHSGU9ZnVuY3Rpb24oZSl7VUhlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuYWRkQ2xhc3MoInktZHJhZy1ib3gtbGF5ZXIiKSxyLl9oYXNDb3JuZXJzPSExLHJ9cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24ocixuLGkpe3JldHVybiBlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxyLG4saSksdGhpcy5fc2V0Qm91bmRzKHRoaXMuYm91bmRzKCkpLHRoaXN9LHQucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24ocil7ZS5wcm90b3R5cGUuX3NldEJvdW5kcy5jYWxsKHRoaXMse3RvcExlZnQ6e3g6MCx5OnIudG9wTGVmdC55fSxib3R0b21SaWdodDp7eDp0aGlzLndpZHRoKCkseTpyLmJvdHRvbVJpZ2h0Lnl9fSl9LHQucHJvdG90eXBlLl9zZXRSZXNpemFibGVDbGFzc2VzPWZ1bmN0aW9uKHIpe3ImJnRoaXMuZW5hYmxlZCgpP3RoaXMuYWRkQ2xhc3MoInktcmVzaXphYmxlIik6dGhpcy5yZW1vdmVDbGFzcygieS1yZXNpemFibGUiKX0sdC5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIGUucHJvdG90eXBlLnhTY2FsZS5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigieFNjYWxlcyBjYW5ub3QgYmUgc2V0IG9uIGFuIFlEcmFnQm94TGF5ZXIiKX0sdC5wcm90b3R5cGUueEV4dGVudD1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiBlLnByb3RvdHlwZS54RXh0ZW50LmNhbGwodGhpcyk7dGhyb3cgbmV3IEVycm9yKCJZRHJhZ0JveExheWVyIGhhcyBubyB4RXh0ZW50Iil9LHR9KHFIZS5EcmFnQm94TGF5ZXIpO2NhdC5ZRHJhZ0JveExheWVyPUdIZX0pO3ZhciBBb3Q9SChnYT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2EsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBScz0oZGUoKSxVdChwZSkpO1JzLl9fZXhwb3J0U3RhcihIRigpLGdhKTtScy5fX2V4cG9ydFN0YXIoYiR0KCksZ2EpO1JzLl9fZXhwb3J0U3Rhcih3JHQoKSxnYSk7UnMuX19leHBvcnRTdGFyKE9vdCgpLGdhKTtScy5fX2V4cG9ydFN0YXIoSW90KCksZ2EpO1JzLl9fZXhwb3J0U3RhcihNJHQoKSxnYSk7UnMuX19leHBvcnRTdGFyKEhvdCgpLGdhKTtScy5fX2V4cG9ydFN0YXIoRSR0KCksZ2EpO1JzLl9fZXhwb3J0U3RhcihaJHQoKSxnYSk7UnMuX19leHBvcnRTdGFyKEVvdCgpLGdhKTtScy5fX2V4cG9ydFN0YXIoSiR0KCksZ2EpO1JzLl9fZXhwb3J0U3RhcihRJHQoKSxnYSk7UnMuX19leHBvcnRTdGFyKHRLdCgpLGdhKTtScy5fX2V4cG9ydFN0YXIoZUt0KCksZ2EpfSk7dmFyIGhhdD1IKHVhdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodWF0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgV0hlPShkZSgpLFV0KHBlKSksWUhlPU5mKCksakhlPWZ1bmN0aW9uKGUpe1dIZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7cmV0dXJuIGUuY2FsbCh0aGlzLCJwYXRoIiwiYXJjIGZpbGwiKXx8dGhpc31yZXR1cm4gdC5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24ocil7ci5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfSx0fShZSGUuU1ZHRHJhd2VyKTt1YXQuQXJjU1ZHRHJhd2VyPWpIZX0pO3ZhciBwYXQ9SChmYXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGZhdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIFhIZT0oZGUoKSxVdChwZSkpLCRIZT1OZigpLEtIZT1mdW5jdGlvbihlKXtYSGUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmNhbGwodGhpcywicGF0aCIsImFyYyBvdXRsaW5lIil8fHRoaXN9cmV0dXJuIHQucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHIpe3Iuc3R5bGUoImZpbGwiLCJub25lIil9LHR9KCRIZS5TVkdEcmF3ZXIpO2ZhdC5BcmNPdXRsaW5lU1ZHRHJhd2VyPUtIZX0pO3ZhciBkYXQ9SChKRj0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoSkYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBaSGU9KGRlKCksVXQocGUpKSxaRj1GdigpLEpIZT1OZigpLFFIZT1mdW5jdGlvbihlKXtaSGUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmNhbGwodGhpcywicGF0aCIsImFyZWEiKXx8dGhpc31yZXR1cm4gdC5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24ocil7ci5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKHIpe3JldHVybiBlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sdH0oSkhlLlNWR0RyYXdlcik7SkYuQXJlYVNWR0RyYXdlcj1RSGU7dmFyIHRWZT1bIm9wYWNpdHkiLCJmaWxsIiwiZmlsbC1vcGFjaXR5Il0sZVZlPVsib3BhY2l0eSIsInN0cm9rZSIsInN0cm9rZS13aWR0aCJdO2Z1bmN0aW9uIHJWZShlLHQpe3JldHVybiBmdW5jdGlvbihyLG4saSl7dmFyIG89WkYucmVzb2x2ZUF0dHJpYnV0ZXMoaSx0VmUsblswXSwwKTtaRi5yZW5kZXJBcmVhKHIsZSgpLG5bMF0sbyk7dmFyIGE9WkYucmVzb2x2ZUF0dHJpYnV0ZXMoaSxlVmUsblswXSwwKTtaRi5yZW5kZXJMaW5lKHIsdCgpLG5bMF0sYSl9fUpGLm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXA9clZlfSk7dmFyIHRCPUgoUUY9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFFGLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgblZlPShkZSgpLFV0KHBlKSksckt0PUZ2KCksaVZlPU5mKCksb1ZlPWZ1bmN0aW9uKGUpe25WZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7cmV0dXJuIGUuY2FsbCh0aGlzLCJwYXRoIiwibGluZSIpfHx0aGlzfXJldHVybiB0LnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbihyKXtyLnN0eWxlKCJmaWxsIiwibm9uZSIpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKHIpe3JldHVybiBlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sdH0oaVZlLlNWR0RyYXdlcik7UUYuTGluZVNWR0RyYXdlcj1vVmU7dmFyIGFWZT1bIm9wYWNpdHkiLCJzdHJva2Utb3BhY2l0eSIsInN0cm9rZS13aWR0aCIsInN0cm9rZSIsInN0cm9rZS1kYXNoYXJyYXkiXTtmdW5jdGlvbiBzVmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXt2YXIgaT1yS3QucmVzb2x2ZUF0dHJpYnV0ZXMobixhVmUsclswXSwwKTtyS3QucmVuZGVyTGluZSh0LGUoKSxyWzBdLGkpfX1RRi5tYWtlTGluZUNhbnZhc0RyYXdTdGVwPXNWZX0pO3ZhciByQj1IKEFTPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShBUywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG5LdD0oZGUoKSxVdChwZSkpLGVCPUZ2KCksbFZlPU5mKCksY1ZlPWZ1bmN0aW9uKGUpe25LdC5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KHIpe3I9PT12b2lkIDAmJihyPSIiKTt2YXIgbj1lLmNhbGwodGhpcywicmVjdCIsIiIpfHx0aGlzO3JldHVybiBuLl9yb290Q2xhc3NOYW1lPXIsbi5fcm9vdC5jbGFzc2VkKG4uX3Jvb3RDbGFzc05hbWUsITApLG59cmV0dXJuIHR9KGxWZS5TVkdEcmF3ZXIpO0FTLlJlY3RhbmdsZVNWR0RyYXdlcj1jVmU7dmFyIHVWZT1lQi5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0Il0pO0FTLlJlY3RhbmdsZUNhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uKGUsdCxyKXtlLnNhdmUoKTtmb3IodmFyIG49dC5sZW5ndGgsaT0wO2k8bjtpKyspe3ZhciBvPXRbaV07aWYobyE9bnVsbCl7dmFyIGE9ZUIucmVzb2x2ZUF0dHJpYnV0ZXMocix1VmUsbyxpKTtlLmJlZ2luUGF0aCgpLGUucmVjdChhLngsYS55LGEud2lkdGgsYS5oZWlnaHQpLGVCLnJlbmRlclBhdGhXaXRoU3R5bGUoZSxhKX19ZS5yZXN0b3JlKCl9O3ZhciBoVmU9ZnVuY3Rpb24oZSl7bkt0Ll9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cmV0dXJuIGUuY2FsbCh0aGlzLHIsQVMuUmVjdGFuZ2xlQ2FudmFzRHJhd1N0ZXApfHx0aGlzfXJldHVybiB0fShlQi5DYW52YXNEcmF3ZXIpO0FTLlJlY3RhbmdsZUNhbnZhc0RyYXdlcj1oVmV9KTt2YXIgZ2F0PUgobWF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShtYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBmVmU9KGRlKCksVXQocGUpKSxwVmU9TmYoKSxkVmU9ZnVuY3Rpb24oZSl7ZlZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXtyZXR1cm4gZS5jYWxsKHRoaXMsImxpbmUiLCIiKXx8dGhpc31yZXR1cm4gdH0ocFZlLlNWR0RyYXdlcik7bWF0LlNlZ21lbnRTVkdEcmF3ZXI9ZFZlfSk7dmFyIGlLdD1IKF9hdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoX2F0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbVZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIsbil7bj09PXZvaWQgMCYmKG49d2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuc2NyZWVuV2lkdGg9dCx0aGlzLnNjcmVlbkhlaWdodD1yLHRoaXMuZGV2aWNlUGl4ZWxSYXRpbz1uLHRoaXMucGl4ZWxXaWR0aD10Km4sdGhpcy5waXhlbEhlaWdodD1yKm4sdGhpcy5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSxlLnNpemVQaXhlbHModGhpcy5jdHgsdCxyLG4pfXJldHVybiBlLnNpemVQaXhlbHM9ZnVuY3Rpb24odCxyLG4saSl7dmFyIG89dC5jYW52YXM7by53aWR0aD1yKmksby5oZWlnaHQ9bippLG8uc3R5bGUud2lkdGg9cisicHgiLG8uc3R5bGUuaGVpZ2h0PW4rInB4Iix0LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdC5zY2FsZShpLGkpfSxlLnByb3RvdHlwZS5ibGl0PWZ1bmN0aW9uKHQscixuKXtyPT09dm9pZCAwJiYocj0wKSxuPT09dm9pZCAwJiYobj0wKSx0LmRyYXdJbWFnZSh0aGlzLmNhbnZhcyxyLG4sdGhpcy5zY3JlZW5XaWR0aCx0aGlzLnNjcmVlbkhlaWdodCl9LGUucHJvdG90eXBlLmJsaXRDZW50ZXI9ZnVuY3Rpb24odCxyLG4pe3I9PT12b2lkIDAmJihyPTApLG49PT12b2lkIDAmJihuPTApLHRoaXMuYmxpdCh0LE1hdGguZmxvb3Ioci10aGlzLnNjcmVlbldpZHRoLzIpLE1hdGguZmxvb3Iobi10aGlzLnNjcmVlbkhlaWdodC8yKSl9LGUucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbih0LHIsbil7bj09PXZvaWQgMCYmKG49ITEpO3ZhciBpPXRoaXMuZGV2aWNlUGl4ZWxSYXRpbztyZXR1cm4gdGhpcy5zY3JlZW5XaWR0aD10LHRoaXMuc2NyZWVuSGVpZ2h0PXIsdGhpcy5waXhlbFdpZHRoPXQqaSx0aGlzLnBpeGVsSGVpZ2h0PXIqaSxlLnNpemVQaXhlbHModGhpcy5jdHgsdCxyLGkpLG4mJnRoaXMuY3R4LnRyYW5zbGF0ZSh0LzIsdC8yKSx0aGlzfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2YXIgcj10aGlzLG49ci5waXhlbFdpZHRoLGk9ci5waXhlbEhlaWdodCxvPXIuY3R4O3JldHVybiBvLnNhdmUoKSxvLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdD09bnVsbD9vLmNsZWFyUmVjdCgwLDAsbixpKTooby5maWxsU3R5bGU9dCxvLmZpbGxSZWN0KDAsMCxuLGkpKSxvLnJlc3RvcmUoKSx0aGlzfSxlLnByb3RvdHlwZS5nZXRJbWFnZURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguZ2V0SW1hZ2VEYXRhKDAsMCx0aGlzLnBpeGVsV2lkdGgsdGhpcy5waXhlbEhlaWdodCl9LGV9KCk7X2F0LkNhbnZhc0J1ZmZlcj1tVmV9KTt2YXIgeWF0PUgobkI9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG5CLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZ1ZlPShkZSgpLFV0KHBlKSksZjQ9RnYoKSxfVmU9aUt0KCkseVZlPU5mKCksdlZlPWZ1bmN0aW9uKGUpe2dWZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7cmV0dXJuIGUuY2FsbCh0aGlzLCJwYXRoIiwic3ltYm9sIil8fHRoaXN9cmV0dXJuIHR9KHlWZS5TVkdEcmF3ZXIpO25CLlN5bWJvbFNWR0RyYXdlcj12VmU7dmFyIHhWZT1mNC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSJdKTtmdW5jdGlvbiBiVmUoZSx0LHIsbil7dmFyIGk9dGhpcztyZXR1cm4gZnVuY3Rpb24obyxhLHMpe2Zvcih2YXIgbD1vLmNhbnZhcyxjPWwuY2xpZW50V2lkdGgsdT1sLmNsaWVudEhlaWdodCxoPW49PT12b2lkIDA/bmV3IF9WZS5DYW52YXNCdWZmZXIoMCwwKTpuLGY9dCgpLHA9cigpLGQ9bnVsbCxnPW51bGwsXz1udWxsLHk9MDt5PGEubGVuZ3RoO3krKyl7dmFyIHg9YVt5XTtpZih4IT1udWxsKXt2YXIgYj1mNC5yZXNvbHZlQXR0cmlidXRlcyhzLHhWZSx4LHkpLFM9cCh4LHksZSk7aWYoISF3VmUoYyx1LGIueCxiLnksUykpe3ZhciBDPVNWZShkLGIsZjQuQ29udGV4dFN0eWxlQXR0cnMpLFA9Zih4LHksaS5fZGF0YXNldCk7aWYoIShDJiZfPT1TJiZnPT1QKSl7dmFyIGs9ZjQuZ2V0U3Ryb2tlV2lkdGgoYiksTz1TK2srMTsoTz5oLnNjcmVlbldpZHRofHxPPmguc2NyZWVuSGVpZ2h0KSYmaC5yZXNpemUoTyxPLCEwKSxoLmNsZWFyKCk7dmFyIEQ9aC5jdHg7RC5iZWdpblBhdGgoKSxQKFMpLmNvbnRleHQoRCkobnVsbCksRC5jbG9zZVBhdGgoKSxmNC5yZW5kZXJQYXRoV2l0aFN0eWxlKEQsYiksZz1QLF89UyxkPWJ9aC5ibGl0Q2VudGVyKG8sYi54LGIueSl9fX19fW5CLm1ha2VTeW1ib2xDYW52YXNEcmF3U3RlcD1iVmU7ZnVuY3Rpb24gd1ZlKGUsdCxyLG4saSl7cmV0dXJuIHIraT49MCYmci1pPD1lJiZuK2k+PTAmJm4taTw9dH1mdW5jdGlvbiBTVmUoZSx0LHIpe2lmKGU9PW51bGwpcmV0dXJuITE7Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe3ZhciBpPXJbbl07aWYoZVtpXSE9dFtpXSlyZXR1cm4hMX1yZXR1cm4hMH19KTt2YXIgQnY9SChSYz0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUmMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBEZj0oZGUoKSxVdChwZSkpO0RmLl9fZXhwb3J0U3RhcihoYXQoKSxSYyk7RGYuX19leHBvcnRTdGFyKHBhdCgpLFJjKTtEZi5fX2V4cG9ydFN0YXIoZGF0KCksUmMpO0RmLl9fZXhwb3J0U3RhcihGdigpLFJjKTtEZi5fX2V4cG9ydFN0YXIoVnUoKSxSYyk7RGYuX19leHBvcnRTdGFyKHRCKCksUmMpO0RmLl9fZXhwb3J0U3RhcihyQigpLFJjKTtEZi5fX2V4cG9ydFN0YXIoZ2F0KCksUmMpO0RmLl9fZXhwb3J0U3RhcihOZigpLFJjKTtEZi5fX2V4cG9ydFN0YXIoeWF0KCksUmMpfSk7dmFyIEh2PUgoeGF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh4YXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBNVmU9KGRlKCksVXQocGUpKSxvS3Q9THMoKSx2YXQ9RmUoKSxFVmU9bmF0KCkscDQ9ZXMoKSxUVmU9ZnVuY3Rpb24oZSl7TVZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITEsci5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj0hMSxyLl9kZWZlcnJlZFJlbmRlcmluZz0hMSxyLl9hcHBseURlZmVycmVkUmVuZGVyaW5nVHJhbnNmb3JtPWZ1bmN0aW9uKG4saSxvLGEpeyFyLl9pc0FuY2hvcmVkfHwoci5fcmVuZGVyQXJlYSE9bnVsbCYmci5fcmVuZGVyQXJlYS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIituKyIsICIraSsiKSBzY2FsZSgiK28rIiwgIithKyIpIiksci5fY2FudmFzIT1udWxsJiZyLl9jYW52YXMuc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24rInB4LCAiK2krInB4KSBzY2FsZSgiK28rIiwgIithKyIpIikpfSxyLmFkZENsYXNzKCJ4eS1wbG90Iiksci5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gci5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVgoKX0sci5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gci5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKX0sci5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtpZihyLmRlZmVycmVkUmVuZGVyaW5nKCkpe3ZhciBuPXIueCgpJiZyLngoKS5zY2FsZSxpPXIueSgpJiZyLnkoKS5zY2FsZTtyLl9kZWZlcnJlZFJlbmRlcmVyLnVwZGF0ZURvbWFpbnMobixpKX1lbHNlIHIucmVuZGVyKCl9LHIuX2RlZmVycmVkUmVuZGVyZXI9bmV3IEVWZS5EZWZlcnJlZFJlbmRlcmVyKGZ1bmN0aW9uKCl7cmV0dXJuIHIucmVuZGVyKCl9LHIuX2FwcGx5RGVmZXJyZWRSZW5kZXJpbmdUcmFuc2Zvcm0pLHJ9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmVycmVkUmVuZGVyaW5nKCkmJnRoaXMuX2RlZmVycmVkUmVuZGVyZXIucmVzZXRUcmFuc2Zvcm1zKCksZS5wcm90b3R5cGUucmVuZGVyLmNhbGwodGhpcyl9LHQucHJvdG90eXBlLmRlZmVycmVkUmVuZGVyaW5nPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX2RlZmVycmVkUmVuZGVyaW5nO2lmKHIpe3ZhciBuPXRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSxpPXRoaXMueSgpJiZ0aGlzLnkoKS5zY2FsZTt0aGlzLl9kZWZlcnJlZFJlbmRlcmVyLnNldERvbWFpbnMobixpKX1yZXR1cm4gdGhpcy5fZGVmZXJyZWRSZW5kZXJpbmc9cix0aGlzfSx0LnByb3RvdHlwZS54PWZ1bmN0aW9uKHIsbixpKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0Ll9YX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KHQuX1hfS0VZLHIsbixpKTt2YXIgbz10aGlzLndpZHRoKCk7cmV0dXJuIG4hPW51bGwmJm8hPW51bGwmJm4ucmFuZ2UoWzAsb10pLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW4mJnRoaXMuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbigpLHRoaXMucmVuZGVyKCksdGhpc30sdC5wcm90b3R5cGUueT1mdW5jdGlvbihyLG4saSl7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQodC5fWV9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9ZX0tFWSxyLG4saSk7dmFyIG89dGhpcy5oZWlnaHQoKTtyZXR1cm4gbiE9bnVsbCYmbyE9bnVsbCYmKG4gaW5zdGFuY2VvZiBvS3QuQ2F0ZWdvcnk/bi5yYW5nZShbMCxvXSk6bi5yYW5nZShbbywwXSkpLHRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW4mJnRoaXMuX3VwZGF0ZVhFeHRlbnRzQW5kQXV0b2RvbWFpbigpLHRoaXMucmVuZGVyKCksdGhpc30sdC5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKHIpe3JldHVybiByPT09IngiJiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluP3RoaXMuX21ha2VGaWx0ZXJCeVByb3BlcnR5KCJ5Iik6KHI9PT0ieSJ8fHI9PT0ieTAiKSYmdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj90aGlzLl9tYWtlRmlsdGVyQnlQcm9wZXJ0eSgieCIpOm51bGx9LHQucHJvdG90eXBlLl9tYWtlRmlsdGVyQnlQcm9wZXJ0eT1mdW5jdGlvbihyKXt2YXIgbj10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChyKTtpZihuIT1udWxsKXt2YXIgaT1uLmFjY2Vzc29yLG89bi5zY2FsZTtpZihvIT1udWxsKXJldHVybiBmdW5jdGlvbihhLHMsbCl7dmFyIGM9by5yYW5nZSgpO3JldHVybiB2YXQuTWF0aC5pblJhbmdlKG8uc2NhbGUoaShhLHMsbCkpLGNbMF0sY1sxXSl9fXJldHVybiBudWxsfSx0LnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24ocixuKXtlLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLHIsbik7dmFyIGk9bj09PXQuX1hfS0VZP3RoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YQ2FsbGJhY2s6dGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjaztyLm9mZlVwZGF0ZShpKX0sdC5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihyLG4pe2UucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLHIsbik7dmFyIGk9bj09PXQuX1hfS0VZP3RoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YQ2FsbGJhY2s6dGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjaztyLm9uVXBkYXRlKGkpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIGUucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLngoKS5zY2FsZSYmdGhpcy54KCkuc2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YQ2FsbGJhY2spLHRoaXMueSgpLnNjYWxlJiZ0aGlzLnkoKS5zY2FsZS5vZmZVcGRhdGUodGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjayksdGhpc30sdC5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZT1mdW5jdGlvbihyKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPyJ4Ijp0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPyJ5Ijoibm9uZSI7c3dpdGNoKHIpe2Nhc2UieCI6dGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMCx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSExLHRoaXMuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZKCk7YnJlYWs7Y2FzZSJ5Ijp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITAsdGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVgoKTticmVhaztjYXNlIm5vbmUiOnRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITEsdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj0hMTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzY2FsZSBuYW1lICciK3IrIicsIG11c3QgYmUgJ3gnLCAneScgb3IgJ25vbmUnIil9cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24ocixuLGkpe2UucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLHIsbixpKTt2YXIgbz10aGlzLngoKSxhPW8mJm8uc2NhbGU7YSE9bnVsbCYmYS5yYW5nZShbMCx0aGlzLndpZHRoKCldKTt2YXIgcz10aGlzLnkoKSxsPXMmJnMuc2NhbGU7cmV0dXJuIGwhPW51bGwmJihsIGluc3RhbmNlb2Ygb0t0LkNhdGVnb3J5P2wucmFuZ2UoWzAsdGhpcy5oZWlnaHQoKV0pOmwucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pKSx0aGlzfSx0LnByb3RvdHlwZS5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy54KCkuc2NhbGU7ciE9bnVsbCYmci5hdXRvRG9tYWluKCl9LHQucHJvdG90eXBlLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW49ZnVuY3Rpb24oKXt2YXIgcj10aGlzLnkoKS5zY2FsZTtyIT1udWxsJiZyLmF1dG9Eb21haW4oKX0sdC5wcm90b3R5cGUuc2hvd0FsbERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluKCksdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCksdGhpc30sdC5wcm90b3R5cGUuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YPWZ1bmN0aW9uKCl7IXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpfHx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW4oKX0sdC5wcm90b3R5cGUuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZPWZ1bmN0aW9uKCl7IXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpfHx0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKX0sdC5wcm90b3R5cGUuX3Byb2plY3RvcnNSZWFkeT1mdW5jdGlvbigpe3ZhciByPXRoaXMueCgpLG49dGhpcy55KCk7cmV0dXJuIHIhPW51bGwmJnIuYWNjZXNzb3IhPW51bGwmJm4hPW51bGwmJm4uYWNjZXNzb3IhPW51bGx9LHQucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHIsbixpKXt2YXIgbz1wNC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksYT1wNC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJue3g6byhyLG4saSkseTphKHIsbixpKX19LHQucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPWUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3LmNhbGwodGhpcyksaT10aGlzLmF0dHIoImRlZmluZWQiKSxvPWZ1bmN0aW9uKGEscyxsKXt2YXIgYz1wNC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihyLngoKSkoYSxzLGwpLHU9cDQuUGxvdC5fc2NhbGVkQWNjZXNzb3Ioci55KCkpKGEscyxsKTtyZXR1cm4gaSYmaS5hY2Nlc3NvcihhLHMsbCk9PT0hMT8hMTp2YXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpJiZ2YXQuTWF0aC5pc1ZhbGlkTnVtYmVyKHUpfTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24oYSl7bi5zZXQoYSxuLmdldChhKS5maWx0ZXIoZnVuY3Rpb24ocyxsKXtyZXR1cm4gbyhzLGwsYSl9KSl9KSxufSx0Ll9YX0tFWT0ieCIsdC5fWV9LRVk9InkiLHR9KHA0LlBsb3QpO3hhdC5YWVBsb3Q9VFZlfSk7dmFyIHdhdD1IKG9CPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvQiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIENWZT0oZGUoKSxVdChwZSkpLF9hPShFcigpLFV0KE1yKSksQVZlPUlmKCksUFZlPUJ2KCksSVZlPVZ1KCksYUt0PXRCKCksTFZlPUxzKCksaUI9dmQoKSxRZz1GZSgpLGtWZT1QZigpLGJhdD1QUygpLHlsPWVzKCksUlZlPUh2KCksc0t0PXtsaW5lYXI6X2EuY3VydmVMaW5lYXIsbGluZWFyQ2xvc2VkOl9hLmN1cnZlTGluZWFyQ2xvc2VkLHN0ZXA6X2EuY3VydmVTdGVwLHN0ZXBCZWZvcmU6X2EuY3VydmVTdGVwQmVmb3JlLHN0ZXBBZnRlcjpfYS5jdXJ2ZVN0ZXBBZnRlcixiYXNpczpfYS5jdXJ2ZUJhc2lzLGJhc2lzT3BlbjpfYS5jdXJ2ZUJhc2lzT3BlbixiYXNpc0Nsb3NlZDpfYS5jdXJ2ZUJhc2lzQ2xvc2VkLGJ1bmRsZTpfYS5jdXJ2ZUJ1bmRsZSxjYXJkaW5hbDpfYS5jdXJ2ZUNhcmRpbmFsLGNhcmRpbmFsT3BlbjpfYS5jdXJ2ZUNhcmRpbmFsT3BlbixjYXJkaW5hbENsb3NlZDpfYS5jdXJ2ZUNhcmRpbmFsQ2xvc2VkLG1vbm90b25lOl9hLmN1cnZlTW9ub3RvbmVYfTtvQi5DdXJ2ZU5hbWU9a1ZlLm1ha2VFbnVtKFsibGluZWFyIiwibGluZWFyQ2xvc2VkIiwic3RlcCIsInN0ZXBCZWZvcmUiLCJzdGVwQWZ0ZXIiLCJiYXNpcyIsImJhc2lzT3BlbiIsImJhc2lzQ2xvc2VkIiwiYnVuZGxlIiwiY2FyZGluYWwiLCJjYXJkaW5hbE9wZW4iLCJjYXJkaW5hbENsb3NlZCIsIm1vbm90b25lIl0pO3ZhciBOVmU9ZnVuY3Rpb24oZSl7Q1ZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7ci5fY3VydmU9ImxpbmVhciIsci5fYXV0b3JhbmdlU21vb3RoPSExLHIuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkPSEwLHIuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZD0hMSxyLl9kb3duc2FtcGxpbmdFbmFibGVkPSExLHIuYWRkQ2xhc3MoImxpbmUtcGxvdCIpO3ZhciBuPW5ldyBBVmUuRWFzaW5nO3JldHVybiBuLnN0ZXBEdXJhdGlvbih5bC5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKSxuLmVhc2luZ01vZGUoImV4cEluT3V0Iiksbi5tYXhUb3RhbER1cmF0aW9uKHlsLlBsb3QuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pLHIuYW5pbWF0b3IoYmF0LkFuaW1hdG9yLk1BSU4sbiksci5hdHRyKCJzdHJva2UiLG5ldyBMVmUuQ29sb3IoKS5yYW5nZSgpWzBdKSxyLmF0dHIoInN0cm9rZS13aWR0aCIsIjJweCIpLHJ9cmV0dXJuIHQucHJvdG90eXBlLng9ZnVuY3Rpb24ocixuLGkpe3JldHVybiByPT1udWxsP2UucHJvdG90eXBlLnguY2FsbCh0aGlzKTooZS5wcm90b3R5cGUueC5jYWxsKHRoaXMscixuLGkpLHRoaXMuX3NldFNjYWxlU25hcHBpbmcoKSx0aGlzKX0sdC5wcm90b3R5cGUueT1mdW5jdGlvbihyLG4saSl7cmV0dXJuIHI9PW51bGw/ZS5wcm90b3R5cGUueS5jYWxsKHRoaXMpOihlLnByb3RvdHlwZS55LmNhbGwodGhpcyxyLG4saSksdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSx0LnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP2UucHJvdG90eXBlLmF1dG9yYW5nZU1vZGUuY2FsbCh0aGlzKTooZS5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZS5jYWxsKHRoaXMsciksdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSx0LnByb3RvdHlwZS5hdXRvcmFuZ2VTbW9vdGg9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fYXV0b3JhbmdlU21vb3RoOih0aGlzLl9hdXRvcmFuZ2VTbW9vdGg9cix0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LHQucHJvdG90eXBlLl9zZXRTY2FsZVNuYXBwaW5nPWZ1bmN0aW9uKCl7dGhpcy5hdXRvcmFuZ2VNb2RlKCk9PT0ieCImJnRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSYmdGhpcy54KCkuc2NhbGUgaW5zdGFuY2VvZiBpQi5RdWFudGl0YXRpdmVTY2FsZSYmdGhpcy54KCkuc2NhbGUuc25hcHBpbmdEb21haW5FbmFibGVkKCF0aGlzLmF1dG9yYW5nZVNtb290aCgpKSx0aGlzLmF1dG9yYW5nZU1vZGUoKT09PSJ5IiYmdGhpcy55KCkmJnRoaXMueSgpLnNjYWxlJiZ0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIGlCLlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLnkoKS5zY2FsZS5zbmFwcGluZ0RvbWFpbkVuYWJsZWQoIXRoaXMuYXV0b3JhbmdlU21vb3RoKCkpfSx0LnByb3RvdHlwZS5jdXJ2ZT1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9jdXJ2ZToodGhpcy5fY3VydmU9cix0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2Rvd25zYW1wbGluZ0VuYWJsZWQ6KHRoaXMuX2Rvd25zYW1wbGluZ0VuYWJsZWQ9cix0aGlzKX0sdC5wcm90b3R5cGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ6KHRoaXMuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkPXIsdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUuY29sbGFwc2VEZW5zZUxpbmVzRW5hYmxlZD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQ6KHRoaXMuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZD1yLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24ocil7dmFyIG49dGhpcztyZXR1cm4gbmV3IElWZS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgYUt0LkxpbmVTVkdEcmF3ZXJ9LGZ1bmN0aW9uKGkpe3JldHVybiBuZXcgUFZlLkNhbnZhc0RyYXdlcihpLGFLdC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2QzTGluZUZhY3Rvcnkocil9KSl9KX0sdC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKHIpe3ZhciBuPWUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMscik7aWYoIXRoaXMuX2F1dG9yYW5nZVNtb290aHx8dGhpcy5hdXRvcmFuZ2VNb2RlKCkhPT1yfHx0aGlzLmF1dG9yYW5nZU1vZGUoKSE9PSJ4IiYmdGhpcy5hdXRvcmFuZ2VNb2RlKCkhPT0ieSIpcmV0dXJuIG47dmFyIGk9dGhpcy5fZ2V0RWRnZUludGVyc2VjdGlvblBvaW50cygpLG87cmV0dXJuIHRoaXMuYXV0b3JhbmdlTW9kZSgpPT09InkiP289aS5sZWZ0LmNvbmNhdChpLnJpZ2h0KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEueX0pOm89aS50b3AuY29uY2F0KGkuYm90dG9tKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEueH0pLG4ubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBfYS5leHRlbnQoX2EubWVyZ2UoW2Esb10pKX0pfSx0LnByb3RvdHlwZS5fZ2V0RWRnZUludGVyc2VjdGlvblBvaW50cz1mdW5jdGlvbigpe3ZhciByPXRoaXM7aWYoISh0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIGlCLlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLngoKS5zY2FsZSBpbnN0YW5jZW9mIGlCLlF1YW50aXRhdGl2ZVNjYWxlKSlyZXR1cm57bGVmdDpbXSxyaWdodDpbXSx0b3A6W10sYm90dG9tOltdfTt2YXIgbj10aGlzLnkoKS5zY2FsZSxpPXRoaXMueCgpLnNjYWxlLG89e2xlZnQ6W10scmlnaHQ6W10sdG9wOltdLGJvdHRvbTpbXX0sYT1pLnNjYWxlKGkuZG9tYWluKClbMF0pLHM9aS5zY2FsZShpLmRvbWFpbigpWzFdKSxsPW4uc2NhbGUobi5kb21haW4oKVswXSksYz1uLnNjYWxlKG4uZG9tYWluKClbMV0pO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbih1KXtmb3IodmFyIGg9dS5kYXRhKCksZixwLGQsZyxfLHkseCxiLFM9MTtTPGgubGVuZ3RoO1MrKylfPXh8fGkuc2NhbGUoci54KCkuYWNjZXNzb3IoaFtTLTFdLFMtMSx1KSkseT1ifHxuLnNjYWxlKHIueSgpLmFjY2Vzc29yKGhbUy0xXSxTLTEsdSkpLHg9aS5zY2FsZShyLngoKS5hY2Nlc3NvcihoW1NdLFMsdSkpLGI9bi5zY2FsZShyLnkoKS5hY2Nlc3NvcihoW1NdLFMsdSkpLF88YT09YTw9eCYmKGY9YS1fLHA9eC1fLGc9Yi15LGQ9ZipnL3Asby5sZWZ0LnB1c2goe3g6YSx5Om4uaW52ZXJ0KHkrZCl9KSksXzxzPT1zPD14JiYoZj1zLV8scD14LV8sZz1iLXksZD1mKmcvcCxvLnJpZ2h0LnB1c2goe3g6cyx5Om4uaW52ZXJ0KHkrZCl9KSkseTxjPT1jPD1iJiYocD14LV8sZD1jLXksZz1iLXksZj1kKnAvZyxvLnRvcC5wdXNoKHt4OmkuaW52ZXJ0KF8rZikseTpjfSkpLHk8bD09bDw9YiYmKHA9eC1fLGQ9bC15LGc9Yi15LGY9ZCpwL2csby5ib3R0b20ucHVzaCh7eDppLmludmVydChfK2YpLHk6bH0pKX0pLG99LHQucHJvdG90eXBlLl9nZXRSZXNldFlGdW5jdGlvbj1mdW5jdGlvbigpe3ZhciByPXRoaXMueSgpLnNjYWxlLmRvbWFpbigpLG49TWF0aC5tYXgoclswXSxyWzFdKSxpPU1hdGgubWluKHJbMF0sclsxXSksbz1uPDAmJm58fGk+MCYmaXx8MCxhPXRoaXMueSgpLnNjYWxlLnNjYWxlKG8pO3JldHVybiBmdW5jdGlvbihzLGwsYyl7cmV0dXJuIGF9fSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgcj1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO24uZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKHlsLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx0aGlzLl9nZXRSZXNldFlGdW5jdGlvbigpKSxyLnB1c2goe2F0dHJUb1Byb2plY3RvcjpuLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKGJhdC5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gci5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoYmF0LkFuaW1hdG9yLk1BSU4pfSkscn0sdC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHI9ZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyk7cmV0dXJuIE9iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24obil7aWYobiE9PSJkIil7dmFyIGk9cltuXTtyW25dPWZ1bmN0aW9uKG8sYSxzKXtyZXR1cm4gby5sZW5ndGg+MD9pKG9bMF0sYSxzKTpudWxsfX19KSxyfSx0LnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuZW50aXR5TmVhcmVzdEJ5WFRoZW5ZKHIpO3JldHVybiBuIT1udWxsP1tuXTpbXX0sdC5wcm90b3R5cGUuZW50aXR5TmVhcmVzdEJ5WFRoZW5ZPWZ1bmN0aW9uKHIpe2Zvcih2YXIgbj0xLzAsaT0xLzAsbyxhPXRoaXMuYm91bmRzKCkscz10aGlzLmVudGl0aWVzKCksbD1zLmxlbmd0aCxjPTA7YzxsO2MrKyl7dmFyIHU9c1tjXTtpZighIVFnLk1hdGgud2l0aGluKHUucG9zaXRpb24sYSkpe3ZhciBoPU1hdGguYWJzKHIueC11LnBvc2l0aW9uLngpLGY9TWF0aC5hYnMoci55LXUucG9zaXRpb24ueSk7KGg8bnx8aD09PW4mJmY8aSkmJihvPXUsbj1oLGk9Zil9fXJldHVybiBvfSx0LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIHI9ZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiByLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3Rvcih5bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkseWwuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKSxyfSx0LnByb3RvdHlwZS5fY29uc3RydWN0TGluZVByb2plY3Rvcj1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKG8sYSxzKXtyZXR1cm4gaS5fZDNMaW5lRmFjdG9yeShzLHIsbikobyl9fSx0LnByb3RvdHlwZS5fZDNMaW5lRmFjdG9yeT1mdW5jdGlvbihyLG4saSl7bj09PXZvaWQgMCYmKG49eWwuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpKSxpPT09dm9pZCAwJiYoaT15bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpO3ZhciBvPWZ1bmN0aW9uKGEscyxsKXt2YXIgYz1uKGEscyxsKSx1PWkoYSxzLGwpO3JldHVybiBRZy5NYXRoLmlzVmFsaWROdW1iZXIoYykmJlFnLk1hdGguaXNWYWxpZE51bWJlcih1KX07cmV0dXJuIF9hLmxpbmUoKS54KGZ1bmN0aW9uKGEscyl7cmV0dXJuIG4oYSxzLHIpfSkueShmdW5jdGlvbihhLHMpe3JldHVybiBpKGEscyxyKX0pLmN1cnZlKHRoaXMuX2dldEN1cnZlRmFjdG9yeSgpKS5kZWZpbmVkKGZ1bmN0aW9uKGEscyl7cmV0dXJuIG8oYSxzLHIpfSl9LHQucHJvdG90eXBlLl9nZXRDdXJ2ZUZhY3Rvcnk9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLmN1cnZlKCk7aWYodHlwZW9mIHI9PSJzdHJpbmciKXt2YXIgbj1zS3Rbcl07cmV0dXJuIG49PW51bGw/c0t0LmxpbmVhcjpufWVsc2UgcmV0dXJuIHJ9LHQucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPW5ldyBRZy5NYXA7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBvPWkuZGF0YSgpO2lmKCFyLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZCYmIXIuX2Rvd25zYW1wbGluZ0VuYWJsZWQpe24uc2V0KGksW29dKTtyZXR1cm59Zm9yKHZhciBhPVtdLHM9by5sZW5ndGgsbD0wO2w8cztsKyspYVtsXT1sO3IuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkJiYoYT1yLl9maWx0ZXJDcm9wcGVkUmVuZGVyaW5nKGksYSkpLHIuX2Rvd25zYW1wbGluZ0VuYWJsZWQmJihhPXIuX2ZpbHRlckRvd25zYW1wbGluZyhpLGEpKSxyLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQmJihhPXIuX2ZpbHRlckRlbnNlTGluZXMoaSxhKSk7Zm9yKHZhciBjPVtdLHU9YS5sZW5ndGgsbD0wO2w8dTtsKyspe3ZhciBoPWFbbF07Y1tsXT1vW2hdfW4uc2V0KGksW2NdKX0pLG59LHQucHJvdG90eXBlLl9maWx0ZXJDcm9wcGVkUmVuZGVyaW5nPWZ1bmN0aW9uKHIsbil7Zm9yKHZhciBpPXRoaXMsbz15bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksYT15bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkscz1yLmRhdGEoKSxsPVtdLGM9ZnVuY3Rpb24oeCxiKXtyZXR1cm4gUWcuTWF0aC5pblJhbmdlKHgsMCxpLndpZHRoKCkpJiZRZy5NYXRoLmluUmFuZ2UoYiwwLGkuaGVpZ2h0KCkpfSx1PTA7dTxuLmxlbmd0aDt1Kyspe3ZhciBoPW8oc1tuW3VdXSxuW3VdLHIpLGY9YShzW25bdV1dLG5bdV0scikscD1jKGgsZik7aWYoIXAmJm5bdS0xXSE9bnVsbCYmc1tuW3UtMV1dIT1udWxsKXt2YXIgZD1vKHNbblt1LTFdXSxuW3UtMV0sciksZz1hKHNbblt1LTFdXSxuW3UtMV0scik7cD1wfHxjKGQsZyl9aWYoIXAmJm5bdSsxXSE9bnVsbCYmc1tuW3UrMV1dIT1udWxsKXt2YXIgXz1vKHNbblt1KzFdXSxuW3UrMV0scikseT1hKHNbblt1KzFdXSxuW3UrMV0scik7cD1wfHxjKF8seSl9cCYmbC5wdXNoKG5bdV0pfXJldHVybiBsfSx0LnByb3RvdHlwZS5fZmlsdGVyRG93bnNhbXBsaW5nPWZ1bmN0aW9uKHIsbil7aWYobi5sZW5ndGg9PT0wKXJldHVybltdO2Zvcih2YXIgaT1yLmRhdGEoKSxvPXlsLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxhPXlsLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxzPVtuWzBdXSxsPWZ1bmN0aW9uKGssTyl7dmFyIEQ9byhpW25ba11dLG5ba10sciksQj1hKGlbbltrXV0sbltrXSxyKSxJPW8oaVtuW2srMV1dLG5baysxXSxyKSxMPWEoaVtuW2srMV1dLG5baysxXSxyKTtpZihPPT09MS8wKXJldHVybiBNYXRoLmZsb29yKEQpPT09TWF0aC5mbG9vcihJKTt2YXIgUj1CKyhJLUQpKk87cmV0dXJuIE1hdGguZmxvb3IoTCk9PT1NYXRoLmZsb29yKFIpfSxjPTA7YzxuLmxlbmd0aC0xOyl7Zm9yKHZhciB1PW5bY10saD1vKGlbbltjXV0sbltjXSxyKSxmPWEoaVtuW2NdXSxuW2NdLHIpLHA9byhpW25bYysxXV0sbltjKzFdLHIpLGQ9YShpW25bYysxXV0sbltjKzFdLHIpLGc9TWF0aC5mbG9vcihoKT09PU1hdGguZmxvb3IocCk/MS8wOihkLWYpLyhwLWgpLF89bltjXSx5PWc9PT0xLzA/ZjpoLHg9XyxiPXksUz0hMDtjPG4ubGVuZ3RoLTEmJihTfHxsKGMsZykpOyl7YysrLFM9ITE7dmFyIEM9Zz09PTEvMD9hKGlbbltjXV0sbltjXSxyKTpvKGlbbltjXV0sbltjXSxyKTtDPmImJihiPUMseD1uW2NdKSxDPHkmJih5PUMsXz1uW2NdKX12YXIgUD1uW2NdO18hPT11JiZzLnB1c2goXykseCE9PV8mJnghPT11JiZzLnB1c2goeCksUCE9PXUmJlAhPT1fJiZQIT09eCYmcy5wdXNoKFApfXJldHVybiBzfSx0LnByb3RvdHlwZS5fZmlsdGVyRGVuc2VMaW5lcz1mdW5jdGlvbihyLG4pe2lmKG4ubGVuZ3RoPT09MClyZXR1cm5bXTt2YXIgaT1yLmRhdGEoKSxvPXlsLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxhPXlsLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxzPWZ1bmN0aW9uKGMpe3JldHVybiBvKGlbY10sYyxyKX0sbD1mdW5jdGlvbihjKXtyZXR1cm4gYShpW2NdLGMscil9O3JldHVybiB0aGlzLl9idWNrZXRCeVgocixuLHMsbCl9LHQucHJvdG90eXBlLl9idWNrZXRCeVg9ZnVuY3Rpb24ocixuLGksbyl7Zm9yKHZhciBhPVtdLHM9ci5kYXRhKCksbD1udWxsLGM9bi5sZW5ndGgsdT0wO3U8PWM7Kyt1KXt2YXIgaD1uW3VdO2lmKHNbaF0hPW51bGwpe3ZhciBmPU1hdGguZmxvb3IoaShoKSkscD1vKGgpO2w9PW51bGw/bD1uZXcgUWcuQnVja2V0KGgsZixwKTpsLmlzSW5CdWNrZXQoZik/bC5hZGRUb0J1Y2tldChwLGgpOihhLnB1c2guYXBwbHkoYSxsLmdldFVuaXF1ZUluZGljZXMoKSksbD1uZXcgUWcuQnVja2V0KGgsZixwKSl9fXJldHVybiBsIT1udWxsJiZhLnB1c2guYXBwbHkoYSxsLmdldFVuaXF1ZUluZGljZXMoKSksYX0sdH0oUlZlLlhZUGxvdCk7b0IuTGluZT1OVmV9KTt2YXIgRWF0PUgoTWF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShNYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBEVmU9KGRlKCksVXQocGUpKSxhQj0oRXIoKSxVdChNcikpLE9WZT1McygpLGQ0PUZlKCksU2F0PUJ2KCksbEt0PWRhdCgpLHpWZT1WdSgpLGNLdD10QigpLHNCPVBTKCksRlZlPXdhdCgpLE5zPWVzKCksQlZlPWZ1bmN0aW9uKGUpe0RWZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKCJhcmVhLXBsb3QiKSxyLnkwKDApLHIuYXR0cigiZmlsbC1vcGFjaXR5IiwuMjUpLHIuYXR0cigiZmlsbCIsbmV3IE9WZS5Db2xvcigpLnJhbmdlKClbMF0pLHIuX2xpbmVEcmF3ZXJzPW5ldyBkNC5NYXAscn1yZXR1cm4gdC5wcm90b3R5cGUueT1mdW5jdGlvbihyLG4pe2lmKHI9PW51bGwpcmV0dXJuIGUucHJvdG90eXBlLnkuY2FsbCh0aGlzKTtpZihuPT1udWxsP2UucHJvdG90eXBlLnkuY2FsbCh0aGlzLHIpOmUucHJvdG90eXBlLnkuY2FsbCh0aGlzLHIsbiksbiE9bnVsbCl7dmFyIGk9dGhpcy55MCgpLmFjY2Vzc29yO2khPW51bGwmJnRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9ZMF9LRVksaSxuKSx0aGlzLl91cGRhdGVZU2NhbGUoKX1yZXR1cm4gdGhpc30sdC5wcm90b3R5cGUueTA9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQodC5fWTBfS0VZKTt2YXIgbj10aGlzLnkoKSxpPW4mJm4uc2NhbGU7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9ZMF9LRVkscixpKSx0aGlzLl91cGRhdGVZU2NhbGUoKSx0aGlzLnJlbmRlcigpLHRoaXN9LHQucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlLmNhbGwodGhpcyksdGhpcy5fdXBkYXRlWVNjYWxlKCl9LHQucHJvdG90eXBlLl9hZGREYXRhc2V0PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7cmV0dXJuIHRoaXMuX2xpbmVEcmF3ZXJzLnNldChyLG5ldyBTYXQuUHJveHlEcmF3ZXIoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGNLdC5MaW5lU1ZHRHJhd2VyfSxmdW5jdGlvbihpKXtyZXR1cm4gbmV3IFNhdC5DYW52YXNEcmF3ZXIoaSxjS3QubWFrZUxpbmVDYW52YXNEcmF3U3RlcChmdW5jdGlvbigpe3ZhciBvPU5zLlBsb3QuX3NjYWxlZEFjY2Vzc29yKG4ueCgpKSxhPU5zLlBsb3QuX3NjYWxlZEFjY2Vzc29yKG4ueSgpKTtyZXR1cm4gbi5fZDNMaW5lRmFjdG9yeShyLG8sYSl9KSl9KSksZS5wcm90b3R5cGUuX2FkZERhdGFzZXQuY2FsbCh0aGlzLHIpLHRoaXN9LHQucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24ocil7ZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMscik7dmFyIG49dGhpcy5fbGluZURyYXdlcnMuZ2V0KHIpO3JldHVybiB0aGlzLnJlbmRlcmVyKCk9PT0ic3ZnIj9uLnVzZVNWRyh0aGlzLl9yZW5kZXJBcmVhKTpuLnVzZUNhbnZhcyh0aGlzLl9jYW52YXMpLG59LHQucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24ocil7ZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsciksdGhpcy5fbGluZURyYXdlcnMuZ2V0KHIpLnJlbW92ZSgpfSx0LnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPXRoaXMuX2dlbmVyYXRlTGluZURyYXdTdGVwcygpLGk9dGhpcy5fZ2V0RGF0YVRvRHJhdygpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe3ZhciBhPU5zLlBsb3QuYXBwbHlEcmF3U3RlcHMobixvKTtyLl9saW5lRHJhd2Vycy5nZXQobykuZHJhdyhpLmdldChvKSxhKX0pfSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7dmFyIHI9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgbj10aGlzLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3IoKTtuLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihOcy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksdGhpcy5fZ2V0UmVzZXRZRnVuY3Rpb24oKSksci5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6bixhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihzQi5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gci5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3Ioc0IuQW5pbWF0b3IuTUFJTil9KSxyfSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7cmV0dXJuIHIuZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKE5zLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxOcy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpLHJ9LHQucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24ocil7dmFyIG49dGhpcztyZXR1cm4gbmV3IHpWZS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgbEt0LkFyZWFTVkdEcmF3ZXJ9LGZ1bmN0aW9uKGkpe3JldHVybiBuZXcgU2F0LkNhbnZhc0RyYXdlcihpLGxLdC5tYWtlQXJlYUNhbnZhc0RyYXdTdGVwKGZ1bmN0aW9uKCl7dmFyIG89bi5fY29vcmRpbmF0ZVByb2plY3RvcnMoKSxhPW9bMF0scz1vWzFdLGw9b1syXSxjPW4uX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoYSxzKTtyZXR1cm4gbi5fY3JlYXRlQXJlYUdlbmVyYXRvcihhLHMsbCxjLHIpfSxmdW5jdGlvbigpe3ZhciBvPW4uX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCksYT1vWzBdLHM9b1sxXSxsPW4uX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoYSxzKTtyZXR1cm4gbi5fY3JlYXRlVG9wTGluZUdlbmVyYXRvcihhLHMsbCxyKX0pKX0pfSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgcj1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO24uZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKE5zLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx0aGlzLl9nZXRSZXNldFlGdW5jdGlvbigpLE5zLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSkpLHIucHVzaCh7YXR0clRvUHJvamVjdG9yOm4sYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3Ioc0IuQW5pbWF0b3IuUkVTRVQpfSl9cmV0dXJuIHIucHVzaCh7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKHNCLkFuaW1hdG9yLk1BSU4pfSkscn0sdC5wcm90b3R5cGUuX3VwZGF0ZVlTY2FsZT1mdW5jdGlvbigpe3ZhciByPXRoaXMuZ2V0RXh0ZW50c0ZvclByb3BlcnR5KCJ5MCIpLG49ZDQuQXJyYXkuZmxhdHRlbihyKSxpPWQ0LkFycmF5LnVuaXEobiksbz1pLmxlbmd0aD09PTE/aVswXTpudWxsLGE9dGhpcy55KCkscz1hJiZhLnNjYWxlO3MhPW51bGwmJih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlciE9bnVsbCYmKHMucmVtb3ZlUGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlciksdGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXI9bnVsbCksbyE9bnVsbCYmKHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuW29dfSxzLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXIpKSl9LHQucHJvdG90eXBlLl9nZXRSZXNldFlGdW5jdGlvbj1mdW5jdGlvbigpe3JldHVybiBOcy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkwKCkpfSx0LnByb3RvdHlwZS5fY29vcmRpbmF0ZVByb2plY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm5bTnMuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLE5zLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxOcy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkwKCkpXX0sdC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciByPWUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKSxuPXRoaXMuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCksaT1uWzBdLG89blsxXSxhPW5bMl07cmV0dXJuIHIuZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKGksbyxhKSxyfSx0LnByb3RvdHlwZS5zZWxlY3Rpb25zPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7aWYocj09PXZvaWQgMCYmKHI9dGhpcy5kYXRhc2V0cygpKSx0aGlzLnJlbmRlcmVyKCk9PT0iY2FudmFzIilyZXR1cm4gYUIuc2VsZWN0QWxsKCk7dmFyIGk9ZS5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMscikubm9kZXMoKSxvPXIubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBuLl9saW5lRHJhd2Vycy5nZXQoYSl9KS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEhPW51bGx9KTtyZXR1cm4gby5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBpLnB1c2guYXBwbHkoaSxhLmdldFZpc3VhbFByaW1pdGl2ZXMoKSl9KSxhQi5zZWxlY3RBbGwoaSl9LHQucHJvdG90eXBlLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yPWZ1bmN0aW9uKHIsbixpKXt2YXIgbz10aGlzLGE9dGhpcy5fY3JlYXRlRGVmaW5lZFByb2plY3RvcihOcy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksTnMuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKTtyZXR1cm4gZnVuY3Rpb24ocyxsLGMpe3ZhciB1PW8uX2NyZWF0ZUFyZWFHZW5lcmF0b3IocixuLGksYSxjKTtyZXR1cm4gdShzKX19LHQucHJvdG90eXBlLl9jcmVhdGVEZWZpbmVkUHJvamVjdG9yPWZ1bmN0aW9uKHIsbil7cmV0dXJuIGZ1bmN0aW9uKGksbyxhKXt2YXIgcz1yKGksbyxhKSxsPW4oaSxvLGEpO3JldHVybiBkNC5NYXRoLmlzVmFsaWROdW1iZXIocykmJmQ0Lk1hdGguaXNWYWxpZE51bWJlcihsKX19LHQucHJvdG90eXBlLl9jcmVhdGVBcmVhR2VuZXJhdG9yPWZ1bmN0aW9uKHIsbixpLG8sYSl7dmFyIHM9dGhpcy5fZ2V0Q3VydmVGYWN0b3J5KCksbD1hQi5hcmVhKCkueChmdW5jdGlvbihjLHUpe3JldHVybiByKGMsdSxhKX0pLnkxKGZ1bmN0aW9uKGMsdSl7cmV0dXJuIG4oYyx1LGEpfSkueTAoZnVuY3Rpb24oYyx1KXtyZXR1cm4gaShjLHUsYSl9KS5jdXJ2ZShzKS5kZWZpbmVkKGZ1bmN0aW9uKGMsdSl7cmV0dXJuIG8oYyx1LGEpfSk7cmV0dXJuIGx9LHQucHJvdG90eXBlLl9jcmVhdGVUb3BMaW5lR2VuZXJhdG9yPWZ1bmN0aW9uKHIsbixpLG8pe3ZhciBhPXRoaXMuX2dldEN1cnZlRmFjdG9yeSgpLHM9YUIubGluZSgpLngoZnVuY3Rpb24obCxjKXtyZXR1cm4gcihsLGMsbyl9KS55KGZ1bmN0aW9uKGwsYyl7cmV0dXJuIG4obCxjLG8pfSkuY3VydmUoYSkuZGVmaW5lZChmdW5jdGlvbihsLGMpe3JldHVybiBpKGwsYyxvKX0pO3JldHVybiBzfSx0Ll9ZMF9LRVk9InkwIix0fShGVmUuTGluZSk7TWF0LkFyZWE9QlZlfSk7dmFyIG00PUgocXU9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHF1LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgSFZlPShkZSgpLFV0KHBlKSksQ2F0PShFcigpLFV0KE1yKSksVGF0PWdsKCksVlZlPUlmKCksVVZlPUZ1KCkscVZlPUJ2KCksR1ZlPVZ1KCksV1ZlPXJCKCksWVZlPVRTKCksQWF0PUxzKCksdUt0PXZkKCksdmw9RmUoKSxJYXQ9UGYoKSxoS3Q9UFMoKSxsQj1lcygpLGpWZT1IdigpO3F1LkJhck9yaWVudGF0aW9uPUlhdC5tYWtlRW51bShbInZlcnRpY2FsIiwiaG9yaXpvbnRhbCJdKTtxdS5MYWJlbHNQb3NpdGlvbj1JYXQubWFrZUVudW0oWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsIm91dHNpZGUiXSk7cXUuQmFyQWxpZ25tZW50PUlhdC5tYWtlRW51bShbInN0YXJ0IiwibWlkZGxlIiwiZW5kIl0pO3ZhciBQYXQ9ZnVuY3Rpb24oZSl7SFZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cj09PXZvaWQgMCYmKHI9InZlcnRpY2FsIik7dmFyIG49ZS5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX2xhYmVsRm9ybWF0dGVyPVVWZS5pZGVudGl0eSgpLG4uX2xhYmVsc0VuYWJsZWQ9ITEsbi5fbGFiZWxzUG9zaXRpb249cXUuTGFiZWxzUG9zaXRpb24uZW5kLG4uX2hpZGVCYXJzSWZBbnlBcmVUb29XaWRlPSEwLG4uX2JhckFsaWdubWVudD0ibWlkZGxlIixuLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3M9WVZlLm1lbW9pemUoWFZlKSxuLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzPSEwLG4uYWRkQ2xhc3MoImJhci1wbG90IiksciE9PSJ2ZXJ0aWNhbCImJnIhPT0iaG9yaXpvbnRhbCIpdGhyb3cgbmV3IEVycm9yKHIrIiBpcyBub3QgYSB2YWxpZCBvcmllbnRhdGlvbiBmb3IgUGxvdHMuQmFyIik7cmV0dXJuIG4uX2lzVmVydGljYWw9cj09PSJ2ZXJ0aWNhbCIsbi5hbmltYXRvcigiYmFzZWxpbmUiLG5ldyBWVmUuTnVsbCksbi5hdHRyKCJmaWxsIixuZXcgQWF0LkNvbG9yKCkucmFuZ2UoKVswXSksbi5hdHRyKHQuX0JBUl9USElDS05FU1NfS0VZLGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2JhclBpeGVsVGhpY2tuZXNzKCl9KSxuLl9sYWJlbENvbmZpZz1uZXcgdmwuTWFwLG4uX2Jhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltuLmJhc2VsaW5lVmFsdWUoKV19LG59cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24ocixuLGkpe3JldHVybiBlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxyLG4saSksdGhpcy5fdXBkYXRlRXh0ZW50cygpLHRoaXN9LHQucHJvdG90eXBlLng9ZnVuY3Rpb24ocixuKXtyZXR1cm4gcj09bnVsbD9lLnByb3RvdHlwZS54LmNhbGwodGhpcyk6KG49PW51bGw/ZS5wcm90b3R5cGUueC5jYWxsKHRoaXMscik6ZS5wcm90b3R5cGUueC5jYWxsKHRoaXMscixuKSx0aGlzLl91cGRhdGVUaGlja25lc3NBdHRyKCksdGhpcy5fdXBkYXRlTGVuZ3RoU2NhbGUoKSx0aGlzKX0sdC5wcm90b3R5cGUueT1mdW5jdGlvbihyLG4pe3JldHVybiByPT1udWxsP2UucHJvdG90eXBlLnkuY2FsbCh0aGlzKToobj09bnVsbD9lLnByb3RvdHlwZS55LmNhbGwodGhpcyxyKTplLnByb3RvdHlwZS55LmNhbGwodGhpcyxyLG4pLHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcyl9LHQucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpOnRoaXMueCgpfSx0LnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueCgpOnRoaXMueSgpfSx0LnByb3RvdHlwZS5iYXJFbmQ9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQodC5fQkFSX0VORF9LRVkpO3ZhciBuPXRoaXMucG9zaXRpb24oKSxpPW4mJm4uc2NhbGU7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9CQVJfRU5EX0tFWSxyLGkpLHRoaXMuX3VwZGF0ZVRoaWNrbmVzc0F0dHIoKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sdC5wcm90b3R5cGUuYmFyQWxpZ25tZW50PWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2JhckFsaWdubWVudDoodGhpcy5fYmFyQWxpZ25tZW50PXIsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LHQucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEdWZS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgV1ZlLlJlY3RhbmdsZVNWR0RyYXdlcih0Ll9CQVJfQVJFQV9DTEFTUyl9LGZ1bmN0aW9uKHIpe3JldHVybiBuZXcgcVZlLlJlY3RhbmdsZUNhbnZhc0RyYXdlcihyKX0pfSx0LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9iYXNlbGluZT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCl9LHQucHJvdG90eXBlLmJhc2VsaW5lVmFsdWU9ZnVuY3Rpb24ocil7aWYocj09bnVsbCl7aWYodGhpcy5fYmFzZWxpbmVWYWx1ZSE9bnVsbClyZXR1cm4gdGhpcy5fYmFzZWxpbmVWYWx1ZTtpZighdGhpcy5fcHJvamVjdG9yc1JlYWR5KCkpcmV0dXJuIDA7dmFyIG49dGhpcy5sZW5ndGgoKS5zY2FsZTtyZXR1cm4gbiYmbiBpbnN0YW5jZW9mIEFhdC5UaW1lP25ldyBEYXRlKDApOjB9cmV0dXJuIHRoaXMuX2Jhc2VsaW5lVmFsdWU9cix0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKSx0aGlzLnJlbmRlcigpLHRoaXN9LHQucHJvdG90eXBlLmFkZERhdGFzZXQ9ZnVuY3Rpb24ocil7cmV0dXJuIGUucHJvdG90eXBlLmFkZERhdGFzZXQuY2FsbCh0aGlzLHIpLHRoaXN9LHQucHJvdG90eXBlLl9hZGREYXRhc2V0PWZ1bmN0aW9uKHIpe3JldHVybiBlLnByb3RvdHlwZS5fYWRkRGF0YXNldC5jYWxsKHRoaXMsciksdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlRGF0YXNldD1mdW5jdGlvbihyKXtyZXR1cm4gZS5wcm90b3R5cGUucmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsciksdGhpc30sdC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQ9ZnVuY3Rpb24ocil7cmV0dXJuIGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyxyKSx0aGlzfSx0LnByb3RvdHlwZS5kYXRhc2V0cz1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD9lLnByb3RvdHlwZS5kYXRhc2V0cy5jYWxsKHRoaXMpOihlLnByb3RvdHlwZS5kYXRhc2V0cy5jYWxsKHRoaXMsciksdGhpcyl9LHQucHJvdG90eXBlLmxhYmVsc0VuYWJsZWQ9ZnVuY3Rpb24ocixuKXtyZXR1cm4gcj09bnVsbD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXIsbiE9bnVsbCYmKHRoaXMuX2xhYmVsc1Bvc2l0aW9uPW4pLHRoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5sYWJlbEZvcm1hdHRlcj1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9sYWJlbEZvcm1hdHRlcjoodGhpcy5fbGFiZWxGb3JtYXR0ZXI9cix0aGlzLl9jbGVhckF0dHJUb1Byb2plY3RvckNhY2hlKCksdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihyKXt2YXIgbj1lLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxyKSxpPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCh0Ll9MQUJFTF9BUkVBX0NMQVNTLCEwKSxvPW5ldyBUYXQuU3ZnQ29udGV4dChpLm5vZGUoKSksYT1uZXcgVGF0LkNhY2hlTWVhc3VyZXIobykscz1uZXcgVGF0LldyaXRlcihhLG8pO3JldHVybiB0aGlzLl9sYWJlbENvbmZpZy5zZXQocix7bGFiZWxBcmVhOmksbWVhc3VyZXI6YSx3cml0ZXI6c30pLG59LHQucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24ocil7ZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMscik7dmFyIG49dGhpcy5fbGFiZWxDb25maWcuZ2V0KHIpO24hPW51bGwmJihuLmxhYmVsQXJlYS5yZW1vdmUoKSx0aGlzLl9sYWJlbENvbmZpZy5kZWxldGUocikpfSx0LnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMsaT1mdW5jdGlvbigpe3ZhciBvPW4uX2lzVmVydGljYWw/bi5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdHlOZWFyZXN0WChyKTpuLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3RZKHIpO3JldHVybiBvPT09dm9pZCAwP3ZvaWQgMDpuLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkobyl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChpKTppKCl9LHQucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPWZ1bmN0aW9uKCl7cmV0dXJuIG4uX2VudGl0aWVzSW50ZXJzZWN0aW5nKHIueCxyLnkpfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQoaSk6aSgpfSx0LnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMsaT1mdW5jdGlvbigpe3JldHVybiBlLnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzLmNhbGwobixyKX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKGkpOmkoKX0sdC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPWZ1bmN0aW9uKCl7cmV0dXJuIGUucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzLmNhbGwobixyKX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKGkpOmkoKX0sdC5wcm90b3R5cGUuZW50aXRpZXNJbllCb3VuZHM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPWZ1bmN0aW9uKCl7cmV0dXJuIGUucHJvdG90eXBlLmVudGl0aWVzSW5ZQm91bmRzLmNhbGwobixyKX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKGkpOmkoKX0sdC5wcm90b3R5cGUuX2VudGl0aWVzSW50ZXJzZWN0aW5nPWZ1bmN0aW9uKHIsbil7Zm9yKHZhciBpPVtdLG89dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllcygpLGE9by5sZW5ndGgscz0wO3M8YTtzKyspe3ZhciBsPW9bc107dmwuRE9NLmludGVyc2VjdHNCQm94KHIsbix0aGlzLl9lbnRpdHlCb3VuZHMobCkpJiZpLnB1c2godGhpcy5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KGwpKX1yZXR1cm4gaX0sdC5wcm90b3R5cGUuX3VwZGF0ZUxlbmd0aFNjYWxlPWZ1bmN0aW9uKCl7aWYoISF0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIHI9dGhpcy5sZW5ndGgoKS5zY2FsZTtyIGluc3RhbmNlb2YgdUt0LlF1YW50aXRhdGl2ZVNjYWxlJiYoci5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlciksci5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlcikpfX0sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgcj10aGlzO3JldHVybiB0aGlzLl9iYXJQaXhlbFRoaWNrbmVzcygpLHRoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChmdW5jdGlvbigpe3JldHVybiBlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHIpfSl9LHQucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPXRoaXMubGVuZ3RoKCkuc2NhbGUsbz1pLnNjYWxlKHRoaXMuYmFzZWxpbmVWYWx1ZSgpKSxhPXt4MTp0aGlzLl9pc1ZlcnRpY2FsPzA6byx5MTp0aGlzLl9pc1ZlcnRpY2FsP286MCx4Mjp0aGlzLl9pc1ZlcnRpY2FsP3RoaXMud2lkdGgoKTpvLHkyOnRoaXMuX2lzVmVydGljYWw/bzp0aGlzLmhlaWdodCgpfTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLGEpLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKHMpe3JldHVybiBuLl9sYWJlbENvbmZpZy5nZXQocykubGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmdmwuV2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gbi5fZHJhd0xhYmVscygpfSxyKX0sdC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMsaT1lLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLHIpLG87aWYocj09PSJ4IiYmdGhpcy5faXNWZXJ0aWNhbClvPXRoaXMueCgpO2Vsc2UgaWYocj09PSJ5IiYmIXRoaXMuX2lzVmVydGljYWwpbz10aGlzLnkoKTtlbHNlIHJldHVybiBpO2lmKCEobyYmby5zY2FsZSYmby5zY2FsZSBpbnN0YW5jZW9mIHVLdC5RdWFudGl0YXRpdmVTY2FsZSkpcmV0dXJuIGk7dmFyIGE9by5zY2FsZSxzPXRoaXMuX2JhclBpeGVsVGhpY2tuZXNzKCk7cmV0dXJuIGk9aS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIENhdC5leHRlbnQoW2EuaW52ZXJ0KG4uX2dldFBvc2l0aW9uQXR0cihhLnNjYWxlKGxbMF0pLHMpKSxhLmludmVydChuLl9nZXRQb3NpdGlvbkF0dHIoYS5zY2FsZShsWzBdKSxzKStzKSxhLmludmVydChuLl9nZXRQb3NpdGlvbkF0dHIoYS5zY2FsZShsWzFdKSxzKSksYS5pbnZlcnQobi5fZ2V0UG9zaXRpb25BdHRyKGEuc2NhbGUobFsxXSkscykrcyldKX0pLGl9LHQucHJvdG90eXBlLl9nZXRQb3NpdGlvbkF0dHI9ZnVuY3Rpb24ocixuKXtzd2l0Y2godGhpcy5faXNWZXJ0aWNhbHx8KHItPW4sbio9LTEpLHRoaXMuX2JhckFsaWdubWVudCl7Y2FzZSJzdGFydCI6cmV0dXJuIHI7Y2FzZSJlbmQiOnJldHVybiByLW47Y2FzZSJtaWRkbGUiOmRlZmF1bHQ6cmV0dXJuIHItbi8yfX0sdC5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49dGhpcy5fZ2V0RGF0YVRvRHJhdygpLGk9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksbz10aGlzLmRhdGFzZXRzKCkuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gbi5nZXQoYSkuc29tZShmdW5jdGlvbihzLGwpe3JldHVybiBzPT1udWxsPyExOnIuX2RyYXdMYWJlbChzLGwsYSxpKX0pfSk7dGhpcy5faGlkZUJhcnNJZkFueUFyZVRvb1dpZGUmJm8mJnRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiByLl9sYWJlbENvbmZpZy5nZXQoYSkubGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSl9LHQucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24ocixuLGksbyl7dmFyIGE9dGhpcy5fbGFiZWxDb25maWcuZ2V0KGkpLHM9YS5sYWJlbEFyZWEsbD1hLm1lYXN1cmVyLGM9YS53cml0ZXIsdT10aGlzLmxlbmd0aCgpLmFjY2Vzc29yLGg9dShyLG4saSksZj10aGlzLmxlbmd0aCgpLnNjYWxlLHA9ZiE9bnVsbD9mLnNjYWxlKGgpOmgsZD1mIT1udWxsP2Yuc2NhbGUodGhpcy5iYXNlbGluZVZhbHVlKCkpOnRoaXMuYmFzZWxpbmVWYWx1ZSgpLGc9e3g6by54KHIsbixpKSx5Om8ueShyLG4saSl9LF89e3dpZHRoOm8ud2lkdGgocixuLGkpLGhlaWdodDpvLmhlaWdodChyLG4saSl9LHk9dGhpcy5fbGFiZWxGb3JtYXR0ZXIoaCxyLG4saSkseD1sLm1lYXN1cmUoeSksYj10aGlzLl9zaG91bGRTaG93TGFiZWxPbkJhcihnLF8seCksUz10aGlzLl9pc1ZlcnRpY2FsP3A8PWQ6cDxkLEM9dGhpcy5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzKGcsXyx4LGIsUyksUD1DLmNvbnRhaW5lckRpbWVuc2lvbnMsaz1DLmxhYmVsQ29udGFpbmVyT3JpZ2luLE89Qy5sYWJlbE9yaWdpbixEPUMuYWxpZ25tZW50LEI9by5maWxsKHIsbixpKSxJPXRoaXMuX2NyZWF0ZUxhYmVsQ29udGFpbmVyKHMsayxPLHgsYixCKSxMPXt4QWxpZ246RC54LHlBbGlnbjpELnl9O2Mud3JpdGUoeSxQLndpZHRoLFAuaGVpZ2h0LEwsSS5ub2RlKCkpO3ZhciBSPXRoaXMuX2lzVmVydGljYWw/Xy53aWR0aDx4LndpZHRoOl8uaGVpZ2h0PHguaGVpZ2h0O3JldHVybiBSfSx0LnByb3RvdHlwZS5fc2hvdWxkU2hvd0xhYmVsT25CYXI9ZnVuY3Rpb24ocixuLGkpe2lmKHRoaXMuX2xhYmVsc1Bvc2l0aW9uPT09cXUuTGFiZWxzUG9zaXRpb24ub3V0c2lkZSlyZXR1cm4hMTt2YXIgbz10aGlzLl9pc1ZlcnRpY2FsP3IueTpyLngsYT10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0Om4ud2lkdGgscz10aGlzLl9pc1ZlcnRpY2FsP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLGw9dGhpcy5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoLGM9bythLHU9YTtyZXR1cm4gYz5zP3U9cy1vOm88MCYmKHU9YyksbCt0Ll9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUjw9dX0sdC5wcm90b3R5cGUuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcz1mdW5jdGlvbihyLG4saSxvLGEpe3ZhciBzPXRoaXMsbD10aGlzLl9pc1ZlcnRpY2FsP3IueTpyLngsYz10aGlzLl9pc1ZlcnRpY2FsP24uaGVpZ2h0Om4ud2lkdGgsdT10aGlzLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgsaD0iY2VudGVyIixmPWMscD1sLGQ9bCxnPWZ1bmN0aW9uKF8pe3N3aXRjaChfKXtjYXNlInRvcExlZnQiOmg9cy5faXNWZXJ0aWNhbD8idG9wIjoibGVmdCIscCs9dC5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIsZCs9dC5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVI7cmV0dXJuO2Nhc2UiY2VudGVyIjpkKz0oYyt1KS8yO3JldHVybjtjYXNlImJvdHRvbVJpZ2h0IjpoPXMuX2lzVmVydGljYWw/ImJvdHRvbSI6InJpZ2h0IixwLT10Ll9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUixkKz1mLXQuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLXU7cmV0dXJufX07aWYobylzd2l0Y2godGhpcy5fbGFiZWxzUG9zaXRpb24pe2Nhc2UgcXUuTGFiZWxzUG9zaXRpb24uc3RhcnQ6ZyhhPyJib3R0b21SaWdodCI6InRvcExlZnQiKTticmVhaztjYXNlIHF1LkxhYmVsc1Bvc2l0aW9uLm1pZGRsZTpnKCJjZW50ZXIiKTticmVhaztjYXNlIHF1LkxhYmVsc1Bvc2l0aW9uLmVuZDpnKGE/InRvcExlZnQiOiJib3R0b21SaWdodCIpO2JyZWFrfWVsc2UgYT8oaD10aGlzLl9pc1ZlcnRpY2FsPyJ0b3AiOiJsZWZ0IixmPWMrdC5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrdSxwLT10Ll9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUit1LGQtPXQuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK3UpOihoPXRoaXMuX2lzVmVydGljYWw/ImJvdHRvbSI6InJpZ2h0IixmPWMrdC5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrdSxkKz1jK3QuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSKTtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6dGhpcy5faXNWZXJ0aWNhbD9uLndpZHRoOmYsaGVpZ2h0OnRoaXMuX2lzVmVydGljYWw/ZjpuLmhlaWdodH0sbGFiZWxDb250YWluZXJPcmlnaW46e3g6dGhpcy5faXNWZXJ0aWNhbD9yLng6cCx5OnRoaXMuX2lzVmVydGljYWw/cDpyLnl9LGxhYmVsT3JpZ2luOnt4OnRoaXMuX2lzVmVydGljYWw/ci54K24ud2lkdGgvMi1pLndpZHRoLzI6ZCx5OnRoaXMuX2lzVmVydGljYWw/ZDpyLnkrbi5oZWlnaHQvMi1pLmhlaWdodC8yfSxhbGlnbm1lbnQ6e3g6dGhpcy5faXNWZXJ0aWNhbD8iY2VudGVyIjpoLHk6dGhpcy5faXNWZXJ0aWNhbD9oOiJjZW50ZXIifX19LHQucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbihyLG4saSxvLGEscyl7dmFyIGw9ci5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIituLngrIiwgIituLnkrIikiKTtpZihhKXtsLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApO3ZhciBjPXZsLkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIscykqMS42PHZsLkNvbG9yLmNvbnRyYXN0KCJibGFjayIscyk7bC5jbGFzc2VkKGM/ImRhcmstbGFiZWwiOiJsaWdodC1sYWJlbCIsITApfWVsc2UgbC5jbGFzc2VkKCJvZmYtYmFyLWxhYmVsIiwhMCk7cmV0dXJuIGx9LHQucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciByPVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT10aGlzLmxlbmd0aCgpLnNjYWxlLG89aS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksYT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscz10aGlzLl9pc1ZlcnRpY2FsPyJoZWlnaHQiOiJ3aWR0aCI7blthXT1mdW5jdGlvbigpe3JldHVybiBvfSxuW3NdPWZ1bmN0aW9uKCl7cmV0dXJuIDB9LHIucHVzaCh7YXR0clRvUHJvamVjdG9yOm4sYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoaEt0LkFuaW1hdG9yLlJFU0VUKX0pfXJldHVybiByLnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihoS3QuQW5pbWF0b3IuTUFJTil9KSxyfSx0LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49ZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksaT10aGlzLmxlbmd0aCgpLnNjYWxlLG89aS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksYT10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIscz10aGlzLl9pc1ZlcnRpY2FsPyJ4IjoieSIsbD1sQi5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnBvc2l0aW9uKCkpLGM9bEIuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5sZW5ndGgoKSksdT1mdW5jdGlvbihkLGcsXyl7cmV0dXJuIE1hdGguYWJzKG8tYyhkLGcsXykpfSxoPW5bdC5fQkFSX1RISUNLTkVTU19LRVldLGY9bi5nYXAscD1mPT1udWxsP2g6ZnVuY3Rpb24oZCxnLF8pe3ZhciB5PWgoZCxnLF8pO3JldHVybiB5PHQuX0JBUl9HQVBMRVNTX1RIUkVTSE9MRF9QWD95OnktZihkLGcsXyl9O3JldHVybiBuLndpZHRoPXRoaXMuX2lzVmVydGljYWw/cDp1LG4uaGVpZ2h0PXRoaXMuX2lzVmVydGljYWw/dTpwLG5bYV09ZnVuY3Rpb24oZCxnLF8pe3ZhciB5PWMoZCxnLF8pO3JldHVybiB5Pm8/bzp5fSxuW3NdPWZ1bmN0aW9uKGQsZyxfKXtyZXR1cm4gci5fZ2V0UG9zaXRpb25BdHRyKGwoZCxnLF8pLGgoZCxnLF8pKX0sbn0sdC5wcm90b3R5cGUuX3VwZGF0ZVRoaWNrbmVzc0F0dHI9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49dGhpcy5wb3NpdGlvbigpLGk9dGhpcy5iYXJFbmQoKTtuIT1udWxsJiZpIT1udWxsPyh0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzPSExLHRoaXMuYXR0cih0Ll9CQVJfVEhJQ0tORVNTX0tFWSxmdW5jdGlvbihvLGEscyl7dmFyIGw9bi5hY2Nlc3NvcihvLGEscyksYz1pLmFjY2Vzc29yKG8sYSxzKTtyZXR1cm4gbD1uLnNjYWxlP24uc2NhbGUuc2NhbGUobCk6bCxjPWkuc2NhbGU/aS5zY2FsZS5zY2FsZShjKTpjLE1hdGguYWJzKGMtbCl9KSk6KHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsdGhpcy5hdHRyKHQuX0JBUl9USElDS05FU1NfS0VZLGZ1bmN0aW9uKCl7cmV0dXJuIHIuX2JhclBpeGVsVGhpY2tuZXNzKCl9KSl9LHQucHJvdG90eXBlLl9iYXJQaXhlbFRoaWNrbmVzcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzJiZ0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKT90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3ModGhpcy5wb3NpdGlvbigpLHRoaXMuZGF0YXNldHMoKSx0aGlzLl9pc1ZlcnRpY2FsP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpKTowfSx0LnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihyKXtpZihyPT09dm9pZCAwJiYocj10aGlzLmRhdGFzZXRzKCkpLCF0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSlyZXR1cm5bXTt2YXIgbj1lLnByb3RvdHlwZS5lbnRpdGllcy5jYWxsKHRoaXMscik7cmV0dXJuIG59LHQucHJvdG90eXBlLl9lbnRpdHlCb3VuZHM9ZnVuY3Rpb24ocil7dmFyIG49ci5kYXR1bSxpPXIuaW5kZXgsbz1yLmRhdGFzZXQ7cmV0dXJuIHRoaXMuX3BpeGVsQm91bmRzKG4saSxvKX0sdC5wcm90b3R5cGUuX3BpeGVsQm91bmRzPWZ1bmN0aW9uKHIsbixpKXt2YXIgbz10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm57eDpvLngocixuLGkpLHk6by55KHIsbixpKSx3aWR0aDpvLndpZHRoKHIsbixpKSxoZWlnaHQ6by5oZWlnaHQocixuLGkpfX0sdC5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24ocixuLGkpe3ZhciBvPXRoaXMuX3BpeGVsQm91bmRzKHIsbixpKSxhPSh0aGlzLl9pc1ZlcnRpY2FsP2xCLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTpsQi5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkpKHIsbixpKSxzPSh0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpLnNjYWxlOnRoaXMueCgpLnNjYWxlKS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk7cmV0dXJuIHRoaXMuX3BpeGVsUG9pbnRCYXIoYSxzLG8pfSx0LnByb3RvdHlwZS5fcGl4ZWxQb2ludEJhcj1mdW5jdGlvbihyLG4saSl7dmFyIG8sYTtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD8obz1pLngraS53aWR0aC8yLGE9cjw9bj9pLnk6aS55K2kuaGVpZ2h0KToobz1yPj1uP2kueCtpLndpZHRoOmkueCxhPWkueStpLmhlaWdodC8yKSx7eDpvLHk6YX19LHQucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihyLG4pe2UucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMscixuKX0sdC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49bmV3IHZsLk1hcCxpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG89dGhpcy53aWR0aCgpLGE9dGhpcy5oZWlnaHQoKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGw9cy5kYXRhKCkubWFwKGZ1bmN0aW9uKGMsdSl7dmFyIGg9ci5faXNEYXR1bU9uU2NyZWVuKGksbyxhLGMsdSxzKTtyZXR1cm4gaD9jOm51bGx9KTtuLnNldChzLGwpfSksbn0sdC5wcm90b3R5cGUuX2lzRGF0dW1PblNjcmVlbj1mdW5jdGlvbihyLG4saSxvLGEscyl7dmFyIGw9ci54KG8sYSxzKSxjPXIueShvLGEscyksdT1yLndpZHRoKG8sYSxzKSxoPXIuaGVpZ2h0KG8sYSxzKSxmPXZsLk1hdGguaXNWYWxpZE51bWJlcihsKSYmdmwuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpJiZ2bC5NYXRoLmlzVmFsaWROdW1iZXIodSkmJnZsLk1hdGguaXNWYWxpZE51bWJlcihoKTtyZXR1cm4gZj92bC5NYXRoLmJvdW5kc0ludGVyc2VjdHMobCxjLHUsaCwwLDAsbixpKTohMX0sdC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcztlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihuKXtyZXR1cm4gci5fbGFiZWxDb25maWcuZ2V0KG4pLm1lYXN1cmVyLnJlc2V0KCl9KX0sdC5fQkFSX1RISUNLTkVTU19SQVRJTz0uOTUsdC5fQkFSX0dBUExFU1NfVEhSRVNIT0xEX1BYPTMsdC5fU0lOR0xFX0JBUl9ESU1FTlNJT05fUkFUSU89LjQsdC5fQkFSX0FSRUFfQ0xBU1M9ImJhci1hcmVhIix0Ll9CQVJfRU5EX0tFWT0iYmFyRW5kIix0Ll9CQVJfVEhJQ0tORVNTX0tFWT0id2lkdGgiLHQuX0xBQkVMX0FSRUFfQ0xBU1M9ImJhci1sYWJlbC10ZXh0LWFyZWEiLHQuX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSPTEwLHR9KGpWZS5YWVBsb3QpO3F1LkJhcj1QYXQ7ZnVuY3Rpb24gWFZlKGUsdCxyKXt2YXIgbixpPWUuc2NhbGU7aWYoaSBpbnN0YW5jZW9mIEFhdC5DYXRlZ29yeSluPWkucmFuZ2VCYW5kKCk7ZWxzZXt2YXIgbz1lLmFjY2Vzc29yLGE9Q2F0LnNldCh2bC5BcnJheS5mbGF0dGVuKHQubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBjLmRhdGEoKS5tYXAoZnVuY3Rpb24odSxoKXtyZXR1cm4gbyh1LGgsYyl9KS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIHUhPW51bGx9KS5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIHUudmFsdWVPZigpfSl9KSkpLnZhbHVlcygpLm1hcChmdW5jdGlvbihjKXtyZXR1cm4rY30pO2Euc29ydChmdW5jdGlvbihjLHUpe3JldHVybiBjLXV9KTt2YXIgcz1hLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gaS5zY2FsZShjKX0pLGw9Q2F0LnBhaXJzKHMpO249dmwuTWF0aC5taW4obCxmdW5jdGlvbihjLHUpe3JldHVybiBNYXRoLmFicyhjWzFdLWNbMF0pfSxyKlBhdC5fU0lOR0xFX0JBUl9ESU1FTlNJT05fUkFUSU8pLG4qPVBhdC5fQkFSX1RISUNLTkVTU19SQVRJT31yZXR1cm4gbn19KTt2YXIgcEt0PUgoTGF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShMYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciAkVmU9KGRlKCksVXQocGUpKSxLVmU9THMoKSxaVmU9RmUoKSxmS3Q9bTQoKSxKVmU9ZXMoKSxRVmU9ZnVuY3Rpb24oZSl7JFZlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cj09PXZvaWQgMCYmKHI9InZlcnRpY2FsIik7dmFyIG49ZS5jYWxsKHRoaXMscil8fHRoaXM7cmV0dXJuIG4uX2NsdXN0ZXJPZmZzZXRzPW5ldyBaVmUuTWFwLG59cmV0dXJuIHQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj1lLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxpPXRoaXMuX21ha2VJbm5lclNjYWxlKCksbz1mdW5jdGlvbihsLGMpe3JldHVybiBpLnJhbmdlQmFuZCgpfTtuLndpZHRoPXRoaXMuX2lzVmVydGljYWw/bzpuLndpZHRoLG4uaGVpZ2h0PXRoaXMuX2lzVmVydGljYWw/bi5oZWlnaHQ6bzt2YXIgYT1uLngscz1uLnk7cmV0dXJuIG4ueD10aGlzLl9pc1ZlcnRpY2FsP2Z1bmN0aW9uKGwsYyx1KXtyZXR1cm4gYShsLGMsdSkrci5fY2x1c3Rlck9mZnNldHMuZ2V0KHUpfTpmdW5jdGlvbihsLGMsdSl7cmV0dXJuIGEobCxjLHUpfSxuLnk9dGhpcy5faXNWZXJ0aWNhbD9mdW5jdGlvbihsLGMsdSl7cmV0dXJuIHMobCxjLHUpfTpmdW5jdGlvbihsLGMsdSl7cmV0dXJuIHMobCxjLHUpK3IuX2NsdXN0ZXJPZmZzZXRzLmdldCh1KX0sbn0sdC5wcm90b3R5cGUuX3VwZGF0ZUNsdXN0ZXJQb3NpdGlvbj1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj10aGlzLl9tYWtlSW5uZXJTY2FsZSgpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKGksbyl7cmV0dXJuIHIuX2NsdXN0ZXJPZmZzZXRzLnNldChpLG4uc2NhbGUoU3RyaW5nKG8pKS1uLnJhbmdlQmFuZCgpLzIpfSl9LHQucHJvdG90eXBlLl9tYWtlSW5uZXJTY2FsZT1mdW5jdGlvbigpe3ZhciByPW5ldyBLVmUuQ2F0ZWdvcnk7ci5kb21haW4odGhpcy5kYXRhc2V0cygpLm1hcChmdW5jdGlvbihpLG8pe3JldHVybiBTdHJpbmcobyl9KSk7dmFyIG49SlZlLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuYXR0cihmS3QuQmFyLl9CQVJfVEhJQ0tORVNTX0tFWSkpO3JldHVybiByLnJhbmdlKFswLG4obnVsbCwwLG51bGwpXSkscn0sdC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlQ2x1c3RlclBvc2l0aW9uKCksZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKX0sdH0oZkt0LkJhcik7TGF0LkNsdXN0ZXJlZEJhcj1RVmV9KTt2YXIgZEt0PUgoUmF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShSYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0VWU9KGRlKCksVXQocGUpKSxnND0oRXIoKSxVdChNcikpLGthdD1nbCgpLGVVZT1JZigpLHJVZT1GdSgpLG5VZT1McygpLFZ2PUZlKCksaVVlPWhhdCgpLG9VZT1wYXQoKSxhVWU9VnUoKSxzVWU9RUYoKSxNZD1lcygpLGxVZT1mdW5jdGlvbihlKXt0VWUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fc3RhcnRBbmdsZT0wLHIuX2VuZEFuZ2xlPTIqTWF0aC5QSSxyLl9sYWJlbEZvcm1hdHRlcj1yVWUuaWRlbnRpdHkoKSxyLl9sYWJlbHNFbmFibGVkPSExLHIuaW5uZXJSYWRpdXMoMCksci5vdXRlclJhZGl1cyhmdW5jdGlvbigpe3ZhciBuPXIuX3BpZUNlbnRlcigpO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChyLndpZHRoKCktbi54LG4ueCksTWF0aC5tYXgoci5oZWlnaHQoKS1uLnksbi55KSl9KSxyLmFkZENsYXNzKCJwaWUtcGxvdCIpLHIuYXR0cigiZmlsbCIsZnVuY3Rpb24obixpKXtyZXR1cm4gU3RyaW5nKGkpfSxuZXcgblVlLkNvbG9yKSxyLl9zdHJva2VEcmF3ZXJzPW5ldyBWdi5NYXAscn1yZXR1cm4gdC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcztlLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIG4uYXR0YWNoVG8oci5fcmVuZGVyQXJlYSl9KX0sdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihyLG4saSl7ZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMscixuLGkpO3ZhciBvPXRoaXMuX3BpZUNlbnRlcigpO3RoaXMuX3JlbmRlckFyZWEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby54KyIsIitvLnkrIikiKTt2YXIgYT1NYXRoLm1pbihNYXRoLm1heCh0aGlzLndpZHRoKCktby54LG8ueCksTWF0aC5tYXgodGhpcy5oZWlnaHQoKS1vLnksby55KSk7cmV0dXJuIHRoaXMuaW5uZXJSYWRpdXMoKS5zY2FsZSE9bnVsbCYmdGhpcy5pbm5lclJhZGl1cygpLnNjYWxlLnJhbmdlKFswLGFdKSx0aGlzLm91dGVyUmFkaXVzKCkuc2NhbGUhPW51bGwmJnRoaXMub3V0ZXJSYWRpdXMoKS5zY2FsZS5yYW5nZShbMCxhXSksdGhpc30sdC5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbihyKXtyZXR1cm4gZS5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsciksdGhpc30sdC5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24ocil7aWYodGhpcy5kYXRhc2V0cygpLmxlbmd0aD09PTEpcmV0dXJuIFZ2LldpbmRvdy53YXJuKCJPbmx5IG9uZSBkYXRhc2V0IGlzIHN1cHBvcnRlZCBpbiBQaWUgcGxvdHMiKSx0aGlzO3RoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpLGUucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyxyKTt2YXIgbj1uZXcgb1VlLkFyY091dGxpbmVTVkdEcmF3ZXI7cmV0dXJuIHRoaXMuX2lzU2V0dXAmJm4uYXR0YWNoVG8odGhpcy5fcmVuZGVyQXJlYSksdGhpcy5fc3Ryb2tlRHJhd2Vycy5zZXQocixuKSx0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKHIpe3JldHVybiBlLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyxyKSx0aGlzfSx0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKHIpe2UucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLHIpLHRoaXMuX3N0cm9rZURyYXdlcnMuZ2V0KHIpLnJlbW92ZSgpfSx0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbihyKXtyZXR1cm4gZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQuY2FsbCh0aGlzLHIpLHRoaXMuX3N0cm9rZURyYXdlcnMuZGVsZXRlKHIpLHRoaXMuX3N0YXJ0QW5nbGVzPVtdLHRoaXMuX2VuZEFuZ2xlcz1bXSx0aGlzfSx0LnByb3RvdHlwZS5zZWxlY3Rpb25zPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7cj09PXZvaWQgMCYmKHI9dGhpcy5kYXRhc2V0cygpKTt2YXIgaT1lLnByb3RvdHlwZS5zZWxlY3Rpb25zLmNhbGwodGhpcyxyKS5ub2RlcygpO3JldHVybiByLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIGE9bi5fc3Ryb2tlRHJhd2Vycy5nZXQobyk7YSE9bnVsbCYmaS5wdXNoLmFwcGx5KGksYS5nZXRWaXN1YWxQcmltaXRpdmVzKCkpfSksZzQuc2VsZWN0QWxsKGkpfSx0LnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpLHRoaXMucmVuZGVyKCl9LHQucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGFVZS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgaVVlLkFyY1NWR0RyYXdlcn0sZnVuY3Rpb24oKXtyZXR1cm4gc1VlLndhcm4oImNhbnZhcyByZW5kZXJlciBpcyBub3Qgc3VwcG9ydGVkIG9uIFBpZSBQbG90ISIpLG51bGx9KX0sdC5wcm90b3R5cGUuZW50aXRpZXM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcztyPT09dm9pZCAwJiYocj10aGlzLmRhdGFzZXRzKCkpO3ZhciBpPWUucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyxyKTtyZXR1cm4gaS5tYXAoZnVuY3Rpb24obyl7by5wb3NpdGlvbi54Kz1uLndpZHRoKCkvMixvLnBvc2l0aW9uLnkrPW4uaGVpZ2h0KCkvMjt2YXIgYT1nNC5zZWxlY3Qobi5fc3Ryb2tlRHJhd2Vycy5nZXQoby5kYXRhc2V0KS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4KG8uaW5kZXgpKSxzPW87cmV0dXJuIHMuc3Ryb2tlU2VsZWN0aW9uPWEsc30pfSx0LnByb3RvdHlwZS5zZWN0b3JWYWx1ZT1mdW5jdGlvbihyLG4pe3JldHVybiByPT1udWxsP3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQuX1NFQ1RPUl9WQUxVRV9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkodC5fU0VDVE9SX1ZBTFVFX0tFWSxyLG4pLHRoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLmlubmVyUmFkaXVzPWZ1bmN0aW9uKHIsbil7cmV0dXJuIHI9PW51bGw/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQodC5fSU5ORVJfUkFESVVTX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9JTk5FUl9SQURJVVNfS0VZLHIsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUub3V0ZXJSYWRpdXM9ZnVuY3Rpb24ocixuKXtyZXR1cm4gcj09bnVsbD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0Ll9PVVRFUl9SQURJVVNfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KHQuX09VVEVSX1JBRElVU19LRVkscixuKSx0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX3N0YXJ0QW5nbGU6KHRoaXMuX3N0YXJ0QW5nbGU9cix0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5lbmRBbmdsZT1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9lbmRBbmdsZToodGhpcy5fZW5kQW5nbGU9cix0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9cix0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5sYWJlbEZvcm1hdHRlcj1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9sYWJlbEZvcm1hdHRlcjoodGhpcy5fbGFiZWxGb3JtYXR0ZXI9cix0aGlzLnJlbmRlcigpLHRoaXMpfSx0LnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHIpe3ZhciBuPXt4OnRoaXMud2lkdGgoKS8yLHk6dGhpcy5oZWlnaHQoKS8yfSxpPXt4OnIueC1uLngseTpyLnktbi55fSxvPXRoaXMuX3NsaWNlSW5kZXhGb3JQb2ludChpKTtyZXR1cm4gbz09bnVsbD9bXTpbdGhpcy5lbnRpdGllcygpW29dXX0sdC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj1lLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksaT1NZC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLmlubmVyUmFkaXVzKCkpLG89TWQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5vdXRlclJhZGl1cygpKTtyZXR1cm4gbi5kPWZ1bmN0aW9uKGEscyxsKXtyZXR1cm4gZzQuYXJjKCkuaW5uZXJSYWRpdXMoaShhLHMsbCkpLm91dGVyUmFkaXVzKG8oYSxzLGwpKS5zdGFydEFuZ2xlKHIuX3N0YXJ0QW5nbGVzW3NdKS5lbmRBbmdsZShyLl9lbmRBbmdsZXNbc10pKGEscyl9LG59LHQucHJvdG90eXBlLl91cGRhdGVQaWVBbmdsZXM9ZnVuY3Rpb24oKXtpZih0aGlzLnNlY3RvclZhbHVlKCkhPW51bGwmJnRoaXMuZGF0YXNldHMoKS5sZW5ndGghPT0wKXt2YXIgcj1NZC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNlY3RvclZhbHVlKCkpLG49dGhpcy5kYXRhc2V0cygpWzBdLGk9dGhpcy5fZ2V0RGF0YVRvRHJhdygpLmdldChuKSxvPWc0LnBpZSgpLnNvcnQobnVsbCkuc3RhcnRBbmdsZSh0aGlzLl9zdGFydEFuZ2xlKS5lbmRBbmdsZSh0aGlzLl9lbmRBbmdsZSkudmFsdWUoZnVuY3Rpb24oYSxzKXtyZXR1cm4gcihhLHMsbil9KShpKTt0aGlzLl9zdGFydEFuZ2xlcz1vLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5zdGFydEFuZ2xlfSksdGhpcy5fZW5kQW5nbGVzPW8ubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmVuZEFuZ2xlfSl9fSx0LnByb3RvdHlwZS5fcGllQ2VudGVyPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy5fc3RhcnRBbmdsZTx0aGlzLl9lbmRBbmdsZT90aGlzLl9zdGFydEFuZ2xlOnRoaXMuX2VuZEFuZ2xlLG49dGhpcy5fc3RhcnRBbmdsZTx0aGlzLl9lbmRBbmdsZT90aGlzLl9lbmRBbmdsZTp0aGlzLl9zdGFydEFuZ2xlLGk9TWF0aC5zaW4ociksbz1NYXRoLmNvcyhyKSxhPU1hdGguc2luKG4pLHM9TWF0aC5jb3MobiksbCxjLHUsaDtyZXR1cm4gaT49MCYmYT49MD9vPj0wJiZzPj0wPyhsPW8sYz0wLGg9MCx1PWEpOm88MCYmczwwPyhsPTAsYz0tcyxoPTAsdT1pKTpvPj0wJiZzPDA/KGw9byxjPS1zLGg9MCx1PWkpOm88MCYmcz49MCYmKGw9MSxjPTEsaD0xLHU9TWF0aC5tYXgoaSxhKSk6aT49MCYmYTwwP28+PTAmJnM+PTA/KGw9TWF0aC5tYXgobyxzKSxjPTEsaD0xLHU9MSk6bzwwJiZzPDA/KGw9MCxjPTEsaD0tYSx1PWkpOm8+PTAmJnM8MD8obD1vLGM9MSxoPS1hLHU9MSk6bzwwJiZzPj0wJiYobD1zLGM9MSxoPTEsdT1pKTppPDAmJmE+PTA/bz49MCYmcz49MD8obD0xLGM9MCxoPS1pLHU9YSk6bzwwJiZzPDA/KGw9MSxjPU1hdGgubWF4KC1vLC1zKSxoPTEsdT0xKTpvPj0wJiZzPDA/KGw9MSxjPS1zLGg9LWksdT0xKTpvPDAmJnM+PTAmJihsPTEsYz0tbyxoPTEsdT1hKTppPDAmJmE8MCYmKG8+PTAmJnM+PTA/KGw9cyxjPTAsaD0taSx1PTApOm88MCYmczwwPyhsPTAsYz0tbyxoPS1hLHU9MCk6bz49MCYmczwwPyhsPTEsYz0xLGg9TWF0aC5tYXgobywtcyksdT0xKTpvPDAmJnM+PTAmJihsPXMsYz0tbyxoPTEsdT0wKSkse3g6aCt1PT0wPzA6aC8oaCt1KSp0aGlzLndpZHRoKCkseTpsK2M9PTA/MDpsLyhsK2MpKnRoaXMuaGVpZ2h0KCl9fSx0LnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciByPWUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3LmNhbGwodGhpcyk7aWYodGhpcy5kYXRhc2V0cygpLmxlbmd0aD09PTApcmV0dXJuIHI7dmFyIG49TWQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxpPXRoaXMuZGF0YXNldHMoKVswXSxvPXIuZ2V0KGkpLGE9by5maWx0ZXIoZnVuY3Rpb24ocyxsKXtyZXR1cm4gdC5faXNWYWxpZERhdGEobihzLGwsaSkpfSk7cmV0dXJuIHIuc2V0KGksYSkscn0sdC5faXNWYWxpZERhdGE9ZnVuY3Rpb24ocil7cmV0dXJuIFZ2Lk1hdGguaXNWYWxpZE51bWJlcihyKSYmcj49MH0sdC5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24ocixuLGkpe3ZhciBvPU1kLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSk7aWYoIXQuX2lzVmFsaWREYXRhKG8ocixuLGkpKSlyZXR1cm57eDpOYU4seTpOYU59O3ZhciBhPU1kLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuaW5uZXJSYWRpdXMoKSkocixuLGkpLHM9TWQuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5vdXRlclJhZGl1cygpKShyLG4saSksbD0oYStzKS8yLGM9ZzQucGllKCkuc29ydChudWxsKS52YWx1ZShmdW5jdGlvbihwLGQpe3ZhciBnPW8ocCxkLGkpO3JldHVybiB0Ll9pc1ZhbGlkRGF0YShnKT9nOjB9KS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKShpLmRhdGEoKSksdT1jW25dLnN0YXJ0QW5nbGUsaD1jW25dLmVuZEFuZ2xlLGY9KHUraCkvMjtyZXR1cm57eDpsKk1hdGguc2luKGYpLHk6LWwqTWF0aC5jb3MoZil9fSx0LnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7dGhpcy5fcmVuZGVyQXJlYS5zZWxlY3QoIi5sYWJlbC1hcmVhIikucmVtb3ZlKCksdGhpcy5fbGFiZWxzRW5hYmxlZCYmVnYuV2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gbi5fZHJhd0xhYmVscygpfSxyKTt2YXIgaT10aGlzLl9nZW5lcmF0ZVN0cm9rZURyYXdTdGVwcygpLG89dGhpcy5fZ2V0RGF0YVRvRHJhdygpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBzPU1kLlBsb3QuYXBwbHlEcmF3U3RlcHMoaSxhKTtuLl9zdHJva2VEcmF3ZXJzLmdldChhKS5kcmF3KG8uZ2V0KGEpLHMpfSl9LHQucHJvdG90eXBlLl9nZW5lcmF0ZVN0cm9rZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciByPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3JldHVyblt7YXR0clRvUHJvamVjdG9yOnIsYW5pbWF0b3I6bmV3IGVVZS5OdWxsfV19LHQucHJvdG90eXBlLl9zbGljZUluZGV4Rm9yUG9pbnQ9ZnVuY3Rpb24ocil7dmFyIG49TWF0aC5zcXJ0KE1hdGgucG93KHIueCwyKStNYXRoLnBvdyhyLnksMikpLGk9TWF0aC5hY29zKC1yLnkvbik7ci54PDAmJihpPU1hdGguUEkqMi1pKTtmb3IodmFyIG8sYT0wO2E8dGhpcy5fc3RhcnRBbmdsZXMubGVuZ3RoO2ErKylpZih0aGlzLl9zdGFydEFuZ2xlc1thXTxpJiZ0aGlzLl9lbmRBbmdsZXNbYV0+aSl7bz1hO2JyZWFrfWlmKG8hPT12b2lkIDApe3ZhciBzPXRoaXMuZGF0YXNldHMoKVswXSxsPXMuZGF0YSgpW29dLGM9dGhpcy5pbm5lclJhZGl1cygpLmFjY2Vzc29yKGwsbyxzKSx1PXRoaXMub3V0ZXJSYWRpdXMoKS5hY2Nlc3NvcihsLG8scyk7aWYobj5jJiZuPHUpcmV0dXJuIG99cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7Zm9yKHZhciByPXRoaXMsbj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxpPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLG89bmV3IGthdC5TdmdDb250ZXh0KGkubm9kZSgpKSxhPW5ldyBrYXQuQ2FjaGVNZWFzdXJlcihvKSxzPW5ldyBrYXQuV3JpdGVyKGEsbyksbD10aGlzLmRhdGFzZXRzKClbMF0sYz10aGlzLl9nZXREYXRhVG9EcmF3KCkuZ2V0KGwpLHU9Yy5sZW5ndGgsaD1mdW5jdGlvbihkKXt2YXIgZz1jW2RdLF89Zi5zZWN0b3JWYWx1ZSgpLmFjY2Vzc29yKGcsZCxsKTtpZighVnYuTWF0aC5pc1ZhbGlkTnVtYmVyKF8pKXJldHVybiJjb250aW51ZSI7Xz1mLl9sYWJlbEZvcm1hdHRlcihfLGcsZCxsKTt2YXIgeT1hLm1lYXN1cmUoXykseD0oZi5fZW5kQW5nbGVzW2RdK2YuX3N0YXJ0QW5nbGVzW2RdKS8yLGI9Zi5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGcsZCxsKTtmLm91dGVyUmFkaXVzKCkuc2NhbGUmJihiPWYub3V0ZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShiKSk7dmFyIFM9Zi5pbm5lclJhZGl1cygpLmFjY2Vzc29yKGcsZCxsKTtmLmlubmVyUmFkaXVzKCkuc2NhbGUmJihTPWYuaW5uZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShTKSk7dmFyIEM9KGIrUykvMixQPU1hdGguc2luKHgpKkMteS53aWR0aC8yLGs9LU1hdGguY29zKHgpKkMteS5oZWlnaHQvMixPPVt7eDpQLHk6a30se3g6UCx5OmsreS5oZWlnaHR9LHt4OlAreS53aWR0aCx5Omt9LHt4OlAreS53aWR0aCx5OmsreS5oZWlnaHR9XSxEPU8uZXZlcnkoZnVuY3Rpb24oeil7cmV0dXJuIE1hdGguYWJzKHoueCk8PXIud2lkdGgoKS8yJiZNYXRoLmFicyh6LnkpPD1yLmhlaWdodCgpLzJ9KTtpZihEKXt2YXIgQj1PLm1hcChmdW5jdGlvbih6KXtyZXR1cm4gci5fc2xpY2VJbmRleEZvclBvaW50KHopfSk7RD1CLmV2ZXJ5KGZ1bmN0aW9uKHope3JldHVybiB6PT09ZH0pfXZhciBJPW4uZmlsbChnLGQsbCksTD1Wdi5Db2xvci5jb250cmFzdCgid2hpdGUiLEkpKjEuNjxWdi5Db2xvci5jb250cmFzdCgiYmxhY2siLEkpLFI9aS5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitQKyIsIitrKyIpIiksRj1MPyJkYXJrLWxhYmVsIjoibGlnaHQtbGFiZWwiO1IuY2xhc3NlZChGLCEwKSxSLnN0eWxlKCJ2aXNpYmlsaXR5IixEPyJpbmhlcml0IjoiaGlkZGVuIikscy53cml0ZShfLHkud2lkdGgseS5oZWlnaHQse3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciJ9LFIubm9kZSgpKX0sZj10aGlzLHA9MDtwPHU7cCsrKWgocCl9LHQuX0lOTkVSX1JBRElVU19LRVk9ImlubmVyLXJhZGl1cyIsdC5fT1VURVJfUkFESVVTX0tFWT0ib3V0ZXItcmFkaXVzIix0Ll9TRUNUT1JfVkFMVUVfS0VZPSJzZWN0b3ItdmFsdWUiLHR9KE1kLlBsb3QpO1JhdC5QaWU9bFVlfSk7dmFyIG1LdD1IKERhdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgY1VlPShkZSgpLFV0KHBlKSksdVVlPShFcigpLFV0KE1yKSksTmF0PWdsKCksaFVlPUlmKCksZlVlPUJ2KCkscFVlPVZ1KCksZFVlPXJCKCksY0I9THMoKSxOYz1GZSgpLHVCPWVzKCksbVVlPUh2KCksZ1VlPWZ1bmN0aW9uKGUpe2NVZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9sYWJlbHNFbmFibGVkPSExLHIuX2xhYmVsPW51bGwsci5hbmltYXRvcigicmVjdGFuZ2xlcyIsbmV3IGhVZS5OdWxsKSxyLmFkZENsYXNzKCJyZWN0YW5nbGUtcGxvdCIpLHIuYXR0cigiZmlsbCIsbmV3IGNCLkNvbG9yKCkucmFuZ2UoKVswXSkscn1yZXR1cm4gdC5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgcFVlLlByb3h5RHJhd2VyKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBkVWUuUmVjdGFuZ2xlU1ZHRHJhd2VyfSxmdW5jdGlvbihyKXtyZXR1cm4gbmV3IGZVZS5SZWN0YW5nbGVDYW52YXNEcmF3ZXIocil9KX0sdC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPWUucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLGk9dUIuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG89blt0Ll9YMl9LRVldLGE9dUIuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLHM9blt0Ll9ZMl9LRVldLGw9dGhpcy54KCkuc2NhbGUsYz10aGlzLnkoKS5zY2FsZTtyZXR1cm4gbyE9bnVsbD8obi53aWR0aD1mdW5jdGlvbih1LGgsZil7cmV0dXJuIE1hdGguYWJzKG8odSxoLGYpLWkodSxoLGYpKX0sbi54PWZ1bmN0aW9uKHUsaCxmKXtyZXR1cm4gTWF0aC5taW4obyh1LGgsZiksaSh1LGgsZikpfSk6KG4ud2lkdGg9ZnVuY3Rpb24odSxoLGYpe3JldHVybiByLl9yZWN0YW5nbGVXaWR0aChsKX0sbi54PWZ1bmN0aW9uKHUsaCxmKXtyZXR1cm4gaSh1LGgsZiktLjUqbi53aWR0aCh1LGgsZil9KSxzIT1udWxsPyhuLmhlaWdodD1mdW5jdGlvbih1LGgsZil7cmV0dXJuIE1hdGguYWJzKHModSxoLGYpLWEodSxoLGYpKX0sbi55PWZ1bmN0aW9uKHUsaCxmKXtyZXR1cm4gTWF0aC5tYXgocyh1LGgsZiksYSh1LGgsZikpLW4uaGVpZ2h0KHUsaCxmKX0pOihuLmhlaWdodD1mdW5jdGlvbih1LGgsZil7cmV0dXJuIHIuX3JlY3RhbmdsZVdpZHRoKGMpfSxuLnk9ZnVuY3Rpb24odSxoLGYpe3JldHVybiBhKHUsaCxmKS0uNSpuLmhlaWdodCh1LGgsZil9KSxkZWxldGUgblt0Ll9YMl9LRVldLGRlbGV0ZSBuW3QuX1kyX0tFWV0sbn0sdC5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoInJlY3RhbmdsZXMiKX1dfSx0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT0ieDIiP2UucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsIngiKTpyPT09InkyIj9lLnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLCJ5Iik6ZS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcyxyKX0sdC5wcm90b3R5cGUueD1mdW5jdGlvbihyLG4saSl7aWYocj09bnVsbClyZXR1cm4gZS5wcm90b3R5cGUueC5jYWxsKHRoaXMpO2lmKG49PW51bGw/ZS5wcm90b3R5cGUueC5jYWxsKHRoaXMscik6ZS5wcm90b3R5cGUueC5jYWxsKHRoaXMscixuLGkpLG4hPW51bGwpe3ZhciBvPXRoaXMueDIoKSxhPW8mJm8uYWNjZXNzb3I7YSE9bnVsbCYmdGhpcy5fYmluZFByb3BlcnR5KHQuX1gyX0tFWSxhLG4sby5wb3N0U2NhbGUpfXJldHVybiBuIGluc3RhbmNlb2YgY0IuQ2F0ZWdvcnkmJm4uaW5uZXJQYWRkaW5nKDApLm91dGVyUGFkZGluZygwKSx0aGlzfSx0LnByb3RvdHlwZS54Mj1mdW5jdGlvbihyLG4pe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQuX1gyX0tFWSk7dmFyIGk9dGhpcy54KCksbz1pJiZpLnNjYWxlO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkodC5fWDJfS0VZLHIsbyxuKSx0aGlzLnJlbmRlcigpLHRoaXN9LHQucHJvdG90eXBlLnk9ZnVuY3Rpb24ocixuLGkpe2lmKHI9PW51bGwpcmV0dXJuIGUucHJvdG90eXBlLnkuY2FsbCh0aGlzKTtpZihuPT1udWxsP2UucHJvdG90eXBlLnkuY2FsbCh0aGlzLHIpOmUucHJvdG90eXBlLnkuY2FsbCh0aGlzLHIsbixpKSxuIT1udWxsKXt2YXIgbz10aGlzLnkyKCksYT1vJiZvLmFjY2Vzc29yO2EhPW51bGwmJnRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9ZMl9LRVksYSxuLG8ucG9zdFNjYWxlKX1yZXR1cm4gbiBpbnN0YW5jZW9mIGNCLkNhdGVnb3J5JiZuLmlubmVyUGFkZGluZygwKS5vdXRlclBhZGRpbmcoMCksdGhpc30sdC5wcm90b3R5cGUueTI9ZnVuY3Rpb24ocixuKXtpZihyPT1udWxsKXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0Ll9ZMl9LRVkpO3ZhciBpPXRoaXMueSgpLG89aSYmaS5zY2FsZTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KHQuX1kyX0tFWSxyLG8sbiksdGhpcy5yZW5kZXIoKSx0aGlzfSx0LnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3JldHVybiB0aGlzLmVudGl0aWVzKCkuZmlsdGVyKGZ1bmN0aW9uKGkpe3ZhciBvPWkuZGF0dW0sYT1pLmluZGV4LHM9aS5kYXRhc2V0LGw9bi54KG8sYSxzKSxjPW4ueShvLGEscyksdT1uLndpZHRoKG8sYSxzKSxoPW4uaGVpZ2h0KG8sYSxzKTtyZXR1cm4gbDw9ci54JiZyLng8PWwrdSYmYzw9ci55JiZyLnk8PWMraH0pfSx0LnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHIpe3ZhciBuPXIuZGF0dW0saT1yLmluZGV4LG89ci5kYXRhc2V0O3JldHVybiB0aGlzLl9lbnRpdHlCQm94KG4saSxvLHRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpKX0sdC5wcm90b3R5cGUuX2VudGl0eUJCb3g9ZnVuY3Rpb24ocixuLGksbyl7cmV0dXJue3g6by54KHIsbixpKSx5Om8ueShyLG4saSksd2lkdGg6by53aWR0aChyLG4saSksaGVpZ2h0Om8uaGVpZ2h0KHIsbixpKX19LHQucHJvdG90eXBlLmxhYmVsPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX2xhYmVsOih0aGlzLl9sYWJlbD1yLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLmxhYmVsc0VuYWJsZWQ9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fbGFiZWxzRW5hYmxlZDoodGhpcy5fbGFiZWxzRW5hYmxlZD1yLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgcj1lLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyk7cmV0dXJuIHRoaXMueDIoKSE9bnVsbCYmKHIueDI9dUIuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSksdGhpcy55MigpIT1udWxsJiYoci55Mj11Qi5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkyKCkpKSxyfSx0LnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbihyLG4saSl7dmFyIG89dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYT1vLngocixuLGkpLHM9by55KHIsbixpKSxsPW8ud2lkdGgocixuLGkpLGM9by5oZWlnaHQocixuLGkpLHU9YStsLzIsaD1zK2MvMjtyZXR1cm57eDp1LHk6aH19LHQucHJvdG90eXBlLl9yZWN0YW5nbGVXaWR0aD1mdW5jdGlvbihyKXtpZihyIGluc3RhbmNlb2YgY0IuQ2F0ZWdvcnkpcmV0dXJuIHIucmFuZ2VCYW5kKCk7dmFyIG49cj09PXRoaXMueCgpLnNjYWxlP3RoaXMueCgpLmFjY2Vzc29yOnRoaXMueSgpLmFjY2Vzc29yLGk9dVVlLnNldChOYy5BcnJheS5mbGF0dGVuKHRoaXMuZGF0YXNldHMoKS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMuZGF0YSgpLm1hcChmdW5jdGlvbih1LGgpe3JldHVybiBuKHUsaCxjKS52YWx1ZU9mKCl9KX0pKSkudmFsdWVzKCkubWFwKGZ1bmN0aW9uKGMpe3JldHVybitjfSksbz1OYy5NYXRoLm1pbihpLDApLGE9TmMuTWF0aC5tYXgoaSwwKSxzPXIuc2NhbGUobyksbD1yLnNjYWxlKGEpO3JldHVybihsLXMpL01hdGguYWJzKGEtbyl9LHQucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHI9bmV3IE5jLk1hcCxuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgbz1pLmRhdGEoKS5tYXAoZnVuY3Rpb24oYSxzKXt2YXIgbD1OYy5NYXRoLmlzVmFsaWROdW1iZXIobi54KGEscyxpKSkmJk5jLk1hdGguaXNWYWxpZE51bWJlcihuLnkoYSxzLGkpKSYmTmMuTWF0aC5pc1ZhbGlkTnVtYmVyKG4ud2lkdGgoYSxzLGkpKSYmTmMuTWF0aC5pc1ZhbGlkTnVtYmVyKG4uaGVpZ2h0KGEscyxpKSk7cmV0dXJuIGw/YTpudWxsfSk7ci5zZXQoaSxvKX0pLHJ9LHQucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24ocil7dmFyIG49dGhpczt0aGlzLl9yZW5kZXJBcmVhLnNlbGVjdEFsbCgiLmxhYmVsLWFyZWEiKS5yZW1vdmUoKSx0aGlzLl9sYWJlbHNFbmFibGVkJiZ0aGlzLmxhYmVsKCkhPW51bGwmJk5jLldpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2RyYXdMYWJlbHMoKX0scil9LHQucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihpLG8pe3JldHVybiByLl9kcmF3TGFiZWwobixpLG8pfSl9LHQucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24ocixuLGkpe2Zvcih2YXIgbz10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLHM9bmV3IE5hdC5TdmdDb250ZXh0KGEubm9kZSgpKSxsPW5ldyBOYXQuQ2FjaGVNZWFzdXJlcihzKSxjPW5ldyBOYXQuV3JpdGVyKGwscyksdT10aGlzLngoKS5zY2FsZS5yYW5nZSgpLGg9dGhpcy55KCkuc2NhbGUucmFuZ2UoKSxmPU1hdGgubWluLmFwcGx5KG51bGwsdSkscD1NYXRoLm1heC5hcHBseShudWxsLHUpLGQ9TWF0aC5taW4uYXBwbHkobnVsbCxoKSxnPU1hdGgubWF4LmFwcGx5KG51bGwsaCksXz1yLmdldChuKSx5PV8ubGVuZ3RoLHg9MDt4PHk7eCsrKXt2YXIgYj1fW3hdO2lmKGIhPW51bGwpe3ZhciBTPSIiK3RoaXMubGFiZWwoKShiLHgsbiksQz1sLm1lYXN1cmUoUyksUD1vLngoYix4LG4pLGs9by55KGIseCxuKSxPPW8ud2lkdGgoYix4LG4pLEQ9by5oZWlnaHQoYix4LG4pO2lmKEMuaGVpZ2h0PD1EJiZDLndpZHRoPD1PKXt2YXIgQj0oTy1DLndpZHRoKS8yLEk9KEQtQy5oZWlnaHQpLzI7UCs9QixrKz1JO3ZhciBMPXttaW46UCxtYXg6UCtDLndpZHRofSxSPXttaW46ayxtYXg6aytDLmhlaWdodH07aWYoTC5taW48Znx8TC5tYXg+cHx8Ui5taW48ZHx8Ui5tYXg+Z3x8dGhpcy5fb3ZlcmxheUxhYmVsKEwsUix4LGkscikpY29udGludWU7dmFyIEY9by5maWxsKGIseCxuKSx6PU5jLkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsRikqMS42PE5jLkNvbG9yLmNvbnRyYXN0KCJibGFjayIsRiksVT1hLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK1ArIiwiK2srIikiKSxXPXo/ImRhcmstbGFiZWwiOiJsaWdodC1sYWJlbCI7VS5jbGFzc2VkKFcsITApLGMud3JpdGUoUyxDLndpZHRoLEMuaGVpZ2h0LHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSxVLm5vZGUoKSl9fX19LHQucHJvdG90eXBlLl9vdmVybGF5TGFiZWw9ZnVuY3Rpb24ocixuLGksbyxhKXtmb3IodmFyIHM9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksbD10aGlzLmRhdGFzZXRzKCksYz1vO2M8bC5sZW5ndGg7YysrKWZvcih2YXIgdT1sW2NdLGg9YS5nZXQodSksZj1oLmxlbmd0aCxwPWM9PT1vP2krMTowO3A8ZjtwKyspaWYoTmMuRE9NLmludGVyc2VjdHNCQm94KHIsbix0aGlzLl9lbnRpdHlCQm94KGhbcF0scCx1LHMpKSlyZXR1cm4hMDtyZXR1cm4hMX0sdC5fWDJfS0VZPSJ4MiIsdC5fWTJfS0VZPSJ5MiIsdH0obVVlLlhZUGxvdCk7RGF0LlJlY3RhbmdsZT1nVWV9KTt2YXIgX0t0PUgoQmF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShCYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBfVWU9KGRlKCksVXQocGUpKSxPYXQ9Z2woKSx5VWU9RnUoKSx2VWU9V0YoKSx4VWU9VnUoKSxnS3Q9eWF0KCksYlVlPUlmKCksd1VlPUJ2KCksU1VlPUxzKCksemF0PUZlKCksRmF0PVBTKCkseGw9ZXMoKSxNVWU9SHYoKSxFVWU9ZnVuY3Rpb24oZSl7X1VlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7ci5fbGFiZWxGb3JtYXR0ZXI9eVVlLmlkZW50aXR5KCksci5fbGFiZWxzRW5hYmxlZD0hMSxyLmFkZENsYXNzKCJzY2F0dGVyLXBsb3QiKTt2YXIgbj1uZXcgYlVlLkVhc2luZztuLnN0YXJ0RGVsYXkoNSksbi5zdGVwRHVyYXRpb24oMjUwKSxuLm1heFRvdGFsRHVyYXRpb24oeGwuUGxvdC5fQU5JTUFUSU9OX01BWF9EVVJBVElPTiksci5hbmltYXRvcihGYXQuQW5pbWF0b3IuTUFJTixuKSxyLmF0dHIoIm9wYWNpdHkiLC42KSxyLmF0dHIoImZpbGwiLG5ldyBTVWUuQ29sb3IoKS5yYW5nZSgpWzBdKSxyLnNpemUoNik7dmFyIGk9dlVlLmNpcmNsZSgpO3JldHVybiByLnN5bWJvbChmdW5jdGlvbigpe3JldHVybiBpfSksci5fbGFiZWxDb25maWc9bmV3IHphdC5NYXAscn1yZXR1cm4gdC5wcm90b3R5cGUuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXM9ZnVuY3Rpb24ocil7dmFyIG49dGhpcyxpPWUucHJvdG90eXBlLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzLmNhbGwodGhpcyxyKTtyZXR1cm4gaS5tYXAoZnVuY3Rpb24obyl7dmFyIGE9eGwuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5zaXplKCkpKG8uZGF0dW0sby5pbmRleCxvLmRhdGFzZXQpO3JldHVybiBvLmRpYW1ldGVyPWEsb30pfSx0LnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXM7cmV0dXJuIG5ldyB4VWUuUHJveHlEcmF3ZXIoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGdLdC5TeW1ib2xTVkdEcmF3ZXJ9LGZ1bmN0aW9uKGkpe3JldHVybiBuZXcgd1VlLkNhbnZhc0RyYXdlcihpLGdLdC5tYWtlU3ltYm9sQ2FudmFzRHJhd1N0ZXAocixmdW5jdGlvbigpe3JldHVybiB4bC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihuLnN5bWJvbCgpKX0sZnVuY3Rpb24oKXtyZXR1cm4geGwuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi5zaXplKCkpfSkpfSl9LHQucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24ocixuKXtyZXR1cm4gcj09bnVsbD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0Ll9TSVpFX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9TSVpFX0tFWSxyLG4pLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLnN5bWJvbD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0Ll9TWU1CT0xfS0VZKToodGhpcy5fcHJvcGVydHlCaW5kaW5ncy5zZXQodC5fU1lNQk9MX0tFWSx7YWNjZXNzb3I6cn0pLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciByPVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksaT14bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKTtuLmQ9ZnVuY3Rpb24obyxhLHMpe3JldHVybiBpKG8sYSxzKSgwKShudWxsKX0sci5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6bixhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihGYXQuQW5pbWF0b3IuUkVTRVQpfSl9cmV0dXJuIHIucHVzaCh7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKEZhdC5BbmltYXRvci5NQUlOKX0pLHJ9LHQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgcj1lLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksbj14bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksaT14bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIHIueD1uLHIueT1pLHIudHJhbnNmb3JtPWZ1bmN0aW9uKG8sYSxzKXtyZXR1cm4idHJhbnNsYXRlKCIrbihvLGEscykrIiwiK2kobyxhLHMpKyIpIn0sci5kPXRoaXMuX2NvbnN0cnVjdFN5bWJvbEdlbmVyYXRvcigpLHJ9LHQucHJvdG90eXBlLl9jb25zdHJ1Y3RTeW1ib2xHZW5lcmF0b3I9ZnVuY3Rpb24oKXt2YXIgcj14bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKSxuPXhsLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2l6ZSgpKTtyZXR1cm4gZnVuY3Rpb24oaSxvLGEpe3JldHVybiByKGksbyxhKShuKGksbyxhKSkobnVsbCl9fSx0LnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHIpe3JldHVybnt4OnIucG9zaXRpb24ueC1yLmRpYW1ldGVyLzIseTpyLnBvc2l0aW9uLnktci5kaWFtZXRlci8yLHdpZHRoOnIuZGlhbWV0ZXIsaGVpZ2h0OnIuZGlhbWV0ZXJ9fSx0LnByb3RvdHlwZS5fZW50aXR5VmlzaWJsZU9uUGxvdD1mdW5jdGlvbihyLG4pe3ZhciBpPXttaW46bi50b3BMZWZ0LngsbWF4Om4uYm90dG9tUmlnaHQueH0sbz17bWluOm4udG9wTGVmdC55LG1heDpuLmJvdHRvbVJpZ2h0Lnl9LGE9dGhpcy5fZW50aXR5Qm91bmRzKHIpO3JldHVybiB6YXQuRE9NLmludGVyc2VjdHNCQm94KGksbyxhKX0sdC5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbihyKXt2YXIgbj14bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksaT14bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksbz14bC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSk7cmV0dXJuIHRoaXMuZW50aXRpZXMoKS5maWx0ZXIoZnVuY3Rpb24oYSl7dmFyIHM9YS5kYXR1bSxsPWEuaW5kZXgsYz1hLmRhdGFzZXQsdT1uKHMsbCxjKSxoPWkocyxsLGMpLGY9byhzLGwsYyk7cmV0dXJuIHUtZi8yPD1yLngmJnIueDw9dStmLzImJmgtZi8yPD1yLnkmJnIueTw9aCtmLzJ9KX0sdC5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXIsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LHQucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24ocil7dmFyIG49ZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMsciksaT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQodC5fTEFCRUxfQVJFQV9DTEFTUywhMCksbz1uZXcgT2F0LlN2Z0NvbnRleHQoaS5ub2RlKCkpLGE9bmV3IE9hdC5DYWNoZU1lYXN1cmVyKG8pLHM9bmV3IE9hdC5Xcml0ZXIoYSxvKTtyZXR1cm4gdGhpcy5fbGFiZWxDb25maWcuc2V0KHIse2xhYmVsQXJlYTppLG1lYXN1cmVyOmEsd3JpdGVyOnN9KSxufSx0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKHIpe2UucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLHIpO3ZhciBuPXRoaXMuX2xhYmVsQ29uZmlnLmdldChyKTtuIT1udWxsJiYobi5sYWJlbEFyZWEucmVtb3ZlKCksdGhpcy5fbGFiZWxDb25maWcuZGVsZXRlKHIpKX0sdC5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbihyKXt2YXIgbj10aGlzO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3JldHVybiBuLl9sYWJlbENvbmZpZy5nZXQoaSkubGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmemF0LldpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2RyYXdMYWJlbHMoKX0scil9LHQucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPXRoaXMuX2dldERhdGFUb0RyYXcoKSxpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKG8pe2Zvcih2YXIgYT1uLmdldChvKSxzPWEubGVuZ3RoLGw9MDtsPHM7bCsrKXt2YXIgYz1hW2xdO2MhPW51bGwmJnIuX2RyYXdMYWJlbChjLGwsbyxpKX19KX0sdC5wcm90b3R5cGUuX2RyYXdMYWJlbD1mdW5jdGlvbihyLG4saSxvKXtpZihyLmxhYmVsIT1udWxsKXt2YXIgYT10aGlzLl9sYWJlbENvbmZpZy5nZXQoaSkscz1hLmxhYmVsQXJlYSxsPWEubWVhc3VyZXIsYz1hLndyaXRlcix1PXt4Om8ueChyLG4saSkseTpvLnkocixuLGkpfSxoPXhsLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2l6ZSgpKSxmPWgocixuLGkpLHA9dGhpcy5fbGFiZWxGb3JtYXR0ZXIoci5sYWJlbCxyLG4saSksZD1sLm1lYXN1cmUocCksZz10aGlzLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXModSxmLGQpLF89Zy5jb250YWluZXJEaW1lbnNpb25zLHk9Zy5sYWJlbENvbnRhaW5lck9yaWdpbix4PWcubGFiZWxPcmlnaW4sYj1nLmFsaWdubWVudCxTPXRoaXMuX2NyZWF0ZUxhYmVsQ29udGFpbmVyKHMseSx4LGQpLEM9e3hBbGlnbjpiLngseUFsaWduOmIueX07Yy53cml0ZShwLF8ud2lkdGgsXy5oZWlnaHQsQyxTLm5vZGUoKSl9fSx0LnByb3RvdHlwZS5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzPWZ1bmN0aW9uKHIsbixpKXt2YXIgbz1uPGkuaGVpZ2h0P24vMit0Ll9MQUJFTF9NQVJHSU5fRlJPTV9CVUJCTEU6MDtyZXR1cm57Y29udGFpbmVyRGltZW5zaW9uczp7d2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9LGxhYmVsQ29udGFpbmVyT3JpZ2luOnt4OnIueC1pLndpZHRoLzIseTpyLnktaS5oZWlnaHQvMitvfSxsYWJlbE9yaWdpbjp7eDpyLngseTpyLnl9LGFsaWdubWVudDp7eDoiY2VudGVyIix5OiJjZW50ZXIifX19LHQucHJvdG90eXBlLl9jcmVhdGVMYWJlbENvbnRhaW5lcj1mdW5jdGlvbihyLG4saSxvKXt2YXIgYT1yLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24ueCsiLCAiK24ueSsiKSIpO3JldHVybiBhLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApLGF9LHQuX1NJWkVfS0VZPSJzaXplIix0Ll9TWU1CT0xfS0VZPSJzeW1ib2wiLHQuX0xBQkVMX0FSRUFfQ0xBU1M9InNjYXR0ZXItbGFiZWwtdGV4dC1hcmVhIix0Ll9MQUJFTF9NQVJHSU5fRlJPTV9CVUJCTEU9MTUsdH0oTVVlLlhZUGxvdCk7QmF0LlNjYXR0ZXI9RVVlfSk7dmFyIHlLdD1IKEhhdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoSGF0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgVFVlPShkZSgpLFV0KHBlKSksQ1VlPUlmKCksQVVlPVZ1KCksUFVlPWdhdCgpLElVZT1McygpLExVZT1FRigpLElTPWVzKCksa1VlPUh2KCksUlVlPWZ1bmN0aW9uKGUpe1RVZS5fX2V4dGVuZHModCxlKTtmdW5jdGlvbiB0KCl7dmFyIHI9ZS5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKCJzZWdtZW50LXBsb3QiKSxyLmF0dHIoInN0cm9rZSIsbmV3IElVZS5Db2xvcigpLnJhbmdlKClbMF0pLHIuYXR0cigic3Ryb2tlLXdpZHRoIiwiMnB4Iikscn1yZXR1cm4gdC5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgQVVlLlByb3h5RHJhd2VyKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQVWUuU2VnbWVudFNWR0RyYXdlcn0sZnVuY3Rpb24oKXtyZXR1cm4gTFVlLndhcm4oImNhbnZhcyByZW5kZXJlciBpcyBub3Qgc3VwcG9ydGVkIG9uIFNlZ21lbnQgUGxvdCEiKSxudWxsfSl9LHQucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOm5ldyBDVWUuTnVsbH1dfSx0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT0ieDIiP2UucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsIngiKTpyPT09InkyIj9lLnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLCJ5Iik6ZS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcyxyKX0sdC5wcm90b3R5cGUueD1mdW5jdGlvbihyLG4pe2lmKHI9PW51bGwpcmV0dXJuIGUucHJvdG90eXBlLnguY2FsbCh0aGlzKTtpZihuPT1udWxsKWUucHJvdG90eXBlLnguY2FsbCh0aGlzLHIpO2Vsc2V7ZS5wcm90b3R5cGUueC5jYWxsKHRoaXMscixuKTt2YXIgaT10aGlzLngyKCksbz1pJiZpLmFjY2Vzc29yO28hPW51bGwmJnRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9YMl9LRVksbyxuKX1yZXR1cm4gdGhpc30sdC5wcm90b3R5cGUueDI9ZnVuY3Rpb24ocil7aWYocj09bnVsbClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQodC5fWDJfS0VZKTt2YXIgbj10aGlzLngoKSxpPW4mJm4uc2NhbGU7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9YMl9LRVkscixpKSx0aGlzLnJlbmRlcigpLHRoaXN9LHQucHJvdG90eXBlLnk9ZnVuY3Rpb24ocixuKXtpZihyPT1udWxsKXJldHVybiBlLnByb3RvdHlwZS55LmNhbGwodGhpcyk7aWYobj09bnVsbCllLnByb3RvdHlwZS55LmNhbGwodGhpcyxyKTtlbHNle2UucHJvdG90eXBlLnkuY2FsbCh0aGlzLHIsbik7dmFyIGk9dGhpcy55MigpLG89aSYmaS5hY2Nlc3NvcjtvIT1udWxsJiZ0aGlzLl9iaW5kUHJvcGVydHkodC5fWTJfS0VZLG8sbil9cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnkyPWZ1bmN0aW9uKHIpe2lmKHI9PW51bGwpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQuX1kyX0tFWSk7dmFyIG49dGhpcy55KCksaT1uJiZuLnNjYWxlO3JldHVybiB0aGlzLl9iaW5kUHJvcGVydHkodC5fWTJfS0VZLHIsaSksdGhpcy5yZW5kZXIoKSx0aGlzfSx0LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIHI9ZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO3JldHVybiByLngxPUlTLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyLngyPXRoaXMueDIoKT09bnVsbD9JUy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSk6SVMuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSxyLnkxPUlTLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxyLnkyPXRoaXMueTIoKT09bnVsbD9JUy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk6SVMuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSxyfSx0LnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuZW50aXR5TmVhcmVzdChyKTtyZXR1cm4gbiE9bnVsbD9bbl06W119LHQucHJvdG90eXBlLmVudGl0aWVzSW49ZnVuY3Rpb24ocixuKXt2YXIgaSxvO2lmKG49PW51bGwpe3ZhciBhPXI7aT17bWluOmEudG9wTGVmdC54LG1heDphLmJvdHRvbVJpZ2h0Lnh9LG89e21pbjphLnRvcExlZnQueSxtYXg6YS5ib3R0b21SaWdodC55fX1lbHNlIGk9cixvPW47cmV0dXJuIHRoaXMuX2VudGl0aWVzSW50ZXJzZWN0aW5nKGksbyl9LHQucHJvdG90eXBlLl9lbnRpdGllc0ludGVyc2VjdGluZz1mdW5jdGlvbihyLG4pe2Zvcih2YXIgaT1bXSxvPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGE9dGhpcy5lbnRpdGllcygpLHM9YS5sZW5ndGgsbD0wO2w8cztsKyspe3ZhciBjPWFbbF07dGhpcy5fbGluZUludGVyc2VjdHNCb3goYyxyLG4sbykmJmkucHVzaChjKX1yZXR1cm4gaX0sdC5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzQm94PWZ1bmN0aW9uKHIsbixpLG8pe3ZhciBhPXRoaXMscz1vLngxKHIuZGF0dW0sci5pbmRleCxyLmRhdGFzZXQpLGw9by54MihyLmRhdHVtLHIuaW5kZXgsci5kYXRhc2V0KSxjPW8ueTEoci5kYXR1bSxyLmluZGV4LHIuZGF0YXNldCksdT1vLnkyKHIuZGF0dW0sci5pbmRleCxyLmRhdGFzZXQpO2lmKG4ubWluPD1zJiZzPD1uLm1heCYmaS5taW48PWMmJmM8PWkubWF4fHxuLm1pbjw9bCYmbDw9bi5tYXgmJmkubWluPD11JiZ1PD1pLm1heClyZXR1cm4hMDt2YXIgaD17eDpzLHk6Y30sZj17eDpsLHk6dX0scD1be3g6bi5taW4seTppLm1pbn0se3g6bi5taW4seTppLm1heH0se3g6bi5tYXgseTppLm1heH0se3g6bi5tYXgseTppLm1pbn1dLGQ9cC5maWx0ZXIoZnVuY3Rpb24oZyxfKXtyZXR1cm4gXyE9PTA/YS5fbGluZUludGVyc2VjdHNTZWdtZW50KGgsZixnLHBbXy0xXSkmJmEuX2xpbmVJbnRlcnNlY3RzU2VnbWVudChnLHBbXy0xXSxoLGYpOiExfSk7cmV0dXJuIGQubGVuZ3RoPjB9LHQucHJvdG90eXBlLl9saW5lSW50ZXJzZWN0c1NlZ21lbnQ9ZnVuY3Rpb24ocixuLGksbyl7dmFyIGE9ZnVuY3Rpb24ocyxsLGMpe3JldHVybihsLngtcy54KSooYy55LWwueSktKGwueS1zLnkpKihjLngtbC54KX07cmV0dXJuIGEocixuLGkpKmEocixuLG8pPDB9LHQuX1gyX0tFWT0ieDIiLHQuX1kyX0tFWT0ieTIiLHR9KGtVZS5YWVBsb3QpO0hhdC5TZWdtZW50PVJVZX0pO3ZhciBiS3Q9SChWYXQ9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KFZhdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIE5VZT0oZGUoKSxVdChwZSkpLHZLdD0oRXIoKSxVdChNcikpLERVZT1JZigpLHhLdD1UUygpLHQwPUZlKCksT1VlPUVhdCgpLHpVZT1lcygpLEZVZT1mdW5jdGlvbihlKXtOVWUuX19leHRlbmRzKHQsZSk7ZnVuY3Rpb24gdCgpe3ZhciByPWUuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fc3RhY2tpbmdSZXN1bHQ9eEt0Lm1lbVRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHIuZGF0YXNldHMoKX0sZnVuY3Rpb24oKXtyZXR1cm4gci54KCkuYWNjZXNzb3J9LGZ1bmN0aW9uKCl7cmV0dXJuIHIueSgpLmFjY2Vzc29yfSxmdW5jdGlvbigpe3JldHVybiByLl9zdGFja2luZ09yZGVyfSxmdW5jdGlvbihuLGksbyxhKXtyZXR1cm4gdDAuU3RhY2tpbmcuc3RhY2sobixpLG8sYSl9KSxyLl9zdGFja2VkRXh0ZW50PXhLdC5tZW1UaHVuayhyLl9zdGFja2luZ1Jlc3VsdCxmdW5jdGlvbigpe3JldHVybiByLngoKS5hY2Nlc3Nvcn0sZnVuY3Rpb24oKXtyZXR1cm4gci5fZmlsdGVyRm9yUHJvcGVydHkoInkiKX0sZnVuY3Rpb24obixpLG8pe3JldHVybiB0MC5TdGFja2luZy5zdGFja2VkRXh0ZW50KG4saSxvKX0pLHIuX2Jhc2VsaW5lVmFsdWU9MCxyLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsci5hZGRDbGFzcygic3RhY2tlZC1hcmVhLXBsb3QiKSxyLl9iYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5bci5fYmFzZWxpbmVWYWx1ZV19LHIuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQoITEpLHJ9cmV0dXJuIHQucHJvdG90eXBlLmNyb3BwZWRSZW5kZXJpbmdFbmFibGVkPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP2UucHJvdG90eXBlLmNyb3BwZWRSZW5kZXJpbmdFbmFibGVkLmNhbGwodGhpcyk6cj8odDAuV2luZG93Lndhcm4oIldhcm5pbmc6IFN0YWNrZWQgQXJlYSBQbG90IGRvZXMgbm90IHN1cHBvcnQgY3JvcHBlZCByZW5kZXJpbmcuIiksdGhpcyk6ZS5wcm90b3R5cGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQuY2FsbCh0aGlzLHIpfSx0LnByb3RvdHlwZS5fZ2V0QW5pbWF0b3I9ZnVuY3Rpb24ocil7cmV0dXJuIG5ldyBEVWUuTnVsbH0sdC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fYmFzZWxpbmU9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApfSx0LnByb3RvdHlwZS54PWZ1bmN0aW9uKHIsbil7cmV0dXJuIHI9PW51bGw/ZS5wcm90b3R5cGUueC5jYWxsKHRoaXMpOihuPT1udWxsP2UucHJvdG90eXBlLnguY2FsbCh0aGlzLHIpOmUucHJvdG90eXBlLnguY2FsbCh0aGlzLHIsbiksdGhpcy5fY2hlY2tTYW1lRG9tYWluKCksdGhpcyl9LHQucHJvdG90eXBlLnk9ZnVuY3Rpb24ocixuKXtyZXR1cm4gcj09bnVsbD9lLnByb3RvdHlwZS55LmNhbGwodGhpcyk6KG49PW51bGw/ZS5wcm90b3R5cGUueS5jYWxsKHRoaXMscik6ZS5wcm90b3R5cGUueS5jYWxsKHRoaXMscixuKSx0aGlzLl9jaGVja1NhbWVEb21haW4oKSx0aGlzKX0sdC5wcm90b3R5cGUueU9mZnNldD1mdW5jdGlvbihyLG4pe3ZhciBpPXRoaXMuX3N0YWNraW5nUmVzdWx0KCk7aWYoaSE9bnVsbCl7dmFyIG89aS5nZXQocik7aWYobyE9bnVsbCl7dmFyIGE9by5nZXQoU3RyaW5nKG4pKTtpZihhIT1udWxsKXJldHVybiBhLm9mZnNldH19fSx0LnByb3RvdHlwZS5zdGFja2luZ09yZGVyPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX3N0YWNraW5nT3JkZXI6KHRoaXMuX3N0YWNraW5nT3JkZXI9cix0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKSx0aGlzKX0sdC5wcm90b3R5cGUuZG93bnNhbXBsaW5nRW5hYmxlZD1mdW5jdGlvbihyKXtyZXR1cm4gcj09bnVsbD9lLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkLmNhbGwodGhpcyk6KHQwLldpbmRvdy53YXJuKCJXYXJuaW5nOiBTdGFja2VkIEFyZWEgUGxvdCBkb2VzIG5vdCBzdXBwb3J0IGRvd25zYW1wbGluZyIpLHRoaXMpfSx0LnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy55KCkuc2NhbGUuc2NhbGUodGhpcy5fYmFzZWxpbmVWYWx1ZSksbj17eDE6MCx5MTpyLHgyOnRoaXMud2lkdGgoKSx5MjpyfTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLG4pfSx0LnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcy55KCksbj1yJiZyLnNjYWxlO24hPW51bGwmJihuLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSxuLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSl9LHQucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tTYW1lRG9tYWluKCksZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LHQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihyKXt2YXIgbj0ieSI7cmV0dXJuIHI9PT1uP1t0aGlzLl9zdGFja2VkRXh0ZW50KCldOmUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMscil9LHQucHJvdG90eXBlLl9jaGVja1NhbWVEb21haW49ZnVuY3Rpb24oKXtpZighIXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXt2YXIgcj10aGlzLmRhdGFzZXRzKCksbj10aGlzLngoKS5hY2Nlc3NvcixpPXIubWFwKGZ1bmN0aW9uKGEpe3JldHVybiB2S3Quc2V0KGEuZGF0YSgpLm1hcChmdW5jdGlvbihzLGwpe3JldHVybiB0MC5TdGFja2luZy5ub3JtYWxpemVLZXkobihzLGwsYSkpfSkpLnZhbHVlcygpfSksbz10Ll9kb21haW5LZXlzKHIsbik7aS5zb21lKGZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aCE9PW8ubGVuZ3RofSkmJnQwLldpbmRvdy53YXJuKCJ0aGUgZG9tYWlucyBhY3Jvc3MgdGhlIGRhdGFzZXRzIGFyZSBub3QgdGhlIHNhbWUuIFBsb3QgbWF5IHByb2R1Y2UgdW5pbnRlbmRlZCBiZWhhdmlvci4iKX19LHQuX2RvbWFpbktleXM9ZnVuY3Rpb24ocixuKXt2YXIgaT12S3Quc2V0KCk7cmV0dXJuIHIuZm9yRWFjaChmdW5jdGlvbihvKXtmb3IodmFyIGE9by5kYXRhKCkscz1hLmxlbmd0aCxsPTA7bDxzO2wrKyl7dmFyIGM9YVtsXTtpLmFkZChuKGMsbCxvKSl9fSksaS52YWx1ZXMoKX0sdC5wcm90b3R5cGUuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIHI9dGhpcyxuPXpVZS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksaT10aGlzLnkoKS5hY2Nlc3NvcixvPXRoaXMueCgpLmFjY2Vzc29yLGE9ZnVuY3Rpb24odSxoLGYpe3JldHVybiB0MC5TdGFja2luZy5ub3JtYWxpemVLZXkobyh1LGgsZikpfSxzPXRoaXMuX3N0YWNraW5nUmVzdWx0KCksbD1mdW5jdGlvbih1LGgsZil7dmFyIHA9K2kodSxoLGYpLGQ9cy5nZXQoZikuZ2V0KGEodSxoLGYpKS5vZmZzZXQ7cmV0dXJuIHIueSgpLnNjYWxlLnNjYWxlKHArZCl9LGM9ZnVuY3Rpb24odSxoLGYpe3ZhciBwPXMuZ2V0KGYpLmdldChhKHUsaCxmKSkub2Zmc2V0O3JldHVybiByLnkoKS5zY2FsZS5zY2FsZShwKX07cmV0dXJuW24sbCxjXX0sdC5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciByPWUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKSxuPXRoaXMuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCksaT1uWzBdLG89blsxXSxhPW5bMl07cmV0dXJuIHIuZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKGksbyxhKSxyfSx0LnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbihyLG4saSl7dmFyIG89ZS5wcm90b3R5cGUuX3BpeGVsUG9pbnQuY2FsbCh0aGlzLHIsbixpKSxhPXRoaXMueCgpLmFjY2Vzc29yKHIsbixpKSxzPXRoaXMueSgpLmFjY2Vzc29yKHIsbixpKSxsPXRoaXMueSgpLnNjYWxlLnNjYWxlKCtzK3RoaXMuX3N0YWNraW5nUmVzdWx0KCkuZ2V0KGkpLmdldCh0MC5TdGFja2luZy5ub3JtYWxpemVLZXkoYSkpLm9mZnNldCk7cmV0dXJue3g6by54LHk6bH19LHR9KE9VZS5BcmVhKTtWYXQuU3RhY2tlZEFyZWE9RlVlfSk7dmFyIFNLdD1IKEdhdD0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoR2F0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgQlVlPShkZSgpLFV0KHBlKSksVWF0PWdsKCksSFVlPUZ1KCksd0t0PVRTKCksaEI9RmUoKSxxYXQ9bTQoKSxWVWU9ZXMoKSxVVWU9ZnVuY3Rpb24oZSl7QlVlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQocil7cj09PXZvaWQgMCYmKHI9InZlcnRpY2FsIik7dmFyIG49ZS5jYWxsKHRoaXMscil8fHRoaXM7cmV0dXJuIG4uX2V4dHJlbWFGb3JtYXR0ZXI9SFVlLmlkZW50aXR5KCksbi5fc3RhY2tpbmdSZXN1bHQ9d0t0Lm1lbVRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZGF0YXNldHMoKX0sZnVuY3Rpb24oKXtyZXR1cm4gbi5wb3NpdGlvbigpLmFjY2Vzc29yfSxmdW5jdGlvbigpe3JldHVybiBuLmxlbmd0aCgpLmFjY2Vzc29yfSxmdW5jdGlvbigpe3JldHVybiBuLl9zdGFja2luZ09yZGVyfSxmdW5jdGlvbihpLG8sYSxzKXtyZXR1cm4gaEIuU3RhY2tpbmcuc3RhY2soaSxvLGEscyl9KSxuLl9zdGFja2VkRXh0ZW50PXdLdC5tZW1UaHVuayhuLl9zdGFja2luZ1Jlc3VsdCxmdW5jdGlvbigpe3JldHVybiBuLnBvc2l0aW9uKCkuYWNjZXNzb3J9LGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2ZpbHRlckZvclByb3BlcnR5KG4uX2lzVmVydGljYWw/InkiOiJ4Iil9LGZ1bmN0aW9uKGksbyxhKXtyZXR1cm4gaEIuU3RhY2tpbmcuc3RhY2tlZEV4dGVudChpLG8sYSl9KSxuLmFkZENsYXNzKCJzdGFja2VkLWJhci1wbG90Iiksbi5fc3RhY2tpbmdPcmRlcj0iYm90dG9tdXAiLG59cmV0dXJuIHQucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj1yLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS5leHRyZW1hRm9ybWF0dGVyPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MD90aGlzLl9leHRyZW1hRm9ybWF0dGVyOih0aGlzLl9leHRyZW1hRm9ybWF0dGVyPXIsdGhpcy5yZW5kZXIoKSx0aGlzKX0sdC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fbGFiZWxBcmVhPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZChxYXQuQmFyLl9MQUJFTF9BUkVBX0NMQVNTLCEwKTt2YXIgcj1uZXcgVWF0LlN2Z0NvbnRleHQodGhpcy5fbGFiZWxBcmVhLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IFVhdC5DYWNoZU1lYXN1cmVyKHIpLHRoaXMuX3dyaXRlcj1uZXcgVWF0LldyaXRlcih0aGlzLl9tZWFzdXJlcixyKX0sdC5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgcj10aGlzO2UucHJvdG90eXBlLl9kcmF3TGFiZWxzLmNhbGwodGhpcyksdGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpO3ZhciBuPSt0aGlzLmJhc2VsaW5lVmFsdWUoKSxpPXRoaXMucG9zaXRpb24oKS5zY2FsZSxvPXRoaXMubGVuZ3RoKCkuc2NhbGUsYT1oQi5TdGFja2luZy5zdGFja2VkRXh0ZW50cyh0aGlzLl9zdGFja2luZ1Jlc3VsdCgpKSxzPWEubWF4aW11bUV4dGVudHMsbD1hLm1pbmltdW1FeHRlbnRzLGM9W10sdT1mdW5jdGlvbihmLHAsZCl7dmFyIGc9cC50b3BMZWZ0LF89Zy54LHk9Zy55LHg9cC5ib3R0b21SaWdodC54LXAudG9wTGVmdC54LGI9cC5ib3R0b21SaWdodC55LXAudG9wTGVmdC55LFM9ci5faXNWZXJ0aWNhbD94PmQ6Yj5kO2lmKCFTKXt2YXIgQz1yLl9sYWJlbEFyZWEuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrXysiLCAiK3krIikiKTtDLmNsYXNzZWQoInN0YWNrZWQtYmFyLWxhYmVsIiwhMCk7dmFyIFA9e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciJ9O3IuX3dyaXRlci53cml0ZShmLHgsYixQLEMubm9kZSgpKX1yZXR1cm4gU30saD1mdW5jdGlvbihmLHApe3ZhciBkPXIuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCksZz1yLndpZHRoKCksXz1yLmhlaWdodCgpO2YuZm9yRWFjaChmdW5jdGlvbih5KXtpZih5LmV4dGVudCE9PW4pe3ZhciB4PXIuZXh0cmVtYUZvcm1hdHRlcigpKHkuZXh0ZW50KSxiPXIuX21lYXN1cmVyLm1lYXN1cmUoeCksUz15LnN0YWNrZWREYXR1bSxDPVMub3JpZ2luYWxEYXR1bSxQPVMub3JpZ2luYWxJbmRleCxrPVMub3JpZ2luYWxEYXRhc2V0O2lmKCFyLl9pc0RhdHVtT25TY3JlZW4oZCxnLF8sQyxQLGspKXJldHVybjt2YXIgTz1WVWUuUGxvdC5fc2NhbGVkQWNjZXNzb3Ioci5hdHRyKHFhdC5CYXIuX0JBUl9USElDS05FU1NfS0VZKSkoQyxQLGspLEQ9by5zY2FsZSh5LmV4dGVudCksQj1yLl9nZXRQb3NpdGlvbkF0dHIoaS5zY2FsZSh5LmF4aXNWYWx1ZSksTykrTy8yLEk9ci5faXNWZXJ0aWNhbD97eDpCLHk6RH06e3g6RCx5OkJ9LEw9cChJLGIsTyksUj11KHgse3RvcExlZnQ6TCxib3R0b21SaWdodDp7eDpMLngrYi53aWR0aCx5OkwueStiLmhlaWdodH19LE8pO2MucHVzaChSKX19KX07aChzLGZ1bmN0aW9uKGYscCxkKXt2YXIgZz1yLl9pc1ZlcnRpY2FsP3Aud2lkdGg6cC5oZWlnaHQsXz1yLl9pc1ZlcnRpY2FsP3AuaGVpZ2h0OnAud2lkdGg7cmV0dXJue3g6ci5faXNWZXJ0aWNhbD9mLngtZy8yOmYueCt0Ll9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUix5OnIuX2lzVmVydGljYWw/Zi55LV86Zi55LWcvMn19KSxoKGwsZnVuY3Rpb24oZixwLGQpe3ZhciBnPXIuX2lzVmVydGljYWw/cC53aWR0aDpwLmhlaWdodCxfPXIuX2lzVmVydGljYWw/cC5oZWlnaHQ6cC53aWR0aDtyZXR1cm57eDpyLl9pc1ZlcnRpY2FsP2YueC1nLzI6Zi54LV8seTpyLl9pc1ZlcnRpY2FsP2YueSt0Ll9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUjpmLnktZy8yfX0pLGMuc29tZShmdW5jdGlvbihmKXtyZXR1cm4gZn0pJiZ0aGlzLl9sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCl9LHQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj1lLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxpPXRoaXMuX2lzVmVydGljYWw/InkiOiJ4IixvPXRoaXMubGVuZ3RoKCkuc2NhbGUsYT10aGlzLmxlbmd0aCgpLmFjY2Vzc29yLHM9dGhpcy5wb3NpdGlvbigpLmFjY2Vzc29yLGw9ZnVuY3Rpb24oZCxnLF8pe3JldHVybiBoQi5TdGFja2luZy5ub3JtYWxpemVLZXkocyhkLGcsXykpfSxjPXRoaXMuX3N0YWNraW5nUmVzdWx0KCksdT1mdW5jdGlvbihkLGcsXyl7cmV0dXJuIG8uc2NhbGUoYy5nZXQoXykuZ2V0KGwoZCxnLF8pKS5vZmZzZXQpfSxoPWZ1bmN0aW9uKGQsZyxfKXtyZXR1cm4gby5zY2FsZSgrYShkLGcsXykrYy5nZXQoXykuZ2V0KGwoZCxnLF8pKS5vZmZzZXQpfSxmPWZ1bmN0aW9uKGQsZyxfKXtyZXR1cm4gTWF0aC5hYnMoaChkLGcsXyktdShkLGcsXykpfTtuW3RoaXMuX2lzVmVydGljYWw/ImhlaWdodCI6IndpZHRoIl09Zjt2YXIgcD1mdW5jdGlvbihkLGcsXyl7cmV0dXJuK2EoZCxnLF8pPDA/dShkLGcsXyk6aChkLGcsXyl9O3JldHVybiBuW2ldPWZ1bmN0aW9uKGQsZyxfKXtyZXR1cm4gci5faXNWZXJ0aWNhbD9wKGQsZyxfKTpwKGQsZyxfKS1mKGQsZyxfKX0sbn0sdC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKHIpe3ZhciBuPXRoaXMuX2lzVmVydGljYWw/InkiOiJ4IjtyZXR1cm4gcj09PW4/W3RoaXMuX3N0YWNrZWRFeHRlbnQoKV06ZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5LmNhbGwodGhpcyxyKX0sdC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7ZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sdC5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVI9NSx0fShxYXQuQmFyKTtHYXQuU3RhY2tlZEJhcj1VVWV9KTt2YXIgTUt0PUgoV2F0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShXYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBxVWU9KGRlKCksVXQocGUpKSxHVWU9RmUoKSxXVWU9bTQoKSxZVWU9ZXMoKSxqVWU9ZnVuY3Rpb24oZSl7cVVlLl9fZXh0ZW5kcyh0LGUpO2Z1bmN0aW9uIHQoKXt2YXIgcj1lLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuX2Nvbm5lY3RvcnNFbmFibGVkPSExLHIuYWRkQ2xhc3MoIndhdGVyZmFsbC1wbG90Iikscn1yZXR1cm4gdC5wcm90b3R5cGUuY29ubmVjdG9yc0VuYWJsZWQ9ZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/dGhpcy5fY29ubmVjdG9yc0VuYWJsZWQ6KHRoaXMuX2Nvbm5lY3RvcnNFbmFibGVkPXIsdGhpcyl9LHQucHJvdG90eXBlLnRvdGFsPWZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQuX1RPVEFMX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eSh0Ll9UT1RBTF9LRVkscixudWxsKSx0aGlzKX0sdC5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbihyKXt2YXIgbj10aGlzO3RoaXMuX2Nvbm5lY3RvckFyZWEuc2VsZWN0QWxsKCJsaW5lIikucmVtb3ZlKCksdGhpcy5fY29ubmVjdG9yc0VuYWJsZWQmJkdVZS5XaW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBuLl9kcmF3Q29ubmVjdG9ycygpfSxyKX0sdC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihyKXt2YXIgbj1lLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxyKTtyZXR1cm4gdGhpcy5fY29ubmVjdG9yQXJlYT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQodC5fQ09OTkVDVE9SX0FSRUFfQ0xBU1MsITApLG59LHQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihyKXt2YXIgbj0ieSI7cmV0dXJuIHI9PT1uP1t0aGlzLl9leHRlbnRdOmUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMscil9LHQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciByPXRoaXMsbj1lLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxpPXRoaXMueSgpLnNjYWxlLG89WVVlLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMudG90YWwoKSksYT10aGlzLmF0dHIoInkiKTthPT1udWxsJiYobi55PWZ1bmN0aW9uKGwsYyx1KXt2YXIgaD1yLnkoKS5hY2Nlc3NvcihsLGMsdSksZj1vKGwsYyx1KTtpZihmKXJldHVybiBNYXRoLm1pbihpLnNjYWxlKGgpLGkuc2NhbGUoMCkpO3ZhciBwPXIuX3N1YnRvdGFsc1tjXTtpZihjPT09MClyZXR1cm4gaDwwP2kuc2NhbGUocC1oKTppLnNjYWxlKHApO3ZhciBkPXIuX3N1YnRvdGFsc1tjLTFdO3JldHVybiBwPmQ/aS5zY2FsZShwKTppLnNjYWxlKGQpfSk7dmFyIHM9dGhpcy5hdHRyKCJoZWlnaHQiKTtyZXR1cm4gcz09bnVsbCYmKG4uaGVpZ2h0PWZ1bmN0aW9uKGwsYyx1KXt2YXIgaD1vKGwsYyx1KSxmPXIueSgpLmFjY2Vzc29yKGwsYyx1KTtpZihoKXJldHVybiBNYXRoLmFicyhpLnNjYWxlKGYpLWkuc2NhbGUoMCkpO3ZhciBwPXIuX3N1YnRvdGFsc1tjXTtpZihjPT09MClyZXR1cm4gTWF0aC5hYnMoaS5zY2FsZShwKS1pLnNjYWxlKHAtZikpO3ZhciBkPXIuX3N1YnRvdGFsc1tjLTFdO3JldHVybiBNYXRoLmFicyhpLnNjYWxlKHApLWkuc2NhbGUoZCkpfSksbi5jbGFzcz1mdW5jdGlvbihsLGMsdSl7dmFyIGg9IiI7ci5hdHRyKCJjbGFzcyIpIT1udWxsJiYoaD1yLmF0dHIoImNsYXNzIikuYWNjZXNzb3IobCxjLHUpKyIgIik7dmFyIGY9byhsLGMsdSk7aWYoZilyZXR1cm4gaCt0Ll9CQVJfVE9UQUxfQ0xBU1M7dmFyIHA9ci55KCkuYWNjZXNzb3IobCxjLHUpO3JldHVybiBoKyhwPjA/dC5fQkFSX0dST1dUSF9DTEFTUzp0Ll9CQVJfREVDTElORV9DTEFTUyl9LG59LHQucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlU3VidG90YWxzKCksZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LHQucHJvdG90eXBlLl9jYWxjdWxhdGVTdWJ0b3RhbHNBbmRFeHRlbnQ9ZnVuY3Rpb24ocil7Zm9yKHZhciBuPU51bWJlci5NQVhfVkFMVUUsaT1OdW1iZXIuTUlOX1ZBTFVFLG89MCxhPSExLHM9ci5kYXRhKCksbD1zLmxlbmd0aCxjPTA7YzxsO2MrKyl7dmFyIHU9c1tjXSxoPXRoaXMueSgpLmFjY2Vzc29yKHUsYyxyKSxmPXRoaXMudG90YWwoKS5hY2Nlc3Nvcih1LGMscik7aWYoKCFmfHxjPT09MCkmJihvKz1oKSx0aGlzLl9zdWJ0b3RhbHMucHVzaChvKSxvPG4mJihuPW8pLG8+aSYmKGk9byksZiYmKGg8biYmKG49aCksaD5pJiYoaT1oKSksIWEmJmYpe2Zvcih2YXIgcD1oLW8sZD0wO2Q8dGhpcy5fc3VidG90YWxzLmxlbmd0aDtkKyspdGhpcy5fc3VidG90YWxzW2RdKz1wO2E9ITAsbys9cCxuKz1wLGkrPXB9fXRoaXMuX2V4dGVudD1bbixpXX0sdC5wcm90b3R5cGUuX2RyYXdDb25uZWN0b3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciByPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5kYXRhc2V0cygpWzBdLGk9MTtpPG4uZGF0YSgpLmxlbmd0aDtpKyspe3ZhciBvPWktMSxhPW4uZGF0YSgpW2ldLHM9bi5kYXRhKClbb10sbD1yLngocyxvLG4pLGM9ci54KGEsaSxuKStyLndpZHRoKGEsaSxuKSx1PXIueShhLGksbik7KHRoaXMuX3N1YnRvdGFsc1tpXT4wJiZ0aGlzLl9zdWJ0b3RhbHNbaV0+dGhpcy5fc3VidG90YWxzW29dfHx0aGlzLl9zdWJ0b3RhbHNbaV08MCYmdGhpcy5fc3VidG90YWxzW2ldPj10aGlzLl9zdWJ0b3RhbHNbb10pJiYodT1yLnkoYSxpLG4pK3IuaGVpZ2h0KGEsaSxuKSksdGhpcy5fY29ubmVjdG9yQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKHQuX0NPTk5FQ1RPUl9DTEFTUywhMCkuYXR0cigieDEiLGwpLmF0dHIoIngyIixjKS5hdHRyKCJ5MSIsdSkuYXR0cigieTIiLHUpfX0sdC5wcm90b3R5cGUuX3VwZGF0ZVN1YnRvdGFscz1mdW5jdGlvbigpe3ZhciByPXRoaXMuZGF0YXNldHMoKTtpZihyLmxlbmd0aD4wKXt2YXIgbj1yW3IubGVuZ3RoLTFdO3RoaXMuX3N1YnRvdGFscz1uZXcgQXJyYXksdGhpcy5fY2FsY3VsYXRlU3VidG90YWxzQW5kRXh0ZW50KG4pfX0sdC5fQkFSX0RFQ0xJTkVfQ0xBU1M9IndhdGVyZmFsbC1kZWNsaW5lIix0Ll9CQVJfR1JPV1RIX0NMQVNTPSJ3YXRlcmZhbGwtZ3Jvd3RoIix0Ll9CQVJfVE9UQUxfQ0xBU1M9IndhdGVyZmFsbC10b3RhbCIsdC5fQ09OTkVDVE9SX0NMQVNTPSJjb25uZWN0b3IiLHQuX0NPTk5FQ1RPUl9BUkVBX0NMQVNTPSJjb25uZWN0b3ItYXJlYSIsdC5fVE9UQUxfS0VZPSJ0b3RhbCIsdH0oV1VlLkJhcik7V2F0LldhdGVyZmFsbD1qVWV9KTt2YXIgUFM9SChEcz0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoRHMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBEYz0oZGUoKSxVdChwZSkpO0RjLl9fZXhwb3J0U3RhcihFYXQoKSxEcyk7RGMuX19leHBvcnRTdGFyKG00KCksRHMpO0RjLl9fZXhwb3J0U3Rhcihxb3QoKSxEcyk7RGMuX19leHBvcnRTdGFyKHBLdCgpLERzKTtEYy5fX2V4cG9ydFN0YXIod2F0KCksRHMpO0RjLl9fZXhwb3J0U3RhcihkS3QoKSxEcyk7RGMuX19leHBvcnRTdGFyKG1LdCgpLERzKTtEYy5fX2V4cG9ydFN0YXIoX0t0KCksRHMpO0RjLl9fZXhwb3J0U3Rhcih5S3QoKSxEcyk7RGMuX19leHBvcnRTdGFyKGJLdCgpLERzKTtEYy5fX2V4cG9ydFN0YXIoU0t0KCksRHMpO0RjLl9fZXhwb3J0U3RhcihNS3QoKSxEcyl9KTt2YXIgRUt0PUgoWWF0PT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShZYXQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO1lhdC52ZXJzaW9uPSIzLjkuMCJ9KTt2YXIgYmw9SChsbj0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBPYz0oZGUoKSxVdChwZSkpO0hqdCgpO3ZhciBYVWU9SWYoKTtsbi5BbmltYXRvcnM9WFVlO3ZhciAkVWU9biR0KCk7bG4uQXhlcz0kVWU7dmFyIEtVZT1Bb3QoKTtsbi5Db21wb25lbnRzPUtVZTt2YXIgWlVlPVlBKCk7bG4uQ29uZmlncz1aVWU7dmFyIEpVZT1GdSgpO2xuLkZvcm1hdHRlcnM9SlVlO3ZhciBRVWU9Q0YoKTtsbi5SZW5kZXJDb250cm9sbGVyPVFVZTt2YXIgdHFlPUJpdCgpO2xuLlJlbmRlclBvbGljaWVzPXRxZTt2YXIgZXFlPVdGKCk7bG4uU3ltYm9sRmFjdG9yaWVzPWVxZTt2YXIgcnFlPU52KCk7bG4uRGlzcGF0Y2hlcnM9cnFlO3ZhciBucWU9QnYoKTtsbi5EcmF3ZXJzPW5xZTt2YXIgaXFlPW80KCk7bG4uSW50ZXJhY3Rpb25zPWlxZTt2YXIgb3FlPVBTKCk7bG4uUGxvdHM9b3FlO3ZhciBhcWU9THMoKTtsbi5TY2FsZXM9YXFlO3ZhciBzcWU9RmUoKTtsbi5VdGlscz1zcWU7T2MuX19leHBvcnRTdGFyKFpBKCksbG4pO3ZhciBscWU9ekYoKTtsbi5UaW1lSW50ZXJ2YWw9bHFlLlRpbWVJbnRlcnZhbDtPYy5fX2V4cG9ydFN0YXIoSWMoKSxsbik7T2MuX19leHBvcnRTdGFyKFVGKCksbG4pO09jLl9fZXhwb3J0U3RhcihXb3QoKSxsbik7dmFyIGNxZT1FS3QoKTtsbi52ZXJzaW9uPWNxZS52ZXJzaW9uO09jLl9fZXhwb3J0U3RhcihyNCgpLGxuKTtPYy5fX2V4cG9ydFN0YXIoVnUoKSxsbik7T2MuX19leHBvcnRTdGFyKER2KCksbG4pO09jLl9fZXhwb3J0U3Rhcihib3QoKSxsbik7T2MuX19leHBvcnRTdGFyKEh2KCksbG4pO09jLl9fZXhwb3J0U3RhcihlcygpLGxuKTtPYy5fX2V4cG9ydFN0YXIodmQoKSxsbik7T2MuX19leHBvcnRTdGFyKEx2KCksbG4pfSk7dmFyIEdLdD1IKChIam4scUt0KT0+e2Z1bmN0aW9uIEFxZSgpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9cUt0LmV4cG9ydHM9QXFlfSk7dmFyIFl2PUgoKFZqbixXS3QpPT57ZnVuY3Rpb24gUHFlKGUsdCl7cmV0dXJuIGU9PT10fHxlIT09ZSYmdCE9PXR9V0t0LmV4cG9ydHM9UHFlfSk7dmFyIGI0PUgoKFVqbixZS3QpPT57dmFyIElxZT1ZdigpO2Z1bmN0aW9uIExxZShlLHQpe2Zvcih2YXIgcj1lLmxlbmd0aDtyLS07KWlmKElxZShlW3JdWzBdLHQpKXJldHVybiByO3JldHVybi0xfVlLdC5leHBvcnRzPUxxZX0pO3ZhciBYS3Q9SCgocWpuLGpLdCk9Pnt2YXIga3FlPWI0KCksUnFlPUFycmF5LnByb3RvdHlwZSxOcWU9UnFlLnNwbGljZTtmdW5jdGlvbiBEcWUoZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPWtxZSh0LGUpO2lmKHI8MClyZXR1cm4hMTt2YXIgbj10Lmxlbmd0aC0xO3JldHVybiByPT1uP3QucG9wKCk6TnFlLmNhbGwodCxyLDEpLC0tdGhpcy5zaXplLCEwfWpLdC5leHBvcnRzPURxZX0pO3ZhciBLS3Q9SCgoR2puLCRLdCk9Pnt2YXIgT3FlPWI0KCk7ZnVuY3Rpb24genFlKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj1PcWUodCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfSRLdC5leHBvcnRzPXpxZX0pO3ZhciBKS3Q9SCgoV2puLFpLdCk9Pnt2YXIgRnFlPWI0KCk7ZnVuY3Rpb24gQnFlKGUpe3JldHVybiBGcWUodGhpcy5fX2RhdGFfXyxlKT4tMX1aS3QuZXhwb3J0cz1CcWV9KTt2YXIgdFp0PUgoKFlqbixRS3QpPT57dmFyIEhxZT1iNCgpO2Z1bmN0aW9uIFZxZShlLHQpe3ZhciByPXRoaXMuX19kYXRhX18sbj1IcWUocixlKTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW2UsdF0pKTpyW25dWzFdPXQsdGhpc31RS3QuZXhwb3J0cz1WcWV9KTt2YXIgdzQ9SCgoampuLGVadCk9Pnt2YXIgVXFlPUdLdCgpLHFxZT1YS3QoKSxHcWU9S0t0KCksV3FlPUpLdCgpLFlxZT10WnQoKTtmdW5jdGlvbiBPUyhlKXt2YXIgdD0tMSxyPWU9PW51bGw/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxyOyl7dmFyIG49ZVt0XTt0aGlzLnNldChuWzBdLG5bMV0pfX1PUy5wcm90b3R5cGUuY2xlYXI9VXFlO09TLnByb3RvdHlwZS5kZWxldGU9cXFlO09TLnByb3RvdHlwZS5nZXQ9R3FlO09TLnByb3RvdHlwZS5oYXM9V3FlO09TLnByb3RvdHlwZS5zZXQ9WXFlO2VadC5leHBvcnRzPU9TfSk7dmFyIG5adD1IKChYam4sclp0KT0+e3ZhciBqcWU9dzQoKTtmdW5jdGlvbiBYcWUoKXt0aGlzLl9fZGF0YV9fPW5ldyBqcWUsdGhpcy5zaXplPTB9clp0LmV4cG9ydHM9WHFlfSk7dmFyIG9adD1IKCgkam4saVp0KT0+e2Z1bmN0aW9uICRxZShlKXt2YXIgdD10aGlzLl9fZGF0YV9fLHI9dC5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZT10LnNpemUscn1pWnQuZXhwb3J0cz0kcWV9KTt2YXIgc1p0PUgoKEtqbixhWnQpPT57ZnVuY3Rpb24gS3FlKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldChlKX1hWnQuZXhwb3J0cz1LcWV9KTt2YXIgY1p0PUgoKFpqbixsWnQpPT57ZnVuY3Rpb24gWnFlKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX1sWnQuZXhwb3J0cz1acWV9KTt2YXIgbHN0PUgoKEpqbix1WnQpPT57dmFyIEpxZT10eXBlb2YgZ2xvYmFsPT0ib2JqZWN0IiYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWw7dVp0LmV4cG9ydHM9SnFlfSk7dmFyIEZjPUgoKFFqbixoWnQpPT57dmFyIFFxZT1sc3QoKSx0R2U9dHlwZW9mIHNlbGY9PSJvYmplY3QiJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixlR2U9UXFlfHx0R2V8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7aFp0LmV4cG9ydHM9ZUdlfSk7dmFyIGp2PUgoKHRYbixmWnQpPT57dmFyIHJHZT1GYygpLG5HZT1yR2UuU3ltYm9sO2ZadC5leHBvcnRzPW5HZX0pO3ZhciBnWnQ9SCgoZVhuLG1adCk9Pnt2YXIgcFp0PWp2KCksZFp0PU9iamVjdC5wcm90b3R5cGUsaUdlPWRadC5oYXNPd25Qcm9wZXJ0eSxvR2U9ZFp0LnRvU3RyaW5nLFM0PXBadD9wWnQudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGFHZShlKXt2YXIgdD1pR2UuY2FsbChlLFM0KSxyPWVbUzRdO3RyeXtlW1M0XT12b2lkIDA7dmFyIG49ITB9Y2F0Y2gobyl7fXZhciBpPW9HZS5jYWxsKGUpO3JldHVybiBuJiYodD9lW1M0XT1yOmRlbGV0ZSBlW1M0XSksaX1tWnQuZXhwb3J0cz1hR2V9KTt2YXIgeVp0PUgoKHJYbixfWnQpPT57dmFyIHNHZT1PYmplY3QucHJvdG90eXBlLGxHZT1zR2UudG9TdHJpbmc7ZnVuY3Rpb24gY0dlKGUpe3JldHVybiBsR2UuY2FsbChlKX1fWnQuZXhwb3J0cz1jR2V9KTt2YXIgczA9SCgoblhuLGJadCk9Pnt2YXIgdlp0PWp2KCksdUdlPWdadCgpLGhHZT15WnQoKSxmR2U9IltvYmplY3QgTnVsbF0iLHBHZT0iW29iamVjdCBVbmRlZmluZWRdIix4WnQ9dlp0P3ZadC50b1N0cmluZ1RhZzp2b2lkIDA7ZnVuY3Rpb24gZEdlKGUpe3JldHVybiBlPT1udWxsP2U9PT12b2lkIDA/cEdlOmZHZTp4WnQmJnhadCBpbiBPYmplY3QoZSk/dUdlKGUpOmhHZShlKX1iWnQuZXhwb3J0cz1kR2V9KTt2YXIgU2w9SCgoaVhuLHdadCk9PntmdW5jdGlvbiBtR2UoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIGUhPW51bGwmJih0PT0ib2JqZWN0Inx8dD09ImZ1bmN0aW9uIil9d1p0LmV4cG9ydHM9bUdlfSk7dmFyIHpTPUgoKG9YbixTWnQpPT57dmFyIGdHZT1zMCgpLF9HZT1TbCgpLHlHZT0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsdkdlPSJbb2JqZWN0IEZ1bmN0aW9uXSIseEdlPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsYkdlPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gd0dlKGUpe2lmKCFfR2UoZSkpcmV0dXJuITE7dmFyIHQ9Z0dlKGUpO3JldHVybiB0PT12R2V8fHQ9PXhHZXx8dD09eUdlfHx0PT1iR2V9U1p0LmV4cG9ydHM9d0dlfSk7dmFyIEVadD1IKChhWG4sTVp0KT0+e3ZhciBTR2U9RmMoKSxNR2U9U0dlWyJfX2NvcmUtanNfc2hhcmVkX18iXTtNWnQuZXhwb3J0cz1NR2V9KTt2YXIgQVp0PUgoKHNYbixDWnQpPT57dmFyIGNzdD1FWnQoKSxUWnQ9ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKGNzdCYmY3N0LmtleXMmJmNzdC5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpO2Z1bmN0aW9uIEVHZShlKXtyZXR1cm4hIVRadCYmVFp0IGluIGV9Q1p0LmV4cG9ydHM9RUdlfSk7dmFyIHVzdD1IKChsWG4sUFp0KT0+e3ZhciBUR2U9RnVuY3Rpb24ucHJvdG90eXBlLENHZT1UR2UudG9TdHJpbmc7ZnVuY3Rpb24gQUdlKGUpe2lmKGUhPW51bGwpe3RyeXtyZXR1cm4gQ0dlLmNhbGwoZSl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gZSsiIn1jYXRjaCh0KXt9fXJldHVybiIifVBadC5leHBvcnRzPUFHZX0pO3ZhciBMWnQ9SCgoY1huLEladCk9Pnt2YXIgUEdlPXpTKCksSUdlPUFadCgpLExHZT1TbCgpLGtHZT11c3QoKSxSR2U9L1tcXF4kLiorPygpW1xde318XS9nLE5HZT0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxER2U9RnVuY3Rpb24ucHJvdG90eXBlLE9HZT1PYmplY3QucHJvdG90eXBlLHpHZT1ER2UudG9TdHJpbmcsRkdlPU9HZS5oYXNPd25Qcm9wZXJ0eSxCR2U9UmVnRXhwKCJeIit6R2UuY2FsbChGR2UpLnJlcGxhY2UoUkdlLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO2Z1bmN0aW9uIEhHZShlKXtpZighTEdlKGUpfHxJR2UoZSkpcmV0dXJuITE7dmFyIHQ9UEdlKGUpP0JHZTpOR2U7cmV0dXJuIHQudGVzdChrR2UoZSkpfUladC5leHBvcnRzPUhHZX0pO3ZhciBSWnQ9SCgodVhuLGtadCk9PntmdW5jdGlvbiBWR2UoZSx0KXtyZXR1cm4gZT09bnVsbD92b2lkIDA6ZVt0XX1rWnQuZXhwb3J0cz1WR2V9KTt2YXIgbDA9SCgoaFhuLE5adCk9Pnt2YXIgVUdlPUxadCgpLHFHZT1SWnQoKTtmdW5jdGlvbiBHR2UoZSx0KXt2YXIgcj1xR2UoZSx0KTtyZXR1cm4gVUdlKHIpP3I6dm9pZCAwfU5adC5leHBvcnRzPUdHZX0pO3ZhciBOQj1IKChmWG4sRFp0KT0+e3ZhciBXR2U9bDAoKSxZR2U9RmMoKSxqR2U9V0dlKFlHZSwiTWFwIik7RFp0LmV4cG9ydHM9akdlfSk7dmFyIE00PUgoKHBYbixPWnQpPT57dmFyIFhHZT1sMCgpLCRHZT1YR2UoT2JqZWN0LCJjcmVhdGUiKTtPWnQuZXhwb3J0cz0kR2V9KTt2YXIgQlp0PUgoKGRYbixGWnQpPT57dmFyIHpadD1NNCgpO2Z1bmN0aW9uIEtHZSgpe3RoaXMuX19kYXRhX189elp0P3padChudWxsKTp7fSx0aGlzLnNpemU9MH1GWnQuZXhwb3J0cz1LR2V9KTt2YXIgVlp0PUgoKG1YbixIWnQpPT57ZnVuY3Rpb24gWkdlKGUpe3ZhciB0PXRoaXMuaGFzKGUpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1tlXTtyZXR1cm4gdGhpcy5zaXplLT10PzE6MCx0fUhadC5leHBvcnRzPVpHZX0pO3ZhciBxWnQ9SCgoZ1huLFVadCk9Pnt2YXIgSkdlPU00KCksUUdlPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIix0V2U9T2JqZWN0LnByb3RvdHlwZSxlV2U9dFdlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHJXZShlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKEpHZSl7dmFyIHI9dFtlXTtyZXR1cm4gcj09PVFHZT92b2lkIDA6cn1yZXR1cm4gZVdlLmNhbGwodCxlKT90W2VdOnZvaWQgMH1VWnQuZXhwb3J0cz1yV2V9KTt2YXIgV1p0PUgoKF9YbixHWnQpPT57dmFyIG5XZT1NNCgpLGlXZT1PYmplY3QucHJvdG90eXBlLG9XZT1pV2UuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYVdlKGUpe3ZhciB0PXRoaXMuX19kYXRhX187cmV0dXJuIG5XZT90W2VdIT09dm9pZCAwOm9XZS5jYWxsKHQsZSl9R1p0LmV4cG9ydHM9YVdlfSk7dmFyIGpadD1IKCh5WG4sWVp0KT0+e3ZhciBzV2U9TTQoKSxsV2U9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2Z1bmN0aW9uIGNXZShlLHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZSk/MDoxLHJbZV09c1dlJiZ0PT09dm9pZCAwP2xXZTp0LHRoaXN9WVp0LmV4cG9ydHM9Y1dlfSk7dmFyICRadD1IKCh2WG4sWFp0KT0+e3ZhciB1V2U9Qlp0KCksaFdlPVZadCgpLGZXZT1xWnQoKSxwV2U9V1p0KCksZFdlPWpadCgpO2Z1bmN0aW9uIEZTKGUpe3ZhciB0PS0xLHI9ZT09bnVsbD8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgbj1lW3RdO3RoaXMuc2V0KG5bMF0sblsxXSl9fUZTLnByb3RvdHlwZS5jbGVhcj11V2U7RlMucHJvdG90eXBlLmRlbGV0ZT1oV2U7RlMucHJvdG90eXBlLmdldD1mV2U7RlMucHJvdG90eXBlLmhhcz1wV2U7RlMucHJvdG90eXBlLnNldD1kV2U7WFp0LmV4cG9ydHM9RlN9KTt2YXIgSlp0PUgoKHhYbixaWnQpPT57dmFyIEtadD0kWnQoKSxtV2U9dzQoKSxnV2U9TkIoKTtmdW5jdGlvbiBfV2UoKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBLWnQsbWFwOm5ldyhnV2V8fG1XZSksc3RyaW5nOm5ldyBLWnR9fVpadC5leHBvcnRzPV9XZX0pO3ZhciB0SnQ9SCgoYlhuLFFadCk9PntmdW5jdGlvbiB5V2UoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0dXJuIHQ9PSJzdHJpbmcifHx0PT0ibnVtYmVyInx8dD09InN5bWJvbCJ8fHQ9PSJib29sZWFuIj9lIT09Il9fcHJvdG9fXyI6ZT09PW51bGx9UVp0LmV4cG9ydHM9eVdlfSk7dmFyIEU0PUgoKHdYbixlSnQpPT57dmFyIHZXZT10SnQoKTtmdW5jdGlvbiB4V2UoZSx0KXt2YXIgcj1lLl9fZGF0YV9fO3JldHVybiB2V2UodCk/clt0eXBlb2YgdD09InN0cmluZyI/InN0cmluZyI6Imhhc2giXTpyLm1hcH1lSnQuZXhwb3J0cz14V2V9KTt2YXIgbkp0PUgoKFNYbixySnQpPT57dmFyIGJXZT1FNCgpO2Z1bmN0aW9uIHdXZShlKXt2YXIgdD1iV2UodGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH1ySnQuZXhwb3J0cz13V2V9KTt2YXIgb0p0PUgoKE1YbixpSnQpPT57dmFyIFNXZT1FNCgpO2Z1bmN0aW9uIE1XZShlKXtyZXR1cm4gU1dlKHRoaXMsZSkuZ2V0KGUpfWlKdC5leHBvcnRzPU1XZX0pO3ZhciBzSnQ9SCgoRVhuLGFKdCk9Pnt2YXIgRVdlPUU0KCk7ZnVuY3Rpb24gVFdlKGUpe3JldHVybiBFV2UodGhpcyxlKS5oYXMoZSl9YUp0LmV4cG9ydHM9VFdlfSk7dmFyIGNKdD1IKChUWG4sbEp0KT0+e3ZhciBDV2U9RTQoKTtmdW5jdGlvbiBBV2UoZSx0KXt2YXIgcj1DV2UodGhpcyxlKSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQoZSx0KSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc31sSnQuZXhwb3J0cz1BV2V9KTt2YXIgREI9SCgoQ1huLHVKdCk9Pnt2YXIgUFdlPUpadCgpLElXZT1uSnQoKSxMV2U9b0p0KCksa1dlPXNKdCgpLFJXZT1jSnQoKTtmdW5jdGlvbiBCUyhlKXt2YXIgdD0tMSxyPWU9PW51bGw/MDplLmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrdDxyOyl7dmFyIG49ZVt0XTt0aGlzLnNldChuWzBdLG5bMV0pfX1CUy5wcm90b3R5cGUuY2xlYXI9UFdlO0JTLnByb3RvdHlwZS5kZWxldGU9SVdlO0JTLnByb3RvdHlwZS5nZXQ9TFdlO0JTLnByb3RvdHlwZS5oYXM9a1dlO0JTLnByb3RvdHlwZS5zZXQ9UldlO3VKdC5leHBvcnRzPUJTfSk7dmFyIGZKdD1IKChBWG4saEp0KT0+e3ZhciBOV2U9dzQoKSxEV2U9TkIoKSxPV2U9REIoKSx6V2U9MjAwO2Z1bmN0aW9uIEZXZShlLHQpe3ZhciByPXRoaXMuX19kYXRhX187aWYociBpbnN0YW5jZW9mIE5XZSl7dmFyIG49ci5fX2RhdGFfXztpZighRFdlfHxuLmxlbmd0aDx6V2UtMSlyZXR1cm4gbi5wdXNoKFtlLHRdKSx0aGlzLnNpemU9KytyLnNpemUsdGhpcztyPXRoaXMuX19kYXRhX189bmV3IE9XZShuKX1yZXR1cm4gci5zZXQoZSx0KSx0aGlzLnNpemU9ci5zaXplLHRoaXN9aEp0LmV4cG9ydHM9RldlfSk7dmFyIFQ0PUgoKFBYbixwSnQpPT57dmFyIEJXZT13NCgpLEhXZT1uWnQoKSxWV2U9b1p0KCksVVdlPXNadCgpLHFXZT1jWnQoKSxHV2U9Zkp0KCk7ZnVuY3Rpb24gSFMoZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXz1uZXcgQldlKGUpO3RoaXMuc2l6ZT10LnNpemV9SFMucHJvdG90eXBlLmNsZWFyPUhXZTtIUy5wcm90b3R5cGUuZGVsZXRlPVZXZTtIUy5wcm90b3R5cGUuZ2V0PVVXZTtIUy5wcm90b3R5cGUuaGFzPXFXZTtIUy5wcm90b3R5cGUuc2V0PUdXZTtwSnQuZXhwb3J0cz1IU30pO3ZhciBPQj1IKChJWG4sZEp0KT0+e2Z1bmN0aW9uIFdXZShlLHQpe2Zvcih2YXIgcj0tMSxuPWU9PW51bGw/MDplLmxlbmd0aDsrK3I8biYmdChlW3JdLHIsZSkhPT0hMTspO3JldHVybiBlfWRKdC5leHBvcnRzPVdXZX0pO3ZhciBoc3Q9SCgoTFhuLG1KdCk9Pnt2YXIgWVdlPWwwKCksaldlPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPVlXZShPYmplY3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIGUoe30sIiIse30pLGV9Y2F0Y2godCl7fX0oKTttSnQuZXhwb3J0cz1qV2V9KTt2YXIgQzQ9SCgoa1huLF9KdCk9Pnt2YXIgZ0p0PWhzdCgpO2Z1bmN0aW9uIFhXZShlLHQscil7dD09Il9fcHJvdG9fXyImJmdKdD9nSnQoZSx0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpyLHdyaXRhYmxlOiEwfSk6ZVt0XT1yfV9KdC5leHBvcnRzPVhXZX0pO3ZhciBBND1IKChSWG4seUp0KT0+e3ZhciAkV2U9QzQoKSxLV2U9WXYoKSxaV2U9T2JqZWN0LnByb3RvdHlwZSxKV2U9WldlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFFXZShlLHQscil7dmFyIG49ZVt0XTsoIShKV2UuY2FsbChlLHQpJiZLV2UobixyKSl8fHI9PT12b2lkIDAmJiEodCBpbiBlKSkmJiRXZShlLHQscil9eUp0LmV4cG9ydHM9UVdlfSk7dmFyIFZTPUgoKE5Ybix2SnQpPT57dmFyIHRZZT1BNCgpLGVZZT1DNCgpO2Z1bmN0aW9uIHJZZShlLHQscixuKXt2YXIgaT0hcjtyfHwocj17fSk7Zm9yKHZhciBvPS0xLGE9dC5sZW5ndGg7KytvPGE7KXt2YXIgcz10W29dLGw9bj9uKHJbc10sZVtzXSxzLHIsZSk6dm9pZCAwO2w9PT12b2lkIDAmJihsPWVbc10pLGk/ZVllKHIscyxsKTp0WWUocixzLGwpfXJldHVybiByfXZKdC5leHBvcnRzPXJZZX0pO3ZhciBiSnQ9SCgoRFhuLHhKdCk9PntmdW5jdGlvbiBuWWUoZSx0KXtmb3IodmFyIHI9LTEsbj1BcnJheShlKTsrK3I8ZTspbltyXT10KHIpO3JldHVybiBufXhKdC5leHBvcnRzPW5ZZX0pO3ZhciBXdT1IKChPWG4sd0p0KT0+e2Z1bmN0aW9uIGlZZShlKXtyZXR1cm4gZSE9bnVsbCYmdHlwZW9mIGU9PSJvYmplY3QifXdKdC5leHBvcnRzPWlZZX0pO3ZhciBNSnQ9SCgoelhuLFNKdCk9Pnt2YXIgb1llPXMwKCksYVllPVd1KCksc1llPSJbb2JqZWN0IEFyZ3VtZW50c10iO2Z1bmN0aW9uIGxZZShlKXtyZXR1cm4gYVllKGUpJiZvWWUoZSk9PXNZZX1TSnQuZXhwb3J0cz1sWWV9KTt2YXIgVVM9SCgoRlhuLENKdCk9Pnt2YXIgRUp0PU1KdCgpLGNZZT1XdSgpLFRKdD1PYmplY3QucHJvdG90eXBlLHVZZT1USnQuaGFzT3duUHJvcGVydHksaFllPVRKdC5wcm9wZXJ0eUlzRW51bWVyYWJsZSxmWWU9RUp0KGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/RUp0OmZ1bmN0aW9uKGUpe3JldHVybiBjWWUoZSkmJnVZZS5jYWxsKGUsImNhbGxlZSIpJiYhaFllLmNhbGwoZSwiY2FsbGVlIil9O0NKdC5leHBvcnRzPWZZZX0pO3ZhciBUaT1IKChCWG4sQUp0KT0+e3ZhciBwWWU9QXJyYXkuaXNBcnJheTtBSnQuZXhwb3J0cz1wWWV9KTt2YXIgSUp0PUgoKEhYbixQSnQpPT57ZnVuY3Rpb24gZFllKCl7cmV0dXJuITF9UEp0LmV4cG9ydHM9ZFllfSk7dmFyIFh2PUgoKFA0LHFTKT0+e3ZhciBtWWU9RmMoKSxnWWU9SUp0KCksUkp0PXR5cGVvZiBQND09Im9iamVjdCImJlA0JiYhUDQubm9kZVR5cGUmJlA0LExKdD1SSnQmJnR5cGVvZiBxUz09Im9iamVjdCImJnFTJiYhcVMubm9kZVR5cGUmJnFTLF9ZZT1MSnQmJkxKdC5leHBvcnRzPT09Ukp0LGtKdD1fWWU/bVllLkJ1ZmZlcjp2b2lkIDAseVllPWtKdD9rSnQuaXNCdWZmZXI6dm9pZCAwLHZZZT15WWV8fGdZZTtxUy5leHBvcnRzPXZZZX0pO3ZhciBJND1IKChWWG4sTkp0KT0+e3ZhciB4WWU9OTAwNzE5OTI1NDc0MDk5MSxiWWU9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIHdZZShlLHQpe3ZhciByPXR5cGVvZiBlO3JldHVybiB0PXQ9PW51bGw/eFllOnQsISF0JiYocj09Im51bWJlciJ8fHIhPSJzeW1ib2wiJiZiWWUudGVzdChlKSkmJmU+LTEmJmUlMT09MCYmZTx0fU5KdC5leHBvcnRzPXdZZX0pO3ZhciB6Qj1IKChVWG4sREp0KT0+e3ZhciBTWWU9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBNWWUoZSl7cmV0dXJuIHR5cGVvZiBlPT0ibnVtYmVyIiYmZT4tMSYmZSUxPT0wJiZlPD1TWWV9REp0LmV4cG9ydHM9TVllfSk7dmFyIHpKdD1IKChxWG4sT0p0KT0+e3ZhciBFWWU9czAoKSxUWWU9ekIoKSxDWWU9V3UoKSxBWWU9IltvYmplY3QgQXJndW1lbnRzXSIsUFllPSJbb2JqZWN0IEFycmF5XSIsSVllPSJbb2JqZWN0IEJvb2xlYW5dIixMWWU9IltvYmplY3QgRGF0ZV0iLGtZZT0iW29iamVjdCBFcnJvcl0iLFJZZT0iW29iamVjdCBGdW5jdGlvbl0iLE5ZZT0iW29iamVjdCBNYXBdIixEWWU9IltvYmplY3QgTnVtYmVyXSIsT1llPSJbb2JqZWN0IE9iamVjdF0iLHpZZT0iW29iamVjdCBSZWdFeHBdIixGWWU9IltvYmplY3QgU2V0XSIsQlllPSJbb2JqZWN0IFN0cmluZ10iLEhZZT0iW29iamVjdCBXZWFrTWFwXSIsVlllPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsVVllPSJbb2JqZWN0IERhdGFWaWV3XSIscVllPSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLEdZZT0iW29iamVjdCBGbG9hdDY0QXJyYXldIixXWWU9IltvYmplY3QgSW50OEFycmF5XSIsWVllPSJbb2JqZWN0IEludDE2QXJyYXldIixqWWU9IltvYmplY3QgSW50MzJBcnJheV0iLFhZZT0iW29iamVjdCBVaW50OEFycmF5XSIsJFllPSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsS1llPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsWlllPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsVW49e307VW5bcVllXT1VbltHWWVdPVVuW1dZZV09VW5bWVllXT1VbltqWWVdPVVuW1hZZV09VW5bJFllXT1VbltLWWVdPVVuW1pZZV09ITA7VW5bQVllXT1VbltQWWVdPVVuW1ZZZV09VW5bSVllXT1VbltVWWVdPVVuW0xZZV09VW5ba1llXT1VbltSWWVdPVVuW05ZZV09VW5bRFllXT1VbltPWWVdPVVuW3pZZV09VW5bRlllXT1VbltCWWVdPVVuW0hZZV09ITE7ZnVuY3Rpb24gSlllKGUpe3JldHVybiBDWWUoZSkmJlRZZShlLmxlbmd0aCkmJiEhVW5bRVllKGUpXX1PSnQuZXhwb3J0cz1KWWV9KTt2YXIgTDQ9SCgoR1huLEZKdCk9PntmdW5jdGlvbiBRWWUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX1GSnQuZXhwb3J0cz1RWWV9KTt2YXIgRkI9SCgoazQsR1MpPT57dmFyIHRqZT1sc3QoKSxCSnQ9dHlwZW9mIGs0PT0ib2JqZWN0IiYmazQmJiFrNC5ub2RlVHlwZSYmazQsUjQ9Qkp0JiZ0eXBlb2YgR1M9PSJvYmplY3QiJiZHUyYmIUdTLm5vZGVUeXBlJiZHUyxlamU9UjQmJlI0LmV4cG9ydHM9PT1CSnQsZnN0PWVqZSYmdGplLnByb2Nlc3MscmplPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPVI0JiZSNC5yZXF1aXJlJiZSNC5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fGZzdCYmZnN0LmJpbmRpbmcmJmZzdC5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTtHUy5leHBvcnRzPXJqZX0pO3ZhciBXUz1IKChXWG4sVUp0KT0+e3ZhciBuamU9ekp0KCksaWplPUw0KCksSEp0PUZCKCksVkp0PUhKdCYmSEp0LmlzVHlwZWRBcnJheSxvamU9Vkp0P2lqZShWSnQpOm5qZTtVSnQuZXhwb3J0cz1vamV9KTt2YXIgcHN0PUgoKFlYbixxSnQpPT57dmFyIGFqZT1iSnQoKSxzamU9VVMoKSxsamU9VGkoKSxjamU9WHYoKSx1amU9STQoKSxoamU9V1MoKSxmamU9T2JqZWN0LnByb3RvdHlwZSxwamU9ZmplLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGRqZShlLHQpe3ZhciByPWxqZShlKSxuPSFyJiZzamUoZSksaT0hciYmIW4mJmNqZShlKSxvPSFyJiYhbiYmIWkmJmhqZShlKSxhPXJ8fG58fGl8fG8scz1hP2FqZShlLmxlbmd0aCxTdHJpbmcpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIGUpKHR8fHBqZS5jYWxsKGUsYykpJiYhKGEmJihjPT0ibGVuZ3RoInx8aSYmKGM9PSJvZmZzZXQifHxjPT0icGFyZW50Iil8fG8mJihjPT0iYnVmZmVyInx8Yz09ImJ5dGVMZW5ndGgifHxjPT0iYnl0ZU9mZnNldCIpfHx1amUoYyxsKSkpJiZzLnB1c2goYyk7cmV0dXJuIHN9cUp0LmV4cG9ydHM9ZGplfSk7dmFyIE40PUgoKGpYbixHSnQpPT57dmFyIG1qZT1PYmplY3QucHJvdG90eXBlO2Z1bmN0aW9uIGdqZShlKXt2YXIgdD1lJiZlLmNvbnN0cnVjdG9yLHI9dHlwZW9mIHQ9PSJmdW5jdGlvbiImJnQucHJvdG90eXBlfHxtamU7cmV0dXJuIGU9PT1yfUdKdC5leHBvcnRzPWdqZX0pO3ZhciBkc3Q9SCgoWFhuLFdKdCk9PntmdW5jdGlvbiBfamUoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUodChyKSl9fVdKdC5leHBvcnRzPV9qZX0pO3ZhciBqSnQ9SCgoJFhuLFlKdCk9Pnt2YXIgeWplPWRzdCgpLHZqZT15amUoT2JqZWN0LmtleXMsT2JqZWN0KTtZSnQuZXhwb3J0cz12amV9KTt2YXIgQkI9SCgoS1huLFhKdCk9Pnt2YXIgeGplPU40KCksYmplPWpKdCgpLHdqZT1PYmplY3QucHJvdG90eXBlLFNqZT13amUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gTWplKGUpe2lmKCF4amUoZSkpcmV0dXJuIGJqZShlKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gT2JqZWN0KGUpKVNqZS5jYWxsKGUscikmJnIhPSJjb25zdHJ1Y3RvciImJnQucHVzaChyKTtyZXR1cm4gdH1YSnQuZXhwb3J0cz1NamV9KTt2YXIgRmY9SCgoWlhuLCRKdCk9Pnt2YXIgRWplPXpTKCksVGplPXpCKCk7ZnVuY3Rpb24gQ2plKGUpe3JldHVybiBlIT1udWxsJiZUamUoZS5sZW5ndGgpJiYhRWplKGUpfSRKdC5leHBvcnRzPUNqZX0pO3ZhciBBZD1IKChKWG4sS0p0KT0+e3ZhciBBamU9cHN0KCksUGplPUJCKCksSWplPUZmKCk7ZnVuY3Rpb24gTGplKGUpe3JldHVybiBJamUoZSk/QWplKGUpOlBqZShlKX1LSnQuZXhwb3J0cz1MamV9KTt2YXIgSkp0PUgoKFFYbixaSnQpPT57dmFyIGtqZT1WUygpLFJqZT1BZCgpO2Z1bmN0aW9uIE5qZShlLHQpe3JldHVybiBlJiZramUodCxSamUodCksZSl9Wkp0LmV4cG9ydHM9TmplfSk7dmFyIHRRdD1IKCh0JG4sUUp0KT0+e2Z1bmN0aW9uIERqZShlKXt2YXIgdD1bXTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBPYmplY3QoZSkpdC5wdXNoKHIpO3JldHVybiB0fVFKdC5leHBvcnRzPURqZX0pO3ZhciByUXQ9SCgoZSRuLGVRdCk9Pnt2YXIgT2plPVNsKCksemplPU40KCksRmplPXRRdCgpLEJqZT1PYmplY3QucHJvdG90eXBlLEhqZT1CamUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVmplKGUpe2lmKCFPamUoZSkpcmV0dXJuIEZqZShlKTt2YXIgdD16amUoZSkscj1bXTtmb3IodmFyIG4gaW4gZSluPT0iY29uc3RydWN0b3IiJiYodHx8IUhqZS5jYWxsKGUsbikpfHxyLnB1c2gobik7cmV0dXJuIHJ9ZVF0LmV4cG9ydHM9VmplfSk7dmFyIGMwPUgoKHIkbixuUXQpPT57dmFyIFVqZT1wc3QoKSxxamU9clF0KCksR2plPUZmKCk7ZnVuY3Rpb24gV2plKGUpe3JldHVybiBHamUoZSk/VWplKGUsITApOnFqZShlKX1uUXQuZXhwb3J0cz1XamV9KTt2YXIgb1F0PUgoKG4kbixpUXQpPT57dmFyIFlqZT1WUygpLGpqZT1jMCgpO2Z1bmN0aW9uIFhqZShlLHQpe3JldHVybiBlJiZZamUodCxqamUodCksZSl9aVF0LmV4cG9ydHM9WGplfSk7dmFyIG1zdD1IKChENCxZUyk9Pnt2YXIgJGplPUZjKCksY1F0PXR5cGVvZiBEND09Im9iamVjdCImJkQ0JiYhRDQubm9kZVR5cGUmJkQ0LGFRdD1jUXQmJnR5cGVvZiBZUz09Im9iamVjdCImJllTJiYhWVMubm9kZVR5cGUmJllTLEtqZT1hUXQmJmFRdC5leHBvcnRzPT09Y1F0LHNRdD1LamU/JGplLkJ1ZmZlcjp2b2lkIDAsbFF0PXNRdD9zUXQuYWxsb2NVbnNhZmU6dm9pZCAwO2Z1bmN0aW9uIFpqZShlLHQpe2lmKHQpcmV0dXJuIGUuc2xpY2UoKTt2YXIgcj1lLmxlbmd0aCxuPWxRdD9sUXQocik6bmV3IGUuY29uc3RydWN0b3Iocik7cmV0dXJuIGUuY29weShuKSxufVlTLmV4cG9ydHM9WmplfSk7dmFyIGdzdD1IKChpJG4sdVF0KT0+e2Z1bmN0aW9uIEpqZShlLHQpe3ZhciByPS0xLG49ZS5sZW5ndGg7Zm9yKHR8fCh0PUFycmF5KG4pKTsrK3I8bjspdFtyXT1lW3JdO3JldHVybiB0fXVRdC5leHBvcnRzPUpqZX0pO3ZhciBfc3Q9SCgobyRuLGhRdCk9PntmdW5jdGlvbiBRamUoZSx0KXtmb3IodmFyIHI9LTEsbj1lPT1udWxsPzA6ZS5sZW5ndGgsaT0wLG89W107KytyPG47KXt2YXIgYT1lW3JdO3QoYSxyLGUpJiYob1tpKytdPWEpfXJldHVybiBvfWhRdC5leHBvcnRzPVFqZX0pO3ZhciB5c3Q9SCgoYSRuLGZRdCk9PntmdW5jdGlvbiB0WGUoKXtyZXR1cm5bXX1mUXQuZXhwb3J0cz10WGV9KTt2YXIgSEI9SCgocyRuLGRRdCk9Pnt2YXIgZVhlPV9zdCgpLHJYZT15c3QoKSxuWGU9T2JqZWN0LnByb3RvdHlwZSxpWGU9blhlLnByb3BlcnR5SXNFbnVtZXJhYmxlLHBRdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG9YZT1wUXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PW51bGw/W106KGU9T2JqZWN0KGUpLGVYZShwUXQoZSksZnVuY3Rpb24odCl7cmV0dXJuIGlYZS5jYWxsKGUsdCl9KSl9OnJYZTtkUXQuZXhwb3J0cz1vWGV9KTt2YXIgZ1F0PUgoKGwkbixtUXQpPT57dmFyIGFYZT1WUygpLHNYZT1IQigpO2Z1bmN0aW9uIGxYZShlLHQpe3JldHVybiBhWGUoZSxzWGUoZSksdCl9bVF0LmV4cG9ydHM9bFhlfSk7dmFyIFZCPUgoKGMkbixfUXQpPT57ZnVuY3Rpb24gY1hlKGUsdCl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGgsaT1lLmxlbmd0aDsrK3I8bjspZVtpK3JdPXRbcl07cmV0dXJuIGV9X1F0LmV4cG9ydHM9Y1hlfSk7dmFyIE80PUgoKHUkbix5UXQpPT57dmFyIHVYZT1kc3QoKSxoWGU9dVhlKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpO3lRdC5leHBvcnRzPWhYZX0pO3ZhciB2c3Q9SCgoaCRuLHZRdCk9Pnt2YXIgZlhlPVZCKCkscFhlPU80KCksZFhlPUhCKCksbVhlPXlzdCgpLGdYZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLF9YZT1nWGU/ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdO2U7KWZYZSh0LGRYZShlKSksZT1wWGUoZSk7cmV0dXJuIHR9Om1YZTt2UXQuZXhwb3J0cz1fWGV9KTt2YXIgYlF0PUgoKGYkbix4UXQpPT57dmFyIHlYZT1WUygpLHZYZT12c3QoKTtmdW5jdGlvbiB4WGUoZSx0KXtyZXR1cm4geVhlKGUsdlhlKGUpLHQpfXhRdC5leHBvcnRzPXhYZX0pO3ZhciB4c3Q9SCgocCRuLHdRdCk9Pnt2YXIgYlhlPVZCKCksd1hlPVRpKCk7ZnVuY3Rpb24gU1hlKGUsdCxyKXt2YXIgbj10KGUpO3JldHVybiB3WGUoZSk/bjpiWGUobixyKGUpKX13UXQuZXhwb3J0cz1TWGV9KTt2YXIgYnN0PUgoKGQkbixTUXQpPT57dmFyIE1YZT14c3QoKSxFWGU9SEIoKSxUWGU9QWQoKTtmdW5jdGlvbiBDWGUoZSl7cmV0dXJuIE1YZShlLFRYZSxFWGUpfVNRdC5leHBvcnRzPUNYZX0pO3ZhciBFUXQ9SCgobSRuLE1RdCk9Pnt2YXIgQVhlPXhzdCgpLFBYZT12c3QoKSxJWGU9YzAoKTtmdW5jdGlvbiBMWGUoZSl7cmV0dXJuIEFYZShlLElYZSxQWGUpfU1RdC5leHBvcnRzPUxYZX0pO3ZhciBDUXQ9SCgoZyRuLFRRdCk9Pnt2YXIga1hlPWwwKCksUlhlPUZjKCksTlhlPWtYZShSWGUsIkRhdGFWaWV3Iik7VFF0LmV4cG9ydHM9TlhlfSk7dmFyIFBRdD1IKChfJG4sQVF0KT0+e3ZhciBEWGU9bDAoKSxPWGU9RmMoKSx6WGU9RFhlKE9YZSwiUHJvbWlzZSIpO0FRdC5leHBvcnRzPXpYZX0pO3ZhciB3c3Q9SCgoeSRuLElRdCk9Pnt2YXIgRlhlPWwwKCksQlhlPUZjKCksSFhlPUZYZShCWGUsIlNldCIpO0lRdC5leHBvcnRzPUhYZX0pO3ZhciBrUXQ9SCgodiRuLExRdCk9Pnt2YXIgVlhlPWwwKCksVVhlPUZjKCkscVhlPVZYZShVWGUsIldlYWtNYXAiKTtMUXQuZXhwb3J0cz1xWGV9KTt2YXIgS3Y9SCgoeCRuLEJRdCk9Pnt2YXIgU3N0PUNRdCgpLE1zdD1OQigpLEVzdD1QUXQoKSxUc3Q9d3N0KCksQ3N0PWtRdCgpLEZRdD1zMCgpLGpTPXVzdCgpLFJRdD0iW29iamVjdCBNYXBdIixHWGU9IltvYmplY3QgT2JqZWN0XSIsTlF0PSJbb2JqZWN0IFByb21pc2VdIixEUXQ9IltvYmplY3QgU2V0XSIsT1F0PSJbb2JqZWN0IFdlYWtNYXBdIix6UXQ9IltvYmplY3QgRGF0YVZpZXddIixXWGU9alMoU3N0KSxZWGU9alMoTXN0KSxqWGU9alMoRXN0KSxYWGU9alMoVHN0KSwkWGU9alMoQ3N0KSwkdj1GUXQ7KFNzdCYmJHYobmV3IFNzdChuZXcgQXJyYXlCdWZmZXIoMSkpKSE9elF0fHxNc3QmJiR2KG5ldyBNc3QpIT1SUXR8fEVzdCYmJHYoRXN0LnJlc29sdmUoKSkhPU5RdHx8VHN0JiYkdihuZXcgVHN0KSE9RFF0fHxDc3QmJiR2KG5ldyBDc3QpIT1PUXQpJiYoJHY9ZnVuY3Rpb24oZSl7dmFyIHQ9RlF0KGUpLHI9dD09R1hlP2UuY29uc3RydWN0b3I6dm9pZCAwLG49cj9qUyhyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIFdYZTpyZXR1cm4gelF0O2Nhc2UgWVhlOnJldHVybiBSUXQ7Y2FzZSBqWGU6cmV0dXJuIE5RdDtjYXNlIFhYZTpyZXR1cm4gRFF0O2Nhc2UgJFhlOnJldHVybiBPUXR9cmV0dXJuIHR9KTtCUXQuZXhwb3J0cz0kdn0pO3ZhciBWUXQ9SCgoYiRuLEhRdCk9Pnt2YXIgS1hlPU9iamVjdC5wcm90b3R5cGUsWlhlPUtYZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKWGUoZSl7dmFyIHQ9ZS5sZW5ndGgscj1uZXcgZS5jb25zdHJ1Y3Rvcih0KTtyZXR1cm4gdCYmdHlwZW9mIGVbMF09PSJzdHJpbmciJiZaWGUuY2FsbChlLCJpbmRleCIpJiYoci5pbmRleD1lLmluZGV4LHIuaW5wdXQ9ZS5pbnB1dCkscn1IUXQuZXhwb3J0cz1KWGV9KTt2YXIgQXN0PUgoKHckbixVUXQpPT57dmFyIFFYZT1GYygpLHQkZT1RWGUuVWludDhBcnJheTtVUXQuZXhwb3J0cz10JGV9KTt2YXIgVUI9SCgoUyRuLEdRdCk9Pnt2YXIgcVF0PUFzdCgpO2Z1bmN0aW9uIGUkZShlKXt2YXIgdD1uZXcgZS5jb25zdHJ1Y3RvcihlLmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgcVF0KHQpLnNldChuZXcgcVF0KGUpKSx0fUdRdC5leHBvcnRzPWUkZX0pO3ZhciBZUXQ9SCgoTSRuLFdRdCk9Pnt2YXIgciRlPVVCKCk7ZnVuY3Rpb24gbiRlKGUsdCl7dmFyIHI9dD9yJGUoZS5idWZmZXIpOmUuYnVmZmVyO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfVdRdC5leHBvcnRzPW4kZX0pO3ZhciBYUXQ9SCgoRSRuLGpRdCk9Pnt2YXIgaSRlPS9cdyokLztmdW5jdGlvbiBvJGUoZSl7dmFyIHQ9bmV3IGUuY29uc3RydWN0b3IoZS5zb3VyY2UsaSRlLmV4ZWMoZSkpO3JldHVybiB0Lmxhc3RJbmRleD1lLmxhc3RJbmRleCx0fWpRdC5leHBvcnRzPW8kZX0pO3ZhciBRUXQ9SCgoVCRuLEpRdCk9Pnt2YXIgJFF0PWp2KCksS1F0PSRRdD8kUXQucHJvdG90eXBlOnZvaWQgMCxaUXQ9S1F0P0tRdC52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBhJGUoZSl7cmV0dXJuIFpRdD9PYmplY3QoWlF0LmNhbGwoZSkpOnt9fUpRdC5leHBvcnRzPWEkZX0pO3ZhciBQc3Q9SCgoQyRuLHR0ZSk9Pnt2YXIgcyRlPVVCKCk7ZnVuY3Rpb24gbCRlKGUsdCl7dmFyIHI9dD9zJGUoZS5idWZmZXIpOmUuYnVmZmVyO3JldHVybiBuZXcgZS5jb25zdHJ1Y3RvcihyLGUuYnl0ZU9mZnNldCxlLmxlbmd0aCl9dHRlLmV4cG9ydHM9bCRlfSk7dmFyIHJ0ZT1IKChBJG4sZXRlKT0+e3ZhciBjJGU9VUIoKSx1JGU9WVF0KCksaCRlPVhRdCgpLGYkZT1RUXQoKSxwJGU9UHN0KCksZCRlPSJbb2JqZWN0IEJvb2xlYW5dIixtJGU9IltvYmplY3QgRGF0ZV0iLGckZT0iW29iamVjdCBNYXBdIixfJGU9IltvYmplY3QgTnVtYmVyXSIseSRlPSJbb2JqZWN0IFJlZ0V4cF0iLHYkZT0iW29iamVjdCBTZXRdIix4JGU9IltvYmplY3QgU3RyaW5nXSIsYiRlPSJbb2JqZWN0IFN5bWJvbF0iLHckZT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLFMkZT0iW29iamVjdCBEYXRhVmlld10iLE0kZT0iW29iamVjdCBGbG9hdDMyQXJyYXldIixFJGU9IltvYmplY3QgRmxvYXQ2NEFycmF5XSIsVCRlPSJbb2JqZWN0IEludDhBcnJheV0iLEMkZT0iW29iamVjdCBJbnQxNkFycmF5XSIsQSRlPSJbb2JqZWN0IEludDMyQXJyYXldIixQJGU9IltvYmplY3QgVWludDhBcnJheV0iLEkkZT0iW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLEwkZT0iW29iamVjdCBVaW50MTZBcnJheV0iLGskZT0iW29iamVjdCBVaW50MzJBcnJheV0iO2Z1bmN0aW9uIFIkZShlLHQscil7dmFyIG49ZS5jb25zdHJ1Y3Rvcjtzd2l0Y2godCl7Y2FzZSB3JGU6cmV0dXJuIGMkZShlKTtjYXNlIGQkZTpjYXNlIG0kZTpyZXR1cm4gbmV3IG4oK2UpO2Nhc2UgUyRlOnJldHVybiB1JGUoZSxyKTtjYXNlIE0kZTpjYXNlIEUkZTpjYXNlIFQkZTpjYXNlIEMkZTpjYXNlIEEkZTpjYXNlIFAkZTpjYXNlIEkkZTpjYXNlIEwkZTpjYXNlIGskZTpyZXR1cm4gcCRlKGUscik7Y2FzZSBnJGU6cmV0dXJuIG5ldyBuO2Nhc2UgXyRlOmNhc2UgeCRlOnJldHVybiBuZXcgbihlKTtjYXNlIHkkZTpyZXR1cm4gaCRlKGUpO2Nhc2UgdiRlOnJldHVybiBuZXcgbjtjYXNlIGIkZTpyZXR1cm4gZiRlKGUpfX1ldGUuZXhwb3J0cz1SJGV9KTt2YXIgSXN0PUgoKFAkbixpdGUpPT57dmFyIE4kZT1TbCgpLG50ZT1PYmplY3QuY3JlYXRlLEQkZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKCFOJGUodCkpcmV0dXJue307aWYobnRlKXJldHVybiBudGUodCk7ZS5wcm90b3R5cGU9dDt2YXIgcj1uZXcgZTtyZXR1cm4gZS5wcm90b3R5cGU9dm9pZCAwLHJ9fSgpO2l0ZS5leHBvcnRzPUQkZX0pO3ZhciBMc3Q9SCgoSSRuLG90ZSk9Pnt2YXIgTyRlPUlzdCgpLHokZT1PNCgpLEYkZT1ONCgpO2Z1bmN0aW9uIEIkZShlKXtyZXR1cm4gdHlwZW9mIGUuY29uc3RydWN0b3I9PSJmdW5jdGlvbiImJiFGJGUoZSk/TyRlKHokZShlKSk6e319b3RlLmV4cG9ydHM9QiRlfSk7dmFyIHN0ZT1IKChMJG4sYXRlKT0+e3ZhciBIJGU9S3YoKSxWJGU9V3UoKSxVJGU9IltvYmplY3QgTWFwXSI7ZnVuY3Rpb24gcSRlKGUpe3JldHVybiBWJGUoZSkmJkgkZShlKT09VSRlfWF0ZS5leHBvcnRzPXEkZX0pO3ZhciBodGU9SCgoayRuLHV0ZSk9Pnt2YXIgRyRlPXN0ZSgpLFckZT1MNCgpLGx0ZT1GQigpLGN0ZT1sdGUmJmx0ZS5pc01hcCxZJGU9Y3RlP1ckZShjdGUpOkckZTt1dGUuZXhwb3J0cz1ZJGV9KTt2YXIgcHRlPUgoKFIkbixmdGUpPT57dmFyIGokZT1LdigpLFgkZT1XdSgpLCQkZT0iW29iamVjdCBTZXRdIjtmdW5jdGlvbiBLJGUoZSl7cmV0dXJuIFgkZShlKSYmaiRlKGUpPT0kJGV9ZnRlLmV4cG9ydHM9SyRlfSk7dmFyIF90ZT1IKChOJG4sZ3RlKT0+e3ZhciBaJGU9cHRlKCksSiRlPUw0KCksZHRlPUZCKCksbXRlPWR0ZSYmZHRlLmlzU2V0LFEkZT1tdGU/SiRlKG10ZSk6WiRlO2d0ZS5leHBvcnRzPVEkZX0pO3ZhciBrc3Q9SCgoRCRuLGJ0ZSk9Pnt2YXIgdEtlPVQ0KCksZUtlPU9CKCkscktlPUE0KCksbktlPUpKdCgpLGlLZT1vUXQoKSxvS2U9bXN0KCksYUtlPWdzdCgpLHNLZT1nUXQoKSxsS2U9YlF0KCksY0tlPWJzdCgpLHVLZT1FUXQoKSxoS2U9S3YoKSxmS2U9VlF0KCkscEtlPXJ0ZSgpLGRLZT1Mc3QoKSxtS2U9VGkoKSxnS2U9WHYoKSxfS2U9aHRlKCkseUtlPVNsKCksdktlPV90ZSgpLHhLZT1BZCgpLGJLZT1jMCgpLHdLZT0xLFNLZT0yLE1LZT00LHl0ZT0iW29iamVjdCBBcmd1bWVudHNdIixFS2U9IltvYmplY3QgQXJyYXldIixUS2U9IltvYmplY3QgQm9vbGVhbl0iLENLZT0iW29iamVjdCBEYXRlXSIsQUtlPSJbb2JqZWN0IEVycm9yXSIsdnRlPSJbb2JqZWN0IEZ1bmN0aW9uXSIsUEtlPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsSUtlPSJbb2JqZWN0IE1hcF0iLExLZT0iW29iamVjdCBOdW1iZXJdIix4dGU9IltvYmplY3QgT2JqZWN0XSIsa0tlPSJbb2JqZWN0IFJlZ0V4cF0iLFJLZT0iW29iamVjdCBTZXRdIixOS2U9IltvYmplY3QgU3RyaW5nXSIsREtlPSJbb2JqZWN0IFN5bWJvbF0iLE9LZT0iW29iamVjdCBXZWFrTWFwXSIsektlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsRktlPSJbb2JqZWN0IERhdGFWaWV3XSIsQktlPSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLEhLZT0iW29iamVjdCBGbG9hdDY0QXJyYXldIixWS2U9IltvYmplY3QgSW50OEFycmF5XSIsVUtlPSJbb2JqZWN0IEludDE2QXJyYXldIixxS2U9IltvYmplY3QgSW50MzJBcnJheV0iLEdLZT0iW29iamVjdCBVaW50OEFycmF5XSIsV0tlPSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsWUtlPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsaktlPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsQW49e307QW5beXRlXT1BbltFS2VdPUFuW3pLZV09QW5bRktlXT1BbltUS2VdPUFuW0NLZV09QW5bQktlXT1BbltIS2VdPUFuW1ZLZV09QW5bVUtlXT1BbltxS2VdPUFuW0lLZV09QW5bTEtlXT1Bblt4dGVdPUFuW2tLZV09QW5bUktlXT1BbltOS2VdPUFuW0RLZV09QW5bR0tlXT1BbltXS2VdPUFuW1lLZV09QW5baktlXT0hMDtBbltBS2VdPUFuW3Z0ZV09QW5bT0tlXT0hMTtmdW5jdGlvbiBxQihlLHQscixuLGksbyl7dmFyIGEscz10JndLZSxsPXQmU0tlLGM9dCZNS2U7aWYociYmKGE9aT9yKGUsbixpLG8pOnIoZSkpLGEhPT12b2lkIDApcmV0dXJuIGE7aWYoIXlLZShlKSlyZXR1cm4gZTt2YXIgdT1tS2UoZSk7aWYodSl7aWYoYT1mS2UoZSksIXMpcmV0dXJuIGFLZShlLGEpfWVsc2V7dmFyIGg9aEtlKGUpLGY9aD09dnRlfHxoPT1QS2U7aWYoZ0tlKGUpKXJldHVybiBvS2UoZSxzKTtpZihoPT14dGV8fGg9PXl0ZXx8ZiYmIWkpe2lmKGE9bHx8Zj97fTpkS2UoZSksIXMpcmV0dXJuIGw/bEtlKGUsaUtlKGEsZSkpOnNLZShlLG5LZShhLGUpKX1lbHNle2lmKCFBbltoXSlyZXR1cm4gaT9lOnt9O2E9cEtlKGUsaCxzKX19b3x8KG89bmV3IHRLZSk7dmFyIHA9by5nZXQoZSk7aWYocClyZXR1cm4gcDtvLnNldChlLGEpLHZLZShlKT9lLmZvckVhY2goZnVuY3Rpb24oXyl7YS5hZGQocUIoXyx0LHIsXyxlLG8pKX0pOl9LZShlKSYmZS5mb3JFYWNoKGZ1bmN0aW9uKF8seSl7YS5zZXQoeSxxQihfLHQscix5LGUsbykpfSk7dmFyIGQ9Yz9sP3VLZTpjS2U6bD9iS2U6eEtlLGc9dT92b2lkIDA6ZChlKTtyZXR1cm4gZUtlKGd8fGUsZnVuY3Rpb24oXyx5KXtnJiYoeT1fLF89ZVt5XSkscktlKGEseSxxQihfLHQscix5LGUsbykpfSksYX1idGUuZXhwb3J0cz1xQn0pO3ZhciBTdGU9SCgoTyRuLHd0ZSk9Pnt2YXIgWEtlPWtzdCgpLCRLZT00O2Z1bmN0aW9uIEtLZShlKXtyZXR1cm4gWEtlKGUsJEtlKX13dGUuZXhwb3J0cz1LS2V9KTt2YXIgR0I9SCgoeiRuLE10ZSk9PntmdW5jdGlvbiBaS2UoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fU10ZS5leHBvcnRzPVpLZX0pO3ZhciBUdGU9SCgoRiRuLEV0ZSk9PntmdW5jdGlvbiBKS2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9LTEsbz1PYmplY3QodCksYT1uKHQpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIGw9YVtlP3M6KytpXTtpZihyKG9bbF0sbCxvKT09PSExKWJyZWFrfXJldHVybiB0fX1FdGUuZXhwb3J0cz1KS2V9KTt2YXIgV0I9SCgoQiRuLEN0ZSk9Pnt2YXIgUUtlPVR0ZSgpLHRaZT1RS2UoKTtDdGUuZXhwb3J0cz10WmV9KTt2YXIgWUI9SCgoSCRuLEF0ZSk9Pnt2YXIgZVplPVdCKCksclplPUFkKCk7ZnVuY3Rpb24gblplKGUsdCl7cmV0dXJuIGUmJmVaZShlLHQsclplKX1BdGUuZXhwb3J0cz1uWmV9KTt2YXIgSXRlPUgoKFYkbixQdGUpPT57dmFyIGlaZT1GZigpO2Z1bmN0aW9uIG9aZShlLHQpe3JldHVybiBmdW5jdGlvbihyLG4pe2lmKHI9PW51bGwpcmV0dXJuIHI7aWYoIWlaZShyKSlyZXR1cm4gZShyLG4pO2Zvcih2YXIgaT1yLmxlbmd0aCxvPXQ/aTotMSxhPU9iamVjdChyKTsodD9vLS06KytvPGkpJiZuKGFbb10sbyxhKSE9PSExOyk7cmV0dXJuIHJ9fVB0ZS5leHBvcnRzPW9aZX0pO3ZhciB6ND1IKChVJG4sTHRlKT0+e3ZhciBhWmU9WUIoKSxzWmU9SXRlKCksbFplPXNaZShhWmUpO0x0ZS5leHBvcnRzPWxaZX0pO3ZhciB1MD1IKChxJG4sa3RlKT0+e2Z1bmN0aW9uIGNaZShlKXtyZXR1cm4gZX1rdGUuZXhwb3J0cz1jWmV9KTt2YXIgUnN0PUgoKEckbixSdGUpPT57dmFyIHVaZT11MCgpO2Z1bmN0aW9uIGhaZShlKXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTp1WmV9UnRlLmV4cG9ydHM9aFplfSk7dmFyIE5zdD1IKChXJG4sTnRlKT0+e3ZhciBmWmU9T0IoKSxwWmU9ejQoKSxkWmU9UnN0KCksbVplPVRpKCk7ZnVuY3Rpb24gZ1plKGUsdCl7dmFyIHI9bVplKGUpP2ZaZTpwWmU7cmV0dXJuIHIoZSxkWmUodCkpfU50ZS5leHBvcnRzPWdaZX0pO3ZhciBEc3Q9SCgoWSRuLER0ZSk9PntEdGUuZXhwb3J0cz1Oc3QoKX0pO3ZhciB6dGU9SCgoaiRuLE90ZSk9Pnt2YXIgX1plPXo0KCk7ZnVuY3Rpb24geVplKGUsdCl7dmFyIHI9W107cmV0dXJuIF9aZShlLGZ1bmN0aW9uKG4saSxvKXt0KG4saSxvKSYmci5wdXNoKG4pfSkscn1PdGUuZXhwb3J0cz15WmV9KTt2YXIgQnRlPUgoKFgkbixGdGUpPT57dmFyIHZaZT0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI7ZnVuY3Rpb24geFplKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldChlLHZaZSksdGhpc31GdGUuZXhwb3J0cz14WmV9KTt2YXIgVnRlPUgoKCQkbixIdGUpPT57ZnVuY3Rpb24gYlplKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX1IdGUuZXhwb3J0cz1iWmV9KTt2YXIgT3N0PUgoKEskbixVdGUpPT57dmFyIHdaZT1EQigpLFNaZT1CdGUoKSxNWmU9VnRlKCk7ZnVuY3Rpb24gakIoZSl7dmFyIHQ9LTEscj1lPT1udWxsPzA6ZS5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IHdaZTsrK3Q8cjspdGhpcy5hZGQoZVt0XSl9akIucHJvdG90eXBlLmFkZD1qQi5wcm90b3R5cGUucHVzaD1TWmU7akIucHJvdG90eXBlLmhhcz1NWmU7VXRlLmV4cG9ydHM9akJ9KTt2YXIgR3RlPUgoKFokbixxdGUpPT57ZnVuY3Rpb24gRVplKGUsdCl7Zm9yKHZhciByPS0xLG49ZT09bnVsbD8wOmUubGVuZ3RoOysrcjxuOylpZih0KGVbcl0scixlKSlyZXR1cm4hMDtyZXR1cm4hMX1xdGUuZXhwb3J0cz1FWmV9KTt2YXIgenN0PUgoKEokbixXdGUpPT57ZnVuY3Rpb24gVFplKGUsdCl7cmV0dXJuIGUuaGFzKHQpfVd0ZS5leHBvcnRzPVRaZX0pO3ZhciBGc3Q9SCgoUSRuLFl0ZSk9Pnt2YXIgQ1plPU9zdCgpLEFaZT1HdGUoKSxQWmU9enN0KCksSVplPTEsTFplPTI7ZnVuY3Rpb24ga1plKGUsdCxyLG4saSxvKXt2YXIgYT1yJklaZSxzPWUubGVuZ3RoLGw9dC5sZW5ndGg7aWYocyE9bCYmIShhJiZsPnMpKXJldHVybiExO3ZhciBjPW8uZ2V0KGUpLHU9by5nZXQodCk7aWYoYyYmdSlyZXR1cm4gYz09dCYmdT09ZTt2YXIgaD0tMSxmPSEwLHA9ciZMWmU/bmV3IENaZTp2b2lkIDA7Zm9yKG8uc2V0KGUsdCksby5zZXQodCxlKTsrK2g8czspe3ZhciBkPWVbaF0sZz10W2hdO2lmKG4pdmFyIF89YT9uKGcsZCxoLHQsZSxvKTpuKGQsZyxoLGUsdCxvKTtpZihfIT09dm9pZCAwKXtpZihfKWNvbnRpbnVlO2Y9ITE7YnJlYWt9aWYocCl7aWYoIUFaZSh0LGZ1bmN0aW9uKHkseCl7aWYoIVBaZShwLHgpJiYoZD09PXl8fGkoZCx5LHIsbixvKSkpcmV0dXJuIHAucHVzaCh4KX0pKXtmPSExO2JyZWFrfX1lbHNlIGlmKCEoZD09PWd8fGkoZCxnLHIsbixvKSkpe2Y9ITE7YnJlYWt9fXJldHVybiBvLmRlbGV0ZShlKSxvLmRlbGV0ZSh0KSxmfVl0ZS5leHBvcnRzPWtaZX0pO3ZhciBYdGU9SCgodEtuLGp0ZSk9PntmdW5jdGlvbiBSWmUoZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24obixpKXtyWysrdF09W2ksbl19KSxyfWp0ZS5leHBvcnRzPVJaZX0pO3ZhciBYQj1IKChlS24sJHRlKT0+e2Z1bmN0aW9uIE5aZShlKXt2YXIgdD0tMSxyPUFycmF5KGUuc2l6ZSk7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihuKXtyWysrdF09bn0pLHJ9JHRlLmV4cG9ydHM9TlplfSk7dmFyIHRlZT1IKChyS24sUXRlKT0+e3ZhciBLdGU9anYoKSxadGU9QXN0KCksRFplPVl2KCksT1plPUZzdCgpLHpaZT1YdGUoKSxGWmU9WEIoKSxCWmU9MSxIWmU9MixWWmU9IltvYmplY3QgQm9vbGVhbl0iLFVaZT0iW29iamVjdCBEYXRlXSIscVplPSJbb2JqZWN0IEVycm9yXSIsR1plPSJbb2JqZWN0IE1hcF0iLFdaZT0iW29iamVjdCBOdW1iZXJdIixZWmU9IltvYmplY3QgUmVnRXhwXSIsalplPSJbb2JqZWN0IFNldF0iLFhaZT0iW29iamVjdCBTdHJpbmddIiwkWmU9IltvYmplY3QgU3ltYm9sXSIsS1plPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsWlplPSJbb2JqZWN0IERhdGFWaWV3XSIsSnRlPUt0ZT9LdGUucHJvdG90eXBlOnZvaWQgMCxCc3Q9SnRlP0p0ZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBKWmUoZSx0LHIsbixpLG8sYSl7c3dpdGNoKHIpe2Nhc2UgWlplOmlmKGUuYnl0ZUxlbmd0aCE9dC5ieXRlTGVuZ3RofHxlLmJ5dGVPZmZzZXQhPXQuYnl0ZU9mZnNldClyZXR1cm4hMTtlPWUuYnVmZmVyLHQ9dC5idWZmZXI7Y2FzZSBLWmU6cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IW8obmV3IFp0ZShlKSxuZXcgWnRlKHQpKSk7Y2FzZSBWWmU6Y2FzZSBVWmU6Y2FzZSBXWmU6cmV0dXJuIERaZSgrZSwrdCk7Y2FzZSBxWmU6cmV0dXJuIGUubmFtZT09dC5uYW1lJiZlLm1lc3NhZ2U9PXQubWVzc2FnZTtjYXNlIFlaZTpjYXNlIFhaZTpyZXR1cm4gZT09dCsiIjtjYXNlIEdaZTp2YXIgcz16WmU7Y2FzZSBqWmU6dmFyIGw9biZCWmU7aWYoc3x8KHM9RlplKSxlLnNpemUhPXQuc2l6ZSYmIWwpcmV0dXJuITE7dmFyIGM9YS5nZXQoZSk7aWYoYylyZXR1cm4gYz09dDtufD1IWmUsYS5zZXQoZSx0KTt2YXIgdT1PWmUocyhlKSxzKHQpLG4saSxvLGEpO3JldHVybiBhLmRlbGV0ZShlKSx1O2Nhc2UgJFplOmlmKEJzdClyZXR1cm4gQnN0LmNhbGwoZSk9PUJzdC5jYWxsKHQpfXJldHVybiExfVF0ZS5leHBvcnRzPUpaZX0pO3ZhciBuZWU9SCgobktuLHJlZSk9Pnt2YXIgZWVlPWJzdCgpLFFaZT0xLHRKZT1PYmplY3QucHJvdG90eXBlLGVKZT10SmUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gckplKGUsdCxyLG4saSxvKXt2YXIgYT1yJlFaZSxzPWVlZShlKSxsPXMubGVuZ3RoLGM9ZWVlKHQpLHU9Yy5sZW5ndGg7aWYobCE9dSYmIWEpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIGY9c1toXTtpZighKGE/ZiBpbiB0OmVKZS5jYWxsKHQsZikpKXJldHVybiExfXZhciBwPW8uZ2V0KGUpLGQ9by5nZXQodCk7aWYocCYmZClyZXR1cm4gcD09dCYmZD09ZTt2YXIgZz0hMDtvLnNldChlLHQpLG8uc2V0KHQsZSk7Zm9yKHZhciBfPWE7KytoPGw7KXtmPXNbaF07dmFyIHk9ZVtmXSx4PXRbZl07aWYobil2YXIgYj1hP24oeCx5LGYsdCxlLG8pOm4oeSx4LGYsZSx0LG8pO2lmKCEoYj09PXZvaWQgMD95PT09eHx8aSh5LHgscixuLG8pOmIpKXtnPSExO2JyZWFrfV98fChfPWY9PSJjb25zdHJ1Y3RvciIpfWlmKGcmJiFfKXt2YXIgUz1lLmNvbnN0cnVjdG9yLEM9dC5jb25zdHJ1Y3RvcjtTIT1DJiYiY29uc3RydWN0b3IiaW4gZSYmImNvbnN0cnVjdG9yImluIHQmJiEodHlwZW9mIFM9PSJmdW5jdGlvbiImJlMgaW5zdGFuY2VvZiBTJiZ0eXBlb2YgQz09ImZ1bmN0aW9uIiYmQyBpbnN0YW5jZW9mIEMpJiYoZz0hMSl9cmV0dXJuIG8uZGVsZXRlKGUpLG8uZGVsZXRlKHQpLGd9cmVlLmV4cG9ydHM9ckplfSk7dmFyIGhlZT1IKChpS24sdWVlKT0+e3ZhciBIc3Q9VDQoKSxuSmU9RnN0KCksaUplPXRlZSgpLG9KZT1uZWUoKSxpZWU9S3YoKSxvZWU9VGkoKSxhZWU9WHYoKSxhSmU9V1MoKSxzSmU9MSxzZWU9IltvYmplY3QgQXJndW1lbnRzXSIsbGVlPSJbb2JqZWN0IEFycmF5XSIsJEI9IltvYmplY3QgT2JqZWN0XSIsbEplPU9iamVjdC5wcm90b3R5cGUsY2VlPWxKZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBjSmUoZSx0LHIsbixpLG8pe3ZhciBhPW9lZShlKSxzPW9lZSh0KSxsPWE/bGVlOmllZShlKSxjPXM/bGVlOmllZSh0KTtsPWw9PXNlZT8kQjpsLGM9Yz09c2VlPyRCOmM7dmFyIHU9bD09JEIsaD1jPT0kQixmPWw9PWM7aWYoZiYmYWVlKGUpKXtpZighYWVlKHQpKXJldHVybiExO2E9ITAsdT0hMX1pZihmJiYhdSlyZXR1cm4gb3x8KG89bmV3IEhzdCksYXx8YUplKGUpP25KZShlLHQscixuLGksbyk6aUplKGUsdCxsLHIsbixpLG8pO2lmKCEociZzSmUpKXt2YXIgcD11JiZjZWUuY2FsbChlLCJfX3dyYXBwZWRfXyIpLGQ9aCYmY2VlLmNhbGwodCwiX193cmFwcGVkX18iKTtpZihwfHxkKXt2YXIgZz1wP2UudmFsdWUoKTplLF89ZD90LnZhbHVlKCk6dDtyZXR1cm4gb3x8KG89bmV3IEhzdCksaShnLF8scixuLG8pfX1yZXR1cm4gZj8ob3x8KG89bmV3IEhzdCksb0plKGUsdCxyLG4saSxvKSk6ITF9dWVlLmV4cG9ydHM9Y0plfSk7dmFyIFZzdD1IKChvS24sZGVlKT0+e3ZhciB1SmU9aGVlKCksZmVlPVd1KCk7ZnVuY3Rpb24gcGVlKGUsdCxyLG4saSl7cmV0dXJuIGU9PT10PyEwOmU9PW51bGx8fHQ9PW51bGx8fCFmZWUoZSkmJiFmZWUodCk/ZSE9PWUmJnQhPT10OnVKZShlLHQscixuLHBlZSxpKX1kZWUuZXhwb3J0cz1wZWV9KTt2YXIgZ2VlPUgoKGFLbixtZWUpPT57dmFyIGhKZT1UNCgpLGZKZT1Wc3QoKSxwSmU9MSxkSmU9MjtmdW5jdGlvbiBtSmUoZSx0LHIsbil7dmFyIGk9ci5sZW5ndGgsbz1pLGE9IW47aWYoZT09bnVsbClyZXR1cm4hbztmb3IoZT1PYmplY3QoZSk7aS0tOyl7dmFyIHM9cltpXTtpZihhJiZzWzJdP3NbMV0hPT1lW3NbMF1dOiEoc1swXWluIGUpKXJldHVybiExfWZvcig7KytpPG87KXtzPXJbaV07dmFyIGw9c1swXSxjPWVbbF0sdT1zWzFdO2lmKGEmJnNbMl0pe2lmKGM9PT12b2lkIDAmJiEobCBpbiBlKSlyZXR1cm4hMX1lbHNle3ZhciBoPW5ldyBoSmU7aWYobil2YXIgZj1uKGMsdSxsLGUsdCxoKTtpZighKGY9PT12b2lkIDA/ZkplKHUsYyxwSmV8ZEplLG4saCk6ZikpcmV0dXJuITF9fXJldHVybiEwfW1lZS5leHBvcnRzPW1KZX0pO3ZhciBVc3Q9SCgoc0tuLF9lZSk9Pnt2YXIgZ0plPVNsKCk7ZnVuY3Rpb24gX0plKGUpe3JldHVybiBlPT09ZSYmIWdKZShlKX1fZWUuZXhwb3J0cz1fSmV9KTt2YXIgdmVlPUgoKGxLbix5ZWUpPT57dmFyIHlKZT1Vc3QoKSx2SmU9QWQoKTtmdW5jdGlvbiB4SmUoZSl7Zm9yKHZhciB0PXZKZShlKSxyPXQubGVuZ3RoO3ItLTspe3ZhciBuPXRbcl0saT1lW25dO3Rbcl09W24saSx5SmUoaSldfXJldHVybiB0fXllZS5leHBvcnRzPXhKZX0pO3ZhciBxc3Q9SCgoY0tuLHhlZSk9PntmdW5jdGlvbiBiSmUoZSx0KXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHI9PW51bGw/ITE6cltlXT09PXQmJih0IT09dm9pZCAwfHxlIGluIE9iamVjdChyKSl9fXhlZS5leHBvcnRzPWJKZX0pO3ZhciB3ZWU9SCgodUtuLGJlZSk9Pnt2YXIgd0plPWdlZSgpLFNKZT12ZWUoKSxNSmU9cXN0KCk7ZnVuY3Rpb24gRUplKGUpe3ZhciB0PVNKZShlKTtyZXR1cm4gdC5sZW5ndGg9PTEmJnRbMF1bMl0/TUplKHRbMF1bMF0sdFswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1lfHx3SmUocixlLHQpfX1iZWUuZXhwb3J0cz1FSmV9KTt2YXIgWnY9SCgoaEtuLFNlZSk9Pnt2YXIgVEplPXMwKCksQ0plPVd1KCksQUplPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIFBKZShlKXtyZXR1cm4gdHlwZW9mIGU9PSJzeW1ib2wifHxDSmUoZSkmJlRKZShlKT09QUplfVNlZS5leHBvcnRzPVBKZX0pO3ZhciBLQj1IKChmS24sTWVlKT0+e3ZhciBJSmU9VGkoKSxMSmU9WnYoKSxrSmU9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sUkplPS9eXHcqJC87ZnVuY3Rpb24gTkplKGUsdCl7aWYoSUplKGUpKXJldHVybiExO3ZhciByPXR5cGVvZiBlO3JldHVybiByPT0ibnVtYmVyInx8cj09InN5bWJvbCJ8fHI9PSJib29sZWFuInx8ZT09bnVsbHx8TEplKGUpPyEwOlJKZS50ZXN0KGUpfHwha0plLnRlc3QoZSl8fHQhPW51bGwmJmUgaW4gT2JqZWN0KHQpfU1lZS5leHBvcnRzPU5KZX0pO3ZhciBDZWU9SCgocEtuLFRlZSk9Pnt2YXIgRWVlPURCKCksREplPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBHc3QoZSx0KXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uInx8dCE9bnVsbCYmdHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihESmUpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLGk9dD90LmFwcGx5KHRoaXMsbik6blswXSxvPXIuY2FjaGU7aWYoby5oYXMoaSkpcmV0dXJuIG8uZ2V0KGkpO3ZhciBhPWUuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1vLnNldChpLGEpfHxvLGF9O3JldHVybiByLmNhY2hlPW5ldyhHc3QuQ2FjaGV8fEVlZSkscn1Hc3QuQ2FjaGU9RWVlO1RlZS5leHBvcnRzPUdzdH0pO3ZhciBQZWU9SCgoZEtuLEFlZSk9Pnt2YXIgT0plPUNlZSgpLHpKZT01MDA7ZnVuY3Rpb24gRkplKGUpe3ZhciB0PU9KZShlLGZ1bmN0aW9uKG4pe3JldHVybiByLnNpemU9PT16SmUmJnIuY2xlYXIoKSxufSkscj10LmNhY2hlO3JldHVybiB0fUFlZS5leHBvcnRzPUZKZX0pO3ZhciBMZWU9SCgobUtuLEllZSk9Pnt2YXIgQkplPVBlZSgpLEhKZT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxWSmU9L1xcKFxcKT8vZyxVSmU9QkplKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiBlLmNoYXJDb2RlQXQoMCk9PT00NiYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoSEplLGZ1bmN0aW9uKHIsbixpLG8pe3QucHVzaChpP28ucmVwbGFjZShWSmUsIiQxIik6bnx8cil9KSx0fSk7SWVlLmV4cG9ydHM9VUplfSk7dmFyIEY0PUgoKGdLbixrZWUpPT57ZnVuY3Rpb24gcUplKGUsdCl7Zm9yKHZhciByPS0xLG49ZT09bnVsbD8wOmUubGVuZ3RoLGk9QXJyYXkobik7KytyPG47KWlbcl09dChlW3JdLHIsZSk7cmV0dXJuIGl9a2VlLmV4cG9ydHM9cUplfSk7dmFyIEZlZT1IKChfS24semVlKT0+e3ZhciBSZWU9anYoKSxHSmU9RjQoKSxXSmU9VGkoKSxZSmU9WnYoKSxqSmU9MS8wLE5lZT1SZWU/UmVlLnByb3RvdHlwZTp2b2lkIDAsRGVlPU5lZT9OZWUudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIE9lZShlKXtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7aWYoV0plKGUpKXJldHVybiBHSmUoZSxPZWUpKyIiO2lmKFlKZShlKSlyZXR1cm4gRGVlP0RlZS5jYWxsKGUpOiIiO3ZhciB0PWUrIiI7cmV0dXJuIHQ9PSIwIiYmMS9lPT0takplPyItMCI6dH16ZWUuZXhwb3J0cz1PZWV9KTt2YXIgV3N0PUgoKHlLbixCZWUpPT57dmFyIFhKZT1GZWUoKTtmdW5jdGlvbiAkSmUoZSl7cmV0dXJuIGU9PW51bGw/IiI6WEplKGUpfUJlZS5leHBvcnRzPSRKZX0pO3ZhciBCND1IKCh2S24sSGVlKT0+e3ZhciBLSmU9VGkoKSxaSmU9S0IoKSxKSmU9TGVlKCksUUplPVdzdCgpO2Z1bmN0aW9uIHRRZShlLHQpe3JldHVybiBLSmUoZSk/ZTpaSmUoZSx0KT9bZV06SkplKFFKZShlKSl9SGVlLmV4cG9ydHM9dFFlfSk7dmFyIFhTPUgoKHhLbixWZWUpPT57dmFyIGVRZT1adigpLHJRZT0xLzA7ZnVuY3Rpb24gblFlKGUpe2lmKHR5cGVvZiBlPT0ic3RyaW5nInx8ZVFlKGUpKXJldHVybiBlO3ZhciB0PWUrIiI7cmV0dXJuIHQ9PSIwIiYmMS9lPT0tclFlPyItMCI6dH1WZWUuZXhwb3J0cz1uUWV9KTt2YXIgSDQ9SCgoYktuLFVlZSk9Pnt2YXIgaVFlPUI0KCksb1FlPVhTKCk7ZnVuY3Rpb24gYVFlKGUsdCl7dD1pUWUodCxlKTtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO2UhPW51bGwmJnI8bjspZT1lW29RZSh0W3IrK10pXTtyZXR1cm4gciYmcj09bj9lOnZvaWQgMH1VZWUuZXhwb3J0cz1hUWV9KTt2YXIgR2VlPUgoKHdLbixxZWUpPT57dmFyIHNRZT1INCgpO2Z1bmN0aW9uIGxRZShlLHQscil7dmFyIG49ZT09bnVsbD92b2lkIDA6c1FlKGUsdCk7cmV0dXJuIG49PT12b2lkIDA/cjpufXFlZS5leHBvcnRzPWxRZX0pO3ZhciBZZWU9SCgoU0tuLFdlZSk9PntmdW5jdGlvbiBjUWUoZSx0KXtyZXR1cm4gZSE9bnVsbCYmdCBpbiBPYmplY3QoZSl9V2VlLmV4cG9ydHM9Y1FlfSk7dmFyIFlzdD1IKChNS24samVlKT0+e3ZhciB1UWU9QjQoKSxoUWU9VVMoKSxmUWU9VGkoKSxwUWU9STQoKSxkUWU9ekIoKSxtUWU9WFMoKTtmdW5jdGlvbiBnUWUoZSx0LHIpe3Q9dVFlKHQsZSk7Zm9yKHZhciBuPS0xLGk9dC5sZW5ndGgsbz0hMTsrK248aTspe3ZhciBhPW1RZSh0W25dKTtpZighKG89ZSE9bnVsbCYmcihlLGEpKSlicmVhaztlPWVbYV19cmV0dXJuIG98fCsrbiE9aT9vOihpPWU9PW51bGw/MDplLmxlbmd0aCwhIWkmJmRRZShpKSYmcFFlKGEsaSkmJihmUWUoZSl8fGhRZShlKSkpfWplZS5leHBvcnRzPWdRZX0pO3ZhciBqc3Q9SCgoRUtuLFhlZSk9Pnt2YXIgX1FlPVllZSgpLHlRZT1Zc3QoKTtmdW5jdGlvbiB2UWUoZSx0KXtyZXR1cm4gZSE9bnVsbCYmeVFlKGUsdCxfUWUpfVhlZS5leHBvcnRzPXZRZX0pO3ZhciBLZWU9SCgoVEtuLCRlZSk9Pnt2YXIgeFFlPVZzdCgpLGJRZT1HZWUoKSx3UWU9anN0KCksU1FlPUtCKCksTVFlPVVzdCgpLEVRZT1xc3QoKSxUUWU9WFMoKSxDUWU9MSxBUWU9MjtmdW5jdGlvbiBQUWUoZSx0KXtyZXR1cm4gU1FlKGUpJiZNUWUodCk/RVFlKFRRZShlKSx0KTpmdW5jdGlvbihyKXt2YXIgbj1iUWUocixlKTtyZXR1cm4gbj09PXZvaWQgMCYmbj09PXQ/d1FlKHIsZSk6eFFlKHQsbixDUWV8QVFlKX19JGVlLmV4cG9ydHM9UFFlfSk7dmFyIFhzdD1IKChDS24sWmVlKT0+e2Z1bmN0aW9uIElRZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ9PW51bGw/dm9pZCAwOnRbZV19fVplZS5leHBvcnRzPUlRZX0pO3ZhciBRZWU9SCgoQUtuLEplZSk9Pnt2YXIgTFFlPUg0KCk7ZnVuY3Rpb24ga1FlKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gTFFlKHQsZSl9fUplZS5leHBvcnRzPWtRZX0pO3ZhciBlcmU9SCgoUEtuLHRyZSk9Pnt2YXIgUlFlPVhzdCgpLE5RZT1RZWUoKSxEUWU9S0IoKSxPUWU9WFMoKTtmdW5jdGlvbiB6UWUoZSl7cmV0dXJuIERRZShlKT9SUWUoT1FlKGUpKTpOUWUoZSl9dHJlLmV4cG9ydHM9elFlfSk7dmFyIEJmPUgoKElLbixycmUpPT57dmFyIEZRZT13ZWUoKSxCUWU9S2VlKCksSFFlPXUwKCksVlFlPVRpKCksVVFlPWVyZSgpO2Z1bmN0aW9uIHFRZShlKXtyZXR1cm4gdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTplPT1udWxsP0hRZTp0eXBlb2YgZT09Im9iamVjdCI/VlFlKGUpP0JRZShlWzBdLGVbMV0pOkZRZShlKTpVUWUoZSl9cnJlLmV4cG9ydHM9cVFlfSk7dmFyICRzdD1IKChMS24sbnJlKT0+e3ZhciBHUWU9X3N0KCksV1FlPXp0ZSgpLFlRZT1CZigpLGpRZT1UaSgpO2Z1bmN0aW9uIFhRZShlLHQpe3ZhciByPWpRZShlKT9HUWU6V1FlO3JldHVybiByKGUsWVFlKHQsMykpfW5yZS5leHBvcnRzPVhRZX0pO3ZhciBvcmU9SCgoa0tuLGlyZSk9Pnt2YXIgJFFlPU9iamVjdC5wcm90b3R5cGUsS1FlPSRRZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBaUWUoZSx0KXtyZXR1cm4gZSE9bnVsbCYmS1FlLmNhbGwoZSx0KX1pcmUuZXhwb3J0cz1aUWV9KTt2YXIgS3N0PUgoKFJLbixhcmUpPT57dmFyIEpRZT1vcmUoKSxRUWU9WXN0KCk7ZnVuY3Rpb24gdHRyKGUsdCl7cmV0dXJuIGUhPW51bGwmJlFRZShlLHQsSlFlKX1hcmUuZXhwb3J0cz10dHJ9KTt2YXIgbHJlPUgoKE5LbixzcmUpPT57dmFyIGV0cj1CQigpLHJ0cj1LdigpLG50cj1VUygpLGl0cj1UaSgpLG90cj1GZigpLGF0cj1YdigpLHN0cj1ONCgpLGx0cj1XUygpLGN0cj0iW29iamVjdCBNYXBdIix1dHI9IltvYmplY3QgU2V0XSIsaHRyPU9iamVjdC5wcm90b3R5cGUsZnRyPWh0ci5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBwdHIoZSl7aWYoZT09bnVsbClyZXR1cm4hMDtpZihvdHIoZSkmJihpdHIoZSl8fHR5cGVvZiBlPT0ic3RyaW5nInx8dHlwZW9mIGUuc3BsaWNlPT0iZnVuY3Rpb24ifHxhdHIoZSl8fGx0cihlKXx8bnRyKGUpKSlyZXR1cm4hZS5sZW5ndGg7dmFyIHQ9cnRyKGUpO2lmKHQ9PWN0cnx8dD09dXRyKXJldHVybiFlLnNpemU7aWYoc3RyKGUpKXJldHVybiFldHIoZSkubGVuZ3RoO2Zvcih2YXIgciBpbiBlKWlmKGZ0ci5jYWxsKGUscikpcmV0dXJuITE7cmV0dXJuITB9c3JlLmV4cG9ydHM9cHRyfSk7dmFyIFpzdD1IKChES24sY3JlKT0+e2Z1bmN0aW9uIGR0cihlKXtyZXR1cm4gZT09PXZvaWQgMH1jcmUuZXhwb3J0cz1kdHJ9KTt2YXIgSnN0PUgoKE9Lbix1cmUpPT57dmFyIG10cj16NCgpLGd0cj1GZigpO2Z1bmN0aW9uIF90cihlLHQpe3ZhciByPS0xLG49Z3RyKGUpP0FycmF5KGUubGVuZ3RoKTpbXTtyZXR1cm4gbXRyKGUsZnVuY3Rpb24oaSxvLGEpe25bKytyXT10KGksbyxhKX0pLG59dXJlLmV4cG9ydHM9X3RyfSk7dmFyIFFzdD1IKCh6S24saHJlKT0+e3ZhciB5dHI9RjQoKSx2dHI9QmYoKSx4dHI9SnN0KCksYnRyPVRpKCk7ZnVuY3Rpb24gd3RyKGUsdCl7dmFyIHI9YnRyKGUpP3l0cjp4dHI7cmV0dXJuIHIoZSx2dHIodCwzKSl9aHJlLmV4cG9ydHM9d3RyfSk7dmFyIHByZT1IKChGS24sZnJlKT0+e2Z1bmN0aW9uIFN0cihlLHQscixuKXt2YXIgaT0tMSxvPWU9PW51bGw/MDplLmxlbmd0aDtmb3IobiYmbyYmKHI9ZVsrK2ldKTsrK2k8bzspcj10KHIsZVtpXSxpLGUpO3JldHVybiByfWZyZS5leHBvcnRzPVN0cn0pO3ZhciBtcmU9SCgoQktuLGRyZSk9PntmdW5jdGlvbiBNdHIoZSx0LHIsbixpKXtyZXR1cm4gaShlLGZ1bmN0aW9uKG8sYSxzKXtyPW4/KG49ITEsbyk6dChyLG8sYSxzKX0pLHJ9ZHJlLmV4cG9ydHM9TXRyfSk7dmFyIHRsdD1IKChIS24sZ3JlKT0+e3ZhciBFdHI9cHJlKCksVHRyPXo0KCksQ3RyPUJmKCksQXRyPW1yZSgpLFB0cj1UaSgpO2Z1bmN0aW9uIEl0cihlLHQscil7dmFyIG49UHRyKGUpP0V0cjpBdHIsaT1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIG4oZSxDdHIodCw0KSxyLGksVHRyKX1ncmUuZXhwb3J0cz1JdHJ9KTt2YXIgeXJlPUgoKFZLbixfcmUpPT57dmFyIEx0cj1zMCgpLGt0cj1UaSgpLFJ0cj1XdSgpLE50cj0iW29iamVjdCBTdHJpbmddIjtmdW5jdGlvbiBEdHIoZSl7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nInx8IWt0cihlKSYmUnRyKGUpJiZMdHIoZSk9PU50cn1fcmUuZXhwb3J0cz1EdHJ9KTt2YXIgeHJlPUgoKFVLbix2cmUpPT57dmFyIE90cj1Yc3QoKSx6dHI9T3RyKCJsZW5ndGgiKTt2cmUuZXhwb3J0cz16dHJ9KTt2YXIgd3JlPUgoKHFLbixicmUpPT57dmFyIEZ0cj0iXFx1ZDgwMC1cXHVkZmZmIixCdHI9IlxcdTAzMDAtXFx1MDM2ZiIsSHRyPSJcXHVmZTIwLVxcdWZlMmYiLFZ0cj0iXFx1MjBkMC1cXHUyMGZmIixVdHI9QnRyK0h0citWdHIscXRyPSJcXHVmZTBlXFx1ZmUwZiIsR3RyPSJcXHUyMDBkIixXdHI9UmVnRXhwKCJbIitHdHIrRnRyK1V0citxdHIrIl0iKTtmdW5jdGlvbiBZdHIoZSl7cmV0dXJuIFd0ci50ZXN0KGUpfWJyZS5leHBvcnRzPVl0cn0pO3ZhciBMcmU9SCgoR0tuLElyZSk9Pnt2YXIgTXJlPSJcXHVkODAwLVxcdWRmZmYiLGp0cj0iXFx1MDMwMC1cXHUwMzZmIixYdHI9IlxcdWZlMjAtXFx1ZmUyZiIsJHRyPSJcXHUyMGQwLVxcdTIwZmYiLEt0cj1qdHIrWHRyKyR0cixadHI9IlxcdWZlMGVcXHVmZTBmIixKdHI9IlsiK01yZSsiXSIsZWx0PSJbIitLdHIrIl0iLHJsdD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixRdHI9Iig/OiIrZWx0KyJ8IitybHQrIikiLEVyZT0iW14iK01yZSsiXSIsVHJlPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixDcmU9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHRlcj0iXFx1MjAwZCIsQXJlPVF0cisiPyIsUHJlPSJbIitadHIrIl0/IixlZXI9Iig/OiIrdGVyKyIoPzoiK1tFcmUsVHJlLENyZV0uam9pbigifCIpKyIpIitQcmUrQXJlKyIpKiIscmVyPVByZStBcmUrZWVyLG5lcj0iKD86IitbRXJlK2VsdCsiPyIsZWx0LFRyZSxDcmUsSnRyXS5qb2luKCJ8IikrIikiLFNyZT1SZWdFeHAocmx0KyIoPz0iK3JsdCsiKXwiK25lcityZXIsImciKTtmdW5jdGlvbiBpZXIoZSl7Zm9yKHZhciB0PVNyZS5sYXN0SW5kZXg9MDtTcmUudGVzdChlKTspKyt0O3JldHVybiB0fUlyZS5leHBvcnRzPWllcn0pO3ZhciBScmU9SCgoV0tuLGtyZSk9Pnt2YXIgb2VyPXhyZSgpLGFlcj13cmUoKSxzZXI9THJlKCk7ZnVuY3Rpb24gbGVyKGUpe3JldHVybiBhZXIoZSk/c2VyKGUpOm9lcihlKX1rcmUuZXhwb3J0cz1sZXJ9KTt2YXIgRHJlPUgoKFlLbixOcmUpPT57dmFyIGNlcj1CQigpLHVlcj1LdigpLGhlcj1GZigpLGZlcj15cmUoKSxwZXI9UnJlKCksZGVyPSJbb2JqZWN0IE1hcF0iLG1lcj0iW29iamVjdCBTZXRdIjtmdW5jdGlvbiBnZXIoZSl7aWYoZT09bnVsbClyZXR1cm4gMDtpZihoZXIoZSkpcmV0dXJuIGZlcihlKT9wZXIoZSk6ZS5sZW5ndGg7dmFyIHQ9dWVyKGUpO3JldHVybiB0PT1kZXJ8fHQ9PW1lcj9lLnNpemU6Y2VyKGUpLmxlbmd0aH1OcmUuZXhwb3J0cz1nZXJ9KTt2YXIgenJlPUgoKGpLbixPcmUpPT57dmFyIF9lcj1PQigpLHllcj1Jc3QoKSx2ZXI9WUIoKSx4ZXI9QmYoKSxiZXI9TzQoKSx3ZXI9VGkoKSxTZXI9WHYoKSxNZXI9elMoKSxFZXI9U2woKSxUZXI9V1MoKTtmdW5jdGlvbiBDZXIoZSx0LHIpe3ZhciBuPXdlcihlKSxpPW58fFNlcihlKXx8VGVyKGUpO2lmKHQ9eGVyKHQsNCkscj09bnVsbCl7dmFyIG89ZSYmZS5jb25zdHJ1Y3RvcjtpP3I9bj9uZXcgbzpbXTpFZXIoZSk/cj1NZXIobyk/eWVyKGJlcihlKSk6e306cj17fX1yZXR1cm4oaT9fZXI6dmVyKShlLGZ1bmN0aW9uKGEscyxsKXtyZXR1cm4gdChyLGEscyxsKX0pLHJ9T3JlLmV4cG9ydHM9Q2VyfSk7dmFyIFZyZT1IKChYS24sSHJlKT0+e3ZhciBGcmU9anYoKSxBZXI9VVMoKSxQZXI9VGkoKSxCcmU9RnJlP0ZyZS5pc0NvbmNhdFNwcmVhZGFibGU6dm9pZCAwO2Z1bmN0aW9uIEllcihlKXtyZXR1cm4gUGVyKGUpfHxBZXIoZSl8fCEhKEJyZSYmZSYmZVtCcmVdKX1IcmUuZXhwb3J0cz1JZXJ9KTt2YXIgWkI9SCgoJEtuLHFyZSk9Pnt2YXIgTGVyPVZCKCksa2VyPVZyZSgpO2Z1bmN0aW9uIFVyZShlLHQscixuLGkpe3ZhciBvPS0xLGE9ZS5sZW5ndGg7Zm9yKHJ8fChyPWtlciksaXx8KGk9W10pOysrbzxhOyl7dmFyIHM9ZVtvXTt0PjAmJnIocyk/dD4xP1VyZShzLHQtMSxyLG4saSk6TGVyKGkscyk6bnx8KGlbaS5sZW5ndGhdPXMpfXJldHVybiBpfXFyZS5leHBvcnRzPVVyZX0pO3ZhciBXcmU9SCgoS0tuLEdyZSk9PntmdW5jdGlvbiBSZXIoZSx0LHIpe3N3aXRjaChyLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBlLmNhbGwodCk7Y2FzZSAxOnJldHVybiBlLmNhbGwodCxyWzBdKTtjYXNlIDI6cmV0dXJuIGUuY2FsbCh0LHJbMF0sclsxXSk7Y2FzZSAzOnJldHVybiBlLmNhbGwodCxyWzBdLHJbMV0sclsyXSl9cmV0dXJuIGUuYXBwbHkodCxyKX1HcmUuZXhwb3J0cz1SZXJ9KTt2YXIgbmx0PUgoKFpLbixqcmUpPT57dmFyIE5lcj1XcmUoKSxZcmU9TWF0aC5tYXg7ZnVuY3Rpb24gRGVyKGUsdCxyKXtyZXR1cm4gdD1ZcmUodD09PXZvaWQgMD9lLmxlbmd0aC0xOnQsMCksZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLGk9LTEsbz1ZcmUobi5sZW5ndGgtdCwwKSxhPUFycmF5KG8pOysraTxvOylhW2ldPW5bdCtpXTtpPS0xO2Zvcih2YXIgcz1BcnJheSh0KzEpOysraTx0OylzW2ldPW5baV07cmV0dXJuIHNbdF09cihhKSxOZXIoZSx0aGlzLHMpfX1qcmUuZXhwb3J0cz1EZXJ9KTt2YXIgS3JlPUgoKEpLbiwkcmUpPT57dmFyIE9lcj1HQigpLFhyZT1oc3QoKSx6ZXI9dTAoKSxGZXI9WHJlP2Z1bmN0aW9uKGUsdCl7cmV0dXJuIFhyZShlLCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOk9lcih0KSx3cml0YWJsZTohMH0pfTp6ZXI7JHJlLmV4cG9ydHM9RmVyfSk7dmFyIEpyZT1IKChRS24sWnJlKT0+e3ZhciBCZXI9ODAwLEhlcj0xNixWZXI9RGF0ZS5ub3c7ZnVuY3Rpb24gVWVyKGUpe3ZhciB0PTAscj0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBuPVZlcigpLGk9SGVyLShuLXIpO2lmKHI9bixpPjApe2lmKCsrdD49QmVyKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSB0PTA7cmV0dXJuIGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fVpyZS5leHBvcnRzPVVlcn0pO3ZhciBpbHQ9SCgodFpuLFFyZSk9Pnt2YXIgcWVyPUtyZSgpLEdlcj1KcmUoKSxXZXI9R2VyKHFlcik7UXJlLmV4cG9ydHM9V2VyfSk7dmFyIFY0PUgoKGVabix0bmUpPT57dmFyIFllcj11MCgpLGplcj1ubHQoKSxYZXI9aWx0KCk7ZnVuY3Rpb24gJGVyKGUsdCl7cmV0dXJuIFhlcihqZXIoZSx0LFllciksZSsiIil9dG5lLmV4cG9ydHM9JGVyfSk7dmFyIG9sdD1IKChyWm4sZW5lKT0+e2Z1bmN0aW9uIEtlcihlLHQscixuKXtmb3IodmFyIGk9ZS5sZW5ndGgsbz1yKyhuPzE6LTEpO24/by0tOisrbzxpOylpZih0KGVbb10sbyxlKSlyZXR1cm4gbztyZXR1cm4tMX1lbmUuZXhwb3J0cz1LZXJ9KTt2YXIgbm5lPUgoKG5abixybmUpPT57ZnVuY3Rpb24gWmVyKGUpe3JldHVybiBlIT09ZX1ybmUuZXhwb3J0cz1aZXJ9KTt2YXIgb25lPUgoKGlabixpbmUpPT57ZnVuY3Rpb24gSmVyKGUsdCxyKXtmb3IodmFyIG49ci0xLGk9ZS5sZW5ndGg7KytuPGk7KWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfWluZS5leHBvcnRzPUplcn0pO3ZhciBzbmU9SCgob1puLGFuZSk9Pnt2YXIgUWVyPW9sdCgpLHRycj1ubmUoKSxlcnI9b25lKCk7ZnVuY3Rpb24gcnJyKGUsdCxyKXtyZXR1cm4gdD09PXQ/ZXJyKGUsdCxyKTpRZXIoZSx0cnIscil9YW5lLmV4cG9ydHM9cnJyfSk7dmFyIGNuZT1IKChhWm4sbG5lKT0+e3ZhciBucnI9c25lKCk7ZnVuY3Rpb24gaXJyKGUsdCl7dmFyIHI9ZT09bnVsbD8wOmUubGVuZ3RoO3JldHVybiEhciYmbnJyKGUsdCwwKT4tMX1sbmUuZXhwb3J0cz1pcnJ9KTt2YXIgaG5lPUgoKHNabix1bmUpPT57ZnVuY3Rpb24gb3JyKGUsdCxyKXtmb3IodmFyIG49LTEsaT1lPT1udWxsPzA6ZS5sZW5ndGg7KytuPGk7KWlmKHIodCxlW25dKSlyZXR1cm4hMDtyZXR1cm4hMX11bmUuZXhwb3J0cz1vcnJ9KTt2YXIgcG5lPUgoKGxabixmbmUpPT57ZnVuY3Rpb24gYXJyKCl7fWZuZS5leHBvcnRzPWFycn0pO3ZhciBtbmU9SCgoY1puLGRuZSk9Pnt2YXIgYWx0PXdzdCgpLHNycj1wbmUoKSxscnI9WEIoKSxjcnI9MS8wLHVycj1hbHQmJjEvbHJyKG5ldyBhbHQoWywtMF0pKVsxXT09Y3JyP2Z1bmN0aW9uKGUpe3JldHVybiBuZXcgYWx0KGUpfTpzcnI7ZG5lLmV4cG9ydHM9dXJyfSk7dmFyIF9uZT1IKCh1Wm4sZ25lKT0+e3ZhciBocnI9T3N0KCksZnJyPWNuZSgpLHBycj1obmUoKSxkcnI9enN0KCksbXJyPW1uZSgpLGdycj1YQigpLF9ycj0yMDA7ZnVuY3Rpb24geXJyKGUsdCxyKXt2YXIgbj0tMSxpPWZycixvPWUubGVuZ3RoLGE9ITAscz1bXSxsPXM7aWYocilhPSExLGk9cHJyO2Vsc2UgaWYobz49X3JyKXt2YXIgYz10P251bGw6bXJyKGUpO2lmKGMpcmV0dXJuIGdycihjKTthPSExLGk9ZHJyLGw9bmV3IGhycn1lbHNlIGw9dD9bXTpzO3Q6Zm9yKDsrK248bzspe3ZhciB1PWVbbl0saD10P3QodSk6dTtpZih1PXJ8fHUhPT0wP3U6MCxhJiZoPT09aCl7Zm9yKHZhciBmPWwubGVuZ3RoO2YtLTspaWYobFtmXT09PWgpY29udGludWUgdDt0JiZsLnB1c2goaCkscy5wdXNoKHUpfWVsc2UgaShsLGgscil8fChsIT09cyYmbC5wdXNoKGgpLHMucHVzaCh1KSl9cmV0dXJuIHN9Z25lLmV4cG9ydHM9eXJyfSk7dmFyIHNsdD1IKChoWm4seW5lKT0+e3ZhciB2cnI9RmYoKSx4cnI9V3UoKTtmdW5jdGlvbiBicnIoZSl7cmV0dXJuIHhycihlKSYmdnJyKGUpfXluZS5leHBvcnRzPWJycn0pO3ZhciB4bmU9SCgoZlpuLHZuZSk9Pnt2YXIgd3JyPVpCKCksU3JyPVY0KCksTXJyPV9uZSgpLEVycj1zbHQoKSxUcnI9U3JyKGZ1bmN0aW9uKGUpe3JldHVybiBNcnIod3JyKGUsMSxFcnIsITApKX0pO3ZuZS5leHBvcnRzPVRycn0pO3ZhciB3bmU9SCgocFpuLGJuZSk9Pnt2YXIgQ3JyPUY0KCk7ZnVuY3Rpb24gQXJyKGUsdCl7cmV0dXJuIENycih0LGZ1bmN0aW9uKHIpe3JldHVybiBlW3JdfSl9Ym5lLmV4cG9ydHM9QXJyfSk7dmFyIGxsdD1IKChkWm4sU25lKT0+e3ZhciBQcnI9d25lKCksSXJyPUFkKCk7ZnVuY3Rpb24gTHJyKGUpe3JldHVybiBlPT1udWxsP1tdOlBycihlLElycihlKSl9U25lLmV4cG9ydHM9THJyfSk7dmFyIE1sPUgoKG1abixNbmUpPT57dmFyIEpCO2lmKHR5cGVvZiBNeD09ImZ1bmN0aW9uIil0cnl7SkI9e2Nsb25lOlN0ZSgpLGNvbnN0YW50OkdCKCksZWFjaDpEc3QoKSxmaWx0ZXI6JHN0KCksaGFzOktzdCgpLGlzQXJyYXk6VGkoKSxpc0VtcHR5OmxyZSgpLGlzRnVuY3Rpb246elMoKSxpc1VuZGVmaW5lZDpac3QoKSxrZXlzOkFkKCksbWFwOlFzdCgpLHJlZHVjZTp0bHQoKSxzaXplOkRyZSgpLHRyYW5zZm9ybTp6cmUoKSx1bmlvbjp4bmUoKSx2YWx1ZXM6bGx0KCl9fWNhdGNoKGUpe31KQnx8KEpCPXdpbmRvdy5fKTtNbmUuZXhwb3J0cz1KQn0pO3ZhciBRQj1IKChfWm4sQW5lKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgamU9TWwoKTtBbmUuZXhwb3J0cz1jcjt2YXIga3JyPSJcMCIsSnY9IlwwIixFbmU9IgEiO2Z1bmN0aW9uIGNyKGUpe3RoaXMuX2lzRGlyZWN0ZWQ9amUuaGFzKGUsImRpcmVjdGVkIik/ZS5kaXJlY3RlZDohMCx0aGlzLl9pc011bHRpZ3JhcGg9amUuaGFzKGUsIm11bHRpZ3JhcGgiKT9lLm11bHRpZ3JhcGg6ITEsdGhpcy5faXNDb21wb3VuZD1qZS5oYXMoZSwiY29tcG91bmQiKT9lLmNvbXBvdW5kOiExLHRoaXMuX2xhYmVsPXZvaWQgMCx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49amUuY29uc3RhbnQodm9pZCAwKSx0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm49amUuY29uc3RhbnQodm9pZCAwKSx0aGlzLl9ub2Rlcz17fSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcGFyZW50PXt9LHRoaXMuX2NoaWxkcmVuPXt9LHRoaXMuX2NoaWxkcmVuW0p2XT17fSksdGhpcy5faW49e30sdGhpcy5fcHJlZHM9e30sdGhpcy5fb3V0PXt9LHRoaXMuX3N1Y3M9e30sdGhpcy5fZWRnZU9ianM9e30sdGhpcy5fZWRnZUxhYmVscz17fX1jci5wcm90b3R5cGUuX25vZGVDb3VudD0wO2NyLnByb3RvdHlwZS5fZWRnZUNvdW50PTA7Y3IucHJvdG90eXBlLmlzRGlyZWN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNEaXJlY3RlZH07Y3IucHJvdG90eXBlLmlzTXVsdGlncmFwaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc011bHRpZ3JhcGh9O2NyLnByb3RvdHlwZS5pc0NvbXBvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzQ29tcG91bmR9O2NyLnByb3RvdHlwZS5zZXRHcmFwaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fbGFiZWw9ZSx0aGlzfTtjci5wcm90b3R5cGUuZ3JhcGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGFiZWx9O2NyLnByb3RvdHlwZS5zZXREZWZhdWx0Tm9kZUxhYmVsPWZ1bmN0aW9uKGUpe3JldHVybiBqZS5pc0Z1bmN0aW9uKGUpfHwoZT1qZS5jb25zdGFudChlKSksdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuPWUsdGhpc307Y3IucHJvdG90eXBlLm5vZGVDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2RlQ291bnR9O2NyLnByb3RvdHlwZS5ub2Rlcz1mdW5jdGlvbigpe3JldHVybiBqZS5rZXlzKHRoaXMuX25vZGVzKX07Y3IucHJvdG90eXBlLnNvdXJjZXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBqZS5maWx0ZXIodGhpcy5ub2RlcygpLGZ1bmN0aW9uKHQpe3JldHVybiBqZS5pc0VtcHR5KGUuX2luW3RdKX0pfTtjci5wcm90b3R5cGUuc2lua3M9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBqZS5maWx0ZXIodGhpcy5ub2RlcygpLGZ1bmN0aW9uKHQpe3JldHVybiBqZS5pc0VtcHR5KGUuX291dFt0XSl9KX07Y3IucHJvdG90eXBlLnNldE5vZGVzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLG49dGhpcztyZXR1cm4gamUuZWFjaChlLGZ1bmN0aW9uKGkpe3IubGVuZ3RoPjE/bi5zZXROb2RlKGksdCk6bi5zZXROb2RlKGkpfSksdGhpc307Y3IucHJvdG90eXBlLnNldE5vZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gamUuaGFzKHRoaXMuX25vZGVzLGUpPyhhcmd1bWVudHMubGVuZ3RoPjEmJih0aGlzLl9ub2Rlc1tlXT10KSx0aGlzKToodGhpcy5fbm9kZXNbZV09YXJndW1lbnRzLmxlbmd0aD4xP3Q6dGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKGUpLHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9wYXJlbnRbZV09SnYsdGhpcy5fY2hpbGRyZW5bZV09e30sdGhpcy5fY2hpbGRyZW5bSnZdW2VdPSEwKSx0aGlzLl9pbltlXT17fSx0aGlzLl9wcmVkc1tlXT17fSx0aGlzLl9vdXRbZV09e30sdGhpcy5fc3Vjc1tlXT17fSwrK3RoaXMuX25vZGVDb3VudCx0aGlzKX07Y3IucHJvdG90eXBlLm5vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX25vZGVzW2VdfTtjci5wcm90b3R5cGUuaGFzTm9kZT1mdW5jdGlvbihlKXtyZXR1cm4gamUuaGFzKHRoaXMuX25vZGVzLGUpfTtjci5wcm90b3R5cGUucmVtb3ZlTm9kZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKGplLmhhcyh0aGlzLl9ub2RlcyxlKSl7dmFyIHI9ZnVuY3Rpb24obil7dC5yZW1vdmVFZGdlKHQuX2VkZ2VPYmpzW25dKX07ZGVsZXRlIHRoaXMuX25vZGVzW2VdLHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdChlKSxkZWxldGUgdGhpcy5fcGFyZW50W2VdLGplLmVhY2godGhpcy5jaGlsZHJlbihlKSxmdW5jdGlvbihuKXt0LnNldFBhcmVudChuKX0pLGRlbGV0ZSB0aGlzLl9jaGlsZHJlbltlXSksamUuZWFjaChqZS5rZXlzKHRoaXMuX2luW2VdKSxyKSxkZWxldGUgdGhpcy5faW5bZV0sZGVsZXRlIHRoaXMuX3ByZWRzW2VdLGplLmVhY2goamUua2V5cyh0aGlzLl9vdXRbZV0pLHIpLGRlbGV0ZSB0aGlzLl9vdXRbZV0sZGVsZXRlIHRoaXMuX3N1Y3NbZV0sLS10aGlzLl9ub2RlQ291bnR9cmV0dXJuIHRoaXN9O2NyLnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5faXNDb21wb3VuZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgcGFyZW50IGluIGEgbm9uLWNvbXBvdW5kIGdyYXBoIik7aWYoamUuaXNVbmRlZmluZWQodCkpdD1KdjtlbHNle3QrPSIiO2Zvcih2YXIgcj10OyFqZS5pc1VuZGVmaW5lZChyKTtyPXRoaXMucGFyZW50KHIpKWlmKHI9PT1lKXRocm93IG5ldyBFcnJvcigiU2V0dGluZyAiK3QrIiBhcyBwYXJlbnQgb2YgIitlKyIgd291bGQgY3JlYXRlIGEgY3ljbGUiKTt0aGlzLnNldE5vZGUodCl9cmV0dXJuIHRoaXMuc2V0Tm9kZShlKSx0aGlzLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdChlKSx0aGlzLl9wYXJlbnRbZV09dCx0aGlzLl9jaGlsZHJlblt0XVtlXT0hMCx0aGlzfTtjci5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0PWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbZV1dW2VdfTtjci5wcm90b3R5cGUucGFyZW50PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2lzQ29tcG91bmQpe3ZhciB0PXRoaXMuX3BhcmVudFtlXTtpZih0IT09SnYpcmV0dXJuIHR9fTtjci5wcm90b3R5cGUuY2hpbGRyZW49ZnVuY3Rpb24oZSl7aWYoamUuaXNVbmRlZmluZWQoZSkmJihlPUp2KSx0aGlzLl9pc0NvbXBvdW5kKXt2YXIgdD10aGlzLl9jaGlsZHJlbltlXTtpZih0KXJldHVybiBqZS5rZXlzKHQpfWVsc2V7aWYoZT09PUp2KXJldHVybiB0aGlzLm5vZGVzKCk7aWYodGhpcy5oYXNOb2RlKGUpKXJldHVybltdfX07Y3IucHJvdG90eXBlLnByZWRlY2Vzc29ycz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9wcmVkc1tlXTtpZih0KXJldHVybiBqZS5rZXlzKHQpfTtjci5wcm90b3R5cGUuc3VjY2Vzc29ycz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9zdWNzW2VdO2lmKHQpcmV0dXJuIGplLmtleXModCl9O2NyLnByb3RvdHlwZS5uZWlnaGJvcnM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcmVkZWNlc3NvcnMoZSk7aWYodClyZXR1cm4gamUudW5pb24odCx0aGlzLnN1Y2Nlc3NvcnMoZSkpfTtjci5wcm90b3R5cGUuaXNMZWFmPWZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzLmlzRGlyZWN0ZWQoKT90PXRoaXMuc3VjY2Vzc29ycyhlKTp0PXRoaXMubmVpZ2hib3JzKGUpLHQubGVuZ3RoPT09MH07Y3IucHJvdG90eXBlLmZpbHRlck5vZGVzPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyB0aGlzLmNvbnN0cnVjdG9yKHtkaXJlY3RlZDp0aGlzLl9pc0RpcmVjdGVkLG11bHRpZ3JhcGg6dGhpcy5faXNNdWx0aWdyYXBoLGNvbXBvdW5kOnRoaXMuX2lzQ29tcG91bmR9KTt0LnNldEdyYXBoKHRoaXMuZ3JhcGgoKSk7dmFyIHI9dGhpcztqZS5lYWNoKHRoaXMuX25vZGVzLGZ1bmN0aW9uKG8sYSl7ZShhKSYmdC5zZXROb2RlKGEsbyl9KSxqZS5lYWNoKHRoaXMuX2VkZ2VPYmpzLGZ1bmN0aW9uKG8pe3QuaGFzTm9kZShvLnYpJiZ0Lmhhc05vZGUoby53KSYmdC5zZXRFZGdlKG8sci5lZGdlKG8pKX0pO3ZhciBuPXt9O2Z1bmN0aW9uIGkobyl7dmFyIGE9ci5wYXJlbnQobyk7cmV0dXJuIGE9PT12b2lkIDB8fHQuaGFzTm9kZShhKT8obltvXT1hLGEpOmEgaW4gbj9uW2FdOmkoYSl9cmV0dXJuIHRoaXMuX2lzQ29tcG91bmQmJmplLmVhY2godC5ub2RlcygpLGZ1bmN0aW9uKG8pe3Quc2V0UGFyZW50KG8saShvKSl9KSx0fTtjci5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbD1mdW5jdGlvbihlKXtyZXR1cm4gamUuaXNGdW5jdGlvbihlKXx8KGU9amUuY29uc3RhbnQoZSkpLHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbj1lLHRoaXN9O2NyLnByb3RvdHlwZS5lZGdlQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWRnZUNvdW50fTtjci5wcm90b3R5cGUuZWRnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gamUudmFsdWVzKHRoaXMuX2VkZ2VPYmpzKX07Y3IucHJvdG90eXBlLnNldFBhdGg9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49YXJndW1lbnRzO3JldHVybiBqZS5yZWR1Y2UoZSxmdW5jdGlvbihpLG8pe3JldHVybiBuLmxlbmd0aD4xP3Iuc2V0RWRnZShpLG8sdCk6ci5zZXRFZGdlKGksbyksb30pLHRoaXN9O2NyLnByb3RvdHlwZS5zZXRFZGdlPWZ1bmN0aW9uKCl7dmFyIGUsdCxyLG4saT0hMSxvPWFyZ3VtZW50c1swXTt0eXBlb2Ygbz09Im9iamVjdCImJm8hPT1udWxsJiYidiJpbiBvPyhlPW8udix0PW8udyxyPW8ubmFtZSxhcmd1bWVudHMubGVuZ3RoPT09MiYmKG49YXJndW1lbnRzWzFdLGk9ITApKTooZT1vLHQ9YXJndW1lbnRzWzFdLHI9YXJndW1lbnRzWzNdLGFyZ3VtZW50cy5sZW5ndGg+MiYmKG49YXJndW1lbnRzWzJdLGk9ITApKSxlPSIiK2UsdD0iIit0LGplLmlzVW5kZWZpbmVkKHIpfHwocj0iIityKTt2YXIgYT1VNCh0aGlzLl9pc0RpcmVjdGVkLGUsdCxyKTtpZihqZS5oYXModGhpcy5fZWRnZUxhYmVscyxhKSlyZXR1cm4gaSYmKHRoaXMuX2VkZ2VMYWJlbHNbYV09biksdGhpcztpZighamUuaXNVbmRlZmluZWQocikmJiF0aGlzLl9pc011bHRpZ3JhcGgpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2V0IGEgbmFtZWQgZWRnZSB3aGVuIGlzTXVsdGlncmFwaCA9IGZhbHNlIik7dGhpcy5zZXROb2RlKGUpLHRoaXMuc2V0Tm9kZSh0KSx0aGlzLl9lZGdlTGFiZWxzW2FdPWk/bjp0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4oZSx0LHIpO3ZhciBzPVJycih0aGlzLl9pc0RpcmVjdGVkLGUsdCxyKTtyZXR1cm4gZT1zLnYsdD1zLncsT2JqZWN0LmZyZWV6ZShzKSx0aGlzLl9lZGdlT2Jqc1thXT1zLFRuZSh0aGlzLl9wcmVkc1t0XSxlKSxUbmUodGhpcy5fc3Vjc1tlXSx0KSx0aGlzLl9pblt0XVthXT1zLHRoaXMuX291dFtlXVthXT1zLHRoaXMuX2VkZ2VDb3VudCsrLHRoaXN9O2NyLnByb3RvdHlwZS5lZGdlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPT09MT9jbHQodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOlU0KHRoaXMuX2lzRGlyZWN0ZWQsZSx0LHIpO3JldHVybiB0aGlzLl9lZGdlTGFiZWxzW25dfTtjci5wcm90b3R5cGUuaGFzRWRnZT1mdW5jdGlvbihlLHQscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aD09PTE/Y2x0KHRoaXMuX2lzRGlyZWN0ZWQsYXJndW1lbnRzWzBdKTpVNCh0aGlzLl9pc0RpcmVjdGVkLGUsdCxyKTtyZXR1cm4gamUuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsbil9O2NyLnByb3RvdHlwZS5yZW1vdmVFZGdlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPT09MT9jbHQodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOlU0KHRoaXMuX2lzRGlyZWN0ZWQsZSx0LHIpLGk9dGhpcy5fZWRnZU9ianNbbl07cmV0dXJuIGkmJihlPWkudix0PWkudyxkZWxldGUgdGhpcy5fZWRnZUxhYmVsc1tuXSxkZWxldGUgdGhpcy5fZWRnZU9ianNbbl0sQ25lKHRoaXMuX3ByZWRzW3RdLGUpLENuZSh0aGlzLl9zdWNzW2VdLHQpLGRlbGV0ZSB0aGlzLl9pblt0XVtuXSxkZWxldGUgdGhpcy5fb3V0W2VdW25dLHRoaXMuX2VkZ2VDb3VudC0tKSx0aGlzfTtjci5wcm90b3R5cGUuaW5FZGdlcz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX2luW2VdO2lmKHIpe3ZhciBuPWplLnZhbHVlcyhyKTtyZXR1cm4gdD9qZS5maWx0ZXIobixmdW5jdGlvbihpKXtyZXR1cm4gaS52PT09dH0pOm59fTtjci5wcm90b3R5cGUub3V0RWRnZXM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9vdXRbZV07aWYocil7dmFyIG49amUudmFsdWVzKHIpO3JldHVybiB0P2plLmZpbHRlcihuLGZ1bmN0aW9uKGkpe3JldHVybiBpLnc9PT10fSk6bn19O2NyLnByb3RvdHlwZS5ub2RlRWRnZXM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmluRWRnZXMoZSx0KTtpZihyKXJldHVybiByLmNvbmNhdCh0aGlzLm91dEVkZ2VzKGUsdCkpfTtmdW5jdGlvbiBUbmUoZSx0KXtlW3RdP2VbdF0rKzplW3RdPTF9ZnVuY3Rpb24gQ25lKGUsdCl7LS1lW3RdfHxkZWxldGUgZVt0XX1mdW5jdGlvbiBVNChlLHQscixuKXt2YXIgaT0iIit0LG89IiIrcjtpZighZSYmaT5vKXt2YXIgYT1pO2k9byxvPWF9cmV0dXJuIGkrRW5lK28rRW5lKyhqZS5pc1VuZGVmaW5lZChuKT9rcnI6bil9ZnVuY3Rpb24gUnJyKGUsdCxyLG4pe3ZhciBpPSIiK3Qsbz0iIityO2lmKCFlJiZpPm8pe3ZhciBhPWk7aT1vLG89YX12YXIgcz17djppLHc6b307cmV0dXJuIG4mJihzLm5hbWU9biksc31mdW5jdGlvbiBjbHQoZSx0KXtyZXR1cm4gVTQoZSx0LnYsdC53LHQubmFtZSl9fSk7dmFyIEluZT1IKCh5Wm4sUG5lKT0+e1BuZS5leHBvcnRzPSIyLjEuOCJ9KTt2YXIga25lPUgoKHZabixMbmUpPT57TG5lLmV4cG9ydHM9e0dyYXBoOlFCKCksdmVyc2lvbjpJbmUoKX19KTt2YXIgTm5lPUgoKHhabixSbmUpPT57dmFyIEhmPU1sKCksTnJyPVFCKCk7Um5lLmV4cG9ydHM9e3dyaXRlOkRycixyZWFkOkZycn07ZnVuY3Rpb24gRHJyKGUpe3ZhciB0PXtvcHRpb25zOntkaXJlY3RlZDplLmlzRGlyZWN0ZWQoKSxtdWx0aWdyYXBoOmUuaXNNdWx0aWdyYXBoKCksY29tcG91bmQ6ZS5pc0NvbXBvdW5kKCl9LG5vZGVzOk9ycihlKSxlZGdlczp6cnIoZSl9O3JldHVybiBIZi5pc1VuZGVmaW5lZChlLmdyYXBoKCkpfHwodC52YWx1ZT1IZi5jbG9uZShlLmdyYXBoKCkpKSx0fWZ1bmN0aW9uIE9ycihlKXtyZXR1cm4gSGYubWFwKGUubm9kZXMoKSxmdW5jdGlvbih0KXt2YXIgcj1lLm5vZGUodCksbj1lLnBhcmVudCh0KSxpPXt2OnR9O3JldHVybiBIZi5pc1VuZGVmaW5lZChyKXx8KGkudmFsdWU9ciksSGYuaXNVbmRlZmluZWQobil8fChpLnBhcmVudD1uKSxpfSl9ZnVuY3Rpb24genJyKGUpe3JldHVybiBIZi5tYXAoZS5lZGdlcygpLGZ1bmN0aW9uKHQpe3ZhciByPWUuZWRnZSh0KSxuPXt2OnQudix3OnQud307cmV0dXJuIEhmLmlzVW5kZWZpbmVkKHQubmFtZSl8fChuLm5hbWU9dC5uYW1lKSxIZi5pc1VuZGVmaW5lZChyKXx8KG4udmFsdWU9ciksbn0pfWZ1bmN0aW9uIEZycihlKXt2YXIgdD1uZXcgTnJyKGUub3B0aW9ucykuc2V0R3JhcGgoZS52YWx1ZSk7cmV0dXJuIEhmLmVhY2goZS5ub2RlcyxmdW5jdGlvbihyKXt0LnNldE5vZGUoci52LHIudmFsdWUpLHIucGFyZW50JiZ0LnNldFBhcmVudChyLnYsci5wYXJlbnQpfSksSGYuZWFjaChlLmVkZ2VzLGZ1bmN0aW9uKHIpe3Quc2V0RWRnZSh7djpyLnYsdzpyLncsbmFtZTpyLm5hbWV9LHIudmFsdWUpfSksdH19KTt2YXIgT25lPUgoKGJabixEbmUpPT57dmFyIHRIPU1sKCk7RG5lLmV4cG9ydHM9QnJyO2Z1bmN0aW9uIEJycihlKXt2YXIgdD17fSxyPVtdLG47ZnVuY3Rpb24gaShvKXt0SC5oYXModCxvKXx8KHRbb109ITAsbi5wdXNoKG8pLHRILmVhY2goZS5zdWNjZXNzb3JzKG8pLGkpLHRILmVhY2goZS5wcmVkZWNlc3NvcnMobyksaSkpfXJldHVybiB0SC5lYWNoKGUubm9kZXMoKSxmdW5jdGlvbihvKXtuPVtdLGkobyksbi5sZW5ndGgmJnIucHVzaChuKX0pLHJ9fSk7dmFyIHVsdD1IKCh3Wm4sRm5lKT0+e3ZhciB6bmU9TWwoKTtGbmUuZXhwb3J0cz1CYztmdW5jdGlvbiBCYygpe3RoaXMuX2Fycj1bXSx0aGlzLl9rZXlJbmRpY2VzPXt9fUJjLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fyci5sZW5ndGh9O0JjLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fyci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSl9O0JjLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHpuZS5oYXModGhpcy5fa2V5SW5kaWNlcyxlKX07QmMucHJvdG90eXBlLnByaW9yaXR5PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2tleUluZGljZXNbZV07aWYodCE9PXZvaWQgMClyZXR1cm4gdGhpcy5fYXJyW3RdLnByaW9yaXR5fTtCYy5wcm90b3R5cGUubWluPWZ1bmN0aW9uKCl7aWYodGhpcy5zaXplKCk9PT0wKXRocm93IG5ldyBFcnJvcigiUXVldWUgdW5kZXJmbG93Iik7cmV0dXJuIHRoaXMuX2FyclswXS5rZXl9O0JjLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9rZXlJbmRpY2VzO2lmKGU9U3RyaW5nKGUpLCF6bmUuaGFzKHIsZSkpe3ZhciBuPXRoaXMuX2FycixpPW4ubGVuZ3RoO3JldHVybiByW2VdPWksbi5wdXNoKHtrZXk6ZSxwcmlvcml0eTp0fSksdGhpcy5fZGVjcmVhc2UoaSksITB9cmV0dXJuITF9O0JjLnByb3RvdHlwZS5yZW1vdmVNaW49ZnVuY3Rpb24oKXt0aGlzLl9zd2FwKDAsdGhpcy5fYXJyLmxlbmd0aC0xKTt2YXIgZT10aGlzLl9hcnIucG9wKCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW2Uua2V5XSx0aGlzLl9oZWFwaWZ5KDApLGUua2V5fTtCYy5wcm90b3R5cGUuZGVjcmVhc2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9rZXlJbmRpY2VzW2VdO2lmKHQ+dGhpcy5fYXJyW3JdLnByaW9yaXR5KXRocm93IG5ldyBFcnJvcigiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBLZXk6ICIrZSsiIE9sZDogIit0aGlzLl9hcnJbcl0ucHJpb3JpdHkrIiBOZXc6ICIrdCk7dGhpcy5fYXJyW3JdLnByaW9yaXR5PXQsdGhpcy5fZGVjcmVhc2Uocil9O0JjLnByb3RvdHlwZS5faGVhcGlmeT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9hcnIscj0yKmUsbj1yKzEsaT1lO3I8dC5sZW5ndGgmJihpPXRbcl0ucHJpb3JpdHk8dFtpXS5wcmlvcml0eT9yOmksbjx0Lmxlbmd0aCYmKGk9dFtuXS5wcmlvcml0eTx0W2ldLnByaW9yaXR5P246aSksaSE9PWUmJih0aGlzLl9zd2FwKGUsaSksdGhpcy5faGVhcGlmeShpKSkpfTtCYy5wcm90b3R5cGUuX2RlY3JlYXNlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLl9hcnIscj10W2VdLnByaW9yaXR5LG47ZSE9PTAmJihuPWU+PjEsISh0W25dLnByaW9yaXR5PHIpKTspdGhpcy5fc3dhcChlLG4pLGU9bn07QmMucHJvdG90eXBlLl9zd2FwPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fYXJyLG49dGhpcy5fa2V5SW5kaWNlcyxpPXJbZV0sbz1yW3RdO3JbZV09byxyW3RdPWksbltvLmtleV09ZSxuW2kua2V5XT10fX0pO3ZhciBobHQ9SCgoU1puLEJuZSk9Pnt2YXIgSHJyPU1sKCksVnJyPXVsdCgpO0JuZS5leHBvcnRzPXFycjt2YXIgVXJyPUhyci5jb25zdGFudCgxKTtmdW5jdGlvbiBxcnIoZSx0LHIsbil7cmV0dXJuIEdycihlLFN0cmluZyh0KSxyfHxVcnIsbnx8ZnVuY3Rpb24oaSl7cmV0dXJuIGUub3V0RWRnZXMoaSl9KX1mdW5jdGlvbiBHcnIoZSx0LHIsbil7dmFyIGk9e30sbz1uZXcgVnJyLGEscyxsPWZ1bmN0aW9uKGMpe3ZhciB1PWMudiE9PWE/Yy52OmMudyxoPWlbdV0sZj1yKGMpLHA9cy5kaXN0YW5jZStmO2lmKGY8MCl0aHJvdyBuZXcgRXJyb3IoImRpamtzdHJhIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGVkZ2Ugd2VpZ2h0cy4gQmFkIGVkZ2U6ICIrYysiIFdlaWdodDogIitmKTtwPGguZGlzdGFuY2UmJihoLmRpc3RhbmNlPXAsaC5wcmVkZWNlc3Nvcj1hLG8uZGVjcmVhc2UodSxwKSl9O2ZvcihlLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgdT1jPT09dD8wOk51bWJlci5QT1NJVElWRV9JTkZJTklUWTtpW2NdPXtkaXN0YW5jZTp1fSxvLmFkZChjLHUpfSk7by5zaXplKCk+MCYmKGE9by5yZW1vdmVNaW4oKSxzPWlbYV0scy5kaXN0YW5jZSE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7KW4oYSkuZm9yRWFjaChsKTtyZXR1cm4gaX19KTt2YXIgVm5lPUgoKE1abixIbmUpPT57dmFyIFdycj1obHQoKSxZcnI9TWwoKTtIbmUuZXhwb3J0cz1qcnI7ZnVuY3Rpb24ganJyKGUsdCxyKXtyZXR1cm4gWXJyLnRyYW5zZm9ybShlLm5vZGVzKCksZnVuY3Rpb24obixpKXtuW2ldPVdycihlLGksdCxyKX0se30pfX0pO3ZhciBmbHQ9SCgoRVpuLHFuZSk9Pnt2YXIgVW5lPU1sKCk7cW5lLmV4cG9ydHM9WHJyO2Z1bmN0aW9uIFhycihlKXt2YXIgdD0wLHI9W10sbj17fSxpPVtdO2Z1bmN0aW9uIG8oYSl7dmFyIHM9blthXT17b25TdGFjazohMCxsb3dsaW5rOnQsaW5kZXg6dCsrfTtpZihyLnB1c2goYSksZS5zdWNjZXNzb3JzKGEpLmZvckVhY2goZnVuY3Rpb24odSl7VW5lLmhhcyhuLHUpP25bdV0ub25TdGFjayYmKHMubG93bGluaz1NYXRoLm1pbihzLmxvd2xpbmssblt1XS5pbmRleCkpOihvKHUpLHMubG93bGluaz1NYXRoLm1pbihzLmxvd2xpbmssblt1XS5sb3dsaW5rKSl9KSxzLmxvd2xpbms9PT1zLmluZGV4KXt2YXIgbD1bXSxjO2RvIGM9ci5wb3AoKSxuW2NdLm9uU3RhY2s9ITEsbC5wdXNoKGMpO3doaWxlKGEhPT1jKTtpLnB1c2gobCl9fXJldHVybiBlLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbihhKXtVbmUuaGFzKG4sYSl8fG8oYSl9KSxpfX0pO3ZhciBXbmU9SCgoVFpuLEduZSk9Pnt2YXIgJHJyPU1sKCksS3JyPWZsdCgpO0duZS5leHBvcnRzPVpycjtmdW5jdGlvbiBacnIoZSl7cmV0dXJuICRyci5maWx0ZXIoS3JyKGUpLGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4xfHx0Lmxlbmd0aD09PTEmJmUuaGFzRWRnZSh0WzBdLHRbMF0pfSl9fSk7dmFyIGpuZT1IKChDWm4sWW5lKT0+e3ZhciBKcnI9TWwoKTtZbmUuZXhwb3J0cz10bnI7dmFyIFFycj1KcnIuY29uc3RhbnQoMSk7ZnVuY3Rpb24gdG5yKGUsdCxyKXtyZXR1cm4gZW5yKGUsdHx8UXJyLHJ8fGZ1bmN0aW9uKG4pe3JldHVybiBlLm91dEVkZ2VzKG4pfSl9ZnVuY3Rpb24gZW5yKGUsdCxyKXt2YXIgbj17fSxpPWUubm9kZXMoKTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKG8pe25bb109e30sbltvXVtvXT17ZGlzdGFuY2U6MH0saS5mb3JFYWNoKGZ1bmN0aW9uKGEpe28hPT1hJiYobltvXVthXT17ZGlzdGFuY2U6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfSl9KSxyKG8pLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHM9YS52PT09bz9hLnc6YS52LGw9dChhKTtuW29dW3NdPXtkaXN0YW5jZTpsLHByZWRlY2Vzc29yOm99fSl9KSxpLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIGE9bltvXTtpLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIGw9bltzXTtpLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIHU9bFtvXSxoPWFbY10sZj1sW2NdLHA9dS5kaXN0YW5jZStoLmRpc3RhbmNlO3A8Zi5kaXN0YW5jZSYmKGYuZGlzdGFuY2U9cCxmLnByZWRlY2Vzc29yPWgucHJlZGVjZXNzb3IpfSl9KX0pLG59fSk7dmFyIHBsdD1IKChBWm4sJG5lKT0+e3ZhciBxND1NbCgpOyRuZS5leHBvcnRzPVhuZTtYbmUuQ3ljbGVFeGNlcHRpb249ZUg7ZnVuY3Rpb24gWG5lKGUpe3ZhciB0PXt9LHI9e30sbj1bXTtmdW5jdGlvbiBpKG8pe2lmKHE0LmhhcyhyLG8pKXRocm93IG5ldyBlSDtxNC5oYXModCxvKXx8KHJbb109ITAsdFtvXT0hMCxxNC5lYWNoKGUucHJlZGVjZXNzb3JzKG8pLGkpLGRlbGV0ZSByW29dLG4ucHVzaChvKSl9aWYocTQuZWFjaChlLnNpbmtzKCksaSkscTQuc2l6ZSh0KSE9PWUubm9kZUNvdW50KCkpdGhyb3cgbmV3IGVIO3JldHVybiBufWZ1bmN0aW9uIGVIKCl7fWVILnByb3RvdHlwZT1uZXcgRXJyb3J9KTt2YXIgSm5lPUgoKFBabixabmUpPT57dmFyIEtuZT1wbHQoKTtabmUuZXhwb3J0cz1ybnI7ZnVuY3Rpb24gcm5yKGUpe3RyeXtLbmUoZSl9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIEtuZS5DeWNsZUV4Y2VwdGlvbilyZXR1cm4hMTt0aHJvdyB0fXJldHVybiEwfX0pO3ZhciBkbHQ9SCgoSVpuLHRpZSk9Pnt2YXIgckg9TWwoKTt0aWUuZXhwb3J0cz1ubnI7ZnVuY3Rpb24gbm5yKGUsdCxyKXtySC5pc0FycmF5KHQpfHwodD1bdF0pO3ZhciBuPShlLmlzRGlyZWN0ZWQoKT9lLnN1Y2Nlc3NvcnM6ZS5uZWlnaGJvcnMpLmJpbmQoZSksaT1bXSxvPXt9O3JldHVybiBySC5lYWNoKHQsZnVuY3Rpb24oYSl7aWYoIWUuaGFzTm9kZShhKSl0aHJvdyBuZXcgRXJyb3IoIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogIithKTtRbmUoZSxhLHI9PT0icG9zdCIsbyxuLGkpfSksaX1mdW5jdGlvbiBRbmUoZSx0LHIsbixpLG8pe3JILmhhcyhuLHQpfHwoblt0XT0hMCxyfHxvLnB1c2godCksckguZWFjaChpKHQpLGZ1bmN0aW9uKGEpe1FuZShlLGEscixuLGksbyl9KSxyJiZvLnB1c2godCkpfX0pO3ZhciByaWU9SCgoTFpuLGVpZSk9Pnt2YXIgaW5yPWRsdCgpO2VpZS5leHBvcnRzPW9ucjtmdW5jdGlvbiBvbnIoZSx0KXtyZXR1cm4gaW5yKGUsdCwicG9zdCIpfX0pO3ZhciBpaWU9SCgoa1puLG5pZSk9Pnt2YXIgYW5yPWRsdCgpO25pZS5leHBvcnRzPXNucjtmdW5jdGlvbiBzbnIoZSx0KXtyZXR1cm4gYW5yKGUsdCwicHJlIil9fSk7dmFyIHNpZT1IKChSWm4sYWllKT0+e3ZhciBvaWU9TWwoKSxsbnI9UUIoKSxjbnI9dWx0KCk7YWllLmV4cG9ydHM9dW5yO2Z1bmN0aW9uIHVucihlLHQpe3ZhciByPW5ldyBsbnIsbj17fSxpPW5ldyBjbnIsbztmdW5jdGlvbiBhKGwpe3ZhciBjPWwudj09PW8/bC53Omwudix1PWkucHJpb3JpdHkoYyk7aWYodSE9PXZvaWQgMCl7dmFyIGg9dChsKTtoPHUmJihuW2NdPW8saS5kZWNyZWFzZShjLGgpKX19aWYoZS5ub2RlQ291bnQoKT09PTApcmV0dXJuIHI7b2llLmVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKGwpe2kuYWRkKGwsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxyLnNldE5vZGUobCl9KSxpLmRlY3JlYXNlKGUubm9kZXMoKVswXSwwKTtmb3IodmFyIHM9ITE7aS5zaXplKCk+MDspe2lmKG89aS5yZW1vdmVNaW4oKSxvaWUuaGFzKG4sbykpci5zZXRFZGdlKG8sbltvXSk7ZWxzZXtpZihzKXRocm93IG5ldyBFcnJvcigiSW5wdXQgZ3JhcGggaXMgbm90IGNvbm5lY3RlZDogIitlKTtzPSEwfWUubm9kZUVkZ2VzKG8pLmZvckVhY2goYSl9cmV0dXJuIHJ9fSk7dmFyIGNpZT1IKChOWm4sbGllKT0+e2xpZS5leHBvcnRzPXtjb21wb25lbnRzOk9uZSgpLGRpamtzdHJhOmhsdCgpLGRpamtzdHJhQWxsOlZuZSgpLGZpbmRDeWNsZXM6V25lKCksZmxveWRXYXJzaGFsbDpqbmUoKSxpc0FjeWNsaWM6Sm5lKCkscG9zdG9yZGVyOnJpZSgpLHByZW9yZGVyOmlpZSgpLHByaW06c2llKCksdGFyamFuOmZsdCgpLHRvcHNvcnQ6cGx0KCl9fSk7dmFyIGZpZT1IKChEWm4saGllKT0+e3ZhciB1aWU9a25lKCk7aGllLmV4cG9ydHM9e0dyYXBoOnVpZS5HcmFwaCxqc29uOk5uZSgpLGFsZzpjaWUoKSx2ZXJzaW9uOnVpZS52ZXJzaW9ufX0pO3ZhciBIYz1IKChPWm4scGllKT0+e3ZhciBuSDtpZih0eXBlb2YgTXg9PSJmdW5jdGlvbiIpdHJ5e25IPWZpZSgpfWNhdGNoKGUpe31uSHx8KG5IPXdpbmRvdy5ncmFwaGxpYik7cGllLmV4cG9ydHM9bkh9KTt2YXIgbWllPUgoKEZabixkaWUpPT57dmFyIGhucj1rc3QoKSxmbnI9MSxwbnI9NDtmdW5jdGlvbiBkbnIoZSl7cmV0dXJuIGhucihlLGZucnxwbnIpfWRpZS5leHBvcnRzPWRucn0pO3ZhciBHND1IKChCWm4sZ2llKT0+e3ZhciBtbnI9WXYoKSxnbnI9RmYoKSxfbnI9STQoKSx5bnI9U2woKTtmdW5jdGlvbiB2bnIoZSx0LHIpe2lmKCF5bnIocikpcmV0dXJuITE7dmFyIG49dHlwZW9mIHQ7cmV0dXJuKG49PSJudW1iZXIiP2ducihyKSYmX25yKHQsci5sZW5ndGgpOm49PSJzdHJpbmciJiZ0IGluIHIpP21ucihyW3RdLGUpOiExfWdpZS5leHBvcnRzPXZucn0pO3ZhciB2aWU9SCgoSFpuLHlpZSk9Pnt2YXIgeG5yPVY0KCksYm5yPVl2KCksd25yPUc0KCksU25yPWMwKCksX2llPU9iamVjdC5wcm90b3R5cGUsTW5yPV9pZS5oYXNPd25Qcm9wZXJ0eSxFbnI9eG5yKGZ1bmN0aW9uKGUsdCl7ZT1PYmplY3QoZSk7dmFyIHI9LTEsbj10Lmxlbmd0aCxpPW4+Mj90WzJdOnZvaWQgMDtmb3IoaSYmd25yKHRbMF0sdFsxXSxpKSYmKG49MSk7KytyPG47KWZvcih2YXIgbz10W3JdLGE9U25yKG8pLHM9LTEsbD1hLmxlbmd0aDsrK3M8bDspe3ZhciBjPWFbc10sdT1lW2NdOyh1PT09dm9pZCAwfHxibnIodSxfaWVbY10pJiYhTW5yLmNhbGwoZSxjKSkmJihlW2NdPW9bY10pfXJldHVybiBlfSk7eWllLmV4cG9ydHM9RW5yfSk7dmFyIGJpZT1IKChWWm4seGllKT0+e3ZhciBUbnI9QmYoKSxDbnI9RmYoKSxBbnI9QWQoKTtmdW5jdGlvbiBQbnIoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXt2YXIgaT1PYmplY3QodCk7aWYoIUNucih0KSl7dmFyIG89VG5yKHIsMyk7dD1BbnIodCkscj1mdW5jdGlvbihzKXtyZXR1cm4gbyhpW3NdLHMsaSl9fXZhciBhPWUodCxyLG4pO3JldHVybiBhPi0xP2lbbz90W2FdOmFdOnZvaWQgMH19eGllLmV4cG9ydHM9UG5yfSk7dmFyIFNpZT1IKChVWm4sd2llKT0+e3ZhciBJbnI9L1xzLztmdW5jdGlvbiBMbnIoZSl7Zm9yKHZhciB0PWUubGVuZ3RoO3QtLSYmSW5yLnRlc3QoZS5jaGFyQXQodCkpOyk7cmV0dXJuIHR9d2llLmV4cG9ydHM9TG5yfSk7dmFyIEVpZT1IKChxWm4sTWllKT0+e3ZhciBrbnI9U2llKCksUm5yPS9eXHMrLztmdW5jdGlvbiBObnIoZSl7cmV0dXJuIGUmJmUuc2xpY2UoMCxrbnIoZSkrMSkucmVwbGFjZShSbnIsIiIpfU1pZS5leHBvcnRzPU5ucn0pO3ZhciBQaWU9SCgoR1puLEFpZSk9Pnt2YXIgRG5yPUVpZSgpLFRpZT1TbCgpLE9ucj1adigpLENpZT0wLzAsem5yPS9eWy0rXTB4WzAtOWEtZl0rJC9pLEZucj0vXjBiWzAxXSskL2ksQm5yPS9eMG9bMC03XSskL2ksSG5yPXBhcnNlSW50O2Z1bmN0aW9uIFZucihlKXtpZih0eXBlb2YgZT09Im51bWJlciIpcmV0dXJuIGU7aWYoT25yKGUpKXJldHVybiBDaWU7aWYoVGllKGUpKXt2YXIgdD10eXBlb2YgZS52YWx1ZU9mPT0iZnVuY3Rpb24iP2UudmFsdWVPZigpOmU7ZT1UaWUodCk/dCsiIjp0fWlmKHR5cGVvZiBlIT0ic3RyaW5nIilyZXR1cm4gZT09PTA/ZTorZTtlPURucihlKTt2YXIgcj1GbnIudGVzdChlKTtyZXR1cm4gcnx8Qm5yLnRlc3QoZSk/SG5yKGUuc2xpY2UoMikscj8yOjgpOnpuci50ZXN0KGUpP0NpZTorZX1BaWUuZXhwb3J0cz1WbnJ9KTt2YXIgbWx0PUgoKFdabixMaWUpPT57dmFyIFVucj1QaWUoKSxJaWU9MS8wLHFucj0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gR25yKGUpe2lmKCFlKXJldHVybiBlPT09MD9lOjA7aWYoZT1VbnIoZSksZT09PUlpZXx8ZT09PS1JaWUpe3ZhciB0PWU8MD8tMToxO3JldHVybiB0KnFucn1yZXR1cm4gZT09PWU/ZTowfUxpZS5leHBvcnRzPUducn0pO3ZhciBSaWU9SCgoWVpuLGtpZSk9Pnt2YXIgV25yPW1sdCgpO2Z1bmN0aW9uIFlucihlKXt2YXIgdD1XbnIoZSkscj10JTE7cmV0dXJuIHQ9PT10P3I/dC1yOnQ6MH1raWUuZXhwb3J0cz1ZbnJ9KTt2YXIgRGllPUgoKGpabixOaWUpPT57dmFyIGpucj1vbHQoKSxYbnI9QmYoKSwkbnI9UmllKCksS25yPU1hdGgubWF4O2Z1bmN0aW9uIFpucihlLHQscil7dmFyIG49ZT09bnVsbD8wOmUubGVuZ3RoO2lmKCFuKXJldHVybi0xO3ZhciBpPXI9PW51bGw/MDokbnIocik7cmV0dXJuIGk8MCYmKGk9S25yKG4raSwwKSksam5yKGUsWG5yKHQsMyksaSl9TmllLmV4cG9ydHM9Wm5yfSk7dmFyIHppZT1IKChYWm4sT2llKT0+e3ZhciBKbnI9YmllKCksUW5yPURpZSgpLHRpcj1KbnIoUW5yKTtPaWUuZXhwb3J0cz10aXJ9KTt2YXIgZ2x0PUgoKCRabixGaWUpPT57dmFyIGVpcj1aQigpO2Z1bmN0aW9uIHJpcihlKXt2YXIgdD1lPT1udWxsPzA6ZS5sZW5ndGg7cmV0dXJuIHQ/ZWlyKGUsMSk6W119RmllLmV4cG9ydHM9cmlyfSk7dmFyIEhpZT1IKChLWm4sQmllKT0+e3ZhciBuaXI9V0IoKSxpaXI9UnN0KCksb2lyPWMwKCk7ZnVuY3Rpb24gYWlyKGUsdCl7cmV0dXJuIGU9PW51bGw/ZTpuaXIoZSxpaXIodCksb2lyKX1CaWUuZXhwb3J0cz1haXJ9KTt2YXIgVWllPUgoKFpabixWaWUpPT57ZnVuY3Rpb24gc2lyKGUpe3ZhciB0PWU9PW51bGw/MDplLmxlbmd0aDtyZXR1cm4gdD9lW3QtMV06dm9pZCAwfVZpZS5leHBvcnRzPXNpcn0pO3ZhciBHaWU9SCgoSlpuLHFpZSk9Pnt2YXIgbGlyPUM0KCksY2lyPVlCKCksdWlyPUJmKCk7ZnVuY3Rpb24gaGlyKGUsdCl7dmFyIHI9e307cmV0dXJuIHQ9dWlyKHQsMyksY2lyKGUsZnVuY3Rpb24obixpLG8pe2xpcihyLGksdChuLGksbykpfSkscn1xaWUuZXhwb3J0cz1oaXJ9KTt2YXIgaUg9SCgoUVpuLFdpZSk9Pnt2YXIgZmlyPVp2KCk7ZnVuY3Rpb24gcGlyKGUsdCxyKXtmb3IodmFyIG49LTEsaT1lLmxlbmd0aDsrK248aTspe3ZhciBvPWVbbl0sYT10KG8pO2lmKGEhPW51bGwmJihzPT09dm9pZCAwP2E9PT1hJiYhZmlyKGEpOnIoYSxzKSkpdmFyIHM9YSxsPW99cmV0dXJuIGx9V2llLmV4cG9ydHM9cGlyfSk7dmFyIGppZT1IKCh0Sm4sWWllKT0+e2Z1bmN0aW9uIGRpcihlLHQpe3JldHVybiBlPnR9WWllLmV4cG9ydHM9ZGlyfSk7dmFyICRpZT1IKChlSm4sWGllKT0+e3ZhciBtaXI9aUgoKSxnaXI9amllKCksX2lyPXUwKCk7ZnVuY3Rpb24geWlyKGUpe3JldHVybiBlJiZlLmxlbmd0aD9taXIoZSxfaXIsZ2lyKTp2b2lkIDB9WGllLmV4cG9ydHM9eWlyfSk7dmFyIF9sdD1IKChySm4sS2llKT0+e3ZhciB2aXI9QzQoKSx4aXI9WXYoKTtmdW5jdGlvbiBiaXIoZSx0LHIpeyhyIT09dm9pZCAwJiYheGlyKGVbdF0scil8fHI9PT12b2lkIDAmJiEodCBpbiBlKSkmJnZpcihlLHQscil9S2llLmV4cG9ydHM9YmlyfSk7dmFyIFFpZT1IKChuSm4sSmllKT0+e3ZhciB3aXI9czAoKSxTaXI9TzQoKSxNaXI9V3UoKSxFaXI9IltvYmplY3QgT2JqZWN0XSIsVGlyPUZ1bmN0aW9uLnByb3RvdHlwZSxDaXI9T2JqZWN0LnByb3RvdHlwZSxaaWU9VGlyLnRvU3RyaW5nLEFpcj1DaXIuaGFzT3duUHJvcGVydHksUGlyPVppZS5jYWxsKE9iamVjdCk7ZnVuY3Rpb24gSWlyKGUpe2lmKCFNaXIoZSl8fHdpcihlKSE9RWlyKXJldHVybiExO3ZhciB0PVNpcihlKTtpZih0PT09bnVsbClyZXR1cm4hMDt2YXIgcj1BaXIuY2FsbCh0LCJjb25zdHJ1Y3RvciIpJiZ0LmNvbnN0cnVjdG9yO3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmciBpbnN0YW5jZW9mIHImJlppZS5jYWxsKHIpPT1QaXJ9SmllLmV4cG9ydHM9SWlyfSk7dmFyIHlsdD1IKChpSm4sdG9lKT0+e2Z1bmN0aW9uIExpcihlLHQpe2lmKCEodD09PSJjb25zdHJ1Y3RvciImJnR5cGVvZiBlW3RdPT0iZnVuY3Rpb24iKSYmdCE9Il9fcHJvdG9fXyIpcmV0dXJuIGVbdF19dG9lLmV4cG9ydHM9TGlyfSk7dmFyIHJvZT1IKChvSm4sZW9lKT0+e3ZhciBraXI9VlMoKSxSaXI9YzAoKTtmdW5jdGlvbiBOaXIoZSl7cmV0dXJuIGtpcihlLFJpcihlKSl9ZW9lLmV4cG9ydHM9TmlyfSk7dmFyIGxvZT1IKChhSm4sc29lKT0+e3ZhciBub2U9X2x0KCksRGlyPW1zdCgpLE9pcj1Qc3QoKSx6aXI9Z3N0KCksRmlyPUxzdCgpLGlvZT1VUygpLG9vZT1UaSgpLEJpcj1zbHQoKSxIaXI9WHYoKSxWaXI9elMoKSxVaXI9U2woKSxxaXI9UWllKCksR2lyPVdTKCksYW9lPXlsdCgpLFdpcj1yb2UoKTtmdW5jdGlvbiBZaXIoZSx0LHIsbixpLG8sYSl7dmFyIHM9YW9lKGUsciksbD1hb2UodCxyKSxjPWEuZ2V0KGwpO2lmKGMpe25vZShlLHIsYyk7cmV0dXJufXZhciB1PW8/byhzLGwscisiIixlLHQsYSk6dm9pZCAwLGg9dT09PXZvaWQgMDtpZihoKXt2YXIgZj1vb2UobCkscD0hZiYmSGlyKGwpLGQ9IWYmJiFwJiZHaXIobCk7dT1sLGZ8fHB8fGQ/b29lKHMpP3U9czpCaXIocyk/dT16aXIocyk6cD8oaD0hMSx1PURpcihsLCEwKSk6ZD8oaD0hMSx1PU9pcihsLCEwKSk6dT1bXTpxaXIobCl8fGlvZShsKT8odT1zLGlvZShzKT91PVdpcihzKTooIVVpcihzKXx8VmlyKHMpKSYmKHU9RmlyKGwpKSk6aD0hMX1oJiYoYS5zZXQobCx1KSxpKHUsbCxuLG8sYSksYS5kZWxldGUobCkpLG5vZShlLHIsdSl9c29lLmV4cG9ydHM9WWlyfSk7dmFyIGhvZT1IKChzSm4sdW9lKT0+e3ZhciBqaXI9VDQoKSxYaXI9X2x0KCksJGlyPVdCKCksS2lyPWxvZSgpLFppcj1TbCgpLEppcj1jMCgpLFFpcj15bHQoKTtmdW5jdGlvbiBjb2UoZSx0LHIsbixpKXtlIT09dCYmJGlyKHQsZnVuY3Rpb24obyxhKXtpZihpfHwoaT1uZXcgamlyKSxaaXIobykpS2lyKGUsdCxhLHIsY29lLG4saSk7ZWxzZXt2YXIgcz1uP24oUWlyKGUsYSksbyxhKyIiLGUsdCxpKTp2b2lkIDA7cz09PXZvaWQgMCYmKHM9byksWGlyKGUsYSxzKX19LEppcil9dW9lLmV4cG9ydHM9Y29lfSk7dmFyIHBvZT1IKChsSm4sZm9lKT0+e3ZhciB0b3I9VjQoKSxlb3I9RzQoKTtmdW5jdGlvbiByb3IoZSl7cmV0dXJuIHRvcihmdW5jdGlvbih0LHIpe3ZhciBuPS0xLGk9ci5sZW5ndGgsbz1pPjE/cltpLTFdOnZvaWQgMCxhPWk+Mj9yWzJdOnZvaWQgMDtmb3Iobz1lLmxlbmd0aD4zJiZ0eXBlb2Ygbz09ImZ1bmN0aW9uIj8oaS0tLG8pOnZvaWQgMCxhJiZlb3IoclswXSxyWzFdLGEpJiYobz1pPDM/dm9pZCAwOm8saT0xKSx0PU9iamVjdCh0KTsrK248aTspe3ZhciBzPXJbbl07cyYmZSh0LHMsbixvKX1yZXR1cm4gdH0pfWZvZS5leHBvcnRzPXJvcn0pO3ZhciBtb2U9SCgoY0puLGRvZSk9Pnt2YXIgbm9yPWhvZSgpLGlvcj1wb2UoKSxvb3I9aW9yKGZ1bmN0aW9uKGUsdCxyKXtub3IoZSx0LHIpfSk7ZG9lLmV4cG9ydHM9b29yfSk7dmFyIHZsdD1IKCh1Sm4sZ29lKT0+e2Z1bmN0aW9uIGFvcihlLHQpe3JldHVybiBlPHR9Z29lLmV4cG9ydHM9YW9yfSk7dmFyIHlvZT1IKChoSm4sX29lKT0+e3ZhciBzb3I9aUgoKSxsb3I9dmx0KCksY29yPXUwKCk7ZnVuY3Rpb24gdW9yKGUpe3JldHVybiBlJiZlLmxlbmd0aD9zb3IoZSxjb3IsbG9yKTp2b2lkIDB9X29lLmV4cG9ydHM9dW9yfSk7dmFyIHhvZT1IKChmSm4sdm9lKT0+e3ZhciBob3I9aUgoKSxwb3I9QmYoKSxkb3I9dmx0KCk7ZnVuY3Rpb24gbW9yKGUsdCl7cmV0dXJuIGUmJmUubGVuZ3RoP2hvcihlLHBvcih0LDIpLGRvcik6dm9pZCAwfXZvZS5leHBvcnRzPW1vcn0pO3ZhciB3b2U9SCgocEpuLGJvZSk9Pnt2YXIgZ29yPUZjKCksX29yPWZ1bmN0aW9uKCl7cmV0dXJuIGdvci5EYXRlLm5vdygpfTtib2UuZXhwb3J0cz1fb3J9KTt2YXIgRW9lPUgoKGRKbixNb2UpPT57dmFyIHlvcj1BNCgpLHZvcj1CNCgpLHhvcj1JNCgpLFNvZT1TbCgpLGJvcj1YUygpO2Z1bmN0aW9uIHdvcihlLHQscixuKXtpZighU29lKGUpKXJldHVybiBlO3Q9dm9yKHQsZSk7Zm9yKHZhciBpPS0xLG89dC5sZW5ndGgsYT1vLTEscz1lO3MhPW51bGwmJisraTxvOyl7dmFyIGw9Ym9yKHRbaV0pLGM9cjtpZihsPT09Il9fcHJvdG9fXyJ8fGw9PT0iY29uc3RydWN0b3IifHxsPT09InByb3RvdHlwZSIpcmV0dXJuIGU7aWYoaSE9YSl7dmFyIHU9c1tsXTtjPW4/bih1LGwscyk6dm9pZCAwLGM9PT12b2lkIDAmJihjPVNvZSh1KT91Onhvcih0W2krMV0pP1tdOnt9KX15b3IocyxsLGMpLHM9c1tsXX1yZXR1cm4gZX1Nb2UuZXhwb3J0cz13b3J9KTt2YXIgQ29lPUgoKG1KbixUb2UpPT57dmFyIFNvcj1INCgpLE1vcj1Fb2UoKSxFb3I9QjQoKTtmdW5jdGlvbiBUb3IoZSx0LHIpe2Zvcih2YXIgbj0tMSxpPXQubGVuZ3RoLG89e307KytuPGk7KXt2YXIgYT10W25dLHM9U29yKGUsYSk7cihzLGEpJiZNb3IobyxFb3IoYSxlKSxzKX1yZXR1cm4gb31Ub2UuZXhwb3J0cz1Ub3J9KTt2YXIgUG9lPUgoKGdKbixBb2UpPT57dmFyIENvcj1Db2UoKSxBb3I9anN0KCk7ZnVuY3Rpb24gUG9yKGUsdCl7cmV0dXJuIENvcihlLHQsZnVuY3Rpb24ocixuKXtyZXR1cm4gQW9yKGUsbil9KX1Bb2UuZXhwb3J0cz1Qb3J9KTt2YXIgTG9lPUgoKF9KbixJb2UpPT57dmFyIElvcj1nbHQoKSxMb3I9bmx0KCksa29yPWlsdCgpO2Z1bmN0aW9uIFJvcihlKXtyZXR1cm4ga29yKExvcihlLHZvaWQgMCxJb3IpLGUrIiIpfUlvZS5leHBvcnRzPVJvcn0pO3ZhciBSb2U9SCgoeUpuLGtvZSk9Pnt2YXIgTm9yPVBvZSgpLERvcj1Mb2UoKSxPb3I9RG9yKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PW51bGw/e306Tm9yKGUsdCl9KTtrb2UuZXhwb3J0cz1Pb3J9KTt2YXIgRG9lPUgoKHZKbixOb2UpPT57dmFyIHpvcj1NYXRoLmNlaWwsRm9yPU1hdGgubWF4O2Z1bmN0aW9uIEJvcihlLHQscixuKXtmb3IodmFyIGk9LTEsbz1Gb3Ioem9yKCh0LWUpLyhyfHwxKSksMCksYT1BcnJheShvKTtvLS07KWFbbj9vOisraV09ZSxlKz1yO3JldHVybiBhfU5vZS5leHBvcnRzPUJvcn0pO3ZhciB6b2U9SCgoeEpuLE9vZSk9Pnt2YXIgSG9yPURvZSgpLFZvcj1HNCgpLHhsdD1tbHQoKTtmdW5jdGlvbiBVb3IoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gbiYmdHlwZW9mIG4hPSJudW1iZXIiJiZWb3IodCxyLG4pJiYocj1uPXZvaWQgMCksdD14bHQodCkscj09PXZvaWQgMD8ocj10LHQ9MCk6cj14bHQociksbj1uPT09dm9pZCAwP3Q8cj8xOi0xOnhsdChuKSxIb3IodCxyLG4sZSl9fU9vZS5leHBvcnRzPVVvcn0pO3ZhciBCb2U9SCgoYkpuLEZvZSk9Pnt2YXIgcW9yPXpvZSgpLEdvcj1xb3IoKTtGb2UuZXhwb3J0cz1Hb3J9KTt2YXIgVm9lPUgoKHdKbixIb2UpPT57ZnVuY3Rpb24gV29yKGUsdCl7dmFyIHI9ZS5sZW5ndGg7Zm9yKGUuc29ydCh0KTtyLS07KWVbcl09ZVtyXS52YWx1ZTtyZXR1cm4gZX1Ib2UuZXhwb3J0cz1Xb3J9KTt2YXIgR29lPUgoKFNKbixxb2UpPT57dmFyIFVvZT1adigpO2Z1bmN0aW9uIFlvcihlLHQpe2lmKGUhPT10KXt2YXIgcj1lIT09dm9pZCAwLG49ZT09PW51bGwsaT1lPT09ZSxvPVVvZShlKSxhPXQhPT12b2lkIDAscz10PT09bnVsbCxsPXQ9PT10LGM9VW9lKHQpO2lmKCFzJiYhYyYmIW8mJmU+dHx8byYmYSYmbCYmIXMmJiFjfHxuJiZhJiZsfHwhciYmbHx8IWkpcmV0dXJuIDE7aWYoIW4mJiFvJiYhYyYmZTx0fHxjJiZyJiZpJiYhbiYmIW98fHMmJnImJml8fCFhJiZpfHwhbClyZXR1cm4tMX1yZXR1cm4gMH1xb2UuZXhwb3J0cz1Zb3J9KTt2YXIgWW9lPUgoKE1KbixXb2UpPT57dmFyIGpvcj1Hb2UoKTtmdW5jdGlvbiBYb3IoZSx0LHIpe2Zvcih2YXIgbj0tMSxpPWUuY3JpdGVyaWEsbz10LmNyaXRlcmlhLGE9aS5sZW5ndGgscz1yLmxlbmd0aDsrK248YTspe3ZhciBsPWpvcihpW25dLG9bbl0pO2lmKGwpe2lmKG4+PXMpcmV0dXJuIGw7dmFyIGM9cltuXTtyZXR1cm4gbCooYz09ImRlc2MiPy0xOjEpfX1yZXR1cm4gZS5pbmRleC10LmluZGV4fVdvZS5leHBvcnRzPVhvcn0pO3ZhciBYb2U9SCgoRUpuLGpvZSk9Pnt2YXIgYmx0PUY0KCksJG9yPUg0KCksS29yPUJmKCksWm9yPUpzdCgpLEpvcj1Wb2UoKSxRb3I9TDQoKSx0YXI9WW9lKCksZWFyPXUwKCkscmFyPVRpKCk7ZnVuY3Rpb24gbmFyKGUsdCxyKXt0Lmxlbmd0aD90PWJsdCh0LGZ1bmN0aW9uKG8pe3JldHVybiByYXIobyk/ZnVuY3Rpb24oYSl7cmV0dXJuICRvcihhLG8ubGVuZ3RoPT09MT9vWzBdOm8pfTpvfSk6dD1bZWFyXTt2YXIgbj0tMTt0PWJsdCh0LFFvcihLb3IpKTt2YXIgaT1ab3IoZSxmdW5jdGlvbihvLGEscyl7dmFyIGw9Ymx0KHQsZnVuY3Rpb24oYyl7cmV0dXJuIGMobyl9KTtyZXR1cm57Y3JpdGVyaWE6bCxpbmRleDorK24sdmFsdWU6b319KTtyZXR1cm4gSm9yKGksZnVuY3Rpb24obyxhKXtyZXR1cm4gdGFyKG8sYSxyKX0pfWpvZS5leHBvcnRzPW5hcn0pO3ZhciBab2U9SCgoVEpuLEtvZSk9Pnt2YXIgaWFyPVpCKCksb2FyPVhvZSgpLGFhcj1WNCgpLCRvZT1HNCgpLHNhcj1hYXIoZnVuY3Rpb24oZSx0KXtpZihlPT1udWxsKXJldHVybltdO3ZhciByPXQubGVuZ3RoO3JldHVybiByPjEmJiRvZShlLHRbMF0sdFsxXSk/dD1bXTpyPjImJiRvZSh0WzBdLHRbMV0sdFsyXSkmJih0PVt0WzBdXSksb2FyKGUsaWFyKHQsMSksW10pfSk7S29lLmV4cG9ydHM9c2FyfSk7dmFyIFFvZT1IKChDSm4sSm9lKT0+e3ZhciBsYXI9V3N0KCksY2FyPTA7ZnVuY3Rpb24gdWFyKGUpe3ZhciB0PSsrY2FyO3JldHVybiBsYXIoZSkrdH1Kb2UuZXhwb3J0cz11YXJ9KTt2YXIgZWFlPUgoKEFKbix0YWUpPT57ZnVuY3Rpb24gaGFyKGUsdCxyKXtmb3IodmFyIG49LTEsaT1lLmxlbmd0aCxvPXQubGVuZ3RoLGE9e307KytuPGk7KXt2YXIgcz1uPG8/dFtuXTp2b2lkIDA7cihhLGVbbl0scyl9cmV0dXJuIGF9dGFlLmV4cG9ydHM9aGFyfSk7dmFyIG5hZT1IKChQSm4scmFlKT0+e3ZhciBmYXI9QTQoKSxwYXI9ZWFlKCk7ZnVuY3Rpb24gZGFyKGUsdCl7cmV0dXJuIHBhcihlfHxbXSx0fHxbXSxmYXIpfXJhZS5leHBvcnRzPWRhcn0pO3ZhciBxbj1IKChJSm4saWFlKT0+e3ZhciBvSDtpZih0eXBlb2YgTXg9PSJmdW5jdGlvbiIpdHJ5e29IPXtjbG9uZURlZXA6bWllKCksY29uc3RhbnQ6R0IoKSxkZWZhdWx0czp2aWUoKSxlYWNoOkRzdCgpLGZpbHRlcjokc3QoKSxmaW5kOnppZSgpLGZsYXR0ZW46Z2x0KCksZm9yRWFjaDpOc3QoKSxmb3JJbjpIaWUoKSxoYXM6S3N0KCksaXNVbmRlZmluZWQ6WnN0KCksbGFzdDpVaWUoKSxtYXA6UXN0KCksbWFwVmFsdWVzOkdpZSgpLG1heDokaWUoKSxtZXJnZTptb2UoKSxtaW46eW9lKCksbWluQnk6eG9lKCksbm93OndvZSgpLHBpY2s6Um9lKCkscmFuZ2U6Qm9lKCkscmVkdWNlOnRsdCgpLHNvcnRCeTpab2UoKSx1bmlxdWVJZDpRb2UoKSx2YWx1ZXM6bGx0KCksemlwT2JqZWN0Om5hZSgpfX1jYXRjaChlKXt9b0h8fChvSD13aW5kb3cuXyk7aWFlLmV4cG9ydHM9b0h9KTt2YXIgc2FlPUgoKGtKbixhYWUpPT57YWFlLmV4cG9ydHM9YUg7ZnVuY3Rpb24gYUgoKXt2YXIgZT17fTtlLl9uZXh0PWUuX3ByZXY9ZSx0aGlzLl9zZW50aW5lbD1lfWFILnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fc2VudGluZWwsdD1lLl9wcmV2O2lmKHQhPT1lKXJldHVybiBvYWUodCksdH07YUgucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fc2VudGluZWw7ZS5fcHJldiYmZS5fbmV4dCYmb2FlKGUpLGUuX25leHQ9dC5fbmV4dCx0Ll9uZXh0Ll9wcmV2PWUsdC5fbmV4dD1lLGUuX3ByZXY9dH07YUgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9dGhpcy5fc2VudGluZWwscj10Ll9wcmV2O3IhPT10OyllLnB1c2goSlNPTi5zdHJpbmdpZnkocixtYXIpKSxyPXIuX3ByZXY7cmV0dXJuIlsiK2Uuam9pbigiLCAiKSsiXSJ9O2Z1bmN0aW9uIG9hZShlKXtlLl9wcmV2Ll9uZXh0PWUuX25leHQsZS5fbmV4dC5fcHJldj1lLl9wcmV2LGRlbGV0ZSBlLl9uZXh0LGRlbGV0ZSBlLl9wcmV2fWZ1bmN0aW9uIG1hcihlLHQpe2lmKGUhPT0iX25leHQiJiZlIT09Il9wcmV2IilyZXR1cm4gdH19KTt2YXIgY2FlPUgoKFJKbixsYWUpPT57dmFyIFBkPXFuKCksZ2FyPUhjKCkuR3JhcGgsX2FyPXNhZSgpO2xhZS5leHBvcnRzPXhhcjt2YXIgeWFyPVBkLmNvbnN0YW50KDEpO2Z1bmN0aW9uIHhhcihlLHQpe2lmKGUubm9kZUNvdW50KCk8PTEpcmV0dXJuW107dmFyIHI9d2FyKGUsdHx8eWFyKSxuPWJhcihyLmdyYXBoLHIuYnVja2V0cyxyLnplcm9JZHgpO3JldHVybiBQZC5mbGF0dGVuKFBkLm1hcChuLGZ1bmN0aW9uKGkpe3JldHVybiBlLm91dEVkZ2VzKGkudixpLncpfSksITApfWZ1bmN0aW9uIGJhcihlLHQscil7Zm9yKHZhciBuPVtdLGk9dFt0Lmxlbmd0aC0xXSxvPXRbMF0sYTtlLm5vZGVDb3VudCgpOyl7Zm9yKDthPW8uZGVxdWV1ZSgpOyl3bHQoZSx0LHIsYSk7Zm9yKDthPWkuZGVxdWV1ZSgpOyl3bHQoZSx0LHIsYSk7aWYoZS5ub2RlQ291bnQoKSl7Zm9yKHZhciBzPXQubGVuZ3RoLTI7cz4wOy0tcylpZihhPXRbc10uZGVxdWV1ZSgpLGEpe249bi5jb25jYXQod2x0KGUsdCxyLGEsITApKTticmVha319fXJldHVybiBufWZ1bmN0aW9uIHdsdChlLHQscixuLGkpe3ZhciBvPWk/W106dm9pZCAwO3JldHVybiBQZC5mb3JFYWNoKGUuaW5FZGdlcyhuLnYpLGZ1bmN0aW9uKGEpe3ZhciBzPWUuZWRnZShhKSxsPWUubm9kZShhLnYpO2kmJm8ucHVzaCh7djphLnYsdzphLnd9KSxsLm91dC09cyxTbHQodCxyLGwpfSksUGQuZm9yRWFjaChlLm91dEVkZ2VzKG4udiksZnVuY3Rpb24oYSl7dmFyIHM9ZS5lZGdlKGEpLGw9YS53LGM9ZS5ub2RlKGwpO2MuaW4tPXMsU2x0KHQscixjKX0pLGUucmVtb3ZlTm9kZShuLnYpLG99ZnVuY3Rpb24gd2FyKGUsdCl7dmFyIHI9bmV3IGdhcixuPTAsaT0wO1BkLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKHMpe3Iuc2V0Tm9kZShzLHt2OnMsaW46MCxvdXQ6MH0pfSksUGQuZm9yRWFjaChlLmVkZ2VzKCksZnVuY3Rpb24ocyl7dmFyIGw9ci5lZGdlKHMudixzLncpfHwwLGM9dChzKSx1PWwrYztyLnNldEVkZ2Uocy52LHMudyx1KSxpPU1hdGgubWF4KGksci5ub2RlKHMudikub3V0Kz1jKSxuPU1hdGgubWF4KG4sci5ub2RlKHMudykuaW4rPWMpfSk7dmFyIG89UGQucmFuZ2UoaStuKzMpLm1hcChmdW5jdGlvbigpe3JldHVybiBuZXcgX2FyfSksYT1uKzE7cmV0dXJuIFBkLmZvckVhY2goci5ub2RlcygpLGZ1bmN0aW9uKHMpe1NsdChvLGEsci5ub2RlKHMpKX0pLHtncmFwaDpyLGJ1Y2tldHM6byx6ZXJvSWR4OmF9fWZ1bmN0aW9uIFNsdChlLHQscil7ci5vdXQ/ci5pbj9lW3Iub3V0LXIuaW4rdF0uZW5xdWV1ZShyKTplW2UubGVuZ3RoLTFdLmVucXVldWUocik6ZVswXS5lbnF1ZXVlKHIpfX0pO3ZhciBoYWU9SCgoTkpuLHVhZSk9PnsidXNlIHN0cmljdCI7dmFyIFF2PXFuKCksU2FyPWNhZSgpO3VhZS5leHBvcnRzPXtydW46TWFyLHVuZG86VGFyfTtmdW5jdGlvbiBNYXIoZSl7dmFyIHQ9ZS5ncmFwaCgpLmFjeWNsaWNlcj09PSJncmVlZHkiP1NhcihlLHIoZSkpOkVhcihlKTtRdi5mb3JFYWNoKHQsZnVuY3Rpb24obil7dmFyIGk9ZS5lZGdlKG4pO2UucmVtb3ZlRWRnZShuKSxpLmZvcndhcmROYW1lPW4ubmFtZSxpLnJldmVyc2VkPSEwLGUuc2V0RWRnZShuLncsbi52LGksUXYudW5pcXVlSWQoInJldiIpKX0pO2Z1bmN0aW9uIHIobil7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBuLmVkZ2UoaSkud2VpZ2h0fX19ZnVuY3Rpb24gRWFyKGUpe3ZhciB0PVtdLHI9e30sbj17fTtmdW5jdGlvbiBpKG8pe1F2LmhhcyhuLG8pfHwobltvXT0hMCxyW29dPSEwLFF2LmZvckVhY2goZS5vdXRFZGdlcyhvKSxmdW5jdGlvbihhKXtRdi5oYXMocixhLncpP3QucHVzaChhKTppKGEudyl9KSxkZWxldGUgcltvXSl9cmV0dXJuIFF2LmZvckVhY2goZS5ub2RlcygpLGkpLHR9ZnVuY3Rpb24gVGFyKGUpe1F2LmZvckVhY2goZS5lZGdlcygpLGZ1bmN0aW9uKHQpe3ZhciByPWUuZWRnZSh0KTtpZihyLnJldmVyc2VkKXtlLnJlbW92ZUVkZ2UodCk7dmFyIG49ci5mb3J3YXJkTmFtZTtkZWxldGUgci5yZXZlcnNlZCxkZWxldGUgci5mb3J3YXJkTmFtZSxlLnNldEVkZ2UodC53LHQudixyLG4pfX0pfX0pO3ZhciBycz1IKChESm4sbWFlKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgUXI9cW4oKSxmYWU9SGMoKS5HcmFwaDttYWUuZXhwb3J0cz17YWRkRHVtbXlOb2RlOnBhZSxzaW1wbGlmeTpDYXIsYXNOb25Db21wb3VuZEdyYXBoOkFhcixzdWNjZXNzb3JXZWlnaHRzOlBhcixwcmVkZWNlc3NvcldlaWdodHM6SWFyLGludGVyc2VjdFJlY3Q6TGFyLGJ1aWxkTGF5ZXJNYXRyaXg6a2FyLG5vcm1hbGl6ZVJhbmtzOlJhcixyZW1vdmVFbXB0eVJhbmtzOk5hcixhZGRCb3JkZXJOb2RlOkRhcixtYXhSYW5rOmRhZSxwYXJ0aXRpb246T2FyLHRpbWU6emFyLG5vdGltZTpGYXJ9O2Z1bmN0aW9uIHBhZShlLHQscixuKXt2YXIgaTtkbyBpPVFyLnVuaXF1ZUlkKG4pO3doaWxlKGUuaGFzTm9kZShpKSk7cmV0dXJuIHIuZHVtbXk9dCxlLnNldE5vZGUoaSxyKSxpfWZ1bmN0aW9uIENhcihlKXt2YXIgdD1uZXcgZmFlKCkuc2V0R3JhcGgoZS5ncmFwaCgpKTtyZXR1cm4gUXIuZm9yRWFjaChlLm5vZGVzKCksZnVuY3Rpb24ocil7dC5zZXROb2RlKHIsZS5ub2RlKHIpKX0pLFFyLmZvckVhY2goZS5lZGdlcygpLGZ1bmN0aW9uKHIpe3ZhciBuPXQuZWRnZShyLnYsci53KXx8e3dlaWdodDowLG1pbmxlbjoxfSxpPWUuZWRnZShyKTt0LnNldEVkZ2Uoci52LHIudyx7d2VpZ2h0Om4ud2VpZ2h0K2kud2VpZ2h0LG1pbmxlbjpNYXRoLm1heChuLm1pbmxlbixpLm1pbmxlbil9KX0pLHR9ZnVuY3Rpb24gQWFyKGUpe3ZhciB0PW5ldyBmYWUoe211bHRpZ3JhcGg6ZS5pc011bHRpZ3JhcGgoKX0pLnNldEdyYXBoKGUuZ3JhcGgoKSk7cmV0dXJuIFFyLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKHIpe2UuY2hpbGRyZW4ocikubGVuZ3RofHx0LnNldE5vZGUocixlLm5vZGUocikpfSksUXIuZm9yRWFjaChlLmVkZ2VzKCksZnVuY3Rpb24ocil7dC5zZXRFZGdlKHIsZS5lZGdlKHIpKX0pLHR9ZnVuY3Rpb24gUGFyKGUpe3ZhciB0PVFyLm1hcChlLm5vZGVzKCksZnVuY3Rpb24ocil7dmFyIG49e307cmV0dXJuIFFyLmZvckVhY2goZS5vdXRFZGdlcyhyKSxmdW5jdGlvbihpKXtuW2kud109KG5baS53XXx8MCkrZS5lZGdlKGkpLndlaWdodH0pLG59KTtyZXR1cm4gUXIuemlwT2JqZWN0KGUubm9kZXMoKSx0KX1mdW5jdGlvbiBJYXIoZSl7dmFyIHQ9UXIubWFwKGUubm9kZXMoKSxmdW5jdGlvbihyKXt2YXIgbj17fTtyZXR1cm4gUXIuZm9yRWFjaChlLmluRWRnZXMociksZnVuY3Rpb24oaSl7bltpLnZdPShuW2kudl18fDApK2UuZWRnZShpKS53ZWlnaHR9KSxufSk7cmV0dXJuIFFyLnppcE9iamVjdChlLm5vZGVzKCksdCl9ZnVuY3Rpb24gTGFyKGUsdCl7dmFyIHI9ZS54LG49ZS55LGk9dC54LXIsbz10LnktbixhPWUud2lkdGgvMixzPWUuaGVpZ2h0LzI7aWYoIWkmJiFvKXRocm93IG5ldyBFcnJvcigiTm90IHBvc3NpYmxlIHRvIGZpbmQgaW50ZXJzZWN0aW9uIGluc2lkZSBvZiB0aGUgcmVjdGFuZ2xlIik7dmFyIGwsYztyZXR1cm4gTWF0aC5hYnMobykqYT5NYXRoLmFicyhpKSpzPyhvPDAmJihzPS1zKSxsPXMqaS9vLGM9cyk6KGk8MCYmKGE9LWEpLGw9YSxjPWEqby9pKSx7eDpyK2wseTpuK2N9fWZ1bmN0aW9uIGthcihlKXt2YXIgdD1Rci5tYXAoUXIucmFuZ2UoZGFlKGUpKzEpLGZ1bmN0aW9uKCl7cmV0dXJuW119KTtyZXR1cm4gUXIuZm9yRWFjaChlLm5vZGVzKCksZnVuY3Rpb24ocil7dmFyIG49ZS5ub2RlKHIpLGk9bi5yYW5rO1FyLmlzVW5kZWZpbmVkKGkpfHwodFtpXVtuLm9yZGVyXT1yKX0pLHR9ZnVuY3Rpb24gUmFyKGUpe3ZhciB0PVFyLm1pbihRci5tYXAoZS5ub2RlcygpLGZ1bmN0aW9uKHIpe3JldHVybiBlLm5vZGUocikucmFua30pKTtRci5mb3JFYWNoKGUubm9kZXMoKSxmdW5jdGlvbihyKXt2YXIgbj1lLm5vZGUocik7UXIuaGFzKG4sInJhbmsiKSYmKG4ucmFuay09dCl9KX1mdW5jdGlvbiBOYXIoZSl7dmFyIHQ9UXIubWluKFFyLm1hcChlLm5vZGVzKCksZnVuY3Rpb24obyl7cmV0dXJuIGUubm9kZShvKS5yYW5rfSkpLHI9W107UXIuZm9yRWFjaChlLm5vZGVzKCksZnVuY3Rpb24obyl7dmFyIGE9ZS5ub2RlKG8pLnJhbmstdDtyW2FdfHwoclthXT1bXSksclthXS5wdXNoKG8pfSk7dmFyIG49MCxpPWUuZ3JhcGgoKS5ub2RlUmFua0ZhY3RvcjtRci5mb3JFYWNoKHIsZnVuY3Rpb24obyxhKXtRci5pc1VuZGVmaW5lZChvKSYmYSVpIT09MD8tLW46biYmUXIuZm9yRWFjaChvLGZ1bmN0aW9uKHMpe2Uubm9kZShzKS5yYW5rKz1ufSl9KX1mdW5jdGlvbiBEYXIoZSx0LHIsbil7dmFyIGk9e3dpZHRoOjAsaGVpZ2h0OjB9O3JldHVybiBhcmd1bWVudHMubGVuZ3RoPj00JiYoaS5yYW5rPXIsaS5vcmRlcj1uKSxwYWUoZSwiYm9yZGVyIixpLHQpfWZ1bmN0aW9uIGRhZShlKXtyZXR1cm4gUXIubWF4KFFyLm1hcChlLm5vZGVzKCksZnVuY3Rpb24odCl7dmFyIHI9ZS5ub2RlKHQpLnJhbms7aWYoIVFyLmlzVW5kZWZpbmVkKHIpKXJldHVybiByfSkpfWZ1bmN0aW9uIE9hcihlLHQpe3ZhciByPXtsaHM6W10scmhzOltdfTtyZXR1cm4gUXIuZm9yRWFjaChlLGZ1bmN0aW9uKG4pe3Qobik/ci5saHMucHVzaChuKTpyLnJocy5wdXNoKG4pfSkscn1mdW5jdGlvbiB6YXIoZSx0KXt2YXIgcj1Rci5ub3coKTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e2NvbnNvbGUubG9nKGUrIiB0aW1lOiAiKyhRci5ub3coKS1yKSsibXMiKX19ZnVuY3Rpb24gRmFyKGUsdCl7cmV0dXJuIHQoKX19KTt2YXIgeWFlPUgoKE9KbixfYWUpPT57InVzZSBzdHJpY3QiO3ZhciBnYWU9cW4oKSxCYXI9cnMoKTtfYWUuZXhwb3J0cz17cnVuOkhhcix1bmRvOlVhcn07ZnVuY3Rpb24gSGFyKGUpe2UuZ3JhcGgoKS5kdW1teUNoYWlucz1bXSxnYWUuZm9yRWFjaChlLmVkZ2VzKCksZnVuY3Rpb24odCl7VmFyKGUsdCl9KX1mdW5jdGlvbiBWYXIoZSx0KXt2YXIgcj10LnYsbj1lLm5vZGUocikucmFuayxpPXQudyxvPWUubm9kZShpKS5yYW5rLGE9dC5uYW1lLHM9ZS5lZGdlKHQpLGw9cy5sYWJlbFJhbms7aWYobyE9PW4rMSl7ZS5yZW1vdmVFZGdlKHQpO3ZhciBjLHUsaDtmb3IoaD0wLCsrbjtuPG87KytoLCsrbilzLnBvaW50cz1bXSx1PXt3aWR0aDowLGhlaWdodDowLGVkZ2VMYWJlbDpzLGVkZ2VPYmo6dCxyYW5rOm59LGM9QmFyLmFkZER1bW15Tm9kZShlLCJlZGdlIix1LCJfZCIpLG49PT1sJiYodS53aWR0aD1zLndpZHRoLHUuaGVpZ2h0PXMuaGVpZ2h0LHUuZHVtbXk9ImVkZ2UtbGFiZWwiLHUubGFiZWxwb3M9cy5sYWJlbHBvcyksZS5zZXRFZGdlKHIsYyx7d2VpZ2h0OnMud2VpZ2h0fSxhKSxoPT09MCYmZS5ncmFwaCgpLmR1bW15Q2hhaW5zLnB1c2goYykscj1jO2Uuc2V0RWRnZShyLGkse3dlaWdodDpzLndlaWdodH0sYSl9fWZ1bmN0aW9uIFVhcihlKXtnYWUuZm9yRWFjaChlLmdyYXBoKCkuZHVtbXlDaGFpbnMsZnVuY3Rpb24odCl7dmFyIHI9ZS5ub2RlKHQpLG49ci5lZGdlTGFiZWwsaTtmb3IoZS5zZXRFZGdlKHIuZWRnZU9iaixuKTtyLmR1bW15OylpPWUuc3VjY2Vzc29ycyh0KVswXSxlLnJlbW92ZU5vZGUodCksbi5wb2ludHMucHVzaCh7eDpyLngseTpyLnl9KSxyLmR1bW15PT09ImVkZ2UtbGFiZWwiJiYobi54PXIueCxuLnk9ci55LG4ud2lkdGg9ci53aWR0aCxuLmhlaWdodD1yLmhlaWdodCksdD1pLHI9ZS5ub2RlKHQpfSl9fSk7dmFyIFc0PUgoKHpKbix2YWUpPT57InVzZSBzdHJpY3QiO3ZhciBzSD1xbigpO3ZhZS5leHBvcnRzPXtsb25nZXN0UGF0aDpxYXIsc2xhY2s6R2FyfTtmdW5jdGlvbiBxYXIoZSl7dmFyIHQ9e307ZnVuY3Rpb24gcihuKXt2YXIgaT1lLm5vZGUobik7aWYoc0guaGFzKHQsbikpcmV0dXJuIGkucmFuazt0W25dPSEwO3ZhciBvPXNILm1pbihzSC5tYXAoZS5vdXRFZGdlcyhuKSxmdW5jdGlvbihhKXtyZXR1cm4gcihhLncpLWUuZWRnZShhKS5taW5sZW59KSk7cmV0dXJuKG89PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFl8fG89PT12b2lkIDB8fG89PT1udWxsKSYmKG89MCksaS5yYW5rPW99c0guZm9yRWFjaChlLnNvdXJjZXMoKSxyKX1mdW5jdGlvbiBHYXIoZSx0KXtyZXR1cm4gZS5ub2RlKHQudykucmFuay1lLm5vZGUodC52KS5yYW5rLWUuZWRnZSh0KS5taW5sZW59fSk7dmFyIE1sdD1IKChGSm4seGFlKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbEg9cW4oKSxXYXI9SGMoKS5HcmFwaCxjSD1XNCgpLnNsYWNrO3hhZS5leHBvcnRzPVlhcjtmdW5jdGlvbiBZYXIoZSl7dmFyIHQ9bmV3IFdhcih7ZGlyZWN0ZWQ6ITF9KSxyPWUubm9kZXMoKVswXSxuPWUubm9kZUNvdW50KCk7dC5zZXROb2RlKHIse30pO2Zvcih2YXIgaSxvO2phcih0LGUpPG47KWk9WGFyKHQsZSksbz10Lmhhc05vZGUoaS52KT9jSChlLGkpOi1jSChlLGkpLCRhcih0LGUsbyk7cmV0dXJuIHR9ZnVuY3Rpb24gamFyKGUsdCl7ZnVuY3Rpb24gcihuKXtsSC5mb3JFYWNoKHQubm9kZUVkZ2VzKG4pLGZ1bmN0aW9uKGkpe3ZhciBvPWkudixhPW49PT1vP2kudzpvOyFlLmhhc05vZGUoYSkmJiFjSCh0LGkpJiYoZS5zZXROb2RlKGEse30pLGUuc2V0RWRnZShuLGEse30pLHIoYSkpfSl9cmV0dXJuIGxILmZvckVhY2goZS5ub2RlcygpLHIpLGUubm9kZUNvdW50KCl9ZnVuY3Rpb24gWGFyKGUsdCl7cmV0dXJuIGxILm1pbkJ5KHQuZWRnZXMoKSxmdW5jdGlvbihyKXtpZihlLmhhc05vZGUoci52KSE9PWUuaGFzTm9kZShyLncpKXJldHVybiBjSCh0LHIpfSl9ZnVuY3Rpb24gJGFyKGUsdCxyKXtsSC5mb3JFYWNoKGUubm9kZXMoKSxmdW5jdGlvbihuKXt0Lm5vZGUobikucmFuays9cn0pfX0pO3ZhciBBYWU9SCgoQkpuLENhZSk9PnsidXNlIHN0cmljdCI7dmFyIElkPXFuKCksS2FyPU1sdCgpLFphcj1XNCgpLnNsYWNrLEphcj1XNCgpLmxvbmdlc3RQYXRoLFFhcj1IYygpLmFsZy5wcmVvcmRlcix0c3I9SGMoKS5hbGcucG9zdG9yZGVyLGVzcj1ycygpLnNpbXBsaWZ5O0NhZS5leHBvcnRzPXQxO3QxLmluaXRMb3dMaW1WYWx1ZXM9VGx0O3QxLmluaXRDdXRWYWx1ZXM9RWx0O3QxLmNhbGNDdXRWYWx1ZT13YWU7dDEubGVhdmVFZGdlPU1hZTt0MS5lbnRlckVkZ2U9RWFlO3QxLmV4Y2hhbmdlRWRnZXM9VGFlO2Z1bmN0aW9uIHQxKGUpe2U9ZXNyKGUpLEphcihlKTt2YXIgdD1LYXIoZSk7VGx0KHQpLEVsdCh0LGUpO2Zvcih2YXIgcixuO3I9TWFlKHQpOyluPUVhZSh0LGUsciksVGFlKHQsZSxyLG4pfWZ1bmN0aW9uIEVsdChlLHQpe3ZhciByPXRzcihlLGUubm9kZXMoKSk7cj1yLnNsaWNlKDAsci5sZW5ndGgtMSksSWQuZm9yRWFjaChyLGZ1bmN0aW9uKG4pe3JzcihlLHQsbil9KX1mdW5jdGlvbiByc3IoZSx0LHIpe3ZhciBuPWUubm9kZShyKSxpPW4ucGFyZW50O2UuZWRnZShyLGkpLmN1dHZhbHVlPXdhZShlLHQscil9ZnVuY3Rpb24gd2FlKGUsdCxyKXt2YXIgbj1lLm5vZGUociksaT1uLnBhcmVudCxvPSEwLGE9dC5lZGdlKHIsaSkscz0wO3JldHVybiBhfHwobz0hMSxhPXQuZWRnZShpLHIpKSxzPWEud2VpZ2h0LElkLmZvckVhY2godC5ub2RlRWRnZXMociksZnVuY3Rpb24obCl7dmFyIGM9bC52PT09cix1PWM/bC53OmwudjtpZih1IT09aSl7dmFyIGg9Yz09PW8sZj10LmVkZ2UobCkud2VpZ2h0O2lmKHMrPWg/ZjotZixpc3IoZSxyLHUpKXt2YXIgcD1lLmVkZ2Uocix1KS5jdXR2YWx1ZTtzKz1oPy1wOnB9fX0pLHN9ZnVuY3Rpb24gVGx0KGUsdCl7YXJndW1lbnRzLmxlbmd0aDwyJiYodD1lLm5vZGVzKClbMF0pLFNhZShlLHt9LDEsdCl9ZnVuY3Rpb24gU2FlKGUsdCxyLG4saSl7dmFyIG89cixhPWUubm9kZShuKTtyZXR1cm4gdFtuXT0hMCxJZC5mb3JFYWNoKGUubmVpZ2hib3JzKG4pLGZ1bmN0aW9uKHMpe0lkLmhhcyh0LHMpfHwocj1TYWUoZSx0LHIscyxuKSl9KSxhLmxvdz1vLGEubGltPXIrKyxpP2EucGFyZW50PWk6ZGVsZXRlIGEucGFyZW50LHJ9ZnVuY3Rpb24gTWFlKGUpe3JldHVybiBJZC5maW5kKGUuZWRnZXMoKSxmdW5jdGlvbih0KXtyZXR1cm4gZS5lZGdlKHQpLmN1dHZhbHVlPDB9KX1mdW5jdGlvbiBFYWUoZSx0LHIpe3ZhciBuPXIudixpPXIudzt0Lmhhc0VkZ2UobixpKXx8KG49ci53LGk9ci52KTt2YXIgbz1lLm5vZGUobiksYT1lLm5vZGUoaSkscz1vLGw9ITE7by5saW0+YS5saW0mJihzPWEsbD0hMCk7dmFyIGM9SWQuZmlsdGVyKHQuZWRnZXMoKSxmdW5jdGlvbih1KXtyZXR1cm4gbD09PWJhZShlLGUubm9kZSh1LnYpLHMpJiZsIT09YmFlKGUsZS5ub2RlKHUudykscyl9KTtyZXR1cm4gSWQubWluQnkoYyxmdW5jdGlvbih1KXtyZXR1cm4gWmFyKHQsdSl9KX1mdW5jdGlvbiBUYWUoZSx0LHIsbil7dmFyIGk9ci52LG89ci53O2UucmVtb3ZlRWRnZShpLG8pLGUuc2V0RWRnZShuLnYsbi53LHt9KSxUbHQoZSksRWx0KGUsdCksbnNyKGUsdCl9ZnVuY3Rpb24gbnNyKGUsdCl7dmFyIHI9SWQuZmluZChlLm5vZGVzKCksZnVuY3Rpb24oaSl7cmV0dXJuIXQubm9kZShpKS5wYXJlbnR9KSxuPVFhcihlLHIpO249bi5zbGljZSgxKSxJZC5mb3JFYWNoKG4sZnVuY3Rpb24oaSl7dmFyIG89ZS5ub2RlKGkpLnBhcmVudCxhPXQuZWRnZShpLG8pLHM9ITE7YXx8KGE9dC5lZGdlKG8saSkscz0hMCksdC5ub2RlKGkpLnJhbms9dC5ub2RlKG8pLnJhbmsrKHM/YS5taW5sZW46LWEubWlubGVuKX0pfWZ1bmN0aW9uIGlzcihlLHQscil7cmV0dXJuIGUuaGFzRWRnZSh0LHIpfWZ1bmN0aW9uIGJhZShlLHQscil7cmV0dXJuIHIubG93PD10LmxpbSYmdC5saW08PXIubGltfX0pO3ZhciBrYWU9SCgoSEpuLExhZSk9PnsidXNlIHN0cmljdCI7dmFyIG9zcj1XNCgpLElhZT1vc3IubG9uZ2VzdFBhdGgsYXNyPU1sdCgpLHNzcj1BYWUoKTtMYWUuZXhwb3J0cz1sc3I7ZnVuY3Rpb24gbHNyKGUpe3N3aXRjaChlLmdyYXBoKCkucmFua2VyKXtjYXNlIm5ldHdvcmstc2ltcGxleCI6UGFlKGUpO2JyZWFrO2Nhc2UidGlnaHQtdHJlZSI6dXNyKGUpO2JyZWFrO2Nhc2UibG9uZ2VzdC1wYXRoIjpjc3IoZSk7YnJlYWs7ZGVmYXVsdDpQYWUoZSl9fXZhciBjc3I9SWFlO2Z1bmN0aW9uIHVzcihlKXtJYWUoZSksYXNyKGUpfWZ1bmN0aW9uIFBhZShlKXtzc3IoZSl9fSk7dmFyIE5hZT1IKChWSm4sUmFlKT0+e3ZhciBDbHQ9cW4oKTtSYWUuZXhwb3J0cz1oc3I7ZnVuY3Rpb24gaHNyKGUpe3ZhciB0PXBzcihlKTtDbHQuZm9yRWFjaChlLmdyYXBoKCkuZHVtbXlDaGFpbnMsZnVuY3Rpb24ocil7Zm9yKHZhciBuPWUubm9kZShyKSxpPW4uZWRnZU9iaixvPWZzcihlLHQsaS52LGkudyksYT1vLnBhdGgscz1vLmxjYSxsPTAsYz1hW2xdLHU9ITA7ciE9PWkudzspe2lmKG49ZS5ub2RlKHIpLHUpe2Zvcig7KGM9YVtsXSkhPT1zJiZlLm5vZGUoYykubWF4UmFuazxuLnJhbms7KWwrKztjPT09cyYmKHU9ITEpfWlmKCF1KXtmb3IoO2w8YS5sZW5ndGgtMSYmZS5ub2RlKGM9YVtsKzFdKS5taW5SYW5rPD1uLnJhbms7KWwrKztjPWFbbF19ZS5zZXRQYXJlbnQocixjKSxyPWUuc3VjY2Vzc29ycyhyKVswXX19KX1mdW5jdGlvbiBmc3IoZSx0LHIsbil7dmFyIGk9W10sbz1bXSxhPU1hdGgubWluKHRbcl0ubG93LHRbbl0ubG93KSxzPU1hdGgubWF4KHRbcl0ubGltLHRbbl0ubGltKSxsLGM7bD1yO2RvIGw9ZS5wYXJlbnQobCksaS5wdXNoKGwpO3doaWxlKGwmJih0W2xdLmxvdz5hfHxzPnRbbF0ubGltKSk7Zm9yKGM9bCxsPW47KGw9ZS5wYXJlbnQobCkpIT09Yzspby5wdXNoKGwpO3JldHVybntwYXRoOmkuY29uY2F0KG8ucmV2ZXJzZSgpKSxsY2E6Y319ZnVuY3Rpb24gcHNyKGUpe3ZhciB0PXt9LHI9MDtmdW5jdGlvbiBuKGkpe3ZhciBvPXI7Q2x0LmZvckVhY2goZS5jaGlsZHJlbihpKSxuKSx0W2ldPXtsb3c6byxsaW06cisrfX1yZXR1cm4gQ2x0LmZvckVhY2goZS5jaGlsZHJlbigpLG4pLHR9fSk7dmFyIHphZT1IKChVSm4sT2FlKT0+e3ZhciBMZD1xbigpLEFsdD1ycygpO09hZS5leHBvcnRzPXtydW46ZHNyLGNsZWFudXA6X3NyfTtmdW5jdGlvbiBkc3IoZSl7dmFyIHQ9QWx0LmFkZER1bW15Tm9kZShlLCJyb290Iix7fSwiX3Jvb3QiKSxyPW1zcihlKSxuPUxkLm1heChMZC52YWx1ZXMocikpLTEsaT0yKm4rMTtlLmdyYXBoKCkubmVzdGluZ1Jvb3Q9dCxMZC5mb3JFYWNoKGUuZWRnZXMoKSxmdW5jdGlvbihhKXtlLmVkZ2UoYSkubWlubGVuKj1pfSk7dmFyIG89Z3NyKGUpKzE7TGQuZm9yRWFjaChlLmNoaWxkcmVuKCksZnVuY3Rpb24oYSl7RGFlKGUsdCxpLG8sbixyLGEpfSksZS5ncmFwaCgpLm5vZGVSYW5rRmFjdG9yPWl9ZnVuY3Rpb24gRGFlKGUsdCxyLG4saSxvLGEpe3ZhciBzPWUuY2hpbGRyZW4oYSk7aWYoIXMubGVuZ3RoKXthIT09dCYmZS5zZXRFZGdlKHQsYSx7d2VpZ2h0OjAsbWlubGVuOnJ9KTtyZXR1cm59dmFyIGw9QWx0LmFkZEJvcmRlck5vZGUoZSwiX2J0IiksYz1BbHQuYWRkQm9yZGVyTm9kZShlLCJfYmIiKSx1PWUubm9kZShhKTtlLnNldFBhcmVudChsLGEpLHUuYm9yZGVyVG9wPWwsZS5zZXRQYXJlbnQoYyxhKSx1LmJvcmRlckJvdHRvbT1jLExkLmZvckVhY2gocyxmdW5jdGlvbihoKXtEYWUoZSx0LHIsbixpLG8saCk7dmFyIGY9ZS5ub2RlKGgpLHA9Zi5ib3JkZXJUb3A/Zi5ib3JkZXJUb3A6aCxkPWYuYm9yZGVyQm90dG9tP2YuYm9yZGVyQm90dG9tOmgsZz1mLmJvcmRlclRvcD9uOjIqbixfPXAhPT1kPzE6aS1vW2FdKzE7ZS5zZXRFZGdlKGwscCx7d2VpZ2h0OmcsbWlubGVuOl8sbmVzdGluZ0VkZ2U6ITB9KSxlLnNldEVkZ2UoZCxjLHt3ZWlnaHQ6ZyxtaW5sZW46XyxuZXN0aW5nRWRnZTohMH0pfSksZS5wYXJlbnQoYSl8fGUuc2V0RWRnZSh0LGwse3dlaWdodDowLG1pbmxlbjppK29bYV19KX1mdW5jdGlvbiBtc3IoZSl7dmFyIHQ9e307ZnVuY3Rpb24gcihuLGkpe3ZhciBvPWUuY2hpbGRyZW4obik7byYmby5sZW5ndGgmJkxkLmZvckVhY2gobyxmdW5jdGlvbihhKXtyKGEsaSsxKX0pLHRbbl09aX1yZXR1cm4gTGQuZm9yRWFjaChlLmNoaWxkcmVuKCksZnVuY3Rpb24obil7cihuLDEpfSksdH1mdW5jdGlvbiBnc3IoZSl7cmV0dXJuIExkLnJlZHVjZShlLmVkZ2VzKCksZnVuY3Rpb24odCxyKXtyZXR1cm4gdCtlLmVkZ2Uocikud2VpZ2h0fSwwKX1mdW5jdGlvbiBfc3IoZSl7dmFyIHQ9ZS5ncmFwaCgpO2UucmVtb3ZlTm9kZSh0Lm5lc3RpbmdSb290KSxkZWxldGUgdC5uZXN0aW5nUm9vdCxMZC5mb3JFYWNoKGUuZWRnZXMoKSxmdW5jdGlvbihyKXt2YXIgbj1lLmVkZ2Uocik7bi5uZXN0aW5nRWRnZSYmZS5yZW1vdmVFZGdlKHIpfSl9fSk7dmFyIEhhZT1IKChxSm4sQmFlKT0+e3ZhciBQbHQ9cW4oKSx5c3I9cnMoKTtCYWUuZXhwb3J0cz12c3I7ZnVuY3Rpb24gdnNyKGUpe2Z1bmN0aW9uIHQocil7dmFyIG49ZS5jaGlsZHJlbihyKSxpPWUubm9kZShyKTtpZihuLmxlbmd0aCYmUGx0LmZvckVhY2gobix0KSxQbHQuaGFzKGksIm1pblJhbmsiKSl7aS5ib3JkZXJMZWZ0PVtdLGkuYm9yZGVyUmlnaHQ9W107Zm9yKHZhciBvPWkubWluUmFuayxhPWkubWF4UmFuaysxO288YTsrK28pRmFlKGUsImJvcmRlckxlZnQiLCJfYmwiLHIsaSxvKSxGYWUoZSwiYm9yZGVyUmlnaHQiLCJfYnIiLHIsaSxvKX19UGx0LmZvckVhY2goZS5jaGlsZHJlbigpLHQpfWZ1bmN0aW9uIEZhZShlLHQscixuLGksbyl7dmFyIGE9e3dpZHRoOjAsaGVpZ2h0OjAscmFuazpvLGJvcmRlclR5cGU6dH0scz1pW3RdW28tMV0sbD15c3IuYWRkRHVtbXlOb2RlKGUsImJvcmRlciIsYSxyKTtpW3RdW29dPWwsZS5zZXRQYXJlbnQobCxuKSxzJiZlLnNldEVkZ2UocyxsLHt3ZWlnaHQ6MX0pfX0pO3ZhciBHYWU9SCgoR0puLHFhZSk9PnsidXNlIHN0cmljdCI7dmFyIFZmPXFuKCk7cWFlLmV4cG9ydHM9e2FkanVzdDp4c3IsdW5kbzpic3J9O2Z1bmN0aW9uIHhzcihlKXt2YXIgdD1lLmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyh0PT09ImxyInx8dD09PSJybCIpJiZVYWUoZSl9ZnVuY3Rpb24gYnNyKGUpe3ZhciB0PWUuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7KHQ9PT0iYnQifHx0PT09InJsIikmJndzcihlKSwodD09PSJsciJ8fHQ9PT0icmwiKSYmKFNzcihlKSxVYWUoZSkpfWZ1bmN0aW9uIFVhZShlKXtWZi5mb3JFYWNoKGUubm9kZXMoKSxmdW5jdGlvbih0KXtWYWUoZS5ub2RlKHQpKX0pLFZmLmZvckVhY2goZS5lZGdlcygpLGZ1bmN0aW9uKHQpe1ZhZShlLmVkZ2UodCkpfSl9ZnVuY3Rpb24gVmFlKGUpe3ZhciB0PWUud2lkdGg7ZS53aWR0aD1lLmhlaWdodCxlLmhlaWdodD10fWZ1bmN0aW9uIHdzcihlKXtWZi5mb3JFYWNoKGUubm9kZXMoKSxmdW5jdGlvbih0KXtJbHQoZS5ub2RlKHQpKX0pLFZmLmZvckVhY2goZS5lZGdlcygpLGZ1bmN0aW9uKHQpe3ZhciByPWUuZWRnZSh0KTtWZi5mb3JFYWNoKHIucG9pbnRzLElsdCksVmYuaGFzKHIsInkiKSYmSWx0KHIpfSl9ZnVuY3Rpb24gSWx0KGUpe2UueT0tZS55fWZ1bmN0aW9uIFNzcihlKXtWZi5mb3JFYWNoKGUubm9kZXMoKSxmdW5jdGlvbih0KXtMbHQoZS5ub2RlKHQpKX0pLFZmLmZvckVhY2goZS5lZGdlcygpLGZ1bmN0aW9uKHQpe3ZhciByPWUuZWRnZSh0KTtWZi5mb3JFYWNoKHIucG9pbnRzLExsdCksVmYuaGFzKHIsIngiKSYmTGx0KHIpfSl9ZnVuY3Rpb24gTGx0KGUpe3ZhciB0PWUueDtlLng9ZS55LGUueT10fX0pO3ZhciBZYWU9SCgoV0puLFdhZSk9PnsidXNlIHN0cmljdCI7dmFyIGtkPXFuKCk7V2FlLmV4cG9ydHM9TXNyO2Z1bmN0aW9uIE1zcihlKXt2YXIgdD17fSxyPWtkLmZpbHRlcihlLm5vZGVzKCksZnVuY3Rpb24ocyl7cmV0dXJuIWUuY2hpbGRyZW4ocykubGVuZ3RofSksbj1rZC5tYXgoa2QubWFwKHIsZnVuY3Rpb24ocyl7cmV0dXJuIGUubm9kZShzKS5yYW5rfSkpLGk9a2QubWFwKGtkLnJhbmdlKG4rMSksZnVuY3Rpb24oKXtyZXR1cm5bXX0pO2Z1bmN0aW9uIG8ocyl7aWYoIWtkLmhhcyh0LHMpKXt0W3NdPSEwO3ZhciBsPWUubm9kZShzKTtpW2wucmFua10ucHVzaChzKSxrZC5mb3JFYWNoKGUuc3VjY2Vzc29ycyhzKSxvKX19dmFyIGE9a2Quc29ydEJ5KHIsZnVuY3Rpb24ocyl7cmV0dXJuIGUubm9kZShzKS5yYW5rfSk7cmV0dXJuIGtkLmZvckVhY2goYSxvKSxpfX0pO3ZhciBYYWU9SCgoWUpuLGphZSk9PnsidXNlIHN0cmljdCI7dmFyIGgwPXFuKCk7amFlLmV4cG9ydHM9RXNyO2Z1bmN0aW9uIEVzcihlLHQpe2Zvcih2YXIgcj0wLG49MTtuPHQubGVuZ3RoOysrbilyKz1Uc3IoZSx0W24tMV0sdFtuXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gVHNyKGUsdCxyKXtmb3IodmFyIG49aDAuemlwT2JqZWN0KHIsaDAubWFwKHIsZnVuY3Rpb24oYyx1KXtyZXR1cm4gdX0pKSxpPWgwLmZsYXR0ZW4oaDAubWFwKHQsZnVuY3Rpb24oYyl7cmV0dXJuIGgwLnNvcnRCeShoMC5tYXAoZS5vdXRFZGdlcyhjKSxmdW5jdGlvbih1KXtyZXR1cm57cG9zOm5bdS53XSx3ZWlnaHQ6ZS5lZGdlKHUpLndlaWdodH19KSwicG9zIil9KSwhMCksbz0xO288ci5sZW5ndGg7KW88PD0xO3ZhciBhPTIqby0xO28tPTE7dmFyIHM9aDAubWFwKG5ldyBBcnJheShhKSxmdW5jdGlvbigpe3JldHVybiAwfSksbD0wO3JldHVybiBoMC5mb3JFYWNoKGkuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgdT1jLnBvcytvO3NbdV0rPWMud2VpZ2h0O2Zvcih2YXIgaD0wO3U+MDspdSUyJiYoaCs9c1t1KzFdKSx1PXUtMT4+MSxzW3VdKz1jLndlaWdodDtsKz1jLndlaWdodCpofSkpLGx9fSk7dmFyIFphZT1IKChqSm4sS2FlKT0+e3ZhciAkYWU9cW4oKTtLYWUuZXhwb3J0cz1Dc3I7ZnVuY3Rpb24gQ3NyKGUsdCl7cmV0dXJuICRhZS5tYXAodCxmdW5jdGlvbihyKXt2YXIgbj1lLmluRWRnZXMocik7aWYobi5sZW5ndGgpe3ZhciBpPSRhZS5yZWR1Y2UobixmdW5jdGlvbihvLGEpe3ZhciBzPWUuZWRnZShhKSxsPWUubm9kZShhLnYpO3JldHVybntzdW06by5zdW0rcy53ZWlnaHQqbC5vcmRlcix3ZWlnaHQ6by53ZWlnaHQrcy53ZWlnaHR9fSx7c3VtOjAsd2VpZ2h0OjB9KTtyZXR1cm57djpyLGJhcnljZW50ZXI6aS5zdW0vaS53ZWlnaHQsd2VpZ2h0Omkud2VpZ2h0fX1lbHNlIHJldHVybnt2OnJ9fSl9fSk7dmFyIFFhZT1IKChYSm4sSmFlKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgRWw9cW4oKTtKYWUuZXhwb3J0cz1Bc3I7ZnVuY3Rpb24gQXNyKGUsdCl7dmFyIHI9e307RWwuZm9yRWFjaChlLGZ1bmN0aW9uKGksbyl7dmFyIGE9cltpLnZdPXtpbmRlZ3JlZTowLGluOltdLG91dDpbXSx2czpbaS52XSxpOm99O0VsLmlzVW5kZWZpbmVkKGkuYmFyeWNlbnRlcil8fChhLmJhcnljZW50ZXI9aS5iYXJ5Y2VudGVyLGEud2VpZ2h0PWkud2VpZ2h0KX0pLEVsLmZvckVhY2godC5lZGdlcygpLGZ1bmN0aW9uKGkpe3ZhciBvPXJbaS52XSxhPXJbaS53XTshRWwuaXNVbmRlZmluZWQobykmJiFFbC5pc1VuZGVmaW5lZChhKSYmKGEuaW5kZWdyZWUrKyxvLm91dC5wdXNoKHJbaS53XSkpfSk7dmFyIG49RWwuZmlsdGVyKHIsZnVuY3Rpb24oaSl7cmV0dXJuIWkuaW5kZWdyZWV9KTtyZXR1cm4gUHNyKG4pfWZ1bmN0aW9uIFBzcihlKXt2YXIgdD1bXTtmdW5jdGlvbiByKG8pe3JldHVybiBmdW5jdGlvbihhKXthLm1lcmdlZHx8KEVsLmlzVW5kZWZpbmVkKGEuYmFyeWNlbnRlcil8fEVsLmlzVW5kZWZpbmVkKG8uYmFyeWNlbnRlcil8fGEuYmFyeWNlbnRlcj49by5iYXJ5Y2VudGVyKSYmSXNyKG8sYSl9fWZ1bmN0aW9uIG4obyl7cmV0dXJuIGZ1bmN0aW9uKGEpe2EuaW4ucHVzaChvKSwtLWEuaW5kZWdyZWU9PT0wJiZlLnB1c2goYSl9fWZvcig7ZS5sZW5ndGg7KXt2YXIgaT1lLnBvcCgpO3QucHVzaChpKSxFbC5mb3JFYWNoKGkuaW4ucmV2ZXJzZSgpLHIoaSkpLEVsLmZvckVhY2goaS5vdXQsbihpKSl9cmV0dXJuIEVsLm1hcChFbC5maWx0ZXIodCxmdW5jdGlvbihvKXtyZXR1cm4hby5tZXJnZWR9KSxmdW5jdGlvbihvKXtyZXR1cm4gRWwucGljayhvLFsidnMiLCJpIiwiYmFyeWNlbnRlciIsIndlaWdodCJdKX0pfWZ1bmN0aW9uIElzcihlLHQpe3ZhciByPTAsbj0wO2Uud2VpZ2h0JiYocis9ZS5iYXJ5Y2VudGVyKmUud2VpZ2h0LG4rPWUud2VpZ2h0KSx0LndlaWdodCYmKHIrPXQuYmFyeWNlbnRlcip0LndlaWdodCxuKz10LndlaWdodCksZS52cz10LnZzLmNvbmNhdChlLnZzKSxlLmJhcnljZW50ZXI9ci9uLGUud2VpZ2h0PW4sZS5pPU1hdGgubWluKHQuaSxlLmkpLHQubWVyZ2VkPSEwfX0pO3ZhciByc2U9SCgoJEpuLGVzZSk9Pnt2YXIgWTQ9cW4oKSxMc3I9cnMoKTtlc2UuZXhwb3J0cz1rc3I7ZnVuY3Rpb24ga3NyKGUsdCl7dmFyIHI9THNyLnBhcnRpdGlvbihlLGZ1bmN0aW9uKHUpe3JldHVybiBZNC5oYXModSwiYmFyeWNlbnRlciIpfSksbj1yLmxocyxpPVk0LnNvcnRCeShyLnJocyxmdW5jdGlvbih1KXtyZXR1cm4tdS5pfSksbz1bXSxhPTAscz0wLGw9MDtuLnNvcnQoUnNyKCEhdCkpLGw9dHNlKG8saSxsKSxZNC5mb3JFYWNoKG4sZnVuY3Rpb24odSl7bCs9dS52cy5sZW5ndGgsby5wdXNoKHUudnMpLGErPXUuYmFyeWNlbnRlcip1LndlaWdodCxzKz11LndlaWdodCxsPXRzZShvLGksbCl9KTt2YXIgYz17dnM6WTQuZmxhdHRlbihvLCEwKX07cmV0dXJuIHMmJihjLmJhcnljZW50ZXI9YS9zLGMud2VpZ2h0PXMpLGN9ZnVuY3Rpb24gdHNlKGUsdCxyKXtmb3IodmFyIG47dC5sZW5ndGgmJihuPVk0Lmxhc3QodCkpLmk8PXI7KXQucG9wKCksZS5wdXNoKG4udnMpLHIrKztyZXR1cm4gcn1mdW5jdGlvbiBSc3IoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIHQuYmFyeWNlbnRlcjxyLmJhcnljZW50ZXI/LTE6dC5iYXJ5Y2VudGVyPnIuYmFyeWNlbnRlcj8xOmU/ci5pLXQuaTp0Lmktci5pfX19KTt2YXIgb3NlPUgoKEtKbixpc2UpPT57dmFyIGYwPXFuKCksTnNyPVphZSgpLERzcj1RYWUoKSxPc3I9cnNlKCk7aXNlLmV4cG9ydHM9bnNlO2Z1bmN0aW9uIG5zZShlLHQscixuKXt2YXIgaT1lLmNoaWxkcmVuKHQpLG89ZS5ub2RlKHQpLGE9bz9vLmJvcmRlckxlZnQ6dm9pZCAwLHM9bz9vLmJvcmRlclJpZ2h0OnZvaWQgMCxsPXt9O2EmJihpPWYwLmZpbHRlcihpLGZ1bmN0aW9uKGQpe3JldHVybiBkIT09YSYmZCE9PXN9KSk7dmFyIGM9TnNyKGUsaSk7ZjAuZm9yRWFjaChjLGZ1bmN0aW9uKGQpe2lmKGUuY2hpbGRyZW4oZC52KS5sZW5ndGgpe3ZhciBnPW5zZShlLGQudixyLG4pO2xbZC52XT1nLGYwLmhhcyhnLCJiYXJ5Y2VudGVyIikmJkZzcihkLGcpfX0pO3ZhciB1PURzcihjLHIpO3pzcih1LGwpO3ZhciBoPU9zcih1LG4pO2lmKGEmJihoLnZzPWYwLmZsYXR0ZW4oW2EsaC52cyxzXSwhMCksZS5wcmVkZWNlc3NvcnMoYSkubGVuZ3RoKSl7dmFyIGY9ZS5ub2RlKGUucHJlZGVjZXNzb3JzKGEpWzBdKSxwPWUubm9kZShlLnByZWRlY2Vzc29ycyhzKVswXSk7ZjAuaGFzKGgsImJhcnljZW50ZXIiKXx8KGguYmFyeWNlbnRlcj0wLGgud2VpZ2h0PTApLGguYmFyeWNlbnRlcj0oaC5iYXJ5Y2VudGVyKmgud2VpZ2h0K2Yub3JkZXIrcC5vcmRlcikvKGgud2VpZ2h0KzIpLGgud2VpZ2h0Kz0yfXJldHVybiBofWZ1bmN0aW9uIHpzcihlLHQpe2YwLmZvckVhY2goZSxmdW5jdGlvbihyKXtyLnZzPWYwLmZsYXR0ZW4oci52cy5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHRbbl0/dFtuXS52czpufSksITApfSl9ZnVuY3Rpb24gRnNyKGUsdCl7ZjAuaXNVbmRlZmluZWQoZS5iYXJ5Y2VudGVyKT8oZS5iYXJ5Y2VudGVyPXQuYmFyeWNlbnRlcixlLndlaWdodD10LndlaWdodCk6KGUuYmFyeWNlbnRlcj0oZS5iYXJ5Y2VudGVyKmUud2VpZ2h0K3QuYmFyeWNlbnRlcip0LndlaWdodCkvKGUud2VpZ2h0K3Qud2VpZ2h0KSxlLndlaWdodCs9dC53ZWlnaHQpfX0pO3ZhciBzc2U9SCgoWkpuLGFzZSk9Pnt2YXIgajQ9cW4oKSxCc3I9SGMoKS5HcmFwaDthc2UuZXhwb3J0cz1Ic3I7ZnVuY3Rpb24gSHNyKGUsdCxyKXt2YXIgbj1Wc3IoZSksaT1uZXcgQnNyKHtjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyb290Om59KS5zZXREZWZhdWx0Tm9kZUxhYmVsKGZ1bmN0aW9uKG8pe3JldHVybiBlLm5vZGUobyl9KTtyZXR1cm4gajQuZm9yRWFjaChlLm5vZGVzKCksZnVuY3Rpb24obyl7dmFyIGE9ZS5ub2RlKG8pLHM9ZS5wYXJlbnQobyk7KGEucmFuaz09PXR8fGEubWluUmFuazw9dCYmdDw9YS5tYXhSYW5rKSYmKGkuc2V0Tm9kZShvKSxpLnNldFBhcmVudChvLHN8fG4pLGo0LmZvckVhY2goZVtyXShvKSxmdW5jdGlvbihsKXt2YXIgYz1sLnY9PT1vP2wudzpsLnYsdT1pLmVkZ2UoYyxvKSxoPWo0LmlzVW5kZWZpbmVkKHUpPzA6dS53ZWlnaHQ7aS5zZXRFZGdlKGMsbyx7d2VpZ2h0OmUuZWRnZShsKS53ZWlnaHQraH0pfSksajQuaGFzKGEsIm1pblJhbmsiKSYmaS5zZXROb2RlKG8se2JvcmRlckxlZnQ6YS5ib3JkZXJMZWZ0W3RdLGJvcmRlclJpZ2h0OmEuYm9yZGVyUmlnaHRbdF19KSl9KSxpfWZ1bmN0aW9uIFZzcihlKXtmb3IodmFyIHQ7ZS5oYXNOb2RlKHQ9ajQudW5pcXVlSWQoIl9yb290IikpOyk7cmV0dXJuIHR9fSk7dmFyIGNzZT1IKChKSm4sbHNlKT0+e3ZhciBVc3I9cW4oKTtsc2UuZXhwb3J0cz1xc3I7ZnVuY3Rpb24gcXNyKGUsdCxyKXt2YXIgbj17fSxpO1Vzci5mb3JFYWNoKHIsZnVuY3Rpb24obyl7Zm9yKHZhciBhPWUucGFyZW50KG8pLHMsbDthOyl7aWYocz1lLnBhcmVudChhKSxzPyhsPW5bc10sbltzXT1hKToobD1pLGk9YSksbCYmbCE9PWEpe3Quc2V0RWRnZShsLGEpO3JldHVybn1hPXN9fSl9fSk7dmFyIGRzZT1IKChRSm4scHNlKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcDA9cW4oKSxHc3I9WWFlKCksV3NyPVhhZSgpLFlzcj1vc2UoKSxqc3I9c3NlKCksWHNyPWNzZSgpLCRzcj1IYygpLkdyYXBoLHVzZT1ycygpO3BzZS5leHBvcnRzPUtzcjtmdW5jdGlvbiBLc3IoZSl7dmFyIHQ9dXNlLm1heFJhbmsoZSkscj1oc2UoZSxwMC5yYW5nZSgxLHQrMSksImluRWRnZXMiKSxuPWhzZShlLHAwLnJhbmdlKHQtMSwtMSwtMSksIm91dEVkZ2VzIiksaT1Hc3IoZSk7ZnNlKGUsaSk7Zm9yKHZhciBvPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxhLHM9MCxsPTA7bDw0OysrcywrK2wpe1pzcihzJTI/cjpuLHMlND49MiksaT11c2UuYnVpbGRMYXllck1hdHJpeChlKTt2YXIgYz1Xc3IoZSxpKTtjPG8mJihsPTAsYT1wMC5jbG9uZURlZXAoaSksbz1jKX1mc2UoZSxhKX1mdW5jdGlvbiBoc2UoZSx0LHIpe3JldHVybiBwMC5tYXAodCxmdW5jdGlvbihuKXtyZXR1cm4ganNyKGUsbixyKX0pfWZ1bmN0aW9uIFpzcihlLHQpe3ZhciByPW5ldyAkc3I7cDAuZm9yRWFjaChlLGZ1bmN0aW9uKG4pe3ZhciBpPW4uZ3JhcGgoKS5yb290LG89WXNyKG4saSxyLHQpO3AwLmZvckVhY2goby52cyxmdW5jdGlvbihhLHMpe24ubm9kZShhKS5vcmRlcj1zfSksWHNyKG4scixvLnZzKX0pfWZ1bmN0aW9uIGZzZShlLHQpe3AwLmZvckVhY2godCxmdW5jdGlvbihyKXtwMC5mb3JFYWNoKHIsZnVuY3Rpb24obixpKXtlLm5vZGUobikub3JkZXI9aX0pfSl9fSk7dmFyIE1zZT1IKCh0UW4sU3NlKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgWGU9cW4oKSxKc3I9SGMoKS5HcmFwaCxRc3I9cnMoKTtTc2UuZXhwb3J0cz17cG9zaXRpb25YOnJscixmaW5kVHlwZTFDb25mbGljdHM6bXNlLGZpbmRUeXBlMkNvbmZsaWN0czpnc2UsYWRkQ29uZmxpY3Q6a2x0LGhhc0NvbmZsaWN0Ol9zZSx2ZXJ0aWNhbEFsaWdubWVudDp5c2UsaG9yaXpvbnRhbENvbXBhY3Rpb246dnNlLGFsaWduQ29vcmRpbmF0ZXM6YnNlLGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50OnhzZSxiYWxhbmNlOndzZX07ZnVuY3Rpb24gbXNlKGUsdCl7dmFyIHI9e307ZnVuY3Rpb24gbihpLG8pe3ZhciBhPTAscz0wLGw9aS5sZW5ndGgsYz1YZS5sYXN0KG8pO3JldHVybiBYZS5mb3JFYWNoKG8sZnVuY3Rpb24odSxoKXt2YXIgZj10bHIoZSx1KSxwPWY/ZS5ub2RlKGYpLm9yZGVyOmw7KGZ8fHU9PT1jKSYmKFhlLmZvckVhY2goby5zbGljZShzLGgrMSksZnVuY3Rpb24oZCl7WGUuZm9yRWFjaChlLnByZWRlY2Vzc29ycyhkKSxmdW5jdGlvbihnKXt2YXIgXz1lLm5vZGUoZykseT1fLm9yZGVyOyh5PGF8fHA8eSkmJiEoXy5kdW1teSYmZS5ub2RlKGQpLmR1bW15KSYma2x0KHIsZyxkKX0pfSkscz1oKzEsYT1wKX0pLG99cmV0dXJuIFhlLnJlZHVjZSh0LG4pLHJ9ZnVuY3Rpb24gZ3NlKGUsdCl7dmFyIHI9e307ZnVuY3Rpb24gbihvLGEscyxsLGMpe3ZhciB1O1hlLmZvckVhY2goWGUucmFuZ2UoYSxzKSxmdW5jdGlvbihoKXt1PW9baF0sZS5ub2RlKHUpLmR1bW15JiZYZS5mb3JFYWNoKGUucHJlZGVjZXNzb3JzKHUpLGZ1bmN0aW9uKGYpe3ZhciBwPWUubm9kZShmKTtwLmR1bW15JiYocC5vcmRlcjxsfHxwLm9yZGVyPmMpJiZrbHQocixmLHUpfSl9KX1mdW5jdGlvbiBpKG8sYSl7dmFyIHM9LTEsbCxjPTA7cmV0dXJuIFhlLmZvckVhY2goYSxmdW5jdGlvbih1LGgpe2lmKGUubm9kZSh1KS5kdW1teT09PSJib3JkZXIiKXt2YXIgZj1lLnByZWRlY2Vzc29ycyh1KTtmLmxlbmd0aCYmKGw9ZS5ub2RlKGZbMF0pLm9yZGVyLG4oYSxjLGgscyxsKSxjPWgscz1sKX1uKGEsYyxhLmxlbmd0aCxsLG8ubGVuZ3RoKX0pLGF9cmV0dXJuIFhlLnJlZHVjZSh0LGkpLHJ9ZnVuY3Rpb24gdGxyKGUsdCl7aWYoZS5ub2RlKHQpLmR1bW15KXJldHVybiBYZS5maW5kKGUucHJlZGVjZXNzb3JzKHQpLGZ1bmN0aW9uKHIpe3JldHVybiBlLm5vZGUocikuZHVtbXl9KX1mdW5jdGlvbiBrbHQoZSx0LHIpe2lmKHQ+cil7dmFyIG49dDt0PXIscj1ufXZhciBpPWVbdF07aXx8KGVbdF09aT17fSksaVtyXT0hMH1mdW5jdGlvbiBfc2UoZSx0LHIpe2lmKHQ+cil7dmFyIG49dDt0PXIscj1ufXJldHVybiBYZS5oYXMoZVt0XSxyKX1mdW5jdGlvbiB5c2UoZSx0LHIsbil7dmFyIGk9e30sbz17fSxhPXt9O3JldHVybiBYZS5mb3JFYWNoKHQsZnVuY3Rpb24ocyl7WGUuZm9yRWFjaChzLGZ1bmN0aW9uKGwsYyl7aVtsXT1sLG9bbF09bCxhW2xdPWN9KX0pLFhlLmZvckVhY2godCxmdW5jdGlvbihzKXt2YXIgbD0tMTtYZS5mb3JFYWNoKHMsZnVuY3Rpb24oYyl7dmFyIHU9bihjKTtpZih1Lmxlbmd0aCl7dT1YZS5zb3J0QnkodSxmdW5jdGlvbihnKXtyZXR1cm4gYVtnXX0pO2Zvcih2YXIgaD0odS5sZW5ndGgtMSkvMixmPU1hdGguZmxvb3IoaCkscD1NYXRoLmNlaWwoaCk7Zjw9cDsrK2Ype3ZhciBkPXVbZl07b1tjXT09PWMmJmw8YVtkXSYmIV9zZShyLGMsZCkmJihvW2RdPWMsb1tjXT1pW2NdPWlbZF0sbD1hW2RdKX19fSl9KSx7cm9vdDppLGFsaWduOm99fWZ1bmN0aW9uIHZzZShlLHQscixuLGkpe3ZhciBvPXt9LGE9ZWxyKGUsdCxyLGkpLHM9aT8iYm9yZGVyTGVmdCI6ImJvcmRlclJpZ2h0IjtmdW5jdGlvbiBsKGgsZil7Zm9yKHZhciBwPWEubm9kZXMoKSxkPXAucG9wKCksZz17fTtkOylnW2RdP2goZCk6KGdbZF09ITAscC5wdXNoKGQpLHA9cC5jb25jYXQoZihkKSkpLGQ9cC5wb3AoKX1mdW5jdGlvbiBjKGgpe29baF09YS5pbkVkZ2VzKGgpLnJlZHVjZShmdW5jdGlvbihmLHApe3JldHVybiBNYXRoLm1heChmLG9bcC52XSthLmVkZ2UocCkpfSwwKX1mdW5jdGlvbiB1KGgpe3ZhciBmPWEub3V0RWRnZXMoaCkucmVkdWNlKGZ1bmN0aW9uKGQsZyl7cmV0dXJuIE1hdGgubWluKGQsb1tnLnddLWEuZWRnZShnKSl9LE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkscD1lLm5vZGUoaCk7ZiE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmcC5ib3JkZXJUeXBlIT09cyYmKG9baF09TWF0aC5tYXgob1toXSxmKSl9cmV0dXJuIGwoYyxhLnByZWRlY2Vzc29ycy5iaW5kKGEpKSxsKHUsYS5zdWNjZXNzb3JzLmJpbmQoYSkpLFhlLmZvckVhY2gobixmdW5jdGlvbihoKXtvW2hdPW9bcltoXV19KSxvfWZ1bmN0aW9uIGVscihlLHQscixuKXt2YXIgaT1uZXcgSnNyLG89ZS5ncmFwaCgpLGE9bmxyKG8ubm9kZXNlcCxvLmVkZ2VzZXAsbik7cmV0dXJuIFhlLmZvckVhY2godCxmdW5jdGlvbihzKXt2YXIgbDtYZS5mb3JFYWNoKHMsZnVuY3Rpb24oYyl7dmFyIHU9cltjXTtpZihpLnNldE5vZGUodSksbCl7dmFyIGg9cltsXSxmPWkuZWRnZShoLHUpO2kuc2V0RWRnZShoLHUsTWF0aC5tYXgoYShlLGMsbCksZnx8MCkpfWw9Y30pfSksaX1mdW5jdGlvbiB4c2UoZSx0KXtyZXR1cm4gWGUubWluQnkoWGUudmFsdWVzKHQpLGZ1bmN0aW9uKHIpe3ZhciBuPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxpPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtyZXR1cm4gWGUuZm9ySW4ocixmdW5jdGlvbihvLGEpe3ZhciBzPWlscihlLGEpLzI7bj1NYXRoLm1heChvK3MsbiksaT1NYXRoLm1pbihvLXMsaSl9KSxuLWl9KX1mdW5jdGlvbiBic2UoZSx0KXt2YXIgcj1YZS52YWx1ZXModCksbj1YZS5taW4ociksaT1YZS5tYXgocik7WGUuZm9yRWFjaChbInUiLCJkIl0sZnVuY3Rpb24obyl7WGUuZm9yRWFjaChbImwiLCJyIl0sZnVuY3Rpb24oYSl7dmFyIHM9bythLGw9ZVtzXSxjO2lmKGwhPT10KXt2YXIgdT1YZS52YWx1ZXMobCk7Yz1hPT09ImwiP24tWGUubWluKHUpOmktWGUubWF4KHUpLGMmJihlW3NdPVhlLm1hcFZhbHVlcyhsLGZ1bmN0aW9uKGgpe3JldHVybiBoK2N9KSl9fSl9KX1mdW5jdGlvbiB3c2UoZSx0KXtyZXR1cm4gWGUubWFwVmFsdWVzKGUudWwsZnVuY3Rpb24ocixuKXtpZih0KXJldHVybiBlW3QudG9Mb3dlckNhc2UoKV1bbl07dmFyIGk9WGUuc29ydEJ5KFhlLm1hcChlLG4pKTtyZXR1cm4oaVsxXStpWzJdKS8yfSl9ZnVuY3Rpb24gcmxyKGUpe3ZhciB0PVFzci5idWlsZExheWVyTWF0cml4KGUpLHI9WGUubWVyZ2UobXNlKGUsdCksZ3NlKGUsdCkpLG49e30saTtYZS5mb3JFYWNoKFsidSIsImQiXSxmdW5jdGlvbihhKXtpPWE9PT0idSI/dDpYZS52YWx1ZXModCkucmV2ZXJzZSgpLFhlLmZvckVhY2goWyJsIiwiciJdLGZ1bmN0aW9uKHMpe3M9PT0iciImJihpPVhlLm1hcChpLGZ1bmN0aW9uKGgpe3JldHVybiBYZS52YWx1ZXMoaCkucmV2ZXJzZSgpfSkpO3ZhciBsPShhPT09InUiP2UucHJlZGVjZXNzb3JzOmUuc3VjY2Vzc29ycykuYmluZChlKSxjPXlzZShlLGkscixsKSx1PXZzZShlLGksYy5yb290LGMuYWxpZ24scz09PSJyIik7cz09PSJyIiYmKHU9WGUubWFwVmFsdWVzKHUsZnVuY3Rpb24oaCl7cmV0dXJuLWh9KSksblthK3NdPXV9KX0pO3ZhciBvPXhzZShlLG4pO3JldHVybiBic2UobixvKSx3c2UobixlLmdyYXBoKCkuYWxpZ24pfWZ1bmN0aW9uIG5scihlLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4saSxvKXt2YXIgYT1uLm5vZGUoaSkscz1uLm5vZGUobyksbD0wLGM7aWYobCs9YS53aWR0aC8yLFhlLmhhcyhhLCJsYWJlbHBvcyIpKXN3aXRjaChhLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6Yz0tYS53aWR0aC8yO2JyZWFrO2Nhc2UiciI6Yz1hLndpZHRoLzI7YnJlYWt9aWYoYyYmKGwrPXI/YzotYyksYz0wLGwrPShhLmR1bW15P3Q6ZSkvMixsKz0ocy5kdW1teT90OmUpLzIsbCs9cy53aWR0aC8yLFhlLmhhcyhzLCJsYWJlbHBvcyIpKXN3aXRjaChzLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6Yz1zLndpZHRoLzI7YnJlYWs7Y2FzZSJyIjpjPS1zLndpZHRoLzI7YnJlYWt9cmV0dXJuIGMmJihsKz1yP2M6LWMpLGM9MCxsfX1mdW5jdGlvbiBpbHIoZSx0KXtyZXR1cm4gZS5ub2RlKHQpLndpZHRofX0pO3ZhciBDc2U9SCgoZVFuLFRzZSk9PnsidXNlIHN0cmljdCI7dmFyIFg0PXFuKCksRXNlPXJzKCksb2xyPU1zZSgpLnBvc2l0aW9uWDtUc2UuZXhwb3J0cz1hbHI7ZnVuY3Rpb24gYWxyKGUpe2U9RXNlLmFzTm9uQ29tcG91bmRHcmFwaChlKSxzbHIoZSksWDQuZm9yRWFjaChvbHIoZSksZnVuY3Rpb24odCxyKXtlLm5vZGUocikueD10fSl9ZnVuY3Rpb24gc2xyKGUpe3ZhciB0PUVzZS5idWlsZExheWVyTWF0cml4KGUpLHI9ZS5ncmFwaCgpLnJhbmtzZXAsbj0wO1g0LmZvckVhY2godCxmdW5jdGlvbihpKXt2YXIgbz1YNC5tYXgoWDQubWFwKGksZnVuY3Rpb24oYSl7cmV0dXJuIGUubm9kZShhKS5oZWlnaHR9KSk7WDQuZm9yRWFjaChpLGZ1bmN0aW9uKGEpe2Uubm9kZShhKS55PW4rby8yfSksbis9bytyfSl9fSk7dmFyIFJzZT1IKChyUW4sa3NlKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgaXI9cW4oKSxBc2U9aGFlKCksUHNlPXlhZSgpLGxscj1rYWUoKSxjbHI9cnMoKS5ub3JtYWxpemVSYW5rcyx1bHI9TmFlKCksaGxyPXJzKCkucmVtb3ZlRW1wdHlSYW5rcyxJc2U9emFlKCksZmxyPUhhZSgpLExzZT1HYWUoKSxwbHI9ZHNlKCksZGxyPUNzZSgpLGQwPXJzKCksbWxyPUhjKCkuR3JhcGg7a3NlLmV4cG9ydHM9Z2xyO2Z1bmN0aW9uIGdscihlLHQpe3ZhciByPXQmJnQuZGVidWdUaW1pbmc/ZDAudGltZTpkMC5ub3RpbWU7cigibGF5b3V0IixmdW5jdGlvbigpe3ZhciBuPXIoIiAgYnVpbGRMYXlvdXRHcmFwaCIsZnVuY3Rpb24oKXtyZXR1cm4gQ2xyKGUpfSk7cigiICBydW5MYXlvdXQiLGZ1bmN0aW9uKCl7X2xyKG4scil9KSxyKCIgIHVwZGF0ZUlucHV0R3JhcGgiLGZ1bmN0aW9uKCl7eWxyKGUsbil9KX0pfWZ1bmN0aW9uIF9scihlLHQpe3QoIiAgICBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzIixmdW5jdGlvbigpe0FscihlKX0pLHQoIiAgICByZW1vdmVTZWxmRWRnZXMiLGZ1bmN0aW9uKCl7emxyKGUpfSksdCgiICAgIGFjeWNsaWMiLGZ1bmN0aW9uKCl7QXNlLnJ1bihlKX0pLHQoIiAgICBuZXN0aW5nR3JhcGgucnVuIixmdW5jdGlvbigpe0lzZS5ydW4oZSl9KSx0KCIgICAgcmFuayIsZnVuY3Rpb24oKXtsbHIoZDAuYXNOb25Db21wb3VuZEdyYXBoKGUpKX0pLHQoIiAgICBpbmplY3RFZGdlTGFiZWxQcm94aWVzIixmdW5jdGlvbigpe1BscihlKX0pLHQoIiAgICByZW1vdmVFbXB0eVJhbmtzIixmdW5jdGlvbigpe2hscihlKX0pLHQoIiAgICBuZXN0aW5nR3JhcGguY2xlYW51cCIsZnVuY3Rpb24oKXtJc2UuY2xlYW51cChlKX0pLHQoIiAgICBub3JtYWxpemVSYW5rcyIsZnVuY3Rpb24oKXtjbHIoZSl9KSx0KCIgICAgYXNzaWduUmFua01pbk1heCIsZnVuY3Rpb24oKXtJbHIoZSl9KSx0KCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyIsZnVuY3Rpb24oKXtMbHIoZSl9KSx0KCIgICAgbm9ybWFsaXplLnJ1biIsZnVuY3Rpb24oKXtQc2UucnVuKGUpfSksdCgiICAgIHBhcmVudER1bW15Q2hhaW5zIixmdW5jdGlvbigpe3VscihlKX0pLHQoIiAgICBhZGRCb3JkZXJTZWdtZW50cyIsZnVuY3Rpb24oKXtmbHIoZSl9KSx0KCIgICAgb3JkZXIiLGZ1bmN0aW9uKCl7cGxyKGUpfSksdCgiICAgIGluc2VydFNlbGZFZGdlcyIsZnVuY3Rpb24oKXtGbHIoZSl9KSx0KCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbSIsZnVuY3Rpb24oKXtMc2UuYWRqdXN0KGUpfSksdCgiICAgIHBvc2l0aW9uIixmdW5jdGlvbigpe2RscihlKX0pLHQoIiAgICBwb3NpdGlvblNlbGZFZGdlcyIsZnVuY3Rpb24oKXtCbHIoZSl9KSx0KCIgICAgcmVtb3ZlQm9yZGVyTm9kZXMiLGZ1bmN0aW9uKCl7T2xyKGUpfSksdCgiICAgIG5vcm1hbGl6ZS51bmRvIixmdW5jdGlvbigpe1BzZS51bmRvKGUpfSksdCgiICAgIGZpeHVwRWRnZUxhYmVsQ29vcmRzIixmdW5jdGlvbigpe05scihlKX0pLHQoIiAgICB1bmRvQ29vcmRpbmF0ZVN5c3RlbSIsZnVuY3Rpb24oKXtMc2UudW5kbyhlKX0pLHQoIiAgICB0cmFuc2xhdGVHcmFwaCIsZnVuY3Rpb24oKXtrbHIoZSl9KSx0KCIgICAgYXNzaWduTm9kZUludGVyc2VjdHMiLGZ1bmN0aW9uKCl7UmxyKGUpfSksdCgiICAgIHJldmVyc2VQb2ludHMiLGZ1bmN0aW9uKCl7RGxyKGUpfSksdCgiICAgIGFjeWNsaWMudW5kbyIsZnVuY3Rpb24oKXtBc2UudW5kbyhlKX0pfWZ1bmN0aW9uIHlscihlLHQpe2lyLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKHIpe3ZhciBuPWUubm9kZShyKSxpPXQubm9kZShyKTtuJiYobi54PWkueCxuLnk9aS55LHQuY2hpbGRyZW4ocikubGVuZ3RoJiYobi53aWR0aD1pLndpZHRoLG4uaGVpZ2h0PWkuaGVpZ2h0KSl9KSxpci5mb3JFYWNoKGUuZWRnZXMoKSxmdW5jdGlvbihyKXt2YXIgbj1lLmVkZ2UociksaT10LmVkZ2Uocik7bi5wb2ludHM9aS5wb2ludHMsaXIuaGFzKGksIngiKSYmKG4ueD1pLngsbi55PWkueSl9KSxlLmdyYXBoKCkud2lkdGg9dC5ncmFwaCgpLndpZHRoLGUuZ3JhcGgoKS5oZWlnaHQ9dC5ncmFwaCgpLmhlaWdodH12YXIgdmxyPVsibm9kZXNlcCIsImVkZ2VzZXAiLCJyYW5rc2VwIiwibWFyZ2lueCIsIm1hcmdpbnkiXSx4bHI9e3JhbmtzZXA6NTAsZWRnZXNlcDoyMCxub2Rlc2VwOjUwLHJhbmtkaXI6InRiIn0sYmxyPVsiYWN5Y2xpY2VyIiwicmFua2VyIiwicmFua2RpciIsImFsaWduIl0sd2xyPVsid2lkdGgiLCJoZWlnaHQiXSxTbHI9e3dpZHRoOjAsaGVpZ2h0OjB9LE1scj1bIm1pbmxlbiIsIndlaWdodCIsIndpZHRoIiwiaGVpZ2h0IiwibGFiZWxvZmZzZXQiXSxFbHI9e21pbmxlbjoxLHdlaWdodDoxLHdpZHRoOjAsaGVpZ2h0OjAsbGFiZWxvZmZzZXQ6MTAsbGFiZWxwb3M6InIifSxUbHI9WyJsYWJlbHBvcyJdO2Z1bmN0aW9uIENscihlKXt2YXIgdD1uZXcgbWxyKHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwfSkscj1ObHQoZS5ncmFwaCgpKTtyZXR1cm4gdC5zZXRHcmFwaChpci5tZXJnZSh7fSx4bHIsUmx0KHIsdmxyKSxpci5waWNrKHIsYmxyKSkpLGlyLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKG4pe3ZhciBpPU5sdChlLm5vZGUobikpO3Quc2V0Tm9kZShuLGlyLmRlZmF1bHRzKFJsdChpLHdsciksU2xyKSksdC5zZXRQYXJlbnQobixlLnBhcmVudChuKSl9KSxpci5mb3JFYWNoKGUuZWRnZXMoKSxmdW5jdGlvbihuKXt2YXIgaT1ObHQoZS5lZGdlKG4pKTt0LnNldEVkZ2Uobixpci5tZXJnZSh7fSxFbHIsUmx0KGksTWxyKSxpci5waWNrKGksVGxyKSkpfSksdH1mdW5jdGlvbiBBbHIoZSl7dmFyIHQ9ZS5ncmFwaCgpO3QucmFua3NlcC89Mixpci5mb3JFYWNoKGUuZWRnZXMoKSxmdW5jdGlvbihyKXt2YXIgbj1lLmVkZ2Uocik7bi5taW5sZW4qPTIsbi5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpIT09ImMiJiYodC5yYW5rZGlyPT09IlRCInx8dC5yYW5rZGlyPT09IkJUIj9uLndpZHRoKz1uLmxhYmVsb2Zmc2V0Om4uaGVpZ2h0Kz1uLmxhYmVsb2Zmc2V0KX0pfWZ1bmN0aW9uIFBscihlKXtpci5mb3JFYWNoKGUuZWRnZXMoKSxmdW5jdGlvbih0KXt2YXIgcj1lLmVkZ2UodCk7aWYoci53aWR0aCYmci5oZWlnaHQpe3ZhciBuPWUubm9kZSh0LnYpLGk9ZS5ub2RlKHQudyksbz17cmFuazooaS5yYW5rLW4ucmFuaykvMituLnJhbmssZTp0fTtkMC5hZGREdW1teU5vZGUoZSwiZWRnZS1wcm94eSIsbywiX2VwIil9fSl9ZnVuY3Rpb24gSWxyKGUpe3ZhciB0PTA7aXIuZm9yRWFjaChlLm5vZGVzKCksZnVuY3Rpb24ocil7dmFyIG49ZS5ub2RlKHIpO24uYm9yZGVyVG9wJiYobi5taW5SYW5rPWUubm9kZShuLmJvcmRlclRvcCkucmFuayxuLm1heFJhbms9ZS5ub2RlKG4uYm9yZGVyQm90dG9tKS5yYW5rLHQ9aXIubWF4KHQsbi5tYXhSYW5rKSl9KSxlLmdyYXBoKCkubWF4UmFuaz10fWZ1bmN0aW9uIExscihlKXtpci5mb3JFYWNoKGUubm9kZXMoKSxmdW5jdGlvbih0KXt2YXIgcj1lLm5vZGUodCk7ci5kdW1teT09PSJlZGdlLXByb3h5IiYmKGUuZWRnZShyLmUpLmxhYmVsUmFuaz1yLnJhbmssZS5yZW1vdmVOb2RlKHQpKX0pfWZ1bmN0aW9uIGtscihlKXt2YXIgdD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkscj0wLG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGk9MCxvPWUuZ3JhcGgoKSxhPW8ubWFyZ2lueHx8MCxzPW8ubWFyZ2lueXx8MDtmdW5jdGlvbiBsKGMpe3ZhciB1PWMueCxoPWMueSxmPWMud2lkdGgscD1jLmhlaWdodDt0PU1hdGgubWluKHQsdS1mLzIpLHI9TWF0aC5tYXgocix1K2YvMiksbj1NYXRoLm1pbihuLGgtcC8yKSxpPU1hdGgubWF4KGksaCtwLzIpfWlyLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKGMpe2woZS5ub2RlKGMpKX0pLGlyLmZvckVhY2goZS5lZGdlcygpLGZ1bmN0aW9uKGMpe3ZhciB1PWUuZWRnZShjKTtpci5oYXModSwieCIpJiZsKHUpfSksdC09YSxuLT1zLGlyLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKGMpe3ZhciB1PWUubm9kZShjKTt1LngtPXQsdS55LT1ufSksaXIuZm9yRWFjaChlLmVkZ2VzKCksZnVuY3Rpb24oYyl7dmFyIHU9ZS5lZGdlKGMpO2lyLmZvckVhY2godS5wb2ludHMsZnVuY3Rpb24oaCl7aC54LT10LGgueS09bn0pLGlyLmhhcyh1LCJ4IikmJih1LngtPXQpLGlyLmhhcyh1LCJ5IikmJih1LnktPW4pfSksby53aWR0aD1yLXQrYSxvLmhlaWdodD1pLW4rc31mdW5jdGlvbiBSbHIoZSl7aXIuZm9yRWFjaChlLmVkZ2VzKCksZnVuY3Rpb24odCl7dmFyIHI9ZS5lZGdlKHQpLG49ZS5ub2RlKHQudiksaT1lLm5vZGUodC53KSxvLGE7ci5wb2ludHM/KG89ci5wb2ludHNbMF0sYT1yLnBvaW50c1tyLnBvaW50cy5sZW5ndGgtMV0pOihyLnBvaW50cz1bXSxvPWksYT1uKSxyLnBvaW50cy51bnNoaWZ0KGQwLmludGVyc2VjdFJlY3QobixvKSksci5wb2ludHMucHVzaChkMC5pbnRlcnNlY3RSZWN0KGksYSkpfSl9ZnVuY3Rpb24gTmxyKGUpe2lyLmZvckVhY2goZS5lZGdlcygpLGZ1bmN0aW9uKHQpe3ZhciByPWUuZWRnZSh0KTtpZihpci5oYXMociwieCIpKXN3aXRjaCgoci5sYWJlbHBvcz09PSJsInx8ci5sYWJlbHBvcz09PSJyIikmJihyLndpZHRoLT1yLmxhYmVsb2Zmc2V0KSxyLmxhYmVscG9zKXtjYXNlImwiOnIueC09ci53aWR0aC8yK3IubGFiZWxvZmZzZXQ7YnJlYWs7Y2FzZSJyIjpyLngrPXIud2lkdGgvMityLmxhYmVsb2Zmc2V0O2JyZWFrfX0pfWZ1bmN0aW9uIERscihlKXtpci5mb3JFYWNoKGUuZWRnZXMoKSxmdW5jdGlvbih0KXt2YXIgcj1lLmVkZ2UodCk7ci5yZXZlcnNlZCYmci5wb2ludHMucmV2ZXJzZSgpfSl9ZnVuY3Rpb24gT2xyKGUpe2lyLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKHQpe2lmKGUuY2hpbGRyZW4odCkubGVuZ3RoKXt2YXIgcj1lLm5vZGUodCksbj1lLm5vZGUoci5ib3JkZXJUb3ApLGk9ZS5ub2RlKHIuYm9yZGVyQm90dG9tKSxvPWUubm9kZShpci5sYXN0KHIuYm9yZGVyTGVmdCkpLGE9ZS5ub2RlKGlyLmxhc3Qoci5ib3JkZXJSaWdodCkpO3Iud2lkdGg9TWF0aC5hYnMoYS54LW8ueCksci5oZWlnaHQ9TWF0aC5hYnMoaS55LW4ueSksci54PW8ueCtyLndpZHRoLzIsci55PW4ueStyLmhlaWdodC8yfX0pLGlyLmZvckVhY2goZS5ub2RlcygpLGZ1bmN0aW9uKHQpe2Uubm9kZSh0KS5kdW1teT09PSJib3JkZXIiJiZlLnJlbW92ZU5vZGUodCl9KX1mdW5jdGlvbiB6bHIoZSl7aXIuZm9yRWFjaChlLmVkZ2VzKCksZnVuY3Rpb24odCl7aWYodC52PT09dC53KXt2YXIgcj1lLm5vZGUodC52KTtyLnNlbGZFZGdlc3x8KHIuc2VsZkVkZ2VzPVtdKSxyLnNlbGZFZGdlcy5wdXNoKHtlOnQsbGFiZWw6ZS5lZGdlKHQpfSksZS5yZW1vdmVFZGdlKHQpfX0pfWZ1bmN0aW9uIEZscihlKXt2YXIgdD1kMC5idWlsZExheWVyTWF0cml4KGUpO2lyLmZvckVhY2godCxmdW5jdGlvbihyKXt2YXIgbj0wO2lyLmZvckVhY2gocixmdW5jdGlvbihpLG8pe3ZhciBhPWUubm9kZShpKTthLm9yZGVyPW8rbixpci5mb3JFYWNoKGEuc2VsZkVkZ2VzLGZ1bmN0aW9uKHMpe2QwLmFkZER1bW15Tm9kZShlLCJzZWxmZWRnZSIse3dpZHRoOnMubGFiZWwud2lkdGgsaGVpZ2h0OnMubGFiZWwuaGVpZ2h0LHJhbms6YS5yYW5rLG9yZGVyOm8rICsrbixlOnMuZSxsYWJlbDpzLmxhYmVsfSwiX3NlIil9KSxkZWxldGUgYS5zZWxmRWRnZXN9KX0pfWZ1bmN0aW9uIEJscihlKXtpci5mb3JFYWNoKGUubm9kZXMoKSxmdW5jdGlvbih0KXt2YXIgcj1lLm5vZGUodCk7aWYoci5kdW1teT09PSJzZWxmZWRnZSIpe3ZhciBuPWUubm9kZShyLmUudiksaT1uLngrbi53aWR0aC8yLG89bi55LGE9ci54LWkscz1uLmhlaWdodC8yO2Uuc2V0RWRnZShyLmUsci5sYWJlbCksZS5yZW1vdmVOb2RlKHQpLHIubGFiZWwucG9pbnRzPVt7eDppKzIqYS8zLHk6by1zfSx7eDppKzUqYS82LHk6by1zfSx7eDppK2EseTpvfSx7eDppKzUqYS82LHk6bytzfSx7eDppKzIqYS8zLHk6bytzfV0sci5sYWJlbC54PXIueCxyLmxhYmVsLnk9ci55fX0pfWZ1bmN0aW9uIFJsdChlLHQpe3JldHVybiBpci5tYXBWYWx1ZXMoaXIucGljayhlLHQpLE51bWJlcil9ZnVuY3Rpb24gTmx0KGUpe3ZhciB0PXt9O3JldHVybiBpci5mb3JFYWNoKGUsZnVuY3Rpb24ocixuKXt0W24udG9Mb3dlckNhc2UoKV09cn0pLHR9fSk7dmFyIERzZT1IKChuUW4sTnNlKT0+e3ZhciB1SD1xbigpLEhscj1ycygpLFZscj1IYygpLkdyYXBoO05zZS5leHBvcnRzPXtkZWJ1Z09yZGVyaW5nOlVscn07ZnVuY3Rpb24gVWxyKGUpe3ZhciB0PUhsci5idWlsZExheWVyTWF0cml4KGUpLHI9bmV3IFZscih7Y29tcG91bmQ6ITAsbXVsdGlncmFwaDohMH0pLnNldEdyYXBoKHt9KTtyZXR1cm4gdUguZm9yRWFjaChlLm5vZGVzKCksZnVuY3Rpb24obil7ci5zZXROb2RlKG4se2xhYmVsOm59KSxyLnNldFBhcmVudChuLCJsYXllciIrZS5ub2RlKG4pLnJhbmspfSksdUguZm9yRWFjaChlLmVkZ2VzKCksZnVuY3Rpb24obil7ci5zZXRFZGdlKG4udixuLncse30sbi5uYW1lKX0pLHVILmZvckVhY2godCxmdW5jdGlvbihuLGkpe3ZhciBvPSJsYXllciIraTtyLnNldE5vZGUobyx7cmFuazoic2FtZSJ9KSx1SC5yZWR1Y2UobixmdW5jdGlvbihhLHMpe3JldHVybiByLnNldEVkZ2UoYSxzLHtzdHlsZToiaW52aXMifSksc30pfSkscn19KTt2YXIgenNlPUgoKGlRbixPc2UpPT57T3NlLmV4cG9ydHM9IjAuOC41In0pO3ZhciBEbHQ9SCgob1FuLEZzZSk9PntGc2UuZXhwb3J0cz17Z3JhcGhsaWI6SGMoKSxsYXlvdXQ6UnNlKCksZGVidWc6RHNlKCksdXRpbDp7dGltZTpycygpLnRpbWUsbm90aW1lOnJzKCkubm90aW1lfSx2ZXJzaW9uOnpzZSgpfX0pO3ZhciBSZHQ9RWUoa2R0KCksMSkse19fZXh0ZW5kczpuX3IsX19hc3NpZ246aV9yLF9fcmVzdDpvX3IsX19kZWNvcmF0ZTpFLF9fcGFyYW06YV9yLF9fbWV0YWRhdGE6dyxfX2F3YWl0ZXI6cnUsX19nZW5lcmF0b3I6c19yLF9fZXhwb3J0U3RhcjpsX3IsX19jcmVhdGVCaW5kaW5nOmNfcixfX3ZhbHVlczp1X3IsX19yZWFkOmhfcixfX3NwcmVhZDpmX3IsX19zcHJlYWRBcnJheXM6cF9yLF9fc3ByZWFkQXJyYXk6ZF9yLF9fYXdhaXQ6bV9yLF9fYXN5bmNHZW5lcmF0b3I6Z19yLF9fYXN5bmNEZWxlZ2F0b3I6X19yLF9fYXN5bmNWYWx1ZXM6eV9yLF9fbWFrZVRlbXBsYXRlT2JqZWN0OnZfcixfX2ltcG9ydFN0YXI6eF9yLF9faW1wb3J0RGVmYXVsdDpiX3IsX19jbGFzc1ByaXZhdGVGaWVsZEdldDp3X3IsX19jbGFzc1ByaXZhdGVGaWVsZFNldDpTX3IsX19jbGFzc1ByaXZhdGVGaWVsZEluOk1fcn09UmR0LmRlZmF1bHQ7ZnVuY3Rpb24geXQoZSl7cmV0dXJuIHQ9PntpZihlKWlmKHQuaGFzT3duUHJvcGVydHkoImlzIikpe2lmKGUhPT10LmlzKXRocm93IG5ldyBFcnJvcihgY3VzdG9tIGVsZW1lbnQgdGFnIG5hbWVzIGRvIG5vdCBtYXRjaDogKCR7ZX0gIT09ICR7dC5pc30pYCl9ZWxzZSBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXMiLHt2YWx1ZTplfSk7d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSh0LmlzLHQpfX1mdW5jdGlvbiBOZHQoZSx0LHIpe2UuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoInByb3BlcnRpZXMiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUuY29uc3RydWN0b3IsInByb3BlcnRpZXMiLHt2YWx1ZTp7fX0pLGUuY29uc3RydWN0b3IucHJvcGVydGllc1t0XT1PYmplY3QuYXNzaWduKHt9LGUuY29uc3RydWN0b3IucHJvcGVydGllc1t0XSxyKX1mdW5jdGlvbiBBKGUpe3JldHVybih0LHIpPT57TmR0KHQscixlKX19ZnVuY3Rpb24gQnQoLi4uZSl7cmV0dXJuKHQscik9Pnt0LmNvbnN0cnVjdG9yLmhhc093blByb3BlcnR5KCJvYnNlcnZlcnMiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQuY29uc3RydWN0b3IsIm9ic2VydmVycyIse3ZhbHVlOltdfSksdC5jb25zdHJ1Y3Rvci5vYnNlcnZlcnMucHVzaChgJHtyfSgke2Uuam9pbigiLCIpfSlgKX19ZnVuY3Rpb24gUnQoZSwuLi50KXtyZXR1cm4ocixuLGkpPT57bGV0IG89YF9fY29tcHV0ZSR7bn1gO09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmkuZ2V0fSksaS5nZXQ9dm9pZCAwO2xldCBhPVtlLC4uLnRdLmpvaW4oIiwiKTtOZHQocixuLHtjb21wdXRlZDpgJHtvfSgke2F9KWB9KX19dmFyIFRfcj1EZHQoKGUsdCk9PmUucXVlcnlTZWxlY3Rvcih0KSksQ19yPURkdCgoZSx0KT0+ZS5xdWVyeVNlbGVjdG9yQWxsKHQpKTtmdW5jdGlvbiBEZHQoZSl7cmV0dXJuIHQ9PihyLG4pPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbix7Z2V0KCl7cmV0dXJuIGUodGhpcy5zaGFkb3dSb290LHQpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfX13aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eT1mdW5jdGlvbihlLHQpe3JldHVybiBlfTt2YXIgbXZlPS8odXJsXCgpKFteKV0qKShcKSkvZyxndmU9LyheXC9bXlwvXSl8KF4jKXwoXltcdy1cZF0qOikvLENJLEtzO2Z1bmN0aW9uIGxfKGUsdCl7aWYoZSYmZ3ZlLnRlc3QoZSl8fGU9PT0iLy8iKXJldHVybiBlO2lmKENJPT09dm9pZCAwKXtDST0hMTt0cnl7bGV0IHI9bmV3IFVSTCgiYiIsImh0dHA6Ly9hIik7ci5wYXRobmFtZT0iYyUyMGQiLENJPXIuaHJlZj09PSJodHRwOi8vYS9jJTIwZCJ9Y2F0Y2gocil7fX1pZih0fHwodD1kb2N1bWVudC5iYXNlVVJJfHx3aW5kb3cubG9jYXRpb24uaHJlZiksQ0kpdHJ5e3JldHVybiBuZXcgVVJMKGUsdCkuaHJlZn1jYXRjaChyKXtyZXR1cm4gZX1yZXR1cm4gS3N8fChLcz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInRlbXAiKSxLcy5iYXNlPUtzLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSxLcy5oZWFkLmFwcGVuZENoaWxkKEtzLmJhc2UpLEtzLmFuY2hvcj1Lcy5jcmVhdGVFbGVtZW50KCJhIiksS3MuYm9keS5hcHBlbmRDaGlsZChLcy5hbmNob3IpKSxLcy5iYXNlLmhyZWY9dCxLcy5hbmNob3IuaHJlZj1lLEtzLmFuY2hvci5ocmVmfHxlfWZ1bmN0aW9uIEZNKGUsdCl7cmV0dXJuIGUucmVwbGFjZShtdmUsZnVuY3Rpb24ocixuLGksbyl7cmV0dXJuIG4rIiciK2xfKGkucmVwbGFjZSgvWyInXS9nLCIiKSx0KSsiJyIrb30pfWZ1bmN0aW9uIFR4KGUpe3JldHVybiBlLnN1YnN0cmluZygwLGUubGFzdEluZGV4T2YoIi8iKSsxKX12YXIgY189IXdpbmRvdy5TaGFkeURPTXx8IXdpbmRvdy5TaGFkeURPTS5pblVzZSxSX3I9Qm9vbGVhbighd2luZG93LlNoYWR5Q1NTfHx3aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzKSxOX3I9IXdpbmRvdy5jdXN0b21FbGVtZW50cy5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrLE9kdD1jXyYmImFkb3B0ZWRTdHlsZVNoZWV0cyJpbiBEb2N1bWVudC5wcm90b3R5cGUmJiJyZXBsYWNlU3luYyJpbiBDU1NTdHlsZVNoZWV0LnByb3RvdHlwZSYmKCgpPT57dHJ5e2xldCBlPW5ldyBDU1NTdHlsZVNoZWV0O2UucmVwbGFjZVN5bmMoIiIpO2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0LmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSx0LnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzPVtlXSx0LnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzWzBdPT09ZX1jYXRjaChlKXtyZXR1cm4hMX19KSgpLHpkdD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIucm9vdFBhdGh8fFR4KGRvY3VtZW50LmJhc2VVUkl8fHdpbmRvdy5sb2NhdGlvbi5ocmVmKTt2YXIgQk09d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnNhbml0aXplRE9NVmFsdWV8fHZvaWQgMDt2YXIgRmR0PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zZXRQYXNzaXZlVG91Y2hHZXN0dXJlc3x8ITE7dmFyIG51PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zdHJpY3RUZW1wbGF0ZVBvbGljeXx8ITE7dmFyIEJkdD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuYWxsb3dUZW1wbGF0ZUZyb21Eb21Nb2R1bGV8fCExO3ZhciBwcD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9uc3x8ITE7dmFyIEFJPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5sZWdhY3lXYXJuaW5nc3x8ITE7dmFyIEhkdD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuc3luY0luaXRpYWxSZW5kZXJ8fCExO3ZhciBQST13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5VW5kZWZpbmVkfHwhMTt2YXIgVmR0PXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5vcmRlcmVkQ29tcHV0ZWR8fCExO3ZhciBjRz0hMDt2YXIgdUc9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnJlbW92ZU5lc3RlZFRlbXBsYXRlc3x8ITE7dmFyIElJPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5mYXN0RG9tSWZ8fCExO3ZhciBITT13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuc3VwcHJlc3NUZW1wbGF0ZU5vdGlmaWNhdGlvbnN8fCExO3ZhciBWTT13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5Tm9PYnNlcnZlZEF0dHJpYnV0ZXN8fCExO3ZhciBVZHQ9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnVzZUFkb3B0ZWRTdHlsZVNoZWV0c1dpdGhCdWlsdENTU3x8ITE7dmFyIF92ZT0wO2Z1bmN0aW9uIHFkdCgpe31xZHQucHJvdG90eXBlLl9fbWl4aW5BcHBsaWNhdGlvbnM7cWR0LnByb3RvdHlwZS5fX21peGluU2V0O3ZhciBObj1mdW5jdGlvbihlKXtsZXQgdD1lLl9fbWl4aW5BcHBsaWNhdGlvbnM7dHx8KHQ9bmV3IFdlYWtNYXAsZS5fX21peGluQXBwbGljYXRpb25zPXQpO2xldCByPV92ZSsrO2Z1bmN0aW9uIG4oaSl7bGV0IG89aS5fX21peGluU2V0O2lmKG8mJm9bcl0pcmV0dXJuIGk7bGV0IGE9dCxzPWEuZ2V0KGkpO2lmKCFzKXtzPWUoaSksYS5zZXQoaSxzKTtsZXQgbD1PYmplY3QuY3JlYXRlKHMuX19taXhpblNldHx8b3x8bnVsbCk7bFtyXT0hMCxzLl9fbWl4aW5TZXQ9bH1yZXR1cm4gc31yZXR1cm4gbn07dmFyIGhHPXt9LFlkdD17fTtmdW5jdGlvbiBHZHQoZSx0KXtoR1tlXT1ZZHRbZS50b0xvd2VyQ2FzZSgpXT10fWZ1bmN0aW9uIFdkdChlKXtyZXR1cm4gaEdbZV18fFlkdFtlLnRvTG93ZXJDYXNlKCldfWZ1bmN0aW9uIHl2ZShlKXtlLnF1ZXJ5U2VsZWN0b3IoInN0eWxlIikmJmNvbnNvbGUud2FybigiZG9tLW1vZHVsZSAlcyBoYXMgc3R5bGUgb3V0c2lkZSB0ZW1wbGF0ZSIsZS5pZCl9dmFyIGl1PWNsYXNzIGV4dGVuZHMgSFRNTEVsZW1lbnR7c3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKXtyZXR1cm5bImlkIl19c3RhdGljIGltcG9ydCh0LHIpe2lmKHQpe2xldCBuPVdkdCh0KTtyZXR1cm4gbiYmcj9uLnF1ZXJ5U2VsZWN0b3Iocik6bn1yZXR1cm4gbnVsbH1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxyLG4saSl7ciE9PW4mJnRoaXMucmVnaXN0ZXIoKX1nZXQgYXNzZXRwYXRoKCl7aWYoIXRoaXMuX19hc3NldHBhdGgpe2xldCB0PXdpbmRvdy5IVE1MSW1wb3J0cyYmSFRNTEltcG9ydHMuaW1wb3J0Rm9yRWxlbWVudD9IVE1MSW1wb3J0cy5pbXBvcnRGb3JFbGVtZW50KHRoaXMpfHxkb2N1bWVudDp0aGlzLm93bmVyRG9jdW1lbnQscj1sXyh0aGlzLmdldEF0dHJpYnV0ZSgiYXNzZXRwYXRoIil8fCIiLHQuYmFzZVVSSSk7dGhpcy5fX2Fzc2V0cGF0aD1UeChyKX1yZXR1cm4gdGhpcy5fX2Fzc2V0cGF0aH1yZWdpc3Rlcih0KXtpZih0PXR8fHRoaXMuaWQsdCl7aWYobnUmJldkdCh0KSE9PXZvaWQgMCl0aHJvdyBHZHQodCxudWxsKSxuZXcgRXJyb3IoYHN0cmljdFRlbXBsYXRlUG9saWN5OiBkb20tbW9kdWxlICR7dH0gcmUtcmVnaXN0ZXJlZGApO3RoaXMuaWQ9dCxHZHQodCx0aGlzKSx5dmUodGhpcyl9fX07aXUucHJvdG90eXBlLm1vZHVsZXM9aEc7Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCJkb20tbW9kdWxlIixpdSk7dmFyIHZ2ZT0ibGlua1tyZWw9aW1wb3J0XVt0eXBlfj1jc3NdIix4dmU9ImluY2x1ZGUiLGpkdD0ic2hhZHktdW5zY29wZWQiO2Z1bmN0aW9uIGZHKGUpe3JldHVybiBpdS5pbXBvcnQoZSl9ZnVuY3Rpb24gWGR0KGUpe2xldCB0PWUuYm9keT9lLmJvZHk6ZSxyPUZNKHQudGV4dENvbnRlbnQsZS5iYXNlVVJJKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIG4udGV4dENvbnRlbnQ9cixufWZ1bmN0aW9uIGJ2ZShlKXtsZXQgdD1lLnRyaW0oKS5zcGxpdCgvXHMrLykscj1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyLnB1c2goLi4ud3ZlKHRbbl0pKTtyZXR1cm4gcn1mdW5jdGlvbiB3dmUoZSl7bGV0IHQ9ZkcoZSk7aWYoIXQpcmV0dXJuIGNvbnNvbGUud2FybigiQ291bGQgbm90IGZpbmQgc3R5bGUgZGF0YSBpbiBtb2R1bGUgbmFtZWQiLGUpLFtdO2lmKHQuX3N0eWxlcz09PXZvaWQgMCl7bGV0IHI9W107ci5wdXNoKC4uLnBHKHQpKTtsZXQgbj10LnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7biYmci5wdXNoKC4uLkxJKG4sdC5hc3NldHBhdGgpKSx0Ll9zdHlsZXM9cn1yZXR1cm4gdC5fc3R5bGVzfWZ1bmN0aW9uIExJKGUsdCl7aWYoIWUuX3N0eWxlcyl7bGV0IHI9W10sbj1lLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKTtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl7bGV0IG89bltpXSxhPW8uZ2V0QXR0cmlidXRlKHh2ZSk7YSYmci5wdXNoKC4uLmJ2ZShhKS5maWx0ZXIoZnVuY3Rpb24ocyxsLGMpe3JldHVybiBjLmluZGV4T2Yocyk9PT1sfSkpLHQmJihvLnRleHRDb250ZW50PUZNKG8udGV4dENvbnRlbnQsdCkpLHIucHVzaChvKX1lLl9zdHlsZXM9cn1yZXR1cm4gZS5fc3R5bGVzfWZ1bmN0aW9uICRkdChlKXtsZXQgdD1mRyhlKTtyZXR1cm4gdD9wRyh0KTpbXX1mdW5jdGlvbiBwRyhlKXtsZXQgdD1bXSxyPWUucXVlcnlTZWxlY3RvckFsbCh2dmUpO2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bisrKXtsZXQgaT1yW25dO2lmKGkuaW1wb3J0KXtsZXQgbz1pLmltcG9ydCxhPWkuaGFzQXR0cmlidXRlKGpkdCk7aWYoYSYmIW8uX3Vuc2NvcGVkU3R5bGUpe2xldCBzPVhkdChvKTtzLnNldEF0dHJpYnV0ZShqZHQsIiIpLG8uX3Vuc2NvcGVkU3R5bGU9c31lbHNlIG8uX3N0eWxlfHwoby5fc3R5bGU9WGR0KG8pKTt0LnB1c2goYT9vLl91bnNjb3BlZFN0eWxlOm8uX3N0eWxlKX19cmV0dXJuIHR9ZnVuY3Rpb24gS2R0KGUpe2xldCB0PWUudHJpbSgpLnNwbGl0KC9ccysvKSxyPSIiO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXIrPVN2ZSh0W25dKTtyZXR1cm4gcn1mdW5jdGlvbiBTdmUoZSl7bGV0IHQ9ZkcoZSk7aWYodCYmdC5fY3NzVGV4dD09PXZvaWQgMCl7bGV0IHI9RXZlKHQpLG49dC5xdWVyeVNlbGVjdG9yKCJ0ZW1wbGF0ZSIpO24mJihyKz1NdmUobix0LmFzc2V0cGF0aCkpLHQuX2Nzc1RleHQ9cnx8bnVsbH1yZXR1cm4gdHx8Y29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCIsZSksdCYmdC5fY3NzVGV4dHx8IiJ9ZnVuY3Rpb24gTXZlKGUsdCl7bGV0IHI9IiIsbj1MSShlLHQpO2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKXtsZXQgbz1uW2ldO28ucGFyZW50Tm9kZSYmby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLHIrPW8udGV4dENvbnRlbnR9cmV0dXJuIHJ9ZnVuY3Rpb24gRXZlKGUpe2xldCB0PSIiLHI9cEcoZSk7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspdCs9cltuXS50ZXh0Q29udGVudDtyZXR1cm4gdH12YXIgdWU9d2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00ubm9QYXRjaCYmd2luZG93LlNoYWR5RE9NLndyYXA/d2luZG93LlNoYWR5RE9NLndyYXA6d2luZG93LlNoYWR5RE9NP2U9PlNoYWR5RE9NLnBhdGNoKGUpOmU9PmU7ZnVuY3Rpb24ga0koZSl7cmV0dXJuIGUuaW5kZXhPZigiLiIpPj0wfWZ1bmN0aW9uIG91KGUpe2xldCB0PWUuaW5kZXhPZigiLiIpO3JldHVybiB0PT09LTE/ZTplLnNsaWNlKDAsdCl9ZnVuY3Rpb24gZEcoZSx0KXtyZXR1cm4gZS5pbmRleE9mKHQrIi4iKT09PTB9ZnVuY3Rpb24gQ3goZSx0KXtyZXR1cm4gdC5pbmRleE9mKGUrIi4iKT09PTB9ZnVuY3Rpb24gZHAoZSx0LHIpe3JldHVybiB0K3Iuc2xpY2UoZS5sZW5ndGgpfWZ1bmN0aW9uIFJJKGUsdCl7cmV0dXJuIGU9PT10fHxkRyhlLHQpfHxDeChlLHQpfWZ1bmN0aW9uIEF4KGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbj1lW3JdLnRvU3RyaW5nKCkuc3BsaXQoIi4iKTtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl0LnB1c2gobltpXSl9cmV0dXJuIHQuam9pbigiLiIpfWVsc2UgcmV0dXJuIGV9ZnVuY3Rpb24gWmR0KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP0F4KGUpLnNwbGl0KCIuIik6ZS50b1N0cmluZygpLnNwbGl0KCIuIil9ZnVuY3Rpb24gUm8oZSx0LHIpe2xldCBuPWUsaT1aZHQodCk7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2lmKCFuKXJldHVybjtsZXQgYT1pW29dO249blthXX1yZXR1cm4gciYmKHIucGF0aD1pLmpvaW4oIi4iKSksbn1mdW5jdGlvbiBtRyhlLHQscil7bGV0IG49ZSxpPVpkdCh0KSxvPWlbaS5sZW5ndGgtMV07aWYoaS5sZW5ndGg+MSl7Zm9yKGxldCBhPTA7YTxpLmxlbmd0aC0xO2ErKyl7bGV0IHM9aVthXTtpZihuPW5bc10sIW4pcmV0dXJufW5bb109cn1lbHNlIG5bdF09cjtyZXR1cm4gaS5qb2luKCIuIil9dmFyIE5JPXt9LFR2ZT0vLVthLXpdL2csQ3ZlPS8oW0EtWl0pL2c7ZnVuY3Rpb24gd20oZSl7cmV0dXJuIE5JW2VdfHwoTklbZV09ZS5pbmRleE9mKCItIik8MD9lOmUucmVwbGFjZShUdmUsdD0+dFsxXS50b1VwcGVyQ2FzZSgpKSl9ZnVuY3Rpb24gUHgoZSl7cmV0dXJuIE5JW2VdfHwoTklbZV09ZS5yZXBsYWNlKEN2ZSwiLSQxIikudG9Mb3dlckNhc2UoKSl9dmFyIEF2ZT0wLEpkdD0wLEl4PVtdLFB2ZT0wLGdHPSExLFFkdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik7bmV3IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKEl2ZSkub2JzZXJ2ZShRZHQse2NoYXJhY3RlckRhdGE6ITB9KTtmdW5jdGlvbiBJdmUoKXtnRz0hMTtsZXQgZT1JeC5sZW5ndGg7Zm9yKGxldCB0PTA7dDxlO3QrKyl7bGV0IHI9SXhbdF07aWYocil0cnl7cigpfWNhdGNoKG4pe3NldFRpbWVvdXQoKCk9Pnt0aHJvdyBufSl9fUl4LnNwbGljZSgwLGUpLEpkdCs9ZX12YXIgcG89e2FmdGVyKGUpe3JldHVybntydW4odCl7cmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KHQsZSl9LGNhbmNlbCh0KXt3aW5kb3cuY2xlYXJUaW1lb3V0KHQpfX19LHJ1bihlLHQpe3JldHVybiB3aW5kb3cuc2V0VGltZW91dChlLHQpfSxjYW5jZWwoZSl7d2luZG93LmNsZWFyVGltZW91dChlKX19O3ZhciBSaT17cnVuKGUpe3JldHVybiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpfSxjYW5jZWwoZSl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKGUpfX07dmFyIEx4PXtydW4oZSl7cmV0dXJuIHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrP3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKGUpOndpbmRvdy5zZXRUaW1lb3V0KGUsMTYpfSxjYW5jZWwoZSl7d2luZG93LmNhbmNlbElkbGVDYWxsYmFjaz93aW5kb3cuY2FuY2VsSWRsZUNhbGxiYWNrKGUpOndpbmRvdy5jbGVhclRpbWVvdXQoZSl9fTt2YXIgY2k9e3J1bihlKXtyZXR1cm4gZ0d8fChnRz0hMCxRZHQudGV4dENvbnRlbnQ9UHZlKyspLEl4LnB1c2goZSksQXZlKyt9LGNhbmNlbChlKXtsZXQgdD1lLUpkdDtpZih0Pj0wKXtpZighSXhbdF0pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGFzeW5jIGhhbmRsZTogIitlKTtJeFt0XT1udWxsfX19O3ZhciBMdmU9Y2ksREk9Tm4oZT0+e2NsYXNzIHQgZXh0ZW5kcyBle3N0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKG4pe2xldCBpPXRoaXMucHJvdG90eXBlO2ZvcihsZXQgbyBpbiBuKW8gaW4gaXx8aS5fY3JlYXRlUHJvcGVydHlBY2Nlc3NvcihvKX1zdGF0aWMgYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KG4pe3JldHVybiBuLnRvTG93ZXJDYXNlKCl9c3RhdGljIHR5cGVGb3JQcm9wZXJ0eShuKXt9X2NyZWF0ZVByb3BlcnR5QWNjZXNzb3IobixpKXt0aGlzLl9hZGRQcm9wZXJ0eVRvQXR0cmlidXRlTWFwKG4pLHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19kYXRhSGFzQWNjZXNzb3IiLHRoaXMpKXx8KHRoaXMuX19kYXRhSGFzQWNjZXNzb3I9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9fZGF0YUhhc0FjY2Vzc29yKSksdGhpcy5fX2RhdGFIYXNBY2Nlc3NvcltuXXx8KHRoaXMuX19kYXRhSGFzQWNjZXNzb3Jbbl09ITAsdGhpcy5fZGVmaW5lUHJvcGVydHlBY2Nlc3NvcihuLGkpKX1fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcChuKXt0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZGF0YUF0dHJpYnV0ZXMiLHRoaXMpKXx8KHRoaXMuX19kYXRhQXR0cmlidXRlcz1PYmplY3QuYXNzaWduKHt9LHRoaXMuX19kYXRhQXR0cmlidXRlcykpO2xldCBpPXRoaXMuX19kYXRhQXR0cmlidXRlc1tuXTtyZXR1cm4gaXx8KGk9dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkobiksdGhpcy5fX2RhdGFBdHRyaWJ1dGVzW2ldPW4pLGl9X2RlZmluZVByb3BlcnR5QWNjZXNzb3IobixpKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxuLHtnZXQoKXtyZXR1cm4gdGhpcy5fX2RhdGFbbl19LHNldDppP2Z1bmN0aW9uKCl7fTpmdW5jdGlvbihvKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkobixvLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX19KX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fX2RhdGFFbmFibGVkPSExLHRoaXMuX19kYXRhUmVhZHk9ITEsdGhpcy5fX2RhdGFJbnZhbGlkPSExLHRoaXMuX19kYXRhPXt9LHRoaXMuX19kYXRhUGVuZGluZz1udWxsLHRoaXMuX19kYXRhT2xkPW51bGwsdGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzPW51bGwsdGhpcy5fX2RhdGFDb3VudGVyPTAsdGhpcy5fX3NlcmlhbGl6aW5nPSExLHRoaXMuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCl9cmVhZHkoKXt0aGlzLl9fZGF0YVJlYWR5PSEwLHRoaXMuX2ZsdXNoUHJvcGVydGllcygpfV9pbml0aWFsaXplUHJvcGVydGllcygpe2ZvcihsZXQgbiBpbiB0aGlzLl9fZGF0YUhhc0FjY2Vzc29yKXRoaXMuaGFzT3duUHJvcGVydHkobikmJih0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9dGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzfHx7fSx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHNbbl09dGhpc1tuXSxkZWxldGUgdGhpc1tuXSl9X2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXMobil7T2JqZWN0LmFzc2lnbih0aGlzLG4pfV9zZXRQcm9wZXJ0eShuLGkpe3RoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eShuLGkpJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfV9nZXRQcm9wZXJ0eShuKXtyZXR1cm4gdGhpcy5fX2RhdGFbbl19X3NldFBlbmRpbmdQcm9wZXJ0eShuLGksbyl7bGV0IGE9dGhpcy5fX2RhdGFbbl0scz10aGlzLl9zaG91bGRQcm9wZXJ0eUNoYW5nZShuLGksYSk7cmV0dXJuIHMmJih0aGlzLl9fZGF0YVBlbmRpbmd8fCh0aGlzLl9fZGF0YVBlbmRpbmc9e30sdGhpcy5fX2RhdGFPbGQ9e30pLHRoaXMuX19kYXRhT2xkJiYhKG4gaW4gdGhpcy5fX2RhdGFPbGQpJiYodGhpcy5fX2RhdGFPbGRbbl09YSksdGhpcy5fX2RhdGFbbl09aSx0aGlzLl9fZGF0YVBlbmRpbmdbbl09aSksc31faXNQcm9wZXJ0eVBlbmRpbmcobil7cmV0dXJuISEodGhpcy5fX2RhdGFQZW5kaW5nJiZ0aGlzLl9fZGF0YVBlbmRpbmcuaGFzT3duUHJvcGVydHkobikpfV9pbnZhbGlkYXRlUHJvcGVydGllcygpeyF0aGlzLl9fZGF0YUludmFsaWQmJnRoaXMuX19kYXRhUmVhZHkmJih0aGlzLl9fZGF0YUludmFsaWQ9ITAsTHZlLnJ1bigoKT0+e3RoaXMuX19kYXRhSW52YWxpZCYmKHRoaXMuX19kYXRhSW52YWxpZD0hMSx0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSl9KSl9X2VuYWJsZVByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YUVuYWJsZWR8fCh0aGlzLl9fZGF0YUVuYWJsZWQ9ITAsdGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzJiYodGhpcy5faW5pdGlhbGl6ZUluc3RhbmNlUHJvcGVydGllcyh0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHMpLHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcz1udWxsKSx0aGlzLnJlYWR5KCkpfV9mbHVzaFByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YUNvdW50ZXIrKztsZXQgbj10aGlzLl9fZGF0YSxpPXRoaXMuX19kYXRhUGVuZGluZyxvPXRoaXMuX19kYXRhT2xkO3RoaXMuX3Nob3VsZFByb3BlcnRpZXNDaGFuZ2UobixpLG8pJiYodGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZChuLGksbykpLHRoaXMuX19kYXRhQ291bnRlci0tfV9zaG91bGRQcm9wZXJ0aWVzQ2hhbmdlKG4saSxvKXtyZXR1cm4gQm9vbGVhbihpKX1fcHJvcGVydGllc0NoYW5nZWQobixpLG8pe31fc2hvdWxkUHJvcGVydHlDaGFuZ2UobixpLG8pe3JldHVybiBvIT09aSYmKG89PT1vfHxpPT09aSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG4saSxvLGEpe2khPT1vJiZ0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KG4sbyksc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrJiZzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobixpLG8sYSl9X2F0dHJpYnV0ZVRvUHJvcGVydHkobixpLG8pe2lmKCF0aGlzLl9fc2VyaWFsaXppbmcpe2xldCBhPXRoaXMuX19kYXRhQXR0cmlidXRlcyxzPWEmJmFbbl18fG47dGhpc1tzXT10aGlzLl9kZXNlcmlhbGl6ZVZhbHVlKGksb3x8dGhpcy5jb25zdHJ1Y3Rvci50eXBlRm9yUHJvcGVydHkocykpfX1fcHJvcGVydHlUb0F0dHJpYnV0ZShuLGksbyl7dGhpcy5fX3NlcmlhbGl6aW5nPSEwLG89YXJndW1lbnRzLmxlbmd0aDwzP3RoaXNbbl06byx0aGlzLl92YWx1ZVRvTm9kZUF0dHJpYnV0ZSh0aGlzLG8saXx8dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkobikpLHRoaXMuX19zZXJpYWxpemluZz0hMX1fdmFsdWVUb05vZGVBdHRyaWJ1dGUobixpLG8pe2xldCBhPXRoaXMuX3NlcmlhbGl6ZVZhbHVlKGkpOyhvPT09ImNsYXNzInx8bz09PSJuYW1lInx8bz09PSJzbG90IikmJihuPXVlKG4pKSxhPT09dm9pZCAwP24ucmVtb3ZlQXR0cmlidXRlKG8pOm4uc2V0QXR0cmlidXRlKG8sYSl9X3NlcmlhbGl6ZVZhbHVlKG4pe3N3aXRjaCh0eXBlb2Ygbil7Y2FzZSJib29sZWFuIjpyZXR1cm4gbj8iIjp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gbiE9bnVsbD9uLnRvU3RyaW5nKCk6dm9pZCAwfX1fZGVzZXJpYWxpemVWYWx1ZShuLGkpe3N3aXRjaChpKXtjYXNlIEJvb2xlYW46cmV0dXJuIG4hPT1udWxsO2Nhc2UgTnVtYmVyOnJldHVybiBOdW1iZXIobik7ZGVmYXVsdDpyZXR1cm4gbn19fXJldHVybiB0fSk7dmFyIHRtdD17fSxPST1IVE1MRWxlbWVudC5wcm90b3R5cGU7Zm9yKDtPSTspe2xldCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9JKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl0bXRbZVt0XV09ITA7T0k9T2JqZWN0LmdldFByb3RvdHlwZU9mKE9JKX1mdW5jdGlvbiBrdmUoZSx0KXtpZighdG10W3RdKXtsZXQgcj1lW3RdO3IhPT12b2lkIDAmJihlLl9fZGF0YT9lLl9zZXRQZW5kaW5nUHJvcGVydHkodCxyKTooZS5fX2RhdGFQcm90bz9lLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZGF0YVByb3RvIixlKSl8fChlLl9fZGF0YVByb3RvPU9iamVjdC5jcmVhdGUoZS5fX2RhdGFQcm90bykpOmUuX19kYXRhUHJvdG89e30sZS5fX2RhdGFQcm90b1t0XT1yKSl9fXZhciB6ST1ObihlPT57bGV0IHQ9REkoZSk7Y2xhc3MgciBleHRlbmRzIHR7c3RhdGljIGNyZWF0ZVByb3BlcnRpZXNGb3JBdHRyaWJ1dGVzKCl7bGV0IGk9dGhpcy5vYnNlcnZlZEF0dHJpYnV0ZXM7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspdGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3Iod20oaVtvXSkpfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkoaSl7cmV0dXJuIFB4KGkpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuX19kYXRhUHJvdG8mJih0aGlzLl9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHRoaXMuX19kYXRhUHJvdG8pLHRoaXMuX19kYXRhUHJvdG89bnVsbCksc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXMoaSl7Zm9yKGxldCBvIGluIGkpdGhpcy5fc2V0UHJvcGVydHkobyxpW29dKX1fZW5zdXJlQXR0cmlidXRlKGksbyl7bGV0IGE9dGhpczthLmhhc0F0dHJpYnV0ZShpKXx8dGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUoYSxvLGkpfV9zZXJpYWxpemVWYWx1ZShpKXtzd2l0Y2godHlwZW9mIGkpe2Nhc2Uib2JqZWN0IjppZihpIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gaS50b1N0cmluZygpO2lmKGkpdHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShpKX1jYXRjaChvKXtyZXR1cm4iIn1kZWZhdWx0OnJldHVybiBzdXBlci5fc2VyaWFsaXplVmFsdWUoaSl9fV9kZXNlcmlhbGl6ZVZhbHVlKGksbyl7bGV0IGE7c3dpdGNoKG8pe2Nhc2UgT2JqZWN0OnRyeXthPUpTT04ucGFyc2UoaSl9Y2F0Y2gocyl7YT1pfWJyZWFrO2Nhc2UgQXJyYXk6dHJ5e2E9SlNPTi5wYXJzZShpKX1jYXRjaChzKXthPW51bGwsY29uc29sZS53YXJuKGBQb2x5bWVyOjpBdHRyaWJ1dGVzOiBjb3VsZG4ndCBkZWNvZGUgQXJyYXkgYXMgSlNPTjogJHtpfWApfWJyZWFrO2Nhc2UgRGF0ZTphPWlzTmFOKGkpP1N0cmluZyhpKTpOdW1iZXIoaSksYT1uZXcgRGF0ZShhKTticmVhaztkZWZhdWx0OmE9c3VwZXIuX2Rlc2VyaWFsaXplVmFsdWUoaSxvKTticmVha31yZXR1cm4gYX1fZGVmaW5lUHJvcGVydHlBY2Nlc3NvcihpLG8pe2t2ZSh0aGlzLGkpLHN1cGVyLl9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKGksbyl9X2hhc0FjY2Vzc29yKGkpe3JldHVybiB0aGlzLl9fZGF0YUhhc0FjY2Vzc29yJiZ0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW2ldfV9pc1Byb3BlcnR5UGVuZGluZyhpKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9fZGF0YVBlbmRpbmcmJmkgaW4gdGhpcy5fX2RhdGFQZW5kaW5nKX19cmV0dXJuIHJ9KTt2YXIgUnZlPXsiZG9tLWlmIjohMCwiZG9tLXJlcGVhdCI6ITB9LGVtdD0hMSxybXQ9ITE7ZnVuY3Rpb24gTnZlKCl7aWYoIWVtdCl7ZW10PSEwO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7ZS5wbGFjZWhvbGRlcj0iYSIscm10PWUucGxhY2Vob2xkZXI9PT1lLnRleHRDb250ZW50fXJldHVybiBybXR9ZnVuY3Rpb24gRHZlKGUpe052ZSgpJiZlLmxvY2FsTmFtZT09PSJ0ZXh0YXJlYSImJmUucGxhY2Vob2xkZXImJmUucGxhY2Vob2xkZXI9PT1lLnRleHRDb250ZW50JiYoZS50ZXh0Q29udGVudD1udWxsKX1mdW5jdGlvbiBPdmUoZSl7bGV0IHQ9ZS5nZXRBdHRyaWJ1dGUoImlzIik7aWYodCYmUnZlW3RdKXtsZXQgcj1lO2ZvcihyLnJlbW92ZUF0dHJpYnV0ZSgiaXMiKSxlPXIub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpLHIucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZSxyKSxlLmFwcGVuZENoaWxkKHIpO3IuYXR0cmlidXRlcy5sZW5ndGg7KWUuc2V0QXR0cmlidXRlKHIuYXR0cmlidXRlc1swXS5uYW1lLHIuYXR0cmlidXRlc1swXS52YWx1ZSksci5yZW1vdmVBdHRyaWJ1dGUoci5hdHRyaWJ1dGVzWzBdLm5hbWUpfXJldHVybiBlfWZ1bmN0aW9uIG5tdChlLHQpe2xldCByPXQucGFyZW50SW5mbyYmbm10KGUsdC5wYXJlbnRJbmZvKTtpZihyKXtmb3IobGV0IG49ci5maXJzdENoaWxkLGk9MDtuO249bi5uZXh0U2libGluZylpZih0LnBhcmVudEluZGV4PT09aSsrKXJldHVybiBufWVsc2UgcmV0dXJuIGV9ZnVuY3Rpb24genZlKGUsdCxyLG4pe24uaWQmJih0W24uaWRdPXIpfWZ1bmN0aW9uIEZ2ZShlLHQscil7aWYoci5ldmVudHMmJnIuZXZlbnRzLmxlbmd0aClmb3IobGV0IG49MCxpPXIuZXZlbnRzLG87bjxpLmxlbmd0aCYmKG89aVtuXSk7bisrKWUuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUodCxvLm5hbWUsby52YWx1ZSxlKX1mdW5jdGlvbiBCdmUoZSx0LHIsbil7ci50ZW1wbGF0ZUluZm8mJih0Ll90ZW1wbGF0ZUluZm89ci50ZW1wbGF0ZUluZm8sdC5fcGFyZW50VGVtcGxhdGVJbmZvPW4pfWZ1bmN0aW9uIEh2ZShlLHQscil7cmV0dXJuIGU9ZS5fbWV0aG9kSG9zdHx8ZSxmdW5jdGlvbihpKXtlW3JdP2Vbcl0oaSxpLmRldGFpbCk6Y29uc29sZS53YXJuKCJsaXN0ZW5lciBtZXRob2QgYCIrcisiYCBub3QgZGVmaW5lZCIpfX12YXIgaW10PU5uKGU9PntjbGFzcyB0IGV4dGVuZHMgZXtzdGF0aWMgX3BhcnNlVGVtcGxhdGUobixpKXtpZighbi5fdGVtcGxhdGVJbmZvKXtsZXQgbz1uLl90ZW1wbGF0ZUluZm89e307by5ub2RlSW5mb0xpc3Q9W10sby5uZXN0ZWRUZW1wbGF0ZT1Cb29sZWFuKGkpLG8uc3RyaXBXaGl0ZVNwYWNlPWkmJmkuc3RyaXBXaGl0ZVNwYWNlfHxuLmhhc0F0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIpLHRoaXMuX3BhcnNlVGVtcGxhdGVDb250ZW50KG4sbyx7cGFyZW50Om51bGx9KX1yZXR1cm4gbi5fdGVtcGxhdGVJbmZvfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZUNvbnRlbnQobixpLG8pe3JldHVybiB0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZShuLmNvbnRlbnQsaSxvKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKG4saSxvKXtsZXQgYT0hMSxzPW47cmV0dXJuIHMubG9jYWxOYW1lPT0idGVtcGxhdGUiJiYhcy5oYXNBdHRyaWJ1dGUoInByZXNlcnZlLWNvbnRlbnQiKT9hPXRoaXMuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShzLGksbyl8fGE6cy5sb2NhbE5hbWU9PT0ic2xvdCImJihpLmhhc0luc2VydGlvblBvaW50PSEwKSxEdmUocykscy5maXJzdENoaWxkJiZ0aGlzLl9wYXJzZVRlbXBsYXRlQ2hpbGROb2RlcyhzLGksbykscy5oYXNBdHRyaWJ1dGVzJiZzLmhhc0F0dHJpYnV0ZXMoKSYmKGE9dGhpcy5fcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGVzKHMsaSxvKXx8YSksYXx8by5ub3RlZH1zdGF0aWMgX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzKG4saSxvKXtpZighKG4ubG9jYWxOYW1lPT09InNjcmlwdCJ8fG4ubG9jYWxOYW1lPT09InN0eWxlIikpZm9yKGxldCBhPW4uZmlyc3RDaGlsZCxzPTAsbDthO2E9bCl7aWYoYS5sb2NhbE5hbWU9PSJ0ZW1wbGF0ZSImJihhPU92ZShhKSksbD1hLm5leHRTaWJsaW5nLGEubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSl7bGV0IHU9bDtmb3IoO3UmJnUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERTspYS50ZXh0Q29udGVudCs9dS50ZXh0Q29udGVudCxsPXUubmV4dFNpYmxpbmcsbi5yZW1vdmVDaGlsZCh1KSx1PWw7aWYoaS5zdHJpcFdoaXRlU3BhY2UmJiFhLnRleHRDb250ZW50LnRyaW0oKSl7bi5yZW1vdmVDaGlsZChhKTtjb250aW51ZX19bGV0IGM9e3BhcmVudEluZGV4OnMscGFyZW50SW5mbzpvfTt0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZShhLGksYykmJihjLmluZm9JbmRleD1pLm5vZGVJbmZvTGlzdC5wdXNoKGMpLTEpLGEucGFyZW50Tm9kZSYmcysrfX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShuLGksbyl7bGV0IGE9bixzPXRoaXMuX3BhcnNlVGVtcGxhdGUoYSxpKTtyZXR1cm4ocy5jb250ZW50PWEuY29udGVudC5vd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kQ2hpbGQoYS5jb250ZW50KSxvLnRlbXBsYXRlSW5mbz1zLCEwfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGVzKG4saSxvKXtsZXQgYT0hMSxzPUFycmF5LmZyb20obi5hdHRyaWJ1dGVzKTtmb3IobGV0IGw9cy5sZW5ndGgtMSxjO2M9c1tsXTtsLS0pYT10aGlzLl9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZShuLGksbyxjLm5hbWUsYy52YWx1ZSl8fGE7cmV0dXJuIGF9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZShuLGksbyxhLHMpe3JldHVybiBhLnNsaWNlKDAsMyk9PT0ib24tIj8obi5yZW1vdmVBdHRyaWJ1dGUoYSksby5ldmVudHM9by5ldmVudHN8fFtdLG8uZXZlbnRzLnB1c2goe25hbWU6YS5zbGljZSgzKSx2YWx1ZTpzfSksITApOmE9PT0iaWQiPyhvLmlkPXMsITApOiExfXN0YXRpYyBfY29udGVudEZvclRlbXBsYXRlKG4pe2xldCBpPW4uX3RlbXBsYXRlSW5mbztyZXR1cm4gaSYmaS5jb250ZW50fHxuLmNvbnRlbnR9X3N0YW1wVGVtcGxhdGUobixpKXtuJiYhbi5jb250ZW50JiZ3aW5kb3cuSFRNTFRlbXBsYXRlRWxlbWVudCYmSFRNTFRlbXBsYXRlRWxlbWVudC5kZWNvcmF0ZSYmSFRNTFRlbXBsYXRlRWxlbWVudC5kZWNvcmF0ZShuKSxpPWl8fHRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUobik7bGV0IG89aS5ub2RlSW5mb0xpc3QsYT1pLmNvbnRlbnR8fG4uY29udGVudCxzPWRvY3VtZW50LmltcG9ydE5vZGUoYSwhMCk7cy5fX25vSW5zZXJ0aW9uUG9pbnQ9IWkuaGFzSW5zZXJ0aW9uUG9pbnQ7bGV0IGw9cy5ub2RlTGlzdD1uZXcgQXJyYXkoby5sZW5ndGgpO3MuJD17fTtmb3IobGV0IGM9MCx1PW8ubGVuZ3RoLGg7Yzx1JiYoaD1vW2NdKTtjKyspe2xldCBmPWxbY109bm10KHMsaCk7enZlKHRoaXMscy4kLGYsaCksQnZlKHRoaXMsZixoLGkpLEZ2ZSh0aGlzLGYsaCl9cmV0dXJuIHM9cyxzfV9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKG4saSxvLGEpe2E9YXx8bjtsZXQgcz1IdmUoYSxpLG8pO3JldHVybiB0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKG4saSxzKSxzfV9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKG4saSxvKXtuLmFkZEV2ZW50TGlzdGVuZXIoaSxvKX1fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKG4saSxvKXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSxvKX19cmV0dXJuIHR9KTt2YXIgV009MCxZTT1bXSx6cj17Q09NUFVURToiX19jb21wdXRlRWZmZWN0cyIsUkVGTEVDVDoiX19yZWZsZWN0RWZmZWN0cyIsTk9USUZZOiJfX25vdGlmeUVmZmVjdHMiLFBST1BBR0FURToiX19wcm9wYWdhdGVFZmZlY3RzIixPQlNFUlZFOiJfX29ic2VydmVFZmZlY3RzIixSRUFEX09OTFk6Il9fcmVhZE9ubHkifSxmbXQ9Il9fY29tcHV0ZUluZm8iLFZ2ZT0vW0EtWl0vO2Z1bmN0aW9uIF9HKGUsdCxyKXtsZXQgbj1lW3RdO2lmKCFuKW49ZVt0XT17fTtlbHNlIGlmKCFlLmhhc093blByb3BlcnR5KHQpJiYobj1lW3RdPU9iamVjdC5jcmVhdGUoZVt0XSkscikpZm9yKGxldCBpIGluIG4pe2xldCBvPW5baV0sYT1uW2ldPUFycmF5KG8ubGVuZ3RoKTtmb3IobGV0IHM9MDtzPG8ubGVuZ3RoO3MrKylhW3NdPW9bc119cmV0dXJuIG59ZnVuY3Rpb24gR00oZSx0LHIsbixpLG8pe2lmKHQpe2xldCBhPSExLHM9V00rKztmb3IobGV0IGwgaW4gcil7bGV0IGM9aT9vdShsKTpsLHU9dFtjXTtpZih1KWZvcihsZXQgaD0wLGY9dS5sZW5ndGgscDtoPGYmJihwPXVbaF0pO2grKykoIXAuaW5mb3x8cC5pbmZvLmxhc3RSdW4hPT1zKSYmKCFpfHxiRyhsLHAudHJpZ2dlcikpJiYocC5pbmZvJiYocC5pbmZvLmxhc3RSdW49cykscC5mbihlLGwscixuLHAuaW5mbyxpLG8pLGE9ITApfXJldHVybiBhfXJldHVybiExfWZ1bmN0aW9uIFV2ZShlLHQscixuLGksbyxhLHMpe2xldCBsPSExLGM9YT9vdShuKTpuLHU9dFtjXTtpZih1KWZvcihsZXQgaD0wLGY9dS5sZW5ndGgscDtoPGYmJihwPXVbaF0pO2grKykoIXAuaW5mb3x8cC5pbmZvLmxhc3RSdW4hPT1yKSYmKCFhfHxiRyhuLHAudHJpZ2dlcikpJiYocC5pbmZvJiYocC5pbmZvLmxhc3RSdW49cikscC5mbihlLG4saSxvLHAuaW5mbyxhLHMpLGw9ITApO3JldHVybiBsfWZ1bmN0aW9uIGJHKGUsdCl7aWYodCl7bGV0IHI9dC5uYW1lO3JldHVybiByPT1lfHwhISh0LnN0cnVjdHVyZWQmJmRHKHIsZSkpfHwhISh0LndpbGRjYXJkJiZDeChyLGUpKX1lbHNlIHJldHVybiEwfWZ1bmN0aW9uIG9tdChlLHQscixuLGkpe2xldCBvPXR5cGVvZiBpLm1ldGhvZD09InN0cmluZyI/ZVtpLm1ldGhvZF06aS5tZXRob2QsYT1pLnByb3BlcnR5O28/by5jYWxsKGUsZS5fX2RhdGFbYV0sblthXSk6aS5keW5hbWljRm58fGNvbnNvbGUud2Fybigib2JzZXJ2ZXIgbWV0aG9kIGAiK2kubWV0aG9kKyJgIG5vdCBkZWZpbmVkIil9ZnVuY3Rpb24gcXZlKGUsdCxyLG4saSl7bGV0IG89ZVt6ci5OT1RJRlldLGEscz1XTSsrO2ZvcihsZXQgYyBpbiB0KXRbY10mJihvJiZVdmUoZSxvLHMsYyxyLG4saSl8fGkmJkd2ZShlLGMscikpJiYoYT0hMCk7bGV0IGw7YSYmKGw9ZS5fX2RhdGFIb3N0KSYmbC5faW52YWxpZGF0ZVByb3BlcnRpZXMmJmwuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9ZnVuY3Rpb24gR3ZlKGUsdCxyKXtsZXQgbj1vdSh0KTtpZihuIT09dCl7bGV0IGk9UHgobikrIi1jaGFuZ2VkIjtyZXR1cm4gcG10KGUsaSxyW3RdLHQpLCEwfXJldHVybiExfWZ1bmN0aW9uIHBtdChlLHQscixuKXtsZXQgaT17dmFsdWU6cixxdWV1ZVByb3BlcnR5OiEwfTtuJiYoaS5wYXRoPW4pLHVlKGUpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KHQse2RldGFpbDppfSkpfWZ1bmN0aW9uIFd2ZShlLHQscixuLGksbyl7bGV0IHM9KG8/b3UodCk6dCkhPXQ/dDpudWxsLGw9cz9SbyhlLHMpOmUuX19kYXRhW3RdO3MmJmw9PT12b2lkIDAmJihsPXJbdF0pLHBtdChlLGkuZXZlbnROYW1lLGwscyl9ZnVuY3Rpb24gWXZlKGUsdCxyLG4saSl7bGV0IG8sYT1lLmRldGFpbCxzPWEmJmEucGF0aDtzPyhuPWRwKHIsbixzKSxvPWEmJmEudmFsdWUpOm89ZS5jdXJyZW50VGFyZ2V0W3JdLG89aT8hbzpvLCghdFt6ci5SRUFEX09OTFldfHwhdFt6ci5SRUFEX09OTFldW25dKSYmdC5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKG4sbywhMCxCb29sZWFuKHMpKSYmKCFhfHwhYS5xdWV1ZVByb3BlcnR5KSYmdC5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1mdW5jdGlvbiBqdmUoZSx0LHIsbixpKXtsZXQgbz1lLl9fZGF0YVt0XTtCTSYmKG89Qk0obyxpLmF0dHJOYW1lLCJhdHRyaWJ1dGUiLGUpKSxlLl9wcm9wZXJ0eVRvQXR0cmlidXRlKHQsaS5hdHRyTmFtZSxvKX1mdW5jdGlvbiBYdmUoZSx0LHIsbil7bGV0IGk9ZVt6ci5DT01QVVRFXTtpZihpKWlmKFZkdCl7V00rKztsZXQgbz1LdmUoZSksYT1bXTtmb3IobGV0IGwgaW4gdClhbXQobCxpLGEsbyxuKTtsZXQgcztmb3IoO3M9YS5zaGlmdCgpOylkbXQoZSwiIix0LHIscykmJmFtdChzLm1ldGhvZEluZm8saSxhLG8sbik7T2JqZWN0LmFzc2lnbihyLGUuX19kYXRhT2xkKSxPYmplY3QuYXNzaWduKHQsZS5fX2RhdGFQZW5kaW5nKSxlLl9fZGF0YVBlbmRpbmc9bnVsbH1lbHNle2xldCBvPXQ7Zm9yKDtHTShlLGksbyxyLG4pOylPYmplY3QuYXNzaWduKHIsZS5fX2RhdGFPbGQpLE9iamVjdC5hc3NpZ24odCxlLl9fZGF0YVBlbmRpbmcpLG89ZS5fX2RhdGFQZW5kaW5nLGUuX19kYXRhUGVuZGluZz1udWxsfX12YXIgJHZlPShlLHQscik9PntsZXQgbj0wLGk9dC5sZW5ndGgtMSxvPS0xO2Zvcig7bjw9aTspe2xldCBhPW4raT4+MSxzPXIuZ2V0KHRbYV0ubWV0aG9kSW5mbyktci5nZXQoZS5tZXRob2RJbmZvKTtpZihzPDApbj1hKzE7ZWxzZSBpZihzPjApaT1hLTE7ZWxzZXtvPWE7YnJlYWt9fW88MCYmKG89aSsxKSx0LnNwbGljZShvLDAsZSl9LGFtdD0oZSx0LHIsbixpKT0+e2xldCBvPWk/b3UoZSk6ZSxhPXRbb107aWYoYSlmb3IobGV0IHM9MDtzPGEubGVuZ3RoO3MrKyl7bGV0IGw9YVtzXTtsLmluZm8ubGFzdFJ1biE9PVdNJiYoIWl8fGJHKGUsbC50cmlnZ2VyKSkmJihsLmluZm8ubGFzdFJ1bj1XTSwkdmUobC5pbmZvLHIsbikpfX07ZnVuY3Rpb24gS3ZlKGUpe2xldCB0PWUuY29uc3RydWN0b3IuX19vcmRlcmVkQ29tcHV0ZWREZXBzO2lmKCF0KXt0PW5ldyBNYXA7bGV0IHI9ZVt6ci5DT01QVVRFXSx7Y291bnRzOm4scmVhZHk6aSx0b3RhbDpvfT1admUoZSksYTtmb3IoO2E9aS5zaGlmdCgpOyl7dC5zZXQoYSx0LnNpemUpO2xldCBzPXJbYV07cyYmcy5mb3JFYWNoKGw9PntsZXQgYz1sLmluZm8ubWV0aG9kSW5mbzstLW8sLS1uW2NdPT09MCYmaS5wdXNoKGMpfSl9byE9PTAmJmNvbnNvbGUud2FybihgQ29tcHV0ZWQgZ3JhcGggZm9yICR7ZS5sb2NhbE5hbWV9IGluY29tcGxldGU7IGNpcmN1bGFyP2ApLGUuY29uc3RydWN0b3IuX19vcmRlcmVkQ29tcHV0ZWREZXBzPXR9cmV0dXJuIHR9ZnVuY3Rpb24gWnZlKGUpe2xldCB0PWVbZm10XSxyPXt9LG49ZVt6ci5DT01QVVRFXSxpPVtdLG89MDtmb3IobGV0IGEgaW4gdCl7bGV0IHM9dFthXTtvKz1yW2FdPXMuYXJncy5maWx0ZXIobD0+IWwubGl0ZXJhbCkubGVuZ3RoKyhzLmR5bmFtaWNGbj8xOjApfWZvcihsZXQgYSBpbiBuKXRbYV18fGkucHVzaChhKTtyZXR1cm57Y291bnRzOnIscmVhZHk6aSx0b3RhbDpvfX1mdW5jdGlvbiBkbXQoZSx0LHIsbixpKXtsZXQgbz14RyhlLHQscixuLGkpO2lmKG89PT1ZTSlyZXR1cm4hMTtsZXQgYT1pLm1ldGhvZEluZm87cmV0dXJuIGUuX19kYXRhSGFzQWNjZXNzb3ImJmUuX19kYXRhSGFzQWNjZXNzb3JbYV0/ZS5fc2V0UGVuZGluZ1Byb3BlcnR5KGEsbywhMCk6KGVbYV09bywhMSl9ZnVuY3Rpb24gSnZlKGUsdCxyKXtsZXQgbj1lLl9fZGF0YUxpbmtlZFBhdGhzO2lmKG4pe2xldCBpO2ZvcihsZXQgbyBpbiBuKXtsZXQgYT1uW29dO0N4KG8sdCk/KGk9ZHAobyxhLHQpLGUuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChpLHIsITAsITApKTpDeChhLHQpJiYoaT1kcChhLG8sdCksZS5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGksciwhMCwhMCkpfX19ZnVuY3Rpb24geUcoZSx0LHIsbixpLG8sYSl7ci5iaW5kaW5ncz1yLmJpbmRpbmdzfHxbXTtsZXQgcz17a2luZDpuLHRhcmdldDppLHBhcnRzOm8sbGl0ZXJhbDphLGlzQ29tcG91bmQ6by5sZW5ndGghPT0xfTtpZihyLmJpbmRpbmdzLnB1c2gocyksbjFlKHMpKXtsZXR7ZXZlbnQ6YyxuZWdhdGU6dX09cy5wYXJ0c1swXTtzLmxpc3RlbmVyRXZlbnQ9Y3x8UHgoaSkrIi1jaGFuZ2VkIixzLmxpc3RlbmVyTmVnYXRlPXV9bGV0IGw9dC5ub2RlSW5mb0xpc3QubGVuZ3RoO2ZvcihsZXQgYz0wO2M8cy5wYXJ0cy5sZW5ndGg7YysrKXtsZXQgdT1zLnBhcnRzW2NdO3UuY29tcG91bmRJbmRleD1jLFF2ZShlLHQscyx1LGwpfX1mdW5jdGlvbiBRdmUoZSx0LHIsbixpKXtpZighbi5saXRlcmFsKWlmKHIua2luZD09PSJhdHRyaWJ1dGUiJiZyLnRhcmdldFswXT09PSItIiljb25zb2xlLndhcm4oIkNhbm5vdCBzZXQgYXR0cmlidXRlICIrci50YXJnZXQrJyBiZWNhdXNlICItIiBpcyBub3QgYSB2YWxpZCBhdHRyaWJ1dGUgc3RhcnRpbmcgY2hhcmFjdGVyJyk7ZWxzZXtsZXQgbz1uLmRlcGVuZGVuY2llcyxhPXtpbmRleDppLGJpbmRpbmc6cixwYXJ0Om4sZXZhbHVhdG9yOmV9O2ZvcihsZXQgcz0wO3M8by5sZW5ndGg7cysrKXtsZXQgbD1vW3NdO3R5cGVvZiBsPT0ic3RyaW5nIiYmKGw9Z210KGwpLGwud2lsZGNhcmQ9ITApLGUuX2FkZFRlbXBsYXRlUHJvcGVydHlFZmZlY3QodCxsLnJvb3RQcm9wZXJ0eSx7Zm46dDFlLGluZm86YSx0cmlnZ2VyOmx9KX19fWZ1bmN0aW9uIHQxZShlLHQscixuLGksbyxhKXtsZXQgcz1hW2kuaW5kZXhdLGw9aS5iaW5kaW5nLGM9aS5wYXJ0O2lmKG8mJmMuc291cmNlJiZ0Lmxlbmd0aD5jLnNvdXJjZS5sZW5ndGgmJmwua2luZD09InByb3BlcnR5IiYmIWwuaXNDb21wb3VuZCYmcy5fX2lzUHJvcGVydHlFZmZlY3RzQ2xpZW50JiZzLl9fZGF0YUhhc0FjY2Vzc29yJiZzLl9fZGF0YUhhc0FjY2Vzc29yW2wudGFyZ2V0XSl7bGV0IHU9clt0XTt0PWRwKGMuc291cmNlLGwudGFyZ2V0LHQpLHMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCh0LHUsITEsITApJiZlLl9lbnF1ZXVlQ2xpZW50KHMpfWVsc2V7bGV0IHU9aS5ldmFsdWF0b3IuX2V2YWx1YXRlQmluZGluZyhlLGMsdCxyLG4sbyk7dSE9PVlNJiZlMWUoZSxzLGwsYyx1KX19ZnVuY3Rpb24gZTFlKGUsdCxyLG4saSl7aWYoaT1yMWUodCxpLHIsbiksQk0mJihpPUJNKGksci50YXJnZXQsci5raW5kLHQpKSxyLmtpbmQ9PSJhdHRyaWJ1dGUiKWUuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsaSxyLnRhcmdldCk7ZWxzZXtsZXQgbz1yLnRhcmdldDt0Ll9faXNQcm9wZXJ0eUVmZmVjdHNDbGllbnQmJnQuX19kYXRhSGFzQWNjZXNzb3ImJnQuX19kYXRhSGFzQWNjZXNzb3Jbb10/KCF0W3pyLlJFQURfT05MWV18fCF0W3pyLlJFQURfT05MWV1bb10pJiZ0Ll9zZXRQZW5kaW5nUHJvcGVydHkobyxpKSYmZS5fZW5xdWV1ZUNsaWVudCh0KTplLl9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LG8saSl9fWZ1bmN0aW9uIHIxZShlLHQscixuKXtpZihyLmlzQ29tcG91bmQpe2xldCBpPWUuX19kYXRhQ29tcG91bmRTdG9yYWdlW3IudGFyZ2V0XTtpW24uY29tcG91bmRJbmRleF09dCx0PWkuam9pbigiIil9cmV0dXJuIHIua2luZCE9PSJhdHRyaWJ1dGUiJiYoci50YXJnZXQ9PT0idGV4dENvbnRlbnQifHxyLnRhcmdldD09PSJ2YWx1ZSImJihlLmxvY2FsTmFtZT09PSJpbnB1dCJ8fGUubG9jYWxOYW1lPT09InRleHRhcmVhIikpJiYodD10PT1udWxsPyIiOnQpLHR9ZnVuY3Rpb24gbjFlKGUpe3JldHVybiBCb29sZWFuKGUudGFyZ2V0KSYmZS5raW5kIT0iYXR0cmlidXRlIiYmZS5raW5kIT0idGV4dCImJiFlLmlzQ29tcG91bmQmJmUucGFydHNbMF0ubW9kZT09PSJ7In1mdW5jdGlvbiBpMWUoZSx0KXtsZXR7bm9kZUxpc3Q6cixub2RlSW5mb0xpc3Q6bn09dDtpZihuLmxlbmd0aClmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl7bGV0IG89bltpXSxhPXJbaV0scz1vLmJpbmRpbmdzO2lmKHMpZm9yKGxldCBsPTA7bDxzLmxlbmd0aDtsKyspe2xldCBjPXNbbF07bzFlKGEsYyksYTFlKGEsZSxjKX1hLl9fZGF0YUhvc3Q9ZX19ZnVuY3Rpb24gbzFlKGUsdCl7aWYodC5pc0NvbXBvdW5kKXtsZXQgcj1lLl9fZGF0YUNvbXBvdW5kU3RvcmFnZXx8KGUuX19kYXRhQ29tcG91bmRTdG9yYWdlPXt9KSxuPXQucGFydHMsaT1uZXcgQXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKWlbYV09blthXS5saXRlcmFsO2xldCBvPXQudGFyZ2V0O3Jbb109aSx0LmxpdGVyYWwmJnQua2luZD09InByb3BlcnR5IiYmKG89PT0iY2xhc3NOYW1lIiYmKGU9dWUoZSkpLGVbb109dC5saXRlcmFsKX19ZnVuY3Rpb24gYTFlKGUsdCxyKXtpZihyLmxpc3RlbmVyRXZlbnQpe2xldCBuPXIucGFydHNbMF07ZS5hZGRFdmVudExpc3RlbmVyKHIubGlzdGVuZXJFdmVudCxmdW5jdGlvbihpKXtZdmUoaSx0LHIudGFyZ2V0LG4uc291cmNlLG4ubmVnYXRlKX0pfX1mdW5jdGlvbiBzbXQoZSx0LHIsbixpLG8pe289dC5zdGF0aWN8fG8mJih0eXBlb2YgbyE9Im9iamVjdCJ8fG9bdC5tZXRob2ROYW1lXSk7bGV0IGE9e21ldGhvZE5hbWU6dC5tZXRob2ROYW1lLGFyZ3M6dC5hcmdzLG1ldGhvZEluZm86aSxkeW5hbWljRm46b307Zm9yKGxldCBzPTAsbDtzPHQuYXJncy5sZW5ndGgmJihsPXQuYXJnc1tzXSk7cysrKWwubGl0ZXJhbHx8ZS5fYWRkUHJvcGVydHlFZmZlY3QobC5yb290UHJvcGVydHkscix7Zm46bixpbmZvOmEsdHJpZ2dlcjpsfSk7cmV0dXJuIG8mJmUuX2FkZFByb3BlcnR5RWZmZWN0KHQubWV0aG9kTmFtZSxyLHtmbjpuLGluZm86YX0pLGF9ZnVuY3Rpb24geEcoZSx0LHIsbixpKXtsZXQgbz1lLl9tZXRob2RIb3N0fHxlLGE9b1tpLm1ldGhvZE5hbWVdO2lmKGEpe2xldCBzPWUuX21hcnNoYWxBcmdzKGkuYXJncyx0LHIpO3JldHVybiBzPT09WU0/WU06YS5hcHBseShvLHMpfWVsc2UgaS5keW5hbWljRm58fGNvbnNvbGUud2FybigibWV0aG9kIGAiK2kubWV0aG9kTmFtZSsiYCBub3QgZGVmaW5lZCIpfXZhciBzMWU9W10sbW10PSIoPzpbYS16QS1aXyRdW1xcdy46JFxcLSpdKikiLGwxZT0iKD86Wy0rXT9bMC05XSpcXC4/WzAtOV0rKD86W2VFXVstK10/WzAtOV0rKT8pIixjMWU9Iig/OicoPzpbXidcXFxcXXxcXFxcLikqJykiLHUxZT0nKD86Iig/OlteIlxcXFxdfFxcXFwuKSoiKScsaDFlPSIoPzoiK2MxZSsifCIrdTFlKyIpIixsbXQ9Iig/OigiK21tdCsifCIrbDFlKyJ8IitoMWUrIilcXHMqKSIsZjFlPSIoPzoiK2xtdCsiKD86LFxccyoiK2xtdCsiKSopIixwMWU9Iig/OlxcKFxccyooPzoiK2YxZSsiPylcXClcXHMqKSIsZDFlPSIoIittbXQrIlxccyoiK3AxZSsiPykiLG0xZT0iKFxcW1xcW3x7eylcXHMqIixnMWU9Iig/Ol1dfH19KSIsXzFlPSIoPzooISlcXHMqKT8iLHkxZT1tMWUrXzFlK2QxZStnMWUsY210PW5ldyBSZWdFeHAoeTFlLCJnIik7ZnVuY3Rpb24gdW10KGUpe2xldCB0PSIiO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXQrPWVbcl0ubGl0ZXJhbHx8IiI7cmV0dXJuIHR9ZnVuY3Rpb24gdkcoZSl7bGV0IHQ9ZS5tYXRjaCgvKFteXHNdKz8pXCgoW1xzXFNdKilcKS8pO2lmKHQpe2xldCBuPXttZXRob2ROYW1lOnRbMV0sc3RhdGljOiEwLGFyZ3M6czFlfTtpZih0WzJdLnRyaW0oKSl7bGV0IGk9dFsyXS5yZXBsYWNlKC9cXCwvZywiJmNvbW1hOyIpLnNwbGl0KCIsIik7cmV0dXJuIHYxZShpLG4pfWVsc2UgcmV0dXJuIG59cmV0dXJuIG51bGx9ZnVuY3Rpb24gdjFlKGUsdCl7cmV0dXJuIHQuYXJncz1lLm1hcChmdW5jdGlvbihyKXtsZXQgbj1nbXQocik7cmV0dXJuIG4ubGl0ZXJhbHx8KHQuc3RhdGljPSExKSxufSx0aGlzKSx0fWZ1bmN0aW9uIGdtdChlKXtsZXQgdD1lLnRyaW0oKS5yZXBsYWNlKC8mY29tbWE7L2csIiwiKS5yZXBsYWNlKC9cXCguKS9nLCIkMSIpLHI9e25hbWU6dCx2YWx1ZToiIixsaXRlcmFsOiExfSxuPXRbMF07c3dpdGNoKG49PT0iLSImJihuPXRbMV0pLG4+PSIwIiYmbjw9IjkiJiYobj0iIyIpLG4pe2Nhc2UiJyI6Y2FzZSciJzpyLnZhbHVlPXQuc2xpY2UoMSwtMSksci5saXRlcmFsPSEwO2JyZWFrO2Nhc2UiIyI6ci52YWx1ZT1OdW1iZXIodCksci5saXRlcmFsPSEwO2JyZWFrfXJldHVybiByLmxpdGVyYWx8fChyLnJvb3RQcm9wZXJ0eT1vdSh0KSxyLnN0cnVjdHVyZWQ9a0kodCksci5zdHJ1Y3R1cmVkJiYoci53aWxkY2FyZD10LnNsaWNlKC0yKT09Ii4qIixyLndpbGRjYXJkJiYoci5uYW1lPXQuc2xpY2UoMCwtMikpKSkscn1mdW5jdGlvbiBobXQoZSx0LHIpe2xldCBuPVJvKGUscik7cmV0dXJuIG49PT12b2lkIDAmJihuPXRbcl0pLG59ZnVuY3Rpb24gX210KGUsdCxyLG4pe2xldCBpPXtpbmRleFNwbGljZXM6bn07UEkmJiFlLl9vdmVycmlkZUxlZ2FjeVVuZGVmaW5lZCYmKHQuc3BsaWNlcz1pKSxlLm5vdGlmeVBhdGgocisiLnNwbGljZXMiLGkpLGUubm90aWZ5UGF0aChyKyIubGVuZ3RoIix0Lmxlbmd0aCksUEkmJiFlLl9vdmVycmlkZUxlZ2FjeVVuZGVmaW5lZCYmKGkuaW5kZXhTcGxpY2VzPVtdKX1mdW5jdGlvbiBVTShlLHQscixuLGksbyl7X210KGUsdCxyLFt7aW5kZXg6bixhZGRlZENvdW50OmkscmVtb3ZlZDpvLG9iamVjdDp0LHR5cGU6InNwbGljZSJ9XSl9ZnVuY3Rpb24geDFlKGUpe3JldHVybiBlWzBdLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSl9dmFyIHVfPU5uKGU9PntsZXQgdD1pbXQoekkoZSkpO2NsYXNzIHIgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faXNQcm9wZXJ0eUVmZmVjdHNDbGllbnQ9ITAsdGhpcy5fX2RhdGFDbGllbnRzUmVhZHksdGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cyx0aGlzLl9fZGF0YVRvTm90aWZ5LHRoaXMuX19kYXRhTGlua2VkUGF0aHMsdGhpcy5fX2RhdGFIYXNQYXRocyx0aGlzLl9fZGF0YUNvbXBvdW5kU3RvcmFnZSx0aGlzLl9fZGF0YUhvc3QsdGhpcy5fX2RhdGFUZW1wLHRoaXMuX19kYXRhQ2xpZW50c0luaXRpYWxpemVkLHRoaXMuX19kYXRhLHRoaXMuX19kYXRhUGVuZGluZyx0aGlzLl9fZGF0YU9sZCx0aGlzLl9fY29tcHV0ZUVmZmVjdHMsdGhpcy5fX2NvbXB1dGVJbmZvLHRoaXMuX19yZWZsZWN0RWZmZWN0cyx0aGlzLl9fbm90aWZ5RWZmZWN0cyx0aGlzLl9fcHJvcGFnYXRlRWZmZWN0cyx0aGlzLl9fb2JzZXJ2ZUVmZmVjdHMsdGhpcy5fX3JlYWRPbmx5LHRoaXMuX190ZW1wbGF0ZUluZm8sdGhpcy5fb3ZlcnJpZGVMZWdhY3lVbmRlZmluZWR9Z2V0IFBST1BFUlRZX0VGRkVDVF9UWVBFUygpe3JldHVybiB6cn1faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXtzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLl9yZWdpc3Rlckhvc3QoKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT0hMSx0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPW51bGwsdGhpcy5fX2RhdGFUb05vdGlmeT1udWxsLHRoaXMuX19kYXRhTGlua2VkUGF0aHM9bnVsbCx0aGlzLl9fZGF0YUhhc1BhdGhzPSExLHRoaXMuX19kYXRhQ29tcG91bmRTdG9yYWdlPXRoaXMuX19kYXRhQ29tcG91bmRTdG9yYWdlfHxudWxsLHRoaXMuX19kYXRhSG9zdD10aGlzLl9fZGF0YUhvc3R8fG51bGwsdGhpcy5fX2RhdGFUZW1wPXt9LHRoaXMuX19kYXRhQ2xpZW50c0luaXRpYWxpemVkPSExfV9yZWdpc3Rlckhvc3QoKXtpZihxTS5sZW5ndGgpe2xldCBpPXFNW3FNLmxlbmd0aC0xXTtpLl9lbnF1ZXVlQ2xpZW50KHRoaXMpLHRoaXMuX19kYXRhSG9zdD1pfX1faW5pdGlhbGl6ZVByb3RvUHJvcGVydGllcyhpKXt0aGlzLl9fZGF0YT1PYmplY3QuY3JlYXRlKGkpLHRoaXMuX19kYXRhUGVuZGluZz1PYmplY3QuY3JlYXRlKGkpLHRoaXMuX19kYXRhT2xkPXt9fV9pbml0aWFsaXplSW5zdGFuY2VQcm9wZXJ0aWVzKGkpe2xldCBvPXRoaXNbenIuUkVBRF9PTkxZXTtmb3IobGV0IGEgaW4gaSkoIW98fCFvW2FdKSYmKHRoaXMuX19kYXRhUGVuZGluZz10aGlzLl9fZGF0YVBlbmRpbmd8fHt9LHRoaXMuX19kYXRhT2xkPXRoaXMuX19kYXRhT2xkfHx7fSx0aGlzLl9fZGF0YVthXT10aGlzLl9fZGF0YVBlbmRpbmdbYV09aVthXSl9X2FkZFByb3BlcnR5RWZmZWN0KGksbyxhKXt0aGlzLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKGksbz09enIuUkVBRF9PTkxZKTtsZXQgcz1fRyh0aGlzLG8sITApW2ldO3N8fChzPXRoaXNbb11baV09W10pLHMucHVzaChhKX1fcmVtb3ZlUHJvcGVydHlFZmZlY3QoaSxvLGEpe2xldCBzPV9HKHRoaXMsbywhMClbaV0sbD1zLmluZGV4T2YoYSk7bD49MCYmcy5zcGxpY2UobCwxKX1faGFzUHJvcGVydHlFZmZlY3QoaSxvKXtsZXQgYT10aGlzW29dO3JldHVybiBCb29sZWFuKGEmJmFbaV0pfV9oYXNSZWFkT25seUVmZmVjdChpKXtyZXR1cm4gdGhpcy5faGFzUHJvcGVydHlFZmZlY3QoaSx6ci5SRUFEX09OTFkpfV9oYXNOb3RpZnlFZmZlY3QoaSl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KGksenIuTk9USUZZKX1faGFzUmVmbGVjdEVmZmVjdChpKXtyZXR1cm4gdGhpcy5faGFzUHJvcGVydHlFZmZlY3QoaSx6ci5SRUZMRUNUKX1faGFzQ29tcHV0ZWRFZmZlY3QoaSl7cmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KGksenIuQ09NUFVURSl9X3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChpLG8sYSxzKXtpZihzfHxvdShBcnJheS5pc0FycmF5KGkpP2lbMF06aSkhPT1pKXtpZighcyl7bGV0IGw9Um8odGhpcyxpKTtpZihpPW1HKHRoaXMsaSxvKSwhaXx8IXN1cGVyLl9zaG91bGRQcm9wZXJ0eUNoYW5nZShpLG8sbCkpcmV0dXJuITF9aWYodGhpcy5fX2RhdGFIYXNQYXRocz0hMCx0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoaSxvLGEpKXJldHVybiBKdmUodGhpcyxpLG8pLCEwfWVsc2V7aWYodGhpcy5fX2RhdGFIYXNBY2Nlc3NvciYmdGhpcy5fX2RhdGFIYXNBY2Nlc3NvcltpXSlyZXR1cm4gdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KGksbyxhKTt0aGlzW2ldPW99cmV0dXJuITF9X3NldFVubWFuYWdlZFByb3BlcnR5VG9Ob2RlKGksbyxhKXsoYSE9PWlbb118fHR5cGVvZiBhPT0ib2JqZWN0IikmJihvPT09ImNsYXNzTmFtZSImJihpPXVlKGkpKSxpW29dPWEpfV9zZXRQZW5kaW5nUHJvcGVydHkoaSxvLGEpe2xldCBzPXRoaXMuX19kYXRhSGFzUGF0aHMmJmtJKGkpLGw9cz90aGlzLl9fZGF0YVRlbXA6dGhpcy5fX2RhdGE7cmV0dXJuIHRoaXMuX3Nob3VsZFByb3BlcnR5Q2hhbmdlKGksbyxsW2ldKT8odGhpcy5fX2RhdGFQZW5kaW5nfHwodGhpcy5fX2RhdGFQZW5kaW5nPXt9LHRoaXMuX19kYXRhT2xkPXt9KSxpIGluIHRoaXMuX19kYXRhT2xkfHwodGhpcy5fX2RhdGFPbGRbaV09dGhpcy5fX2RhdGFbaV0pLHM/dGhpcy5fX2RhdGFUZW1wW2ldPW86dGhpcy5fX2RhdGFbaV09byx0aGlzLl9fZGF0YVBlbmRpbmdbaV09bywoc3x8dGhpc1t6ci5OT1RJRlldJiZ0aGlzW3pyLk5PVElGWV1baV0pJiYodGhpcy5fX2RhdGFUb05vdGlmeT10aGlzLl9fZGF0YVRvTm90aWZ5fHx7fSx0aGlzLl9fZGF0YVRvTm90aWZ5W2ldPWEpLCEwKTohMX1fc2V0UHJvcGVydHkoaSxvKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoaSxvLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1faW52YWxpZGF0ZVByb3BlcnRpZXMoKXt0aGlzLl9fZGF0YVJlYWR5JiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fZW5xdWV1ZUNsaWVudChpKXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPXRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHN8fFtdLGkhPT10aGlzJiZ0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzLnB1c2goaSl9X2ZsdXNoQ2xpZW50cygpe3RoaXMuX19kYXRhQ2xpZW50c1JlYWR5P3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpOih0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT0hMCx0aGlzLl9yZWFkeUNsaWVudHMoKSx0aGlzLl9fZGF0YVJlYWR5PSEwKX1fX2VuYWJsZU9yRmx1c2hDbGllbnRzKCl7bGV0IGk9dGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cztpZihpKXt0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPW51bGw7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2xldCBhPWlbb107YS5fX2RhdGFFbmFibGVkP2EuX19kYXRhUGVuZGluZyYmYS5fZmx1c2hQcm9wZXJ0aWVzKCk6YS5fZW5hYmxlUHJvcGVydGllcygpfX19X3JlYWR5Q2xpZW50cygpe3RoaXMuX19lbmFibGVPckZsdXNoQ2xpZW50cygpfXNldFByb3BlcnRpZXMoaSxvKXtmb3IobGV0IGEgaW4gaSkob3x8IXRoaXNbenIuUkVBRF9PTkxZXXx8IXRoaXNbenIuUkVBRF9PTkxZXVthXSkmJnRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChhLGlbYV0sITApO3RoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9cmVhZHkoKXt0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeXx8dGhpcy5fZmx1c2hDbGllbnRzKCksdGhpcy5fX2RhdGFQZW5kaW5nJiZ0aGlzLl9mbHVzaFByb3BlcnRpZXMoKX1fcHJvcGVydGllc0NoYW5nZWQoaSxvLGEpe2xldCBzPXRoaXMuX19kYXRhSGFzUGF0aHM7dGhpcy5fX2RhdGFIYXNQYXRocz0hMTtsZXQgbDtYdmUodGhpcyxvLGEscyksbD10aGlzLl9fZGF0YVRvTm90aWZ5LHRoaXMuX19kYXRhVG9Ob3RpZnk9bnVsbCx0aGlzLl9wcm9wYWdhdGVQcm9wZXJ0eUNoYW5nZXMobyxhLHMpLHRoaXMuX2ZsdXNoQ2xpZW50cygpLEdNKHRoaXMsdGhpc1t6ci5SRUZMRUNUXSxvLGEscyksR00odGhpcyx0aGlzW3pyLk9CU0VSVkVdLG8sYSxzKSxsJiZxdmUodGhpcyxsLG8sYSxzKSx0aGlzLl9fZGF0YUNvdW50ZXI9PTEmJih0aGlzLl9fZGF0YVRlbXA9e30pfV9wcm9wYWdhdGVQcm9wZXJ0eUNoYW5nZXMoaSxvLGEpe3RoaXNbenIuUFJPUEFHQVRFXSYmR00odGhpcyx0aGlzW3pyLlBST1BBR0FURV0saSxvLGEpLHRoaXMuX190ZW1wbGF0ZUluZm8mJnRoaXMuX3J1bkVmZmVjdHNGb3JUZW1wbGF0ZSh0aGlzLl9fdGVtcGxhdGVJbmZvLGksbyxhKX1fcnVuRWZmZWN0c0ZvclRlbXBsYXRlKGksbyxhLHMpe2xldCBsPShjLHUpPT57R00odGhpcyxpLnByb3BlcnR5RWZmZWN0cyxjLGEsdSxpLm5vZGVMaXN0KTtmb3IobGV0IGg9aS5maXJzdENoaWxkO2g7aD1oLm5leHRTaWJsaW5nKXRoaXMuX3J1bkVmZmVjdHNGb3JUZW1wbGF0ZShoLGMsYSx1KX07aS5ydW5FZmZlY3RzP2kucnVuRWZmZWN0cyhsLG8scyk6bChvLHMpfWxpbmtQYXRocyhpLG8pe2k9QXgoaSksbz1BeChvKSx0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXRoaXMuX19kYXRhTGlua2VkUGF0aHN8fHt9LHRoaXMuX19kYXRhTGlua2VkUGF0aHNbaV09b311bmxpbmtQYXRocyhpKXtpPUF4KGkpLHRoaXMuX19kYXRhTGlua2VkUGF0aHMmJmRlbGV0ZSB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzW2ldfW5vdGlmeVNwbGljZXMoaSxvKXtsZXQgYT17cGF0aDoiIn0scz1Sbyh0aGlzLGksYSk7X210KHRoaXMscyxhLnBhdGgsbyl9Z2V0KGksbyl7cmV0dXJuIFJvKG98fHRoaXMsaSl9c2V0KGksbyxhKXthP21HKGEsaSxvKTooIXRoaXNbenIuUkVBRF9PTkxZXXx8IXRoaXNbenIuUkVBRF9PTkxZXVtpXSkmJnRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChpLG8sITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfXB1c2goaSwuLi5vKXtsZXQgYT17cGF0aDoiIn0scz1Sbyh0aGlzLGksYSksbD1zLmxlbmd0aCxjPXMucHVzaCguLi5vKTtyZXR1cm4gby5sZW5ndGgmJlVNKHRoaXMscyxhLnBhdGgsbCxvLmxlbmd0aCxbXSksY31wb3AoaSl7bGV0IG89e3BhdGg6IiJ9LGE9Um8odGhpcyxpLG8pLHM9Qm9vbGVhbihhLmxlbmd0aCksbD1hLnBvcCgpO3JldHVybiBzJiZVTSh0aGlzLGEsby5wYXRoLGEubGVuZ3RoLDAsW2xdKSxsfXNwbGljZShpLG8sYSwuLi5zKXtsZXQgbD17cGF0aDoiIn0sYz1Sbyh0aGlzLGksbCk7bzwwP289Yy5sZW5ndGgtTWF0aC5mbG9vcigtbyk6byYmKG89TWF0aC5mbG9vcihvKSk7bGV0IHU7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0yP3U9Yy5zcGxpY2Uobyk6dT1jLnNwbGljZShvLGEsLi4ucyksKHMubGVuZ3RofHx1Lmxlbmd0aCkmJlVNKHRoaXMsYyxsLnBhdGgsbyxzLmxlbmd0aCx1KSx1fXNoaWZ0KGkpe2xldCBvPXtwYXRoOiIifSxhPVJvKHRoaXMsaSxvKSxzPUJvb2xlYW4oYS5sZW5ndGgpLGw9YS5zaGlmdCgpO3JldHVybiBzJiZVTSh0aGlzLGEsby5wYXRoLDAsMCxbbF0pLGx9dW5zaGlmdChpLC4uLm8pe2xldCBhPXtwYXRoOiIifSxzPVJvKHRoaXMsaSxhKSxsPXMudW5zaGlmdCguLi5vKTtyZXR1cm4gby5sZW5ndGgmJlVNKHRoaXMscyxhLnBhdGgsMCxvLmxlbmd0aCxbXSksbH1ub3RpZnlQYXRoKGksbyl7bGV0IGE7aWYoYXJndW1lbnRzLmxlbmd0aD09MSl7bGV0IHM9e3BhdGg6IiJ9O289Um8odGhpcyxpLHMpLGE9cy5wYXRofWVsc2UgQXJyYXkuaXNBcnJheShpKT9hPUF4KGkpOmE9aTt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoYSxvLCEwLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1fY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eShpLG8pe3RoaXMuX2FkZFByb3BlcnR5RWZmZWN0KGksenIuUkVBRF9PTkxZKSxvJiYodGhpc1siX3NldCIreDFlKGkpXT1mdW5jdGlvbihhKXt0aGlzLl9zZXRQcm9wZXJ0eShpLGEpfSl9X2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIoaSxvLGEpe2xldCBzPXtwcm9wZXJ0eTppLG1ldGhvZDpvLGR5bmFtaWNGbjpCb29sZWFuKGEpfTt0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdChpLHpyLk9CU0VSVkUse2ZuOm9tdCxpbmZvOnMsdHJpZ2dlcjp7bmFtZTppfX0pLGEmJnRoaXMuX2FkZFByb3BlcnR5RWZmZWN0KG8senIuT0JTRVJWRSx7Zm46b210LGluZm86cyx0cmlnZ2VyOntuYW1lOm99fSl9X2NyZWF0ZU1ldGhvZE9ic2VydmVyKGksbyl7bGV0IGE9dkcoaSk7aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgb2JzZXJ2ZXIgZXhwcmVzc2lvbiAnIitpKyInIik7c210KHRoaXMsYSx6ci5PQlNFUlZFLHhHLG51bGwsbyl9X2NyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KGkpe3RoaXMuX2FkZFByb3BlcnR5RWZmZWN0KGksenIuTk9USUZZLHtmbjpXdmUsaW5mbzp7ZXZlbnROYW1lOlB4KGkpKyItY2hhbmdlZCIscHJvcGVydHk6aX19KX1fY3JlYXRlUmVmbGVjdGVkUHJvcGVydHkoaSl7bGV0IG89dGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkoaSk7b1swXT09PSItIj9jb25zb2xlLndhcm4oIlByb3BlcnR5ICIraSsiIGNhbm5vdCBiZSByZWZsZWN0ZWQgdG8gYXR0cmlidXRlICIrbysnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIHN0YXJ0aW5nIGF0dHJpYnV0ZSBuYW1lLiBVc2UgYSBsb3dlcmNhc2UgZmlyc3QgbGV0dGVyIGZvciB0aGUgcHJvcGVydHkgaW5zdGVhZC4nKTp0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdChpLHpyLlJFRkxFQ1Qse2ZuOmp2ZSxpbmZvOnthdHRyTmFtZTpvfX0pfV9jcmVhdGVDb21wdXRlZFByb3BlcnR5KGksbyxhKXtsZXQgcz12RyhvKTtpZighcyl0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBjb21wdXRlZCBleHByZXNzaW9uICciK28rIiciKTtsZXQgbD1zbXQodGhpcyxzLHpyLkNPTVBVVEUsZG10LGksYSk7X0codGhpcyxmbXQpW2ldPWx9X21hcnNoYWxBcmdzKGksbyxhKXtsZXQgcz10aGlzLl9fZGF0YSxsPVtdO2ZvcihsZXQgYz0wLHU9aS5sZW5ndGg7Yzx1O2MrKyl7bGV0e25hbWU6aCxzdHJ1Y3R1cmVkOmYsd2lsZGNhcmQ6cCx2YWx1ZTpkLGxpdGVyYWw6Z309aVtjXTtpZighZylpZihwKXtsZXQgXz1DeChoLG8pLHk9aG10KHMsYSxfP286aCk7ZD17cGF0aDpfP286aCx2YWx1ZTp5LGJhc2U6Xz9SbyhzLGgpOnl9fWVsc2UgZD1mP2htdChzLGEsaCk6c1toXTtpZihQSSYmIXRoaXMuX292ZXJyaWRlTGVnYWN5VW5kZWZpbmVkJiZkPT09dm9pZCAwJiZpLmxlbmd0aD4xKXJldHVybiBZTTtsW2NdPWR9cmV0dXJuIGx9c3RhdGljIGFkZFByb3BlcnR5RWZmZWN0KGksbyxhKXt0aGlzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlFZmZlY3QoaSxvLGEpfXN0YXRpYyBjcmVhdGVQcm9wZXJ0eU9ic2VydmVyKGksbyxhKXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUHJvcGVydHlPYnNlcnZlcihpLG8sYSl9c3RhdGljIGNyZWF0ZU1ldGhvZE9ic2VydmVyKGksbyl7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZU1ldGhvZE9ic2VydmVyKGksbyl9c3RhdGljIGNyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KGkpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eShpKX1zdGF0aWMgY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eShpLG8pe3RoaXMucHJvdG90eXBlLl9jcmVhdGVSZWFkT25seVByb3BlcnR5KGksbyl9c3RhdGljIGNyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KGkpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eShpKX1zdGF0aWMgY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eShpLG8sYSl7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkoaSxvLGEpfXN0YXRpYyBiaW5kVGVtcGxhdGUoaSl7cmV0dXJuIHRoaXMucHJvdG90eXBlLl9iaW5kVGVtcGxhdGUoaSl9X2JpbmRUZW1wbGF0ZShpLG8pe2xldCBhPXRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUoaSkscz10aGlzLl9fcHJlQm91bmRUZW1wbGF0ZUluZm89PWE7aWYoIXMpZm9yKGxldCBsIGluIGEucHJvcGVydHlFZmZlY3RzKXRoaXMuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3IobCk7aWYobylpZihhPU9iamVjdC5jcmVhdGUoYSksYS53YXNQcmVCb3VuZD1zLCF0aGlzLl9fdGVtcGxhdGVJbmZvKXRoaXMuX190ZW1wbGF0ZUluZm89YTtlbHNle2xldCBsPWkuX3BhcmVudFRlbXBsYXRlSW5mb3x8dGhpcy5fX3RlbXBsYXRlSW5mbyxjPWwubGFzdENoaWxkO2EucGFyZW50PWwsbC5sYXN0Q2hpbGQ9YSxhLnByZXZpb3VzU2libGluZz1jLGM/Yy5uZXh0U2libGluZz1hOmwuZmlyc3RDaGlsZD1hfWVsc2UgdGhpcy5fX3ByZUJvdW5kVGVtcGxhdGVJbmZvPWE7cmV0dXJuIGF9c3RhdGljIF9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KGksbyxhKXtsZXQgcz1pLmhvc3RQcm9wcz1pLmhvc3RQcm9wc3x8e307c1tvXT0hMDtsZXQgbD1pLnByb3BlcnR5RWZmZWN0cz1pLnByb3BlcnR5RWZmZWN0c3x8e307KGxbb109bFtvXXx8W10pLnB1c2goYSl9X3N0YW1wVGVtcGxhdGUoaSxvKXtvPW98fHRoaXMuX2JpbmRUZW1wbGF0ZShpLCEwKSxxTS5wdXNoKHRoaXMpO2xldCBhPXN1cGVyLl9zdGFtcFRlbXBsYXRlKGksbyk7aWYocU0ucG9wKCksby5ub2RlTGlzdD1hLm5vZGVMaXN0LCFvLndhc1ByZUJvdW5kKXtsZXQgcz1vLmNoaWxkTm9kZXM9W107Zm9yKGxldCBsPWEuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylzLnB1c2gobCl9cmV0dXJuIGEudGVtcGxhdGVJbmZvPW8saTFlKHRoaXMsbyksdGhpcy5fX2RhdGFDbGllbnRzUmVhZHkmJih0aGlzLl9ydW5FZmZlY3RzRm9yVGVtcGxhdGUobyx0aGlzLl9fZGF0YSxudWxsLCExKSx0aGlzLl9mbHVzaENsaWVudHMoKSksYX1fcmVtb3ZlQm91bmREb20oaSl7bGV0IG89aS50ZW1wbGF0ZUluZm8se3ByZXZpb3VzU2libGluZzphLG5leHRTaWJsaW5nOnMscGFyZW50Omx9PW87YT9hLm5leHRTaWJsaW5nPXM6bCYmKGwuZmlyc3RDaGlsZD1zKSxzP3MucHJldmlvdXNTaWJsaW5nPWE6bCYmKGwubGFzdENoaWxkPWEpLG8ubmV4dFNpYmxpbmc9by5wcmV2aW91c1NpYmxpbmc9bnVsbDtsZXQgYz1vLmNoaWxkTm9kZXM7Zm9yKGxldCB1PTA7dTxjLmxlbmd0aDt1Kyspe2xldCBoPWNbdV07dWUodWUoaCkucGFyZW50Tm9kZSkucmVtb3ZlQ2hpbGQoaCl9fXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGUoaSxvLGEpe2xldCBzPXQuX3BhcnNlVGVtcGxhdGVOb2RlLmNhbGwodGhpcyxpLG8sYSk7aWYoaS5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXtsZXQgbD10aGlzLl9wYXJzZUJpbmRpbmdzKGkudGV4dENvbnRlbnQsbyk7bCYmKGkudGV4dENvbnRlbnQ9dW10KGwpfHwiICIseUcodGhpcyxvLGEsInRleHQiLCJ0ZXh0Q29udGVudCIsbCkscz0hMCl9cmV0dXJuIHN9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZShpLG8sYSxzLGwpe2xldCBjPXRoaXMuX3BhcnNlQmluZGluZ3MobCxvKTtpZihjKXtsZXQgdT1zLGg9InByb3BlcnR5IjtWdmUudGVzdChzKT9oPSJhdHRyaWJ1dGUiOnNbcy5sZW5ndGgtMV09PSIkIiYmKHM9cy5zbGljZSgwLC0xKSxoPSJhdHRyaWJ1dGUiKTtsZXQgZj11bXQoYyk7cmV0dXJuIGYmJmg9PSJhdHRyaWJ1dGUiJiYocz09ImNsYXNzIiYmaS5oYXNBdHRyaWJ1dGUoImNsYXNzIikmJihmKz0iICIraS5nZXRBdHRyaWJ1dGUocykpLGkuc2V0QXR0cmlidXRlKHMsZikpLGg9PSJhdHRyaWJ1dGUiJiZ1PT0iZGlzYWJsZS11cGdyYWRlJCImJmkuc2V0QXR0cmlidXRlKHMsIiIpLGkubG9jYWxOYW1lPT09ImlucHV0IiYmdT09PSJ2YWx1ZSImJmkuc2V0QXR0cmlidXRlKHUsIiIpLGkucmVtb3ZlQXR0cmlidXRlKHUpLGg9PT0icHJvcGVydHkiJiYocz13bShzKSkseUcodGhpcyxvLGEsaCxzLGMsZiksITB9ZWxzZSByZXR1cm4gdC5fcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGUuY2FsbCh0aGlzLGksbyxhLHMsbCl9c3RhdGljIF9wYXJzZVRlbXBsYXRlTmVzdGVkVGVtcGxhdGUoaSxvLGEpe2xldCBzPXQuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZS5jYWxsKHRoaXMsaSxvLGEpLGw9aS5wYXJlbnROb2RlLGM9YS50ZW1wbGF0ZUluZm8sdT1sLmxvY2FsTmFtZT09PSJkb20taWYiLGg9bC5sb2NhbE5hbWU9PT0iZG9tLXJlcGVhdCI7dUcmJih1fHxoKSYmKGwucmVtb3ZlQ2hpbGQoaSksYT1hLnBhcmVudEluZm8sYS50ZW1wbGF0ZUluZm89YyxhLm5vdGVkPSEwLHM9ITEpO2xldCBmPWMuaG9zdFByb3BzO2lmKElJJiZ1KWYmJihvLmhvc3RQcm9wcz1PYmplY3QuYXNzaWduKG8uaG9zdFByb3BzfHx7fSxmKSx1R3x8KGEucGFyZW50SW5mby5ub3RlZD0hMCkpO2Vsc2V7bGV0IHA9InsiO2ZvcihsZXQgZCBpbiBmKXtsZXQgZz1be21vZGU6cCxzb3VyY2U6ZCxkZXBlbmRlbmNpZXM6W2RdLGhvc3RQcm9wOiEwfV07eUcodGhpcyxvLGEsInByb3BlcnR5IiwiX2hvc3RfIitkLGcpfX1yZXR1cm4gc31zdGF0aWMgX3BhcnNlQmluZGluZ3MoaSxvKXtsZXQgYT1bXSxzPTAsbDtmb3IoOyhsPWNtdC5leGVjKGkpKSE9PW51bGw7KXtsLmluZGV4PnMmJmEucHVzaCh7bGl0ZXJhbDppLnNsaWNlKHMsbC5pbmRleCl9KTtsZXQgYz1sWzFdWzBdLHU9Qm9vbGVhbihsWzJdKSxoPWxbM10udHJpbSgpLGY9ITEscD0iIixkPS0xO2M9PSJ7IiYmKGQ9aC5pbmRleE9mKCI6OiIpKT4wJiYocD1oLnN1YnN0cmluZyhkKzIpLGg9aC5zdWJzdHJpbmcoMCxkKSxmPSEwKTtsZXQgZz12RyhoKSxfPVtdO2lmKGcpe2xldHthcmdzOnksbWV0aG9kTmFtZTp4fT1nO2ZvcihsZXQgUz0wO1M8eS5sZW5ndGg7UysrKXtsZXQgQz15W1NdO0MubGl0ZXJhbHx8Xy5wdXNoKEMpfWxldCBiPW8uZHluYW1pY0ZuczsoYiYmYlt4XXx8Zy5zdGF0aWMpJiYoXy5wdXNoKHgpLGcuZHluYW1pY0ZuPSEwKX1lbHNlIF8ucHVzaChoKTthLnB1c2goe3NvdXJjZTpoLG1vZGU6YyxuZWdhdGU6dSxjdXN0b21FdmVudDpmLHNpZ25hdHVyZTpnLGRlcGVuZGVuY2llczpfLGV2ZW50OnB9KSxzPWNtdC5sYXN0SW5kZXh9aWYocyYmczxpLmxlbmd0aCl7bGV0IGM9aS5zdWJzdHJpbmcocyk7YyYmYS5wdXNoKHtsaXRlcmFsOmN9KX1yZXR1cm4gYS5sZW5ndGg/YTpudWxsfXN0YXRpYyBfZXZhbHVhdGVCaW5kaW5nKGksbyxhLHMsbCxjKXtsZXQgdTtyZXR1cm4gby5zaWduYXR1cmU/dT14RyhpLGEscyxsLG8uc2lnbmF0dXJlKTphIT1vLnNvdXJjZT91PVJvKGksby5zb3VyY2UpOmMmJmtJKGEpP3U9Um8oaSxhKTp1PWkuX19kYXRhW2FdLG8ubmVnYXRlJiYodT0hdSksdX19cmV0dXJuIHJ9KSxxTT1bXTt2YXIgYjFlPTA7ZnVuY3Rpb24geW10KCl7YjFlKyt9dmFyIHcxZT1bXTtmdW5jdGlvbiBGSShlKXt3MWUucHVzaChlKX1mdW5jdGlvbiBTMWUoZSl7bGV0IHQ9e307Zm9yKGxldCByIGluIGUpe2xldCBuPWVbcl07dFtyXT10eXBlb2Ygbj09ImZ1bmN0aW9uIj97dHlwZTpufTpufXJldHVybiB0fXZhciB2bXQ9Tm4oZT0+e2xldCB0PURJKGUpO2Z1bmN0aW9uIHIobyl7bGV0IGE9T2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO3JldHVybiBhLnByb3RvdHlwZSBpbnN0YW5jZW9mIGk/YTpudWxsfWZ1bmN0aW9uIG4obyl7aWYoIW8uaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vd25Qcm9wZXJ0aWVzIixvKSkpe2xldCBhPW51bGw7aWYoby5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJwcm9wZXJ0aWVzIixvKSkpe2xldCBzPW8ucHJvcGVydGllcztzJiYoYT1TMWUocykpfW8uX19vd25Qcm9wZXJ0aWVzPWF9cmV0dXJuIG8uX19vd25Qcm9wZXJ0aWVzfWNsYXNzIGkgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7aWYoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vYnNlcnZlZEF0dHJpYnV0ZXMiLHRoaXMpKSl7RkkodGhpcy5wcm90b3R5cGUpO2xldCBhPXRoaXMuX3Byb3BlcnRpZXM7dGhpcy5fX29ic2VydmVkQXR0cmlidXRlcz1hP09iamVjdC5rZXlzKGEpLm1hcChzPT50aGlzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcChzKSk6W119cmV0dXJuIHRoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXN9c3RhdGljIGZpbmFsaXplKCl7aWYoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19maW5hbGl6ZWQiLHRoaXMpKSl7bGV0IGE9cih0aGlzKTthJiZhLmZpbmFsaXplKCksdGhpcy5fX2ZpbmFsaXplZD0hMCx0aGlzLl9maW5hbGl6ZUNsYXNzKCl9fXN0YXRpYyBfZmluYWxpemVDbGFzcygpe2xldCBhPW4odGhpcyk7YSYmdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKGEpfXN0YXRpYyBnZXQgX3Byb3BlcnRpZXMoKXtpZighdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX3Byb3BlcnRpZXMiLHRoaXMpKSl7bGV0IGE9cih0aGlzKTt0aGlzLl9fcHJvcGVydGllcz1PYmplY3QuYXNzaWduKHt9LGEmJmEuX3Byb3BlcnRpZXMsbih0aGlzKSl9cmV0dXJuIHRoaXMuX19wcm9wZXJ0aWVzfXN0YXRpYyB0eXBlRm9yUHJvcGVydHkoYSl7bGV0IHM9dGhpcy5fcHJvcGVydGllc1thXTtyZXR1cm4gcyYmcy50eXBlfV9pbml0aWFsaXplUHJvcGVydGllcygpe3ltdCgpLHRoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX1yZXR1cm4gaX0pO3ZhciB4bXQ9IjMuNC4xIixCST13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCxTbT1ObihlPT57bGV0IHQ9dm10KHVfKGUpKTtmdW5jdGlvbiByKGwpe2lmKCFsLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fcHJvcGVydHlEZWZhdWx0cyIsbCkpKXtsLl9fcHJvcGVydHlEZWZhdWx0cz1udWxsO2xldCBjPWwuX3Byb3BlcnRpZXM7Zm9yKGxldCB1IGluIGMpe2xldCBoPWNbdV07InZhbHVlImluIGgmJihsLl9fcHJvcGVydHlEZWZhdWx0cz1sLl9fcHJvcGVydHlEZWZhdWx0c3x8e30sbC5fX3Byb3BlcnR5RGVmYXVsdHNbdV09aCl9fXJldHVybiBsLl9fcHJvcGVydHlEZWZhdWx0c31mdW5jdGlvbiBuKGwpe3JldHVybiBsLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb3duT2JzZXJ2ZXJzIixsKSl8fChsLl9fb3duT2JzZXJ2ZXJzPWwuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgib2JzZXJ2ZXJzIixsKSk/bC5vYnNlcnZlcnM6bnVsbCksbC5fX293bk9ic2VydmVyc31mdW5jdGlvbiBpKGwsYyx1LGgpe3UuY29tcHV0ZWQmJih1LnJlYWRPbmx5PSEwKSx1LmNvbXB1dGVkJiYobC5faGFzUmVhZE9ubHlFZmZlY3QoYyk/Y29uc29sZS53YXJuKGBDYW5ub3QgcmVkZWZpbmUgY29tcHV0ZWQgcHJvcGVydHkgJyR7Y30nLmApOmwuX2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkoYyx1LmNvbXB1dGVkLGgpKSx1LnJlYWRPbmx5JiYhbC5faGFzUmVhZE9ubHlFZmZlY3QoYyk/bC5fY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eShjLCF1LmNvbXB1dGVkKTp1LnJlYWRPbmx5PT09ITEmJmwuX2hhc1JlYWRPbmx5RWZmZWN0KGMpJiZjb25zb2xlLndhcm4oYENhbm5vdCBtYWtlIHJlYWRPbmx5IHByb3BlcnR5ICcke2N9JyBub24tcmVhZE9ubHkuYCksdS5yZWZsZWN0VG9BdHRyaWJ1dGUmJiFsLl9oYXNSZWZsZWN0RWZmZWN0KGMpP2wuX2NyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KGMpOnUucmVmbGVjdFRvQXR0cmlidXRlPT09ITEmJmwuX2hhc1JlZmxlY3RFZmZlY3QoYykmJmNvbnNvbGUud2FybihgQ2Fubm90IG1ha2UgcmVmbGVjdGVkIHByb3BlcnR5ICcke2N9JyBub24tcmVmbGVjdGVkLmApLHUubm90aWZ5JiYhbC5faGFzTm90aWZ5RWZmZWN0KGMpP2wuX2NyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KGMpOnUubm90aWZ5PT09ITEmJmwuX2hhc05vdGlmeUVmZmVjdChjKSYmY29uc29sZS53YXJuKGBDYW5ub3QgbWFrZSBub3RpZnkgcHJvcGVydHkgJyR7Y30nIG5vbi1ub3RpZnkuYCksdS5vYnNlcnZlciYmbC5fY3JlYXRlUHJvcGVydHlPYnNlcnZlcihjLHUub2JzZXJ2ZXIsaFt1Lm9ic2VydmVyXSksbC5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcChjKX1mdW5jdGlvbiBvKGwsYyx1LGgpe2lmKCFCSSl7bGV0IGY9Yy5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikscD1MSShjKSxkPSRkdCh1KSxnPWMuY29udGVudC5maXJzdEVsZW1lbnRDaGlsZDtmb3IobGV0IHk9MDt5PGQubGVuZ3RoO3krKyl7bGV0IHg9ZFt5XTt4LnRleHRDb250ZW50PWwuX3Byb2Nlc3NTdHlsZVRleHQoeC50ZXh0Q29udGVudCxoKSxjLmNvbnRlbnQuaW5zZXJ0QmVmb3JlKHgsZyl9bGV0IF89MDtmb3IobGV0IHk9MDt5PHAubGVuZ3RoO3krKyl7bGV0IHg9cFt5XSxiPWZbX107YiE9PXg/KHg9eC5jbG9uZU5vZGUoITApLGIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoeCxiKSk6XysrLHgudGV4dENvbnRlbnQ9bC5fcHJvY2Vzc1N0eWxlVGV4dCh4LnRleHRDb250ZW50LGgpfX1pZih3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGUoYyx1KSxVZHQmJkJJJiZPZHQpe2xldCBmPWMuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2lmKGYpe2xldCBwPSIiO0FycmF5LmZyb20oZikuZm9yRWFjaChkPT57cCs9ZC50ZXh0Q29udGVudCxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCl9KSxsLl9zdHlsZVNoZWV0PW5ldyBDU1NTdHlsZVNoZWV0LGwuX3N0eWxlU2hlZXQucmVwbGFjZVN5bmMocCl9fX1mdW5jdGlvbiBhKGwpe2xldCBjPW51bGw7aWYobCYmKCFudXx8QmR0KSYmKGM9aXUuaW1wb3J0KGwsInRlbXBsYXRlIiksbnUmJiFjKSl0aHJvdyBuZXcgRXJyb3IoYHN0cmljdFRlbXBsYXRlUG9saWN5OiBleHBlY3RpbmcgZG9tLW1vZHVsZSBvciBudWxsIHRlbXBsYXRlIGZvciAke2x9YCk7cmV0dXJuIGN9Y2xhc3MgcyBleHRlbmRzIHR7c3RhdGljIGdldCBwb2x5bWVyRWxlbWVudFZlcnNpb24oKXtyZXR1cm4geG10fXN0YXRpYyBfZmluYWxpemVDbGFzcygpe3QuX2ZpbmFsaXplQ2xhc3MuY2FsbCh0aGlzKTtsZXQgYz1uKHRoaXMpO2MmJnRoaXMuY3JlYXRlT2JzZXJ2ZXJzKGMsdGhpcy5fcHJvcGVydGllcyksdGhpcy5fcHJlcGFyZVRlbXBsYXRlKCl9c3RhdGljIF9wcmVwYXJlVGVtcGxhdGUoKXtsZXQgYz10aGlzLnRlbXBsYXRlO2MmJih0eXBlb2YgYz09InN0cmluZyI/KGNvbnNvbGUuZXJyb3IoInRlbXBsYXRlIGdldHRlciBtdXN0IHJldHVybiBIVE1MVGVtcGxhdGVFbGVtZW50IiksYz1udWxsKTpwcHx8KGM9Yy5jbG9uZU5vZGUoITApKSksdGhpcy5wcm90b3R5cGUuX3RlbXBsYXRlPWN9c3RhdGljIGNyZWF0ZVByb3BlcnRpZXMoYyl7Zm9yKGxldCB1IGluIGMpaSh0aGlzLnByb3RvdHlwZSx1LGNbdV0sYyl9c3RhdGljIGNyZWF0ZU9ic2VydmVycyhjLHUpe2xldCBoPXRoaXMucHJvdG90eXBlO2ZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7ZisrKWguX2NyZWF0ZU1ldGhvZE9ic2VydmVyKGNbZl0sdSl9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcykpKXtsZXQgYz10aGlzLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfdGVtcGxhdGUiLHRoaXMucHJvdG90eXBlKSk/dGhpcy5wcm90b3R5cGUuX3RlbXBsYXRlOnZvaWQgMDt0aGlzLl90ZW1wbGF0ZT1jIT09dm9pZCAwP2M6dGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpcyIsdGhpcykpJiZhKHRoaXMuaXMpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy5wcm90b3R5cGUpLmNvbnN0cnVjdG9yLnRlbXBsYXRlfXJldHVybiB0aGlzLl90ZW1wbGF0ZX1zdGF0aWMgc2V0IHRlbXBsYXRlKGMpe3RoaXMuX3RlbXBsYXRlPWN9c3RhdGljIGdldCBpbXBvcnRQYXRoKCl7aWYoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX2ltcG9ydFBhdGgiLHRoaXMpKSl7bGV0IGM9dGhpcy5pbXBvcnRNZXRhO2lmKGMpdGhpcy5faW1wb3J0UGF0aD1UeChjLnVybCk7ZWxzZXtsZXQgdT1pdS5pbXBvcnQodGhpcy5pcyk7dGhpcy5faW1wb3J0UGF0aD11JiZ1LmFzc2V0cGF0aHx8T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMucHJvdG90eXBlKS5jb25zdHJ1Y3Rvci5pbXBvcnRQYXRofX1yZXR1cm4gdGhpcy5faW1wb3J0UGF0aH1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fdGVtcGxhdGUsdGhpcy5faW1wb3J0UGF0aCx0aGlzLnJvb3RQYXRoLHRoaXMuaW1wb3J0UGF0aCx0aGlzLnJvb3QsdGhpcy4kfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSx0aGlzLmNvbnN0cnVjdG9yLl9maW5hbGl6ZVRlbXBsYXRlKHRoaXMubG9jYWxOYW1lKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLnJvb3RQYXRoPXpkdCx0aGlzLmltcG9ydFBhdGg9dGhpcy5jb25zdHJ1Y3Rvci5pbXBvcnRQYXRoO2xldCBjPXIodGhpcy5jb25zdHJ1Y3Rvcik7aWYoISFjKWZvcihsZXQgdSBpbiBjKXtsZXQgaD1jW3VdO2lmKHRoaXMuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHUpKXtsZXQgZj10eXBlb2YgaC52YWx1ZT09ImZ1bmN0aW9uIj9oLnZhbHVlLmNhbGwodGhpcyk6aC52YWx1ZTt0aGlzLl9oYXNBY2Nlc3Nvcih1KT90aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodSxmLCEwKTp0aGlzW3VdPWZ9fX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQoYyl7cmV0dXJuIXRoaXMuaGFzT3duUHJvcGVydHkoYyl9c3RhdGljIF9wcm9jZXNzU3R5bGVUZXh0KGMsdSl7cmV0dXJuIEZNKGMsdSl9c3RhdGljIF9maW5hbGl6ZVRlbXBsYXRlKGMpe2xldCB1PXRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZTtpZih1JiYhdS5fX3BvbHltZXJGaW5hbGl6ZWQpe3UuX19wb2x5bWVyRmluYWxpemVkPSEwO2xldCBoPXRoaXMuaW1wb3J0UGF0aCxmPWg/bF8oaCk6IiI7byh0aGlzLHUsYyxmKSx0aGlzLnByb3RvdHlwZS5fYmluZFRlbXBsYXRlKHUpfX1jb25uZWN0ZWRDYWxsYmFjaygpe3dpbmRvdy5TaGFkeUNTUyYmdGhpcy5fdGVtcGxhdGUmJndpbmRvdy5TaGFkeUNTUy5zdHlsZUVsZW1lbnQodGhpcyksc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKX1yZWFkeSgpe3RoaXMuX3RlbXBsYXRlJiYodGhpcy5yb290PXRoaXMuX3N0YW1wVGVtcGxhdGUodGhpcy5fdGVtcGxhdGUpLHRoaXMuJD10aGlzLnJvb3QuJCksc3VwZXIucmVhZHkoKX1fcmVhZHlDbGllbnRzKCl7dGhpcy5fdGVtcGxhdGUmJih0aGlzLnJvb3Q9dGhpcy5fYXR0YWNoRG9tKHRoaXMucm9vdCkpLHN1cGVyLl9yZWFkeUNsaWVudHMoKX1fYXR0YWNoRG9tKGMpe2xldCB1PXVlKHRoaXMpO2lmKHUuYXR0YWNoU2hhZG93KXJldHVybiBjPyh1LnNoYWRvd1Jvb3R8fCh1LmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiIsc2hhZHlVcGdyYWRlRnJhZ21lbnQ6Y30pLHUuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChjKSx0aGlzLmNvbnN0cnVjdG9yLl9zdHlsZVNoZWV0JiYodS5zaGFkb3dSb290LmFkb3B0ZWRTdHlsZVNoZWV0cz1bdGhpcy5jb25zdHJ1Y3Rvci5fc3R5bGVTaGVldF0pKSxIZHQmJndpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmZsdXNoSW5pdGlhbCh1LnNoYWRvd1Jvb3QpLHUuc2hhZG93Um9vdCk6bnVsbDt0aHJvdyBuZXcgRXJyb3IoIlNoYWRvd0RPTSBub3QgYXZhaWxhYmxlLiBQb2x5bWVyRWxlbWVudCBjYW4gY3JlYXRlIGRvbSBhcyBjaGlsZHJlbiBpbnN0ZWFkIG9mIGluIFNoYWRvd0RPTSBieSBzZXR0aW5nIGB0aGlzLnJvb3QgPSB0aGlzO2AgYmVmb3JlIGByZWFkeWAuIil9dXBkYXRlU3R5bGVzKGMpe3dpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLnN0eWxlU3VidHJlZSh0aGlzLGMpfXJlc29sdmVVcmwoYyx1KXtyZXR1cm4hdSYmdGhpcy5pbXBvcnRQYXRoJiYodT1sXyh0aGlzLmltcG9ydFBhdGgpKSxsXyhjLHUpfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZUNvbnRlbnQoYyx1LGgpe3JldHVybiB1LmR5bmFtaWNGbnM9dS5keW5hbWljRm5zfHx0aGlzLl9wcm9wZXJ0aWVzLHQuX3BhcnNlVGVtcGxhdGVDb250ZW50LmNhbGwodGhpcyxjLHUsaCl9c3RhdGljIF9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KGMsdSxoKXtyZXR1cm4gQUkmJiEodSBpbiB0aGlzLl9wcm9wZXJ0aWVzKSYmIShoLmluZm8ucGFydC5zaWduYXR1cmUmJmguaW5mby5wYXJ0LnNpZ25hdHVyZS5zdGF0aWMpJiYhaC5pbmZvLnBhcnQuaG9zdFByb3AmJiFjLm5lc3RlZFRlbXBsYXRlJiZjb25zb2xlLndhcm4oYFByb3BlcnR5ICcke3V9JyB1c2VkIGluIHRlbXBsYXRlIGJ1dCBub3QgZGVjbGFyZWQgaW4gJ3Byb3BlcnRpZXMnOyBhdHRyaWJ1dGUgd2lsbCBub3QgYmUgb2JzZXJ2ZWQuYCksdC5fYWRkVGVtcGxhdGVQcm9wZXJ0eUVmZmVjdC5jYWxsKHRoaXMsYyx1LGgpfX1yZXR1cm4gc30pO3ZhciBIST1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnZhbHVlPXQudG9TdHJpbmcoKX10b1N0cmluZygpe3JldHVybiB0aGlzLnZhbHVlfX07ZnVuY3Rpb24gTTFlKGUpe2lmKGUgaW5zdGFuY2VvZiBISSlyZXR1cm4gZS52YWx1ZTt0aHJvdyBuZXcgRXJyb3IoYG5vbi1saXRlcmFsIHZhbHVlIHBhc3NlZCB0byBQb2x5bWVyJ3MgaHRtbExpdGVyYWwgZnVuY3Rpb246ICR7ZX1gKX1mdW5jdGlvbiBFMWUoZSl7aWYoZSBpbnN0YW5jZW9mIEhUTUxUZW1wbGF0ZUVsZW1lbnQpcmV0dXJuIGUuaW5uZXJIVE1MO2lmKGUgaW5zdGFuY2VvZiBISSlyZXR1cm4gTTFlKGUpO3Rocm93IG5ldyBFcnJvcihgbm9uLXRlbXBsYXRlIHZhbHVlIHBhc3NlZCB0byBQb2x5bWVyJ3MgaHRtbCBmdW5jdGlvbjogJHtlfWApfXZhciBRPWZ1bmN0aW9uKHQsLi4ucil7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gbi5pbm5lckhUTUw9ci5yZWR1Y2UoKGksbyxhKT0+aStFMWUobykrdFthKzFdLHRbMF0pLG59O3ZhciBtdD1TbShIVE1MRWxlbWVudCk7dmFyIGZ5PUVlKE9lKCksMSk7dmFyIGhfPSEod2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uaW5Vc2UpLFZJO2Z1bmN0aW9uIGJtdChlKXtlJiZlLnNoaW1jc3Nwcm9wZXJ0aWVzP1ZJPSExOlZJPWhffHxCb29sZWFuKCFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFwvNjAxfEVkZ2VcLzE1LykmJndpbmRvdy5DU1MmJkNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKCJib3gtc2hhZG93IiwiMCAwIDAgdmFyKC0tZm9vKSIpKX12YXIgTW07d2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MuY3NzQnVpbGQhPT12b2lkIDAmJihNbT13aW5kb3cuU2hhZHlDU1MuY3NzQnVpbGQpO3ZhciBVST1Cb29sZWFuKHdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLmRpc2FibGVSdW50aW1lKTt3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3MhPT12b2lkIDA/Vkk9d2luZG93LlNoYWR5Q1NTLm5hdGl2ZUNzczp3aW5kb3cuU2hhZHlDU1M/KGJtdCh3aW5kb3cuU2hhZHlDU1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOmJtdCh3aW5kb3cuV2ViQ29tcG9uZW50cyYmd2luZG93LldlYkNvbXBvbmVudHMuZmxhZ3MpO3ZhciBSeD1WSTt2YXIgcUk9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnN0YXJ0PTAsdGhpcy5lbmQ9MCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnJ1bGVzPW51bGwsdGhpcy5wYXJzZWRDc3NUZXh0PSIiLHRoaXMuY3NzVGV4dD0iIix0aGlzLmF0UnVsZT0hMSx0aGlzLnR5cGU9MCx0aGlzLmtleWZyYW1lc05hbWU9IiIsdGhpcy5zZWxlY3Rvcj0iIix0aGlzLnBhcnNlZFNlbGVjdG9yPSIifX07ZnVuY3Rpb24gd0coZSl7cmV0dXJuIGU9VDFlKGUpLHdtdChDMWUoZSksZSl9ZnVuY3Rpb24gVDFlKGUpe3JldHVybiBlLnJlcGxhY2UoZ3AuY29tbWVudHMsIiIpLnJlcGxhY2UoZ3AucG9ydCwiIil9ZnVuY3Rpb24gQzFlKGUpe2xldCB0PW5ldyBxSTt0LnN0YXJ0PTAsdC5lbmQ9ZS5sZW5ndGg7bGV0IHI9dDtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspaWYoZVtuXT09PVNtdCl7ci5ydWxlc3x8KHIucnVsZXM9W10pO2xldCBvPXIsYT1vLnJ1bGVzW28ucnVsZXMubGVuZ3RoLTFdfHxudWxsO3I9bmV3IHFJLHIuc3RhcnQ9bisxLHIucGFyZW50PW8sci5wcmV2aW91cz1hLG8ucnVsZXMucHVzaChyKX1lbHNlIGVbbl09PT1NbXQmJihyLmVuZD1uKzEscj1yLnBhcmVudHx8dCk7cmV0dXJuIHR9ZnVuY3Rpb24gd210KGUsdCl7bGV0IHI9dC5zdWJzdHJpbmcoZS5zdGFydCxlLmVuZC0xKTtpZihlLnBhcnNlZENzc1RleHQ9ZS5jc3NUZXh0PXIudHJpbSgpLGUucGFyZW50KXtsZXQgaT1lLnByZXZpb3VzP2UucHJldmlvdXMuZW5kOmUucGFyZW50LnN0YXJ0O3I9dC5zdWJzdHJpbmcoaSxlLnN0YXJ0LTEpLHI9QTFlKHIpLHI9ci5yZXBsYWNlKGdwLm11bHRpcGxlU3BhY2VzLCIgIikscj1yLnN1YnN0cmluZyhyLmxhc3RJbmRleE9mKCI7IikrMSk7bGV0IG89ZS5wYXJzZWRTZWxlY3Rvcj1lLnNlbGVjdG9yPXIudHJpbSgpO2UuYXRSdWxlPW8uaW5kZXhPZihOMWUpPT09MCxlLmF0UnVsZT9vLmluZGV4T2YoUjFlKT09PTA/ZS50eXBlPW1wLk1FRElBX1JVTEU6by5tYXRjaChncC5rZXlmcmFtZXNSdWxlKSYmKGUudHlwZT1tcC5LRVlGUkFNRVNfUlVMRSxlLmtleWZyYW1lc05hbWU9ZS5zZWxlY3Rvci5zcGxpdChncC5tdWx0aXBsZVNwYWNlcykucG9wKCkpOm8uaW5kZXhPZihFbXQpPT09MD9lLnR5cGU9bXAuTUlYSU5fUlVMRTplLnR5cGU9bXAuU1RZTEVfUlVMRX1sZXQgbj1lLnJ1bGVzO2lmKG4pZm9yKGxldCBpPTAsbz1uLmxlbmd0aCxhO2k8byYmKGE9bltpXSk7aSsrKXdtdChhLHQpO3JldHVybiBlfWZ1bmN0aW9uIEExZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9cXChbMC05YS1mXXsxLDZ9KVxzL2dpLGZ1bmN0aW9uKCl7bGV0IHQ9YXJndW1lbnRzWzFdLHI9Ni10Lmxlbmd0aDtmb3IoO3ItLTspdD0iMCIrdDtyZXR1cm4iXFwiK3R9KX1mdW5jdGlvbiBTRyhlLHQscj0iIil7bGV0IG49IiI7aWYoZS5jc3NUZXh0fHxlLnJ1bGVzKXtsZXQgaT1lLnJ1bGVzO2lmKGkmJiFQMWUoaSkpZm9yKGxldCBvPTAsYT1pLmxlbmd0aCxzO288YSYmKHM9aVtvXSk7bysrKW49U0cocyx0LG4pO2Vsc2Ugbj10P2UuY3NzVGV4dDpJMWUoZS5jc3NUZXh0KSxuPW4udHJpbSgpLG4mJihuPSIgICIrbitgCmApfXJldHVybiBuJiYoZS5zZWxlY3RvciYmKHIrPWUuc2VsZWN0b3IrIiAiK1NtdCtgCmApLHIrPW4sZS5zZWxlY3RvciYmKHIrPU1tdCtgCgpgKSkscn1mdW5jdGlvbiBQMWUoZSl7bGV0IHQ9ZVswXTtyZXR1cm4gQm9vbGVhbih0KSYmQm9vbGVhbih0LnNlbGVjdG9yKSYmdC5zZWxlY3Rvci5pbmRleE9mKEVtdCk9PT0wfWZ1bmN0aW9uIEkxZShlKXtyZXR1cm4gZT1MMWUoZSksazFlKGUpfWZ1bmN0aW9uIEwxZShlKXtyZXR1cm4gZS5yZXBsYWNlKGdwLmN1c3RvbVByb3AsIiIpLnJlcGxhY2UoZ3AubWl4aW5Qcm9wLCIiKX1mdW5jdGlvbiBrMWUoZSl7cmV0dXJuIGUucmVwbGFjZShncC5taXhpbkFwcGx5LCIiKS5yZXBsYWNlKGdwLnZhckFwcGx5LCIiKX12YXIgbXA9e1NUWUxFX1JVTEU6MSxLRVlGUkFNRVNfUlVMRTo3LE1FRElBX1JVTEU6NCxNSVhJTl9SVUxFOjFlM30sU210PSJ7IixNbXQ9In0iLGdwPXtjb21tZW50czovXC9cKlteKl0qXCorKFteLypdW14qXSpcKispKlwvL2dpbSxwb3J0Oi9AaW1wb3J0W147XSo7L2dpbSxjdXN0b21Qcm9wOi8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qPyg/Ols7XG5dfCQpL2dpbSxtaXhpblByb3A6Lyg/Ol5bXjtcLVxzfV0rKT8tLVteO3t9XSo/Oltee307XSo/e1tefV0qP30oPzpbO1xuXXwkKT8vZ2ltLG1peGluQXBwbHk6L0BhcHBseVxzKlwoP1teKTtdKlwpP1xzKig/Ols7XG5dfCQpPy9naW0sdmFyQXBwbHk6L1teOzpdKj86W147XSo/dmFyXChbXjtdKlwpKD86Wztcbl18JCk/L2dpbSxrZXlmcmFtZXNSdWxlOi9eQFteXHNdKmtleWZyYW1lcy8sbXVsdGlwbGVTcGFjZXM6L1xzKy9nfSxFbXQ9Ii0tIixSMWU9IkBtZWRpYSIsTjFlPSJAIjt2YXIgWE09Lyg/Ol58Wztcc3tdXHMqKSgtLVtcdy1dKj8pXHMqOlxzKig/OigoPzonKD86XFwnfC4pKj8nfCIoPzpcXCJ8LikqPyJ8XChbXildKj9cKXxbXn07e10pKyl8XHsoW159XSopXH0oPzooPz1bO1xzfV0pfCQpKS9naSxOeD0vKD86XnxcVyspQGFwcGx5XHMqXCg/KFteKTtcbl0qKVwpPy9naTt2YXIgVG10PS9AbWVkaWFccyguKikvO3ZhciBDbXQ9bmV3IFNldCxEMWU9InNoYWR5LXVuc2NvcGVkIjtmdW5jdGlvbiBBbXQoZSl7bGV0IHQ9ZS50ZXh0Q29udGVudDtpZighQ210Lmhhcyh0KSl7Q210LmFkZCh0KTtsZXQgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3Iuc2V0QXR0cmlidXRlKCJzaGFkeS11bnNjb3BlZCIsIiIpLHIudGV4dENvbnRlbnQ9dCxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHIpfX1mdW5jdGlvbiBQbXQoZSl7cmV0dXJuIGUuaGFzQXR0cmlidXRlKEQxZSl9ZnVuY3Rpb24gJE0oZSx0KXtyZXR1cm4gZT8odHlwZW9mIGU9PSJzdHJpbmciJiYoZT13RyhlKSksdCYmRHgoZSx0KSxTRyhlLFJ4KSk6IiJ9ZnVuY3Rpb24gTUcoZSl7cmV0dXJuIWUuX19jc3NSdWxlcyYmZS50ZXh0Q29udGVudCYmKGUuX19jc3NSdWxlcz13RyhlLnRleHRDb250ZW50KSksZS5fX2Nzc1J1bGVzfHxudWxsfWZ1bmN0aW9uIER4KGUsdCxyLG4pe2lmKCFlKXJldHVybjtsZXQgaT0hMSxvPWUudHlwZTtpZihuJiZvPT09bXAuTUVESUFfUlVMRSl7bGV0IHM9ZS5zZWxlY3Rvci5tYXRjaChUbXQpO3MmJih3aW5kb3cubWF0Y2hNZWRpYShzWzFdKS5tYXRjaGVzfHwoaT0hMCkpfW89PT1tcC5TVFlMRV9SVUxFP3QoZSk6ciYmbz09PW1wLktFWUZSQU1FU19SVUxFP3IoZSk6bz09PW1wLk1JWElOX1JVTEUmJihpPSEwKTtsZXQgYT1lLnJ1bGVzO2lmKGEmJiFpKWZvcihsZXQgcz0wLGw9YS5sZW5ndGgsYztzPGwmJihjPWFbc10pO3MrKylEeChjLHQscixuKX1mdW5jdGlvbiBPMWUoZSx0KXtsZXQgcj0wO2ZvcihsZXQgbj10LGk9ZS5sZW5ndGg7bjxpO24rKylpZihlW25dPT09IigiKXIrKztlbHNlIGlmKGVbbl09PT0iKSImJi0tcj09PTApcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gRUcoZSx0KXtsZXQgcj1lLmluZGV4T2YoInZhcigiKTtpZihyPT09LTEpcmV0dXJuIHQoZSwiIiwiIiwiIik7bGV0IG49TzFlKGUsciszKSxpPWUuc3Vic3RyaW5nKHIrNCxuKSxvPWUuc3Vic3RyaW5nKDAsciksYT1FRyhlLnN1YnN0cmluZyhuKzEpLHQpLHM9aS5pbmRleE9mKCIsIik7aWYocz09PS0xKXJldHVybiB0KG8saS50cmltKCksIiIsYSk7bGV0IGw9aS5zdWJzdHJpbmcoMCxzKS50cmltKCksYz1pLnN1YnN0cmluZyhzKzEpLnRyaW0oKTtyZXR1cm4gdChvLGwsYyxhKX12YXIgS3lyPXdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLndyYXB8fChlPT5lKTtmdW5jdGlvbiBJbXQoZSl7bGV0IHQ9ZS5sb2NhbE5hbWUscj0iIixuPSIiO3JldHVybiB0P3QuaW5kZXhPZigiLSIpPi0xP3I9dDoobj10LHI9ZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJpcyIpfHwiIik6KHI9ZS5pcyxuPWUuZXh0ZW5kcykse2lzOnIsdHlwZUV4dGVuc2lvbjpufX1mdW5jdGlvbiBMbXQoZSl7bGV0IHQ9W10scj1lLnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspe2xldCBpPXJbbl07UG10KGkpP2hffHwoQW10KGkpLGkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSk6KHQucHVzaChpLnRleHRDb250ZW50KSxpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSkpfXJldHVybiB0LmpvaW4oIiIpLnRyaW0oKX12YXIga210PSJjc3MtYnVpbGQiO2Z1bmN0aW9uIHoxZShlKXtpZihNbSE9PXZvaWQgMClyZXR1cm4gTW07aWYoZS5fX2Nzc0J1aWxkPT09dm9pZCAwKXtsZXQgdD1lLmdldEF0dHJpYnV0ZShrbXQpO2lmKHQpZS5fX2Nzc0J1aWxkPXQ7ZWxzZXtsZXQgcj1GMWUoZSk7ciE9PSIiJiZCMWUoZSksZS5fX2Nzc0J1aWxkPXJ9fXJldHVybiBlLl9fY3NzQnVpbGR8fCIifWZ1bmN0aW9uIFRHKGUpe3JldHVybiB6MWUoZSkhPT0iIn1mdW5jdGlvbiBGMWUoZSl7bGV0IHQ9ZS5sb2NhbE5hbWU9PT0idGVtcGxhdGUiP2UuY29udGVudC5maXJzdENoaWxkOmUuZmlyc3RDaGlsZDtpZih0IGluc3RhbmNlb2YgQ29tbWVudCl7bGV0IHI9dC50ZXh0Q29udGVudC50cmltKCkuc3BsaXQoIjoiKTtpZihyWzBdPT09a210KXJldHVybiByWzFdfXJldHVybiIifWZ1bmN0aW9uIEIxZShlKXtsZXQgdD1lLmxvY2FsTmFtZT09PSJ0ZW1wbGF0ZSI/ZS5jb250ZW50LmZpcnN0Q2hpbGQ6ZS5maXJzdENoaWxkO3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBLTShlLHQpe2ZvcihsZXQgciBpbiB0KXI9PT1udWxsP2Uuc3R5bGUucmVtb3ZlUHJvcGVydHkocik6ZS5zdHlsZS5zZXRQcm9wZXJ0eShyLHRbcl0pfWZ1bmN0aW9uIEdJKGUsdCl7bGV0IHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkuZ2V0UHJvcGVydHlWYWx1ZSh0KTtyZXR1cm4gcj9yLnRyaW0oKToiIn1mdW5jdGlvbiBSbXQoZSl7bGV0IHQ9TngudGVzdChlKXx8WE0udGVzdChlKTtyZXR1cm4gTngubGFzdEluZGV4PTAsWE0ubGFzdEluZGV4PTAsdH12YXIgSDFlPS87XHMqL20sVjFlPS9eXHMqKGluaXRpYWwpfChpbmhlcml0KVxzKiQvLE5tdD0vXHMqIWltcG9ydGFudC8sQ0c9Il8tXyI7dmFyIEFHPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPXt9fXNldCh0LHIpe3Q9dC50cmltKCksdGhpcy5fbWFwW3RdPXtwcm9wZXJ0aWVzOnIsZGVwZW5kYW50czp7fX19Z2V0KHQpe3JldHVybiB0PXQudHJpbSgpLHRoaXMuX21hcFt0XXx8bnVsbH19LFdJPW51bGwsTm89Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9jdXJyZW50RWxlbWVudD1udWxsLHRoaXMuX21lYXN1cmVFbGVtZW50PW51bGwsdGhpcy5fbWFwPW5ldyBBR31kZXRlY3RNaXhpbih0KXtyZXR1cm4gUm10KHQpfWdhdGhlclN0eWxlcyh0KXtsZXQgcj1MbXQodC5jb250ZW50KTtpZihyKXtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBuLnRleHRDb250ZW50PXIsdC5jb250ZW50Lmluc2VydEJlZm9yZShuLHQuY29udGVudC5maXJzdENoaWxkKSxufXJldHVybiBudWxsfXRyYW5zZm9ybVRlbXBsYXRlKHQscil7dC5fZ2F0aGVyZWRTdHlsZT09PXZvaWQgMCYmKHQuX2dhdGhlcmVkU3R5bGU9dGhpcy5nYXRoZXJTdHlsZXModCkpO2xldCBuPXQuX2dhdGhlcmVkU3R5bGU7cmV0dXJuIG4/dGhpcy50cmFuc2Zvcm1TdHlsZShuLHIpOm51bGx9dHJhbnNmb3JtU3R5bGUodCxyPSIiKXtsZXQgbj1NRyh0KTtyZXR1cm4gdGhpcy50cmFuc2Zvcm1SdWxlcyhuLHIpLHQudGV4dENvbnRlbnQ9JE0obiksbn10cmFuc2Zvcm1DdXN0b21TdHlsZSh0KXtsZXQgcj1NRyh0KTtyZXR1cm4gRHgocixuPT57bi5zZWxlY3Rvcj09PSI6cm9vdCImJihuLnNlbGVjdG9yPSJodG1sIiksdGhpcy50cmFuc2Zvcm1SdWxlKG4pfSksdC50ZXh0Q29udGVudD0kTShyKSxyfXRyYW5zZm9ybVJ1bGVzKHQscil7dGhpcy5fY3VycmVudEVsZW1lbnQ9cixEeCh0LG49Pnt0aGlzLnRyYW5zZm9ybVJ1bGUobil9KSx0aGlzLl9jdXJyZW50RWxlbWVudD1udWxsfXRyYW5zZm9ybVJ1bGUodCl7dC5jc3NUZXh0PXRoaXMudHJhbnNmb3JtQ3NzVGV4dCh0LnBhcnNlZENzc1RleHQsdCksdC5zZWxlY3Rvcj09PSI6cm9vdCImJih0LnNlbGVjdG9yPSI6aG9zdCA+ICoiKX10cmFuc2Zvcm1Dc3NUZXh0KHQscil7cmV0dXJuIHQ9dC5yZXBsYWNlKFhNLChuLGksbyxhKT0+dGhpcy5fcHJvZHVjZUNzc1Byb3BlcnRpZXMobixpLG8sYSxyKSksdGhpcy5fY29uc3VtZUNzc1Byb3BlcnRpZXModCxyKX1fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCl7cmV0dXJuIHRoaXMuX21lYXN1cmVFbGVtZW50fHwodGhpcy5fbWVhc3VyZUVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpLHRoaXMuX21lYXN1cmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXBwbHktc2hpbS1tZWFzdXJlIiwiIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc3R5bGUuYWxsPSJpbml0aWFsIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuX21lYXN1cmVFbGVtZW50KSksd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbWVhc3VyZUVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUodCl9X2ZhbGxiYWNrc0Zyb21QcmV2aW91c1J1bGVzKHQpe2xldCByPXQ7Zm9yKDtyLnBhcmVudDspcj1yLnBhcmVudDtsZXQgbj17fSxpPSExO3JldHVybiBEeChyLG89PntpPWl8fG89PT10LCFpJiZvLnNlbGVjdG9yPT09dC5zZWxlY3RvciYmT2JqZWN0LmFzc2lnbihuLHRoaXMuX2Nzc1RleHRUb01hcChvLnBhcnNlZENzc1RleHQpKX0pLG59X2NvbnN1bWVDc3NQcm9wZXJ0aWVzKHQscil7bGV0IG49bnVsbDtmb3IoO249TnguZXhlYyh0KTspe2xldCBpPW5bMF0sbz1uWzFdLGE9bi5pbmRleCxzPWEraS5pbmRleE9mKCJAYXBwbHkiKSxsPWEraS5sZW5ndGgsYz10LnNsaWNlKDAscyksdT10LnNsaWNlKGwpLGg9cj90aGlzLl9mYWxsYmFja3NGcm9tUHJldmlvdXNSdWxlcyhyKTp7fTtPYmplY3QuYXNzaWduKGgsdGhpcy5fY3NzVGV4dFRvTWFwKGMpKTtsZXQgZj10aGlzLl9hdEFwcGx5VG9Dc3NQcm9wZXJ0aWVzKG8saCk7dD1gJHtjfSR7Zn0ke3V9YCxOeC5sYXN0SW5kZXg9YStmLmxlbmd0aH1yZXR1cm4gdH1fYXRBcHBseVRvQ3NzUHJvcGVydGllcyh0LHIpe3Q9dC5yZXBsYWNlKEgxZSwiIik7bGV0IG49W10saT10aGlzLl9tYXAuZ2V0KHQpO2lmKGl8fCh0aGlzLl9tYXAuc2V0KHQse30pLGk9dGhpcy5fbWFwLmdldCh0KSksaSl7dGhpcy5fY3VycmVudEVsZW1lbnQmJihpLmRlcGVuZGFudHNbdGhpcy5fY3VycmVudEVsZW1lbnRdPSEwKTtsZXQgbyxhLHMsbD1pLnByb3BlcnRpZXM7Zm9yKG8gaW4gbClzPXImJnJbb10sYT1bbywiOiB2YXIoIix0LENHLG9dLHMmJmEucHVzaCgiLCIscy5yZXBsYWNlKE5tdCwiIikpLGEucHVzaCgiKSIpLE5tdC50ZXN0KGxbb10pJiZhLnB1c2goIiAhaW1wb3J0YW50Iiksbi5wdXNoKGEuam9pbigiIikpfXJldHVybiBuLmpvaW4oIjsgIil9X3JlcGxhY2VJbml0aWFsT3JJbmhlcml0KHQscil7bGV0IG49VjFlLmV4ZWMocik7cmV0dXJuIG4mJihuWzFdP3I9dGhpcy5fZ2V0SW5pdGlhbFZhbHVlRm9yUHJvcGVydHkodCk6cj0iYXBwbHktc2hpbS1pbmhlcml0Iikscn1fY3NzVGV4dFRvTWFwKHQscj0hMSl7bGV0IG49dC5zcGxpdCgiOyIpLGksbyxhPXt9O2ZvcihsZXQgcz0wLGwsYztzPG4ubGVuZ3RoO3MrKylsPW5bc10sbCYmKGM9bC5zcGxpdCgiOiIpLGMubGVuZ3RoPjEmJihpPWNbMF0udHJpbSgpLG89Yy5zbGljZSgxKS5qb2luKCI6IiksciYmKG89dGhpcy5fcmVwbGFjZUluaXRpYWxPckluaGVyaXQoaSxvKSksYVtpXT1vKSk7cmV0dXJuIGF9X2ludmFsaWRhdGVNaXhpbkVudHJ5KHQpe2lmKCEhV0kpZm9yKGxldCByIGluIHQuZGVwZW5kYW50cylyIT09dGhpcy5fY3VycmVudEVsZW1lbnQmJldJKHIpfV9wcm9kdWNlQ3NzUHJvcGVydGllcyh0LHIsbixpLG8pe2lmKG4mJkVHKG4sKF8seSk9Pnt5JiZ0aGlzLl9tYXAuZ2V0KHkpJiYoaT1gQGFwcGx5ICR7eX07YCl9KSwhaSlyZXR1cm4gdDtsZXQgYT10aGlzLl9jb25zdW1lQ3NzUHJvcGVydGllcygiIitpLG8pLHM9dC5zbGljZSgwLHQuaW5kZXhPZigiLS0iKSksbD10aGlzLl9jc3NUZXh0VG9NYXAoYSwhMCksYz1sLHU9dGhpcy5fbWFwLmdldChyKSxoPXUmJnUucHJvcGVydGllcztoP2M9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGgpLGwpOnRoaXMuX21hcC5zZXQocixjKTtsZXQgZj1bXSxwLGQsZz0hMTtmb3IocCBpbiBjKWQ9bFtwXSxkPT09dm9pZCAwJiYoZD0iaW5pdGlhbCIpLGgmJiEocCBpbiBoKSYmKGc9ITApLGYucHVzaChgJHtyfSR7Q0d9JHtwfTogJHtkfWApO3JldHVybiBnJiZ0aGlzLl9pbnZhbGlkYXRlTWl4aW5FbnRyeSh1KSx1JiYodS5wcm9wZXJ0aWVzPWMpLG4mJihzPWAke3R9OyR7c31gKSxgJHtzfSR7Zi5qb2luKCI7ICIpfTtgfX07Tm8ucHJvdG90eXBlLmRldGVjdE1peGluPU5vLnByb3RvdHlwZS5kZXRlY3RNaXhpbjtOby5wcm90b3R5cGUudHJhbnNmb3JtU3R5bGU9Tm8ucHJvdG90eXBlLnRyYW5zZm9ybVN0eWxlO05vLnByb3RvdHlwZS50cmFuc2Zvcm1DdXN0b21TdHlsZT1Oby5wcm90b3R5cGUudHJhbnNmb3JtQ3VzdG9tU3R5bGU7Tm8ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGVzPU5vLnByb3RvdHlwZS50cmFuc2Zvcm1SdWxlcztOby5wcm90b3R5cGUudHJhbnNmb3JtUnVsZT1Oby5wcm90b3R5cGUudHJhbnNmb3JtUnVsZTtOby5wcm90b3R5cGUudHJhbnNmb3JtVGVtcGxhdGU9Tm8ucHJvdG90eXBlLnRyYW5zZm9ybVRlbXBsYXRlO05vLnByb3RvdHlwZS5fc2VwYXJhdG9yPUNHO09iamVjdC5kZWZpbmVQcm9wZXJ0eShOby5wcm90b3R5cGUsImludmFsaWRDYWxsYmFjayIse2dldCgpe3JldHVybiBXSX0sc2V0KGUpe1dJPWV9fSk7dmFyIERtdD1Obzt2YXIgVTFlPXt9LFpNPVUxZTt2YXIgWUk9Il9hcHBseVNoaW1DdXJyZW50VmVyc2lvbiIsT3g9Il9hcHBseVNoaW1OZXh0VmVyc2lvbiIsakk9Il9hcHBseVNoaW1WYWxpZGF0aW5nVmVyc2lvbiIscTFlPVByb21pc2UucmVzb2x2ZSgpO2Z1bmN0aW9uIE9tdChlKXtsZXQgdD1aTVtlXTt0JiZHMWUodCl9ZnVuY3Rpb24gRzFlKGUpe2VbWUldPWVbWUldfHwwLGVbakldPWVbakldfHwwLGVbT3hdPShlW094XXx8MCkrMX1mdW5jdGlvbiBQRyhlKXtyZXR1cm4gZVtZSV09PT1lW094XX1mdW5jdGlvbiB6bXQoZSl7cmV0dXJuIVBHKGUpJiZlW2pJXT09PWVbT3hdfWZ1bmN0aW9uIEZtdChlKXtlW2pJXT1lW094XSxlLl92YWxpZGF0aW5nfHwoZS5fdmFsaWRhdGluZz0hMCxxMWUudGhlbihmdW5jdGlvbigpe2VbWUldPWVbT3hdLGUuX3ZhbGlkYXRpbmc9ITF9KSl9dmFyIElHPW51bGwsQm10PXdpbmRvdy5IVE1MSW1wb3J0cyYmd2luZG93LkhUTUxJbXBvcnRzLndoZW5SZWFkeXx8bnVsbCxMRztmdW5jdGlvbiBYSShlKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtCbXQ/Qm10KGUpOihJR3x8KElHPW5ldyBQcm9taXNlKHQ9PntMRz10fSksZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSI/TEcoKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoKT0+e2RvY3VtZW50LnJlYWR5U3RhdGU9PT0iY29tcGxldGUiJiZMRygpfSkpLElHLnRoZW4oZnVuY3Rpb24oKXtlJiZlKCl9KSl9KX12YXIgSG10PSJfX3NlZW5CeVNoYWR5Q1NTIiwkST0iX19zaGFkeUNTU0NhY2hlZFN0eWxlIixLST1udWxsLEpNPW51bGwsJGw9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmN1c3RvbVN0eWxlcz1bXSx0aGlzLmVucXVldWVkPSExLFhJKCgpPT57d2luZG93LlNoYWR5Q1NTLmZsdXNoQ3VzdG9tU3R5bGVzJiZ3aW5kb3cuU2hhZHlDU1MuZmx1c2hDdXN0b21TdHlsZXMoKX0pfWVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKXt0aGlzLmVucXVldWVkfHwhSk18fCh0aGlzLmVucXVldWVkPSEwLFhJKEpNKSl9YWRkQ3VzdG9tU3R5bGUodCl7dFtIbXRdfHwodFtIbXRdPSEwLHRoaXMuY3VzdG9tU3R5bGVzLnB1c2godCksdGhpcy5lbnF1ZXVlRG9jdW1lbnRWYWxpZGF0aW9uKCkpfWdldFN0eWxlRm9yQ3VzdG9tU3R5bGUodCl7aWYodFskSV0pcmV0dXJuIHRbJEldO2xldCByO3JldHVybiB0LmdldFN0eWxlP3I9dC5nZXRTdHlsZSgpOnI9dCxyfXByb2Nlc3NTdHlsZXMoKXtsZXQgdD10aGlzLmN1c3RvbVN0eWxlcztmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bGV0IG49dFtyXTtpZihuWyRJXSljb250aW51ZTtsZXQgaT10aGlzLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUobik7aWYoaSl7bGV0IG89aS5fX2FwcGxpZWRFbGVtZW50fHxpO0tJJiZLSShvKSxuWyRJXT1vfX1yZXR1cm4gdH19OyRsLnByb3RvdHlwZS5hZGRDdXN0b21TdHlsZT0kbC5wcm90b3R5cGUuYWRkQ3VzdG9tU3R5bGU7JGwucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGU9JGwucHJvdG90eXBlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGU7JGwucHJvdG90eXBlLnByb2Nlc3NTdHlsZXM9JGwucHJvdG90eXBlLnByb2Nlc3NTdHlsZXM7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoJGwucHJvdG90eXBlLHt0cmFuc2Zvcm1DYWxsYmFjazp7Z2V0KCl7cmV0dXJuIEtJfSxzZXQoZSl7S0k9ZX19LHZhbGlkYXRlQ2FsbGJhY2s6e2dldCgpe3JldHVybiBKTX0sc2V0KGUpe2xldCB0PSExO0pNfHwodD0hMCksSk09ZSx0JiZ0aGlzLmVucXVldWVEb2N1bWVudFZhbGlkYXRpb24oKX19fSk7dmFyIFFNPW5ldyBEbXQsa0c9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlPW51bGwsUU0uaW52YWxpZENhbGxiYWNrPU9tdH1lbnN1cmUoKXt0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlfHx3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UmJih0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlPXdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSx0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLnRyYW5zZm9ybUNhbGxiYWNrPXQ9PntRTS50cmFuc2Zvcm1DdXN0b21TdHlsZSh0KX0sdGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS52YWxpZGF0ZUNhbGxiYWNrPSgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZCYmdGhpcy5mbHVzaEN1c3RvbVN0eWxlcygpfSl9KX1wcmVwYXJlVGVtcGxhdGUodCxyKXtpZih0aGlzLmVuc3VyZSgpLFRHKHQpKXJldHVybjtaTVtyXT10O2xldCBuPVFNLnRyYW5zZm9ybVRlbXBsYXRlKHQscik7dC5fc3R5bGVBc3Q9bn1mbHVzaEN1c3RvbVN0eWxlcygpe2lmKHRoaXMuZW5zdXJlKCksIXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UpcmV0dXJuO2xldCB0PXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UucHJvY2Vzc1N0eWxlcygpO2lmKCEhdGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZCl7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2xldCBuPXRbcl0saT10aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmdldFN0eWxlRm9yQ3VzdG9tU3R5bGUobik7aSYmUU0udHJhbnNmb3JtQ3VzdG9tU3R5bGUoaSl9dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZD0hMX19c3R5bGVTdWJ0cmVlKHQscil7aWYodGhpcy5lbnN1cmUoKSxyJiZLTSh0LHIpLHQuc2hhZG93Um9vdCl7dGhpcy5zdHlsZUVsZW1lbnQodCk7bGV0IG49dC5zaGFkb3dSb290LmNoaWxkcmVufHx0LnNoYWRvd1Jvb3QuY2hpbGROb2Rlcztmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl0aGlzLnN0eWxlU3VidHJlZShuW2ldKX1lbHNle2xldCBuPXQuY2hpbGRyZW58fHQuY2hpbGROb2Rlcztmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl0aGlzLnN0eWxlU3VidHJlZShuW2ldKX19c3R5bGVFbGVtZW50KHQpe3RoaXMuZW5zdXJlKCk7bGV0e2lzOnJ9PUltdCh0KSxuPVpNW3JdO2lmKCEobiYmVEcobikpJiZuJiYhUEcobikpe3ptdChuKXx8KHRoaXMucHJlcGFyZVRlbXBsYXRlKG4sciksRm10KG4pKTtsZXQgaT10LnNoYWRvd1Jvb3Q7aWYoaSl7bGV0IG89aS5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpO28mJihvLl9fY3NzUnVsZXM9bi5fc3R5bGVBc3Qsby50ZXh0Q29udGVudD0kTShuLl9zdHlsZUFzdCkpfX19c3R5bGVEb2N1bWVudCh0KXt0aGlzLmVuc3VyZSgpLHRoaXMuc3R5bGVTdWJ0cmVlKGRvY3VtZW50LmJvZHksdCl9fTtpZighd2luZG93LlNoYWR5Q1NTfHwhd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltKXtsZXQgZT1uZXcga0csdD13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZTt3aW5kb3cuU2hhZHlDU1M9e3ByZXBhcmVUZW1wbGF0ZShyLG4saSl7ZS5mbHVzaEN1c3RvbVN0eWxlcygpLGUucHJlcGFyZVRlbXBsYXRlKHIsbil9LHByZXBhcmVUZW1wbGF0ZVN0eWxlcyhyLG4saSl7d2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZShyLG4saSl9LHByZXBhcmVUZW1wbGF0ZURvbShyLG4pe30sc3R5bGVTdWJ0cmVlKHIsbil7ZS5mbHVzaEN1c3RvbVN0eWxlcygpLGUuc3R5bGVTdWJ0cmVlKHIsbil9LHN0eWxlRWxlbWVudChyKXtlLmZsdXNoQ3VzdG9tU3R5bGVzKCksZS5zdHlsZUVsZW1lbnQocil9LHN0eWxlRG9jdW1lbnQocil7ZS5mbHVzaEN1c3RvbVN0eWxlcygpLGUuc3R5bGVEb2N1bWVudChyKX0sZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKHIsbil7cmV0dXJuIEdJKHIsbil9LGZsdXNoQ3VzdG9tU3R5bGVzKCl7ZS5mbHVzaEN1c3RvbVN0eWxlcygpfSxuYXRpdmVDc3M6UngsbmF0aXZlU2hhZG93OmhfLGNzc0J1aWxkOk1tLGRpc2FibGVSdW50aW1lOlVJfSx0JiYod2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlPXQpfXdpbmRvdy5TaGFkeUNTUy5BcHBseVNoaW09UU07dmFyIHNyPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fYXN5bmNNb2R1bGU9bnVsbCx0aGlzLl9jYWxsYmFjaz1udWxsLHRoaXMuX3RpbWVyPW51bGx9c2V0Q29uZmlnKHQscil7dGhpcy5fYXN5bmNNb2R1bGU9dCx0aGlzLl9jYWxsYmFjaz1yLHRoaXMuX3RpbWVyPXRoaXMuX2FzeW5jTW9kdWxlLnJ1bigoKT0+e3RoaXMuX3RpbWVyPW51bGwsdEUuZGVsZXRlKHRoaXMpLHRoaXMuX2NhbGxiYWNrKCl9KX1jYW5jZWwoKXt0aGlzLmlzQWN0aXZlKCkmJih0aGlzLl9jYW5jZWxBc3luYygpLHRFLmRlbGV0ZSh0aGlzKSl9X2NhbmNlbEFzeW5jKCl7dGhpcy5pc0FjdGl2ZSgpJiYodGhpcy5fYXN5bmNNb2R1bGUuY2FuY2VsKHRoaXMuX3RpbWVyKSx0aGlzLl90aW1lcj1udWxsKX1mbHVzaCgpe3RoaXMuaXNBY3RpdmUoKSYmKHRoaXMuY2FuY2VsKCksdGhpcy5fY2FsbGJhY2soKSl9aXNBY3RpdmUoKXtyZXR1cm4gdGhpcy5fdGltZXIhPW51bGx9c3RhdGljIGRlYm91bmNlKHQscixuKXtyZXR1cm4gdCBpbnN0YW5jZW9mIHNyP3QuX2NhbmNlbEFzeW5jKCk6dD1uZXcgc3IsdC5zZXRDb25maWcocixuKSx0fX0sdEU9bmV3IFNldCxLbD1mdW5jdGlvbihlKXt0RS5hZGQoZSl9LFZtdD1mdW5jdGlvbigpe2xldCBlPUJvb2xlYW4odEUuc2l6ZSk7cmV0dXJuIHRFLmZvckVhY2godD0+e3RyeXt0LmZsdXNoKCl9Y2F0Y2gocil7c2V0VGltZW91dCgoKT0+e3Rocm93IHJ9KX19KSxlfTt2YXIgT0c9dHlwZW9mIGRvY3VtZW50LmhlYWQuc3R5bGUudG91Y2hBY3Rpb249PSJzdHJpbmciLEpJPSJfX3BvbHltZXJHZXN0dXJlcyIsWkk9Il9fcG9seW1lckdlc3R1cmVzSGFuZGxlZCIsTkc9Il9fcG9seW1lckdlc3R1cmVzVG91Y2hBY3Rpb24iLFVtdD0yNSxxbXQ9NSxZMWU9MixqMWU9MjUwMCxYbXQ9WyJtb3VzZWRvd24iLCJtb3VzZW1vdmUiLCJtb3VzZXVwIiwiY2xpY2siXSxYMWU9WzAsMSw0LDJdLCQxZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IE1vdXNlRXZlbnQoInRlc3QiLHtidXR0b25zOjF9KS5idXR0b25zPT09MX1jYXRjaChlKXtyZXR1cm4hMX19KCk7ZnVuY3Rpb24gekcoZSl7cmV0dXJuIFhtdC5pbmRleE9mKGUpPi0xfXZhciBGRz0hMTsoZnVuY3Rpb24oKXt0cnl7bGV0IGU9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0KCl7Rkc9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsZSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsZSl9Y2F0Y2goZSl7fX0pKCk7ZnVuY3Rpb24gJG10KGUpe2lmKCEoekcoZSl8fGU9PT0idG91Y2hlbmQiKSYmT0cmJkZHJiZGZHQpcmV0dXJue3Bhc3NpdmU6ITB9fXZhciBLbXQ9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpbb2FdZHxob25lKXxBbmRyb2lkLyksREc9W10sSzFlPXtidXR0b246ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLG1ldGVyOiEwLG91dHB1dDohMCx0ZXh0YXJlYTohMCxwcm9ncmVzczohMCxzZWxlY3Q6ITB9LFoxZT17YnV0dG9uOiEwLGNvbW1hbmQ6ITAsZmllbGRzZXQ6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLG9wdGdyb3VwOiEwLG9wdGlvbjohMCxzZWxlY3Q6ITAsdGV4dGFyZWE6ITB9O2Z1bmN0aW9uIEoxZShlKXtyZXR1cm4gSzFlW2UubG9jYWxOYW1lXXx8ITF9ZnVuY3Rpb24gUTFlKGUpe2xldCB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUubGFiZWxzfHxbXSk7aWYoIXQubGVuZ3RoKXt0PVtdO2xldCByPWUuZ2V0Um9vdE5vZGUoKTtpZihlLmlkKXtsZXQgbj1yLnF1ZXJ5U2VsZWN0b3JBbGwoYGxhYmVsW2ZvciA9ICR7ZS5pZH1dYCk7Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspdC5wdXNoKG5baV0pfX1yZXR1cm4gdH12YXIgR210PWZ1bmN0aW9uKGUpe2xldCB0PWUuc291cmNlQ2FwYWJpbGl0aWVzO2lmKCEodCYmIXQuZmlyZXNUb3VjaEV2ZW50cykmJihlW1pJXT17c2tpcDohMH0sZS50eXBlPT09ImNsaWNrIikpe2xldCByPSExLG49dDkoZSk7Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspe2lmKG5baV0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7aWYobltpXS5sb2NhbE5hbWU9PT0ibGFiZWwiKURHLnB1c2gobltpXSk7ZWxzZSBpZihKMWUobltpXSkpe2xldCBvPVExZShuW2ldKTtmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErKylyPXJ8fERHLmluZGV4T2Yob1thXSk+LTF9fWlmKG5baV09PT1uYS5tb3VzZS50YXJnZXQpcmV0dXJufWlmKHIpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpfX07ZnVuY3Rpb24gV210KGUpe2xldCB0PUttdD9bImNsaWNrIl06WG10O2ZvcihsZXQgcj0wLG47cjx0Lmxlbmd0aDtyKyspbj10W3JdLGU/KERHLmxlbmd0aD0wLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIobixHbXQsITApKTpkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKG4sR210LCEwKX1mdW5jdGlvbiB0eGUoZSl7aWYoIWNHKXJldHVybjtuYS5tb3VzZS5tb3VzZUlnbm9yZUpvYnx8V210KCEwKTtsZXQgdD1mdW5jdGlvbigpe1dtdCgpLG5hLm1vdXNlLnRhcmdldD1udWxsLG5hLm1vdXNlLm1vdXNlSWdub3JlSm9iPW51bGx9O25hLm1vdXNlLnRhcmdldD10OShlKVswXSxuYS5tb3VzZS5tb3VzZUlnbm9yZUpvYj1zci5kZWJvdW5jZShuYS5tb3VzZS5tb3VzZUlnbm9yZUpvYixwby5hZnRlcihqMWUpLHQpfWZ1bmN0aW9uIHBfKGUpe2xldCB0PWUudHlwZTtpZighekcodCkpcmV0dXJuITE7aWYodD09PSJtb3VzZW1vdmUiKXtsZXQgcj1lLmJ1dHRvbnM9PT12b2lkIDA/MTplLmJ1dHRvbnM7cmV0dXJuIGUgaW5zdGFuY2VvZiB3aW5kb3cuTW91c2VFdmVudCYmISQxZSYmKHI9WDFlW2Uud2hpY2hdfHwwKSxCb29sZWFuKHImMSl9ZWxzZSByZXR1cm4oZS5idXR0b249PT12b2lkIDA/MDplLmJ1dHRvbik9PT0wfWZ1bmN0aW9uIGV4ZShlKXtpZihlLnR5cGU9PT0iY2xpY2siKXtpZihlLmRldGFpbD09PTApcmV0dXJuITA7bGV0IHQ9X3AoZSk7aWYoIXQubm9kZVR5cGV8fHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4hMDtsZXQgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ZS5wYWdlWCxpPWUucGFnZVk7cmV0dXJuIShuPj1yLmxlZnQmJm48PXIucmlnaHQmJmk+PXIudG9wJiZpPD1yLmJvdHRvbSl9cmV0dXJuITF9dmFyIG5hPXttb3VzZTp7dGFyZ2V0Om51bGwsbW91c2VJZ25vcmVKb2I6bnVsbH0sdG91Y2g6e3g6MCx5OjAsaWQ6LTEsc2Nyb2xsRGVjaWRlZDohMX19O2Z1bmN0aW9uIHJ4ZShlKXtsZXQgdD0iYXV0byIscj10OShlKTtmb3IobGV0IG49MCxpO248ci5sZW5ndGg7bisrKWlmKGk9cltuXSxpW05HXSl7dD1pW05HXTticmVha31yZXR1cm4gdH1mdW5jdGlvbiBabXQoZSx0LHIpe2UubW92ZWZuPXQsZS51cGZuPXIsZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixyKX1mdW5jdGlvbiB6eChlKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGUubW92ZWZuKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixlLnVwZm4pLGUubW92ZWZuPW51bGwsZS51cGZuPW51bGx9Y0cmJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0eGUsRkc/e3Bhc3NpdmU6ITB9OiExKTt2YXIgdDk9d2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00ubm9QYXRjaD93aW5kb3cuU2hhZHlET00uY29tcG9zZWRQYXRoOmU9PmUuY29tcG9zZWRQYXRoJiZlLmNvbXBvc2VkUGF0aCgpfHxbXSxyRT17fSxmXz1bXTtmdW5jdGlvbiBueGUoZSx0KXtsZXQgcj1kb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGUsdCksbj1yO2Zvcig7biYmbi5zaGFkb3dSb290JiYhd2luZG93LlNoYWR5RE9NOyl7bGV0IGk9bjtpZihuPW4uc2hhZG93Um9vdC5lbGVtZW50RnJvbVBvaW50KGUsdCksaT09PW4pYnJlYWs7biYmKHI9bil9cmV0dXJuIHJ9ZnVuY3Rpb24gX3AoZSl7bGV0IHQ9dDkoZSk7cmV0dXJuIHQubGVuZ3RoPjA/dFswXTplLnRhcmdldH1mdW5jdGlvbiBKbXQoZSl7bGV0IHQscj1lLnR5cGUsaT1lLmN1cnJlbnRUYXJnZXRbSkldO2lmKCFpKXJldHVybjtsZXQgbz1pW3JdO2lmKCEhbyl7aWYoIWVbWkldJiYoZVtaSV09e30sci5zbGljZSgwLDUpPT09InRvdWNoIikpe2U9ZTtsZXQgYT1lLmNoYW5nZWRUb3VjaGVzWzBdO2lmKHI9PT0idG91Y2hzdGFydCImJmUudG91Y2hlcy5sZW5ndGg9PT0xJiYobmEudG91Y2guaWQ9YS5pZGVudGlmaWVyKSxuYS50b3VjaC5pZCE9PWEuaWRlbnRpZmllcilyZXR1cm47T0d8fChyPT09InRvdWNoc3RhcnQifHxyPT09InRvdWNobW92ZSIpJiZpeGUoZSl9aWYodD1lW1pJXSwhdC5za2lwKXtmb3IobGV0IGE9MCxzO2E8Zl8ubGVuZ3RoO2ErKylzPWZfW2FdLG9bcy5uYW1lXSYmIXRbcy5uYW1lXSYmcy5mbG93JiZzLmZsb3cuc3RhcnQuaW5kZXhPZihlLnR5cGUpPi0xJiZzLnJlc2V0JiZzLnJlc2V0KCk7Zm9yKGxldCBhPTAsczthPGZfLmxlbmd0aDthKyspcz1mX1thXSxvW3MubmFtZV0mJiF0W3MubmFtZV0mJih0W3MubmFtZV09ITAsc1tyXShlKSl9fX1mdW5jdGlvbiBpeGUoZSl7bGV0IHQ9ZS5jaGFuZ2VkVG91Y2hlc1swXSxyPWUudHlwZTtpZihyPT09InRvdWNoc3RhcnQiKW5hLnRvdWNoLng9dC5jbGllbnRYLG5hLnRvdWNoLnk9dC5jbGllbnRZLG5hLnRvdWNoLnNjcm9sbERlY2lkZWQ9ITE7ZWxzZSBpZihyPT09InRvdWNobW92ZSIpe2lmKG5hLnRvdWNoLnNjcm9sbERlY2lkZWQpcmV0dXJuO25hLnRvdWNoLnNjcm9sbERlY2lkZWQ9ITA7bGV0IG49cnhlKGUpLGk9ITEsbz1NYXRoLmFicyhuYS50b3VjaC54LXQuY2xpZW50WCksYT1NYXRoLmFicyhuYS50b3VjaC55LXQuY2xpZW50WSk7ZS5jYW5jZWxhYmxlJiYobj09PSJub25lIj9pPSEwOm49PT0icGFuLXgiP2k9YT5vOm49PT0icGFuLXkiJiYoaT1vPmEpKSxpP2UucHJldmVudERlZmF1bHQoKTpRSSgidHJhY2siKX19ZnVuY3Rpb24gRW0oZSx0LHIpe3JldHVybiByRVt0XT8ob3hlKGUsdCxyKSwhMCk6ITF9ZnVuY3Rpb24gUW10KGUsdCxyKXtyZXR1cm4gckVbdF0/KGF4ZShlLHQsciksITApOiExfWZ1bmN0aW9uIG94ZShlLHQscil7bGV0IG49ckVbdF0saT1uLmRlcHMsbz1uLm5hbWUsYT1lW0pJXTthfHwoZVtKSV09YT17fSk7Zm9yKGxldCBzPTAsbCxjO3M8aS5sZW5ndGg7cysrKWw9aVtzXSwhKEttdCYmekcobCkmJmwhPT0iY2xpY2siKSYmKGM9YVtsXSxjfHwoYVtsXT1jPXtfY291bnQ6MH0pLGMuX2NvdW50PT09MCYmZS5hZGRFdmVudExpc3RlbmVyKGwsSm10LCRtdChsKSksY1tvXT0oY1tvXXx8MCkrMSxjLl9jb3VudD0oYy5fY291bnR8fDApKzEpO2UuYWRkRXZlbnRMaXN0ZW5lcih0LHIpLG4udG91Y2hBY3Rpb24mJmRfKGUsbi50b3VjaEFjdGlvbil9ZnVuY3Rpb24gYXhlKGUsdCxyKXtsZXQgbj1yRVt0XSxpPW4uZGVwcyxvPW4ubmFtZSxhPWVbSkldO2lmKGEpZm9yKGxldCBzPTAsbCxjO3M8aS5sZW5ndGg7cysrKWw9aVtzXSxjPWFbbF0sYyYmY1tvXSYmKGNbb109KGNbb118fDEpLTEsYy5fY291bnQ9KGMuX2NvdW50fHwxKS0xLGMuX2NvdW50PT09MCYmZS5yZW1vdmVFdmVudExpc3RlbmVyKGwsSm10LCRtdChsKSkpO2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIpfWZ1bmN0aW9uIEJHKGUpe2ZfLnB1c2goZSk7Zm9yKGxldCB0PTA7dDxlLmVtaXRzLmxlbmd0aDt0KyspckVbZS5lbWl0c1t0XV09ZX1mdW5jdGlvbiBzeGUoZSl7Zm9yKGxldCB0PTAscjt0PGZfLmxlbmd0aDt0Kyspe3I9Zl9bdF07Zm9yKGxldCBuPTAsaTtuPHIuZW1pdHMubGVuZ3RoO24rKylpZihpPXIuZW1pdHNbbl0saT09PWUpcmV0dXJuIHJ9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZF8oZSx0KXtPRyYmZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZjaS5ydW4oKCk9PntlLnN0eWxlLnRvdWNoQWN0aW9uPXR9KSxlW05HXT10fWZ1bmN0aW9uIEhHKGUsdCxyKXtsZXQgbj1uZXcgRXZlbnQodCx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNvbXBvc2VkOiEwfSk7aWYobi5kZXRhaWw9cix1ZShlKS5kaXNwYXRjaEV2ZW50KG4pLG4uZGVmYXVsdFByZXZlbnRlZCl7bGV0IGk9ci5wcmV2ZW50ZXJ8fHIuc291cmNlRXZlbnQ7aSYmaS5wcmV2ZW50RGVmYXVsdCYmaS5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBRSShlKXtsZXQgdD1zeGUoZSk7dC5pbmZvJiYodC5pbmZvLnByZXZlbnQ9ITApfUJHKHtuYW1lOiJkb3dudXAiLGRlcHM6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0IiwidG91Y2hlbmQiXSxmbG93OntzdGFydDpbIm1vdXNlZG93biIsInRvdWNoc3RhcnQiXSxlbmQ6WyJtb3VzZXVwIiwidG91Y2hlbmQiXX0sZW1pdHM6WyJkb3duIiwidXAiXSxpbmZvOnttb3ZlZm46bnVsbCx1cGZuOm51bGx9LHJlc2V0OmZ1bmN0aW9uKCl7engodGhpcy5pbmZvKX0sbW91c2Vkb3duOmZ1bmN0aW9uKGUpe2lmKCFwXyhlKSlyZXR1cm47bGV0IHQ9X3AoZSkscj10aGlzLG49ZnVuY3Rpb24oYSl7cF8oYSl8fChlRSgidXAiLHQsYSksengoci5pbmZvKSl9LGk9ZnVuY3Rpb24oYSl7cF8oYSkmJmVFKCJ1cCIsdCxhKSx6eChyLmluZm8pfTtabXQodGhpcy5pbmZvLG4saSksZUUoImRvd24iLHQsZSl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24oZSl7ZUUoImRvd24iLF9wKGUpLGUuY2hhbmdlZFRvdWNoZXNbMF0sZSl9LHRvdWNoZW5kOmZ1bmN0aW9uKGUpe2VFKCJ1cCIsX3AoZSksZS5jaGFuZ2VkVG91Y2hlc1swXSxlKX19KTtmdW5jdGlvbiBlRShlLHQscixuKXshdHx8SEcodCxlLHt4OnIuY2xpZW50WCx5OnIuY2xpZW50WSxzb3VyY2VFdmVudDpyLHByZXZlbnRlcjpuLHByZXZlbnQ6ZnVuY3Rpb24oaSl7cmV0dXJuIFFJKGkpfX0pfUJHKHtuYW1lOiJ0cmFjayIsdG91Y2hBY3Rpb246Im5vbmUiLGRlcHM6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIiwidG91Y2hlbmQiXSxmbG93OntzdGFydDpbIm1vdXNlZG93biIsInRvdWNoc3RhcnQiXSxlbmQ6WyJtb3VzZXVwIiwidG91Y2hlbmQiXX0sZW1pdHM6WyJ0cmFjayJdLGluZm86e3g6MCx5OjAsc3RhdGU6InN0YXJ0IixzdGFydGVkOiExLG1vdmVzOltdLGFkZE1vdmU6ZnVuY3Rpb24oZSl7dGhpcy5tb3Zlcy5sZW5ndGg+WTFlJiZ0aGlzLm1vdmVzLnNoaWZ0KCksdGhpcy5tb3Zlcy5wdXNoKGUpfSxtb3ZlZm46bnVsbCx1cGZuOm51bGwscHJldmVudDohMX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmluZm8uc3RhdGU9InN0YXJ0Iix0aGlzLmluZm8uc3RhcnRlZD0hMSx0aGlzLmluZm8ubW92ZXM9W10sdGhpcy5pbmZvLng9MCx0aGlzLmluZm8ueT0wLHRoaXMuaW5mby5wcmV2ZW50PSExLHp4KHRoaXMuaW5mbyl9LG1vdXNlZG93bjpmdW5jdGlvbihlKXtpZighcF8oZSkpcmV0dXJuO2xldCB0PV9wKGUpLHI9dGhpcyxuPWZ1bmN0aW9uKGEpe2xldCBzPWEuY2xpZW50WCxsPWEuY2xpZW50WTtZbXQoci5pbmZvLHMsbCkmJihyLmluZm8uc3RhdGU9ci5pbmZvLnN0YXJ0ZWQ/YS50eXBlPT09Im1vdXNldXAiPyJlbmQiOiJ0cmFjayI6InN0YXJ0IixyLmluZm8uc3RhdGU9PT0ic3RhcnQiJiZRSSgidGFwIiksci5pbmZvLmFkZE1vdmUoe3g6cyx5Omx9KSxwXyhhKXx8KHIuaW5mby5zdGF0ZT0iZW5kIix6eChyLmluZm8pKSx0JiZSRyhyLmluZm8sdCxhKSxyLmluZm8uc3RhcnRlZD0hMCl9LGk9ZnVuY3Rpb24oYSl7ci5pbmZvLnN0YXJ0ZWQmJm4oYSksengoci5pbmZvKX07Wm10KHRoaXMuaW5mbyxuLGkpLHRoaXMuaW5mby54PWUuY2xpZW50WCx0aGlzLmluZm8ueT1lLmNsaWVudFl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24oZSl7bGV0IHQ9ZS5jaGFuZ2VkVG91Y2hlc1swXTt0aGlzLmluZm8ueD10LmNsaWVudFgsdGhpcy5pbmZvLnk9dC5jbGllbnRZfSx0b3VjaG1vdmU6ZnVuY3Rpb24oZSl7bGV0IHQ9X3AoZSkscj1lLmNoYW5nZWRUb3VjaGVzWzBdLG49ci5jbGllbnRYLGk9ci5jbGllbnRZO1ltdCh0aGlzLmluZm8sbixpKSYmKHRoaXMuaW5mby5zdGF0ZT09PSJzdGFydCImJlFJKCJ0YXAiKSx0aGlzLmluZm8uYWRkTW92ZSh7eDpuLHk6aX0pLFJHKHRoaXMuaW5mbyx0LHIpLHRoaXMuaW5mby5zdGF0ZT0idHJhY2siLHRoaXMuaW5mby5zdGFydGVkPSEwKX0sdG91Y2hlbmQ6ZnVuY3Rpb24oZSl7bGV0IHQ9X3AoZSkscj1lLmNoYW5nZWRUb3VjaGVzWzBdO3RoaXMuaW5mby5zdGFydGVkJiYodGhpcy5pbmZvLnN0YXRlPSJlbmQiLHRoaXMuaW5mby5hZGRNb3ZlKHt4OnIuY2xpZW50WCx5OnIuY2xpZW50WX0pLFJHKHRoaXMuaW5mbyx0LHIpKX19KTtmdW5jdGlvbiBZbXQoZSx0LHIpe2lmKGUucHJldmVudClyZXR1cm4hMTtpZihlLnN0YXJ0ZWQpcmV0dXJuITA7bGV0IG49TWF0aC5hYnMoZS54LXQpLGk9TWF0aC5hYnMoZS55LXIpO3JldHVybiBuPj1xbXR8fGk+PXFtdH1mdW5jdGlvbiBSRyhlLHQscil7aWYoIXQpcmV0dXJuO2xldCBuPWUubW92ZXNbZS5tb3Zlcy5sZW5ndGgtMl0saT1lLm1vdmVzW2UubW92ZXMubGVuZ3RoLTFdLG89aS54LWUueCxhPWkueS1lLnkscyxsPTA7biYmKHM9aS54LW4ueCxsPWkueS1uLnkpLEhHKHQsInRyYWNrIix7c3RhdGU6ZS5zdGF0ZSx4OnIuY2xpZW50WCx5OnIuY2xpZW50WSxkeDpvLGR5OmEsZGR4OnMsZGR5Omwsc291cmNlRXZlbnQ6cixob3ZlcjpmdW5jdGlvbigpe3JldHVybiBueGUoci5jbGllbnRYLHIuY2xpZW50WSl9fSl9Qkcoe25hbWU6InRhcCIsZGVwczpbIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIl0sZmxvdzp7c3RhcnQ6WyJtb3VzZWRvd24iLCJ0b3VjaHN0YXJ0Il0sZW5kOlsiY2xpY2siLCJ0b3VjaGVuZCJdfSxlbWl0czpbInRhcCJdLGluZm86e3g6TmFOLHk6TmFOLHByZXZlbnQ6ITF9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5pbmZvLng9TmFOLHRoaXMuaW5mby55PU5hTix0aGlzLmluZm8ucHJldmVudD0hMX0sbW91c2Vkb3duOmZ1bmN0aW9uKGUpe3BfKGUpJiYodGhpcy5pbmZvLng9ZS5jbGllbnRYLHRoaXMuaW5mby55PWUuY2xpZW50WSl9LGNsaWNrOmZ1bmN0aW9uKGUpe3BfKGUpJiZqbXQodGhpcy5pbmZvLGUpfSx0b3VjaHN0YXJ0OmZ1bmN0aW9uKGUpe2xldCB0PWUuY2hhbmdlZFRvdWNoZXNbMF07dGhpcy5pbmZvLng9dC5jbGllbnRYLHRoaXMuaW5mby55PXQuY2xpZW50WX0sdG91Y2hlbmQ6ZnVuY3Rpb24oZSl7am10KHRoaXMuaW5mbyxlLmNoYW5nZWRUb3VjaGVzWzBdLGUpfX0pO2Z1bmN0aW9uIGptdChlLHQscil7bGV0IG49TWF0aC5hYnModC5jbGllbnRYLWUueCksaT1NYXRoLmFicyh0LmNsaWVudFktZS55KSxvPV9wKHJ8fHQpOyFvfHxaMWVbby5sb2NhbE5hbWVdJiZvLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8KGlzTmFOKG4pfHxpc05hTihpKXx8bjw9VW10JiZpPD1VbXR8fGV4ZSh0KSkmJihlLnByZXZlbnR8fEhHKG8sInRhcCIse3g6dC5jbGllbnRYLHk6dC5jbGllbnRZLHNvdXJjZUV2ZW50OnQscHJldmVudGVyOnJ9KSl9dmFyIHRndD1fcDt2YXIgX2g9Tm4oZT0+e2NsYXNzIHQgZXh0ZW5kcyBle19hZGRFdmVudExpc3RlbmVyVG9Ob2RlKG4saSxvKXtFbShuLGksbyl8fHN1cGVyLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKG4saSxvKX1fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKG4saSxvKXtRbXQobixpLG8pfHxzdXBlci5fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKG4saSxvKX19cmV0dXJuIHR9KTt2YXIgbHhlPS86aG9zdFwoOmRpclwoKGx0cnxydGwpXClcKS9nLGN4ZT0nOmhvc3QoW2Rpcj0iJDEiXSknLHV4ZT0vKFtcc1x3LSNcLlxbXF1cKl0qKTpkaXJcKChsdHJ8cnRsKVwpL2csaHhlPSc6aG9zdChbZGlyPSIkMiJdKSAkMScsZnhlPS86ZGlyXCgoPzpsdHJ8cnRsKVwpLyxyZ3Q9Qm9vbGVhbih3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSksbkU9W10saUU9bnVsbCxWRz0iIjtmdW5jdGlvbiBuZ3QoKXtWRz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKX1mdW5jdGlvbiBpZ3QoZSl7ZS5fX2F1dG9EaXJPcHRPdXR8fGUuc2V0QXR0cmlidXRlKCJkaXIiLFZHKX1mdW5jdGlvbiBvZ3QoKXtuZ3QoKSxWRz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKTtmb3IobGV0IGU9MDtlPG5FLmxlbmd0aDtlKyspaWd0KG5FW2VdKX1mdW5jdGlvbiBweGUoKXtpRSYmaUUudGFrZVJlY29yZHMoKS5sZW5ndGgmJm9ndCgpfXZhciBhZ3Q9Tm4oZT0+e3JndHx8aUV8fChuZ3QoKSxpRT1uZXcgTXV0YXRpb25PYnNlcnZlcihvZ3QpLGlFLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHthdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImRpciJdfSkpO2xldCB0PXpJKGUpO2NsYXNzIHIgZXh0ZW5kcyB0e3N0YXRpYyBfcHJvY2Vzc1N0eWxlVGV4dChpLG8pe3JldHVybiBpPXQuX3Byb2Nlc3NTdHlsZVRleHQuY2FsbCh0aGlzLGksbyksIXJndCYmZnhlLnRlc3QoaSkmJihpPXRoaXMuX3JlcGxhY2VEaXJJbkNzc1RleHQoaSksdGhpcy5fX2FjdGl2YXRlRGlyPSEwKSxpfXN0YXRpYyBfcmVwbGFjZURpckluQ3NzVGV4dChpKXtsZXQgbz1pO3JldHVybiBvPW8ucmVwbGFjZShseGUsY3hlKSxvPW8ucmVwbGFjZSh1eGUsaHhlKSxvfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fYXV0b0Rpck9wdE91dD0hMX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fX2F1dG9EaXJPcHRPdXQ9dGhpcy5oYXNBdHRyaWJ1dGUoImRpciIpfWNvbm5lY3RlZENhbGxiYWNrKCl7dC5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb25zdHJ1Y3Rvci5fX2FjdGl2YXRlRGlyJiYocHhlKCksbkUucHVzaCh0aGlzKSxpZ3QodGhpcykpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7aWYodC5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2smJnN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5jb25zdHJ1Y3Rvci5fX2FjdGl2YXRlRGlyKXtsZXQgaT1uRS5pbmRleE9mKHRoaXMpO2k+LTEmJm5FLnNwbGljZShpLDEpfX19cmV0dXJuIHIuX19hY3RpdmF0ZURpcj0hMSxyfSk7dmFyIGU5PSExLHNndD1bXSxsZ3Q9W107ZnVuY3Rpb24gY2d0KCl7ZTk9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7ZTk9ITEsZHhlKHNndCksc2V0VGltZW91dChmdW5jdGlvbigpe214ZShsZ3QpfSl9KX1mdW5jdGlvbiBkeGUoZSl7Zm9yKDtlLmxlbmd0aDspdWd0KGUuc2hpZnQoKSl9ZnVuY3Rpb24gbXhlKGUpe2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl1Z3QoZS5zaGlmdCgpKX1mdW5jdGlvbiB1Z3QoZSl7bGV0IHQ9ZVswXSxyPWVbMV0sbj1lWzJdO3RyeXtyLmFwcGx5KHQsbil9Y2F0Y2goaSl7c2V0VGltZW91dCgoKT0+e3Rocm93IGl9KX19ZnVuY3Rpb24gaGd0KGUsdCxyKXtlOXx8Y2d0KCksc2d0LnB1c2goW2UsdCxyXSl9ZnVuY3Rpb24gVG0oZSx0LHIpe2U5fHxjZ3QoKSxsZ3QucHVzaChbZSx0LHJdKX1mdW5jdGlvbiBmZ3QoKXtkb2N1bWVudC5ib2R5LnJlbW92ZUF0dHJpYnV0ZSgidW5yZXNvbHZlZCIpfWRvY3VtZW50LnJlYWR5U3RhdGU9PT0iaW50ZXJhY3RpdmUifHxkb2N1bWVudC5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIj9mZ3QoKTp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZmd0KTtmdW5jdGlvbiBvRShlLHQscil7cmV0dXJue2luZGV4OmUscmVtb3ZlZDp0LGFkZGVkQ291bnQ6cn19dmFyIHBndD0wLGRndD0xLFVHPTIscUc9MztmdW5jdGlvbiBneGUoZSx0LHIsbixpLG8pe2xldCBhPW8taSsxLHM9ci10KzEsbD1uZXcgQXJyYXkoYSk7Zm9yKGxldCBjPTA7YzxhO2MrKylsW2NdPW5ldyBBcnJheShzKSxsW2NdWzBdPWM7Zm9yKGxldCBjPTA7YzxzO2MrKylsWzBdW2NdPWM7Zm9yKGxldCBjPTE7YzxhO2MrKylmb3IobGV0IHU9MTt1PHM7dSsrKWlmKEdHKGVbdCt1LTFdLG5baStjLTFdKSlsW2NdW3VdPWxbYy0xXVt1LTFdO2Vsc2V7bGV0IGg9bFtjLTFdW3VdKzEsZj1sW2NdW3UtMV0rMTtsW2NdW3VdPWg8Zj9oOmZ9cmV0dXJuIGx9ZnVuY3Rpb24gX3hlKGUpe2xldCB0PWUubGVuZ3RoLTEscj1lWzBdLmxlbmd0aC0xLG49ZVt0XVtyXSxpPVtdO2Zvcig7dD4wfHxyPjA7KXtpZih0PT0wKXtpLnB1c2goVUcpLHItLTtjb250aW51ZX1pZihyPT0wKXtpLnB1c2gocUcpLHQtLTtjb250aW51ZX1sZXQgbz1lW3QtMV1bci0xXSxhPWVbdC0xXVtyXSxzPWVbdF1bci0xXSxsO2E8cz9sPWE8bz9hOm86bD1zPG8/czpvLGw9PW8/KG89PW4/aS5wdXNoKHBndCk6KGkucHVzaChkZ3QpLG49byksdC0tLHItLSk6bD09YT8oaS5wdXNoKHFHKSx0LS0sbj1hKTooaS5wdXNoKFVHKSxyLS0sbj1zKX1yZXR1cm4gaS5yZXZlcnNlKCksaX1mdW5jdGlvbiB5eGUoZSx0LHIsbixpLG8pe2xldCBhPTAscz0wLGwsYz1NYXRoLm1pbihyLXQsby1pKTtpZih0PT0wJiZpPT0wJiYoYT12eGUoZSxuLGMpKSxyPT1lLmxlbmd0aCYmbz09bi5sZW5ndGgmJihzPXh4ZShlLG4sYy1hKSksdCs9YSxpKz1hLHItPXMsby09cyxyLXQ9PTAmJm8taT09MClyZXR1cm5bXTtpZih0PT1yKXtmb3IobD1vRSh0LFtdLDApO2k8bzspbC5yZW1vdmVkLnB1c2gobltpKytdKTtyZXR1cm5bbF19ZWxzZSBpZihpPT1vKXJldHVybltvRSh0LFtdLHItdCldO2xldCB1PV94ZShneGUoZSx0LHIsbixpLG8pKTtsPXZvaWQgMDtsZXQgaD1bXSxmPXQscD1pO2ZvcihsZXQgZD0wO2Q8dS5sZW5ndGg7ZCsrKXN3aXRjaCh1W2RdKXtjYXNlIHBndDpsJiYoaC5wdXNoKGwpLGw9dm9pZCAwKSxmKysscCsrO2JyZWFrO2Nhc2UgZGd0Omx8fChsPW9FKGYsW10sMCkpLGwuYWRkZWRDb3VudCsrLGYrKyxsLnJlbW92ZWQucHVzaChuW3BdKSxwKys7YnJlYWs7Y2FzZSBVRzpsfHwobD1vRShmLFtdLDApKSxsLmFkZGVkQ291bnQrKyxmKys7YnJlYWs7Y2FzZSBxRzpsfHwobD1vRShmLFtdLDApKSxsLnJlbW92ZWQucHVzaChuW3BdKSxwKys7YnJlYWt9cmV0dXJuIGwmJmgucHVzaChsKSxofWZ1bmN0aW9uIHZ4ZShlLHQscil7Zm9yKGxldCBuPTA7bjxyO24rKylpZighR0coZVtuXSx0W25dKSlyZXR1cm4gbjtyZXR1cm4gcn1mdW5jdGlvbiB4eGUoZSx0LHIpe2xldCBuPWUubGVuZ3RoLGk9dC5sZW5ndGgsbz0wO2Zvcig7bzxyJiZHRyhlWy0tbl0sdFstLWldKTspbysrO3JldHVybiBvfWZ1bmN0aW9uIHI5KGUsdCl7cmV0dXJuIHl4ZShlLDAsZS5sZW5ndGgsdCwwLHQubGVuZ3RoKX1mdW5jdGlvbiBHRyhlLHQpe3JldHVybiBlPT09dH1mdW5jdGlvbiBGeChlKXtyZXR1cm4gZS5sb2NhbE5hbWU9PT0ic2xvdCJ9dmFyIHloPWNsYXNze3N0YXRpYyBnZXRGbGF0dGVuZWROb2RlcyhlKXtsZXQgdD11ZShlKTtyZXR1cm4gRngoZSk/KGU9ZSx0LmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46ITB9KSk6QXJyYXkuZnJvbSh0LmNoaWxkTm9kZXMpLm1hcChyPT5GeChyKT8ocj1yLHVlKHIpLmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46ITB9KSk6W3JdKS5yZWR1Y2UoKHIsbik9PnIuY29uY2F0KG4pLFtdKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcj1udWxsLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5fdGFyZ2V0PWUsdGhpcy5jYWxsYmFjaz10LHRoaXMuX2VmZmVjdGl2ZU5vZGVzPVtdLHRoaXMuX29ic2VydmVyPW51bGwsdGhpcy5fc2NoZWR1bGVkPSExLHRoaXMuX2JvdW5kU2NoZWR1bGU9KCk9Pnt0aGlzLl9zY2hlZHVsZSgpfSx0aGlzLmNvbm5lY3QoKSx0aGlzLl9zY2hlZHVsZSgpfWNvbm5lY3QoKXtGeCh0aGlzLl90YXJnZXQpP3RoaXMuX2xpc3RlblNsb3RzKFt0aGlzLl90YXJnZXRdKTp1ZSh0aGlzLl90YXJnZXQpLmNoaWxkcmVuJiYodGhpcy5fbGlzdGVuU2xvdHModWUodGhpcy5fdGFyZ2V0KS5jaGlsZHJlbiksd2luZG93LlNoYWR5RE9NP3RoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcj13aW5kb3cuU2hhZHlET00ub2JzZXJ2ZUNoaWxkcmVuKHRoaXMuX3RhcmdldCxlPT57dGhpcy5fcHJvY2Vzc011dGF0aW9ucyhlKX0pOih0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKGU9Pnt0aGlzLl9wcm9jZXNzTXV0YXRpb25zKGUpfSksdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci5vYnNlcnZlKHRoaXMuX3RhcmdldCx7Y2hpbGRMaXN0OiEwfSkpKSx0aGlzLl9jb25uZWN0ZWQ9ITB9ZGlzY29ubmVjdCgpe0Z4KHRoaXMuX3RhcmdldCk/dGhpcy5fdW5saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk6dWUodGhpcy5fdGFyZ2V0KS5jaGlsZHJlbiYmKHRoaXMuX3VubGlzdGVuU2xvdHModWUodGhpcy5fdGFyZ2V0KS5jaGlsZHJlbiksd2luZG93LlNoYWR5RE9NJiZ0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI/KHdpbmRvdy5TaGFkeURPTS51bm9ic2VydmVDaGlsZHJlbih0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXIpLHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcj1udWxsKTp0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyJiYodGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlcj1udWxsKSksdGhpcy5fY29ubmVjdGVkPSExfV9zY2hlZHVsZSgpe3RoaXMuX3NjaGVkdWxlZHx8KHRoaXMuX3NjaGVkdWxlZD0hMCxjaS5ydW4oKCk9PnRoaXMuZmx1c2goKSkpfV9wcm9jZXNzTXV0YXRpb25zKGUpe3RoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKGUpLHRoaXMuZmx1c2goKX1fcHJvY2Vzc1Nsb3RNdXRhdGlvbnMoZSl7aWYoZSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IHI9ZVt0XTtyLmFkZGVkTm9kZXMmJnRoaXMuX2xpc3RlblNsb3RzKHIuYWRkZWROb2Rlcyksci5yZW1vdmVkTm9kZXMmJnRoaXMuX3VubGlzdGVuU2xvdHMoci5yZW1vdmVkTm9kZXMpfX1mbHVzaCgpe2lmKCF0aGlzLl9jb25uZWN0ZWQpcmV0dXJuITE7d2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI/dGhpcy5fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKTp0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXImJnRoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKSx0aGlzLl9zY2hlZHVsZWQ9ITE7bGV0IGU9e3RhcmdldDp0aGlzLl90YXJnZXQsYWRkZWROb2RlczpbXSxyZW1vdmVkTm9kZXM6W119LHQ9dGhpcy5jb25zdHJ1Y3Rvci5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLl90YXJnZXQpLHI9cjkodCx0aGlzLl9lZmZlY3RpdmVOb2Rlcyk7Zm9yKGxldCBpPTAsbztpPHIubGVuZ3RoJiYobz1yW2ldKTtpKyspZm9yKGxldCBhPTAsczthPG8ucmVtb3ZlZC5sZW5ndGgmJihzPW8ucmVtb3ZlZFthXSk7YSsrKWUucmVtb3ZlZE5vZGVzLnB1c2gocyk7Zm9yKGxldCBpPTAsbztpPHIubGVuZ3RoJiYobz1yW2ldKTtpKyspZm9yKGxldCBhPW8uaW5kZXg7YTxvLmluZGV4K28uYWRkZWRDb3VudDthKyspZS5hZGRlZE5vZGVzLnB1c2godFthXSk7dGhpcy5fZWZmZWN0aXZlTm9kZXM9dDtsZXQgbj0hMTtyZXR1cm4oZS5hZGRlZE5vZGVzLmxlbmd0aHx8ZS5yZW1vdmVkTm9kZXMubGVuZ3RoKSYmKG49ITAsdGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuX3RhcmdldCxlKSksbn1fbGlzdGVuU2xvdHMoZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2xldCByPWVbdF07RngocikmJnIuYWRkRXZlbnRMaXN0ZW5lcigic2xvdGNoYW5nZSIsdGhpcy5fYm91bmRTY2hlZHVsZSl9fV91bmxpc3RlblNsb3RzKGUpe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgcj1lW3RdO0Z4KHIpJiZyLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNsb3RjaGFuZ2UiLHRoaXMuX2JvdW5kU2NoZWR1bGUpfX19O3ZhciB1aT1mdW5jdGlvbigpe2xldCBlLHQ7ZG8gZT13aW5kb3cuU2hhZHlET00mJlNoYWR5RE9NLmZsdXNoKCksd2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0mJndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbS5mbHVzaCgpLHQ9Vm10KCk7d2hpbGUoZXx8dCl9O3ZhciBCeD1FbGVtZW50LnByb3RvdHlwZSxieGU9QngubWF0Y2hlc3x8QngubWF0Y2hlc1NlbGVjdG9yfHxCeC5tb3pNYXRjaGVzU2VsZWN0b3J8fEJ4Lm1zTWF0Y2hlc1NlbGVjdG9yfHxCeC5vTWF0Y2hlc1NlbGVjdG9yfHxCeC53ZWJraXRNYXRjaGVzU2VsZWN0b3IsWUc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYnhlLmNhbGwoZSx0KX0sS3I9Y2xhc3N7Y29uc3RydWN0b3IodCl7d2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uaW5Vc2UmJndpbmRvdy5TaGFkeURPTS5wYXRjaCh0KSx0aGlzLm5vZGU9dH1vYnNlcnZlTm9kZXModCl7cmV0dXJuIG5ldyB5aCh0aGlzLm5vZGUsdCl9dW5vYnNlcnZlTm9kZXModCl7dC5kaXNjb25uZWN0KCl9bm90aWZ5T2JzZXJ2ZXIoKXt9ZGVlcENvbnRhaW5zKHQpe2lmKHVlKHRoaXMubm9kZSkuY29udGFpbnModCkpcmV0dXJuITA7bGV0IHI9dCxuPXQub3duZXJEb2N1bWVudDtmb3IoO3ImJnIhPT1uJiZyIT09dGhpcy5ub2RlOylyPXVlKHIpLnBhcmVudE5vZGV8fHVlKHIpLmhvc3Q7cmV0dXJuIHI9PT10aGlzLm5vZGV9Z2V0T3duZXJSb290KCl7cmV0dXJuIHVlKHRoaXMubm9kZSkuZ2V0Um9vdE5vZGUoKX1nZXREaXN0cmlidXRlZE5vZGVzKCl7cmV0dXJuIHRoaXMubm9kZS5sb2NhbE5hbWU9PT0ic2xvdCI/dWUodGhpcy5ub2RlKS5hc3NpZ25lZE5vZGVzKHtmbGF0dGVuOiEwfSk6W119Z2V0RGVzdGluYXRpb25JbnNlcnRpb25Qb2ludHMoKXtsZXQgdD1bXSxyPXVlKHRoaXMubm9kZSkuYXNzaWduZWRTbG90O2Zvcig7cjspdC5wdXNoKHIpLHI9dWUocikuYXNzaWduZWRTbG90O3JldHVybiB0fWltcG9ydE5vZGUodCxyKXtsZXQgbj10aGlzLm5vZGUgaW5zdGFuY2VvZiBEb2N1bWVudD90aGlzLm5vZGU6dGhpcy5ub2RlLm93bmVyRG9jdW1lbnQ7cmV0dXJuIHVlKG4pLmltcG9ydE5vZGUodCxyKX1nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCl7cmV0dXJuIHloLmdldEZsYXR0ZW5lZE5vZGVzKHRoaXMubm9kZSl9cXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpe2xldCByPXRoaXMuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpLG49W107Zm9yKGxldCBpPTAsbz1yLmxlbmd0aCxhO2k8byYmKGE9cltpXSk7aSsrKWEubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmWUcoYSx0KSYmbi5wdXNoKGEpO3JldHVybiBufWdldCBhY3RpdmVFbGVtZW50KCl7bGV0IHQ9dGhpcy5ub2RlO3JldHVybiB0Ll9hY3RpdmVFbGVtZW50IT09dm9pZCAwP3QuX2FjdGl2ZUVsZW1lbnQ6dC5hY3RpdmVFbGVtZW50fX07ZnVuY3Rpb24gd3hlKGUsdCl7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2xldCBuPXRbcl07ZVtuXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbbl0uYXBwbHkodGhpcy5ub2RlLGFyZ3VtZW50cyl9fX1mdW5jdGlvbiBtZ3QoZSx0KXtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bGV0IG49dFtyXTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlW25dfSxjb25maWd1cmFibGU6ITB9KX19ZnVuY3Rpb24gU3hlKGUsdCl7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2xldCBuPXRbcl07T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVtuXX0sc2V0OmZ1bmN0aW9uKGkpe3RoaXMubm9kZVtuXT1pfSxjb25maWd1cmFibGU6ITB9KX19dmFyIGFFPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuZXZlbnQ9dH1nZXQgcm9vdFRhcmdldCgpe3JldHVybiB0aGlzLnBhdGhbMF19Z2V0IGxvY2FsVGFyZ2V0KCl7cmV0dXJuIHRoaXMuZXZlbnQudGFyZ2V0fWdldCBwYXRoKCl7cmV0dXJuIHRoaXMuZXZlbnQuY29tcG9zZWRQYXRoKCl9fTtLci5wcm90b3R5cGUuY2xvbmVOb2RlO0tyLnByb3RvdHlwZS5hcHBlbmRDaGlsZDtLci5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlO0tyLnByb3RvdHlwZS5yZW1vdmVDaGlsZDtLci5wcm90b3R5cGUucmVwbGFjZUNoaWxkO0tyLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGU7S3IucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZTtLci5wcm90b3R5cGUucXVlcnlTZWxlY3RvcjtLci5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbDtLci5wcm90b3R5cGUucGFyZW50Tm9kZTtLci5wcm90b3R5cGUuZmlyc3RDaGlsZDtLci5wcm90b3R5cGUubGFzdENoaWxkO0tyLnByb3RvdHlwZS5uZXh0U2libGluZztLci5wcm90b3R5cGUucHJldmlvdXNTaWJsaW5nO0tyLnByb3RvdHlwZS5maXJzdEVsZW1lbnRDaGlsZDtLci5wcm90b3R5cGUubGFzdEVsZW1lbnRDaGlsZDtLci5wcm90b3R5cGUubmV4dEVsZW1lbnRTaWJsaW5nO0tyLnByb3RvdHlwZS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO0tyLnByb3RvdHlwZS5jaGlsZE5vZGVzO0tyLnByb3RvdHlwZS5jaGlsZHJlbjtLci5wcm90b3R5cGUuY2xhc3NMaXN0O0tyLnByb3RvdHlwZS50ZXh0Q29udGVudDtLci5wcm90b3R5cGUuaW5uZXJIVE1MO3ZhciBXRz1LcjtpZih3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSYmd2luZG93LlNoYWR5RE9NLm5vUGF0Y2gmJndpbmRvdy5TaGFkeURPTS5XcmFwcGVyKXtjbGFzcyBlIGV4dGVuZHMgd2luZG93LlNoYWR5RE9NLldyYXBwZXJ7fU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEtyLnByb3RvdHlwZSkuZm9yRWFjaCh0PT57dCE9ImFjdGl2ZUVsZW1lbnQiJiYoZS5wcm90b3R5cGVbdF09S3IucHJvdG90eXBlW3RdKX0pLG1ndChlLnByb3RvdHlwZSxbImNsYXNzTGlzdCJdKSxXRz1lLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGFFLnByb3RvdHlwZSx7bG9jYWxUYXJnZXQ6e2dldCgpe2xldCB0PXRoaXMuZXZlbnQuY3VycmVudFRhcmdldCxyPXQmJnp0KHQpLmdldE93bmVyUm9vdCgpLG49dGhpcy5wYXRoO2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKXtsZXQgbz1uW2ldO2lmKHp0KG8pLmdldE93bmVyUm9vdCgpPT09cilyZXR1cm4gb319LGNvbmZpZ3VyYWJsZTohMH0scGF0aDp7Z2V0KCl7cmV0dXJuIHdpbmRvdy5TaGFkeURPTS5jb21wb3NlZFBhdGgodGhpcy5ldmVudCl9LGNvbmZpZ3VyYWJsZTohMH19KX1lbHNlIHd4ZShLci5wcm90b3R5cGUsWyJjbG9uZU5vZGUiLCJhcHBlbmRDaGlsZCIsImluc2VydEJlZm9yZSIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwic2V0QXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwicXVlcnlTZWxlY3RvciIsInF1ZXJ5U2VsZWN0b3JBbGwiXSksbWd0KEtyLnByb3RvdHlwZSxbInBhcmVudE5vZGUiLCJmaXJzdENoaWxkIiwibGFzdENoaWxkIiwibmV4dFNpYmxpbmciLCJwcmV2aW91c1NpYmxpbmciLCJmaXJzdEVsZW1lbnRDaGlsZCIsImxhc3RFbGVtZW50Q2hpbGQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwiY2xhc3NMaXN0Il0pLFN4ZShLci5wcm90b3R5cGUsWyJ0ZXh0Q29udGVudCIsImlubmVySFRNTCIsImNsYXNzTmFtZSJdKTt2YXIgenQ9ZnVuY3Rpb24oZSl7aWYoZT1lfHxkb2N1bWVudCxlIGluc3RhbmNlb2YgV0d8fGUgaW5zdGFuY2VvZiBhRSlyZXR1cm4gZTtsZXQgdD1lLl9fZG9tQXBpO3JldHVybiB0fHwoZSBpbnN0YW5jZW9mIEV2ZW50P3Q9bmV3IGFFKGUpOnQ9bmV3IFdHKGUpLGUuX19kb21BcGk9dCksdH07dmFyIGpHPXdpbmRvdy5TaGFkeURPTSxnZ3Q9d2luZG93LlNoYWR5Q1NTO2Z1bmN0aW9uIF9ndChlLHQpe3JldHVybiB1ZShlKS5nZXRSb290Tm9kZSgpPT09dH1mdW5jdGlvbiB5Z3QoZSx0PSExKXtpZighakd8fCFnZ3R8fCFqRy5oYW5kbGVzRHluYW1pY1Njb3BpbmcpcmV0dXJuIG51bGw7bGV0IHI9Z2d0LlNjb3BpbmdTaGltO2lmKCFyKXJldHVybiBudWxsO2xldCBuPXIuc2NvcGVGb3JOb2RlKGUpLGk9dWUoZSkuZ2V0Um9vdE5vZGUoKSxvPWE9PntpZighX2d0KGEsaSkpcmV0dXJuO2xldCBzPUFycmF5LmZyb20oakcubmF0aXZlTWV0aG9kcy5xdWVyeVNlbGVjdG9yQWxsLmNhbGwoYSwiKiIpKTtzLnB1c2goYSk7Zm9yKGxldCBsPTA7bDxzLmxlbmd0aDtsKyspe2xldCBjPXNbbF07aWYoIV9ndChjLGkpKWNvbnRpbnVlO2xldCB1PXIuY3VycmVudFNjb3BlRm9yTm9kZShjKTt1IT09biYmKHUhPT0iIiYmci51bnNjb3BlTm9kZShjLHUpLHIuc2NvcGVOb2RlKGMsbikpfX07aWYobyhlKSx0KXtsZXQgYT1uZXcgTXV0YXRpb25PYnNlcnZlcihzPT57Zm9yKGxldCBsPTA7bDxzLmxlbmd0aDtsKyspe2xldCBjPXNbbF07Zm9yKGxldCB1PTA7dTxjLmFkZGVkTm9kZXMubGVuZ3RoO3UrKyl7bGV0IGg9Yy5hZGRlZE5vZGVzW3VdO2gubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmbyhoKX19fSk7cmV0dXJuIGEub2JzZXJ2ZShlLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGF9ZWxzZSByZXR1cm4gbnVsbH12YXIgWEc9ImRpc2FibGUtdXBncmFkZSIsJEc9ZT0+e2Zvcig7ZTspe2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSwib2JzZXJ2ZWRBdHRyaWJ1dGVzIik7aWYodClyZXR1cm4gdC5nZXQ7ZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wcm90b3R5cGUpLmNvbnN0cnVjdG9yfXJldHVybigpPT5bXX0sYzFyPU5uKGU9PntsZXQgdD1TbShlKSxyPSRHKHQpO2NsYXNzIG4gZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR9c3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKXtyZXR1cm4gci5jYWxsKHRoaXMpLmNvbmNhdChYRyl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7dGhpcy5oYXNBdHRyaWJ1dGUoWEcpP3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMDpzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1fZW5hYmxlUHJvcGVydGllcygpe3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8c3VwZXIuX2VuYWJsZVByb3BlcnRpZXMoKX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQobyl7cmV0dXJuIHN1cGVyLl9jYW5BcHBseVByb3BlcnR5RGVmYXVsdChvKSYmISh0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQmJnRoaXMuX2lzUHJvcGVydHlQZW5kaW5nKG8pKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobyxhLHMsbCl7bz09WEc/dGhpcy5fX2lzVXBncmFkZURpc2FibGVkJiZzPT1udWxsJiYoc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCksdGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSExLHVlKHRoaXMpLmlzQ29ubmVjdGVkJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpKTpzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobyxhLHMsbCl9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCl9fXJldHVybiBufSk7dmFyIG45PSJkaXNhYmxlLXVwZ3JhZGUiLE14ZT13aW5kb3cuU2hhZHlDU1MsR3Q9Tm4oZT0+e2xldCB0PV9oKFNtKGUpKSxyPUJJP3Q6YWd0KHQpLG49JEcociksaT17eDoicGFuLXgiLHk6InBhbi15Iixub25lOiJub25lIixhbGw6ImF1dG8ifTtjbGFzcyBvIGV4dGVuZHMgcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5pc0F0dGFjaGVkLHRoaXMuX19ib3VuZExpc3RlbmVycyx0aGlzLl9kZWJvdW5jZXJzLHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCx0aGlzLl9fbmVlZHNBdHRyaWJ1dGVzQXRDb25uZWN0ZWQsdGhpcy5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXN9c3RhdGljIGdldCBpbXBvcnRNZXRhKCl7cmV0dXJuIHRoaXMucHJvdG90eXBlLmltcG9ydE1ldGF9Y3JlYXRlZCgpe31fX2F0dHJpYnV0ZVJlYWN0aW9uKHMsbCxjKXsodGhpcy5fX2RhdGFBdHRyaWJ1dGVzJiZ0aGlzLl9fZGF0YUF0dHJpYnV0ZXNbc118fHM9PT1uOSkmJnRoaXMuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHMsbCxjLG51bGwpfXNldEF0dHJpYnV0ZShzLGwpe2lmKFZNJiYhdGhpcy5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpe2xldCBjPXRoaXMuZ2V0QXR0cmlidXRlKHMpO3N1cGVyLnNldEF0dHJpYnV0ZShzLGwpLHRoaXMuX19hdHRyaWJ1dGVSZWFjdGlvbihzLGMsU3RyaW5nKGwpKX1lbHNlIHN1cGVyLnNldEF0dHJpYnV0ZShzLGwpfXJlbW92ZUF0dHJpYnV0ZShzKXtpZihWTSYmIXRoaXMuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzKXtsZXQgbD10aGlzLmdldEF0dHJpYnV0ZShzKTtzdXBlci5yZW1vdmVBdHRyaWJ1dGUocyksdGhpcy5fX2F0dHJpYnV0ZVJlYWN0aW9uKHMsbCxudWxsKX1lbHNlIHN1cGVyLnJlbW92ZUF0dHJpYnV0ZShzKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVybiBWTSYmIXRoaXMucHJvdG90eXBlLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcz8odGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX29ic2VydmVkQXR0cmlidXRlcyIsdGhpcykpfHwodGhpcy5fX29ic2VydmVkQXR0cmlidXRlcz1bXSxGSSh0aGlzLnByb3RvdHlwZSkpLHRoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXMpOm4uY2FsbCh0aGlzKS5jb25jYXQobjkpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5fZW5hYmxlUHJvcGVydGllcygpfV9jYW5BcHBseVByb3BlcnR5RGVmYXVsdChzKXtyZXR1cm4gc3VwZXIuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHMpJiYhKHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmdGhpcy5faXNQcm9wZXJ0eVBlbmRpbmcocykpfWNvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX25lZWRzQXR0cmlidXRlc0F0Q29ubmVjdGVkJiZ0aGlzLl90YWtlQXR0cmlidXRlcygpLHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8KHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5pc0F0dGFjaGVkPSEwLHRoaXMuYXR0YWNoZWQoKSl9YXR0YWNoZWQoKXt9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fChzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaXNBdHRhY2hlZD0hMSx0aGlzLmRldGFjaGVkKCkpfWRldGFjaGVkKCl7fWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhzLGwsYyx1KXtsIT09YyYmKHM9PW45P3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmYz09bnVsbCYmKHRoaXMuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCksdGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSExLHVlKHRoaXMpLmlzQ29ubmVjdGVkJiZ0aGlzLmNvbm5lY3RlZENhbGxiYWNrKCkpOihzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2socyxsLGMsdSksdGhpcy5hdHRyaWJ1dGVDaGFuZ2VkKHMsbCxjKSkpfWF0dHJpYnV0ZUNoYW5nZWQocyxsLGMpe31faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXtpZihwcCYmdGhpcy5oYXNBdHRyaWJ1dGUobjkpKXRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMDtlbHNle2xldCBzPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9faGFzUmVnaXN0ZXJGaW5pc2hlZCIscykpfHwodGhpcy5fcmVnaXN0ZXJlZCgpLHMuX19oYXNSZWdpc3RlckZpbmlzaGVkPSEwKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLnJvb3Q9dGhpcyx0aGlzLmNyZWF0ZWQoKSxWTSYmIXRoaXMuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzJiYodGhpcy5oYXNBdHRyaWJ1dGVzKCk/dGhpcy5fdGFrZUF0dHJpYnV0ZXMoKTp0aGlzLnBhcmVudE5vZGV8fCh0aGlzLl9fbmVlZHNBdHRyaWJ1dGVzQXRDb25uZWN0ZWQ9ITApKSx0aGlzLl9hcHBseUxpc3RlbmVycygpfX1fdGFrZUF0dHJpYnV0ZXMoKXtsZXQgcz10aGlzLmF0dHJpYnV0ZXM7Zm9yKGxldCBsPTAsYz1zLmxlbmd0aDtsPGM7bCsrKXtsZXQgdT1zW2xdO3RoaXMuX19hdHRyaWJ1dGVSZWFjdGlvbih1Lm5hbWUsbnVsbCx1LnZhbHVlKX19X3JlZ2lzdGVyZWQoKXt9cmVhZHkoKXt0aGlzLl9lbnN1cmVBdHRyaWJ1dGVzKCksc3VwZXIucmVhZHkoKX1fZW5zdXJlQXR0cmlidXRlcygpe31fYXBwbHlMaXN0ZW5lcnMoKXt9c2VyaWFsaXplKHMpe3JldHVybiB0aGlzLl9zZXJpYWxpemVWYWx1ZShzKX1kZXNlcmlhbGl6ZShzLGwpe3JldHVybiB0aGlzLl9kZXNlcmlhbGl6ZVZhbHVlKHMsbCl9cmVmbGVjdFByb3BlcnR5VG9BdHRyaWJ1dGUocyxsLGMpe3RoaXMuX3Byb3BlcnR5VG9BdHRyaWJ1dGUocyxsLGMpfXNlcmlhbGl6ZVZhbHVlVG9BdHRyaWJ1dGUocyxsLGMpe3RoaXMuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKGN8fHRoaXMscyxsKX1leHRlbmQocyxsKXtpZighKHMmJmwpKXJldHVybiBzfHxsO2xldCBjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGwpO2ZvcihsZXQgdT0wLGg7dTxjLmxlbmd0aCYmKGg9Y1t1XSk7dSsrKXtsZXQgZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGwsaCk7ZiYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsaCxmKX1yZXR1cm4gc31taXhpbihzLGwpe2ZvcihsZXQgYyBpbiBsKXNbY109bFtjXTtyZXR1cm4gc31jaGFpbk9iamVjdChzLGwpe3JldHVybiBzJiZsJiZzIT09bCYmKHMuX19wcm90b19fPWwpLHN9aW5zdGFuY2VUZW1wbGF0ZShzKXtsZXQgbD10aGlzLmNvbnN0cnVjdG9yLl9jb250ZW50Rm9yVGVtcGxhdGUocyk7cmV0dXJuIGRvY3VtZW50LmltcG9ydE5vZGUobCwhMCl9ZmlyZShzLGwsYyl7Yz1jfHx7fSxsPWw9PW51bGw/e306bDtsZXQgdT1uZXcgRXZlbnQocyx7YnViYmxlczpjLmJ1YmJsZXM9PT12b2lkIDA/ITA6Yy5idWJibGVzLGNhbmNlbGFibGU6Qm9vbGVhbihjLmNhbmNlbGFibGUpLGNvbXBvc2VkOmMuY29tcG9zZWQ9PT12b2lkIDA/ITA6Yy5jb21wb3NlZH0pO3UuZGV0YWlsPWw7bGV0IGg9Yy5ub2RlfHx0aGlzO3JldHVybiB1ZShoKS5kaXNwYXRjaEV2ZW50KHUpLHV9bGlzdGVuKHMsbCxjKXtzPXN8fHRoaXM7bGV0IHU9dGhpcy5fX2JvdW5kTGlzdGVuZXJzfHwodGhpcy5fX2JvdW5kTGlzdGVuZXJzPW5ldyBXZWFrTWFwKSxoPXUuZ2V0KHMpO2h8fChoPXt9LHUuc2V0KHMsaCkpO2xldCBmPWwrYztoW2ZdfHwoaFtmXT10aGlzLl9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKHMsbCxjLHRoaXMpKX11bmxpc3RlbihzLGwsYyl7cz1zfHx0aGlzO2xldCB1PXRoaXMuX19ib3VuZExpc3RlbmVycyYmdGhpcy5fX2JvdW5kTGlzdGVuZXJzLmdldChzKSxoPWwrYyxmPXUmJnVbaF07ZiYmKHRoaXMuX3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZShzLGwsZiksdVtoXT1udWxsKX1zZXRTY3JvbGxEaXJlY3Rpb24ocyxsKXtkXyhsfHx0aGlzLGlbc118fCJhdXRvIil9JCQocyl7cmV0dXJuIHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKHMpfWdldCBkb21Ib3N0KCl7bGV0IHM9dWUodGhpcykuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQ/cy5ob3N0OnN9ZGlzdHJpYnV0ZUNvbnRlbnQoKXtsZXQgbD16dCh0aGlzKTt3aW5kb3cuU2hhZHlET00mJmwuc2hhZG93Um9vdCYmU2hhZHlET00uZmx1c2goKX1nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCl7cmV0dXJuIHp0KHRoaXMpLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKX1xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHMocyl7cmV0dXJuIHp0KHRoaXMpLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyhzKX1nZXRFZmZlY3RpdmVDaGlsZHJlbigpe3JldHVybiB0aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKS5maWx0ZXIoZnVuY3Rpb24obCl7cmV0dXJuIGwubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX0pfWdldEVmZmVjdGl2ZVRleHRDb250ZW50KCl7bGV0IHM9dGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCksbD1bXTtmb3IobGV0IGM9MCx1O3U9c1tjXTtjKyspdS5ub2RlVHlwZSE9PU5vZGUuQ09NTUVOVF9OT0RFJiZsLnB1c2godS50ZXh0Q29udGVudCk7cmV0dXJuIGwuam9pbigiIil9cXVlcnlFZmZlY3RpdmVDaGlsZHJlbihzKXtsZXQgbD10aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyhzKTtyZXR1cm4gbCYmbFswXX1xdWVyeUFsbEVmZmVjdGl2ZUNoaWxkcmVuKHMpe3JldHVybiB0aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyhzKX1nZXRDb250ZW50Q2hpbGROb2RlcyhzKXtsZXQgbD10aGlzLnJvb3QucXVlcnlTZWxlY3RvcihzfHwic2xvdCIpO3JldHVybiBsP3p0KGwpLmdldERpc3RyaWJ1dGVkTm9kZXMoKTpbXX1nZXRDb250ZW50Q2hpbGRyZW4ocyl7cmV0dXJuIHRoaXMuZ2V0Q29udGVudENoaWxkTm9kZXMocykuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiBjLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9KX1pc0xpZ2h0RGVzY2VuZGFudChzKXtsZXQgbD10aGlzO3JldHVybiBsIT09cyYmdWUobCkuY29udGFpbnMocykmJnVlKGwpLmdldFJvb3ROb2RlKCk9PT11ZShzKS5nZXRSb290Tm9kZSgpfWlzTG9jYWxEZXNjZW5kYW50KHMpe3JldHVybiB0aGlzLnJvb3Q9PT11ZShzKS5nZXRSb290Tm9kZSgpfXNjb3BlU3VidHJlZShzLGw9ITEpe3JldHVybiB5Z3QocyxsKX1nZXRDb21wdXRlZFN0eWxlVmFsdWUocyl7cmV0dXJuIE14ZS5nZXRDb21wdXRlZFN0eWxlVmFsdWUodGhpcyxzKX1kZWJvdW5jZShzLGwsYyl7cmV0dXJuIHRoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e30sdGhpcy5fZGVib3VuY2Vyc1tzXT1zci5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJzW3NdLGM+MD9wby5hZnRlcihjKTpjaSxsLmJpbmQodGhpcykpfWlzRGVib3VuY2VyQWN0aXZlKHMpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGw9dGhpcy5fZGVib3VuY2Vyc1tzXTtyZXR1cm4hIShsJiZsLmlzQWN0aXZlKCkpfWZsdXNoRGVib3VuY2VyKHMpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGw9dGhpcy5fZGVib3VuY2Vyc1tzXTtsJiZsLmZsdXNoKCl9Y2FuY2VsRGVib3VuY2VyKHMpe3RoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e307bGV0IGw9dGhpcy5fZGVib3VuY2Vyc1tzXTtsJiZsLmNhbmNlbCgpfWFzeW5jKHMsbCl7cmV0dXJuIGw+MD9wby5ydW4ocy5iaW5kKHRoaXMpLGwpOn5jaS5ydW4ocy5iaW5kKHRoaXMpKX1jYW5jZWxBc3luYyhzKXtzPDA/Y2kuY2FuY2VsKH5zKTpwby5jYW5jZWwocyl9Y3JlYXRlKHMsbCl7bGV0IGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChzKTtpZihsKWlmKGMuc2V0UHJvcGVydGllcyljLnNldFByb3BlcnRpZXMobCk7ZWxzZSBmb3IobGV0IHUgaW4gbCljW3VdPWxbdV07cmV0dXJuIGN9ZWxlbWVudE1hdGNoZXMocyxsKXtyZXR1cm4gWUcobHx8dGhpcyxzKX10b2dnbGVBdHRyaWJ1dGUocyxsKXtsZXQgYz10aGlzO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MyYmKGM9YXJndW1lbnRzWzJdKSxhcmd1bWVudHMubGVuZ3RoPT0xJiYobD0hYy5oYXNBdHRyaWJ1dGUocykpLGw/KHVlKGMpLnNldEF0dHJpYnV0ZShzLCIiKSwhMCk6KHVlKGMpLnJlbW92ZUF0dHJpYnV0ZShzKSwhMSl9dG9nZ2xlQ2xhc3MocyxsLGMpe2M9Y3x8dGhpcyxhcmd1bWVudHMubGVuZ3RoPT0xJiYobD0hYy5jbGFzc0xpc3QuY29udGFpbnMocykpLGw/Yy5jbGFzc0xpc3QuYWRkKHMpOmMuY2xhc3NMaXN0LnJlbW92ZShzKX10cmFuc2Zvcm0ocyxsKXtsPWx8fHRoaXMsbC5zdHlsZS53ZWJraXRUcmFuc2Zvcm09cyxsLnN0eWxlLnRyYW5zZm9ybT1zfXRyYW5zbGF0ZTNkKHMsbCxjLHUpe3U9dXx8dGhpcyx0aGlzLnRyYW5zZm9ybSgidHJhbnNsYXRlM2QoIitzKyIsIitsKyIsIitjKyIpIix1KX1hcnJheURlbGV0ZShzLGwpe2xldCBjO2lmKEFycmF5LmlzQXJyYXkocykpe2lmKGM9cy5pbmRleE9mKGwpLGM+PTApcmV0dXJuIHMuc3BsaWNlKGMsMSl9ZWxzZSBpZihjPVJvKHRoaXMscykuaW5kZXhPZihsKSxjPj0wKXJldHVybiB0aGlzLnNwbGljZShzLGMsMSk7cmV0dXJuIG51bGx9X2xvZ2dlcihzLGwpe3N3aXRjaChBcnJheS5pc0FycmF5KGwpJiZsLmxlbmd0aD09PTEmJkFycmF5LmlzQXJyYXkobFswXSkmJihsPWxbMF0pLHMpe2Nhc2UibG9nIjpjYXNlIndhcm4iOmNhc2UiZXJyb3IiOmNvbnNvbGVbc10oLi4ubCl9fV9sb2coLi4ucyl7dGhpcy5fbG9nZ2VyKCJsb2ciLHMpfV93YXJuKC4uLnMpe3RoaXMuX2xvZ2dlcigid2FybiIscyl9X2Vycm9yKC4uLnMpe3RoaXMuX2xvZ2dlcigiZXJyb3IiLHMpfV9sb2dmKHMsLi4ubCl7cmV0dXJuWyJbJXM6OiVzXSIsdGhpcy5pcyxzLC4uLmxdfX1yZXR1cm4gby5wcm90b3R5cGUuaXM9IiIsb30pO3ZhciBDbT1FZShPZSgpLDEpO2Z1bmN0aW9uIHZoKGUsdCl7bGV0IHI9MCxuPTA7Zm9yKDs7KXtpZihyPT09ZS5sZW5ndGgpcmV0dXJuIG49PT10Lmxlbmd0aD8wOi0xO2lmKG49PT10Lmxlbmd0aClyZXR1cm4gMTtpZihtXyhlW3JdKSYmbV8odFtuXSkpe2xldCBpPXIsbz1uO3I9dmd0KGUscisxKSxuPXZndCh0LG4rMSk7bGV0IGE9cGFyc2VGbG9hdChlLnNsaWNlKGkscikpLHM9cGFyc2VGbG9hdCh0LnNsaWNlKG8sbikpO2lmKGE8cylyZXR1cm4tMTtpZihhPnMpcmV0dXJuIDE7Y29udGludWV9aWYoS0coZVtyXSkpe2lmKCFLRyh0W25dKSlyZXR1cm4tMX1lbHNle2lmKEtHKHRbbl0pKXJldHVybiAxO2lmKGVbcl08dFtuXSlyZXR1cm4tMTtpZihlW3JdPnRbbl0pcmV0dXJuIDF9cisrLG4rK319ZnVuY3Rpb24gdmd0KGUsdCl7bGV0IHI7KGZ1bmN0aW9uKGkpe2lbaS5OQVRVUkFMPTBdPSJOQVRVUkFMIixpW2kuUkVBTD0xXT0iUkVBTCIsaVtpLkVYUE9ORU5UX1NJR049Ml09IkVYUE9ORU5UX1NJR04iLGlbaS5FWFBPTkVOVD0zXT0iRVhQT05FTlQifSkocnx8KHI9e30pKTtsZXQgbj1yLk5BVFVSQUw7Zm9yKDt0PGUubGVuZ3RoO3QrKylpZihuPT09ci5OQVRVUkFMKXtpZihlW3RdPT09Ii4iKW49ci5SRUFMO2Vsc2UgaWYoZVt0XT09PSJlInx8ZVt0XT09PSJFIiluPXIuRVhQT05FTlRfU0lHTjtlbHNlIGlmKCFtXyhlW3RdKSlicmVha31lbHNlIGlmKG49PT1yLlJFQUwpe2lmKGVbdF09PT0iZSJ8fGVbdF09PT0iRSIpbj1yLkVYUE9ORU5UX1NJR047ZWxzZSBpZighbV8oZVt0XSkpYnJlYWt9ZWxzZSBpZihuPT09ci5FWFBPTkVOVF9TSUdOKWlmKG1fKGVbdF0pfHxlW3RdPT09IisifHxlW3RdPT09Ii0iKW49ci5FWFBPTkVOVDtlbHNlIGJyZWFrO2Vsc2UgaWYobj09PXIuRVhQT05FTlQmJiFtXyhlW3RdKSlicmVhaztyZXR1cm4gdH1mdW5jdGlvbiBtXyhlKXtyZXR1cm4iMCI8PWUmJmU8PSI5In1mdW5jdGlvbiBLRyhlKXtyZXR1cm4gZT09PSIvInx8ZT09PSJfInx8bV8oZSl9dmFyIEV4ZT1bXTtmdW5jdGlvbiBUeGUoZSl7cmV0dXJuIENtLmtleXMoZSkuc29ydCh2aCl9ZnVuY3Rpb24gWGkoZSl7cmV0dXJuIENtLnVuaW9uLmFwcGx5KG51bGwsQ20udmFsdWVzKGUpKS5zb3J0KHZoKX1mdW5jdGlvbiBDeGUoZSx0KXtsZXQgcj1bXTtyZXR1cm4gdC5mb3JFYWNoKG49PnI9ci5jb25jYXQoZVtuXSkpLENtLnVuaXEocikuc29ydCh2aCl9dmFyIGJndD0iWC1UZW5zb3JCb2FyZC1GZWF0dXJlLUZsYWdzIjt2YXIgSkc9e307JHMoSkcse2dldEZlYXR1cmVGbGFnczooKT0+UHhlLGdldEZlYXR1cmVGbGFnc1RvU2VuZFRvU2VydmVyOigpPT5aRyxpbml0aWFsaXplRmVhdHVyZUZsYWdzOigpPT53Z3Qsc2V0RmVhdHVyZUZsYWdzOigpPT5BeGV9KTt2YXIgaTksbzk7d2d0KCk7ZnVuY3Rpb24gd2d0KCl7aTk9bnVsbCxvOT1udWxsfWZ1bmN0aW9uIEF4ZShlLHQpe2k5PWUsbzk9dH1mdW5jdGlvbiBQeGUoKXtpZihpOT09PW51bGwpdGhyb3cgRXJyb3IoIkZlYXR1cmVGbGFncyBoYXZlIG5vdCB5ZXQgYmVlbiBkZXRlcm1pbmVkIGJ5IFRlbnNvckJvYXJkLiIpO3JldHVybiBpOX1mdW5jdGlvbiBaRygpe2lmKG85PT09bnVsbCl0aHJvdyBFcnJvcigiRmVhdHVyZUZsYWdzIGhhdmUgbm90IHlldCBiZWVuIGRldGVybWluZWQgYnkgVGVuc29yQm9hcmQuIik7cmV0dXJuIG85fXZhciBhOT1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm5hbWU9IlJlcXVlc3RDYW5jZWxsYXRpb25FcnJvciJ9fSxIeD1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMubmFtZT0iSW52YWxpZFJlcXVlc3RPcHRpb25zRXJyb3IiLE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLEh4LnByb3RvdHlwZSl9fSxzRT1jbGFzcyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQscil7c3VwZXIoKSx0aGlzLm1lc3NhZ2U9YFJlcXVlc3ROZXR3b3JrRXJyb3I6ICR7dC5zdGF0dXN9IGF0ICR7cn1gLHRoaXMubmFtZT0iUmVxdWVzdE5ldHdvcmtFcnJvciIsdGhpcy5yZXE9dCx0aGlzLnVybD1yfX0sQW07KGZ1bmN0aW9uKGUpe2UuR0VUPSJHRVQiLGUuUE9TVD0iUE9TVCJ9KShBbXx8KEFtPXt9KSk7dmFyIFZ4PWNsYXNze3ZhbGlkYXRlKCl7aWYodGhpcy5tZXRob2RUeXBlPT09QW0uR0VUJiZ0aGlzLmJvZHkpdGhyb3cgbmV3IEh4KCJib2R5IG11c3QgYmUgbWlzc2luZyBmb3IgYSBHRVQgcmVxdWVzdC4iKX19LEFlPWNsYXNze2NvbnN0cnVjdG9yKHQ9MWUzLHI9Myl7dGhpcy5fcXVldWU9W10sdGhpcy5fbkFjdGl2ZVJlcXVlc3RzPTAsdGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzPXQsdGhpcy5fbWF4UmV0cmllcz1yfXJlcXVlc3QodCxyKXtsZXQgbj1MeGUocik7cmV0dXJuIHRoaXMucmVxdWVzdFdpdGhPcHRpb25zKHQsbil9cmVxdWVzdFdpdGhPcHRpb25zKHQscil7cmV0dXJuIHIudmFsaWRhdGUoKSxuZXcgUHJvbWlzZSgoaSxvKT0+e2xldCBhPXtyZXNvbHZlOmkscmVqZWN0Om99O3RoaXMuX3F1ZXVlLnB1c2goYSksdGhpcy5sYXVuY2hSZXF1ZXN0cygpfSkudGhlbigoKT0+dGhpcy5wcm9taXNlV2l0aFJldHJpZXModCx0aGlzLl9tYXhSZXRyaWVzLHIpKS50aGVuKGk9Pih0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCksaSksaT0+KGkubmFtZT09PSJSZXF1ZXN0TmV0d29ya0Vycm9yIiYmKHRoaXMuX25BY3RpdmVSZXF1ZXN0cy0tLHRoaXMubGF1bmNoUmVxdWVzdHMoKSksUHJvbWlzZS5yZWplY3QoaSkpKX1mZXRjaCh0LHIpe3JldHVybiBuZXcgUHJvbWlzZSgobixpKT0+e2xldCBvPXtyZXNvbHZlOm4scmVqZWN0Oml9O3RoaXMuX3F1ZXVlLnB1c2gobyksdGhpcy5sYXVuY2hSZXF1ZXN0cygpfSkudGhlbigoKT0+e2xldCBuPTE7cmV0dXJuIG5ldyBQcm9taXNlKGk9PntsZXQgbz0oKT0+e2ZldGNoKHQscikudGhlbihhPT57aWYoIWEub2smJnRoaXMuX21heFJldHJpZXM+bil7bisrLG8oKTtyZXR1cm59aShhKSx0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KX07bygpfSl9KX1jbGVhclF1ZXVlKCl7Zm9yKHZhciB0O3RoaXMuX3F1ZXVlLmxlbmd0aD4wOykodD10aGlzLl9xdWV1ZS5wb3AoKSk9PT1udWxsfHx0PT09dm9pZCAwfHx0LnJlamVjdChuZXcgYTkoIlJlcXVlc3QgY2FuY2VsbGVkIGJ5IGNsZWFyUXVldWUiKSl9YWN0aXZlUmVxdWVzdHMoKXtyZXR1cm4gdGhpcy5fbkFjdGl2ZVJlcXVlc3RzfW91dHN0YW5kaW5nUmVxdWVzdHMoKXtyZXR1cm4gdGhpcy5fbkFjdGl2ZVJlcXVlc3RzK3RoaXMuX3F1ZXVlLmxlbmd0aH1sYXVuY2hSZXF1ZXN0cygpe2Zvcig7dGhpcy5fbkFjdGl2ZVJlcXVlc3RzPHRoaXMuX25TaW11bHRhbmVvdXNSZXF1ZXN0cyYmdGhpcy5fcXVldWUubGVuZ3RoPjA7KXRoaXMuX25BY3RpdmVSZXF1ZXN0cysrLHRoaXMuX3F1ZXVlLnBvcCgpLnJlc29sdmUodm9pZCAwKX1wcm9taXNlV2l0aFJldHJpZXModCxyLG4pe3ZhciBpPWE9PmEsbz1hPT5yPjA/dGhpcy5wcm9taXNlV2l0aFJldHJpZXModCxyLTEsbik6UHJvbWlzZS5yZWplY3QoYSk7cmV0dXJuIHRoaXMuX3Byb21pc2VGcm9tVXJsKHQsbikudGhlbihpLG8pfV9wcm9taXNlRnJvbVVybCh0LHIpe3JldHVybiBuZXcgUHJvbWlzZSgobixpKT0+e2xldCBvPUl4ZShyLm1ldGhvZFR5cGUsdCxyLndpdGhDcmVkZW50aWFscyxyLmNvbnRlbnRUeXBlKTtvLnNldFJlcXVlc3RIZWFkZXIoYmd0LEpTT04uc3RyaW5naWZ5KFpHKCkpKSxvLm9ubG9hZD1mdW5jdGlvbigpe28uc3RhdHVzPT09MjAwP24oSlNPTi5wYXJzZShvLnJlc3BvbnNlVGV4dCkpOmkobmV3IHNFKG8sdCkpfSxvLm9uZXJyb3I9ZnVuY3Rpb24oKXtpKG5ldyBzRShvLHQpKX0sci5ib2R5P28uc2VuZChyLmJvZHkpOm8uc2VuZCgpfSl9fTtmdW5jdGlvbiBJeGUoZSx0LHIsbil7bGV0IGk9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBpLm9wZW4oZSx0KSxyJiYoaS53aXRoQ3JlZGVudGlhbHM9ciksbiYmaS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLG4pLGl9ZnVuY3Rpb24gTHhlKGUpe2xldCB0PW5ldyBWeDtyZXR1cm4gZT8odC5tZXRob2RUeXBlPUFtLlBPU1QsdC5ib2R5PWt4ZShlKSx0KToodC5tZXRob2RUeXBlPUFtLkdFVCx0KX1mdW5jdGlvbiBreGUoZSl7bGV0IHQ9bmV3IEZvcm1EYXRhO2ZvcihsZXRbcixuXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtsZXQgaT1BcnJheS5pc0FycmF5KG4pP246W25dO2ZvcihsZXQgbyBvZiBpKXQuYXBwZW5kKHIsbyl9cmV0dXJuIHR9dmFyIFNndD0iZXhwZXJpbWVudGFsUGx1Z2luIixSeGU9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSxNZ3Q9RWd0KCk7ZnVuY3Rpb24gRWd0KGU9ImRhdGEiLHQ9UnhlKXtyZXR1cm4gZVtlLmxlbmd0aC0xXT09PSIvIiYmKGU9ZS5zbGljZSgwLGUubGVuZ3RoLTEpKSx7ZW52aXJvbm1lbnQ6KCk9PlV4KGUsIi9lbnZpcm9ubWVudCIpLGV4cGVyaW1lbnRzOigpPT5VeChlLCIvZXhwZXJpbWVudHMiKSxwbHVnaW5Sb3V0ZToocixuLGkpPT5VeChlKyIvcGx1Z2luIixgLyR7cn0ke259YCxpKSxwbHVnaW5zTGlzdGluZzooKT0+VXgoZSwiL3BsdWdpbnNfbGlzdGluZyIsUUcoe1tTZ3RdOnQuZ2V0QWxsKFNndCl9KSkscnVuczooKT0+VXgoZSwiL3J1bnMiKSxydW5zRm9yRXhwZXJpbWVudDpyPT5VeChlLCIvZXhwZXJpbWVudF9ydW5zIixRRyh7ZXhwZXJpbWVudDpTdHJpbmcocil9KSl9fWZ1bmN0aW9uIHZlKCl7cmV0dXJuIE1ndH1mdW5jdGlvbiBOeGUoZSl7aWYoZT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIlJvdXRlciByZXF1aXJlZCwgYnV0IGdvdDogIitlKTtNZ3Q9ZX1mdW5jdGlvbiBVeChlLHQscj1uZXcgVVJMU2VhcmNoUGFyYW1zKXtsZXQgbj1lK3Q7cmV0dXJuIFN0cmluZyhyKSYmKG4rPSh0LmluY2x1ZGVzKCI/Iik/IiYiOiI/IikrU3RyaW5nKHIpKSxufWZ1bmN0aW9uIFFHKGU9e30pe2xldCB0PU9iamVjdC5rZXlzKGUpLnNvcnQoKS5maWx0ZXIobj0+ZVtuXSkscj1uZXcgVVJMU2VhcmNoUGFyYW1zO3JldHVybiB0LmZvckVhY2gobj0+e2xldCBpPWVbbl07KEFycmF5LmlzQXJyYXkoaSk/aTpbaV0pLmZvckVhY2goYT0+ci5hcHBlbmQobixhKSl9KSxyfXZhciBzOT1FZShPZSgpLDEpO3ZhciBSYTsoZnVuY3Rpb24oZSl7ZVtlLlNFQVJDSF9SRVNVTFRTPTBdPSJTRUFSQ0hfUkVTVUxUUyIsZVtlLlBSRUZJWF9HUk9VUD0xXT0iUFJFRklYX0dST1VQIn0pKFJhfHwoUmE9e30pKTtmdW5jdGlvbiBEeGUoZSx0KXtsZXQgcj0oKCk9Pnt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCl9Y2F0Y2gobil7cmV0dXJuIG51bGx9fSkoKTtyZXR1cm57bmFtZTp0LG1ldGFkYXRhOnt0eXBlOlJhLlNFQVJDSF9SRVNVTFRTLHZhbGlkUmVnZXg6ISFyLHVuaXZlcnNhbFJlZ2V4OnQ9PT0iLioifSxpdGVtczpyP2UuZmlsdGVyKG49Pm4ubWF0Y2gocikpOltdfX1mdW5jdGlvbiBPeGUoZSx0PSIvIil7bGV0IHI9W10sbj17fTtyZXR1cm4gZS5mb3JFYWNoKGk9PntsZXQgbz1pLmluZGV4T2YodCksYT1vPj0wP2kuc2xpY2UoMCxvKTppO2lmKCFuW2FdKXtsZXQgcz17bmFtZTphLG1ldGFkYXRhOnt0eXBlOlJhLlBSRUZJWF9HUk9VUH0saXRlbXM6W119O25bYV09cyxyLnB1c2gocyl9blthXS5pdGVtcy5wdXNoKGkpfSkscn1mdW5jdGlvbiB6eGUoZSx0PSIiKXtsZXQgcj1bRHhlKGUsdCldLG49T3hlKGUpO3JldHVybiBBcnJheSgpLmNvbmNhdChyLG4pfWZ1bmN0aW9uIGxFKGUsdCxyKXtsZXQgbj1YaShlKSxpPXp4ZShuLHIpLG89RnhlKHM5LnBpY2soZSx0KSk7cmV0dXJuIGkubWFwKCh7bmFtZTphLG1ldGFkYXRhOnMsaXRlbXM6bH0pPT4oe25hbWU6YSxtZXRhZGF0YTpzLGl0ZW1zOmwubWFwKGM9Pih7dGFnOmMscnVuczooby5nZXQoYyl8fFtdKS5zbGljZSgpfSkpfSkpfWZ1bmN0aW9uIEZ4ZShlKXtsZXQgdD1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKHI9PntlW3JdLmZvckVhY2gobj0+e2xldCBpPXQuZ2V0KG4pfHxbXTtpLnB1c2gociksdC5zZXQobixpKX0pfSksdH1mdW5jdGlvbiBCeGUoZSx0KXtsZXQgcj12aChlLnRhZyx0LnRhZyk7cmV0dXJuIHIhPTA/cjp2aChlLnJ1bix0LnJ1bil9ZnVuY3Rpb24gWmwoZSx0LHIpe2xldCBuPWxFKGUsdCxyKTtmdW5jdGlvbiBpKG8pe2xldCBhPXM5LmZsYXR0ZW4oby5pdGVtcy5tYXAoKHt0YWc6cyxydW5zOmx9KT0+bC5tYXAoYz0+KHt0YWc6cyxydW46Y30pKSkpO3JldHVybiBhLnNvcnQoQnhlKSx7bmFtZTpvLm5hbWUsbWV0YWRhdGE6by5tZXRhZGF0YSxpdGVtczphfX1yZXR1cm4gbi5tYXAoaSl9dmFyIGxXPXt9OyRzKGxXLHtJcm9uUmVzaXphYmxlQmVoYXZpb3I6KCk9PlpzfSk7dmFyIEh4ZT17YXR0YWNoZWQ6ITAsZGV0YWNoZWQ6ITAscmVhZHk6ITAsY3JlYXRlZDohMCxiZWZvcmVSZWdpc3RlcjohMCxyZWdpc3RlcmVkOiEwLGF0dHJpYnV0ZUNoYW5nZWQ6ITAsbGlzdGVuZXJzOiEwLGhvc3RBdHRyaWJ1dGVzOiEwfSxQZ3Q9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGJlaGF2aW9yczohMCxfbm9BY2Nlc3NvcnM6ITB9LFZ4ZT1PYmplY3QuYXNzaWduKHtsaXN0ZW5lcnM6ITAsaG9zdEF0dHJpYnV0ZXM6ITAscHJvcGVydGllczohMCxvYnNlcnZlcnM6ITB9LFBndCk7ZnVuY3Rpb24gVXhlKGUsdCxyKXtsZXQgbj1lLl9ub0FjY2Vzc29ycyxpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXtsZXQgYT1pW29dO2lmKCEoYSBpbiByKSlpZihuKXRbYV09ZVthXTtlbHNle2xldCBzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxhKTtzJiYocy5jb25maWd1cmFibGU9ITAsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsYSxzKSl9fX1mdW5jdGlvbiBJZ3QoZSx0KXtyZXR1cm4gUmd0KHt9LEd0KHQpLGUpfWZ1bmN0aW9uIHF4ZShlLHQscil7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspTGd0KGUsdFtuXSxyLFZ4ZSl9ZnVuY3Rpb24gTGd0KGUsdCxyLG4pe1V4ZSh0LGUsbik7Zm9yKGxldCBpIGluIEh4ZSl0W2ldJiYocltpXT1yW2ldfHxbXSxyW2ldLnB1c2godFtpXSkpfWZ1bmN0aW9uIGtndChlLHQscil7dD10fHxbXTtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7bGV0IGk9ZVtuXTtpP0FycmF5LmlzQXJyYXkoaSk/a2d0KGksdCk6dC5pbmRleE9mKGkpPDAmJighcnx8ci5pbmRleE9mKGkpPDApJiZ0LnVuc2hpZnQoaSk6Y29uc29sZS53YXJuKCJiZWhhdmlvciBpcyBudWxsLCBjaGVjayBmb3IgbWlzc2luZyBvciA0MDQgaW1wb3J0Iil9cmV0dXJuIHR9ZnVuY3Rpb24gQ2d0KGUsdCl7Zm9yKGxldCByIGluIHQpe2xldCBuPWVbcl0saT10W3JdOyEoInZhbHVlImluIGkpJiZuJiYidmFsdWUiaW4gbj9lW3JdPU9iamVjdC5hc3NpZ24oe3ZhbHVlOm4udmFsdWV9LGkpOmVbcl09aX19dmFyIEFndD1HdChIVE1MRWxlbWVudCk7ZnVuY3Rpb24gUmd0KGUsdCxyKXtsZXQgbixpPXt9O2NsYXNzIG8gZXh0ZW5kcyB0e3N0YXRpYyBfZmluYWxpemVDbGFzcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoImdlbmVyYXRlZEZyb20iLHRoaXMpKSl0Ll9maW5hbGl6ZUNsYXNzLmNhbGwodGhpcyk7ZWxzZXtpZihuKWZvcihsZXQgbD0wLGM7bDxuLmxlbmd0aDtsKyspYz1uW2xdLGMucHJvcGVydGllcyYmdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKGMucHJvcGVydGllcyksYy5vYnNlcnZlcnMmJnRoaXMuY3JlYXRlT2JzZXJ2ZXJzKGMub2JzZXJ2ZXJzLGMucHJvcGVydGllcyk7ZS5wcm9wZXJ0aWVzJiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXMoZS5wcm9wZXJ0aWVzKSxlLm9ic2VydmVycyYmdGhpcy5jcmVhdGVPYnNlcnZlcnMoZS5vYnNlcnZlcnMsZS5wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX19c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7bGV0IGw9e307aWYobilmb3IobGV0IGM9MDtjPG4ubGVuZ3RoO2MrKylDZ3QobCxuW2NdLnByb3BlcnRpZXMpO3JldHVybiBDZ3QobCxlLnByb3BlcnRpZXMpLGx9c3RhdGljIGdldCBvYnNlcnZlcnMoKXtsZXQgbD1bXTtpZihuKWZvcihsZXQgYz0wLHU7YzxuLmxlbmd0aDtjKyspdT1uW2NdLHUub2JzZXJ2ZXJzJiYobD1sLmNvbmNhdCh1Lm9ic2VydmVycykpO3JldHVybiBlLm9ic2VydmVycyYmKGw9bC5jb25jYXQoZS5vYnNlcnZlcnMpKSxsfWNyZWF0ZWQoKXtzdXBlci5jcmVhdGVkKCk7bGV0IGw9aS5jcmVhdGVkO2lmKGwpZm9yKGxldCBjPTA7YzxsLmxlbmd0aDtjKyspbFtjXS5jYWxsKHRoaXMpfV9yZWdpc3RlcmVkKCl7bGV0IGw9by5wcm90b3R5cGU7aWYoIWwuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIixsKSkpe2wuX19oYXNSZWdpc3RlckZpbmlzaGVkPSEwLHN1cGVyLl9yZWdpc3RlcmVkKCkscHAmJmEobCk7bGV0IGM9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHU9aS5iZWZvcmVSZWdpc3RlcjtpZih1KWZvcihsZXQgaD0wO2g8dS5sZW5ndGg7aCsrKXVbaF0uY2FsbChjKTtpZih1PWkucmVnaXN0ZXJlZCx1KWZvcihsZXQgaD0wO2g8dS5sZW5ndGg7aCsrKXVbaF0uY2FsbChjKX19X2FwcGx5TGlzdGVuZXJzKCl7c3VwZXIuX2FwcGx5TGlzdGVuZXJzKCk7bGV0IGw9aS5saXN0ZW5lcnM7aWYobClmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrKyl7bGV0IHU9bFtjXTtpZih1KWZvcihsZXQgaCBpbiB1KXRoaXMuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcyxoLHVbaF0pfX1fZW5zdXJlQXR0cmlidXRlcygpe2xldCBsPWkuaG9zdEF0dHJpYnV0ZXM7aWYobClmb3IobGV0IGM9bC5sZW5ndGgtMTtjPj0wO2MtLSl7bGV0IHU9bFtjXTtmb3IobGV0IGggaW4gdSl0aGlzLl9lbnN1cmVBdHRyaWJ1dGUoaCx1W2hdKX1zdXBlci5fZW5zdXJlQXR0cmlidXRlcygpfXJlYWR5KCl7c3VwZXIucmVhZHkoKTtsZXQgbD1pLnJlYWR5O2lmKGwpZm9yKGxldCBjPTA7YzxsLmxlbmd0aDtjKyspbFtjXS5jYWxsKHRoaXMpfWF0dGFjaGVkKCl7c3VwZXIuYXR0YWNoZWQoKTtsZXQgbD1pLmF0dGFjaGVkO2lmKGwpZm9yKGxldCBjPTA7YzxsLmxlbmd0aDtjKyspbFtjXS5jYWxsKHRoaXMpfWRldGFjaGVkKCl7c3VwZXIuZGV0YWNoZWQoKTtsZXQgbD1pLmRldGFjaGVkO2lmKGwpZm9yKGxldCBjPTA7YzxsLmxlbmd0aDtjKyspbFtjXS5jYWxsKHRoaXMpfWF0dHJpYnV0ZUNoYW5nZWQobCxjLHUpe3N1cGVyLmF0dHJpYnV0ZUNoYW5nZWQoKTtsZXQgaD1pLmF0dHJpYnV0ZUNoYW5nZWQ7aWYoaClmb3IobGV0IGY9MDtmPGgubGVuZ3RoO2YrKyloW2ZdLmNhbGwodGhpcyxsLGMsdSl9fWlmKHIpe0FycmF5LmlzQXJyYXkocil8fChyPVtyXSk7bGV0IHM9dC5wcm90b3R5cGUuYmVoYXZpb3JzO249a2d0KHIsbnVsbCxzKSxvLnByb3RvdHlwZS5iZWhhdmlvcnM9cz9zLmNvbmNhdChyKTpufWxldCBhPXM9PntuJiZxeGUocyxuLGkpLExndChzLGUsaSxQZ3QpfTtyZXR1cm4gcHB8fGEoby5wcm90b3R5cGUpLG8uZ2VuZXJhdGVkRnJvbT1lLG99dmFyIGw5PWZ1bmN0aW9uKGUsdCl7ZXx8Y29uc29sZS53YXJuKCJQb2x5bWVyLkNsYXNzIHJlcXVpcmVzIGBpbmZvYCBhcmd1bWVudCIpO2xldCByPXQ/dChBZ3QpOkFndDtyZXR1cm4gcj1SZ3QoZSxyLGUuYmVoYXZpb3JzKSxyLmlzPXIucHJvdG90eXBlLmlzPWUuaXMscn07dmFyIFl0PWZ1bmN0aW9uKGUpe2xldCB0O3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIj90PWU6dD1ZdC5DbGFzcyhlKSxlLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyYmKHQucHJvdG90eXBlLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcz1lLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyksY3VzdG9tRWxlbWVudHMuZGVmaW5lKHQuaXMsdCksdH07WXQuQ2xhc3M9bDk7ZnVuY3Rpb24gdFcoZSx0LHIsbixpKXtsZXQgbztpJiYobz10eXBlb2Ygcj09Im9iamVjdCImJnIhPT1udWxsLG8mJihuPWUuX19kYXRhVGVtcFt0XSkpO2xldCBhPW4hPT1yJiYobj09PW58fHI9PT1yKTtyZXR1cm4gbyYmYSYmKGUuX19kYXRhVGVtcFt0XT1yKSxhfXZhciBxeD1ObihlPT57Y2xhc3MgdCBleHRlbmRzIGV7X3Nob3VsZFByb3BlcnR5Q2hhbmdlKG4saSxvKXtyZXR1cm4gdFcodGhpcyxuLGksbywhMCl9fXJldHVybiB0fSksYzk9Tm4oZT0+e2NsYXNzIHQgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdXRhYmxlRGF0YTpCb29sZWFufX1fc2hvdWxkUHJvcGVydHlDaGFuZ2UobixpLG8pe3JldHVybiB0Vyh0aGlzLG4saSxvLHRoaXMubXV0YWJsZURhdGEpfX1yZXR1cm4gdH0pO3F4Ll9tdXRhYmxlUHJvcGVydHlDaGFuZ2U9dFc7dmFyIGVXPW51bGw7ZnVuY3Rpb24gclcoKXtyZXR1cm4gZVd9clcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSFRNTFRlbXBsYXRlRWxlbWVudC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyVyx3cml0YWJsZTohMH19KTt2YXIgRGd0PXVfKHJXKSxHeGU9cXgoRGd0KTtmdW5jdGlvbiBXeGUoZSx0KXtlVz1lLE9iamVjdC5zZXRQcm90b3R5cGVPZihlLHQucHJvdG90eXBlKSxuZXcgdCxlVz1udWxsfXZhciBZeGU9dV8oY2xhc3N7fSk7ZnVuY3Rpb24gblcoZSx0KXtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl7bGV0IG49dFtyXTtpZihCb29sZWFuKGUpIT1Cb29sZWFuKG4uX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fKSlpZihuLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpZT8obi5fX3BvbHltZXJUZXh0Q29udGVudF9fPW4udGV4dENvbnRlbnQsbi50ZXh0Q29udGVudD0iIik6bi50ZXh0Q29udGVudD1uLl9fcG9seW1lclRleHRDb250ZW50X187ZWxzZSBpZihuLmxvY2FsTmFtZT09PSJzbG90IilpZihlKW4uX19wb2x5bWVyUmVwbGFjZWRfXz1kb2N1bWVudC5jcmVhdGVDb21tZW50KCJoaWRkZW4tc2xvdCIpLHVlKHVlKG4pLnBhcmVudE5vZGUpLnJlcGxhY2VDaGlsZChuLl9fcG9seW1lclJlcGxhY2VkX18sbik7ZWxzZXtsZXQgaT1uLl9fcG9seW1lclJlcGxhY2VkX187aSYmdWUodWUoaSkucGFyZW50Tm9kZSkucmVwbGFjZUNoaWxkKG4saSl9ZWxzZSBuLnN0eWxlJiYoZT8obi5fX3BvbHltZXJEaXNwbGF5X189bi5zdHlsZS5kaXNwbGF5LG4uc3R5bGUuZGlzcGxheT0ibm9uZSIpOm4uc3R5bGUuZGlzcGxheT1uLl9fcG9seW1lckRpc3BsYXlfXyk7bi5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX189ZSxuLl9zaG93SGlkZUNoaWxkcmVuJiZuLl9zaG93SGlkZUNoaWxkcmVuKGUpfX12YXIgeGg9Y2xhc3MgZXh0ZW5kcyBZeGV7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9jb25maWd1cmVQcm9wZXJ0aWVzKHQpLHRoaXMucm9vdD10aGlzLl9zdGFtcFRlbXBsYXRlKHRoaXMuX19kYXRhSG9zdCk7bGV0IHI9W107dGhpcy5jaGlsZHJlbj1yO2ZvcihsZXQgaT10aGlzLnJvb3QuZmlyc3RDaGlsZDtpO2k9aS5uZXh0U2libGluZylyLnB1c2goaSksaS5fX3RlbXBsYXRpemVJbnN0YW5jZT10aGlzO3RoaXMuX190ZW1wbGF0aXplT3duZXImJnRoaXMuX190ZW1wbGF0aXplT3duZXIuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fJiZ0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCEwKTtsZXQgbj10aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnM7KHQmJm4uaW5zdGFuY2VQcm9wc3x8IW4uaW5zdGFuY2VQcm9wcykmJnRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX1fY29uZmlndXJlUHJvcGVydGllcyh0KXtpZih0aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnMuZm9yd2FyZEhvc3RQcm9wKWZvcihsZXQgbiBpbiB0aGlzLl9faG9zdFByb3BzKXRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eShuLHRoaXMuX19kYXRhSG9zdFsiX2hvc3RfIituXSk7Zm9yKGxldCBuIGluIHQpdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KG4sdFtuXSl9Zm9yd2FyZEhvc3RQcm9wKHQscil7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHQsciwhMSwhMCkmJnRoaXMuX19kYXRhSG9zdC5fZW5xdWV1ZUNsaWVudCh0aGlzKX1fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LHIsbil7aWYodGhpcy5fbWV0aG9kSG9zdCYmdGhpcy5fX3RlbXBsYXRpemVPcHRpb25zLnBhcmVudE1vZGVsKXRoaXMuX21ldGhvZEhvc3QuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxyLGk9PntpLm1vZGVsPXRoaXMsbihpKX0pO2Vsc2V7bGV0IGk9dGhpcy5fX2RhdGFIb3N0Ll9fZGF0YUhvc3Q7aSYmaS5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LHIsbil9fV9zaG93SGlkZUNoaWxkcmVuKHQpe25XKHQsdGhpcy5jaGlsZHJlbil9X3NldFVubWFuYWdlZFByb3BlcnR5VG9Ob2RlKHQscixuKXt0Ll9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fXyYmdC5ub2RlVHlwZT09Tm9kZS5URVhUX05PREUmJnI9PSJ0ZXh0Q29udGVudCI/dC5fX3BvbHltZXJUZXh0Q29udGVudF9fPW46c3VwZXIuX3NldFVubWFuYWdlZFByb3BlcnR5VG9Ob2RlKHQscixuKX1nZXQgcGFyZW50TW9kZWwoKXtsZXQgdD10aGlzLl9fcGFyZW50TW9kZWw7aWYoIXQpe2xldCByO3Q9dGhpcztkbyB0PXQuX19kYXRhSG9zdC5fX2RhdGFIb3N0O3doaWxlKChyPXQuX190ZW1wbGF0aXplT3B0aW9ucykmJiFyLnBhcmVudE1vZGVsKTt0aGlzLl9fcGFyZW50TW9kZWw9dH1yZXR1cm4gdH1kaXNwYXRjaEV2ZW50KHQpe3JldHVybiEwfX07eGgucHJvdG90eXBlLl9fZGF0YUhvc3Q7eGgucHJvdG90eXBlLl9fdGVtcGxhdGl6ZU9wdGlvbnM7eGgucHJvdG90eXBlLl9tZXRob2RIb3N0O3hoLnByb3RvdHlwZS5fX3RlbXBsYXRpemVPd25lcjt4aC5wcm90b3R5cGUuX19ob3N0UHJvcHM7dmFyIGp4ZT1xeCh4aCk7ZnVuY3Rpb24gTmd0KGUpe2xldCB0PWUuX19kYXRhSG9zdDtyZXR1cm4gdCYmdC5fbWV0aG9kSG9zdHx8dH1mdW5jdGlvbiBYeGUoZSx0LHIpe2xldCBuPXIubXV0YWJsZURhdGE/anhlOnhoO0psLm1peGluJiYobj1KbC5taXhpbihuKSk7bGV0IGk9Y2xhc3MgZXh0ZW5kcyBue307cmV0dXJuIGkucHJvdG90eXBlLl9fdGVtcGxhdGl6ZU9wdGlvbnM9cixpLnByb3RvdHlwZS5fYmluZFRlbXBsYXRlKGUpLFp4ZShpLGUsdCxyKSxpfWZ1bmN0aW9uICR4ZShlLHQscixuKXtsZXQgaT1yLmZvcndhcmRIb3N0UHJvcDtpZihpJiZ0Lmhhc0hvc3RQcm9wcyl7bGV0IG89ZS5sb2NhbE5hbWU9PSJ0ZW1wbGF0ZSIsYT10LnRlbXBsYXRpemVUZW1wbGF0ZUNsYXNzO2lmKCFhKXtpZihvKXtsZXQgbD1yLm11dGFibGVEYXRhP0d4ZTpEZ3Q7Y2xhc3MgYyBleHRlbmRzIGx7fWE9dC50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcz1jfWVsc2V7bGV0IGw9ZS5jb25zdHJ1Y3RvcjtjbGFzcyBjIGV4dGVuZHMgbHt9YT10LnRlbXBsYXRpemVUZW1wbGF0ZUNsYXNzPWN9bGV0IHM9dC5ob3N0UHJvcHM7Zm9yKGxldCBsIGluIHMpYS5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KCJfaG9zdF8iK2wsYS5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLlBST1BBR0FURSx7Zm46S3hlKGwsaSl9KSxhLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkoIl9ob3N0XyIrbCk7QUkmJm4mJnRiZSh0LHIsbil9aWYoZS5fX2RhdGFQcm90byYmT2JqZWN0LmFzc2lnbihlLl9fZGF0YSxlLl9fZGF0YVByb3RvKSxvKVd4ZShlLGEpLGUuX19kYXRhVGVtcD17fSxlLl9fZGF0YVBlbmRpbmc9bnVsbCxlLl9fZGF0YU9sZD1udWxsLGUuX2VuYWJsZVByb3BlcnRpZXMoKTtlbHNle09iamVjdC5zZXRQcm90b3R5cGVPZihlLGEucHJvdG90eXBlKTtsZXQgcz10Lmhvc3RQcm9wcztmb3IobGV0IGwgaW4gcylpZihsPSJfaG9zdF8iK2wsbCBpbiBlKXtsZXQgYz1lW2xdO2RlbGV0ZSBlW2xdLGUuX19kYXRhW2xdPWN9fX19ZnVuY3Rpb24gS3hlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4saSxvKXt0LmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixpLnN1YnN0cmluZyg2KSxvW2ldKX19ZnVuY3Rpb24gWnhlKGUsdCxyLG4pe2xldCBpPXIuaG9zdFByb3BzfHx7fTtmb3IobGV0IG8gaW4gbi5pbnN0YW5jZVByb3BzKXtkZWxldGUgaVtvXTtsZXQgYT1uLm5vdGlmeUluc3RhbmNlUHJvcDthJiZlLnByb3RvdHlwZS5fYWRkUHJvcGVydHlFZmZlY3QobyxlLnByb3RvdHlwZS5QUk9QRVJUWV9FRkZFQ1RfVFlQRVMuTk9USUZZLHtmbjpKeGUobyxhKX0pfWlmKG4uZm9yd2FyZEhvc3RQcm9wJiZ0Ll9fZGF0YUhvc3QpZm9yKGxldCBvIGluIGkpci5oYXNIb3N0UHJvcHN8fChyLmhhc0hvc3RQcm9wcz0hMCksZS5wcm90b3R5cGUuX2FkZFByb3BlcnR5RWZmZWN0KG8sZS5wcm90b3R5cGUuUFJPUEVSVFlfRUZGRUNUX1RZUEVTLk5PVElGWSx7Zm46UXhlKCl9KX1mdW5jdGlvbiBKeGUoZSx0KXtyZXR1cm4gZnVuY3Rpb24obixpLG8pe3QuY2FsbChuLl9fdGVtcGxhdGl6ZU93bmVyLG4saSxvW2ldKX19ZnVuY3Rpb24gUXhlKCl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXt0Ll9fZGF0YUhvc3QuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aCgiX2hvc3RfIityLG5bcl0sITAsITApfX1mdW5jdGlvbiBKbChlLHQscil7aWYobnUmJiFOZ3QoZSkpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogdGVtcGxhdGUgb3duZXIgbm90IHRydXN0ZWQiKTtpZihyPXJ8fHt9LGUuX190ZW1wbGF0aXplT3duZXIpdGhyb3cgbmV3IEVycm9yKCJBIDx0ZW1wbGF0ZT4gY2FuIG9ubHkgYmUgdGVtcGxhdGl6ZWQgb25jZSIpO2UuX190ZW1wbGF0aXplT3duZXI9dDtsZXQgaT0odD90LmNvbnN0cnVjdG9yOnhoKS5fcGFyc2VUZW1wbGF0ZShlKSxvPWkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M7b3x8KG89WHhlKGUsaSxyKSxpLnRlbXBsYXRpemVJbnN0YW5jZUNsYXNzPW8pO2xldCBhPU5ndChlKTskeGUoZSxpLHIsYSk7bGV0IHM9Y2xhc3MgZXh0ZW5kcyBve307cmV0dXJuIHMucHJvdG90eXBlLl9tZXRob2RIb3N0PWEscy5wcm90b3R5cGUuX19kYXRhSG9zdD1lLHMucHJvdG90eXBlLl9fdGVtcGxhdGl6ZU93bmVyPXQscy5wcm90b3R5cGUuX19ob3N0UHJvcHM9aS5ob3N0UHJvcHMscz1zLHN9ZnVuY3Rpb24gdGJlKGUsdCxyKXtsZXQgbj1yLmNvbnN0cnVjdG9yLl9wcm9wZXJ0aWVzLHtwcm9wZXJ0eUVmZmVjdHM6aX09ZSx7aW5zdGFuY2VQcm9wczpvfT10O2ZvcihsZXQgYSBpbiBpKWlmKCFuW2FdJiYhKG8mJm9bYV0pKXtsZXQgcz1pW2FdO2ZvcihsZXQgbD0wO2w8cy5sZW5ndGg7bCsrKXtsZXR7cGFydDpjfT1zW2xdLmluZm87aWYoIShjLnNpZ25hdHVyZSYmYy5zaWduYXR1cmUuc3RhdGljKSl7Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHthfScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApO2JyZWFrfX19fWZ1bmN0aW9uIHU5KGUsdCl7bGV0IHI7Zm9yKDt0OylpZihyPXQuX19kYXRhSG9zdD90OnQuX190ZW1wbGF0aXplSW5zdGFuY2UpaWYoci5fX2RhdGFIb3N0IT1lKXQ9ci5fX2RhdGFIb3N0O2Vsc2UgcmV0dXJuIHI7ZWxzZSB0PXVlKHQpLnBhcmVudE5vZGU7cmV0dXJuIG51bGx9dmFyIE9ndD17dGVtcGxhdGl6ZShlLHQpe3RoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGU9ZSx0aGlzLmN0b3I9SmwoZSx0aGlzLHttdXRhYmxlRGF0YTpCb29sZWFuKHQpLHBhcmVudE1vZGVsOnRoaXMuX3BhcmVudE1vZGVsLGluc3RhbmNlUHJvcHM6dGhpcy5faW5zdGFuY2VQcm9wcyxmb3J3YXJkSG9zdFByb3A6dGhpcy5fZm9yd2FyZEhvc3RQcm9wVjIsbm90aWZ5SW5zdGFuY2VQcm9wOnRoaXMuX25vdGlmeUluc3RhbmNlUHJvcFYyfSl9LHN0YW1wKGUpe3JldHVybiBuZXcgdGhpcy5jdG9yKGUpfSxtb2RlbEZvckVsZW1lbnQoZSl7cmV0dXJuIHU5KHRoaXMuX3RlbXBsYXRpemVyVGVtcGxhdGUsZSl9fTt2YXIgemd0PSExO2Z1bmN0aW9uIEd4KCl7aWYocHAmJiFjXyl7aWYoIXpndCl7emd0PSEwO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7ZS50ZXh0Q29udGVudD0iZG9tLWJpbmQsZG9tLWlmLGRvbS1yZXBlYXR7ZGlzcGxheTpub25lO30iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZSl9cmV0dXJuITB9cmV0dXJuITF9dmFyIGViZT1faChjOSh1XyhIVE1MRWxlbWVudCkpKSxpVz1jbGFzcyBleHRlbmRzIGViZXtzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVyblsibXV0YWJsZS1kYXRhIl19Y29uc3RydWN0b3IoKXtpZihzdXBlcigpLG51KXRocm93IG5ldyBFcnJvcigic3RyaWN0VGVtcGxhdGVQb2xpY3k6IGRvbS1iaW5kIG5vdCBhbGxvd2VkIik7dGhpcy5yb290PW51bGwsdGhpcy4kPW51bGwsdGhpcy5fX2NoaWxkcmVuPW51bGx9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQscixuLGkpe3RoaXMubXV0YWJsZURhdGE9ITB9Y29ubmVjdGVkQ2FsbGJhY2soKXtHeCgpfHwodGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5yZW5kZXIoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3RoaXMuX19yZW1vdmVDaGlsZHJlbigpfV9faW5zZXJ0Q2hpbGRyZW4oKXt1ZSh1ZSh0aGlzKS5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUodGhpcy5yb290LHRoaXMpfV9fcmVtb3ZlQ2hpbGRyZW4oKXtpZih0aGlzLl9fY2hpbGRyZW4pZm9yKGxldCB0PTA7dDx0aGlzLl9fY2hpbGRyZW4ubGVuZ3RoO3QrKyl0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5fX2NoaWxkcmVuW3RdKX1yZW5kZXIoKXtsZXQgdDtpZighdGhpcy5fX2NoaWxkcmVuKXtpZih0PXR8fHRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSwhdCl7bGV0IHI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCk9PntpZih0PXRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSx0KXIuZGlzY29ubmVjdCgpLHRoaXMucmVuZGVyKCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoImRvbS1iaW5kIHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpfSk7ci5vYnNlcnZlKHRoaXMse2NoaWxkTGlzdDohMH0pO3JldHVybn10aGlzLnJvb3Q9dGhpcy5fc3RhbXBUZW1wbGF0ZSh0KSx0aGlzLiQ9dGhpcy5yb290LiQsdGhpcy5fX2NoaWxkcmVuPVtdO2ZvcihsZXQgcj10aGlzLnJvb3QuZmlyc3RDaGlsZDtyO3I9ci5uZXh0U2libGluZyl0aGlzLl9fY2hpbGRyZW5bdGhpcy5fX2NoaWxkcmVuLmxlbmd0aF09cjt0aGlzLl9lbmFibGVQcm9wZXJ0aWVzKCl9dGhpcy5fX2luc2VydENoaWxkcmVuKCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZG9tLWNoYW5nZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9fTtjdXN0b21FbGVtZW50cy5kZWZpbmUoImRvbS1iaW5kIixpVyk7dmFyIHJiZT1jOShtdCksaDk9Y2xhc3MgZXh0ZW5kcyByYmV7c3RhdGljIGdldCBpcygpe3JldHVybiJkb20tcmVwZWF0In1zdGF0aWMgZ2V0IHRlbXBsYXRlKCl7cmV0dXJuIG51bGx9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOnt0eXBlOkFycmF5fSxhczp7dHlwZTpTdHJpbmcsdmFsdWU6Iml0ZW0ifSxpbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaW5kZXgifSxpdGVtc0luZGV4QXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtc0luZGV4In0sc29ydDp7dHlwZTpGdW5jdGlvbixvYnNlcnZlcjoiX19zb3J0Q2hhbmdlZCJ9LGZpbHRlcjp7dHlwZTpGdW5jdGlvbixvYnNlcnZlcjoiX19maWx0ZXJDaGFuZ2VkIn0sb2JzZXJ2ZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9fb2JzZXJ2ZUNoYW5nZWQifSxkZWxheTpOdW1iZXIscmVuZGVyZWRJdGVtQ291bnQ6e3R5cGU6TnVtYmVyLG5vdGlmeTohSE0scmVhZE9ubHk6ITB9LGluaXRpYWxDb3VudDp7dHlwZTpOdW1iZXJ9LHRhcmdldEZyYW1lcmF0ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MjB9LF90YXJnZXRGcmFtZVRpbWU6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfX2NvbXB1dGVGcmFtZVRpbWUodGFyZ2V0RnJhbWVyYXRlKSJ9LG5vdGlmeURvbUNoYW5nZTp7dHlwZTpCb29sZWFufSxyZXVzZUNodW5rZWRJbnN0YW5jZXM6e3R5cGU6Qm9vbGVhbn19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfX2l0ZW1zQ2hhbmdlZChpdGVtcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faW5zdGFuY2VzPVtdLHRoaXMuX19yZW5kZXJEZWJvdW5jZXI9bnVsbCx0aGlzLl9faXRlbXNJZHhUb0luc3RJZHg9e30sdGhpcy5fX2NodW5rQ291bnQ9bnVsbCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPW51bGwsdGhpcy5fX2l0ZW1zQXJyYXlDaGFuZ2VkPSExLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9ITEsdGhpcy5fX3Nob3VsZENvbnRpbnVlQ2h1bmtpbmc9ITEsdGhpcy5fX2NodW5raW5nSWQ9MCx0aGlzLl9fc29ydEZuPW51bGwsdGhpcy5fX2ZpbHRlckZuPW51bGwsdGhpcy5fX29ic2VydmVQYXRocz1udWxsLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2lzRGV0YWNoZWQ9ITAsdGhpcy50ZW1wbGF0ZT1udWxsLHRoaXMuX3RlbXBsYXRlSW5mb31kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fX2lzRGV0YWNoZWQ9ITA7Zm9yKGxldCB0PTA7dDx0aGlzLl9faW5zdGFuY2VzLmxlbmd0aDt0KyspdGhpcy5fX2RldGFjaEluc3RhbmNlKHQpfWNvbm5lY3RlZENhbGxiYWNrKCl7aWYoc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSxHeCgpfHwodGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIiksdGhpcy5fX2lzRGV0YWNoZWQpe3RoaXMuX19pc0RldGFjaGVkPSExO2xldCB0PXVlKHVlKHRoaXMpLnBhcmVudE5vZGUpO2ZvcihsZXQgcj0wO3I8dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7cisrKXRoaXMuX19hdHRhY2hJbnN0YW5jZShyLHQpfX1fX2Vuc3VyZVRlbXBsYXRpemVkKCl7aWYoIXRoaXMuX19jdG9yKXtsZXQgdD10aGlzLHI9dGhpcy50ZW1wbGF0ZT10Ll90ZW1wbGF0ZUluZm8/dDp0aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7aWYoIXIpe2xldCBpPW5ldyBNdXRhdGlvbk9ic2VydmVyKCgpPT57aWYodGhpcy5xdWVyeVNlbGVjdG9yKCJ0ZW1wbGF0ZSIpKWkuZGlzY29ubmVjdCgpLHRoaXMuX19yZW5kZXIoKTtlbHNlIHRocm93IG5ldyBFcnJvcigiZG9tLXJlcGVhdCByZXF1aXJlcyBhIDx0ZW1wbGF0ZT4gY2hpbGQiKX0pO3JldHVybiBpLm9ic2VydmUodGhpcyx7Y2hpbGRMaXN0OiEwfSksITF9bGV0IG49e307blt0aGlzLmFzXT0hMCxuW3RoaXMuaW5kZXhBc109ITAsblt0aGlzLml0ZW1zSW5kZXhBc109ITAsdGhpcy5fX2N0b3I9Smwocix0aGlzLHttdXRhYmxlRGF0YTp0aGlzLm11dGFibGVEYXRhLHBhcmVudE1vZGVsOiEwLGluc3RhbmNlUHJvcHM6bixmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24oaSxvKXtsZXQgYT10aGlzLl9faW5zdGFuY2VzO2ZvcihsZXQgcz0wLGw7czxhLmxlbmd0aCYmKGw9YVtzXSk7cysrKWwuZm9yd2FyZEhvc3RQcm9wKGksbyl9LG5vdGlmeUluc3RhbmNlUHJvcDpmdW5jdGlvbihpLG8sYSl7aWYoUkkodGhpcy5hcyxvKSl7bGV0IHM9aVt0aGlzLml0ZW1zSW5kZXhBc107bz09dGhpcy5hcyYmKHRoaXMuaXRlbXNbc109YSk7bGV0IGw9ZHAodGhpcy5hcyxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7c31gLG8pO3RoaXMubm90aWZ5UGF0aChsLGEpfX19KX1yZXR1cm4hMH1fX2dldE1ldGhvZEhvc3QoKXtyZXR1cm4gdGhpcy5fX2RhdGFIb3N0Ll9tZXRob2RIb3N0fHx0aGlzLl9fZGF0YUhvc3R9X19mdW5jdGlvbkZyb21Qcm9wZXJ0eVZhbHVlKHQpe2lmKHR5cGVvZiB0PT0ic3RyaW5nIil7bGV0IHI9dCxuPXRoaXMuX19nZXRNZXRob2RIb3N0KCk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5bcl0uYXBwbHkobixhcmd1bWVudHMpfX1yZXR1cm4gdH1fX3NvcnRDaGFuZ2VkKHQpe3RoaXMuX19zb3J0Rm49dGhpcy5fX2Z1bmN0aW9uRnJvbVByb3BlcnR5VmFsdWUodCksdGhpcy5pdGVtcyYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpfV9fZmlsdGVyQ2hhbmdlZCh0KXt0aGlzLl9fZmlsdGVyRm49dGhpcy5fX2Z1bmN0aW9uRnJvbVByb3BlcnR5VmFsdWUodCksdGhpcy5pdGVtcyYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpfV9fY29tcHV0ZUZyYW1lVGltZSh0KXtyZXR1cm4gTWF0aC5jZWlsKDFlMy90KX1fX29ic2VydmVDaGFuZ2VkKCl7dGhpcy5fX29ic2VydmVQYXRocz10aGlzLm9ic2VydmUmJnRoaXMub2JzZXJ2ZS5yZXBsYWNlKCIuKiIsIi4iKS5zcGxpdCgiICIpfV9faGFuZGxlT2JzZXJ2ZWRQYXRocyh0KXtpZih0aGlzLl9fc29ydEZufHx0aGlzLl9fZmlsdGVyRm4pe2lmKCF0KXRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLHRoaXMuZGVsYXkpO2Vsc2UgaWYodGhpcy5fX29ic2VydmVQYXRocyl7bGV0IHI9dGhpcy5fX29ic2VydmVQYXRocztmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rKyl0LmluZGV4T2YocltuXSk9PT0wJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcix0aGlzLmRlbGF5KX19fV9faXRlbXNDaGFuZ2VkKHQpe3RoaXMuaXRlbXMmJiFBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpJiZjb25zb2xlLndhcm4oImRvbS1yZXBlYXQgZXhwZWN0ZWQgYXJyYXkgZm9yIGBpdGVtc2AsIGZvdW5kIix0aGlzLml0ZW1zKSx0aGlzLl9faGFuZGxlSXRlbVBhdGgodC5wYXRoLHQudmFsdWUpfHwodC5wYXRoPT09Iml0ZW1zIiYmKHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZD0hMCksdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpKX1fX2RlYm91bmNlUmVuZGVyKHQscj0wKXt0aGlzLl9fcmVuZGVyRGVib3VuY2VyPXNyLmRlYm91bmNlKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIscj4wP3BvLmFmdGVyKHIpOmNpLHQuYmluZCh0aGlzKSksS2wodGhpcy5fX3JlbmRlckRlYm91bmNlcil9cmVuZGVyKCl7dGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpLHVpKCl9X19yZW5kZXIoKXtpZighdGhpcy5fX2Vuc3VyZVRlbXBsYXRpemVkKCkpcmV0dXJuO2xldCB0PXRoaXMuaXRlbXN8fFtdLHI9dGhpcy5fX3NvcnRBbmRGaWx0ZXJJdGVtcyh0KSxuPXRoaXMuX19jYWxjdWxhdGVMaW1pdChyLmxlbmd0aCk7dGhpcy5fX3VwZGF0ZUluc3RhbmNlcyh0LG4sciksdGhpcy5pbml0aWFsQ291bnQmJih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rfHx0aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZykmJihjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fY2h1bmtpbmdJZCksdGhpcy5fX2NodW5raW5nSWQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT50aGlzLl9fY29udGludWVDaHVua2luZygpKSksdGhpcy5fc2V0UmVuZGVyZWRJdGVtQ291bnQodGhpcy5fX2luc3RhbmNlcy5sZW5ndGgpLCghSE18fHRoaXMubm90aWZ5RG9tQ2hhbmdlKSYmdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiZG9tLWNoYW5nZSIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9X19zb3J0QW5kRmlsdGVySXRlbXModCl7bGV0IHI9bmV3IEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyW25dPW47cmV0dXJuIHRoaXMuX19maWx0ZXJGbiYmKHI9ci5maWx0ZXIoKG4saSxvKT0+dGhpcy5fX2ZpbHRlckZuKHRbbl0saSxvKSkpLHRoaXMuX19zb3J0Rm4mJnIuc29ydCgobixpKT0+dGhpcy5fX3NvcnRGbih0W25dLHRbaV0pKSxyfV9fY2FsY3VsYXRlTGltaXQodCl7bGV0IHI9dCxuPXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoO2lmKHRoaXMuaW5pdGlhbENvdW50KXtsZXQgaTshdGhpcy5fX2NodW5rQ291bnR8fHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZCYmIXRoaXMucmV1c2VDaHVua2VkSW5zdGFuY2VzPyhyPU1hdGgubWluKHQsdGhpcy5pbml0aWFsQ291bnQpLGk9TWF0aC5tYXgoci1uLDApLHRoaXMuX19jaHVua0NvdW50PWl8fDEpOihpPU1hdGgubWluKE1hdGgubWF4KHQtbiwwKSx0aGlzLl9fY2h1bmtDb3VudCkscj1NYXRoLm1pbihuK2ksdCkpLHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bms9aT09PXRoaXMuX19jaHVua0NvdW50LHRoaXMuX19zaG91bGRDb250aW51ZUNodW5raW5nPXI8dCx0aGlzLl9fcmVuZGVyU3RhcnRUaW1lPXBlcmZvcm1hbmNlLm5vdygpfXJldHVybiB0aGlzLl9faXRlbXNBcnJheUNoYW5nZWQ9ITEscn1fX2NvbnRpbnVlQ2h1bmtpbmcoKXtpZih0aGlzLl9fc2hvdWxkTWVhc3VyZUNodW5rKXtsZXQgdD1wZXJmb3JtYW5jZS5ub3coKS10aGlzLl9fcmVuZGVyU3RhcnRUaW1lLHI9dGhpcy5fdGFyZ2V0RnJhbWVUaW1lL3Q7dGhpcy5fX2NodW5rQ291bnQ9TWF0aC5yb3VuZCh0aGlzLl9fY2h1bmtDb3VudCpyKXx8MX10aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZyYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpfV9fdXBkYXRlSW5zdGFuY2VzKHQscixuKXtsZXQgaT10aGlzLl9faXRlbXNJZHhUb0luc3RJZHg9e30sbztmb3Iobz0wO288cjtvKyspe2xldCBhPXRoaXMuX19pbnN0YW5jZXNbb10scz1uW29dLGw9dFtzXTtpW3NdPW8sYT8oYS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuYXMsbCksYS5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuaW5kZXhBcyxvKSxhLl9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5pdGVtc0luZGV4QXMscyksYS5fZmx1c2hQcm9wZXJ0aWVzKCkpOnRoaXMuX19pbnNlcnRJbnN0YW5jZShsLG8scyl9Zm9yKGxldCBhPXRoaXMuX19pbnN0YW5jZXMubGVuZ3RoLTE7YT49bzthLS0pdGhpcy5fX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKGEpfV9fZGV0YWNoSW5zdGFuY2UodCl7bGV0IHI9dGhpcy5fX2luc3RhbmNlc1t0XSxuPXVlKHIucm9vdCk7Zm9yKGxldCBpPTA7aTxyLmNoaWxkcmVuLmxlbmd0aDtpKyspe2xldCBvPXIuY2hpbGRyZW5baV07bi5hcHBlbmRDaGlsZChvKX1yZXR1cm4gcn1fX2F0dGFjaEluc3RhbmNlKHQscil7bGV0IG49dGhpcy5fX2luc3RhbmNlc1t0XTtyLmluc2VydEJlZm9yZShuLnJvb3QsdGhpcyl9X19kZXRhY2hBbmRSZW1vdmVJbnN0YW5jZSh0KXt0aGlzLl9fZGV0YWNoSW5zdGFuY2UodCksdGhpcy5fX2luc3RhbmNlcy5zcGxpY2UodCwxKX1fX3N0YW1wSW5zdGFuY2UodCxyLG4pe2xldCBpPXt9O3JldHVybiBpW3RoaXMuYXNdPXQsaVt0aGlzLmluZGV4QXNdPXIsaVt0aGlzLml0ZW1zSW5kZXhBc109bixuZXcgdGhpcy5fX2N0b3IoaSl9X19pbnNlcnRJbnN0YW5jZSh0LHIsbil7bGV0IGk9dGhpcy5fX3N0YW1wSW5zdGFuY2UodCxyLG4pLG89dGhpcy5fX2luc3RhbmNlc1tyKzFdLGE9bz9vLmNoaWxkcmVuWzBdOnRoaXM7cmV0dXJuIHVlKHVlKHRoaXMpLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZShpLnJvb3QsYSksdGhpcy5fX2luc3RhbmNlc1tyXT1pLGl9X3Nob3dIaWRlQ2hpbGRyZW4odCl7Zm9yKGxldCByPTA7cjx0aGlzLl9faW5zdGFuY2VzLmxlbmd0aDtyKyspdGhpcy5fX2luc3RhbmNlc1tyXS5fc2hvd0hpZGVDaGlsZHJlbih0KX1fX2hhbmRsZUl0ZW1QYXRoKHQscil7bGV0IG49dC5zbGljZSg2KSxpPW4uaW5kZXhPZigiLiIpLG89aTwwP246bi5zdWJzdHJpbmcoMCxpKTtpZihvPT1wYXJzZUludChvLDEwKSl7bGV0IGE9aTwwPyIiOm4uc3Vic3RyaW5nKGkrMSk7dGhpcy5fX2hhbmRsZU9ic2VydmVkUGF0aHMoYSk7bGV0IHM9dGhpcy5fX2l0ZW1zSWR4VG9JbnN0SWR4W29dLGw9dGhpcy5fX2luc3RhbmNlc1tzXTtpZihsKXtsZXQgYz10aGlzLmFzKyhhPyIuIithOiIiKTtsLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoYyxyLCExLCEwKSxsLl9mbHVzaFByb3BlcnRpZXMoKX1yZXR1cm4hMH19aXRlbUZvckVsZW1lbnQodCl7bGV0IHI9dGhpcy5tb2RlbEZvckVsZW1lbnQodCk7cmV0dXJuIHImJnJbdGhpcy5hc119aW5kZXhGb3JFbGVtZW50KHQpe2xldCByPXRoaXMubW9kZWxGb3JFbGVtZW50KHQpO3JldHVybiByJiZyW3RoaXMuaW5kZXhBc119bW9kZWxGb3JFbGVtZW50KHQpe3JldHVybiB1OSh0aGlzLnRlbXBsYXRlLHQpfX07Y3VzdG9tRWxlbWVudHMuZGVmaW5lKGg5LmlzLGg5KTt2YXIgZjk9Y2xhc3MgZXh0ZW5kcyBtdHtzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuImRvbS1pZiJ9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBudWxsfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpZjp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfX2RlYm91bmNlUmVuZGVyIn0scmVzdGFtcDp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfX2RlYm91bmNlUmVuZGVyIn0sbm90aWZ5RG9tQ2hhbmdlOnt0eXBlOkJvb2xlYW59fX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fX3JlbmRlckRlYm91bmNlcj1udWxsLHRoaXMuX2xhc3RJZj0hMSx0aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fXz0hMSx0aGlzLl9fdGVtcGxhdGUsdGhpcy5fdGVtcGxhdGVJbmZvfV9fZGVib3VuY2VSZW5kZXIoKXt0aGlzLl9fcmVuZGVyRGVib3VuY2VyPXNyLmRlYm91bmNlKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIsY2ksKCk9PnRoaXMuX19yZW5kZXIoKSksS2wodGhpcy5fX3JlbmRlckRlYm91bmNlcil9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO2xldCB0PXVlKHRoaXMpLnBhcmVudE5vZGU7KCF0fHx0Lm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUmJiF1ZSh0KS5ob3N0KSYmdGhpcy5fX3RlYXJkb3duSW5zdGFuY2UoKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksR3goKXx8KHRoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHRoaXMuaWYmJnRoaXMuX19kZWJvdW5jZVJlbmRlcigpfV9fZW5zdXJlVGVtcGxhdGUoKXtpZighdGhpcy5fX3RlbXBsYXRlKXtsZXQgdD10aGlzLHI9dC5fdGVtcGxhdGVJbmZvP3Q6dWUodCkucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtpZighcil7bGV0IG49bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCk9PntpZih1ZSh0aGlzKS5xdWVyeVNlbGVjdG9yKCJ0ZW1wbGF0ZSIpKW4uZGlzY29ubmVjdCgpLHRoaXMuX19yZW5kZXIoKTtlbHNlIHRocm93IG5ldyBFcnJvcigiZG9tLWlmIHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpfSk7cmV0dXJuIG4ub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KSwhMX10aGlzLl9fdGVtcGxhdGU9cn1yZXR1cm4hMH1fX2Vuc3VyZUluc3RhbmNlKCl7bGV0IHQ9dWUodGhpcykucGFyZW50Tm9kZTtpZih0aGlzLl9faGFzSW5zdGFuY2UoKSl7bGV0IHI9dGhpcy5fX2dldEluc3RhbmNlTm9kZXMoKTtpZihyJiZyLmxlbmd0aCYmdWUodGhpcykucHJldmlvdXNTaWJsaW5nIT09cltyLmxlbmd0aC0xXSlmb3IobGV0IGk9MCxvO2k8ci5sZW5ndGgmJihvPXJbaV0pO2krKyl1ZSh0KS5pbnNlcnRCZWZvcmUobyx0aGlzKX1lbHNle2lmKCF0fHwhdGhpcy5fX2Vuc3VyZVRlbXBsYXRlKCkpcmV0dXJuITE7dGhpcy5fX2NyZWF0ZUFuZEluc2VydEluc3RhbmNlKHQpfXJldHVybiEwfXJlbmRlcigpe3VpKCl9X19yZW5kZXIoKXtpZih0aGlzLmlmKXtpZighdGhpcy5fX2Vuc3VyZUluc3RhbmNlKCkpcmV0dXJufWVsc2UgdGhpcy5yZXN0YW1wJiZ0aGlzLl9fdGVhcmRvd25JbnN0YW5jZSgpO3RoaXMuX3Nob3dIaWRlQ2hpbGRyZW4oKSwoIUhNfHx0aGlzLm5vdGlmeURvbUNoYW5nZSkmJnRoaXMuaWYhPXRoaXMuX2xhc3RJZiYmKHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRvbS1jaGFuZ2UiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpLHRoaXMuX2xhc3RJZj10aGlzLmlmKX1fX2hhc0luc3RhbmNlKCl7fV9fZ2V0SW5zdGFuY2VOb2Rlcygpe31fX2NyZWF0ZUFuZEluc2VydEluc3RhbmNlKHQpe31fX3RlYXJkb3duSW5zdGFuY2UoKXt9X3Nob3dIaWRlQ2hpbGRyZW4oKXt9fSxvVz1jbGFzcyBleHRlbmRzIGY5e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faW5zdGFuY2U9bnVsbCx0aGlzLl9fc3luY0luZm89bnVsbH1fX2hhc0luc3RhbmNlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fX2luc3RhbmNlKX1fX2dldEluc3RhbmNlTm9kZXMoKXtyZXR1cm4gdGhpcy5fX2luc3RhbmNlLnRlbXBsYXRlSW5mby5jaGlsZE5vZGVzfV9fY3JlYXRlQW5kSW5zZXJ0SW5zdGFuY2UodCl7bGV0IHI9dGhpcy5fX2RhdGFIb3N0fHx0aGlzO2lmKG51JiYhdGhpcy5fX2RhdGFIb3N0KXRocm93IG5ldyBFcnJvcigic3RyaWN0VGVtcGxhdGVQb2xpY3k6IHRlbXBsYXRlIG93bmVyIG5vdCB0cnVzdGVkIik7bGV0IG49ci5fYmluZFRlbXBsYXRlKHRoaXMuX190ZW1wbGF0ZSwhMCk7bi5ydW5FZmZlY3RzPShpLG8sYSk9PntsZXQgcz10aGlzLl9fc3luY0luZm87aWYodGhpcy5pZilzJiYodGhpcy5fX3N5bmNJbmZvPW51bGwsdGhpcy5fc2hvd0hpZGVDaGlsZHJlbigpLG89T2JqZWN0LmFzc2lnbihzLmNoYW5nZWRQcm9wcyxvKSksaShvLGEpO2Vsc2UgaWYodGhpcy5fX2luc3RhbmNlKWlmKHN8fChzPXRoaXMuX19zeW5jSW5mbz17cnVuRWZmZWN0czppLGNoYW5nZWRQcm9wczp7fX0pLGEpZm9yKGxldCBsIGluIG8pe2xldCBjPW91KGwpO3MuY2hhbmdlZFByb3BzW2NdPXRoaXMuX19kYXRhSG9zdFtjXX1lbHNlIE9iamVjdC5hc3NpZ24ocy5jaGFuZ2VkUHJvcHMsbyl9LHRoaXMuX19pbnN0YW5jZT1yLl9zdGFtcFRlbXBsYXRlKHRoaXMuX190ZW1wbGF0ZSxuKSx1ZSh0KS5pbnNlcnRCZWZvcmUodGhpcy5fX2luc3RhbmNlLHRoaXMpfV9fc3luY0hvc3RQcm9wZXJ0aWVzKCl7bGV0IHQ9dGhpcy5fX3N5bmNJbmZvO3QmJih0aGlzLl9fc3luY0luZm89bnVsbCx0LnJ1bkVmZmVjdHModC5jaGFuZ2VkUHJvcHMsITEpKX1fX3RlYXJkb3duSW5zdGFuY2UoKXtsZXQgdD10aGlzLl9fZGF0YUhvc3R8fHRoaXM7dGhpcy5fX2luc3RhbmNlJiYodC5fcmVtb3ZlQm91bmREb20odGhpcy5fX2luc3RhbmNlKSx0aGlzLl9faW5zdGFuY2U9bnVsbCx0aGlzLl9fc3luY0luZm89bnVsbCl9X3Nob3dIaWRlQ2hpbGRyZW4oKXtsZXQgdD10aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fX3x8IXRoaXMuaWY7dGhpcy5fX2luc3RhbmNlJiZCb29sZWFuKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbikhPT10JiYodGhpcy5fX2luc3RhbmNlLl9faGlkZGVuPXQsblcodCx0aGlzLl9faW5zdGFuY2UudGVtcGxhdGVJbmZvLmNoaWxkTm9kZXMpKSx0fHx0aGlzLl9fc3luY0hvc3RQcm9wZXJ0aWVzKCl9fSxhVz1jbGFzcyBleHRlbmRzIGY5e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fY3Rvcj1udWxsLHRoaXMuX19pbnN0YW5jZT1udWxsLHRoaXMuX19pbnZhbGlkUHJvcHM9bnVsbH1fX2hhc0luc3RhbmNlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5fX2luc3RhbmNlKX1fX2dldEluc3RhbmNlTm9kZXMoKXtyZXR1cm4gdGhpcy5fX2luc3RhbmNlLmNoaWxkcmVufV9fY3JlYXRlQW5kSW5zZXJ0SW5zdGFuY2UodCl7dGhpcy5fX2N0b3J8fCh0aGlzLl9fY3Rvcj1KbCh0aGlzLl9fdGVtcGxhdGUsdGhpcyx7bXV0YWJsZURhdGE6ITAsZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHIsbil7dGhpcy5fX2luc3RhbmNlJiYodGhpcy5pZj90aGlzLl9faW5zdGFuY2UuZm9yd2FyZEhvc3RQcm9wKHIsbik6KHRoaXMuX19pbnZhbGlkUHJvcHM9dGhpcy5fX2ludmFsaWRQcm9wc3x8T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9faW52YWxpZFByb3BzW291KHIpXT0hMCkpfX0pKSx0aGlzLl9faW5zdGFuY2U9bmV3IHRoaXMuX19jdG9yLHVlKHQpLmluc2VydEJlZm9yZSh0aGlzLl9faW5zdGFuY2Uucm9vdCx0aGlzKX1fX3RlYXJkb3duSW5zdGFuY2UoKXtpZih0aGlzLl9faW5zdGFuY2Upe2xldCB0PXRoaXMuX19pbnN0YW5jZS5jaGlsZHJlbjtpZih0JiZ0Lmxlbmd0aCl7bGV0IHI9dWUodFswXSkucGFyZW50Tm9kZTtpZihyKXtyPXVlKHIpO2ZvcihsZXQgbj0wLGk7bjx0Lmxlbmd0aCYmKGk9dFtuXSk7bisrKXIucmVtb3ZlQ2hpbGQoaSl9fXRoaXMuX19pbnZhbGlkUHJvcHM9bnVsbCx0aGlzLl9faW5zdGFuY2U9bnVsbH19X19zeW5jSG9zdFByb3BlcnRpZXMoKXtsZXQgdD10aGlzLl9faW52YWxpZFByb3BzO2lmKHQpe3RoaXMuX19pbnZhbGlkUHJvcHM9bnVsbDtmb3IobGV0IHIgaW4gdCl0aGlzLl9faW5zdGFuY2UuX3NldFBlbmRpbmdQcm9wZXJ0eShyLHRoaXMuX19kYXRhSG9zdFtyXSk7dGhpcy5fX2luc3RhbmNlLl9mbHVzaFByb3BlcnRpZXMoKX19X3Nob3dIaWRlQ2hpbGRyZW4oKXtsZXQgdD10aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fX3x8IXRoaXMuaWY7dGhpcy5fX2luc3RhbmNlJiZCb29sZWFuKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbikhPT10JiYodGhpcy5fX2luc3RhbmNlLl9faGlkZGVuPXQsdGhpcy5fX2luc3RhbmNlLl9zaG93SGlkZUNoaWxkcmVuKHQpKSx0fHx0aGlzLl9fc3luY0hvc3RQcm9wZXJ0aWVzKCl9fSxGZ3Q9SUk/b1c6YVc7Y3VzdG9tRWxlbWVudHMuZGVmaW5lKEZndC5pcyxGZ3QpO3ZhciBuYmU9Tm4oZT0+e2xldCB0PVNtKGUpO2NsYXNzIHIgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpdGVtczp7dHlwZTpBcnJheX0sbXVsdGk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc2VsZWN0ZWQ6e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LHRvZ2dsZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9fdXBkYXRlU2VsZWN0aW9uKG11bHRpLCBpdGVtcy4qKSJdfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fbGFzdEl0ZW1zPW51bGwsdGhpcy5fX2xhc3RNdWx0aT1udWxsLHRoaXMuX19zZWxlY3RlZE1hcD1udWxsfV9fdXBkYXRlU2VsZWN0aW9uKGksbyl7bGV0IGE9by5wYXRoO2lmKGE9PUpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKSl7bGV0IHM9by5iYXNlfHxbXSxsPXRoaXMuX19sYXN0SXRlbXMsYz10aGlzLl9fbGFzdE11bHRpO2lmKGkhPT1jJiZ0aGlzLmNsZWFyU2VsZWN0aW9uKCksbCl7bGV0IHU9cjkocyxsKTt0aGlzLl9fYXBwbHlTcGxpY2VzKHUpfXRoaXMuX19sYXN0SXRlbXM9cyx0aGlzLl9fbGFzdE11bHRpPWl9ZWxzZSBpZihvLnBhdGg9PWAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uc3BsaWNlc2ApdGhpcy5fX2FwcGx5U3BsaWNlcyhvLnZhbHVlLmluZGV4U3BsaWNlcyk7ZWxzZXtsZXQgcz1hLnNsaWNlKGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uYC5sZW5ndGgpLGw9cGFyc2VJbnQocywxMCk7cy5pbmRleE9mKCIuIik8MCYmcz09bCYmdGhpcy5fX2Rlc2VsZWN0Q2hhbmdlZElkeChsKX19X19hcHBseVNwbGljZXMoaSl7bGV0IG89dGhpcy5fX3NlbGVjdGVkTWFwO2ZvcihsZXQgcz0wO3M8aS5sZW5ndGg7cysrKXtsZXQgbD1pW3NdO28uZm9yRWFjaCgoYyx1KT0+e2M8bC5pbmRleHx8KGM+PWwuaW5kZXgrbC5yZW1vdmVkLmxlbmd0aD9vLnNldCh1LGMrbC5hZGRlZENvdW50LWwucmVtb3ZlZC5sZW5ndGgpOm8uc2V0KHUsLTEpKX0pO2ZvcihsZXQgYz0wO2M8bC5hZGRlZENvdW50O2MrKyl7bGV0IHU9bC5pbmRleCtjO28uaGFzKHRoaXMuaXRlbXNbdV0pJiZvLnNldCh0aGlzLml0ZW1zW3VdLHUpfX10aGlzLl9fdXBkYXRlTGlua3MoKTtsZXQgYT0wO28uZm9yRWFjaCgocyxsKT0+e3M8MD8odGhpcy5tdWx0aT90aGlzLnNwbGljZShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksYSwxKTp0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRJdGVtPW51bGwsby5kZWxldGUobCkpOmErK30pfV9fdXBkYXRlTGlua3MoKXtpZih0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXt9LHRoaXMubXVsdGkpe2xldCBpPTA7dGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2gobz0+e28+PTAmJnRoaXMubGlua1BhdGhzKGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHtvfWAsYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpfS4ke2krK31gKX0pfWVsc2UgdGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2goaT0+e3RoaXMubGlua1BhdGhzKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7aX1gKSx0aGlzLmxpbmtQYXRocyhKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZEl0ZW0iLHRoaXMpLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHtpfWApfSl9Y2xlYXJTZWxlY3Rpb24oKXt0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXt9LHRoaXMuX19zZWxlY3RlZE1hcD1uZXcgTWFwLHRoaXMuc2VsZWN0ZWQ9dGhpcy5tdWx0aT9bXTpudWxsLHRoaXMuc2VsZWN0ZWRJdGVtPW51bGx9aXNTZWxlY3RlZChpKXtyZXR1cm4gdGhpcy5fX3NlbGVjdGVkTWFwLmhhcyhpKX1pc0luZGV4U2VsZWN0ZWQoaSl7cmV0dXJuIHRoaXMuaXNTZWxlY3RlZCh0aGlzLml0ZW1zW2ldKX1fX2Rlc2VsZWN0Q2hhbmdlZElkeChpKXtsZXQgbz10aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChpKTtpZihvPj0wKXtsZXQgYT0wO3RoaXMuX19zZWxlY3RlZE1hcC5mb3JFYWNoKChzLGwpPT57bz09YSsrJiZ0aGlzLmRlc2VsZWN0KGwpfSl9fV9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChpKXtsZXQgbz10aGlzLl9fZGF0YUxpbmtlZFBhdGhzW2Ake0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHtpfWBdO2lmKG8pcmV0dXJuIHBhcnNlSW50KG8uc2xpY2UoYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpfS5gLmxlbmd0aCksMTApfWRlc2VsZWN0KGkpe2xldCBvPXRoaXMuX19zZWxlY3RlZE1hcC5nZXQoaSk7aWYobz49MCl7dGhpcy5fX3NlbGVjdGVkTWFwLmRlbGV0ZShpKTtsZXQgYTt0aGlzLm11bHRpJiYoYT10aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChvKSksdGhpcy5fX3VwZGF0ZUxpbmtzKCksdGhpcy5tdWx0aT90aGlzLnNwbGljZShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksYSwxKTp0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRJdGVtPW51bGx9fWRlc2VsZWN0SW5kZXgoaSl7dGhpcy5kZXNlbGVjdCh0aGlzLml0ZW1zW2ldKX1zZWxlY3QoaSl7dGhpcy5zZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YoaSkpfXNlbGVjdEluZGV4KGkpe2xldCBvPXRoaXMuaXRlbXNbaV07dGhpcy5pc1NlbGVjdGVkKG8pP3RoaXMudG9nZ2xlJiZ0aGlzLmRlc2VsZWN0SW5kZXgoaSk6KHRoaXMubXVsdGl8fHRoaXMuX19zZWxlY3RlZE1hcC5jbGVhcigpLHRoaXMuX19zZWxlY3RlZE1hcC5zZXQobyxpKSx0aGlzLl9fdXBkYXRlTGlua3MoKSx0aGlzLm11bHRpP3RoaXMucHVzaChKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksbyk6dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkSXRlbT1vKX19cmV0dXJuIHJ9KTt2YXIgaWJlPW5iZShtdCkscDk9Y2xhc3MgZXh0ZW5kcyBpYmV7c3RhdGljIGdldCBpcygpe3JldHVybiJhcnJheS1zZWxlY3RvciJ9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBudWxsfX07Y3VzdG9tRWxlbWVudHMuZGVmaW5lKHA5LmlzLHA5KTt2YXIgZDk9bmV3ICRsO3dpbmRvdy5TaGFkeUNTU3x8KHdpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKGUsdCxyKXt9LHByZXBhcmVUZW1wbGF0ZURvbShlLHQpe30scHJlcGFyZVRlbXBsYXRlU3R5bGVzKGUsdCxyKXt9LHN0eWxlU3VidHJlZShlLHQpe2Q5LnByb2Nlc3NTdHlsZXMoKSxLTShlLHQpfSxzdHlsZUVsZW1lbnQoZSl7ZDkucHJvY2Vzc1N0eWxlcygpfSxzdHlsZURvY3VtZW50KGUpe2Q5LnByb2Nlc3NTdHlsZXMoKSxLTShkb2N1bWVudC5ib2R5LGUpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWUoZSx0KXtyZXR1cm4gR0koZSx0KX0sZmx1c2hDdXN0b21TdHlsZXMoKXt9LG5hdGl2ZUNzczpSeCxuYXRpdmVTaGFkb3c6aF8sY3NzQnVpbGQ6TW0sZGlzYWJsZVJ1bnRpbWU6VUl9KTt3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9ZDk7dmFyIEJndD0iaW5jbHVkZSIsb2JlPXdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSxzVz1jbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9zdHlsZT1udWxsLG9iZS5hZGRDdXN0b21TdHlsZSh0aGlzKX1nZXRTdHlsZSgpe2lmKHRoaXMuX3N0eWxlKXJldHVybiB0aGlzLl9zdHlsZTtsZXQgdD10aGlzLnF1ZXJ5U2VsZWN0b3IoInN0eWxlIik7aWYoIXQpcmV0dXJuIG51bGw7dGhpcy5fc3R5bGU9dDtsZXQgcj10LmdldEF0dHJpYnV0ZShCZ3QpO3JldHVybiByJiYodC5yZW1vdmVBdHRyaWJ1dGUoQmd0KSx0LnRleHRDb250ZW50PUtkdChyKSt0LnRleHRDb250ZW50KSx0aGlzLm93bmVyRG9jdW1lbnQhPT13aW5kb3cuZG9jdW1lbnQmJndpbmRvdy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMpLHRoaXMuX3N0eWxlfX07d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgiY3VzdG9tLXN0eWxlIixzVyk7dmFyIEhndDtIZ3Q9cXguX211dGFibGVQcm9wZXJ0eUNoYW5nZTt2YXIgVmd0PXtwcm9wZXJ0aWVzOnttdXRhYmxlRGF0YTpCb29sZWFufSxfc2hvdWxkUHJvcGVydHlDaGFuZ2UoZSx0LHIpe3JldHVybiBIZ3QodGhpcyxlLHQscix0aGlzLm11dGFibGVEYXRhKX19O3ZhciBOYT1HdChIVE1MRWxlbWVudCkucHJvdG90eXBlO3ZhciBtOT1uZXcgU2V0LFpzPXtwcm9wZXJ0aWVzOntfcGFyZW50UmVzaXphYmxlOnt0eXBlOk9iamVjdCxvYnNlcnZlcjoiX3BhcmVudFJlc2l6YWJsZUNoYW5nZWQifSxfbm90aWZ5aW5nRGVzY2VuZGFudDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sbGlzdGVuZXJzOnsiaXJvbi1yZXF1ZXN0LXJlc2l6ZS1ub3RpZmljYXRpb25zIjoiX29uSXJvblJlcXVlc3RSZXNpemVOb3RpZmljYXRpb25zIn0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzPVtdLHRoaXMuX2JvdW5kTm90aWZ5UmVzaXplPXRoaXMubm90aWZ5UmVzaXplLmJpbmQodGhpcyksdGhpcy5fYm91bmRPbkRlc2NlbmRhbnRJcm9uUmVzaXplPXRoaXMuX29uRGVzY2VuZGFudElyb25SZXNpemUuYmluZCh0aGlzKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9ucygpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3BhcmVudFJlc2l6YWJsZT90aGlzLl9wYXJlbnRSZXNpemFibGUuc3RvcFJlc2l6ZU5vdGlmaWNhdGlvbnNGb3IodGhpcyk6KG05LmRlbGV0ZSh0aGlzKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZSkpLHRoaXMuX3BhcmVudFJlc2l6YWJsZT1udWxsfSxub3RpZnlSZXNpemU6ZnVuY3Rpb24oKXshdGhpcy5pc0F0dGFjaGVkfHwodGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuZm9yRWFjaChmdW5jdGlvbihlKXt0aGlzLnJlc2l6ZXJTaG91bGROb3RpZnkoZSkmJnRoaXMuX25vdGlmeURlc2NlbmRhbnQoZSl9LHRoaXMpLHRoaXMuX2ZpcmVSZXNpemUoKSl9LGFzc2lnblBhcmVudFJlc2l6YWJsZTpmdW5jdGlvbihlKXt0aGlzLl9wYXJlbnRSZXNpemFibGUmJnRoaXMuX3BhcmVudFJlc2l6YWJsZS5zdG9wUmVzaXplTm90aWZpY2F0aW9uc0Zvcih0aGlzKSx0aGlzLl9wYXJlbnRSZXNpemFibGU9ZSxlJiZlLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5pbmRleE9mKHRoaXMpPT09LTEmJihlLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5wdXNoKHRoaXMpLGUuX3N1YnNjcmliZUlyb25SZXNpemUodGhpcykpfSxzdG9wUmVzaXplTm90aWZpY2F0aW9uc0ZvcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5pbmRleE9mKGUpO3Q+LTEmJih0aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5zcGxpY2UodCwxKSx0aGlzLl91bnN1YnNjcmliZUlyb25SZXNpemUoZSkpfSxfc3Vic2NyaWJlSXJvblJlc2l6ZTpmdW5jdGlvbihlKXtlLmFkZEV2ZW50TGlzdGVuZXIoImlyb24tcmVzaXplIix0aGlzLl9ib3VuZE9uRGVzY2VuZGFudElyb25SZXNpemUpfSxfdW5zdWJzY3JpYmVJcm9uUmVzaXplOmZ1bmN0aW9uKGUpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZSl9LHJlc2l6ZXJTaG91bGROb3RpZnk6ZnVuY3Rpb24oZSl7cmV0dXJuITB9LF9vbkRlc2NlbmRhbnRJcm9uUmVzaXplOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX25vdGlmeWluZ0Rlc2NlbmRhbnQpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7cmV0dXJufWNffHx0aGlzLl9maXJlUmVzaXplKCl9LF9maXJlUmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJpcm9uLXJlc2l6ZSIsbnVsbCx7bm9kZTp0aGlzLGJ1YmJsZXM6ITF9KX0sX29uSXJvblJlcXVlc3RSZXNpemVOb3RpZmljYXRpb25zOmZ1bmN0aW9uKGUpe3ZhciB0PXp0KGUpLnJvb3RUYXJnZXQ7dCE9PXRoaXMmJih0LmFzc2lnblBhcmVudFJlc2l6YWJsZSh0aGlzKSx0aGlzLl9ub3RpZnlEZXNjZW5kYW50KHQpLGUuc3RvcFByb3BhZ2F0aW9uKCkpfSxfcGFyZW50UmVzaXphYmxlQ2hhbmdlZDpmdW5jdGlvbihlKXtlJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZSl9LF9ub3RpZnlEZXNjZW5kYW50OmZ1bmN0aW9uKGUpeyF0aGlzLmlzQXR0YWNoZWR8fCh0aGlzLl9ub3RpZnlpbmdEZXNjZW5kYW50PSEwLGUubm90aWZ5UmVzaXplKCksdGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD0hMSl9LF9yZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9uczpmdW5jdGlvbigpe2lmKCEhdGhpcy5pc0F0dGFjaGVkKWlmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0ibG9hZGluZyIpe3ZhciBlPXRoaXMuX3JlcXVlc3RSZXNpemVOb3RpZmljYXRpb25zLmJpbmQodGhpcyk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsZnVuY3Rpb24gdCgpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLHQpLGUoKX0pfWVsc2UgdGhpcy5fZmluZFBhcmVudCgpLHRoaXMuX3BhcmVudFJlc2l6YWJsZT90aGlzLl9wYXJlbnRSZXNpemFibGUuX2ludGVyZXN0ZWRSZXNpemFibGVzLmZvckVhY2goZnVuY3Rpb24odCl7dCE9PXRoaXMmJnQuX2ZpbmRQYXJlbnQoKX0sdGhpcyk6KG05LmZvckVhY2goZnVuY3Rpb24odCl7dCE9PXRoaXMmJnQuX2ZpbmRQYXJlbnQoKX0sdGhpcyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fYm91bmROb3RpZnlSZXNpemUpLHRoaXMubm90aWZ5UmVzaXplKCkpfSxfZmluZFBhcmVudDpmdW5jdGlvbigpe3RoaXMuYXNzaWduUGFyZW50UmVzaXphYmxlKG51bGwpLHRoaXMuZmlyZSgiaXJvbi1yZXF1ZXN0LXJlc2l6ZS1ub3RpZmljYXRpb25zIixudWxsLHtub2RlOnRoaXMsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSksdGhpcy5fcGFyZW50UmVzaXphYmxlP205LmRlbGV0ZSh0aGlzKTptOS5hZGQodGhpcyl9fTtZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pcm9uLWNvbGxhcHNlLXRyYW5zaXRpb24tZHVyYXRpb24sIDMwMG1zKTsKICAgICAgICAvKiBTYWZhcmkgMTAgbmVlZHMgdGhpcyBwcm9wZXJ0eSBwcmVmaXhlZCB0byBjb3JyZWN0bHkgYXBwbHkgdGhlIGN1c3RvbSBwcm9wZXJ0eSAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0taXJvbi1jb2xsYXBzZS10cmFuc2l0aW9uLWR1cmF0aW9uLCAzMDBtcyk7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5pcm9uLWNvbGxhcHNlLWNsb3NlZCkgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoLmlyb24tY29sbGFwc2Utb3BlbmVkKSkgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLWNvbGxhcHNlIixiZWhhdmlvcnM6W1pzXSxwcm9wZXJ0aWVzOntob3Jpem9udGFsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9ob3Jpem9udGFsQ2hhbmdlZCJ9LG9wZW5lZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSx0cmFuc2l0aW9uaW5nOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSxub0FuaW1hdGlvbjp7dHlwZTpCb29sZWFufSxfZGVzaXJlZFNpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sZ2V0IGRpbWVuc2lvbigpe3JldHVybiB0aGlzLmhvcml6b250YWw/IndpZHRoIjoiaGVpZ2h0In0sZ2V0IF9kaW1lbnNpb25NYXgoKXtyZXR1cm4gdGhpcy5ob3Jpem9udGFsPyJtYXhXaWR0aCI6Im1heEhlaWdodCJ9LGdldCBfZGltZW5zaW9uTWF4Q3NzKCl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbD8ibWF4LXdpZHRoIjoibWF4LWhlaWdodCJ9LGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJncm91cCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LGxpc3RlbmVyczp7dHJhbnNpdGlvbmVuZDoiX29uVHJhbnNpdGlvbkVuZCJ9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSF0aGlzLm9wZW5lZH0sc2hvdzpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSEwfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITF9LHVwZGF0ZVNpemU6ZnVuY3Rpb24oZSx0KXtlPWU9PT0iYXV0byI/IiI6ZTt2YXIgcj10JiYhdGhpcy5ub0FuaW1hdGlvbiYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9kZXNpcmVkU2l6ZSE9PWU7aWYodGhpcy5fZGVzaXJlZFNpemU9ZSx0aGlzLl91cGRhdGVUcmFuc2l0aW9uKCExKSxyKXt2YXIgbj10aGlzLl9jYWxjU2l6ZSgpO2U9PT0iIiYmKHRoaXMuc3R5bGVbdGhpcy5fZGltZW5zaW9uTWF4XT0iIixlPXRoaXMuX2NhbGNTaXplKCkpLHRoaXMuc3R5bGVbdGhpcy5fZGltZW5zaW9uTWF4XT1uLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuX3VwZGF0ZVRyYW5zaXRpb24oITApLHI9ZSE9PW59dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPWUscnx8dGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxlbmFibGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGUpe05hLl93YXJuKCJgZW5hYmxlVHJhbnNpdGlvbigpYCBpcyBkZXByZWNhdGVkLCB1c2UgYG5vQW5pbWF0aW9uYCBpbnN0ZWFkLiIpLHRoaXMubm9BbmltYXRpb249IWV9LF91cGRhdGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGUpe3RoaXMuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWUmJiF0aGlzLm5vQW5pbWF0aW9uPyIiOiIwcyJ9LF9ob3Jpem9udGFsQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuc3R5bGUudHJhbnNpdGlvblByb3BlcnR5PXRoaXMuX2RpbWVuc2lvbk1heENzczt2YXIgZT10aGlzLl9kaW1lbnNpb25NYXg9PT0ibWF4V2lkdGgiPyJtYXhIZWlnaHQiOiJtYXhXaWR0aCI7dGhpcy5zdHlsZVtlXT0iIix0aGlzLnVwZGF0ZVNpemUodGhpcy5vcGVuZWQ/ImF1dG8iOiIwcHgiLCExKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCF0aGlzLm9wZW5lZCksdGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMCksdGhpcy50b2dnbGVDbGFzcygiaXJvbi1jb2xsYXBzZS1jbG9zZWQiLCExKSx0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLW9wZW5lZCIsITEpLHRoaXMudXBkYXRlU2l6ZSh0aGlzLm9wZW5lZD8iYXV0byI6IjBweCIsITApLHRoaXMub3BlbmVkJiZ0aGlzLmZvY3VzKCl9LF90cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPXRoaXMuX2Rlc2lyZWRTaXplLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2UtY2xvc2VkIiwhdGhpcy5vcGVuZWQpLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2Utb3BlbmVkIix0aGlzLm9wZW5lZCksdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMSksdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9zZXRUcmFuc2l0aW9uaW5nKCExKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbihlKXt6dChlKS5yb290VGFyZ2V0PT09dGhpcyYmdGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxfY2FsY1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmRpbWVuc2lvbl0rInB4In19KTt2YXIgVWd0PVFgCi8qIE1vc3QgY29tbW9uIHVzZWQgZmxleCBzdHlsZXMqLwo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1mbGV4Ij4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbCwKICAgICAgLmxheW91dC52ZXJ0aWNhbCB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuaW5saW5lIHsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgfQoKICAgICAgLmxheW91dC5ob3Jpem9udGFsIHsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQoKICAgICAgLmxheW91dC52ZXJ0aWNhbCB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KCiAgICAgIC5sYXlvdXQud3JhcCB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcDsKICAgICAgICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcDsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQubm8td3JhcCB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuY2VudGVyLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuY2VudGVyLWp1c3RpZmllZCwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmZsZXggewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfQoKICAgICAgLmZsZXgtYXV0byB7CiAgICAgICAgLW1zLWZsZXg6IDEgMSBhdXRvOwogICAgICAgIC13ZWJraXQtZmxleDogMSAxIGF1dG87CiAgICAgICAgZmxleDogMSAxIGF1dG87CiAgICAgIH0KCiAgICAgIC5mbGV4LW5vbmUgewogICAgICAgIC1tcy1mbGV4OiBub25lOwogICAgICAgIC13ZWJraXQtZmxleDogbm9uZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KLyogQmFzaWMgZmxleGJveCByZXZlcnNlIHN0eWxlcyAqLwo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1mbGV4LXJldmVyc2UiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmxheW91dC5ob3Jpem9udGFsLXJldmVyc2UsCiAgICAgIC5sYXlvdXQudmVydGljYWwtcmV2ZXJzZSB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbC1yZXZlcnNlIHsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgfQoKICAgICAgLmxheW91dC52ZXJ0aWNhbC1yZXZlcnNlIHsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgfQoKICAgICAgLmxheW91dC53cmFwLXJldmVyc2UgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KLyogRmxleGJveCBhbGlnbm1lbnQgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1hbGlnbm1lbnQiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLyoqCiAgICAgICAqIEFsaWdubWVudCBpbiBjcm9zcyBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydCB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuY2VudGVyLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuZW5kIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5iYXNlbGluZSB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEFsaWdubWVudCBpbiBtYWluIGF4aXMuCiAgICAgICAqLwogICAgICAubGF5b3V0LnN0YXJ0LWp1c3RpZmllZCB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlci1qdXN0aWZpZWQsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuZW5kLWp1c3RpZmllZCB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZW5kOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAubGF5b3V0LmFyb3VuZC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGRpc3RyaWJ1dGU7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9CgogICAgICAvKioKICAgICAgICogU2VsZiBhbGlnbm1lbnQuCiAgICAgICAqLwogICAgICAuc2VsZi1zdGFydCB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIH0KCiAgICAgIC5zZWxmLWNlbnRlciB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5zZWxmLWVuZCB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5zZWxmLXN0cmV0Y2ggewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICB9CgogICAgICAuc2VsZi1iYXNlbGluZSB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogYmFzZWxpbmU7CiAgICAgICAgYWxpZ24tc2VsZjogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBtdWx0aS1saW5lIGFsaWdubWVudCBpbiBtYWluIGF4aXMuCiAgICAgICAqLwogICAgICAubGF5b3V0LnN0YXJ0LWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogc3RhcnQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuZW5kLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZW5kOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlci1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGNlbnRlcjsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmxheW91dC5iZXR3ZWVuLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazoganVzdGlmeTsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLmxheW91dC5hcm91bmQtYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBkaXN0cmlidXRlOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KLyogTm9uLWZsZXhib3ggcG9zaXRpb25pbmcgaGVscGVyIHN0eWxlcyAqLwo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1mbGV4LWZhY3RvcnMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmZsZXgsCiAgICAgIC5mbGV4LTEgewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfQoKICAgICAgLmZsZXgtMiB7CiAgICAgICAgLW1zLWZsZXg6IDI7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAyOwogICAgICAgIGZsZXg6IDI7CiAgICAgIH0KCiAgICAgIC5mbGV4LTMgewogICAgICAgIC1tcy1mbGV4OiAzOwogICAgICAgIC13ZWJraXQtZmxleDogMzsKICAgICAgICBmbGV4OiAzOwogICAgICB9CgogICAgICAuZmxleC00IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfQoKICAgICAgLmZsZXgtNSB7CiAgICAgICAgLW1zLWZsZXg6IDU7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA1OwogICAgICAgIGZsZXg6IDU7CiAgICAgIH0KCiAgICAgIC5mbGV4LTYgewogICAgICAgIC1tcy1mbGV4OiA2OwogICAgICAgIC13ZWJraXQtZmxleDogNjsKICAgICAgICBmbGV4OiA2OwogICAgICB9CgogICAgICAuZmxleC03IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfQoKICAgICAgLmZsZXgtOCB7CiAgICAgICAgLW1zLWZsZXg6IDg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA4OwogICAgICAgIGZsZXg6IDg7CiAgICAgIH0KCiAgICAgIC5mbGV4LTkgewogICAgICAgIC1tcy1mbGV4OiA5OwogICAgICAgIC13ZWJraXQtZmxleDogOTsKICAgICAgICBmbGV4OiA5OwogICAgICB9CgogICAgICAuZmxleC0xMCB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH0KCiAgICAgIC5mbGV4LTExIHsKICAgICAgICAtbXMtZmxleDogMTE7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxMTsKICAgICAgICBmbGV4OiAxMTsKICAgICAgfQoKICAgICAgLmZsZXgtMTIgewogICAgICAgIC1tcy1mbGV4OiAxMjsKICAgICAgICAtd2Via2l0LWZsZXg6IDEyOwogICAgICAgIGZsZXg6IDEyOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KPGRvbS1tb2R1bGUgaWQ9Imlyb24tcG9zaXRpb25pbmciPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmludmlzaWJsZSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5yZWxhdGl2ZSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuZml0IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICBib2R5LmZ1bGxibGVlZCB7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgIH0KCiAgICAgIC5zY3JvbGwgewogICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgLyogZml4ZWQgcG9zaXRpb24gKi8KICAgICAgLmZpeGVkLWJvdHRvbSwKICAgICAgLmZpeGVkLWxlZnQsCiAgICAgIC5maXhlZC1yaWdodCwKICAgICAgLmZpeGVkLXRvcCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB9CgogICAgICAuZml4ZWQtdG9wIHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgfQoKICAgICAgLmZpeGVkLXJpZ2h0IHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9CgogICAgICAuZml4ZWQtYm90dG9tIHsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgLmZpeGVkLWxlZnQgewogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CmA7VWd0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoVWd0LmNvbnRlbnQpO3ZhciBxZ3Q9UWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBbaGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tbGF5b3V0OiB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1pbmxpbmU6IHsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWhvcml6b250YWw6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaG9yaXpvbnRhbC1yZXZlcnNlOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsLXJldmVyc2U6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcDogewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcC1yZXZlcnNlOiB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LWF1dG86IHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtbm9uZTogewogICAgICAgIC1tcy1mbGV4OiBub25lOwogICAgICAgIC13ZWJraXQtZmxleDogbm9uZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleDogewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtMjogewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0zOiB7CiAgICAgICAgLW1zLWZsZXg6IDM7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAzOwogICAgICAgIGZsZXg6IDM7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTQ6IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtNTogewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC02OiB7CiAgICAgICAgLW1zLWZsZXg6IDY7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA2OwogICAgICAgIGZsZXg6IDY7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTc6IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtODogewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC05OiB7CiAgICAgICAgLW1zLWZsZXg6IDk7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA5OwogICAgICAgIGZsZXg6IDk7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEwOiB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTExOiB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEyOiB7CiAgICAgICAgLW1zLWZsZXg6IDEyOwogICAgICAgIC13ZWJraXQtZmxleDogMTI7CiAgICAgICAgZmxleDogMTI7CiAgICAgIH07CgogICAgICAvKiBhbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcyAqLwoKICAgICAgLS1sYXlvdXQtc3RhcnQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlcjogewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWJhc2VsaW5lOiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfTsKCiAgICAgIC8qIGFsaWdubWVudCBpbiBtYWluIGF4aXMgKi8KCiAgICAgIC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1hcm91bmQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItY2VudGVyOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfTsKCiAgICAgIC8qIHNlbGYgYWxpZ25tZW50ICovCgogICAgICAtLWxheW91dC1zZWxmLXN0YXJ0OiB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zZWxmLWNlbnRlcjogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1lbmQ6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtc3RyZXRjaDogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1iYXNlbGluZTogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9OwoKICAgICAgLyogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzICovCgogICAgICAtLWxheW91dC1zdGFydC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYmV0d2Vlbi1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYXJvdW5kLWFsaWduZWQ6IHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGU7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH07CgogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICAgICAgT3RoZXIgTGF5b3V0CiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAtLWxheW91dC1ibG9jazogewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaW52aXNpYmxlOiB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1yZWxhdGl2ZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpdDogewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zY3JvbGw6IHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH07CgogICAgICAtLWxheW91dC1mdWxsYmxlZWQ6IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfTsKCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCgogICAgICAtLWxheW91dC1maXhlZC10b3A6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1maXhlZC1yaWdodDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtYm90dG9tOiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtbGVmdDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPmA7cWd0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocWd0LmNvbnRlbnQpO3ZhciBHZ3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtHZ3QudGV4dENvbnRlbnQ9IltoaWRkZW5dIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9Ijtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEdndCk7dmFyIG1vPWNsYXNze2NvbnN0cnVjdG9yKHQpe21vWyIgIl0odCksdGhpcy50eXBlPXQmJnQudHlwZXx8ImRlZmF1bHQiLHRoaXMua2V5PXQmJnQua2V5LHQmJiJ2YWx1ZSJpbiB0JiYodGhpcy52YWx1ZT10LnZhbHVlKX1nZXQgdmFsdWUoKXt2YXIgdD10aGlzLnR5cGUscj10aGlzLmtleTtpZih0JiZyKXJldHVybiBtby50eXBlc1t0XSYmbW8udHlwZXNbdF1bcl19c2V0IHZhbHVlKHQpe3ZhciByPXRoaXMudHlwZSxuPXRoaXMua2V5O3ImJm4mJihyPW1vLnR5cGVzW3JdPW1vLnR5cGVzW3JdfHx7fSx0PT1udWxsP2RlbGV0ZSByW25dOnJbbl09dCl9Z2V0IGxpc3QoKXt2YXIgdD10aGlzLnR5cGU7aWYodCl7dmFyIHI9bW8udHlwZXNbdGhpcy50eXBlXTtyZXR1cm4gcj9PYmplY3Qua2V5cyhyKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGFiZVt0aGlzLnR5cGVdW25dfSx0aGlzKTpbXX19YnlLZXkodCl7cmV0dXJuIHRoaXMua2V5PXQsdGhpcy52YWx1ZX19O21vWyIgIl09ZnVuY3Rpb24oKXt9O21vLnR5cGVzPXt9O3ZhciBhYmU9bW8udHlwZXM7WXQoe2lzOiJpcm9uLW1ldGEiLHByb3BlcnRpZXM6e3R5cGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJkZWZhdWx0In0sa2V5Ont0eXBlOlN0cmluZ30sdmFsdWU6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sc2VsZjp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfc2VsZkNoYW5nZWQifSxfX21ldGE6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX19jb21wdXRlTWV0YSh0eXBlLCBrZXksIHZhbHVlKSJ9fSxob3N0QXR0cmlidXRlczp7aGlkZGVuOiEwfSxfX2NvbXB1dGVNZXRhOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1uZXcgbW8oe3R5cGU6ZSxrZXk6dH0pO3JldHVybiByIT09dm9pZCAwJiZyIT09bi52YWx1ZT9uLnZhbHVlPXI6dGhpcy52YWx1ZSE9PW4udmFsdWUmJih0aGlzLnZhbHVlPW4udmFsdWUpLG59LGdldCBsaXN0KCl7cmV0dXJuIHRoaXMuX19tZXRhJiZ0aGlzLl9fbWV0YS5saXN0fSxfc2VsZkNoYW5nZWQ6ZnVuY3Rpb24oZSl7ZSYmKHRoaXMudmFsdWU9dGhpcyl9LGJ5S2V5OmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbW8oe3R5cGU6dGhpcy50eXBlLGtleTplfSkudmFsdWV9fSk7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CgogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICAgIGZpbGw6IHZhcigtLWlyb24taWNvbi1maWxsLWNvbG9yLCBjdXJyZW50Y29sb3IpOwogICAgICAgIHN0cm9rZTogdmFyKC0taXJvbi1pY29uLXN0cm9rZS1jb2xvciwgbm9uZSk7CgogICAgICAgIHdpZHRoOiB2YXIoLS1pcm9uLWljb24td2lkdGgsIDI0cHgpOwogICAgICAgIGhlaWdodDogdmFyKC0taXJvbi1pY29uLWhlaWdodCwgMjRweCk7CiAgICAgICAgQGFwcGx5IC0taXJvbi1pY29uOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CmAsaXM6Imlyb24taWNvbiIscHJvcGVydGllczp7aWNvbjp7dHlwZTpTdHJpbmd9LHRoZW1lOnt0eXBlOlN0cmluZ30sc3JjOnt0eXBlOlN0cmluZ30sX21ldGE6e3ZhbHVlOk5hLmNyZWF0ZSgiaXJvbi1tZXRhIix7dHlwZToiaWNvbnNldCJ9KX19LG9ic2VydmVyczpbIl91cGRhdGVJY29uKF9tZXRhLCBpc0F0dGFjaGVkKSIsIl91cGRhdGVJY29uKHRoZW1lLCBpc0F0dGFjaGVkKSIsIl9zcmNDaGFuZ2VkKHNyYywgaXNBdHRhY2hlZCkiLCJfaWNvbkNoYW5nZWQoaWNvbiwgaXNBdHRhY2hlZCkiXSxfREVGQVVMVF9JQ09OU0VUOiJpY29ucyIsX2ljb25DaGFuZ2VkOmZ1bmN0aW9uKGUpe3ZhciB0PShlfHwiIikuc3BsaXQoIjoiKTt0aGlzLl9pY29uTmFtZT10LnBvcCgpLHRoaXMuX2ljb25zZXROYW1lPXQucG9wKCl8fHRoaXMuX0RFRkFVTFRfSUNPTlNFVCx0aGlzLl91cGRhdGVJY29uKCl9LF9zcmNDaGFuZ2VkOmZ1bmN0aW9uKGUpe3RoaXMuX3VwZGF0ZUljb24oKX0sX3VzZXNJY29uc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaWNvbnx8IXRoaXMuc3JjfSxfdXBkYXRlSWNvbjpmdW5jdGlvbigpe3RoaXMuX3VzZXNJY29uc2V0KCk/KHRoaXMuX2ltZyYmdGhpcy5faW1nLnBhcmVudE5vZGUmJnp0KHRoaXMucm9vdCkucmVtb3ZlQ2hpbGQodGhpcy5faW1nKSx0aGlzLl9pY29uTmFtZT09PSIiP3RoaXMuX2ljb25zZXQmJnRoaXMuX2ljb25zZXQucmVtb3ZlSWNvbih0aGlzKTp0aGlzLl9pY29uc2V0TmFtZSYmdGhpcy5fbWV0YSYmKHRoaXMuX2ljb25zZXQ9dGhpcy5fbWV0YS5ieUtleSh0aGlzLl9pY29uc2V0TmFtZSksdGhpcy5faWNvbnNldD8odGhpcy5faWNvbnNldC5hcHBseUljb24odGhpcyx0aGlzLl9pY29uTmFtZSx0aGlzLnRoZW1lKSx0aGlzLnVubGlzdGVuKHdpbmRvdywiaXJvbi1pY29uc2V0LWFkZGVkIiwiX3VwZGF0ZUljb24iKSk6dGhpcy5saXN0ZW4od2luZG93LCJpcm9uLWljb25zZXQtYWRkZWQiLCJfdXBkYXRlSWNvbiIpKSk6KHRoaXMuX2ljb25zZXQmJnRoaXMuX2ljb25zZXQucmVtb3ZlSWNvbih0aGlzKSx0aGlzLl9pbWd8fCh0aGlzLl9pbWc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIiksdGhpcy5faW1nLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLl9pbWcuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLl9pbWcuZHJhZ2dhYmxlPSExKSx0aGlzLl9pbWcuc3JjPXRoaXMuc3JjLHp0KHRoaXMucm9vdCkuYXBwZW5kQ2hpbGQodGhpcy5faW1nKSl9fSk7WXQoe2lzOiJpcm9uLWljb25zZXQtc3ZnIixwcm9wZXJ0aWVzOntuYW1lOnt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX25hbWVDaGFuZ2VkIn0sc2l6ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MjR9LHJ0bE1pcnJvcmluZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSx1c2VHbG9iYWxSdGxBdHRyaWJ1dGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXRhPW5ldyBtbyh7dHlwZToiaWNvbnNldCIsa2V5Om51bGwsdmFsdWU6bnVsbH0pfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSJ9LGdldEljb25OYW1lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pY29ucz10aGlzLl9jcmVhdGVJY29uTWFwKCksT2JqZWN0LmtleXModGhpcy5faWNvbnMpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5uYW1lKyI6IitlfSx0aGlzKX0sYXBwbHlJY29uOmZ1bmN0aW9uKGUsdCl7dGhpcy5yZW1vdmVJY29uKGUpO3ZhciByPXRoaXMuX2Nsb25lSWNvbih0LHRoaXMucnRsTWlycm9yaW5nJiZ0aGlzLl90YXJnZXRJc1JUTChlKSk7aWYocil7dmFyIG49enQoZS5yb290fHxlKTtyZXR1cm4gbi5pbnNlcnRCZWZvcmUocixuLmNoaWxkTm9kZXNbMF0pLGUuX3N2Z0ljb249cn1yZXR1cm4gbnVsbH0scmVtb3ZlSWNvbjpmdW5jdGlvbihlKXtlLl9zdmdJY29uJiYoenQoZS5yb290fHxlKS5yZW1vdmVDaGlsZChlLl9zdmdJY29uKSxlLl9zdmdJY29uPW51bGwpfSxfdGFyZ2V0SXNSVEw6ZnVuY3Rpb24oZSl7aWYodGhpcy5fX3RhcmdldElzUlRMPT1udWxsKWlmKHRoaXMudXNlR2xvYmFsUnRsQXR0cmlidXRlKXt2YXIgdD1kb2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgiZGlyIik/ZG9jdW1lbnQuYm9keTpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5fX3RhcmdldElzUlRMPXQuZ2V0QXR0cmlidXRlKCJkaXIiKT09PSJydGwifWVsc2UgZSYmZS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFJiYoZT1lLmhvc3QpLHRoaXMuX190YXJnZXRJc1JUTD1lJiZ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKS5kaXJlY3Rpb249PT0icnRsIjtyZXR1cm4gdGhpcy5fX3RhcmdldElzUlRMfSxfbmFtZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXRhLnZhbHVlPW51bGwsdGhpcy5fbWV0YS5rZXk9dGhpcy5uYW1lLHRoaXMuX21ldGEudmFsdWU9dGhpcyx0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy5maXJlKCJpcm9uLWljb25zZXQtYWRkZWQiLHRoaXMse25vZGU6d2luZG93fSl9KX0sX2NyZWF0ZUljb25NYXA6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiB6dCh0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJbaWRdIikuZm9yRWFjaChmdW5jdGlvbih0KXtlW3QuaWRdPXR9KSxlfSxfY2xvbmVJY29uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2ljb25zPXRoaXMuX2ljb25zfHx0aGlzLl9jcmVhdGVJY29uTWFwKCksdGhpcy5fcHJlcGFyZVN2Z0Nsb25lKHRoaXMuX2ljb25zW2VdLHRoaXMuc2l6ZSx0KX0sX3ByZXBhcmVTdmdDbG9uZTpmdW5jdGlvbihlLHQscil7aWYoZSl7dmFyIG49ZS5jbG9uZU5vZGUoITApLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLG89bi5nZXRBdHRyaWJ1dGUoInZpZXdCb3giKXx8IjAgMCAiK3QrIiAiK3QsYT0icG9pbnRlci1ldmVudHM6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyI7cmV0dXJuIHImJm4uaGFzQXR0cmlidXRlKCJtaXJyb3ItaW4tcnRsIikmJihhKz0iLXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLTEsMSk7dHJhbnNmb3JtOnNjYWxlKC0xLDEpO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyOyIpLGkuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IixvKSxpLnNldEF0dHJpYnV0ZSgicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaWRZTWlkIG1lZXQiKSxpLnNldEF0dHJpYnV0ZSgiZm9jdXNhYmxlIiwiZmFsc2UiKSxpLnN0eWxlLmNzc1RleHQ9YSxpLmFwcGVuZENoaWxkKG4pLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKSxpfXJldHVybiBudWxsfX0pO3ZhciBzYmU9UWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJpbWFnZSIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iYWRkLWEtcGhvdG8iPjxwYXRoIGQ9Ik0zIDRWMWgydjNoM3YySDV2M0gzVjZIMFY0aDN6bTMgNlY3aDNWNGg3bDEuODMgMkgyMWMxLjEgMCAyIC45IDIgMnYxMmMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMlYxMGgzem03IDljMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTUtNSAyLjI0LTUgNSAyLjI0IDUgNSA1em0tMy4yLTVjMCAxLjc3IDEuNDMgMy4yIDMuMiAzLjJzMy4yLTEuNDMgMy4yLTMuMi0xLjQzLTMuMi0zLjItMy4yLTMuMiAxLjQzLTMuMiAzLjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLXRvLXBob3RvcyI+PHBhdGggZD0iTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTEgOWgtNHY0aC0ydi00SDlWOWg0VjVoMnY0aDR2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGp1c3QiPjxwYXRoIGQ9Ik0xMiAyQzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMy04YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3Npc3RhbnQiPjxwYXRoIGQ9Ik0xOSAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNGwzIDMgMy0zaDRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTUuMTIgMTAuODhMMTIgMTdsLTEuODgtNC4xMkw2IDExbDQuMTItMS44OEwxMiA1bDEuODggNC4xMkwxOCAxMWwtNC4xMiAxLjg4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lzdGFudC1waG90byI+PHBhdGggZD0iTTE0LjQgNkwxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXVkaW90cmFjayI+PHBhdGggZD0iTTEyIDN2OS4yOGMtLjQ3LS4xNy0uOTctLjI4LTEuNS0uMjhDOC4wMSAxMiA2IDE0LjAxIDYgMTYuNVM4LjAxIDIxIDEwLjUgMjFjMi4zMSAwIDQuMi0xLjc1IDQuNDUtNEgxNVY2aDRWM2gtN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLWNpcmN1bGFyIj48cGF0aCBkPSJNMTAgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXpNNyA5LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zIDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tMy0zYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMy02Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTQgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTEuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTMgNmMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtNGMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0yLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTAtMy41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmx1ci1saW5lYXIiPjxwYXRoIGQ9Ik01IDE3LjVjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjUuNjcgMS41IDEuNSAxLjV6TTkgMTNjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6TTMgMjFoMTh2LTJIM3Yyek01IDkuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTNS44MyA2LjUgNSA2LjUgMy41IDcuMTcgMy41IDggNC4xNyA5LjUgNSA5LjV6bTAgNGMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04LS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMyAzdjJoMThWM0gzem0xNCA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0wIDRjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xMyA5Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLW9mZiI+PHBhdGggZD0iTTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptLS4yIDQuNDhsLjIuMDJjLjgzIDAgMS41LS42NyAxLjUtMS41cy0uNjctMS41LTEuNS0xLjUtMS41LjY3LTEuNSAxLjVsLjAyLjJjLjA5LjY3LjYxIDEuMTkgMS4yOCAxLjI4ek0xNCAzLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tNCAwYy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMTEgN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptOCA4Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptLTQgMTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTIuNSA1LjI3bDMuNzggMy43OEw2IDljLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xYzAtLjEtLjAzLS4xOS0uMDYtLjI4bDIuODEgMi44MWMtLjcxLjExLTEuMjUuNzMtMS4yNSAxLjQ3IDAgLjgzLjY3IDEuNSAxLjUgMS41Ljc0IDAgMS4zNi0uNTQgMS40Ny0xLjI1bDIuODEgMi44MWMtLjA5LS4wMy0uMTgtLjA2LS4yOC0uMDYtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMy43OCAzLjc4TDIwIDIwLjIzIDMuNzcgNCAyLjUgNS4yN3pNMTAgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMTEtMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek0zIDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTcgMTFjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDE3Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zLTMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmx1ci1vbiI+PHBhdGggZD0iTTYgMTNjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0tMyAuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgNWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xNSA1LjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtMy41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptLTExIDEwYy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyA3Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0xN2MuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEwIDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA1LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em04IC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLThjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC00Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTMgOC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTQgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCAzLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0tNC0xMmMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTAgOC41Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTQtNC41Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMC00Yy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTEiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIj48L2NpcmNsZT48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTIiPjxwYXRoIGQ9Ik0xMCAyYy0xLjgyIDAtMy41My41LTUgMS4zNUM3Ljk5IDUuMDggMTAgOC4zIDEwIDEycy0yLjAxIDYuOTItNSA4LjY1QzYuNDcgMjEuNSA4LjE4IDIyIDEwIDIyYzUuNTIgMCAxMC00LjQ4IDEwLTEwUzE1LjUyIDIgMTAgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTMiPjxwYXRoIGQ9Ik05IDJjLTEuMDUgMC0yLjA1LjE2LTMgLjQ2IDQuMDYgMS4yNyA3IDUuMDYgNyA5LjU0IDAgNC40OC0yLjk0IDguMjctNyA5LjU0Ljk1LjMgMS45NS40NiAzIC40NiA1LjUyIDAgMTAtNC40OCAxMC0xMFMxNC41MiAyIDkgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTQiPjxwYXRoIGQ9Ik0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5ek0xMiAxOGMtLjg5IDAtMS43NC0uMi0yLjUtLjU1QzExLjU2IDE2LjUgMTMgMTQuNDIgMTMgMTJzLTEuNDQtNC41LTMuNS01LjQ1QzEwLjI2IDYuMiAxMS4xMSA2IDEyIDZjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYnJpZ2h0bmVzcy01Ij48cGF0aCBkPSJNMjAgMTUuMzFMMjMuMzEgMTIgMjAgOC42OVY0aC00LjY5TDEyIC42OSA4LjY5IDRINHY0LjY5TC42OSAxMiA0IDE1LjMxVjIwaDQuNjlMMTIgMjMuMzEgMTUuMzEgMjBIMjB2LTQuNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTYiPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThWNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTciPjxwYXRoIGQ9Ik0yMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OUwyMy4zMSAxMiAyMCA4LjY5ek0xMiAxOGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6bTAtMTBjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyb2tlbi1pbWFnZSI+PHBhdGggZD0iTTIxIDV2Ni41OWwtMy0zLjAxLTQgNC4wMS00LTQtNCA0LTMtMy4wMVY1YzAtMS4xLjktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ6bS0zIDYuNDJsMyAzLjAxVjE5YzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0ydi02LjU4bDMgMi45OSA0LTQgNCA0IDQtMy45OXoiPjwvcGF0aD48L2c+CjxnIGlkPSJicnVzaCI+PHBhdGggZD0iTTcgMTRjLTEuNjYgMC0zIDEuMzQtMyAzIDAgMS4zMS0xLjE2IDItMiAyIC45MiAxLjIyIDIuNDkgMiA0IDIgMi4yMSAwIDQtMS43OSA0LTQgMC0xLjY2LTEuMzQtMy0zLTN6bTEzLjcxLTkuMzdsLTEuMzQtMS4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBMOSAxMi4yNSAxMS43NSAxNWw4Ljk2LTguOTZjLjM5LS4zOS4zOS0xLjAyIDAtMS40MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJidXJzdC1tb2RlIj48cGF0aCBkPSJNMSA1aDJ2MTRIMXptNCAwaDJ2MTRINXptMTcgMEgxMGMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDEyYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXpNMTEgMTdsMi41LTMuMTVMMTUuMjkgMTZsMi41LTMuMjJMMjEgMTdIMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FtZXJhIj48cGF0aCBkPSJNOS40IDEwLjVsNC43Ny04LjI2QzEzLjQ3IDIuMDkgMTIuNzUgMiAxMiAyYy0yLjQgMC00LjYuODUtNi4zMiAyLjI1bDMuNjYgNi4zNS4wNi0uMXpNMjEuNTQgOWMtLjkyLTIuOTItMy4xNS01LjI2LTYtNi4zNEwxMS44OCA5aDkuNjZ6bS4yNiAxaC03LjQ5bC4yOS41IDQuNzYgOC4yNUMyMSAxNi45NyAyMiAxNC42MSAyMiAxMmMwLS42OS0uMDctMS4zNS0uMi0yek04LjU0IDEybC0zLjktNi43NUMzLjAxIDcuMDMgMiA5LjM5IDIgMTJjMCAuNjkuMDcgMS4zNS4yIDJoNy40OWwtMS4xNS0yem0tNi4wOCAzYy45MiAyLjkyIDMuMTUgNS4yNiA2IDYuMzRMMTIuMTIgMTVIMi40NnptMTEuMjcgMGwtMy45IDYuNzZjLjcuMTUgMS40Mi4yNCAyLjE3LjI0IDIuNCAwIDQuNi0uODUgNi4zMi0yLjI1bC0zLjY2LTYuMzUtLjkzIDEuNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtYWx0Ij48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIzLjIiPjwvY2lyY2xlPjxwYXRoIGQ9Ik05IDJMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAySDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1mcm9udCI+PHBhdGggZD0iTTEwIDIwSDV2Mmg1djJsMy0zLTMtM3Yyem00IDB2Mmg1di0yaC01ek0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0xLjk5LjktMS45OSAyUzEwLjkgOCAxMiA4em01LThIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6TTcgMmgxMHYxMC41YzAtMS42Ny0zLjMzLTIuNS01LTIuNXMtNSAuODMtNSAyLjVWMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtcmVhciI+PHBhdGggZD0iTTEwIDIwSDV2Mmg1djJsMy0zLTMtM3Yyem00IDB2Mmg1di0yaC01em0zLTIwSDdDNS45IDAgNSAuOSA1IDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYyYzAtMS4xLS45LTItMi0yem0tNSA2Yy0xLjExIDAtMi0uOS0yLTJzLjg5LTIgMS45OS0yIDIgLjkgMiAyQzE0IDUuMSAxMy4xIDYgMTIgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtcm9sbCI+PHBhdGggZD0iTTE0IDVjMC0xLjEtLjktMi0yLTJoLTFWMmMwLS41NS0uNDUtMS0xLTFINmMtLjU1IDAtMSAuNDUtMSAxdjFINGMtMS4xIDAtMiAuOS0yIDJ2MTVjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yaDhWNWgtOHptLTIgMTNoLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6bTQgOWgtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNlbnRlci1mb2N1cy1zdHJvbmciPjxwYXRoIGQ9Ik0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptLTcgN0gzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNlbnRlci1mb2N1cy13ZWFrIj48cGF0aCBkPSJNNSAxNUgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6TTUgNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ2NGgyVjV6bTE0LTJoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yem0wIDE2aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0ek0xMiA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xsZWN0aW9ucyI+PHBhdGggZD0iTTIyIDE2VjRjMC0xLjEtLjktMi0yLTJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMnptLTExLTRsMi4wMyAyLjcxTDE2IDExbDQgNUg4bDMtNHpNMiA2djE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2SDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29sbGVjdGlvbnMtYm9va21hcmsiPjxwYXRoIGQ9Ik00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTYtNEg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bTAgMTBsLTIuNS0xLjVMMTUgMTJWNGg1djh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29sb3ItbGVucyI+PHBhdGggZD0iTTEyIDNjLTQuOTcgMC05IDQuMDMtOSA5czQuMDMgOSA5IDljLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xvcml6ZSI+PHBhdGggZD0iTTIwLjcxIDUuNjNsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTMuMTIgMy4xMi0xLjkzLTEuOTEtMS40MSAxLjQxIDEuNDIgMS40MkwzIDE2LjI1VjIxaDQuNzVsOC45Mi04LjkyIDEuNDIgMS40MiAxLjQxLTEuNDEtMS45Mi0xLjkyIDMuMTItMy4xMmMuNC0uNC40LTEuMDMuMDEtMS40MnpNNi45MiAxOUw1IDE3LjA4bDguMDYtOC4wNiAxLjkyIDEuOTJMNi45MiAxOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb21wYXJlIj48cGF0aCBkPSJNMTAgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDV2MmgyVjFoLTJ2MnptMCAxNUg1bDUtNnY2em05LTE1aC01djJoNXYxM2wtNS02djloNWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbnRyb2wtcG9pbnQiPjxwYXRoIGQ9Ik0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMCAxMC00LjQ5IDEwLTEwUzE3LjUxIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udHJvbC1wb2ludC1kdXBsaWNhdGUiPjxwYXRoIGQ9Ik0xNiA4aC0ydjNoLTN2MmgzdjNoMnYtM2gzdi0yaC0zek0yIDEyYzAtMi43OSAxLjY0LTUuMiA0LjAxLTYuMzJWMy41MkMyLjUyIDQuNzYgMCA4LjA5IDAgMTJzMi41MiA3LjI0IDYuMDEgOC40OHYtMi4xNkMzLjY0IDE3LjIgMiAxNC43OSAyIDEyem0xMy05Yy00Ljk2IDAtOSA0LjA0LTkgOXM0LjA0IDkgOSA5IDktNC4wNCA5LTktNC4wNC05LTktOXptMCAxNmMtMy44NiAwLTctMy4xNC03LTdzMy4xNC03IDctNyA3IDMuMTQgNyA3LTMuMTQgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcCI+PHBhdGggZD0iTTE3IDE1aDJWN2MwLTEuMS0uOS0yLTItMkg5djJoOHY4ek03IDE3VjFINXY0SDF2Mmg0djEwYzAgMS4xLjkgMiAyIDJoMTB2NGgydi00aDR2LTJIN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLTE2LTkiPjxwYXRoIGQ9Ik0xOSA2SDVjLTEuMSAwLTIgLjktMiAydjhjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEwSDVWOGgxNHY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtMy0yIj48cGF0aCBkPSJNMTkgNEg1Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINVY2aDE0djEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtNS00Ij48cGF0aCBkPSJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtNy01Ij48cGF0aCBkPSJNMTkgN0g1Yy0xLjEgMC0yIC45LTIgMnY2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnptMCA4SDVWOWgxNHY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtZGluIj48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtZnJlZSI+PHBhdGggZD0iTTMgNXY0aDJWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTIgMTBIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00em0xNCA0aC00djJoNGMxLjEgMCAyLS45IDItMnYtNGgtMnY0em0wLTE2aC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLWxhbmRzY2FwZSI+PHBhdGggZD0iTTE5IDVINWMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDEySDVWN2gxNHYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLW9yaWdpbmFsIj48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0em0tNS4wNC02LjcxbC0yLjc1IDMuNTQtMS45Ni0yLjM2TDYuNSAxN2gxMWwtMy41NC00LjcxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtcG9ydHJhaXQiPjxwYXRoIGQ9Ik0xNyAzSDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg3VjVoMTB2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1yb3RhdGUiPjxwYXRoIGQ9Ik03LjQ3IDIxLjQ5QzQuMiAxOS45MyAxLjg2IDE2Ljc2IDEuNSAxM0gwYy41MSA2LjE2IDUuNjYgMTEgMTEuOTUgMTEgLjIzIDAgLjQ0LS4wMi42Ni0uMDNMOC44IDIwLjE1bC0xLjMzIDEuMzR6TTEyLjA1IDBjLS4yMyAwLS40NC4wMi0uNjYuMDRsMy44MSAzLjgxIDEuMzMtMS4zM0MxOS44IDQuMDcgMjIuMTQgNy4yNCAyMi41IDExSDI0Yy0uNTEtNi4xNi01LjY2LTExLTExLjk1LTExek0xNiAxNGgyVjhjMC0xLjExLS45LTItMi0yaC02djJoNnY2em0tOCAyVjRINnYySDR2MmgydjhjMCAxLjEuODkgMiAyIDJoOHYyaDJ2LTJoMnYtMkg4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3Atc3F1YXJlIj48cGF0aCBkPSJNMTggNEg2Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINlY2aDEydjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRlaGF6ZSI+PHBhdGggZD0iTTIgMTUuNXYyaDIwdi0ySDJ6bTAtNXYyaDIwdi0ySDJ6bTAtNXYyaDIwdi0ySDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGV0YWlscyI+PHBhdGggZD0iTTMgNGw5IDE2IDktMTZIM3ptMy4zOCAyaDExLjI1TDEyIDE2IDYuMzggNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJlZGl0Ij48cGF0aCBkPSJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlIj48cGF0aCBkPSJNMTUgMTd2Mmgydi0yaDJ2LTJoLTJ2LTJoLTJ2MmgtMnYyaDJ6bTUtMTVINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek01IDVoNnYySDVWNXptMTUgMTVINEwyMCA0djE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLW5lZy0xIj48cGF0aCBkPSJNNCAxMXYyaDh2LTJINHptMTUgN2gtMlY3LjM4TDE0IDguNFY2LjdMMTguNyA1aC4zdjEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLW5lZy0yIj48cGF0aCBkPSJNMTUuMDUgMTYuMjlsMi44Ni0zLjA3Yy4zOC0uMzkuNzItLjc5IDEuMDQtMS4xOC4zMi0uMzkuNTktLjc4LjgyLTEuMTcuMjMtLjM5LjQxLS43OC41NC0xLjE3cy4xOS0uNzkuMTktMS4xOGMwLS41My0uMDktMS4wMi0uMjctMS40Ni0uMTgtLjQ0LS40NC0uODEtLjc4LTEuMTEtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxLS41MS0uMTYtMS4wOC0uMjQtMS43Mi0uMjQtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIxdi0xLjcxaC01Ljk1ek0yIDExdjJoOHYtMkgyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLXBsdXMtMSI+PHBhdGggZD0iTTEwIDdIOHY0SDR2Mmg0djRoMnYtNGg0di0yaC00Vjd6bTEwIDExaC0yVjcuMzhMMTUgOC40VjYuN0wxOS43IDVoLjN2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtcGx1cy0yIj48cGF0aCBkPSJNMTYuMDUgMTYuMjlsMi44Ni0zLjA3Yy4zOC0uMzkuNzItLjc5IDEuMDQtMS4xOC4zMi0uMzkuNTktLjc4LjgyLTEuMTcuMjMtLjM5LjQxLS43OC41NC0xLjE3LjEzLS4zOS4xOS0uNzkuMTktMS4xOCAwLS41My0uMDktMS4wMi0uMjctMS40Ni0uMTgtLjQ0LS40NC0uODEtLjc4LTEuMTEtLjM0LS4zMS0uNzctLjU0LTEuMjYtLjcxLS41MS0uMTYtMS4wOC0uMjQtMS43Mi0uMjQtLjY5IDAtMS4zMS4xMS0xLjg1LjMyLS41NC4yMS0xIC41MS0xLjM2Ljg4LS4zNy4zNy0uNjUuOC0uODQgMS4zLS4xOC40Ny0uMjcuOTctLjI4IDEuNWgyLjE0Yy4wMS0uMzEuMDUtLjYuMTMtLjg3LjA5LS4yOS4yMy0uNTQuNC0uNzUuMTgtLjIxLjQxLS4zNy42OC0uNDkuMjctLjEyLjYtLjE4Ljk2LS4xOC4zMSAwIC41OC4wNS44MS4xNS4yMy4xLjQzLjI1LjU5LjQzLjE2LjE4LjI4LjQuMzcuNjUuMDguMjUuMTMuNTIuMTMuODEgMCAuMjItLjAzLjQzLS4wOC42NS0uMDYuMjItLjE1LjQ1LS4yOS43LS4xNC4yNS0uMzIuNTMtLjU2LjgzLS4yMy4zLS41Mi42NS0uODggMS4wM2wtNC4xNyA0LjU1VjE4SDIydi0xLjcxaC01Ljk1ek04IDdINnY0SDJ2Mmg0djRoMnYtNGg0di0ySDhWN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBvc3VyZS16ZXJvIj48cGF0aCBkPSJNMTYuMTQgMTIuNWMwIDEtLjEgMS44NS0uMyAyLjU1LS4yLjctLjQ4IDEuMjctLjgzIDEuNy0uMzYuNDQtLjc5Ljc1LTEuMy45NS0uNTEuMi0xLjA3LjMtMS43LjMtLjYyIDAtMS4xOC0uMS0xLjY5LS4zLS41MS0uMi0uOTUtLjUxLTEuMzEtLjk1LS4zNi0uNDQtLjY1LTEuMDEtLjg1LTEuNy0uMi0uNy0uMy0xLjU1LS4zLTIuNTV2LTIuMDRjMC0xIC4xLTEuODUuMy0yLjU1LjItLjcuNDgtMS4yNi44NC0xLjY5LjM2LS40My44LS43NCAxLjMxLS45M0MxMC44MSA1LjEgMTEuMzggNSAxMiA1Yy42MyAwIDEuMTkuMSAxLjcuMjkuNTEuMTkuOTUuNSAxLjMxLjkzLjM2LjQzLjY0Ljk5Ljg0IDEuNjkuMi43LjMgMS41NC4zIDIuNTV2Mi4wNHptLTIuMTEtMi4zNmMwLS42NC0uMDUtMS4xOC0uMTMtMS42Mi0uMDktLjQ0LS4yMi0uNzktLjQtMS4wNi0uMTctLjI3LS4zOS0uNDYtLjY0LS41OC0uMjUtLjEzLS41NC0uMTktLjg2LS4xOS0uMzIgMC0uNjEuMDYtLjg2LjE4cy0uNDcuMzEtLjY0LjU4Yy0uMTcuMjctLjMxLjYyLS40IDEuMDZzLS4xMy45OC0uMTMgMS42MnYyLjY3YzAgLjY0LjA1IDEuMTguMTQgMS42Mi4wOS40NS4yMy44MS40IDEuMDlzLjM5LjQ4LjY0LjYxLjU0LjE5Ljg3LjE5Yy4zMyAwIC42Mi0uMDYuODctLjE5cy40Ni0uMzMuNjMtLjYxYy4xNy0uMjguMy0uNjQuMzktMS4wOS4wOS0uNDUuMTMtLjk5LjEzLTEuNjJ2LTIuNjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyIj48cGF0aCBkPSJNMTUuOTYgMTAuMjlsLTIuNzUgMy41NC0xLjk2LTIuMzZMOC41IDE1aDExbC0zLjU0LTQuNzF6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTEiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTEgMTBoMlY1aC00djJoMnY4em03LTE0SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTIiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tNC00aC00di0yaDJjMS4xIDAgMi0uODkgMi0yVjdjMC0xLjExLS45LTItMi0yaC00djJoNHYyaC0yYy0xLjEgMC0yIC44OS0yIDJ2NGg2di0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci0zIj48cGF0aCBkPSJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNS44MyAwIDEuNS0uNjcgMS41LTEuNVY3YzAtMS4xMS0uOS0yLTItMmgtNHYyaDR2MmgtMnYyaDJ2MmgtNHYyaDRjMS4xIDAgMi0uODkgMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci00Ij48cGF0aCBkPSJNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTEyIDEwaDJWNWgtMnY0aC0yVjVoLTJ2Nmg0djR6bTYtMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNSI+PHBhdGggZD0iTTIxIDFIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE0IDh2LTJjMC0xLjExLS45LTItMi0yaC0yVjdoNFY1aC02djZoNHYyaC00djJoNGMxLjEgMCAyLS44OSAyLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTYiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJjMS4xIDAgMi0uODkgMi0ydi0yYzAtMS4xMS0uOS0yLTItMmgtMlY3aDRWNWgtNGMtMS4xIDAtMiAuODktMiAydjZjMCAxLjExLjkgMiAyIDJ6bTAtNGgydjJoLTJ2LTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTciPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0ybDQtOFY1aC02djJoNGwtNCA4aDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTgiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0em0tOC0yaDJjMS4xIDAgMi0uODkgMi0ydi0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdjMC0xLjExLS45LTItMi0yaC0yYy0xLjEgMC0yIC44OS0yIDJ2MS41YzAgLjgzLjY3IDEuNSAxLjUgMS41LS44MyAwLTEuNS42Ny0xLjUgMS41VjEzYzAgMS4xMS45IDIgMiAyem0wLThoMnYyaC0yVjd6bTAgNGgydjJoLTJ2LTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTkiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0xNSA1aC0yYy0xLjEgMC0yIC44OS0yIDJ2MmMwIDEuMTEuOSAyIDIgMmgydjJoLTR2Mmg0YzEuMSAwIDItLjg5IDItMlY3YzAtMS4xMS0uOS0yLTItMnptMCA0aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci05LXBsdXMiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTEgN1Y4YzAtMS4xMS0uOS0yLTItMmgtMWMtMS4xIDAtMiAuODktMiAydjFjMCAxLjExLjkgMiAyIDJoMXYxSDl2MmgzYzEuMSAwIDItLjg5IDItMnptLTMtM1Y4aDF2MWgtMXptMTAtOEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgOGgtMlY3aC0ydjJoLTJ2MmgydjJoMnYtMmgydjZIN1YzaDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWItYW5kLXciPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmwtNy04djhINWw3LThWNWg3djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1jZW50ZXItZm9jdXMiPjxwYXRoIGQ9Ik01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDljLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1kcmFtYSI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYxIDUuNjQgNS4zNiA4LjA0IDIuMzUgOC4zNiAwIDEwLjkgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0aDJjMC0yLjc2LTEuODYtNS4wOC00LjQtNS43OEM4LjYxIDYuODggMTAuMiA2IDEyIDZjMy4wMyAwIDUuNSAyLjQ3IDUuNSA1LjV2LjVIMTljMS42NSAwIDMgMS4zNSAzIDNzLTEuMzUgMy0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWZyYW1lcyI+PHBhdGggZD0iTTIwIDRoLTRsLTQtNC00IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDRWNmg0LjUybDMuNTItMy41TDE1LjUyIDZIMjB2MTR6TTE4IDhINnYxMGgxMiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1oZHIiPjxwYXRoIGQ9Ik0xNCA2bC0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLW5vbmUiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTgtNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci10aWx0LXNoaWZ0Ij48cGF0aCBkPSJNMTEgNC4wN1YyLjA1Yy0yLjAxLjItMy44NCAxLTUuMzIgMi4yMUw3LjEgNS42OWMxLjExLS44NiAyLjQ0LTEuNDQgMy45LTEuNjJ6bTcuMzIuMTlDMTYuODQgMy4wNSAxNS4wMSAyLjI1IDEzIDIuMDV2Mi4wMmMxLjQ2LjE4IDIuNzkuNzYgMy45IDEuNjJsMS40Mi0xLjQzek0xOS45MyAxMWgyLjAyYy0uMi0yLjAxLTEtMy44NC0yLjIxLTUuMzJMMTguMzEgNy4xYy44NiAxLjExIDEuNDQgMi40NCAxLjYyIDMuOXpNNS42OSA3LjFMNC4yNiA1LjY4QzMuMDUgNy4xNiAyLjI1IDguOTkgMi4wNSAxMWgyLjAyYy4xOC0xLjQ2Ljc2LTIuNzkgMS42Mi0zLjl6TTQuMDcgMTNIMi4wNWMuMiAyLjAxIDEgMy44NCAyLjIxIDUuMzJsMS40My0xLjQzYy0uODYtMS4xLTEuNDQtMi40My0xLjYyLTMuODl6TTE1IDEyYzAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzIDEuMzQgMyAzIDMgMy0xLjM0IDMtM3ptMy4zMSA0LjlsMS40MyAxLjQzYzEuMjEtMS40OCAyLjAxLTMuMzIgMi4yMS01LjMyaC0yLjAyYy0uMTggMS40NS0uNzYgMi43OC0xLjYyIDMuODl6TTEzIDE5LjkzdjIuMDJjMi4wMS0uMiAzLjg0LTEgNS4zMi0yLjIxbC0xLjQzLTEuNDNjLTEuMS44Ni0yLjQzIDEuNDQtMy44OSAxLjYyem0tNy4zMi0uMTlDNy4xNiAyMC45NSA5IDIxLjc1IDExIDIxLjk1di0yLjAyYy0xLjQ2LS4xOC0yLjc5LS43Ni0zLjktMS42MmwtMS40MiAxLjQzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci12aW50YWdlIj48cGF0aCBkPSJNMTguNyAxMi40Yy0uMjgtLjE2LS41Ny0uMjktLjg2LS40LjI5LS4xMS41OC0uMjQuODYtLjQgMS45Mi0xLjExIDIuOTktMy4xMiAzLTUuMTktMS43OS0xLjAzLTQuMDctMS4xMS02IDAtLjI4LjE2LS41NC4zNS0uNzguNTQuMDUtLjMxLjA4LS42My4wOC0uOTUgMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTlDMTAuMjEgMS44NSA5IDMuNzggOSA2YzAgLjMyLjAzLjY0LjA4Ljk1LS4yNC0uMi0uNS0uMzktLjc4LS41NS0xLjkyLTEuMTEtNC4yLTEuMDMtNiAwIDAgMi4wNyAxLjA3IDQuMDggMyA1LjE5LjI4LjE2LjU3LjI5Ljg2LjQtLjI5LjExLS41OC4yNC0uODYuNC0xLjkyIDEuMTEtMi45OSAzLjEyLTMgNS4xOSAxLjc5IDEuMDMgNC4wNyAxLjExIDYgMCAuMjgtLjE2LjU0LS4zNS43OC0uNTQtLjA1LjMyLS4wOC42NC0uMDguOTYgMCAyLjIyIDEuMjEgNC4xNSAzIDUuMTkgMS43OS0xLjA0IDMtMi45NyAzLTUuMTkgMC0uMzItLjAzLS42NC0uMDgtLjk1LjI0LjIuNS4zOC43OC41NCAxLjkyIDEuMTEgNC4yIDEuMDMgNiAwLS4wMS0yLjA3LTEuMDgtNC4wOC0zLTUuMTl6TTEyIDE2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDQtMS43OSA0LTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFyZSI+PHBhdGggZD0iTTcgMTFIMXYyaDZ2LTJ6bTIuMTctMy4yNEw3LjA1IDUuNjQgNS42NCA3LjA1bDIuMTIgMi4xMiAxLjQxLTEuNDF6TTEzIDFoLTJ2NmgyVjF6bTUuMzYgNi4wNWwtMS40MS0xLjQxLTIuMTIgMi4xMiAxLjQxIDEuNDEgMi4xMi0yLjEyek0xNyAxMXYyaDZ2LTJoLTZ6bS01LTJjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zem0yLjgzIDcuMjRsMi4xMiAyLjEyIDEuNDEtMS40MS0yLjEyLTIuMTItMS40MSAxLjQxem0tOS4xOS43MWwxLjQxIDEuNDEgMi4xMi0yLjEyLTEuNDEtMS40MS0yLjEyIDIuMTJ6TTExIDIzaDJ2LTZoLTJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFzaC1hdXRvIj48cGF0aCBkPSJNMyAydjEyaDN2OWw3LTEySDlsNC05SDN6bTE2IDBoLTJsLTMuMiA5aDEuOWwuNy0yaDMuMmwuNyAyaDEuOUwxOSAyem0tMi4xNSA1LjY1TDE4IDRsMS4xNSAzLjY1aC0yLjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxhc2gtb2ZmIj48cGF0aCBkPSJNMy4yNyAzTDIgNC4yN2w1IDVWMTNoM3Y5bDMuNTgtNi4xNEwxNy43MyAyMCAxOSAxOC43MyAzLjI3IDN6TTE3IDEwaC00bDQtOEg3djIuMThsOC40NiA4LjQ2TDE3IDEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXNoLW9uIj48cGF0aCBkPSJNNyAydjExaDN2OWw3LTEyaC00bDQtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwIj48cGF0aCBkPSJNMTUgMjFoMnYtMmgtMnYyem00LTEyaDJWN2gtMnYyek0zIDV2MTRjMCAxLjEuOSAyIDIgMmg0di0ySDVWNWg0VjNINWMtMS4xIDAtMiAuOS0yIDJ6bTE2LTJ2MmgyYzAtMS4xLS45LTItMi0yem0tOCAyMGgyVjFoLTJ2MjJ6bTgtNmgydi0yaC0ydjJ6TTE1IDVoMlYzaC0ydjJ6bTQgOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyYWRpZW50Ij48cGF0aCBkPSJNMTEgOWgydjJoLTJ6bS0yIDJoMnYySDl6bTQgMGgydjJoLTJ6bTItMmgydjJoLTJ6TTcgOWgydjJIN3ptMTItNkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMThIN3YtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTQgMGgtMnYtMmgydjJ6bTItN2gtMnYyaDJ2MmgtMnYtMmgtMnYyaC0ydi0yaC0ydjJIOXYtMkg3djJINXYtMmgydi0ySDVWNWgxNHY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyYWluIj48cGF0aCBkPSJNMTAgMTJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yek02IDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDhjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0xMi04YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptLTQgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJncmlkLW9mZiI+PHBhdGggZD0iTTggNHYxLjQ1bDIgMlY0aDR2NGgtMy40NWwyIDJIMTR2MS40NWwyIDJWMTBoNHY0aC0zLjQ1bDIgMkgyMHYxLjQ1bDIgMlY0YzAtMS4xLS45LTItMi0ySDQuNTVsMiAySDh6bTggMGg0djRoLTRWNHpNMS4yNyAxLjI3TDAgMi41NWwyIDJWMjBjMCAxLjEuOSAyIDIgMmgxNS40NmwyIDIgMS4yNy0xLjI3TDEuMjcgMS4yN3pNMTAgMTIuNTVMMTEuNDUgMTRIMTB2LTEuNDV6bS02LTZMNS40NSA4SDRWNi41NXpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoMy40NWwuNTUuNTVWMTR6bTYgNmgtNHYtNGgzLjQ1bC41NS41NFYyMHptMiAwdi0xLjQ2TDE3LjQ2IDIwSDE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyaWQtb24iPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNOCAyMEg0di00aDR2NHptMC02SDR2LTRoNHY0em0wLTZINFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHptNiAxMmgtNHYtNGg0djR6bTAtNmgtNHYtNGg0djR6bTAtNmgtNFY0aDR2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJoZHItb2ZmIj48cGF0aCBkPSJNMTcuNSAxNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4yLjktLjguOS0xLjR2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY0LjlsMS4xIDEuMWguNHptMC00LjVoMnYxaC0ydi0xem0tNC41IDB2LjRsMS41IDEuNXYtMS45YzAtLjgtLjctMS41LTEuNS0xLjVoLTEuOWwxLjUgMS41aC40em0tMy41LTFsLTctNy0xLjEgMUw2LjkgOWgtLjR2MmgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDh2LTQuOWwxLjUgMS41VjE1aDMuNGw3LjYgNy42IDEuMS0xLjEtMTIuMS0xMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJoZHItb24iPjxwYXRoIGQ9Ik0yMSAxMS41di0xYzAtLjgtLjctMS41LTEuNS0xLjVIMTZ2NmgxLjV2LTJoMS4xbC45IDJIMjFsLS45LTIuMWMuNS0uMy45LS44LjktMS40em0tMS41IDBoLTJ2LTFoMnYxem0tMTMtLjVoLTJWOUgzdjZoMS41di0yLjVoMlYxNUg4VjlINi41djJ6TTEzIDlIOS41djZIMTNjLjggMCAxLjUtLjcgMS41LTEuNXYtM2MwLS44LS43LTEuNS0xLjUtMS41em0wIDQuNWgtMnYtM2gydjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGRyLXN0cm9uZyI+PHBhdGggZD0iTTE3IDZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02ek01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci13ZWFrIj48cGF0aCBkPSJNNSA4Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMTItMmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bTAgMTBjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImhlYWxpbmciPjxwYXRoIGQ9Ik0xNy43MyAxMi4wMmwzLjk4LTMuOThjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtNC4zNC00LjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMy45OCAzLjk4TDggMi4yOUM3LjggMi4xIDcuNTUgMiA3LjI5IDJjLS4yNSAwLS41MS4xLS43LjI5TDIuMjUgNi42M2MtLjM5LjM5LS4zOSAxLjAyIDAgMS40MWwzLjk4IDMuOThMMi4yNSAxNmMtLjM5LjM5LS4zOSAxLjAyIDAgMS40MWw0LjM0IDQuMzRjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDMuOTgtMy45OCAzLjk4IDMuOThjLjIuMi40NS4yOS43MS4yOS4yNiAwIC41MS0uMS43MS0uMjlsNC4zNC00LjM0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTMuOTktMy45OHpNMTIgOWMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tNC43MSAxLjk2TDMuNjYgNy4zNGwzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3pNMTAgMTNjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMiAyYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bTItNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0yLjY2IDkuMzRsLTMuNjMtMy42MiAzLjYzLTMuNjMgMy42MiAzLjYyLTMuNjIgMy42M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJpbWFnZSI+PHBhdGggZD0iTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW1hZ2UtYXNwZWN0LXJhdGlvIj48cGF0aCBkPSJNMTYgMTBoLTJ2Mmgydi0yem0wIDRoLTJ2Mmgydi0yem0tOC00SDZ2Mmgydi0yem00IDBoLTJ2Mmgydi0yem04LTZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE0SDRWNmgxNnYxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJpc28iPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNNS41IDcuNWgydi0ySDl2MmgyVjlIOXYySDcuNVY5aC0yVjcuNXpNMTkgMTlINUwxOSA1djE0em0tMi0ydi0xLjVoLTVWMTdoNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYW5kc2NhcGUiPjxwYXRoIGQ9Ik0xNCA2bC0zLjc1IDUgMi44NSAzLjgtMS42IDEuMkM5LjgxIDEzLjc1IDcgMTAgNyAxMGwtNiA4aDIyTDE0IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGVhay1hZGQiPjxwYXRoIGQ9Ik02IDNIM3YzYzEuNjYgMCAzLTEuMzQgMy0zem04IDBoLTJjMCA0Ljk3LTQuMDMgOS05IDl2MmM2LjA4IDAgMTEtNC45MyAxMS0xMXptLTQgMEg4YzAgMi43Ni0yLjI0IDUtNSA1djJjMy44NyAwIDctMy4xMyA3LTd6bTAgMThoMmMwLTQuOTcgNC4wMy05IDktOXYtMmMtNi4wNyAwLTExIDQuOTMtMTEgMTF6bTggMGgzdi0zYy0xLjY2IDAtMyAxLjM0LTMgM3ptLTQgMGgyYzAtMi43NiAyLjI0LTUgNS01di0yYy0zLjg3IDAtNyAzLjEzLTcgN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsZWFrLXJlbW92ZSI+PHBhdGggZD0iTTEwIDNIOGMwIC4zNy0uMDQuNzItLjEyIDEuMDZsMS41OSAxLjU5QzkuODEgNC44NCAxMCAzLjk0IDEwIDN6TTMgNC4yN2wyLjg0IDIuODRDNS4wMyA3LjY3IDQuMDYgOCAzIDh2MmMxLjYxIDAgMy4wOS0uNTUgNC4yNy0xLjQ2TDguNyA5Ljk3QzcuMTQgMTEuMjQgNS4xNiAxMiAzIDEydjJjMi43MSAwIDUuMTktLjk5IDcuMTEtMi42MmwyLjUgMi41QzEwLjk5IDE1LjgxIDEwIDE4LjI5IDEwIDIxaDJjMC0yLjE2Ljc2LTQuMTQgMi4wMy01LjY5bDEuNDMgMS40M0MxNC41NSAxNy45MSAxNCAxOS4zOSAxNCAyMWgyYzAtMS4wNi4zMy0yLjAzLjg5LTIuODRMMTkuNzMgMjEgMjEgMTkuNzMgNC4yNyAzIDMgNC4yN3pNMTQgM2gtMmMwIDEuNS0uMzcgMi45MS0xLjAyIDQuMTZsMS40NiAxLjQ2QzEzLjQyIDYuOTggMTQgNS4wNiAxNCAzem01Ljk0IDEzLjEyYy4zNC0uMDguNjktLjEyIDEuMDYtLjEydi0yYy0uOTQgMC0xLjg0LjE5LTIuNjYuNTJsMS42IDEuNnptLTQuNTYtNC41NmwxLjQ2IDEuNDZDMTguMDkgMTIuMzcgMTkuNSAxMiAyMSAxMnYtMmMtMi4wNiAwLTMuOTguNTgtNS42MiAxLjU2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxlbnMiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmtlZC1jYW1lcmEiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTQiIHI9IjMuMiI+PC9jaXJjbGU+PHBhdGggZD0iTTE2IDMuMzNjMi41OCAwIDQuNjcgMi4wOSA0LjY3IDQuNjdIMjJjMC0zLjMxLTIuNjktNi02LTZ2MS4zM00xNiA2YzEuMTEgMCAyIC44OSAyIDJoMS4zM2MwLTEuODQtMS40OS0zLjMzLTMuMzMtMy4zM1Y2Ij48L3BhdGg+PHBhdGggZD0iTTE3IDljMC0xLjExLS44OS0yLTItMlY0SDlMNy4xNyA2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWgtNXptLTUgMTBjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzIj48cGF0aCBkPSJNMTIgMTBjLTMuODYgMC03IDMuMTQtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ni0zLjE0LTctNy03em0wLTRDNS45MyA2IDEgMTAuOTMgMSAxN2gyYzAtNC45NiA0LjA0LTkgOS05czkgNC4wNCA5IDloMmMwLTYuMDctNC45My0xMS0xMS0xMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy0zIj48cGF0aCBkPSJNMTkuMDEgM2gtMTRjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNy41YzAgLjgzLS42NyAxLjUtMS41IDEuNS44MyAwIDEuNS42NyAxLjUgMS41VjE1YzAgMS4xMS0uOSAyLTIgMmgtNHYtMmg0di0yaC0ydi0yaDJWOWgtNFY3aDRjMS4xIDAgMiAuODkgMiAydjEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy00Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDE0aC0ydi00SDlWN2gydjRoMlY3aDJ2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3MtNSI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA2aC00djJoMmMxLjEgMCAyIC44OSAyIDJ2MmMwIDEuMTEtLjkgMi0yIDJIOXYtMmg0di0ySDlWN2g2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3MtNiI+PHBhdGggZD0iTTExIDE1aDJ2LTJoLTJ2MnptOC0xMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYzEuMSAwIDIgLjg5IDIgMnYyYzAgMS4xMS0uOSAyLTIgMmgtMmMtMS4xIDAtMi0uODktMi0yVjljMC0xLjExLjktMiAyLTJoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLW9uZSI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNSAxNGgtMlY5aC0yVjdoNHYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy10d28iPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgOGMwIDEuMTEtLjkgMi0yIDJoLTJ2Mmg0djJIOXYtNGMwLTEuMTEuOS0yIDItMmgyVjlIOVY3aDRjMS4xIDAgMiAuODkgMiAydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG91cGUiPjxwYXRoIGQ9Ik0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ5IDIgMiA2LjQ5IDIgMTJzNC40OSAxMCAxMCAxMGg4YzEuMSAwIDItLjkgMi0ydi04YzAtNS41MS00LjQ5LTEwLTEwLTEwem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb25vY2hyb21lLXBob3RvcyI+PHBhdGggZD0iTTIwIDVoLTMuMkwxNSAzSDlMNy4yIDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE0aC04di0xYy0yLjggMC01LTIuMi01LTVzMi4yLTUgNS01VjdoOHYxMnptLTMtNmMwLTIuOC0yLjItNS01LTV2MS44YzEuOCAwIDMuMiAxLjQgMy4yIDMuMnMtMS40IDMuMi0zLjIgMy4yVjE4YzIuOCAwIDUtMi4yIDUtNXptLTguMiAwYzAgMS44IDEuNCAzLjIgMy4yIDMuMlY5LjhjLTEuOCAwLTMuMiAxLjQtMy4yIDMuMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3ZpZS1jcmVhdGlvbiI+PHBhdGggZD0iTTE4IDRsMiA0aC0zbC0yLTRoLTJsMiA0aC0zbC0yLTRIOGwyIDRIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3ZpZS1maWx0ZXIiPjxwYXRoIGQ9Ik0xOCA0bDIgM2gtM2wtMi0zaC0ybDIgM2gtM2wtMi0zSDhsMiAzSDdMNSA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRoLTR6bS02Ljc1IDExLjI1TDEwIDE4bC0xLjI1LTIuNzVMNiAxNGwyLjc1LTEuMjVMMTAgMTBsMS4yNSAyLjc1TDE0IDE0bC0yLjc1IDEuMjV6bTUuNjktMy4zMUwxNiAxNGwtLjk0LTIuMDZMMTMgMTFsMi4wNi0uOTRMMTYgOGwuOTQgMi4wNkwxOSAxMWwtMi4wNi45NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJtdXNpYy1ub3RlIj48cGF0aCBkPSJNMTIgM3YxMC41NWMtLjU5LS4zNC0xLjI3LS41NS0yLS41NS0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRWN2g0VjNoLTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF0dXJlIj48cGF0aCBkPSJNMTMgMTYuMTJjMy40Ny0uNDEgNi4xNy0zLjM2IDYuMTctNi45NSAwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN2MwIDMuNDcgMi41MiA2LjM0IDUuODMgNi44OVYyMEg1djJoMTR2LTJoLTZ2LTMuODh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF0dXJlLXBlb3BsZSI+PHBhdGggZD0iTTIyLjE3IDkuMTdjMC0zLjg3LTMuMTMtNy03LTdzLTcgMy4xMy03IDdjMCAzLjQ3IDIuNTIgNi4zNCA1LjgzIDYuODlWMjBINnYtM2gxdi00YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2NGgxdjVoMTZ2LTJoLTN2LTMuODhjMy40Ny0uNDEgNi4xNy0zLjM2IDYuMTctNi45NXpNNC41IDExYy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjMzIDggNC41IDggMyA4LjY3IDMgOS41IDMuNjcgMTEgNC41IDExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im5hdmlnYXRlLWJlZm9yZSI+PHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF2aWdhdGUtbmV4dCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbGV0dGUiPjxwYXRoIGQ9Ik0xMiAzYy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAzIDkgOSA5Yy44MyAwIDEuNS0uNjcgMS41LTEuNSAwLS4zOS0uMTUtLjc0LS4zOS0xLjAxLS4yMy0uMjYtLjM4LS42MS0uMzgtLjk5IDAtLjgzLjY3LTEuNSAxLjUtMS41SDE2YzIuNzYgMCA1LTIuMjQgNS01IDAtNC40Mi00LjAzLTgtOS04em0tNS41IDljLS44MyAwLTEuNS0uNjctMS41LTEuNVM1LjY3IDkgNi41IDkgOCA5LjY3IDggMTAuNSA3LjMzIDEyIDYuNSAxMnptMy00QzguNjcgOCA4IDcuMzMgOCA2LjVTOC42NyA1IDkuNSA1czEuNS42NyAxLjUgMS41UzEwLjMzIDggOS41IDh6bTUgMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzEzLjY3IDUgMTQuNSA1czEuNS42NyAxLjUgMS41UzE1LjMzIDggMTQuNSA4em0zIDRjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxNi42NyA5IDE3LjUgOXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEiPjxwYXRoIGQ9Ik0yMyAxOFY2YzAtMS4xLS45LTItMi0ySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6TTguNSAxMi41bDIuNSAzLjAxTDE0LjUgMTFsNC41IDZINWwzLjUtNC41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbm9yYW1hLWZpc2gtZXllIj48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtaG9yaXpvbnRhbCI+PHBhdGggZD0iTTIwIDYuNTR2MTAuOTFjLTIuNi0uNzctNS4yOC0xLjE2LTgtMS4xNi0yLjcyIDAtNS40LjM5LTggMS4xNlY2LjU0YzIuNi43NyA1LjI4IDEuMTYgOCAxLjE2IDIuNzIuMDEgNS40LS4zOCA4LTEuMTZNMjEuNDMgNGMtLjEgMC0uMi4wMi0uMzEuMDZDMTguMTggNS4xNiAxNS4wOSA1LjcgMTIgNS43Yy0zLjA5IDAtNi4xOC0uNTUtOS4xMi0xLjY0LS4xMS0uMDQtLjIyLS4wNi0uMzEtLjA2LS4zNCAwLS41Ny4yMy0uNTcuNjN2MTQuNzVjMCAuMzkuMjMuNjIuNTcuNjIuMSAwIC4yLS4wMi4zMS0uMDYgMi45NC0xLjEgNi4wMy0xLjY0IDkuMTItMS42NCAzLjA5IDAgNi4xOC41NSA5LjEyIDEuNjQuMTEuMDQuMjEuMDYuMzEuMDYuMzMgMCAuNTctLjIzLjU3LS42M1Y0LjYzYzAtLjQtLjI0LS42My0uNTctLjYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbm9yYW1hLXZlcnRpY2FsIj48cGF0aCBkPSJNMTkuOTQgMjEuMTJjLTEuMS0yLjk0LTEuNjQtNi4wMy0xLjY0LTkuMTIgMC0zLjA5LjU1LTYuMTggMS42NC05LjEyLjA0LS4xMS4wNi0uMjIuMDYtLjMxIDAtLjM0LS4yMy0uNTctLjYzLS41N0g0LjYzYy0uNCAwLS42My4yMy0uNjMuNTcgMCAuMS4wMi4yLjA2LjMxQzUuMTYgNS44MiA1LjcxIDguOTEgNS43MSAxMmMwIDMuMDktLjU1IDYuMTgtMS42NCA5LjEyLS4wNS4xMS0uMDcuMjItLjA3LjMxIDAgLjMzLjIzLjU3LjYzLjU3aDE0Ljc1Yy4zOSAwIC42My0uMjQuNjMtLjU3LS4wMS0uMS0uMDMtLjItLjA3LS4zMXpNNi41NCAyMGMuNzctMi42IDEuMTYtNS4yOCAxLjE2LTggMC0yLjcyLS4zOS01LjQtMS4xNi04aDEwLjkxYy0uNzcgMi42LTEuMTYgNS4yOC0xLjE2IDggMCAyLjcyLjM5IDUuNCAxLjE2IDhINi41NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYS13aWRlLWFuZ2xlIj48cGF0aCBkPSJNMTIgNmMyLjQ1IDAgNC43MS4yIDcuMjkuNjQuNDcgMS43OC43MSAzLjU4LjcxIDUuMzYgMCAxLjc4LS4yNCAzLjU4LS43MSA1LjM2LTIuNTguNDQtNC44NC42NC03LjI5LjY0cy00LjcxLS4yLTcuMjktLjY0QzQuMjQgMTUuNTggNCAxMy43OCA0IDEyYzAtMS43OC4yNC0zLjU4LjcxLTUuMzZDNy4yOSA2LjIgOS41NSA2IDEyIDZtMC0yYy0yLjczIDAtNS4yMi4yNC03Ljk1LjcybC0uOTMuMTYtLjI1LjlDMi4yOSA3Ljg1IDIgOS45MyAyIDEycy4yOSA0LjE1Ljg3IDYuMjJsLjI1Ljg5LjkzLjE2YzIuNzMuNDkgNS4yMi43MyA3Ljk1LjczczUuMjItLjI0IDcuOTUtLjcybC45My0uMTYuMjUtLjg5Yy41OC0yLjA4Ljg3LTQuMTYuODctNi4yM3MtLjI5LTQuMTUtLjg3LTYuMjJsLS4yNS0uODktLjkzLS4xNkMxNy4yMiA0LjI0IDE0LjczIDQgMTIgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90byI+PHBhdGggZD0iTTIxIDE5VjVjMC0xLjEtLjktMi0yLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnpNOC41IDEzLjVsMi41IDMuMDFMMTQuNSAxMmw0LjUgNkg1bDMuNS00LjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tYWxidW0iPjxwYXRoIGQ9Ik0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6bTAgMTVsMy0zLjg2IDIuMTQgMi41OCAzLTMuODZMMTggMTlINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1jYW1lcmEiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMuMiI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMkw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tZmlsdGVyIj48cGF0aCBkPSJNMTkuMDIgMTB2OUg1VjVoOVYzSDUuMDJjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTloLTJ6TTE3IDEwbC45NC0yLjA2TDIwIDdsLTIuMDYtLjk0TDE3IDRsLS45NCAyLjA2TDE0IDdsMi4wNi45NHptLTMuNzUuNzVMMTIgOGwtMS4yNSAyLjc1TDggMTJsMi43NSAxLjI1TDEyIDE2bDEuMjUtMi43NUwxNiAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1saWJyYXJ5Ij48cGF0aCBkPSJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNGwyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1zaXplLXNlbGVjdC1hY3R1YWwiPjxwYXRoIGQ9Ik0yMSAzSDNDMiAzIDEgNCAxIDV2MTRjMCAxLjEuOSAyIDIgMmgxOGMxIDAgMi0xIDItMlY1YzAtMS0xLTItMi0yek01IDE3bDMuNS00LjUgMi41IDMuMDFMMTQuNSAxMWw0LjUgNkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLXNpemUtc2VsZWN0LWxhcmdlIj48cGF0aCBkPSJNMjEgMTVoMnYyaC0ydi0yem0wLTRoMnYyaC0ydi0yem0yIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTMgM2gydjJoLTJWM3ptOCA0aDJ2MmgtMlY3em0wLTR2MmgyYzAtMS0xLTItMi0yek0xIDdoMnYySDFWN3ptMTYtNGgydjJoLTJWM3ptMCAxNmgydjJoLTJ2LTJ6TTMgM0MyIDMgMSA0IDEgNWgyVjN6bTYgMGgydjJIOVYzek01IDNoMnYySDVWM3ptLTQgOHY4YzAgMS4xLjkgMiAyIDJoMTJWMTFIMXptMiA4bDIuNS0zLjIxIDEuNzkgMi4xNSAyLjUtMy4yMkwxMyAxOUgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLXNpemUtc2VsZWN0LXNtYWxsIj48cGF0aCBkPSJNMjMgMTVoLTJ2Mmgydi0yem0wLTRoLTJ2Mmgydi0yem0wIDhoLTJ2MmMxIDAgMi0xIDItMnpNMTUgM2gtMnYyaDJWM3ptOCA0aC0ydjJoMlY3em0tMi00djJoMmMwLTEtMS0yLTItMnpNMyAyMWg4di02SDF2NGMwIDEuMS45IDIgMiAyek0zIDdIMXYyaDJWN3ptMTIgMTJoLTJ2Mmgydi0yem00LTE2aC0ydjJoMlYzem0wIDE2aC0ydjJoMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptMCA4SDF2Mmgydi0yem04LThIOXYyaDJWM3pNNyAzSDV2MmgyVjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGljdHVyZS1hcy1wZGYiPjxwYXRoIGQ9Ik0yMCAySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTguNSA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41SDl2Mkg3LjVWN0gxMGMuODMgMCAxLjUuNjcgMS41IDEuNXYxem01IDJjMCAuODMtLjY3IDEuNS0xLjUgMS41aC0yLjVWN0gxNWMuODMgMCAxLjUuNjcgMS41IDEuNXYzem00LTNIMTl2MWgxLjVWMTFIMTl2MmgtMS41VjdoM3YxLjV6TTkgOS41aDF2LTFIOXYxek00IDZIMnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNnptMTAgNS41aDF2LTNoLTF2M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwb3J0cmFpdCI+PHBhdGggZD0iTTEyIDEyLjI1YzEuMjQgMCAyLjI1LTEuMDEgMi4yNS0yLjI1UzEzLjI0IDcuNzUgMTIgNy43NSA5Ljc1IDguNzYgOS43NSAxMHMxLjAxIDIuMjUgMi4yNSAyLjI1em00LjUgNGMwLTEuNS0zLTIuMjUtNC41LTIuMjVzLTQuNS43NS00LjUgMi4yNVYxN2g5di0uNzV6TTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUtcmVkLWV5ZSI+PHBhdGggZD0iTTEyIDQuNUM3IDQuNSAyLjczIDcuNjEgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41czkuMjctMy4xMSAxMS03LjVjLTEuNzMtNC4zOS02LTcuNS0xMS03LjV6TTEyIDE3Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXptMC04Yy0xLjY2IDAtMyAxLjM0LTMgM3MxLjM0IDMgMyAzIDMtMS4zNCAzLTMtMS4zNC0zLTMtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJyb3RhdGUtOTAtZGVncmVlcy1jY3ciPjxwYXRoIGQ9Ik03LjM0IDYuNDFMLjg2IDEyLjlsNi40OSA2LjQ4IDYuNDktNi40OC02LjUtNi40OXpNMy42OSAxMi45bDMuNjYtMy42NkwxMSAxMi45bC0zLjY2IDMuNjYtMy42NS0zLjY2em0xNS42Ny02LjI2QzE3LjYxIDQuODggMTUuMyA0IDEzIDRWLjc2TDguNzYgNSAxMyA5LjI0VjZjMS43OSAwIDMuNTguNjggNC45NSAyLjA1IDIuNzMgMi43MyAyLjczIDcuMTcgMCA5LjlDMTYuNTggMTkuMzIgMTQuNzkgMjAgMTMgMjBjLS45NyAwLTEuOTQtLjIxLTIuODQtLjYxbC0xLjQ5IDEuNDlDMTAuMDIgMjEuNjIgMTEuNTEgMjIgMTMgMjJjMi4zIDAgNC42MS0uODggNi4zNi0yLjY0IDMuNTItMy41MSAzLjUyLTkuMjEgMC0xMi43MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyb3RhdGUtbGVmdCI+PHBhdGggZD0iTTcuMTEgOC41M0w1LjcgNy4xMUM0LjggOC4yNyA0LjI0IDkuNjEgNC4wNyAxMWgyLjAyYy4xNC0uODcuNDktMS43MiAxLjAyLTIuNDd6TTYuMDkgMTNINC4wN2MuMTcgMS4zOS43MiAyLjczIDEuNjIgMy44OWwxLjQxLTEuNDJjLS41Mi0uNzUtLjg3LTEuNTktMS4wMS0yLjQ3em0xLjAxIDUuMzJjMS4xNi45IDIuNTEgMS40NCAzLjkgMS42MVYxNy45Yy0uODctLjE1LTEuNzEtLjQ5LTIuNDYtMS4wM0w3LjEgMTguMzJ6TTEzIDQuMDdWMUw4LjQ1IDUuNTUgMTMgMTBWNi4wOWMyLjg0LjQ4IDUgMi45NCA1IDUuOTFzLTIuMTYgNS40My01IDUuOTF2Mi4wMmMzLjk1LS40OSA3LTMuODUgNy03Ljkzcy0zLjA1LTcuNDQtNy03LjkzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS1yaWdodCI+PHBhdGggZD0iTTE1LjU1IDUuNTVMMTEgMXYzLjA3QzcuMDYgNC41NiA0IDcuOTIgNCAxMnMzLjA1IDcuNDQgNyA3Ljkzdi0yLjAyYy0yLjg0LS40OC01LTIuOTQtNS01LjkxczIuMTYtNS40MyA1LTUuOTFWMTBsNC41NS00LjQ1ek0xOS45MyAxMWMtLjE3LTEuMzktLjcyLTIuNzMtMS42Mi0zLjg5bC0xLjQyIDEuNDJjLjU0Ljc1Ljg4IDEuNiAxLjAyIDIuNDdoMi4wMnpNMTMgMTcuOXYyLjAyYzEuMzktLjE3IDIuNzQtLjcxIDMuOS0xLjYxbC0xLjQ0LTEuNDRjLS43NS41NC0xLjU5Ljg5LTIuNDYgMS4wM3ptMy44OS0yLjQybDEuNDIgMS40MWMuOS0xLjE2IDEuNDUtMi41IDEuNjItMy44OWgtMi4wMmMtLjE0Ljg3LS40OCAxLjcyLTEuMDIgMi40OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzbGlkZXNob3ciPjxwYXRoIGQ9Ik0xMCA4djhsNS00LTUtNHptOS01SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RyYWlnaHRlbiI+PHBhdGggZD0iTTIxIDZIM2MtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBIM1Y4aDJ2NGgyVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0eWxlIj48cGF0aCBkPSJNMi41MyAxOS42NWwxLjM0LjU2di05LjAzbC0yLjQzIDUuODZjLS40MSAxLjAyLjA4IDIuMTkgMS4wOSAyLjYxem0xOS41LTMuN0wxNy4wNyAzLjk4Yy0uMzEtLjc1LTEuMDQtMS4yMS0xLjgxLTEuMjMtLjI2IDAtLjUzLjA0LS43OS4xNUw3LjEgNS45NWMtLjc1LjMxLTEuMjEgMS4wMy0xLjIzIDEuOC0uMDEuMjcuMDQuNTQuMTUuOGw0Ljk2IDExLjk3Yy4zMS43NiAxLjA1IDEuMjIgMS44MyAxLjIzLjI2IDAgLjUyLS4wNS43Ny0uMTVsNy4zNi0zLjA1YzEuMDItLjQyIDEuNTEtMS41OSAxLjA5LTIuNnpNNy44OCA4Ljc1Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0yIDExYzAgMS4xLjkgMiAyIDJoMS40NWwtMy40NS04LjM0djYuMzR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3dpdGNoLWNhbWVyYSI+PHBhdGggZD0iTTIwIDRoLTMuMTdMMTUgMkg5TDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS01IDExLjVWMTNIOXYyLjVMNS41IDEyIDkgOC41VjExaDZWOC41bDMuNSAzLjUtMy41IDMuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2l0Y2gtdmlkZW8iPjxwYXRoIGQ9Ik0xOCA5LjVWNmMwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDE0Yy41NSAwIDEtLjQ1IDEtMXYtMy41bDQgNHYtMTNsLTQgNHptLTUgNlYxM0g3djIuNUwzLjUgMTIgNyA4LjVWMTFoNlY4LjVsMy41IDMuNS0zLjUgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRhZy1mYWNlcyI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptMy41LTljLjgzIDAgMS41LS42NyAxLjUtMS41UzE2LjMzIDggMTUuNSA4IDE0IDguNjcgMTQgOS41cy42NyAxLjUgMS41IDEuNXptLTcgMGMuODMgMCAxLjUtLjY3IDEuNS0xLjVTOS4zMyA4IDguNSA4IDcgOC42NyA3IDkuNSA3LjY3IDExIDguNSAxMXptMy41IDYuNWMyLjMzIDAgNC4zMS0xLjQ2IDUuMTEtMy41SDYuODljLjggMi4wNCAyLjc4IDMuNSA1LjExIDMuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0ZXh0dXJlIj48cGF0aCBkPSJNMTkuNTEgMy4wOEwzLjA4IDE5LjUxYy4wOS4zNC4yNy42NS41MS45LjI1LjI0LjU2LjQyLjkuNTFMMjAuOTMgNC40OWMtLjE5LS42OS0uNzMtMS4yMy0xLjQyLTEuNDF6TTExLjg4IDNMMyAxMS44OHYyLjgzTDE0LjcxIDNoLTIuODN6TTUgM2MtMS4xIDAtMiAuOS0yIDJ2Mmw0LTRINXptMTQgMThjLjU1IDAgMS4wNS0uMjIgMS40MS0uNTkuMzctLjM2LjU5LS44Ni41OS0xLjQxdi0ybC00IDRoMnptLTkuNzEgMGgyLjgzTDIxIDEyLjEyVjkuMjlMOS4yOSAyMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aW1lbGFwc2UiPjxwYXRoIGQ9Ik0xNi4yNCA3Ljc2QzE1LjA3IDYuNTkgMTMuNTQgNiAxMiA2djZsLTQuMjQgNC4yNGMyLjM0IDIuMzQgNi4xNCAyLjM0IDguNDkgMCAyLjM0LTIuMzQgMi4zNC02LjE0LS4wMS04LjQ4ek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aW1lciI+PHBhdGggZD0iTTE1IDFIOXYyaDZWMXptLTQgMTNoMlY4aC0ydjZ6bTguMDMtNi42MWwxLjQyLTEuNDJjLS40My0uNTEtLjktLjk5LTEuNDEtMS40MWwtMS40MiAxLjQyQzE2LjA3IDQuNzQgMTQuMTIgNCAxMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5IDktNC4wMyA5LTljMC0yLjEyLS43NC00LjA3LTEuOTctNS42MXpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVyLTEwIj48cGF0aCBkPSJNMCA3LjcyVjkuNGwzLTFWMThoMlY2aC0uMjVMMCA3Ljcyem0yMy43OCA2LjY1Yy0uMTQtLjI4LS4zNS0uNTMtLjYzLS43NC0uMjgtLjIxLS42MS0uMzktMS4wMS0uNTNzLS44NS0uMjctMS4zNS0uMzhjLS4zNS0uMDctLjY0LS4xNS0uODctLjIzLS4yMy0uMDgtLjQxLS4xNi0uNTUtLjI1LS4xNC0uMDktLjIzLS4xOS0uMjgtLjMtLjA1LS4xMS0uMDgtLjI0LS4wOC0uMzkgMC0uMTQuMDMtLjI4LjA5LS40MS4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YzAtLjM5LS4wOC0uNzUtLjI0LTEuMDktLjE2LS4zNC0uMzktLjYzLS42OS0uODgtLjMtLjI1LS42Ni0uNDQtMS4wOS0uNTlDMjEuNDkgOS4wNyAyMSA5IDIwLjQ2IDljLS41MSAwLS45OC4wNy0xLjM5LjIxLS40MS4xNC0uNzcuMzMtMS4wNi41Ny0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OS4yMy45NmMuMTUuMjguMzYuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzctLjI3LjItLjY2LjI5LTEuMTcuMjktLjIyIDAtLjQzLS4wMi0uNjQtLjA4LS4yMS0uMDUtLjQtLjEzLS41Ni0uMjQtLjE3LS4xMS0uMy0uMjYtLjQxLS40NC0uMTEtLjE4LS4xNy0uNDEtLjE4LS42N2gtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnptLTkuOTYtNy4zMmMtLjM0LS40LS43NS0uNy0xLjIzLS44OC0uNDctLjE4LTEuMDEtLjI3LTEuNTktLjI3LS41OCAwLTEuMTEuMDktMS41OS4yNy0uNDguMTgtLjg5LjQ3LTEuMjMuODgtLjM0LjQxLS42LjkzLS43OSAxLjU5LS4xOC42NS0uMjggMS40NS0uMjggMi4zOXYxLjkyYzAgLjk0LjA5IDEuNzQuMjggMi4zOS4xOS42Ni40NSAxLjE5LjggMS42LjM0LjQxLjc1LjcxIDEuMjMuODkuNDguMTggMS4wMS4yOCAxLjU5LjI4LjU5IDAgMS4xMi0uMDkgMS41OS0uMjguNDgtLjE4Ljg4LS40OCAxLjIyLS44OS4zNC0uNDEuNi0uOTQuNzgtMS42LjE4LS42NS4yOC0xLjQ1LjI4LTIuMzl2LTEuOTJjMC0uOTQtLjA5LTEuNzQtLjI4LTIuMzktLjE4LS42Ni0uNDQtMS4xOS0uNzgtMS41OXptLS45MiA2LjE3YzAgLjYtLjA0IDEuMTEtLjEyIDEuNTMtLjA4LjQyLS4yLjc2LS4zNiAxLjAyLS4xNi4yNi0uMzYuNDUtLjU5LjU3LS4yMy4xMi0uNTEuMTgtLjgyLjE4LS4zIDAtLjU4LS4wNi0uODItLjE4cy0uNDQtLjMxLS42LS41N2MtLjE2LS4yNi0uMjktLjYtLjM4LTEuMDItLjA5LS40Mi0uMTMtLjkzLS4xMy0xLjUzdi0yLjVjMC0uNi4wNC0xLjExLjEzLTEuNTIuMDktLjQxLjIxLS43NC4zOC0xIC4xNi0uMjUuMzYtLjQzLjYtLjU1LjI0LS4xMS41MS0uMTcuODEtLjE3LjMxIDAgLjU4LjA2LjgxLjE3LjI0LjExLjQ0LjI5LjYuNTUuMTYuMjUuMjkuNTguMzcuOTkuMDguNDEuMTMuOTIuMTMgMS41MnYyLjUxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVyLTMiPjxwYXRoIGQ9Ik0xMS42MSAxMi45N2MtLjE2LS4yNC0uMzYtLjQ2LS42Mi0uNjUtLjI1LS4xOS0uNTYtLjM1LS45My0uNDguMy0uMTQuNTctLjMuOC0uNS4yMy0uMi40Mi0uNDEuNTctLjY0LjE1LS4yMy4yNy0uNDYuMzQtLjcxLjA4LS4yNC4xMS0uNDkuMTEtLjczIDAtLjU1LS4wOS0xLjA0LS4yOC0xLjQ2LS4xOC0uNDItLjQ0LS43Ny0uNzgtMS4wNi0uMzMtLjI4LS43My0uNS0xLjItLjY0LS40NS0uMTMtLjk3LS4yLTEuNTMtLjItLjU1IDAtMS4wNi4wOC0xLjUyLjI0LS40Ny4xNy0uODcuNC0xLjIuNjktLjMzLjI5LS42LjYzLS43OCAxLjAzLS4yLjM5LS4yOS44My0uMjkgMS4yOWgxLjk4YzAtLjI2LjA1LS40OS4xNC0uNjkuMDktLjIuMjItLjM4LjM4LS41Mi4xNy0uMTQuMzYtLjI1LjU4LS4zMy4yMi0uMDguNDYtLjEyLjczLS4xMi42MSAwIDEuMDYuMTYgMS4zNi40Ny4zLjMxLjQ0Ljc1LjQ0IDEuMzIgMCAuMjctLjA0LjUyLS4xMi43NC0uMDguMjItLjIxLjQxLS4zOC41Ny0uMTcuMTYtLjM4LjI4LS42My4zNy0uMjUuMDktLjU1LjEzLS44OS4xM0g2LjcydjEuNTdINy45Yy4zNCAwIC42NC4wNC45MS4xMS4yNy4wOC41LjE5LjY5LjM1LjE5LjE2LjM0LjM2LjQ0LjYxLjEuMjQuMTYuNTQuMTYuODcgMCAuNjItLjE4IDEuMDktLjUzIDEuNDItLjM1LjMzLS44NC40OS0xLjQ1LjQ5LS4yOSAwLS41Ni0uMDQtLjgtLjEzLS4yNC0uMDgtLjQ0LS4yLS42MS0uMzYtLjE3LS4xNi0uMy0uMzQtLjM5LS41Ni0uMDktLjIyLS4xNC0uNDYtLjE0LS43Mkg0LjE5YzAgLjU1LjExIDEuMDMuMzIgMS40NS4yMS40Mi41Ljc3Ljg2IDEuMDVzLjc3LjQ5IDEuMjQuNjMuOTYuMjEgMS40OC4yMWMuNTcgMCAxLjA5LS4wOCAxLjU4LS4yMy40OS0uMTUuOTEtLjM4IDEuMjYtLjY4LjM2LS4zLjY0LS42Ni44NC0xLjEuMi0uNDMuMy0uOTMuMy0xLjQ4IDAtLjI5LS4wNC0uNTgtLjExLS44Ni0uMDgtLjI1LS4xOS0uNTEtLjM1LS43NnptOS4yNiAxLjRjLS4xNC0uMjgtLjM1LS41My0uNjMtLjc0LS4yOC0uMjEtLjYxLS4zOS0xLjAxLS41M3MtLjg1LS4yNy0xLjM1LS4zOGMtLjM1LS4wNy0uNjQtLjE1LS44Ny0uMjMtLjIzLS4wOC0uNDEtLjE2LS41NS0uMjUtLjE0LS4wOS0uMjMtLjE5LS4yOC0uMy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOXMuMDMtLjI4LjA5LS40MWMuMDYtLjEzLjE1LS4yNS4yNy0uMzQuMTItLjEuMjctLjE4LjQ1LS4yNHMuNC0uMDkuNjQtLjA5Yy4yNSAwIC40Ny4wNC42Ni4xMS4xOS4wNy4zNS4xNy40OC4yOS4xMy4xMi4yMi4yNi4yOS40Mi4wNi4xNi4xLjMyLjEuNDloMS45NWMwLS4zOS0uMDgtLjc1LS4yNC0xLjA5LS4xNi0uMzQtLjM5LS42My0uNjktLjg4LS4zLS4yNS0uNjYtLjQ0LTEuMDktLjU5LS40My0uMTUtLjkyLS4yMi0xLjQ2LS4yMi0uNTEgMC0uOTguMDctMS4zOS4yMS0uNDEuMTQtLjc3LjMzLTEuMDYuNTctLjI5LjI0LS41MS41Mi0uNjcuODQtLjE2LjMyLS4yMy42NS0uMjMgMS4wMXMuMDguNjguMjMuOTZjLjE1LjI4LjM3LjUyLjY0LjczLjI3LjIxLjYuMzguOTguNTMuMzguMTQuODEuMjYgMS4yNy4zNi4zOS4wOC43MS4xNy45NS4yNnMuNDMuMTkuNTcuMjljLjEzLjEuMjIuMjIuMjcuMzQuMDUuMTIuMDcuMjUuMDcuMzkgMCAuMzItLjEzLjU3LS40Ljc3LS4yNy4yLS42Ni4yOS0xLjE3LjI5LS4yMiAwLS40My0uMDItLjY0LS4wOC0uMjEtLjA1LS40LS4xMy0uNTYtLjI0LS4xNy0uMTEtLjMtLjI2LS40MS0uNDQtLjExLS4xOC0uMTctLjQxLS4xOC0uNjdoLTEuODljMCAuMzYuMDguNzEuMjQgMS4wNS4xNi4zNC4zOS42NS43LjkzLjMxLjI3LjY5LjQ5IDEuMTUuNjYuNDYuMTcuOTguMjUgMS41OC4yNS41MyAwIDEuMDEtLjA2IDEuNDQtLjE5LjQzLS4xMy44LS4zMSAxLjExLS41NC4zMS0uMjMuNTQtLjUxLjcxLS44My4xNy0uMzIuMjUtLjY3LjI1LTEuMDYtLjAyLS40LS4wOS0uNzQtLjI0LTEuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItb2ZmIj48cGF0aCBkPSJNMTkuMDQgNC41NWwtMS40MiAxLjQyQzE2LjA3IDQuNzQgMTQuMTIgNCAxMiA0Yy0xLjgzIDAtMy41My41NS00Ljk1IDEuNDhsMS40NiAxLjQ2QzkuNTMgNi4zNSAxMC43MyA2IDEyIDZjMy44NyAwIDcgMy4xMyA3IDcgMCAxLjI3LS4zNSAyLjQ3LS45NCAzLjQ5bDEuNDUgMS40NUMyMC40NSAxNi41MyAyMSAxNC44MyAyMSAxM2MwLTIuMTItLjc0LTQuMDctMS45Ny01LjYxbDEuNDItMS40Mi0xLjQxLTEuNDJ6TTE1IDFIOXYyaDZWMXptLTQgOC40NGwyIDJWOGgtMnYxLjQ0ek0zLjAyIDRMMS43NSA1LjI3IDQuNSA4LjAzQzMuNTUgOS40NSAzIDExLjE2IDMgMTNjMCA0Ljk3IDQuMDIgOSA5IDkgMS44NCAwIDMuNTUtLjU1IDQuOTgtMS41bDIuNSAyLjUgMS4yNy0xLjI3LTcuNzEtNy43MUwzLjAyIDR6TTEyIDIwYy0zLjg3IDAtNy0zLjEzLTctNyAwLTEuMjguMzUtMi40OC45NS0zLjUybDkuNTYgOS41NmMtMS4wMy42MS0yLjIzLjk2LTMuNTEuOTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idG9uYWxpdHkiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMSAxNy45M2MtMy45NC0uNDktNy0zLjg1LTctNy45M3MzLjA1LTcuNDQgNy03LjkzdjE1Ljg2em0yLTE1Ljg2YzEuMDMuMTMgMiAuNDUgMi44Ny45M0gxM3YtLjkzek0xMyA3aDUuMjRjLjI1LjMxLjQ4LjY1LjY4IDFIMTNWN3ptMCAzaDYuNzRjLjA4LjMzLjE1LjY2LjE5IDFIMTN2LTF6bTAgOS45M1YxOWgyLjg3Yy0uODcuNDgtMS44NC44LTIuODcuOTN6TTE4LjI0IDE3SDEzdi0xaDUuOTJjLS4yLjM1LS40My42OS0uNjggMXptMS41LTNIMTN2LTFoNi45M2MtLjA0LjM0LS4xMS42Ny0uMTkgMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFuc2Zvcm0iPjxwYXRoIGQ9Ik0yMiAxOHYtMkg4VjRoMkw3IDEgNCA0aDJ2MkgydjJoNHY4YzAgMS4xLjkgMiAyIDJoOHYyaC0ybDMgMyAzLTNoLTJ2LTJoNHpNMTAgOGg2djZoMlY4YzAtMS4xLS45LTItMi0yaC02djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHVuZSI+PHBhdGggZD0iTTMgMTd2Mmg2di0ySDN6TTMgNXYyaDEwVjVIM3ptMTAgMTZ2LTJoOHYtMmgtOHYtMmgtMnY2aDJ6TTcgOXYySDN2Mmg0djJoMlY5SDd6bTE0IDR2LTJIMTF2MmgxMHptLTYtNGgyVjdoNFY1aC00VjNoLTJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNvbWZ5Ij48cGF0aCBkPSJNMyA5aDRWNUgzdjR6bTAgNWg0di00SDN2NHptNSAwaDR2LTRIOHY0em01IDBoNHYtNGgtNHY0ek04IDloNFY1SDh2NHptNS00djRoNFY1aC00em01IDloNHYtNGgtNHY0ek0zIDE5aDR2LTRIM3Y0em01IDBoNHYtNEg4djR6bTUgMGg0di00aC00djR6bTUgMGg0di00aC00djR6bTAtMTR2NGg0VjVoLTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1jb21wYWN0Ij48cGF0aCBkPSJNMyAxOWg2di03SDN2N3ptNyAwaDEydi03SDEwdjd6TTMgNXY2aDE5VjVIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWduZXR0ZSI+PHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tOSAxNWMtNC40MiAwLTgtMi42OS04LTZzMy41OC02IDgtNiA4IDIuNjkgOCA2LTMuNTggNi04IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItYXV0byI+PHBhdGggZD0iTTYuODUgMTIuNjVoMi4zTDggOWwtMS4xNSAzLjY1ek0yMiA3bC0xLjIgNi4yOUwxOS4zIDdoLTEuNmwtMS40OSA2LjI5TDE1IDdoLS43NkMxMi43NyA1LjE3IDEwLjUzIDQgOCA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4YzMuMTMgMCA1Ljg0LTEuODEgNy4xNS00LjQzbC4xLjQzSDE3bDEuNS02LjFMMjAgMTZoMS43NWwyLjA1LTlIMjJ6bS0xMS43IDlsLS43LTJINi40bC0uNyAySDMuOEw3IDdoMmwzLjIgOWgtMS45eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndiLWNsb3VkeSI+PHBhdGggZD0iTTE5LjM2IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjQtNC45NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1pbmNhbmRlc2NlbnQiPjxwYXRoIGQ9Ik0zLjU1IDE4LjU0bDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjh6TTExIDIyLjQ1aDJWMTkuNWgtMnYyLjk1ek00IDEwLjVIMXYyaDN2LTJ6bTExLTQuMTlWMS41SDl2NC44MUM3LjIxIDcuMzUgNiA5LjI4IDYgMTEuNWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMi4yMi0xLjIxLTQuMTUtMy01LjE5em01IDQuMTl2Mmgzdi0yaC0zem0tMi43NiA3LjY2bDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OS0xLjQgMS40eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndiLWlyaWRlc2NlbnQiPjxwYXRoIGQ9Ik01IDE0LjVoMTR2LTZINXY2ek0xMSAuNTVWMy41aDJWLjU1aC0yem04LjA0IDIuNWwtMS43OSAxLjc5IDEuNDEgMS40MSAxLjgtMS43OS0xLjQyLTEuNDF6TTEzIDIyLjQ1VjE5LjVoLTJ2Mi45NWgyem03LjQ1LTMuOTFsLTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuOCAxLjQyLTEuNDJ6TTMuNTUgNC40NmwxLjc5IDEuNzkgMS40MS0xLjQxLTEuNzktMS43OS0xLjQxIDEuNDF6bTEuNDEgMTUuNDlsMS43OS0xLjgtMS40MS0xLjQxLTEuNzkgMS43OSAxLjQxIDEuNDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2Itc3VubnkiPjxwYXRoIGQ9Ik02Ljc2IDQuODRsLTEuOC0xLjc5LTEuNDEgMS40MSAxLjc5IDEuNzkgMS40Mi0xLjQxek00IDEwLjVIMXYyaDN2LTJ6bTktOS45NWgtMlYzLjVoMlYuNTV6bTcuNDUgMy45MWwtMS40MS0xLjQxLTEuNzkgMS43OSAxLjQxIDEuNDEgMS43OS0xLjc5em0tMy4yMSAxMy43bDEuNzkgMS44IDEuNDEtMS40MS0xLjgtMS43OS0xLjQgMS40ek0yMCAxMC41djJoM3YtMmgtM3ptLTgtNWMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6bS0xIDE2Ljk1aDJWMTkuNWgtMnYyLjk1em0tNy40NS0zLjkxbDEuNDEgMS40MSAxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjh6Ij48L3BhdGg+PC9nPgo8L2RlZnM+PC9zdmc+CjwvaXJvbi1pY29uc2V0LXN2Zz5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2JlLmNvbnRlbnQpO3ZhciBsYmU9UWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJpY29ucyIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iM2Qtcm90YXRpb24iPjxwYXRoIGQ9Ik03LjUyIDIxLjQ4QzQuMjUgMTkuOTQgMS45MSAxNi43NiAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6bS44OS02LjUyYy0uMTkgMC0uMzctLjAzLS41Mi0uMDgtLjE2LS4wNi0uMjktLjEzLS40LS4yNC0uMTEtLjEtLjItLjIyLS4yNi0uMzctLjA2LS4xNC0uMDktLjMtLjA5LS40N2gtMS4zYzAgLjM2LjA3LjY4LjIxLjk1LjE0LjI3LjMzLjUuNTYuNjkuMjQuMTguNTEuMzIuODIuNDEuMy4xLjYyLjE1Ljk2LjE1LjM3IDAgLjcyLS4wNSAxLjAzLS4xNS4zMi0uMS42LS4yNS44My0uNDRzLjQyLS40My41NS0uNzJjLjEzLS4yOS4yLS42MS4yLS45NyAwLS4xOS0uMDItLjM4LS4wNy0uNTYtLjA1LS4xOC0uMTItLjM1LS4yMy0uNTEtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzEuMi0uMDkuMzctLjIuNTItLjMzLjE1LS4xMy4yNy0uMjcuMzctLjQyLjEtLjE1LjE3LS4zLjIyLS40Ni4wNS0uMTYuMDctLjMyLjA3LS40OCAwLS4zNi0uMDYtLjY4LS4xOC0uOTYtLjEyLS4yOC0uMjktLjUxLS41MS0uNjktLjItLjE5LS40Ny0uMzMtLjc3LS40M0M5LjEgOC4wNSA4Ljc2IDggOC4zOSA4Yy0uMzYgMC0uNjkuMDUtMSAuMTYtLjMuMTEtLjU3LjI2LS43OS40NS0uMjEuMTktLjM4LjQxLS41MS42Ny0uMTIuMjYtLjE4LjU0LS4xOC44NWgxLjNjMC0uMTcuMDMtLjMyLjA5LS40NXMuMTQtLjI1LjI1LS4zNGMuMTEtLjA5LjIzLS4xNy4zOC0uMjIuMTUtLjA1LjMtLjA4LjQ4LS4wOC40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDktLjA1LjE1LS4xNC4yNy0uMjUuMzctLjExLjEtLjI1LjE4LS40MS4yNC0uMTYuMDYtLjM2LjA5LS41OC4wOUg3LjV2MS4wM2guNzdjLjIyIDAgLjQyLjAyLjYuMDdzLjMzLjEzLjQ1LjIzYy4xMi4xMS4yMi4yNC4yOS40LjA3LjE2LjEuMzUuMS41NyAwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40My0uMTgtLjkyLS4yNy0xLjQ2LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yNy40NS0uMTguODQtLjQzIDEuMTYtLjc2LjMyLS4zMy41Ny0uNzMuNzQtMS4xOS4xNy0uNDcuMjYtLjk5LjI2LTEuNTd2LS40YzAtLjU4LS4wOS0xLjEtLjI2LTEuNTctLjE4LS40Ny0uNDMtLjg3LS43NS0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2Nlc3NpYmlsaXR5Ij48cGF0aCBkPSJNMTIgMmMxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTkgN2gtNnYxM2gtMnYtNmgtMnY2SDlWOUgzVjdoMTh2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2Nlc3NpYmxlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjQiIHI9IjIiPjwvY2lyY2xlPjxwYXRoIGQ9Ik0xOSAxM3YtMmMtMS41NC4wMi0zLjA5LS43NS00LjA3LTEuODNsLTEuMjktMS40M2MtLjE3LS4xOS0uMzgtLjM0LS42MS0uNDUtLjAxIDAtLjAxLS4wMS0uMDItLjAxSDEzYy0uMzUtLjItLjc1LS4zLTEuMTktLjI2QzEwLjc2IDcuMTEgMTAgOC4wNCAxMCA5LjA5VjE1YzAgMS4xLjkgMiAyIDJoNXY1aDJ2LTUuNWMwLTEuMS0uOS0yLTItMmgtM3YtMy40NWMxLjI5IDEuMDcgMy4yNSAxLjk0IDUgMS45NXptLTYuMTcgNWMtLjQxIDEuMTYtMS41MiAyLTIuODMgMi0xLjY2IDAtMy0xLjM0LTMtMyAwLTEuMzEuODQtMi40MSAyLTIuODNWMTIuMWMtMi4yOC40Ni00IDIuNDgtNCA0LjkgMCAyLjc2IDIuMjQgNSA1IDUgMi40MiAwIDQuNDQtMS43MiA0LjktNGgtMi4wN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWJhbGFuY2UiPjxwYXRoIGQ9Ik00IDEwdjdoM3YtN0g0em02IDB2N2gzdi03aC0zek0yIDIyaDE5di0zSDJ2M3ptMTQtMTJ2N2gzdi03aC0zem0tNC41LTlMMiA2djJoMTlWNmwtOS41LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWNjb3VudC1iYWxhbmNlLXdhbGxldCI+PHBhdGggZD0iTTIxIDE4djFjMCAxLjEtLjkgMi0yIDJINWMtMS4xMSAwLTItLjktMi0yVjVjMC0xLjEuODktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MWgtOWMtMS4xMSAwLTIgLjktMiAydjhjMCAxLjEuODkgMiAyIDJoOXptLTktMmgxMFY4SDEydjh6bTQtMi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWJveCI+PHBhdGggZD0iTTMgNXYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0ySDVjLTEuMTEgMC0yIC45LTIgMnptMTIgNGMwIDEuNjYtMS4zNCAzLTMgM3MtMy0xLjM0LTMtMyAxLjM0LTMgMy0zIDMgMS4zNCAzIDN6bS05IDhjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjFINnYtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgM2MxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTAgMTQuMmMtMi41IDAtNC43MS0xLjI4LTYtMy4yMi4wMy0xLjk5IDQtMy4wOCA2LTMuMDggMS45OSAwIDUuOTcgMS4wOSA2IDMuMDgtMS4yOSAxLjk0LTMuNSAzLjIyLTYgMy4yMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQiPjxwYXRoIGQ9Ik0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWFsZXJ0Ij48cGF0aCBkPSJNMTAuMDEgMjEuMDFjMCAxLjEuODkgMS45OSAxLjk5IDEuOTlzMS45OS0uODkgMS45OS0xLjk5aC0zLjk4em04Ljg3LTQuMTlWMTFjMC0zLjI1LTIuMjUtNS45Ny01LjI5LTYuNjl2LS43MkMxMy41OSAyLjcxIDEyLjg4IDIgMTIgMnMtMS41OS43MS0xLjU5IDEuNTl2LjcyQzcuMzcgNS4wMyA1LjEyIDcuNzUgNS4xMiAxMXY1LjgyTDMgMTguOTRWMjBoMTh2LTEuMDZsLTIuMTItMi4xMnpNMTYgMTMuMDFoLTN2M2gtMnYtM0g4VjExaDNWOGgydjNoM3YyLjAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZC1ib3giPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMGgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZC1jaXJjbGUtb3V0bGluZSI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtc2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTExIDloMlY2aDNWNGgtM1YxaC0ydjNIOHYyaDN2M3ptLTQgOWMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnptMTAgMGMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6bS05LjgzLTMuMjVsLjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy44Ni03LjAxTDE5LjQyIDRoLS4wMWwtMS4xIDItMi43NiA1SDguNTNsLS4xMy0uMjdMNi4xNiA2bC0uOTUtMi0uOTQtMkgxdjJoMmwzLjYgNy41OS0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoMTJ2LTJINy40MmMtLjEzIDAtLjI1LS4xMS0uMjUtLjI1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtIj48cGF0aCBkPSJNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLWFkZCI+PHBhdGggZD0iTTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0xLTExaC0ydjNIOHYyaDN2M2gydi0zaDN2LTJoLTNWOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbGFybS1vZmYiPjxwYXRoIGQ9Ik0xMiA2YzMuODcgMCA3IDMuMTMgNyA3IDAgLjg0LS4xNiAxLjY1LS40MyAyLjRsMS41MiAxLjUyYy41OC0xLjE5LjkxLTIuNTEuOTEtMy45MiAwLTQuOTctNC4wMy05LTktOS0xLjQxIDAtMi43My4zMy0zLjkyLjkxTDkuNiA2LjQzQzEwLjM1IDYuMTYgMTEuMTYgNiAxMiA2em0xMC0uMjhsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0yLjkyIDIuMjlMMS42NSAzLjU3IDIuOTggNC45bC0xLjExLjkzIDEuNDIgMS40MiAxLjExLS45NC44LjhDMy44MyA4LjY5IDMgMTAuNzUgMyAxM2MwIDQuOTcgNC4wMiA5IDkgOSAyLjI1IDAgNC4zMS0uODMgNS44OS0yLjJsMi4yIDIuMiAxLjI3LTEuMjdMMy44OSAzLjI3bC0uOTctLjk4em0xMy41NSAxNi4xQzE1LjI2IDE5LjM5IDEzLjcgMjAgMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS43LjYxLTMuMjYgMS42MS00LjQ3bDkuODYgOS44NnpNOC4wMiAzLjI4TDYuNiAxLjg2bC0uODYuNzEgMS40MiAxLjQyLjg2LS43MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbGFybS1vbiI+PHBhdGggZD0iTTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzlMNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0tMS40Ni01LjQ3TDguNDEgMTIuNGwtMS4wNiAxLjA2IDMuMTggMy4xOCA2LTYtMS4wNi0xLjA2LTQuOTMgNC45NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbGwtb3V0Ij48cGF0aCBkPSJNMTYuMjEgNC4xNmw0IDR2LTR6bTQgMTJsLTQgNGg0em0tMTIgNGwtNC00djR6bS00LTEybDQtNGgtNHptMTIuOTUtLjk1Yy0yLjczLTIuNzMtNy4xNy0yLjczLTkuOSAwcy0yLjczIDcuMTcgMCA5LjkgNy4xNyAyLjczIDkuOSAwIDIuNzMtNy4xNiAwLTkuOXptLTEuMSA4LjhjLTIuMTMgMi4xMy01LjU3IDIuMTMtNy43IDBzLTIuMTMtNS41NyAwLTcuNyA1LjU3LTIuMTMgNy43IDAgMi4xMyA1LjU3IDAgNy43eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFuZHJvaWQiPjxwYXRoIGQ9Ik02IDE4YzAgLjU1LjQ1IDEgMSAxaDF2My41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNVYxOWgydjMuNWMwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjVWMTloMWMuNTUgMCAxLS40NSAxLTFWOEg2djEwek0zLjUgOEMyLjY3IDggMiA4LjY3IDIgOS41djdjMCAuODMuNjcgMS41IDEuNSAxLjVTNSAxNy4zMyA1IDE2LjV2LTdDNSA4LjY3IDQuMzMgOCAzLjUgOHptMTcgMGMtLjgzIDAtMS41LjY3LTEuNSAxLjV2N2MwIC44My42NyAxLjUgMS41IDEuNXMxLjUtLjY3IDEuNS0xLjV2LTdjMC0uODMtLjY3LTEuNS0xLjUtMS41em0tNC45Ny01Ljg0bDEuMy0xLjNjLjItLjIuMi0uNTEgMC0uNzEtLjItLjItLjUxLS4yLS43MSAwbC0xLjQ4IDEuNDhDMTMuODUgMS4yMyAxMi45NSAxIDEyIDFjLS45NiAwLTEuODYuMjMtMi42Ni42M0w3Ljg1LjE1Yy0uMi0uMi0uNTEtLjItLjcxIDAtLjIuMi0uMi41MSAwIC43MWwxLjMxIDEuMzFDNi45NyAzLjI2IDYgNS4wMSA2IDdoMTJjMC0xLjk5LS45Ny0zLjc1LTIuNDctNC44NHpNMTAgNUg5VjRoMXYxem01IDBoLTFWNGgxdjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYW5ub3VuY2VtZW50Ij48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDloLTJWNWgydjZ6bTAgNGgtMnYtMmgydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXBwcyI+PHBhdGggZD0iTTQgOGg0VjRINHY0em02IDEyaDR2LTRoLTR2NHptLTYgMGg0di00SDR2NHptMC02aDR2LTRINHY0em02IDBoNHYtNGgtNHY0em02LTEwdjRoNFY0aC00em0tNiA0aDRWNGgtNHY0em02IDZoNHYtNGgtNHY0em0wIDZoNHYtNGgtNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFyY2hpdmUiPjxwYXRoIGQ9Ik0yMC41NCA1LjIzbC0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTYuNTVMMy40NiA1LjIzQzMuMTcgNS41NyAzIDYuMDIgMyA2LjVWMTljMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDgtLjE3LS45My0uNDYtMS4yN3pNMTIgMTcuNUw2LjUgMTJIMTB2LTJoNHYyaDMuNUwxMiAxNy41ek01LjEyIDVsLjgxLTFoMTJsLjk0IDFINS4xMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1iYWNrIj48cGF0aCBkPSJNMjAgMTFINy44M2w1LjU5LTUuNTlMMTIgNGwtOCA4IDggOCAxLjQxLTEuNDFMNy44MyAxM0gyMHYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kb3dud2FyZCI+PHBhdGggZD0iTTIwIDEybC0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLWRvd24iPjxwYXRoIGQ9Ik03IDEwbDUgNSA1LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXJyb3ctZHJvcC1kb3duLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTJsLTQtNGg4bC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXJyb3ctZHJvcC11cCI+PHBhdGggZD0iTTcgMTRsNS01IDUgNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1mb3J3YXJkIj48cGF0aCBkPSJNMTIgNGwtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy11cHdhcmQiPjxwYXRoIGQ9Ik00IDEybDEuNDEgMS40MUwxMSA3LjgzVjIwaDJWNy44M2w1LjU4IDUuNTlMMjAgMTJsLTgtOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNwZWN0LXJhdGlvIj48cGF0aCBkPSJNMTkgMTJoLTJ2M2gtM3YyaDV2LTV6TTcgOWgzVjdINXY1aDJWOXptMTQtNkgzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2Vzc21lbnQiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50Ij48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIgMTRIN3YtMmg3djJ6bTMtNEg3di0yaDEwdjJ6bTAtNEg3VjdoMTB2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LWluZCI+PHBhdGggZD0iTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0wIDRjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTEuNGMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjFWMTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaWdubWVudC1sYXRlIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNiAxNWgtMnYtMmgydjJ6bTAtNGgtMlY4aDJ2NnptLTEtOWMtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtcmV0dXJuIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTQgMTJoLTR2M2wtNS01IDUtNXYzaDR2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LXJldHVybmVkIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgMTVsLTUtNWgzVjloNHY0aDNsLTUgNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LXR1cm5lZC1pbiI+PHBhdGggZD0iTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0tMiAxNGwtNC00IDEuNDEtMS40MUwxMCAxNC4xN2w2LjU5LTYuNTlMMTggOWwtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImF0dGFjaG1lbnQiPjxwYXRoIGQ9Ik0yIDEyLjVDMiA5LjQ2IDQuNDYgNyA3LjUgN0gxOGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNEg5LjVDOC4xMiAxNSA3IDEzLjg4IDcgMTIuNVM4LjEyIDEwIDkuNSAxMEgxN3YySDkuNDFjLS41NSAwLS41NSAxIDAgMUgxOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTJINy41QzUuNTcgOSA0IDEwLjU3IDQgMTIuNVM1LjU3IDE2IDcuNSAxNkgxN3YySDcuNUM0LjQ2IDE4IDIgMTUuNTQgMiAxMi41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImF1dG9yZW5ldyI+PHBhdGggZD0iTTEyIDZ2M2w0LTQtNC00djNjLTQuNDIgMC04IDMuNTgtOCA4IDAgMS41Ny40NiAzLjAzIDEuMjQgNC4yNkw2LjcgMTQuOGMtLjQ1LS44My0uNy0xLjc5LS43LTIuOCAwLTMuMzEgMi42OS02IDYtNnptNi43NiAxLjc0TDE3LjMgOS4yYy40NC44NC43IDEuNzkuNyAyLjggMCAzLjMxLTIuNjkgNi02IDZ2LTNsLTQgNCA0IDR2LTNjNC40MiAwIDgtMy41OCA4LTggMC0xLjU3LS40Ni0zLjAzLTEuMjQtNC4yNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJiYWNrc3BhY2UiPjxwYXRoIGQ9Ik0yMiAzSDdjLS42OSAwLTEuMjMuMzUtMS41OS44OEwwIDEybDUuNDEgOC4xMWMuMzYuNTMuOS44OSAxLjU5Ljg5aDE1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0zIDEyLjU5TDE3LjU5IDE3IDE0IDEzLjQxIDEwLjQxIDE3IDkgMTUuNTkgMTIuNTkgMTIgOSA4LjQxIDEwLjQxIDcgMTQgMTAuNTkgMTcuNTkgNyAxOSA4LjQxIDE1LjQxIDEyIDE5IDE1LjU5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJhY2t1cCI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmxvY2siPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek00IDEyYzAtNC40MiAzLjU4LTggOC04IDEuODUgMCAzLjU1LjYzIDQuOSAxLjY5TDUuNjkgMTYuOUM0LjYzIDE1LjU1IDQgMTMuODUgNCAxMnptOCA4Yy0xLjg1IDAtMy41NS0uNjMtNC45LTEuNjlMMTguMzEgNy4xQzE5LjM3IDguNDUgMjAgMTAuMTUgMjAgMTJjMCA0LjQyLTMuNTggOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYm9vayI+PHBhdGggZD0iTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDRoNXY4bC0yLjUtMS41TDYgMTJWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJib29rbWFyayI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJib29rbWFyay1ib3JkZXIiPjxwYXRoIGQ9Ik0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTVsLTUtMi4xOEw3IDE4VjVoMTB2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYnVnLXJlcG9ydCI+PHBhdGggZD0iTTIwIDhoLTIuODFjLS40NS0uNzgtMS4wNy0xLjQ1LTEuODItMS45NkwxNyA0LjQxIDE1LjU5IDNsLTIuMTcgMi4xN0MxMi45NiA1LjA2IDEyLjQ5IDUgMTIgNWMtLjQ5IDAtLjk2LjA2LTEuNDEuMTdMOC40MSAzIDcgNC40MWwxLjYyIDEuNjNDNy44OCA2LjU1IDcuMjYgNy4yMiA2LjgxIDhINHYyaDIuMDljLS4wNS4zMy0uMDkuNjYtLjA5IDF2MUg0djJoMnYxYzAgLjM0LjA0LjY3LjA5IDFINHYyaDIuODFjMS4wNCAxLjc5IDIuOTcgMyA1LjE5IDNzNC4xNS0xLjIxIDUuMTktM0gyMHYtMmgtMi4wOWMuMDUtLjMzLjA5LS42Ni4wOS0xdi0xaDJ2LTJoLTJ2LTFjMC0uMzQtLjA0LS42Ny0uMDktMUgyMFY4em0tNiA4aC00di0yaDR2MnptMC00aC00di0yaDR2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJidWlsZCI+PHBhdGggZD0iTTIyLjcgMTlsLTkuMS05LjFjLjktMi4zLjQtNS0xLjUtNi45LTItMi01LTIuNC03LjQtMS4zTDkgNiA2IDkgMS42IDQuN0MuNCA3LjEuOSAxMC4xIDIuOSAxMi4xYzEuOSAxLjkgNC42IDIuNCA2LjkgMS41bDkuMSA5LjFjLjQuNCAxIC40IDEuNCAwbDIuMy0yLjNjLjUtLjQuNS0xLjEuMS0xLjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FjaGVkIj48cGF0aCBkPSJNMTkgOGwtNCA0aDNjMCAzLjMxLTIuNjkgNi02IDYtMS4wMSAwLTEuOTctLjI1LTIuOC0uN2wtMS40NiAxLjQ2QzguOTcgMTkuNTQgMTAuNDMgMjAgMTIgMjBjNC40MiAwIDgtMy41OCA4LThoM2wtNC00ek02IDEyYzAtMy4zMSAyLjY5LTYgNi02IDEuMDEgMCAxLjk3LjI1IDIuOC43bDEuNDYtMS40NkMxNS4wMyA0LjQ2IDEzLjU3IDQgMTIgNGMtNC40MiAwLTggMy41OC04IDhIMWw0IDQgNC00SDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FtZXJhLWVuaGFuY2UiPjxwYXRoIGQ9Ik05IDNMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMmgtMy4xN0wxNSAzSDl6bTMgMTVjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLTFsMS4yNS0yLjc1TDE2IDEzbC0yLjc1LTEuMjVMMTIgOWwtMS4yNSAyLjc1TDggMTNsMi43NSAxLjI1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbmNlbCI+PHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhcmQtZ2lmdGNhcmQiPjxwYXRoIGQ9Ik0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTEgMC0xLjY2LTEuMzQtMy0zLTMtMS4wNSAwLTEuOTYuNTQtMi41IDEuMzVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYXJkLW1lbWJlcnNoaXAiPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMTEgMC0yIC44OS0yIDJ2MTFjMCAxLjExLjg5IDIgMiAyaDR2NWw0LTIgNCAydi01aDRjMS4xMSAwIDItLjg5IDItMlY0YzAtMS4xMS0uODktMi0yLTJ6bTAgMTNINHYtMmgxNnYyem0wLTVINFY0aDE2djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FyZC10cmF2ZWwiPjxwYXRoIGQ9Ik0yMCA2aC0zVjRjMC0xLjExLS44OS0yLTItMkg5Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6TTkgNGg2djJIOVY0em0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoM3YyaDJWOGg2djJoMlY4aDN2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGFuZ2UtaGlzdG9yeSI+PHBhdGggZD0iTTEyIDcuNzdMMTguMzkgMThINS42MUwxMiA3Ljc3TTEyIDRMMiAyMGgyMEwxMiA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZWNrIj48cGF0aCBkPSJNOSAxNi4xN0w0LjgzIDEybC0xLjQyIDEuNDFMOSAxOSAyMSA3bC0xLjQxLTEuNDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2stYm94Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjkgMi0yVjVjMC0xLjEtLjg5LTItMi0yem0tOSAxNGwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZWNrLWJveC1vdXRsaW5lLWJsYW5rIj48cGF0aCBkPSJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGVjay1jaXJjbGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZXZyb24tbGVmdCI+PHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hldnJvbi1yaWdodCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNocm9tZS1yZWFkZXItbW9kZSI+PHBhdGggZD0iTTEzIDEyaDd2MS41aC03em0wLTIuNWg3VjExaC03em0wIDVoN1YxNmgtN3pNMjEgNEgzYy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTVoLTlWNmg5djEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsYXNzIj48cGF0aCBkPSJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsZWFyIj48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3NlIj48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTQuNSAxNEg4Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zbC4xNC4wMUM4LjU4IDguMjggMTAuMTMgNyAxMiA3YzIuMjEgMCA0IDEuNzkgNCA0aC41YzEuMzggMCAyLjUgMS4xMiAyLjUgMi41UzE3Ljg4IDE2IDE2LjUgMTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtZG9uZSI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTAgMTdsLTMuNS0zLjUgMS40MS0xLjQxTDEwIDE0LjE3IDE1LjE4IDlsMS40MSAxLjQxTDEwIDE3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkLWRvd25sb2FkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNyAxM2wtNSA1LTUtNWgzVjloNHY0aDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtb2ZmIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDRjLTEuNDggMC0yLjg1LjQzLTQuMDEgMS4xN2wxLjQ2IDEuNDZDMTAuMjEgNi4yMyAxMS4wOCA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTljMS42NiAwIDMgMS4zNCAzIDMgMCAxLjEzLS42NCAyLjExLTEuNTYgMi42MmwxLjQ1IDEuNDVDMjMuMTYgMTguMTYgMjQgMTYuNjggMjQgMTVjMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTMgNS4yN2wyLjc1IDIuNzRDMi41NiA4LjE1IDAgMTAuNzcgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxMS43M2wyIDJMMjEgMjAuNzMgNC4yNyA0IDMgNS4yN3pNNy43MyAxMGw4IDhINmMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNGgxLjczeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNsb3VkLXF1ZXVlIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aC43MUM3LjM3IDcuNjkgOS40OCA2IDEyIDZjMy4wNCAwIDUuNSAyLjQ2IDUuNSA1LjV2LjVIMTljMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtdXBsb2FkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2RlIj48cGF0aCBkPSJNOS40IDE2LjZMNC44IDEybDQuNi00LjZMOCA2bC02IDYgNiA2IDEuNC0xLjR6bTUuMiAwbDQuNi00LjYtNC42LTQuNkwxNiA2bDYgNi02IDYtMS40LTEuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb21wYXJlLWFycm93cyI+PHBhdGggZD0iTTkuMDEgMTRIMnYyaDcuMDF2M0wxMyAxNWwtMy45OS00djN6bTUuOTgtMXYtM0gyMlY4aC03LjAxVjVMMTEgOWwzLjk5IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udGVudC1jb3B5Ij48cGF0aCBkPSJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptMyA0SDhjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTFjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNkg4VjdoMTF2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udGVudC1jdXQiPjxwYXRoIGQ9Ik05LjY0IDcuNjRjLjIzLS41LjM2LTEuMDUuMzYtMS42NCAwLTIuMjEtMS43OS00LTQtNFMyIDMuNzkgMiA2czEuNzkgNCA0IDRjLjU5IDAgMS4xNC0uMTMgMS42NC0uMzZMMTAgMTJsLTIuMzYgMi4zNkM3LjE0IDE0LjEzIDYuNTkgMTQgNiAxNGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00YzAtLjU5LS4xMy0xLjE0LS4zNi0xLjY0TDEyIDE0bDcgN2gzdi0xTDkuNjQgNy42NHpNNiA4Yy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem0wIDEyYy0xLjEgMC0yLS44OS0yLTJzLjktMiAyLTIgMiAuODkgMiAyLS45IDItMiAyem02LTcuNWMtLjI4IDAtLjUtLjIyLS41LS41cy4yMi0uNS41LS41LjUuMjIuNS41LS4yMi41LS41LjV6TTE5IDNsLTYgNiAyIDIgNy03VjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udGVudC1wYXN0ZSI+PHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb3B5cmlnaHQiPjxwYXRoIGQ9Ik0xMC4wOCAxMC44NmMuMDUtLjMzLjE2LS42Mi4zLS44N3MuMzQtLjQ2LjU5LS42MmMuMjQtLjE1LjU0LS4yMi45MS0uMjMuMjMuMDEuNDQuMDUuNjMuMTMuMi4wOS4zOC4yMS41Mi4zNnMuMjUuMzMuMzQuNTMuMTMuNDIuMTQuNjRoMS43OWMtLjAyLS40Ny0uMTEtLjktLjI4LTEuMjlzLS40LS43My0uNy0xLjAxLS42Ni0uNS0xLjA4LS42Ni0uODgtLjIzLTEuMzktLjIzYy0uNjUgMC0xLjIyLjExLTEuNy4zNHMtLjg4LjUzLTEuMi45Mi0uNTYuODQtLjcxIDEuMzZTOCAxMS4yOSA4IDExLjg3di4yN2MwIC41OC4wOCAxLjEyLjIzIDEuNjRzLjM5Ljk3LjcxIDEuMzUuNzIuNjkgMS4yLjkxIDEuMDUuMzQgMS43LjM0Yy40NyAwIC45MS0uMDggMS4zMi0uMjNzLjc3LS4zNiAxLjA4LS42My41Ni0uNTguNzQtLjk0LjI5LS43NC4zLTEuMTVoLTEuNzljLS4wMS4yMS0uMDYuNC0uMTUuNThzLS4yMS4zMy0uMzYuNDYtLjMyLjIzLS41Mi4zYy0uMTkuMDctLjM5LjA5LS42LjEtLjM2LS4wMS0uNjYtLjA4LS44OS0uMjMtLjI1LS4xNi0uNDUtLjM3LS41OS0uNjJzLS4yNS0uNTUtLjMtLjg4LS4wOC0uNjctLjA4LTF2LS4yN2MwLS4zNS4wMy0uNjguMDgtMS4wMXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlYXRlIj48cGF0aCBkPSJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyZWF0ZS1uZXctZm9sZGVyIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTEgOGgtM3YzaC0ydi0zaC0zdi0yaDNWOWgydjNoM3YyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyZWRpdC1jYXJkIj48cGF0aCBkPSJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINHYtNmgxNnY2em0wLTEwSDRWNmgxNnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRhc2hib2FyZCI+PHBhdGggZD0iTTMgMTNoOFYzSDN2MTB6bTAgOGg4di02SDN2NnptMTAgMGg4VjExaC04djEwem0wLTE4djZoOFYzaC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRhdGUtcmFuZ2UiPjxwYXRoIGQ9Ik05IDExSDd2Mmgydi0yem00IDBoLTJ2Mmgydi0yem00IDBoLTJ2Mmgydi0yem0yLTdoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUiPjxwYXRoIGQ9Ik02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVsZXRlLWZvcmV2ZXIiPjxwYXRoIGQ9Ik02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6bTIuNDYtNy4xMmwxLjQxLTEuNDFMMTIgMTIuNTlsMi4xMi0yLjEyIDEuNDEgMS40MUwxMy40MSAxNGwyLjEyIDIuMTItMS40MSAxLjQxTDEyIDE1LjQxbC0yLjEyIDIuMTItMS40MS0xLjQxTDEwLjU5IDE0bC0yLjEzLTIuMTJ6TTE1LjUgNGwtMS0xaC01bC0xIDFINXYyaDE0VjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVsZXRlLXN3ZWVwIj48cGF0aCBkPSJNMTUgMTZoNHYyaC00em0wLThoN3YyaC03em0wIDRoNnYyaC02ek0zIDE4YzAgMS4xLjkgMiAyIDJoNmMxLjEgMCAyLS45IDItMlY4SDN2MTB6TTE0IDVoLTNsLTEtMUg2TDUgNUgydjJoMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVzY3JpcHRpb24iPjxwYXRoIGQ9Ik0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTZIOHYtMmg4djJ6bTAtNEg4di0yaDh2MnptLTMtNVYzLjVMMTguNSA5SDEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRucyI+PHBhdGggZD0iTTIwIDEzSDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6TTcgMTljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek0yMCAzSDRjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE2Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXpNNyA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkb25lIj48cGF0aCBkPSJNOSAxNi4yTDQuOCAxMmwtMS40IDEuNEw5IDE5IDIxIDdsLTEuNC0xLjRMOSAxNi4yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbmUtYWxsIj48cGF0aCBkPSJNMTggN2wtMS40MS0xLjQxLTYuMzQgNi4zNCAxLjQxIDEuNDFMMTggN3ptNC4yNC0xLjQxTDExLjY2IDE2LjE3IDcuNDggMTJsLTEuNDEgMS40MUwxMS42NiAxOWwxMi0xMi0xLjQyLTEuNDF6TS40MSAxMy40MUw2IDE5bDEuNDEtMS40MUwxLjgzIDEyIC40MSAxMy40MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJkb251dC1sYXJnZSI+PHBhdGggZD0iTTExIDUuMDhWMmMtNSAuNS05IDQuODEtOSAxMHM0IDkuNSA5IDEwdi0zLjA4Yy0zLS40OC02LTMuNC02LTYuOTJzMy02LjQ0IDYtNi45MnpNMTguOTcgMTFIMjJjLS40Ny01LTQtOC41My05LTl2My4wOEMxNiA1LjUxIDE4LjU0IDggMTguOTcgMTF6TTEzIDE4LjkyVjIyYzUtLjQ3IDguNTMtNCA5LTloLTMuMDNjLS40MyAzLTIuOTcgNS40OS01Ljk3IDUuOTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG9udXQtc21hbGwiPjxwYXRoIGQ9Ik0xMSA5LjE2VjJjLTUgLjUtOSA0Ljc5LTkgMTBzNCA5LjUgOSAxMHYtNy4xNmMtMS0uNDEtMi0xLjUyLTItMi44NHMxLTIuNDMgMi0yLjg0ek0xNC44NiAxMUgyMmMtLjQ4LTQuNzUtNC04LjUzLTktOXY3LjE2YzEgLjMgMS41Mi45OCAxLjg2IDEuODR6TTEzIDE0Ljg0VjIyYzUtLjQ3IDguNTItNC4yNSA5LTloLTcuMTRjLS4zNC44Ni0uODYgMS41NC0xLjg2IDEuODR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZHJhZnRzIj48cGF0aCBkPSJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwek0xMiAxM0wzLjc0IDcuODQgMTIgM2w4LjI2IDQuODRMMTIgMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZWplY3QiPjxwYXRoIGQ9Ik01IDE3aDE0djJINXptNy0xMkw1LjMzIDE1aDEzLjM0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVycm9yIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxNWgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJlcnJvci1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem0uOTktNUM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV1cm8tc3ltYm9sIj48cGF0aCBkPSJNMTUgMTguNWMtMi41MSAwLTQuNjgtMS40Mi01Ljc2LTMuNUgxNXYtMkg4LjU4Yy0uMDUtLjMzLS4wOC0uNjYtLjA4LTFzLjAzLS42Ny4wOC0xSDE1VjlIOS4yNEMxMC4zMiA2LjkyIDEyLjUgNS41IDE1IDUuNWMxLjYxIDAgMy4wOS41OSA0LjIzIDEuNTdMMjEgNS4zQzE5LjQxIDMuODcgMTcuMyAzIDE1IDNjLTMuOTIgMC03LjI0IDIuNTEtOC40OCA2SDN2MmgzLjA2Yy0uMDQuMzMtLjA2LjY2LS4wNiAxIDAgLjM0LjAyLjY3LjA2IDFIM3YyaDMuNTJjMS4yNCAzLjQ5IDQuNTYgNiA4LjQ4IDYgMi4zMSAwIDQuNDEtLjg3IDYtMi4zbC0xLjc4LTEuNzdjLTEuMTMuOTgtMi42IDEuNTctNC4yMiAxLjU3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV2ZW50Ij48cGF0aCBkPSJNMTcgMTJoLTV2NWg1di01ek0xNiAxdjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJoLTFWMWgtMnptMyAxOEg1VjhoMTR2MTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXZlbnQtc2VhdCI+PHBhdGggZD0iTTQgMTh2M2gzdi0zaDEwdjNoM3YtNkg0em0xNS04aDN2M2gtM3pNMiAxMGgzdjNIMnptMTUgM0g3VjVjMC0xLjEuOS0yIDItMmg2YzEuMSAwIDIgLjkgMiAydjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhpdC10by1hcHAiPjxwYXRoIGQ9Ik0xMC4wOSAxNS41OUwxMS41IDE3bDUtNS01LTUtMS40MSAxLjQxTDEyLjY3IDExSDN2Mmg5LjY3bC0yLjU4IDIuNTl6TTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjRoMlY1aDE0djE0SDV2LTRIM3Y0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwYW5kLWxlc3MiPjxwYXRoIGQ9Ik0xMiA4bC02IDYgMS40MSAxLjQxTDEyIDEwLjgzbDQuNTkgNC41OEwxOCAxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBhbmQtbW9yZSI+PHBhdGggZD0iTTE2LjU5IDguNTlMMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBsb3JlIj48cGF0aCBkPSJNMTIgMTAuOWMtLjYxIDAtMS4xLjQ5LTEuMSAxLjFzLjQ5IDEuMSAxLjEgMS4xYy42MSAwIDEuMS0uNDkgMS4xLTEuMXMtLjQ5LTEuMS0xLjEtMS4xek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0yLjE5IDEyLjE5TDYgMThsMy44MS04LjE5TDE4IDZsLTMuODEgOC4xOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHRlbnNpb24iPjxwYXRoIGQ9Ik0yMC41IDExSDE5VjdjMC0xLjEtLjktMi0yLTJoLTRWMy41QzEzIDIuMTIgMTEuODggMSAxMC41IDFTOCAyLjEyIDggMy41VjVINGMtMS4xIDAtMS45OS45LTEuOTkgMnYzLjhIMy41YzEuNDkgMCAyLjcgMS4yMSAyLjcgMi43cy0xLjIxIDIuNy0yLjcgMi43SDJWMjBjMCAxLjEuOSAyIDIgMmgzLjh2LTEuNWMwLTEuNDkgMS4yMS0yLjcgMi43LTIuNyAxLjQ5IDAgMi43IDEuMjEgMi43IDIuN1YyMkgxN2MxLjEgMCAyLS45IDItMnYtNGgxLjVjMS4zOCAwIDIuNS0xLjEyIDIuNS0yLjVTMjEuODggMTEgMjAuNSAxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmYWNlIj48cGF0aCBkPSJNOSAxMS43NWMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjVzLjU2IDEuMjUgMS4yNSAxLjI1IDEuMjUtLjU2IDEuMjUtMS4yNS0uNTYtMS4yNS0xLjI1LTEuMjV6bTYgMGMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjVzLjU2IDEuMjUgMS4yNSAxLjI1IDEuMjUtLjU2IDEuMjUtMS4yNS0uNTYtMS4yNS0xLjI1LTEuMjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04IDAtLjI5LjAyLS41OC4wNS0uODYgMi4zNi0xLjA1IDQuMjMtMi45OCA1LjIxLTUuMzdDMTEuMDcgOC4zMyAxNC4wNSAxMCAxNy40MiAxMGMuNzggMCAxLjUzLS4wOSAyLjI1LS4yNi4yMS43MS4zMyAxLjQ3LjMzIDIuMjYgMCA0LjQxLTMuNTkgOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmF2b3JpdGUiPjxwYXRoIGQ9Ik0xMiAyMS4zNWwtMS40NS0xLjMyQzUuNCAxNS4zNiAyIDEyLjI4IDIgOC41IDIgNS40MiA0LjQyIDMgNy41IDNjMS43NCAwIDMuNDEuODEgNC41IDIuMDlDMTMuMDkgMy44MSAxNC43NiAzIDE2LjUgMyAxOS41OCAzIDIyIDUuNDIgMjIgOC41YzAgMy43OC0zLjQgNi44Ni04LjU1IDExLjU0TDEyIDIxLjM1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZhdm9yaXRlLWJvcmRlciI+PHBhdGggZD0iTTE2LjUgM2MtMS43NCAwLTMuNDEuODEtNC41IDIuMDlDMTAuOTEgMy44MSA5LjI0IDMgNy41IDMgNC40MiAzIDIgNS40MiAyIDguNWMwIDMuNzggMy40IDYuODYgOC41NSAxMS41NEwxMiAyMS4zNWwxLjQ1LTEuMzJDMTguNiAxNS4zNiAyMiAxMi4yOCAyMiA4LjUgMjIgNS40MiAxOS41OCAzIDE2LjUgM3ptLTQuNCAxNS41NWwtLjEuMS0uMS0uMUM3LjE0IDE0LjI0IDQgMTEuMzkgNCA4LjUgNCA2LjUgNS41IDUgNy41IDVjMS41NCAwIDMuMDQuOTkgMy41NyAyLjM2aDEuODdDMTMuNDYgNS45OSAxNC45NiA1IDE2LjUgNWMyIDAgMy41IDEuNSAzLjUgMy41IDAgMi44OS0zLjE0IDUuNzQtNy45IDEwLjA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZlZWRiYWNrIj48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbGUtZG93bmxvYWQiPjxwYXRoIGQ9Ik0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3pNNSAxOHYyaDE0di0ySDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsZS11cGxvYWQiPjxwYXRoIGQ9Ik05IDE2aDZ2LTZoNGwtNy03LTcgN2g0em0tNCAyaDE0djJINXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItbGlzdCI+PHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbmQtaW4tcGFnZSI+PHBhdGggZD0iTTIwIDE5LjU5VjhsLTYtNkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjLjQ1IDAgLjg1LS4xNSAxLjE5LS40bC00LjQzLTQuNDNjLS44LjUyLTEuNzQuODMtMi43Ni44My0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDVjMCAxLjAyLS4zMSAxLjk2LS44MyAyLjc1TDIwIDE5LjU5ek05IDEzYzAgMS42NiAxLjM0IDMgMyAzczMtMS4zNCAzLTMtMS4zNC0zLTMtMy0zIDEuMzQtMyAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbmQtcmVwbGFjZSI+PHBhdGggZD0iTTExIDZjMS4zOCAwIDIuNjMuNTYgMy41NCAxLjQ2TDEyIDEwaDZWNGwtMi4wNSAyLjA1QzE0LjY4IDQuNzggMTIuOTMgNCAxMSA0Yy0zLjUzIDAtNi40MyAyLjYxLTYuOTIgNkg2LjFjLjQ2LTIuMjggMi40OC00IDQuOS00em01LjY0IDkuMTRjLjY2LS45IDEuMTItMS45NyAxLjI4LTMuMTRIMTUuOWMtLjQ2IDIuMjgtMi40OCA0LTQuOSA0LTEuMzggMC0yLjYzLS41Ni0zLjU0LTEuNDZMMTAgMTJINHY2bDIuMDUtMi4wNUM3LjMyIDE3LjIyIDkuMDcgMTggMTEgMThjMS41NSAwIDIuOTgtLjUxIDQuMTQtMS4zNkwyMCAyMS40OSAyMS40OSAyMGwtNC44NS00Ljg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbmdlcnByaW50Ij48cGF0aCBkPSJNMTcuODEgNC40N2MtLjA4IDAtLjE2LS4wMi0uMjMtLjA2QzE1LjY2IDMuNDIgMTQgMyAxMi4wMSAzYy0xLjk4IDAtMy44Ni40Ny01LjU3IDEuNDEtLjI0LjEzLS41NC4wNC0uNjgtLjItLjEzLS4yNC0uMDQtLjU1LjItLjY4QzcuODIgMi41MiA5Ljg2IDIgMTIuMDEgMmMyLjEzIDAgMy45OS40NyA2LjAzIDEuNTIuMjUuMTMuMzQuNDMuMjEuNjctLjA5LjE4LS4yNi4yOC0uNDQuMjh6TTMuNSA5LjcyYy0uMSAwLS4yLS4wMy0uMjktLjA5LS4yMy0uMTYtLjI4LS40Ny0uMTItLjcuOTktMS40IDIuMjUtMi41IDMuNzUtMy4yN0M5Ljk4IDQuMDQgMTQgNC4wMyAxNy4xNSA1LjY1YzEuNS43NyAyLjc2IDEuODYgMy43NSAzLjI1LjE2LjIyLjExLjU0LS4xMi43LS4yMy4xNi0uNTQuMTEtLjctLjEyLS45LTEuMjYtMi4wNC0yLjI1LTMuMzktMi45NC0yLjg3LTEuNDctNi41NC0xLjQ3LTkuNC4wMS0xLjM2LjctMi41IDEuNy0zLjQgMi45Ni0uMDguMTQtLjIzLjIxLS4zOS4yMXptNi4yNSAxMi4wN2MtLjEzIDAtLjI2LS4wNS0uMzUtLjE1LS44Ny0uODctMS4zNC0xLjQzLTIuMDEtMi42NC0uNjktMS4yMy0xLjA1LTIuNzMtMS4wNS00LjM0IDAtMi45NyAyLjU0LTUuMzkgNS42Ni01LjM5czUuNjYgMi40MiA1LjY2IDUuMzljMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41YzAtMi40Mi0yLjA5LTQuMzktNC42Ni00LjM5LTIuNTcgMC00LjY2IDEuOTctNC42NiA0LjM5IDAgMS40NC4zMiAyLjc3LjkzIDMuODUuNjQgMS4xNSAxLjA4IDEuNjQgMS44NSAyLjQyLjE5LjIuMTkuNTEgMCAuNzEtLjExLjEtLjI0LjE1LS4zNy4xNXptNy4xNy0xLjg1Yy0xLjE5IDAtMi4yNC0uMy0zLjEtLjg5LTEuNDktMS4wMS0yLjM4LTIuNjUtMi4zOC00LjM5IDAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41YzAgMS40MS43MiAyLjc0IDEuOTQgMy41Ni43MS40OCAxLjU0LjcxIDIuNTQuNzEuMjQgMCAuNjQtLjAzIDEuMDQtLjEuMjctLjA1LjUzLjEzLjU4LjQxLjA1LjI3LS4xMy41My0uNDEuNTgtLjU3LjExLTEuMDcuMTItMS4yMS4xMnpNMTQuOTEgMjJjLS4wNCAwLS4wOS0uMDEtLjEzLS4wMi0xLjU5LS40NC0yLjYzLTEuMDMtMy43Mi0yLjEtMS40LTEuMzktMi4xNy0zLjI0LTIuMTctNS4yMiAwLTEuNjIgMS4zOC0yLjk0IDMuMDgtMi45NCAxLjcgMCAzLjA4IDEuMzIgMy4wOCAyLjk0IDAgMS4wNy45MyAxLjk0IDIuMDggMS45NHMyLjA4LS44NyAyLjA4LTEuOTRjMC0zLjc3LTMuMjUtNi44My03LjI1LTYuODMtMi44NCAwLTUuNDQgMS41OC02LjYxIDQuMDMtLjM5LjgxLS41OSAxLjc2LS41OSAyLjggMCAuNzguMDcgMi4wMS42NyAzLjYxLjEuMjYtLjAzLjU1LS4yOS42NC0uMjYuMS0uNTUtLjA0LS42NC0uMjktLjQ5LTEuMzEtLjczLTIuNjEtLjczLTMuOTYgMC0xLjIuMjMtMi4yOS42OC0zLjI0IDEuMzMtMi43OSA0LjI4LTQuNiA3LjUxLTQuNiA0LjU1IDAgOC4yNSAzLjUxIDguMjUgNy44MyAwIDEuNjItMS4zOCAyLjk0LTMuMDggMi45NHMtMy4wOC0xLjMyLTMuMDgtMi45NGMwLTEuMDctLjkzLTEuOTQtMi4wOC0xLjk0cy0yLjA4Ljg3LTIuMDggMS45NGMwIDEuNzEuNjYgMy4zMSAxLjg3IDQuNTEuOTUuOTQgMS44NiAxLjQ2IDMuMjcgMS44NS4yNy4wNy40Mi4zNS4zNS42MS0uMDUuMjMtLjI2LjM4LS40Ny4zOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaXJzdC1wYWdlIj48cGF0aCBkPSJNMTguNDEgMTYuNTlMMTMuODIgMTJsNC41OS00LjU5TDE3IDZsLTYgNiA2IDZ6TTYgNmgydjEySDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxhZyI+PHBhdGggZD0iTTE0LjQgNkwxNCA0SDV2MTdoMnYtN2g1LjZsLjQgMmg3VjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpZ2h0LWxhbmQiPjxwYXRoIGQ9Ik0yLjUgMTloMTl2MmgtMTl6bTcuMTgtNS43M2w0LjM1IDEuMTYgNS4zMSAxLjQyYy44LjIxIDEuNjItLjI2IDEuODQtMS4wNi4yMS0uOC0uMjYtMS42Mi0xLjA2LTEuODRsLTUuMzEtMS40Mi0yLjc2LTkuMDJMMTAuMTIgMnY4LjI4TDUuMTUgOC45NWwtLjkzLTIuMzItMS40NS0uMzl2NS4xN2wxLjYuNDMgNS4zMSAxLjQzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsaWdodC10YWtlb2ZmIj48cGF0aCBkPSJNMi41IDE5aDE5djJoLTE5em0xOS41Ny05LjM2Yy0uMjEtLjgtMS4wNC0xLjI4LTEuODQtMS4wNkwxNC45MiAxMGwtNi45LTYuNDMtMS45My41MSA0LjE0IDcuMTctNC45NyAxLjMzLTEuOTctMS41NC0xLjQ1LjM5IDEuODIgMy4xNi43NyAxLjMzIDEuNi0uNDMgNS4zMS0xLjQyIDQuMzUtMS4xNkwyMSAxMS40OWMuODEtLjIzIDEuMjgtMS4wNSAxLjA3LTEuODV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpcC10by1iYWNrIj48cGF0aCBkPSJNOSA3SDd2MmgyVjd6bTAgNEg3djJoMnYtMnptMC04Yy0xLjExIDAtMiAuOS0yIDJoMlYzem00IDEyaC0ydjJoMnYtMnptNi0xMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS02IDBoLTJ2MmgyVjN6TTkgMTd2LTJIN2MwIDEuMS44OSAyIDIgMnptMTAtNGgydi0yaC0ydjJ6bTAtNGgyVjdoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6TTUgN0gzdjEyYzAgMS4xLjg5IDIgMiAyaDEydi0ySDVWN3ptMTAtMmgyVjNoLTJ2MnptMCAxMmgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpcC10by1mcm9udCI+PHBhdGggZD0iTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMiA0di0ySDNjMCAxLjEuODkgMiAyIDJ6TTMgOWgyVjdIM3Yyem0xMiAxMmgydi0yaC0ydjJ6bTQtMThIOWMtMS4xMSAwLTIgLjktMiAydjEwYzAgMS4xLjg5IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJIOVY1aDEwdjEwem0tOCA2aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb2xkZXIiPjxwYXRoIGQ9Ik0xMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJoLThsLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb2xkZXItb3BlbiI+PHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yem0wIDEySDRWOGgxNnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb2xkZXItc2hhcmVkIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS01IDNjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem00IDhoLTh2LTFjMC0xLjMzIDIuNjctMiA0LTJzNCAuNjcgNCAydjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZm9udC1kb3dubG9hZCI+PHBhdGggZD0iTTkuOTMgMTMuNWg0LjE0TDEyIDcuOTh6TTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNC4wNSAxNi41bC0xLjE0LTNIOS4xN2wtMS4xMiAzSDUuOTZsNS4xMS0xM2gxLjg2bDUuMTEgMTNoLTIuMDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZm9yd2FyZCI+PHBhdGggZD0iTTEyIDhWNGw4IDgtOCA4di00SDRWOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmdWxsc2NyZWVuIj48cGF0aCBkPSJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmdWxsc2NyZWVuLWV4aXQiPjxwYXRoIGQ9Ik01IDE2aDN2M2gydi01SDV2MnptMy04SDV2Mmg1VjVIOHYzem02IDExaDJ2LTNoM3YtMmgtNXY1em0yLTExVjVoLTJ2NWg1VjhoLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZy10cmFuc2xhdGUiPjxwYXRoIGQ9Ik0yMCA1aC05LjEyTDEwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTNjMCAxLjEuOSAyIDIgMmg3bDEgM2g4YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6TTcuMTcgMTQuNTljLTIuMjUgMC00LjA5LTEuODMtNC4wOS00LjA5czEuODMtNC4wOSA0LjA5LTQuMDljMS4wNCAwIDEuOTkuMzcgMi43NCAxLjA3bC4wNy4wNi0xLjIzIDEuMTgtLjA2LS4wNWMtLjI5LS4yNy0uNzgtLjU5LTEuNTItLjU5LTEuMzEgMC0yLjM4IDEuMDktMi4zOCAyLjQyczEuMDcgMi40MiAyLjM4IDIuNDJjMS4zNyAwIDEuOTYtLjg3IDIuMTItMS40Nkg3LjA4VjkuOTFoMy45NWwuMDEuMDdjLjA0LjIxLjA1LjQuMDUuNjEgMCAyLjM1LTEuNjEgNC0zLjkyIDR6bTYuMDMtMS43MWMuMzMuNi43NCAxLjE4IDEuMTkgMS43bC0uNTQuNTMtLjY1LTIuMjN6bS43Ny0uNzZoLS45OWwtLjMxLTEuMDRoMy45OXMtLjM0IDEuMzEtMS41NiAyLjc0Yy0uNTItLjYyLS44OS0xLjIzLTEuMTMtMS43ek0yMSAyMGMwIC41NS0uNDUgMS0xIDFoLTdsMi0yLS44MS0yLjc3LjkyLS45MkwxNy43OSAxOGwuNzMtLjczLTIuNzEtMi42OGMuOS0xLjAzIDEuNi0yLjI1IDEuOTItMy41MUgxOXYtMS4wNGgtMy42NFY5aC0xLjA0djEuMDRoLTEuOTZMMTEuMTggNkgyMGMuNTUgMCAxIC40NSAxIDF2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ2F2ZWwiPjxwYXRoIGQ9Ik0xIDIxaDEydjJIMXpNNS4yNDUgOC4wN2wyLjgzLTIuODI3IDE0LjE0IDE0LjE0Mi0yLjgyOCAyLjgyOHpNMTIuMzE3IDFsNS42NTcgNS42NTYtMi44MyAyLjgzLTUuNjU0LTUuNjZ6TTMuODI1IDkuNDg1bDUuNjU3IDUuNjU3LTIuODI4IDIuODI4LTUuNjU3LTUuNjU3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imdlc3R1cmUiPjxwYXRoIGQ9Ik00LjU5IDYuODljLjctLjcxIDEuNC0xLjM1IDEuNzEtMS4yMi41LjIgMCAxLjAzLS4zIDEuNTItLjI1LjQyLTIuODYgMy44OS0yLjg2IDYuMzEgMCAxLjI4LjQ4IDIuMzQgMS4zNCAyLjk4Ljc1LjU2IDEuNzQuNzMgMi42NC40NiAxLjA3LS4zMSAxLjk1LTEuNCAzLjA2LTIuNzcgMS4yMS0xLjQ5IDIuODMtMy40NCA0LjA4LTMuNDQgMS42MyAwIDEuNjUgMS4wMSAxLjc2IDEuNzktMy43OC42NC01LjM4IDMuNjctNS4zOCA1LjM3IDAgMS43IDEuNDQgMy4wOSAzLjIxIDMuMDkgMS42MyAwIDQuMjktMS4zMyA0LjY5LTYuMUgyMXYtMi41aC0yLjQ3Yy0uMTUtMS42NS0xLjA5LTQuMi00LjAzLTQuMi0yLjI1IDAtNC4xOCAxLjkxLTQuOTQgMi44NC0uNTguNzMtMi4wNiAyLjQ4LTIuMjkgMi43Mi0uMjUuMy0uNjguODQtMS4xMS44NC0uNDUgMC0uNzItLjgzLS4zNi0xLjkyLjM1LTEuMDkgMS40LTIuODYgMS44NS0zLjUyLjc4LTEuMTQgMS4zLTEuOTIgMS4zLTMuMjhDOC45NSAzLjY5IDcuMzEgMyA2LjQ0IDMgNS4xMiAzIDMuOTcgNCAzLjcyIDQuMjVjLS4zNi4zNi0uNjYuNjYtLjg4LjkzbDEuNzUgMS43MXptOS4yOSAxMS42NmMtLjMxIDAtLjc0LS4yNi0uNzQtLjcyIDAtLjYuNzMtMi4yIDIuODctMi43Ni0uMyAyLjY5LTEuNDMgMy40OC0yLjEzIDMuNDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ2V0LWFwcCI+PHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiPjwvcGF0aD48L2c+CjxnIGlkPSJnaWYiPjxwYXRoIGQ9Ik0xMS41IDlIMTN2NmgtMS41ek05IDlINmMtLjYgMC0xIC41LTEgMXY0YzAgLjUuNCAxIDEgMWgzYy42IDAgMS0uNSAxLTF2LTJIOC41djEuNWgtMnYtM0gxMFYxMGMwLS41LS40LTEtMS0xem0xMCAxLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyYWRlIj48cGF0aCBkPSJNMTIgMTcuMjdMMTguMTggMjFsLTEuNjQtNy4wM0wyMiA5LjI0bC03LjE5LS42MUwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JvdXAtd29yayI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTggMTcuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6TTkuNSA4YzAtMS4zOCAxLjEyLTIuNSAyLjUtMi41czIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNVM5LjUgOS4zOCA5LjUgOHptNi41IDkuNWMtMS4zOCAwLTIuNS0xLjEyLTIuNS0yLjVzMS4xMi0yLjUgMi41LTIuNSAyLjUgMS4xMiAyLjUgMi41LTEuMTIgMi41LTIuNSAyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVscCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTdoLTJ2LTJoMnYyem0yLjA3LTcuNzVsLS45LjkyQzEzLjQ1IDEyLjkgMTMgMTMuNSAxMyAxNWgtMnYtLjVjMC0xLjEuNDUtMi4xIDEuMTctMi44M2wxLjI0LTEuMjZjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJIOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgLjg4LS4zNiAxLjY4LS45MyAyLjI1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImhlbHAtb3V0bGluZSI+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGlnaGxpZ2h0LW9mZiI+PHBhdGggZD0iTTE0LjU5IDhMMTIgMTAuNTkgOS40MSA4IDggOS40MSAxMC41OSAxMiA4IDE0LjU5IDkuNDEgMTYgMTIgMTMuNDEgMTQuNTkgMTYgMTYgMTQuNTkgMTMuNDEgMTIgMTYgOS40MSAxNC41OSA4ek0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJoaXN0b3J5Ij48cGF0aCBkPSJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImhvbWUiPjxwYXRoIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaG91cmdsYXNzLWVtcHR5Ij48cGF0aCBkPSJNNiAydjZoLjAxTDYgOC4wMSAxMCAxMmwtNCA0IC4wMS4wMUg2VjIyaDEydi01Ljk5aC0uMDFMMTggMTZsLTQtNCA0LTMuOTktLjAxLS4wMUgxOFYySDZ6bTEwIDE0LjVWMjBIOHYtMy41bDQtNCA0IDR6bS00LTVsLTQtNFY0aDh2My41bC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaG91cmdsYXNzLWZ1bGwiPjxwYXRoIGQ9Ik02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJodHRwIj48cGF0aCBkPSJNNC41IDExaC0yVjlIMXY2aDEuNXYtMi41aDJWMTVINlY5SDQuNXYyem0yLjUtLjVoMS41VjE1SDEwdi00LjVoMS41VjlIN3YxLjV6bTUuNSAwSDE0VjE1aDEuNXYtNC41SDE3VjloLTQuNXYxLjV6bTktMS41SDE4djZoMS41di0yaDJjLjggMCAxLjUtLjcgMS41LTEuNXYtMWMwLS44LS43LTEuNS0xLjUtMS41em0wIDIuNWgtMnYtMWgydjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaHR0cHMiPjxwYXRoIGQ9Ik0xOCA4aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bS02IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyem0zLjEtOUg4LjlWNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImltcG9ydGFudC1kZXZpY2VzIj48cGF0aCBkPSJNMjMgMTEuMDFMMTggMTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0uOTktMS0uOTl6TTIzIDIwaC01di03aDV2N3pNMjAgMkgyQy44OSAyIDAgMi44OSAwIDR2MTJjMCAxLjEuODkgMiAyIDJoN3YySDd2Mmg4di0yaC0ydi0yaDJ2LTJIMlY0aDE4djVoMlY0YzAtMS4xMS0uOS0yLTItMnptLTguMDMgN0wxMSA2bC0uOTcgM0g3bDIuNDcgMS43Ni0uOTQgMi45MSAyLjQ3LTEuOCAyLjQ3IDEuOC0uOTQtMi45MUwxNSA5aC0zLjAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImluYm94Ij48cGF0aCBkPSJNMTkgM0g0Ljk5Yy0xLjExIDAtMS45OC44OS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xMS0uOS0yLTItMnptMCAxMmgtNGMwIDEuNjYtMS4zNSAzLTMgM3MtMy0xLjM0LTMtM0g0Ljk5VjVIMTl2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5kZXRlcm1pbmF0ZS1jaGVjay1ib3giPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTIgMTBIN3YtMmgxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImluZm8iPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImluZm8tb3V0bGluZSI+PHBhdGggZD0iTTExIDE3aDJ2LTZoLTJ2NnptMS0xNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6TTExIDloMlY3aC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5wdXQiPjxwYXRoIGQ9Ik0yMSAzLjAxSDNjLTEuMSAwLTIgLjktMiAyVjloMlY0Ljk5aDE4djE0LjAzSDNWMTVIMXY0LjAxYzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4di0xNGMwLTEuMTEtLjktMi0yLTJ6TTExIDE2bDQtNC00LTR2M0gxdjJoMTB2M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJpbnZlcnQtY29sb3JzIj48cGF0aCBkPSJNMTcuNjYgNy45M0wxMiAyLjI3IDYuMzQgNy45M2MtMy4xMiAzLjEyLTMuMTIgOC4xOSAwIDExLjMxQzcuOSAyMC44IDkuOTUgMjEuNTggMTIgMjEuNThjMi4wNSAwIDQuMS0uNzggNS42Ni0yLjM0IDMuMTItMy4xMiAzLjEyLTguMTkgMC0xMS4zMXpNMTIgMTkuNTljLTEuNiAwLTMuMTEtLjYyLTQuMjQtMS43NkM2LjYyIDE2LjY5IDYgMTUuMTkgNiAxMy41OXMuNjItMy4xMSAxLjc2LTQuMjRMMTIgNS4xdjE0LjQ5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhYmVsIj48cGF0aCBkPSJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYWJlbC1vdXRsaW5lIj48cGF0aCBkPSJNMTcuNjMgNS44NEMxNy4yNyA1LjMzIDE2LjY3IDUgMTYgNUw1IDUuMDFDMy45IDUuMDEgMyA1LjkgMyA3djEwYzAgMS4xLjkgMS45OSAyIDEuOTlMMTYgMTljLjY3IDAgMS4yNy0uMzMgMS42My0uODRMMjIgMTJsLTQuMzctNi4xNnpNMTYgMTdINVY3aDExbDMuNTUgNUwxNiAxN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsYW5ndWFnZSI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6bTYuOTMgNmgtMi45NWMtLjMyLTEuMjUtLjc4LTIuNDUtMS4zOC0zLjU2IDEuODQuNjMgMy4zNyAxLjkxIDQuMzMgMy41NnpNMTIgNC4wNGMuODMgMS4yIDEuNDggMi41MyAxLjkxIDMuOTZoLTMuODJjLjQzLTEuNDMgMS4wOC0yLjc2IDEuOTEtMy45NnpNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEycy4xLTEuMzYuMjYtMmgzLjM4Yy0uMDguNjYtLjE0IDEuMzItLjE0IDIgMCAuNjguMDYgMS4zNC4xNCAySDQuMjZ6bS44MiAyaDIuOTVjLjMyIDEuMjUuNzggMi40NSAxLjM4IDMuNTYtMS44NC0uNjMtMy4zNy0xLjktNC4zMy0zLjU2em0yLjk1LThINS4wOGMuOTYtMS42NiAyLjQ5LTIuOTMgNC4zMy0zLjU2QzguODEgNS41NSA4LjM1IDYuNzUgOC4wMyA4ek0xMiAxOS45NmMtLjgzLTEuMi0xLjQ4LTIuNTMtMS45MS0zLjk2aDMuODJjLS40MyAxLjQzLTEuMDggMi43Ni0xLjkxIDMuOTZ6TTE0LjM0IDE0SDkuNjZjLS4wOS0uNjYtLjE2LTEuMzItLjE2LTIgMC0uNjguMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMiAwIC42OC0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVjLS45NiAxLjY1LTIuNDkgMi45My00LjMzIDMuNTZ6TTE2LjM2IDE0Yy4wOC0uNjYuMTQtMS4zMi4xNC0yIDAtLjY4LS4wNi0xLjM0LS4xNC0yaDMuMzhjLjE2LjY0LjI2IDEuMzEuMjYgMnMtLjEgMS4zNi0uMjYgMmgtMy4zOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYXN0LXBhZ2UiPjxwYXRoIGQ9Ik01LjU5IDcuNDFMMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsYXVuY2giPjxwYXRoIGQ9Ik0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsaWdodGJ1bGItb3V0bGluZSI+PHBhdGggZD0iTTkgMjFjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFIOXYxem0zLTE5QzguMTQgMiA1IDUuMTQgNSA5YzAgMi4zOCAxLjE5IDQuNDcgMyA1Ljc0VjE3YzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xdi0yLjI2YzEuODEtMS4yNyAzLTMuMzYgMy01Ljc0IDAtMy44Ni0zLjE0LTctNy03em0yLjg1IDExLjFsLS44NS42VjE2aC00di0yLjNsLS44NS0uNkM3LjggMTIuMTYgNyAxMC42MyA3IDljMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDEuNjMtLjggMy4xNi0yLjE1IDQuMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsaW5lLXN0eWxlIj48cGF0aCBkPSJNMyAxNmg1di0ySDN2MnptNi41IDBoNXYtMmgtNXYyem02LjUgMGg1di0yaC01djJ6TTMgMjBoMnYtMkgzdjJ6bTQgMGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMyAxMmg4di0ySDN2MnptMTAgMGg4di0yaC04djJ6TTMgNHY0aDE4VjRIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsaW5lLXdlaWdodCI+PHBhdGggZD0iTTMgMTdoMTh2LTJIM3Yyem0wIDNoMTh2LTFIM3Yxem0wLTdoMTh2LTNIM3Yzem0wLTl2NGgxOFY0SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGluayI+PHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxpc3QiPjxwYXRoIGQ9Ik0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem00IDRoMTR2LTJIN3Yyem0wIDRoMTR2LTJIN3Yyek03IDd2MmgxNFY3SDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9jayI+PHBhdGggZD0iTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTYgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTMuMS05SDguOVY2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9jay1vcGVuIj48cGF0aCBkPSJNMTIgMTdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTloLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2aDEuOWMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlYxMGgxMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yek04LjkgNmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMXMzLjEgMS4zOSAzLjEgMy4xdjJIOC45VjZ6TTE4IDIwSDZWMTBoMTJ2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG93LXByaW9yaXR5Ij48cGF0aCBkPSJNMTQgNWg4djJoLTh6bTAgNS41aDh2MmgtOHptMCA1LjVoOHYyaC04ek0yIDExLjVDMiAxNS4wOCA0LjkyIDE4IDguNSAxOEg5djJsMy0zLTMtM3YyaC0uNUM2LjAyIDE2IDQgMTMuOTggNCAxMS41UzYuMDIgNyA4LjUgN0gxMlY1SDguNUM0LjkyIDUgMiA3LjkyIDIgMTEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3lhbHR5Ij48cGF0aCBkPSJNMjEuNDEgMTEuNThsLTktOUMxMi4wNSAyLjIyIDExLjU1IDIgMTEgMkg0Yy0xLjEgMC0yIC45LTIgMnY3YzAgLjU1LjIyIDEuMDUuNTkgMS40Mmw5IDljLjM2LjM2Ljg2LjU4IDEuNDEuNTguNTUgMCAxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLS41NS0uMjMtMS4wNi0uNTktMS40MnpNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN3ptMTEuNzcgOC4yN0wxMyAxOS41NGwtNC4yNy00LjI3QzguMjggMTQuODEgOCAxNC4xOSA4IDEzLjVjMC0xLjM4IDEuMTItMi41IDIuNS0yLjUuNjkgMCAxLjMyLjI4IDEuNzcuNzRsLjczLjcyLjczLS43M2MuNDUtLjQ1IDEuMDgtLjczIDEuNzctLjczIDEuMzggMCAyLjUgMS4xMiAyLjUgMi41IDAgLjY5LS4yOCAxLjMyLS43MyAxLjc3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1haWwiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNGwtOCA1LTgtNVY2bDggNSA4LTV2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtYXJrdW5yZWFkIj48cGF0aCBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDRsLTggNS04LTVWNmw4IDUgOC01djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibWFya3VucmVhZC1tYWlsYm94Ij48cGF0aCBkPSJNMjAgNkgxMHY2SDhWNGg2VjBINnY2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtZW51Ij48cGF0aCBkPSJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3JlLWhvcml6Ij48cGF0aCBkPSJNNiAxMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyIDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0tNiAwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3JlLXZlcnQiPjxwYXRoIGQ9Ik0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3RvcmN5Y2xlIj48cGF0aCBkPSJNMTkuNDQgOS4wM0wxNS40MSA1SDExdjJoMy41OWwyIDJINWMtMi44IDAtNSAyLjItNSA1czIuMiA1IDUgNWMyLjQ2IDAgNC40NS0xLjY5IDQuOS00aDEuNjVsMi43Ny0yLjc3Yy0uMjEuNTQtLjMyIDEuMTQtLjMyIDEuNzcgMCAyLjggMi4yIDUgNSA1czUtMi4yIDUtNWMwLTIuNjUtMS45Ny00Ljc3LTQuNTYtNC45N3pNNy44MiAxNUM3LjQgMTYuMTUgNi4yOCAxNyA1IDE3Yy0xLjYzIDAtMy0xLjM3LTMtM3MxLjM3LTMgMy0zYzEuMjggMCAyLjQuODUgMi44MiAySDV2MmgyLjgyek0xOSAxN2MtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtMyAzIDEuMzQgMyAzLTEuMzQgMy0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibW92ZS10by1pbmJveCI+PHBhdGggZD0iTTE5IDNINC45OWMtMS4xMSAwLTEuOTguOS0xLjk4IDJMMyAxOWMwIDEuMS44OCAyIDEuOTkgMkgxOWMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHptLTMtNWgtMlY3aC00djNIOGw0IDQgNC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im5leHQtd2VlayI+PHBhdGggZD0iTTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEgMTMuNWwtMS0xIDMtMy0zLTMgMS0xIDQgNC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibm90ZS1hZGQiPjxwYXRoIGQ9Ik0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTRoLTN2M2gtMnYtM0g4di0yaDN2LTNoMnYzaDN2MnptLTMtN1YzLjVMMTguNSA5SDEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im9mZmxpbmUtcGluIj48cGF0aCBkPSJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTUgMTZIN3YtMmgxMHYyem0tNi43LTRMNyAxMC43bDEuNC0xLjQgMS45IDEuOSA1LjMtNS4zTDE3IDcuMyAxMC4zIDE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im9wYWNpdHkiPjxwYXRoIGQ9Ik0xNy42NiA4TDEyIDIuMzUgNi4zNCA4QzQuNzggOS41NiA0IDExLjY0IDQgMTMuNjRzLjc4IDQuMTEgMi4zNCA1LjY3IDMuNjEgMi4zNSA1LjY2IDIuMzUgNC4xLS43OSA1LjY2LTIuMzVTMjAgMTUuNjQgMjAgMTMuNjQgMTkuMjIgOS41NiAxNy42NiA4ek02IDE0Yy4wMS0yIC42Mi0zLjI3IDEuNzYtNC40TDEyIDUuMjdsNC4yNCA0LjM4QzE3LjM4IDEwLjc3IDE3Ljk5IDEyIDE4IDE0SDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3Blbi1pbi1icm93c2VyIj48cGF0aCBkPSJNMTkgNEg1Yy0xLjExIDAtMiAuOS0yIDJ2MTJjMCAxLjEuODkgMiAyIDJoNHYtMkg1VjhoMTR2MTBoLTR2Mmg0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjg5LTItMi0yem0tNyA2bC00IDRoM3Y2aDJ2LTZoM2wtNC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im9wZW4taW4tbmV3Ij48cGF0aCBkPSJNMTkgMTlINVY1aDdWM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJ2LTdoLTJ2N3pNMTQgM3YyaDMuNTlsLTkuODMgOS44MyAxLjQxIDEuNDFMMTkgNi40MVYxMGgyVjNoLTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3Blbi13aXRoIj48cGF0aCBkPSJNMTAgOWg0VjZoM2wtNS01LTUgNWgzdjN6bS0xIDFINlY3bC01IDUgNSA1di0zaDN2LTR6bTE0IDJsLTUtNXYzaC0zdjRoM3YzbDUtNXptLTkgM2gtNHYzSDdsNSA1IDUtNWgtM3YtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwYWdldmlldyI+PHBhdGggZD0iTTExLjUgOUMxMC4xMiA5IDkgMTAuMTIgOSAxMS41czEuMTIgMi41IDIuNSAyLjUgMi41LTEuMTIgMi41LTIuNVMxMi44OCA5IDExLjUgOXpNMjAgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bS0zLjIxIDE0LjIxbC0yLjkxLTIuOTFjLS42OS40NC0xLjUxLjctMi4zOS43QzkuMDEgMTYgNyAxMy45OSA3IDExLjVTOS4wMSA3IDExLjUgNyAxNiA5LjAxIDE2IDExLjVjMCAuODgtLjI2IDEuNjktLjcgMi4zOWwyLjkxIDIuOS0xLjQyIDEuNDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFuLXRvb2wiPjxwYXRoIGQ9Ik0yMyA1LjVWMjBjMCAyLjItMS44IDQtNCA0aC03LjNjLTEuMDggMC0yLjEtLjQzLTIuODUtMS4xOUwxIDE0LjgzczEuMjYtMS4yMyAxLjMtMS4yNWMuMjItLjE5LjQ5LS4yOS43OS0uMjkuMjIgMCAuNDIuMDYuNi4xNi4wNC4wMSA0LjMxIDIuNDYgNC4zMSAyLjQ2VjRjMC0uODMuNjctMS41IDEuNS0xLjVTMTEgMy4xNyAxMSA0djdoMVYxLjVjMC0uODMuNjctMS41IDEuNS0xLjVTMTUgLjY3IDE1IDEuNVYxMWgxVjIuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNVYxMWgxVjUuNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYXltZW50Ij48cGF0aCBkPSJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINHYtNmgxNnY2em0wLTEwSDRWNmgxNnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tY2FtZXJhLW1pYyI+PHBhdGggZD0iTTIwIDVoLTMuMTdMMTUgM0g5TDcuMTcgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDd2LTIuMDljLTIuODMtLjQ4LTUtMi45NC01LTUuOTFoMmMwIDIuMjEgMS43OSA0IDQgNHM0LTEuNzkgNC00aDJjMCAyLjk3LTIuMTcgNS40My01IDUuOTFWMjFoN2MxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tNiA4YzAgMS4xLS45IDItMiAycy0yLS45LTItMlY5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXJtLWNvbnRhY3QtY2FsZW5kYXIiPjxwYXRoIGQ9Ik0xOSAzaC0xVjFoLTJ2Mkg4VjFINnYySDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAzYzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkg2di0xYzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMXYxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tZGF0YS1zZXR0aW5nIj48cGF0aCBkPSJNMTguOTkgMTEuNWMuMzQgMCAuNjcuMDMgMSAuMDdMMjAgMCAwIDIwaDExLjU2Yy0uMDQtLjMzLS4wNy0uNjYtLjA3LTEgMC00LjE0IDMuMzYtNy41IDcuNS03LjV6bTMuNzEgNy45OWMuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAxLS4zMy0uMDQtLjQ5bDEuMDYtLjgzYy4wOS0uMDguMTItLjIxLjA2LS4zMmwtMS0xLjczYy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yNC41Yy0uMjYtLjItLjU0LS4zNy0uODUtLjQ5bC0uMTktMS4zMmMtLjAxLS4xMi0uMTItLjIxLS4yNC0uMjFoLTJjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4xOSAxLjMyYy0uMy4xMy0uNTkuMjktLjg1LjQ5bC0xLjI0LS41Yy0uMTEtLjA0LS4yNCAwLS4zMS4xMWwtMSAxLjczYy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDYuODNjLS4wMi4xNi0uMDMuMzItLjAzLjQ5IDAgLjE3LjAxLjMzLjAzLjQ5bC0xLjA2LjgzYy0uMDkuMDgtLjEyLjIxLS4wNi4zMmwxIDEuNzNjLjA2LjExLjE5LjE1LjMxLjExbDEuMjQtLjVjLjI2LjIuNTQuMzcuODUuNDlsLjE5IDEuMzJjLjAyLjEyLjEyLjIxLjI1LjIxaDJjLjEyIDAgLjIzLS4wOS4yNS0uMjFsLjE5LTEuMzJjLjMtLjEzLjU5LS4yOS44NC0uNDlsMS4yNS41Yy4xMS4wNC4yNCAwIC4zMS0uMTFsMS0xLjczYy4wNi0uMTEuMDMtLjI0LS4wNi0uMzJsLTEuMDctLjgzem0tMy43MSAxLjAxYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXJtLWRldmljZS1pbmZvcm1hdGlvbiI+PHBhdGggZD0iTTEzIDdoLTJ2MmgyVjd6bTAgNGgtMnY2aDJ2LTZ6bTQtOS45OUw3IDFjLTEuMSAwLTIgLjktMiAydjE4YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0xLjk5LTItMS45OXpNMTcgMTlIN1Y1aDEwdjE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0taWRlbnRpdHkiPjxwYXRoIGQ9Ik0xMiA1LjljMS4xNiAwIDIuMS45NCAyLjEgMi4xcy0uOTQgMi4xLTIuMSAyLjFTOS45IDkuMTYgOS45IDhzLjk0LTIuMSAyLjEtMi4xbTAgOWMyLjk3IDAgNi4xIDEuNDYgNi4xIDIuMXYxLjFINS45VjE3YzAtLjY0IDMuMTMtMi4xIDYuMS0yLjFNMTIgNEM5Ljc5IDQgOCA1Ljc5IDggOHMxLjc5IDQgNCA0IDQtMS43OSA0LTQtMS43OS00LTQtNHptMCA5Yy0yLjY3IDAtOCAxLjM0LTggNHYzaDE2di0zYzAtMi42Ni01LjMzLTQtOC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tbWVkaWEiPjxwYXRoIGQ9Ik0yIDZIMHY1aC4wMUwwIDIwYzAgMS4xLjkgMiAyIDJoMTh2LTJIMlY2em0yMC0yaC04bC0yLTJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNyAxNWw0LjUtNiAzLjUgNC41MSAyLjUtMy4wMUwyMSAxNUg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tcGhvbmUtbXNnIj48cGF0aCBkPSJNMjAgMTUuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjM1LS4xMS0uNzQtLjAzLTEuMDIuMjRsLTIuMiAyLjJjLTIuODMtMS40NC01LjE1LTMuNzUtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFDOC43IDYuNDUgOC41IDUuMjUgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTEyIDN2MTBsMy0zaDZWM2gtOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXJtLXNjYW4td2lmaSI+PHBhdGggZD0iTTEyIDNDNi45NSAzIDMuMTUgNC44NSAwIDcuMjNMMTIgMjIgMjQgNy4yNUMyMC44NSA0Ljg3IDE3LjA1IDMgMTIgM3ptMSAxM2gtMnYtNmgydjZ6bS0yLThWNmgydjJoLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGV0cyI+PGNpcmNsZSBjeD0iNC41IiBjeT0iOS41IiByPSIyLjUiPjwvY2lyY2xlPjxjaXJjbGUgY3g9IjkiIGN5PSI1LjUiIHI9IjIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMTUiIGN5PSI1LjUiIHI9IjIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMTkuNSIgY3k9IjkuNSIgcj0iMi41Ij48L2NpcmNsZT48cGF0aCBkPSJNMTcuMzQgMTQuODZjLS44Ny0xLjAyLTEuNi0xLjg5LTIuNDgtMi45MS0uNDYtLjU0LTEuMDUtMS4wOC0xLjc1LTEuMzItLjExLS4wNC0uMjItLjA3LS4zMy0uMDktLjI1LS4wNC0uNTItLjA0LS43OC0uMDRzLS41MyAwLS43OS4wNWMtLjExLjAyLS4yMi4wNS0uMzMuMDktLjcuMjQtMS4yOC43OC0xLjc1IDEuMzItLjg3IDEuMDItMS42IDEuODktMi40OCAyLjkxLTEuMzEgMS4zMS0yLjkyIDIuNzYtMi42MiA0Ljc5LjI5IDEuMDIgMS4wMiAyLjAzIDIuMzMgMi4zMi43My4xNSAzLjA2LS40NCA1LjU0LS40NGguMThjMi40OCAwIDQuODEuNTggNS41NC40NCAxLjMxLS4yOSAyLjA0LTEuMzEgMi4zMy0yLjMyLjMxLTIuMDQtMS4zLTMuNDktMi42MS00Ljh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGljdHVyZS1pbi1waWN0dXJlIj48cGF0aCBkPSJNMTkgN2gtOHY2aDhWN3ptMi00SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4VjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk4aDE4djE0LjAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBpY3R1cmUtaW4tcGljdHVyZS1hbHQiPjxwYXRoIGQ9Ik0xOSAxMWgtOHY2aDh2LTZ6bTQgOFY0Ljk4QzIzIDMuODggMjIuMSAzIDIxIDNIM2MtMS4xIDAtMiAuODgtMiAxLjk4VjE5YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ6bS0yIC4wMkgzVjQuOTdoMTh2MTQuMDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGxheS1mb3Itd29yayI+PHBhdGggZD0iTTExIDV2NS41OUg3LjVsNC41IDQuNSA0LjUtNC41SDEzVjVoLTJ6bS01IDljMCAzLjMxIDIuNjkgNiA2IDZzNi0yLjY5IDYtNmgtMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNEg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvbHltZXIiPjxwYXRoIGQ9Ik0xOSA0aC00TDcuMTEgMTYuNjMgNC41IDEyIDkgNEg1TC41IDEyIDUgMjBoNGw3Ljg5LTEyLjYzTDE5LjUgMTIgMTUgMjBoNGw0LjUtOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwb3dlci1zZXR0aW5ncy1uZXciPjxwYXRoIGQ9Ik0xMyAzaC0ydjEwaDJWM3ptNC44MyAyLjE3bC0xLjQyIDEuNDJDMTcuOTkgNy44NiAxOSA5LjgxIDE5IDEyYzAgMy44Ny0zLjEzIDctNyA3cy03LTMuMTMtNy03YzAtMi4xOSAxLjAxLTQuMTQgMi41OC01LjQyTDYuMTcgNS4xN0M0LjIzIDYuODIgMyA5LjI2IDMgMTJjMCA0Ljk3IDQuMDMgOSA5IDlzOS00LjAzIDktOWMwLTIuNzQtMS4yMy01LjE4LTMuMTctNi44M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwcmVnbmFudC13b21hbiI+PHBhdGggZD0iTTkgNGMwLTEuMTEuODktMiAyLTJzMiAuODkgMiAyLS44OSAyLTIgMi0yLS44OS0yLTJ6bTcgOWMtLjAxLTEuMzQtLjgzLTIuNTEtMi0zIDAtMS42Ni0xLjM0LTMtMy0zcy0zIDEuMzQtMyAzdjdoMnY1aDN2LTVoM3YtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwcmludCI+PHBhdGggZD0iTTE5IDhINWMtMS42NiAwLTMgMS4zNC0zIDN2Nmg0djRoMTJ2LTRoNHYtNmMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMTFIOHYtNWg4djV6bTMtN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS05SDZ2NGgxMlYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InF1ZXJ5LWJ1aWxkZXIiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bS41LTEzSDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icXVlc3Rpb24tYW5zd2VyIj48cGF0aCBkPSJNMjEgNmgtMnY5SDZ2MmMwIC41NS40NSAxIDEgMWgxMWw0IDRWN2MwLS41NS0uNDUtMS0xLTF6bS00IDZWM2MwLS41NS0uNDUtMS0xLTFIM2MtLjU1IDAtMSAuNDUtMSAxdjE0bDQtNGgxMGMuNTUgMCAxLS40NSAxLTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmFkaW8tYnV0dG9uLWNoZWNrZWQiPjxwYXRoIGQ9Ik0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMC01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyYWRpby1idXR0b24tdW5jaGVja2VkIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVjZWlwdCI+PHBhdGggZD0iTTE4IDE3SDZ2LTJoMTJ2MnptMC00SDZ2LTJoMTJ2MnptMC00SDZWN2gxMnYyek0zIDIybDEuNS0xLjVMNiAyMmwxLjUtMS41TDkgMjJsMS41LTEuNUwxMiAyMmwxLjUtMS41TDE1IDIybDEuNS0xLjVMMTggMjJsMS41LTEuNUwyMSAyMlYybC0xLjUgMS41TDE4IDJsLTEuNSAxLjVMMTUgMmwtMS41IDEuNUwxMiAybC0xLjUgMS41TDkgMiA3LjUgMy41IDYgMiA0LjUgMy41IDMgMnYyMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWNvcmQtdm9pY2Utb3ZlciI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjQiPjwvY2lyY2xlPjxwYXRoIGQ9Ik05IDE1Yy0yLjY3IDAtOCAxLjM0LTggNHYyaDE2di0yYzAtMi42Ni01LjMzLTQtOC00em03Ljc2LTkuNjRsLTEuNjggMS42OWMuODQgMS4xOC44NCAyLjcxIDAgMy44OWwxLjY4IDEuNjljMi4wMi0yLjAyIDIuMDItNS4wNyAwLTcuMjd6TTIwLjA3IDJsLTEuNjMgMS42M2MyLjc3IDMuMDIgMi43NyA3LjU2IDAgMTAuNzRMMjAuMDcgMTZjMy45LTMuODkgMy45MS05Ljk1IDAtMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVkZWVtIj48cGF0aCBkPSJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xIDAtMS42Ni0xLjM0LTMtMy0zLTEuMDUgMC0xLjk2LjU0LTIuNSAxLjM1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDExIDguNzZsMS0xLjM2IDEgMS4zNkwxNS4zOCAxMiAxNyAxMC44MyAxNC45MiA4SDIwdjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVkbyI+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWZyZXNoIj48cGF0aCBkPSJNMTcuNjUgNi4zNUMxNi4yIDQuOSAxNC4yMSA0IDEyIDRjLTQuNDIgMC03Ljk5IDMuNTgtNy45OSA4czMuNTcgOCA3Ljk5IDhjMy43MyAwIDYuODQtMi41NSA3LjczLTZoLTIuMDhjLS44MiAyLjMzLTMuMDQgNC01LjY1IDQtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNmMxLjY2IDAgMy4xNC42OSA0LjIyIDEuNzhMMTMgMTFoN1Y0bC0yLjM1IDIuMzV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVtb3ZlIj48cGF0aCBkPSJNMTkgMTNINXYtMmgxNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1jaXJjbGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem01IDExSDd2LTJoMTB2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUtY2lyY2xlLW91dGxpbmUiPjxwYXRoIGQ9Ik03IDExdjJoMTB2LTJIN3ptNS05QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUtc2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTIyLjczIDIyLjczTDIuNzcgMi43NyAyIDJsLS43My0uNzNMMCAyLjU0bDQuMzkgNC4zOSAyLjIxIDQuNjYtMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDcuNDZsMS4zOCAxLjM4Yy0uNS4zNi0uODMuOTUtLjgzIDEuNjIgMCAxLjEuODkgMiAxLjk5IDIgLjY3IDAgMS4yNi0uMzMgMS42Mi0uODRMMjEuNDYgMjRsMS4yNy0xLjI3ek03LjQyIDE1Yy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoMi4zNmwyIDJINy40MnptOC4xMy0yYy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDljLjA4LS4xNC4xMi0uMzEuMTItLjQ4IDAtLjU1LS40NS0xLTEtMUg2LjU0bDkuMDEgOXpNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW9yZGVyIj48cGF0aCBkPSJNMyAxNWgxOHYtMkgzdjJ6bTAgNGgxOHYtMkgzdjJ6bTAtOGgxOFY5SDN2MnptMC02djJoMThWNUgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcGx5Ij48cGF0aCBkPSJNMTAgOVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcGx5LWFsbCI+PHBhdGggZD0iTTcgOFY1bC03IDcgNyA3di0zbC00LTQgNC00em02IDFWNWwtNyA3IDcgN3YtNC4xYzUgMCA4LjUgMS42IDExIDUuMS0xLTUtNC0xMC0xMS0xMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZXBvcnQiPjxwYXRoIGQ9Ik0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTIgMTcuM2MtLjcyIDAtMS4zLS41OC0xLjMtMS4zIDAtLjcyLjU4LTEuMyAxLjMtMS4zLjcyIDAgMS4zLjU4IDEuMyAxLjMgMCAuNzItLjU4IDEuMy0xLjMgMS4zem0xLTQuM2gtMlY3aDJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZXBvcnQtcHJvYmxlbSI+PHBhdGggZD0iTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZXN0b3JlIj48cGF0aCBkPSJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlc3RvcmUtcGFnZSI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptLTIgMTZjLTIuMDUgMC0zLjgxLTEuMjQtNC41OC0zaDEuNzFjLjYzLjkgMS42OCAxLjUgMi44NyAxLjUgMS45MyAwIDMuNS0xLjU3IDMuNS0zLjVTMTMuOTMgOS41IDEyIDkuNWMtMS4zNSAwLTIuNTIuNzgtMy4xIDEuOWwxLjYgMS42aC00VjlsMS4zIDEuM0M4LjY5IDguOTIgMTAuMjMgOCAxMiA4YzIuNzYgMCA1IDIuMjQgNSA1cy0yLjI0IDUtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvb20iPjxwYXRoIGQ9Ik0xMiAyQzguMTMgMiA1IDUuMTMgNSA5YzAgNS4yNSA3IDEzIDcgMTNzNy03Ljc1IDctMTNjMC0zLjg3LTMuMTMtNy03LTd6bTAgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyb3VuZGVkLWNvcm5lciI+PHBhdGggZD0iTTE5IDE5aDJ2MmgtMnYtMnptMC0yaDJ2LTJoLTJ2MnpNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem04IDE2aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bS04IDBoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6TTIxIDhjMC0yLjc2LTIuMjQtNS01LTVoLTV2Mmg1YzEuNjUgMCAzIDEuMzUgMyAzdjVoMlY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvd2luZyI+PHBhdGggZD0iTTguNSAxNC41TDQgMTlsMS41IDEuNUw5IDE3aDJsLTIuNS0yLjV6TTE1IDFjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem02IDIwLjAxTDE4IDI0bC0yLjk5LTMuMDFWMTkuNWwtNy4xLTcuMDljLS4zMS4wNS0uNjEuMDctLjkxLjA3di0yLjE2YzEuNjYuMDMgMy42MS0uODcgNC42Ny0yLjA0bDEuNC0xLjU1Yy4xOS0uMjEuNDMtLjM4LjY5LS41LjI5LS4xNC42Mi0uMjMuOTYtLjIzaC4wM0MxNS45OSA2LjAxIDE3IDcuMDIgMTcgOC4yNnY1Ljc1YzAgLjg0LS4zNSAxLjYxLS45MiAyLjE2bC0zLjU4LTMuNTh2LTIuMjdjLS42My41Mi0xLjQzIDEuMDItMi4yOSAxLjM5TDE2LjUgMThIMThsMyAzLjAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNhdmUiPjxwYXRoIGQ9Ik0xNyAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY3bC00LTR6bS01IDE2Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3ptMy0xMEg1VjVoMTB2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzY2hlZHVsZSI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptLjUtMTNIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3oiPjwvcGF0aD48L2c+CjxnIGlkPSJzZWFyY2giPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlbGVjdC1hbGwiPjxwYXRoIGQ9Ik0zIDVoMlYzYy0xLjEgMC0yIC45LTIgMnptMCA4aDJ2LTJIM3Yyem00IDhoMnYtMkg3djJ6TTMgOWgyVjdIM3Yyem0xMC02aC0ydjJoMlYzem02IDB2MmgyYzAtMS4xLS45LTItMi0yek01IDIxdi0ySDNjMCAxLjEuOSAyIDIgMnptLTItNGgydi0ySDN2MnpNOSAzSDd2MmgyVjN6bTIgMThoMnYtMmgtMnYyem04LThoMnYtMmgtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC0xMmgyVjdoLTJ2MnptMCA4aDJ2LTJoLTJ2MnptLTQgNGgydi0yaC0ydjJ6bTAtMTZoMlYzaC0ydjJ6TTcgMTdoMTBWN0g3djEwem0yLThoNnY2SDlWOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZW5kIj48cGF0aCBkPSJNMi4wMSAyMUwyMyAxMiAyLjAxIDMgMiAxMGwxNSAyLTE1IDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MiPjxwYXRoIGQ9Ik0xOS40MyAxMi45OGMuMDQtLjMyLjA3LS42NC4wNy0uOThzLS4wMy0uNjYtLjA3LS45OGwyLjExLTEuNjVjLjE5LS4xNS4yNC0uNDIuMTItLjY0bC0yLTMuNDZjLS4xMi0uMjItLjM5LS4zLS42MS0uMjJsLTIuNDkgMWMtLjUyLS40LTEuMDgtLjczLTEuNjktLjk4bC0uMzgtMi42NUMxNC40NiAyLjE4IDE0LjI1IDIgMTQgMmgtNGMtLjI1IDAtLjQ2LjE4LS40OS40MmwtLjM4IDIuNjVjLS42MS4yNS0xLjE3LjU5LTEuNjkuOThsLTIuNDktMWMtLjIzLS4wOS0uNDkgMC0uNjEuMjJsLTIgMy40NmMtLjEzLjIyLS4wNy40OS4xMi42NGwyLjExIDEuNjVjLS4wNC4zMi0uMDcuNjUtLjA3Ljk4cy4wMy42Ni4wNy45OGwtMi4xMSAxLjY1Yy0uMTkuMTUtLjI0LjQyLS4xMi42NGwyIDMuNDZjLjEyLjIyLjM5LjMuNjEuMjJsMi40OS0xYy41Mi40IDEuMDguNzMgMS42OS45OGwuMzggMi42NWMuMDMuMjQuMjQuNDIuNDkuNDJoNGMuMjUgMCAuNDYtLjE4LjQ5LS40MmwuMzgtMi42NWMuNjEtLjI1IDEuMTctLjU5IDEuNjktLjk4bDIuNDkgMWMuMjMuMDkuNDkgMCAuNjEtLjIybDItMy40NmMuMTItLjIyLjA3LS40OS0uMTItLjY0bC0yLjExLTEuNjV6TTEyIDE1LjVjLTEuOTMgMC0zLjUtMS41Ny0zLjUtMy41czEuNTctMy41IDMuNS0zLjUgMy41IDEuNTcgMy41IDMuNS0xLjU3IDMuNS0zLjUgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWFwcGxpY2F0aW9ucyI+PHBhdGggZD0iTTEyIDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNy03SDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uOSAyLTJWNWMwLTEuMS0uODktMi0yLTJ6bS0xLjc1IDljMCAuMjMtLjAyLjQ2LS4wNS42OGwxLjQ4IDEuMTZjLjEzLjExLjE3LjMuMDguNDVsLTEuNCAyLjQyYy0uMDkuMTUtLjI3LjIxLS40My4xNWwtMS43NC0uN2MtLjM2LjI4LS43Ni41MS0xLjE4LjY5bC0uMjYgMS44NWMtLjAzLjE3LS4xOC4zLS4zNS4zaC0yLjhjLS4xNyAwLS4zMi0uMTMtLjM1LS4yOWwtLjI2LTEuODVjLS40My0uMTgtLjgyLS40MS0xLjE4LS42OWwtMS43NC43Yy0uMTYuMDYtLjM0IDAtLjQzLS4xNWwtMS40LTIuNDJjLS4wOS0uMTUtLjA1LS4zNC4wOC0uNDVsMS40OC0xLjE2Yy0uMDMtLjIzLS4wNS0uNDYtLjA1LS42OSAwLS4yMy4wMi0uNDYuMDUtLjY4bC0xLjQ4LTEuMTZjLS4xMy0uMTEtLjE3LS4zLS4wOC0uNDVsMS40LTIuNDJjLjA5LS4xNS4yNy0uMjEuNDMtLjE1bDEuNzQuN2MuMzYtLjI4Ljc2LS41MSAxLjE4LS42OWwuMjYtMS44NWMuMDMtLjE3LjE4LS4zLjM1LS4zaDIuOGMuMTcgMCAuMzIuMTMuMzUuMjlsLjI2IDEuODVjLjQzLjE4LjgyLjQxIDEuMTguNjlsMS43NC0uN2MuMTYtLjA2LjM0IDAgLjQzLjE1bDEuNCAyLjQyYy4wOS4xNS4wNS4zNC0uMDguNDVsLTEuNDggMS4xNmMuMDMuMjMuMDUuNDYuMDUuNjl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYmFja3VwLXJlc3RvcmUiPjxwYXRoIGQ9Ik0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTljLTQuOTcgMC05IDQuMDMtOSA5SDBsNCA0IDQtNEg1YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS41MSAwLTIuOTEtLjQ5LTQuMDYtMS4zbC0xLjQyIDEuNDRDOC4wNCAyMC4zIDkuOTQgMjEgMTIgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYmx1ZXRvb3RoIj48cGF0aCBkPSJNMTEgMjRoMnYtMmgtMnYyem0tNCAwaDJ2LTJIN3Yyem04IDBoMnYtMmgtMnYyem0yLjcxLTE4LjI5TDEyIDBoLTF2Ny41OUw2LjQxIDMgNSA0LjQxIDEwLjU5IDEwIDUgMTUuNTkgNi40MSAxNyAxMSAxMi40MVYyMGgxbDUuNzEtNS43MS00LjMtNC4yOSA0LjMtNC4yOXpNMTMgMy44M2wxLjg4IDEuODhMMTMgNy41OVYzLjgzem0xLjg4IDEwLjQ2TDEzIDE2LjE3di0zLjc2bDEuODggMS44OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1icmlnaHRuZXNzIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyek04IDE2aDIuNWwxLjUgMS41IDEuNS0xLjVIMTZ2LTIuNWwxLjUtMS41LTEuNS0xLjVWOGgtMi41TDEyIDYuNSAxMC41IDhIOHYyLjVMNi41IDEyIDggMTMuNVYxNnptNC03YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzVjl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtY2VsbCI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTE2IC4wMUw4IDBDNi45IDAgNiAuOSA2IDJ2MTZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE2SDhWNGg4djEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWV0aGVybmV0Ij48cGF0aCBkPSJNNy43NyA2Ljc2TDYuMjMgNS40OC44MiAxMmw1LjQxIDYuNTIgMS41NC0xLjI4TDMuNDIgMTJsNC4zNS01LjI0ek03IDEzaDJ2LTJIN3Yyem0xMC0yaC0ydjJoMnYtMnptLTYgMmgydi0yaC0ydjJ6bTYuNzctNy41MmwtMS41NCAxLjI4TDIwLjU4IDEybC00LjM1IDUuMjQgMS41NCAxLjI4TDIzLjE4IDEybC01LjQxLTYuNTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtYW50ZW5uYSI+PHBhdGggZD0iTTEyIDVjLTMuODcgMC03IDMuMTMtNyA3aDJjMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWgyYzAtMy44Ny0zLjEzLTctNy03em0xIDkuMjljLjg4LS4zOSAxLjUtMS4yNiAxLjUtMi4yOSAwLTEuMzgtMS4xMi0yLjUtMi41LTIuNVM5LjUgMTAuNjIgOS41IDEyYzAgMS4wMi42MiAxLjkgMS41IDIuMjl2My4zTDcuNTkgMjEgOSAyMi40MWwzLTMgMyAzTDE2LjQxIDIxIDEzIDE3LjU5di0zLjN6TTEyIDFDNS45MyAxIDEgNS45MyAxIDEyaDJjMC00Ljk3IDQuMDMtOSA5LTlzOSA0LjAzIDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LWNvbXBvbmVudCI+PHBhdGggZD0iTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1jb21wb3NpdGUiPjxwYXRoIGQ9Ik01IDJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEgxdjZoNlY2SDVWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMkg5djJ6bS04IDBjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4QzYuMTYgMTguNCA3IDE3LjMgNyAxNnYtMkgxdjJ6TTIxIDZWMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0aC0ydjZoNlY2aC0yem0tOC00YzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIOXY2aDZWNmgtMlYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0yaC02djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtaGRtaSI+PHBhdGggZD0iTTE4IDdWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYzSDV2NmwzIDZ2M2g4di0zbDMtNlY3aC0xek04IDRoOHYzaC0yVjVoLTF2MmgtMlY1aC0xdjJIOFY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LXN2aWRlbyI+PHBhdGggZD0iTTggMTEuNWMwLS44My0uNjctMS41LTEuNS0xLjVTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjV6bTctNWMwLS44My0uNjctMS41LTEuNS0xLjVoLTNDOS42NyA1IDkgNS42NyA5IDYuNVM5LjY3IDggMTAuNSA4aDNjLjgzIDAgMS41LS42NyAxLjUtMS41ek04LjUgMTVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzcuNjcgMTggOC41IDE4czEuNS0uNjcgMS41LTEuNVM5LjMzIDE1IDguNSAxNXpNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJzNC45MyAxMSAxMSAxMSAxMS00LjkzIDExLTExUzE4LjA3IDEgMTIgMXptMCAyMGMtNC45NiAwLTktNC4wNC05LTlzNC4wNC05IDktOSA5IDQuMDQgOSA5LTQuMDQgOS05IDl6bTUuNS0xMWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bS0yIDVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLW92ZXJzY2FuIj48cGF0aCBkPSJNMTIuMDEgNS41TDEwIDhoNGwtMS45OS0yLjV6TTE4IDEwdjRsMi41LTEuOTlMMTggMTB6TTYgMTBsLTIuNSAyLjAxTDYgMTR2LTR6bTggNmgtNGwyLjAxIDIuNUwxNCAxNnptNy0xM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk5aDE4djE0LjAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLXBob25lIj48cGF0aCBkPSJNMTMgOWgtMnYyaDJWOXptNCAwaC0ydjJoMlY5em0zIDYuNWMtMS4yNSAwLTIuNDUtLjItMy41Ny0uNTctLjM1LS4xMS0uNzQtLjAzLTEuMDIuMjRsLTIuMiAyLjJjLTIuODMtMS40NC01LjE1LTMuNzUtNi41OS02LjU4bDIuMi0yLjIxYy4yOC0uMjcuMzYtLjY2LjI1LTEuMDFDOC43IDYuNDUgOC41IDUuMjUgOC41IDRjMC0uNTUtLjQ1LTEtMS0xSDRjLS41NSAwLTEgLjQ1LTEgMSAwIDkuMzkgNy42MSAxNyAxNyAxNyAuNTUgMCAxLS40NSAxLTF2LTMuNWMwLS41NS0uNDUtMS0xLTF6TTE5IDl2MmgyVjloLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcG93ZXIiPjxwYXRoIGQ9Ik03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0yLTIyaC0ydjEwaDJWMnptMy41NiAyLjQ0bC0xLjQ1IDEuNDVDMTYuODQgNi45NCAxOCA4LjgzIDE4IDExYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02YzAtMi4xNyAxLjE2LTQuMDYgMi44OC01LjEyTDcuNDQgNC40NEM1LjM2IDUuODggNCA4LjI4IDQgMTFjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuNzItMS4zNi01LjEyLTMuNDQtNi41NnpNMTUgMjRoMnYtMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLXJlbW90ZSI+PHBhdGggZD0iTTE1IDlIOWMtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xVjEwYzAtLjU1LS40NS0xLTEtMXptLTMgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTcuMDUgNi4wNWwxLjQxIDEuNDFDOS4zNyA2LjU2IDEwLjYyIDYgMTIgNnMyLjYzLjU2IDMuNTQgMS40NmwxLjQxLTEuNDFDMTUuNjggNC43OCAxMy45MyA0IDEyIDRzLTMuNjguNzgtNC45NSAyLjA1ek0xMiAwQzguOTYgMCA2LjIxIDEuMjMgNC4yMiAzLjIybDEuNDEgMS40MUM3LjI2IDMuMDEgOS41MSAyIDEyIDJzNC43NCAxLjAxIDYuMzYgMi42NGwxLjQxLTEuNDFDMTcuNzkgMS4yMyAxNS4wNCAwIDEyIDB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3Mtdm9pY2UiPjxwYXRoIGQ9Ik03IDI0aDJ2LTJIN3Yyem01LTExYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zTDE1IDRjMC0xLjY2LTEuMzQtMy0zLTNTOSAyLjM0IDkgNHY2YzAgMS42NiAxLjM0IDMgMyAzem0tMSAxMWgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bTQtMTRoLTEuN2MwIDMtMi41NCA1LjEtNS4zIDUuMVM2LjcgMTMgNi43IDEwSDVjMCAzLjQxIDIuNzIgNi4yMyA2IDYuNzJWMjBoMnYtMy4yOGMzLjI4LS40OSA2LTMuMzEgNi02LjcyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNob3AiPjxwYXRoIGQ9Ik0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHpNOSAxOFY5bDcuNSA0TDkgMTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcC10d28iPjxwYXRoIGQ9Ik0zIDlIMXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMkgzVjl6bTE1LTRWM2MwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINXYxMWMwIDEuMTEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjg5IDItMlY1aC01em0tNi0yaDR2MmgtNFYzem0wIDEyVjhsNS41IDMtNS41IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcHBpbmctYmFza2V0Ij48cGF0aCBkPSJNMTcuMjEgOWwtNC4zOC02LjU2Yy0uMTktLjI4LS41MS0uNDItLjgzLS40Mi0uMzIgMC0uNjQuMTQtLjgzLjQzTDYuNzkgOUgyYy0uNTUgMC0xIC40NS0xIDEgMCAuMDkuMDEuMTguMDQuMjdsMi41NCA5LjI3Yy4yMy44NCAxIDEuNDYgMS45MiAxLjQ2aDEzYy45MiAwIDEuNjktLjYyIDEuOTMtMS40NmwyLjU0LTkuMjdMMjMgMTBjMC0uNTUtLjQ1LTEtMS0xaC00Ljc5ek05IDlsMy00LjRMMTUgOUg5em0zIDhjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNob3BwaW5nLWNhcnQiPjxwYXRoIGQ9Ik03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yek0xIDJ2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5Yy4wOC0uMTQuMTItLjMxLjEyLS40OCAwLS41NS0uNDUtMS0xLTFINS4yMWwtLjk0LTJIMXptMTYgMTZjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNvcnQiPjxwYXRoIGQ9Ik0zIDE4aDZ2LTJIM3Yyek0zIDZ2MmgxOFY2SDN6bTAgN2gxMnYtMkgzdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3BlYWtlci1ub3RlcyI+PHBhdGggZD0iTTIwIDJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDIybDQtNGgxNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDE0SDZ2LTJoMnYyem0wLTNINlY5aDJ2MnptMC0zSDZWNmgydjJ6bTcgNmgtNXYtMmg1djJ6bTMtM2gtOFY5aDh2MnptMC0zaC04VjZoOHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNwZWFrZXItbm90ZXMtb2ZmIj48cGF0aCBkPSJNMTAuNTQgMTFsLS41NC0uNTRMNy41NCA4IDYgNi40NiAyLjM4IDIuODQgMS4yNyAxLjczIDAgM2wyLjAxIDIuMDFMMiAyMmw0LTRoOWw1LjczIDUuNzNMMjIgMjIuNDYgMTcuNTQgMThsLTctN3pNOCAxNEg2di0yaDJ2MnptLTItM1Y5bDIgMkg2em0xNC05SDQuMDhMMTAgNy45MlY2aDh2MmgtNy45MmwxIDFIMTh2MmgtNC45Mmw2Ljk5IDYuOTlDMjEuMTQgMTcuOTUgMjIgMTcuMDggMjIgMTZWNGMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzcGVsbGNoZWNrIj48cGF0aCBkPSJNMTIuNDUgMTZoMi4wOUw5LjQzIDNINy41N0wyLjQ2IDE2aDIuMDlsMS4xMi0zaDUuNjRsMS4xNCAzem0tNi4wMi01TDguNSA1LjQ4IDEwLjU3IDExSDYuNDN6bTE1LjE2LjU5bC04LjA5IDguMDlMOS44MyAxNmwtMS40MSAxLjQxIDUuMDkgNS4wOUwyMyAxM2wtMS40MS0xLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0YXIiPjxwYXRoIGQ9Ik0xMiAxNy4yN0wxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdGFyLWJvcmRlciI+PHBhdGggZD0iTTIyIDkuMjRsLTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRsLTMuNzYgMi4yNyAxLTQuMjgtMy4zMi0yLjg4IDQuMzgtLjM4TDEyIDYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3Rhci1oYWxmIj48cGF0aCBkPSJNMjIgOS4yNGwtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNFY2LjFsMS43MSA0LjA0IDQuMzguMzgtMy4zMiAyLjg4IDEgNC4yOEwxMiAxNS40eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0YXJzIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNC4yNCAxNkwxMiAxNS40NSA3Ljc3IDE4bDEuMTItNC44MS0zLjczLTMuMjMgNC45Mi0uNDJMMTIgNWwxLjkyIDQuNTMgNC45Mi40Mi0zLjczIDMuMjNMMTYuMjMgMTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RvcmUiPjxwYXRoIGQ9Ik0yMCA0SDR2MmgxNlY0em0xIDEwdi0ybC0xLTVINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF6bS05IDRINnYtNGg2djR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3ViZGlyZWN0b3J5LWFycm93LWxlZnQiPjxwYXRoIGQ9Ik0xMSA5bDEuNDIgMS40Mkw4LjgzIDE0SDE4VjRoMnYxMkg4LjgzbDMuNTkgMy41OEwxMSAyMWwtNi02IDYtNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJkaXJlY3RvcnktYXJyb3ctcmlnaHQiPjxwYXRoIGQ9Ik0xOSAxNWwtNiA2LTEuNDItMS40MkwxNS4xNyAxNkg0VjRoMnYxMGg5LjE3bC0zLjU5LTMuNThMMTMgOWw2IDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3ViamVjdCI+PHBhdGggZD0iTTE0IDE3SDR2MmgxMHYtMnptNi04SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpNNCA1djJoMTZWNUg0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN1cGVydmlzb3ItYWNjb3VudCI+PHBhdGggZD0iTTE2LjUgMTJjMS4zOCAwIDIuNDktMS4xMiAyLjQ5LTIuNVMxNy44OCA3IDE2LjUgN0MxNS4xMiA3IDE0IDguMTIgMTQgOS41czEuMTIgMi41IDIuNSAyLjV6TTkgMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNTMTAuNjYgNSA5IDVDNy4zNCA1IDYgNi4zNCA2IDhzMS4zNCAzIDMgM3ptNy41IDNjLTEuODMgMC01LjUuOTItNS41IDIuNzVWMTloMTF2LTIuMjVjMC0xLjgzLTMuNjctMi43NS01LjUtMi43NXpNOSAxM2MtMi4zMyAwLTcgMS4xNy03IDMuNVYxOWg3di0yLjI1YzAtLjg1LjMzLTIuMzQgMi4zNy0zLjQ3QzEwLjUgMTMuMSA5LjY2IDEzIDkgMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3dhcC1ob3JpeiI+PHBhdGggZD0iTTYuOTkgMTFMMyAxNWwzLjk5IDR2LTNIMTR2LTJINi45OXYtM3pNMjEgOWwtMy45OS00djNIMTB2Mmg3LjAxdjNMMjEgOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2FwLXZlcnQiPjxwYXRoIGQ9Ik0xNiAxNy4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzTDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2FwLXZlcnRpY2FsLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTYuNSA5TDEwIDUuNSAxMy41IDlIMTF2NEg5VjlINi41em0xMSA2TDE0IDE4LjUgMTAuNSAxNUgxM3YtNGgydjRoMi41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN5c3RlbS11cGRhdGUtYWx0Ij48cGF0aCBkPSJNMTIgMTYuNWw0LTRoLTN2LTloLTJ2OUg4bDQgNHptOS0xM2gtNnYxLjk5aDZ2MTQuMDNIM1Y1LjQ5aDZWMy41SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ2LTE0YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRhYiI+PHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFiLXVuc2VsZWN0ZWQiPjxwYXRoIGQ9Ik0xIDloMlY3SDF2MnptMCA0aDJ2LTJIMXYyem0wLThoMlYzYy0xLjEgMC0yIC45LTIgMnptOCAxNmgydi0ySDl2MnptLTgtNGgydi0ySDF2MnptMiA0di0ySDFjMCAxLjEuOSAyIDIgMnpNMjEgM2gtOHY2aDEwVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTRoMnYtMmgtMnYyek05IDVoMlYzSDl2MnpNNSAyMWgydi0ySDV2MnpNNSA1aDJWM0g1djJ6bTE2IDE2YzEuMSAwIDItLjkgMi0yaC0ydjJ6bTAtOGgydi0yaC0ydjJ6bS04IDhoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRleHQtZm9ybWF0Ij48cGF0aCBkPSJNNSAxN3YyaDE0di0ySDV6bTQuNS00LjJoNWwuOSAyLjJoMi4xTDEyLjc1IDRoLTEuNUw2LjUgMTVoMi4xbC45LTIuMnpNMTIgNS45OEwxMy44NyAxMWgtMy43NEwxMiA1Ljk4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRoZWF0ZXJzIj48cGF0aCBkPSJNMTggM3YyaC0yVjNIOHYySDZWM0g0djE4aDJ2LTJoMnYyaDh2LTJoMnYyaDJWM2gtMnpNOCAxN0g2di0yaDJ2MnptMC00SDZ2LTJoMnYyem0wLTRINlY3aDJ2MnptMTAgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aHVtYi1kb3duIj48cGF0aCBkPSJNMTUgM0g2Yy0uODMgMC0xLjU0LjUtMS44NCAxLjIybC0zLjAyIDcuMDVjLS4wOS4yMy0uMTQuNDctLjE0LjczdjEuOTFsLjAxLjAxTDEgMTRjMCAxLjEuOSAyIDIgMmg2LjMxbC0uOTUgNC41Ny0uMDMuMzJjMCAuNDEuMTcuNzkuNDQgMS4wNkw5LjgzIDIzbDYuNTktNi41OWMuMzYtLjM2LjU4LS44Ni41OC0xLjQxVjVjMC0xLjEtLjktMi0yLTJ6bTQgMHYxMmg0VjNoLTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGh1bWItdXAiPjxwYXRoIGQ9Ik0xIDIxaDRWOUgxdjEyem0yMi0xMWMwLTEuMS0uOS0yLTItMmgtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAxIDcuNTkgNy41OUM3LjIyIDcuOTUgNyA4LjQ1IDcgOXYxMGMwIDEuMS45IDIgMiAyaDljLjgzIDAgMS41NC0uNSAxLjg0LTEuMjJsMy4wMi03LjA1Yy4wOS0uMjMuMTQtLjQ3LjE0LS43M3YtMS45MWwtLjAxLS4wMUwyMyAxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aHVtYnMtdXAtZG93biI+PHBhdGggZD0iTTEyIDZjMC0uNTUtLjQ1LTEtMS0xSDUuODJsLjY2LTMuMTguMDItLjIzYzAtLjMxLS4xMy0uNTktLjMzLS44TDUuMzggMCAuNDQgNC45NEMuMTcgNS4yMSAwIDUuNTkgMCA2djYuNWMwIC44My42NyAxLjUgMS41IDEuNWg2Ljc1Yy42MiAwIDEuMTUtLjM4IDEuMzgtLjkxbDIuMjYtNS4yOWMuMDctLjE3LjExLS4zNi4xMS0uNTVWNnptMTAuNSA0aC02Ljc1Yy0uNjIgMC0xLjE1LjM4LTEuMzguOTFsLTIuMjYgNS4yOWMtLjA3LjE3LS4xMS4zNi0uMTEuNTVWMThjMCAuNTUuNDUgMSAxIDFoNS4xOGwtLjY2IDMuMTgtLjAyLjI0YzAgLjMxLjEzLjU5LjMzLjhsLjc5Ljc4IDQuOTQtNC45NGMuMjctLjI3LjQ0LS42NS40NC0xLjA2di02LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVsaW5lIj48cGF0aCBkPSJNMjMgOGMwIDEuMS0uOSAyLTIgMi0uMTggMC0uMzUtLjAyLS41MS0uMDdsLTMuNTYgMy41NWMuMDUuMTYuMDcuMzQuMDcuNTIgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yYzAtLjE4LjAyLS4zNi4wNy0uNTJsLTIuNTUtMi41NWMtLjE2LjA1LS4zNC4wNy0uNTIuMDdzLS4zNi0uMDItLjUyLS4wN2wtNC41NSA0LjU2Yy4wNS4xNi4wNy4zMy4wNy41MSAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTIgLjktMiAyLTJjLjE4IDAgLjM1LjAyLjUxLjA3bDQuNTYtNC41NUM4LjAyIDkuMzYgOCA5LjE4IDggOWMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgLjE4LS4wMi4zNi0uMDcuNTJsMi41NSAyLjU1Yy4xNi0uMDUuMzQtLjA3LjUyLS4wN3MuMzYuMDIuNTIuMDdsMy41NS0zLjU2QzE5LjAyIDguMzUgMTkgOC4xOCAxOSA4YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idG9jIj48cGF0aCBkPSJNMyA5aDE0VjdIM3Yyem0wIDRoMTR2LTJIM3Yyem0wIDRoMTR2LTJIM3Yyem0xNiAwaDJ2LTJoLTJ2MnptMC0xMHYyaDJWN2gtMnptMCA2aDJ2LTJoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b2RheSI+PHBhdGggZD0iTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpNNyAxMGg1djVIN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b2xsIj48cGF0aCBkPSJNMTUgNGMtNC40MiAwLTggMy41OC04IDhzMy41OCA4IDggOCA4LTMuNTggOC04LTMuNTgtOC04LTh6bTAgMTRjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2ek0zIDEyYzAtMi42MSAxLjY3LTQuODMgNC01LjY1VjQuMjZDMy41NSA1LjE1IDEgOC4yNyAxIDEyczIuNTUgNi44NSA2IDcuNzR2LTIuMDljLTIuMzMtLjgyLTQtMy4wNC00LTUuNjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idG91Y2gtYXBwIj48cGF0aCBkPSJNOSAxMS4yNFY3LjVDOSA2LjEyIDEwLjEyIDUgMTEuNSA1UzE0IDYuMTIgMTQgNy41djMuNzRjMS4yMS0uODEgMi0yLjE4IDItMy43NEMxNiA1LjAxIDEzLjk5IDMgMTEuNSAzUzcgNS4wMSA3IDcuNWMwIDEuNTYuNzkgMi45MyAyIDMuNzR6bTkuODQgNC42M2wtNC41NC0yLjI2Yy0uMTctLjA3LS4zNS0uMTEtLjU0LS4xMUgxM3YtNmMwLS44My0uNjctMS41LTEuNS0xLjVTMTAgNi42NyAxMCA3LjV2MTAuNzRsLTMuNDMtLjcyYy0uMDgtLjAxLS4xNS0uMDMtLjI0LS4wMy0uMzEgMC0uNTkuMTMtLjc5LjMzbC0uNzkuOCA0Ljk0IDQuOTRjLjI3LjI3LjY1LjQ0IDEuMDYuNDRoNi43OWMuNzUgMCAxLjMzLS41NSAxLjQ0LTEuMjhsLjc1LTUuMjdjLjAxLS4wNy4wMi0uMTQuMDItLjIgMC0uNjItLjM4LTEuMTYtLjkxLTEuMzh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJhY2stY2hhbmdlcyI+PHBhdGggZD0iTTE5LjA3IDQuOTNsLTEuNDEgMS40MUMxOS4xIDcuNzkgMjAgOS43OSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOGMwLTQuMDggMy4wNS03LjQ0IDctNy45M3YyLjAyQzguMTYgNi41NyA2IDkuMDMgNiAxMmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDEgMS40MUMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NnYyLjE0Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlYyaC0xQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJhbnNsYXRlIj48cGF0aCBkPSJNMTIuODcgMTUuMDdsLTIuNTQtMi41MS4wMy0uMDNjMS43NC0xLjk0IDIuOTgtNC4xNyAzLjcxLTYuNTNIMTdWNGgtN1YySDh2MkgxdjEuOTloMTEuMTdDMTEuNSA3LjkyIDEwLjQ0IDkuNzUgOSAxMS4zNSA4LjA3IDEwLjMyIDcuMyA5LjE5IDYuNjkgOGgtMmMuNzMgMS42MyAxLjczIDMuMTcgMi45OCA0LjU2bC01LjA5IDUuMDJMNCAxOWw1LTUgMy4xMSAzLjExLjc2LTIuMDR6TTE4LjUgMTBoLTJMMTIgMjJoMmwxLjEyLTNoNC43NUwyMSAyMmgybC00LjUtMTJ6bS0yLjYyIDdsMS42Mi00LjMzTDE5LjEyIDE3aC0zLjI0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyZW5kaW5nLWRvd24iPjxwYXRoIGQ9Ik0xNiAxOGwyLjI5LTIuMjktNC44OC00Ljg4LTQgNEwyIDcuNDEgMy40MSA2bDYgNiA0LTQgNi4zIDYuMjlMMjIgMTJ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmVuZGluZy1mbGF0Ij48cGF0aCBkPSJNMjIgMTJsLTQtNHYzSDN2MmgxNXYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyZW5kaW5nLXVwIj48cGF0aCBkPSJNMTYgNmwyLjI5IDIuMjktNC44OCA0Ljg4LTQtNEwyIDE2LjU5IDMuNDEgMThsNi02IDQgNCA2LjMtNi4yOUwyMiAxMlY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InR1cm5lZC1pbiI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0dXJuZWQtaW4tbm90Ij48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1bC01LTIuMThMNyAxOFY1aDEwdjEzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVuYXJjaGl2ZSI+PHBhdGggZD0iTTIwLjU1IDUuMjJsLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNS41NUwzLjQ2IDUuMjJDMy4xNyA1LjU3IDMgNi4wMSAzIDYuNVYxOWMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2LjVjMC0uNDktLjE3LS45My0uNDUtMS4yOHpNMTIgOS41bDUuNSA1LjVIMTR2MmgtNHYtMkg2LjVMMTIgOS41ek01LjEyIDVsLjgyLTFoMTJsLjkzIDFINS4xMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ1bmRvIj48cGF0aCBkPSJNMTIuNSA4Yy0yLjY1IDAtNS4wNS45OS02LjkgMi42TDIgN3Y5aDlsLTMuNjItMy42MmMxLjM5LTEuMTYgMy4xNi0xLjg4IDUuMTItMS44OCAzLjU0IDAgNi41NSAyLjMxIDcuNiA1LjVsMi4zNy0uNzhDMjEuMDggMTEuMDMgMTcuMTUgOCAxMi41IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5mb2xkLWxlc3MiPjxwYXRoIGQ9Ik03LjQxIDE4LjU5TDguODMgMjAgMTIgMTYuODMgMTUuMTcgMjBsMS40MS0xLjQxTDEyIDE0bC00LjU5IDQuNTl6bTkuMTgtMTMuMThMMTUuMTcgNCAxMiA3LjE3IDguODMgNCA3LjQxIDUuNDEgMTIgMTBsNC41OS00LjU5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVuZm9sZC1tb3JlIj48cGF0aCBkPSJNMTIgNS44M0wxNS4xNyA5bDEuNDEtMS40MUwxMiAzIDcuNDEgNy41OSA4LjgzIDkgMTIgNS44M3ptMCAxMi4zNEw4LjgzIDE1bC0xLjQxIDEuNDFMMTIgMjFsNC41OS00LjU5TDE1LjE3IDE1IDEyIDE4LjE3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVwZGF0ZSI+PHBhdGggZD0iTTIxIDEwLjEyaC02Ljc4bDIuNzQtMi44MmMtMi43My0yLjctNy4xNS0yLjgtOS44OC0uMS0yLjczIDIuNzEtMi43MyA3LjA4IDAgOS43OSAyLjczIDIuNzEgNy4xNSAyLjcxIDkuODggMEMxOC4zMiAxNS42NSAxOSAxNC4wOCAxOSAxMi4xaDJjMCAxLjk4LS44OCA0LjU1LTIuNjQgNi4yOS0zLjUxIDMuNDgtOS4yMSAzLjQ4LTEyLjcyIDAtMy41LTMuNDctMy41My05LjExLS4wMi0xMi41OCAzLjUxLTMuNDcgOS4xNC0zLjQ3IDEyLjY1IDBMMjEgM3Y3LjEyek0xMi41IDh2NC4yNWwzLjUgMi4wOC0uNzIgMS4yMUwxMSAxM1Y4aDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2ZXJpZmllZC11c2VyIj48cGF0aCBkPSJNMTIgMUwzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0yIDE2bC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1hZ2VuZGEiPjxwYXRoIGQ9Ik0yMCAxM0gzYy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxN2MuNTUgMCAxLS40NSAxLTF2LTZjMC0uNTUtLjQ1LTEtMS0xem0wLTEwSDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY0YzAtLjU1LS40NS0xLTEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWFycmF5Ij48cGF0aCBkPSJNNCAxOGgzVjVINHYxM3pNMTggNXYxM2gzVjVoLTN6TTggMThoOVY1SDh2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1jYXJvdXNlbCI+PHBhdGggZD0iTTcgMTloMTBWNEg3djE1em0tNS0yaDRWNkgydjExek0xOCA2djExaDRWNmgtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNvbHVtbiI+PHBhdGggZD0iTTEwIDE4aDVWNWgtNXYxM3ptLTYgMGg1VjVINHYxM3pNMTYgNXYxM2g1VjVoLTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1kYXkiPjxwYXRoIGQ9Ik0yIDIxaDE5di0zSDJ2M3pNMjAgOEgzYy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxN2MuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6TTIgM3YzaDE5VjNIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWhlYWRsaW5lIj48cGF0aCBkPSJNNCAxNWgxNnYtMkg0djJ6bTAgNGgxNnYtMkg0djJ6bTAtOGgxNlY5SDR2MnptMC02djJoMTZWNUg0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctbGlzdCI+PHBhdGggZD0iTTQgMTRoNHYtNEg0djR6bTAgNWg0di00SDR2NHpNNCA5aDRWNUg0djR6bTUgNWgxMnYtNEg5djR6bTAgNWgxMnYtNEg5djR6TTkgNXY0aDEyVjVIOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LW1vZHVsZSI+PHBhdGggZD0iTTQgMTFoNVY1SDR2NnptMCA3aDV2LTZINHY2em02IDBoNXYtNmgtNXY2em02IDBoNXYtNmgtNXY2em0tNi03aDVWNWgtNXY2em02LTZ2Nmg1VjVoLTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1xdWlsdCI+PHBhdGggZD0iTTEwIDE4aDV2LTZoLTV2NnptLTYgMGg1VjVINHYxM3ptMTIgMGg1di02aC01djZ6TTEwIDV2NmgxMVY1SDEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctc3RyZWFtIj48cGF0aCBkPSJNNCAxOGgxN3YtNkg0djZ6TTQgNXY2aDE3VjVINHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LXdlZWsiPjxwYXRoIGQ9Ik02IDVIM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xem0xNCAwaC0zYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bS03IDBoLTNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aXNpYmlsaXR5Ij48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpc2liaWxpdHktb2ZmIj48cGF0aCBkPSJNMTIgN2MyLjc2IDAgNSAyLjI0IDUgNSAwIC42NS0uMTMgMS4yNi0uMzYgMS44M2wyLjkyIDIuOTJjMS41MS0xLjI2IDIuNy0yLjg5IDMuNDMtNC43NS0xLjczLTQuMzktNi03LjUtMTEtNy41LTEuNCAwLTIuNzQuMjUtMy45OC43bDIuMTYgMi4xNkMxMC43NCA3LjEzIDExLjM1IDcgMTIgN3pNMiA0LjI3bDIuMjggMi4yOC40Ni40NkMzLjA4IDguMyAxLjc4IDEwLjAyIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNSAxLjU1IDAgMy4wMy0uMyA0LjM4LS44NGwuNDIuNDJMMTkuNzMgMjIgMjEgMjAuNzMgMy4yNyAzIDIgNC4yN3pNNy41MyA5LjhsMS41NSAxLjU1Yy0uMDUuMjEtLjA4LjQzLS4wOC42NSAwIDEuNjYgMS4zNCAzIDMgMyAuMjIgMCAuNDQtLjAzLjY1LS4wOGwxLjU1IDEuNTVjLS42Ny4zMy0xLjQxLjUzLTIuMi41My0yLjc2IDAtNS0yLjI0LTUtNSAwLS43OS4yLTEuNTMuNTMtMi4yem00LjMxLS43OGwzLjE1IDMuMTUuMDItLjE2YzAtMS42Ni0xLjM0LTMtMy0zbC0uMTcuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2FybmluZyI+PHBhdGggZD0iTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3YXRjaC1sYXRlciI+PHBhdGggZD0iTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem00LjIgMTQuMkwxMSAxM1Y3aDEuNXY1LjJsNC41IDIuNy0uOCAxLjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2Vla2VuZCI+PHBhdGggZD0iTTIxIDEwYy0xLjEgMC0yIC45LTIgMnYzSDV2LTNjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAydjVjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtNWMwLTEuMS0uOS0yLTItMnptLTMtNUg2Yy0xLjEgMC0yIC45LTIgMnYyLjE1YzEuMTYuNDEgMiAxLjUxIDIgMi44MlYxNGgxMnYtMi4wM2MwLTEuMy44NC0yLjQgMi0yLjgyVjdjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id29yayI+PHBhdGggZD0iTTIwIDZoLTRWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNiAwaC00VjRoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InlvdXR1YmUtc2VhcmNoZWQtZm9yIj48cGF0aCBkPSJNMTcuMDEgMTRoLS44bC0uMjctLjI3Yy45OC0xLjE0IDEuNTctMi42MSAxLjU3LTQuMjMgMC0zLjU5LTIuOTEtNi41LTYuNS02LjVzLTYuNSAzLTYuNSA2LjVIMmwzLjg0IDQgNC4xNi00SDYuNTFDNi41MSA3IDguNTMgNSAxMS4wMSA1czQuNSAyLjAxIDQuNSA0LjVjMCAyLjQ4LTIuMDIgNC41LTQuNSA0LjUtLjY1IDAtMS4yNi0uMTQtMS44Mi0uMzhMNy43MSAxNS4xYy45Ny41NyAyLjA5LjkgMy4zLjkgMS42MSAwIDMuMDgtLjU5IDQuMjItMS41N2wuMjcuMjd2Ljc5bDUuMDEgNC45OUwyMiAxOWwtNC45OS01eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Inpvb20taW4iPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0em0yLjUtNGgtMnYySDl2LTJIN1Y5aDJWN2gxdjJoMnYxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Inpvb20tb3V0Ij48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpNNyA5aDV2MUg3eiI+PC9wYXRoPjwvZz4KPC9kZWZzPjwvc3ZnPgo8L2lyb24taWNvbnNldC1zdmc+YDtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxiZS5jb250ZW50KTt2YXIgV2d0PXsiVSswMDA4IjoiYmFja3NwYWNlIiwiVSswMDA5IjoidGFiIiwiVSswMDFCIjoiZXNjIiwiVSswMDIwIjoic3BhY2UiLCJVKzAwN0YiOiJkZWwifSxjYmU9ezg6ImJhY2tzcGFjZSIsOToidGFiIiwxMzoiZW50ZXIiLDI3OiJlc2MiLDMzOiJwYWdldXAiLDM0OiJwYWdlZG93biIsMzU6ImVuZCIsMzY6ImhvbWUiLDMyOiJzcGFjZSIsMzc6ImxlZnQiLDM4OiJ1cCIsMzk6InJpZ2h0Iiw0MDoiZG93biIsNDY6ImRlbCIsMTA2OiIqIn0sWWd0PXtzaGlmdDoic2hpZnRLZXkiLGN0cmw6ImN0cmxLZXkiLGFsdDoiYWx0S2V5IixtZXRhOiJtZXRhS2V5In0sdWJlPS9bYS16MC05Kl0vLGhiZT0vVVwrLyxmYmU9L15hcnJvdy8scGJlPS9ec3BhY2UoYmFyKT8vLGRiZT0vXmVzY2FwZSQvO2Z1bmN0aW9uIGpndChlLHQpe3ZhciByPSIiO2lmKGUpe3ZhciBuPWUudG9Mb3dlckNhc2UoKTtuPT09IiAifHxwYmUudGVzdChuKT9yPSJzcGFjZSI6ZGJlLnRlc3Qobik/cj0iZXNjIjpuLmxlbmd0aD09MT8oIXR8fHViZS50ZXN0KG4pKSYmKHI9bik6ZmJlLnRlc3Qobik/cj1uLnJlcGxhY2UoImFycm93IiwiIik6bj09Im11bHRpcGx5Ij9yPSIqIjpyPW59cmV0dXJuIHJ9ZnVuY3Rpb24gbWJlKGUpe3ZhciB0PSIiO3JldHVybiBlJiYoZSBpbiBXZ3Q/dD1XZ3RbZV06aGJlLnRlc3QoZSk/KGU9cGFyc2VJbnQoZS5yZXBsYWNlKCJVKyIsIjB4IiksMTYpLHQ9U3RyaW5nLmZyb21DaGFyQ29kZShlKS50b0xvd2VyQ2FzZSgpKTp0PWUudG9Mb3dlckNhc2UoKSksdH1mdW5jdGlvbiBnYmUoZSl7dmFyIHQ9IiI7cmV0dXJuIE51bWJlcihlKSYmKGU+PTY1JiZlPD05MD90PVN0cmluZy5mcm9tQ2hhckNvZGUoMzIrZSk6ZT49MTEyJiZlPD0xMjM/dD0iZiIrKGUtMTEyKzEpOmU+PTQ4JiZlPD01Nz90PVN0cmluZyhlLTQ4KTplPj05NiYmZTw9MTA1P3Q9U3RyaW5nKGUtOTYpOnQ9Y2JlW2VdKSx0fWZ1bmN0aW9uIF9iZShlLHQpe3JldHVybiBlLmtleT9qZ3QoZS5rZXksdCk6ZS5kZXRhaWwmJmUuZGV0YWlsLmtleT9qZ3QoZS5kZXRhaWwua2V5LHQpOm1iZShlLmtleUlkZW50aWZpZXIpfHxnYmUoZS5rZXlDb2RlKXx8IiJ9ZnVuY3Rpb24gWGd0KGUsdCl7dmFyIHI9X2JlKHQsZS5oYXNNb2RpZmllcnMpO3JldHVybiByPT09ZS5rZXkmJighZS5oYXNNb2RpZmllcnN8fCEhdC5zaGlmdEtleT09ISFlLnNoaWZ0S2V5JiYhIXQuY3RybEtleT09ISFlLmN0cmxLZXkmJiEhdC5hbHRLZXk9PSEhZS5hbHRLZXkmJiEhdC5tZXRhS2V5PT0hIWUubWV0YUtleSl9ZnVuY3Rpb24geWJlKGUpe3JldHVybiBlLmxlbmd0aD09PTE/e2NvbWJvOmUsa2V5OmUsZXZlbnQ6ImtleWRvd24ifTplLnNwbGl0KCIrIikucmVkdWNlKGZ1bmN0aW9uKHQscil7dmFyIG49ci5zcGxpdCgiOiIpLGk9blswXSxvPW5bMV07cmV0dXJuIGkgaW4gWWd0Pyh0W1lndFtpXV09ITAsdC5oYXNNb2RpZmllcnM9ITApOih0LmtleT1pLHQuZXZlbnQ9b3x8ImtleWRvd24iKSx0fSx7Y29tYm86ZS5zcGxpdCgiOiIpLnNoaWZ0KCl9KX1mdW5jdGlvbiAkZ3QoZSl7cmV0dXJuIGUudHJpbSgpLnNwbGl0KCIgIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB5YmUodCl9KX12YXIgRG89e3Byb3BlcnRpZXM6e2tleUV2ZW50VGFyZ2V0Ont0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0sc3RvcEtleWJvYXJkRXZlbnRQcm9wYWdhdGlvbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYm91bmRLZXlIYW5kbGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX2ltcGVyYXRpdmVLZXlCaW5kaW5nczp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57fX19fSxvYnNlcnZlcnM6WyJfcmVzZXRLZXlFdmVudExpc3RlbmVycyhrZXlFdmVudFRhcmdldCwgX2JvdW5kS2V5SGFuZGxlcnMpIl0sa2V5QmluZGluZ3M6e30scmVnaXN0ZXJlZDpmdW5jdGlvbigpe3RoaXMuX3ByZXBLZXlCaW5kaW5ncygpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fdW5saXN0ZW5LZXlFdmVudExpc3RlbmVycygpfSxhZGRPd25LZXlCaW5kaW5nOmZ1bmN0aW9uKGUsdCl7dGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzW2VdPXQsdGhpcy5fcHJlcEtleUJpbmRpbmdzKCksdGhpcy5fcmVzZXRLZXlFdmVudExpc3RlbmVycygpfSxyZW1vdmVPd25LZXlCaW5kaW5nczpmdW5jdGlvbigpe3RoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5ncz17fSx0aGlzLl9wcmVwS2V5QmluZGluZ3MoKSx0aGlzLl9yZXNldEtleUV2ZW50TGlzdGVuZXJzKCl9LGtleWJvYXJkRXZlbnRNYXRjaGVzS2V5czpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0kZ3QodCksbj0wO248ci5sZW5ndGg7KytuKWlmKFhndChyW25dLGUpKXJldHVybiEwO3JldHVybiExfSxfY29sbGVjdEtleUJpbmRpbmdzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5iZWhhdmlvcnMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleUJpbmRpbmdzfSk7cmV0dXJuIGUuaW5kZXhPZih0aGlzLmtleUJpbmRpbmdzKT09PS0xJiZlLnB1c2godGhpcy5rZXlCaW5kaW5ncyksZX0sX3ByZXBLZXlCaW5kaW5nczpmdW5jdGlvbigpe3RoaXMuX2tleUJpbmRpbmdzPXt9LHRoaXMuX2NvbGxlY3RLZXlCaW5kaW5ncygpLmZvckVhY2goZnVuY3Rpb24ocil7Zm9yKHZhciBuIGluIHIpdGhpcy5fYWRkS2V5QmluZGluZyhuLHJbbl0pfSx0aGlzKTtmb3IodmFyIGUgaW4gdGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzKXRoaXMuX2FkZEtleUJpbmRpbmcoZSx0aGlzLl9pbXBlcmF0aXZlS2V5QmluZGluZ3NbZV0pO2Zvcih2YXIgdCBpbiB0aGlzLl9rZXlCaW5kaW5ncyl0aGlzLl9rZXlCaW5kaW5nc1t0XS5zb3J0KGZ1bmN0aW9uKHIsbil7dmFyIGk9clswXS5oYXNNb2RpZmllcnMsbz1uWzBdLmhhc01vZGlmaWVycztyZXR1cm4gaT09PW8/MDppPy0xOjF9KX0sX2FkZEtleUJpbmRpbmc6ZnVuY3Rpb24oZSx0KXskZ3QoZSkuZm9yRWFjaChmdW5jdGlvbihyKXt0aGlzLl9rZXlCaW5kaW5nc1tyLmV2ZW50XT10aGlzLl9rZXlCaW5kaW5nc1tyLmV2ZW50XXx8W10sdGhpcy5fa2V5QmluZGluZ3Nbci5ldmVudF0ucHVzaChbcix0XSl9LHRoaXMpfSxfcmVzZXRLZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX3VubGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LF9saXN0ZW5LZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpeyF0aGlzLmtleUV2ZW50VGFyZ2V0fHxPYmplY3Qua2V5cyh0aGlzLl9rZXlCaW5kaW5ncykuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9rZXlCaW5kaW5nc1tlXSxyPXRoaXMuX29uS2V5QmluZGluZ0V2ZW50LmJpbmQodGhpcyx0KTt0aGlzLl9ib3VuZEtleUhhbmRsZXJzLnB1c2goW3RoaXMua2V5RXZlbnRUYXJnZXQsZSxyXSksdGhpcy5rZXlFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKGUscil9LHRoaXMpfSxfdW5saXN0ZW5LZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe2Zvcih2YXIgZSx0LHIsbjt0aGlzLl9ib3VuZEtleUhhbmRsZXJzLmxlbmd0aDspZT10aGlzLl9ib3VuZEtleUhhbmRsZXJzLnBvcCgpLHQ9ZVswXSxyPWVbMV0sbj1lWzJdLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihyLG4pfSxfb25LZXlCaW5kaW5nRXZlbnQ6ZnVuY3Rpb24oZSx0KXtpZih0aGlzLnN0b3BLZXlib2FyZEV2ZW50UHJvcGFnYXRpb24mJnQuc3RvcFByb3BhZ2F0aW9uKCksIXQuZGVmYXVsdFByZXZlbnRlZClmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXVswXSxpPWVbcl1bMV07aWYoWGd0KG4sdCkmJih0aGlzLl90cmlnZ2VyS2V5SGFuZGxlcihuLGksdCksdC5kZWZhdWx0UHJldmVudGVkKSlyZXR1cm59fSxfdHJpZ2dlcktleUhhbmRsZXI6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPU9iamVjdC5jcmVhdGUoZSk7bi5rZXlib2FyZEV2ZW50PXI7dmFyIGk9bmV3IEN1c3RvbUV2ZW50KGUuZXZlbnQse2RldGFpbDpuLGNhbmNlbGFibGU6ITB9KTt0aGlzW3RdLmNhbGwodGhpcyxpKSxpLmRlZmF1bHRQcmV2ZW50ZWQmJnIucHJldmVudERlZmF1bHQoKX19O3ZhciBnOT17cHJvcGVydGllczp7c2Nyb2xsVGFyZ2V0Ont0eXBlOkhUTUxFbGVtZW50LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRTY3JvbGxUYXJnZXR9fX0sb2JzZXJ2ZXJzOlsiX3Njcm9sbFRhcmdldENoYW5nZWQoc2Nyb2xsVGFyZ2V0LCBpc0F0dGFjaGVkKSJdLF9zaG91bGRIYXZlTGlzdGVuZXI6ITAsX3Njcm9sbFRhcmdldENoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZih0aGlzLl9vbGRTY3JvbGxUYXJnZXQmJih0aGlzLl90b2dnbGVTY3JvbGxMaXN0ZW5lcighMSx0aGlzLl9vbGRTY3JvbGxUYXJnZXQpLHRoaXMuX29sZFNjcm9sbFRhcmdldD1udWxsKSwhIXQpaWYoZT09PSJkb2N1bWVudCIpdGhpcy5zY3JvbGxUYXJnZXQ9dGhpcy5fZG9jO2Vsc2UgaWYodHlwZW9mIGU9PSJzdHJpbmciKXt2YXIgbj10aGlzLmRvbUhvc3Q7dGhpcy5zY3JvbGxUYXJnZXQ9biYmbi4kP24uJFtlXTp6dCh0aGlzLm93bmVyRG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3IoIiMiK2UpfWVsc2UgdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5fb2xkU2Nyb2xsVGFyZ2V0PWUsdGhpcy5fdG9nZ2xlU2Nyb2xsTGlzdGVuZXIodGhpcy5fc2hvdWxkSGF2ZUxpc3RlbmVyLGUpKX0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXt9LGdldCBfZGVmYXVsdFNjcm9sbFRhcmdldCgpe3JldHVybiB0aGlzLl9kb2N9LGdldCBfZG9jKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LGdldCBfc2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT90aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cucGFnZVlPZmZzZXQ6dGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wOjB9LGdldCBfc2Nyb2xsTGVmdCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnBhZ2VYT2Zmc2V0OnRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQ6MH0sc2V0IF9zY3JvbGxUb3AoZSl7dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnNjcm9sbFRvKHdpbmRvdy5wYWdlWE9mZnNldCxlKTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A9ZSl9LHNldCBfc2Nyb2xsTGVmdChlKXt0aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuc2Nyb2xsVG8oZSx3aW5kb3cucGFnZVlPZmZzZXQpOnRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKSYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQ9ZSl9LHNjcm9sbDpmdW5jdGlvbihlLHQpe3ZhciByO3R5cGVvZiBlPT0ib2JqZWN0Ij8ocj1lLmxlZnQsdD1lLnRvcCk6cj1lLHI9cnx8MCx0PXR8fDAsdGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnNjcm9sbFRvKHIsdCk6dGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsTGVmdD1yLHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcD10KX0sZ2V0IF9zY3JvbGxUYXJnZXRXaWR0aCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LmlubmVyV2lkdGg6dGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0V2lkdGg6MH0sZ2V0IF9zY3JvbGxUYXJnZXRIZWlnaHQoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRIZWlnaHQ6MH0sX2lzVmFsaWRTY3JvbGxUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY3JvbGxUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0sX3RvZ2dsZVNjcm9sbExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dD09PXRoaXMuX2RvYz93aW5kb3c6dDtlP3RoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcnx8KHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcj10aGlzLl9zY3JvbGxIYW5kbGVyLmJpbmQodGhpcyksci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcikpOnRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlciYmKHIucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXIpLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcj1udWxsKX0sdG9nZ2xlU2Nyb2xsTGlzdGVuZXI6ZnVuY3Rpb24oZSl7dGhpcy5fc2hvdWxkSGF2ZUxpc3RlbmVyPWUsdGhpcy5fdG9nZ2xlU2Nyb2xsTGlzdGVuZXIoZSx0aGlzLnNjcm9sbFRhcmdldCl9fTt2YXIgS2d0PW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86aG9uZXxhZDsoPzogVTspPyBDUFUpIE9TIChcZCspLyksdmJlPUtndCYmS2d0WzFdPj04LFpndD0zLEpndD0iLTEwMDAwcHgiLGNFPS0xMDA7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKC13ZWJraXQtbWF4LWRldmljZS1waXhlbC1yYXRpbzogMSkgewogICAgICAgIDpob3N0IHsKICAgICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgICAgfQogICAgICB9CgogICAgICAjaXRlbXMgewogICAgICAgIEBhcHBseSAtLWlyb24tbGlzdC1pdGVtcy1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFtncmlkXSkpICNpdGVtcyA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICNpdGVtcyA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxhcnJheS1zZWxlY3RvciBpZD0ic2VsZWN0b3IiIGl0ZW1zPSJ7e2l0ZW1zfX0iIHNlbGVjdGVkPSJ7e3NlbGVjdGVkSXRlbXN9fSIgc2VsZWN0ZWQtaXRlbT0ie3tzZWxlY3RlZEl0ZW19fSI+PC9hcnJheS1zZWxlY3Rvcj4KCiAgICA8ZGl2IGlkPSJpdGVtcyI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJpcm9uLWxpc3QiLHByb3BlcnRpZXM6e2l0ZW1zOnt0eXBlOkFycmF5fSxhczp7dHlwZTpTdHJpbmcsdmFsdWU6Iml0ZW0ifSxpbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaW5kZXgifSxzZWxlY3RlZEFzOnt0eXBlOlN0cmluZyx2YWx1ZToic2VsZWN0ZWQifSxncmlkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfZ3JpZENoYW5nZWQifSxzZWxlY3Rpb25FbmFibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHNlbGVjdGVkSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LG11bHRpU2VsZWN0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHNjcm9sbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MH19LG9ic2VydmVyczpbIl9pdGVtc0NoYW5nZWQoaXRlbXMuKikiLCJfc2VsZWN0aW9uRW5hYmxlZENoYW5nZWQoc2VsZWN0aW9uRW5hYmxlZCkiLCJfbXVsdGlTZWxlY3Rpb25DaGFuZ2VkKG11bHRpU2VsZWN0aW9uKSIsIl9zZXRPdmVyZmxvdyhzY3JvbGxUYXJnZXQsIHNjcm9sbE9mZnNldCkiXSxiZWhhdmlvcnM6W09ndCxacyxnOSxWZ3RdLF9yYXRpbzouNSxfc2Nyb2xsZXJQYWRkaW5nVG9wOjAsX3Njcm9sbFBvc2l0aW9uOjAsX3BoeXNpY2FsU2l6ZTowLF9waHlzaWNhbEF2ZXJhZ2U6MCxfcGh5c2ljYWxBdmVyYWdlQ291bnQ6MCxfcGh5c2ljYWxUb3A6MCxfdmlydHVhbENvdW50OjAsX2VzdFNjcm9sbEhlaWdodDowLF9zY3JvbGxIZWlnaHQ6MCxfdmlld3BvcnRIZWlnaHQ6MCxfdmlld3BvcnRXaWR0aDowLF9waHlzaWNhbEl0ZW1zOm51bGwsX3BoeXNpY2FsU2l6ZXM6bnVsbCxfZmlyc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbGFzdFZpc2libGVJbmRleFZhbDpudWxsLF9tYXhQYWdlczoyLF9mb2N1c2VkSXRlbTpudWxsLF9mb2N1c2VkVmlydHVhbEluZGV4Oi0xLF9mb2N1c2VkUGh5c2ljYWxJbmRleDotMSxfb2Zmc2NyZWVuRm9jdXNlZEl0ZW06bnVsbCxfZm9jdXNCYWNrZmlsbEl0ZW06bnVsbCxfaXRlbXNQZXJSb3c6MSxfaXRlbVdpZHRoOjAsX3Jvd0hlaWdodDowLF90ZW1wbGF0ZUNvc3Q6MCxfcGFyZW50TW9kZWw6ITAsZ2V0IF9waHlzaWNhbEJvdHRvbSgpe3JldHVybiB0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9waHlzaWNhbFNpemV9LGdldCBfc2Nyb2xsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3ZpZXdwb3J0SGVpZ2h0fSxnZXQgX3ZpcnR1YWxFbmQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMX0sZ2V0IF9oaWRkZW5Db250ZW50U2l6ZSgpe3ZhciBlPXRoaXMuZ3JpZD90aGlzLl9waHlzaWNhbFJvd3MqdGhpcy5fcm93SGVpZ2h0OnRoaXMuX3BoeXNpY2FsU2l6ZTtyZXR1cm4gZS10aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF9pdGVtc1BhcmVudCgpe3JldHVybiB6dCh6dCh0aGlzLl91c2VyVGVtcGxhdGUpLnBhcmVudE5vZGUpfSxnZXQgX21heFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fdmlld3BvcnRIZWlnaHQrdGhpcy5fc2Nyb2xsT2Zmc2V0fSxnZXQgX21heFZpcnR1YWxTdGFydCgpe3ZhciBlPXRoaXMuX2NvbnZlcnRJbmRleFRvQ29tcGxldGVSb3codGhpcy5fdmlydHVhbENvdW50KTtyZXR1cm4gTWF0aC5tYXgoMCxlLXRoaXMuX3BoeXNpY2FsQ291bnQpfSxzZXQgX3ZpcnR1YWxTdGFydChlKXtlPXRoaXMuX2NsYW1wKGUsMCx0aGlzLl9tYXhWaXJ0dWFsU3RhcnQpLHRoaXMuZ3JpZCYmKGU9ZS1lJXRoaXMuX2l0ZW1zUGVyUm93KSx0aGlzLl92aXJ0dWFsU3RhcnRWYWw9ZX0sZ2V0IF92aXJ0dWFsU3RhcnQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0VmFsfHwwfSxzZXQgX3BoeXNpY2FsU3RhcnQoZSl7ZT1lJXRoaXMuX3BoeXNpY2FsQ291bnQsZTwwJiYoZT10aGlzLl9waHlzaWNhbENvdW50K2UpLHRoaXMuZ3JpZCYmKGU9ZS1lJXRoaXMuX2l0ZW1zUGVyUm93KSx0aGlzLl9waHlzaWNhbFN0YXJ0VmFsPWV9LGdldCBfcGh5c2ljYWxTdGFydCgpe3JldHVybiB0aGlzLl9waHlzaWNhbFN0YXJ0VmFsfHwwfSxnZXQgX3BoeXNpY2FsRW5kKCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xKSV0aGlzLl9waHlzaWNhbENvdW50fSxzZXQgX3BoeXNpY2FsQ291bnQoZSl7dGhpcy5fcGh5c2ljYWxDb3VudFZhbD1lfSxnZXQgX3BoeXNpY2FsQ291bnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxDb3VudFZhbHx8MH0sZ2V0IF9vcHRQaHlzaWNhbFNpemUoKXtyZXR1cm4gdGhpcy5fdmlld3BvcnRIZWlnaHQ9PT0wPzEvMDp0aGlzLl92aWV3cG9ydEhlaWdodCp0aGlzLl9tYXhQYWdlc30sZ2V0IF9pc1Zpc2libGUoKXtyZXR1cm4gQm9vbGVhbih0aGlzLm9mZnNldFdpZHRofHx0aGlzLm9mZnNldEhlaWdodCl9LGdldCBmaXJzdFZpc2libGVJbmRleCgpe3ZhciBlPXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsO2lmKGU9PW51bGwpe3ZhciB0PXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDtlPXRoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihyLG4pe2lmKHQrPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChyKSx0PnRoaXMuX3Njcm9sbFBvc2l0aW9uKXJldHVybiB0aGlzLmdyaWQ/bi1uJXRoaXMuX2l0ZW1zUGVyUm93Om47aWYodGhpcy5ncmlkJiZ0aGlzLl92aXJ0dWFsQ291bnQtMT09PW4pcmV0dXJuIG4tbiV0aGlzLl9pdGVtc1BlclJvd30pfHwwLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPWV9cmV0dXJuIGV9LGdldCBsYXN0VmlzaWJsZUluZGV4KCl7dmFyIGU9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbDtpZihlPT1udWxsKXtpZih0aGlzLmdyaWQpZT1NYXRoLm1pbih0aGlzLl92aXJ0dWFsQ291bnQsdGhpcy5maXJzdFZpc2libGVJbmRleCt0aGlzLl9lc3RSb3dzSW5WaWV3KnRoaXMuX2l0ZW1zUGVyUm93LTEpO2Vsc2V7dmFyIHQ9dGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0O3RoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihyLG4pe3Q8dGhpcy5fc2Nyb2xsQm90dG9tJiYoZT1uKSx0Kz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQocil9KX10aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPWV9cmV0dXJuIGV9LGdldCBfZGVmYXVsdFNjcm9sbFRhcmdldCgpe3JldHVybiB0aGlzfSxnZXQgX3ZpcnR1YWxSb3dDb3VudCgpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fdmlydHVhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KX0sZ2V0IF9lc3RSb3dzSW5WaWV3KCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLl92aWV3cG9ydEhlaWdodC90aGlzLl9yb3dIZWlnaHQpfSxnZXQgX3BoeXNpY2FsUm93cygpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fcGh5c2ljYWxDb3VudC90aGlzLl9pdGVtc1BlclJvdyl9LGdldCBfc2Nyb2xsT2Zmc2V0KCl7cmV0dXJuIHRoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcCt0aGlzLnNjcm9sbE9mZnNldH0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9kaWRGb2N1cy5iaW5kKHRoaXMpLCEwKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLFJpKSx0aGlzLmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIiksdGhpcy5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMudW5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpLHRoaXMudW5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxfc2V0T3ZlcmZsb3c6ZnVuY3Rpb24oZSl7dGhpcy5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZz1lPT09dGhpcz8idG91Y2giOiIiLHRoaXMuc3R5bGUub3ZlcmZsb3dZPWU9PT10aGlzPyJhdXRvIjoiIix0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLFJpKX0sdXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyk7dGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wPXRoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcz8wOnBhcnNlSW50KGVbInBhZGRpbmctdG9wIl0sMTApLHRoaXMuX2lzUlRMPUJvb2xlYW4oZS5kaXJlY3Rpb249PT0icnRsIiksdGhpcy5fdmlld3BvcnRXaWR0aD10aGlzLiQuaXRlbXMub2Zmc2V0V2lkdGgsdGhpcy5fdmlld3BvcnRIZWlnaHQ9dGhpcy5fc2Nyb2xsVGFyZ2V0SGVpZ2h0LHRoaXMuZ3JpZCYmdGhpcy5fdXBkYXRlR3JpZE1ldHJpY3MoKX0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuX21heFNjcm9sbFRvcCx0aGlzLl9zY3JvbGxUb3ApKSx0PWUtdGhpcy5fc2Nyb2xsUG9zaXRpb24scj10Pj0wO2lmKHRoaXMuX3Njcm9sbFBvc2l0aW9uPWUsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsTWF0aC5hYnModCk+dGhpcy5fcGh5c2ljYWxTaXplJiZ0aGlzLl9waHlzaWNhbFNpemU+MCl7dD10LXRoaXMuX3Njcm9sbE9mZnNldDt2YXIgbj1NYXRoLnJvdW5kKHQvdGhpcy5fcGh5c2ljYWxBdmVyYWdlKSp0aGlzLl9pdGVtc1BlclJvdzt0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K24sdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K24sdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5taW4oTWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZSx0aGlzLl9zY3JvbGxQb3NpdGlvbiksdGhpcy5fdXBkYXRlKCl9ZWxzZSBpZih0aGlzLl9waHlzaWNhbENvdW50PjApe3ZhciBpPXRoaXMuX2dldFJldXNhYmxlcyhyKTtyPyh0aGlzLl9waHlzaWNhbFRvcD1pLnBoeXNpY2FsVG9wLHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQraS5pbmRleGVzLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQraS5pbmRleGVzLmxlbmd0aCk6KHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQtaS5pbmRleGVzLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQtaS5pbmRleGVzLmxlbmd0aCksdGhpcy5fdXBkYXRlKGkuaW5kZXhlcyxyP251bGw6aS5pbmRleGVzKSx0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsMCksY2kpfX0sX2dldFJldXNhYmxlczpmdW5jdGlvbihlKXt2YXIgdCxyLG4saSxvPVtdLGE9dGhpcy5faGlkZGVuQ29udGVudFNpemUqdGhpcy5fcmF0aW8scz10aGlzLl92aXJ0dWFsU3RhcnQsbD10aGlzLl92aXJ0dWFsRW5kLGM9dGhpcy5fcGh5c2ljYWxDb3VudCx1PXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCxoPXRoaXMuX3BoeXNpY2FsQm90dG9tK3RoaXMuX3Njcm9sbE9mZnNldCxmPXRoaXMuX3Njcm9sbFBvc2l0aW9uLHA9dGhpcy5fc2Nyb2xsQm90dG9tO2ZvcihlPyh0PXRoaXMuX3BoeXNpY2FsU3RhcnQscj10aGlzLl9waHlzaWNhbEVuZCxuPWYtdSk6KHQ9dGhpcy5fcGh5c2ljYWxFbmQscj10aGlzLl9waHlzaWNhbFN0YXJ0LG49aC1wKTtpPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudCh0KSxuPW4taSwhKG8ubGVuZ3RoPj1jfHxuPD1hKTspaWYoZSl7aWYobCtvLmxlbmd0aCsxPj10aGlzLl92aXJ0dWFsQ291bnR8fHUraT49Zi10aGlzLl9zY3JvbGxPZmZzZXQpYnJlYWs7by5wdXNoKHQpLHU9dStpLHQ9KHQrMSklY31lbHNle2lmKHMtby5sZW5ndGg8PTB8fHUrdGhpcy5fcGh5c2ljYWxTaXplLWk8PXApYnJlYWs7by5wdXNoKHQpLHU9dS1pLHQ9dD09PTA/Yy0xOnQtMX1yZXR1cm57aW5kZXhlczpvLHBoeXNpY2FsVG9wOnUtdGhpcy5fc2Nyb2xsT2Zmc2V0fX0sX3VwZGF0ZTpmdW5jdGlvbihlLHQpe2lmKCEoZSYmZS5sZW5ndGg9PT0wfHx0aGlzLl9waHlzaWNhbENvdW50PT09MCkpe2lmKHRoaXMuX21hbmFnZUZvY3VzKCksdGhpcy5fYXNzaWduTW9kZWxzKGUpLHRoaXMuX3VwZGF0ZU1ldHJpY3MoZSksdClmb3IoO3QubGVuZ3RoOyl7dmFyIHI9dC5wb3AoKTt0aGlzLl9waHlzaWNhbFRvcC09dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KHIpfXRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX19LF9jcmVhdGVQb29sOmZ1bmN0aW9uKGUpe3RoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCk7dmFyIHQscixuPW5ldyBBcnJheShlKTtmb3IodD0wO3Q8ZTt0Kyspcj10aGlzLnN0YW1wKG51bGwpLG5bdF09ci5yb290LnF1ZXJ5U2VsZWN0b3IoIioiKSx0aGlzLl9pdGVtc1BhcmVudC5hcHBlbmRDaGlsZChyLnJvb3QpO3JldHVybiBufSxfaXNDbGllbnRGdWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Njcm9sbEJvdHRvbSE9MCYmdGhpcy5fcGh5c2ljYWxCb3R0b20tMT49dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbFRvcDw9dGhpcy5fc2Nyb2xsUG9zaXRpb259LF9pbmNyZWFzZVBvb2xJZk5lZWRlZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jbGFtcCh0aGlzLl9waHlzaWNhbENvdW50K2UsWmd0LHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQpO2lmKHQ9dGhpcy5fY29udmVydEluZGV4VG9Db21wbGV0ZVJvdyh0KSx0aGlzLmdyaWQpe3ZhciByPXQldGhpcy5faXRlbXNQZXJSb3c7ciYmdC1yPD10aGlzLl9waHlzaWNhbENvdW50JiYodCs9dGhpcy5faXRlbXNQZXJSb3cpLHQtPXJ9dmFyIG49dC10aGlzLl9waHlzaWNhbENvdW50LGk9TWF0aC5yb3VuZCh0aGlzLl9waHlzaWNhbENvdW50Ki41KTtpZighKG48MCkpe2lmKG4+MCl7dmFyIG89d2luZG93LnBlcmZvcm1hbmNlLm5vdygpO1tdLnB1c2guYXBwbHkodGhpcy5fcGh5c2ljYWxJdGVtcyx0aGlzLl9jcmVhdGVQb29sKG4pKTtmb3IodmFyIGE9MDthPG47YSsrKXRoaXMuX3BoeXNpY2FsU2l6ZXMucHVzaCgwKTt0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnQrbix0aGlzLl9waHlzaWNhbFN0YXJ0PnRoaXMuX3BoeXNpY2FsRW5kJiZ0aGlzLl9pc0luZGV4UmVuZGVyZWQodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCkmJnRoaXMuX2dldFBoeXNpY2FsSW5kZXgodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCk8dGhpcy5fcGh5c2ljYWxFbmQmJih0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrbiksdGhpcy5fdXBkYXRlKCksdGhpcy5fdGVtcGxhdGVDb3N0PSh3aW5kb3cucGVyZm9ybWFuY2Uubm93KCktbykvbixpPU1hdGgucm91bmQodGhpcy5fcGh5c2ljYWxDb3VudCouNSl9dGhpcy5fdmlydHVhbEVuZD49dGhpcy5fdmlydHVhbENvdW50LTF8fGk9PT0wfHwodGhpcy5faXNDbGllbnRGdWxsKCk/dGhpcy5fcGh5c2ljYWxTaXplPHRoaXMuX29wdFBoeXNpY2FsU2l6ZSYmdGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLHRoaXMuX2NsYW1wKE1hdGgucm91bmQoNTAvdGhpcy5fdGVtcGxhdGVDb3N0KSwxLGkpKSxMeCk6dGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLGkpLGNpKSl9fSxfcmVuZGVyOmZ1bmN0aW9uKCl7aWYoISghdGhpcy5pc0F0dGFjaGVkfHwhdGhpcy5faXNWaXNpYmxlKSlpZih0aGlzLl9waHlzaWNhbENvdW50IT09MCl7dmFyIGU9dGhpcy5fZ2V0UmV1c2FibGVzKCEwKTt0aGlzLl9waHlzaWNhbFRvcD1lLnBoeXNpY2FsVG9wLHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrZS5pbmRleGVzLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrZS5pbmRleGVzLmxlbmd0aCx0aGlzLl91cGRhdGUoZS5pbmRleGVzKSx0aGlzLl91cGRhdGUoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKX1lbHNlIHRoaXMuX3ZpcnR1YWxDb3VudD4wJiYodGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZChaZ3QpKX0sX2Vuc3VyZVRlbXBsYXRpemVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY3Rvcil7dGhpcy5fdXNlclRlbXBsYXRlPXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigidGVtcGxhdGUiKSx0aGlzLl91c2VyVGVtcGxhdGV8fGNvbnNvbGUud2FybigiaXJvbi1saXN0IHJlcXVpcmVzIGEgdGVtcGxhdGUgdG8gYmUgcHJvdmlkZWQgaW4gbGlnaHQtZG9tIik7dmFyIGU9e307ZS5fX2tleV9fPSEwLGVbdGhpcy5hc109ITAsZVt0aGlzLmluZGV4QXNdPSEwLGVbdGhpcy5zZWxlY3RlZEFzXT0hMCxlLnRhYkluZGV4PSEwLHRoaXMuX2luc3RhbmNlUHJvcHM9ZSx0aGlzLnRlbXBsYXRpemUodGhpcy5fdXNlclRlbXBsYXRlLHRoaXMubXV0YWJsZURhdGEpfX0sX2dyaWRDaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7dHlwZW9mIHQhPSJ1bmRlZmluZWQiJiYodGhpcy5ub3RpZnlSZXNpemUoKSx1aSgpLGUmJnRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCkpfSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKGUpe2lmKGUucGF0aD09PSJpdGVtcyIpdGhpcy5fdmlydHVhbFN0YXJ0PTAsdGhpcy5fcGh5c2ljYWxUb3A9MCx0aGlzLl92aXJ0dWFsQ291bnQ9dGhpcy5pdGVtcz90aGlzLml0ZW1zLmxlbmd0aDowLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXk9e30sdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50fHwwLHRoaXMuX3BoeXNpY2FsSXRlbXM9dGhpcy5fcGh5c2ljYWxJdGVtc3x8W10sdGhpcy5fcGh5c2ljYWxTaXplcz10aGlzLl9waHlzaWNhbFNpemVzfHxbXSx0aGlzLl9waHlzaWNhbFN0YXJ0PTAsdGhpcy5fc2Nyb2xsVG9wPnRoaXMuX3Njcm9sbE9mZnNldCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbigwKSx0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsUmkpO2Vsc2UgaWYoZS5wYXRoPT09Iml0ZW1zLnNwbGljZXMiKXt0aGlzLl9hZGp1c3RWaXJ0dWFsSW5kZXgoZS52YWx1ZS5pbmRleFNwbGljZXMpLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjA7dmFyIHQ9ZS52YWx1ZS5pbmRleFNwbGljZXMuc29tZShmdW5jdGlvbihpKXtyZXR1cm4gaS5hZGRlZENvdW50PjB8fGkucmVtb3ZlZC5sZW5ndGg+MH0pO2lmKHQpe3ZhciByPXRoaXMuX2dldEFjdGl2ZUVsZW1lbnQoKTt0aGlzLmNvbnRhaW5zKHIpJiZyLmJsdXIoKX12YXIgbj1lLnZhbHVlLmluZGV4U3BsaWNlcy5zb21lKGZ1bmN0aW9uKGkpe3JldHVybiBpLmluZGV4K2kuYWRkZWRDb3VudD49dGhpcy5fdmlydHVhbFN0YXJ0JiZpLmluZGV4PD10aGlzLl92aXJ0dWFsRW5kfSx0aGlzKTsoIXRoaXMuX2lzQ2xpZW50RnVsbCgpfHxuKSYmdGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixSaSl9ZWxzZSBlLnBhdGghPT0iaXRlbXMubGVuZ3RoIiYmdGhpcy5fZm9yd2FyZEl0ZW1QYXRoKGUucGF0aCxlLnZhbHVlKX0sX2ZvcndhcmRJdGVtUGF0aDpmdW5jdGlvbihlLHQpe2U9ZS5zbGljZSg2KTt2YXIgcj1lLmluZGV4T2YoIi4iKTtyPT09LTEmJihyPWUubGVuZ3RoKTt2YXIgbixpLG8sYT10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSkscz1wYXJzZUludChlLnN1YnN0cmluZygwLHIpLDEwKTtuPXRoaXMuX2lzSW5kZXhSZW5kZXJlZChzKSxuPyhpPXRoaXMuX2dldFBoeXNpY2FsSW5kZXgocyksbz10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW2ldKSk6YSYmKG89YSksISghb3x8b1t0aGlzLmluZGV4QXNdIT09cykmJihlPWUuc3Vic3RyaW5nKHIrMSksZT10aGlzLmFzKyhlPyIuIitlOiIiKSxvLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgoZSx0LCExLCEwKSxvLl9mbHVzaFByb3BlcnRpZXMmJm8uX2ZsdXNoUHJvcGVydGllcygpLG4mJih0aGlzLl91cGRhdGVNZXRyaWNzKFtpXSksdGhpcy5fcG9zaXRpb25JdGVtcygpLHRoaXMuX3VwZGF0ZVNjcm9sbGVyU2l6ZSgpKSl9LF9hZGp1c3RWaXJ0dWFsSW5kZXg6ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKHQucmVtb3ZlZC5mb3JFYWNoKHRoaXMuX3JlbW92ZUl0ZW0sdGhpcyksdC5pbmRleDx0aGlzLl92aXJ0dWFsU3RhcnQpe3ZhciByPU1hdGgubWF4KHQuYWRkZWRDb3VudC10LnJlbW92ZWQubGVuZ3RoLHQuaW5kZXgtdGhpcy5fdmlydHVhbFN0YXJ0KTt0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K3IsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD49MCYmKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCtyKX19LHRoaXMpfSxfcmVtb3ZlSXRlbTpmdW5jdGlvbihlKXt0aGlzLiQuc2VsZWN0b3IuZGVzZWxlY3QoZSksdGhpcy5fZm9jdXNlZEl0ZW0mJnRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX2ZvY3VzZWRJdGVtKVt0aGlzLmFzXT09PWUmJnRoaXMuX3JlbW92ZUZvY3VzZWRJdGVtKCl9LF9pdGVyYXRlSXRlbXM6ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbztpZihhcmd1bWVudHMubGVuZ3RoPT09MiYmdCl7Zm9yKG89MDtvPHQubGVuZ3RoO28rKylpZihyPXRbb10sbj10aGlzLl9jb21wdXRlVmlkeChyKSwoaT1lLmNhbGwodGhpcyxyLG4pKSE9bnVsbClyZXR1cm4gaX1lbHNle2ZvcihyPXRoaXMuX3BoeXNpY2FsU3RhcnQsbj10aGlzLl92aXJ0dWFsU3RhcnQ7cjx0aGlzLl9waHlzaWNhbENvdW50O3IrKyxuKyspaWYoKGk9ZS5jYWxsKHRoaXMscixuKSkhPW51bGwpcmV0dXJuIGk7Zm9yKHI9MDtyPHRoaXMuX3BoeXNpY2FsU3RhcnQ7cisrLG4rKylpZigoaT1lLmNhbGwodGhpcyxyLG4pKSE9bnVsbClyZXR1cm4gaX19LF9jb21wdXRlVmlkeDpmdW5jdGlvbihlKXtyZXR1cm4gZT49dGhpcy5fcGh5c2ljYWxTdGFydD90aGlzLl92aXJ0dWFsU3RhcnQrKGUtdGhpcy5fcGh5c2ljYWxTdGFydCk6dGhpcy5fdmlydHVhbFN0YXJ0Kyh0aGlzLl9waHlzaWNhbENvdW50LXRoaXMuX3BoeXNpY2FsU3RhcnQpK2V9LF9hc3NpZ25Nb2RlbHM6ZnVuY3Rpb24oZSl7dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKHQscil7dmFyIG49dGhpcy5fcGh5c2ljYWxJdGVtc1t0XSxpPXRoaXMuaXRlbXMmJnRoaXMuaXRlbXNbcl07aWYoaSE9bnVsbCl7dmFyIG89dGhpcy5tb2RlbEZvckVsZW1lbnQobik7by5fX2tleV9fPW51bGwsdGhpcy5fZm9yd2FyZFByb3BlcnR5KG8sdGhpcy5hcyxpKSx0aGlzLl9mb3J3YXJkUHJvcGVydHkobyx0aGlzLnNlbGVjdGVkQXMsdGhpcy4kLnNlbGVjdG9yLmlzU2VsZWN0ZWQoaSkpLHRoaXMuX2ZvcndhcmRQcm9wZXJ0eShvLHRoaXMuaW5kZXhBcyxyKSx0aGlzLl9mb3J3YXJkUHJvcGVydHkobywidGFiSW5kZXgiLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9PT1yPzA6LTEpLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXlbby5fX2tleV9fXT10LG8uX2ZsdXNoUHJvcGVydGllcyYmby5fZmx1c2hQcm9wZXJ0aWVzKCEwKSxuLnJlbW92ZUF0dHJpYnV0ZSgiaGlkZGVuIil9ZWxzZSBuLnNldEF0dHJpYnV0ZSgiaGlkZGVuIiwiIil9LGUpfSxfdXBkYXRlTWV0cmljczpmdW5jdGlvbihlKXt1aSgpO3ZhciB0PTAscj0wLG49dGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQsaT10aGlzLl9waHlzaWNhbEF2ZXJhZ2U7dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKG8sYSl7cis9dGhpcy5fcGh5c2ljYWxTaXplc1tvXSx0aGlzLl9waHlzaWNhbFNpemVzW29dPXRoaXMuX3BoeXNpY2FsSXRlbXNbb10ub2Zmc2V0SGVpZ2h0LHQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbb10sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbb10/MTowfSxlKSx0aGlzLmdyaWQ/KHRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxTaXplPU1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9yb3dIZWlnaHQpOihyPXRoaXMuX2l0ZW1zUGVyUm93PT09MT9yOk1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9yb3dIZWlnaHQsdGhpcy5fcGh5c2ljYWxTaXplPXRoaXMuX3BoeXNpY2FsU2l6ZSt0LXIsdGhpcy5faXRlbXNQZXJSb3c9MSksdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQhPT1uJiYodGhpcy5fcGh5c2ljYWxBdmVyYWdlPU1hdGgucm91bmQoKGkqbit0KS90aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCkpfSxfdXBkYXRlR3JpZE1ldHJpY3M6ZnVuY3Rpb24oKXt0aGlzLl9pdGVtV2lkdGg9dGhpcy5fcGh5c2ljYWxDb3VudD4wP3RoaXMuX3BoeXNpY2FsSXRlbXNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg6MjAwLHRoaXMuX3Jvd0hlaWdodD10aGlzLl9waHlzaWNhbENvdW50PjA/dGhpcy5fcGh5c2ljYWxJdGVtc1swXS5vZmZzZXRIZWlnaHQ6MjAwLHRoaXMuX2l0ZW1zUGVyUm93PXRoaXMuX2l0ZW1XaWR0aD9NYXRoLmZsb29yKHRoaXMuX3ZpZXdwb3J0V2lkdGgvdGhpcy5faXRlbVdpZHRoKTp0aGlzLl9pdGVtc1BlclJvd30sX3Bvc2l0aW9uSXRlbXM6ZnVuY3Rpb24oKXt0aGlzLl9hZGp1c3RTY3JvbGxQb3NpdGlvbigpO3ZhciBlPXRoaXMuX3BoeXNpY2FsVG9wO2lmKHRoaXMuZ3JpZCl7dmFyIHQ9dGhpcy5faXRlbXNQZXJSb3cqdGhpcy5faXRlbVdpZHRoLHI9KHRoaXMuX3ZpZXdwb3J0V2lkdGgtdCkvMjt0aGlzLl9pdGVyYXRlSXRlbXMoZnVuY3Rpb24obixpKXt2YXIgbz1pJXRoaXMuX2l0ZW1zUGVyUm93LGE9TWF0aC5mbG9vcihvKnRoaXMuX2l0ZW1XaWR0aCtyKTt0aGlzLl9pc1JUTCYmKGE9YSotMSksdGhpcy50cmFuc2xhdGUzZChhKyJweCIsZSsicHgiLDAsdGhpcy5fcGh5c2ljYWxJdGVtc1tuXSksdGhpcy5fc2hvdWxkUmVuZGVyTmV4dFJvdyhpKSYmKGUrPXRoaXMuX3Jvd0hlaWdodCl9KX1lbHNle2xldCBuPVtdO3RoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihpLG8pe2xldCBhPXRoaXMuX3BoeXNpY2FsSXRlbXNbaV07dGhpcy50cmFuc2xhdGUzZCgwLGUrInB4IiwwLGEpLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbaV07bGV0IHM9YS5pZDtzJiZuLnB1c2gocyl9KSxuLmxlbmd0aCYmdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtb3ducyIsbi5qb2luKCIgIikpfX0sX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5ncmlkP3RoaXMuX2NvbXB1dGVWaWR4KGUpJXRoaXMuX2l0ZW1zUGVyUm93IT09dGhpcy5faXRlbXNQZXJSb3ctMT8wOnRoaXMuX3Jvd0hlaWdodDp0aGlzLl9waHlzaWNhbFNpemVzW2VdfSxfc2hvdWxkUmVuZGVyTmV4dFJvdzpmdW5jdGlvbihlKXtyZXR1cm4gZSV0aGlzLl9pdGVtc1BlclJvdz09PXRoaXMuX2l0ZW1zUGVyUm93LTF9LF9hZGp1c3RTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ZpcnR1YWxTdGFydD09PTA/dGhpcy5fcGh5c2ljYWxUb3A6TWF0aC5taW4odGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fcGh5c2ljYWxUb3AsMCk7aWYoZSE9PTApe3RoaXMuX3BoeXNpY2FsVG9wPXRoaXMuX3BoeXNpY2FsVG9wLWU7dmFyIHQ9dGhpcy5fc2Nyb2xsUG9zaXRpb247IXZiZSYmdD4wJiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHQtZSl9fSxfcmVzZXRTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbihlKXt0aGlzLnNjcm9sbFRhcmdldCYmZT49MCYmKHRoaXMuX3Njcm9sbFRvcD1lLHRoaXMuX3Njcm9sbFBvc2l0aW9uPXRoaXMuX3Njcm9sbFRvcCl9LF91cGRhdGVTY3JvbGxlclNpemU6ZnVuY3Rpb24oZSl7dGhpcy5ncmlkP3RoaXMuX2VzdFNjcm9sbEhlaWdodD10aGlzLl92aXJ0dWFsUm93Q291bnQqdGhpcy5fcm93SGVpZ2h0OnRoaXMuX2VzdFNjcm9sbEhlaWdodD10aGlzLl9waHlzaWNhbEJvdHRvbStNYXRoLm1heCh0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQsMCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlLGU9ZXx8dGhpcy5fc2Nyb2xsSGVpZ2h0PT09MCxlPWV8fHRoaXMuX3Njcm9sbFBvc2l0aW9uPj10aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fcGh5c2ljYWxTaXplLGU9ZXx8dGhpcy5ncmlkJiZ0aGlzLiQuaXRlbXMuc3R5bGUuaGVpZ2h0PHRoaXMuX2VzdFNjcm9sbEhlaWdodCwoZXx8TWF0aC5hYnModGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3Njcm9sbEhlaWdodCk+PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0KSYmKHRoaXMuJC5pdGVtcy5zdHlsZS5oZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KyJweCIsdGhpcy5fc2Nyb2xsSGVpZ2h0PXRoaXMuX2VzdFNjcm9sbEhlaWdodCl9LHNjcm9sbFRvSXRlbTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zY3JvbGxUb0luZGV4KHRoaXMuaXRlbXMuaW5kZXhPZihlKSl9LHNjcm9sbFRvSW5kZXg6ZnVuY3Rpb24oZSl7aWYoISh0eXBlb2YgZSE9Im51bWJlciJ8fGU8MHx8ZT50aGlzLml0ZW1zLmxlbmd0aC0xKSYmKHVpKCksdGhpcy5fcGh5c2ljYWxDb3VudCE9PTApKXtlPXRoaXMuX2NsYW1wKGUsMCx0aGlzLl92aXJ0dWFsQ291bnQtMSksKCF0aGlzLl9pc0luZGV4UmVuZGVyZWQoZSl8fGU+PXRoaXMuX21heFZpcnR1YWxTdGFydCkmJih0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5ncmlkP2UtdGhpcy5faXRlbXNQZXJSb3cqMjplLTEpLHRoaXMuX21hbmFnZUZvY3VzKCksdGhpcy5fYXNzaWduTW9kZWxzKCksdGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3BoeXNpY2FsVG9wPU1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2U7Zm9yKHZhciB0PXRoaXMuX3BoeXNpY2FsU3RhcnQscj10aGlzLl92aXJ0dWFsU3RhcnQsbj0wLGk9dGhpcy5faGlkZGVuQ29udGVudFNpemU7cjxlJiZuPD1pOyluPW4rdGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KHQpLHQ9KHQrMSkldGhpcy5fcGh5c2ljYWxDb3VudCxyKys7dGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCEwKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQrbiksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGx9fSxfcmVzZXRBdmVyYWdlOmZ1bmN0aW9uKCl7dGhpcy5fcGh5c2ljYWxBdmVyYWdlPTAsdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQ9MH0sX3Jlc2l6ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsZnVuY3Rpb24oKXt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9pc1Zpc2libGU/KHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMCksdGhpcy5fcmVzZXRBdmVyYWdlKCksdGhpcy5fcmVuZGVyKCkpOnRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEpfSxSaSl9LHNlbGVjdEl0ZW06ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2VsZWN0SW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKGUpKX0sc2VsZWN0SW5kZXg6ZnVuY3Rpb24oZSl7aWYoIShlPDB8fGU+PXRoaXMuX3ZpcnR1YWxDb3VudCkpe2lmKCF0aGlzLm11bHRpU2VsZWN0aW9uJiZ0aGlzLnNlbGVjdGVkSXRlbSYmdGhpcy5jbGVhclNlbGVjdGlvbigpLHRoaXMuX2lzSW5kZXhSZW5kZXJlZChlKSl7dmFyIHQ9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9nZXRQaHlzaWNhbEluZGV4KGUpXSk7dCYmKHRbdGhpcy5zZWxlY3RlZEFzXT0hMCksdGhpcy51cGRhdGVTaXplRm9ySW5kZXgoZSl9dGhpcy4kLnNlbGVjdG9yLnNlbGVjdEluZGV4KGUpfX0sZGVzZWxlY3RJdGVtOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRlc2VsZWN0SW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKGUpKX0sZGVzZWxlY3RJbmRleDpmdW5jdGlvbihlKXtpZighKGU8MHx8ZT49dGhpcy5fdmlydHVhbENvdW50KSl7aWYodGhpcy5faXNJbmRleFJlbmRlcmVkKGUpKXt2YXIgdD10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgoZSldKTt0W3RoaXMuc2VsZWN0ZWRBc109ITEsdGhpcy51cGRhdGVTaXplRm9ySW5kZXgoZSl9dGhpcy4kLnNlbGVjdG9yLmRlc2VsZWN0SW5kZXgoZSl9fSx0b2dnbGVTZWxlY3Rpb25Gb3JJdGVtOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRvZ2dsZVNlbGVjdGlvbkZvckluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZihlKSl9LHRvZ2dsZVNlbGVjdGlvbkZvckluZGV4OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJC5zZWxlY3Rvci5pc0luZGV4U2VsZWN0ZWQ/dGhpcy4kLnNlbGVjdG9yLmlzSW5kZXhTZWxlY3RlZChlKTp0aGlzLiQuc2VsZWN0b3IuaXNTZWxlY3RlZCh0aGlzLml0ZW1zW2VdKTt0P3RoaXMuZGVzZWxlY3RJbmRleChlKTp0aGlzLnNlbGVjdEluZGV4KGUpfSxjbGVhclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihlLHQpe3RoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbZV0pW3RoaXMuc2VsZWN0ZWRBc109ITF9KSx0aGlzLiQuc2VsZWN0b3IuY2xlYXJTZWxlY3Rpb24oKX0sX3NlbGVjdGlvbkVuYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKGUpe3ZhciB0PWU/dGhpcy5saXN0ZW46dGhpcy51bmxpc3Rlbjt0LmNhbGwodGhpcyx0aGlzLCJ0YXAiLCJfc2VsZWN0aW9uSGFuZGxlciIpfSxfc2VsZWN0aW9uSGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm1vZGVsRm9yRWxlbWVudChlLnRhcmdldCk7aWYoISF0KXt2YXIgcixuLGk9enQoZSkucGF0aFswXSxvPXRoaXMuX2dldEFjdGl2ZUVsZW1lbnQoKSxhPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0W3RoaXMuaW5kZXhBc10pXTtpLmxvY2FsTmFtZT09PSJpbnB1dCJ8fGkubG9jYWxOYW1lPT09ImJ1dHRvbiJ8fGkubG9jYWxOYW1lPT09InNlbGVjdCJ8fChyPXQudGFiSW5kZXgsdC50YWJJbmRleD1jRSxuPW8/by50YWJJbmRleDotMSx0LnRhYkluZGV4PXIsIShvJiZhIT09byYmYS5jb250YWlucyhvKSYmbiE9PWNFKSYmdGhpcy50b2dnbGVTZWxlY3Rpb25Gb3JJdGVtKHRbdGhpcy5hc10pKX19LF9tdWx0aVNlbGVjdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oZSl7dGhpcy5jbGVhclNlbGVjdGlvbigpLHRoaXMuJC5zZWxlY3Rvci5tdWx0aT1lfSx1cGRhdGVTaXplRm9ySXRlbTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy51cGRhdGVTaXplRm9ySW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKGUpKX0sdXBkYXRlU2l6ZUZvckluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9pc0luZGV4UmVuZGVyZWQoZSkmJih0aGlzLl91cGRhdGVNZXRyaWNzKFt0aGlzLl9nZXRQaHlzaWNhbEluZGV4KGUpXSksdGhpcy5fcG9zaXRpb25JdGVtcygpKSxudWxsfSxfbWFuYWdlRm9jdXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4O2U+PTAmJmU8dGhpcy5fdmlydHVhbENvdW50P3RoaXMuX2lzSW5kZXhSZW5kZXJlZChlKT90aGlzLl9yZXN0b3JlRm9jdXNlZEl0ZW0oKTp0aGlzLl9jcmVhdGVGb2N1c0JhY2tmaWxsSXRlbSgpOnRoaXMuX3ZpcnR1YWxDb3VudD4wJiZ0aGlzLl9waHlzaWNhbENvdW50PjAmJih0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleD10aGlzLl9waHlzaWNhbFN0YXJ0LHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9dGhpcy5fdmlydHVhbFN0YXJ0LHRoaXMuX2ZvY3VzZWRJdGVtPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fcGh5c2ljYWxTdGFydF0pfSxfY29udmVydEluZGV4VG9Db21wbGV0ZVJvdzpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faXRlbXNQZXJSb3c9dGhpcy5faXRlbXNQZXJSb3d8fDEsdGhpcy5ncmlkP01hdGguY2VpbChlL3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9pdGVtc1BlclJvdzplfSxfaXNJbmRleFJlbmRlcmVkOmZ1bmN0aW9uKGUpe3JldHVybiBlPj10aGlzLl92aXJ0dWFsU3RhcnQmJmU8PXRoaXMuX3ZpcnR1YWxFbmR9LF9pc0luZGV4VmlzaWJsZTpmdW5jdGlvbihlKXtyZXR1cm4gZT49dGhpcy5maXJzdFZpc2libGVJbmRleCYmZTw9dGhpcy5sYXN0VmlzaWJsZUluZGV4fSxfZ2V0UGh5c2ljYWxJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5fcGh5c2ljYWxTdGFydCsoZS10aGlzLl92aXJ0dWFsU3RhcnQpKSV0aGlzLl9waHlzaWNhbENvdW50fSxmb2N1c0l0ZW06ZnVuY3Rpb24oZSl7dGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0oZSl9LF9mb2N1c1BoeXNpY2FsSXRlbTpmdW5jdGlvbihlKXtpZighKGU8MHx8ZT49dGhpcy5fdmlydHVhbENvdW50KSl7dGhpcy5fcmVzdG9yZUZvY3VzZWRJdGVtKCksdGhpcy5faXNJbmRleFJlbmRlcmVkKGUpfHx0aGlzLnNjcm9sbFRvSW5kZXgoZSk7dmFyIHQ9dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9nZXRQaHlzaWNhbEluZGV4KGUpXSxyPXRoaXMubW9kZWxGb3JFbGVtZW50KHQpLG47ci50YWJJbmRleD1jRSx0LnRhYkluZGV4PT09Y0UmJihuPXQpLG58fChuPXp0KHQpLnF1ZXJ5U2VsZWN0b3IoJ1t0YWJpbmRleD0iJytjRSsnIl0nKSksci50YWJJbmRleD0wLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9ZSxuJiZuLmZvY3VzKCl9fSxfcmVtb3ZlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmdGhpcy5faXRlbXNQYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0pLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtPW51bGwsdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09bnVsbCx0aGlzLl9mb2N1c2VkSXRlbT1udWxsLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg9LTEsdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9LTF9LF9jcmVhdGVGb2N1c0JhY2tmaWxsSXRlbTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4O2lmKCEodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW18fHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg8MCkpe2lmKCF0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbSl7dmFyIHQ9dGhpcy5zdGFtcChudWxsKTt0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT10LnJvb3QucXVlcnlTZWxlY3RvcigiKiIpLHRoaXMuX2l0ZW1zUGFyZW50LmFwcGVuZENoaWxkKHQucm9vdCl9dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1tlXSx0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSkudGFiSW5kZXg9MCx0aGlzLl9waHlzaWNhbEl0ZW1zW2VdPXRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtLHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PWUsdGhpcy50cmFuc2xhdGUzZCgwLEpndCwwLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtKX19LF9yZXN0b3JlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXtpZighKCF0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbXx8dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDwwKSl7dGhpcy5fYXNzaWduTW9kZWxzKCk7dmFyIGU9dGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9dGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KSx0PXRoaXMuX3BoeXNpY2FsSXRlbXNbZV07aWYoISF0KXt2YXIgcj10aGlzLm1vZGVsRm9yRWxlbWVudCh0KSxuPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtKTtyW3RoaXMuYXNdPT09blt0aGlzLmFzXT8odGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09dCxyLnRhYkluZGV4PS0xLHRoaXMuX3BoeXNpY2FsSXRlbXNbZV09dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0sdGhpcy50cmFuc2xhdGUzZCgwLEpndCwwLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtKSk6KHRoaXMuX3JlbW92ZUZvY3VzZWRJdGVtKCksdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09bnVsbCksdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09bnVsbH19fSxfZGlkRm9jdXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5tb2RlbEZvckVsZW1lbnQoZS50YXJnZXQpLHI9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fZm9jdXNlZEl0ZW0pLG49dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0hPT1udWxsLGk9dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDshdHx8KHI9PT10P3RoaXMuX2lzSW5kZXhWaXNpYmxlKGkpfHx0aGlzLnNjcm9sbFRvSW5kZXgoaSk6KHRoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpLHImJihyLnRhYkluZGV4PS0xKSx0LnRhYkluZGV4PTAsaT10W3RoaXMuaW5kZXhBc10sdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD1pLHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX2dldFBoeXNpY2FsSW5kZXgoaSksdGhpcy5fZm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleF0sbiYmIXRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiZ0aGlzLl91cGRhdGUoKSkpfSxfa2V5ZG93bkhhbmRsZXI6ZnVuY3Rpb24oZSl7c3dpdGNoKGUua2V5Q29kZSl7Y2FzZSA0MDp0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PHRoaXMuX3ZpcnR1YWxDb3VudC0xJiZlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCsodGhpcy5ncmlkP3RoaXMuX2l0ZW1zUGVyUm93OjEpKTticmVhaztjYXNlIDM5OnRoaXMuZ3JpZCYmdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCsodGhpcy5faXNSVEw/LTE6MSkpO2JyZWFrO2Nhc2UgMzg6dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD4wJiZlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleC0odGhpcy5ncmlkP3RoaXMuX2l0ZW1zUGVyUm93OjEpKTticmVhaztjYXNlIDM3OnRoaXMuZ3JpZCYmdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCsodGhpcy5faXNSVEw/MTotMSkpO2JyZWFrO2Nhc2UgMTM6dGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCksdGhpcy5zZWxlY3Rpb25FbmFibGVkJiZ0aGlzLl9zZWxlY3Rpb25IYW5kbGVyKGUpO2JyZWFrfX0sX2NsYW1wOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gTWF0aC5taW4ocixNYXRoLm1heCh0LGUpKX0sX2RlYm91bmNlOmZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9LHRoaXMuX2RlYm91bmNlcnNbZV09c3IuZGVib3VuY2UodGhpcy5fZGVib3VuY2Vyc1tlXSxyLHQuYmluZCh0aGlzKSksS2wodGhpcy5fZGVib3VuY2Vyc1tlXSl9LF9mb3J3YXJkUHJvcGVydHk6ZnVuY3Rpb24oZSx0LHIpe2UuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LHIpfSxfZm9yd2FyZEhvc3RQcm9wVjI6ZnVuY3Rpb24oZSx0KXsodGhpcy5fcGh5c2ljYWxJdGVtc3x8W10pLmNvbmNhdChbdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0sdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW1dKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ImJnRoaXMubW9kZWxGb3JFbGVtZW50KHIpLmZvcndhcmRIb3N0UHJvcChlLHQpfSx0aGlzKX0sX25vdGlmeUluc3RhbmNlUHJvcFYyOmZ1bmN0aW9uKGUsdCxyKXtpZihSSSh0aGlzLmFzLHQpKXt2YXIgbj1lW3RoaXMuaW5kZXhBc107dD09dGhpcy5hcyYmKHRoaXMuaXRlbXNbbl09ciksdGhpcy5ub3RpZnlQYXRoKGRwKHRoaXMuYXMsIml0ZW1zLiIrbix0KSxyKX19LF9nZXRTdGFtcGVkQ2hpbGRyZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxJdGVtc30sX2ZvcndhcmRJbnN0YW5jZVBhdGg6ZnVuY3Rpb24oZSx0LHIpe3QuaW5kZXhPZih0aGlzLmFzKyIuIik9PT0wJiZ0aGlzLm5vdGlmeVBhdGgoIml0ZW1zLiIrZS5fX2tleV9fKyIuIit0LnNsaWNlKHRoaXMuYXMubGVuZ3RoKzEpLHIpfSxfZm9yd2FyZFBhcmVudFBhdGg6ZnVuY3Rpb24oZSx0KXsodGhpcy5fcGh5c2ljYWxJdGVtc3x8W10pLmNvbmNhdChbdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0sdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW1dKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3ImJnRoaXMubW9kZWxGb3JFbGVtZW50KHIpLm5vdGlmeVBhdGgoZSx0KX0sdGhpcyl9LF9mb3J3YXJkUGFyZW50UHJvcDpmdW5jdGlvbihlLHQpeyh0aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSkuY29uY2F0KFt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbV0pLmZvckVhY2goZnVuY3Rpb24ocil7ciYmKHRoaXMubW9kZWxGb3JFbGVtZW50KHIpW2VdPXQpfSx0aGlzKX0sX2dldEFjdGl2ZUVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pdGVtc1BhcmVudC5ub2RlLmRvbUhvc3Q7cmV0dXJuIHp0KGU/ZS5yb290OmRvY3VtZW50KS5hY3RpdmVFbGVtZW50fX0pO3ZhciBfOT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnNlbGVjdGlvbj1bXSx0aGlzLnNlbGVjdENhbGxiYWNrPXR9Z2V0KCl7cmV0dXJuIHRoaXMubXVsdGk/dGhpcy5zZWxlY3Rpb24uc2xpY2UoKTp0aGlzLnNlbGVjdGlvblswXX1jbGVhcih0KXt0aGlzLnNlbGVjdGlvbi5zbGljZSgpLmZvckVhY2goZnVuY3Rpb24ocil7KCF0fHx0LmluZGV4T2Yocik8MCkmJnRoaXMuc2V0SXRlbVNlbGVjdGVkKHIsITEpfSx0aGlzKX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLnNlbGVjdGlvbi5pbmRleE9mKHQpPj0wfXNldEl0ZW1TZWxlY3RlZCh0LHIpe2lmKHQhPW51bGwmJnIhPT10aGlzLmlzU2VsZWN0ZWQodCkpe2lmKHIpdGhpcy5zZWxlY3Rpb24ucHVzaCh0KTtlbHNle3ZhciBuPXRoaXMuc2VsZWN0aW9uLmluZGV4T2YodCk7bj49MCYmdGhpcy5zZWxlY3Rpb24uc3BsaWNlKG4sMSl9dGhpcy5zZWxlY3RDYWxsYmFjayYmdGhpcy5zZWxlY3RDYWxsYmFjayh0LHIpfX1zZWxlY3QodCl7dGhpcy5tdWx0aT90aGlzLnRvZ2dsZSh0KTp0aGlzLmdldCgpIT09dCYmKHRoaXMuc2V0SXRlbVNlbGVjdGVkKHRoaXMuZ2V0KCksITEpLHRoaXMuc2V0SXRlbVNlbGVjdGVkKHQsITApKX10b2dnbGUodCl7dGhpcy5zZXRJdGVtU2VsZWN0ZWQodCwhdGhpcy5pc1NlbGVjdGVkKHQpKX19O3ZhciBiaD17cHJvcGVydGllczp7YXR0ckZvclNlbGVjdGVkOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxzZWxlY3RlZDp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0sYWN0aXZhdGVFdmVudDp7dHlwZTpTdHJpbmcsdmFsdWU6InRhcCIsb2JzZXJ2ZXI6Il9hY3RpdmF0ZUV2ZW50Q2hhbmdlZCJ9LHNlbGVjdGFibGU6U3RyaW5nLHNlbGVjdGVkQ2xhc3M6e3R5cGU6U3RyaW5nLHZhbHVlOiJpcm9uLXNlbGVjdGVkIn0sc2VsZWN0ZWRBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LGZhbGxiYWNrU2VsZWN0aW9uOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxpdGVtczp7dHlwZTpBcnJheSxyZWFkT25seTohMCxub3RpZnk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9leGNsdWRlZExvY2FsTmFtZXM6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3RlbXBsYXRlOjEsImRvbS1iaW5kIjoxLCJkb20taWYiOjEsImRvbS1yZXBlYXQiOjF9fX19LG9ic2VydmVyczpbIl91cGRhdGVBdHRyRm9yU2VsZWN0ZWQoYXR0ckZvclNlbGVjdGVkKSIsIl91cGRhdGVTZWxlY3RlZChzZWxlY3RlZCkiLCJfY2hlY2tGYWxsYmFjayhmYWxsYmFja1NlbGVjdGlvbikiXSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fYmluZEZpbHRlckl0ZW09dGhpcy5fZmlsdGVySXRlbS5iaW5kKHRoaXMpLHRoaXMuX3NlbGVjdGlvbj1uZXcgXzkodGhpcy5fYXBwbHlTZWxlY3Rpb24uYmluZCh0aGlzKSl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9dGhpcy5fb2JzZXJ2ZUl0ZW1zKHRoaXMpLHRoaXMuX2FkZExpc3RlbmVyKHRoaXMuYWN0aXZhdGVFdmVudCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJnp0KHRoaXMpLnVub2JzZXJ2ZU5vZGVzKHRoaXMuX29ic2VydmVyKSx0aGlzLl9yZW1vdmVMaXN0ZW5lcih0aGlzLmFjdGl2YXRlRXZlbnQpfSxpbmRleE9mOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLml0ZW1zP3RoaXMuaXRlbXMuaW5kZXhPZihlKTotMX0sc2VsZWN0OmZ1bmN0aW9uKGUpe3RoaXMuc2VsZWN0ZWQ9ZX0sc2VsZWN0UHJldmlvdXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLml0ZW1zLmxlbmd0aCx0PWUtMTt0aGlzLnNlbGVjdGVkIT09dm9pZCAwJiYodD0oTnVtYmVyKHRoaXMuX3ZhbHVlVG9JbmRleCh0aGlzLnNlbGVjdGVkKSktMStlKSVlKSx0aGlzLnNlbGVjdGVkPXRoaXMuX2luZGV4VG9WYWx1ZSh0KX0sc2VsZWN0TmV4dDpmdW5jdGlvbigpe3ZhciBlPTA7dGhpcy5zZWxlY3RlZCE9PXZvaWQgMCYmKGU9KE51bWJlcih0aGlzLl92YWx1ZVRvSW5kZXgodGhpcy5zZWxlY3RlZCkpKzEpJXRoaXMuaXRlbXMubGVuZ3RoKSx0aGlzLnNlbGVjdGVkPXRoaXMuX2luZGV4VG9WYWx1ZShlKX0sc2VsZWN0SW5kZXg6ZnVuY3Rpb24oZSl7dGhpcy5zZWxlY3QodGhpcy5faW5kZXhUb1ZhbHVlKGUpKX0sZm9yY2VTeW5jaHJvbm91c0l0ZW1VcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlciYmdHlwZW9mIHRoaXMuX29ic2VydmVyLmZsdXNoPT0iZnVuY3Rpb24iP3RoaXMuX29ic2VydmVyLmZsdXNoKCk6dGhpcy5fdXBkYXRlSXRlbXMoKX0sZ2V0IF9zaG91bGRVcGRhdGVTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZCE9bnVsbH0sX2NoZWNrRmFsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVTZWxlY3RlZCgpfSxfYWRkTGlzdGVuZXI6ZnVuY3Rpb24oZSl7dGhpcy5saXN0ZW4odGhpcyxlLCJfYWN0aXZhdGVIYW5kbGVyIil9LF9yZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbihlKXt0aGlzLnVubGlzdGVuKHRoaXMsZSwiX2FjdGl2YXRlSGFuZGxlciIpfSxfYWN0aXZhdGVFdmVudENoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9yZW1vdmVMaXN0ZW5lcih0KSx0aGlzLl9hZGRMaXN0ZW5lcihlKX0sX3VwZGF0ZUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIGU9enQodGhpcykucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHRoaXMuc2VsZWN0YWJsZXx8IioiKTtlPUFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChlLHRoaXMuX2JpbmRGaWx0ZXJJdGVtKSx0aGlzLl9zZXRJdGVtcyhlKX0sX3VwZGF0ZUF0dHJGb3JTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRJdGVtJiYodGhpcy5zZWxlY3RlZD10aGlzLl92YWx1ZUZvckl0ZW0odGhpcy5zZWxlY3RlZEl0ZW0pKX0sX3VwZGF0ZVNlbGVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5fc2VsZWN0U2VsZWN0ZWQodGhpcy5zZWxlY3RlZCl9LF9zZWxlY3RTZWxlY3RlZDpmdW5jdGlvbihlKXtpZighIXRoaXMuaXRlbXMpe3ZhciB0PXRoaXMuX3ZhbHVlVG9JdGVtKHRoaXMuc2VsZWN0ZWQpO3Q/dGhpcy5fc2VsZWN0aW9uLnNlbGVjdCh0KTp0aGlzLl9zZWxlY3Rpb24uY2xlYXIoKSx0aGlzLmZhbGxiYWNrU2VsZWN0aW9uJiZ0aGlzLml0ZW1zLmxlbmd0aCYmdGhpcy5fc2VsZWN0aW9uLmdldCgpPT09dm9pZCAwJiYodGhpcy5zZWxlY3RlZD10aGlzLmZhbGxiYWNrU2VsZWN0aW9uKX19LF9maWx0ZXJJdGVtOmZ1bmN0aW9uKGUpe3JldHVybiF0aGlzLl9leGNsdWRlZExvY2FsTmFtZXNbZS5sb2NhbE5hbWVdfSxfdmFsdWVUb0l0ZW06ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PW51bGw/bnVsbDp0aGlzLml0ZW1zW3RoaXMuX3ZhbHVlVG9JbmRleChlKV19LF92YWx1ZVRvSW5kZXg6ZnVuY3Rpb24oZSl7aWYodGhpcy5hdHRyRm9yU2VsZWN0ZWQpe2Zvcih2YXIgdD0wLHI7cj10aGlzLml0ZW1zW3RdO3QrKylpZih0aGlzLl92YWx1ZUZvckl0ZW0ocik9PWUpcmV0dXJuIHR9ZWxzZSByZXR1cm4gTnVtYmVyKGUpfSxfaW5kZXhUb1ZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuYXR0ckZvclNlbGVjdGVkKXt2YXIgdD10aGlzLml0ZW1zW2VdO2lmKHQpcmV0dXJuIHRoaXMuX3ZhbHVlRm9ySXRlbSh0KX1lbHNlIHJldHVybiBlfSxfdmFsdWVGb3JJdGVtOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2lmKCF0aGlzLmF0dHJGb3JTZWxlY3RlZCl7dmFyIHQ9dGhpcy5pbmRleE9mKGUpO3JldHVybiB0PT09LTE/bnVsbDp0fXZhciByPWVbd20odGhpcy5hdHRyRm9yU2VsZWN0ZWQpXTtyZXR1cm4gciE9bnVsbD9yOmUuZ2V0QXR0cmlidXRlKHRoaXMuYXR0ckZvclNlbGVjdGVkKX0sX2FwcGx5U2VsZWN0aW9uOmZ1bmN0aW9uKGUsdCl7dGhpcy5zZWxlY3RlZENsYXNzJiZ0aGlzLnRvZ2dsZUNsYXNzKHRoaXMuc2VsZWN0ZWRDbGFzcyx0LGUpLHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGUmJnRoaXMudG9nZ2xlQXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGUsdCxlKSx0aGlzLl9zZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLmZpcmUoImlyb24tIisodD8ic2VsZWN0IjoiZGVzZWxlY3QiKSx7aXRlbTplfSl9LF9zZWxlY3Rpb25DaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLl9zZXRTZWxlY3RlZEl0ZW0odGhpcy5fc2VsZWN0aW9uLmdldCgpKX0sX29ic2VydmVJdGVtczpmdW5jdGlvbihlKXtyZXR1cm4genQoZSkub2JzZXJ2ZU5vZGVzKGZ1bmN0aW9uKHQpe3RoaXMuX3VwZGF0ZUl0ZW1zKCksdGhpcy5fdXBkYXRlU2VsZWN0ZWQoKSx0aGlzLmZpcmUoImlyb24taXRlbXMtY2hhbmdlZCIsdCx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExfSl9KX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS50YXJnZXQscj10aGlzLml0ZW1zO3QmJnQhPXRoaXM7KXt2YXIgbj1yLmluZGV4T2YodCk7aWYobj49MCl7dmFyIGk9dGhpcy5faW5kZXhUb1ZhbHVlKG4pO3RoaXMuX2l0ZW1BY3RpdmF0ZShpLHQpO3JldHVybn10PXQucGFyZW50Tm9kZX19LF9pdGVtQWN0aXZhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLmZpcmUoImlyb24tYWN0aXZhdGUiLHtzZWxlY3RlZDplLGl0ZW06dH0se2NhbmNlbGFibGU6ITB9KS5kZWZhdWx0UHJldmVudGVkfHx0aGlzLnNlbGVjdChlKX19O1l0KHtfdGVtcGxhdGU6UWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZCg6bm90KHNsb3QpOm5vdCguaXJvbi1zZWxlY3RlZCkpIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLXBhZ2VzIixiZWhhdmlvcnM6W1pzLGJoXSxwcm9wZXJ0aWVzOnthY3RpdmF0ZUV2ZW50Ont0eXBlOlN0cmluZyx2YWx1ZTpudWxsfX0sb2JzZXJ2ZXJzOlsiX3NlbGVjdGVkUGFnZUNoYW5nZWQoc2VsZWN0ZWQpIl0sX3NlbGVjdGVkUGFnZUNoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt0aGlzLmFzeW5jKHRoaXMubm90aWZ5UmVzaXplKX19KTt2YXIgUWd0PVFgCjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAtLXNoYWRvdy10cmFuc2l0aW9uOiB7CiAgICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjI4cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctbm9uZTogewogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgIH07CgogICAgICAvKiBmcm9tIGh0dHA6Ly9jb2RlcGVuLmlvL3NoeW5kbWFuL3Blbi9jNTM5NGRkZjJlOGIyYTVjOTE4NTkwNGI1NzQyMWNkYiAqLwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tM2RwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi00ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi02ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDZweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCAxOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tOGRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0xMmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCA0cHggMjJweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgIDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgIDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTI0ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPmA7UWd0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoUWd0LmNvbnRlbnQpO3ZhciB0MHQ9UWAKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLW1hdGVyaWFsLXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICBodG1sIHsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsOiB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTE6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi00ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0zOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTQ6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tOGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOwogICAgICAgIH07CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIxIl0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjIiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMyJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI0Il0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjUiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU7CiAgICAgIH0KCiAgICAgIC8qIER1cGxpY2F0ZSB0aGUgc3R5bGVzIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL3dlYmNvbXBvbmVudHMvc2hhZHljc3MvaXNzdWVzLzE5MyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbDogewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgICB9OwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjEiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjIiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0zOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjQiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjUiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT5gO3QwdC5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHQwdC5jb250ZW50KTt2YXIgTmk9e3Byb3BlcnRpZXM6e2ZvY3VzZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfb2xkVGFiSW5kZXg6e3R5cGU6U3RyaW5nfSxfYm91bmRGb2N1c0JsdXJIYW5kbGVyOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvY3VzQmx1ckhhbmRsZXIuYmluZCh0aGlzKX19fSxvYnNlcnZlcnM6WyJfY2hhbmdlZENvbnRyb2xTdGF0ZShmb2N1c2VkLCBkaXNhYmxlZCkiXSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2JvdW5kRm9jdXNCbHVySGFuZGxlciwhMCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9ib3VuZEZvY3VzQmx1ckhhbmRsZXIsITApfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbihlKXt0aGlzLl9zZXRGb2N1c2VkKGUudHlwZT09PSJmb2N1cyIpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLGU/InRydWUiOiJmYWxzZSIpLHRoaXMuc3R5bGUucG9pbnRlckV2ZW50cz1lPyJub25lIjoiIixlPyh0aGlzLl9vbGRUYWJJbmRleD10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0aGlzLl9zZXRGb2N1c2VkKCExKSx0aGlzLnRhYkluZGV4PS0xLHRoaXMuYmx1cigpKTp0aGlzLl9vbGRUYWJJbmRleCE9PXZvaWQgMCYmKHRoaXMuX29sZFRhYkluZGV4PT09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKTp0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHRoaXMuX29sZFRhYkluZGV4KSl9LF9jaGFuZ2VkQ29udHJvbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCYmdGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCgpfX07dmFyIFd4PXtwcm9wZXJ0aWVzOntwcmVzc2VkOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITAsdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfcHJlc3NlZENoYW5nZWQifSx0b2dnbGVzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxwb2ludGVyRG93bjp7dHlwZTpCb29sZWFuLHJlYWRPbmx5OiEwLHZhbHVlOiExfSxyZWNlaXZlZEZvY3VzRnJvbUtleWJvYXJkOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITB9LGFyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLXByZXNzZWQiLG9ic2VydmVyOiJfYXJpYUFjdGl2ZUF0dHJpYnV0ZUNoYW5nZWQifX0sbGlzdGVuZXJzOntkb3duOiJfZG93bkhhbmRsZXIiLHVwOiJfdXBIYW5kbGVyIix0YXA6Il90YXBIYW5kbGVyIn0sb2JzZXJ2ZXJzOlsiX2ZvY3VzQ2hhbmdlZChmb2N1c2VkKSIsIl9hY3RpdmVDaGFuZ2VkKGFjdGl2ZSwgYXJpYUFjdGl2ZUF0dHJpYnV0ZSkiXSxrZXlCaW5kaW5nczp7ImVudGVyOmtleWRvd24iOiJfYXN5bmNDbGljayIsInNwYWNlOmtleWRvd24iOiJfc3BhY2VLZXlEb3duSGFuZGxlciIsInNwYWNlOmtleXVwIjoiX3NwYWNlS2V5VXBIYW5kbGVyIn0sX21vdXNlRXZlbnRSZTovXm1vdXNlLyxfdGFwSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMudG9nZ2xlcz90aGlzLl91c2VyQWN0aXZhdGUoIXRoaXMuYWN0aXZlKTp0aGlzLmFjdGl2ZT0hMX0sX2ZvY3VzQ2hhbmdlZDpmdW5jdGlvbihlKXt0aGlzLl9kZXRlY3RLZXlib2FyZEZvY3VzKGUpLGV8fHRoaXMuX3NldFByZXNzZWQoITEpfSxfZGV0ZWN0S2V5Ym9hcmRGb2N1czpmdW5jdGlvbihlKXt0aGlzLl9zZXRSZWNlaXZlZEZvY3VzRnJvbUtleWJvYXJkKCF0aGlzLnBvaW50ZXJEb3duJiZlKX0sX3VzZXJBY3RpdmF0ZTpmdW5jdGlvbihlKXt0aGlzLmFjdGl2ZSE9PWUmJih0aGlzLmFjdGl2ZT1lLHRoaXMuZmlyZSgiY2hhbmdlIikpfSxfZG93bkhhbmRsZXI6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0UG9pbnRlckRvd24oITApLHRoaXMuX3NldFByZXNzZWQoITApLHRoaXMuX3NldFJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQoITEpfSxfdXBIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fc2V0UG9pbnRlckRvd24oITEpLHRoaXMuX3NldFByZXNzZWQoITEpfSxfc3BhY2VLZXlEb3duSGFuZGxlcjpmdW5jdGlvbihlKXt2YXIgdD1lLmRldGFpbC5rZXlib2FyZEV2ZW50LHI9enQodCkubG9jYWxUYXJnZXQ7dGhpcy5pc0xpZ2h0RGVzY2VuZGFudChyKXx8KHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuX3NldFByZXNzZWQoITApKX0sX3NwYWNlS2V5VXBIYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGV0YWlsLmtleWJvYXJkRXZlbnQscj16dCh0KS5sb2NhbFRhcmdldDt0aGlzLmlzTGlnaHREZXNjZW5kYW50KHIpfHwodGhpcy5wcmVzc2VkJiZ0aGlzLl9hc3luY0NsaWNrKCksdGhpcy5fc2V0UHJlc3NlZCghMSkpfSxfYXN5bmNDbGljazpmdW5jdGlvbigpe3RoaXMuYXN5bmMoZnVuY3Rpb24oKXt0aGlzLmNsaWNrKCl9LDEpfSxfcHJlc3NlZENoYW5nZWQ6ZnVuY3Rpb24oZSl7dGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9hcmlhQWN0aXZlQXR0cmlidXRlQ2hhbmdlZDpmdW5jdGlvbihlLHQpe3QmJnQhPWUmJnRoaXMuaGFzQXR0cmlidXRlKHQpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX0sX2FjdGl2ZUNoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt0aGlzLnRvZ2dsZXM/dGhpcy5zZXRBdHRyaWJ1dGUodGhpcy5hcmlhQWN0aXZlQXR0cmlidXRlLGU/InRydWUiOiJmYWxzZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKHRoaXMuYXJpYUFjdGl2ZUF0dHJpYnV0ZSksdGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9jb250cm9sU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD90aGlzLl9zZXRQcmVzc2VkKCExKTp0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2NoYW5nZWRCdXR0b25TdGF0ZTpmdW5jdGlvbigpe3RoaXMuX2J1dHRvblN0YXRlQ2hhbmdlZCYmdGhpcy5fYnV0dG9uU3RhdGVDaGFuZ2VkKCl9fSx3aD1bRG8sV3hdO3ZhciBTaD17ZGlzdGFuY2U6ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9ZS1yLG89dC1uO3JldHVybiBNYXRoLnNxcnQoaSppK28qbyl9LG5vdzp3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdy5iaW5kKHdpbmRvdy5wZXJmb3JtYW5jZSk6RGF0ZS5ub3d9O2Z1bmN0aW9uIGUwdChlKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLndpZHRoPXRoaXMuYm91bmRpbmdSZWN0LndpZHRoLHRoaXMuaGVpZ2h0PXRoaXMuYm91bmRpbmdSZWN0LmhlaWdodCx0aGlzLnNpemU9TWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLmhlaWdodCl9ZTB0LnByb3RvdHlwZT17Z2V0IGJvdW5kaW5nUmVjdCgpe3JldHVybiB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9LGZ1cnRoZXN0Q29ybmVyRGlzdGFuY2VGcm9tOmZ1bmN0aW9uKGUsdCl7dmFyIHI9U2guZGlzdGFuY2UoZSx0LDAsMCksbj1TaC5kaXN0YW5jZShlLHQsdGhpcy53aWR0aCwwKSxpPVNoLmRpc3RhbmNlKGUsdCwwLHRoaXMuaGVpZ2h0KSxvPVNoLmRpc3RhbmNlKGUsdCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtyZXR1cm4gTWF0aC5tYXgocixuLGksbyl9fTtmdW5jdGlvbiBnXyhlKXt0aGlzLmVsZW1lbnQ9ZSx0aGlzLmNvbG9yPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLmNvbG9yLHRoaXMud2F2ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLndhdmVDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy53YXZlLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yLHRoaXMud2F2ZS5jbGFzc0xpc3QuYWRkKCJ3YXZlIiksdGhpcy53YXZlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIndhdmUtY29udGFpbmVyIiksenQodGhpcy53YXZlQ29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLndhdmUpLHRoaXMucmVzZXRJbnRlcmFjdGlvblN0YXRlKCl9Z18uTUFYX1JBRElVUz0zMDA7Z18ucHJvdG90eXBlPXtnZXQgcmVjZW50ZXJzKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5yZWNlbnRlcnN9LGdldCBjZW50ZXIoKXtyZXR1cm4gdGhpcy5lbGVtZW50LmNlbnRlcn0sZ2V0IG1vdXNlRG93bkVsYXBzZWQoKXt2YXIgZTtyZXR1cm4gdGhpcy5tb3VzZURvd25TdGFydD8oZT1TaC5ub3coKS10aGlzLm1vdXNlRG93blN0YXJ0LHRoaXMubW91c2VVcFN0YXJ0JiYoZS09dGhpcy5tb3VzZVVwRWxhcHNlZCksZSk6MH0sZ2V0IG1vdXNlVXBFbGFwc2VkKCl7cmV0dXJuIHRoaXMubW91c2VVcFN0YXJ0P1NoLm5vdygpLXRoaXMubW91c2VVcFN0YXJ0OjB9LGdldCBtb3VzZURvd25FbGFwc2VkU2Vjb25kcygpe3JldHVybiB0aGlzLm1vdXNlRG93bkVsYXBzZWQvMWUzfSxnZXQgbW91c2VVcEVsYXBzZWRTZWNvbmRzKCl7cmV0dXJuIHRoaXMubW91c2VVcEVsYXBzZWQvMWUzfSxnZXQgbW91c2VJbnRlcmFjdGlvblNlY29uZHMoKXtyZXR1cm4gdGhpcy5tb3VzZURvd25FbGFwc2VkU2Vjb25kcyt0aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kc30sZ2V0IGluaXRpYWxPcGFjaXR5KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5pbml0aWFsT3BhY2l0eX0sZ2V0IG9wYWNpdHlEZWNheVZlbG9jaXR5KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5vcGFjaXR5RGVjYXlWZWxvY2l0eX0sZ2V0IHJhZGl1cygpe3ZhciBlPXRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aCp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgsdD10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0KnRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQscj1NYXRoLm1pbihNYXRoLnNxcnQoZSt0KSxnXy5NQVhfUkFESVVTKSoxLjErNSxuPTEuMS0uMiooci9nXy5NQVhfUkFESVVTKSxpPXRoaXMubW91c2VJbnRlcmFjdGlvblNlY29uZHMvbixvPXIqKDEtTWF0aC5wb3coODAsLWkpKTtyZXR1cm4gTWF0aC5hYnMobyl9LGdldCBvcGFjaXR5KCl7cmV0dXJuIHRoaXMubW91c2VVcFN0YXJ0P01hdGgubWF4KDAsdGhpcy5pbml0aWFsT3BhY2l0eS10aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kcyp0aGlzLm9wYWNpdHlEZWNheVZlbG9jaXR5KTp0aGlzLmluaXRpYWxPcGFjaXR5fSxnZXQgb3V0ZXJPcGFjaXR5KCl7dmFyIGU9dGhpcy5tb3VzZVVwRWxhcHNlZFNlY29uZHMqLjMsdD10aGlzLm9wYWNpdHk7cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5taW4oZSx0KSl9LGdldCBpc09wYWNpdHlGdWxseURlY2F5ZWQoKXtyZXR1cm4gdGhpcy5vcGFjaXR5PC4wMSYmdGhpcy5yYWRpdXM+PU1hdGgubWluKHRoaXMubWF4UmFkaXVzLGdfLk1BWF9SQURJVVMpfSxnZXQgaXNSZXN0aW5nQXRNYXhSYWRpdXMoKXtyZXR1cm4gdGhpcy5vcGFjaXR5Pj10aGlzLmluaXRpYWxPcGFjaXR5JiZ0aGlzLnJhZGl1cz49TWF0aC5taW4odGhpcy5tYXhSYWRpdXMsZ18uTUFYX1JBRElVUyl9LGdldCBpc0FuaW1hdGlvbkNvbXBsZXRlKCl7cmV0dXJuIHRoaXMubW91c2VVcFN0YXJ0P3RoaXMuaXNPcGFjaXR5RnVsbHlEZWNheWVkOnRoaXMuaXNSZXN0aW5nQXRNYXhSYWRpdXN9LGdldCB0cmFuc2xhdGlvbkZyYWN0aW9uKCl7cmV0dXJuIE1hdGgubWluKDEsdGhpcy5yYWRpdXMvdGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUqMi9NYXRoLnNxcnQoMikpfSxnZXQgeE5vdygpe3JldHVybiB0aGlzLnhFbmQ/dGhpcy54U3RhcnQrdGhpcy50cmFuc2xhdGlvbkZyYWN0aW9uKih0aGlzLnhFbmQtdGhpcy54U3RhcnQpOnRoaXMueFN0YXJ0fSxnZXQgeU5vdygpe3JldHVybiB0aGlzLnlFbmQ/dGhpcy55U3RhcnQrdGhpcy50cmFuc2xhdGlvbkZyYWN0aW9uKih0aGlzLnlFbmQtdGhpcy55U3RhcnQpOnRoaXMueVN0YXJ0fSxnZXQgaXNNb3VzZURvd24oKXtyZXR1cm4gdGhpcy5tb3VzZURvd25TdGFydCYmIXRoaXMubW91c2VVcFN0YXJ0fSxyZXNldEludGVyYWN0aW9uU3RhdGU6ZnVuY3Rpb24oKXt0aGlzLm1heFJhZGl1cz0wLHRoaXMubW91c2VEb3duU3RhcnQ9MCx0aGlzLm1vdXNlVXBTdGFydD0wLHRoaXMueFN0YXJ0PTAsdGhpcy55U3RhcnQ9MCx0aGlzLnhFbmQ9MCx0aGlzLnlFbmQ9MCx0aGlzLnNsaWRlRGlzdGFuY2U9MCx0aGlzLmNvbnRhaW5lck1ldHJpY3M9bmV3IGUwdCh0aGlzLmVsZW1lbnQpfSxkcmF3OmZ1bmN0aW9uKCl7dmFyIGUsdCxyO3RoaXMud2F2ZS5zdHlsZS5vcGFjaXR5PXRoaXMub3BhY2l0eSxlPXRoaXMucmFkaXVzLyh0aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZS8yKSx0PXRoaXMueE5vdy10aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMixyPXRoaXMueU5vdy10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrdCsicHgsICIrcisicHgpIix0aGlzLndhdmVDb250YWluZXIuc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGUzZCgiK3QrInB4LCAiK3IrInB4LCAwKSIsdGhpcy53YXZlLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0ic2NhbGUoIitlKyIsIitlKyIpIix0aGlzLndhdmUuc3R5bGUudHJhbnNmb3JtPSJzY2FsZTNkKCIrZSsiLCIrZSsiLDEpIn0sZG93bkFjdGlvbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMixyPXRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMjt0aGlzLnJlc2V0SW50ZXJhY3Rpb25TdGF0ZSgpLHRoaXMubW91c2VEb3duU3RhcnQ9U2gubm93KCksdGhpcy5jZW50ZXI/KHRoaXMueFN0YXJ0PXQsdGhpcy55U3RhcnQ9cix0aGlzLnNsaWRlRGlzdGFuY2U9U2guZGlzdGFuY2UodGhpcy54U3RhcnQsdGhpcy55U3RhcnQsdGhpcy54RW5kLHRoaXMueUVuZCkpOih0aGlzLnhTdGFydD1lP2UuZGV0YWlsLngtdGhpcy5jb250YWluZXJNZXRyaWNzLmJvdW5kaW5nUmVjdC5sZWZ0OnRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC8yLHRoaXMueVN0YXJ0PWU/ZS5kZXRhaWwueS10aGlzLmNvbnRhaW5lck1ldHJpY3MuYm91bmRpbmdSZWN0LnRvcDp0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzIpLHRoaXMucmVjZW50ZXJzJiYodGhpcy54RW5kPXQsdGhpcy55RW5kPXIsdGhpcy5zbGlkZURpc3RhbmNlPVNoLmRpc3RhbmNlKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0LHRoaXMueEVuZCx0aGlzLnlFbmQpKSx0aGlzLm1heFJhZGl1cz10aGlzLmNvbnRhaW5lck1ldHJpY3MuZnVydGhlc3RDb3JuZXJEaXN0YW5jZUZyb20odGhpcy54U3RhcnQsdGhpcy55U3RhcnQpLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS50b3A9KHRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQtdGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUpLzIrInB4Iix0aGlzLndhdmVDb250YWluZXIuc3R5bGUubGVmdD0odGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoLXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKS8yKyJweCIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLndpZHRoPXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKyJweCIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLmhlaWdodD10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSsicHgifSx1cEFjdGlvbjpmdW5jdGlvbihlKXshdGhpcy5pc01vdXNlRG93bnx8KHRoaXMubW91c2VVcFN0YXJ0PVNoLm5vdygpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7enQoenQodGhpcy53YXZlQ29udGFpbmVyKS5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzLndhdmVDb250YWluZXIpfX07WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CgogICAgICAgIC8qIFNlZSBQb2x5bWVyRWxlbWVudHMvcGFwZXItYmVoYXZpb3JzL2lzc3Vlcy8zNC4gT24gbm9uLUNocm9tZSBicm93c2VycywKICAgICAgICAgKiBjcmVhdGluZyBhIG5vZGUgKHdpdGggYSBwb3NpdGlvbjphYnNvbHV0ZSkgaW4gdGhlIG1pZGRsZSBvZiBhbiBldmVudAogICAgICAgICAqIGhhbmRsZXIgImludGVycnVwdHMiIHRoYXQgZXZlbnQgaGFuZGxlciAod2hpY2ggaGFwcGVucyB3aGVuIHRoZQogICAgICAgICAqIHJpcHBsZSBpcyBjcmVhdGVkIG9uIGRlbWFuZCkgKi8KICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2FuaW1hdGluZ10pIHsKICAgICAgICAvKiBUaGlzIHJlc29sdmVzIGEgcmVuZGVyaW5nIGlzc3VlIGluIENocm9tZSAoYXMgb2YgNDApIHdoZXJlIHRoZQogICAgICAgICAgIHJpcHBsZSBpcyBub3QgcHJvcGVybHkgY2xpcHBlZCBieSBpdHMgcGFyZW50ICh3aGljaCBtYXkgaGF2ZQogICAgICAgICAgIHJvdW5kZWQgY29ybmVycykuIFNlZTogaHR0cDovL2pzYmluLmNvbS90ZW1leGEvNAoKICAgICAgICAgICBOb3RlOiBXZSBvbmx5IGFwcGx5IHRoaXMgc3R5bGUgY29uZGl0aW9uYWxseS4gT3RoZXJ3aXNlLCB0aGUgYnJvd3NlcgogICAgICAgICAgIHdpbGwgY3JlYXRlIGEgbmV3IGNvbXBvc2l0aW5nIGxheWVyIGZvciBldmVyeSByaXBwbGUgZWxlbWVudCBvbiB0aGUKICAgICAgICAgICBwYWdlLCBhbmQgdGhhdCB3b3VsZCBiZSBiYWQuICovCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICB9CgogICAgICAjYmFja2dyb3VuZCwKICAgICAgI3dhdmVzLAogICAgICAud2F2ZS1jb250YWluZXIsCiAgICAgIC53YXZlIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAjYmFja2dyb3VuZCwKICAgICAgLndhdmUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgICN3YXZlcywKICAgICAgLndhdmUgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC53YXZlLWNvbnRhaW5lciwKICAgICAgLndhdmUgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNpcmNsZSkgI2JhY2tncm91bmQsCiAgICAgIDpob3N0KC5jaXJjbGUpICN3YXZlcyB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICA6aG9zdCguY2lyY2xlKSAud2F2ZS1jb250YWluZXIgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0iYmFja2dyb3VuZCI+PC9kaXY+CiAgICA8ZGl2IGlkPSJ3YXZlcyI+PC9kaXY+CmAsaXM6InBhcGVyLXJpcHBsZSIsYmVoYXZpb3JzOltEb10scHJvcGVydGllczp7aW5pdGlhbE9wYWNpdHk6e3R5cGU6TnVtYmVyLHZhbHVlOi4yNX0sb3BhY2l0eURlY2F5VmVsb2NpdHk6e3R5cGU6TnVtYmVyLHZhbHVlOi44fSxyZWNlbnRlcnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sY2VudGVyOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHJpcHBsZXM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGFuaW1hdGluZzp7dHlwZTpCb29sZWFuLHJlYWRPbmx5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMX0saG9sZERvd246e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2hvbGREb3duQ2hhbmdlZCJ9LG5vaW5rOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9hbmltYXRpbmc6e3R5cGU6Qm9vbGVhbn0sX2JvdW5kQW5pbWF0ZTp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFuaW1hdGUuYmluZCh0aGlzKX19fSxnZXQgdGFyZ2V0KCl7cmV0dXJuIHRoaXMua2V5RXZlbnRUYXJnZXR9LGtleUJpbmRpbmdzOnsiZW50ZXI6a2V5ZG93biI6Il9vbkVudGVyS2V5ZG93biIsInNwYWNlOmtleWRvd24iOiJfb25TcGFjZUtleWRvd24iLCJzcGFjZTprZXl1cCI6Il9vblNwYWNlS2V5dXAifSxhdHRhY2hlZDpmdW5jdGlvbigpe3p0KHRoaXMpLnBhcmVudE5vZGUubm9kZVR5cGU9PTExP3RoaXMua2V5RXZlbnRUYXJnZXQ9enQodGhpcykuZ2V0T3duZXJSb290KCkuaG9zdDp0aGlzLmtleUV2ZW50VGFyZ2V0PXp0KHRoaXMpLnBhcmVudE5vZGU7dmFyIGU9dGhpcy5rZXlFdmVudFRhcmdldDt0aGlzLmxpc3RlbihlLCJ1cCIsInVpVXBBY3Rpb24iKSx0aGlzLmxpc3RlbihlLCJkb3duIiwidWlEb3duQWN0aW9uIil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy51bmxpc3Rlbih0aGlzLmtleUV2ZW50VGFyZ2V0LCJ1cCIsInVpVXBBY3Rpb24iKSx0aGlzLnVubGlzdGVuKHRoaXMua2V5RXZlbnRUYXJnZXQsImRvd24iLCJ1aURvd25BY3Rpb24iKSx0aGlzLmtleUV2ZW50VGFyZ2V0PW51bGx9LGdldCBzaG91bGRLZWVwQW5pbWF0aW5nKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLnJpcHBsZXMubGVuZ3RoOysrZSlpZighdGhpcy5yaXBwbGVzW2VdLmlzQW5pbWF0aW9uQ29tcGxldGUpcmV0dXJuITA7cmV0dXJuITF9LHNpbXVsYXRlZFJpcHBsZTpmdW5jdGlvbigpe3RoaXMuZG93bkFjdGlvbihudWxsKSx0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy51cEFjdGlvbigpfSwxKX0sdWlEb3duQWN0aW9uOmZ1bmN0aW9uKGUpe3RoaXMubm9pbmt8fHRoaXMuZG93bkFjdGlvbihlKX0sZG93bkFjdGlvbjpmdW5jdGlvbihlKXtpZighKHRoaXMuaG9sZERvd24mJnRoaXMucmlwcGxlcy5sZW5ndGg+MCkpe3ZhciB0PXRoaXMuYWRkUmlwcGxlKCk7dC5kb3duQWN0aW9uKGUpLHRoaXMuX2FuaW1hdGluZ3x8KHRoaXMuX2FuaW1hdGluZz0hMCx0aGlzLmFuaW1hdGUoKSl9fSx1aVVwQWN0aW9uOmZ1bmN0aW9uKGUpe3RoaXMubm9pbmt8fHRoaXMudXBBY3Rpb24oZSl9LHVwQWN0aW9uOmZ1bmN0aW9uKGUpe3RoaXMuaG9sZERvd258fCh0aGlzLnJpcHBsZXMuZm9yRWFjaChmdW5jdGlvbih0KXt0LnVwQWN0aW9uKGUpfSksdGhpcy5fYW5pbWF0aW5nPSEwLHRoaXMuYW5pbWF0ZSgpKX0sb25BbmltYXRpb25Db21wbGV0ZTpmdW5jdGlvbigpe3RoaXMuX2FuaW1hdGluZz0hMSx0aGlzLiQuYmFja2dyb3VuZC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9IiIsdGhpcy5maXJlKCJ0cmFuc2l0aW9uZW5kIil9LGFkZFJpcHBsZTpmdW5jdGlvbigpe3ZhciBlPW5ldyBnXyh0aGlzKTtyZXR1cm4genQodGhpcy4kLndhdmVzKS5hcHBlbmRDaGlsZChlLndhdmVDb250YWluZXIpLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRDb2xvcj1lLmNvbG9yLHRoaXMucmlwcGxlcy5wdXNoKGUpLHRoaXMuX3NldEFuaW1hdGluZyghMCksZX0scmVtb3ZlUmlwcGxlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucmlwcGxlcy5pbmRleE9mKGUpO3Q8MHx8KHRoaXMucmlwcGxlcy5zcGxpY2UodCwxKSxlLnJlbW92ZSgpLHRoaXMucmlwcGxlcy5sZW5ndGh8fHRoaXMuX3NldEFuaW1hdGluZyghMSkpfSxhbmltYXRlOmZ1bmN0aW9uKCl7aWYoISF0aGlzLl9hbmltYXRpbmcpe3ZhciBlLHQ7Zm9yKGU9MDtlPHRoaXMucmlwcGxlcy5sZW5ndGg7KytlKXQ9dGhpcy5yaXBwbGVzW2VdLHQuZHJhdygpLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLm9wYWNpdHk9dC5vdXRlck9wYWNpdHksdC5pc09wYWNpdHlGdWxseURlY2F5ZWQmJiF0LmlzUmVzdGluZ0F0TWF4UmFkaXVzJiZ0aGlzLnJlbW92ZVJpcHBsZSh0KTshdGhpcy5zaG91bGRLZWVwQW5pbWF0aW5nJiZ0aGlzLnJpcHBsZXMubGVuZ3RoPT09MD90aGlzLm9uQW5pbWF0aW9uQ29tcGxldGUoKTp3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX2JvdW5kQW5pbWF0ZSl9fSxhbmltYXRlUmlwcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYW5pbWF0ZSgpfSxfb25FbnRlcktleWRvd246ZnVuY3Rpb24oKXt0aGlzLnVpRG93bkFjdGlvbigpLHRoaXMuYXN5bmModGhpcy51aVVwQWN0aW9uLDEpfSxfb25TcGFjZUtleWRvd246ZnVuY3Rpb24oKXt0aGlzLnVpRG93bkFjdGlvbigpfSxfb25TcGFjZUtleXVwOmZ1bmN0aW9uKCl7dGhpcy51aVVwQWN0aW9uKCl9LF9ob2xkRG93bkNoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt0IT09dm9pZCAwJiYoZT90aGlzLmRvd25BY3Rpb24oKTp0aGlzLnVwQWN0aW9uKCkpfX0pO3ZhciBhdT17cHJvcGVydGllczp7bm9pbms6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX25vaW5rQ2hhbmdlZCJ9LF9yaXBwbGVDb250YWluZXI6e3R5cGU6T2JqZWN0fX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZm9jdXNlZCYmdGhpcy5lbnN1cmVSaXBwbGUoKX0sX2Rvd25IYW5kbGVyOmZ1bmN0aW9uKGUpe1d4Ll9kb3duSGFuZGxlci5jYWxsKHRoaXMsZSksdGhpcy5wcmVzc2VkJiZ0aGlzLmVuc3VyZVJpcHBsZShlKX0sZW5zdXJlUmlwcGxlOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmhhc1JpcHBsZSgpKXt0aGlzLl9yaXBwbGU9dGhpcy5fY3JlYXRlUmlwcGxlKCksdGhpcy5fcmlwcGxlLm5vaW5rPXRoaXMubm9pbms7dmFyIHQ9dGhpcy5fcmlwcGxlQ29udGFpbmVyfHx0aGlzLnJvb3Q7aWYodCYmenQodCkuYXBwZW5kQ2hpbGQodGhpcy5fcmlwcGxlKSxlKXt2YXIgcj16dCh0aGlzLl9yaXBwbGVDb250YWluZXJ8fHRoaXMpLG49enQoZSkucm9vdFRhcmdldDtyLmRlZXBDb250YWlucyhuKSYmdGhpcy5fcmlwcGxlLnVpRG93bkFjdGlvbihlKX19fSxnZXRSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnN1cmVSaXBwbGUoKSx0aGlzLl9yaXBwbGV9LGhhc1JpcHBsZTpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuX3JpcHBsZSl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwYXBlci1yaXBwbGUiKTtyZXR1cm4gZX0sX25vaW5rQ2hhbmdlZDpmdW5jdGlvbihlKXt0aGlzLmhhc1JpcHBsZSgpJiYodGhpcy5fcmlwcGxlLm5vaW5rPWUpfX07dmFyIGNXPXtwcm9wZXJ0aWVzOntlbGV2YXRpb246e3R5cGU6TnVtYmVyLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMH19LG9ic2VydmVyczpbIl9jYWxjdWxhdGVFbGV2YXRpb24oZm9jdXNlZCwgZGlzYWJsZWQsIGFjdGl2ZSwgcHJlc3NlZCwgcmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiLCJfY29tcHV0ZUtleWJvYXJkQ2xhc3MocmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiXSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIix0YWJpbmRleDoiMCIsYW5pbWF0ZWQ6ITB9LF9jYWxjdWxhdGVFbGV2YXRpb246ZnVuY3Rpb24oKXt2YXIgZT0xO3RoaXMuZGlzYWJsZWQ/ZT0wOnRoaXMuYWN0aXZlfHx0aGlzLnByZXNzZWQ/ZT00OnRoaXMucmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCYmKGU9MyksdGhpcy5fc2V0RWxldmF0aW9uKGUpfSxfY29tcHV0ZUtleWJvYXJkQ2xhc3M6ZnVuY3Rpb24oZSl7dGhpcy50b2dnbGVDbGFzcygia2V5Ym9hcmQtZm9jdXMiLGUpfSxfc3BhY2VLZXlEb3duSGFuZGxlcjpmdW5jdGlvbihlKXtXeC5fc3BhY2VLZXlEb3duSGFuZGxlci5jYWxsKHRoaXMsZSksdGhpcy5oYXNSaXBwbGUoKSYmdGhpcy5nZXRSaXBwbGUoKS5yaXBwbGVzLmxlbmd0aDwxJiZ0aGlzLl9yaXBwbGUudWlEb3duQWN0aW9uKCl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbihlKXtXeC5fc3BhY2VLZXlVcEhhbmRsZXIuY2FsbCh0aGlzLGUpLHRoaXMuaGFzUmlwcGxlKCkmJnRoaXMuX3JpcHBsZS51aVVwQWN0aW9uKCl9fSxyMHQ9W3doLE5pLGF1LGNXXTt2YXIgbjB0PVFgCiAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLW1hdGVyaWFsLXN0eWxlcyI+CiAgICAvKiBOZWVkIHRvIHNwZWNpZnkgdGhlIHNhbWUgc3BlY2lmaWNpdHkgYXMgdGhlIHN0eWxlcyBpbXBvcnRlZCBmcm9tIHBhcGVyLW1hdGVyaWFsLiAqLwogICAgOmhvc3QgewogICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBtaW4td2lkdGg6IDUuMTRlbTsKICAgICAgbWFyZ2luOiAwIDAuMjllbTsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgb3V0bGluZS13aWR0aDogMDsKICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIHotaW5kZXg6IDA7CiAgICAgIHBhZGRpbmc6IDAuN2VtIDAuNTdlbTsKCiAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbjsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTE7CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iMiJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjMiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTQ7CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iNSJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgfQoKICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICA6aG9zdChbcmFpc2VkXS5rZXlib2FyZC1mb2N1cykgewogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgQGFwcGx5IC0tcGFwZXItYnV0dG9uLXJhaXNlZC1rZXlib2FyZC1mb2N1czsKICAgIH0KCiAgICA6aG9zdCg6bm90KFtyYWlzZWRdKS5rZXlib2FyZC1mb2N1cykgewogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgQGFwcGx5IC0tcGFwZXItYnV0dG9uLWZsYXQta2V5Ym9hcmQtZm9jdXM7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgICBjb2xvcjogI2E4YThhODsKICAgICAgY3Vyc29yOiBhdXRvOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKCiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1kaXNhYmxlZDsKICAgIH0KCiAgICA6aG9zdChbZGlzYWJsZWRdW3JhaXNlZF0pIHsKICAgICAgYmFja2dyb3VuZDogI2VhZWFlYTsKICAgIH0KCgogICAgOmhvc3QoW2FuaW1hdGVkXSkgewogICAgICBAYXBwbHkgLS1zaGFkb3ctdHJhbnNpdGlvbjsKICAgIH0KCiAgICBwYXBlci1yaXBwbGUgewogICAgICBjb2xvcjogdmFyKC0tcGFwZXItYnV0dG9uLWluay1jb2xvcik7CiAgICB9CiAgPC9zdHlsZT4KCiAgPHNsb3Q+PC9zbG90PmA7bjB0LnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpO1l0KHtfdGVtcGxhdGU6bjB0LGlzOiJwYXBlci1idXR0b24iLGJlaGF2aW9yczpbcjB0XSxwcm9wZXJ0aWVzOntyYWlzZWQ6e3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITEsb2JzZXJ2ZXI6Il9jYWxjdWxhdGVFbGV2YXRpb24ifX0sX2NhbGN1bGF0ZUVsZXZhdGlvbjpmdW5jdGlvbigpe3RoaXMucmFpc2VkP2NXLl9jYWxjdWxhdGVFbGV2YXRpb24uYXBwbHkodGhpcyk6dGhpcy5fc2V0RWxldmF0aW9uKDApfX0pO3ZhciBpMHQ9UWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZvciBHb29nbGUgcHJvZHVjdHMgKi8KCiAgICAgIC0tZ29vZ2xlLXJlZC0xMDA6ICNmNGM3YzM7CiAgICAgIC0tZ29vZ2xlLXJlZC0zMDA6ICNlNjdjNzM7CiAgICAgIC0tZ29vZ2xlLXJlZC01MDA6ICNkYjQ0Mzc7CiAgICAgIC0tZ29vZ2xlLXJlZC03MDA6ICNjNTM5Mjk7CgogICAgICAtLWdvb2dsZS1ibHVlLTEwMDogI2M2ZGFmYzsKICAgICAgLS1nb29nbGUtYmx1ZS0zMDA6ICM3YmFhZjc7CiAgICAgIC0tZ29vZ2xlLWJsdWUtNTAwOiAjNDI4NWY0OwogICAgICAtLWdvb2dsZS1ibHVlLTcwMDogIzMzNjdkNjsKCiAgICAgIC0tZ29vZ2xlLWdyZWVuLTEwMDogI2I3ZTFjZDsKICAgICAgLS1nb29nbGUtZ3JlZW4tMzAwOiAjNTdiYjhhOwogICAgICAtLWdvb2dsZS1ncmVlbi01MDA6ICMwZjlkNTg7CiAgICAgIC0tZ29vZ2xlLWdyZWVuLTcwMDogIzBiODA0MzsKCiAgICAgIC0tZ29vZ2xlLXllbGxvdy0xMDA6ICNmY2U4YjI7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy0zMDA6ICNmN2NiNGQ7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy01MDA6ICNmNGI0MDA7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy03MDA6ICNmMDkzMDA7CgogICAgICAtLWdvb2dsZS1ncmV5LTEwMDogI2Y1ZjVmNTsKICAgICAgLS1nb29nbGUtZ3JleS0zMDA6ICNlMGUwZTA7CiAgICAgIC0tZ29vZ2xlLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLWdvb2dsZS1ncmV5LTcwMDogIzYxNjE2MTsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZyb20gb25saW5lIHNwZWMgZG9jdW1lbnQgKi8KCiAgICAgIC0tcGFwZXItcmVkLTUwOiAjZmZlYmVlOwogICAgICAtLXBhcGVyLXJlZC0xMDA6ICNmZmNkZDI7CiAgICAgIC0tcGFwZXItcmVkLTIwMDogI2VmOWE5YTsKICAgICAgLS1wYXBlci1yZWQtMzAwOiAjZTU3MzczOwogICAgICAtLXBhcGVyLXJlZC00MDA6ICNlZjUzNTA7CiAgICAgIC0tcGFwZXItcmVkLTUwMDogI2Y0NDMzNjsKICAgICAgLS1wYXBlci1yZWQtNjAwOiAjZTUzOTM1OwogICAgICAtLXBhcGVyLXJlZC03MDA6ICNkMzJmMmY7CiAgICAgIC0tcGFwZXItcmVkLTgwMDogI2M2MjgyODsKICAgICAgLS1wYXBlci1yZWQtOTAwOiAjYjcxYzFjOwogICAgICAtLXBhcGVyLXJlZC1hMTAwOiAjZmY4YTgwOwogICAgICAtLXBhcGVyLXJlZC1hMjAwOiAjZmY1MjUyOwogICAgICAtLXBhcGVyLXJlZC1hNDAwOiAjZmYxNzQ0OwogICAgICAtLXBhcGVyLXJlZC1hNzAwOiAjZDUwMDAwOwoKICAgICAgLS1wYXBlci1waW5rLTUwOiAjZmNlNGVjOwogICAgICAtLXBhcGVyLXBpbmstMTAwOiAjZjhiYmQwOwogICAgICAtLXBhcGVyLXBpbmstMjAwOiAjZjQ4ZmIxOwogICAgICAtLXBhcGVyLXBpbmstMzAwOiAjZjA2MjkyOwogICAgICAtLXBhcGVyLXBpbmstNDAwOiAjZWM0MDdhOwogICAgICAtLXBhcGVyLXBpbmstNTAwOiAjZTkxZTYzOwogICAgICAtLXBhcGVyLXBpbmstNjAwOiAjZDgxYjYwOwogICAgICAtLXBhcGVyLXBpbmstNzAwOiAjYzIxODViOwogICAgICAtLXBhcGVyLXBpbmstODAwOiAjYWQxNDU3OwogICAgICAtLXBhcGVyLXBpbmstOTAwOiAjODgwZTRmOwogICAgICAtLXBhcGVyLXBpbmstYTEwMDogI2ZmODBhYjsKICAgICAgLS1wYXBlci1waW5rLWEyMDA6ICNmZjQwODE7CiAgICAgIC0tcGFwZXItcGluay1hNDAwOiAjZjUwMDU3OwogICAgICAtLXBhcGVyLXBpbmstYTcwMDogI2M1MTE2MjsKCiAgICAgIC0tcGFwZXItcHVycGxlLTUwOiAjZjNlNWY1OwogICAgICAtLXBhcGVyLXB1cnBsZS0xMDA6ICNlMWJlZTc7CiAgICAgIC0tcGFwZXItcHVycGxlLTIwMDogI2NlOTNkODsKICAgICAgLS1wYXBlci1wdXJwbGUtMzAwOiAjYmE2OGM4OwogICAgICAtLXBhcGVyLXB1cnBsZS00MDA6ICNhYjQ3YmM7CiAgICAgIC0tcGFwZXItcHVycGxlLTUwMDogIzljMjdiMDsKICAgICAgLS1wYXBlci1wdXJwbGUtNjAwOiAjOGUyNGFhOwogICAgICAtLXBhcGVyLXB1cnBsZS03MDA6ICM3YjFmYTI7CiAgICAgIC0tcGFwZXItcHVycGxlLTgwMDogIzZhMWI5YTsKICAgICAgLS1wYXBlci1wdXJwbGUtOTAwOiAjNGExNDhjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMTAwOiAjZWE4MGZjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMjAwOiAjZTA0MGZiOwogICAgICAtLXBhcGVyLXB1cnBsZS1hNDAwOiAjZDUwMGY5OwogICAgICAtLXBhcGVyLXB1cnBsZS1hNzAwOiAjYWEwMGZmOwoKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS01MDogI2VkZTdmNjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS0xMDA6ICNkMWM0ZTk7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtMjAwOiAjYjM5ZGRiOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTMwMDogIzk1NzVjZDsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS00MDA6ICM3ZTU3YzI7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNTAwOiAjNjczYWI3OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTYwMDogIzVlMzViMTsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS03MDA6ICM1MTJkYTg7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtODAwOiAjNDUyN2EwOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTkwMDogIzMxMWI5MjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hMTAwOiAjYjM4OGZmOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWEyMDA6ICM3YzRkZmY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTQwMDogIzY1MWZmZjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hNzAwOiAjNjIwMGVhOwoKICAgICAgLS1wYXBlci1pbmRpZ28tNTA6ICNlOGVhZjY7CiAgICAgIC0tcGFwZXItaW5kaWdvLTEwMDogI2M1Y2FlOTsKICAgICAgLS1wYXBlci1pbmRpZ28tMjAwOiAjOWZhOGRhOwogICAgICAtLXBhcGVyLWluZGlnby0zMDA6ICM3OTg2Y2I7CiAgICAgIC0tcGFwZXItaW5kaWdvLTQwMDogIzVjNmJjMDsKICAgICAgLS1wYXBlci1pbmRpZ28tNTAwOiAjM2Y1MWI1OwogICAgICAtLXBhcGVyLWluZGlnby02MDA6ICMzOTQ5YWI7CiAgICAgIC0tcGFwZXItaW5kaWdvLTcwMDogIzMwM2Y5ZjsKICAgICAgLS1wYXBlci1pbmRpZ28tODAwOiAjMjgzNTkzOwogICAgICAtLXBhcGVyLWluZGlnby05MDA6ICMxYTIzN2U7CiAgICAgIC0tcGFwZXItaW5kaWdvLWExMDA6ICM4YzllZmY7CiAgICAgIC0tcGFwZXItaW5kaWdvLWEyMDA6ICM1MzZkZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE0MDA6ICMzZDVhZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE3MDA6ICMzMDRmZmU7CgogICAgICAtLXBhcGVyLWJsdWUtNTA6ICNlM2YyZmQ7CiAgICAgIC0tcGFwZXItYmx1ZS0xMDA6ICNiYmRlZmI7CiAgICAgIC0tcGFwZXItYmx1ZS0yMDA6ICM5MGNhZjk7CiAgICAgIC0tcGFwZXItYmx1ZS0zMDA6ICM2NGI1ZjY7CiAgICAgIC0tcGFwZXItYmx1ZS00MDA6ICM0MmE1ZjU7CiAgICAgIC0tcGFwZXItYmx1ZS01MDA6ICMyMTk2ZjM7CiAgICAgIC0tcGFwZXItYmx1ZS02MDA6ICMxZTg4ZTU7CiAgICAgIC0tcGFwZXItYmx1ZS03MDA6ICMxOTc2ZDI7CiAgICAgIC0tcGFwZXItYmx1ZS04MDA6ICMxNTY1YzA7CiAgICAgIC0tcGFwZXItYmx1ZS05MDA6ICMwZDQ3YTE7CiAgICAgIC0tcGFwZXItYmx1ZS1hMTAwOiAjODJiMWZmOwogICAgICAtLXBhcGVyLWJsdWUtYTIwMDogIzQ0OGFmZjsKICAgICAgLS1wYXBlci1ibHVlLWE0MDA6ICMyOTc5ZmY7CiAgICAgIC0tcGFwZXItYmx1ZS1hNzAwOiAjMjk2MmZmOwoKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTUwOiAjZTFmNWZlOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMTAwOiAjYjNlNWZjOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMjAwOiAjODFkNGZhOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMzAwOiAjNGZjM2Y3OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNDAwOiAjMjliNmY2OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwOiAjMDNhOWY0OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNjAwOiAjMDM5YmU1OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNzAwOiAjMDI4OGQxOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtODAwOiAjMDI3N2JkOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwOiAjMDE1NzliOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTEwMDogIzgwZDhmZjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWEyMDA6ICM0MGM0ZmY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hNDAwOiAjMDBiMGZmOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTcwMDogIzAwOTFlYTsKCiAgICAgIC0tcGFwZXItY3lhbi01MDogI2UwZjdmYTsKICAgICAgLS1wYXBlci1jeWFuLTEwMDogI2IyZWJmMjsKICAgICAgLS1wYXBlci1jeWFuLTIwMDogIzgwZGVlYTsKICAgICAgLS1wYXBlci1jeWFuLTMwMDogIzRkZDBlMTsKICAgICAgLS1wYXBlci1jeWFuLTQwMDogIzI2YzZkYTsKICAgICAgLS1wYXBlci1jeWFuLTUwMDogIzAwYmNkNDsKICAgICAgLS1wYXBlci1jeWFuLTYwMDogIzAwYWNjMTsKICAgICAgLS1wYXBlci1jeWFuLTcwMDogIzAwOTdhNzsKICAgICAgLS1wYXBlci1jeWFuLTgwMDogIzAwODM4ZjsKICAgICAgLS1wYXBlci1jeWFuLTkwMDogIzAwNjA2NDsKICAgICAgLS1wYXBlci1jeWFuLWExMDA6ICM4NGZmZmY7CiAgICAgIC0tcGFwZXItY3lhbi1hMjAwOiAjMThmZmZmOwogICAgICAtLXBhcGVyLWN5YW4tYTQwMDogIzAwZTVmZjsKICAgICAgLS1wYXBlci1jeWFuLWE3MDA6ICMwMGI4ZDQ7CgogICAgICAtLXBhcGVyLXRlYWwtNTA6ICNlMGYyZjE7CiAgICAgIC0tcGFwZXItdGVhbC0xMDA6ICNiMmRmZGI7CiAgICAgIC0tcGFwZXItdGVhbC0yMDA6ICM4MGNiYzQ7CiAgICAgIC0tcGFwZXItdGVhbC0zMDA6ICM0ZGI2YWM7CiAgICAgIC0tcGFwZXItdGVhbC00MDA6ICMyNmE2OWE7CiAgICAgIC0tcGFwZXItdGVhbC01MDA6ICMwMDk2ODg7CiAgICAgIC0tcGFwZXItdGVhbC02MDA6ICMwMDg5N2I7CiAgICAgIC0tcGFwZXItdGVhbC03MDA6ICMwMDc5NmI7CiAgICAgIC0tcGFwZXItdGVhbC04MDA6ICMwMDY5NWM7CiAgICAgIC0tcGFwZXItdGVhbC05MDA6ICMwMDRkNDA7CiAgICAgIC0tcGFwZXItdGVhbC1hMTAwOiAjYTdmZmViOwogICAgICAtLXBhcGVyLXRlYWwtYTIwMDogIzY0ZmZkYTsKICAgICAgLS1wYXBlci10ZWFsLWE0MDA6ICMxZGU5YjY7CiAgICAgIC0tcGFwZXItdGVhbC1hNzAwOiAjMDBiZmE1OwoKICAgICAgLS1wYXBlci1ncmVlbi01MDogI2U4ZjVlOTsKICAgICAgLS1wYXBlci1ncmVlbi0xMDA6ICNjOGU2Yzk7CiAgICAgIC0tcGFwZXItZ3JlZW4tMjAwOiAjYTVkNmE3OwogICAgICAtLXBhcGVyLWdyZWVuLTMwMDogIzgxYzc4NDsKICAgICAgLS1wYXBlci1ncmVlbi00MDA6ICM2NmJiNmE7CiAgICAgIC0tcGFwZXItZ3JlZW4tNTAwOiAjNGNhZjUwOwogICAgICAtLXBhcGVyLWdyZWVuLTYwMDogIzQzYTA0NzsKICAgICAgLS1wYXBlci1ncmVlbi03MDA6ICMzODhlM2M7CiAgICAgIC0tcGFwZXItZ3JlZW4tODAwOiAjMmU3ZDMyOwogICAgICAtLXBhcGVyLWdyZWVuLTkwMDogIzFiNWUyMDsKICAgICAgLS1wYXBlci1ncmVlbi1hMTAwOiAjYjlmNmNhOwogICAgICAtLXBhcGVyLWdyZWVuLWEyMDA6ICM2OWYwYWU7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTQwMDogIzAwZTY3NjsKICAgICAgLS1wYXBlci1ncmVlbi1hNzAwOiAjMDBjODUzOwoKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi01MDogI2YxZjhlOTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi0xMDA6ICNkY2VkYzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tMjAwOiAjYzVlMWE1OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTMwMDogI2FlZDU4MTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi00MDA6ICM5Y2NjNjU7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNTAwOiAjOGJjMzRhOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTYwMDogIzdjYjM0MjsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi03MDA6ICM2ODlmMzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tODAwOiAjNTU4YjJmOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTkwMDogIzMzNjkxZTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hMTAwOiAjY2NmZjkwOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWEyMDA6ICNiMmZmNTk7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTQwMDogIzc2ZmYwMzsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hNzAwOiAjNjRkZDE3OwoKICAgICAgLS1wYXBlci1saW1lLTUwOiAjZjlmYmU3OwogICAgICAtLXBhcGVyLWxpbWUtMTAwOiAjZjBmNGMzOwogICAgICAtLXBhcGVyLWxpbWUtMjAwOiAjZTZlZTljOwogICAgICAtLXBhcGVyLWxpbWUtMzAwOiAjZGNlNzc1OwogICAgICAtLXBhcGVyLWxpbWUtNDAwOiAjZDRlMTU3OwogICAgICAtLXBhcGVyLWxpbWUtNTAwOiAjY2RkYzM5OwogICAgICAtLXBhcGVyLWxpbWUtNjAwOiAjYzBjYTMzOwogICAgICAtLXBhcGVyLWxpbWUtNzAwOiAjYWZiNDJiOwogICAgICAtLXBhcGVyLWxpbWUtODAwOiAjOWU5ZDI0OwogICAgICAtLXBhcGVyLWxpbWUtOTAwOiAjODI3NzE3OwogICAgICAtLXBhcGVyLWxpbWUtYTEwMDogI2Y0ZmY4MTsKICAgICAgLS1wYXBlci1saW1lLWEyMDA6ICNlZWZmNDE7CiAgICAgIC0tcGFwZXItbGltZS1hNDAwOiAjYzZmZjAwOwogICAgICAtLXBhcGVyLWxpbWUtYTcwMDogI2FlZWEwMDsKCiAgICAgIC0tcGFwZXIteWVsbG93LTUwOiAjZmZmZGU3OwogICAgICAtLXBhcGVyLXllbGxvdy0xMDA6ICNmZmY5YzQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTIwMDogI2ZmZjU5ZDsKICAgICAgLS1wYXBlci15ZWxsb3ctMzAwOiAjZmZmMTc2OwogICAgICAtLXBhcGVyLXllbGxvdy00MDA6ICNmZmVlNTg7CiAgICAgIC0tcGFwZXIteWVsbG93LTUwMDogI2ZmZWIzYjsKICAgICAgLS1wYXBlci15ZWxsb3ctNjAwOiAjZmRkODM1OwogICAgICAtLXBhcGVyLXllbGxvdy03MDA6ICNmYmMwMmQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTgwMDogI2Y5YTgyNTsKICAgICAgLS1wYXBlci15ZWxsb3ctOTAwOiAjZjU3ZjE3OwogICAgICAtLXBhcGVyLXllbGxvdy1hMTAwOiAjZmZmZjhkOwogICAgICAtLXBhcGVyLXllbGxvdy1hMjAwOiAjZmZmZjAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNDAwOiAjZmZlYTAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNzAwOiAjZmZkNjAwOwoKICAgICAgLS1wYXBlci1hbWJlci01MDogI2ZmZjhlMTsKICAgICAgLS1wYXBlci1hbWJlci0xMDA6ICNmZmVjYjM7CiAgICAgIC0tcGFwZXItYW1iZXItMjAwOiAjZmZlMDgyOwogICAgICAtLXBhcGVyLWFtYmVyLTMwMDogI2ZmZDU0ZjsKICAgICAgLS1wYXBlci1hbWJlci00MDA6ICNmZmNhMjg7CiAgICAgIC0tcGFwZXItYW1iZXItNTAwOiAjZmZjMTA3OwogICAgICAtLXBhcGVyLWFtYmVyLTYwMDogI2ZmYjMwMDsKICAgICAgLS1wYXBlci1hbWJlci03MDA6ICNmZmEwMDA7CiAgICAgIC0tcGFwZXItYW1iZXItODAwOiAjZmY4ZjAwOwogICAgICAtLXBhcGVyLWFtYmVyLTkwMDogI2ZmNmYwMDsKICAgICAgLS1wYXBlci1hbWJlci1hMTAwOiAjZmZlNTdmOwogICAgICAtLXBhcGVyLWFtYmVyLWEyMDA6ICNmZmQ3NDA7CiAgICAgIC0tcGFwZXItYW1iZXItYTQwMDogI2ZmYzQwMDsKICAgICAgLS1wYXBlci1hbWJlci1hNzAwOiAjZmZhYjAwOwoKICAgICAgLS1wYXBlci1vcmFuZ2UtNTA6ICNmZmYzZTA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTEwMDogI2ZmZTBiMjsKICAgICAgLS1wYXBlci1vcmFuZ2UtMjAwOiAjZmZjYzgwOwogICAgICAtLXBhcGVyLW9yYW5nZS0zMDA6ICNmZmI3NGQ7CiAgICAgIC0tcGFwZXItb3JhbmdlLTQwMDogI2ZmYTcyNjsKICAgICAgLS1wYXBlci1vcmFuZ2UtNTAwOiAjZmY5ODAwOwogICAgICAtLXBhcGVyLW9yYW5nZS02MDA6ICNmYjhjMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTcwMDogI2Y1N2MwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtODAwOiAjZWY2YzAwOwogICAgICAtLXBhcGVyLW9yYW5nZS05MDA6ICNlNjUxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWExMDA6ICNmZmQxODA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWEyMDA6ICNmZmFiNDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE0MDA6ICNmZjkxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE3MDA6ICNmZjY1MDA7CgogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTUwOiAjZmJlOWU3OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTEwMDogI2ZmY2NiYzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS0yMDA6ICNmZmFiOTE7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtMzAwOiAjZmY4YTY1OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTQwMDogI2ZmNzA0MzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS01MDA6ICNmZjU3MjI7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNjAwOiAjZjQ1MTFlOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTcwMDogI2U2NGExOTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS04MDA6ICNkODQzMTU7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtOTAwOiAjYmYzNjBjOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWExMDA6ICNmZjllODA7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTIwMDogI2ZmNmU0MDsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hNDAwOiAjZmYzZDAwOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWE3MDA6ICNkZDJjMDA7CgogICAgICAtLXBhcGVyLWJyb3duLTUwOiAjZWZlYmU5OwogICAgICAtLXBhcGVyLWJyb3duLTEwMDogI2Q3Y2NjODsKICAgICAgLS1wYXBlci1icm93bi0yMDA6ICNiY2FhYTQ7CiAgICAgIC0tcGFwZXItYnJvd24tMzAwOiAjYTE4ODdmOwogICAgICAtLXBhcGVyLWJyb3duLTQwMDogIzhkNmU2MzsKICAgICAgLS1wYXBlci1icm93bi01MDA6ICM3OTU1NDg7CiAgICAgIC0tcGFwZXItYnJvd24tNjAwOiAjNmQ0YzQxOwogICAgICAtLXBhcGVyLWJyb3duLTcwMDogIzVkNDAzNzsKICAgICAgLS1wYXBlci1icm93bi04MDA6ICM0ZTM0MmU7CiAgICAgIC0tcGFwZXItYnJvd24tOTAwOiAjM2UyNzIzOwoKICAgICAgLS1wYXBlci1ncmV5LTUwOiAjZmFmYWZhOwogICAgICAtLXBhcGVyLWdyZXktMTAwOiAjZjVmNWY1OwogICAgICAtLXBhcGVyLWdyZXktMjAwOiAjZWVlZWVlOwogICAgICAtLXBhcGVyLWdyZXktMzAwOiAjZTBlMGUwOwogICAgICAtLXBhcGVyLWdyZXktNDAwOiAjYmRiZGJkOwogICAgICAtLXBhcGVyLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLXBhcGVyLWdyZXktNjAwOiAjNzU3NTc1OwogICAgICAtLXBhcGVyLWdyZXktNzAwOiAjNjE2MTYxOwogICAgICAtLXBhcGVyLWdyZXktODAwOiAjNDI0MjQyOwogICAgICAtLXBhcGVyLWdyZXktOTAwOiAjMjEyMTIxOwoKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTA6ICNlY2VmZjE7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTEwMDogI2NmZDhkYzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktMjAwOiAjYjBiZWM1OwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS0zMDA6ICM5MGE0YWU7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTQwMDogIzc4OTA5YzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTAwOiAjNjA3ZDhiOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS02MDA6ICM1NDZlN2E7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTcwMDogIzQ1NWE2NDsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktODAwOiAjMzc0NzRmOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS05MDA6ICMyNjMyMzg7CgogICAgICAvKiBvcGFjaXR5IGZvciBkYXJrIHRleHQgb24gYSBsaWdodCBiYWNrZ3JvdW5kICovCiAgICAgIC0tZGFyay1kaXZpZGVyLW9wYWNpdHk6IDAuMTI7CiAgICAgIC0tZGFyay1kaXNhYmxlZC1vcGFjaXR5OiAwLjM4OyAvKiBvciBoaW50IHRleHQgb3IgaWNvbiAqLwogICAgICAtLWRhcmstc2Vjb25kYXJ5LW9wYWNpdHk6IDAuNTQ7CiAgICAgIC0tZGFyay1wcmltYXJ5LW9wYWNpdHk6IDAuODc7CgogICAgICAvKiBvcGFjaXR5IGZvciBsaWdodCB0ZXh0IG9uIGEgZGFyayBiYWNrZ3JvdW5kICovCiAgICAgIC0tbGlnaHQtZGl2aWRlci1vcGFjaXR5OiAwLjEyOwogICAgICAtLWxpZ2h0LWRpc2FibGVkLW9wYWNpdHk6IDAuMzsgLyogb3IgaGludCB0ZXh0IG9yIGljb24gKi8KICAgICAgLS1saWdodC1zZWNvbmRhcnktb3BhY2l0eTogMC43OwogICAgICAtLWxpZ2h0LXByaW1hcnktb3BhY2l0eTogMS4wOwoKICAgIH0KCiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CmA7aTB0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaTB0LmNvbnRlbnQpO3ZhciBvMHQ9UWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKICAgICAgLyoKICAgICAgICogWW91IGNhbiB1c2UgdGhlc2UgZ2VuZXJpYyB2YXJpYWJsZXMgaW4geW91ciBlbGVtZW50cyBmb3IgZWFzeSB0aGVtaW5nLgogICAgICAgKiBGb3IgZXhhbXBsZSwgaWYgYWxsIHlvdXIgZWxlbWVudHMgdXNlIFxgLS1wcmltYXJ5LXRleHQtY29sb3JcYCBhcyBpdHMgbWFpbgogICAgICAgKiBjb2xvciwgdGhlbiBzd2l0Y2hpbmcgZnJvbSBhIGxpZ2h0IHRvIGEgZGFyayB0aGVtZSBpcyBqdXN0IGEgbWF0dGVyIG9mCiAgICAgICAqIGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBcYC0tcHJpbWFyeS10ZXh0LWNvbG9yXGAgaW4geW91ciBhcHBsaWNhdGlvbi4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS10ZXh0LWNvbG9yKTsKICAgICAgLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWJhY2tncm91bmQtY29sb3IpOwogICAgICAtLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS1zZWNvbmRhcnktY29sb3IpOwogICAgICAtLWRpc2FibGVkLXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWRpc2FibGVkLWNvbG9yKTsKICAgICAgLS1kaXZpZGVyLWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS1kaXZpZGVyLWNvbG9yKTsKICAgICAgLS1lcnJvci1jb2xvcjogdmFyKC0tcGFwZXItZGVlcC1vcmFuZ2UtYTcwMCk7CgogICAgICAvKgogICAgICAgKiBQcmltYXJ5IGFuZCBhY2NlbnQgY29sb3JzLiBBbHNvIHNlZSBjb2xvci5qcyBmb3IgbW9yZSBjb2xvcnMuCiAgICAgICAqLwogICAgICAtLXByaW1hcnktY29sb3I6IHZhcigtLXBhcGVyLWluZGlnby01MDApOwogICAgICAtLWxpZ2h0LXByaW1hcnktY29sb3I6IHZhcigtLXBhcGVyLWluZGlnby0xMDApOwogICAgICAtLWRhcmstcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTcwMCk7CgogICAgICAtLWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hMjAwKTsKICAgICAgLS1saWdodC1hY2NlbnQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstYTEwMCk7CiAgICAgIC0tZGFyay1hY2NlbnQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstYTQwMCk7CgoKICAgICAgLyoKICAgICAgICogTWF0ZXJpYWwgRGVzaWduIExpZ2h0IGJhY2tncm91bmQgdGhlbWUKICAgICAgICovCiAgICAgIC0tbGlnaHQtdGhlbWUtYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKICAgICAgLS1saWdodC10aGVtZS1iYXNlLWNvbG9yOiAjMDAwMDAwOwogICAgICAtLWxpZ2h0LXRoZW1lLXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktOTAwKTsKICAgICAgLS1saWdodC10aGVtZS1zZWNvbmRhcnktY29sb3I6ICM3MzczNzM7ICAvKiBmb3Igc2Vjb25kYXJ5IHRleHQgYW5kIGljb25zICovCiAgICAgIC0tbGlnaHQtdGhlbWUtZGlzYWJsZWQtY29sb3I6ICM5YjliOWI7ICAvKiBkaXNhYmxlZC9oaW50IHRleHQgKi8KICAgICAgLS1saWdodC10aGVtZS1kaXZpZGVyLWNvbG9yOiAjZGJkYmRiOwoKICAgICAgLyoKICAgICAgICogTWF0ZXJpYWwgRGVzaWduIERhcmsgYmFja2dyb3VuZCB0aGVtZQogICAgICAgKi8KICAgICAgLS1kYXJrLXRoZW1lLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktOTAwKTsKICAgICAgLS1kYXJrLXRoZW1lLWJhc2UtY29sb3I6ICNmZmZmZmY7CiAgICAgIC0tZGFyay10aGVtZS10ZXh0LWNvbG9yOiAjZmZmZmZmOwogICAgICAtLWRhcmstdGhlbWUtc2Vjb25kYXJ5LWNvbG9yOiAjYmNiY2JjOyAgLyogZm9yIHNlY29uZGFyeSB0ZXh0IGFuZCBpY29ucyAqLwogICAgICAtLWRhcmstdGhlbWUtZGlzYWJsZWQtY29sb3I6ICM2NDY0NjQ7ICAvKiBkaXNhYmxlZC9oaW50IHRleHQgKi8KICAgICAgLS1kYXJrLXRoZW1lLWRpdmlkZXItY29sb3I6ICMzYzNjM2M7CgogICAgICAvKgogICAgICAgKiBEZXByZWNhdGVkIHZhbHVlcyBiZWNhdXNlIG9mIHRoZWlyIGNvbmZ1c2luZyBuYW1lcy4KICAgICAgICovCiAgICAgIC0tdGV4dC1wcmltYXJ5LWNvbG9yOiB2YXIoLS1kYXJrLXRoZW1lLXRleHQtY29sb3IpOwogICAgICAtLWRlZmF1bHQtcHJpbWFyeS1jb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+YDtvMHQuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7Iik7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChvMHQuY29udGVudCk7dmFyIE1oPXtwcm9wZXJ0aWVzOntuYW1lOnt0eXBlOlN0cmluZ30sdmFsdWU6e25vdGlmeTohMCx0eXBlOlN0cmluZ30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGF0dGFjaGVkOmZ1bmN0aW9uKCl7fSxkZXRhY2hlZDpmdW5jdGlvbigpe319O3ZhciB1Vz1udWxsLEVoPXtwcm9wZXJ0aWVzOnt2YWxpZGF0b3I6e3R5cGU6U3RyaW5nfSxpbnZhbGlkOntub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2ludmFsaWRDaGFuZ2VkIn19LHJlZ2lzdGVyZWQ6ZnVuY3Rpb24oKXt1Vz1uZXcgbW8oe3R5cGU6InZhbGlkYXRvciJ9KX0sX2ludmFsaWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5pbnZhbGlkP3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiLCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIpfSxnZXQgX3ZhbGlkYXRvcigpe3JldHVybiB1VyYmdVcuYnlLZXkodGhpcy52YWxpZGF0b3IpfSxoYXNWYWxpZGF0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsaWRhdG9yIT1udWxsfSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmdGhpcy52YWx1ZSE9PXZvaWQgMD90aGlzLmludmFsaWQ9IXRoaXMuX2dldFZhbGlkaXR5KHRoaXMudmFsdWUpOnRoaXMuaW52YWxpZD0hdGhpcy5fZ2V0VmFsaWRpdHkoZSksIXRoaXMuaW52YWxpZH0sX2dldFZhbGlkaXR5OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhc1ZhbGlkYXRvcigpP3RoaXMuX3ZhbGlkYXRvci52YWxpZGF0ZShlKTohMH19O3ZhciBoVz17cHJvcGVydGllczp7Y2hlY2tlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9jaGVja2VkQ2hhbmdlZCJ9LHRvZ2dsZXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToib24iLG9ic2VydmVyOiJfdmFsdWVDaGFuZ2VkIn19LG9ic2VydmVyczpbIl9yZXF1aXJlZENoYW5nZWQocmVxdWlyZWQpIl0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2hhc0lyb25DaGVja2VkRWxlbWVudEJlaGF2aW9yPSEwfSxfZ2V0VmFsaWRpdHk6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fCF0aGlzLnJlcXVpcmVkfHx0aGlzLmNoZWNrZWR9LF9yZXF1aXJlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnJlcXVpcmVkP3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXJlcXVpcmVkIiwidHJ1ZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLXJlcXVpcmVkIil9LF9jaGVja2VkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYWN0aXZlPXRoaXMuY2hlY2tlZCx0aGlzLmZpcmUoImlyb24tY2hhbmdlIil9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXsodGhpcy52YWx1ZT09PXZvaWQgMHx8dGhpcy52YWx1ZT09PW51bGwpJiYodGhpcy52YWx1ZT0ib24iKX19LGEwdD1bTWgsRWgsaFddO3ZhciB1RT17b2JzZXJ2ZXJzOlsiX2ZvY3VzZWRDaGFuZ2VkKHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIl0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKGUpe2UmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ob2xkRG93bj1lKX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3ZhciBlPWF1Ll9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gZS5pZD0iaW5rIixlLnNldEF0dHJpYnV0ZSgiY2VudGVyIiwiIiksZS5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiKSxlfX0sWXg9W3doLE5pLGF1LHVFXTt2YXIgeGJlPXtfY2hlY2tlZENoYW5nZWQ6ZnVuY3Rpb24oKXtoVy5fY2hlY2tlZENoYW5nZWQuY2FsbCh0aGlzKSx0aGlzLmhhc1JpcHBsZSgpJiYodGhpcy5jaGVja2VkP3RoaXMuX3JpcHBsZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCIiKTp0aGlzLl9yaXBwbGUucmVtb3ZlQXR0cmlidXRlKCJjaGVja2VkIikpfSxfYnV0dG9uU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKCl7YXUuX2J1dHRvblN0YXRlQ2hhbmdlZC5jYWxsKHRoaXMpLCF0aGlzLmRpc2FibGVkJiZ0aGlzLmlzQXR0YWNoZWQmJih0aGlzLmNoZWNrZWQ9dGhpcy5hY3RpdmUpfX0sang9W1l4LGEwdCx4YmVdO3ZhciBzMHQ9UWA8c3R5bGU+CiAgOmhvc3QgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplOiB2YXIoLS1wYXBlci1jaGVja2JveC1zaXplLCAxOHB4KTsKICAgIC8qIC0xcHggaXMgYSBzZW50aW5lbCBmb3IgdGhlIGRlZmF1bHQgYW5kIGlzIHJlcGxhY2VkIGluIFxgYXR0YWNoZWRcYC4gKi8KICAgIC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZTogdmFyKC0tcGFwZXItY2hlY2tib3gtaW5rLXNpemUsIC0xcHgpOwogICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICB9CgogIDpob3N0KFtoaWRkZW5dKSB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgfQoKICA6aG9zdCg6Zm9jdXMpIHsKICAgIG91dGxpbmU6IG5vbmU7CiAgfQoKICAuaGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAjY2hlY2tib3hDb250YWluZXIgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSk7CiAgICBtaW4td2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSk7CiAgICBtYXJnaW46IHZhcigtLXBhcGVyLWNoZWNrYm94LW1hcmdpbiwgaW5pdGlhbCk7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdmFyKC0tcGFwZXItY2hlY2tib3gtdmVydGljYWwtYWxpZ24sIG1pZGRsZSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtYmFja2dyb3VuZC1jb2xvciwgdHJhbnNwYXJlbnQpOwogIH0KCiAgI2luayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CgogICAgLyogQ2VudGVyIHRoZSByaXBwbGUgaW4gdGhlIGNoZWNrYm94IGJ5IG5lZ2F0aXZlIG9mZnNldHRpbmcgaXQgYnkKICAgICAqIChpbmtXaWR0aCAtIHJpcHBsZVdpZHRoKSAvIDIgKi8KICAgIHRvcDogY2FsYygwcHggLSAodmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSkgLSB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKSAvIDIpOwogICAgbGVmdDogY2FsYygwcHggLSAodmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSkgLSB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKSAvIDIpOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpOwogICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKTsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogIH0KCiAgI2luazpkaXIocnRsKSB7CiAgICByaWdodDogY2FsYygwcHggLSAodmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSkgLSB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKSAvIDIpOwogICAgbGVmdDogYXV0bzsKICB9CgogICNpbmtbY2hlY2tlZF0gewogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjY2hlY2tib3ggewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGhlaWdodDogMTAwJTsKICAgIGJvcmRlcjogc29saWQgMnB4OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTQwbXMsIGJvcmRlci1jb2xvciAxNDBtczsKICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTQwbXMsIGJvcmRlci1jb2xvciAxNDBtczsKCiAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLWNoZWNrYm94LWFuaW1hdGlvbi1kdXJhdGlvbiwgMTQwbXMpOwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgfQoKICAvKiBjaGVja2JveCBjaGVja2VkIGFuaW1hdGlvbnMgKi8KICAjY2hlY2tib3guY2hlY2tlZCAjY2hlY2ttYXJrIHsKICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjaGVja21hcmstZXhwYW5kIDE0MG1zIGVhc2Utb3V0IGZvcndhcmRzOwogICAgYW5pbWF0aW9uOiBjaGVja21hcmstZXhwYW5kIDE0MG1zIGVhc2Utb3V0IGZvcndhcmRzOwoKICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgfQoKICBALXdlYmtpdC1rZXlmcmFtZXMgY2hlY2ttYXJrLWV4cGFuZCB7CiAgICAwJSB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLCAwKSByb3RhdGUoNDVkZWcpOwogICAgfQogICAgMTAwJSB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSByb3RhdGUoNDVkZWcpOwogICAgfQogIH0KCiAgQGtleWZyYW1lcyBjaGVja21hcmstZXhwYW5kIHsKICAgIDAlIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKSByb3RhdGUoNDVkZWcpOwogICAgfQogICAgMTAwJSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgcm90YXRlKDQ1ZGVnKTsKICAgIH0KICB9CgogICNjaGVja2JveC5jaGVja2VkIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogIH0KCiAgI2NoZWNrbWFyayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMzYlOwogICAgaGVpZ2h0OiA3MCU7CiAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGJvcmRlci1sZWZ0OiBub25lOwogICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiBjYWxjKDIvMTUgKiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpKTsKICAgIGJvcmRlci1ib3R0b20td2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja21hcmstY29sb3IsIHdoaXRlKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogOTclIDg2JTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDk3JSA4NiU7CiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogcHJvdGVjdCBhZ2FpbnN0IHBhZ2UtbGV2ZWwgYm94LXNpemluZyAqLwogIH0KCiAgI2NoZWNrbWFyazpkaXIocnRsKSB7CiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDUwJSAxNCU7CiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMTQlOwogIH0KCiAgLyogbGFiZWwgKi8KICAjY2hlY2tib3hMYWJlbCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1zcGFjaW5nLCA4cHgpOwogICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgQGFwcGx5IC0tcGFwZXItY2hlY2tib3gtbGFiZWw7CiAgfQoKICA6aG9zdChbY2hlY2tlZF0pICNjaGVja2JveExhYmVsIHsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSkpOwogICAgQGFwcGx5IC0tcGFwZXItY2hlY2tib3gtbGFiZWwtY2hlY2tlZDsKICB9CgogICNjaGVja2JveExhYmVsOmRpcihydGwpIHsKICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgfQoKICAjY2hlY2tib3hMYWJlbFtoaWRkZW5dIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAvKiBkaXNhYmxlZCBzdGF0ZSAqLwoKICA6aG9zdChbZGlzYWJsZWRdKSAjY2hlY2tib3ggewogICAgb3BhY2l0eTogMC41OwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogIH0KCiAgOmhvc3QoW2Rpc2FibGVkXVtjaGVja2VkXSkgI2NoZWNrYm94IHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdKSAjY2hlY2tib3hMYWJlbCAgewogICAgb3BhY2l0eTogMC42NTsKICB9CgogIC8qIGludmFsaWQgc3RhdGUgKi8KICAjY2hlY2tib3guaW52YWxpZDpub3QoLmNoZWNrZWQpIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtZXJyb3ItY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgfQo8L3N0eWxlPgoKPGRpdiBpZD0iY2hlY2tib3hDb250YWluZXIiPgogIDxkaXYgaWQ9ImNoZWNrYm94IiBjbGFzcyQ9IltbX2NvbXB1dGVDaGVja2JveENsYXNzKGNoZWNrZWQsIGludmFsaWQpXV0iPgogICAgPGRpdiBpZD0iY2hlY2ttYXJrIiBjbGFzcyQ9IltbX2NvbXB1dGVDaGVja21hcmtDbGFzcyhjaGVja2VkKV1dIj48L2Rpdj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJjaGVja2JveExhYmVsIj48c2xvdD48L3Nsb3Q+PC9kaXY+YDtzMHQuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIik7WXQoe190ZW1wbGF0ZTpzMHQsaXM6InBhcGVyLWNoZWNrYm94IixiZWhhdmlvcnM6W2p4XSxob3N0QXR0cmlidXRlczp7cm9sZToiY2hlY2tib3giLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtUbSh0aGlzLGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSIpLnRyaW0oKTtpZihlPT09Ii0xcHgiKXt2YXIgdD10aGlzLmdldENvbXB1dGVkU3R5bGVWYWx1ZSgiLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUiKS50cmltKCkscj0icHgiLG49dC5tYXRjaCgvW0EtWmEtel0rJC8pO24hPT1udWxsJiYocj1uWzBdKTt2YXIgaT1wYXJzZUZsb2F0KHQpLG89OC8zKmk7cj09PSJweCImJihvPU1hdGguZmxvb3IobyksbyUyIT09aSUyJiZvKyspLHRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci1jaGVja2JveC1pbmstc2l6ZSI6bytyfSl9fSl9LF9jb21wdXRlQ2hlY2tib3hDbGFzczpmdW5jdGlvbihlLHQpe3ZhciByPSIiO3JldHVybiBlJiYocis9ImNoZWNrZWQgIiksdCYmKHIrPSJpbnZhbGlkIikscn0sX2NvbXB1dGVDaGVja21hcmtDbGFzczpmdW5jdGlvbihlKXtyZXR1cm4gZT8iIjoiaGlkZGVuIn0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLmNoZWNrYm94Q29udGFpbmVyLHVFLl9jcmVhdGVSaXBwbGUuY2FsbCh0aGlzKX19KTtpZighd2luZG93LnBvbHltZXJTa2lwTG9hZGluZ0ZvbnRSb2JvdG8pe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtlLnJlbD0ic3R5bGVzaGVldCIsZS50eXBlPSJ0ZXh0L2NzcyIsZS5jcm9zc09yaWdpbj0iYW5vbnltb3VzIixlLmhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1Sb2JvdG8rTW9ubzo0MDAsNzAwfFJvYm90bzo0MDAsMzAwLDMwMGl0YWxpYyw0MDBpdGFsaWMsNTAwLDUwMGl0YWxpYyw3MDAsNzAwaXRhbGljIixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGUpfXZhciBsMHQ9UWA8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewoKICAgICAgLyogU2hhcmVkIFN0eWxlcyAqLwogICAgICAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U6IHsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsICdOb3RvJywgc2Fucy1zZXJpZjsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tY29kZTogewogICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCAnQ29uc29sYXMnLCAnTWVubG8nLCBtb25vc3BhY2U7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY29tbW9uLWV4cGVuc2l2ZS1rZXJuaW5nOiB7CiAgICAgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOiB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9OwoKICAgICAgLyogTWF0ZXJpYWwgRm9udCBTdHlsZXMgKi8KCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5NDogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDExMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDQ0ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXkzOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogNTZweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAyNmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXkyOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiA0NXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDE4ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDQ4cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTE6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWhlYWRsaW5lOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDEyZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtdGl0bGU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtc3ViaGVhZDogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWJvZHkyOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYm9keTE6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jYXB0aW9uOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxMWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LW1lbnU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYnV0dG9uOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxOGVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY29kZTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1jb2RlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb2RlMTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWNvZGU7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgIH0KCiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+YDtsMHQuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7Iik7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChsMHQuY29udGVudCk7dmFyIGZXPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7Zlcuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7Iik7ZlcuaW5uZXJIVE1MPWA8ZG9tLW1vZHVsZSBpZD0icGFwZXItZGlhbG9nLXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbjogMjRweCA0MHB4OwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1kaWFsb2ctYmFja2dyb3VuZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtYm9keTE7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZzsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMCAyNHB4OwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZCgubm8tcGFkZGluZykgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIAogICAgICA6aG9zdCA+IDo6c2xvdHRlZCgqOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKjpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLyogSW4gMS54LCB0aGlzIHNlbGVjdG9yIHdhcyBcYDpob3N0ID4gOjpjb250ZW50IGgyXGAuIEluIDIueCA8c2xvdD4gYWxsb3dzCiAgICAgIHRvIHNlbGVjdCBkaXJlY3QgY2hpbGRyZW4gb25seSwgd2hpY2ggaW5jcmVhc2VzIHRoZSB3ZWlnaHQgb2YgdGhpcwogICAgICBzZWxlY3Rvciwgc28gd2UgaGF2ZSB0byByZS1kZWZpbmUgZmlyc3QtY2hpbGQvbGFzdC1jaGlsZCBtYXJnaW5zIGJlbG93LiAqLwogICAgICA6aG9zdCA+IDo6c2xvdHRlZChoMikgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDA7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtdGl0bGU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlOwogICAgICB9CgogICAgICAvKiBBcHBseSBtaXhpbiBhZ2FpbiwgaW4gY2FzZSBpdCBzZXRzIG1hcmdpbi10b3AuICovCiAgICAgIDpob3N0ID4gOjpzbG90dGVkKGgyOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2ctdGl0bGU7CiAgICAgIH0KCiAgICAgIC8qIEFwcGx5IG1peGluIGFnYWluLCBpbiBjYXNlIGl0IHNldHMgbWFyZ2luLWJvdHRvbS4gKi8KICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoaDI6bGFzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlOwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZCgucGFwZXItZGlhbG9nLWJ1dHRvbnMpLAogICAgICA6aG9zdCA+IDo6c2xvdHRlZCguYnV0dG9ucykgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDhweCAyNHB4OwogICAgICAgIG1hcmdpbjogMDsKCiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1idXR0b24tY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChmVy5jb250ZW50KTt2YXIgYzB0PXtwcm9wZXJ0aWVzOnthbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxlbnRyeUFuaW1hdGlvbjp7b2JzZXJ2ZXI6Il9lbnRyeUFuaW1hdGlvbkNoYW5nZWQiLHR5cGU6U3RyaW5nfSxleGl0QW5pbWF0aW9uOntvYnNlcnZlcjoiX2V4aXRBbmltYXRpb25DaGFuZ2VkIix0eXBlOlN0cmluZ319LF9lbnRyeUFuaW1hdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGlvbkNvbmZpZz10aGlzLmFuaW1hdGlvbkNvbmZpZ3x8e30sdGhpcy5hbmltYXRpb25Db25maWcuZW50cnk9W3tuYW1lOnRoaXMuZW50cnlBbmltYXRpb24sbm9kZTp0aGlzfV19LF9leGl0QW5pbWF0aW9uQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9uQ29uZmlnPXRoaXMuYW5pbWF0aW9uQ29uZmlnfHx7fSx0aGlzLmFuaW1hdGlvbkNvbmZpZy5leGl0PVt7bmFtZTp0aGlzLmV4aXRBbmltYXRpb24sbm9kZTp0aGlzfV19LF9jb3B5UHJvcGVydGllczpmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXX0sX2Nsb25lQ29uZmlnOmZ1bmN0aW9uKGUpe3ZhciB0PXtpc0Nsb25lOiEwfTtyZXR1cm4gdGhpcy5fY29weVByb3BlcnRpZXModCxlKSx0fSxfZ2V0QW5pbWF0aW9uQ29uZmlnUmVjdXJzaXZlOmZ1bmN0aW9uKGUsdCxyKXtpZighIXRoaXMuYW5pbWF0aW9uQ29uZmlnKXtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZy52YWx1ZSYmdHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnLnZhbHVlPT0iZnVuY3Rpb24iKXt0aGlzLl93YXJuKHRoaXMuX2xvZ2YoInBsYXlBbmltYXRpb24iLCJQbGVhc2UgcHV0ICdhbmltYXRpb25Db25maWcnIGluc2lkZSBvZiB5b3VyIGNvbXBvbmVudHMgJ3Byb3BlcnRpZXMnIG9iamVjdCBpbnN0ZWFkIG9mIG91dHNpZGUgb2YgaXQuIikpO3JldHVybn12YXIgbjtpZihlP249dGhpcy5hbmltYXRpb25Db25maWdbZV06bj10aGlzLmFuaW1hdGlvbkNvbmZpZyxBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pLG4pZm9yKHZhciBpLG89MDtpPW5bb107bysrKWlmKGkuYW5pbWF0YWJsZSlpLmFuaW1hdGFibGUuX2dldEFuaW1hdGlvbkNvbmZpZ1JlY3Vyc2l2ZShpLnR5cGV8fGUsdCxyKTtlbHNlIGlmKGkuaWQpe3ZhciBhPXRbaS5pZF07YT8oYS5pc0Nsb25lfHwodFtpLmlkXT10aGlzLl9jbG9uZUNvbmZpZyhhKSxhPXRbaS5pZF0pLHRoaXMuX2NvcHlQcm9wZXJ0aWVzKGEsaSkpOnRbaS5pZF09aX1lbHNlIHIucHVzaChpKX19LGdldEFuaW1hdGlvbkNvbmZpZzpmdW5jdGlvbihlKXt2YXIgdD17fSxyPVtdO3RoaXMuX2dldEFuaW1hdGlvbkNvbmZpZ1JlY3Vyc2l2ZShlLHQscik7Zm9yKHZhciBuIGluIHQpci5wdXNoKHRbbl0pO3JldHVybiByfX07dmFyIGJiZT17X2NvbmZpZ3VyZUFuaW1hdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIHQ9W10scj1bXTtpZihlLmxlbmd0aD4wKWZvcihsZXQgaSxvPTA7aT1lW29dO28rKyl7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpLm5hbWUpO2lmKGEuaXNOZW9uQW5pbWF0aW9uKXtsZXQgcz1udWxsO2EuY29uZmlndXJlfHwoYS5jb25maWd1cmU9ZnVuY3Rpb24obCl7cmV0dXJuIG51bGx9KSxzPWEuY29uZmlndXJlKGkpLHIucHVzaCh7cmVzdWx0OnMsY29uZmlnOmksbmVvbkFuaW1hdGlvbjphfSl9ZWxzZSBjb25zb2xlLndhcm4odGhpcy5pcysiOiIsaS5uYW1lLCJub3QgZm91bmQhIil9Zm9yKHZhciBuPTA7bjxyLmxlbmd0aDtuKyspe2xldCBpPXJbbl0ucmVzdWx0LG89cltuXS5jb25maWcsYT1yW25dLm5lb25BbmltYXRpb247dHJ5e3R5cGVvZiBpLmNhbmNlbCE9ImZ1bmN0aW9uIiYmKGk9ZG9jdW1lbnQudGltZWxpbmUucGxheShpKSl9Y2F0Y2gocyl7aT1udWxsLGNvbnNvbGUud2FybigiQ291bGRudCBwbGF5IiwiKCIsby5uYW1lLCIpLiIscyl9aSYmdC5wdXNoKHtuZW9uQW5pbWF0aW9uOmEsY29uZmlnOm8sYW5pbWF0aW9uOml9KX1yZXR1cm4gdH0sX3Nob3VsZENvbXBsZXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0hMCxyPTA7cjxlLmxlbmd0aDtyKyspaWYoZVtyXS5hbmltYXRpb24ucGxheVN0YXRlIT0iZmluaXNoZWQiKXt0PSExO2JyZWFrfXJldHVybiB0fSxfY29tcGxldGU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5uZW9uQW5pbWF0aW9uLmNvbXBsZXRlKGVbdF0uY29uZmlnKTtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLmFuaW1hdGlvbi5jYW5jZWwoKX0scGxheUFuaW1hdGlvbjpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZ2V0QW5pbWF0aW9uQ29uZmlnKGUpO2lmKCEhcil7dGhpcy5fYWN0aXZlPXRoaXMuX2FjdGl2ZXx8e30sdGhpcy5fYWN0aXZlW2VdJiYodGhpcy5fY29tcGxldGUodGhpcy5fYWN0aXZlW2VdKSxkZWxldGUgdGhpcy5fYWN0aXZlW2VdKTt2YXIgbj10aGlzLl9jb25maWd1cmVBbmltYXRpb25zKHIpO2lmKG4ubGVuZ3RoPT0wKXt0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsdCx7YnViYmxlczohMX0pO3JldHVybn10aGlzLl9hY3RpdmVbZV09bjtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyluW2ldLmFuaW1hdGlvbi5vbmZpbmlzaD1mdW5jdGlvbigpe3RoaXMuX3Nob3VsZENvbXBsZXRlKG4pJiYodGhpcy5fY29tcGxldGUobiksZGVsZXRlIHRoaXMuX2FjdGl2ZVtlXSx0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsdCx7YnViYmxlczohMX0pKX0uYmluZCh0aGlzKX19LGNhbmNlbEFuaW1hdGlvbjpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLl9hY3RpdmUpe3ZhciB0PXRoaXMuX2FjdGl2ZVtlXTtmb3IodmFyIHIgaW4gdCl0W3JdLmFuaW1hdGlvbi5jYW5jZWwoKX10aGlzLl9hY3RpdmU9e319fSx5OT1bYzB0LGJiZV07dmFyIHY5LHdiZT0oKT0+e2lmKHY5IT09dm9pZCAwKXJldHVybiB2OTtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtPYmplY3QuYXNzaWduKGUuc3R5bGUse292ZXJmbG93OiJhdXRvIixwb3NpdGlvbjoiZml4ZWQiLGxlZnQ6IjBweCIsdG9wOiIwcHgiLG1heFdpZHRoOiIxMDBweCIsbWF4SGVpZ2h0OiIxMDBweCJ9KTtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5zdHlsZS53aWR0aD0iMjAwcHgiLHQuc3R5bGUuaGVpZ2h0PSIyMDBweCIsZS5hcHBlbmRDaGlsZCh0KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLHY5PU1hdGguYWJzKGUub2Zmc2V0V2lkdGgtMTAwKT4xP2Uub2Zmc2V0V2lkdGgtZS5jbGllbnRXaWR0aDowLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZSksdjl9LHUwdD17cHJvcGVydGllczp7c2l6aW5nVGFyZ2V0Ont0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0sZml0SW50bzp7dHlwZTpPYmplY3QsdmFsdWU6d2luZG93fSxub092ZXJsYXA6e3R5cGU6Qm9vbGVhbn0scG9zaXRpb25UYXJnZXQ6e3R5cGU6RWxlbWVudH0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZ30sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmd9LGR5bmFtaWNBbGlnbjp7dHlwZTpCb29sZWFufSxob3Jpem9udGFsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sdmVydGljYWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxhdXRvRml0T25BdHRhY2g6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFyczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfZml0SW5mbzp7dHlwZTpPYmplY3R9fSxnZXQgX2ZpdFdpZHRoKCl7dmFyIGU7cmV0dXJuIHRoaXMuZml0SW50bz09PXdpbmRvdz9lPXRoaXMuZml0SW50by5pbm5lcldpZHRoOmU9dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLGV9LGdldCBfZml0SGVpZ2h0KCl7dmFyIGU7cmV0dXJuIHRoaXMuZml0SW50bz09PXdpbmRvdz9lPXRoaXMuZml0SW50by5pbm5lckhlaWdodDplPXRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsZX0sZ2V0IF9maXRMZWZ0KCl7dmFyIGU7cmV0dXJuIHRoaXMuZml0SW50bz09PXdpbmRvdz9lPTA6ZT10aGlzLmZpdEludG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxlfSxnZXQgX2ZpdFRvcCgpe3ZhciBlO3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/ZT0wOmU9dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCxlfSxnZXQgX2RlZmF1bHRQb3NpdGlvblRhcmdldCgpe3ZhciBlPXp0KHRoaXMpLnBhcmVudE5vZGU7cmV0dXJuIGUmJmUubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUmJihlPWUuaG9zdCksZX0sZ2V0IF9sb2NhbGVIb3Jpem9udGFsQWxpZ24oKXtpZih0aGlzLl9pc1JUTCl7aWYodGhpcy5ob3Jpem9udGFsQWxpZ249PT0icmlnaHQiKXJldHVybiJsZWZ0IjtpZih0aGlzLmhvcml6b250YWxBbGlnbj09PSJsZWZ0IilyZXR1cm4icmlnaHQifXJldHVybiB0aGlzLmhvcml6b250YWxBbGlnbn0sZ2V0IF9fc2hvdWxkUG9zaXRpb24oKXtyZXR1cm4odGhpcy5ob3Jpem9udGFsQWxpZ258fHRoaXMudmVydGljYWxBbGlnbikmJnRoaXMucG9zaXRpb25UYXJnZXR9LGdldCBfaXNSVEwoKXtyZXR1cm4gdHlwZW9mIHRoaXMuX21lbW9pemVkSXNSVEw9PSJ1bmRlZmluZWQiJiYodGhpcy5fbWVtb2l6ZWRJc1JUTD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb249PSJydGwiKSx0aGlzLl9tZW1vaXplZElzUlRMfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMucG9zaXRpb25UYXJnZXQ9dGhpcy5wb3NpdGlvblRhcmdldHx8dGhpcy5fZGVmYXVsdFBvc2l0aW9uVGFyZ2V0LHRoaXMuYXV0b0ZpdE9uQXR0YWNoJiYod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlzcGxheT09PSJub25lIj9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5maXQoKX0uYmluZCh0aGlzKSk6KHdpbmRvdy5TaGFkeURPTSYmU2hhZHlET00uZmx1c2goKSx0aGlzLmZpdCgpKSl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fX2RlZmVycmVkRml0JiYoY2xlYXJUaW1lb3V0KHRoaXMuX19kZWZlcnJlZEZpdCksdGhpcy5fX2RlZmVycmVkRml0PW51bGwpfSxmaXQ6ZnVuY3Rpb24oKXt0aGlzLnBvc2l0aW9uKCksdGhpcy5jb25zdHJhaW4oKSx0aGlzLmNlbnRlcigpfSxfZGlzY292ZXJJbmZvOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX2ZpdEluZm8pe3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5zaXppbmdUYXJnZXQpO3RoaXMuX2ZpdEluZm89e2lubGluZVN0eWxlOnt0b3A6dGhpcy5zdHlsZS50b3B8fCIiLGxlZnQ6dGhpcy5zdHlsZS5sZWZ0fHwiIixwb3NpdGlvbjp0aGlzLnN0eWxlLnBvc2l0aW9ufHwiIn0sc2l6ZXJJbmxpbmVTdHlsZTp7bWF4V2lkdGg6dGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4V2lkdGh8fCIiLG1heEhlaWdodDp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhIZWlnaHR8fCIiLGJveFNpemluZzp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmd8fCIifSxwb3NpdGlvbmVkQnk6e3ZlcnRpY2FsbHk6ZS50b3AhPT0iYXV0byI/InRvcCI6ZS5ib3R0b20hPT0iYXV0byI/ImJvdHRvbSI6bnVsbCxob3Jpem9udGFsbHk6ZS5sZWZ0IT09ImF1dG8iPyJsZWZ0IjplLnJpZ2h0IT09ImF1dG8iPyJyaWdodCI6bnVsbH0sc2l6ZWRCeTp7aGVpZ2h0OnQubWF4SGVpZ2h0IT09Im5vbmUiLHdpZHRoOnQubWF4V2lkdGghPT0ibm9uZSIsbWluV2lkdGg6cGFyc2VJbnQodC5taW5XaWR0aCwxMCl8fDAsbWluSGVpZ2h0OnBhcnNlSW50KHQubWluSGVpZ2h0LDEwKXx8MH0sbWFyZ2luOnt0b3A6cGFyc2VJbnQoZS5tYXJnaW5Ub3AsMTApfHwwLHJpZ2h0OnBhcnNlSW50KGUubWFyZ2luUmlnaHQsMTApfHwwLGJvdHRvbTpwYXJzZUludChlLm1hcmdpbkJvdHRvbSwxMCl8fDAsbGVmdDpwYXJzZUludChlLm1hcmdpbkxlZnQsMTApfHwwfX19fSxyZXNldEZpdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ZpdEluZm98fHt9O2Zvcih2YXIgdCBpbiBlLnNpemVySW5saW5lU3R5bGUpdGhpcy5zaXppbmdUYXJnZXQuc3R5bGVbdF09ZS5zaXplcklubGluZVN0eWxlW3RdO2Zvcih2YXIgdCBpbiBlLmlubGluZVN0eWxlKXRoaXMuc3R5bGVbdF09ZS5pbmxpbmVTdHlsZVt0XTt0aGlzLl9maXRJbmZvPW51bGx9LHJlZml0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsTGVmdCx0PXRoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbFRvcDt0aGlzLnJlc2V0Rml0KCksdGhpcy5maXQoKSx0aGlzLnNpemluZ1RhcmdldC5zY3JvbGxMZWZ0PWUsdGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsVG9wPXR9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19zaG91bGRQb3NpdGlvbilyZXR1cm47dGhpcy5fZGlzY292ZXJJbmZvKCksd2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uZmx1c2goKSx0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zaXppbmdUYXJnZXQuc3R5bGUuYm94U2l6aW5nPSJib3JkZXItYm94Iix0aGlzLnN0eWxlLmxlZnQ9IjBweCIsdGhpcy5zdHlsZS50b3A9IjBweCI7dmFyIGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0PXRoaXMuX19nZXROb3JtYWxpemVkUmVjdCh0aGlzLnBvc2l0aW9uVGFyZ2V0KSxyPXRoaXMuX19nZXROb3JtYWxpemVkUmVjdCh0aGlzLmZpdEludG8pO2xldCBuLGksbyxhO3RoaXMuZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFycyYmKG49dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0V2lkdGgsaT10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRIZWlnaHQsbz10aGlzLnNpemluZ1RhcmdldC5jbGllbnRXaWR0aCxhPXRoaXMuc2l6aW5nVGFyZ2V0LmNsaWVudEhlaWdodCk7dmFyIHM9dGhpcy5fZml0SW5mby5tYXJnaW4sbD17d2lkdGg6ZS53aWR0aCtzLmxlZnQrcy5yaWdodCxoZWlnaHQ6ZS5oZWlnaHQrcy50b3Arcy5ib3R0b219LGM9dGhpcy5fX2dldFBvc2l0aW9uKHRoaXMuX2xvY2FsZUhvcml6b250YWxBbGlnbix0aGlzLnZlcnRpY2FsQWxpZ24sbCxlLHQsciksdT1jLmxlZnQrcy5sZWZ0LGg9Yy50b3Arcy50b3AsZj1NYXRoLm1pbihyLnJpZ2h0LXMucmlnaHQsdStlLndpZHRoKSxwPU1hdGgubWluKHIuYm90dG9tLXMuYm90dG9tLGgrZS5oZWlnaHQpO3U9TWF0aC5tYXgoci5sZWZ0K3MubGVmdCxNYXRoLm1pbih1LGYtdGhpcy5fZml0SW5mby5zaXplZEJ5Lm1pbldpZHRoKSksaD1NYXRoLm1heChyLnRvcCtzLnRvcCxNYXRoLm1pbihoLHAtdGhpcy5fZml0SW5mby5zaXplZEJ5Lm1pbkhlaWdodCkpO2xldCBkPU1hdGgubWF4KGYtdSx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpLGc9TWF0aC5tYXgocC1oLHRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPWQrInB4Iix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhIZWlnaHQ9ZysicHgiO2xldCBfPXUtZS5sZWZ0LHk9aC1lLnRvcDtpZih0aGlzLnN0eWxlLmxlZnQ9YCR7X31weGAsdGhpcy5zdHlsZS50b3A9YCR7eX1weGAsdGhpcy5leHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzKXtsZXQgeD10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRIZWlnaHQsYj10aGlzLnNpemluZ1RhcmdldC5jbGllbnRIZWlnaHQsUz1pLWEsUD14LWItUztpZihQPjApe2xldCBMPXIuaGVpZ2h0LXMudG9wLXMuYm90dG9tLFI9TWF0aC5taW4oTCxnK1ApO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heEhlaWdodD1gJHtSfXB4YDtsZXQgRj10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRIZWlnaHQsej1GLXgsVTtjLnZlcnRpY2FsQWxpZ249PT0idG9wIj9VPXk6Yy52ZXJ0aWNhbEFsaWduPT09Im1pZGRsZSI/VT15LXovMjpjLnZlcnRpY2FsQWxpZ249PT0iYm90dG9tIiYmKFU9eS16KSxVPU1hdGgubWF4KHIudG9wK3MudG9wLE1hdGgubWluKFUsci5ib3R0b20tcy5ib3R0b20tRikpLHRoaXMuc3R5bGUudG9wPWAke1V9cHhgfWxldCBrPXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldFdpZHRoLE89dGhpcy5zaXppbmdUYXJnZXQuY2xpZW50V2lkdGgsRD1uLW8sST1rLU8tRDtpZihJPjApe2xldCBMPXdiZSgpLFI9ci53aWR0aC1zLmxlZnQtcy5yaWdodCxGPU1hdGgubWluKFIsZCtJLUwpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPWAke0Z9cHhgO2xldCB6PXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldFdpZHRoK0wsVT16LWssVztjLmhvcml6b250YWxBbGlnbj09PSJsZWZ0Ij9XPV86Yy5ob3Jpem9udGFsQWxpZ249PT0iY2VudGVyIj9XPV8tVS8yOmMuaG9yaXpvbnRhbEFsaWduPT09InJpZ2h0IiYmKFc9Xy1VKSxXPU1hdGgubWF4KHIubGVmdCtzLmxlZnQsTWF0aC5taW4oVyxyLnJpZ2h0LXMucmlnaHQteikpLHRoaXMuc3R5bGUubGVmdD1gJHtXfXB4YH19fSxjb25zdHJhaW46ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgZT10aGlzLl9maXRJbmZvO2UucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS50b3A9IjBweCIpLGUucG9zaXRpb25lZEJ5Lmhvcml6b250YWxseXx8KHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnN0eWxlLmxlZnQ9IjBweCIpLHRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCI7dmFyIHQ9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLnNpemVkQnkuaGVpZ2h0fHx0aGlzLl9fc2l6ZURpbWVuc2lvbih0LGUucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHksInRvcCIsImJvdHRvbSIsIkhlaWdodCIpLGUuc2l6ZWRCeS53aWR0aHx8dGhpcy5fX3NpemVEaW1lbnNpb24odCxlLnBvc2l0aW9uZWRCeS5ob3Jpem9udGFsbHksImxlZnQiLCJyaWdodCIsIldpZHRoIil9fSxfc2l6ZURpbWVuc2lvbjpmdW5jdGlvbihlLHQscixuLGkpe3RoaXMuX19zaXplRGltZW5zaW9uKGUsdCxyLG4saSl9LF9fc2l6ZURpbWVuc2lvbjpmdW5jdGlvbihlLHQscixuLGkpe3ZhciBvPXRoaXMuX2ZpdEluZm8sYT10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKSxzPWk9PT0iV2lkdGgiP2Eud2lkdGg6YS5oZWlnaHQsbD10PT09bixjPWw/cy1lW25dOmVbcl0sdT1vLm1hcmdpbltsP3I6bl0saD0ib2Zmc2V0IitpLGY9dGhpc1toXS10aGlzLnNpemluZ1RhcmdldFtoXTt0aGlzLnNpemluZ1RhcmdldC5zdHlsZVsibWF4IitpXT1zLXUtYy1mKyJweCJ9LGNlbnRlcjpmdW5jdGlvbigpe2lmKCF0aGlzLl9fc2hvdWxkUG9zaXRpb24pe3RoaXMuX2Rpc2NvdmVySW5mbygpO3ZhciBlPXRoaXMuX2ZpdEluZm8ucG9zaXRpb25lZEJ5O2lmKCEoZS52ZXJ0aWNhbGx5JiZlLmhvcml6b250YWxseSkpe3RoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIixlLnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnRvcD0iMHB4IiksZS5ob3Jpem9udGFsbHl8fCh0aGlzLnN0eWxlLmxlZnQ9IjBweCIpO3ZhciB0PXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKTtpZighZS52ZXJ0aWNhbGx5KXt2YXIgbj1yLnRvcC10LnRvcCsoci5oZWlnaHQtdC5oZWlnaHQpLzI7dGhpcy5zdHlsZS50b3A9bisicHgifWlmKCFlLmhvcml6b250YWxseSl7dmFyIGk9ci5sZWZ0LXQubGVmdCsoci53aWR0aC10LndpZHRoKS8yO3RoaXMuc3R5bGUubGVmdD1pKyJweCJ9fX19LF9fZ2V0Tm9ybWFsaXplZFJlY3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fGU9PT13aW5kb3c/e3RvcDowLGxlZnQ6MCx3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aCxoZWlnaHQ6d2luZG93LmlubmVySGVpZ2h0LHJpZ2h0OndpbmRvdy5pbm5lcldpZHRoLGJvdHRvbTp3aW5kb3cuaW5uZXJIZWlnaHR9OmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9LF9fZ2V0T2Zmc2NyZWVuQXJlYTpmdW5jdGlvbihlLHQscil7dmFyIG49TWF0aC5taW4oMCxlLnRvcCkrTWF0aC5taW4oMCxyLmJvdHRvbS0oZS50b3ArdC5oZWlnaHQpKSxpPU1hdGgubWluKDAsZS5sZWZ0KStNYXRoLm1pbigwLHIucmlnaHQtKGUubGVmdCt0LndpZHRoKSk7cmV0dXJuIE1hdGguYWJzKG4pKnQud2lkdGgrTWF0aC5hYnMoaSkqdC5oZWlnaHR9LF9fZ2V0UG9zaXRpb246ZnVuY3Rpb24oZSx0LHIsbixpLG8pe3ZhciBhPVt7dmVydGljYWxBbGlnbjoidG9wIixob3Jpem9udGFsQWxpZ246ImxlZnQiLHRvcDppLnRvcCt0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6aS5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246InRvcCIsaG9yaXpvbnRhbEFsaWduOiJyaWdodCIsdG9wOmkudG9wK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDppLnJpZ2h0LXIud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSx7dmVydGljYWxBbGlnbjoiYm90dG9tIixob3Jpem9udGFsQWxpZ246ImxlZnQiLHRvcDppLmJvdHRvbS1yLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6aS5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJyaWdodCIsdG9wOmkuYm90dG9tLXIuaGVpZ2h0LXRoaXMudmVydGljYWxPZmZzZXQsbGVmdDppLnJpZ2h0LXIud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0fV07aWYodGhpcy5ub092ZXJsYXApe2Zvcih2YXIgcz0wLGw9YS5sZW5ndGg7czxsO3MrKyl7dmFyIGM9e307Zm9yKHZhciB1IGluIGFbc10pY1t1XT1hW3NdW3VdO2EucHVzaChjKX1hWzBdLnRvcD1hWzFdLnRvcCs9aS5oZWlnaHQsYVsyXS50b3A9YVszXS50b3AtPWkuaGVpZ2h0LGFbNF0ubGVmdD1hWzZdLmxlZnQrPWkud2lkdGgsYVs1XS5sZWZ0PWFbN10ubGVmdC09aS53aWR0aH10PXQ9PT0iYXV0byI/bnVsbDp0LGU9ZT09PSJhdXRvIj9udWxsOmUsKCFlfHxlPT09ImNlbnRlciIpJiYoYS5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6aS50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/aS5oZWlnaHQ6MCksbGVmdDppLmxlZnQtbi53aWR0aC8yK2kud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSxhLnB1c2goe3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLHRvcDppLmJvdHRvbS1yLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LSh0aGlzLm5vT3ZlcmxhcD9pLmhlaWdodDowKSxsZWZ0OmkubGVmdC1uLndpZHRoLzIraS53aWR0aC8yK3RoaXMuaG9yaXpvbnRhbE9mZnNldH0pKSwoIXR8fHQ9PT0ibWlkZGxlIikmJihhLnB1c2goe3ZlcnRpY2FsQWxpZ246Im1pZGRsZSIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6aS50b3Atbi5oZWlnaHQvMitpLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDppLmxlZnQrdGhpcy5ob3Jpem9udGFsT2Zmc2V0Kyh0aGlzLm5vT3ZlcmxhcD9pLndpZHRoOjApfSksYS5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDppLnRvcC1uLmhlaWdodC8yK2kuaGVpZ2h0LzIrdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OmkucmlnaHQtci53aWR0aC10aGlzLmhvcml6b250YWxPZmZzZXQtKHRoaXMubm9PdmVybGFwP2kud2lkdGg6MCl9KSksdD09PSJtaWRkbGUiJiZlPT09ImNlbnRlciImJmEucHVzaCh7dmVydGljYWxBbGlnbjoibWlkZGxlIixob3Jpem9udGFsQWxpZ246ImNlbnRlciIsdG9wOmkudG9wLW4uaGVpZ2h0LzIraS5oZWlnaHQvMit0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6aS5sZWZ0LW4ud2lkdGgvMitpLndpZHRoLzIrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSk7Zm9yKHZhciBoLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGY9YVtzXSxwPWYudmVydGljYWxBbGlnbj09PXQsZD1mLmhvcml6b250YWxBbGlnbj09PWU7aWYoIXRoaXMuZHluYW1pY0FsaWduJiYhdGhpcy5ub092ZXJsYXAmJnAmJmQpe2g9ZjticmVha312YXIgZz0oIXR8fHApJiYoIWV8fGQpO2lmKCEoIXRoaXMuZHluYW1pY0FsaWduJiYhZykpe2lmKGYub2Zmc2NyZWVuQXJlYT10aGlzLl9fZ2V0T2Zmc2NyZWVuQXJlYShmLHIsbyksZi5vZmZzY3JlZW5BcmVhPT09MCYmZyl7aD1mO2JyZWFrfWg9aHx8Zjt2YXIgXz1mLm9mZnNjcmVlbkFyZWEtaC5vZmZzY3JlZW5BcmVhOyhfPDB8fF89PT0wJiYocHx8ZCkpJiYoaD1mKX19cmV0dXJuIGh9fTt2YXIgWHg9RWxlbWVudC5wcm90b3R5cGUseDk9WHgubWF0Y2hlc3x8WHgubWF0Y2hlc1NlbGVjdG9yfHxYeC5tb3pNYXRjaGVzU2VsZWN0b3J8fFh4Lm1zTWF0Y2hlc1NlbGVjdG9yfHxYeC5vTWF0Y2hlc1NlbGVjdG9yfHxYeC53ZWJraXRNYXRjaGVzU2VsZWN0b3IscFc9Y2xhc3N7Z2V0VGFiYmFibGVOb2Rlcyh0KXt2YXIgcj1bXSxuPXRoaXMuX2NvbGxlY3RUYWJiYWJsZU5vZGVzKHQscik7cmV0dXJuIG4/dGhpcy5fc29ydEJ5VGFiSW5kZXgocik6cn1pc0ZvY3VzYWJsZSh0KXtyZXR1cm4geDkuY2FsbCh0LCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgYnV0dG9uLCBvYmplY3QiKT94OS5jYWxsKHQsIjpub3QoW2Rpc2FibGVkXSkiKTp4OS5jYWxsKHQsImFbaHJlZl0sIGFyZWFbaHJlZl0sIGlmcmFtZSwgW3RhYmluZGV4XSwgW2NvbnRlbnRFZGl0YWJsZV0iKX1pc1RhYmJhYmxlKHQpe3JldHVybiB0aGlzLmlzRm9jdXNhYmxlKHQpJiZ4OS5jYWxsKHQsJzpub3QoW3RhYmluZGV4PSItMSJdKScpJiZ0aGlzLl9pc1Zpc2libGUodCl9X25vcm1hbGl6ZWRUYWJJbmRleCh0KXtpZih0aGlzLmlzRm9jdXNhYmxlKHQpKXt2YXIgcj10LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8MDtyZXR1cm4gTnVtYmVyKHIpfXJldHVybi0xfV9jb2xsZWN0VGFiYmFibGVOb2Rlcyh0LHIpe2lmKHQubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4hMTt2YXIgbj10O2lmKCF0aGlzLl9pc1Zpc2libGUobikpcmV0dXJuITE7dmFyIGk9dGhpcy5fbm9ybWFsaXplZFRhYkluZGV4KG4pLG89aT4wO2k+PTAmJnIucHVzaChuKTt2YXIgYTtuLmxvY2FsTmFtZT09PSJjb250ZW50Inx8bi5sb2NhbE5hbWU9PT0ic2xvdCI/YT16dChuKS5nZXREaXN0cmlidXRlZE5vZGVzKCk6YT16dChuLnJvb3R8fG4pLmNoaWxkcmVuO2Zvcih2YXIgcz0wO3M8YS5sZW5ndGg7cysrKW89dGhpcy5fY29sbGVjdFRhYmJhYmxlTm9kZXMoYVtzXSxyKXx8bztyZXR1cm4gb31faXNWaXNpYmxlKHQpe3ZhciByPXQuc3R5bGU7cmV0dXJuIHIudmlzaWJpbGl0eSE9PSJoaWRkZW4iJiZyLmRpc3BsYXkhPT0ibm9uZSI/KHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCksci52aXNpYmlsaXR5IT09ImhpZGRlbiImJnIuZGlzcGxheSE9PSJub25lIik6ITF9X3NvcnRCeVRhYkluZGV4KHQpe3ZhciByPXQubGVuZ3RoO2lmKHI8MilyZXR1cm4gdDt2YXIgbj1NYXRoLmNlaWwoci8yKSxpPXRoaXMuX3NvcnRCeVRhYkluZGV4KHQuc2xpY2UoMCxuKSksbz10aGlzLl9zb3J0QnlUYWJJbmRleCh0LnNsaWNlKG4pKTtyZXR1cm4gdGhpcy5fbWVyZ2VTb3J0QnlUYWJJbmRleChpLG8pfV9tZXJnZVNvcnRCeVRhYkluZGV4KHQscil7Zm9yKHZhciBuPVtdO3QubGVuZ3RoPjAmJnIubGVuZ3RoPjA7KXRoaXMuX2hhc0xvd2VyVGFiT3JkZXIodFswXSxyWzBdKT9uLnB1c2goci5zaGlmdCgpKTpuLnB1c2godC5zaGlmdCgpKTtyZXR1cm4gbi5jb25jYXQodCxyKX1faGFzTG93ZXJUYWJPcmRlcih0LHIpe3ZhciBuPU1hdGgubWF4KHQudGFiSW5kZXgsMCksaT1NYXRoLm1heChyLnRhYkluZGV4LDApO3JldHVybiBuPT09MHx8aT09PTA/aT5uOm4+aX19LGgwdD1uZXcgcFc7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pcm9uLW92ZXJsYXktYmFja2Ryb3AtYmFja2dyb3VuZC1jb2xvciwgIzAwMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0taXJvbi1vdmVybGF5LWJhY2tkcm9wOwogICAgICB9CgogICAgICA6aG9zdCgub3BlbmVkKSB7CiAgICAgICAgb3BhY2l0eTogdmFyKC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLW9wYWNpdHksIDAuNik7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgQGFwcGx5IC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLW9wZW5lZDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6Imlyb24tb3ZlcmxheS1iYWNrZHJvcCIscHJvcGVydGllczp7b3BlbmVkOntyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6e3RyYW5zaXRpb25lbmQ6Il9vblRyYW5zaXRpb25lbmQifSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fX29wZW5lZFJhZj1udWxsfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiZ0aGlzLl9vcGVuZWRDaGFuZ2VkKHRoaXMub3BlbmVkKX0scHJlcGFyZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiYhdGhpcy5wYXJlbnROb2RlJiZ6dChkb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZCh0aGlzKX0sb3BlbjpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSEwfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSExfSxjb21wbGV0ZTpmdW5jdGlvbigpeyF0aGlzLm9wZW5lZCYmdGhpcy5wYXJlbnROb2RlPT09ZG9jdW1lbnQuYm9keSYmenQodGhpcy5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzKX0sX29uVHJhbnNpdGlvbmVuZDpmdW5jdGlvbihlKXtlJiZlLnRhcmdldD09PXRoaXMmJnRoaXMuY29tcGxldGUoKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oZSl7aWYoZSl0aGlzLnByZXBhcmUoKTtlbHNle3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpOyh0LnRyYW5zaXRpb25EdXJhdGlvbj09PSIwcyJ8fHQub3BhY2l0eT09MCkmJnRoaXMuY29tcGxldGUoKX0hdGhpcy5pc0F0dGFjaGVkfHwodGhpcy5fX29wZW5lZFJhZiYmKHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fb3BlbmVkUmFmKSx0aGlzLl9fb3BlbmVkUmFmPW51bGwpLHRoaXMuc2Nyb2xsVG9wPXRoaXMuc2Nyb2xsVG9wLHRoaXMuX19vcGVuZWRSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe3RoaXMuX19vcGVuZWRSYWY9bnVsbCx0aGlzLnRvZ2dsZUNsYXNzKCJvcGVuZWQiLHRoaXMub3BlbmVkKX0uYmluZCh0aGlzKSkpfX0pO3ZhciBkVz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX292ZXJsYXlzPVtdLHRoaXMuX21pbmltdW1aPTEwMSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9bnVsbCxFbShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsInRhcCIsZnVuY3Rpb24oKXt9KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLHRoaXMuX29uQ2FwdHVyZUNsaWNrLmJpbmQodGhpcyksITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9vbkNhcHR1cmVGb2N1cy5iaW5kKHRoaXMpLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbkNhcHR1cmVLZXlEb3duLmJpbmQodGhpcyksITApfWdldCBiYWNrZHJvcEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BFbGVtZW50fHwodGhpcy5fYmFja2Ryb3BFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tb3ZlcmxheS1iYWNrZHJvcCIpKSx0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGRlZXBBY3RpdmVFbGVtZW50KCl7dmFyIHQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtmb3IoKCF0fHwhKHQgaW5zdGFuY2VvZiBFbGVtZW50KSkmJih0PWRvY3VtZW50LmJvZHkpO3Qucm9vdCYmenQodC5yb290KS5hY3RpdmVFbGVtZW50Oyl0PXp0KHQucm9vdCkuYWN0aXZlRWxlbWVudDtyZXR1cm4gdH1fYnJpbmdPdmVybGF5QXRJbmRleFRvRnJvbnQodCl7dmFyIHI9dGhpcy5fb3ZlcmxheXNbdF07aWYoISFyKXt2YXIgbj10aGlzLl9vdmVybGF5cy5sZW5ndGgtMSxpPXRoaXMuX292ZXJsYXlzW25dO2lmKGkmJnRoaXMuX3Nob3VsZEJlQmVoaW5kT3ZlcmxheShyLGkpJiZuLS0sISh0Pj1uKSl7dmFyIG89TWF0aC5tYXgodGhpcy5jdXJyZW50T3ZlcmxheVooKSx0aGlzLl9taW5pbXVtWik7Zm9yKHRoaXMuX2dldFoocik8PW8mJnRoaXMuX2FwcGx5T3ZlcmxheVoocixvKTt0PG47KXRoaXMuX292ZXJsYXlzW3RdPXRoaXMuX292ZXJsYXlzW3QrMV0sdCsrO3RoaXMuX292ZXJsYXlzW25dPXJ9fX1hZGRPclJlbW92ZU92ZXJsYXkodCl7dC5vcGVuZWQ/dGhpcy5hZGRPdmVybGF5KHQpOnRoaXMucmVtb3ZlT3ZlcmxheSh0KX1hZGRPdmVybGF5KHQpe3ZhciByPXRoaXMuX292ZXJsYXlzLmluZGV4T2YodCk7aWYocj49MCl7dGhpcy5fYnJpbmdPdmVybGF5QXRJbmRleFRvRnJvbnQociksdGhpcy50cmFja0JhY2tkcm9wKCk7cmV0dXJufXZhciBuPXRoaXMuX292ZXJsYXlzLmxlbmd0aCxpPXRoaXMuX292ZXJsYXlzW24tMV0sbz1NYXRoLm1heCh0aGlzLl9nZXRaKGkpLHRoaXMuX21pbmltdW1aKSxhPXRoaXMuX2dldFoodCk7aWYoaSYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KHQsaSkpe3RoaXMuX2FwcGx5T3ZlcmxheVooaSxvKSxuLS07dmFyIHM9dGhpcy5fb3ZlcmxheXNbbi0xXTtvPU1hdGgubWF4KHRoaXMuX2dldFoocyksdGhpcy5fbWluaW11bVopfWE8PW8mJnRoaXMuX2FwcGx5T3ZlcmxheVoodCxvKSx0aGlzLl9vdmVybGF5cy5zcGxpY2UobiwwLHQpLHRoaXMudHJhY2tCYWNrZHJvcCgpfXJlbW92ZU92ZXJsYXkodCl7dmFyIHI9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZih0KTtyIT09LTEmJih0aGlzLl9vdmVybGF5cy5zcGxpY2UociwxKSx0aGlzLnRyYWNrQmFja2Ryb3AoKSl9Y3VycmVudE92ZXJsYXkoKXt2YXIgdD10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTtyZXR1cm4gdGhpcy5fb3ZlcmxheXNbdF19Y3VycmVudE92ZXJsYXlaKCl7cmV0dXJuIHRoaXMuX2dldFoodGhpcy5jdXJyZW50T3ZlcmxheSgpKX1lbnN1cmVNaW5pbXVtWih0KXt0aGlzLl9taW5pbXVtWj1NYXRoLm1heCh0aGlzLl9taW5pbXVtWix0KX1mb2N1c092ZXJsYXkoKXt2YXIgdD10aGlzLmN1cnJlbnRPdmVybGF5KCk7dCYmdC5fYXBwbHlGb2N1cygpfXRyYWNrQmFja2Ryb3AoKXt2YXIgdD10aGlzLl9vdmVybGF5V2l0aEJhY2tkcm9wKCk7IXQmJiF0aGlzLl9iYWNrZHJvcEVsZW1lbnR8fCh0aGlzLmJhY2tkcm9wRWxlbWVudC5zdHlsZS56SW5kZXg9dGhpcy5fZ2V0Wih0KS0xLHRoaXMuYmFja2Ryb3BFbGVtZW50Lm9wZW5lZD0hIXQsdGhpcy5iYWNrZHJvcEVsZW1lbnQucHJlcGFyZSgpKX1nZXRCYWNrZHJvcHMoKXtmb3IodmFyIHQ9W10scj0wO3I8dGhpcy5fb3ZlcmxheXMubGVuZ3RoO3IrKyl0aGlzLl9vdmVybGF5c1tyXS53aXRoQmFja2Ryb3AmJnQucHVzaCh0aGlzLl9vdmVybGF5c1tyXSk7cmV0dXJuIHR9YmFja2Ryb3BaKCl7cmV0dXJuIHRoaXMuX2dldFoodGhpcy5fb3ZlcmxheVdpdGhCYWNrZHJvcCgpKS0xfV9vdmVybGF5V2l0aEJhY2tkcm9wKCl7Zm9yKHZhciB0PXRoaXMuX292ZXJsYXlzLmxlbmd0aC0xO3Q+PTA7dC0tKWlmKHRoaXMuX292ZXJsYXlzW3RdLndpdGhCYWNrZHJvcClyZXR1cm4gdGhpcy5fb3ZlcmxheXNbdF19X2dldFoodCl7dmFyIHI9dGhpcy5fbWluaW11bVo7aWYodCl7dmFyIG49TnVtYmVyKHQuc3R5bGUuekluZGV4fHx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KS56SW5kZXgpO249PT1uJiYocj1uKX1yZXR1cm4gcn1fc2V0Wih0LHIpe3Quc3R5bGUuekluZGV4PXJ9X2FwcGx5T3ZlcmxheVoodCxyKXt0aGlzLl9zZXRaKHQscisyKX1fb3ZlcmxheUluUGF0aCh0KXt0PXR8fFtdO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKWlmKHRbcl0uX21hbmFnZXI9PT10aGlzKXJldHVybiB0W3JdfV9vbkNhcHR1cmVDbGljayh0KXt2YXIgcj10aGlzLl9vdmVybGF5cy5sZW5ndGgtMTtpZihyIT09LTEpZm9yKHZhciBuPXp0KHQpLnBhdGgsaTsoaT10aGlzLl9vdmVybGF5c1tyXSkmJnRoaXMuX292ZXJsYXlJblBhdGgobikhPT1pJiYoaS5fb25DYXB0dXJlQ2xpY2sodCksaS5hbGxvd0NsaWNrVGhyb3VnaCk7KXItLX1fb25DYXB0dXJlRm9jdXModCl7dmFyIHI9dGhpcy5jdXJyZW50T3ZlcmxheSgpO3ImJnIuX29uQ2FwdHVyZUZvY3VzKHQpfV9vbkNhcHR1cmVLZXlEb3duKHQpe3ZhciByPXRoaXMuY3VycmVudE92ZXJsYXkoKTtyJiYoRG8ua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsImVzYyIpP3IuX29uQ2FwdHVyZUVzYyh0KTpEby5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXModCwidGFiIikmJnIuX29uQ2FwdHVyZVRhYih0KSl9X3Nob3VsZEJlQmVoaW5kT3ZlcmxheSh0LHIpe3JldHVybiF0LmFsd2F5c09uVG9wJiZyLmFsd2F5c09uVG9wfX0sZjB0PW5ldyBkVzt2YXIgdzk9e3BhZ2VYOjAscGFnZVk6MH0scDB0PW51bGwsbVc9W10sUzk9WyJ3aGVlbCIsIm1vdXNld2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiXSxiOSxnVztmdW5jdGlvbiBkMHQoZSl7VGguaW5kZXhPZihlKT49MHx8KFRoLmxlbmd0aD09PTAmJk1iZSgpLFRoLnB1c2goZSksZ1c9VGhbVGgubGVuZ3RoLTFdLGcwdD1bXSxfMHQ9W10pfWZ1bmN0aW9uIG0wdChlKXt2YXIgdD1UaC5pbmRleE9mKGUpO3QhPT0tMSYmKFRoLnNwbGljZSh0LDEpLGdXPVRoW1RoLmxlbmd0aC0xXSxnMHQ9W10sXzB0PVtdLFRoLmxlbmd0aD09PTAmJkViZSgpKX12YXIgVGg9W10sZzB0PW51bGwsXzB0PW51bGw7ZnVuY3Rpb24gU2JlKGUpe2lmKGUuY2FuY2VsYWJsZSYmVGJlKGUpJiZlLnByZXZlbnREZWZhdWx0KCksZS50YXJnZXRUb3VjaGVzKXt2YXIgdD1lLnRhcmdldFRvdWNoZXNbMF07dzkucGFnZVg9dC5wYWdlWCx3OS5wYWdlWT10LnBhZ2VZfX1mdW5jdGlvbiBNYmUoKXtiOT1iOXx8U2JlLmJpbmQodm9pZCAwKTtmb3IodmFyIGU9MCx0PVM5Lmxlbmd0aDtlPHQ7ZSsrKWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoUzlbZV0sYjkse2NhcHR1cmU6ITAscGFzc2l2ZTohMX0pfWZ1bmN0aW9uIEViZSgpe2Zvcih2YXIgZT0wLHQ9UzkubGVuZ3RoO2U8dDtlKyspZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihTOVtlXSxiOSx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSl9ZnVuY3Rpb24gVGJlKGUpe3ZhciB0PXp0KGUpLnJvb3RUYXJnZXQ7aWYoZS50eXBlIT09InRvdWNobW92ZSImJnAwdCE9PXQmJihwMHQ9dCxtVz1DYmUoenQoZSkucGF0aCkpLCFtVy5sZW5ndGgpcmV0dXJuITA7aWYoZS50eXBlPT09InRvdWNoc3RhcnQiKXJldHVybiExO3ZhciByPVBiZShlKTtyZXR1cm4hQWJlKG1XLHIuZGVsdGFYLHIuZGVsdGFZKX1mdW5jdGlvbiBDYmUoZSl7Zm9yKHZhciB0PVtdLHI9ZS5pbmRleE9mKGdXKSxuPTA7bjw9cjtuKyspaWYoZVtuXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXt2YXIgaT1lW25dLG89aS5zdHlsZTtvLm92ZXJmbG93IT09InNjcm9sbCImJm8ub3ZlcmZsb3chPT0iYXV0byImJihvPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGkpKSwoby5vdmVyZmxvdz09PSJzY3JvbGwifHxvLm92ZXJmbG93PT09ImF1dG8iKSYmdC5wdXNoKGkpfXJldHVybiB0fWZ1bmN0aW9uIEFiZShlLHQscil7aWYoISghdCYmIXIpKWZvcih2YXIgbj1NYXRoLmFicyhyKT49TWF0aC5hYnModCksaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldLGE9ITE7aWYobj9hPXI8MD9vLnNjcm9sbFRvcD4wOm8uc2Nyb2xsVG9wPG8uc2Nyb2xsSGVpZ2h0LW8uY2xpZW50SGVpZ2h0OmE9dDwwP28uc2Nyb2xsTGVmdD4wOm8uc2Nyb2xsTGVmdDxvLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGgsYSlyZXR1cm4gb319ZnVuY3Rpb24gUGJlKGUpe3ZhciB0PXtkZWx0YVg6ZS5kZWx0YVgsZGVsdGFZOmUuZGVsdGFZfTtpZighKCJkZWx0YVgiaW4gZSkpe2lmKCJ3aGVlbERlbHRhWCJpbiBlJiYid2hlZWxEZWx0YVkiaW4gZSl0LmRlbHRhWD0tZS53aGVlbERlbHRhWCx0LmRlbHRhWT0tZS53aGVlbERlbHRhWTtlbHNlIGlmKCJ3aGVlbERlbHRhImluIGUpdC5kZWx0YVg9MCx0LmRlbHRhWT0tZS53aGVlbERlbHRhO2Vsc2UgaWYoImF4aXMiaW4gZSl0LmRlbHRhWD1lLmF4aXM9PT0xP2UuZGV0YWlsOjAsdC5kZWx0YVk9ZS5heGlzPT09Mj9lLmRldGFpbDowO2Vsc2UgaWYoZS50YXJnZXRUb3VjaGVzKXt2YXIgcj1lLnRhcmdldFRvdWNoZXNbMF07dC5kZWx0YVg9dzkucGFnZVgtci5wYWdlWCx0LmRlbHRhWT13OS5wYWdlWS1yLnBhZ2VZfX1yZXR1cm4gdH12YXIgUG09e3Byb3BlcnRpZXM6e29wZW5lZDp7b2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIix0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxjYW5jZWxlZDp7b2JzZXJ2ZXI6Il9jYW5jZWxlZENoYW5nZWQiLHJlYWRPbmx5OiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMX0sd2l0aEJhY2tkcm9wOntvYnNlcnZlcjoiX3dpdGhCYWNrZHJvcENoYW5nZWQiLHR5cGU6Qm9vbGVhbn0sbm9BdXRvRm9jdXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9DYW5jZWxPbkVzY0tleTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0NhbmNlbE9uT3V0c2lkZUNsaWNrOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NpbmdSZWFzb246e3R5cGU6T2JqZWN0fSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsbG93Q2xpY2tUaHJvdWdoOnt0eXBlOkJvb2xlYW59LGFsd2F5c09uVG9wOnt0eXBlOkJvb2xlYW59LHNjcm9sbEFjdGlvbjp7dHlwZTpTdHJpbmd9LF9tYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTpmMHR9LF9mb2N1c2VkQ2hpbGQ6e3R5cGU6T2JqZWN0fX0sbGlzdGVuZXJzOnsiaXJvbi1yZXNpemUiOiJfb25Jcm9uUmVzaXplIn0sb2JzZXJ2ZXJzOlsiX191cGRhdGVTY3JvbGxPYnNlcnZlcnMoaXNBdHRhY2hlZCwgb3BlbmVkLCBzY3JvbGxBY3Rpb24pIl0sZ2V0IGJhY2tkcm9wRWxlbWVudCgpe3JldHVybiB0aGlzLl9tYW5hZ2VyLmJhY2tkcm9wRWxlbWVudH0sZ2V0IF9mb2N1c05vZGUoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZENoaWxkfHx6dCh0aGlzKS5xdWVyeVNlbGVjdG9yKCJbYXV0b2ZvY3VzXSIpfHx0aGlzfSxnZXQgX2ZvY3VzYWJsZU5vZGVzKCl7cmV0dXJuIGgwdC5nZXRUYWJiYWJsZU5vZGVzKHRoaXMpfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX19pc0FuaW1hdGluZz0hMSx0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXg9ITEsdGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZT10aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU9bnVsbCx0aGlzLl9fcmFmcz17fSx0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZT1udWxsLHRoaXMuX19zY3JvbGxUb3A9dGhpcy5fX3Njcm9sbExlZnQ9bnVsbCx0aGlzLl9fb25DYXB0dXJlU2Nyb2xsPXRoaXMuX19vbkNhcHR1cmVTY3JvbGwuYmluZCh0aGlzKSx0aGlzLl9fcm9vdE5vZGVzPW51bGwsdGhpcy5fZW5zdXJlU2V0dXAoKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5fb3BlbmVkQ2hhbmdlZCh0aGlzLm9wZW5lZCksdGhpcy5fb2JzZXJ2ZXI9enQodGhpcykub2JzZXJ2ZU5vZGVzKHRoaXMuX29uTm9kZXNDaGFuZ2UpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZ6dCh0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fb2JzZXJ2ZXI9bnVsbDtmb3IodmFyIGUgaW4gdGhpcy5fX3JhZnMpdGhpcy5fX3JhZnNbZV0hPT1udWxsJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9fcmFmc1tlXSk7dGhpcy5fX3JhZnM9e30sdGhpcy5fbWFuYWdlci5yZW1vdmVPdmVybGF5KHRoaXMpLHRoaXMuX19pc0FuaW1hdGluZyYmKHRoaXMub3BlbmVkP3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpOih0aGlzLl9hcHBseUZvY3VzKCksdGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCkpKX0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Q2FuY2VsZWQoITEpLHRoaXMub3BlbmVkPSF0aGlzLm9wZW5lZH0sb3BlbjpmdW5jdGlvbigpe3RoaXMuX3NldENhbmNlbGVkKCExKSx0aGlzLm9wZW5lZD0hMH0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLl9zZXRDYW5jZWxlZCghMSksdGhpcy5vcGVuZWQ9ITF9LGNhbmNlbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpcmUoImlyb24tb3ZlcmxheS1jYW5jZWxlZCIsZSx7Y2FuY2VsYWJsZTohMH0pO3QuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX3NldENhbmNlbGVkKCEwKSx0aGlzLm9wZW5lZD0hMSl9LGludmFsaWRhdGVUYWJiYWJsZXM6ZnVuY3Rpb24oKXt0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlPXRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZT1udWxsfSxfZW5zdXJlU2V0dXA6ZnVuY3Rpb24oKXt0aGlzLl9vdmVybGF5U2V0dXB8fCh0aGlzLl9vdmVybGF5U2V0dXA9ITAsdGhpcy5zdHlsZS5vdXRsaW5lPSJub25lIix0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oZSl7ZT90aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fX2lzQW5pbWF0aW5nPSEwLHRoaXMuX19kZXJhZigiX19vcGVuZWRDaGFuZ2VkIix0aGlzLl9fb3BlbmVkQ2hhbmdlZCkpfSxfY2FuY2VsZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5jbG9zaW5nUmVhc29uPXRoaXMuY2xvc2luZ1JlYXNvbnx8e30sdGhpcy5jbG9zaW5nUmVhc29uLmNhbmNlbGVkPXRoaXMuY2FuY2VsZWR9LF93aXRoQmFja2Ryb3BDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy53aXRoQmFja2Ryb3AmJiF0aGlzLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKT8odGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXg9ITApOnRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleCYmKHRoaXMucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpLHRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleD0hMSksdGhpcy5vcGVuZWQmJnRoaXMuaXNBdHRhY2hlZCYmdGhpcy5fbWFuYWdlci50cmFja0JhY2tkcm9wKCl9LF9wcmVwYXJlUmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5fX3Jlc3RvcmVGb2N1c05vZGU9dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudCx0aGlzLl9wcmVwYXJlUG9zaXRpb25pbmcoKSx0aGlzLnJlZml0KCksdGhpcy5fZmluaXNoUG9zaXRpb25pbmcoKSx0aGlzLm5vQXV0b0ZvY3VzJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dGhpcy5fZm9jdXNOb2RlJiYodGhpcy5fZm9jdXNOb2RlLmJsdXIoKSx0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZS5mb2N1cygpKX0sX3JlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpfSxfcmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9LF9maW5pc2hSZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pc0FuaW1hdGluZz0hMSx0aGlzLmZpcmUoImlyb24tb3ZlcmxheS1vcGVuZWQiKX0sX2ZpbmlzaFJlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zdHlsZS56SW5kZXg9IiIsdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9faXNBbmltYXRpbmc9ITEsdGhpcy5maXJlKCJpcm9uLW92ZXJsYXktY2xvc2VkIix0aGlzLmNsb3NpbmdSZWFzb24pfSxfcHJlcGFyZVBvc2l0aW9uaW5nOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uPXRoaXMuc3R5bGUud2Via2l0VHJhbnNpdGlvbj0ibm9uZSIsdGhpcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5zdHlsZS53ZWJraXRUcmFuc2Zvcm09Im5vbmUiLHRoaXMuc3R5bGUuZGlzcGxheT0iIn0sX2ZpbmlzaFBvc2l0aW9uaW5nOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcCx0aGlzLnN0eWxlLnRyYW5zaXRpb249dGhpcy5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSIiLHRoaXMuc3R5bGUudHJhbnNmb3JtPXRoaXMuc3R5bGUud2Via2l0VHJhbnNmb3JtPSIiLHRoaXMuc3R5bGUuZGlzcGxheT0iIix0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcH0sX2FwcGx5Rm9jdXM6ZnVuY3Rpb24oKXtpZih0aGlzLm9wZW5lZCl0aGlzLm5vQXV0b0ZvY3VzfHx0aGlzLl9mb2N1c05vZGUuZm9jdXMoKTtlbHNle2lmKHRoaXMucmVzdG9yZUZvY3VzT25DbG9zZSYmdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGUpe3ZhciBlPXRoaXMuX21hbmFnZXIuZGVlcEFjdGl2ZUVsZW1lbnQ7KGU9PT1kb2N1bWVudC5ib2R5fHxMYmUodGhpcyxlKSkmJnRoaXMuX19yZXN0b3JlRm9jdXNOb2RlLmZvY3VzKCl9dGhpcy5fX3Jlc3RvcmVGb2N1c05vZGU9bnVsbCx0aGlzLl9mb2N1c05vZGUuYmx1cigpLHRoaXMuX2ZvY3VzZWRDaGlsZD1udWxsfX0sX29uQ2FwdHVyZUNsaWNrOmZ1bmN0aW9uKGUpe3RoaXMubm9DYW5jZWxPbk91dHNpZGVDbGlja3x8dGhpcy5jYW5jZWwoZSl9LF9vbkNhcHR1cmVGb2N1czpmdW5jdGlvbihlKXtpZighIXRoaXMud2l0aEJhY2tkcm9wKXt2YXIgdD16dChlKS5wYXRoO3QuaW5kZXhPZih0aGlzKT09PS0xPyhlLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX2FwcGx5Rm9jdXMoKSk6dGhpcy5fZm9jdXNlZENoaWxkPXRbMF19fSxfb25DYXB0dXJlRXNjOmZ1bmN0aW9uKGUpe3RoaXMubm9DYW5jZWxPbkVzY0tleXx8dGhpcy5jYW5jZWwoZSl9LF9vbkNhcHR1cmVUYWI6ZnVuY3Rpb24oZSl7aWYoISF0aGlzLndpdGhCYWNrZHJvcCl7dGhpcy5fX2Vuc3VyZUZpcnN0TGFzdEZvY3VzYWJsZXMoKTt2YXIgdD1lLnNoaWZ0S2V5LHI9dD90aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlOnRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZSxuPXQ/dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlOnRoaXMuX19maXJzdEZvY3VzYWJsZU5vZGUsaT0hMTtpZihyPT09bilpPSEwO2Vsc2V7dmFyIG89dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudDtpPW89PT1yfHxvPT09dGhpc31pJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzZWRDaGlsZD1uLHRoaXMuX2FwcGx5Rm9jdXMoKSl9fSxfb25Jcm9uUmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJiF0aGlzLl9faXNBbmltYXRpbmcmJnRoaXMuX19kZXJhZigicmVmaXQiLHRoaXMucmVmaXQpfSxfb25Ob2Rlc0NoYW5nZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiYhdGhpcy5fX2lzQW5pbWF0aW5nJiYodGhpcy5pbnZhbGlkYXRlVGFiYmFibGVzKCksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9fZW5zdXJlRmlyc3RMYXN0Rm9jdXNhYmxlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ZvY3VzYWJsZU5vZGVzO3RoaXMuX19maXJzdEZvY3VzYWJsZU5vZGU9ZVswXSx0aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU9ZVtlLmxlbmd0aC0xXX0sX19vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/KHRoaXMuX3ByZXBhcmVSZW5kZXJPcGVuZWQoKSx0aGlzLl9tYW5hZ2VyLmFkZE92ZXJsYXkodGhpcyksdGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX3JlbmRlck9wZW5lZCgpKToodGhpcy5fbWFuYWdlci5yZW1vdmVPdmVybGF5KHRoaXMpLHRoaXMuX2FwcGx5Rm9jdXMoKSx0aGlzLl9yZW5kZXJDbG9zZWQoKSl9LF9fZGVyYWY6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9fcmFmcztyW2VdIT09bnVsbCYmY2FuY2VsQW5pbWF0aW9uRnJhbWUocltlXSkscltlXT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtyW2VdPW51bGwsdC5jYWxsKHRoaXMpfS5iaW5kKHRoaXMpKX0sX191cGRhdGVTY3JvbGxPYnNlcnZlcnM6ZnVuY3Rpb24oZSx0LHIpeyFlfHwhdHx8IXRoaXMuX19pc1ZhbGlkU2Nyb2xsQWN0aW9uKHIpPyhtMHQodGhpcyksdGhpcy5fX3JlbW92ZVNjcm9sbExpc3RlbmVycygpKToocj09PSJsb2NrIiYmKHRoaXMuX19zYXZlU2Nyb2xsUG9zaXRpb24oKSxkMHQodGhpcykpLHRoaXMuX19hZGRTY3JvbGxMaXN0ZW5lcnMoKSl9LF9fYWRkU2Nyb2xsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19yb290Tm9kZXMpe2lmKHRoaXMuX19yb290Tm9kZXM9W10sY18pZm9yKHZhciBlPXRoaXM7ZTspZS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSYmZS5ob3N0JiZ0aGlzLl9fcm9vdE5vZGVzLnB1c2goZSksZT1lLmhvc3R8fGUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGU7dGhpcy5fX3Jvb3ROb2Rlcy5wdXNoKGRvY3VtZW50KX10aGlzLl9fcm9vdE5vZGVzLmZvckVhY2goZnVuY3Rpb24odCl7dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19vbkNhcHR1cmVTY3JvbGwse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pfSx0aGlzKX0sX19yZW1vdmVTY3JvbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0aGlzLl9fcm9vdE5vZGVzJiZ0aGlzLl9fcm9vdE5vZGVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19vbkNhcHR1cmVTY3JvbGwse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pfSx0aGlzKSx0aGlzLmlzQXR0YWNoZWR8fCh0aGlzLl9fcm9vdE5vZGVzPW51bGwpfSxfX2lzVmFsaWRTY3JvbGxBY3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0ibG9jayJ8fGU9PT0icmVmaXQifHxlPT09ImNhbmNlbCJ9LF9fb25DYXB0dXJlU2Nyb2xsOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLl9faXNBbmltYXRpbmcmJiEoenQoZSkucGF0aC5pbmRleE9mKHRoaXMpPj0wKSlzd2l0Y2godGhpcy5zY3JvbGxBY3Rpb24pe2Nhc2UibG9jayI6dGhpcy5fX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbigpO2JyZWFrO2Nhc2UicmVmaXQiOnRoaXMuX19kZXJhZigicmVmaXQiLHRoaXMucmVmaXQpO2JyZWFrO2Nhc2UiY2FuY2VsIjp0aGlzLmNhbmNlbChlKTticmVha319LF9fc2F2ZVNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudD8odGhpcy5fX3Njcm9sbFRvcD1kb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCx0aGlzLl9fc2Nyb2xsTGVmdD1kb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbExlZnQpOih0aGlzLl9fc2Nyb2xsVG9wPU1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AsZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApLHRoaXMuX19zY3JvbGxMZWZ0PU1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdCkpfSxfX3Jlc3RvcmVTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbigpe2RvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ/KGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsVG9wPXRoaXMuX19zY3JvbGxUb3AsZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0PXRoaXMuX19zY3JvbGxMZWZ0KTooZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcD1kb2N1bWVudC5ib2R5LnNjcm9sbFRvcD10aGlzLl9fc2Nyb2xsVG9wLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0PWRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdD10aGlzLl9fc2Nyb2xsTGVmdCl9fSxJYmU9ZT0+ZS5hc3NpZ25lZFNsb3R8fGUucGFyZW50Tm9kZXx8ZS5ob3N0LExiZT0oZSx0KT0+e2ZvcihsZXQgcj10O3I7cj1JYmUocikpaWYocj09PWUpcmV0dXJuITA7cmV0dXJuITF9LCR4PVt1MHQsWnMsUG1dO3ZhciBfVz17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImRpYWxvZyIsdGFiaW5kZXg6Ii0xIn0scHJvcGVydGllczp7bW9kYWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX19yZWFkaWVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxvYnNlcnZlcnM6WyJfbW9kYWxDaGFuZ2VkKG1vZGFsLCBfX3JlYWRpZWQpIl0sbGlzdGVuZXJzOnt0YXA6Il9vbkRpYWxvZ0NsaWNrIn0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9fcHJldk5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrLHRoaXMuX19wcmV2Tm9DYW5jZWxPbkVzY0tleT10aGlzLm5vQ2FuY2VsT25Fc2NLZXksdGhpcy5fX3ByZXZXaXRoQmFja2Ryb3A9dGhpcy53aXRoQmFja2Ryb3AsdGhpcy5fX3JlYWRpZWQ9ITB9LF9tb2RhbENoYW5nZWQ6ZnVuY3Rpb24oZSx0KXshdHx8KGU/KHRoaXMuX19wcmV2Tm9DYW5jZWxPbk91dHNpZGVDbGljaz10aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2ssdGhpcy5fX3ByZXZOb0NhbmNlbE9uRXNjS2V5PXRoaXMubm9DYW5jZWxPbkVzY0tleSx0aGlzLl9fcHJldldpdGhCYWNrZHJvcD10aGlzLndpdGhCYWNrZHJvcCx0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9ITAsdGhpcy5ub0NhbmNlbE9uRXNjS2V5PSEwLHRoaXMud2l0aEJhY2tkcm9wPSEwKToodGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrPXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljayYmdGhpcy5fX3ByZXZOb0NhbmNlbE9uT3V0c2lkZUNsaWNrLHRoaXMubm9DYW5jZWxPbkVzY0tleT10aGlzLm5vQ2FuY2VsT25Fc2NLZXkmJnRoaXMuX19wcmV2Tm9DYW5jZWxPbkVzY0tleSx0aGlzLndpdGhCYWNrZHJvcD10aGlzLndpdGhCYWNrZHJvcCYmdGhpcy5fX3ByZXZXaXRoQmFja2Ryb3ApKX0sX3VwZGF0ZUNsb3NpbmdSZWFzb25Db25maXJtZWQ6ZnVuY3Rpb24oZSl7dGhpcy5jbG9zaW5nUmVhc29uPXRoaXMuY2xvc2luZ1JlYXNvbnx8e30sdGhpcy5jbG9zaW5nUmVhc29uLmNvbmZpcm1lZD1lfSxfb25EaWFsb2dDbGljazpmdW5jdGlvbihlKXtmb3IodmFyIHQ9enQoZSkucGF0aCxyPTAsbj10LmluZGV4T2YodGhpcyk7cjxuO3IrKyl7dmFyIGk9dFtyXTtpZihpLmhhc0F0dHJpYnV0ZSYmKGkuaGFzQXR0cmlidXRlKCJkaWFsb2ctZGlzbWlzcyIpfHxpLmhhc0F0dHJpYnV0ZSgiZGlhbG9nLWNvbmZpcm0iKSkpe3RoaXMuX3VwZGF0ZUNsb3NpbmdSZWFzb25Db25maXJtZWQoaS5oYXNBdHRyaWJ1dGUoImRpYWxvZy1jb25maXJtIikpLHRoaXMuY2xvc2UoKSxlLnN0b3BQcm9wYWdhdGlvbigpO2JyZWFrfX19fSx5MHQ9WyR4LF9XXTtZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItZGlhbG9nLXNoYXJlZC1zdHlsZXMiPjwvc3R5bGU+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWRpYWxvZyIsYmVoYXZpb3JzOlt5MHQseTldLGxpc3RlbmVyczp7Im5lb24tYW5pbWF0aW9uLWZpbmlzaCI6Il9vbk5lb25BbmltYXRpb25GaW5pc2gifSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxBbmltYXRpb24oKSx0aGlzLnBsYXlBbmltYXRpb24oImVudHJ5Iil9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpLHRoaXMucGxheUFuaW1hdGlvbigiZXhpdCIpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9fSk7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIEBhcHBseSAtLWxheW91dC1yZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlzLXNjcm9sbGVkOm5vdCg6Zmlyc3QtY2hpbGQpKTo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGl2aWRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jYW4tc2Nyb2xsOm5vdCguc2Nyb2xsZWQtdG8tYm90dG9tKTpub3QoOmxhc3QtY2hpbGQpKTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kaXZpZGVyLWNvbG9yKTsKICAgICAgfQoKICAgICAgLnNjcm9sbGFibGUgewogICAgICAgIHBhZGRpbmc6IDAgMjRweDsKCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXNjcm9sbDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2ctc2Nyb2xsYWJsZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJzY3JvbGxhYmxlIiBjbGFzcz0ic2Nyb2xsYWJsZSIgb24tc2Nyb2xsPSJ1cGRhdGVTY3JvbGxTdGF0ZSI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSIscHJvcGVydGllczp7ZGlhbG9nRWxlbWVudDp7dHlwZTpPYmplY3R9fSxnZXQgc2Nyb2xsVGFyZ2V0KCl7cmV0dXJuIHRoaXMuJC5zY3JvbGxhYmxlfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHRoaXMuY2xhc3NMaXN0LmFkZCgibm8tcGFkZGluZyIpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRhcmdldCgpLHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZVNjcm9sbFN0YXRlLmJpbmQodGhpcykpfSx1cGRhdGVTY3JvbGxTdGF0ZTpmdW5jdGlvbigpe3RoaXMudG9nZ2xlQ2xhc3MoImlzLXNjcm9sbGVkIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A+MCksdGhpcy50b2dnbGVDbGFzcygiY2FuLXNjcm9sbCIsdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0PHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbEhlaWdodCksdGhpcy50b2dnbGVDbGFzcygic2Nyb2xsZWQtdG8tYm90dG9tIix0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3ArdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0Pj10aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxIZWlnaHQpfSxfZW5zdXJlVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5kaWFsb2dFbGVtZW50PXRoaXMuZGlhbG9nRWxlbWVudHx8dGhpcy5wYXJlbnRFbGVtZW50LHRoaXMuZGlhbG9nRWxlbWVudCYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycyYmdGhpcy5kaWFsb2dFbGVtZW50LmJlaGF2aW9ycy5pbmRleE9mKF9XKT49MD8odGhpcy5kaWFsb2dFbGVtZW50LnNpemluZ1RhcmdldD10aGlzLnNjcm9sbFRhcmdldCx0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCJmaXQiKSk6dGhpcy5kaWFsb2dFbGVtZW50JiZ0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QuYWRkKCJmaXQiKX19KTt2YXIgUWw9WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBjbGlwOiByZWN0KDBweCwwcHgsMHB4LDBweCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2IGFyaWEtbGl2ZSQ9IltbbW9kZV1dIj5bW190ZXh0XV08L2Rpdj4KYCxpczoiaXJvbi1hMTF5LWFubm91bmNlciIscHJvcGVydGllczp7bW9kZTp7dHlwZTpTdHJpbmcsdmFsdWU6InBvbGl0ZSJ9LHRpbWVvdXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjE1MH0sX3RleHQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sY3JlYXRlZDpmdW5jdGlvbigpe1FsLmluc3RhbmNlfHwoUWwuaW5zdGFuY2U9dGhpcyksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1hbm5vdW5jZSIsdGhpcy5fb25Jcm9uQW5ub3VuY2UuYmluZCh0aGlzKSl9LGFubm91bmNlOmZ1bmN0aW9uKGUpe3RoaXMuX3RleHQ9IiIsdGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuX3RleHQ9ZX0sdGhpcy50aW1lb3V0KX0sX29uSXJvbkFubm91bmNlOmZ1bmN0aW9uKGUpe2UuZGV0YWlsJiZlLmRldGFpbC50ZXh0JiZ0aGlzLmFubm91bmNlKGUuZGV0YWlsLnRleHQpfX0pO1FsLmluc3RhbmNlPW51bGw7UWwucmVxdWVzdEF2YWlsYWJpbGl0eT1mdW5jdGlvbigpe1FsLmluc3RhbmNlfHwoUWwuaW5zdGFuY2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaXJvbi1hMTF5LWFubm91bmNlciIpKSxkb2N1bWVudC5ib2R5P2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoUWwuaW5zdGFuY2UpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChRbC5pbnN0YW5jZSl9KX07WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNsb3QgaWQ9ImNvbnRlbnQiPjwvc2xvdD4KYCxpczoiaXJvbi1pbnB1dCIsYmVoYXZpb3JzOltFaF0scHJvcGVydGllczp7YmluZFZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0sdmFsdWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVZhbHVlKGJpbmRWYWx1ZSkifSxhbGxvd2VkUGF0dGVybjp7dHlwZTpTdHJpbmd9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRFbGVtZW50Ok9iamVjdH0sb2JzZXJ2ZXJzOlsiX2JpbmRWYWx1ZUNoYW5nZWQoYmluZFZhbHVlLCBfaW5wdXRFbGVtZW50KSJdLGxpc3RlbmVyczp7aW5wdXQ6Il9vbklucHV0IixrZXlwcmVzczoiX29uS2V5cHJlc3MifSxjcmVhdGVkOmZ1bmN0aW9uKCl7UWwucmVxdWVzdEF2YWlsYWJpbGl0eSgpLHRoaXMuX3ByZXZpb3VzVmFsaWRJbnB1dD0iIix0aGlzLl9wYXR0ZXJuQWxyZWFkeUNoZWNrZWQ9ITF9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9enQodGhpcykub2JzZXJ2ZU5vZGVzKGZ1bmN0aW9uKGUpe3RoaXMuX2luaXRTbG90dGVkSW5wdXQoKX0uYmluZCh0aGlzKSl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJih6dCh0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fb2JzZXJ2ZXI9bnVsbCl9LGdldCBpbnB1dEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50fSxfaW5pdFNsb3R0ZWRJbnB1dDpmdW5jdGlvbigpe3RoaXMuX2lucHV0RWxlbWVudD10aGlzLmdldEVmZmVjdGl2ZUNoaWxkcmVuKClbMF0sdGhpcy5pbnB1dEVsZW1lbnQmJnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlJiYodGhpcy5iaW5kVmFsdWU9dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUpLHRoaXMuZmlyZSgiaXJvbi1pbnB1dC1yZWFkeSIpfSxnZXQgX3BhdHRlcm5SZWdFeHAoKXt2YXIgZTtpZih0aGlzLmFsbG93ZWRQYXR0ZXJuKWU9bmV3IFJlZ0V4cCh0aGlzLmFsbG93ZWRQYXR0ZXJuKTtlbHNlIHN3aXRjaCh0aGlzLmlucHV0RWxlbWVudC50eXBlKXtjYXNlIm51bWJlciI6ZT0vWzAtOS4sZS1dLzticmVha31yZXR1cm4gZX0sX2JpbmRWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oZSx0KXshdHx8KGU9PT12b2lkIDA/dC52YWx1ZT1udWxsOmUhPT10LnZhbHVlJiYodGhpcy5pbnB1dEVsZW1lbnQudmFsdWU9ZSksdGhpcy5hdXRvVmFsaWRhdGUmJnRoaXMudmFsaWRhdGUoKSx0aGlzLmZpcmUoImJpbmQtdmFsdWUtY2hhbmdlZCIse3ZhbHVlOmV9KSl9LF9vbklucHV0OmZ1bmN0aW9uKCl7aWYodGhpcy5hbGxvd2VkUGF0dGVybiYmIXRoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZCl7dmFyIGU9dGhpcy5fY2hlY2tQYXR0ZXJuVmFsaWRpdHkoKTtlfHwodGhpcy5fYW5ub3VuY2VJbnZhbGlkQ2hhcmFjdGVyKCJJbnZhbGlkIHN0cmluZyBvZiBjaGFyYWN0ZXJzIG5vdCBlbnRlcmVkLiIpLHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlPXRoaXMuX3ByZXZpb3VzVmFsaWRJbnB1dCl9dGhpcy5iaW5kVmFsdWU9dGhpcy5fcHJldmlvdXNWYWxpZElucHV0PXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLHRoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZD0hMX0sX2lzUHJpbnRhYmxlOmZ1bmN0aW9uKGUpe3ZhciB0PWUua2V5Q29kZT09OHx8ZS5rZXlDb2RlPT05fHxlLmtleUNvZGU9PTEzfHxlLmtleUNvZGU9PTI3LHI9ZS5rZXlDb2RlPT0xOXx8ZS5rZXlDb2RlPT0yMHx8ZS5rZXlDb2RlPT00NXx8ZS5rZXlDb2RlPT00Nnx8ZS5rZXlDb2RlPT0xNDR8fGUua2V5Q29kZT09MTQ1fHxlLmtleUNvZGU+MzImJmUua2V5Q29kZTw0MXx8ZS5rZXlDb2RlPjExMSYmZS5rZXlDb2RlPDEyNDtyZXR1cm4hdCYmIShlLmNoYXJDb2RlPT0wJiZyKX0sX29uS2V5cHJlc3M6ZnVuY3Rpb24oZSl7aWYoISghdGhpcy5hbGxvd2VkUGF0dGVybiYmdGhpcy5pbnB1dEVsZW1lbnQudHlwZSE9PSJudW1iZXIiKSl7dmFyIHQ9dGhpcy5fcGF0dGVyblJlZ0V4cDtpZighIXQmJiEoZS5tZXRhS2V5fHxlLmN0cmxLZXl8fGUuYWx0S2V5KSl7dGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSEwO3ZhciByPVN0cmluZy5mcm9tQ2hhckNvZGUoZS5jaGFyQ29kZSk7dGhpcy5faXNQcmludGFibGUoZSkmJiF0LnRlc3QocikmJihlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fYW5ub3VuY2VJbnZhbGlkQ2hhcmFjdGVyKCJJbnZhbGlkIGNoYXJhY3RlciAiK3IrIiBub3QgZW50ZXJlZC4iKSl9fX0sX2NoZWNrUGF0dGVyblZhbGlkaXR5OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fcGF0dGVyblJlZ0V4cDtpZighZSlyZXR1cm4hMDtmb3IodmFyIHQ9MDt0PHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLmxlbmd0aDt0KyspaWYoIWUudGVzdCh0aGlzLmlucHV0RWxlbWVudC52YWx1ZVt0XSkpcmV0dXJuITE7cmV0dXJuITB9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaW5wdXRFbGVtZW50KXJldHVybiB0aGlzLmludmFsaWQ9ITEsITA7dmFyIGU9dGhpcy5pbnB1dEVsZW1lbnQuY2hlY2tWYWxpZGl0eSgpO3JldHVybiBlJiYodGhpcy5yZXF1aXJlZCYmdGhpcy5iaW5kVmFsdWU9PT0iIj9lPSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJihlPUVoLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLmJpbmRWYWx1ZSkpKSx0aGlzLmludmFsaWQ9IWUsdGhpcy5maXJlKCJpcm9uLWlucHV0LXZhbGlkYXRlIiksZX0sX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcjpmdW5jdGlvbihlKXt0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OmV9KX0sX2NvbXB1dGVWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZX19KTt2YXIgTTk9e2F0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJhZGRvbi1hdHRhY2hlZCIpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7fX07WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsb2F0OiByaWdodDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jYXB0aW9uOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNoYXItY291bnRlcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuPltbX2NoYXJDb3VudGVyU3RyXV08L3NwYW4+CmAsaXM6InBhcGVyLWlucHV0LWNoYXItY291bnRlciIsYmVoYXZpb3JzOltNOV0scHJvcGVydGllczp7X2NoYXJDb3VudGVyU3RyOnt0eXBlOlN0cmluZyx2YWx1ZToiMCJ9fSx1cGRhdGU6ZnVuY3Rpb24oZSl7aWYoISFlLmlucHV0RWxlbWVudCl7ZS52YWx1ZT1lLnZhbHVlfHwiIjt2YXIgdD1lLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoLnRvU3RyaW5nKCk7ZS5pbnB1dEVsZW1lbnQuaGFzQXR0cmlidXRlKCJtYXhsZW5ndGgiKSYmKHQrPSIvIitlLmlucHV0RWxlbWVudC5nZXRBdHRyaWJ1dGUoIm1heGxlbmd0aCIpKSx0aGlzLl9jaGFyQ291bnRlclN0cj10fX19KTt2YXIgdjB0PVFgCjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CiAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXNoYXJlZC1pbnB1dC1zdHlsZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogdG8gbWFrZSBhIHN0YWNraW5nIGNvbnRleHQgKi8KICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWFsaWduLCBib3R0b20pOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CiAgICAgIH07CiAgICB9CiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CmA7djB0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodjB0LmNvbnRlbnQpO1l0KHtfdGVtcGxhdGU6UWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2lubGluZV0pIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvcGFjaXR5OiAwLjMzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuZmxvYXRlZC1sYWJlbC1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jYXB0aW9uOwogICAgICB9CgogICAgICAudW5kZXJsaW5lIHsKICAgICAgICBoZWlnaHQ6IDJweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5mb2N1c2VkLWxpbmUgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLDEsMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAsMSwxKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXVuZGVybGluZS1mb2N1czsKICAgICAgfQoKICAgICAgLnVuZGVybGluZS5pcy1oaWdobGlnaHRlZCAuZm9jdXNlZC1saW5lIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXM7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRyYW5zaXRpb24tZWFzaW5nOwogICAgICB9CgogICAgICAudW5kZXJsaW5lLmlzLWludmFsaWQgLmZvY3VzZWQtbGluZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW52YWxpZC1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXM7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRyYW5zaXRpb24tZWFzaW5nOwogICAgICB9CgogICAgICAudW5mb2N1c2VkLWxpbmUgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItdW5kZXJsaW5lOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAudW5mb2N1c2VkLWxpbmUgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQ7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXVuZGVybGluZS1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgLmlucHV0LXdyYXBwZXIgewogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtcmVsYXRpdmU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGZvbnQ6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzLCB3aWR0aCAwLjI1czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMsIHdpZHRoIDAuMjVzOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7CiAgICAgICAgLyogRml4IGZvciBzYWZhcmkgbm90IGZvY3VzaW5nIDAtaGVpZ2h0IGRhdGUvdGltZSBpbnB1dHMgd2l0aCAtd2Via2l0LWFwcGVyYW5jZTogbm9uZTsgKi8KICAgICAgICBtaW4taGVpZ2h0OiAxcHg7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRyYW5zaXRpb24tZWFzaW5nOwogICAgICB9CgoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGxhYmVsKTpiZWZvcmUsCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpOmJlZm9yZSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsLWJlZm9yZTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGxhYmVsKTphZnRlciwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCk6YWZ0ZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1hZnRlcjsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtZmxvYXRpbmcgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtZmxvYXRpbmcgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03NSUpIHNjYWxlKDAuNzUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNzUlKSBzY2FsZSgwLjc1KTsKCiAgICAgICAgLyogU2luY2Ugd2Ugc2NhbGUgdG8gNzUvMTAwIG9mIHRoZSBzaXplLCB3ZSBhY3R1YWxseSBoYXZlIDEwMC83NSBvZiB0aGUKICAgICAgICBvcmlnaW5hbCBzcGFjZSBub3cgYXZhaWxhYmxlICovCiAgICAgICAgd2lkdGg6IDEzMyU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1mbG9hdGluZzsKICAgICAgfQoKICAgICAgOmhvc3QoOmRpcihydGwpKSAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQobGFiZWwpLAogICAgICA6aG9zdCg6ZGlyKHJ0bCkpIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICByaWdodDogMDsKICAgICAgICBsZWZ0OiBhdXRvOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtaGlnaGxpZ2h0ZWQgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtaGlnaGxpZ2h0ZWQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsLWZvY3VzOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW52YWxpZC1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtaGlkZGVuIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZGRlbiA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaXJvbi1pbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCh0ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpcm9uLWF1dG9ncm93LXRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1pbnB1dCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1zaGFyZWQtaW5wdXQtc3R5bGU7CiAgICAgICAgLyogVGhlIGFwcGx5IHNoaW0gZG9lc24ndCBhcHBseSB0aGUgbmVzdGVkIGNvbG9yIGN1c3RvbSBwcm9wZXJ0eSwKICAgICAgICAgIHNvIHdlIGhhdmUgdG8gcmUtYXBwbHkgaXQgaGVyZS4gKi8KICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpbnB1dCk6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpbnB1dCk6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24gewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC13ZWJraXQtc3Bpbm5lcjsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoaW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZChpcm9uLWlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQodGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZChpcm9uLWF1dG9ncm93LXRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWlucHV0KSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWZvY3VzOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChpbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKGlyb24taW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZCh0ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKGlyb24tYXV0b2dyb3ctdGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtaW5wdXQpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtaW52YWxpZDsKICAgICAgfQoKICAgICAgLnByZWZpeCA6OnNsb3R0ZWQoKikgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtbm9uZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1wcmVmaXg7CiAgICAgIH0KCiAgICAgIC5zdWZmaXggOjpzbG90dGVkKCopIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LW5vbmU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LXN1ZmZpeDsKICAgICAgfQoKICAgICAgLyogRmlyZWZveCBzZXRzIGEgbWluLXdpZHRoIG9uIHRoZSBpbnB1dCwgd2hpY2ggY2FuIGNhdXNlIGxheW91dCBpc3N1ZXMgKi8KICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KSB7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQodGV4dGFyZWEpIHsKICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5hZGQtb24tY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuYWRkLW9uLWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoKikgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW52YWxpZC1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgLmFkZC1vbi1jb250ZW50LmlzLWhpZ2hsaWdodGVkIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImZsb2F0ZWQtbGFiZWwtcGxhY2Vob2xkZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIiBoaWRkZW49Iltbbm9MYWJlbEZsb2F0XV0iPiZuYnNwOzwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImlucHV0LXdyYXBwZXIiPgogICAgICA8c3BhbiBjbGFzcz0icHJlZml4Ij48c2xvdCBuYW1lPSJwcmVmaXgiPjwvc2xvdD48L3NwYW4+CgogICAgICA8ZGl2IGNsYXNzJD0iW1tfY29tcHV0ZUlucHV0Q29udGVudENsYXNzKG5vTGFiZWxGbG9hdCxhbHdheXNGbG9hdExhYmVsLGZvY3VzZWQsaW52YWxpZCxfaW5wdXRIYXNDb250ZW50KV1dIiBpZD0ibGFiZWxBbmRJbnB1dENvbnRhaW5lciI+CiAgICAgICAgPHNsb3QgbmFtZT0ibGFiZWwiPjwvc2xvdD4KICAgICAgICA8c2xvdCBuYW1lPSJpbnB1dCI+PC9zbG90PgogICAgICA8L2Rpdj4KCiAgICAgIDxzcGFuIGNsYXNzPSJzdWZmaXgiPjxzbG90IG5hbWU9InN1ZmZpeCI+PC9zbG90Pjwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3MkPSJbW19jb21wdXRlVW5kZXJsaW5lQ2xhc3MoZm9jdXNlZCxpbnZhbGlkKV1dIj4KICAgICAgPGRpdiBjbGFzcz0idW5mb2N1c2VkLWxpbmUiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJmb2N1c2VkLWxpbmUiPjwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcyQ9IltbX2NvbXB1dGVBZGRPbkNvbnRlbnRDbGFzcyhmb2N1c2VkLGludmFsaWQpXV0iPgogICAgICA8c2xvdCBuYW1lPSJhZGQtb24iPjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1pbnB1dC1jb250YWluZXIiLHByb3BlcnRpZXM6e25vTGFiZWxGbG9hdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbHdheXNGbG9hdExhYmVsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGF0dHJGb3JWYWx1ZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImJpbmQtdmFsdWUifSxhdXRvVmFsaWRhdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saW52YWxpZDp7b2JzZXJ2ZXI6Il9pbnZhbGlkQ2hhbmdlZCIsdHlwZTpCb29sZWFuLHZhbHVlOiExfSxmb2N1c2VkOntyZWFkT25seTohMCx0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxfYWRkb25zOnt0eXBlOkFycmF5fSxfaW5wdXRIYXNDb250ZW50Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9pbnB1dFNlbGVjdG9yOnt0eXBlOlN0cmluZyx2YWx1ZToiaW5wdXQsaXJvbi1pbnB1dCx0ZXh0YXJlYSwucGFwZXItaW5wdXQtaW5wdXQifSxfYm91bmRPbkZvY3VzOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uRm9jdXMuYmluZCh0aGlzKX19LF9ib3VuZE9uQmx1cjp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkJsdXIuYmluZCh0aGlzKX19LF9ib3VuZE9uSW5wdXQ6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpfX0sX2JvdW5kVmFsdWVDaGFuZ2VkOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uVmFsdWVDaGFuZ2VkLmJpbmQodGhpcyl9fX0sbGlzdGVuZXJzOnsiYWRkb24tYXR0YWNoZWQiOiJfb25BZGRvbkF0dGFjaGVkIiwiaXJvbi1pbnB1dC12YWxpZGF0ZSI6Il9vbklyb25JbnB1dFZhbGlkYXRlIn0sZ2V0IF92YWx1ZUNoYW5nZWRFdmVudCgpe3JldHVybiB0aGlzLmF0dHJGb3JWYWx1ZSsiLWNoYW5nZWQifSxnZXQgX3Byb3BlcnR5Rm9yVmFsdWUoKXtyZXR1cm4gd20odGhpcy5hdHRyRm9yVmFsdWUpfSxnZXQgX2lucHV0RWxlbWVudCgpe3JldHVybiB6dCh0aGlzKS5xdWVyeVNlbGVjdG9yKHRoaXMuX2lucHV0U2VsZWN0b3IpfSxnZXQgX2lucHV0RWxlbWVudFZhbHVlKCl7cmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudFt0aGlzLl9wcm9wZXJ0eUZvclZhbHVlXXx8dGhpcy5faW5wdXRFbGVtZW50LnZhbHVlfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX19pc0ZpcnN0VmFsdWVVcGRhdGU9ITAsdGhpcy5fYWRkb25zfHwodGhpcy5fYWRkb25zPVtdKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9ib3VuZE9uRm9jdXMsITApLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fYm91bmRPbkJsdXIsITApfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuYXR0ckZvclZhbHVlP3RoaXMuX2lucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMuX3ZhbHVlQ2hhbmdlZEV2ZW50LHRoaXMuX2JvdW5kVmFsdWVDaGFuZ2VkKTp0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0Iix0aGlzLl9vbklucHV0KSx0aGlzLl9pbnB1dEVsZW1lbnRWYWx1ZSYmdGhpcy5faW5wdXRFbGVtZW50VmFsdWUhPSIiP3RoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudCk6dGhpcy5faGFuZGxlVmFsdWUodGhpcy5faW5wdXRFbGVtZW50KX0sX29uQWRkb25BdHRhY2hlZDpmdW5jdGlvbihlKXt0aGlzLl9hZGRvbnN8fCh0aGlzLl9hZGRvbnM9W10pO3ZhciB0PWUudGFyZ2V0O3RoaXMuX2FkZG9ucy5pbmRleE9mKHQpPT09LTEmJih0aGlzLl9hZGRvbnMucHVzaCh0KSx0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2hhbmRsZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudCkpfSxfb25Gb2N1czpmdW5jdGlvbigpe3RoaXMuX3NldEZvY3VzZWQoITApfSxfb25CbHVyOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Rm9jdXNlZCghMSksdGhpcy5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUodGhpcy5faW5wdXRFbGVtZW50KX0sX29uSW5wdXQ6ZnVuY3Rpb24oZSl7dGhpcy5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUoZS50YXJnZXQpfSxfb25WYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7dGhpcy5fX2lzRmlyc3RWYWx1ZVVwZGF0ZSYmKHRoaXMuX19pc0ZpcnN0VmFsdWVVcGRhdGU9ITEsdC52YWx1ZT09PXZvaWQgMHx8dC52YWx1ZT09PSIiKXx8dGhpcy5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUoZS50YXJnZXQpfSxfaGFuZGxlVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW5wdXRFbGVtZW50VmFsdWU7dHx8dD09PTB8fGUudHlwZT09PSJudW1iZXIiJiYhZS5jaGVja1ZhbGlkaXR5KCk/dGhpcy5faW5wdXRIYXNDb250ZW50PSEwOnRoaXMuX2lucHV0SGFzQ29udGVudD0hMSx0aGlzLnVwZGF0ZUFkZG9ucyh7aW5wdXRFbGVtZW50OmUsdmFsdWU6dCxpbnZhbGlkOnRoaXMuaW52YWxpZH0pfSxfaGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGU6ZnVuY3Rpb24oZSl7aWYodGhpcy5hdXRvVmFsaWRhdGUmJmUpe3ZhciB0O2UudmFsaWRhdGU/dD1lLnZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudFZhbHVlKTp0PWUuY2hlY2tWYWxpZGl0eSgpLHRoaXMuaW52YWxpZD0hdH10aGlzLl9oYW5kbGVWYWx1ZShlKX0sX29uSXJvbklucHV0VmFsaWRhdGU6ZnVuY3Rpb24oZSl7dGhpcy5pbnZhbGlkPXRoaXMuX2lucHV0RWxlbWVudC5pbnZhbGlkfSxfaW52YWxpZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9hZGRvbnMmJnRoaXMudXBkYXRlQWRkb25zKHtpbnZhbGlkOnRoaXMuaW52YWxpZH0pfSx1cGRhdGVBZGRvbnM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9MDt0PXRoaXMuX2FkZG9uc1tyXTtyKyspdC51cGRhdGUoZSl9LF9jb21wdXRlSW5wdXRDb250ZW50Q2xhc3M6ZnVuY3Rpb24oZSx0LHIsbixpKXt2YXIgbz0iaW5wdXQtY29udGVudCI7aWYoZSlpJiYobys9IiBsYWJlbC1pcy1oaWRkZW4iKSxuJiYobys9IiBpcy1pbnZhbGlkIik7ZWxzZXt2YXIgYT10aGlzLnF1ZXJ5U2VsZWN0b3IoImxhYmVsIik7dHx8aT8obys9IiBsYWJlbC1pcy1mbG9hdGluZyIsdGhpcy4kLmxhYmVsQW5kSW5wdXRDb250YWluZXIuc3R5bGUucG9zaXRpb249InN0YXRpYyIsbj9vKz0iIGlzLWludmFsaWQiOnImJihvKz0iIGxhYmVsLWlzLWhpZ2hsaWdodGVkIikpOihhJiYodGhpcy4kLmxhYmVsQW5kSW5wdXRDb250YWluZXIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksbiYmKG8rPSIgaXMtaW52YWxpZCIpKX1yZXR1cm4gciYmKG8rPSIgZm9jdXNlZCIpLG99LF9jb21wdXRlVW5kZXJsaW5lQ2xhc3M6ZnVuY3Rpb24oZSx0KXt2YXIgcj0idW5kZXJsaW5lIjtyZXR1cm4gdD9yKz0iIGlzLWludmFsaWQiOmUmJihyKz0iIGlzLWhpZ2hsaWdodGVkIikscn0sX2NvbXB1dGVBZGRPbkNvbnRlbnRDbGFzczpmdW5jdGlvbihlLHQpe3ZhciByPSJhZGQtb24tY29udGVudCI7cmV0dXJuIHQ/cis9IiBpcy1pbnZhbGlkIjplJiYocis9IiBpcy1oaWdobGlnaHRlZCIpLHJ9fSk7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKCiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnZhbGlkLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNhcHRpb247CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtZXJyb3I7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6MDsKICAgICAgICByaWdodDowOwogICAgICB9CgogICAgICA6aG9zdChbaW52YWxpZF0pIHsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICB9CgogICAgICAjYTExeVdyYXBwZXIgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAjYTExeVdyYXBwZXIgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPCEtLQogICAgSWYgdGhlIHBhcGVyLWlucHV0LWVycm9yIGVsZW1lbnQgaXMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbgogICAgXGBhcmlhLWRlc2NyaWJlZGJ5XGAgYXR0cmlidXRlLCBzdWNoIGFzIHdoZW4gdXNlZCBhcyBhIHBhcGVyLWlucHV0IGFkZC1vbiwKICAgIHRoZW4gYXBwbHlpbmcgXGB2aXNpYmlsaXR5OiBoaWRkZW47XGAgdG8gdGhlIHBhcGVyLWlucHV0LWVycm9yIGVsZW1lbnQgaXRzZWxmCiAgICBkb2VzIG5vdCBoaWRlIHRoZSBlcnJvci4KCiAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlOgogICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL2FjY25hbWUtMS4xLyNtYXBwaW5nX2FkZGl0aW9uYWxfbmRfZGVzY3JpcHRpb24KICAgIC0tPgogICAgPGRpdiBpZD0iYTExeVdyYXBwZXIiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItaW5wdXQtZXJyb3IiLGJlaGF2aW9yczpbTTldLHByb3BlcnRpZXM6e2ludmFsaWQ6e3JlYWRPbmx5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx0eXBlOkJvb2xlYW59fSx1cGRhdGU6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0SW52YWxpZChlLmludmFsaWQpfX0pO3ZhciBLeD17fTtLeC5OZXh0TGFiZWxJRD0xO0t4Lk5leHRBZGRvbklEPTE7S3guTmV4dElucHV0SUQ9MTt2YXIga2JlPXtwcm9wZXJ0aWVzOntsYWJlbDp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGludmFsaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LGFsbG93ZWRQYXR0ZXJuOnt0eXBlOlN0cmluZ30sdHlwZTp7dHlwZTpTdHJpbmd9LGxpc3Q6e3R5cGU6U3RyaW5nfSxwYXR0ZXJuOnt0eXBlOlN0cmluZ30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZXJyb3JNZXNzYWdlOnt0eXBlOlN0cmluZ30sY2hhckNvdW50ZXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXV0b1ZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9mZiJ9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfYXV0b2ZvY3VzQ2hhbmdlZCJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LG1pbmxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1heGxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1pbjp7dHlwZTpTdHJpbmd9LG1heDp7dHlwZTpTdHJpbmd9LHN0ZXA6e3R5cGU6U3RyaW5nfSxuYW1lOnt0eXBlOlN0cmluZ30scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxyZWFkb25seTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzaXplOnt0eXBlOk51bWJlcn0sYXV0b2NhcGl0YWxpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiJub25lIn0sYXV0b2NvcnJlY3Q6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmYifSxhdXRvc2F2ZTp7dHlwZTpTdHJpbmd9LHJlc3VsdHM6e3R5cGU6TnVtYmVyfSxhY2NlcHQ6e3R5cGU6U3RyaW5nfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFufSxfYXJpYURlc2NyaWJlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2FyaWFMYWJlbGxlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2lucHV0SWQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sbGlzdGVuZXJzOnsiYWRkb24tYXR0YWNoZWQiOiJfb25BZGRvbkF0dGFjaGVkIn0sa2V5QmluZGluZ3M6eyJzaGlmdCt0YWI6a2V5ZG93biI6Il9vblNoaWZ0VGFiRG93biJ9LGhvc3RBdHRyaWJ1dGVzOnt0YWJpbmRleDowfSxnZXQgaW5wdXRFbGVtZW50KCl7cmV0dXJuIHRoaXMuJHx8KHRoaXMuJD17fSksdGhpcy4kLmlucHV0fHwodGhpcy5fZ2VuZXJhdGVJbnB1dElkKCksdGhpcy4kLmlucHV0PXRoaXMuJCQoIiMiK3RoaXMuX2lucHV0SWQpKSx0aGlzLiQuaW5wdXR9LGdldCBfZm9jdXNhYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudH0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX3R5cGVzVGhhdEhhdmVUZXh0PVsiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJtb250aCIsInRpbWUiLCJ3ZWVrIiwiZmlsZSJdfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5KCksIW10JiZ0aGlzLmlucHV0RWxlbWVudCYmdGhpcy5fdHlwZXNUaGF0SGF2ZVRleHQuaW5kZXhPZih0aGlzLmlucHV0RWxlbWVudC50eXBlKSE9PS0xJiYodGhpcy5hbHdheXNGbG9hdExhYmVsPSEwKX0sX2FwcGVuZFN0cmluZ1dpdGhTcGFjZTpmdW5jdGlvbihlLHQpe3JldHVybiBlP2U9ZSsiICIrdDplPXQsZX0sX29uQWRkb25BdHRhY2hlZDpmdW5jdGlvbihlKXt2YXIgdD16dChlKS5yb290VGFyZ2V0O2lmKHQuaWQpdGhpcy5fYXJpYURlc2NyaWJlZEJ5PXRoaXMuX2FwcGVuZFN0cmluZ1dpdGhTcGFjZSh0aGlzLl9hcmlhRGVzY3JpYmVkQnksdC5pZCk7ZWxzZXt2YXIgcj0icGFwZXItaW5wdXQtYWRkLW9uLSIrS3guTmV4dEFkZG9uSUQrKzt0LmlkPXIsdGhpcy5fYXJpYURlc2NyaWJlZEJ5PXRoaXMuX2FwcGVuZFN0cmluZ1dpdGhTcGFjZSh0aGlzLl9hcmlhRGVzY3JpYmVkQnkscil9fSx2YWxpZGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudC52YWxpZGF0ZSgpfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbihlKXtOaS5fZm9jdXNCbHVySGFuZGxlci5jYWxsKHRoaXMsZSksdGhpcy5mb2N1c2VkJiYhdGhpcy5fc2hpZnRUYWJQcmVzc2VkJiZ0aGlzLl9mb2N1c2FibGVFbGVtZW50JiZ0aGlzLl9mb2N1c2FibGVFbGVtZW50LmZvY3VzKCl9LF9vblNoaWZ0VGFiRG93bjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTt0aGlzLl9zaGlmdFRhYlByZXNzZWQ9ITAsdGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4Iix0KSx0aGlzLl9zaGlmdFRhYlByZXNzZWQ9ITF9LDEpfSxfaGFuZGxlQXV0b1ZhbGlkYXRlOmZ1bmN0aW9uKCl7dGhpcy5hdXRvVmFsaWRhdGUmJnRoaXMudmFsaWRhdGUoKX0sdXBkYXRlVmFsdWVBbmRQcmVzZXJ2ZUNhcmV0OmZ1bmN0aW9uKGUpe3RyeXt2YXIgdD10aGlzLmlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydDt0aGlzLnZhbHVlPWUsdGhpcy5pbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ9dCx0aGlzLmlucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQ9dH1jYXRjaChyKXt0aGlzLnZhbHVlPWV9fSxfY29tcHV0ZUFsd2F5c0Zsb2F0TGFiZWw6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8ZX0sX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5OmZ1bmN0aW9uKCl7dmFyIGU9enQodGhpcy5yb290KS5xdWVyeVNlbGVjdG9yKCJsYWJlbCIpO2lmKCFlKXt0aGlzLl9hcmlhTGFiZWxsZWRCeT0iIjtyZXR1cm59dmFyIHQ7ZS5pZD90PWUuaWQ6KHQ9InBhcGVyLWlucHV0LWxhYmVsLSIrS3guTmV4dExhYmVsSUQrKyxlLmlkPXQpLHRoaXMuX2FyaWFMYWJlbGxlZEJ5PXR9LF9nZW5lcmF0ZUlucHV0SWQ6ZnVuY3Rpb24oKXsoIXRoaXMuX2lucHV0SWR8fHRoaXMuX2lucHV0SWQ9PT0iIikmJih0aGlzLl9pbnB1dElkPSJpbnB1dC0iK0t4Lk5leHRJbnB1dElEKyspfSxfb25DaGFuZ2U6ZnVuY3Rpb24oZSl7dGhpcy5zaGFkb3dSb290JiZ0aGlzLmZpcmUoZS50eXBlLHtzb3VyY2VFdmVudDplfSx7bm9kZTp0aGlzLGJ1YmJsZXM6ZS5idWJibGVzLGNhbmNlbGFibGU6ZS5jYW5jZWxhYmxlfSl9LF9hdXRvZm9jdXNDaGFuZ2VkOmZ1bmN0aW9uKCl7aWYodGhpcy5hdXRvZm9jdXMmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQpe3ZhciBlPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsdD1lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQscj10JiZlIT09ZG9jdW1lbnQuYm9keSYmZSE9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyfHx0aGlzLl9mb2N1c2FibGVFbGVtZW50LmZvY3VzKCl9fX0sRTk9W05pLERvLGtiZV07WXQoe2lzOiJwYXBlci1pbnB1dCIsX3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QoW2ZvY3VzZWRdKSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGlucHV0IHsKICAgICAgICAvKiBGaXJlZm94IHNldHMgYSBtaW4td2lkdGggb24gdGhlIGlucHV0LCB3aGljaCBjYW4gY2F1c2UgbGF5b3V0IGlzc3VlcyAqLwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLyogSW4gMS54LCB0aGUgPGlucHV0PiBpcyBkaXN0cmlidXRlZCB0byBwYXBlci1pbnB1dC1jb250YWluZXIsIHdoaWNoIHN0eWxlcyBpdC4KICAgICAgSW4gMi54IHRoZSA8aXJvbi1pbnB1dD4gaXMgZGlzdHJpYnV0ZWQgdG8gcGFwZXItaW5wdXQtY29udGFpbmVyLCB3aGljaCBzdHlsZXMKICAgICAgaXQsIGJ1dCBpbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseSwgd2UgbmVlZCB0byByZXNldCBzb21lCiAgICAgIG9mIHRoZSBuYXRpdmUgaW5wdXQncyBwcm9wZXJ0aWVzIHRvIGluaGVyaXQgKGZyb20gdGhlIGlyb24taW5wdXQpICovCiAgICAgIGlyb24taW5wdXQgPiBpbnB1dCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXNoYXJlZC1pbnB1dC1zdHlsZTsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgICAgICAgd29yZC1zcGFjaW5nOiBpbmhlcml0OwogICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgICAgIHRleHQtc2hhZG93OiBpbmhlcml0OwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICAgIGN1cnNvcjogaW5oZXJpdDsKICAgICAgfQoKICAgICAgaW5wdXQ6ZGlzYWJsZWQgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sCiAgICAgIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LXNwaW5uZXI7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LWNsZWFyLWJ1dHRvbiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1jbGVhcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGlucHV0OjotbXMtY2xlYXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1tcy1jbGVhcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi1tcy1yZXZlYWwgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1tcy1yZXZlYWw7CiAgICAgIH0KCiAgICAgIGlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgbGFiZWwgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dC1jb250YWluZXIgaWQ9ImNvbnRhaW5lciIgbm8tbGFiZWwtZmxvYXQ9Iltbbm9MYWJlbEZsb2F0XV0iIGFsd2F5cy1mbG9hdC1sYWJlbD0iW1tfY29tcHV0ZUFsd2F5c0Zsb2F0TGFiZWwoYWx3YXlzRmxvYXRMYWJlbCxwbGFjZWhvbGRlcildXSIgYXV0by12YWxpZGF0ZSQ9IltbYXV0b1ZhbGlkYXRlXV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiBpbnZhbGlkPSJbW2ludmFsaWRdXSI+CgogICAgICA8c2xvdCBuYW1lPSJwcmVmaXgiIHNsb3Q9InByZWZpeCI+PC9zbG90PgoKICAgICAgPGxhYmVsIGhpZGRlbiQ9IltbIWxhYmVsXV0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb3IkPSJbW19pbnB1dElkXV0iIHNsb3Q9ImxhYmVsIj5bW2xhYmVsXV08L2xhYmVsPgoKICAgICAgPCEtLSBOZWVkIHRvIGJpbmQgbWF4bGVuZ3RoIHNvIHRoYXQgdGhlIHBhcGVyLWlucHV0LWNoYXItY291bnRlciB3b3JrcyBjb3JyZWN0bHkgLS0+CiAgICAgIDxpcm9uLWlucHV0IGJpbmQtdmFsdWU9Int7dmFsdWV9fSIgc2xvdD0iaW5wdXQiIGNsYXNzPSJpbnB1dC1lbGVtZW50IiBpZCQ9IltbX2lucHV0SWRdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgYWxsb3dlZC1wYXR0ZXJuPSJbW2FsbG93ZWRQYXR0ZXJuXV0iIGludmFsaWQ9Int7aW52YWxpZH19IiB2YWxpZGF0b3I9IltbdmFsaWRhdG9yXV0iPgogICAgICAgIDxpbnB1dCBhcmlhLWxhYmVsbGVkYnkkPSJbW19hcmlhTGFiZWxsZWRCeV1dIiBhcmlhLWRlc2NyaWJlZGJ5JD0iW1tfYXJpYURlc2NyaWJlZEJ5XV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiB0aXRsZSQ9IltbdGl0bGVdXSIgdHlwZSQ9IltbdHlwZV1dIiBwYXR0ZXJuJD0iW1twYXR0ZXJuXV0iIHJlcXVpcmVkJD0iW1tyZXF1aXJlZF1dIiBhdXRvY29tcGxldGUkPSJbW2F1dG9jb21wbGV0ZV1dIiBhdXRvZm9jdXMkPSJbW2F1dG9mb2N1c11dIiBpbnB1dG1vZGUkPSJbW2lucHV0bW9kZV1dIiBtaW5sZW5ndGgkPSJbW21pbmxlbmd0aF1dIiBtYXhsZW5ndGgkPSJbW21heGxlbmd0aF1dIiBtaW4kPSJbW21pbl1dIiBtYXgkPSJbW21heF1dIiBzdGVwJD0iW1tzdGVwXV0iIG5hbWUkPSJbW25hbWVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiBsaXN0JD0iW1tsaXN0XV0iIHNpemUkPSJbW3NpemVdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIGF1dG9jb3JyZWN0JD0iW1thdXRvY29ycmVjdF1dIiBvbi1jaGFuZ2U9Il9vbkNoYW5nZSIgdGFiaW5kZXgkPSJbW3RhYkluZGV4XV0iIGF1dG9zYXZlJD0iW1thdXRvc2F2ZV1dIiByZXN1bHRzJD0iW1tyZXN1bHRzXV0iIGFjY2VwdCQ9IltbYWNjZXB0XV0iIG11bHRpcGxlJD0iW1ttdWx0aXBsZV1dIiByb2xlJD0iW1tpbnB1dFJvbGVdXSIgYXJpYS1oYXNwb3B1cCQ9IltbaW5wdXRBcmlhSGFzcG9wdXBdXSI+CiAgICAgIDwvaXJvbi1pbnB1dD4KCiAgICAgIDxzbG90IG5hbWU9InN1ZmZpeCIgc2xvdD0ic3VmZml4Ij48L3Nsb3Q+CgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZXJyb3JNZXNzYWdlXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1lcnJvciBhcmlhLWxpdmU9ImFzc2VydGl2ZSIgc2xvdD0iYWRkLW9uIj5bW2Vycm9yTWVzc2FnZV1dPC9wYXBlci1pbnB1dC1lcnJvcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFyQ291bnRlcl1dIj4KICAgICAgICA8cGFwZXItaW5wdXQtY2hhci1jb3VudGVyIHNsb3Q9ImFkZC1vbiI+PC9wYXBlci1pbnB1dC1jaGFyLWNvdW50ZXI+CiAgICAgIDwvdGVtcGxhdGU+CgogICAgPC9wYXBlci1pbnB1dC1jb250YWluZXI+CiAgYCxiZWhhdmlvcnM6W0U5LE1oXSxwcm9wZXJ0aWVzOnt2YWx1ZTp7dHlwZTpTdHJpbmd9LGlucHV0Um9sZTp7dHlwZTpTdHJpbmcsdmFsdWU6dm9pZCAwfSxpbnB1dEFyaWFIYXNwb3B1cDp7dHlwZTpTdHJpbmcsdmFsdWU6dm9pZCAwfX0sZ2V0IF9mb2N1c2FibGVFbGVtZW50KCl7cmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50Ll9pbnB1dEVsZW1lbnR9LGxpc3RlbmVyczp7Imlyb24taW5wdXQtcmVhZHkiOiJfb25Jcm9uSW5wdXRSZWFkeSJ9LF9vbklyb25JbnB1dFJlYWR5OmZ1bmN0aW9uKCl7dGhpcy4kLm5hdGl2ZUlucHV0fHwodGhpcy4kLm5hdGl2ZUlucHV0PXRoaXMuJCQoImlucHV0IikpLHRoaXMuaW5wdXRFbGVtZW50JiZ0aGlzLl90eXBlc1RoYXRIYXZlVGV4dC5pbmRleE9mKHRoaXMuJC5uYXRpdmVJbnB1dC50eXBlKSE9PS0xJiYodGhpcy5hbHdheXNGbG9hdExhYmVsPSEwKSx0aGlzLmlucHV0RWxlbWVudC5iaW5kVmFsdWUmJnRoaXMuJC5jb250YWluZXIuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHRoaXMuaW5wdXRFbGVtZW50KX19KTtZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIH0KCiAgICAgICNjb250ZW50V3JhcHBlciA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CgogICAgICAjY29udGVudFdyYXBwZXIuYW5pbWF0aW5nIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJjb250ZW50V3JhcHBlciI+CiAgICAgIDxzbG90IGlkPSJjb250ZW50IiBuYW1lPSJkcm9wZG93bi1jb250ZW50Ij48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoiaXJvbi1kcm9wZG93biIsYmVoYXZpb3JzOltOaSxEbywkeCx5OV0scHJvcGVydGllczp7aG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToibGVmdCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToidG9wIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LG9wZW5BbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxjbG9zZUFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3R9LGZvY3VzVGFyZ2V0Ont0eXBlOk9iamVjdH0sbm9BbmltYXRpb25zOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsbG93T3V0c2lkZVNjcm9sbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfYWxsb3dPdXRzaWRlU2Nyb2xsQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6eyJuZW9uLWFuaW1hdGlvbi1maW5pc2giOiJfb25OZW9uQW5pbWF0aW9uRmluaXNoIn0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvblRhcmdldCwgdmVydGljYWxBbGlnbiwgaG9yaXpvbnRhbEFsaWduLCB2ZXJ0aWNhbE9mZnNldCwgaG9yaXpvbnRhbE9mZnNldCkiXSxnZXQgY29udGFpbmVkRWxlbWVudCgpe2Zvcih2YXIgZT16dCh0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLHQ9MCxyPWUubGVuZ3RoO3Q8cjt0KyspaWYoZVt0XS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiBlW3RdfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsQWN0aW9ufHwodGhpcy5zY3JvbGxBY3Rpb249dGhpcy5hbGxvd091dHNpZGVTY3JvbGw/InJlZml0IjoibG9jayIpLHRoaXMuX3JlYWRpZWQ9ITB9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7KCF0aGlzLnNpemluZ1RhcmdldHx8dGhpcy5zaXppbmdUYXJnZXQ9PT10aGlzKSYmKHRoaXMuc2l6aW5nVGFyZ2V0PXRoaXMuY29udGFpbmVkRWxlbWVudHx8dGhpcyl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxBbmltYXRpb24oKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5kaXNhYmxlZD90aGlzLmNhbmNlbCgpOih0aGlzLmNhbmNlbEFuaW1hdGlvbigpLHRoaXMuX3VwZGF0ZUFuaW1hdGlvbkNvbmZpZygpLFBtLl9vcGVuZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXshdGhpcy5ub0FuaW1hdGlvbnMmJnRoaXMuYW5pbWF0aW9uQ29uZmlnLm9wZW4/KHRoaXMuJC5jb250ZW50V3JhcHBlci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKSx0aGlzLnBsYXlBbmltYXRpb24oIm9wZW4iKSk6UG0uX3JlbmRlck9wZW5lZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXshdGhpcy5ub0FuaW1hdGlvbnMmJnRoaXMuYW5pbWF0aW9uQ29uZmlnLmNsb3NlPyh0aGlzLiQuY29udGVudFdyYXBwZXIuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIiksdGhpcy5wbGF5QW5pbWF0aW9uKCJjbG9zZSIpKTpQbS5fcmVuZGVyQ2xvc2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX29uTmVvbkFuaW1hdGlvbkZpbmlzaDpmdW5jdGlvbigpe3RoaXMuJC5jb250ZW50V3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKSx0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKTp0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKX0sX3VwZGF0ZUFuaW1hdGlvbkNvbmZpZzpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmNvbnRhaW5lZEVsZW1lbnQsdD1bXS5jb25jYXQodGhpcy5vcGVuQW5pbWF0aW9uQ29uZmlnfHxbXSkuY29uY2F0KHRoaXMuY2xvc2VBbmltYXRpb25Db25maWd8fFtdKSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXS5ub2RlPWU7dGhpcy5hbmltYXRpb25Db25maWc9e29wZW46dGhpcy5vcGVuQW5pbWF0aW9uQ29uZmlnLGNsb3NlOnRoaXMuY2xvc2VBbmltYXRpb25Db25maWd9fSxfdXBkYXRlT3ZlcmxheVBvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiZ0aGlzLm5vdGlmeVJlc2l6ZSgpfSxfYWxsb3dPdXRzaWRlU2Nyb2xsQ2hhbmdlZDpmdW5jdGlvbihlKXshdGhpcy5fcmVhZGllZHx8KGU/KCF0aGlzLnNjcm9sbEFjdGlvbnx8dGhpcy5zY3JvbGxBY3Rpb249PT0ibG9jayIpJiYodGhpcy5zY3JvbGxBY3Rpb249InJlZml0Iik6dGhpcy5zY3JvbGxBY3Rpb249ImxvY2siKX0sX2FwcGx5Rm9jdXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmZvY3VzVGFyZ2V0fHx0aGlzLmNvbnRhaW5lZEVsZW1lbnQ7ZSYmdGhpcy5vcGVuZWQmJiF0aGlzLm5vQXV0b0ZvY3VzP2UuZm9jdXMoKTpQbS5fYXBwbHlGb2N1cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSk7dmFyIHlwPXtwcm9wZXJ0aWVzOnthbmltYXRpb25UaW1pbmc6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2R1cmF0aW9uOjUwMCxlYXNpbmc6ImN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkiLGZpbGw6ImJvdGgifX19fSxpc05lb25BbmltYXRpb246ITAsY3JlYXRlZDpmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkuYW5pbWF0ZXx8Y29uc29sZS53YXJuKCJObyB3ZWIgYW5pbWF0aW9ucyBkZXRlY3RlZC4gVGhpcyBlbGVtZW50IHdpbGwgbm90IGZ1bmN0aW9uIHdpdGhvdXQgYSB3ZWIgYW5pbWF0aW9ucyBwb2x5ZmlsbC4iKX0sdGltaW5nRnJvbUNvbmZpZzpmdW5jdGlvbihlKXtpZihlLnRpbWluZylmb3IodmFyIHQgaW4gZS50aW1pbmcpdGhpcy5hbmltYXRpb25UaW1pbmdbdF09ZS50aW1pbmdbdF07cmV0dXJuIHRoaXMuYW5pbWF0aW9uVGltaW5nfSxzZXRQcmVmaXhlZFByb3BlcnR5OmZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49e3RyYW5zZm9ybTpbIndlYmtpdFRyYW5zZm9ybSJdLHRyYW5zZm9ybU9yaWdpbjpbIm1velRyYW5zZm9ybU9yaWdpbiIsIndlYmtpdFRyYW5zZm9ybU9yaWdpbiJdfSxpPW5bdF0sbyxhPTA7bz1pW2FdO2ErKyllLnN0eWxlW29dPXI7ZS5zdHlsZVt0XT1yfSxjb21wbGV0ZTpmdW5jdGlvbihlKXt9fTtZdCh7aXM6ImZhZGUtaW4tYW5pbWF0aW9uIixiZWhhdmlvcnM6W3lwXSxjb25maWd1cmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlO3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KHQsW3tvcGFjaXR5OiIwIn0se29wYWNpdHk6IjEifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKGUpKSx0aGlzLl9lZmZlY3R9fSk7WXQoe2lzOiJmYWRlLW91dC1hbmltYXRpb24iLGJlaGF2aW9yczpbeXBdLGNvbmZpZ3VyZTpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGU7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QodCxbe29wYWNpdHk6IjEifSx7b3BhY2l0eToiMCJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcoZSkpLHRoaXMuX2VmZmVjdH19KTtZdCh7aXM6InBhcGVyLW1lbnUtZ3Jvdy1oZWlnaHQtYW5pbWF0aW9uIixfdGVtcGxhdGU6bnVsbCxiZWhhdmlvcnM6W3lwXSxjb25maWd1cmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlLHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIuaGVpZ2h0O3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KHQsW3toZWlnaHQ6bi8yKyJweCJ9LHtoZWlnaHQ6bisicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKGUpKSx0aGlzLl9lZmZlY3R9fSk7WXQoe2lzOiJwYXBlci1tZW51LWdyb3ctd2lkdGgtYW5pbWF0aW9uIixfdGVtcGxhdGU6bnVsbCxiZWhhdmlvcnM6W3lwXSxjb25maWd1cmU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlLHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIud2lkdGg7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QodCxbe3dpZHRoOm4vMisicHgifSx7d2lkdGg6bisicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKGUpKSx0aGlzLl9lZmZlY3R9fSk7WXQoe2lzOiJwYXBlci1tZW51LXNocmluay13aWR0aC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbeXBdLGNvbmZpZ3VyZTpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGUscj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ci53aWR0aDtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdCh0LFt7d2lkdGg6bisicHgifSx7d2lkdGg6bi1uLzIwKyJweCJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcoZSkpLHRoaXMuX2VmZmVjdH19KTtZdCh7aXM6InBhcGVyLW1lbnUtc2hyaW5rLWhlaWdodC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbeXBdLGNvbmZpZ3VyZTpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGUscj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ci5oZWlnaHQ7cmV0dXJuIHRoaXMuc2V0UHJlZml4ZWRQcm9wZXJ0eSh0LCJ0cmFuc2Zvcm1PcmlnaW4iLCIwIDAiKSx0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KHQsW3toZWlnaHQ6bisicHgiLHRyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9LHtoZWlnaHQ6bi8yKyJweCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yMHB4KSJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcoZSkpLHRoaXMuX2VmZmVjdH19KTt2YXIgaEU9e0FOSU1BVElPTl9DVUJJQ19CRVpJRVI6ImN1YmljLWJlemllciguMywuOTUsLjUsMSkiLE1BWF9BTklNQVRJT05fVElNRV9NUzo0MDB9LFJiZT1ZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBvdXRsaW5lOiBub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgICBjb2xvcjogdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcik7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uLWRpc2FibGVkOwogICAgICB9CgogICAgICBpcm9uLWRyb3Bkb3duIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbi1kcm9wZG93bjsKICAgICAgfQoKICAgICAgLmRyb3Bkb3duLWNvbnRlbnQgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLW1lbnUtYnV0dG9uLWRyb3Bkb3duLWJhY2tncm91bmQsIHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbi1jb250ZW50OwogICAgICB9CgogICAgICA6aG9zdChbdmVydGljYWwtYWxpZ249InRvcCJdKSAuZHJvcGRvd24tY29udGVudCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDsKICAgICAgICB0b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFt2ZXJ0aWNhbC1hbGlnbj0iYm90dG9tIl0pIC5kcm9wZG93bi1jb250ZW50IHsKICAgICAgICBib3R0b206IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTEwcHg7CiAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgfQoKICAgICAgI3RyaWdnZXIgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0cmlnZ2VyIiBvbi10YXA9InRvZ2dsZSI+CiAgICAgIDxzbG90IG5hbWU9ImRyb3Bkb3duLXRyaWdnZXIiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxpcm9uLWRyb3Bkb3duIGlkPSJkcm9wZG93biIgb3BlbmVkPSJ7e29wZW5lZH19IiBob3Jpem9udGFsLWFsaWduPSJbW2hvcml6b250YWxBbGlnbl1dIiB2ZXJ0aWNhbC1hbGlnbj0iW1t2ZXJ0aWNhbEFsaWduXV0iIGR5bmFtaWMtYWxpZ249IltbZHluYW1pY0FsaWduXV0iIGhvcml6b250YWwtb2Zmc2V0PSJbW2hvcml6b250YWxPZmZzZXRdXSIgdmVydGljYWwtb2Zmc2V0PSJbW3ZlcnRpY2FsT2Zmc2V0XV0iIG5vLW92ZXJsYXA9Iltbbm9PdmVybGFwXV0iIG9wZW4tYW5pbWF0aW9uLWNvbmZpZz0iW1tvcGVuQW5pbWF0aW9uQ29uZmlnXV0iIGNsb3NlLWFuaW1hdGlvbi1jb25maWc9IltbY2xvc2VBbmltYXRpb25Db25maWddXSIgbm8tYW5pbWF0aW9ucz0iW1tub0FuaW1hdGlvbnNdXSIgZm9jdXMtdGFyZ2V0PSJbW19kcm9wZG93bkNvbnRlbnRdXSIgYWxsb3ctb3V0c2lkZS1zY3JvbGw9IltbYWxsb3dPdXRzaWRlU2Nyb2xsXV0iIHJlc3RvcmUtZm9jdXMtb24tY2xvc2U9IltbcmVzdG9yZUZvY3VzT25DbG9zZV1dIiBvbi1pcm9uLW92ZXJsYXktY2FuY2VsZWQ9Il9fb25Jcm9uT3ZlcmxheUNhbmNlbGVkIiBleHBhbmQtc2l6aW5nLXRhcmdldC1mb3Itc2Nyb2xsYmFycz0iW1tleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzXV0iPgogICAgICA8ZGl2IHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiIGNsYXNzPSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8c2xvdCBpZD0iY29udGVudCIgbmFtZT0iZHJvcGRvd24tY29udGVudCI+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIDwvaXJvbi1kcm9wZG93bj4KYCxpczoicGFwZXItbWVudS1idXR0b24iLGJlaGF2aW9yczpbRG8sTmldLHByb3BlcnRpZXM6e29wZW5lZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSxob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0IixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sZHluYW1pY0FsaWduOnt0eXBlOkJvb2xlYW59LGhvcml6b250YWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSx2ZXJ0aWNhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LG5vT3ZlcmxhcDp7dHlwZTpCb29sZWFufSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saWdub3JlU2VsZWN0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NlT25BY3RpdmF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxvcGVuQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVyblt7bmFtZToiZmFkZS1pbi1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjIwMH19LHtuYW1lOiJwYXBlci1tZW51LWdyb3ctd2lkdGgtYW5pbWF0aW9uIix0aW1pbmc6e2RlbGF5OjEwMCxkdXJhdGlvbjoxNTAsZWFzaW5nOmhFLkFOSU1BVElPTl9DVUJJQ19CRVpJRVJ9fSx7bmFtZToicGFwZXItbWVudS1ncm93LWhlaWdodC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjI3NSxlYXNpbmc6aEUuQU5JTUFUSU9OX0NVQklDX0JFWklFUn19XX19LGNsb3NlQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVyblt7bmFtZToiZmFkZS1vdXQtYW5pbWF0aW9uIix0aW1pbmc6e2R1cmF0aW9uOjE1MH19LHtuYW1lOiJwYXBlci1tZW51LXNocmluay13aWR0aC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjUwLGVhc2luZzpoRS5BTklNQVRJT05fQ1VCSUNfQkVaSUVSfX0se25hbWU6InBhcGVyLW1lbnUtc2hyaW5rLWhlaWdodC1hbmltYXRpb24iLHRpbWluZzp7ZHVyYXRpb246MjAwLGVhc2luZzoiZWFzZS1pbiJ9fV19fSxhbGxvd091dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9kcm9wZG93bkNvbnRlbnQ6e3R5cGU6T2JqZWN0fX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oYXNwb3B1cCI6InRydWUifSxsaXN0ZW5lcnM6eyJpcm9uLWFjdGl2YXRlIjoiX29uSXJvbkFjdGl2YXRlIiwiaXJvbi1zZWxlY3QiOiJfb25Jcm9uU2VsZWN0In0sZ2V0IGNvbnRlbnRFbGVtZW50KCl7Zm9yKHZhciBlPXp0KHRoaXMuJC5jb250ZW50KS5nZXREaXN0cmlidXRlZE5vZGVzKCksdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKylpZihlW3RdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIGVbdF19LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkP3RoaXMuY2xvc2UoKTp0aGlzLm9wZW4oKX0sb3BlbjpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWR8fHRoaXMuJC5kcm9wZG93bi5vcGVuKCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy4kLmRyb3Bkb3duLmNsb3NlKCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24oZSl7dGhpcy5pZ25vcmVTZWxlY3R8fHRoaXMuY2xvc2UoKX0sX29uSXJvbkFjdGl2YXRlOmZ1bmN0aW9uKGUpe3RoaXMuY2xvc2VPbkFjdGl2YXRlJiZ0aGlzLmNsb3NlKCl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7ZT8odGhpcy5fZHJvcGRvd25Db250ZW50PXRoaXMuY29udGVudEVsZW1lbnQsdGhpcy5maXJlKCJwYXBlci1kcm9wZG93bi1vcGVuIikpOnQhPW51bGwmJnRoaXMuZmlyZSgicGFwZXItZHJvcGRvd24tY2xvc2UiKX0sX2Rpc2FibGVkQ2hhbmdlZDpmdW5jdGlvbihlKXtOaS5fZGlzYWJsZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlJiZ0aGlzLm9wZW5lZCYmdGhpcy5jbG9zZSgpfSxfX29uSXJvbk92ZXJsYXlDYW5jZWxlZDpmdW5jdGlvbihlKXt2YXIgdD1lLmRldGFpbCxyPXRoaXMuJC50cmlnZ2VyLG49enQodCkucGF0aDtuLmluZGV4T2Yocik+LTEmJmUucHJldmVudERlZmF1bHQoKX19KTtPYmplY3Qua2V5cyhoRSkuZm9yRWFjaChmdW5jdGlvbihlKXtSYmVbZV09aEVbZV19KTt2YXIgeVc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTt5Vy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKTt5Vy5pbm5lckhUTUw9YDxpcm9uLWljb25zZXQtc3ZnIG5hbWU9InBhcGVyLWRyb3Bkb3duLW1lbnUiIHNpemU9IjI0Ij4KPHN2Zz48ZGVmcz4KPGcgaWQ9ImFycm93LWRyb3AtZG93biI+PHBhdGggZD0iTTcgMTBsNSA1IDUtNXoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh5Vy5jb250ZW50KTt2YXIgdlc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTt2Vy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKTt2Vy5pbm5lckhUTUw9YDxkb20tbW9kdWxlIGlkPSJwYXBlci1kcm9wZG93bi1tZW51LXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKCiAgICAgICAgLyogTk9URShjZGF0YSk6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlCiAgICAgICAgICogdmFsdWUgdG8gYmUgXGB0cmFuc3BhcmVudFxgLgogICAgICAgICAqLwogICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLDAsMCwwKTsKICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwoKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgfTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudTsKICAgICAgfQoKICAgICAgLyogcGFwZXItZHJvcGRvd24tbWVudSBhbmQgcGFwZXItZHJvcGRvd24tbWVudS1saWdodCBib3RoIGRlbGVnYXRlIGZvY3VzCiAgICAgICAqIHRvIG90aGVyIGludGVybmFsIGVsZW1lbnRzIHdoaWNoIG1hbmFnZSBmb2N1cyBzdHlsaW5nLiAqLwogICAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdCg6ZGlyKHJ0bCkpIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKCiAgICAgICAgQGFwcGx5KC0tcGFwZXItZHJvcGRvd24tbWVudSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbbm9pbmtdKSBwYXBlci1yaXBwbGUgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtuby1sYWJlbC1mbG9hdF0pIHBhcGVyLXJpcHBsZSB7CiAgICAgICAgdG9wOiA4cHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLXJpcHBsZSB7CiAgICAgICAgdG9wOiAxMnB4OwogICAgICAgIGxlZnQ6IDBweDsKICAgICAgICBib3R0b206IDhweDsKICAgICAgICByaWdodDogMHB4OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LXJpcHBsZTsKICAgICAgfQoKICAgICAgcGFwZXItbWVudS1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDA7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtYnV0dG9uOwogICAgICB9CgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudS1pbnB1dDsKICAgICAgfQoKICAgICAgaXJvbi1pY29uIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcik7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaWNvbjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+YDtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHZXLmNvbnRlbnQpO3ZhciBOYmU9R3QoSFRNTEVsZW1lbnQpO1l0KHtfdGVtcGxhdGU6UWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1kcm9wZG93bi1tZW51LXNoYXJlZC1zdHlsZXMiPjwvc3R5bGU+CgogICAgPHBhcGVyLW1lbnUtYnV0dG9uIGlkPSJtZW51QnV0dG9uIiB2ZXJ0aWNhbC1hbGlnbj0iW1t2ZXJ0aWNhbEFsaWduXV0iIGhvcml6b250YWwtYWxpZ249IltbaG9yaXpvbnRhbEFsaWduXV0iIGR5bmFtaWMtYWxpZ249IltbZHluYW1pY0FsaWduXV0iIHZlcnRpY2FsLW9mZnNldD0iW1tfY29tcHV0ZU1lbnVWZXJ0aWNhbE9mZnNldChub0xhYmVsRmxvYXQsIHZlcnRpY2FsT2Zmc2V0KV1dIiBkaXNhYmxlZD0iW1tkaXNhYmxlZF1dIiBuby1hbmltYXRpb25zPSJbW25vQW5pbWF0aW9uc11dIiBvbi1pcm9uLXNlbGVjdD0iX29uSXJvblNlbGVjdCIgb24taXJvbi1kZXNlbGVjdD0iX29uSXJvbkRlc2VsZWN0IiBvcGVuZWQ9Int7b3BlbmVkfX0iIGNsb3NlLW9uLWFjdGl2YXRlIGFsbG93LW91dHNpZGUtc2Nyb2xsPSJbW2FsbG93T3V0c2lkZVNjcm9sbF1dIiByZXN0b3JlLWZvY3VzLW9uLWNsb3NlPSJbW3Jlc3RvcmVGb2N1c09uQ2xvc2VdXSIgZXhwYW5kLXNpemluZy10YXJnZXQtZm9yLXNjcm9sbGJhcnM9IltbZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFyc11dIj4KICAgICAgPCEtLSBzdXBwb3J0IGh5YnJpZCBtb2RlOiB1c2VyIG1pZ2h0IGJlIHVzaW5nIHBhcGVyLW1lbnUtYnV0dG9uIDEueCB3aGljaCBkaXN0cmlidXRlcyB2aWEgPGNvbnRlbnQ+IC0tPgogICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi10cmlnZ2VyIiBzbG90PSJkcm9wZG93bi10cmlnZ2VyIj4KICAgICAgICA8cGFwZXItcmlwcGxlPjwvcGFwZXItcmlwcGxlPgogICAgICAgIDwhLS0gcGFwZXItaW5wdXQgaGFzIHR5cGU9InRleHQiIGZvciBhMTF5LCBkbyBub3QgcmVtb3ZlIC0tPgogICAgICAgIDxwYXBlci1pbnB1dCBpZD0iaW5wdXQiIHR5cGU9InRleHQiIGludmFsaWQ9IltbaW52YWxpZF1dIiByZWFkb25seSBkaXNhYmxlZD0iW1tkaXNhYmxlZF1dIiB2YWx1ZT0iW1t2YWx1ZV1dIiBwbGFjZWhvbGRlcj0iW1twbGFjZWhvbGRlcl1dIiBlcnJvci1tZXNzYWdlPSJbW2Vycm9yTWVzc2FnZV1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbYWx3YXlzRmxvYXRMYWJlbF1dIiBuby1sYWJlbC1mbG9hdD0iW1tub0xhYmVsRmxvYXRdXSIgbGFiZWw9IltbbGFiZWxdXSIgaW5wdXQtcm9sZT0iYnV0dG9uIiBpbnB1dC1hcmlhLWhhc3BvcHVwPSJsaXN0Ym94IiBhdXRvY29tcGxldGU9Im9mZiI+CiAgICAgICAgICA8IS0tIHN1cHBvcnQgaHlicmlkIG1vZGU6IHVzZXIgbWlnaHQgYmUgdXNpbmcgcGFwZXItaW5wdXQgMS54IHdoaWNoIGRpc3RyaWJ1dGVzIHZpYSA8Y29udGVudD4gLS0+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249InBhcGVyLWRyb3Bkb3duLW1lbnU6YXJyb3ctZHJvcC1kb3duIiBzdWZmaXggc2xvdD0ic3VmZml4Ij48L2lyb24taWNvbj4KICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICA8L2Rpdj4KICAgICAgPHNsb3QgaWQ9ImNvbnRlbnQiIG5hbWU9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPjwvc2xvdD4KICAgIDwvcGFwZXItbWVudS1idXR0b24+CmAsaXM6InBhcGVyLWRyb3Bkb3duLW1lbnUiLGJlaGF2aW9yczpbd2gsTmksTWgsRWhdLHByb3BlcnRpZXM6e3NlbGVjdGVkSXRlbUxhYmVsOnt0eXBlOlN0cmluZyxub3RpZnk6ITAscmVhZE9ubHk6ITB9LHNlbGVjdGVkSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxsYWJlbDp7dHlwZTpTdHJpbmd9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZ30sZXJyb3JNZXNzYWdlOnt0eXBlOlN0cmluZ30sb3BlbmVkOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLHZhbHVlOiExLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LGFsbG93T3V0c2lkZVNjcm9sbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0xhYmVsRmxvYXQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9BbmltYXRpb25zOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InJpZ2h0In0sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6InRvcCJ9LHZlcnRpY2FsT2Zmc2V0Ok51bWJlcixkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxleHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxsaXN0ZW5lcnM6e3RhcDoiX29uVGFwIn0sa2V5QmluZGluZ3M6eyJ1cCBkb3duIjoib3BlbiIsZXNjOiJjbG9zZSJ9LG9ic2VydmVyczpbIl9zZWxlY3RlZEl0ZW1DaGFuZ2VkKHNlbGVjdGVkSXRlbSkiXSxfYXR0YWNoRG9tKGUpe2xldCB0PXVlKHRoaXMpO3JldHVybiB0LmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiIsZGVsZWdhdGVzRm9jdXM6ITAsc2hhZHlVcGdyYWRlRnJhZ21lbnQ6ZX0pLHQuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChlKSxOYmUucHJvdG90eXBlLl9hdHRhY2hEb20uY2FsbCh0aGlzLGUpfSxmb2N1cygpe3RoaXMuJC5pbnB1dC5fZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29udGVudEVsZW1lbnQ7ZSYmZS5zZWxlY3RlZEl0ZW0mJnRoaXMuX3NldFNlbGVjdGVkSXRlbShlLnNlbGVjdGVkSXRlbSl9LGdldCBjb250ZW50RWxlbWVudCgpe2Zvcih2YXIgZT16dCh0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLHQ9MCxyPWUubGVuZ3RoO3Q8cjt0KyspaWYoZVt0XS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiBlW3RdfSxvcGVuOmZ1bmN0aW9uKCl7dGhpcy4kLm1lbnVCdXR0b24ub3BlbigpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuJC5tZW51QnV0dG9uLmNsb3NlKCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKGUuZGV0YWlsLml0ZW0pfSxfb25Jcm9uRGVzZWxlY3Q6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKG51bGwpfSxfb25UYXA6ZnVuY3Rpb24oZSl7dGd0KGUpPT09dGhpcyYmdGhpcy5vcGVuKCl9LF9zZWxlY3RlZEl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO2U/dD1lLmxhYmVsfHxlLmdldEF0dHJpYnV0ZSgibGFiZWwiKXx8ZS50ZXh0Q29udGVudC50cmltKCk6dD0iIix0aGlzLnZhbHVlPXQsdGhpcy5fc2V0U2VsZWN0ZWRJdGVtTGFiZWwodCl9LF9jb21wdXRlTWVudVZlcnRpY2FsT2Zmc2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fChlPy00OjgpfSxfZ2V0VmFsaWRpdHk6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fCF0aGlzLnJlcXVpcmVkfHx0aGlzLnJlcXVpcmVkJiYhIXRoaXMudmFsdWV9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcGVuZWQ/InRydWUiOiJmYWxzZSIsdD10aGlzLmNvbnRlbnRFbGVtZW50O3QmJnQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixlKX19KTt2YXIgeFc9MSx4MHQ9MixUOT17b3V0ZXJTY3JvbGw6e3Njcm9sbDohMH0sc2hhZG93TW9kZTp7c3RhbmRhcmQ6eDB0LHdhdGVyZmFsbDp4Vywid2F0ZXJmYWxsLXRhbGwiOnhXfSx0YWxsTW9kZTp7IndhdGVyZmFsbC10YWxsIjohMH19O1l0KHtfdGVtcGxhdGU6UWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dC12ZXJ0aWNhbDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbDsKICAgICAgfQoKICAgICAgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgIH0KCiAgICAgICNtYWluUGFuZWwgewogICAgICAgIEBhcHBseSAtLWxheW91dC12ZXJ0aWNhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtYm9keTsKICAgICAgfQoKICAgICAgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHNjcm9sbAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9c2Nyb2xsXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zY3JvbGwtY29udGFpbmVyOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CgogICAgICA6aG9zdChbbW9kZT1zY3JvbGxdKSB7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiBjb3ZlcgogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9Y292ZXJdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLWNvdmVyLWNvbnRhaW5lcjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICA6aG9zdChbbW9kZT1jb3Zlcl0pICNtYWluUGFuZWwgewogICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHN0YW5kYXJkCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1zdGFuZGFyZF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtc3RhbmRhcmQtY29udGFpbmVyOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiBzZWFtZWQKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXNlYW1lZF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtc2VhbWVkLWNvbnRhaW5lcjsKICAgICAgfQoKCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHdhdGVyZmFsbAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9d2F0ZXJmYWxsXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC13YXRlcmZhbGwtY29udGFpbmVyOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiB3YXRlcmZhbGwtdGFsbAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9d2F0ZXJmYWxsLXRhbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXdhdGVyZmFsbC10YWxsLWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgI2Ryb3BTaGFkb3cgewogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41czsKICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtc2hhZG93OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAjZHJvcFNoYWRvdy5oYXMtc2hhZG93IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciA+IDo6c2xvdHRlZCguZml0KSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQoKICAgIDwvc3R5bGU+CgogICAgPHNsb3QgaWQ9ImhlYWRlclNsb3QiIG5hbWU9ImhlYWRlciI+PC9zbG90PgoKICAgIDxkaXYgaWQ9Im1haW5QYW5lbCI+CiAgICAgIDxkaXYgaWQ9Im1haW5Db250YWluZXIiIGNsYXNzXCQ9IltbX2NvbXB1dGVNYWluQ29udGFpbmVyQ2xhc3MobW9kZSldXSI+CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iZHJvcFNoYWRvdyI+PC9kaXY+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItaGVhZGVyLXBhbmVsIixwcm9wZXJ0aWVzOnttb2RlOnt0eXBlOlN0cmluZyx2YWx1ZToic3RhbmRhcmQiLG9ic2VydmVyOiJfbW9kZUNoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sc2hhZG93Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHRhbGxDbGFzczp7dHlwZTpTdHJpbmcsdmFsdWU6InRhbGwifSxhdFRvcDp7dHlwZTpCb29sZWFuLHZhbHVlOiEwLG5vdGlmeTohMCxyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fSxvYnNlcnZlcnM6WyJfY29tcHV0ZURyb3BTaGFkb3dIaWRkZW4oYXRUb3AsIG1vZGUsIHNoYWRvdykiXSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2FkZExpc3RlbmVyKCksdGhpcy5fa2VlcFNjcm9sbGluZ1N0YXRlKCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXIoKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEhhbmRsZXI9dGhpcy5fc2Nyb2xsLmJpbmQodGhpcyksY29uc29sZS53YXJuKHRoaXMuaXMsImlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYXBwLWxheW91dCBpbnN0ZWFkISIpfSxnZXQgaGVhZGVyKCl7cmV0dXJuIHp0KHRoaXMuJC5oZWFkZXJTbG90KS5nZXREaXN0cmlidXRlZE5vZGVzKClbMF19LGdldCBzY3JvbGxlcigpe3JldHVybiB0aGlzLl9nZXRTY3JvbGxlckZvck1vZGUodGhpcy5tb2RlKX0sZ2V0IHZpc2libGVTaGFkb3coKXtyZXR1cm4gdGhpcy4kLmRyb3BTaGFkb3cuY2xhc3NMaXN0LmNvbnRhaW5zKCJoYXMtc2hhZG93Iil9LF9jb21wdXRlRHJvcFNoYWRvd0hpZGRlbjpmdW5jdGlvbihlLHQscil7dmFyIG49VDkuc2hhZG93TW9kZVt0XTt0aGlzLnNoYWRvdz90aGlzLnRvZ2dsZUNsYXNzKCJoYXMtc2hhZG93IiwhMCx0aGlzLiQuZHJvcFNoYWRvdyk6bj09PXgwdD90aGlzLnRvZ2dsZUNsYXNzKCJoYXMtc2hhZG93IiwhMCx0aGlzLiQuZHJvcFNoYWRvdyk6bj09PXhXJiYhZT90aGlzLnRvZ2dsZUNsYXNzKCJoYXMtc2hhZG93IiwhMCx0aGlzLiQuZHJvcFNoYWRvdyk6dGhpcy50b2dnbGVDbGFzcygiaGFzLXNoYWRvdyIsITEsdGhpcy4kLmRyb3BTaGFkb3cpfSxfY29tcHV0ZU1haW5Db250YWluZXJDbGFzczpmdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gdC5mbGV4PWUhPT0iY292ZXIiLE9iamVjdC5rZXlzKHQpLmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gdFtyXX0pLmpvaW4oIiAiKX0sX2FkZExpc3RlbmVyOmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuc2Nyb2xsSGFuZGxlcil9LF9yZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXIpfSxfbW9kZUNoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj1UOSxuPXRoaXMuaGVhZGVyLGk9MjAwO24mJihyLnRhbGxNb2RlW3RdJiYhci50YWxsTW9kZVtlXT8obi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMudGFsbENsYXNzKSx0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7bi5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRlIil9LGkpKTp0aGlzLnRvZ2dsZUNsYXNzKCJhbmltYXRlIixyLnRhbGxNb2RlW2VdLG4pKSx0aGlzLl9rZWVwU2Nyb2xsaW5nU3RhdGUoKX0sX2tlZXBTY3JvbGxpbmdTdGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc2Nyb2xsZXIsdD10aGlzLmhlYWRlcjt0aGlzLl9zZXRBdFRvcChlLnNjcm9sbFRvcD09PTApLHQmJnRoaXMudGFsbENsYXNzJiZUOS50YWxsTW9kZVt0aGlzLm1vZGVdJiZ0aGlzLnRvZ2dsZUNsYXNzKHRoaXMudGFsbENsYXNzLHRoaXMuYXRUb3B8fHQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMudGFsbENsYXNzKSYmZS5zY3JvbGxIZWlnaHQ8dGhpcy5vZmZzZXRIZWlnaHQsdCl9LF9zY3JvbGw6ZnVuY3Rpb24oKXt0aGlzLl9rZWVwU2Nyb2xsaW5nU3RhdGUoKSx0aGlzLmZpcmUoImNvbnRlbnQtc2Nyb2xsIix7dGFyZ2V0OnRoaXMuc2Nyb2xsZXJ9LHtidWJibGVzOiExfSl9LF9nZXRTY3JvbGxlckZvck1vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIFQ5Lm91dGVyU2Nyb2xsW2VdP3RoaXM6dGhpcy4kLm1haW5Db250YWluZXJ9fSk7WXQoe2lzOiJwYXBlci1pY29uLWJ1dHRvbiIsX3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHotaW5kZXg6IDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKCiAgICAgICAgLyoKICAgICAgICAgIE5PVEU6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlIHZhbHVlIHRvCiAgICAgICAgICBiZSBcYHRyYW5zcGFyZW50XGAuCiAgICAgICAgKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgLyogQmVjYXVzZSBvZiBwb2x5bWVyLzI1NTgsIHRoaXMgc3R5bGUgaGFzIGxvd2VyIHNwZWNpZmljaXR5IHRoYW4gKiAqLwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1idXR0b247CiAgICAgIH0KCiAgICAgIDpob3N0ICNpbmsgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pY29uLWJ1dHRvbi1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pY29uLWJ1dHRvbi1kaXNhYmxlZC10ZXh0LCB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKSk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBhdXRvOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWJ1dHRvbi1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpob3ZlcikgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWljb24tYnV0dG9uLWhvdmVyOwogICAgICB9CgogICAgICBpcm9uLWljb24gewogICAgICAgIC0taXJvbi1pY29uLXdpZHRoOiAxMDAlOwogICAgICAgIC0taXJvbi1pY29uLWhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8aXJvbi1pY29uIGlkPSJpY29uIiBzcmM9Iltbc3JjXV0iIGljb249IltbaWNvbl1dIgogICAgICAgICAgICAgICBhbHQkPSJbW2FsdF1dIj48L2lyb24taWNvbj4KICBgLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJidXR0b24iLHRhYmluZGV4OiIwIn0sYmVoYXZpb3JzOltZeF0scmVnaXN0ZXJlZDpmdW5jdGlvbigpe3RoaXMuX3RlbXBsYXRlLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpfSxwcm9wZXJ0aWVzOntzcmM6e3R5cGU6U3RyaW5nfSxpY29uOnt0eXBlOlN0cmluZ30sYWx0Ont0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2FsdENoYW5nZWQifX0sX2FsdENoYW5nZWQ6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpOyghcnx8dD09cikmJnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixlKX19KTtZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiA0MDBweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZDsKICAgICAgICBwYWRkaW5nOiAycHg7CiAgICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0YXJlYTsKICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRhcmVhOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5taXJyb3ItdGV4dCB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhOwogICAgICB9CgogICAgICAuZml0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgICB0ZXh0YXJlYSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIHJlc2l6ZTogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiBpbmhlcml0OwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICAgIC8qIHNlZSBjb21tZW50cyBpbiB0ZW1wbGF0ZSAqLwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7CiAgICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhOwogICAgICB9CgogICAgICB0ZXh0YXJlYTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS1wbGFjZWhvbGRlcjsKICAgICAgfQoKICAgICAgdGV4dGFyZWE6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS1wbGFjZWhvbGRlcjsKICAgICAgfQoKICAgICAgdGV4dGFyZWE6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWEtcGxhY2Vob2xkZXI7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS1wbGFjZWhvbGRlcjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8IS0tIHRoZSBtaXJyb3Igc2l6ZXMgdGhlIGlucHV0L3RleHRhcmVhIHNvIGl0IGdyb3dzIHdpdGggdHlwaW5nIC0tPgogICAgPCEtLSB1c2UgJiMxNjA7IGluc3RlYWQgJm5ic3A7IG9mIHRvIGFsbG93IHRoaXMgZWxlbWVudCB0byBiZSB1c2VkIGluIFhIVE1MIC0tPgogICAgPGRpdiBpZD0ibWlycm9yIiBjbGFzcz0ibWlycm9yLXRleHQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4mbmJzcDs8L2Rpdj4KCiAgICA8IS0tIHNpemUgdGhlIGlucHV0L3RleHRhcmVhIHdpdGggYSBkaXYsIGJlY2F1c2UgdGhlIHRleHRhcmVhIGhhcyBpbnRyaW5zaWMgc2l6ZSBpbiBmZiAtLT4KICAgIDxkaXYgY2xhc3M9InRleHRhcmVhLWNvbnRhaW5lciBmaXQiPgogICAgICA8dGV4dGFyZWEgaWQ9InRleHRhcmVhIiBuYW1lJD0iW1tuYW1lXV0iIGFyaWEtbGFiZWwkPSJbW2xhYmVsXV0iIGF1dG9jb21wbGV0ZSQ9IltbYXV0b2NvbXBsZXRlXV0iIGF1dG9mb2N1cyQ9IltbYXV0b2ZvY3VzXV0iIGF1dG9jYXBpdGFsaXplJD0iW1thdXRvY2FwaXRhbGl6ZV1dIiBpbnB1dG1vZGUkPSJbW2lucHV0bW9kZV1dIiBwbGFjZWhvbGRlciQ9IltbcGxhY2Vob2xkZXJdXSIgcmVhZG9ubHkkPSJbW3JlYWRvbmx5XV0iIHJlcXVpcmVkJD0iW1tyZXF1aXJlZF1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgcm93cyQ9Iltbcm93c11dIiBtaW5sZW5ndGgkPSJbW21pbmxlbmd0aF1dIiBtYXhsZW5ndGgkPSJbW21heGxlbmd0aF1dIj48L3RleHRhcmVhPgogICAgPC9kaXY+CmAsaXM6Imlyb24tYXV0b2dyb3ctdGV4dGFyZWEiLGJlaGF2aW9yczpbRWgsTmldLHByb3BlcnRpZXM6e3ZhbHVlOntvYnNlcnZlcjoiX3ZhbHVlQ2hhbmdlZCIsdHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxiaW5kVmFsdWU6e29ic2VydmVyOiJfYmluZFZhbHVlQ2hhbmdlZCIsdHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxyb3dzOnt0eXBlOk51bWJlcix2YWx1ZToxLG9ic2VydmVyOiJfdXBkYXRlQ2FjaGVkIn0sbWF4Um93czp7dHlwZTpOdW1iZXIsdmFsdWU6MCxvYnNlcnZlcjoiX3VwZGF0ZUNhY2hlZCJ9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9mZiJ9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdXRvY2FwaXRhbGl6ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im5vbmUifSxpbnB1dG1vZGU6e3R5cGU6U3RyaW5nfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmd9LHJlYWRvbmx5Ont0eXBlOlN0cmluZ30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbn0sbWlubGVuZ3RoOnt0eXBlOk51bWJlcn0sbWF4bGVuZ3RoOnt0eXBlOk51bWJlcn0sbGFiZWw6e3R5cGU6U3RyaW5nfX0sbGlzdGVuZXJzOntpbnB1dDoiX29uSW5wdXQifSxnZXQgdGV4dGFyZWEoKXtyZXR1cm4gdGhpcy4kLnRleHRhcmVhfSxnZXQgc2VsZWN0aW9uU3RhcnQoKXtyZXR1cm4gdGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0fSxnZXQgc2VsZWN0aW9uRW5kKCl7cmV0dXJuIHRoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25FbmR9LHNldCBzZWxlY3Rpb25TdGFydChlKXt0aGlzLiQudGV4dGFyZWEuc2VsZWN0aW9uU3RhcnQ9ZX0sc2V0IHNlbGVjdGlvbkVuZChlKXt0aGlzLiQudGV4dGFyZWEuc2VsZWN0aW9uRW5kPWV9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dmFyIGU9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpbb2FdZHxob25lKS8pJiYhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvT1MgMVszNDU2Nzg5XS8pO2UmJih0aGlzLiQudGV4dGFyZWEuc3R5bGUubWFyZ2luTGVmdD0iLTNweCIpfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJC50ZXh0YXJlYS52YWxpZGl0eS52YWxpZDtyZXR1cm4gZSYmKHRoaXMucmVxdWlyZWQmJnRoaXMudmFsdWU9PT0iIj9lPSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJihlPUVoLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLnZhbHVlKSkpLHRoaXMuaW52YWxpZD0hZSx0aGlzLmZpcmUoImlyb24taW5wdXQtdmFsaWRhdGUiKSxlfSxfYmluZFZhbHVlQ2hhbmdlZDpmdW5jdGlvbihlKXt0aGlzLnZhbHVlPWV9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50ZXh0YXJlYTshdHx8KHQudmFsdWUhPT1lJiYodC52YWx1ZT1lfHxlPT09MD9lOiIiKSx0aGlzLmJpbmRWYWx1ZT1lLHRoaXMuJC5taXJyb3IuaW5uZXJIVE1MPXRoaXMuX3ZhbHVlRm9yTWlycm9yKCksdGhpcy5maXJlKCJiaW5kLXZhbHVlLWNoYW5nZWQiLHt2YWx1ZTp0aGlzLmJpbmRWYWx1ZX0pKX0sX29uSW5wdXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9enQoZSkucGF0aDt0aGlzLnZhbHVlPXQ/dFswXS52YWx1ZTplLnRhcmdldC52YWx1ZX0sX2NvbnN0cmFpbjpmdW5jdGlvbihlKXt2YXIgdDtmb3IoZT1lfHxbIiJdLHRoaXMubWF4Um93cz4wJiZlLmxlbmd0aD50aGlzLm1heFJvd3M/dD1lLnNsaWNlKDAsdGhpcy5tYXhSb3dzKTp0PWUuc2xpY2UoMCk7dGhpcy5yb3dzPjAmJnQubGVuZ3RoPHRoaXMucm93czspdC5wdXNoKCIiKTtyZXR1cm4gdC5qb2luKCI8YnIvPiIpKyImIzE2MDsifSxfdmFsdWVGb3JNaXJyb3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRleHRhcmVhO2lmKCEhZSlyZXR1cm4gdGhpcy50b2tlbnM9ZSYmZS52YWx1ZT9lLnZhbHVlLnJlcGxhY2UoLyYvZ20sIiZhbXA7IikucmVwbGFjZSgvIi9nbSwiJnF1b3Q7IikucmVwbGFjZSgvJy9nbSwiJiMzOTsiKS5yZXBsYWNlKC88L2dtLCImbHQ7IikucmVwbGFjZSgvPi9nbSwiJmd0OyIpLnNwbGl0KGAKYCk6WyIiXSx0aGlzLl9jb25zdHJhaW4odGhpcy50b2tlbnMpfSxfdXBkYXRlQ2FjaGVkOmZ1bmN0aW9uKCl7dGhpcy4kLm1pcnJvci5pbm5lckhUTUw9dGhpcy5fY29uc3RyYWluKHRoaXMudG9rZW5zKX19KTtZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGxhYmVsIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaW5wdXQtY29udGFpbmVyIG5vLWxhYmVsLWZsb2F0JD0iW1tub0xhYmVsRmxvYXRdXSIgYWx3YXlzLWZsb2F0LWxhYmVsPSJbW19jb21wdXRlQWx3YXlzRmxvYXRMYWJlbChhbHdheXNGbG9hdExhYmVsLHBsYWNlaG9sZGVyKV1dIiBhdXRvLXZhbGlkYXRlJD0iW1thdXRvVmFsaWRhdGVdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIGludmFsaWQ9IltbaW52YWxpZF1dIj4KCiAgICAgIDxsYWJlbCBoaWRkZW4kPSJbWyFsYWJlbF1dIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9yJD0iW1tfaW5wdXRJZF1dIiBzbG90PSJsYWJlbCI+W1tsYWJlbF1dPC9sYWJlbD4KCiAgICAgIDxpcm9uLWF1dG9ncm93LXRleHRhcmVhIGNsYXNzPSJwYXBlci1pbnB1dC1pbnB1dCIgc2xvdD0iaW5wdXQiIGlkJD0iW1tfaW5wdXRJZF1dIiBhcmlhLWxhYmVsbGVkYnkkPSJbW19hcmlhTGFiZWxsZWRCeV1dIiBhcmlhLWRlc2NyaWJlZGJ5JD0iW1tfYXJpYURlc2NyaWJlZEJ5XV0iIGJpbmQtdmFsdWU9Int7dmFsdWV9fSIgaW52YWxpZD0ie3tpbnZhbGlkfX0iIHZhbGlkYXRvciQ9IltbdmFsaWRhdG9yXV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiBhdXRvY29tcGxldGUkPSJbW2F1dG9jb21wbGV0ZV1dIiBhdXRvZm9jdXMkPSJbW2F1dG9mb2N1c11dIiBpbnB1dG1vZGUkPSJbW2lucHV0bW9kZV1dIiBuYW1lJD0iW1tuYW1lXV0iIHBsYWNlaG9sZGVyJD0iW1twbGFjZWhvbGRlcl1dIiByZWFkb25seSQ9IltbcmVhZG9ubHldXSIgcmVxdWlyZWQkPSJbW3JlcXVpcmVkXV0iIG1pbmxlbmd0aCQ9IltbbWlubGVuZ3RoXV0iIG1heGxlbmd0aCQ9IltbbWF4bGVuZ3RoXV0iIGF1dG9jYXBpdGFsaXplJD0iW1thdXRvY2FwaXRhbGl6ZV1dIiByb3dzJD0iW1tyb3dzXV0iIG1heC1yb3dzJD0iW1ttYXhSb3dzXV0iIG9uLWNoYW5nZT0iX29uQ2hhbmdlIj48L2lyb24tYXV0b2dyb3ctdGV4dGFyZWE+CgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZXJyb3JNZXNzYWdlXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1lcnJvciBhcmlhLWxpdmU9ImFzc2VydGl2ZSIgc2xvdD0iYWRkLW9uIj5bW2Vycm9yTWVzc2FnZV1dPC9wYXBlci1pbnB1dC1lcnJvcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFyQ291bnRlcl1dIj4KICAgICAgICA8cGFwZXItaW5wdXQtY2hhci1jb3VudGVyIHNsb3Q9ImFkZC1vbiI+PC9wYXBlci1pbnB1dC1jaGFyLWNvdW50ZXI+CiAgICAgIDwvdGVtcGxhdGU+CgogICAgPC9wYXBlci1pbnB1dC1jb250YWluZXI+CmAsaXM6InBhcGVyLXRleHRhcmVhIixiZWhhdmlvcnM6W0U5LE1oXSxwcm9wZXJ0aWVzOntfYXJpYUxhYmVsbGVkQnk6e29ic2VydmVyOiJfYXJpYUxhYmVsbGVkQnlDaGFuZ2VkIix0eXBlOlN0cmluZ30sX2FyaWFEZXNjcmliZWRCeTp7b2JzZXJ2ZXI6Il9hcmlhRGVzY3JpYmVkQnlDaGFuZ2VkIix0eXBlOlN0cmluZ30sdmFsdWU6e3R5cGU6U3RyaW5nfSxyb3dzOnt0eXBlOk51bWJlcix2YWx1ZToxfSxtYXhSb3dzOnt0eXBlOk51bWJlcix2YWx1ZTowfX0sZ2V0IHNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydH0sc2V0IHNlbGVjdGlvblN0YXJ0KGUpe3RoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydD1lfSxnZXQgc2VsZWN0aW9uRW5kKCl7cmV0dXJuIHRoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25FbmR9LHNldCBzZWxlY3Rpb25FbmQoZSl7dGhpcy4kLmlucHV0LnRleHRhcmVhLnNlbGVjdGlvbkVuZD1lfSxfYXJpYUxhYmVsbGVkQnlDaGFuZ2VkOmZ1bmN0aW9uKGUpe3RoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLGUpfSxfYXJpYURlc2NyaWJlZEJ5Q2hhbmdlZDpmdW5jdGlvbihlKXt0aGlzLl9mb2N1c2FibGVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsZSl9LGdldCBfZm9jdXNhYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudC50ZXh0YXJlYX19KTt2YXIgYlc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtiVy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKTtiVy5pbm5lckhUTUw9YDxkb20tbW9kdWxlIGlkPSJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QsIC5wYXBlci1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tcGFwZXItaXRlbS1taW4taGVpZ2h0LCA0OHB4KTsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgICAgfQoKICAgICAgLnBhcGVyLWl0ZW0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBib3JkZXI6bm9uZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSwgLnBhcGVyLWl0ZW1baGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICA6aG9zdCguaXJvbi1zZWxlY3RlZCksIC5wYXBlci1pdGVtLmlyb24tc2VsZWN0ZWQgewogICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLXNlbGVjdGVkLXdlaWdodCwgYm9sZCk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0tc2VsZWN0ZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pLCAucGFwZXItaXRlbVtkaXNhYmxlZF0gewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pdGVtLWRpc2FibGVkLWNvbG9yLCB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0tZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmb2N1cyksIC5wYXBlci1pdGVtOmZvY3VzIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3V0bGluZTogMDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1mb2N1c2VkOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpOmJlZm9yZSwgLnBhcGVyLWl0ZW06Zm9jdXM6YmVmb3JlIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwoKICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tZGFyay1kaXZpZGVyLW9wYWNpdHkpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWZvY3VzZWQtYmVmb3JlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYlcuY29udGVudCk7dmFyIERiZT17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im9wdGlvbiIsdGFiaW5kZXg6IjAifX0sQzk9W3doLE5pLERiZV07WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLWl0ZW0tc2hhcmVkLXN0eWxlcyI+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItaXRlbSIsYmVoYXZpb3JzOltDOV19KTtZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOyAvKiBuZWVkZWQgZm9yIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzIHRvIHdvcmsgb24gZmYgKi8KICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgIH0KCiAgICAgIDpob3N0KFt0d28tbGluZV0pIHsKICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLWJvZHktdHdvLWxpbmUtbWluLWhlaWdodCwgNzJweCk7CiAgICAgIH0KCiAgICAgIDpob3N0KFt0aHJlZS1saW5lXSkgewogICAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLXBhcGVyLWl0ZW0tYm9keS10aHJlZS1saW5lLW1pbi1oZWlnaHQsIDg4cHgpOwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZChbc2Vjb25kYXJ5XSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtYm9keTE7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pdGVtLWJvZHktc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWJvZHktc2Vjb25kYXJ5OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItaXRlbS1ib2R5In0pO1l0KHtfdGVtcGxhdGU6UWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXMiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWl0ZW07CiAgICAgIH0KCiAgICAgIC5jb250ZW50LWljb24gewogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CgogICAgICAgIHdpZHRoOiB2YXIoLS1wYXBlci1pdGVtLWljb24td2lkdGgsIDU2cHgpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0taWNvbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJjb250ZW50SWNvbiIgY2xhc3M9ImNvbnRlbnQtaWNvbiI+CiAgICAgIDxzbG90IG5hbWU9Iml0ZW0taWNvbiI+PC9zbG90PgogICAgPC9kaXY+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWljb24taXRlbSIsYmVoYXZpb3JzOltDOV19KTt2YXIgd1c9e3Byb3BlcnRpZXM6e211bHRpOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Im11bHRpQ2hhbmdlZCJ9LHNlbGVjdGVkVmFsdWVzOnt0eXBlOkFycmF5LG5vdGlmeTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sc2VsZWN0ZWRJdGVtczp7dHlwZTpBcnJheSxyZWFkT25seTohMCxub3RpZnk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlU2VsZWN0ZWQoc2VsZWN0ZWRWYWx1ZXMuc3BsaWNlcykiXSxzZWxlY3Q6ZnVuY3Rpb24oZSl7dGhpcy5tdWx0aT90aGlzLl90b2dnbGVTZWxlY3RlZChlKTp0aGlzLnNlbGVjdGVkPWV9LG11bHRpQ2hhbmdlZDpmdW5jdGlvbihlKXt0aGlzLl9zZWxlY3Rpb24ubXVsdGk9ZSx0aGlzLl91cGRhdGVTZWxlY3RlZCgpfSxnZXQgX3Nob3VsZFVwZGF0ZVNlbGVjdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGVkIT1udWxsfHx0aGlzLnNlbGVjdGVkVmFsdWVzIT1udWxsJiZ0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aH0sX3VwZGF0ZUF0dHJGb3JTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMubXVsdGk/dGhpcy5zZWxlY3RlZEl0ZW1zJiZ0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoPjAmJih0aGlzLnNlbGVjdGVkVmFsdWVzPXRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2luZGV4VG9WYWx1ZSh0aGlzLmluZGV4T2YoZSkpfSx0aGlzKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPW51bGx9LHRoaXMpKTpiaC5fdXBkYXRlQXR0ckZvclNlbGVjdGVkLmFwcGx5KHRoaXMpfSxfdXBkYXRlU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm11bHRpP3RoaXMuX3NlbGVjdE11bHRpKHRoaXMuc2VsZWN0ZWRWYWx1ZXMpOnRoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0TXVsdGk6ZnVuY3Rpb24oZSl7ZT1lfHxbXTt2YXIgdD0odGhpcy5fdmFsdWVzVG9JdGVtcyhlKXx8W10pLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gaSE9bnVsbH0pO3RoaXMuX3NlbGVjdGlvbi5jbGVhcih0KTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0aGlzLl9zZWxlY3Rpb24uc2V0SXRlbVNlbGVjdGVkKHRbcl0sITApO2lmKHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24mJiF0aGlzLl9zZWxlY3Rpb24uZ2V0KCkubGVuZ3RoKXt2YXIgbj10aGlzLl92YWx1ZVRvSXRlbSh0aGlzLmZhbGxiYWNrU2VsZWN0aW9uKTtuJiZ0aGlzLnNlbGVjdCh0aGlzLmZhbGxiYWNrU2VsZWN0aW9uKX19LF9zZWxlY3Rpb25DaGFuZ2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9zZWxlY3Rpb24uZ2V0KCk7dGhpcy5tdWx0aT8odGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyhlKSx0aGlzLl9zZXRTZWxlY3RlZEl0ZW0oZS5sZW5ndGg/ZVswXTpudWxsKSk6ZSE9bnVsbD8odGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyhbZV0pLHRoaXMuX3NldFNlbGVjdGVkSXRlbShlKSk6KHRoaXMuX3NldFNlbGVjdGVkSXRlbXMoW10pLHRoaXMuX3NldFNlbGVjdGVkSXRlbShudWxsKSl9LF90b2dnbGVTZWxlY3RlZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnNlbGVjdGVkVmFsdWVzLmluZGV4T2YoZSkscj10PDA7cj90aGlzLnB1c2goInNlbGVjdGVkVmFsdWVzIixlKTp0aGlzLnNwbGljZSgic2VsZWN0ZWRWYWx1ZXMiLHQsMSl9LF92YWx1ZXNUb0l0ZW1zOmZ1bmN0aW9uKGUpe3JldHVybiBlPT1udWxsP251bGw6ZS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZhbHVlVG9JdGVtKHQpfSx0aGlzKX19LGIwdD1bYmgsd1ddO3ZhciBfXz17cHJvcGVydGllczp7Zm9jdXNlZEl0ZW06e29ic2VydmVyOiJfZm9jdXNlZEl0ZW1DaGFuZ2VkIixyZWFkT25seTohMCx0eXBlOk9iamVjdH0sYXR0ckZvckl0ZW1UaXRsZTp7dHlwZTpTdHJpbmd9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9kaXNhYmxlZENoYW5nZWQifX0sX01PRElGSUVSX0tFWVM6WyJBbHQiLCJBbHRHcmFwaCIsIkNhcHNMb2NrIiwiQ29udHJvbCIsIkZuIiwiRm5Mb2NrIiwiSHlwZXIiLCJNZXRhIiwiTnVtTG9jayIsIk9TIiwiU2Nyb2xsTG9jayIsIlNoaWZ0IiwiU3VwZXIiLCJTeW1ib2wiLCJTeW1ib2xMb2NrIl0sX1NFQVJDSF9SRVNFVF9USU1FT1VUX01TOjFlMyxfcHJldmlvdXNUYWJJbmRleDowLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJtZW51In0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZU11bHRpc2VsZWN0YWJsZShtdWx0aSkiXSxsaXN0ZW5lcnM6e2ZvY3VzOiJfb25Gb2N1cyIsa2V5ZG93bjoiX29uS2V5ZG93biIsImlyb24taXRlbXMtY2hhbmdlZCI6Il9vbklyb25JdGVtc0NoYW5nZWQifSxrZXlCaW5kaW5nczp7dXA6Il9vblVwS2V5Iixkb3duOiJfb25Eb3duS2V5Iixlc2M6Il9vbkVzY0tleSIsInNoaWZ0K3RhYjprZXlkb3duIjoiX29uU2hpZnRUYWJEb3duIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZXNldFRhYmluZGljZXMoKX0sc2VsZWN0OmZ1bmN0aW9uKGUpe3RoaXMuX2RlZmF1bHRGb2N1c0FzeW5jJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyksdGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9bnVsbCk7dmFyIHQ9dGhpcy5fdmFsdWVUb0l0ZW0oZSk7dCYmdC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil8fCh0aGlzLl9zZXRGb2N1c2VkSXRlbSh0KSx3Vy5zZWxlY3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sX3Jlc2V0VGFiaW5kaWNlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMubXVsdGk/dGhpcy5zZWxlY3RlZEl0ZW1zJiZ0aGlzLnNlbGVjdGVkSXRlbXNbMF06dGhpcy5zZWxlY3RlZEl0ZW07dGhpcy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Quc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsdD09PWU/IjAiOiItMSIpLHQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIix0aGlzLl9zZWxlY3Rpb24uaXNTZWxlY3RlZCh0KSl9LHRoaXMpfSxfdXBkYXRlTXVsdGlzZWxlY3RhYmxlOmZ1bmN0aW9uKGUpe2U/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwidHJ1ZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIpfSxfZm9jdXNXaXRoS2V5Ym9hcmRFdmVudDpmdW5jdGlvbihlKXtpZih0aGlzLl9NT0RJRklFUl9LRVlTLmluZGV4T2YoZS5rZXkpPT09LTEpe3RoaXMuY2FuY2VsRGVib3VuY2VyKCJfY2xlYXJTZWFyY2hUZXh0Iik7dmFyIHQ9dGhpcy5fc2VhcmNoVGV4dHx8IiIscj1lLmtleSYmZS5rZXkubGVuZ3RoPT0xP2Uua2V5OlN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKTt0Kz1yLnRvTG9jYWxlTG93ZXJDYXNlKCk7Zm9yKHZhciBuPXQubGVuZ3RoLGk9MCxvO289dGhpcy5pdGVtc1tpXTtpKyspaWYoIW8uaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXt2YXIgYT10aGlzLmF0dHJGb3JJdGVtVGl0bGV8fCJ0ZXh0Q29udGVudCIscz0ob1thXXx8by5nZXRBdHRyaWJ1dGUoYSl8fCIiKS50cmltKCk7aWYoIShzLmxlbmd0aDxuKSYmcy5zbGljZSgwLG4pLnRvTG9jYWxlTG93ZXJDYXNlKCk9PXQpe3RoaXMuX3NldEZvY3VzZWRJdGVtKG8pO2JyZWFrfX10aGlzLl9zZWFyY2hUZXh0PXQsdGhpcy5kZWJvdW5jZSgiX2NsZWFyU2VhcmNoVGV4dCIsdGhpcy5fY2xlYXJTZWFyY2hUZXh0LHRoaXMuX1NFQVJDSF9SRVNFVF9USU1FT1VUX01TKX19LF9jbGVhclNlYXJjaFRleHQ6ZnVuY3Rpb24oKXt0aGlzLl9zZWFyY2hUZXh0PSIifSxfZm9jdXNQcmV2aW91czpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLml0ZW1zLmxlbmd0aCx0PU51bWJlcih0aGlzLmluZGV4T2YodGhpcy5mb2N1c2VkSXRlbSkpLHI9MTtyPGUrMTtyKyspe3ZhciBuPXRoaXMuaXRlbXNbKHQtcitlKSVlXTtpZighbi5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpe3ZhciBpPXp0KG4pLmdldE93bmVyUm9vdCgpfHxkb2N1bWVudDtpZih0aGlzLl9zZXRGb2N1c2VkSXRlbShuKSx6dChpKS5hY3RpdmVFbGVtZW50PT1uKXJldHVybn19fSxfZm9jdXNOZXh0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuaXRlbXMubGVuZ3RoLHQ9TnVtYmVyKHRoaXMuaW5kZXhPZih0aGlzLmZvY3VzZWRJdGVtKSkscj0xO3I8ZSsxO3IrKyl7dmFyIG49dGhpcy5pdGVtc1sodCtyKSVlXTtpZighbi5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpe3ZhciBpPXp0KG4pLmdldE93bmVyUm9vdCgpfHxkb2N1bWVudDtpZih0aGlzLl9zZXRGb2N1c2VkSXRlbShuKSx6dChpKS5hY3RpdmVFbGVtZW50PT1uKXJldHVybn19fSxfYXBwbHlTZWxlY3Rpb246ZnVuY3Rpb24oZSx0KXt0P2Uuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwidHJ1ZSIpOmUuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSxiaC5fYXBwbHlTZWxlY3Rpb24uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfZm9jdXNlZEl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7dCYmdC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSxlJiYhZS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikmJiF0aGlzLmRpc2FibGVkJiYoZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLGUuZm9jdXMoKSl9LF9vbklyb25JdGVtc0NoYW5nZWQ6ZnVuY3Rpb24oZSl7ZS5kZXRhaWwuYWRkZWROb2Rlcy5sZW5ndGgmJnRoaXMuX3Jlc2V0VGFiaW5kaWNlcygpfSxfb25TaGlmdFRhYkRvd246ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iik7X18uX3NoaWZ0VGFiUHJlc3NlZD0hMCx0aGlzLl9zZXRGb2N1c2VkSXRlbShudWxsKSx0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLHRoaXMuYXN5bmMoZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHQpLF9fLl9zaGlmdFRhYlByZXNzZWQ9ITF9LDEpfSxfb25Gb2N1czpmdW5jdGlvbihlKXtpZighX18uX3NoaWZ0VGFiUHJlc3NlZCl7dmFyIHQ9enQoZSkucm9vdFRhcmdldDt0IT09dGhpcyYmdHlwZW9mIHQudGFiSW5kZXghPSJ1bmRlZmluZWQiJiYhdGhpcy5pc0xpZ2h0RGVzY2VuZGFudCh0KXx8KHRoaXMuX2RlZmF1bHRGb2N1c0FzeW5jPXRoaXMuYXN5bmMoZnVuY3Rpb24oKXt2YXIgcj10aGlzLm11bHRpP3RoaXMuc2VsZWN0ZWRJdGVtcyYmdGhpcy5zZWxlY3RlZEl0ZW1zWzBdOnRoaXMuc2VsZWN0ZWRJdGVtO3RoaXMuX3NldEZvY3VzZWRJdGVtKG51bGwpLHI/dGhpcy5fc2V0Rm9jdXNlZEl0ZW0ocik6dGhpcy5pdGVtc1swXSYmdGhpcy5fZm9jdXNOZXh0KCl9KSl9fSxfb25VcEtleTpmdW5jdGlvbihlKXt0aGlzLl9mb2N1c1ByZXZpb3VzKCksZS5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxfb25Eb3duS2V5OmZ1bmN0aW9uKGUpe3RoaXMuX2ZvY3VzTmV4dCgpLGUuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRXNjS2V5OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZm9jdXNlZEl0ZW07dCYmdC5ibHVyKCl9LF9vbktleWRvd246ZnVuY3Rpb24oZSl7dGhpcy5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXMoZSwidXAgZG93biBlc2MiKXx8dGhpcy5fZm9jdXNXaXRoS2V5Ym9hcmRFdmVudChlKSxlLnN0b3BQcm9wYWdhdGlvbigpfSxfYWN0aXZhdGVIYW5kbGVyOmZ1bmN0aW9uKGUpe2JoLl9hY3RpdmF0ZUhhbmRsZXIuY2FsbCh0aGlzLGUpLGUuc3RvcFByb3BhZ2F0aW9uKCl9LF9kaXNhYmxlZENoYW5nZWQ6ZnVuY3Rpb24oZSl7ZT8odGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKT90aGlzLnRhYkluZGV4OjAsdGhpcy5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4IikpOnRoaXMuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHx0aGlzLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLHRoaXMuX3ByZXZpb3VzVGFiSW5kZXgpfX07X18uX3NoaWZ0VGFiUHJlc3NlZD0hMTt2YXIgQTk9W2IwdCxEbyxfX107WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogOHB4IDA7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLWxpc3Rib3gtYmFja2dyb3VuZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWxpc3Rib3gtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1saXN0Ym94OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItbGlzdGJveCIsYmVoYXZpb3JzOltBOV0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imxpc3Rib3gifX0pO3ZhciB3MHQ9UWAKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLW1hdGVyaWFsLXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iMSJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjIiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iNCJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi04ZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjUiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CmA7dzB0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodzB0LmNvbnRlbnQpO1l0KHtfdGVtcGxhdGU6UWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdChbYW5pbWF0ZWRdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItbWF0ZXJpYWwiLHByb3BlcnRpZXM6e2VsZXZhdGlvbjp7dHlwZTpOdW1iZXIscmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOjF9LGFuaW1hdGVkOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfX19KTt2YXIgUDk9e3Byb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LG1pbjp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LG1heDp7dHlwZTpOdW1iZXIsdmFsdWU6MTAwLG5vdGlmeTohMH0sc3RlcDp7dHlwZTpOdW1iZXIsdmFsdWU6MSxub3RpZnk6ITB9LHJhdGlvOnt0eXBlOk51bWJlcix2YWx1ZTowLHJlYWRPbmx5OiEwLG5vdGlmeTohMH19LG9ic2VydmVyczpbIl91cGRhdGUodmFsdWUsIG1pbiwgbWF4LCBzdGVwKSJdLF9jYWxjUmF0aW86ZnVuY3Rpb24oZSl7cmV0dXJuKHRoaXMuX2NsYW1wVmFsdWUoZSktdGhpcy5taW4pLyh0aGlzLm1heC10aGlzLm1pbil9LF9jbGFtcFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1pbih0aGlzLm1heCxNYXRoLm1heCh0aGlzLm1pbix0aGlzLl9jYWxjU3RlcChlKSkpfSxfY2FsY1N0ZXA6ZnVuY3Rpb24oZSl7aWYoZT1wYXJzZUZsb2F0KGUpLCF0aGlzLnN0ZXApcmV0dXJuIGU7dmFyIHQ9TWF0aC5yb3VuZCgoZS10aGlzLm1pbikvdGhpcy5zdGVwKTtyZXR1cm4gdGhpcy5zdGVwPDE/dC8oMS90aGlzLnN0ZXApK3RoaXMubWluOnQqdGhpcy5zdGVwK3RoaXMubWlufSxfdmFsaWRhdGVWYWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NsYW1wVmFsdWUodGhpcy52YWx1ZSk7cmV0dXJuIHRoaXMudmFsdWU9dGhpcy5vbGRWYWx1ZT1pc05hTihlKT90aGlzLm9sZFZhbHVlOmUsdGhpcy52YWx1ZSE9PWV9LF91cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0ZVZhbHVlKCksdGhpcy5fc2V0UmF0aW8odGhpcy5fY2FsY1JhdGlvKHRoaXMudmFsdWUpKjEwMCl9fTtZdCh7X3RlbXBsYXRlOlFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMjAwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSwgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1wcm9ncmVzcy1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC8qIHRoZSBzdHJpcGUgZm9yIHRoZSBpbmRldGVybWluYXRlIGFuaW1hdGlvbiovCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQsIDRweCk7CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgICNzZWNvbmRhcnlQcm9ncmVzcywKICAgICAgLmluZGV0ZXJtaW5hdGU6OmFmdGVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JleS0zMDApKTsKICAgICAgfQoKICAgICAgOmhvc3QoLnRyYW5zaXRpbmcpICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgIDpob3N0KC50cmFuc2l0aW5nKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm07CiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwoKICAgICAgICAvKiBEdXJhdGlvbiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4wOHMpOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMDhzKTsKCiAgICAgICAgLyogVGltaW5nIGZ1bmN0aW9uICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sIGVhc2UpOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgZWFzZSk7CgogICAgICAgIC8qIERlbGF5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLWRlbGF5LCAwcyk7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kZWxheSwgMHMpOwogICAgICB9CgogICAgICAjcHJpbWFyeVByb2dyZXNzLAogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTUwMCkpOwogICAgICB9CgogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTEwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjcHJpbWFyeVByb2dyZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLWdvb2dsZS1ncmV5LTUwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWRpc2FibGVkLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZXktMzAwKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoW2Rpc2FibGVkXSkpICNwcmltYXJ5UHJvZ3Jlc3MuaW5kZXRlcm1pbmF0ZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgY2VudGVyOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLWJhciB2YXIoLS1wYXBlci1wcm9ncmVzcy1pbmRldGVybWluYXRlLWN5Y2xlLWR1cmF0aW9uLCAycykgbGluZWFyIGluZmluaXRlOwogICAgICAgIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1iYXIgdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS1jeWNsZS1kdXJhdGlvbiwgMnMpIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbZGlzYWJsZWRdKSkgI3ByaW1hcnlQcm9ncmVzcy5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CgogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKC0xMDAlKTsKICAgICAgICB9CiAgICAgICAgNTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICAgIDc1JSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjI4LC42MiwuMzcsLjkxKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICB9CiAgICAgICAgMzAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAgICAgfQogICAgICAgIDUwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICB9CiAgICAgICAgNzUlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4yOCwuNjIsLjM3LC45MSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgtMTI1JSk7CiAgICAgICAgfQogICAgICAgIDMwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoLTEyNSUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgxMjUlKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoMTI1JSk7CiAgICAgICAgfQogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InByb2dyZXNzQ29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0ic2Vjb25kYXJ5UHJvZ3Jlc3MiIGhpZGRlblwkPSJbW19oaWRlU2Vjb25kYXJ5UHJvZ3Jlc3Moc2Vjb25kYXJ5UmF0aW8pXV0iPjwvZGl2PgogICAgICA8ZGl2IGlkPSJwcmltYXJ5UHJvZ3Jlc3MiPjwvZGl2PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXByb2dyZXNzIixiZWhhdmlvcnM6W1A5XSxwcm9wZXJ0aWVzOntzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sc2Vjb25kYXJ5UmF0aW86e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITB9LGluZGV0ZXJtaW5hdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX3RvZ2dsZUluZGV0ZXJtaW5hdGUifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcHJvZ3Jlc3NDaGFuZ2VkKHNlY29uZGFyeVByb2dyZXNzLCB2YWx1ZSwgbWluLCBtYXgsIGluZGV0ZXJtaW5hdGUpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InByb2dyZXNzYmFyIn0sX3RvZ2dsZUluZGV0ZXJtaW5hdGU6ZnVuY3Rpb24oZSl7dGhpcy50b2dnbGVDbGFzcygiaW5kZXRlcm1pbmF0ZSIsZSx0aGlzLiQucHJpbWFyeVByb2dyZXNzKX0sX3RyYW5zZm9ybVByb2dyZXNzOmZ1bmN0aW9uKGUsdCl7dmFyIHI9InNjYWxlWCgiK3QvMTAwKyIpIjtlLnN0eWxlLnRyYW5zZm9ybT1lLnN0eWxlLndlYmtpdFRyYW5zZm9ybT1yfSxfbWFpblJhdGlvQ2hhbmdlZDpmdW5jdGlvbihlKXt0aGlzLl90cmFuc2Zvcm1Qcm9ncmVzcyh0aGlzLiQucHJpbWFyeVByb2dyZXNzLGUpfSxfcHJvZ3Jlc3NDaGFuZ2VkOmZ1bmN0aW9uKGUsdCxyLG4saSl7ZT10aGlzLl9jbGFtcFZhbHVlKGUpLHQ9dGhpcy5fY2xhbXBWYWx1ZSh0KTt2YXIgbz10aGlzLl9jYWxjUmF0aW8oZSkqMTAwLGE9dGhpcy5fY2FsY1JhdGlvKHQpKjEwMDt0aGlzLl9zZXRTZWNvbmRhcnlSYXRpbyhvKSx0aGlzLl90cmFuc2Zvcm1Qcm9ncmVzcyh0aGlzLiQuc2Vjb25kYXJ5UHJvZ3Jlc3MsbyksdGhpcy5fdHJhbnNmb3JtUHJvZ3Jlc3ModGhpcy4kLnByaW1hcnlQcm9ncmVzcyxhKSx0aGlzLnNlY29uZGFyeVByb2dyZXNzPWUsaT90aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIpOnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93Iix0KSx0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1pbiIsciksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtYXgiLG4pfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKGUpe3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWRpc2FibGVkIixlPyJ0cnVlIjoiZmFsc2UiKX0sX2hpZGVTZWNvbmRhcnlQcm9ncmVzczpmdW5jdGlvbihlKXtyZXR1cm4gZT09PTB9fSk7dmFyIFMwdD1RYAo8c3R5bGU+CiAgOmhvc3QgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgIC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZTogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXNpemUsIDE2cHgpOwogICAgLyogLTFweCBpcyBhIHNlbnRpbmVsIGZvciB0aGUgZGVmYXVsdCBhbmQgaXMgcmVwbGFjZSBpbiBcYGF0dGFjaGVkXGAuICovCiAgICAtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUsIC0xcHgpOwogIH0KCiAgOmhvc3QoOmZvY3VzKSB7CiAgICBvdXRsaW5lOiBub25lOwogIH0KCiAgI3JhZGlvQ29udGFpbmVyIHsKICAgIEBhcHBseSAtLWxheW91dC1pbmxpbmU7CiAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSk7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoKICAgIEBhcHBseSAtLXBhcGVyLXJhZGlvLWJ1dHRvbi1yYWRpby1jb250YWluZXI7CiAgfQoKICAjaW5rIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogNTAlOwogICAgbGVmdDogNTAlOwogICAgcmlnaHQ6IGF1dG87CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUpOwogICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZSk7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXVuY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC42OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgfQoKICAjaW5rW2NoZWNrZWRdIHsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogICNvZmZSYWRpbywgI29uUmFkaW8gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHRvcDogMDsKICAgIGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICB9CgogICNvZmZSYWRpbyB7CiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtYmFja2dyb3VuZC1jb2xvciwgdHJhbnNwYXJlbnQpOwogICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMjhzOwogIH0KCiAgI29uUmFkaW8gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSBlYXNlIDAuMjhzOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIGVhc2UgMC4yOHM7CiAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogIH0KCiAgOmhvc3QoW2NoZWNrZWRdKSAjb2ZmUmFkaW8gewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogIH0KCiAgOmhvc3QoW2NoZWNrZWRdKSAjb25SYWRpbyB7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC41KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTsKICB9CgogICNyYWRpb0xhYmVsIHsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgbWFyZ2luLWxlZnQ6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1zcGFjaW5nLCAxMHB4KTsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKCiAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWw7CiAgfQoKICA6aG9zdChbY2hlY2tlZF0pICNyYWRpb0xhYmVsIHsKICAgIEBhcHBseSAtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1jaGVja2VkOwogIH0KCiAgI3JhZGlvTGFiZWw6ZGlyKHJ0bCkgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1zcGFjaW5nLCAxMHB4KTsKICB9CgogICNyYWRpb0xhYmVsW2hpZGRlbl0gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8qIGRpc2FibGVkIHN0YXRlICovCgogIDpob3N0KFtkaXNhYmxlZF0pICNvZmZSYWRpbyB7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC41OwogIH0KCiAgOmhvc3QoW2Rpc2FibGVkXVtjaGVja2VkXSkgI29uUmFkaW8gewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBvcGFjaXR5OiAwLjU7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdKSAjcmFkaW9MYWJlbCB7CiAgICAvKiBzbGlnaHRseSBkYXJrZXIgdGhhbiB0aGUgYnV0dG9uLCBzbyB0aGF0IGl0J3MgcmVhZGFibGUgKi8KICAgIG9wYWNpdHk6IDAuNjU7CiAgfQo8L3N0eWxlPgoKPGRpdiBpZD0icmFkaW9Db250YWluZXIiPgogIDxkaXYgaWQ9Im9mZlJhZGlvIj48L2Rpdj4KICA8ZGl2IGlkPSJvblJhZGlvIj48L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJyYWRpb0xhYmVsIj48c2xvdD48L3Nsb3Q+PC9kaXY+YDtTMHQuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIik7WXQoe190ZW1wbGF0ZTpTMHQsaXM6InBhcGVyLXJhZGlvLWJ1dHRvbiIsYmVoYXZpb3JzOltqeF0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InJhZGlvIiwiYXJpYS1jaGVja2VkIjohMSx0YWJpbmRleDowfSxwcm9wZXJ0aWVzOnthcmlhQWN0aXZlQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiYXJpYS1jaGVja2VkIn19LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5yYWRpb0NvbnRhaW5lcn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtUbSh0aGlzLGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUiKS50cmltKCk7aWYoZT09PSItMXB4Iil7dmFyIHQ9cGFyc2VGbG9hdCh0aGlzLmdldENvbXB1dGVkU3R5bGVWYWx1ZSgiLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplIikudHJpbSgpKSxyPU1hdGguZmxvb3IoMyp0KTtyJTIhPT10JTImJnIrKyx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplIjpyKyJweCJ9KX19KX19KTt2YXIgSTk9e2hvc3RBdHRyaWJ1dGVzOntyb2xlOiJtZW51YmFyIn0sa2V5QmluZGluZ3M6e2xlZnQ6Il9vbkxlZnRLZXkiLHJpZ2h0OiJfb25SaWdodEtleSJ9LF9vblVwS2V5OmZ1bmN0aW9uKGUpe3RoaXMuZm9jdXNlZEl0ZW0uY2xpY2soKSxlLmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbkRvd25LZXk6ZnVuY3Rpb24oZSl7dGhpcy5mb2N1c2VkSXRlbS5jbGljaygpLGUuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sZ2V0IF9pc1JUTCgpe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb249PT0icnRsIn0sX29uTGVmdEtleTpmdW5jdGlvbihlKXt0aGlzLl9pc1JUTD90aGlzLl9mb2N1c05leHQoKTp0aGlzLl9mb2N1c1ByZXZpb3VzKCksZS5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxfb25SaWdodEtleTpmdW5jdGlvbihlKXt0aGlzLl9pc1JUTD90aGlzLl9mb2N1c1ByZXZpb3VzKCk6dGhpcy5fZm9jdXNOZXh0KCksZS5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxfb25LZXlkb3duOmZ1bmN0aW9uKGUpe3RoaXMua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKGUsInVwIGRvd24gbGVmdCByaWdodCBlc2MiKXx8dGhpcy5fZm9jdXNXaXRoS2V5Ym9hcmRFdmVudChlKX19LEw5PVtBOSxJOV07WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKikgewogICAgICAgIHBhZGRpbmc6IHZhcigtLXBhcGVyLXJhZGlvLWdyb3VwLWl0ZW0tcGFkZGluZywgMTJweCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci1yYWRpby1ncm91cCIsYmVoYXZpb3JzOltMOV0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InJhZGlvZ3JvdXAifSxwcm9wZXJ0aWVzOnthdHRyRm9yU2VsZWN0ZWQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJuYW1lIn0sc2VsZWN0ZWRBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJjaGVja2VkIn0sc2VsZWN0YWJsZTp7dHlwZTpTdHJpbmcsdmFsdWU6InBhcGVyLXJhZGlvLWJ1dHRvbiJ9LGFsbG93RW1wdHlTZWxlY3Rpb246e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LHNlbGVjdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl92YWx1ZVRvSXRlbShlKTtpZighKHQmJnQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKSl7aWYodGhpcy5zZWxlY3RlZCl7dmFyIHI9dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7aWYodGhpcy5zZWxlY3RlZD09ZSlpZih0aGlzLmFsbG93RW1wdHlTZWxlY3Rpb24pZT0iIjtlbHNle3ImJihyLmNoZWNrZWQ9ITApO3JldHVybn1yJiYoci5jaGVja2VkPSExKX1iaC5zZWxlY3QuYXBwbHkodGhpcyxbZV0pLHRoaXMuZmlyZSgicGFwZXItcmFkaW8tZ3JvdXAtY2hhbmdlZCIpfX0sX2FjdGl2YXRlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9pdGVtQWN0aXZhdGUodGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuZm9jdXNlZEl0ZW0pLHRoaXMuZm9jdXNlZEl0ZW0pfSxfb25VcEtleTpmdW5jdGlvbihlKXt0aGlzLl9mb2N1c1ByZXZpb3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uRG93bktleTpmdW5jdGlvbihlKXt0aGlzLl9mb2N1c05leHQoKSxlLnByZXZlbnREZWZhdWx0KCksdGhpcy5fYWN0aXZhdGVGb2N1c2VkSXRlbSgpfSxfb25MZWZ0S2V5OmZ1bmN0aW9uKGUpe0k5Ll9vbkxlZnRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uUmlnaHRLZXk6ZnVuY3Rpb24oZSl7STkuX29uUmlnaHRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX19KTt2YXIgTTB0PVFgCiAgPHN0eWxlPgogICAgOmhvc3QgewogICAgICBAYXBwbHkgLS1sYXlvdXQ7CiAgICAgIEBhcHBseSAtLWxheW91dC1qdXN0aWZpZWQ7CiAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtYWN0aXZlLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1zZWNvbmRhcnktY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1zZWNvbmRhcnktY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTMwMCkpOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWRpc2FibGVkLWFjdGl2ZS1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWRpc2FibGVkLWFjdGl2ZS1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1zZWNvbmRhcnktY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1zZWNvbmRhcnktY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0OiB2YXIoLS1wYXBlci1zbGlkZXItaGVpZ2h0LCAycHgpOwogICAgfQoKICAgIC8qIGZvY3VzIHNob3dzIHRoZSByaXBwbGUgKi8KICAgIDpob3N0KDpmb2N1cykgewogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIC8qKgogICAgICAqIE5PVEUoa2VhbnVsZWUpOiBUaG91Z2ggOmhvc3QtY29udGV4dCBpcyBub3QgdW5pdmVyc2FsbHkgc3VwcG9ydGVkLCBzb21lIHBhZ2VzCiAgICAgICogc3RpbGwgcmVseSBvbiBwYXBlci1zbGlkZXIgYmVpbmcgZmxpcHBlZCB3aGVuIGRpcj0icnRsIiBpcyBzZXQgb24gYm9keS4gRm9yIGZ1bGwKICAgICAgKiBjb21wYXRpYmlsaXR5LCBkaXI9InJ0bCIgbXVzdCBiZSBleHBsaWNpdGx5IHNldCBvbiBwYXBlci1zbGlkZXIuCiAgICAgICovCiAgICA6ZGlyKHJ0bCkgI3NsaWRlckNvbnRhaW5lciB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7CiAgICB9CgogICAgLyoqCiAgICAgICogTk9URShrZWFudWxlZSk6IFRoaXMgaXMgc2VwYXJhdGUgZnJvbSB0aGUgcnVsZSBhYm92ZSBiZWNhdXNlIDpob3N0LWNvbnRleHQgbWF5CiAgICAgICogbm90IGJlIHJlY29nbml6ZWQuCiAgICAgICovCiAgICA6aG9zdChbZGlyPSJydGwiXSkgI3NsaWRlckNvbnRhaW5lciB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7CiAgICB9CgogICAgLyoqCiAgICAgICogTk9URShrZWFudWxlZSk6IE5lZWRlZCB0byBvdmVycmlkZSB0aGUgOmhvc3QtY29udGV4dCBydWxlICh3aGVyZSBzdXBwb3J0ZWQpCiAgICAgICogdG8gc3VwcG9ydCBMVFIgc2xpZGVycyBpbiBSVEwgcGFnZXMuCiAgICAgICovCiAgICA6aG9zdChbZGlyPSJsdHIiXSkgI3NsaWRlckNvbnRhaW5lciB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgfQoKICAgICNzbGlkZXJDb250YWluZXIgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IGNhbGMoMzBweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkpOwogICAgICBtYXJnaW4tbGVmdDogY2FsYygxNXB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKDE1cHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgfQoKICAgICNzbGlkZXJDb250YWluZXI6Zm9jdXMgewogICAgICBvdXRsaW5lOiAwOwogICAgfQoKICAgICNzbGlkZXJDb250YWluZXIuZWRpdGFibGUgewogICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgfQoKICAgIC5iYXItY29udGFpbmVyIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgLnJpbmcgPiAuYmFyLWNvbnRhaW5lciB7CiAgICAgIGxlZnQ6IGNhbGMoNXB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjE4cyBlYXNlOwogICAgfQoKICAgIC5yaW5nLmV4cGFuZC5kcmFnZ2luZyA+IC5iYXItY29udGFpbmVyIHsKICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIH0KCiAgICAucmluZy5leHBhbmQ6bm90KC5waW4pID4gLmJhci1jb250YWluZXIgewogICAgICBsZWZ0OiBjYWxjKDhweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICB9CgogICAgI3NsaWRlckJhciB7CiAgICAgIHBhZGRpbmc6IDE1cHggMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1iYXItY29sb3IsIHRyYW5zcGFyZW50KTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1jb250YWluZXItY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1jb250YWluZXItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpOwogICAgfQoKICAgIC5zbGlkZXItbWFya2VycyB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgLyogc2xpZGVyLWtub2IgaXMgMzBweCArIHRoZSBzbGlkZXItaGVpZ2h0IHNvIHRoYXQgdGhlIG1hcmtlcnMgc2hvdWxkIHN0YXJ0IGF0IGEgb2Zmc2V0IG9mIDE1cHgqLwogICAgICB0b3A6IDE1cHg7CiAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KTsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IC0xcHg7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgIH0KCiAgICAuc2xpZGVyLW1hcmtlciB7CiAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgfQogICAgLnNsaWRlci1tYXJrZXJzOjphZnRlciwKICAgIC5zbGlkZXItbWFya2VyOjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICIiOwogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7CiAgICAgIHdpZHRoOiAycHg7CiAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KTsKICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvciwgIzAwMCk7CiAgICB9CgogICAgLnNsaWRlci1rbm9iIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBsZWZ0OiAwOwogICAgICB0b3A6IDA7CiAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0xNXB4IC0gdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgICAgd2lkdGg6IGNhbGMoMzBweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkpOwogICAgICBoZWlnaHQ6IGNhbGMoMzBweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkpOwogICAgfQoKICAgIC50cmFuc2l0aW5nID4gLnNsaWRlci1rbm9iIHsKICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjA4cyBlYXNlOwogICAgfQoKICAgIC5zbGlkZXIta25vYjpmb2N1cyB7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICB9CgogICAgLnNsaWRlci1rbm9iLmRyYWdnaW5nIHsKICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgIH0KCiAgICAuc25hcHMgPiAuc2xpZGVyLWtub2IuZHJhZ2dpbmcgewogICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjA4cyBlYXNlOwogICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4wOHMgZWFzZTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2ItaW5uZXIgewogICAgICBtYXJnaW46IDEwcHg7CiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAyMHB4KTsKICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAyMHB4KTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKCiAgICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKCiAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IC13ZWJraXQtdHJhbnNmb3JtLCBiYWNrZ3JvdW5kLWNvbG9yLCBib3JkZXI7CiAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyOwogICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE4czsKICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7CiAgICB9CgogICAgLmV4cGFuZDpub3QoLnBpbikgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpOwogICAgfQoKICAgIC5yaW5nID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgfQoKICAgIC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICB9CgogICAgLnBpbiA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlIHsKICAgICAgY29udGVudDogIiI7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiA1MCU7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMTNweDsKICAgICAgd2lkdGg6IDI2cHg7CiAgICAgIGhlaWdodDogMjZweDsKICAgICAgYm9yZGVyLXJhZGl1czogNTAlIDUwJSA1MCUgMDsKCiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgfQoKICAgIC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlLAogICAgLnNsaWRlci1rbm9iLWlubmVyOjphZnRlciB7CiAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIC4xOHMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAuMThzIGVhc2U7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMThzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgLjE4cyBlYXNlOwogICAgfQoKICAgIC5waW4ucmluZyA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgIH0KCiAgICAucGluLmV4cGFuZCA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpIHRyYW5zbGF0ZSgxN3B4LCAtMTdweCk7CiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgc2NhbGUoMSkgdHJhbnNsYXRlKDE3cHgsIC0xN3B4KTsKICAgIH0KCiAgICAucGluID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjphZnRlciB7CiAgICAgIGNvbnRlbnQ6IGF0dHIodmFsdWUpOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogNTAlOwogICAgICBtYXJnaW4tbGVmdDogLTE2cHg7CiAgICAgIHdpZHRoOiAzMnB4OwogICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1mb250LWNvbG9yLCAjZmZmKTsKICAgICAgZm9udC1zaXplOiAxMHB4OwoKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApIHRyYW5zbGF0ZSgwKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICB9CgogICAgLnBpbi5leHBhbmQgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmFmdGVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZSgwLCAtMTdweCk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkgdHJhbnNsYXRlKDAsIC0xN3B4KTsKICAgIH0KCiAgICAvKiBwYXBlci1pbnB1dCAqLwogICAgLnNsaWRlci1pbnB1dCB7CiAgICAgIHdpZHRoOiA1MHB4OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1zbGlkZXItaW5wdXQtY29udGFpbmVyLWlucHV0OwogICAgICB9OwogICAgICBAYXBwbHkgLS1wYXBlci1zbGlkZXItaW5wdXQ7CiAgICB9CgogICAgLyogZGlzYWJsZWQgc3RhdGUgKi8KICAgICNzbGlkZXJDb250YWluZXIuZGlzYWJsZWQgewogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KCiAgICAuZGlzYWJsZWQgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQta25vYi1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWRpc2FibGVkLWtub2ItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZTNkKDAuNzUsIDAuNzUsIDEpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC43NSwgMC43NSwgMSk7CiAgICB9CgogICAgLmRpc2FibGVkLnJpbmcgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvciwgdHJhbnNwYXJlbnQpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICB9CgogICAgcGFwZXItcmlwcGxlIHsKICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgIH0KICA8L3N0eWxlPgoKICA8ZGl2IGlkPSJzbGlkZXJDb250YWluZXIiIGNsYXNzXCQ9IltbX2dldENsYXNzTmFtZXMoZGlzYWJsZWQsIHBpbiwgc25hcHMsIGltbWVkaWF0ZVZhbHVlLCBtaW4sIGV4cGFuZCwgZHJhZ2dpbmcsIHRyYW5zaXRpbmcsIGVkaXRhYmxlKV1dIj4KICAgIDxkaXYgY2xhc3M9ImJhci1jb250YWluZXIiPgogICAgICA8cGFwZXItcHJvZ3Jlc3MgZGlzYWJsZWRcJD0iW1tkaXNhYmxlZF1dIiBpZD0ic2xpZGVyQmFyIiBhcmlhLWhpZGRlbj0idHJ1ZSIgbWluPSJbW21pbl1dIiBtYXg9IltbbWF4XV0iIHN0ZXA9Iltbc3RlcF1dIiB2YWx1ZT0iW1tpbW1lZGlhdGVWYWx1ZV1dIiBzZWNvbmRhcnktcHJvZ3Jlc3M9Iltbc2Vjb25kYXJ5UHJvZ3Jlc3NdXSIgb24tZG93bj0iX2JhcmRvd24iIG9uLXVwPSJfcmVzZXRLbm9iIiBvbi10cmFjaz0iX2JhcnRyYWNrIiBvbi10YXA9Il9iYXJjbGljayI+CiAgICAgIDwvcGFwZXItcHJvZ3Jlc3M+CiAgICA8L2Rpdj4KCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc25hcHNdXSI+CiAgICAgIDxkaXYgY2xhc3M9InNsaWRlci1tYXJrZXJzIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW21hcmtlcnNdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZXItbWFya2VyIj48L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CgogICAgPGRpdiBpZD0ic2xpZGVyS25vYiIgY2xhc3M9InNsaWRlci1rbm9iIiBvbi1kb3duPSJfa25vYmRvd24iIG9uLXVwPSJfcmVzZXRLbm9iIiBvbi10cmFjaz0iX29uVHJhY2siIG9uLXRyYW5zaXRpb25lbmQ9Il9rbm9iVHJhbnNpdGlvbkVuZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyLWtub2ItaW5uZXIiIHZhbHVlXCQ9IltbaW1tZWRpYXRlVmFsdWVdXSI+PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2VkaXRhYmxlXV0iPgogICAgPHBhcGVyLWlucHV0IGlkPSJpbnB1dCIgdHlwZT0ibnVtYmVyIiBzdGVwPSJbW3N0ZXBdXSIgbWluPSJbW21pbl1dIiBtYXg9IltbbWF4XV0iIGNsYXNzPSJzbGlkZXItaW5wdXQiIGRpc2FibGVkXCQ9IltbZGlzYWJsZWRdXSIgdmFsdWU9IltbaW1tZWRpYXRlVmFsdWVdXSIgb24tY2hhbmdlPSJfY2hhbmdlVmFsdWUiIG9uLWtleWRvd249Il9pbnB1dEtleURvd24iIG5vLWxhYmVsLWZsb2F0PgogICAgPC9wYXBlci1pbnB1dD4KICA8L3RlbXBsYXRlPgpgO00wdC5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKTtZdCh7X3RlbXBsYXRlOk0wdCxpczoicGFwZXItc2xpZGVyIixiZWhhdmlvcnM6W0RvLE1oLFl4LFA5XSxwcm9wZXJ0aWVzOnt2YWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sc25hcHM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LHBpbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sc2Vjb25kYXJ5UHJvZ3Jlc3M6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwLG9ic2VydmVyOiJfc2Vjb25kYXJ5UHJvZ3Jlc3NDaGFuZ2VkIn0sZWRpdGFibGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saW1tZWRpYXRlVmFsdWU6e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSxtYXhNYXJrZXJzOnt0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sZXhwYW5kOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITB9LGlnbm9yZUJhclRvdWNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGRyYWdnaW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSx0cmFuc2l0aW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITB9LG1hcmtlcnM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlS25vYih2YWx1ZSwgbWluLCBtYXgsIHNuYXBzLCBzdGVwKSIsIl92YWx1ZUNoYW5nZWQodmFsdWUpIiwiX2ltbWVkaWF0ZVZhbHVlQ2hhbmdlZChpbW1lZGlhdGVWYWx1ZSkiLCJfdXBkYXRlTWFya2VycyhtYXhNYXJrZXJzLCBtaW4sIG1heCwgc25hcHMpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InNsaWRlciIsdGFiaW5kZXg6MH0sa2V5QmluZGluZ3M6e2xlZnQ6Il9sZWZ0S2V5IixyaWdodDoiX3JpZ2h0S2V5IiwiZG93biBwYWdlZG93biBob21lIjoiX2RlY3JlbWVudEtleSIsInVwIHBhZ2V1cCBlbmQiOiJfaW5jcmVtZW50S2V5In0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmlnbm9yZUJhclRvdWNoJiZkXyh0aGlzLiQuc2xpZGVyQmFyLCJhdXRvIil9LGluY3JlbWVudDpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnZhbHVlK3RoaXMuc3RlcCl9LGRlY3JlbWVudDpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnZhbHVlLXRoaXMuc3RlcCl9LF91cGRhdGVLbm9iOmZ1bmN0aW9uKGUsdCxyLG4saSl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtaW4iLHQpLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWF4IixyKSx0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIsZSksdGhpcy5fcG9zaXRpb25Lbm9iKHRoaXMuX2NhbGNSYXRpbyhlKSoxMDApfSxfdmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJ2YWx1ZS1jaGFuZ2UiLHtjb21wb3NlZDohMH0pfSxfaW1tZWRpYXRlVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kcmFnZ2luZz90aGlzLmZpcmUoImltbWVkaWF0ZS12YWx1ZS1jaGFuZ2UiLHtjb21wb3NlZDohMH0pOnRoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZX0sX3NlY29uZGFyeVByb2dyZXNzQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3M9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnNlY29uZGFyeVByb2dyZXNzKX0sX2V4cGFuZEtub2I6ZnVuY3Rpb24oKXt0aGlzLl9zZXRFeHBhbmQoITApfSxfcmVzZXRLbm9iOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxEZWJvdW5jZXIoImV4cGFuZEtub2IiKSx0aGlzLl9zZXRFeHBhbmQoITEpfSxfcG9zaXRpb25Lbm9iOmZ1bmN0aW9uKGUpe3RoaXMuX3NldEltbWVkaWF0ZVZhbHVlKHRoaXMuX2NhbGNTdGVwKHRoaXMuX2NhbGNLbm9iUG9zaXRpb24oZSkpKSx0aGlzLl9zZXRSYXRpbyh0aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkqMTAwKSx0aGlzLiQuc2xpZGVyS25vYi5zdHlsZS5sZWZ0PXRoaXMucmF0aW8rIiUiLHRoaXMuZHJhZ2dpbmcmJih0aGlzLl9rbm9ic3RhcnR4PXRoaXMucmF0aW8qdGhpcy5fdy8xMDAsdGhpcy50cmFuc2xhdGUzZCgwLDAsMCx0aGlzLiQuc2xpZGVyS25vYikpfSxfY2FsY0tub2JQb3NpdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5tYXgtdGhpcy5taW4pKmUvMTAwK3RoaXMubWlufSxfb25UcmFjazpmdW5jdGlvbihlKXtzd2l0Y2goZS5zdG9wUHJvcGFnYXRpb24oKSxlLmRldGFpbC5zdGF0ZSl7Y2FzZSJzdGFydCI6dGhpcy5fdHJhY2tTdGFydChlKTticmVhaztjYXNlInRyYWNrIjp0aGlzLl90cmFja1goZSk7YnJlYWs7Y2FzZSJlbmQiOnRoaXMuX3RyYWNrRW5kKCk7YnJlYWt9fSxfdHJhY2tTdGFydDpmdW5jdGlvbihlKXt0aGlzLl9zZXRUcmFuc2l0aW5nKCExKSx0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGgsdGhpcy5feD10aGlzLnJhdGlvKnRoaXMuX3cvMTAwLHRoaXMuX3N0YXJ0eD10aGlzLl94LHRoaXMuX2tub2JzdGFydHg9dGhpcy5fc3RhcnR4LHRoaXMuX21pbng9LXRoaXMuX3N0YXJ0eCx0aGlzLl9tYXh4PXRoaXMuX3ctdGhpcy5fc3RhcnR4LHRoaXMuJC5zbGlkZXJLbm9iLmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nIiksdGhpcy5fc2V0RHJhZ2dpbmcoITApfSxfdHJhY2tYOmZ1bmN0aW9uKGUpe3RoaXMuZHJhZ2dpbmd8fHRoaXMuX3RyYWNrU3RhcnQoZSk7dmFyIHQ9dGhpcy5faXNSVEw/LTE6MSxyPU1hdGgubWluKHRoaXMuX21heHgsTWF0aC5tYXgodGhpcy5fbWlueCxlLmRldGFpbC5keCp0KSk7dGhpcy5feD10aGlzLl9zdGFydHgrcjt2YXIgbj10aGlzLl9jYWxjU3RlcCh0aGlzLl9jYWxjS25vYlBvc2l0aW9uKHRoaXMuX3gvdGhpcy5fdyoxMDApKTt0aGlzLl9zZXRJbW1lZGlhdGVWYWx1ZShuKTt2YXIgaT10aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkqdGhpcy5fdy10aGlzLl9rbm9ic3RhcnR4O3RoaXMudHJhbnNsYXRlM2QoaSsicHgiLDAsMCx0aGlzLiQuc2xpZGVyS25vYil9LF90cmFja0VuZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJC5zbGlkZXJLbm9iLnN0eWxlO3RoaXMuJC5zbGlkZXJLbm9iLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIiksdGhpcy5fc2V0RHJhZ2dpbmcoITEpLHRoaXMuX3Jlc2V0S25vYigpLHRoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZSxlLnRyYW5zZm9ybT1lLndlYmtpdFRyYW5zZm9ybT0iIix0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9rbm9iZG93bjpmdW5jdGlvbihlKXt0aGlzLl9leHBhbmRLbm9iKCksZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKX0sX2JhcnRyYWNrOmZ1bmN0aW9uKGUpe3RoaXMuX2FsbG93QmFyRXZlbnQoZSkmJnRoaXMuX29uVHJhY2soZSl9LF9iYXJjbGljazpmdW5jdGlvbihlKXt0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGg7dmFyIHQ9dGhpcy4kLnNsaWRlckJhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPShlLmRldGFpbC54LXQubGVmdCkvdGhpcy5fdyoxMDA7dGhpcy5faXNSVEwmJihyPTEwMC1yKTt2YXIgbj10aGlzLnJhdGlvO3RoaXMuX3NldFRyYW5zaXRpbmcoITApLHRoaXMuX3Bvc2l0aW9uS25vYihyKSxuPT09dGhpcy5yYXRpbyYmdGhpcy5fc2V0VHJhbnNpdGluZyghMSksdGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuZmlyZSgiY2hhbmdlIix7Y29tcG9zZWQ6ITB9KX0pLGUucHJldmVudERlZmF1bHQoKSx0aGlzLmZvY3VzKCl9LF9iYXJkb3duOmZ1bmN0aW9uKGUpe3RoaXMuX2FsbG93QmFyRXZlbnQoZSkmJih0aGlzLmRlYm91bmNlKCJleHBhbmRLbm9iIix0aGlzLl9leHBhbmRLbm9iLDYwKSx0aGlzLl9iYXJjbGljayhlKSl9LF9rbm9iVHJhbnNpdGlvbkVuZDpmdW5jdGlvbihlKXtlLnRhcmdldD09PXRoaXMuJC5zbGlkZXJLbm9iJiZ0aGlzLl9zZXRUcmFuc2l0aW5nKCExKX0sX3VwZGF0ZU1hcmtlcnM6ZnVuY3Rpb24oZSx0LHIsbil7bnx8dGhpcy5fc2V0TWFya2VycyhbXSk7dmFyIGk9TWF0aC5yb3VuZCgoci10KS90aGlzLnN0ZXApO2k+ZSYmKGk9ZSksKGk8MHx8IWlzRmluaXRlKGkpKSYmKGk9MCksdGhpcy5fc2V0TWFya2VycyhuZXcgQXJyYXkoaSkpfSxfbWVyZ2VDbGFzc2VzOmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KS5qb2luKCIgIil9LF9nZXRDbGFzc05hbWVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21lcmdlQ2xhc3Nlcyh7ZGlzYWJsZWQ6dGhpcy5kaXNhYmxlZCxwaW46dGhpcy5waW4sc25hcHM6dGhpcy5zbmFwcyxyaW5nOnRoaXMuaW1tZWRpYXRlVmFsdWU8PXRoaXMubWluLGV4cGFuZDp0aGlzLmV4cGFuZCxkcmFnZ2luZzp0aGlzLmRyYWdnaW5nLHRyYW5zaXRpbmc6dGhpcy50cmFuc2l0aW5nLGVkaXRhYmxlOnRoaXMuZWRpdGFibGV9KX0sX2FsbG93QmFyRXZlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuaWdub3JlQmFyVG91Y2h8fGUuZGV0YWlsLnNvdXJjZUV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudH0sZ2V0IF9pc1JUTCgpe3JldHVybiB0aGlzLl9faXNSVEw9PT12b2lkIDAmJih0aGlzLl9faXNSVEw9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlyZWN0aW9uPT09InJ0bCIpLHRoaXMuX19pc1JUTH0sX2xlZnRLZXk6ZnVuY3Rpb24oZSl7dGhpcy5faXNSVEw/dGhpcy5faW5jcmVtZW50S2V5KGUpOnRoaXMuX2RlY3JlbWVudEtleShlKX0sX3JpZ2h0S2V5OmZ1bmN0aW9uKGUpe3RoaXMuX2lzUlRMP3RoaXMuX2RlY3JlbWVudEtleShlKTp0aGlzLl9pbmNyZW1lbnRLZXkoZSl9LF9pbmNyZW1lbnRLZXk6ZnVuY3Rpb24oZSl7dGhpcy5kaXNhYmxlZHx8KGUuZGV0YWlsLmtleT09PSJlbmQiP3RoaXMudmFsdWU9dGhpcy5tYXg6dGhpcy5pbmNyZW1lbnQoKSx0aGlzLmZpcmUoImNoYW5nZSIpLGUucHJldmVudERlZmF1bHQoKSl9LF9kZWNyZW1lbnRLZXk6ZnVuY3Rpb24oZSl7dGhpcy5kaXNhYmxlZHx8KGUuZGV0YWlsLmtleT09PSJob21lIj90aGlzLnZhbHVlPXRoaXMubWluOnRoaXMuZGVjcmVtZW50KCksdGhpcy5maXJlKCJjaGFuZ2UiKSxlLnByZXZlbnREZWZhdWx0KCkpfSxfY2hhbmdlVmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy52YWx1ZT1lLnRhcmdldC52YWx1ZSx0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9pbnB1dEtleURvd246ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLnNsaWRlcktub2IsdUUuX2NyZWF0ZVJpcHBsZS5jYWxsKHRoaXMpfSxfZm9jdXNlZENoYW5nZWQ6ZnVuY3Rpb24oZSl7ZSYmdGhpcy5lbnN1cmVSaXBwbGUoKSx0aGlzLmhhc1JpcHBsZSgpJiYoZT90aGlzLl9yaXBwbGUuc3R5bGUuZGlzcGxheT0iIjp0aGlzLl9yaXBwbGUuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5fcmlwcGxlLmhvbGREb3duPWUpfX0pO3ZhciBTVz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO1NXLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpO1NXLmlubmVySFRNTD1gPGRvbS1tb2R1bGUgaWQ9InBhcGVyLXNwaW5uZXItc3R5bGVzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC8qCiAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAgLyogU1RZTEVTIEZPUiBUSEUgU1BJTk5FUiAqLwogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAvKgogICAgICAgKiBDb25zdGFudHM6CiAgICAgICAqICAgICAgQVJDU0laRSAgICAgPSAyNzAgZGVncmVlcyAoYW1vdW50IG9mIGNpcmNsZSB0aGUgYXJjIHRha2VzIHVwKQogICAgICAgKiAgICAgIEFSQ1RJTUUgICAgID0gMTMzM21zICh0aW1lIGl0IHRha2VzIHRvIGV4cGFuZCBhbmQgY29udHJhY3QgYXJjKQogICAgICAgKiAgICAgIEFSQ1NUQVJUUk9UID0gMjE2IGRlZ3JlZXMgKGhvdyBtdWNoIHRoZSBzdGFydCBsb2NhdGlvbiBvZiB0aGUgYXJjCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcm90YXRlIGVhY2ggdGltZSwgMjE2IGdpdmVzIHVzIGEKICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgcG9pbnRlZCBzdGFyIHNoYXBlIChpdCdzIDM2MC81ICogMykuCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSA3IHBvaW50ZWQgc3Rhciwgd2UgbWlnaHQgZG8KICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2MC83ICogMyA9IDE1NC4yODYpCiAgICAgICAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtcwogICAgICAgKi8KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAyOHB4OwogICAgICAgIGhlaWdodDogMjhweDsKCiAgICAgICAgLyogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovCiAgICAgICAgLS1wYXBlci1zcGlubmVyLWNvbnRhaW5lci1yb3RhdGlvbi1kdXJhdGlvbjogMTU2OG1zOwoKICAgICAgICAvKiBBUkNUSU1FICovCiAgICAgICAgLS1wYXBlci1zcGlubmVyLWV4cGFuZC1jb250cmFjdC1kdXJhdGlvbjogMTMzM21zOwoKICAgICAgICAvKiA0ICogQVJDVElNRSAqLwogICAgICAgIC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uOiA1MzMybXM7CgogICAgICAgIC8qIFNIUklOS19USU1FICovCiAgICAgICAgLS1wYXBlci1zcGlubmVyLWNvb2xkb3duLWR1cmF0aW9uOiA0MDBtczsKICAgICAgfQoKICAgICAgI3NwaW5uZXJDb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKCiAgICAgICAgLyogVGhlIHNwaW5uZXIgZG9lcyBub3QgaGF2ZSBhbnkgY29udGVudHMgdGhhdCB3b3VsZCBoYXZlIHRvIGJlCiAgICAgICAgICogZmxpcHBlZCBpZiB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIEFsd2F5cyB1c2UgbHRyIHNvIHRoYXQgdGhlCiAgICAgICAgICogc3R5bGUgd29ya3Mgb3V0IGNvcnJlY3RseSBpbiBib3RoIGNhc2VzLiAqLwogICAgICAgIGRpcmVjdGlvbjogbHRyOwogICAgICB9CgogICAgICAjc3Bpbm5lckNvbnRhaW5lci5hY3RpdmUgewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjb250YWluZXItcm90YXRlIHsKICAgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7CiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH0KICAgICAgfQoKICAgICAgLnNwaW5uZXItbGF5ZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTsKICAgICAgfQoKICAgICAgLmxheWVyLTEgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTEtY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTUwMCkpOwogICAgICB9CgogICAgICAubGF5ZXItMiB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNwaW5uZXItbGF5ZXItMi1jb2xvciwgdmFyKC0tZ29vZ2xlLXJlZC01MDApKTsKICAgICAgfQoKICAgICAgLmxheWVyLTMgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTMtY29sb3IsIHZhcigtLWdvb2dsZS15ZWxsb3ctNTAwKSk7CiAgICAgIH0KCiAgICAgIC5sYXllci00IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci00LWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JlZW4tNTAwKSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBJTVBPUlRBTlQgTk9URSBBQk9VVCBDU1MgQU5JTUFUSU9OIFBST1BFUlRJRVMgKGtlYW51bGVlKToKICAgICAgICoKICAgICAgICogaU9TIFNhZmFyaSAodGVzdGVkIG9uIGlPUyA4LjEpIGRvZXMgbm90IGhhbmRsZSBhbmltYXRpb24tZGVsYXkgdmVyeSB3ZWxsIC0gaXQgZG9lc24ndAogICAgICAgKiBndWFyYW50ZWUgdGhhdCB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQgX2V4YWN0bHlfIGFmdGVyIHRoYXQgdmFsdWUuIFNvIHdlIGF2b2lkIHVzaW5nCiAgICAgICAqIGFuaW1hdGlvbi1kZWxheSBhbmQgaW5zdGVhZCBzZXQgY3VzdG9tIGtleWZyYW1lcyBmb3IgZWFjaCBjb2xvciAoYXMgbGF5ZXItMnVuZGFudCBhcyBpdAogICAgICAgKiBzZWVtcykuCiAgICAgICAqLwogICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGU7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZnVsbC1jeWNsZS1kdXJhdGlvbik7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsKICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0xIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTEtZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMS1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0yIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMi1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0zIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTMtZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci00IHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTQtZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItNC1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7CiAgICAgICAgMTIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovCiAgICAgICAgMjUlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykgfSAvKiAxICAgKiBBUkNTSVpFICovCiAgICAgICAgMzcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQwNWRlZykgfSAvKiAxLjUgKiBBUkNTSVpFICovCiAgICAgICAgNTAlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovCiAgICAgICAgNjIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDY3NWRlZykgfSAvKiAyLjUgKiBBUkNTSVpFICovCiAgICAgICAgNzUlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDgxMGRlZykgfSAvKiAzICAgKiBBUkNTSVpFICovCiAgICAgICAgODcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovCiAgICAgICAgdG8gICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEwODBkZWcpIH0gLyogNCAgICogQVJDU0laRSAqLwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7CiAgICAgICAgMTIuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpIH0gLyogMC41ICogQVJDU0laRSAqLwogICAgICAgIDI1JSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKSB9IC8qIDEgICAqIEFSQ1NJWkUgKi8KICAgICAgICAzNy41JSB7IHRyYW5zZm9ybTogcm90YXRlKDQwNWRlZykgfSAvKiAxLjUgKiBBUkNTSVpFICovCiAgICAgICAgNTAlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpIH0gLyogMiAgICogQVJDU0laRSAqLwogICAgICAgIDYyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKSB9IC8qIDIuNSAqIEFSQ1NJWkUgKi8KICAgICAgICA3NSUgICB7IHRyYW5zZm9ybTogcm90YXRlKDgxMGRlZykgfSAvKiAzICAgKiBBUkNTSVpFICovCiAgICAgICAgODcuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpIH0gLyogMy41ICogQVJDU0laRSAqLwogICAgICAgIHRvICAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZykgfSAvKiA0ICAgKiBBUkNTSVpFICovCiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci0xLWZhZGUtaW4tb3V0IHsKICAgICAgICAwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDI1JSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDI2JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDg5JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIHRvIHsgb3BhY2l0eTogMSB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItMS1mYWRlLWluLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH0KICAgICAgICAyNiUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA4OSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDEgfQogICAgICB9CgogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGF5ZXItMi1mYWRlLWluLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH0KICAgICAgICAxNSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH0KICAgICAgICA1MCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICA1MSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGxheWVyLTItZmFkZS1pbi1vdXQgewogICAgICAgIDAlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgMTUlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNTElIHsgb3BhY2l0eTogMCB9CiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH0KICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxheWVyLTMtZmFkZS1pbi1vdXQgewogICAgICAgIDAlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgNDAlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNzUlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNzYlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBsYXllci0zLWZhZGUtaW4tb3V0IHsKICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDQwJSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDc2JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIHRvIHsgb3BhY2l0eTogMCB9CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHsKICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDY1JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIHRvIHsgb3BhY2l0eTogMCB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItNC1mYWRlLWluLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA2NSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH0KICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDAgfQogICAgICB9CgogICAgICAuY2lyY2xlLWNsaXBwZXIgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFBhdGNoIHRoZSBnYXAgdGhhdCBhcHBlYXIgYmV0d2VlbiB0aGUgdHdvIGFkamFjZW50IGRpdi5jaXJjbGUtY2xpcHBlciB3aGlsZSB0aGUKICAgICAgICogc3Bpbm5lciBpcyByb3RhdGluZyAoYXBwZWFycyBvbiBDaHJvbWUgNTAsIFNhZmFyaSA5LjEuMSwgYW5kIEVkZ2UpLgogICAgICAgKi8KICAgICAgLnNwaW5uZXItbGF5ZXI6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBsZWZ0OiA0NSU7CiAgICAgICAgd2lkdGg6IDEwJTsKICAgICAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsKICAgICAgfQoKICAgICAgLnNwaW5uZXItbGF5ZXI6OmFmdGVyLAogICAgICAuY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvcmRlci13aWR0aDogdmFyKC0tcGFwZXItc3Bpbm5lci1zdHJva2Utd2lkdGgsIDNweCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAuY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIHdpZHRoOiAyMDAlOwogICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7CiAgICAgIH0KCiAgICAgIC5jaXJjbGUtY2xpcHBlci5yaWdodCAuY2lyY2xlIHsKICAgICAgICBsZWZ0OiAtMTAwJTsKICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpOwogICAgICB9CgogICAgICAuYWN0aXZlIC5nYXAtcGF0Y2g6OmFmdGVyLAogICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb24pOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1zcGlubmVyLWV4cGFuZC1jb250cmFjdC1kdXJhdGlvbik7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpOwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOwogICAgICB9CgogICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUgewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGxlZnQtc3BpbjsKICAgICAgICBhbmltYXRpb24tbmFtZTogbGVmdC1zcGluOwogICAgICB9CgogICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5yaWdodCAuY2lyY2xlIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByaWdodC1zcGluOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiByaWdodC1zcGluOwogICAgICB9CgogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGVmdC1zcGluIHsKICAgICAgICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9CiAgICAgICAgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZykgfQogICAgICAgIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBsZWZ0LXNwaW4gewogICAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9CiAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpIH0KICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDEzMGRlZykgfQogICAgICB9CgogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgcmlnaHQtc3BpbiB7CiAgICAgICAgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpIH0KICAgICAgICA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH0KICAgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHJpZ2h0LXNwaW4gewogICAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfQogICAgICAgIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH0KICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpIH0KICAgICAgfQoKICAgICAgI3NwaW5uZXJDb250YWluZXIuY29vbGRvd24gewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGUsIGZhZGUtb3V0IHZhcigtLXBhcGVyLXNwaW5uZXItY29vbGRvd24tZHVyYXRpb24pIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTsKICAgICAgICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpOwogICAgICB9CgogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmFkZS1vdXQgewogICAgICAgIDAlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBmYWRlLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDAgfQogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoU1cuY29udGVudCk7dmFyIGs5PXtwcm9wZXJ0aWVzOnthY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9fYWN0aXZlQ2hhbmdlZCJ9LGFsdDp7dHlwZTpTdHJpbmcsdmFsdWU6ImxvYWRpbmciLG9ic2VydmVyOiJfX2FsdENoYW5nZWQifSxfX2Nvb2xpbmdEb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxfX2NvbXB1dGVDb250YWluZXJDbGFzc2VzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuW2V8fHQ/ImFjdGl2ZSI6IiIsdD8iY29vbGRvd24iOiIiXS5qb2luKCIgIil9LF9fYWN0aXZlQ2hhbmdlZDpmdW5jdGlvbihlLHQpe3RoaXMuX19zZXRBcmlhSGlkZGVuKCFlKSx0aGlzLl9fY29vbGluZ0Rvd249IWUmJnR9LF9fYWx0Q2hhbmdlZDpmdW5jdGlvbihlKXtlPT09ImxvYWRpbmciP3RoaXMuYWx0PXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIil8fGU6KHRoaXMuX19zZXRBcmlhSGlkZGVuKGU9PT0iIiksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGUpKX0sX19zZXRBcmlhSGlkZGVuOmZ1bmN0aW9uKGUpe3ZhciB0PSJhcmlhLWhpZGRlbiI7ZT90aGlzLnNldEF0dHJpYnV0ZSh0LCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9LF9fcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT0hMSx0aGlzLl9fY29vbGluZ0Rvd249ITF9fTt2YXIgRTB0PVFgCiAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLXNwaW5uZXItc3R5bGVzIj48L3N0eWxlPgoKICA8ZGl2IGlkPSJzcGlubmVyQ29udGFpbmVyIiBjbGFzcy1uYW1lPSJbW19fY29tcHV0ZUNvbnRhaW5lckNsYXNzZXMoYWN0aXZlLCBfX2Nvb2xpbmdEb3duKV1dIiBvbi1hbmltYXRpb25lbmQ9Il9fcmVzZXQiIG9uLXdlYmtpdC1hbmltYXRpb24tZW5kPSJfX3Jlc2V0Ij4KICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIgbGF5ZXItMSI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWxheWVyIGxheWVyLTIiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciBsYXllci0zIj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIgbGF5ZXItNCI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYDtFMHQuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIik7WXQoe190ZW1wbGF0ZTpFMHQsaXM6InBhcGVyLXNwaW5uZXIiLGJlaGF2aW9yczpbazldfSk7dmFyIFQwdD1RYAogIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1zcGlubmVyLXN0eWxlcyI+PC9zdHlsZT4KCiAgPGRpdiBpZD0ic3Bpbm5lckNvbnRhaW5lciIgY2xhc3MtbmFtZT0iW1tfX2NvbXB1dGVDb250YWluZXJDbGFzc2VzKGFjdGl2ZSwgX19jb29saW5nRG93bildXSIgb24tYW5pbWF0aW9uZW5kPSJfX3Jlc2V0IiBvbi13ZWJraXQtYW5pbWF0aW9uLWVuZD0iX19yZXNldCI+CiAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWxheWVyIj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgpgO1QwdC5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKTtZdCh7X3RlbXBsYXRlOlQwdCxpczoicGFwZXItc3Bpbm5lci1saXRlIixiZWhhdmlvcnM6W2s5XX0pO3ZhciBPYmU9UWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJwYXBlci10YWJzIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSJjaGV2cm9uLWxlZnQiPjxwYXRoIGQ9Ik0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZXZyb24tcmlnaHQiPjxwYXRoIGQ9Ik0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChPYmUuY29udGVudCk7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CgogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci10YWI7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmb2N1cykgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtsaW5rXSkgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC50YWItY29udGVudCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpOwogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoLmlyb24tc2VsZWN0ZWQpKSA+IC50YWItY29udGVudCB7CiAgICAgICAgb3BhY2l0eTogMC44OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10YWItY29udGVudC11bnNlbGVjdGVkOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpIC50YWItY29udGVudCB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICBmb250LXdlaWdodDogNzAwOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10YWItY29udGVudC1mb2N1c2VkOwogICAgICB9CgogICAgICBwYXBlci1yaXBwbGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10YWItaW5rLCB2YXIoLS1wYXBlci15ZWxsb3ctYTEwMCkpOwogICAgICB9CgogICAgICAudGFiLWNvbnRlbnQgPiA6OnNsb3R0ZWQoYSkgewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CgogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJ0YWItY29udGVudCI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci10YWIiLGJlaGF2aW9yczpbTmksd2gsYXVdLHByb3BlcnRpZXM6e2xpbms6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fSxob3N0QXR0cmlidXRlczp7cm9sZToidGFiIn0sbGlzdGVuZXJzOntkb3duOiJfdXBkYXRlTm9pbmsiLHRhcDoiX29uVGFwIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVOb2luaygpfSxnZXQgX3BhcmVudE5vaW5rKCl7dmFyIGU9enQodGhpcykucGFyZW50Tm9kZTtyZXR1cm4hIWUmJiEhZS5ub2lua30sX3VwZGF0ZU5vaW5rOmZ1bmN0aW9uKCl7dGhpcy5ub2luaz0hIXRoaXMubm9pbmt8fCEhdGhpcy5fcGFyZW50Tm9pbmt9LF9vblRhcDpmdW5jdGlvbihlKXtpZih0aGlzLmxpbmspe3ZhciB0PXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigiYSIpO2lmKCF0fHxlLnRhcmdldD09PXQpcmV0dXJuO3QuY2xpY2soKX19fSk7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CgogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CgogICAgICAgIC8qIE5PVEU6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlIHZhbHVlIHRvIGJlIFxgdHJhbnNwYXJlbnRcYC4gKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiczsKICAgICAgfQoKICAgICAgOmhvc3QoOmRpcihydGwpKSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWwtcmV2ZXJzZTsKICAgICAgfQoKICAgICAgI3RhYnNDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1jb250YWluZXI7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIC1tb3otZmxleC1iYXNpczogYXV0bzsKICAgICAgICAtbXMtZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnMtY29udGVudDsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQ6bm90KC5zY3JvbGxhYmxlKSwKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlLmZpdC1jb250YWluZXIgewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgLyogSUUgLSBwcmV2ZW50IHRhYnMgZnJvbSBjb21wcmVzc2luZyB3aGVuIHRoZXkgc2hvdWxkIHNjcm9sbC4gKi8KICAgICAgICAtbXMtZmxleDogMSAwIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDAgYXV0bzsKICAgICAgICBmbGV4OiAxIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLm5vdC12aXNpYmxlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgICNzZWxlY3Rpb25CYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvciwgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1zZWxlY3Rpb24tYmFyOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmFsaWduLWJvdHRvbSB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgfQoKICAgICAgI3NlbGVjdGlvbkJhci5leHBhbmQgewogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmNvbnRyYWN0IHsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE4czsKICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQgPiA6OnNsb3R0ZWQoOm5vdCgjc2VsZWN0aW9uQmFyKSkgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLWxlZnQiIGNsYXNzJD0iW1tfY29tcHV0ZVNjcm9sbEJ1dHRvbkNsYXNzKF9sZWZ0SGlkZGVuLCBzY3JvbGxhYmxlLCBoaWRlU2Nyb2xsQnV0dG9ucyldXSIgb24tdXA9Il9vblNjcm9sbEJ1dHRvblVwIiBvbi1kb3duPSJfb25MZWZ0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgoKICAgIDxkaXYgaWQ9InRhYnNDb250YWluZXIiIG9uLXRyYWNrPSJfc2Nyb2xsIiBvbi1kb3duPSJfZG93biI+CiAgICAgIDxkaXYgaWQ9InRhYnNDb250ZW50IiBjbGFzcyQ9IltbX2NvbXB1dGVUYWJzQ29udGVudENsYXNzKHNjcm9sbGFibGUsIGZpdENvbnRhaW5lcildXSI+CiAgICAgICAgPGRpdiBpZD0ic2VsZWN0aW9uQmFyIiBjbGFzcyQ9IltbX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzcyhub0JhciwgYWxpZ25Cb3R0b20pXV0iIG9uLXRyYW5zaXRpb25lbmQ9Il9vbkJhclRyYW5zaXRpb25FbmQiPjwvZGl2PgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLXJpZ2h0IiBjbGFzcyQ9IltbX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzcyhfcmlnaHRIaWRkZW4sIHNjcm9sbGFibGUsIGhpZGVTY3JvbGxCdXR0b25zKV1dIiBvbi11cD0iX29uU2Nyb2xsQnV0dG9uVXAiIG9uLWRvd249Il9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgpgLGlzOiJwYXBlci10YWJzIixiZWhhdmlvcnM6W1pzLEw5XSxwcm9wZXJ0aWVzOntub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfbm9pbmtDaGFuZ2VkIn0sbm9CYXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9TbGlkZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzY3JvbGxhYmxlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGZpdENvbnRhaW5lcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxkaXNhYmxlRHJhZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxoaWRlU2Nyb2xsQnV0dG9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGlnbkJvdHRvbTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RhYmxlOnt0eXBlOlN0cmluZyx2YWx1ZToicGFwZXItdGFiIn0sYXV0b3NlbGVjdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdXRvc2VsZWN0RGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9zdGVwOnt0eXBlOk51bWJlcix2YWx1ZToxMH0sX2hvbGREZWxheTp7dHlwZTpOdW1iZXIsdmFsdWU6MX0sX2xlZnRIaWRkZW46e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3JpZ2h0SGlkZGVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9wcmV2aW91c1RhYjp7dHlwZTpPYmplY3R9fSxob3N0QXR0cmlidXRlczp7cm9sZToidGFibGlzdCJ9LGxpc3RlbmVyczp7Imlyb24tcmVzaXplIjoiX29uVGFiU2l6aW5nQ2hhbmdlZCIsImlyb24taXRlbXMtY2hhbmdlZCI6Il9vblRhYlNpemluZ0NoYW5nZWQiLCJpcm9uLXNlbGVjdCI6Il9vbklyb25TZWxlY3QiLCJpcm9uLWRlc2VsZWN0IjoiX29uSXJvbkRlc2VsZWN0In0sa2V5QmluZGluZ3M6eyJsZWZ0OmtleXVwIHJpZ2h0OmtleXVwIjoiX29uQXJyb3dLZXl1cCJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9ob2xkSm9iPW51bGwsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXZvaWQgMCx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQ9dm9pZCAwLHRoaXMuX2JpbmREZWxheWVkQWN0aXZhdGlvbkhhbmRsZXI9dGhpcy5fZGVsYXllZEFjdGl2YXRpb25IYW5kbGVyLmJpbmQodGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9vbkJsdXJDYXB0dXJlLmJpbmQodGhpcyksITApfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2V0U2Nyb2xsRGlyZWN0aW9uKCJ5Iix0aGlzLiQudGFic0NvbnRhaW5lcil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKX0sX25vaW5rQ2hhbmdlZDpmdW5jdGlvbihlKXt2YXIgdD16dCh0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci10YWIiKTt0LmZvckVhY2goZT90aGlzLl9zZXROb2lua0F0dHJpYnV0ZTp0aGlzLl9yZW1vdmVOb2lua0F0dHJpYnV0ZSl9LF9zZXROb2lua0F0dHJpYnV0ZTpmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZSgibm9pbmsiLCIiKX0sX3JlbW92ZU5vaW5rQXR0cmlidXRlOmZ1bmN0aW9uKGUpe2UucmVtb3ZlQXR0cmlidXRlKCJub2luayIpfSxfY29tcHV0ZVNjcm9sbEJ1dHRvbkNsYXNzOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4hdHx8cj8iaGlkZGVuIjplPyJub3QtdmlzaWJsZSI6IiJ9LF9jb21wdXRlVGFic0NvbnRlbnRDbGFzczpmdW5jdGlvbihlLHQpe3JldHVybiBlPyJzY3JvbGxhYmxlIisodD8iIGZpdC1jb250YWluZXIiOiIiKToiIGZpdC1jb250YWluZXIifSxfY29tcHV0ZVNlbGVjdGlvbkJhckNsYXNzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU/ImhpZGRlbiI6dD8iYWxpZ24tYm90dG9tIjoiIn0sX29uVGFiU2l6aW5nQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZGVib3VuY2UoIl9vblRhYlNpemluZ0NoYW5nZWQiLGZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsKCksdGhpcy5fdGFiQ2hhbmdlZCh0aGlzLnNlbGVjdGVkSXRlbSl9LDEwKX0sX29uSXJvblNlbGVjdDpmdW5jdGlvbihlKXt0aGlzLl90YWJDaGFuZ2VkKGUuZGV0YWlsLml0ZW0sdGhpcy5fcHJldmlvdXNUYWIpLHRoaXMuX3ByZXZpb3VzVGFiPWUuZGV0YWlsLml0ZW0sdGhpcy5jYW5jZWxEZWJvdW5jZXIoInRhYi1jaGFuZ2VkIil9LF9vbklyb25EZXNlbGVjdDpmdW5jdGlvbihlKXt0aGlzLmRlYm91bmNlKCJ0YWItY2hhbmdlZCIsZnVuY3Rpb24oKXt0aGlzLl90YWJDaGFuZ2VkKG51bGwsdGhpcy5fcHJldmlvdXNUYWIpLHRoaXMuX3ByZXZpb3VzVGFiPW51bGx9LDEpfSxfYWN0aXZhdGVIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKSxfXy5fYWN0aXZhdGVIYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX3NjaGVkdWxlQWN0aXZhdGlvbjpmdW5jdGlvbihlLHQpe3RoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbT1lLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD10aGlzLmFzeW5jKHRoaXMuX2JpbmREZWxheWVkQWN0aXZhdGlvbkhhbmRsZXIsdCl9LF9kZWxheWVkQWN0aXZhdGlvbkhhbmRsZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW07dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXZvaWQgMCx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQ9dm9pZCAwLGUuZmlyZSh0aGlzLmFjdGl2YXRlRXZlbnQsbnVsbCx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwfSl9LF9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbjpmdW5jdGlvbigpe3RoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dCE9PXZvaWQgMCYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0KSx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW09dm9pZCAwLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD12b2lkIDApfSxfb25BcnJvd0tleXVwOmZ1bmN0aW9uKGUpe3RoaXMuYXV0b3NlbGVjdCYmdGhpcy5fc2NoZWR1bGVBY3RpdmF0aW9uKHRoaXMuZm9jdXNlZEl0ZW0sdGhpcy5hdXRvc2VsZWN0RGVsYXkpfSxfb25CbHVyQ2FwdHVyZTpmdW5jdGlvbihlKXtlLnRhcmdldD09PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbSYmdGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKX0sZ2V0IF90YWJDb250YWluZXJTY3JvbGxTaXplKCl7cmV0dXJuIE1hdGgubWF4KDAsdGhpcy4kLnRhYnNDb250YWluZXIuc2Nyb2xsV2lkdGgtdGhpcy4kLnRhYnNDb250YWluZXIub2Zmc2V0V2lkdGgpfSxfc2Nyb2xsOmZ1bmN0aW9uKGUsdCl7aWYoISF0aGlzLnNjcm9sbGFibGUpe3ZhciByPXQmJi10LmRkeHx8MDt0aGlzLl9hZmZlY3RTY3JvbGwocil9fSxfZG93bjpmdW5jdGlvbihlKXt0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy5fZGVmYXVsdEZvY3VzQXN5bmMmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX2RlZmF1bHRGb2N1c0FzeW5jKSx0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYz1udWxsKX0sMSl9LF9hZmZlY3RTY3JvbGw6ZnVuY3Rpb24oZSl7dGhpcy4kLnRhYnNDb250YWluZXIuc2Nyb2xsTGVmdCs9ZTt2YXIgdD10aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0O3RoaXMuX2xlZnRIaWRkZW49dD09PTAsdGhpcy5fcmlnaHRIaWRkZW49dD09PXRoaXMuX3RhYkNvbnRhaW5lclNjcm9sbFNpemV9LF9vbkxlZnRTY3JvbGxCdXR0b25Eb3duOmZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsVG9MZWZ0KCksdGhpcy5faG9sZEpvYj1zZXRJbnRlcnZhbCh0aGlzLl9zY3JvbGxUb0xlZnQuYmluZCh0aGlzKSx0aGlzLl9ob2xkRGVsYXkpfSxfb25SaWdodFNjcm9sbEJ1dHRvbkRvd246ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxUb1JpZ2h0KCksdGhpcy5faG9sZEpvYj1zZXRJbnRlcnZhbCh0aGlzLl9zY3JvbGxUb1JpZ2h0LmJpbmQodGhpcyksdGhpcy5faG9sZERlbGF5KX0sX29uU2Nyb2xsQnV0dG9uVXA6ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKHRoaXMuX2hvbGRKb2IpLHRoaXMuX2hvbGRKb2I9bnVsbH0sX3Njcm9sbFRvTGVmdDpmdW5jdGlvbigpe3RoaXMuX2FmZmVjdFNjcm9sbCgtdGhpcy5fc3RlcCl9LF9zY3JvbGxUb1JpZ2h0OmZ1bmN0aW9uKCl7dGhpcy5fYWZmZWN0U2Nyb2xsKHRoaXMuX3N0ZXApfSxfdGFiQ2hhbmdlZDpmdW5jdGlvbihlLHQpe2lmKCFlKXt0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZCIpLHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiY29udHJhY3QiKSx0aGlzLl9wb3NpdGlvbkJhcigwLDApO3JldHVybn12YXIgcj10aGlzLiQudGFic0NvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1yLndpZHRoLGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPWkubGVmdC1yLmxlZnQ7aWYodGhpcy5fcG9zPXt3aWR0aDp0aGlzLl9jYWxjUGVyY2VudChpLndpZHRoLG4pLGxlZnQ6dGhpcy5fY2FsY1BlcmNlbnQobyxuKX0sdGhpcy5ub1NsaWRlfHx0PT1udWxsKXt0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZCIpLHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiY29udHJhY3QiKSx0aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9wb3Mud2lkdGgsdGhpcy5fcG9zLmxlZnQpO3JldHVybn12YXIgYT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9dGhpcy5pdGVtcy5pbmRleE9mKHQpLGw9dGhpcy5pdGVtcy5pbmRleE9mKGUpLGM9NTt0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5hZGQoImV4cGFuZCIpO3ZhciB1PXM8bCxoPXRoaXMuX2lzUlRMO2gmJih1PSF1KSx1P3RoaXMuX3Bvc2l0aW9uQmFyKHRoaXMuX2NhbGNQZXJjZW50KGkubGVmdCtpLndpZHRoLWEubGVmdCxuKS1jLHRoaXMuX2xlZnQpOnRoaXMuX3Bvc2l0aW9uQmFyKHRoaXMuX2NhbGNQZXJjZW50KGEubGVmdCthLndpZHRoLWkubGVmdCxuKS1jLHRoaXMuX2NhbGNQZXJjZW50KG8sbikrYyksdGhpcy5zY3JvbGxhYmxlJiZ0aGlzLl9zY3JvbGxUb1NlbGVjdGVkSWZOZWVkZWQoaS53aWR0aCxvKX0sX3Njcm9sbFRvU2VsZWN0ZWRJZk5lZWRlZDpmdW5jdGlvbihlLHQpe3ZhciByPXQtdGhpcy4kLnRhYnNDb250YWluZXIuc2Nyb2xsTGVmdDtyPDA/dGhpcy4kLnRhYnNDb250YWluZXIuc2Nyb2xsTGVmdCs9cjoocis9ZS10aGlzLiQudGFic0NvbnRhaW5lci5vZmZzZXRXaWR0aCxyPjAmJih0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0Kz1yKSl9LF9jYWxjUGVyY2VudDpmdW5jdGlvbihlLHQpe3JldHVybiAxMDAqZS90fSxfcG9zaXRpb25CYXI6ZnVuY3Rpb24oZSx0KXtlPWV8fDAsdD10fHwwLHRoaXMuX3dpZHRoPWUsdGhpcy5fbGVmdD10LHRoaXMudHJhbnNmb3JtKCJ0cmFuc2xhdGVYKCIrdCsiJSkgc2NhbGVYKCIrZS8xMDArIikiLHRoaXMuJC5zZWxlY3Rpb25CYXIpfSxfb25CYXJUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0O3QuY29udGFpbnMoImV4cGFuZCIpPyh0LnJlbW92ZSgiZXhwYW5kIiksdC5hZGQoImNvbnRyYWN0IiksdGhpcy5fcG9zaXRpb25CYXIodGhpcy5fcG9zLndpZHRoLHRoaXMuX3Bvcy5sZWZ0KSk6dC5jb250YWlucygiY29udHJhY3QiKSYmdC5yZW1vdmUoImNvbnRyYWN0Iil9fSk7dmFyIFp4PW51bGw7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvYXN0LWJhY2tncm91bmQtY29sb3IsICMzMjMyMzIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b2FzdC1jb2xvciwgI2YxZjFmMSk7CiAgICAgICAgbWluLWhlaWdodDogNDhweDsKICAgICAgICBtaW4td2lkdGg6IDI4OHB4OwogICAgICAgIHBhZGRpbmc6IDE2cHggMjRweDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4yNik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIG1hcmdpbjogMTJweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4zcywgb3BhY2l0eSAwLjNzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuM3M7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICB9CgogICAgICA6aG9zdCguY2Fwc3VsZSkgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KC5maXQtYm90dG9tKSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICA6aG9zdCgucGFwZXItdG9hc3Qtb3BlbikgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c3BhbiBpZD0ibGFiZWwiPnt7dGV4dH19PC9zcGFuPgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJwYXBlci10b2FzdCIsYmVoYXZpb3JzOlskeF0scHJvcGVydGllczp7Zml0SW50bzp7dHlwZTpPYmplY3QsdmFsdWU6d2luZG93LG9ic2VydmVyOiJfb25GaXRJbnRvQ2hhbmdlZCJ9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6ImxlZnQifSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToiYm90dG9tIn0sZHVyYXRpb246e3R5cGU6TnVtYmVyLHZhbHVlOjNlM30sdGV4dDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LG5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH0sbm9BdXRvRm9jdXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH19LGxpc3RlbmVyczp7dHJhbnNpdGlvbmVuZDoiX19vblRyYW5zaXRpb25FbmQifSxnZXQgdmlzaWJsZSgpe3JldHVybiBOYS5fd2FybigiYHZpc2libGVgIGlzIGRlcHJlY2F0ZWQsIHVzZSBgb3BlbmVkYCBpbnN0ZWFkIiksdGhpcy5vcGVuZWR9LGdldCBfY2FuQXV0b0Nsb3NlKCl7cmV0dXJuIHRoaXMuZHVyYXRpb24+MCYmdGhpcy5kdXJhdGlvbiE9PTEvMH0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2F1dG9DbG9zZT1udWxsLFFsLnJlcXVlc3RBdmFpbGFiaWxpdHkoKX0sc2hvdzpmdW5jdGlvbihlKXt0eXBlb2YgZT09InN0cmluZyImJihlPXt0ZXh0OmV9KTtmb3IodmFyIHQgaW4gZSl0LmluZGV4T2YoIl8iKT09PTA/TmEuX3dhcm4oJ1RoZSBwcm9wZXJ0eSAiJyt0KyciIGlzIHByaXZhdGUgYW5kIHdhcyBub3Qgc2V0LicpOnQgaW4gdGhpcz90aGlzW3RdPWVbdF06TmEuX3dhcm4oJ1RoZSBwcm9wZXJ0eSAiJyt0KyciIGlzIG5vdCB2YWxpZC4nKTt0aGlzLm9wZW4oKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuY2xvc2UoKX0sX19vblRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oZSl7ZSYmZS50YXJnZXQ9PT10aGlzJiZlLnByb3BlcnR5TmFtZT09PSJvcGFjaXR5IiYmKHRoaXMub3BlbmVkP3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpOnRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9hdXRvQ2xvc2UhPT1udWxsJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9hdXRvQ2xvc2UpLHRoaXMuX2F1dG9DbG9zZT1udWxsKSx0aGlzLm9wZW5lZD8oWngmJlp4IT09dGhpcyYmWnguY2xvc2UoKSxaeD10aGlzLHRoaXMuZmlyZSgiaXJvbi1hbm5vdW5jZSIse3RleHQ6dGhpcy50ZXh0fSksdGhpcy5fY2FuQXV0b0Nsb3NlJiYodGhpcy5fYXV0b0Nsb3NlPXRoaXMuYXN5bmModGhpcy5jbG9zZSx0aGlzLmR1cmF0aW9uKSkpOlp4PT09dGhpcyYmKFp4PW51bGwpLFBtLl9vcGVuZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX3JlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMuY2xhc3NMaXN0LmFkZCgicGFwZXItdG9hc3Qtb3BlbiIpfSxfcmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7dGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJwYXBlci10b2FzdC1vcGVuIil9LF9vbkZpdEludG9DaGFuZ2VkOmZ1bmN0aW9uKGUpe3RoaXMucG9zaXRpb25UYXJnZXQ9ZX19KTt2YXIgQzB0PVFgCgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgICBvdXRsaW5lOm5vbmU7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYmFyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciBsaW5lYXIgLjA4czsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1iYXItY29sb3IsICMwMDAwMDApOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1iYXI7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAtM3B4OwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gbGluZWFyIC4wOHMsIGJhY2tncm91bmQtY29sb3IgbGluZWFyIC4wOHM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIGxpbmVhciAuMDhzLCBiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAuMDhzOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYnV0dG9uLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTUwKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJ1dHRvbjsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1idXR0b24uZHJhZ2dpbmcgewogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF06bm90KFtkaXNhYmxlZF0pKSAudG9nZ2xlLWJhciB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1iYXItY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWJhcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnRvZ2dsZS1iYXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7CiAgICAgICAgb3BhY2l0eTogMC4xMjsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAwKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdOm5vdChbZGlzYWJsZWRdKSkgLnRvZ2dsZS1idXR0b24gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1idXR0b24tY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnRvZ2dsZS1idXR0b24gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNiZGJkYmQ7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1pbmsgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IC0xNHB4OwogICAgICAgIGxlZnQ6IC0xNHB4OwogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1pbms7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXSkgLnRvZ2dsZS1pbmsgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1pbms7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAzNnB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICAvKiBUaGUgdG9nZ2xlIGJ1dHRvbiBoYXMgYW4gYWJzb2x1dGUgcG9zaXRpb24gb2YgLTNweDsgVGhlIGV4dHJhIDFweAogICAgICAgIC8qIGFjY291bnRzIGZvciB0aGUgdG9nZ2xlIGJ1dHRvbiBzaGFkb3cgYm94LiAqLwogICAgICAgIG1hcmdpbjogNHB4IDFweDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1sYWJlbCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1sYWJlbC1zcGFjaW5nLCA4cHgpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWxhYmVsLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgLyogaW52YWxpZCBzdGF0ZSAqLwogICAgICA6aG9zdChbaW52YWxpZF0pIC50b2dnbGUtYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWludmFsaWQtYmFyLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CgogICAgICA6aG9zdChbaW52YWxpZF0pIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWludmFsaWQtYnV0dG9uLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CgogICAgICA6aG9zdChbaW52YWxpZF0pIC50b2dnbGUtaW5rIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1pbnZhbGlkLWluay1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtY29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0idG9nZ2xlQmFyIiBjbGFzcz0idG9nZ2xlLWJhciI+PC9kaXY+CiAgICAgIDxkaXYgaWQ9InRvZ2dsZUJ1dHRvbiIgY2xhc3M9InRvZ2dsZS1idXR0b24iPjwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0idG9nZ2xlLWxhYmVsIj48c2xvdD48L3Nsb3Q+PC9kaXY+CgogIGA7QzB0LnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpO1l0KHtfdGVtcGxhdGU6QzB0LGlzOiJwYXBlci10b2dnbGUtYnV0dG9uIixiZWhhdmlvcnM6W2p4XSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIiwiYXJpYS1wcmVzc2VkIjoiZmFsc2UiLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e30sbGlzdGVuZXJzOnt0cmFjazoiX29udHJhY2sifSxhdHRhY2hlZDpmdW5jdGlvbigpe1RtKHRoaXMsZnVuY3Rpb24oKXtkXyh0aGlzLCJwYW4teSIpfSl9LF9vbnRyYWNrOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGV0YWlsO3Quc3RhdGU9PT0ic3RhcnQiP3RoaXMuX3RyYWNrU3RhcnQodCk6dC5zdGF0ZT09PSJ0cmFjayI/dGhpcy5fdHJhY2tNb3ZlKHQpOnQuc3RhdGU9PT0iZW5kIiYmdGhpcy5fdHJhY2tFbmQodCl9LF90cmFja1N0YXJ0OmZ1bmN0aW9uKGUpe3RoaXMuX3dpZHRoPXRoaXMuJC50b2dnbGVCYXIub2Zmc2V0V2lkdGgvMix0aGlzLl90cmFja0NoZWNrZWQ9dGhpcy5jaGVja2VkLHRoaXMuJC50b2dnbGVCdXR0b24uY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKX0sX3RyYWNrTW92ZTpmdW5jdGlvbihlKXt2YXIgdD1lLmR4O3RoaXMuX3g9TWF0aC5taW4odGhpcy5fd2lkdGgsTWF0aC5tYXgoMCx0aGlzLl90cmFja0NoZWNrZWQ/dGhpcy5fd2lkdGgrdDp0KSksdGhpcy50cmFuc2xhdGUzZCh0aGlzLl94KyJweCIsMCwwLHRoaXMuJC50b2dnbGVCdXR0b24pLHRoaXMuX3VzZXJBY3RpdmF0ZSh0aGlzLl94PnRoaXMuX3dpZHRoLzIpfSxfdHJhY2tFbmQ6ZnVuY3Rpb24oZSl7dGhpcy4kLnRvZ2dsZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpLHRoaXMudHJhbnNmb3JtKCIiLHRoaXMuJC50b2dnbGVCdXR0b24pfSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7dGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC50b2dnbGVCdXR0b247dmFyIGU9YXUuX2NyZWF0ZVJpcHBsZSgpO3JldHVybiBlLmlkPSJpbmsiLGUuc2V0QXR0cmlidXRlKCJyZWNlbnRlcnMiLCIiKSxlLmNsYXNzTGlzdC5hZGQoImNpcmNsZSIsInRvZ2dsZS1pbmsiKSxlfX0pO1l0KHtfdGVtcGxhdGU6UWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodDogdmFyKC0tcGFwZXItdG9vbGJhci1oZWlnaHQsIDY0cHgpOwogICAgICAgIC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodDogdmFyKC0tcGFwZXItdG9vbGJhci1zbS1oZWlnaHQsIDU2cHgpOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXRvb2xiYXItYmFja2dyb3VuZCwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b29sYmFyLWNvbG9yLCB2YXIoLS1kYXJrLXRoZW1lLXRleHQtY29sb3IpKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sYmFyOwogICAgICB9CgogICAgICA6aG9zdCguYW5pbWF0ZSkgewogICAgICAgIHRyYW5zaXRpb246IHZhcigtLXBhcGVyLXRvb2xiYXItdHJhbnNpdGlvbiwgaGVpZ2h0IDAuMThzIGVhc2UtaW4pOwogICAgICB9CgogICAgICA6aG9zdCgubWVkaXVtLXRhbGwpIHsKICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodCkgKiAyKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sYmFyLW1lZGl1bTsKICAgICAgfQoKICAgICAgOmhvc3QoLnRhbGwpIHsKICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodCkgKiAzKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sYmFyLXRhbGw7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0KTsKICAgICAgICBwYWRkaW5nOiAwIDE2cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sYmFyLWNvbnRlbnQ7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIFRPRE86IFdoZXJlIHNob3VsZCBtZWRpYSBxdWVyeSBicmVha3BvaW50cyBsaXZlIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGVsZW1lbnRzPwogICAgICAgKi8KCiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkgewogICAgICAgIDpob3N0IHsKICAgICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCk7CiAgICAgICAgfQoKICAgICAgICA6aG9zdCgubWVkaXVtLXRhbGwpIHsKICAgICAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0KSAqIDIpOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoLnRhbGwpIHsKICAgICAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0KSAqIDMpOwogICAgICAgIH0KCiAgICAgICAgLnRvb2xiYXItdG9vbHMgewogICAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgICN0b3BCYXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLyogbWlkZGxlIGJhciAqLwogICAgICAjbWlkZGxlQmFyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KC50YWxsKSAjbWlkZGxlQmFyLAogICAgICA6aG9zdCgubWVkaXVtLXRhbGwpICNtaWRkbGVCYXIgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgICAgfQoKICAgICAgLyogYm90dG9tIGJhciAqLwogICAgICAjYm90dG9tQmFyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1ha2UgZWxlbWVudHMgKGUuZy4gYnV0dG9ucykgcmVzcG9uZCB0byBtb3VzZS90b3VjaCBldmVudHMKICAgICAgICoKICAgICAgICogXGAudG9vbGJhci10b29sc1xgIGRpc2FibGVzIHRvdWNoIGV2ZW50cyBzbyBtdWx0aXBsZSB0b29sYmFycyBjYW4gc3RhY2sgYW5kIG5vdAogICAgICAgKiBhYnNvcmIgZXZlbnRzLiBBbGwgY2hpbGRyZW4gbXVzdCBoYXZlIHBvaW50ZXIgZXZlbnRzIHJlLWVuYWJsZWQgdG8gd29yayBhcwogICAgICAgKiBleHBlY3RlZC4KICAgICAgICovCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKCo6bm90KFtkaXNhYmxlZF0pKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKC50aXRsZSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgudGl0bGUpIHsKICAgICAgICBtYXJnaW4tbGVmdDogNTZweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQocGFwZXItaWNvbi1idXR0b24gKyAudGl0bGUpIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFRoZSAtLXBhcGVyLXRvb2xiYXItdGl0bGUgbWl4aW4gaXMgYXBwbGllZCBoZXJlIGluc3RlYWQgb2YgYWJvdmUgdG8KICAgICAgICogZml4IHRoZSBpc3N1ZSB3aXRoIG1hcmdpbi1sZWZ0IGJlaW5nIGlnbm9yZWQgZHVlIHRvIGNzcyBvcmRlcmluZy4KICAgICAgICovCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKC50aXRsZSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2xiYXItdGl0bGU7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKHBhcGVyLWljb24tYnV0dG9uW2ljb249bWVudV0pIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKC5maXQpIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiBhdXRvOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLyogVE9ETyhub21zKTogVW50aWwgd2UgaGF2ZSBhIGJldHRlciBzb2x1dGlvbiBmb3IgY2xhc3NlcyB0aGF0IGRvbid0IHVzZQogICAgICAgKiAvZGVlcC8gY3JlYXRlIG91ciBvd24uCiAgICAgICAqLwogICAgICAuc3RhcnQtanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtc3RhcnQtanVzdGlmaWVkOwogICAgICB9CgogICAgICAuY2VudGVyLWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5lbmQtanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZW5kLWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmFyb3VuZC1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1hcm91bmQtanVzdGlmaWVkOwogICAgICB9CgogICAgICAuanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtanVzdGlmaWVkOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InRvcEJhciIgY2xhc3NcJD0idG9vbGJhci10b29scyBbW19jb21wdXRlQmFyRXh0cmFDbGFzc2VzKGp1c3RpZnkpXV0iPgogICAgICA8c2xvdCBuYW1lPSJ0b3AiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9Im1pZGRsZUJhciIgY2xhc3NcJD0idG9vbGJhci10b29scyBbW19jb21wdXRlQmFyRXh0cmFDbGFzc2VzKG1pZGRsZUp1c3RpZnkpXV0iPgogICAgICA8c2xvdCBuYW1lPSJtaWRkbGUiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImJvdHRvbUJhciIgY2xhc3NcJD0idG9vbGJhci10b29scyBbW19jb21wdXRlQmFyRXh0cmFDbGFzc2VzKGJvdHRvbUp1c3RpZnkpXV0iPgogICAgICA8c2xvdCBuYW1lPSJib3R0b20iPjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci10b29sYmFyIixob3N0QXR0cmlidXRlczp7cm9sZToidG9vbGJhciJ9LHByb3BlcnRpZXM6e2JvdHRvbUp1c3RpZnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxqdXN0aWZ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sbWlkZGxlSnVzdGlmeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxyZWFkeTpmdW5jdGlvbigpe2NvbnNvbGUud2Fybih0aGlzLmlzLCJpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGFwcC1sYXlvdXQgaW5zdGVhZCEiKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlcj10aGlzLl9vYnNlcnZlKHRoaXMpLHRoaXMuX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5KCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJnRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKX0sX29ic2VydmU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVBcmlhTGFiZWxsZWRCeSgpfS5iaW5kKHRoaXMpKTtyZXR1cm4gdC5vYnNlcnZlKGUse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksdH0sX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5OmZ1bmN0aW9uKCl7dWkoKTtmb3IodmFyIGU9W10sdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh6dCh0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3JBbGwoInNsb3QiKSkuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHp0KHRoaXMucm9vdCkucXVlcnlTZWxlY3RvckFsbCgiY29udGVudCIpKSkscixuPTA7cj10W25dO24rKylmb3IodmFyIGk9enQocikuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLG8sYT0wO289aVthXTthKyspaWYoby5jbGFzc0xpc3QmJm8uY2xhc3NMaXN0LmNvbnRhaW5zKCJ0aXRsZSIpKWlmKG8uaWQpZS5wdXNoKG8uaWQpO2Vsc2V7dmFyIHM9InBhcGVyLXRvb2xiYXItbGFiZWwtIitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KTtvLmlkPXMsZS5wdXNoKHMpfWUubGVuZ3RoPjAmJnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLGUuam9pbigiICIpKX0sX2NvbXB1dGVCYXJFeHRyYUNsYXNzZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZSsoZT09PSJqdXN0aWZpZWQiPyIiOiItanVzdGlmaWVkIik6IiJ9fSk7WXQoe190ZW1wbGF0ZTpRYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgei1pbmRleDogMTAwMjsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9vbHRpcC1iYWNrZ3JvdW5kLCAjNjE2MTYxKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9vbHRpcC10ZXh0LWNvbG9yLCB3aGl0ZSk7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2NhbGVVcCB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjApOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTY2FsZURvd24gewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lRmFkZUluT3BhY2l0eSB7CiAgICAgICAgMCUgewogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lRmFkZU91dE9wYWNpdHkgewogICAgICAgIDAlIHsKICAgICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZVNsaWRlRG93bkluIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgICAxMCUgewogICAgICAgICAgb3BhY2l0eTogMC4yOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTbGlkZURvd25PdXQgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICB9CiAgICAgICAgMTAlIHsKICAgICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLmZhZGUtaW4tYW5pbWF0aW9uIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1pbiwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZUZhZGVJbk9wYWNpdHk7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1pbiwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuZmFkZS1vdXQtYW5pbWF0aW9uIHsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVGYWRlT3V0T3BhY2l0eTsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuc2NhbGUtdXAtYW5pbWF0aW9uIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVTY2FsZVVwOwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24taW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNjYWxlLWRvd24tYW5pbWF0aW9uIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2NhbGVEb3duOwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zbGlkZS1kb3duLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNsaWRlRG93bkluOwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNsaWRlLWRvd24tYW5pbWF0aW9uLW91dCB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2xpZGVEb3duT3V0OwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKTsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5jYW5jZWwtYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IC0zMHMgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLyogVGhhbmtzIElFIDEwLiAqLwoKICAgICAgLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InRvb2x0aXAiIGNsYXNzPSJoaWRkZW4iPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItdG9vbHRpcCIsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRvb2x0aXAiLHRhYmluZGV4Oi0xfSxwcm9wZXJ0aWVzOntmb3I6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfZmluZFRhcmdldCJ9LG1hbnVhbE1vZGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX21hbnVhbE1vZGVDaGFuZ2VkIn0scG9zaXRpb246e3R5cGU6U3RyaW5nLHZhbHVlOiJib3R0b20ifSxmaXRUb1Zpc2libGVCb3VuZHM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sb2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZToxNH0sbWFyZ2luVG9wOnt0eXBlOk51bWJlcix2YWx1ZToxNH0sYW5pbWF0aW9uRGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjUwMCxvYnNlcnZlcjoiX2RlbGF5Q2hhbmdlIn0sYW5pbWF0aW9uRW50cnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxhbmltYXRpb25FeGl0Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sYW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybntlbnRyeTpbe25hbWU6ImZhZGUtaW4tYW5pbWF0aW9uIixub2RlOnRoaXMsdGltaW5nOntkZWxheTowfX1dLGV4aXQ6W3tuYW1lOiJmYWRlLW91dC1hbmltYXRpb24iLG5vZGU6dGhpc31dfX19LF9zaG93aW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxsaXN0ZW5lcnM6e3dlYmtpdEFuaW1hdGlvbkVuZDoiX29uQW5pbWF0aW9uRW5kIn0sZ2V0IHRhcmdldCgpe3ZhciBlPXp0KHRoaXMpLnBhcmVudE5vZGUsdD16dCh0aGlzKS5nZXRPd25lclJvb3QoKSxyO3JldHVybiB0aGlzLmZvcj9yPXp0KHQpLnF1ZXJ5U2VsZWN0b3IoIiMiK3RoaXMuZm9yKTpyPWUubm9kZVR5cGU9PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERT90Lmhvc3Q6ZSxyfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2ZpbmRUYXJnZXQoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLm1hbnVhbE1vZGV8fHRoaXMuX3JlbW92ZUxpc3RlbmVycygpfSxwbGF5QW5pbWF0aW9uOmZ1bmN0aW9uKGUpe2U9PT0iZW50cnkiP3RoaXMuc2hvdygpOmU9PT0iZXhpdCImJnRoaXMuaGlkZSgpfSxjYW5jZWxBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKCJjYW5jZWwtYW5pbWF0aW9uIil9LHNob3c6ZnVuY3Rpb24oKXtpZighdGhpcy5fc2hvd2luZyl7aWYoenQodGhpcykudGV4dENvbnRlbnQudHJpbSgpPT09IiIpe2Zvcih2YXIgZT0hMCx0PXp0KHRoaXMpLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKSxyPTA7cjx0Lmxlbmd0aDtyKyspaWYodFtyXS50ZXh0Q29udGVudC50cmltKCkhPT0iIil7ZT0hMTticmVha31pZihlKXJldHVybn10aGlzLl9zaG93aW5nPSEwLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImNhbmNlbC1hbmltYXRpb24iKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImV4aXQiKSksdGhpcy51cGRhdGVQb3NpdGlvbigpLHRoaXMuX2FuaW1hdGlvblBsYXlpbmc9ITAsdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LmFkZCh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKX19LGhpZGU6ZnVuY3Rpb24oKXtpZighIXRoaXMuX3Nob3dpbmcpe2lmKHRoaXMuX2FuaW1hdGlvblBsYXlpbmcpe3RoaXMuX3Nob3dpbmc9ITEsdGhpcy5fY2FuY2VsQW5pbWF0aW9uKCk7cmV0dXJufWVsc2UgdGhpcy5fb25BbmltYXRpb25GaW5pc2goKTt0aGlzLl9zaG93aW5nPSExLHRoaXMuX2FuaW1hdGlvblBsYXlpbmc9ITB9fSx1cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigpe2lmKCEoIXRoaXMuX3RhcmdldHx8IXRoaXMub2Zmc2V0UGFyZW50KSl7dmFyIGU9dGhpcy5vZmZzZXQ7dGhpcy5tYXJnaW5Ub3AhPTE0JiZ0aGlzLm9mZnNldD09MTQmJihlPXRoaXMubWFyZ2luVG9wKTt2YXIgdD10aGlzLm9mZnNldFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPXRoaXMuX3RhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT0oci53aWR0aC1uLndpZHRoKS8yLG89KHIuaGVpZ2h0LW4uaGVpZ2h0KS8yLGE9ci5sZWZ0LXQubGVmdCxzPXIudG9wLXQudG9wLGwsYztzd2l0Y2godGhpcy5wb3NpdGlvbil7Y2FzZSJ0b3AiOmw9YStpLGM9cy1uLmhlaWdodC1lO2JyZWFrO2Nhc2UiYm90dG9tIjpsPWEraSxjPXMrci5oZWlnaHQrZTticmVhaztjYXNlImxlZnQiOmw9YS1uLndpZHRoLWUsYz1zK287YnJlYWs7Y2FzZSJyaWdodCI6bD1hK3Iud2lkdGgrZSxjPXMrbzticmVha310aGlzLmZpdFRvVmlzaWJsZUJvdW5kcz8odC5sZWZ0K2wrbi53aWR0aD53aW5kb3cuaW5uZXJXaWR0aD8odGhpcy5zdHlsZS5yaWdodD0iMHB4Iix0aGlzLnN0eWxlLmxlZnQ9ImF1dG8iKToodGhpcy5zdHlsZS5sZWZ0PU1hdGgubWF4KDAsbCkrInB4Iix0aGlzLnN0eWxlLnJpZ2h0PSJhdXRvIiksdC50b3ArYytuLmhlaWdodD53aW5kb3cuaW5uZXJIZWlnaHQ/KHRoaXMuc3R5bGUuYm90dG9tPXQuaGVpZ2h0LXMrZSsicHgiLHRoaXMuc3R5bGUudG9wPSJhdXRvIik6KHRoaXMuc3R5bGUudG9wPU1hdGgubWF4KC10LnRvcCxjKSsicHgiLHRoaXMuc3R5bGUuYm90dG9tPSJhdXRvIikpOih0aGlzLnN0eWxlLmxlZnQ9bCsicHgiLHRoaXMuc3R5bGUudG9wPWMrInB4Iil9fSxfYWRkTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWVudGVyIiwic2hvdyIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiZm9jdXMiLCJzaG93IiksdGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiYmx1ciIsImhpZGUiKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsInRhcCIsImhpZGUiKSksdGhpcy5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMubGlzdGVuKHRoaXMsIm1vdXNlZW50ZXIiLCJoaWRlIil9LF9maW5kVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlfHx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlzLl90YXJnZXQ9dGhpcy50YXJnZXQsdGhpcy5tYW51YWxNb2RlfHx0aGlzLl9hZGRMaXN0ZW5lcnMoKX0sX2RlbGF5Q2hhbmdlOmZ1bmN0aW9uKGUpe2UhPT01MDAmJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LWluIjplKyJtcyJ9KX0sX21hbnVhbE1vZGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlP3RoaXMuX3JlbW92ZUxpc3RlbmVycygpOnRoaXMuX2FkZExpc3RlbmVycygpfSxfY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7dGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImV4aXQiKSksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpfSxfb25BbmltYXRpb25GaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaG93aW5nJiYodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKCJjYW5jZWwtYW5pbWF0aW9uIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LmFkZCh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpKX0sX29uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMSx0aGlzLl9zaG93aW5nfHwodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpKX0sX2dldEFuaW1hdGlvblR5cGU6ZnVuY3Rpb24oZSl7aWYoZT09PSJlbnRyeSImJnRoaXMuYW5pbWF0aW9uRW50cnkhPT0iIilyZXR1cm4gdGhpcy5hbmltYXRpb25FbnRyeTtpZihlPT09ImV4aXQiJiZ0aGlzLmFuaW1hdGlvbkV4aXQhPT0iIilyZXR1cm4gdGhpcy5hbmltYXRpb25FeGl0O2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW2VdJiZ0eXBlb2YgdGhpcy5hbmltYXRpb25Db25maWdbZV1bMF0ubmFtZT09InN0cmluZyIpe2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW2VdWzBdLnRpbWluZyYmdGhpcy5hbmltYXRpb25Db25maWdbZV1bMF0udGltaW5nLmRlbGF5JiZ0aGlzLmFuaW1hdGlvbkNvbmZpZ1tlXVswXS50aW1pbmcuZGVsYXkhPT0wKXt2YXIgdD10aGlzLmFuaW1hdGlvbkNvbmZpZ1tlXVswXS50aW1pbmcuZGVsYXk7ZT09PSJlbnRyeSI/dGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4iOnQrIm1zIn0pOmU9PT0iZXhpdCImJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCI6dCsibXMifSl9cmV0dXJuIHRoaXMuYW5pbWF0aW9uQ29uZmlnW2VdWzBdLm5hbWV9fSxfcmVtb3ZlTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsIm1vdXNlZW50ZXIiLCJzaG93IiksdGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsImZvY3VzIiwic2hvdyIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJibHVyIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJ0YXAiLCJoaWRlIikpLHRoaXMudW5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMudW5saXN0ZW4odGhpcywibW91c2VlbnRlciIsImhpZGUiKX19KTt2YXIgZWI9RWUoT2UoKSwxKTt2YXIgZkU9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lcj10fX0sTVc9bmV3IFNldCxSOT1uZXcgU2V0O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIiwoKT0+e01XLmZvckVhY2goZT0+ZS5saXN0ZW5lcigpKX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzdG9yYWdlIiwoKT0+e1I5LmZvckVhY2goZT0+ZS5saXN0ZW5lcigpKX0pO2Z1bmN0aW9uIHBFKGUpe2xldCB0PW5ldyBmRShlKTtyZXR1cm4gTVcuYWRkKHQpLHR9ZnVuY3Rpb24gRVcoZSl7bGV0IHQ9bmV3IGZFKGUpO3JldHVybiBSOS5hZGQodCksdH1mdW5jdGlvbiBUVygpe1I5LmZvckVhY2goZT0+ZS5saXN0ZW5lcigpKX1mdW5jdGlvbiBDVyhlKXtNVy5kZWxldGUoZSl9ZnVuY3Rpb24gQVcoZSl7UjkuZGVsZXRlKGUpfXZhciBMVz17fTskcyhMVyx7Z2V0RmFrZUhhc2g6KCk9PklXLHNldEZha2VIYXNoOigpPT5QVyxzZXRVc2VIYXNoOigpPT56YmUsdXNlSGFzaDooKT0+Tjl9KTt2YXIgQTB0PSExO2Z1bmN0aW9uIHpiZShlKXtBMHQ9ZX1mdW5jdGlvbiBOOSgpe3JldHVybiBBMHR9dmFyIFAwdD0iIjtmdW5jdGlvbiBQVyhlKXtQMHQ9ZX1mdW5jdGlvbiBJVygpe3JldHVybiBQMHR9dmFyIEp4PSJfX3RhYl9fIixrVz17fTtmdW5jdGlvbiBJMHQoKXtyZXR1cm4ga1d9ZnVuY3Rpb24gTDB0KGUpe2tXPWV9cEUoKCk9PntrVz10YihReCgpKX0pO2Z1bmN0aW9uIFF4KCl7cmV0dXJuIE45KCk/d2luZG93LmxvY2F0aW9uLmhhc2guc2xpY2UoMSk6SVcoKX1mdW5jdGlvbiB0YihlKXtsZXQgdD17fTtyZXR1cm4gZS5zcGxpdCgiJiIpLmZvckVhY2gobj0+e2xldCBpPW4uc3BsaXQoIj0iKTtpLmxlbmd0aD09PTE/dFtKeF09aVswXTppLmxlbmd0aD09PTImJih0W2RlY29kZVVSSUNvbXBvbmVudChpWzBdKV09ZGVjb2RlVVJJQ29tcG9uZW50KGlbMV0pKX0pLHR9ZnVuY3Rpb24gRDkoZSx0PSExKXtpZihOOSgpKWlmKHQpe2xldCByPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO3IuaGFzaD1lLHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh3aW5kb3cuaGlzdG9yeS5zdGF0ZSwiIixyLnRvU3RyaW5nKCkpfWVsc2Ugd2luZG93LmxvY2F0aW9uLmhhc2g9ZTtlbHNlIFBXKGUpfWZ1bmN0aW9uIE85KGUpe2xldCB0PSIiO2VbSnhdIT09dm9pZCAwJiYodCs9ZVtKeF0pO2xldCByPU9iamVjdC5rZXlzKGUpLm1hcChuPT5bbixlW25dXSkuZmlsdGVyKG49Pm5bMF0hPT1KeCkubWFwKG49PmVuY29kZVVSSUNvbXBvbmVudChuWzBdKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KG5bMV0pKS5qb2luKCImIik7cmV0dXJuIHIubGVuZ3RoPjA/dCsiJiIrcjp0fWZ1bmN0aW9uIGswdChlLHQ9ITEpe2xldCByPXRiKFF4KCkpO2RlbGV0ZSByW2VdLEQ5KE85KHIpLHQpfXZhciBOMHQ9ImRpc2FtYmlndWF0b3IiLHtnZXQ6RmJlLHNldDpCYmUsZ2V0SW5pdGlhbGl6ZXI6eV8sZ2V0T2JzZXJ2ZXI6dl8sZGlzcG9zZUJpbmRpbmc6SGJlfT1nRShlPT5lLGU9PmUpLHtnZXQ6VmJlLHNldDpVYmUsZ2V0SW5pdGlhbGl6ZXI6dnAsZ2V0T2JzZXJ2ZXI6eHAsZGlzcG9zZUJpbmRpbmc6cWJlfT1nRShlPT5lPT09InRydWUiPyEwOmU9PT0iZmFsc2UiPyExOnZvaWQgMCxlPT5lLnRvU3RyaW5nKCkpLHtnZXQ6Ulcsc2V0Ok5XLGdldEluaXRpYWxpemVyOmRFLGdldE9ic2VydmVyOm1FLGRpc3Bvc2VCaW5kaW5nOkdiZX09Z0UoZT0+K2UsZT0+ZS50b1N0cmluZygpKSx7Z2V0OldiZSxzZXQ6WWJlLGdldEluaXRpYWxpemVyOkRXLGdldE9ic2VydmVyOk9XLGRpc3Bvc2VCaW5kaW5nOmpiZX09Z0UoZT0+SlNPTi5wYXJzZShhdG9iKGUpKSxlPT5idG9hKEpTT04uc3RyaW5naWZ5KGUpKSk7ZnVuY3Rpb24gZ0UoZSx0KXtsZXQgcj1bXSxuPVtdO2Z1bmN0aW9uIGkoYyx1PXt9KXtsZXR7ZGVmYXVsdFZhbHVlOmgsdXNlTG9jYWxTdG9yYWdlOmY9ITF9PXUscD1mP3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShjKTp0YihReCgpKVtjXTtyZXR1cm4gcD09bnVsbD9lYi5jbG9uZURlZXAoaCk6ZShwKX1mdW5jdGlvbiBvKGMsdSxoPXt9KXtsZXR7ZGVmYXVsdFZhbHVlOmYsdXNlTG9jYWxTdG9yYWdlOnA9ITEsdXNlTG9jYXRpb25SZXBsYWNlOmQ9ITF9PWgsZz10KHUpO2lmKHApd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGMsZyksVFcoKTtlbHNlIGlmKCFlYi5pc0VxdWFsKHUsaShjLHt1c2VMb2NhbFN0b3JhZ2U6cH0pKSlpZihlYi5pc0VxdWFsKHUsZikpazB0KGMsZCk7ZWxzZXtsZXQgXz10YihReCgpKTtfW2NdPWcsRDkoTzkoXyksZCl9fWZ1bmN0aW9uIGEoYyx1KXtsZXQgaD1PYmplY3QuYXNzaWduKHtkZWZhdWx0VmFsdWU6dS5kZWZhdWx0VmFsdWUscG9seW1lclByb3BlcnR5OmMsdXNlTG9jYWxTdG9yYWdlOiExfSx1KTtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZj1SMHQodGhpcyxjKSxwPSgpPT57bGV0IF89aShmLGgpLHk9dGhpc1toLnBvbHltZXJQcm9wZXJ0eV07ZWIuaXNFcXVhbChfLHkpfHwodGhpc1toLnBvbHltZXJQcm9wZXJ0eV09Xyl9LGc9KGgudXNlTG9jYWxTdG9yYWdlP0VXOnBFKSgoKT0+cCgpKTtyZXR1cm4gaC51c2VMb2NhbFN0b3JhZ2U/bi5wdXNoKGcpOnIucHVzaChnKSxwKCksdGhpc1toLnBvbHltZXJQcm9wZXJ0eV19fWZ1bmN0aW9uIHMoKXtyLmZvckVhY2goYz0+Q1coYykpLG4uZm9yRWFjaChjPT5BVyhjKSl9ZnVuY3Rpb24gbChjLHUpe2xldCBoPU9iamVjdC5hc3NpZ24oe2RlZmF1bHRWYWx1ZTp1LmRlZmF1bHRWYWx1ZSxwb2x5bWVyUHJvcGVydHk6Yyx1c2VMb2NhbFN0b3JhZ2U6ITF9LHUpO3JldHVybiBmdW5jdGlvbigpe2xldCBmPVIwdCh0aGlzLGMpLHA9dGhpc1toLnBvbHltZXJQcm9wZXJ0eV07byhmLHAsaCl9fXJldHVybntnZXQ6aSxzZXQ6byxnZXRJbml0aWFsaXplcjphLGdldE9ic2VydmVyOmwsZGlzcG9zZUJpbmRpbmc6c319ZnVuY3Rpb24gWGJlKCl7bGV0IGU9bmV3IFNldChbImV4YW1wbGVzUGF0aCIsImhpZGVNb2RlbFBhbmUyIiwibW9kZWxOYW1lMSIsIm1vZGVsTmFtZTIiLCJpbmZlcmVuY2VBZGRyZXNzMSIsImluZmVyZW5jZUFkZHJlc3MyIiwibW9kZWxUeXBlIiwibW9kZWxWZXJzaW9uMSIsIm1vZGVsVmVyc2lvbjIiLCJtb2RlbFNpZ25hdHVyZTEiLCJtb2RlbFNpZ25hdHVyZTIiLCJtYXhFeGFtcGxlcyIsImxhYmVsVm9jYWJQYXRoIiwibXVsdGlDbGFzcyIsInNlcXVlbmNlRXhhbXBsZXMiLCJtYXhDbGFzc2VzVG9EaXNwbGF5Iiwic2FtcGxpbmdPZGRzIiwidXNlUHJlZGljdEFwaSIsInByZWRpY3RJbnB1dFRlbnNvciIsInByZWRpY3RPdXRwdXRUZW5zb3IiXSksdD10YihReCgpKTtpZih0W0p4XT09PSJ3aGF0aWYiKXtmb3IobGV0IHIgb2YgZSlpZihyIGluIHQpe2xldCBuPXRbcl07dFtgcC53aGF0aWYuJHtyfWBdPW59fUQ5KE85KHQpKSxMMHQodCl9ZnVuY3Rpb24gUjB0KGUsdCl7bGV0IHI9ZVtOMHRdO3JldHVybihyPT1udWxsP1t0XTpbcix0XSkuam9pbigiLiIpfXZhciBfRT1jbGFzcyBleHRlbmRzIG10e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90YWdGaWx0ZXI9eV8oInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pLmNhbGwodGhpcyksdGhpcy5fdGFnRmlsdGVyT2JzZXJ2ZXI9dl8oInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pfV9jb21wdXRlVGFnRmlsdGVyKCl7cmV0dXJuIHRoaXMuX3RhZ0ZpbHRlcn19O19FLnRlbXBsYXRlPVFgCiAgICA8cGFwZXItaW5wdXQKICAgICAgbm8tbGFiZWwtZmxvYXQ9IiIKICAgICAgbGFiZWw9IkZpbHRlciB0YWdzIChyZWd1bGFyIGV4cHJlc3Npb25zIHN1cHBvcnRlZCkiCiAgICAgIHZhbHVlPSJ7e190YWdGaWx0ZXJ9fSIKICAgICAgY2xhc3M9InNlYXJjaC1pbnB1dCIKICAgID4KICAgICAgPGlyb24taWNvbiBwcmVmaXg9IiIgaWNvbj0ic2VhcmNoIiBzbG90PSJwcmVmaXgiPjwvaXJvbi1pY29uPgogICAgPC9wYXBlci1pbnB1dD4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbjogMTBweCA1cHggMTBweCAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLGNvbXB1dGVkOiJfY29tcHV0ZVRhZ0ZpbHRlcihfdGFnRmlsdGVyKSJ9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sX0UucHJvdG90eXBlLCJ0YWdGaWx0ZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il90YWdGaWx0ZXJPYnNlcnZlciJ9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sX0UucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApO19FPUUoW3l0KCJ0Zi10YWctZmlsdGVyZXIiKV0sX0UpO2Z1bmN0aW9uIGdzKGUpe2xldHttb2R1bGVOYW1lOnQsc3R5bGVDb250ZW50OnJ9PWUsbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkb20tbW9kdWxlIiksaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpLG89W107ZS5zdHlsZURlcGVuZGVuY2llcyYmZS5zdHlsZURlcGVuZGVuY2llcy5mb3JFYWNoKHM9PntsZXQgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2wuc2V0QXR0cmlidXRlKCJpbmNsdWRlIixzKSxvLnB1c2gobCl9KTtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO09iamVjdC5hc3NpZ24oYSx7dGV4dENvbnRlbnQ6cn0pLG8uZm9yRWFjaChzPT57aS5jb250ZW50LmFwcGVuZENoaWxkKHMpfSksaS5jb250ZW50LmFwcGVuZENoaWxkKGEpLG4uYXBwZW5kQ2hpbGQoaSksbi5yZWdpc3Rlcih0KX1ncyh7bW9kdWxlTmFtZToiZGFzaGJvYXJkLXN0eWxlIixzdHlsZURlcGVuZGVuY2llczpbImlyb24tZmxleCJdLHN0eWxlQ29udGVudDpgCiAgICAgIDpob3N0IHsKICAgICAgICAtLXNpZGViYXItdmVydGljYWwtcGFkZGluZzogMTVweDsKICAgICAgICAtLXNpZGViYXItbGVmdC1wYWRkaW5nOiAzMHB4OwogICAgICB9CgogICAgICBbc2xvdD0nc2lkZWJhciddIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBwYWRkaW5nOiA1cHggMDsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfQoKICAgICAgLnNldHRpbmdzIHsKICAgICAgICBtaW4taGVpZ2h0OiA1MHB4OwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgIC5ydW5zLXNlbGVjdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBtaW4taGVpZ2h0OiAyMDBweDsKICAgICAgfQoKICAgICAgdGYtcnVucy1zZWxlY3RvciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGxlZnQ6IHZhcigtLXNpZGViYXItbGVmdC1wYWRkaW5nKTsKICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmcpICogMik7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5zZWFyY2gtaW5wdXQgewogICAgICAgIG1hcmdpbjogMTBweCA1cHggMCAxMHB4OwogICAgICB9CgogICAgICAuc2lkZWJhci1zZWN0aW9uIHsKICAgICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggdmFyKC0tdGItdWktYm9yZGVyKTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgcGFkZGluZzogdmFyKC0tc2lkZWJhci12ZXJ0aWNhbC1wYWRkaW5nKSAwCiAgICAgICAgICB2YXIoLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmcpIHZhcigtLXNpZGViYXItbGVmdC1wYWRkaW5nKTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbjpmaXJzdC1vZi10eXBlIHsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW46IDVweDsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b246Zmlyc3Qtb2YtdHlwZSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b246bGFzdC1vZi10eXBlIHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbiA+IDpmaXJzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBwYWRkaW5nLXRvcDogMDsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbiA+IDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAwOwogICAgICB9CgogICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIG1hcmdpbjogMTBweCAwIDVweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgcGFwZXItY2hlY2tib3ggewogICAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQoKICAgICAgYSB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWxpbmspOwogICAgICB9CgogICAgICBhOnZpc2l0ZWQgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rLXZpc2l0ZWQpOwogICAgICB9CiAgYH0pO2Z1bmN0aW9uIGdvKGUpe3JldHVybiBjbGFzcyBleHRlbmRzIGV7Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX21heWJlU2V0RGFya01vZGUoKSx0aGlzLm9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKHI9PntyLnNvbWUoaT0+aS5hdHRyaWJ1dGVOYW1lPT09ImNsYXNzIikmJnRoaXMuX21heWJlU2V0RGFya01vZGUoKX0pLHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHthdHRyaWJ1dGVzOiEwfSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt2YXIgcjtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLChyPXRoaXMub2JzZXJ2ZXIpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5kaXNjb25uZWN0KCl9X21heWJlU2V0RGFya01vZGUoKXt0aGlzLmNsYXNzTGlzdC50b2dnbGUoImRhcmstbW9kZSIsZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoImRhcmstbW9kZSIpKX19fWdzKHttb2R1bGVOYW1lOiJzY3JvbGxiYXItc3R5bGUiLHN0eWxlQ29udGVudDpgCiAgICAuc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICAuc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgIHdpZHRoOiAxMHB4OwogICAgfQoKICAgIC5zY3JvbGxiYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiBpbnNldCAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgfQogICAgLnNjcm9sbGJhciB7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CiAgYH0pO3ZhciBGVz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO0ZXLnNldEF0dHJpYnV0ZSgiaXMiLCJjdXN0b20tc3R5bGUiKTtGVy50ZXh0Q29udGVudD1gCiAgOnJvb3QgewogICAgLS10Yi1vcmFuZ2Utd2VhazogI2ZmYTcyNjsKICAgIC0tdGItb3JhbmdlLXN0cm9uZzogI2Y1N2MwMDsKICAgIC0tdGItb3JhbmdlLWRhcms6ICNkYzczMjA7CiAgICAtLXRiLWdyZXktZGFya2VyOiAjZTJlMmUyOwogICAgLS10Yi1ncmV5LWxpZ2h0ZXI6ICNmM2YzZjM7CiAgICAtLXRiLXVpLWRhcmstYWNjZW50OiAjNzU3NTc1OwogICAgLS10Yi11aS1saWdodC1hY2NlbnQ6ICNlMGUwZTA7CiAgICAtLXRiLXVpLWJvcmRlcjogdmFyKC0tcGFwZXItZ3JleS0zMDApOwogICAgLS10Yi1ncmFwaC1mYWRlZDogI2UwZDRiMzsKICAgIC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktODAwKTsKICAgIC0tdGItcmFpc2VkLWJ1dHRvbi1zaGFkb3ctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgIC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcjogI2U5ZTllOTsKICAgIC0tdGItbGF5b3V0LWJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7CiAgICAtLXRiLWxpbms6ICMxOTc2ZDI7IC8qIG1hdGVyaWFsIGJsdWUgNzAwLiAqLwogICAgLS10Yi1saW5rLXZpc2l0ZWQ6ICM3YjFmYTI7IC8qIG1hdGVyaWFsIHB1cnBsZSA3MDAuICovCiAgfQoKICA6cm9vdCAuZGFyay1tb2RlIHsKICAgIC0tdGItdWktYm9yZGVyOiB2YXIoLS1wYXBlci1ncmV5LTcwMCk7CiAgICAtLXRiLXVpLWRhcmstYWNjZW50OiB2YXIoLS1wYXBlci1ncmV5LTQwMCk7CiAgICAtLXRiLXVpLWxpZ2h0LWFjY2VudDogdmFyKC0tcGFwZXItZ3JleS02MDApOwogICAgLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS00MDApOwogICAgLS10Yi1yYWlzZWQtYnV0dG9uLXNoYWRvdy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOwogICAgLS1wcmltYXJ5LXRleHQtY29sb3I6ICNmZmY7CiAgICAtLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTQwMCk7CiAgICAtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjogIzMwMzAzMDsgIC8qIG1hdGVyaWFsIGdyZXkgQTQwMC4gKi8KICAgIC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7CiAgICAtLXRiLWxheW91dC1iYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOwogICAgLS10Yi1saW5rOiAjNDJhNWY1OyAvKiBtYXRlcmlhbCBibHVlIDQwMC4gKi8KICAgIC0tdGItbGluay12aXNpdGVkOiAjYmE2OGM4OyAvKiBtYXRlcmlhbCBwdXJwbGUgMzAwLiAqLwogICAgLyogT3ZlcnJpZGVzIHBhcGVyLW1hdGVyaWFsICovCiAgICAtLXNoYWRvdy1lbGV2YXRpb24tMmRwXy1fYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE0KSwKICAgICAgMCAxcHggNXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKSwKICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogIH0KYDtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEZXKTt2YXIgQlc9Y2xhc3MgZXh0ZW5kcyBnbyhtdCl7fTtCVy50ZW1wbGF0ZT1RYAogICAgPGRpdiBpZD0ic2lkZWJhciI+CiAgICAgIDxzbG90IG5hbWU9InNpZGViYXIiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImNlbnRlciI+CiAgICAgIDxzbG90IG5hbWU9ImNlbnRlciIgY2xhc3M9InNjb2xsYmFyIj48L3Nsb3Q+CiAgICA8L2Rpdj4KICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIH0KCiAgICAgICNzaWRlYmFyIHsKICAgICAgICBmbGV4OiAwIDAgdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLWJhc2lzLCAyNSUpOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IHZhcigtLXRmLWRhc2hib2FyZC1sYXlvdXQtc2lkZWJhci1tYXgtd2lkdGgsIDM1MHB4KTsKICAgICAgICBtaW4td2lkdGg6IHZhcigtLXRmLWRhc2hib2FyZC1sYXlvdXQtc2lkZWJhci1taW4td2lkdGgsIDI3MHB4KTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAjY2VudGVyIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChbc2xvdD0nY2VudGVyJ10pIHsKICAgICAgICBjb250YWluOiBzdHJpY3Q7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgIC50Zi1ncmFwaC1kYXNoYm9hcmQgI2NlbnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0JXPUUoW3l0KCJ0Zi1kYXNoYm9hcmQtbGF5b3V0IildLEJXKTt2YXIgRDB0PSJURi5UZW5zb3JCb2FyZC5QYWdpbmF0ZWRWaWV3LmxpbWl0IiwkYmU9MTIsQ2g9bnVsbCxIVz1uZXcgU2V0O2Z1bmN0aW9uIFZXKGUpe0hXLmFkZChlKX1mdW5jdGlvbiBVVyhlKXtIVy5kZWxldGUoZSl9ZnVuY3Rpb24gcVcoKXtyZXR1cm4gQ2g9PW51bGwmJihDaD1SVyhEMHQse3VzZUxvY2FsU3RvcmFnZTohMH0pLChDaD09bnVsbHx8IWlzRmluaXRlKENoKXx8Q2g8PTApJiYoQ2g9JGJlKSksQ2h9ZnVuY3Rpb24gS2JlKGUpe2lmKGUhPT1NYXRoLmZsb29yKGUpKXRocm93IG5ldyBFcnJvcihgbGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyLCBidXQgZ290OiAke2V9YCk7aWYoZTw9MCl0aHJvdyBuZXcgRXJyb3IoYGxpbWl0IG11c3QgYmUgcG9zaXRpdmUsIGJ1dCBnb3Q6ICR7ZX1gKTtlIT09Q2gmJihDaD1lLE5XKEQwdCxDaCx7dXNlTG9jYWxTdG9yYWdlOiEwfSksSFcuZm9yRWFjaCh0PT57dCgpfSkpfXZhciByYj1jbGFzcyBleHRlbmRzIG10e3VwZGF0ZUFycmF5UHJvcCh0LHIsbil7bGV0IGk9dGhpcy5nZXQodCksbz1yO2lmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IFJhbmdlRXJyb3IoYEV4cGVjdGVkIG5ldyB2YWx1ZSB0byAnJHt0fScgdG8gYmUgYW4gYXJyYXkuYCk7QXJyYXkuaXNBcnJheShpKXx8KGk9W10sdGhpcy5zZXQodCxpKSk7bGV0IGE9bmV3IFNldChvLm1hcCgoYyx1KT0+bihjLHUpKSkscz0wLGw9MDtmb3IoO3M8aS5sZW5ndGgmJmw8by5sZW5ndGg7KXtpZihhLmhhcyhuKGlbc10scykpKW4oaVtzXSxzKT09bihvW2xdLGwpP3RoaXMuc2V0KGAke3R9LiR7c31gLG9bbF0pOnRoaXMuc3BsaWNlKHQscywwLG9bbF0pO2Vsc2V7dGhpcy5zcGxpY2UodCxzLDEpO2NvbnRpbnVlfWwrKyxzKyt9czxpLmxlbmd0aCYmdGhpcy5zcGxpY2UodCxzKSxsPG8ubGVuZ3RoJiZ0aGlzLnB1c2godCwuLi5vLnNsaWNlKGwpKX19O3ZhciBEaT1jbGFzcyBleHRlbmRzIHJie2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFzPSJpdGVtIix0aGlzLl9jb250ZW50QWN0aXZlPSEwLHRoaXMuX2RvbUJvb3RzdHJhcHBlZD0hMSx0aGlzLl9jdG9yPW51bGwsdGhpcy5fcmVuZGVyZWRJdGVtcz1bXSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdD1uZXcgTWFwLHRoaXMuX2xydUNhY2hlZEl0ZW1zPW5ldyBNYXAsdGhpcy5fY2FjaGVTaXplPTEwLHRoaXMuX2dldEl0ZW1LZXk9dD0+SlNPTi5zdHJpbmdpZnkodCksdGhpcy5faXNDb25uZWN0ZWQ9ITF9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSEwfXNldENhY2hlU2l6ZSh0KXt0aGlzLl9jYWNoZVNpemU9dH1zZXRHZXRJdGVtS2V5KHQpe3RoaXMuX2dldEl0ZW1LZXk9dH11cGRhdGVEb20odCl7dGhpcy51cGRhdGVBcnJheVByb3AoIl9yZW5kZXJlZEl0ZW1zIix0LHRoaXMuX2dldEl0ZW1LZXkpfV9lbnN1cmVUZW1wbGF0aXplZCgpe2lmKCF0aGlzLmlzQ29ubmVjdGVkKXJldHVybiExO2lmKCF0aGlzLl9jdG9yKXtsZXQgdD10aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7dGhpcy5fY3Rvcj1KbCh0LHRoaXMse3BhcmVudE1vZGVsOiEwLGluc3RhbmNlUHJvcHM6e1t0aGlzLmFzXTohMCxhY3RpdmU6dGhpcy5fY29udGVudEFjdGl2ZX0sZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHIsbil7dGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZm9yRWFjaChpPT57aS5mb3J3YXJkSG9zdFByb3AocixuKX0pfX0pfXJldHVybiEwfV9ib290c3RyYXBEb20oKXtpZighdGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKXx8dGhpcy5fZG9tQm9vdHN0cmFwcGVkKXJldHVybjtuZXcgTXV0YXRpb25PYnNlcnZlcihyPT57Zm9yKGxldCBuIG9mIHIpaWYobi50eXBlPT09ImNoaWxkTGlzdCIpZm9yKGxldCBpIG9mIEFycmF5LmZyb20obi5hZGRlZE5vZGVzKSlpIGluc3RhbmNlb2YgRWxlbWVudCYmaS5zZXRBdHRyaWJ1dGUoInNsb3QiLCJpdGVtcyIpfSkub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KSxBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pLmZvckVhY2gocj0+e3RoaXMucmVtb3ZlQ2hpbGQocil9KSx0aGlzLl9scnVDYWNoZWRJdGVtcy5jbGVhcigpLHRoaXMuX3JlbmRlcmVkSXRlbXMuZm9yRWFjaCgocixuKT0+dGhpcy5faW5zZXJ0SXRlbShyLG4pKSx0aGlzLl9kb21Cb290c3RyYXBwZWQ9ITB9X3VwZGF0ZUFjdGl2ZSgpeyF0aGlzLl9kb21Cb290c3RyYXBwZWR8fEFycmF5LmZyb20odGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QudmFsdWVzKCkpLmZvckVhY2godD0+e3Qubm90aWZ5UGF0aCgiYWN0aXZlIix0aGlzLl9jb250ZW50QWN0aXZlKX0pfV91cGRhdGVEb20odCl7aWYoISF0aGlzLl9kb21Cb290c3RyYXBwZWQmJiEodC5wYXRoPT0iX3JlbmRlcmVkSXRlbXMifHx0LnBhdGg9PSJfcmVuZGVyZWRJdGVtcy5sZW5ndGgiKSlpZih0LnBhdGg9PT0iX3JlbmRlcmVkSXRlbXMuc3BsaWNlcyIpdC52YWx1ZS5pbmRleFNwbGljZXMuZm9yRWFjaChuPT57bGV0e2luZGV4OmksYWRkZWRDb3VudDpvLG9iamVjdDphLHJlbW92ZWQ6c309bjtzLmZvckVhY2gobD0+e3RoaXMuX3JlbW92ZUl0ZW0obCx0aGlzLmNoaWxkcmVuW2ldKX0pLGEuc2xpY2UoaSxpK28pLmZvckVhY2goKGwsYyk9PnRoaXMuX2luc2VydEl0ZW0obCxpK2MpKSx0aGlzLl90cmltQ2FjaGUoKX0pO2Vsc2V7bGV0IHI9dGhpcy5fZ2V0SXRlbUtleSh0LnZhbHVlKTt0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5oYXMocik/dGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KHIpLm5vdGlmeVBhdGgodGhpcy5hcyx0LnZhbHVlKTpjb25zb2xlLndhcm4oYEV4cGVjdGVkICcke3J9JyB0byBleGlzdCBpbiB0aGUgRE9NIGJ1dCBjb3VsZCBub3QgZmluZCBvbmUuYCl9fV9pbnNlcnRJdGVtKHQscil7aWYoIXRoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0ZW1wbGF0aXplZCBiZWZvcmUgaW5zZXJ0aW5nIGFuIGl0ZW0iKTtsZXQgbixpPXRoaXMuX2dldEl0ZW1LZXkodCk7aWYodGhpcy5fbHJ1Q2FjaGVkSXRlbXMuaGFzKGkpKW49dGhpcy5fbHJ1Q2FjaGVkSXRlbXMuZ2V0KGkpLHRoaXMuX2xydUNhY2hlZEl0ZW1zLmRlbGV0ZShpKSx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5nZXQoaSkubm90aWZ5UGF0aCgiYWN0aXZlIix0aGlzLl9jb250ZW50QWN0aXZlKTtlbHNle2xldCBvPXtbdGhpcy5hc106dCxhY3RpdmU6dGhpcy5fY29udGVudEFjdGl2ZX0sYT1uZXcgdGhpcy5fY3RvcihvKTtuPWEucm9vdCx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5zZXQoaSxhKX10aGlzLmNoaWxkcmVuW3JdP3RoaXMuaW5zZXJ0QmVmb3JlKG4sdGhpcy5jaGlsZHJlbltyXSk6KChuLm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/QXJyYXkuZnJvbShuLmNoaWxkcmVuKTpbbl0pLmZvckVhY2goYT0+YS5zZXRBdHRyaWJ1dGUoInNsb3QiLCJpdGVtcyIpKSx0aGlzLmFwcGVuZENoaWxkKG4pKX1fcmVtb3ZlSXRlbSh0LHIpe3IucGFyZW50Tm9kZSYmci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpO2xldCBuPXRoaXMuX2dldEl0ZW1LZXkodCk7dGhpcy5fbHJ1Q2FjaGVkSXRlbXMuc2V0KG4sciksdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KG4pLm5vdGlmeVBhdGgoImFjdGl2ZSIsITEpfV90cmltQ2FjaGUoKXtmb3IoO3RoaXMuX2xydUNhY2hlZEl0ZW1zLnNpemU+dGhpcy5fY2FjaGVTaXplOyl7bGV0W3RdPXRoaXMuX2xydUNhY2hlZEl0ZW1zLmtleXMoKTt0aGlzLl9scnVDYWNoZWRJdGVtcy5kZWxldGUodCksdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZGVsZXRlKHQpfX19O0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLERpLnByb3RvdHlwZSwiYXMiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLERpLnByb3RvdHlwZSwiaXRlbXMiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxEaS5wcm90b3R5cGUsIl9jb250ZW50QWN0aXZlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEaS5wcm90b3R5cGUsIl9kb21Cb290c3RyYXBwZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRGkucHJvdG90eXBlLCJfY3RvciIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sRGkucHJvdG90eXBlLCJfcmVuZGVyZWRJdGVtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEaS5wcm90b3R5cGUsIl9yZW5kZXJlZFRlbXBsYXRlSW5zdCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEaS5wcm90b3R5cGUsIl9scnVDYWNoZWRJdGVtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEaS5wcm90b3R5cGUsIl9jYWNoZVNpemUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRGkucHJvdG90eXBlLCJfZ2V0SXRlbUtleSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRGkucHJvdG90eXBlLCJfaXNDb25uZWN0ZWQiLHZvaWQgMCk7RShbQnQoIl9pc0Nvbm5lY3RlZCIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sRGkucHJvdG90eXBlLCJfYm9vdHN0cmFwRG9tIixudWxsKTtFKFtCdCgiX2NvbnRlbnRBY3RpdmUiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLERpLnByb3RvdHlwZSwiX3VwZGF0ZUFjdGl2ZSIsbnVsbCk7RShbQnQoIl9yZW5kZXJlZEl0ZW1zLioiLCJfZG9tQm9vdHN0cmFwcGVkIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW09iamVjdF0pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxEaS5wcm90b3R5cGUsIl91cGRhdGVEb20iLG51bGwpO0UoW0J0KCJfY2FjaGVTaXplIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxEaS5wcm90b3R5cGUsIl90cmltQ2FjaGUiLG51bGwpO3ZhciBobj1jbGFzcyBleHRlbmRzIERpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSExLHRoaXMuZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PkpTT04uc3RyaW5naWZ5KHQpLHRoaXMuX2xpbWl0PTEyLHRoaXMuX2FjdGl2ZUluZGV4PTAsdGhpcy5fcGFnZUlucHV0UmF3VmFsdWU9IiIsdGhpcy5fcGFnZUlucHV0Rm9jdXNlZD0hMX1fY29tcHV0ZUNvdW50KCl7cmV0dXJuIHRoaXMuY2F0ZWdvcnkuaXRlbXMubGVuZ3RofWdldCBfaGFzTXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fY291bnQ+MX1fdG9nZ2xlUGFuZSgpe3RoaXMub3BlbmVkPSF0aGlzLm9wZW5lZH1fY2hhbmdlQ29udGVudEFjdGl2ZSh0KXt0aGlzLl9jb250ZW50QWN0aXZlPXR9X29uUGFuZVJlbmRlcmVkQ2hhbmdlZCh0LHIpe3QmJnQhPT1yJiZ0aGlzLiQuaWZSZW5kZXJlZC5yZW5kZXIoKX1fY29tcHV0ZVBhbmVSZW5kZXJlZCh0KXtyZXR1cm4hKHQubWV0YWRhdGEudHlwZT09PVJhLlNFQVJDSF9SRVNVTFRTJiZ0Lm5hbWU9PT0iIil9Z2V0IF9pdGVtc1JlbmRlcmVkKCl7cmV0dXJuIHRoaXMuX3BhbmVSZW5kZXJlZCYmdGhpcy5vcGVuZWR9X2NvbXB1dGVJc1NlYXJjaFJlc3VsdHModCl7cmV0dXJuIHQ9PT1SYS5TRUFSQ0hfUkVTVUxUU31fY29tcHV0ZUlzSW52YWxpZFNlYXJjaFJlc3VsdHModCl7cmV0dXJuIHQudHlwZT09PVJhLlNFQVJDSF9SRVNVTFRTJiYhdC52YWxpZFJlZ2V4fV9jb21wdXRlSXNVbml2ZXJzYWxTZWFyY2hRdWVyeSh0KXtyZXR1cm4gdC50eXBlPT09UmEuU0VBUkNIX1JFU1VMVFMmJnQudW5pdmVyc2FsUmVnZXh9X2lzQ29tcG9zaXRlU2VhcmNoKCl7bGV0e3R5cGU6dCxjb21wb3NpdGVTZWFyY2g6cn09dGhpcy5jYXRlZ29yeS5tZXRhZGF0YTtyZXR1cm4gciYmdD09PVJhLlNFQVJDSF9SRVNVTFRTfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLm9wZW5lZD10aGlzLmluaXRpYWxPcGVuZWQ9PW51bGw/ITA6dGhpcy5pbml0aWFsT3BlbmVkLHRoaXMuX2xpbWl0TGlzdGVuZXI9KCk9Pnt0aGlzLnNldCgiX2xpbWl0IixxVygpKX0sVlcodGhpcy5fbGltaXRMaXN0ZW5lciksdGhpcy5fbGltaXRMaXN0ZW5lcigpfWRldGFjaGVkKCl7VVcodGhpcy5fbGltaXRMaXN0ZW5lcil9X3VwZGF0ZVJlbmRlcmVkSXRlbXMoKXt2YXIgdD10aGlzLl9pdGVtc1JlbmRlcmVkLHI9dGhpcy5fbGltaXQsbj10aGlzLl9hY3RpdmVJbmRleCxpPXRoaXMuZGlzYWJsZVBhZ2luYXRpb247aWYoIXQpcmV0dXJuO2xldCBvPU1hdGguZmxvb3Iobi9yKSxhPXRoaXMuY2F0ZWdvcnkuaXRlbXN8fFtdLHM9aT9hOmEuc2xpY2UobypyLChvKzEpKnIpO3RoaXMudXBkYXRlRG9tKHMpfV9saW1pdENoYW5nZWQodCl7dGhpcy5zZXRDYWNoZVNpemUodCoyKX1fZ2V0Q2F0ZWdvcnlJdGVtS2V5Q2hhbmdlZCgpe3RoaXMuc2V0R2V0SXRlbUtleSh0aGlzLmdldENhdGVnb3J5SXRlbUtleSl9Z2V0IF9jdXJyZW50UGFnZSgpe3ZhciB0PXRoaXMuX2xpbWl0LHI9dGhpcy5fYWN0aXZlSW5kZXg7cmV0dXJuIE1hdGguZmxvb3Ioci90KSsxfV9jb21wdXRlUGFnZUNvdW50KHQscil7cmV0dXJuIHRoaXMuY2F0ZWdvcnk/TWF0aC5jZWlsKHRoaXMuY2F0ZWdvcnkuaXRlbXMubGVuZ3RoL3IpOjB9Z2V0IF9tdWx0aXBsZVBhZ2VzRXhpc3QoKXt2YXIgdD10aGlzLl9wYWdlQ291bnQscj10aGlzLmRpc2FibGVQYWdpbmF0aW9uO3JldHVybiFyJiZ0PjF9Z2V0IF9oYXNQcmV2aW91c1BhZ2UoKXt2YXIgdD10aGlzLl9jdXJyZW50UGFnZTtyZXR1cm4gdD4xfWdldCBfaGFzTmV4dFBhZ2UoKXt2YXIgdD10aGlzLl9jdXJyZW50UGFnZSxyPXRoaXMuX3BhZ2VDb3VudDtyZXR1cm4gdDxyfV9jb21wdXRlSW5wdXRXaWR0aCh0KXtyZXR1cm5gY2FsYygke3QudG9TdHJpbmcoKS5sZW5ndGh9ZW0gKyAyMHB4KWB9X3NldEFjdGl2ZUluZGV4KHQpe2xldCByPSh0aGlzLmNhdGVnb3J5Lml0ZW1zfHxbXSkubGVuZ3RoLTE7dD5yJiYodD1yKSx0PDAmJih0PTApLHRoaXMuc2V0KCJfYWN0aXZlSW5kZXgiLHQpfV9jbGFtcEFjdGl2ZUluZGV4KCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgpfV9wZXJmb3JtUHJldmlvdXNQYWdlKCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgtdGhpcy5fbGltaXQpfV9wZXJmb3JtTmV4dFBhZ2UoKXt0aGlzLl9zZXRBY3RpdmVJbmRleCh0aGlzLl9hY3RpdmVJbmRleCt0aGlzLl9saW1pdCl9X2NvbXB1dGVQYWdlSW5wdXRWYWx1ZSh0LHIsbil7cmV0dXJuIHQ/cjpuLnRvU3RyaW5nKCl9X2hhbmRsZVBhZ2VJbnB1dEV2ZW50KHQpe3RoaXMuc2V0KCJfcGFnZUlucHV0UmF3VmFsdWUiLHQudGFyZ2V0LnZhbHVlKTtsZXQgcj1OdW1iZXIodC50YXJnZXQudmFsdWV8fE5hTik7aWYoaXNOYU4ocikpcmV0dXJuO2xldCBuPU1hdGgubWF4KDEsTWF0aC5taW4ocix0aGlzLl9wYWdlQ291bnQpKS0xO3RoaXMuX3NldEFjdGl2ZUluZGV4KHRoaXMuX2xpbWl0Km4pfV9oYW5kbGVQYWdlQ2hhbmdlRXZlbnQoKXt0aGlzLnNldCgiX3BhZ2VJbnB1dFJhd1ZhbHVlIix0aGlzLl9jdXJyZW50UGFnZS50b1N0cmluZygpKX1faGFuZGxlUGFnZUZvY3VzRXZlbnQoKXt0aGlzLnNldCgiX3BhZ2VJbnB1dFJhd1ZhbHVlIix0aGlzLl9wYWdlSW5wdXRWYWx1ZSksdGhpcy5zZXQoIl9wYWdlSW5wdXRGb2N1c2VkIiwhMCl9X2hhbmRsZVBhZ2VCbHVyRXZlbnQoKXt0aGlzLnNldCgiX3BhZ2VJbnB1dEZvY3VzZWQiLCExKX1fdXBkYXRlUGFnZUlucHV0VmFsdWUodCl7dmFyIHI7bGV0IG49KHI9dGhpcy5zaGFkb3dSb290KT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIucXVlcnlTZWxlY3RvcigiI3BhZ2UtaW5wdXQgaW5wdXQiKTtuJiYobi52YWx1ZT10KX1fdXBkYXRlSW5wdXRXaWR0aCgpe3RoaXMudXBkYXRlU3R5bGVzKHsiLS10Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldy1wYWdlLWlucHV0LXdpZHRoIjp0aGlzLl9pbnB1dFdpZHRofSl9fTtobi50ZW1wbGF0ZT1RYAogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19wYW5lUmVuZGVyZWRdXSIgaWQ9ImlmUmVuZGVyZWQiPgogICAgICA8YnV0dG9uIGNsYXNzPSJoZWFkaW5nIiBvbi10YXA9Il90b2dnbGVQYW5lIiBvcGVuLWJ1dHRvbiQ9Iltbb3BlbmVkXV0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJuYW1lIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNTZWFyY2hSZXN1bHRzXV0iPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzQ29tcG9zaXRlU2VhcmNoKGNhdGVnb3J5KV1dIj4KICAgICAgICAgICAgICA8c3Bhbj5UYWdzIG1hdGNoaW5nIG11bHRpcGxlIGV4cGVyaW1lbnRzPC9zcGFuPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNJbnZhbGlkU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICAgID4mbmJzcDs8c3Ryb25nPihtYWxmb3JtZWQgcmVndWxhciBleHByZXNzaW9uKTwvc3Ryb25nPjwvc3BhbgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzQ29tcG9zaXRlU2VhcmNoKGNhdGVnb3J5KV1dIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGlnaHQiPlRhZ3MgbWF0Y2hpbmcgLzwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktbmFtZSIgdGl0bGUkPSJbW2NhdGVnb3J5Lm5hbWVdXSIKICAgICAgICAgICAgICAgID5bW2NhdGVnb3J5Lm5hbWVdXTwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGlnaHQiPi88L3NwYW4+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5XV0iPgogICAgICAgICAgICAgICAgPHNwYW4+IChhbGwgdGFncyk8L3NwYW4+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzSW52YWxpZFNlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgICAgICA8c3Bhbj4gPHN0cm9uZz4obWFsZm9ybWVkIHJlZ3VsYXIgZXhwcmVzc2lvbik8L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9pc1NlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1uYW1lIiB0aXRsZSQ9IltbY2F0ZWdvcnkubmFtZV1dIgogICAgICAgICAgICAgID5bW2NhdGVnb3J5Lm5hbWVdXTwvc3BhbgogICAgICAgICAgICA+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY291bnQiPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZV1dIj4KICAgICAgICAgICAgPHNwYW4+W1tfY291bnRdXTwvc3Bhbj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImV4cGFuZC1tb3JlIiBjbGFzcz0iZXhwYW5kLWFycm93Ij48L2lyb24taWNvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvYnV0dG9uPgogICAgICA8IS0tIFRPRE8oc3RlcGhhbndsZWUpOiBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBGb3Igc29tZSByZWFzb24sCiAgICAgICAgdHJhbnNpdGlvbmVuZCB0aGF0IHRoZSBpcm9uLWNvbGxhcHNlIHJlbGllcyBvbiBzb21ldGltZXMgZG9lcyBub3QKICAgICAgICB0cmlnZ2VyIHdoZW4gcmVuZGVyaW5nIGEgY2hhcnQgd2l0aCBhIHNwaW5uZXIuIEEgdG95IGV4YW1wbGUgY2Fubm90CiAgICAgICAgcmVwcm9kdWNlIHRoaXMgYnVnLiAtLT4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW29wZW5lZF1dIiBuby1hbmltYXRpb249IiI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgICA8c3BhbiBpZD0idG9wLW9mLWNvbnRhaW5lciI+PC9zcGFuPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19tdWx0aXBsZVBhZ2VzRXhpc3RdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJpZy1wYWdlLWJ1dHRvbnMiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxMHB4OyI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgb24tdGFwPSJfcGVyZm9ybVByZXZpb3VzUGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc1ByZXZpb3VzUGFnZV1dIgogICAgICAgICAgICAgICAgPlByZXZpb3VzIHBhZ2U8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtTmV4dFBhZ2UiCiAgICAgICAgICAgICAgICBkaXNhYmxlZCQ9IltbIV9oYXNOZXh0UGFnZV1dIgogICAgICAgICAgICAgICAgPk5leHQgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPGRpdiBpZD0iaXRlbXMiPgogICAgICAgICAgICA8c2xvdCBuYW1lPSJpdGVtcyI+PC9zbG90PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX211bHRpcGxlUGFnZXNFeGlzdF1dIj4KICAgICAgICAgICAgPGRpdiBpZD0iY29udHJvbHMtY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDAgNXB4Ij4KICAgICAgICAgICAgICAgIFBhZ2UKICAgICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgICBpZD0icGFnZS1pbnB1dCIKICAgICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgICBuby1sYWJlbC1mbG9hdD0iIgogICAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICAgIG1heD0iW1tfcGFnZUNvdW50XV0iCiAgICAgICAgICAgICAgICAgIHZhbHVlPSJbW19wYWdlSW5wdXRWYWx1ZV1dIgogICAgICAgICAgICAgICAgICBvbi1pbnB1dD0iX2hhbmRsZVBhZ2VJbnB1dEV2ZW50IgogICAgICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il9oYW5kbGVQYWdlQ2hhbmdlRXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWZvY3VzPSJfaGFuZGxlUGFnZUZvY3VzRXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWJsdXI9Il9oYW5kbGVQYWdlQmx1ckV2ZW50IgogICAgICAgICAgICAgICAgPjwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICBvZiBbW19wYWdlQ291bnRdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJpZy1wYWdlLWJ1dHRvbnMiIHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgb24tdGFwPSJfcGVyZm9ybVByZXZpb3VzUGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc1ByZXZpb3VzUGFnZV1dIgogICAgICAgICAgICAgICAgPlByZXZpb3VzIHBhZ2U8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtTmV4dFBhZ2UiCiAgICAgICAgICAgICAgICBkaXNhYmxlZCQ9IltbIV9oYXNOZXh0UGFnZV1dIgogICAgICAgICAgICAgICAgPk5leHQgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDAgNXB4IDFweCAxMHB4OwogICAgICB9CgogICAgICA6aG9zdCg6Zmlyc3Qtb2YtdHlwZSkgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KDpsYXN0LW9mLXR5cGUpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICB9CgogICAgICAuaGVhZGluZyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA1cHggdmFyKC0tdGItcmFpc2VkLWJ1dHRvbi1zaGFkb3ctY29sb3IpOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9CgogICAgICAuaGVhZGluZzo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgICB9CgogICAgICBbb3Blbi1idXR0b25dIHsKICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgW29wZW4tYnV0dG9uXSAuZXhwYW5kLWFycm93IHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVooMTgwZGVnKTsKICAgICAgfQoKICAgICAgLm5hbWUgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5saWdodCB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNTAwKTsKICAgICAgfQoKICAgICAgLmNhdGVnb3J5LW5hbWUgewogICAgICAgIHdoaXRlLXNwYWNlOiBwcmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBwYWRkaW5nOiAycHggMDsKICAgICAgfQoKICAgICAgLmNvdW50IHsKICAgICAgICBtYXJnaW46IDAgNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9CgogICAgICAuaGVhZGluZzo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgICB9CgogICAgICAuY29udGVudCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4OwogICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVkZWRlOwogICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgIH0KCiAgICAgIC5saWdodCB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNTAwKTsKICAgICAgfQoKICAgICAgI2NvbnRyb2xzLWNvbnRhaW5lciB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI2NvbnRyb2xzLWNvbnRhaW5lciBwYXBlci1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIC5iaWctcGFnZS1idXR0b25zIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmbGV4LWJhc2lzOiAwOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5iaWctcGFnZS1idXR0b25zIHBhcGVyLWJ1dHRvbltkaXNhYmxlZF0gewogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgIH0KCiAgICAgIHNsb3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChbc2xvdD0naXRlbXMnXSkgewogICAgICAgIC8qIFRvb2x0aXAgZm9yIGRlc2NyaXB0aW9ucyBhbmQgb3RoZXJzIGJyZWFrIHdpdGggbW9yZSBzdHJpY3Qgb25lcy4gKi8KICAgICAgICBjb250YWluOiBzdHlsZTsKICAgICAgfQoKICAgICAgI3BhZ2UtaW5wdXQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogdmFyKC0tdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXctcGFnZS1pbnB1dC13aWR0aCwgMTAwJSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxobi5wcm90b3R5cGUsImNhdGVnb3J5Iix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saG4ucHJvdG90eXBlLCJpbml0aWFsT3BlbmVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGhuLnByb3RvdHlwZSwib3BlbmVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saG4ucHJvdG90eXBlLCJkaXNhYmxlUGFnaW5hdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcixjb21wdXRlZDoiX2NvbXB1dGVDb3VudChjYXRlZ29yeS5pdGVtcy4qKSJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0saG4ucHJvdG90eXBlLCJfY291bnQiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZVBhbmVSZW5kZXJlZChjYXRlZ29yeSkiLG9ic2VydmVyOiJfb25QYW5lUmVuZGVyZWRDaGFuZ2VkIn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saG4ucHJvdG90eXBlLCJfcGFuZVJlbmRlcmVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVJc1NlYXJjaFJlc3VsdHMoY2F0ZWdvcnkubWV0YWRhdGEudHlwZSkifSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxobi5wcm90b3R5cGUsIl9pc1NlYXJjaFJlc3VsdHMiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUlzSW52YWxpZFNlYXJjaFJlc3VsdHMoY2F0ZWdvcnkubWV0YWRhdGEpIn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saG4ucHJvdG90eXBlLCJfaXNJbnZhbGlkU2VhcmNoUmVzdWx0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSXNVbml2ZXJzYWxTZWFyY2hRdWVyeShjYXRlZ29yeS5tZXRhZGF0YSkifSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxobi5wcm90b3R5cGUsIl9pc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfZ2V0Q2F0ZWdvcnlJdGVtS2V5Q2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0saG4ucHJvdG90eXBlLCJnZXRDYXRlZ29yeUl0ZW1LZXkiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9saW1pdENoYW5nZWQifSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLGhuLnByb3RvdHlwZSwiX2xpbWl0Iix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLGhuLnByb3RvdHlwZSwiX2FjdGl2ZUluZGV4Iix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZVBhZ2VDb3VudChjYXRlZ29yeS5pdGVtcy4qLCBfbGltaXQpIn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxobi5wcm90b3R5cGUsIl9wYWdlQ291bnQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlSW5wdXRXaWR0aChfcGFnZUNvdW50KSIsb2JzZXJ2ZXI6Il91cGRhdGVJbnB1dFdpZHRoIn0pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxobi5wcm90b3R5cGUsIl9pbnB1dFdpZHRoIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVBhZ2VJbnB1dFZhbHVlKF9wYWdlSW5wdXRGb2N1c2VkLCBfcGFnZUlucHV0UmF3VmFsdWUsIF9jdXJyZW50UGFnZSkiLG9ic2VydmVyOiJfdXBkYXRlUGFnZUlucHV0VmFsdWUifSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGhuLnByb3RvdHlwZSwiX3BhZ2VJbnB1dFZhbHVlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGhuLnByb3RvdHlwZSwiX3BhZ2VJbnB1dFJhd1ZhbHVlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saG4ucHJvdG90eXBlLCJfcGFnZUlucHV0Rm9jdXNlZCIsdm9pZCAwKTtFKFtSdCgiX2NvdW50IiksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGhuLnByb3RvdHlwZSwiX2hhc011bHRpcGxlIixudWxsKTtFKFtCdCgib3BlbmVkIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW0Jvb2xlYW5dKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0saG4ucHJvdG90eXBlLCJfY2hhbmdlQ29udGVudEFjdGl2ZSIsbnVsbCk7RShbUnQoIm9wZW5lZCIsIl9wYW5lUmVuZGVyZWQiKSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0saG4ucHJvdG90eXBlLCJfaXRlbXNSZW5kZXJlZCIsbnVsbCk7RShbQnQoIl9pdGVtc1JlbmRlcmVkIiwiY2F0ZWdvcnkuaXRlbXMuKiIsIl9saW1pdCIsIl9hY3RpdmVJbmRleCIsIl9wYWdlQ291bnQiLCJkaXNhYmxlUGFnaW5hdGlvbiIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0saG4ucHJvdG90eXBlLCJfdXBkYXRlUmVuZGVyZWRJdGVtcyIsbnVsbCk7RShbUnQoIl9saW1pdCIsIl9hY3RpdmVJbmRleCIpLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGhuLnByb3RvdHlwZSwiX2N1cnJlbnRQYWdlIixudWxsKTtFKFtSdCgiX3BhZ2VDb3VudCIsImRpc2FibGVQYWdpbmF0aW9uIiksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGhuLnByb3RvdHlwZSwiX211bHRpcGxlUGFnZXNFeGlzdCIsbnVsbCk7RShbUnQoIl9jdXJyZW50UGFnZSIpLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxobi5wcm90b3R5cGUsIl9oYXNQcmV2aW91c1BhZ2UiLG51bGwpO0UoW1J0KCJfY3VycmVudFBhZ2UiLCJfcGFnZUNvdW50IiksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGhuLnByb3RvdHlwZSwiX2hhc05leHRQYWdlIixudWxsKTtFKFtCdCgiY2F0ZWdvcnkuaXRlbXMuKiIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0saG4ucHJvdG90eXBlLCJfY2xhbXBBY3RpdmVJbmRleCIsbnVsbCk7aG49RShbeXQoInRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3IildLGhuKTt2YXIgTzB0PUVlKE9lKCksMSk7dmFyIHo5PWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMubGlzdGVuZXI9dH19LGJwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5yZXF1ZXN0TWFuYWdlcj1uZXcgQWUoMSksdGhpcy5fbGlzdGVuZXJzPW5ldyBTZXQsdGhpcy5pbml0aWFsaXplZD0hMX1yZWZyZXNoKCl7cmV0dXJuIHRoaXMubG9hZCgpLnRoZW4oKCk9Pnt0aGlzLmluaXRpYWxpemVkPSEwfSl9YWRkTGlzdGVuZXIodCl7bGV0IHI9bmV3IHo5KHQpO3JldHVybiB0aGlzLl9saXN0ZW5lcnMuYWRkKHIpLHJ9cmVtb3ZlTGlzdGVuZXJCeUtleSh0KXt0aGlzLl9saXN0ZW5lcnMuZGVsZXRlKHQpfWVtaXRDaGFuZ2UoKXt0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaCh0PT57dHJ5e3QubGlzdGVuZXIoKX1jYXRjaChyKXt9fSl9fTt2YXIgRjk9Y2xhc3MgZXh0ZW5kcyBicHtsb2FkKCl7bGV0IHQ9dmUoKS5lbnZpcm9ubWVudCgpO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57bGV0IG49e2RhdGFMb2NhdGlvbjpyLmRhdGFfbG9jYXRpb24sd2luZG93VGl0bGU6ci53aW5kb3dfdGl0bGV9O3IuZXhwZXJpbWVudF9uYW1lIT09dm9pZCAwJiYobi5leHBlcmltZW50TmFtZT1yLmV4cGVyaW1lbnRfbmFtZSksci5leHBlcmltZW50X2Rlc2NyaXB0aW9uIT09dm9pZCAwJiYobi5leHBlcmltZW50RGVzY3JpcHRpb249ci5leHBlcmltZW50X2Rlc2NyaXB0aW9uKSxyLmNyZWF0aW9uX3RpbWUhPT12b2lkIDAmJihuLmNyZWF0aW9uVGltZT1yLmNyZWF0aW9uX3RpbWUpLCFPMHQuaXNFcXVhbCh0aGlzLmVudmlyb25tZW50LG4pJiYodGhpcy5lbnZpcm9ubWVudD1uLHRoaXMuZW1pdENoYW5nZSgpKX0pfWdldERhdGFMb2NhdGlvbigpe3JldHVybiB0aGlzLmVudmlyb25tZW50P3RoaXMuZW52aXJvbm1lbnQuZGF0YUxvY2F0aW9uOiIifWdldFdpbmRvd1RpdGxlKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC53aW5kb3dUaXRsZToiIn1nZXRFeHBlcmltZW50TmFtZSgpe3JldHVybiB0aGlzLmVudmlyb25tZW50P3RoaXMuZW52aXJvbm1lbnQuZXhwZXJpbWVudE5hbWU6IiJ9Z2V0RXhwZXJpbWVudERlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5leHBlcmltZW50RGVzY3JpcHRpb246IiJ9Z2V0Q3JlYXRpb25UaW1lKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5jcmVhdGlvblRpbWU6bnVsbH19LG5iPW5ldyBGOTt2YXIgejB0PUVlKE9lKCksMSk7dmFyIEI5PWNsYXNzIGV4dGVuZHMgYnB7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3J1bnM9W119bG9hZCgpe2xldCB0PXZlKCkucnVucygpO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57ejB0LmlzRXF1YWwodGhpcy5fcnVucyxyKXx8KHRoaXMuX3J1bnM9cix0aGlzLmVtaXRDaGFuZ2UoKSl9KX1nZXRSdW5zKCl7cmV0dXJuIHRoaXMuX3J1bnMuc2xpY2UoKX19LHdwPW5ldyBCOTt2YXIgVnI9e307JHMoVnIse0Zvcm1hdFNwZWNpZmllcjooKT0+VkUsYWN0aXZlOigpPT5rdnQsYXJjOigpPT5JU3QsYXJlYTooKT0+TjgsYXJlYVJhZGlhbDooKT0+aSQsYXNjZW5kaW5nOigpPT5pYSxhdXRvVHlwZTooKT0+bmosYXhpc0JvdHRvbTooKT0+WDksYXhpc0xlZnQ6KCk9PnNiLGF4aXNSaWdodDooKT0+YV90LGF4aXNUb3A6KCk9Pm9fdCxiaXNlY3Q6KCk9Pl9zLGJpc2VjdExlZnQ6KCk9PkgwdCxiaXNlY3RSaWdodDooKT0+R1csYmlzZWN0b3I6KCk9PmliLGJsb2I6KCk9PlQxdCxicnVzaDooKT0+VkwsYnJ1c2hTZWxlY3Rpb246KCk9PkJMLGJydXNoWDooKT0+RnZ0LGJydXNoWTooKT0+SEwsYnVmZmVyOigpPT5DMXQsY2hvcmQ6KCk9Pkh2dCxjbGllbnRQb2ludDooKT0+RG0sY2x1c3RlcjooKT0+T2J0LGNvbG9yOigpPT50Yyxjb250b3VyRGVuc2l0eTooKT0+czF0LGNvbnRvdXJzOigpPT5YTCxjcmVhdGU6KCk9PkpfdCxjcmVhdG9yOigpPT5SbSxjcm9zczooKT0+SDksY3N2OigpPT5QMXQsY3N2Rm9ybWF0OigpPT5mMXQsY3N2Rm9ybWF0Qm9keTooKT0+cDF0LGNzdkZvcm1hdFJvdzooKT0+bTF0LGNzdkZvcm1hdFJvd3M6KCk9PmQxdCxjc3ZGb3JtYXRWYWx1ZTooKT0+ZzF0LGNzdlBhcnNlOigpPT5UYixjc3ZQYXJzZVJvd3M6KCk9PmgxdCxjdWJlaGVsaXg6KCk9PnNhLGN1cnZlQmFzaXM6KCk9PlU4LGN1cnZlQmFzaXNDbG9zZWQ6KCk9PkdTdCxjdXJ2ZUJhc2lzT3BlbjooKT0+WVN0LGN1cnZlQnVuZGxlOigpPT5YU3QsY3VydmVDYXJkaW5hbDooKT0+JFN0LGN1cnZlQ2FyZGluYWxDbG9zZWQ6KCk9PktTdCxjdXJ2ZUNhcmRpbmFsT3BlbjooKT0+WlN0LGN1cnZlQ2F0bXVsbFJvbTooKT0+UVN0LGN1cnZlQ2F0bXVsbFJvbUNsb3NlZDooKT0+ZTN0LGN1cnZlQ2F0bXVsbFJvbU9wZW46KCk9Pm4zdCxjdXJ2ZUxpbmVhcjooKT0+V2gsY3VydmVMaW5lYXJDbG9zZWQ6KCk9Pm8zdCxjdXJ2ZU1vbm90b25lWDooKT0+aDN0LGN1cnZlTW9ub3RvbmVZOigpPT5mM3QsY3VydmVOYXR1cmFsOigpPT5tM3QsY3VydmVTdGVwOigpPT5nM3QsY3VydmVTdGVwQWZ0ZXI6KCk9PnkzdCxjdXJ2ZVN0ZXBCZWZvcmU6KCk9Pl8zdCxjdXN0b21FdmVudDooKT0+TXAsZGVzY2VuZGluZzooKT0+VTB0LGRldmlhdGlvbjooKT0+VTksZGlzcGF0Y2g6KCk9PnlzLGRyYWc6KCk9PmZiLGRyYWdEaXNhYmxlOigpPT56bSxkcmFnRW5hYmxlOigpPT5GbSxkc3Y6KCk9PmlqLGRzdkZvcm1hdDooKT0+V20sZWFzZUJhY2s6KCk9PlJMLGVhc2VCYWNrSW46KCk9PkRZLGVhc2VCYWNrSW5PdXQ6KCk9PlJMLGVhc2VCYWNrT3V0OigpPT5PWSxlYXNlQm91bmNlOigpPT5QXyxlYXNlQm91bmNlSW46KCk9PmtZLGVhc2VCb3VuY2VJbk91dDooKT0+UlksZWFzZUJvdW5jZU91dDooKT0+UF8sZWFzZUNpcmNsZTooKT0+TEwsZWFzZUNpcmNsZUluOigpPT5QWSxlYXNlQ2lyY2xlSW5PdXQ6KCk9PkxMLGVhc2VDaXJjbGVPdXQ6KCk9PklZLGVhc2VDdWJpYzooKT0+dnMsZWFzZUN1YmljSW46KCk9PnZZLGVhc2VDdWJpY0luT3V0OigpPT52cyxlYXNlQ3ViaWNPdXQ6KCk9PnhZLGVhc2VFbGFzdGljOigpPT5OTCxlYXNlRWxhc3RpY0luOigpPT5CWSxlYXNlRWxhc3RpY0luT3V0OigpPT5IWSxlYXNlRWxhc3RpY091dDooKT0+TkwsZWFzZUV4cDooKT0+SUwsZWFzZUV4cEluOigpPT5DWSxlYXNlRXhwSW5PdXQ6KCk9PklMLGVhc2VFeHBPdXQ6KCk9PkFZLGVhc2VMaW5lYXI6KCk9PmdZLGVhc2VQb2x5OigpPT5BTCxlYXNlUG9seUluOigpPT53WSxlYXNlUG9seUluT3V0OigpPT5BTCxlYXNlUG9seU91dDooKT0+U1ksZWFzZVF1YWQ6KCk9PkNMLGVhc2VRdWFkSW46KCk9Pl9ZLGVhc2VRdWFkSW5PdXQ6KCk9PkNMLGVhc2VRdWFkT3V0OigpPT55WSxlYXNlU2luOigpPT5QTCxlYXNlU2luSW46KCk9Pk1ZLGVhc2VTaW5Jbk91dDooKT0+UEwsZWFzZVNpbk91dDooKT0+RVksZW50cmllczooKT0+ZTF0LGV2ZW50OigpPT5xdCxleHRlbnQ6KCk9Pm9hLGZvcmNlQ2VudGVyOigpPT5PMXQsZm9yY2VDb2xsaWRlOigpPT5leHQsZm9yY2VMaW5rOigpPT5ueHQsZm9yY2VNYW55Qm9keTooKT0+c3h0LGZvcmNlUmFkaWFsOigpPT5seHQsZm9yY2VTaW11bGF0aW9uOigpPT5heHQsZm9yY2VYOigpPT5jeHQsZm9yY2VZOigpPT51eHQsZm9ybWF0OigpPT54bixmb3JtYXREZWZhdWx0TG9jYWxlOigpPT50ayxmb3JtYXRMb2NhbGU6KCk9PkpMLGZvcm1hdFByZWZpeDooKT0+VUUsZm9ybWF0U3BlY2lmaWVyOigpPT5McCxnZW9BbGJlcnM6KCk9PkJrLGdlb0FsYmVyc1VzYTooKT0+d2J0LGdlb0FyZWE6KCk9PkV4dCxnZW9BemltdXRoYWxFcXVhbEFyZWE6KCk9PlNidCxnZW9BemltdXRoYWxFcXVhbEFyZWFSYXc6KCk9PlZrLGdlb0F6aW11dGhhbEVxdWlkaXN0YW50OigpPT5NYnQsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6KCk9PlVrLGdlb0JvdW5kczooKT0+Unh0LGdlb0NlbnRyb2lkOigpPT5CeHQsZ2VvQ2lyY2xlOigpPT5HeHQsZ2VvQ2xpcEFudGltZXJpZGlhbjooKT0+SkUsZ2VvQ2xpcENpcmNsZTooKT0+RWssZ2VvQ2xpcEV4dGVudDooKT0+anh0LGdlb0NsaXBSZWN0YW5nbGU6KCk9PkRwLGdlb0NvbmljQ29uZm9ybWFsOigpPT5UYnQsZ2VvQ29uaWNDb25mb3JtYWxSYXc6KCk9PllqLGdlb0NvbmljRXF1YWxBcmVhOigpPT5XXyxnZW9Db25pY0VxdWFsQXJlYVJhdzooKT0+R2osZ2VvQ29uaWNFcXVpZGlzdGFudDooKT0+QWJ0LGdlb0NvbmljRXF1aWRpc3RhbnRSYXc6KCk9PmpqLGdlb0NvbnRhaW5zOigpPT50YnQsZ2VvRGlzdGFuY2U6KCk9PlJiLGdlb0VxdWFsRWFydGg6KCk9PlBidCxnZW9FcXVhbEVhcnRoUmF3OigpPT5XayxnZW9FcXVpcmVjdGFuZ3VsYXI6KCk9PkNidCxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6KCk9PmpfLGdlb0dub21vbmljOigpPT5JYnQsZ2VvR25vbW9uaWNSYXc6KCk9PllrLGdlb0dyYXRpY3VsZTooKT0+TGssZ2VvR3JhdGljdWxlMTA6KCk9Pm5idCxnZW9JZGVudGl0eTooKT0+TGJ0LGdlb0ludGVycG9sYXRlOigpPT5pYnQsZ2VvTGVuZ3RoOigpPT5QayxnZW9NZXJjYXRvcjooKT0+RWJ0LGdlb01lcmNhdG9yUmF3OigpPT5ZXyxnZW9OYXR1cmFsRWFydGgxOigpPT5rYnQsZ2VvTmF0dXJhbEVhcnRoMVJhdzooKT0+amssZ2VvT3J0aG9ncmFwaGljOigpPT5SYnQsZ2VvT3J0aG9ncmFwaGljUmF3OigpPT5YayxnZW9QYXRoOigpPT5fYnQsZ2VvUHJvamVjdGlvbjooKT0+TWksZ2VvUHJvamVjdGlvbk11dGF0b3I6KCk9Pm81LGdlb1JvdGF0aW9uOigpPT52ayxnZW9TdGVyZW9ncmFwaGljOigpPT5OYnQsZ2VvU3RlcmVvZ3JhcGhpY1JhdzooKT0+JGssZ2VvU3RyZWFtOigpPT55byxnZW9UcmFuc2Zvcm06KCk9PnlidCxnZW9UcmFuc3ZlcnNlTWVyY2F0b3I6KCk9PkRidCxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6KCk9PktrLGdyYXk6KCk9PmR5dCxoY2w6KCk9Pm1iLGhpZXJhcmNoeTooKT0+dTUsaGlzdG9ncmFtOigpPT5qMHQsaHNsOigpPT5WbSxodG1sOigpPT5OMXQsaW1hZ2U6KCk9PkwxdCxpbnRlcnBvbGF0ZTooKT0+ZWMsaW50ZXJwb2xhdGVBcnJheTooKT0+VHl0LGludGVycG9sYXRlQmFzaXM6KCk9Pm9MLGludGVycG9sYXRlQmFzaXNDbG9zZWQ6KCk9PmFMLGludGVycG9sYXRlQmx1ZXM6KCk9PmhTdCxpbnRlcnBvbGF0ZUJyQkc6KCk9Pkd3dCxpbnRlcnBvbGF0ZUJ1R246KCk9PlF3dCxpbnRlcnBvbGF0ZUJ1UHU6KCk9PnRTdCxpbnRlcnBvbGF0ZUNpdmlkaXM6KCk9Pl9TdCxpbnRlcnBvbGF0ZUNvb2w6KCk9PnhTdCxpbnRlcnBvbGF0ZUN1YmVoZWxpeDooKT0+cXl0LGludGVycG9sYXRlQ3ViZWhlbGl4RGVmYXVsdDooKT0+eVN0LGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzooKT0+RV8saW50ZXJwb2xhdGVEYXRlOigpPT5jTCxpbnRlcnBvbGF0ZURpc2NyZXRlOigpPT5DeXQsaW50ZXJwb2xhdGVHbkJ1OigpPT5lU3QsaW50ZXJwb2xhdGVHcmVlbnM6KCk9PmZTdCxpbnRlcnBvbGF0ZUdyZXlzOigpPT5wU3QsaW50ZXJwb2xhdGVIY2w6KCk9Pkh5dCxpbnRlcnBvbGF0ZUhjbExvbmc6KCk9PlZ5dCxpbnRlcnBvbGF0ZUhzbDooKT0+enl0LGludGVycG9sYXRlSHNsTG9uZzooKT0+Rnl0LGludGVycG9sYXRlSHVlOigpPT5BeXQsaW50ZXJwb2xhdGVJbmZlcm5vOigpPT5UU3QsaW50ZXJwb2xhdGVMYWI6KCk9Pk1fLGludGVycG9sYXRlTWFnbWE6KCk9PkVTdCxpbnRlcnBvbGF0ZU51bWJlcjooKT0+T2ksaW50ZXJwb2xhdGVOdW1iZXJBcnJheTooKT0+X2IsaW50ZXJwb2xhdGVPYmplY3Q6KCk9PnVMLGludGVycG9sYXRlT3JSZDooKT0+clN0LGludGVycG9sYXRlT3JhbmdlczooKT0+Z1N0LGludGVycG9sYXRlUFJHbjooKT0+V3d0LGludGVycG9sYXRlUGlZRzooKT0+WXd0LGludGVycG9sYXRlUGxhc21hOigpPT5DU3QsaW50ZXJwb2xhdGVQdUJ1OigpPT5pU3QsaW50ZXJwb2xhdGVQdUJ1R246KCk9Pm5TdCxpbnRlcnBvbGF0ZVB1T3I6KCk9Pmp3dCxpbnRlcnBvbGF0ZVB1UmQ6KCk9Pm9TdCxpbnRlcnBvbGF0ZVB1cnBsZXM6KCk9PmRTdCxpbnRlcnBvbGF0ZVJhaW5ib3c6KCk9PmJTdCxpbnRlcnBvbGF0ZVJkQnU6KCk9Plh3dCxpbnRlcnBvbGF0ZVJkR3k6KCk9PiR3dCxpbnRlcnBvbGF0ZVJkUHU6KCk9PmFTdCxpbnRlcnBvbGF0ZVJkWWxCdTooKT0+S3d0LGludGVycG9sYXRlUmRZbEduOigpPT5ad3QsaW50ZXJwb2xhdGVSZWRzOigpPT5tU3QsaW50ZXJwb2xhdGVSZ2I6KCk9PnFtLGludGVycG9sYXRlUmdiQmFzaXM6KCk9PnNMLGludGVycG9sYXRlUmdiQmFzaXNDbG9zZWQ6KCk9PkV5dCxpbnRlcnBvbGF0ZVJvdW5kOigpPT5oTCxpbnRlcnBvbGF0ZVNpbmVib3c6KCk9PndTdCxpbnRlcnBvbGF0ZVNwZWN0cmFsOigpPT5Kd3QsaW50ZXJwb2xhdGVTdHJpbmc6KCk9PnliLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOigpPT5kTCxpbnRlcnBvbGF0ZVRyYW5zZm9ybVN2ZzooKT0+bUwsaW50ZXJwb2xhdGVUdXJibzooKT0+U1N0LGludGVycG9sYXRlVmlyaWRpczooKT0+TVN0LGludGVycG9sYXRlV2FybTooKT0+dlN0LGludGVycG9sYXRlWWxHbjooKT0+bFN0LGludGVycG9sYXRlWWxHbkJ1OigpPT5zU3QsaW50ZXJwb2xhdGVZbE9yQnI6KCk9PmNTdCxpbnRlcnBvbGF0ZVlsT3JSZDooKT0+dVN0LGludGVycG9sYXRlWm9vbTooKT0+Z0wsaW50ZXJydXB0OigpPT51dSxpbnRlcnZhbDooKT0+WHl0LGlzb0Zvcm1hdDooKT0+UHd0LGlzb1BhcnNlOigpPT5Jd3QsanNvbjooKT0+azF0LGtleXM6KCk9PllMLGxhYjooKT0+d18sbGNoOigpPT5neXQsbGluZTooKT0+eXUsbGluZVJhZGlhbDooKT0+biQsbGlua0hvcml6b250YWw6KCk9Pk9TdCxsaW5rUmFkaWFsOigpPT5GU3QsbGlua1ZlcnRpY2FsOigpPT56U3QsbG9jYWw6KCk9Pko5LG1hcDooKT0+WmksbWF0Y2hlcjooKT0+Y2IsbWF4OigpPT5zdSxtZWFuOigpPT5LMHQsbWVkaWFuOigpPT5aMHQsbWVyZ2U6KCk9PkltLG1pbjooKT0+TG0sbW91c2U6KCk9Pk9vLG5hbWVzcGFjZTooKT0+QWgsbmFtZXNwYWNlczooKT0+eEUsbmVzdDooKT0+anZ0LG5vdzooKT0+QXAscGFjazooKT0+bzJ0LHBhY2tFbmNsb3NlOigpPT5KayxwYWNrU2libGluZ3M6KCk9PmUydCxwYWlyczooKT0+VjB0LHBhcnRpdGlvbjooKT0+YTJ0LHBhdGg6KCk9PnhzLHBlcm11dGU6KCk9PkowdCxwaWU6KCk9Pk5TdCxwaWVjZXdpc2U6KCk9PnBZLHBvaW50UmFkaWFsOigpPT5seSxwb2x5Z29uQXJlYTooKT0+bTJ0LHBvbHlnb25DZW50cm9pZDooKT0+ZzJ0LHBvbHlnb25Db250YWluczooKT0+eDJ0LHBvbHlnb25IdWxsOigpPT52MnQscG9seWdvbkxlbmd0aDooKT0+YjJ0LHByZWNpc2lvbkZpeGVkOigpPT5layxwcmVjaXNpb25QcmVmaXg6KCk9PnJrLHByZWNpc2lvblJvdW5kOigpPT5uayxxdWFkdHJlZTooKT0+T2gscXVhbnRpbGU6KCk9PmFhLHF1YW50aXplOigpPT5HeXQscmFkaWFsQXJlYTooKT0+aSQscmFkaWFsTGluZTooKT0+biQscmFuZG9tQmF0ZXM6KCk9Pk0ydCxyYW5kb21FeHBvbmVudGlhbDooKT0+RTJ0LHJhbmRvbUlyd2luSGFsbDooKT0+aTgscmFuZG9tTG9nTm9ybWFsOigpPT5TMnQscmFuZG9tTm9ybWFsOigpPT5uOCxyYW5kb21Vbmlmb3JtOigpPT53MnQscmFuZ2U6KCk9PklyLHJnYjooKT0+bHUscmliYm9uOigpPT5xdnQsc2NhbGVCYW5kOigpPT5RbSxzY2FsZURpdmVyZ2luZzooKT0+Qzgsc2NhbGVEaXZlcmdpbmdMb2c6KCk9PlRYLHNjYWxlRGl2ZXJnaW5nUG93OigpPT5BOCxzY2FsZURpdmVyZ2luZ1NxcnQ6KCk9Pk53dCxzY2FsZURpdmVyZ2luZ1N5bWxvZzooKT0+Q1gsc2NhbGVJZGVudGl0eTooKT0+czgsc2NhbGVJbXBsaWNpdDooKT0+bzgsc2NhbGVMaW5lYXI6KCk9PnpuLHNjYWxlTG9nOigpPT5zYyxzY2FsZU9yZGluYWw6KCk9Pm11LHNjYWxlUG9pbnQ6KCk9PnRnLHNjYWxlUG93OigpPT5LXyxzY2FsZVF1YW50aWxlOigpPT5lZyxzY2FsZVF1YW50aXplOigpPT5VYixzY2FsZVNlcXVlbnRpYWw6KCk9PlM4LHNjYWxlU2VxdWVudGlhbExvZzooKT0+TVgsc2NhbGVTZXF1ZW50aWFsUG93OigpPT5NOCxzY2FsZVNlcXVlbnRpYWxRdWFudGlsZTooKT0+RTgsc2NhbGVTZXF1ZW50aWFsU3FydDooKT0+Und0LHNjYWxlU2VxdWVudGlhbFN5bWxvZzooKT0+RVgsc2NhbGVTcXJ0OigpPT56MnQsc2NhbGVTeW1sb2c6KCk9PmM4LHNjYWxlVGhyZXNob2xkOigpPT51OCxzY2FsZVRpbWU6KCk9PldiLHNjYWxlVXRjOigpPT5rd3Qsc2NhbjooKT0+UTB0LHNjaGVtZUFjY2VudDooKT0+RHd0LHNjaGVtZUJsdWVzOigpPT4kWCxzY2hlbWVCckJHOigpPT5BWCxzY2hlbWVCdUduOigpPT56WCxzY2hlbWVCdVB1OigpPT5GWCxzY2hlbWVDYXRlZ29yeTEwOigpPT5ZYixzY2hlbWVEYXJrMjooKT0+T3d0LHNjaGVtZUduQnU6KCk9PkJYLHNjaGVtZUdyZWVuczooKT0+S1gsc2NoZW1lR3JleXM6KCk9PlpYLHNjaGVtZU9yUmQ6KCk9PkhYLHNjaGVtZU9yYW5nZXM6KCk9PnQkLHNjaGVtZVBSR246KCk9PlBYLHNjaGVtZVBhaXJlZDooKT0+end0LHNjaGVtZVBhc3RlbDE6KCk9PkZ3dCxzY2hlbWVQYXN0ZWwyOigpPT5Cd3Qsc2NoZW1lUGlZRzooKT0+SVgsc2NoZW1lUHVCdTooKT0+VVgsc2NoZW1lUHVCdUduOigpPT5WWCxzY2hlbWVQdU9yOigpPT5MWCxzY2hlbWVQdVJkOigpPT5xWCxzY2hlbWVQdXJwbGVzOigpPT5KWCxzY2hlbWVSZEJ1OigpPT5rWCxzY2hlbWVSZEd5OigpPT5SWCxzY2hlbWVSZFB1OigpPT5HWCxzY2hlbWVSZFlsQnU6KCk9Pk5YLHNjaGVtZVJkWWxHbjooKT0+RFgsc2NoZW1lUmVkczooKT0+UVgsc2NoZW1lU2V0MTooKT0+SHd0LHNjaGVtZVNldDI6KCk9PlZ3dCxzY2hlbWVTZXQzOigpPT5Vd3Qsc2NoZW1lU3BlY3RyYWw6KCk9Pk9YLHNjaGVtZVRhYmxlYXUxMDooKT0+cXd0LHNjaGVtZVlsR246KCk9PllYLHNjaGVtZVlsR25CdTooKT0+V1gsc2NoZW1lWWxPckJyOigpPT5qWCxzY2hlbWVZbE9yUmQ6KCk9PlhYLHNlbGVjdDooKT0+SHQsc2VsZWN0QWxsOigpPT5FcCxzZWxlY3Rpb246KCk9PlBoLHNlbGVjdG9yOigpPT5ObSxzZWxlY3RvckFsbDooKT0+bGIsc2V0OigpPT5LdnQsc2h1ZmZsZTooKT0+dF90LHN0YWNrOigpPT52M3Qsc3RhY2tPZmZzZXREaXZlcmdpbmc6KCk9PmIzdCxzdGFja09mZnNldEV4cGFuZDooKT0+eDN0LHN0YWNrT2Zmc2V0Tm9uZTooKT0+dnUsc3RhY2tPZmZzZXRTaWxob3VldHRlOigpPT53M3Qsc3RhY2tPZmZzZXRXaWdnbGU6KCk9PlMzdCxzdGFja09yZGVyQXBwZWFyYW5jZTooKT0+WDgsc3RhY2tPcmRlckFzY2VuZGluZzooKT0+JDgsc3RhY2tPcmRlckRlc2NlbmRpbmc6KCk9Pk0zdCxzdGFja09yZGVySW5zaWRlT3V0OigpPT5FM3Qsc3RhY2tPcmRlck5vbmU6KCk9Pnh1LHN0YWNrT3JkZXJSZXZlcnNlOigpPT5UM3Qsc3RyYXRpZnk6KCk9PmMydCxzdHlsZTooKT0+U3Asc3VtOigpPT5lX3Qsc3ZnOigpPT5EMXQsc3ltYm9sOigpPT5VU3Qsc3ltYm9sQ2lyY2xlOigpPT5QNSxzeW1ib2xDcm9zczooKT0+Tzgsc3ltYm9sRGlhbW9uZDooKT0+ejgsc3ltYm9sU3F1YXJlOigpPT5COCxzeW1ib2xTdGFyOigpPT5GOCxzeW1ib2xUcmlhbmdsZTooKT0+SDgsc3ltYm9sV3llOigpPT5WOCxzeW1ib2xzOigpPT5WU3QsdGV4dDooKT0+RF8sdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pczooKT0+WDB0LHRocmVzaG9sZFNjb3R0OigpPT4kMHQsdGhyZXNob2xkU3R1cmdlczooKT0+YWIsdGlja0Zvcm1hdDooKT0+YTgsdGlja0luY3JlbWVudDooKT0+eF8sdGlja1N0ZXA6KCk9PlFzLHRpY2tzOigpPT5vYix0aW1lRGF5OigpPT50eSx0aW1lRGF5czooKT0+RzJ0LHRpbWVGb3JtYXQ6KCk9PmI1LHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOigpPT54OCx0aW1lRm9ybWF0TG9jYWxlOigpPT54NSx0aW1lRnJpZGF5OigpPT5jWCx0aW1lRnJpZGF5czooKT0+JDJ0LHRpbWVIb3VyOigpPT5tOCx0aW1lSG91cnM6KCk9PlUydCx0aW1lSW50ZXJ2YWw6KCk9PmJyLHRpbWVNaWxsaXNlY29uZDooKT0+Wl8sdGltZU1pbGxpc2Vjb25kczooKT0+b1gsdGltZU1pbnV0ZTooKT0+ZDgsdGltZU1pbnV0ZXM6KCk9PkgydCx0aW1lTW9uZGF5OigpPT5yeSx0aW1lTW9uZGF5czooKT0+VzJ0LHRpbWVNb250aDooKT0+ZzgsdGltZU1vbnRoczooKT0+SjJ0LHRpbWVQYXJzZTooKT0+YlgsdGltZVNhdHVyZGF5OigpPT51WCx0aW1lU2F0dXJkYXlzOigpPT5LMnQsdGltZVNlY29uZDooKT0+UV8sdGltZVNlY29uZHM6KCk9PmFYLHRpbWVTdW5kYXk6KCk9PnJnLHRpbWVTdW5kYXlzOigpPT5oWCx0aW1lVGh1cnNkYXk6KCk9PnpwLHRpbWVUaHVyc2RheXM6KCk9PlgydCx0aW1lVHVlc2RheTooKT0+c1gsdGltZVR1ZXNkYXlzOigpPT5ZMnQsdGltZVdlZG5lc2RheTooKT0+bFgsdGltZVdlZG5lc2RheXM6KCk9PmoydCx0aW1lV2VlazooKT0+cmcsdGltZVdlZWtzOigpPT5oWCx0aW1lWWVhcjooKT0+cWgsdGltZVllYXJzOigpPT5RMnQsdGltZW91dDooKT0+TkUsdGltZXI6KCk9PkFfLHRpbWVyRmx1c2g6KCk9Pm1ZLHRvdWNoOigpPT5UcCx0b3VjaGVzOigpPT5RX3QsdHJhbnNpdGlvbjooKT0+VEwsdHJhbnNwb3NlOigpPT5xOSx0cmVlOigpPT51MnQsdHJlZW1hcDooKT0+aDJ0LHRyZWVtYXBCaW5hcnk6KCk9PmYydCx0cmVlbWFwRGljZTooKT0+VmgsdHJlZW1hcFJlc3F1YXJpZnk6KCk9PmQydCx0cmVlbWFwU2xpY2U6KCk9PkptLHRyZWVtYXBTbGljZURpY2U6KCk9PnAydCx0cmVlbWFwU3F1YXJpZnk6KCk9PnI4LHRzdjooKT0+STF0LHRzdkZvcm1hdDooKT0+djF0LHRzdkZvcm1hdEJvZHk6KCk9PngxdCx0c3ZGb3JtYXRSb3c6KCk9PncxdCx0c3ZGb3JtYXRSb3dzOigpPT5iMXQsdHN2Rm9ybWF0VmFsdWU6KCk9PlMxdCx0c3ZQYXJzZTooKT0+Q2IsdHN2UGFyc2VSb3dzOigpPT55MXQsdXRjRGF5OigpPT5ueSx1dGNEYXlzOigpPT5vd3QsdXRjRm9ybWF0OigpPT5heSx1dGNGcmlkYXk6KCk9Pm1YLHV0Y0ZyaWRheXM6KCk9PnV3dCx1dGNIb3VyOigpPT55OCx1dGNIb3VyczooKT0+bnd0LHV0Y01pbGxpc2Vjb25kOigpPT5aXyx1dGNNaWxsaXNlY29uZHM6KCk9Pm9YLHV0Y01pbnV0ZTooKT0+XzgsdXRjTWludXRlczooKT0+ZXd0LHV0Y01vbmRheTooKT0+b3ksdXRjTW9uZGF5czooKT0+YXd0LHV0Y01vbnRoOigpPT52OCx1dGNNb250aHM6KCk9PnB3dCx1dGNQYXJzZTooKT0+dzUsdXRjU2F0dXJkYXk6KCk9PmdYLHV0Y1NhdHVyZGF5czooKT0+aHd0LHV0Y1NlY29uZDooKT0+UV8sdXRjU2Vjb25kczooKT0+YVgsdXRjU3VuZGF5OigpPT5uZyx1dGNTdW5kYXlzOigpPT5fWCx1dGNUaHVyc2RheTooKT0+RnAsdXRjVGh1cnNkYXlzOigpPT5jd3QsdXRjVHVlc2RheTooKT0+cFgsdXRjVHVlc2RheXM6KCk9PnN3dCx1dGNXZWRuZXNkYXk6KCk9PmRYLHV0Y1dlZG5lc2RheXM6KCk9Pmx3dCx1dGNXZWVrOigpPT5uZyx1dGNXZWVrczooKT0+X1gsdXRjWWVhcjooKT0+R2gsdXRjWWVhcnM6KCk9PmR3dCx2YWx1ZXM6KCk9PlF2dCx2YXJpYW5jZTooKT0+VjksdmVyc2lvbjooKT0+RjB0LHZvcm9ub2k6KCk9PlYzdCx3aW5kb3c6KCk9PnViLHhtbDooKT0+UjF0LHppcDooKT0+cl90LHpvb206KCk9Pko4LHpvb21JZGVudGl0eTooKT0+amgsem9vbVRyYW5zZm9ybTooKT0+bjJ9KTt2YXIgRjB0PSI1LjcuMCI7ZnVuY3Rpb24gaWEoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gaWIoZSl7cmV0dXJuIGUubGVuZ3RoPT09MSYmKGU9WmJlKGUpKSx7bGVmdDpmdW5jdGlvbih0LHIsbixpKXtmb3Iobj09bnVsbCYmKG49MCksaT09bnVsbCYmKGk9dC5sZW5ndGgpO248aTspe3ZhciBvPW4raT4+PjE7ZSh0W29dLHIpPDA/bj1vKzE6aT1vfXJldHVybiBufSxyaWdodDpmdW5jdGlvbih0LHIsbixpKXtmb3Iobj09bnVsbCYmKG49MCksaT09bnVsbCYmKGk9dC5sZW5ndGgpO248aTspe3ZhciBvPW4raT4+PjE7ZSh0W29dLHIpPjA/aT1vOm49bysxfXJldHVybiBufX19ZnVuY3Rpb24gWmJlKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBpYShlKHQpLHIpfX12YXIgQjB0PWliKGlhKSxHVz1CMHQucmlnaHQsSDB0PUIwdC5sZWZ0LF9zPUdXO2Z1bmN0aW9uIFYwdChlLHQpe3Q9PW51bGwmJih0PVdXKTtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLTEsaT1lWzBdLG89bmV3IEFycmF5KG48MD8wOm4pO3I8bjspb1tyXT10KGksaT1lWysrcl0pO3JldHVybiBvfWZ1bmN0aW9uIFdXKGUsdCl7cmV0dXJuW2UsdF19ZnVuY3Rpb24gSDkoZSx0LHIpe3ZhciBuPWUubGVuZ3RoLGk9dC5sZW5ndGgsbz1uZXcgQXJyYXkobippKSxhLHMsbCxjO2ZvcihyPT1udWxsJiYocj1XVyksYT1sPTA7YTxuOysrYSlmb3IoYz1lW2FdLHM9MDtzPGk7KytzLCsrbClvW2xdPXIoYyx0W3NdKTtyZXR1cm4gb31mdW5jdGlvbiBVMHQoZSx0KXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gSnMoZSl7cmV0dXJuIGU9PT1udWxsP05hTjorZX1mdW5jdGlvbiBWOShlLHQpe3ZhciByPWUubGVuZ3RoLG49MCxpPS0xLG89MCxhLHMsbD0wO2lmKHQ9PW51bGwpZm9yKDsrK2k8cjspaXNOYU4oYT1KcyhlW2ldKSl8fChzPWEtbyxvKz1zLysrbixsKz1zKihhLW8pKTtlbHNlIGZvcig7KytpPHI7KWlzTmFOKGE9SnModChlW2ldLGksZSkpKXx8KHM9YS1vLG8rPXMvKytuLGwrPXMqKGEtbykpO2lmKG4+MSlyZXR1cm4gbC8obi0xKX1mdW5jdGlvbiBVOShlLHQpe3ZhciByPVY5KGUsdCk7cmV0dXJuIHImJk1hdGguc3FydChyKX1mdW5jdGlvbiBvYShlLHQpe3ZhciByPWUubGVuZ3RoLG49LTEsaSxvLGE7aWYodD09bnVsbCl7Zm9yKDsrK248cjspaWYoKGk9ZVtuXSkhPW51bGwmJmk+PWkpZm9yKG89YT1pOysrbjxyOykoaT1lW25dKSE9bnVsbCYmKG8+aSYmKG89aSksYTxpJiYoYT1pKSl9ZWxzZSBmb3IoOysrbjxyOylpZigoaT10KGVbbl0sbixlKSkhPW51bGwmJmk+PWkpZm9yKG89YT1pOysrbjxyOykoaT10KGVbbl0sbixlKSkhPW51bGwmJihvPmkmJihvPWkpLGE8aSYmKGE9aSkpO3JldHVybltvLGFdfXZhciBxMHQ9QXJyYXkucHJvdG90eXBlLEcwdD1xMHQuc2xpY2UsVzB0PXEwdC5tYXA7ZnVuY3Rpb24geUUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fWZ1bmN0aW9uIFkwdChlKXtyZXR1cm4gZX1mdW5jdGlvbiBJcihlLHQscil7ZT0rZSx0PSt0LHI9KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8odD1lLGU9MCwxKTppPDM/MTorcjtmb3IodmFyIG49LTEsaT1NYXRoLm1heCgwLE1hdGguY2VpbCgodC1lKS9yKSl8MCxvPW5ldyBBcnJheShpKTsrK248aTspb1tuXT1lK24qcjtyZXR1cm4gb312YXIgWVc9TWF0aC5zcXJ0KDUwKSxqVz1NYXRoLnNxcnQoMTApLFhXPU1hdGguc3FydCgyKTtmdW5jdGlvbiBvYihlLHQscil7dmFyIG4saT0tMSxvLGEscztpZih0PSt0LGU9K2Uscj0rcixlPT09dCYmcj4wKXJldHVybltlXTtpZigobj10PGUpJiYobz1lLGU9dCx0PW8pLChzPXhfKGUsdCxyKSk9PT0wfHwhaXNGaW5pdGUocykpcmV0dXJuW107aWYocz4wKWZvcihlPU1hdGguY2VpbChlL3MpLHQ9TWF0aC5mbG9vcih0L3MpLGE9bmV3IEFycmF5KG89TWF0aC5jZWlsKHQtZSsxKSk7KytpPG87KWFbaV09KGUraSkqcztlbHNlIGZvcihlPU1hdGguZmxvb3IoZSpzKSx0PU1hdGguY2VpbCh0KnMpLGE9bmV3IEFycmF5KG89TWF0aC5jZWlsKGUtdCsxKSk7KytpPG87KWFbaV09KGUtaSkvcztyZXR1cm4gbiYmYS5yZXZlcnNlKCksYX1mdW5jdGlvbiB4XyhlLHQscil7dmFyIG49KHQtZSkvTWF0aC5tYXgoMCxyKSxpPU1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5MTjEwKSxvPW4vTWF0aC5wb3coMTAsaSk7cmV0dXJuIGk+PTA/KG8+PVlXPzEwOm8+PWpXPzU6bz49WFc/MjoxKSpNYXRoLnBvdygxMCxpKTotTWF0aC5wb3coMTAsLWkpLyhvPj1ZVz8xMDpvPj1qVz81Om8+PVhXPzI6MSl9ZnVuY3Rpb24gUXMoZSx0LHIpe3ZhciBuPU1hdGguYWJzKHQtZSkvTWF0aC5tYXgoMCxyKSxpPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2cobikvTWF0aC5MTjEwKSksbz1uL2k7cmV0dXJuIG8+PVlXP2kqPTEwOm8+PWpXP2kqPTU6bz49WFcmJihpKj0yKSx0PGU/LWk6aX1mdW5jdGlvbiBhYihlKXtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKGUubGVuZ3RoKS9NYXRoLkxOMikrMX1mdW5jdGlvbiBqMHQoKXt2YXIgZT1ZMHQsdD1vYSxyPWFiO2Z1bmN0aW9uIG4oaSl7dmFyIG8sYT1pLmxlbmd0aCxzLGw9bmV3IEFycmF5KGEpO2ZvcihvPTA7bzxhOysrbylsW29dPWUoaVtvXSxvLGkpO3ZhciBjPXQobCksdT1jWzBdLGg9Y1sxXSxmPXIobCx1LGgpO0FycmF5LmlzQXJyYXkoZil8fChmPVFzKHUsaCxmKSxmPUlyKE1hdGguY2VpbCh1L2YpKmYsaCxmKSk7Zm9yKHZhciBwPWYubGVuZ3RoO2ZbMF08PXU7KWYuc2hpZnQoKSwtLXA7Zm9yKDtmW3AtMV0+aDspZi5wb3AoKSwtLXA7dmFyIGQ9bmV3IEFycmF5KHArMSksZztmb3Iobz0wO288PXA7KytvKWc9ZFtvXT1bXSxnLngwPW8+MD9mW28tMV06dSxnLngxPW88cD9mW29dOmg7Zm9yKG89MDtvPGE7KytvKXM9bFtvXSx1PD1zJiZzPD1oJiZkW19zKGYscywwLHApXS5wdXNoKGlbb10pO3JldHVybiBkfXJldHVybiBuLnZhbHVlPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6eUUoaSksbik6ZX0sbi5kb21haW49ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGk9PSJmdW5jdGlvbiI/aTp5RShbaVswXSxpWzFdXSksbik6dH0sbi50aHJlc2hvbGRzPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6QXJyYXkuaXNBcnJheShpKT95RShHMHQuY2FsbChpKSk6eUUoaSksbik6cn0sbn1mdW5jdGlvbiBhYShlLHQscil7aWYocj09bnVsbCYmKHI9SnMpLCEhKG49ZS5sZW5ndGgpKXtpZigodD0rdCk8PTB8fG48MilyZXR1cm4rcihlWzBdLDAsZSk7aWYodD49MSlyZXR1cm4rcihlW24tMV0sbi0xLGUpO3ZhciBuLGk9KG4tMSkqdCxvPU1hdGguZmxvb3IoaSksYT0rcihlW29dLG8sZSkscz0rcihlW28rMV0sbysxLGUpO3JldHVybiBhKyhzLWEpKihpLW8pfX1mdW5jdGlvbiBYMHQoZSx0LHIpe3JldHVybiBlPVcwdC5jYWxsKGUsSnMpLnNvcnQoaWEpLE1hdGguY2VpbCgoci10KS8oMiooYWEoZSwuNzUpLWFhKGUsLjI1KSkqTWF0aC5wb3coZS5sZW5ndGgsLTEvMykpKX1mdW5jdGlvbiAkMHQoZSx0LHIpe3JldHVybiBNYXRoLmNlaWwoKHItdCkvKDMuNSpVOShlKSpNYXRoLnBvdyhlLmxlbmd0aCwtMS8zKSkpfWZ1bmN0aW9uIHN1KGUsdCl7dmFyIHI9ZS5sZW5ndGgsbj0tMSxpLG87aWYodD09bnVsbCl7Zm9yKDsrK248cjspaWYoKGk9ZVtuXSkhPW51bGwmJmk+PWkpZm9yKG89aTsrK248cjspKGk9ZVtuXSkhPW51bGwmJmk+byYmKG89aSl9ZWxzZSBmb3IoOysrbjxyOylpZigoaT10KGVbbl0sbixlKSkhPW51bGwmJmk+PWkpZm9yKG89aTsrK248cjspKGk9dChlW25dLG4sZSkpIT1udWxsJiZpPm8mJihvPWkpO3JldHVybiBvfWZ1bmN0aW9uIEswdChlLHQpe3ZhciByPWUubGVuZ3RoLG49cixpPS0xLG8sYT0wO2lmKHQ9PW51bGwpZm9yKDsrK2k8cjspaXNOYU4obz1KcyhlW2ldKSk/LS1uOmErPW87ZWxzZSBmb3IoOysraTxyOylpc05hTihvPUpzKHQoZVtpXSxpLGUpKSk/LS1uOmErPW87aWYobilyZXR1cm4gYS9ufWZ1bmN0aW9uIFowdChlLHQpe3ZhciByPWUubGVuZ3RoLG49LTEsaSxvPVtdO2lmKHQ9PW51bGwpZm9yKDsrK248cjspaXNOYU4oaT1KcyhlW25dKSl8fG8ucHVzaChpKTtlbHNlIGZvcig7KytuPHI7KWlzTmFOKGk9SnModChlW25dLG4sZSkpKXx8by5wdXNoKGkpO3JldHVybiBhYShvLnNvcnQoaWEpLC41KX1mdW5jdGlvbiBJbShlKXtmb3IodmFyIHQ9ZS5sZW5ndGgscixuPS0xLGk9MCxvLGE7KytuPHQ7KWkrPWVbbl0ubGVuZ3RoO2ZvcihvPW5ldyBBcnJheShpKTstLXQ+PTA7KWZvcihhPWVbdF0scj1hLmxlbmd0aDstLXI+PTA7KW9bLS1pXT1hW3JdO3JldHVybiBvfWZ1bmN0aW9uIExtKGUsdCl7dmFyIHI9ZS5sZW5ndGgsbj0tMSxpLG87aWYodD09bnVsbCl7Zm9yKDsrK248cjspaWYoKGk9ZVtuXSkhPW51bGwmJmk+PWkpZm9yKG89aTsrK248cjspKGk9ZVtuXSkhPW51bGwmJm8+aSYmKG89aSl9ZWxzZSBmb3IoOysrbjxyOylpZigoaT10KGVbbl0sbixlKSkhPW51bGwmJmk+PWkpZm9yKG89aTsrK248cjspKGk9dChlW25dLG4sZSkpIT1udWxsJiZvPmkmJihvPWkpO3JldHVybiBvfWZ1bmN0aW9uIEowdChlLHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKTtyLS07KW5bcl09ZVt0W3JdXTtyZXR1cm4gbn1mdW5jdGlvbiBRMHQoZSx0KXtpZighIShyPWUubGVuZ3RoKSl7dmFyIHIsbj0wLGk9MCxvLGE9ZVtpXTtmb3IodD09bnVsbCYmKHQ9aWEpOysrbjxyOykodChvPWVbbl0sYSk8MHx8dChhLGEpIT09MCkmJihhPW8saT1uKTtpZih0KGEsYSk9PT0wKXJldHVybiBpfX1mdW5jdGlvbiB0X3QoZSx0LHIpe2Zvcih2YXIgbj0ocj09bnVsbD9lLmxlbmd0aDpyKS0odD10PT1udWxsPzA6K3QpLGksbztuOylvPU1hdGgucmFuZG9tKCkqbi0tfDAsaT1lW24rdF0sZVtuK3RdPWVbbyt0XSxlW28rdF09aTtyZXR1cm4gZX1mdW5jdGlvbiBlX3QoZSx0KXt2YXIgcj1lLmxlbmd0aCxuPS0xLGksbz0wO2lmKHQ9PW51bGwpZm9yKDsrK248cjspKGk9K2Vbbl0pJiYobys9aSk7ZWxzZSBmb3IoOysrbjxyOykoaT0rdChlW25dLG4sZSkpJiYobys9aSk7cmV0dXJuIG99ZnVuY3Rpb24gcTkoZSl7aWYoIShvPWUubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIHQ9LTEscj1MbShlLEpiZSksbj1uZXcgQXJyYXkocik7Kyt0PHI7KWZvcih2YXIgaT0tMSxvLGE9blt0XT1uZXcgQXJyYXkobyk7KytpPG87KWFbaV09ZVtpXVt0XTtyZXR1cm4gbn1mdW5jdGlvbiBKYmUoZSl7cmV0dXJuIGUubGVuZ3RofWZ1bmN0aW9uIHJfdCgpe3JldHVybiBxOShhcmd1bWVudHMpfXZhciBHOT1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gbl90KGUpe3JldHVybiBlfXZhciBXOT0xLFk5PTIsJFc9Myx2RT00LGlfdD0xZS02O2Z1bmN0aW9uIFFiZShlKXtyZXR1cm4idHJhbnNsYXRlKCIrKGUrLjUpKyIsMCkifWZ1bmN0aW9uIHQyZShlKXtyZXR1cm4idHJhbnNsYXRlKDAsIisoZSsuNSkrIikifWZ1bmN0aW9uIGUyZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuK2UodCl9fWZ1bmN0aW9uIHIyZShlKXt2YXIgdD1NYXRoLm1heCgwLGUuYmFuZHdpZHRoKCktMSkvMjtyZXR1cm4gZS5yb3VuZCgpJiYodD1NYXRoLnJvdW5kKHQpKSxmdW5jdGlvbihyKXtyZXR1cm4rZShyKSt0fX1mdW5jdGlvbiBuMmUoKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gajkoZSx0KXt2YXIgcj1bXSxuPW51bGwsaT1udWxsLG89NixhPTYscz0zLGw9ZT09PVc5fHxlPT09dkU/LTE6MSxjPWU9PT12RXx8ZT09PVk5PyJ4IjoieSIsdT1lPT09Vzl8fGU9PT0kVz9RYmU6dDJlO2Z1bmN0aW9uIGgoZil7dmFyIHA9bj09bnVsbD90LnRpY2tzP3QudGlja3MuYXBwbHkodCxyKTp0LmRvbWFpbigpOm4sZD1pPT1udWxsP3QudGlja0Zvcm1hdD90LnRpY2tGb3JtYXQuYXBwbHkodCxyKTpuX3Q6aSxnPU1hdGgubWF4KG8sMCkrcyxfPXQucmFuZ2UoKSx5PStfWzBdKy41LHg9K19bXy5sZW5ndGgtMV0rLjUsYj0odC5iYW5kd2lkdGg/cjJlOmUyZSkodC5jb3B5KCkpLFM9Zi5zZWxlY3Rpb24/Zi5zZWxlY3Rpb24oKTpmLEM9Uy5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFtudWxsXSksUD1TLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKHAsdCkub3JkZXIoKSxrPVAuZXhpdCgpLE89UC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidGljayIpLEQ9UC5zZWxlY3QoImxpbmUiKSxCPVAuc2VsZWN0KCJ0ZXh0Iik7Qz1DLm1lcmdlKEMuZW50ZXIoKS5pbnNlcnQoInBhdGgiLCIudGljayIpLmF0dHIoImNsYXNzIiwiZG9tYWluIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikpLFA9UC5tZXJnZShPKSxEPUQubWVyZ2UoTy5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKS5hdHRyKGMrIjIiLGwqbykpLEI9Qi5tZXJnZShPLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCJjdXJyZW50Q29sb3IiKS5hdHRyKGMsbCpnKS5hdHRyKCJkeSIsZT09PVc5PyIwZW0iOmU9PT0kVz8iMC43MWVtIjoiMC4zMmVtIikpLGYhPT1TJiYoQz1DLnRyYW5zaXRpb24oZiksUD1QLnRyYW5zaXRpb24oZiksRD1ELnRyYW5zaXRpb24oZiksQj1CLnRyYW5zaXRpb24oZiksaz1rLnRyYW5zaXRpb24oZikuYXR0cigib3BhY2l0eSIsaV90KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKEkpe3JldHVybiBpc0Zpbml0ZShJPWIoSSkpP3UoSSk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSksTy5hdHRyKCJvcGFjaXR5IixpX3QpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oSSl7dmFyIEw9dGhpcy5wYXJlbnROb2RlLl9fYXhpcztyZXR1cm4gdShMJiZpc0Zpbml0ZShMPUwoSSkpP0w6YihJKSl9KSksay5yZW1vdmUoKSxDLmF0dHIoImQiLGU9PT12RXx8ZT09WTk/YT8iTSIrbCphKyIsIit5KyJIMC41ViIreCsiSCIrbCphOiJNMC41LCIreSsiViIreDphPyJNIit5KyIsIitsKmErIlYwLjVIIit4KyJWIitsKmE6Ik0iK3krIiwwLjVIIit4KSxQLmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oSSl7cmV0dXJuIHUoYihJKSl9KSxELmF0dHIoYysiMiIsbCpvKSxCLmF0dHIoYyxsKmcpLnRleHQoZCksUy5maWx0ZXIobjJlKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIixlPT09WTk/InN0YXJ0IjplPT09dkU/ImVuZCI6Im1pZGRsZSIpLFMuZWFjaChmdW5jdGlvbigpe3RoaXMuX19heGlzPWJ9KX1yZXR1cm4gaC5zY2FsZT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1mLGgpOnR9LGgudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gcj1HOS5jYWxsKGFyZ3VtZW50cyksaH0saC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWY9PW51bGw/W106RzkuY2FsbChmKSxoKTpyLnNsaWNlKCl9LGgudGlja1ZhbHVlcz1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1mPT1udWxsP251bGw6RzkuY2FsbChmKSxoKTpuJiZuLnNsaWNlKCl9LGgudGlja0Zvcm1hdD1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1mLGgpOml9LGgudGlja1NpemU9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89YT0rZixoKTpvfSxoLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K2YsaCk6b30saC50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPStmLGgpOmF9LGgudGlja1BhZGRpbmc9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K2YsaCk6c30saH1mdW5jdGlvbiBvX3QoZSl7cmV0dXJuIGo5KFc5LGUpfWZ1bmN0aW9uIGFfdChlKXtyZXR1cm4gajkoWTksZSl9ZnVuY3Rpb24gWDkoZSl7cmV0dXJuIGo5KCRXLGUpfWZ1bmN0aW9uIHNiKGUpe3JldHVybiBqOSh2RSxlKX1rbSgpO2ttKCk7dmFyIEs5PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4RT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6SzkseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBBaChlKXt2YXIgdD1lKz0iIixyPXQuaW5kZXhPZigiOiIpO3JldHVybiByPj0wJiYodD1lLnNsaWNlKDAscikpIT09InhtbG5zIiYmKGU9ZS5zbGljZShyKzEpKSx4RS5oYXNPd25Qcm9wZXJ0eSh0KT97c3BhY2U6eEVbdF0sbG9jYWw6ZX06ZX1mdW5jdGlvbiBzMmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vd25lckRvY3VtZW50LHI9dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIHI9PT1LOSYmdC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09Szk/dC5jcmVhdGVFbGVtZW50KGUpOnQuY3JlYXRlRWxlbWVudE5TKHIsZSl9fWZ1bmN0aW9uIGwyZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhlLnNwYWNlLGUubG9jYWwpfX1mdW5jdGlvbiBSbShlKXt2YXIgdD1BaChlKTtyZXR1cm4odC5sb2NhbD9sMmU6czJlKSh0KX1mdW5jdGlvbiBjMmUoKXt9ZnVuY3Rpb24gTm0oZSl7cmV0dXJuIGU9PW51bGw/YzJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihlKX19ZnVuY3Rpb24gdV90KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1ObShlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgbz10W2ldLGE9by5sZW5ndGgscz1uW2ldPW5ldyBBcnJheShhKSxsLGMsdT0wO3U8YTsrK3UpKGw9b1t1XSkmJihjPWUuY2FsbChsLGwuX19kYXRhX18sdSxvKSkmJigiX19kYXRhX18iaW4gbCYmKGMuX19kYXRhX189bC5fX2RhdGFfXyksc1t1XT1jKTtyZXR1cm4gbmV3IERuKG4sdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gdTJlKCl7cmV0dXJuW119ZnVuY3Rpb24gbGIoZSl7cmV0dXJuIGU9PW51bGw/dTJlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChlKX19ZnVuY3Rpb24gaF90KGUpe3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1sYihlKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPXQubGVuZ3RoLG49W10saT1bXSxvPTA7bzxyOysrbylmb3IodmFyIGE9dFtvXSxzPWEubGVuZ3RoLGwsYz0wO2M8czsrK2MpKGw9YVtjXSkmJihuLnB1c2goZS5jYWxsKGwsbC5fX2RhdGFfXyxjLGEpKSxpLnB1c2gobCkpO3JldHVybiBuZXcgRG4obixpKX1mdW5jdGlvbiBjYihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKGUpfX1mdW5jdGlvbiBmX3QoZSl7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPWNiKGUpKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLHI9dC5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpZm9yKHZhciBvPXRbaV0sYT1vLmxlbmd0aCxzPW5baV09W10sbCxjPTA7YzxhOysrYykobD1vW2NdKSYmZS5jYWxsKGwsbC5fX2RhdGFfXyxjLG8pJiZzLnB1c2gobCk7cmV0dXJuIG5ldyBEbihuLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIFo5KGUpe3JldHVybiBuZXcgQXJyYXkoZS5sZW5ndGgpfWZ1bmN0aW9uIHBfdCgpe3JldHVybiBuZXcgRG4odGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoWjkpLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIGJFKGUsdCl7dGhpcy5vd25lckRvY3VtZW50PWUub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST1lLm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PWUsdGhpcy5fX2RhdGFfXz10fWJFLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YkUsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoZSx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUoZSx0KX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IoZSl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKGUpfX07ZnVuY3Rpb24gZF90KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgbV90PSIkIjtmdW5jdGlvbiBoMmUoZSx0LHIsbixpLG8pe2Zvcih2YXIgYT0wLHMsbD10Lmxlbmd0aCxjPW8ubGVuZ3RoO2E8YzsrK2EpKHM9dFthXSk/KHMuX19kYXRhX189b1thXSxuW2FdPXMpOnJbYV09bmV3IGJFKGUsb1thXSk7Zm9yKDthPGw7KythKShzPXRbYV0pJiYoaVthXT1zKX1mdW5jdGlvbiBmMmUoZSx0LHIsbixpLG8sYSl7dmFyIHMsbCxjPXt9LHU9dC5sZW5ndGgsaD1vLmxlbmd0aCxmPW5ldyBBcnJheSh1KSxwO2ZvcihzPTA7czx1OysrcykobD10W3NdKSYmKGZbc109cD1tX3QrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLHQpLHAgaW4gYz9pW3NdPWw6Y1twXT1sKTtmb3Iocz0wO3M8aDsrK3MpcD1tX3QrYS5jYWxsKGUsb1tzXSxzLG8pLChsPWNbcF0pPyhuW3NdPWwsbC5fX2RhdGFfXz1vW3NdLGNbcF09bnVsbCk6cltzXT1uZXcgYkUoZSxvW3NdKTtmb3Iocz0wO3M8dTsrK3MpKGw9dFtzXSkmJmNbZltzXV09PT1sJiYoaVtzXT1sKX1mdW5jdGlvbiBnX3QoZSx0KXtpZighZSlyZXR1cm4gcD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGM9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKFApe3BbKytjXT1QfSkscDt2YXIgcj10P2YyZTpoMmUsbj10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzO3R5cGVvZiBlIT0iZnVuY3Rpb24iJiYoZT1kX3QoZSkpO2Zvcih2YXIgbz1pLmxlbmd0aCxhPW5ldyBBcnJheShvKSxzPW5ldyBBcnJheShvKSxsPW5ldyBBcnJheShvKSxjPTA7YzxvOysrYyl7dmFyIHU9bltjXSxoPWlbY10sZj1oLmxlbmd0aCxwPWUuY2FsbCh1LHUmJnUuX19kYXRhX18sYyxuKSxkPXAubGVuZ3RoLGc9c1tjXT1uZXcgQXJyYXkoZCksXz1hW2NdPW5ldyBBcnJheShkKSx5PWxbY109bmV3IEFycmF5KGYpO3IodSxoLGcsXyx5LHAsdCk7Zm9yKHZhciB4PTAsYj0wLFMsQzt4PGQ7Kyt4KWlmKFM9Z1t4XSl7Zm9yKHg+PWImJihiPXgrMSk7IShDPV9bYl0pJiYrK2I8ZDspO1MuX25leHQ9Q3x8bnVsbH19cmV0dXJuIGE9bmV3IERuKGEsbiksYS5fZW50ZXI9cyxhLl9leGl0PWwsYX1mdW5jdGlvbiBfX3QoKXtyZXR1cm4gbmV3IERuKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoWjkpLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIHlfdChlLHQscil7dmFyIG49dGhpcy5lbnRlcigpLGk9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBuPXR5cGVvZiBlPT0iZnVuY3Rpb24iP2Uobik6bi5hcHBlbmQoZSsiIiksdCE9bnVsbCYmKGk9dChpKSkscj09bnVsbD9vLnJlbW92ZSgpOnIobyksbiYmaT9uLm1lcmdlKGkpLm9yZGVyKCk6aX1mdW5jdGlvbiB2X3QoZSl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPWUuX2dyb3VwcyxuPXQubGVuZ3RoLGk9ci5sZW5ndGgsbz1NYXRoLm1pbihuLGkpLGE9bmV3IEFycmF5KG4pLHM9MDtzPG87KytzKWZvcih2YXIgbD10W3NdLGM9cltzXSx1PWwubGVuZ3RoLGg9YVtzXT1uZXcgQXJyYXkodSksZixwPTA7cDx1OysrcCkoZj1sW3BdfHxjW3BdKSYmKGhbcF09Zik7Zm9yKDtzPG47KytzKWFbc109dFtzXTtyZXR1cm4gbmV3IERuKGEsdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24geF90KCl7Zm9yKHZhciBlPXRoaXMuX2dyb3Vwcyx0PS0xLHI9ZS5sZW5ndGg7Kyt0PHI7KWZvcih2YXIgbj1lW3RdLGk9bi5sZW5ndGgtMSxvPW5baV0sYTstLWk+PTA7KShhPW5baV0pJiYobyYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihvKV40JiZvLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsbyksbz1hKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBiX3QoZSl7ZXx8KGU9cDJlKTtmdW5jdGlvbiB0KGgsZil7cmV0dXJuIGgmJmY/ZShoLl9fZGF0YV9fLGYuX19kYXRhX18pOiFoLSFmfWZvcih2YXIgcj10aGlzLl9ncm91cHMsbj1yLmxlbmd0aCxpPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbyl7Zm9yKHZhciBhPXJbb10scz1hLmxlbmd0aCxsPWlbb109bmV3IEFycmF5KHMpLGMsdT0wO3U8czsrK3UpKGM9YVt1XSkmJihsW3VdPWMpO2wuc29ydCh0KX1yZXR1cm4gbmV3IERuKGksdGhpcy5fcGFyZW50cykub3JkZXIoKX1mdW5jdGlvbiBwMmUoZSx0KXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gd190KCl7dmFyIGU9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyxlLmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfWZ1bmN0aW9uIFNfdCgpe3ZhciBlPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdD0tMTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZVsrK3RdPXRoaXN9KSxlfWZ1bmN0aW9uIE1fdCgpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClmb3IodmFyIG49ZVt0XSxpPTAsbz1uLmxlbmd0aDtpPG87KytpKXt2YXIgYT1uW2ldO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9ZnVuY3Rpb24gRV90KCl7dmFyIGU9MDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7KytlfSksZX1mdW5jdGlvbiBUX3QoKXtyZXR1cm4hdGhpcy5ub2RlKCl9ZnVuY3Rpb24gQ190KGUpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj0wLG49dC5sZW5ndGg7cjxuOysrcilmb3IodmFyIGk9dFtyXSxvPTAsYT1pLmxlbmd0aCxzO288YTsrK28pKHM9aVtvXSkmJmUuY2FsbChzLHMuX19kYXRhX18sbyxpKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBkMmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9fWZ1bmN0aW9uIG0yZShlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCl9fWZ1bmN0aW9uIGcyZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKGUsdCl9fWZ1bmN0aW9uIF8yZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHQpfX1mdW5jdGlvbiB5MmUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyPT1udWxsP3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpOnRoaXMuc2V0QXR0cmlidXRlKGUscil9fWZ1bmN0aW9uIHYyZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3I9PW51bGw/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHIpfX1mdW5jdGlvbiBBX3QoZSx0KXt2YXIgcj1BaChlKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBuPXRoaXMubm9kZSgpO3JldHVybiByLmxvY2FsP24uZ2V0QXR0cmlidXRlTlMoci5zcGFjZSxyLmxvY2FsKTpuLmdldEF0dHJpYnV0ZShyKX1yZXR1cm4gdGhpcy5lYWNoKCh0PT1udWxsP3IubG9jYWw/bTJlOmQyZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj9yLmxvY2FsP3YyZTp5MmU6ci5sb2NhbD9fMmU6ZzJlKShyLHQpKX1mdW5jdGlvbiB1YihlKXtyZXR1cm4gZS5vd25lckRvY3VtZW50JiZlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fGUuZG9jdW1lbnQmJmV8fGUuZGVmYXVsdFZpZXd9ZnVuY3Rpb24geDJlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSl9fWZ1bmN0aW9uIGIyZShlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShlLHQscil9fWZ1bmN0aW9uIHcyZShlLHQscil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bj09bnVsbD90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkoZSxuLHIpfX1mdW5jdGlvbiBQX3QoZSx0LHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKCh0PT1udWxsP3gyZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj93MmU6YjJlKShlLHQscj09bnVsbD8iIjpyKSk6U3AodGhpcy5ub2RlKCksZSl9ZnVuY3Rpb24gU3AoZSx0KXtyZXR1cm4gZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHQpfHx1YihlKS5nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX1mdW5jdGlvbiBTMmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbZV19fWZ1bmN0aW9uIE0yZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbZV09dH19ZnVuY3Rpb24gRTJlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD9kZWxldGUgdGhpc1tlXTp0aGlzW2VdPXJ9fWZ1bmN0aW9uIElfdChlLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKCh0PT1udWxsP1MyZTp0eXBlb2YgdD09ImZ1bmN0aW9uIj9FMmU6TTJlKShlLHQpKTp0aGlzLm5vZGUoKVtlXX1mdW5jdGlvbiBMX3QoZSl7cmV0dXJuIGUudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIEtXKGUpe3JldHVybiBlLmNsYXNzTGlzdHx8bmV3IGtfdChlKX1mdW5jdGlvbiBrX3QoZSl7dGhpcy5fbm9kZT1lLHRoaXMuX25hbWVzPUxfdChlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWtfdC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9uYW1lcy5pbmRleE9mKGUpO3Q8MCYmKHRoaXMuX25hbWVzLnB1c2goZSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX25hbWVzLmluZGV4T2YoZSk7dD49MCYmKHRoaXMuX25hbWVzLnNwbGljZSh0LDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKGUpPj0wfX07ZnVuY3Rpb24gUl90KGUsdCl7Zm9yKHZhciByPUtXKGUpLG49LTEsaT10Lmxlbmd0aDsrK248aTspci5hZGQodFtuXSl9ZnVuY3Rpb24gTl90KGUsdCl7Zm9yKHZhciByPUtXKGUpLG49LTEsaT10Lmxlbmd0aDsrK248aTspci5yZW1vdmUodFtuXSl9ZnVuY3Rpb24gVDJlKGUpe3JldHVybiBmdW5jdGlvbigpe1JfdCh0aGlzLGUpfX1mdW5jdGlvbiBDMmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7Tl90KHRoaXMsZSl9fWZ1bmN0aW9uIEEyZShlLHQpe3JldHVybiBmdW5jdGlvbigpeyh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKT9SX3Q6Tl90KSh0aGlzLGUpfX1mdW5jdGlvbiBEX3QoZSx0KXt2YXIgcj1MX3QoZSsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIG49S1codGhpcy5ub2RlKCkpLGk9LTEsbz1yLmxlbmd0aDsrK2k8bzspaWYoIW4uY29udGFpbnMocltpXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHQ9PSJmdW5jdGlvbiI/QTJlOnQ/VDJlOkMyZSkocix0KSl9ZnVuY3Rpb24gUDJlKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBJMmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD1lfX1mdW5jdGlvbiBMMmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIE9fdChlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goZT09bnVsbD9QMmU6KHR5cGVvZiBlPT0iZnVuY3Rpb24iP0wyZTpJMmUpKGUpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH1mdW5jdGlvbiBrMmUoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBSMmUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9ZX19ZnVuY3Rpb24gTjJlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPXQ9PW51bGw/IiI6dH19ZnVuY3Rpb24gel90KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChlPT1udWxsP2syZToodHlwZW9mIGU9PSJmdW5jdGlvbiI/TjJlOlIyZSkoZSkpOnRoaXMubm9kZSgpLmlubmVySFRNTH1mdW5jdGlvbiBEMmUoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gRl90KCl7cmV0dXJuIHRoaXMuZWFjaChEMmUpfWZ1bmN0aW9uIE8yZSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIEJfdCgpe3JldHVybiB0aGlzLmVhY2goTzJlKX1mdW5jdGlvbiBIX3QoZSl7dmFyIHQ9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpSbShlKTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZCh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KX1mdW5jdGlvbiB6MmUoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBWX3QoZSx0KXt2YXIgcj10eXBlb2YgZT09ImZ1bmN0aW9uIj9lOlJtKGUpLG49dD09bnVsbD96MmU6dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dDpObSh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoci5hcHBseSh0aGlzLGFyZ3VtZW50cyksbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9ZnVuY3Rpb24gRjJlKCl7dmFyIGU9dGhpcy5wYXJlbnROb2RlO2UmJmUucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gVV90KCl7cmV0dXJuIHRoaXMuZWFjaChGMmUpfWZ1bmN0aW9uIEIyZSgpe3ZhciBlPXRoaXMuY2xvbmVOb2RlKCExKSx0PXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gdD90Lmluc2VydEJlZm9yZShlLHRoaXMubmV4dFNpYmxpbmcpOmV9ZnVuY3Rpb24gSDJlKCl7dmFyIGU9dGhpcy5jbG9uZU5vZGUoITApLHQ9dGhpcy5wYXJlbnROb2RlO3JldHVybiB0P3QuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyk6ZX1mdW5jdGlvbiBxX3QoZSl7cmV0dXJuIHRoaXMuc2VsZWN0KGU/SDJlOkIyZSl9ZnVuY3Rpb24gR190KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIixlKTp0aGlzLm5vZGUoKS5fX2RhdGFfX312YXIgWV90PXt9LHF0PW51bGw7dHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIiYmKFdfdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIm9ubW91c2VlbnRlciJpbiBXX3R8fChZX3Q9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpO3ZhciBXX3Q7ZnVuY3Rpb24gVjJlKGUsdCxyKXtyZXR1cm4gZT1qX3QoZSx0LHIpLGZ1bmN0aW9uKG4pe3ZhciBpPW4ucmVsYXRlZFRhcmdldDsoIWl8fGkhPT10aGlzJiYhKGkuY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykmOCkpJiZlLmNhbGwodGhpcyxuKX19ZnVuY3Rpb24gal90KGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9cXQ7cXQ9bjt0cnl7ZS5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyx0LHIpfWZpbmFsbHl7cXQ9aX19fWZ1bmN0aW9uIFUyZShlKXtyZXR1cm4gZS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHQpe3ZhciByPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihyPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOnJ9fSl9ZnVuY3Rpb24gcTJlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX19vbjtpZighIXQpe2Zvcih2YXIgcj0wLG49LTEsaT10Lmxlbmd0aCxvO3I8aTsrK3Ipbz10W3JdLCghZS50eXBlfHxvLnR5cGU9PT1lLnR5cGUpJiZvLm5hbWU9PT1lLm5hbWU/dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG8udHlwZSxvLmxpc3RlbmVyLG8uY2FwdHVyZSk6dFsrK25dPW87KytuP3QubGVuZ3RoPW46ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIEcyZShlLHQscil7dmFyIG49WV90Lmhhc093blByb3BlcnR5KGUudHlwZSk/VjJlOmpfdDtyZXR1cm4gZnVuY3Rpb24oaSxvLGEpe3ZhciBzPXRoaXMuX19vbixsLGM9bih0LG8sYSk7aWYocyl7Zm9yKHZhciB1PTAsaD1zLmxlbmd0aDt1PGg7Kyt1KWlmKChsPXNbdV0pLnR5cGU9PT1lLnR5cGUmJmwubmFtZT09PWUubmFtZSl7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGwudHlwZSxsLmxpc3RlbmVyLGwuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKGwudHlwZSxsLmxpc3RlbmVyPWMsbC5jYXB0dXJlPXIpLGwudmFsdWU9dDtyZXR1cm59fXRoaXMuYWRkRXZlbnRMaXN0ZW5lcihlLnR5cGUsYyxyKSxsPXt0eXBlOmUudHlwZSxuYW1lOmUubmFtZSx2YWx1ZTp0LGxpc3RlbmVyOmMsY2FwdHVyZTpyfSxzP3MucHVzaChsKTp0aGlzLl9fb249W2xdfX1mdW5jdGlvbiBYX3QoZSx0LHIpe3ZhciBuPVUyZShlKyIiKSxpLG89bi5sZW5ndGgsYTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocyl7Zm9yKHZhciBsPTAsYz1zLmxlbmd0aCx1O2w8YzsrK2wpZm9yKGk9MCx1PXNbbF07aTxvOysraSlpZigoYT1uW2ldKS50eXBlPT09dS50eXBlJiZhLm5hbWU9PT11Lm5hbWUpcmV0dXJuIHUudmFsdWV9cmV0dXJufWZvcihzPXQ/RzJlOnEyZSxyPT1udWxsJiYocj0hMSksaT0wO2k8bzsrK2kpdGhpcy5lYWNoKHMobltpXSx0LHIpKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBNcChlLHQscixuKXt2YXIgaT1xdDtlLnNvdXJjZUV2ZW50PXF0LHF0PWU7dHJ5e3JldHVybiB0LmFwcGx5KHIsbil9ZmluYWxseXtxdD1pfX1mdW5jdGlvbiAkX3QoZSx0LHIpe3ZhciBuPXViKGUpLGk9bi5DdXN0b21FdmVudDt0eXBlb2YgaT09ImZ1bmN0aW9uIj9pPW5ldyBpKHQscik6KGk9bi5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxyPyhpLmluaXRFdmVudCh0LHIuYnViYmxlcyxyLmNhbmNlbGFibGUpLGkuZGV0YWlsPXIuZGV0YWlsKTppLmluaXRFdmVudCh0LCExLCExKSksZS5kaXNwYXRjaEV2ZW50KGkpfWZ1bmN0aW9uIFcyZShlLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiAkX3QodGhpcyxlLHQpfX1mdW5jdGlvbiBZMmUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gJF90KHRoaXMsZSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIEtfdChlLHQpe3JldHVybiB0aGlzLmVhY2goKHR5cGVvZiB0PT0iZnVuY3Rpb24iP1kyZTpXMmUpKGUsdCkpfXZhciB3RT1bbnVsbF07ZnVuY3Rpb24gRG4oZSx0KXt0aGlzLl9ncm91cHM9ZSx0aGlzLl9wYXJlbnRzPXR9ZnVuY3Rpb24gWl90KCl7cmV0dXJuIG5ldyBEbihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLHdFKX1Ebi5wcm90b3R5cGU9Wl90LnByb3RvdHlwZT17Y29uc3RydWN0b3I6RG4sc2VsZWN0OnVfdCxzZWxlY3RBbGw6aF90LGZpbHRlcjpmX3QsZGF0YTpnX3QsZW50ZXI6cF90LGV4aXQ6X190LGpvaW46eV90LG1lcmdlOnZfdCxvcmRlcjp4X3Qsc29ydDpiX3QsY2FsbDp3X3Qsbm9kZXM6U190LG5vZGU6TV90LHNpemU6RV90LGVtcHR5OlRfdCxlYWNoOkNfdCxhdHRyOkFfdCxzdHlsZTpQX3QscHJvcGVydHk6SV90LGNsYXNzZWQ6RF90LHRleHQ6T190LGh0bWw6el90LHJhaXNlOkZfdCxsb3dlcjpCX3QsYXBwZW5kOkhfdCxpbnNlcnQ6Vl90LHJlbW92ZTpVX3QsY2xvbmU6cV90LGRhdHVtOkdfdCxvbjpYX3QsZGlzcGF0Y2g6S190fTt2YXIgUGg9Wl90O2Z1bmN0aW9uIEh0KGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/bmV3IERuKFtbZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgRG4oW1tlXV0sd0UpfWZ1bmN0aW9uIEpfdChlKXtyZXR1cm4gSHQoUm0oZSkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKX12YXIgajJlPTA7ZnVuY3Rpb24gSjkoKXtyZXR1cm4gbmV3IFpXfWZ1bmN0aW9uIFpXKCl7dGhpcy5fPSJAIisoKytqMmUpLnRvU3RyaW5nKDM2KX1aVy5wcm90b3R5cGU9SjkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpaVyxnZXQ6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMuXzshKHQgaW4gZSk7KWlmKCEoZT1lLnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gZVt0XX0sc2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdGhpcy5fXT10fSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuXyBpbiBlJiZkZWxldGUgZVt0aGlzLl9dfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTtmdW5jdGlvbiBoYigpe2Zvcih2YXIgZT1xdCx0O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIERtKGUsdCl7dmFyIHI9ZS5vd25lclNWR0VsZW1lbnR8fGU7aWYoci5jcmVhdGVTVkdQb2ludCl7dmFyIG49ci5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBuLng9dC5jbGllbnRYLG4ueT10LmNsaWVudFksbj1uLm1hdHJpeFRyYW5zZm9ybShlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW24ueCxuLnldfXZhciBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW3QuY2xpZW50WC1pLmxlZnQtZS5jbGllbnRMZWZ0LHQuY2xpZW50WS1pLnRvcC1lLmNsaWVudFRvcF19ZnVuY3Rpb24gT28oZSl7dmFyIHQ9aGIoKTtyZXR1cm4gdC5jaGFuZ2VkVG91Y2hlcyYmKHQ9dC5jaGFuZ2VkVG91Y2hlc1swXSksRG0oZSx0KX1mdW5jdGlvbiBFcChlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciP25ldyBEbihbZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBEbihbZT09bnVsbD9bXTplXSx3RSl9ZnVuY3Rpb24gVHAoZSx0LHIpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKHI9dCx0PWhiKCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgbj0wLGk9dD90Lmxlbmd0aDowLG87bjxpOysrbilpZigobz10W25dKS5pZGVudGlmaWVyPT09cilyZXR1cm4gRG0oZSxvKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBRX3QoZSx0KXt0PT1udWxsJiYodD1oYigpLnRvdWNoZXMpO2Zvcih2YXIgcj0wLG49dD90Lmxlbmd0aDowLGk9bmV3IEFycmF5KG4pO3I8bjsrK3IpaVtyXT1EbShlLHRbcl0pO3JldHVybiBpfWZ1bmN0aW9uIFE5KCl7cXQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gT20oKXtxdC5wcmV2ZW50RGVmYXVsdCgpLHF0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHptKGUpe3ZhciB0PWUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHI9SHQoZSkub24oImRyYWdzdGFydC5kcmFnIixPbSwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gdD9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixPbSwhMCk6KHQuX19ub3NlbGVjdD10LnN0eWxlLk1velVzZXJTZWxlY3QsdC5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gRm0oZSx0KXt2YXIgcj1lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuPUh0KGUpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7dCYmKG4ub24oImNsaWNrLmRyYWciLE9tLCEwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bi5vbigiY2xpY2suZHJhZyIsbnVsbCl9LDApKSwib25zZWxlY3RzdGFydCJpbiByP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLG51bGwpOihyLnN0eWxlLk1velVzZXJTZWxlY3Q9ci5fX25vc2VsZWN0LGRlbGV0ZSByLl9fbm9zZWxlY3QpfWZ1bmN0aW9uIFNFKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiBNRShlLHQscixuLGksbyxhLHMsbCxjKXt0aGlzLnRhcmdldD1lLHRoaXMudHlwZT10LHRoaXMuc3ViamVjdD1yLHRoaXMuaWRlbnRpZmllcj1uLHRoaXMuYWN0aXZlPWksdGhpcy54PW8sdGhpcy55PWEsdGhpcy5keD1zLHRoaXMuZHk9bCx0aGlzLl89Y31NRS5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIGU9PT10aGlzLl8/dGhpczplfTtmdW5jdGlvbiBYMmUoKXtyZXR1cm4hcXQuY3RybEtleSYmIXF0LmJ1dHRvbn1mdW5jdGlvbiAkMmUoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfWZ1bmN0aW9uIEsyZShlKXtyZXR1cm4gZT09bnVsbD97eDpxdC54LHk6cXQueX06ZX1mdW5jdGlvbiBaMmUoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gZmIoKXt2YXIgZT1YMmUsdD0kMmUscj1LMmUsbj1aMmUsaT17fSxvPXlzKCJzdGFydCIsImRyYWciLCJlbmQiKSxhPTAscyxsLGMsdSxoPTA7ZnVuY3Rpb24gZihTKXtTLm9uKCJtb3VzZWRvd24uZHJhZyIscCkuZmlsdGVyKG4pLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLF8pLm9uKCJ0b3VjaG1vdmUuZHJhZyIseSkub24oInRvdWNoZW5kLmRyYWcgdG91Y2hjYW5jZWwuZHJhZyIseCkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIHAoKXtpZighKHV8fCFlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpe3ZhciBTPWIoIm1vdXNlIix0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxPbyx0aGlzLGFyZ3VtZW50cyk7IVN8fChIdChxdC52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWciLGQsITApLm9uKCJtb3VzZXVwLmRyYWciLGcsITApLHptKHF0LnZpZXcpLFE5KCksYz0hMSxzPXF0LmNsaWVudFgsbD1xdC5jbGllbnRZLFMoInN0YXJ0IikpfX1mdW5jdGlvbiBkKCl7aWYoT20oKSwhYyl7dmFyIFM9cXQuY2xpZW50WC1zLEM9cXQuY2xpZW50WS1sO2M9UypTK0MqQz5ofWkubW91c2UoImRyYWciKX1mdW5jdGlvbiBnKCl7SHQocXQudmlldykub24oIm1vdXNlbW92ZS5kcmFnIG1vdXNldXAuZHJhZyIsbnVsbCksRm0ocXQudmlldyxjKSxPbSgpLGkubW91c2UoImVuZCIpfWZ1bmN0aW9uIF8oKXtpZighIWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgUz1xdC5jaGFuZ2VkVG91Y2hlcyxDPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLFA9Uy5sZW5ndGgsayxPO2ZvcihrPTA7azxQOysraykoTz1iKFNba10uaWRlbnRpZmllcixDLFRwLHRoaXMsYXJndW1lbnRzKSkmJihROSgpLE8oInN0YXJ0IikpfX1mdW5jdGlvbiB5KCl7dmFyIFM9cXQuY2hhbmdlZFRvdWNoZXMsQz1TLmxlbmd0aCxQLGs7Zm9yKFA9MDtQPEM7KytQKShrPWlbU1tQXS5pZGVudGlmaWVyXSkmJihPbSgpLGsoImRyYWciKSl9ZnVuY3Rpb24geCgpe3ZhciBTPXF0LmNoYW5nZWRUb3VjaGVzLEM9Uy5sZW5ndGgsUCxrO2Zvcih1JiZjbGVhclRpbWVvdXQodSksdT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dT1udWxsfSw1MDApLFA9MDtQPEM7KytQKShrPWlbU1tQXS5pZGVudGlmaWVyXSkmJihROSgpLGsoImVuZCIpKX1mdW5jdGlvbiBiKFMsQyxQLGssTyl7dmFyIEQ9UChDLFMpLEIsSSxMLFI9by5jb3B5KCk7aWYoISFNcChuZXcgTUUoZiwiYmVmb3Jlc3RhcnQiLEIsUyxhLERbMF0sRFsxXSwwLDAsUiksZnVuY3Rpb24oKXtyZXR1cm4ocXQuc3ViamVjdD1CPXIuYXBwbHkoayxPKSk9PW51bGw/ITE6KEk9Qi54LURbMF18fDAsTD1CLnktRFsxXXx8MCwhMCl9KSlyZXR1cm4gZnVuY3Rpb24gRih6KXt2YXIgVT1ELFc7c3dpdGNoKHope2Nhc2Uic3RhcnQiOmlbU109RixXPWErKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGlbU10sLS1hO2Nhc2UiZHJhZyI6RD1QKEMsUyksVz1hO2JyZWFrfU1wKG5ldyBNRShmLHosQixTLFcsRFswXStJLERbMV0rTCxEWzBdLVVbMF0sRFsxXS1VWzFdLFIpLFIuYXBwbHksUixbeixrLE9dKX19cmV0dXJuIGYuZmlsdGVyPWZ1bmN0aW9uKFMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBTPT0iZnVuY3Rpb24iP1M6U0UoISFTKSxmKTplfSxmLmNvbnRhaW5lcj1mdW5jdGlvbihTKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgUz09ImZ1bmN0aW9uIj9TOlNFKFMpLGYpOnR9LGYuc3ViamVjdD1mdW5jdGlvbihTKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgUz09ImZ1bmN0aW9uIj9TOlNFKFMpLGYpOnJ9LGYudG91Y2hhYmxlPWZ1bmN0aW9uKFMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBTPT0iZnVuY3Rpb24iP1M6U0UoISFTKSxmKTpufSxmLm9uPWZ1bmN0aW9uKCl7dmFyIFM9by5vbi5hcHBseShvLGFyZ3VtZW50cyk7cmV0dXJuIFM9PT1vP2Y6U30sZi5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKFMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPShTPStTKSpTLGYpOk1hdGguc3FydChoKX0sZn1mdW5jdGlvbiBDcChlLHQscil7ZS5wcm90b3R5cGU9dC5wcm90b3R5cGU9cixyLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gQm0oZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKTtmb3IodmFyIG4gaW4gdClyW25dPXRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24ga2goKXt9dmFyIEhtPS43LGJfPTEvSG0scGI9IlxccyooWystXT9cXGQrKVxccyoiLEVFPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLExoPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixKMmU9L14jKFswLTlhLWZdezMsOH0pJC8sUTJlPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1twYixwYixwYl0rIlxcKSQiKSx0d2U9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0xoLExoLExoXSsiXFwpJCIpLGV3ZT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW3BiLHBiLHBiLEVFXSsiXFwpJCIpLHJ3ZT1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW0xoLExoLExoLEVFXSsiXFwpJCIpLG53ZT1uZXcgUmVnRXhwKCJeaHNsXFwoIitbRUUsTGgsTGhdKyJcXCkkIiksaXdlPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbRUUsTGgsTGgsRUVdKyJcXCkkIiksdHl0PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O0NwKGtoLHRjLHtjb3B5OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsZSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmV5dCxmb3JtYXRIZXg6ZXl0LGZvcm1hdEhzbDpvd2UsZm9ybWF0UmdiOnJ5dCx0b1N0cmluZzpyeXR9KTtmdW5jdGlvbiBleXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBvd2UoKXtyZXR1cm4gc3l0KHRoaXMpLmZvcm1hdEhzbCgpfWZ1bmN0aW9uIHJ5dCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIHRjKGUpe3ZhciB0LHI7cmV0dXJuIGU9KGUrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLCh0PUoyZS5leGVjKGUpKT8ocj10WzFdLmxlbmd0aCx0PXBhcnNlSW50KHRbMV0sMTYpLHI9PT02P255dCh0KTpyPT09Mz9uZXcgJGkodD4+OCYxNXx0Pj40JjI0MCx0Pj40JjE1fHQmMjQwLCh0JjE1KTw8NHx0JjE1LDEpOnI9PT04P3RMKHQ+PjI0JjI1NSx0Pj4xNiYyNTUsdD4+OCYyNTUsKHQmMjU1KS8yNTUpOnI9PT00P3RMKHQ+PjEyJjE1fHQ+PjgmMjQwLHQ+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXx0JjI0MCwoKHQmMTUpPDw0fHQmMTUpLzI1NSk6bnVsbCk6KHQ9UTJlLmV4ZWMoZSkpP25ldyAkaSh0WzFdLHRbMl0sdFszXSwxKToodD10d2UuZXhlYyhlKSk/bmV3ICRpKHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLDEpOih0PWV3ZS5leGVjKGUpKT90TCh0WzFdLHRbMl0sdFszXSx0WzRdKToodD1yd2UuZXhlYyhlKSk/dEwodFsxXSoyNTUvMTAwLHRbMl0qMjU1LzEwMCx0WzNdKjI1NS8xMDAsdFs0XSk6KHQ9bndlLmV4ZWMoZSkpP2F5dCh0WzFdLHRbMl0vMTAwLHRbM10vMTAwLDEpOih0PWl3ZS5leGVjKGUpKT9heXQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCx0WzRdKTp0eXQuaGFzT3duUHJvcGVydHkoZSk/bnl0KHR5dFtlXSk6ZT09PSJ0cmFuc3BhcmVudCI/bmV3ICRpKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gbnl0KGUpe3JldHVybiBuZXcgJGkoZT4+MTYmMjU1LGU+PjgmMjU1LGUmMjU1LDEpfWZ1bmN0aW9uIHRMKGUsdCxyLG4pe3JldHVybiBuPD0wJiYoZT10PXI9TmFOKSxuZXcgJGkoZSx0LHIsbil9ZnVuY3Rpb24gVEUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBraHx8KGU9dGMoZSkpLGU/KGU9ZS5yZ2IoKSxuZXcgJGkoZS5yLGUuZyxlLmIsZS5vcGFjaXR5KSk6bmV3ICRpfWZ1bmN0aW9uIGx1KGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9URShlKTpuZXcgJGkoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uICRpKGUsdCxyLG4pe3RoaXMucj0rZSx0aGlzLmc9K3QsdGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn1DcCgkaSxsdSxCbShraCx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZT09bnVsbD9iXzpNYXRoLnBvdyhiXyxlKSxuZXcgJGkodGhpcy5yKmUsdGhpcy5nKmUsdGhpcy5iKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/SG06TWF0aC5wb3coSG0sZSksbmV3ICRpKHRoaXMuciplLHRoaXMuZyplLHRoaXMuYiplLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6aXl0LGZvcm1hdEhleDppeXQsZm9ybWF0UmdiOm95dCx0b1N0cmluZzpveXR9KSk7ZnVuY3Rpb24gaXl0KCl7cmV0dXJuIiMiK0pXKHRoaXMucikrSlcodGhpcy5nKStKVyh0aGlzLmIpfWZ1bmN0aW9uIG95dCgpe3ZhciBlPXRoaXMub3BhY2l0eTtyZXR1cm4gZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSksKGU9PT0xPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKGU9PT0xPyIpIjoiLCAiK2UrIikiKX1mdW5jdGlvbiBKVyhlKXtyZXR1cm4gZT1NYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKGUpfHwwKSksKGU8MTY/IjAiOiIiKStlLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBheXQoZSx0LHIsbil7cmV0dXJuIG48PTA/ZT10PXI9TmFOOnI8PTB8fHI+PTE/ZT10PU5hTjp0PD0wJiYoZT1OYU4pLG5ldyBJaChlLHQscixuKX1mdW5jdGlvbiBzeXQoZSl7aWYoZSBpbnN0YW5jZW9mIEloKXJldHVybiBuZXcgSWgoZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2Yga2h8fChlPXRjKGUpKSwhZSlyZXR1cm4gbmV3IEloO2lmKGUgaW5zdGFuY2VvZiBJaClyZXR1cm4gZTtlPWUucmdiKCk7dmFyIHQ9ZS5yLzI1NSxyPWUuZy8yNTUsbj1lLmIvMjU1LGk9TWF0aC5taW4odCxyLG4pLG89TWF0aC5tYXgodCxyLG4pLGE9TmFOLHM9by1pLGw9KG8raSkvMjtyZXR1cm4gcz8odD09PW8/YT0oci1uKS9zKyhyPG4pKjY6cj09PW8/YT0obi10KS9zKzI6YT0odC1yKS9zKzQscy89bDwuNT9vK2k6Mi1vLWksYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBJaChhLHMsbCxlLm9wYWNpdHkpfWZ1bmN0aW9uIFZtKGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9zeXQoZSk6bmV3IEloKGUsdCxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBJaChlLHQscixuKXt0aGlzLmg9K2UsdGhpcy5zPSt0LHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259Q3AoSWgsVm0sQm0oa2gse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/Yl86TWF0aC5wb3coYl8sZSksbmV3IEloKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/SG06TWF0aC5wb3coSG0sZSksbmV3IEloKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5oJTM2MCsodGhpcy5oPDApKjM2MCx0PWlzTmFOKGUpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLHI9dGhpcy5sLG49cisocjwuNT9yOjEtcikqdCxpPTIqci1uO3JldHVybiBuZXcgJGkoUVcoZT49MjQwP2UtMjQwOmUrMTIwLGksbiksUVcoZSxpLG4pLFFXKGU8MTIwP2UrMjQwOmUtMTIwLGksbiksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3BhY2l0eTtyZXR1cm4gZT1pc05hTihlKT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSksKGU9PT0xPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKyh0aGlzLnN8fDApKjEwMCsiJSwgIisodGhpcy5sfHwwKSoxMDArIiUiKyhlPT09MT8iKSI6IiwgIitlKyIpIil9fSkpO2Z1bmN0aW9uIFFXKGUsdCxyKXtyZXR1cm4oZTw2MD90KyhyLXQpKmUvNjA6ZTwxODA/cjplPDI0MD90KyhyLXQpKigyNDAtZSkvNjA6dCkqMjU1fXZhciBlTD1NYXRoLlBJLzE4MCxyTD0xODAvTWF0aC5QSTt2YXIgbkw9MTgsbHl0PS45NjQyMixjeXQ9MSx1eXQ9LjgyNTIxLGh5dD00LzI5LGRiPTYvMjksZnl0PTMqZGIqZGIsYXdlPWRiKmRiKmRiO2Z1bmN0aW9uIHB5dChlKXtpZihlIGluc3RhbmNlb2YgY3UpcmV0dXJuIG5ldyBjdShlLmwsZS5hLGUuYixlLm9wYWNpdHkpO2lmKGUgaW5zdGFuY2VvZiBSaClyZXR1cm4gX3l0KGUpO2UgaW5zdGFuY2VvZiAkaXx8KGU9VEUoZSkpO3ZhciB0PW5ZKGUucikscj1uWShlLmcpLG49blkoZS5iKSxpPXRZKCguMjIyNTA0NSp0Ky43MTY4Nzg2KnIrLjA2MDYxNjkqbikvY3l0KSxvLGE7cmV0dXJuIHQ9PT1yJiZyPT09bj9vPWE9aToobz10WSgoLjQzNjA3NDcqdCsuMzg1MDY0OSpyKy4xNDMwODA0Km4pL2x5dCksYT10WSgoLjAxMzkzMjIqdCsuMDk3MTA0NSpyKy43MTQxNzMzKm4pL3V5dCkpLG5ldyBjdSgxMTYqaS0xNiw1MDAqKG8taSksMjAwKihpLWEpLGUub3BhY2l0eSl9ZnVuY3Rpb24gZHl0KGUsdCl7cmV0dXJuIG5ldyBjdShlLDAsMCx0PT1udWxsPzE6dCl9ZnVuY3Rpb24gd18oZSx0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP3B5dChlKTpuZXcgY3UoZSx0LHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIGN1KGUsdCxyLG4pe3RoaXMubD0rZSx0aGlzLmE9K3QsdGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn1DcChjdSx3XyxCbShraCx7YnJpZ2h0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBjdSh0aGlzLmwrbkwqKGU9PW51bGw/MTplKSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IGN1KHRoaXMubC1uTCooZT09bnVsbD8xOmUpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGU9KHRoaXMubCsxNikvMTE2LHQ9aXNOYU4odGhpcy5hKT9lOmUrdGhpcy5hLzUwMCxyPWlzTmFOKHRoaXMuYik/ZTplLXRoaXMuYi8yMDA7cmV0dXJuIHQ9bHl0KmVZKHQpLGU9Y3l0KmVZKGUpLHI9dXl0KmVZKHIpLG5ldyAkaShyWSgzLjEzMzg1NjEqdC0xLjYxNjg2NjcqZS0uNDkwNjE0NipyKSxyWSgtLjk3ODc2ODQqdCsxLjkxNjE0MTUqZSsuMDMzNDU0KnIpLHJZKC4wNzE5NDUzKnQtLjIyODk5MTQqZSsxLjQwNTI0MjcqciksdGhpcy5vcGFjaXR5KX19KSk7ZnVuY3Rpb24gdFkoZSl7cmV0dXJuIGU+YXdlP01hdGgucG93KGUsMS8zKTplL2Z5dCtoeXR9ZnVuY3Rpb24gZVkoZSl7cmV0dXJuIGU+ZGI/ZSplKmU6Znl0KihlLWh5dCl9ZnVuY3Rpb24gclkoZSl7cmV0dXJuIDI1NSooZTw9LjAwMzEzMDg/MTIuOTIqZToxLjA1NSpNYXRoLnBvdyhlLDEvMi40KS0uMDU1KX1mdW5jdGlvbiBuWShlKXtyZXR1cm4oZS89MjU1KTw9LjA0MDQ1P2UvMTIuOTI6TWF0aC5wb3coKGUrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBteXQoZSl7aWYoZSBpbnN0YW5jZW9mIFJoKXJldHVybiBuZXcgUmgoZS5oLGUuYyxlLmwsZS5vcGFjaXR5KTtpZihlIGluc3RhbmNlb2YgY3V8fChlPXB5dChlKSksZS5hPT09MCYmZS5iPT09MClyZXR1cm4gbmV3IFJoKE5hTiwwPGUubCYmZS5sPDEwMD8wOk5hTixlLmwsZS5vcGFjaXR5KTt2YXIgdD1NYXRoLmF0YW4yKGUuYixlLmEpKnJMO3JldHVybiBuZXcgUmgodDwwP3QrMzYwOnQsTWF0aC5zcXJ0KGUuYSplLmErZS5iKmUuYiksZS5sLGUub3BhY2l0eSl9ZnVuY3Rpb24gZ3l0KGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9teXQoZSk6bmV3IFJoKHIsdCxlLG49PW51bGw/MTpuKX1mdW5jdGlvbiBtYihlLHQscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/bXl0KGUpOm5ldyBSaChlLHQscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gUmgoZSx0LHIsbil7dGhpcy5oPStlLHRoaXMuYz0rdCx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufWZ1bmN0aW9uIF95dChlKXtpZihpc05hTihlLmgpKXJldHVybiBuZXcgY3UoZS5sLDAsMCxlLm9wYWNpdHkpO3ZhciB0PWUuaCplTDtyZXR1cm4gbmV3IGN1KGUubCxNYXRoLmNvcyh0KSplLmMsTWF0aC5zaW4odCkqZS5jLGUub3BhY2l0eSl9Q3AoUmgsbWIsQm0oa2gse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUmgodGhpcy5oLHRoaXMuYyx0aGlzLmwrbkwqKGU9PW51bGw/MTplKSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBSaCh0aGlzLmgsdGhpcy5jLHRoaXMubC1uTCooZT09bnVsbD8xOmUpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBfeXQodGhpcykucmdiKCl9fSkpO3ZhciBieXQ9LS4xNDg2MSxpWT0xLjc4Mjc3LG9ZPS0uMjkyMjcsaUw9LS45MDY0OSxDRT0xLjk3Mjk0LHl5dD1DRSppTCx2eXQ9Q0UqaVkseHl0PWlZKm9ZLWlMKmJ5dDtmdW5jdGlvbiBzd2UoZSl7aWYoZSBpbnN0YW5jZW9mIFNfKXJldHVybiBuZXcgU18oZS5oLGUucyxlLmwsZS5vcGFjaXR5KTtlIGluc3RhbmNlb2YgJGl8fChlPVRFKGUpKTt2YXIgdD1lLnIvMjU1LHI9ZS5nLzI1NSxuPWUuYi8yNTUsaT0oeHl0Km4reXl0KnQtdnl0KnIpLyh4eXQreXl0LXZ5dCksbz1uLWksYT0oQ0UqKHItaSktb1kqbykvaUwscz1NYXRoLnNxcnQoYSphK28qbykvKENFKmkqKDEtaSkpLGw9cz9NYXRoLmF0YW4yKGEsbykqckwtMTIwOk5hTjtyZXR1cm4gbmV3IFNfKGw8MD9sKzM2MDpsLHMsaSxlLm9wYWNpdHkpfWZ1bmN0aW9uIHNhKGUsdCxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9zd2UoZSk6bmV3IFNfKGUsdCxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBTXyhlLHQscixuKXt0aGlzLmg9K2UsdGhpcy5zPSt0LHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259Q3AoU18sc2EsQm0oa2gse2JyaWdodGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/Yl86TWF0aC5wb3coYl8sZSksbmV3IFNfKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWU9PW51bGw/SG06TWF0aC5wb3coSG0sZSksbmV3IFNfKHRoaXMuaCx0aGlzLnMsdGhpcy5sKmUsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIGU9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSplTCx0PSt0aGlzLmwscj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKnQqKDEtdCksbj1NYXRoLmNvcyhlKSxpPU1hdGguc2luKGUpO3JldHVybiBuZXcgJGkoMjU1Kih0K3IqKGJ5dCpuK2lZKmkpKSwyNTUqKHQrcioob1kqbitpTCppKSksMjU1Kih0K3IqKENFKm4pKSx0aGlzLm9wYWNpdHkpfX0pKTtmdW5jdGlvbiBhWShlLHQscixuLGkpe3ZhciBvPWUqZSxhPW8qZTtyZXR1cm4oKDEtMyplKzMqby1hKSp0Kyg0LTYqbyszKmEpKnIrKDErMyplKzMqby0zKmEpKm4rYSppKS82fWZ1bmN0aW9uIG9MKGUpe3ZhciB0PWUubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBuPXI8PTA/cj0wOnI+PTE/KHI9MSx0LTEpOk1hdGguZmxvb3Iocip0KSxpPWVbbl0sbz1lW24rMV0sYT1uPjA/ZVtuLTFdOjIqaS1vLHM9bjx0LTE/ZVtuKzJdOjIqby1pO3JldHVybiBhWSgoci1uL3QpKnQsYSxpLG8scyl9fWZ1bmN0aW9uIGFMKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1NYXRoLmZsb29yKCgociU9MSk8MD8rK3I6cikqdCksaT1lWyhuK3QtMSkldF0sbz1lW24ldF0sYT1lWyhuKzEpJXRdLHM9ZVsobisyKSV0XTtyZXR1cm4gYVkoKHItbi90KSp0LGksbyxhLHMpfX1mdW5jdGlvbiBnYihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19ZnVuY3Rpb24gd3l0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlK3IqdH19ZnVuY3Rpb24gbHdlKGUsdCxyKXtyZXR1cm4gZT1NYXRoLnBvdyhlLHIpLHQ9TWF0aC5wb3codCxyKS1lLHI9MS9yLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnBvdyhlK24qdCxyKX19ZnVuY3Rpb24gVW0oZSx0KXt2YXIgcj10LWU7cmV0dXJuIHI/d3l0KGUscj4xODB8fHI8LTE4MD9yLTM2MCpNYXRoLnJvdW5kKHIvMzYwKTpyKTpnYihpc05hTihlKT90OmUpfWZ1bmN0aW9uIFN5dChlKXtyZXR1cm4oZT0rZSk9PTE/Wm46ZnVuY3Rpb24odCxyKXtyZXR1cm4gci10P2x3ZSh0LHIsZSk6Z2IoaXNOYU4odCk/cjp0KX19ZnVuY3Rpb24gWm4oZSx0KXt2YXIgcj10LWU7cmV0dXJuIHI/d3l0KGUscik6Z2IoaXNOYU4oZSk/dDplKX12YXIgcW09ZnVuY3Rpb24gZSh0KXt2YXIgcj1TeXQodCk7ZnVuY3Rpb24gbihpLG8pe3ZhciBhPXIoKGk9bHUoaSkpLnIsKG89bHUobykpLnIpLHM9cihpLmcsby5nKSxsPXIoaS5iLG8uYiksYz1abihpLm9wYWNpdHksby5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIGkucj1hKHUpLGkuZz1zKHUpLGkuYj1sKHUpLGkub3BhY2l0eT1jKHUpLGkrIiJ9fXJldHVybiBuLmdhbW1hPWUsbn0oMSk7ZnVuY3Rpb24gTXl0KGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgcj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPW5ldyBBcnJheShyKSxvPW5ldyBBcnJheShyKSxhLHM7Zm9yKGE9MDthPHI7KythKXM9bHUodFthXSksblthXT1zLnJ8fDAsaVthXT1zLmd8fDAsb1thXT1zLmJ8fDA7cmV0dXJuIG49ZShuKSxpPWUoaSksbz1lKG8pLHMub3BhY2l0eT0xLGZ1bmN0aW9uKGwpe3JldHVybiBzLnI9bihsKSxzLmc9aShsKSxzLmI9byhsKSxzKyIifX19dmFyIHNMPU15dChvTCksRXl0PU15dChhTCk7ZnVuY3Rpb24gX2IoZSx0KXt0fHwodD1bXSk7dmFyIHI9ZT9NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCk6MCxuPXQuc2xpY2UoKSxpO3JldHVybiBmdW5jdGlvbihvKXtmb3IoaT0wO2k8cjsrK2kpbltpXT1lW2ldKigxLW8pK3RbaV0qbztyZXR1cm4gbn19ZnVuY3Rpb24gbEwoZSl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhlKSYmIShlIGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIFR5dChlLHQpe3JldHVybihsTCh0KT9fYjpzWSkoZSx0KX1mdW5jdGlvbiBzWShlLHQpe3ZhciByPXQ/dC5sZW5ndGg6MCxuPWU/TWF0aC5taW4ocixlLmxlbmd0aCk6MCxpPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShyKSxhO2ZvcihhPTA7YTxuOysrYSlpW2FdPWVjKGVbYV0sdFthXSk7Zm9yKDthPHI7KythKW9bYV09dFthXTtyZXR1cm4gZnVuY3Rpb24ocyl7Zm9yKGE9MDthPG47KythKW9bYV09aVthXShzKTtyZXR1cm4gb319ZnVuY3Rpb24gY0woZSx0KXt2YXIgcj1uZXcgRGF0ZTtyZXR1cm4gZT0rZSx0PSt0LGZ1bmN0aW9uKG4pe3JldHVybiByLnNldFRpbWUoZSooMS1uKSt0Km4pLHJ9fWZ1bmN0aW9uIE9pKGUsdCl7cmV0dXJuIGU9K2UsdD0rdCxmdW5jdGlvbihyKXtyZXR1cm4gZSooMS1yKSt0KnJ9fWZ1bmN0aW9uIHVMKGUsdCl7dmFyIHI9e30sbj17fSxpOyhlPT09bnVsbHx8dHlwZW9mIGUhPSJvYmplY3QiKSYmKGU9e30pLCh0PT09bnVsbHx8dHlwZW9mIHQhPSJvYmplY3QiKSYmKHQ9e30pO2ZvcihpIGluIHQpaSBpbiBlP3JbaV09ZWMoZVtpXSx0W2ldKTpuW2ldPXRbaV07cmV0dXJuIGZ1bmN0aW9uKG8pe2ZvcihpIGluIHIpbltpXT1yW2ldKG8pO3JldHVybiBufX12YXIgY1k9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLGxZPW5ldyBSZWdFeHAoY1kuc291cmNlLCJnIik7ZnVuY3Rpb24gY3dlKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiB1d2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpKyIifX1mdW5jdGlvbiB5YihlLHQpe3ZhciByPWNZLmxhc3RJbmRleD1sWS5sYXN0SW5kZXg9MCxuLGksbyxhPS0xLHM9W10sbD1bXTtmb3IoZT1lKyIiLHQ9dCsiIjsobj1jWS5leGVjKGUpKSYmKGk9bFkuZXhlYyh0KSk7KShvPWkuaW5kZXgpPnImJihvPXQuc2xpY2UocixvKSxzW2FdP3NbYV0rPW86c1srK2FdPW8pLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4Ok9pKG4saSl9KSkscj1sWS5sYXN0SW5kZXg7cmV0dXJuIHI8dC5sZW5ndGgmJihvPXQuc2xpY2Uociksc1thXT9zW2FdKz1vOnNbKythXT1vKSxzLmxlbmd0aDwyP2xbMF0/dXdlKGxbMF0ueCk6Y3dlKHQpOih0PWwubGVuZ3RoLGZ1bmN0aW9uKGMpe2Zvcih2YXIgdT0wLGg7dTx0OysrdSlzWyhoPWxbdV0pLmldPWgueChjKTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIGVjKGUsdCl7dmFyIHI9dHlwZW9mIHQsbjtyZXR1cm4gdD09bnVsbHx8cj09PSJib29sZWFuIj9nYih0KToocj09PSJudW1iZXIiP09pOnI9PT0ic3RyaW5nIj8obj10Yyh0KSk/KHQ9bixxbSk6eWI6dCBpbnN0YW5jZW9mIHRjP3FtOnQgaW5zdGFuY2VvZiBEYXRlP2NMOmxMKHQpP19iOkFycmF5LmlzQXJyYXkodCk/c1k6dHlwZW9mIHQudmFsdWVPZiE9ImZ1bmN0aW9uIiYmdHlwZW9mIHQudG9TdHJpbmchPSJmdW5jdGlvbiJ8fGlzTmFOKHQpP3VMOk9pKShlLHQpfWZ1bmN0aW9uIEN5dChlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGVbTWF0aC5tYXgoMCxNYXRoLm1pbih0LTEsTWF0aC5mbG9vcihyKnQpKSldfX1mdW5jdGlvbiBBeXQoZSx0KXt2YXIgcj1VbSgrZSwrdCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPXIobik7cmV0dXJuIGktMzYwKk1hdGguZmxvb3IoaS8zNjApfX1mdW5jdGlvbiBoTChlLHQpe3JldHVybiBlPStlLHQ9K3QsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucm91bmQoZSooMS1yKSt0KnIpfX12YXIgUHl0PTE4MC9NYXRoLlBJLGZMPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIHVZKGUsdCxyLG4saSxvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KGUqZSt0KnQpKSYmKGUvPWEsdC89YSksKGw9ZSpyK3QqbikmJihyLT1lKmwsbi09dCpsKSwocz1NYXRoLnNxcnQocipyK24qbikpJiYoci89cyxuLz1zLGwvPXMpLGUqbjx0KnImJihlPS1lLHQ9LXQsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDppLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMih0LGUpKlB5dCxza2V3WDpNYXRoLmF0YW4obCkqUHl0LHNjYWxlWDphLHNjYWxlWTpzfX12YXIgQUUsaFksSXl0LHBMO2Z1bmN0aW9uIEx5dChlKXtyZXR1cm4gZT09PSJub25lIj9mTDooQUV8fChBRT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxoWT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsSXl0PWRvY3VtZW50LmRlZmF1bHRWaWV3KSxBRS5zdHlsZS50cmFuc2Zvcm09ZSxlPUl5dC5nZXRDb21wdXRlZFN0eWxlKGhZLmFwcGVuZENoaWxkKEFFKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxoWS5yZW1vdmVDaGlsZChBRSksZT1lLnNsaWNlKDcsLTEpLnNwbGl0KCIsIiksdVkoK2VbMF0sK2VbMV0sK2VbMl0sK2VbM10sK2VbNF0sK2VbNV0pKX1mdW5jdGlvbiBreXQoZSl7cmV0dXJuIGU9PW51bGw/Zkw6KHBMfHwocEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSkscEwuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLGUpLChlPXBMLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpPyhlPWUubWF0cml4LHVZKGUuYSxlLmIsZS5jLGUuZCxlLmUsZS5mKSk6ZkwpfWZ1bmN0aW9uIFJ5dChlLHQscixuKXtmdW5jdGlvbiBpKGMpe3JldHVybiBjLmxlbmd0aD9jLnBvcCgpKyIgIjoiIn1mdW5jdGlvbiBvKGMsdSxoLGYscCxkKXtpZihjIT09aHx8dSE9PWYpe3ZhciBnPXAucHVzaCgidHJhbnNsYXRlKCIsbnVsbCx0LG51bGwscik7ZC5wdXNoKHtpOmctNCx4Ok9pKGMsaCl9LHtpOmctMix4Ok9pKHUsZil9KX1lbHNlKGh8fGYpJiZwLnB1c2goInRyYW5zbGF0ZSgiK2grdCtmK3IpfWZ1bmN0aW9uIGEoYyx1LGgsZil7YyE9PXU/KGMtdT4xODA/dSs9MzYwOnUtYz4xODAmJihjKz0zNjApLGYucHVzaCh7aTpoLnB1c2goaShoKSsicm90YXRlKCIsbnVsbCxuKS0yLHg6T2koYyx1KX0pKTp1JiZoLnB1c2goaShoKSsicm90YXRlKCIrdStuKX1mdW5jdGlvbiBzKGMsdSxoLGYpe2MhPT11P2YucHVzaCh7aTpoLnB1c2goaShoKSsic2tld1goIixudWxsLG4pLTIseDpPaShjLHUpfSk6dSYmaC5wdXNoKGkoaCkrInNrZXdYKCIrdStuKX1mdW5jdGlvbiBsKGMsdSxoLGYscCxkKXtpZihjIT09aHx8dSE9PWYpe3ZhciBnPXAucHVzaChpKHApKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTtkLnB1c2goe2k6Zy00LHg6T2koYyxoKX0se2k6Zy0yLHg6T2kodSxmKX0pfWVsc2UoaCE9PTF8fGYhPT0xKSYmcC5wdXNoKGkocCkrInNjYWxlKCIraCsiLCIrZisiKSIpfXJldHVybiBmdW5jdGlvbihjLHUpe3ZhciBoPVtdLGY9W107cmV0dXJuIGM9ZShjKSx1PWUodSksbyhjLnRyYW5zbGF0ZVgsYy50cmFuc2xhdGVZLHUudHJhbnNsYXRlWCx1LnRyYW5zbGF0ZVksaCxmKSxhKGMucm90YXRlLHUucm90YXRlLGgsZikscyhjLnNrZXdYLHUuc2tld1gsaCxmKSxsKGMuc2NhbGVYLGMuc2NhbGVZLHUuc2NhbGVYLHUuc2NhbGVZLGgsZiksYz11PW51bGwsZnVuY3Rpb24ocCl7Zm9yKHZhciBkPS0xLGc9Zi5sZW5ndGgsXzsrK2Q8ZzspaFsoXz1mW2RdKS5pXT1fLngocCk7cmV0dXJuIGguam9pbigiIil9fX12YXIgZEw9Unl0KEx5dCwicHgsICIsInB4KSIsImRlZykiKSxtTD1SeXQoa3l0LCIsICIsIikiLCIpIik7dmFyIFBFPU1hdGguU1FSVDIsZlk9MixOeXQ9NCxod2U9MWUtMTI7ZnVuY3Rpb24gRHl0KGUpe3JldHVybigoZT1NYXRoLmV4cChlKSkrMS9lKS8yfWZ1bmN0aW9uIGZ3ZShlKXtyZXR1cm4oKGU9TWF0aC5leHAoZSkpLTEvZSkvMn1mdW5jdGlvbiBwd2UoZSl7cmV0dXJuKChlPU1hdGguZXhwKDIqZSkpLTEpLyhlKzEpfWZ1bmN0aW9uIGdMKGUsdCl7dmFyIHI9ZVswXSxuPWVbMV0saT1lWzJdLG89dFswXSxhPXRbMV0scz10WzJdLGw9by1yLGM9YS1uLHU9bCpsK2MqYyxoLGY7aWYodTxod2UpZj1NYXRoLmxvZyhzL2kpL1BFLGg9ZnVuY3Rpb24oeCl7cmV0dXJuW3IreCpsLG4reCpjLGkqTWF0aC5leHAoUEUqeCpmKV19O2Vsc2V7dmFyIHA9TWF0aC5zcXJ0KHUpLGQ9KHMqcy1pKmkrTnl0KnUpLygyKmkqZlkqcCksZz0ocypzLWkqaS1OeXQqdSkvKDIqcypmWSpwKSxfPU1hdGgubG9nKE1hdGguc3FydChkKmQrMSktZCkseT1NYXRoLmxvZyhNYXRoLnNxcnQoZypnKzEpLWcpO2Y9KHktXykvUEUsaD1mdW5jdGlvbih4KXt2YXIgYj14KmYsUz1EeXQoXyksQz1pLyhmWSpwKSooUypwd2UoUEUqYitfKS1md2UoXykpO3JldHVybltyK0MqbCxuK0MqYyxpKlMvRHl0KFBFKmIrXyldfX1yZXR1cm4gaC5kdXJhdGlvbj1mKjFlMyxofWZ1bmN0aW9uIE95dChlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbj1lKCh0PVZtKHQpKS5oLChyPVZtKHIpKS5oKSxpPVpuKHQucyxyLnMpLG89Wm4odC5sLHIubCksYT1abih0Lm9wYWNpdHksci5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuIHQuaD1uKHMpLHQucz1pKHMpLHQubD1vKHMpLHQub3BhY2l0eT1hKHMpLHQrIiJ9fX12YXIgenl0PU95dChVbSksRnl0PU95dChabik7ZnVuY3Rpb24gTV8oZSx0KXt2YXIgcj1abigoZT13XyhlKSkubCwodD13Xyh0KSkubCksbj1abihlLmEsdC5hKSxpPVpuKGUuYix0LmIpLG89Wm4oZS5vcGFjaXR5LHQub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBlLmw9cihhKSxlLmE9bihhKSxlLmI9aShhKSxlLm9wYWNpdHk9byhhKSxlKyIifX1mdW5jdGlvbiBCeXQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7dmFyIG49ZSgodD1tYih0KSkuaCwocj1tYihyKSkuaCksaT1abih0LmMsci5jKSxvPVpuKHQubCxyLmwpLGE9Wm4odC5vcGFjaXR5LHIub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiB0Lmg9bihzKSx0LmM9aShzKSx0Lmw9byhzKSx0Lm9wYWNpdHk9YShzKSx0KyIifX19dmFyIEh5dD1CeXQoVW0pLFZ5dD1CeXQoWm4pO2Z1bmN0aW9uIFV5dChlKXtyZXR1cm4gZnVuY3Rpb24gdChyKXtyPStyO2Z1bmN0aW9uIG4oaSxvKXt2YXIgYT1lKChpPXNhKGkpKS5oLChvPXNhKG8pKS5oKSxzPVpuKGkucyxvLnMpLGw9Wm4oaS5sLG8ubCksYz1abihpLm9wYWNpdHksby5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odSl7cmV0dXJuIGkuaD1hKHUpLGkucz1zKHUpLGkubD1sKE1hdGgucG93KHUscikpLGkub3BhY2l0eT1jKHUpLGkrIiJ9fXJldHVybiBuLmdhbW1hPXQsbn0oMSl9dmFyIHF5dD1VeXQoVW0pLEVfPVV5dChabik7ZnVuY3Rpb24gcFkoZSx0KXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLTEsaT10WzBdLG89bmV3IEFycmF5KG48MD8wOm4pO3I8bjspb1tyXT1lKGksaT10Wysrcl0pO3JldHVybiBmdW5jdGlvbihhKXt2YXIgcz1NYXRoLm1heCgwLE1hdGgubWluKG4tMSxNYXRoLmZsb29yKGEqPW4pKSk7cmV0dXJuIG9bc10oYS1zKX19ZnVuY3Rpb24gR3l0KGUsdCl7Zm9yKHZhciByPW5ldyBBcnJheSh0KSxuPTA7bjx0OysrbilyW25dPWUobi8odC0xKSk7cmV0dXJuIHJ9a20oKTt2YXIgdmI9MCxMRT0wLElFPTAsWXl0PTFlMyxfTCxrRSx5TD0wLFRfPTAsdkw9MCxSRT10eXBlb2YgcGVyZm9ybWFuY2U9PSJvYmplY3QiJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxqeXQ9dHlwZW9mIHdpbmRvdz09Im9iamVjdCImJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24oZSl7c2V0VGltZW91dChlLDE3KX07ZnVuY3Rpb24gQXAoKXtyZXR1cm4gVF98fChqeXQoZHdlKSxUXz1SRS5ub3coKSt2TCl9ZnVuY3Rpb24gZHdlKCl7VF89MH1mdW5jdGlvbiBDXygpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9Q18ucHJvdG90eXBlPUFfLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Q18scmVzdGFydDpmdW5jdGlvbihlLHQscil7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtyPShyPT1udWxsP0FwKCk6K3IpKyh0PT1udWxsPzA6K3QpLCF0aGlzLl9uZXh0JiZrRSE9PXRoaXMmJihrRT9rRS5fbmV4dD10aGlzOl9MPXRoaXMsa0U9dGhpcyksdGhpcy5fY2FsbD1lLHRoaXMuX3RpbWU9cixkWSgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxkWSgpKX19O2Z1bmN0aW9uIEFfKGUsdCxyKXt2YXIgbj1uZXcgQ187cmV0dXJuIG4ucmVzdGFydChlLHQsciksbn1mdW5jdGlvbiBtWSgpe0FwKCksKyt2Yjtmb3IodmFyIGU9X0wsdDtlOykodD1UXy1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tdmJ9ZnVuY3Rpb24gV3l0KCl7VF89KHlMPVJFLm5vdygpKSt2TCx2Yj1MRT0wO3RyeXttWSgpfWZpbmFsbHl7dmI9MCxnd2UoKSxUXz0wfX1mdW5jdGlvbiBtd2UoKXt2YXIgZT1SRS5ub3coKSx0PWUteUw7dD5ZeXQmJih2TC09dCx5TD1lKX1mdW5jdGlvbiBnd2UoKXtmb3IodmFyIGUsdD1fTCxyLG49MS8wO3Q7KXQuX2NhbGw/KG4+dC5fdGltZSYmKG49dC5fdGltZSksZT10LHQ9dC5fbmV4dCk6KHI9dC5fbmV4dCx0Ll9uZXh0PW51bGwsdD1lP2UuX25leHQ9cjpfTD1yKTtrRT1lLGRZKG4pfWZ1bmN0aW9uIGRZKGUpe2lmKCF2Yil7TEUmJihMRT1jbGVhclRpbWVvdXQoTEUpKTt2YXIgdD1lLVRfO3Q+MjQ/KGU8MS8wJiYoTEU9c2V0VGltZW91dChXeXQsZS1SRS5ub3coKS12TCkpLElFJiYoSUU9Y2xlYXJJbnRlcnZhbChJRSkpKTooSUV8fCh5TD1SRS5ub3coKSxJRT1zZXRJbnRlcnZhbChtd2UsWXl0KSksdmI9MSxqeXQoV3l0KSl9fWZ1bmN0aW9uIE5FKGUsdCxyKXt2YXIgbj1uZXcgQ187cmV0dXJuIHQ9dD09bnVsbD8wOit0LG4ucmVzdGFydChmdW5jdGlvbihpKXtuLnN0b3AoKSxlKGkrdCl9LHQsciksbn1mdW5jdGlvbiBYeXQoZSx0LHIpe3ZhciBuPW5ldyBDXyxpPXQ7cmV0dXJuIHQ9PW51bGw/KG4ucmVzdGFydChlLHQsciksbik6KHQ9K3Qscj1yPT1udWxsP0FwKCk6K3Isbi5yZXN0YXJ0KGZ1bmN0aW9uIG8oYSl7YSs9aSxuLnJlc3RhcnQobyxpKz10LHIpLGUoYSl9LHQsciksbil9dmFyIF93ZT15cygic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSx5d2U9W10sS3l0PTAsYkw9MSx3TD0yLHhMPTMsJHl0PTQsU0w9NSxERT02O2Z1bmN0aW9uIEdtKGUsdCxyLG4saSxvKXt2YXIgYT1lLl9fdHJhbnNpdGlvbjtpZighYSllLl9fdHJhbnNpdGlvbj17fTtlbHNlIGlmKHIgaW4gYSlyZXR1cm47dndlKGUscix7bmFtZTp0LGluZGV4Om4sZ3JvdXA6aSxvbjpfd2UsdHdlZW46eXdlLHRpbWU6by50aW1lLGRlbGF5Om8uZGVsYXksZHVyYXRpb246by5kdXJhdGlvbixlYXNlOm8uZWFzZSx0aW1lcjpudWxsLHN0YXRlOkt5dH0pfWZ1bmN0aW9uIE9FKGUsdCl7dmFyIHI9S2koZSx0KTtpZihyLnN0YXRlPkt5dCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiByfWZ1bmN0aW9uIERhKGUsdCl7dmFyIHI9S2koZSx0KTtpZihyLnN0YXRlPnhMKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiByfWZ1bmN0aW9uIEtpKGUsdCl7dmFyIHI9ZS5fX3RyYW5zaXRpb247aWYoIXJ8fCEocj1yW3RdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIHJ9ZnVuY3Rpb24gdndlKGUsdCxyKXt2YXIgbj1lLl9fdHJhbnNpdGlvbixpO25bdF09cixyLnRpbWVyPUFfKG8sMCxyLnRpbWUpO2Z1bmN0aW9uIG8oYyl7ci5zdGF0ZT1iTCxyLnRpbWVyLnJlc3RhcnQoYSxyLmRlbGF5LHIudGltZSksci5kZWxheTw9YyYmYShjLXIuZGVsYXkpfWZ1bmN0aW9uIGEoYyl7dmFyIHUsaCxmLHA7aWYoci5zdGF0ZSE9PWJMKXJldHVybiBsKCk7Zm9yKHUgaW4gbilpZihwPW5bdV0scC5uYW1lPT09ci5uYW1lKXtpZihwLnN0YXRlPT09eEwpcmV0dXJuIE5FKGEpO3Auc3RhdGU9PT0keXQ/KHAuc3RhdGU9REUscC50aW1lci5zdG9wKCkscC5vbi5jYWxsKCJpbnRlcnJ1cHQiLGUsZS5fX2RhdGFfXyxwLmluZGV4LHAuZ3JvdXApLGRlbGV0ZSBuW3VdKTordTx0JiYocC5zdGF0ZT1ERSxwLnRpbWVyLnN0b3AoKSxwLm9uLmNhbGwoImNhbmNlbCIsZSxlLl9fZGF0YV9fLHAuaW5kZXgscC5ncm91cCksZGVsZXRlIG5bdV0pfWlmKE5FKGZ1bmN0aW9uKCl7ci5zdGF0ZT09PXhMJiYoci5zdGF0ZT0keXQsci50aW1lci5yZXN0YXJ0KHMsci5kZWxheSxyLnRpbWUpLHMoYykpfSksci5zdGF0ZT13TCxyLm9uLmNhbGwoInN0YXJ0IixlLGUuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSxyLnN0YXRlPT09d0wpe2ZvcihyLnN0YXRlPXhMLGk9bmV3IEFycmF5KGY9ci50d2Vlbi5sZW5ndGgpLHU9MCxoPS0xO3U8ZjsrK3UpKHA9ci50d2Vlblt1XS52YWx1ZS5jYWxsKGUsZS5fX2RhdGFfXyxyLmluZGV4LHIuZ3JvdXApKSYmKGlbKytoXT1wKTtpLmxlbmd0aD1oKzF9fWZ1bmN0aW9uIHMoYyl7Zm9yKHZhciB1PWM8ci5kdXJhdGlvbj9yLmVhc2UuY2FsbChudWxsLGMvci5kdXJhdGlvbik6KHIudGltZXIucmVzdGFydChsKSxyLnN0YXRlPVNMLDEpLGg9LTEsZj1pLmxlbmd0aDsrK2g8ZjspaVtoXS5jYWxsKGUsdSk7ci5zdGF0ZT09PVNMJiYoci5vbi5jYWxsKCJlbmQiLGUsZS5fX2RhdGFfXyxyLmluZGV4LHIuZ3JvdXApLGwoKSl9ZnVuY3Rpb24gbCgpe3Iuc3RhdGU9REUsci50aW1lci5zdG9wKCksZGVsZXRlIG5bdF07Zm9yKHZhciBjIGluIG4pcmV0dXJuO2RlbGV0ZSBlLl9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gdXUoZSx0KXt2YXIgcj1lLl9fdHJhbnNpdGlvbixuLGksbz0hMCxhO2lmKCEhcil7dD10PT1udWxsP251bGw6dCsiIjtmb3IoYSBpbiByKXtpZigobj1yW2FdKS5uYW1lIT09dCl7bz0hMTtjb250aW51ZX1pPW4uc3RhdGU+d0wmJm4uc3RhdGU8U0wsbi5zdGF0ZT1ERSxuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIixlLGUuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgclthXX1vJiZkZWxldGUgZS5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIFp5dChlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dXUodGhpcyxlKX0pfWZ1bmN0aW9uIHh3ZShlLHQpe3ZhciByLG47cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9RGEodGhpcyxlKSxvPWkudHdlZW47aWYobyE9PXIpe249cj1vO2Zvcih2YXIgYT0wLHM9bi5sZW5ndGg7YTxzOysrYSlpZihuW2FdLm5hbWU9PT10KXtuPW4uc2xpY2UoKSxuLnNwbGljZShhLDEpO2JyZWFrfX1pLnR3ZWVuPW59fWZ1bmN0aW9uIGJ3ZShlLHQscil7dmFyIG4saTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89RGEodGhpcyxlKSxhPW8udHdlZW47aWYoYSE9PW4pe2k9KG49YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6dCx2YWx1ZTpyfSxsPTAsYz1pLmxlbmd0aDtsPGM7KytsKWlmKGlbbF0ubmFtZT09PXQpe2lbbF09czticmVha31sPT09YyYmaS5wdXNoKHMpfW8udHdlZW49aX19ZnVuY3Rpb24gSnl0KGUsdCl7dmFyIHI9dGhpcy5faWQ7aWYoZSs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIG49S2kodGhpcy5ub2RlKCkscikudHdlZW4saT0wLG89bi5sZW5ndGgsYTtpPG87KytpKWlmKChhPW5baV0pLm5hbWU9PT1lKXJldHVybiBhLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKHQ9PW51bGw/eHdlOmJ3ZSkocixlLHQpKX1mdW5jdGlvbiB4YihlLHQscil7dmFyIG49ZS5faWQ7cmV0dXJuIGUuZWFjaChmdW5jdGlvbigpe3ZhciBpPURhKHRoaXMsbik7KGkudmFsdWV8fChpLnZhbHVlPXt9KSlbdF09ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxmdW5jdGlvbihpKXtyZXR1cm4gS2koaSxuKS52YWx1ZVt0XX19ZnVuY3Rpb24gTUwoZSx0KXt2YXIgcjtyZXR1cm4odHlwZW9mIHQ9PSJudW1iZXIiP09pOnQgaW5zdGFuY2VvZiB0Yz9xbToocj10Yyh0KSk/KHQ9cixxbSk6eWIpKGUsdCl9ZnVuY3Rpb24gd3dlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKGUpfX1mdW5jdGlvbiBTd2UoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpfX1mdW5jdGlvbiBNd2UoZSx0LHIpe3ZhciBuLGk9cisiIixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKGUpO3JldHVybiBhPT09aT9udWxsOmE9PT1uP286bz10KG49YSxyKX19ZnVuY3Rpb24gRXdlKGUsdCxyKXt2YXIgbixpPXIrIiIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk7cmV0dXJuIGE9PT1pP251bGw6YT09PW4/bzpvPXQobj1hLHIpfX1mdW5jdGlvbiBUd2UoZSx0LHIpe3ZhciBuLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPXIodGhpcyksbDtyZXR1cm4gcz09bnVsbD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKGUpOihhPXRoaXMuZ2V0QXR0cmlidXRlKGUpLGw9cysiIixhPT09bD9udWxsOmE9PT1uJiZsPT09aT9vOihpPWwsbz10KG49YSxzKSkpfX1mdW5jdGlvbiBDd2UoZSx0LHIpe3ZhciBuLGksbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzPXIodGhpcyksbDtyZXR1cm4gcz09bnVsbD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKTooYT10aGlzLmdldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCksbD1zKyIiLGE9PT1sP251bGw6YT09PW4mJmw9PT1pP286KGk9bCxvPXQobj1hLHMpKSl9fWZ1bmN0aW9uIFF5dChlLHQpe3ZhciByPUFoKGUpLG49cj09PSJ0cmFuc2Zvcm0iP21MOk1MO3JldHVybiB0aGlzLmF0dHJUd2VlbihlLHR5cGVvZiB0PT0iZnVuY3Rpb24iPyhyLmxvY2FsP0N3ZTpUd2UpKHIsbix4Yih0aGlzLCJhdHRyLiIrZSx0KSk6dD09bnVsbD8oci5sb2NhbD9Td2U6d3dlKShyKTooci5sb2NhbD9Fd2U6TXdlKShyLG4sdCkpfWZ1bmN0aW9uIEF3ZShlLHQpe3JldHVybiBmdW5jdGlvbihyKXt0aGlzLnNldEF0dHJpYnV0ZShlLHQuY2FsbCh0aGlzLHIpKX19ZnVuY3Rpb24gUHdlKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3RoaXMuc2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsLHQuY2FsbCh0aGlzLHIpKX19ZnVuY3Rpb24gSXdlKGUsdCl7dmFyIHIsbjtmdW5jdGlvbiBpKCl7dmFyIG89dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1uJiYocj0obj1vKSYmUHdlKGUsbykpLHJ9cmV0dXJuIGkuX3ZhbHVlPXQsaX1mdW5jdGlvbiBMd2UoZSx0KXt2YXIgcixuO2Z1bmN0aW9uIGkoKXt2YXIgbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PW4mJihyPShuPW8pJiZBd2UoZSxvKSkscn1yZXR1cm4gaS5fdmFsdWU9dCxpfWZ1bmN0aW9uIHR2dChlLHQpe3ZhciByPSJhdHRyLiIrZTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7dmFyIG49QWgoZSk7cmV0dXJuIHRoaXMudHdlZW4ociwobi5sb2NhbD9Jd2U6THdlKShuLHQpKX1mdW5jdGlvbiBrd2UoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtPRSh0aGlzLGUpLmRlbGF5PSt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gUndlKGUsdCl7cmV0dXJuIHQ9K3QsZnVuY3Rpb24oKXtPRSh0aGlzLGUpLmRlbGF5PXR9fWZ1bmN0aW9uIGV2dChlKXt2YXIgdD10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKHR5cGVvZiBlPT0iZnVuY3Rpb24iP2t3ZTpSd2UpKHQsZSkpOktpKHRoaXMubm9kZSgpLHQpLmRlbGF5fWZ1bmN0aW9uIE53ZShlLHQpe3JldHVybiBmdW5jdGlvbigpe0RhKHRoaXMsZSkuZHVyYXRpb249K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBEd2UoZSx0KXtyZXR1cm4gdD0rdCxmdW5jdGlvbigpe0RhKHRoaXMsZSkuZHVyYXRpb249dH19ZnVuY3Rpb24gcnZ0KGUpe3ZhciB0PXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgodHlwZW9mIGU9PSJmdW5jdGlvbiI/TndlOkR3ZSkodCxlKSk6S2kodGhpcy5ub2RlKCksdCkuZHVyYXRpb259ZnVuY3Rpb24gT3dlKGUsdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe0RhKHRoaXMsZSkuZWFzZT10fX1mdW5jdGlvbiBudnQoZSl7dmFyIHQ9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKE93ZSh0LGUpKTpLaSh0aGlzLm5vZGUoKSx0KS5lYXNlfWZ1bmN0aW9uIGl2dChlKXt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9Y2IoZSkpO2Zvcih2YXIgdD10aGlzLl9ncm91cHMscj10Lmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPTA7aTxyOysraSlmb3IodmFyIG89dFtpXSxhPW8ubGVuZ3RoLHM9bltpXT1bXSxsLGM9MDtjPGE7KytjKShsPW9bY10pJiZlLmNhbGwobCxsLl9fZGF0YV9fLGMsbykmJnMucHVzaChsKTtyZXR1cm4gbmV3IHpvKG4sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX1mdW5jdGlvbiBvdnQoZSl7aWYoZS5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxyPWUuX2dyb3VwcyxuPXQubGVuZ3RoLGk9ci5sZW5ndGgsbz1NYXRoLm1pbihuLGkpLGE9bmV3IEFycmF5KG4pLHM9MDtzPG87KytzKWZvcih2YXIgbD10W3NdLGM9cltzXSx1PWwubGVuZ3RoLGg9YVtzXT1uZXcgQXJyYXkodSksZixwPTA7cDx1OysrcCkoZj1sW3BdfHxjW3BdKSYmKGhbcF09Zik7Zm9yKDtzPG47KytzKWFbc109dFtzXTtyZXR1cm4gbmV3IHpvKGEsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX1mdW5jdGlvbiB6d2UoZSl7cmV0dXJuKGUrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeShmdW5jdGlvbih0KXt2YXIgcj10LmluZGV4T2YoIi4iKTtyZXR1cm4gcj49MCYmKHQ9dC5zbGljZSgwLHIpKSwhdHx8dD09PSJzdGFydCJ9KX1mdW5jdGlvbiBGd2UoZSx0LHIpe3ZhciBuLGksbz16d2UodCk/T0U6RGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLGUpLHM9YS5vbjtzIT09biYmKGk9KG49cykuY29weSgpKS5vbih0LHIpLGEub249aX19ZnVuY3Rpb24gYXZ0KGUsdCl7dmFyIHI9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9LaSh0aGlzLm5vZGUoKSxyKS5vbi5vbihlKTp0aGlzLmVhY2goRndlKHIsZSx0KSl9ZnVuY3Rpb24gQndlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIHIgaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK3IhPT1lKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX1mdW5jdGlvbiBzdnQoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsQndlKHRoaXMuX2lkKSl9ZnVuY3Rpb24gbHZ0KGUpe3ZhciB0PXRoaXMuX25hbWUscj10aGlzLl9pZDt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9Tm0oZSkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPW5ldyBBcnJheShpKSxhPTA7YTxpOysrYSlmb3IodmFyIHM9blthXSxsPXMubGVuZ3RoLGM9b1thXT1uZXcgQXJyYXkobCksdSxoLGY9MDtmPGw7KytmKSh1PXNbZl0pJiYoaD1lLmNhbGwodSx1Ll9fZGF0YV9fLGYscykpJiYoIl9fZGF0YV9fImluIHUmJihoLl9fZGF0YV9fPXUuX19kYXRhX18pLGNbZl09aCxHbShjW2ZdLHQscixmLGMsS2kodSxyKSkpO3JldHVybiBuZXcgem8obyx0aGlzLl9wYXJlbnRzLHQscil9ZnVuY3Rpb24gY3Z0KGUpe3ZhciB0PXRoaXMuX25hbWUscj10aGlzLl9pZDt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9bGIoZSkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxvPVtdLGE9W10scz0wO3M8aTsrK3MpZm9yKHZhciBsPW5bc10sYz1sLmxlbmd0aCx1LGg9MDtoPGM7KytoKWlmKHU9bFtoXSl7Zm9yKHZhciBmPWUuY2FsbCh1LHUuX19kYXRhX18saCxsKSxwLGQ9S2kodSxyKSxnPTAsXz1mLmxlbmd0aDtnPF87KytnKShwPWZbZ10pJiZHbShwLHQscixnLGYsZCk7by5wdXNoKGYpLGEucHVzaCh1KX1yZXR1cm4gbmV3IHpvKG8sYSx0LHIpfXZhciBId2U9UGgucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIHV2dCgpe3JldHVybiBuZXcgSHdlKHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiBWd2UoZSx0KXt2YXIgcixuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89U3AodGhpcyxlKSxhPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpLFNwKHRoaXMsZSkpO3JldHVybiBvPT09YT9udWxsOm89PT1yJiZhPT09bj9pOmk9dChyPW8sbj1hKX19ZnVuY3Rpb24gaHZ0KGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkoZSl9fWZ1bmN0aW9uIFV3ZShlLHQscil7dmFyIG4saT1yKyIiLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9U3AodGhpcyxlKTtyZXR1cm4gYT09PWk/bnVsbDphPT09bj9vOm89dChuPWEscil9fWZ1bmN0aW9uIHF3ZShlLHQscil7dmFyIG4saSxvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPVNwKHRoaXMsZSkscz1yKHRoaXMpLGw9cysiIjtyZXR1cm4gcz09bnVsbCYmKGw9cz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKSxTcCh0aGlzLGUpKSksYT09PWw/bnVsbDphPT09biYmbD09PWk/bzooaT1sLG89dChuPWEscykpfX1mdW5jdGlvbiBHd2UoZSx0KXt2YXIgcixuLGksbz0ic3R5bGUuIit0LGE9ImVuZC4iK28scztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1EYSh0aGlzLGUpLGM9bC5vbix1PWwudmFsdWVbb109PW51bGw/c3x8KHM9aHZ0KHQpKTp2b2lkIDA7KGMhPT1yfHxpIT09dSkmJihuPShyPWMpLmNvcHkoKSkub24oYSxpPXUpLGwub249bn19ZnVuY3Rpb24gZnZ0KGUsdCxyKXt2YXIgbj0oZSs9IiIpPT0idHJhbnNmb3JtIj9kTDpNTDtyZXR1cm4gdD09bnVsbD90aGlzLnN0eWxlVHdlZW4oZSxWd2UoZSxuKSkub24oImVuZC5zdHlsZS4iK2UsaHZ0KGUpKTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90aGlzLnN0eWxlVHdlZW4oZSxxd2UoZSxuLHhiKHRoaXMsInN0eWxlLiIrZSx0KSkpLmVhY2goR3dlKHRoaXMuX2lkLGUpKTp0aGlzLnN0eWxlVHdlZW4oZSxVd2UoZSxuLHQpLHIpLm9uKCJlbmQuc3R5bGUuIitlLG51bGwpfWZ1bmN0aW9uIFd3ZShlLHQscil7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkoZSx0LmNhbGwodGhpcyxuKSxyKX19ZnVuY3Rpb24gWXdlKGUsdCxyKXt2YXIgbixpO2Z1bmN0aW9uIG8oKXt2YXIgYT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PWkmJihuPShpPWEpJiZXd2UoZSxhLHIpKSxufXJldHVybiBvLl92YWx1ZT10LG99ZnVuY3Rpb24gcHZ0KGUsdCxyKXt2YXIgbj0ic3R5bGUuIisoZSs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYodD09bnVsbClyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihuLFl3ZShlLHQscj09bnVsbD8iIjpyKSl9ZnVuY3Rpb24gandlKGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9ZX19ZnVuY3Rpb24gWHdlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dGhpcy50ZXh0Q29udGVudD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIGR2dChlKXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsdHlwZW9mIGU9PSJmdW5jdGlvbiI/WHdlKHhiKHRoaXMsInRleHQiLGUpKTpqd2UoZT09bnVsbD8iIjplKyIiKSl9ZnVuY3Rpb24gJHdlKGUpe3JldHVybiBmdW5jdGlvbih0KXt0aGlzLnRleHRDb250ZW50PWUuY2FsbCh0aGlzLHQpfX1mdW5jdGlvbiBLd2UoZSl7dmFyIHQscjtmdW5jdGlvbiBuKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYodD0ocj1pKSYmJHdlKGkpKSx0fXJldHVybiBuLl92YWx1ZT1lLG59ZnVuY3Rpb24gbXZ0KGUpe3ZhciB0PSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKHQ9dGhpcy50d2Vlbih0KSkmJnQuX3ZhbHVlO2lmKGU9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4odCxudWxsKTtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4odCxLd2UoZSkpfWZ1bmN0aW9uIGd2dCgpe2Zvcih2YXIgZT10aGlzLl9uYW1lLHQ9dGhpcy5faWQscj1FTCgpLG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgsbz0wO288aTsrK28pZm9yKHZhciBhPW5bb10scz1hLmxlbmd0aCxsLGM9MDtjPHM7KytjKWlmKGw9YVtjXSl7dmFyIHU9S2kobCx0KTtHbShsLGUscixjLGEse3RpbWU6dS50aW1lK3UuZGVsYXkrdS5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOnUuZHVyYXRpb24sZWFzZTp1LmVhc2V9KX1yZXR1cm4gbmV3IHpvKG4sdGhpcy5fcGFyZW50cyxlLHIpfWZ1bmN0aW9uIF92dCgpe3ZhciBlLHQscj10aGlzLG49ci5faWQsaT1yLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24obyxhKXt2YXIgcz17dmFsdWU6YX0sbD17dmFsdWU6ZnVuY3Rpb24oKXstLWk9PT0wJiZvKCl9fTtyLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1EYSh0aGlzLG4pLHU9Yy5vbjt1IT09ZSYmKHQ9KGU9dSkuY29weSgpLHQuXy5jYW5jZWwucHVzaChzKSx0Ll8uaW50ZXJydXB0LnB1c2gocyksdC5fLmVuZC5wdXNoKGwpKSxjLm9uPXR9KX0pfXZhciBad2U9MDtmdW5jdGlvbiB6byhlLHQscixuKXt0aGlzLl9ncm91cHM9ZSx0aGlzLl9wYXJlbnRzPXQsdGhpcy5fbmFtZT1yLHRoaXMuX2lkPW59ZnVuY3Rpb24gVEwoZSl7cmV0dXJuIFBoKCkudHJhbnNpdGlvbihlKX1mdW5jdGlvbiBFTCgpe3JldHVybisrWndlfXZhciBiYj1QaC5wcm90b3R5cGU7em8ucHJvdG90eXBlPVRMLnByb3RvdHlwZT17Y29uc3RydWN0b3I6em8sc2VsZWN0Omx2dCxzZWxlY3RBbGw6Y3Z0LGZpbHRlcjppdnQsbWVyZ2U6b3Z0LHNlbGVjdGlvbjp1dnQsdHJhbnNpdGlvbjpndnQsY2FsbDpiYi5jYWxsLG5vZGVzOmJiLm5vZGVzLG5vZGU6YmIubm9kZSxzaXplOmJiLnNpemUsZW1wdHk6YmIuZW1wdHksZWFjaDpiYi5lYWNoLG9uOmF2dCxhdHRyOlF5dCxhdHRyVHdlZW46dHZ0LHN0eWxlOmZ2dCxzdHlsZVR3ZWVuOnB2dCx0ZXh0OmR2dCx0ZXh0VHdlZW46bXZ0LHJlbW92ZTpzdnQsdHdlZW46Snl0LGRlbGF5OmV2dCxkdXJhdGlvbjpydnQsZWFzZTpudnQsZW5kOl92dH07SV8oKTt2YXIgVlk9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOnZzfTtmdW5jdGlvbiBhU2UoZSx0KXtmb3IodmFyIHI7IShyPWUuX190cmFuc2l0aW9uKXx8IShyPXJbdF0pOylpZighKGU9ZS5wYXJlbnROb2RlKSlyZXR1cm4gVlkudGltZT1BcCgpLFZZO3JldHVybiByfWZ1bmN0aW9uIEx2dChlKXt2YXIgdCxyO2UgaW5zdGFuY2VvZiB6bz8odD1lLl9pZCxlPWUuX25hbWUpOih0PUVMKCksKHI9VlkpLnRpbWU9QXAoKSxlPWU9PW51bGw/bnVsbDplKyIiKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgsbz0wO288aTsrK28pZm9yKHZhciBhPW5bb10scz1hLmxlbmd0aCxsLGM9MDtjPHM7KytjKShsPWFbY10pJiZHbShsLGUsdCxjLGEscnx8YVNlKGwsdCkpO3JldHVybiBuZXcgem8obix0aGlzLl9wYXJlbnRzLGUsdCl9UGgucHJvdG90eXBlLmludGVycnVwdD1aeXQ7UGgucHJvdG90eXBlLnRyYW5zaXRpb249THZ0O3ZhciBzU2U9W251bGxdO2Z1bmN0aW9uIGt2dChlLHQpe3ZhciByPWUuX190cmFuc2l0aW9uLG4saTtpZihyKXt0PXQ9PW51bGw/bnVsbDp0KyIiO2ZvcihpIGluIHIpaWYoKG49cltpXSkuc3RhdGU+YkwmJm4ubmFtZT09PXQpcmV0dXJuIG5ldyB6byhbW2VdXSxzU2UsdCwraSl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gREwoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fWZ1bmN0aW9uIFJ2dChlLHQscil7dGhpcy50YXJnZXQ9ZSx0aGlzLnR5cGU9dCx0aGlzLnNlbGVjdGlvbj1yfWZ1bmN0aW9uIFVZKCl7cXQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gT0woKXtxdC5wcmV2ZW50RGVmYXVsdCgpLHF0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfXZhciBOdnQ9e25hbWU6ImRyYWcifSxxWT17bmFtZToic3BhY2UifSxTYj17bmFtZToiaGFuZGxlIn0sTWI9e25hbWU6ImNlbnRlciJ9O2Z1bmN0aW9uIER2dChlKXtyZXR1cm5bK2VbMF0sK2VbMV1dfWZ1bmN0aW9uIFdZKGUpe3JldHVybltEdnQoZVswXSksRHZ0KGVbMV0pXX1mdW5jdGlvbiBsU2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBUcCh0LHF0LnRvdWNoZXMsZSl9fXZhciB6TD17bmFtZToieCIsaGFuZGxlczpbInciLCJlIl0ubWFwKHpFKSxpbnB1dDpmdW5jdGlvbihlLHQpe3JldHVybiBlPT1udWxsP251bGw6W1srZVswXSx0WzBdWzFdXSxbK2VbMV0sdFsxXVsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJltlWzBdWzBdLGVbMV1bMF1dfX0sRkw9e25hbWU6InkiLGhhbmRsZXM6WyJuIiwicyJdLm1hcCh6RSksaW5wdXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT09bnVsbD9udWxsOltbdFswXVswXSwrZVswXV0sW3RbMV1bMF0sK2VbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZbZVswXVsxXSxlWzFdWzFdXX19LGNTZT17bmFtZToieHkiLGhhbmRsZXM6WyJuIiwidyIsImUiLCJzIiwibnciLCJuZSIsInN3Iiwic2UiXS5tYXAoekUpLGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBlPT1udWxsP251bGw6V1koZSl9LG91dHB1dDpmdW5jdGlvbihlKXtyZXR1cm4gZX19LFBwPXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxPdnQ9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LHp2dD17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sdVNlPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LGhTZT17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiB6RShlKXtyZXR1cm57dHlwZTplfX1mdW5jdGlvbiBmU2UoKXtyZXR1cm4hcXQuY3RybEtleSYmIXF0LmJ1dHRvbn1mdW5jdGlvbiBwU2UoKXt2YXIgZT10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm4gZS5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT8oZT1lLnZpZXdCb3guYmFzZVZhbCxbW2UueCxlLnldLFtlLngrZS53aWR0aCxlLnkrZS5oZWlnaHRdXSk6W1swLDBdLFtlLndpZHRoLmJhc2VWYWwudmFsdWUsZS5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIGRTZSgpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBHWShlKXtmb3IoOyFlLl9fYnJ1c2g7KWlmKCEoZT1lLnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gZS5fX2JydXNofWZ1bmN0aW9uIG1TZShlKXtyZXR1cm4gZVswXVswXT09PWVbMV1bMF18fGVbMF1bMV09PT1lWzFdWzFdfWZ1bmN0aW9uIEJMKGUpe3ZhciB0PWUuX19icnVzaDtyZXR1cm4gdD90LmRpbS5vdXRwdXQodC5zZWxlY3Rpb24pOm51bGx9ZnVuY3Rpb24gRnZ0KCl7cmV0dXJuIFlZKHpMKX1mdW5jdGlvbiBITCgpe3JldHVybiBZWShGTCl9ZnVuY3Rpb24gVkwoKXtyZXR1cm4gWVkoY1NlKX1mdW5jdGlvbiBZWShlKXt2YXIgdD1wU2Uscj1mU2Usbj1kU2UsaT0hMCxvPXlzKCJzdGFydCIsImJydXNoIiwiZW5kIiksYT02LHM7ZnVuY3Rpb24gbChfKXt2YXIgeT1fLnByb3BlcnR5KCJfX2JydXNoIixnKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbekUoIm92ZXJsYXkiKV0pO3kuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsUHAub3ZlcmxheSkubWVyZ2UoeSkuZWFjaChmdW5jdGlvbigpe3ZhciBiPUdZKHRoaXMpLmV4dGVudDtIdCh0aGlzKS5hdHRyKCJ4IixiWzBdWzBdKS5hdHRyKCJ5IixiWzBdWzFdKS5hdHRyKCJ3aWR0aCIsYlsxXVswXS1iWzBdWzBdKS5hdHRyKCJoZWlnaHQiLGJbMV1bMV0tYlswXVsxXSl9KSxfLnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLmRhdGEoW3pFKCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLFBwLnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciB4PV8uc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YShlLmhhbmRsZXMsZnVuY3Rpb24oYil7cmV0dXJuIGIudHlwZX0pO3guZXhpdCgpLnJlbW92ZSgpLHguZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oYil7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrYi50eXBlfSkuYXR0cigiY3Vyc29yIixmdW5jdGlvbihiKXtyZXR1cm4gUHBbYi50eXBlXX0pLF8uZWFjaChjKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikub24oIm1vdXNlZG93bi5icnVzaCIsZikuZmlsdGVyKG4pLm9uKCJ0b3VjaHN0YXJ0LmJydXNoIixmKS5vbigidG91Y2htb3ZlLmJydXNoIixwKS5vbigidG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2giLGQpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1sLm1vdmU9ZnVuY3Rpb24oXyx5KXtfLnNlbGVjdGlvbj9fLm9uKCJzdGFydC5icnVzaCIsZnVuY3Rpb24oKXt1KHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCl9KS5vbigiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaCIsZnVuY3Rpb24oKXt1KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pLnR3ZWVuKCJicnVzaCIsZnVuY3Rpb24oKXt2YXIgeD10aGlzLGI9eC5fX2JydXNoLFM9dSh4LGFyZ3VtZW50cyksQz1iLnNlbGVjdGlvbixQPWUuaW5wdXQodHlwZW9mIHk9PSJmdW5jdGlvbiI/eS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6eSxiLmV4dGVudCksaz1lYyhDLFApO2Z1bmN0aW9uIE8oRCl7Yi5zZWxlY3Rpb249RD09PTEmJlA9PT1udWxsP251bGw6ayhEKSxjLmNhbGwoeCksUy5icnVzaCgpfXJldHVybiBDIT09bnVsbCYmUCE9PW51bGw/TzpPKDEpfSk6Xy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxiPWFyZ3VtZW50cyxTPXguX19icnVzaCxDPWUuaW5wdXQodHlwZW9mIHk9PSJmdW5jdGlvbiI/eS5hcHBseSh4LGIpOnksUy5leHRlbnQpLFA9dSh4LGIpLmJlZm9yZXN0YXJ0KCk7dXUoeCksUy5zZWxlY3Rpb249Qz09PW51bGw/bnVsbDpDLGMuY2FsbCh4KSxQLnN0YXJ0KCkuYnJ1c2goKS5lbmQoKX0pfSxsLmNsZWFyPWZ1bmN0aW9uKF8pe2wubW92ZShfLG51bGwpfTtmdW5jdGlvbiBjKCl7dmFyIF89SHQodGhpcykseT1HWSh0aGlzKS5zZWxlY3Rpb247eT8oXy5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIseVswXVswXSkuYXR0cigieSIseVswXVsxXSkuYXR0cigid2lkdGgiLHlbMV1bMF0teVswXVswXSkuYXR0cigiaGVpZ2h0Iix5WzFdWzFdLXlbMF1bMV0pLF8uc2VsZWN0QWxsKCIuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLGZ1bmN0aW9uKHgpe3JldHVybiB4LnR5cGVbeC50eXBlLmxlbmd0aC0xXT09PSJlIj95WzFdWzBdLWEvMjp5WzBdWzBdLWEvMn0pLmF0dHIoInkiLGZ1bmN0aW9uKHgpe3JldHVybiB4LnR5cGVbMF09PT0icyI/eVsxXVsxXS1hLzI6eVswXVsxXS1hLzJ9KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24oeCl7cmV0dXJuIHgudHlwZT09PSJuInx8eC50eXBlPT09InMiP3lbMV1bMF0teVswXVswXSthOmF9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHgpe3JldHVybiB4LnR5cGU9PT0iZSJ8fHgudHlwZT09PSJ3Ij95WzFdWzFdLXlbMF1bMV0rYTphfSkpOl8uc2VsZWN0QWxsKCIuc2VsZWN0aW9uLC5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKS5hdHRyKCJ4IixudWxsKS5hdHRyKCJ5IixudWxsKS5hdHRyKCJ3aWR0aCIsbnVsbCkuYXR0cigiaGVpZ2h0IixudWxsKX1mdW5jdGlvbiB1KF8seSx4KXt2YXIgYj1fLl9fYnJ1c2guZW1pdHRlcjtyZXR1cm4gYiYmKCF4fHwhYi5jbGVhbik/YjpuZXcgaChfLHkseCl9ZnVuY3Rpb24gaChfLHkseCl7dGhpcy50aGF0PV8sdGhpcy5hcmdzPXksdGhpcy5zdGF0ZT1fLl9fYnJ1c2gsdGhpcy5hY3RpdmU9MCx0aGlzLmNsZWFuPXh9aC5wcm90b3R5cGU9e2JlZm9yZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuKyt0aGlzLmFjdGl2ZT09PTEmJih0aGlzLnN0YXRlLmVtaXR0ZXI9dGhpcyx0aGlzLnN0YXJ0aW5nPSEwKSx0aGlzfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0aW5nPyh0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSk6dGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGJydXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4tLXRoaXMuYWN0aXZlPT09MCYmKGRlbGV0ZSB0aGlzLnN0YXRlLmVtaXR0ZXIsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihfKXtNcChuZXcgUnZ0KGwsXyxlLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLG8uYXBwbHksbyxbXyx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fTtmdW5jdGlvbiBmKCl7aWYocyYmIXF0LnRvdWNoZXN8fCFyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm47dmFyIF89dGhpcyx5PXF0LnRhcmdldC5fX2RhdGFfXy50eXBlLHg9KGkmJnF0Lm1ldGFLZXk/eT0ib3ZlcmxheSI6eSk9PT0ic2VsZWN0aW9uIj9OdnQ6aSYmcXQuYWx0S2V5P01iOlNiLGI9ZT09PUZMP251bGw6dVNlW3ldLFM9ZT09PXpMP251bGw6aFNlW3ldLEM9R1koXyksUD1DLmV4dGVudCxrPUMuc2VsZWN0aW9uLE89UFswXVswXSxELEIsST1QWzBdWzFdLEwsUixGPVBbMV1bMF0seixVLFc9UFsxXVsxXSxaLHJ0LG90PTAsc3Q9MCxTdCxidD1iJiZTJiZpJiZxdC5zaGlmdEtleSxNdCxsdCxLdD1xdC50b3VjaGVzP2xTZShxdC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyKTpPbyxfdD1LdChfKSxjdD1fdCxYPXUoXyxhcmd1bWVudHMsITApLmJlZm9yZXN0YXJ0KCk7eT09PSJvdmVybGF5Ij8oayYmKFN0PSEwKSxDLnNlbGVjdGlvbj1rPVtbRD1lPT09Rkw/TzpfdFswXSxMPWU9PT16TD9JOl90WzFdXSxbej1lPT09Rkw/RjpELFo9ZT09PXpMP1c6TF1dKTooRD1rWzBdWzBdLEw9a1swXVsxXSx6PWtbMV1bMF0sWj1rWzFdWzFdKSxCPUQsUj1MLFU9eixydD1aO3ZhciBldD1IdChfKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSxkdD1ldC5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixQcFt5XSk7aWYocXQudG91Y2hlcylYLm1vdmVkPXB0LFguZW5kZWQ9d3Q7ZWxzZXt2YXIgcT1IdChxdC52aWV3KS5vbigibW91c2Vtb3ZlLmJydXNoIixwdCwhMCkub24oIm1vdXNldXAuYnJ1c2giLHd0LCEwKTtpJiZxLm9uKCJrZXlkb3duLmJydXNoIixrdCwhMCkub24oImtleXVwLmJydXNoIixpZSwhMCksem0ocXQudmlldyl9VVkoKSx1dShfKSxjLmNhbGwoXyksWC5zdGFydCgpO2Z1bmN0aW9uIHB0KCl7dmFyIGVlPUt0KF8pO2J0JiYhTXQmJiFsdCYmKE1hdGguYWJzKGVlWzBdLWN0WzBdKT5NYXRoLmFicyhlZVsxXS1jdFsxXSk/bHQ9ITA6TXQ9ITApLGN0PWVlLFN0PSEwLE9MKCksaHQoKX1mdW5jdGlvbiBodCgpe3ZhciBlZTtzd2l0Y2gob3Q9Y3RbMF0tX3RbMF0sc3Q9Y3RbMV0tX3RbMV0seCl7Y2FzZSBxWTpjYXNlIE52dDp7YiYmKG90PU1hdGgubWF4KE8tRCxNYXRoLm1pbihGLXosb3QpKSxCPUQrb3QsVT16K290KSxTJiYoc3Q9TWF0aC5tYXgoSS1MLE1hdGgubWluKFctWixzdCkpLFI9TCtzdCxydD1aK3N0KTticmVha31jYXNlIFNiOntiPDA/KG90PU1hdGgubWF4KE8tRCxNYXRoLm1pbihGLUQsb3QpKSxCPUQrb3QsVT16KTpiPjAmJihvdD1NYXRoLm1heChPLXosTWF0aC5taW4oRi16LG90KSksQj1ELFU9eitvdCksUzwwPyhzdD1NYXRoLm1heChJLUwsTWF0aC5taW4oVy1MLHN0KSksUj1MK3N0LHJ0PVopOlM+MCYmKHN0PU1hdGgubWF4KEktWixNYXRoLm1pbihXLVosc3QpKSxSPUwscnQ9WitzdCk7YnJlYWt9Y2FzZSBNYjp7YiYmKEI9TWF0aC5tYXgoTyxNYXRoLm1pbihGLEQtb3QqYikpLFU9TWF0aC5tYXgoTyxNYXRoLm1pbihGLHorb3QqYikpKSxTJiYoUj1NYXRoLm1heChJLE1hdGgubWluKFcsTC1zdCpTKSkscnQ9TWF0aC5tYXgoSSxNYXRoLm1pbihXLForc3QqUykpKTticmVha319VTxCJiYoYio9LTEsZWU9RCxEPXosej1lZSxlZT1CLEI9VSxVPWVlLHkgaW4gT3Z0JiZkdC5hdHRyKCJjdXJzb3IiLFBwW3k9T3Z0W3ldXSkpLHJ0PFImJihTKj0tMSxlZT1MLEw9WixaPWVlLGVlPVIsUj1ydCxydD1lZSx5IGluIHp2dCYmZHQuYXR0cigiY3Vyc29yIixQcFt5PXp2dFt5XV0pKSxDLnNlbGVjdGlvbiYmKGs9Qy5zZWxlY3Rpb24pLE10JiYoQj1rWzBdWzBdLFU9a1sxXVswXSksbHQmJihSPWtbMF1bMV0scnQ9a1sxXVsxXSksKGtbMF1bMF0hPT1CfHxrWzBdWzFdIT09Unx8a1sxXVswXSE9PVV8fGtbMV1bMV0hPT1ydCkmJihDLnNlbGVjdGlvbj1bW0IsUl0sW1UscnRdXSxjLmNhbGwoXyksWC5icnVzaCgpKX1mdW5jdGlvbiB3dCgpe2lmKFVZKCkscXQudG91Y2hlcyl7aWYocXQudG91Y2hlcy5sZW5ndGgpcmV0dXJuO3MmJmNsZWFyVGltZW91dChzKSxzPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtzPW51bGx9LDUwMCl9ZWxzZSBGbShxdC52aWV3LFN0KSxxLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtldC5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLGR0LmF0dHIoImN1cnNvciIsUHAub3ZlcmxheSksQy5zZWxlY3Rpb24mJihrPUMuc2VsZWN0aW9uKSxtU2UoaykmJihDLnNlbGVjdGlvbj1udWxsLGMuY2FsbChfKSksWC5lbmQoKX1mdW5jdGlvbiBrdCgpe3N3aXRjaChxdC5rZXlDb2RlKXtjYXNlIDE2OntidD1iJiZTO2JyZWFrfWNhc2UgMTg6e3g9PT1TYiYmKGImJih6PVUtb3QqYixEPUIrb3QqYiksUyYmKFo9cnQtc3QqUyxMPVIrc3QqUykseD1NYixodCgpKTticmVha31jYXNlIDMyOnsoeD09PVNifHx4PT09TWIpJiYoYjwwP3o9VS1vdDpiPjAmJihEPUItb3QpLFM8MD9aPXJ0LXN0OlM+MCYmKEw9Ui1zdCkseD1xWSxkdC5hdHRyKCJjdXJzb3IiLFBwLnNlbGVjdGlvbiksaHQoKSk7YnJlYWt9ZGVmYXVsdDpyZXR1cm59T0woKX1mdW5jdGlvbiBpZSgpe3N3aXRjaChxdC5rZXlDb2RlKXtjYXNlIDE2OntidCYmKE10PWx0PWJ0PSExLGh0KCkpO2JyZWFrfWNhc2UgMTg6e3g9PT1NYiYmKGI8MD96PVU6Yj4wJiYoRD1CKSxTPDA/Wj1ydDpTPjAmJihMPVIpLHg9U2IsaHQoKSk7YnJlYWt9Y2FzZSAzMjp7eD09PXFZJiYocXQuYWx0S2V5PyhiJiYoej1VLW90KmIsRD1CK290KmIpLFMmJihaPXJ0LXN0KlMsTD1SK3N0KlMpLHg9TWIpOihiPDA/ej1VOmI+MCYmKEQ9QiksUzwwP1o9cnQ6Uz4wJiYoTD1SKSx4PVNiKSxkdC5hdHRyKCJjdXJzb3IiLFBwW3ldKSxodCgpKTticmVha31kZWZhdWx0OnJldHVybn1PTCgpfX1mdW5jdGlvbiBwKCl7dSh0aGlzLGFyZ3VtZW50cykubW92ZWQoKX1mdW5jdGlvbiBkKCl7dSh0aGlzLGFyZ3VtZW50cykuZW5kZWQoKX1mdW5jdGlvbiBnKCl7dmFyIF89dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiBfLmV4dGVudD1XWSh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksXy5kaW09ZSxffXJldHVybiBsLmV4dGVudD1mdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgXz09ImZ1bmN0aW9uIj9fOkRMKFdZKF8pKSxsKTp0fSxsLmZpbHRlcj1mdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgXz09ImZ1bmN0aW9uIj9fOkRMKCEhXyksbCk6cn0sbC50b3VjaGFibGU9ZnVuY3Rpb24oXyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIF89PSJmdW5jdGlvbiI/XzpETCghIV8pLGwpOm59LGwuaGFuZGxlU2l6ZT1mdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rXyxsKTphfSxsLmtleU1vZGlmaWVycz1mdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hIV8sbCk6aX0sbC5vbj1mdW5jdGlvbigpe3ZhciBfPW8ub24uYXBwbHkobyxhcmd1bWVudHMpO3JldHVybiBfPT09bz9sOl99LGx9dmFyIGpZPU1hdGguY29zLFhZPU1hdGguc2luLEJ2dD1NYXRoLlBJLEZFPUJ2dC8yLCRZPUJ2dCoyLEtZPU1hdGgubWF4O2Z1bmN0aW9uIGdTZShlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXtyZXR1cm4gZSh0LnNvdXJjZS52YWx1ZSt0LnRhcmdldC52YWx1ZSxyLnNvdXJjZS52YWx1ZStyLnRhcmdldC52YWx1ZSl9fWZ1bmN0aW9uIEh2dCgpe3ZhciBlPTAsdD1udWxsLHI9bnVsbCxuPW51bGw7ZnVuY3Rpb24gaShvKXt2YXIgYT1vLmxlbmd0aCxzPVtdLGw9SXIoYSksYz1bXSx1PVtdLGg9dS5ncm91cHM9bmV3IEFycmF5KGEpLGY9bmV3IEFycmF5KGEqYSkscCxkLGcsXyx5LHg7Zm9yKHA9MCx5PS0xOysreTxhOyl7Zm9yKGQ9MCx4PS0xOysreDxhOylkKz1vW3ldW3hdO3MucHVzaChkKSxjLnB1c2goSXIoYSkpLHArPWR9Zm9yKHQmJmwuc29ydChmdW5jdGlvbihCLEkpe3JldHVybiB0KHNbQl0sc1tJXSl9KSxyJiZjLmZvckVhY2goZnVuY3Rpb24oQixJKXtCLnNvcnQoZnVuY3Rpb24oTCxSKXtyZXR1cm4gcihvW0ldW0xdLG9bSV1bUl0pfSl9KSxwPUtZKDAsJFktZSphKS9wLF89cD9lOiRZL2EsZD0wLHk9LTE7Kyt5PGE7KXtmb3IoZz1kLHg9LTE7Kyt4PGE7KXt2YXIgYj1sW3ldLFM9Y1tiXVt4XSxDPW9bYl1bU10sUD1kLGs9ZCs9QypwO2ZbUyphK2JdPXtpbmRleDpiLHN1YmluZGV4OlMsc3RhcnRBbmdsZTpQLGVuZEFuZ2xlOmssdmFsdWU6Q319aFtiXT17aW5kZXg6YixzdGFydEFuZ2xlOmcsZW5kQW5nbGU6ZCx2YWx1ZTpzW2JdfSxkKz1ffWZvcih5PS0xOysreTxhOylmb3IoeD15LTE7Kyt4PGE7KXt2YXIgTz1mW3gqYSt5XSxEPWZbeSphK3hdOyhPLnZhbHVlfHxELnZhbHVlKSYmdS5wdXNoKE8udmFsdWU8RC52YWx1ZT97c291cmNlOkQsdGFyZ2V0Ok99Ontzb3VyY2U6Tyx0YXJnZXQ6RH0pfXJldHVybiBuP3Uuc29ydChuKTp1fXJldHVybiBpLnBhZEFuZ2xlPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUtZKDAsbyksaSk6ZX0saS5zb3J0R3JvdXBzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW8saSk6dH0saS5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW8saSk6cn0saS5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPT1udWxsP249bnVsbDoobj1nU2UobykpLl89byxpKTpuJiZuLl99LGl9dmFyIFZ2dD1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gVUwoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBaWT1NYXRoLlBJLEpZPTIqWlksTF89MWUtNixfU2U9SlktTF87ZnVuY3Rpb24gUVkoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBVdnQoKXtyZXR1cm4gbmV3IFFZfVFZLnByb3RvdHlwZT1VdnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpRWSxtb3ZlVG86ZnVuY3Rpb24oZSx0KXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K2UpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K3QpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl94MSE9PW51bGwmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbihlLHQpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rZSkrIiwiKyh0aGlzLl95MT0rdCl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24oZSx0LHIsbil7dGhpcy5fKz0iUSIrICtlKyIsIisgK3QrIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbil9LGJlemllckN1cnZlVG86ZnVuY3Rpb24oZSx0LHIsbixpLG8pe3RoaXMuXys9IkMiKyArZSsiLCIrICt0KyIsIisgK3IrIiwiKyArbisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24oZSx0LHIsbixpKXtlPStlLHQ9K3Qscj0rcixuPStuLGk9K2k7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPXItZSxsPW4tdCxjPW8tZSx1PWEtdCxoPWMqYyt1KnU7aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKHRoaXMuX3gxPT09bnVsbCl0aGlzLl8rPSJNIisodGhpcy5feDE9ZSkrIiwiKyh0aGlzLl95MT10KTtlbHNlIGlmKGg+TF8paWYoIShNYXRoLmFicyh1KnMtbCpjKT5MXyl8fCFpKXRoaXMuXys9IkwiKyh0aGlzLl94MT1lKSsiLCIrKHRoaXMuX3kxPXQpO2Vsc2V7dmFyIGY9ci1vLHA9bi1hLGQ9cypzK2wqbCxnPWYqZitwKnAsXz1NYXRoLnNxcnQoZCkseT1NYXRoLnNxcnQoaCkseD1pKk1hdGgudGFuKChaWS1NYXRoLmFjb3MoKGQraC1nKS8oMipfKnkpKSkvMiksYj14L3ksUz14L187TWF0aC5hYnMoYi0xKT5MXyYmKHRoaXMuXys9IkwiKyhlK2IqYykrIiwiKyh0K2IqdSkpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyh1KmY+YypwKSsiLCIrKHRoaXMuX3gxPWUrUypzKSsiLCIrKHRoaXMuX3kxPXQrUypsKX19LGFyYzpmdW5jdGlvbihlLHQscixuLGksbyl7ZT0rZSx0PSt0LHI9K3Isbz0hIW87dmFyIGE9cipNYXRoLmNvcyhuKSxzPXIqTWF0aC5zaW4obiksbD1lK2EsYz10K3MsdT0xXm8saD1vP24taTppLW47aWYocjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO3RoaXMuX3gxPT09bnVsbD90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5MX3x8TWF0aC5hYnModGhpcy5feTEtYyk+TF8pJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksciYmKGg8MCYmKGg9aCVKWStKWSksaD5fU2U/dGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMSwiK3UrIiwiKyhlLWEpKyIsIisodC1zKSsiQSIrcisiLCIrcisiLDAsMSwiK3UrIiwiKyh0aGlzLl94MT1sKSsiLCIrKHRoaXMuX3kxPWMpOmg+TF8mJih0aGlzLl8rPSJBIityKyIsIityKyIsMCwiKyArKGg+PVpZKSsiLCIrdSsiLCIrKHRoaXMuX3gxPWUrcipNYXRoLmNvcyhpKSkrIiwiKyh0aGlzLl95MT10K3IqTWF0aC5zaW4oaSkpKSl9LHJlY3Q6ZnVuY3Rpb24oZSx0LHIsbil7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPStlKSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPSt0KSsiaCIrICtyKyJ2IisgK24rImgiKy1yKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIHhzPVV2dDtmdW5jdGlvbiB5U2UoZSl7cmV0dXJuIGUuc291cmNlfWZ1bmN0aW9uIHZTZShlKXtyZXR1cm4gZS50YXJnZXR9ZnVuY3Rpb24geFNlKGUpe3JldHVybiBlLnJhZGl1c31mdW5jdGlvbiBiU2UoZSl7cmV0dXJuIGUuc3RhcnRBbmdsZX1mdW5jdGlvbiB3U2UoZSl7cmV0dXJuIGUuZW5kQW5nbGV9ZnVuY3Rpb24gcXZ0KCl7dmFyIGU9eVNlLHQ9dlNlLHI9eFNlLG49YlNlLGk9d1NlLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIHMsbD1WdnQuY2FsbChhcmd1bWVudHMpLGM9ZS5hcHBseSh0aGlzLGwpLHU9dC5hcHBseSh0aGlzLGwpLGg9K3IuYXBwbHkodGhpcywobFswXT1jLGwpKSxmPW4uYXBwbHkodGhpcyxsKS1GRSxwPWkuYXBwbHkodGhpcyxsKS1GRSxkPWgqalkoZiksZz1oKlhZKGYpLF89K3IuYXBwbHkodGhpcywobFswXT11LGwpKSx5PW4uYXBwbHkodGhpcyxsKS1GRSx4PWkuYXBwbHkodGhpcyxsKS1GRTtpZihvfHwobz1zPXhzKCkpLG8ubW92ZVRvKGQsZyksby5hcmMoMCwwLGgsZixwKSwoZiE9PXl8fHAhPT14KSYmKG8ucXVhZHJhdGljQ3VydmVUbygwLDAsXypqWSh5KSxfKlhZKHkpKSxvLmFyYygwLDAsXyx5LHgpKSxvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLGQsZyksby5jbG9zZVBhdGgoKSxzKXJldHVybiBvPW51bGwscysiInx8bnVsbH1yZXR1cm4gYS5yYWRpdXM9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpVTCgrcyksYSk6cn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6VUwoK3MpLGEpOm59LGEuZW5kQW5nbGU9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpVTCgrcyksYSk6aX0sYS5zb3VyY2U9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cyxhKTplfSxhLnRhcmdldD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1zLGEpOnR9LGEuY29udGV4dD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1zPT1udWxsP251bGw6cyxhKTpvfSxhfUViKCk7dmFyIEVTZT1BcnJheS5wcm90b3R5cGUsakw9RVNlLnNsaWNlO2Z1bmN0aW9uIG4xdChlLHQpe3JldHVybiBlLXR9ZnVuY3Rpb24gaTF0KGUpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGgsbj1lW3ItMV1bMV0qZVswXVswXS1lW3ItMV1bMF0qZVswXVsxXTsrK3Q8cjspbis9ZVt0LTFdWzFdKmVbdF1bMF0tZVt0LTFdWzBdKmVbdF1bMV07cmV0dXJuIG59ZnVuY3Rpb24gRGgoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fWZ1bmN0aW9uIG8xdChlLHQpe2Zvcih2YXIgcj0tMSxuPXQubGVuZ3RoLGk7KytyPG47KWlmKGk9VFNlKGUsdFtyXSkpcmV0dXJuIGk7cmV0dXJuIDB9ZnVuY3Rpb24gVFNlKGUsdCl7Zm9yKHZhciByPXRbMF0sbj10WzFdLGk9LTEsbz0wLGE9ZS5sZW5ndGgscz1hLTE7bzxhO3M9bysrKXt2YXIgbD1lW29dLGM9bFswXSx1PWxbMV0saD1lW3NdLGY9aFswXSxwPWhbMV07aWYoQ1NlKGwsaCx0KSlyZXR1cm4gMDt1Pm4hPXA+biYmcjwoZi1jKSoobi11KS8ocC11KStjJiYoaT0taSl9cmV0dXJuIGl9ZnVuY3Rpb24gQ1NlKGUsdCxyKXt2YXIgbjtyZXR1cm4gQVNlKGUsdCxyKSYmUFNlKGVbbj0rKGVbMF09PT10WzBdKV0scltuXSx0W25dKX1mdW5jdGlvbiBBU2UoZSx0LHIpe3JldHVybih0WzBdLWVbMF0pKihyWzFdLWVbMV0pPT09KHJbMF0tZVswXSkqKHRbMV0tZVsxXSl9ZnVuY3Rpb24gUFNlKGUsdCxyKXtyZXR1cm4gZTw9dCYmdDw9cnx8cjw9dCYmdDw9ZX1mdW5jdGlvbiBhMXQoKXt9dmFyIElwPVtbXSxbW1sxLDEuNV0sWy41LDFdXV0sW1tbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWy41LDFdXV0sW1tbMSwuNV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbLjUsMV1dLFtbMSwuNV0sWzEuNSwxXV1dLFtbWzEsLjVdLFsxLDEuNV1dXSxbW1sxLC41XSxbLjUsMV1dXSxbW1suNSwxXSxbMSwuNV1dXSxbW1sxLDEuNV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEsLjVdXSxbWzEuNSwxXSxbMSwxLjVdXV0sW1tbMS41LDFdLFsxLC41XV1dLFtbWy41LDFdLFsxLjUsMV1dXSxbW1sxLDEuNV0sWzEuNSwxXV1dLFtbWy41LDFdLFsxLDEuNV1dXSxbXV07ZnVuY3Rpb24gWEwoKXt2YXIgZT0xLHQ9MSxyPWFiLG49bDtmdW5jdGlvbiBpKGMpe3ZhciB1PXIoYyk7aWYoQXJyYXkuaXNBcnJheSh1KSl1PXUuc2xpY2UoKS5zb3J0KG4xdCk7ZWxzZXt2YXIgaD1vYShjKSxmPWhbMF0scD1oWzFdO3U9UXMoZixwLHUpLHU9SXIoTWF0aC5mbG9vcihmL3UpKnUsTWF0aC5mbG9vcihwL3UpKnUsdSl9cmV0dXJuIHUubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBvKGMsZCl9KX1mdW5jdGlvbiBvKGMsdSl7dmFyIGg9W10sZj1bXTtyZXR1cm4gYShjLHUsZnVuY3Rpb24ocCl7bihwLGMsdSksaTF0KHApPjA/aC5wdXNoKFtwXSk6Zi5wdXNoKHApfSksZi5mb3JFYWNoKGZ1bmN0aW9uKHApe2Zvcih2YXIgZD0wLGc9aC5sZW5ndGgsXztkPGc7KytkKWlmKG8xdCgoXz1oW2RdKVswXSxwKSE9PS0xKXtfLnB1c2gocCk7cmV0dXJufX0pLHt0eXBlOiJNdWx0aVBvbHlnb24iLHZhbHVlOnUsY29vcmRpbmF0ZXM6aH19ZnVuY3Rpb24gYShjLHUsaCl7dmFyIGY9bmV3IEFycmF5LHA9bmV3IEFycmF5LGQsZyxfLHkseCxiO2ZvcihkPWc9LTEseT1jWzBdPj11LElwW3k8PDFdLmZvckVhY2goUyk7KytkPGUtMTspXz15LHk9Y1tkKzFdPj11LElwW198eTw8MV0uZm9yRWFjaChTKTtmb3IoSXBbeTw8MF0uZm9yRWFjaChTKTsrK2c8dC0xOyl7Zm9yKGQ9LTEseT1jW2cqZStlXT49dSx4PWNbZyplXT49dSxJcFt5PDwxfHg8PDJdLmZvckVhY2goUyk7KytkPGUtMTspXz15LHk9Y1tnKmUrZStkKzFdPj11LGI9eCx4PWNbZyplK2QrMV0+PXUsSXBbX3x5PDwxfHg8PDJ8Yjw8M10uZm9yRWFjaChTKTtJcFt5fHg8PDNdLmZvckVhY2goUyl9Zm9yKGQ9LTEseD1jW2cqZV0+PXUsSXBbeDw8Ml0uZm9yRWFjaChTKTsrK2Q8ZS0xOyliPXgseD1jW2cqZStkKzFdPj11LElwW3g8PDJ8Yjw8M10uZm9yRWFjaChTKTtJcFt4PDwzXS5mb3JFYWNoKFMpO2Z1bmN0aW9uIFMoQyl7dmFyIFA9W0NbMF1bMF0rZCxDWzBdWzFdK2ddLGs9W0NbMV1bMF0rZCxDWzFdWzFdK2ddLE89cyhQKSxEPXMoayksQixJOyhCPXBbT10pPyhJPWZbRF0pPyhkZWxldGUgcFtCLmVuZF0sZGVsZXRlIGZbSS5zdGFydF0sQj09PUk/KEIucmluZy5wdXNoKGspLGgoQi5yaW5nKSk6ZltCLnN0YXJ0XT1wW0kuZW5kXT17c3RhcnQ6Qi5zdGFydCxlbmQ6SS5lbmQscmluZzpCLnJpbmcuY29uY2F0KEkucmluZyl9KTooZGVsZXRlIHBbQi5lbmRdLEIucmluZy5wdXNoKGspLHBbQi5lbmQ9RF09Qik6KEI9ZltEXSk/KEk9cFtPXSk/KGRlbGV0ZSBmW0Iuc3RhcnRdLGRlbGV0ZSBwW0kuZW5kXSxCPT09ST8oQi5yaW5nLnB1c2goayksaChCLnJpbmcpKTpmW0kuc3RhcnRdPXBbQi5lbmRdPXtzdGFydDpJLnN0YXJ0LGVuZDpCLmVuZCxyaW5nOkkucmluZy5jb25jYXQoQi5yaW5nKX0pOihkZWxldGUgZltCLnN0YXJ0XSxCLnJpbmcudW5zaGlmdChQKSxmW0Iuc3RhcnQ9T109Qik6ZltPXT1wW0RdPXtzdGFydDpPLGVuZDpELHJpbmc6W1Asa119fX1mdW5jdGlvbiBzKGMpe3JldHVybiBjWzBdKjIrY1sxXSooZSsxKSo0fWZ1bmN0aW9uIGwoYyx1LGgpe2MuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgcD1mWzBdLGQ9ZlsxXSxnPXB8MCxfPWR8MCx5LHg9dVtfKmUrZ107cD4wJiZwPGUmJmc9PT1wJiYoeT11W18qZStnLTFdLGZbMF09cCsoaC15KS8oeC15KS0uNSksZD4wJiZkPHQmJl89PT1kJiYoeT11WyhfLTEpKmUrZ10sZlsxXT1kKyhoLXkpLyh4LXkpLS41KX0pfXJldHVybiBpLmNvbnRvdXI9byxpLnNpemU9ZnVuY3Rpb24oYyl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW2UsdF07dmFyIHU9TWF0aC5jZWlsKGNbMF0pLGg9TWF0aC5jZWlsKGNbMV0pO2lmKCEodT4wKXx8IShoPjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIGU9dSx0PWgsaX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiBjPT0iZnVuY3Rpb24iP2M6QXJyYXkuaXNBcnJheShjKT9EaChqTC5jYWxsKGMpKTpEaChjKSxpKTpyfSxpLnNtb290aD1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1jP2w6YTF0LGkpOm49PT1sfSxpfWZ1bmN0aW9uICRMKGUsdCxyKXtmb3IodmFyIG49ZS53aWR0aCxpPWUuaGVpZ2h0LG89KHI8PDEpKzEsYT0wO2E8aTsrK2EpZm9yKHZhciBzPTAsbD0wO3M8bityOysrcylzPG4mJihsKz1lLmRhdGFbcythKm5dKSxzPj1yJiYocz49byYmKGwtPWUuZGF0YVtzLW8rYSpuXSksdC5kYXRhW3MtcithKm5dPWwvTWF0aC5taW4ocysxLG4tMStvLXMsbykpfWZ1bmN0aW9uIEtMKGUsdCxyKXtmb3IodmFyIG49ZS53aWR0aCxpPWUuaGVpZ2h0LG89KHI8PDEpKzEsYT0wO2E8bjsrK2EpZm9yKHZhciBzPTAsbD0wO3M8aStyOysrcylzPGkmJihsKz1lLmRhdGFbYStzKm5dKSxzPj1yJiYocz49byYmKGwtPWUuZGF0YVthKyhzLW8pKm5dKSx0LmRhdGFbYSsocy1yKSpuXT1sL01hdGgubWluKHMrMSxpLTErby1zLG8pKX1mdW5jdGlvbiBJU2UoZSl7cmV0dXJuIGVbMF19ZnVuY3Rpb24gTFNlKGUpe3JldHVybiBlWzFdfWZ1bmN0aW9uIGtTZSgpe3JldHVybiAxfWZ1bmN0aW9uIHMxdCgpe3ZhciBlPUlTZSx0PUxTZSxyPWtTZSxuPTk2MCxpPTUwMCxvPTIwLGE9MixzPW8qMyxsPW4rcyoyPj5hLGM9aStzKjI+PmEsdT1EaCgyMCk7ZnVuY3Rpb24gaCh5KXt2YXIgeD1uZXcgRmxvYXQzMkFycmF5KGwqYyksYj1uZXcgRmxvYXQzMkFycmF5KGwqYyk7eS5mb3JFYWNoKGZ1bmN0aW9uKFAsayxPKXt2YXIgRD0rZShQLGssTykrcz4+YSxCPSt0KFAsayxPKStzPj5hLEk9K3IoUCxrLE8pO0Q+PTAmJkQ8bCYmQj49MCYmQjxjJiYoeFtEK0IqbF0rPUkpfSksJEwoe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTp4fSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmJ9LG8+PmEpLEtMKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6Yn0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTp4fSxvPj5hKSwkTCh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnh9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6Yn0sbz4+YSksS0woe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpifSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnh9LG8+PmEpLCRMKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6eH0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpifSxvPj5hKSxLTCh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmJ9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6eH0sbz4+YSk7dmFyIFM9dSh4KTtpZighQXJyYXkuaXNBcnJheShTKSl7dmFyIEM9c3UoeCk7Uz1RcygwLEMsUyksUz1JcigwLE1hdGguZmxvb3IoQy9TKSpTLFMpLFMuc2hpZnQoKX1yZXR1cm4gWEwoKS50aHJlc2hvbGRzKFMpLnNpemUoW2wsY10pKHgpLm1hcChmKX1mdW5jdGlvbiBmKHkpe3JldHVybiB5LnZhbHVlKj1NYXRoLnBvdygyLC0yKmEpLHkuY29vcmRpbmF0ZXMuZm9yRWFjaChwKSx5fWZ1bmN0aW9uIHAoeSl7eS5mb3JFYWNoKGQpfWZ1bmN0aW9uIGQoeSl7eS5mb3JFYWNoKGcpfWZ1bmN0aW9uIGcoeSl7eVswXT15WzBdKk1hdGgucG93KDIsYSktcyx5WzFdPXlbMV0qTWF0aC5wb3coMixhKS1zfWZ1bmN0aW9uIF8oKXtyZXR1cm4gcz1vKjMsbD1uK3MqMj4+YSxjPWkrcyoyPj5hLGh9cmV0dXJuIGgueD1mdW5jdGlvbih5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgeT09ImZ1bmN0aW9uIj95OkRoKCt5KSxoKTplfSxoLnk9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIHk9PSJmdW5jdGlvbiI/eTpEaCgreSksaCk6dH0saC53ZWlnaHQ9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIHk9PSJmdW5jdGlvbiI/eTpEaCgreSksaCk6cn0saC5zaXplPWZ1bmN0aW9uKHkpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltuLGldO3ZhciB4PU1hdGguY2VpbCh5WzBdKSxiPU1hdGguY2VpbCh5WzFdKTtpZighKHg+PTApJiYhKHg+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIG49eCxpPWIsXygpfSxoLmNlbGxTaXplPWZ1bmN0aW9uKHkpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiAxPDxhO2lmKCEoKHk9K3kpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2VsbCBzaXplIik7cmV0dXJuIGE9TWF0aC5mbG9vcihNYXRoLmxvZyh5KS9NYXRoLkxOMiksXygpfSxoLnRocmVzaG9sZHM9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dHlwZW9mIHk9PSJmdW5jdGlvbiI/eTpBcnJheS5pc0FycmF5KHkpP0RoKGpMLmNhbGwoeSkpOkRoKHkpLGgpOnV9LGguYmFuZHdpZHRoPWZ1bmN0aW9uKHkpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBNYXRoLnNxcnQobyoobysxKSk7aWYoISgoeT0reSk+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBiYW5kd2lkdGgiKTtyZXR1cm4gbz1NYXRoLnJvdW5kKChNYXRoLnNxcnQoNCp5KnkrMSktMSkvMiksXygpfSxofWttKCk7SEUoKTtJXygpO2Z1bmN0aW9uIHpTZShlKXtpZighZS5vayl0aHJvdyBuZXcgRXJyb3IoZS5zdGF0dXMrIiAiK2Uuc3RhdHVzVGV4dCk7cmV0dXJuIGUuYmxvYigpfWZ1bmN0aW9uIFQxdChlLHQpe3JldHVybiBmZXRjaChlLHQpLnRoZW4oelNlKX1mdW5jdGlvbiBGU2UoZSl7aWYoIWUub2spdGhyb3cgbmV3IEVycm9yKGUuc3RhdHVzKyIgIitlLnN0YXR1c1RleHQpO3JldHVybiBlLmFycmF5QnVmZmVyKCl9ZnVuY3Rpb24gQzF0KGUsdCl7cmV0dXJuIGZldGNoKGUsdCkudGhlbihGU2UpfUhFKCk7ZnVuY3Rpb24gQlNlKGUpe2lmKCFlLm9rKXRocm93IG5ldyBFcnJvcihlLnN0YXR1cysiICIrZS5zdGF0dXNUZXh0KTtyZXR1cm4gZS50ZXh0KCl9ZnVuY3Rpb24gRF8oZSx0KXtyZXR1cm4gZmV0Y2goZSx0KS50aGVuKEJTZSl9ZnVuY3Rpb24gQTF0KGUpe3JldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZ0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmKG49cixyPXZvaWQgMCksRF8odCxyKS50aGVuKGZ1bmN0aW9uKGkpe3JldHVybiBlKGksbil9KX19ZnVuY3Rpb24gaWooZSx0LHIsbil7YXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiByPT0iZnVuY3Rpb24iJiYobj1yLHI9dm9pZCAwKTt2YXIgaT1XbShlKTtyZXR1cm4gRF8odCxyKS50aGVuKGZ1bmN0aW9uKG8pe3JldHVybiBpLnBhcnNlKG8sbil9KX12YXIgUDF0PUExdChUYiksSTF0PUExdChDYik7ZnVuY3Rpb24gTDF0KGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7dmFyIGk9bmV3IEltYWdlO2Zvcih2YXIgbyBpbiB0KWlbb109dFtvXTtpLm9uZXJyb3I9bixpLm9ubG9hZD1mdW5jdGlvbigpe3IoaSl9LGkuc3JjPWV9KX1mdW5jdGlvbiBIU2UoZSl7aWYoIWUub2spdGhyb3cgbmV3IEVycm9yKGUuc3RhdHVzKyIgIitlLnN0YXR1c1RleHQpO2lmKCEoZS5zdGF0dXM9PT0yMDR8fGUuc3RhdHVzPT09MjA1KSlyZXR1cm4gZS5qc29uKCl9ZnVuY3Rpb24gazF0KGUsdCl7cmV0dXJuIGZldGNoKGUsdCkudGhlbihIU2UpfWZ1bmN0aW9uIG9qKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBEXyh0LHIpLnRoZW4oZnVuY3Rpb24obil7cmV0dXJuIG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcobixlKX0pfX12YXIgUjF0PW9qKCJhcHBsaWNhdGlvbi94bWwiKSxOMXQ9b2ooInRleHQvaHRtbCIpLEQxdD1vaigiaW1hZ2Uvc3ZnK3htbCIpO2Z1bmN0aW9uIE8xdChlLHQpe3ZhciByO2U9PW51bGwmJihlPTApLHQ9PW51bGwmJih0PTApO2Z1bmN0aW9uIG4oKXt2YXIgaSxvPXIubGVuZ3RoLGEscz0wLGw9MDtmb3IoaT0wO2k8bzsrK2kpYT1yW2ldLHMrPWEueCxsKz1hLnk7Zm9yKHM9cy9vLWUsbD1sL28tdCxpPTA7aTxvOysraSlhPXJbaV0sYS54LT1zLGEueS09bH1yZXR1cm4gbi5pbml0aWFsaXplPWZ1bmN0aW9uKGkpe3I9aX0sbi54PWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPStpLG4pOmV9LG4ueT1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0raSxuKTp0fSxufWZ1bmN0aW9uIE9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiBodSgpe3JldHVybihNYXRoLnJhbmRvbSgpLS41KSoxZS02fWZ1bmN0aW9uIHoxdChlKXt2YXIgdD0rdGhpcy5feC5jYWxsKG51bGwsZSkscj0rdGhpcy5feS5jYWxsKG51bGwsZSk7cmV0dXJuIEYxdCh0aGlzLmNvdmVyKHQsciksdCxyLGUpfWZ1bmN0aW9uIEYxdChlLHQscixuKXtpZihpc05hTih0KXx8aXNOYU4ocikpcmV0dXJuIGU7dmFyIGksbz1lLl9yb290LGE9e2RhdGE6bn0scz1lLl94MCxsPWUuX3kwLGM9ZS5feDEsdT1lLl95MSxoLGYscCxkLGcsXyx5LHg7aWYoIW8pcmV0dXJuIGUuX3Jvb3Q9YSxlO2Zvcig7by5sZW5ndGg7KWlmKChnPXQ+PShoPShzK2MpLzIpKT9zPWg6Yz1oLChfPXI+PShmPShsK3UpLzIpKT9sPWY6dT1mLGk9bywhKG89b1t5PV88PDF8Z10pKXJldHVybiBpW3ldPWEsZTtpZihwPStlLl94LmNhbGwobnVsbCxvLmRhdGEpLGQ9K2UuX3kuY2FsbChudWxsLG8uZGF0YSksdD09PXAmJnI9PT1kKXJldHVybiBhLm5leHQ9byxpP2lbeV09YTplLl9yb290PWEsZTtkbyBpPWk/aVt5XT1uZXcgQXJyYXkoNCk6ZS5fcm9vdD1uZXcgQXJyYXkoNCksKGc9dD49KGg9KHMrYykvMikpP3M9aDpjPWgsKF89cj49KGY9KGwrdSkvMikpP2w9Zjp1PWY7d2hpbGUoKHk9Xzw8MXxnKT09PSh4PShkPj1mKTw8MXxwPj1oKSk7cmV0dXJuIGlbeF09byxpW3ldPWEsZX1mdW5jdGlvbiBCMXQoZSl7dmFyIHQscixuPWUubGVuZ3RoLGksbyxhPW5ldyBBcnJheShuKSxzPW5ldyBBcnJheShuKSxsPTEvMCxjPTEvMCx1PS0xLzAsaD0tMS8wO2ZvcihyPTA7cjxuOysrcilpc05hTihpPSt0aGlzLl94LmNhbGwobnVsbCx0PWVbcl0pKXx8aXNOYU4obz0rdGhpcy5feS5jYWxsKG51bGwsdCkpfHwoYVtyXT1pLHNbcl09byxpPGwmJihsPWkpLGk+dSYmKHU9aSksbzxjJiYoYz1vKSxvPmgmJihoPW8pKTtpZihsPnV8fGM+aClyZXR1cm4gdGhpcztmb3IodGhpcy5jb3ZlcihsLGMpLmNvdmVyKHUsaCkscj0wO3I8bjsrK3IpRjF0KHRoaXMsYVtyXSxzW3JdLGVbcl0pO3JldHVybiB0aGlzfWZ1bmN0aW9uIEgxdChlLHQpe2lmKGlzTmFOKGU9K2UpfHxpc05hTih0PSt0KSlyZXR1cm4gdGhpczt2YXIgcj10aGlzLl94MCxuPXRoaXMuX3kwLGk9dGhpcy5feDEsbz10aGlzLl95MTtpZihpc05hTihyKSlpPShyPU1hdGguZmxvb3IoZSkpKzEsbz0obj1NYXRoLmZsb29yKHQpKSsxO2Vsc2V7Zm9yKHZhciBhPWktcixzPXRoaXMuX3Jvb3QsbCxjO3I+ZXx8ZT49aXx8bj50fHx0Pj1vOylzd2l0Y2goYz0odDxuKTw8MXxlPHIsbD1uZXcgQXJyYXkoNCksbFtjXT1zLHM9bCxhKj0yLGMpe2Nhc2UgMDppPXIrYSxvPW4rYTticmVhaztjYXNlIDE6cj1pLWEsbz1uK2E7YnJlYWs7Y2FzZSAyOmk9cithLG49by1hO2JyZWFrO2Nhc2UgMzpyPWktYSxuPW8tYTticmVha310aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9cyl9cmV0dXJuIHRoaXMuX3gwPXIsdGhpcy5feTA9bix0aGlzLl94MT1pLHRoaXMuX3kxPW8sdGhpc31mdW5jdGlvbiBWMXQoKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbih0KXtpZighdC5sZW5ndGgpZG8gZS5wdXNoKHQuZGF0YSk7d2hpbGUodD10Lm5leHQpfSksZX1mdW5jdGlvbiBVMXQoZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrZVswXVswXSwrZVswXVsxXSkuY292ZXIoK2VbMV1bMF0sK2VbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19ZnVuY3Rpb24gX28oZSx0LHIsbixpKXt0aGlzLm5vZGU9ZSx0aGlzLngwPXQsdGhpcy55MD1yLHRoaXMueDE9bix0aGlzLnkxPWl9ZnVuY3Rpb24gcTF0KGUsdCxyKXt2YXIgbixpPXRoaXMuX3gwLG89dGhpcy5feTAsYSxzLGwsYyx1PXRoaXMuX3gxLGg9dGhpcy5feTEsZj1bXSxwPXRoaXMuX3Jvb3QsZCxnO2ZvcihwJiZmLnB1c2gobmV3IF9vKHAsaSxvLHUsaCkpLHI9PW51bGw/cj0xLzA6KGk9ZS1yLG89dC1yLHU9ZStyLGg9dCtyLHIqPXIpO2Q9Zi5wb3AoKTspaWYoISghKHA9ZC5ub2RlKXx8KGE9ZC54MCk+dXx8KHM9ZC55MCk+aHx8KGw9ZC54MSk8aXx8KGM9ZC55MSk8bykpaWYocC5sZW5ndGgpe3ZhciBfPShhK2wpLzIseT0ocytjKS8yO2YucHVzaChuZXcgX28ocFszXSxfLHksbCxjKSxuZXcgX28ocFsyXSxhLHksXyxjKSxuZXcgX28ocFsxXSxfLHMsbCx5KSxuZXcgX28ocFswXSxhLHMsXyx5KSksKGc9KHQ+PXkpPDwxfGU+PV8pJiYoZD1mW2YubGVuZ3RoLTFdLGZbZi5sZW5ndGgtMV09ZltmLmxlbmd0aC0xLWddLGZbZi5sZW5ndGgtMS1nXT1kKX1lbHNle3ZhciB4PWUtK3RoaXMuX3guY2FsbChudWxsLHAuZGF0YSksYj10LSt0aGlzLl95LmNhbGwobnVsbCxwLmRhdGEpLFM9eCp4K2IqYjtpZihTPHIpe3ZhciBDPU1hdGguc3FydChyPVMpO2k9ZS1DLG89dC1DLHU9ZStDLGg9dCtDLG49cC5kYXRhfX1yZXR1cm4gbn1mdW5jdGlvbiBHMXQoZSl7aWYoaXNOYU4odT0rdGhpcy5feC5jYWxsKG51bGwsZSkpfHxpc05hTihoPSt0aGlzLl95LmNhbGwobnVsbCxlKSkpcmV0dXJuIHRoaXM7dmFyIHQscj10aGlzLl9yb290LG4saSxvLGE9dGhpcy5feDAscz10aGlzLl95MCxsPXRoaXMuX3gxLGM9dGhpcy5feTEsdSxoLGYscCxkLGcsXyx5O2lmKCFyKXJldHVybiB0aGlzO2lmKHIubGVuZ3RoKWZvcig7Oyl7aWYoKGQ9dT49KGY9KGErbCkvMikpP2E9ZjpsPWYsKGc9aD49KHA9KHMrYykvMikpP3M9cDpjPXAsdD1yLCEocj1yW189Zzw8MXxkXSkpcmV0dXJuIHRoaXM7aWYoIXIubGVuZ3RoKWJyZWFrOyh0W18rMSYzXXx8dFtfKzImM118fHRbXyszJjNdKSYmKG49dCx5PV8pfWZvcig7ci5kYXRhIT09ZTspaWYoaT1yLCEocj1yLm5leHQpKXJldHVybiB0aGlzO3JldHVybihvPXIubmV4dCkmJmRlbGV0ZSByLm5leHQsaT8obz9pLm5leHQ9bzpkZWxldGUgaS5uZXh0LHRoaXMpOnQ/KG8/dFtfXT1vOmRlbGV0ZSB0W19dLChyPXRbMF18fHRbMV18fHRbMl18fHRbM10pJiZyPT09KHRbM118fHRbMl18fHRbMV18fHRbMF0pJiYhci5sZW5ndGgmJihuP25beV09cjp0aGlzLl9yb290PXIpLHRoaXMpOih0aGlzLl9yb290PW8sdGhpcyl9ZnVuY3Rpb24gVzF0KGUpe2Zvcih2YXIgdD0wLHI9ZS5sZW5ndGg7dDxyOysrdCl0aGlzLnJlbW92ZShlW3RdKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBZMXQoKXtyZXR1cm4gdGhpcy5fcm9vdH1mdW5jdGlvbiBqMXQoKXt2YXIgZT0wO3JldHVybiB0aGlzLnZpc2l0KGZ1bmN0aW9uKHQpe2lmKCF0Lmxlbmd0aClkbysrZTt3aGlsZSh0PXQubmV4dCl9KSxlfWZ1bmN0aW9uIFgxdChlKXt2YXIgdD1bXSxyLG49dGhpcy5fcm9vdCxpLG8sYSxzLGw7Zm9yKG4mJnQucHVzaChuZXcgX28obix0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO3I9dC5wb3AoKTspaWYoIWUobj1yLm5vZGUsbz1yLngwLGE9ci55MCxzPXIueDEsbD1yLnkxKSYmbi5sZW5ndGgpe3ZhciBjPShvK3MpLzIsdT0oYStsKS8yOyhpPW5bM10pJiZ0LnB1c2gobmV3IF9vKGksYyx1LHMsbCkpLChpPW5bMl0pJiZ0LnB1c2gobmV3IF9vKGksbyx1LGMsbCkpLChpPW5bMV0pJiZ0LnB1c2gobmV3IF9vKGksYyxhLHMsdSkpLChpPW5bMF0pJiZ0LnB1c2gobmV3IF9vKGksbyxhLGMsdSkpfXJldHVybiB0aGlzfWZ1bmN0aW9uICQxdChlKXt2YXIgdD1bXSxyPVtdLG47Zm9yKHRoaXMuX3Jvb3QmJnQucHVzaChuZXcgX28odGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO249dC5wb3AoKTspe3ZhciBpPW4ubm9kZTtpZihpLmxlbmd0aCl7dmFyIG8sYT1uLngwLHM9bi55MCxsPW4ueDEsYz1uLnkxLHU9KGErbCkvMixoPShzK2MpLzI7KG89aVswXSkmJnQucHVzaChuZXcgX28obyxhLHMsdSxoKSksKG89aVsxXSkmJnQucHVzaChuZXcgX28obyx1LHMsbCxoKSksKG89aVsyXSkmJnQucHVzaChuZXcgX28obyxhLGgsdSxjKSksKG89aVszXSkmJnQucHVzaChuZXcgX28obyx1LGgsbCxjKSl9ci5wdXNoKG4pfWZvcig7bj1yLnBvcCgpOyllKG4ubm9kZSxuLngwLG4ueTAsbi54MSxuLnkxKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBLMXQoZSl7cmV0dXJuIGVbMF19ZnVuY3Rpb24gWjF0KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl94PWUsdGhpcyk6dGhpcy5feH1mdW5jdGlvbiBKMXQoZSl7cmV0dXJuIGVbMV19ZnVuY3Rpb24gUTF0KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PWUsdGhpcyk6dGhpcy5feX1mdW5jdGlvbiBPaChlLHQscil7dmFyIG49bmV3IGFqKHQ9PW51bGw/SzF0OnQscj09bnVsbD9KMXQ6cixOYU4sTmFOLE5hTixOYU4pO3JldHVybiBlPT1udWxsP246bi5hZGRBbGwoZSl9ZnVuY3Rpb24gYWooZSx0LHIsbixpLG8pe3RoaXMuX3g9ZSx0aGlzLl95PXQsdGhpcy5feDA9cix0aGlzLl95MD1uLHRoaXMuX3gxPWksdGhpcy5feTE9byx0aGlzLl9yb290PXZvaWQgMH1mdW5jdGlvbiB0eHQoZSl7Zm9yKHZhciB0PXtkYXRhOmUuZGF0YX0scj10O2U9ZS5uZXh0OylyPXIubmV4dD17ZGF0YTplLmRhdGF9O3JldHVybiB0fXZhciBPYT1PaC5wcm90b3R5cGU9YWoucHJvdG90eXBlO09hLmNvcHk9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgYWoodGhpcy5feCx0aGlzLl95LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSx0PXRoaXMuX3Jvb3QscixuO2lmKCF0KXJldHVybiBlO2lmKCF0Lmxlbmd0aClyZXR1cm4gZS5fcm9vdD10eHQodCksZTtmb3Iocj1be3NvdXJjZTp0LHRhcmdldDplLl9yb290PW5ldyBBcnJheSg0KX1dO3Q9ci5wb3AoKTspZm9yKHZhciBpPTA7aTw0OysraSkobj10LnNvdXJjZVtpXSkmJihuLmxlbmd0aD9yLnB1c2goe3NvdXJjZTpuLHRhcmdldDp0LnRhcmdldFtpXT1uZXcgQXJyYXkoNCl9KTp0LnRhcmdldFtpXT10eHQobikpO3JldHVybiBlfTtPYS5hZGQ9ejF0O09hLmFkZEFsbD1CMXQ7T2EuY292ZXI9SDF0O09hLmRhdGE9VjF0O09hLmV4dGVudD1VMXQ7T2EuZmluZD1xMXQ7T2EucmVtb3ZlPUcxdDtPYS5yZW1vdmVBbGw9VzF0O09hLnJvb3Q9WTF0O09hLnNpemU9ajF0O09hLnZpc2l0PVgxdDtPYS52aXNpdEFmdGVyPSQxdDtPYS54PVoxdDtPYS55PVExdDtmdW5jdGlvbiBWU2UoZSl7cmV0dXJuIGUueCtlLnZ4fWZ1bmN0aW9uIFVTZShlKXtyZXR1cm4gZS55K2Uudnl9ZnVuY3Rpb24gZXh0KGUpe3ZhciB0LHIsbj0xLGk9MTt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9T24oZT09bnVsbD8xOitlKSk7ZnVuY3Rpb24gbygpe2Zvcih2YXIgbCxjPXQubGVuZ3RoLHUsaCxmLHAsZCxnLF89MDtfPGk7KytfKWZvcih1PU9oKHQsVlNlLFVTZSkudmlzaXRBZnRlcihhKSxsPTA7bDxjOysrbCloPXRbbF0sZD1yW2guaW5kZXhdLGc9ZCpkLGY9aC54K2gudngscD1oLnkraC52eSx1LnZpc2l0KHkpO2Z1bmN0aW9uIHkoeCxiLFMsQyxQKXt2YXIgaz14LmRhdGEsTz14LnIsRD1kK087aWYoayl7aWYoay5pbmRleD5oLmluZGV4KXt2YXIgQj1mLWsueC1rLnZ4LEk9cC1rLnktay52eSxMPUIqQitJKkk7TDxEKkQmJihCPT09MCYmKEI9aHUoKSxMKz1CKkIpLEk9PT0wJiYoST1odSgpLEwrPUkqSSksTD0oRC0oTD1NYXRoLnNxcnQoTCkpKS9MKm4saC52eCs9KEIqPUwpKihEPShPKj1PKS8oZytPKSksaC52eSs9KEkqPUwpKkQsay52eC09QiooRD0xLUQpLGsudnktPUkqRCl9cmV0dXJufXJldHVybiBiPmYrRHx8QzxmLUR8fFM+cCtEfHxQPHAtRH19ZnVuY3Rpb24gYShsKXtpZihsLmRhdGEpcmV0dXJuIGwucj1yW2wuZGF0YS5pbmRleF07Zm9yKHZhciBjPWwucj0wO2M8NDsrK2MpbFtjXSYmbFtjXS5yPmwuciYmKGwucj1sW2NdLnIpfWZ1bmN0aW9uIHMoKXtpZighIXQpe3ZhciBsLGM9dC5sZW5ndGgsdTtmb3Iocj1uZXcgQXJyYXkoYyksbD0wO2w8YzsrK2wpdT10W2xdLHJbdS5pbmRleF09K2UodSxsLHQpfX1yZXR1cm4gby5pbml0aWFsaXplPWZ1bmN0aW9uKGwpe3Q9bCxzKCl9LG8uaXRlcmF0aW9ucz1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rbCxvKTppfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPStsLG8pOm59LG8ucmFkaXVzPWZ1bmN0aW9uKGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBsPT0iZnVuY3Rpb24iP2w6T24oK2wpLHMoKSxvKTplfSxvfUViKCk7ZnVuY3Rpb24gcVNlKGUpe3JldHVybiBlLmluZGV4fWZ1bmN0aW9uIHJ4dChlLHQpe3ZhciByPWUuZ2V0KHQpO2lmKCFyKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIit0KTtyZXR1cm4gcn1mdW5jdGlvbiBueHQoZSl7dmFyIHQ9cVNlLHI9dSxuLGk9T24oMzApLG8sYSxzLGwsYz0xO2U9PW51bGwmJihlPVtdKTtmdW5jdGlvbiB1KGcpe3JldHVybiAxL01hdGgubWluKHNbZy5zb3VyY2UuaW5kZXhdLHNbZy50YXJnZXQuaW5kZXhdKX1mdW5jdGlvbiBoKGcpe2Zvcih2YXIgXz0wLHk9ZS5sZW5ndGg7XzxjOysrXylmb3IodmFyIHg9MCxiLFMsQyxQLGssTyxEO3g8eTsrK3gpYj1lW3hdLFM9Yi5zb3VyY2UsQz1iLnRhcmdldCxQPUMueCtDLnZ4LVMueC1TLnZ4fHxodSgpLGs9Qy55K0MudnktUy55LVMudnl8fGh1KCksTz1NYXRoLnNxcnQoUCpQK2sqayksTz0oTy1vW3hdKS9PKmcqblt4XSxQKj1PLGsqPU8sQy52eC09UCooRD1sW3hdKSxDLnZ5LT1rKkQsUy52eCs9UCooRD0xLUQpLFMudnkrPWsqRH1mdW5jdGlvbiBmKCl7aWYoISFhKXt2YXIgZyxfPWEubGVuZ3RoLHk9ZS5sZW5ndGgseD1aaShhLHQpLGI7Zm9yKGc9MCxzPW5ldyBBcnJheShfKTtnPHk7KytnKWI9ZVtnXSxiLmluZGV4PWcsdHlwZW9mIGIuc291cmNlIT0ib2JqZWN0IiYmKGIuc291cmNlPXJ4dCh4LGIuc291cmNlKSksdHlwZW9mIGIudGFyZ2V0IT0ib2JqZWN0IiYmKGIudGFyZ2V0PXJ4dCh4LGIudGFyZ2V0KSksc1tiLnNvdXJjZS5pbmRleF09KHNbYi5zb3VyY2UuaW5kZXhdfHwwKSsxLHNbYi50YXJnZXQuaW5kZXhdPShzW2IudGFyZ2V0LmluZGV4XXx8MCkrMTtmb3IoZz0wLGw9bmV3IEFycmF5KHkpO2c8eTsrK2cpYj1lW2ddLGxbZ109c1tiLnNvdXJjZS5pbmRleF0vKHNbYi5zb3VyY2UuaW5kZXhdK3NbYi50YXJnZXQuaW5kZXhdKTtuPW5ldyBBcnJheSh5KSxwKCksbz1uZXcgQXJyYXkoeSksZCgpfX1mdW5jdGlvbiBwKCl7aWYoISFhKWZvcih2YXIgZz0wLF89ZS5sZW5ndGg7ZzxfOysrZyluW2ddPStyKGVbZ10sZyxlKX1mdW5jdGlvbiBkKCl7aWYoISFhKWZvcih2YXIgZz0wLF89ZS5sZW5ndGg7ZzxfOysrZylvW2ddPStpKGVbZ10sZyxlKX1yZXR1cm4gaC5pbml0aWFsaXplPWZ1bmN0aW9uKGcpe2E9ZyxmKCl9LGgubGlua3M9ZnVuY3Rpb24oZyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ZyxmKCksaCk6ZX0saC5pZD1mdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1nLGgpOnR9LGguaXRlcmF0aW9ucz1mdW5jdGlvbihnKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rZyxoKTpjfSxoLnN0cmVuZ3RoPWZ1bmN0aW9uKGcpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiBnPT0iZnVuY3Rpb24iP2c6T24oK2cpLHAoKSxoKTpyfSxoLmRpc3RhbmNlPWZ1bmN0aW9uKGcpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBnPT0iZnVuY3Rpb24iP2c6T24oK2cpLGQoKSxoKTppfSxofWttKCk7RWIoKTtmdW5jdGlvbiBpeHQoZSl7cmV0dXJuIGUueH1mdW5jdGlvbiBveHQoZSl7cmV0dXJuIGUueX12YXIgR1NlPTEwLFdTZT1NYXRoLlBJKigzLU1hdGguc3FydCg1KSk7ZnVuY3Rpb24gYXh0KGUpe3ZhciB0LHI9MSxuPS4wMDEsaT0xLU1hdGgucG93KG4sMS8zMDApLG89MCxhPS42LHM9WmkoKSxsPUFfKHUpLGM9eXMoInRpY2siLCJlbmQiKTtlPT1udWxsJiYoZT1bXSk7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLHQpLHI8biYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIix0KSl9ZnVuY3Rpb24gaChkKXt2YXIgZyxfPWUubGVuZ3RoLHk7ZD09PXZvaWQgMCYmKGQ9MSk7Zm9yKHZhciB4PTA7eDxkOysreClmb3Iocis9KG8tcikqaSxzLmVhY2goZnVuY3Rpb24oYil7YihyKX0pLGc9MDtnPF87KytnKXk9ZVtnXSx5LmZ4PT1udWxsP3kueCs9eS52eCo9YTooeS54PXkuZngseS52eD0wKSx5LmZ5PT1udWxsP3kueSs9eS52eSo9YTooeS55PXkuZnkseS52eT0wKTtyZXR1cm4gdH1mdW5jdGlvbiBmKCl7Zm9yKHZhciBkPTAsZz1lLmxlbmd0aCxfO2Q8ZzsrK2Qpe2lmKF89ZVtkXSxfLmluZGV4PWQsXy5meCE9bnVsbCYmKF8ueD1fLmZ4KSxfLmZ5IT1udWxsJiYoXy55PV8uZnkpLGlzTmFOKF8ueCl8fGlzTmFOKF8ueSkpe3ZhciB5PUdTZSpNYXRoLnNxcnQoZCkseD1kKldTZTtfLng9eSpNYXRoLmNvcyh4KSxfLnk9eSpNYXRoLnNpbih4KX0oaXNOYU4oXy52eCl8fGlzTmFOKF8udnkpKSYmKF8udng9Xy52eT0wKX19ZnVuY3Rpb24gcChkKXtyZXR1cm4gZC5pbml0aWFsaXplJiZkLmluaXRpYWxpemUoZSksZH1yZXR1cm4gZigpLHQ9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSx0fSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLHR9LG5vZGVzOmZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWQsZigpLHMuZWFjaChwKSx0KTplfSxhbHBoYTpmdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rZCx0KTpyfSxhbHBoYU1pbjpmdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rZCx0KTpufSxhbHBoYURlY2F5OmZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPStkLHQpOitpfSxhbHBoYVRhcmdldDpmdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rZCx0KTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtZCx0KToxLWF9LGZvcmNlOmZ1bmN0aW9uKGQsZyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oZz09bnVsbD9zLnJlbW92ZShkKTpzLnNldChkLHAoZykpLHQpOnMuZ2V0KGQpfSxmaW5kOmZ1bmN0aW9uKGQsZyxfKXt2YXIgeT0wLHg9ZS5sZW5ndGgsYixTLEMsUCxrO2ZvcihfPT1udWxsP189MS8wOl8qPV8seT0wO3k8eDsrK3kpUD1lW3ldLGI9ZC1QLngsUz1nLVAueSxDPWIqYitTKlMsQzxfJiYoaz1QLF89Qyk7cmV0dXJuIGt9LG9uOmZ1bmN0aW9uKGQsZyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbihkLGcpLHQpOmMub24oZCl9fX1mdW5jdGlvbiBzeHQoKXt2YXIgZSx0LHIsbj1PbigtMzApLGksbz0xLGE9MS8wLHM9LjgxO2Z1bmN0aW9uIGwoZil7dmFyIHAsZD1lLmxlbmd0aCxnPU9oKGUsaXh0LG94dCkudmlzaXRBZnRlcih1KTtmb3Iocj1mLHA9MDtwPGQ7KytwKXQ9ZVtwXSxnLnZpc2l0KGgpfWZ1bmN0aW9uIGMoKXtpZighIWUpe3ZhciBmLHA9ZS5sZW5ndGgsZDtmb3IoaT1uZXcgQXJyYXkocCksZj0wO2Y8cDsrK2YpZD1lW2ZdLGlbZC5pbmRleF09K24oZCxmLGUpfX1mdW5jdGlvbiB1KGYpe3ZhciBwPTAsZCxnLF89MCx5LHgsYjtpZihmLmxlbmd0aCl7Zm9yKHk9eD1iPTA7Yjw0OysrYikoZD1mW2JdKSYmKGc9TWF0aC5hYnMoZC52YWx1ZSkpJiYocCs9ZC52YWx1ZSxfKz1nLHkrPWcqZC54LHgrPWcqZC55KTtmLng9eS9fLGYueT14L199ZWxzZXtkPWYsZC54PWQuZGF0YS54LGQueT1kLmRhdGEueTtkbyBwKz1pW2QuZGF0YS5pbmRleF07d2hpbGUoZD1kLm5leHQpfWYudmFsdWU9cH1mdW5jdGlvbiBoKGYscCxkLGcpe2lmKCFmLnZhbHVlKXJldHVybiEwO3ZhciBfPWYueC10LngseT1mLnktdC55LHg9Zy1wLGI9XypfK3kqeTtpZih4KngvczxiKXJldHVybiBiPGEmJihfPT09MCYmKF89aHUoKSxiKz1fKl8pLHk9PT0wJiYoeT1odSgpLGIrPXkqeSksYjxvJiYoYj1NYXRoLnNxcnQobypiKSksdC52eCs9XypmLnZhbHVlKnIvYix0LnZ5Kz15KmYudmFsdWUqci9iKSwhMDtpZihmLmxlbmd0aHx8Yj49YSlyZXR1cm47KGYuZGF0YSE9PXR8fGYubmV4dCkmJihfPT09MCYmKF89aHUoKSxiKz1fKl8pLHk9PT0wJiYoeT1odSgpLGIrPXkqeSksYjxvJiYoYj1NYXRoLnNxcnQobypiKSkpO2RvIGYuZGF0YSE9PXQmJih4PWlbZi5kYXRhLmluZGV4XSpyL2IsdC52eCs9Xyp4LHQudnkrPXkqeCk7d2hpbGUoZj1mLm5leHQpfXJldHVybiBsLmluaXRpYWxpemU9ZnVuY3Rpb24oZil7ZT1mLGMoKX0sbC5zdHJlbmd0aD1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2YgZj09ImZ1bmN0aW9uIj9mOk9uKCtmKSxjKCksbCk6bn0sbC5kaXN0YW5jZU1pbj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1mKmYsbCk6TWF0aC5zcXJ0KG8pfSxsLmRpc3RhbmNlTWF4PWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWYqZixsKTpNYXRoLnNxcnQoYSl9LGwudGhldGE9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ZipmLGwpOk1hdGguc3FydChzKX0sbH1mdW5jdGlvbiBseHQoZSx0LHIpe3ZhciBuLGk9T24oLjEpLG8sYTt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9T24oK2UpKSx0PT1udWxsJiYodD0wKSxyPT1udWxsJiYocj0wKTtmdW5jdGlvbiBzKGMpe2Zvcih2YXIgdT0wLGg9bi5sZW5ndGg7dTxoOysrdSl7dmFyIGY9blt1XSxwPWYueC10fHwxZS02LGQ9Zi55LXJ8fDFlLTYsZz1NYXRoLnNxcnQocCpwK2QqZCksXz0oYVt1XS1nKSpvW3VdKmMvZztmLnZ4Kz1wKl8sZi52eSs9ZCpffX1mdW5jdGlvbiBsKCl7aWYoISFuKXt2YXIgYyx1PW4ubGVuZ3RoO2ZvcihvPW5ldyBBcnJheSh1KSxhPW5ldyBBcnJheSh1KSxjPTA7Yzx1OysrYylhW2NdPStlKG5bY10sYyxuKSxvW2NdPWlzTmFOKGFbY10pPzA6K2kobltjXSxjLG4pfX1yZXR1cm4gcy5pbml0aWFsaXplPWZ1bmN0aW9uKGMpe249YyxsKCl9LHMuc3RyZW5ndGg9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpPbigrYyksbCgpLHMpOml9LHMucmFkaXVzPWZ1bmN0aW9uKGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBjPT0iZnVuY3Rpb24iP2M6T24oK2MpLGwoKSxzKTplfSxzLng9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K2Mscyk6dH0scy55PWZ1bmN0aW9uKGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPStjLHMpOnJ9LHN9ZnVuY3Rpb24gY3h0KGUpe3ZhciB0PU9uKC4xKSxyLG4saTt0eXBlb2YgZSE9ImZ1bmN0aW9uIiYmKGU9T24oZT09bnVsbD8wOitlKSk7ZnVuY3Rpb24gbyhzKXtmb3IodmFyIGw9MCxjPXIubGVuZ3RoLHU7bDxjOysrbCl1PXJbbF0sdS52eCs9KGlbbF0tdS54KSpuW2xdKnN9ZnVuY3Rpb24gYSgpe2lmKCEhcil7dmFyIHMsbD1yLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobCksaT1uZXcgQXJyYXkobCkscz0wO3M8bDsrK3MpbltzXT1pc05hTihpW3NdPStlKHJbc10scyxyKSk/MDordChyW3NdLHMscil9fXJldHVybiBvLmluaXRpYWxpemU9ZnVuY3Rpb24ocyl7cj1zLGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOk9uKCtzKSxhKCksbyk6dH0sby54PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6T24oK3MpLGEoKSxvKTplfSxvfWZ1bmN0aW9uIHV4dChlKXt2YXIgdD1PbiguMSkscixuLGk7dHlwZW9mIGUhPSJmdW5jdGlvbiImJihlPU9uKGU9PW51bGw/MDorZSkpO2Z1bmN0aW9uIG8ocyl7Zm9yKHZhciBsPTAsYz1yLmxlbmd0aCx1O2w8YzsrK2wpdT1yW2xdLHUudnkrPShpW2xdLXUueSkqbltsXSpzfWZ1bmN0aW9uIGEoKXtpZighIXIpe3ZhciBzLGw9ci5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGwpLGk9bmV3IEFycmF5KGwpLHM9MDtzPGw7KytzKW5bc109aXNOYU4oaVtzXT0rZShyW3NdLHMscikpPzA6K3QocltzXSxzLHIpfX1yZXR1cm4gby5pbml0aWFsaXplPWZ1bmN0aW9uKHMpe3I9cyxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpPbigrcyksYSgpLG8pOnR9LG8ueT1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOk9uKCtzKSxhKCksbyk6ZX0sb31mdW5jdGlvbiBoeHQoZSl7cmV0dXJuIE1hdGguYWJzKGU9TWF0aC5yb3VuZChlKSk+PTFlMjE/ZS50b0xvY2FsZVN0cmluZygiZW4iKS5yZXBsYWNlKC8sL2csIiIpOmUudG9TdHJpbmcoMTApfWZ1bmN0aW9uIE9fKGUsdCl7aWYoKHI9KGU9dD9lLnRvRXhwb25lbnRpYWwodC0xKTplLnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciByLG49ZS5zbGljZSgwLHIpO3JldHVybltuLmxlbmd0aD4xP25bMF0rbi5zbGljZSgyKTpuLCtlLnNsaWNlKHIrMSldfWZ1bmN0aW9uIHpoKGUpe3JldHVybiBlPU9fKE1hdGguYWJzKGUpKSxlP2VbMV06TmFOfWZ1bmN0aW9uIGZ4dChlLHQpe3JldHVybiBmdW5jdGlvbihyLG4pe2Zvcih2YXIgaT1yLmxlbmd0aCxvPVtdLGE9MCxzPWVbMF0sbD0wO2k+MCYmcz4wJiYobCtzKzE+biYmKHM9TWF0aC5tYXgoMSxuLWwpKSxvLnB1c2goci5zdWJzdHJpbmcoaS09cyxpK3MpKSwhKChsKz1zKzEpPm4pKTspcz1lW2E9KGErMSklZS5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKHQpfX1mdW5jdGlvbiBweHQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1swLTldL2csZnVuY3Rpb24ocil7cmV0dXJuIGVbK3JdfSl9fXZhciBZU2U9L14oPzooLik/KFs8Pj1eXSkpPyhbK1wtKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyh+KT8oW2EteiVdKT8kL2k7ZnVuY3Rpb24gTHAoZSl7aWYoISh0PVlTZS5leGVjKGUpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK2UpO3ZhciB0O3JldHVybiBuZXcgVkUoe2ZpbGw6dFsxXSxhbGlnbjp0WzJdLHNpZ246dFszXSxzeW1ib2w6dFs0XSx6ZXJvOnRbNV0sd2lkdGg6dFs2XSxjb21tYTp0WzddLHByZWNpc2lvbjp0WzhdJiZ0WzhdLnNsaWNlKDEpLHRyaW06dFs5XSx0eXBlOnRbMTBdfSl9THAucHJvdG90eXBlPVZFLnByb3RvdHlwZTtmdW5jdGlvbiBWRShlKXt0aGlzLmZpbGw9ZS5maWxsPT09dm9pZCAwPyIgIjplLmZpbGwrIiIsdGhpcy5hbGlnbj1lLmFsaWduPT09dm9pZCAwPyI+IjplLmFsaWduKyIiLHRoaXMuc2lnbj1lLnNpZ249PT12b2lkIDA/Ii0iOmUuc2lnbisiIix0aGlzLnN5bWJvbD1lLnN5bWJvbD09PXZvaWQgMD8iIjplLnN5bWJvbCsiIix0aGlzLnplcm89ISFlLnplcm8sdGhpcy53aWR0aD1lLndpZHRoPT09dm9pZCAwP3ZvaWQgMDorZS53aWR0aCx0aGlzLmNvbW1hPSEhZS5jb21tYSx0aGlzLnByZWNpc2lvbj1lLnByZWNpc2lvbj09PXZvaWQgMD92b2lkIDA6K2UucHJlY2lzaW9uLHRoaXMudHJpbT0hIWUudHJpbSx0aGlzLnR5cGU9ZS50eXBlPT09dm9pZCAwPyIiOmUudHlwZSsiIn1WRS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodGhpcy53aWR0aD09PXZvaWQgMD8iIjpNYXRoLm1heCgxLHRoaXMud2lkdGh8MCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHRoaXMucHJlY2lzaW9uPT09dm9pZCAwPyIiOiIuIitNYXRoLm1heCgwLHRoaXMucHJlY2lzaW9ufDApKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfTtmdW5jdGlvbiBkeHQoZSl7dDpmb3IodmFyIHQ9ZS5sZW5ndGgscj0xLG49LTEsaTtyPHQ7KytyKXN3aXRjaChlW3JdKXtjYXNlIi4iOm49aT1yO2JyZWFrO2Nhc2UiMCI6bj09PTAmJihuPXIpLGk9cjticmVhaztkZWZhdWx0OmlmKCErZVtyXSlicmVhayB0O24+MCYmKG49MCk7YnJlYWt9cmV0dXJuIG4+MD9lLnNsaWNlKDAsbikrZS5zbGljZShpKzEpOmV9dmFyIHNqO2Z1bmN0aW9uIG14dChlLHQpe3ZhciByPU9fKGUsdCk7aWYoIXIpcmV0dXJuIGUrIiI7dmFyIG49clswXSxpPXJbMV0sbz1pLShzaj1NYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoaS8zKSkpKjMpKzEsYT1uLmxlbmd0aDtyZXR1cm4gbz09PWE/bjpvPmE/bituZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/bi5zbGljZSgwLG8pKyIuIituLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK09fKGUsTWF0aC5tYXgoMCx0K28tMSkpWzBdfWZ1bmN0aW9uIGxqKGUsdCl7dmFyIHI9T18oZSx0KTtpZighcilyZXR1cm4gZSsiIjt2YXIgbj1yWzBdLGk9clsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrbjpuLmxlbmd0aD5pKzE/bi5zbGljZSgwLGkrMSkrIi4iK24uc2xpY2UoaSsxKTpuK25ldyBBcnJheShpLW4ubGVuZ3RoKzIpLmpvaW4oIjAiKX12YXIgY2o9eyIlIjpmdW5jdGlvbihlLHQpe3JldHVybihlKjEwMCkudG9GaXhlZCh0KX0sYjpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygyKX0sYzpmdW5jdGlvbihlKXtyZXR1cm4gZSsiIn0sZDpoeHQsZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnRvRXhwb25lbnRpYWwodCl9LGY6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50b0ZpeGVkKHQpfSxnOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudG9QcmVjaXNpb24odCl9LG86ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucm91bmQoZSkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbGooZSoxMDAsdCl9LHI6bGosczpteHQsWDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlKS50b1N0cmluZygxNil9fTtmdW5jdGlvbiB1aihlKXtyZXR1cm4gZX12YXIgZ3h0PUFycmF5LnByb3RvdHlwZS5tYXAsX3h0PVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiXHhCNSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIEpMKGUpe3ZhciB0PWUuZ3JvdXBpbmc9PT12b2lkIDB8fGUudGhvdXNhbmRzPT09dm9pZCAwP3VqOmZ4dChneHQuY2FsbChlLmdyb3VwaW5nLE51bWJlciksZS50aG91c2FuZHMrIiIpLHI9ZS5jdXJyZW5jeT09PXZvaWQgMD8iIjplLmN1cnJlbmN5WzBdKyIiLG49ZS5jdXJyZW5jeT09PXZvaWQgMD8iIjplLmN1cnJlbmN5WzFdKyIiLGk9ZS5kZWNpbWFsPT09dm9pZCAwPyIuIjplLmRlY2ltYWwrIiIsbz1lLm51bWVyYWxzPT09dm9pZCAwP3VqOnB4dChneHQuY2FsbChlLm51bWVyYWxzLFN0cmluZykpLGE9ZS5wZXJjZW50PT09dm9pZCAwPyIlIjplLnBlcmNlbnQrIiIscz1lLm1pbnVzPT09dm9pZCAwPyItIjplLm1pbnVzKyIiLGw9ZS5uYW49PT12b2lkIDA/Ik5hTiI6ZS5uYW4rIiI7ZnVuY3Rpb24gYyhoKXtoPUxwKGgpO3ZhciBmPWguZmlsbCxwPWguYWxpZ24sZD1oLnNpZ24sZz1oLnN5bWJvbCxfPWguemVybyx5PWgud2lkdGgseD1oLmNvbW1hLGI9aC5wcmVjaXNpb24sUz1oLnRyaW0sQz1oLnR5cGU7Qz09PSJuIj8oeD0hMCxDPSJnIik6Y2pbQ118fChiPT09dm9pZCAwJiYoYj0xMiksUz0hMCxDPSJnIiksKF98fGY9PT0iMCImJnA9PT0iPSIpJiYoXz0hMCxmPSIwIixwPSI9Iik7dmFyIFA9Zz09PSIkIj9yOmc9PT0iIyImJi9bYm94WF0vLnRlc3QoQyk/IjAiK0MudG9Mb3dlckNhc2UoKToiIixrPWc9PT0iJCI/bjovWyVwXS8udGVzdChDKT9hOiIiLE89Y2pbQ10sRD0vW2RlZmdwcnMlXS8udGVzdChDKTtiPWI9PT12b2lkIDA/NjovW2dwcnNdLy50ZXN0KEMpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsYikpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsYikpO2Z1bmN0aW9uIEIoSSl7dmFyIEw9UCxSPWssRix6LFU7aWYoQz09PSJjIilSPU8oSSkrUixJPSIiO2Vsc2V7ST0rSTt2YXIgVz1JPDB8fDEvSTwwO2lmKEk9aXNOYU4oSSk/bDpPKE1hdGguYWJzKEkpLGIpLFMmJihJPWR4dChJKSksVyYmK0k9PTAmJmQhPT0iKyImJihXPSExKSxMPShXP2Q9PT0iKCI/ZDpzOmQ9PT0iLSJ8fGQ9PT0iKCI/IiI6ZCkrTCxSPShDPT09InMiP194dFs4K3NqLzNdOiIiKStSKyhXJiZkPT09IigiPyIpIjoiIiksRCl7Zm9yKEY9LTEsej1JLmxlbmd0aDsrK0Y8ejspaWYoVT1JLmNoYXJDb2RlQXQoRiksNDg+VXx8VT41Nyl7Uj0oVT09PTQ2P2krSS5zbGljZShGKzEpOkkuc2xpY2UoRikpK1IsST1JLnNsaWNlKDAsRik7YnJlYWt9fX14JiYhXyYmKEk9dChJLDEvMCkpO3ZhciBaPUwubGVuZ3RoK0kubGVuZ3RoK1IubGVuZ3RoLHJ0PVo8eT9uZXcgQXJyYXkoeS1aKzEpLmpvaW4oZik6IiI7c3dpdGNoKHgmJl8mJihJPXQocnQrSSxydC5sZW5ndGg/eS1SLmxlbmd0aDoxLzApLHJ0PSIiKSxwKXtjYXNlIjwiOkk9TCtJK1IrcnQ7YnJlYWs7Y2FzZSI9IjpJPUwrcnQrSStSO2JyZWFrO2Nhc2UiXiI6ST1ydC5zbGljZSgwLFo9cnQubGVuZ3RoPj4xKStMK0krUitydC5zbGljZShaKTticmVhaztkZWZhdWx0Okk9cnQrTCtJK1I7YnJlYWt9cmV0dXJuIG8oSSl9cmV0dXJuIEIudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaCsiIn0sQn1mdW5jdGlvbiB1KGgsZil7dmFyIHA9YygoaD1McChoKSxoLnR5cGU9ImYiLGgpKSxkPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcih6aChmKS8zKSkpKjMsZz1NYXRoLnBvdygxMCwtZCksXz1feHRbOCtkLzNdO3JldHVybiBmdW5jdGlvbih5KXtyZXR1cm4gcChnKnkpK199fXJldHVybntmb3JtYXQ6Yyxmb3JtYXRQcmVmaXg6dX19dmFyIFFMLHhuLFVFO3RrKHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KTtmdW5jdGlvbiB0ayhlKXtyZXR1cm4gUUw9SkwoZSkseG49UUwuZm9ybWF0LFVFPVFMLmZvcm1hdFByZWZpeCxRTH1mdW5jdGlvbiBlayhlKXtyZXR1cm4gTWF0aC5tYXgoMCwtemgoTWF0aC5hYnMoZSkpKX1mdW5jdGlvbiByayhlLHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcih6aCh0KS8zKSkpKjMtemgoTWF0aC5hYnMoZSkpKX1mdW5jdGlvbiBuayhlLHQpe3JldHVybiBlPU1hdGguYWJzKGUpLHQ9TWF0aC5hYnModCktZSxNYXRoLm1heCgwLHpoKHQpLXpoKGUpKSsxfWZ1bmN0aW9uIHdzKCl7cmV0dXJuIG5ldyBva31mdW5jdGlvbiBvaygpe3RoaXMucmVzZXQoKX1vay5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm9rLHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSxhZGQ6ZnVuY3Rpb24oZSl7eXh0KGlrLGUsdGhpcy50KSx5eHQodGhpcyxpay5zLHRoaXMucyksdGhpcy5zP3RoaXMudCs9aWsudDp0aGlzLnM9aWsudH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN9fTt2YXIgaWs9bmV3IG9rO2Z1bmN0aW9uIHl4dChlLHQscil7dmFyIG49ZS5zPXQrcixpPW4tdCxvPW4taTtlLnQ9dC1vKyhyLWkpfXZhciBsZT0xZS02LHpfPTFlLTEyLEJlPU1hdGguUEksbW49QmUvMixBYj1CZS80LFNpPUJlKjIsdnI9MTgwL0JlLF9lPUJlLzE4MCxSZT1NYXRoLmFicyxyYz1NYXRoLmF0YW4sYm49TWF0aC5hdGFuMixadD1NYXRoLmNvcyxxRT1NYXRoLmNlaWwsYWs9TWF0aC5leHA7dmFyIEZfPU1hdGgubG9nLHNrPU1hdGgucG93LFh0PU1hdGguc2luLGxhPU1hdGguc2lnbnx8ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD8xOmU8MD8tMTowfSx4cj1NYXRoLnNxcnQsUGI9TWF0aC50YW47ZnVuY3Rpb24gbGsoZSl7cmV0dXJuIGU+MT8wOmU8LTE/QmU6TWF0aC5hY29zKGUpfWZ1bmN0aW9uIHduKGUpe3JldHVybiBlPjE/bW46ZTwtMT8tbW46TWF0aC5hc2luKGUpfWZ1bmN0aW9uIGhqKGUpe3JldHVybihlPVh0KGUvMikpKmV9ZnVuY3Rpb24gRnIoKXt9ZnVuY3Rpb24gY2soZSx0KXtlJiZ4eHQuaGFzT3duUHJvcGVydHkoZS50eXBlKSYmeHh0W2UudHlwZV0oZSx0KX12YXIgdnh0PXtGZWF0dXJlOmZ1bmN0aW9uKGUsdCl7Y2soZS5nZW9tZXRyeSx0KX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9ZS5mZWF0dXJlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KWNrKHJbbl0uZ2VvbWV0cnksdCl9fSx4eHQ9e1NwaGVyZTpmdW5jdGlvbihlLHQpe3Quc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKGUsdCl7ZT1lLmNvb3JkaW5hdGVzLHQucG9pbnQoZVswXSxlWzFdLGVbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPWUuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOyllPXJbbl0sdC5wb2ludChlWzBdLGVbMV0sZVsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24oZSx0KXtmaihlLmNvb3JkaW5hdGVzLHQsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspZmoocltuXSx0LDApfSxQb2x5Z29uOmZ1bmN0aW9uKGUsdCl7Ynh0KGUuY29vcmRpbmF0ZXMsdCl9LE11bHRpUG9seWdvbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspYnh0KHJbbl0sdCl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmdlb21ldHJpZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOyljayhyW25dLHQpfX07ZnVuY3Rpb24gZmooZSx0LHIpe3ZhciBuPS0xLGk9ZS5sZW5ndGgtcixvO2Zvcih0LmxpbmVTdGFydCgpOysrbjxpOylvPWVbbl0sdC5wb2ludChvWzBdLG9bMV0sb1syXSk7dC5saW5lRW5kKCl9ZnVuY3Rpb24gYnh0KGUsdCl7dmFyIHI9LTEsbj1lLmxlbmd0aDtmb3IodC5wb2x5Z29uU3RhcnQoKTsrK3I8bjspZmooZVtyXSx0LDEpO3QucG9seWdvbkVuZCgpfWZ1bmN0aW9uIHlvKGUsdCl7ZSYmdnh0Lmhhc093blByb3BlcnR5KGUudHlwZSk/dnh0W2UudHlwZV0oZSx0KTpjayhlLHQpfXZhciBHRT13cygpLHVrPXdzKCksd3h0LFN4dCxwaixkaixtaixmdT17cG9pbnQ6RnIsbGluZVN0YXJ0OkZyLGxpbmVFbmQ6RnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7R0UucmVzZXQoKSxmdS5saW5lU3RhcnQ9alNlLGZ1LmxpbmVFbmQ9WFNlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIGU9K0dFO3VrLmFkZChlPDA/U2krZTplKSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD1Gcn0sc3BoZXJlOmZ1bmN0aW9uKCl7dWsuYWRkKFNpKX19O2Z1bmN0aW9uIGpTZSgpe2Z1LnBvaW50PSRTZX1mdW5jdGlvbiBYU2UoKXtNeHQod3h0LFN4dCl9ZnVuY3Rpb24gJFNlKGUsdCl7ZnUucG9pbnQ9TXh0LHd4dD1lLFN4dD10LGUqPV9lLHQqPV9lLHBqPWUsZGo9WnQodD10LzIrQWIpLG1qPVh0KHQpfWZ1bmN0aW9uIE14dChlLHQpe2UqPV9lLHQqPV9lLHQ9dC8yK0FiO3ZhciByPWUtcGosbj1yPj0wPzE6LTEsaT1uKnIsbz1adCh0KSxhPVh0KHQpLHM9bWoqYSxsPWRqKm8rcypadChpKSxjPXMqbipYdChpKTtHRS5hZGQoYm4oYyxsKSkscGo9ZSxkaj1vLG1qPWF9ZnVuY3Rpb24gRXh0KGUpe3JldHVybiB1ay5yZXNldCgpLHlvKGUsZnUpLHVrKjJ9ZnVuY3Rpb24gQl8oZSl7cmV0dXJuW2JuKGVbMV0sZVswXSksd24oZVsyXSldfWZ1bmN0aW9uIG5jKGUpe3ZhciB0PWVbMF0scj1lWzFdLG49WnQocik7cmV0dXJuW24qWnQodCksbipYdCh0KSxYdChyKV19ZnVuY3Rpb24gV0UoZSx0KXtyZXR1cm4gZVswXSp0WzBdK2VbMV0qdFsxXStlWzJdKnRbMl19ZnVuY3Rpb24ga3AoZSx0KXtyZXR1cm5bZVsxXSp0WzJdLWVbMl0qdFsxXSxlWzJdKnRbMF0tZVswXSp0WzJdLGVbMF0qdFsxXS1lWzFdKnRbMF1dfWZ1bmN0aW9uIGhrKGUsdCl7ZVswXSs9dFswXSxlWzFdKz10WzFdLGVbMl0rPXRbMl19ZnVuY3Rpb24gWUUoZSx0KXtyZXR1cm5bZVswXSp0LGVbMV0qdCxlWzJdKnRdfWZ1bmN0aW9uIEhfKGUpe3ZhciB0PXhyKGVbMF0qZVswXStlWzFdKmVbMV0rZVsyXSplWzJdKTtlWzBdLz10LGVbMV0vPXQsZVsyXS89dH12YXIgbmksU3MsaGkscmwsVl8sUHh0LEl4dCxJYixqRT13cygpLFltLE5wLFJwPXtwb2ludDpnaixsaW5lU3RhcnQ6VHh0LGxpbmVFbmQ6Q3h0LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1JwLnBvaW50PWt4dCxScC5saW5lU3RhcnQ9S1NlLFJwLmxpbmVFbmQ9WlNlLGpFLnJlc2V0KCksZnUucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmdS5wb2x5Z29uRW5kKCksUnAucG9pbnQ9Z2osUnAubGluZVN0YXJ0PVR4dCxScC5saW5lRW5kPUN4dCxHRTwwPyhuaT0tKGhpPTE4MCksU3M9LShybD05MCkpOmpFPmxlP3JsPTkwOmpFPC1sZSYmKFNzPS05MCksTnBbMF09bmksTnBbMV09aGl9LHNwaGVyZTpmdW5jdGlvbigpe25pPS0oaGk9MTgwKSxTcz0tKHJsPTkwKX19O2Z1bmN0aW9uIGdqKGUsdCl7WW0ucHVzaChOcD1bbmk9ZSxoaT1lXSksdDxTcyYmKFNzPXQpLHQ+cmwmJihybD10KX1mdW5jdGlvbiBMeHQoZSx0KXt2YXIgcj1uYyhbZSpfZSx0Kl9lXSk7aWYoSWIpe3ZhciBuPWtwKEliLHIpLGk9W25bMV0sLW5bMF0sMF0sbz1rcChpLG4pO0hfKG8pLG89Ql8obyk7dmFyIGE9ZS1WXyxzPWE+MD8xOi0xLGw9b1swXSp2cipzLGMsdT1SZShhKT4xODA7dV4ocypWXzxsJiZsPHMqZSk/KGM9b1sxXSp2cixjPnJsJiYocmw9YykpOihsPShsKzM2MCklMzYwLTE4MCx1XihzKlZfPGwmJmw8cyplKT8oYz0tb1sxXSp2cixjPFNzJiYoU3M9YykpOih0PFNzJiYoU3M9dCksdD5ybCYmKHJsPXQpKSksdT9lPFZfP2VsKG5pLGUpPmVsKG5pLGhpKSYmKGhpPWUpOmVsKGUsaGkpPmVsKG5pLGhpKSYmKG5pPWUpOmhpPj1uaT8oZTxuaSYmKG5pPWUpLGU+aGkmJihoaT1lKSk6ZT5WXz9lbChuaSxlKT5lbChuaSxoaSkmJihoaT1lKTplbChlLGhpKT5lbChuaSxoaSkmJihuaT1lKX1lbHNlIFltLnB1c2goTnA9W25pPWUsaGk9ZV0pO3Q8U3MmJihTcz10KSx0PnJsJiYocmw9dCksSWI9cixWXz1lfWZ1bmN0aW9uIFR4dCgpe1JwLnBvaW50PUx4dH1mdW5jdGlvbiBDeHQoKXtOcFswXT1uaSxOcFsxXT1oaSxScC5wb2ludD1naixJYj1udWxsfWZ1bmN0aW9uIGt4dChlLHQpe2lmKEliKXt2YXIgcj1lLVZfO2pFLmFkZChSZShyKT4xODA/cisocj4wPzM2MDotMzYwKTpyKX1lbHNlIFB4dD1lLEl4dD10O2Z1LnBvaW50KGUsdCksTHh0KGUsdCl9ZnVuY3Rpb24gS1NlKCl7ZnUubGluZVN0YXJ0KCl9ZnVuY3Rpb24gWlNlKCl7a3h0KFB4dCxJeHQpLGZ1LmxpbmVFbmQoKSxSZShqRSk+bGUmJihuaT0tKGhpPTE4MCkpLE5wWzBdPW5pLE5wWzFdPWhpLEliPW51bGx9ZnVuY3Rpb24gZWwoZSx0KXtyZXR1cm4odC09ZSk8MD90KzM2MDp0fWZ1bmN0aW9uIEpTZShlLHQpe3JldHVybiBlWzBdLXRbMF19ZnVuY3Rpb24gQXh0KGUsdCl7cmV0dXJuIGVbMF08PWVbMV0/ZVswXTw9dCYmdDw9ZVsxXTp0PGVbMF18fGVbMV08dH1mdW5jdGlvbiBSeHQoZSl7dmFyIHQscixuLGksbyxhLHM7aWYocmw9aGk9LShuaT1Tcz0xLzApLFltPVtdLHlvKGUsUnApLHI9WW0ubGVuZ3RoKXtmb3IoWW0uc29ydChKU2UpLHQ9MSxuPVltWzBdLG89W25dO3Q8cjsrK3QpaT1ZbVt0XSxBeHQobixpWzBdKXx8QXh0KG4saVsxXSk/KGVsKG5bMF0saVsxXSk+ZWwoblswXSxuWzFdKSYmKG5bMV09aVsxXSksZWwoaVswXSxuWzFdKT5lbChuWzBdLG5bMV0pJiYoblswXT1pWzBdKSk6by5wdXNoKG49aSk7Zm9yKGE9LTEvMCxyPW8ubGVuZ3RoLTEsdD0wLG49b1tyXTt0PD1yO249aSwrK3QpaT1vW3RdLChzPWVsKG5bMV0saVswXSkpPmEmJihhPXMsbmk9aVswXSxoaT1uWzFdKX1yZXR1cm4gWW09TnA9bnVsbCxuaT09PTEvMHx8U3M9PT0xLzA/W1tOYU4sTmFOXSxbTmFOLE5hTl1dOltbbmksU3NdLFtoaSxybF1dfXZhciBYRSxmayxwayxkayxtayxnayxfayx5ayxfaix5aix2aixPeHQsenh0LHphLEZhLEJhLHB1PXtzcGhlcmU6RnIscG9pbnQ6eGosbGluZVN0YXJ0Ok54dCxsaW5lRW5kOkR4dCxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtwdS5saW5lU3RhcnQ9ZTNlLHB1LmxpbmVFbmQ9cjNlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7cHUubGluZVN0YXJ0PU54dCxwdS5saW5lRW5kPUR4dH19O2Z1bmN0aW9uIHhqKGUsdCl7ZSo9X2UsdCo9X2U7dmFyIHI9WnQodCk7JEUocipadChlKSxyKlh0KGUpLFh0KHQpKX1mdW5jdGlvbiAkRShlLHQscil7KytYRSxways9KGUtcGspL1hFLGRrKz0odC1kaykvWEUsbWsrPShyLW1rKS9YRX1mdW5jdGlvbiBOeHQoKXtwdS5wb2ludD1RU2V9ZnVuY3Rpb24gUVNlKGUsdCl7ZSo9X2UsdCo9X2U7dmFyIHI9WnQodCk7emE9cipadChlKSxGYT1yKlh0KGUpLEJhPVh0KHQpLHB1LnBvaW50PXQzZSwkRSh6YSxGYSxCYSl9ZnVuY3Rpb24gdDNlKGUsdCl7ZSo9X2UsdCo9X2U7dmFyIHI9WnQodCksbj1yKlp0KGUpLGk9cipYdChlKSxvPVh0KHQpLGE9Ym4oeHIoKGE9RmEqby1CYSppKSphKyhhPUJhKm4temEqbykqYSsoYT16YSppLUZhKm4pKmEpLHphKm4rRmEqaStCYSpvKTtmays9YSxnays9YSooemErKHphPW4pKSxfays9YSooRmErKEZhPWkpKSx5ays9YSooQmErKEJhPW8pKSwkRSh6YSxGYSxCYSl9ZnVuY3Rpb24gRHh0KCl7cHUucG9pbnQ9eGp9ZnVuY3Rpb24gZTNlKCl7cHUucG9pbnQ9bjNlfWZ1bmN0aW9uIHIzZSgpe0Z4dChPeHQsenh0KSxwdS5wb2ludD14an1mdW5jdGlvbiBuM2UoZSx0KXtPeHQ9ZSx6eHQ9dCxlKj1fZSx0Kj1fZSxwdS5wb2ludD1GeHQ7dmFyIHI9WnQodCk7emE9cipadChlKSxGYT1yKlh0KGUpLEJhPVh0KHQpLCRFKHphLEZhLEJhKX1mdW5jdGlvbiBGeHQoZSx0KXtlKj1fZSx0Kj1fZTt2YXIgcj1adCh0KSxuPXIqWnQoZSksaT1yKlh0KGUpLG89WHQodCksYT1GYSpvLUJhKmkscz1CYSpuLXphKm8sbD16YSppLUZhKm4sYz14cihhKmErcypzK2wqbCksdT13bihjKSxoPWMmJi11L2M7X2orPWgqYSx5ais9aCpzLHZqKz1oKmwsZmsrPXUsZ2srPXUqKHphKyh6YT1uKSksX2srPXUqKEZhKyhGYT1pKSkseWsrPXUqKEJhKyhCYT1vKSksJEUoemEsRmEsQmEpfWZ1bmN0aW9uIEJ4dChlKXtYRT1maz1waz1kaz1taz1naz1faz15az1faj15aj12aj0wLHlvKGUscHUpO3ZhciB0PV9qLHI9eWosbj12aixpPXQqdCtyKnIrbipuO3JldHVybiBpPHpfJiYodD1nayxyPV9rLG49eWssZms8bGUmJih0PXBrLHI9ZGssbj1tayksaT10KnQrcipyK24qbixpPHpfKT9bTmFOLE5hTl06W2JuKHIsdCkqdnIsd24obi94cihpKSkqdnJdfWZ1bmN0aW9uIFVfKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiBLRShlLHQpe2Z1bmN0aW9uIHIobixpKXtyZXR1cm4gbj1lKG4saSksdChuWzBdLG5bMV0pfXJldHVybiBlLmludmVydCYmdC5pbnZlcnQmJihyLmludmVydD1mdW5jdGlvbihuLGkpe3JldHVybiBuPXQuaW52ZXJ0KG4saSksbiYmZS5pbnZlcnQoblswXSxuWzFdKX0pLHJ9ZnVuY3Rpb24gYmooZSx0KXtyZXR1cm5bUmUoZSk+QmU/ZStNYXRoLnJvdW5kKC1lL1NpKSpTaTplLHRdfWJqLmludmVydD1iajtmdW5jdGlvbiBaRShlLHQscil7cmV0dXJuKGUlPVNpKT90fHxyP0tFKFZ4dChlKSxVeHQodCxyKSk6Vnh0KGUpOnR8fHI/VXh0KHQscik6Ymp9ZnVuY3Rpb24gSHh0KGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiB0Kz1lLFt0PkJlP3QtU2k6dDwtQmU/dCtTaTp0LHJdfX1mdW5jdGlvbiBWeHQoZSl7dmFyIHQ9SHh0KGUpO3JldHVybiB0LmludmVydD1IeHQoLWUpLHR9ZnVuY3Rpb24gVXh0KGUsdCl7dmFyIHI9WnQoZSksbj1YdChlKSxpPVp0KHQpLG89WHQodCk7ZnVuY3Rpb24gYShzLGwpe3ZhciBjPVp0KGwpLHU9WnQocykqYyxoPVh0KHMpKmMsZj1YdChsKSxwPWYqcit1Km47cmV0dXJuW2JuKGgqaS1wKm8sdSpyLWYqbiksd24ocCppK2gqbyldfXJldHVybiBhLmludmVydD1mdW5jdGlvbihzLGwpe3ZhciBjPVp0KGwpLHU9WnQocykqYyxoPVh0KHMpKmMsZj1YdChsKSxwPWYqaS1oKm87cmV0dXJuW2JuKGgqaStmKm8sdSpyK3Aqbiksd24ocCpyLXUqbildfSxhfWZ1bmN0aW9uIHZrKGUpe2U9WkUoZVswXSpfZSxlWzFdKl9lLGUubGVuZ3RoPjI/ZVsyXSpfZTowKTtmdW5jdGlvbiB0KHIpe3JldHVybiByPWUoclswXSpfZSxyWzFdKl9lKSxyWzBdKj12cixyWzFdKj12cixyfXJldHVybiB0LmludmVydD1mdW5jdGlvbihyKXtyZXR1cm4gcj1lLmludmVydChyWzBdKl9lLHJbMV0qX2UpLHJbMF0qPXZyLHJbMV0qPXZyLHJ9LHR9ZnVuY3Rpb24gd2ooZSx0LHIsbixpLG8pe2lmKCEhcil7dmFyIGE9WnQodCkscz1YdCh0KSxsPW4qcjtpPT1udWxsPyhpPXQrbipTaSxvPXQtbC8yKTooaT1xeHQoYSxpKSxvPXF4dChhLG8pLChuPjA/aTxvOmk+bykmJihpKz1uKlNpKSk7Zm9yKHZhciBjLHU9aTtuPjA/dT5vOnU8bzt1LT1sKWM9Ql8oW2EsLXMqWnQodSksLXMqWHQodSldKSxlLnBvaW50KGNbMF0sY1sxXSl9fWZ1bmN0aW9uIHF4dChlLHQpe3Q9bmModCksdFswXS09ZSxIXyh0KTt2YXIgcj1saygtdFsxXSk7cmV0dXJuKCgtdFsyXTwwPy1yOnIpK1NpLWxlKSVTaX1mdW5jdGlvbiBHeHQoKXt2YXIgZT1VXyhbMCwwXSksdD1VXyg5MCkscj1VXyg2KSxuLGksbz17cG9pbnQ6YX07ZnVuY3Rpb24gYShsLGMpe24ucHVzaChsPWkobCxjKSksbFswXSo9dnIsbFsxXSo9dnJ9ZnVuY3Rpb24gcygpe3ZhciBsPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykqX2UsdT1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpfZTtyZXR1cm4gbj1bXSxpPVpFKC1sWzBdKl9lLC1sWzFdKl9lLDApLmludmVydCx3aihvLGMsdSwxKSxsPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbbl19LG49aT1udWxsLGx9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBsPT0iZnVuY3Rpb24iP2w6VV8oWytsWzBdLCtsWzFdXSkscyk6ZX0scy5yYWRpdXM9ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGw9PSJmdW5jdGlvbiI/bDpVXygrbCkscyk6dH0scy5wcmVjaXNpb249ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIGw9PSJmdW5jdGlvbiI/bDpVXygrbCkscyk6cn0sc31mdW5jdGlvbiB4aygpe3ZhciBlPVtdLHQ7cmV0dXJue3BvaW50OmZ1bmN0aW9uKHIsbixpKXt0LnB1c2goW3IsbixpXSl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2UucHVzaCh0PVtdKX0sbGluZUVuZDpGcixyZWpvaW46ZnVuY3Rpb24oKXtlLmxlbmd0aD4xJiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciByPWU7cmV0dXJuIGU9W10sdD1udWxsLHJ9fX1mdW5jdGlvbiBMYihlLHQpe3JldHVybiBSZShlWzBdLXRbMF0pPGxlJiZSZShlWzFdLXRbMV0pPGxlfWZ1bmN0aW9uIGJrKGUsdCxyLG4pe3RoaXMueD1lLHRoaXMuej10LHRoaXMubz1yLHRoaXMuZT1uLHRoaXMudj0hMSx0aGlzLm49dGhpcy5wPW51bGx9ZnVuY3Rpb24gd2soZSx0LHIsbixpKXt2YXIgbz1bXSxhPVtdLHMsbDtpZihlLmZvckVhY2goZnVuY3Rpb24oZCl7aWYoISgoZz1kLmxlbmd0aC0xKTw9MCkpe3ZhciBnLF89ZFswXSx5PWRbZ10seDtpZihMYihfLHkpKXtpZighX1syXSYmIXlbMl0pe2ZvcihpLmxpbmVTdGFydCgpLHM9MDtzPGc7KytzKWkucG9pbnQoKF89ZFtzXSlbMF0sX1sxXSk7aS5saW5lRW5kKCk7cmV0dXJufXlbMF0rPTIqbGV9by5wdXNoKHg9bmV3IGJrKF8sZCxudWxsLCEwKSksYS5wdXNoKHgubz1uZXcgYmsoXyxudWxsLHgsITEpKSxvLnB1c2goeD1uZXcgYmsoeSxkLG51bGwsITEpKSxhLnB1c2goeC5vPW5ldyBiayh5LG51bGwseCwhMCkpfX0pLCEhby5sZW5ndGgpe2ZvcihhLnNvcnQodCksV3h0KG8pLFd4dChhKSxzPTAsbD1hLmxlbmd0aDtzPGw7KytzKWFbc10uZT1yPSFyO2Zvcih2YXIgYz1vWzBdLHUsaDs7KXtmb3IodmFyIGY9YyxwPSEwO2YudjspaWYoKGY9Zi5uKT09PWMpcmV0dXJuO3U9Zi56LGkubGluZVN0YXJ0KCk7ZG97aWYoZi52PWYuby52PSEwLGYuZSl7aWYocClmb3Iocz0wLGw9dS5sZW5ndGg7czxsOysrcylpLnBvaW50KChoPXVbc10pWzBdLGhbMV0pO2Vsc2UgbihmLngsZi5uLngsMSxpKTtmPWYubn1lbHNle2lmKHApZm9yKHU9Zi5wLnoscz11Lmxlbmd0aC0xO3M+PTA7LS1zKWkucG9pbnQoKGg9dVtzXSlbMF0saFsxXSk7ZWxzZSBuKGYueCxmLnAueCwtMSxpKTtmPWYucH1mPWYubyx1PWYueixwPSFwfXdoaWxlKCFmLnYpO2kubGluZUVuZCgpfX19ZnVuY3Rpb24gV3h0KGUpe2lmKCEhKHQ9ZS5sZW5ndGgpKXtmb3IodmFyIHQscj0wLG49ZVswXSxpOysrcjx0OyluLm49aT1lW3JdLGkucD1uLG49aTtuLm49aT1lWzBdLGkucD1ufX12YXIgU2o9d3MoKTtmdW5jdGlvbiBNaihlKXtyZXR1cm4gUmUoZVswXSk8PUJlP2VbMF06bGEoZVswXSkqKChSZShlWzBdKStCZSklU2ktQmUpfWZ1bmN0aW9uIFNrKGUsdCl7dmFyIHI9TWoodCksbj10WzFdLGk9WHQobiksbz1bWHQociksLVp0KHIpLDBdLGE9MCxzPTA7U2oucmVzZXQoKSxpPT09MT9uPW1uK2xlOmk9PT0tMSYmKG49LW1uLWxlKTtmb3IodmFyIGw9MCxjPWUubGVuZ3RoO2w8YzsrK2wpaWYoISEoaD0odT1lW2xdKS5sZW5ndGgpKWZvcih2YXIgdSxoLGY9dVtoLTFdLHA9TWooZiksZD1mWzFdLzIrQWIsZz1YdChkKSxfPVp0KGQpLHk9MDt5PGg7Kyt5LHA9YixnPUMsXz1QLGY9eCl7dmFyIHg9dVt5XSxiPU1qKHgpLFM9eFsxXS8yK0FiLEM9WHQoUyksUD1adChTKSxrPWItcCxPPWs+PTA/MTotMSxEPU8qayxCPUQ+QmUsST1nKkM7aWYoU2ouYWRkKGJuKEkqTypYdChEKSxfKlArSSpadChEKSkpLGErPUI/aytPKlNpOmssQl5wPj1yXmI+PXIpe3ZhciBMPWtwKG5jKGYpLG5jKHgpKTtIXyhMKTt2YXIgUj1rcChvLEwpO0hfKFIpO3ZhciBGPShCXms+PTA/LTE6MSkqd24oUlsyXSk7KG4+Rnx8bj09PUYmJihMWzBdfHxMWzFdKSkmJihzKz1CXms+PTA/MTotMSl9fXJldHVybihhPC1sZXx8YTxsZSYmU2o8LWxlKV5zJjF9ZnVuY3Rpb24gTWsoZSx0LHIsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciBvPXQoaSksYT14aygpLHM9dChhKSxsPSExLGMsdSxoLGY9e3BvaW50OnAsbGluZVN0YXJ0OmcsbGluZUVuZDpfLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2YucG9pbnQ9eSxmLmxpbmVTdGFydD14LGYubGluZUVuZD1iLHU9W10sYz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2YucG9pbnQ9cCxmLmxpbmVTdGFydD1nLGYubGluZUVuZD1fLHU9SW0odSk7dmFyIFM9U2soYyxuKTt1Lmxlbmd0aD8obHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksd2sodSxvM2UsUyxyLGkpKTpTJiYobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSxyKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpKSxsJiYoaS5wb2x5Z29uRW5kKCksbD0hMSksdT1jPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe2kucG9seWdvblN0YXJ0KCksaS5saW5lU3RhcnQoKSxyKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpLGkucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gcChTLEMpe2UoUyxDKSYmaS5wb2ludChTLEMpfWZ1bmN0aW9uIGQoUyxDKXtvLnBvaW50KFMsQyl9ZnVuY3Rpb24gZygpe2YucG9pbnQ9ZCxvLmxpbmVTdGFydCgpfWZ1bmN0aW9uIF8oKXtmLnBvaW50PXAsby5saW5lRW5kKCl9ZnVuY3Rpb24geShTLEMpe2gucHVzaChbUyxDXSkscy5wb2ludChTLEMpfWZ1bmN0aW9uIHgoKXtzLmxpbmVTdGFydCgpLGg9W119ZnVuY3Rpb24gYigpe3koaFswXVswXSxoWzBdWzFdKSxzLmxpbmVFbmQoKTt2YXIgUz1zLmNsZWFuKCksQz1hLnJlc3VsdCgpLFAsaz1DLmxlbmd0aCxPLEQsQjtpZihoLnBvcCgpLGMucHVzaChoKSxoPW51bGwsISFrKXtpZihTJjEpe2lmKEQ9Q1swXSwoTz1ELmxlbmd0aC0xKT4wKXtmb3IobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSxQPTA7UDxPOysrUClpLnBvaW50KChCPURbUF0pWzBdLEJbMV0pO2kubGluZUVuZCgpfXJldHVybn1rPjEmJlMmMiYmQy5wdXNoKEMucG9wKCkuY29uY2F0KEMuc2hpZnQoKSkpLHUucHVzaChDLmZpbHRlcihpM2UpKX19cmV0dXJuIGZ9fWZ1bmN0aW9uIGkzZShlKXtyZXR1cm4gZS5sZW5ndGg+MX1mdW5jdGlvbiBvM2UoZSx0KXtyZXR1cm4oKGU9ZS54KVswXTwwP2VbMV0tbW4tbGU6bW4tZVsxXSktKCh0PXQueClbMF08MD90WzFdLW1uLWxlOm1uLXRbMV0pfXZhciBKRT1NayhmdW5jdGlvbigpe3JldHVybiEwfSxhM2UsbDNlLFstQmUsLW1uXSk7ZnVuY3Rpb24gYTNlKGUpe3ZhciB0PU5hTixyPU5hTixuPU5hTixpO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtlLmxpbmVTdGFydCgpLGk9MX0scG9pbnQ6ZnVuY3Rpb24obyxhKXt2YXIgcz1vPjA/QmU6LUJlLGw9UmUoby10KTtSZShsLUJlKTxsZT8oZS5wb2ludCh0LHI9KHIrYSkvMj4wP21uOi1tbiksZS5wb2ludChuLHIpLGUubGluZUVuZCgpLGUubGluZVN0YXJ0KCksZS5wb2ludChzLHIpLGUucG9pbnQobyxyKSxpPTApOm4hPT1zJiZsPj1CZSYmKFJlKHQtbik8bGUmJih0LT1uKmxlKSxSZShvLXMpPGxlJiYoby09cypsZSkscj1zM2UodCxyLG8sYSksZS5wb2ludChuLHIpLGUubGluZUVuZCgpLGUubGluZVN0YXJ0KCksZS5wb2ludChzLHIpLGk9MCksZS5wb2ludCh0PW8scj1hKSxuPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtlLmxpbmVFbmQoKSx0PXI9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWl9fX1mdW5jdGlvbiBzM2UoZSx0LHIsbil7dmFyIGksbyxhPVh0KGUtcik7cmV0dXJuIFJlKGEpPmxlP3JjKChYdCh0KSoobz1adChuKSkqWHQociktWHQobikqKGk9WnQodCkpKlh0KGUpKS8oaSpvKmEpKToodCtuKS8yfWZ1bmN0aW9uIGwzZShlLHQscixuKXt2YXIgaTtpZihlPT1udWxsKWk9ciptbixuLnBvaW50KC1CZSxpKSxuLnBvaW50KDAsaSksbi5wb2ludChCZSxpKSxuLnBvaW50KEJlLDApLG4ucG9pbnQoQmUsLWkpLG4ucG9pbnQoMCwtaSksbi5wb2ludCgtQmUsLWkpLG4ucG9pbnQoLUJlLDApLG4ucG9pbnQoLUJlLGkpO2Vsc2UgaWYoUmUoZVswXS10WzBdKT5sZSl7dmFyIG89ZVswXTx0WzBdP0JlOi1CZTtpPXIqby8yLG4ucG9pbnQoLW8saSksbi5wb2ludCgwLGkpLG4ucG9pbnQobyxpKX1lbHNlIG4ucG9pbnQodFswXSx0WzFdKX1mdW5jdGlvbiBFayhlKXt2YXIgdD1adChlKSxyPTYqX2Usbj10PjAsaT1SZSh0KT5sZTtmdW5jdGlvbiBvKHUsaCxmLHApe3dqKHAsZSxyLGYsdSxoKX1mdW5jdGlvbiBhKHUsaCl7cmV0dXJuIFp0KHUpKlp0KGgpPnR9ZnVuY3Rpb24gcyh1KXt2YXIgaCxmLHAsZCxnO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtkPXA9ITEsZz0xfSxwb2ludDpmdW5jdGlvbihfLHkpe3ZhciB4PVtfLHldLGIsUz1hKF8seSksQz1uP1M/MDpjKF8seSk6Uz9jKF8rKF88MD9CZTotQmUpLHkpOjA7aWYoIWgmJihkPXA9UykmJnUubGluZVN0YXJ0KCksUyE9PXAmJihiPWwoaCx4KSwoIWJ8fExiKGgsYil8fExiKHgsYikpJiYoeFsyXT0xKSksUyE9PXApZz0wLFM/KHUubGluZVN0YXJ0KCksYj1sKHgsaCksdS5wb2ludChiWzBdLGJbMV0pKTooYj1sKGgseCksdS5wb2ludChiWzBdLGJbMV0sMiksdS5saW5lRW5kKCkpLGg9YjtlbHNlIGlmKGkmJmgmJm5eUyl7dmFyIFA7IShDJmYpJiYoUD1sKHgsaCwhMCkpJiYoZz0wLG4/KHUubGluZVN0YXJ0KCksdS5wb2ludChQWzBdWzBdLFBbMF1bMV0pLHUucG9pbnQoUFsxXVswXSxQWzFdWzFdKSx1LmxpbmVFbmQoKSk6KHUucG9pbnQoUFsxXVswXSxQWzFdWzFdKSx1LmxpbmVFbmQoKSx1LmxpbmVTdGFydCgpLHUucG9pbnQoUFswXVswXSxQWzBdWzFdLDMpKSl9UyYmKCFofHwhTGIoaCx4KSkmJnUucG9pbnQoeFswXSx4WzFdKSxoPXgscD1TLGY9Q30sbGluZUVuZDpmdW5jdGlvbigpe3AmJnUubGluZUVuZCgpLGg9bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gZ3woZCYmcCk8PDF9fX1mdW5jdGlvbiBsKHUsaCxmKXt2YXIgcD1uYyh1KSxkPW5jKGgpLGc9WzEsMCwwXSxfPWtwKHAsZCkseT1XRShfLF8pLHg9X1swXSxiPXkteCp4O2lmKCFiKXJldHVybiFmJiZ1O3ZhciBTPXQqeS9iLEM9LXQqeC9iLFA9a3AoZyxfKSxrPVlFKGcsUyksTz1ZRShfLEMpO2hrKGssTyk7dmFyIEQ9UCxCPVdFKGssRCksST1XRShELEQpLEw9QipCLUkqKFdFKGssayktMSk7aWYoIShMPDApKXt2YXIgUj14cihMKSxGPVlFKEQsKC1CLVIpL0kpO2lmKGhrKEYsayksRj1CXyhGKSwhZilyZXR1cm4gRjt2YXIgej11WzBdLFU9aFswXSxXPXVbMV0sWj1oWzFdLHJ0O1U8eiYmKHJ0PXosej1VLFU9cnQpO3ZhciBvdD1VLXosc3Q9UmUob3QtQmUpPGxlLFN0PXN0fHxvdDxsZTtpZighc3QmJlo8VyYmKHJ0PVcsVz1aLFo9cnQpLFN0P3N0P1crWj4wXkZbMV08KFJlKEZbMF0teik8bGU/VzpaKTpXPD1GWzFdJiZGWzFdPD1aOm90PkJlXih6PD1GWzBdJiZGWzBdPD1VKSl7dmFyIGJ0PVlFKEQsKC1CK1IpL0kpO3JldHVybiBoayhidCxrKSxbRixCXyhidCldfX19ZnVuY3Rpb24gYyh1LGgpe3ZhciBmPW4/ZTpCZS1lLHA9MDtyZXR1cm4gdTwtZj9wfD0xOnU+ZiYmKHB8PTIpLGg8LWY/cHw9NDpoPmYmJihwfD04KSxwfXJldHVybiBNayhhLHMsbyxuP1swLC1lXTpbLUJlLGUtQmVdKX1mdW5jdGlvbiBZeHQoZSx0LHIsbixpLG8pe3ZhciBhPWVbMF0scz1lWzFdLGw9dFswXSxjPXRbMV0sdT0wLGg9MSxmPWwtYSxwPWMtcyxkO2lmKGQ9ci1hLCEoIWYmJmQ+MCkpe2lmKGQvPWYsZjwwKXtpZihkPHUpcmV0dXJuO2Q8aCYmKGg9ZCl9ZWxzZSBpZihmPjApe2lmKGQ+aClyZXR1cm47ZD51JiYodT1kKX1pZihkPWktYSwhKCFmJiZkPDApKXtpZihkLz1mLGY8MCl7aWYoZD5oKXJldHVybjtkPnUmJih1PWQpfWVsc2UgaWYoZj4wKXtpZihkPHUpcmV0dXJuO2Q8aCYmKGg9ZCl9aWYoZD1uLXMsISghcCYmZD4wKSl7aWYoZC89cCxwPDApe2lmKGQ8dSlyZXR1cm47ZDxoJiYoaD1kKX1lbHNlIGlmKHA+MCl7aWYoZD5oKXJldHVybjtkPnUmJih1PWQpfWlmKGQ9by1zLCEoIXAmJmQ8MCkpe2lmKGQvPXAscDwwKXtpZihkPmgpcmV0dXJuO2Q+dSYmKHU9ZCl9ZWxzZSBpZihwPjApe2lmKGQ8dSlyZXR1cm47ZDxoJiYoaD1kKX1yZXR1cm4gdT4wJiYoZVswXT1hK3UqZixlWzFdPXMrdSpwKSxoPDEmJih0WzBdPWEraCpmLHRbMV09cytoKnApLCEwfX19fX12YXIgUUU9MWU5LFRrPS1RRTtmdW5jdGlvbiBEcChlLHQscixuKXtmdW5jdGlvbiBpKGMsdSl7cmV0dXJuIGU8PWMmJmM8PXImJnQ8PXUmJnU8PW59ZnVuY3Rpb24gbyhjLHUsaCxmKXt2YXIgcD0wLGQ9MDtpZihjPT1udWxsfHwocD1hKGMsaCkpIT09KGQ9YSh1LGgpKXx8bChjLHUpPDBeaD4wKWRvIGYucG9pbnQocD09PTB8fHA9PT0zP2U6cixwPjE/bjp0KTt3aGlsZSgocD0ocCtoKzQpJTQpIT09ZCk7ZWxzZSBmLnBvaW50KHVbMF0sdVsxXSl9ZnVuY3Rpb24gYShjLHUpe3JldHVybiBSZShjWzBdLWUpPGxlP3U+MD8wOjM6UmUoY1swXS1yKTxsZT91PjA/MjoxOlJlKGNbMV0tdCk8bGU/dT4wPzE6MDp1PjA/MzoyfWZ1bmN0aW9uIHMoYyx1KXtyZXR1cm4gbChjLngsdS54KX1mdW5jdGlvbiBsKGMsdSl7dmFyIGg9YShjLDEpLGY9YSh1LDEpO3JldHVybiBoIT09Zj9oLWY6aD09PTA/dVsxXS1jWzFdOmg9PT0xP2NbMF0tdVswXTpoPT09Mj9jWzFdLXVbMV06dVswXS1jWzBdfXJldHVybiBmdW5jdGlvbihjKXt2YXIgdT1jLGg9eGsoKSxmLHAsZCxnLF8seSx4LGIsUyxDLFAsaz17cG9pbnQ6TyxsaW5lU3RhcnQ6TCxsaW5lRW5kOlIscG9seWdvblN0YXJ0OkIscG9seWdvbkVuZDpJfTtmdW5jdGlvbiBPKHosVSl7aSh6LFUpJiZ1LnBvaW50KHosVSl9ZnVuY3Rpb24gRCgpe2Zvcih2YXIgej0wLFU9MCxXPXAubGVuZ3RoO1U8VzsrK1UpZm9yKHZhciBaPXBbVV0scnQ9MSxvdD1aLmxlbmd0aCxzdD1aWzBdLFN0LGJ0LE10PXN0WzBdLGx0PXN0WzFdO3J0PG90OysrcnQpU3Q9TXQsYnQ9bHQsc3Q9WltydF0sTXQ9c3RbMF0sbHQ9c3RbMV0sYnQ8PW4/bHQ+biYmKE10LVN0KSoobi1idCk+KGx0LWJ0KSooZS1TdCkmJisrejpsdDw9biYmKE10LVN0KSoobi1idCk8KGx0LWJ0KSooZS1TdCkmJi0tejtyZXR1cm4gen1mdW5jdGlvbiBCKCl7dT1oLGY9W10scD1bXSxQPSEwfWZ1bmN0aW9uIEkoKXt2YXIgej1EKCksVT1QJiZ6LFc9KGY9SW0oZikpLmxlbmd0aDsoVXx8VykmJihjLnBvbHlnb25TdGFydCgpLFUmJihjLmxpbmVTdGFydCgpLG8obnVsbCxudWxsLDEsYyksYy5saW5lRW5kKCkpLFcmJndrKGYscyx6LG8sYyksYy5wb2x5Z29uRW5kKCkpLHU9YyxmPXA9ZD1udWxsfWZ1bmN0aW9uIEwoKXtrLnBvaW50PUYscCYmcC5wdXNoKGQ9W10pLEM9ITAsUz0hMSx4PWI9TmFOfWZ1bmN0aW9uIFIoKXtmJiYoRihnLF8pLHkmJlMmJmgucmVqb2luKCksZi5wdXNoKGgucmVzdWx0KCkpKSxrLnBvaW50PU8sUyYmdS5saW5lRW5kKCl9ZnVuY3Rpb24gRih6LFUpe3ZhciBXPWkoeixVKTtpZihwJiZkLnB1c2goW3osVV0pLEMpZz16LF89VSx5PVcsQz0hMSxXJiYodS5saW5lU3RhcnQoKSx1LnBvaW50KHosVSkpO2Vsc2UgaWYoVyYmUyl1LnBvaW50KHosVSk7ZWxzZXt2YXIgWj1beD1NYXRoLm1heChUayxNYXRoLm1pbihRRSx4KSksYj1NYXRoLm1heChUayxNYXRoLm1pbihRRSxiKSldLHJ0PVt6PU1hdGgubWF4KFRrLE1hdGgubWluKFFFLHopKSxVPU1hdGgubWF4KFRrLE1hdGgubWluKFFFLFUpKV07WXh0KFoscnQsZSx0LHIsbik/KFN8fCh1LmxpbmVTdGFydCgpLHUucG9pbnQoWlswXSxaWzFdKSksdS5wb2ludChydFswXSxydFsxXSksV3x8dS5saW5lRW5kKCksUD0hMSk6VyYmKHUubGluZVN0YXJ0KCksdS5wb2ludCh6LFUpLFA9ITEpfXg9eixiPVUsUz1XfXJldHVybiBrfX1mdW5jdGlvbiBqeHQoKXt2YXIgZT0wLHQ9MCxyPTk2MCxuPTUwMCxpLG8sYTtyZXR1cm4gYT17c3RyZWFtOmZ1bmN0aW9uKHMpe3JldHVybiBpJiZvPT09cz9pOmk9RHAoZSx0LHIsbikobz1zKX0sZXh0ZW50OmZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPStzWzBdWzBdLHQ9K3NbMF1bMV0scj0rc1sxXVswXSxuPStzWzFdWzFdLGk9bz1udWxsLGEpOltbZSx0XSxbcixuXV19fX12YXIgRWo9d3MoKSxUaixDayxBayxrYj17c3BoZXJlOkZyLHBvaW50OkZyLGxpbmVTdGFydDpjM2UsbGluZUVuZDpGcixwb2x5Z29uU3RhcnQ6RnIscG9seWdvbkVuZDpGcn07ZnVuY3Rpb24gYzNlKCl7a2IucG9pbnQ9aDNlLGtiLmxpbmVFbmQ9dTNlfWZ1bmN0aW9uIHUzZSgpe2tiLnBvaW50PWtiLmxpbmVFbmQ9RnJ9ZnVuY3Rpb24gaDNlKGUsdCl7ZSo9X2UsdCo9X2UsVGo9ZSxDaz1YdCh0KSxBaz1adCh0KSxrYi5wb2ludD1mM2V9ZnVuY3Rpb24gZjNlKGUsdCl7ZSo9X2UsdCo9X2U7dmFyIHI9WHQodCksbj1adCh0KSxpPVJlKGUtVGopLG89WnQoaSksYT1YdChpKSxzPW4qYSxsPUFrKnItQ2sqbipvLGM9Q2sqcitBaypuKm87RWouYWRkKGJuKHhyKHMqcytsKmwpLGMpKSxUaj1lLENrPXIsQWs9bn1mdW5jdGlvbiBQayhlKXtyZXR1cm4gRWoucmVzZXQoKSx5byhlLGtiKSwrRWp9dmFyIENqPVtudWxsLG51bGxdLHAzZT17dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6Q2p9O2Z1bmN0aW9uIFJiKGUsdCl7cmV0dXJuIENqWzBdPWUsQ2pbMV09dCxQayhwM2UpfXZhciBYeHQ9e0ZlYXR1cmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSWsoZS5nZW9tZXRyeSx0KX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9ZS5mZWF0dXJlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KWlmKElrKHJbbl0uZ2VvbWV0cnksdCkpcmV0dXJuITA7cmV0dXJuITF9fSwkeHQ9e1NwaGVyZTpmdW5jdGlvbigpe3JldHVybiEwfSxQb2ludDpmdW5jdGlvbihlLHQpe3JldHVybiBLeHQoZS5jb29yZGluYXRlcyx0KX0sTXVsdGlQb2ludDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspaWYoS3h0KHJbbl0sdCkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWnh0KGUuY29vcmRpbmF0ZXMsdCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspaWYoWnh0KHJbbl0sdCkpcmV0dXJuITA7cmV0dXJuITF9LFBvbHlnb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSnh0KGUuY29vcmRpbmF0ZXMsdCl9LE11bHRpUG9seWdvbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspaWYoSnh0KHJbbl0sdCkpcmV0dXJuITA7cmV0dXJuITF9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1lLmdlb21ldHJpZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylpZihJayhyW25dLHQpKXJldHVybiEwO3JldHVybiExfX07ZnVuY3Rpb24gSWsoZSx0KXtyZXR1cm4gZSYmJHh0Lmhhc093blByb3BlcnR5KGUudHlwZSk/JHh0W2UudHlwZV0oZSx0KTohMX1mdW5jdGlvbiBLeHQoZSx0KXtyZXR1cm4gUmIoZSx0KT09PTB9ZnVuY3Rpb24gWnh0KGUsdCl7Zm9yKHZhciByLG4saSxvPTAsYT1lLmxlbmd0aDtvPGE7bysrKXtpZihuPVJiKGVbb10sdCksbj09PTB8fG8+MCYmKGk9UmIoZVtvXSxlW28tMV0pLGk+MCYmcjw9aSYmbjw9aSYmKHIrbi1pKSooMS1NYXRoLnBvdygoci1uKS9pLDIpKTx6XyppKSlyZXR1cm4hMDtyPW59cmV0dXJuITF9ZnVuY3Rpb24gSnh0KGUsdCl7cmV0dXJuISFTayhlLm1hcChkM2UpLFF4dCh0KSl9ZnVuY3Rpb24gZDNlKGUpe3JldHVybiBlPWUubWFwKFF4dCksZS5wb3AoKSxlfWZ1bmN0aW9uIFF4dChlKXtyZXR1cm5bZVswXSpfZSxlWzFdKl9lXX1mdW5jdGlvbiB0YnQoZSx0KXtyZXR1cm4oZSYmWHh0Lmhhc093blByb3BlcnR5KGUudHlwZSk/WHh0W2UudHlwZV06SWspKGUsdCl9ZnVuY3Rpb24gZWJ0KGUsdCxyKXt2YXIgbj1JcihlLHQtbGUscikuY29uY2F0KHQpO3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obyl7cmV0dXJuW2ksb119KX19ZnVuY3Rpb24gcmJ0KGUsdCxyKXt2YXIgbj1JcihlLHQtbGUscikuY29uY2F0KHQpO3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obyl7cmV0dXJuW28saV19KX19ZnVuY3Rpb24gTGsoKXt2YXIgZSx0LHIsbixpLG8sYSxzLGw9MTAsYz1sLHU9OTAsaD0zNjAsZixwLGQsZyxfPTIuNTtmdW5jdGlvbiB5KCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6eCgpfX1mdW5jdGlvbiB4KCl7cmV0dXJuIElyKHFFKG4vdSkqdSxyLHUpLm1hcChkKS5jb25jYXQoSXIocUUocy9oKSpoLGEsaCkubWFwKGcpKS5jb25jYXQoSXIocUUodC9sKSpsLGUsbCkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBSZShiJXUpPmxlfSkubWFwKGYpKS5jb25jYXQoSXIocUUoby9jKSpjLGksYykuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBSZShiJWgpPmxlfSkubWFwKHApKX1yZXR1cm4geS5saW5lcz1mdW5jdGlvbigpe3JldHVybiB4KCkubWFwKGZ1bmN0aW9uKGIpe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpifX0pfSx5Lm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W2QobikuY29uY2F0KGcoYSkuc2xpY2UoMSksZChyKS5yZXZlcnNlKCkuc2xpY2UoMSksZyhzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LHkuZXh0ZW50PWZ1bmN0aW9uKGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3kuZXh0ZW50TWFqb3IoYikuZXh0ZW50TWlub3IoYik6eS5leHRlbnRNaW5vcigpfSx5LmV4dGVudE1ham9yPWZ1bmN0aW9uKGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPStiWzBdWzBdLHI9K2JbMV1bMF0scz0rYlswXVsxXSxhPStiWzFdWzFdLG4+ciYmKGI9bixuPXIscj1iKSxzPmEmJihiPXMscz1hLGE9YikseS5wcmVjaXNpb24oXykpOltbbixzXSxbcixhXV19LHkuZXh0ZW50TWlub3I9ZnVuY3Rpb24oYil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K2JbMF1bMF0sZT0rYlsxXVswXSxvPStiWzBdWzFdLGk9K2JbMV1bMV0sdD5lJiYoYj10LHQ9ZSxlPWIpLG8+aSYmKGI9byxvPWksaT1iKSx5LnByZWNpc2lvbihfKSk6W1t0LG9dLFtlLGldXX0seS5zdGVwPWZ1bmN0aW9uKGIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3kuc3RlcE1ham9yKGIpLnN0ZXBNaW5vcihiKTp5LnN0ZXBNaW5vcigpfSx5LnN0ZXBNYWpvcj1mdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0rYlswXSxoPStiWzFdLHkpOlt1LGhdfSx5LnN0ZXBNaW5vcj1mdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rYlswXSxjPStiWzFdLHkpOltsLGNdfSx5LnByZWNpc2lvbj1mdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz0rYixmPWVidChvLGksOTApLHA9cmJ0KHQsZSxfKSxkPWVidChzLGEsOTApLGc9cmJ0KG4scixfKSx5KTpffSx5LmV4dGVudE1ham9yKFtbLTE4MCwtOTArbGVdLFsxODAsOTAtbGVdXSkuZXh0ZW50TWlub3IoW1stMTgwLC04MC1sZV0sWzE4MCw4MCtsZV1dKX1mdW5jdGlvbiBuYnQoKXtyZXR1cm4gTGsoKSgpfWZ1bmN0aW9uIGlidChlLHQpe3ZhciByPWVbMF0qX2Usbj1lWzFdKl9lLGk9dFswXSpfZSxvPXRbMV0qX2UsYT1adChuKSxzPVh0KG4pLGw9WnQobyksYz1YdChvKSx1PWEqWnQociksaD1hKlh0KHIpLGY9bCpadChpKSxwPWwqWHQoaSksZD0yKnduKHhyKGhqKG8tbikrYSpsKmhqKGktcikpKSxnPVh0KGQpLF89ZD9mdW5jdGlvbih5KXt2YXIgeD1YdCh5Kj1kKS9nLGI9WHQoZC15KS9nLFM9Yip1K3gqZixDPWIqaCt4KnAsUD1iKnMreCpjO3JldHVybltibihDLFMpKnZyLGJuKFAseHIoUypTK0MqQykpKnZyXX06ZnVuY3Rpb24oKXtyZXR1cm5bcip2cixuKnZyXX07cmV0dXJuIF8uZGlzdGFuY2U9ZCxffWZ1bmN0aW9uIGptKGUpe3JldHVybiBlfXZhciBBaj13cygpLFBqPXdzKCksb2J0LGFidCxJaixMaixYbT17cG9pbnQ6RnIsbGluZVN0YXJ0OkZyLGxpbmVFbmQ6RnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7WG0ubGluZVN0YXJ0PW0zZSxYbS5saW5lRW5kPV8zZX0scG9seWdvbkVuZDpmdW5jdGlvbigpe1htLmxpbmVTdGFydD1YbS5saW5lRW5kPVhtLnBvaW50PUZyLEFqLmFkZChSZShQaikpLFBqLnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBlPUFqLzI7cmV0dXJuIEFqLnJlc2V0KCksZX19O2Z1bmN0aW9uIG0zZSgpe1htLnBvaW50PWczZX1mdW5jdGlvbiBnM2UoZSx0KXtYbS5wb2ludD1zYnQsb2J0PUlqPWUsYWJ0PUxqPXR9ZnVuY3Rpb24gc2J0KGUsdCl7UGouYWRkKExqKmUtSWoqdCksSWo9ZSxMaj10fWZ1bmN0aW9uIF8zZSgpe3NidChvYnQsYWJ0KX12YXIga2o9WG07dmFyIE5iPTEvMCxraz1OYix0NT0tTmIsUms9dDUseTNlPXtwb2ludDp2M2UsbGluZVN0YXJ0OkZyLGxpbmVFbmQ6RnIscG9seWdvblN0YXJ0OkZyLHBvbHlnb25FbmQ6RnIscmVzdWx0OmZ1bmN0aW9uKCl7dmFyIGU9W1tOYixra10sW3Q1LFJrXV07cmV0dXJuIHQ1PVJrPS0oa2s9TmI9MS8wKSxlfX07ZnVuY3Rpb24gdjNlKGUsdCl7ZTxOYiYmKE5iPWUpLGU+dDUmJih0NT1lKSx0PGtrJiYoa2s9dCksdD5SayYmKFJrPXQpfXZhciBEYj15M2U7dmFyIFJqPTAsTmo9MCxlNT0wLE5rPTAsRGs9MCxPYj0wLERqPTAsT2o9MCxyNT0wLHVidCxoYnQsRmgsQmgsZHU9e3BvaW50OnFfLGxpbmVTdGFydDpsYnQsbGluZUVuZDpjYnQscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7ZHUubGluZVN0YXJ0PXczZSxkdS5saW5lRW5kPVMzZX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2R1LnBvaW50PXFfLGR1LmxpbmVTdGFydD1sYnQsZHUubGluZUVuZD1jYnR9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciBlPXI1P1tEai9yNSxPai9yNV06T2I/W05rL09iLERrL09iXTplNT9bUmovZTUsTmovZTVdOltOYU4sTmFOXTtyZXR1cm4gUmo9Tmo9ZTU9Tms9RGs9T2I9RGo9T2o9cjU9MCxlfX07ZnVuY3Rpb24gcV8oZSx0KXtSais9ZSxOais9dCwrK2U1fWZ1bmN0aW9uIGxidCgpe2R1LnBvaW50PXgzZX1mdW5jdGlvbiB4M2UoZSx0KXtkdS5wb2ludD1iM2UscV8oRmg9ZSxCaD10KX1mdW5jdGlvbiBiM2UoZSx0KXt2YXIgcj1lLUZoLG49dC1CaCxpPXhyKHIqcituKm4pO05rKz1pKihGaCtlKS8yLERrKz1pKihCaCt0KS8yLE9iKz1pLHFfKEZoPWUsQmg9dCl9ZnVuY3Rpb24gY2J0KCl7ZHUucG9pbnQ9cV99ZnVuY3Rpb24gdzNlKCl7ZHUucG9pbnQ9TTNlfWZ1bmN0aW9uIFMzZSgpe2ZidCh1YnQsaGJ0KX1mdW5jdGlvbiBNM2UoZSx0KXtkdS5wb2ludD1mYnQscV8odWJ0PUZoPWUsaGJ0PUJoPXQpfWZ1bmN0aW9uIGZidChlLHQpe3ZhciByPWUtRmgsbj10LUJoLGk9eHIocipyK24qbik7TmsrPWkqKEZoK2UpLzIsRGsrPWkqKEJoK3QpLzIsT2IrPWksaT1CaCplLUZoKnQsRGorPWkqKEZoK2UpLE9qKz1pKihCaCt0KSxyNSs9aSozLHFfKEZoPWUsQmg9dCl9dmFyIHpqPWR1O2Z1bmN0aW9uIE9rKGUpe3RoaXMuX2NvbnRleHQ9ZX1Pay5wcm90b3R5cGU9e19yYWRpdXM6NC41LHBvaW50UmFkaXVzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9yYWRpdXM9ZSx0aGlzfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9PT0wJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX3BvaW50PU5hTn0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KSx0aGlzLl9wb2ludD0xO2JyZWFrfWNhc2UgMTp7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTticmVha31kZWZhdWx0Ont0aGlzLl9jb250ZXh0Lm1vdmVUbyhlK3RoaXMuX3JhZGl1cyx0KSx0aGlzLl9jb250ZXh0LmFyYyhlLHQsdGhpcy5fcmFkaXVzLDAsU2kpO2JyZWFrfX19LHJlc3VsdDpGcn07dmFyIEJqPXdzKCksRmoscGJ0LGRidCxuNSxpNSx6az17cG9pbnQ6RnIsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7emsucG9pbnQ9RTNlfSxsaW5lRW5kOmZ1bmN0aW9uKCl7RmomJm1idChwYnQsZGJ0KSx6ay5wb2ludD1Gcn0scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Rmo9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtGaj1udWxsfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgZT0rQmo7cmV0dXJuIEJqLnJlc2V0KCksZX19O2Z1bmN0aW9uIEUzZShlLHQpe3prLnBvaW50PW1idCxwYnQ9bjU9ZSxkYnQ9aTU9dH1mdW5jdGlvbiBtYnQoZSx0KXtuNS09ZSxpNS09dCxCai5hZGQoeHIobjUqbjUraTUqaTUpKSxuNT1lLGk1PXR9dmFyIEhqPXprO2Z1bmN0aW9uIEZrKCl7dGhpcy5fc3RyaW5nPVtdfUZrLnByb3RvdHlwZT17X3JhZGl1czo0LjUsX2NpcmNsZTpnYnQoNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbihlKXtyZXR1cm4oZT0rZSkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9ZSx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPT09MCYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6e3RoaXMuX3N0cmluZy5wdXNoKCJNIixlLCIsIix0KSx0aGlzLl9wb2ludD0xO2JyZWFrfWNhc2UgMTp7dGhpcy5fc3RyaW5nLnB1c2goIkwiLGUsIiwiLHQpO2JyZWFrfWRlZmF1bHQ6e3RoaXMuX2NpcmNsZT09bnVsbCYmKHRoaXMuX2NpcmNsZT1nYnQodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLGUsIiwiLHQsdGhpcy5fY2lyY2xlKTticmVha319fSxyZXN1bHQ6ZnVuY3Rpb24oKXtpZih0aGlzLl9zdHJpbmcubGVuZ3RoKXt2YXIgZT10aGlzLl9zdHJpbmcuam9pbigiIik7cmV0dXJuIHRoaXMuX3N0cmluZz1bXSxlfWVsc2UgcmV0dXJuIG51bGx9fTtmdW5jdGlvbiBnYnQoZSl7cmV0dXJuIm0wLCIrZSsiYSIrZSsiLCIrZSsiIDAgMSwxIDAsIistMiplKyJhIitlKyIsIitlKyIgMCAxLDEgMCwiKzIqZSsieiJ9ZnVuY3Rpb24gX2J0KGUsdCl7dmFyIHI9NC41LG4saTtmdW5jdGlvbiBvKGEpe3JldHVybiBhJiYodHlwZW9mIHI9PSJmdW5jdGlvbiImJmkucG9pbnRSYWRpdXMoK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKSx5byhhLG4oaSkpKSxpLnJlc3VsdCgpfXJldHVybiBvLmFyZWE9ZnVuY3Rpb24oYSl7cmV0dXJuIHlvKGEsbihraikpLGtqLnJlc3VsdCgpfSxvLm1lYXN1cmU9ZnVuY3Rpb24oYSl7cmV0dXJuIHlvKGEsbihIaikpLEhqLnJlc3VsdCgpfSxvLmJvdW5kcz1mdW5jdGlvbihhKXtyZXR1cm4geW8oYSxuKERiKSksRGIucmVzdWx0KCl9LG8uY2VudHJvaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHlvKGEsbih6aikpLHpqLnJlc3VsdCgpfSxvLnByb2plY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YT09bnVsbD8oZT1udWxsLGptKTooZT1hKS5zdHJlYW0sbyk6ZX0sby5jb250ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWE9PW51bGw/KHQ9bnVsbCxuZXcgRmspOm5ldyBPayh0PWEpLHR5cGVvZiByIT0iZnVuY3Rpb24iJiZpLnBvaW50UmFkaXVzKHIpLG8pOnR9LG8ucG9pbnRSYWRpdXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIGE9PSJmdW5jdGlvbiI/YTooaS5wb2ludFJhZGl1cygrYSksK2EpLG8pOnJ9LG8ucHJvamVjdGlvbihlKS5jb250ZXh0KHQpfWZ1bmN0aW9uIHlidChlKXtyZXR1cm57c3RyZWFtOiRtKGUpfX1mdW5jdGlvbiAkbShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIHI9bmV3IFZqO2Zvcih2YXIgbiBpbiBlKXJbbl09ZVtuXTtyZXR1cm4gci5zdHJlYW09dCxyfX1mdW5jdGlvbiBWaigpe31Wai5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlZqLHBvaW50OmZ1bmN0aW9uKGUsdCl7dGhpcy5zdHJlYW0ucG9pbnQoZSx0KX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O2Z1bmN0aW9uIFVqKGUsdCxyKXt2YXIgbj1lLmNsaXBFeHRlbnQmJmUuY2xpcEV4dGVudCgpO3JldHVybiBlLnNjYWxlKDE1MCkudHJhbnNsYXRlKFswLDBdKSxuIT1udWxsJiZlLmNsaXBFeHRlbnQobnVsbCkseW8ocixlLnN0cmVhbShEYikpLHQoRGIucmVzdWx0KCkpLG4hPW51bGwmJmUuY2xpcEV4dGVudChuKSxlfWZ1bmN0aW9uIEdfKGUsdCxyKXtyZXR1cm4gVWooZSxmdW5jdGlvbihuKXt2YXIgaT10WzFdWzBdLXRbMF1bMF0sbz10WzFdWzFdLXRbMF1bMV0sYT1NYXRoLm1pbihpLyhuWzFdWzBdLW5bMF1bMF0pLG8vKG5bMV1bMV0tblswXVsxXSkpLHM9K3RbMF1bMF0rKGktYSooblsxXVswXStuWzBdWzBdKSkvMixsPSt0WzBdWzFdKyhvLWEqKG5bMV1bMV0rblswXVsxXSkpLzI7ZS5zY2FsZSgxNTAqYSkudHJhbnNsYXRlKFtzLGxdKX0scil9ZnVuY3Rpb24gemIoZSx0LHIpe3JldHVybiBHXyhlLFtbMCwwXSx0XSxyKX1mdW5jdGlvbiBGYihlLHQscil7cmV0dXJuIFVqKGUsZnVuY3Rpb24obil7dmFyIGk9K3Qsbz1pLyhuWzFdWzBdLW5bMF1bMF0pLGE9KGktbyooblsxXVswXStuWzBdWzBdKSkvMixzPS1vKm5bMF1bMV07ZS5zY2FsZSgxNTAqbykudHJhbnNsYXRlKFthLHNdKX0scil9ZnVuY3Rpb24gQmIoZSx0LHIpe3JldHVybiBVaihlLGZ1bmN0aW9uKG4pe3ZhciBpPSt0LG89aS8oblsxXVsxXS1uWzBdWzFdKSxhPS1vKm5bMF1bMF0scz0oaS1vKihuWzFdWzFdK25bMF1bMV0pKS8yO2Uuc2NhbGUoMTUwKm8pLnRyYW5zbGF0ZShbYSxzXSl9LHIpfXZhciB2YnQ9MTYsVDNlPVp0KDMwKl9lKTtmdW5jdGlvbiBxaihlLHQpe3JldHVybit0P0EzZShlLHQpOkMzZShlKX1mdW5jdGlvbiBDM2UoZSl7cmV0dXJuICRtKHtwb2ludDpmdW5jdGlvbih0LHIpe3Q9ZSh0LHIpLHRoaXMuc3RyZWFtLnBvaW50KHRbMF0sdFsxXSl9fSl9ZnVuY3Rpb24gQTNlKGUsdCl7ZnVuY3Rpb24gcihuLGksbyxhLHMsbCxjLHUsaCxmLHAsZCxnLF8pe3ZhciB5PWMtbix4PXUtaSxiPXkqeSt4Kng7aWYoYj40KnQmJmctLSl7dmFyIFM9YStmLEM9cytwLFA9bCtkLGs9eHIoUypTK0MqQytQKlApLE89d24oUC89ayksRD1SZShSZShQKS0xKTxsZXx8UmUoby1oKTxsZT8obytoKS8yOmJuKEMsUyksQj1lKEQsTyksST1CWzBdLEw9QlsxXSxSPUktbixGPUwtaSx6PXgqUi15KkY7KHoqei9iPnR8fFJlKCh5KlIreCpGKS9iLS41KT4uM3x8YSpmK3MqcCtsKmQ8VDNlKSYmKHIobixpLG8sYSxzLGwsSSxMLEQsUy89ayxDLz1rLFAsZyxfKSxfLnBvaW50KEksTCkscihJLEwsRCxTLEMsUCxjLHUsaCxmLHAsZCxnLF8pKX19cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLG8sYSxzLGwsYyx1LGgsZixwLGQsZyxfPXtwb2ludDp5LGxpbmVTdGFydDp4LGxpbmVFbmQ6Uyxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25TdGFydCgpLF8ubGluZVN0YXJ0PUN9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25FbmQoKSxfLmxpbmVTdGFydD14fX07ZnVuY3Rpb24geShPLEQpe089ZShPLEQpLG4ucG9pbnQoT1swXSxPWzFdKX1mdW5jdGlvbiB4KCl7aD1OYU4sXy5wb2ludD1iLG4ubGluZVN0YXJ0KCl9ZnVuY3Rpb24gYihPLEQpe3ZhciBCPW5jKFtPLERdKSxJPWUoTyxEKTtyKGgsZix1LHAsZCxnLGg9SVswXSxmPUlbMV0sdT1PLHA9QlswXSxkPUJbMV0sZz1CWzJdLHZidCxuKSxuLnBvaW50KGgsZil9ZnVuY3Rpb24gUygpe18ucG9pbnQ9eSxuLmxpbmVFbmQoKX1mdW5jdGlvbiBDKCl7eCgpLF8ucG9pbnQ9UCxfLmxpbmVFbmQ9a31mdW5jdGlvbiBQKE8sRCl7YihpPU8sRCksbz1oLGE9ZixzPXAsbD1kLGM9ZyxfLnBvaW50PWJ9ZnVuY3Rpb24gaygpe3IoaCxmLHUscCxkLGcsbyxhLGkscyxsLGMsdmJ0LG4pLF8ubGluZUVuZD1TLFMoKX1yZXR1cm4gX319dmFyIFAzZT0kbSh7cG9pbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLnN0cmVhbS5wb2ludChlKl9lLHQqX2UpfX0pO2Z1bmN0aW9uIEkzZShlKXtyZXR1cm4gJG0oe3BvaW50OmZ1bmN0aW9uKHQscil7dmFyIG49ZSh0LHIpO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pfWZ1bmN0aW9uIEwzZShlLHQscixuLGkpe2Z1bmN0aW9uIG8oYSxzKXtyZXR1cm4gYSo9bixzKj1pLFt0K2UqYSxyLWUqc119cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKGEscyl7cmV0dXJuWyhhLXQpL2Uqbiwoci1zKS9lKmldfSxvfWZ1bmN0aW9uIHhidChlLHQscixuLGksbyl7dmFyIGE9WnQobykscz1YdChvKSxsPWEqZSxjPXMqZSx1PWEvZSxoPXMvZSxmPShzKnItYSp0KS9lLHA9KHMqdCthKnIpL2U7ZnVuY3Rpb24gZChnLF8pe3JldHVybiBnKj1uLF8qPWksW2wqZy1jKl8rdCxyLWMqZy1sKl9dfXJldHVybiBkLmludmVydD1mdW5jdGlvbihnLF8pe3JldHVybltuKih1KmctaCpfK2YpLGkqKHAtaCpnLXUqXyldfSxkfWZ1bmN0aW9uIE1pKGUpe3JldHVybiBvNShmdW5jdGlvbigpe3JldHVybiBlfSkoKX1mdW5jdGlvbiBvNShlKXt2YXIgdCxyPTE1MCxuPTQ4MCxpPTI1MCxvPTAsYT0wLHM9MCxsPTAsYz0wLHUsaD0wLGY9MSxwPTEsZD1udWxsLGc9SkUsXz1udWxsLHkseCxiLFM9am0sQz0uNSxQLGssTyxELEI7ZnVuY3Rpb24gSSh6KXtyZXR1cm4gTyh6WzBdKl9lLHpbMV0qX2UpfWZ1bmN0aW9uIEwoeil7cmV0dXJuIHo9Ty5pbnZlcnQoelswXSx6WzFdKSx6JiZbelswXSp2cix6WzFdKnZyXX1JLnN0cmVhbT1mdW5jdGlvbih6KXtyZXR1cm4gRCYmQj09PXo/RDpEPVAzZShJM2UodSkoZyhQKFMoQj16KSkpKSl9LEkucHJlY2xpcD1mdW5jdGlvbih6KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz16LGQ9dm9pZCAwLEYoKSk6Z30sSS5wb3N0Y2xpcD1mdW5jdGlvbih6KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz16LF89eT14PWI9bnVsbCxGKCkpOlN9LEkuY2xpcEFuZ2xlPWZ1bmN0aW9uKHope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPSt6P0VrKGQ9eipfZSk6KGQ9bnVsbCxKRSksRigpKTpkKnZyfSxJLmNsaXBFeHRlbnQ9ZnVuY3Rpb24oeil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9ej09bnVsbD8oXz15PXg9Yj1udWxsLGptKTpEcChfPSt6WzBdWzBdLHk9K3pbMF1bMV0seD0relsxXVswXSxiPSt6WzFdWzFdKSxGKCkpOl89PW51bGw/bnVsbDpbW18seV0sW3gsYl1dfSxJLnNjYWxlPWZ1bmN0aW9uKHope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt6LFIoKSk6cn0sSS50cmFuc2xhdGU9ZnVuY3Rpb24oeil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3pbMF0saT0relsxXSxSKCkpOltuLGldfSxJLmNlbnRlcj1mdW5jdGlvbih6KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz16WzBdJTM2MCpfZSxhPXpbMV0lMzYwKl9lLFIoKSk6W28qdnIsYSp2cl19LEkucm90YXRlPWZ1bmN0aW9uKHope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXpbMF0lMzYwKl9lLGw9elsxXSUzNjAqX2UsYz16Lmxlbmd0aD4yP3pbMl0lMzYwKl9lOjAsUigpKTpbcyp2cixsKnZyLGMqdnJdfSxJLmFuZ2xlPWZ1bmN0aW9uKHope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPXolMzYwKl9lLFIoKSk6aCp2cn0sSS5yZWZsZWN0WD1mdW5jdGlvbih6KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj16Py0xOjEsUigpKTpmPDB9LEkucmVmbGVjdFk9ZnVuY3Rpb24oeil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ej8tMToxLFIoKSk6cDwwfSxJLnByZWNpc2lvbj1mdW5jdGlvbih6KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUD1xaihrLEM9eip6KSxGKCkpOnhyKEMpfSxJLmZpdEV4dGVudD1mdW5jdGlvbih6LFUpe3JldHVybiBHXyhJLHosVSl9LEkuZml0U2l6ZT1mdW5jdGlvbih6LFUpe3JldHVybiB6YihJLHosVSl9LEkuZml0V2lkdGg9ZnVuY3Rpb24oeixVKXtyZXR1cm4gRmIoSSx6LFUpfSxJLmZpdEhlaWdodD1mdW5jdGlvbih6LFUpe3JldHVybiBCYihJLHosVSl9O2Z1bmN0aW9uIFIoKXt2YXIgej14YnQociwwLDAsZixwLGgpLmFwcGx5KG51bGwsdChvLGEpKSxVPShoP3hidDpMM2UpKHIsbi16WzBdLGktelsxXSxmLHAsaCk7cmV0dXJuIHU9WkUocyxsLGMpLGs9S0UodCxVKSxPPUtFKHUsayksUD1xaihrLEMpLEYoKX1mdW5jdGlvbiBGKCl7cmV0dXJuIEQ9Qj1udWxsLEl9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksSS5pbnZlcnQ9dC5pbnZlcnQmJkwsUigpfX1mdW5jdGlvbiBIYihlKXt2YXIgdD0wLHI9QmUvMyxuPW81KGUpLGk9bih0LHIpO3JldHVybiBpLnBhcmFsbGVscz1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKHQ9b1swXSpfZSxyPW9bMV0qX2UpOlt0KnZyLHIqdnJdfSxpfWZ1bmN0aW9uIGJidChlKXt2YXIgdD1adChlKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuW24qdCxYdChpKS90XX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm5bbi90LHduKGkqdCldfSxyfWZ1bmN0aW9uIEdqKGUsdCl7dmFyIHI9WHQoZSksbj0ocitYdCh0KSkvMjtpZihSZShuKTxsZSlyZXR1cm4gYmJ0KGUpO3ZhciBpPTErciooMipuLXIpLG89eHIoaSkvbjtmdW5jdGlvbiBhKHMsbCl7dmFyIGM9eHIoaS0yKm4qWHQobCkpL247cmV0dXJuW2MqWHQocyo9biksby1jKlp0KHMpXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24ocyxsKXt2YXIgYz1vLWwsdT1ibihzLFJlKGMpKSpsYShjKTtyZXR1cm4gYypuPDAmJih1LT1CZSpsYShzKSpsYShjKSksW3Uvbix3bigoaS0ocypzK2MqYykqbipuKS8oMipuKSldfSxhfWZ1bmN0aW9uIFdfKCl7cmV0dXJuIEhiKEdqKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIEJrKCl7cmV0dXJuIFdfKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gazNlKGUpe3ZhciB0PWUubGVuZ3RoO3JldHVybntwb2ludDpmdW5jdGlvbihyLG4pe2Zvcih2YXIgaT0tMTsrK2k8dDspZVtpXS5wb2ludChyLG4pfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPHQ7KWVbcl0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgcj0tMTsrK3I8dDspZVtyXS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgcj0tMTsrK3I8dDspZVtyXS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgcj0tMTsrK3I8dDspZVtyXS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2Zvcih2YXIgcj0tMTsrK3I8dDspZVtyXS5wb2x5Z29uRW5kKCl9fX1mdW5jdGlvbiB3YnQoKXt2YXIgZSx0LHI9QmsoKSxuLGk9V18oKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLG8sYT1XXygpLnJvdGF0ZShbMTU3LDBdKS5jZW50ZXIoWy0zLDE5LjldKS5wYXJhbGxlbHMoWzgsMThdKSxzLGwsYz17cG9pbnQ6ZnVuY3Rpb24oZixwKXtsPVtmLHBdfX07ZnVuY3Rpb24gdShmKXt2YXIgcD1mWzBdLGQ9ZlsxXTtyZXR1cm4gbD1udWxsLG4ucG9pbnQocCxkKSxsfHwoby5wb2ludChwLGQpLGwpfHwocy5wb2ludChwLGQpLGwpfXUuaW52ZXJ0PWZ1bmN0aW9uKGYpe3ZhciBwPXIuc2NhbGUoKSxkPXIudHJhbnNsYXRlKCksZz0oZlswXS1kWzBdKS9wLF89KGZbMV0tZFsxXSkvcDtyZXR1cm4oXz49LjEyJiZfPC4yMzQmJmc+PS0uNDI1JiZnPC0uMjE0P2k6Xz49LjE2NiYmXzwuMjM0JiZnPj0tLjIxNCYmZzwtLjExNT9hOnIpLmludmVydChmKX0sdS5zdHJlYW09ZnVuY3Rpb24oZil7cmV0dXJuIGUmJnQ9PT1mP2U6ZT1rM2UoW3Iuc3RyZWFtKHQ9ZiksaS5zdHJlYW0oZiksYS5zdHJlYW0oZildKX0sdS5wcmVjaXNpb249ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIucHJlY2lzaW9uKGYpLGkucHJlY2lzaW9uKGYpLGEucHJlY2lzaW9uKGYpLGgoKSk6ci5wcmVjaXNpb24oKX0sdS5zY2FsZT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oci5zY2FsZShmKSxpLnNjYWxlKGYqLjM1KSxhLnNjYWxlKGYpLHUudHJhbnNsYXRlKHIudHJhbnNsYXRlKCkpKTpyLnNjYWxlKCl9LHUudHJhbnNsYXRlPWZ1bmN0aW9uKGYpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiByLnRyYW5zbGF0ZSgpO3ZhciBwPXIuc2NhbGUoKSxkPStmWzBdLGc9K2ZbMV07cmV0dXJuIG49ci50cmFuc2xhdGUoZikuY2xpcEV4dGVudChbW2QtLjQ1NSpwLGctLjIzOCpwXSxbZCsuNDU1KnAsZysuMjM4KnBdXSkuc3RyZWFtKGMpLG89aS50cmFuc2xhdGUoW2QtLjMwNypwLGcrLjIwMSpwXSkuY2xpcEV4dGVudChbW2QtLjQyNSpwK2xlLGcrLjEyKnArbGVdLFtkLS4yMTQqcC1sZSxnKy4yMzQqcC1sZV1dKS5zdHJlYW0oYykscz1hLnRyYW5zbGF0ZShbZC0uMjA1KnAsZysuMjEyKnBdKS5jbGlwRXh0ZW50KFtbZC0uMjE0KnArbGUsZysuMTY2KnArbGVdLFtkLS4xMTUqcC1sZSxnKy4yMzQqcC1sZV1dKS5zdHJlYW0oYyksaCgpfSx1LmZpdEV4dGVudD1mdW5jdGlvbihmLHApe3JldHVybiBHXyh1LGYscCl9LHUuZml0U2l6ZT1mdW5jdGlvbihmLHApe3JldHVybiB6Yih1LGYscCl9LHUuZml0V2lkdGg9ZnVuY3Rpb24oZixwKXtyZXR1cm4gRmIodSxmLHApfSx1LmZpdEhlaWdodD1mdW5jdGlvbihmLHApe3JldHVybiBCYih1LGYscCl9O2Z1bmN0aW9uIGgoKXtyZXR1cm4gZT10PW51bGwsdX1yZXR1cm4gdS5zY2FsZSgxMDcwKX1mdW5jdGlvbiBIayhlKXtyZXR1cm4gZnVuY3Rpb24odCxyKXt2YXIgbj1adCh0KSxpPVp0KHIpLG89ZShuKmkpO3JldHVybltvKmkqWHQodCksbypYdChyKV19fWZ1bmN0aW9uIEhoKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3ZhciBuPXhyKHQqdCtyKnIpLGk9ZShuKSxvPVh0KGkpLGE9WnQoaSk7cmV0dXJuW2JuKHQqbyxuKmEpLHduKG4mJnIqby9uKV19fXZhciBWaz1IayhmdW5jdGlvbihlKXtyZXR1cm4geHIoMi8oMStlKSl9KTtWay5pbnZlcnQ9SGgoZnVuY3Rpb24oZSl7cmV0dXJuIDIqd24oZS8yKX0pO2Z1bmN0aW9uIFNidCgpe3JldHVybiBNaShWaykuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTgwLS4wMDEpfXZhciBVaz1IayhmdW5jdGlvbihlKXtyZXR1cm4oZT1sayhlKSkmJmUvWHQoZSl9KTtVay5pbnZlcnQ9SGgoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTtmdW5jdGlvbiBNYnQoKXtyZXR1cm4gTWkoVWspLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxODAtLjAwMSl9ZnVuY3Rpb24gWV8oZSx0KXtyZXR1cm5bZSxGXyhQYigobW4rdCkvMikpXX1ZXy5pbnZlcnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm5bZSwyKnJjKGFrKHQpKS1tbl19O2Z1bmN0aW9uIEVidCgpe3JldHVybiBXaihZXykuc2NhbGUoOTYxL1NpKX1mdW5jdGlvbiBXaihlKXt2YXIgdD1NaShlKSxyPXQuY2VudGVyLG49dC5zY2FsZSxpPXQudHJhbnNsYXRlLG89dC5jbGlwRXh0ZW50LGE9bnVsbCxzLGwsYzt0LnNjYWxlPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuKGgpLHUoKSk6bigpfSx0LnRyYW5zbGF0ZT1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaShoKSx1KCkpOmkoKX0sdC5jZW50ZXI9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIoaCksdSgpKTpyKCl9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD09bnVsbD9hPXM9bD1jPW51bGw6KGE9K2hbMF1bMF0scz0raFswXVsxXSxsPStoWzFdWzBdLGM9K2hbMV1bMV0pLHUoKSk6YT09bnVsbD9udWxsOltbYSxzXSxbbCxjXV19O2Z1bmN0aW9uIHUoKXt2YXIgaD1CZSpuKCksZj10KHZrKHQucm90YXRlKCkpLmludmVydChbMCwwXSkpO3JldHVybiBvKGE9PW51bGw/W1tmWzBdLWgsZlsxXS1oXSxbZlswXStoLGZbMV0raF1dOmU9PT1ZXz9bW01hdGgubWF4KGZbMF0taCxhKSxzXSxbTWF0aC5taW4oZlswXStoLGwpLGNdXTpbW2EsTWF0aC5tYXgoZlsxXS1oLHMpXSxbbCxNYXRoLm1pbihmWzFdK2gsYyldXSl9cmV0dXJuIHUoKX1mdW5jdGlvbiBxayhlKXtyZXR1cm4gUGIoKG1uK2UpLzIpfWZ1bmN0aW9uIFlqKGUsdCl7dmFyIHI9WnQoZSksbj1lPT09dD9YdChlKTpGXyhyL1p0KHQpKS9GXyhxayh0KS9xayhlKSksaT1yKnNrKHFrKGUpLG4pL247aWYoIW4pcmV0dXJuIFlfO2Z1bmN0aW9uIG8oYSxzKXtpPjA/czwtbW4rbGUmJihzPS1tbitsZSk6cz5tbi1sZSYmKHM9bW4tbGUpO3ZhciBsPWkvc2socWsocyksbik7cmV0dXJuW2wqWHQobiphKSxpLWwqWnQobiphKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKGEscyl7dmFyIGw9aS1zLGM9bGEobikqeHIoYSphK2wqbCksdT1ibihhLFJlKGwpKSpsYShsKTtyZXR1cm4gbCpuPDAmJih1LT1CZSpsYShhKSpsYShsKSksW3UvbiwyKnJjKHNrKGkvYywxL24pKS1tbl19LG99ZnVuY3Rpb24gVGJ0KCl7cmV0dXJuIEhiKFlqKS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfWZ1bmN0aW9uIGpfKGUsdCl7cmV0dXJuW2UsdF19al8uaW52ZXJ0PWpfO2Z1bmN0aW9uIENidCgpe3JldHVybiBNaShqXykuc2NhbGUoMTUyLjYzKX1mdW5jdGlvbiBqaihlLHQpe3ZhciByPVp0KGUpLG49ZT09PXQ/WHQoZSk6KHItWnQodCkpLyh0LWUpLGk9ci9uK2U7aWYoUmUobik8bGUpcmV0dXJuIGpfO2Z1bmN0aW9uIG8oYSxzKXt2YXIgbD1pLXMsYz1uKmE7cmV0dXJuW2wqWHQoYyksaS1sKlp0KGMpXX1yZXR1cm4gby5pbnZlcnQ9ZnVuY3Rpb24oYSxzKXt2YXIgbD1pLXMsYz1ibihhLFJlKGwpKSpsYShsKTtyZXR1cm4gbCpuPDAmJihjLT1CZSpsYShhKSpsYShsKSksW2MvbixpLWxhKG4pKnhyKGEqYStsKmwpXX0sb31mdW5jdGlvbiBBYnQoKXtyZXR1cm4gSGIoamopLnNjYWxlKDEzMS4xNTQpLmNlbnRlcihbMCwxMy45Mzg5XSl9dmFyIGE1PTEuMzQwMjY0LHM1PS0uMDgxMTA2LGw1PTg5M2UtNixjNT0uMDAzNzk2LEdrPXhyKDMpLzIsUjNlPTEyO2Z1bmN0aW9uIFdrKGUsdCl7dmFyIHI9d24oR2sqWHQodCkpLG49cipyLGk9bipuKm47cmV0dXJuW2UqWnQocikvKEdrKihhNSszKnM1Km4raSooNypsNSs5KmM1Km4pKSksciooYTUrczUqbitpKihsNStjNSpuKSldfVdrLmludmVydD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10LG49cipyLGk9bipuKm4sbz0wLGEscyxsO288UjNlJiYocz1yKihhNStzNSpuK2kqKGw1K2M1Km4pKS10LGw9YTUrMypzNSpuK2kqKDcqbDUrOSpjNSpuKSxyLT1hPXMvbCxuPXIqcixpPW4qbipuLCEoUmUoYSk8el8pKTsrK28pO3JldHVybltHayplKihhNSszKnM1Km4raSooNypsNSs5KmM1Km4pKS9adChyKSx3bihYdChyKS9HayldfTtmdW5jdGlvbiBQYnQoKXtyZXR1cm4gTWkoV2spLnNjYWxlKDE3Ny4xNTgpfWZ1bmN0aW9uIFlrKGUsdCl7dmFyIHI9WnQodCksbj1adChlKSpyO3JldHVybltyKlh0KGUpL24sWHQodCkvbl19WWsuaW52ZXJ0PUhoKHJjKTtmdW5jdGlvbiBJYnQoKXtyZXR1cm4gTWkoWWspLnNjYWxlKDE0NC4wNDkpLmNsaXBBbmdsZSg2MCl9ZnVuY3Rpb24gTGJ0KCl7dmFyIGU9MSx0PTAscj0wLG49MSxpPTEsbz0wLGEscyxsPW51bGwsYyx1LGgsZj0xLHA9MSxkPSRtKHtwb2ludDpmdW5jdGlvbihTLEMpe3ZhciBQPWIoW1MsQ10pO3RoaXMuc3RyZWFtLnBvaW50KFBbMF0sUFsxXSl9fSksZz1qbSxfLHk7ZnVuY3Rpb24geCgpe3JldHVybiBmPWUqbixwPWUqaSxfPXk9bnVsbCxifWZ1bmN0aW9uIGIoUyl7dmFyIEM9U1swXSpmLFA9U1sxXSpwO2lmKG8pe3ZhciBrPVAqYS1DKnM7Qz1DKmErUCpzLFA9a31yZXR1cm5bQyt0LFArcl19cmV0dXJuIGIuaW52ZXJ0PWZ1bmN0aW9uKFMpe3ZhciBDPVNbMF0tdCxQPVNbMV0tcjtpZihvKXt2YXIgaz1QKmErQypzO0M9QyphLVAqcyxQPWt9cmV0dXJuW0MvZixQL3BdfSxiLnN0cmVhbT1mdW5jdGlvbihTKXtyZXR1cm4gXyYmeT09PVM/XzpfPWQoZyh5PVMpKX0sYi5wb3N0Y2xpcD1mdW5jdGlvbihTKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1TLGw9Yz11PWg9bnVsbCx4KCkpOmd9LGIuY2xpcEV4dGVudD1mdW5jdGlvbihTKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1TPT1udWxsPyhsPWM9dT1oPW51bGwsam0pOkRwKGw9K1NbMF1bMF0sYz0rU1swXVsxXSx1PStTWzFdWzBdLGg9K1NbMV1bMV0pLHgoKSk6bD09bnVsbD9udWxsOltbbCxjXSxbdSxoXV19LGIuc2NhbGU9ZnVuY3Rpb24oUyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K1MseCgpKTplfSxiLnRyYW5zbGF0ZT1mdW5jdGlvbihTKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rU1swXSxyPStTWzFdLHgoKSk6W3Qscl19LGIuYW5nbGU9ZnVuY3Rpb24oUyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89UyUzNjAqX2Uscz1YdChvKSxhPVp0KG8pLHgoKSk6byp2cn0sYi5yZWZsZWN0WD1mdW5jdGlvbihTKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1TPy0xOjEseCgpKTpuPDB9LGIucmVmbGVjdFk9ZnVuY3Rpb24oUyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9Uz8tMToxLHgoKSk6aTwwfSxiLmZpdEV4dGVudD1mdW5jdGlvbihTLEMpe3JldHVybiBHXyhiLFMsQyl9LGIuZml0U2l6ZT1mdW5jdGlvbihTLEMpe3JldHVybiB6YihiLFMsQyl9LGIuZml0V2lkdGg9ZnVuY3Rpb24oUyxDKXtyZXR1cm4gRmIoYixTLEMpfSxiLmZpdEhlaWdodD1mdW5jdGlvbihTLEMpe3JldHVybiBCYihiLFMsQyl9LGJ9ZnVuY3Rpb24gamsoZSx0KXt2YXIgcj10KnQsbj1yKnI7cmV0dXJuW2UqKC44NzA3LS4xMzE5NzkqcituKigtLjAxMzc5MStuKiguMDAzOTcxKnItLjAwMTUyOSpuKSkpLHQqKDEuMDA3MjI2K3IqKC4wMTUwODUrbiooLS4wNDQ0NzUrLjAyODg3NCpyLS4wMDU5MTYqbikpKV19amsuaW52ZXJ0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9dCxuPTI1LGk7ZG97dmFyIG89cipyLGE9bypvO3ItPWk9KHIqKDEuMDA3MjI2K28qKC4wMTUwODUrYSooLS4wNDQ0NzUrLjAyODg3NCpvLS4wMDU5MTYqYSkpKS10KS8oMS4wMDcyMjYrbyooLjAxNTA4NSozK2EqKC0uMDQ0NDc1KjcrLjAyODg3NCo5Km8tLjAwNTkxNioxMSphKSkpfXdoaWxlKFJlKGkpPmxlJiYtLW4+MCk7cmV0dXJuW2UvKC44NzA3KyhvPXIqcikqKC0uMTMxOTc5K28qKC0uMDEzNzkxK28qbypvKiguMDAzOTcxLS4wMDE1MjkqbykpKSkscl19O2Z1bmN0aW9uIGtidCgpe3JldHVybiBNaShqaykuc2NhbGUoMTc1LjI5NSl9ZnVuY3Rpb24gWGsoZSx0KXtyZXR1cm5bWnQodCkqWHQoZSksWHQodCldfVhrLmludmVydD1IaCh3bik7ZnVuY3Rpb24gUmJ0KCl7cmV0dXJuIE1pKFhrKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwK2xlKX1mdW5jdGlvbiAkayhlLHQpe3ZhciByPVp0KHQpLG49MStadChlKSpyO3JldHVybltyKlh0KGUpL24sWHQodCkvbl19JGsuaW52ZXJ0PUhoKGZ1bmN0aW9uKGUpe3JldHVybiAyKnJjKGUpfSk7ZnVuY3Rpb24gTmJ0KCl7cmV0dXJuIE1pKCRrKS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfWZ1bmN0aW9uIEtrKGUsdCl7cmV0dXJuW0ZfKFBiKChtbit0KS8yKSksLWVdfUtrLmludmVydD1mdW5jdGlvbihlLHQpe3JldHVyblstdCwyKnJjKGFrKGUpKS1tbl19O2Z1bmN0aW9uIERidCgpe3ZhciBlPVdqKEtrKSx0PWUuY2VudGVyLHI9ZS5yb3RhdGU7cmV0dXJuIGUuY2VudGVyPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QoWy1uWzFdLG5bMF1dKToobj10KCksW25bMV0sLW5bMF1dKX0sZS5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cihbblswXSxuWzFdLG4ubGVuZ3RoPjI/blsyXSs5MDo5MF0pOihuPXIoKSxbblswXSxuWzFdLG5bMl0tOTBdKX0scihbMCwwLDkwXSkuc2NhbGUoMTU5LjE1NSl9ZnVuY3Rpb24gTjNlKGUsdCl7cmV0dXJuIGUucGFyZW50PT09dC5wYXJlbnQ/MToyfWZ1bmN0aW9uIEQzZShlKXtyZXR1cm4gZS5yZWR1Y2UoTzNlLDApL2UubGVuZ3RofWZ1bmN0aW9uIE8zZShlLHQpe3JldHVybiBlK3QueH1mdW5jdGlvbiB6M2UoZSl7cmV0dXJuIDErZS5yZWR1Y2UoRjNlLDApfWZ1bmN0aW9uIEYzZShlLHQpe3JldHVybiBNYXRoLm1heChlLHQueSl9ZnVuY3Rpb24gQjNlKGUpe2Zvcih2YXIgdDt0PWUuY2hpbGRyZW47KWU9dFswXTtyZXR1cm4gZX1mdW5jdGlvbiBIM2UoZSl7Zm9yKHZhciB0O3Q9ZS5jaGlsZHJlbjspZT10W3QubGVuZ3RoLTFdO3JldHVybiBlfWZ1bmN0aW9uIE9idCgpe3ZhciBlPU4zZSx0PTEscj0xLG49ITE7ZnVuY3Rpb24gaShvKXt2YXIgYSxzPTA7by5lYWNoQWZ0ZXIoZnVuY3Rpb24oZil7dmFyIHA9Zi5jaGlsZHJlbjtwPyhmLng9RDNlKHApLGYueT16M2UocCkpOihmLng9YT9zKz1lKGYsYSk6MCxmLnk9MCxhPWYpfSk7dmFyIGw9QjNlKG8pLGM9SDNlKG8pLHU9bC54LWUobCxjKS8yLGg9Yy54K2UoYyxsKS8yO3JldHVybiBvLmVhY2hBZnRlcihuP2Z1bmN0aW9uKGYpe2YueD0oZi54LW8ueCkqdCxmLnk9KG8ueS1mLnkpKnJ9OmZ1bmN0aW9uKGYpe2YueD0oZi54LXUpLyhoLXUpKnQsZi55PSgxLShvLnk/Zi55L28ueToxKSkqcn0pfXJldHVybiBpLnNlcGFyYXRpb249ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9byxpKTplfSxpLnNpemU9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ITEsdD0rb1swXSxyPStvWzFdLGkpOm4/bnVsbDpbdCxyXX0saS5ub2RlU2l6ZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hMCx0PStvWzBdLHI9K29bMV0saSk6bj9bdCxyXTpudWxsfSxpfWZ1bmN0aW9uIFYzZShlKXt2YXIgdD0wLHI9ZS5jaGlsZHJlbixuPXImJnIubGVuZ3RoO2lmKCFuKXQ9MTtlbHNlIGZvcig7LS1uPj0wOyl0Kz1yW25dLnZhbHVlO2UudmFsdWU9dH1mdW5jdGlvbiB6YnQoKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoVjNlKX1mdW5jdGlvbiBGYnQoZSl7dmFyIHQ9dGhpcyxyLG49W3RdLGksbyxhO2RvIGZvcihyPW4ucmV2ZXJzZSgpLG49W107dD1yLnBvcCgpOylpZihlKHQpLGk9dC5jaGlsZHJlbixpKWZvcihvPTAsYT1pLmxlbmd0aDtvPGE7KytvKW4ucHVzaChpW29dKTt3aGlsZShuLmxlbmd0aCk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gQmJ0KGUpe2Zvcih2YXIgdD10aGlzLHI9W3RdLG4saTt0PXIucG9wKCk7KWlmKGUodCksbj10LmNoaWxkcmVuLG4pZm9yKGk9bi5sZW5ndGgtMTtpPj0wOy0taSlyLnB1c2gobltpXSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gSGJ0KGUpe2Zvcih2YXIgdD10aGlzLHI9W3RdLG49W10saSxvLGE7dD1yLnBvcCgpOylpZihuLnB1c2godCksaT10LmNoaWxkcmVuLGkpZm9yKG89MCxhPWkubGVuZ3RoO288YTsrK28pci5wdXNoKGlbb10pO2Zvcig7dD1uLnBvcCgpOyllKHQpO3JldHVybiB0aGlzfWZ1bmN0aW9uIFZidChlKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoZnVuY3Rpb24odCl7Zm9yKHZhciByPStlKHQuZGF0YSl8fDAsbj10LmNoaWxkcmVuLGk9biYmbi5sZW5ndGg7LS1pPj0wOylyKz1uW2ldLnZhbHVlO3QudmFsdWU9cn0pfWZ1bmN0aW9uIFVidChlKXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW4mJnQuY2hpbGRyZW4uc29ydChlKX0pfWZ1bmN0aW9uIHFidChlKXtmb3IodmFyIHQ9dGhpcyxyPVUzZSh0LGUpLG49W3RdO3QhPT1yOyl0PXQucGFyZW50LG4ucHVzaCh0KTtmb3IodmFyIGk9bi5sZW5ndGg7ZSE9PXI7KW4uc3BsaWNlKGksMCxlKSxlPWUucGFyZW50O3JldHVybiBufWZ1bmN0aW9uIFUzZShlLHQpe2lmKGU9PT10KXJldHVybiBlO3ZhciByPWUuYW5jZXN0b3JzKCksbj10LmFuY2VzdG9ycygpLGk9bnVsbDtmb3IoZT1yLnBvcCgpLHQ9bi5wb3AoKTtlPT09dDspaT1lLGU9ci5wb3AoKSx0PW4ucG9wKCk7cmV0dXJuIGl9ZnVuY3Rpb24gR2J0KCl7Zm9yKHZhciBlPXRoaXMsdD1bZV07ZT1lLnBhcmVudDspdC5wdXNoKGUpO3JldHVybiB0fWZ1bmN0aW9uIFdidCgpe3ZhciBlPVtdO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSksZX1mdW5jdGlvbiBZYnQoKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QuY2hpbGRyZW58fGUucHVzaCh0KX0pLGV9ZnVuY3Rpb24gamJ0KCl7dmFyIGU9dGhpcyx0PVtdO3JldHVybiBlLmVhY2goZnVuY3Rpb24ocil7ciE9PWUmJnQucHVzaCh7c291cmNlOnIucGFyZW50LHRhcmdldDpyfSl9KSx0fWZ1bmN0aW9uIHU1KGUsdCl7dmFyIHI9bmV3IEttKGUpLG49K2UudmFsdWUmJihyLnZhbHVlPWUudmFsdWUpLGksbz1bcl0sYSxzLGwsYztmb3IodD09bnVsbCYmKHQ9RzNlKTtpPW8ucG9wKCk7KWlmKG4mJihpLnZhbHVlPStpLmRhdGEudmFsdWUpLChzPXQoaS5kYXRhKSkmJihjPXMubGVuZ3RoKSlmb3IoaS5jaGlsZHJlbj1uZXcgQXJyYXkoYyksbD1jLTE7bD49MDstLWwpby5wdXNoKGE9aS5jaGlsZHJlbltsXT1uZXcgS20oc1tsXSkpLGEucGFyZW50PWksYS5kZXB0aD1pLmRlcHRoKzE7cmV0dXJuIHIuZWFjaEJlZm9yZShYail9ZnVuY3Rpb24gcTNlKCl7cmV0dXJuIHU1KHRoaXMpLmVhY2hCZWZvcmUoVzNlKX1mdW5jdGlvbiBHM2UoZSl7cmV0dXJuIGUuY2hpbGRyZW59ZnVuY3Rpb24gVzNlKGUpe2UuZGF0YT1lLmRhdGEuZGF0YX1mdW5jdGlvbiBYaihlKXt2YXIgdD0wO2RvIGUuaGVpZ2h0PXQ7d2hpbGUoKGU9ZS5wYXJlbnQpJiZlLmhlaWdodDwrK3QpfWZ1bmN0aW9uIEttKGUpe3RoaXMuZGF0YT1lLHRoaXMuZGVwdGg9dGhpcy5oZWlnaHQ9MCx0aGlzLnBhcmVudD1udWxsfUttLnByb3RvdHlwZT11NS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkttLGNvdW50OnpidCxlYWNoOkZidCxlYWNoQWZ0ZXI6SGJ0LGVhY2hCZWZvcmU6QmJ0LHN1bTpWYnQsc29ydDpVYnQscGF0aDpxYnQsYW5jZXN0b3JzOkdidCxkZXNjZW5kYW50czpXYnQsbGVhdmVzOllidCxsaW5rczpqYnQsY29weTpxM2V9O3ZhciBYYnQ9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uICRidChlKXtmb3IodmFyIHQ9ZS5sZW5ndGgscixuO3Q7KW49TWF0aC5yYW5kb20oKSp0LS18MCxyPWVbdF0sZVt0XT1lW25dLGVbbl09cjtyZXR1cm4gZX1mdW5jdGlvbiBKayhlKXtmb3IodmFyIHQ9MCxyPShlPSRidChYYnQuY2FsbChlKSkpLmxlbmd0aCxuPVtdLGksbzt0PHI7KWk9ZVt0XSxvJiZLYnQobyxpKT8rK3Q6KG89ajNlKG49WTNlKG4saSkpLHQ9MCk7cmV0dXJuIG99ZnVuY3Rpb24gWTNlKGUsdCl7dmFyIHIsbjtpZigkaih0LGUpKXJldHVyblt0XTtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKWlmKFprKHQsZVtyXSkmJiRqKGg1KGVbcl0sdCksZSkpcmV0dXJuW2Vbcl0sdF07Zm9yKHI9MDtyPGUubGVuZ3RoLTE7KytyKWZvcihuPXIrMTtuPGUubGVuZ3RoOysrbilpZihaayhoNShlW3JdLGVbbl0pLHQpJiZaayhoNShlW3JdLHQpLGVbbl0pJiZaayhoNShlW25dLHQpLGVbcl0pJiYkaihaYnQoZVtyXSxlW25dLHQpLGUpKXJldHVybltlW3JdLGVbbl0sdF07dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uIFprKGUsdCl7dmFyIHI9ZS5yLXQucixuPXQueC1lLngsaT10LnktZS55O3JldHVybiByPDB8fHIqcjxuKm4raSppfWZ1bmN0aW9uIEtidChlLHQpe3ZhciByPWUuci10LnIrMWUtNixuPXQueC1lLngsaT10LnktZS55O3JldHVybiByPjAmJnIqcj5uKm4raSppfWZ1bmN0aW9uICRqKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpaWYoIUtidChlLHRbcl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGozZShlKXtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTpyZXR1cm4gWDNlKGVbMF0pO2Nhc2UgMjpyZXR1cm4gaDUoZVswXSxlWzFdKTtjYXNlIDM6cmV0dXJuIFpidChlWzBdLGVbMV0sZVsyXSl9fWZ1bmN0aW9uIFgzZShlKXtyZXR1cm57eDplLngseTplLnkscjplLnJ9fWZ1bmN0aW9uIGg1KGUsdCl7dmFyIHI9ZS54LG49ZS55LGk9ZS5yLG89dC54LGE9dC55LHM9dC5yLGw9by1yLGM9YS1uLHU9cy1pLGg9TWF0aC5zcXJ0KGwqbCtjKmMpO3JldHVybnt4OihyK28rbC9oKnUpLzIseToobithK2MvaCp1KS8yLHI6KGgraStzKS8yfX1mdW5jdGlvbiBaYnQoZSx0LHIpe3ZhciBuPWUueCxpPWUueSxvPWUucixhPXQueCxzPXQueSxsPXQucixjPXIueCx1PXIueSxoPXIucixmPW4tYSxwPW4tYyxkPWktcyxnPWktdSxfPWwtbyx5PWgtbyx4PW4qbitpKmktbypvLGI9eC1hKmEtcypzK2wqbCxTPXgtYypjLXUqdStoKmgsQz1wKmQtZipnLFA9KGQqUy1nKmIpLyhDKjIpLW4saz0oZypfLWQqeSkvQyxPPShwKmItZipTKS8oQyoyKS1pLEQ9KGYqeS1wKl8pL0MsQj1rKmsrRCpELTEsST0yKihvK1AqaytPKkQpLEw9UCpQK08qTy1vKm8sUj0tKEI/KEkrTWF0aC5zcXJ0KEkqSS00KkIqTCkpLygyKkIpOkwvSSk7cmV0dXJue3g6bitQK2sqUix5OmkrTytEKlIscjpSfX1mdW5jdGlvbiBKYnQoZSx0LHIpe3ZhciBuPWUueC10LngsaSxvLGE9ZS55LXQueSxzLGwsYz1uKm4rYSphO2M/KG89dC5yK3IucixvKj1vLGw9ZS5yK3IucixsKj1sLG8+bD8oaT0oYytsLW8pLygyKmMpLHM9TWF0aC5zcXJ0KE1hdGgubWF4KDAsbC9jLWkqaSkpLHIueD1lLngtaSpuLXMqYSxyLnk9ZS55LWkqYStzKm4pOihpPShjK28tbCkvKDIqYykscz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxvL2MtaSppKSksci54PXQueCtpKm4tcyphLHIueT10LnkraSphK3MqbikpOihyLng9dC54K3IucixyLnk9dC55KX1mdW5jdGlvbiBRYnQoZSx0KXt2YXIgcj1lLnIrdC5yLTFlLTYsbj10LngtZS54LGk9dC55LWUueTtyZXR1cm4gcj4wJiZyKnI+bipuK2kqaX1mdW5jdGlvbiB0MnQoZSl7dmFyIHQ9ZS5fLHI9ZS5uZXh0Ll8sbj10LnIrci5yLGk9KHQueCpyLnIrci54KnQucikvbixvPSh0Lnkqci5yK3IueSp0LnIpL247cmV0dXJuIGkqaStvKm99ZnVuY3Rpb24gUWsoZSl7dGhpcy5fPWUsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIEtqKGUpe2lmKCEoaT1lLmxlbmd0aCkpcmV0dXJuIDA7dmFyIHQscixuLGksbyxhLHMsbCxjLHUsaDtpZih0PWVbMF0sdC54PTAsdC55PTAsIShpPjEpKXJldHVybiB0LnI7aWYocj1lWzFdLHQueD0tci5yLHIueD10LnIsci55PTAsIShpPjIpKXJldHVybiB0LnIrci5yO0pidChyLHQsbj1lWzJdKSx0PW5ldyBRayh0KSxyPW5ldyBRayhyKSxuPW5ldyBRayhuKSx0Lm5leHQ9bi5wcmV2aW91cz1yLHIubmV4dD10LnByZXZpb3VzPW4sbi5uZXh0PXIucHJldmlvdXM9dDt0OmZvcihzPTM7czxpOysrcyl7SmJ0KHQuXyxyLl8sbj1lW3NdKSxuPW5ldyBRayhuKSxsPXIubmV4dCxjPXQucHJldmlvdXMsdT1yLl8ucixoPXQuXy5yO2RvIGlmKHU8PWgpe2lmKFFidChsLl8sbi5fKSl7cj1sLHQubmV4dD1yLHIucHJldmlvdXM9dCwtLXM7Y29udGludWUgdH11Kz1sLl8ucixsPWwubmV4dH1lbHNle2lmKFFidChjLl8sbi5fKSl7dD1jLHQubmV4dD1yLHIucHJldmlvdXM9dCwtLXM7Y29udGludWUgdH1oKz1jLl8ucixjPWMucHJldmlvdXN9d2hpbGUobCE9PWMubmV4dCk7Zm9yKG4ucHJldmlvdXM9dCxuLm5leHQ9cix0Lm5leHQ9ci5wcmV2aW91cz1yPW4sbz10MnQodCk7KG49bi5uZXh0KSE9PXI7KShhPXQydChuKSk8byYmKHQ9bixvPWEpO3I9dC5uZXh0fWZvcih0PVtyLl9dLG49cjsobj1uLm5leHQpIT09cjspdC5wdXNoKG4uXyk7Zm9yKG49SmsodCkscz0wO3M8aTsrK3MpdD1lW3NdLHQueC09bi54LHQueS09bi55O3JldHVybiBuLnJ9ZnVuY3Rpb24gZTJ0KGUpe3JldHVybiBLaihlKSxlfWZ1bmN0aW9uIHIydChlKXtyZXR1cm4gZT09bnVsbD9udWxsOlZiKGUpfWZ1bmN0aW9uIFZiKGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZX1mdW5jdGlvbiBPcCgpe3JldHVybiAwfWZ1bmN0aW9uIFptKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiAkM2UoZSl7cmV0dXJuIE1hdGguc3FydChlLnZhbHVlKX1mdW5jdGlvbiBvMnQoKXt2YXIgZT1udWxsLHQ9MSxyPTEsbj1PcDtmdW5jdGlvbiBpKG8pe3JldHVybiBvLng9dC8yLG8ueT1yLzIsZT9vLmVhY2hCZWZvcmUobjJ0KGUpKS5lYWNoQWZ0ZXIoWmoobiwuNSkpLmVhY2hCZWZvcmUoaTJ0KDEpKTpvLmVhY2hCZWZvcmUobjJ0KCQzZSkpLmVhY2hBZnRlcihaaihPcCwxKSkuZWFjaEFmdGVyKFpqKG4sby5yL01hdGgubWluKHQscikpKS5lYWNoQmVmb3JlKGkydChNYXRoLm1pbih0LHIpLygyKm8ucikpKSxvfXJldHVybiBpLnJhZGl1cz1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1yMnQobyksaSk6ZX0saS5zaXplPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStvWzBdLHI9K29bMV0saSk6W3Qscl19LGkucGFkZGluZz1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOlptKCtvKSxpKTpufSxpfWZ1bmN0aW9uIG4ydChlKXtyZXR1cm4gZnVuY3Rpb24odCl7dC5jaGlsZHJlbnx8KHQucj1NYXRoLm1heCgwLCtlKHQpfHwwKSl9fWZ1bmN0aW9uIFpqKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe2lmKG49ci5jaGlsZHJlbil7dmFyIG4saSxvPW4ubGVuZ3RoLGE9ZShyKSp0fHwwLHM7aWYoYSlmb3IoaT0wO2k8bzsrK2kpbltpXS5yKz1hO2lmKHM9S2oobiksYSlmb3IoaT0wO2k8bzsrK2kpbltpXS5yLT1hO3Iucj1zK2F9fX1mdW5jdGlvbiBpMnQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByPXQucGFyZW50O3Qucio9ZSxyJiYodC54PXIueCtlKnQueCx0Lnk9ci55K2UqdC55KX19ZnVuY3Rpb24gdDgoZSl7ZS54MD1NYXRoLnJvdW5kKGUueDApLGUueTA9TWF0aC5yb3VuZChlLnkwKSxlLngxPU1hdGgucm91bmQoZS54MSksZS55MT1NYXRoLnJvdW5kKGUueTEpfWZ1bmN0aW9uIFZoKGUsdCxyLG4saSl7Zm9yKHZhciBvPWUuY2hpbGRyZW4sYSxzPS0xLGw9by5sZW5ndGgsYz1lLnZhbHVlJiYobi10KS9lLnZhbHVlOysrczxsOylhPW9bc10sYS55MD1yLGEueTE9aSxhLngwPXQsYS54MT10Kz1hLnZhbHVlKmN9ZnVuY3Rpb24gYTJ0KCl7dmFyIGU9MSx0PTEscj0wLG49ITE7ZnVuY3Rpb24gaShhKXt2YXIgcz1hLmhlaWdodCsxO3JldHVybiBhLngwPWEueTA9cixhLngxPWUsYS55MT10L3MsYS5lYWNoQmVmb3JlKG8odCxzKSksbiYmYS5lYWNoQmVmb3JlKHQ4KSxhfWZ1bmN0aW9uIG8oYSxzKXtyZXR1cm4gZnVuY3Rpb24obCl7bC5jaGlsZHJlbiYmVmgobCxsLngwLGEqKGwuZGVwdGgrMSkvcyxsLngxLGEqKGwuZGVwdGgrMikvcyk7dmFyIGM9bC54MCx1PWwueTAsaD1sLngxLXIsZj1sLnkxLXI7aDxjJiYoYz1oPShjK2gpLzIpLGY8dSYmKHU9Zj0odStmKS8yKSxsLngwPWMsbC55MD11LGwueDE9aCxsLnkxPWZ9fXJldHVybiBpLnJvdW5kPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSEhYSxpKTpufSxpLnNpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K2FbMF0sdD0rYVsxXSxpKTpbZSx0XX0saS5wYWRkaW5nPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSthLGkpOnJ9LGl9dmFyIHMydD0iJCIsSzNlPXtkZXB0aDotMX0sbDJ0PXt9O2Z1bmN0aW9uIFozZShlKXtyZXR1cm4gZS5pZH1mdW5jdGlvbiBKM2UoZSl7cmV0dXJuIGUucGFyZW50SWR9ZnVuY3Rpb24gYzJ0KCl7dmFyIGU9WjNlLHQ9SjNlO2Z1bmN0aW9uIHIobil7dmFyIGksbyxhPW4ubGVuZ3RoLHMsbCxjLHU9bmV3IEFycmF5KGEpLGgsZixwPXt9O2ZvcihvPTA7bzxhOysrbylpPW5bb10sYz11W29dPW5ldyBLbShpKSwoaD1lKGksbyxuKSkhPW51bGwmJihoKz0iIikmJihmPXMydCsoYy5pZD1oKSxwW2ZdPWYgaW4gcD9sMnQ6Yyk7Zm9yKG89MDtvPGE7KytvKWlmKGM9dVtvXSxoPXQobltvXSxvLG4pLGg9PW51bGx8fCEoaCs9IiIpKXtpZihzKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtzPWN9ZWxzZXtpZihsPXBbczJ0K2hdLCFsKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIitoKTtpZihsPT09bDJ0KXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2gpO2wuY2hpbGRyZW4/bC5jaGlsZHJlbi5wdXNoKGMpOmwuY2hpbGRyZW49W2NdLGMucGFyZW50PWx9aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYocy5wYXJlbnQ9SzNlLHMuZWFjaEJlZm9yZShmdW5jdGlvbihkKXtkLmRlcHRoPWQucGFyZW50LmRlcHRoKzEsLS1hfSkuZWFjaEJlZm9yZShYaikscy5wYXJlbnQ9bnVsbCxhPjApdGhyb3cgbmV3IEVycm9yKCJjeWNsZSIpO3JldHVybiBzfXJldHVybiByLmlkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVZiKG4pLHIpOmV9LHIucGFyZW50SWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9VmIobikscik6dH0scn1mdW5jdGlvbiBRM2UoZSx0KXtyZXR1cm4gZS5wYXJlbnQ9PT10LnBhcmVudD8xOjJ9ZnVuY3Rpb24gSmooZSl7dmFyIHQ9ZS5jaGlsZHJlbjtyZXR1cm4gdD90WzBdOmUudH1mdW5jdGlvbiBRaihlKXt2YXIgdD1lLmNoaWxkcmVuO3JldHVybiB0P3RbdC5sZW5ndGgtMV06ZS50fWZ1bmN0aW9uIHRNZShlLHQscil7dmFyIG49ci8odC5pLWUuaSk7dC5jLT1uLHQucys9cixlLmMrPW4sdC56Kz1yLHQubSs9cn1mdW5jdGlvbiBlTWUoZSl7Zm9yKHZhciB0PTAscj0wLG49ZS5jaGlsZHJlbixpPW4ubGVuZ3RoLG87LS1pPj0wOylvPW5baV0sby56Kz10LG8ubSs9dCx0Kz1vLnMrKHIrPW8uYyl9ZnVuY3Rpb24gck1lKGUsdCxyKXtyZXR1cm4gZS5hLnBhcmVudD09PXQucGFyZW50P2UuYTpyfWZ1bmN0aW9uIGU4KGUsdCl7dGhpcy5fPWUsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPXR9ZTgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoS20ucHJvdG90eXBlKTtmdW5jdGlvbiBuTWUoZSl7Zm9yKHZhciB0PW5ldyBlOChlLDApLHIsbj1bdF0saSxvLGEscztyPW4ucG9wKCk7KWlmKG89ci5fLmNoaWxkcmVuKWZvcihyLmNoaWxkcmVuPW5ldyBBcnJheShzPW8ubGVuZ3RoKSxhPXMtMTthPj0wOy0tYSluLnB1c2goaT1yLmNoaWxkcmVuW2FdPW5ldyBlOChvW2FdLGEpKSxpLnBhcmVudD1yO3JldHVybih0LnBhcmVudD1uZXcgZTgobnVsbCwwKSkuY2hpbGRyZW49W3RdLHR9ZnVuY3Rpb24gdTJ0KCl7dmFyIGU9UTNlLHQ9MSxyPTEsbj1udWxsO2Z1bmN0aW9uIGkoYyl7dmFyIHU9bk1lKGMpO2lmKHUuZWFjaEFmdGVyKG8pLHUucGFyZW50Lm09LXUueix1LmVhY2hCZWZvcmUoYSksbiljLmVhY2hCZWZvcmUobCk7ZWxzZXt2YXIgaD1jLGY9YyxwPWM7Yy5lYWNoQmVmb3JlKGZ1bmN0aW9uKHgpe3gueDxoLngmJihoPXgpLHgueD5mLngmJihmPXgpLHguZGVwdGg+cC5kZXB0aCYmKHA9eCl9KTt2YXIgZD1oPT09Zj8xOmUoaCxmKS8yLGc9ZC1oLngsXz10LyhmLngrZCtnKSx5PXIvKHAuZGVwdGh8fDEpO2MuZWFjaEJlZm9yZShmdW5jdGlvbih4KXt4Lng9KHgueCtnKSpfLHgueT14LmRlcHRoKnl9KX1yZXR1cm4gY31mdW5jdGlvbiBvKGMpe3ZhciB1PWMuY2hpbGRyZW4saD1jLnBhcmVudC5jaGlsZHJlbixmPWMuaT9oW2MuaS0xXTpudWxsO2lmKHUpe2VNZShjKTt2YXIgcD0odVswXS56K3VbdS5sZW5ndGgtMV0ueikvMjtmPyhjLno9Zi56K2UoYy5fLGYuXyksYy5tPWMuei1wKTpjLno9cH1lbHNlIGYmJihjLno9Zi56K2UoYy5fLGYuXykpO2MucGFyZW50LkE9cyhjLGYsYy5wYXJlbnQuQXx8aFswXSl9ZnVuY3Rpb24gYShjKXtjLl8ueD1jLnorYy5wYXJlbnQubSxjLm0rPWMucGFyZW50Lm19ZnVuY3Rpb24gcyhjLHUsaCl7aWYodSl7Zm9yKHZhciBmPWMscD1jLGQ9dSxnPWYucGFyZW50LmNoaWxkcmVuWzBdLF89Zi5tLHk9cC5tLHg9ZC5tLGI9Zy5tLFM7ZD1RaihkKSxmPUpqKGYpLGQmJmY7KWc9SmooZykscD1RaihwKSxwLmE9YyxTPWQueit4LWYuei1fK2UoZC5fLGYuXyksUz4wJiYodE1lKHJNZShkLGMsaCksYyxTKSxfKz1TLHkrPVMpLHgrPWQubSxfKz1mLm0sYis9Zy5tLHkrPXAubTtkJiYhUWoocCkmJihwLnQ9ZCxwLm0rPXgteSksZiYmIUpqKGcpJiYoZy50PWYsZy5tKz1fLWIsaD1jKX1yZXR1cm4gaH1mdW5jdGlvbiBsKGMpe2MueCo9dCxjLnk9Yy5kZXB0aCpyfXJldHVybiBpLnNlcGFyYXRpb249ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YyxpKTplfSxpLnNpemU9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ITEsdD0rY1swXSxyPStjWzFdLGkpOm4/bnVsbDpbdCxyXX0saS5ub2RlU2l6ZT1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hMCx0PStjWzBdLHI9K2NbMV0saSk6bj9bdCxyXTpudWxsfSxpfWZ1bmN0aW9uIEptKGUsdCxyLG4saSl7Zm9yKHZhciBvPWUuY2hpbGRyZW4sYSxzPS0xLGw9by5sZW5ndGgsYz1lLnZhbHVlJiYoaS1yKS9lLnZhbHVlOysrczxsOylhPW9bc10sYS54MD10LGEueDE9bixhLnkwPXIsYS55MT1yKz1hLnZhbHVlKmN9dmFyIHRYPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiBlWChlLHQscixuLGksbyl7Zm9yKHZhciBhPVtdLHM9dC5jaGlsZHJlbixsLGMsdT0wLGg9MCxmPXMubGVuZ3RoLHAsZCxnPXQudmFsdWUsXyx5LHgsYixTLEMsUDt1PGY7KXtwPWktcixkPW8tbjtkbyBfPXNbaCsrXS52YWx1ZTt3aGlsZSghXyYmaDxmKTtmb3IoeT14PV8sQz1NYXRoLm1heChkL3AscC9kKS8oZyplKSxQPV8qXypDLFM9TWF0aC5tYXgoeC9QLFAveSk7aDxmOysraCl7aWYoXys9Yz1zW2hdLnZhbHVlLGM8eSYmKHk9YyksYz54JiYoeD1jKSxQPV8qXypDLGI9TWF0aC5tYXgoeC9QLFAveSksYj5TKXtfLT1jO2JyZWFrfVM9Yn1hLnB1c2gobD17dmFsdWU6XyxkaWNlOnA8ZCxjaGlsZHJlbjpzLnNsaWNlKHUsaCl9KSxsLmRpY2U/VmgobCxyLG4saSxnP24rPWQqXy9nOm8pOkptKGwscixuLGc/cis9cCpfL2c6aSxvKSxnLT1fLHU9aH1yZXR1cm4gYX12YXIgcjg9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4saSxvLGEscyl7ZVgodCxuLGksbyxhLHMpfXJldHVybiByLnJhdGlvPWZ1bmN0aW9uKG4pe3JldHVybiBlKChuPStuKT4xP246MSl9LHJ9KHRYKTtmdW5jdGlvbiBoMnQoKXt2YXIgZT1yOCx0PSExLHI9MSxuPTEsaT1bMF0sbz1PcCxhPU9wLHM9T3AsbD1PcCxjPU9wO2Z1bmN0aW9uIHUoZil7cmV0dXJuIGYueDA9Zi55MD0wLGYueDE9cixmLnkxPW4sZi5lYWNoQmVmb3JlKGgpLGk9WzBdLHQmJmYuZWFjaEJlZm9yZSh0OCksZn1mdW5jdGlvbiBoKGYpe3ZhciBwPWlbZi5kZXB0aF0sZD1mLngwK3AsZz1mLnkwK3AsXz1mLngxLXAseT1mLnkxLXA7XzxkJiYoZD1fPShkK18pLzIpLHk8ZyYmKGc9eT0oZyt5KS8yKSxmLngwPWQsZi55MD1nLGYueDE9XyxmLnkxPXksZi5jaGlsZHJlbiYmKHA9aVtmLmRlcHRoKzFdPW8oZikvMixkKz1jKGYpLXAsZys9YShmKS1wLF8tPXMoZiktcCx5LT1sKGYpLXAsXzxkJiYoZD1fPShkK18pLzIpLHk8ZyYmKGc9eT0oZyt5KS8yKSxlKGYsZCxnLF8seSkpfXJldHVybiB1LnJvdW5kPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSEhZix1KTp0fSx1LnNpemU9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2ZbMF0sbj0rZlsxXSx1KTpbcixuXX0sdS50aWxlPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVZiKGYpLHUpOmV9LHUucGFkZGluZz1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdJbm5lcihmKS5wYWRkaW5nT3V0ZXIoZik6dS5wYWRkaW5nSW5uZXIoKX0sdS5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpabSgrZiksdSk6b30sdS5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nVG9wKGYpLnBhZGRpbmdSaWdodChmKS5wYWRkaW5nQm90dG9tKGYpLnBhZGRpbmdMZWZ0KGYpOnUucGFkZGluZ1RvcCgpfSx1LnBhZGRpbmdUb3A9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpabSgrZiksdSk6YX0sdS5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpabSgrZiksdSk6c30sdS5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXR5cGVvZiBmPT0iZnVuY3Rpb24iP2Y6Wm0oK2YpLHUpOmx9LHUucGFkZGluZ0xlZnQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpabSgrZiksdSk6Y30sdX1mdW5jdGlvbiBmMnQoZSx0LHIsbixpKXt2YXIgbz1lLmNoaWxkcmVuLGEscz1vLmxlbmd0aCxsLGM9bmV3IEFycmF5KHMrMSk7Zm9yKGNbMF09bD1hPTA7YTxzOysrYSljW2ErMV09bCs9b1thXS52YWx1ZTt1KDAscyxlLnZhbHVlLHQscixuLGkpO2Z1bmN0aW9uIHUoaCxmLHAsZCxnLF8seSl7aWYoaD49Zi0xKXt2YXIgeD1vW2hdO3gueDA9ZCx4LnkwPWcseC54MT1fLHgueTE9eTtyZXR1cm59Zm9yKHZhciBiPWNbaF0sUz1wLzIrYixDPWgrMSxQPWYtMTtDPFA7KXt2YXIgaz1DK1A+Pj4xO2Nba108Uz9DPWsrMTpQPWt9Uy1jW0MtMV08Y1tDXS1TJiZoKzE8QyYmLS1DO3ZhciBPPWNbQ10tYixEPXAtTztpZihfLWQ+eS1nKXt2YXIgQj0oZCpEK18qTykvcDt1KGgsQyxPLGQsZyxCLHkpLHUoQyxmLEQsQixnLF8seSl9ZWxzZXt2YXIgST0oZypEK3kqTykvcDt1KGgsQyxPLGQsZyxfLEkpLHUoQyxmLEQsZCxJLF8seSl9fX1mdW5jdGlvbiBwMnQoZSx0LHIsbixpKXsoZS5kZXB0aCYxP0ptOlZoKShlLHQscixuLGkpfXZhciBkMnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4saSxvLGEscyl7aWYoKGw9bi5fc3F1YXJpZnkpJiZsLnJhdGlvPT09dClmb3IodmFyIGwsYyx1LGgsZj0tMSxwLGQ9bC5sZW5ndGgsZz1uLnZhbHVlOysrZjxkOyl7Zm9yKGM9bFtmXSx1PWMuY2hpbGRyZW4saD1jLnZhbHVlPTAscD11Lmxlbmd0aDtoPHA7KytoKWMudmFsdWUrPXVbaF0udmFsdWU7Yy5kaWNlP1ZoKGMsaSxvLGEsbys9KHMtbykqYy52YWx1ZS9nKTpKbShjLGksbyxpKz0oYS1pKSpjLnZhbHVlL2cscyksZy09Yy52YWx1ZX1lbHNlIG4uX3NxdWFyaWZ5PWw9ZVgodCxuLGksbyxhLHMpLGwucmF0aW89dH1yZXR1cm4gci5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gZSgobj0rbik+MT9uOjEpfSxyfSh0WCk7ZnVuY3Rpb24gbTJ0KGUpe2Zvcih2YXIgdD0tMSxyPWUubGVuZ3RoLG4saT1lW3ItMV0sbz0wOysrdDxyOyluPWksaT1lW3RdLG8rPW5bMV0qaVswXS1uWzBdKmlbMV07cmV0dXJuIG8vMn1mdW5jdGlvbiBnMnQoZSl7Zm9yKHZhciB0PS0xLHI9ZS5sZW5ndGgsbj0wLGk9MCxvLGE9ZVtyLTFdLHMsbD0wOysrdDxyOylvPWEsYT1lW3RdLGwrPXM9b1swXSphWzFdLWFbMF0qb1sxXSxuKz0ob1swXSthWzBdKSpzLGkrPShvWzFdK2FbMV0pKnM7cmV0dXJuIGwqPTMsW24vbCxpL2xdfWZ1bmN0aW9uIF8ydChlLHQscil7cmV0dXJuKHRbMF0tZVswXSkqKHJbMV0tZVsxXSktKHRbMV0tZVsxXSkqKHJbMF0tZVswXSl9ZnVuY3Rpb24gaU1lKGUsdCl7cmV0dXJuIGVbMF0tdFswXXx8ZVsxXS10WzFdfWZ1bmN0aW9uIHkydChlKXtmb3IodmFyIHQ9ZS5sZW5ndGgscj1bMCwxXSxuPTIsaT0yO2k8dDsrK2kpe2Zvcig7bj4xJiZfMnQoZVtyW24tMl1dLGVbcltuLTFdXSxlW2ldKTw9MDspLS1uO3JbbisrXT1pfXJldHVybiByLnNsaWNlKDAsbil9ZnVuY3Rpb24gdjJ0KGUpe2lmKChyPWUubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciB0LHIsbj1uZXcgQXJyYXkociksaT1uZXcgQXJyYXkocik7Zm9yKHQ9MDt0PHI7Kyt0KW5bdF09WytlW3RdWzBdLCtlW3RdWzFdLHRdO2ZvcihuLnNvcnQoaU1lKSx0PTA7dDxyOysrdClpW3RdPVtuW3RdWzBdLC1uW3RdWzFdXTt2YXIgbz15MnQobiksYT15MnQoaSkscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKHQ9by5sZW5ndGgtMTt0Pj0wOy0tdCljLnB1c2goZVtuW29bdF1dWzJdXSk7Zm9yKHQ9K3M7dDxhLmxlbmd0aC1sOysrdCljLnB1c2goZVtuW2FbdF1dWzJdXSk7cmV0dXJuIGN9ZnVuY3Rpb24geDJ0KGUsdCl7Zm9yKHZhciByPWUubGVuZ3RoLG49ZVtyLTFdLGk9dFswXSxvPXRbMV0sYT1uWzBdLHM9blsxXSxsLGMsdT0hMSxoPTA7aDxyOysraCluPWVbaF0sbD1uWzBdLGM9blsxXSxjPm8hPXM+byYmaTwoYS1sKSooby1jKS8ocy1jKStsJiYodT0hdSksYT1sLHM9YztyZXR1cm4gdX1mdW5jdGlvbiBiMnQoZSl7Zm9yKHZhciB0PS0xLHI9ZS5sZW5ndGgsbj1lW3ItMV0saSxvLGE9blswXSxzPW5bMV0sbD0wOysrdDxyOylpPWEsbz1zLG49ZVt0XSxhPW5bMF0scz1uWzFdLGktPWEsby09cyxsKz1NYXRoLnNxcnQoaSppK28qbyk7cmV0dXJuIGx9ZnVuY3Rpb24gaWMoKXtyZXR1cm4gTWF0aC5yYW5kb20oKX12YXIgdzJ0PWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuLGkpe3JldHVybiBuPW49PW51bGw/MDorbixpPWk9PW51bGw/MToraSxhcmd1bWVudHMubGVuZ3RoPT09MT8oaT1uLG49MCk6aS09bixmdW5jdGlvbigpe3JldHVybiB0KCkqaStufX1yZXR1cm4gci5zb3VyY2U9ZSxyfShpYyk7dmFyIG44PWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuLGkpe3ZhciBvLGE7cmV0dXJuIG49bj09bnVsbD8wOituLGk9aT09bnVsbD8xOitpLGZ1bmN0aW9uKCl7dmFyIHM7aWYobyE9bnVsbClzPW8sbz1udWxsO2Vsc2UgZG8gbz10KCkqMi0xLHM9dCgpKjItMSxhPW8qbytzKnM7d2hpbGUoIWF8fGE+MSk7cmV0dXJuIG4raSpzKk1hdGguc3FydCgtMipNYXRoLmxvZyhhKS9hKX19cmV0dXJuIHIuc291cmNlPWUscn0oaWMpO3ZhciBTMnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKCl7dmFyIG49bjguc291cmNlKHQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAobigpKX19cmV0dXJuIHIuc291cmNlPWUscn0oaWMpO3ZhciBpOD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTAsbz0wO288bjsrK28paSs9dCgpO3JldHVybiBpfX1yZXR1cm4gci5zb3VyY2U9ZSxyfShpYyk7dmFyIE0ydD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7dmFyIGk9aTguc291cmNlKHQpKG4pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpKCkvbn19cmV0dXJuIHIuc291cmNlPWUscn0oaWMpO3ZhciBFMnQ9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybi1NYXRoLmxvZygxLXQoKSkvbn19cmV0dXJuIHIuc291cmNlPWUscn0oaWMpO2Z1bmN0aW9uIGZpKGUsdCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6dGhpcy5yYW5nZShlKTticmVhaztkZWZhdWx0OnRoaXMucmFuZ2UodCkuZG9tYWluKGUpO2JyZWFrfXJldHVybiB0aGlzfWZ1bmN0aW9uIG9jKGUsdCl7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6dGhpcy5pbnRlcnBvbGF0b3IoZSk7YnJlYWs7ZGVmYXVsdDp0aGlzLmludGVycG9sYXRvcih0KS5kb21haW4oZSk7YnJlYWt9cmV0dXJuIHRoaXN9RWIoKTt2YXIgVDJ0PUFycmF5LnByb3RvdHlwZSxYXz1UMnQubWFwLGFjPVQydC5zbGljZTt2YXIgbzg9e25hbWU6ImltcGxpY2l0In07ZnVuY3Rpb24gbXUoKXt2YXIgZT1aaSgpLHQ9W10scj1bXSxuPW84O2Z1bmN0aW9uIGkobyl7dmFyIGE9bysiIixzPWUuZ2V0KGEpO2lmKCFzKXtpZihuIT09bzgpcmV0dXJuIG47ZS5zZXQoYSxzPXQucHVzaChvKSl9cmV0dXJuIHJbKHMtMSklci5sZW5ndGhdfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihvKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W10sZT1aaSgpO2Zvcih2YXIgYT0tMSxzPW8ubGVuZ3RoLGwsYzsrK2E8czspZS5oYXMoYz0obD1vW2FdKSsiIil8fGUuc2V0KGMsdC5wdXNoKGwpKTtyZXR1cm4gaX0saS5yYW5nZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1hYy5jYWxsKG8pLGkpOnIuc2xpY2UoKX0saS51bmtub3duPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW8saSk6bn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIG11KHQscikudW5rbm93bihuKX0sZmkuYXBwbHkoaSxhcmd1bWVudHMpLGl9ZnVuY3Rpb24gUW0oKXt2YXIgZT1tdSgpLnVua25vd24odm9pZCAwKSx0PWUuZG9tYWluLHI9ZS5yYW5nZSxuPVswLDFdLGksbyxhPSExLHM9MCxsPTAsYz0uNTtkZWxldGUgZS51bmtub3duO2Z1bmN0aW9uIHUoKXt2YXIgaD10KCkubGVuZ3RoLGY9blsxXTxuWzBdLHA9bltmLTBdLGQ9blsxLWZdO2k9KGQtcCkvTWF0aC5tYXgoMSxoLXMrbCoyKSxhJiYoaT1NYXRoLmZsb29yKGkpKSxwKz0oZC1wLWkqKGgtcykpKmMsbz1pKigxLXMpLGEmJihwPU1hdGgucm91bmQocCksbz1NYXRoLnJvdW5kKG8pKTt2YXIgZz1JcihoKS5tYXAoZnVuY3Rpb24oXyl7cmV0dXJuIHAraSpffSk7cmV0dXJuIHIoZj9nLnJldmVyc2UoKTpnKX1yZXR1cm4gZS5kb21haW49ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQoaCksdSgpKTp0KCl9LGUucmFuZ2U9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49WytoWzBdLCtoWzFdXSx1KCkpOm4uc2xpY2UoKX0sZS5yYW5nZVJvdW5kPWZ1bmN0aW9uKGgpe3JldHVybiBuPVsraFswXSwraFsxXV0sYT0hMCx1KCl9LGUuYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIG99LGUuc3RlcD1mdW5jdGlvbigpe3JldHVybiBpfSxlLnJvdW5kPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhaCx1KCkpOmF9LGUucGFkZGluZz1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1NYXRoLm1pbigxLGw9K2gpLHUoKSk6c30sZS5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxoKSx1KCkpOnN9LGUucGFkZGluZ091dGVyPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPStoLHUoKSk6bH0sZS5hbGlnbj1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsaCkpLHUoKSk6Y30sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFFtKHQoKSxuKS5yb3VuZChhKS5wYWRkaW5nSW5uZXIocykucGFkZGluZ091dGVyKGwpLmFsaWduKGMpfSxmaS5hcHBseSh1KCksYXJndW1lbnRzKX1mdW5jdGlvbiBDMnQoZSl7dmFyIHQ9ZS5jb3B5O3JldHVybiBlLnBhZGRpbmc9ZS5wYWRkaW5nT3V0ZXIsZGVsZXRlIGUucGFkZGluZ0lubmVyLGRlbGV0ZSBlLnBhZGRpbmdPdXRlcixlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQzJ0KHQoKSl9LGV9ZnVuY3Rpb24gdGcoKXtyZXR1cm4gQzJ0KFFtLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIEEydChlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19ZnVuY3Rpb24gZjUoZSl7cmV0dXJuK2V9dmFyIFAydD1bMCwxXTtmdW5jdGlvbiBpaShlKXtyZXR1cm4gZX1mdW5jdGlvbiByWChlLHQpe3JldHVybih0LT1lPStlKT9mdW5jdGlvbihyKXtyZXR1cm4oci1lKS90fTpBMnQoaXNOYU4odCk/TmFOOi41KX1mdW5jdGlvbiBJMnQoZSl7dmFyIHQ9ZVswXSxyPWVbZS5sZW5ndGgtMV0sbjtyZXR1cm4gdD5yJiYobj10LHQ9cixyPW4pLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLm1heCh0LE1hdGgubWluKHIsaSkpfX1mdW5jdGlvbiBvTWUoZSx0LHIpe3ZhciBuPWVbMF0saT1lWzFdLG89dFswXSxhPXRbMV07cmV0dXJuIGk8bj8obj1yWChpLG4pLG89cihhLG8pKToobj1yWChuLGkpLG89cihvLGEpKSxmdW5jdGlvbihzKXtyZXR1cm4gbyhuKHMpKX19ZnVuY3Rpb24gYU1lKGUsdCxyKXt2YXIgbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCktMSxpPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxhPS0xO2ZvcihlW25dPGVbMF0mJihlPWUuc2xpY2UoKS5yZXZlcnNlKCksdD10LnNsaWNlKCkucmV2ZXJzZSgpKTsrK2E8bjspaVthXT1yWChlW2FdLGVbYSsxXSksb1thXT1yKHRbYV0sdFthKzFdKTtyZXR1cm4gZnVuY3Rpb24ocyl7dmFyIGw9X3MoZSxzLDEsbiktMTtyZXR1cm4gb1tsXShpW2xdKHMpKX19ZnVuY3Rpb24gVWgoZSx0KXtyZXR1cm4gdC5kb21haW4oZS5kb21haW4oKSkucmFuZ2UoZS5yYW5nZSgpKS5pbnRlcnBvbGF0ZShlLmludGVycG9sYXRlKCkpLmNsYW1wKGUuY2xhbXAoKSkudW5rbm93bihlLnVua25vd24oKSl9ZnVuY3Rpb24gJF8oKXt2YXIgZT1QMnQsdD1QMnQscj1lYyxuLGksbyxhPWlpLHMsbCxjO2Z1bmN0aW9uIHUoKXtyZXR1cm4gcz1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk+Mj9hTWU6b01lLGw9Yz1udWxsLGh9ZnVuY3Rpb24gaChmKXtyZXR1cm4gaXNOYU4oZj0rZik/bzoobHx8KGw9cyhlLm1hcChuKSx0LHIpKSkobihhKGYpKSl9cmV0dXJuIGguaW52ZXJ0PWZ1bmN0aW9uKGYpe3JldHVybiBhKGkoKGN8fChjPXModCxlLm1hcChuKSxPaSkpKShmKSkpfSxoLmRvbWFpbj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1YXy5jYWxsKGYsZjUpLGE9PT1paXx8KGE9STJ0KGUpKSx1KCkpOmUuc2xpY2UoKX0saC5yYW5nZT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hYy5jYWxsKGYpLHUoKSk6dC5zbGljZSgpfSxoLnJhbmdlUm91bmQ9ZnVuY3Rpb24oZil7cmV0dXJuIHQ9YWMuY2FsbChmKSxyPWhMLHUoKX0saC5jbGFtcD1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1mP0kydChlKTppaSxoKTphIT09aWl9LGguaW50ZXJwb2xhdGU9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9Zix1KCkpOnJ9LGgudW5rbm93bj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1mLGgpOm99LGZ1bmN0aW9uKGYscCl7cmV0dXJuIG49ZixpPXAsdSgpfX1mdW5jdGlvbiBwNShlLHQpe3JldHVybiAkXygpKGUsdCl9ZnVuY3Rpb24gYTgoZSx0LHIsbil7dmFyIGk9UXMoZSx0LHIpLG87c3dpdGNoKG49THAobj09bnVsbD8iLGYiOm4pLG4udHlwZSl7Y2FzZSJzIjp7dmFyIGE9TWF0aC5tYXgoTWF0aC5hYnMoZSksTWF0aC5hYnModCkpO3JldHVybiBuLnByZWNpc2lvbj09bnVsbCYmIWlzTmFOKG89cmsoaSxhKSkmJihuLnByZWNpc2lvbj1vKSxVRShuLGEpfWNhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOntuLnByZWNpc2lvbj09bnVsbCYmIWlzTmFOKG89bmsoaSxNYXRoLm1heChNYXRoLmFicyhlKSxNYXRoLmFicyh0KSkpKSYmKG4ucHJlY2lzaW9uPW8tKG4udHlwZT09PSJlIikpO2JyZWFrfWNhc2UiZiI6Y2FzZSIlIjp7bi5wcmVjaXNpb249PW51bGwmJiFpc05hTihvPWVrKGkpKSYmKG4ucHJlY2lzaW9uPW8tKG4udHlwZT09PSIlIikqMik7YnJlYWt9fXJldHVybiB4bihuKX1mdW5jdGlvbiBubChlKXt2YXIgdD1lLmRvbWFpbjtyZXR1cm4gZS50aWNrcz1mdW5jdGlvbihyKXt2YXIgbj10KCk7cmV0dXJuIG9iKG5bMF0sbltuLmxlbmd0aC0xXSxyPT1udWxsPzEwOnIpfSxlLnRpY2tGb3JtYXQ9ZnVuY3Rpb24ocixuKXt2YXIgaT10KCk7cmV0dXJuIGE4KGlbMF0saVtpLmxlbmd0aC0xXSxyPT1udWxsPzEwOnIsbil9LGUubmljZT1mdW5jdGlvbihyKXtyPT1udWxsJiYocj0xMCk7dmFyIG49dCgpLGk9MCxvPW4ubGVuZ3RoLTEsYT1uW2ldLHM9bltvXSxsO3JldHVybiBzPGEmJihsPWEsYT1zLHM9bCxsPWksaT1vLG89bCksbD14XyhhLHMsciksbD4wPyhhPU1hdGguZmxvb3IoYS9sKSpsLHM9TWF0aC5jZWlsKHMvbCkqbCxsPXhfKGEscyxyKSk6bDwwJiYoYT1NYXRoLmNlaWwoYSpsKS9sLHM9TWF0aC5mbG9vcihzKmwpL2wsbD14XyhhLHMscikpLGw+MD8obltpXT1NYXRoLmZsb29yKGEvbCkqbCxuW29dPU1hdGguY2VpbChzL2wpKmwsdChuKSk6bDwwJiYobltpXT1NYXRoLmNlaWwoYSpsKS9sLG5bb109TWF0aC5mbG9vcihzKmwpL2wsdChuKSksZX0sZX1mdW5jdGlvbiB6bigpe3ZhciBlPXA1KGlpLGlpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFVoKGUsem4oKSl9LGZpLmFwcGx5KGUsYXJndW1lbnRzKSxubChlKX1mdW5jdGlvbiBzOChlKXt2YXIgdDtmdW5jdGlvbiByKG4pe3JldHVybiBpc05hTihuPStuKT90Om59cmV0dXJuIHIuaW52ZXJ0PXIsci5kb21haW49ci5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1YXy5jYWxsKG4sZjUpLHIpOmUuc2xpY2UoKX0sci51bmtub3duPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4scik6dH0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHM4KGUpLnVua25vd24odCl9LGU9YXJndW1lbnRzLmxlbmd0aD9YXy5jYWxsKGUsZjUpOlswLDFdLG5sKHIpfWZ1bmN0aW9uIGw4KGUsdCl7ZT1lLnNsaWNlKCk7dmFyIHI9MCxuPWUubGVuZ3RoLTEsaT1lW3JdLG89ZVtuXSxhO3JldHVybiBvPGkmJihhPXIscj1uLG49YSxhPWksaT1vLG89YSksZVtyXT10LmZsb29yKGkpLGVbbl09dC5jZWlsKG8pLGV9ZnVuY3Rpb24gTDJ0KGUpe3JldHVybiBNYXRoLmxvZyhlKX1mdW5jdGlvbiBrMnQoZSl7cmV0dXJuIE1hdGguZXhwKGUpfWZ1bmN0aW9uIHNNZShlKXtyZXR1cm4tTWF0aC5sb2coLWUpfWZ1bmN0aW9uIGxNZShlKXtyZXR1cm4tTWF0aC5leHAoLWUpfWZ1bmN0aW9uIGNNZShlKXtyZXR1cm4gaXNGaW5pdGUoZSk/KygiMWUiK2UpOmU8MD8wOmV9ZnVuY3Rpb24gdU1lKGUpe3JldHVybiBlPT09MTA/Y01lOmU9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIGhNZShlKXtyZXR1cm4gZT09PU1hdGguRT9NYXRoLmxvZzplPT09MTAmJk1hdGgubG9nMTB8fGU9PT0yJiZNYXRoLmxvZzJ8fChlPU1hdGgubG9nKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KS9lfSl9ZnVuY3Rpb24gUjJ0KGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4tZSgtdCl9fWZ1bmN0aW9uIGQ1KGUpe3ZhciB0PWUoTDJ0LGsydCkscj10LmRvbWFpbixuPTEwLGksbztmdW5jdGlvbiBhKCl7cmV0dXJuIGk9aE1lKG4pLG89dU1lKG4pLHIoKVswXTwwPyhpPVIydChpKSxvPVIydChvKSxlKHNNZSxsTWUpKTplKEwydCxrMnQpLHR9cmV0dXJuIHQuYmFzZT1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rcyxhKCkpOm59LHQuZG9tYWluPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyKHMpLGEoKSk6cigpfSx0LnRpY2tzPWZ1bmN0aW9uKHMpe3ZhciBsPXIoKSxjPWxbMF0sdT1sW2wubGVuZ3RoLTFdLGg7KGg9dTxjKSYmKGY9YyxjPXUsdT1mKTt2YXIgZj1pKGMpLHA9aSh1KSxkLGcsXyx5PXM9PW51bGw/MTA6K3MseD1bXTtpZighKG4lMSkmJnAtZjx5KXtpZihmPU1hdGgucm91bmQoZiktMSxwPU1hdGgucm91bmQocCkrMSxjPjApe2Zvcig7ZjxwOysrZilmb3IoZz0xLGQ9byhmKTtnPG47KytnKWlmKF89ZCpnLCEoXzxjKSl7aWYoXz51KWJyZWFrO3gucHVzaChfKX19ZWxzZSBmb3IoO2Y8cDsrK2YpZm9yKGc9bi0xLGQ9byhmKTtnPj0xOy0tZylpZihfPWQqZywhKF88Yykpe2lmKF8+dSlicmVhazt4LnB1c2goXyl9fWVsc2UgeD1vYihmLHAsTWF0aC5taW4ocC1mLHkpKS5tYXAobyk7cmV0dXJuIGg/eC5yZXZlcnNlKCk6eH0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHMsbCl7aWYobD09bnVsbCYmKGw9bj09PTEwPyIuMGUiOiIsIiksdHlwZW9mIGwhPSJmdW5jdGlvbiImJihsPXhuKGwpKSxzPT09MS8wKXJldHVybiBsO3M9PW51bGwmJihzPTEwKTt2YXIgYz1NYXRoLm1heCgxLG4qcy90LnRpY2tzKCkubGVuZ3RoKTtyZXR1cm4gZnVuY3Rpb24odSl7dmFyIGg9dS9vKE1hdGgucm91bmQoaSh1KSkpO3JldHVybiBoKm48bi0uNSYmKGgqPW4pLGg8PWM/bCh1KToiIn19LHQubmljZT1mdW5jdGlvbigpe3JldHVybiByKGw4KHIoKSx7Zmxvb3I6ZnVuY3Rpb24ocyl7cmV0dXJuIG8oTWF0aC5mbG9vcihpKHMpKSl9LGNlaWw6ZnVuY3Rpb24ocyl7cmV0dXJuIG8oTWF0aC5jZWlsKGkocykpKX19KSl9LHR9ZnVuY3Rpb24gc2MoKXt2YXIgZT1kNSgkXygpKS5kb21haW4oWzEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFVoKGUsc2MoKSkuYmFzZShlLmJhc2UoKSl9LGZpLmFwcGx5KGUsYXJndW1lbnRzKSxlfWZ1bmN0aW9uIE4ydChlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc2lnbih0KSpNYXRoLmxvZzFwKE1hdGguYWJzKHQvZSkpfX1mdW5jdGlvbiBEMnQoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpZ24odCkqTWF0aC5leHBtMShNYXRoLmFicyh0KSkqZX19ZnVuY3Rpb24gbTUoZSl7dmFyIHQ9MSxyPWUoTjJ0KHQpLEQydCh0KSk7cmV0dXJuIHIuY29uc3RhbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShOMnQodD0rbiksRDJ0KHQpKTp0fSxubChyKX1mdW5jdGlvbiBjOCgpe3ZhciBlPW01KCRfKCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVWgoZSxjOCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxmaS5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTzJ0KGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdDwwPy1NYXRoLnBvdygtdCxlKTpNYXRoLnBvdyh0LGUpfX1mdW5jdGlvbiBmTWUoZSl7cmV0dXJuIGU8MD8tTWF0aC5zcXJ0KC1lKTpNYXRoLnNxcnQoZSl9ZnVuY3Rpb24gcE1lKGUpe3JldHVybiBlPDA/LWUqZTplKmV9ZnVuY3Rpb24gZzUoZSl7dmFyIHQ9ZShpaSxpaSkscj0xO2Z1bmN0aW9uIG4oKXtyZXR1cm4gcj09PTE/ZShpaSxpaSk6cj09PS41P2UoZk1lLHBNZSk6ZShPMnQociksTzJ0KDEvcikpfXJldHVybiB0LmV4cG9uZW50PWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPStpLG4oKSk6cn0sbmwodCl9ZnVuY3Rpb24gS18oKXt2YXIgZT1nNSgkXygpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFVoKGUsS18oKSkuZXhwb25lbnQoZS5leHBvbmVudCgpKX0sZmkuYXBwbHkoZSxhcmd1bWVudHMpLGV9ZnVuY3Rpb24gejJ0KCl7cmV0dXJuIEtfLmFwcGx5KG51bGwsYXJndW1lbnRzKS5leHBvbmVudCguNSl9ZnVuY3Rpb24gZWcoKXt2YXIgZT1bXSx0PVtdLHI9W10sbjtmdW5jdGlvbiBpKCl7dmFyIGE9MCxzPU1hdGgubWF4KDEsdC5sZW5ndGgpO2ZvcihyPW5ldyBBcnJheShzLTEpOysrYTxzOylyW2EtMV09YWEoZSxhL3MpO3JldHVybiBvfWZ1bmN0aW9uIG8oYSl7cmV0dXJuIGlzTmFOKGE9K2EpP246dFtfcyhyLGEpXX1yZXR1cm4gby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24oYSl7dmFyIHM9dC5pbmRleE9mKGEpO3JldHVybiBzPDA/W05hTixOYU5dOltzPjA/cltzLTFdOmVbMF0sczxyLmxlbmd0aD9yW3NdOmVbZS5sZW5ndGgtMV1dfSxvLmRvbWFpbj1mdW5jdGlvbihhKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W107Zm9yKHZhciBzPTAsbD1hLmxlbmd0aCxjO3M8bDsrK3MpYz1hW3NdLGMhPW51bGwmJiFpc05hTihjPStjKSYmZS5wdXNoKGMpO3JldHVybiBlLnNvcnQoaWEpLGkoKX0sby5yYW5nZT1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hYy5jYWxsKGEpLGkoKSk6dC5zbGljZSgpfSxvLnVua25vd249ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YSxvKTpufSxvLnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiByLnNsaWNlKCl9LG8uY29weT1mdW5jdGlvbigpe3JldHVybiBlZygpLmRvbWFpbihlKS5yYW5nZSh0KS51bmtub3duKG4pfSxmaS5hcHBseShvLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVWIoKXt2YXIgZT0wLHQ9MSxyPTEsbj1bLjVdLGk9WzAsMV0sbztmdW5jdGlvbiBhKGwpe3JldHVybiBsPD1sP2lbX3MobixsLDAscildOm99ZnVuY3Rpb24gcygpe3ZhciBsPS0xO2ZvcihuPW5ldyBBcnJheShyKTsrK2w8cjspbltsXT0oKGwrMSkqdC0obC1yKSplKS8ocisxKTtyZXR1cm4gYX1yZXR1cm4gYS5kb21haW49ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K2xbMF0sdD0rbFsxXSxzKCkpOltlLHRdfSxhLnJhbmdlPWZ1bmN0aW9uKGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPShpPWFjLmNhbGwobCkpLmxlbmd0aC0xLHMoKSk6aS5zbGljZSgpfSxhLmludmVydEV4dGVudD1mdW5jdGlvbihsKXt2YXIgYz1pLmluZGV4T2YobCk7cmV0dXJuIGM8MD9bTmFOLE5hTl06YzwxP1tlLG5bMF1dOmM+PXI/W25bci0xXSx0XTpbbltjLTFdLG5bY11dfSxhLnVua25vd249ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGgmJihvPWwpLGF9LGEudGhyZXNob2xkcz1mdW5jdGlvbigpe3JldHVybiBuLnNsaWNlKCl9LGEuY29weT1mdW5jdGlvbigpe3JldHVybiBVYigpLmRvbWFpbihbZSx0XSkucmFuZ2UoaSkudW5rbm93bihvKX0sZmkuYXBwbHkobmwoYSksYXJndW1lbnRzKX1mdW5jdGlvbiB1OCgpe3ZhciBlPVsuNV0sdD1bMCwxXSxyLG49MTtmdW5jdGlvbiBpKG8pe3JldHVybiBvPD1vP3RbX3MoZSxvLDAsbildOnJ9cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWFjLmNhbGwobyksbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aC0xKSxpKTplLnNsaWNlKCl9LGkucmFuZ2U9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YWMuY2FsbChvKSxuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoLTEpLGkpOnQuc2xpY2UoKX0saS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24obyl7dmFyIGE9dC5pbmRleE9mKG8pO3JldHVybltlW2EtMV0sZVthXV19LGkudW5rbm93bj1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1vLGkpOnJ9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB1OCgpLmRvbWFpbihlKS5yYW5nZSh0KS51bmtub3duKHIpfSxmaS5hcHBseShpLGFyZ3VtZW50cyl9dmFyIG5YPW5ldyBEYXRlLGlYPW5ldyBEYXRlO2Z1bmN0aW9uIGJyKGUsdCxyLG4pe2Z1bmN0aW9uIGkobyl7cmV0dXJuIGUobz1hcmd1bWVudHMubGVuZ3RoPT09MD9uZXcgRGF0ZTpuZXcgRGF0ZSgrbykpLG99cmV0dXJuIGkuZmxvb3I9ZnVuY3Rpb24obyl7cmV0dXJuIGUobz1uZXcgRGF0ZSgrbykpLG99LGkuY2VpbD1mdW5jdGlvbihvKXtyZXR1cm4gZShvPW5ldyBEYXRlKG8tMSkpLHQobywxKSxlKG8pLG99LGkucm91bmQ9ZnVuY3Rpb24obyl7dmFyIGE9aShvKSxzPWkuY2VpbChvKTtyZXR1cm4gby1hPHMtbz9hOnN9LGkub2Zmc2V0PWZ1bmN0aW9uKG8sYSl7cmV0dXJuIHQobz1uZXcgRGF0ZSgrbyksYT09bnVsbD8xOk1hdGguZmxvb3IoYSkpLG99LGkucmFuZ2U9ZnVuY3Rpb24obyxhLHMpe3ZhciBsPVtdLGM7aWYobz1pLmNlaWwobykscz1zPT1udWxsPzE6TWF0aC5mbG9vcihzKSwhKG88YSl8fCEocz4wKSlyZXR1cm4gbDtkbyBsLnB1c2goYz1uZXcgRGF0ZSgrbykpLHQobyxzKSxlKG8pO3doaWxlKGM8byYmbzxhKTtyZXR1cm4gbH0saS5maWx0ZXI9ZnVuY3Rpb24obyl7cmV0dXJuIGJyKGZ1bmN0aW9uKGEpe2lmKGE+PWEpZm9yKDtlKGEpLCFvKGEpOylhLnNldFRpbWUoYS0xKX0sZnVuY3Rpb24oYSxzKXtpZihhPj1hKWlmKHM8MClmb3IoOysrczw9MDspZm9yKDt0KGEsLTEpLCFvKGEpOyk7ZWxzZSBmb3IoOy0tcz49MDspZm9yKDt0KGEsMSksIW8oYSk7KTt9KX0sciYmKGkuY291bnQ9ZnVuY3Rpb24obyxhKXtyZXR1cm4gblguc2V0VGltZSgrbyksaVguc2V0VGltZSgrYSksZShuWCksZShpWCksTWF0aC5mbG9vcihyKG5YLGlYKSl9LGkuZXZlcnk9ZnVuY3Rpb24obyl7cmV0dXJuIG89TWF0aC5mbG9vcihvKSwhaXNGaW5pdGUobyl8fCEobz4wKT9udWxsOm8+MT9pLmZpbHRlcihuP2Z1bmN0aW9uKGEpe3JldHVybiBuKGEpJW89PT0wfTpmdW5jdGlvbihhKXtyZXR1cm4gaS5jb3VudCgwLGEpJW89PT0wfSk6aX0pLGl9dmFyIGg4PWJyKGZ1bmN0aW9uKCl7fSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0KX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC1lfSk7aDguZXZlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9TWF0aC5mbG9vcihlKSwhaXNGaW5pdGUoZSl8fCEoZT4wKT9udWxsOmU+MT9icihmdW5jdGlvbih0KXt0LnNldFRpbWUoTWF0aC5mbG9vcih0L2UpKmUpfSxmdW5jdGlvbih0LHIpe3Quc2V0VGltZSgrdCtyKmUpfSxmdW5jdGlvbih0LHIpe3JldHVybihyLXQpL2V9KTpoOH07dmFyIFpfPWg4LG9YPWg4LnJhbmdlO3ZhciBKXz0xZTMsbGM9NmU0LHFiPTM2ZTUsZjg9ODY0ZTUscDg9NjA0OGU1O3ZhciBGMnQ9YnIoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKGUtZS5nZXRNaWxsaXNlY29uZHMoKSl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QqSl8pfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL0pffSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRVVENTZWNvbmRzKCl9KSxRXz1GMnQsYVg9RjJ0LnJhbmdlO3ZhciBCMnQ9YnIoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKGUtZS5nZXRNaWxsaXNlY29uZHMoKS1lLmdldFNlY29uZHMoKSpKXyl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRUaW1lKCtlK3QqbGMpfSxmdW5jdGlvbihlLHQpe3JldHVybih0LWUpL2xjfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNaW51dGVzKCl9KSxkOD1CMnQsSDJ0PUIydC5yYW5nZTt2YXIgVjJ0PWJyKGZ1bmN0aW9uKGUpe2Uuc2V0VGltZShlLWUuZ2V0TWlsbGlzZWNvbmRzKCktZS5nZXRTZWNvbmRzKCkqSl8tZS5nZXRNaW51dGVzKCkqbGMpfSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0KnFiKX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS9xYn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG91cnMoKX0pLG04PVYydCxVMnQ9VjJ0LnJhbmdlO3ZhciBxMnQ9YnIoZnVuY3Rpb24oZSl7ZS5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldERhdGUoZS5nZXREYXRlKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZS0odC5nZXRUaW1lem9uZU9mZnNldCgpLWUuZ2V0VGltZXpvbmVPZmZzZXQoKSkqbGMpL2Y4fSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXREYXRlKCktMX0pLHR5PXEydCxHMnQ9cTJ0LnJhbmdlO2Z1bmN0aW9uIGV5KGUpe3JldHVybiBicihmdW5jdGlvbih0KXt0LnNldERhdGUodC5nZXREYXRlKCktKHQuZ2V0RGF5KCkrNy1lKSU3KSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LHIpe3Quc2V0RGF0ZSh0LmdldERhdGUoKStyKjcpfSxmdW5jdGlvbih0LHIpe3JldHVybihyLXQtKHIuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKmxjKS9wOH0pfXZhciByZz1leSgwKSxyeT1leSgxKSxzWD1leSgyKSxsWD1leSgzKSx6cD1leSg0KSxjWD1leSg1KSx1WD1leSg2KSxoWD1yZy5yYW5nZSxXMnQ9cnkucmFuZ2UsWTJ0PXNYLnJhbmdlLGoydD1sWC5yYW5nZSxYMnQ9enAucmFuZ2UsJDJ0PWNYLnJhbmdlLEsydD11WC5yYW5nZTt2YXIgWjJ0PWJyKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZSgxKSxlLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0TW9udGgoZS5nZXRNb250aCgpK3QpfSxmdW5jdGlvbihlLHQpe3JldHVybiB0LmdldE1vbnRoKCktZS5nZXRNb250aCgpKyh0LmdldEZ1bGxZZWFyKCktZS5nZXRGdWxsWWVhcigpKSoxMn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0TW9udGgoKX0pLGc4PVoydCxKMnQ9WjJ0LnJhbmdlO3ZhciBmWD1icihmdW5jdGlvbihlKXtlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKSt0KX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpLWUuZ2V0RnVsbFllYXIoKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKX0pO2ZYLmV2ZXJ5PWZ1bmN0aW9uKGUpe3JldHVybiFpc0Zpbml0ZShlPU1hdGguZmxvb3IoZSkpfHwhKGU+MCk/bnVsbDpicihmdW5jdGlvbih0KXt0LnNldEZ1bGxZZWFyKE1hdGguZmxvb3IodC5nZXRGdWxsWWVhcigpL2UpKmUpLHQuc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LHIpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK3IqZSl9KX07dmFyIHFoPWZYLFEydD1mWC5yYW5nZTt2YXIgdHd0PWJyKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDU2Vjb25kcygwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0KmxjKX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS9sY30sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDTWludXRlcygpfSksXzg9dHd0LGV3dD10d3QucmFuZ2U7dmFyIHJ3dD1icihmdW5jdGlvbihlKXtlLnNldFVUQ01pbnV0ZXMoMCwwLDApfSxmdW5jdGlvbihlLHQpe2Uuc2V0VGltZSgrZSt0KnFiKX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4odC1lKS9xYn0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0VVRDSG91cnMoKX0pLHk4PXJ3dCxud3Q9cnd0LnJhbmdlO3ZhciBpd3Q9YnIoZnVuY3Rpb24oZSl7ZS5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQtZSkvZjh9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0RhdGUoKS0xfSksbnk9aXd0LG93dD1pd3QucmFuZ2U7ZnVuY3Rpb24gaXkoZSl7cmV0dXJuIGJyKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKS0odC5nZXRVVENEYXkoKSs3LWUpJTcpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQscil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK3IqNyl9LGZ1bmN0aW9uKHQscil7cmV0dXJuKHItdCkvcDh9KX12YXIgbmc9aXkoMCksb3k9aXkoMSkscFg9aXkoMiksZFg9aXkoMyksRnA9aXkoNCksbVg9aXkoNSksZ1g9aXkoNiksX1g9bmcucmFuZ2UsYXd0PW95LnJhbmdlLHN3dD1wWC5yYW5nZSxsd3Q9ZFgucmFuZ2UsY3d0PUZwLnJhbmdlLHV3dD1tWC5yYW5nZSxod3Q9Z1gucmFuZ2U7dmFyIGZ3dD1icihmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSx0KXtlLnNldFVUQ01vbnRoKGUuZ2V0VVRDTW9udGgoKSt0KX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpLWUuZ2V0VVRDTW9udGgoKSsodC5nZXRVVENGdWxsWWVhcigpLWUuZ2V0VVRDRnVsbFllYXIoKSkqMTJ9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ01vbnRoKCl9KSx2OD1md3QscHd0PWZ3dC5yYW5nZTt2YXIgeVg9YnIoZnVuY3Rpb24oZSl7ZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKGUsdCl7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrdCl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKS1lLmdldFVUQ0Z1bGxZZWFyKCl9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCl9KTt5WC5ldmVyeT1mdW5jdGlvbihlKXtyZXR1cm4haXNGaW5pdGUoZT1NYXRoLmZsb29yKGUpKXx8IShlPjApP251bGw6YnIoZnVuY3Rpb24odCl7dC5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKHQuZ2V0VVRDRnVsbFllYXIoKS9lKSplKSx0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxyKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStyKmUpfSl9O3ZhciBHaD15WCxkd3Q9eVgucmFuZ2U7ZnVuY3Rpb24gdlgoZSl7aWYoMDw9ZS55JiZlLnk8MTAwKXt2YXIgdD1uZXcgRGF0ZSgtMSxlLm0sZS5kLGUuSCxlLk0sZS5TLGUuTCk7cmV0dXJuIHQuc2V0RnVsbFllYXIoZS55KSx0fXJldHVybiBuZXcgRGF0ZShlLnksZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpfWZ1bmN0aW9uIHhYKGUpe2lmKDA8PWUueSYmZS55PDEwMCl7dmFyIHQ9bmV3IERhdGUoRGF0ZS5VVEMoLTEsZS5tLGUuZCxlLkgsZS5NLGUuUyxlLkwpKTtyZXR1cm4gdC5zZXRVVENGdWxsWWVhcihlLnkpLHR9cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGUueSxlLm0sZS5kLGUuSCxlLk0sZS5TLGUuTCkpfWZ1bmN0aW9uIF81KGUsdCxyKXtyZXR1cm57eTplLG06dCxkOnIsSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiB4NShlKXt2YXIgdD1lLmRhdGVUaW1lLHI9ZS5kYXRlLG49ZS50aW1lLGk9ZS5wZXJpb2RzLG89ZS5kYXlzLGE9ZS5zaG9ydERheXMscz1lLm1vbnRocyxsPWUuc2hvcnRNb250aHMsYz15NShpKSx1PXY1KGkpLGg9eTUobyksZj12NShvKSxwPXk1KGEpLGQ9djUoYSksZz15NShzKSxfPXY1KHMpLHk9eTUobCkseD12NShsKSxiPXthOlcsQTpaLGI6cnQsQjpvdCxjOm51bGwsZDp4d3QsZTp4d3QsZjpPTWUsZzpZTWUsRzpYTWUsSDpSTWUsSTpOTWUsajpETWUsTDpFd3QsbTp6TWUsTTpGTWUscDpzdCxxOlN0LFE6U3d0LHM6TXd0LFM6Qk1lLHU6SE1lLFU6Vk1lLFY6VU1lLHc6cU1lLFc6R01lLHg6bnVsbCxYOm51bGwseTpXTWUsWTpqTWUsWjokTWUsIiUiOnd3dH0sUz17YTpidCxBOk10LGI6bHQsQjpLdCxjOm51bGwsZDpid3QsZTpid3QsZjpRTWUsZzpjRWUsRzpoRWUsSDpLTWUsSTpaTWUsajpKTWUsTDpDd3QsbTp0RWUsTTplRWUscDpfdCxxOmN0LFE6U3d0LHM6TXd0LFM6ckVlLHU6bkVlLFU6aUVlLFY6b0VlLHc6YUVlLFc6c0VlLHg6bnVsbCxYOm51bGwseTpsRWUsWTp1RWUsWjpmRWUsIiUiOnd3dH0sQz17YTpCLEE6SSxiOkwsQjpSLGM6RixkOnl3dCxlOnl3dCxmOlBNZSxnOl93dCxHOmd3dCxIOnZ3dCxJOnZ3dCxqOkVNZSxMOkFNZSxtOk1NZSxNOlRNZSxwOkQscTpTTWUsUTpMTWUsczprTWUsUzpDTWUsdTp5TWUsVTp2TWUsVjp4TWUsdzpfTWUsVzpiTWUseDp6LFg6VSx5Ol93dCxZOmd3dCxaOndNZSwiJSI6SU1lfTtiLng9UChyLGIpLGIuWD1QKG4sYiksYi5jPVAodCxiKSxTLng9UChyLFMpLFMuWD1QKG4sUyksUy5jPVAodCxTKTtmdW5jdGlvbiBQKFgsZXQpe3JldHVybiBmdW5jdGlvbihkdCl7dmFyIHE9W10scHQ9LTEsaHQ9MCx3dD1YLmxlbmd0aCxrdCxpZSxlZTtmb3IoZHQgaW5zdGFuY2VvZiBEYXRlfHwoZHQ9bmV3IERhdGUoK2R0KSk7KytwdDx3dDspWC5jaGFyQ29kZUF0KHB0KT09PTM3JiYocS5wdXNoKFguc2xpY2UoaHQscHQpKSwoaWU9bXd0W2t0PVguY2hhckF0KCsrcHQpXSkhPW51bGw/a3Q9WC5jaGFyQXQoKytwdCk6aWU9a3Q9PT0iZSI/IiAiOiIwIiwoZWU9ZXRba3RdKSYmKGt0PWVlKGR0LGllKSkscS5wdXNoKGt0KSxodD1wdCsxKTtyZXR1cm4gcS5wdXNoKFguc2xpY2UoaHQscHQpKSxxLmpvaW4oIiIpfX1mdW5jdGlvbiBrKFgsZXQpe3JldHVybiBmdW5jdGlvbihkdCl7dmFyIHE9XzUoMTkwMCx2b2lkIDAsMSkscHQ9TyhxLFgsZHQrPSIiLDApLGh0LHd0O2lmKHB0IT1kdC5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gcSlyZXR1cm4gbmV3IERhdGUocS5RKTtpZigicyJpbiBxKXJldHVybiBuZXcgRGF0ZShxLnMqMWUzKygiTCJpbiBxP3EuTDowKSk7aWYoZXQmJiEoIloiaW4gcSkmJihxLlo9MCksInAiaW4gcSYmKHEuSD1xLkglMTIrcS5wKjEyKSxxLm09PT12b2lkIDAmJihxLm09InEiaW4gcT9xLnE6MCksIlYiaW4gcSl7aWYocS5WPDF8fHEuVj41MylyZXR1cm4gbnVsbDsidyJpbiBxfHwocS53PTEpLCJaImluIHE/KGh0PXhYKF81KHEueSwwLDEpKSx3dD1odC5nZXRVVENEYXkoKSxodD13dD40fHx3dD09PTA/b3kuY2VpbChodCk6b3koaHQpLGh0PW55Lm9mZnNldChodCwocS5WLTEpKjcpLHEueT1odC5nZXRVVENGdWxsWWVhcigpLHEubT1odC5nZXRVVENNb250aCgpLHEuZD1odC5nZXRVVENEYXRlKCkrKHEudys2KSU3KTooaHQ9dlgoXzUocS55LDAsMSkpLHd0PWh0LmdldERheSgpLGh0PXd0PjR8fHd0PT09MD9yeS5jZWlsKGh0KTpyeShodCksaHQ9dHkub2Zmc2V0KGh0LChxLlYtMSkqNykscS55PWh0LmdldEZ1bGxZZWFyKCkscS5tPWh0LmdldE1vbnRoKCkscS5kPWh0LmdldERhdGUoKSsocS53KzYpJTcpfWVsc2UoIlciaW4gcXx8IlUiaW4gcSkmJigidyJpbiBxfHwocS53PSJ1ImluIHE/cS51JTc6IlciaW4gcT8xOjApLHd0PSJaImluIHE/eFgoXzUocS55LDAsMSkpLmdldFVUQ0RheSgpOnZYKF81KHEueSwwLDEpKS5nZXREYXkoKSxxLm09MCxxLmQ9IlciaW4gcT8ocS53KzYpJTcrcS5XKjctKHd0KzUpJTc6cS53K3EuVSo3LSh3dCs2KSU3KTtyZXR1cm4iWiJpbiBxPyhxLkgrPXEuWi8xMDB8MCxxLk0rPXEuWiUxMDAseFgocSkpOnZYKHEpfX1mdW5jdGlvbiBPKFgsZXQsZHQscSl7Zm9yKHZhciBwdD0wLGh0PWV0Lmxlbmd0aCx3dD1kdC5sZW5ndGgsa3QsaWU7cHQ8aHQ7KXtpZihxPj13dClyZXR1cm4tMTtpZihrdD1ldC5jaGFyQ29kZUF0KHB0KyspLGt0PT09Mzcpe2lmKGt0PWV0LmNoYXJBdChwdCsrKSxpZT1DW2t0IGluIG13dD9ldC5jaGFyQXQocHQrKyk6a3RdLCFpZXx8KHE9aWUoWCxkdCxxKSk8MClyZXR1cm4tMX1lbHNlIGlmKGt0IT1kdC5jaGFyQ29kZUF0KHErKykpcmV0dXJuLTF9cmV0dXJuIHF9ZnVuY3Rpb24gRChYLGV0LGR0KXt2YXIgcT1jLmV4ZWMoZXQuc2xpY2UoZHQpKTtyZXR1cm4gcT8oWC5wPXVbcVswXS50b0xvd2VyQ2FzZSgpXSxkdCtxWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQihYLGV0LGR0KXt2YXIgcT1wLmV4ZWMoZXQuc2xpY2UoZHQpKTtyZXR1cm4gcT8oWC53PWRbcVswXS50b0xvd2VyQ2FzZSgpXSxkdCtxWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSShYLGV0LGR0KXt2YXIgcT1oLmV4ZWMoZXQuc2xpY2UoZHQpKTtyZXR1cm4gcT8oWC53PWZbcVswXS50b0xvd2VyQ2FzZSgpXSxkdCtxWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTChYLGV0LGR0KXt2YXIgcT15LmV4ZWMoZXQuc2xpY2UoZHQpKTtyZXR1cm4gcT8oWC5tPXhbcVswXS50b0xvd2VyQ2FzZSgpXSxkdCtxWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUihYLGV0LGR0KXt2YXIgcT1nLmV4ZWMoZXQuc2xpY2UoZHQpKTtyZXR1cm4gcT8oWC5tPV9bcVswXS50b0xvd2VyQ2FzZSgpXSxkdCtxWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRihYLGV0LGR0KXtyZXR1cm4gTyhYLHQsZXQsZHQpfWZ1bmN0aW9uIHooWCxldCxkdCl7cmV0dXJuIE8oWCxyLGV0LGR0KX1mdW5jdGlvbiBVKFgsZXQsZHQpe3JldHVybiBPKFgsbixldCxkdCl9ZnVuY3Rpb24gVyhYKXtyZXR1cm4gYVtYLmdldERheSgpXX1mdW5jdGlvbiBaKFgpe3JldHVybiBvW1guZ2V0RGF5KCldfWZ1bmN0aW9uIHJ0KFgpe3JldHVybiBsW1guZ2V0TW9udGgoKV19ZnVuY3Rpb24gb3QoWCl7cmV0dXJuIHNbWC5nZXRNb250aCgpXX1mdW5jdGlvbiBzdChYKXtyZXR1cm4gaVsrKFguZ2V0SG91cnMoKT49MTIpXX1mdW5jdGlvbiBTdChYKXtyZXR1cm4gMSt+fihYLmdldE1vbnRoKCkvMyl9ZnVuY3Rpb24gYnQoWCl7cmV0dXJuIGFbWC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gTXQoWCl7cmV0dXJuIG9bWC5nZXRVVENEYXkoKV19ZnVuY3Rpb24gbHQoWCl7cmV0dXJuIGxbWC5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBLdChYKXtyZXR1cm4gc1tYLmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIF90KFgpe3JldHVybiBpWysoWC5nZXRVVENIb3VycygpPj0xMildfWZ1bmN0aW9uIGN0KFgpe3JldHVybiAxK35+KFguZ2V0VVRDTW9udGgoKS8zKX1yZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKFgpe3ZhciBldD1QKFgrPSIiLGIpO3JldHVybiBldC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBYfSxldH0scGFyc2U6ZnVuY3Rpb24oWCl7dmFyIGV0PWsoWCs9IiIsITEpO3JldHVybiBldC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBYfSxldH0sdXRjRm9ybWF0OmZ1bmN0aW9uKFgpe3ZhciBldD1QKFgrPSIiLFMpO3JldHVybiBldC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBYfSxldH0sdXRjUGFyc2U6ZnVuY3Rpb24oWCl7dmFyIGV0PWsoWCs9IiIsITApO3JldHVybiBldC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBYfSxldH19fXZhciBtd3Q9eyItIjoiIixfOiIgIiwwOiIwIn0sdm89L15ccypcZCsvLGRNZT0vXiUvLG1NZT0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gQnIoZSx0LHIpe3ZhciBuPWU8MD8iLSI6IiIsaT0obj8tZTplKSsiIixvPWkubGVuZ3RoO3JldHVybiBuKyhvPHI/bmV3IEFycmF5KHItbysxKS5qb2luKHQpK2k6aSl9ZnVuY3Rpb24gZ01lKGUpe3JldHVybiBlLnJlcGxhY2UobU1lLCJcXCQmIil9ZnVuY3Rpb24geTUoZSl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK2UubWFwKGdNZSkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIHY1KGUpe2Zvcih2YXIgdD17fSxyPS0xLG49ZS5sZW5ndGg7KytyPG47KXRbZVtyXS50b0xvd2VyQ2FzZSgpXT1yO3JldHVybiB0fWZ1bmN0aW9uIF9NZShlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIscisxKSk7cmV0dXJuIG4/KGUudz0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5TWUoZSx0LHIpe3ZhciBuPXZvLmV4ZWModC5zbGljZShyLHIrMSkpO3JldHVybiBuPyhlLnU9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdk1lKGUsdCxyKXt2YXIgbj12by5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS5VPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHhNZShlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuVj0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBiTWUoZSx0LHIpe3ZhciBuPXZvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLlc9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZ3d0KGUsdCxyKXt2YXIgbj12by5leGVjKHQuc2xpY2UocixyKzQpKTtyZXR1cm4gbj8oZS55PStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIF93dChlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUueT0rblswXSsoK25bMF0+Njg/MTkwMDoyZTMpLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHdNZShlLHQscil7dmFyIG49L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWModC5zbGljZShyLHIrNikpO3JldHVybiBuPyhlLlo9blsxXT8wOi0oblsyXSsoblszXXx8IjAwIikpLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFNNZShlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIscisxKSk7cmV0dXJuIG4/KGUucT1uWzBdKjMtMyxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBNTWUoZSx0LHIpe3ZhciBuPXZvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLm09blswXS0xLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHl3dChlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuZD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBFTWUoZSx0LHIpe3ZhciBuPXZvLmV4ZWModC5zbGljZShyLHIrMykpO3JldHVybiBuPyhlLm09MCxlLmQ9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdnd0KGUsdCxyKXt2YXIgbj12by5leGVjKHQuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8oZS5IPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFRNZShlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KGUuTT0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDTWUoZSx0LHIpe3ZhciBuPXZvLmV4ZWModC5zbGljZShyLHIrMikpO3JldHVybiBuPyhlLlM9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQU1lKGUsdCxyKXt2YXIgbj12by5leGVjKHQuc2xpY2UocixyKzMpKTtyZXR1cm4gbj8oZS5MPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFBNZShlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIscis2KSk7cmV0dXJuIG4/KGUuTD1NYXRoLmZsb29yKG5bMF0vMWUzKSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBJTWUoZSx0LHIpe3ZhciBuPWRNZS5leGVjKHQuc2xpY2UocixyKzEpKTtyZXR1cm4gbj9yK25bMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIExNZShlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIpKTtyZXR1cm4gbj8oZS5RPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGtNZShlLHQscil7dmFyIG49dm8uZXhlYyh0LnNsaWNlKHIpKTtyZXR1cm4gbj8oZS5zPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHh3dChlLHQpe3JldHVybiBCcihlLmdldERhdGUoKSx0LDIpfWZ1bmN0aW9uIFJNZShlLHQpe3JldHVybiBCcihlLmdldEhvdXJzKCksdCwyKX1mdW5jdGlvbiBOTWUoZSx0KXtyZXR1cm4gQnIoZS5nZXRIb3VycygpJTEyfHwxMix0LDIpfWZ1bmN0aW9uIERNZShlLHQpe3JldHVybiBCcigxK3R5LmNvdW50KHFoKGUpLGUpLHQsMyl9ZnVuY3Rpb24gRXd0KGUsdCl7cmV0dXJuIEJyKGUuZ2V0TWlsbGlzZWNvbmRzKCksdCwzKX1mdW5jdGlvbiBPTWUoZSx0KXtyZXR1cm4gRXd0KGUsdCkrIjAwMCJ9ZnVuY3Rpb24gek1lKGUsdCl7cmV0dXJuIEJyKGUuZ2V0TW9udGgoKSsxLHQsMil9ZnVuY3Rpb24gRk1lKGUsdCl7cmV0dXJuIEJyKGUuZ2V0TWludXRlcygpLHQsMil9ZnVuY3Rpb24gQk1lKGUsdCl7cmV0dXJuIEJyKGUuZ2V0U2Vjb25kcygpLHQsMil9ZnVuY3Rpb24gSE1lKGUpe3ZhciB0PWUuZ2V0RGF5KCk7cmV0dXJuIHQ9PT0wPzc6dH1mdW5jdGlvbiBWTWUoZSx0KXtyZXR1cm4gQnIocmcuY291bnQocWgoZSktMSxlKSx0LDIpfWZ1bmN0aW9uIFR3dChlKXt2YXIgdD1lLmdldERheSgpO3JldHVybiB0Pj00fHx0PT09MD96cChlKTp6cC5jZWlsKGUpfWZ1bmN0aW9uIFVNZShlLHQpe3JldHVybiBlPVR3dChlKSxCcih6cC5jb3VudChxaChlKSxlKSsocWgoZSkuZ2V0RGF5KCk9PT00KSx0LDIpfWZ1bmN0aW9uIHFNZShlKXtyZXR1cm4gZS5nZXREYXkoKX1mdW5jdGlvbiBHTWUoZSx0KXtyZXR1cm4gQnIocnkuY291bnQocWgoZSktMSxlKSx0LDIpfWZ1bmN0aW9uIFdNZShlLHQpe3JldHVybiBCcihlLmdldEZ1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gWU1lKGUsdCl7cmV0dXJuIGU9VHd0KGUpLEJyKGUuZ2V0RnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiBqTWUoZSx0KXtyZXR1cm4gQnIoZS5nZXRGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIFhNZShlLHQpe3ZhciByPWUuZ2V0RGF5KCk7cmV0dXJuIGU9cj49NHx8cj09PTA/enAoZSk6enAuY2VpbChlKSxCcihlLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9ZnVuY3Rpb24gJE1lKGUpe3ZhciB0PWUuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4odD4wPyItIjoodCo9LTEsIisiKSkrQnIodC82MHwwLCIwIiwyKStCcih0JTYwLCIwIiwyKX1mdW5jdGlvbiBid3QoZSx0KXtyZXR1cm4gQnIoZS5nZXRVVENEYXRlKCksdCwyKX1mdW5jdGlvbiBLTWUoZSx0KXtyZXR1cm4gQnIoZS5nZXRVVENIb3VycygpLHQsMil9ZnVuY3Rpb24gWk1lKGUsdCl7cmV0dXJuIEJyKGUuZ2V0VVRDSG91cnMoKSUxMnx8MTIsdCwyKX1mdW5jdGlvbiBKTWUoZSx0KXtyZXR1cm4gQnIoMStueS5jb3VudChHaChlKSxlKSx0LDMpfWZ1bmN0aW9uIEN3dChlLHQpe3JldHVybiBCcihlLmdldFVUQ01pbGxpc2Vjb25kcygpLHQsMyl9ZnVuY3Rpb24gUU1lKGUsdCl7cmV0dXJuIEN3dChlLHQpKyIwMDAifWZ1bmN0aW9uIHRFZShlLHQpe3JldHVybiBCcihlLmdldFVUQ01vbnRoKCkrMSx0LDIpfWZ1bmN0aW9uIGVFZShlLHQpe3JldHVybiBCcihlLmdldFVUQ01pbnV0ZXMoKSx0LDIpfWZ1bmN0aW9uIHJFZShlLHQpe3JldHVybiBCcihlLmdldFVUQ1NlY29uZHMoKSx0LDIpfWZ1bmN0aW9uIG5FZShlKXt2YXIgdD1lLmdldFVUQ0RheSgpO3JldHVybiB0PT09MD83OnR9ZnVuY3Rpb24gaUVlKGUsdCl7cmV0dXJuIEJyKG5nLmNvdW50KEdoKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBBd3QoZSl7dmFyIHQ9ZS5nZXRVVENEYXkoKTtyZXR1cm4gdD49NHx8dD09PTA/RnAoZSk6RnAuY2VpbChlKX1mdW5jdGlvbiBvRWUoZSx0KXtyZXR1cm4gZT1Bd3QoZSksQnIoRnAuY291bnQoR2goZSksZSkrKEdoKGUpLmdldFVUQ0RheSgpPT09NCksdCwyKX1mdW5jdGlvbiBhRWUoZSl7cmV0dXJuIGUuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24gc0VlKGUsdCl7cmV0dXJuIEJyKG95LmNvdW50KEdoKGUpLTEsZSksdCwyKX1mdW5jdGlvbiBsRWUoZSx0KXtyZXR1cm4gQnIoZS5nZXRVVENGdWxsWWVhcigpJTEwMCx0LDIpfWZ1bmN0aW9uIGNFZShlLHQpe3JldHVybiBlPUF3dChlKSxCcihlLmdldFVUQ0Z1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gdUVlKGUsdCl7cmV0dXJuIEJyKGUuZ2V0VVRDRnVsbFllYXIoKSUxZTQsdCw0KX1mdW5jdGlvbiBoRWUoZSx0KXt2YXIgcj1lLmdldFVUQ0RheSgpO3JldHVybiBlPXI+PTR8fHI9PT0wP0ZwKGUpOkZwLmNlaWwoZSksQnIoZS5nZXRVVENGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIGZFZSgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gd3d0KCl7cmV0dXJuIiUifWZ1bmN0aW9uIFN3dChlKXtyZXR1cm4rZX1mdW5jdGlvbiBNd3QoZSl7cmV0dXJuIE1hdGguZmxvb3IoK2UvMWUzKX12YXIgR2IsYjUsYlgsYXksdzU7eDgoe2RhdGVUaW1lOiIleCwgJVgiLGRhdGU6IiUtbS8lLWQvJVkiLHRpbWU6IiUtSTolTTolUyAlcCIscGVyaW9kczpbIkFNIiwiUE0iXSxkYXlzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydERheXM6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxtb250aHM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLHNob3J0TW9udGhzOlsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl19KTtmdW5jdGlvbiB4OChlKXtyZXR1cm4gR2I9eDUoZSksYjU9R2IuZm9ybWF0LGJYPUdiLnBhcnNlLGF5PUdiLnV0Y0Zvcm1hdCx3NT1HYi51dGNQYXJzZSxHYn12YXIgd1g9IiVZLSVtLSVkVCVIOiVNOiVTLiVMWiI7ZnVuY3Rpb24gcEVlKGUpe3JldHVybiBlLnRvSVNPU3RyaW5nKCl9dmFyIGRFZT1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz9wRWU6YXkod1gpLFB3dD1kRWU7ZnVuY3Rpb24gbUVlKGUpe3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiBpc05hTih0KT9udWxsOnR9dmFyIGdFZT0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP21FZTp3NSh3WCksSXd0PWdFZTt2YXIgUzU9MWUzLE01PVM1KjYwLEU1PU01KjYwLFQ1PUU1KjI0LF9FZT1UNSo3LEx3dD1UNSozMCxTWD1UNSozNjU7ZnVuY3Rpb24geUVlKGUpe3JldHVybiBuZXcgRGF0ZShlKX1mdW5jdGlvbiB2RWUoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBEYXRlPytlOituZXcgRGF0ZSgrZSl9ZnVuY3Rpb24gYjgoZSx0LHIsbixpLG8sYSxzLGwpe3ZhciBjPXA1KGlpLGlpKSx1PWMuaW52ZXJ0LGg9Yy5kb21haW4sZj1sKCIuJUwiKSxwPWwoIjolUyIpLGQ9bCgiJUk6JU0iKSxnPWwoIiVJICVwIiksXz1sKCIlYSAlZCIpLHk9bCgiJWIgJWQiKSx4PWwoIiVCIiksYj1sKCIlWSIpLFM9W1thLDEsUzVdLFthLDUsNSpTNV0sW2EsMTUsMTUqUzVdLFthLDMwLDMwKlM1XSxbbywxLE01XSxbbyw1LDUqTTVdLFtvLDE1LDE1Kk01XSxbbywzMCwzMCpNNV0sW2ksMSxFNV0sW2ksMywzKkU1XSxbaSw2LDYqRTVdLFtpLDEyLDEyKkU1XSxbbiwxLFQ1XSxbbiwyLDIqVDVdLFtyLDEsX0VlXSxbdCwxLEx3dF0sW3QsMywzKkx3dF0sW2UsMSxTWF1dO2Z1bmN0aW9uIEMoayl7cmV0dXJuKGEoayk8az9mOm8oayk8az9wOmkoayk8az9kOm4oayk8az9nOnQoayk8az9yKGspPGs/Xzp5OmUoayk8az94OmIpKGspfWZ1bmN0aW9uIFAoayxPLEQsQil7aWYoaz09bnVsbCYmKGs9MTApLHR5cGVvZiBrPT0ibnVtYmVyIil7dmFyIEk9TWF0aC5hYnMoRC1PKS9rLEw9aWIoZnVuY3Rpb24oUil7cmV0dXJuIFJbMl19KS5yaWdodChTLEkpO0w9PT1TLmxlbmd0aD8oQj1RcyhPL1NYLEQvU1gsayksaz1lKTpMPyhMPVNbSS9TW0wtMV1bMl08U1tMXVsyXS9JP0wtMTpMXSxCPUxbMV0saz1MWzBdKTooQj1NYXRoLm1heChRcyhPLEQsayksMSksaz1zKX1yZXR1cm4gQj09bnVsbD9rOmsuZXZlcnkoQil9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKGspe3JldHVybiBuZXcgRGF0ZSh1KGspKX0sYy5kb21haW49ZnVuY3Rpb24oayl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aChYXy5jYWxsKGssdkVlKSk6aCgpLm1hcCh5RWUpfSxjLnRpY2tzPWZ1bmN0aW9uKGssTyl7dmFyIEQ9aCgpLEI9RFswXSxJPURbRC5sZW5ndGgtMV0sTD1JPEIsUjtyZXR1cm4gTCYmKFI9QixCPUksST1SKSxSPVAoayxCLEksTyksUj1SP1IucmFuZ2UoQixJKzEpOltdLEw/Ui5yZXZlcnNlKCk6Un0sYy50aWNrRm9ybWF0PWZ1bmN0aW9uKGssTyl7cmV0dXJuIE89PW51bGw/QzpsKE8pfSxjLm5pY2U9ZnVuY3Rpb24oayxPKXt2YXIgRD1oKCk7cmV0dXJuKGs9UChrLERbMF0sRFtELmxlbmd0aC0xXSxPKSk/aChsOChELGspKTpjfSxjLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVWgoYyxiOChlLHQscixuLGksbyxhLHMsbCkpfSxjfWZ1bmN0aW9uIFdiKCl7cmV0dXJuIGZpLmFwcGx5KGI4KHFoLGc4LHJnLHR5LG04LGQ4LFFfLFpfLGI1KS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBrd3QoKXtyZXR1cm4gZmkuYXBwbHkoYjgoR2gsdjgsbmcsbnkseTgsXzgsUV8sWl8sYXkpLmRvbWFpbihbRGF0ZS5VVEMoMmUzLDAsMSksRGF0ZS5VVEMoMmUzLDAsMildKSxhcmd1bWVudHMpfWZ1bmN0aW9uIHc4KCl7dmFyIGU9MCx0PTEscixuLGksbyxhPWlpLHM9ITEsbDtmdW5jdGlvbiBjKHUpe3JldHVybiBpc05hTih1PSt1KT9sOmEoaT09PTA/LjU6KHU9KG8odSktcikqaSxzP01hdGgubWF4KDAsTWF0aC5taW4oMSx1KSk6dSkpfXJldHVybiBjLmRvbWFpbj1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1vKGU9K3VbMF0pLG49byh0PSt1WzFdKSxpPXI9PT1uPzA6MS8obi1yKSxjKTpbZSx0XX0sYy5jbGFtcD1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0hIXUsYyk6c30sYy5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dSxjKTphfSxjLnVua25vd249ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dSxjKTpsfSxmdW5jdGlvbih1KXtyZXR1cm4gbz11LHI9dShlKSxuPXUodCksaT1yPT09bj8wOjEvKG4tciksY319ZnVuY3Rpb24gQnAoZSx0KXtyZXR1cm4gdC5kb21haW4oZS5kb21haW4oKSkuaW50ZXJwb2xhdG9yKGUuaW50ZXJwb2xhdG9yKCkpLmNsYW1wKGUuY2xhbXAoKSkudW5rbm93bihlLnVua25vd24oKSl9ZnVuY3Rpb24gUzgoKXt2YXIgZT1ubCh3OCgpKGlpKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBCcChlLFM4KCkpfSxvYy5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTVgoKXt2YXIgZT1kNSh3OCgpKS5kb21haW4oWzEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJwKGUsTVgoKSkuYmFzZShlLmJhc2UoKSl9LG9jLmFwcGx5KGUsYXJndW1lbnRzKX1mdW5jdGlvbiBFWCgpe3ZhciBlPW01KHc4KCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQnAoZSxFWCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxvYy5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTTgoKXt2YXIgZT1nNSh3OCgpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJwKGUsTTgoKSkuZXhwb25lbnQoZS5leHBvbmVudCgpKX0sb2MuYXBwbHkoZSxhcmd1bWVudHMpfWZ1bmN0aW9uIFJ3dCgpe3JldHVybiBNOC5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfWZ1bmN0aW9uIEU4KCl7dmFyIGU9W10sdD1paTtmdW5jdGlvbiByKG4pe2lmKCFpc05hTihuPStuKSlyZXR1cm4gdCgoX3MoZSxuKS0xKS8oZS5sZW5ndGgtMSkpfXJldHVybiByLmRvbWFpbj1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W107Zm9yKHZhciBpPTAsbz1uLmxlbmd0aCxhO2k8bzsrK2kpYT1uW2ldLGEhPW51bGwmJiFpc05hTihhPSthKSYmZS5wdXNoKGEpO3JldHVybiBlLnNvcnQoaWEpLHJ9LHIuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4scik6dH0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEU4KHQpLmRvbWFpbihlKX0sb2MuYXBwbHkocixhcmd1bWVudHMpfWZ1bmN0aW9uIFQ4KCl7dmFyIGU9MCx0PS41LHI9MSxuLGksbyxhLHMsbD1paSxjLHU9ITEsaDtmdW5jdGlvbiBmKHApe3JldHVybiBpc05hTihwPStwKT9oOihwPS41KygocD0rYyhwKSktaSkqKHA8aT9hOnMpLGwodT9NYXRoLm1heCgwLE1hdGgubWluKDEscCkpOnApKX1yZXR1cm4gZi5kb21haW49ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YyhlPStwWzBdKSxpPWModD0rcFsxXSksbz1jKHI9K3BbMl0pLGE9bj09PWk/MDouNS8oaS1uKSxzPWk9PT1vPzA6LjUvKG8taSksZik6W2UsdCxyXX0sZi5jbGFtcD1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0hIXAsZik6dX0sZi5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9cCxmKTpsfSxmLnVua25vd249ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9cCxmKTpofSxmdW5jdGlvbihwKXtyZXR1cm4gYz1wLG49cChlKSxpPXAodCksbz1wKHIpLGE9bj09PWk/MDouNS8oaS1uKSxzPWk9PT1vPzA6LjUvKG8taSksZn19ZnVuY3Rpb24gQzgoKXt2YXIgZT1ubChUOCgpKGlpKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBCcChlLEM4KCkpfSxvYy5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVFgoKXt2YXIgZT1kNShUOCgpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJwKGUsVFgoKSkuYmFzZShlLmJhc2UoKSl9LG9jLmFwcGx5KGUsYXJndW1lbnRzKX1mdW5jdGlvbiBDWCgpe3ZhciBlPW01KFQ4KCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gQnAoZSxDWCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxvYy5hcHBseShlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gQTgoKXt2YXIgZT1nNShUOCgpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIEJwKGUsQTgoKSkuZXhwb25lbnQoZS5leHBvbmVudCgpKX0sb2MuYXBwbHkoZSxhcmd1bWVudHMpfWZ1bmN0aW9uIE53dCgpe3JldHVybiBBOC5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfWZ1bmN0aW9uIHRlKGUpe2Zvcih2YXIgdD1lLmxlbmd0aC82fDAscj1uZXcgQXJyYXkodCksbj0wO248dDspcltuXT0iIyIrZS5zbGljZShuKjYsKytuKjYpO3JldHVybiByfXZhciBZYj10ZSgiMWY3N2I0ZmY3ZjBlMmNhMDJjZDYyNzI4OTQ2N2JkOGM1NjRiZTM3N2MyN2Y3ZjdmYmNiZDIyMTdiZWNmIik7dmFyIER3dD10ZSgiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2Iik7dmFyIE93dD10ZSgiMWI5ZTc3ZDk1ZjAyNzU3MGIzZTcyOThhNjZhNjFlZTZhYjAyYTY3NjFkNjY2NjY2Iik7dmFyIHp3dD10ZSgiYTZjZWUzMWY3OGI0YjJkZjhhMzNhMDJjZmI5YTk5ZTMxYTFjZmRiZjZmZmY3ZjAwY2FiMmQ2NmEzZDlhZmZmZjk5YjE1OTI4Iik7dmFyIEZ3dD10ZSgiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIik7dmFyIEJ3dD10ZSgiYjNlMmNkZmRjZGFjY2JkNWU4ZjRjYWU0ZTZmNWM5ZmZmMmFlZjFlMmNjY2NjY2NjIik7dmFyIEh3dD10ZSgiZTQxYTFjMzc3ZWI4NGRhZjRhOTg0ZWEzZmY3ZjAwZmZmZjMzYTY1NjI4Zjc4MWJmOTk5OTk5Iik7dmFyIFZ3dD10ZSgiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIik7dmFyIFV3dD10ZSgiOGRkM2M3ZmZmZmIzYmViYWRhZmI4MDcyODBiMWQzZmRiNDYyYjNkZTY5ZmNjZGU1ZDlkOWQ5YmM4MGJkY2NlYmM1ZmZlZDZmIik7dmFyIHF3dD10ZSgiNGU3OWE3ZjI4ZTJjZTE1NzU5NzZiN2IyNTlhMTRmZWRjOTQ5YWY3YWExZmY5ZGE3OWM3NTVmYmFiMGFiIik7ZnVuY3Rpb24gSWUoZSl7cmV0dXJuIHNMKGVbZS5sZW5ndGgtMV0pfXZhciBBWD1uZXcgQXJyYXkoMykuY29uY2F0KCJkOGIzNjVmNWY1ZjU1YWI0YWMiLCJhNjYxMWFkZmMyN2Q4MGNkYzEwMTg1NzEiLCJhNjYxMWFkZmMyN2RmNWY1ZjU4MGNkYzEwMTg1NzEiLCI4YzUxMGFkOGIzNjVmNmU4YzNjN2VhZTU1YWI0YWMwMTY2NWUiLCI4YzUxMGFkOGIzNjVmNmU4YzNmNWY1ZjVjN2VhZTU1YWI0YWMwMTY2NWUiLCI4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUiLCI4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNmNWY1ZjVjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUiLCI1NDMwMDU4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUwMDNjMzAiLCI1NDMwMDU4YzUxMGFiZjgxMmRkZmMyN2RmNmU4YzNmNWY1ZjVjN2VhZTU4MGNkYzEzNTk3OGYwMTY2NWUwMDNjMzAiKS5tYXAodGUpLEd3dD1JZShBWCk7dmFyIFBYPW5ldyBBcnJheSgzKS5jb25jYXQoImFmOGRjM2Y3ZjdmNzdmYmY3YiIsIjdiMzI5NGMyYTVjZmE2ZGJhMDAwODgzNyIsIjdiMzI5NGMyYTVjZmY3ZjdmN2E2ZGJhMDAwODgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGQ5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGY3ZjdmN2Q5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIpLm1hcCh0ZSksV3d0PUllKFBYKTt2YXIgSVg9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTlhM2M5ZjdmN2Y3YTFkNzZhIiwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2IiwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2IiwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IikubWFwKHRlKSxZd3Q9SWUoSVgpO3ZhciBMWD1uZXcgQXJyYXkoMykuY29uY2F0KCI5OThlYzNmN2Y3ZjdmMWEzNDAiLCI1ZTNjOTliMmFiZDJmZGI4NjNlNjYxMDEiLCI1ZTNjOTliMmFiZDJmN2Y3ZjdmZGI4NjNlNjYxMDEiLCI1NDI3ODg5OThlYzNkOGRhZWJmZWUwYjZmMWEzNDBiMzU4MDYiLCI1NDI3ODg5OThlYzNkOGRhZWJmN2Y3ZjdmZWUwYjZmMWEzNDBiMzU4MDYiLCI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDYiLCI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmN2Y3ZjdmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDYiLCIyZDAwNGI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDY3ZjNiMDgiLCIyZDAwNGI1NDI3ODg4MDczYWNiMmFiZDJkOGRhZWJmN2Y3ZjdmZWUwYjZmZGI4NjNlMDgyMTRiMzU4MDY3ZjNiMDgiKS5tYXAodGUpLGp3dD1JZShMWCk7dmFyIGtYPW5ldyBBcnJheSgzKS5jb25jYXQoImVmOGE2MmY3ZjdmNzY3YTljZiIsImNhMDAyMGY0YTU4MjkyYzVkZTA1NzFiMCIsImNhMDAyMGY0YTU4MmY3ZjdmNzkyYzVkZTA1NzFiMCIsImIyMTgyYmVmOGE2MmZkZGJjN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmVmOGE2MmZkZGJjN2Y3ZjdmN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIpLm1hcCh0ZSksWHd0PUllKGtYKTt2YXIgUlg9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZmZmZmZmOTk5OTk5IiwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwIiwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIikubWFwKHRlKSwkd3Q9SWUoUlgpO3ZhciBOWD1uZXcgQXJyYXkoMykuY29uY2F0KCJmYzhkNTlmZmZmYmY5MWJmZGIiLCJkNzE5MWNmZGFlNjFhYmQ5ZTkyYzdiYjYiLCJkNzE5MWNmZGFlNjFmZmZmYmZhYmQ5ZTkyYzdiYjYiLCJkNzMwMjdmYzhkNTlmZWUwOTBlMGYzZjg5MWJmZGI0NTc1YjQiLCJkNzMwMjdmYzhkNTlmZWUwOTBmZmZmYmZlMGYzZjg5MWJmZGI0NTc1YjQiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQiLCJkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBmZmZmYmZlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQiLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQzMTM2OTUiLCJhNTAwMjZkNzMwMjdmNDZkNDNmZGFlNjFmZWUwOTBmZmZmYmZlMGYzZjhhYmQ5ZTk3NGFkZDE0NTc1YjQzMTM2OTUiKS5tYXAodGUpLEt3dD1JZShOWCk7dmFyIERYPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxY2Y2MCIsImQ3MTkxY2ZkYWU2MWE2ZDk2YTFhOTY0MSIsImQ3MTkxY2ZkYWU2MWZmZmZiZmE2ZDk2YTFhOTY0MSIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmZmZmZiZmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIpLm1hcCh0ZSksWnd0PUllKERYKTt2YXIgT1g9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTlkNTk0IiwiZDcxOTFjZmRhZTYxYWJkZGE0MmI4M2JhIiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkZGE0MmI4M2JhIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZmZmZmJmZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIikubWFwKHRlKSxKd3Q9SWUoT1gpO3ZhciB6WD1uZXcgQXJyYXkoMykuY29uY2F0KCJlNWY1Zjk5OWQ4YzkyY2EyNWYiLCJlZGY4ZmJiMmUyZTI2NmMyYTQyMzhiNDUiLCJlZGY4ZmJiMmUyZTI2NmMyYTQyY2EyNWYwMDZkMmMiLCJlZGY4ZmJjY2VjZTY5OWQ4Yzk2NmMyYTQyY2EyNWYwMDZkMmMiLCJlZGY4ZmJjY2VjZTY5OWQ4Yzk2NmMyYTQ0MWFlNzYyMzhiNDUwMDU4MjQiLCJmN2ZjZmRlNWY1ZjljY2VjZTY5OWQ4Yzk2NmMyYTQ0MWFlNzYyMzhiNDUwMDU4MjQiLCJmN2ZjZmRlNWY1ZjljY2VjZTY5OWQ4Yzk2NmMyYTQ0MWFlNzYyMzhiNDUwMDZkMmMwMDQ0MWIiKS5tYXAodGUpLFF3dD1JZSh6WCk7dmFyIEZYPW5ldyBBcnJheSgzKS5jb25jYXQoImUwZWNmNDllYmNkYTg4NTZhNyIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NDE5ZCIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDgxMGY3YzRkMDA0YiIpLm1hcCh0ZSksdFN0PUllKEZYKTt2YXIgQlg9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBmM2RiYThkZGI1NDNhMmNhIiwiZjBmOWU4YmFlNGJjN2JjY2M0MmI4Y2JlIiwiZjBmOWU4YmFlNGJjN2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg2OGFjMDg0MDgxIikubWFwKHRlKSxlU3Q9SWUoQlgpO3ZhciBIWD1uZXcgQXJyYXkoMykuY29uY2F0KCJmZWU4YzhmZGJiODRlMzRhMzMiLCJmZWYwZDlmZGNjOGFmYzhkNTlkNzMwMWYiLCJmZWYwZDlmZGNjOGFmYzhkNTllMzRhMzNiMzAwMDAiLCJmZWYwZDlmZGQ0OWVmZGJiODRmYzhkNTllMzRhMzNiMzAwMDAiLCJmZWYwZDlmZGQ0OWVmZGJiODRmYzhkNTllZjY1NDhkNzMwMWY5OTAwMDAiLCJmZmY3ZWNmZWU4YzhmZGQ0OWVmZGJiODRmYzhkNTllZjY1NDhkNzMwMWY5OTAwMDAiLCJmZmY3ZWNmZWU4YzhmZGQ0OWVmZGJiODRmYzhkNTllZjY1NDhkNzMwMWZiMzAwMDA3ZjAwMDAiKS5tYXAodGUpLHJTdD1JZShIWCk7dmFyIFZYPW5ldyBBcnJheSgzKS5jb25jYXQoImVjZTJmMGE2YmRkYjFjOTA5OSIsImY2ZWZmN2JkYzllMTY3YTljZjAyODE4YSIsImY2ZWZmN2JkYzllMTY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNmM1OTAxNDYzNiIpLm1hcCh0ZSksblN0PUllKFZYKTt2YXIgVVg9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlN2YyYTZiZGRiMmI4Y2JlIiwiZjFlZWY2YmRjOWUxNzRhOWNmMDU3MGIwIiwiZjFlZWY2YmRjOWUxNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDQ1YThkMDIzODU4IikubWFwKHRlKSxpU3Q9SWUoVVgpO3ZhciBxWD1uZXcgQXJyYXkoMykuY29uY2F0KCJlN2UxZWZjOTk0YzdkZDFjNzciLCJmMWVlZjZkN2I1ZDhkZjY1YjBjZTEyNTYiLCJmMWVlZjZkN2I1ZDhkZjY1YjBkZDFjNzc5ODAwNDMiLCJmMWVlZjZkNGI5ZGFjOTk0YzdkZjY1YjBkZDFjNzc5ODAwNDMiLCJmMWVlZjZkNGI5ZGFjOTk0YzdkZjY1YjBlNzI5OGFjZTEyNTY5MTAwM2YiLCJmN2Y0ZjllN2UxZWZkNGI5ZGFjOTk0YzdkZjY1YjBlNzI5OGFjZTEyNTY5MTAwM2YiLCJmN2Y0ZjllN2UxZWZkNGI5ZGFjOTk0YzdkZjY1YjBlNzI5OGFjZTEyNTY5ODAwNDM2NzAwMWYiKS5tYXAodGUpLG9TdD1JZShxWCk7dmFyIEdYPW5ldyBBcnJheSgzKS5jb25jYXQoImZkZTBkZGZhOWZiNWM1MWI4YSIsImZlZWJlMmZiYjRiOWY3NjhhMWFlMDE3ZSIsImZlZWJlMmZiYjRiOWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NzQ5MDA2YSIpLm1hcCh0ZSksYVN0PUllKEdYKTt2YXIgV1g9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWRmOGIxN2ZjZGJiMmM3ZmI4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MjI1ZWE4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MjUzNDk0MDgxZDU4IikubWFwKHRlKSxzU3Q9SWUoV1gpO3ZhciBZWD1uZXcgQXJyYXkoMykuY29uY2F0KCJmN2ZjYjlhZGRkOGUzMWEzNTQiLCJmZmZmY2NjMmU2OTk3OGM2NzkyMzg0NDMiLCJmZmZmY2NjMmU2OTk3OGM2NzkzMWEzNTQwMDY4MzciLCJmZmZmY2NkOWYwYTNhZGRkOGU3OGM2NzkzMWEzNTQwMDY4MzciLCJmZmZmY2NkOWYwYTNhZGRkOGU3OGM2Nzk0MWFiNWQyMzg0NDMwMDVhMzIiLCJmZmZmZTVmN2ZjYjlkOWYwYTNhZGRkOGU3OGM2Nzk0MWFiNWQyMzg0NDMwMDVhMzIiLCJmZmZmZTVmN2ZjYjlkOWYwYTNhZGRkOGU3OGM2Nzk0MWFiNWQyMzg0NDMwMDY4MzcwMDQ1MjkiKS5tYXAodGUpLGxTdD1JZShZWCk7dmFyIGpYPW5ldyBBcnJheSgzKS5jb25jYXQoImZmZjdiY2ZlYzQ0ZmQ5NWYwZSIsImZmZmZkNGZlZDk4ZWZlOTkyOWNjNGMwMiIsImZmZmZkNGZlZDk4ZWZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjk5MzQwNDY2MjUwNiIpLm1hcCh0ZSksY1N0PUllKGpYKTt2YXIgWFg9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZlZGEwZmViMjRjZjAzYjIwIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZTMxYTFjIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYmQwMDI2ODAwMDI2IikubWFwKHRlKSx1U3Q9SWUoWFgpO3ZhciAkWD1uZXcgQXJyYXkoMykuY29uY2F0KCJkZWViZjc5ZWNhZTEzMTgyYmQiLCJlZmYzZmZiZGQ3ZTc2YmFlZDYyMTcxYjUiLCJlZmYzZmZiZGQ3ZTc2YmFlZDYzMTgyYmQwODUxOWMiLCJlZmYzZmZjNmRiZWY5ZWNhZTE2YmFlZDYzMTgyYmQwODUxOWMiLCJlZmYzZmZjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODQ1OTQiLCJmN2ZiZmZkZWViZjdjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODQ1OTQiLCJmN2ZiZmZkZWViZjdjNmRiZWY5ZWNhZTE2YmFlZDY0MjkyYzYyMTcxYjUwODUxOWMwODMwNmIiKS5tYXAodGUpLGhTdD1JZSgkWCk7dmFyIEtYPW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVlMGExZDk5YjMxYTM1NCIsImVkZjhlOWJhZTRiMzc0YzQ3NjIzOGI0NSIsImVkZjhlOWJhZTRiMzc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcCh0ZSksZlN0PUllKEtYKTt2YXIgWlg9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKHRlKSxwU3Q9SWUoWlgpO3ZhciBKWD1uZXcgQXJyYXkoMykuY29uY2F0KCJlZmVkZjViY2JkZGM3NTZiYjEiLCJmMmYwZjdjYmM5ZTI5ZTlhYzg2YTUxYTMiLCJmMmYwZjdjYmM5ZTI5ZTlhYzg3NTZiYjE1NDI3OGYiLCJmMmYwZjdkYWRhZWJiY2JkZGM5ZTlhYzg3NTZiYjE1NDI3OGYiLCJmMmYwZjdkYWRhZWJiY2JkZGM5ZTlhYzg4MDdkYmE2YTUxYTM0YTE0ODYiLCJmY2ZiZmRlZmVkZjVkYWRhZWJiY2JkZGM5ZTlhYzg4MDdkYmE2YTUxYTM0YTE0ODYiLCJmY2ZiZmRlZmVkZjVkYWRhZWJiY2JkZGM5ZTlhYzg4MDdkYmE2YTUxYTM1NDI3OGYzZjAwN2QiKS5tYXAodGUpLGRTdD1JZShKWCk7dmFyIFFYPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZTBkMmZjOTI3MmRlMmQyNiIsImZlZTVkOWZjYWU5MWZiNmE0YWNiMTgxZCIsImZlZTVkOWZjYWU5MWZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZGE1MGYxNTY3MDAwZCIpLm1hcCh0ZSksbVN0PUllKFFYKTt2YXIgdCQ9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlNmNlZmRhZTZiZTY1NTBkIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0IikubWFwKHRlKSxnU3Q9SWUodCQpO2Z1bmN0aW9uIF9TdChlKXtyZXR1cm4gZT1NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKC00LjU0LWUqKDM1LjM0LWUqKDIzODEuNzMtZSooNjQwMi43LWUqKDcwMjQuNzItZSoyNzEwLjU3KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMzIuNDkrZSooMTcwLjczK2UqKDUyLjgyLWUqKDEzMS40Ni1lKigxNzYuNTgtZSo2Ny4zNykpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDgxLjI0K2UqKDQ0Mi4zNi1lKigyNDgyLjQzLWUqKDYxNjcuMjQtZSooNjYxNC45NC1lKjI0NzUuNjcpKSkpKSkpKyIpIn12YXIgeVN0PUVfKHNhKDMwMCwuNSwwKSxzYSgtMjQwLC41LDEpKTt2YXIgdlN0PUVfKHNhKC0xMDAsLjc1LC4zNSksc2EoODAsMS41LC44KSkseFN0PUVfKHNhKDI2MCwuNzUsLjM1KSxzYSg4MCwxLjUsLjgpKSxQOD1zYSgpO2Z1bmN0aW9uIGJTdChlKXsoZTwwfHxlPjEpJiYoZS09TWF0aC5mbG9vcihlKSk7dmFyIHQ9TWF0aC5hYnMoZS0uNSk7cmV0dXJuIFA4Lmg9MzYwKmUtMTAwLFA4LnM9MS41LTEuNSp0LFA4Lmw9LjgtLjkqdCxQOCsiIn12YXIgSTg9bHUoKSx4RWU9TWF0aC5QSS8zLGJFZT1NYXRoLlBJKjIvMztmdW5jdGlvbiB3U3QoZSl7dmFyIHQ7cmV0dXJuIGU9KC41LWUpKk1hdGguUEksSTgucj0yNTUqKHQ9TWF0aC5zaW4oZSkpKnQsSTguZz0yNTUqKHQ9TWF0aC5zaW4oZSt4RWUpKSp0LEk4LmI9MjU1Kih0PU1hdGguc2luKGUrYkVlKSkqdCxJOCsiIn1mdW5jdGlvbiBTU3QoZSl7cmV0dXJuIGU9TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKSwicmdiKCIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgzNC42MStlKigxMTcyLjMzLWUqKDEwNzkzLjU2LWUqKDMzMzAwLjEyLWUqKDM4Mzk0LjQ5LWUqMTQ4MjUuMDUpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgyMy4zMStlKig1NTcuMzMrZSooMTIyNS4zMy1lKigzNTc0Ljk2LWUqKDEwNzMuNzcrZSo3MDcuNTYpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgyNy4yK2UqKDMyMTEuMS1lKigxNTMyNy45Ny1lKigyNzgxNC1lKigyMjU2OS4xOC1lKjY4MzguNjYpKSkpKSkpKyIpIn1mdW5jdGlvbiBMOChlKXt2YXIgdD1lLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGVbTWF0aC5tYXgoMCxNYXRoLm1pbih0LTEsTWF0aC5mbG9vcihyKnQpKSldfX12YXIgTVN0PUw4KHRlKCI0NDAxNTQ0NDAyNTY0NTA0NTc0NTA1NTk0NjA3NWE0NjA4NWM0NjBhNWQ0NjBiNWU0NzBkNjA0NzBlNjE0NzEwNjM0NzExNjQ0NzEzNjU0ODE0Njc0ODE2Njg0ODE3Njk0ODE4NmE0ODFhNmM0ODFiNmQ0ODFjNmU0ODFkNmY0ODFmNzA0ODIwNzE0ODIxNzM0ODIzNzQ0ODI0NzU0ODI1NzY0ODI2Nzc0ODI4Nzg0ODI5Nzk0NzJhN2E0NzJjN2E0NzJkN2I0NzJlN2M0NzJmN2Q0NjMwN2U0NjMyN2U0NjMzN2Y0NjM0ODA0NTM1ODE0NTM3ODE0NTM4ODI0NDM5ODM0NDNhODM0NDNiODQ0MzNkODQ0MzNlODU0MjNmODU0MjQwODY0MjQxODY0MTQyODc0MTQ0ODc0MDQ1ODg0MDQ2ODgzZjQ3ODgzZjQ4ODkzZTQ5ODkzZTRhODkzZTRjOGEzZDRkOGEzZDRlOGEzYzRmOGEzYzUwOGIzYjUxOGIzYjUyOGIzYTUzOGIzYTU0OGMzOTU1OGMzOTU2OGMzODU4OGMzODU5OGMzNzVhOGMzNzViOGQzNjVjOGQzNjVkOGQzNTVlOGQzNTVmOGQzNDYwOGQzNDYxOGQzMzYyOGQzMzYzOGQzMjY0OGUzMjY1OGUzMTY2OGUzMTY3OGUzMTY4OGUzMDY5OGUzMDZhOGUyZjZiOGUyZjZjOGUyZTZkOGUyZTZlOGUyZTZmOGUyZDcwOGUyZDcxOGUyYzcxOGUyYzcyOGUyYzczOGUyYjc0OGUyYjc1OGUyYTc2OGUyYTc3OGUyYTc4OGUyOTc5OGUyOTdhOGUyOTdiOGUyODdjOGUyODdkOGUyNzdlOGUyNzdmOGUyNzgwOGUyNjgxOGUyNjgyOGUyNjgyOGUyNTgzOGUyNTg0OGUyNTg1OGUyNDg2OGUyNDg3OGUyMzg4OGUyMzg5OGUyMzhhOGQyMjhiOGQyMjhjOGQyMjhkOGQyMThlOGQyMThmOGQyMTkwOGQyMTkxOGMyMDkyOGMyMDkyOGMyMDkzOGMxZjk0OGMxZjk1OGIxZjk2OGIxZjk3OGIxZjk4OGIxZjk5OGExZjlhOGExZTliOGExZTljODkxZTlkODkxZjllODkxZjlmODgxZmEwODgxZmExODgxZmExODcxZmEyODcyMGEzODYyMGE0ODYyMWE1ODUyMWE2ODUyMmE3ODUyMmE4ODQyM2E5ODMyNGFhODMyNWFiODIyNWFjODIyNmFkODEyN2FkODEyOGFlODAyOWFmN2YyYWIwN2YyY2IxN2UyZGIyN2QyZWIzN2MyZmI0N2MzMWI1N2IzMmI2N2EzNGI2NzkzNWI3NzkzN2I4NzgzOGI5NzczYWJhNzYzYmJiNzUzZGJjNzQzZmJjNzM0MGJkNzI0MmJlNzE0NGJmNzA0NmMwNmY0OGMxNmU0YWMxNmQ0Y2MyNmM0ZWMzNmI1MGM0NmE1MmM1Njk1NGM1Njg1NmM2Njc1OGM3NjU1YWM4NjQ1Y2M4NjM1ZWM5NjI2MGNhNjA2M2NiNWY2NWNiNWU2N2NjNWM2OWNkNWI2Y2NkNWE2ZWNlNTg3MGNmNTc3M2QwNTY3NWQwNTQ3N2QxNTM3YWQxNTE3Y2QyNTA3ZmQzNGU4MWQzNGQ4NGQ0NGI4NmQ1NDk4OWQ1NDg4YmQ2NDY4ZWQ2NDU5MGQ3NDM5M2Q3NDE5NWQ4NDA5OGQ4M2U5YmQ5M2M5ZGQ5M2JhMGRhMzlhMmRhMzdhNWRiMzZhOGRiMzRhYWRjMzJhZGRjMzBiMGRkMmZiMmRkMmRiNWRlMmJiOGRlMjliYWRlMjhiZGRmMjZjMGRmMjVjMmRmMjNjNWUwMjFjOGUwMjBjYWUxMWZjZGUxMWRkMGUxMWNkMmUyMWJkNWUyMWFkOGUyMTlkYWUzMTlkZGUzMThkZmUzMThlMmU0MThlNWU0MTllN2U0MTllYWU1MWFlY2U1MWJlZmU1MWNmMWU1MWRmNGU2MWVmNmU2MjBmOGU2MjFmYmU3MjNmZGU3MjUiKSksRVN0PUw4KHRlKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksVFN0PUw4KHRlKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMGEwMjAyMGMwMjAyMGUwMzAyMTAwNDAzMTIwNDAzMTQwNTA0MTcwNjA0MTkwNzA1MWIwODA1MWQwOTA2MWYwYTA3MjIwYjA3MjQwYzA4MjYwZDA4MjkwZTA5MmIxMDA5MmQxMTBhMzAxMjBhMzIxNDBiMzQxNTBiMzcxNjBiMzkxODBjM2MxOTBjM2UxYjBjNDExYzBjNDMxZTBjNDUxZjBjNDgyMTBjNGEyMzBjNGMyNDBjNGYyNjBjNTEyODBiNTMyOTBiNTUyYjBiNTcyZDBiNTkyZjBhNWIzMTBhNWMzMjBhNWUzNDBhNWYzNjA5NjEzODA5NjIzOTA5NjMzYjA5NjQzZDA5NjUzZTA5NjY0MDBhNjc0MjBhNjg0NDBhNjg0NTBhNjk0NzBiNmE0OTBiNmE0YTBjNmI0YzBjNmI0ZDBkNmM0ZjBkNmM1MTBlNmM1MjBlNmQ1NDBmNmQ1NTBmNmQ1NzEwNmU1OTEwNmU1YTExNmU1YzEyNmU1ZDEyNmU1ZjEzNmU2MTEzNmU2MjE0NmU2NDE1NmU2NTE1NmU2NzE2NmU2OTE2NmU2YTE3NmU2YzE4NmU2ZDE4NmU2ZjE5NmU3MTE5NmU3MjFhNmU3NDFhNmU3NTFiNmU3NzFjNmQ3ODFjNmQ3YTFkNmQ3YzFkNmQ3ZDFlNmQ3ZjFlNmM4MDFmNmM4MjIwNmM4NDIwNmI4NTIxNmI4NzIxNmI4ODIyNmE4YTIyNmE4YzIzNjk4ZDIzNjk4ZjI0Njk5MDI1Njg5MjI1Njg5MzI2Njc5NTI2Njc5NzI3NjY5ODI3NjY5YTI4NjU5YjI5NjQ5ZDI5NjQ5ZjJhNjNhMDJhNjNhMjJiNjJhMzJjNjFhNTJjNjBhNjJkNjBhODJlNWZhOTJlNWVhYjJmNWVhZDMwNWRhZTMwNWNiMDMxNWJiMTMyNWFiMzMyNWFiNDMzNTliNjM0NThiNzM1NTdiOTM1NTZiYTM2NTViYzM3NTRiZDM4NTNiZjM5NTJjMDNhNTFjMTNhNTBjMzNiNGZjNDNjNGVjNjNkNGRjNzNlNGNjODNmNGJjYTQwNGFjYjQxNDljYzQyNDhjZTQzNDdjZjQ0NDZkMDQ1NDVkMjQ2NDRkMzQ3NDNkNDQ4NDJkNTRhNDFkNzRiM2ZkODRjM2VkOTRkM2RkYTRlM2NkYjUwM2JkZDUxM2FkZTUyMzhkZjUzMzdlMDU1MzZlMTU2MzVlMjU3MzRlMzU5MzNlNDVhMzFlNTVjMzBlNjVkMmZlNzVlMmVlODYwMmRlOTYxMmJlYTYzMmFlYjY0MjllYjY2MjhlYzY3MjZlZDY5MjVlZTZhMjRlZjZjMjNlZjZlMjFmMDZmMjBmMTcxMWZmMTczMWRmMjc0MWNmMzc2MWJmMzc4MTlmNDc5MThmNTdiMTdmNTdkMTVmNjdlMTRmNjgwMTNmNzgyMTJmNzg0MTBmODg1MGZmODg3MGVmODg5MGNmOThiMGJmOThjMGFmOThlMDlmYTkwMDhmYTkyMDdmYTk0MDdmYjk2MDZmYjk3MDZmYjk5MDZmYjliMDZmYjlkMDdmYzlmMDdmY2ExMDhmY2EzMDlmY2E1MGFmY2E2MGNmY2E4MGRmY2FhMGZmY2FjMTFmY2FlMTJmY2IwMTRmY2IyMTZmY2I0MThmYmI2MWFmYmI4MWRmYmJhMWZmYmJjMjFmYmJlMjNmYWMwMjZmYWMyMjhmYWM0MmFmYWM2MmRmOWM3MmZmOWM5MzJmOWNiMzVmOGNkMzdmOGNmM2FmN2QxM2RmN2QzNDBmNmQ1NDNmNmQ3NDZmNWQ5NDlmNWRiNGNmNGRkNGZmNGRmNTNmNGUxNTZmM2UzNWFmM2U1NWRmMmU2NjFmMmU4NjVmMmVhNjlmMWVjNmRmMWVkNzFmMWVmNzVmMWYxNzlmMmYyN2RmMmY0ODJmM2Y1ODZmM2Y2OGFmNGY4OGVmNWY5OTJmNmZhOTZmOGZiOWFmOWZjOWRmYWZkYTFmY2ZmYTQiKSksQ1N0PUw4KHRlKCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSk7ZnVuY3Rpb24gcWUoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciBlJD1NYXRoLmFicyxGbz1NYXRoLmF0YW4yLGlnPU1hdGguY29zLEFTdD1NYXRoLm1heCxrOD1NYXRoLm1pbixndT1NYXRoLnNpbixzeT1NYXRoLnNxcnQseG89MWUtMTIsX3U9TWF0aC5QSSxDNT1fdS8yLGNjPTIqX3U7ZnVuY3Rpb24gUFN0KGUpe3JldHVybiBlPjE/MDplPC0xP191Ok1hdGguYWNvcyhlKX1mdW5jdGlvbiByJChlKXtyZXR1cm4gZT49MT9DNTplPD0tMT8tQzU6TWF0aC5hc2luKGUpfWZ1bmN0aW9uIHdFZShlKXtyZXR1cm4gZS5pbm5lclJhZGl1c31mdW5jdGlvbiBTRWUoZSl7cmV0dXJuIGUub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gTUVlKGUpe3JldHVybiBlLnN0YXJ0QW5nbGV9ZnVuY3Rpb24gRUVlKGUpe3JldHVybiBlLmVuZEFuZ2xlfWZ1bmN0aW9uIFRFZShlKXtyZXR1cm4gZSYmZS5wYWRBbmdsZX1mdW5jdGlvbiBDRWUoZSx0LHIsbixpLG8sYSxzKXt2YXIgbD1yLWUsYz1uLXQsdT1hLWksaD1zLW8sZj1oKmwtdSpjO2lmKCEoZipmPHhvKSlyZXR1cm4gZj0odSoodC1vKS1oKihlLWkpKS9mLFtlK2YqbCx0K2YqY119ZnVuY3Rpb24gUjgoZSx0LHIsbixpLG8sYSl7dmFyIHM9ZS1yLGw9dC1uLGM9KGE/bzotbykvc3kocypzK2wqbCksdT1jKmwsaD0tYypzLGY9ZSt1LHA9dCtoLGQ9cit1LGc9bitoLF89KGYrZCkvMix5PShwK2cpLzIseD1kLWYsYj1nLXAsUz14KngrYipiLEM9aS1vLFA9ZipnLWQqcCxrPShiPDA/LTE6MSkqc3koQVN0KDAsQypDKlMtUCpQKSksTz0oUCpiLXgqaykvUyxEPSgtUCp4LWIqaykvUyxCPShQKmIreCprKS9TLEk9KC1QKngrYiprKS9TLEw9Ty1fLFI9RC15LEY9Qi1fLHo9SS15O3JldHVybiBMKkwrUipSPkYqRit6KnomJihPPUIsRD1JKSx7Y3g6TyxjeTpELHgwMTotdSx5MDE6LWgseDExOk8qKGkvQy0xKSx5MTE6RCooaS9DLTEpfX1mdW5jdGlvbiBJU3QoKXt2YXIgZT13RWUsdD1TRWUscj1xZSgwKSxuPW51bGwsaT1NRWUsbz1FRWUsYT1URWUscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgYyx1LGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGY9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLHA9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyktQzUsZD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1DNSxnPWUkKGQtcCksXz1kPnA7aWYoc3x8KHM9Yz14cygpKSxmPGgmJih1PWYsZj1oLGg9dSksIShmPnhvKSlzLm1vdmVUbygwLDApO2Vsc2UgaWYoZz5jYy14bylzLm1vdmVUbyhmKmlnKHApLGYqZ3UocCkpLHMuYXJjKDAsMCxmLHAsZCwhXyksaD54byYmKHMubW92ZVRvKGgqaWcoZCksaCpndShkKSkscy5hcmMoMCwwLGgsZCxwLF8pKTtlbHNle3ZhciB5PXAseD1kLGI9cCxTPWQsQz1nLFA9ZyxrPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsTz1rPnhvJiYobj8rbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6c3koaCpoK2YqZikpLEQ9azgoZSQoZi1oKS8yLCtyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQj1ELEk9RCxMLFI7aWYoTz54byl7dmFyIEY9ciQoTy9oKmd1KGspKSx6PXIkKE8vZipndShrKSk7KEMtPUYqMik+eG8/KEYqPV8/MTotMSxiKz1GLFMtPUYpOihDPTAsYj1TPShwK2QpLzIpLChQLT16KjIpPnhvPyh6Kj1fPzE6LTEseSs9eix4LT16KTooUD0wLHk9eD0ocCtkKS8yKX12YXIgVT1mKmlnKHkpLFc9ZipndSh5KSxaPWgqaWcoUykscnQ9aCpndShTKTtpZihEPnhvKXt2YXIgb3Q9ZippZyh4KSxzdD1mKmd1KHgpLFN0PWgqaWcoYiksYnQ9aCpndShiKSxNdDtpZihnPF91JiYoTXQ9Q0VlKFUsVyxTdCxidCxvdCxzdCxaLHJ0KSkpe3ZhciBsdD1VLU10WzBdLEt0PVctTXRbMV0sX3Q9b3QtTXRbMF0sY3Q9c3QtTXRbMV0sWD0xL2d1KFBTdCgobHQqX3QrS3QqY3QpLyhzeShsdCpsdCtLdCpLdCkqc3koX3QqX3QrY3QqY3QpKSkvMiksZXQ9c3koTXRbMF0qTXRbMF0rTXRbMV0qTXRbMV0pO0I9azgoRCwoaC1ldCkvKFgtMSkpLEk9azgoRCwoZi1ldCkvKFgrMSkpfX1QPnhvP0k+eG8/KEw9UjgoU3QsYnQsVSxXLGYsSSxfKSxSPVI4KG90LHN0LFoscnQsZixJLF8pLHMubW92ZVRvKEwuY3grTC54MDEsTC5jeStMLnkwMSksSTxEP3MuYXJjKEwuY3gsTC5jeSxJLEZvKEwueTAxLEwueDAxKSxGbyhSLnkwMSxSLngwMSksIV8pOihzLmFyYyhMLmN4LEwuY3ksSSxGbyhMLnkwMSxMLngwMSksRm8oTC55MTEsTC54MTEpLCFfKSxzLmFyYygwLDAsZixGbyhMLmN5K0wueTExLEwuY3grTC54MTEpLEZvKFIuY3krUi55MTEsUi5jeCtSLngxMSksIV8pLHMuYXJjKFIuY3gsUi5jeSxJLEZvKFIueTExLFIueDExKSxGbyhSLnkwMSxSLngwMSksIV8pKSk6KHMubW92ZVRvKFUsVykscy5hcmMoMCwwLGYseSx4LCFfKSk6cy5tb3ZlVG8oVSxXKSwhKGg+eG8pfHwhKEM+eG8pP3MubGluZVRvKFoscnQpOkI+eG8/KEw9UjgoWixydCxvdCxzdCxoLC1CLF8pLFI9UjgoVSxXLFN0LGJ0LGgsLUIsXykscy5saW5lVG8oTC5jeCtMLngwMSxMLmN5K0wueTAxKSxCPEQ/cy5hcmMoTC5jeCxMLmN5LEIsRm8oTC55MDEsTC54MDEpLEZvKFIueTAxLFIueDAxKSwhXyk6KHMuYXJjKEwuY3gsTC5jeSxCLEZvKEwueTAxLEwueDAxKSxGbyhMLnkxMSxMLngxMSksIV8pLHMuYXJjKDAsMCxoLEZvKEwuY3krTC55MTEsTC5jeCtMLngxMSksRm8oUi5jeStSLnkxMSxSLmN4K1IueDExKSxfKSxzLmFyYyhSLmN4LFIuY3ksQixGbyhSLnkxMSxSLngxMSksRm8oUi55MDEsUi54MDEpLCFfKSkpOnMuYXJjKDAsMCxoLFMsYixfKX1pZihzLmNsb3NlUGF0aCgpLGMpcmV0dXJuIHM9bnVsbCxjKyIifHxudWxsfXJldHVybiBsLmNlbnRyb2lkPWZ1bmN0aW9uKCl7dmFyIGM9KCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLHU9KCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSsgK28uYXBwbHkodGhpcyxhcmd1bWVudHMpKS8yLV91LzI7cmV0dXJuW2lnKHUpKmMsZ3UodSkqY119LGwuaW5uZXJSYWRpdXM9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpxZSgrYyksbCk6ZX0sbC5vdXRlclJhZGl1cz1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgYz09ImZ1bmN0aW9uIj9jOnFlKCtjKSxsKTp0fSxsLmNvcm5lclJhZGl1cz1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgYz09ImZ1bmN0aW9uIj9jOnFlKCtjKSxsKTpyfSxsLnBhZFJhZGl1cz1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1jPT1udWxsP251bGw6dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpxZSgrYyksbCk6bn0sbC5zdGFydEFuZ2xlPWZ1bmN0aW9uKGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBjPT0iZnVuY3Rpb24iP2M6cWUoK2MpLGwpOml9LGwuZW5kQW5nbGU9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dHlwZW9mIGM9PSJmdW5jdGlvbiI/YzpxZSgrYyksbCk6b30sbC5wYWRBbmdsZT1mdW5jdGlvbihjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10eXBlb2YgYz09ImZ1bmN0aW9uIj9jOnFlKCtjKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24oYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9Yz09bnVsbD9udWxsOmMsbCk6c30sbH1mdW5jdGlvbiBMU3QoZSl7dGhpcy5fY29udGV4dD1lfUxTdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTticmVha319fTtmdW5jdGlvbiBXaChlKXtyZXR1cm4gbmV3IExTdChlKX1mdW5jdGlvbiBqYihlKXtyZXR1cm4gZVswXX1mdW5jdGlvbiBYYihlKXtyZXR1cm4gZVsxXX1mdW5jdGlvbiB5dSgpe3ZhciBlPWpiLHQ9WGIscj1xZSghMCksbj1udWxsLGk9V2gsbz1udWxsO2Z1bmN0aW9uIGEocyl7dmFyIGwsYz1zLmxlbmd0aCx1LGg9ITEsZjtmb3Iobj09bnVsbCYmKG89aShmPXhzKCkpKSxsPTA7bDw9YzsrK2wpIShsPGMmJnIodT1zW2xdLGwscykpPT09aCYmKChoPSFoKT9vLmxpbmVTdGFydCgpOm8ubGluZUVuZCgpKSxoJiZvLnBvaW50KCtlKHUsbCxzKSwrdCh1LGwscykpO2lmKGYpcmV0dXJuIG89bnVsbCxmKyIifHxudWxsfXJldHVybiBhLng9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpxZSgrcyksYSk6ZX0sYS55PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6cWUoK3MpLGEpOnR9LGEuZGVmaW5lZD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOnFlKCEhcyksYSk6cn0sYS5jdXJ2ZT1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1zLG4hPW51bGwmJihvPWkobikpLGEpOml9LGEuY29udGV4dD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz09bnVsbD9uPW89bnVsbDpvPWkobj1zKSxhKTpufSxhfWZ1bmN0aW9uIE44KCl7dmFyIGU9amIsdD1udWxsLHI9cWUoMCksbj1YYixpPXFlKCEwKSxvPW51bGwsYT1XaCxzPW51bGw7ZnVuY3Rpb24gbCh1KXt2YXIgaCxmLHAsZD11Lmxlbmd0aCxnLF89ITEseSx4PW5ldyBBcnJheShkKSxiPW5ldyBBcnJheShkKTtmb3Iobz09bnVsbCYmKHM9YSh5PXhzKCkpKSxoPTA7aDw9ZDsrK2gpe2lmKCEoaDxkJiZpKGc9dVtoXSxoLHUpKT09PV8paWYoXz0hXylmPWgscy5hcmVhU3RhcnQoKSxzLmxpbmVTdGFydCgpO2Vsc2V7Zm9yKHMubGluZUVuZCgpLHMubGluZVN0YXJ0KCkscD1oLTE7cD49ZjstLXApcy5wb2ludCh4W3BdLGJbcF0pO3MubGluZUVuZCgpLHMuYXJlYUVuZCgpfV8mJih4W2hdPStlKGcsaCx1KSxiW2hdPStyKGcsaCx1KSxzLnBvaW50KHQ/K3QoZyxoLHUpOnhbaF0sbj8rbihnLGgsdSk6YltoXSkpfWlmKHkpcmV0dXJuIHM9bnVsbCx5KyIifHxudWxsfWZ1bmN0aW9uIGMoKXtyZXR1cm4geXUoKS5kZWZpbmVkKGkpLmN1cnZlKGEpLmNvbnRleHQobyl9cmV0dXJuIGwueD1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgdT09ImZ1bmN0aW9uIj91OnFlKCt1KSx0PW51bGwsbCk6ZX0sbC54MD1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgdT09ImZ1bmN0aW9uIj91OnFlKCt1KSxsKTplfSxsLngxPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXU9PW51bGw/bnVsbDp0eXBlb2YgdT09ImZ1bmN0aW9uIj91OnFlKCt1KSxsKTp0fSxsLnk9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIHU9PSJmdW5jdGlvbiI/dTpxZSgrdSksbj1udWxsLGwpOnJ9LGwueTA9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIHU9PSJmdW5jdGlvbiI/dTpxZSgrdSksbCk6cn0sbC55MT1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj11PT1udWxsP251bGw6dHlwZW9mIHU9PSJmdW5jdGlvbiI/dTpxZSgrdSksbCk6bn0sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShyKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShuKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShyKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6cWUoISF1KSxsKTppfSxsLmN1cnZlPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXUsbyE9bnVsbCYmKHM9YShvKSksbCk6YX0sbC5jb250ZXh0PWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PT1udWxsP289cz1udWxsOnM9YShvPXUpLGwpOm99LGx9ZnVuY3Rpb24ga1N0KGUsdCl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIFJTdChlKXtyZXR1cm4gZX1mdW5jdGlvbiBOU3QoKXt2YXIgZT1SU3QsdD1rU3Qscj1udWxsLG49cWUoMCksaT1xZShjYyksbz1xZSgwKTtmdW5jdGlvbiBhKHMpe3ZhciBsLGM9cy5sZW5ndGgsdSxoLGY9MCxwPW5ldyBBcnJheShjKSxkPW5ldyBBcnJheShjKSxnPStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxfPU1hdGgubWluKGNjLE1hdGgubWF4KC1jYyxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSkseSx4PU1hdGgubWluKE1hdGguYWJzKF8pL2Msby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGI9eCooXzwwPy0xOjEpLFM7Zm9yKGw9MDtsPGM7KytsKShTPWRbcFtsXT1sXT0rZShzW2xdLGwscykpPjAmJihmKz1TKTtmb3IodCE9bnVsbD9wLnNvcnQoZnVuY3Rpb24oQyxQKXtyZXR1cm4gdChkW0NdLGRbUF0pfSk6ciE9bnVsbCYmcC5zb3J0KGZ1bmN0aW9uKEMsUCl7cmV0dXJuIHIoc1tDXSxzW1BdKX0pLGw9MCxoPWY/KF8tYypiKS9mOjA7bDxjOysrbCxnPXkpdT1wW2xdLFM9ZFt1XSx5PWcrKFM+MD9TKmg6MCkrYixkW3VdPXtkYXRhOnNbdV0saW5kZXg6bCx2YWx1ZTpTLHN0YXJ0QW5nbGU6ZyxlbmRBbmdsZTp5LHBhZEFuZ2xlOnh9O3JldHVybiBkfXJldHVybiBhLnZhbHVlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6cWUoK3MpLGEpOmV9LGEuc29ydFZhbHVlcz1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1zLHI9bnVsbCxhKTp0fSxhLnNvcnQ9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9cyx0PW51bGwsYSk6cn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6cWUoK3MpLGEpOm59LGEuZW5kQW5nbGU9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpxZSgrcyksYSk6aX0sYS5wYWRBbmdsZT1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOnFlKCtzKSxhKTpvfSxhfXZhciBEOD0kYihXaCk7ZnVuY3Rpb24gRFN0KGUpe3RoaXMuX2N1cnZlPWV9RFN0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYVN0YXJ0KCl9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhRW5kKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbihlLHQpe3RoaXMuX2N1cnZlLnBvaW50KHQqTWF0aC5zaW4oZSksdCotTWF0aC5jb3MoZSkpfX07ZnVuY3Rpb24gJGIoZSl7ZnVuY3Rpb24gdChyKXtyZXR1cm4gbmV3IERTdChlKHIpKX1yZXR1cm4gdC5fY3VydmU9ZSx0fWZ1bmN0aW9uIEtiKGUpe3ZhciB0PWUuY3VydmU7cmV0dXJuIGUuYW5nbGU9ZS54LGRlbGV0ZSBlLngsZS5yYWRpdXM9ZS55LGRlbGV0ZSBlLnksZS5jdXJ2ZT1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90KCRiKHIpKTp0KCkuX2N1cnZlfSxlfWZ1bmN0aW9uIG4kKCl7cmV0dXJuIEtiKHl1KCkuY3VydmUoRDgpKX1mdW5jdGlvbiBpJCgpe3ZhciBlPU44KCkuY3VydmUoRDgpLHQ9ZS5jdXJ2ZSxyPWUubGluZVgwLG49ZS5saW5lWDEsaT1lLmxpbmVZMCxvPWUubGluZVkxO3JldHVybiBlLmFuZ2xlPWUueCxkZWxldGUgZS54LGUuc3RhcnRBbmdsZT1lLngwLGRlbGV0ZSBlLngwLGUuZW5kQW5nbGU9ZS54MSxkZWxldGUgZS54MSxlLnJhZGl1cz1lLnksZGVsZXRlIGUueSxlLmlubmVyUmFkaXVzPWUueTAsZGVsZXRlIGUueTAsZS5vdXRlclJhZGl1cz1lLnkxLGRlbGV0ZSBlLnkxLGUubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gS2IocigpKX0sZGVsZXRlIGUubGluZVgwLGUubGluZUVuZEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIEtiKG4oKSl9LGRlbGV0ZSBlLmxpbmVYMSxlLmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBLYihpKCkpfSxkZWxldGUgZS5saW5lWTAsZS5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gS2IobygpKX0sZGVsZXRlIGUubGluZVkxLGUuY3VydmU9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dCgkYihhKSk6dCgpLl9jdXJ2ZX0sZX1mdW5jdGlvbiBseShlLHQpe3JldHVyblsodD0rdCkqTWF0aC5jb3MoZS09TWF0aC5QSS8yKSx0Kk1hdGguc2luKGUpXX12YXIgQTU9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIEFFZShlKXtyZXR1cm4gZS5zb3VyY2V9ZnVuY3Rpb24gUEVlKGUpe3JldHVybiBlLnRhcmdldH1mdW5jdGlvbiBvJChlKXt2YXIgdD1BRWUscj1QRWUsbj1qYixpPVhiLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIHMsbD1BNS5jYWxsKGFyZ3VtZW50cyksYz10LmFwcGx5KHRoaXMsbCksdT1yLmFwcGx5KHRoaXMsbCk7aWYob3x8KG89cz14cygpKSxlKG8sK24uYXBwbHkodGhpcywobFswXT1jLGwpKSwraS5hcHBseSh0aGlzLGwpLCtuLmFwcGx5KHRoaXMsKGxbMF09dSxsKSksK2kuYXBwbHkodGhpcyxsKSkscylyZXR1cm4gbz1udWxsLHMrIiJ8fG51bGx9cmV0dXJuIGEuc291cmNlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXMsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9cyxhKTpyfSxhLng9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIHM9PSJmdW5jdGlvbiI/czpxZSgrcyksYSk6bn0sYS55PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6cWUoK3MpLGEpOml9LGEuY29udGV4dD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1zPT1udWxsP251bGw6cyxhKTpvfSxhfWZ1bmN0aW9uIElFZShlLHQscixuLGkpe2UubW92ZVRvKHQsciksZS5iZXppZXJDdXJ2ZVRvKHQ9KHQrbikvMixyLHQsaSxuLGkpfWZ1bmN0aW9uIExFZShlLHQscixuLGkpe2UubW92ZVRvKHQsciksZS5iZXppZXJDdXJ2ZVRvKHQscj0ocitpKS8yLG4scixuLGkpfWZ1bmN0aW9uIGtFZShlLHQscixuLGkpe3ZhciBvPWx5KHQsciksYT1seSh0LHI9KHIraSkvMikscz1seShuLHIpLGw9bHkobixpKTtlLm1vdmVUbyhvWzBdLG9bMV0pLGUuYmV6aWVyQ3VydmVUbyhhWzBdLGFbMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9ZnVuY3Rpb24gT1N0KCl7cmV0dXJuIG8kKElFZSl9ZnVuY3Rpb24gelN0KCl7cmV0dXJuIG8kKExFZSl9ZnVuY3Rpb24gRlN0KCl7dmFyIGU9byQoa0VlKTtyZXR1cm4gZS5hbmdsZT1lLngsZGVsZXRlIGUueCxlLnJhZGl1cz1lLnksZGVsZXRlIGUueSxlfXZhciBQNT17ZHJhdzpmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguc3FydCh0L191KTtlLm1vdmVUbyhyLDApLGUuYXJjKDAsMCxyLDAsY2MpfX07dmFyIE84PXtkcmF3OmZ1bmN0aW9uKGUsdCl7dmFyIHI9TWF0aC5zcXJ0KHQvNSkvMjtlLm1vdmVUbygtMypyLC1yKSxlLmxpbmVUbygtciwtciksZS5saW5lVG8oLXIsLTMqciksZS5saW5lVG8ociwtMypyKSxlLmxpbmVUbyhyLC1yKSxlLmxpbmVUbygzKnIsLXIpLGUubGluZVRvKDMqcixyKSxlLmxpbmVUbyhyLHIpLGUubGluZVRvKHIsMypyKSxlLmxpbmVUbygtciwzKnIpLGUubGluZVRvKC1yLHIpLGUubGluZVRvKC0zKnIsciksZS5jbG9zZVBhdGgoKX19O3ZhciBCU3Q9TWF0aC5zcXJ0KC4zMzMzMzMzMzMzMzMzMzMzKSxSRWU9QlN0KjIsejg9e2RyYXc6ZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLnNxcnQodC9SRWUpLG49cipCU3Q7ZS5tb3ZlVG8oMCwtciksZS5saW5lVG8obiwwKSxlLmxpbmVUbygwLHIpLGUubGluZVRvKC1uLDApLGUuY2xvc2VQYXRoKCl9fTt2YXIgTkVlPS44OTA4MTMwOTE1MjkyODUyLEhTdD1NYXRoLnNpbihfdS8xMCkvTWF0aC5zaW4oNypfdS8xMCksREVlPU1hdGguc2luKGNjLzEwKSpIU3QsT0VlPS1NYXRoLmNvcyhjYy8xMCkqSFN0LEY4PXtkcmF3OmZ1bmN0aW9uKGUsdCl7dmFyIHI9TWF0aC5zcXJ0KHQqTkVlKSxuPURFZSpyLGk9T0VlKnI7ZS5tb3ZlVG8oMCwtciksZS5saW5lVG8obixpKTtmb3IodmFyIG89MTtvPDU7KytvKXt2YXIgYT1jYypvLzUscz1NYXRoLmNvcyhhKSxsPU1hdGguc2luKGEpO2UubGluZVRvKGwqciwtcypyKSxlLmxpbmVUbyhzKm4tbCppLGwqbitzKmkpfWUuY2xvc2VQYXRoKCl9fTt2YXIgQjg9e2RyYXc6ZnVuY3Rpb24oZSx0KXt2YXIgcj1NYXRoLnNxcnQodCksbj0tci8yO2UucmVjdChuLG4scixyKX19O3ZhciBhJD1NYXRoLnNxcnQoMyksSDg9e2RyYXc6ZnVuY3Rpb24oZSx0KXt2YXIgcj0tTWF0aC5zcXJ0KHQvKGEkKjMpKTtlLm1vdmVUbygwLHIqMiksZS5saW5lVG8oLWEkKnIsLXIpLGUubGluZVRvKGEkKnIsLXIpLGUuY2xvc2VQYXRoKCl9fTt2YXIgdWM9LS41LGhjPU1hdGguc3FydCgzKS8yLHMkPTEvTWF0aC5zcXJ0KDEyKSx6RWU9KHMkLzIrMSkqMyxWOD17ZHJhdzpmdW5jdGlvbihlLHQpe3ZhciByPU1hdGguc3FydCh0L3pFZSksbj1yLzIsaT1yKnMkLG89bixhPXIqcyQrcixzPS1vLGw9YTtlLm1vdmVUbyhuLGkpLGUubGluZVRvKG8sYSksZS5saW5lVG8ocyxsKSxlLmxpbmVUbyh1YypuLWhjKmksaGMqbit1YyppKSxlLmxpbmVUbyh1YypvLWhjKmEsaGMqbyt1YyphKSxlLmxpbmVUbyh1YypzLWhjKmwsaGMqcyt1YypsKSxlLmxpbmVUbyh1YypuK2hjKmksdWMqaS1oYypuKSxlLmxpbmVUbyh1YypvK2hjKmEsdWMqYS1oYypvKSxlLmxpbmVUbyh1YypzK2hjKmwsdWMqbC1oYypzKSxlLmNsb3NlUGF0aCgpfX07dmFyIFZTdD1bUDUsTzgsejgsQjgsRjgsSDgsVjhdO2Z1bmN0aW9uIFVTdCgpe3ZhciBlPXFlKFA1KSx0PXFlKDY0KSxyPW51bGw7ZnVuY3Rpb24gbigpe3ZhciBpO2lmKHJ8fChyPWk9eHMoKSksZS5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhyLCt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksaSlyZXR1cm4gcj1udWxsLGkrIiJ8fG51bGx9cmV0dXJuIG4udHlwZT1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOnFlKGkpLG4pOmV9LG4uc2l6ZT1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOnFlKCtpKSxuKTp0fSxuLmNvbnRleHQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9aT09bnVsbD9udWxsOmksbik6cn0sbn1mdW5jdGlvbiBmYygpe31mdW5jdGlvbiBaYihlLHQscil7ZS5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKmUuX3gwK2UuX3gxKS8zLCgyKmUuX3kwK2UuX3kxKS8zLChlLl94MCsyKmUuX3gxKS8zLChlLl95MCsyKmUuX3kxKS8zLChlLl94MCs0KmUuX3gxK3QpLzYsKGUuX3kwKzQqZS5feTErcikvNil9ZnVuY3Rpb24gSTUoZSl7dGhpcy5fY29udGV4dD1lfUk1LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6WmIodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKTticmVha30odGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MSkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhlLHQpOnRoaXMuX2NvbnRleHQubW92ZVRvKGUsdCk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5feDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6WmIodGhpcyxlLHQpO2JyZWFrfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPWUsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dH19O2Z1bmN0aW9uIFU4KGUpe3JldHVybiBuZXcgSTUoZSl9ZnVuY3Rpb24gcVN0KGUpe3RoaXMuX2NvbnRleHQ9ZX1xU3QucHJvdG90eXBlPXthcmVhU3RhcnQ6ZmMsYXJlYUVuZDpmYyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnt0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDI6e3RoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDM6e3RoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpO2JyZWFrfX19LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9ZSx0aGlzLl95Mj10O2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPWUsdGhpcy5feTM9dDticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND1lLHRoaXMuX3k0PXQsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErZSkvNiwodGhpcy5feTArNCp0aGlzLl95MSt0KS82KTticmVhaztkZWZhdWx0OlpiKHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXR9fTtmdW5jdGlvbiBHU3QoZSl7cmV0dXJuIG5ldyBxU3QoZSl9ZnVuY3Rpb24gV1N0KGUpe3RoaXMuX2NvbnRleHQ9ZX1XU3QucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MykmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7dmFyIHI9KHRoaXMuX3gwKzQqdGhpcy5feDErZSkvNixuPSh0aGlzLl95MCs0KnRoaXMuX3kxK3QpLzY7dGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhyLG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHIsbik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpaYih0aGlzLGUsdCk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10fX07ZnVuY3Rpb24gWVN0KGUpe3JldHVybiBuZXcgV1N0KGUpfWZ1bmN0aW9uIGpTdChlLHQpe3RoaXMuX2Jhc2lzPW5ldyBJNShlKSx0aGlzLl9iZXRhPXR9alN0LnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5feCx0PXRoaXMuX3kscj1lLmxlbmd0aC0xO2lmKHI+MClmb3IodmFyIG49ZVswXSxpPXRbMF0sbz1lW3JdLW4sYT10W3JdLWkscz0tMSxsOysrczw9cjspbD1zL3IsdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSplW3NdKygxLXRoaXMuX2JldGEpKihuK2wqbyksdGhpcy5fYmV0YSp0W3NdKygxLXRoaXMuX2JldGEpKihpK2wqYSkpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl94LnB1c2goK2UpLHRoaXMuX3kucHVzaCgrdCl9fTt2YXIgWFN0PWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gdD09PTE/bmV3IEk1KG4pOm5ldyBqU3Qobix0KX1yZXR1cm4gci5iZXRhPWZ1bmN0aW9uKG4pe3JldHVybiBlKCtuKX0scn0oLjg1KTtmdW5jdGlvbiBKYihlLHQscil7ZS5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUuX3gxK2UuX2sqKGUuX3gyLWUuX3gwKSxlLl95MStlLl9rKihlLl95Mi1lLl95MCksZS5feDIrZS5fayooZS5feDEtdCksZS5feTIrZS5fayooZS5feTEtciksZS5feDIsZS5feTIpfWZ1bmN0aW9uIHE4KGUsdCl7dGhpcy5fY29udGV4dD1lLHRoaXMuX2s9KDEtdCkvNn1xOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6SmIodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7YnJlYWt9KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPWUsdGhpcy5feTE9dDticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OkpiKHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPXR9fTt2YXIgJFN0PWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gbmV3IHE4KG4sdCl9cmV0dXJuIHIudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gZSgrbil9LHJ9KDApO2Z1bmN0aW9uIEc4KGUsdCl7dGhpcy5fY29udGV4dD1lLHRoaXMuX2s9KDEtdCkvNn1HOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmYyxhcmVhRW5kOmZjLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6e3RoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrfWNhc2UgMjp7dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWt9Y2FzZSAzOnt0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KTticmVha319fSxwb2ludDpmdW5jdGlvbihlLHQpe3N3aXRjaChlPStlLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPWUsdGhpcy5feTM9dDticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND1lLHRoaXMuX3k0PXQpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PWUsdGhpcy5feTU9dDticmVhaztkZWZhdWx0OkpiKHRoaXMsZSx0KTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj1lLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPXR9fTt2YXIgS1N0PWZ1bmN0aW9uIGUodCl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gbmV3IEc4KG4sdCl9cmV0dXJuIHIudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gZSgrbil9LHJ9KDApO2Z1bmN0aW9uIFc4KGUsdCl7dGhpcy5fY29udGV4dD1lLHRoaXMuX2s9KDEtdCkvNn1XOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0zKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZT0rZSx0PSt0LHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpKYih0aGlzLGUsdCk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj10fX07dmFyIFpTdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIG5ldyBXOChuLHQpfXJldHVybiByLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIGUoK24pfSxyfSgwKTtmdW5jdGlvbiBMNShlLHQscil7dmFyIG49ZS5feDEsaT1lLl95MSxvPWUuX3gyLGE9ZS5feTI7aWYoZS5fbDAxX2E+eG8pe3ZhciBzPTIqZS5fbDAxXzJhKzMqZS5fbDAxX2EqZS5fbDEyX2ErZS5fbDEyXzJhLGw9MyplLl9sMDFfYSooZS5fbDAxX2ErZS5fbDEyX2EpO249KG4qcy1lLl94MCplLl9sMTJfMmErZS5feDIqZS5fbDAxXzJhKS9sLGk9KGkqcy1lLl95MCplLl9sMTJfMmErZS5feTIqZS5fbDAxXzJhKS9sfWlmKGUuX2wyM19hPnhvKXt2YXIgYz0yKmUuX2wyM18yYSszKmUuX2wyM19hKmUuX2wxMl9hK2UuX2wxMl8yYSx1PTMqZS5fbDIzX2EqKGUuX2wyM19hK2UuX2wxMl9hKTtvPShvKmMrZS5feDEqZS5fbDIzXzJhLXQqZS5fbDEyXzJhKS91LGE9KGEqYytlLl95MSplLl9sMjNfMmEtciplLl9sMTJfMmEpL3V9ZS5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG4saSxvLGEsZS5feDIsZS5feTIpfWZ1bmN0aW9uIEpTdChlLHQpe3RoaXMuX2NvbnRleHQ9ZSx0aGlzLl9hbHBoYT10fUpTdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWt9KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihlLHQpe2lmKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItZSxuPXRoaXMuX3kyLXQ7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Okw1KHRoaXMsZSx0KTticmVha310aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj10fX07dmFyIFFTdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIHQ/bmV3IEpTdChuLHQpOm5ldyBxOChuLDApfXJldHVybiByLmFscGhhPWZ1bmN0aW9uKG4pe3JldHVybiBlKCtuKX0scn0oLjUpO2Z1bmN0aW9uIHQzdChlLHQpe3RoaXMuX2NvbnRleHQ9ZSx0aGlzLl9hbHBoYT10fXQzdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmYyxhcmVhRW5kOmZjLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6e3RoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrfWNhc2UgMjp7dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWt9Y2FzZSAzOnt0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KTticmVha319fSxwb2ludDpmdW5jdGlvbihlLHQpe2lmKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItZSxuPXRoaXMuX3kyLXQ7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz1lLHRoaXMuX3kzPXQ7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9ZSx0aGlzLl95ND10KTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT1lLHRoaXMuX3k1PXQ7YnJlYWs7ZGVmYXVsdDpMNSh0aGlzLGUsdCk7YnJlYWt9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPWUsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9dH19O3ZhciBlM3Q9ZnVuY3Rpb24gZSh0KXtmdW5jdGlvbiByKG4pe3JldHVybiB0P25ldyB0M3Qobix0KTpuZXcgRzgobiwwKX1yZXR1cm4gci5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gZSgrbil9LHJ9KC41KTtmdW5jdGlvbiByM3QoZSx0KXt0aGlzLl9jb250ZXh0PWUsdGhpcy5fYWxwaGE9dH1yM3QucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MykmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKGUsdCl7aWYoZT0rZSx0PSt0LHRoaXMuX3BvaW50KXt2YXIgcj10aGlzLl94Mi1lLG49dGhpcy5feTItdDt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KHIqcituKm4sdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0Okw1KHRoaXMsZSx0KTticmVha310aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj10fX07dmFyIG4zdD1mdW5jdGlvbiBlKHQpe2Z1bmN0aW9uIHIobil7cmV0dXJuIHQ/bmV3IHIzdChuLHQpOm5ldyBXOChuLDApfXJldHVybiByLmFscGhhPWZ1bmN0aW9uKG4pe3JldHVybiBlKCtuKX0scn0oLjUpO2Z1bmN0aW9uIGkzdChlKXt0aGlzLl9jb250ZXh0PWV9aTN0LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZjLGFyZWFFbmQ6ZmMsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbihlLHQpe2U9K2UsdD0rdCx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyhlLHQpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKGUsdCkpfX07ZnVuY3Rpb24gbzN0KGUpe3JldHVybiBuZXcgaTN0KGUpfWZ1bmN0aW9uIGEzdChlKXtyZXR1cm4gZTwwPy0xOjF9ZnVuY3Rpb24gczN0KGUsdCxyKXt2YXIgbj1lLl94MS1lLl94MCxpPXQtZS5feDEsbz0oZS5feTEtZS5feTApLyhufHxpPDAmJi0wKSxhPShyLWUuX3kxKS8oaXx8bjwwJiYtMCkscz0obyppK2EqbikvKG4raSk7cmV0dXJuKGEzdChvKSthM3QoYSkpKk1hdGgubWluKE1hdGguYWJzKG8pLE1hdGguYWJzKGEpLC41Kk1hdGguYWJzKHMpKXx8MH1mdW5jdGlvbiBsM3QoZSx0KXt2YXIgcj1lLl94MS1lLl94MDtyZXR1cm4gcj8oMyooZS5feTEtZS5feTApL3ItdCkvMjp0fWZ1bmN0aW9uIGwkKGUsdCxyKXt2YXIgbj1lLl94MCxpPWUuX3kwLG89ZS5feDEsYT1lLl95MSxzPShvLW4pLzM7ZS5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG4rcyxpK3MqdCxvLXMsYS1zKnIsbyxhKX1mdW5jdGlvbiBZOChlKXt0aGlzLl9jb250ZXh0PWV9WTgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOmwkKHRoaXMsdGhpcy5fdDAsbDN0KHRoaXMsdGhpcy5fdDApKTticmVha30odGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MSkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKGUsdCl7dmFyIHI9TmFOO2lmKGU9K2UsdD0rdCwhKGU9PT10aGlzLl94MSYmdD09PXRoaXMuX3kxKSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCk6dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxsJCh0aGlzLGwzdCh0aGlzLHI9czN0KHRoaXMsZSx0KSkscik7YnJlYWs7ZGVmYXVsdDpsJCh0aGlzLHRoaXMuX3QwLHI9czN0KHRoaXMsZSx0KSk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9ZSx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10LHRoaXMuX3QwPXJ9fX07ZnVuY3Rpb24gYzN0KGUpe3RoaXMuX2NvbnRleHQ9bmV3IHUzdChlKX0oYzN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFk4LnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKGUsdCl7WTgucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyx0LGUpfTtmdW5jdGlvbiB1M3QoZSl7dGhpcy5fY29udGV4dD1lfXUzdC5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbihlLHQpe3RoaXMuX2NvbnRleHQubW92ZVRvKHQsZSl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbihlLHQpe3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24oZSx0LHIsbixpLG8pe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0LGUsbixyLG8saSl9fTtmdW5jdGlvbiBoM3QoZSl7cmV0dXJuIG5ldyBZOChlKX1mdW5jdGlvbiBmM3QoZSl7cmV0dXJuIG5ldyBjM3QoZSl9ZnVuY3Rpb24gZDN0KGUpe3RoaXMuX2NvbnRleHQ9ZX1kM3QucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5feCx0PXRoaXMuX3kscj1lLmxlbmd0aDtpZihyKWlmKHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZVswXSx0WzBdKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlWzBdLHRbMF0pLHI9PT0yKXRoaXMuX2NvbnRleHQubGluZVRvKGVbMV0sdFsxXSk7ZWxzZSBmb3IodmFyIG49cDN0KGUpLGk9cDN0KHQpLG89MCxhPTE7YTxyOysrbywrK2EpdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG5bMF1bb10saVswXVtvXSxuWzFdW29dLGlbMV1bb10sZVthXSx0W2FdKTsodGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnI9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl94LnB1c2goK2UpLHRoaXMuX3kucHVzaCgrdCl9fTtmdW5jdGlvbiBwM3QoZSl7dmFyIHQscj1lLmxlbmd0aC0xLG4saT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocik7Zm9yKGlbMF09MCxvWzBdPTIsYVswXT1lWzBdKzIqZVsxXSx0PTE7dDxyLTE7Kyt0KWlbdF09MSxvW3RdPTQsYVt0XT00KmVbdF0rMiplW3QrMV07Zm9yKGlbci0xXT0yLG9bci0xXT03LGFbci0xXT04KmVbci0xXStlW3JdLHQ9MTt0PHI7Kyt0KW49aVt0XS9vW3QtMV0sb1t0XS09bixhW3RdLT1uKmFbdC0xXTtmb3IoaVtyLTFdPWFbci0xXS9vW3ItMV0sdD1yLTI7dD49MDstLXQpaVt0XT0oYVt0XS1pW3QrMV0pL29bdF07Zm9yKG9bci0xXT0oZVtyXStpW3ItMV0pLzIsdD0wO3Q8ci0xOysrdClvW3RdPTIqZVt0KzFdLWlbdCsxXTtyZXR1cm5baSxvXX1mdW5jdGlvbiBtM3QoZSl7cmV0dXJuIG5ldyBkM3QoZSl9ZnVuY3Rpb24gajgoZSx0KXt0aGlzLl9jb250ZXh0PWUsdGhpcy5fdD10fWo4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiZ0aGlzLl9wb2ludD09PTImJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGU9K2UsdD0rdCx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhlLHQpOnRoaXMuX2NvbnRleHQubW92ZVRvKGUsdCk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp7aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHQpLHRoaXMuX2NvbnRleHQubGluZVRvKGUsdCk7ZWxzZXt2YXIgcj10aGlzLl94KigxLXRoaXMuX3QpK2UqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhyLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKHIsdCl9YnJlYWt9fXRoaXMuX3g9ZSx0aGlzLl95PXR9fTtmdW5jdGlvbiBnM3QoZSl7cmV0dXJuIG5ldyBqOChlLC41KX1mdW5jdGlvbiBfM3QoZSl7cmV0dXJuIG5ldyBqOChlLDApfWZ1bmN0aW9uIHkzdChlKXtyZXR1cm4gbmV3IGo4KGUsMSl9ZnVuY3Rpb24gdnUoZSx0KXtpZigoYT1lLmxlbmd0aCk+MSlmb3IodmFyIHI9MSxuLGksbz1lW3RbMF1dLGEscz1vLmxlbmd0aDtyPGE7KytyKWZvcihpPW8sbz1lW3Rbcl1dLG49MDtuPHM7KytuKW9bbl1bMV0rPW9bbl1bMF09aXNOYU4oaVtuXVsxXSk/aVtuXVswXTppW25dWzFdfWZ1bmN0aW9uIHh1KGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPW5ldyBBcnJheSh0KTstLXQ+PTA7KXJbdF09dDtyZXR1cm4gcn1mdW5jdGlvbiBGRWUoZSx0KXtyZXR1cm4gZVt0XX1mdW5jdGlvbiB2M3QoKXt2YXIgZT1xZShbXSksdD14dSxyPXZ1LG49RkVlO2Z1bmN0aW9uIGkobyl7dmFyIGE9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscyxsPW8ubGVuZ3RoLGM9YS5sZW5ndGgsdT1uZXcgQXJyYXkoYyksaDtmb3Iocz0wO3M8YzsrK3Mpe2Zvcih2YXIgZj1hW3NdLHA9dVtzXT1uZXcgQXJyYXkobCksZD0wLGc7ZDxsOysrZClwW2RdPWc9WzAsK24ob1tkXSxmLGQsbyldLGcuZGF0YT1vW2RdO3Aua2V5PWZ9Zm9yKHM9MCxoPXQodSk7czxjOysrcyl1W2hbc11dLmluZGV4PXM7cmV0dXJuIHIodSxoKSx1fXJldHVybiBpLmtleXM9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIG89PSJmdW5jdGlvbiI/bzpxZShBNS5jYWxsKG8pKSxpKTplfSxpLnZhbHVlPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBvPT0iZnVuY3Rpb24iP286cWUoK28pLGkpOm59LGkub3JkZXI9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bz09bnVsbD94dTp0eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOnFlKEE1LmNhbGwobykpLGkpOnR9LGkub2Zmc2V0PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW89PW51bGw/dnU6byxpKTpyfSxpfWZ1bmN0aW9uIHgzdChlLHQpe2lmKChuPWUubGVuZ3RoKT4wKXtmb3IodmFyIHIsbixpPTAsbz1lWzBdLmxlbmd0aCxhO2k8bzsrK2kpe2ZvcihhPXI9MDtyPG47KytyKWErPWVbcl1baV1bMV18fDA7aWYoYSlmb3Iocj0wO3I8bjsrK3IpZVtyXVtpXVsxXS89YX12dShlLHQpfX1mdW5jdGlvbiBiM3QoZSx0KXtpZigobD1lLmxlbmd0aCk+MClmb3IodmFyIHIsbj0wLGksbyxhLHMsbCxjPWVbdFswXV0ubGVuZ3RoO248YzsrK24pZm9yKGE9cz0wLHI9MDtyPGw7KytyKShvPShpPWVbdFtyXV1bbl0pWzFdLWlbMF0pPjA/KGlbMF09YSxpWzFdPWErPW8pOm88MD8oaVsxXT1zLGlbMF09cys9byk6KGlbMF09MCxpWzFdPW8pfWZ1bmN0aW9uIHczdChlLHQpe2lmKChpPWUubGVuZ3RoKT4wKXtmb3IodmFyIHI9MCxuPWVbdFswXV0saSxvPW4ubGVuZ3RoO3I8bzsrK3Ipe2Zvcih2YXIgYT0wLHM9MDthPGk7KythKXMrPWVbYV1bcl1bMV18fDA7bltyXVsxXSs9bltyXVswXT0tcy8yfXZ1KGUsdCl9fWZ1bmN0aW9uIFMzdChlLHQpe2lmKCEoISgoYT1lLmxlbmd0aCk+MCl8fCEoKG89KGk9ZVt0WzBdXSkubGVuZ3RoKT4wKSkpe2Zvcih2YXIgcj0wLG49MSxpLG8sYTtuPG87KytuKXtmb3IodmFyIHM9MCxsPTAsYz0wO3M8YTsrK3Mpe2Zvcih2YXIgdT1lW3Rbc11dLGg9dVtuXVsxXXx8MCxmPXVbbi0xXVsxXXx8MCxwPShoLWYpLzIsZD0wO2Q8czsrK2Qpe3ZhciBnPWVbdFtkXV0sXz1nW25dWzFdfHwwLHk9Z1tuLTFdWzFdfHwwO3ArPV8teX1sKz1oLGMrPXAqaH1pW24tMV1bMV0rPWlbbi0xXVswXT1yLGwmJihyLT1jL2wpfWlbbi0xXVsxXSs9aVtuLTFdWzBdPXIsdnUoZSx0KX19ZnVuY3Rpb24gWDgoZSl7dmFyIHQ9ZS5tYXAoQkVlKTtyZXR1cm4geHUoZSkuc29ydChmdW5jdGlvbihyLG4pe3JldHVybiB0W3JdLXRbbl19KX1mdW5jdGlvbiBCRWUoZSl7Zm9yKHZhciB0PS0xLHI9MCxuPWUubGVuZ3RoLGksbz0tMS8wOysrdDxuOykoaT0rZVt0XVsxXSk+byYmKG89aSxyPXQpO3JldHVybiByfWZ1bmN0aW9uICQ4KGUpe3ZhciB0PWUubWFwKGMkKTtyZXR1cm4geHUoZSkuc29ydChmdW5jdGlvbihyLG4pe3JldHVybiB0W3JdLXRbbl19KX1mdW5jdGlvbiBjJChlKXtmb3IodmFyIHQ9MCxyPS0xLG49ZS5sZW5ndGgsaTsrK3I8bjspKGk9K2Vbcl1bMV0pJiYodCs9aSk7cmV0dXJuIHR9ZnVuY3Rpb24gTTN0KGUpe3JldHVybiAkOChlKS5yZXZlcnNlKCl9ZnVuY3Rpb24gRTN0KGUpe3ZhciB0PWUubGVuZ3RoLHIsbixpPWUubWFwKGMkKSxvPVg4KGUpLGE9MCxzPTAsbD1bXSxjPVtdO2ZvcihyPTA7cjx0OysrciluPW9bcl0sYTxzPyhhKz1pW25dLGwucHVzaChuKSk6KHMrPWlbbl0sYy5wdXNoKG4pKTtyZXR1cm4gYy5yZXZlcnNlKCkuY29uY2F0KGwpfWZ1bmN0aW9uIFQzdChlKXtyZXR1cm4geHUoZSkucmV2ZXJzZSgpfWZ1bmN0aW9uIHUkKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiBDM3QoZSl7cmV0dXJuIGVbMF19ZnVuY3Rpb24gQTN0KGUpe3JldHVybiBlWzFdfWZ1bmN0aW9uIGgkKCl7dGhpcy5fPW51bGx9ZnVuY3Rpb24gUWIoZSl7ZS5VPWUuQz1lLkw9ZS5SPWUuUD1lLk49bnVsbH1oJC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmgkLGluc2VydDpmdW5jdGlvbihlLHQpe3ZhciByLG4saTtpZihlKXtpZih0LlA9ZSx0Lk49ZS5OLGUuTiYmKGUuTi5QPXQpLGUuTj10LGUuUil7Zm9yKGU9ZS5SO2UuTDspZT1lLkw7ZS5MPXR9ZWxzZSBlLlI9dDtyPWV9ZWxzZSB0aGlzLl8/KGU9UDN0KHRoaXMuXyksdC5QPW51bGwsdC5OPWUsZS5QPWUuTD10LHI9ZSk6KHQuUD10Lk49bnVsbCx0aGlzLl89dCxyPW51bGwpO2Zvcih0Lkw9dC5SPW51bGwsdC5VPXIsdC5DPSEwLGU9dDtyJiZyLkM7KW49ci5VLHI9PT1uLkw/KGk9bi5SLGkmJmkuQz8oci5DPWkuQz0hMSxuLkM9ITAsZT1uKTooZT09PXIuUiYmKGs1KHRoaXMsciksZT1yLHI9ZS5VKSxyLkM9ITEsbi5DPSEwLFI1KHRoaXMsbikpKTooaT1uLkwsaSYmaS5DPyhyLkM9aS5DPSExLG4uQz0hMCxlPW4pOihlPT09ci5MJiYoUjUodGhpcyxyKSxlPXIscj1lLlUpLHIuQz0hMSxuLkM9ITAsazUodGhpcyxuKSkpLHI9ZS5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24oZSl7ZS5OJiYoZS5OLlA9ZS5QKSxlLlAmJihlLlAuTj1lLk4pLGUuTj1lLlA9bnVsbDt2YXIgdD1lLlUscixuPWUuTCxpPWUuUixvLGE7aWYobj9pP289UDN0KGkpOm89bjpvPWksdD90Lkw9PT1lP3QuTD1vOnQuUj1vOnRoaXMuXz1vLG4mJmk/KGE9by5DLG8uQz1lLkMsby5MPW4sbi5VPW8sbyE9PWk/KHQ9by5VLG8uVT1lLlUsZT1vLlIsdC5MPWUsby5SPWksaS5VPW8pOihvLlU9dCx0PW8sZT1vLlIpKTooYT1lLkMsZT1vKSxlJiYoZS5VPXQpLCFhKXtpZihlJiZlLkMpe2UuQz0hMTtyZXR1cm59ZG97aWYoZT09PXRoaXMuXylicmVhaztpZihlPT09dC5MKXtpZihyPXQuUixyLkMmJihyLkM9ITEsdC5DPSEwLGs1KHRoaXMsdCkscj10LlIpLHIuTCYmci5MLkN8fHIuUiYmci5SLkMpeyghci5SfHwhci5SLkMpJiYoci5MLkM9ITEsci5DPSEwLFI1KHRoaXMscikscj10LlIpLHIuQz10LkMsdC5DPXIuUi5DPSExLGs1KHRoaXMsdCksZT10aGlzLl87YnJlYWt9fWVsc2UgaWYocj10Lkwsci5DJiYoci5DPSExLHQuQz0hMCxSNSh0aGlzLHQpLHI9dC5MKSxyLkwmJnIuTC5DfHxyLlImJnIuUi5DKXsoIXIuTHx8IXIuTC5DKSYmKHIuUi5DPSExLHIuQz0hMCxrNSh0aGlzLHIpLHI9dC5MKSxyLkM9dC5DLHQuQz1yLkwuQz0hMSxSNSh0aGlzLHQpLGU9dGhpcy5fO2JyZWFrfXIuQz0hMCxlPXQsdD10LlV9d2hpbGUoIWUuQyk7ZSYmKGUuQz0hMSl9fX07ZnVuY3Rpb24gazUoZSx0KXt2YXIgcj10LG49dC5SLGk9ci5VO2k/aS5MPT09cj9pLkw9bjppLlI9bjplLl89bixuLlU9aSxyLlU9bixyLlI9bi5MLHIuUiYmKHIuUi5VPXIpLG4uTD1yfWZ1bmN0aW9uIFI1KGUsdCl7dmFyIHI9dCxuPXQuTCxpPXIuVTtpP2kuTD09PXI/aS5MPW46aS5SPW46ZS5fPW4sbi5VPWksci5VPW4sci5MPW4uUixyLkwmJihyLkwuVT1yKSxuLlI9cn1mdW5jdGlvbiBQM3QoZSl7Zm9yKDtlLkw7KWU9ZS5MO3JldHVybiBlfXZhciBmJD1oJDtmdW5jdGlvbiB0MihlLHQscixuKXt2YXIgaT1bbnVsbCxudWxsXSxvPWJvLnB1c2goaSktMTtyZXR1cm4gaS5sZWZ0PWUsaS5yaWdodD10LHImJk41KGksZSx0LHIpLG4mJk41KGksdCxlLG4pLEhhW2UuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLEhhW3QuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLGl9ZnVuY3Rpb24gZTIoZSx0LHIpe3ZhciBuPVt0LHJdO3JldHVybiBuLmxlZnQ9ZSxufWZ1bmN0aW9uIE41KGUsdCxyLG4peyFlWzBdJiYhZVsxXT8oZVswXT1uLGUubGVmdD10LGUucmlnaHQ9cik6ZS5sZWZ0PT09cj9lWzFdPW46ZVswXT1ufWZ1bmN0aW9uIEhFZShlLHQscixuLGkpe3ZhciBvPWVbMF0sYT1lWzFdLHM9b1swXSxsPW9bMV0sYz1hWzBdLHU9YVsxXSxoPTAsZj0xLHA9Yy1zLGQ9dS1sLGc7aWYoZz10LXMsISghcCYmZz4wKSl7aWYoZy89cCxwPDApe2lmKGc8aClyZXR1cm47ZzxmJiYoZj1nKX1lbHNlIGlmKHA+MCl7aWYoZz5mKXJldHVybjtnPmgmJihoPWcpfWlmKGc9bi1zLCEoIXAmJmc8MCkpe2lmKGcvPXAscDwwKXtpZihnPmYpcmV0dXJuO2c+aCYmKGg9Zyl9ZWxzZSBpZihwPjApe2lmKGc8aClyZXR1cm47ZzxmJiYoZj1nKX1pZihnPXItbCwhKCFkJiZnPjApKXtpZihnLz1kLGQ8MCl7aWYoZzxoKXJldHVybjtnPGYmJihmPWcpfWVsc2UgaWYoZD4wKXtpZihnPmYpcmV0dXJuO2c+aCYmKGg9Zyl9aWYoZz1pLWwsISghZCYmZzwwKSl7aWYoZy89ZCxkPDApe2lmKGc+ZilyZXR1cm47Zz5oJiYoaD1nKX1lbHNlIGlmKGQ+MCl7aWYoZzxoKXJldHVybjtnPGYmJihmPWcpfXJldHVybiEoaD4wKSYmIShmPDEpfHwoaD4wJiYoZVswXT1bcytoKnAsbCtoKmRdKSxmPDEmJihlWzFdPVtzK2YqcCxsK2YqZF0pKSwhMH19fX19ZnVuY3Rpb24gVkVlKGUsdCxyLG4saSl7dmFyIG89ZVsxXTtpZihvKXJldHVybiEwO3ZhciBhPWVbMF0scz1lLmxlZnQsbD1lLnJpZ2h0LGM9c1swXSx1PXNbMV0saD1sWzBdLGY9bFsxXSxwPShjK2gpLzIsZD0odStmKS8yLGcsXztpZihmPT09dSl7aWYocDx0fHxwPj1uKXJldHVybjtpZihjPmgpe2lmKCFhKWE9W3Ascl07ZWxzZSBpZihhWzFdPj1pKXJldHVybjtvPVtwLGldfWVsc2V7aWYoIWEpYT1bcCxpXTtlbHNlIGlmKGFbMV08cilyZXR1cm47bz1bcCxyXX19ZWxzZSBpZihnPShjLWgpLyhmLXUpLF89ZC1nKnAsZzwtMXx8Zz4xKWlmKGM+aCl7aWYoIWEpYT1bKHItXykvZyxyXTtlbHNlIGlmKGFbMV0+PWkpcmV0dXJuO289WyhpLV8pL2csaV19ZWxzZXtpZighYSlhPVsoaS1fKS9nLGldO2Vsc2UgaWYoYVsxXTxyKXJldHVybjtvPVsoci1fKS9nLHJdfWVsc2UgaWYodTxmKXtpZighYSlhPVt0LGcqdCtfXTtlbHNlIGlmKGFbMF0+PW4pcmV0dXJuO289W24sZypuK19dfWVsc2V7aWYoIWEpYT1bbixnKm4rX107ZWxzZSBpZihhWzBdPHQpcmV0dXJuO289W3QsZyp0K19dfXJldHVybiBlWzBdPWEsZVsxXT1vLCEwfWZ1bmN0aW9uIEkzdChlLHQscixuKXtmb3IodmFyIGk9Ym8ubGVuZ3RoLG87aS0tOykoIVZFZShvPWJvW2ldLGUsdCxyLG4pfHwhSEVlKG8sZSx0LHIsbil8fCEoTWF0aC5hYnMob1swXVswXS1vWzFdWzBdKT5Icnx8TWF0aC5hYnMob1swXVsxXS1vWzFdWzFdKT5IcikpJiZkZWxldGUgYm9baV19ZnVuY3Rpb24gTDN0KGUpe3JldHVybiBIYVtlLmluZGV4XT17c2l0ZTplLGhhbGZlZGdlczpbXX19ZnVuY3Rpb24gVUVlKGUsdCl7dmFyIHI9ZS5zaXRlLG49dC5sZWZ0LGk9dC5yaWdodDtyZXR1cm4gcj09PWkmJihpPW4sbj1yKSxpP01hdGguYXRhbjIoaVsxXS1uWzFdLGlbMF0tblswXSk6KHI9PT1uPyhuPXRbMV0saT10WzBdKToobj10WzBdLGk9dFsxXSksTWF0aC5hdGFuMihuWzBdLWlbMF0saVsxXS1uWzFdKSl9ZnVuY3Rpb24gcCQoZSx0KXtyZXR1cm4gdFsrKHQubGVmdCE9PWUuc2l0ZSldfWZ1bmN0aW9uIHFFZShlLHQpe3JldHVybiB0WysodC5sZWZ0PT09ZS5zaXRlKV19ZnVuY3Rpb24gazN0KCl7Zm9yKHZhciBlPTAsdD1IYS5sZW5ndGgscixuLGksbztlPHQ7KytlKWlmKChyPUhhW2VdKSYmKG89KG49ci5oYWxmZWRnZXMpLmxlbmd0aCkpe3ZhciBhPW5ldyBBcnJheShvKSxzPW5ldyBBcnJheShvKTtmb3IoaT0wO2k8bzsrK2kpYVtpXT1pLHNbaV09VUVlKHIsYm9bbltpXV0pO2ZvcihhLnNvcnQoZnVuY3Rpb24obCxjKXtyZXR1cm4gc1tjXS1zW2xdfSksaT0wO2k8bzsrK2kpc1tpXT1uW2FbaV1dO2ZvcihpPTA7aTxvOysraSluW2ldPXNbaV19fWZ1bmN0aW9uIFIzdChlLHQscixuKXt2YXIgaT1IYS5sZW5ndGgsbyxhLHMsbCxjLHUsaCxmLHAsZCxnLF8seT0hMDtmb3Iobz0wO288aTsrK28paWYoYT1IYVtvXSl7Zm9yKHM9YS5zaXRlLGM9YS5oYWxmZWRnZXMsbD1jLmxlbmd0aDtsLS07KWJvW2NbbF1dfHxjLnNwbGljZShsLDEpO2ZvcihsPTAsdT1jLmxlbmd0aDtsPHU7KWQ9cUVlKGEsYm9bY1tsXV0pLGc9ZFswXSxfPWRbMV0saD1wJChhLGJvW2NbKytsJXVdXSksZj1oWzBdLHA9aFsxXSwoTWF0aC5hYnMoZy1mKT5Icnx8TWF0aC5hYnMoXy1wKT5IcikmJihjLnNwbGljZShsLDAsYm8ucHVzaChlMihzLGQsTWF0aC5hYnMoZy1lKTxIciYmbi1fPkhyP1tlLE1hdGguYWJzKGYtZSk8SHI/cDpuXTpNYXRoLmFicyhfLW4pPEhyJiZyLWc+SHI/W01hdGguYWJzKHAtbik8SHI/ZjpyLG5dOk1hdGguYWJzKGctcik8SHImJl8tdD5Icj9bcixNYXRoLmFicyhmLXIpPEhyP3A6dF06TWF0aC5hYnMoXy10KTxIciYmZy1lPkhyP1tNYXRoLmFicyhwLXQpPEhyP2Y6ZSx0XTpudWxsKSktMSksKyt1KTt1JiYoeT0hMSl9aWYoeSl7dmFyIHgsYixTLEM9MS8wO2ZvcihvPTAseT1udWxsO288aTsrK28pKGE9SGFbb10pJiYocz1hLnNpdGUseD1zWzBdLWUsYj1zWzFdLXQsUz14KngrYipiLFM8QyYmKEM9Uyx5PWEpKTtpZih5KXt2YXIgUD1bZSx0XSxrPVtlLG5dLE89W3Isbl0sRD1bcix0XTt5LmhhbGZlZGdlcy5wdXNoKGJvLnB1c2goZTIocz15LnNpdGUsUCxrKSktMSxiby5wdXNoKGUyKHMsayxPKSktMSxiby5wdXNoKGUyKHMsTyxEKSktMSxiby5wdXNoKGUyKHMsRCxQKSktMSl9fWZvcihvPTA7bzxpOysrbykoYT1IYVtvXSkmJihhLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBIYVtvXSl9dmFyIE4zdD1bXSxLODtmdW5jdGlvbiBHRWUoKXtRYih0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gY3koZSl7dmFyIHQ9ZS5QLHI9ZS5OO2lmKCEoIXR8fCFyKSl7dmFyIG49dC5zaXRlLGk9ZS5zaXRlLG89ci5zaXRlO2lmKG4hPT1vKXt2YXIgYT1pWzBdLHM9aVsxXSxsPW5bMF0tYSxjPW5bMV0tcyx1PW9bMF0tYSxoPW9bMV0tcyxmPTIqKGwqaC1jKnUpO2lmKCEoZj49LUQzdCkpe3ZhciBwPWwqbCtjKmMsZD11KnUraCpoLGc9KGgqcC1jKmQpL2YsXz0obCpkLXUqcCkvZix5PU4zdC5wb3AoKXx8bmV3IEdFZTt5LmFyYz1lLHkuc2l0ZT1pLHkueD1nK2EseS55PSh5LmN5PV8rcykrTWF0aC5zcXJ0KGcqZytfKl8pLGUuY2lyY2xlPXk7Zm9yKHZhciB4PW51bGwsYj1yMi5fO2I7KWlmKHkueTxiLnl8fHkueT09PWIueSYmeS54PD1iLngpaWYoYi5MKWI9Yi5MO2Vsc2V7eD1iLlA7YnJlYWt9ZWxzZSBpZihiLlIpYj1iLlI7ZWxzZXt4PWI7YnJlYWt9cjIuaW5zZXJ0KHgseSkseHx8KEs4PXkpfX19fWZ1bmN0aW9uIHV5KGUpe3ZhciB0PWUuY2lyY2xlO3QmJih0LlB8fChLOD10Lk4pLHIyLnJlbW92ZSh0KSxOM3QucHVzaCh0KSxRYih0KSxlLmNpcmNsZT1udWxsKX12YXIgejN0PVtdO2Z1bmN0aW9uIFdFZSgpe1FiKHRoaXMpLHRoaXMuZWRnZT10aGlzLnNpdGU9dGhpcy5jaXJjbGU9bnVsbH1mdW5jdGlvbiBPM3QoZSl7dmFyIHQ9ejN0LnBvcCgpfHxuZXcgV0VlO3JldHVybiB0LnNpdGU9ZSx0fWZ1bmN0aW9uIGQkKGUpe3V5KGUpLGh5LnJlbW92ZShlKSx6M3QucHVzaChlKSxRYihlKX1mdW5jdGlvbiBGM3QoZSl7dmFyIHQ9ZS5jaXJjbGUscj10Lngsbj10LmN5LGk9W3Isbl0sbz1lLlAsYT1lLk4scz1bZV07ZCQoZSk7Zm9yKHZhciBsPW87bC5jaXJjbGUmJk1hdGguYWJzKHItbC5jaXJjbGUueCk8SHImJk1hdGguYWJzKG4tbC5jaXJjbGUuY3kpPEhyOylvPWwuUCxzLnVuc2hpZnQobCksZCQobCksbD1vO3MudW5zaGlmdChsKSx1eShsKTtmb3IodmFyIGM9YTtjLmNpcmNsZSYmTWF0aC5hYnMoci1jLmNpcmNsZS54KTxIciYmTWF0aC5hYnMobi1jLmNpcmNsZS5jeSk8SHI7KWE9Yy5OLHMucHVzaChjKSxkJChjKSxjPWE7cy5wdXNoKGMpLHV5KGMpO3ZhciB1PXMubGVuZ3RoLGg7Zm9yKGg9MTtoPHU7KytoKWM9c1toXSxsPXNbaC0xXSxONShjLmVkZ2UsbC5zaXRlLGMuc2l0ZSxpKTtsPXNbMF0sYz1zW3UtMV0sYy5lZGdlPXQyKGwuc2l0ZSxjLnNpdGUsbnVsbCxpKSxjeShsKSxjeShjKX1mdW5jdGlvbiBCM3QoZSl7Zm9yKHZhciB0PWVbMF0scj1lWzFdLG4saSxvLGEscz1oeS5fO3M7KWlmKG89SDN0KHMsciktdCxvPkhyKXM9cy5MO2Vsc2UgaWYoYT10LVlFZShzLHIpLGE+SHIpe2lmKCFzLlIpe249czticmVha31zPXMuUn1lbHNle28+LUhyPyhuPXMuUCxpPXMpOmE+LUhyPyhuPXMsaT1zLk4pOm49aT1zO2JyZWFrfUwzdChlKTt2YXIgbD1PM3QoZSk7aWYoaHkuaW5zZXJ0KG4sbCksISghbiYmIWkpKXtpZihuPT09aSl7dXkobiksaT1PM3Qobi5zaXRlKSxoeS5pbnNlcnQobCxpKSxsLmVkZ2U9aS5lZGdlPXQyKG4uc2l0ZSxsLnNpdGUpLGN5KG4pLGN5KGkpO3JldHVybn1pZighaSl7bC5lZGdlPXQyKG4uc2l0ZSxsLnNpdGUpO3JldHVybn11eShuKSx1eShpKTt2YXIgYz1uLnNpdGUsdT1jWzBdLGg9Y1sxXSxmPWVbMF0tdSxwPWVbMV0taCxkPWkuc2l0ZSxnPWRbMF0tdSxfPWRbMV0taCx5PTIqKGYqXy1wKmcpLHg9ZipmK3AqcCxiPWcqZytfKl8sUz1bKF8qeC1wKmIpL3krdSwoZipiLWcqeCkveStoXTtONShpLmVkZ2UsYyxkLFMpLGwuZWRnZT10MihjLGUsbnVsbCxTKSxpLmVkZ2U9dDIoZSxkLG51bGwsUyksY3kobiksY3koaSl9fWZ1bmN0aW9uIEgzdChlLHQpe3ZhciByPWUuc2l0ZSxuPXJbMF0saT1yWzFdLG89aS10O2lmKCFvKXJldHVybiBuO3ZhciBhPWUuUDtpZighYSlyZXR1cm4tMS8wO3I9YS5zaXRlO3ZhciBzPXJbMF0sbD1yWzFdLGM9bC10O2lmKCFjKXJldHVybiBzO3ZhciB1PXMtbixoPTEvby0xL2MsZj11L2M7cmV0dXJuIGg/KC1mK01hdGguc3FydChmKmYtMipoKih1KnUvKC0yKmMpLWwrYy8yK2ktby8yKSkpL2grbjoobitzKS8yfWZ1bmN0aW9uIFlFZShlLHQpe3ZhciByPWUuTjtpZihyKXJldHVybiBIM3Qocix0KTt2YXIgbj1lLnNpdGU7cmV0dXJuIG5bMV09PT10P25bMF06MS8wfXZhciBIcj0xZS02LEQzdD0xZS0xMixoeSxIYSxyMixibztmdW5jdGlvbiBqRWUoZSx0LHIpe3JldHVybihlWzBdLXJbMF0pKih0WzFdLWVbMV0pLShlWzBdLXRbMF0pKihyWzFdLWVbMV0pfWZ1bmN0aW9uIFhFZShlLHQpe3JldHVybiB0WzFdLWVbMV18fHRbMF0tZVswXX1mdW5jdGlvbiBENShlLHQpe3ZhciByPWUuc29ydChYRWUpLnBvcCgpLG4saSxvO2Zvcihibz1bXSxIYT1uZXcgQXJyYXkoZS5sZW5ndGgpLGh5PW5ldyBmJCxyMj1uZXcgZiQ7OylpZihvPUs4LHImJighb3x8clsxXTxvLnl8fHJbMV09PT1vLnkmJnJbMF08by54KSkoclswXSE9PW58fHJbMV0hPT1pKSYmKEIzdChyKSxuPXJbMF0saT1yWzFdKSxyPWUucG9wKCk7ZWxzZSBpZihvKUYzdChvLmFyYyk7ZWxzZSBicmVhaztpZihrM3QoKSx0KXt2YXIgYT0rdFswXVswXSxzPSt0WzBdWzFdLGw9K3RbMV1bMF0sYz0rdFsxXVsxXTtJM3QoYSxzLGwsYyksUjN0KGEscyxsLGMpfXRoaXMuZWRnZXM9Ym8sdGhpcy5jZWxscz1IYSxoeT1yMj1ibz1IYT1udWxsfUQ1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6RDUscG9seWdvbnM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLm1hcChmdW5jdGlvbih0KXt2YXIgcj10LmhhbGZlZGdlcy5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHAkKHQsZVtuXSl9KTtyZXR1cm4gci5kYXRhPXQuc2l0ZS5kYXRhLHJ9KX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goZnVuY3Rpb24ocixuKXtpZighIShzPShvPXIuaGFsZmVkZ2VzKS5sZW5ndGgpKWZvcih2YXIgaT1yLnNpdGUsbyxhPS0xLHMsbCxjPXRbb1tzLTFdXSx1PWMubGVmdD09PWk/Yy5yaWdodDpjLmxlZnQ7KythPHM7KWw9dSxjPXRbb1thXV0sdT1jLmxlZnQ9PT1pP2MucmlnaHQ6Yy5sZWZ0LGwmJnUmJm48bC5pbmRleCYmbjx1LmluZGV4JiZqRWUoaSxsLHUpPDAmJmUucHVzaChbaS5kYXRhLGwuZGF0YSx1LmRhdGFdKX0pLGV9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJpZ2h0fSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntzb3VyY2U6ZS5sZWZ0LmRhdGEsdGFyZ2V0OmUucmlnaHQuZGF0YX19KX0sZmluZDpmdW5jdGlvbihlLHQscil7Zm9yKHZhciBuPXRoaXMsaSxvPW4uX2ZvdW5kfHwwLGE9bi5jZWxscy5sZW5ndGgsczshKHM9bi5jZWxsc1tvXSk7KWlmKCsrbz49YSlyZXR1cm4gbnVsbDt2YXIgbD1lLXMuc2l0ZVswXSxjPXQtcy5zaXRlWzFdLHU9bCpsK2MqYztkbyBzPW4uY2VsbHNbaT1vXSxvPW51bGwscy5oYWxmZWRnZXMuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgZj1uLmVkZ2VzW2hdLHA9Zi5sZWZ0O2lmKCEoKHA9PT1zLnNpdGV8fCFwKSYmIShwPWYucmlnaHQpKSl7dmFyIGQ9ZS1wWzBdLGc9dC1wWzFdLF89ZCpkK2cqZztfPHUmJih1PV8sbz1wLmluZGV4KX19KTt3aGlsZShvIT09bnVsbCk7cmV0dXJuIG4uX2ZvdW5kPWkscj09bnVsbHx8dTw9cipyP3Muc2l0ZTpudWxsfX07ZnVuY3Rpb24gVjN0KCl7dmFyIGU9QzN0LHQ9QTN0LHI9bnVsbDtmdW5jdGlvbiBuKGkpe3JldHVybiBuZXcgRDUoaS5tYXAoZnVuY3Rpb24obyxhKXt2YXIgcz1bTWF0aC5yb3VuZChlKG8sYSxpKS9IcikqSHIsTWF0aC5yb3VuZCh0KG8sYSxpKS9IcikqSHJdO3JldHVybiBzLmluZGV4PWEscy5kYXRhPW8sc30pLHIpfXJldHVybiBuLnBvbHlnb25zPWZ1bmN0aW9uKGkpe3JldHVybiBuKGkpLnBvbHlnb25zKCl9LG4ubGlua3M9ZnVuY3Rpb24oaSl7cmV0dXJuIG4oaSkubGlua3MoKX0sbi50cmlhbmdsZXM9ZnVuY3Rpb24oaSl7cmV0dXJuIG4oaSkudHJpYW5nbGVzKCl9LG4ueD1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOnUkKCtpKSxuKTplfSxuLnk9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGk9PSJmdW5jdGlvbiI/aTp1JCgraSksbik6dH0sbi5leHRlbnQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9aT09bnVsbD9udWxsOltbK2lbMF1bMF0sK2lbMF1bMV1dLFsraVsxXVswXSwraVsxXVsxXV1dLG4pOnImJltbclswXVswXSxyWzBdWzFdXSxbclsxXVswXSxyWzFdWzFdXV19LG4uc2l6ZT1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1pPT1udWxsP251bGw6W1swLDBdLFsraVswXSwraVsxXV1dLG4pOnImJltyWzFdWzBdLXJbMF1bMF0sclsxXVsxXS1yWzBdWzFdXX0sbn1rbSgpO2Z1bmN0aW9uIE81KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX1mdW5jdGlvbiBtJChlLHQscil7dGhpcy50YXJnZXQ9ZSx0aGlzLnR5cGU9dCx0aGlzLnRyYW5zZm9ybT1yfWZ1bmN0aW9uIFloKGUsdCxyKXt0aGlzLms9ZSx0aGlzLng9dCx0aGlzLnk9cn1ZaC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlloLHNjYWxlOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09MT90aGlzOm5ldyBZaCh0aGlzLmsqZSx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT0wJnQ9PT0wP3RoaXM6bmV3IFloKHRoaXMuayx0aGlzLngrdGhpcy5rKmUsdGhpcy55K3RoaXMuayp0KX0sYXBwbHk6ZnVuY3Rpb24oZSl7cmV0dXJuW2VbMF0qdGhpcy5rK3RoaXMueCxlWzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKGUpe3JldHVybiBlKnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbihlKXtyZXR1cm5bKGVbMF0tdGhpcy54KS90aGlzLmssKGVbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKGUpe3JldHVybihlLXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKGUpe3JldHVybihlLXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jb3B5KCkuZG9tYWluKGUucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcChlLmludmVydCxlKSl9LHJlc2NhbGVZOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNvcHkoKS5kb21haW4oZS5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKGUuaW52ZXJ0LGUpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIGpoPW5ldyBZaCgxLDAsMCk7bjIucHJvdG90eXBlPVloLnByb3RvdHlwZTtmdW5jdGlvbiBuMihlKXtmb3IoOyFlLl9fem9vbTspaWYoIShlPWUucGFyZW50Tm9kZSkpcmV0dXJuIGpoO3JldHVybiBlLl9fem9vbX1mdW5jdGlvbiBaOCgpe3F0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGkyKCl7cXQucHJldmVudERlZmF1bHQoKSxxdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiAkRWUoKXtyZXR1cm4hcXQuY3RybEtleSYmIXF0LmJ1dHRvbn1mdW5jdGlvbiBLRWUoKXt2YXIgZT10aGlzO3JldHVybiBlIGluc3RhbmNlb2YgU1ZHRWxlbWVudD8oZT1lLm93bmVyU1ZHRWxlbWVudHx8ZSxlLmhhc0F0dHJpYnV0ZSgidmlld0JveCIpPyhlPWUudmlld0JveC5iYXNlVmFsLFtbZS54LGUueV0sW2UueCtlLndpZHRoLGUueStlLmhlaWdodF1dKTpbWzAsMF0sW2Uud2lkdGguYmFzZVZhbC52YWx1ZSxlLmhlaWdodC5iYXNlVmFsLnZhbHVlXV0pOltbMCwwXSxbZS5jbGllbnRXaWR0aCxlLmNsaWVudEhlaWdodF1dfWZ1bmN0aW9uIFUzdCgpe3JldHVybiB0aGlzLl9fem9vbXx8amh9ZnVuY3Rpb24gWkVlKCl7cmV0dXJuLXF0LmRlbHRhWSoocXQuZGVsdGFNb2RlPT09MT8uMDU6cXQuZGVsdGFNb2RlPzE6LjAwMil9ZnVuY3Rpb24gSkVlKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIFFFZShlLHQscil7dmFyIG49ZS5pbnZlcnRYKHRbMF1bMF0pLXJbMF1bMF0saT1lLmludmVydFgodFsxXVswXSktclsxXVswXSxvPWUuaW52ZXJ0WSh0WzBdWzFdKS1yWzBdWzFdLGE9ZS5pbnZlcnRZKHRbMV1bMV0pLXJbMV1bMV07cmV0dXJuIGUudHJhbnNsYXRlKGk+bj8obitpKS8yOk1hdGgubWluKDAsbil8fE1hdGgubWF4KDAsaSksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9ZnVuY3Rpb24gSjgoKXt2YXIgZT0kRWUsdD1LRWUscj1RRWUsbj1aRWUsaT1KRWUsbz1bMCwxLzBdLGE9W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0scz0yNTAsbD1nTCxjPXlzKCJzdGFydCIsInpvb20iLCJlbmQiKSx1LGgsZj01MDAscD0xNTAsZD0wO2Z1bmN0aW9uIGcoTCl7TC5wcm9wZXJ0eSgiX196b29tIixVM3QpLm9uKCJ3aGVlbC56b29tIixQKS5vbigibW91c2Vkb3duLnpvb20iLGspLm9uKCJkYmxjbGljay56b29tIixPKS5maWx0ZXIoaSkub24oInRvdWNoc3RhcnQuem9vbSIsRCkub24oInRvdWNobW92ZS56b29tIixCKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixJKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9Zy50cmFuc2Zvcm09ZnVuY3Rpb24oTCxSLEYpe3ZhciB6PUwuc2VsZWN0aW9uP0wuc2VsZWN0aW9uKCk6TDt6LnByb3BlcnR5KCJfX3pvb20iLFUzdCksTCE9PXo/YihMLFIsRik6ei5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCl7Uyh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKS56b29tKG51bGwsdHlwZW9mIFI9PSJmdW5jdGlvbiI/Ui5hcHBseSh0aGlzLGFyZ3VtZW50cyk6UikuZW5kKCl9KX0sZy5zY2FsZUJ5PWZ1bmN0aW9uKEwsUixGKXtnLnNjYWxlVG8oTCxmdW5jdGlvbigpe3ZhciB6PXRoaXMuX196b29tLmssVT10eXBlb2YgUj09ImZ1bmN0aW9uIj9SLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpSO3JldHVybiB6KlV9LEYpfSxnLnNjYWxlVG89ZnVuY3Rpb24oTCxSLEYpe2cudHJhbnNmb3JtKEwsZnVuY3Rpb24oKXt2YXIgej10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxVPXRoaXMuX196b29tLFc9Rj09bnVsbD94KHopOnR5cGVvZiBGPT0iZnVuY3Rpb24iP0YuYXBwbHkodGhpcyxhcmd1bWVudHMpOkYsWj1VLmludmVydChXKSxydD10eXBlb2YgUj09ImZ1bmN0aW9uIj9SLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpSO3JldHVybiByKHkoXyhVLHJ0KSxXLFopLHosYSl9LEYpfSxnLnRyYW5zbGF0ZUJ5PWZ1bmN0aW9uKEwsUixGKXtnLnRyYW5zZm9ybShMLGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5fX3pvb20udHJhbnNsYXRlKHR5cGVvZiBSPT0iZnVuY3Rpb24iP1IuYXBwbHkodGhpcyxhcmd1bWVudHMpOlIsdHlwZW9mIEY9PSJmdW5jdGlvbiI/Ri5hcHBseSh0aGlzLGFyZ3VtZW50cyk6RiksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksYSl9KX0sZy50cmFuc2xhdGVUbz1mdW5jdGlvbihMLFIsRix6KXtnLnRyYW5zZm9ybShMLGZ1bmN0aW9uKCl7dmFyIFU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksVz10aGlzLl9fem9vbSxaPXo9PW51bGw/eChVKTp0eXBlb2Ygej09ImZ1bmN0aW9uIj96LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp6O3JldHVybiByKGpoLnRyYW5zbGF0ZShaWzBdLFpbMV0pLnNjYWxlKFcuaykudHJhbnNsYXRlKHR5cGVvZiBSPT0iZnVuY3Rpb24iPy1SLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotUix0eXBlb2YgRj09ImZ1bmN0aW9uIj8tRi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LUYpLFUsYSl9LHopfTtmdW5jdGlvbiBfKEwsUil7cmV0dXJuIFI9TWF0aC5tYXgob1swXSxNYXRoLm1pbihvWzFdLFIpKSxSPT09TC5rP0w6bmV3IFloKFIsTC54LEwueSl9ZnVuY3Rpb24geShMLFIsRil7dmFyIHo9UlswXS1GWzBdKkwuayxVPVJbMV0tRlsxXSpMLms7cmV0dXJuIHo9PT1MLngmJlU9PT1MLnk/TDpuZXcgWWgoTC5rLHosVSl9ZnVuY3Rpb24geChMKXtyZXR1cm5bKCtMWzBdWzBdKyArTFsxXVswXSkvMiwoK0xbMF1bMV0rICtMWzFdWzFdKS8yXX1mdW5jdGlvbiBiKEwsUixGKXtMLm9uKCJzdGFydC56b29tIixmdW5jdGlvbigpe1ModGhpcyxhcmd1bWVudHMpLnN0YXJ0KCl9KS5vbigiaW50ZXJydXB0Lnpvb20gZW5kLnpvb20iLGZ1bmN0aW9uKCl7Uyh0aGlzLGFyZ3VtZW50cykuZW5kKCl9KS50d2Vlbigiem9vbSIsZnVuY3Rpb24oKXt2YXIgej10aGlzLFU9YXJndW1lbnRzLFc9Uyh6LFUpLFo9dC5hcHBseSh6LFUpLHJ0PUY9PW51bGw/eChaKTp0eXBlb2YgRj09ImZ1bmN0aW9uIj9GLmFwcGx5KHosVSk6RixvdD1NYXRoLm1heChaWzFdWzBdLVpbMF1bMF0sWlsxXVsxXS1aWzBdWzFdKSxzdD16Ll9fem9vbSxTdD10eXBlb2YgUj09ImZ1bmN0aW9uIj9SLmFwcGx5KHosVSk6UixidD1sKHN0LmludmVydChydCkuY29uY2F0KG90L3N0LmspLFN0LmludmVydChydCkuY29uY2F0KG90L1N0LmspKTtyZXR1cm4gZnVuY3Rpb24oTXQpe2lmKE10PT09MSlNdD1TdDtlbHNle3ZhciBsdD1idChNdCksS3Q9b3QvbHRbMl07TXQ9bmV3IFloKEt0LHJ0WzBdLWx0WzBdKkt0LHJ0WzFdLWx0WzFdKkt0KX1XLnpvb20obnVsbCxNdCl9fSl9ZnVuY3Rpb24gUyhMLFIsRil7cmV0dXJuIUYmJkwuX196b29taW5nfHxuZXcgQyhMLFIpfWZ1bmN0aW9uIEMoTCxSKXt0aGlzLnRoYXQ9TCx0aGlzLmFyZ3M9Uix0aGlzLmFjdGl2ZT0wLHRoaXMuZXh0ZW50PXQuYXBwbHkoTCxSKSx0aGlzLnRhcHM9MH1DLnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4rK3RoaXMuYWN0aXZlPT09MSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24oTCxSKXtyZXR1cm4gdGhpcy5tb3VzZSYmTCE9PSJtb3VzZSImJih0aGlzLm1vdXNlWzFdPVIuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmTCE9PSJ0b3VjaCImJih0aGlzLnRvdWNoMFsxXT1SLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiZMIT09InRvdWNoIiYmKHRoaXMudG91Y2gxWzFdPVIuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1SLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybi0tdGhpcy5hY3RpdmU9PT0wJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihMKXtNcChuZXcgbSQoZyxMLHRoaXMudGhhdC5fX3pvb20pLGMuYXBwbHksYyxbTCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fTtmdW5jdGlvbiBQKCl7aWYoIWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybjt2YXIgTD1TKHRoaXMsYXJndW1lbnRzKSxSPXRoaXMuX196b29tLEY9TWF0aC5tYXgob1swXSxNYXRoLm1pbihvWzFdLFIuaypNYXRoLnBvdygyLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKSkpLHo9T28odGhpcyk7aWYoTC53aGVlbCkoTC5tb3VzZVswXVswXSE9PXpbMF18fEwubW91c2VbMF1bMV0hPT16WzFdKSYmKEwubW91c2VbMV09Ui5pbnZlcnQoTC5tb3VzZVswXT16KSksY2xlYXJUaW1lb3V0KEwud2hlZWwpO2Vsc2V7aWYoUi5rPT09RilyZXR1cm47TC5tb3VzZT1beixSLmludmVydCh6KV0sdXUodGhpcyksTC5zdGFydCgpfWkyKCksTC53aGVlbD1zZXRUaW1lb3V0KFUscCksTC56b29tKCJtb3VzZSIscih5KF8oUixGKSxMLm1vdXNlWzBdLEwubW91c2VbMV0pLEwuZXh0ZW50LGEpKTtmdW5jdGlvbiBVKCl7TC53aGVlbD1udWxsLEwuZW5kKCl9fWZ1bmN0aW9uIGsoKXtpZihofHwhZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuO3ZhciBMPVModGhpcyxhcmd1bWVudHMsITApLFI9SHQocXQudmlldykub24oIm1vdXNlbW92ZS56b29tIixXLCEwKS5vbigibW91c2V1cC56b29tIixaLCEwKSxGPU9vKHRoaXMpLHo9cXQuY2xpZW50WCxVPXF0LmNsaWVudFk7em0ocXQudmlldyksWjgoKSxMLm1vdXNlPVtGLHRoaXMuX196b29tLmludmVydChGKV0sdXUodGhpcyksTC5zdGFydCgpO2Z1bmN0aW9uIFcoKXtpZihpMigpLCFMLm1vdmVkKXt2YXIgcnQ9cXQuY2xpZW50WC16LG90PXF0LmNsaWVudFktVTtMLm1vdmVkPXJ0KnJ0K290Km90PmR9TC56b29tKCJtb3VzZSIscih5KEwudGhhdC5fX3pvb20sTC5tb3VzZVswXT1PbyhMLnRoYXQpLEwubW91c2VbMV0pLEwuZXh0ZW50LGEpKX1mdW5jdGlvbiBaKCl7Ui5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxGbShxdC52aWV3LEwubW92ZWQpLGkyKCksTC5lbmQoKX19ZnVuY3Rpb24gTygpe2lmKCEhZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBMPXRoaXMuX196b29tLFI9T28odGhpcyksRj1MLmludmVydChSKSx6PUwuayoocXQuc2hpZnRLZXk/LjU6MiksVT1yKHkoXyhMLHopLFIsRiksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksYSk7aTIoKSxzPjA/SHQodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKHMpLmNhbGwoYixVLFIpOkh0KHRoaXMpLmNhbGwoZy50cmFuc2Zvcm0sVSl9fWZ1bmN0aW9uIEQoKXtpZighIWUuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgTD1xdC50b3VjaGVzLFI9TC5sZW5ndGgsRj1TKHRoaXMsYXJndW1lbnRzLHF0LmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09PVIpLHosVSxXLFo7Zm9yKFo4KCksVT0wO1U8UjsrK1UpVz1MW1VdLFo9VHAodGhpcyxMLFcuaWRlbnRpZmllciksWj1bWix0aGlzLl9fem9vbS5pbnZlcnQoWiksVy5pZGVudGlmaWVyXSxGLnRvdWNoMD8hRi50b3VjaDEmJkYudG91Y2gwWzJdIT09WlsyXSYmKEYudG91Y2gxPVosRi50YXBzPTApOihGLnRvdWNoMD1aLHo9ITAsRi50YXBzPTErISF1KTt1JiYodT1jbGVhclRpbWVvdXQodSkpLHomJihGLnRhcHM8MiYmKHU9c2V0VGltZW91dChmdW5jdGlvbigpe3U9bnVsbH0sZikpLHV1KHRoaXMpLEYuc3RhcnQoKSl9fWZ1bmN0aW9uIEIoKXtpZighIXRoaXMuX196b29taW5nKXt2YXIgTD1TKHRoaXMsYXJndW1lbnRzKSxSPXF0LmNoYW5nZWRUb3VjaGVzLEY9Ui5sZW5ndGgseixVLFcsWjtmb3IoaTIoKSx1JiYodT1jbGVhclRpbWVvdXQodSkpLEwudGFwcz0wLHo9MDt6PEY7Kyt6KVU9Ult6XSxXPVRwKHRoaXMsUixVLmlkZW50aWZpZXIpLEwudG91Y2gwJiZMLnRvdWNoMFsyXT09PVUuaWRlbnRpZmllcj9MLnRvdWNoMFswXT1XOkwudG91Y2gxJiZMLnRvdWNoMVsyXT09PVUuaWRlbnRpZmllciYmKEwudG91Y2gxWzBdPVcpO2lmKFU9TC50aGF0Ll9fem9vbSxMLnRvdWNoMSl7dmFyIHJ0PUwudG91Y2gwWzBdLG90PUwudG91Y2gwWzFdLHN0PUwudG91Y2gxWzBdLFN0PUwudG91Y2gxWzFdLGJ0PShidD1zdFswXS1ydFswXSkqYnQrKGJ0PXN0WzFdLXJ0WzFdKSpidCxNdD0oTXQ9U3RbMF0tb3RbMF0pKk10KyhNdD1TdFsxXS1vdFsxXSkqTXQ7VT1fKFUsTWF0aC5zcXJ0KGJ0L010KSksVz1bKHJ0WzBdK3N0WzBdKS8yLChydFsxXStzdFsxXSkvMl0sWj1bKG90WzBdK1N0WzBdKS8yLChvdFsxXStTdFsxXSkvMl19ZWxzZSBpZihMLnRvdWNoMClXPUwudG91Y2gwWzBdLFo9TC50b3VjaDBbMV07ZWxzZSByZXR1cm47TC56b29tKCJ0b3VjaCIscih5KFUsVyxaKSxMLmV4dGVudCxhKSl9fWZ1bmN0aW9uIEkoKXtpZighIXRoaXMuX196b29taW5nKXt2YXIgTD1TKHRoaXMsYXJndW1lbnRzKSxSPXF0LmNoYW5nZWRUb3VjaGVzLEY9Ui5sZW5ndGgseixVO2ZvcihaOCgpLGgmJmNsZWFyVGltZW91dChoKSxoPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtoPW51bGx9LGYpLHo9MDt6PEY7Kyt6KVU9Ult6XSxMLnRvdWNoMCYmTC50b3VjaDBbMl09PT1VLmlkZW50aWZpZXI/ZGVsZXRlIEwudG91Y2gwOkwudG91Y2gxJiZMLnRvdWNoMVsyXT09PVUuaWRlbnRpZmllciYmZGVsZXRlIEwudG91Y2gxO2lmKEwudG91Y2gxJiYhTC50b3VjaDAmJihMLnRvdWNoMD1MLnRvdWNoMSxkZWxldGUgTC50b3VjaDEpLEwudG91Y2gwKUwudG91Y2gwWzFdPXRoaXMuX196b29tLmludmVydChMLnRvdWNoMFswXSk7ZWxzZSBpZihMLmVuZCgpLEwudGFwcz09PTIpe3ZhciBXPUh0KHRoaXMpLm9uKCJkYmxjbGljay56b29tIik7VyYmVy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX1yZXR1cm4gZy53aGVlbERlbHRhPWZ1bmN0aW9uKEwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBMPT0iZnVuY3Rpb24iP0w6TzUoK0wpLGcpOm59LGcuZmlsdGVyPWZ1bmN0aW9uKEwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBMPT0iZnVuY3Rpb24iP0w6TzUoISFMKSxnKTplfSxnLnRvdWNoYWJsZT1mdW5jdGlvbihMKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10eXBlb2YgTD09ImZ1bmN0aW9uIj9MOk81KCEhTCksZyk6aX0sZy5leHRlbnQ9ZnVuY3Rpb24oTCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIEw9PSJmdW5jdGlvbiI/TDpPNShbWytMWzBdWzBdLCtMWzBdWzFdXSxbK0xbMV1bMF0sK0xbMV1bMV1dXSksZyk6dH0sZy5zY2FsZUV4dGVudD1mdW5jdGlvbihMKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ob1swXT0rTFswXSxvWzFdPStMWzFdLGcpOltvWzBdLG9bMV1dfSxnLnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbihMKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYVswXVswXT0rTFswXVswXSxhWzFdWzBdPStMWzFdWzBdLGFbMF1bMV09K0xbMF1bMV0sYVsxXVsxXT0rTFsxXVsxXSxnKTpbW2FbMF1bMF0sYVswXVsxXV0sW2FbMV1bMF0sYVsxXVsxXV1dfSxnLmNvbnN0cmFpbj1mdW5jdGlvbihMKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1MLGcpOnJ9LGcuZHVyYXRpb249ZnVuY3Rpb24oTCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9K0wsZyk6c30sZy5pbnRlcnBvbGF0ZT1mdW5jdGlvbihMKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1MLGcpOmx9LGcub249ZnVuY3Rpb24oKXt2YXIgTD1jLm9uLmFwcGx5KGMsYXJndW1lbnRzKTtyZXR1cm4gTD09PWM/ZzpMfSxnLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24oTCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9KEw9K0wpKkwsZyk6TWF0aC5zcXJ0KGQpfSxnfXZhciBxM3Q9RWUoT2UoKSwxKTt2YXIgUTg9Y2xhc3MgZXh0ZW5kcyBicHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZXhwZXJpbWVudHM9W119bG9hZCgpe2xldCB0PXZlKCkuZXhwZXJpbWVudHMoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4ocj0+e3EzdC5pc0VxdWFsKHRoaXMuX2V4cGVyaW1lbnRzLHIpfHwodGhpcy5fZXhwZXJpbWVudHM9cix0aGlzLmVtaXRDaGFuZ2UoKSl9KX1nZXRFeHBlcmltZW50cygpe3JldHVybiB0aGlzLl9leHBlcmltZW50cy5zbGljZSgpfX0sdFI9bmV3IFE4O3ZhciB0NWU9e2dvb2dsZVN0YW5kYXJkOlsiI2RiNDQzNyIsIiNmZjcwNDMiLCIjZjRiNDAwIiwiIzBmOWQ1OCIsIiMwMDc5NmIiLCIjMDBhY2MxIiwiIzQyODVmNCIsIiM1YzZiYzAiLCIjYWI0N2JjIl0sZ29vZ2xlQ29vbDpbIiM5ZTlkMjQiLCIjMGY5ZDU4IiwiIzAwNzk2YiIsIiMwMGFjYzEiLCIjNDI4NWY0IiwiIzVjNmJjMCIsIiM2MDdkOGIiXSxnb29nbGVXYXJtOlsiIzc5NTU0OCIsIiNhYjQ3YmMiLCIjZjA2MjkyIiwiI2MyMTg1YiIsIiNkYjQ0MzciLCIjZmY3MDQzIiwiI2Y0YjQwMCJdLGdvb2dsZUNvbG9yQmxpbmRBc3Npc3Q6WyIjZmY3MDQzIiwiIzAwQUNDMSIsIiNBQjQ3QkMiLCIjMkE1NkM2IiwiIzBiODA0MyIsIiNGN0NCNEQiLCIjYzBjYTMzIiwiIzVlMzViMSIsIiNBNTI3MTQiXSx0ZW5zb3Jib2FyZENvbG9yQmxpbmRBc3Npc3Q6WyIjZmY3MDQzIiwiIzAwNzdiYiIsIiNjYzMzMTEiLCIjMzNiYmVlIiwiI2VlMzM3NyIsIiMwMDk5ODgiLCIjYmJiYmJiIl0sY29sb3JCbGluZEFzc2lzdDE6WyIjNDQ3N2FhIiwiIzQ0YWFhYSIsIiNhYWFhNDQiLCIjYWE3NzQ0IiwiI2FhNDQ1NSIsIiNhYTQ0ODgiXSxjb2xvckJsaW5kQXNzaXN0MjpbIiM4OGNjZWUiLCIjNDRhYTk5IiwiIzExNzczMyIsIiM5OTk5MzMiLCIjZGRjYzc3IiwiI2NjNjY3NyIsIiM4ODIyNTUiLCIjYWE0NDk5Il0sY29sb3JCbGluZEFzc2lzdDM6WyIjMzMyMjg4IiwiIzY2OTljYyIsIiM4OGNjZWUiLCIjNDRhYTk5IiwiIzExNzczMyIsIiM5OTk5MzMiLCIjZGRjYzc3IiwiI2NjNjY3NyIsIiNhYTQ0NjYiLCIjODgyMjU1IiwiIzY2MTEwMCIsIiNhYTQ0OTkiXSxjb2xvckJsaW5kQXNzaXN0NDpbIiM0NDc3YWEiLCIjNjZjY2VlIiwiIzIyODgzMyIsIiNjY2JiNDQiLCIjZWU2Njc3IiwiI2FhMzM3NyIsIiNiYmJiYmIiXSxjb2xvckJsaW5kQXNzaXN0NTpbIiNGRjZEQjYiLCIjOTIwMDAwIiwiIzkyNDkwMCIsIiNEQkQxMDAiLCIjMjRGRjI0IiwiIzAwNkREQiIsIiM0OTAwOTIiXSxtbGRhc2g6WyIjRTQ3RUFEIiwiI0Y0NjQwRCIsIiNGQUEzMDAiLCIjRjVFNjM2IiwiIzAwQTA3NyIsIiMwMDc3QjgiLCIjMDBCN0VEIl19LGVSPXQ1ZS50ZW5zb3Jib2FyZENvbG9yQmxpbmRBc3Npc3Q7dmFyIGckPWNsYXNze2NvbnN0cnVjdG9yKHQ9ZVIpe3RoaXMucGFsZXR0ZT10LHRoaXMuaWRlbnRpZmllcnM9WmkoKX1zZXREb21haW4odCl7cmV0dXJuIHRoaXMuaWRlbnRpZmllcnM9WmkoKSx0LmZvckVhY2goKHIsbik9Pnt0aGlzLmlkZW50aWZpZXJzLnNldChyLHRoaXMucGFsZXR0ZVtuJXRoaXMucGFsZXR0ZS5sZW5ndGhdKX0pLHRoaXN9Z2V0Q29sb3IodCl7aWYoIXRoaXMuaWRlbnRpZmllcnMuaGFzKHQpKXRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7dH0gd2FzIG5vdCBpbiB0aGUgZG9tYWluLmApO3JldHVybiB0aGlzLmlkZW50aWZpZXJzLmdldCh0KX19O2Z1bmN0aW9uIEczdChlLHQpe2xldCByPW5ldyBnJDtmdW5jdGlvbiBuKCl7ci5zZXREb21haW4odCgpKX1yZXR1cm4gZS5hZGRMaXN0ZW5lcihuKSxuKCksaT0+ci5nZXRDb2xvcihpKX12YXIgZm49RzN0KHdwLCgpPT53cC5nZXRSdW5zKCkpLHRRcj1HM3QodFIsKCk9PnRSLmdldEV4cGVyaW1lbnRzKCkubWFwKCh7bmFtZTplfSk9PmUpKTt2YXIgb2c9RWUoT2UoKSwxKTtncyh7bW9kdWxlTmFtZToicnVuLWNvbG9yLXN0eWxlIixzdHlsZUNvbnRlbnQ6YAogICAgW2NvbG9yLWNsYXNzPSdsaWdodC1ibHVlJ10gcGFwZXItY2hlY2tib3ggewogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTsKICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItbGlnaHQtYmx1ZS01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItbGlnaHQtYmx1ZS05MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwKTsKICAgIH0KICAgIFtjb2xvci1jbGFzcz0ncmVkJ10gcGFwZXItY2hlY2tib3ggewogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1yZWQtNTAwKTsKICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApOwogICAgfQogICAgW2NvbG9yLWNsYXNzPSdncmVlbiddIHBhcGVyLWNoZWNrYm94IHsKICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tOTAwKTsKICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1ncmVlbi05MDApOwogICAgfQogICAgW2NvbG9yLWNsYXNzPSdwdXJwbGUnXSBwYXBlci1jaGVja2JveCB7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTUwMCk7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXB1cnBsZS01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7CiAgICB9CiAgICBbY29sb3ItY2xhc3M9J3RlYWwnXSBwYXBlci1jaGVja2JveCB7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci10ZWFsLTUwMCk7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci10ZWFsLTkwMCk7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC05MDApOwogICAgfQogICAgW2NvbG9yLWNsYXNzPSdwaW5rJ10gcGFwZXItY2hlY2tib3ggewogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTsKICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcGluay01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcGluay05MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstOTAwKTsKICAgIH0KICAgIFtjb2xvci1jbGFzcz0nb3JhbmdlJ10gcGFwZXItY2hlY2tib3ggewogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1vcmFuZ2UtNTAwKTsKICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApOwogICAgfQogICAgW2NvbG9yLWNsYXNzPSdicm93biddIHBhcGVyLWNoZWNrYm94IHsKICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tOTAwKTsKICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1icm93bi05MDApOwogICAgfQogICAgW2NvbG9yLWNsYXNzPSdpbmRpZ28nXSBwYXBlci1jaGVja2JveCB7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWluZGlnby01MDApOwogICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7CiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7CiAgICB9CiAgYH0pO3ZhciBpbD1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5uYW1lcz1bXSx0aGlzLmNvbG9yaW5nPXtnZXRDb2xvcjooKT0+IiJ9LHRoaXMucmVnZXg9IiIsdGhpcy5zZWxlY3Rpb25TdGF0ZT17fSx0aGlzLm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ9NDAsdGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2U9dGhpcy5fZGVib3VuY2VkUmVnZXhDaGFuZ2VJbXBsKCl9X2RlYm91bmNlZFJlZ2V4Q2hhbmdlSW1wbCgpe3ZhciB0PW9nLmRlYm91bmNlKHI9Pnt0aGlzLnJlZ2V4PXJ9LDE1MCx7bGVhZGluZzohMX0pO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXRoaXMuJCQoIiNuYW1lcy1yZWdleCIpLnZhbHVlO3I9PSIiP3RoaXMuYXN5bmMoKCk9Pnt0aGlzLnJlZ2V4PXJ9LDMwKTp0KHIpfX1nZXQgX3JlZ2V4KCl7dmFyIHQ9dGhpcy5yZWdleDt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCl9Y2F0Y2gocil7cmV0dXJuIG51bGx9fV9zZXRJc29sYXRvckljb24oKXt2YXIgdCxyPXRoaXMuc2VsZWN0aW9uU3RhdGUsbj1vZy5maWx0ZXIob2cudmFsdWVzKHIpKS5sZW5ndGgsaT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCgodD10aGlzLnJvb3QpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5xdWVyeVNlbGVjdG9yQWxsKCIuaXNvbGF0b3IiKSk7aS5mb3JFYWNoKGZ1bmN0aW9uKG8pe249PT0xJiZyW28ubmFtZV0/by5pY29uPSJyYWRpby1idXR0b24tY2hlY2tlZCI6by5pY29uPSJyYWRpby1idXR0b24tdW5jaGVja2VkIn0pfWNvbXB1dGVOYW1lc01hdGNoaW5nUmVnZXgodCxyKXtsZXQgbj10aGlzLl9yZWdleDtyZXR1cm4gbj90aGlzLm5hbWVzLmZpbHRlcihpPT5uLnRlc3QoaSkpOnRoaXMubmFtZXN9Y29tcHV0ZU91dFNlbGVjdGVkKHQscil7dmFyIG49dGhpcy5zZWxlY3Rpb25TdGF0ZSxpPXRoaXMubWF4TmFtZXNUb0VuYWJsZUJ5RGVmYXVsdCxvPXRoaXMubmFtZXNNYXRjaGluZ1JlZ2V4Lmxlbmd0aDw9aTtyZXR1cm4gdGhpcy5uYW1lc01hdGNoaW5nUmVnZXguZmlsdGVyKGE9Pm5bYV09PW51bGw/bzpuW2FdKX1zeW5jaHJvbml6ZUNvbG9ycyh0KXt2YXIgcixuLGksbzt0aGlzLl9zZXRJc29sYXRvckljb24oKSwoKG49KHI9dGhpcy5yb290KT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIucXVlcnlTZWxlY3RvckFsbCgicGFwZXItY2hlY2tib3giKSkhPT1udWxsJiZuIT09dm9pZCAwP246W10pLmZvckVhY2gobD0+e2xldCBjPXRoaXMuY29sb3JpbmcuZ2V0Q29sb3IobC5uYW1lKTtsLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciI6YywiLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvciI6YywiLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IiOmMsIi0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvciI6Y30pfSksKChvPShpPXRoaXMucm9vdCk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLnF1ZXJ5U2VsZWN0b3JBbGwoIi5pc29sYXRvciIpKSE9PW51bGwmJm8hPT12b2lkIDA/bzpbXSkuZm9yRWFjaChsPT57bGV0IGM9dGhpcy5jb2xvcmluZy5nZXRDb2xvcihsLm5hbWUpO2wuc3R5bGUuY29sb3I9Y30pLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnVwZGF0ZVN0eWxlcygpfSl9X2lzb2xhdGVOYW1lKHQpe3ZhciByPXQudGFyZ2V0Lm5hbWUsbj17fTt0aGlzLm5hbWVzLmZvckVhY2goZnVuY3Rpb24oaSl7bltpXT1pPT1yfSksdGhpcy5zZWxlY3Rpb25TdGF0ZT1ufV9jaGVja2JveENoYW5nZSh0KXt2YXIgcj10LnRhcmdldDtsZXQgbj1vZy5jbG9uZSh0aGlzLnNlbGVjdGlvblN0YXRlKTtuW3IubmFtZV09ci5jaGVja2VkLHRoaXMuc2VsZWN0aW9uU3RhdGU9bn1faXNDaGVja2VkKHQscil7cmV0dXJuIHRoaXMub3V0U2VsZWN0ZWQuaW5kZXhPZih0KSE9LTF9dG9nZ2xlQWxsKCl7bGV0IHQ9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXguc29tZShuPT50aGlzLm91dFNlbGVjdGVkLmluY2x1ZGVzKG4pKSxyPXt9O3RoaXMubmFtZXMuZm9yRWFjaChuPT57cltuXT0hdH0pLHRoaXMuc2VsZWN0aW9uU3RhdGU9cn19O2lsLnRlbXBsYXRlPVFgCiAgICA8c3R5bGUgaW5jbHVkZT0ic2Nyb2xsYmFyLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InJ1bi1jb2xvci1zdHlsZSI+PC9zdHlsZT4KCiAgICA8cGFwZXItaW5wdXQKICAgICAgaWQ9Im5hbWVzLXJlZ2V4IgogICAgICBuby1sYWJlbC1mbG9hdD0iIgogICAgICBsYWJlbD0iV3JpdGUgYSByZWdleCB0byBmaWx0ZXIgcnVucyIKICAgICAgdmFsdWU9IltbcmVnZXhdXSIKICAgICAgb24tYmluZC12YWx1ZS1jaGFuZ2VkPSJfZGVib3VuY2VkUmVnZXhDaGFuZ2UiCiAgICA+PC9wYXBlci1pbnB1dD4KICAgIDxkaXYgaWQ9Im91dGVyLWNvbnRhaW5lciIgY2xhc3M9InNjcm9sbGJhciI+CiAgICAgIDx0ZW1wbGF0ZQogICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgIGl0ZW1zPSJbW25hbWVzTWF0Y2hpbmdSZWdleF1dIgogICAgICAgIG9uLWRvbS1jaGFuZ2U9InN5bmNocm9uaXplQ29sb3JzIgogICAgICA+CiAgICAgICAgPGRpdiBjbGFzcz0ibmFtZS1yb3ciPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iaWNvbi1jb250YWluZXIgY2hlY2tib3gtY29udGFpbmVyIHZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgY2xhc3M9ImNoZWNrYm94IHZlcnRpY2FsLWFsaWduLWNlbnRlciIKICAgICAgICAgICAgICBpZCQ9ImNoZWNrYm94LVtbaXRlbV1dIgogICAgICAgICAgICAgIG5hbWU9IltbaXRlbV1dIgogICAgICAgICAgICAgIGNoZWNrZWQkPSJbW19pc0NoZWNrZWQoaXRlbSwgc2VsZWN0aW9uU3RhdGUuKildXSIKICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il9jaGVja2JveENoYW5nZSIKICAgICAgICAgICAgPjwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9Imljb24tY29udGFpbmVyIGlzb2xhdG9yLWNvbnRhaW5lciB2ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIiCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICAgIGljb249InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQiCiAgICAgICAgICAgICAgY2xhc3M9Imlzb2xhdG9yIHZlcnRpY2FsLWFsaWduLWNlbnRlciIKICAgICAgICAgICAgICBvbi10YXA9Il9pc29sYXRlTmFtZSIKICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW1dXSIKICAgICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Iml0ZW0tbGFiZWwtY29udGFpbmVyIj4KICAgICAgICAgICAgPHNwYW4+W1tpdGVtXV08L3NwYW4+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICB9CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgICAgI291dGVyLWNvbnRhaW5lciB7CiAgICAgICAgY29udGFpbjogY29udGVudDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KICAgICAgLm5hbWUtcm93IHsKICAgICAgICBjb250YWluOiBjb250ZW50OwogICAgICAgIHBhZGRpbmctdG9wOiA1cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDVweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsgLyogbWFrZXMgd3JhcHBpbmcgb2YgaHlwZXJwYXJhbSBzdHJpbmdzIGJldHRlciAqLwogICAgICB9CiAgICAgIC5pY29uLWNvbnRhaW5lciB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICB9CiAgICAgIC5jaGVja2JveCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICB9CiAgICAgIC5pc29sYXRvciB7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHBhZGRpbmc6IDBweDsKICAgICAgfQogICAgICAuaXNvbGF0b3ItY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDZweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7CiAgICAgIH0KICAgICAgLmNoZWNrYm94LWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgIH0KICAgICAgLml0ZW0tbGFiZWwtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgd2lkdGg6IDBweDsgLyogaGFjayB0byBnZXQgdGhlIGZsZXgtZ3JvdyB0byB3b3JrIHByb3Blcmx5ICovCiAgICAgIH0KICAgICAgLnRvb2x0aXAtdmFsdWUtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAudmVydGljYWwtYWxpZ24tY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CiAgICAgIC52ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIgLnZlcnRpY2FsLWFsaWduLWNlbnRlciB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CiAgICAgIC52ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIgLnZlcnRpY2FsLWFsaWduLXRvcCB7CiAgICAgICAgYWxpZ24tc2VsZjogc3RhcnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0saWwucHJvdG90eXBlLCJuYW1lcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxpbC5wcm90b3R5cGUsImNvbG9yaW5nIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxpbC5wcm90b3R5cGUsInJlZ2V4Iix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXksY29tcHV0ZWQ6ImNvbXB1dGVOYW1lc01hdGNoaW5nUmVnZXgobmFtZXMuKiwgX3JlZ2V4KSJ9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxpbC5wcm90b3R5cGUsIm5hbWVzTWF0Y2hpbmdSZWdleCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0saWwucHJvdG90eXBlLCJzZWxlY3Rpb25TdGF0ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5LG5vdGlmeTohMCxjb21wdXRlZDoiY29tcHV0ZU91dFNlbGVjdGVkKG5hbWVzTWF0Y2hpbmdSZWdleC4qLCBzZWxlY3Rpb25TdGF0ZS4qKSJ9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxpbC5wcm90b3R5cGUsIm91dFNlbGVjdGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLGlsLnByb3RvdHlwZSwibWF4TmFtZXNUb0VuYWJsZUJ5RGVmYXVsdCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxpbC5wcm90b3R5cGUsIl9kZWJvdW5jZWRSZWdleENoYW5nZSIsdm9pZCAwKTtFKFtSdCgicmVnZXgiKSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxpbC5wcm90b3R5cGUsIl9yZWdleCIsbnVsbCk7RShbQnQoInNlbGVjdGlvblN0YXRlIiwibmFtZXMiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlsLnByb3RvdHlwZSwiX3NldElzb2xhdG9ySWNvbiIsbnVsbCk7aWw9RShbeXQoInRmLW11bHRpLWNoZWNrYm94IildLGlsKTt2YXIgbzI9Y2xhc3MgZXh0ZW5kcyBtdHtnZXQgX3BhcnRzKCl7dmFyIHQ9dGhpcy52YWx1ZSxyPXRoaXMuZGVsaW1pdGVyUGF0dGVybjtsZXQgbj1bXTtmb3IoOzspe2xldCBpPW5ldyBSZWdFeHAociwiZyIpO2lmKGkudGVzdCh0KSxpLmxhc3RJbmRleD09PTApe24ucHVzaCh0KTticmVha31lbHNlIG4ucHVzaCh0LnNsaWNlKDAsaS5sYXN0SW5kZXgpKSx0PXQuc2xpY2UoaS5sYXN0SW5kZXgpfXJldHVybiBufX07bzIudGVtcGxhdGU9UWAKICAgIDwhLS0KICAgICAgVGhpcyB1Z2x5IGZvcm1hdHRpbmcgaXMgcmVxdWlyZWQgdG8gcHJldmVudCBzcGFjZXMgZnJvbSBzbGlwcGluZwogICAgICBpbnRvIHRoZSBIVE1MLgogICAgLS0+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19wYXJ0c11dIiBhcz0icGFydCIKICAgICAgPltbcGFydF1dPHdicgogICAgLz48L3RlbXBsYXRlPgogIGA7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sbzIucHJvdG90eXBlLCJ2YWx1ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxvMi5wcm90b3R5cGUsImRlbGltaXRlclBhdHRlcm4iLHZvaWQgMCk7RShbUnQoInZhbHVlIiwiZGVsaW1pdGVyUGF0dGVybiIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbzIucHJvdG90eXBlLCJfcGFydHMiLG51bGwpO28yPUUoW3l0KCJ0Zi13YnItc3RyaW5nIildLG8yKTt2YXIgcGM9Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucnVuU2VsZWN0aW9uU3RhdGU9RFcoInJ1blNlbGVjdGlvblN0YXRlIix7ZGVmYXVsdFZhbHVlOnt9fSkuY2FsbCh0aGlzKSx0aGlzLnJlZ2V4SW5wdXQ9eV8oInJlZ2V4SW5wdXQiLHtkZWZhdWx0VmFsdWU6IiJ9KS5jYWxsKHRoaXMpLHRoaXMuX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGg9MjUwLHRoaXMuX2RhdGFMb2NhdGlvbkRlbGltaXRlclBhdHRlcm49IlsvPV8sLV0iLHRoaXMuY29sb3Jpbmc9e2dldENvbG9yOmZufSx0aGlzLl9zdG9yZVJ1blNlbGVjdGlvblN0YXRlPU9XKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pLHRoaXMuX3JlZ2V4T2JzZXJ2ZXI9dl8oInJlZ2V4SW5wdXQiLHtkZWZhdWx0VmFsdWU6IiJ9KX1hdHRhY2hlZCgpe3RoaXMuX3J1blN0b3JlTGlzdGVuZXI9d3AuYWRkTGlzdGVuZXIoKCk9Pnt0aGlzLnNldCgicnVucyIsd3AuZ2V0UnVucygpKX0pLHRoaXMuc2V0KCJydW5zIix3cC5nZXRSdW5zKCkpLHRoaXMuX2VudlN0b3JlTGlzdGVuZXI9bmIuYWRkTGlzdGVuZXIoKCk9Pnt0aGlzLnNldCgiZGF0YUxvY2F0aW9uIixuYi5nZXREYXRhTG9jYXRpb24oKSl9KSx0aGlzLnNldCgiZGF0YUxvY2F0aW9uIixuYi5nZXREYXRhTG9jYXRpb24oKSl9ZGV0YWNoZWQoKXt3cC5yZW1vdmVMaXN0ZW5lckJ5S2V5KHRoaXMuX3J1blN0b3JlTGlzdGVuZXIpLG5iLnJlbW92ZUxpc3RlbmVyQnlLZXkodGhpcy5fZW52U3RvcmVMaXN0ZW5lcil9X3RvZ2dsZUFsbCgpe3RoaXMuJC5tdWx0aUNoZWNrYm94LnRvZ2dsZUFsbCgpfWdldCBfY2xpcHBlZERhdGFMb2NhdGlvbigpe3ZhciB0PXRoaXMuZGF0YUxvY2F0aW9uLHI9dGhpcy5fZGF0YUxvY2F0aW9uQ2xpcExlbmd0aDtpZih0IT09dm9pZCAwKXJldHVybiB0Lmxlbmd0aD5yP3Quc3Vic3RyaW5nKDAscik6dH1fb3BlbkRhdGFMb2NhdGlvbkRpYWxvZyh0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy4kJCgiI2RhdGEtbG9jYXRpb24tZGlhbG9nIikub3BlbigpfV9zaG91bGRTaG93RXhwYW5kRGF0YUxvY2F0aW9uQnV0dG9uKHQscil7cmV0dXJuIHQmJnQubGVuZ3RoPnJ9fTtwYy50ZW1wbGF0ZT1RYAogICAgPHBhcGVyLWRpYWxvZyB3aXRoLWJhY2tkcm9wPSIiIGlkPSJkYXRhLWxvY2F0aW9uLWRpYWxvZyI+CiAgICAgIDxoMj5EYXRhIExvY2F0aW9uPC9oMj4KICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICB2YWx1ZT0iW1tkYXRhTG9jYXRpb25dXSIKICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICA+CiAgICAgIDwvdGYtd2JyLXN0cmluZwogICAgPjwvcGFwZXItZGlhbG9nPgogICAgPGRpdiBpZD0idG9wLXRleHQiPgogICAgICA8aDMgaWQ9InRvb2x0aXAtaGVscCIgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5SdW5zPC9oMz4KICAgIDwvZGl2PgogICAgPHRmLW11bHRpLWNoZWNrYm94CiAgICAgIGlkPSJtdWx0aUNoZWNrYm94IgogICAgICBuYW1lcz0iW1tydW5zXV0iCiAgICAgIHNlbGVjdGlvbi1zdGF0ZT0ie3tydW5TZWxlY3Rpb25TdGF0ZX19IgogICAgICBvdXQtc2VsZWN0ZWQ9Int7c2VsZWN0ZWRSdW5zfX0iCiAgICAgIHJlZ2V4PSJ7e3JlZ2V4SW5wdXR9fSIKICAgICAgY29sb3Jpbmc9IltbY29sb3JpbmddXSIKICAgID48L3RmLW11bHRpLWNoZWNrYm94PgogICAgPHBhcGVyLWJ1dHRvbiBjbGFzcz0ieC1idXR0b24iIGlkPSJ0b2dnbGUtYWxsIiBvbi10YXA9Il90b2dnbGVBbGwiPgogICAgICBUb2dnbGUgQWxsIFJ1bnMKICAgIDwvcGFwZXItYnV0dG9uPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2RhdGFMb2NhdGlvbl1dIj4KICAgICAgPGRpdiBpZD0iZGF0YS1sb2NhdGlvbiI+CiAgICAgICAgPHRmLXdici1zdHJpbmcKICAgICAgICAgIHZhbHVlPSJbW19jbGlwcGVkRGF0YUxvY2F0aW9uXV0iCiAgICAgICAgICBkZWxpbWl0ZXItcGF0dGVybj0iW1tfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybl1dIgogICAgICAgID48L3RmLXdici1zdHJpbmcKICAgICAgICA+PCEtLQogICAgICAgICAgV2UgdXNlIEhUTUwgY29tbWVudHMgdG8gcmVtb3ZlIHNwYWNlcyBiZWZvcmUgdGhlIGVsbGlwc2lzLgogICAgICAgIC0tPjx0ZW1wbGF0ZQogICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgIGlmPSJbW19zaG91bGRTaG93RXhwYW5kRGF0YUxvY2F0aW9uQnV0dG9uKGRhdGFMb2NhdGlvbiwgX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgpXV0iCiAgICAgICAgICA+PCEtLQogICAgICAgICAgLS0+PGEgaHJlZj0iIiBvbi1jbGljaz0iX29wZW5EYXRhTG9jYXRpb25EaWFsb2ciPuKApjwvYT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgICAjdG9wLXRleHQgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgICB0Zi13YnItc3RyaW5nIHsKICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIHRmLW11bHRpLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC54LWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgfQogICAgICAjdG9vbHRpcC1oZWxwIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KICAgICAgcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgfQogICAgICAjZGF0YS1sb2NhdGlvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luOiA1cHggMCAwIDA7CiAgICAgICAgbWF4LXdpZHRoOiAyODhweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZSJ9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scGMucHJvdG90eXBlLCJydW5TZWxlY3Rpb25TdGF0ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX3JlZ2V4T2JzZXJ2ZXIifSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHBjLnByb3RvdHlwZSwicmVnZXhJbnB1dCIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLHBjLnByb3RvdHlwZSwic2VsZWN0ZWRSdW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxwYy5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHBjLnByb3RvdHlwZSwiZGF0YUxvY2F0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLHBjLnByb3RvdHlwZSwiX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scGMucHJvdG90eXBlLCJfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxwYy5wcm90b3R5cGUsImNvbG9yaW5nIix2b2lkIDApO0UoW1J0KCJkYXRhTG9jYXRpb24iLCJfZGF0YUxvY2F0aW9uQ2xpcExlbmd0aCIpLHcoImRlc2lnbjp0eXBlIixPYmplY3QpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHBjLnByb3RvdHlwZSwiX2NsaXBwZWREYXRhTG9jYXRpb24iLG51bGwpO3BjPUUoW3l0KCJ0Zi1ydW5zLXNlbGVjdG9yIildLHBjKTt2YXIgYW49Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmNhbmNlbGxhdGlvbkNvdW50PTB9Y2FuY2VsbGFibGUodCl7bGV0IHI9dGhpcy5jYW5jZWxsYXRpb25Db3VudDtyZXR1cm4gbj0+e2xldCBpPXRoaXMuY2FuY2VsbGF0aW9uQ291bnQhPT1yO3JldHVybiB0KHt2YWx1ZTpuLGNhbmNlbGxlZDppfSl9fWNhbmNlbEFsbCgpe3RoaXMuY2FuY2VsbGF0aW9uQ291bnQrK319O3ZhciB6NT1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5odG1sPSIifWdldCBzYW5pdGl6ZWRIdG1sKCl7cmV0dXJuIHRoaXMuaHRtbH1hdHRhY2hlZCgpe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQubWFya2Rvd24sITApfSl9fTt6NS50ZW1wbGF0ZT1RYAogICAgPGRpdiBpZD0ibWFya2Rvd24iIGlubmVyLWgtdC1tLWw9Iltbc2FuaXRpemVkSHRtbF1dIj48L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLyoKICAgICAgICogUmVkdWNlIHRvcG1vc3QgYW5kIGJvdHRvbW1vc3QgbWFyZ2lucyBmcm9tIDE2cHggdG8gMC4zZW0gKHJlbmRlcnMKICAgICAgICogYXQgYWJvdXQgNC44cHgpIHRvIGtlZXAgdGhlIGxheW91dCBjb21wYWN0LiBUaGlzIGltcHJvdmVzIHRoZQogICAgICAgKiBhcHBlYXJhbmNlIHdoZW4gdGhlcmUgaXMgb25seSBvbmUgbGluZSBvZiB0ZXh0OyBzdGFuZGFyZCBNYXJrZG93bgogICAgICAgKiByZW5kZXJlcnMgd2lsbCBzdGlsbCBpbmNsdWRlIGEgXGA8cD5cYCBlbGVtZW50LgogICAgICAgKgogICAgICAgKiBCeSB0YXJnZXRpbmcgb25seSB0aGUgdG9wLWxldmVsLCBleHRyZW1hbCBlbGVtZW50cywgd2UgcHJlc2VydmUgYW55CiAgICAgICAqIGFjdHVhbCBwYXJhZ3JhcGggYnJlYWtzIGFuZCBvbmx5IGNoYW5nZSB0aGUgcGFkZGluZyBhZ2FpbnN0IHRoZQogICAgICAgKiBjb21wb25lbnQgZWRnZXMuCiAgICAgICAqLwogICAgICAjbWFya2Rvd24gPiBwOmZpcnN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tdG9wOiAwLjNlbTsKICAgICAgfQogICAgICAjbWFya2Rvd24gPiBwOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDAuM2VtOwogICAgICB9CgogICAgICAvKiBQbGVhc2FudCBzdHlsZXMgZm9yIE1hcmtkb3duIHRhYmxlcy4gKi8KICAgICAgI21hcmtkb3duIHRhYmxlIHsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CiAgICAgICNtYXJrZG93biB0YWJsZSB0aCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdGgsCiAgICAgICNtYXJrZG93biB0YWJsZSB0ZCB7CiAgICAgICAgcGFkZGluZzogNnB4IDEzcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGItdWktYm9yZGVyLCAjZGZlMmU1KTsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdHIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXRiLXVpLWJvcmRlciwgI2M2Y2JkMSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx6NS5wcm90b3R5cGUsImh0bWwiLHZvaWQgMCk7RShbUnQoImh0bWwiKSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx6NS5wcm90b3R5cGUsInNhbml0aXplZEh0bWwiLG51bGwpO3o1PUUoW3l0KCJ0Zi1tYXJrZG93bi12aWV3IildLHo1KTtncyh7bW9kdWxlTmFtZToidGYtY2FyZC1oZWFkaW5nLXN0eWxlIixzdHlsZUNvbnRlbnQ6YAogICAgZmlnY2FwdGlvbiB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgIC8qKiBIb3Jpem9udGFsIGxpbmUgb2YgbGFiZWxzLiAqLwogICAgLmhlYWRpbmctcm93IHsKICAgICAgbWFyZ2luLXRvcDogLTRweDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgfQoKICAgIC8qKiBQaWVjZSBvZiB0ZXh0IGluIHRoZSBmaWd1cmUgY2FwdGlvbi4gKi8KICAgIC5oZWFkaW5nLWxhYmVsIHsKICAgICAgZmxleC1ncm93OiAxOwogICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgfQoKICAgIC8qKiBNYWtlcyBsYWJlbCBzaG93IG9uIHRoZSByaWdodC4gKi8KICAgIC5oZWFkaW5nLXJpZ2h0IHsKICAgICAgZmxleC1ncm93OiAwOwogICAgfQogIGB9KTtmdW5jdGlvbiBhMihlKXtyZXR1cm4gZT9lLnRvU3RyaW5nKCkucmVwbGFjZSgvR01ULVxkKyBcKChbXildKylcKS8sIiQxIik6IiJ9ZnVuY3Rpb24gVzN0KGUpe2xldCB0PXI1ZShlKTtyZXR1cm4gdD9NYXRoLnJvdW5kKCh0WzBdKjI5OSt0WzFdKjU4Nyt0WzJdKjExNCkvMWUzKT4xMjU/ImluaGVyaXQiOiIjZWVlIjoiaW5oZXJpdCJ9ZnVuY3Rpb24gcjVlKGUpe2lmKCFlKXJldHVybiBudWxsO2xldCB0PWUubWF0Y2goL14jKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pJC8pO2lmKCF0KXJldHVybiBudWxsO2lmKGUubGVuZ3RoPT00KWZvcih2YXIgcj0xO3I8PTM7cisrKXRbcl09dFtyXSt0W3JdO3JldHVybltwYXJzZUludCh0WzFdLDE2KSxwYXJzZUludCh0WzJdLDE2KSxwYXJzZUludCh0WzNdLDE2KV19dmFyIGRjPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuZGlzcGxheU5hbWU9bnVsbCx0aGlzLnRhZz1udWxsLHRoaXMucnVuPW51bGwsdGhpcy5kZXNjcmlwdGlvbj1udWxsLHRoaXMuY29sb3I9bnVsbH1fdXBkYXRlSGVhZGluZ1N0eWxlKCl7dGhpcy51cGRhdGVTdHlsZXMoeyItLXRmLWNhcmQtaGVhZGluZy1iYWNrZ3JvdW5kLWNvbG9yIjp0aGlzLl9ydW5CYWNrZ3JvdW5kLCItLXRmLWNhcmQtaGVhZGluZy1jb2xvciI6dGhpcy5fcnVuQ29sb3J9KX1fY29tcHV0ZVJ1bkJhY2tncm91bmQodCl7cmV0dXJuIHR8fCJub25lIn1fY29tcHV0ZVJ1bkNvbG9yKHQpe3JldHVybiBXM3QodCl9Z2V0IF9uYW1lTGFiZWwoKXt2YXIgdD10aGlzLmRpc3BsYXlOYW1lLHI9dGhpcy50YWc7cmV0dXJuIHR8fHJ8fCIifWdldCBfdGFnTGFiZWwoKXt2YXIgdD10aGlzLmRpc3BsYXlOYW1lLHI9dGhpcy50YWc7cmV0dXJuIHImJnIhPT10P3I6IiJ9X3RvZ2dsZURlc2NyaXB0aW9uRGlhbG9nKHQpe2xldCByPXRoaXMuJC5kZXNjcmlwdGlvbkRpYWxvZztyLnBvc2l0aW9uVGFyZ2V0PXQudGFyZ2V0LHIudG9nZ2xlKCl9fTtkYy50ZW1wbGF0ZT1RYAogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgPGZpZ2NhcHRpb24gY2xhc3M9ImNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbmFtZUxhYmVsXV0iPgogICAgICAgICAgICA8ZGl2IGl0ZW1wcm9wPSJuYW1lIiBjbGFzcz0iaGVhZGluZy1sYWJlbCBuYW1lIj5bW19uYW1lTGFiZWxdXTwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tydW5dXSI+CiAgICAgICAgICAgIDwhLS0gRXh0cmEgd3JhcHBpbmcgc3BhbiBuZWVkZWQgdG8gYXZvaWQgZmxleGJveCBibG9ja2lmaWNhdGlvbi4gLS0+CiAgICAgICAgICAgIDwhLS0gKHNlZSBmbGV4Ym94IHNwZWMsIHNlY3Rpb24gNCAiRmxleCBJdGVtcyIpIC0tPgogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICA8c3BhbgogICAgICAgICAgICAgICAgaXRlbXByb3A9InJ1biIKICAgICAgICAgICAgICAgIGlkPSJoZWFkaW5nLXJ1biIKICAgICAgICAgICAgICAgIGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQgcnVuIgogICAgICAgICAgICAgICAgPltbcnVuXV08L3NwYW4KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW190YWdMYWJlbF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgICAgdGFnOiA8c3BhbiBpdGVtcHJvcD0idGFnIj5bW190YWdMYWJlbF1dPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2ZpZ2NhcHRpb24+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tkZXNjcmlwdGlvbl1dIj4KICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgIGljb249ImluZm8iCiAgICAgICAgICBvbi10YXA9Il90b2dnbGVEZXNjcmlwdGlvbkRpYWxvZyIKICAgICAgICAgIHRpdGxlPSJTaG93IHN1bW1hcnkgZGVzY3JpcHRpb24iCiAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxwYXBlci1kaWFsb2cKICAgICAgICBpZD0iZGVzY3JpcHRpb25EaWFsb2ciCiAgICAgICAgbm8tb3ZlcmxhcD0iIgogICAgICAgIGhvcml6b250YWwtYWxpZ249ImF1dG8iCiAgICAgICAgdmVydGljYWwtYWxpZ249ImF1dG8iCiAgICAgID4KICAgICAgICA8cGFwZXItZGlhbG9nLXNjcm9sbGFibGU+CiAgICAgICAgICA8dGYtbWFya2Rvd24tdmlldyBodG1sPSJbW2Rlc2NyaXB0aW9uXV0iPjwvdGYtbWFya2Rvd24tdmlldz4KICAgICAgICA8L3BhcGVyLWRpYWxvZy1zY3JvbGxhYmxlPgogICAgICA8L3BhcGVyLWRpYWxvZz4KICAgIDwvZGl2PgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWNhcmQtaGVhZGluZy1zdHlsZSI+CiAgICAgIC5jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KICAgICAgLmNvbnRlbnQgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIH0KICAgICAgLm5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgfQogICAgICAucnVuIHsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIHBhZGRpbmc6IDFweCA0cHggMnB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIH0KICAgICAgcGFwZXItZGlhbG9nLXNjcm9sbGFibGUgewogICAgICAgIG1heC13aWR0aDogNjQwcHg7CiAgICAgIH0KICAgICAgI2hlYWRpbmctcnVuIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Zi1jYXJkLWhlYWRpbmctYmFja2dyb3VuZC1jb2xvcik7CiAgICAgICAgY29sb3I6IHZhcigtLXRmLWNhcmQtaGVhZGluZy1jb2xvcik7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkYy5wcm90b3R5cGUsImRpc3BsYXlOYW1lIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGRjLnByb3RvdHlwZSwidGFnIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGRjLnByb3RvdHlwZSwicnVuIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGRjLnByb3RvdHlwZSwiZGVzY3JpcHRpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZGMucHJvdG90eXBlLCJjb2xvciIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5CYWNrZ3JvdW5kKGNvbG9yKSIscmVhZE9ubHk6ITAsb2JzZXJ2ZXI6Il91cGRhdGVIZWFkaW5nU3R5bGUifSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGRjLnByb3RvdHlwZSwiX3J1bkJhY2tncm91bmQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUnVuQ29sb3IoY29sb3IpIixyZWFkT25seTohMCxvYnNlcnZlcjoiX3VwZGF0ZUhlYWRpbmdTdHlsZSJ9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZGMucHJvdG90eXBlLCJfcnVuQ29sb3IiLHZvaWQgMCk7RShbUnQoImRpc3BsYXlOYW1lIiwidGFnIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZGMucHJvdG90eXBlLCJfbmFtZUxhYmVsIixudWxsKTtFKFtSdCgiZGlzcGxheU5hbWUiLCJ0YWciKSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxkYy5wcm90b3R5cGUsIl90YWdMYWJlbCIsbnVsbCk7ZGM9RShbeXQoInRmLWNhcmQtaGVhZGluZyIpXSxkYyk7dmFyIHppPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9tZXRhZGF0YUNhbmNlbGxlcj1uZXcgYW4sdGhpcy5fc3RlcHM9W10sdGhpcy5fYXR0YWNoZWQ9ITF9Z2V0IF9ydW5Db2xvcigpe3ZhciB0PXRoaXMucnVuO3JldHVybiBmbih0KX1nZXQgX2hhc0F0TGVhc3RPbmVTdGVwKCl7dmFyIHQ9dGhpcy5fc3RlcHM7cmV0dXJuISF0JiZ0Lmxlbmd0aD4wfWdldCBfaGFzTXVsdGlwbGVTdGVwcygpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiEhdCYmdC5sZW5ndGg+MX1nZXQgX21heFN0ZXBJbmRleCgpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiB0Lmxlbmd0aC0xfWdldCBfY3VycmVudERhdHVtKCl7dmFyIHQ9dGhpcy5fc3RlcHMscj10aGlzLl9zdGVwSW5kZXg7cmV0dXJuIHRbcl19Z2V0IF9zYW1wbGVUZXh0KCl7dmFyIHQ9dGhpcy5zYW1wbGU7cmV0dXJuYCR7dCsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXt2YXIgdD10aGlzLnRvdGFsU2FtcGxlcztyZXR1cm4gdD4xfWF0dGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITAsdGhpcy5yZWxvYWQoKX1fcmVsb2FkT25SdW5UYWdDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe2lmKCF0aGlzLl9hdHRhY2hlZClyZXR1cm47dGhpcy5fbWV0YWRhdGFDYW5jZWxsZXIuY2FuY2VsQWxsKCk7bGV0IHI9dmUoKS5wbHVnaW5Sb3V0ZSgiYXVkaW8iLCIvYXVkaW8iLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOlN0cmluZyh0aGlzLnNhbXBsZSl9KSksbj10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZShpPT57aWYoaS5jYW5jZWxsZWQpcmV0dXJuO2xldCBhPWkudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixhKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsYS5sZW5ndGgtMSl9KTt0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QocikudGhlbihuKX1fY3JlYXRlU3RlcERhdHVtKHQpe2xldCByPW5ldyBVUkxTZWFyY2hQYXJhbXModC5xdWVyeSk7ci5hcHBlbmQoInRzIixTdHJpbmcodC53YWxsX3RpbWUpKTtsZXQgbj12ZSgpLnBsdWdpblJvdXRlKCJhdWRpbyIsIi9pbmRpdmlkdWFsQXVkaW8iLHIpO3JldHVybnt3YWxsX3RpbWU6YTIobmV3IERhdGUodC53YWxsX3RpbWUqMWUzKSksc3RlcDp0LnN0ZXAsbGFiZWw6dC5sYWJlbCxjb250ZW50VHlwZTp0LmNvbnRlbnRUeXBlLHVybDpufX19O3ppLnRlbXBsYXRlPVFgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTYW1wbGVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW3RvdGFsU2FtcGxlc11dCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcCA8c3Ryb25nPltbX2N1cnJlbnREYXR1bS5zdGVwXV08L3N0cm9uZz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50RGF0dW0ud2FsbF90aW1lXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICAgIFtbX2N1cnJlbnREYXR1bS53YWxsX3RpbWVdXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIgogICAgICAgICAgICBzbmFwcz0iIgogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgIDxhdWRpbwogICAgICAgIGNvbnRyb2xzPSIiCiAgICAgICAgc3JjJD0iW1tfY3VycmVudERhdHVtLnVybF1dIgogICAgICAgIHR5cGUkPSJbW19jdXJyZW50RGF0dW0uY29udGVudFR5cGVdXSIKICAgICAgPjwvYXVkaW8+CiAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbX2N1cnJlbnREYXR1bS5sYWJlbF1dIj48L3RmLW1hcmtkb3duLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBpZD0ibWFpbi1hdWRpby1jb250YWluZXIiPjwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yOiAjNDI0MjQyOwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAjc3RlcHMgewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcGFkZGluZzogMCA1cHg7IC8qIHNvIHRoZSBzbGlkZXIga25vYiBkb2Vzbid0IGJ1dHQgb3V0ICovCiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHppLnByb3RvdHlwZSwicnVuIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHppLnByb3RvdHlwZSwidGFnIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLHppLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLHppLnByb3RvdHlwZSwidG90YWxTYW1wbGVzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHppLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsQWUpXSx6aS5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLGFuKV0semkucHJvdG90eXBlLCJfbWV0YWRhdGFDYW5jZWxsZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLHppLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLHppLnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKTtFKFtSdCgicnVuIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0semkucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpO0UoW1J0KCJfc3RlcHMiKSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0semkucHJvdG90eXBlLCJfaGFzQXRMZWFzdE9uZVN0ZXAiLG51bGwpO0UoW1J0KCJfc3RlcHMiKSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0semkucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCk7RShbUnQoIl9zdGVwcyIpLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHppLnByb3RvdHlwZSwiX21heFN0ZXBJbmRleCIsbnVsbCk7RShbUnQoIl9zdGVwcyIsIl9zdGVwSW5kZXgiKSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx6aS5wcm90b3R5cGUsIl9jdXJyZW50RGF0dW0iLG51bGwpO0UoW1J0KCJzYW1wbGUiKSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx6aS5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKTtFKFtSdCgidG90YWxTYW1wbGVzIiksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHppLnByb3RvdHlwZSwiX2hhc011bHRpcGxlU2FtcGxlcyIsbnVsbCk7RShbQnQoInJ1biIsInRhZyIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0semkucHJvdG90eXBlLCJfcmVsb2FkT25SdW5UYWdDaGFuZ2UiLG51bGwpO3ppPUUoW3l0KCJ0Zi1hdWRpby1sb2FkZXIiKV0semkpO3ZhciBYaD1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3RhZ0ZpbHRlcj0iIix0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgQWV9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgpPT57dGhpcy5fcmVsb2FkQXVkaW8oKX0pfV9mZXRjaFRhZ3MoKXtsZXQgdD12ZSgpLnBsdWdpblJvdXRlKCJhdWRpbyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57aWYoZnkuaXNFcXVhbChyLHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2xldCBuPWZ5Lm1hcFZhbHVlcyhyLG89Pk9iamVjdC5rZXlzKG8pKSxpPVhpKG4pO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIixpLmxlbmd0aD09PTApLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIixyKX0pfV9yZWxvYWRBdWRpbygpe3ZhciB0Oyh0PXRoaXMucm9vdCk9PT1udWxsfHx0PT09dm9pZCAwfHx0LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWF1ZGlvLWxvYWRlciIpLmZvckVhY2gocj0+e3IucmVsb2FkKCl9KX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZ0luZm8scj10aGlzLl9zZWxlY3RlZFJ1bnMsbj10aGlzLl90YWdGaWx0ZXI7bGV0IGk9ZnkubWFwVmFsdWVzKHQsbD0+T2JqZWN0LmtleXMobCkpLG89WmwoaSxyLG4pO2Z1bmN0aW9uIGEobCl7bGV0IGM9dFtsLnJ1bl1bbC50YWddLnNhbXBsZXM7cmV0dXJuIGZ5LnJhbmdlKGMpLm1hcCh1PT5PYmplY3QuYXNzaWduKHt9LGwse3NhbXBsZTp1LHRvdGFsU2FtcGxlczpjfSkpfXJldHVybiBvLm1hcChsPT5PYmplY3QuYXNzaWduKHt9LGwse2l0ZW1zOltdLmNvbmNhdC5hcHBseShbXSxsLml0ZW1zLm1hcChhKSl9KSl9X3RhZ01ldGFkYXRhKHQscixuKXtyZXR1cm4gdFtyXVtuXX19O1hoLnRlbXBsYXRlPVFgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3IKICAgICAgICAgICAgaWQ9InJ1bnMtc2VsZWN0b3IiCiAgICAgICAgICAgIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319IgogICAgICAgICAgPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBhdWRpbyBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgYXVkaW8gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWF1ZGlvLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iCiAgICAgICAgICAgICAgICAgIHRvdGFsLXNhbXBsZXM9IltbaXRlbS50b3RhbFNhbXBsZXNdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWF1ZGlvLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxYaC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFhoLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxYaC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxYaC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWGgucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sWGgucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbUnQoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWGgucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCk7WGg9RShbeXQoInRmLWF1ZGlvLWRhc2hib2FyZCIpXSxYaCk7dmFyIEY1PWNsYXNzIGV4dGVuZHMgR3QobXQpe2F0dGFjaGVkKCl7dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMubGlzdGVuKHQsInRhcCIsIl9zZWxlY3RUYXJnZXQiKX0uYmluZCh0aGlzKSl9KX1fc2VsZWN0VGFyZ2V0KHQpe3RoaXMuc2VsZWN0ZWRJZD10LmN1cnJlbnRUYXJnZXQuaWR9X3NlbGVjdGVkSWRDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5xdWVyeUVmZmVjdGl2ZUNoaWxkcmVuKCIjIit0aGlzLnNlbGVjdGVkSWQpOyF0fHwodGhpcy5nZXRFZmZlY3RpdmVDaGlsZHJlbigpLmZvckVhY2goZnVuY3Rpb24ocil7ci5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpfSksdC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpKX19O0Y1LnRlbXBsYXRlPVFgCiAgICA8ZGl2IGlkPSJ3cmFwIj4KICAgICAgPGgzPltbbmFtZV1dPC9oMz4KICAgICAgPGRpdiBjbGFzcz0iY29udGVudC13cmFwcGVyIj48c2xvdD48L3Nsb3Q+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLmNvbnRlbnQtd3JhcHBlciA6OnNsb3R0ZWQoKikgewogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgfQoKICAgICAgLmNvbnRlbnQtd3JhcHBlciA6OnNsb3R0ZWQoKikgewogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgfQoKICAgICAgLmNvbnRlbnQtd3JhcHBlciA6OnNsb3R0ZWQoLnNlbGVjdGVkKSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBoMyB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBtYXJnaW46IDAgMCA1cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxGNS5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLG9ic2VydmVyOiJfc2VsZWN0ZWRJZENoYW5nZWQifSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLEY1LnByb3RvdHlwZSwic2VsZWN0ZWRJZCIsdm9pZCAwKTtGNT1FKFt5dCgidGYtb3B0aW9uLXNlbGVjdG9yIildLEY1KTtmdW5jdGlvbiByUihlLHQpe2xldCByLG49e307T2JqZWN0LmtleXMoZSkuZm9yRWFjaChhPT57bGV0IHM9ZVthXTtyPT09dm9pZCAwJiYocj1zLmRpc3BsYXlOYW1lKSxyIT09cy5kaXNwbGF5TmFtZSYmKHI9bnVsbCksbltzLmRlc2NyaXB0aW9uXT09PXZvaWQgMCYmKG5bcy5kZXNjcmlwdGlvbl09W10pLG5bcy5kZXNjcmlwdGlvbl0ucHVzaChhKX0pO2xldCBpPXIhPW51bGw/cjp0LG89KCgpPT57bGV0IGE9T2JqZWN0LmtleXMobik7cmV0dXJuIGEubGVuZ3RoPT09MD8iIjphLmxlbmd0aD09PTE/YVswXTpgPHA+PHN0cm9uZz5NdWx0aXBsZSBkZXNjcmlwdGlvbnM6PC9zdHJvbmc+PC9wPjx1bD4ke2EubWFwKGM9PntsZXQgdT1uW2NdLm1hcChwPT5gPGNvZGU+JHtwLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyYvZywiJmFtcDsiKX08L2NvZGU+YCksaD11Lmxlbmd0aD4yP3Uuc2xpY2UoMCx1Lmxlbmd0aC0xKS5qb2luKCIsICIpKyIsIGFuZCAiK3VbdS5sZW5ndGgtMV06dS5qb2luKCIgYW5kICIpO3JldHVybmA8bGk+PHA+Rm9yICR7bjVlKHUubGVuZ3RoLCJydW4iLCJydW5zIil9ICR7aH06PC9wPiR7Y308L2xpPmB9KS5qb2luKCIiKX08L3VsPmB9KSgpO3JldHVybntkaXNwbGF5TmFtZTppLGRlc2NyaXB0aW9uOm99fWZ1bmN0aW9uIG41ZShlLHQscil7cmV0dXJuIGU9PT0xP3Q6cn12YXIgajN0PUVlKE9lKCksMSk7dmFyIEhwPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMud2VpZ2h0PS42LHRoaXMuX3VwZGF0ZVdlaWdodD1qM3QuZGVib3VuY2UoZnVuY3Rpb24odCl7dGhpcy53ZWlnaHQ9dH0sMjUwKX1faW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJDaGFuZ2VkKCl7dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PXRoaXMuX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyLnRvU3RyaW5nKCksdGhpcy5fdXBkYXRlV2VpZ2h0LmNhbGwodGhpcyx0aGlzLl9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcil9X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dENoYW5nZWQoKXsrdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PDA/dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PSIwIjordGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PjEmJih0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ9IjEiKTt2YXIgdD0rdGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0O2lzTmFOKHQpfHx0aGlzLl91cGRhdGVXZWlnaHQuY2FsbCh0aGlzLHQpfX07SHAudGVtcGxhdGU9UWAKICAgIDxoMyBjbGFzcz0idGl0bGUiPlNtb290aGluZzwvaDM+CiAgICA8ZGl2IGNsYXNzPSJzbW9vdGhpbmctYmxvY2siPgogICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgaWQ9InNsaWRlciIKICAgICAgICBpbW1lZGlhdGUtdmFsdWU9Int7X2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyfX0iCiAgICAgICAgbWF4PSJbW21heF1dIgogICAgICAgIG1pbj0iW1ttaW5dXSIKICAgICAgICBwaW4KICAgICAgICBzdGVwPSJbW3N0ZXBdXSIKICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgdmFsdWU9Int7d2VpZ2h0fX0iCiAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgaWQ9ImlucHV0IgogICAgICAgIGxhYmVsPSJ3ZWlnaHQiCiAgICAgICAgbm8tbGFiZWwtZmxvYXQKICAgICAgICB2YWx1ZT0ie3tfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0fX0iCiAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgIHN0ZXA9Iltbc3RlcF1dIgogICAgICAgIG1pbj0iW1ttaW5dXSIKICAgICAgICBtYXg9IltbbWF4XV0iCiAgICAgID48L3BhcGVyLWlucHV0PgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIC50aXRsZSB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICB9CgogICAgICAuc21vb3RoaW5nLWJsb2NrIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICBmbGV4LWdyb3c6IDI7CiAgICAgIH0KCiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxIcC5wcm90b3R5cGUsInN0ZXAiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSHAucHJvdG90eXBlLCJtYXgiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSHAucHJvdG90eXBlLCJtaW4iLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLEhwLnByb3RvdHlwZSwid2VpZ2h0Iix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyLG5vdGlmeTohMCxvYnNlcnZlcjoiX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyQ2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSHAucHJvdG90eXBlLCJfaW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLG9ic2VydmVyOiJfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0Q2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSHAucHJvdG90eXBlLCJfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0Iix2b2lkIDApO0hwPUUoW3l0KCJ0Zi1zbW9vdGhpbmctaW5wdXQiKV0sSHApO3ZhciBXbz1FZShPZSgpLDEpO2Z1bmN0aW9uIENuKGUsdCl7bGV0IHI9T2JqZWN0LmtleXModCkuc29ydCgpLmZpbHRlcihhPT50W2FdIT09dm9pZCAwKTtpZighci5sZW5ndGgpcmV0dXJuIGU7bGV0IG49ZS5pbmRleE9mKCI/IikhPT0tMT8iJiI6Ij8iLG89QXJyYXkoKS5jb25jYXQoLi4uci5tYXAoYT0+e2xldCBzPXRbYV07cmV0dXJuKEFycmF5LmlzQXJyYXkocyk/czpbc10pLm1hcChjPT5gJHthfT0ke2k1ZShjKX1gKX0pKS5qb2luKCImIik7cmV0dXJuIGUrbitvfWZ1bmN0aW9uIGk1ZShlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpfXZhciBIS3Q9RWUoT2UoKSwxKSxMV249RWUoYmwoKSwxKTt2YXIgVEt0PUVlKE9lKCksMSk7dmFyIF80OyhmdW5jdGlvbihlKXtlW2UuTE9BRElORz0wXT0iTE9BRElORyIsZVtlLkxPQURFRD0xXT0iTE9BREVEIn0pKF80fHwoXzQ9e30pKTtmdW5jdGlvbiBMUyhlKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmxvYWRLZXk9IiIsdGhpcy5kYXRhVG9Mb2FkPVtdLHRoaXMuZ2V0RGF0YUxvYWROYW1lPXI9PlN0cmluZyhyKSx0aGlzLmRhdGFMb2FkaW5nPSExLHRoaXMuZGF0YUxvYWRlZEF0TGVhc3RPbmNlPSExLHRoaXMuX2lzQ29ubmVjdGVkPSExLHRoaXMuX2RhdGFMb2FkU3RhdGU9bmV3IE1hcCx0aGlzLl9jYW5jZWxsZXI9bmV3IGFuLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCx0aGlzLl9sb2FkRGF0YT1US3QudGhyb3R0bGUodGhpcy5fbG9hZERhdGFJbXBsLDEwMCx7bGVhZGluZzohMCx0cmFpbGluZzohMH0pfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9pc0Nvbm5lY3RlZD0hMH1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5faXNDb25uZWN0ZWQ9ITF9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2FjdGl2ZTp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfbG9hZERhdGFJZkFjdGl2ZSJ9LF9pc0Nvbm5lY3RlZDp7dHlwZTpCb29sZWFufSxsb2FkS2V5Ont0eXBlOlN0cmluZ30sZGF0YVRvTG9hZDp7dHlwZTpBcnJheX0sZ2V0RGF0YUxvYWROYW1lOnt0eXBlOk9iamVjdH0sbG9hZERhdGFDYWxsYmFjazp7dHlwZTpPYmplY3R9LHJlcXVlc3REYXRhOnt0eXBlOk9iamVjdH19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZGF0YVRvTG9hZENoYW5nZWQoX2lzQ29ubmVjdGVkLCBkYXRhVG9Mb2FkLiopIl19b25Mb2FkRmluaXNoKCl7fXJlbG9hZCgpe3RoaXMuX2RhdGFMb2FkU3RhdGUuY2xlYXIoKSx0aGlzLl9sb2FkRGF0YSgpfXJlc2V0KCl7dGhpcy5fbG9hZERhdGFBc3luYyE9bnVsbCYmKGNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwpLHRoaXMuX2NhbmNlbGxlciYmdGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpLHRoaXMuX2RhdGFMb2FkU3RhdGUmJnRoaXMuX2RhdGFMb2FkU3RhdGUuY2xlYXIoKSx0aGlzLl9pc0Nvbm5lY3RlZCYmdGhpcy5fbG9hZERhdGEoKX1fZGF0YVRvTG9hZENoYW5nZWQoKXt0aGlzLl9pc0Nvbm5lY3RlZCYmdGhpcy5fbG9hZERhdGEoKX1kZXRhY2hlZCgpe3RoaXMuX2xvYWREYXRhQXN5bmMhPW51bGwmJihjbGVhclRpbWVvdXQodGhpcy5fbG9hZERhdGFBc3luYyksdGhpcy5fbG9hZERhdGFBc3luYz1udWxsKX1fbG9hZERhdGFJZkFjdGl2ZSgpe3RoaXMuYWN0aXZlJiZ0aGlzLl9sb2FkRGF0YSgpfV9sb2FkRGF0YUltcGwoKXshdGhpcy5hY3RpdmV8fCh0aGlzLl9sb2FkRGF0YUFzeW5jIT09bnVsbCYmY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9c2V0VGltZW91dCh0aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUocj0+e2lmKHIuY2FuY2VsbGVkKXJldHVybjt0aGlzLmRhdGFMb2FkaW5nPSEwO2xldCBuPXRoaXMuZGF0YVRvTG9hZC5maWx0ZXIoYT0+e2xldCBzPXRoaXMuZ2V0RGF0YUxvYWROYW1lKGEpO3JldHVybiF0aGlzLl9kYXRhTG9hZFN0YXRlLmhhcyhzKX0pO2ZvcihsZXQgYSBvZiBuKXtsZXQgcz10aGlzLmdldERhdGFMb2FkTmFtZShhKTt0aGlzLl9kYXRhTG9hZFN0YXRlLnNldChzLF80LkxPQURJTkcpfWxldCBpPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZShhPT57aWYoYS5jYW5jZWxsZWQpcmV0dXJuO2xldHtpdGVtOnMsZGF0YTpsfT1hLnZhbHVlLGM9dGhpcy5nZXREYXRhTG9hZE5hbWUocyk7dGhpcy5fZGF0YUxvYWRTdGF0ZS5zZXQoYyxfNC5MT0FERUQpLHRoaXMubG9hZERhdGFDYWxsYmFjayh0aGlzLHMsbCl9KSxvPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZShhPT57aWYoIWEuY2FuY2VsbGVkKXtsZXQgbD1hLnZhbHVlLGM9bmV3IFNldChuLm1hcChoPT50aGlzLmdldERhdGFMb2FkTmFtZShoKSkpO3RoaXMuZGF0YVRvTG9hZC5zb21lKGg9PmMuaGFzKHRoaXMuZ2V0RGF0YUxvYWROYW1lKGgpKSkmJnRoaXMub25Mb2FkRmluaXNoKCksdGhpcy5fbG9hZERhdGFBc3luYz1udWxsLHRoaXMuZGF0YUxvYWRlZEF0TGVhc3RPbmNlPSEwfUFycmF5LmZyb20odGhpcy5fZGF0YUxvYWRTdGF0ZS52YWx1ZXMoKSkuaW5jbHVkZXMoXzQuTE9BRElORyl8fCh0aGlzLmRhdGFMb2FkaW5nPSExKX0pO3RoaXMucmVxdWVzdERhdGEobixpLCgpPT5vKHZvaWQgMCkpfSkpKX19fXZhciB1cWU9RWUoT2UoKSwxKSxHbz1FZShibCgpLDEpLGtTPVt7Y2hhcmFjdGVyOiJcdTI1RkMiLG1ldGhvZDpHby5TeW1ib2xGYWN0b3JpZXMuc3F1YXJlfSx7Y2hhcmFjdGVyOiJcdTI1QzYiLG1ldGhvZDpHby5TeW1ib2xGYWN0b3JpZXMuZGlhbW9uZH0se2NoYXJhY3RlcjoiXHUyNUIyIixtZXRob2Q6R28uU3ltYm9sRmFjdG9yaWVzLnRyaWFuZ2xlfSx7Y2hhcmFjdGVyOiJcdTI2MDUiLG1ldGhvZDpHby5TeW1ib2xGYWN0b3JpZXMuc3Rhcn0se2NoYXJhY3RlcjoiXHUyNzFBIixtZXRob2Q6R28uU3ltYm9sRmFjdG9yaWVzLmNyb3NzfV0sRWQ7KGZ1bmN0aW9uKGUpe2UuU1RFUD0ic3RlcCIsZS5SRUxBVElWRT0icmVsYXRpdmUiLGUuV0FMTF9USU1FPSJ3YWxsX3RpbWUifSkoRWR8fChFZD17fSkpO3ZhciBlMD00LGhxZT00LGZCPTMscEI9MjAsZEI9NCxDS3Q9NjtmdW5jdGlvbiBHdShlKXtyZXR1cm4gdD0+e2xldCByPU1hdGguYWJzKHQpO3I8MWUtMTUmJihyPTApO2xldCBuO3JldHVybiByPj0xZTQ/bj14bigiLiIrZSsifmUiKTpyPjAmJnI8LjAxP249eG4oIi4iK2UrIn5lIik6bj14bigiLiIrZSsifmciKSxuKHQpfX12YXIgeTQ9eG4oYC4ke2hxZX1+c2ApO2Z1bmN0aW9uIGphdCgpe2xldCBlPW5ldyBHby5TY2FsZXMuTGluZWFyO2UudGlja0dlbmVyYXRvcihHby5TY2FsZXMuVGlja0dlbmVyYXRvcnMuaW50ZWdlclRpY2tHZW5lcmF0b3IoKSk7bGV0IHQ9bmV3IEdvLkF4ZXMuTnVtZXJpYyhlLCJib3R0b20iKTtyZXR1cm4gdC5mb3JtYXR0ZXIoeTQpLHtzY2FsZTplLGF4aXM6dCxhY2Nlc3NvcjpyPT5yLnN0ZXB9fXZhciBtQj1Hby5Gb3JtYXR0ZXJzLnRpbWUoIiVhICViICVlLCAlSDolTTolUyIpO2Z1bmN0aW9uIGZxZSgpe2xldCBlPW5ldyBHby5TY2FsZXMuVGltZTtyZXR1cm57c2NhbGU6ZSxheGlzOm5ldyBHby5BeGVzLlRpbWUoZSwiYm90dG9tIiksYWNjZXNzb3I6dD0+dC53YWxsX3RpbWV9fXZhciByMD0oZSx0LHIpPT57aWYoZS5yZWxhdGl2ZSE9bnVsbClyZXR1cm4gZS5yZWxhdGl2ZTtsZXQgbj1yLmRhdGEoKSxpPW4ubGVuZ3RoPjA/K25bMF0ud2FsbF90aW1lOjA7cmV0dXJuKCtlLndhbGxfdGltZS1pKS8oNjAqNjAqMWUzKX0sZ0I9ZT0+e2xldCB0PSIiLHI9TWF0aC5mbG9vcihlLzI0KTtlLT1yKjI0LHImJih0Kz1yKyJkICIpO2xldCBuPU1hdGguZmxvb3IoZSk7ZS09bixlKj02MCwobnx8cikmJih0Kz1uKyJoICIpO2xldCBpPU1hdGguZmxvb3IoZSk7ZS09aSxlKj02MCwoaXx8bnx8cikmJih0Kz1pKyJtICIpO2xldCBvPU1hdGguZmxvb3IoZSk7cmV0dXJuIHQrbysicyJ9O2Z1bmN0aW9uIHBxZSgpe2xldCBlPW5ldyBHby5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTplLGF4aXM6bmV3IEdvLkF4ZXMuTnVtZXJpYyhlLCJib3R0b20iKSxhY2Nlc3NvcjpyMH19ZnVuY3Rpb24gX0IoZSl7c3dpdGNoKGUpe2Nhc2UgRWQuU1RFUDpyZXR1cm4gamF0KCk7Y2FzZSBFZC5XQUxMX1RJTUU6cmV0dXJuIGZxZSgpO2Nhc2UgRWQuUkVMQVRJVkU6cmV0dXJuIHBxZSgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHhUeXBlOiAiK2UpfX12YXIgT3M9RWUoT2UoKSwxKSxNbj1FZShibCgpLDEpO3ZhciB5YT1FZShibCgpLDEpO2Z1bmN0aW9uIGRxZShlKXtsZXQgdD1bXSxyPWU7Zm9yKDtyJiZyIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7KWlmKHQucHVzaChyKSxyLmFzc2lnbmVkU2xvdClyPXIuYXNzaWduZWRTbG90O2Vsc2UgaWYoci5wYXJlbnRFbGVtZW50KXI9ci5wYXJlbnRFbGVtZW50O2Vsc2V7bGV0IG49ci5wYXJlbnROb2RlO24gaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50P3I9bi5ob3N0OnI9biE9PXI/bjpudWxsfXJldHVybiB0fXZhciBtcWU9WzEsMCwwLDEsMCwwXTtmdW5jdGlvbiBncWUoZSl7bGV0IHQ9ZHFlKGUpLHI9bXFlLG49bnVsbDtmb3IobGV0IGkgb2YgdCl7bGV0IG89eWEuVXRpbHMuRE9NLmdldEVsZW1lbnRUcmFuc2Zvcm0oaSk7aWYobyE9bnVsbCl7bGV0IGw9aS5jbGllbnRXaWR0aC8yLGM9aS5jbGllbnRIZWlnaHQvMjtyPXlhLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUocixbbCxjXSkscj15YS5VdGlscy5NYXRoLm11bHRpcGx5TWF0cml4KHIseWEuVXRpbHMuTWF0aC5pbnZlcnRNYXRyaXgobykpLHI9eWEuVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShyLFstbCwtY10pfWxldCBhPWkuc2Nyb2xsTGVmdCxzPWkuc2Nyb2xsVG9wOyhuPT09bnVsbHx8aT09PW4pJiYoYS09aS5vZmZzZXRMZWZ0K2kuY2xpZW50TGVmdCxzLT1pLm9mZnNldFRvcCtpLmNsaWVudFRvcCxuPWkub2Zmc2V0UGFyZW50KSxyPXlhLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUocixbYSxzXSl9cmV0dXJuIHJ9dmFyIHZCPWNsYXNzIGV4dGVuZHMgeWEuVXRpbHMuVHJhbnNsYXRvcntjb21wdXRlUG9zaXRpb24odCxyKXtsZXQgbj17eDp0LHk6cn0saT1ncWUodGhpcy5fcm9vdEVsZW1lbnQpO3JldHVybiBpPT1udWxsP246eWEuVXRpbHMuTWF0aC5hcHBseVRyYW5zZm9ybShpLG4pfX0sVXY9Y2xhc3MgZXh0ZW5kcyB5YS5EaXNwYXRjaGVycy5Nb3VzZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9ldmVudFRhcmdldD10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSx0aGlzLl90cmFuc2xhdG9yPW5ldyB2Qih0LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSl9c3RhdGljIGdldERpc3BhdGNoZXIodCl7bGV0IHI9dC5yb290KCkucm9vdEVsZW1lbnQoKSxuPXJbVXYuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnx8KG49bmV3IFV2KHQpLHJbVXYuX0RJU1BBVENIRVJfS0VZXT1uKSxufX0scXY9Y2xhc3MgZXh0ZW5kcyB5YS5EaXNwYXRjaGVycy5Ub3VjaHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9ldmVudFRhcmdldD10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSx0aGlzLl90cmFuc2xhdG9yPW5ldyB2Qih0LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSl9c3RhdGljIGdldERpc3BhdGNoZXIodCl7bGV0IHI9dC5yb290KCkucm9vdEVsZW1lbnQoKSxuPXJbcXYuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnx8KG49bmV3IHF2KHQpLHJbcXYuX0RJU1BBVENIRVJfS0VZXT1uKSxufX07eWEuSW50ZXJhY3Rpb24ucHJvdG90eXBlLl9pc0luc2lkZUNvbXBvbmVudD1mdW5jdGlvbihlKXtyZXR1cm4gMDw9ZS54JiYwPD1lLnkmJmUueDx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkmJmUueTx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLmhlaWdodCgpfTt2YXIgeEI9Y2xhc3MgZXh0ZW5kcyB5YS5JbnRlcmFjdGlvbnMuUG9pbnRlcntfYW5jaG9yKHQpe2xldCByPXRoaXM7ci5faXNBbmNob3JlZD0hMCxyLl9tb3VzZURpc3BhdGNoZXI9VXYuZ2V0RGlzcGF0Y2hlcihyLl9jb21wb25lbnRBdHRhY2hlZFRvKSxyLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUoci5fbW91c2VNb3ZlQ2FsbGJhY2spLHIuX3RvdWNoRGlzcGF0Y2hlcj1xdi5nZXREaXNwYXRjaGVyKHIuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHIuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoU3RhcnQoci5fdG91Y2hTdGFydENhbGxiYWNrKX19O3ZhciBBS3Q9RWUoT2UoKSwxKTt2YXIgR3Y7KGZ1bmN0aW9uKGUpe2UuQVVUTz0iYXV0byIsZS5CT1RUT009ImJvdHRvbSIsZS5SSUdIVD0icmlnaHQifSkoR3Z8fChHdj17fSkpO3ZhciBfcWU9e2JveFNoYWRvdzoiMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgLjMpIixvcGFjaXR5OjAscG9zaXRpb246ImZpeGVkIix3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0iLHpJbmRleDo1fSx2ND1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5wb3NpdGlvbj1Hdi5BVVRPLHRoaXMubWluRGlzdEZyb21FZGdlPTE1LHRoaXMuX3N0eWxlQ2FjaGU9bnVsbCx0aGlzLl9yYWY9bnVsbCx0aGlzLl90dW5uZWw9bnVsbH1yZWFkeSgpe3RoaXMuX3N0eWxlQ2FjaGU9bnVsbCx0aGlzLl9yYWY9bnVsbCx0aGlzLl90dW5uZWw9bnVsbH1hdHRhY2hlZCgpe3RoaXMuX3R1bm5lbD10aGlzLl9jcmVhdGVUdW5uZWwoKSx0aGlzLl9oaWRlT25CbHVyPSgpPT57ZG9jdW1lbnQuaGlkZGVuJiZ0aGlzLmhpZGUoKX0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMuX2hpZGVPbkJsdXIpfWRldGFjaGVkKCl7dGhpcy5oaWRlKCksdGhpcy5fcmVtb3ZlVHVubmVsKHRoaXMuX3R1bm5lbCksdGhpcy5fdHVubmVsPW51bGwsd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMuX2hpZGVPbkJsdXIpfWNvbnRlbnQoKXtyZXR1cm4gdGhpcy5fdHVubmVsLnNoYWRvd1Jvb3R9aGlkZSgpe3RoaXMuX3JhZiE9PW51bGwmJndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yYWYpLHRoaXMuX3N0eWxlQ2FjaGU9bnVsbCx0aGlzLl90dW5uZWwuc3R5bGUub3BhY2l0eT0wfXVwZGF0ZUFuZFBvc2l0aW9uKHQpe3RoaXMuX3JhZiE9PW51bGwmJndpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yYWYpLHRoaXMuX3JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57IXRoaXMuaXNBdHRhY2hlZHx8dGhpcy5fcmVwb3NpdGlvbkltcGwodCl9KX1fcmVwb3NpdGlvbkltcGwodCl7bGV0IHI9dGhpcy5fdHVubmVsLG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz13aW5kb3cuaW5uZXJIZWlnaHQsYT1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLHM9bi50b3AsbD1zK24uaGVpZ2h0LGM9aS5oZWlnaHQrcEIsdT1udWxsLGg9TWF0aC5tYXgodGhpcy5taW5EaXN0RnJvbUVkZ2Usbi5sZWZ0KSxmPW51bGwscD1zO3RoaXMucG9zaXRpb249PUd2LlJJR0hUP2g9bi5yaWdodDoocD1sK3BCLGE8aCtpLndpZHRoK3RoaXMubWluRGlzdEZyb21FZGdlJiYoaD1udWxsLGY9dGhpcy5taW5EaXN0RnJvbUVkZ2UpKSx0aGlzLnBvc2l0aW9uPT1Hdi5BVVRPJiZuLnRvcC1jPjAmJm88bi50b3Arbi5oZWlnaHQrYyYmKHA9bnVsbCx1PW8tcytwQik7bGV0IGQ9e2NvbnRhaW46ImNvbnRlbnQiLG9wYWNpdHk6MSxsZWZ0Omg/YCR7aH1weGA6bnVsbCxyaWdodDpmP2Ake2Z9cHhgOm51bGwsdG9wOnA/YCR7cH1weGA6bnVsbCxib3R0b206dT9gJHt1fXB4YDpudWxsfTtBS3QuaXNFcXVhbCh0aGlzLl9zdHlsZUNhY2hlLGQpfHwoT2JqZWN0LmFzc2lnbihyLnN0eWxlLGQpLHRoaXMuX3N0eWxlQ2FjaGU9ZCl9X2NyZWF0ZVR1bm5lbCgpe2lmKCF0aGlzLmNvbnRlbnRDb21wb25lbnROYW1lKXRocm93IG5ldyBSYW5nZUVycm9yKCJSZXF1aXJlIGBjb250ZW50Q29tcG9uZW50TmFtZWAgdG8gYmUgYSBuYW1lIG9mIGEgUG9seW1lciBjb21wb25lbnQiKTtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY29udGVudENvbXBvbmVudE5hbWUpO3JldHVybiBPYmplY3QuYXNzaWduKHQuc3R5bGUsX3FlKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLHR9X3JlbW92ZVR1bm5lbCh0KXtkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpfX07RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdjQucHJvdG90eXBlLCJjb250ZW50Q29tcG9uZW50TmFtZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2NC5wcm90b3R5cGUsInBvc2l0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLHY0LnByb3RvdHlwZSwibWluRGlzdEZyb21FZGdlIix2b2lkIDApO3Y0PUUoW3l0KCJ2ei1jaGFydC10b29sdGlwIildLHY0KTt2YXIgUlM9RWUoYmwoKSwxKTt2YXIgTEt0PTFlNCxrS3Q9LjAwMSxSS3Q9eG4oIi4yfmUiKSx5cWU9eG4oIi40fnIiKSxQS3Q9eG4oIix+Iik7ZnVuY3Rpb24gSUt0KGUpe2lmKGU9PT0wKXJldHVybiIwIjtsZXQgdD1NYXRoLmFicyhlKTtyZXR1cm4gdD49TEt0fHx0PGtLdD9SS3QoZSk6eXFlKGUpfXZhciAkYXQ9e2Zvcm1hdFRpY2s6SUt0LGZvcm1hdFNob3J0OklLdCxmb3JtYXRSZWFkYWJsZShlKXtsZXQgdD1NYXRoLmFicyhlKTtyZXR1cm4gdD49TEt0fHx0PGtLdD9SS3QoZSk6UEt0KGUpfSxmb3JtYXRMb25nOlBLdH0sQkduPW5ldyBJbnRsLk51bWJlckZvcm1hdCh2b2lkIDAse21heGltdW1GcmFjdGlvbkRpZ2l0czozfSk7dmFyIEhHbj14bigiMC4zfnMiKSxWR249eG4oIiwuM35mIik7dmFyIHZxZT0xZTMseHFlPTYwKnZxZSxicWU9NjAqeHFlLHdxZT0yNCpicWUsVUduPTM2NSp3cWUscUduPXhuKCIuNH4iKTt2YXIgU3FlPVdiKCkudGlja0Zvcm1hdCgpLFhhdCxOS3Q9e2Zvcm1hdFRpY2soZSl7cmV0dXJuIFNxZShuZXcgRGF0ZShlKSl9LGZvcm1hdFNob3J0KGUpe3JldHVybiBuZXcgRGF0ZShlKS50b0xvY2FsZVN0cmluZyhYYXQse3llYXI6Im51bWVyaWMiLG1vbnRoOiJzaG9ydCIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyJ9KX0sZm9ybWF0UmVhZGFibGUoZSl7cmV0dXJuIG5ldyBEYXRlKGUpLnRvTG9jYWxlU3RyaW5nKFhhdCx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0In0pfSxmb3JtYXRMb25nKGUpe3JldHVybiBuZXcgRGF0ZShlKS50b0xvY2FsZVN0cmluZyhYYXQse3llYXI6Im51bWVyaWMiLG1vbnRoOiJsb25nIixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0IixmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOjN9KX19O3ZhciBUZDsoZnVuY3Rpb24oZSl7ZVtlLkxJTkVBUj0wXT0iTElORUFSIixlW2UuTE9HMTA9MV09IkxPRzEwIixlW2UuVElNRT0yXT0iVElNRSJ9KShUZHx8KFRkPXt9KSk7ZnVuY3Rpb24gREt0KGUpe3N3aXRjaChlKXtjYXNlIFRkLkxJTkVBUjpyZXR1cm4gbmV3IEthdDtjYXNlIFRkLkxPRzEwOnJldHVybiBuZXcgWmF0O2Nhc2UgVGQuVElNRTpyZXR1cm4gbmV3IEphdDtkZWZhdWx0OmxldCB0PWU7dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFNjYWxlVHlwZSAke3R9IG5vdCBzdXBwb3J0ZWQuYCl9fXZhciBNcWU9LjA1LEthdD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj0kYXR9dHJhbnNmb3JtKHQscixuKXtsZXRbaSxvXT10LGE9by1pLFtzLGxdPXIsYz1sLXM7cmV0dXJuIGE9PT0wP3M6Yy9hKihuLWkpK3N9Zm9yd2FyZCh0LHIsbil7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHQscixuKX1yZXZlcnNlKHQscixuKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0ocix0LG4pfW5pY2VEb21haW4odCl7bGV0W3Isbl09dDtpZihuPHIpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7aWYobj09PXIpcmV0dXJuIHI9PT0wP1stMSwxXTpyPDA/WzIqciwwXTpbMCwyKnJdO2xldCBpPXpuKCksbz0obi1yK051bWJlci5FUFNJTE9OKSpNcWUsW2Esc109aS5kb21haW4oW3ItbyxuK29dKS5uaWNlKCkuZG9tYWluKCk7cmV0dXJuW2Esc119dGlja3ModCxyKXtyZXR1cm4gem4oKS5kb21haW4odCkudGlja3Mocil9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fSxaYXQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9JGF0fXRyYW5zZm9ybSh0KXtyZXR1cm4gTWF0aC5sb2cxMCh0PjA/dDpOdW1iZXIuTUlOX1ZBTFVFKX11bnRyYW5zZm9ybSh0KXtyZXR1cm4gTWF0aC5leHAodC9NYXRoLkxPRzEwRSl9Zm9yd2FyZCh0LHIsbil7aWYobjw9MClyZXR1cm4gclswXTtsZXRbaSxvXT10LFthLHNdPXIsbD10aGlzLnRyYW5zZm9ybShpKSx1PXRoaXMudHJhbnNmb3JtKG8pLWwsaD1zLWE7cmV0dXJuIG49dGhpcy50cmFuc2Zvcm0obiksaC8odStOdW1iZXIuRVBTSUxPTikqKG4tbCkrYX1yZXZlcnNlKHQscixuKXtsZXRbaSxvXT10LFthLHNdPXIsbD10aGlzLnRyYW5zZm9ybShpKSx1PXRoaXMudHJhbnNmb3JtKG8pLWwsaD1zLWEsZj11LyhoK051bWJlci5FUFNJTE9OKSoobi1hKStsO3JldHVybiB0aGlzLnVudHJhbnNmb3JtKGYpfW5pY2VEb21haW4odCl7bGV0W3Isbl09dDtpZihyPm4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7bGV0IGk9TWF0aC5tYXgocixOdW1iZXIuTUlOX1ZBTFVFKSxvPU1hdGgubWF4KG4sTnVtYmVyLk1JTl9WQUxVRSk7cmV0dXJuIG48PTA/W051bWJlci5NSU5fVkFMVUUsMV06W01hdGgubWF4KE51bWJlci5NSU5fVkFMVUUsaSouNSksbyoyXX10aWNrcyh0LHIpe2xldCBuPXRbMF08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzBdLGk9dFsxXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMV0sbz1zYygpLmRvbWFpbihbbixpXSkudGlja3Mocik7cmV0dXJuIG8ubGVuZ3RoP286dH1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KSYmdD4wfX0sSmF0PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zY2FsZT1XYigpLHRoaXMuZGVmYXVsdEZvcm1hdHRlcj1OS3R9Zm9yd2FyZCh0LHIsbil7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnJhbmdlKHIpKG4pfXJldmVyc2UodCxyLG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShyKS5pbnZlcnQobikuZ2V0VGltZSgpfW5pY2VEb21haW4odCl7bGV0W3Isbl09dGhpcy5zY2FsZS5kb21haW4odCkubmljZSgpLmRvbWFpbigpO3JldHVybltyLmdldFRpbWUoKSxuLmdldFRpbWUoKV19dGlja3ModCxyKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkudGlja3MocikubWFwKG49Pm4uZ2V0VGltZSgpKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19O3ZhciBiQj1jbGFzcyBleHRlbmRzIFJTLlNjYWxlcy5MaW5lYXJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX2lnbm9yZU91dGxpZXI9ITEsdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKHQpe3JldHVybiB0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPXQsdGhpc31fbmljZURvbWFpbih0LHIpe2xldFtuLGldPXQ7cmV0dXJuIERLdChUZC5MSU5FQVIpLm5pY2VEb21haW4oW24saV0pfV9nZXRVbmJvdW5kZWRFeHRlbnQodCl7bGV0IHI9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCksbj10aGlzLl9kZWZhdWx0RXh0ZW50KCk7aWYoci5sZW5ndGghPT0wKXtsZXQgaT1bUlMuVXRpbHMuTWF0aC5taW4ocixuWzBdKSxSUy5VdGlscy5NYXRoLm1heChyLG5bMV0pXTtuPXRoaXMuX25pY2VEb21haW4oaSl9cmV0dXJuIG59X2dldEFsbEluY2x1ZGVkVmFsdWVzKHQ9ITEpe2xldCByPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKHIpfWV4dGVudE9mVmFsdWVzKHQpe2xldCByPXQuZmlsdGVyKG89PlJTLlV0aWxzLk1hdGguaXNWYWxpZE51bWJlcihvKSksbj1yO2lmKHRoaXMuaWdub3JlT3V0bGllcigpKXtsZXQgbz1yLnNvcnQoKGwsYyk9PmwtYyksYT1hYShvLC4wNSkscz1hYShvLC45NSk7bj1yLmZpbHRlcihsPT5sPj1hJiZsPD1zKX1sZXQgaT1vYShuKTtyZXR1cm4gaVswXT09bnVsbHx8aVsxXT09bnVsbD9bXTppfWlnbm9yZU91dGxpZXIodCl7cmV0dXJuIHR5cGVvZiB0PT0iYm9vbGVhbiI/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfX07dmFyIE1CPUVlKGJsKCksMSk7dmFyIE9LdD1FZShibCgpLDEpLHdCPWNsYXNzIGV4dGVuZHMgT0t0LlF1YW50aXRhdGl2ZVNjYWxle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9pZ25vcmVPdXRsaWVyPSExfXNldFZhbHVlUHJvdmlkZXJGb3JEb21haW4odCl7cmV0dXJuIHRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW49dCx0aGlzfWlnbm9yZU91dGxpZXIodCl7cmV0dXJuIHR5cGVvZiB0PT0iYm9vbGVhbiI/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtsZXQgcj10aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluP3RoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4oKTpbXTtyZXR1cm4gdGhpcy5leHRlbnRPZlZhbHVlcyhyKX19O3ZhciBTQj1NYXRoLnBvdygyLC0xMDc0KTtmdW5jdGlvbiB4NChlKXtyZXR1cm4gTWF0aC5sb2cxMChlKX1mdW5jdGlvbiBRYXQoZSl7cmV0dXJuIE1hdGgucG93KDEwLGUpfXZhciBFQj1jbGFzcyBleHRlbmRzIHdCe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9kM0xvZ1NjYWxlPXNjKCksdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zY2FsZSh0KXtyZXR1cm4gdDw9MD9OYU46dGhpcy5fZDNMb2dTY2FsZSh0KX1pbnZlcnQodCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUuaW52ZXJ0KHQpfXNjYWxlVHJhbnNmb3JtYXRpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUodCl9aW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9Z2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKXtyZXR1cm4gdGhpcy5kb21haW4oKX1zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbih0KXt0aGlzLmRvbWFpbih0KX1nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCgpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfV9nZXREb21haW4oKXtyZXR1cm4gdGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbn1fc2V0RG9tYWluKHQpe3RoaXMuX3VudHJhbnNmb3JtZWREb21haW49dDtsZXRbcixuXT10O3N1cGVyLl9zZXREb21haW4oW01hdGgubWF4KFNCLHIpLG5dKX1fbmljZURvbWFpbih0LHIpe2xldFtuLGldPXQsbz1NYXRoLm1heCh4NChTQikseDQobikpLGE9eDQoaSkscz1hLW8sbD1zP3MqdGhpcy5wYWRQcm9wb3J0aW9uKCk6MTtyZXR1cm5bUWF0KE1hdGgubWF4KHg0KFNCKSxvLWwpKSxRYXQoYStsKV19X2dldFVuYm91bmRlZEV4dGVudCh0KXtsZXQgcj10aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0KSxuPXRoaXMuX2RlZmF1bHRFeHRlbnQoKTtpZihyLmxlbmd0aCE9PTApe2xldCBpPVtNQi5VdGlscy5NYXRoLm1pbihyLG5bMF0pLE1CLlV0aWxzLk1hdGgubWF4KHIsblsxXSldO249dGhpcy5fbmljZURvbWFpbihpKX1yZXR1cm4gbn1fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModD0hMSl7cmV0dXJuIHN1cGVyLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpLm1hcChuPT5uPjA/bjpTQil9X2RlZmF1bHRFeHRlbnQoKXtyZXR1cm5bMSwxMF19X2JhY2tpbmdTY2FsZURvbWFpbih0KXtyZXR1cm4gdD09bnVsbD90aGlzLl9kM0xvZ1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM0xvZ1NjYWxlLmRvbWFpbih0KSx0aGlzKX1fZ2V0UmFuZ2UoKXtyZXR1cm4gdGhpcy5fZDNMb2dTY2FsZS5yYW5nZSgpfV9zZXRSYW5nZSh0KXt0aGlzLl9kM0xvZ1NjYWxlLnJhbmdlKHQpfWRlZmF1bHRUaWNrcygpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnRpY2tzKDEpfXRpY2tzKCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUudGlja3MoKX1leHRlbnRPZlZhbHVlcyh0KXtsZXQgcj10LmZpbHRlcihvPT5NQi5VdGlscy5NYXRoLmlzVmFsaWROdW1iZXIobykmJm8+MCksbj1yO2lmKHRoaXMuaWdub3JlT3V0bGllcigpKXtsZXQgYT1yLm1hcCh4NCkuc29ydCgoYyx1KT0+Yy11KSxzPWFhKGEsLjA1KSxsPWFhKGEsLjk1KTtuPWEuZmlsdGVyKGM9PmM+PXMmJmM8PWwpLm1hcChRYXQpfWxldCBpPW9hKG4pO3JldHVybiBpWzBdPT1udWxsfHxpWzFdPT1udWxsP1tdOml9fTt2YXIgQ2Q9RWUoYmwoKSwxKTt2YXIgbjA9RWUoYmwoKSwxKSxUQj1jbGFzcyBleHRlbmRzIG4wLkNvbXBvbmVudHMuU2VsZWN0aW9uQm94TGF5ZXJ7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKCksdGhpcy5lYXNlRm49dnMsdGhpcy5fYW5pbWF0aW9uVGltZT03NTAsdGhpcy54U2NhbGUodCksdGhpcy55U2NhbGUociksdGhpcy5fZHJhZ0ludGVyYWN0aW9uPW5ldyBuMC5JbnRlcmFjdGlvbnMuRHJhZyx0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uPW5ldyBuMC5JbnRlcmFjdGlvbnMuQ2xpY2ssdGhpcy5zZXR1cENhbGxiYWNrcygpLHRoaXMudW56b29tTWV0aG9kPW4sdGhpcy5vbkRldGFjaCgoKT0+e3RoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0aGlzKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0aGlzKX0pLHRoaXMub25BbmNob3IoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKX0pfWludGVyYWN0aW9uU3RhcnQodCl7dGhpcy5vblN0YXJ0PXR9aW50ZXJhY3Rpb25FbmQodCl7dGhpcy5vbkVuZD10fWRyYWdJbnRlcmFjdGlvbigpe3JldHVybiB0aGlzLl9kcmFnSW50ZXJhY3Rpb259c2V0dXBDYWxsYmFja3MoKXtsZXQgdD0hMTt0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQocj0+e3RoaXMuYm91bmRzKHt0b3BMZWZ0OnIsYm90dG9tUmlnaHQ6cn0pLHRoaXMub25TdGFydCgpfSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZygocixuKT0+e3RoaXMuYm91bmRzKHt0b3BMZWZ0OnIsYm90dG9tUmlnaHQ6bn0pLHRoaXMuYm94VmlzaWJsZSghMCksdD0hMH0pLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdFbmQoKHIsbik9Pnt0aGlzLmJveFZpc2libGUoITEpLHRoaXMuYm91bmRzKHt0b3BMZWZ0OnIsYm90dG9tUmlnaHQ6bn0pLHQ/dGhpcy56b29tKCk6dGhpcy5vbkVuZCgpLHQ9ITF9KSx0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLm9uRG91YmxlQ2xpY2sodGhpcy51bnpvb20uYmluZCh0aGlzKSl9YW5pbWF0aW9uVGltZSh0KXtpZih0PT1udWxsKXJldHVybiB0aGlzLl9hbmltYXRpb25UaW1lO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoImFuaW1hdGlvblRpbWUgY2Fubm90IGJlIG5lZ2F0aXZlIik7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblRpbWU9dCx0aGlzfWVhc2UodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJlYXNlIGZ1bmN0aW9uIG11c3QgYmUgYSBmdW5jdGlvbiIpO3JldHVybih0KDApIT09MHx8dCgxKSE9PTEpJiZuMC5VdGlscy5XaW5kb3cud2FybigiRWFzaW5nIGZ1bmN0aW9uIGRvZXMgbm90IG1haW50YWluIGludmFyaWFudCBmKDApPT0wICYmIGYoMSk9PTEuIEJhZCBiZWhhdmlvciBtYXkgcmVzdWx0LiIpLHRoaXMuZWFzZUZuPXQsdGhpc316b29tKCl7bGV0IHQ9dGhpcy54RXh0ZW50KClbMF0udmFsdWVPZigpLHI9dGhpcy54RXh0ZW50KClbMV0udmFsdWVPZigpLG49dGhpcy55RXh0ZW50KClbMV0udmFsdWVPZigpLGk9dGhpcy55RXh0ZW50KClbMF0udmFsdWVPZigpO3Q9PT1yfHxuPT09aXx8dGhpcy5pbnRlcnBvbGF0ZVpvb20odCxyLG4saSl9dW56b29tKCl7bGV0IHQ9dGhpcy54U2NhbGUoKTt0Ll9kb21haW5NaW49bnVsbCx0Ll9kb21haW5NYXg9bnVsbDtsZXQgcj10Ll9nZXRFeHRlbnQoKTt0aGlzLnhTY2FsZSgpLmRvbWFpbihyKSx0aGlzLnVuem9vbU1ldGhvZCgpfWlzWm9vbWluZyh0KXt0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZW5hYmxlZCghdCksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5lbmFibGVkKCF0KX1pbnRlcnBvbGF0ZVpvb20odCxyLG4saSl7bGV0IG89dGhpcy54U2NhbGUoKS5kb21haW4oKVswXS52YWx1ZU9mKCksYT10aGlzLnhTY2FsZSgpLmRvbWFpbigpWzFdLnZhbHVlT2YoKSxzPXRoaXMueVNjYWxlKCkuZG9tYWluKClbMF0udmFsdWVPZigpLGw9dGhpcy55U2NhbGUoKS5kb21haW4oKVsxXS52YWx1ZU9mKCksYz10aGlzLmVhc2VGbix1PShwLGQsZyk9Pk9pKHAsZCkoYyhnKSk7dGhpcy5pc1pvb21pbmcoITApO2xldCBoPURhdGUubm93KCksZj0oKT0+e2xldCBkPURhdGUubm93KCktaCxnPXRoaXMuX2FuaW1hdGlvblRpbWU9PT0wPzE6TWF0aC5taW4oMSxkL3RoaXMuX2FuaW1hdGlvblRpbWUpLF89dShvLHQsZykseT11KGEscixnKSx4PXUocyxuLGcpLGI9dShsLGksZyk7dGhpcy54U2NhbGUoKS5kb21haW4oW18seV0pLHRoaXMueVNjYWxlKCkuZG9tYWluKFt4LGJdKSxnPDE/bjAuVXRpbHMuRE9NLnJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsKGYpOih0aGlzLm9uRW5kKCksdGhpcy5pc1pvb21pbmcoITEpKX07ZigpfX07dmFyIHZhOyhmdW5jdGlvbihlKXtlW2UuTk9ORT0wXT0iTk9ORSIsZVtlLkRSQUdfWk9PTUlORz0xXT0iRFJBR19aT09NSU5HIixlW2UuUEFOTklORz0yXT0iUEFOTklORyJ9KSh2YXx8KHZhPXt9KSk7dmFyIE9mPWNsYXNzIGV4dGVuZHMgQ2QuQ29tcG9uZW50cy5Hcm91cHtjb25zdHJ1Y3Rvcih0LHIsbil7c3VwZXIoKSx0aGlzLnN0YXRlPXZhLk5PTkUsdGhpcy5wYW5TdGFydENhbGxiYWNrPW5ldyBDZC5VdGlscy5DYWxsYmFja1NldCx0aGlzLnBhbkVuZENhbGxiYWNrPW5ldyBDZC5VdGlscy5DYWxsYmFja1NldCx0aGlzLnBhblpvb209bmV3IENkLkludGVyYWN0aW9ucy5QYW5ab29tKHQsciksdGhpcy5wYW5ab29tLmRyYWdJbnRlcmFjdGlvbigpLm1vdXNlRmlsdGVyKG89Pk9mLmlzUGFuS2V5KG8pJiZvLmJ1dHRvbj09PTApLHRoaXMucGFuWm9vbS53aGVlbEZpbHRlcih0aGlzLmNhblNjcm9sbFpvb20pLHRoaXMuZHJhZ1pvb21MYXllcj1uZXcgVEIodCxyLG4pLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5tb3VzZUZpbHRlcihvPT4hT2YuaXNQYW5LZXkobykmJm8uYnV0dG9uPT09MCksdGhpcy5hcHBlbmQodGhpcy5kcmFnWm9vbUxheWVyKTtsZXQgaT10aGlzLm9uV2hlZWwuYmluZCh0aGlzKTt0aGlzLm9uQW5jaG9yKCgpPT57dGhpcy5fbW91c2VEaXNwYXRjaGVyPUNkLkRpc3BhdGNoZXJzLk1vdXNlLmdldERpc3BhdGNoZXIodGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uV2hlZWwoaSksdGhpcy5wYW5ab29tLmF0dGFjaFRvKHRoaXMpfSksdGhpcy5vbkRldGFjaCgoKT0+e3RoaXMucGFuWm9vbS5kZXRhY2hGcm9tKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlciYmKHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZXaGVlbChpKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCl9KSx0aGlzLnBhblpvb20uZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnU3RhcnQoKCk9Pnt0aGlzLnN0YXRlPT12YS5OT05FJiZ0aGlzLnNldFN0YXRlKHZhLlBBTk5JTkcpfSksdGhpcy5wYW5ab29tLmRyYWdJbnRlcmFjdGlvbigpLm9uRHJhZ0VuZCgoKT0+e3RoaXMuc3RhdGU9PXZhLlBBTk5JTkcmJnRoaXMuc2V0U3RhdGUodmEuTk9ORSl9KSx0aGlzLmRyYWdab29tTGF5ZXIuZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnU3RhcnQoKCk9Pnt0aGlzLnN0YXRlPT12YS5OT05FJiZ0aGlzLnNldFN0YXRlKHZhLkRSQUdfWk9PTUlORyl9KSx0aGlzLmRyYWdab29tTGF5ZXIuZHJhZ0ludGVyYWN0aW9uKCkub25EcmFnRW5kKCgpPT57dGhpcy5zdGF0ZT09dmEuRFJBR19aT09NSU5HJiZ0aGlzLnNldFN0YXRlKHZhLk5PTkUpfSl9b25XaGVlbCh0LHIpe2lmKHRoaXMuY2FuU2Nyb2xsWm9vbShyKSlyZXR1cm47bGV0IG49dGhpcy5lbGVtZW50KCk7aWYoIW4uc2VsZWN0KCIuaGVscCIpLmVtcHR5KCkpcmV0dXJuO2xldCBpPW4uYXBwZW5kKCJkaXYiKS5jbGFzc2VkKCJoZWxwIiwhMCk7aS5hcHBlbmQoInNwYW4iKS50ZXh0KCJBbHQgKyBTY3JvbGwgdG8gWm9vbSIpLGkub24oImFuaW1hdGlvbmVuZCIsKCk9PnZvaWQgaS5yZW1vdmUoKSl9c3RhdGljIGlzUGFuS2V5KHQpe3JldHVybiBCb29sZWFuKHQuYWx0S2V5KXx8Qm9vbGVhbih0LnNoaWZ0S2V5KX1jYW5TY3JvbGxab29tKHQpe3JldHVybiB0LmFsdEtleX1zZXRTdGF0ZSh0KXtpZih0aGlzLnN0YXRlPT10KXJldHVybjtsZXQgcj10aGlzLnN0YXRlO3RoaXMuc3RhdGU9dCx0aGlzLnJvb3QoKS5yZW1vdmVDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKHIpKSx0aGlzLnJvb3QoKS5hZGRDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKHQpKSxyPT12YS5QQU5OSU5HJiZ0aGlzLnBhbkVuZENhbGxiYWNrLmNhbGxDYWxsYmFja3MoKSx0PT12YS5QQU5OSU5HJiZ0aGlzLnBhblN0YXJ0Q2FsbGJhY2suY2FsbENhbGxiYWNrcygpfXN0YXRlQ2xhc3NOYW1lKHQpe3N3aXRjaCh0KXtjYXNlIHZhLlBBTk5JTkc6cmV0dXJuInBhbm5pbmciO2Nhc2UgdmEuRFJBR19aT09NSU5HOnJldHVybiJkcmFnLXpvb21pbmciO2Nhc2UgdmEuTk9ORTpkZWZhdWx0OnJldHVybiIifX1vblBhblN0YXJ0KHQpe3RoaXMucGFuU3RhcnRDYWxsYmFjay5hZGQodCl9b25QYW5FbmQodCl7dGhpcy5wYW5FbmRDYWxsYmFjay5hZGQodCl9b25TY3JvbGxab29tKHQpe3RoaXMucGFuWm9vbS5vblpvb21FbmQodCl9b25EcmFnWm9vbVN0YXJ0KHQpe3RoaXMuZHJhZ1pvb21MYXllci5pbnRlcmFjdGlvblN0YXJ0KHQpfW9uRHJhZ1pvb21FbmQodCl7dGhpcy5kcmFnWm9vbUxheWVyLmludGVyYWN0aW9uRW5kKHQpfX07dmFyIENCOyhmdW5jdGlvbihlKXtlW2UuVEVYVD0wXT0iVEVYVCIsZVtlLkRPTT0xXT0iRE9NIn0pKENCfHwoQ0I9e30pKTt2YXIgemY7KGZ1bmN0aW9uKGUpe2UuTE9HPSJsb2ciLGUuTElORUFSPSJsaW5lYXIifSkoemZ8fCh6Zj17fSkpO3ZhciB6S3Q9MjAsTlM9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4saSxvLGEscyxsLGMsdSxoKXt0aGlzLmRpcnR5RGF0YXNldHM9bmV3IFNldCx0aGlzLnNlcmllc05hbWVzPVtdLHRoaXMubmFtZTJkYXRhc2V0cz17fSx0aGlzLmNvbG9yU2NhbGU9aSx0aGlzLnRvb2x0aXA9byx0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX2lnbm9yZVlPdXRsaWVycz0hMSx0aGlzLmxhc3RQb2ludHNEYXRhc2V0PW5ldyBNbi5EYXRhc2V0LHRoaXMubmFuRGF0YXNldD1uZXcgTW4uRGF0YXNldCx0aGlzLnlWYWx1ZUFjY2Vzc29yPXIsdGhpcy5zeW1ib2xGdW5jdGlvbj11LHRoaXMuX2RlZmF1bHRYUmFuZ2U9bCx0aGlzLl9kZWZhdWx0WVJhbmdlPWMsdGhpcy50b29sdGlwQ29sdW1ucz1hLHRoaXMuYnVpbGRDaGFydCh0LHIsbixzLGgpfWJ1aWxkQ2hhcnQodCxyLG4saSxvKXt0aGlzLmRlc3Ryb3koKTtsZXQgYT10KCk7dGhpcy54QWNjZXNzb3I9YS5hY2Nlc3Nvcix0aGlzLnhTY2FsZT1hLnNjYWxlLHRoaXMueEF4aXM9YS5heGlzLHRoaXMueEF4aXMubWFyZ2luKDEpLnRpY2tMYWJlbFBhZGRpbmcoMyksbyYmdGhpcy54QXhpcy5mb3JtYXR0ZXIobyksdGhpcy55U2NhbGU9TlMuZ2V0WVNjYWxlRnJvbVR5cGUobiksdGhpcy55U2NhbGUuc2V0VmFsdWVQcm92aWRlckZvckRvbWFpbigoKT0+dGhpcy5nZXRWYWx1ZXNGb3JZQXhpc0RvbWFpbkNvbXB1dGUoKSksdGhpcy55QXhpcz1uZXcgTW4uQXhlcy5OdW1lcmljKHRoaXMueVNjYWxlLCJsZWZ0Iik7bGV0IHM9R3UoZkIpO3RoaXMueUF4aXMubWFyZ2luKDApLnRpY2tMYWJlbFBhZGRpbmcoNSkuZm9ybWF0dGVyKHMpLHRoaXMueUF4aXMudXNlc1RleHRXaWR0aEFwcHJveGltYXRpb24oITApLHRoaXMuZmlsbEFyZWE9aTtsZXQgbD1uZXcgT2YodGhpcy54U2NhbGUsdGhpcy55U2NhbGUsKCk9PnRoaXMucmVzZXREb21haW4oKSk7dGhpcy50b29sdGlwSW50ZXJhY3Rpb249dGhpcy5jcmVhdGVUb29sdGlwSW50ZXJhY3Rpb24obCksdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50PW5ldyBNbi5Db21wb25lbnQ7bGV0IGM9dGhpcy5idWlsZFBsb3QodGhpcy54U2NhbGUsdGhpcy55U2NhbGUsaSk7dGhpcy5ncmlkbGluZXM9bmV3IE1uLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKTtsZXQgdT1udWxsO24hPT16Zi5MT0cmJih1PW5ldyBNbi5Db21wb25lbnRzLkd1aWRlTGluZUxheWVyKCJob3Jpem9udGFsIiksdS5zY2FsZSh0aGlzLnlTY2FsZSkudmFsdWUoMCkpO2xldCBoPW5ldyBNbi5Db21wb25lbnRzLkd1aWRlTGluZUxheWVyKCJ2ZXJ0aWNhbCIpO2guc2NhbGUodGhpcy54U2NhbGUpLnZhbHVlKDApLHRoaXMuY2VudGVyPW5ldyBNbi5Db21wb25lbnRzLkdyb3VwKFt0aGlzLmdyaWRsaW5lcyx1LGgsYyx0aGlzLnRvb2x0aXBQb2ludHNDb21wb25lbnQsbF0pLHRoaXMuY2VudGVyLmFkZENsYXNzKCJtYWluIiksdGhpcy5vdXRlcj1uZXcgTW4uQ29tcG9uZW50cy5UYWJsZShbW3RoaXMueUF4aXMsdGhpcy5jZW50ZXJdLFtudWxsLHRoaXMueEF4aXNdXSl9YnVpbGRQbG90KHQscixuKXtuJiYodGhpcy5tYXJnaW5BcmVhUGxvdD1uZXcgTW4uUGxvdHMuQXJlYSx0aGlzLm1hcmdpbkFyZWFQbG90LngodGhpcy54QWNjZXNzb3IsdCksdGhpcy5tYXJnaW5BcmVhUGxvdC55KG4uaGlnaGVyQWNjZXNzb3IsciksdGhpcy5tYXJnaW5BcmVhUGxvdC55MChuLmxvd2VyQWNjZXNzb3IpLHRoaXMubWFyZ2luQXJlYVBsb3QuYXR0cigiZmlsbCIsKGMsdSxoKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKGgubWV0YWRhdGEoKS5uYW1lKSksdGhpcy5tYXJnaW5BcmVhUGxvdC5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoInN0cm9rZS13aWR0aCIsMCkpLHRoaXMuc21vb3RoZWRBY2Nlc3Nvcj1jPT5jLnNtb290aGVkO2xldCBpPW5ldyBNbi5QbG90cy5MaW5lO2kueCh0aGlzLnhBY2Nlc3Nvcix0KSxpLnkodGhpcy55VmFsdWVBY2Nlc3NvcixyKSxpLmF0dHIoInN0cm9rZSIsKGMsdSxoKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKGgubWV0YWRhdGEoKS5uYW1lKSksdGhpcy5saW5lUGxvdD1pLHRoaXMuc2V0dXBUb29sdGlwcyhpKTtsZXQgbz1uZXcgTW4uUGxvdHMuTGluZTtpZihvLngodGhpcy54QWNjZXNzb3IsdCksby55KHRoaXMuc21vb3RoZWRBY2Nlc3NvcixyKSxvLmF0dHIoInN0cm9rZSIsKGMsdSxoKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKGgubWV0YWRhdGEoKS5uYW1lKSksdGhpcy5zbW9vdGhMaW5lUGxvdD1vLHRoaXMuc3ltYm9sRnVuY3Rpb24pe2xldCBjPW5ldyBNbi5QbG90cy5TY2F0dGVyO2MueCh0aGlzLnhBY2Nlc3Nvcix0KSxjLnkodGhpcy55VmFsdWVBY2Nlc3NvcixyKSxjLmF0dHIoImZpbGwiLCh1LGgsZik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShmLm1ldGFkYXRhKCkubmFtZSkpLGMuYXR0cigib3BhY2l0eSIsMSksYy5zaXplKGRCKjIpLGMuc3ltYm9sKCh1LGgsZik9PnRoaXMuc3ltYm9sRnVuY3Rpb24oZi5tZXRhZGF0YSgpLm5hbWUpKSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdD1jfWxldCBhPW5ldyBNbi5QbG90cy5TY2F0dGVyO2EueCh0aGlzLnhBY2Nlc3Nvcix0KSxhLnkodGhpcy55VmFsdWVBY2Nlc3NvcixyKSxhLmF0dHIoImZpbGwiLGM9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShjLm5hbWUpKSxhLmF0dHIoIm9wYWNpdHkiLDEpLGEuc2l6ZShkQioyKSxhLmRhdGFzZXRzKFt0aGlzLmxhc3RQb2ludHNEYXRhc2V0XSksdGhpcy5zY2F0dGVyUGxvdD1hO2xldCBzPW5ldyBNbi5QbG90cy5TY2F0dGVyO3MueCh0aGlzLnhBY2Nlc3Nvcix0KSxzLnkoYz0+Yy5kaXNwbGF5WSxyKSxzLmF0dHIoImZpbGwiLGM9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShjLm5hbWUpKSxzLmF0dHIoIm9wYWNpdHkiLDEpLHMuc2l6ZShDS3QqMikscy5kYXRhc2V0cyhbdGhpcy5uYW5EYXRhc2V0XSkscy5zeW1ib2woTW4uU3ltYm9sRmFjdG9yaWVzLnRyaWFuZ2xlKSx0aGlzLm5hbkRpc3BsYXk9cztsZXQgbD1bcyxhLG8saV07cmV0dXJuIHRoaXMubWFyZ2luQXJlYVBsb3QmJmwucHVzaCh0aGlzLm1hcmdpbkFyZWFQbG90KSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmbC5wdXNoKHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90KSxuZXcgTW4uQ29tcG9uZW50cy5Hcm91cChsKX1pZ25vcmVZT3V0bGllcnModCl7dCE9PXRoaXMuX2lnbm9yZVlPdXRsaWVycyYmKHRoaXMuX2lnbm9yZVlPdXRsaWVycz10LHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCksdGhpcy55U2NhbGUuaWdub3JlT3V0bGllcih0KSx0aGlzLnJlc2V0WURvbWFpbigpKX1nZXRWYWx1ZXNGb3JZQXhpc0RvbWFpbkNvbXB1dGUoKXtsZXQgdD10aGlzLmdldEFjY2Vzc29yc0ZvckNvbXB1dGluZ1lSYW5nZSgpLHI9bj0+dC5tYXAoaT0+bi5kYXRhKCkubWFwKG89PmkobywtMSxuKSkpO3JldHVybiBPcy5mbGF0dGVuRGVlcCh0aGlzLmRhdGFzZXRzLm1hcChyKSkuZmlsdGVyKGlzRmluaXRlKX11cGRhdGVTcGVjaWFsRGF0YXNldHMoKXtsZXQgdD10aGlzLmdldFlBeGlzQWNjZXNzb3IoKSxyPXRoaXMuZGF0YXNldHMubWFwKG89PntsZXQgYT1udWxsLHM9by5kYXRhKCkuZmlsdGVyKGw9PiFpc05hTih0KGwsLTEsbykpKTtpZihzLmxlbmd0aD4wKXtsZXQgbD1zLmxlbmd0aC0xO2E9c1tsXSxhLm5hbWU9by5tZXRhZGF0YSgpLm5hbWUsYS5yZWxhdGl2ZT1yMChhLC0xLG8pfXJldHVybiBhfSkuZmlsdGVyKG89Pm8hPW51bGwpO3RoaXMubGFzdFBvaW50c0RhdGFzZXQuZGF0YShyKSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cy5tYXAodGhpcy5jcmVhdGVTYW1wbGVkRGF0YXNldEZvck1hcmtlcnMpKTtsZXQgbj1vPT57bGV0IGE9bnVsbCxzPW8uZGF0YSgpLGw9MDtmb3IoO2w8cy5sZW5ndGgmJmE9PW51bGw7KWlzTmFOKHQoc1tsXSwtMSxvKSl8fChhPXQoc1tsXSwtMSxvKSksbCsrO2E9PW51bGwmJihhPTApO2xldCBjPVtdO2ZvcihsPTA7bDxzLmxlbmd0aDtsKyspaXNOYU4odChzW2xdLC0xLG8pKT8oc1tsXS5uYW1lPW8ubWV0YWRhdGEoKS5uYW1lLHNbbF0uZGlzcGxheVk9YSxzW2xdLnJlbGF0aXZlPXIwKHNbbF0sLTEsbyksYy5wdXNoKHNbbF0pKTphPXQoc1tsXSwtMSxvKTtyZXR1cm4gY30saT1Pcy5mbGF0dGVuKHRoaXMuZGF0YXNldHMubWFwKG4pKTt0aGlzLm5hbkRhdGFzZXQuZGF0YShpKX1yZXNldERvbWFpbigpe3RoaXMucmVzZXRYRG9tYWluKCksdGhpcy5yZXNldFlEb21haW4oKX1yZXNldFhEb21haW4oKXtsZXQgdDtpZih0aGlzLl9kZWZhdWx0WFJhbmdlIT1udWxsKXQ9dGhpcy5fZGVmYXVsdFhSYW5nZTtlbHNle2xldCByPXRoaXMueFNjYWxlO3IuX2RvbWFpbk1pbj1udWxsLHIuX2RvbWFpbk1heD1udWxsLHQ9ci5fZ2V0RXh0ZW50KCl9dGhpcy54U2NhbGUuZG9tYWluKHQpfXJlc2V0WURvbWFpbigpe3RoaXMuX2RlZmF1bHRZUmFuZ2UhPW51bGw/dGhpcy55U2NhbGUuZG9tYWluKHRoaXMuX2RlZmF1bHRZUmFuZ2UpOih0aGlzLnlTY2FsZS5hdXRvRG9tYWluKCksdGhpcy55U2NhbGUuZG9tYWluKHRoaXMueVNjYWxlLmRvbWFpbigpKSl9Z2V0QWNjZXNzb3JzRm9yQ29tcHV0aW5nWVJhbmdlKCl7bGV0IHQ9W3RoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpXTtyZXR1cm4gdGhpcy5maWxsQXJlYSYmdC5wdXNoKHRoaXMuZmlsbEFyZWEubG93ZXJBY2Nlc3Nvcix0aGlzLmZpbGxBcmVhLmhpZ2hlckFjY2Vzc29yKSx0fWdldFlBeGlzQWNjZXNzb3IoKXtyZXR1cm4gdGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3Nvcjp0aGlzLnlWYWx1ZUFjY2Vzc29yfWNyZWF0ZVRvb2x0aXBJbnRlcmFjdGlvbih0KXtsZXQgcj1uZXcgeEIsbj0oKT0+e3IuZW5hYmxlZCghMSksdGhpcy5oaWRlVG9vbHRpcHMoKX0saT0oKT0+ci5lbmFibGVkKCEwKTtyZXR1cm4gdC5vblBhblN0YXJ0KG4pLHQub25EcmFnWm9vbVN0YXJ0KG4pLHQub25QYW5FbmQoaSksdC5vbkRyYWdab29tRW5kKGkpLHQub25TY3JvbGxab29tKCgpPT50aGlzLnVwZGF0ZVRvb2x0aXBDb250ZW50KHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uKSksci5vblBvaW50ZXJNb3ZlKG89Pnt0aGlzLl9sYXN0TW91c2VQb3NpdGlvbj1vLHRoaXMudXBkYXRlVG9vbHRpcENvbnRlbnQobyl9KSxyLm9uUG9pbnRlckV4aXQoKCk9PnRoaXMuaGlkZVRvb2x0aXBzKCkpLHJ9dXBkYXRlVG9vbHRpcENvbnRlbnQodCl7IXRoaXMubGluZVBsb3R8fCh3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lKSx0aGlzLl90b29sdGlwVXBkYXRlQW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2xldCByPXt4OnQueCx5OnQueX0sbj10aGlzLmdyaWRsaW5lcy5jb250ZW50KCkubm9kZSgpLmdldEJCb3goKSxpPXRoaXMubGluZVBsb3QuZGF0YXNldHMoKS5tYXAobD0+dGhpcy5maW5kQ2xvc2VzdFBvaW50KHIsbCkpLmZpbHRlcihsPT5Cb29sZWFuKGwpKSxvPU1uLlV0aWxzLkRPTS5pbnRlcnNlY3RzQkJveCxhPWkuZmlsdGVyKGw9Pm8obC54LGwueSxuKXx8aXNOYU4odGhpcy55VmFsdWVBY2Nlc3NvcihsLmRhdHVtLDAsbC5kYXRhc2V0KSkpLHM9YS5maWx0ZXIobD0+IWlzTmFOKHRoaXMueVZhbHVlQWNjZXNzb3IobC5kYXR1bSwwLGwuZGF0YXNldCkpKTtpZihpLmxlbmd0aCE9PTApe3RoaXMuc2NhdHRlclBsb3QuYXR0cigiZGlzcGxheSIsIm5vbmUiKTtsZXQgbD10aGlzLnRvb2x0aXBQb2ludHNDb21wb25lbnQuY29udGVudCgpLnNlbGVjdEFsbCgiLnBvaW50IikuZGF0YShzLGM9PmMuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpO2wuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmNsYXNzZWQoInBvaW50IiwhMCksbC5hdHRyKCJyIixkQikuYXR0cigiY3giLGM9PmMueCkuYXR0cigiY3kiLGM9PmMueSkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmaWxsIixjPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUoYy5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpLGwuZXhpdCgpLnJlbW92ZSgpLHRoaXMuZHJhd1Rvb2x0aXBzKGEscix0aGlzLnRvb2x0aXBDb2x1bW5zKX1lbHNlIHRoaXMuaGlkZVRvb2x0aXBzKCl9KSl9aGlkZVRvb2x0aXBzKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy50b29sdGlwLmhpZGUoKSx0aGlzLnNjYXR0ZXJQbG90LmF0dHIoImRpc3BsYXkiLCJibG9jayIpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudC5jb250ZW50KCkuc2VsZWN0QWxsKCIucG9pbnQiKS5yZW1vdmUoKX1zZXR1cFRvb2x0aXBzKHQpe3Qub25EZXRhY2goKCk9Pnt0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbi5kZXRhY2hGcm9tKHQpLHRoaXMudG9vbHRpcEludGVyYWN0aW9uLmVuYWJsZWQoITEpfSksdC5vbkFuY2hvcigoKT0+e3RoaXMudG9vbHRpcEludGVyYWN0aW9uLmF0dGFjaFRvKHQpLHRoaXMudG9vbHRpcEludGVyYWN0aW9uLmVuYWJsZWQoITApfSl9ZHJhd1Rvb2x0aXBzKHQscixuKXtpZighdC5sZW5ndGgpe3RoaXMudG9vbHRpcC5oaWRlKCk7cmV0dXJufWxldHtjb2xvclNjYWxlOml9PXRoaXM7bj1be3RpdGxlOiIiLHN0YXRpYzohMSxldmFsVHlwZTpDQi5ET00sZXZhbHVhdGUoZCl7cmV0dXJuIEh0KHRoaXMpLnNlbGVjdCgic3BhbiIpLnN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwoKT0+aS5zY2FsZShkLmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSksIiJ9LGVudGVyKGQpe0h0KHRoaXMpLmFwcGVuZCgic3BhbiIpLmNsYXNzZWQoInN3YXRjaCIsITApLnN0eWxlKCJiYWNrZ3JvdW5kLWNvbG9yIiwoKT0+aS5zY2FsZShkLmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSl9fSwuLi5uXTtsZXQgYT1HdShlMCkscz1kPT5NYXRoLnBvdyhkLngtci54LDIpK01hdGgucG93KGQueS1yLnksMiksbD1Pcy5taW4odC5tYXAocykpLGM9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3Nvcjp0aGlzLnlWYWx1ZUFjY2Vzc29yO3RoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q9PT0iYXNjZW5kaW5nIj90PU9zLnNvcnRCeSh0LGQ9PmMoZC5kYXR1bSwtMSxkLmRhdGFzZXQpKTp0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kPT09ImRlc2NlbmRpbmciP3Q9T3Muc29ydEJ5KHQsZD0+YyhkLmRhdHVtLC0xLGQuZGF0YXNldCkpLnJldmVyc2UoKTp0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kPT09Im5lYXJlc3QiP3Q9T3Muc29ydEJ5KHQscyk6dD10LnNsaWNlKDApLnJldmVyc2UoKTtsZXQgdT10aGlzLGg9SHQodGhpcy50b29sdGlwLmNvbnRlbnQoKSkuc2VsZWN0KCJ0YWJsZSIpLGY9aC5zZWxlY3QoInRoZWFkIikuc2VsZWN0QWxsKCJ0aCIpLmRhdGEobiwoZCxnLF8pPT5kLnRpdGxlKTtmLmVudGVyKCkuYXBwZW5kKCJ0aCIpLnRleHQoZD0+ZC50aXRsZSkubm9kZXMoKSxmLmV4aXQoKS5yZW1vdmUoKTtsZXQgcD1oLnNlbGVjdCgidGJvZHkiKS5zZWxlY3RBbGwoInRyIikuZGF0YSh0LChkLGcsXyk9PmQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpO3AuY2xhc3NlZCgiZGlzdGFudCIsZD0+e2xldCBnPWQuZGF0YXNldC5kYXRhKClbMF0sXz1Pcy5sYXN0KGQuZGF0YXNldC5kYXRhKCkpLHk9dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IoZywwLGQuZGF0YXNldCkpLHg9dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IoXywwLGQuZGF0YXNldCkpLGI9dGhpcy5zbW9vdGhpbmdFbmFibGVkP2QuZGF0dW0uc21vb3RoZWQ6dGhpcy55VmFsdWVBY2Nlc3NvcihkLmRhdHVtLDAsZC5kYXRhc2V0KTtyZXR1cm4gci54PHl8fHIueD54fHxpc05hTihiKX0pLmNsYXNzZWQoImNsb3Nlc3QiLGQ9PnMoZCk9PT1sKS5lYWNoKGZ1bmN0aW9uKGQpe3UuZHJhd1Rvb2x0aXBSb3codGhpcyxuLGQpfSkub3JkZXIoKSxwLmV4aXQoKS5yZW1vdmUoKSxwLmVudGVyKCkuYXBwZW5kKCJ0ciIpLmVhY2goZnVuY3Rpb24oZCl7dS5kcmF3VG9vbHRpcFJvdyh0aGlzLG4sZCl9KS5ub2RlcygpLHRoaXMudG9vbHRpcC51cGRhdGVBbmRQb3NpdGlvbih0aGlzLnRhcmdldFNWRy5ub2RlKCkpfWRyYXdUb29sdGlwUm93KHQscixuKXtsZXQgaT10aGlzLG89SHQodCkuc2VsZWN0QWxsKCJ0ZCIpLmRhdGEocik7by5lYWNoKGZ1bmN0aW9uKGEpe2Euc3RhdGljfHxpLmRyYXdUb29sdGlwQ29sdW1uLmNhbGwoaSx0aGlzLGEsbil9KSxvLmV4aXQoKS5yZW1vdmUoKSxvLmVudGVyKCkuYXBwZW5kKCJ0ZCIpLmVhY2goZnVuY3Rpb24oYSl7ImVudGVyImluIGEmJmEuZW50ZXIuY2FsbCh0aGlzLG4pLGkuZHJhd1Rvb2x0aXBDb2x1bW4uY2FsbChpLHRoaXMsYSxuKX0pfWRyYXdUb29sdGlwQ29sdW1uKHQscixuKXtsZXR7c21vb3RoaW5nRW5hYmxlZDppfT10aGlzOyJldmFsVHlwZSJpbiByJiZyLmV2YWxUeXBlPT1DQi5ET00/ci5ldmFsdWF0ZS5jYWxsKHQsbix7c21vb3RoaW5nRW5hYmxlZDppfSk6SHQodCkudGV4dChyLmV2YWx1YXRlLmNhbGwodCxuLHtzbW9vdGhpbmdFbmFibGVkOml9KSl9ZmluZENsb3Nlc3RQb2ludCh0LHIpe2xldCBuPXIuZGF0YSgpLm1hcCgocyxsKT0+dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IocyxsLHIpKSksaT1Pcy5zb3J0ZWRJbmRleChuLHQueCk7aWYobi5sZW5ndGg9PTApcmV0dXJuIG51bGw7aWYoaT09PW4ubGVuZ3RoKWk9aS0xO2Vsc2UgaWYoaSE9PTApe2xldCBzPU1hdGguYWJzKG5baS0xXS10LngpLGw9TWF0aC5hYnMobltpXS10LngpO2k9czxsP2ktMTppfWxldCBvPXIuZGF0YSgpW2ldLGE9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3NvcihvLGkscik6dGhpcy55VmFsdWVBY2Nlc3NvcihvLGkscik7cmV0dXJue3g6bltpXSx5OnRoaXMueVNjYWxlLnNjYWxlKGEpLGRhdHVtOm8sZGF0YXNldDpyfX1yZXNtb290aERhdGFzZXQodCl7bGV0IHI9dC5kYXRhKCksbj10aGlzLnNtb290aGluZ1dlaWdodCxpPXIubGVuZ3RoPjA/MDpOYU4sbz0wLGE9ci5tYXAoKGwsYyk9PnRoaXMueVZhbHVlQWNjZXNzb3IobCxjLHQpKSxzPWEuZXZlcnkobD0+bD09YVswXSk7ci5mb3JFYWNoKChsLGMpPT57bGV0IHU9YVtjXTtpZihzfHwhTnVtYmVyLmlzRmluaXRlKHUpKWwuc21vb3RoZWQ9dTtlbHNle2k9aSpuKygxLW4pKnUsbysrO2xldCBoPTE7biE9PTEmJihoPTEtTWF0aC5wb3cobixvKSksbC5zbW9vdGhlZD1pL2h9fSl9Z2V0RGF0YXNldCh0KXtyZXR1cm4gdGhpcy5uYW1lMmRhdGFzZXRzW3RdPT09dm9pZCAwJiYodGhpcy5uYW1lMmRhdGFzZXRzW3RdPW5ldyBNbi5EYXRhc2V0KFtdLHtuYW1lOnQsbWV0YTpudWxsfSkpLHRoaXMubmFtZTJkYXRhc2V0c1t0XX1zdGF0aWMgZ2V0WVNjYWxlRnJvbVR5cGUodCl7aWYodD09PXpmLkxPRylyZXR1cm4gbmV3IEVCO2lmKHQ9PT16Zi5MSU5FQVIpcmV0dXJuIG5ldyBiQjt0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB5U2NhbGUgdHlwZSAiK3QpfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5kaXNhYmxlQ2hhbmdlcygpLHQ9dC5zb3J0KCksdC5yZXZlcnNlKCksdGhpcy5zZXJpZXNOYW1lcz10fWRpc2FibGVDaGFuZ2VzKCl7dGhpcy5kaXJ0eURhdGFzZXRzLnNpemV8fCh0aGlzLmxpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLnNtb290aExpbmVQbG90JiZ0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLm1hcmdpbkFyZWFQbG90JiZ0aGlzLm1hcmdpbkFyZWFQbG90LmRhdGFzZXRzKFtdKSl9Y29tbWl0Q2hhbmdlcygpe3RoaXMuZGF0YXNldHM9dGhpcy5zZXJpZXNOYW1lcy5tYXAodD0+dGhpcy5nZXREYXRhc2V0KHQpKSxbLi4udGhpcy5kaXJ0eURhdGFzZXRzXS5mb3JFYWNoKHQ9Pnt0aGlzLnNtb290aGluZ0VuYWJsZWQmJnRoaXMucmVzbW9vdGhEYXRhc2V0KHRoaXMuZ2V0RGF0YXNldCh0KSl9KSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpLHRoaXMubGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyksdGhpcy5zbW9vdGhpbmdFbmFibGVkJiZ0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMpLHRoaXMubWFyZ2luQXJlYVBsb3QmJnRoaXMubWFyZ2luQXJlYVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyksdGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCksdGhpcy5kaXJ0eURhdGFzZXRzLmNsZWFyKCl9Y3JlYXRlU2FtcGxlZERhdGFzZXRGb3JNYXJrZXJzKHQpe2xldCByPXQuZGF0YSgpO2lmKHIubGVuZ3RoPD16S3QpcmV0dXJuIHQ7bGV0IG49TWF0aC5jZWlsKHIubGVuZ3RoL3pLdCksaT1uZXcgQXJyYXkoTWF0aC5mbG9vcihyLmxlbmd0aC9uKSk7Zm9yKGxldCBvPTAsYT0wO288aS5sZW5ndGg7bysrLGErPW4paVtvXT1yW2FdO3JldHVybiBuZXcgTW4uRGF0YXNldChpLHQubWV0YWRhdGEoKSl9c2V0U2VyaWVzRGF0YSh0LHIpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSx0aGlzLmdldERhdGFzZXQodCkuZGF0YShyKSx0aGlzLmRpcnR5RGF0YXNldHMuYWRkKHQpfXNldFNlcmllc01ldGFkYXRhKHQscil7dGhpcy5kaXNhYmxlQ2hhbmdlcygpLHRoaXMuZ2V0RGF0YXNldCh0KS5tZXRhZGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5nZXREYXRhc2V0KHQpLm1ldGFkYXRhKCkpLHttZXRhOnJ9KSksdGhpcy5kaXJ0eURhdGFzZXRzLmFkZCh0KX1zbW9vdGhpbmdVcGRhdGUodCl7dGhpcy5zbW9vdGhpbmdXZWlnaHQ9dCx0aGlzLmRhdGFzZXRzLmZvckVhY2gocj0+dGhpcy5yZXNtb290aERhdGFzZXQocikpLHRoaXMuc21vb3RoaW5nRW5hYmxlZHx8KHRoaXMubGluZVBsb3QuYWRkQ2xhc3MoImdob3N0IiksdGhpcy5zY2F0dGVyUGxvdC55KHRoaXMuc21vb3RoZWRBY2Nlc3Nvcix0aGlzLnlTY2FsZSksdGhpcy5zbW9vdGhpbmdFbmFibGVkPSEwLHRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cykpLHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90JiZ0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdC55KHRoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpLHRoaXMueVNjYWxlKSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpfXNtb290aGluZ0Rpc2FibGUoKXt0aGlzLnNtb290aGluZ0VuYWJsZWQmJih0aGlzLmxpbmVQbG90LnJlbW92ZUNsYXNzKCJnaG9zdCIpLHRoaXMuc2NhdHRlclBsb3QueSh0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlKSx0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKFtdKSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITEsdGhpcy51cGRhdGVTcGVjaWFsRGF0YXNldHMoKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LnkodGhpcy5nZXRZQXhpc0FjY2Vzc29yKCksdGhpcy55U2NhbGUpfXNldENvbG9yU2NhbGUodCl7dGhpcy5jb2xvclNjYWxlPXR9c2V0VG9vbHRpcENvbHVtbnModCl7dGhpcy50b29sdGlwQ29sdW1ucz10fXNldFRvb2x0aXBTb3J0aW5nTWV0aG9kKHQpe3RoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q9dH1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCksdGhpcy5fZGVmYXVsdFhSYW5nZSE9bnVsbCYmdGhpcy5yZXNldFhEb21haW4oKSx0aGlzLl9kZWZhdWx0WVJhbmdlIT1udWxsJiZ0aGlzLnJlc2V0WURvbWFpbigpLHRoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXRJblJhZigpfXJlZHJhdygpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHRoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpLHRoaXMub3V0ZXIucmVkcmF3KCl9KX1tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2ludmFsaWRhdGVMYXlvdXRSYWYpLHRoaXMuX2ludmFsaWRhdGVMYXlvdXRSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKX0pfW1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0KCl7aWYodGhpcy5fbGFzdERyYXdCQm94KXtsZXR7d2lkdGg6dH09dGhpcy5fbGFzdERyYXdCQm94LHt3aWR0aDpyfT10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dD09MCYmdDxyJiZ0aGlzLm91dGVyLmludmFsaWRhdGVDYWNoZSgpfXRoaXMuX2xhc3REcmF3QkJveD10aGlzLnRhcmdldFNWRy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZGVzdHJveSgpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmKSx0aGlzLm91dGVyJiZ0aGlzLm91dGVyLmRlc3Ryb3koKX1vbkFuY2hvcih0KXt0aGlzLm91dGVyJiZ0aGlzLm91dGVyLm9uQW5jaG9yKHQpfWlzRGF0YUZpdFRvRG9tYWluKCl7cmV0dXJuIHQodGhpcy54QXhpcy5nZXRTY2FsZSgpKSYmdCh0aGlzLnlBeGlzLmdldFNjYWxlKCkpO2Z1bmN0aW9uIHQocil7bGV0IG49ci5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpLGk9ci5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCgpO3JldHVybiBpWzBdPT09blswXSYmaVsxXT09PW5bMV19fX07dmFyIEJLdD1FZShPZSgpLDEpLHJzdD1FZShibCgpLDEpO2dzKHttb2R1bGVOYW1lOiJwbG90dGFibGUtc3R5bGUiLHN0eWxlQ29udGVudDpgCiAgICAKLnBsb3R0YWJsZS1jb2xvcnMtMCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzUyNzljNzsgLyogSU5ESUdPICovCn0KCi5wbG90dGFibGUtY29sb3JzLTEgewogIGJhY2tncm91bmQtY29sb3I6ICNmZDM3M2U7IC8qIENPUkFMX1JFRCAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy0yIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjNjMjYxOyAvKiBGRVJOICovCn0KCi5wbG90dGFibGUtY29sb3JzLTMgewogIGJhY2tncm91bmQtY29sb3I6ICNmYWQ0MTk7IC8qIEJSSUdIVF9TVU4gKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtNCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmI2ZjsgLyogSkFDQVJUQSAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy01IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3OTM5OyAvKiBCVVJOSU5HX09SQU5HRSAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy02IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGIyZTY1OyAvKiBDRVJJU0VfUkVEICovCn0KCi5wbG90dGFibGUtY29sb3JzLTcgewogIGJhY2tncm91bmQtY29sb3I6ICM5OWNlNTA7IC8qIENPTklGRVIgKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtOCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzk2MjU2NTsgLyogUk9ZQUxfSEVBVEggKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtOSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzA2Y2NjYzsgLyogUk9CSU5TX0VHR19CTFVFICovCn0KCi8qKgogKiBVc2VyLXN1cHBsaWVkIHJlbmRlclRvIGVsZW1lbnQuCiAqLwoucGxvdHRhYmxlIHsKICBkaXNwbGF5OiBibG9jazsgLyogbXVzdCBiZSBibG9jayBlbGVtZW50cyBmb3Igd2lkdGgvaGVpZ2h0IGNhbGN1bGF0aW9ucyB0byB3b3JrIGluIEZpcmVmb3guICovCiAgcG9pbnRlci1ldmVudHM6IHZpc2libGVGaWxsOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAvKioKICAgKiBQcmUgMy4wLCB1c2VycyBjb3VsZCBzZXQgdGhlIGRpbWVuc2lvbiBvZiB0aGUgcm9vdCBlbGVtZW50IGluIHR3byB3YXlzOiBlaXRoZXIgdXNpbmcgQ1NTCiAgICogKGlubGluZSBvciB0aHJvdWdoIGEgc3R5bGVzaGVldCksIG9yIHVzaW5nIHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMuIEJ5IGRlZmF1bHQsIHdlCiAgICogc2V0IHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgdG8gMTAwJS4KICAgKgogICAqIFBvc3QgMy4wIHRoZSByb290IGVsZW1lbnQgaXMgYWx3YXlzIGEgbm9ybWFsIGRpdiBhbmQgdGhlIG9ubHkgd2F5IHRvIHNldCB0aGUgZGltZW5zaW9ucyBpcwogICAqIHRvIHVzZSBDU1MuIFRvIHJlcGxpY2F0ZSB0aGUgIjEwMCUtYnktZGVmYXVsdCIgYmVoYXZpb3IsIHdlIGFwcGx5IHdpZHRoL2hlaWdodCAxMDAlLgogICAqLwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKfQoKLyoqCiAqIFRoZSBfZWxlbWVudCB0aGF0IHJvb3RzIGVhY2ggQ29tcG9uZW50J3MgRE9NLgogKi8KLnBsb3R0YWJsZSAuY29tcG9uZW50IHsKICAvKiBBbGxvdyBjb21wb25lbnRzIHRvIGJlIHBvc2l0aW9uZWQgd2l0aCBleHBsaWNpdCBsZWZ0L3RvcC93aWR0aC9oZWlnaHQgc3R5bGVzICovCiAgcG9zaXRpb246IGFic29sdXRlOwp9CgoucGxvdHRhYmxlIC5iYWNrZ3JvdW5kLWNvbnRhaW5lciwKLnBsb3R0YWJsZSAuY29udGVudCwKLnBsb3R0YWJsZSAuZm9yZWdyb3VuZC1jb250YWluZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7Cn0KCi8qKgogKiBEb24ndCBhbGxvdyBzdmcgZWxlbWVudHMgYWJvdmUgdGhlIGNvbnRlbnQgdG8gc3RlYWwgZXZlbnRzCiAqLwoucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5wbG90dGFibGUgLmNvbXBvbmVudC1vdmVyZmxvdy1oaWRkZW4gewogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5wbG90dGFibGUgLmNvbXBvbmVudC1vdmVyZmxvdy12aXNpYmxlIHsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQoKLnBsb3R0YWJsZSAucGxvdC1jYW52YXMtY29udGFpbmVyIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnBsb3R0YWJsZSAucGxvdC1jYW52YXMgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICAvKioKICAgKiBQbGF5IHdlbGwgd2l0aCBkZWZlcnJlZCByZW5kZXJpbmcuCiAgICovCiAgdHJhbnNmb3JtLW9yaWdpbjogMHB4IDBweCAwcHg7Cn0KCi5wbG90dGFibGUgdGV4dCB7CiAgdGV4dC1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjsKfQoKLnBsb3R0YWJsZSAubGFiZWwgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKfQoKLnBsb3R0YWJsZSAuYmFyLWxhYmVsLXRleHQtYXJlYSB0ZXh0LAoucGxvdHRhYmxlIC5zY2F0dGVyLWxhYmVsLXRleHQtYXJlYSB0ZXh0IHsKICBmb250LXNpemU6IDEycHg7Cn0KCi5wbG90dGFibGUgLmxhYmVsLWFyZWEgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LXNpemU6IDE0cHg7Cn0KCi5wbG90dGFibGUgLmxpZ2h0LWxhYmVsIHRleHQgewogIGZpbGw6IHdoaXRlOwp9CgoucGxvdHRhYmxlIC5kYXJrLWxhYmVsIHRleHQgewogIGZpbGw6ICMzMjMxM0Y7Cn0KCi5wbG90dGFibGUgLm9mZi1iYXItbGFiZWwgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKfQoKLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItbGFiZWwgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LXN0eWxlOiBub3JtYWw7Cn0KCi5wbG90dGFibGUgLnN0YWNrZWQtYmFyLXBsb3QgLm9mZi1iYXItbGFiZWwgewogIC8qIEhBQ0tIQUNLICMyNzk1OiBjb3JyZWN0IG9mZi1iYXIgbGFiZWwgbG9naWMgdG8gYmUgaW1wbGVtZW50ZWQgb24gU3RhY2tlZEJhciAqLwogIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgoucGxvdHRhYmxlIC5heGlzLWxhYmVsIHRleHQgewogIGZvbnQtc2l6ZTogMTBweDsKICBmb250LXdlaWdodDogYm9sZDsKICBsZXR0ZXItc3BhY2luZzogMXB4OwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLnBsb3R0YWJsZSAudGl0bGUtbGFiZWwgdGV4dCB7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoucGxvdHRhYmxlIC5heGlzIGxpbmUuYmFzZWxpbmUgewogIHN0cm9rZTogI0NDQzsKICBzdHJva2Utd2lkdGg6IDFweDsKfQoKLnBsb3R0YWJsZSAuYXhpcyBsaW5lLnRpY2stbWFyayB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5heGlzIHRleHQgewogIGZpbGw6ICMzMjMxM0Y7CiAgZm9udC1zaXplOiAxMnB4OwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1jaXJjbGUgewogIGZpbGw6IHdoaXRlOwogIHN0cm9rZS13aWR0aDogMXB4OwogIHN0cm9rZTogI0NDQzsKfQoKLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1saW5lIHsKICBzdHJva2U6ICNDQ0M7CiAgc3Ryb2tlLXdpZHRoOiAxcHg7Cn0KCi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tcmVjdCB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4OwogIGZpbGw6IHdoaXRlOwp9CgoucGxvdHRhYmxlIC5iYXItcGxvdCAuYmFzZWxpbmUgewogIHN0cm9rZTogIzk5OTsKfQoKLnBsb3R0YWJsZSAuZ3JpZGxpbmVzIGxpbmUgewogIHN0cm9rZTogIzNDM0MzQzsgLyogaGFja2hhY2s6IGdyaWRsaW5lcyBzaG91bGQgYmUgc29saWQ7IHNlZSAjODIwICovCiAgb3BhY2l0eTogMC4yNTsKICBzdHJva2Utd2lkdGg6IDFweDsKfQoKLnBsb3R0YWJsZSAuc2VsZWN0aW9uLWJveC1sYXllciAuc2VsZWN0aW9uLWFyZWEgewogIGZpbGw6IGJsYWNrOwogIGZpbGwtb3BhY2l0eTogMC4wMzsKICBzdHJva2U6ICNDQ0M7Cn0KLyogRHJhZ0JveExheWVyICovCi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlIC5kcmFnLWVkZ2UtbHIgewogIGN1cnNvcjogZXctcmVzaXplOwp9Ci5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLnktcmVzaXphYmxlIC5kcmFnLWVkZ2UtdGIgewogIGN1cnNvcjogbnMtcmVzaXplOwp9CgoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItdGwgewogIGN1cnNvcjogbndzZS1yZXNpemU7Cn0KLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLXRyIHsKICBjdXJzb3I6IG5lc3ctcmVzaXplOwp9Ci5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci1ibCB7CiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTsKfQoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItYnIgewogIGN1cnNvcjogbndzZS1yZXNpemU7Cn0KCi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLm1vdmFibGUgLnNlbGVjdGlvbi1hcmVhIHsKICBjdXJzb3I6IG1vdmU7IC8qIElFIGZhbGxiYWNrICovCiAgY3Vyc29yOiAtbW96LWdyYWI7CiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgY3Vyc29yOiBncmFiOwp9CgoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci5tb3ZhYmxlIC5zZWxlY3Rpb24tYXJlYTphY3RpdmUgewogIGN1cnNvcjogLW1vei1ncmFiYmluZzsKICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7CiAgY3Vyc29yOiBncmFiYmluZzsKfQovKiAvRHJhZ0JveExheWVyICovCgoucGxvdHRhYmxlIC5ndWlkZS1saW5lLWxheWVyIGxpbmUuZ3VpZGUtbGluZSB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5kcmFnLWxpbmUtbGF5ZXIuZW5hYmxlZC52ZXJ0aWNhbCBsaW5lLmRyYWctZWRnZSB7CiAgY3Vyc29yOiBldy1yZXNpemU7Cn0KCi5wbG90dGFibGUgLmRyYWctbGluZS1sYXllci5lbmFibGVkLmhvcml6b250YWwgbGluZS5kcmFnLWVkZ2UgewogIGN1cnNvcjogbnMtcmVzaXplOwp9CgoucGxvdHRhYmxlIC5sZWdlbmQgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LXNpemU6IDEycHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLnBsb3R0YWJsZSAuaW50ZXJwb2xhdGVkLWNvbG9yLWxlZ2VuZCByZWN0LnN3YXRjaC1ib3VuZGluZy1ib3ggewogIGZpbGw6IG5vbmU7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoucGxvdHRhYmxlIC53YXRlcmZhbGwtcGxvdCBsaW5lLmNvbm5lY3RvciB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5waWUtcGxvdCAuYXJjLm91dGxpbmUgewogIHN0cm9rZS1saW5lam9pbjogcm91bmQ7Cn0KCmB9KTt2YXIgaTA7KGZ1bmN0aW9uKGUpe2UuR1JPVVA9IkciLGUuRElWPSJESVYiLGUuU1ZHPSJTVkciLGUuVEVYVD0iVEVYVCJ9KShpMHx8KGkwPXt9KSk7dmFyIHRzdD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnVuaXF1ZUlkPTAsdGhpcy5yb290PXR9ZXhwb3J0QXNTdHJpbmcoKXtsZXQgdD10aGlzLmNvbnZlcnQodGhpcy5yb290KTtpZighdClyZXR1cm4iIjtsZXQgcj10aGlzLmNyZWF0ZVJvb3RTdmcoKTtyZXR1cm4gci5hcHBlbmRDaGlsZCh0KSxyLm91dGVySFRNTH1jcmVhdGVVbmlxdWVJZCh0KXtyZXR1cm5gJHt0fV8ke3RoaXMudW5pcXVlSWQrK31gfWdldFNpemUoKXtyZXR1cm4gdGhpcy5yb290LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNyZWF0ZVJvb3RTdmcoKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdmciKSxyPXRoaXMuZ2V0U2l6ZSgpO3JldHVybiB0LnNldEF0dHJpYnV0ZU5TKCJzdmciLCJ2aWV3Qm94IixgMCAwICR7ci53aWR0aH0gJHtyLmhlaWdodH1gKSx0LnNldEF0dHJpYnV0ZSgieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIpLHR9Y3JlYXRlQ29udmVydGVkTm9kZSh0KXtsZXQgcj10Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk7aWYodC5ub2RlVHlwZT09Tm9kZS5FTEVNRU5UX05PREUmJihyPT1pMC5ESVZ8fHI9PWkwLlNWRykpe2xldCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaTAuR1JPVVApLGk9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCksbz1wYXJzZUludChpLmxlZnQsMTApLGE9cGFyc2VJbnQoaS50b3AsMTApO2lmKG98fGEpe2xldCBzPXRoaXMuY3JlYXRlVW5pcXVlSWQoImNsaXAiKTtuLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7b30sICR7YX0pYCksbi5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsYHVybCgjJHtzfSlgKTtsZXQgbD1wYXJzZUludChpLndpZHRoLDEwKSxjPXBhcnNlSW50KGkuaGVpZ2h0LDEwKSx1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInJlY3QiKTt1LnNldEF0dHJpYnV0ZSgid2lkdGgiLFN0cmluZyhsKSksdS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsU3RyaW5nKGMpKTtsZXQgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoInN2ZyIsImNsaXBQYXRoIik7aC5pZD1zLGguYXBwZW5kQ2hpbGQodSksbi5hcHBlbmRDaGlsZChoKX1yZXR1cm4gbn1lbHNlIHJldHVybiB0LmNsb25lTm9kZSgpfWNvbnZlcnQodCl7bGV0IHI9dGhpcy5jcmVhdGVDb252ZXJ0ZWROb2RlKHQpO3JldHVybiBBcnJheS5mcm9tKHQuY2hpbGROb2RlcykubWFwKGk9PnRoaXMuY29udmVydChpKSkuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2goaT0+e3IuYXBwZW5kQ2hpbGQoaSl9KSxyLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PWkwLkdST1VQJiYhci5oYXNDaGlsZE5vZGVzKCl8fHRoaXMuc2hvdWxkT21pdE5vZGUodCk/bnVsbDp0aGlzLnN0cmlwQ2xhc3ModGhpcy50cmFuc2ZlclN0eWxlKHQscikpfXN0cmlwQ2xhc3ModCl7cmV0dXJuIHQubm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKSx0fXRyYW5zZmVyU3R5bGUodCxyKXtpZihyLm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gcjtsZXQgbj1yLGk9ci5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpLG89d2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7cmV0dXJuIGk9PWkwLlRFWFQmJk9iamVjdC5hc3NpZ24obi5zdHlsZSx7Zm9udEZhbWlseTpvLmZvbnRGYW1pbHksZm9udFNpemU6by5mb250U2l6ZSxmb250V2VpZ2h0Om8uZm9udFdlaWdodH0pLGkhPWkwLkdST1VQJiYobi5zZXRBdHRyaWJ1dGUoImZpbGwiLG8uZmlsbCksbi5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsby5zdHJva2UpLG4uc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLG8uc3Ryb2tlV2lkdGgpKSxvLm9wYWNpdHkhPSIxIiYmbi5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLG8ub3BhY2l0eSkscn1zaG91bGRPbWl0Tm9kZSh0KXtyZXR1cm4hMX19LEFCPWNsYXNzIGV4dGVuZHMgdHN0e3Nob3VsZE9taXROb2RlKHQpe3JldHVybiB0Lm5vZGVUeXBlPT1Ob2RlLkVMRU1FTlRfTk9ERT90LmNsYXNzTGlzdC5jb250YWlucygic2NhdHRlci1wbG90Iik6ITF9fTtncyh7bW9kdWxlTmFtZToidnotcGFuLXpvb20tc3R5bGUiLHN0eWxlQ29udGVudDpgCiAgICAuaGVscCB7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGFuaW1hdGlvbi1kZWxheTogMXM7CiAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7CiAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLW91dDsKICAgICAgYmFja2dyb3VuZDogcmdiYSgzMCwgMzAsIDMwLCAwLjYpOwogICAgICBib3R0b206IDA7CiAgICAgIGNvbG9yOiAjZmZmOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgbGVmdDogMDsKICAgICAgb3BhY2l0eTogMTsKICAgICAgcGFkZGluZzogMjBweDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgcmlnaHQ6IDA7CiAgICAgIHRvcDogMDsKICAgIH0KCiAgICAuaGVscCA+IHNwYW4gewogICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgfQoKICAgIEBrZXlmcmFtZXMgZmFkZS1vdXQgewogICAgICAwJSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgMTAwJSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQogICAgfQogIGB9KTt2YXIgRXFlPUd1KGUwKSxGS3Q9ZT0+aXNOYU4oZSk/Ik5hTiI6RXFlKGUpLG5zdD1be3RpdGxlOiJOYW1lIixldmFsdWF0ZTplPT5lLmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlNtb290aGVkIixldmFsdWF0ZShlLHQpe2xldHtzbW9vdGhpbmdFbmFibGVkOnJ9PXQ7cmV0dXJuIEZLdChyP2UuZGF0dW0uc21vb3RoZWQ6ZS5kYXR1bS5zY2FsYXIpfX0se3RpdGxlOiJWYWx1ZSIsZXZhbHVhdGU6ZT0+Rkt0KGUuZGF0dW0uc2NhbGFyKX0se3RpdGxlOiJTdGVwIixldmFsdWF0ZTplPT55NChlLmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOmU9Pm1CKGUuZGF0dW0ud2FsbF90aW1lKX0se3RpdGxlOiJSZWxhdGl2ZSIsZXZhbHVhdGU6ZT0+Z0IocjAoZS5kYXR1bSwtMSxlLmRhdGFzZXQpKX1dLFpyPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9bmV3IHJzdC5TY2FsZXMuQ29sb3IoKS5yYW5nZShZYi5zbGljZSgwKSksdGhpcy5zbW9vdGhpbmdFbmFibGVkPSExLHRoaXMuc21vb3RoaW5nV2VpZ2h0PS42LHRoaXMueFR5cGU9bnVsbCx0aGlzLnhDb21wb25lbnRzQ3JlYXRpb25NZXRob2Q9bnVsbCx0aGlzLnlWYWx1ZUFjY2Vzc29yPXQ9PnQuc2NhbGFyLHRoaXMudG9vbHRpcENvbHVtbnM9bnN0LHRoaXMueVNjYWxlVHlwZT16Zi5MSU5FQVIsdGhpcy5pZ25vcmVZT3V0bGllcnM9ITEsdGhpcy50b29sdGlwU29ydGluZ01ldGhvZD0iZGVmYXVsdCIsdGhpcy50b29sdGlwUG9zaXRpb249R3YuQk9UVE9NLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1bXSx0aGlzLl9zZXJpZXNEYXRhQ2FjaGU9e30sdGhpcy5fc2VyaWVzTWV0YWRhdGFDYWNoZT17fSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLmNoYXJ0ZGl2LCEwKX1hdHRhY2hlZCgpe2xldCB0PXtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9O3RoaXMuX2xpc3Rlbih0aGlzLCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHRoaXMsIm1vdXNldXAiLHRoaXMuX29uTW91c2VVcC5iaW5kKHRoaXMpLHQpLHRoaXMuX2xpc3Rlbih3aW5kb3csImtleWRvd24iLHRoaXMuX29uS2V5RG93bi5iaW5kKHRoaXMpLHQpLHRoaXMuX2xpc3Rlbih3aW5kb3csImtleXVwIix0aGlzLl9vbktleVVwLmJpbmQodGhpcyksdCl9ZGV0YWNoZWQoKXt0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQhPT1udWxsJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsKSx0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LmRlc3Ryb3koKSx0aGlzLl9jaGFydD12b2lkIDApLHRoaXMuX2xpc3RlbmVycyYmKHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCh7bm9kZTp0LGV2ZW50TmFtZTpyLGZ1bmM6bixvcHRpb246aX0pPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKHIsbixpKX0pLHRoaXMuX2xpc3RlbmVycy5jbGVhcigpKX1fbGlzdGVuKHQscixuLGk9e30pe3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgU2V0KSx0aGlzLl9saXN0ZW5lcnMuYWRkKHtub2RlOnQsZXZlbnROYW1lOnIsZnVuYzpuLG9wdGlvbjppfSksdC5hZGRFdmVudExpc3RlbmVyKHIsbixpKX1fb25LZXlEb3duKHQpe3RoaXMudG9nZ2xlQ2xhc3MoInBhbmtleSIsT2YuaXNQYW5LZXkodCkpfV9vbktleVVwKHQpe3RoaXMudG9nZ2xlQ2xhc3MoInBhbmtleSIsT2YuaXNQYW5LZXkodCkpfV9vbk1vdXNlRG93bih0KXt0aGlzLnRvZ2dsZUNsYXNzKCJtb3VzZWRvd24iLCEwKX1fb25Nb3VzZVVwKHQpe3RoaXMudG9nZ2xlQ2xhc3MoIm1vdXNlZG93biIsITEpfWlzRGF0YUZpdFRvRG9tYWluKCl7cmV0dXJuIHRoaXMuX2NoYXJ0P3RoaXMuX2NoYXJ0LmlzRGF0YUZpdFRvRG9tYWluKCk6ITB9c2V0VmlzaWJsZVNlcmllcyh0KXtCS3QuaXNFcXVhbCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUsdCl8fCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9dCl9c2V0U2VyaWVzRGF0YSh0LHIpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XT1yLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQscil9c2V0U2VyaWVzTWV0YWRhdGEodCxyKXt0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdPXIsdGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFNlcmllc01ldGFkYXRhKHQscil9Y29tbWl0Q2hhbmdlcygpeyF0aGlzLl9jaGFydHx8dGhpcy5fY2hhcnQuY29tbWl0Q2hhbmdlcygpfXJlc2V0RG9tYWluKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnJlc2V0RG9tYWluKCl9cmVkcmF3KCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnJlZHJhdygpfV9tYWtlQ2hhcnQoKXt0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQhPT1udWxsJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsKSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsO2xldCB0PXRoaXMueENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZDtpZighdGhpcy54VHlwZSYmIXQ/dD1qYXQ6dGhpcy54VHlwZSYmKHQ9KCk9Pl9CKHRoaXMueFR5cGUpKSwhKCF0fHwhdGhpcy55VmFsdWVBY2Nlc3Nvcnx8IXRoaXMudG9vbHRpcENvbHVtbnMpKXt2YXIgcj1uZXcgTlModCx0aGlzLnlWYWx1ZUFjY2Vzc29yLHRoaXMueVNjYWxlVHlwZSx0aGlzLmNvbG9yU2NhbGUsdGhpcy4kLnRvb2x0aXAsdGhpcy50b29sdGlwQ29sdW1ucyx0aGlzLmZpbGxBcmVhLHRoaXMuZGVmYXVsdFhSYW5nZSx0aGlzLmRlZmF1bHRZUmFuZ2UsdGhpcy5zeW1ib2xGdW5jdGlvbix0aGlzLnhBeGlzRm9ybWF0dGVyKSxuPUh0KHRoaXMuJC5jaGFydGRpdik7ci5yZW5kZXJUbyhuKSx0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpLHRoaXMuX2NoYXJ0PXIsdGhpcy5fY2hhcnQub25BbmNob3IoKCk9PnRoaXMuZmlyZSgiY2hhcnQtYXR0YWNoZWQiKSl9fSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXshdGhpcy5fY2hhcnR8fCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUuZm9yRWFjaCh0PT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LHRoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XXx8W10pfSksdGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlLmZpbHRlcih0PT50aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW3RdKS5mb3JFYWNoKHQ9Pnt0aGlzLl9jaGFydC5zZXRTZXJpZXNNZXRhZGF0YSh0LHRoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbdF0pfSksdGhpcy5fY2hhcnQuc2V0VmlzaWJsZVNlcmllcyh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUpLHRoaXMuX2NoYXJ0LmNvbW1pdENoYW5nZXMoKSl9X3Ntb290aGluZ0NoYW5nZWQoKXshdGhpcy5fY2hhcnR8fCh0aGlzLnNtb290aGluZ0VuYWJsZWQ/dGhpcy5fY2hhcnQuc21vb3RoaW5nVXBkYXRlKHRoaXMuc21vb3RoaW5nV2VpZ2h0KTp0aGlzLl9jaGFydC5zbW9vdGhpbmdEaXNhYmxlKCkpfV9vdXRsaWVyc0NoYW5nZWQoKXshdGhpcy5fY2hhcnR8fHRoaXMuX2NoYXJ0Lmlnbm9yZVlPdXRsaWVycyh0aGlzLmlnbm9yZVlPdXRsaWVycyl9X2NvbG9yU2NhbGVDaGFuZ2VkKCl7IXRoaXMuX2NoYXJ0fHwodGhpcy5fY2hhcnQuc2V0Q29sb3JTY2FsZSh0aGlzLmNvbG9yU2NhbGUpLHRoaXMuX2NoYXJ0LnJlZHJhdygpKX1fdG9vbHRpcENvbHVtbnNDaGFuZ2VkKCl7IXRoaXMuX2NoYXJ0fHx0aGlzLl9jaGFydC5zZXRUb29sdGlwQ29sdW1ucyh0aGlzLnRvb2x0aXBDb2x1bW5zKX1fdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkKCl7IXRoaXMuX2NoYXJ0fHx0aGlzLl9jaGFydC5zZXRUb29sdGlwU29ydGluZ01ldGhvZCh0aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kKX1nZXRFeHBvcnRlcigpe3JldHVybiBuZXcgQUIodGhpcy4kLmNoYXJ0ZGl2KX19O1pyLnRlbXBsYXRlPVFgCiAgICA8ZGl2IGlkPSJjaGFydGRpdiI+PC9kaXY+CiAgICA8dnotY2hhcnQtdG9vbHRpcAogICAgICBpZD0idG9vbHRpcCIKICAgICAgcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgIGNvbnRlbnQtY29tcG9uZW50LW5hbWU9InZ6LWxpbmUtY2hhcnQtdG9vbHRpcCIKICAgID48L3Z6LWNoYXJ0LXRvb2x0aXA+CiAgICA8c3R5bGUgaW5jbHVkZT0icGxvdHRhYmxlLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZ6LXBhbi16b29tLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgICBkaXYgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgICNjaGFydGRpdiAubWFpbiB7CiAgICAgICAgY29udGFpbjogc3RyaWN0OwogICAgICAgIGN1cnNvcjogY3Jvc3NoYWlyOwogICAgICB9CgogICAgICA6aG9zdCgucGFua2V5KSAjY2hhcnRkaXYgOm5vdCguZHJhZy16b29taW5nKSAubWFpbiB7CiAgICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgICAgICAgY3Vyc29yOiBncmFiOwogICAgICB9CgogICAgICA6aG9zdCgubW91c2Vkb3duKSAjY2hhcnRkaXYgLnBhbm5pbmcgLm1haW4gewogICAgICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiYmluZzsKICAgICAgICBjdXJzb3I6IGdyYWJiaW5nOwogICAgICB9CgogICAgICAjY2hhcnRkaXYgewogICAgICAgIGNvbnRhaW46IHN0cmljdDsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IGxpbmUuZ3VpZGUtbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjOTk5OwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2OmhvdmVyIC5tYWluIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLnBsb3R0YWJsZSAuYXhpcyB0ZXh0IHsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgIC5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLHJzdC5TY2FsZXMuQ29sb3IpXSxaci5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxaci5wcm90b3R5cGUsInN5bWJvbEZ1bmN0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFpyLnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxaci5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaci5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFpyLnByb3RvdHlwZSwieENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFpyLnByb3RvdHlwZSwieEF4aXNGb3JtYXR0ZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxaci5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxaci5wcm90b3R5cGUsInRvb2x0aXBDb2x1bW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFpyLnByb3RvdHlwZSwiZmlsbEFyZWEiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFpyLnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sWnIucHJvdG90eXBlLCJkZWZhdWx0WVJhbmdlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFpyLnByb3RvdHlwZSwieVNjYWxlVHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFpyLnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFpyLnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWnIucHJvdG90eXBlLCJ0b29sdGlwUG9zaXRpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWnIucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFpyLnByb3RvdHlwZSwiX3Zpc2libGVTZXJpZXNDYWNoZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaci5wcm90b3R5cGUsIl9zZXJpZXNEYXRhQ2FjaGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWnIucHJvdG90eXBlLCJfc2VyaWVzTWV0YWRhdGFDYWNoZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaci5wcm90b3R5cGUsIl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQiLHZvaWQgMCk7RShbQnQoInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLCJ4VHlwZSIsInlWYWx1ZUFjY2Vzc29yIiwieVNjYWxlVHlwZSIsImlzQXR0YWNoZWQiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFpyLnByb3RvdHlwZSwiX21ha2VDaGFydCIsbnVsbCk7RShbQnQoIl9jaGFydCIsIl92aXNpYmxlU2VyaWVzQ2FjaGUiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFpyLnByb3RvdHlwZSwiX3JlbG9hZEZyb21DYWNoZSIsbnVsbCk7RShbQnQoInNtb290aGluZ0VuYWJsZWQiLCJzbW9vdGhpbmdXZWlnaHQiLCJfY2hhcnQiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFpyLnByb3RvdHlwZSwiX3Ntb290aGluZ0NoYW5nZWQiLG51bGwpO0UoW0J0KCJpZ25vcmVZT3V0bGllcnMiLCJfY2hhcnQiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFpyLnByb3RvdHlwZSwiX291dGxpZXJzQ2hhbmdlZCIsbnVsbCk7RShbQnQoImNvbG9yU2NhbGUiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFpyLnByb3RvdHlwZSwiX2NvbG9yU2NhbGVDaGFuZ2VkIixudWxsKTtFKFtCdCgidG9vbHRpcENvbHVtbnMiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFpyLnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zQ2hhbmdlZCIsbnVsbCk7RShbQnQoInRvb2x0aXBTb3J0aW5nTWV0aG9kIiwiX2NoYXJ0IiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxaci5wcm90b3R5cGUsIl90b29sdGlwU29ydGluZ01ldGhvZENoYW5nZWQiLG51bGwpO1pyPUUoW3l0KCJ2ei1saW5lLWNoYXJ0MiIpXSxacik7dmFyIGVzdD1jbGFzcyBleHRlbmRzIG10e307ZXN0LnRlbXBsYXRlPVFgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgPHRhYmxlPgogICAgICAgIDx0aGVhZD48L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIHRib2R5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICB9CgogICAgICAuc3dhdGNoIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICB9CgogICAgICAuY2xvc2VzdCAuc3dhdGNoIHsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2ZmZjsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIC5kaXN0YW50IHRkOm5vdCguc3dhdGNoKSB7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO2VzdD1FKFt5dCgidnotbGluZS1jaGFydC10b29sdGlwIildLGVzdCk7dmFyIGlzdD1bXSxUcWU9MCxDcWU9SEt0LnRocm90dGxlKGZ1bmN0aW9uIGUoKXtpZihpc3QubGVuZ3RoPT0wKXJldHVybjtsZXQgdD1pc3Quc2hpZnQoKTt0JiZ0LmFjdGl2ZSYmKHQucmVkcmF3KCksdC5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGU9ITEpLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShUcWUpLHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSl9LDEwMCksVm49Y2xhc3MgZXh0ZW5kcyBMUyhHdChtdCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yZWRyYXdSYWY9bnVsbCx0aGlzLmFjdGl2ZT0hMSx0aGlzLmxvZ1NjYWxlQWN0aXZlPSExLHRoaXMuY29sb3JTY2FsZT17c2NhbGU6Zm59LHRoaXMuX3Jlc2V0RG9tYWluT25OZXh0TG9hZD0hMCx0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMX1vbkxvYWRGaW5pc2goKXt0aGlzLmNvbW1pdENoYW5nZXMoKSx0aGlzLmRhdGFUb0xvYWQubGVuZ3RoPjAmJnRoaXMuX3Jlc2V0RG9tYWluT25OZXh0TG9hZCYmKHRoaXMuX3Jlc2V0RG9tYWluT25OZXh0TG9hZD0hMSx0aGlzLmdldENoYXJ0KCkucmVzZXREb21haW4oKSksdGhpcy5yZWRyYXcoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fcmVkcmF3UmFmIT09bnVsbCYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVkcmF3UmFmKX1leHBvcnRBc1N2Z1N0cmluZygpe3JldHVybiB0aGlzLmdldENoYXJ0KCkuZ2V0RXhwb3J0ZXIoKS5leHBvcnRBc1N0cmluZygpfWdldENoYXJ0KCl7cmV0dXJuIHRoaXMuJC5jaGFydH1yZXNldERvbWFpbigpe3RoaXMuZ2V0Q2hhcnQoKS5yZXNldERvbWFpbigpfXNldFNlcmllc0RhdGEodCxyKXt0aGlzLmdldENoYXJ0KCkuc2V0U2VyaWVzRGF0YSh0LHIpfXNldFNlcmllc01ldGFkYXRhKHQscil7dGhpcy5nZXRDaGFydCgpLnNldFNlcmllc01ldGFkYXRhKHQscil9Y29tbWl0Q2hhbmdlcygpe3RoaXMuZ2V0Q2hhcnQoKS5jb21taXRDaGFuZ2VzKCl9cmVkcmF3KCl7dGhpcy5fcmVkcmF3UmFmIT09bnVsbCYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVkcmF3UmFmKSx0aGlzLl9yZWRyYXdSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuYWN0aXZlP3RoaXMuZ2V0Q2hhcnQoKS5yZWRyYXcoKTp0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMH0pfV9sb2FkS2V5Q2hhbmdlZCgpe3RoaXMucmVzZXQoKSx0aGlzLl9yZXNldERvbWFpbk9uTmV4dExvYWQ9ITB9X2RhdGFTZXJpZXNDaGFuZ2VkKCl7dGhpcy5nZXRDaGFydCgpLnNldFZpc2libGVTZXJpZXModGhpcy5kYXRhU2VyaWVzKX1fbG9nU2NhbGVDaGFuZ2VkKHQpe2xldCByPXRoaXMuZ2V0Q2hhcnQoKTtyLnlTY2FsZVR5cGU9dD96Zi5MT0c6emYuTElORUFSLHRoaXMucmVkcmF3KCl9X2ZpeEJhZFN0YXRlV2hlbkFjdGl2ZSgpe3RoaXMuYWN0aXZlJiZ0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZSYmKGlzdC5wdXNoKHRoaXMpLENxZSgpKX1fb25DaGFydEF0dGFjaGVkKCl7dGhpcy5hY3RpdmV8fCh0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMCl9fTtWbi50ZW1wbGF0ZT1RYAogICAgPGRpdiBpZD0iY2hhcnQtYW5kLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgPHZ6LWxpbmUtY2hhcnQyCiAgICAgICAgaWQ9ImNoYXJ0IgogICAgICAgIGRhdGEtbG9hZGluZyQ9IltbZGF0YUxvYWRpbmddXSIKICAgICAgICBkYXRhLWxvYWRlZC1vbmNlJD0iW1tkYXRhTG9hZGVkQXRMZWFzdE9uY2VdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tjb2xvclNjYWxlXV0iCiAgICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW2RlZmF1bHRYUmFuZ2VdXSIKICAgICAgICBkZWZhdWx0LXktcmFuZ2U9IltbZGVmYXVsdFlSYW5nZV1dIgogICAgICAgIGZpbGwtYXJlYT0iW1tmaWxsQXJlYV1dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIG9uLWNoYXJ0LWF0dGFjaGVkPSJfb25DaGFydEF0dGFjaGVkIgogICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tzeW1ib2xGdW5jdGlvbl1dIgogICAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1t0b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtY29tcG9uZW50cy1jcmVhdGlvbi1tZXRob2Q9IltbeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICAgIHktdmFsdWUtYWNjZXNzb3I9IltbeVZhbHVlQWNjZXNzb3JdXSIKICAgICAgPjwvdnotbGluZS1jaGFydDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tkYXRhTG9hZGluZ11dIj4KICAgICAgICA8ZGl2IGlkPSJsb2FkaW5nLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlPSIiPjwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICA6aG9zdChbX21heWJlLXJlbmRlcmVkLWluLWJhZC1zdGF0ZV0pIHZ6LWxpbmUtY2hhcnQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgI2NoYXJ0LWFuZC1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjbG9hZGluZy1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDIgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDJbZGF0YS1sb2FkaW5nXSB7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfZml4QmFkU3RhdGVXaGVuQWN0aXZlIn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVm4ucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFZuLnByb3RvdHlwZSwiZGF0YVNlcmllcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixBZSldLFZuLnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfbG9nU2NhbGVDaGFuZ2VkIn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVm4ucHJvdG90eXBlLCJsb2dTY2FsZUFjdGl2ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxWbi5wcm90b3R5cGUsInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sVm4ucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFZuLnByb3RvdHlwZSwieVZhbHVlQWNjZXNzb3IiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVm4ucHJvdG90eXBlLCJmaWxsQXJlYSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFZuLnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxWbi5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sVm4ucHJvdG90eXBlLCJ0b29sdGlwQ29sdW1ucyIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxWbi5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFZuLnByb3RvdHlwZSwidG9vbHRpcFBvc2l0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVm4ucHJvdG90eXBlLCJpZ25vcmVZT3V0bGllcnMiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFZuLnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sVm4ucHJvdG90eXBlLCJkZWZhdWx0WVJhbmdlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sVm4ucHJvdG90eXBlLCJzeW1ib2xGdW5jdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxWbi5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxWbi5wcm90b3R5cGUsIl9yZXNldERvbWFpbk9uTmV4dExvYWQiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sVm4ucHJvdG90eXBlLCJfbWF5YmVSZW5kZXJlZEluQmFkU3RhdGUiLHZvaWQgMCk7RShbQnQoImxvYWRLZXkiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFZuLnByb3RvdHlwZSwiX2xvYWRLZXlDaGFuZ2VkIixudWxsKTtFKFtCdCgiZGF0YVNlcmllcy4qIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxWbi5wcm90b3R5cGUsIl9kYXRhU2VyaWVzQ2hhbmdlZCIsbnVsbCk7Vm49RShbeXQoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKV0sVm4pO2dzKHttb2R1bGVOYW1lOiJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiLHN0eWxlQ29udGVudDpgCiAgICA6aG9zdCB7CiAgICAgIG1hcmdpbjogNXB4IDEwcHg7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgd2lkdGg6IDMzMHB4OwogICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7CiAgICB9CgogICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgOmhvc3QoW19leHBhbmRlZF0pICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7CiAgICAgIGhlaWdodDogNDAwcHg7CiAgICB9CgogICAgaDEgewogICAgICBmb250LXNpemU6IDE5cHg7CiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICB9CgogICAgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI2J1dHRvbnMgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgfQoKICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgIHdpZHRoOiAzMnB4OwogICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIHBhZGRpbmc6IDRweDsKICAgIH0KCiAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0gewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgfQoKICAgIC5kb3dubG9hZC1saW5rcyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGhlaWdodDogMzJweDsKICAgIH0KCiAgICAuZG93bmxvYWQtbGlua3MgYSB7CiAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICBtYXJnaW46IDJweDsKICAgIH0KCiAgICAuZG93bmxvYWQtbGlua3MgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgIH0KICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgIH0KICAgIH0KICBgfSk7dmFyIERTPWNsYXNze2NvbnN0cnVjdG9yKHQscixuLGksbyl7dGhpcy5ydW49dCx0aGlzLnRhZz1yLHRoaXMubmFtZT1uLHRoaXMuc2NhbGFyRGF0YT1pLHRoaXMuc3ltYm9sPW99Z2V0TmFtZSgpe3JldHVybiB0aGlzLm5hbWV9c2V0RGF0YSh0KXt0aGlzLnNjYWxhckRhdGE9dH1nZXREYXRhKCl7cmV0dXJuIHRoaXMuc2NhbGFyRGF0YX1nZXRSdW4oKXtyZXR1cm4gdGhpcy5ydW59Z2V0VGFnKCl7cmV0dXJuIHRoaXMudGFnfWdldFN5bWJvbCgpe3JldHVybiB0aGlzLnN5bWJvbH19O2Z1bmN0aW9uIFBCKGUsdCl7cmV0dXJuYCR7dH0gKCR7ZX0pYH12YXIgV3Y9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5ydW5CYXNlZENvbG9yU2NhbGU9dH1zY2FsZSh0KXtyZXR1cm4gdGhpcy5ydW5CYXNlZENvbG9yU2NhbGUuc2NhbGUodGhpcy5wYXJzZVJ1bk5hbWUodCkpfXBhcnNlUnVuTmFtZSh0KXtsZXQgcj10Lm1hdGNoKC9cKCguKilcKSQvKTtyZXR1cm4gcj9yWzFdOiIifX07dmFyIEpyPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFjdGl2ZT0hMCx0aGlzLl9jb2xvclNjYWxlPW5ldyBXdih7c2NhbGU6Zm59KSx0aGlzLl9uYW1lVG9EYXRhU2VyaWVzPXt9LHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3JlcXVlc3REYXRhPSh0LHIsbik9PntsZXQgbz12ZSgpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoYT0+e2xldCBzPWEsbD10aGlzLl90YWdGaWx0ZXIsYz1DbihvLHt0YWc6bCxydW46c30pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYykudGhlbih1PT52b2lkIHIoe2l0ZW06YSxkYXRhOnV9KSl9KSkuZmluYWxseSgoKT0+dm9pZCBuKCkpfSx0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleD17fSx0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZD0hMSx0aGlzLl9maWxsQXJlYT17bG93ZXJBY2Nlc3Nvcjp0PT50Lmxvd2VyLGhpZ2hlckFjY2Vzc29yOnQ9PnQudXBwZXJ9LHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2xldCB0PUd1KGUwKSxyPW49PmlzTmFOKG4pPyJOYU4iOnQobik7cmV0dXJuW3t0aXRsZToiTmFtZSIsZXZhbHVhdGU6bj0+bi5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZX0se3RpdGxlOiJWYWx1ZSIsZXZhbHVhdGU6bj0+cihuLmRhdHVtLnNjYWxhcil9LHt0aXRsZToiTG93ZXIgTWFyZ2luIixldmFsdWF0ZTpuPT5yKG4uZGF0dW0ubG93ZXIpfSx7dGl0bGU6IlVwcGVyIE1hcmdpbiIsZXZhbHVhdGU6bj0+cihuLmRhdHVtLnVwcGVyKX0se3RpdGxlOiJTdGVwIixldmFsdWF0ZTpuPT55NChuLmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOm49Pm1CKG4uZGF0dW0ud2FsbF90aW1lKX0se3RpdGxlOiJSZWxhdGl2ZSIsZXZhbHVhdGU6bj0+Z0IocjAobi5kYXR1bSwtMSxuLmRhdGFzZXQpKX1dfSkoKSx0aGlzLl9taXNzaW5nVGFncz1bXSx0aGlzLl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkPSExfXJlbG9hZCgpe3RoaXMuJC5sb2FkZXIucmVsb2FkKCl9cmVkcmF3KCl7dGhpcy4kLmxvYWRlci5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7bGV0IHQ9dGhpcy4kLmxvYWRlcjt0JiZ0LnJlc2V0RG9tYWluKCl9X2NzdlVybCh0LHIpe2lmKCFyKXJldHVybiIiO2xldCBuPXRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LHIpO3JldHVybiBDbihuLHtmb3JtYXQ6ImNzdiJ9KX1fanNvblVybCh0LHIpe2lmKCFyKXJldHVybiIiO2xldCBuPXRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LHIpO3JldHVybiBDbihuLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LHIpe2xldCBuPXRbcl0saT17dGFnOm4uZ2V0VGFnKCkscnVuOm4uZ2V0UnVuKCl9O3JldHVybiBDbih2ZSgpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9kb3dubG9hZF9kYXRhIiksaSl9X2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24odCl7cmV0dXJuKHIsbixpKT0+e2lmKCFpLnJlZ2V4X3ZhbGlkKXt0aGlzLnNldCgiX3RhZ0ZpbHRlckludmFsaWQiLCEwKTtyZXR1cm59bGV0IG89V28uY2xvbmUodGhpcy5fbmFtZVRvRGF0YVNlcmllcyksYT1bXTtXby5mb3JFYWNoKHQsbD0+e2xldCBjPSExLHU9aS50YWdfdG9fZXZlbnRzW2wudmFsdWVdLGg9aS50YWdfdG9fZXZlbnRzW2wubG93ZXJdLGY9aS50YWdfdG9fZXZlbnRzW2wudXBwZXJdO2lmKFdvLmlzVW5kZWZpbmVkKHUpJiYoYS5wdXNoKGwudmFsdWUpLGM9ITApLFdvLmlzVW5kZWZpbmVkKGgpJiYoYS5wdXNoKGwubG93ZXIpLGM9ITApLFdvLmlzVW5kZWZpbmVkKGYpJiYoYS5wdXNoKGwudXBwZXIpLGM9ITApLGMpcmV0dXJuO2xldCBwPWI9PmJbMV0sZD10aGlzLl9maW5kU3RlcE1pc21hdGNoKGwsdS5tYXAocCksaC5tYXAocCksZi5tYXAocCkpO2lmKGQpe3RoaXMuc2V0KCJfc3RlcHNNaXNtYXRjaCIsZCk7cmV0dXJufWxldCBnPWI9PmJbMl0sXz11Lm1hcCgoYixTKT0+KHt3YWxsX3RpbWU6bmV3IERhdGUoYlswXSoxZTMpLHN0ZXA6cChiKSxzY2FsYXI6ZyhiKSxsb3dlcjpnKGhbU10pLHVwcGVyOmcoZltTXSl9KSkseT1QQihuLGwudmFsdWUpLHg9b1t5XTtpZih4KXguc2V0RGF0YShfKTtlbHNle2xldCBiPXRoaXMuX2NyZWF0ZU5ld0RhdGFTZXJpZXMobixsLnZhbHVlLHksXyk7b1t5XT1ifX0pLHRoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIsbyk7bGV0IHM9V28uZmluZEluZGV4KHRoaXMuX21pc3NpbmdUYWdzLGw9PmwucnVuPT09bik7aWYoYS5sZW5ndGgmJmEubGVuZ3RoIT0zKXtsZXQgbD17cnVuOm4sdGFnczphfTtzPj0wP3RoaXMuc3BsaWNlKCJfbWlzc2luZ1RhZ3MiLHMsMSxsKTp0aGlzLnB1c2goIl9taXNzaW5nVGFncyIsbCl9ZWxzZSBzPj0wJiZ0aGlzLnNwbGljZSgiX21pc3NpbmdUYWdzIixzLDEpfX1fZmluZFN0ZXBNaXNtYXRjaCh0LHIsbixpKXtyZXR1cm4gV28uaXNFcXVhbChuLHIpJiZXby5pc0VxdWFsKGkscik/bnVsbDp7c2VyaWVzT2JqZWN0OnQsdmFsdWVTdGVwczpyLGxvd2VyU3RlcHM6bix1cHBlclN0ZXBzOml9fV9jcmVhdGVOZXdEYXRhU2VyaWVzKHQscixuLGkpe3RoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3RdfD0wO2xldCBvPWtTW3RoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3RdXSxhPW5ldyBEUyh0LHIsbixpLG8pLHM9a1MubGVuZ3RoO3JldHVybiB0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFt0XT0odGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbdF0rMSklcyxhfV91cGRhdGVDaGFydCgpe3ZhciB0PXRoaXMuX25hbWVUb0RhdGFTZXJpZXM7V28uZm9yT3duKHQscj0+e3RoaXMuJC5sb2FkZXIuc2V0U2VyaWVzRGF0YShyLmdldE5hbWUoKSxyLmdldERhdGEoKSl9KSx0aGlzLiQubG9hZGVyLmNvbW1pdENoYW5nZXMoKX1nZXQgX3Nlcmllc05hbWVzKCl7bGV0IHQ9bmV3IFNldCh0aGlzLnJ1bnMpO3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5maWx0ZXIoKFtyLG5dKT0+dC5oYXMobi5ydW4pKS5tYXAoKFtyXSk9PnIpfV9kZXRlcm1pbmVDb2xvcih0LHIpe3JldHVybiB0LnNjYWxlKHIpfV9yZWZyZXNoRGF0YVNlcmllcygpe3ZhciB0PXRoaXMuX3RhZ0ZpbHRlcjt0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHt9KX1fY3JlYXRlU3ltYm9sRnVuY3Rpb24oKXtyZXR1cm4gdD0+dGhpcy5fbmFtZVRvRGF0YVNlcmllc1t0XS5nZXRTeW1ib2woKS5tZXRob2QoKX1fZGV0ZXJtaW5lU3ltYm9sKHQscil7cmV0dXJuIHRbcl0uZ2V0U3ltYm9sKCkuY2hhcmFjdGVyfWdldCBfdGFnRmlsdGVyKCl7dmFyIHQ9dGhpcy5tYXJnaW5DaGFydFNlcmllcztyZXR1cm4gV28uZmxhdHRlbih0Lm1hcChpPT5baS52YWx1ZSxpLmxvd2VyLGkudXBwZXJdKSkubWFwKGk9PiIoIit0aGlzLl9lc2NhcGVSZWdleENoYXJhY3RlcnMoaSkrIikiKS5qb2luKCJ8Iil9X2VzY2FwZVJlZ2V4Q2hhcmFjdGVycyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpfV9nZXRUb2dnbGVDb2xsYXBzaWJsZUljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifV90b2dnbGVNYXRjaGVzT3Blbigpe3RoaXMuc2V0KCJfbWF0Y2hlc0xpc3RPcGVuZWQiLCF0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZCl9Z2V0IF90aXRsZURpc3BsYXlTdHJpbmcoKXt2YXIgdD10aGlzLnRpdGxlO3JldHVybiB0fHwidW50aXRsZWQifV9zZXBhcmF0ZVdpdGhDb21tYXModCl7cmV0dXJuIHQuam9pbigiLCAiKX1fdG9nZ2xlTWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW4oKXt0aGlzLnNldCgiX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQiLCF0aGlzLl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkKX1fbWF0Y2hMaXN0RW50cnlDb2xvclVwZGF0ZWQoKXt2YXIgdDtsZXQgcj10aGlzLiQkKCIjbWF0Y2gtbGlzdC1yZXBlYXQiKTshcnx8KHQ9dGhpcy5yb290KT09PW51bGx8fHQ9PT12b2lkIDB8fHQucXVlcnlTZWxlY3RvckFsbCgiLm1hdGNoLWxpc3QtZW50cnkiKS5mb3JFYWNoKG49PntsZXQgaT1yLml0ZW1Gb3JFbGVtZW50KG4pO24uc3R5bGUuY29sb3I9dGhpcy5fZGV0ZXJtaW5lQ29sb3IodGhpcy5fY29sb3JTY2FsZSxpKX0pfX07SnIudGVtcGxhdGU9UWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgZGlzcGxheS1uYW1lPSJbW190aXRsZURpc3BsYXlTdHJpbmddXSI+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyCiAgICAgICAgaWQ9ImxvYWRlciIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICBmaWxsLWFyZWE9IltbX2ZpbGxBcmVhXV0iCiAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgbG9hZC1rZXk9IltbX3RhZ0ZpbHRlcl1dIgogICAgICAgIGRhdGEtdG8tbG9hZD0iW1tydW5zXV0iCiAgICAgICAgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIgogICAgICAgIGxvZy1zY2FsZS1hY3RpdmU9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKG1hcmdpbkNoYXJ0U2VyaWVzKV1dIgogICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tfY3JlYXRlU3ltYm9sRnVuY3Rpb24oKV1dIgogICAgICAgIHRvb2x0aXAtY29sdW1ucz0iW1tfdG9vbHRpcENvbHVtbnNdXSIKICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgID4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgaWNvbj0ibGluZS13ZWlnaHQiCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiCiAgICAgICAgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iCiAgICAgICAgb24tdGFwPSJfcmVzZXREb21haW4iCiAgICAgICAgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxzcGFuIHN0eWxlPSJmbGV4LWdyb3c6IDEiPjwvc3Bhbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dEb3dubG9hZExpbmtzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvd25sb2FkLWxpbmtzIj4KICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICBsYWJlbD0ic2VyaWVzIHRvIGRvd25sb2FkIgogICAgICAgICAgICBzZWxlY3RlZC1pdGVtLWxhYmVsPSJ7e19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWR9fSIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICAgIGFzPSJkYXRhU2VyaWVzTmFtZSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSIKICAgICAgICAgICAgICAgICAgPltbZGF0YVNlcmllc05hbWVdXTwvcGFwZXItaXRlbQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgIDxhCiAgICAgICAgICAgIGRvd25sb2FkPSJbW19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWRdXS5jc3YiCiAgICAgICAgICAgIGhyZWY9IltbX2NzdlVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkNTVjwvYQogICAgICAgICAgPgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmpzb24iCiAgICAgICAgICAgIGhyZWY9IltbX2pzb25VcmwoX25hbWVUb0RhdGFTZXJpZXMsIF9kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWQpXV0iCiAgICAgICAgICAgID5KU09OPC9hCiAgICAgICAgICA+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KCiAgICA8IS0tIGhlcmUgLS0+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX21pc3NpbmdUYWdzLmxlbmd0aF1dIj4KICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2libGUtbGlzdC10aXRsZSI+CiAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVDb2xsYXBzaWJsZUljb24oX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQpXV0iCiAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZU1pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuIgogICAgICAgICAgY2xhc3M9InRvZ2dsZS1jb2xsYXBzaWJsZS1idXR0b24iCiAgICAgICAgPgogICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNvbGxhcHNpYmxlLXRpdGxlLXRleHQiPgogICAgICAgICAgPGlyb24taWNvbiBpY29uPSJpY29uczplcnJvciI+PC9pcm9uLWljb24+IE1pc3NpbmcgVGFncwogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJlcnJvci1jb250ZW50Ij4KICAgICAgICAgIDxpcm9uLWljb24gY2xhc3M9ImVycm9yLWljb24iIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX21pc3NpbmdUYWdzXV0iIGFzPSJtaXNzaW5nRW50cnkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaXNzaW5nLXRhZ3MtZm9yLXJ1bi1jb250YWluZXIiPgogICAgICAgICAgICAgIFJ1biAiW1ttaXNzaW5nRW50cnkucnVuXV0iIGxhY2tzIGRhdGEgZm9yIHRhZ3MKICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICAgIGl0ZW1zPSJbW21pc3NpbmdFbnRyeS50YWdzXV0iCiAgICAgICAgICAgICAgICAgIGFzPSJ0YWciCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxsaT5bW3RhZ11dPC9saT4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tY29sbGFwc2U+CiAgICA8L3RlbXBsYXRlPgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfdGFnRmlsdGVySW52YWxpZF1dIj4KICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItY29udGVudCI+CiAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgIFRoaXMgcmVndWxhciBleHByZXNpb24gaXMgaW52YWxpZDo8YnIgLz4KICAgICAgICA8c3BhbiBjbGFzcz0iaW52YWxpZC1yZWdleCI+W1tfdGFnRmlsdGVyXV08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N0ZXBzTWlzbWF0Y2hdXSI+CiAgICAgIDxkaXYgY2xhc3M9ImVycm9yLWNvbnRlbnQiPgogICAgICAgIDxpcm9uLWljb24gY2xhc3M9ImVycm9yLWljb24iIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4KICAgICAgICBUaGUgc3RlcHMgZm9yIHZhbHVlLCBsb3dlciwgYW5kIHVwcGVyIHRhZ3MgZG8gbm90IG1hdGNoOgogICAgICAgIDx1bD4KICAgICAgICAgIDxsaT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhZy1uYW1lIj5bW19zdGVwc01pc21hdGNoLnNlcmllc09iamVjdC52YWx1ZV1dPC9zcGFuPjoKICAgICAgICAgICAgW1tfc2VwYXJhdGVXaXRoQ29tbWFzKF9zdGVwc01pc21hdGNoLnZhbHVlU3RlcHMpXV0KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGk+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWctbmFtZSI+W1tfc3RlcHNNaXNtYXRjaC5zZXJpZXNPYmplY3QubG93ZXJdXTwvc3Bhbj46CiAgICAgICAgICAgIFtbX3NlcGFyYXRlV2l0aENvbW1hcyhfc3RlcHNNaXNtYXRjaC5sb3dlclN0ZXBzKV1dCiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFnLW5hbWUiPltbX3N0ZXBzTWlzbWF0Y2guc2VyaWVzT2JqZWN0LnVwcGVyXV08L3NwYW4+OgogICAgICAgICAgICBbW19zZXBhcmF0ZVdpdGhDb21tYXMoX3N0ZXBzTWlzbWF0Y2gudXBwZXJTdGVwcyldXQogICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CgogICAgPGRpdiBpZD0ibWF0Y2hlcy1jb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzaWJsZS1saXN0LXRpdGxlIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlcmllc05hbWVzLmxlbmd0aF1dIj4KICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVDb2xsYXBzaWJsZUljb24oX21hdGNoZXNMaXN0T3BlbmVkKV1dIgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZU1hdGNoZXNPcGVuIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLW1hdGNoZXMtYnV0dG9uIgogICAgICAgICAgPgogICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8c3BhbiBjbGFzcz0iY29sbGFwc2libGUtdGl0bGUtdGV4dCI+CiAgICAgICAgICBNYXRjaGVzIChbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSkKICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlcmllc05hbWVzLmxlbmd0aF1dIj4KICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9IltbX21hdGNoZXNMaXN0T3BlbmVkXV0iPgogICAgICAgICAgPGRpdiBpZD0ibWF0Y2hlcy1saXN0Ij4KICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iCiAgICAgICAgICAgICAgYXM9InNlcmllc05hbWUiCiAgICAgICAgICAgICAgaWQ9Im1hdGNoLWxpc3QtcmVwZWF0IgogICAgICAgICAgICAgIG9uLWRvbS1jaGFuZ2U9Il9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdGNoLWxpc3QtZW50cnkiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1hdGNoLWVudHJ5LXN5bWJvbCI+CiAgICAgICAgICAgICAgICAgIFtbX2RldGVybWluZVN5bWJvbChfbmFtZVRvRGF0YVNlcmllcywgc2VyaWVzTmFtZSldXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgW1tzZXJpZXNOYW1lXV0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5lcnJvci1jb250ZW50IHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQoKICAgICAgLmVycm9yLWljb24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gNXB4IGF1dG87CiAgICAgIH0KCiAgICAgIC5pbnZhbGlkLXJlZ2V4IHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLmVycm9yLWNvbnRlbnQgdWwgewogICAgICAgIG1hcmdpbjogMXB4IDAgMCAwOwogICAgICAgIHBhZGRpbmc6IDAgMCAwIDE5cHg7CiAgICAgIH0KCiAgICAgIC50YWctbmFtZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KCiAgICAgIC5jb2xsYXBzaWJsZS1saXN0LXRpdGxlIHsKICAgICAgICBtYXJnaW46IDEwcHggMCA1cHggMDsKICAgICAgfQoKICAgICAgLmNvbGxhcHNpYmxlLXRpdGxlLXRleHQgewogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgICNtYXRjaGVzLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5tYXRjaC1saXN0LWVudHJ5IHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggMDsKICAgICAgfQoKICAgICAgLm1hdGNoLWVudHJ5LXN5bWJvbCB7CiAgICAgICAgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgfQoKICAgICAgLm1pc3NpbmctdGFncy1mb3ItcnVuLWNvbnRhaW5lciB7CiAgICAgICAgbWFyZ2luOiA4cHggMCAwIDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sSnIucHJvdG90eXBlLCJydW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLEpyLnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKci5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxKci5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxKci5wcm90b3R5cGUsIm1hcmdpbkNoYXJ0U2VyaWVzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSnIucHJvdG90eXBlLCJpZ25vcmVZT3V0bGllcnMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsQWUpXSxKci5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSnIucHJvdG90eXBlLCJzaG93RG93bmxvYWRMaW5rcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxKci5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLEpyLnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSnIucHJvdG90eXBlLCJfY29sb3JTY2FsZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEpyLnByb3RvdHlwZSwiX3RhZ0ZpbHRlckludmFsaWQiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSnIucHJvdG90eXBlLCJfbmFtZVRvRGF0YVNlcmllcyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKci5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEpyLnByb3RvdHlwZSwiX2xvZ1NjYWxlQWN0aXZlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sSnIucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSnIucHJvdG90eXBlLCJfcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXgiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKci5wcm90b3R5cGUsIl9tYXRjaGVzTGlzdE9wZW5lZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxKci5wcm90b3R5cGUsIl9maWxsQXJlYSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sSnIucHJvdG90eXBlLCJfdG9vbHRpcENvbHVtbnMiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLEpyLnByb3RvdHlwZSwiX21pc3NpbmdUYWdzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSnIucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxKci5wcm90b3R5cGUsIl9zdGVwc01pc21hdGNoIix2b2lkIDApO0UoW0J0KCJfbmFtZVRvRGF0YVNlcmllcyIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSnIucHJvdG90eXBlLCJfdXBkYXRlQ2hhcnQiLG51bGwpO0UoW1J0KCJfbmFtZVRvRGF0YVNlcmllcyIsInJ1bnMiKSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKci5wcm90b3R5cGUsIl9zZXJpZXNOYW1lcyIsbnVsbCk7RShbQnQoIl90YWdGaWx0ZXIiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEpyLnByb3RvdHlwZSwiX3JlZnJlc2hEYXRhU2VyaWVzIixudWxsKTtFKFtSdCgibWFyZ2luQ2hhcnRTZXJpZXMiKSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxKci5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLG51bGwpO0UoW1J0KCJ0aXRsZSIpLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEpyLnByb3RvdHlwZSwiX3RpdGxlRGlzcGxheVN0cmluZyIsbnVsbCk7SnI9RShbeXQoInRmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQiKV0sSnIpO3ZhciBvMD1FZShPZSgpLDEpO3ZhciBJQj17fTskcyhJQix7QmFzZVN0b3JlOigpPT5icCxDYW5jZWxsZXI6KCk9PmFuLEVudmlyb25tZW50U3RvcmU6KCk9PkY5LEV4cGVyaW1lbnRzU3RvcmU6KCk9PlE4LEh0dHBNZXRob2RUeXBlOigpPT5BbSxJbnZhbGlkUmVxdWVzdE9wdGlvbnNFcnJvcjooKT0+SHgsTGlzdGVuS2V5OigpPT56OSxSZXF1ZXN0Q2FuY2VsbGF0aW9uRXJyb3I6KCk9PmE5LFJlcXVlc3RNYW5hZ2VyOigpPT5BZSxSZXF1ZXN0TmV0d29ya0Vycm9yOigpPT5zRSxSZXF1ZXN0T3B0aW9uczooKT0+VngsUnVuc1N0b3JlOigpPT5COSxUWVBFUzooKT0+RXhlLGFkZFBhcmFtczooKT0+Q24sY3JlYXRlUm91dGVyOigpPT5FZ3QsY3JlYXRlU2VhcmNoUGFyYW06KCk9PlFHLGVudmlyb25tZW50U3RvcmU6KCk9Pm5iLGV4cGVyaW1lbnRzU3RvcmU6KCk9PnRSLGZpbHRlclRhZ3M6KCk9PkN4ZSxnZXRSb3V0ZXI6KCk9PnZlLGdldFJ1bnNOYW1lZDooKT0+VHhlLGdldFRhZ3M6KCk9PlhpLHJ1bnNTdG9yZTooKT0+d3Asc2V0Um91dGVyOigpPT5OeGV9KTt2YXIgRW49Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuYWN0aXZlPSEwLHRoaXMuX2NvbG9yU2NhbGU9bmV3IFd2KHtzY2FsZTpmbn0pLHRoaXMuX25hbWVUb0RhdGFTZXJpZXM9e30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fcmVxdWVzdERhdGE9KHQscixuKT0+e2xldCBvPXZlKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL3NjYWxhcnMiKTtQcm9taXNlLmFsbCh0Lm1hcChhPT57bGV0IHM9YSxsPXRoaXMuX3RhZ0ZpbHRlcixjPUNuKG8se3RhZzpsLHJ1bjpzfSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChjKS50aGVuKHU9PnZvaWQgcih7aXRlbTphLGRhdGE6dX0pKX0pKS5maW5hbGx5KCgpPT52b2lkIG4oKSl9LHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4PXt9LHRoaXMuX21hdGNoZXNMaXN0T3BlbmVkPSExfXJlbG9hZCgpe3RoaXMuJC5sb2FkZXIucmVsb2FkKCl9cmVkcmF3KCl7dGhpcy4kLmxvYWRlci5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7bGV0IHQ9dGhpcy4kLmxvYWRlcjt0JiZ0LnJlc2V0RG9tYWluKCl9X2NzdlVybCh0LHIpe2lmKCFyKXJldHVybiIiO2xldCBuPXRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LHIpO3JldHVybiBDbihuLHtmb3JtYXQ6ImNzdiJ9KX1fanNvblVybCh0LHIpe2lmKCFyKXJldHVybiIiO2xldCBuPXRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LHIpO3JldHVybiBDbihuLHtmb3JtYXQ6Impzb24ifSl9X2Rvd25sb2FkRGF0YVVybCh0LHIpe2xldCBuPXRbcl0saT17dGFnOm4uZ2V0VGFnKCkscnVuOm4uZ2V0UnVuKCl9O3JldHVybiBDbih2ZSgpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9kb3dubG9hZF9kYXRhIiksaSl9X2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKXtyZXR1cm4odCxyLG4pPT57aWYobi5yZWdleF92YWxpZCl7bGV0IGk9bzAuY2xvbmUodGhpcy5fbmFtZVRvRGF0YVNlcmllcyk7bzAuZm9yT3duKG4udGFnX3RvX2V2ZW50cywobyxhKT0+e2xldCBzPW8ubWFwKHU9Pih7d2FsbF90aW1lOm5ldyBEYXRlKHVbMF0qMWUzKSxzdGVwOnVbMV0sc2NhbGFyOnVbMl19KSksbD1QQihyLGEpLGM9aVtsXTtpZihjKWMuc2V0RGF0YShzKTtlbHNle28wLmlzVW5kZWZpbmVkKHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3JdKSYmKHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3JdPTApO2xldCB1PWtTW3RoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3JdXSxoPW5ldyBEUyhyLGEsbCxzLHUpO2lbbF09aDtsZXQgZj1rUy5sZW5ndGg7dGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbcl09KHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3JdKzEpJWZ9fSksdGhpcy5zZXQoIl9uYW1lVG9EYXRhU2VyaWVzIixpKX19fV91cGRhdGVDaGFydCgpe3ZhciB0PXRoaXMuX25hbWVUb0RhdGFTZXJpZXM7T2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoW3Isbl0pPT57dGhpcy4kLmxvYWRlci5zZXRTZXJpZXNEYXRhKHIsbi5nZXREYXRhKCkpfSksdGhpcy4kLmxvYWRlci5jb21taXRDaGFuZ2VzKCl9X2NvbXB1dGVTZWxlY3RlZFJ1bnNTZXQodCl7bGV0IHI9e307cmV0dXJuIG8wLmZvckVhY2godCxuPT57cltuXT0xfSkscn1nZXQgX3Nlcmllc05hbWVzKCl7bGV0IHQ9bmV3IFNldCh0aGlzLnJ1bnMpO3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5maWx0ZXIoKFtyLG5dKT0+dC5oYXMobi5ydW4pKS5tYXAoKFtyXSk9PnIpfV9kZXRlcm1pbmVDb2xvcih0LHIpe3JldHVybiB0LnNjYWxlKHIpfV9yZWZyZXNoRGF0YVNlcmllcygpe3ZhciB0PXRoaXMuX3RhZ0ZpbHRlcjt0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHt9KX1fY3JlYXRlU3ltYm9sRnVuY3Rpb24oKXtyZXR1cm4gdD0+dGhpcy5fbmFtZVRvRGF0YVNlcmllc1t0XS5nZXRTeW1ib2woKS5tZXRob2QoKX1fZGV0ZXJtaW5lU3ltYm9sKHQscil7cmV0dXJuIHRbcl0uZ2V0U3ltYm9sKCkuY2hhcmFjdGVyfWdldCBfdGFnRmlsdGVyKCl7dmFyIHQ9dGhpcy50YWdSZWdleGVzO3JldHVybiB0Lmxlbmd0aD09PTE/dFswXTp0Lm1hcChyPT4iKCIrcisiKSIpLmpvaW4oInwiKX1fZ2V0VG9nZ2xlTWF0Y2hlc0ljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifV90b2dnbGVNYXRjaGVzT3Blbigpe3RoaXMuc2V0KCJfbWF0Y2hlc0xpc3RPcGVuZWQiLCF0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZCl9Z2V0IF90aXRsZURpc3BsYXlTdHJpbmcoKXt2YXIgdD10aGlzLnRpdGxlO3JldHVybiB0fHwidW50aXRsZWQifV9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCh0KXt2YXIgcjtsZXQgbj10aGlzLiQkKCIjbWF0Y2gtbGlzdC1yZXBlYXQiKTshbnx8KHI9dGhpcy5yb290KT09PW51bGx8fHI9PT12b2lkIDB8fHIucXVlcnlTZWxlY3RvckFsbCgiLm1hdGNoLWxpc3QtZW50cnkiKS5mb3JFYWNoKGk9PntsZXQgbz1uLml0ZW1Gb3JFbGVtZW50KGkpO2kuc3R5bGUuY29sb3I9dGhpcy5fZGV0ZXJtaW5lQ29sb3IodGhpcy5fY29sb3JTY2FsZSxvKX0pfX07RW4udGVtcGxhdGU9UWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgZGlzcGxheS1uYW1lPSJbW190aXRsZURpc3BsYXlTdHJpbmddXSI+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyCiAgICAgICAgaWQ9ImxvYWRlciIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tpZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICBsb2FkLWtleT0iW1tfdGFnRmlsdGVyXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKV1dIgogICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tfY3JlYXRlU3ltYm9sRnVuY3Rpb24oKV1dIgogICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICB4LXR5cGU9IltbeFR5cGVdXSIKICAgICAgPgogICAgICA8L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImJ1dHRvbnMiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBpY29uPSJsaW5lLXdlaWdodCIKICAgICAgICBvbi10YXA9Il90b2dnbGVMb2dTY2FsZSIKICAgICAgICB0aXRsZT0iVG9nZ2xlIHktYXhpcyBsb2cgc2NhbGUiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iRml0IGRvbWFpbiB0byBkYXRhIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHNwYW4gc3R5bGU9ImZsZXgtZ3JvdzogMSI+PC9zcGFuPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZG93bmxvYWQtbGlua3MiPgogICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgICAgICAgIGxhYmVsPSJzZXJpZXMgdG8gZG93bmxvYWQiCiAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZH19IgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgICAgICAgICAgYXM9ImRhdGFTZXJpZXNOYW1lIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICAgICAgICA+W1tkYXRhU2VyaWVzTmFtZV1dPC9wYXBlci1pdGVtCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmNzdiIKICAgICAgICAgICAgaHJlZj0iW1tfY3N2VXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIgogICAgICAgICAgICA+Q1NWPC9hCiAgICAgICAgICA+CiAgICAgICAgICA8YQogICAgICAgICAgICBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uanNvbiIKICAgICAgICAgICAgaHJlZj0iW1tfanNvblVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkpTT048L2EKICAgICAgICAgID4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0ibWF0Y2hlcy1jb250YWluZXIiPgogICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QtdGl0bGUiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZU1hdGNoZXNJY29uKF9tYXRjaGVzTGlzdE9wZW5lZCldXSIKICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVNYXRjaGVzT3BlbiIKICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1tYXRjaGVzLWJ1dHRvbiIKICAgICAgICAgID4KICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgPHNwYW4gY2xhc3M9Im1hdGNoZXMtdGV4dCI+IE1hdGNoZXMgKFtbX3Nlcmllc05hbWVzLmxlbmd0aF1dKSA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlcmllc05hbWVzLmxlbmd0aF1dIj4KICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9IltbX21hdGNoZXNMaXN0T3BlbmVkXV0iPgogICAgICAgICAgPGRpdiBpZD0ibWF0Y2hlcy1saXN0Ij4KICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iCiAgICAgICAgICAgICAgYXM9InNlcmllc05hbWUiCiAgICAgICAgICAgICAgaWQ9Im1hdGNoLWxpc3QtcmVwZWF0IgogICAgICAgICAgICAgIG9uLWRvbS1jaGFuZ2U9Il9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdGNoLWxpc3QtZW50cnkiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1hdGNoLWVudHJ5LXN5bWJvbCI+CiAgICAgICAgICAgICAgICAgIFtbX2RldGVybWluZVN5bWJvbChfbmFtZVRvRGF0YVNlcmllcywgc2VyaWVzTmFtZSldXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgW1tzZXJpZXNOYW1lXV0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICNtYXRjaGVzLWxpc3QtdGl0bGUgewogICAgICAgIG1hcmdpbjogMTBweCAwIDVweCAwOwogICAgICB9CgogICAgICAjbWF0Y2hlcy1saXN0IHsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICAubWF0Y2gtbGlzdC1lbnRyeSB7CiAgICAgICAgbWFyZ2luOiAwIDAgNXB4IDA7CiAgICAgIH0KCiAgICAgIC5tYXRjaC1lbnRyeS1zeW1ib2wgewogICAgICAgIGZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgIH0KCiAgICAgIC5tYXRjaGVzLXRleHQgewogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sRW4ucHJvdG90eXBlLCJydW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLEVuLnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxFbi5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxFbi5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxFbi5wcm90b3R5cGUsInRhZ1JlZ2V4ZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxFbi5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixBZSldLEVuLnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxFbi5wcm90b3R5cGUsInNob3dEb3dubG9hZExpbmtzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sRW4ucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLEVuLnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLEVuLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sRW4ucHJvdG90eXBlLCJ0b29sdGlwU29ydGluZ01ldGhvZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixXdildLEVuLnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRW4ucHJvdG90eXBlLCJfbmFtZVRvRGF0YVNlcmllcyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxFbi5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEVuLnByb3RvdHlwZSwiX2xvZ1NjYWxlQWN0aXZlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sRW4ucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRW4ucHJvdG90eXBlLCJfcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXgiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxFbi5wcm90b3R5cGUsIl9tYXRjaGVzTGlzdE9wZW5lZCIsdm9pZCAwKTtFKFtCdCgiX25hbWVUb0RhdGFTZXJpZXMiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEVuLnByb3RvdHlwZSwiX3VwZGF0ZUNoYXJ0IixudWxsKTtFKFtSdCgiX25hbWVUb0RhdGFTZXJpZXMiLCJydW5zIiksdygiZGVzaWduOnR5cGUiLE9iamVjdCksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sRW4ucHJvdG90eXBlLCJfc2VyaWVzTmFtZXMiLG51bGwpO0UoW0J0KCJfdGFnRmlsdGVyIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxFbi5wcm90b3R5cGUsIl9yZWZyZXNoRGF0YVNlcmllcyIsbnVsbCk7RShbUnQoInRhZ1JlZ2V4ZXMiKSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxFbi5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLG51bGwpO0UoW1J0KCJ0aXRsZSIpLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEVuLnByb3RvdHlwZSwiX3RpdGxlRGlzcGxheVN0cmluZyIsbnVsbCk7RW49RShbeXQoInRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkIildLEVuKTt2YXIgWW89Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IEFlKDUwKSx0aGlzLl9jYW5jZWxsZXI9bmV3IGFuLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzPXZwKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl9zbW9vdGhpbmdXZWlnaHQ9ZEUoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KS5jYWxsKHRoaXMpLHRoaXMuX2lnbm9yZVlPdXRsaWVycz12cCgiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3hUeXBlPSJzdGVwIix0aGlzLl9hY3RpdmU9ITAsdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXI9eHAoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSx0aGlzLl9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlcj1tRSgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLHRoaXMuX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyPXhwKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7bGV0IHQ9dmUoKS5wbHVnaW5zTGlzdGluZygpLHI9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKG49PntuLmNhbmNlbGxlZHx8KHRoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwhbi52YWx1ZS5jdXN0b21fc2NhbGFycyksIXRoaXMuX2RhdGFOb3RGb3VuZCYmdGhpcy5fcmV0cmlldmVMYXlvdXRBbmREYXRhKCkpfSk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKHIpfV9yZWxvYWRDaGFydHMoKXt2YXIgdDtsZXQgcj0odD10aGlzLnJvb3QpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkLCB0Zi1jdXN0b20tc2NhbGFyLW11bHRpLWxpbmUtY2hhcnQtY2FyZCIpO3I9PW51bGx8fHIuZm9yRWFjaChuPT57bi5yZWxvYWQoKX0pfV9yZXRyaWV2ZUxheW91dEFuZERhdGEoKXtsZXQgdD12ZSgpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9sYXlvdXQiKSxyPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZShuPT57bi5jYW5jZWxsZWR8fCh0aGlzLnNldCgiX2xheW91dCIsbi52YWx1ZSksdGhpcy5fZGF0YU5vdEZvdW5kfHx0aGlzLl9yZWxvYWRDaGFydHMoKSl9KTt0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4ocil9Z2V0IF9zbW9vdGhpbmdFbmFibGVkKCl7dmFyIHQ9dGhpcy5fc21vb3RoaW5nV2VpZ2h0O3JldHVybiB0PjB9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fbGF5b3V0O2lmKCF0LmNhdGVnb3J5KXJldHVybltdO2xldCByPSExO3JldHVybiB0aGlzLl9vcGVuZWRDYXRlZ29yaWVzfHwocj0hMCx0aGlzLl9vcGVuZWRDYXRlZ29yaWVzPXt9KSx0LmNhdGVnb3J5Lm1hcChpPT4ociYmIWkuY2xvc2VkJiYodGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1tpLnRpdGxlXT0hMCkse25hbWU6aS50aXRsZSxpdGVtczppLmNoYXJ0LG1ldGFkYXRhOnt0eXBlOlJhLlBSRUZJWF9HUk9VUCxvcGVuZWQ6ISF0aGlzLl9vcGVuZWRDYXRlZ29yaWVzW2kudGl0bGVdfX0pKX1fY2F0ZWdvcnlPcGVuZWRUb2dnbGVkKHQpe2xldCByPXQudGFyZ2V0O3Iub3BlbmVkP3RoaXMuX29wZW5lZENhdGVnb3JpZXNbci5jYXRlZ29yeS5uYW1lXT0hMDpkZWxldGUgdGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1tyLmNhdGVnb3J5Lm5hbWVdfX07WW8udGVtcGxhdGU9UWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19zaG93RG93bmxvYWRMaW5rc319IgogICAgICAgICAgICAgICAgPlNob3cgZGF0YSBkb3dubG9hZCBsaW5rczwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19pZ25vcmVZT3V0bGllcnN9fSIKICAgICAgICAgICAgICAgID5JZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZzwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJ0b29sdGlwLXNvcnRpbmciPgogICAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZy1sYWJlbCI+VG9vbHRpcCBzb3J0aW5nIG1ldGhvZDo8L2Rpdj4KICAgICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9IiIKICAgICAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3Rvb2x0aXBTb3J0aW5nTWV0aG9kfX0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSIwIgogICAgICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZWZhdWx0PC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5hc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPm5lYXJlc3Q8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLXNtb290aGluZy1pbnB1dAogICAgICAgICAgICAgIHdlaWdodD0ie3tfc21vb3RoaW5nV2VpZ2h0fX0iCiAgICAgICAgICAgICAgc3RlcD0iMC4wMDEiCiAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgIG1heD0iMSIKICAgICAgICAgICAgPjwvdGYtc21vb3RoaW5nLWlucHV0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9IngtdHlwZS1zZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIb3Jpem9udGFsIEF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIiBpZD0iY2F0ZWdvcmllcy1jb250YWluZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPlRoZSBjdXN0b20gc2NhbGFycyBkYXNoYm9hcmQgaXMgaW5hY3RpdmUuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPG9sPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW4ndCBsYWlkIG91dCB0aGUgZGFzaGJvYXJkLjwvbGk+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgc2NhbGFyIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L29sPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgVG8gbGF5IG91dCB0aGUgZGFzaGJvYXJkLCBwYXNzIGEgPGNvZGU+TGF5b3V0PC9jb2RlPiBwcm90b2J1ZmZlcgogICAgICAgICAgICAgIHRvIHRoZSA8Y29kZT5zZXRfbGF5b3V0PC9jb2RlPiBtZXRob2QuIEZvciBleGFtcGxlLAogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxwcmU+CmZyb20gdGVuc29yYm9hcmQgaW1wb3J0IHN1bW1hcnkKZnJvbSB0ZW5zb3Jib2FyZC5wbHVnaW5zLmN1c3RvbV9zY2FsYXIgaW1wb3J0IGxheW91dF9wYjIKLi4uCiMgVGhpcyBhY3Rpb24gZG9lcyBub3QgaGF2ZSB0byBiZSBwZXJmb3JtZWQgYXQgZXZlcnkgc3RlcCwgc28gdGhlIGFjdGlvbiBpcyBub3QKIyB0YWtlbiBjYXJlIG9mIGJ5IGFuIG9wIGluIHRoZSBncmFwaC4gV2Ugb25seSBuZWVkIHRvIHNwZWNpZnkgdGhlIGxheW91dCBvbmNlCiMgKGluc3RlYWQgb2YgcGVyIHN0ZXApLgpsYXlvdXRfc3VtbWFyeSA9IHN1bW1hcnlfbGliLmN1c3RvbV9zY2FsYXJfcGIobGF5b3V0X3BiMi5MYXlvdXQoCiAgY2F0ZWdvcnk9WwogICAgbGF5b3V0X3BiMi5DYXRlZ29yeSgKICAgICAgdGl0bGU9J2xvc3NlcycsCiAgICAgIGNoYXJ0PVsKICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J2xvc3NlcycsCiAgICAgICAgICAgICAgbXVsdGlsaW5lPWxheW91dF9wYjIuTXVsdGlsaW5lQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgdGFnPVtyJ2xvc3MuKiddLAogICAgICAgICAgICAgICkpLAogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0nYmF6JywKICAgICAgICAgICAgICBtYXJnaW49bGF5b3V0X3BiMi5NYXJnaW5DaGFydENvbnRlbnQoCiAgICAgICAgICAgICAgICBzZXJpZXM9WwogICAgICAgICAgICAgICAgICBsYXlvdXRfcGIyLk1hcmdpbkNoYXJ0Q29udGVudC5TZXJpZXMoCiAgICAgICAgICAgICAgICAgICAgdmFsdWU9J2xvc3MvYmF6L3NjYWxhcl9zdW1tYXJ5JywKICAgICAgICAgICAgICAgICAgICBsb3dlcj0nYmF6X2xvd2VyL2Jhei9zY2FsYXJfc3VtbWFyeScsCiAgICAgICAgICAgICAgICAgICAgdXBwZXI9J2Jhel91cHBlci9iYXovc2NhbGFyX3N1bW1hcnknKSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgKSksCiAgICAgIF0pLAogICAgbGF5b3V0X3BiMi5DYXRlZ29yeSgKICAgICAgdGl0bGU9J3RyaWcgZnVuY3Rpb25zJywKICAgICAgY2hhcnQ9WwogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0nd2F2ZSB0cmlnIGZ1bmN0aW9ucycsCiAgICAgICAgICAgICAgbXVsdGlsaW5lPWxheW91dF9wYjIuTXVsdGlsaW5lQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgdGFnPVtyJ3RyaWdGdW5jdGlvbnMvY29zaW5lJywgcid0cmlnRnVuY3Rpb25zL3NpbmUnXSwKICAgICAgICAgICAgICApKSwKICAgICAgICAgICMgVGhlIHJhbmdlIG9mIHRhbmdlbnQgaXMgZGlmZmVyZW50LiBMZXQncyBnaXZlIGl0IGl0cyBvd24gY2hhcnQuCiAgICAgICAgICBsYXlvdXRfcGIyLkNoYXJ0KAogICAgICAgICAgICAgIHRpdGxlPSd0YW4nLAogICAgICAgICAgICAgIG11bHRpbGluZT1sYXlvdXRfcGIyLk11bHRpbGluZUNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHRhZz1bcid0cmlnRnVuY3Rpb25zL3RhbmdlbnQnXSwKICAgICAgICAgICAgICApKSwKICAgICAgXSwKICAgICAgIyBUaGlzIGNhdGVnb3J5IHdlIGNhcmUgbGVzcyBhYm91dC4gTGV0J3MgbWFrZSBpdCBpbml0aWFsbHkgY2xvc2VkLgogICAgICBjbG9zZWQ9VHJ1ZSksCiAgXSkpCndyaXRlci5hZGRfc3VtbWFyeShsYXlvdXRfc3VtbWFyeSkKPC9wcmUKICAgICAgICAgICAgPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGFzPSJjaGFydCIKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGRpc2FibGUtcGFnaW5hdGlvbgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW2NhdGVnb3J5Lm1ldGFkYXRhLm9wZW5lZF1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJ0Lm11bHRpbGluZV1dIj4KICAgICAgICAgICAgICAgICAgPHRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgICBydW5zPSJbW19zZWxlY3RlZFJ1bnNdXSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iW1tjaGFydC50aXRsZV1dIgogICAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgICAgICAgICAgICAgIHNtb290aGluZy13ZWlnaHQ9IltbX3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgICAgICAgICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICAgICAgICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tfaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgICAgICAgICAgICAgc2hvdy1kb3dubG9hZC1saW5rcz0iW1tfc2hvd0Rvd25sb2FkTGlua3NdXSIKICAgICAgICAgICAgICAgICAgICB0YWctcmVnZXhlcz0iW1tjaGFydC5tdWx0aWxpbmUudGFnXV0iCiAgICAgICAgICAgICAgICAgID48L3RmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFydC5tYXJnaW5dXSI+CiAgICAgICAgICAgICAgICAgIDx0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgICBydW5zPSJbW19zZWxlY3RlZFJ1bnNdXSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iW1tjaGFydC50aXRsZV1dIgogICAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgICAgICAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgICAgICAgICAgICAgIHNob3ctZG93bmxvYWQtbGlua3M9IltbX3Nob3dEb3dubG9hZExpbmtzXV0iCiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWNoYXJ0LXNlcmllcz0iW1tjaGFydC5tYXJnaW4uc2VyaWVzXV0iCiAgICAgICAgICAgICAgICAgID48L3RmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQ+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQogICAgICAjdG9vbHRpcC1zb3J0aW5nIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICB3aWR0aDogMTA1cHg7CiAgICAgIH0KICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sWW8ucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsYW4pXSxZby5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFlvLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlciJ9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFlvLnByb3RvdHlwZSwiX3Nob3dEb3dubG9hZExpbmtzIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyLG5vdGlmeTohMCxvYnNlcnZlcjoiX3Ntb290aGluZ1dlaWdodE9ic2VydmVyIn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxZby5wcm90b3R5cGUsIl9zbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfaWdub3JlWU91dGxpZXJzT2JzZXJ2ZXIifSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxZby5wcm90b3R5cGUsIl9pZ25vcmVZT3V0bGllcnMiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWW8ucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWW8ucHJvdG90eXBlLCJfbGF5b3V0Iix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWW8ucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFlvLnByb3RvdHlwZSwiX29wZW5lZENhdGVnb3JpZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxZby5wcm90b3R5cGUsIl9hY3RpdmUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxZby5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCk7RShbUnQoIl9zbW9vdGhpbmdXZWlnaHQiKSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWW8ucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsbnVsbCk7RShbUnQoIl9sYXlvdXQiKSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlvLnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpO1lvPUUoW3l0KCJ0Zi1jdXN0b20tc2NhbGFyLWRhc2hib2FyZCIpXSxZbyk7dmFyIGtCPUVlKE9lKCksMSk7dmFyIG9zdD1FZShPZSgpLDEpLHhhPUVlKGJsKCksMSk7dmFyIExCPWNsYXNze2NvbnN0cnVjdG9yKHQscil7dGhpcy5ydW4yZGF0YXNldHM9e30sdGhpcy5jb2xvclNjYWxlPXIsdGhpcy5idWlsZENoYXJ0KHQpfWdldERhdGFzZXQodCl7cmV0dXJuIHRoaXMucnVuMmRhdGFzZXRzW3RdPT09dm9pZCAwJiYodGhpcy5ydW4yZGF0YXNldHNbdF09bmV3IHhhLkRhdGFzZXQoW10se3J1bjp0fSkpLHRoaXMucnVuMmRhdGFzZXRzW3RdfWJ1aWxkQ2hhcnQodCl7dGhpcy5vdXRlciYmdGhpcy5vdXRlci5kZXN0cm95KCk7bGV0IHI9X0IodCk7dGhpcy54QWNjZXNzb3I9ci5hY2Nlc3Nvcix0aGlzLnhTY2FsZT1yLnNjYWxlLHRoaXMueEF4aXM9ci5heGlzLHRoaXMueEF4aXMubWFyZ2luKDApLHRoaXMueEF4aXMudGlja0xhYmVsUGFkZGluZygzKSx0aGlzLnlTY2FsZT1uZXcgeGEuU2NhbGVzLkxpbmVhcix0aGlzLnlBeGlzPW5ldyB4YS5BeGVzLk51bWVyaWModGhpcy55U2NhbGUsImxlZnQiKTtsZXQgbj1HdShmQik7dGhpcy55QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZyg1KS5mb3JtYXR0ZXIobiksdGhpcy55QXhpcy51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbighMCk7bGV0IGk9dGhpcy5idWlsZFBsb3QodGhpcy54QWNjZXNzb3IsdGhpcy54U2NhbGUsdGhpcy55U2NhbGUpO3RoaXMuZ3JpZGxpbmVzPW5ldyB4YS5Db21wb25lbnRzLkdyaWRsaW5lcyh0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSksdGhpcy5jZW50ZXI9bmV3IHhhLkNvbXBvbmVudHMuR3JvdXAoW3RoaXMuZ3JpZGxpbmVzLGldKSx0aGlzLm91dGVyPW5ldyB4YS5Db21wb25lbnRzLlRhYmxlKFtbdGhpcy55QXhpcyx0aGlzLmNlbnRlcl0sW251bGwsdGhpcy54QXhpc11dKX1idWlsZFBsb3QodCxyLG4pe2xldCBpPVswLDIyOCwxNTg3LDMwODUsNWUzLDY5MTUsODQxMyw5NzcyLDFlNF0sbz1vc3QucmFuZ2UoaS5sZW5ndGgtMSkubWFwKGg9PihpW2grMV0taVtoXSkvMjUwMCksYT1pLm1hcCgoaCxmKT0+cD0+cFtmXVsxXSkscz00LGw9YVtzXSxjPW9zdC5yYW5nZShhLmxlbmd0aC0xKS5tYXAoaD0+e2xldCBmPW5ldyB4YS5QbG90cy5BcmVhO2YueCh0LHIpO2xldCBwPWg+cz9hW2hdOmFbaCsxXSxkPWg+cz9hW2grMV06YVtoXTtyZXR1cm4gZi55KGQsbiksZi55MChwKSxmLmF0dHIoImZpbGwiLChnLF8seSk9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh5Lm1ldGFkYXRhKCkucnVuKSksZi5hdHRyKCJzdHJva2UiLChnLF8seSk9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh5Lm1ldGFkYXRhKCkucnVuKSksZi5hdHRyKCJzdHJva2Utd2VpZ2h0IiwoZyxfLHkpPT4iMC41cHgiKSxmLmF0dHIoInN0cm9rZS1vcGFjaXR5IiwoKT0+b1toXSksZi5hdHRyKCJmaWxsLW9wYWNpdHkiLCgpPT5vW2hdKSxmfSksdT1uZXcgeGEuUGxvdHMuTGluZTtyZXR1cm4gdS54KHQsciksdS55KGwsbiksdS5hdHRyKCJzdHJva2UiLChoLGYscCk9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShwLnJ1bikpLHRoaXMucGxvdHM9YyxuZXcgeGEuQ29tcG9uZW50cy5Hcm91cChjKX1zZXRWaXNpYmxlU2VyaWVzKHQpe3RoaXMucnVucz10O2xldCByPXQubWFwKG49PnRoaXMuZ2V0RGF0YXNldChuKSk7dGhpcy5wbG90cy5mb3JFYWNoKG49Pm4uZGF0YXNldHMocikpfXNldFNlcmllc0RhdGEodCxyKXt0aGlzLmdldERhdGFzZXQodCkuZGF0YShyKX1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCl9cmVkcmF3KCl7dGhpcy5vdXRlci5yZWRyYXcoKX1kZXN0cm95KCl7dGhpcy5vdXRlci5kZXN0cm95KCl9fSx6Yz1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5jb2xvclNjYWxlPW5ldyB4YS5TY2FsZXMuQ29sb3IoKS5yYW5nZShZYi5zbGljZSgpKSx0aGlzLnhUeXBlPSJzdGVwIix0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9W10sdGhpcy5fc2VyaWVzRGF0YUNhY2hlPXt9LHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlPXQsdGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHQpLHRoaXMucmVkcmF3KCkpfXNldFNlcmllc0RhdGEodCxyKXt0aGlzLl9zZXJpZXNEYXRhQ2FjaGVbdF09cix0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LHIpfXJlZHJhdygpe3RoaXMuX2NoYXJ0LnJlZHJhdygpfV9tYWtlQ2hhcnQoKXt2YXIgdD10aGlzLnhUeXBlLHI9dGhpcy5jb2xvclNjYWxlLG49dGhpcy5fYXR0YWNoZWQ7dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIT09bnVsbCYmdGhpcy5jYW5jZWxBc3luYyh0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD10aGlzLmFzeW5jKGZ1bmN0aW9uKCl7aWYodGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGwsISFuKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpO3ZhciBpPW5ldyBMQih0LHIpLG89SHQodGhpcy4kLmNoYXJ0ZGl2KTtpLnJlbmRlclRvKG8pLHRoaXMuX2NoYXJ0PWl9fSwzNTApfV9yZWxvYWRGcm9tQ2FjaGUoKXt0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlKSx0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsdGhpcy5fc2VyaWVzRGF0YUNhY2hlW3RdfHxbXSl9LmJpbmQodGhpcykpKX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwfWRldGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITF9fTt6Yy50ZW1wbGF0ZT1RYAogICAgPHN0eWxlIGluY2x1ZGU9InBsb3R0YWJsZS1zdHlsZSI+PC9zdHlsZT4KICAgIDxkaXYgaWQ9ImNoYXJ0ZGl2Ij48L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICAjY2hhcnRkaXYgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KICAgICAgLnBsb3R0YWJsZSAuYXhpcyB0ZXh0IHsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIix4YS5TY2FsZXMuQ29sb3IpXSx6Yy5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0semMucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHpjLnByb3RvdHlwZSwiX2F0dGFjaGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLExCKV0semMucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLHpjLnByb3RvdHlwZSwiX3Zpc2libGVTZXJpZXNDYWNoZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx6Yy5wcm90b3R5cGUsIl9zZXJpZXNEYXRhQ2FjaGUiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0semMucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApO0UoW0J0KCJ4VHlwZSIsImNvbG9yU2NhbGUiLCJfYXR0YWNoZWQiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHpjLnByb3RvdHlwZSwiX21ha2VDaGFydCIsbnVsbCk7RShbQnQoIl9jaGFydCIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0semMucHJvdG90eXBlLCJfcmVsb2FkRnJvbUNhY2hlIixudWxsKTt6Yz1FKFt5dCgidnotZGlzdHJpYnV0aW9uLWNoYXJ0IildLHpjKTt2YXIgYmE9Y2xhc3MgZXh0ZW5kcyBMUyhHdChtdCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmdldERhdGFMb2FkTmFtZT0oe3J1bjp0fSk9PnQsdGhpcy5yZXF1ZXN0RGF0YT0odCxyLG4pPT57bGV0IG89dmUoKS5wbHVnaW5Sb3V0ZSgiZGlzdHJpYnV0aW9ucyIsIi9kaXN0cmlidXRpb25zIik7UHJvbWlzZS5hbGwodC5tYXAoYT0+e2xldCBzPUNuKG8se3RhZzphLnRhZyxydW46YS5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHMpLnRoZW4obD0+dm9pZCByKHtpdGVtOmEsZGF0YTpsfSkpfSkpLmZpbmFsbHkoKCk9PnZvaWQgbigpKX0sdGhpcy5sb2FkRGF0YUNhbGxiYWNrPSh0LHIsbik9PntsZXQgaT1uLm1hcChhPT57bGV0W3MsbCxjXT1hO3JldHVybiBjLndhbGxfdGltZT1uZXcgRGF0ZShzKjFlMyksYy5zdGVwPWwsY30pLG89dGhpcy5nZXREYXRhTG9hZE5hbWUocik7dGhpcy4kLmNoYXJ0LnNldFNlcmllc0RhdGEobyxpKSx0aGlzLiQuY2hhcnQuc2V0VmlzaWJsZVNlcmllcyhbb10pfSx0aGlzLl9jb2xvclNjYWxlPXtzY2FsZTpmbn0sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fY2FuY2VsbGVyPW5ldyBhbn1fcmVsb2FkT25SdW5UYWdDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dmFyIHQ9dGhpcy5ydW4scj10aGlzLnRhZzt0aGlzLmRhdGFUb0xvYWQ9W3tydW46dCx0YWc6cn1dfWdldCBfcnVuQ29sb3IoKXt2YXIgdD10aGlzLnJ1bjtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZS5zY2FsZSh0KX1yZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX19O2JhLnRlbXBsYXRlPVFgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8IS0tCiAgICAgIFRoZSBtYWluIGRpc3RyaWJ1dGlvbiB0aGF0IHdlIHJlbmRlci4gRGF0YSBpcyBzZXQgZGlyZWN0bHkgd2l0aAogICAgICBcYHNldFNlcmllc0RhdGFcYCwgbm90IHdpdGggYSBib3VuZCBwcm9wZXJ0eS4KICAgIC0tPgogICAgPHZ6LWRpc3RyaWJ1dGlvbi1jaGFydAogICAgICBpZD0iY2hhcnQiCiAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgPjwvdnotZGlzdHJpYnV0aW9uLWNoYXJ0PgogICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogMzMwcHg7CiAgICAgICAgaGVpZ2h0OiAyMzVweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiA3MDBweDsKICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICB2ei1oaXN0b2dyYW0tdGltZXNlcmllcyB7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQoKICAgICAgdGYtY2FyZC1oZWFkaW5nIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYmEucHJvdG90eXBlLCJydW4iLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYmEucHJvdG90eXBlLCJ0YWciLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYmEucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxiYS5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGJhLnByb3RvdHlwZSwiZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGJhLnByb3RvdHlwZSwibG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxiYS5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGJhLnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sYmEucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixhbildLGJhLnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKTtFKFtCdCgicnVuIiwidGFnIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxiYS5wcm90b3R5cGUsIl9yZWxvYWRPblJ1blRhZ0NoYW5nZSIsbnVsbCk7RShbQnQoInJ1biIsInRhZyIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sYmEucHJvdG90eXBlLCJfdXBkYXRlRGF0YVRvTG9hZCIsbnVsbCk7RShbUnQoInJ1biIpLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGJhLnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKTtiYT1FKFt5dCgidGYtZGlzdHJpYnV0aW9uLWxvYWRlciIpXSxiYSk7dmFyIHdsPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5feFR5cGU9InN0ZXAiLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBBZX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCk9Pnt0aGlzLl9yZWxvYWREaXN0cmlidXRpb25zKCl9KX1fZmV0Y2hUYWdzKCl7bGV0IHQ9dmUoKS5wbHVnaW5Sb3V0ZSgiZGlzdHJpYnV0aW9ucyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57aWYoa0IuaXNFcXVhbChyLHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2xldCBuPWtCLm1hcFZhbHVlcyhyLG89Pk9iamVjdC5rZXlzKG8pKSxpPVhpKG4pO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIixpLmxlbmd0aD09PTApLHRoaXMuc2V0KCJfcnVuVG9UYWciLG4pLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIixyKSx0aGlzLmFzeW5jKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pfSl9X3JlbG9hZERpc3RyaWJ1dGlvbnMoKXt2YXIgdDsodD10aGlzLnJvb3QpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1kaXN0cmlidXRpb24tbG9hZGVyIikuZm9yRWFjaChyPT57ci5yZWxvYWQoKX0pfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnLHI9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyLGk9dGhpcy5fY2F0ZWdvcmllc0RvbVJlYWR5O3JldHVybiBabCh0LHIsbil9X3RhZ01ldGFkYXRhKHQscixuKXtyZXR1cm4gdFtyXVtuXX19O3dsLnRlbXBsYXRlPVFgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ4VHlwZVNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ikhvcml6b250YWwgYXhpcyIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfeFR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGRpc3RyaWJ1dGlvbiBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBoaXN0b2dyYW0gZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLgogICAgICAgICAgICAgICAgKEhpc3RvZ3JhbXMgYW5kIGRpc3RyaWJ1dGlvbnMgYm90aCB1c2UgdGhlIGhpc3RvZ3JhbSBzdW1tYXJ5CiAgICAgICAgICAgICAgICBvcGVyYXRpb24uKQogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1kaXN0cmlidXRpb24tbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1kaXN0cmlidXRpb24tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3bC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd2wucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLHdsLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3bC5wcm90b3R5cGUsIl9ydW5Ub1RhZyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3bC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx3bC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd2wucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd2wucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sd2wucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbUnQoIl9ydW5Ub1RhZyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sd2wucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCk7d2w9RShbeXQoInRmLWRpc3RyaWJ1dGlvbi1kYXNoYm9hcmQiKV0sd2wpO3ZhciBSQj17fTskcyhSQix7RElTQU1CSUdVQVRPUjooKT0+TjB0LExpc3RlbktleTooKT0+ZkUsYWRkSGFzaExpc3RlbmVyOigpPT5wRSxhZGRTdG9yYWdlTGlzdGVuZXI6KCk9PkVXLGRpc3Bvc2VCb29sZWFuQmluZGluZzooKT0+cWJlLGRpc3Bvc2VOdW1iZXJCaW5kaW5nOigpPT5HYmUsZGlzcG9zZU9iamVjdEJpbmRpbmc6KCk9PmpiZSxkaXNwb3NlU3RyaW5nQmluZGluZzooKT0+SGJlLGZpcmVTdG9yYWdlQ2hhbmdlZDooKT0+VFcsZ2V0Qm9vbGVhbjooKT0+VmJlLGdldEJvb2xlYW5Jbml0aWFsaXplcjooKT0+dnAsZ2V0Qm9vbGVhbk9ic2VydmVyOigpPT54cCxnZXROdW1iZXI6KCk9PlJXLGdldE51bWJlckluaXRpYWxpemVyOigpPT5kRSxnZXROdW1iZXJPYnNlcnZlcjooKT0+bUUsZ2V0T2JqZWN0OigpPT5XYmUsZ2V0T2JqZWN0SW5pdGlhbGl6ZXI6KCk9PkRXLGdldE9iamVjdE9ic2VydmVyOigpPT5PVyxnZXRTdHJpbmc6KCk9PkZiZSxnZXRTdHJpbmdJbml0aWFsaXplcjooKT0+eV8sZ2V0U3RyaW5nT2JzZXJ2ZXI6KCk9PnZfLGdldFVybEhhc2hEaWN0OigpPT5JMHQsbWFrZUJpbmRpbmdzOigpPT5nRSxtaWdyYXRlTGVnYWN5VVJMU2NoZW1lOigpPT5YYmUscmVtb3ZlSGFzaExpc3RlbmVyQnlLZXk6KCk9PkNXLHJlbW92ZVN0b3JhZ2VMaXN0ZW5lckJ5S2V5OigpPT5BVyxzZXRCb29sZWFuOigpPT5VYmUsc2V0TnVtYmVyOigpPT5OVyxzZXRPYmplY3Q6KCk9PlliZSxzZXRTdHJpbmc6KCk9PkJiZX0pO3ZhciBuY3Q9RWUoT2UoKSwxKTt2YXIgVkt0PSJHcmFwaCBkYXNoYm9hcmQgYWN0aW9ucyIsVUt0PSJHcmFwaCBkYXNoYm9hcmQgdGltaW5ncyIsYXN0OyhmdW5jdGlvbihlKXtlLkZFVENIX1BCVFhUX0JZVEVTPSJGRVRDSF9QQlRYVF9CWVRFUyIsZS5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU09IkZFVENIX1BCVFhUX0JZVEVTX0ZST01fRklMRVNZU1RFTSIsZS5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX1NFUlZFUj0iRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIiLGUuUEFSU0VfUEJUWFRfSU5UT19PQkpFQ1Q9IlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUIixlLkZFVENIX01FVEFEQVRBX1BCVFhUX0JZVEVTPSJGRVRDSF9NRVRBREFUQV9QQlRYVF9CWVRFUyIsZS5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVD0iUEFSU0VfTUVUQURBVEFfUEJUWFRfSU5UT19PQkpFQ1QiLGUuTk9STUFMSVpJTkdfTkFNRVM9Ik5PUk1BTElaSU5HX05BTUVTIixlLkJVSUxEX1NMSU1fR1JBUEg9IkJVSUxEX1NMSU1fR1JBUEgiLGUuSElFUkFSQ0hZX0FERF9OT0RFUz0iSElFUkFSQ0hZX0FERF9OT0RFUyIsZS5ISUVSQVJDSFlfREVURUNUX1NFUklFUz0iSElFUkFSQ0hZX0RFVEVDVF9TRVJJRVMiLGUuSElFUkFSQ0hZX0FERF9FREdFUz0iSElFUkFSQ0hZX0FERF9FREdFUyIsZS5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUz0iSElFUkFSQ0hZX0ZJTkRfU0lNSUxBUl9TVUJHUkFQSFMiLGUuUkVOREVSX0JVSUxEX0hJRVJBUkNIWT0iUkVOREVSX0JVSUxEX0hJRVJBUkNIWSIsZS5SRU5ERVJfU0NFTkVfTEFZT1VUPSJSRU5ERVJfU0NFTkVfTEFZT1VUIixlLlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORT0iUkVOREVSX1NDRU5FX0JVSUxEX1NDRU5FIixlLkdSQVBIX0xPQURfU1VDQ0VFREVEPSJHUkFQSF9MT0FEX1NVQ0NFRURFRCIsZS5HUkFQSF9MT0FEX0ZBSUxFRD0iR1JBUEhfTE9BRF9GQUlMRUQifSkoYXN0fHwoYXN0PXt9KSk7dmFyIHNzdDsoZnVuY3Rpb24oZSl7ZS5OT0RFX0VYUEFOU0lPTl9UT0dHTEVEPSJOT0RFX0VYUEFOU0lPTl9UT0dHTEVEIixlLk5PREVfU0VBUkNIX1JFU1VMVF9GT0NVU0VEPSJOT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRCIsZS5OT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQ9Ik5PREVfQVVYSUxJQVJZX0VYVFJBQ1RJT05fQ0hBTkdFRCIsZS5HUkFQSF9UWVBFX0NIQU5HRUQ9IkdSQVBIX1RZUEVfQ0hBTkdFRCIsZS5UUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUQ9IlRSQUNFX0lOUFVUX01PREVfVE9HR0xFRCIsZS5OT0RFX0NPTE9SX01PREVfQ0hBTkdFRD0iTk9ERV9DT0xPUl9NT0RFX0NIQU5HRUQiLGUuVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNPSJVUExPQURFRF9HUkFQSF9GUk9NX0ZJTEVTWVNURU0ifSkoc3N0fHwoc3N0PXt9KSk7dmFyIGpyPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhc3QpLHNzdCk7dmFyIFhzZT1FZShEbHQoKSwxKSxwbj1FZShPZSgpLDEpO3ZhciB6czsoZnVuY3Rpb24oZSl7ZS5PUF9HUkFQSD0ib3BfZ3JhcGgiLGUuQ09OQ0VQVFVBTF9HUkFQSD0iY29uY2VwdHVhbF9ncmFwaCIsZS5QUk9GSUxFPSJwcm9maWxlIn0pKHpzfHwoenM9e30pKTt2YXIgeWU9e05vZGU6e0NPTlRBSU5FUjoibm9kZXMiLEdST1VQOiJub2RlIixTSEFQRToibm9kZXNoYXBlIixDT0xPUl9UQVJHRVQ6Im5vZGVjb2xvcnRhcmdldCIsTEFCRUw6Im5vZGVsYWJlbCIsQlVUVE9OX0NPTlRBSU5FUjoiYnV0dG9uY29udGFpbmVyIixCVVRUT05fQ0lSQ0xFOiJidXR0b25jaXJjbGUiLEVYUEFORF9CVVRUT046ImV4cGFuZGJ1dHRvbiIsQ09MTEFQU0VfQlVUVE9OOiJjb2xsYXBzZWJ1dHRvbiJ9LEVkZ2U6e0NPTlRBSU5FUjoiZWRnZXMiLEdST1VQOiJlZGdlIixMSU5FOiJlZGdlbGluZSIsUkVGRVJFTkNFX0VER0U6InJlZmVyZW5jZWVkZ2UiLFJFRl9MSU5FOiJyZWZsaW5lIixTRUxFQ1RBQkxFOiJzZWxlY3RhYmxlZWRnZSIsU0VMRUNURUQ6InNlbGVjdGVkZWRnZSIsU1RSVUNUVVJBTDoic3RydWN0dXJhbCJ9LEFubm90YXRpb246e09VVEJPWDoib3V0LWFubm90YXRpb25zIixJTkJPWDoiaW4tYW5ub3RhdGlvbnMiLEdST1VQOiJhbm5vdGF0aW9uIixOT0RFOiJhbm5vdGF0aW9uLW5vZGUiLEVER0U6ImFubm90YXRpb24tZWRnZSIsQ09OVFJPTF9FREdFOiJhbm5vdGF0aW9uLWNvbnRyb2wtZWRnZSIsTEFCRUw6ImFubm90YXRpb24tbGFiZWwiLEVMTElQU0lTOiJhbm5vdGF0aW9uLWVsbGlwc2lzIn0sU2NlbmU6e0dST1VQOiJzY2VuZSIsQ09SRToiY29yZSIsRlVOQ1RJT05fTElCUkFSWToiZnVuY3Rpb24tbGlicmFyeSIsSU5FWFRSQUNUOiJpbi1leHRyYWN0IixPVVRFWFRSQUNUOiJvdXQtZXh0cmFjdCJ9LFN1YnNjZW5lOntHUk9VUDoic3Vic2NlbmUifSxPUE5PREU6Im9wIixNRVRBTk9ERToibWV0YSIsU0VSSUVTTk9ERToic2VyaWVzIixCUklER0VOT0RFOiJicmlkZ2UiLEVMTElQU0lTTk9ERToiZWxsaXBzaXMifSwkND17RWRnZTp7TEFCRUw6My41fSxBbm5vdGF0aW9uOntMQUJFTDo1fSxOb2RlOntFWFBBTkRFRF9MQUJFTDo5LFNFUklFU19MQUJFTDo4LE9QX0xBQkVMOjYsSEVBTFRIX1BJTExfU1RBVF9MQUJFTDo0fX0sWXU9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtmdW5jdGlvbiBtMChlLHQscil7bGV0IG49ZS5ub2RlKCkuY2hpbGROb2Rlcztmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl7bGV0IG89bltpXTtpZihvLnRhZ05hbWU9PT10KXtpZihyIGluc3RhbmNlb2YgQXJyYXkpe2xldCBhPSEwO2ZvcihsZXQgcz0wO3M8ci5sZW5ndGg7cysrKWE9YSYmby5jbGFzc0xpc3QuY29udGFpbnMocltzXSk7aWYoYSlyZXR1cm4gSHQobyl9ZWxzZSBpZighcnx8by5jbGFzc0xpc3QuY29udGFpbnMocikpcmV0dXJuIEh0KG8pfX1yZXR1cm4gSHQobnVsbCl9ZnVuY3Rpb24gUG4oZSx0LHIsbil7bGV0IGk9bTAoZSx0LHIpO2lmKCFpLmVtcHR5KCkpcmV0dXJuIGk7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsdCk7aWYociBpbnN0YW5jZW9mIEFycmF5KWZvcihsZXQgYT0wO2E8ci5sZW5ndGg7YSsrKW8uY2xhc3NMaXN0LmFkZChyW2FdKTtlbHNlIG8uY2xhc3NMaXN0LmFkZChyKTtyZXR1cm4gbj9lLm5vZGUoKS5pbnNlcnRCZWZvcmUobyxuKTplLm5vZGUoKS5hcHBlbmRDaGlsZChvKSxIdChvKS5kYXR1bShlLmRhdHVtKCkpfXZhciAkUz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnRvdGFsQnl0ZXM9MCx0aGlzLm91dHB1dFNpemU9dH1hZGRFeGVjdXRpb25UaW1lKHQscil7dGhpcy5zdGFydFRpbWUhPW51bGw/dGhpcy5zdGFydFRpbWU9TWF0aC5taW4odGhpcy5zdGFydFRpbWUsdCk6dGhpcy5zdGFydFRpbWU9dCx0aGlzLmVuZFRpbWUhPW51bGw/dGhpcy5lbmRUaW1lPU1hdGgubWF4KHRoaXMuZW5kVGltZSxyKTp0aGlzLmVuZFRpbWU9cn1hZGRCeXRlc0FsbG9jYXRpb24odCl7dGhpcy50b3RhbEJ5dGVzIT1udWxsP3RoaXMudG90YWxCeXRlcz1NYXRoLm1heCh0aGlzLnRvdGFsQnl0ZXMsdCk6dGhpcy50b3RhbEJ5dGVzPXR9Y29tYmluZSh0KXt0LnRvdGFsQnl0ZXMhPW51bGwmJih0aGlzLnRvdGFsQnl0ZXMrPXQudG90YWxCeXRlcyksdC5nZXRUb3RhbE1pY3JvcygpIT1udWxsJiZ0aGlzLmFkZEV4ZWN1dGlvblRpbWUodC5zdGFydFRpbWUsdC5lbmRUaW1lKX1nZXRUb3RhbE1pY3Jvcygpe3JldHVybiB0aGlzLnN0YXJ0VGltZT09bnVsbHx8dGhpcy5lbmRUaW1lPT1udWxsP251bGw6dGhpcy5lbmRUaW1lLXRoaXMuc3RhcnRUaW1lfX0sSzQ9Ljc1LFo0PTEyLHFscj0uMyxHbHI9WzEsNWU2XSxCc2U9S18oKS5leHBvbmVudChxbHIpLmRvbWFpbihHbHIpLnJhbmdlKFtLNCxaNF0pLmNsYW1wKCEwKTt2YXIgS1M9RWUoT2UoKSwxKTt2YXIgVnNlPTIwO2Z1bmN0aW9uIFdscihlKXtyZXR1cm4gZS5oYXNPd25Qcm9wZXJ0eSgidGltaW5nSWQiKX1mdW5jdGlvbiBBbyhlKXtXbHIoZSk/KFVLdCxlLnRpbWluZ0lkLGUuZXZlbnRWYWx1ZSx2b2lkIDApOihWS3QsZS5hY3Rpb25JZCxlLmV2ZW50TGFiZWwsdm9pZCAwKX1mdW5jdGlvbiBSZChlLHQscil7bGV0IG49RGF0ZS5ub3coKSxpPXQoKSxvPURhdGUubm93KCktbjtyZXR1cm4gY29uc29sZS5sb2coZSwiOiIsbywibXMiKSxyJiZBbyh7dGltaW5nSWQ6cixldmVudFZhbHVlOm99KSxpfWZ1bmN0aW9uIHRQKGUpe3JldHVybntzZXRNZXNzYWdlOmZ1bmN0aW9uKHQpe2Uuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOmUucHJvZ3Jlc3MudmFsdWUsbXNnOnR9KX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24odCl7ZS5zZXQoInByb2dyZXNzIix7dmFsdWU6ZS5wcm9ncmVzcy52YWx1ZSt0LG1zZzplLnByb2dyZXNzLm1zZ30pfSxyZXBvcnRFcnJvcjpmdW5jdGlvbih0LHIpe2NvbnNvbGUuZXJyb3Ioci5zdGFjayksZS5zZXQoInByb2dyZXNzIix7dmFsdWU6ZS5wcm9ncmVzcy52YWx1ZSxtc2c6dCxlcnJvcjohMH0pfX19ZnVuY3Rpb24gWlMoZSx0LHIpe3JldHVybntzZXRNZXNzYWdlOmZ1bmN0aW9uKG4pe2Uuc2V0TWVzc2FnZShyKyI6ICIrbil9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKG4pe2UudXBkYXRlUHJvZ3Jlc3Mobip0LzEwMCl9LHJlcG9ydEVycm9yOmZ1bmN0aW9uKG4saSl7ZS5yZXBvcnRFcnJvcihyKyI6ICIrbixpKX19fWZ1bmN0aW9uIFVzZShlLHQscixuLGkpe24uc2V0TWVzc2FnZShlKTt0cnl7bGV0IG89UmQoZSxyLGkpO3JldHVybiBuLnVwZGF0ZVByb2dyZXNzKHQpLG99Y2F0Y2gobyl7cmV0dXJuIG4ucmVwb3J0RXJyb3IoIkZhaWxlZCAiK2UsbyksbnVsbH19ZnVuY3Rpb24gZTEoZSx0LHIsbixpKXtyZXR1cm4gbmV3IFByb21pc2UoKG8sYSk9PntuLnNldE1lc3NhZ2UoZSksc2V0VGltZW91dChmdW5jdGlvbigpe3RyeXtsZXQgcz1SZChlLHIsaSk7bi51cGRhdGVQcm9ncmVzcyh0KSxvKHMpfWNhdGNoKHMpe24ucmVwb3J0RXJyb3IoIkZhaWxlZCAiK2Uscyl9fSxWc2UpfSl9ZnVuY3Rpb24gZkgoZSx0LHIsbixpKXtyZXR1cm4gbmV3IFByb21pc2UoKG8sYSk9PntsZXQgcz1mdW5jdGlvbihsKXtuLnJlcG9ydEVycm9yKCJGYWlsZWQgIitlLGwpLGEobCl9O24uc2V0TWVzc2FnZShlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dHJ5e2xldCBsPURhdGUubm93KCk7cigpLnRoZW4oZnVuY3Rpb24oYyl7bGV0IHU9RGF0ZS5ub3coKS1sO2NvbnNvbGUubG9nKGUsIjoiLHUsIm1zIiksbi51cGRhdGVQcm9ncmVzcyh0KSxBbyh7dGltaW5nSWQ6aSxldmVudFZhbHVlOnV9KSxvKGMpfSkuY2F0Y2gocyl9Y2F0Y2gobCl7cyhsKX19LFZzZSl9KX1mdW5jdGlvbiBxc2UoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFs6LlxbXF0sL1xcXChcKV0pL2csIlxcJDEiKX12YXIgZVA9W3tzeW1ib2w6IkIifSx7c3ltYm9sOiJLQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiTUIiLG51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IkdCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJUQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiUEIiLG51bVVuaXRzOjEwMjR9XSxyUD1be3N5bWJvbDoiXHhCNXMifSx7c3ltYm9sOiJtcyIsbnVtVW5pdHM6MWUzfSx7c3ltYm9sOiJzIixudW1Vbml0czoxZTN9LHtzeW1ib2w6Im1pbiIsbnVtVW5pdHM6NjB9LHtzeW1ib2w6ImhyIixudW1Vbml0czo2MH0se3N5bWJvbDoiZGF5cyIsbnVtVW5pdHM6MjR9XTtmdW5jdGlvbiBOZChlLHQscj0wKXtyZXR1cm4gcisxPHQubGVuZ3RoJiZlPj10W3IrMV0ubnVtVW5pdHM/TmQoZS90W3IrMV0ubnVtVW5pdHMsdCxyKzEpOk51bWJlcihlLnRvUHJlY2lzaW9uKDMpKSsiICIrdFtyXS5zeW1ib2x9ZnVuY3Rpb24gcEgoZSl7cmV0dXJuISEoZSYmKGUudG90YWxCeXRlcz4wfHxlLmdldFRvdGFsTWljcm9zKCk+MHx8ZS5vdXRwdXRTaXplKSl9ZnVuY3Rpb24gT2x0KGUpe2lmKGUubGVuZ3RoPDIpcmV0dXJuIGU7bGV0IHQ9MCxyPTAsbj1LUy5taW4oS1MubWFwKGUsaT0+aS5sZW5ndGgpKTtmb3IoOzspe3QrKztsZXQgaT1LUy5tYXAoZSxhPT5hLnN1YnN0cmluZygwLHQpKTtpZihpLmV2ZXJ5KChhLHMpPT5zPT09MD8hMDphPT09aVtzLTFdKSl7aWYodD49bilyZXR1cm4gZTtyPXR9ZWxzZSBicmVha31yZXR1cm4gS1MubWFwKGUsaT0+aS5zdWJzdHJpbmcocikpfWZ1bmN0aW9uIEdzZShlKXt2YXIgdD0rbmV3IERhdGUtK25ldyBEYXRlKGUvMWUzKTtyZXR1cm4gdDwzZTQ/Imp1c3Qgbm93Ijp0PDZlND9NYXRoLmZsb29yKHQvMWUzKSsiIHNlY29uZHMgYWdvIjp0PDEyZTQ/ImEgbWludXRlIGFnbyI6dDwzNmU1P01hdGguZmxvb3IodC82ZTQpKyIgbWludXRlcyBhZ28iOk1hdGguZmxvb3IodC8zNmU1KT09MT8iYW4gaG91ciBhZ28iOnQ8ODY0ZTU/TWF0aC5mbG9vcih0LzM2ZTUpKyIgaG91cnMgYWdvIjp0PDE3MjhlNT8ieWVzdGVyZGF5IjpNYXRoLmZsb29yKHQvODY0ZTUpKyIgZGF5cyBhZ28ifXZhciBZbHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksUTQ9WWxyLmdldENvbnRleHQoIjJkIik7ZnVuY3Rpb24gSHNlKGUsdCl7cmV0dXJuIFE0JiYoUTQuZm9udD1gJHt0fXB4IFJvYm90bywgc2Fucy1zZXJpZmApLFE0PT1udWxsP3ZvaWQgMDpRNC5tZWFzdXJlVGV4dChlKS53aWR0aH1mdW5jdGlvbiBXc2UoZSx0LHIpe2lmKCFlKXJldHVybiIiO2lmKEhzZShlLHQpPD1yKXJldHVybiBlO2xldCBuPTAsaT1lLmxlbmd0aDtmb3IoO248aTspe2xldCBvPW4rTWF0aC5yb3VuZCgoaS1uKS8yKSxhPWUuc2xpY2UoMCxvKSsiXHUyMDI2IjtIc2UoYSx0KTw9cj9uPW86aT1vLTF9cmV0dXJuIG49PT0wP2VbMF06ZS5zbGljZSgwLG4pKyJcdTIwMjYifXZhciBoSD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZXZlbnRUeXBlVG9MaXN0ZW5lcnM9bmV3IE1hcH1nZXRMaXN0ZW5lcnModCl7cmV0dXJuIHRoaXMuZXZlbnRUeXBlVG9MaXN0ZW5lcnMuaGFzKHQpfHx0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLnNldCh0LFtdKSx0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLmdldCh0KX1hZGRMaXN0ZW5lcih0LHIpe3ZhciBuOyhuPXRoaXMuZ2V0TGlzdGVuZXJzKHQpKT09PW51bGx8fG49PT12b2lkIDB8fG4ucHVzaChyKX1yZW1vdmVMaXN0ZW5lcih0LHIpe3ZhciBuO2xldCBpPShuPXRoaXMuZ2V0TGlzdGVuZXJzKHQpKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4uZmlsdGVyKG89Pm8hPT1yKTt0aGlzLmV2ZW50VHlwZVRvTGlzdGVuZXJzLnNldCh0LGkpfWRpc3BhdGNoRXZlbnQodCxyKXtmb3IobGV0IG4gb2YgdGhpcy5nZXRMaXN0ZW5lcnModCkpbihyKX19O3ZhciBDbD0iLyIsVmM9Il9fcm9vdF9fIix3YT0iX19mdW5jdGlvbl9saWJyYXJ5X18iLCRzZT0iX3Rvb19sYXJnZV9hdHRycyI7dmFyIEtzZT0iLS0iLGcwOyhmdW5jdGlvbihlKXtlW2UuRlVMTD0wXT0iRlVMTCIsZVtlLkVNQkVEREVEPTFdPSJFTUJFRERFRCIsZVtlLk1FVEE9Ml09Ik1FVEEiLGVbZS5TRVJJRVM9M109IlNFUklFUyIsZVtlLkNPUkU9NF09IkNPUkUiLGVbZS5TSEFET1c9NV09IlNIQURPVyIsZVtlLkJSSURHRT02XT0iQlJJREdFIixlW2UuRURHRT03XT0iRURHRSJ9KShnMHx8KGcwPXt9KSk7dmFyIGp0OyhmdW5jdGlvbihlKXtlW2UuTUVUQT0wXT0iTUVUQSIsZVtlLk9QPTFdPSJPUCIsZVtlLlNFUklFUz0yXT0iU0VSSUVTIixlW2UuQlJJREdFPTNdPSJCUklER0UiLGVbZS5FTExJUFNJUz00XT0iRUxMSVBTSVMifSkoanR8fChqdD17fSkpO3ZhciB1cjsoZnVuY3Rpb24oZSl7ZVtlLklOQ0xVREU9MF09IklOQ0xVREUiLGVbZS5FWENMVURFPTFdPSJFWENMVURFIixlW2UuVU5TUEVDSUZJRUQ9Ml09IlVOU1BFQ0lGSUVEIn0pKHVyfHwodXI9e30pKTt2YXIgbnM7KGZ1bmN0aW9uKGUpe2VbZS5HUk9VUD0wXT0iR1JPVVAiLGVbZS5VTkdST1VQPTFdPSJVTkdST1VQIn0pKG5zfHwobnM9e30pKTt2YXIgamxyPSJfb3V0cHV0X3NoYXBlcyIsWGxyPSJfWGxhQ2x1c3RlciIsanU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm5vZGVzPXt9LHRoaXMuZWRnZXM9W119fSxkSD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnR5cGU9anQuRUxMSVBTSVMsdGhpcy5pc0dyb3VwTm9kZT0hMSx0aGlzLmNhcmRpbmFsaXR5PTEsdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5zdGF0cz1udWxsLHRoaXMuc2V0TnVtTW9yZU5vZGVzKHQpLHRoaXMuaW5jbHVkZT11ci5VTlNQRUNJRklFRH1zZXROdW1Nb3JlTm9kZXModCl7dGhpcy5udW1Nb3JlTm9kZXM9dCx0aGlzLm5hbWU9Ii4uLiAiK3QrIiBtb3JlIn19LF8wPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMub3A9dC5vcCx0aGlzLm5hbWU9dC5uYW1lLHRoaXMuZGV2aWNlPXQuZGV2aWNlLHRoaXMuYXR0cj10LmF0dHIsdGhpcy5pbnB1dHM9SmxyKHQuaW5wdXQpLHRoaXMub3V0cHV0U2hhcGVzPSRscih0LmF0dHIpLHRoaXMueGxhQ2x1c3Rlcj1LbHIodC5hdHRyKSx0aGlzLmNvbXBhdGlibGU9ITEsdGhpcy50eXBlPWp0Lk9QLHRoaXMuaXNHcm91cE5vZGU9ITEsdGhpcy5jYXJkaW5hbGl0eT0xLHRoaXMuaW5FbWJlZGRpbmdzPVtdLHRoaXMub3V0RW1iZWRkaW5ncz1bXSx0aGlzLnBhcmVudE5vZGU9bnVsbCx0aGlzLmluY2x1ZGU9dXIuVU5TUEVDSUZJRUQsdGhpcy5vd25pbmdTZXJpZXM9bnVsbH19O2Z1bmN0aW9uIG9QKGUsdD17fSl7cmV0dXJuIG5ldyBuUChlLHQpfWZ1bmN0aW9uIFpzZShlLHQscil7cG4uZWFjaChlLm5vZGVzLG49PntuLnN0YXRzPW51bGx9KSxwbi5lYWNoKHQuZGV2X3N0YXRzLG49PntyJiYhcltuLmRldmljZV18fHBuLmVhY2gobi5ub2RlX3N0YXRzLGk9PntsZXQgbz1pLm5vZGVfbmFtZSBpbiBlLm5vZGVzP2kubm9kZV9uYW1lOmlQKGkubm9kZV9uYW1lKTtpZighKG8gaW4gZS5ub2RlcykpcmV0dXJuO2xldCBhPTA7aS5tZW1vcnkmJnBuLmVhY2goaS5tZW1vcnksbD0+e2wudG90YWxfYnl0ZXMmJihsLnRvdGFsX2J5dGVzPjA/YSs9TnVtYmVyKGwudG90YWxfYnl0ZXMpOmNvbnNvbGUubG9nKCJpZ25vcmluZyBuZWdhdGl2ZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgIitvKSl9KTtsZXQgcz1udWxsO2kub3V0cHV0JiYocz1wbi5tYXAoaS5vdXRwdXQsbD0+cG4ubWFwKGwudGVuc29yX2Rlc2NyaXB0aW9uLnNoYXBlLmRpbSxjPT5OdW1iZXIoYy5zaXplKSkpKSxlLm5vZGVzW29dLmRldmljZT1uLmRldmljZSxlLm5vZGVzW29dLnN0YXRzPT1udWxsJiYoZS5ub2Rlc1tvXS5zdGF0cz1uZXcgJFMocykpLGUubm9kZXNbb10uc3RhdHMuYWRkQnl0ZXNBbGxvY2F0aW9uKGEpLGkuYWxsX2VuZF9yZWxfbWljcm9zJiYoaS5hbGxfZW5kX3JlbF9taWNyb3M+MD9lLm5vZGVzW29dLnN0YXRzLmFkZEV4ZWN1dGlvblRpbWUoaS5hbGxfc3RhcnRfbWljcm9zLGkuYWxsX3N0YXJ0X21pY3JvcytpLmFsbF9lbmRfcmVsX21pY3Jvcyk6Y29uc29sZS5sb2coImlnbm9yaW5nIG5lZ2F0aXZlIHJ1bnRpbWUgZm9yICIrbykpfSl9KX12YXIgblA9Y2xhc3N7Y29uc3RydWN0b3IodCxyPXt9KXt0aGlzLm5hbWU9dCx0aGlzLnR5cGU9anQuTUVUQSx0aGlzLmRlcHRoPTEsdGhpcy5pc0dyb3VwTm9kZT0hMCx0aGlzLmNhcmRpbmFsaXR5PTAsdGhpcy5tZXRhZ3JhcGg9dDModCxnMC5NRVRBLHIpLHRoaXMuYnJpZGdlZ3JhcGg9bnVsbCx0aGlzLm9wSGlzdG9ncmFtPXt9LHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy50ZW1wbGF0ZUlkPW51bGwsdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPXVyLlVOU1BFQ0lGSUVELHRoaXMuYXNzb2NpYXRlZEZ1bmN0aW9uPSIifWdldEZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5tZXRhZ3JhcGgubm9kZSh0aGlzLm1ldGFncmFwaC5ub2RlcygpWzBdKX1nZXRSb290T3AoKXtsZXQgdD10aGlzLm5hbWUuc3BsaXQoIi8iKSxyPXRoaXMubmFtZSsiLygiK3RbdC5sZW5ndGgtMV0rIikiO3JldHVybiB0aGlzLm1ldGFncmFwaC5ub2RlKHIpfWxlYXZlcygpe2xldCB0PVtdLHI9W3RoaXNdLG47Zm9yKDtyLmxlbmd0aDspe2xldCBpPXIuc2hpZnQoKTtpIT1udWxsJiZpLmlzR3JvdXBOb2RlPyhuPWkubWV0YWdyYXBoLHBuLmVhY2gobi5ub2RlcygpLG89PnIucHVzaChuLm5vZGUobykpKSk6dC5wdXNoKGk9PW51bGw/dm9pZCAwOmkubmFtZSl9cmV0dXJuIHR9fTtmdW5jdGlvbiBCbHQoZSx0KXtyZXR1cm4gbmV3IFVmKGUsdCl9dmFyIFVmPWNsYXNze2NvbnN0cnVjdG9yKHQscil7dGhpcy52PXQsdGhpcy53PXIsdGhpcy5iYXNlRWRnZUxpc3Q9W10sdGhpcy5pbmJvdW5kPW51bGwsdGhpcy5udW1SZWd1bGFyRWRnZXM9MCx0aGlzLm51bUNvbnRyb2xFZGdlcz0wLHRoaXMubnVtUmVmRWRnZXM9MCx0aGlzLnRvdGFsU2l6ZT0wfWFkZEJhc2VFZGdlKHQscil7dGhpcy5iYXNlRWRnZUxpc3QucHVzaCh0KSx0LmlzQ29udHJvbERlcGVuZGVuY3k/dGhpcy5udW1Db250cm9sRWRnZXMrPTE6dGhpcy5udW1SZWd1bGFyRWRnZXMrPTEsdC5pc1JlZmVyZW5jZUVkZ2UmJih0aGlzLm51bVJlZkVkZ2VzKz0xKSx0aGlzLnRvdGFsU2l6ZSs9VWYuY29tcHV0ZVNpemVPZkVkZ2UodCxyKSxyLm1heE1ldGFFZGdlU2l6ZT1NYXRoLm1heChyLm1heE1ldGFFZGdlU2l6ZSx0aGlzLnRvdGFsU2l6ZSl9c3RhdGljIGNvbXB1dGVTaXplT2ZFZGdlKHQscil7bGV0IG49ci5ub2RlKHQudik7aWYoIW4ub3V0cHV0U2hhcGVzKXJldHVybiAxO3IuaGFzU2hhcGVJbmZvPSEwO2xldCBpPU9iamVjdC5rZXlzKG4ub3V0cHV0U2hhcGVzKS5tYXAobz0+bi5vdXRwdXRTaGFwZXNbb10pLm1hcChvPT5vPT1udWxsPzE6by5yZWR1Y2UoKGEscyk9PihzPT09LTEmJihzPTEpLGEqcyksMSkpO3JldHVybiBwbi5zdW0oaSl9fTtmdW5jdGlvbiBKUyhlLHQscixuLGksbyl7cmV0dXJuIG5ldyBGbHQoZSx0LHIsbixpLG8pfWZ1bmN0aW9uIFFTKGUsdCxyLG4saSl7bGV0IG89dHlwZW9mIG4hPSJ1bmRlZmluZWQiJiZ0eXBlb2YgaSE9InVuZGVmaW5lZCI/IlsiK24rIi0iK2krIl0iOiIjIixhPWUrbyt0O3JldHVybihyP3IrIi8iOiIiKSthfXZhciBGbHQ9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4saSxvLGEpe3RoaXMubmFtZT1vfHxRUyh0LHIsbiksdGhpcy50eXBlPWp0LlNFUklFUyx0aGlzLmhhc0xvb3A9ITEsdGhpcy5wcmVmaXg9dCx0aGlzLnN1ZmZpeD1yLHRoaXMuY2x1c3RlcklkPWksdGhpcy5pZHM9W10sdGhpcy5wYXJlbnQ9bix0aGlzLmlzR3JvdXBOb2RlPSEwLHRoaXMuY2FyZGluYWxpdHk9MCx0aGlzLm1ldGFncmFwaD10MyhvLGcwLlNFUklFUyxhKSx0aGlzLmJyaWRnZWdyYXBoPW51bGwsdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5kZXZpY2VIaXN0b2dyYW09e30sdGhpcy54bGFDbHVzdGVySGlzdG9ncmFtPXt9LHRoaXMuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbT17Y29tcGF0aWJsZTowLGluY29tcGF0aWJsZTowfSx0aGlzLmhhc05vbkNvbnRyb2xFZGdlcz0hMSx0aGlzLmluY2x1ZGU9dXIuVU5TUEVDSUZJRUR9fTtmdW5jdGlvbiAkbHIoZSl7bGV0IHQ9bnVsbDtpZighZSlyZXR1cm4gbnVsbDtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0e2tleTpuLHZhbHVlOml9PWVbcl07aWYobj09PWpscil7aWYoIWkubGlzdHx8IWkubGlzdC5zaGFwZSlyZXR1cm4gbnVsbDtsZXQgbz1pLmxpc3Quc2hhcGUubWFwKGE9PmEudW5rbm93bl9yYW5rP251bGw6YS5kaW09PW51bGx8fGEuZGltLmxlbmd0aD09PTEmJmEuZGltWzBdLnNpemU9PW51bGw/W106YS5kaW0ubWFwKHM9PnMuc2l6ZSkpO3JldHVybiBlLnNwbGljZShyLDEpLG99fXJldHVybiBudWxsfWZ1bmN0aW9uIEtscihlKXtpZighZSlyZXR1cm4gbnVsbDtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZihlW3RdLmtleT09PVhscilyZXR1cm4gZVt0XS52YWx1ZS5zfHxudWxsO3JldHVybiBudWxsfXZhciBabHI9L14oW146XSspOigoXHcrOnwpXGQrKSQvO2Z1bmN0aW9uIEpscihlKXtsZXQgdD1bXSxyPW51bGw7Zm9yKGxldCBuIG9mIGV8fFtdKXtsZXQgaT1uLnN0YXJ0c1dpdGgoIl4iKTtpJiYobj1uLnN1YnN0cmluZygxKSk7bGV0IG89bixhPSIwIixzPW4uaW5jbHVkZXMoIjoiKSYmbi5tYXRjaChabHIpO3MmJihvPXNbMV0sYT1zWzJdKSxyIT09byYmKHI9byx0LnB1c2goe25hbWU6byxvdXRwdXRUZW5zb3JLZXk6YSxpc0NvbnRyb2xEZXBlbmRlbmN5Oml9KSl9cmV0dXJuIHR9ZnVuY3Rpb24gemx0KGUsdCxyLG4saSxvKXtpZih0PT09ci5uYW1lKXJldHVybjtsZXQgYT1pLnJlZkVkZ2VzW3Iub3ArIiAiK29dPT09ITA7ZS5lZGdlcy5wdXNoKHt2OnQsdzpyLm5hbWUsb3V0cHV0VGVuc29yS2V5Om4ub3V0cHV0VGVuc29yS2V5LGlzQ29udHJvbERlcGVuZGVuY3k6bi5pc0NvbnRyb2xEZXBlbmRlbmN5LGlzUmVmZXJlbmNlRWRnZTphfSl9dmFyIEpzZT17ZW5hYmxlRW1iZWRkaW5nOiEwLGluRW1iZWRkaW5nVHlwZXM6WyJDb25zdCJdLG91dEVtYmVkZGluZ1R5cGVzOlsiXlthLXpBLVpdK1N1bW1hcnkkIl0scmVmRWRnZXM6eyJBc3NpZ24gMCI6ITAsIkFzc2lnbkFkZCAwIjohMCwiQXNzaWduU3ViIDAiOiEwLCJhc3NpZ24gMCI6ITAsImFzc2lnbl9hZGQgMCI6ITAsImFzc2lnbl9zdWIgMCI6ITAsImNvdW50X3VwX3RvIDAiOiEwLCJTY2F0dGVyQWRkIDAiOiEwLCJTY2F0dGVyU3ViIDAiOiEwLCJTY2F0dGVyVXBkYXRlIDAiOiEwLCJzY2F0dGVyX2FkZCAwIjohMCwic2NhdHRlcl9zdWIgMCI6ITAsInNjYXR0ZXJfdXBkYXRlIDAiOiEwfX07ZnVuY3Rpb24gUXNlKGUsdCxyKXtsZXQgbj17fSxpPXt9LG89e30sYT1Zc2UodC5pbkVtYmVkZGluZ1R5cGVzKSxzPVlzZSh0Lm91dEVtYmVkZGluZ1R5cGVzKSxsPVtdLGM9ZS5ub2RlLHU9bmV3IEFycmF5KGMubGVuZ3RoKTtyZXR1cm4gZTEoIk5vcm1hbGl6aW5nIG5hbWVzIiwzMCwoKT0+e2xldCBoPW5ldyBBcnJheShjLmxlbmd0aCksZj0wLHA9Zz0+e2xldCBfPW5ldyBfMChnKTtyZXR1cm4gYShfKT8obC5wdXNoKF8ubmFtZSksbltfLm5hbWVdPV8sXyk6cyhfKT8obC5wdXNoKF8ubmFtZSksaVtfLm5hbWVdPV8scG4uZWFjaChfLmlucHV0cyx5PT57bGV0IHg9eS5uYW1lO29beF09b1t4XXx8W10sb1t4XS5wdXNoKF8pfSksXyk6KGhbZl09Xyx1W2ZdPV8ubmFtZSxmKyssXyl9O3BuLmVhY2goYyxwKTtsZXQgZD1nPT57bGV0IF89d2ErZy5zaWduYXR1cmUubmFtZTtpZihwKHtuYW1lOl8saW5wdXQ6W10sZGV2aWNlOiIiLG9wOiIiLGF0dHI6W119KSxnLnNpZ25hdHVyZS5pbnB1dF9hcmcpe2xldCBiPTAsUz1DPT57bGV0IFA9cCh7bmFtZTpfK0NsK0MubmFtZSxpbnB1dDpbXSxkZXZpY2U6IiIsb3A6ImlucHV0X2FyZyIsYXR0cjpbe2tleToiVCIsdmFsdWU6e3R5cGU6Qy50eXBlfX1dfSk7UC5mdW5jdGlvbklucHV0SW5kZXg9YixiKyt9O2cuc2lnbmF0dXJlLmlucHV0X2FyZy5uYW1lP1MoZy5zaWduYXR1cmUuaW5wdXRfYXJnKTpwbi5lYWNoKGcuc2lnbmF0dXJlLmlucHV0X2FyZyxTKX1sZXQgeT0wLHg9e307aWYoZy5zaWduYXR1cmUub3V0cHV0X2FyZyl7bGV0IGI9Uz0+e3hbXytDbCtTLm5hbWVdPXkseSsrfTtnLnNpZ25hdHVyZS5vdXRwdXRfYXJnLm5hbWU/YihnLnNpZ25hdHVyZS5vdXRwdXRfYXJnKTpwbi5lYWNoKGcuc2lnbmF0dXJlLm91dHB1dF9hcmcsYil9cG4uZWFjaChnLm5vZGVfZGVmLGI9PntiLm5hbWU9XysiLyIrYi5uYW1lLHR5cGVvZiBiLmlucHV0PT0ic3RyaW5nIiYmKGIuaW5wdXQ9W2IuaW5wdXRdKTtsZXQgUz1wKGIpO3BuLmlzTnVtYmVyKHhbYi5uYW1lXSkmJihTLmZ1bmN0aW9uT3V0cHV0SW5kZXg9eFtiLm5hbWVdKSxwbi5lYWNoKFMuaW5wdXRzLEM9PntDLm5hbWU9XytDbCtDLm5hbWV9KX0pfTtyZXR1cm4gZS5saWJyYXJ5JiZlLmxpYnJhcnkuZnVuY3Rpb24mJnBuLmVhY2goZS5saWJyYXJ5LmZ1bmN0aW9uLGQpLGguc3BsaWNlKGYpLHUuc3BsaWNlKGYpLGh9LHIsanIuTk9STUFMSVpJTkdfTkFNRVMpLnRoZW4oaD0+ZTEoIkJ1aWxkaW5nIHRoZSBkYXRhIHN0cnVjdHVyZSIsNzAsKCk9PntsZXQgZj1RbHIodSxsKSxwPW5ldyBqdTtyZXR1cm4gcG4uZWFjaChoLGQ9PntsZXQgZz1mW2QubmFtZV18fGQubmFtZTtwLm5vZGVzW2ddPWQsZC5uYW1lIGluIG8mJihkLm91dEVtYmVkZGluZ3M9b1tkLm5hbWVdLHBuLmVhY2goZC5vdXRFbWJlZGRpbmdzLF89PntfLm5hbWU9ZltfLm5hbWVdfHxfLm5hbWV9KSksZC5uYW1lPWd9KSxwbi5lYWNoKGgsZD0+e3BuLmVhY2goZC5pbnB1dHMsKGcsXyk9PntsZXQgeT1nLm5hbWU7aWYoeSBpbiBuKXtsZXQgeD1uW3ldO2QuaW5FbWJlZGRpbmdzLnB1c2goeCk7Zm9yKGxldCBiIG9mIHguaW5wdXRzKXpsdChwLGZbYi5uYW1lXXx8Yi5uYW1lLGQsYix0LF8pfWVsc2UgaWYoeSBpbiBpKXtsZXQgeD1pW3ldO2ZvcihsZXQgYiBvZiB4LmlucHV0cyl6bHQocCxmW2IubmFtZV18fGIubmFtZSxkLGcsdCxfKX1lbHNlIHpsdChwLGZbeV18fHksZCxnLHQsXyl9KX0pLHBuLmVhY2gobiwoZCxnKT0+e2QubmFtZT1mW2QubmFtZV18fGQubmFtZX0pLHB9LHIsanIuQlVJTERfU0xJTV9HUkFQSCkpfWZ1bmN0aW9uIHQzKGUsdCxyPXt9KXtsZXQgbj1uZXcgWHNlLmdyYXBobGliLkdyYXBoKHIpO3JldHVybiBuLnNldEdyYXBoKHtuYW1lOmUscmFua2RpcjpyLnJhbmtkaXJ8fCJCVCIsdHlwZTp0fSksbn1mdW5jdGlvbiBZc2UoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtsZXQgbj1uZXcgUmVnRXhwKGVbcl0pO2lmKHR5cGVvZiB0Lm9wPT0ic3RyaW5nIiYmdC5vcC5tYXRjaChuKSlyZXR1cm4hMH1yZXR1cm4hMX19ZnVuY3Rpb24gaVAoZSl7bGV0IHQ9ZS5zcGxpdChDbCk7cmV0dXJuIGUrQ2wrIigiK3RbdC5sZW5ndGgtMV0rIikifWZ1bmN0aW9uIFFscihlLHQpe2xldCByPXt9LG49e307ZS5zb3J0KCk7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aC0xOysraSl7bGV0IG89ZVtpXTtwbi5lYWNoKGFQKG8pLnNsaWNlKDAsLTEpLGE9PntuW2FdPSEwfSk7Zm9yKGxldCBhPWkrMTthPGUubGVuZ3RoOysrYSl7bGV0IHM9ZVthXTtpZihwbi5zdGFydHNXaXRoKHMsbykpe2lmKHMubGVuZ3RoPm8ubGVuZ3RoJiZzLmNoYXJBdChvLmxlbmd0aCk9PT1DbCl7cltvXT1pUChvKTticmVha319ZWxzZSBicmVha319cmV0dXJuIHBuLmVhY2godCxpPT57aSBpbiBuJiYocltpXT1pUChpKSl9KSxyfWZ1bmN0aW9uIGpzZShlKXtsZXQgdD1lLm5vZGVzKCkubWFwKGZ1bmN0aW9uKHIpe3ZhciBuO3JldHVybihuPWUubmVpZ2hib3JzKHIpKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4ubGVuZ3RofSk7cmV0dXJuIHQuc29ydCgpLHR9ZnVuY3Rpb24gdGxlKGUsdCl7bGV0IHI9anNlKGUpLG49anNlKHQpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKWlmKHJbaV0hPT1uW2ldKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGFQKGUsdCl7bGV0IHI9W10sbj1lLmluZGV4T2YoQ2wpO2Zvcig7bj49MDspci5wdXNoKGUuc3Vic3RyaW5nKDAsbikpLG49ZS5pbmRleE9mKENsLG4rMSk7aWYodCl7bGV0IGk9dFtlXTtpJiZyLnB1c2goaSl9cmV0dXJuIHIucHVzaChlKSxyfWZ1bmN0aW9uIG1IKGUpe3JldHVybiBlPT09dXIuRVhDTFVERT8iQWRkIHRvIG1haW4gZ3JhcGgiOiJSZW1vdmUgZnJvbSBtYWluIGdyYXBoIn1mdW5jdGlvbiBlbGUoZSl7cmV0dXJuIGU9PT1ucy5HUk9VUD8iVW5ncm91cCB0aGlzIHNlcmllcyBvZiBub2RlcyI6Ikdyb3VwIHRoaXMgc2VyaWVzIG9mIG5vZGVzIn12YXIgSGU9RWUoT2UoKSwxKTt2YXIgcjE9RWUoT2UoKSwxKTtmdW5jdGlvbiBybGUoZSx0KXtsZXQgcj1lY3IoZSksbj1yY3Iocix0KTtyZXR1cm4gT2JqZWN0LmtleXMobikuc29ydChpPT5uW2ldLmxldmVsKS5yZWR1Y2UoKGksbyk9PihpW29dPW5bb10saSkse30pfWZ1bmN0aW9uIHRjcihlKXtsZXQgdD1yMS5tYXAoe2RlcHRoOmUuZGVwdGgsInxWfCI6ZS5tZXRhZ3JhcGgubm9kZXMoKS5sZW5ndGgsInxFfCI6ZS5tZXRhZ3JhcGguZWRnZXMoKS5sZW5ndGh9LGZ1bmN0aW9uKG4saSl7cmV0dXJuIGkrIj0iK259KS5qb2luKCIgIikscj1yMS5tYXAoZS5vcEhpc3RvZ3JhbSxmdW5jdGlvbihuLGkpe3JldHVybiBpKyI9IitufSkuam9pbigiLCIpO3JldHVybiB0KyIgW29wc10gIityfWZ1bmN0aW9uIGVjcihlKXtsZXQgdD1lLmdldE5vZGVNYXAoKSxyPU9iamVjdC5rZXlzKHQpLnJlZHVjZSgobixpKT0+e2xldCBvPXRbaV07aWYoby50eXBlIT09anQuTUVUQSlyZXR1cm4gbjtsZXQgYT1pLnNwbGl0KCIvIikubGVuZ3RoLTEscz10Y3IobyksbD1uW3NdfHx7bm9kZXM6W10sbGV2ZWw6YX07cmV0dXJuIG5bc109bCxsLm5vZGVzLnB1c2gobyksbC5sZXZlbD5hJiYobC5sZXZlbD1hKSxufSx7fSk7cmV0dXJuIE9iamVjdC5rZXlzKHIpLm1hcChuPT5bbixyW25dXSkuZmlsdGVyKChbbixpXSk9PntsZXR7bm9kZXM6b309aTtpZihvLmxlbmd0aD4xKXJldHVybiEwO2xldCBhPW9bMF07cmV0dXJuIGEudHlwZT09PWp0Lk1FVEEmJmEuYXNzb2NpYXRlZEZ1bmN0aW9ufSkuc29ydCgoW24saV0pPT5pLm5vZGVzWzBdLmRlcHRoKX1mdW5jdGlvbiByY3IoZSx0KXtyZXR1cm4gcjEucmVkdWNlKGUsZnVuY3Rpb24obixpKXtsZXQgbz1pWzBdLGE9aVsxXS5ub2RlcyxzPVtdO3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24obCl7Zm9yKGxldCBjPTA7YzxzLmxlbmd0aDtjKyspaWYoIXR8fG5jcihzW2NdLm1ldGFub2RlLm1ldGFncmFwaCxsLm1ldGFncmFwaCkpe2wudGVtcGxhdGVJZD1zW2NdLm1ldGFub2RlLnRlbXBsYXRlSWQsc1tjXS5tZW1iZXJzLnB1c2gobC5uYW1lKTtyZXR1cm59bC50ZW1wbGF0ZUlkPW8rIlsiK3MubGVuZ3RoKyJdIixzLnB1c2goe21ldGFub2RlOmwsbWVtYmVyczpbbC5uYW1lXX0pfSkscy5mb3JFYWNoKGZ1bmN0aW9uKGwpe25bbC5tZXRhbm9kZS50ZW1wbGF0ZUlkXT17bGV2ZWw6aVsxXS5sZXZlbCxub2RlczpsLm1lbWJlcnN9fSksbn0se30pfWZ1bmN0aW9uIGdIKGUsdCxyKXtyZXR1cm4gcjEuc29ydEJ5KGUsW249PnQubm9kZShuKS5vcCxuPT50Lm5vZGUobikudGVtcGxhdGVJZCxuPT57dmFyIGk7cmV0dXJuKGk9dC5uZWlnaGJvcnMobikpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5sZW5ndGh9LG49Pnt2YXIgaTtyZXR1cm4oaT10LnByZWRlY2Vzc29ycyhuKSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmxlbmd0aH0sbj0+e3ZhciBpO3JldHVybihpPXQuc3VjY2Vzc29ycyhuKSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmxlbmd0aH0sbj0+bi5zdWJzdHIoci5sZW5ndGgpXSl9ZnVuY3Rpb24gbmNyKGUsdCl7aWYoIXRsZShlLHQpKXJldHVybiExO2xldCByPWUuZ3JhcGgoKS5uYW1lLG49dC5ncmFwaCgpLm5hbWUsaT17fSxvPXt9LGE9W107ZnVuY3Rpb24gcyh1LGgpe2xldCBmPXUuc3Vic3RyKHIubGVuZ3RoKSxwPWguc3Vic3RyKG4ubGVuZ3RoKTtyZXR1cm4gaVtmXV5vW3BdPyhjb25zb2xlLndhcm4oImRpZmZlcmVudCB2aXNpdCBwYXR0ZXJuIiwiWyIrcisiXSIsZiwiWyIrbisiXSIscCksITApOihpW2ZdfHwoaVtmXT1vW3BdPSEwLGEucHVzaCh7bjE6dSxuMjpofSkpLCExKX1sZXQgbD1lLnNvdXJjZXMoKSxjPXQuc291cmNlcygpO2lmKGwubGVuZ3RoIT09Yy5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCJkaWZmZXJlbnQgc291cmNlIGxlbmd0aCIpLCExO2w9Z0gobCxlLHIpLGM9Z0goYyx0LG4pO2ZvcihsZXQgdT0wO3U8bC5sZW5ndGg7dSsrKWlmKHMobFt1XSxjW3VdKSlyZXR1cm4hMTtmb3IoO2EubGVuZ3RoPjA7KXtsZXQgdT1hLnBvcCgpO2lmKCFpY3IoZS5ub2RlKHU9PW51bGw/dm9pZCAwOnUubjEpLHQubm9kZSh1PT1udWxsP3ZvaWQgMDp1Lm4yKSkpcmV0dXJuITE7bGV0IGY9ZS5zdWNjZXNzb3JzKHU9PW51bGw/dm9pZCAwOnUubjEpLHA9dC5zdWNjZXNzb3JzKHU9PW51bGw/dm9pZCAwOnUubjIpO2lmKChmPT1udWxsP3ZvaWQgMDpmLmxlbmd0aCkhPT0ocD09bnVsbD92b2lkIDA6cC5sZW5ndGgpKXJldHVybiBjb25zb2xlLmxvZygiIyBvZiBzdWNjZXNzb3JzIG1pc21hdGNoIixmLHApLCExO2Y9Z0goZixlLHIpLHA9Z0gocCx0LG4pO2ZvcihsZXQgZD0wO2Q8KGY9PW51bGw/dm9pZCAwOmYubGVuZ3RoKTtkKyspaWYocyhmPT1udWxsP3ZvaWQgMDpmW2RdLHA9PW51bGw/dm9pZCAwOnBbZF0pKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGljcihlLHQpe2lmKGUudHlwZT09PWp0Lk1FVEEpe2xldCByPWUsbj10O3JldHVybiEhci50ZW1wbGF0ZUlkJiYhIW4udGVtcGxhdGVJZCYmci50ZW1wbGF0ZUlkPT09bi50ZW1wbGF0ZUlkfWVsc2V7aWYoZS50eXBlPT09anQuT1AmJnQudHlwZT09PWp0Lk9QKXJldHVybiBlLm9wPT09dC5vcDtpZihlLnR5cGU9PT1qdC5TRVJJRVMmJnQudHlwZT09PWp0LlNFUklFUyl7bGV0IHI9ZSxuPXQsaT1yLm1ldGFncmFwaC5ub2RlQ291bnQoKTtyZXR1cm4gaT09PW4ubWV0YWdyYXBoLm5vZGVDb3VudCgpJiYoaT09PTB8fHIubWV0YWdyYXBoLm5vZGUoci5tZXRhZ3JhcGgubm9kZXMoKVswXSkub3A9PT1uLm1ldGFncmFwaC5ub2RlKG4ubWV0YWdyYXBoLm5vZGVzKClbMF0pLm9wKX19cmV0dXJuITF9dmFyIERkOyhmdW5jdGlvbihlKXtlW2UuVEVNUExBVEVTX1VQREFURUQ9MF09IlRFTVBMQVRFU19VUERBVEVEIn0pKERkfHwoRGQ9e30pKTt2YXIgaXM9Y2xhc3MgZXh0ZW5kcyBoSHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuaGFzU2hhcGVJbmZvPSExLHRoaXMubWF4TWV0YUVkZ2VTaXplPTEsdGhpcy5ncmFwaE9wdGlvbnM9e30sdGhpcy50ZW1wbGF0ZXM9bnVsbCx0aGlzLmdyYXBoT3B0aW9ucy5jb21wb3VuZD0hMCx0aGlzLmdyYXBoT3B0aW9ucy5yYW5rZGlyPXQucmFua0RpcmVjdGlvbix0aGlzLnJvb3Q9b1AoVmMsdGhpcy5ncmFwaE9wdGlvbnMpLHRoaXMubGlicmFyeUZ1bmN0aW9ucz17fSx0aGlzLnNlcmllc0dyb3VwTWFwPW5ldyBNYXAodC5zZXJpZXNNYXApLHRoaXMuZGV2aWNlcz1udWxsLHRoaXMueGxhQ2x1c3RlcnM9bnVsbCx0aGlzLnZlcmlmeVRlbXBsYXRlPXQudmVyaWZ5VGVtcGxhdGUsdGhpcy5pbmRleD17fSx0aGlzLmluZGV4W1ZjXT10aGlzLnJvb3QsdGhpcy5vcmRlcmluZ3M9e319Z2V0U2VyaWVzR3JvdXBUeXBlKHQpe3ZhciByO3JldHVybihyPXRoaXMuc2VyaWVzR3JvdXBNYXAuZ2V0KHQpKSE9PW51bGwmJnIhPT12b2lkIDA/cjpucy5HUk9VUH1zZXRTZXJpZXNHcm91cFR5cGUodCxyKXtyZXR1cm4gdGhpcy5zZXJpZXNHcm91cE1hcC5zZXQodCxyKX1idWlsZFNlcmllc0dyb3VwTWFwVG9nZ2xlZCh0KXtsZXQgcj10aGlzLmdldFNlcmllc0dyb3VwVHlwZSh0KT09PW5zLkdST1VQP25zLlVOR1JPVVA6bnMuR1JPVVA7cmV0dXJuIG5ldyBNYXAoWy4uLnRoaXMuc2VyaWVzR3JvdXBNYXAsW3Qscl1dKX1nZXROb2RlTWFwKCl7cmV0dXJuIHRoaXMuaW5kZXh9bm9kZSh0KXtyZXR1cm4gdGhpcy5pbmRleFt0XX1zZXROb2RlKHQscil7dGhpcy5pbmRleFt0XT1yfWdldEJyaWRnZWdyYXBoKHQpe2xldCByPXRoaXMuaW5kZXhbdF07aWYoIXIpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgaW4gaGllcmFyY2h5OiAiK3QpO2lmKCEoIm1ldGFncmFwaCJpbiByKSlyZXR1cm4gbnVsbDtsZXQgbj1yO2lmKG4uYnJpZGdlZ3JhcGgpcmV0dXJuIG4uYnJpZGdlZ3JhcGg7bGV0IGk9bi5icmlkZ2VncmFwaD10MygiQlJJREdFR1JBUEgiLGcwLkJSSURHRSx0aGlzLmdyYXBoT3B0aW9ucyk7aWYoIXIucGFyZW50Tm9kZXx8ISgibWV0YWdyYXBoImluIHIucGFyZW50Tm9kZSkpcmV0dXJuIGk7bGV0IG89ci5wYXJlbnROb2RlLGE9by5tZXRhZ3JhcGgscz10aGlzLmdldEJyaWRnZWdyYXBoKG8ubmFtZSk7cmV0dXJuIEhlLmVhY2goW2Esc10sbD0+e2wuZWRnZXMoKS5maWx0ZXIoYz0+Yy52PT09dHx8Yy53PT09dCkuZm9yRWFjaChjPT57bGV0IHU9Yy53PT09dCxoPWwuZWRnZShjKTtIZS5lYWNoKGguYmFzZUVkZ2VMaXN0LGY9PntsZXRbcCxkXT11P1tmLncsYy52XTpbZi52LGMud10sZz10aGlzLmdldENoaWxkTmFtZSh0LHApLF89e3Y6dT9kOmcsdzp1P2c6ZH0seT1pLmVkZ2UoXyk7eXx8KHk9Qmx0KF8udixfLncpLHkuaW5ib3VuZD11LGkuc2V0RWRnZShfLnYsXy53LHkpKSx5LmFkZEJhc2VFZGdlKGYsdGhpcyl9KX0pfSksaX1nZXRDaGlsZE5hbWUodCxyKXtsZXQgbj10aGlzLmluZGV4W3JdO2Zvcig7bjspe2lmKG4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLm5hbWU9PT10KXJldHVybiBuLm5hbWU7bj1uLnBhcmVudE5vZGV9dGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIGltbWVkaWF0ZSBjaGlsZCBmb3IgZGVzY2VuZGFudDogIityKX1nZXRQcmVkZWNlc3NvcnModCl7bGV0IHI9dGhpcy5pbmRleFt0XTtpZighcil0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIrdCk7bGV0IG49dGhpcy5nZXRPbmVXYXlFZGdlcyhyLCEwKTtyZXR1cm4gci5pc0dyb3VwTm9kZXx8SGUuZWFjaChyLmluRW1iZWRkaW5ncyxpPT57SGUuZWFjaChyLmlucHV0cyxvPT57aWYoby5uYW1lPT09aS5uYW1lKXtsZXQgYT1uZXcgVWYoaS5uYW1lLHQpO2EuYWRkQmFzZUVkZ2Uoe2lzQ29udHJvbERlcGVuZGVuY3k6by5pc0NvbnRyb2xEZXBlbmRlbmN5LG91dHB1dFRlbnNvcktleTpvLm91dHB1dFRlbnNvcktleSxpc1JlZmVyZW5jZUVkZ2U6ITEsdjppLm5hbWUsdzp0fSx0aGlzKSxuLnJlZ3VsYXIucHVzaChhKX19KX0pLG59Z2V0U3VjY2Vzc29ycyh0KXtsZXQgcj10aGlzLmluZGV4W3RdO2lmKCFyKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBub2RlIHdpdGggbmFtZTogIit0KTtsZXQgbj10aGlzLmdldE9uZVdheUVkZ2VzKHIsITEpO3JldHVybiByLmlzR3JvdXBOb2RlfHxIZS5lYWNoKHIub3V0RW1iZWRkaW5ncyxpPT57SGUuZWFjaChpLmlucHV0cyxvPT57aWYoby5uYW1lPT09dCl7bGV0IGE9bmV3IFVmKHQsaS5uYW1lKTthLmFkZEJhc2VFZGdlKHtpc0NvbnRyb2xEZXBlbmRlbmN5Om8uaXNDb250cm9sRGVwZW5kZW5jeSxvdXRwdXRUZW5zb3JLZXk6by5vdXRwdXRUZW5zb3JLZXksaXNSZWZlcmVuY2VFZGdlOiExLHY6dCx3OmkubmFtZX0sdGhpcyksbi5yZWd1bGFyLnB1c2goYSl9fSl9KSxufWdldE9uZVdheUVkZ2VzKHQscil7bGV0IG49e2NvbnRyb2w6W10scmVndWxhcjpbXX07aWYoIXQucGFyZW50Tm9kZXx8IXQucGFyZW50Tm9kZS5pc0dyb3VwTm9kZSlyZXR1cm4gbjtsZXQgaT10LnBhcmVudE5vZGUsbz1pLm1ldGFncmFwaCxhPXRoaXMuZ2V0QnJpZGdlZ3JhcGgoaS5uYW1lKTtyZXR1cm4gbmxlKG8sdCxyLG4pLG5sZShhLHQscixuKSxufWdldFRvcG9sb2dpY2FsT3JkZXJpbmcodCl7bGV0IHI9dGhpcy5pbmRleFt0XTtpZighcil0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIrdCk7aWYoIXIuaXNHcm91cE5vZGUpcmV0dXJuIG51bGw7aWYodCBpbiB0aGlzLm9yZGVyaW5ncylyZXR1cm4gdGhpcy5vcmRlcmluZ3NbdF07bGV0IG49e30saT17fSxvPXIubWV0YWdyYXBoO0hlLmVhY2goby5lZGdlcygpLGM9Pnshby5lZGdlKGMpLm51bVJlZ3VsYXJFZGdlc3x8KGMudiBpbiBufHwobltjLnZdPVtdKSxuW2Mudl0ucHVzaChjLncpLGlbYy53XT0hMCl9KTtsZXQgYT1IZS5kaWZmZXJlbmNlKEhlLmtleXMobiksSGUua2V5cyhpKSkscz10aGlzLm9yZGVyaW5nc1t0XT17fSxsPTA7Zm9yKDthLmxlbmd0aDspe2xldCBjPWEuc2hpZnQoKTtzW2NdPWwrKyxIZS5lYWNoKG5bY10sdT0+YS5wdXNoKHUpKSxkZWxldGUgbltjXX1yZXR1cm4gc31nZXRUZW1wbGF0ZUluZGV4KCl7aWYoIXRoaXMudGVtcGxhdGVzKXJldHVybiBudWxsO2xldCB0PVlMKHRoaXMudGVtcGxhdGVzKTtpZighdC5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IHI9bXUoKS5kb21haW4odCkucmFuZ2UoSXIoMCx0Lmxlbmd0aCkpO3JldHVybiBuPT5yKG4pfXVwZGF0ZVRlbXBsYXRlcygpe1JkKCJGaW5kaW5nIHNpbWlsYXIgc3ViZ3JhcGhzIiwoKT0+e3RoaXMudGVtcGxhdGVzPXJsZSh0aGlzLHRoaXMudmVyaWZ5VGVtcGxhdGUpLHRoaXMuZGlzcGF0Y2hFdmVudChEZC5URU1QTEFURVNfVVBEQVRFRCl9LGpyLkhJRVJBUkNIWV9GSU5EX1NJTUlMQVJfU1VCR1JBUEhTKX19O2Z1bmN0aW9uIG5sZShlLHQscixuKXtsZXQgaT1yP2UuaW5FZGdlcyh0Lm5hbWUpOmUub3V0RWRnZXModC5uYW1lKTtIZS5lYWNoKGksbz0+e2xldCBhPWUuZWRnZShvKTsoYS5udW1SZWd1bGFyRWRnZXM/bi5yZWd1bGFyOm4uY29udHJvbCkucHVzaChhKX0pfXZhciBlMz17dmVyaWZ5VGVtcGxhdGU6ITAsc2VyaWVzTm9kZU1pblNpemU6NSxzZXJpZXNNYXA6bmV3IE1hcCxyYW5rRGlyZWN0aW9uOiJCVCIsdXNlR2VuZXJhbGl6ZWRTZXJpZXNQYXR0ZXJuczohMX07ZnVuY3Rpb24geUgoZSx0LHIpe2xldCBuPW5ldyBpcyh0KSxpPXt9O3JldHVybiBlMSgiQWRkaW5nIG5vZGVzIiwzMCwoKT0+e2xldCBvPXt9LGE9e307SGUuZWFjaChlLm5vZGVzLChzLGwpPT57cy5kZXZpY2UmJihvW3MuZGV2aWNlXT0hMCkscy54bGFDbHVzdGVyJiYoYVtzLnhsYUNsdXN0ZXJdPSEwKX0pLG4uZGV2aWNlcz1IZS5rZXlzKG8pLG4ueGxhQ2x1c3RlcnM9SGUua2V5cyhhKSxhY3IobixlKX0scixqci5ISUVSQVJDSFlfQUREX05PREVTKS50aGVuKCgpPT5lMSgiRGV0ZWN0IHNlcmllcyIsMzAsKCk9Pnt0LnNlcmllc05vZGVNaW5TaXplPjAmJmFsZShuLnJvb3QsbixpLHQuc2VyaWVzTm9kZU1pblNpemUsdC5zZXJpZXNNYXAsdC51c2VHZW5lcmFsaXplZFNlcmllc1BhdHRlcm5zKX0scixqci5ISUVSQVJDSFlfREVURUNUX1NFUklFUykpLnRoZW4oKCk9PmUxKCJBZGRpbmcgZWRnZXMiLDQwLCgpPT57c2NyKG4sZSxpKX0scixqci5ISUVSQVJDSFlfQUREX0VER0VTKSkudGhlbigoKT0+bil9ZnVuY3Rpb24gaWxlKGUsdCl7bGV0IHI9e30sbj17fTtIZS5lYWNoKGUucm9vdC5sZWF2ZXMoKSxpPT57bGV0IG89ZS5ub2RlKGkpO28uZGV2aWNlIT1udWxsJiYocltvLmRldmljZV09ITApLG8ueGxhQ2x1c3RlciE9bnVsbCYmKG5bby54bGFDbHVzdGVyXT0hMCl9KSxlLmRldmljZXM9SGUua2V5cyhyKSxlLnhsYUNsdXN0ZXJzPUhlLmtleXMobiksSGUuZWFjaChlLmdldE5vZGVNYXAoKSwoaSxvKT0+e2kuaXNHcm91cE5vZGUmJihpLnN0YXRzPW5ldyAkUyhudWxsKSxpLmRldmljZUhpc3RvZ3JhbT17fSl9KSxIZS5lYWNoKGUucm9vdC5sZWF2ZXMoKSxpPT57bGV0IG89ZS5ub2RlKGkpLGE9bztmb3IoO2EucGFyZW50Tm9kZSE9bnVsbDspe2lmKG8uZGV2aWNlIT1udWxsKXtsZXQgcz1hLnBhcmVudE5vZGUuZGV2aWNlSGlzdG9ncmFtO3Nbby5kZXZpY2VdPShzW28uZGV2aWNlXXx8MCkrMX1pZihvLnhsYUNsdXN0ZXIhPW51bGwpe2xldCBzPWEucGFyZW50Tm9kZS54bGFDbHVzdGVySGlzdG9ncmFtO3Nbby54bGFDbHVzdGVyXT0oc1tvLnhsYUNsdXN0ZXJdfHwwKSsxfW8uc3RhdHMhPW51bGwmJmEucGFyZW50Tm9kZS5zdGF0cy5jb21iaW5lKG8uc3RhdHMpLGE9YS5wYXJlbnROb2RlfX0pfWZ1bmN0aW9uIG9sZShlKXtsZXQgdD1bXSxyPXt9O3JldHVybiBIZS5lYWNoKGUucm9vdC5sZWF2ZXMoKSxuPT57bGV0IGk9ZS5ub2RlKG4pO2lmKGkudHlwZT09anQuT1Ape2xldCBvPWk7aWYoIW8uY29tcGF0aWJsZSlpZihvLm93bmluZ1Nlcmllcyl7aWYoZS5nZXRTZXJpZXNHcm91cFR5cGUoby5vd25pbmdTZXJpZXMpPT09bnMuVU5HUk9VUCl0LnB1c2gobyk7ZWxzZSBpZighcltvLm93bmluZ1Nlcmllc10pe2xldCBhPWUubm9kZShvLm93bmluZ1Nlcmllcyk7YSYmKHJbby5vd25pbmdTZXJpZXNdPWEsdC5wdXNoKGEpKX19ZWxzZSB0LnB1c2gobyk7SGUuZWFjaChvLmluRW1iZWRkaW5ncyxhPT57YS5jb21wYXRpYmxlfHx0LnB1c2goYSl9KSxIZS5lYWNoKG8ub3V0RW1iZWRkaW5ncyxhPT57YS5jb21wYXRpYmxlfHx0LnB1c2goYSl9KX19KSx0fWZ1bmN0aW9uIGFjcihlLHQpe2xldCByPXt9O0hlLmVhY2godC5ub2RlcywobixpKT0+e2xldCBvPWFQKG4ubmFtZSksYT1lLnJvb3Q7YS5kZXB0aD1NYXRoLm1heChvLmxlbmd0aCxhLmRlcHRoKSxyW24ub3BdfHwocltuLm9wXT1bXSkscltuLm9wXS5wdXNoKG4pO2ZvcihsZXQgcz0wO3M8by5sZW5ndGgmJihhLmRlcHRoPU1hdGgubWF4KGEuZGVwdGgsby5sZW5ndGgtcyksYS5jYXJkaW5hbGl0eSs9bi5jYXJkaW5hbGl0eSxhLm9wSGlzdG9ncmFtW24ub3BdPShhLm9wSGlzdG9ncmFtW24ub3BdfHwwKSsxLG4uZGV2aWNlIT1udWxsJiYoYS5kZXZpY2VIaXN0b2dyYW1bbi5kZXZpY2VdPShhLmRldmljZUhpc3RvZ3JhbVtuLmRldmljZV18fDApKzEpLG4ueGxhQ2x1c3RlciE9bnVsbCYmKGEueGxhQ2x1c3Rlckhpc3RvZ3JhbVtuLnhsYUNsdXN0ZXJdPShhLnhsYUNsdXN0ZXJIaXN0b2dyYW1bbi54bGFDbHVzdGVyXXx8MCkrMSksbi5jb21wYXRpYmxlP2EuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShhLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTphLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShhLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxLEhlLmVhY2gobi5pbkVtYmVkZGluZ3MsdT0+e3UuY29tcGF0aWJsZT9hLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0oYS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6YS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0oYS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pLEhlLmVhY2gobi5vdXRFbWJlZGRpbmdzLHU9Pnt1LmNvbXBhdGlibGU/YS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KGEuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOmEuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KGEuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSxzIT09by5sZW5ndGgtMSk7cysrKXtsZXQgbD1vW3NdLGM9ZS5ub2RlKGwpO2lmKCFjJiYoYz1vUChsLGUuZ3JhcGhPcHRpb25zKSxjLnBhcmVudE5vZGU9YSxlLnNldE5vZGUobCxjKSxhLm1ldGFncmFwaC5zZXROb2RlKGwsYyksbC5pbmRleE9mKHdhKT09PTAmJmEubmFtZT09PVZjKSl7bGV0IHU9bC5zdWJzdHJpbmcod2EubGVuZ3RoKTtyW3VdfHwoclt1XT1bXSksZS5saWJyYXJ5RnVuY3Rpb25zW3VdPXtub2RlOmMsdXNhZ2VzOnJbdV19LGMuYXNzb2NpYXRlZEZ1bmN0aW9uPXV9YT1jfWUuc2V0Tm9kZShuLm5hbWUsbiksbi5wYXJlbnROb2RlPWEsYS5tZXRhZ3JhcGguc2V0Tm9kZShuLm5hbWUsbiksSGUuZWFjaChuLmluRW1iZWRkaW5ncyxmdW5jdGlvbihzKXtlLnNldE5vZGUocy5uYW1lLHMpLHMucGFyZW50Tm9kZT1ufSksSGUuZWFjaChuLm91dEVtYmVkZGluZ3MsZnVuY3Rpb24ocyl7ZS5zZXROb2RlKHMubmFtZSxzKSxzLnBhcmVudE5vZGU9bn0pfSl9ZnVuY3Rpb24gc2NyKGUsdCxyKXtsZXQgbj1lLmdldE5vZGVNYXAoKSxpPVtdLG89W10sYT0ocyxsKT0+e2xldCBjPTA7Zm9yKDtzOylsW2MrK109cy5uYW1lLHM9cy5wYXJlbnROb2RlO3JldHVybiBjLTF9O0hlLmVhY2godC5lZGdlcyxzPT57bGV0IGw9YSh0Lm5vZGVzW3Mudl0saSksYz1hKHQubm9kZXNbcy53XSxvKTtpZihsPT09LTF8fGM9PT0tMSlyZXR1cm47Zm9yKDtpW2xdPT09b1tjXTspaWYobC0tLGMtLSxsPDB8fGM8MCl0aHJvdyBFcnJvcigiTm8gZGlmZmVyZW5jZSBmb3VuZCBiZXR3ZWVuIGFuY2VzdG9yIHBhdGhzLiIpO2xldCB1PW5baVtsKzFdXSxoPWlbbF0sZj1vW2NdLHA9dS5tZXRhZ3JhcGguZWRnZShoLGYpO3B8fChwPUJsdChoLGYpLHUubWV0YWdyYXBoLnNldEVkZ2UoaCxmLHApKSwhdS5oYXNOb25Db250cm9sRWRnZXMmJiFzLmlzQ29udHJvbERlcGVuZGVuY3kmJih1Lmhhc05vbkNvbnRyb2xFZGdlcz0hMCkscC5hZGRCYXNlRWRnZShzLGUpfSl9ZnVuY3Rpb24gYWxlKGUsdCxyLG4saSxvKXtsZXQgYT1lLm1ldGFncmFwaDtIZS5lYWNoKGEubm9kZXMoKSx1PT57bGV0IGg9YS5ub2RlKHUpO2gudHlwZT09PWp0Lk1FVEEmJmFsZShoLHQscixuLGksbyl9KTtsZXQgcz1sY3IoYSksYz0obz91Y3I6Y2NyKShzLGEsdC5ncmFwaE9wdGlvbnMpO0hlLmVhY2goYyxmdW5jdGlvbih1LGgpe2xldCBmPXUubWV0YWdyYXBoLm5vZGVzKCk7SGUuZWFjaChmLHA9PntsZXQgZD1hLm5vZGUocCk7ZC5vd25pbmdTZXJpZXN8fChkLm93bmluZ1Nlcmllcz1oKX0pLGYubGVuZ3RoPG4mJnQuZ2V0U2VyaWVzR3JvdXBUeXBlKHUubmFtZSk9PT1ucy5HUk9VUCYmdC5zZXRTZXJpZXNHcm91cFR5cGUodS5uYW1lLG5zLlVOR1JPVVApLHQuZ2V0U2VyaWVzR3JvdXBUeXBlKHUubmFtZSkhPT1ucy5VTkdST1VQJiYodC5zZXROb2RlKGgsdSksYS5zZXROb2RlKGgsdSksSGUuZWFjaChmLHA9PntsZXQgZD1hLm5vZGUocCk7dS5tZXRhZ3JhcGguc2V0Tm9kZShwLGQpLHUucGFyZW50Tm9kZT1kLnBhcmVudE5vZGUsdS5jYXJkaW5hbGl0eSsrLGQuZGV2aWNlIT1udWxsJiYodS5kZXZpY2VIaXN0b2dyYW1bZC5kZXZpY2VdPSh1LmRldmljZUhpc3RvZ3JhbVtkLmRldmljZV18fDApKzEpLGQueGxhQ2x1c3RlciE9bnVsbCYmKHUueGxhQ2x1c3Rlckhpc3RvZ3JhbVtkLnhsYUNsdXN0ZXJdPSh1LnhsYUNsdXN0ZXJIaXN0b2dyYW1bZC54bGFDbHVzdGVyXXx8MCkrMSksZC5jb21wYXRpYmxlP3UuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPSh1LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTp1LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPSh1LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxLEhlLmVhY2goZC5pbkVtYmVkZGluZ3MsZz0+e2cuY29tcGF0aWJsZT91LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pLEhlLmVhY2goZC5vdXRFbWJlZGRpbmdzLGc9PntnLmNvbXBhdGlibGU/dS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KHUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOnUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KHUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSxkLnBhcmVudE5vZGU9dSxyW3BdPWgsYS5yZW1vdmVOb2RlKHApfSkpfSl9ZnVuY3Rpb24gbGNyKGUpe2xldCB0PXt9O3JldHVybiBIZS5yZWR1Y2UoZS5ub2RlcygpLChyLG4pPT57bGV0IGk9ZS5ub2RlKG4pO2lmKGkudHlwZT09PWp0Lk1FVEEpcmV0dXJuIHI7bGV0IG89aS5vcDtyZXR1cm4gbyYmKHJbb109cltvXXx8W10scltvXS5wdXNoKGkubmFtZSkpLHJ9LHQpfWZ1bmN0aW9uIGNjcihlLHQscil7bGV0IG49e307cmV0dXJuIEhlLmVhY2goZSxmdW5jdGlvbihpLG8pe2lmKGkubGVuZ3RoPD0xKXJldHVybjtsZXQgYT17fTtIZS5lYWNoKGksZnVuY3Rpb24ocyl7bGV0IGw9cy5jaGFyQXQocy5sZW5ndGgtMSk9PT0iKiIsYz1zLnNwbGl0KCIvIiksdT1jW2MubGVuZ3RoLTFdLGg9Yy5zbGljZSgwLGMubGVuZ3RoLTEpLmpvaW4oIi8iKSxmPXUubWF0Y2goL14oXEQqKShcZCspJC8pLHAsZCxnPSIiO2Y/KHA9ZlsxXSxkPWZbMl0pOihwPWw/dS5zdWJzdHIoMCx1Lmxlbmd0aC0xKTp1LGQ9MCxnPWw/IioiOiIiKTtsZXQgXz1RUyhwLGcsaCk7YVtfXT1hW19dfHxbXTtsZXQgeT1KUyhwLGcsaCwrZCxzLHIpO2FbX10ucHVzaCh5KX0pLEhlLmVhY2goYSxmdW5jdGlvbihzLGwpe2lmKHMubGVuZ3RoPDIpcmV0dXJuO3Muc29ydChmdW5jdGlvbih1LGgpe3JldHVybit1LmNsdXN0ZXJJZC0raC5jbHVzdGVySWR9KTtsZXQgYz1bc1swXV07Zm9yKGxldCB1PTE7dTxzLmxlbmd0aDt1Kyspe2xldCBoPXNbdV07aWYoaC5jbHVzdGVySWQ9PT1jW2MubGVuZ3RoLTFdLmNsdXN0ZXJJZCsxKXtjLnB1c2goaCk7Y29udGludWV9X0goYyxuLCtvLHQsciksYz1baF19X0goYyxuLCtvLHQscil9KX0pLG59ZnVuY3Rpb24gdWNyKGUsdCxyKXtsZXQgbj17fTtyZXR1cm4gSGUuZWFjaChlLGZ1bmN0aW9uKGksbyl7aWYoaS5sZW5ndGg8PTEpcmV0dXJuO2xldCBhPXt9LHM9e307SGUuZWFjaChpLGZ1bmN0aW9uKGMpe2xldCB1PWMuY2hhckF0KGMubGVuZ3RoLTEpPT09IioiLGg9Yy5zcGxpdCgiLyIpLGY9aFtoLmxlbmd0aC0xXSxwPWguc2xpY2UoMCxoLmxlbmd0aC0xKS5qb2luKCIvIiksZD0vKFxkKykvZyxnPVtdLF8seSx4LGIsUyxDPTA7Zm9yKDtfPWQuZXhlYyhmKTspKytDLHk9Zi5zbGljZSgwLF8uaW5kZXgpLHg9X1swXSxiPWYuc2xpY2UoXy5pbmRleCtfWzBdLmxlbmd0aCksUz1RUyh5LGIscCksYVtTXT1hW1NdLGFbU118fChhW1NdPUpTKHksYixwLCt4LGMscikpLGFbU10uaWRzLnB1c2goeCksc1tjXT1zW2NdfHxbXSxzW2NdLnB1c2goW1MseF0pO0M8MSYmKHk9dT9mLnN1YnN0cigwLGYubGVuZ3RoLTEpOmYseD0wLGI9dT8iKiI6IiIsUz1RUyh5LGIscCksYVtTXT1hW1NdLGFbU118fChhW1NdPUpTKHksYixwLCt4LGMscikpLGFbU10uaWRzLnB1c2goeCksc1tjXT1zW2NdfHxbXSxzW2NdLnB1c2goW1MseF0pKX0pO3ZhciBsPXt9O0hlLmVhY2gocyxmdW5jdGlvbihjLHUpe2Muc29ydChmdW5jdGlvbih5LHgpe3JldHVybiBhW3hbMF1dLmlkcy5sZW5ndGgtYVt5WzBdXS5pZHMubGVuZ3RofSk7dmFyIGg9Y1swXVswXSxmPWNbMF1bMV07bFtoXT1sW2hdfHxbXTtsZXQgcD11LnNwbGl0KCIvIiksZD1wW3AubGVuZ3RoLTFdLGc9cC5zbGljZSgwLHAubGVuZ3RoLTEpLmpvaW4oIi8iKTt2YXIgXz1KUyhhW2hdLnByZWZpeCxhW2hdLnN1ZmZpeCxnLCtmLHUscik7bFtoXS5wdXNoKF8pfSksSGUuZWFjaChsLGZ1bmN0aW9uKGMsdSl7aWYoYy5sZW5ndGg8MilyZXR1cm47Yy5zb3J0KGZ1bmN0aW9uKGYscCl7cmV0dXJuK2YuY2x1c3RlcklkLStwLmNsdXN0ZXJJZH0pO2xldCBoPVtjWzBdXTtmb3IobGV0IGY9MTtmPGMubGVuZ3RoO2YrKyl7bGV0IHA9Y1tmXTtpZihwLmNsdXN0ZXJJZD09PWhbaC5sZW5ndGgtMV0uY2x1c3RlcklkKzEpe2gucHVzaChwKTtjb250aW51ZX1fSChoLG4sK28sdCxyKSxoPVtwXX1fSChoLG4sK28sdCxyKX0pfSksbn1mdW5jdGlvbiBfSChlLHQscixuLGkpe2lmKGUubGVuZ3RoPjEpe2xldCBvPVFTKGVbMF0ucHJlZml4LGVbMF0uc3VmZml4LGVbMF0ucGFyZW50LGVbMF0uY2x1c3RlcklkLGVbZS5sZW5ndGgtMV0uY2x1c3RlcklkKSxhPUpTKGVbMF0ucHJlZml4LGVbMF0uc3VmZml4LGVbMF0ucGFyZW50LHIsbyxpKTtIZS5lYWNoKGUsZnVuY3Rpb24ocyl7YS5pZHMucHVzaChzLmNsdXN0ZXJJZCksYS5tZXRhZ3JhcGguc2V0Tm9kZShzLm5hbWUsbi5ub2RlKHMubmFtZSkpfSksdFtvXT1hfX12YXIgbWU9RWUoT2UoKSwxKTt2YXIgeTA9e0RFRkFVTFRfRklMTDoiI2ZmZmZmZiIsREVGQVVMVF9TVFJPS0U6IiNiMmIyYjIiLENPTVBBVElCTEU6IiMwZjlkNTgiLElOQ09NUEFUSUJMRToiI2RiNDQzNyJ9LCR1PXtERUZBVUxUX0ZJTEw6IiNkOWQ5ZDkiLERFRkFVTFRfU1RST0tFOiIjYTZhNmE2IixTQVRVUkFUSU9OOi42LExJR0hUTkVTUzouODUsRVhQQU5ERURfQ09MT1I6IiNmMGYwZjAiLEhVRVM6WzIyMCwxMDAsMTgwLDQwLDIwLDM0MCwyNjAsMzAwLDE0MCw2MF0sU1RSVUNUVVJFX1BBTEVUVEUoZSx0KXtsZXQgcj0kdS5IVUVTLG49ci5sZW5ndGgsaT1yW2Ulbl0sbz1NYXRoLnNpbihpKk1hdGguUEkvMzYwKSxhPXQ/MzA6OTAtNjAqbyxzPXQ/OTU6ODA7cmV0dXJuIFZtKGksLjAxKmEsLjAxKnMpLnRvU3RyaW5nKCl9LERFVklDRV9QQUxFVFRFKGUpe3JldHVybiAkdS5TVFJVQ1RVUkVfUEFMRVRURShlKX0sWExBX0NMVVNURVJfUEFMRVRURShlKXtyZXR1cm4gJHUuU1RSVUNUVVJFX1BBTEVUVEUoZSl9LFVOS05PV046IiNlZWUiLEdSQURJRU5UX09VVExJTkU6IiM4ODgifSxIbHQ9e0RFRkFVTFRfRklMTDoid2hpdGUiLERFRkFVTFRfU1RST0tFOiIjYjJiMmIyIn0sam89e21pbk5vZGVDb3VudEZvckV4dHJhY3Rpb246MTUsbWluRGVncmVlRm9yRXh0cmFjdGlvbjo1LG1heENvbnRyb2xEZWdyZWU6NCxtYXhCcmlkZ2VQYXRoRGVncmVlOjQsb3V0RXh0cmFjdFR5cGVzOlsiTm9PcCJdLGluRXh0cmFjdFR5cGVzOltdLGRldGFjaEFsbEVkZ2VzRm9ySGlnaERlZ3JlZTohMCxleHRyYWN0SXNvbGF0ZWROb2Rlc1dpdGhBbm5vdGF0aW9uc09uT25lU2lkZTohMCxlbmFibGVCcmlkZ2VncmFwaDohMCxtaW5NYXhDb2xvcnM6WyIjZmZmNWYwIiwiI2ZiNmE0YSJdLG1heEFubm90YXRpb25zOjV9LGhjcj1uZXcgUmVnRXhwKCJeKD86Iit3YSsiKT8oXFx3KylfW2EtejAtOV17OH0oPzpfXFxkKyk/JCIpLHNvPWNsYXNze2NvbnN0cnVjdG9yKHQscixuKXt0aGlzLmhpZXJhcmNoeT10LHRoaXMuZGlzcGxheWluZ1N0YXRzPXIsdGhpcy5hdXRvRXh0cmFjdE5vZGVzPW4sdGhpcy5pbmRleD17fSx0aGlzLnJlbmRlcmVkT3BOYW1lcz1bXSx0aGlzLmNvbXB1dGVTY2FsZXMoKSx0aGlzLmhhc1N1YmhpZXJhcmNoeT17fSx0aGlzLnJvb3Q9bmV3IHhIKHQucm9vdCx0LmdyYXBoT3B0aW9ucyksdGhpcy5pbmRleFt0LnJvb3QubmFtZV09dGhpcy5yb290LHRoaXMucmVuZGVyZWRPcE5hbWVzLnB1c2godC5yb290Lm5hbWUpLHRoaXMuYnVpbGRTdWJoaWVyYXJjaHkodC5yb290Lm5hbWUpLHRoaXMucm9vdC5leHBhbmRlZD0hMCx0aGlzLnRyYWNlSW5wdXRzPSExfWNvbXB1dGVTY2FsZXMoKXt0aGlzLmRldmljZUNvbG9yTWFwPW11KCkuZG9tYWluKHRoaXMuaGllcmFyY2h5LmRldmljZXMpLnJhbmdlKG1lLm1hcChJcih0aGlzLmhpZXJhcmNoeS5kZXZpY2VzLmxlbmd0aCksJHUuREVWSUNFX1BBTEVUVEUpKSx0aGlzLnhsYUNsdXN0ZXJDb2xvck1hcD1tdSgpLmRvbWFpbih0aGlzLmhpZXJhcmNoeS54bGFDbHVzdGVycykucmFuZ2UobWUubWFwKElyKHRoaXMuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aCksJHUuWExBX0NMVVNURVJfUEFMRVRURSkpO2xldCB0PXRoaXMuaGllcmFyY2h5LnJvb3QubWV0YWdyYXBoLHI9c3UodC5ub2RlcygpLChpLG8pPT57bGV0IGE9dC5ub2RlKGkpO2lmKGEuc3RhdHMhPW51bGwpcmV0dXJuIGEuc3RhdHMudG90YWxCeXRlc30pO3RoaXMubWVtb3J5VXNhZ2VTY2FsZT16bigpLmRvbWFpbihbMCxyXSkucmFuZ2Uoam8ubWluTWF4Q29sb3JzKTtsZXQgbj1zdSh0Lm5vZGVzKCksKGksbyk9PntsZXQgYT10Lm5vZGUoaSk7aWYoYS5zdGF0cyE9bnVsbClyZXR1cm4gYS5zdGF0cy5nZXRUb3RhbE1pY3JvcygpfSk7dGhpcy5jb21wdXRlVGltZVNjYWxlPXpuKCkuZG9tYWluKFswLG5dKS5yYW5nZShqby5taW5NYXhDb2xvcnMpLHRoaXMuZWRnZVdpZHRoU2l6ZWRCYXNlZFNjYWxlPXRoaXMuaGllcmFyY2h5Lmhhc1NoYXBlSW5mbz9Cc2U6em4oKS5kb21haW4oWzEsdGhpcy5oaWVyYXJjaHkubWF4TWV0YUVkZ2VTaXplXSkucmFuZ2UoW0s0LFo0XSl9Z2V0UmVuZGVyTm9kZUJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5pbmRleFt0XX1nZXROb2RlQnlOYW1lKHQpe3JldHVybiB0aGlzLmhpZXJhcmNoeS5ub2RlKHQpfWNvbG9ySGlzdG9ncmFtKHQscil7aWYoT2JqZWN0LmtleXModCkubGVuZ3RoPjApe2xldCBuPW1lLnN1bShPYmplY3Qua2V5cyh0KS5tYXAoaT0+dFtpXSkpO3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoaT0+KHtjb2xvcjpyKGkpLHByb3BvcnRpb246dFtpXS9ufSkpfXJldHVybiBudWxsfWdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZSh0KXtpZighdClyZXR1cm4gbnVsbDtpZih0IGluIHRoaXMuaW5kZXgpcmV0dXJuIHRoaXMuaW5kZXhbdF07bGV0IHI9dGhpcy5oaWVyYXJjaHkubm9kZSh0KTtpZighcilyZXR1cm4gbnVsbDtsZXQgbj1yLmlzR3JvdXBOb2RlP25ldyB4SChyLHRoaXMuaGllcmFyY2h5LmdyYXBoT3B0aW9ucyk6bmV3IHFmKHIpO3RoaXMuaW5kZXhbdF09bix0aGlzLnJlbmRlcmVkT3BOYW1lcy5wdXNoKHQpLHIuc3RhdHMmJihuLm1lbW9yeUNvbG9yPXRoaXMubWVtb3J5VXNhZ2VTY2FsZShyLnN0YXRzLnRvdGFsQnl0ZXMpLG4uY29tcHV0ZVRpbWVDb2xvcj10aGlzLmNvbXB1dGVUaW1lU2NhbGUoci5zdGF0cy5nZXRUb3RhbE1pY3JvcygpKSksbi5pc0ZhZGVkT3V0PXRoaXMuZGlzcGxheWluZ1N0YXRzJiYhcEgoci5zdGF0cyk7dmFyIGk9bnVsbCxvPW51bGwsYT1udWxsO2lmKHIuaXNHcm91cE5vZGUpe2k9ci5kZXZpY2VIaXN0b2dyYW0sbz1yLnhsYUNsdXN0ZXJIaXN0b2dyYW07bGV0IHM9ci5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGUsbD1yLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlOyhzIT0wfHxsIT0wKSYmKGE9cy8ocytsKSl9ZWxzZXtsZXQgcz1uLm5vZGUuZGV2aWNlO3MmJihpPXtbc106MX0pO2xldCBsPW4ubm9kZS54bGFDbHVzdGVyO2wmJihvPXtbbF06MX0pLG4ubm9kZS50eXBlPT09anQuT1AmJihhPW4ubm9kZS5jb21wYXRpYmxlPzE6MCl9cmV0dXJuIGkmJihuLmRldmljZUNvbG9ycz10aGlzLmNvbG9ySGlzdG9ncmFtKGksdGhpcy5kZXZpY2VDb2xvck1hcCkpLG8mJihuLnhsYUNsdXN0ZXJDb2xvcnM9dGhpcy5jb2xvckhpc3RvZ3JhbShvLHRoaXMueGxhQ2x1c3RlckNvbG9yTWFwKSksYSE9bnVsbCYmKG4uY29tcGF0aWJpbGl0eUNvbG9ycz1be2NvbG9yOnkwLkNPTVBBVElCTEUscHJvcG9ydGlvbjphfSx7Y29sb3I6eTAuSU5DT01QQVRJQkxFLHByb3BvcnRpb246MS1hfV0pLHRoaXMuaW5kZXhbdF19Z2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KXtsZXQgcj1hUCh0KSxuPTAsaT1udWxsLG89dDtmb3IoO248ci5sZW5ndGgmJihvPXJbbl0saT10aGlzLmdldFJlbmRlck5vZGVCeU5hbWUobyksISFpLmV4cGFuZGVkKTtuKyspO2lmKG49PXIubGVuZ3RoLTIpe2xldCBhPXJbbisxXTtpZihpIT1udWxsJiZpLmluQW5ub3RhdGlvbnMubm9kZU5hbWVzW2FdfHxpIT1udWxsJiZpLm91dEFubm90YXRpb25zLm5vZGVOYW1lc1thXSlyZXR1cm4gYX1yZXR1cm4gb31zZXREZXB0aCh0KXtjbGUodGhpcy5yb290LCt0KX1pc05vZGVBdXhpbGlhcnkodCl7bGV0IHI9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKHQubm9kZS5wYXJlbnROb2RlLm5hbWUpLG49bWUuZmluZChyLmlzb2xhdGVkSW5FeHRyYWN0LGk9Pmkubm9kZS5uYW1lPT09dC5ub2RlLm5hbWUpO3JldHVybiBuPyEwOihuPW1lLmZpbmQoci5pc29sYXRlZE91dEV4dHJhY3QsaT0+aS5ub2RlLm5hbWU9PT10Lm5vZGUubmFtZSksISFuKX1nZXROYW1lc09mUmVuZGVyZWRPcHMoKXtyZXR1cm4gdGhpcy5yZW5kZXJlZE9wTmFtZXN9Y2xvbmVBbmRBZGRGdW5jdGlvbk9wTm9kZSh0LHIsbixpKXtsZXQgbz1uLm5hbWUucmVwbGFjZShyLGkpLGE9dC5tZXRhZ3JhcGgubm9kZShvKTtpZihhKXJldHVybiBhO2E9bmV3IF8wKHtuYW1lOm8saW5wdXQ6W10sZGV2aWNlOm4uZGV2aWNlLG9wOm4ub3AsYXR0cjptZS5jbG9uZURlZXAobi5hdHRyKX0pLGEuY2FyZGluYWxpdHk9bi5jYXJkaW5hbGl0eSxhLmluY2x1ZGU9bi5pbmNsdWRlLGEub3V0cHV0U2hhcGVzPW1lLmNsb25lRGVlcChuLm91dHB1dFNoYXBlcyksYS54bGFDbHVzdGVyPW4ueGxhQ2x1c3RlcixhLmZ1bmN0aW9uSW5wdXRJbmRleD1uLmZ1bmN0aW9uSW5wdXRJbmRleCxhLmZ1bmN0aW9uT3V0cHV0SW5kZXg9bi5mdW5jdGlvbk91dHB1dEluZGV4LGEuaW5wdXRzPW4uaW5wdXRzLm1hcChsPT57bGV0IGM9bWUuY2xvbmUobCk7cmV0dXJuIGMubmFtZT1sLm5hbWUucmVwbGFjZShyLGkpLGN9KSxhLnBhcmVudE5vZGU9dCx0Lm1ldGFncmFwaC5zZXROb2RlKGEubmFtZSxhKSx0aGlzLmhpZXJhcmNoeS5zZXROb2RlKGEubmFtZSxhKTtsZXQgcz1sPT50aGlzLmNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUodCxyLGwsaSk7cmV0dXJuIGEuaW5FbWJlZGRpbmdzPW4uaW5FbWJlZGRpbmdzLm1hcChzKSxhLm91dEVtYmVkZGluZ3M9bi5vdXRFbWJlZGRpbmdzLm1hcChzKSxhfWNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUodCxyLG4saSxvKXtsZXQgYT17fSxzPXRoaXMuY2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZUhlbHBlcih0LHIsbixpLG8sYSk7cmV0dXJuIG1lLmlzRW1wdHkoYSl8fHRoaXMucGF0Y2hFZGdlc0Zyb21GdW5jdGlvbk91dHB1dHMocixhKSxzfWNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGVIZWxwZXIodCxyLG4saSxvLGEpe2xldCBzPW9QKG4ubmFtZS5yZXBsYWNlKGksbykpO3JldHVybiBzLmRlcHRoPW4uZGVwdGgscy5jYXJkaW5hbGl0eT1uLmNhcmRpbmFsaXR5LHMudGVtcGxhdGVJZD1uLnRlbXBsYXRlSWQscy5vcEhpc3RvZ3JhbT1tZS5jbG9uZShuLm9wSGlzdG9ncmFtKSxzLmRldmljZUhpc3RvZ3JhbT1tZS5jbG9uZShuLmRldmljZUhpc3RvZ3JhbSkscy54bGFDbHVzdGVySGlzdG9ncmFtPW1lLmNsb25lKG4ueGxhQ2x1c3Rlckhpc3RvZ3JhbSkscy5oYXNOb25Db250cm9sRWRnZXM9bi5oYXNOb25Db250cm9sRWRnZXMscy5pbmNsdWRlPW4uaW5jbHVkZSxzLm5vZGVBdHRyaWJ1dGVzPW1lLmNsb25lKG4ubm9kZUF0dHJpYnV0ZXMpLHMuYXNzb2NpYXRlZEZ1bmN0aW9uPW4uYXNzb2NpYXRlZEZ1bmN0aW9uLG1lLmVhY2gobi5tZXRhZ3JhcGgubm9kZXMoKSxsPT57bGV0IGM9bi5tZXRhZ3JhcGgubm9kZShsKTtzd2l0Y2goYy50eXBlKXtjYXNlIGp0Lk1FVEE6bGV0IHU9dGhpcy5jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQscixjLGksbyxhKTt1LnBhcmVudE5vZGU9cyxzLm1ldGFncmFwaC5zZXROb2RlKHUubmFtZSx1KSx0aGlzLmhpZXJhcmNoeS5zZXROb2RlKHUubmFtZSx1KTticmVhaztjYXNlIGp0Lk9QOmxldCBoPXRoaXMuY2xvbmVBbmRBZGRGdW5jdGlvbk9wTm9kZShzLGksYyxvKTttZS5pc051bWJlcihoLmZ1bmN0aW9uSW5wdXRJbmRleCkmJnRoaXMucGF0Y2hFZGdlc0ludG9GdW5jdGlvbklucHV0cyhyLGgpLG1lLmlzTnVtYmVyKGguZnVuY3Rpb25PdXRwdXRJbmRleCkmJihhW2guZnVuY3Rpb25PdXRwdXRJbmRleF09aCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oYy5uYW1lKyIgaXMgb2RkbHkgbmVpdGhlciBhIG1ldGFub2RlIG5vciBhbiBvcG5vZGUuIil9fSksdGhpcy5jbG9uZUxpYnJhcnlNZXRhbm9kZUVkZ2VzKG4scyxpLG8pLHN9Y2xvbmVMaWJyYXJ5TWV0YW5vZGVFZGdlcyh0LHIsbixpKXttZS5lYWNoKHQubWV0YWdyYXBoLmVkZ2VzKCksbz0+e2xldCBhPXQubWV0YWdyYXBoLmVkZ2Uobykscz1hLnYucmVwbGFjZShuLGkpLGw9YS53LnJlcGxhY2UobixpKSxjPW5ldyBVZihzLGwpO2MuaW5ib3VuZD1hLmluYm91bmQsYy5udW1SZWd1bGFyRWRnZXM9YS5udW1SZWd1bGFyRWRnZXMsYy5udW1Db250cm9sRWRnZXM9YS5udW1Db250cm9sRWRnZXMsYy5udW1SZWZFZGdlcz1hLm51bVJlZkVkZ2VzLGMudG90YWxTaXplPWEudG90YWxTaXplLGEuYmFzZUVkZ2VMaXN0JiYoYy5iYXNlRWRnZUxpc3Q9YS5iYXNlRWRnZUxpc3QubWFwKHU9PntsZXQgaD1tZS5jbG9uZSh1KTtyZXR1cm4gaC52PXUudi5yZXBsYWNlKG4saSksaC53PXUudy5yZXBsYWNlKG4saSksaH0pKSxyLm1ldGFncmFwaC5ub2RlKGwpP3IubWV0YWdyYXBoLnNldEVkZ2UocyxsLGMpOnIubWV0YWdyYXBoLnNldEVkZ2UobCxzLGMpfSl9cGF0Y2hFZGdlc0ludG9GdW5jdGlvbklucHV0cyh0LHIpe2xldCBuPU1hdGgubWluKHIuZnVuY3Rpb25JbnB1dEluZGV4LHQuaW5wdXRzLmxlbmd0aC0xKSxpPW1lLmNsb25lKHQuaW5wdXRzW25dKTtmb3IoO2kuaXNDb250cm9sRGVwZW5kZW5jeTspbisrLGk9dC5pbnB1dHNbbl07ci5pbnB1dHMucHVzaChpKTtsZXQgbz10aGlzLmhpZXJhcmNoeS5nZXRQcmVkZWNlc3NvcnModC5uYW1lKSxhLHM9MDttZS5lYWNoKG8ucmVndWxhcixsPT57aWYocys9bC5udW1SZWd1bGFyRWRnZXMscz5uKXJldHVybiBhPWwsITF9KSxtZS5lYWNoKGEuYmFzZUVkZ2VMaXN0LGw9PntsLnc9PT10Lm5hbWUmJihsLnc9ci5uYW1lKSxsLnY9PT10Lm5hbWUmJihsLnY9ci5uYW1lKX0pfXBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKHQscil7bGV0IG49dGhpcy5oaWVyYXJjaHkuZ2V0U3VjY2Vzc29ycyh0Lm5hbWUpO21lLmVhY2gobi5yZWd1bGFyLGk9PnttZS5lYWNoKGkuYmFzZUVkZ2VMaXN0LG89PntsZXQgYT10aGlzLmhpZXJhcmNoeS5ub2RlKG8udyk7bWUuZWFjaChhLmlucHV0cyxzPT57aWYocy5uYW1lPT09dC5uYW1lKXtsZXQgbD1yW3Mub3V0cHV0VGVuc29yS2V5XTtzLm5hbWU9bC5uYW1lLHMub3V0cHV0VGVuc29yS2V5PW8ub3V0cHV0VGVuc29yS2V5fX0pfSksbWUuZWFjaChpLmJhc2VFZGdlTGlzdCxvPT57by52PXJbby5vdXRwdXRUZW5zb3JLZXldLm5hbWUsby5vdXRwdXRUZW5zb3JLZXk9IjAifSl9KX1idWlsZFN1YmhpZXJhcmNoeSh0KXtpZih0IGluIHRoaXMuaGFzU3ViaGllcmFyY2h5KXJldHVybjt0aGlzLmhhc1N1YmhpZXJhcmNoeVt0XT0hMDtsZXQgcj10aGlzLmluZGV4W3RdO2lmKHIubm9kZS50eXBlIT09anQuTUVUQSYmci5ub2RlLnR5cGUhPT1qdC5TRVJJRVMpcmV0dXJuO2xldCBuPXIsaT1uLm5vZGUubWV0YWdyYXBoLG89bi5jb3JlR3JhcGgsYT1bXSxzPVtdO21lLmlzRW1wdHkodGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9ucyl8fChtZS5lYWNoKGkubm9kZXMoKSxkPT57bGV0IGc9aS5ub2RlKGQpLF89dGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9uc1tnLm9wXTtpZighX3x8ZC5pbmRleE9mKHdhKT09PTApcmV0dXJuO2xldCB5PXRoaXMuY2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZShpLGcsXy5ub2RlLF8ubm9kZS5uYW1lLGcubmFtZSk7YS5wdXNoKGcpLHMucHVzaCh5KX0pLG1lLmVhY2gocywoZCxnKT0+e2xldCBfPWFbZ107ZC5wYXJlbnROb2RlPV8ucGFyZW50Tm9kZSxpLnNldE5vZGUoXy5uYW1lLGQpLHRoaXMuaGllcmFyY2h5LnNldE5vZGUoXy5uYW1lLGQpfSkpLG1lLmVhY2goaS5ub2RlcygpLGQ9PntsZXQgZz10aGlzLmdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZShkKSxfPWcubm9kZTtvLnNldE5vZGUoZCxnKSxfLmlzR3JvdXBOb2RlfHwobWUuZWFjaChfLmluRW1iZWRkaW5ncyx5PT57bGV0IHg9bmV3IE9kKG51bGwpLGI9bmV3IHFmKHkpO3NsZShnLHksYix4LF9pLkNPTlNUQU5UKSx0aGlzLmluZGV4W3kubmFtZV09Yn0pLG1lLmVhY2goXy5vdXRFbWJlZGRpbmdzLHk9PntsZXQgeD1uZXcgT2QobnVsbCksYj1uZXcgcWYoeSk7bGxlKGcseSxiLHgsX2kuU1VNTUFSWSksdGhpcy5pbmRleFt5Lm5hbWVdPWJ9KSl9KSxtZS5lYWNoKGkuZWRnZXMoKSxkPT57bGV0IGc9aS5lZGdlKGQpLF89bmV3IE9kKGcpO18uaXNGYWRlZE91dD10aGlzLmluZGV4W2Qudl0uaXNGYWRlZE91dHx8dGhpcy5pbmRleFtkLnddLmlzRmFkZWRPdXQsby5zZXRFZGdlKGQudixkLncsXyl9KSxuLm5vZGUudHlwZT09PWp0Lk1FVEEmJnljcihuLHRoaXMuYXV0b0V4dHJhY3ROb2RlcyksbWUuaXNFbXB0eSh0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zKXx8dGhpcy5idWlsZFN1YmhpZXJhcmNoaWVzRm9yTmVlZGVkRnVuY3Rpb25zKGkpLHQ9PT1WYyYmbWUuZm9yT3duKHRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnMsKGQsZyk9PntsZXQgXz1kLm5vZGUseT10aGlzLmdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZShfLm5hbWUpO24ubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QucHVzaCh5KSx5Lm5vZGUuaW5jbHVkZT11ci5FWENMVURFLG8ucmVtb3ZlTm9kZShfLm5hbWUpfSk7bGV0IGw9bi5ub2RlLnBhcmVudE5vZGU7aWYoIWwpcmV0dXJuO2xldCBjPXRoaXMuaW5kZXhbbC5uYW1lXSx1PShkLC4uLmcpPT5nLmNvbmNhdChbZD8iSU4iOiJPVVQiXSkuam9pbigifn4iKSxoPXRoaXMuaGllcmFyY2h5LmdldEJyaWRnZWdyYXBoKHQpLGY9e2luOnt9LG91dDp7fSxjb250cm9sOnt9fTttZS5lYWNoKGguZWRnZXMoKSxkPT57bGV0IGc9ISFpLm5vZGUoZC53KSxfPWc/ZC52OmQudztoLmVkZ2UoZCkubnVtUmVndWxhckVkZ2VzP2c/Zi5vdXRbX109KGYub3V0W19dfHwwKSsxOmYuaW5bX109KGYuaW5bX118fDApKzE6Zi5jb250cm9sW19dPShmLmNvbnRyb2xbX118fDApKzF9KTtsZXQgcD10aGlzLmhpZXJhcmNoeS5nZXROb2RlTWFwKCk7bWUuZWFjaChoLmVkZ2VzKCksZD0+e2xldCBnPWguZWRnZShkKSxfPSEhaS5ub2RlKGQudyksW3kseF09Xz9bZC53LGQudl06W2QudixkLnddLGI9dGhpcy5pbmRleFt5XSxTPXRoaXMuaW5kZXhbeF0sQz1TP1Mubm9kZTpwW3hdLFA9IWcubnVtUmVndWxhckVkZ2VzJiZmLmNvbnRyb2xbeF0+am8ubWF4Q29udHJvbERlZ3JlZSxbLGtdPV8/W3IuaW5Bbm5vdGF0aW9ucyxiLmluQW5ub3RhdGlvbnNdOltyLm91dEFubm90YXRpb25zLGIub3V0QW5ub3RhdGlvbnNdLEQ9KF8/Zi5vdXQ6Zi5pbilbeF0+am8ubWF4QnJpZGdlUGF0aERlZ3JlZSxCPW51bGwsST0hMTtpZihqby5lbmFibGVCcmlkZ2VncmFwaCYmIUQmJiFQJiZiLmlzSW5Db3JlKCkpe2xldCBXPVo9PntsZXQgcnQ9Xz97djpaLHc6dH06e3Y6dCx3Olp9O3JldHVybiBjLmNvcmVHcmFwaC5lZGdlKHJ0KX07Qj1XKHgpLEJ8fChCPVcodShfLHgsbC5uYW1lKSkpLEk9ISFCfWxldCBMPSExO2lmKEImJiFnLm51bVJlZ3VsYXJFZGdlcyl7bGV0IFc9QixaPWMubm9kZTtmb3IoO1cuYWRqb2luaW5nTWV0YWVkZ2U7KVc9Vy5hZGpvaW5pbmdNZXRhZWRnZSxaPVoucGFyZW50Tm9kZTtsZXQgcnQ9dGhpcy5oaWVyYXJjaHkuZ2V0VG9wb2xvZ2ljYWxPcmRlcmluZyhaLm5hbWUpLG90PVcubWV0YWVkZ2U7TD1ydFtvdC52XT5ydFtvdC53XX1pZihJPUkmJiFMLCFJKXtrLnB1c2gobmV3IG4zKEMsUyxuZXcgT2QoZyksX2kuU0hPUlRDVVQsXykpO3JldHVybn1sZXQgUj11KF8sdCksRj11KF8seCx0KSx6PW8ubm9kZShGKTtpZigheil7bGV0IFc9by5ub2RlKFIpO2lmKCFXKXtsZXQgcnQ9e25hbWU6Uix0eXBlOmp0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eTowLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6dXIuVU5TUEVDSUZJRUQsaW5ib3VuZDpfLG5vZGVBdHRyaWJ1dGVzOnt9fTtXPW5ldyBxZihydCksdGhpcy5pbmRleFtSXT1XLG8uc2V0Tm9kZShSLFcpfWxldCBaPXtuYW1lOkYsdHlwZTpqdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOnVyLlVOU1BFQ0lGSUVELGluYm91bmQ6Xyxub2RlQXR0cmlidXRlczp7fX07ej1uZXcgcWYoWiksdGhpcy5pbmRleFtGXT16LG8uc2V0Tm9kZShGLHopLG8uc2V0UGFyZW50KEYsUiksVy5ub2RlLmNhcmRpbmFsaXR5Kyt9bGV0IFU9bmV3IE9kKGcpO1UuYWRqb2luaW5nTWV0YWVkZ2U9QixfP28uc2V0RWRnZShGLHksVSk6by5zZXRFZGdlKHksRixVKX0pLG1lLmVhY2goWyEwLCExXSxkPT57bGV0IGc9dShkLHQpLF89by5ub2RlKGcpOyFffHxtZS5lYWNoKG8ubm9kZXMoKSx5PT57dmFyIHgsYjtpZihvLm5vZGUoeSkubm9kZS50eXBlPT09anQuQlJJREdFfHwhKGQ/ISghKCh4PW8ucHJlZGVjZXNzb3JzKHkpKT09PW51bGx8fHg9PT12b2lkIDApJiZ4Lmxlbmd0aCk6ISghKChiPW8uc3VjY2Vzc29ycyh5KSk9PT1udWxsfHxiPT09dm9pZCAwKSYmYi5sZW5ndGgpKSlyZXR1cm47bGV0IFA9dShkLHQsIlNUUlVDVFVSQUxfVEFSR0VUIiksaz1vLm5vZGUoUCk7aWYoIWspe2xldCBEPXtuYW1lOlAsdHlwZTpqdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOnVyLlVOU1BFQ0lGSUVELGluYm91bmQ6ZCxub2RlQXR0cmlidXRlczp7fX07az1uZXcgcWYoRCksay5zdHJ1Y3R1cmFsPSEwLHRoaXMuaW5kZXhbUF09ayxvLnNldE5vZGUoUCxrKSxfLm5vZGUuY2FyZGluYWxpdHkrKyxvLnNldFBhcmVudChQLGcpfWxldCBPPW5ldyBPZChudWxsKTtPLnN0cnVjdHVyYWw9ITAsTy53ZWlnaHQtLSxkP28uc2V0RWRnZShQLHksTyk6by5zZXRFZGdlKHksUCxPKX0pfSl9YnVpbGRTdWJoaWVyYXJjaGllc0Zvck5lZWRlZEZ1bmN0aW9ucyh0KXttZS5lYWNoKHQuZWRnZXMoKSxyPT57bGV0IG49dC5lZGdlKHIpLGk9bmV3IE9kKG4pO21lLmZvckVhY2goaS5tZXRhZWRnZS5iYXNlRWRnZUxpc3Qsbz0+e2xldCBhPW8udi5zcGxpdChDbCk7Zm9yKGxldCBzPWEubGVuZ3RoO3M+PTA7cy0tKXtsZXQgbD1hLnNsaWNlKDAscyksYz10aGlzLmhpZXJhcmNoeS5ub2RlKGwuam9pbihDbCkpO2lmKGMpe2lmKGMudHlwZT09PWp0Lk9QJiZ0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zW2Mub3BdKWZvcihsZXQgdT0xO3U8bC5sZW5ndGg7dSsrKXtsZXQgaD1sLnNsaWNlKDAsdSkuam9pbihDbCk7IWh8fHRoaXMuYnVpbGRTdWJoaWVyYXJjaHkoaCl9YnJlYWt9fX0pfSl9fSxuMz1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbixpLG8pe3RoaXMubm9kZT10LHRoaXMucmVuZGVyTm9kZUluZm89cix0aGlzLnJlbmRlck1ldGFlZGdlSW5mbz1uLHRoaXMuYW5ub3RhdGlvblR5cGU9aSx0aGlzLmR4PTAsdGhpcy5keT0wLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLG4mJm4ubWV0YWVkZ2UmJih0aGlzLnY9bi5tZXRhZWRnZS52LHRoaXMudz1uLm1ldGFlZGdlLncpLHRoaXMuaXNJbj1vLHRoaXMucG9pbnRzPVtdfX0sX2k7KGZ1bmN0aW9uKGUpe2VbZS5TSE9SVENVVD0wXT0iU0hPUlRDVVQiLGVbZS5DT05TVEFOVD0xXT0iQ09OU1RBTlQiLGVbZS5TVU1NQVJZPTJdPSJTVU1NQVJZIixlW2UuRUxMSVBTSVM9M109IkVMTElQU0lTIn0pKF9pfHwoX2k9e30pKTt2YXIgdkg9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3Q9W10sdGhpcy5ub2RlTmFtZXM9e319cHVzaCh0KXtpZih0Lm5vZGUubmFtZSBpbiB0aGlzLm5vZGVOYW1lcylyZXR1cm47aWYodGhpcy5ub2RlTmFtZXNbdC5ub2RlLm5hbWVdPSEwLHRoaXMubGlzdC5sZW5ndGg8am8ubWF4QW5ub3RhdGlvbnMpe3RoaXMubGlzdC5wdXNoKHQpO3JldHVybn1sZXQgcj10aGlzLmxpc3RbdGhpcy5saXN0Lmxlbmd0aC0xXTtpZihyLmFubm90YXRpb25UeXBlPT09X2kuRUxMSVBTSVMpe2xldCBpPXIubm9kZTtpLnNldE51bU1vcmVOb2RlcygrK2kubnVtTW9yZU5vZGVzKTtyZXR1cm59bGV0IG49bmV3IGRIKDEpO3RoaXMubGlzdC5wdXNoKG5ldyBuMyhuLG5ldyBxZihuKSxudWxsLF9pLkVMTElQU0lTLHQuaXNJbikpfX0scWY9Y2xhc3N7Y29uc3RydWN0b3IodCl7aWYodGhpcy5ub2RlPXQsdGhpcy5leHBhbmRlZD0hMSx0aGlzLmluQW5ub3RhdGlvbnM9bmV3IHZILHRoaXMub3V0QW5ub3RhdGlvbnM9bmV3IHZILHRoaXMueD0wLHRoaXMueT0wLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLHRoaXMuaW5ib3hXaWR0aD0wLHRoaXMub3V0Ym94V2lkdGg9MCx0aGlzLmV4Y2x1ZGVkPSExLHRoaXMuc3RydWN0dXJhbD0hMSx0aGlzLmxhYmVsT2Zmc2V0PTAsdGhpcy5yYWRpdXM9MCx0aGlzLmxhYmVsSGVpZ2h0PTAsdGhpcy5wYWRkaW5nVG9wPTAsdGhpcy5wYWRkaW5nTGVmdD0wLHRoaXMucGFkZGluZ1JpZ2h0PTAsdGhpcy5wYWRkaW5nQm90dG9tPTAsdGhpcy5pc0luRXh0cmFjdD0hMSx0aGlzLmlzT3V0RXh0cmFjdD0hMSx0aGlzLmNvcmVCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuaXNGYWRlZE91dD0hMSx0aGlzLmRpc3BsYXlOYW1lPXQubmFtZS5zdWJzdHJpbmcodC5uYW1lLmxhc3RJbmRleE9mKENsKSsxKSx0LnR5cGU9PT1qdC5NRVRBJiZ0LmFzc29jaWF0ZWRGdW5jdGlvbil7bGV0IHI9dGhpcy5kaXNwbGF5TmFtZS5tYXRjaChoY3IpO3I/dGhpcy5kaXNwbGF5TmFtZT1yWzFdOm1lLnN0YXJ0c1dpdGgodGhpcy5kaXNwbGF5TmFtZSx3YSkmJih0aGlzLmRpc3BsYXlOYW1lPXRoaXMuZGlzcGxheU5hbWUuc3Vic3RyaW5nKHdhLmxlbmd0aCkpfX1pc0luQ29yZSgpe3JldHVybiF0aGlzLmlzSW5FeHRyYWN0JiYhdGhpcy5pc091dEV4dHJhY3QmJiF0aGlzLmlzTGlicmFyeUZ1bmN0aW9ufX0sT2Q9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5tZXRhZWRnZT10LHRoaXMuYWRqb2luaW5nTWV0YWVkZ2U9bnVsbCx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy53ZWlnaHQ9MSx0aGlzLmlzRmFkZWRPdXQ9ITF9fTtmdW5jdGlvbiBzbGUoZSx0LHIsbixpKXtsZXQgbz1uZXcgbjModCxyLG4saSwhMCk7ZS5pbkFubm90YXRpb25zLnB1c2gobyl9ZnVuY3Rpb24gbGxlKGUsdCxyLG4saSl7bGV0IG89bmV3IG4zKHQscixuLGksITEpO2Uub3V0QW5ub3RhdGlvbnMucHVzaChvKX1mdW5jdGlvbiBmY3IoZSx0KXttZS5lYWNoKGUubm9kZXMoKSxyPT57bGV0IG49ZS5ub2RlKHIpO2lmKG4uZXhwYW5kZWQ9dD4xLHQ+MClzd2l0Y2gobi5ub2RlLnR5cGUpe2Nhc2UganQuTUVUQTpjYXNlIGp0LlNFUklFUzpjbGUobix0LTEpO2JyZWFrfX0pfXZhciB4SD1jbGFzcyBleHRlbmRzIHFme2NvbnN0cnVjdG9yKHQscil7c3VwZXIodCk7bGV0IGk9dC5tZXRhZ3JhcGguZ3JhcGgoKTt0aGlzLmNvcmVHcmFwaD10MyhpLm5hbWUsZzAuQ09SRSxyKSx0aGlzLmluRXh0cmFjdEJveD17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5vdXRFeHRyYWN0Qm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLmxpYnJhcnlGdW5jdGlvbnNCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuaXNvbGF0ZWRJbkV4dHJhY3Q9W10sdGhpcy5pc29sYXRlZE91dEV4dHJhY3Q9W10sdGhpcy5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdD1bXX19O2Z1bmN0aW9uIGNsZShlLHQpe2UuY29yZUdyYXBoJiZmY3IoZS5jb3JlR3JhcGgsdCl9ZnVuY3Rpb24gc1AoZSx0LHIpe2xldCBuPWUubm9kZSh0KSxpPWUubm9kZShyKSxvPWUuZWRnZSh0LHIpOyhuLm5vZGUuaW5jbHVkZT09PXVyLklOQ0xVREV8fGkubm9kZS5pbmNsdWRlPT09dXIuSU5DTFVERSkmJm4ubm9kZS5pbmNsdWRlIT09dXIuRVhDTFVERSYmaS5ub2RlLmluY2x1ZGUhPT11ci5FWENMVURFfHwobGxlKG4saS5ub2RlLGksbyxfaS5TSE9SVENVVCksc2xlKGksbi5ub2RlLG4sbyxfaS5TSE9SVENVVCksZS5yZW1vdmVFZGdlKHQscikpfWZ1bmN0aW9uIFZsdChlLHQscil7dmFyIG47bGV0IGk9ZS5jb3JlR3JhcGgsbz1pLm5vZGUodCk7by5pc091dEV4dHJhY3Q9ITAsbWUuZWFjaChpLnByZWRlY2Vzc29ycyh0KSwoYSxzKT0+e3NQKGksYSx0KX0pLChqby5kZXRhY2hBbGxFZGdlc0ZvckhpZ2hEZWdyZWV8fHIpJiZtZS5lYWNoKGkuc3VjY2Vzc29ycyh0KSwoYSxzKT0+e3NQKGksdCxhKX0pLCgobj1pLm5laWdoYm9ycyh0KSk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLmxlbmd0aCk9PT0wJiYoby5ub2RlLmluY2x1ZGU9dXIuRVhDTFVERSxlLmlzb2xhdGVkT3V0RXh0cmFjdC5wdXNoKG8pLGkucmVtb3ZlTm9kZSh0KSl9ZnVuY3Rpb24gVWx0KGUsdCxyKXt2YXIgbjtsZXQgaT1lLmNvcmVHcmFwaCxvPWkubm9kZSh0KTtvLmlzSW5FeHRyYWN0PSEwLG1lLmVhY2goaS5zdWNjZXNzb3JzKHQpLChhLHMpPT57c1AoaSx0LGEpfSksKGpvLmRldGFjaEFsbEVkZ2VzRm9ySGlnaERlZ3JlZXx8cikmJm1lLmVhY2goaS5wcmVkZWNlc3NvcnModCksKGEscyk9PntzUChpLGEsdCl9KSwoKG49aS5uZWlnaGJvcnModCkpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5sZW5ndGgpPT09MCYmKG8ubm9kZS5pbmNsdWRlPXVyLkVYQ0xVREUsZS5pc29sYXRlZEluRXh0cmFjdC5wdXNoKG8pLGkucmVtb3ZlTm9kZSh0KSl9ZnVuY3Rpb24gdWxlKGUsdCl7aWYoZS50eXBlPT09anQuT1Ape2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKWlmKGUub3A9PT10W3JdKXJldHVybiEwfWVsc2UgaWYoZS50eXBlPT09anQuTUVUQSl7bGV0IHI9ZS5nZXRSb290T3AoKTtpZihyKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZihyLm9wPT09dFtuXSlyZXR1cm4hMH19cmV0dXJuITF9ZnVuY3Rpb24gcGNyKGUpe2xldCB0PWUuY29yZUdyYXBoO21lLmVhY2godC5ub2RlcygpLHI9Pnt2YXIgbixpO3Qubm9kZShyKS5ub2RlLmluY2x1ZGU9PT11ci5FWENMVURFJiYhci5zdGFydHNXaXRoKHdhKSYmKCgobj1lLmNvcmVHcmFwaC5vdXRFZGdlcyhyKSk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLmxlbmd0aCk+KChpPWUuY29yZUdyYXBoLmluRWRnZXMocikpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5sZW5ndGgpP1ZsdChlLHIsITApOlVsdChlLHIsITApKX0pfWZ1bmN0aW9uIGRjcihlKXtsZXQgdD1lLmNvcmVHcmFwaDttZS5lYWNoKHQubm9kZXMoKSxyPT57bGV0IG49dC5ub2RlKHIpO24ubm9kZS5pbmNsdWRlPT09dXIuVU5TUEVDSUZJRUQmJnVsZShuLm5vZGUsam8ub3V0RXh0cmFjdFR5cGVzKSYmVmx0KGUscil9KX1mdW5jdGlvbiBtY3IoZSl7bGV0IHQ9ZS5jb3JlR3JhcGg7bWUuZWFjaCh0Lm5vZGVzKCkscj0+e2xldCBuPXQubm9kZShyKTtuLm5vZGUuaW5jbHVkZT09PXVyLlVOU1BFQ0lGSUVEJiZ1bGUobi5ub2RlLGpvLmluRXh0cmFjdFR5cGVzKSYmVWx0KGUscil9KX1mdW5jdGlvbiBnY3IoZSl7bGV0IHQ9ZS5jb3JlR3JhcGgscj17fSxuPXt9LGk9MDtpZihtZS5lYWNoKHQubm9kZXMoKSxfPT57dmFyIHkseCxiLFM7aWYodC5ub2RlKF8pLm5vZGUuaW5jbHVkZSE9PXVyLlVOU1BFQ0lGSUVEKXJldHVybjtsZXQgQz1tZS5yZWR1Y2UodC5wcmVkZWNlc3NvcnMoXyksKGssTyk9PntsZXQgRD10LmVkZ2UoTyxfKS5tZXRhZWRnZTtyZXR1cm4gaysoRC5udW1SZWd1bGFyRWRnZXM/MTowKX0sMCk7Qz09PTAmJigoeT10LnByZWRlY2Vzc29ycyhfKSk9PT1udWxsfHx5PT09dm9pZCAwP3ZvaWQgMDp5Lmxlbmd0aCk+MCYmKEM9KHg9dC5wcmVkZWNlc3NvcnMoXykpPT09bnVsbHx8eD09PXZvaWQgMD92b2lkIDA6eC5sZW5ndGgpO2xldCBQPW1lLnJlZHVjZSh0LnN1Y2Nlc3NvcnMoXyksKGssTyk9PntsZXQgRD10LmVkZ2UoXyxPKS5tZXRhZWRnZTtyZXR1cm4gaysoRC5udW1SZWd1bGFyRWRnZXM/MTowKX0sMCk7UD09PTAmJigoYj10LnN1Y2Nlc3NvcnMoXykpPT09bnVsbHx8Yj09PXZvaWQgMD92b2lkIDA6Yi5sZW5ndGgpPjAmJihQPShTPXQuc3VjY2Vzc29ycyhfKSk9PT1udWxsfHxTPT09dm9pZCAwP3ZvaWQgMDpTLmxlbmd0aCkscltfXT1DLG5bX109UCxpKyt9KSxpPGpvLm1pbk5vZGVDb3VudEZvckV4dHJhY3Rpb24pcmV0dXJuO2xldCBvPWpvLm1pbkRlZ3JlZUZvckV4dHJhY3Rpb24tMSxhPU1hdGgucm91bmQoaSouNzUpLHM9TWF0aC5yb3VuZChpKi4yNSksbD1PYmplY3Qua2V5cyhyKS5zb3J0KChfLHkpPT5yW19dLXJbeV0pLGM9cltsW2FdXSx1PXJbbFtzXV0saD1jK2MtdTtoPU1hdGgubWF4KGgsbyk7Zm9yKGxldCBfPWktMTtyW2xbX11dPmg7Xy0tKVVsdChlLGxbX10pO2xldCBmPU9iamVjdC5rZXlzKG4pLnNvcnQoKF8seSk9Pm5bX10tblt5XSkscD1uW2ZbYV1dLGQ9bltmW3NdXSxnPXArKHAtZCkqNDtnPU1hdGgubWF4KGcsbyk7Zm9yKGxldCBfPWktMTtuW2ZbX11dPmc7Xy0tKXtsZXQgeT10Lm5vZGUoZltfXSk7IXl8fHkuaXNJbkV4dHJhY3R8fFZsdChlLGZbX10pfX1mdW5jdGlvbiBfY3IoZSl7bGV0IHQ9ZS5jb3JlR3JhcGgscj17fTttZS5lYWNoKHQuZWRnZXMoKSxuPT57dC5lZGdlKG4pLm1ldGFlZGdlLm51bVJlZ3VsYXJFZGdlc3x8KChyW24udl09cltuLnZdfHxbXSkucHVzaChuKSwocltuLnddPXJbbi53XXx8W10pLnB1c2gobikpfSksbWUuZWFjaChyLChuLGkpPT57bi5sZW5ndGg+am8ubWF4Q29udHJvbERlZ3JlZSYmbWUuZWFjaChuLG89PnNQKHQsby52LG8udykpfSl9ZnVuY3Rpb24geWNyKGUsdCl7cGNyKGUpLGpvLm91dEV4dHJhY3RUeXBlcy5sZW5ndGgmJmRjcihlKSxqby5pbkV4dHJhY3RUeXBlcy5sZW5ndGgmJm1jcihlKSx0JiZnY3IoZSksam8ubWF4Q29udHJvbERlZ3JlZSYmX2NyKGUpO2xldCByPWUuY29yZUdyYXBoO21lLmVhY2goci5ub2RlcygpLG49Pnt2YXIgaTtsZXQgbz1yLm5vZGUobiksYT0oaT1yLm5laWdoYm9ycyhuKSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmxlbmd0aDtpZihvLm5vZGUuaW5jbHVkZT09PXVyLlVOU1BFQ0lGSUVEJiZhPT09MCl7bGV0IHM9by5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wLGw9by5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjA7by5pc0luRXh0cmFjdD8oZS5pc29sYXRlZEluRXh0cmFjdC5wdXNoKG8pLG8ubm9kZS5pbmNsdWRlPXVyLkVYQ0xVREUsci5yZW1vdmVOb2RlKG4pKTpvLmlzT3V0RXh0cmFjdD8oZS5pc29sYXRlZE91dEV4dHJhY3QucHVzaChvKSxvLm5vZGUuaW5jbHVkZT11ci5FWENMVURFLHIucmVtb3ZlTm9kZShuKSk6am8uZXh0cmFjdElzb2xhdGVkTm9kZXNXaXRoQW5ub3RhdGlvbnNPbk9uZVNpZGUmJihzJiYhbD8oby5pc0luRXh0cmFjdD0hMCxlLmlzb2xhdGVkSW5FeHRyYWN0LnB1c2gobyksby5ub2RlLmluY2x1ZGU9dXIuRVhDTFVERSxyLnJlbW92ZU5vZGUobikpOmwmJiFzJiYoby5pc091dEV4dHJhY3Q9ITAsZS5pc29sYXRlZE91dEV4dHJhY3QucHVzaChvKSxvLm5vZGUuaW5jbHVkZT11ci5FWENMVURFLHIucmVtb3ZlTm9kZShuKSkpfX0pfWZ1bmN0aW9uIGhsZShlLHQscil7bGV0IG49ci5zcGxpdCgiLyIpLGk9bltuLmxlbmd0aC0xXS5tYXRjaCgvKC4qKTpcdysvKTsoaT09bnVsbD92b2lkIDA6aS5sZW5ndGgpPT09MiYmKG5bbi5sZW5ndGgtMV09aT09bnVsbD92b2lkIDA6aVsxXSk7bGV0IG89blswXSxhPXQuZ2V0UmVuZGVyTm9kZUJ5TmFtZShvKTtmb3IobGV0IHM9MTtzPG4ubGVuZ3RoJiZhLm5vZGUudHlwZSE9PWp0Lk9QO3MrKyl0LmJ1aWxkU3ViaGllcmFyY2h5KG8pLGEuZXhwYW5kZWQ9ITAsZS5zZXROb2RlRXhwYW5kZWQoYSksbys9Ii8iK25bc10sYT10LmdldFJlbmRlck5vZGVCeU5hbWUobyk7cmV0dXJuIGEubm9kZS5uYW1lfXZhciBtbGU9RWUoRGx0KCksMSksWmU9RWUoT2UoKSwxKTt2YXIgVHI9e2FuaW1hdGlvbjp7ZHVyYXRpb246MjUwfSxncmFwaDp7bWV0YTp7bm9kZVNlcDo1LHJhbmtTZXA6MjUsZWRnZVNlcDo1fSxzZXJpZXM6e25vZGVTZXA6NSxyYW5rU2VwOjI1LGVkZ2VTZXA6NX0scGFkZGluZzp7cGFkZGluZ1RvcDo0MCxwYWRkaW5nTGVmdDoyMH19LHN1YnNjZW5lOnttZXRhOntwYWRkaW5nVG9wOjEwLHBhZGRpbmdCb3R0b206MTAscGFkZGluZ0xlZnQ6MTAscGFkZGluZ1JpZ2h0OjEwLGxhYmVsSGVpZ2h0OjIwLGV4dHJhY3RYT2Zmc2V0OjE1LGV4dHJhY3RZT2Zmc2V0OjIwfSxzZXJpZXM6e3BhZGRpbmdUb3A6MTAscGFkZGluZ0JvdHRvbToxMCxwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAsbGFiZWxIZWlnaHQ6MTB9fSxub2RlU2l6ZTp7bWV0YTp7cmFkaXVzOjUsd2lkdGg6NjAsbWF4TGFiZWxXaWR0aDo1MixoZWlnaHQ6em4oKS5kb21haW4oWzEsMjAwXSkucmFuZ2UoWzE1LDYwXSkuY2xhbXAoITApLGV4cGFuZEJ1dHRvblJhZGl1czozfSxvcDp7d2lkdGg6MTUsaGVpZ2h0OjYscmFkaXVzOjMsbGFiZWxPZmZzZXQ6LTgsbWF4TGFiZWxXaWR0aDozMH0sc2VyaWVzOntleHBhbmRlZDp7cmFkaXVzOjEwLGxhYmVsT2Zmc2V0OjB9LHZlcnRpY2FsOnt3aWR0aDoxNixoZWlnaHQ6MTMsbGFiZWxPZmZzZXQ6LTEzfSxob3Jpem9udGFsOnt3aWR0aDoyNCxoZWlnaHQ6OCxyYWRpdXM6MTAsbGFiZWxPZmZzZXQ6LTEwfX0sYnJpZGdlOnt3aWR0aDoyMCxoZWlnaHQ6MjAscmFkaXVzOjIsbGFiZWxPZmZzZXQ6MH19LHNob3J0Y3V0U2l6ZTp7b3A6e3dpZHRoOjEwLGhlaWdodDo0fSxtZXRhOnt3aWR0aDoxMixoZWlnaHQ6NCxyYWRpdXM6MX0sc2VyaWVzOnt3aWR0aDoxNCxoZWlnaHQ6NH19LGFubm90YXRpb25zOntpbmJveFdpZHRoOjUwLG91dGJveFdpZHRoOjUwLHhPZmZzZXQ6MTAseU9mZnNldDozLGxhYmVsT2Zmc2V0OjIsbWF4TGFiZWxXaWR0aDo0MH0sY29uc3RhbnQ6e3NpemU6e3dpZHRoOjQsaGVpZ2h0OjR9fSxzZXJpZXM6e21heFN0YWNrQ291bnQ6MyxwYXJhbGxlbFN0YWNrT2Zmc2V0UmF0aW86LjIsdG93ZXJTdGFja09mZnNldFJhdGlvOi41fSxtaW5pbWFwOntzaXplOjE1MH19LGkzPTE0MDtmdW5jdGlvbiBiSChlKXtlLm5vZGUuaXNHcm91cE5vZGUmJnhjcihlKSxlLm5vZGUudHlwZT09PWp0Lk1FVEE/YmNyKGUpOmUubm9kZS50eXBlPT09anQuU0VSSUVTJiZ3Y3IoZSl9ZnVuY3Rpb24gdmNyKGUpe2UuaW5ib3hXaWR0aD1lLmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MD9Uci5hbm5vdGF0aW9ucy5pbmJveFdpZHRoOjAsZS5vdXRib3hXaWR0aD1lLm91dEFubm90YXRpb25zLmxpc3QubGVuZ3RoPjA/VHIuYW5ub3RhdGlvbnMub3V0Ym94V2lkdGg6MCxlLmNvcmVCb3gud2lkdGg9ZS53aWR0aCxlLmNvcmVCb3guaGVpZ2h0PWUuaGVpZ2h0O2xldCB0PWUuZGlzcGxheU5hbWUubGVuZ3RoLHI9MztlLndpZHRoPU1hdGgubWF4KGUuY29yZUJveC53aWR0aCtlLmluYm94V2lkdGgrZS5vdXRib3hXaWR0aCx0KnIpfWZ1bmN0aW9uIHhjcihlKXtsZXQgdD1lLmNvcmVHcmFwaC5ub2RlcygpLm1hcChyPT5lLmNvcmVHcmFwaC5ub2RlKHIpKS5jb25jYXQoZS5pc29sYXRlZEluRXh0cmFjdCxlLmlzb2xhdGVkT3V0RXh0cmFjdCxlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0KTtaZS5lYWNoKHQscj0+e3N3aXRjaChyLm5vZGUudHlwZSl7Y2FzZSBqdC5PUDpaZS5leHRlbmQocixUci5ub2RlU2l6ZS5vcCk7YnJlYWs7Y2FzZSBqdC5CUklER0U6WmUuZXh0ZW5kKHIsVHIubm9kZVNpemUuYnJpZGdlKTticmVhaztjYXNlIGp0Lk1FVEE6ci5leHBhbmRlZD9iSChyKTooWmUuZXh0ZW5kKHIsVHIubm9kZVNpemUubWV0YSksci5oZWlnaHQ9VHIubm9kZVNpemUubWV0YS5oZWlnaHQoci5ub2RlLmNhcmRpbmFsaXR5KSk7YnJlYWs7Y2FzZSBqdC5TRVJJRVM6aWYoci5leHBhbmRlZClaZS5leHRlbmQocixUci5ub2RlU2l6ZS5zZXJpZXMuZXhwYW5kZWQpLGJIKHIpO2Vsc2V7bGV0IGk9ci5ub2RlLmhhc05vbkNvbnRyb2xFZGdlcz9Uci5ub2RlU2l6ZS5zZXJpZXMudmVydGljYWw6VHIubm9kZVNpemUuc2VyaWVzLmhvcml6b250YWw7WmUuZXh0ZW5kKHIsaSl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIG5vZGUgdHlwZTogIityLm5vZGUudHlwZSl9ci5leHBhbmRlZHx8dmNyKHIpLFNjcihyKX0pfWZ1bmN0aW9uIGdsZShlLHQpe1plLmV4dGVuZChlLmdyYXBoKCkse25vZGVzZXA6dC5ub2RlU2VwLHJhbmtzZXA6dC5yYW5rU2VwLGVkZ2VzZXA6dC5lZGdlU2VwfSk7bGV0IHI9W10sbj1bXTtpZihaZS5lYWNoKGUubm9kZXMoKSxsPT57ZS5ub2RlKGwpLm5vZGUudHlwZT09PWp0LkJSSURHRT9yLnB1c2gobCk6bi5wdXNoKGwpfSksIW4ubGVuZ3RoKXJldHVybnt3aWR0aDowLGhlaWdodDowfTttbGUubGF5b3V0KGUpO2xldCBpPTEvMCxvPTEvMCxhPS0xLzAscz0tMS8wO3JldHVybiBaZS5lYWNoKG4sbD0+e2xldCBjPWUubm9kZShsKSx1PS41KmMud2lkdGgsaD1jLngtdSxmPWMueCt1O2k9aDxpP2g6aSxhPWY+YT9mOmE7bGV0IHA9LjUqYy5oZWlnaHQsZD1jLnktcCxnPWMueStwO289ZDxvP2Q6byxzPWc+cz9nOnN9KSxaZS5lYWNoKGUuZWRnZXMoKSxsPT57bGV0IGM9ZS5lZGdlKGwpO2lmKGMuc3RydWN0dXJhbClyZXR1cm47bGV0IHU9ZS5ub2RlKGMubWV0YWVkZ2UudiksaD1lLm5vZGUoYy5tZXRhZWRnZS53KTtpZihjLnBvaW50cy5sZW5ndGg9PT0zJiZNY3IoYy5wb2ludHMpKXtpZih1IT1udWxsKXtsZXQgZD11LmV4cGFuZGVkP3UueDp2MCh1KTtjLnBvaW50c1swXS54PWR9aWYoaCE9bnVsbCl7bGV0IGQ9aC5leHBhbmRlZD9oLng6djAoaCk7Yy5wb2ludHNbMl0ueD1kfWMucG9pbnRzPVtjLnBvaW50c1swXSxjLnBvaW50c1sxXV19bGV0IGY9Yy5wb2ludHNbYy5wb2ludHMubGVuZ3RoLTJdO2ghPW51bGwmJihjLnBvaW50c1tjLnBvaW50cy5sZW5ndGgtMV09ZGxlKGYsaCkpO2xldCBwPWMucG9pbnRzWzFdO3UhPW51bGwmJihjLnBvaW50c1swXT1kbGUocCx1KSksWmUuZWFjaChjLnBvaW50cyxkPT57aT1kLng8aT9kLng6aSxhPWQueD5hP2QueDphLG89ZC55PG8/ZC55Om8scz1kLnk+cz9kLnk6c30pfSksWmUuZWFjaChlLm5vZGVzKCksbD0+e2xldCBjPWUubm9kZShsKTtjLngtPWksYy55LT1vfSksWmUuZWFjaChlLmVkZ2VzKCksbD0+e1plLmVhY2goZS5lZGdlKGwpLnBvaW50cyxjPT57Yy54LT1pLGMueS09b30pfSkse3dpZHRoOmEtaSxoZWlnaHQ6cy1vfX1mdW5jdGlvbiBiY3IoZSl7bGV0IHQ9VHIuc3Vic2NlbmUubWV0YTtaZS5leHRlbmQoZSx0KSxaZS5leHRlbmQoZS5jb3JlQm94LGdsZShlLmNvcmVHcmFwaCxUci5ncmFwaC5tZXRhKSk7bGV0IHI9ZS5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg/WmUubWF4QnkoZS5pc29sYXRlZEluRXh0cmFjdCxjPT5jLndpZHRoKS53aWR0aDpudWxsO2UuaW5FeHRyYWN0Qm94LndpZHRoPXIhPW51bGw/cjowLGUuaW5FeHRyYWN0Qm94LmhlaWdodD1aZS5yZWR1Y2UoZS5pc29sYXRlZEluRXh0cmFjdCwoYyx1LGgpPT57bGV0IGY9aD4wP3QuZXh0cmFjdFlPZmZzZXQ6MDtyZXR1cm4gdS54PTAsdS55PWMrZit1LmhlaWdodC8yLGMrZit1LmhlaWdodH0sMCk7bGV0IG49ZS5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoP1plLm1heEJ5KGUuaXNvbGF0ZWRPdXRFeHRyYWN0LGM9PmMud2lkdGgpLndpZHRoOm51bGw7ZS5vdXRFeHRyYWN0Qm94LndpZHRoPW4hPW51bGw/bjowLGUub3V0RXh0cmFjdEJveC5oZWlnaHQ9WmUucmVkdWNlKGUuaXNvbGF0ZWRPdXRFeHRyYWN0LChjLHUsaCk9PntsZXQgZj1oPjA/dC5leHRyYWN0WU9mZnNldDowO3JldHVybiB1Lng9MCx1Lnk9YytmK3UuaGVpZ2h0LzIsYytmK3UuaGVpZ2h0fSwwKTtsZXQgaT1lLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD9aZS5tYXhCeShlLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LGM9PmMud2lkdGgpLndpZHRoOm51bGw7ZS5saWJyYXJ5RnVuY3Rpb25zQm94LndpZHRoPWkhPW51bGw/aTowLGUubGlicmFyeUZ1bmN0aW9uc0JveC5oZWlnaHQ9WmUucmVkdWNlKGUubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QsKGMsdSxoKT0+e2xldCBmPWg+MD90LmV4dHJhY3RZT2Zmc2V0OjA7cmV0dXJuIHUueD0wLHUueT1jK2YrdS5oZWlnaHQvMixjK2YrdS5oZWlnaHR9LDApO2xldCBvPTA7ZS5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg+MCYmbysrLGUuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aD4wJiZvKyssZS5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg+MCYmbysrLGUuY29yZUdyYXBoLm5vZGVDb3VudCgpPjAmJm8rKztsZXQgYT1Uci5zdWJzY2VuZS5tZXRhLmV4dHJhY3RYT2Zmc2V0LHM9bzw9MT8wOm8qYSxsPU1hdGgubWF4KGkzLGUuaW5FeHRyYWN0Qm94LndpZHRoK2Uub3V0RXh0cmFjdEJveC53aWR0aCk7ZS5jb3JlQm94LndpZHRoKz1sK3MrZS5saWJyYXJ5RnVuY3Rpb25zQm94LndpZHRoK3MsZS5jb3JlQm94LmhlaWdodD10LmxhYmVsSGVpZ2h0K01hdGgubWF4KGUuaW5FeHRyYWN0Qm94LmhlaWdodCxlLmNvcmVCb3guaGVpZ2h0LGUubGlicmFyeUZ1bmN0aW9uc0JveC5oZWlnaHQsZS5vdXRFeHRyYWN0Qm94LmhlaWdodCksZS53aWR0aD1lLmNvcmVCb3gud2lkdGgrdC5wYWRkaW5nTGVmdCt0LnBhZGRpbmdSaWdodCxlLmhlaWdodD1lLnBhZGRpbmdUb3ArZS5jb3JlQm94LmhlaWdodCtlLnBhZGRpbmdCb3R0b219ZnVuY3Rpb24gd2NyKGUpe2xldCB0PWUuY29yZUdyYXBoLHI9VHIuc3Vic2NlbmUuc2VyaWVzO1plLmV4dGVuZChlLHIpLFplLmV4dGVuZChlLmNvcmVCb3gsZ2xlKGUuY29yZUdyYXBoLFRyLmdyYXBoLnNlcmllcykpLFplLmVhY2godC5ub2RlcygpLG49Pnt0Lm5vZGUobikuZXhjbHVkZWQ9ITF9KSxlLndpZHRoPWUuY29yZUJveC53aWR0aCtyLnBhZGRpbmdMZWZ0K3IucGFkZGluZ1JpZ2h0LGUuaGVpZ2h0PWUuY29yZUJveC5oZWlnaHQrci5wYWRkaW5nVG9wK3IucGFkZGluZ0JvdHRvbX1mdW5jdGlvbiBTY3IoZSl7aWYoZS5leHBhbmRlZClyZXR1cm47bGV0IHQ9ZS5pbkFubm90YXRpb25zLmxpc3Qscj1lLm91dEFubm90YXRpb25zLmxpc3Q7WmUuZWFjaCh0LHU9PmZsZSh1KSksWmUuZWFjaChyLHU9PmZsZSh1KSk7bGV0IG49VHIuYW5ub3RhdGlvbnMsaT1aZS5yZWR1Y2UodCwodSxoLGYpPT57bGV0IHA9Zj4wP24ueU9mZnNldDowO3JldHVybiBoLmR4PS0oZS5jb3JlQm94LndpZHRoK2gud2lkdGgpLzItbi54T2Zmc2V0LGguZHk9dStwK2guaGVpZ2h0LzIsdStwK2guaGVpZ2h0fSwwKTtaZS5lYWNoKHQsdT0+e3UuZHktPWkvMix1LmxhYmVsT2Zmc2V0PW4ubGFiZWxPZmZzZXR9KTtsZXQgbz1aZS5yZWR1Y2UociwodSxoLGYpPT57bGV0IHA9Zj4wP24ueU9mZnNldDowO3JldHVybiBoLmR4PShlLmNvcmVCb3gud2lkdGgraC53aWR0aCkvMituLnhPZmZzZXQsaC5keT11K3AraC5oZWlnaHQvMix1K3AraC5oZWlnaHR9LDApO1plLmVhY2gocix1PT57dS5keS09by8yLHUubGFiZWxPZmZzZXQ9bi5sYWJlbE9mZnNldH0pO2xldCBhPU1hdGgubWluKGUuaGVpZ2h0LzItZS5yYWRpdXMsaS8yKTthPWE8MD8wOmE7bGV0IHM9em4oKS5kb21haW4oWzAsdC5sZW5ndGgtMV0pLnJhbmdlKFstYSxhXSk7WmUuZWFjaCh0LCh1LGgpPT57dS5wb2ludHM9W3tkeDp1LmR4K3Uud2lkdGgvMixkeTp1LmR5fSx7ZHg6LWUuY29yZUJveC53aWR0aC8yLGR5OnQubGVuZ3RoPjE/cyhoKTowfV19KTtsZXQgbD1NYXRoLm1pbihlLmhlaWdodC8yLWUucmFkaXVzLG8vMik7bD1sPDA/MDpsO2xldCBjPXpuKCkuZG9tYWluKFswLHIubGVuZ3RoLTFdKS5yYW5nZShbLWwsbF0pO1plLmVhY2gociwodSxoKT0+e3UucG9pbnRzPVt7ZHg6ZS5jb3JlQm94LndpZHRoLzIsZHk6ci5sZW5ndGg+MT9jKGgpOjB9LHtkeDp1LmR4LXUud2lkdGgvMixkeTp1LmR5fV19KSxlLmhlaWdodD1NYXRoLm1heChlLmhlaWdodCxpLG8pfWZ1bmN0aW9uIGZsZShlKXtzd2l0Y2goZS5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBfaS5DT05TVEFOVDpaZS5leHRlbmQoZSxUci5jb25zdGFudC5zaXplKTticmVhaztjYXNlIF9pLlNIT1JUQ1VUOmlmKGUubm9kZS50eXBlPT09anQuT1ApWmUuZXh0ZW5kKGUsVHIuc2hvcnRjdXRTaXplLm9wKTtlbHNlIGlmKGUubm9kZS50eXBlPT09anQuTUVUQSlaZS5leHRlbmQoZSxUci5zaG9ydGN1dFNpemUubWV0YSk7ZWxzZSBpZihlLm5vZGUudHlwZT09PWp0LlNFUklFUylaZS5leHRlbmQoZSxUci5zaG9ydGN1dFNpemUuc2VyaWVzKTtlbHNlIHRocm93IEVycm9yKCJJbnZhbGlkIG5vZGUgdHlwZTogIitlLm5vZGUudHlwZSk7YnJlYWs7Y2FzZSBfaS5TVU1NQVJZOlplLmV4dGVuZChlLFRyLmNvbnN0YW50LnNpemUpO2JyZWFrfX1mdW5jdGlvbiB2MChlKXtpZihlLmV4cGFuZGVkKXJldHVybiBlLng7bGV0IHQ9ZS5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoP2UuaW5ib3hXaWR0aDowO3JldHVybiBlLngtZS53aWR0aC8yK3QrZS5jb3JlQm94LndpZHRoLzJ9ZnVuY3Rpb24gcGxlKGUsdCl7bGV0IHI9dC54LWUueCxuPXQueS1lLnk7cmV0dXJuIDE4MCpNYXRoLmF0YW4obi9yKS9NYXRoLlBJfWZ1bmN0aW9uIE1jcihlKXtsZXQgdD1wbGUoZVswXSxlWzFdKTtmb3IobGV0IHI9MTtyPGUubGVuZ3RoLTE7cisrKXtsZXQgbj1wbGUoZVtyXSxlW3IrMV0pO2lmKE1hdGguYWJzKG4tdCk+MSlyZXR1cm4hMTt0PW59cmV0dXJuITB9ZnVuY3Rpb24gZGxlKGUsdCl7bGV0IHI9dC5leHBhbmRlZD90Lng6djAodCksbj10LnksaT1lLngtcixvPWUueS1uLGE9dC5leHBhbmRlZD90LndpZHRoOnQuY29yZUJveC53aWR0aCxzPXQuZXhwYW5kZWQ/dC5oZWlnaHQ6dC5jb3JlQm94LmhlaWdodCxsLGM7cmV0dXJuIE1hdGguYWJzKG8pKmEvMj5NYXRoLmFicyhpKSpzLzI/KG88MCYmKHM9LXMpLGw9bz09PTA/MDpzLzIqaS9vLGM9cy8yKTooaTwwJiYoYT0tYSksbD1hLzIsYz1pPT09MD8wOmEvMipvL2kpLHt4OnIrbCx5Om4rY319dmFyIEFsPW0wLEJpPXllLEVjcj0zMjAsVGNyPTE1MCxjUD1be2JhY2tncm91bmRfY29sb3I6IiNDQzJGMkMiLGxhYmVsOiJOYU4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0ZGOEQwMCIsbGFiZWw6Ii1cdTIyMUUifSx7YmFja2dyb3VuZF9jb2xvcjoiI0VBRUFFQSIsbGFiZWw6Ii0ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0E1QTVBNSIsbGFiZWw6IjAifSx7YmFja2dyb3VuZF9jb2xvcjoiIzI2MjYyNiIsbGFiZWw6IisifSx7YmFja2dyb3VuZF9jb2xvcjoiIzAwM0VENCIsbGFiZWw6IitcdTIyMUUifV07ZnVuY3Rpb24geWxlKGUsdCxyLG4pe2xldCBpPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1udWxsO3RyeXtpZihvPXQuZ2V0QkJveCgpLChvPT1udWxsP3ZvaWQgMDpvLndpZHRoKT09PTApcmV0dXJufWNhdGNoKGMpe3JldHVybn1sZXQgYT0uOSpNYXRoLm1pbihpLndpZHRoLyhvPT1udWxsP3ZvaWQgMDpvLndpZHRoKSxpLmhlaWdodC8obz09bnVsbD92b2lkIDA6by5oZWlnaHQpLDIpLHM9VHIuZ3JhcGgsbD1qaC5zY2FsZShhKS50cmFuc2xhdGUocy5wYWRkaW5nLnBhZGRpbmdMZWZ0LHMucGFkZGluZy5wYWRkaW5nVG9wKTtIdChlKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKS5jYWxsKHIudHJhbnNmb3JtLGwpLm9uKCJlbmQuZml0dGVkIiwoKT0+e3Iub24oImVuZC5maXR0ZWQiLG51bGwpLG4oKX0pfWZ1bmN0aW9uIHZsZShlLHQscixuKXtsZXQgaT1IdCh0KS5zZWxlY3QoYFtkYXRhLW5hbWU9IiR7ZX0iXWApLm5vZGUoKTtpZighaSlyZXR1cm4gY29uc29sZS53YXJuKGBwYW5Ub05vZGUoKSBmYWlsZWQgZm9yIG5vZGUgbmFtZSAiJHtlfSJgKSwhMTtsZXQgbz1pLmdldEJCb3goKSxhPWkuZ2V0U2NyZWVuQ1RNKCkscz10LmNyZWF0ZVNWR1BvaW50KCksbD10LmNyZWF0ZVNWR1BvaW50KCk7cy54PW8ueCxzLnk9by55LGwueD1vLngrby53aWR0aCxsLnk9by55K28uaGVpZ2h0LHM9cy5tYXRyaXhUcmFuc2Zvcm0oYSksbD1sLm1hdHJpeFRyYW5zZm9ybShhKTtsZXQgYz0ocCxkLGcsXyk9PiEocD5nJiZkPF8pLHU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxoPXUubGVmdCt1LndpZHRoLUVjcixmPXUudG9wK3UuaGVpZ2h0LVRjcjtpZihjKHMueCxsLngsdS5sZWZ0LGgpfHxjKHMueSxsLnksdS50b3AsZikpe2xldCBwPShzLngrbC54KS8yLGQ9KHMueStsLnkpLzIsZz11LmxlZnQrdS53aWR0aC8yLXAsXz11LnRvcCt1LmhlaWdodC8yLWQseT1uMih0KTtyZXR1cm4gSHQodCkudHJhbnNpdGlvbigpLmR1cmF0aW9uKDUwMCkuY2FsbChuLnRyYW5zbGF0ZUJ5LGcveS5rLF8veS5rKSwhMH1yZXR1cm4hMX1mdW5jdGlvbiB4bGUoZSx0KXtsZXQgcj10Lm5vZGUudHlwZT09PWp0LlNFUklFUz8wOlRyLnN1YnNjZW5lLm1ldGEubGFiZWxIZWlnaHQ7bzMoQWwoZSwiZyIsQmkuU2NlbmUuQ09SRSksMCxyKTtsZXQgbj10Lmlzb2xhdGVkSW5FeHRyYWN0Lmxlbmd0aD4wLGk9dC5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoPjAsbz10LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD4wLGE9VHIuc3Vic2NlbmUubWV0YS5leHRyYWN0WE9mZnNldCxzPTA7aWYobiYmKHMrPXQub3V0RXh0cmFjdEJveC53aWR0aCksaSYmKHMrPXQub3V0RXh0cmFjdEJveC53aWR0aCksbil7bGV0IGw9dC5jb3JlQm94LndpZHRoO3M8aTM/bD1sLWkzK3QuaW5FeHRyYWN0Qm94LndpZHRoLzI6bD1sLXQuaW5FeHRyYWN0Qm94LndpZHRoLzItdC5vdXRFeHRyYWN0Qm94LndpZHRoLShpP2E6MCksbD1sLXQubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC0obz9hOjApLG8zKEFsKGUsImciLEJpLlNjZW5lLklORVhUUkFDVCksbCxyKX1pZihpKXtsZXQgbD10LmNvcmVCb3gud2lkdGg7czxpMz9sPWwtaTMrdC5vdXRFeHRyYWN0Qm94LndpZHRoLzI6bC09dC5vdXRFeHRyYWN0Qm94LndpZHRoLzIsbD1sLXQubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC0obz9hOjApLG8zKEFsKGUsImciLEJpLlNjZW5lLk9VVEVYVFJBQ1QpLGwscil9aWYobyl7bGV0IGw9dC5jb3JlQm94LndpZHRoLXQubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC8yO28zKEFsKGUsImciLEJpLlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLGwscil9fWZ1bmN0aW9uIGJsZShlLHQpe0h0KGUpLm9uKCJjbGljayIsKCk9Pnt0LmZpcmUoImdyYXBoLXNlbGVjdCIpfSl9ZnVuY3Rpb24gbzMoZSx0LHIpe2UuYXR0cigidHJhbnNmb3JtIikhPW51bGwmJihlPWUudHJhbnNpdGlvbigicG9zaXRpb24iKSksZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyIsIityKyIpIil9ZnVuY3Rpb24gemQoZSx0LHIsbixpKXtlLnRyYW5zaXRpb24oKS5hdHRyKCJ4Iix0LW4vMikuYXR0cigieSIsci1pLzIpLmF0dHIoIndpZHRoIixuKS5hdHRyKCJoZWlnaHQiLGkpfWZ1bmN0aW9uIHdsZShlLHQscixuLGkpe2xldCBvPWkvMixhPW4vMixzPVtbdCxyLW9dLFt0K2EscitvXSxbdC1hLHIrb11dO2UudHJhbnNpdGlvbigpLmF0dHIoInBvaW50cyIscy5tYXAobD0+bC5qb2luKCIsIikpLmpvaW4oIiAiKSl9ZnVuY3Rpb24gU2xlKGUsdCl7bGV0IHI9djAodCksbj10LmV4cGFuZGVkP3Qud2lkdGg6dC5jb3JlQm94LndpZHRoLGk9dC5leHBhbmRlZD90LmhlaWdodDp0LmNvcmVCb3guaGVpZ2h0LG89cituLzItNixhPXQueS1pLzIrNjt0Lm5vZGUudHlwZT09PWp0LlNFUklFUyYmIXQuZXhwYW5kZWQmJihvKz0xMCxhLT0yKTtsZXQgcz0idHJhbnNsYXRlKCIrbysiLCIrYSsiKSI7ZS5zZWxlY3RBbGwoInBhdGgiKS50cmFuc2l0aW9uKCkuYXR0cigidHJhbnNmb3JtIixzKSxlLnNlbGVjdCgiY2lyY2xlIikudHJhbnNpdGlvbigpLmF0dHIoe2N4Om8sY3k6YSxyOlRyLm5vZGVTaXplLm1ldGEuZXhwYW5kQnV0dG9uUmFkaXVzfSl9ZnVuY3Rpb24gd0goZSx0LHIsbixpKXtlLnRyYW5zaXRpb24oKS5hdHRyKCJjeCIsdCkuYXR0cigiY3kiLHIpLmF0dHIoInJ4IixuLzIpLmF0dHIoInJ5IixpLzIpfWZ1bmN0aW9uIF9sZShlLHQpe3JldHVybiB0P2UudG9GaXhlZCgwKTpNYXRoLmFicyhlKT49MT9lLnRvRml4ZWQoMSk6ZS50b0V4cG9uZW50aWFsKDEpfWZ1bmN0aW9uIENjcihlLHQscixuKXtsZXQgaT0iRGV2aWNlOiAiK2UuZGV2aWNlX25hbWUrYApgO2krPSJkdHlwZTogIitlLmR0eXBlK2AKYDtsZXQgbz0iKHNjYWxhcikiO2Uuc2hhcGUubGVuZ3RoPjAmJihvPSIoIitlLnNoYXBlLmpvaW4oIiwiKSsiKSIpLGkrPWAKc2hhcGU6IGArbytgCgpgLGkrPSIjKGVsZW1lbnRzKTogIit0K2AKYDtsZXQgYT1bXTtmb3IobGV0IHM9MDtzPHIubGVuZ3RoO3MrKylyW3NdPjAmJmEucHVzaCgiIygiK2NQW3NdLmxhYmVsKyIpOiAiK3Jbc10pO3JldHVybiBpKz1hLmpvaW4oIiwgIikrYAoKYCxuLm1heD49bi5taW4mJihpKz0ibWluOiAiK24ubWluKyIsIG1heDogIituLm1heCtgCmAsaSs9Im1lYW46ICIrbi5tZWFuKyIsIHN0ZGRldjogIituLnN0ZGRldiksaX1mdW5jdGlvbiBBY3IoZSx0LHIsbixpPTYwLG89MTAsYT0wLHMpe2lmKEh0KGUucGFyZW50Tm9kZSkuc2VsZWN0QWxsKCIuaGVhbHRoLXBpbGwiKS5yZW1vdmUoKSwhdClyZXR1cm47bGV0IGw9dC52YWx1ZSxjPWwuc2xpY2UoMiw4KSx1PWNbMF0saD1jWzFdLGY9Y1s1XSxwPWxbMV0sZD17bWluOmxbOF0sbWF4OmxbOV0sbWVhbjpsWzEwXSxzdGRkZXY6TWF0aC5zcXJ0KGxbMTFdKX07aT09bnVsbCYmKGk9NjApLG89PW51bGwmJihvPTEwKSxhPT1udWxsJiYoYT0wKSxyIT1udWxsJiZyLm5vZGUudHlwZT09PWp0Lk9QJiYoaS89MixvLz0yKTtsZXQgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoWXUsImciKTtnLmNsYXNzTGlzdC5hZGQoImhlYWx0aC1waWxsIik7bGV0IF89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFl1LCJkZWZzIik7Zy5hcHBlbmRDaGlsZChfKTtsZXQgeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoWXUsImxpbmVhckdyYWRpZW50IikseD0iaGVhbHRoLXBpbGwtZ3JhZGllbnQtIituO3kuc2V0QXR0cmlidXRlKCJpZCIseCk7bGV0IGI9MCxTPSIwJSI7Zm9yKGxldCBEPTA7RDxjLmxlbmd0aDtEKyspe2lmKCFjW0RdKWNvbnRpbnVlO2IrPWNbRF07bGV0IEI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFl1LCJzdG9wIik7Qi5zZXRBdHRyaWJ1dGUoIm9mZnNldCIsUyksQi5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLGNQW0RdLmJhY2tncm91bmRfY29sb3IpLHkuYXBwZW5kQ2hpbGQoQik7bGV0IEk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFl1LCJzdG9wIiksTD1iKjEwMC9wKyIlIjtJLnNldEF0dHJpYnV0ZSgib2Zmc2V0IixMKSxJLnNldEF0dHJpYnV0ZSgic3RvcC1jb2xvciIsY1BbRF0uYmFja2dyb3VuZF9jb2xvcikseS5hcHBlbmRDaGlsZChJKSxTPUx9Xy5hcHBlbmRDaGlsZCh5KTtsZXQgQz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoWXUsInJlY3QiKTtDLnNldEF0dHJpYnV0ZSgiZmlsbCIsInVybCgjIit4KyIpIiksQy5zZXRBdHRyaWJ1dGUoIndpZHRoIixTdHJpbmcoaSkpLEMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLFN0cmluZyhvKSksQy5zZXRBdHRyaWJ1dGUoInkiLFN0cmluZyhhKSksZy5hcHBlbmRDaGlsZChDKTtsZXQgUD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoWXUsInRpdGxlIik7UC50ZXh0Q29udGVudD1DY3IodCxwLGMsZCksZy5hcHBlbmRDaGlsZChQKTtsZXQgaz0hMTtpZihyIT1udWxsKXtsZXQgRD1yLngtaS8yLEI9ci55LW8tci5oZWlnaHQvMi0yO2lmKHIubGFiZWxPZmZzZXQ8MCYmKEIrPXIubGFiZWxPZmZzZXQpLGcuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitEKyIsICIrQisiKSIpLGNbMl18fGNbM118fGNbNF0pe2xldCBMPXIubm9kZS5hdHRyO2lmKEwmJkwubGVuZ3RoKXtmb3IobGV0IFI9MDtSPEwubGVuZ3RoO1IrKylpZihMW1JdLmtleT09PSJUIil7bGV0IEY9TFtSXS52YWx1ZS50eXBlO2s9RiYmL15EVF8oQk9PTHxJTlR8VUlOVCkvLnRlc3QoRik7YnJlYWt9fX19bGV0IE89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFl1LCJ0ZXh0Iik7aWYoTnVtYmVyLmlzRmluaXRlKGQubWluKSYmTnVtYmVyLmlzRmluaXRlKGQubWF4KSl7bGV0IEQ9X2xlKGQubWluLGspLEI9X2xlKGQubWF4LGspO2lmKHA+MT9PLnRleHRDb250ZW50PUQrIiB+ICIrQjpPLnRleHRDb250ZW50PUQsdT4wfHxoPjB8fGY+MCl7Ty50ZXh0Q29udGVudCs9IiAoIjtsZXQgST1bXTt1PjAmJkkucHVzaChgTmFOXHhENyR7dX1gKSxoPjAmJkkucHVzaChgLVx1MjIxRVx4RDcke2h9YCksZj4wJiZJLnB1c2goYCtcdTIyMUVceEQ3JHtmfWApLE8udGV4dENvbnRlbnQrPUkuam9pbigiOyAiKSsiKSJ9fWVsc2UgTy50ZXh0Q29udGVudD0iKE5vIGZpbml0ZSBlbGVtZW50cykiO08uY2xhc3NMaXN0LmFkZCgiaGVhbHRoLXBpbGwtc3RhdHMiKSxzPT1udWxsJiYocz1pLzIpLE8uc2V0QXR0cmlidXRlKCJ4IixTdHJpbmcocykpLE8uc2V0QXR0cmlidXRlKCJ5IixTdHJpbmcoYS0yKSksZy5hcHBlbmRDaGlsZChPKSx6dChlLnBhcmVudE5vZGUpLmFwcGVuZENoaWxkKGcpfWZ1bmN0aW9uIE1sZShlLHQscil7aWYoIXQpcmV0dXJuO2xldCBuPTE7SHQoZSkuc2VsZWN0QWxsKCJnLm5vZGVzaGFwZSIpLmVhY2goZnVuY3Rpb24obyl7bGV0IGE9dFtvLm5vZGUubmFtZV0scz1hP2Fbcl06bnVsbDtBY3IodGhpcyxzLG8sbisrKX0pfXZhciBHbjsoZnVuY3Rpb24oZSl7ZS5OT05FPSJub25lIixlLkNPTVBVVEVfVElNRT0iY29tcHV0ZV90aW1lIixlLkRFVklDRT0iZGV2aWNlIixlLk1FTU9SWT0ibWVtb3J5IixlLk9QX0NPTVBBVElCSUxJVFk9Im9wX2NvbXBhdGliaWxpdHkiLGUuU1RSVUNUVVJFPSJzdHJ1Y3R1cmUiLGUuWExBX0NMVVNURVI9InhsYV9jbHVzdGVyIn0pKEdufHwoR249e30pKTt2YXIgZlA9RWUoT2UoKSwxKTt2YXIgSGk9RWUoT2UoKSwxKTtmdW5jdGlvbiBQY3IoZSl7bGV0IHQ9MCxyPTAsbj1lO2Zvcig7biYmbi5vZmZzZXRMZWZ0Pj0wJiZuLm9mZnNldFRvcD49MDspdCs9bi5vZmZzZXRMZWZ0LW4uc2Nyb2xsTGVmdCxyKz1uLm9mZnNldFRvcC1uLnNjcm9sbFRvcCxuPW4ub2Zmc2V0UGFyZW50O3JldHVybntsZWZ0OnQsdG9wOnJ9fWZ1bmN0aW9uIEdsdChlLHQpe2xldCByPWUuZ2V0Q29udGV4dE1lbnUoKSxuPUh0KGUuZ2V0Q29udGV4dE1lbnUoKSk7cmV0dXJuIGZ1bmN0aW9uKGksbyl7bGV0IGE9cXQscz1QY3IoZSk7bi5zdHlsZSgiZGlzcGxheSIsImJsb2NrIikuc3R5bGUoImxlZnQiLGEuY2xpZW50WC1zLmxlZnQrMSsicHgiKS5zdHlsZSgidG9wIixhLmNsaWVudFktcy50b3ArMSsicHgiKSxhLnByZXZlbnREZWZhdWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKTtmdW5jdGlvbiBsKHUpe3UmJnUuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMocil8fChuLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixsLHtjYXB0dXJlOiEwfSkpfWRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixsLHtjYXB0dXJlOiEwfSksbi50ZXh0KCIiKSxuLmFwcGVuZCgidWwiKS5zZWxlY3RBbGwoImxpIikuZGF0YSh0KS5lbnRlcigpLmFwcGVuZCgibGkiKS5vbigiY2xpY2siLCh1LGgpPT57dS5hY3Rpb24odGhpcyxpLG8pLGwoKX0pLnRleHQoZnVuY3Rpb24odSl7cmV0dXJuIHUudGl0bGUoaSl9KX19dmFyIEVIPUVlKE9lKCksMSk7dmFyIExjcj0iXHhENyIsRWxlPVViKCkuZG9tYWluKFtLNCxaNF0pLnJhbmdlKFsic21hbGwiLCJtZWRpdW0iLCJsYXJnZSIsInhsYXJnZSJdKSxrY3I9Mi41O2Z1bmN0aW9uIHVQKGUpe3JldHVybiBlLnYrS3NlK2Uud31mdW5jdGlvbiBBbGUoZSx0LHIpe2xldCBuPXIsaT1bXTtpPUVILnJlZHVjZSh0LmVkZ2VzKCksKHMsbCk9PntsZXQgYz10LmVkZ2UobCk7cmV0dXJuIHMucHVzaCh7djpsLnYsdzpsLncsbGFiZWw6Y30pLHN9LGkpO2xldCBhPVBuKGUsImciLHllLkVkZ2UuQ09OVEFJTkVSKS5zZWxlY3RBbGwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfSkuZGF0YShpLHVQKTtyZXR1cm4gYS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIix5ZS5FZGdlLkdST1VQKS5hdHRyKCJkYXRhLWVkZ2UiLHVQKS5lYWNoKGZ1bmN0aW9uKHMpe2xldCBsPUh0KHRoaXMpO3MubGFiZWwuZWRnZUdyb3VwPWwsbi5fZWRnZUdyb3VwSW5kZXhbdVAocyldPWwsbi5oYW5kbGVFZGdlU2VsZWN0ZWQmJmwub24oImNsaWNrIixjPT57cXQuc3RvcFByb3BhZ2F0aW9uKCksbi5maXJlKCJlZGdlLXNlbGVjdCIse2VkZ2VEYXRhOmMsZWRnZUdyb3VwOmx9KX0pLGpsdChsLHMsbil9KS5tZXJnZShhKS5lYWNoKGZ1bmN0aW9uKCl7TmNyKHIsdGhpcyl9KS5lYWNoKGZ1bmN0aW9uKHMpe0RjcihIdCh0aGlzKSxzLG4pfSksYS5leGl0KCkuZWFjaChzPT57ZGVsZXRlIG4uX2VkZ2VHcm91cEluZGV4W3VQKHMpXX0pLnJlbW92ZSgpLGF9ZnVuY3Rpb24gV2x0KGUsdCl7bGV0IHI9dC5nZXROb2RlQnlOYW1lKGUudik7aWYoci5vdXRwdXRTaGFwZXM9PW51bGx8fEVILmlzRW1wdHkoci5vdXRwdXRTaGFwZXMpKXJldHVybiBudWxsO2xldCBuPXIub3V0cHV0U2hhcGVzW2Uub3V0cHV0VGVuc29yS2V5XTtyZXR1cm4gbj09bnVsbD9udWxsOm4ubGVuZ3RoPT09MD8ic2NhbGFyIjpuLm1hcChpPT5pPT09LTE/Ij8iOmkpLmpvaW4oTGNyKX1mdW5jdGlvbiBZbHQoZSx0KXtyZXR1cm4gdC5lZGdlTGFiZWxGdW5jdGlvbj90LmVkZ2VMYWJlbEZ1bmN0aW9uKGUsdCk6ZS5iYXNlRWRnZUxpc3QubGVuZ3RoPjE/ZS5iYXNlRWRnZUxpc3QubGVuZ3RoKyIgdGVuc29ycyI6V2x0KGUuYmFzZUVkZ2VMaXN0WzBdLHQpfWZ1bmN0aW9uIFRsZShlLHQscil7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFl1LCJwYXRoIik7Zm9yKGxldCBpPTE7aTxlLmxlbmd0aDtpKyspaWYobi5zZXRBdHRyaWJ1dGUoImQiLHIoZS5zbGljZSgwLGkpKSksbi5nZXRUb3RhbExlbmd0aCgpPnQpcmV0dXJuIGktMTtyZXR1cm4gZS5sZW5ndGgtMX1mdW5jdGlvbiBDbGUoZSx0LHIpe2xldCBuPXl1KCkueCh1PT51LngpLnkodT0+dS55KSxpPUh0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIikpLmF0dHIoImQiLG4oZSkpLG89K3QuYXR0cigibWFya2VyV2lkdGgiKSxhPXQuYXR0cigidmlld0JveCIpLnNwbGl0KCIgIikubWFwKE51bWJlcikscz1hWzJdLWFbMF0sbD0rdC5hdHRyKCJyZWZYIiksYz1pLm5vZGUoKTtpZihyKXtsZXQgdT0xLWwvcyxoPW8qdSxmPWMuZ2V0UG9pbnRBdExlbmd0aChoKSxwPVRsZShlLGgsbik7cmV0dXJuIGVbcC0xXT17eDpmLngseTpmLnl9LGUuc2xpY2UocC0xKX1lbHNle2xldCB1PTEtbC9zLGg9Yy5nZXRUb3RhbExlbmd0aCgpLW8qdSxmPWMuZ2V0UG9pbnRBdExlbmd0aChoKSxwPVRsZShlLGgsbik7cmV0dXJuIGVbcF09e3g6Zi54LHk6Zi55fSxlLnNsaWNlKDAscCsxKX19ZnVuY3Rpb24gamx0KGUsdCxyLG4pe249bnx8eWUuRWRnZS5MSU5FLHQubGFiZWwmJnQubGFiZWwuc3RydWN0dXJhbCYmKG4rPSIgIit5ZS5FZGdlLlNUUlVDVFVSQUwpLHQubGFiZWwmJnQubGFiZWwubWV0YWVkZ2UmJnQubGFiZWwubWV0YWVkZ2UubnVtUmVmRWRnZXMmJihuKz0iICIreWUuRWRnZS5SRUZFUkVOQ0VfRURHRSksci5oYW5kbGVFZGdlU2VsZWN0ZWQmJihuKz0iICIreWUuRWRnZS5TRUxFQ1RBQkxFKTtsZXQgaT0icGF0aF8iK3VQKHQpLG87aWYoci5yZW5kZXJIaWVyYXJjaHkuZWRnZVdpZHRoRnVuY3Rpb24pbz1yLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhGdW5jdGlvbih0LG4pO2Vsc2V7bGV0IGM9MTt0LmxhYmVsIT1udWxsJiZ0LmxhYmVsLm1ldGFlZGdlIT1udWxsJiYoYz10LmxhYmVsLm1ldGFlZGdlLnRvdGFsU2l6ZSksbz1yLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhTaXplZEJhc2VkU2NhbGUoYyl9bGV0IGE9ZS5hcHBlbmQoInBhdGgiKS5hdHRyKCJpZCIsaSkuYXR0cigiY2xhc3MiLG4pLnN0eWxlKCJzdHJva2Utd2lkdGgiLG8rInB4Iik7aWYodC5sYWJlbCYmdC5sYWJlbC5tZXRhZWRnZSlpZih0LmxhYmVsLm1ldGFlZGdlLm51bVJlZkVkZ2VzKXtsZXQgYz1gcmVmZXJlbmNlLWFycm93aGVhZC0ke0VsZShvKX1gO2Euc3R5bGUoIm1hcmtlci1zdGFydCIsYHVybCgjJHtjfSlgKSx0LmxhYmVsLnN0YXJ0TWFya2VySWQ9Y31lbHNle2xldCBjPWBkYXRhZmxvdy1hcnJvd2hlYWQtJHtFbGUobyl9YDthLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke2N9KWApLHQubGFiZWwuZW5kTWFya2VySWQ9Y31pZih0LmxhYmVsPT1udWxsfHx0LmxhYmVsLm1ldGFlZGdlPT1udWxsKXJldHVybjtsZXQgcz1ZbHQodC5sYWJlbC5tZXRhZWRnZSxyLnJlbmRlckhpZXJhcmNoeSk7aWYocz09bnVsbClyZXR1cm47bGV0IGw9bz5rY3I/ImNlbnRyYWwiOiJ0ZXh0LWFmdGVyLWVkZ2UiO2UuYXBwZW5kKCJ0ZXh0IikuYXBwZW5kKCJ0ZXh0UGF0aCIpLmF0dHIoInhsaW5rOmhyZWYiLCIjIitpKS5hdHRyKCJzdGFydE9mZnNldCIsIjUwJSIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikudGV4dChzKX12YXIgTUg9eXUoKS5jdXJ2ZShVOCkueChlPT5lLngpLnkoZT0+ZS55KTtmdW5jdGlvbiBSY3IoZSx0LHIsbixpKXtsZXQgbz1yLmxhYmVsLGE9by5hZGpvaW5pbmdNZXRhZWRnZSxzPW8ucG9pbnRzLHtzaGFkb3dSb290Omx9PWU7aWYoci5sYWJlbC5zdGFydE1hcmtlcklkJiYocz1DbGUocyxIdChsPT1udWxsP3ZvaWQgMDpsLnF1ZXJ5U2VsZWN0b3IoIiMiK3IubGFiZWwuc3RhcnRNYXJrZXJJZCkpLCEwKSksci5sYWJlbC5lbmRNYXJrZXJJZCYmKHM9Q2xlKHMsSHQobD09bnVsbD92b2lkIDA6bC5xdWVyeVNlbGVjdG9yKCIjIityLmxhYmVsLmVuZE1hcmtlcklkKSksITEpKSwhYSlyZXR1cm4gZWMoaSxNSChzKSk7bGV0IGM9YS5lZGdlR3JvdXAubm9kZSgpLmZpcnN0Q2hpbGQsdT1vLm1ldGFlZGdlLmluYm91bmQ7cmV0dXJuIGZ1bmN0aW9uKGgpe3ZhciBmO2xldCBwPWMuZ2V0UG9pbnRBdExlbmd0aCh1P2MuZ2V0VG90YWxMZW5ndGgoKTowKS5tYXRyaXhUcmFuc2Zvcm0oYy5nZXRDVE0oKSkubWF0cml4VHJhbnNmb3JtKChmPXQuZ2V0Q1RNKCkpPT09bnVsbHx8Zj09PXZvaWQgMD92b2lkIDA6Zi5pbnZlcnNlKCkpLGQ9dT8wOnMubGVuZ3RoLTE7cmV0dXJuIHNbZF0ueD1wLngsc1tkXS55PXAueSxNSChzKX19ZnVuY3Rpb24gTmNyKGUsdCl7SHQodCkuc2VsZWN0KCJwYXRoLiIreWUuRWRnZS5MSU5FKS50cmFuc2l0aW9uKCkuYXR0clR3ZWVuKCJkIixmdW5jdGlvbihyLG4saSl7cmV0dXJuIFJjcihlLHRoaXMscixuLGkpfSl9ZnVuY3Rpb24gRGNyKGUsdCxyKXtlLmNsYXNzZWQoImZhZGVkIix0LmxhYmVsLmlzRmFkZWRPdXQpO2xldCBuPXQubGFiZWwubWV0YWVkZ2U7ZS5zZWxlY3QoInBhdGguIit5ZS5FZGdlLkxJTkUpLmNsYXNzZWQoImNvbnRyb2wtZGVwIixuJiYhbi5udW1SZWd1bGFyRWRnZXMpfWZ1bmN0aW9uIFRIKGUsdCxyKXtsZXQgaT1QbihlLCJnIix5ZS5Ob2RlLkNPTlRBSU5FUikuc2VsZWN0QWxsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pLmRhdGEodCxvPT5vLm5vZGUubmFtZSsiOiIrby5ub2RlLnR5cGUpO3JldHVybiBpLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiZGF0YS1uYW1lIixvPT5vLm5vZGUubmFtZSkuZWFjaChmdW5jdGlvbihvKXtsZXQgYT1IdCh0aGlzKTtyLmFkZE5vZGVHcm91cChvLm5vZGUubmFtZSxhKX0pLm1lcmdlKGkpLmF0dHIoImNsYXNzIixvPT55ZS5Ob2RlLkdST1VQKyIgIitPbGUobykpLmVhY2goZnVuY3Rpb24obyl7bGV0IGE9SHQodGhpcykscz1QbihhLCJnIix5ZS5Bbm5vdGF0aW9uLklOQk9YKTtrbGUocyxvLmluQW5ub3RhdGlvbnMsbyxyKTtsZXQgbD1QbihhLCJnIix5ZS5Bbm5vdGF0aW9uLk9VVEJPWCk7a2xlKGwsby5vdXRBbm5vdGF0aW9ucyxvLHIpO2xldCBjPURsZShhLG8seWUuTm9kZS5TSEFQRSk7by5ub2RlLmlzR3JvdXBOb2RlJiZ6Y3IoYyxvLHIpLExsZShjLG8sciksT2NyKGEsbyxyKTtsZXQgdT1CY3IoYSxvLHIpO0xsZSh1LG8scixvLm5vZGUudHlwZT09PWp0Lk1FVEEpLGEzKGEsbyxyKSxWY3IoYSxvKX0pLGkuZXhpdCgpLmVhY2goZnVuY3Rpb24obyl7ci5yZW1vdmVOb2RlR3JvdXAoby5ub2RlLm5hbWUpO2xldCBhPUh0KHRoaXMpO28uaW5Bbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wJiZhLnNlbGVjdCgiLiIreWUuQW5ub3RhdGlvbi5JTkJPWCkuc2VsZWN0QWxsKCIuIit5ZS5Bbm5vdGF0aW9uLkdST1VQKS5lYWNoKHM9PntyLnJlbW92ZUFubm90YXRpb25Hcm91cChzLG8pfSksby5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wJiZhLnNlbGVjdCgiLiIreWUuQW5ub3RhdGlvbi5PVVRCT1gpLnNlbGVjdEFsbCgiLiIreWUuQW5ub3RhdGlvbi5HUk9VUCkuZWFjaChzPT57ci5yZW1vdmVBbm5vdGF0aW9uR3JvdXAocyxvKX0pfSkucmVtb3ZlKCksaX1mdW5jdGlvbiBPY3IoZSx0LHIpe2lmKHQubm9kZS5pc0dyb3VwTm9kZSl7aWYodC5leHBhbmRlZClyZXR1cm4gdGN0KGUsdCxyLHllLlN1YnNjZW5lLkdST1VQKTtBbChlLCJnIix5ZS5TdWJzY2VuZS5HUk9VUCkucmVtb3ZlKCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gSWxlKGUsdCl7bGV0IHI9dC54LXQud2lkdGgvMit0LnBhZGRpbmdMZWZ0LG49dC55LXQuaGVpZ2h0LzIrdC5wYWRkaW5nVG9wLGk9QWwoZSwiZyIseWUuU3Vic2NlbmUuR1JPVVApO28zKGkscixuKX1mdW5jdGlvbiB6Y3IoZSx0LHIpe2xldCBuPVBuKGUsImciLHllLk5vZGUuQlVUVE9OX0NPTlRBSU5FUik7UG4obiwiY2lyY2xlIix5ZS5Ob2RlLkJVVFRPTl9DSVJDTEUpLFBuKG4sInBhdGgiLHllLk5vZGUuRVhQQU5EX0JVVFRPTikuYXR0cigiZCIsIk0wLC0yLjIgVjIuMiBNLTIuMiwwIEgyLjIiKSxQbihuLCJwYXRoIix5ZS5Ob2RlLkNPTExBUFNFX0JVVFRPTikuYXR0cigiZCIsIk0tMi4yLDAgSDIuMiIpLG4ub24oImNsaWNrIixpPT57cXQuc3RvcFByb3BhZ2F0aW9uKCksci5maXJlKCJub2RlLXRvZ2dsZS1leHBhbmQiLHtuYW1lOmkubm9kZS5uYW1lfSl9KSxTbGUobix0KX1mdW5jdGlvbiBMbGUoZSx0LHIsbil7aWYobil7ZS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKTtyZXR1cm59bGV0IGk9R2x0KHIsUmxlKHQubm9kZSxyKSk7ZS5vbigiZGJsY2xpY2siLG89PntyLmZpcmUoIm5vZGUtdG9nZ2xlLWV4cGFuZCIse25hbWU6by5ub2RlLm5hbWV9KX0pLm9uKCJtb3VzZW92ZXIiLG89PntyLmlzTm9kZUV4cGFuZGVkKG8pfHxyLmZpcmUoIm5vZGUtaGlnaGxpZ2h0Iix7bmFtZTpvLm5vZGUubmFtZX0pfSkub24oIm1vdXNlb3V0IixvPT57ci5pc05vZGVFeHBhbmRlZChvKXx8ci5maXJlKCJub2RlLXVuaGlnaGxpZ2h0Iix7bmFtZTpvLm5vZGUubmFtZX0pfSkub24oImNsaWNrIixvPT57cXQuc3RvcFByb3BhZ2F0aW9uKCksci5maXJlKCJub2RlLXNlbGVjdCIse25hbWU6by5ub2RlLm5hbWV9KX0pLm9uKCJjb250ZXh0bWVudSIsKG8sYSk9PntyLmZpcmUoIm5vZGUtc2VsZWN0Iix7bmFtZTpvLm5vZGUubmFtZX0pLGkuY2FsbChvLGEpfSl9ZnVuY3Rpb24gUmxlKGUsdCl7bGV0IHI9W3t0aXRsZTpuPT5tSChlLmluY2x1ZGUpLGFjdGlvbjoobixpLG8pPT57dC5maXJlKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix7bmFtZTplLm5hbWV9KX19XTtyZXR1cm4gdC5ub2RlQ29udGV4dE1lbnVJdGVtcyYmKHI9ci5jb25jYXQodC5ub2RlQ29udGV4dE1lbnVJdGVtcykpLFpsdChlKSYmci5wdXNoKHt0aXRsZTpuPT5KbHQoZSksYWN0aW9uOihuLGksbyk9Pnt0LmZpcmUoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix7bmFtZTpDSChlKX0pfX0pLHJ9ZnVuY3Rpb24gWmx0KGUpe3JldHVybiBDSChlKSE9PW51bGx9ZnVuY3Rpb24gQ0goZSl7cmV0dXJuIGU/ZS50eXBlPT09anQuU0VSSUVTP2UubmFtZTplLnR5cGU9PT1qdC5PUD9lLm93bmluZ1NlcmllczpudWxsOm51bGx9ZnVuY3Rpb24gRmNyKGUpe2xldCB0PW51bGw7aWYoZSllLnR5cGU9PT1qdC5TRVJJRVM/dD1lOmUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnR5cGU9PT1qdC5TRVJJRVMmJih0PWUucGFyZW50Tm9kZSk7ZWxzZSByZXR1cm4gbnVsbDtyZXR1cm4gdH1mdW5jdGlvbiBKbHQoZSl7cmV0dXJuIGVsZShGY3IoZSkhPT1udWxsP25zLkdST1VQOm5zLlVOR1JPVVApfWZ1bmN0aW9uIEJjcihlLHQscil7dmFyIG47bGV0IGk9dC5kaXNwbGF5TmFtZSxvPXQubm9kZS50eXBlPT09anQuTUVUQSYmIXQuZXhwYW5kZWQsYT1QbihlLCJ0ZXh0Iix5ZS5Ob2RlLkxBQkVMKSxzPWEubm9kZSgpOyhuPXMucGFyZW50Tm9kZSk9PT1udWxsfHxuPT09dm9pZCAwfHxuLmFwcGVuZENoaWxkKHMpLGEuYXR0cigiZHkiLCIuMzVlbSIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIik7bGV0IGw9ODtzd2l0Y2godC5ub2RlLnR5cGUpe2Nhc2UganQuTUVUQTpsPXQuZXhwYW5kZWQ/JDQuTm9kZS5FWFBBTkRFRF9MQUJFTDokNC5Ob2RlLlNFUklFU19MQUJFTDticmVhaztjYXNlIGp0Lk9QOmw9JDQuTm9kZS5PUF9MQUJFTDticmVha31pZihvKXtpLmxlbmd0aD5yLm1heE1ldGFub2RlTGFiZWxMZW5ndGgmJihpPWkuc3Vic3RyKDAsci5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoLTIpKyJcdTIwMjYiKTtsZXQgdT1IY3Iocik7YS5hdHRyKCJmb250LXNpemUiLHUoaS5sZW5ndGgpKyJweCIpLGw9dShpLmxlbmd0aCl9bGV0IGM9YS50ZXh0KGkpO3JldHVybiBObGUoYyx0Lm5vZGUudHlwZSxsLHQpLGF9ZnVuY3Rpb24gTmxlKGUsdCxyLG4pe2xldCBpPWUubm9kZSgpLG89aS50ZXh0Q29udGVudCxhPW51bGw7c3dpdGNoKHQpe2Nhc2UganQuTUVUQTpuJiYhbi5leHBhbmRlZCYmKGE9VHIubm9kZVNpemUubWV0YS5tYXhMYWJlbFdpZHRoKTticmVhaztjYXNlIGp0Lk9QOmE9VHIubm9kZVNpemUub3AubWF4TGFiZWxXaWR0aDticmVhaztjYXNlLTE6YT1Uci5hbm5vdGF0aW9ucy5tYXhMYWJlbFdpZHRoO2JyZWFrO2RlZmF1bHQ6YnJlYWt9aWYoYSE9PW51bGwpcmV0dXJuIGkudGV4dENvbnRlbnQ9V3NlKGkudGV4dENvbnRlbnQscixhKSxlLmFwcGVuZCgidGl0bGUiKS50ZXh0KG8pfXZhciBYbHQ9bnVsbDtmdW5jdGlvbiBIY3IoZSl7cmV0dXJuIFhsdHx8KFhsdD16bigpLmRvbWFpbihbZS5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoTGFyZ2VGb250LGUubWF4TWV0YW5vZGVMYWJlbExlbmd0aF0pLnJhbmdlKFtlLm1heE1ldGFub2RlTGFiZWxMZW5ndGhGb250U2l6ZSxlLm1pbk1ldGFub2RlTGFiZWxMZW5ndGhGb250U2l6ZV0pLmNsYW1wKCEwKSksWGx0fWZ1bmN0aW9uIGhQKGUsdCxyLG4pe0FsKGUsInRleHQiLHllLk5vZGUuTEFCRUwpLnRyYW5zaXRpb24oKS5hdHRyKCJ4Iix0KS5hdHRyKCJ5IixyK24pfWZ1bmN0aW9uIERsZShlLHQscil7bGV0IG49UG4oZSwiZyIscik7c3dpdGNoKHQubm9kZS50eXBlKXtjYXNlIGp0Lk9QOmxldCBpPXQubm9kZTtpZihIaS5pc051bWJlcihpLmZ1bmN0aW9uSW5wdXRJbmRleCl8fEhpLmlzTnVtYmVyKGkuZnVuY3Rpb25PdXRwdXRJbmRleCkpe1BuKG4sInBvbHlnb24iLHllLk5vZGUuQ09MT1JfVEFSR0VUKTticmVha31QbihuLCJlbGxpcHNlIix5ZS5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWs7Y2FzZSBqdC5TRVJJRVM6bGV0IG89ImFubm90YXRpb24iLGE9dDthLmNvcmVHcmFwaCYmKG89YS5ub2RlLmhhc05vbkNvbnRyb2xFZGdlcz8idmVydGljYWwiOiJob3Jpem9udGFsIik7bGV0IHM9W3llLk5vZGUuQ09MT1JfVEFSR0VUXTthLmlzRmFkZWRPdXQmJnMucHVzaCgiZmFkZWQtZWxsaXBzZSIpLFBuKG4sInVzZSIscykuYXR0cigieGxpbms6aHJlZiIsIiNvcC1zZXJpZXMtIitvKyItc3RhbXAiKSxQbihuLCJyZWN0Iix5ZS5Ob2RlLkNPTE9SX1RBUkdFVCkuYXR0cigicngiLHQucmFkaXVzKS5hdHRyKCJyeSIsdC5yYWRpdXMpO2JyZWFrO2Nhc2UganQuQlJJREdFOlBuKG4sInJlY3QiLHllLk5vZGUuQ09MT1JfVEFSR0VUKS5hdHRyKCJyeCIsdC5yYWRpdXMpLmF0dHIoInJ5Iix0LnJhZGl1cyk7YnJlYWs7Y2FzZSBqdC5NRVRBOlBuKG4sInJlY3QiLHllLk5vZGUuQ09MT1JfVEFSR0VUKS5hdHRyKCJyeCIsdC5yYWRpdXMpLmF0dHIoInJ5Iix0LnJhZGl1cyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIG5vZGUgdHlwZTogIit0Lm5vZGUudHlwZSl9cmV0dXJuIG59ZnVuY3Rpb24gT2xlKGUpe3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBqdC5PUDpyZXR1cm4geWUuT1BOT0RFO2Nhc2UganQuTUVUQTpyZXR1cm4geWUuTUVUQU5PREU7Y2FzZSBqdC5TRVJJRVM6cmV0dXJuIHllLlNFUklFU05PREU7Y2FzZSBqdC5CUklER0U6cmV0dXJuIHllLkJSSURHRU5PREU7Y2FzZSBqdC5FTExJUFNJUzpyZXR1cm4geWUuRUxMSVBTSVNOT0RFfXRocm93IEVycm9yKCJVbnJlY29nbml6ZWQgbm9kZSB0eXBlOiAiK2Uubm9kZS50eXBlKX1mdW5jdGlvbiBWY3IoZSx0KXtsZXQgcj1BbChlLCJnIix5ZS5Ob2RlLlNIQVBFKSxuPXYwKHQpO3N3aXRjaCh0Lm5vZGUudHlwZSl7Y2FzZSBqdC5PUDp7bGV0IGk9dC5ub2RlO2lmKEhpLmlzTnVtYmVyKGkuZnVuY3Rpb25JbnB1dEluZGV4KXx8SGkuaXNOdW1iZXIoaS5mdW5jdGlvbk91dHB1dEluZGV4KSl7bGV0IG89QWwociwicG9seWdvbiIpO3dsZShvLHQueCx0LnksdC5jb3JlQm94LndpZHRoLHQuY29yZUJveC5oZWlnaHQpfWVsc2V7bGV0IG89QWwociwiZWxsaXBzZSIpO3dIKG8sbix0LnksdC5jb3JlQm94LndpZHRoLHQuY29yZUJveC5oZWlnaHQpfWhQKGUsbix0LnksdC5sYWJlbE9mZnNldCk7YnJlYWt9Y2FzZSBqdC5NRVRBOntsZXQgaT1yLnNlbGVjdEFsbCgicmVjdCIpO3QuZXhwYW5kZWQ/KHpkKGksdC54LHQueSx0LndpZHRoLHQuaGVpZ2h0KSxJbGUoZSx0KSxoUChlLG4sdC55LC10LmhlaWdodC8yK3QubGFiZWxIZWlnaHQvMikpOih6ZChpLG4sdC55LHQuY29yZUJveC53aWR0aCx0LmNvcmVCb3guaGVpZ2h0KSxoUChlLG4sdC55LDApKTticmVha31jYXNlIGp0LlNFUklFUzp7bGV0IGk9QWwociwidXNlIik7dC5leHBhbmRlZD8oemQoaSx0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpLElsZShlLHQpLGhQKGUsbix0LnksLXQuaGVpZ2h0LzIrdC5sYWJlbEhlaWdodC8yKSk6KHpkKGksbix0LnksdC5jb3JlQm94LndpZHRoLHQuY29yZUJveC5oZWlnaHQpLGhQKGUsbix0LnksdC5sYWJlbE9mZnNldCkpO2JyZWFrfWNhc2UganQuQlJJREdFOntsZXQgaT1BbChyLCJyZWN0Iik7emQoaSx0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfX1mdW5jdGlvbiAkbHQoZSx0LHIpe2xldCBuPXFzZShlKTtpZighcilyZXR1cm5gdXJsKCMke259KWA7bGV0IGk9SHQociksbz1pLnNlbGVjdCgiZGVmcyNfZ3JhcGgtZ3JhZGllbnRzIik7by5lbXB0eSgpJiYobz1pLmFwcGVuZCgiZGVmcyIpLmF0dHIoImlkIiwiX2dyYXBoLWdyYWRpZW50cyIpKTtsZXQgYT1vLnNlbGVjdCgibGluZWFyR3JhZGllbnQjIituKTtpZihhLmVtcHR5KCkpe2E9by5hcHBlbmQoImxpbmVhckdyYWRpZW50IikuYXR0cigiaWQiLGUpLGEuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7bGV0IHM9MDtIaS5lYWNoKHQsbD0+e2xldCBjPWwuY29sb3I7YS5hcHBlbmQoInN0b3AiKS5hdHRyKCJvZmZzZXQiLHMpLmF0dHIoInN0b3AtY29sb3IiLGMpLGEuYXBwZW5kKCJzdG9wIikuYXR0cigib2Zmc2V0IixzK2wucHJvcG9ydGlvbikuYXR0cigic3RvcC1jb2xvciIsYykscys9bC5wcm9wb3J0aW9ufSl9cmV0dXJuYHVybCgjJHtufSlgfWZ1bmN0aW9uIEFIKGUpe0h0KGUpLnNlbGVjdCgiZGVmcyNfZ3JhcGgtZ3JhZGllbnRzIikucmVtb3ZlKCl9ZnVuY3Rpb24gUEgoZSx0LHIsbixpKXtsZXQgbz0kdTtzd2l0Y2goZT1lfHwoKCk9PjApLHQpe2Nhc2UgR24uTk9ORTpjYXNlIEduLlNUUlVDVFVSRTppZihyLm5vZGUudHlwZT09PWp0Lk1FVEEpe2xldCBhPXIubm9kZS50ZW1wbGF0ZUlkO3JldHVybiB0PT09R24uU1RSVUNUVVJFJiZhIT09bnVsbD9vLlNUUlVDVFVSRV9QQUxFVFRFKGUoYSksbik6by5VTktOT1dOfWVsc2UgcmV0dXJuIHIubm9kZS50eXBlPT09anQuU0VSSUVTP24/by5FWFBBTkRFRF9DT0xPUjoid2hpdGUiOnIubm9kZS50eXBlPT09anQuQlJJREdFP3Iuc3RydWN0dXJhbD8iI2YwZSI6ci5ub2RlLmluYm91bmQ/IiMwZWYiOiIjZmUwIjpIaS5pc051bWJlcihyLm5vZGUuZnVuY3Rpb25JbnB1dEluZGV4KT8iIzc5NTU0OCI6SGkuaXNOdW1iZXIoci5ub2RlLmZ1bmN0aW9uT3V0cHV0SW5kZXgpPyIjMDA5Njg4Ijoid2hpdGUiO2Nhc2UgR24uREVWSUNFOnJldHVybiByLmRldmljZUNvbG9ycz09bnVsbD9vLlVOS05PV046bj9vLkVYUEFOREVEX0NPTE9SOiRsdCgiZGV2aWNlLSIrci5ub2RlLm5hbWUsci5kZXZpY2VDb2xvcnMsaSk7Y2FzZSBHbi5YTEFfQ0xVU1RFUjpyZXR1cm4gci54bGFDbHVzdGVyQ29sb3JzPT1udWxsP28uVU5LTk9XTjpuP28uRVhQQU5ERURfQ09MT1I6JGx0KCJ4bGEtIityLm5vZGUubmFtZSxyLnhsYUNsdXN0ZXJDb2xvcnMsaSk7Y2FzZSBHbi5DT01QVVRFX1RJTUU6cmV0dXJuIG4/by5FWFBBTkRFRF9DT0xPUjpyLmNvbXB1dGVUaW1lQ29sb3J8fG8uVU5LTk9XTjtjYXNlIEduLk1FTU9SWTpyZXR1cm4gbj9vLkVYUEFOREVEX0NPTE9SOnIubWVtb3J5Q29sb3J8fG8uVU5LTk9XTjtjYXNlIEduLk9QX0NPTVBBVElCSUxJVFk6cmV0dXJuIHIuY29tcGF0aWJpbGl0eUNvbG9ycz09bnVsbD9vLlVOS05PV046bj9vLkVYUEFOREVEX0NPTE9SOiRsdCgib3AtY29tcGF0LSIrci5ub2RlLm5hbWUsci5jb21wYXRpYmlsaXR5Q29sb3JzLGkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGNhc2UgdG8gY29sb3Igbm9kZXMgYnkiKX19ZnVuY3Rpb24gYTMoZSx0LHIsbil7bj1ufHx5ZS5Ob2RlLlNIQVBFO2xldCBpPXIuaXNOb2RlSGlnaGxpZ2h0ZWQodC5ub2RlLm5hbWUpLG89ci5pc05vZGVTZWxlY3RlZCh0Lm5vZGUubmFtZSksYT10LmlzSW5FeHRyYWN0fHx0LmlzT3V0RXh0cmFjdHx8dC5pc0xpYnJhcnlGdW5jdGlvbixzPXQuZXhwYW5kZWQmJm4hPT15ZS5Bbm5vdGF0aW9uLk5PREUsbD10LmlzRmFkZWRPdXQ7ZS5jbGFzc2VkKCJoaWdobGlnaHRlZCIsaSksZS5jbGFzc2VkKCJzZWxlY3RlZCIsbyksZS5jbGFzc2VkKCJleHRyYWN0IixhKSxlLmNsYXNzZWQoImV4cGFuZGVkIixzKSxlLmNsYXNzZWQoImZhZGVkIixsKTtsZXQgYz1lLnNlbGVjdCgiLiIrbisiIC4iK3llLk5vZGUuQ09MT1JfVEFSR0VUKSx1PVBIKHIudGVtcGxhdGVJbmRleCxyLmNvbG9yQnksdCxzLHIuZ2V0R3JhcGhTdmdSb290KCkpO2Muc3R5bGUoImZpbGwiLHUpLGMuc3R5bGUoInN0cm9rZSIsbz9udWxsOlFsdCh1KSl9ZnVuY3Rpb24gUWx0KGUpe3JldHVybiBlLnN1YnN0cmluZygwLDMpPT09InVybCI/JHUuR1JBRElFTlRfT1VUTElORTpsdShlKS5kYXJrZXIoKS50b1N0cmluZygpfWZ1bmN0aW9uIHpsZShlLHQscixuKXtsZXQgaT1IdChlKTtpZihpLnNlbGVjdEFsbCgiLmlucHV0LWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITEpLGkuc2VsZWN0QWxsKCIubm9uLWlucHV0IikuY2xhc3NlZCgibm9uLWlucHV0IiwhMSksaS5zZWxlY3RBbGwoIi5pbnB1dC1wYXJlbnQiKS5jbGFzc2VkKCJpbnB1dC1wYXJlbnQiLCExKSxpLnNlbGVjdEFsbCgiLmlucHV0LWNoaWxkIikuY2xhc3NlZCgiaW5wdXQtY2hpbGQiLCExKSxpLnNlbGVjdEFsbCgiLmlucHV0LWVkZ2UtaGlnaGxpZ2h0IikuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCExKSxpLnNlbGVjdEFsbCgiLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITEpLGkuc2VsZWN0QWxsKCIuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIikuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIiwhMSksIXR8fCFufHwhcilyZXR1cm47bGV0IG89RmxlKHIsdCksYT17fTtIaS5lYWNoKG8sZnVuY3Rpb24oYyl7YT1CbGUoZSx0LGMsYSl9KTtsZXQgcz1PYmplY3Qua2V5cyhhKSxsPXFjcih0LHMpO0djcihlLGwpLGkuc2VsZWN0QWxsKCJnLm5vZGU6bm90KC5zZWxlY3RlZCk6bm90KC5pbnB1dC1oaWdobGlnaHQpOm5vdCguaW5wdXQtcGFyZW50KTpub3QoLmlucHV0LWNoaWxkcmVuKSIpLmNsYXNzZWQoIm5vbi1pbnB1dCIsITApLmVhY2goZnVuY3Rpb24oYyl7bGV0IHU9Yy5ub2RlLm5hbWU7aS5zZWxlY3RBbGwoYFtkYXRhLW5hbWU9IiR7dX0iXWApLmNsYXNzZWQoIm5vbi1pbnB1dCIsITApfSksaS5zZWxlY3RBbGwoImcuZWRnZTpub3QoLmlucHV0LWVkZ2UtaGlnaGxpZ2h0KSIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfWZ1bmN0aW9uIEZsZShlLHQpe2xldCByPVtdLG49dC5nZXROb2RlQnlOYW1lKGUpO2lmKG4gaW5zdGFuY2VvZiBfMClyZXR1cm5bbl0uY29uY2F0KG4uaW5FbWJlZGRpbmdzKTtsZXQgaT1uLm1ldGFncmFwaC5ub2RlcygpO3JldHVybiBIaS5lYWNoKGksZnVuY3Rpb24obyl7cj1yLmNvbmNhdChGbGUobyx0KSl9KSxyfWZ1bmN0aW9uIEJsZShlLHQscixuKXtpZihuW3IubmFtZV0pcmV0dXJuIG47bltyLm5hbWVdPSEwO2xldCBpPXIuaW5wdXRzLG89S2x0KHQscik7SHQoZSkuc2VsZWN0KGAubm9kZVtkYXRhLW5hbWU9IiR7by5uYW1lfSJdYCkuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0IiwhMCk7bGV0IGE9e307SGkuZWFjaChpLGZ1bmN0aW9uKHUpe2xldCBoPXQuZ2V0Tm9kZUJ5TmFtZSh1Lm5hbWUpO2lmKGg9PT12b2lkIDApcmV0dXJuO2lmKGggaW5zdGFuY2VvZiBuUCl7bGV0IGQ9aVAoaC5uYW1lKTtoPXQuZ2V0Tm9kZUJ5TmFtZShkKX1sZXQgZj1LbHQodCxoKSxwPWFbZi5uYW1lXTtwP3Aub3BOb2Rlcy5wdXNoKGgpOmFbZi5uYW1lXT17dmlzaWJsZVBhcmVudDpmLG9wTm9kZXM6W2hdfX0pO2xldCBzPXt9LGw9W29dO3Nbby5uYW1lXT17dHJhY2VkOiExLGluZGV4OjAsY29ubmVjdGlvbkVuZHBvaW50czpbXX07bGV0IGM9bztmb3IobGV0IHU9MTtjLm5hbWUhPT1WYzt1KyspYz1jLnBhcmVudE5vZGUsc1tjLm5hbWVdPXt0cmFjZWQ6ITEsaW5kZXg6dSxjb25uZWN0aW9uRW5kcG9pbnRzOltdfSxsW3VdPWM7cmV0dXJuIEhpLmZvck93bihhLGZ1bmN0aW9uKHUsaCl7bGV0IGY9dS52aXNpYmxlUGFyZW50O0hpLmVhY2godS5vcE5vZGVzLGZ1bmN0aW9uKHApe249QmxlKGUsdCxwLG4pfSksZi5uYW1lIT09by5uYW1lJiZVY3IoZSxmLHMsbCl9KSxufWZ1bmN0aW9uIFVjcihlLHQscixuKXtsZXQgaT10LG89dCxhPVtdO2Zvcig7IXJbaS5uYW1lXTspby5uYW1lIT09aS5uYW1lJiZhLnB1c2goW28saV0pLG89aSxpPWkucGFyZW50Tm9kZTtsZXQgcz1yW2kubmFtZV0uaW5kZXgsbD1uW01hdGgubWF4KHMtMSwwKV0ubmFtZSxjPWwsdT1vLm5hbWUsaD1vLm5hbWUsZj1IdChlKTtmLnNlbGVjdEFsbChgW2RhdGEtZWRnZT0iJHtofS0tJHtsfSJdYCkuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCEwKSxIaS5lYWNoKGEsZnVuY3Rpb24ocCl7bGV0IGQ9cFswXSxnPXBbMV0sXz1gW2RhdGEtZWRnZT0iJHtkLm5hbWV9LS0ke2N9fn4ke2cubmFtZX1+fk9VVCJdYDtmLnNlbGVjdEFsbChfKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfSk7Zm9yKGxldCBwPTE7cDxzO3ArKyl7bGV0IGQ9bltwLTFdLGc9bltwXSxfPWBbZGF0YS1lZGdlPSIke3V9fn4ke2cubmFtZX1+fklOLS0ke2QubmFtZX0iXWA7Zi5zZWxlY3RBbGwoXykuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCEwKX19ZnVuY3Rpb24gcWNyKGUsdCl7bGV0IHI9e307cmV0dXJuIEhpLmVhY2godCxmdW5jdGlvbihuKXtsZXQgaT1lLmdldE5vZGVCeU5hbWUobiksbz1LbHQoZSxpKTtyW28ubmFtZV09b30pLHJ9ZnVuY3Rpb24gR2NyKGUsdCl7SGkuZm9yT3duKHQsZnVuY3Rpb24ocil7bGV0IG49cjtmb3IoO24ubmFtZSE9PVZjOyl7bGV0IGk9SHQoZSkuc2VsZWN0KGAubm9kZVtkYXRhLW5hbWU9IiR7bi5uYW1lfSJdYCk7aS5ub2RlcygpLmxlbmd0aCYmIWkuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0IikmJiFpLmNsYXNzZWQoInNlbGVjdGVkIikmJiFpLmNsYXNzZWQoIm9wIikmJmkuY2xhc3NlZCgiaW5wdXQtcGFyZW50IiwhMCksbj1uLnBhcmVudE5vZGV9fSl9ZnVuY3Rpb24gS2x0KGUsdCl7bGV0IHI9ITEsbj10O2Zvcig7IXI7KWlmKHQ9bixuPXQucGFyZW50Tm9kZSxuPT09dm9pZCAwKXI9ITA7ZWxzZXtsZXQgaT1lLmdldFJlbmRlck5vZGVCeU5hbWUobi5uYW1lKTtpJiYoaS5leHBhbmRlZHx8biBpbnN0YW5jZW9mIF8wKSYmKHI9ITApfXJldHVybiB0fWZ1bmN0aW9uIGtsZShlLHQscixuKXtsZXQgaT1lLnNlbGVjdEFsbChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KS5kYXRhKHQubGlzdCxvPT5vLm5vZGUubmFtZSk7cmV0dXJuIGkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJkYXRhLW5hbWUiLG89Pm8ubm9kZS5uYW1lKS5lYWNoKGZ1bmN0aW9uKG8pe2xldCBhPUh0KHRoaXMpO24uYWRkQW5ub3RhdGlvbkdyb3VwKG8scixhKTtsZXQgcz15ZS5Bbm5vdGF0aW9uLkVER0UsbD1vLnJlbmRlck1ldGFlZGdlSW5mbyYmby5yZW5kZXJNZXRhZWRnZUluZm8ubWV0YWVkZ2U7bCYmIWwubnVtUmVndWxhckVkZ2VzJiYocys9IiAiK3llLkFubm90YXRpb24uQ09OVFJPTF9FREdFKSxsJiZsLm51bVJlZkVkZ2VzJiYocys9IiAiK3llLkVkZ2UuUkVGX0xJTkUpLGpsdChhLG8sbixzKSxvLmFubm90YXRpb25UeXBlIT09X2kuRUxMSVBTSVM/KGpjcihhLG8pLFljcihhLG8pKTpIbGUoYSxvLm5vZGUubmFtZSxvLHllLkFubm90YXRpb24uRUxMSVBTSVMpfSkubWVyZ2UoaSkuYXR0cigiY2xhc3MiLG89PnllLkFubm90YXRpb24uR1JPVVArIiAiK1djcihvLmFubm90YXRpb25UeXBlKSsiICIrT2xlKG8pKS5lYWNoKGZ1bmN0aW9uKG8pe2xldCBhPUh0KHRoaXMpOyRjcihhLHIsbyxuKSxvLmFubm90YXRpb25UeXBlIT09X2kuRUxMSVBTSVMmJlhjcihhLHIsbyxuKX0pLGkuZXhpdCgpLmVhY2goZnVuY3Rpb24obyl7bi5yZW1vdmVBbm5vdGF0aW9uR3JvdXAobyxyKX0pLnJlbW92ZSgpLGl9ZnVuY3Rpb24gV2NyKGUpe3JldHVybihfaVtlXXx8IiIpLnRvTG93ZXJDYXNlKCl8fG51bGx9ZnVuY3Rpb24gWWNyKGUsdCl7aWYodC5hbm5vdGF0aW9uVHlwZT09PV9pLlNVTU1BUlkpUG4oZSwidXNlIikuYXR0cigiY2xhc3MiLCJzdW1tYXJ5IikuYXR0cigieGxpbms6aHJlZiIsIiNzdW1tYXJ5LWljb24iKS5hdHRyKCJjdXJzb3IiLCJwb2ludGVyIik7ZWxzZXtsZXQgcj1EbGUoZSx0LHllLkFubm90YXRpb24uTk9ERSk7UG4ociwidGl0bGUiKS50ZXh0KHQubm9kZS5uYW1lKX19ZnVuY3Rpb24gamNyKGUsdCl7bGV0IHI9dC5ub2RlLm5hbWUuc3BsaXQoIi8iKSxuPXJbci5sZW5ndGgtMV07cmV0dXJuIEhsZShlLG4sdCxudWxsKX1mdW5jdGlvbiBIbGUoZSx0LHIsbil7bGV0IGk9eWUuQW5ub3RhdGlvbi5MQUJFTDtuJiYoaSs9IiAiK24pO2xldCBvPWUuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLGkpLmF0dHIoImR5IiwiLjM1ZW0iKS5hdHRyKCJ0ZXh0LWFuY2hvciIsci5pc0luPyJlbmQiOiJzdGFydCIpLnRleHQodCk7cmV0dXJuIE5sZShvLC0xLCQ0LkFubm90YXRpb24uTEFCRUwpfWZ1bmN0aW9uIFhjcihlLHQscixuKXtlLm9uKCJtb3VzZW92ZXIiLGk9PntuLmZpcmUoImFubm90YXRpb24taGlnaGxpZ2h0Iix7bmFtZTppLm5vZGUubmFtZSxob3N0TmFtZTp0Lm5vZGUubmFtZX0pfSkub24oIm1vdXNlb3V0IixpPT57bi5maXJlKCJhbm5vdGF0aW9uLXVuaGlnaGxpZ2h0Iix7bmFtZTppLm5vZGUubmFtZSxob3N0TmFtZTp0Lm5vZGUubmFtZX0pfSkub24oImNsaWNrIixpPT57cXQuc3RvcFByb3BhZ2F0aW9uKCksbi5maXJlKCJhbm5vdGF0aW9uLXNlbGVjdCIse25hbWU6aS5ub2RlLm5hbWUsaG9zdE5hbWU6dC5ub2RlLm5hbWV9KX0pLHIuYW5ub3RhdGlvblR5cGUhPT1faS5TVU1NQVJZJiZyLmFubm90YXRpb25UeXBlIT09X2kuQ09OU1RBTlQmJmUub24oImNvbnRleHRtZW51IixHbHQobixSbGUoci5ub2RlLG4pKSl9ZnVuY3Rpb24gJGNyKGUsdCxyLG4pe2xldCBpPXYwKHQpO3IucmVuZGVyTm9kZUluZm8mJnIuYW5ub3RhdGlvblR5cGUhPT1faS5FTExJUFNJUyYmYTMoZSxyLnJlbmRlck5vZGVJbmZvLG4seWUuQW5ub3RhdGlvbi5OT0RFKSxyLmFubm90YXRpb25UeXBlPT09X2kuU1VNTUFSWSYmKHIud2lkdGgrPTEwKSxlLnNlbGVjdCgidGV4dC4iK3llLkFubm90YXRpb24uTEFCRUwpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixpK3IuZHgrKHIuaXNJbj8tMToxKSooci53aWR0aC8yK3IubGFiZWxPZmZzZXQpKS5hdHRyKCJ5Iix0Lnkrci5keSksZS5zZWxlY3QoInVzZS5zdW1tYXJ5IikudHJhbnNpdGlvbigpLmF0dHIoIngiLGkrci5keC0zKS5hdHRyKCJ5Iix0Lnkrci5keS02KSx3SChlLnNlbGVjdCgiLiIreWUuQW5ub3RhdGlvbi5OT0RFKyIgZWxsaXBzZSIpLGkrci5keCx0Lnkrci5keSxyLndpZHRoLHIuaGVpZ2h0KSx6ZChlLnNlbGVjdCgiLiIreWUuQW5ub3RhdGlvbi5OT0RFKyIgcmVjdCIpLGkrci5keCx0Lnkrci5keSxyLndpZHRoLHIuaGVpZ2h0KSx6ZChlLnNlbGVjdCgiLiIreWUuQW5ub3RhdGlvbi5OT0RFKyIgdXNlIiksaStyLmR4LHQueStyLmR5LHIud2lkdGgsci5oZWlnaHQpLGUuc2VsZWN0KCJwYXRoLiIreWUuQW5ub3RhdGlvbi5FREdFKS50cmFuc2l0aW9uKCkuYXR0cigiZCIsbz0+e2xldCBhPW8ucG9pbnRzLm1hcChzPT4oe3g6cy5keCtpLHk6cy5keSt0Lnl9KSk7cmV0dXJuIE1IKGEpfSl9ZnVuY3Rpb24gdGN0KGUsdCxyLG4pe249bnx8eWUuU2NlbmUuR1JPVVA7bGV0IGk9bTAoZSwiZyIsbikuZW1wdHkoKSxvPVBuKGUsImciLG4pLGE9UG4obywiZyIseWUuU2NlbmUuQ09SRSkscz1IaS5yZWR1Y2UodC5jb3JlR3JhcGgubm9kZXMoKSwobCxjKT0+e2xldCB1PXQuY29yZUdyYXBoLm5vZGUoYyk7cmV0dXJuIHUuZXhjbHVkZWR8fGwucHVzaCh1KSxsfSxBcnJheSgpKTtpZih0Lm5vZGUudHlwZT09PWp0LlNFUklFUyYmcy5yZXZlcnNlKCksQWxlKGEsdC5jb3JlR3JhcGgsciksVEgoYSxzLHIpLHQuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoPjApe2xldCBsPVBuKG8sImciLHllLlNjZW5lLklORVhUUkFDVCk7VEgobCx0Lmlzb2xhdGVkSW5FeHRyYWN0LHIpfWVsc2UgbTAobywiZyIseWUuU2NlbmUuSU5FWFRSQUNUKS5yZW1vdmUoKTtpZih0Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg+MCl7bGV0IGw9UG4obywiZyIseWUuU2NlbmUuT1VURVhUUkFDVCk7VEgobCx0Lmlzb2xhdGVkT3V0RXh0cmFjdCxyKX1lbHNlIG0wKG8sImciLHllLlNjZW5lLk9VVEVYVFJBQ1QpLnJlbW92ZSgpO2lmKHQubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoPjApe2xldCBsPVBuKG8sImciLHllLlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpO1RIKGwsdC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCxyKX1lbHNlIG0wKG8sImciLHllLlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLnJlbW92ZSgpO3JldHVybiB4bGUobyx0KSxpJiZvLmF0dHIoIm9wYWNpdHkiLDApLnRyYW5zaXRpb24oKS5hdHRyKCJvcGFjaXR5IiwxKSxvfXZhciBLY3I9LjgsSUg9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4saSxvLGEpe3RoaXMuc3ZnPXQsdGhpcy5sYWJlbFBhZGRpbmc9YSx0aGlzLnpvb21HPXIsdGhpcy5tYWluWm9vbT1uLHRoaXMubWF4V2FuZEg9bztsZXQgcz1IdChpLnNoYWRvd1Jvb3QpLGw9cy5zZWxlY3QoInN2ZyIpLGM9bC5zZWxlY3QoInJlY3QiKSx1PWY9Pnt0aGlzLnZpZXdwb2ludENvb3JkLng9cXQueCx0aGlzLnZpZXdwb2ludENvb3JkLnk9cXQueSx0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfTt0aGlzLnZpZXdwb2ludENvb3JkPXt4OjAseTowfTtsZXQgaD1mYigpLnN1YmplY3QoT2JqZWN0KS5vbigiZHJhZyIsdSk7Yy5kYXR1bSh0aGlzLnZpZXdwb2ludENvb3JkKS5jYWxsKGgpLGwub24oImNsaWNrIiwoKT0+e2lmKHF0LmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2xldCBmPU51bWJlcihjLmF0dHIoIndpZHRoIikpLHA9TnVtYmVyKGMuYXR0cigiaGVpZ2h0IikpLGQ9T28obC5ub2RlKCkpO3RoaXMudmlld3BvaW50Q29vcmQueD1kWzBdLWYvMix0aGlzLnZpZXdwb2ludENvb3JkLnk9ZFsxXS1wLzIsdGhpcy51cGRhdGVWaWV3cG9pbnQoKX0pLHRoaXMudmlld3BvaW50PWMubm9kZSgpLHRoaXMubWluaW1hcFN2Zz1sLm5vZGUoKSx0aGlzLm1pbmltYXA9aSx0aGlzLmNhbnZhcz1zLnNlbGVjdCgiY2FudmFzLmZpcnN0Iikubm9kZSgpLHRoaXMuY2FudmFzQnVmZmVyPXMuc2VsZWN0KCJjYW52YXMuc2Vjb25kIikubm9kZSgpLHRoaXMuZG93bmxvYWRDYW52YXM9cy5zZWxlY3QoImNhbnZhcy5kb3dubG9hZCIpLm5vZGUoKSxIdCh0aGlzLmRvd25sb2FkQ2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZVZpZXdwb2ludCgpe0h0KHRoaXMudmlld3BvaW50KS5hdHRyKCJ4Iix0aGlzLnZpZXdwb2ludENvb3JkLngpLmF0dHIoInkiLHRoaXMudmlld3BvaW50Q29vcmQueSk7bGV0IHQ9LXRoaXMudmlld3BvaW50Q29vcmQueCp0aGlzLnNjYWxlTWFpbi90aGlzLnNjYWxlTWluaW1hcCxyPS10aGlzLnZpZXdwb2ludENvb3JkLnkqdGhpcy5zY2FsZU1haW4vdGhpcy5zY2FsZU1pbmltYXA7SHQodGhpcy5zdmcpLmNhbGwodGhpcy5tYWluWm9vbS50cmFuc2Zvcm0samgudHJhbnNsYXRlKHQscikuc2NhbGUodGhpcy5zY2FsZU1haW4pKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gbmV3IFByb21pc2UodD0+e3RoaXMuZG93bmxvYWRDYW52YXMudG9CbG9iKHI9Pnt0KHIpfSwiaW1hZ2UvcG5nIil9KX11cGRhdGUoKXtsZXQgdD1udWxsO3RyeXtpZih0PXRoaXMuem9vbUcuZ2V0QkJveCgpLHQud2lkdGg9PT0wKXJldHVybn1jYXRjaChwKXtyZXR1cm59bGV0IHI9SHQodGhpcy5zdmcpLG49IiIsaT10aGlzLnN2ZyxhPShpLmdldFJvb3ROb2RlP2kuZ2V0Um9vdE5vZGUoKTp0aGlzLnN2Zy5wYXJlbnROb2RlKS5zdHlsZVNoZWV0cztmb3IobGV0IHA9MDtwPGEubGVuZ3RoO3ArKyl0cnl7bGV0IGQ9YVtwXS5jc3NSdWxlc3x8YVtwXS5ydWxlcztpZihkPT1udWxsKWNvbnRpbnVlO2ZvcihsZXQgZz0wO2c8ZC5sZW5ndGg7ZysrKW4rPWRbZ10uY3NzVGV4dC5yZXBsYWNlKC8gP3RmLVtcdy1dKyA/L2csIiIpK2AKYH1jYXRjaChkKXtpZihkLm5hbWUhPT0iU2VjdXJpdHlFcnJvciIpdGhyb3cgZH1sZXQgcz1yLmFwcGVuZCgic3R5bGUiKTtzLnRleHQobik7bGV0IGw9SHQodGhpcy56b29tRyksYz1sLmF0dHIoInRyYW5zZm9ybSIpO2wuYXR0cigidHJhbnNmb3JtIixudWxsKSx0LmhlaWdodCs9dC55LHQud2lkdGgrPXQueCx0LmhlaWdodCs9dGhpcy5sYWJlbFBhZGRpbmcqMix0LndpZHRoKz10aGlzLmxhYmVsUGFkZGluZyoyLHIuYXR0cigid2lkdGgiLHQud2lkdGgpLmF0dHIoImhlaWdodCIsdC5oZWlnaHQpLHRoaXMuc2NhbGVNaW5pbWFwPXRoaXMubWF4V2FuZEgvTWF0aC5tYXgodC53aWR0aCx0LmhlaWdodCksdGhpcy5taW5pbWFwU2l6ZT17d2lkdGg6dC53aWR0aCp0aGlzLnNjYWxlTWluaW1hcCxoZWlnaHQ6dC5oZWlnaHQqdGhpcy5zY2FsZU1pbmltYXB9LEh0KHRoaXMubWluaW1hcFN2ZykuYXR0cih0aGlzLm1pbmltYXBTaXplKSxIdCh0aGlzLmNhbnZhc0J1ZmZlcikuYXR0cih0aGlzLm1pbmltYXBTaXplKTtsZXQgdT1IdCh0aGlzLmRvd25sb2FkQ2FudmFzKTt1LnN0eWxlKCJ3aWR0aCIsdC53aWR0aCksdS5zdHlsZSgiaGVpZ2h0Iix0LmhlaWdodCksdS5hdHRyKCJ3aWR0aCIsMyp0LndpZHRoKSx1LmF0dHIoImhlaWdodCIsMyp0LmhlaWdodCksdGhpcy50cmFuc2xhdGUhPW51bGwmJnRoaXMuem9vbSE9bnVsbCYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT50aGlzLnpvb20oKSk7bGV0IGg9bmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyh0aGlzLnN2Zyk7cy5yZW1vdmUoKSxyLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpLGwuYXR0cigidHJhbnNmb3JtIixjKTtsZXQgZj1uZXcgSW1hZ2U7Zi5vbmxvYWQ9KCk9PntsZXQgcD10aGlzLmNhbnZhc0J1ZmZlci5nZXRDb250ZXh0KCIyZCIpO3A9PW51bGx8fHAuY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhc0J1ZmZlci53aWR0aCx0aGlzLmNhbnZhc0J1ZmZlci5oZWlnaHQpLHA9PW51bGx8fHAuZHJhd0ltYWdlKGYsMCwwLHRoaXMubWluaW1hcFNpemUud2lkdGgsdGhpcy5taW5pbWFwU2l6ZS5oZWlnaHQpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e0h0KHRoaXMuY2FudmFzQnVmZmVyKS5zdHlsZSgiZGlzcGxheSIsbnVsbCksSHQodGhpcy5jYW52YXMpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLFt0aGlzLmNhbnZhcyx0aGlzLmNhbnZhc0J1ZmZlcl09W3RoaXMuY2FudmFzQnVmZmVyLHRoaXMuY2FudmFzXX0pO2xldCBkPXRoaXMuZG93bmxvYWRDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTtkPT1udWxsfHxkLmNsZWFyUmVjdCgwLDAsdGhpcy5kb3dubG9hZENhbnZhcy53aWR0aCx0aGlzLmRvd25sb2FkQ2FudmFzLmhlaWdodCksZD09bnVsbHx8ZC5kcmF3SW1hZ2UoZiwwLDAsdGhpcy5kb3dubG9hZENhbnZhcy53aWR0aCx0aGlzLmRvd25sb2FkQ2FudmFzLmhlaWdodCl9LGYub25lcnJvcj0oKT0+e2xldCBwPW5ldyBCbG9iKFtoXSx7dHlwZToiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04In0pO2Yuc3JjPVVSTC5jcmVhdGVPYmplY3RVUkwocCl9LGYuc3JjPSJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwiK2VuY29kZVVSSUNvbXBvbmVudChoKX16b29tKHQpe2lmKHRoaXMuc2NhbGVNaW5pbWFwPT1udWxsKXJldHVybjt0JiYodGhpcy50cmFuc2xhdGU9W3QueCx0LnldLHRoaXMuc2NhbGVNYWluPXQuayk7bGV0IHI9dGhpcy5zdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1IdCh0aGlzLnZpZXdwb2ludCk7dGhpcy52aWV3cG9pbnRDb29yZC54PS10aGlzLnRyYW5zbGF0ZVswXSp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbix0aGlzLnZpZXdwb2ludENvb3JkLnk9LXRoaXMudHJhbnNsYXRlWzFdKnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluO2xldCBpPXIud2lkdGgqdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW4sbz1yLmhlaWdodCp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbjtuLmF0dHIoIngiLHRoaXMudmlld3BvaW50Q29vcmQueCkuYXR0cigieSIsdGhpcy52aWV3cG9pbnRDb29yZC55KS5hdHRyKCJ3aWR0aCIsaSkuYXR0cigiaGVpZ2h0IixvKTtsZXQgYT10aGlzLm1pbmltYXBTaXplLndpZHRoLHM9dGhpcy5taW5pbWFwU2l6ZS5oZWlnaHQsbD10aGlzLnZpZXdwb2ludENvb3JkLngsYz10aGlzLnZpZXdwb2ludENvb3JkLnksdT1NYXRoLm1pbihNYXRoLm1heCgwLGwraSksYSktTWF0aC5taW4oTWF0aC5tYXgoMCxsKSxhKSxoPU1hdGgubWluKE1hdGgubWF4KDAsYytvKSxzKS1NYXRoLm1pbihNYXRoLm1heCgwLGMpLHMpO3UqaC8oYSpzKTxLY3I/dGhpcy5taW5pbWFwLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOnRoaXMubWluaW1hcC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19O3ZhciByY3Q9Y2xhc3MgZXh0ZW5kcyBtdHtpbml0KHQscixuLGksbyl7cmV0dXJuIG5ldyBJSCh0LHIsbix0aGlzLGksbyl9fTtyY3QudGVtcGxhdGU9UWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBsaW5lYXI7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KC5oaWRkZW4pIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICBjYW52YXMgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7CiAgICAgIH0KCiAgICAgIHJlY3QgewogICAgICAgIGZpbGw6IHdoaXRlOwogICAgICAgIHN0cm9rZTogIzExMTExMTsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgICBmaWxsLW9wYWNpdHk6IDA7CiAgICAgICAgZmlsdGVyOiB1cmwoI21pbmltYXBEcm9wU2hhZG93KTsKICAgICAgICBjdXJzb3I6IG1vdmU7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHN2Zz4KICAgICAgPGRlZnM+CiAgICAgICAgPGZpbHRlcgogICAgICAgICAgaWQ9Im1pbmltYXBEcm9wU2hhZG93IgogICAgICAgICAgeD0iLTIwJSIKICAgICAgICAgIHk9Ii0yMCUiCiAgICAgICAgICB3aWR0aD0iMTUwJSIKICAgICAgICAgIGhlaWdodD0iMTUwJSIKICAgICAgICA+CiAgICAgICAgICA8ZmVPZmZzZXQgcmVzdWx0PSJvZmZPdXQiIGluPSJTb3VyY2VHcmFwaGljIiBkeD0iMSIgZHk9IjEiPjwvZmVPZmZzZXQ+CiAgICAgICAgICA8ZmVDb2xvck1hdHJpeAogICAgICAgICAgICByZXN1bHQ9Im1hdHJpeE91dCIKICAgICAgICAgICAgaW49Im9mZk91dCIKICAgICAgICAgICAgdHlwZT0ibWF0cml4IgogICAgICAgICAgICB2YWx1ZXM9IjAuMSAwIDAgMCAwIDAgMC4xIDAgMCAwIDAgMCAwLjEgMCAwIDAgMCAwIDAuNSAwIgogICAgICAgICAgPjwvZmVDb2xvck1hdHJpeD4KICAgICAgICAgIDxmZUdhdXNzaWFuQmx1cgogICAgICAgICAgICByZXN1bHQ9ImJsdXJPdXQiCiAgICAgICAgICAgIGluPSJtYXRyaXhPdXQiCiAgICAgICAgICAgIHN0ZERldmlhdGlvbj0iMiIKICAgICAgICAgID48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgPGZlQmxlbmQgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iYmx1ck91dCIgbW9kZT0ibm9ybWFsIj48L2ZlQmxlbmQ+CiAgICAgICAgPC9maWx0ZXI+CiAgICAgIDwvZGVmcz4KICAgICAgPHJlY3Q+PC9yZWN0PgogICAgPC9zdmc+CiAgICA8Y2FudmFzIGNsYXNzPSJmaXJzdCI+PC9jYW52YXM+CiAgICA8IS0tIEFkZGl0aW9uYWwgY2FudmFzIHRvIHVzZSBhcyBidWZmZXIgdG8gYXZvaWQgZmxpY2tlcmluZyBiZXR3ZWVuIHVwZGF0ZXMgLS0+CiAgICA8Y2FudmFzIGNsYXNzPSJzZWNvbmQiPjwvY2FudmFzPgogICAgPGNhbnZhcyBjbGFzcz0iZG93bmxvYWQiPjwvY2FudmFzPgogIGA7cmN0PUUoW3l0KCJ0Zi1ncmFwaC1taW5pbWFwIildLHJjdCk7dmFyIFZsZT1RYAogIDxzdHlsZT4KICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgZmlsdGVyOiBpbnZlcnQoMSk7CiAgICB9CgogICAgOmhvc3QgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI3N2ZyB7CiAgICAgIGZsZXg6IDE7CiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgI2hpZGRlbiB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiAwcHg7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICB0ZXh0IHsKICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB9CgogICAgLyogLS0tIE5vZGUgYW5kIGFubm90YXRpb24tbm9kZSBmb3IgTWV0YW5vZGUgLS0tICovCgogICAgLm1ldGEgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5tZXRhID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6IGhzbCgwLCAwJSwgNzAlKTsKICAgIH0KICAgIC5ub2RlLm1ldGEuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5ub2RlLm1ldGEuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgIH0KICAgIC5tZXRhLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAubWV0YS5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDM7CiAgICB9CiAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZC5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZC5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogNDsKICAgIH0KCiAgICAuZmFkZWQsCiAgICAuZmFkZWQgcmVjdCwKICAgIC5mYWRlZCBlbGxpcHNlLAogICAgLmZhZGVkIHBhdGgsCiAgICAuZmFkZWQgdXNlLAogICAgI3JlY3RIYXRjaCBsaW5lLAogICAgI2VsbGlwc2VIYXRjaCBsaW5lIHsKICAgICAgY29sb3I6ICNlMGQ0YjMgIWltcG9ydGFudDsKICAgICAgZmlsbDogd2hpdGU7CiAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCBwYXRoIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxcHggIWltcG9ydGFudDsKICAgIH0KCiAgICAuZmFkZWQgcmVjdCB7CiAgICAgIGZpbGw6IHVybCgjcmVjdEhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCBlbGxpcHNlLAogICAgLmZhZGVkIHVzZSB7CiAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5mYWRlZCB0ZXh0IHsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICAvKiBSdWxlcyB1c2VkIGZvciBpbnB1dC10cmFjaW5nLiAqLwogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiByZWN0LAogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiBlbGxpcHNlLAogICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiB1c2UgewogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiAjZmY5ODAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogIC0gRmFkZWQgbm9uLWlucHV0IHN0eWxpbmcgKi8KICAgIC5ub24taW5wdXQgPiAqID4gcmVjdCwKLm5vbi1pbnB1dCA+ICogPiBlbGxpcHNlLAoubm9uLWlucHV0ID4gKiA+IHVzZSwKLyogRm9yIENvbnN0IG5vZGVzLiAqLwoubm9uLWlucHV0ID4gKiA+IC5jb25zdGFudDpub3QoW2NsYXNzKj0iaW5wdXQtaGlnaGxpZ2h0Il0pID4KICAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSwKLyogRm9yIHN0eWxpbmcgb2YgYW5ub3RhdGlvbiBub2RlcyBvZiBub24taW5wdXQgbm9kZXMuICovCi5ub24taW5wdXQgPiBnID4gLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICBzdHJva2Utd2lkdGg6IGluaGVyaXQ7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IGluaGVyaXQ7CiAgICB9CgogICAgLm5vbi1pbnB1dCBwYXRoIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIC5ub24taW5wdXQgPiAubm9kZXNoYXBlID4gcmVjdCwKLm5vbi1pbnB1dCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0LAovKiBGb3Igc3R5bGluZyBvZiBhbm5vdGF0aW9uIG5vZGVzIG9mIG5vbi1pbnB1dCBub2Rlcy4gKi8KLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLm5vbi1pbnB1dCBlbGxpcHNlLAogICAgLm5vbi1pbnB1dCB1c2UgewogICAgICBmaWxsOiB1cmwoI2VsbGlwc2VIYXRjaCkgIWltcG9ydGFudDsKICAgIH0KCiAgICAubm9uLWlucHV0ID4gdGV4dCB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICB9CgogICAgLm5vbi1pbnB1dCAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICBtYXJrZXItZW5kOiB1cmwoI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgIH0KCiAgICAubm9uLWlucHV0IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLyogSW5wdXQgZWRnZXMuICovCiAgICAuaW5wdXQtZWRnZS1oaWdobGlnaHQgPiB0ZXh0IHsKICAgICAgZmlsbDogYmxhY2sgIWltcG9ydGFudDsKICAgIH0KICAgIC5pbnB1dC1oaWdobGlnaHQgPiAuaW4tYW5ub3RhdGlvbnMgPiAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UsCiAgICAuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkCiAgICAgID4gLmluLWFubm90YXRpb25zCiAgICAgID4gLmFubm90YXRpb24KICAgICAgPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgc3Ryb2tlOiAjOTk5ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogTm9uLWlucHV0IGVkZ2VzLiAqLwogICAgLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCwKLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IHBhdGgsCi8qIEFubm90YXRpb24gc3R5bGVzIChsYWJlbCBhbmQgZWRnZXMgcmVzcGVjdGl2ZWx5KS4gKi8KLm5vbi1pbnB1dCA+IGcgPgouYW5ub3RhdGlvbjpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1oaWdobGlnaHQtc2VsZWN0ZWQpID4KLmFubm90YXRpb24tbGFiZWwKLyouYW5ub3RhdGlvbi1lZGdlKi8gewogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB9CgogICAgLyogLS0tIE9wIE5vZGUgLS0tICovCgogICAgLm9wID4gLm5vZGVzaGFwZSA+IC5ub2RlY29sb3J0YXJnZXQsCiAgICAub3AgPiAuYW5ub3RhdGlvbi1ub2RlID4gLm5vZGVjb2xvcnRhcmdldCB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmlsbDogI2ZmZjsKICAgICAgc3Ryb2tlOiAjY2NjOwogICAgfQoKICAgIC5vcC5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgLm9wLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQoKICAgIC5vcC5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgLm9wLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLyogLS0tIFNlcmllcyBOb2RlIC0tLSAqLwoKICAgIC8qIEJ5IGRlZmF1bHQsIGRvbid0IHNob3cgdGhlIHNlcmllcyBiYWNrZ3JvdW5kIDxyZWN0Pi4gKi8KICAgIC5zZXJpZXMgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgIGZpbGw6IGhzbCgwLCAwJSwgNzAlKTsKICAgICAgZmlsbC1vcGFjaXR5OiAwOwogICAgICBzdHJva2UtZGFzaGFycmF5OiA1LCA1OwogICAgICBzdHJva2Utb3BhY2l0eTogMDsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQoKICAgIC8qIE9uY2UgZXhwYW5kZWQsIHNob3cgdGhlIHNlcmllcyBiYWNrZ3JvdW5kIDxyZWN0PiBhbmQgaGlkZSB0aGUgPHVzZT4uICovCiAgICAuc2VyaWVzLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBmaWxsLW9wYWNpdHk6IDAuMTU7CiAgICAgIHN0cm9rZTogaHNsKDAsIDAlLCA3MCUpOwogICAgICBzdHJva2Utb3BhY2l0eTogMTsKICAgIH0KICAgIC5zZXJpZXMuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gdXNlIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIC8qKgogKiBUT0RPOiBTaW1wbGlmeSB0aGlzIGJ5IGFwcGx5aW5nIGEgc3RhYmxlIGNsYXNzIG5hbWUgdG8gYWxsIDxnPgogKiBlbGVtZW50cyB0aGF0IGN1cnJlbnRseSBoYXZlIGVpdGhlciB0aGUgbm9kZXNoYXBlIG9yIGFubm90YXRpb24tbm9kZSBjbGFzc2VzLgogKi8KICAgIC5zZXJpZXMgPiAubm9kZXNoYXBlID4gdXNlLAogICAgLnNlcmllcyA+IC5hbm5vdGF0aW9uLW5vZGUgPiB1c2UgewogICAgICBzdHJva2U6ICNjY2M7CiAgICB9CiAgICAuc2VyaWVzLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IHVzZSwKICAgIC5zZXJpZXMuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQogICAgLnNlcmllcy5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAuc2VyaWVzLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHVzZSB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLnNlcmllcy5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAuYW5ub3RhdGlvbi5zZXJpZXMuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAvKiAtLS0gQnJpZGdlIE5vZGUgLS0tICovCiAgICAuYnJpZGdlID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBzdHJva2U6ICNmMGY7CiAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gU3RydWN0dXJhbCBFbGVtZW50cyAtLS0gKi8KICAgIC5lZGdlID4gcGF0aC5lZGdlbGluZS5zdHJ1Y3R1cmFsIHsKICAgICAgc3Ryb2tlOiAjZjBmOwogICAgICBvcGFjaXR5OiAwLjI7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLyogUmVmZXJlbmNlIEVkZ2UgKi8KICAgIC5lZGdlID4gcGF0aC5lZGdlbGluZS5yZWZlcmVuY2VlZGdlIHsKICAgICAgc3Ryb2tlOiAjZmZiNzRkOwogICAgICBvcGFjaXR5OiAxOwogICAgfQoKICAgIC8qIC0tLSBTZXJpZXMgTm9kZXMgLS0tICovCgogICAgLyogSGlkZSB0aGUgcmVjdCBmb3IgYSBzZXJpZXMnIGFubm90YXRpb24uICovCiAgICAuc2VyaWVzID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC8qIC0tLSBOb2RlIGxhYmVsIC0tLSAqLwoKICAgIC5ub2RlIHsKICAgICAgLyogUHJvdmlkZSBhIGhpbnQgdG8gYnJvd3NlcnMgdG8gYXZvaWQgdXNpbmcgdGhlaXIgc3RhdGljIHJhc3Rlcml6YXRpb24KICAgICAgYXQgaW5pdGlhbCBzY2FsZSwgd2hpY2ggbG9va3MgdmVyeSBwaXhlbGF0ZWQgb24gQ2hyb21pdW0gd2hlbiB6b29tZWQgaW4uCiAgICAgIE5vdGUgdGhhdCB3ZSBpbnRlbnRpb25hbGx5IGRvICpub3QqIHVzZSAnd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybScgYW5kCiAgICAgICd0cmFuc2xhdGVaKDApIGhlcmUsIHdoaWNoIGludHJvZHVjZSBibHVycmluZXNzIG9uIEZpcmVmb3guCiAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvNDc0NCAqLwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMXB4KTsKICAgIH0KCiAgICAubm9kZSA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiAjNDQ0OwogICAgfQoKICAgIC5tZXRhLmV4cGFuZGVkID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBmb250LXNpemU6IDlweDsKICAgIH0KCiAgICAuc2VyaWVzID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBmb250LXNpemU6IDhweDsKICAgIH0KCiAgICAub3AgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGZvbnQtc2l6ZTogNnB4OwogICAgfQoKICAgIC5icmlkZ2UgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLm5vZGUubWV0YS5leHBhbmRlZCA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgY3Vyc29yOiBub3JtYWw7CiAgICB9CgogICAgLmFubm90YXRpb24ubWV0YS5oaWdobGlnaHRlZCA+IHRleHQuYW5ub3RhdGlvbi1sYWJlbCB7CiAgICAgIGZpbGw6ICM1MGEzZjc7CiAgICB9CgogICAgLmFubm90YXRpb24ubWV0YS5zZWxlY3RlZCA+IHRleHQuYW5ub3RhdGlvbi1sYWJlbCB7CiAgICAgIGZpbGw6ICM0Mjg1ZjQ7CiAgICB9CgogICAgLyogLS0tIEFubm90YXRpb24gLS0tICovCgogICAgLyogb25seSBhcHBsaWVkIGZvciBhbm5vdGF0aW9ucyB0aGF0IGFyZSBub3Qgc3VtbWFyeSBvciBjb25zdGFudC4KKC5zdW1tYXJ5LCAuY29uc3RhbnQgZ2V0cyBvdmVycmlkZGVuIGJlbG93KSAqLwogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gKiB7CiAgICAgIHN0cm9rZS13aWR0aDogMC41OwogICAgICBzdHJva2UtZGFzaGFycmF5OiAxLCAxOwogICAgfQoKICAgIC5hbm5vdGF0aW9uLnN1bW1hcnkgPiAuYW5ub3RhdGlvbi1ub2RlID4gKiwKICAgIC5hbm5vdGF0aW9uLmNvbnN0YW50ID4gLmFubm90YXRpb24tbm9kZSA+ICogewogICAgICBzdHJva2Utd2lkdGg6IDE7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IG5vbmU7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgZmlsbDogbm9uZTsKICAgICAgc3Ryb2tlOiAjYWFhOwogICAgICBzdHJva2Utd2lkdGg6IDAuNTsKICAgICAgbWFya2VyLWVuZDogdXJsKCNhbm5vdGF0aW9uLWFycm93aGVhZCk7CiAgICB9CgogICAgLmZhZGVkIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZSB7CiAgICAgIG1hcmtlci1lbmQ6IHVybCgjYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgfQoKICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZCk7CiAgICB9CgogICAgLmZhZGVkIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgbWFya2VyLXN0YXJ0OiB1cmwoI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1jb250cm9sLWVkZ2UgewogICAgICBzdHJva2UtZGFzaGFycmF5OiAxLCAxOwogICAgfQoKICAgICNhbm5vdGF0aW9uLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNhYWE7CiAgICB9CgogICAgI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIHsKICAgICAgZmlsbDogI2UwZDRiMzsKICAgIH0KCiAgICAjcmVmLWFubm90YXRpb24tYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2FhYTsKICAgIH0KCiAgICAjcmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIHsKICAgICAgZmlsbDogI2UwZDRiMzsKICAgIH0KCiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWxhYmVsIHsKICAgICAgZm9udC1zaXplOiA1cHg7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbGFiZWwuYW5ub3RhdGlvbi1lbGxpcHNpcyB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgIH0KCiAgICAvKiBIaWRlIGFubm90YXRpb25zIG9uIGV4cGFuZGVkIG1ldGEgbm9kZXMgc2luY2UgdGhleSdyZSByZWR1bmRhbnQuICovCiAgICAuZXhwYW5kZWQgPiAuaW4tYW5ub3RhdGlvbnMsCiAgICAuZXhwYW5kZWQgPiAub3V0LWFubm90YXRpb25zIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gQW5ub3RhdGlvbjogQ29uc3RhbnQgLS0tICovCgogICAgLmNvbnN0YW50ID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6IHdoaXRlOwogICAgICBzdHJva2U6ICM4NDg0ODQ7CiAgICB9CgogICAgLmNvbnN0YW50LnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICB9CgogICAgLmNvbnN0YW50LmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgIH0KCiAgICAvKiAtLS0gQW5ub3RhdGlvbjogU3VtbWFyeSAtLS0gKi8KCiAgICAuc3VtbWFyeSA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiAjZGI0NDM3OwogICAgICBzdHJva2U6ICNkYjQ0Mzc7CiAgICB9CgogICAgLnN1bW1hcnkuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIGZpbGw6ICNhNTI3MTQ7CiAgICAgIHN0cm9rZTogI2E1MjcxNDsKICAgIH0KCiAgICAuc3VtbWFyeS5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxLjU7CiAgICB9CgogICAgLyogLS0tIEVkZ2UgLS0tICovCgogICAgLmVkZ2UgPiBwYXRoLmVkZ2VsaW5lIHsKICAgICAgZmlsbDogbm9uZTsKICAgICAgc3Ryb2tlOiAjYmJiOwogICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgIHN0cm9rZS13aWR0aDogMC43NTsKICAgIH0KCiAgICAuZWRnZSAuc2VsZWN0YWJsZWVkZ2UgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CgogICAgLnNlbGVjdGVkZWRnZSA+IHBhdGguZWRnZWxpbmUgewogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIHN0cm9rZTogI2YwMDsKICAgIH0KCiAgICAuZWRnZS5zZWxlY3RlZGVkZ2UgdGV4dCB7CiAgICAgIGZpbGw6ICMwMDA7CiAgICB9CgogICAgLyogTGFiZWxzIHNob3dpbmcgdGVuc29yIHNoYXBlcyBvbiBlZGdlcyAqLwogICAgLmVkZ2UgPiB0ZXh0IHsKICAgICAgZm9udC1zaXplOiAzLjVweDsKICAgICAgZmlsbDogIzY2NjsKICAgIH0KCiAgICAuZGF0YWZsb3ctYXJyb3doZWFkIHsKICAgICAgZmlsbDogI2JiYjsKICAgIH0KCiAgICAucmVmZXJlbmNlLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNmZmI3NGQ7CiAgICB9CgogICAgLnNlbGVjdGVkLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNmMDA7CiAgICB9CgogICAgLmVkZ2UgLmNvbnRyb2wtZGVwIHsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMiwgMjsKICAgIH0KCiAgICAvKiAtLS0gR3JvdXAgbm9kZSBleHBhbmQvY29sbGFwc2UgYnV0dG9uIC0tLSAqLwoKICAgIC8qIEhpZGVzIGV4cGFuZC9jb2xsYXBzZSBidXR0b25zIHdoZW4gYSBub2RlIGlzbid0IGV4cGFuZGVkIG9yIGhpZ2hsaWdodGVkLiBVc2luZwogICBpbmNyZWRpYmx5IHNtYWxsIG9wYWNpdHkgc28gdGhhdCB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSA8Zz4gcGFyZW50IHN0aWxsIHRha2VzCiAgIHRoaXMgY29udGFpbmVyIGludG8gYWNjb3VudCBldmVuIHdoZW4gaXQgaXNuJ3QgdmlzaWJsZSAqLwogICAgLm5vZGU6bm90KC5oaWdobGlnaHRlZCk6bm90KC5leHBhbmRlZCkgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciB7CiAgICAgIG9wYWNpdHk6IDAuMDE7CiAgICB9CiAgICAubm9kZS5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogICAgLmJ1dHRvbmNpcmNsZSB7CiAgICAgIGZpbGw6ICNlNzgxMWQ7CiAgICB9CiAgICAuYnV0dG9uY2lyY2xlOmhvdmVyIHsKICAgICAgZmlsbDogI2I5NjcxNzsKICAgIH0KICAgIC5leHBhbmRidXR0b24sCiAgICAuY29sbGFwc2VidXR0b24gewogICAgICBzdHJva2U6IHdoaXRlOwogICAgfQogICAgLyogRG8gbm90IGxldCB0aGUgcGF0aCBlbGVtZW50cyBpbiB0aGUgYnV0dG9uIHRha2UgcG9pbnRlciBmb2N1cyAqLwogICAgLm5vZGUgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5leHBhbmRidXR0b24sCiAgICAubm9kZSA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyID4gLmNvbGxhcHNlYnV0dG9uIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CiAgICAvKiBPbmx5IHNob3cgdGhlIGV4cGFuZCBidXR0b24gd2hlbiBhIG5vZGUgaXMgY29sbGFwc2VkIGFuZCBvbmx5IHNob3cgdGhlCiAgIGNvbGxhcHNlIGJ1dHRvbiB3aGVuIGEgbm9kZSBpcyBleHBhbmRlZC4gKi8KICAgIC5ub2RlLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuZXhwYW5kYnV0dG9uIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KICAgIC5ub2RlOm5vdCguZXhwYW5kZWQpID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuY29sbGFwc2VidXR0b24gewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5oZWFsdGgtcGlsbC1zdGF0cyB7CiAgICAgIGZvbnQtc2l6ZTogNHB4OwogICAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgfQoKICAgIC5oZWFsdGgtcGlsbCByZWN0IHsKICAgICAgZmlsdGVyOiB1cmwoI2hlYWx0aC1waWxsLXNoYWRvdyk7CiAgICAgIHJ4OiAzOwogICAgICByeTogMzsKICAgIH0KCiAgICAudGl0bGVDb250YWluZXIgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHRvcDogMjBweDsKICAgIH0KCiAgICAudGl0bGUsCiAgICAuYXV4VGl0bGUsCiAgICAuZnVuY3Rpb25MaWJyYXJ5VGl0bGUgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB9CgogICAgI21pbmltYXAgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHJpZ2h0OiAyMHB4OwogICAgICBib3R0b206IDIwcHg7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNGQ0ZDQ7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB1bCB7CiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgbWFyZ2luOiAwOwogICAgICBwYWRkaW5nOiAwOwogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICB9CgogICAgLmNvbnRleHQtbWVudSB1bCBsaSB7CiAgICAgIHBhZGRpbmc6IDRweCAxNnB4OwogICAgfQoKICAgIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjM5MTNlOwogICAgICBjb2xvcjogd2hpdGU7CiAgICB9CiAgPC9zdHlsZT4KICA8ZGl2IGNsYXNzPSJ0aXRsZUNvbnRhaW5lciI+CiAgICA8ZGl2IGlkPSJ0aXRsZSIgY2xhc3M9InRpdGxlIj5NYWluIEdyYXBoPC9kaXY+CiAgICA8ZGl2IGlkPSJhdXhUaXRsZSIgY2xhc3M9ImF1eFRpdGxlIj5BdXhpbGlhcnkgTm9kZXM8L2Rpdj4KICAgIDxkaXYgaWQ9ImZ1bmN0aW9uTGlicmFyeVRpdGxlIiBjbGFzcz0iZnVuY3Rpb25MaWJyYXJ5VGl0bGUiPkZ1bmN0aW9uczwvZGl2PgogIDwvZGl2PgogIDxzdmcgaWQ9InN2ZyI+CiAgICA8ZGVmcz4KICAgICAgPCEtLSBBcnJvdyBoZWFkcyBmb3IgcmVmZXJlbmNlIGVkZ2UgcGF0aHMgb2YgZGlmZmVyZW50IHByZWRlZmluZWQgc2l6ZXMgcGVyIGNvbG9yLiAtLT4KICAgICAgPHBhdGgKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIgogICAgICAgIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIKICAgICAgPjwvcGF0aD4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIgogICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLXNtYWxsIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQtbWVkaXVtIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMTMiCiAgICAgICAgbWFya2VySGVpZ2h0PSIxMyIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0icmVmZXJlbmNlLWFycm93aGVhZCIKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjE2IgogICAgICAgIG1hcmtlckhlaWdodD0iMTYiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQteGxhcmdlIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMjAiCiAgICAgICAgbWFya2VySGVpZ2h0PSIyMCIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CgogICAgICA8IS0tIEFycm93IGhlYWRzIGZvciBkYXRhZmxvdyBlZGdlIHBhdGhzIG9mIGRpZmZlcmVudCBwcmVkZWZpbmVkIHNpemVzIHBlciBjb2xvci4gLS0+CiAgICAgIDxwYXRoCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1wYXRoIgogICAgICAgIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIKICAgICAgPjwvcGF0aD4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1zbWFsbCIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLW1lZGl1bSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjEzIgogICAgICAgIG1hcmtlckhlaWdodD0iMTMiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0iZGF0YWZsb3ctYXJyb3doZWFkIgogICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtbGFyZ2UiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIxNiIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjE2IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLXhsYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjIwIgogICAgICAgIG1hcmtlckhlaWdodD0iMjAiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIj48L3VzZT4KICAgICAgPC9tYXJrZXI+CgogICAgICA8IS0tIEFycm93IGhlYWQgZm9yIGFubm90YXRpb24gZWRnZSBwYXRocy4gLS0+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0iYW5ub3RhdGlvbi1hcnJvd2hlYWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjUiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgNSwyLjUgTCAwLDUgTCAwLDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0iYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjUiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgNSwyLjUgTCAwLDUgTCAwLDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDxtYXJrZXIKICAgICAgICBpZD0icmVmLWFubm90YXRpb24tYXJyb3doZWFkIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSIwIgogICAgICAgIHJlZlk9IjIuNSIKICAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgID4KICAgICAgICA8cGF0aCBkPSJNIDUsMCBMIDAsMi41IEwgNSw1IEwgNSwwIj48L3BhdGg+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgaWQ9InJlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMCIKICAgICAgICByZWZZPSIyLjUiCiAgICAgICAgb3JpZW50PSJhdXRvIgogICAgICA+CiAgICAgICAgPHBhdGggZD0iTSA1LDAgTCAwLDIuNSBMIDUsNSBMIDUsMCI+PC9wYXRoPgogICAgICA8L21hcmtlcj4KICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBlbGxpcHNlLiAtLT4KICAgICAgPGVsbGlwc2UKICAgICAgICBpZD0ib3Atbm9kZS1zdGFtcCIKICAgICAgICByeD0iNy41IgogICAgICAgIHJ5PSIzIgogICAgICAgIHN0cm9rZT0iaW5oZXJpdCIKICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICA+PC9lbGxpcHNlPgogICAgICA8IS0tIFRlbXBsYXRlIGZvciBhbiBPcCBub2RlIGFubm90YXRpb24gZWxsaXBzZSAoc21hbGxlcikuIC0tPgogICAgICA8ZWxsaXBzZQogICAgICAgIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiCiAgICAgICAgcng9IjUiCiAgICAgICAgcnk9IjIiCiAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgIGZpbGw9ImluaGVyaXQiCiAgICAgID48L2VsbGlwc2U+CiAgICAgIDwhLS0gVmVydGljYWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLXZlcnRpY2FsLXN0YW1wIj4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI5Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI2Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSIzIj48L3VzZT4KICAgICAgPC9nPgogICAgICA8IS0tIEhvcml6b250YWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjE2IiB5PSI0Ij48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxMiIgeT0iNCI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iNCI+PC91c2U+CiAgICAgIDwvZz4KICAgICAgPCEtLSBIb3Jpem9udGFsbHkgc3RhY2tlZCBzZXJpZXMgb2YgT3Agbm9kZXMgZm9yIGFubm90YXRpb24uIC0tPgogICAgICA8ZyBpZD0ib3Atc2VyaWVzLWFubm90YXRpb24tc3RhbXAiPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIgeD0iOSIgeT0iMiI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1hbm5vdGF0aW9uLXN0YW1wIiB4PSI3IiB5PSIyIj48L3VzZT4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjUiIHk9IjIiPjwvdXNlPgogICAgICA8L2c+CiAgICAgIDxzdmcKICAgICAgICBpZD0ic3VtbWFyeS1pY29uIgogICAgICAgIGZpbGw9IiM4NDg0ODQiCiAgICAgICAgaGVpZ2h0PSIxMiIKICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgd2lkdGg9IjEyIgogICAgICA+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiCiAgICAgICAgPjwvcGF0aD4KICAgICAgPC9zdmc+CgogICAgICA8IS0tIEhhdGNoIHBhdHRlcm5zIGZvciBmYWRlZCBvdXQgbm9kZXMuIC0tPgogICAgICA8cGF0dGVybgogICAgICAgIGlkPSJyZWN0SGF0Y2giCiAgICAgICAgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiCiAgICAgICAgd2lkdGg9IjUiCiAgICAgICAgaGVpZ2h0PSI1IgogICAgICAgIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iNSIgc3R5bGU9InN0cm9rZS13aWR0aDogMSI+PC9saW5lPgogICAgICA8L3BhdHRlcm4+CiAgICAgIDxwYXR0ZXJuCiAgICAgICAgaWQ9ImVsbGlwc2VIYXRjaCIKICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIKICAgICAgICB3aWR0aD0iMiIKICAgICAgICBoZWlnaHQ9IjIiCiAgICAgICAgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSIyIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgIDwvcGF0dGVybj4KCiAgICAgIDwhLS0gQSBzaGFkb3cgZm9yIGhlYWx0aCBwaWxscy4gLS0+CiAgICAgIDxmaWx0ZXIKICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc2hhZG93IgogICAgICAgIHg9Ii00MCUiCiAgICAgICAgeT0iLTQwJSIKICAgICAgICB3aWR0aD0iMTgwJSIKICAgICAgICBoZWlnaHQ9IjE4MCUiCiAgICAgID4KICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgaW49IlNvdXJjZUFscGhhIiBzdGREZXZpYXRpb249IjAuOCI+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIwIiByZXN1bHQ9Im9mZnNldGJsdXIiPjwvZmVPZmZzZXQ+CiAgICAgICAgPGZlRmxvb2QgZmxvb2QtY29sb3I9IiMwMDAwMDAiPjwvZmVGbG9vZD4KICAgICAgICA8ZmVDb21wb3NpdGUgaW4yPSJvZmZzZXRibHVyIiBvcGVyYXRvcj0iaW4iPjwvZmVDb21wb3NpdGU+CiAgICAgICAgPGZlTWVyZ2U+CiAgICAgICAgICA8ZmVNZXJnZU5vZGU+PC9mZU1lcmdlTm9kZT4KICAgICAgICAgIDxmZU1lcmdlTm9kZSBpbj0iU291cmNlR3JhcGhpYyI+PC9mZU1lcmdlTm9kZT4KICAgICAgICA8L2ZlTWVyZ2U+CiAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPCEtLSBNYWtlIGEgbGFyZ2UgcmVjdGFuZ2xlIHRoYXQgZmlsbHMgdGhlIHN2ZyBzcGFjZSBzbyB0aGF0CiAgem9vbSBldmVudHMgZ2V0IGNhcHR1cmVkIG9uIHNhZmFyaSAtLT4KICAgIDxyZWN0IGZpbGw9IndoaXRlIiB3aWR0aD0iMTAwMDAiIGhlaWdodD0iMTAwMDAiPjwvcmVjdD4KICAgIDxnIGlkPSJyb290Ij48L2c+CiAgPC9zdmc+CiAgPHRmLWdyYXBoLW1pbmltYXAgaWQ9Im1pbmltYXAiPjwvdGYtZ3JhcGgtbWluaW1hcD4KICA8ZGl2IGlkPSJjb250ZXh0TWVudSIgY2xhc3M9ImNvbnRleHQtbWVudSI+PC9kaXY+CmA7dmFyIExyPWNsYXNzIGV4dGVuZHMgR3QoZ28obXQpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fem9vbWVkPSExLHRoaXMuX3pvb21TdGFydENvb3Jkcz1udWxsLHRoaXMuX3pvb21UcmFuc2Zvcm09bnVsbCx0aGlzLl9tYXhab29tRGlzdGFuY2VGb3JDbGljaz0yMCx0aGlzLl9ub2RlR3JvdXBJbmRleD17fSx0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleD17fSx0aGlzLl9lZGdlR3JvdXBJbmRleD17fSx0aGlzLm1heE1ldGFub2RlTGFiZWxMZW5ndGhGb250U2l6ZT05LHRoaXMubWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplPTYsdGhpcy5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoTGFyZ2VGb250PTExLHRoaXMubWF4TWV0YW5vZGVMYWJlbExlbmd0aD0xOH1nZXROb2RlKHQpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKHQpfWlzTm9kZUV4cGFuZGVkKHQpe3JldHVybiB0LmV4cGFuZGVkfXNldE5vZGVFeHBhbmRlZCh0KXt0aGlzLl9idWlsZCh0aGlzLnJlbmRlckhpZXJhcmNoeSksdGhpcy5fdXBkYXRlTGFiZWxzKCF0aGlzLl96b29tZWQpfXBhblRvTm9kZSh0KXt2bGUodCx0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20pJiYodGhpcy5fem9vbWVkPSEwKX1nZXRHcmFwaFN2Z1Jvb3QoKXtyZXR1cm4gdGhpcy4kLnN2Z31nZXRDb250ZXh0TWVudSgpe3JldHVybiB0aGlzLiQuY29udGV4dE1lbnV9X3Jlc2V0U3RhdGUoKXt0aGlzLl9ub2RlR3JvdXBJbmRleD17fSx0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleD17fSx0aGlzLl9lZGdlR3JvdXBJbmRleD17fSx0aGlzLl91cGRhdGVMYWJlbHMoITEpLEh0KHRoaXMuJC5zdmcpLnNlbGVjdCgiI3Jvb3QiKS5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKSxBSCh0aGlzLiQuc3ZnKX1fYnVpbGQodCl7dGhpcy50ZW1wbGF0ZUluZGV4PXQuaGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKSxSZCgidGYtZ3JhcGgtc2NlbmUgKGxheW91dCk6IixmdW5jdGlvbigpe2JIKHQucm9vdCl9LmJpbmQodGhpcyksanIuUkVOREVSX1NDRU5FX0xBWU9VVCksUmQoInRmLWdyYXBoLXNjZW5lIChidWlsZCBzY2VuZSk6IixmdW5jdGlvbigpe3RjdChIdCh0aGlzLiQucm9vdCksdC5yb290LHRoaXMpLGJsZSh0aGlzLiQuc3ZnLHRoaXMpLHRoaXMuX3VwZGF0ZUlucHV0VHJhY2UoKX0uYmluZCh0aGlzKSxqci5SRU5ERVJfU0NFTkVfQlVJTERfU0NFTkUpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVIZWFsdGhQaWxscyh0aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMsdGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4KSx0aGlzLm1pbmltYXAudXBkYXRlKCl9LmJpbmQodGhpcyksVHIuYW5pbWF0aW9uLmR1cmF0aW9uKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fem9vbT1KOCgpLm9uKCJlbmQiLGZ1bmN0aW9uKCl7aWYodGhpcy5fem9vbVN0YXJ0Q29vcmRzKXt2YXIgdD1NYXRoLnNxcnQoTWF0aC5wb3codGhpcy5fem9vbVN0YXJ0Q29vcmRzLngtdGhpcy5fem9vbVRyYW5zZm9ybS54LDIpK01hdGgucG93KHRoaXMuX3pvb21TdGFydENvb3Jkcy55LXRoaXMuX3pvb21UcmFuc2Zvcm0ueSwyKSk7dDx0aGlzLl9tYXhab29tRGlzdGFuY2VGb3JDbGljaz90aGlzLl9maXJlRW5hYmxlQ2xpY2soKTpzZXRUaW1lb3V0KHRoaXMuX2ZpcmVFbmFibGVDbGljay5iaW5kKHRoaXMpLDUwKX10aGlzLl96b29tU3RhcnRDb29yZHM9bnVsbH0uYmluZCh0aGlzKSkub24oInpvb20iLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVRyYW5zZm9ybT1xdC50cmFuc2Zvcm0sdGhpcy5fem9vbVN0YXJ0Q29vcmRzfHwodGhpcy5fem9vbVN0YXJ0Q29vcmRzPXRoaXMuX3pvb21UcmFuc2Zvcm0sdGhpcy5maXJlKCJkaXNhYmxlLWNsaWNrIikpLHRoaXMuX3pvb21lZD0hMCxIdCh0aGlzLiQucm9vdCkuYXR0cigidHJhbnNmb3JtIixxdC50cmFuc2Zvcm0pLHRoaXMubWluaW1hcC56b29tKHF0LnRyYW5zZm9ybSl9LmJpbmQodGhpcykpLEh0KHRoaXMuJC5zdmcpLmNhbGwodGhpcy5fem9vbSkub24oImRibGNsaWNrLnpvb20iLG51bGwpLEh0KHdpbmRvdykub24oInJlc2l6ZSIsZnVuY3Rpb24oKXt0aGlzLm1pbmltYXAuem9vbSgpfS5iaW5kKHRoaXMpKSx0aGlzLm1pbmltYXA9dGhpcy4kLm1pbmltYXAuaW5pdCh0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20sVHIubWluaW1hcC5zaXplLFRyLnN1YnNjZW5lLm1ldGEubGFiZWxIZWlnaHQpfWF0dGFjaGVkKCl7dGhpcy5zZXQoIl9pc0F0dGFjaGVkIiwhMCl9ZGV0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCExKX1fcmVuZGVySGllcmFyY2h5Q2hhbmdlZCgpe3ZhciB0PXRoaXMucmVuZGVySGllcmFyY2h5O3RoaXMuX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlPSExLHRoaXMuX3Jlc2V0U3RhdGUoKSx0aGlzLl9idWlsZCh0KX1fYW5pbWF0ZUFuZEZpdCgpe3ZhciB0PXRoaXMuX2lzQXR0YWNoZWQ7dGhpcy5faGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2V8fCF0fHxzZXRUaW1lb3V0KHRoaXMuZml0LmJpbmQodGhpcyksVHIuYW5pbWF0aW9uLmR1cmF0aW9uKX1fdXBkYXRlTGFiZWxzKHQpe3ZhciByPXRoaXMuJCQoIi50aXRsZSIpLG49ci5zdHlsZSxpPXRoaXMuJCQoIi5hdXhUaXRsZSIpLG89aS5zdHlsZSxhPXRoaXMuJCQoIi5mdW5jdGlvbkxpYnJhcnlUaXRsZSIpLnN0eWxlO2xldCBzPUh0KHRoaXMuJC5zdmcpO3ZhciBsPXMuc2VsZWN0KCIuIitCaS5TY2VuZS5HUk9VUCsiPi4iK0JpLlNjZW5lLkNPUkUpLm5vZGUoKTtpZih0JiZsJiZ0aGlzLnByb2dyZXNzJiZ0aGlzLnByb2dyZXNzLnZhbHVlPT09MTAwKXt2YXIgYz1zLnNlbGVjdCgiLiIrQmkuU2NlbmUuR1JPVVArIj4uIitCaS5TY2VuZS5JTkVYVFJBQ1QpLm5vZGUoKXx8cy5zZWxlY3QoIi4iK0JpLlNjZW5lLkdST1VQKyI+LiIrQmkuU2NlbmUuT1VURVhUUkFDVCkubm9kZSgpLHU9bC5nZXRDVE0oKS5lLGg9Yz9jLmdldENUTSgpLmU6bnVsbDtuLmRpc3BsYXk9ImlubGluZSIsbi5sZWZ0PXUrInB4IixoIT09bnVsbCYmaCE9PXU/KG8uZGlzcGxheT0iaW5saW5lIixoPU1hdGgubWF4KHUrci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxoKSxvLmxlZnQ9aCsicHgiKTpvLmRpc3BsYXk9Im5vbmUiO2xldCBmPXMuc2VsZWN0KCIuIitCaS5TY2VuZS5HUk9VUCsiPi4iK0JpLlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLm5vZGUoKSxwPWY/Zi5nZXRDVE0oKS5lOm51bGw7cCE9PW51bGwmJnAhPT1oPyhhLmRpc3BsYXk9ImlubGluZSIscD1NYXRoLm1heChoK2kuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgscCksYS5sZWZ0PXArInB4Iik6YS5kaXNwbGF5PSJub25lIn1lbHNlIG4uZGlzcGxheT0ibm9uZSIsby5kaXNwbGF5PSJub25lIixhLmRpc3BsYXk9Im5vbmUifW5vZGVDb2xvcnNDaGFuZ2VkKCl7dGhpcy5yZW5kZXJIaWVyYXJjaHkhPW51bGwmJih0aGlzLnRlbXBsYXRlSW5kZXg9dGhpcy5yZW5kZXJIaWVyYXJjaHkuaGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKSxmUC5lYWNoKHRoaXMuX25vZGVHcm91cEluZGV4LCh0LHIpPT57dGhpcy5fdXBkYXRlTm9kZVN0YXRlKHIpfSksdGhpcy5taW5pbWFwLnVwZGF0ZSgpKX1maXQoKXt0aGlzLl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZT0hMCx5bGUodGhpcy4kLnN2Zyx0aGlzLiQucm9vdCx0aGlzLl96b29tLGZ1bmN0aW9uKCl7dGhpcy5fem9vbWVkPSExfS5iaW5kKHRoaXMpKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gdGhpcy5taW5pbWFwLmdldEltYWdlQmxvYigpfWlzTm9kZVNlbGVjdGVkKHQpe3JldHVybiB0PT09dGhpcy5zZWxlY3RlZE5vZGV9aXNOb2RlSGlnaGxpZ2h0ZWQodCl7cmV0dXJuIHQ9PT10aGlzLmhpZ2hsaWdodGVkTm9kZX1hZGRBbm5vdGF0aW9uR3JvdXAodCxyLG4pe3ZhciBpPXQubm9kZS5uYW1lO3RoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2ldPXRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2ldfHx7fSx0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtpXVtyLm5vZGUubmFtZV09bn1nZXRBbm5vdGF0aW9uR3JvdXBzSW5kZXgodCl7cmV0dXJuIHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W3RdfXJlbW92ZUFubm90YXRpb25Hcm91cCh0LHIpe2RlbGV0ZSB0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFt0Lm5vZGUubmFtZV1bci5ub2RlLm5hbWVdfWFkZE5vZGVHcm91cCh0LHIpe3RoaXMuX25vZGVHcm91cEluZGV4W3RdPXJ9Z2V0Tm9kZUdyb3VwKHQpe3JldHVybiB0aGlzLl9ub2RlR3JvdXBJbmRleFt0XX1yZW1vdmVOb2RlR3JvdXAodCl7ZGVsZXRlIHRoaXMuX25vZGVHcm91cEluZGV4W3RdfWFkZEVkZ2VHcm91cCh0LHIpe3RoaXMuX2VkZ2VHcm91cEluZGV4W3RdPXJ9Z2V0RWRnZUdyb3VwKHQpe3JldHVybiB0aGlzLl9lZGdlR3JvdXBJbmRleFt0XX1fdXBkYXRlSGVhbHRoUGlsbHMoKXt2YXIgdD10aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMscj10aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXg7TWxlKHRoaXMuJC5zdmcsdCxyKX1fdXBkYXRlTm9kZVN0YXRlKHQpe3ZhciByPXRoaXMuZ2V0Tm9kZSh0KSxuPXRoaXMuZ2V0Tm9kZUdyb3VwKHQpO2lmKG4mJmEzKG4scix0aGlzKSxyLm5vZGUudHlwZT09PWp0Lk1FVEEmJnIubm9kZS5hc3NvY2lhdGVkRnVuY3Rpb24mJiFyLmlzTGlicmFyeUZ1bmN0aW9uKXt2YXIgaT13YStyLm5vZGUuYXNzb2NpYXRlZEZ1bmN0aW9uLG89SHQoIi4iK0JpLlNjZW5lLkdST1VQKyI+LiIrQmkuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSsnIGdbZGF0YS1uYW1lPSInK2krJyJdJyk7YTMobyxyLHRoaXMpfXZhciBhPXRoaXMuZ2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpO2ZQLmVhY2goYSwocyxsKT0+e2EzKHMscix0aGlzLEJpLkFubm90YXRpb24uTk9ERSl9KX1fc2VsZWN0ZWROb2RlQ2hhbmdlZCh0LHIpe2lmKHQhPT1yJiYociYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKHIpLCEhdCkpe3RoaXMubWluaW1hcC51cGRhdGUoKTtmb3IodmFyIG49dGhpcy5yZW5kZXJIaWVyYXJjaHkuaGllcmFyY2h5Lm5vZGUodCksaT1bXTtuLnBhcmVudE5vZGUhPW51bGwmJm4ucGFyZW50Tm9kZS5uYW1lIT1WYzspbj1uLnBhcmVudE5vZGUsaS5wdXNoKG4ubmFtZSk7dmFyIG87ZlAuZm9yRWFjaFJpZ2h0KGksYT0+e3RoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KGEpO3ZhciBzPXRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUoYSk7cy5ub2RlLmlzR3JvdXBOb2RlJiYhcy5leHBhbmRlZCYmKHMuZXhwYW5kZWQ9ITAsb3x8KG89cykpfSksbyYmKHRoaXMuc2V0Tm9kZUV4cGFuZGVkKG8pLHRoaXMuX3pvb21lZD0hMCksdCYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKHQpLHNldFRpbWVvdXQoKCk9Pnt0aGlzLnBhblRvTm9kZSh0KX0sVHIuYW5pbWF0aW9uLmR1cmF0aW9uKX19X2hpZ2hsaWdodGVkTm9kZUNoYW5nZWQodCxyKXt0IT09ciYmKHQmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZSh0KSxyJiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUocikpfV9vblpvb21DaGFuZ2VkKCl7dGhpcy5fdXBkYXRlTGFiZWxzKCF0aGlzLl96b29tZWQpfV9maXJlRW5hYmxlQ2xpY2soKXt0aGlzLmZpcmUoImVuYWJsZS1jbGljayIpfV91cGRhdGVJbnB1dFRyYWNlKCl7emxlKHRoaXMuZ2V0R3JhcGhTdmdSb290KCksdGhpcy5yZW5kZXJIaWVyYXJjaHksdGhpcy5zZWxlY3RlZE5vZGUsdGhpcy50cmFjZUlucHV0cyl9fTtMci50ZW1wbGF0ZT1WbGU7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsc28pXSxMci5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxMci5wcm90b3R5cGUsIm5hbWUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTHIucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTHIucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLExyLnByb3RvdHlwZSwiX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTHIucHJvdG90eXBlLCJfaXNBdHRhY2hlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMci5wcm90b3R5cGUsIl96b29tIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfaGlnaGxpZ2h0ZWROb2RlQ2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTHIucHJvdG90eXBlLCJoaWdobGlnaHRlZE5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9zZWxlY3RlZE5vZGVDaGFuZ2VkIn0pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxMci5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMci5wcm90b3R5cGUsImhhbmRsZUVkZ2VTZWxlY3RlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9vblpvb21DaGFuZ2VkIn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTHIucHJvdG90eXBlLCJfem9vbWVkIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLExyLnByb3RvdHlwZSwiX3pvb21TdGFydENvb3JkcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMci5wcm90b3R5cGUsIl96b29tVHJhbnNmb3JtIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLExyLnByb3RvdHlwZSwiX21heFpvb21EaXN0YW5jZUZvckNsaWNrIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sTHIucHJvdG90eXBlLCJ0ZW1wbGF0ZUluZGV4Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLExyLnByb3RvdHlwZSwiX25vZGVHcm91cEluZGV4Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLExyLnByb3RvdHlwZSwiX2Fubm90YXRpb25Hcm91cEluZGV4Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLExyLnByb3RvdHlwZSwiX2VkZ2VHcm91cEluZGV4Iix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLExyLnByb3RvdHlwZSwibWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLExyLnByb3RvdHlwZSwibWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLExyLnByb3RvdHlwZSwibWF4TWV0YW5vZGVMYWJlbExlbmd0aExhcmdlRm9udCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxMci5wcm90b3R5cGUsIm1heE1ldGFub2RlTGFiZWxMZW5ndGgiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTHIucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sTHIucHJvdG90eXBlLCJub2RlQ29udGV4dE1lbnVJdGVtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMci5wcm90b3R5cGUsIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTHIucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApO0UoW0J0KCJyZW5kZXJIaWVyYXJjaHkiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLExyLnByb3RvdHlwZSwiX3JlbmRlckhpZXJhcmNoeUNoYW5nZWQiLG51bGwpO0UoW0J0KCJfaXNBdHRhY2hlZCIsInJlbmRlckhpZXJhcmNoeSIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sTHIucHJvdG90eXBlLCJfYW5pbWF0ZUFuZEZpdCIsbnVsbCk7RShbQnQoImNvbG9yQnkiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLExyLnByb3RvdHlwZSwibm9kZUNvbG9yc0NoYW5nZWQiLG51bGwpO0UoW0J0KCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiwiaGVhbHRoUGlsbFN0ZXBJbmRleCIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sTHIucHJvdG90eXBlLCJfdXBkYXRlSGVhbHRoUGlsbHMiLG51bGwpO0UoW0J0KCJ0cmFjZUlucHV0cyIsInNlbGVjdGVkTm9kZSIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sTHIucHJvdG90eXBlLCJfdXBkYXRlSW5wdXRUcmFjZSIsbnVsbCk7THI9RShbeXQoInRmLWdyYXBoLXNjZW5lIildLExyKTt2YXIgRHI9Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlbmRlckRlcHRoPTEsdGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMCx0aGlzLmVkZ2VXaWR0aEZ1bmN0aW9uPSIiLHRoaXMuaGFuZGxlTm9kZVNlbGVjdGVkPSIiLHRoaXMuZWRnZUxhYmVsRnVuY3Rpb249IiIsdGhpcy5oYW5kbGVFZGdlU2VsZWN0ZWQ9IiJ9cGFuVG9Ob2RlKHQpe3RoaXMuJCQoInRmLWdyYXBoLXNjZW5lIikucGFuVG9Ob2RlKHQpfV9hdXRvRXh0cmFjdE5vZGVzQ2hhbmdlZCgpe3ZhciB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7aWYoISF0KXtmb3IobGV0IHIgb2YgT2JqZWN0LnZhbHVlcyh0LmdldE5vZGVNYXAoKSkpci5pbmNsdWRlPXVyLlVOU1BFQ0lGSUVEO3RoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHQpfX1fYnVpbGROZXdSZW5kZXJIaWVyYXJjaHkoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5OyF0fHx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0KX1fc3RhdHNDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5zdGF0cyxyPXRoaXMuZGV2aWNlc0ZvclN0YXRzO3RoaXMuZ3JhcGhIaWVyYXJjaHkmJih0JiZyJiYoWnNlKHRoaXMuYmFzaWNHcmFwaCx0LHIpLGlsZSh0aGlzLmdyYXBoSGllcmFyY2h5LHQpKSx0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KSl9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZ3JhcGgtc2VsZWN0Iix0aGlzLl9ncmFwaFNlbGVjdGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZGlzYWJsZS1jbGljayIsdGhpcy5fZGlzYWJsZUNsaWNrLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZW5hYmxlLWNsaWNrIix0aGlzLl9lbmFibGVDbGljay5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLWV4cGFuZCIsdGhpcy5fbm9kZVRvZ2dsZUV4cGFuZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtc2VsZWN0Iix0aGlzLl9ub2RlU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLWhpZ2hsaWdodCIsdGhpcy5fbm9kZUhpZ2hsaWdodGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS11bmhpZ2hsaWdodCIsdGhpcy5fbm9kZVVuaGlnaGxpZ2h0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix0aGlzLl9ub2RlVG9nZ2xlRXh0cmFjdC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix0aGlzLl9ub2RlVG9nZ2xlU2VyaWVzR3JvdXAuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJlZGdlLXNlbGVjdCIsdGhpcy5fZWRnZVNlbGVjdGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5ub3RhdGlvbi1zZWxlY3QiLHRoaXMuX25vZGVTZWxlY3RlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFubm90YXRpb24taGlnaGxpZ2h0Iix0aGlzLl9ub2RlSGlnaGxpZ2h0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJhbm5vdGF0aW9uLXVuaGlnaGxpZ2h0Iix0aGlzLl9ub2RlVW5oaWdobGlnaHRlZC5iaW5kKHRoaXMpKX1fYnVpbGRSZW5kZXJIaWVyYXJjaHkodCl7aWYodC5yb290LnR5cGUhPT1qdC5NRVRBKXJldHVybjtsZXQgcj10aGlzLG49UmQoIm5ldyB0Zl9ncmFwaF9yZW5kZXIuSGllcmFyY2h5IiwoKT0+e2xldCBpPW5ldyBzbyh0LCEhdGhpcy5zdGF0cyx0aGlzLmF1dG9FeHRyYWN0Tm9kZXMpO2kuZWRnZUxhYmVsRnVuY3Rpb249dGhpcy5lZGdlTGFiZWxGdW5jdGlvbixpLmVkZ2VXaWR0aEZ1bmN0aW9uPXRoaXMuZWRnZVdpZHRoRnVuY3Rpb247ZnVuY3Rpb24gbyhhKXtyZXR1cm57bWluVmFsdWU6YS5kb21haW4oKVswXSxtYXhWYWx1ZTphLmRvbWFpbigpWzFdLHN0YXJ0Q29sb3I6YS5yYW5nZSgpWzBdLGVuZENvbG9yOmEucmFuZ2UoKVsxXX19cmV0dXJuIHIuX3NldENvbG9yQnlQYXJhbXMoe2NvbXB1dGVfdGltZTpvKGkuY29tcHV0ZVRpbWVTY2FsZSksbWVtb3J5Om8oaS5tZW1vcnlVc2FnZVNjYWxlKSxkZXZpY2U6bmN0Lm1hcChpLmRldmljZUNvbG9yTWFwLmRvbWFpbigpLGZ1bmN0aW9uKGEpe3JldHVybntkZXZpY2U6YSxjb2xvcjppLmRldmljZUNvbG9yTWFwKGEpfX0pLHhsYV9jbHVzdGVyOm5jdC5tYXAoaS54bGFDbHVzdGVyQ29sb3JNYXAuZG9tYWluKCksZnVuY3Rpb24oYSl7cmV0dXJue3hsYV9jbHVzdGVyOmEsY29sb3I6aS54bGFDbHVzdGVyQ29sb3JNYXAoYSl9fSl9KSxpfSxqci5SRU5ERVJfQlVJTERfSElFUkFSQ0hZKTtyLl9zZXRSZW5kZXJIaWVyYXJjaHkobil9X2dldFZpc2libGUodCl7cmV0dXJuIHQmJnRoaXMucmVuZGVySGllcmFyY2h5LmdldE5lYXJlc3RWaXNpYmxlQW5jZXN0b3IodCl9Zml0KCl7dGhpcy4kLnNjZW5lLmZpdCgpfWdldEltYWdlQmxvYigpe3JldHVybiB0aGlzLiQuc2NlbmUuZ2V0SW1hZ2VCbG9iKCl9X2dyYXBoQ2hhbmdlZCgpeyF0aGlzLmdyYXBoSGllcmFyY2h5fHwodGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcihEZC5URU1QTEFURVNfVVBEQVRFRCwoKT0+e3RoaXMuJC5zY2VuZS5ub2RlQ29sb3JzQ2hhbmdlZCgpfSksdGhpcy5maXJlKCJncmFwaC1zZWxlY3QiKSl9X2dyYXBoU2VsZWN0ZWQodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmKHRoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLG51bGwpLHRoaXMuc2V0KCJzZWxlY3RlZEVkZ2UiLG51bGwpKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9kaXNhYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMX1fZW5hYmxlQ2xpY2sodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH1fc2VsZWN0ZWROb2RlQ2hhbmdlZCgpe3ZhciB0PXRoaXMuc2VsZWN0ZWROb2RlO3RoaXMuaGFuZGxlTm9kZVNlbGVjdGVkJiZ0aGlzLmhhbmRsZU5vZGVTZWxlY3RlZCh0KX1fc2VsZWN0ZWRFZGdlQ2hhbmdlZCgpe3ZhciB0PXRoaXMuc2VsZWN0ZWRFZGdlO3RoaXMuX2Rlc2VsZWN0UHJldmlvdXNFZGdlKCksdCYmKHRoaXMuX2xhc3RTZWxlY3RlZEVkZ2VHcm91cC5jbGFzc2VkKEJpLkVkZ2UuU0VMRUNURUQsITApLHRoaXMuX3VwZGF0ZU1hcmtlck9mU2VsZWN0ZWRFZGdlKHQpKSx0aGlzLmhhbmRsZUVkZ2VTZWxlY3RlZCYmdGhpcy5oYW5kbGVFZGdlU2VsZWN0ZWQodCl9X25vZGVTZWxlY3RlZCh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0JiZ0aGlzLnNldCgic2VsZWN0ZWROb2RlIix0LmRldGFpbC5uYW1lKSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9lZGdlU2VsZWN0ZWQodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmKHRoaXMuc2V0KCJfbGFzdFNlbGVjdGVkRWRnZUdyb3VwIix0LmRldGFpbC5lZGdlR3JvdXApLHRoaXMuc2V0KCJzZWxlY3RlZEVkZ2UiLHQuZGV0YWlsLmVkZ2VEYXRhKSksdGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH1fbm9kZUhpZ2hsaWdodGVkKHQpe3RoaXMuc2V0KCJoaWdobGlnaHRlZE5vZGUiLHQuZGV0YWlsLm5hbWUpfV9ub2RlVW5oaWdobGlnaHRlZCh0KXt0aGlzLnNldCgiaGlnaGxpZ2h0ZWROb2RlIixudWxsKX1fbm9kZVRvZ2dsZUV4cGFuZCh0KXt0aGlzLl9ub2RlU2VsZWN0ZWQodCk7dmFyIHI9dC5kZXRhaWwubmFtZSxuPXRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUocik7bi5ub2RlLnR5cGUhPT1qdC5PUCYmKHRoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KHIpLG4uZXhwYW5kZWQ9IW4uZXhwYW5kZWQsdGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuJC5zY2VuZS5zZXROb2RlRXhwYW5kZWQobil9LDc1KSxBbyh7YWN0aW9uSWQ6anIuTk9ERV9FWFBBTlNJT05fVE9HR0xFRCxldmVudExhYmVsOm4uZXhwYW5kZWQ/ImV4cGFuZGVkIjoiY29sbGFwc2VkIn0pKX1fbm9kZVRvZ2dsZUV4dHJhY3QodCl7dmFyIHI9dC5kZXRhaWwubmFtZTt0aGlzLm5vZGVUb2dnbGVFeHRyYWN0KHIpfW5vZGVUb2dnbGVFeHRyYWN0KHQpe2xldCByPXRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUodCk7ci5ub2RlLmluY2x1ZGU9PXVyLklOQ0xVREU/ci5ub2RlLmluY2x1ZGU9dXIuRVhDTFVERTpyLm5vZGUuaW5jbHVkZT09dXIuRVhDTFVERT9yLm5vZGUuaW5jbHVkZT11ci5JTkNMVURFOnIubm9kZS5pbmNsdWRlPXRoaXMucmVuZGVySGllcmFyY2h5LmlzTm9kZUF1eGlsaWFyeShyKT91ci5JTkNMVURFOnVyLkVYQ0xVREUsdGhpcy5fYnVpbGRSZW5kZXJIaWVyYXJjaHkodGhpcy5ncmFwaEhpZXJhcmNoeSksQW8oe2FjdGlvbklkOmpyLk5PREVfQVVYSUxJQVJZX0VYVFJBQ1RJT05fQ0hBTkdFRCxldmVudExhYmVsOnIubm9kZS5pbmNsdWRlPT09dXIuSU5DTFVERT8iQXV4aWxpYXJ5IHRvIE1haW4iOiJNYWluIHRvIEF1eGlsaWFyeSJ9KX1fbm9kZVRvZ2dsZVNlcmllc0dyb3VwKHQpe3ZhciByPXQuZGV0YWlsLm5hbWU7dGhpcy5ub2RlVG9nZ2xlU2VyaWVzR3JvdXAocil9bm9kZVRvZ2dsZVNlcmllc0dyb3VwKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSk7dmFyIHI9dFAodGhpcyksbj1aUyhyLDEwMCwiTmFtZXNwYWNlIGhpZXJhcmNoeSIpO2xldCBpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLmhpZXJhcmNoeVBhcmFtcykse3Nlcmllc01hcDp0aGlzLmdyYXBoSGllcmFyY2h5LmJ1aWxkU2VyaWVzR3JvdXBNYXBUb2dnbGVkKHQpfSk7eUgodGhpcy5iYXNpY0dyYXBoLGksbikudGhlbihmdW5jdGlvbihvKXt0aGlzLnNldCgiZ3JhcGhIaWVyYXJjaHkiLG8pLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpfS5iaW5kKHRoaXMpKX1fZGVzZWxlY3RQcmV2aW91c0VkZ2UoKXtsZXQgdD0iLiIrQmkuRWRnZS5TRUxFQ1RFRDtIdCh0KS5jbGFzc2VkKEJpLkVkZ2UuU0VMRUNURUQsITEpLmVhY2goKHIsbik9PntpZihyLmxhYmVsKXtsZXQgaT1IdCh0aGlzKS5zZWxlY3RBbGwoInBhdGguZWRnZWxpbmUiKTtyLmxhYmVsLnN0YXJ0TWFya2VySWQmJmkuc3R5bGUoIm1hcmtlci1zdGFydCIsYHVybCgjJHtyLmxhYmVsLnN0YXJ0TWFya2VySWR9KWApLHIubGFiZWwuZW5kTWFya2VySWQmJmkuc3R5bGUoIm1hcmtlci1lbmQiLGB1cmwoIyR7ci5sYWJlbC5lbmRNYXJrZXJJZH0pYCl9fSl9X3VwZGF0ZU1hcmtlck9mU2VsZWN0ZWRFZGdlKHQpe3ZhciByO2lmKHQubGFiZWwpe2xldCBuPXQubGFiZWwuc3RhcnRNYXJrZXJJZHx8dC5sYWJlbC5lbmRNYXJrZXJJZDtpZihuKXtsZXQgaT1uLnJlcGxhY2UoImRhdGFmbG93LSIsInNlbGVjdGVkLSIpLG89dGhpcy4kJCgiIyIraSk7aWYoIW8pe2xldCBzPXRoaXMuJC5zY2VuZS5xdWVyeVNlbGVjdG9yKCIjIituKTtvPXM9PW51bGw/dm9pZCAwOnMuY2xvbmVOb2RlKCEwKSxvLnNldEF0dHJpYnV0ZSgiaWQiLGkpLG8uY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQtYXJyb3doZWFkIiksKHI9cz09bnVsbD92b2lkIDA6cy5wYXJlbnROb2RlKT09PW51bGx8fHI9PT12b2lkIDB8fHIuYXBwZW5kQ2hpbGQobyl9bGV0IGE9dC5sYWJlbC5zdGFydE1hcmtlcklkPyJtYXJrZXItc3RhcnQiOiJtYXJrZXItZW5kIjt0aGlzLl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAuc2VsZWN0QWxsKCJwYXRoLmVkZ2VsaW5lIikuc3R5bGUoYSxgdXJsKCMke2l9KWApfX19bm90KHQpe3JldHVybiF0fX07RHIudGVtcGxhdGU9UWAKICAgIDxzdHlsZT4KICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIEBhcHBseSAtLWxheW91dC12ZXJ0aWNhbDsKICAgICAgfQoKICAgICAgLmF1dG8gewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICB9CgogICAgICBwYXBlci1idXR0b24gewogICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1t0aXRsZV1dIj4KICAgICAgICAgIDxoMj5bW3RpdGxlXV08L2gyPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRmLWdyYXBoLXNjZW5lCiAgICAgICAgICBpZD0ic2NlbmUiCiAgICAgICAgICBjbGFzcz0iYXV0byIKICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJbW19nZXRWaXNpYmxlKGhpZ2hsaWdodGVkTm9kZSldXSIKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICBzZWxlY3RlZC1lZGdlPSJ7e3NlbGVjdGVkRWRnZX19IgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgcHJvZ3Jlc3M9IltbcHJvZ3Jlc3NdXSIKICAgICAgICAgIG5vZGUtY29udGV4dC1tZW51LWl0ZW1zPSJbW25vZGVDb250ZXh0TWVudUl0ZW1zXV0iCiAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tub2RlTmFtZXNUb0hlYWx0aFBpbGxzXV0iCiAgICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgIGhhbmRsZS1lZGdlLXNlbGVjdGVkPSJbW2hhbmRsZUVkZ2VTZWxlY3RlZF1dIgogICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW3RyYWNlSW5wdXRzXV0iCiAgICAgICAgPjwvdGYtZ3JhcGgtc2NlbmU+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYDtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9ncmFwaENoYW5nZWQifSksdygiZGVzaWduOnR5cGUiLGlzKV0sRHIucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixqdSldLERyLnByb3RvdHlwZSwiYmFzaWNHcmFwaCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEci5wcm90b3R5cGUsInN0YXRzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLERyLnByb3RvdHlwZSwiZGV2aWNlc0ZvclN0YXRzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLERyLnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEci5wcm90b3R5cGUsInByb2dyZXNzIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLERyLnByb3RvdHlwZSwidGl0bGUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLERyLnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEci5wcm90b3R5cGUsInNlbGVjdGVkRWRnZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEci5wcm90b3R5cGUsIl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLERyLnByb3RvdHlwZSwiaGlnaGxpZ2h0ZWROb2RlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLERyLnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITAscmVhZE9ubHk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRHIucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixzbyldLERyLnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sRHIucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLERyLnByb3RvdHlwZSwiYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sRHIucHJvdG90eXBlLCJub2RlQ29udGV4dE1lbnVJdGVtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxEci5wcm90b3R5cGUsIl9yZW5kZXJEZXB0aCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLERyLnByb3RvdHlwZSwiX2FsbG93R3JhcGhTZWxlY3QiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRHIucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLERyLnByb3RvdHlwZSwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxEci5wcm90b3R5cGUsImVkZ2VXaWR0aEZ1bmN0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLERyLnByb3RvdHlwZSwiaGFuZGxlTm9kZVNlbGVjdGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLERyLnByb3RvdHlwZSwiZWRnZUxhYmVsRnVuY3Rpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRHIucHJvdG90eXBlLCJoYW5kbGVFZGdlU2VsZWN0ZWQiLHZvaWQgMCk7RShbQnQoImF1dG9FeHRyYWN0Tm9kZXMiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLERyLnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXNDaGFuZ2VkIixudWxsKTtFKFtCdCgiZ3JhcGhIaWVyYXJjaHkiLCJlZGdlV2lkdGhGdW5jdGlvbiIsImhhbmRsZU5vZGVTZWxlY3RlZCIsImVkZ2VMYWJlbEZ1bmN0aW9uIiwiaGFuZGxlRWRnZVNlbGVjdGVkIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxEci5wcm90b3R5cGUsIl9idWlsZE5ld1JlbmRlckhpZXJhcmNoeSIsbnVsbCk7RShbQnQoInN0YXRzIiwiZGV2aWNlc0ZvclN0YXRzIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxEci5wcm90b3R5cGUsIl9zdGF0c0NoYW5nZWQiLG51bGwpO0UoW0J0KCJzZWxlY3RlZE5vZGUiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLERyLnByb3RvdHlwZSwiX3NlbGVjdGVkTm9kZUNoYW5nZWQiLG51bGwpO0UoW0J0KCJzZWxlY3RlZEVkZ2UiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLERyLnByb3RvdHlwZSwiX3NlbGVjdGVkRWRnZUNoYW5nZWQiLG51bGwpO0RyPUUoW3l0KCJ0Zi1ncmFwaCIpXSxEcik7dmFyIGxvPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA9MCx0aGlzLmhlYWx0aFBpbGxFbnRyaWVzPWNQfXJlYWR5KCl7c3VwZXIucmVhZHkoKTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbkNvbnRhaW5lciIpLHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidGYtZGFzaGJvYXJkLWxheW91dCAuc2Nyb2xsYmFyIik7dCYmciYmKHQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsci5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIil9X2hlYWx0aFBpbGxzQXZhaWxhYmxlKHQscil7cmV0dXJuIHQmJnJ9X2NvbXB1dGVUZW5zb3JDb3VudFN0cmluZyh0LHIpe3JldHVybiB0P3Rbcl0udG9GaXhlZCgwKToiIn1nZXQgaGVhbHRoUGlsbFZhbHVlc0ZvclNlbGVjdGVkTm9kZSgpe3ZhciB0PXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyxyPXRoaXMuaGVhbHRoUGlsbFN0ZXBJbmRleCxuPXRoaXMuc2VsZWN0ZWROb2RlLGk9dGhpcy5hbGxTdGVwc01vZGVFbmFibGVkLG89dGhpcy5hcmVIZWFsdGhQaWxsc0xvYWRpbmc7aWYob3x8IW4pcmV0dXJuIG51bGw7bGV0IGE9dFtuXTtpZighYSlyZXR1cm4gbnVsbDtsZXQgcz1hW2k/MDpyXTtyZXR1cm4gcz9zLnZhbHVlLnNsaWNlKDIsOCk6bnVsbH1nZXQgX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlKCl7dmFyIHQ9dGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzLHI9dGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4LG49dGhpcy5hbGxTdGVwc01vZGVFbmFibGVkLGk9dGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwLG89dGhpcy5hcmVIZWFsdGhQaWxsc0xvYWRpbmc7aWYobilyZXR1cm4gaS50b0ZpeGVkKDApO2lmKG8pcmV0dXJuIDA7Zm9yKGxldCBhIGluIHQpcmV0dXJuIHRbYV1bcl0uc3RlcC50b0ZpeGVkKDApO3JldHVybiAwfWdldCBfYmlnZ2VzdFN0ZXBFdmVyU2Vlbigpe3ZhciB0PXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscztmb3IobGV0IG4gaW4gdCl7dmFyIHI9dFtuXTtyZXR1cm4gTWF0aC5tYXgodGhpcy5fYmlnZ2VzdFN0ZXBFdmVyU2VlbixyW3IubGVuZ3RoLTFdLnN0ZXApfXJldHVybiB0aGlzLl9iaWdnZXN0U3RlcEV2ZXJTZWVufHwwfWdldCBfbWF4U3RlcEluZGV4KCl7dmFyIHQ9dGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzO2ZvcihsZXQgciBpbiB0KXJldHVybiB0W3JdLmxlbmd0aC0xO3JldHVybiAwfV9oYXNEZWJ1Z2dlck51bWVyaWNBbGVydHModCl7cmV0dXJuIHQmJnQubGVuZ3RofV91cGRhdGVBbGVydHNMaXN0KCl7dmFyIHQ9dGhpcy5kZWJ1Z2dlck51bWVyaWNBbGVydHMscj10aGlzLiQkKCIjbnVtZXJpYy1hbGVydHMtYm9keSIpO2lmKCEhcil7ci5pbm5lclRleHQ9IiI7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl0sbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTthLmlubmVyVGV4dD1Hc2UoaS5maXJzdF90aW1lc3RhbXApLGEuY2xhc3NMaXN0LmFkZCgiZmlyc3Qtb2ZmZW5zZS10ZCIpLG8uYXBwZW5kQ2hpbGQoYSk7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTtzLmNsYXNzTGlzdC5hZGQoInRlbnNvci1kZXZpY2UtdGQiKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLmNsYXNzTGlzdC5hZGQoInRlbnNvci1zZWN0aW9uLXdpdGhpbi10YWJsZSIpLGwuaW5uZXJUZXh0PWkudGVuc29yX25hbWUsdGhpcy5fYWRkT3BFeHBhbnNpb25MaXN0ZW5lcihsLGkudGVuc29yX25hbWUpLHMuYXBwZW5kQ2hpbGQobCk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yy5jbGFzc0xpc3QuYWRkKCJkZXZpY2Utc2VjdGlvbi13aXRoaW4tdGFibGUiKSxjLmlubmVyVGV4dD0iKCIraS5kZXZpY2VfbmFtZSsiKSIscy5hcHBlbmRDaGlsZChjKSxvLmFwcGVuZENoaWxkKHMpO3ZhciB1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3UuY2xhc3NMaXN0LmFkZCgibWluaS1oZWFsdGgtcGlsbCIpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7aWYoaC5jbGFzc0xpc3QuYWRkKCJtaW5pLWhlYWx0aC1waWxsLXRkIiksaC5hcHBlbmRDaGlsZCh1KSxvLmFwcGVuZENoaWxkKGgpLGkubmVnX2luZl9ldmVudF9jb3VudCl7dmFyIGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zi5jbGFzc0xpc3QuYWRkKCJuZWdhdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIiksZi5pbm5lclRleHQ9aS5uZWdfaW5mX2V2ZW50X2NvdW50LGYuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaS5uZWdfaW5mX2V2ZW50X2NvdW50KyIgZXZlbnRzIHdpdGggLVx1MjIxRSIpLHUuYXBwZW5kQ2hpbGQoZil9aWYoaS5wb3NfaW5mX2V2ZW50X2NvdW50KXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLmNsYXNzTGlzdC5hZGQoInBvc2l0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24iKSxwLmlubmVyVGV4dD1pLnBvc19pbmZfZXZlbnRfY291bnQscC5zZXRBdHRyaWJ1dGUoInRpdGxlIixpLnBvc19pbmZfZXZlbnRfY291bnQrIiBldmVudHMgd2l0aCArXHUyMjFFIiksdS5hcHBlbmRDaGlsZChwKX1pZihpLm5hbl9ldmVudF9jb3VudCl7dmFyIGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZC5jbGFzc0xpc3QuYWRkKCJuYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIiksZC5pbm5lclRleHQ9aS5uYW5fZXZlbnRfY291bnQsZC5zZXRBdHRyaWJ1dGUoInRpdGxlIixpLm5hbl9ldmVudF9jb3VudCsiIGV2ZW50cyB3aXRoIE5hTiIpLHUuYXBwZW5kQ2hpbGQoZCl9enQocikuYXBwZW5kQ2hpbGQobyl9fX1fYWRkT3BFeHBhbnNpb25MaXN0ZW5lcih0LHIpe3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57dmFyIG49aGxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2VuZSIpLHRoaXMucmVuZGVySGllcmFyY2h5LHIpLGksbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJ0Zi1ncmFwaC1pbmZvI2dyYXBoLWluZm8iKTtvJiYoaT1vLnNjcm9sbEhlaWdodC1vLnNjcm9sbFRvcCk7dmFyIGE9dGhpcy5zZWxlY3RlZE5vZGU7dGhpcy5zZXQoInNlbGVjdGVkTm9kZSIsbik7dmFyIHM9KCk9PntvLnNjcm9sbFRvcD1vLnNjcm9sbEhlaWdodC1pfTtvJiYoYT9zKCk6d2luZG93LnNldFRpbWVvdXQocywyMCkpfSl9fTtsby50ZW1wbGF0ZT1RYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIHsKICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgewogICAgICAgIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWVudHJ5IC5jb2xvci1wcmV2aWV3IHsKICAgICAgICB3aWR0aDogMjZweDsKICAgICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW46IDAgMTBweCAwIDA7CiAgICAgIH0KCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAuY29sb3ItbGFiZWwsCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAudGVuc29yLWNvdW50IHsKICAgICAgICBjb2xvcjogIzc3NzsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICBsaW5lLWhlaWdodDogMjZweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgLnRlbnNvci1jb3VudCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAjaGVhbHRoLXBpbGwtc3RlcC1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyogMzEgY29tZXMgZnJvbSBhZGRpbmcgYSBwYWRkaW5nIG9mIDE1cHggZnJvbSBib3RoIHNpZGVzIG9mIHRoZSBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nCiAgICogMXB4IHNvIHRoYXQgdGhlIHNsaWRlciB3aWR0aCBhbGlnbnMgd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwKICAgKiBhbmQgYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICogQXBwYXJlbnRseSwgdGhlIHBhcGVyLXNsaWRlciBsYWNrcyBhIG1peGluIGZvciB0aG9zZSBwYWRkaW5nIHZhbHVlcy4gKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgIH0KCiAgICAgICNoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI2hlYWx0aC1waWxsLXN0ZXAtbnVtYmVyLWlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgICNudW1lcmljLWFsZXJ0cy10YWJsZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlIHRkIHsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAjbnVtZXJpYy1hbGVydHMtdGFibGUgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICB9CgogICAgICAudGVuc29yLWRldmljZS10ZCB7CiAgICAgICAgbWF4LXdpZHRoOiAxNDBweDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGU6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5kZXZpY2Utc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCB7CiAgICAgICAgd2lkdGg6IDEzMHB4OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCA+IGRpdiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgI2V2ZW50LWNvdW50cy10aCB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgfQoKICAgICAgLm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUsIDE0MSwgMCk7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5wb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMCwgNjIsIDIxMik7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjA0LCA0NywgNDQpOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAubmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiwKICAgICAgLnBvc2l0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24sCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgMTBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5uby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24gewogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJjYXJkIGhlYWx0aC1waWxsLWxlZ2VuZCI+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICBFbmFibGUgYWxsIChub3QganVzdCBzYW1wbGVkKSBzdGVwcy4gUmVxdWlyZXMgc2xvdyBkaXNrIHJlYWQuCiAgICAgIDwvZGl2PgogICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgIGlkPSJlbmFibGVBbGxTdGVwc01vZGVUb2dnbGUiCiAgICAgICAgY2hlY2tlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgID4KICAgICAgPC9wYXBlci10b2dnbGUtYnV0dG9uPgogICAgICA8aDI+CiAgICAgICAgU3RlcCBvZiBIZWFsdGggUGlsbHM6CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc3RlcC1udW1iZXItaW5wdXQiCiAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgbWF4PSJbW19iaWdnZXN0U3RlcEV2ZXJTZWVuXV0iCiAgICAgICAgICAgIHZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXA6OmlucHV0fX0iCiAgICAgICAgICAvPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFhbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgICAgW1tfY3VycmVudFN0ZXBEaXNwbGF5VmFsdWVdXQogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHBhcGVyLXNwaW5uZXItbGl0ZQogICAgICAgICAgYWN0aXZlCiAgICAgICAgICBoaWRkZW4kPSJbWyFhcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIgogICAgICAgID48L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgPC9oMj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2FsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgaWQ9ImhlYWx0aC1waWxsLXN0ZXAtc2xpZGVyIgogICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXB9fSIKICAgICAgICAgIG1heD0iW1tfYmlnZ2VzdFN0ZXBFdmVyU2Vlbl1dIgogICAgICAgICAgc25hcHMKICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICB2YWx1ZT0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWFsbFN0ZXBzTW9kZUVuYWJsZWRdXSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19tYXhTdGVwSW5kZXhdXSI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbC1zdGVwLXNsaWRlciIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxoMj4KICAgICAgICBIZWFsdGggUGlsbAogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlXV0iPgogICAgICAgICAgQ291bnRzIGZvciBTZWxlY3RlZCBOb2RlCiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIWhlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGVdXSI+CiAgICAgICAgICBMZWdlbmQKICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2gyPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW2hlYWx0aFBpbGxFbnRyaWVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWx0aC1waWxsLWVudHJ5Ij4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9ImNvbG9yLXByZXZpZXciCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOltbaXRlbS5iYWNrZ3JvdW5kX2NvbG9yXV0iCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sYWJlbCI+W1tpdGVtLmxhYmVsXV08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRlbnNvci1jb3VudCI+CiAgICAgICAgICAgIFtbX2NvbXB1dGVUZW5zb3JDb3VudFN0cmluZyhoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlLAogICAgICAgICAgICBpbmRleCldXQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgaGlkZGVuJD0iW1shX2hhc0RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyhkZWJ1Z2dlck51bWVyaWNBbGVydHMpXV0iPgogICAgICAgIDxoMiBpZD0ibnVtZXJpYy1hbGVydHMtaGVhZGVyIj5OdW1lcmljIEFsZXJ0czwvaDI+CiAgICAgICAgPHA+QWxlcnRzIGFyZSBzb3J0ZWQgZnJvbSB0b3AgdG8gYm90dG9tIGJ5IGluY3JlYXNpbmcgdGltZXN0YW1wLjwvcD4KICAgICAgICA8ZGl2IGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZS1jb250YWluZXIiPgogICAgICAgICAgPHRhYmxlIGlkPSJudW1lcmljLWFsZXJ0cy10YWJsZSI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+Rmlyc3QgT2ZmZW5zZTwvdGg+CiAgICAgICAgICAgICAgICA8dGg+VGVuc29yIChEZXZpY2UpPC90aD4KICAgICAgICAgICAgICAgIDx0aCBpZD0iZXZlbnQtY291bnRzLXRoIj5FdmVudCBDb3VudHM8L3RoPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keSBpZD0ibnVtZXJpYy1hbGVydHMtYm9keSI+PC90Ym9keT4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgIGlmPSJbWyFfaGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKGRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyldXSIKICAgICAgPgogICAgICAgIDxwIGNsYXNzPSJuby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24iPgogICAgICAgICAgTm8gbnVtZXJpYyBhbGVydHMgc28gZmFyLiBUaGF0IGlzIGxpa2VseSBnb29kLiBBbGVydHMgaW5kaWNhdGUgdGhlCiAgICAgICAgICBwcmVzZW5jZSBvZiBOYU4gb3IgKCsvLSkgSW5maW5pdHkgdmFsdWVzLCB3aGljaCBtYXkgYmUgY29uY2VybmluZy4KICAgICAgICA8L3A+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3BhcGVyLW1hdGVyaWFsPgogIGA7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsc28pXSxsby5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsby5wcm90b3R5cGUsImRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsby5wcm90b3R5cGUsIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGxvLnByb3RvdHlwZSwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sbG8ucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsby5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbG8ucHJvdG90eXBlLCJoaWdobGlnaHRlZE5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGxvLnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbG8ucHJvdG90eXBlLCJhcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLGxvLnByb3RvdHlwZSwiaGVhbHRoUGlsbEVudHJpZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxsby5wcm90b3R5cGUsImFsbFN0ZXBzTW9kZUVuYWJsZWQiLHZvaWQgMCk7RShbUnQoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLCJoZWFsdGhQaWxsU3RlcEluZGV4Iiwic2VsZWN0ZWROb2RlIiwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsImFyZUhlYWx0aFBpbGxzTG9hZGluZyIpLHcoImRlc2lnbjp0eXBlIixPYmplY3QpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGxvLnByb3RvdHlwZSwiaGVhbHRoUGlsbFZhbHVlc0ZvclNlbGVjdGVkTm9kZSIsbnVsbCk7RShbUnQoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLCJoZWFsdGhQaWxsU3RlcEluZGV4IiwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsInNwZWNpZmljSGVhbHRoUGlsbFN0ZXAiLCJhcmVIZWFsdGhQaWxsc0xvYWRpbmciKSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxsby5wcm90b3R5cGUsIl9jdXJyZW50U3RlcERpc3BsYXlWYWx1ZSIsbnVsbCk7RShbUnQoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiKSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxsby5wcm90b3R5cGUsIl9iaWdnZXN0U3RlcEV2ZXJTZWVuIixudWxsKTtFKFtSdCgibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIpLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGxvLnByb3RvdHlwZSwiX21heFN0ZXBJbmRleCIsbnVsbCk7RShbQnQoImRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sbG8ucHJvdG90eXBlLCJfdXBkYXRlQWxlcnRzTGlzdCIsbnVsbCk7bG89RShbeXQoInRmLWdyYXBoLWRlYnVnZ2VyLWRhdGEtY2FyZCIpXSxsbyk7dmFyIGljdD17fTskcyhpY3Qse0dyYXBoSWNvblR5cGU6KCk9Pm4xfSk7dmFyIG4xOyhmdW5jdGlvbihlKXtlLkNPTlNUPSJDT05TVCIsZS5NRVRBPSJNRVRBIixlLk9QPSJPUCIsZS5TRVJJRVM9IlNFUklFUyIsZS5TVU1NQVJZPSJTVU1NQVJZIn0pKG4xfHwobjE9e30pKTt2YXIgS3U9Y2xhc3MgZXh0ZW5kcyBHdChnbyhtdCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnZlcnRpY2FsPSExLHRoaXMuZmlsbE92ZXJyaWRlPW51bGwsdGhpcy5zdHJva2VPdmVycmlkZT1udWxsLHRoaXMuaGVpZ2h0PTIwLHRoaXMuZmFkZWQ9ITF9Z2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLiQuc3ZnRGVmc31nZXQgX2ZpbGwoKXt2YXIgdD10aGlzLnR5cGUscj10aGlzLmZpbGxPdmVycmlkZTtpZihyIT1udWxsKXJldHVybiByO3N3aXRjaCh0KXtjYXNlIG4xLk1FVEE6cmV0dXJuICR1LkRFRkFVTFRfRklMTDtjYXNlIG4xLlNFUklFUzpyZXR1cm4gSGx0LkRFRkFVTFRfRklMTDtkZWZhdWx0OnJldHVybiB5MC5ERUZBVUxUX0ZJTEx9fWdldCBfc3Ryb2tlKCl7dmFyIHQ9dGhpcy50eXBlLHI9dGhpcy5zdHJva2VPdmVycmlkZTtpZihyIT1udWxsKXJldHVybiByO3N3aXRjaCh0KXtjYXNlIG4xLk1FVEE6cmV0dXJuICR1LkRFRkFVTFRfU1RST0tFO2Nhc2UgbjEuU0VSSUVTOnJldHVybiBIbHQuREVGQVVMVF9TVFJPS0U7ZGVmYXVsdDpyZXR1cm4geTAuREVGQVVMVF9TVFJPS0V9fV9pc1R5cGUodCxyKXtyZXR1cm4gdD09PXJ9X2ZhZGVkQ2xhc3ModCxyKXtyZXR1cm4gdD8iZmFkZWQtIityOiIifX07S3UudGVtcGxhdGU9UWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtc2l6ZTogMDsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgc3ZnIHsKICAgICAgICBmaWx0ZXI6IGludmVydCgxKTsKICAgICAgfQoKICAgICAgLmZhZGVkLXJlY3QgewogICAgICAgIGZpbGw6IHVybCgjcmVjdEhhdGNoKTsKICAgICAgfQoKICAgICAgLmZhZGVkLWVsbGlwc2UgewogICAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKTsKICAgICAgfQoKICAgICAgLmZhZGVkLXJlY3QsCiAgICAgIC5mYWRlZC1lbGxpcHNlLAogICAgICAuZmFkZWQtc2VyaWVzIHsKICAgICAgICBzdHJva2U6IHZhcigtLXRiLWdyYXBoLWZhZGVkKSAhaW1wb3J0YW50OwogICAgICB9CiAgICAgICNyZWN0SGF0Y2ggbGluZSwKICAgICAgI2VsbGlwc2VIYXRjaCBsaW5lIHsKICAgICAgICBjb2xvcjogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICAgIGZpbGw6IHdoaXRlOwogICAgICAgIHN0cm9rZTogI2UwZDRiMyAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPCEtLSBTVkcgZm9yIGRlZmluaXRpb25zIC0tPgogICAgPHN2ZyBoZWlnaHQ9IjAiIHdpZHRoPSIwIiBpZD0ic3ZnRGVmcyI+CiAgICAgIDxkZWZzPgogICAgICAgIDwhLS0gSGF0Y2ggcGF0dGVybnMgZm9yIGZhZGVkIG91dCBub2Rlcy4gLS0+CiAgICAgICAgPHBhdHRlcm4KICAgICAgICAgIGlkPSJyZWN0SGF0Y2giCiAgICAgICAgICBwYXR0ZXJuVHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIKICAgICAgICAgIHdpZHRoPSI1IgogICAgICAgICAgaGVpZ2h0PSI1IgogICAgICAgICAgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgICA+CiAgICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iNSIgc3R5bGU9InN0cm9rZS13aWR0aDogMSI+PC9saW5lPgogICAgICAgIDwvcGF0dGVybj4KICAgICAgICA8cGF0dGVybgogICAgICAgICAgaWQ9ImVsbGlwc2VIYXRjaCIKICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIgogICAgICAgICAgd2lkdGg9IjIiCiAgICAgICAgICBoZWlnaHQ9IjIiCiAgICAgICAgICBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgID4KICAgICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSIyIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgICAgPC9wYXR0ZXJuPgogICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgZWxsaXBzZS4gLS0+CiAgICAgICAgPGVsbGlwc2UKICAgICAgICAgIGlkPSJvcC1ub2RlLXN0YW1wIgogICAgICAgICAgcng9IjcuNSIKICAgICAgICAgIHJ5PSIzIgogICAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgICA+PC9lbGxpcHNlPgogICAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgYW5ub3RhdGlvbiBlbGxpcHNlIChzbWFsbGVyKS4gLS0+CiAgICAgICAgPGVsbGlwc2UKICAgICAgICAgIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiCiAgICAgICAgICByeD0iNSIKICAgICAgICAgIHJ5PSIyIgogICAgICAgICAgc3Ryb2tlPSJpbmhlcml0IgogICAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgICA+PC9lbGxpcHNlPgogICAgICAgIDwhLS0gVmVydGljYWxseSBzdGFja2VkIHNlcmllcyBvZiBPcCBub2RlcyB3aGVuIHVuZXhwYW5kZWQuIC0tPgogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iOSI+PC91c2U+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI2Ij48L3VzZT4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjMiPjwvdXNlPgogICAgICAgIDwvZz4KICAgICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTYiIHk9IjQiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTIiIHk9IjQiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iNCI+PC91c2U+CiAgICAgICAgPC9nPgogICAgICAgIDxnCiAgICAgICAgICBpZD0ic3VtbWFyeS1pY29uIgogICAgICAgICAgZmlsbD0iIzg0ODQ4NCIKICAgICAgICAgIGhlaWdodD0iMTIiCiAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgICB3aWR0aD0iMTIiCiAgICAgICAgPgogICAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIKICAgICAgICAgID48L3BhdGg+CiAgICAgICAgPC9nPgogICAgICA8L2RlZnM+CiAgICA8L3N2Zz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdDT05TVCcpXV0iPgogICAgICA8c3ZnCiAgICAgICAgaGVpZ2h0JD0iW1toZWlnaHRdXSIKICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgPgogICAgICAgIDxjaXJjbGUKICAgICAgICAgIGN4PSI1IgogICAgICAgICAgY3k9IjUiCiAgICAgICAgICByPSIzIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgID48L2NpcmNsZT4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ1NVTU1BUlknKV1dIj4KICAgICAgPHN2ZwogICAgICAgIHdpZHRoJD0iW1toZWlnaHRdXSIKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICBmaWxsPSIjODQ4NDg0IgogICAgICA+CiAgICAgICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiCiAgICAgICAgPjwvcGF0aD4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ09QJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDE2IDgiCiAgICAgID4KICAgICAgICA8dXNlCiAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAnZWxsaXBzZScpfX0iCiAgICAgICAgICB4PSI4IgogICAgICAgICAgeT0iNCIKICAgICAgICA+PC91c2U+CiAgICAgIDwvc3ZnPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdNRVRBJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDM3IDE2IgogICAgICA+CiAgICAgICAgPHJlY3QKICAgICAgICAgIHg9IjEiCiAgICAgICAgICB5PSIxIgogICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAncmVjdCcpfX0iCiAgICAgICAgICBzdHJva2Utd2lkdGg9IjJweCIKICAgICAgICAgIGhlaWdodD0iMTQiCiAgICAgICAgICB3aWR0aD0iMzUiCiAgICAgICAgICByeD0iNSIKICAgICAgICAgIHJ5PSI1IgogICAgICAgID48L3JlY3Q+CiAgICAgIDwvc3ZnPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdTRVJJRVMnKV1dIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3ZlcnRpY2FsXV0iPgogICAgICAgIDxzdmcKICAgICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgdmlld0JveD0iMCAwIDE2IDE1IgogICAgICAgID4KICAgICAgICAgIDx1c2UKICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiCiAgICAgICAgICAgIGZpbGwkPSJbW19maWxsXV0iCiAgICAgICAgICAgIHN0cm9rZSQ9IltbX3N0cm9rZV1dIgogICAgICAgICAgICBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdzZXJpZXMnKX19IgogICAgICAgICAgICB4PSIwIgogICAgICAgICAgICB5PSIyIgogICAgICAgICAgPjwvdXNlPgogICAgICAgIDwvc3ZnPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIXZlcnRpY2FsXV0iPgogICAgICAgIDxzdmcKICAgICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgdmlld0JveD0iMCAwIDI0IDEwIgogICAgICAgID4KICAgICAgICAgIDx1c2UKICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgIHhsaW5rOmhyZWY9IiNvcC1zZXJpZXMtaG9yaXpvbnRhbC1zdGFtcCIKICAgICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICAgIGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhmYWRlZCwgJ3NlcmllcycpfX0iCiAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgIHk9IjEiCiAgICAgICAgICA+PC91c2U+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RlbXBsYXRlPgogIGA7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS3UucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3UucHJvdG90eXBlLCJ2ZXJ0aWNhbCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxLdS5wcm90b3R5cGUsImZpbGxPdmVycmlkZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxLdS5wcm90b3R5cGUsInN0cm9rZU92ZXJyaWRlIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLEt1LnByb3RvdHlwZSwiaGVpZ2h0Iix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sS3UucHJvdG90eXBlLCJmYWRlZCIsdm9pZCAwKTtFKFtSdCgidHlwZSIsImZpbGxPdmVycmlkZSIpLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEt1LnByb3RvdHlwZSwiX2ZpbGwiLG51bGwpO0UoW1J0KCJ0eXBlIiwic3Ryb2tlT3ZlcnJpZGUiKSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxLdS5wcm90b3R5cGUsIl9zdHJva2UiLG51bGwpO0t1PUUoW3l0KCJ0Zi1ncmFwaC1pY29uIildLEt1KTt2YXIgRnM9Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubm9kZT1udWxsLHRoaXMucmVuZGVySW5mbz1udWxsLHRoaXMuY29sb3JCeT1Hbi5TVFJVQ1RVUkUsdGhpcy50ZW1wbGF0ZUluZGV4PW51bGwsdGhpcy50eXBlPW51bGwsdGhpcy52ZXJ0aWNhbD0hMSx0aGlzLmNvbnN0PSExLHRoaXMuc3VtbWFyeT0hMSx0aGlzLmZpbGw9bnVsbCx0aGlzLmhlaWdodD0yMH1fY29tcHV0ZUZpbGxPdmVycmlkZSh0LHIsbixpLG8pe3JldHVybiB0JiZyJiZpP1BIKGksbixyLCExKTpvfV9nZXRTdHJva2VPdmVycmlkZSh0KXtyZXR1cm4gdD9RbHQodCk6bnVsbH1fZ2V0VHlwZSh0LHIsbixpKXtsZXR7R3JhcGhJY29uVHlwZTpvfT1pY3Q7aWYodClzd2l0Y2godC50eXBlKXtjYXNlIGp0Lk9QOntsZXQgYT10Lm9wO3JldHVybiB0eXBlb2YgYSE9InN0cmluZyI/by5PUDphPT09IkNvbnN0Inx8bj9vLkNPTlNUOmEuZW5kc1dpdGgoIlN1bW1hcnkiKXx8cj9vLlNVTU1BUlk6by5PUH1jYXNlIGp0Lk1FVEE6cmV0dXJuIG8uTUVUQTtjYXNlIGp0LlNFUklFUzpyZXR1cm4gby5TRVJJRVN9cmV0dXJuIGl9X2lzVmVydGljYWwodCxyKXtyZXR1cm4gdD90Lmhhc05vbkNvbnRyb2xFZGdlczohIXJ9X2dldEZhZGVkKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXR9X29uRmlsbE92ZXJyaWRlQ2hhbmdlZCh0LHIpe2xldHtub2RlOm4scmVuZGVySW5mbzppLGNvbG9yQnk6byx0ZW1wbGF0ZUluZGV4OmF9PXRoaXM7dCE9PXImJkFIKHRoaXMuJC5pY29uLmdldFN2Z0RlZmluYWJsZUVsZW1lbnQoKSksbiYmaSYmYSYmUEgoYSxvLGksITEsdGhpcy4kLmljb24uZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpKX19O0ZzLnRlbXBsYXRlPVFgCiAgICA8c3R5bGU+CiAgICAgIHRmLWdyYXBoLWljb24gewogICAgICAgIC0tdGItZ3JhcGgtZmFkZWQ6IHZhcigtLXRiLWdyYXBoLWZhZGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgIGlkPSJpY29uIgogICAgICB0eXBlPSJbW19nZXRUeXBlKG5vZGUsIHN1bW1hcnksIGNvbnN0LCB0eXBlKV1dIgogICAgICBoZWlnaHQ9IltbaGVpZ2h0XV0iCiAgICAgIGZpbGwtb3ZlcnJpZGU9IltbX2ZpbGxPdmVycmlkZV1dIgogICAgICBzdHJva2Utb3ZlcnJpZGU9IltbX2dldFN0cm9rZU92ZXJyaWRlKF9maWxsT3ZlcnJpZGUpXV0iCiAgICAgIGZhZGVkPSJbW19nZXRGYWRlZChyZW5kZXJJbmZvKV1dIgogICAgICB2ZXJ0aWNhbD0iW1tfaXNWZXJ0aWNhbChub2RlLCB2ZXJ0aWNhbCldXSIKICAgID48L3RmLWdyYXBoLWljb24+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxGcy5wcm90b3R5cGUsIm5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRnMucHJvdG90eXBlLCJyZW5kZXJJbmZvIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLEZzLnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxGcy5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRnMucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sRnMucHJvdG90eXBlLCJ2ZXJ0aWNhbCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEZzLnByb3RvdHlwZSwiY29uc3QiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxGcy5wcm90b3R5cGUsInN1bW1hcnkiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRnMucHJvdG90eXBlLCJmaWxsIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLEZzLnByb3RvdHlwZSwiaGVpZ2h0Iix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZUZpbGxPdmVycmlkZShub2RlLCByZW5kZXJJbmZvLCBjb2xvckJ5LCB0ZW1wbGF0ZUluZGV4LCBmaWxsKSIsb2JzZXJ2ZXI6Il9vbkZpbGxPdmVycmlkZUNoYW5nZWQifSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLEZzLnByb3RvdHlwZSwiX2ZpbGxPdmVycmlkZSIsdm9pZCAwKTtGcz1FKFt5dCgidGYtbm9kZS1pY29uIildLEZzKTt2YXIgVWM9Y2xhc3MgZXh0ZW5kcyBHdChtdCl7X2l0ZW1UeXBlQ2hhbmdlZCgpe3RoaXMuaXRlbVR5cGUhPT0ic3Vibm9kZSI/dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QuYWRkKCJjbGlja2FibGUiKTp0aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5yZW1vdmUoImNsaWNrYWJsZSIpfV9ub2RlTGlzdGVuZXIodCl7dGhpcy5maXJlKCJub2RlLWxpc3QtaXRlbS0iK3QudHlwZSx7bm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfV9mYWRlZENsYXNzKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXQ/ImZhZGVkIjoiIn19O1VjLnRlbXBsYXRlPVFgCiAgICA8c3R5bGU+CiAgICAgICNsaXN0LWl0ZW0gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ29vZ2xlLXllbGxvdy0xMDApOwogICAgICB9CgogICAgICAuY2xpY2thYmxlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3BhbiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0uZXhjbHVkZWQgc3BhbiB7CiAgICAgICAgY29sb3I6ICM5OTk7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3Bhbi5lZGdlLWxhYmVsIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgIH0KCiAgICAgIC5ub2RlLWljb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDFweDsKICAgICAgICBsZWZ0OiAycHg7CiAgICAgIH0KCiAgICAgIC5mYWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYKICAgICAgaWQ9Imxpc3QtaXRlbSIKICAgICAgb24tbW91c2VvdmVyPSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1tb3VzZW91dD0iX25vZGVMaXN0ZW5lciIKICAgICAgb24tY2xpY2s9Il9ub2RlTGlzdGVuZXIiCiAgICA+CiAgICAgIDxkaXYgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGl0ZW1SZW5kZXJJbmZvKX19Ij4KICAgICAgICA8dGYtbm9kZS1pY29uCiAgICAgICAgICBjbGFzcz0ibm9kZS1pY29uIgogICAgICAgICAgaGVpZ2h0PSIxMiIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0iW1tjb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgICBub2RlPSJbW2l0ZW1Ob2RlXV0iCiAgICAgICAgICByZW5kZXItaW5mbz0iW1tpdGVtUmVuZGVySW5mb11dIgogICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbdGVtcGxhdGVJbmRleF1dIgogICAgICAgID4KICAgICAgICA8L3RmLW5vZGUtaWNvbj4KICAgICAgICA8c3BhbiB0aXRsZSQ9IltbbmFtZV1dIj5bW25hbWVdXTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFVjLnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVWMucHJvdG90eXBlLCJpdGVtTm9kZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVYy5wcm90b3R5cGUsImVkZ2VMYWJlbCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxVYy5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFVjLnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2l0ZW1UeXBlQ2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sVWMucHJvdG90eXBlLCJpdGVtVHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxVYy5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sVWMucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sVWMucHJvdG90eXBlLCJ0ZW1wbGF0ZUluZGV4Iix2b2lkIDApO1VjPUUoW3l0KCJ0Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtIildLFVjKTt2YXIgb3M9Y2xhc3MgZXh0ZW5kcyBHdChnbyhtdCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBhbmRlZD0hMCx0aGlzLl9vcENvbXBhdENvbG9yPXkwLkNPTVBBVElCTEUsdGhpcy5fb3BJbmNvbXBhdENvbG9yPXkwLklOQ09NUEFUSUJMRSx0aGlzLl90ZW1wbGF0ZUluZGV4PW51bGx9X2dldE5vZGUodCxyKXtyZXR1cm4gci5ub2RlKHQpfV9nZXRSZW5kZXJJbmZvKHQscil7cmV0dXJuIHRoaXMucmVuZGVySGllcmFyY2h5LmdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZSh0KX1fdG9nZ2xlRXhwYW5kZWQoKXt0aGlzLl9leHBhbmRlZD0hdGhpcy5fZXhwYW5kZWR9X2dldFRvZ2dsZUljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifV9yZXNpemVMaXN0KHQpe3ZhciByPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk7ciYmci5maXJlKCJpcm9uLXJlc2l6ZSIpfWdldCBfaW5jb21wYXRpYmxlT3BOb2Rlcygpe2xldCB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIXR8fCF0LnJvb3Q/W106KHRoaXMuYXN5bmModGhpcy5fcmVzaXplTGlzdC5iaW5kKHRoaXMsIiNpbmNvbXBhdGlibGVPcHNMaXN0IikpLG9sZSh0KSl9Z2V0IF9vcENvbXBhdFNjb3JlKCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0JiZ0LnJvb3Qpe3ZhciByPXQucm9vdCxuPXIuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlLGk9ci5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZTtpZihuPT0wJiZpPT0wKXJldHVybiAwO3ZhciBvPW4raTtyZXR1cm4gTWF0aC5mbG9vcigxMDAqbi9vKS8xMDB9cmV0dXJuIDB9Z2V0IF9vcENvbXBhdFNjb3JlTGFiZWwoKXt2YXIgdD10aGlzLl9vcENvbXBhdFNjb3JlO3JldHVybiB4bigiLjAlIikodCl9Z2V0IF90b3RhbEluY29tcGF0T3BzKCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtyZXR1cm4gdCYmdC5yb290P3Qucm9vdC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZTowfV9ncmFwaEhpZXJhcmNoeUNoYW5nZWQoKXt0aGlzLl90ZW1wbGF0ZUluZGV4PXRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLHRoaXMuZ3JhcGhIaWVyYXJjaHkuYWRkTGlzdGVuZXIoRGQuVEVNUExBVEVTX1VQREFURUQsKCk9Pnt0aGlzLl90ZW1wbGF0ZUluZGV4PXRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpfSl9fTtvcy50ZW1wbGF0ZT1RYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIC5pbmNvbXBhdGlibGUtb3BzLWxpc3QgewogICAgICAgIGhlaWdodDogMzUwcHg7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgaXJvbi1saXN0IHsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbSB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0tYm9keVt0d28tbGluZV0gewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggNHB4OwogICAgICB9CgogICAgICAuZXhwYW5kZWRJbmZvIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vZGUtbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgZm9udC1zaXplOiAxNHB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5zdWJ0aXRsZSB7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDEycHQ7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLm5vbi1jb250cm9sLWxpc3QtaXRlbSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgICB9CgogICAgICBkaXYub3AtY29tcGF0LWRpc3BsYXkgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAvKioKICAgICAgICogU2FkbHksIGJlY2F1c2UgdGhlIHdob2xlIGJvZHkgaXMgaW52ZXJ0ZWQgaW4gY29sb3IsIGxlZ2VuZHMgYWxzbyBuZWVkCiAgICAgICAqIHRvIGJlIGludmVydGVkLgogICAgICAgKiovCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIGRpdi5vcC1jb21wYXQtZGlzcGxheSB7CiAgICAgICAgZmlsdGVyOiBpbnZlcnQoMSk7CiAgICAgIH0KCiAgICAgIHN2Zy5vcC1jb21wYXQgewogICAgICAgIHdpZHRoOiAyNTBweDsKICAgICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIH0KCiAgICAgIGRpdi5vcC1jb21wYXQtdmFsdWUgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiBibGFjazsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaXRlbT4KICAgICAgPHBhcGVyLWl0ZW0tYm9keSB0d28tbGluZT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX2V4cGFuZGVkKX19IgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgID4KICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub2RlLW5hbWUiIGlkPSJub2RldGl0bGUiPltbbm9kZVRpdGxlXV08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNlY29uZGFyeT4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3AtY29tcGF0LWRpc3BsYXkiPgogICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgIGNsYXNzPSJvcC1jb21wYXQiCiAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgICAgICAgdmlld0JveD0iMCAwIDI1MCAyNSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJvcC1jb21wYXQtZmlsbCI+CiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yJD0iW1tfb3BDb21wYXRDb2xvcl1dIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCQ9IltbX29wQ29tcGF0U2NvcmVdXSIKICAgICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19vcENvbXBhdENvbG9yXV0iCiAgICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0JD0iW1tfb3BDb21wYXRTY29yZV1dIgogICAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvciQ9IltbX29wSW5jb21wYXRDb2xvcl1dIgogICAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yJD0iW1tfb3BJbmNvbXBhdENvbG9yIF1dIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgICA8cmVjdAogICAgICAgICAgICAgICAgICBoZWlnaHQ9IjI1IgogICAgICAgICAgICAgICAgICB3aWR0aD0iMjUwIgogICAgICAgICAgICAgICAgICByeD0iNSIKICAgICAgICAgICAgICAgICAgcnk9IjUiCiAgICAgICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiB1cmwoJyNvcC1jb21wYXQtZmlsbCcpOyIKICAgICAgICAgICAgICAgID48L3JlY3Q+CiAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3AtY29tcGF0LXZhbHVlIj5bW19vcENvbXBhdFNjb3JlTGFiZWxdXTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3BhcGVyLWl0ZW0tYm9keT4KICAgIDwvcGFwZXItaXRlbT4KCiAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X2V4cGFuZGVkfX0iPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2V4cGFuZGVkfX0iIHJlc3RhbXA9InRydWUiPgogICAgICAgIDxkaXYgY2xhc3M9ImV4cGFuZGVkSW5mbyI+CiAgICAgICAgICBJbmNvbXBhdGlibGUgT3BlcmF0aW9uczogKDxzcGFuPltbX3RvdGFsSW5jb21wYXRPcHNdXTwvc3Bhbj4pCiAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgIGNsYXNzPSJpbmNvbXBhdGlibGUtb3BzLWxpc3QiCiAgICAgICAgICAgIGlkPSJpbmNvbXBhdGlibGVPcHNMaXN0IgogICAgICAgICAgICBpdGVtcz0iW1tfaW5jb21wYXRpYmxlT3BOb2Rlc11dIgogICAgICAgICAgPgogICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgPHRmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0KICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbV1dIgogICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tfZ2V0UmVuZGVySW5mbyhpdGVtLm5hbWUsIHJlbmRlckhpZXJhcmNoeSldXSIKICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgICAgICAgICAgaXRlbS10eXBlPSJpbmNvbXBhdGlibGUtb3BzIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3RmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvaXJvbi1jb2xsYXBzZT4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLGlzKV0sb3MucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixzbyldLG9zLnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLG9zLnByb3RvdHlwZSwibm9kZVRpdGxlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sb3MucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sb3MucHJvdG90eXBlLCJfb3BDb21wYXRDb2xvciIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxvcy5wcm90b3R5cGUsIl9vcEluY29tcGF0Q29sb3IiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sb3MucHJvdG90eXBlLCJfdGVtcGxhdGVJbmRleCIsdm9pZCAwKTtFKFtSdCgiZ3JhcGhIaWVyYXJjaHkiKSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLG9zLnByb3RvdHlwZSwiX2luY29tcGF0aWJsZU9wTm9kZXMiLG51bGwpO0UoW1J0KCJncmFwaEhpZXJhcmNoeSIpLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLG9zLnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmUiLG51bGwpO0UoW1J0KCJfb3BDb21wYXRTY29yZSIpLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLG9zLnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmVMYWJlbCIsbnVsbCk7RShbUnQoImdyYXBoSGllcmFyY2h5IiksdygiZGVzaWduOnR5cGUiLE51bWJlciksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sb3MucHJvdG90eXBlLCJfdG90YWxJbmNvbXBhdE9wcyIsbnVsbCk7RShbQnQoImdyYXBoSGllcmFyY2h5IiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxvcy5wcm90b3R5cGUsIl9ncmFwaEhpZXJhcmNoeUNoYW5nZWQiLG51bGwpO29zPUUoW3l0KCJ0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZCIpXSxvcyk7dmFyIHMzPUVlKE9lKCksMSk7dmFyIHFjPWNsYXNzIGV4dGVuZHMgR3QoZ28obXQpKXtfaXRlbVR5cGVDaGFuZ2VkKCl7dGhpcy5pdGVtVHlwZSE9PSJzdWJub2RlIj90aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5hZGQoImNsaWNrYWJsZSIpOnRoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LnJlbW92ZSgiY2xpY2thYmxlIil9X25vZGVMaXN0ZW5lcih0KXt0aGlzLmZpcmUoIm5vZGUtbGlzdC1pdGVtLSIrdC50eXBlLHtjYXJkTm9kZTp0aGlzLmNhcmROb2RlLm5hbWUsbm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfV9mYWRlZENsYXNzKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXQ/ImZhZGVkIjoiIn19O3FjLnRlbXBsYXRlPVFgCiAgICA8c3R5bGU+CiAgICAgICNsaXN0LWl0ZW0gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ29vZ2xlLXllbGxvdy0xMDApOwogICAgICB9CgogICAgICA6aG9zdCguZGFyay1tb2RlKSAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci15ZWxsb3ctOTAwKTsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgfQoKICAgICAgLmNsaWNrYWJsZSB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtIHNwYW4gewogICAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4OwogICAgICB9CgogICAgICAjbGlzdC1pdGVtLmV4Y2x1ZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiAjOTk5OwogICAgICB9CgogICAgICAjbGlzdC1pdGVtIHNwYW4uZWRnZS1sYWJlbCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBtYXJnaW4tbGVmdDogM3B4OwogICAgICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgICB9CgogICAgICAubm9kZS1pY29uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxcHg7CiAgICAgICAgbGVmdDogMnB4OwogICAgICB9CgogICAgICAuZmFkZWQgc3BhbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWZhZGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYKICAgICAgaWQ9Imxpc3QtaXRlbSIKICAgICAgb24tbW91c2VvdmVyPSJfbm9kZUxpc3RlbmVyIgogICAgICBvbi1tb3VzZW91dD0iX25vZGVMaXN0ZW5lciIKICAgICAgb24tY2xpY2s9Il9ub2RlTGlzdGVuZXIiCiAgICA+CiAgICAgIDxkaXYgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGl0ZW1SZW5kZXJJbmZvKX19Ij4KICAgICAgICA8dGYtbm9kZS1pY29uCiAgICAgICAgICBjbGFzcz0ibm9kZS1pY29uIgogICAgICAgICAgaGVpZ2h0PSIxMiIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0iW1tjb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgICBub2RlPSJbW2l0ZW1Ob2RlXV0iCiAgICAgICAgICByZW5kZXItaW5mbz0iW1tpdGVtUmVuZGVySW5mb11dIgogICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbdGVtcGxhdGVJbmRleF1dIgogICAgICAgID48L3RmLW5vZGUtaWNvbj4KICAgICAgICA8c3BhbiB0aXRsZSQ9IltbbmFtZV1dIj5bW25hbWVdXTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iZWRnZS1sYWJlbCI+W1tlZGdlTGFiZWxdXTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHFjLnByb3RvdHlwZSwiY2FyZE5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scWMucHJvdG90eXBlLCJpdGVtTm9kZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxxYy5wcm90b3R5cGUsImVkZ2VMYWJlbCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxxYy5wcm90b3R5cGUsIml0ZW1SZW5kZXJJbmZvIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHFjLnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2l0ZW1UeXBlQ2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scWMucHJvdG90eXBlLCJpdGVtVHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxxYy5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scWMucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHFjLnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKTtxYz1FKFt5dCgidGYtbm9kZS1saXN0LWl0ZW0iKV0scWMpO3ZhciBkbj1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZXhwYW5kZWQ9ITAsdGhpcy5fb3BlbmVkQ29udHJvbFByZWQ9ITEsdGhpcy5fb3BlbmVkQ29udHJvbFN1Y2M9ITEsdGhpcy5fdGVtcGxhdGVJbmRleD1udWxsfWV4cGFuZE5vZGUoKXt0aGlzLmZpcmUoIl9ub2RlLmV4cGFuZCIsdGhpcy5ub2RlKX1fZ2V0Tm9kZSh0LHIpe3JldHVybiByLm5vZGUodCl9X2dldE5vZGVTdGF0cyh0LHIpe3ZhciBuPXRoaXMuX2dldE5vZGUodCxyKTtyZXR1cm4gbj9uLnN0YXRzOm51bGx9X2dldFRvdGFsTWljcm9zKHQpe3JldHVybiB0P3QuZ2V0VG90YWxNaWNyb3MoKTowfWdldCBfaGFzRGlzcGxheWFibGVOb2RlU3RhdHMoKXt2YXIgdD10aGlzLl9ub2RlU3RhdHM7cmV0dXJuIHBIKHQpfWdldCBfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXMoKXt2YXIgdD10aGlzLl9ub2RlU3RhdHM7aWYoISghdHx8IXQudG90YWxCeXRlcykpcmV0dXJuIE5kKHQudG90YWxCeXRlcyxlUCl9Z2V0IF9ub2RlU3RhdHNGb3JtYXR0ZWRDb21wdXRlVGltZSgpe3ZhciB0PXRoaXMuX25vZGVTdGF0cztpZighKCF0fHwhdC5nZXRUb3RhbE1pY3JvcygpKSlyZXR1cm4gTmQodC5nZXRUb3RhbE1pY3JvcygpLHJQKX1nZXQgX25vZGVTdGF0c0Zvcm1hdHRlZE91dHB1dFNpemVzKCl7dmFyIHQ9dGhpcy5fbm9kZVN0YXRzO2lmKCEoIXR8fCF0Lm91dHB1dFNpemV8fCF0Lm91dHB1dFNpemUubGVuZ3RoKSlyZXR1cm4gczMubWFwKHQub3V0cHV0U2l6ZSxmdW5jdGlvbihyKXtyZXR1cm4gci5sZW5ndGg9PT0wPyJzY2FsYXIiOiJbIityLmpvaW4oIiwgIikrIl0ifSl9X2dldFJlbmRlckluZm8odCxyKXtyZXR1cm4gdGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKHQpfWdldCBfYXR0cmlidXRlcygpe3ZhciB0PXRoaXMuX25vZGU7aWYodGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcywiI2F0dHJpYnV0ZXNMaXN0IikpLCF0fHwhdC5hdHRyKXJldHVybltdO3ZhciByPVtdO3JldHVybiBzMy5lYWNoKHQuYXR0cixmdW5jdGlvbihuKXtuLmtleT09PSRzZT9yPXIuY29uY2F0KG4udmFsdWUubGlzdC5zLm1hcChmdW5jdGlvbihpKXtyZXR1cm57a2V5OmksdmFsdWU6IlRvbyBsYXJnZSB0byBzaG93Li4uIn19KSk6ci5wdXNoKHtrZXk6bi5rZXksdmFsdWU6SlNPTi5zdHJpbmdpZnkobi52YWx1ZSl9KX0pLHJ9Z2V0IF9kZXZpY2UoKXt2YXIgdD10aGlzLl9ub2RlO3JldHVybiB0P3QuZGV2aWNlOm51bGx9Z2V0IF9zdWNjZXNzb3JzKCl7dmFyIHQ9dGhpcy5fbm9kZSxyPXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHRoaXMuX3JlZnJlc2hOb2RlSXRlbUxpc3QoImlucHV0c0xpc3QiKSx0P3RoaXMuX2NvbnZlcnRFZGdlTGlzdFRvRWRnZUluZm9MaXN0KHIuZ2V0U3VjY2Vzc29ycyh0Lm5hbWUpLCExLHQuaXNHcm91cE5vZGUpOntyZWd1bGFyOltdLGNvbnRyb2w6W119fWdldCBfcHJlZGVjZXNzb3JzKCl7dmFyIHQ9dGhpcy5fbm9kZSxyPXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHRoaXMuX3JlZnJlc2hOb2RlSXRlbUxpc3QoIm91dHB1dHNMaXN0IiksdD90aGlzLl9jb252ZXJ0RWRnZUxpc3RUb0VkZ2VJbmZvTGlzdChyLmdldFByZWRlY2Vzc29ycyh0Lm5hbWUpLCEwLHQuaXNHcm91cE5vZGUpOntyZWd1bGFyOltdLGNvbnRyb2w6W119fWdldCBfZnVuY3Rpb25Vc2FnZXMoKXt2YXIgdD10aGlzLl9ub2RlLHI9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0aGlzLl9yZWZyZXNoTm9kZUl0ZW1MaXN0KCJmdW5jdGlvblVzYWdlc0xpc3QiKSwhdHx8dC50eXBlIT09anQuTUVUQSlyZXR1cm5bXTtsZXQgbj1yLmxpYnJhcnlGdW5jdGlvbnNbdC5hc3NvY2lhdGVkRnVuY3Rpb25dO3JldHVybiBuP24udXNhZ2VzOltdfV9yZWZyZXNoTm9kZUl0ZW1MaXN0KHQpe3RoaXMuYXN5bmModGhpcy5fcmVzaXplTGlzdC5iaW5kKHRoaXMsYCMke3R9YCkpfV9jb252ZXJ0RWRnZUxpc3RUb0VkZ2VJbmZvTGlzdCh0LHIsbil7dmFyIGk9YT0+czMubWFwKGEuYmFzZUVkZ2VMaXN0LHM9Pnt2YXIgbD1yP3MudjpzLnc7cmV0dXJue25hbWU6bCxub2RlOnRoaXMuX2dldE5vZGUobCx0aGlzLmdyYXBoSGllcmFyY2h5KSxlZGdlTGFiZWw6V2x0KHMsdGhpcy5yZW5kZXJIaWVyYXJjaHkpLHJlbmRlckluZm86dGhpcy5fZ2V0UmVuZGVySW5mbyhsLHRoaXMucmVuZGVySGllcmFyY2h5KX19KSxvPWZ1bmN0aW9uKGEpe3ZhciBzPVtdO3JldHVybiBzMy5lYWNoKGEsbD0+e3ZhciBjPXI/bC52Omwudzshbnx8bC5iYXNlRWRnZUxpc3QubGVuZ3RoPT0xP3M9cy5jb25jYXQoaShsKSk6cy5wdXNoKHtuYW1lOmMsbm9kZTp0aGlzLl9nZXROb2RlKGMsdGhpcy5ncmFwaEhpZXJhcmNoeSksZWRnZUxhYmVsOllsdChsLHRoaXMucmVuZGVySGllcmFyY2h5KSxyZW5kZXJJbmZvOnRoaXMuX2dldFJlbmRlckluZm8oYyx0aGlzLnJlbmRlckhpZXJhcmNoeSl9KX0pLHN9LmJpbmQodGhpcyk7cmV0dXJue3JlZ3VsYXI6byh0LnJlZ3VsYXIpLGNvbnRyb2w6byh0LmNvbnRyb2wpfX1nZXQgX3N1Ym5vZGVzKCl7dmFyIHQ9dGhpcy5fbm9kZTtyZXR1cm4gdCYmdC5tZXRhZ3JhcGg/dC5tZXRhZ3JhcGgubm9kZXMoKTpudWxsfWdldCBfdG90YWxQcmVkZWNlc3NvcnMoKXt2YXIgdD10aGlzLl9wcmVkZWNlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1nZXQgX3RvdGFsU3VjY2Vzc29ycygpe3ZhciB0PXRoaXMuX3N1Y2Nlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1fdG9nZ2xlQ29udHJvbFByZWQoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hdGhpcy5fb3BlbmVkQ29udHJvbFByZWR9X3RvZ2dsZUNvbnRyb2xTdWNjKCl7dGhpcy5fb3BlbmVkQ29udHJvbFN1Y2M9IXRoaXMuX29wZW5lZENvbnRyb2xTdWNjfV90b2dnbGVFeHBhbmRlZCgpe3RoaXMuX2V4cGFuZGVkPSF0aGlzLl9leHBhbmRlZH1fZ2V0VG9nZ2xlSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3Jlc2V0U3RhdGUoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hMSx0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hMSx0aGlzLnNldCgiX2dyb3VwQnV0dG9uVGV4dCIsSmx0KHRoaXMuX25vZGUpKX1fcmVzaXplTGlzdCh0KXt2YXIgcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO3ImJnIuZmlyZSgiaXJvbi1yZXNpemUiKX1fdG9nZ2xlSW5jbHVkZSgpe3RoaXMuZmlyZSgibm9kZS10b2dnbGUtaW5jbHVzaW9uIix7bmFtZTp0aGlzLmdyYXBoTm9kZU5hbWV9KX1fbm9kZUluY2x1ZGVTdGF0ZUNoYW5nZWQodCxyKXt0aGlzLnNldCgiX2F1eEJ1dHRvblRleHQiLG1IKHQpKX1fdG9nZ2xlR3JvdXAoKXt2YXIgdD1DSCh0aGlzLl9ub2RlKTt0aGlzLmZpcmUoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix7bmFtZTp0fSl9X2lzTGlicmFyeUZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lm5hbWUuc3RhcnRzV2l0aCh3YSl9X2lzSW5TZXJpZXModCl7cmV0dXJuIFpsdCh0KX1fZ3JhcGhIaWVyYXJjaHlDaGFuZ2VkKCl7dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKSx0aGlzLmdyYXBoSGllcmFyY2h5LmFkZExpc3RlbmVyKERkLlRFTVBMQVRFU19VUERBVEVELCgpPT57dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKX0pfX07ZG4udGVtcGxhdGU9UWAKICAgIDxzdHlsZT4KICAgICAgLnN1Yi1saXN0LWdyb3VwIHsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogOHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuc3ViLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDMwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAgICAgfQoKICAgICAgLmF0dHItbGVmdCB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDMwJTsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQoKICAgICAgLmF0dHItcmlnaHQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMCU7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlIHsKICAgICAgICBkaXNwbGF5OiB0YWJsZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlLXJvdyB7CiAgICAgICAgZGlzcGxheTogdGFibGUtcm93OwogICAgICB9CgogICAgICAuc3ViLWxpc3QtdGFibGUtcm93IC5zdWItbGlzdC10YWJsZS1jZWxsOmxhc3QtY2hpbGQgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CgogICAgICAuc3ViLWxpc3QtdGFibGUtY2VsbCB7CiAgICAgICAgY29sb3I6IHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKTsKICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsOwogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIG1heC13aWR0aDogMjAwcHg7CiAgICAgICAgcGFkZGluZzogMCA0cHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbS1ib2R5W3R3by1saW5lXSB7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweCA0cHg7CiAgICAgIH0KCiAgICAgIC5leHBhbmRlZEluZm8gewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICB9CgogICAgICAuY29udHJvbERlcHMgewogICAgICAgIHBhZGRpbmc6IDAgMCAwIDhweDsKICAgICAgfQoKICAgICAgLm5vZGUtbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgZm9udC1zaXplOiAxNHB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5ub2RlLWljb24gewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgfQoKICAgICAgLnN1YnRpdGxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpOwogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgfQoKICAgICAgLmNvbnRyb2xMaW5lIHsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1idXR0b24gewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBtYXgtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1heC13aWR0aDogMjBweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAuY29udHJvbC10b2dnbGUtYnV0dG9uIHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICBtYXgtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1heC13aWR0aDogMjBweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAudG9nZ2xlLWluY2x1ZGUtZ3JvdXAgewogICAgICAgIHBhZGRpbmctdG9wOiA0cHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZSB7CiAgICAgICAgbWFyZ2luOiA1cHggNnB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICAgIHBhZGRpbmc6IDRweCA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB0OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7CiAgICAgICAgY29sb3I6ICM2NjY7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ29vZ2xlLXllbGxvdy0xMDApOwogICAgICB9CgogICAgICAubm9uLWNvbnRyb2wtbGlzdC1pdGVtIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8cGFwZXItaXRlbT4KICAgICAgPHBhcGVyLWl0ZW0tYm9keSB0d28tbGluZT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX2V4cGFuZGVkKX19IgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgID4KICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub2RlLW5hbWUiPgogICAgICAgICAgICA8dGYtd2JyLXN0cmluZyB2YWx1ZT0iW1tfbm9kZS5uYW1lXV0iIGRlbGltaXRlci1wYXR0ZXJuPSIvIj4KICAgICAgICAgICAgPC90Zi13YnItc3RyaW5nPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzZWNvbmRhcnk+CiAgICAgICAgICA8dGYtbm9kZS1pY29uCiAgICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICAgIG5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgcmVuZGVyLWluZm89IltbX2dldFJlbmRlckluZm8oZ3JhcGhOb2RlTmFtZSwgcmVuZGVySGllcmFyY2h5KV1dIgogICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICA+PC90Zi1ub2RlLWljb24+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGUub3B9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgICBPcGVyYXRpb246CiAgICAgICAgICAgICAgPHNwYW4+W1tfbm9kZS5vcF1dPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGUubWV0YWdyYXBofX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+CiAgICAgICAgICAgICAgU3ViZ3JhcGg6CiAgICAgICAgICAgICAgPHNwYW4+W1tfbm9kZS5jYXJkaW5hbGl0eV1dPC9zcGFuPiBub2RlcwogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvcGFwZXItaXRlbS1ib2R5PgogICAgPC9wYXBlci1pdGVtPgogICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19leHBhbmRlZH19Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19leHBhbmRlZH19IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJleHBhbmRlZEluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgYXR0cmlidXRlcyI+CiAgICAgICAgICAgIEF0dHJpYnV0ZXMgKDxzcGFuPltbX2F0dHJpYnV0ZXMubGVuZ3RoXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgIGlkPSJhdHRyaWJ1dGVzTGlzdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfYXR0cmlidXRlc11dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXR0ci1sZWZ0Ij5bW2l0ZW0ua2V5XV08L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXR0ci1yaWdodCI+W1tpdGVtLnZhbHVlXV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19kZXZpY2V9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIGRldmljZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXR0ci1sZWZ0Ij5EZXZpY2U8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLXJpZ2h0Ij5bW19kZXZpY2VdXTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgcHJlZGVjZXNzb3JzIj4KICAgICAgICAgICAgSW5wdXRzICg8c3Bhbj5bW190b3RhbFByZWRlY2Vzc29yc11dPC9zcGFuPikKICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICBpZD0iaW5wdXRzTGlzdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfcHJlZGVjZXNzb3JzLnJlZ3VsYXJdXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgICBjYXJkLW5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW0ubm9kZV1dIgogICAgICAgICAgICAgICAgICBlZGdlLWxhYmVsPSJbW2l0ZW0uZWRnZUxhYmVsXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iCiAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0icHJlZGVjZXNzb3JzIgogICAgICAgICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3ByZWRlY2Vzc29ycy5jb250cm9sLmxlbmd0aF1dIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sRGVwcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sTGluZSI+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX29wZW5lZENvbnRyb2xQcmVkKX19IgogICAgICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlQ29udHJvbFByZWQiCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNvbnRyb2wtdG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgICAgICBDb250cm9sIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X29wZW5lZENvbnRyb2xQcmVkfX0iIG5vLWFuaW1hdGlvbj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgICAgICAgICAgICBpZj0ie3tfb3BlbmVkQ29udHJvbFByZWR9fSIKICAgICAgICAgICAgICAgICAgICByZXN0YW1wPSJ0cnVlIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgICAgICAgICAgaXRlbXM9IltbX3ByZWRlY2Vzc29ycy5jb250cm9sXV0iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkLW5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0icHJlZGVjZXNzb3JzIgogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgc3VjY2Vzc29ycyI+CiAgICAgICAgICAgIE91dHB1dHMgKDxzcGFuPltbX3RvdGFsU3VjY2Vzc29yc11dPC9zcGFuPikKICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICBpZD0ib3V0cHV0c0xpc3QiCiAgICAgICAgICAgICAgaXRlbXM9IltbX3N1Y2Nlc3NvcnMucmVndWxhcl1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iCiAgICAgICAgICAgICAgICAgIGVkZ2UtbGFiZWw9IltbaXRlbS5lZGdlTGFiZWxdXSIKICAgICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIKICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJzdWNjZXNzb3IiCiAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc3VjY2Vzc29ycy5jb250cm9sLmxlbmd0aF1dIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sRGVwcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sTGluZSI+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX29wZW5lZENvbnRyb2xTdWNjKX19IgogICAgICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlQ29udHJvbFN1Y2MiCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNvbnRyb2wtdG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgICAgICBDb250cm9sIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X29wZW5lZENvbnRyb2xTdWNjfX0iIG5vLWFuaW1hdGlvbj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgICAgICAgICAgICBpZj0ie3tfb3BlbmVkQ29udHJvbFN1Y2N9fSIKICAgICAgICAgICAgICAgICAgICByZXN0YW1wPSJ0cnVlIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGlyb24tbGlzdCBjbGFzcz0ic3ViLWxpc3QiIGl0ZW1zPSJbW19zdWNjZXNzb3JzLmNvbnRyb2xdXSI+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIgogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJzdWNjZXNzb3JzIgogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2hhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzfX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBub2RlLXN0YXRzIj4KICAgICAgICAgICAgICBOb2RlIFN0YXRzCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUiPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19ub2RlU3RhdHMudG90YWxCeXRlc319Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj5NZW1vcnk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgIFtbX25vZGVTdGF0c0Zvcm1hdHRlZEJ5dGVzXV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19nZXRUb3RhbE1pY3Jvcyhfbm9kZVN0YXRzKX19Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj5Db21wdXRlIFRpbWU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgIFtbX25vZGVTdGF0c0Zvcm1hdHRlZENvbXB1dGVUaW1lXV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19ub2RlU3RhdHMub3V0cHV0U2l6ZX19Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj5UZW5zb3IgT3V0cHV0IFNpemVzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zPSJ7e19ub2RlU3RhdHNGb3JtYXR0ZWRPdXRwdXRTaXplc319IgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBbW2l0ZW1dXSA8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZnVuY3Rpb25Vc2FnZXMubGVuZ3RoXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBwcmVkZWNlc3NvcnMiPgogICAgICAgICAgICAgIFVzYWdlcyBvZiB0aGUgRnVuY3Rpb24gKDxzcGFuPltbX2Z1bmN0aW9uVXNhZ2VzLmxlbmd0aF1dPC9zcGFuPikKICAgICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgICBpZD0iZnVuY3Rpb25Vc2FnZXNMaXN0IgogICAgICAgICAgICAgICAgaXRlbXM9IltbX2Z1bmN0aW9uVXNhZ2VzXV0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtXV0iCiAgICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9ImZ1bmN0aW9uVXNhZ2VzIgogICAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfaXNMaWJyYXJ5RnVuY3Rpb24oX25vZGUpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtaW5jbHVkZS1ncm91cCI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgcmFpc2VkCiAgICAgICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWluY2x1ZGUiCiAgICAgICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUluY2x1ZGUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHNwYW4+W1tfYXV4QnV0dG9uVGV4dF1dPC9zcGFuPgogICAgICAgICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19pc0luU2VyaWVzKF9ub2RlKX19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9nZ2xlLWluY2x1ZGUtZ3JvdXAiPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgIHJhaXNlZAogICAgICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1pbmNsdWRlIgogICAgICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVHcm91cCIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3Bhbj5bW19ncm91cEJ1dHRvblRleHRdXTwvc3Bhbj4KICAgICAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9pcm9uLWNvbGxhcHNlPgogIGA7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZG4ucHJvdG90eXBlLCJncmFwaE5vZGVOYW1lIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLGlzKV0sZG4ucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbi5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxkbi5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3QsY29tcHV0ZWQ6Il9nZXROb2RlKGdyYXBoTm9kZU5hbWUsIGdyYXBoSGllcmFyY2h5KSIsb2JzZXJ2ZXI6Il9yZXNldFN0YXRlIn0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbi5wcm90b3R5cGUsIl9ub2RlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfZ2V0Tm9kZVN0YXRzKGdyYXBoTm9kZU5hbWUsIGdyYXBoSGllcmFyY2h5KSIsb2JzZXJ2ZXI6Il9yZXNldFN0YXRlIn0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbi5wcm90b3R5cGUsIl9ub2RlU3RhdHMiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9ub2RlSW5jbHVkZVN0YXRlQ2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZG4ucHJvdG90eXBlLCJub2RlSW5jbHVkZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGRuLnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZG4ucHJvdG90eXBlLCJfb3BlbmVkQ29udHJvbFByZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxkbi5wcm90b3R5cGUsIl9vcGVuZWRDb250cm9sU3VjYyIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxkbi5wcm90b3R5cGUsIl9hdXhCdXR0b25UZXh0Iix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGRuLnByb3RvdHlwZSwiX2dyb3VwQnV0dG9uVGV4dCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLGRuLnByb3RvdHlwZSwiX3RlbXBsYXRlSW5kZXgiLHZvaWQgMCk7RShbUnQoIl9ub2RlU3RhdHMiKSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfaGFzRGlzcGxheWFibGVOb2RlU3RhdHMiLG51bGwpO0UoW1J0KCJfbm9kZVN0YXRzIiksdygiZGVzaWduOnR5cGUiLE9iamVjdCksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXMiLG51bGwpO0UoW1J0KCJfbm9kZVN0YXRzIiksdygiZGVzaWduOnR5cGUiLE9iamVjdCksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWUiLG51bGwpO0UoW1J0KCJfbm9kZVN0YXRzIiksdygiZGVzaWduOnR5cGUiLE9iamVjdCksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfbm9kZVN0YXRzRm9ybWF0dGVkT3V0cHV0U2l6ZXMiLG51bGwpO0UoW1J0KCJfbm9kZSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfYXR0cmlidXRlcyIsbnVsbCk7RShbUnQoIl9ub2RlIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfZGV2aWNlIixudWxsKTtFKFtSdCgiX25vZGUiLCJncmFwaEhpZXJhcmNoeSIpLHcoImRlc2lnbjp0eXBlIixPYmplY3QpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGRuLnByb3RvdHlwZSwiX3N1Y2Nlc3NvcnMiLG51bGwpO0UoW1J0KCJfbm9kZSIsImdyYXBoSGllcmFyY2h5IiksdygiZGVzaWduOnR5cGUiLE9iamVjdCksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfcHJlZGVjZXNzb3JzIixudWxsKTtFKFtSdCgiX25vZGUiLCJncmFwaEhpZXJhcmNoeSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfZnVuY3Rpb25Vc2FnZXMiLG51bGwpO0UoW1J0KCJfbm9kZSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfc3Vibm9kZXMiLG51bGwpO0UoW1J0KCJfcHJlZGVjZXNzb3JzIiksdygiZGVzaWduOnR5cGUiLE51bWJlciksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZG4ucHJvdG90eXBlLCJfdG90YWxQcmVkZWNlc3NvcnMiLG51bGwpO0UoW1J0KCJfc3VjY2Vzc29ycyIpLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGRuLnByb3RvdHlwZSwiX3RvdGFsU3VjY2Vzc29ycyIsbnVsbCk7RShbQnQoImdyYXBoSGllcmFyY2h5IiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxkbi5wcm90b3R5cGUsIl9ncmFwaEhpZXJhcmNoeUNoYW5nZWQiLG51bGwpO2RuPUUoW3l0KCJ0Zi1ub2RlLWluZm8iKV0sZG4pO3ZhciBhcz1jbGFzcyBleHRlbmRzIEd0KG10KXtyZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLWxpc3QtaXRlbS1jbGljayIsdGhpcy5fbm9kZUxpc3RJdGVtQ2xpY2tlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtbGlzdC1pdGVtLW1vdXNlb3ZlciIsdGhpcy5fbm9kZUxpc3RJdGVtTW91c2VvdmVyLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1saXN0LWl0ZW0tbW91c2VvdXQiLHRoaXMuX25vZGVMaXN0SXRlbU1vdXNlb3V0LmJpbmQodGhpcykpfV9ub2RlTGlzdEl0ZW1DbGlja2VkKHQpe3RoaXMuc2VsZWN0ZWROb2RlPXQuZGV0YWlsLm5vZGVOYW1lfV9ub2RlTGlzdEl0ZW1Nb3VzZW92ZXIodCl7dGhpcy5oaWdobGlnaHRlZE5vZGU9dC5kZXRhaWwubm9kZU5hbWV9X25vZGVMaXN0SXRlbU1vdXNlb3V0KCl7dGhpcy5oaWdobGlnaHRlZE5vZGU9bnVsbH1faGVhbHRoUGlsbHNBdmFpbGFibGUodCxyKXtyZXR1cm4gdCYmciYmT2JqZWN0LmtleXMocikubGVuZ3RoPjB9X2VxdWFscyh0LHIpe3JldHVybiB0PT09cn19O2FzLnRlbXBsYXRlPVFgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZWNvbmRhcnktYmFja2dyb3VuZC1jb2xvcik7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1heC1oZWlnaHQ6IDY1MHB4OwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e3NlbGVjdGVkTm9kZX19Ij4KICAgICAgPHBhcGVyLW1hdGVyaWFsIGVsZXZhdGlvbj0iMSIgY2xhc3M9ImNhcmQiPgogICAgICAgIDx0Zi1ub2RlLWluZm8KICAgICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICAgIGZsYXQtZ3JhcGg9IltbZ3JhcGhdXSIKICAgICAgICAgIGdyYXBoLW5vZGUtbmFtZT0iW1tzZWxlY3RlZE5vZGVdXSIKICAgICAgICAgIG5vZGUtaW5jbHVkZT0iW1tzZWxlY3RlZE5vZGVJbmNsdWRlXV0iCiAgICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJ7e2hpZ2hsaWdodGVkTm9kZX19IgogICAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgID4KICAgICAgICA8L3RmLW5vZGUtaW5mbz4KICAgICAgPC9wYXBlci1tYXRlcmlhbD4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAnb3BfY29tcGF0aWJpbGl0eScpXV0iPgogICAgICA8dGYtZ3JhcGgtb3AtY29tcGF0LWNhcmQKICAgICAgICBncmFwaC1oaWVyYXJjaHk9IltbZ3JhcGhIaWVyYXJjaHldXSIKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICBub2RlLXRpdGxlPSJbW2NvbXBhdE5vZGVUaXRsZV1dIgogICAgICA+CiAgICAgIDwvdGYtZ3JhcGgtb3AtY29tcGF0LWNhcmQ+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlCiAgICAgIGlzPSJkb20taWYiCiAgICAgIGlmPSJbW19oZWFsdGhQaWxsc0F2YWlsYWJsZShkZWJ1Z2dlckRhdGFFbmFibGVkLCBub2RlTmFtZXNUb0hlYWx0aFBpbGxzKV1dIgogICAgPgogICAgICA8dGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkCiAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICBkZWJ1Z2dlci1udW1lcmljLWFsZXJ0cz0iW1tkZWJ1Z2dlck51bWVyaWNBbGVydHNdXSIKICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tub2RlTmFtZXNUb0hlYWx0aFBpbGxzXV0iCiAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJ7e2hpZ2hsaWdodGVkTm9kZX19IgogICAgICAgIGFyZS1oZWFsdGgtcGlsbHMtbG9hZGluZz0iW1thcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIKICAgICAgICBzcGVjaWZpYy1oZWFsdGgtcGlsbC1zdGVwPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXB9fSIKICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgPgogICAgICA8L3RmLWdyYXBoLWRlYnVnZ2VyLWRhdGEtY2FyZD4KICAgIDwvdGVtcGxhdGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxhcy5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLGlzKV0sYXMucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixqdSldLGFzLnByb3RvdHlwZSwiZ3JhcGgiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsc28pXSxhcy5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxhcy5wcm90b3R5cGUsIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLGFzLnByb3RvdHlwZSwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxhcy5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYXMucHJvdG90eXBlLCJjb21wYXROb2RlVGl0bGUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGFzLnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxhcy5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sYXMucHJvdG90eXBlLCJzZWxlY3RlZE5vZGVJbmNsdWRlIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sYXMucHJvdG90eXBlLCJkZWJ1Z2dlckRhdGFFbmFibGVkIix2b2lkIDApO2FzPUUoW3l0KCJ0Zi1ncmFwaC1pbmZvIildLGFzKTt2YXIgSmNyPXtNQVhfTk9ERV9DT1VOVDoxZTQsTUFYX0VER0VfQ09VTlQ6MWU0fSx0bj1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5oaWVyYXJjaHlQYXJhbXM9ZTMsdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkPSExLHRoaXMuc3BlY2lmaWNIZWFsdGhQaWxsU3RlcD0wLHRoaXMuY29tcGF0Tm9kZVRpdGxlPSJUUFUgQ29tcGF0aWJpbGl0eSJ9Zml0KCl7dGhpcy4kLmdyYXBoLmZpdCgpfWRvd25sb2FkQXNJbWFnZSh0KXtyZXR1cm4gcnUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCByPXlpZWxkIHRoaXMuJC5ncmFwaC5nZXRJbWFnZUJsb2IoKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtuLmhyZWY9VVJMLmNyZWF0ZU9iamVjdFVSTChyKSxuLmRvd25sb2FkPXQsbi5jbGljaygpLFVSTC5yZXZva2VPYmplY3RVUkwobi5ocmVmKX0pfV9pc05vdENvbXBsZXRlKHQpe3JldHVybiB0LnZhbHVlPDEwMH1fZ2V0Q29udGFpbmVyQ2xhc3ModCl7dmFyIHI9ImNvbnRhaW5lciI7cmV0dXJuIHQuZXJyb3ImJihyKz0iIGVycm9yIiksdGhpcy5faXNOb3RDb21wbGV0ZSh0KSYmKHIrPSIgbG9hZGluZyIpLHJ9X29uTm9kZUluY2x1c2lvblRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVFeHRyYWN0KHQuZGV0YWlsLm5hbWUpfV9vbk5vZGVTZXJpZXNHcm91cFRvZ2dsZWQodCl7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVTZXJpZXNHcm91cCh0LmRldGFpbC5uYW1lKX1fdXBkYXRlTm9kZUluY2x1ZGUoKXtsZXQgdD10aGlzLnJlbmRlckhpZXJhcmNoeT90aGlzLnJlbmRlckhpZXJhcmNoeS5nZXROb2RlQnlOYW1lKHRoaXMuc2VsZWN0ZWROb2RlKTpudWxsO3RoaXMuX3NlbGVjdGVkTm9kZUluY2x1ZGU9dD90LmluY2x1ZGU6dXIuVU5TUEVDSUZJRUR9X3NsaW1HcmFwaENoYW5nZWQoKXtpZighdGhpcy5ncmFwaClyZXR1cm47bGV0e01BWF9OT0RFX0NPVU5UOnQsTUFYX0VER0VfQ09VTlQ6cn09SmNyO09iamVjdC5rZXlzKHRoaXMuZ3JhcGgubm9kZXMpLmxlbmd0aD50JiZ0aGlzLmdyYXBoLmVkZ2VzLmxlbmd0aD5yJiZ0aGlzLmNvbG9yQnk9PT1Hbi5TVFJVQ1RVUkUmJih0aGlzLmNvbG9yQnk9R24uTk9ORSl9X2Vuc3VyZVRlbXBsYXRlcygpeyF0aGlzLmdyYXBoSGllcmFyY2h5fHx0aGlzLmNvbG9yQnkhPT1Hbi5TVFJVQ1RVUkV8fHRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpfHx0aGlzLmdyYXBoSGllcmFyY2h5LnVwZGF0ZVRlbXBsYXRlcygpfX07dG4udGVtcGxhdGU9UWAKICAgIDxzdHlsZT4KICAgICAgOjpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jbG9zZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBsZWZ0OiAxNXB4OwogICAgICAgIGJvdHRvbTogMTVweDsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5jb250YWluZXIubG9hZGluZyB7CiAgICAgICAgY3Vyc29yOiBwcm9ncmVzczsKICAgICAgICBvcGFjaXR5OiAwLjE7CiAgICAgIH0KCiAgICAgIC5jb250YWluZXIubG9hZGluZy5lcnJvciB7CiAgICAgICAgY3Vyc29yOiBhdXRvOwogICAgICB9CgogICAgICAjaW5mbyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiA1cHg7CiAgICAgICAgdG9wOiA1cHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICAgIG1heC13aWR0aDogMzgwcHg7CiAgICAgICAgbWluLXdpZHRoOiAzMjBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgIH0KCiAgICAgICNtYWluIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgICNwcm9ncmVzcy1iYXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDQwcHg7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgICNwcm9ncmVzcy1tc2cgewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICB9CgogICAgICBwYXBlci1wcm9ncmVzcyB7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtaGVpZ2h0OiA2cHg7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1hY3RpdmUtY29sb3I6ICNmMzkxM2U7CiAgICAgIH0KCiAgICAgIC5jb250ZXh0LW1lbnUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtaW4td2lkdGg6IDE1MHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNGQ0ZDQ7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIHsKICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAvZGVlcC8gLmNvbnRleHQtbWVudSB1bCBsaSB7CiAgICAgICAgcGFkZGluZzogNHB4IDE2cHg7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIGxpOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjM5MTNlOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNOb3RDb21wbGV0ZShwcm9ncmVzcyldXSI+CiAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWJhciI+CiAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtbXNnIj5bW3Byb2dyZXNzLm1zZ11dPC9kaXY+CiAgICAgICAgPHBhcGVyLXByb2dyZXNzIHZhbHVlPSJbW3Byb2dyZXNzLnZhbHVlXV0iPjwvcGFwZXItcHJvZ3Jlc3M+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxkaXYgY2xhc3MkPSJbW19nZXRDb250YWluZXJDbGFzcyhwcm9ncmVzcyldXSI+CiAgICAgIDxkaXYgaWQ9Im1haW4iPgogICAgICAgIDx0Zi1ncmFwaAogICAgICAgICAgaWQ9ImdyYXBoIgogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJ7e2dyYXBoSGllcmFyY2h5fX0iCiAgICAgICAgICBiYXNpYy1ncmFwaD0iW1tncmFwaF1dIgogICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1toaWVyYXJjaHlQYXJhbXNdXSIKICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9Int7cmVuZGVySGllcmFyY2h5fX0iCiAgICAgICAgICBkZXZpY2VzLWZvci1zdGF0cz0iW1tkZXZpY2VzRm9yU3RhdHNdXSIKICAgICAgICAgIHN0YXRzPSJbW3N0YXRzXV0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgaGlnaGxpZ2h0ZWQtbm9kZT0ie3tfaGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9Int7Y29sb3JCeVBhcmFtc319IgogICAgICAgICAgcHJvZ3Jlc3M9Int7cHJvZ3Jlc3N9fSIKICAgICAgICAgIGVkZ2UtbGFiZWwtZnVuY3Rpb249IltbZWRnZUxhYmVsRnVuY3Rpb25dXSIKICAgICAgICAgIGVkZ2Utd2lkdGgtZnVuY3Rpb249IltbZWRnZVdpZHRoRnVuY3Rpb25dXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9IltbaGVhbHRoUGlsbFN0ZXBJbmRleF1dIgogICAgICAgICAgaGFuZGxlLW5vZGUtc2VsZWN0ZWQ9IltbaGFuZGxlTm9kZVNlbGVjdGVkXV0iCiAgICAgICAgICBoYW5kbGUtZWRnZS1zZWxlY3RlZD0iW1toYW5kbGVFZGdlU2VsZWN0ZWRdXSIKICAgICAgICAgIHRyYWNlLWlucHV0cz0iW1t0cmFjZUlucHV0c11dIgogICAgICAgICAgYXV0by1leHRyYWN0LW5vZGVzPSJbW2F1dG9FeHRyYWN0Tm9kZXNdXSIKICAgICAgICA+PC90Zi1ncmFwaD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImluZm8iPgogICAgICAgIDx0Zi1ncmFwaC1pbmZvCiAgICAgICAgICBpZD0iZ3JhcGgtaW5mbyIKICAgICAgICAgIHRpdGxlPSJzZWxlY3RlZCIKICAgICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICAgIGdyYXBoPSJbW2dyYXBoXV0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgc2VsZWN0ZWQtbm9kZS1pbmNsdWRlPSJ7e19zZWxlY3RlZE5vZGVJbmNsdWRlfX0iCiAgICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJ7e19oaWdobGlnaHRlZE5vZGV9fSIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0iW1tjb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgICBkZWJ1Z2dlci1kYXRhLWVuYWJsZWQ9IltbZGVidWdnZXJEYXRhRW5hYmxlZF1dIgogICAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIgogICAgICAgICAgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbZGVidWdnZXJOdW1lcmljQWxlcnRzXV0iCiAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tub2RlTmFtZXNUb0hlYWx0aFBpbGxzXV0iCiAgICAgICAgICBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIKICAgICAgICAgIHNwZWNpZmljLWhlYWx0aC1waWxsLXN0ZXA9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgICAgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0ie3toZWFsdGhQaWxsU3RlcEluZGV4fX0iCiAgICAgICAgICBjb21wYXQtbm9kZS10aXRsZT0iW1tjb21wYXROb2RlVGl0bGVdXSIKICAgICAgICAgIG9uLW5vZGUtdG9nZ2xlLWluY2x1c2lvbj0iX29uTm9kZUluY2x1c2lvblRvZ2dsZWQiCiAgICAgICAgICBvbi1ub2RlLXRvZ2dsZS1zZXJpZXNncm91cD0iX29uTm9kZVNlcmllc0dyb3VwVG9nZ2xlZCIKICAgICAgICA+PC90Zi1ncmFwaC1pbmZvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGA7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsaXMpXSx0bi5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLGp1KV0sdG4ucHJvdG90eXBlLCJncmFwaCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0bi5wcm90b3R5cGUsImhpZXJhcmNoeVBhcmFtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0bi5wcm90b3R5cGUsInN0YXRzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHRuLnByb3RvdHlwZSwicHJvZ3Jlc3MiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx0bi5wcm90b3R5cGUsInRyYWNlSW5wdXRzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdG4ucHJvdG90eXBlLCJhdXRvRXh0cmFjdE5vZGVzIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx0bi5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHRuLnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsc28pXSx0bi5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHRuLnByb3RvdHlwZSwiZGVidWdnZXJEYXRhRW5hYmxlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHRuLnByb3RvdHlwZSwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sdG4ucHJvdG90eXBlLCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdG4ucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHRuLnByb3RvdHlwZSwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sdG4ucHJvdG90eXBlLCJzcGVjaWZpY0hlYWx0aFBpbGxTdGVwIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLHRuLnByb3RvdHlwZSwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdG4ucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdG4ucHJvdG90eXBlLCJjb21wYXROb2RlVGl0bGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdG4ucHJvdG90eXBlLCJlZGdlV2lkdGhGdW5jdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx0bi5wcm90b3R5cGUsIl9zZWxlY3RlZE5vZGVJbmNsdWRlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHRuLnByb3RvdHlwZSwiX2hpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0bi5wcm90b3R5cGUsImhhbmRsZU5vZGVTZWxlY3RlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0bi5wcm90b3R5cGUsImVkZ2VMYWJlbEZ1bmN0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHRuLnByb3RvdHlwZSwiaGFuZGxlRWRnZVNlbGVjdGVkIix2b2lkIDApO0UoW0J0KCJzZWxlY3RlZE5vZGUiLCJyZW5kZXJIaWVyYXJjaHkiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHRuLnByb3RvdHlwZSwiX3VwZGF0ZU5vZGVJbmNsdWRlIixudWxsKTtFKFtCdCgiZ3JhcGgiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHRuLnByb3RvdHlwZSwiX3NsaW1HcmFwaENoYW5nZWQiLG51bGwpO0UoW0J0KCJjb2xvckJ5IiwiZ3JhcGhIaWVyYXJjaHkiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHRuLnByb3RvdHlwZSwiX2Vuc3VyZVRlbXBsYXRlcyIsbnVsbCk7dG49RShbeXQoInRmLWdyYXBoLWJvYXJkIildLHRuKTt2YXIgbDM9RWUoT2UoKSwxKTt2YXIgWnU9Y2xhc3N7aXNOb3RUcHVPcCh0KXtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpLnNlYXJjaCgiY3B1OiIpIT0tMXx8dC50b0xvd2VyQ2FzZSgpLnNlYXJjaCgiZ3B1OiIpIT0tMT8hMDp0LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJ0cHUiKT09LTF9b3BWYWxpZCh0KXtyZXR1cm4gdC5uYW1lLnNlYXJjaCh3YSk9PTB8fCF0Lm9wfHx0LmRldmljZSYmdGhpcy5pc05vdFRwdU9wKHQuZGV2aWNlKXx8dC5kZXZpY2UmJnQuZGV2aWNlLnNlYXJjaCgiVFBVX1NZU1RFTSIpIT0tMT8hMDpsMy5pbmNsdWRlcyhadS5XSElURUxJU1QsdC5vcCl9fTtadS5XSElURUxJU1Q9WyJBYnMiLCJBY29zIiwiQWNvc2giLCJBZGQiLCJBZGROIiwiQWRkVjIiLCJBZGp1c3RDb250cmFzdHYyIiwiQWRqdXN0SHVlIiwiQWRqdXN0U2F0dXJhdGlvbiIsIkFsbCIsIkFsbFRvQWxsIiwiQW5nbGUiLCJBbnkiLCJBcHByb3hpbWF0ZUVxdWFsIiwiQXJnTWF4IiwiQXJnTWluIiwiQXNpbiIsIkFzaW5oIiwiQXNzZXJ0IiwiQXNzaWduQWRkVmFyaWFibGVPcCIsIkFzc2lnblN1YlZhcmlhYmxlT3AiLCJBc3NpZ25WYXJpYWJsZU9wIiwiQXRhbiIsIkF0YW4yIiwiQXRhbmgiLCJBdmdQb29sIiwiQXZnUG9vbDNEIiwiQXZnUG9vbDNER3JhZCIsIkF2Z1Bvb2xHcmFkIiwiQmF0Y2hNYXRNdWwiLCJCYXRjaE1hdE11bFYyIiwiQmF0Y2hUb1NwYWNlIiwiQmF0Y2hUb1NwYWNlTkQiLCJCZXNzZWxJMGUiLCJCZXNzZWxJMWUiLCJCZXRhaW5jIiwiQmlhc0FkZCIsIkJpYXNBZGRHcmFkIiwiQmlhc0FkZFYxIiwiQml0Y2FzdCIsIkJpdHdpc2VBbmQiLCJCaXR3aXNlT3IiLCJCaXR3aXNlWG9yIiwiQnJvYWRjYXN0QXJncyIsIkJyb2FkY2FzdEdyYWRpZW50QXJncyIsIkJyb2FkY2FzdFRvIiwiQnVja2V0aXplIiwiQ2FzZSIsIkNhc3QiLCJDZWlsIiwiQ2hlY2tOdW1lcmljcyIsIkNob2xlc2t5IiwiQ2xpcEJ5VmFsdWUiLCJDb2xsZWN0aXZlUGVybXV0ZSIsIkNvbGxlY3RpdmVSZWR1Y2VWMiIsIkNvbXBsZXgiLCJDb21wbGV4QWJzIiwiQ29uY2F0IiwiQ29uY2F0T2Zmc2V0IiwiQ29uY2F0VjIiLCJDb25qIiwiQ29uanVnYXRlVHJhbnNwb3NlIiwiQ29uc3QiLCJDb250cm9sVHJpZ2dlciIsIkNvbnYyRCIsIkNvbnYyREJhY2twcm9wRmlsdGVyIiwiQ29udjJEQmFja3Byb3BJbnB1dCIsIkNvbnYzRCIsIkNvbnYzREJhY2twcm9wRmlsdGVyVjIiLCJDb252M0RCYWNrcHJvcElucHV0VjIiLCJDb3MiLCJDb3NoIiwiQ3Jvc3MiLCJDcm9zc1JlcGxpY2FTdW0iLCJDdW1wcm9kIiwiQ3Vtc3VtIiwiRGF0YUZvcm1hdERpbU1hcCIsIkRhdGFGb3JtYXRWZWNQZXJtdXRlIiwiRGVwdGhUb1NwYWNlIiwiRGVwdGh3aXNlQ29udjJkTmF0aXZlIiwiRGVwdGh3aXNlQ29udjJkTmF0aXZlQmFja3Byb3BGaWx0ZXIiLCJEZXB0aHdpc2VDb252MmROYXRpdmVCYWNrcHJvcElucHV0IiwiRGVxdWFudGl6ZSIsIkRldmljZUluZGV4IiwiRGlhZyIsIkRpYWdQYXJ0IiwiRGlnYW1tYSIsIkRpdiIsIkRpdk5vTmFuIiwiRHluYW1pY1N0aXRjaCIsIkVpbnN1bSIsIkVsdSIsIkVsdUdyYWQiLCJFbXB0eSIsIkVtcHR5VGVuc29yTGlzdCIsIkVuc3VyZVNoYXBlIiwiRXF1YWwiLCJFcmYiLCJFcmZjIiwiRXJmaW52IiwiRXhwIiwiRXhwYW5kRGltcyIsIkV4cG0xIiwiRXh0cmFjdEltYWdlUGF0Y2hlcyIsIkZGVCIsIkZGVDJEIiwiRkZUM0QiLCJGYWtlUGFyYW0iLCJGYWtlUXVhbnRXaXRoTWluTWF4QXJncyIsIkZha2VRdWFudFdpdGhNaW5NYXhBcmdzR3JhZGllbnQiLCJGYWtlUXVhbnRXaXRoTWluTWF4VmFycyIsIkZha2VRdWFudFdpdGhNaW5NYXhWYXJzR3JhZGllbnQiLCJGaWxsIiwiRmxvb3IiLCJGbG9vckRpdiIsIkZsb29yTW9kIiwiRnVzZWRCYXRjaE5vcm0iLCJGdXNlZEJhdGNoTm9ybUdyYWQiLCJGdXNlZEJhdGNoTm9ybUdyYWRWMiIsIkZ1c2VkQmF0Y2hOb3JtR3JhZFYzIiwiRnVzZWRCYXRjaE5vcm1WMiIsIkZ1c2VkQmF0Y2hOb3JtVjMiLCJHYXRoZXIiLCJHYXRoZXJOZCIsIkdhdGhlclYyIiwiR2V0SXRlbSIsIkdyZWF0ZXIiLCJHcmVhdGVyRXF1YWwiLCJIU1ZUb1JHQiIsIklGRlQiLCJJRkZUMkQiLCJJRkZUM0QiLCJJUkZGVCIsIklSRkZUMkQiLCJJUkZGVDNEIiwiSWRlbnRpdHkiLCJJZGVudGl0eU4iLCJJZiIsIklnYW1tYSIsIklnYW1tYUdyYWRBIiwiSWdhbW1hYyIsIkltYWciLCJJblRvcEtWMiIsIkluZmVlZERlcXVldWUiLCJJbmZlZWREZXF1ZXVlVHVwbGUiLCJJbnBsYWNlQWRkIiwiSW5wbGFjZVVwZGF0ZSIsIkludiIsIkludmVydCIsIkludmVydFBlcm11dGF0aW9uIiwiSXNGaW5pdGUiLCJJc0luZiIsIklzTmFuIiwiS3RoT3JkZXJTdGF0aXN0aWMiLCJMMkxvc3MiLCJMUk4iLCJMUk5HcmFkIiwiTGVha3lSZWx1IiwiTGVha3lSZWx1R3JhZCIsIkxlZnRTaGlmdCIsIkxlc3MiLCJMZXNzRXF1YWwiLCJMZ2FtbWEiLCJMaW5TcGFjZSIsIkxpc3REaWZmIiwiTG9nIiwiTG9nMXAiLCJMb2dTb2Z0bWF4IiwiTG9naWNhbEFuZCIsIkxvZ2ljYWxOb3QiLCJMb2dpY2FsT3IiLCJMb3dlckJvdW5kIiwiTWFrZVVuaXF1ZSIsIk1hdE11bCIsIk1hdHJpeEJhbmRQYXJ0IiwiTWF0cml4RGlhZyIsIk1hdHJpeERpYWdQYXJ0IiwiTWF0cml4RGlhZ1BhcnRWMiIsIk1hdHJpeERpYWdQYXJ0VjMiLCJNYXRyaXhEaWFnVjIiLCJNYXRyaXhEaWFnVjMiLCJNYXRyaXhJbnZlcnNlIiwiTWF0cml4U2V0RGlhZyIsIk1hdHJpeFNldERpYWdWMiIsIk1hdHJpeFNldERpYWdWMyIsIk1hdHJpeFNvbHZlIiwiTWF0cml4VHJpYW5ndWxhclNvbHZlIiwiTWF4IiwiTWF4UG9vbCIsIk1heFBvb2wzRCIsIk1heFBvb2wzREdyYWQiLCJNYXhQb29sM0RHcmFkR3JhZCIsIk1heFBvb2xHcmFkIiwiTWF4UG9vbEdyYWRHcmFkIiwiTWF4UG9vbEdyYWRHcmFkVjIiLCJNYXhQb29sR3JhZFYyIiwiTWF4UG9vbFYyIiwiTWF4aW11bSIsIk1lYW4iLCJNaW4iLCJNaW5pbXVtIiwiTWlycm9yUGFkIiwiTWlycm9yUGFkR3JhZCIsIk1vZCIsIk11bCIsIk11bE5vTmFuIiwiTXVsdGlub21pYWwiLCJOZHRyaSIsIk5lZyIsIk5leHRBZnRlciIsIk5vT3AiLCJOb25NYXhTdXBwcmVzc2lvblY0IiwiTm90RXF1YWwiLCJPbmVIb3QiLCJPbmVzTGlrZSIsIk91dGZlZWRFbnF1ZXVlIiwiT3V0ZmVlZEVucXVldWVUdXBsZSIsIlBhY2siLCJQYWQiLCJQYWRWMiIsIlBhcmFsbGVsRHluYW1pY1N0aXRjaCIsIlBhcmFtZXRlcml6ZWRUcnVuY2F0ZWROb3JtYWwiLCJQYXJ0aXRpb25lZENhbGwiLCJQbGFjZWhvbGRlcldpdGhEZWZhdWx0IiwiUG9seWdhbW1hIiwiUG9wdWxhdGlvbkNvdW50IiwiUG93IiwiUHJldmVudEdyYWRpZW50IiwiUHJvZCIsIlFyIiwiUXVhbnRpemVBbmREZXF1YW50aXplVjIiLCJRdWFudGl6ZUFuZERlcXVhbnRpemVWMyIsIlJGRlQiLCJSRkZUMkQiLCJSRkZUM0QiLCJSR0JUb0hTViIsIlJhbmRvbUdhbW1hR3JhZCIsIlJhbmRvbVNodWZmbGUiLCJSYW5kb21TdGFuZGFyZE5vcm1hbCIsIlJhbmRvbVVuaWZvcm0iLCJSYW5kb21Vbmlmb3JtSW50IiwiUmFuZ2UiLCJSYW5rIiwiUmVhZFZhcmlhYmxlT3AiLCJSZWFsIiwiUmVhbERpdiIsIlJlY2lwcm9jYWwiLCJSZWNpcHJvY2FsR3JhZCIsIlJlbHUiLCJSZWx1NiIsIlJlbHU2R3JhZCIsIlJlbHVHcmFkIiwiUmVzaGFwZSIsIlJlc2l6ZUJpbGluZWFyIiwiUmVzaXplQmlsaW5lYXJHcmFkIiwiUmVzaXplTmVhcmVzdE5laWdoYm9yIiwiUmVzaXplTmVhcmVzdE5laWdoYm9yR3JhZCIsIlJlc291cmNlQXBwbHlBZGFNYXgiLCJSZXNvdXJjZUFwcGx5QWRhZGVsdGEiLCJSZXNvdXJjZUFwcGx5QWRhZ3JhZCIsIlJlc291cmNlQXBwbHlBZGFncmFkREEiLCJSZXNvdXJjZUFwcGx5QWRhZ3JhZFYyIiwiUmVzb3VyY2VBcHBseUFkYW0iLCJSZXNvdXJjZUFwcGx5QWRkU2lnbiIsIlJlc291cmNlQXBwbHlDZW50ZXJlZFJNU1Byb3AiLCJSZXNvdXJjZUFwcGx5RnRybCIsIlJlc291cmNlQXBwbHlGdHJsVjIiLCJSZXNvdXJjZUFwcGx5R3JhZGllbnREZXNjZW50IiwiUmVzb3VyY2VBcHBseUtlcmFzTW9tZW50dW0iLCJSZXNvdXJjZUFwcGx5TW9tZW50dW0iLCJSZXNvdXJjZUFwcGx5UG93ZXJTaWduIiwiUmVzb3VyY2VBcHBseVByb3hpbWFsQWRhZ3JhZCIsIlJlc291cmNlQXBwbHlQcm94aW1hbEdyYWRpZW50RGVzY2VudCIsIlJlc291cmNlQXBwbHlSTVNQcm9wIiwiUmVzb3VyY2VHYXRoZXIiLCJSZXNvdXJjZVNjYXR0ZXJBZGQiLCJSZXNvdXJjZVNjYXR0ZXJEaXYiLCJSZXNvdXJjZVNjYXR0ZXJNYXgiLCJSZXNvdXJjZVNjYXR0ZXJNaW4iLCJSZXNvdXJjZVNjYXR0ZXJNdWwiLCJSZXNvdXJjZVNjYXR0ZXJOZEFkZCIsIlJlc291cmNlU2NhdHRlck5kU3ViIiwiUmVzb3VyY2VTY2F0dGVyTmRVcGRhdGUiLCJSZXNvdXJjZVNjYXR0ZXJTdWIiLCJSZXNvdXJjZVNjYXR0ZXJVcGRhdGUiLCJSZXNvdXJjZVN0cmlkZWRTbGljZUFzc2lnbiIsIlJldmVyc2UiLCJSZXZlcnNlU2VxdWVuY2UiLCJSZXZlcnNlVjIiLCJSaWdodFNoaWZ0IiwiUmludCIsIlJuZ1JlYWRBbmRTa2lwIiwiUm5nU2tpcCIsIlJvbGwiLCJSb3VuZCIsIlJzcXJ0IiwiUnNxcnRHcmFkIiwiU2NhdHRlck5kIiwiU2VsZWN0IiwiU2VsZWN0VjIiLCJTZWxmQWRqb2ludEVpZ1YyIiwiU2VsdSIsIlNlbHVHcmFkIiwiU2hhcGUiLCJTaGFwZU4iLCJTaWdtb2lkIiwiU2lnbW9pZEdyYWQiLCJTaWduIiwiU2luIiwiU2luaCIsIlNpemUiLCJTbGljZSIsIlNuYXBzaG90IiwiU29mdG1heCIsIlNvZnRtYXhDcm9zc0VudHJvcHlXaXRoTG9naXRzIiwiU29mdHBsdXMiLCJTb2Z0cGx1c0dyYWQiLCJTb2Z0c2lnbiIsIlNvZnRzaWduR3JhZCIsIlNwYWNlVG9CYXRjaCIsIlNwYWNlVG9CYXRjaE5EIiwiU3BhY2VUb0RlcHRoIiwiU3BhcnNlTWF0TXVsIiwiU3BhcnNlU29mdG1heENyb3NzRW50cm9weVdpdGhMb2dpdHMiLCJTcGFyc2VUb0RlbnNlIiwiU3BsaXQiLCJTcGxpdFYiLCJTcXJ0IiwiU3FydEdyYWQiLCJTcXVhcmUiLCJTcXVhcmVkRGlmZmVyZW5jZSIsIlNxdWVlemUiLCJTdGFja0Nsb3NlVjIiLCJTdGFja1BvcFYyIiwiU3RhY2tQdXNoVjIiLCJTdGFja1YyIiwiU3RhdGVmdWxQYXJ0aXRpb25lZENhbGwiLCJTdGF0ZWZ1bFN0YW5kYXJkTm9ybWFsVjIiLCJTdGF0ZWZ1bFRydW5jYXRlZE5vcm1hbCIsIlN0YXRlZnVsVW5pZm9ybSIsIlN0YXRlZnVsVW5pZm9ybUZ1bGxJbnQiLCJTdGF0ZWZ1bFVuaWZvcm1JbnQiLCJTdGF0ZWxlc3NDYXNlIiwiU3RhdGVsZXNzSWYiLCJTdGF0ZWxlc3NNdWx0aW5vbWlhbCIsIlN0YXRlbGVzc1JhbmRvbUdldEFsZyIsIlN0YXRlbGVzc1JhbmRvbUdldEtleUNvdW50ZXIiLCJTdGF0ZWxlc3NSYW5kb21HZXRLZXlDb3VudGVyQWxnIiwiU3RhdGVsZXNzUmFuZG9tTm9ybWFsIiwiU3RhdGVsZXNzUmFuZG9tTm9ybWFsVjIiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtIiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybUZ1bGxJbnQiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtRnVsbEludFYyIiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybUludCIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1JbnRWMiIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1WMiIsIlN0YXRlbGVzc1RydW5jYXRlZE5vcm1hbCIsIlN0YXRlbGVzc1RydW5jYXRlZE5vcm1hbFYyIiwiU3RhdGVsZXNzV2hpbGUiLCJTdG9wR3JhZGllbnQiLCJTdHJpZGVkU2xpY2UiLCJTdHJpZGVkU2xpY2VHcmFkIiwiU3ViIiwiU3VtIiwiU3ZkIiwiU3ltYm9saWNHcmFkaWVudCIsIlRQVUVtYmVkZGluZ0FjdGl2YXRpb25zIiwiVGFuIiwiVGFuaCIsIlRhbmhHcmFkIiwiVGVuc29yQXJyYXlDbG9zZVYzIiwiVGVuc29yQXJyYXlDb25jYXRWMyIsIlRlbnNvckFycmF5R2F0aGVyVjMiLCJUZW5zb3JBcnJheUdyYWRWMyIsIlRlbnNvckFycmF5UmVhZFYzIiwiVGVuc29yQXJyYXlTY2F0dGVyVjMiLCJUZW5zb3JBcnJheVNpemVWMyIsIlRlbnNvckFycmF5U3BsaXRWMyIsIlRlbnNvckFycmF5VjMiLCJUZW5zb3JBcnJheVdyaXRlVjMiLCJUZW5zb3JMaXN0Q29uY2F0VjIiLCJUZW5zb3JMaXN0RWxlbWVudFNoYXBlIiwiVGVuc29yTGlzdEZyb21UZW5zb3IiLCJUZW5zb3JMaXN0R2F0aGVyIiwiVGVuc29yTGlzdEdldEl0ZW0iLCJUZW5zb3JMaXN0TGVuZ3RoIiwiVGVuc29yTGlzdFBvcEJhY2siLCJUZW5zb3JMaXN0UHVzaEJhY2siLCJUZW5zb3JMaXN0UmVzZXJ2ZSIsIlRlbnNvckxpc3RTZXRJdGVtIiwiVGVuc29yTGlzdFNwbGl0IiwiVGVuc29yTGlzdFN0YWNrIiwiVGVuc29yU2NhdHRlckFkZCIsIlRlbnNvclNjYXR0ZXJNYXgiLCJUZW5zb3JTY2F0dGVyTWluIiwiVGVuc29yU2NhdHRlclN1YiIsIlRlbnNvclNjYXR0ZXJVcGRhdGUiLCJUZW5zb3JTdHJpZGVkU2xpY2VVcGRhdGUiLCJUaWxlIiwiVG9wS1VuaXF1ZSIsIlRvcEtWMiIsIlRvcEtXaXRoVW5pcXVlIiwiVHJhbnNwb3NlIiwiVHJpZGlhZ29uYWxTb2x2ZSIsIlRydW5jYXRlRGl2IiwiVHJ1bmNhdGVNb2QiLCJUcnVuY2F0ZWROb3JtYWwiLCJVbmlxdWUiLCJVbnBhY2siLCJVbnNvcnRlZFNlZ21lbnRNYXgiLCJVbnNvcnRlZFNlZ21lbnRNaW4iLCJVbnNvcnRlZFNlZ21lbnRQcm9kIiwiVW5zb3J0ZWRTZWdtZW50U3VtIiwiVXBwZXJCb3VuZCIsIlZhcklzSW5pdGlhbGl6ZWRPcCIsIlZhcmlhYmxlU2hhcGUiLCJXaGVyZSIsIldoaWxlIiwiWGRpdnkiLCJYbGFCcm9hZGNhc3RIZWxwZXIiLCJYbGFDb252IiwiWGxhQ29udlYyIiwiWGxhRGVxdWFudGl6ZSIsIlhsYURvdCIsIlhsYURvdFYyIiwiWGxhRHluYW1pY1NsaWNlIiwiWGxhRHluYW1pY1VwZGF0ZVNsaWNlIiwiWGxhRWluc3VtIiwiWGxhR2F0aGVyIiwiWGxhSG9zdENvbXB1dGUiLCJYbGFJZiIsIlhsYUtleVZhbHVlU29ydCIsIlhsYVBhZCIsIlhsYVJlY3YiLCJYbGFSZWN2RnJvbUhvc3QiLCJYbGFSZWR1Y2UiLCJYbGFSZWR1Y2VXaW5kb3ciLCJYbGFSZXBsaWNhSWQiLCJYbGFTY2F0dGVyIiwiWGxhU2VsZWN0QW5kU2NhdHRlciIsIlhsYVNlbGZBZGpvaW50RWlnIiwiWGxhU2VuZCIsIlhsYVNlbmRUb0hvc3QiLCJYbGFTZXRCb3VuZCIsIlhsYVNldER5bmFtaWNEaW1lbnNpb25TaXplIiwiWGxhU2hhcmRpbmciLCJYbGFTb3J0IiwiWGxhU3BtZEZ1bGxUb1NoYXJkU2hhcGUiLCJYbGFTcG1kU2hhcmRUb0Z1bGxTaGFwZSIsIlhsYVN2ZCIsIlhsYVZhcmlhZGljUmVkdWNlIiwiWGxhVmFyaWFkaWNTb3J0IiwiWGxhV2hpbGUiLCJYbG9nMXB5IiwiWGxvZ3kiLCJaZXJvc0xpa2UiLCJaZXRhIiwiRW50ZXIiLCJFeGl0IiwiTG9vcENvbmQiLCJNZXJnZSIsIk5leHRJdGVyYXRpb24iLCJTd2l0Y2giLCJfQXJnIiwiX0FycmF5VG9MaXN0IiwiX0Z1c2VkQmF0Y2hOb3JtRXgiLCJfTGlzdFRvQXJyYXkiLCJfUGFyYWxsZWxDb25jYXRVcGRhdGUiLCJfUmVjdlRQVUVtYmVkZGluZ0FjdGl2YXRpb25zIiwiX1JlY3ZUUFVFbWJlZGRpbmdEZWR1cGxpY2F0aW9uRGF0YSIsIl9SZXR2YWwiLCJfU2VuZFRQVUVtYmVkZGluZ0dyYWRpZW50cyIsIl9UUFVDb21waWxlIiwiX1RQVUV4ZWN1dGUiLCJfVW5hcnlPcHNDb21wb3NpdGlvbiIsIlRQVUNvbXBpbGF0aW9uUmVzdWx0IiwiVFBVUmVwbGljYXRlZElucHV0IiwiVFBVUmVwbGljYXRlZE91dHB1dCIsIlRQVVJlcGxpY2F0ZU1ldGFkYXRhIiwiTWVyZ2VWMkNoZWNrcG9pbnRzIiwiUmVzdG9yZVYyIiwiU2F2ZVYyIiwiQWJvcnQiLCJBc3NlcnQiLCJBc3NpZ24iLCJQbGFjZWhvbGRlciIsIlBsYWNlaG9sZGVyVjIiLCJTaGFyZGVkRmlsZW5hbWUiLCJTdHJpbmdKb2luIiwiVmFyaWFibGUiLCJWYXJpYWJsZVYyIiwiVmFySGFuZGxlT3AiLCJBdWRpb1N1bW1hcnkiLCJBdWRpb1N1bW1hcnlWMiIsIkRlYnVnTnVtZXJpY1N1bW1hcnkiLCJIaXN0b2dyYW1TdW1tYXJ5IiwiSW1hZ2VTdW1tYXJ5IiwiTWVyZ2VTdW1tYXJ5IiwiU2NhbGFyU3VtbWFyeSIsIlN0YXRzQWdncmVnYXRvclN1bW1hcnkiXTtmdW5jdGlvbiBVbGUoZSx0KXtpZih0PT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIkNvbXBhdGliaWxpdHkgcHJvdmlkZXIgcmVxdWlyZWQsIGJ1dCBnb3Q6ICIrdCk7bDMuZWFjaChlLm5vZGVzLHI9PntyLmNvbXBhdGlibGU9dC5vcFZhbGlkKHIpLGwzLmVhY2goci5pbkVtYmVkZGluZ3Msbj0+e24uY29tcGF0aWJsZT10Lm9wVmFsaWQobil9KSxsMy5lYWNoKHIub3V0RW1iZWRkaW5ncyxuPT57bi5jb21wYXRpYmxlPXQub3BWYWxpZChuKX0pfSl9dmFyIHBQPUVlKE9lKCksMSk7dmFyIHFsZT1FZShPZSgpLDEpO3ZhciBQbD1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcmF3UmVnZXhJbnB1dD0iIix0aGlzLl9wcmV2aW91c1JlZ2V4SW5wdXQ9IiIsdGhpcy5fc2VhcmNoVGltZW91dERlbGF5PTE1MCx0aGlzLl9tYXhSZWdleFJlc3VsdHM9NDJ9Z2V0IF9yZWdleElucHV0KCl7dmFyIHQ9dGhpcy5yZW5kZXJIaWVyYXJjaHkscj10aGlzLl9yYXdSZWdleElucHV0O3JldHVybiByLnRyaW0oKX1fcmVnZXhJbnB1dENoYW5nZWQoKXt2YXIgdD10aGlzLl9yZWdleElucHV0O3RoaXMuX3JlcXVlc3RTZWFyY2goKX1fY2xlYXJTZWFyY2hSZXN1bHRzKCl7dGhpcy5zZXQoIl9yZWdleE1hdGNoZXMiLFtdKX1fcmVxdWVzdFNlYXJjaCgpe2lmKCF0aGlzLl9zZWFyY2hQZW5kaW5nKXtpZih0aGlzLl9yZWdleElucHV0PT09dGhpcy5fcHJldmlvdXNSZWdleElucHV0KXt0aGlzLl9zZWFyY2hQZW5kaW5nPSExO3JldHVybn10aGlzLl9zZWFyY2hQZW5kaW5nPSEwLHRoaXMuX2V4ZWN1dGVTZWFyY2goKSx0aGlzLmFzeW5jKCgpPT57dGhpcy5fc2VhcmNoUGVuZGluZz0hMSx0aGlzLl9yZXF1ZXN0U2VhcmNoKCl9LHRoaXMuX3NlYXJjaFRpbWVvdXREZWxheSl9fV9leGVjdXRlU2VhcmNoKCl7aWYodGhpcy5fcHJldmlvdXNSZWdleElucHV0PXRoaXMuX3JlZ2V4SW5wdXQsIXRoaXMuX3JlZ2V4SW5wdXQpe3RoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpO3JldHVybn10cnl7dmFyIHQ9bmV3IFJlZ0V4cCh0aGlzLl9yZWdleElucHV0KX1jYXRjaChpKXt0aGlzLl9jbGVhclNlYXJjaFJlc3VsdHMoKTtyZXR1cm59bGV0IHI9W10sbj10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO3FsZS5lYWNoKG4sKGksbyk9PntpZihyLmxlbmd0aD49dGhpcy5fbWF4UmVnZXhSZXN1bHRzKXJldHVybiExOyF0LnRlc3Qobyl8fHIucHVzaChvKX0pLHRoaXMuc2V0KCJfcmVnZXhNYXRjaGVzIixyKX1fbWF0Y2hDbGlja2VkKHQpe2xldCByPXQubW9kZWwuaXRlbTt0aGlzLnNldCgic2VsZWN0ZWROb2RlIixyKSxBbyh7YWN0aW9uSWQ6anIuTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUR9KX19O1BsLnRlbXBsYXRlPVFgCiAgICA8ZGl2IGlkPSJzZWFyY2gtY29udGFpbmVyIj4KICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgaWQ9InJ1bnMtcmVnZXgiCiAgICAgICAgbGFiZWw9IlNlYXJjaCBub2RlcyAocmVnZXgpIgogICAgICAgIHZhbHVlPSJ7e19yYXdSZWdleElucHV0fX0iCiAgICAgID4KICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgPGRpdiBpZD0ic2VhcmNoLXJlc3VsdHMtYW5jaG9yIj4KICAgICAgICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cyI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19yZWdleE1hdGNoZXNdXSI+CiAgICAgICAgICAgIDxkaXYgaWQ9InNlYXJjaC1tYXRjaCIgb24tY2xpY2s9Il9tYXRjaENsaWNrZWQiPltbaXRlbV1dPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAjc2VhcmNoLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIH0KCiAgICAgICNydW5zLXJlZ2V4IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI3NlYXJjaC1yZXN1bHRzLWFuY2hvciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjc2VhcmNoLXJlc3VsdHMgewogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQoKICAgICAgI3NlYXJjaC1tYXRjaCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgcGFkZGluZzogM3B4OwogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIGRpcmVjdGlvbjogcnRsOwogICAgICB9CgogICAgICAjc2VhcmNoLW1hdGNoOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi1vcmFuZ2Utd2Vhayk7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sUGwucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFBsLnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFBsLnByb3RvdHlwZSwiX3Jhd1JlZ2V4SW5wdXQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUGwucHJvdG90eXBlLCJfcHJldmlvdXNSZWdleElucHV0Iix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLFBsLnByb3RvdHlwZSwiX3NlYXJjaFRpbWVvdXREZWxheSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFBsLnByb3RvdHlwZSwiX3NlYXJjaFBlbmRpbmciLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUGwucHJvdG90eXBlLCJfbWF4UmVnZXhSZXN1bHRzIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxQbC5wcm90b3R5cGUsIl9yZWdleE1hdGNoZXMiLHZvaWQgMCk7RShbUnQoInJlbmRlckhpZXJhcmNoeSIsIl9yYXdSZWdleElucHV0IiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sUGwucHJvdG90eXBlLCJfcmVnZXhJbnB1dCIsbnVsbCk7RShbQnQoIl9yZWdleElucHV0IiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxQbC5wcm90b3R5cGUsIl9yZWdleElucHV0Q2hhbmdlZCIsbnVsbCk7UGw9RShbeXQoInRmLWdyYXBoLW5vZGUtc2VhcmNoIildLFBsKTt2YXIgc2N0PS9kZXZpY2U6KFteOl0rOlswLTldKykkLyxhY3Q9W3tyZWdleDpzY3R9XSxHbGU9W10sUWNyPW5ldyBTZXQoW0duLkNPTVBVVEVfVElNRSxHbi5NRU1PUlldKSxJbj1jbGFzcyBleHRlbmRzIEd0KGdvKG10KSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuQ29sb3JCeT1Hbix0aGlzLnN0YXRzPW51bGwsdGhpcy5kZXZpY2VzRm9yU3RhdHM9bnVsbCx0aGlzLmNvbG9yQnk9R24uU1RSVUNUVVJFLHRoaXMuZGF0YXNldHM9W10sdGhpcy5fc2VsZWN0ZWRSdW5JbmRleD0wLHRoaXMudHJhY2VJbnB1dHM9ITEsdGhpcy5hdXRvRXh0cmFjdE5vZGVzPSEwLHRoaXMuX3NlbGVjdGVkVGFnSW5kZXg9MCx0aGlzLl9zZWxlY3RlZEdyYXBoVHlwZT16cy5PUF9HUkFQSCx0aGlzLnNob3dTZXNzaW9uUnVuc0Ryb3Bkb3duPSEwLHRoaXMuc2hvd1VwbG9hZEJ1dHRvbj0hMCx0aGlzLl9sZWdlbmRPcGVuZWQ9ITAsdGhpcy5fZG93bmxvYWRGaWxlbmFtZT0iZ3JhcGgucG5nIn1fb25HcmFwaFR5cGVDaGFuZ2VkQnlVc2VyR2VzdHVyZSgpe0FvKHthY3Rpb25JZDpqci5HUkFQSF9UWVBFX0NIQU5HRUQsZXZlbnRMYWJlbDp0aGlzLl9zZWxlY3RlZEdyYXBoVHlwZX0pfV9vbkNvbG9yQnlDaGFuZ2VkQnlVc2VyR2VzdHVyZSgpe0FvKHthY3Rpb25JZDpqci5OT0RFX0NPTE9SX01PREVfQ0hBTkdFRCxldmVudExhYmVsOnRoaXMuY29sb3JCeX0pfV9vblRyYWNlSW5wdXRzQ2hhbmdlZEJ5VXNlckdlc3R1cmUoKXtBbyh7YWN0aW9uSWQ6anIuVFJBQ0VfSU5QVVRfTU9ERV9UT0dHTEVEfSl9X3hsYUNsdXN0ZXJzUHJvdmlkZWQodCl7cmV0dXJuIHQmJnQuaGllcmFyY2h5JiZ0LmhpZXJhcmNoeS54bGFDbHVzdGVycy5sZW5ndGg+MH1fc3RhdHNDaGFuZ2VkKHQpe2lmKHQhPW51bGwpe3ZhciByPXt9LG49cFAuZWFjaCh0LmRldl9zdGF0cyxmdW5jdGlvbihpKXt2YXIgbz1wUC5zb21lKGFjdCxmdW5jdGlvbihzKXtyZXR1cm4gcy5yZWdleC50ZXN0KGkuZGV2aWNlKX0pLGE9cFAuc29tZShHbGUsZnVuY3Rpb24ocyl7cmV0dXJuIHMucmVnZXgudGVzdChpLmRldmljZSl9KTtvJiYhYSYmKHJbaS5kZXZpY2VdPSEwKX0pO3RoaXMuc2V0KCJkZXZpY2VzRm9yU3RhdHMiLHIpfX1nZXQgX2N1cnJlbnREZXZpY2VzKCl7dmFyIHQ9dGhpcy5kZXZpY2VzRm9yU3RhdHM7bGV0IHI9dGhpcy5zdGF0cyxvPShyP3IuZGV2X3N0YXRzOltdKS5tYXAocz0+cy5kZXZpY2UpLmZpbHRlcihzPT5hY3Quc29tZShsPT5sLnJlZ2V4LnRlc3QocykpKSxhPU9sdChvKTtpZihhLmxlbmd0aD09MSl7bGV0IHM9YVswXS5tYXRjaChzY3QpO3MmJihhWzBdPXNbMV0pfXJldHVybiBvLm1hcCgocyxsKT0+e2xldCBjPW51bGw7cmV0dXJuIEdsZS5mb3JFYWNoKHU9Pnt1LnJlZ2V4LnRlc3QocykmJihjPXUubXNnKX0pLHtkZXZpY2U6cyxzdWZmaXg6YVtsXSx1c2VkOnQ9PW51bGw/dm9pZCAwOnRbc10saWdub3JlZE1zZzpjfX0pfV9kZXZpY2VDaGVja2JveENsaWNrZWQodCl7bGV0IHI9dC50YXJnZXQsbj1PYmplY3QuYXNzaWduKHt9LHRoaXMuZGV2aWNlc0ZvclN0YXRzKSxpPXIudmFsdWU7ci5jaGVja2VkP25baV09ITA6ZGVsZXRlIG5baV0sdGhpcy5zZXQoImRldmljZXNGb3JTdGF0cyIsbil9X251bVRhZ3ModCxyKXtyZXR1cm4gdGhpcy5fZ2V0VGFncyh0LHIpLmxlbmd0aH1fZ2V0VGFncyh0LHIpe3JldHVybiF0fHwhdFtyXT9bXTp0W3JdLnRhZ3N9X2ZpdCgpe3RoaXMuZmlyZSgiZml0LXRhcCIpfV9pc0dyYWRpZW50Q29sb3JpbmcodCxyKXtyZXR1cm4gUWNyLmhhcyhyKSYmdCE9bnVsbH1fZXF1YWxzKHQscil7cmV0dXJuIHQ9PT1yfWdldCBfY3VycmVudERldmljZVBhcmFtcygpe3ZhciB0PXRoaXMuY29sb3JCeVBhcmFtcztsZXQgcj10LmRldmljZS5maWx0ZXIobz0+YWN0LnNvbWUoYT0+YS5yZWdleC50ZXN0KG8uZGV2aWNlKSkpLG49T2x0KHIubWFwKG89Pm8uZGV2aWNlKSk7aWYobi5sZW5ndGg9PTEpe3ZhciBpPW5bMF0ubWF0Y2goc2N0KTtpJiYoblswXT1pWzFdKX1yZXR1cm4gci5tYXAoKG8sYSk9Pih7ZGV2aWNlOm5bYV0sY29sb3I6by5jb2xvcn0pKX1nZXQgX2N1cnJlbnRYbGFDbHVzdGVyUGFyYW1zKCl7dmFyIHQ9dGhpcy5jb2xvckJ5UGFyYW1zO3JldHVybiB0LnhsYV9jbHVzdGVyfWdldCBfY3VycmVudEdyYWRpZW50UGFyYW1zKCl7dmFyIHQ9dGhpcy5jb2xvckJ5UGFyYW1zLHI9dGhpcy5jb2xvckJ5O2lmKCF0aGlzLl9pc0dyYWRpZW50Q29sb3JpbmcodGhpcy5zdGF0cyxyKSlyZXR1cm4gbnVsbDtsZXQgbj10W3JdLGk9bi5taW5WYWx1ZSxvPW4ubWF4VmFsdWU7cmV0dXJuIHI9PT1Hbi5NRU1PUlk/KGk9TmQoaSxlUCksbz1OZChvLGVQKSk6cj09PUduLkNPTVBVVEVfVElNRSYmKGk9TmQoaSxyUCksbz1OZChvLHJQKSkse21pblZhbHVlOmksbWF4VmFsdWU6byxzdGFydENvbG9yOm4uc3RhcnRDb2xvcixlbmRDb2xvcjpuLmVuZENvbG9yfX1kb3dubG9hZCgpe3RoaXMuZmlyZSgiZG93bmxvYWQtaW1hZ2UtcmVxdWVzdGVkIix0aGlzLl9kb3dubG9hZEZpbGVuYW1lKX1fdXBkYXRlRmlsZUlucHV0KHQpe3ZhciByO2xldCBuPShyPXQudGFyZ2V0LmZpbGVzKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnJbMF07aWYoIW4pcmV0dXJuO2xldCBpPW4ubmFtZSxvPWkubGFzdEluZGV4T2YoIi4iKTtvPj0wJiYoaT1pLnN1YnN0cmluZygwLG8pKTtsZXQgYT1pLmxhc3RJbmRleE9mKCIvIik7YT49MCYmKGk9aS5zdWJzdHJpbmcoYSsxKSksdGhpcy5fc2V0RG93bmxvYWRGaWxlbmFtZShpKSx0aGlzLnNldCgic2VsZWN0ZWRGaWxlIix0KSxBbyh7YWN0aW9uSWQ6anIuVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNfSl9X2RhdGFzZXRzQ2hhbmdlZCh0LHIpe3ZhciBuO3IhPW51bGwmJih0aGlzLl9zZWxlY3RlZFJ1bkluZGV4PTApLHRoaXMuX3NldERvd25sb2FkRmlsZW5hbWUoKG49dGhpcy5kYXRhc2V0c1t0aGlzLl9zZWxlY3RlZFJ1bkluZGV4XSk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLm5hbWUpfV9jb21wdXRlU2VsZWN0aW9uKHQscixuLGkpe3JldHVybiF0W3JdfHwhdFtyXS50YWdzW25dP251bGw6e3J1bjp0W3JdLm5hbWUsdGFnOnRbcl0udGFnc1tuXS50YWcsdHlwZTppfX1fc2VsZWN0ZWRSdW5JbmRleENoYW5nZWQodCl7dmFyIHI7IXRoaXMuZGF0YXNldHN8fCh0aGlzLmNvbG9yQnk9R24uU1RSVUNUVVJFLHRoaXMuX3NlbGVjdGVkVGFnSW5kZXg9MCx0aGlzLl9zZWxlY3RlZEdyYXBoVHlwZT10aGlzLl9nZXREZWZhdWx0U2VsZWN0aW9uVHlwZSgpLHRoaXMudHJhY2VJbnB1dHM9ITEsdGhpcy5fc2V0RG93bmxvYWRGaWxlbmFtZSgocj10aGlzLmRhdGFzZXRzW3RdKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIubmFtZSkpfV9zZWxlY3RlZFRhZ0luZGV4Q2hhbmdlZCgpe3RoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXRoaXMuX2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCl9X2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCl7bGV0e2RhdGFzZXRzOnQsX3NlbGVjdGVkUnVuSW5kZXg6cixfc2VsZWN0ZWRUYWdJbmRleDpufT10aGlzO2lmKCF0fHwhdFtyXXx8IXRbcl0udGFnc1tuXXx8dFtyXS50YWdzW25dLm9wR3JhcGgpcmV0dXJuIHpzLk9QX0dSQVBIO2xldCBpPXRbcl07cmV0dXJuIGkudGFnc1tuXS5wcm9maWxlP3pzLlBST0ZJTEU6aS50YWdzW25dLmNvbmNlcHR1YWxHcmFwaD96cy5DT05DRVBUVUFMX0dSQVBIOnpzLk9QX0dSQVBIfV9nZXRGaWxlKCl7dGhpcy4kJCgiI2ZpbGUiKS5jbGljaygpfV9zZXREb3dubG9hZEZpbGVuYW1lKHQpe3RoaXMuX2Rvd25sb2FkRmlsZW5hbWU9KHR8fCJncmFwaCIpKyIucG5nIn1fc3RhdHNOb3ROdWxsKHQpe3JldHVybiB0IT09bnVsbH1fdG9nZ2xlTGVnZW5kT3Blbigpe3RoaXMuc2V0KCJfbGVnZW5kT3BlbmVkIiwhdGhpcy5fbGVnZW5kT3BlbmVkKX1fZ2V0VG9nZ2xlTGVnZW5kSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLW1vcmUiOiJleHBhbmQtbGVzcyJ9X2dldFNlbGVjdGlvbk9wR3JhcGhEaXNhYmxlZCh0LHIsbil7cmV0dXJuIXRbcl18fCF0W3JdLnRhZ3Nbbl18fCF0W3JdLnRhZ3Nbbl0ub3BHcmFwaH1fZ2V0U2VsZWN0aW9uUHJvZmlsZURpc2FibGVkKHQscixuKXtyZXR1cm4hdFtyXXx8IXRbcl0udGFnc1tuXXx8IXRbcl0udGFnc1tuXS5wcm9maWxlfV9nZXRTZWxlY3Rpb25Db25jZXB0dWFsR3JhcGhEaXNhYmxlZCh0LHIsbil7cmV0dXJuIXRbcl18fCF0W3JdLnRhZ3Nbbl18fCF0W3JdLnRhZ3Nbbl0uY29uY2VwdHVhbEdyYXBofX07SW4udGVtcGxhdGU9UWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiAjNTU1OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10aXRsZS1jb2xvcjogIzAwMDsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLWxlZ2VuZC10ZXh0LWNvbG9yOiAjMDAwOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtdGV4dC1jb2xvcjogIzU1NTsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXN1YnRpdGxlLWZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1zaGFyZWQtaW5wdXQtc3R5bGVfLV9mb250LXNpemU6IDE0cHg7CiAgICAgICAgLS1wYXBlci1mb250LXN1YmhlYWRfLV9mb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgICAtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtbGVnZW5kLXRleHQtY29sb3I6ICNmM2YzZjM7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10ZXh0LWNvbG9yOiAjZWVlOwogICAgICB9CgogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaW5wdXQ6IHsKICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICBjb2xvcjogZ3JheTsKICAgICAgICB9CiAgICAgICAgLS1pcm9uLWljb24td2lkdGg6IDE1cHg7CiAgICAgICAgLS1pcm9uLWljb24taGVpZ2h0OiAxNXB4OwogICAgICAgIC0tcHJpbWFyeS10ZXh0LWNvbG9yOiBncmF5OwogICAgICAgIC0tcGFwZXItaXRlbS1taW4taGVpZ2h0OiAzMHB4OwogICAgICB9CgogICAgICBwYXBlci1idXR0b25bcmFpc2VkXS5rZXlib2FyZC1mb2N1cyB7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgfQoKICAgICAgLnJ1bi1kcm9wZG93biB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXI6IHsKICAgICAgICAgIHBhZGRpbmc6IDVweCAwIDVweCA1cHg7CiAgICAgICAgfQogICAgICB9CgogICAgICB0YWJsZSB7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgICBib3JkZXItc3BhY2luZzogMDsKICAgICAgfQoKICAgICAgdGFibGUgdHIgewogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgfQoKICAgICAgdGFibGUgdGQgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgewogICAgICAgIHBhZGRpbmc6IDAgMjBweCAyMHB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICAubGVnZW5kLWhvbGRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2Vjb25kYXJ5LWJhY2tncm91bmQtY29sb3IpOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRleHQtY29sb3IpOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubGVnZW5kLXRvb2xiYXIgewogICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYzsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYzsKICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1sZWdlbmQtdGV4dC1jb2xvcik7CiAgICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubGVnZW5kLXRvb2xiYXIsCiAgICAgIC5sZWdlbmQtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGVnZW5kLWJ1dHRvbiB7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1sZWdlbmQtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1zdWJ0aXRsZS1mb250LXNpemUpOwogICAgICB9CgogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgfQogICAgICBzdmcuaWNvbiwKICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICB9CiAgICAgIC5kb21haW5WYWx1ZXMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDE2NXB4OwogICAgICB9CiAgICAgIC5kb21haW5TdGFydCB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIH0KICAgICAgLmRvbWFpbkVuZCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CiAgICAgIC5jb2xvckJveCB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5pbWFnZS1pY29uIHsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC5oZWxwLWljb24gewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLmdyYXkgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtdGl0bGUtZm9udC1zaXplKTsKICAgICAgICBtYXJnaW46IDhweCA1cHggOHB4IDA7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRpdGxlLWNvbG9yKTsKICAgICAgfQogICAgICAudGl0bGUgc21hbGwgewogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgIH0KICAgICAgLmRldmljZUxpc3QsCiAgICAgIC54bGFDbHVzdGVyTGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgI2ZpbGUgewogICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICB9CgogICAgICAuY29sb3ItbGVnZW5kLXJvdyB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBjbGVhcjogYm90aDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgIH0KCiAgICAgIC5jb2xvci1sZWdlbmQtcm93IC5sYWJlbCwKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgc3ZnLAogICAgICAuY29sb3ItbGVnZW5kLXJvdyB0Zi1ncmFwaC1pY29uIHsKICAgICAgICBmbGV4OiAwIDAgNDBweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5kZXZpY2VzLWNoZWNrYm94IGlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC5jb250cm9sLWhvbGRlciAuaWNvbi1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtc3VidGl0bGUtZm9udC1zaXplKTsKICAgICAgICBtYXJnaW46IDAgLTVweDsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXRleHQtY29sb3IpOwogICAgICB9CgogICAgICAuYnV0dG9uLXRleHQgewogICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgfQoKICAgICAgLnVwbG9hZC1idXR0b24gewogICAgICAgIHdpZHRoOiAxNjVweDsKICAgICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICAuYnV0dG9uLWljb24gewogICAgICAgIHdpZHRoOiAyNnB4OwogICAgICAgIGhlaWdodDogMjZweDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7CiAgICAgIH0KCiAgICAgIC5oaWRkZW4taW5wdXQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAuY29udHJvbC1ob2xkZXIgewogICAgICAgIGNsZWFyOiBib3RoOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgLmNvbnRyb2wtaG9sZGVyLmNvbnRyb2wtb3B0aW9ucyB7CiAgICAgICAgcGFkZGluZzogMCAwIDE1cHggMTVweDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAuYWxsY29udHJvbHMgLmNvbnRyb2wtaG9sZGVyIHBhcGVyLXRvZ2dsZS1idXR0b24gewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgc3Bhbi5jb3VudGVyIHsKICAgICAgICBmb250LXNpemU6IHZhcigtLXRiLWdyYXBoLWNvbnRyb2xzLXN1YnRpdGxlLWZvbnQtc2l6ZSk7CiAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgICAgfQoKICAgICAgLnJ1bnMtcm93IC50aXRsZSwKICAgICAgLnRhZ3Mtcm93IC50aXRsZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC5ydW5zLXJvdyBwYXBlci1pdGVtLAogICAgICAudGFncy1yb3cgcGFwZXItaXRlbSB7CiAgICAgICAgLS1wYXBlci1pdGVtOiB7CiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGFibGUuY29udHJvbC1ob2xkZXIgewogICAgICAgIGJvcmRlcjogMDsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICB9CgogICAgICB0YWJsZS50Zi1ncmFwaC1jb250cm9scyB0ZC5pbnB1dC1lbGVtZW50LXRhYmxlLWRhdGEgewogICAgICAgIHBhZGRpbmc6IDAgMCAwIDIwcHg7CiAgICAgIH0KCiAgICAgIC5zcGFjZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQoKICAgICAgLmNvbG9yLXRleHQgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5jb2xvci10ZXh0LmdyYWRpZW50LWNvbnRhaW5lciB7CiAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgICAgfQoKICAgICAgLyoqIE92ZXJyaWRlIGlubGluZSBzdHlsZXMgdGhhdCBzdXBwcmVzcyBwb2ludGVyIGV2ZW50cyBmb3IgZGlzYWJsZWQgYnV0dG9ucy4gT3RoZXJ3aXNlLCB0aGUgKi8KICAgICAgLyogIHRvb2x0aXBzIGRvIG5vdCBhcHBlYXIuICovCiAgICAgIHBhcGVyLXJhZGlvLWdyb3VwIHBhcGVyLXJhZGlvLWJ1dHRvbiB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmxlZ2VuZC1jbGFyaWZpZXIgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogaGVscDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC5sZWdlbmQtY2xhcmlmaWVyIHBhcGVyLXRvb2x0aXAgewogICAgICAgIHdpZHRoOiAxNTBweDsKICAgICAgfQoKICAgICAgLyoqIE90aGVyd2lzZSwgcG9seW1lciBVSSBjb250cm9scyBhcHBlYXIgYXRvcCBub2RlIHNlYXJjaC4gKi8KICAgICAgdGYtZ3JhcGgtbm9kZS1zZWFyY2ggewogICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJhbGxjb250cm9scyI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8dGYtZ3JhcGgtbm9kZS1zZWFyY2gKICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7c2VsZWN0ZWROb2RlfX0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgID48L3RmLWdyYXBoLW5vZGUtc2VhcmNoPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDxwYXBlci1idXR0b24gY2xhc3M9Imljb24tYnV0dG9uIiBvbi10YXA9Il9maXQiIGFsdD0iRml0IHRvIHNjcmVlbiI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImFzcGVjdC1yYXRpbyIgY2xhc3M9ImJ1dHRvbi1pY29uIj48L2lyb24taWNvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCI+Rml0IHRvIHNjcmVlbjwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICBjbGFzcz0iaWNvbi1idXR0b24iCiAgICAgICAgICBvbi1jbGljaz0iZG93bmxvYWQiCiAgICAgICAgICBhbHQ9IkRvd25sb2FkIFBORyIKICAgICAgICA+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImZpbGUtZG93bmxvYWQiIGNsYXNzPSJidXR0b24taWNvbiI+PC9pcm9uLWljb24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPkRvd25sb2FkIFBORzwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93VXBsb2FkQnV0dG9uXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgY2xhc3M9Imljb24tYnV0dG9uIgogICAgICAgICAgICBvbi1jbGljaz0iX2dldEZpbGUiCiAgICAgICAgICAgIGFsdD0iVXBsb2FkIGZpbGUiCiAgICAgICAgICAgIHRpdGxlPSJVcGxvYWQgYSBwYnR4dCBmaWxlIHRvIHZpZXcgYSBncmFwaCBmcm9tIHRoZSBsb2NhbCBmaWxlc3lzdGVtIgogICAgICAgICAgPgogICAgICAgICAgICA8aXJvbi1pY29uIGljb249ImZpbGUtdXBsb2FkIiBjbGFzcz0iYnV0dG9uLWljb24iPjwvaXJvbi1pY29uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPlVwbG9hZCBmaWxlPC9zcGFuPgogICAgICAgICAgPC9wYXBlci1idXR0b24+CgogICAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuLWlucHV0Ij4KICAgICAgICAgICAgPGlucHV0CiAgICAgICAgICAgICAgdHlwZT0iZmlsZSIKICAgICAgICAgICAgICBpZD0iZmlsZSIKICAgICAgICAgICAgICBuYW1lPSJmaWxlIgogICAgICAgICAgICAgIG9uLWNoYW5nZT0iX3VwZGF0ZUZpbGVJbnB1dCIKICAgICAgICAgICAgICBhY2NlcHQ9Ii5wYnR4dCIKICAgICAgICAgICAgLz4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciBydW5zLXJvdyI+CiAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgogICAgICAgICAgUnVuIDxzcGFuIGNsYXNzPSJjb3VudGVyIj4oW1tkYXRhc2V0cy5sZW5ndGhdXSk8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgICBuby1hbmltYXRpb25zCiAgICAgICAgICBub2luawogICAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCIKICAgICAgICAgIGNsYXNzPSJydW4tZHJvcGRvd24iCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFJ1bkluZGV4fX0iCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICA+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbZGF0YXNldHNdXSI+CiAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+W1tpdGVtLm5hbWVdXTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd1Nlc3Npb25SdW5zRHJvcGRvd25dXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgdGFncy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPgogICAgICAgICAgICBUYWcKICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvdW50ZXIiCiAgICAgICAgICAgICAgPihbW19udW1UYWdzKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCldXSk8L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgICAgICBuby1hbmltYXRpb25zCiAgICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgICAgIG5vaW5rCiAgICAgICAgICAgIGNsYXNzPSJydW4tZHJvcGRvd24iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVGFnSW5kZXh9fSIKICAgICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19nZXRUYWdzKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCldXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5bW2l0ZW0uZGlzcGxheU5hbWVdXTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5HcmFwaCB0eXBlPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIGNvbnRyb2wtb3B0aW9ucyI+CiAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRHcmFwaFR5cGV9fSIKICAgICAgICAgIG9uLXBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQ9Il9vbkdyYXBoVHlwZUNoYW5nZWRCeVVzZXJHZXN0dXJlIgogICAgICAgID4KICAgICAgICAgIDwhLS0gTm90ZSB0aGF0IHRoZSBuYW1lIGhhcyB0byBtYXRjaCB0aGF0IG9mIHRmX2dyYXBoX2NvbW1vbi5TZWxlY3Rpb25UeXBlLiAtLT4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0ib3BfZ3JhcGgiCiAgICAgICAgICAgIGRpc2FibGVkPSJbW19nZXRTZWxlY3Rpb25PcEdyYXBoRGlzYWJsZWQoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCldXSIKICAgICAgICAgICAgPk9wIGdyYXBoPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0iY29uY2VwdHVhbF9ncmFwaCIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvbkNvbmNlcHR1YWxHcmFwaERpc2FibGVkKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgpXV0iCiAgICAgICAgICAgID5Db25jZXB0dWFsIGdyYXBoPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgbmFtZT0icHJvZmlsZSIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvblByb2ZpbGVEaXNhYmxlZChkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4KV1dIgogICAgICAgICAgICA+UHJvZmlsZTwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CiAgICAgICAgPC9wYXBlci1yYWRpby1ncm91cD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5Ob2RlIG9wdGlvbnM8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgY29udHJvbC1vcHRpb25zIj4KICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgICAgY2hlY2tlZD0ie3t0cmFjZUlucHV0c319IgogICAgICAgICAgb24tY2hhbmdlPSJfb25UcmFjZUlucHV0c0NoYW5nZWRCeVVzZXJHZXN0dXJlIgogICAgICAgID4KICAgICAgICAgIFRyYWNlIGlucHV0cwogICAgICAgIDwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBjaGVja2VkPSJ7e2F1dG9FeHRyYWN0Tm9kZXN9fSI+CiAgICAgICAgICBBdXRvLWV4dHJhY3QgaGlnaC1kZWdyZWUgbm9kZXMKICAgICAgICA8L3BhcGVyLXRvZ2dsZS1idXR0b24+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaGVhbHRoUGlsbHNGZWF0dXJlRW5hYmxlZF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBjaGVja2VkPSJ7e2hlYWx0aFBpbGxzVG9nZ2xlZE9ufX0iCiAgICAgICAgICAgID5TaG93IGhlYWx0aCBwaWxsczwvcGFwZXItdG9nZ2xlLWJ1dHRvbgogICAgICAgICAgPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+Q29sb3IgYnk8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgY29udHJvbC1vcHRpb25zIj4KICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgIHNlbGVjdGVkPSJ7e2NvbG9yQnl9fSIKICAgICAgICAgIG9uLXBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQ9Il9vbkNvbG9yQnlDaGFuZ2VkQnlVc2VyR2VzdHVyZSIKICAgICAgICA+CiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IltbQ29sb3JCeS5OT05FXV0iPk5vbmU8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IltbQ29sb3JCeS5TVFJVQ1RVUkVdXSIKICAgICAgICAgICAgPlN0cnVjdHVyZTwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJbW0NvbG9yQnkuREVWSUNFXV0iCiAgICAgICAgICAgID5EZXZpY2U8L3BhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9InhsYS1jbHVzdGVyLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5LlhMQV9DTFVTVEVSXV0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbWyFfeGxhQ2x1c3RlcnNQcm92aWRlZChyZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICA+CiAgICAgICAgICAgIFhMQSBjbHVzdGVyCiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJ4bGEtY2x1c3Rlci1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSBYTEEgY2x1c3RlciBpcyBvbmx5IGVuYWJsZWQgaWYgYXQgbGVhc3QgMSBvcCBzcGVjaWZpZXMKICAgICAgICAgICAgYW4gWExBIGNsdXN0ZXIuCiAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBpZD0iY29tcHV0ZS10aW1lLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5LkNPTVBVVEVfVElNRV1dIgogICAgICAgICAgICBkaXNhYmxlZD0iW1shc3RhdHNdXSIKICAgICAgICAgID4KICAgICAgICAgICAgQ29tcHV0ZSB0aW1lCiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgZm9yPSJjb21wdXRlLXRpbWUtcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgID4KICAgICAgICAgICAgQ29sb3JpbmcgYnkgY29tcHV0ZSB0aW1lIGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgUnVuTWV0YWRhdGEgcHJvdG8gaXMKICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBGaWxlV3JpdGVyIHdoZW4gYSBzcGVjaWZpYyBzZXNzaW9uIGlzIHJ1bi4KICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIGlkPSJtZW1vcnktcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBuYW1lPSJbW0NvbG9yQnkuTUVNT1JZXV0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbWyFzdGF0c11dIgogICAgICAgICAgPgogICAgICAgICAgICBNZW1vcnkKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9Im1lbW9yeS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSBtZW1vcnkgaXMgb25seSBlbmFibGVkIGlmIHRoZSBSdW5NZXRhZGF0YSBwcm90byBpcwogICAgICAgICAgICBwYXNzZWQgdG8gdGhlIEZpbGVXcml0ZXIgd2hlbiBhIHNwZWNpZmljIHNlc3Npb24gaXMgcnVuLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9InRwdS1jb21wYXRpYmlsaXR5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgbmFtZT0iW1tDb2xvckJ5Lk9QX0NPTVBBVElCSUxJVFldXSIKICAgICAgICAgID4KICAgICAgICAgICAgVFBVIGNvbXBhdGliaWxpdHkKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9InRwdS1jb21wYXRpYmlsaXR5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICA+CiAgICAgICAgICAgIENvbG9yaW5nIGJ5IHdoZXRoZXIgYW4gb3BlcmF0aW9uIGlzIGNvbXBhdGlibGUgZm9yIHRoZSBUUFUgZGV2aWNlLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgPHNwYW4gY2xhc3M9InNwYWNlciI+PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibGVnZW5kLWhvbGRlciI+CiAgICAgIDxidXR0b24gY2xhc3M9ImxlZ2VuZC10b29sYmFyIiBvbi1jbGljaz0iX3RvZ2dsZUxlZ2VuZE9wZW4iPgogICAgICAgIDxzcGFuIGNsYXNzPSJ0b2dnbGUtbGVnZW5kLXRleHQiPkxlZ2VuZDwvc3Bhbj4KICAgICAgICA8aXJvbi1pY29uCiAgICAgICAgICBpY29uPSJbW19nZXRUb2dnbGVMZWdlbmRJY29uKF9sZWdlbmRPcGVuZWQpXV0iCiAgICAgICAgICBjbGFzcz0idG9nZ2xlLWxlZ2VuZC1idXR0b24iCiAgICAgICAgPgogICAgICAgIDwvaXJvbi1pY29uPgogICAgICA8L2J1dHRvbj4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19sZWdlbmRPcGVuZWRdXSIgY2xhc3M9ImxlZ2VuZC1jb250ZW50Ij4KICAgICAgICA8IS0tIENvbG9yLW1vZGUtc3BlY2lmaWMgbGVnZW5kIGl0ZW1zIC0tPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzR3JhZGllbnRDb2xvcmluZyhzdGF0cywgY29sb3JCeSldXSI+CiAgICAgICAgICAgIDxzdmcgd2lkdGg9IjE0MCIgaGVpZ2h0PSIyMCIgY2xhc3M9ImNvbG9yLXRleHQgZ3JhZGllbnQtY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICAgICAgICAgICBpZD0ibGluZWFyR3JhZGllbnQiCiAgICAgICAgICAgICAgICAgIHgxPSIwJSIKICAgICAgICAgICAgICAgICAgeTE9IjAlIgogICAgICAgICAgICAgICAgICB4Mj0iMTAwJSIKICAgICAgICAgICAgICAgICAgeTI9IjAlIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJzdGFydCIKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAlIgogICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19jdXJyZW50R3JhZGllbnRQYXJhbXMuc3RhcnRDb2xvcl1dIgogICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJlbmQiCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIxMDAlIgogICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19jdXJyZW50R3JhZGllbnRQYXJhbXMuZW5kQ29sb3JdXSIKICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgIDxyZWN0CiAgICAgICAgICAgICAgICB4PSIwIgogICAgICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgICAgIHdpZHRoPSIxMzUiCiAgICAgICAgICAgICAgICBoZWlnaHQ9IjIwIgogICAgICAgICAgICAgICAgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudCkiCiAgICAgICAgICAgICAgICBzdHJva2U9ImJsYWNrIgogICAgICAgICAgICAgID48L3JlY3Q+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW5WYWx1ZXMgY29sb3ItdGV4dCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluU3RhcnQiPltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5taW5WYWx1ZV1dPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZG9tYWluRW5kIj5bW19jdXJyZW50R3JhZGllbnRQYXJhbXMubWF4VmFsdWVdXTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGJyIHN0eWxlPSJjbGVhcjogYm90aCIgLz4KICAgICAgICAgICAgPGRpdj5EZXZpY2VzIGluY2x1ZGVkIGluIHN0YXRzOjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkZXZpY2VMaXN0Ij4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jdXJyZW50RGV2aWNlc11dIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3cgZGV2aWNlcy1jaGVja2JveCI+CiAgICAgICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICAgICAgPjxpbnB1dAogICAgICAgICAgICAgICAgICAgICAgdHlwZT0iY2hlY2tib3giCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSQ9IltbaXRlbS5kZXZpY2VdXSIKICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQkPSJbW2l0ZW0udXNlZF1dIgogICAgICAgICAgICAgICAgICAgICAgb24tY2xpY2s9Il9kZXZpY2VDaGVja2JveENsaWNrZWQiCiAgICAgICAgICAgICAgICAgIC8+PC9zcGFuPgogICAgICAgICAgICAgICAgICA8c3Bhbj5bW2l0ZW0uc3VmZml4XV08L3NwYW4+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tpdGVtLmlnbm9yZWRNc2ddXSI+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgICBpY29uPSJoZWxwIgogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImhlbHAtaWNvbiIKICAgICAgICAgICAgICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgPltbaXRlbS5pZ25vcmVkTXNnXV08L3BhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAnc3RydWN0dXJlJyldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLXRleHQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIj4gY29sb3JzIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnNhbWUgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iI2VlZSIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjYTZhNmE2IgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnVuaXF1ZSBzdWJzdHJ1Y3R1cmU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdkZXZpY2UnKV1dIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jdXJyZW50RGV2aWNlUGFyYW1zXV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IltbaXRlbS5jb2xvcl1dIgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2E2YTZhNiIKICAgICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+W1tpdGVtLmRldmljZV1dPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgIHR5cGU9Ik1FVEEiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNlZWUiCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2E2YTZhNiIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bmtub3duIGRldmljZTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ3hsYV9jbHVzdGVyJyldXSI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXNdXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgICAgPHN2Zz4KICAgICAgICAgICAgICAgICAgICA8dXNlCiAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9IiN1bmZpbGxlZC1yZWN0IgogICAgICAgICAgICAgICAgICAgICAgeD0iMCIKICAgICAgICAgICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbDpbW2l0ZW0uY29sb3JdXSIKICAgICAgICAgICAgICAgICAgICA+PC91c2U+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5bW2l0ZW0ueGxhX2NsdXN0ZXJdXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8c3ZnPgogICAgICAgICAgICAgICAgICA8dXNlCiAgICAgICAgICAgICAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj0iI2dyZXktcmVjdCIKICAgICAgICAgICAgICAgICAgICB4PSIwIgogICAgICAgICAgICAgICAgICAgIHk9IjAiCiAgICAgICAgICAgICAgICAgID48L3VzZT4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW5rbm93biBYTEEgY2x1c3Rlcjwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ29wX2NvbXBhdGliaWxpdHknKV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItdGV4dCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICB0eXBlPSJPUCIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iIzBmOWQ1OCIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjY2NjIgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPlZhbGlkIE9wPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iT1AiCiAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNkYjQ0MzciCiAgICAgICAgICAgICAgICAgIHN0cm9rZS1vdmVycmlkZT0iI2NjYyIKICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5JbnZhbGlkIE9wPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N0YXRzTm90TnVsbChzdGF0cyldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9Ik1FVEEiIGhlaWdodD0iMTYiIGZhZGVkPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bnVzZWQgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gQ29tbW9uIGxlZ2VuZCBpdGVtcyAtLT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHRhYmxlPgogICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+KCogPSBleHBhbmRhYmxlKTwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIGZpbGwtb3ZlcnJpZGU9IiNkOWQ5ZDkiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjY2NjIgogICAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgTmFtZXNwYWNlPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFbmNhcHN1bGF0ZXMgYSBzZXQgb2Ygbm9kZXMuIE5hbWVzcGFjZSBpcyBoaWVyYXJjaGljYWwgYW5kCiAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBzY29wZS4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iT1AiIGhlaWdodD0iMTYiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIE9wTm9kZQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgTm9kZSB0aGF0IHBlcmZvcm1zIGFuIG9wZXJhdGlvbi4gVGhlc2Ugbm9kZXMgY2Fubm90CiAgICAgICAgICAgICAgICAgICAgICBleHBhbmQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNFUklFUyIgaGVpZ2h0PSIxNiI+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgVW5jb25uZWN0ZWQgc2VyaWVzPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSBvZiBudW1iZXJlZCBub2RlcyB0aGF0IGFyZSBub3QgY29ubmVjdGVkIHRvIGVhY2gKICAgICAgICAgICAgICAgICAgICAgIG90aGVyLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICAgIHR5cGU9IlNFUklFUyIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsCiAgICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBDb25uZWN0ZWQgc2VyaWVzPHNwYW4gY2xhc3M9ImdyYXkiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSBvZiBudW1iZXJlZCBub2RlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gZWFjaAogICAgICAgICAgICAgICAgICAgICAgb3RoZXIuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iPgogICAgICAgICAgICAgICAgICAgIDxjaXJjbGUKICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IndoaXRlIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjODQ4NDg0IgogICAgICAgICAgICAgICAgICAgICAgY3g9IjEwIgogICAgICAgICAgICAgICAgICAgICAgY3k9IjEwIgogICAgICAgICAgICAgICAgICAgICAgcj0iNSIKICAgICAgICAgICAgICAgICAgICA+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgQ29uc3RhbnQKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIE5vZGUgdGhhdCBvdXRwdXRzIGEgY29uc3RhbnQgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNVTU1BUlkiIGhlaWdodD0iMjAiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIFN1bW1hcnkKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIE5vZGUgdGhhdCBjb2xsZWN0cyBkYXRhIGZvciB2aXN1YWxpemF0aW9uIHdpdGhpbgogICAgICAgICAgICAgICAgICAgICAgVGVuc29yQm9hcmQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaWNvbiIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE1cHgiCiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMTUgMTUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgIDxtYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1sZWdlbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiNiYmIiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcldpZHRoPSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySGVpZ2h0PSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWD0iOSIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWT0iNSIKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICBtYXJrZXItZW5kPSJ1cmwoI2RhdGFmbG93LWFycm93aGVhZC1sZWdlbmQpIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjYmJiIgogICAgICAgICAgICAgICAgICAgICAgZD0iTTIgOSBsIDI5IDAiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBEYXRhZmxvdyBlZGdlCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBFZGdlIHNob3dpbmcgdGhlIGRhdGEgZmxvdyBiZXR3ZWVuIG9wZXJhdGlvbnMuIEVkZ2VzIGZsb3cKICAgICAgICAgICAgICAgICAgICAgIHVwd2FyZHMgdW5sZXNzIGFycm93aGVhZHMgc3BlY2lmeSBvdGhlcndpc2UuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaWNvbiIKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE1cHgiCiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMTUgMTUiCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjYmJiIgogICAgICAgICAgICAgICAgICAgICAgZD0iTTIgOSBsIDI5IDAiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtZGFzaGFycmF5PSIyLCAyIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgQ29udHJvbCBkZXBlbmRlbmN5IGVkZ2UKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGUgY29udHJvbCBkZXBlbmRlbmN5IGJldHdlZW4gb3BlcmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHN2ZwogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpY29uIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTVweCIKICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAxNSAxNSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgPG1hcmtlcgogICAgICAgICAgICAgICAgICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sZWdlbmQiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9IiNGRkI3NEQiCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcldpZHRoPSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VySGVpZ2h0PSIxMCIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWD0iOSIKICAgICAgICAgICAgICAgICAgICAgICAgcmVmWT0iNSIKICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICBtYXJrZXItZW5kPSJ1cmwoI3JlZmVyZW5jZS1hcnJvd2hlYWQtbGVnZW5kKSIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0iI0ZGQjc0RCIKICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0yIDkgbCAyOSAwIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlIGVkZ2UKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGF0IHRoZSBvdXRnb2luZyBvcGVyYXRpb24gbm9kZSBjYW4gbXV0YXRlCiAgICAgICAgICAgICAgICAgICAgICB0aGUgaW5jb21pbmcgdGVuc29yLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tY29sbGFwc2U+CiAgICA8L2Rpdj4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RhdHNDaGFuZ2VkIn0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxJbi5wcm90b3R5cGUsInN0YXRzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxJbi5wcm90b3R5cGUsImRldmljZXNGb3JTdGF0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSW4ucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxJbi5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheSxvYnNlcnZlcjoiX2RhdGFzZXRzQ2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSW4ucHJvdG90eXBlLCJkYXRhc2V0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixzbyldLEluLnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxyZWFkT25seTohMCxjb21wdXRlZDoiX2NvbXB1dGVTZWxlY3Rpb24oZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCwgX3NlbGVjdGVkR3JhcGhUeXBlKSJ9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSW4ucHJvdG90eXBlLCJzZWxlY3Rpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLEluLnByb3RvdHlwZSwic2VsZWN0ZWRGaWxlIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyLG9ic2VydmVyOiJfc2VsZWN0ZWRSdW5JbmRleENoYW5nZWQifSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLEluLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVuSW5kZXgiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSW4ucHJvdG90eXBlLCJ0cmFjZUlucHV0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJbi5wcm90b3R5cGUsImF1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9zZWxlY3RlZFRhZ0luZGV4Q2hhbmdlZCJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSW4ucHJvdG90eXBlLCJfc2VsZWN0ZWRUYWdJbmRleCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxJbi5wcm90b3R5cGUsIl9zZWxlY3RlZEdyYXBoVHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSW4ucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJbi5wcm90b3R5cGUsInNob3dTZXNzaW9uUnVuc0Ryb3Bkb3duIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSW4ucHJvdG90eXBlLCJzaG93VXBsb2FkQnV0dG9uIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSW4ucHJvdG90eXBlLCJoZWFsdGhQaWxsc0ZlYXR1cmVFbmFibGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEluLnByb3RvdHlwZSwiaGVhbHRoUGlsbHNUb2dnbGVkT24iLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxJbi5wcm90b3R5cGUsIl9sZWdlbmRPcGVuZWQiLHZvaWQgMCk7RShbUnQoImRldmljZXNGb3JTdGF0cyIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSW4ucHJvdG90eXBlLCJfY3VycmVudERldmljZXMiLG51bGwpO0UoW1J0KCJjb2xvckJ5UGFyYW1zIiksdygiZGVzaWduOnR5cGUiLEFycmF5KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxJbi5wcm90b3R5cGUsIl9jdXJyZW50RGV2aWNlUGFyYW1zIixudWxsKTtFKFtSdCgiY29sb3JCeVBhcmFtcyIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSW4ucHJvdG90eXBlLCJfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXMiLG51bGwpO0UoW1J0KCJjb2xvckJ5UGFyYW1zIiwiY29sb3JCeSIpLHcoImRlc2lnbjp0eXBlIixPYmplY3QpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEluLnByb3RvdHlwZSwiX2N1cnJlbnRHcmFkaWVudFBhcmFtcyIsbnVsbCk7SW49RShbeXQoInRmLWdyYXBoLWNvbnRyb2xzIildLEluKTtmdW5jdGlvbiB0dXIoZSl7aWYoZT09PSJ0cnVlIilyZXR1cm4hMDtpZihlPT09ImZhbHNlIilyZXR1cm4hMTtpZihlWzBdPT09JyInKXJldHVybiBlLnN1YnN0cmluZygxLGUubGVuZ3RoLTEpO2xldCByPXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHIpP2U6cn1mdW5jdGlvbiBXbGUoZSl7cmV0dXJuIG5ldyBQcm9taXNlKCh0LHIpPT57ZmV0Y2goZSkudGhlbihuPT57bi5vaz9uLmFycmF5QnVmZmVyKCkudGhlbih0LHIpOm4udGV4dCgpLnRoZW4ocixyKX0pfSl9ZnVuY3Rpb24gWWxlKGUsdCl7cmV0dXJuIFVzZSgiUmVhZGluZyBtZXRhZGF0YSBwYnR4dCIsNDAsKCk9PmU9PW51bGw/UHJvbWlzZS5yZXNvbHZlKG51bGwpOldsZShlKSx0LGpyLkZFVENIX01FVEFEQVRBX1BCVFhUX0JZVEVTKS50aGVuKHI9PmZIKCJQYXJzaW5nIG1ldGFkYXRhLnBidHh0Iiw2MCwoKT0+ciE9bnVsbD9vdXIocik6UHJvbWlzZS5yZXNvbHZlKG51bGwpLHQsanIuUEFSU0VfTUVUQURBVEFfUEJUWFRfSU5UT19PQkpFQ1QpKX1mdW5jdGlvbiBqbGUoZSx0LHIpe3JldHVybiBmSCgiUmVhZGluZyBncmFwaCBwYnR4dCIsNDAsKCk9PnJ1KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgbj1EYXRlLm5vdygpO2lmKHQpe2xldCBvPXlpZWxkIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEscyl7bGV0IGw9bmV3IEZpbGVSZWFkZXI7bC5vbmxvYWQ9KCk9PmEobC5yZXN1bHQpLGwub25lcnJvcj0oKT0+cyhsLmVycm9yKSxsLnJlYWRBc0FycmF5QnVmZmVyKHQpfSk7cmV0dXJuIEFvKHt0aW1pbmdJZDpqci5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU0sZXZlbnRWYWx1ZTpEYXRlLm5vdygpLW59KSxvfWxldCBpPXlpZWxkIFdsZShlKTtyZXR1cm4gQW8oe3RpbWluZ0lkOmpyLkZFVENIX1BCVFhUX0JZVEVTX0ZST01fU0VSVkVSLGV2ZW50VmFsdWU6RGF0ZS5ub3coKS1ufSksaX0pLHIsanIuRkVUQ0hfUEJUWFRfQllURVMpLnRoZW4obj0+ZkgoIlBhcnNpbmcgZ3JhcGgucGJ0eHQiLDYwLCgpPT5pdXIobikscixqci5QQVJTRV9QQlRYVF9JTlRPX09CSkVDVCkpfWZ1bmN0aW9uIGV1cihlLHQscj0xZTYsbj1gCmApe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIGEocyxsLGMpe2xldCB1PWM+PWUuYnl0ZUxlbmd0aCxoPWwuc3BsaXQobik7aFswXT1zK2hbMF07bGV0IGY9dT8iIjpoLnBvcCgpO2ZvcihsZXQgZyBvZiBoKXRyeXt0KGcpfWNhdGNoKF8pe28oXyk7cmV0dXJufWlmKHUpe2koITApO3JldHVybn1sZXQgcD1uZXcgQmxvYihbZS5zbGljZShjLGMrcildKSxkPW5ldyBGaWxlUmVhZGVyO2Qub25sb2FkPWZ1bmN0aW9uKGcpe2EoZixnLnRhcmdldC5yZXN1bHQsYytyKX0sZC5yZWFkQXNUZXh0KHApfWEoIiIsIiIsMCl9KX12YXIgcnVyPXsibGlicmFyeS5mdW5jdGlvbiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmlucHV0IjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuYiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LmYiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5mdW5jIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuaSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnMiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5zaGFwZSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnNoYXBlLmRpbSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnRlbnNvciI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnR5cGUiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUuc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLnRlbnNvci5zdHJpbmdfdmFsIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLnRlbnNvci50ZW5zb3Jfc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5zaWduYXR1cmUuaW5wdXRfYXJnIjohMCwibGlicmFyeS5mdW5jdGlvbi5zaWduYXR1cmUub3V0cHV0X2FyZyI6ITAsImxpYnJhcnkudmVyc2lvbnMiOiEwLG5vZGU6ITAsIm5vZGUuaW5wdXQiOiEwLCJub2RlLmF0dHIiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5iIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuZiI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmZ1bmMiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5pIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QucyI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnNoYXBlIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3Quc2hhcGUuZGltIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QudGVuc29yIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QudHlwZSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5zaGFwZS5kaW0iOiEwLCJub2RlLmF0dHIudmFsdWUudGVuc29yLnN0cmluZ192YWwiOiEwLCJub2RlLmF0dHIudmFsdWUudGVuc29yLnRlbnNvcl9zaGFwZS5kaW0iOiEwfSxudXI9eyJzdGVwX3N0YXRzLmRldl9zdGF0cyI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMiOiEwLCJzdGVwX3N0YXRzLmRldl9zdGF0cy5ub2RlX3N0YXRzLm91dHB1dCI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMubWVtb3J5IjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cy5vdXRwdXQudGVuc29yX2Rlc2NyaXB0aW9uLnNoYXBlLmRpbSI6ITB9O2Z1bmN0aW9uIGl1cihlKXtyZXR1cm4gWGxlKGUscnVyKX1mdW5jdGlvbiBvdXIoZSl7cmV0dXJuIFhsZShlLG51cikudGhlbih0PT50LnN0ZXBfc3RhdHMpfWZ1bmN0aW9uIFhsZShlLHQpe2xldCByPXt9LG49W10saT1bXSxvPXI7ZnVuY3Rpb24gYShsKXtsZXQgYz1sLmluZGV4T2YoIjoiKSx1PWwuc3Vic3RyaW5nKDAsYykudHJpbSgpLGg9dHVyKGwuc3Vic3RyaW5nKGMrMikudHJpbSgpKTtyZXR1cm57bmFtZTp1LHZhbHVlOmh9fWZ1bmN0aW9uIHMobCxjLHUsaCl7bGV0IGY9bFtjXTtmPT1udWxsP2xbY109aC5qb2luKCIuIilpbiB0P1t1XTp1OkFycmF5LmlzQXJyYXkoZik/Zi5wdXNoKHUpOmxbY109W2YsdV19cmV0dXJuIGV1cihlLGZ1bmN0aW9uKGwpe2lmKGw9bC50cmltKCksISFsKXN3aXRjaChsW2wubGVuZ3RoLTFdKXtjYXNlInsiOmxldCBjPWwuc3Vic3RyaW5nKDAsbC5sZW5ndGgtMikudHJpbSgpLHU9e307bi5wdXNoKG8pLGkucHVzaChjKSxzKG8sYyx1LGkpLG89dTticmVhaztjYXNlIn0iOm89bi5wb3AoKSxpLnBvcCgpO2JyZWFrO2RlZmF1bHQ6bGV0IGg9YShsKTtzKG8saC5uYW1lLGgudmFsdWUsaS5jb25jYXQoaC5uYW1lKSk7YnJlYWt9fSkudGhlbihmdW5jdGlvbigpe3JldHVybiByfSl9ZnVuY3Rpb24gS2xlKGUsdCxyLG49bmV3IFp1LGk9ZTMpe2xldCBvPVpTKGUsMzAsIkRhdGEiKSxhPVpTKGUsMjAsIkdyYXBoIikscz1aUyhlLDUwLCJOYW1lc3BhY2UgaGllcmFyY2h5IiksbD1EYXRlLm5vdygpO3JldHVybiBqbGUodCxyLG8pLnRoZW4oZnVuY3Rpb24oYyl7aWYoIWMubm9kZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBncmFwaCBpcyBlbXB0eS4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gVGVuc29yRmxvdyBjb3VsZCBub3QgdHJhY2UgYW55IGdyYXBoLiBQbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvaXNzdWVzLzE5NjEgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7cmV0dXJuIFFzZShjLEpzZSxhKX0sKCk9Pnt0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBHcmFwaERlZi4gVGhpcyBjYW4gc29tZXRpbWVzIGJlIGNhdXNlZCBieSBhIGJhZCBuZXR3b3JrIGNvbm5lY3Rpb24gb3IgZGlmZmljdWx0eSByZWNvbmNpbGluZyBtdWx0aXBsZSBHcmFwaERlZnM7IGZvciB0aGUgbGF0dGVyIGNhc2UsIHBsZWFzZSByZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvMTkyOS4iKX0pLnRoZW4oYz0+cnUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe1VsZShjLG4pO2xldCB1PXlpZWxkIHlIKGMsaSxzKTtyZXR1cm4gQW8oe3RpbWluZ0lkOmpyLkdSQVBIX0xPQURfU1VDQ0VFREVELGV2ZW50VmFsdWU6RGF0ZS5ub3coKS1sfSkse2dyYXBoOmMsZ3JhcGhIaWVyYXJjaHk6dX19KSkuY2F0Y2goYz0+e2xldCB1PWBHcmFwaCB2aXN1YWxpemF0aW9uIGZhaWxlZC4KCiR7Y31gO3Rocm93IGUucmVwb3J0RXJyb3IodSxjKSxBbyh7dGltaW5nSWQ6anIuR1JBUEhfTE9BRF9GQUlMRUQsZXZlbnRWYWx1ZTpEYXRlLm5vdygpLWx9KSxjfSl9dmFyIEJzPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbXBhdGliaWxpdHlQcm92aWRlcj1uZXcgWnUsdGhpcy5oaWVyYXJjaHlQYXJhbXM9ZTMsdGhpcy5fdGVtcGxhdGU9bnVsbH1fc2VsZWN0aW9uQ2hhbmdlZCgpeyF0aGlzLnNlbGVjdGlvbnx8dGhpcy5kZWJvdW5jZSgic2VsZWN0aW9uY2hhbmdlIiwoKT0+e3RoaXMuX2xvYWQodGhpcy5zZWxlY3Rpb24pfSl9X2xvYWQodCl7bGV0e3J1bjpyLHRhZzpuLHR5cGU6aX09dDtzd2l0Y2goaSl7Y2FzZSB6cy5PUF9HUkFQSDpjYXNlIHpzLkNPTkNFUFRVQUxfR1JBUEg6eyhmdW5jdGlvbigpe3RoaXMuX3NldE91dFN0YXRzKG51bGwpfSkuYmluZCh0aGlzKSgpO2xldCBvPW5ldyBVUkxTZWFyY2hQYXJhbXM7by5zZXQoInJ1biIsciksby5zZXQoImNvbmNlcHR1YWwiLFN0cmluZyhpPT09enMuQ09OQ0VQVFVBTF9HUkFQSCkpLG4mJm8uc2V0KCJ0YWciLG4pO2xldCBhPXZlKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ncmFwaCIsbyk7cmV0dXJuIHRoaXMuX2ZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGgoYSkudGhlbigoKT0+e3RoaXMuX2dyYXBoUnVuVGFnPXtydW46cix0YWc6bn19KX1jYXNlIHpzLlBST0ZJTEU6e2xldHt0YWdzOm99PXRoaXMuZGF0YXNldHMuZmluZCgoe25hbWU6Zn0pPT5mPT09cikscz1vLmZpbmQoZj0+Zi50YWc9PT1uKS5vcEdyYXBoP246bnVsbDtjb25zb2xlLmFzc2VydChvLmZpbmQoZj0+Zi50YWc9PT1zKSxgUmVxdWlyZWQgdGFnICgke3N9KSBpcyBtaXNzaW5nLmApO2xldCBjPSF0aGlzLl9ncmFwaFJ1blRhZ3x8dGhpcy5fZ3JhcGhSdW5UYWcucnVuIT09cnx8dGhpcy5fZ3JhcGhSdW5UYWcudGFnIT09cz90aGlzLl9sb2FkKHtydW46cix0YWc6cyx0eXBlOnpzLk9QX0dSQVBIfSk6UHJvbWlzZS5yZXNvbHZlKCksdT1uZXcgVVJMU2VhcmNoUGFyYW1zO3Uuc2V0KCJ0YWciLG4pLHUuc2V0KCJydW4iLHIpO2xldCBoPXZlKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ydW5fbWV0YWRhdGEiLHUpO3JldHVybiBjLnRoZW4oKCk9PnRoaXMuX3JlYWRBbmRQYXJzZU1ldGFkYXRhKGgpKX1kZWZhdWx0OnJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYFVua25vd24gc2VsZWN0aW9uIHR5cGU6ICR7aX1gKSl9fV9yZWFkQW5kUGFyc2VNZXRhZGF0YSh0KXt0aGlzLnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTowLG1zZzoiIn0pO3ZhciByPXRQKHRoaXMpO1lsZSh0LHIpLnRoZW4oZnVuY3Rpb24obil7dGhpcy5fc2V0T3V0U3RhdHMobil9LmJpbmQodGhpcykpfV9mZXRjaEFuZENvbnN0cnVjdEhpZXJhcmNoaWNhbEdyYXBoKHQscil7dGhpcy5zZXQoInByb2dyZXNzIix7dmFsdWU6MCxtc2c6IiJ9KTtsZXQgbj10UCh0aGlzKTtyZXR1cm4gS2xlKG4sdCxyIT09dm9pZCAwP3I6bnVsbCx0aGlzLmNvbXBhdGliaWxpdHlQcm92aWRlcix0aGlzLmhpZXJhcmNoeVBhcmFtcykudGhlbihmdW5jdGlvbih7Z3JhcGg6aSxncmFwaEhpZXJhcmNoeTpvfSl7dGhpcy5fc2V0T3V0R3JhcGgoaSksdGhpcy5fc2V0T3V0R3JhcGhIaWVyYXJjaHkobyl9LmJpbmQodGhpcykpfV9zZWxlY3RlZEZpbGVDaGFuZ2VkKCl7dmFyIHQscj10aGlzLnNlbGVjdGVkRmlsZTtpZighcilyZXR1cm47bGV0IG49ci50YXJnZXQsaT0odD1uLmZpbGVzKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnRbMF07IWl8fChuLnZhbHVlPSIiLHRoaXMuX2ZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGgobnVsbCxpKSl9fTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sQnMucHJvdG90eXBlLCJkYXRhc2V0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQnMucHJvdG90eXBlLCJwcm9ncmVzcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCcy5wcm90b3R5cGUsInNlbGVjdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCcy5wcm90b3R5cGUsInNlbGVjdGVkRmlsZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCcy5wcm90b3R5cGUsImNvbXBhdGliaWxpdHlQcm92aWRlciIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCcy5wcm90b3R5cGUsImhpZXJhcmNoeVBhcmFtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsaXMpXSxCcy5wcm90b3R5cGUsIm91dEdyYXBoSGllcmFyY2h5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixqdSldLEJzLnByb3RvdHlwZSwib3V0R3JhcGgiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLEJzLnByb3RvdHlwZSwib3V0U3RhdHMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQnMucHJvdG90eXBlLCJfZ3JhcGhSdW5UYWciLHZvaWQgMCk7RShbQnQoInNlbGVjdGlvbiIsImNvbXBhdGliaWxpdHlQcm92aWRlciIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sQnMucHJvdG90eXBlLCJfc2VsZWN0aW9uQ2hhbmdlZCIsbnVsbCk7RShbQnQoInNlbGVjdGVkRmlsZSIsImNvbXBhdGliaWxpdHlQcm92aWRlciIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sQnMucHJvdG90eXBlLCJfc2VsZWN0ZWRGaWxlQ2hhbmdlZCIsbnVsbCk7QnM9RShbeXQoInRmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXIiKV0sQnMpO3ZhciBabGU9InJ1biI7dmFyIE9yPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9kYXRhc2V0cz1bXSx0aGlzLl9kYXRhc2V0c0ZldGNoZWQ9ITEsdGhpcy5fc2VsZWN0ZWREYXRhc2V0PTAsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IEFlLHRoaXMuX2NhbmNlbGxlcj1uZXcgYW4sdGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwPTAsdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbj0hMSx0aGlzLl9kZWJ1Z2dlck51bWVyaWNBbGVydHM9W10sdGhpcy5fbm9kZU5hbWVzVG9IZWFsdGhQaWxscz17fSx0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkPTEsdGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJEZWxheT01MDAsdGhpcy5ydW49eV8oWmxlLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExfSkuY2FsbCh0aGlzKSx0aGlzLl9ydW5PYnNlcnZlcj12XyhabGUse2RlZmF1bHRWYWx1ZToiIixwb2x5bWVyUHJvcGVydHk6InJ1biIsdXNlTG9jYWxTdG9yYWdlOiExfSl9YXR0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCEwKX1kZXRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITEpfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLWV4cGFuZCIsdGhpcy5faGFuZGxlTm9kZVRvZ2dsZUV4cGFuZC5iaW5kKHRoaXMpKX1yZWxvYWQoKXt0aGlzLl9kZWJ1Z2dlckRhdGFFbmFibGVkfHx0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHZlKCkucGx1Z2luc0xpc3RpbmcoKSkudGhlbih0aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUodD0+e3QuY2FuY2VsbGVkfHx0LnZhbHVlLmRlYnVnZ2VyJiZ0aGlzLnNldCgiX2RlYnVnZ2VyRGF0YUVuYWJsZWQiLCEwKX0pKSx0aGlzLl9tYXliZUZldGNoSGVhbHRoUGlsbHMoKX1fZml0KCl7dGhpcy4kJCgiI2dyYXBoYm9hcmQiKS5maXQoKX1fb25Eb3dubG9hZEltYWdlUmVxdWVzdGVkKHQpe3RoaXMuJCQoIiNncmFwaGJvYXJkIikuZG93bmxvYWRBc0ltYWdlKHQuZGV0YWlsKX1fZ2V0R3JhcGhEaXNwbGF5Q2xhc3NOYW1lKHQscil7cmV0dXJuIHR8fHIubGVuZ3RoPyIiOiJuby1ncmFwaCJ9X2ZldGNoRGF0YXNldCgpe3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHZlKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9pbmZvIikpfV9mZXRjaEhlYWx0aFBpbGxzKHQscil7bGV0IG49e25vZGVfbmFtZXM6SlNPTi5zdHJpbmdpZnkodCkscnVuOiJfX2RlYnVnZ2VyX2RhdGFfXyJ9O3IhPT12b2lkIDAmJihuLnN0ZXA9cik7bGV0IGk9dmUoKS5wbHVnaW5Sb3V0ZSgiZGVidWdnZXIiLCIvaGVhbHRoX3BpbGxzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoaSxuKX1fZmV0Y2hEZWJ1Z2dlck51bWVyaWNzQWxlcnRzKCl7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodmUoKS5wbHVnaW5Sb3V0ZSgiZGVidWdnZXIiLCIvbnVtZXJpY3NfYWxlcnRfcmVwb3J0IikpfV9ncmFwaFVybCh0LHIsbil7cmV0dXJuIHZlKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ncmFwaCIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7cnVuOnQsbGltaXRfYXR0cl9zaXplOnIsbGFyZ2VfYXR0cnNfa2V5Om59KSl9X3Nob3VsZFJlcXVlc3RIZWFsdGhQaWxscygpe3JldHVybiB0aGlzLl9kZWJ1Z2dlckRhdGFFbmFibGVkJiZ0aGlzLmhlYWx0aFBpbGxzVG9nZ2xlZE9uJiZ0aGlzLl9yZW5kZXJIaWVyYXJjaHkmJnRoaXMuX2RhdGFzZXRzU3RhdGUodGhpcy5fZGF0YXNldHNGZXRjaGVkLHRoaXMuX2RhdGFzZXRzLCJQUkVTRU5UIil9X21heWJlSW5pdGlhbGl6ZURhc2hib2FyZCgpe3ZhciB0PXRoaXMuX2lzQXR0YWNoZWQ7dGhpcy5faW5pdGlhbGl6ZWR8fCF0fHwodGhpcy5zZXQoIl9jb21wYXRpYmlsaXR5UHJvdmlkZXIiLG5ldyBadSksdGhpcy5faW5pdGlhbGl6ZWQ9ITAsdGhpcy5fZmV0Y2hEYXRhc2V0KCkudGhlbihyPT57bGV0IG49T2JqZWN0LmtleXMocik7dGhpcy5fZGF0YXNldHM9bi5zb3J0KHZoKS5tYXAoaT0+e2xldCBvPXJbaV0scz1PYmplY3Qua2V5cyhvLnRhZ3MpLnNvcnQodmgpLm1hcChjPT5vLnRhZ3NbY10pLm1hcCgoe3RhZzpjLGNvbmNlcHR1YWxfZ3JhcGg6dSxvcF9ncmFwaDpoLHByb2ZpbGU6Zn0pPT4oe3RhZzpjLGRpc3BsYXlOYW1lOmMsY29uY2VwdHVhbEdyYXBoOnUsb3BHcmFwaDpoLHByb2ZpbGU6Zn0pKSxsPW8ucnVuX2dyYXBoP1t7dGFnOm51bGwsZGlzcGxheU5hbWU6IkRlZmF1bHQiLGNvbmNlcHR1YWxHcmFwaDohMSxvcEdyYXBoOiEwLHByb2ZpbGU6ITF9LC4uLnNdOnM7cmV0dXJue25hbWU6aSx0YWdzOmx9fSksdGhpcy5fZGF0YXNldHNGZXRjaGVkPSEwfSkpfV9kZXRlcm1pbmVTZWxlY3RlZERhdGFzZXQoKXt2YXIgdD10aGlzLl9kYXRhc2V0c0ZldGNoZWQscj10aGlzLl9kYXRhc2V0cyxuPXRoaXMucnVuO2lmKCFuKXt0aGlzLnNldCgiX3NlbGVjdGVkRGF0YXNldCIsMCk7cmV0dXJufWxldCBpPXIuZmluZEluZGV4KG89Pm8ubmFtZT09PW4pO2lmKGk9PT0tMSl7aWYodCl7bGV0IG89dGhpcy4kJCgiI2Vycm9yLWRpYWxvZyIpO28udGV4dENvbnRlbnQ9YE5vIGRhdGFzZXQgbmFtZWQgIiR7bn0iIGNvdWxkIGJlIGZvdW5kLmAsby5vcGVuKCl9cmV0dXJufXRoaXMuc2V0KCJfc2VsZWN0ZWREYXRhc2V0IixpKX1fdXBkYXRlU2VsZWN0ZWREYXRhc2V0TmFtZSgpe3ZhciB0PXRoaXMuX2RhdGFzZXRzRmV0Y2hlZCxyPXRoaXMuX2RhdGFzZXRzLG49dGhpcy5fc2VsZWN0ZWREYXRhc2V0OyF0fHxyLmxlbmd0aDw9bnx8dGhpcy5zZXQoInJ1biIscltuXS5uYW1lKX1fcmVxdWVzdEhlYWx0aFBpbGxzKCl7dGhpcy5zZXQoIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLCEwKTt2YXIgdD0rK3RoaXMuX2hlYWx0aFBpbGxSZXF1ZXN0SWQ7dGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCE9PW51bGwmJih3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQpLHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQ9bnVsbCksdGhpcy5hbGxTdGVwc01vZGVFbmFibGVkP3RoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQ9c2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQ9bnVsbCx0aGlzLl9pbml0aWF0ZU5ldHdvcmtSZXF1ZXN0Rm9ySGVhbHRoUGlsbHModCl9LmJpbmQodGhpcyksdGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJEZWxheSk6dGhpcy5faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKHQpfV9pbml0aWF0ZU5ldHdvcmtSZXF1ZXN0Rm9ySGVhbHRoUGlsbHModCl7aWYodGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZCE9PXQpcmV0dXJuO2xldCByPXRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA6dm9pZCAwLG49dGhpcy5fZmV0Y2hIZWFsdGhQaWxscyh0aGlzLl9yZW5kZXJIaWVyYXJjaHkuZ2V0TmFtZXNPZlJlbmRlcmVkT3BzKCksciksaT10aGlzLl9mZXRjaERlYnVnZ2VyTnVtZXJpY3NBbGVydHMoKTtQcm9taXNlLmFsbChbbixpXSkudGhlbihmdW5jdGlvbihvKXt2YXIgYT1vWzBdLHM9b1sxXTtpZighIXRoaXMuaGVhbHRoUGlsbHNUb2dnbGVkT24mJnQ9PT10aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkKXtmb3IodmFyIGwgaW4gYSl7dGhpcy5zZXQoIl9oZWFsdGhQaWxsU3RlcEluZGV4IixhW2xdLmxlbmd0aC0xKTticmVha310aGlzLnNldCgiX2RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIscyksdGhpcy5zZXQoIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIixhKSx0aGlzLnNldCgiX2FyZUhlYWx0aFBpbGxzTG9hZGluZyIsITEpLHRoaXMuc2V0KCJfaGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCIsbnVsbCl9fS5iaW5kKHRoaXMpKX1fZGF0YXNldHNTdGF0ZSh0LHIsbil7cmV0dXJuIHQ/IXJ8fCFyLmxlbmd0aD9uPT09IkVNUFRZIjpuPT09IlBSRVNFTlQiOm49PT0iTk9UX0xPQURFRCJ9X3JlbmRlckhpZXJhcmNoeUNoYW5nZWQodCl7dGhpcy5yZWxvYWQoKX1faGFuZGxlTm9kZVRvZ2dsZUV4cGFuZCgpe3RoaXMuX21heWJlRmV0Y2hIZWFsdGhQaWxscygpfV9oZWFsdGhQaWxsc1RvZ2dsZWRPbkNoYW5nZWQodCl7dD90aGlzLnJlbG9hZCgpOnRoaXMuc2V0KCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIse30pfV9tYXliZUZldGNoSGVhbHRoUGlsbHMoKXshdGhpcy5fc2hvdWxkUmVxdWVzdEhlYWx0aFBpbGxzKCl8fHRoaXMuX3JlcXVlc3RIZWFsdGhQaWxscygpfX07T3IudGVtcGxhdGU9UWAKICAgIDxwYXBlci1kaWFsb2cgaWQ9ImVycm9yLWRpYWxvZyIgd2l0aC1iYWNrZHJvcD48L3BhcGVyLWRpYWxvZz4KICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8dGYtZ3JhcGgtY29udHJvbHMKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgY2xhc3M9InNpZGViYXIiCiAgICAgICAgc2xvdD0ic2lkZWJhciIKICAgICAgICBkZXZpY2VzLWZvci1zdGF0cz0ie3tfZGV2aWNlc0ZvclN0YXRzfX0iCiAgICAgICAgY29sb3ItYnktcGFyYW1zPSJbW19jb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgc3RhdHM9IltbX3N0YXRzXV0iCiAgICAgICAgY29sb3ItYnk9Int7X2NvbG9yQnl9fSIKICAgICAgICBkYXRhc2V0cz0iW1tfZGF0YXNldHNdXSIKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW19yZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICBzZWxlY3Rpb249Int7X3NlbGVjdGlvbn19IgogICAgICAgIHNlbGVjdGVkLWZpbGU9Int7X3NlbGVjdGVkRmlsZX19IgogICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgIGhlYWx0aC1waWxscy1mZWF0dXJlLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICBoZWFsdGgtcGlsbHMtdG9nZ2xlZC1vbj0ie3toZWFsdGhQaWxsc1RvZ2dsZWRPbn19IgogICAgICAgIG9uLWZpdC10YXA9Il9maXQiCiAgICAgICAgdHJhY2UtaW5wdXRzPSJ7e190cmFjZUlucHV0c319IgogICAgICAgIGF1dG8tZXh0cmFjdC1ub2Rlcz0ie3tfYXV0b0V4dHJhY3ROb2Rlc319IgogICAgICAgIG9uLWRvd25sb2FkLWltYWdlLXJlcXVlc3RlZD0iX29uRG93bmxvYWRJbWFnZVJlcXVlc3RlZCIKICAgICAgPjwvdGYtZ3JhcGgtY29udHJvbHM+CiAgICAgIDxkaXYKICAgICAgICBjbGFzcyQ9ImNlbnRlciBbW19nZXRHcmFwaERpc3BsYXlDbGFzc05hbWUoX3NlbGVjdGVkRmlsZSwgX2RhdGFzZXRzKV1dIgogICAgICAgIHNsb3Q9ImNlbnRlciIKICAgICAgPgogICAgICAgIDx0Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyCiAgICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgICAgZGF0YXNldHM9IltbX2RhdGFzZXRzXV0iCiAgICAgICAgICBzZWxlY3Rpb249IltbX3NlbGVjdGlvbl1dIgogICAgICAgICAgc2VsZWN0ZWQtZmlsZT0iW1tfc2VsZWN0ZWRGaWxlXV0iCiAgICAgICAgICBvdXQtZ3JhcGgtaGllcmFyY2h5PSJ7e19ncmFwaEhpZXJhcmNoeX19IgogICAgICAgICAgb3V0LWdyYXBoPSJ7e19ncmFwaH19IgogICAgICAgICAgb3V0LXN0YXRzPSJ7e19zdGF0c319IgogICAgICAgICAgcHJvZ3Jlc3M9Int7X3Byb2dyZXNzfX0iCiAgICAgICAgICBoaWVyYXJjaHktcGFyYW1zPSJbW19oaWVyYXJjaHlQYXJhbXNdXSIKICAgICAgICAgIGNvbXBhdGliaWxpdHktcHJvdmlkZXI9IltbX2NvbXBhdGliaWxpdHlQcm92aWRlcl1dIgogICAgICAgID48L3RmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXI+CiAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS1tZXNzYWdlIj4KICAgICAgICAgIDxoMz5ObyBncmFwaCBkZWZpbml0aW9uIGZpbGVzIHdlcmUgZm91bmQuPC9oMz4KICAgICAgICAgIDxwPgogICAgICAgICAgICBUbyBzdG9yZSBhIGdyYXBoLCBjcmVhdGUgYQogICAgICAgICAgICA8Y29kZT50Zi5zdW1tYXJ5LkZpbGVXcml0ZXI8L2NvZGU+CiAgICAgICAgICAgIGFuZCBwYXNzIHRoZSBncmFwaCBlaXRoZXIgdmlhIHRoZSBjb25zdHJ1Y3Rvciwgb3IgYnkgY2FsbGluZyBpdHMKICAgICAgICAgICAgPGNvZGU+YWRkX2dyYXBoKCk8L2NvZGU+IG1ldGhvZC4gWW91IG1heSB3YW50IHRvIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvdGVuc29yYm9hcmQvZ3JhcGhzIgogICAgICAgICAgICAgID5leGFtaW5pbmcgdGhlIFRlbnNvckZsb3cgZ3JhcGggdHV0b3JpYWw8L2EKICAgICAgICAgICAgPi4KICAgICAgICAgIDwvcD4KCiAgICAgICAgICA8cD4KICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8gYWRkCiAgICAgICAgICAgIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICA+LgogICAgICAgICAgPC9wPgoKICAgICAgICAgIDxwPgogICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgPgogICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgIDwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJncmFwaGJvYXJkIj4KICAgICAgICAgIDx0Zi1ncmFwaC1ib2FyZAogICAgICAgICAgICBpZD0iZ3JhcGhib2FyZCIKICAgICAgICAgICAgZGV2aWNlcy1mb3Itc3RhdHM9IltbX2RldmljZXNGb3JTdGF0c11dIgogICAgICAgICAgICBjb2xvci1ieT0ie3tfY29sb3JCeX19IgogICAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9Int7X2NvbG9yQnlQYXJhbXN9fSIKICAgICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW19ncmFwaEhpZXJhcmNoeV1dIgogICAgICAgICAgICBncmFwaD0iW1tfZ3JhcGhdXSIKICAgICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1tfaGllcmFyY2h5UGFyYW1zXV0iCiAgICAgICAgICAgIHByb2dyZXNzPSJbW19wcm9ncmVzc11dIgogICAgICAgICAgICBkZWJ1Z2dlci1kYXRhLWVuYWJsZWQ9IltbX2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIKICAgICAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW19hcmVIZWFsdGhQaWxsc0xvYWRpbmddXSIKICAgICAgICAgICAgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbX2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tfbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgICBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIKICAgICAgICAgICAgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9IltbX2hlYWx0aFBpbGxTdGVwSW5kZXhdXSIKICAgICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0ie3tfcmVuZGVySGllcmFyY2h5fX0iCiAgICAgICAgICAgIHNlbGVjdGVkLW5vZGU9Int7X3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgICBzdGF0cz0iW1tfc3RhdHNdXSIKICAgICAgICAgICAgdHJhY2UtaW5wdXRzPSJbW190cmFjZUlucHV0c11dIgogICAgICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9IltbX2F1dG9FeHRyYWN0Tm9kZXNdXSIKICAgICAgICAgID48L3RmLWdyYXBoLWJvYXJkPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgL2RlZXAvIHsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsIHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmNlbnRlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgcGFwZXItZGlhbG9nIHsKICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICB9CgogICAgICAubm8tZGF0YS1tZXNzYWdlIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmdyYXBoYm9hcmQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vLWdyYXBoIC5ncmFwaGJvYXJkIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAuY2VudGVyOm5vdCgubm8tZ3JhcGgpIC5uby1kYXRhLW1lc3NhZ2UgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIGEgewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1saW5rKTsKICAgICAgfQoKICAgICAgYTp2aXNpdGVkIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluay12aXNpdGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPci5wcm90b3R5cGUsIl9kYXRhc2V0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE9yLnByb3RvdHlwZSwiX2RhdGFzZXRzRmV0Y2hlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxPci5wcm90b3R5cGUsIl9zZWxlY3RlZERhdGFzZXQiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkIn0pLHcoImRlc2lnbjp0eXBlIixzbyldLE9yLnByb3RvdHlwZSwiX3JlbmRlckhpZXJhcmNoeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixBZSldLE9yLnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLGFuKV0sT3IucHJvdG90eXBlLCJfY2FuY2VsbGVyIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sT3IucHJvdG90eXBlLCJfZGVidWdnZXJEYXRhRW5hYmxlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE9yLnByb3RvdHlwZSwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxPci5wcm90b3R5cGUsInNwZWNpZmljSGVhbHRoUGlsbFN0ZXAiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfaGVhbHRoUGlsbHNUb2dnbGVkT25DaGFuZ2VkIn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sT3IucHJvdG90eXBlLCJoZWFsdGhQaWxsc1RvZ2dsZWRPbiIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sT3IucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxPci5wcm90b3R5cGUsIl9pc0F0dGFjaGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sT3IucHJvdG90eXBlLCJfaW5pdGlhbGl6ZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxPci5wcm90b3R5cGUsIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPci5wcm90b3R5cGUsIl9kZWJ1Z2dlck51bWVyaWNBbGVydHMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sT3IucHJvdG90eXBlLCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxPci5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLE9yLnByb3RvdHlwZSwiX2hlYWx0aFBpbGxSZXF1ZXN0SWQiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sT3IucHJvdG90eXBlLCJfaGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxPci5wcm90b3R5cGUsIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lckRlbGF5Iix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxPci5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLG9ic2VydmVyOiJfcnVuT2JzZXJ2ZXIifSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLE9yLnByb3RvdHlwZSwicnVuIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLE9yLnByb3RvdHlwZSwiX3NlbGVjdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPci5wcm90b3R5cGUsIl9jb21wYXRpYmlsaXR5UHJvdmlkZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxPci5wcm90b3R5cGUsIl90cmFjZUlucHV0cyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE9yLnByb3RvdHlwZSwiX2F1dG9FeHRyYWN0Tm9kZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sT3IucHJvdG90eXBlLCJfc2VsZWN0ZWRGaWxlIix2b2lkIDApO0UoW0J0KCJfaXNBdHRhY2hlZCIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sT3IucHJvdG90eXBlLCJfbWF5YmVJbml0aWFsaXplRGFzaGJvYXJkIixudWxsKTtFKFtCdCgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsInJ1biIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sT3IucHJvdG90eXBlLCJfZGV0ZXJtaW5lU2VsZWN0ZWREYXRhc2V0IixudWxsKTtFKFtCdCgiX2RhdGFzZXRzRmV0Y2hlZCIsIl9kYXRhc2V0cyIsIl9zZWxlY3RlZERhdGFzZXQiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLE9yLnByb3RvdHlwZSwiX3VwZGF0ZVNlbGVjdGVkRGF0YXNldE5hbWUiLG51bGwpO09yPUUoW3l0KCJ0Zi1ncmFwaC1kYXNoYm9hcmQiKV0sT3IpO3ZhciBMSD1FZShPZSgpLDEpO3ZhciBrcj1WcixTYT1jbGFzcyBleHRlbmRzIEd0KGdvKG10KSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubW9kZT0ib2Zmc2V0Iix0aGlzLnRpbWVQcm9wZXJ0eT0ic3RlcCIsdGhpcy5iaW5zPSJiaW5zIix0aGlzLng9IngiLHRoaXMuZHg9ImR4Iix0aGlzLnk9InkiLHRoaXMuY29sb3JTY2FsZT1rci5zY2FsZU9yZGluYWwoa3Iuc2NoZW1lQ2F0ZWdvcnkxMCksdGhpcy5tb2RlVHJhbnNpdGlvbkR1cmF0aW9uPTUwMCx0aGlzLl9uYW1lPW51bGwsdGhpcy5fZGF0YT1udWxsfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuc3ZnLCEwKX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwfWRldGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITF9c2V0U2VyaWVzRGF0YSh0LHIpe3RoaXMuX25hbWU9dCx0aGlzLl9kYXRhPXIsdGhpcy5yZWRyYXcoKX1fcmVkcmF3T25DaGFuZ2UoKXt0aGlzLnJlZHJhdygpfXJlZHJhdygpe3RoaXMuX2RyYXcoMCl9X21vZGVSZWRyYXcoKXt0aGlzLl9kcmF3KHRoaXMubW9kZVRyYW5zaXRpb25EdXJhdGlvbil9X2RyYXcodCl7aWYoIXRoaXMuX2F0dGFjaGVkfHwhdGhpcy5fZGF0YSlyZXR1cm47aWYodD09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoInZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIF9kcmF3IG5lZWRzIGR1cmF0aW9uIik7aWYodGhpcy5fZGF0YS5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJOb3QgZW5vdWdoIHN0ZXBzIGluIHRoZSBkYXRhIik7aWYoIXRoaXMuX2RhdGFbMF0uaGFzT3duUHJvcGVydHkodGhpcy5iaW5zKSl0aHJvdyBuZXcgRXJyb3IoIk5vIGJpbnMgcHJvcGVydHkgb2YgJyIrdGhpcy5iaW5zKyInIGluIGRhdGEiKTtpZih0aGlzLl9kYXRhWzBdW3RoaXMuYmluc10ubGVuZ3RoPD0wKXRocm93IG5ldyBFcnJvcigiTXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBiaW4gaW4gYmlucyBpbiBkYXRhIik7aWYoIXRoaXMuX2RhdGFbMF1bdGhpcy5iaW5zXVswXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLngpKXRocm93IG5ldyBFcnJvcigiTm8geCBwcm9wZXJ0eSAnIit0aGlzLngrIicgb24gYmlucyBkYXRhIik7aWYoIXRoaXMuX2RhdGFbMF1bdGhpcy5iaW5zXVswXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmR4KSl0aHJvdyBuZXcgRXJyb3IoIk5vIGR4IHByb3BlcnR5ICciK3RoaXMuZHgrIicgb24gYmlucyBkYXRhIik7aWYoIXRoaXMuX2RhdGFbMF1bdGhpcy5iaW5zXVswXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLnkpKXRocm93IG5ldyBFcnJvcigiTm8geSBwcm9wZXJ0eSAnIit0aGlzLnkrIicgb24gYmlucyBkYXRhIik7dmFyIHI9dGhpcy50aW1lUHJvcGVydHksbj10aGlzLngsaT10aGlzLmJpbnMsbz10aGlzLmR4LGE9dGhpcy55LHM9dGhpcy5fZGF0YSxsPXRoaXMuX25hbWUsYz10aGlzLm1vZGUsdT1rci5oY2wodGhpcy5jb2xvclNjYWxlKGwpKSxoPWtyLnNlbGVjdCh0aGlzLiQudG9vbHRpcCksZj1mdW5jdGlvbihOdCl7cmV0dXJuIE50W25dfSxwPWZ1bmN0aW9uKE50KXtyZXR1cm4gTnRbYV19LGQ9ZnVuY3Rpb24oTnQpe3JldHVybiBOdFtvXX0sZz1mdW5jdGlvbihOdCl7cmV0dXJuIE50W25dK050W29dfSxfPWZ1bmN0aW9uKE50KXtyZXR1cm4gTnRbcl19O3I9PT0icmVsYXRpdmUiJiYoXz1mdW5jdGlvbihOdCl7cmV0dXJuIE50LndhbGxfdGltZS1zWzBdLndhbGxfdGltZX0pO3ZhciB5PXRoaXMuJC5zdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseD15LndpZHRoLGI9eS5oZWlnaHQsUyxDPXt0b3A6NSxyaWdodDo2MCxib3R0b206MjAsbGVmdDoyNH07Yz09PSJvZmZzZXQiPyhTPWIvMi41LEMudG9wPVMrNSk6Uz1iLUMudG9wLUMuYm90dG9tO3ZhciBQPXgtQy5sZWZ0LUMucmlnaHQsaz1iLUMudG9wLUMuYm90dG9tLE89a3IubWluKHMsZiksRD1rci5tYXgocyxnKSxCPWtyLmZvcm1hdCgiLjNuIiksST1rci5mb3JtYXQoIi4wZiIpO3I9PT0id2FsbF90aW1lIj9JPWtyLnRpbWVGb3JtYXQoIiVtLyVkICVYIik6cj09PSJyZWxhdGl2ZSImJihJPWZ1bmN0aW9uKE50KXtyZXR1cm4ga3IuZm9ybWF0KCIuMXIiKShOdC8zNmU1KSsiaCJ9KTt2YXIgTD1zLm1hcChmdW5jdGlvbihOdCx6ZSl7cmV0dXJuW2tyLm1pbihOdFtpXSxmKSxrci5tYXgoTnRbaV0sZyldfSksUj1zLm1hcChmdW5jdGlvbihOdCl7cmV0dXJuIGtyLmV4dGVudChOdFtpXSxwKX0pLEY9NTAwLHo9a3IuZXh0ZW50KHMsXyksVT0ocj09PSJ3YWxsX3RpbWUiP2tyLnNjYWxlVGltZSgpOmtyLnNjYWxlTGluZWFyKCkpLmRvbWFpbih6KS5yYW5nZShbMCxjPT09Im9mZnNldCI/azowXSksVz1rci5zY2FsZUxpbmVhcigpLmRvbWFpbihbMCxrci5tYXgocyxmdW5jdGlvbihOdCx6ZSl7cmV0dXJuIFJbemVdWzFdfSldKS5yYW5nZShbUywwXSksWj1rci5zY2FsZUxpbmVhcigpLmRvbWFpbihXLmRvbWFpbigpKS5yYW5nZShbRiwwXSkscnQ9a3Iuc2NhbGVMaW5lYXIoKS5kb21haW4oW2tyLm1pbihzLGZ1bmN0aW9uKE50LHplKXtyZXR1cm4gTFt6ZV1bMF19KSxrci5tYXgocyxmdW5jdGlvbihOdCx6ZSl7cmV0dXJuIExbemVdWzFdfSldKS5uaWNlKCkucmFuZ2UoWzAsUF0pLG90PWtyLnNjYWxlTGluZWFyKCkuZG9tYWluKHJ0LmRvbWFpbigpKS5yYW5nZShbMCxGXSk7bGV0IHN0PWtyLnNjYWxlTGluZWFyKCkuZG9tYWluKGtyLmV4dGVudChzLF8pKS5yYW5nZShbdS5icmlnaHRlcigpLHUuZGFya2VyKCldKS5pbnRlcnBvbGF0ZShrci5pbnRlcnBvbGF0ZUhjbCk7dmFyIFN0PWtyLmF4aXNCb3R0b20ocnQpLnRpY2tzKE1hdGgubWF4KDIsUC8yMCkpLGJ0PWtyLmF4aXNSaWdodChVKS50aWNrcyhNYXRoLm1heCgyLGsvMTUpKS50aWNrRm9ybWF0KEkpLE10PWtyLmF4aXNSaWdodChXKS50aWNrcyhNYXRoLm1heCgyLGsvMTUpKS50aWNrU2l6ZShQKzUpLnRpY2tGb3JtYXQoQiksbHQ9ZnVuY3Rpb24oTnQpe3JldHVybiBOdFtuXStOdFtvXS8yfSxLdD1rci5saW5lKCkueChmdW5jdGlvbihOdCl7cmV0dXJuIG90KGx0KE50KSl9KS55KGZ1bmN0aW9uKE50KXtyZXR1cm4gWihOdFthXSl9KSxfdD1mdW5jdGlvbihOdCl7cmV0dXJuIk0iK290KGx0KE50WzBdKSkrIiwiK1ooMCkrIkwiK0t0KE50KS5zbGljZSgxKSsiTCIrb3QobHQoTnRbTnQubGVuZ3RoLTFdKSkrIiwiK1ooMCl9LGN0PXRoaXMuJC5zdmcsWD1rci5zZWxlY3QoY3QpLGV0PVgudHJhbnNpdGlvbigpLmR1cmF0aW9uKHQpLGR0PVguc2VsZWN0KCJnIikuY2xhc3NlZCgic21hbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIFA+MCYmUDw9MTUwfSkuY2xhc3NlZCgibWVkaXVtIixmdW5jdGlvbigpe3JldHVybiBQPjE1MCYmUDw9MzAwfSkuY2xhc3NlZCgibGFyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIFA+MzAwfSkscT1ldC5zZWxlY3QoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitDLmxlZnQrIiwiK0MudG9wKyIpIikscHQ9a3IuYmlzZWN0b3IoZykubGVmdCxodD1kdC5zZWxlY3QoIi5zdGFnZSIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7VHQuc3R5bGUoIm9wYWNpdHkiLDEpLEN0LnN0eWxlKCJvcGFjaXR5IiwxKSxhdC5zdHlsZSgib3BhY2l0eSIsMSksQ2Uuc3R5bGUoIm9wYWNpdHkiLDEpLGguc3R5bGUoIm9wYWNpdHkiLDEpfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe1R0LnN0eWxlKCJvcGFjaXR5IiwwKSxDdC5zdHlsZSgib3BhY2l0eSIsMCksYXQuc3R5bGUoIm9wYWNpdHkiLDApLENlLnN0eWxlKCJvcGFjaXR5IiwwKSxUdC5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IiwhMSksSXQuY2xhc3NlZCgib3V0bGluZS1ob3ZlciIsITEpLGguc3R5bGUoIm9wYWNpdHkiLDApfSkub24oIm1vdXNlbW92ZSIsUHQpLHd0PWh0LnNlbGVjdCgiLmJhY2tncm91bmQiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistQy5sZWZ0KyIsIistQy50b3ArIikiKS5hdHRyKCJ3aWR0aCIseCkuYXR0cigiaGVpZ2h0IixiKSxrdD1odC5zZWxlY3RBbGwoIi5oaXN0b2dyYW0iKS5kYXRhKHMpLGllPWt0LmV4aXQoKS5yZW1vdmUoKSxlZT1rdC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiaGlzdG9ncmFtIiksTGU9ZWUubWVyZ2Uoa3QpLnNvcnQoZnVuY3Rpb24oTnQsemUpe3JldHVybiBfKE50KS1fKHplKX0pLGFyPXEuc2VsZWN0QWxsKCIuaGlzdG9ncmFtIikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihOdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCAiKyhjPT09Im9mZnNldCI/VShfKE50KSktUzowKSsiKSJ9KSxmcj1lZS5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsImJhc2VsaW5lIiksdHQ9YXIuc2VsZWN0KCIuYmFzZWxpbmUiKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLGZ1bmN0aW9uKE50KXtyZXR1cm4gYz09PSJvZmZzZXQiPy4xOjB9KS5hdHRyKCJ5MSIsUykuYXR0cigieTIiLFMpLmF0dHIoIngyIixQKSwkPWVlLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwib3V0bGluZSIpLEl0PUxlLnNlbGVjdCgiLm91dGxpbmUiKS5hdHRyKCJ2ZWN0b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIikuYXR0cigiZCIsZnVuY3Rpb24oTnQpe3JldHVybiBfdChOdFtpXSl9KS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKSwkdD1hci5zZWxlY3QoIi5vdXRsaW5lIikuYXR0cigidHJhbnNmb3JtIiwic2NhbGUoIitQL0YrIiwgIitTL0YrIikiKS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihOdCl7cmV0dXJuIGM9PT0ib2Zmc2V0Ij8iIjpzdChfKE50KSl9KS5zdHlsZSgiZmlsbC1vcGFjaXR5IixmdW5jdGlvbihOdCl7cmV0dXJuIGM9PT0ib2Zmc2V0Ij8xOjB9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oTnQpe3JldHVybiBzdChfKE50KSl9KSxoZT1lZS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImhvdmVyIiksVHQ9TGUuc2VsZWN0KCIuaG92ZXIiKS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oTnQpe3JldHVybiBzdChfKE50KSl9KTtoZS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLDIpLGhlLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoImR4Iiw0KTt2YXIgYmU9ZHQuc2VsZWN0KCIueC1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieCJdKSxudD1iZS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxDdD1iZS5tZXJnZShudCk7bnQuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTIwKS5hdHRyKCJ5Iiw2KS5hdHRyKCJ3aWR0aCIsNDApLmF0dHIoImhlaWdodCIsMTQpLG50LmFwcGVuZCgibGluZSIpLmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIsMCkuYXR0cigieTEiLDApLmF0dHIoInkyIiw2KSxudC5hcHBlbmQoInRleHQiKS5hdHRyKCJkeSIsMTgpO3ZhciBXdD1kdC5zZWxlY3QoIi55LWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGZlPVd0LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLGF0PVd0Lm1lcmdlKGZlKTtmZS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxmZS5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksZmUuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KTt2YXIgc2U9ZHQuc2VsZWN0KCIueS1zbGljZS1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieSJdKSxRdD1zZS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxDZT1zZS5tZXJnZShRdCk7UXQuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsOCkuYXR0cigieSIsLTYpLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IiwxNCksUXQuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoIngyIiw2KS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLDApLFF0LmFwcGVuZCgidGV4dCIpLmF0dHIoImR4Iiw4KS5hdHRyKCJkeSIsNCkscS5zZWxlY3QoIi55LmF4aXMuc2xpY2UiKS5zdHlsZSgib3BhY2l0eSIsYz09PSJvZmZzZXQiPzA6MSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsICIrKGM9PT0ib2Zmc2V0Ij8tUzowKSsiKSIpLmNhbGwoTXQpLHEuc2VsZWN0KCIueC5heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsICIraysiKSIpLmNhbGwoU3QpLHEuc2VsZWN0KCIueS5heGlzIikuc3R5bGUoIm9wYWNpdHkiLGM9PT0ib2Zmc2V0Ij8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK1ArIiwgIisoYz09PSJvZmZzZXQiPzA6aykrIikiKS5jYWxsKGJ0KSxxLnNlbGVjdEFsbCgiLnRpY2sgdGV4dCIpLmF0dHIoImZpbGwiLCIjYWFhIikscS5zZWxlY3RBbGwoIi5heGlzIHBhdGguZG9tYWluIikuYXR0cigic3Ryb2tlIiwibm9uZSIpO2Z1bmN0aW9uIFB0KCl7dmFyIE50PWtyLm1vdXNlKHRoaXMpLHplPXJ0LmludmVydChOdFswXSkseW49VS5pbnZlcnQoTnRbMV0pO2Z1bmN0aW9uIEdpKGNuKXtyZXR1cm4gTWF0aC5taW4oY25baV0ubGVuZ3RoLTEscHQoY25baV0semUpKX12YXIgQXIsQWE9MS8wLHVvO1R0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oY24sY3gpe3ZhciBlcD1HaShjbik7dW89Y247dmFyIEs9cnQoY25baV1bZXBdW25dK2NuW2ldW2VwXVtvXS8yKSxndD1XKGNuW2ldW2VwXVthXSksRXQ9Yz09PSJvZmZzZXQiP1UoXyhjbikpLShTLWd0KTpndCx4dD1NYXRoLmFicyhOdFsxXS1FdCk7cmV0dXJuIHh0PEFhJiYoQWE9eHQsQXI9Y24pLCJ0cmFuc2xhdGUoIitLKyIsIitndCsiKSJ9KSxUdC5zZWxlY3QoInRleHQiKS50ZXh0KGZ1bmN0aW9uKGNuKXt2YXIgY3g9R2koY24pO3JldHVybiBjbltpXVtjeF1bYV19KSxUdC5jbGFzc2VkKCJob3Zlci1jbG9zZXN0IixmdW5jdGlvbihjbil7cmV0dXJuIGNuPT09QXJ9KSxJdC5jbGFzc2VkKCJvdXRsaW5lLWhvdmVyIixmdW5jdGlvbihjbil7cmV0dXJuIGNuPT09QXJ9KTt2YXIgUGE9R2kodW8pO0N0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oY24pe3JldHVybiJ0cmFuc2xhdGUoIitydCh1b1tpXVtQYV1bbl0rdW9baV1bUGFdW29dLzIpKyIsICIraysiKSJ9KS5zZWxlY3QoInRleHQiKS50ZXh0KGZ1bmN0aW9uKGNuKXtyZXR1cm4gQih1b1tpXVtQYV1bbl0rdW9baV1bUGFdW29dLzIpfSk7dmFyIGx4PWJ0LnRpY2tGb3JtYXQoKTthdC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGNuKXtyZXR1cm4idHJhbnNsYXRlKCIrUCsiLCAiKyhjPT09Im9mZnNldCI/VShfKEFyKSk6MCkrIikifSkuc3R5bGUoImRpc3BsYXkiLGM9PT0ib2Zmc2V0Ij8iIjoibm9uZSIpLnNlbGVjdCgidGV4dCIpLnRleHQoZnVuY3Rpb24oY24pe3JldHVybiBseChfKEFyKSl9KTt2YXIgY209TXQudGlja0Zvcm1hdCgpO0NlLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oY24pe3JldHVybiJ0cmFuc2xhdGUoIitQKyIsICIrKGM9PT0ib2Zmc2V0Ij8wOlcoQXJbaV1bUGFdW2FdKSkrIikifSkuc3R5bGUoImRpc3BsYXkiLGM9PT0ib2Zmc2V0Ij8ibm9uZSI6IiIpLnNlbGVjdCgidGV4dCIpLnRleHQoZnVuY3Rpb24oY24pe3JldHVybiBjbShBcltpXVtQYV1bYV0pfSk7dmFyIEowPWtyLm1vdXNlKGN0KTtoLnN0eWxlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoSjBbMF0rMTUpKyJweCwiKyhKMFsxXS0xNSkrInB4KSIpLnNlbGVjdCgic3BhbiIpLnRleHQoYz09PSJvZmZzZXQiP2NtKEFyW2ldW1BhXVthXSk6KHI9PT0ic3RlcCI/InN0ZXAgIjoiIikrbHgoXyhBcikpKX19fTtTYS50ZW1wbGF0ZT1RYAogICAgPGRpdiBpZD0idG9vbHRpcCI+PHNwYW4+PC9zcGFuPjwvZGl2PgogICAgPHN2ZyBpZD0ic3ZnIj4KICAgICAgPGc+CiAgICAgICAgPGcgY2xhc3M9ImF4aXMgeCI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJheGlzIHkiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0iYXhpcyB5IHNsaWNlIj48L2c+CiAgICAgICAgPGcgY2xhc3M9InN0YWdlIj4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJiYWNrZ3JvdW5kIj48L3JlY3Q+CiAgICAgICAgPC9nPgogICAgICAgIDxnIGNsYXNzPSJ4LWF4aXMtaG92ZXIiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ieS1heGlzLWhvdmVyIj48L2c+CiAgICAgICAgPGcgY2xhc3M9Inktc2xpY2UtYXhpcy1ob3ZlciI+PC9nPgogICAgICA8L2c+CiAgICA8L3N2Zz4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBjb2xvcjogI2FhYTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLWJnLWNvbG9yOiAjZmZmOwogICAgICAgIC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtb3V0bGluZS1jb2xvcjogI2ZmZjsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3I6ICMwMDA7CiAgICAgIH0KCiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgICAtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLWJnLWNvbG9yOiB2YXIoCiAgICAgICAgICAtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcgogICAgICAgICk7CiAgICAgICAgLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1vdXRsaW5lLWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTYwMCk7CiAgICAgICAgLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1vdXRsaW5lLWNvbG9yOiAjZmZmOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIGZvbnQtZmFtaWx5OiByb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICB9CgogICAgICB0ZXh0IHsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgIH0KCiAgICAgICN0b29sdGlwIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC5iYWNrZ3JvdW5kIHsKICAgICAgICBmaWxsLW9wYWNpdHk6IDA7CiAgICAgICAgZmlsbDogcmVkOwogICAgICB9CgogICAgICAuaGlzdG9ncmFtIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmhvdmVyIHsKICAgICAgICBmb250LXNpemU6IDlweDsKICAgICAgICBkb21pbmFudC1iYXNlbGluZTogbWlkZGxlOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC5ob3ZlciBjaXJjbGUgewogICAgICAgIHN0cm9rZTogd2hpdGU7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuNTsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLmhvdmVyIHRleHQgewogICAgICAgIGZpbGw6IGJsYWNrOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC5ob3Zlci5ob3Zlci1jbG9zZXN0IGNpcmNsZSB7CiAgICAgICAgZmlsbDogdmFyKC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItb3V0bGluZS1jb2xvcikgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmhvdmVyLmhvdmVyLWNsb3Nlc3QgdGV4dCB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmJhc2VsaW5lIHsKICAgICAgICBzdHJva2U6IGJsYWNrOwogICAgICAgIHN0cm9rZS1vcGFjaXR5OiAwLjE7CiAgICAgIH0KCiAgICAgIC5vdXRsaW5lIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogdmFyKC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtb3V0bGluZS1jb2xvcik7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLm91dGxpbmUub3V0bGluZS1ob3ZlciB7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS12ei1oaXN0b2dyYW0tdGltZXNlcmllcy1ob3Zlci1vdXRsaW5lLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICAgIHN0cm9rZS1vcGFjaXR5OiAxOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyLAogICAgICAueS1heGlzLWhvdmVyLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLngtYXhpcy1ob3ZlciAubGFiZWwsCiAgICAgIC55LWF4aXMtaG92ZXIgLmxhYmVsLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIC5sYWJlbCB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgdGV4dC1hbmNob3I6IGVuZDsKICAgICAgfQoKICAgICAgLngtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgICB9CgogICAgICAueS1heGlzLWhvdmVyIHRleHQsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgdGV4dCB7CiAgICAgICAgdGV4dC1hbmNob3I6IHN0YXJ0OwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIGxpbmUsCiAgICAgIC55LWF4aXMtaG92ZXIgbGluZSwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciBsaW5lIHsKICAgICAgICBzdHJva2U6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgLngtYXhpcy1ob3ZlciByZWN0LAogICAgICAueS1heGlzLWhvdmVyIHJlY3QsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgcmVjdCB7CiAgICAgICAgZmlsbDogdmFyKC0tdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMtaG92ZXItYmctY29sb3IpOwogICAgICB9CgogICAgICAjdG9vbHRpcCwKICAgICAgLngtYXhpcy1ob3ZlciB0ZXh0LAogICAgICAueS1heGlzLWhvdmVyIHRleHQsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgdGV4dCB7CiAgICAgICAgY29sb3I6IHZhcigtLXZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzLWhvdmVyLW91dGxpbmUtY29sb3IpOwogICAgICB9CgogICAgICAuYXhpcyB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICB9CgogICAgICAuYXhpcyBwYXRoLmRvbWFpbiB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgfQoKICAgICAgLmF4aXMgLnRpY2sgbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjZGRkOwogICAgICB9CgogICAgICAuYXhpcy5zbGljZSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmF4aXMuc2xpY2UgLnRpY2sgbGluZSB7CiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMjsKICAgICAgfQoKICAgICAgLnNtYWxsIC5heGlzIHRleHQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgLnNtYWxsIC5heGlzIC50aWNrOmZpcnN0LW9mLXR5cGUgdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLnNtYWxsIC5heGlzIC50aWNrOmxhc3Qtb2YtdHlwZSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAubWVkaXVtIC5heGlzIHRleHQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgLm1lZGl1bSAuYXhpcyAudGljazpudGgtY2hpbGQoMm4gKyAxKSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAubGFyZ2UgLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAubGFyZ2UgLmF4aXMgLnRpY2s6bnRoLWNoaWxkKDJuICsgMSkgdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxTYS5wcm90b3R5cGUsIm1vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sU2EucHJvdG90eXBlLCJ0aW1lUHJvcGVydHkiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sU2EucHJvdG90eXBlLCJiaW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFNhLnByb3RvdHlwZSwieCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxTYS5wcm90b3R5cGUsImR4Iix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFNhLnByb3RvdHlwZSwieSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxTYS5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sU2EucHJvdG90eXBlLCJtb2RlVHJhbnNpdGlvbkR1cmF0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sU2EucHJvdG90eXBlLCJfYXR0YWNoZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sU2EucHJvdG90eXBlLCJfbmFtZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFNhLnByb3RvdHlwZSwiX2RhdGEiLHZvaWQgMCk7RShbQnQoInRpbWVQcm9wZXJ0eSIsImNvbG9yU2NhbGUiLCJfYXR0YWNoZWQiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFNhLnByb3RvdHlwZSwiX3JlZHJhd09uQ2hhbmdlIixudWxsKTtFKFtCdCgibW9kZSIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sU2EucHJvdG90eXBlLCJfbW9kZVJlZHJhdyIsbnVsbCk7U2E9RShbeXQoInZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIildLFNhKTtmdW5jdGlvbiBzdXIoZSl7bGV0W3QscixuXT1lO3JldHVybnt3YWxsX3RpbWU6dCxzdGVwOnIsbWluOkxtKG4ubWFwKChbaSwsXSk9PmkpKSxtYXg6c3Uobi5tYXAoKFssaV0pPT5pKSksYnVja2V0czpuLm1hcCgoW2ksbyxhXSk9Pih7bGVmdDppLHJpZ2h0Om8sY291bnQ6YX0pKX19ZnVuY3Rpb24gbHVyKGUsdCxyLG49MzApeyh0PT09dm9pZCAwfHxyPT1udWxsKSYmKHQ9MCxyPTApLHI9PT10JiYocj10KjEuMSsxLHQ9dC8xLjEtMSk7bGV0IGk9KHItdCkvbixvPTAsYT1bXTtmb3IobGV0IHM9MDtzPG47cysrKXtsZXQgbD10K3MqaSxjPWwraSx1PTA7Zm9yKDtvPGUuYnVja2V0cy5sZW5ndGg7KXtsZXQgaD1NYXRoLm1pbihyLGUuYnVja2V0c1tvXS5yaWdodCksZj1NYXRoLm1heCh0LGUuYnVja2V0c1tvXS5sZWZ0KTtpZihoLWY+MCl7bGV0IGQ9TWF0aC5taW4oaCxjKS1NYXRoLm1heChmLGwpLGc9ZC8oaC1mKSplLmJ1Y2tldHNbb10uY291bnQ7dSs9ZD4wP2c6MH1lbHNle2xldCBkPWM+PXI7dSs9bDw9ZiYmKGQ/aDw9YzpoPGMpP2UuYnVja2V0c1tvXS5jb3VudDowfWlmKGg+YylicmVhaztvKyt9YS5wdXNoKHt4OmwsZHg6aSx5OnV9KX1yZXR1cm4gYX1mdW5jdGlvbiBKbGUoZSl7bGV0IHQ9ZS5tYXAoc3VyKSxyPUxtKHQsaT0+aS5taW4pLG49c3UodCxpPT5pLm1heCk7cmV0dXJuIHQubWFwKGk9Pih7d2FsbF90aW1lOmkud2FsbF90aW1lLHN0ZXA6aS5zdGVwLGJpbnM6bHVyKGkscixuKX0pKX12YXIgTWE9Y2xhc3MgZXh0ZW5kcyBMUyhHdChtdCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmdldERhdGFMb2FkTmFtZT0oe3J1bjp0fSk9PnQsdGhpcy5yZXF1ZXN0RGF0YT0odCxyLG4pPT57bGV0IG89dmUoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi9oaXN0b2dyYW1zIik7UHJvbWlzZS5hbGwodC5tYXAoYT0+e2xldCBzPUNuKG8se3RhZzphLnRhZyxydW46YS5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHMpLnRoZW4obD0+dm9pZCByKHtpdGVtOmEsZGF0YTpsfSkpfSkpLmZpbmFsbHkoKCk9PnZvaWQgbigpKX0sdGhpcy5sb2FkRGF0YUNhbGxiYWNrPSh0LHIsbik9PntsZXQgaT1KbGUobiksbz10aGlzLmdldERhdGFMb2FkTmFtZShyKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShvLGkpfSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249Zm4sdGhpcy5fZXhwYW5kZWQ9ITF9X3JlbG9hZE9uUnVuVGFnUmVxdWVzdE1hbmFnZXJDaGFuZ2UoKXt0aGlzLnJlbG9hZCgpfV91cGRhdGVEYXRhVG9Mb2FkKCl7dmFyIHQ9dGhpcy5ydW4scj10aGlzLnRhZzt0aGlzLmRhdGFUb0xvYWQ9W3tydW46dCx0YWc6cn1dfWdldCBfcnVuQ29sb3IoKXt2YXIgdD10aGlzLnJ1bjtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKHQpfXJlZHJhdygpe3RoaXMuJC5jaGFydC5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfX07TWEudGVtcGxhdGU9UWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDwhLS0KICAgICAgVGhlIG1haW4gaGlzdG9ncmFtIHRoYXQgd2UgcmVuZGVyLiBEYXRhIGlzIHNldCBkaXJlY3RseSB3aXRoCiAgICAgIFxgc2V0U2VyaWVzRGF0YVxgLCBub3Qgd2l0aCBhIGJvdW5kIHByb3BlcnR5LgogICAgLS0+CiAgICA8dnotaGlzdG9ncmFtLXRpbWVzZXJpZXMKICAgICAgaWQ9ImNoYXJ0IgogICAgICB0aW1lLXByb3BlcnR5PSJbW3RpbWVQcm9wZXJ0eV1dIgogICAgICBtb2RlPSJbW2hpc3RvZ3JhbU1vZGVdXSIKICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIgogICAgPjwvdnotaGlzdG9ncmFtLXRpbWVzZXJpZXM+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLE1hLnByb3RvdHlwZSwicnVuIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLE1hLnByb3RvdHlwZSwidGFnIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLE1hLnByb3RvdHlwZSwiZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sTWEucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxNYS5wcm90b3R5cGUsImxvYWREYXRhQ2FsbGJhY2siLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTWEucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxNYS5wcm90b3R5cGUsInRpbWVQcm9wZXJ0eSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxNYS5wcm90b3R5cGUsImhpc3RvZ3JhbU1vZGUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxNYS5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTWEucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCk7RShbQnQoInJ1biIsInRhZyIsInJlcXVlc3RNYW5hZ2VyIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxNYS5wcm90b3R5cGUsIl9yZWxvYWRPblJ1blRhZ1JlcXVlc3RNYW5hZ2VyQ2hhbmdlIixudWxsKTtFKFtCdCgicnVuIiwidGFnIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxNYS5wcm90b3R5cGUsIl91cGRhdGVEYXRhVG9Mb2FkIixudWxsKTtFKFtSdCgicnVuIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTWEucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpO01hPUUoW3l0KCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIildLE1hKTt2YXIgc3M9Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9oaXN0b2dyYW1Nb2RlPSJvZmZzZXQiLHRoaXMuX3RpbWVQcm9wZXJ0eT0ic3RlcCIsdGhpcy5fcmVzdGFtcD0hMSx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgQWV9X3JlZHJhd0NhdGVnb3J5UGFuZSh0LHIpeyFyfHx0LnRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIikuZm9yRWFjaChuPT5uLnJlZHJhdygpKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCk9Pnt0aGlzLl9yZWxvYWRIaXN0b2dyYW1zKCl9KX1fZmV0Y2hUYWdzKCl7bGV0IHQ9dmUoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57aWYoTEguaXNFcXVhbChyLHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2xldCBuPUxILm1hcFZhbHVlcyhyLG89Pk9iamVjdC5rZXlzKG8pKSxpPVhpKG4pO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIixpLmxlbmd0aD09PTApLHRoaXMuc2V0KCJfcnVuVG9UYWciLG4pLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIixyKSx0aGlzLmFzeW5jKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pfSl9X3JlbG9hZEhpc3RvZ3JhbXMoKXt2YXIgdDsodD10aGlzLnJvb3QpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIikuZm9yRWFjaChyPT57ci5yZWxvYWQoKX0pfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3J1blRvVGFnLHI9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyLGk9dGhpcy5fY2F0ZWdvcmllc0RvbVJlYWR5O3JldHVybiBabCh0LHIsbil9X3RhZ01ldGFkYXRhKHQscixuKXtyZXR1cm4gdFtyXVtuXX19O3NzLnRlbXBsYXRlPVFgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9Imhpc3RvZ3JhbU1vZGVTZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIaXN0b2dyYW0gbW9kZSIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfaGlzdG9ncmFtTW9kZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ib3ZlcmxheSI+b3ZlcmxheTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9Im9mZnNldCI+b2Zmc2V0PC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9InRpbWVQcm9wZXJ0eVNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ik9mZnNldCB0aW1lIGF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3RpbWVQcm9wZXJ0eX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBoaXN0b2dyYW0gZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaGlzdG9ncmFtIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1oaXN0b2dyYW0tbG9hZGVyCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgdGltZS1wcm9wZXJ0eT0iW1tfdGltZVByb3BlcnR5XV0iCiAgICAgICAgICAgICAgICAgIGhpc3RvZ3JhbS1tb2RlPSJbW19oaXN0b2dyYW1Nb2RlXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWhpc3RvZ3JhbS1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHNzLnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxzcy5wcm90b3R5cGUsIl9oaXN0b2dyYW1Nb2RlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHNzLnByb3RvdHlwZSwiX3RpbWVQcm9wZXJ0eSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sc3MucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHNzLnByb3RvdHlwZSwiX3J1blRvVGFnIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHNzLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHNzLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxzcy5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxzcy5wcm90b3R5cGUsIl9yZXN0YW1wIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sc3MucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sc3MucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbUnQoIl9ydW5Ub1RhZyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sc3MucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCk7c3M9RShbeXQoInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQiKV0sc3MpO3ZhciBjMz1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbj0hMCl7dGhpcy5fYXBpVXJsPXQsdGhpcy5fcmVxdWVzdE1hbmFnZXI9cix0aGlzLl91c2VIdHRwR2V0PW59Z2V0RXhwZXJpbWVudCh0KXtyZXR1cm4gdGhpcy5fc2VuZFJlcXVlc3QoImV4cGVyaW1lbnQiLHQpfWdldERvd25sb2FkVXJsKHQscixuKXtyZXR1cm4gdGhpcy5fYXBpVXJsKyIvZG93bmxvYWRfZGF0YT8iK25ldyBVUkxTZWFyY2hQYXJhbXMoe2Zvcm1hdDp0LGNvbHVtbnNWaXNpYmlsaXR5OkpTT04uc3RyaW5naWZ5KG4pLHJlcXVlc3Q6SlNPTi5zdHJpbmdpZnkocil9KX1saXN0U2Vzc2lvbkdyb3Vwcyh0KXtyZXR1cm4gdGhpcy5fc2VuZFJlcXVlc3QoInNlc3Npb25fZ3JvdXBzIix0KX1saXN0TWV0cmljRXZhbHModCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJtZXRyaWNfZXZhbHMiLHQpfV9zZW5kUmVxdWVzdCh0LHIpe2lmKHRoaXMuX3VzZUh0dHBHZXQpe2xldCBvPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShyKSksYT10aGlzLl9hcGlVcmwrIi8iK3QrIj9yZXF1ZXN0PSIrbztyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChhKX1sZXQgbj1uZXcgVng7bi53aXRoQ3JlZGVudGlhbHM9ITAsbi5tZXRob2RUeXBlPUFtLlBPU1Qsbi5jb250ZW50VHlwZT0idGV4dC9wbGFpbiIsbi5ib2R5PUpTT04uc3RyaW5naWZ5KHIpO2xldCBpPXRoaXMuX2FwaVVybCsiLyIrdDtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdFdpdGhPcHRpb25zKGksbil9fTt2YXIgbGNlPUVlKE9lKCksMSk7dmFyIGtIPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMub3JpZW50YXRpb249Imhvcml6b250YWwifX07a0gudGVtcGxhdGU9UWAKICAgIDxzbG90IG5hbWU9ImNvbnRlbnQiPjwvc2xvdD4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3Qgc2xvdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIDpob3N0IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZmxleDogMCAwIGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSBzbG90IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0ndmVydGljYWwnXSkgc2xvdCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyOiAwIHNvbGlkIHZhcigtLWRpdmlkZXItY29sb3IsICNjY2MpOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pIDo6c2xvdHRlZCgqOm5vdCg6bGFzdC1jaGlsZCkpIHsKICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiA1cHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtvcmllbnRhdGlvbj0naG9yaXpvbnRhbCddKSA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiA1cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZyxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sa0gucHJvdG90eXBlLCJvcmllbnRhdGlvbiIsdm9pZCAwKTtrSD1FKFt5dCgiaHBhcmFtcy1zcGxpdC1sYXlvdXQiKV0sa0gpO3ZhciBscz17fTskcyhscyx7Y29sdW1uVmFsdWVCeUluZGV4OigpPT54MCxjb2x1bW5WYWx1ZUJ5VmlzaWJsZUluZGV4OigpPT5PSCxldWNsaWRlYW5EaXN0OigpPT51MyxmaWx0ZXJTZXQ6KCk9Pnl1cixnZXRBYnNvbHV0ZUNvbHVtbkluZGV4OigpPT5OSCxoYXNoT2ZTdHJpbmc6KCk9PnBjdCxocGFyYW1OYW1lOigpPT5GZCxocGFyYW1WYWx1ZUJ5SW5kZXg6KCk9PnJjZSxocGFyYW1WYWx1ZUJ5TmFtZTooKT0+ZWNlLGhwYXJhbVZhbHVlQnlWaXNpYmxlSW5kZXg6KCk9PmFjZSxpc051bGxPclVuZGVmaW5lZDooKT0+bXVyLGwyTm9ybVNxdWFyZWQ6KCk9PmYzLG1ldHJpY05hbWU6KCk9Pkp1LG1ldHJpY1ZhbHVlQnlJbmRleDooKT0+bmNlLG1ldHJpY1ZhbHVlQnlOYW1lOigpPT5oMyxtZXRyaWNWYWx1ZUJ5VmlzaWJsZUluZGV4OigpPT5ESCxudW1Db2x1bW5zOigpPT5jY3QsbnVtSFBhcmFtczooKT0+UWxlLG51bU1ldHJpY3M6KCk9PnRjZSxudW1WaXNpYmxlQ29sdW1uczooKT0+aHVyLG51bVZpc2libGVIUGFyYW1zOigpPT5pY2UsbnVtVmlzaWJsZU1ldHJpY3M6KCk9Pm9jZSxudW1lcmljQ29sdW1uRXh0ZW50OigpPT51Y3QscG9pbnRUb1JlY3RhbmdsZURpc3Q6KCk9PnNjZSxwcmV0dHlQcmludDooKT0+YjAscHJldHR5UHJpbnRIUGFyYW1WYWx1ZUJ5TmFtZTooKT0+ZnVyLHByZXR0eVByaW50TWV0cmljVmFsdWVCeU5hbWU6KCk9PnB1cixxdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrOigpPT5fdXIscXVhZFRyZWVWaXNpdFBvaW50c0luUmVjdDooKT0+Z3VyLHJvdGF0ZVN0cjooKT0+ZHVyLHNjaGVtYUNvbHVtbk5hbWU6KCk9PmxjdCxzY2hlbWFWaXNpYmxlQ29sdW1uTmFtZTooKT0+dXVyLHNlc3Npb25Hcm91cFdpdGhOYW1lOigpPT5oY3Qsc2V0QXJyYXlPYnNlcnZhYmx5OigpPT5mY3QsdHJhbnNsYXRlU3RyOigpPT5tUCx2aXNpYmxlTnVtZXJpY0NvbHVtbkV4dGVudDooKT0+ZFB9KTt2YXIgUkg9RWUoT2UoKSwxKTtmdW5jdGlvbiBGZChlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZSE9PSIiJiZlLmRpc3BsYXlOYW1lIT09dm9pZCAwP2UuZGlzcGxheU5hbWU6ZS5uYW1lfWZ1bmN0aW9uIEp1KGUpe2lmKGUuZGlzcGxheU5hbWUhPT0iIiYmZS5kaXNwbGF5TmFtZSE9PXZvaWQgMClyZXR1cm4gZS5kaXNwbGF5TmFtZTtsZXQgdD1lLm5hbWUuZ3JvdXAscj1lLm5hbWUudGFnO3JldHVybiB0PT09dm9pZCAwJiYodD0iIikscj09PXZvaWQgMCYmKHI9IiIpLHQ9PT0iIj9yOnQrIi4iK3J9ZnVuY3Rpb24gbGN0KGUsdCl7aWYodDxlLmhwYXJhbUNvbHVtbnMubGVuZ3RoKXJldHVybiBGZChlLmhwYXJhbUNvbHVtbnNbdF0uaHBhcmFtSW5mbyk7bGV0IHI9dC1lLmhwYXJhbUNvbHVtbnMubGVuZ3RoO3JldHVybiBKdShlLm1ldHJpY0NvbHVtbnNbcl0ubWV0cmljSW5mbyl9ZnVuY3Rpb24gUWxlKGUpe3JldHVybiBlLmhwYXJhbUNvbHVtbnMubGVuZ3RofWZ1bmN0aW9uIHRjZShlKXtyZXR1cm4gZS5tZXRyaWNDb2x1bW5zLmxlbmd0aH1mdW5jdGlvbiBjY3QoZSl7cmV0dXJuIFFsZShlKSt0Y2UoZSl9ZnVuY3Rpb24gZWNlKGUsdCl7cmV0dXJuIGVbdF19ZnVuY3Rpb24gaDMoZSx0KXtyZXR1cm4gZS5maW5kKHI9PlJILmlzRXF1YWwoci5uYW1lLHQpKX1mdW5jdGlvbiByY2UoZSx0LHIpe3JldHVybiB0LmhwYXJhbXNbZS5ocGFyYW1Db2x1bW5zW3JdLmhwYXJhbUluZm8ubmFtZV19ZnVuY3Rpb24gbmNlKGUsdCxyKXtsZXQgbj1lLm1ldHJpY0NvbHVtbnNbcl0ubWV0cmljSW5mby5uYW1lLGk9aDModC5tZXRyaWNWYWx1ZXMsbik7cmV0dXJuIGk9PT12b2lkIDA/dm9pZCAwOmkudmFsdWV9ZnVuY3Rpb24geDAoZSx0LHIpe3JldHVybiByPGUuaHBhcmFtQ29sdW1ucy5sZW5ndGg/cmNlKGUsdCxyKTpuY2UoZSx0LHItZS5ocGFyYW1Db2x1bW5zLmxlbmd0aCl9ZnVuY3Rpb24gdWN0KGUsdCxyKXtyZXR1cm4gb2EodCxuPT54MChlLG4scikpfWZ1bmN0aW9uIE5IKGUsdCxyKXtsZXQgbjtpZihyPHQuaHBhcmFtSW5mb3MubGVuZ3RoKW49ZS5ocGFyYW1Db2x1bW5zLmZpbmRJbmRleChpPT5pLmhwYXJhbUluZm8ubmFtZT09PXQuaHBhcmFtSW5mb3Nbcl0ubmFtZSk7ZWxzZXtsZXQgaT1yLXQuaHBhcmFtSW5mb3MubGVuZ3RoLG89dC5tZXRyaWNJbmZvc1tpXS5uYW1lO249ZS5ocGFyYW1Db2x1bW5zLmxlbmd0aCtlLm1ldHJpY0NvbHVtbnMuZmluZEluZGV4KGE9PmEubWV0cmljSW5mby5uYW1lPT09byl9cmV0dXJuIGNvbnNvbGUuYXNzZXJ0KG4hPT0tMSksbn1mdW5jdGlvbiB1dXIoZSx0KXtpZih0PGUuaHBhcmFtSW5mb3MubGVuZ3RoKXJldHVybiBGZChlLmhwYXJhbUluZm9zW3RdKTtsZXQgcj10LWUuaHBhcmFtSW5mb3MubGVuZ3RoO3JldHVybiBKdShlLm1ldHJpY0luZm9zW3JdKX1mdW5jdGlvbiBpY2UoZSl7cmV0dXJuIGUuaHBhcmFtSW5mb3MubGVuZ3RofWZ1bmN0aW9uIG9jZShlKXtyZXR1cm4gZS5tZXRyaWNJbmZvcy5sZW5ndGh9ZnVuY3Rpb24gaHVyKGUpe3JldHVybiBpY2UoZSkrb2NlKGUpfWZ1bmN0aW9uIGRQKGUsdCxyKXtyZXR1cm4gb2EodCxuPT5PSChlLG4scikpfWZ1bmN0aW9uIGZ1cihlLHQpe3JldHVybiBiMChlY2UoZSx0KSl9ZnVuY3Rpb24gcHVyKGUsdCl7cmV0dXJuIGIwKGgzKGUsdCkpfWZ1bmN0aW9uIGhjdChlLHQpe3JldHVybiBlLmZpbmQocj0+ci5uYW1lPT09dCl9ZnVuY3Rpb24gYWNlKGUsdCxyKXtyZXR1cm4gdC5ocGFyYW1zW2UuaHBhcmFtSW5mb3Nbcl0ubmFtZV19ZnVuY3Rpb24gREgoZSx0LHIpe2xldCBuPWUubWV0cmljSW5mb3Nbcl0ubmFtZSxpPWgzKHQubWV0cmljVmFsdWVzLG4pO3JldHVybiBpPT09dm9pZCAwP3ZvaWQgMDppLnZhbHVlfWZ1bmN0aW9uIE9IKGUsdCxyKXtyZXR1cm4gcjxlLmhwYXJhbUluZm9zLmxlbmd0aD9hY2UoZSx0LHIpOkRIKGUsdCxyLWUuaHBhcmFtSW5mb3MubGVuZ3RoKX1mdW5jdGlvbiBiMChlKXtyZXR1cm4gUkguaXNOdW1iZXIoZSk/ZS50b1ByZWNpc2lvbig1KTplPT09dm9pZCAwPyIiOmUudG9TdHJpbmcoKX1mdW5jdGlvbiBmMyhlLHQpe3JldHVybiBlKmUrdCp0fWZ1bmN0aW9uIHUzKGUsdCxyLG4pe3JldHVybiBNYXRoLnNxcnQoZjMoZS1yLHQtbikpfWZ1bmN0aW9uIHNjZShlLHQscixuLGksbyl7aWYoZTxyJiZ0PG4pcmV0dXJuIHUzKGUsdCxyLG4pO2lmKHI8PWUmJmU8aSYmdDxuKXJldHVybiBuLXQ7aWYoaTw9ZSYmdDxuKXJldHVybiB1MyhlLHQsaSxuKTtpZihlPHImJm48PXQmJnQ8bylyZXR1cm4gci1lO2lmKHI8PWUmJmU8aSYmbjw9dCYmdDxvKXJldHVybiAwO2lmKGk8PWUmJm48PXQmJnQ8bylyZXR1cm4gZS1pO2lmKGU8ciYmbzw9dClyZXR1cm4gdTMoZSx0LHIsbyk7aWYocjw9ZSYmZTxpJiZvPD10KXJldHVybiB0LW87aWYoaTw9ZSYmbzw9dClyZXR1cm4gdTMoZSx0LGksbyk7dGhyb3ciUG9pbnQgKHgseSkgbXVzdCBiZSBpbiBvbmUgb2YgdGhlIHJlZ2lvbnMgZGVmaW5lZCBhYm92ZS4ifWZ1bmN0aW9uIG1QKGUsdCl7cmV0dXJuIHQ9PT12b2lkIDA/InRyYW5zbGF0ZSgiK2UrIikiOiJ0cmFuc2xhdGUoIitlKyIsIit0KyIpIn1mdW5jdGlvbiBkdXIoZSx0LHIpe2xldCBuPSJyb3RhdGUoIitlO3JldHVybiB0IT09dm9pZCAwJiZyIT09dm9pZCAwJiYobj1uKyIsIit0KyIsIityKSxuPW4rIikiLG59ZnVuY3Rpb24gbXVyKGUpe3JldHVybiBlPT1udWxsfWZ1bmN0aW9uIGd1cihlLHQscixuLGksbyl7ZS52aXNpdCgoYSxzLGwsYyx1KT0+e2lmKGEubGVuZ3RoPT09dm9pZCAwKXtkb3tsZXQgaD1lLngoKShhLmRhdGEpLGY9ZS55KCkoYS5kYXRhKTt0PD1oJiZoPG4mJnI8PWYmJmY8aSYmbyhhLmRhdGEpfXdoaWxlKGE9YS5uZXh0KTtyZXR1cm4hMH1yZXR1cm4gcz49bnx8Yzw9dHx8bD49aXx8dTw9cn0pfWZ1bmN0aW9uIF91cihlLHQscixuLGkpe2UudmlzaXQoKG8sYSxzLGwsYyk9PntpZihvLmxlbmd0aD09PXZvaWQgMCl7ZG97bGV0IHU9ZS54KCkoby5kYXRhKSxoPWUueSgpKG8uZGF0YSksZj11Myh0LHIsdSxoKTtmPD1uJiZpKG8uZGF0YSxmKX13aGlsZShvPW8ubmV4dCk7cmV0dXJuITB9cmV0dXJuIHNjZSh0LHIsYSxzLGwsYyk+bn0pfWZ1bmN0aW9uIHl1cihlLHQpe2xldCByPW5ldyBTZXQ7cmV0dXJuIGUuZm9yRWFjaChuPT57dChuKSYmci5hZGQobil9KSxyfWZ1bmN0aW9uIGZjdChlLHQscil7bGV0IG49ZS5nZXQodCxlKTtpZighQXJyYXkuaXNBcnJheShuKSl7ZS5zZXQodCxyKTtyZXR1cm59ZS5zcGxpY2UuYXBwbHkoZSxbdCwwLG4ubGVuZ3RoXS5jb25jYXQocikpfWZ1bmN0aW9uIHBjdChlKXtsZXQgdD0wO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7KytyKXQ9dCozMStlLmNoYXJDb2RlQXQocikmNDI5NDk2NzI5NTtyZXR1cm4gdCtNYXRoLnBvdygyLDMxKX12YXIgdGk9Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29uZmlndXJhdGlvbj17c2NoZW1hOntocGFyYW1Db2x1bW5zOkFycmF5KCksbWV0cmljQ29sdW1uczpBcnJheSgpfSxjb2x1bW5zVmlzaWJpbGl0eTpBcnJheSgpLHZpc2libGVTY2hlbWE6e2hwYXJhbUluZm9zOkFycmF5KCksbWV0cmljSW5mb3M6QXJyYXkoKX19LHRoaXMuc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLmRhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zPSExLHRoaXMuZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXM9ITEsdGhpcy5fc3RhdHVzZXM9W3t2YWx1ZToiU1RBVFVTX1VOS05PV04iLGRpc3BsYXlOYW1lOiJVbmtub3duIixhbGxvd2VkOiEwfSx7dmFsdWU6IlNUQVRVU19TVUNDRVNTIixkaXNwbGF5TmFtZToiU3VjY2VzcyIsYWxsb3dlZDohMH0se3ZhbHVlOiJTVEFUVVNfRkFJTFVSRSIsZGlzcGxheU5hbWU6IkZhaWx1cmUiLGFsbG93ZWQ6ITB9LHt2YWx1ZToiU1RBVFVTX1JVTk5JTkciLGRpc3BsYXlOYW1lOiJSdW5uaW5nIixhbGxvd2VkOiEwfV0sdGhpcy5fZ2V0RXhwZXJpbWVudFJlc29sdmVkPW5ldyBQcm9taXNlKHQ9Pnt0aGlzLl9yZXNvbHZlR2V0RXhwZXJpbWVudD10fSksdGhpcy5fbGlzdFNlc3Npb25Hcm91cHNDYW5jZWxsZXI9bmV3IGFuLHRoaXMuX3BhZ2VTaXplSW5wdXQ9e3ZhbHVlOiIxMDAiLGludmFsaWQ6ITF9LHRoaXMuX3BhZ2VOdW1iZXJJbnB1dD17dmFsdWU6IjEiLGludmFsaWQ6ITF9LHRoaXMuX3BhZ2VDb3VudFN0cj0iPyIsdGhpcy5faHBhcmFtTmFtZT1GZCx0aGlzLl9tZXRyaWNOYW1lPUp1LHRoaXMuX3ByZXR0eVByaW50PWIwfXJlbG9hZCgpe3RoaXMuX3F1ZXJ5U2VydmVyKCl9X2NzdlVybCh0LHIpe3JldHVybiB0aGlzLl9kb3dubG9hZERhdGFVcmwodCxyLCJjc3YiKX1fanNvblVybCh0LHIpe3JldHVybiB0aGlzLl9kb3dubG9hZERhdGFVcmwodCxyLCJqc29uIil9X2xhdGV4VXJsKHQscil7cmV0dXJuIHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LHIsImxhdGV4Iil9X2Rvd25sb2FkRGF0YVVybCh0LHIsbil7bGV0IGk9ci5jb2x1bW5zVmlzaWJpbGl0eTtyZXR1cm4gdGhpcy5iYWNrZW5kLmdldERvd25sb2FkVXJsKG4sdCxpKX1fY29tcHV0ZUV4cGVyaW1lbnRBbmRSZWxhdGVkUHJvcHMoKXtsZXQgdD1scztpZih0LmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYmFja2VuZCl8fHQuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5leHBlcmltZW50TmFtZSkpcmV0dXJuO2xldCByPXtleHBlcmltZW50TmFtZTp0aGlzLmV4cGVyaW1lbnROYW1lfTt0aGlzLmJhY2tlbmQuZ2V0RXhwZXJpbWVudChyKS50aGVuKG49PntsY2UuaXNFcXVhbChuLHRoaXMuX2V4cGVyaW1lbnQpfHwodGhpcy5zZXQoIl9leHBlcmltZW50IixuKSx0aGlzLl9jb21wdXRlSFBhcmFtcygpLHRoaXMuX2NvbXB1dGVNZXRyaWNzKCksdGhpcy5fcXVlcnlTZXJ2ZXIoKSx0aGlzLl9yZXNvbHZlR2V0RXhwZXJpbWVudCgpKX0pLmZpbmFsbHkoKCk9Pnt0aGlzLl9jb21wdXRlRGF0YUZvdW5kKCl9KX1fY29tcHV0ZURhdGFGb3VuZCgpe2xldCB0PUJvb2xlYW4odGhpcy5fZXhwZXJpbWVudCYmdGhpcy5fZXhwZXJpbWVudC5ocGFyYW1JbmZvcyYmdGhpcy5fZXhwZXJpbWVudC5ocGFyYW1JbmZvcy5sZW5ndGg+MCYmdGhpcy5fZXhwZXJpbWVudC5tZXRyaWNJbmZvcyYmdGhpcy5fZXhwZXJpbWVudC5tZXRyaWNJbmZvcy5sZW5ndGg+MCk7dGhpcy5zZXQoImRhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zIix0KSx0aGlzLnNldCgiZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXMiLCF0KX1fY29tcHV0ZUhQYXJhbXMoKXtsZXQgdD1bXTt0aGlzLl9leHBlcmltZW50LmhwYXJhbUluZm9zLmZvckVhY2goKG4saSk9PntsZXQgbz17aW5mbzpuLGRpc3BsYXllZDppPDUsZmlsdGVyOnt9fTtvLmluZm8uaGFzT3duUHJvcGVydHkoImRvbWFpbkRpc2NyZXRlIik/KG8uZmlsdGVyLmRvbWFpbkRpc2NyZXRlPVtdLG8uaW5mby5kb21haW5EaXNjcmV0ZS5mb3JFYWNoKGE9PntvLmZpbHRlci5kb21haW5EaXNjcmV0ZS5wdXNoKHt2YWx1ZTphLGNoZWNrZWQ6ITB9KX0pKTpvLmluZm8udHlwZT09PSJEQVRBX1RZUEVfQk9PTCI/by5maWx0ZXIuZG9tYWluRGlzY3JldGU9W3t2YWx1ZTohMSxjaGVja2VkOiEwfSx7dmFsdWU6ITAsY2hlY2tlZDohMH1dOm8uaW5mby50eXBlPT09IkRBVEFfVFlQRV9GTE9BVDY0Ij9vLmZpbHRlci5pbnRlcnZhbD17bWluOnt2YWx1ZToiIixpbnZhbGlkOiExfSxtYXg6e3ZhbHVlOiIiLGludmFsaWQ6ITF9fTpvLmluZm8udHlwZT09PSJEQVRBX1RZUEVfU1RSSU5HIj9vLmZpbHRlci5yZWdleHA9IiI6Y29uc29sZS53YXJuKCJ1bmtub3duIGhwYXJhbS5pbmZvLnR5cGU6ICVzIixvLmluZm8udHlwZSksdC5wdXNoKG8pfSksdGhpcy5zZXQoIl9ocGFyYW1zIix0KX1fY29tcHV0ZU1ldHJpY3MoKXtsZXQgdD1bXTt0aGlzLl9leHBlcmltZW50Lm1ldHJpY0luZm9zLmZvckVhY2goKG4saSk9PntsZXQgbz17aW5mbzpuLGZpbHRlcjp7aW50ZXJ2YWw6e21pbjp7dmFsdWU6IiIsaW52YWxpZDohMX0sbWF4Ont2YWx1ZToiIixpbnZhbGlkOiExfX19LGRpc3BsYXllZDppPDV9O3QucHVzaChvKX0pLHRoaXMuc2V0KCJfbWV0cmljcyIsdCl9X2NvbXB1dGVTY2hlbWEoKXtyZXR1cm4hdGhpcy5faHBhcmFtc3x8IXRoaXMuX21ldHJpY3M/e2hwYXJhbUNvbHVtbnM6W10sbWV0cmljQ29sdW1uczpbXX06e2hwYXJhbUNvbHVtbnM6dGhpcy5faHBhcmFtcy5tYXAodD0+KHtocGFyYW1JbmZvOnQuaW5mb30pKSxtZXRyaWNDb2x1bW5zOnRoaXMuX21ldHJpY3MubWFwKHQ9Pih7bWV0cmljSW5mbzp0LmluZm99KSl9fV91cGRhdGVDb25maWd1cmF0aW9uKCl7dGhpcy5kZWJvdW5jZSgiX3VwZGF0ZUNvbmZpZ3VyYXRpb24iLCgpPT57dGhpcy5jb25maWd1cmF0aW9uPXtzY2hlbWE6dGhpcy5fY29tcHV0ZVNjaGVtYSgpLGNvbHVtbnNWaXNpYmlsaXR5OnRoaXMuX2NvbXB1dGVDb2x1bW5zVmlzaWJpbGl0eSgpLHZpc2libGVTY2hlbWE6dGhpcy5fY29tcHV0ZVZpc2libGVTY2hlbWEoKX19KX1fY29tcHV0ZUNvbHVtbnNWaXNpYmlsaXR5KCl7cmV0dXJuIXRoaXMuX2hwYXJhbXN8fCF0aGlzLl9tZXRyaWNzP1tdOnRoaXMuX2hwYXJhbXMubWFwKHQ9PnQuZGlzcGxheWVkKS5jb25jYXQodGhpcy5fbWV0cmljcy5tYXAodD0+dC5kaXNwbGF5ZWQpKX1fY29tcHV0ZVZpc2libGVTY2hlbWEoKXtpZighdGhpcy5faHBhcmFtc3x8IXRoaXMuX21ldHJpY3MpcmV0dXJue2hwYXJhbUluZm9zOltdLG1ldHJpY0luZm9zOltdfTtsZXQgdD10aGlzLl9ocGFyYW1zLmZpbHRlcihuPT5uLmRpc3BsYXllZCkubWFwKG49Pm4uaW5mbykscj10aGlzLl9tZXRyaWNzLmZpbHRlcihuPT5uLmRpc3BsYXllZCkubWFwKG49Pm4uaW5mbyk7cmV0dXJue2hwYXJhbUluZm9zOnQsbWV0cmljSW5mb3M6cn19X3F1ZXJ5U2VydmVyKCl7dGhpcy5kZWJvdW5jZSgicXVlcnlTZXJ2ZXIiLCgpPT50aGlzLl9xdWVyeVNlcnZlck5vRGVib3VuY2UoKSwxMDApfV9xdWVyeVNlcnZlck5vRGVib3VuY2UoKXtpZighKCF0aGlzLl9ocGFyYW1zfHwhdGhpcy5fbWV0cmljcykpcmV0dXJuIHRoaXMuX3NlbmRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKS50aGVuKHRoaXMuX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh7dmFsdWU6dCxjYW5jZWxsZWQ6cn0pPT57aWYoIXIpe2lmKHQudG90YWxTaXplPj0wKXtsZXQgbj0rdGhpcy5fcGFnZVNpemVJbnB1dC52YWx1ZTt0aGlzLnNldCgiX3BhZ2VDb3VudFN0ciIsU3RyaW5nKE1hdGguY2VpbCh0LnRvdGFsU2l6ZS9uKSkpLHRoaXMuc2V0KCJfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHIiLHQudG90YWxTaXplKX1lbHNlIHRoaXMuc2V0KCJfcGFnZUNvdW50U3RyIiwiPyIpLHRoaXMuc2V0KCJfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHIiLCJVbmtub3duIik7ZmN0KHRoaXMsInNlc3Npb25Hcm91cHMiLHQuc2Vzc2lvbkdyb3Vwcyl9fSkpfV9zZW5kTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCl7bGV0IHQ9dGhpcy5fYnVpbGRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKTtpZih0IT09bnVsbClyZXR1cm4gdGhpcy5zZXQoIl9zZXNzaW9uR3JvdXBzUmVxdWVzdCIsdCksdGhpcy5fbGlzdFNlc3Npb25Hcm91cHNDYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5iYWNrZW5kLmxpc3RTZXNzaW9uR3JvdXBzKHQpfV9idWlsZExpc3RTZXNzaW9uR3JvdXBzUmVxdWVzdCgpe2xldCB0PXRoaXMscj0hMDtmdW5jdGlvbiBuKHUpe2xldCBoPXQuZ2V0KHUrIi5taW4udmFsdWUiKTtjb25zb2xlLmFzc2VydChoIT09dm9pZCAwKTtsZXQgZj1oPT09IiI/Ii1JbmZpbml0eSI6K2g7dC5zZXQodSsiLm1pbi5pbnZhbGlkIixpc05hTihmKSkscj1yJiYhaXNOYU4oZik7bGV0IHA9dC5nZXQodSsiLm1heC52YWx1ZSIpO2NvbnNvbGUuYXNzZXJ0KHAhPT12b2lkIDApO2xldCBkPXA9PT0iIj8iSW5maW5pdHkiOitwO3JldHVybiB0LnNldCh1KyIubWF4LmludmFsaWQiLGlzTmFOKGQpKSxyPXImJiFpc05hTihkKSxpc05hTihmKXx8aXNOYU4oZCk/bnVsbDp7bWluVmFsdWU6ZixtYXhWYWx1ZTpkfX1mdW5jdGlvbiBpKHUpe2xldCBoPXQuZ2V0KHUrIi52YWx1ZSIpO2NvbnNvbGUuYXNzZXJ0KGghPT12b2lkIDApO2xldCBmPStoLHA9TnVtYmVyLmlzSW50ZWdlcihmKSYmZj4wO3JldHVybiB0LnNldCh1KyIuaW52YWxpZCIsIXApLHI9ciYmcCxwP2Y6bnVsbH1sZXQgbz10aGlzLl9zdGF0dXNlcy5maWx0ZXIodT0+dS5hbGxvd2VkKS5tYXAodT0+dS52YWx1ZSksYT1bXTtpZih0aGlzLl9ocGFyYW1zLmZvckVhY2goKHUsaCk9PntsZXQgZj17aHBhcmFtOnUuaW5mby5uYW1lfTt1LmZpbHRlci5kb21haW5EaXNjcmV0ZT8oZi5maWx0ZXJEaXNjcmV0ZT1bXSx1LmZpbHRlci5kb21haW5EaXNjcmV0ZS5mb3JFYWNoKHA9PntwLmNoZWNrZWQmJmYuZmlsdGVyRGlzY3JldGUucHVzaChwLnZhbHVlKX0pKTp1LmZpbHRlci5pbnRlcnZhbD9mLmZpbHRlckludGVydmFsPW4oIl9ocGFyYW1zLiIraCsiLmZpbHRlci5pbnRlcnZhbCIpOnUuZmlsdGVyLnJlZ2V4cCYmKGYuZmlsdGVyUmVnZXhwPXUuZmlsdGVyLnJlZ2V4cCksYS5wdXNoKGYpfSksdGhpcy5fbWV0cmljcy5mb3JFYWNoKCh1LGgpPT57bGV0IGY9e21ldHJpYzp1LmluZm8ubmFtZSxmaWx0ZXJJbnRlcnZhbDpuKCJfbWV0cmljcy4iK2grIi5maWx0ZXIuaW50ZXJ2YWwiKX07YS5wdXNoKGYpfSksdGhpcy5fc29ydEJ5SW5kZXghPT12b2lkIDAmJnRoaXMuX3NvcnREaXJlY3Rpb24hPT12b2lkIDApe2lmKCEodGhpcy5fc29ydEJ5SW5kZXggaW4gYSkpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIk5vIGNvbHVtbiBpbiBjb2xQYXJhbXMgd2l0aCBpbmRleCBzb3J0QnlJbmRleDogJXMiLHRoaXMuX3NvcnRCeUluZGV4KSxudWxsO2FbdGhpcy5fc29ydEJ5SW5kZXhdLm9yZGVyPXRoaXMuX3NvcnREaXJlY3Rpb249PT0wPyJPUkRFUl9BU0MiOiJPUkRFUl9ERVNDIn1sZXQgcz1pKCJfcGFnZU51bWJlcklucHV0Iil8fDAsbD1pKCJfcGFnZVNpemVJbnB1dCIpfHwwO2lmKCFyKXJldHVybiBudWxsO2xldCBjPWwqKHMtMSk7cmV0dXJue2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWUsYWxsb3dlZFN0YXR1c2VzOm8sY29sUGFyYW1zOmEsc3RhcnRJbmRleDpjLHNsaWNlU2l6ZTpsfX1fbWV0cmljU29ydEJ5SW5kZXgodCl7cmV0dXJuIHQrdGhpcy5faHBhcmFtcy5sZW5ndGh9fTt0aS50ZW1wbGF0ZT1RYAogICAgPGhwYXJhbXMtc3BsaXQtbGF5b3V0IG9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gaHlwZXJwYXJhbWV0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5IeXBlcnBhcmFtZXRlcnM8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJ7e19ocGFyYW1zfX0iIGFzPSJocGFyYW0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iaHBhcmFtIj4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgY2hlY2tlZD0ie3tocGFyYW0uZGlzcGxheWVkfX0iCiAgICAgICAgICAgICAgY2xhc3M9ImhwYXJhbS1jaGVja2JveCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIFtbX2hwYXJhbU5hbWUoaHBhcmFtLmluZm8pXV0KICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgICAgPCEtLSBQcmVjaXNlbHkgb25lIG9mIHRoZSB0ZW1wbGF0ZXMgYmVsb3cgd2lsbCBiZSBzdGFtcGVkLi0tPgogICAgICAgICAgICA8IS0tIDEuIEEgbGlzdCBvZiBjaGVja2JveGVzIC0tPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaHBhcmFtLmZpbHRlci5kb21haW5EaXNjcmV0ZV1dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgICAgICAgaXRlbXM9IltbaHBhcmFtLmZpbHRlci5kb21haW5EaXNjcmV0ZV1dIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgICAgICBjaGVja2VkPSJ7e2l0ZW0uY2hlY2tlZH19IgogICAgICAgICAgICAgICAgICBjbGFzcz0iZGlzY3JldGUtdmFsdWUtY2hlY2tib3giCiAgICAgICAgICAgICAgICAgIG9uLWNoYW5nZT0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBbW19wcmV0dHlQcmludChpdGVtLnZhbHVlKV1dCiAgICAgICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwhLS0gMi4gQSBudW1lcmljIGludGVydmFsIC0tPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaHBhcmFtLmZpbHRlci5pbnRlcnZhbF1dIj4KICAgICAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgICAgIGxhYmVsPSJNaW4iCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tocGFyYW0uZmlsdGVyLmludGVydmFsLm1pbi52YWx1ZX19IgogICAgICAgICAgICAgICAgYWxsb3dlZF9wYXR0ZXJuPSJbMC05LmVcXC1dIgogICAgICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgICAgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIKICAgICAgICAgICAgICAgIGludmFsaWQ9IltbaHBhcmFtLmZpbHRlci5pbnRlcnZhbC5taW4uaW52YWxpZF1dIgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Ii1pbmZpbml0eSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgICAgIGxhYmVsPSJNYXgiCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tocGFyYW0uZmlsdGVyLmludGVydmFsLm1heC52YWx1ZX19IgogICAgICAgICAgICAgICAgYWxsb3dlZF9wYXR0ZXJuPSJbMC05LmVcXC1dIgogICAgICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgICAgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIKICAgICAgICAgICAgICAgIGludmFsaWQ9IltbaHBhcmFtLmZpbHRlci5pbnRlcnZhbC5tYXguaW52YWxpZF1dIgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IitpbmZpbml0eSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPCEtLSAzLiBBIHJlZ2V4cCAtLT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIucmVnZXhwXV0iPgogICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgbGFiZWw9IlJlZ3VsYXIgZXhwcmVzc2lvbiIKICAgICAgICAgICAgICAgIHZhbHVlPSJ7e2hwYXJhbS5maWx0ZXIucmVnZXhwfX0iCiAgICAgICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBtZXRyaWNzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5NZXRyaWNzPC9kaXY+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tfbWV0cmljc319IiBhcz0ibWV0cmljIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYyI+CiAgICAgICAgICAgIDwhLS0gVE9ETyhlcmV6KTogTWFrZSBpdCBlYXNpZXIgdG8gaGFuZGxlIGEgbGFyZ2UgbnVtYmVyIG9mCiAgICAgICAgICAgICAgICAgIG1ldHJpY3M6CiAgICAgICAgICAgICAgICAgIDEuIEFkZCBhbiAnaXNvbGF0b3InIHJhZGlvLWJ1dHRvbiB0byBzZWxlY3QganVzdCBvbmUKICAgICAgICAgICAgICAgICAgbWV0cmljIGFuZAogICAgICAgICAgICAgICAgICBoaWRlIGFsbCB0aGUgcmVzdAogICAgICAgICAgICAgICAgICAyLiBBZGQgYSAndG9nZ2xlLWFsbCcgYnV0dG9uIHRoYXQgd2lsbCBoaWRlL3VuaGlkZQogICAgICAgICAgICAgICAgICAgIGFsbCB0aGUKICAgICAgICAgICAgICAgICAgbWV0cmljcy4KICAgICAgICAgICAgICAgICAgVXNlIHNpbWlsYXIgbG9naWMvYXBwZWFyYW5jZSB0byB0aGUgcnVuLXNlbGVjdG9yIG9mCiAgICAgICAgICAgICAgICAgIHNjYWxhcnMuLS0+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgIGNoZWNrZWQ9Int7bWV0cmljLmRpc3BsYXllZH19IgogICAgICAgICAgICAgIGNsYXNzPSJtZXRyaWMtY2hlY2tib3giCiAgICAgICAgICAgID4KICAgICAgICAgICAgICBbW19tZXRyaWNOYW1lKG1ldHJpYy5pbmZvKV1dCiAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50Ij4KICAgICAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgICAgIGxhYmVsPSJNaW4iCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3ttZXRyaWMuZmlsdGVyLmludGVydmFsLm1pbi52YWx1ZX19IgogICAgICAgICAgICAgICAgYWxsb3dlZC1wYXR0ZXJuPSJbMC05LmVcXC1dIgogICAgICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgICAgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIKICAgICAgICAgICAgICAgIGludmFsaWQ9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5taW4uaW52YWxpZH19IgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9Ii1pbmZpbml0eSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50Ij4KICAgICAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgICAgIGxhYmVsPSJNYXgiCiAgICAgICAgICAgICAgICBhbGxvd2VkLXBhdHRlcm49IlswLTkuZVxcLV0iCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3ttZXRyaWMuZmlsdGVyLmludGVydmFsLm1heC52YWx1ZX19IgogICAgICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgICAgICAgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIKICAgICAgICAgICAgICAgIGludmFsaWQ9Int7bWV0cmljLmZpbHRlci5pbnRlcnZhbC5tYXguaW52YWxpZH19IgogICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IitpbmZpbml0eSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBzdGF0dXMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlN0YXR1czwvZGl2PgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3N0YXR1c2VzXV0iIGFzPSJzdGF0dXMiPgogICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7c3RhdHVzLmFsbG93ZWR9fSIgb24tY2hhbmdlPSJfcXVlcnlTZXJ2ZXIiPgogICAgICAgICAgICBbW3N0YXR1cy5kaXNwbGF5TmFtZV1dCiAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIHNvcnRpbmciPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlNvcnRpbmc8L2Rpdj4KICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgbGFiZWw9IlNvcnQgYnkiCiAgICAgICAgICBvbi1zZWxlY3RlZC1pdGVtLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgIGhvcml6b250YWwtYWxpZ249ImxlZnQiCiAgICAgICAgPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zb3J0QnlJbmRleH19IgogICAgICAgICAgICBvbi1zZWxlY3RlZC1pdGVtLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgID4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfaHBhcmFtc11dIiBhcz0iaHBhcmFtIj4KICAgICAgICAgICAgICA8cGFwZXItaXRlbT4gW1tfaHBhcmFtTmFtZShocGFyYW0uaW5mbyldXSA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX21ldHJpY3NdXSIgYXM9Im1ldHJpYyI+CiAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+IFtbX21ldHJpY05hbWUobWV0cmljLmluZm8pXV0gPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgbGFiZWw9IkRpcmVjdGlvbiIKICAgICAgICAgIG9uLXNlbGVjdGVkLWl0ZW0tY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCIKICAgICAgICA+CiAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgc2xvdD0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NvcnREaXJlY3Rpb259fSIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0+QXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbT5EZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gcGFnaW5nIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5QYWdpbmc8L2Rpdj4KICAgICAgICA8ZGl2PgogICAgICAgICAgTnVtYmVyIG9mIG1hdGNoaW5nIHNlc3Npb24gZ3JvdXBzOiBbW190b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0cl1dCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaW5saW5lLWVsZW1lbnQgcGFnZS1udW1iZXItaW5wdXQiPgogICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgIGxhYmVsPSJQYWdlICMiCiAgICAgICAgICAgIHZhbHVlPSJ7e19wYWdlTnVtYmVySW5wdXQudmFsdWV9fSIKICAgICAgICAgICAgYWxsb3dlZC1wYXR0ZXJuPSJbMC05XSIKICAgICAgICAgICAgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIKICAgICAgICAgICAgaW52YWxpZD0iW1tfcGFnZU51bWJlcklucHV0LmludmFsaWRdXSIKICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgPgogICAgICAgICAgICA8ZGl2IHNsb3Q9InN1ZmZpeCIgY2xhc3M9InBhZ2Utc3VmZml4Ij4vIFtbX3BhZ2VDb3VudFN0cl1dPC9kaXY+CiAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50IHBhZ2Utc2l6ZS1pbnB1dCI+CiAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgbGFiZWw9Ik1heCAjIG9mIHNlc3Npb24gZ3JvdXBzIHBlciBwYWdlOiIKICAgICAgICAgICAgdmFsdWU9Int7X3BhZ2VTaXplSW5wdXQudmFsdWV9fSIKICAgICAgICAgICAgYWxsb3dlZC1wYXR0ZXJuPSJbMC05XSIKICAgICAgICAgICAgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIKICAgICAgICAgICAgaW52YWxpZD0iW1tfcGFnZVNpemVJbnB1dC5pbnZhbGlkXV0iCiAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgID4KICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIGRvd25sb2FkIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlc3Npb25Hcm91cHNSZXF1ZXN0XV0iPgogICAgICAgICAgRG93bmxvYWQgZGF0YSBhcwogICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaWQ9ImNzdkxpbmsiCiAgICAgICAgICAgICAgZG93bmxvYWQ9ImhwYXJhbXNfdGFibGUuY3N2IgogICAgICAgICAgICAgIGhyZWY9IltbX2NzdlVybChfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QsIGNvbmZpZ3VyYXRpb24pXV0iCiAgICAgICAgICAgICAgPkNTVjwvYQogICAgICAgICAgICA+CiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaWQ9Impzb25MaW5rIgogICAgICAgICAgICAgIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLmpzb24iCiAgICAgICAgICAgICAgaHJlZj0iW1tfanNvblVybChfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QsIGNvbmZpZ3VyYXRpb24pXV0iCiAgICAgICAgICAgICAgPkpTT048L2EKICAgICAgICAgICAgPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGlkPSJsYXRleExpbmsiCiAgICAgICAgICAgICAgZG93bmxvYWQ9ImhwYXJhbXNfdGFibGUudGV4IgogICAgICAgICAgICAgIGhyZWY9IltbX2xhdGV4VXJsKF9zZXNzaW9uR3JvdXBzUmVxdWVzdCwgY29uZmlndXJhdGlvbildXSIKICAgICAgICAgICAgICA+TGFUZVg8L2EKICAgICAgICAgICAgPgogICAgICAgICAgPC9zcGFuPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgLnNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgIH0KICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICAgIG1hcmdpbi1ib3R0b206IDdweDsKICAgICAgfQogICAgICAuZGlzY3JldGUtdmFsdWUtY2hlY2tib3gsCiAgICAgIC5tZXRyaWMtY2hlY2tib3gsCiAgICAgIC5ocGFyYW0tY2hlY2tib3ggewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5kaXNjcmV0ZS12YWx1ZS1jaGVja2JveCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgICAgIH0KICAgICAgLmhwYXJhbSwKICAgICAgLm1ldHJpYyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLmlubGluZS1lbGVtZW50IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDQwJTsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgfQogICAgICAucGFnZS1udW1iZXItaW5wdXQgewogICAgICAgIHdpZHRoOiAyMCU7CiAgICAgIH0KICAgICAgLnBhZ2Utc2l6ZS1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDYwJTsKICAgICAgfQogICAgICB2YWFkaW4tc3BsaXQtbGF5b3V0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgcGFwZXItbGlzdGJveCB7CiAgICAgICAgbWF4LWhlaWdodDogMTVlbTsKICAgICAgfQogICAgICAucGFnZS1zdWZmaXggewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx0aS5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0aS5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdGkucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHRpLnByb3RvdHlwZSwiZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXMiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdGkucHJvdG90eXBlLCJkYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0aS5wcm90b3R5cGUsIl9leHBlcmltZW50Iix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSx0aS5wcm90b3R5cGUsIl9ocGFyYW1zIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSx0aS5wcm90b3R5cGUsIl9tZXRyaWNzIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdGkucHJvdG90eXBlLCJfc3RhdHVzZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdGkucHJvdG90eXBlLCJfZ2V0RXhwZXJpbWVudFJlc29sdmVkIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sdGkucHJvdG90eXBlLCJfcmVzb2x2ZUdldEV4cGVyaW1lbnQiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdGkucHJvdG90eXBlLCJfbGlzdFNlc3Npb25Hcm91cHNDYW5jZWxsZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sdGkucHJvdG90eXBlLCJfc29ydEJ5SW5kZXgiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sdGkucHJvdG90eXBlLCJfc29ydERpcmVjdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0aS5wcm90b3R5cGUsIl9wYWdlU2l6ZUlucHV0Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHRpLnByb3RvdHlwZSwiX3BhZ2VOdW1iZXJJbnB1dCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx0aS5wcm90b3R5cGUsIl9wYWdlQ291bnRTdHIiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdGkucHJvdG90eXBlLCJfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHIiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdGkucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QiLHZvaWQgMCk7RShbQnQoImJhY2tlbmQiLCJleHBlcmltZW50TmFtZSIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdGkucHJvdG90eXBlLCJfY29tcHV0ZUV4cGVyaW1lbnRBbmRSZWxhdGVkUHJvcHMiLG51bGwpO0UoW0J0KCJfaHBhcmFtcy4qIiwiX21ldHJpY3MuKiIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdGkucHJvdG90eXBlLCJfdXBkYXRlQ29uZmlndXJhdGlvbiIsbnVsbCk7dGk9RShbeXQoInRmLWhwYXJhbXMtcXVlcnktcGFuZSIpXSx0aSk7dmFyIFZjdD1FZShPZSgpLDEpO3ZhciBkY3Q9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJndpbmRvdy5jdXN0b21FbGVtZW50cyE9bnVsbCYmd2luZG93LmN1c3RvbUVsZW1lbnRzLnBvbHlmaWxsV3JhcEZsdXNoQ2FsbGJhY2shPT12b2lkIDA7dmFyIGkxPShlLHQscj1udWxsKT0+e2Zvcig7dCE9PXI7KXtsZXQgbj10Lm5leHRTaWJsaW5nO2UucmVtb3ZlQ2hpbGQodCksdD1ufX07dmFyIEdjPWB7e2xpdC0ke1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKX19fWAsbWN0PWA8IS0tJHtHY30tLT5gLGNjZT1uZXcgUmVnRXhwKGAke0djfXwke21jdH1gKSxwMz0iJGxpdCQiLG8xPWNsYXNze2NvbnN0cnVjdG9yKHQscil7dGhpcy5wYXJ0cz1bXSx0aGlzLmVsZW1lbnQ9cjtsZXQgbj1bXSxpPVtdLG89ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyLmNvbnRlbnQsMTMzLG51bGwsITEpLGE9MCxzPS0xLGw9MCx7c3RyaW5nczpjLHZhbHVlczp7bGVuZ3RoOnV9fT10O2Zvcig7bDx1Oyl7bGV0IGg9by5uZXh0Tm9kZSgpO2lmKGg9PT1udWxsKXtvLmN1cnJlbnROb2RlPWkucG9wKCk7Y29udGludWV9aWYocysrLGgubm9kZVR5cGU9PT0xKXtpZihoLmhhc0F0dHJpYnV0ZXMoKSl7bGV0IGY9aC5hdHRyaWJ1dGVzLHtsZW5ndGg6cH09ZixkPTA7Zm9yKGxldCBnPTA7ZzxwO2crKyl1Y2UoZltnXS5uYW1lLHAzKSYmZCsrO2Zvcig7ZC0tID4wOyl7bGV0IGc9Y1tsXSxfPXpILmV4ZWMoZylbMl0seT1fLnRvTG93ZXJDYXNlKCkrcDMseD1oLmdldEF0dHJpYnV0ZSh5KTtoLnJlbW92ZUF0dHJpYnV0ZSh5KTtsZXQgYj14LnNwbGl0KGNjZSk7dGhpcy5wYXJ0cy5wdXNoKHt0eXBlOiJhdHRyaWJ1dGUiLGluZGV4OnMsbmFtZTpfLHN0cmluZ3M6Yn0pLGwrPWIubGVuZ3RoLTF9fWgudGFnTmFtZT09PSJURU1QTEFURSImJihpLnB1c2goaCksby5jdXJyZW50Tm9kZT1oLmNvbnRlbnQpfWVsc2UgaWYoaC5ub2RlVHlwZT09PTMpe2xldCBmPWguZGF0YTtpZihmLmluZGV4T2YoR2MpPj0wKXtsZXQgcD1oLnBhcmVudE5vZGUsZD1mLnNwbGl0KGNjZSksZz1kLmxlbmd0aC0xO2ZvcihsZXQgXz0wO188ZztfKyspe2xldCB5LHg9ZFtfXTtpZih4PT09IiIpeT1XZigpO2Vsc2V7bGV0IGI9ekguZXhlYyh4KTtiIT09bnVsbCYmdWNlKGJbMl0scDMpJiYoeD14LnNsaWNlKDAsYi5pbmRleCkrYlsxXStiWzJdLnNsaWNlKDAsLXAzLmxlbmd0aCkrYlszXSkseT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh4KX1wLmluc2VydEJlZm9yZSh5LGgpLHRoaXMucGFydHMucHVzaCh7dHlwZToibm9kZSIsaW5kZXg6KytzfSl9ZFtnXT09PSIiPyhwLmluc2VydEJlZm9yZShXZigpLGgpLG4ucHVzaChoKSk6aC5kYXRhPWRbZ10sbCs9Z319ZWxzZSBpZihoLm5vZGVUeXBlPT09OClpZihoLmRhdGE9PT1HYyl7bGV0IGY9aC5wYXJlbnROb2RlOyhoLnByZXZpb3VzU2libGluZz09PW51bGx8fHM9PT1hKSYmKHMrKyxmLmluc2VydEJlZm9yZShXZigpLGgpKSxhPXMsdGhpcy5wYXJ0cy5wdXNoKHt0eXBlOiJub2RlIixpbmRleDpzfSksaC5uZXh0U2libGluZz09PW51bGw/aC5kYXRhPSIiOihuLnB1c2goaCkscy0tKSxsKyt9ZWxzZXtsZXQgZj0tMTtmb3IoOyhmPWguZGF0YS5pbmRleE9mKEdjLGYrMSkpIT09LTE7KXRoaXMucGFydHMucHVzaCh7dHlwZToibm9kZSIsaW5kZXg6LTF9KSxsKyt9fWZvcihsZXQgaCBvZiBuKWgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoKX19LHVjZT0oZSx0KT0+e2xldCByPWUubGVuZ3RoLXQubGVuZ3RoO3JldHVybiByPj0wJiZlLnNsaWNlKHIpPT09dH0sZ1A9ZT0+ZS5pbmRleCE9PS0xLFdmPSgpPT5kb2N1bWVudC5jcmVhdGVDb21tZW50KCIiKSx6SD0vKFsgXHgwOVx4MGFceDBjXHgwZF0pKFteXDAtXHgxRlx4N0YtXHg5RiAiJz49L10rKShbIFx4MDlceDBhXHgwY1x4MGRdKj1bIFx4MDlceDBhXHgwY1x4MGRdKig/OlteIFx4MDlceDBhXHgwY1x4MGQiJ2A8Pj1dKnwiW14iXSp8J1teJ10qKSkkLzt2YXIgZ2N0PTEzMztmdW5jdGlvbiBfY3QoZSx0KXtsZXR7ZWxlbWVudDp7Y29udGVudDpyfSxwYXJ0czpufT1lLGk9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihyLGdjdCxudWxsLCExKSxvPV9QKG4pLGE9bltvXSxzPS0xLGw9MCxjPVtdLHU9bnVsbDtmb3IoO2kubmV4dE5vZGUoKTspe3MrKztsZXQgaD1pLmN1cnJlbnROb2RlO2ZvcihoLnByZXZpb3VzU2libGluZz09PXUmJih1PW51bGwpLHQuaGFzKGgpJiYoYy5wdXNoKGgpLHU9PT1udWxsJiYodT1oKSksdSE9PW51bGwmJmwrKzthIT09dm9pZCAwJiZhLmluZGV4PT09czspYS5pbmRleD11IT09bnVsbD8tMTphLmluZGV4LWwsbz1fUChuLG8pLGE9bltvXX1jLmZvckVhY2goaD0+aC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGgpKX12YXIgdnVyPWU9PntsZXQgdD1lLm5vZGVUeXBlPT09MTE/MDoxLHI9ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLGdjdCxudWxsLCExKTtmb3IoO3IubmV4dE5vZGUoKTspdCsrO3JldHVybiB0fSxfUD0oZSx0PS0xKT0+e2ZvcihsZXQgcj10KzE7cjxlLmxlbmd0aDtyKyspe2xldCBuPWVbcl07aWYoZ1AobikpcmV0dXJuIHJ9cmV0dXJuLTF9O2Z1bmN0aW9uIGhjZShlLHQscj1udWxsKXtsZXR7ZWxlbWVudDp7Y29udGVudDpufSxwYXJ0czppfT1lO2lmKHI9PW51bGwpe24uYXBwZW5kQ2hpbGQodCk7cmV0dXJufWxldCBvPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIobixnY3QsbnVsbCwhMSksYT1fUChpKSxzPTAsbD0tMTtmb3IoO28ubmV4dE5vZGUoKTspZm9yKGwrKyxvLmN1cnJlbnROb2RlPT09ciYmKHM9dnVyKHQpLHIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxyKSk7YSE9PS0xJiZpW2FdLmluZGV4PT09bDspe2lmKHM+MCl7Zm9yKDthIT09LTE7KWlbYV0uaW5kZXgrPXMsYT1fUChpLGEpO3JldHVybn1hPV9QKGksYSl9fXZhciB4dXI9bmV3IFdlYWtNYXA7dmFyIGExPWU9PnR5cGVvZiBlPT0iZnVuY3Rpb24iJiZ4dXIuaGFzKGUpO3ZhciBJbD17fSxGSD17fTt2YXIgdzA9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4pe3RoaXMuX19wYXJ0cz1bXSx0aGlzLnRlbXBsYXRlPXQsdGhpcy5wcm9jZXNzb3I9cix0aGlzLm9wdGlvbnM9bn11cGRhdGUodCl7bGV0IHI9MDtmb3IobGV0IG4gb2YgdGhpcy5fX3BhcnRzKW4hPT12b2lkIDAmJm4uc2V0VmFsdWUodFtyXSkscisrO2ZvcihsZXQgbiBvZiB0aGlzLl9fcGFydHMpbiE9PXZvaWQgMCYmbi5jb21taXQoKX1fY2xvbmUoKXtsZXQgdD1kY3Q/dGhpcy50ZW1wbGF0ZS5lbGVtZW50LmNvbnRlbnQuY2xvbmVOb2RlKCEwKTpkb2N1bWVudC5pbXBvcnROb2RlKHRoaXMudGVtcGxhdGUuZWxlbWVudC5jb250ZW50LCEwKSxyPVtdLG49dGhpcy50ZW1wbGF0ZS5wYXJ0cyxpPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodCwxMzMsbnVsbCwhMSksbz0wLGE9MCxzLGw9aS5uZXh0Tm9kZSgpO2Zvcig7bzxuLmxlbmd0aDspe2lmKHM9bltvXSwhZ1Aocykpe3RoaXMuX19wYXJ0cy5wdXNoKHZvaWQgMCksbysrO2NvbnRpbnVlfWZvcig7YTxzLmluZGV4OylhKyssbC5ub2RlTmFtZT09PSJURU1QTEFURSImJihyLnB1c2gobCksaS5jdXJyZW50Tm9kZT1sLmNvbnRlbnQpLChsPWkubmV4dE5vZGUoKSk9PT1udWxsJiYoaS5jdXJyZW50Tm9kZT1yLnBvcCgpLGw9aS5uZXh0Tm9kZSgpKTtpZihzLnR5cGU9PT0ibm9kZSIpe2xldCBjPXRoaXMucHJvY2Vzc29yLmhhbmRsZVRleHRFeHByZXNzaW9uKHRoaXMub3B0aW9ucyk7Yy5pbnNlcnRBZnRlck5vZGUobC5wcmV2aW91c1NpYmxpbmcpLHRoaXMuX19wYXJ0cy5wdXNoKGMpfWVsc2UgdGhpcy5fX3BhcnRzLnB1c2goLi4udGhpcy5wcm9jZXNzb3IuaGFuZGxlQXR0cmlidXRlRXhwcmVzc2lvbnMobCxzLm5hbWUscy5zdHJpbmdzLHRoaXMub3B0aW9ucykpO28rK31yZXR1cm4gZGN0JiYoZG9jdW1lbnQuYWRvcHROb2RlKHQpLGN1c3RvbUVsZW1lbnRzLnVwZ3JhZGUodCkpLHR9fTt2YXIgZmNlPXdpbmRvdy50cnVzdGVkVHlwZXMmJnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImxpdC1odG1sIix7Y3JlYXRlSFRNTDplPT5lfSksd3VyPWAgJHtHY30gYCxTMD1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbixpKXt0aGlzLnN0cmluZ3M9dCx0aGlzLnZhbHVlcz1yLHRoaXMudHlwZT1uLHRoaXMucHJvY2Vzc29yPWl9Z2V0SFRNTCgpe2xldCB0PXRoaXMuc3RyaW5ncy5sZW5ndGgtMSxyPSIiLG49ITE7Zm9yKGxldCBpPTA7aTx0O2krKyl7bGV0IG89dGhpcy5zdHJpbmdzW2ldLGE9by5sYXN0SW5kZXhPZigiPCEtLSIpO249KGE+LTF8fG4pJiZvLmluZGV4T2YoIi0tPiIsYSsxKT09PS0xO2xldCBzPXpILmV4ZWMobyk7cz09PW51bGw/cis9bysobj93dXI6bWN0KTpyKz1vLnN1YnN0cigwLHMuaW5kZXgpK3NbMV0rc1syXStwMytzWzNdK0djfXJldHVybiByKz10aGlzLnN0cmluZ3NbdF0scn1nZXRUZW1wbGF0ZUVsZW1lbnQoKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpLHI9dGhpcy5nZXRIVE1MKCk7cmV0dXJuIGZjZSE9PXZvaWQgMCYmKHI9ZmNlLmNyZWF0ZUhUTUwocikpLHQuaW5uZXJIVE1MPXIsdH19O3ZhciBWSD1lPT5lPT09bnVsbHx8ISh0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKSxCSD1lPT5BcnJheS5pc0FycmF5KGUpfHwhIShlJiZlW1N5bWJvbC5pdGVyYXRvcl0pLGQzPWNsYXNze2NvbnN0cnVjdG9yKHQscixuKXt0aGlzLmRpcnR5PSEwLHRoaXMuZWxlbWVudD10LHRoaXMubmFtZT1yLHRoaXMuc3RyaW5ncz1uLHRoaXMucGFydHM9W107Zm9yKGxldCBpPTA7aTxuLmxlbmd0aC0xO2krKyl0aGlzLnBhcnRzW2ldPXRoaXMuX2NyZWF0ZVBhcnQoKX1fY3JlYXRlUGFydCgpe3JldHVybiBuZXcgeVAodGhpcyl9X2dldFZhbHVlKCl7bGV0IHQ9dGhpcy5zdHJpbmdzLHI9dC5sZW5ndGgtMSxuPXRoaXMucGFydHM7aWYocj09PTEmJnRbMF09PT0iIiYmdFsxXT09PSIiKXtsZXQgbz1uWzBdLnZhbHVlO2lmKHR5cGVvZiBvPT0ic3ltYm9sIilyZXR1cm4gU3RyaW5nKG8pO2lmKHR5cGVvZiBvPT0ic3RyaW5nInx8IUJIKG8pKXJldHVybiBvfWxldCBpPSIiO2ZvcihsZXQgbz0wO288cjtvKyspe2krPXRbb107bGV0IGE9bltvXTtpZihhIT09dm9pZCAwKXtsZXQgcz1hLnZhbHVlO2lmKFZIKHMpfHwhQkgocykpaSs9dHlwZW9mIHM9PSJzdHJpbmciP3M6U3RyaW5nKHMpO2Vsc2UgZm9yKGxldCBsIG9mIHMpaSs9dHlwZW9mIGw9PSJzdHJpbmciP2w6U3RyaW5nKGwpfX1yZXR1cm4gaSs9dFtyXSxpfWNvbW1pdCgpe3RoaXMuZGlydHkmJih0aGlzLmRpcnR5PSExLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5uYW1lLHRoaXMuX2dldFZhbHVlKCkpKX19LHlQPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dm9pZCAwLHRoaXMuY29tbWl0dGVyPXR9c2V0VmFsdWUodCl7dCE9PUlsJiYoIVZIKHQpfHx0IT09dGhpcy52YWx1ZSkmJih0aGlzLnZhbHVlPXQsYTEodCl8fCh0aGlzLmNvbW1pdHRlci5kaXJ0eT0hMCkpfWNvbW1pdCgpe2Zvcig7YTEodGhpcy52YWx1ZSk7KXtsZXQgdD10aGlzLnZhbHVlO3RoaXMudmFsdWU9SWwsdCh0aGlzKX10aGlzLnZhbHVlIT09SWwmJnRoaXMuY29tbWl0dGVyLmNvbW1pdCgpfX0sQmQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZT12b2lkIDAsdGhpcy5fX3BlbmRpbmdWYWx1ZT12b2lkIDAsdGhpcy5vcHRpb25zPXR9YXBwZW5kSW50byh0KXt0aGlzLnN0YXJ0Tm9kZT10LmFwcGVuZENoaWxkKFdmKCkpLHRoaXMuZW5kTm9kZT10LmFwcGVuZENoaWxkKFdmKCkpfWluc2VydEFmdGVyTm9kZSh0KXt0aGlzLnN0YXJ0Tm9kZT10LHRoaXMuZW5kTm9kZT10Lm5leHRTaWJsaW5nfWFwcGVuZEludG9QYXJ0KHQpe3QuX19pbnNlcnQodGhpcy5zdGFydE5vZGU9V2YoKSksdC5fX2luc2VydCh0aGlzLmVuZE5vZGU9V2YoKSl9aW5zZXJ0QWZ0ZXJQYXJ0KHQpe3QuX19pbnNlcnQodGhpcy5zdGFydE5vZGU9V2YoKSksdGhpcy5lbmROb2RlPXQuZW5kTm9kZSx0LmVuZE5vZGU9dGhpcy5zdGFydE5vZGV9c2V0VmFsdWUodCl7dGhpcy5fX3BlbmRpbmdWYWx1ZT10fWNvbW1pdCgpe2lmKHRoaXMuc3RhcnROb2RlLnBhcmVudE5vZGU9PT1udWxsKXJldHVybjtmb3IoO2ExKHRoaXMuX19wZW5kaW5nVmFsdWUpOyl7bGV0IHI9dGhpcy5fX3BlbmRpbmdWYWx1ZTt0aGlzLl9fcGVuZGluZ1ZhbHVlPUlsLHIodGhpcyl9bGV0IHQ9dGhpcy5fX3BlbmRpbmdWYWx1ZTt0IT09SWwmJihWSCh0KT90IT09dGhpcy52YWx1ZSYmdGhpcy5fX2NvbW1pdFRleHQodCk6dCBpbnN0YW5jZW9mIFMwP3RoaXMuX19jb21taXRUZW1wbGF0ZVJlc3VsdCh0KTp0IGluc3RhbmNlb2YgTm9kZT90aGlzLl9fY29tbWl0Tm9kZSh0KTpCSCh0KT90aGlzLl9fY29tbWl0SXRlcmFibGUodCk6dD09PUZIPyh0aGlzLnZhbHVlPUZILHRoaXMuY2xlYXIoKSk6dGhpcy5fX2NvbW1pdFRleHQodCkpfV9faW5zZXJ0KHQpe3RoaXMuZW5kTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHRoaXMuZW5kTm9kZSl9X19jb21taXROb2RlKHQpe3RoaXMudmFsdWUhPT10JiYodGhpcy5jbGVhcigpLHRoaXMuX19pbnNlcnQodCksdGhpcy52YWx1ZT10KX1fX2NvbW1pdFRleHQodCl7bGV0IHI9dGhpcy5zdGFydE5vZGUubmV4dFNpYmxpbmc7dD10PT1udWxsPyIiOnQ7bGV0IG49dHlwZW9mIHQ9PSJzdHJpbmciP3Q6U3RyaW5nKHQpO3I9PT10aGlzLmVuZE5vZGUucHJldmlvdXNTaWJsaW5nJiZyLm5vZGVUeXBlPT09Mz9yLmRhdGE9bjp0aGlzLl9fY29tbWl0Tm9kZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSksdGhpcy52YWx1ZT10fV9fY29tbWl0VGVtcGxhdGVSZXN1bHQodCl7bGV0IHI9dGhpcy5vcHRpb25zLnRlbXBsYXRlRmFjdG9yeSh0KTtpZih0aGlzLnZhbHVlIGluc3RhbmNlb2YgdzAmJnRoaXMudmFsdWUudGVtcGxhdGU9PT1yKXRoaXMudmFsdWUudXBkYXRlKHQudmFsdWVzKTtlbHNle2xldCBuPW5ldyB3MChyLHQucHJvY2Vzc29yLHRoaXMub3B0aW9ucyksaT1uLl9jbG9uZSgpO24udXBkYXRlKHQudmFsdWVzKSx0aGlzLl9fY29tbWl0Tm9kZShpKSx0aGlzLnZhbHVlPW59fV9fY29tbWl0SXRlcmFibGUodCl7QXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKXx8KHRoaXMudmFsdWU9W10sdGhpcy5jbGVhcigpKTtsZXQgcj10aGlzLnZhbHVlLG49MCxpO2ZvcihsZXQgbyBvZiB0KWk9cltuXSxpPT09dm9pZCAwJiYoaT1uZXcgQmQodGhpcy5vcHRpb25zKSxyLnB1c2goaSksbj09PTA/aS5hcHBlbmRJbnRvUGFydCh0aGlzKTppLmluc2VydEFmdGVyUGFydChyW24tMV0pKSxpLnNldFZhbHVlKG8pLGkuY29tbWl0KCksbisrO248ci5sZW5ndGgmJihyLmxlbmd0aD1uLHRoaXMuY2xlYXIoaSYmaS5lbmROb2RlKSl9Y2xlYXIodD10aGlzLnN0YXJ0Tm9kZSl7aTEodGhpcy5zdGFydE5vZGUucGFyZW50Tm9kZSx0Lm5leHRTaWJsaW5nLHRoaXMuZW5kTm9kZSl9fSx2UD1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbil7aWYodGhpcy52YWx1ZT12b2lkIDAsdGhpcy5fX3BlbmRpbmdWYWx1ZT12b2lkIDAsbi5sZW5ndGghPT0yfHxuWzBdIT09IiJ8fG5bMV0hPT0iIil0aHJvdyBuZXcgRXJyb3IoIkJvb2xlYW4gYXR0cmlidXRlcyBjYW4gb25seSBjb250YWluIGEgc2luZ2xlIGV4cHJlc3Npb24iKTt0aGlzLmVsZW1lbnQ9dCx0aGlzLm5hbWU9cix0aGlzLnN0cmluZ3M9bn1zZXRWYWx1ZSh0KXt0aGlzLl9fcGVuZGluZ1ZhbHVlPXR9Y29tbWl0KCl7Zm9yKDthMSh0aGlzLl9fcGVuZGluZ1ZhbHVlKTspe2xldCByPXRoaXMuX19wZW5kaW5nVmFsdWU7dGhpcy5fX3BlbmRpbmdWYWx1ZT1JbCxyKHRoaXMpfWlmKHRoaXMuX19wZW5kaW5nVmFsdWU9PT1JbClyZXR1cm47bGV0IHQ9ISF0aGlzLl9fcGVuZGluZ1ZhbHVlO3RoaXMudmFsdWUhPT10JiYodD90aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMubmFtZSwiIik6dGhpcy5lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLm5hbWUpLHRoaXMudmFsdWU9dCksdGhpcy5fX3BlbmRpbmdWYWx1ZT1JbH19LHhQPWNsYXNzIGV4dGVuZHMgZDN7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKHQscixuKSx0aGlzLnNpbmdsZT1uLmxlbmd0aD09PTImJm5bMF09PT0iIiYmblsxXT09PSIifV9jcmVhdGVQYXJ0KCl7cmV0dXJuIG5ldyBISCh0aGlzKX1fZ2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5zaW5nbGU/dGhpcy5wYXJ0c1swXS52YWx1ZTpzdXBlci5fZ2V0VmFsdWUoKX1jb21taXQoKXt0aGlzLmRpcnR5JiYodGhpcy5kaXJ0eT0hMSx0aGlzLmVsZW1lbnRbdGhpcy5uYW1lXT10aGlzLl9nZXRWYWx1ZSgpKX19LEhIPWNsYXNzIGV4dGVuZHMgeVB7fSxwY2U9ITE7KCgpPT57dHJ5e2xldCBlPXtnZXQgY2FwdHVyZSgpe3JldHVybiBwY2U9ITAsITF9fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsZSxlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsZSxlKX1jYXRjaChlKXt9fSkoKTt2YXIgYlA9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4pe3RoaXMudmFsdWU9dm9pZCAwLHRoaXMuX19wZW5kaW5nVmFsdWU9dm9pZCAwLHRoaXMuZWxlbWVudD10LHRoaXMuZXZlbnROYW1lPXIsdGhpcy5ldmVudENvbnRleHQ9bix0aGlzLl9fYm91bmRIYW5kbGVFdmVudD1pPT50aGlzLmhhbmRsZUV2ZW50KGkpfXNldFZhbHVlKHQpe3RoaXMuX19wZW5kaW5nVmFsdWU9dH1jb21taXQoKXtmb3IoO2ExKHRoaXMuX19wZW5kaW5nVmFsdWUpOyl7bGV0IG89dGhpcy5fX3BlbmRpbmdWYWx1ZTt0aGlzLl9fcGVuZGluZ1ZhbHVlPUlsLG8odGhpcyl9aWYodGhpcy5fX3BlbmRpbmdWYWx1ZT09PUlsKXJldHVybjtsZXQgdD10aGlzLl9fcGVuZGluZ1ZhbHVlLHI9dGhpcy52YWx1ZSxuPXQ9PW51bGx8fHIhPW51bGwmJih0LmNhcHR1cmUhPT1yLmNhcHR1cmV8fHQub25jZSE9PXIub25jZXx8dC5wYXNzaXZlIT09ci5wYXNzaXZlKSxpPXQhPW51bGwmJihyPT1udWxsfHxuKTtuJiZ0aGlzLmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLmV2ZW50TmFtZSx0aGlzLl9fYm91bmRIYW5kbGVFdmVudCx0aGlzLl9fb3B0aW9ucyksaSYmKHRoaXMuX19vcHRpb25zPVN1cih0KSx0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmV2ZW50TmFtZSx0aGlzLl9fYm91bmRIYW5kbGVFdmVudCx0aGlzLl9fb3B0aW9ucykpLHRoaXMudmFsdWU9dCx0aGlzLl9fcGVuZGluZ1ZhbHVlPUlsfWhhbmRsZUV2ZW50KHQpe3R5cGVvZiB0aGlzLnZhbHVlPT0iZnVuY3Rpb24iP3RoaXMudmFsdWUuY2FsbCh0aGlzLmV2ZW50Q29udGV4dHx8dGhpcy5lbGVtZW50LHQpOnRoaXMudmFsdWUuaGFuZGxlRXZlbnQodCl9fSxTdXI9ZT0+ZSYmKHBjZT97Y2FwdHVyZTplLmNhcHR1cmUscGFzc2l2ZTplLnBhc3NpdmUsb25jZTplLm9uY2V9OmUuY2FwdHVyZSk7ZnVuY3Rpb24geWN0KGUpe2xldCB0PXMxLmdldChlLnR5cGUpO3Q9PT12b2lkIDAmJih0PXtzdHJpbmdzQXJyYXk6bmV3IFdlYWtNYXAsa2V5U3RyaW5nOm5ldyBNYXB9LHMxLnNldChlLnR5cGUsdCkpO2xldCByPXQuc3RyaW5nc0FycmF5LmdldChlLnN0cmluZ3MpO2lmKHIhPT12b2lkIDApcmV0dXJuIHI7bGV0IG49ZS5zdHJpbmdzLmpvaW4oR2MpO3JldHVybiByPXQua2V5U3RyaW5nLmdldChuKSxyPT09dm9pZCAwJiYocj1uZXcgbzEoZSxlLmdldFRlbXBsYXRlRWxlbWVudCgpKSx0LmtleVN0cmluZy5zZXQobixyKSksdC5zdHJpbmdzQXJyYXkuc2V0KGUuc3RyaW5ncyxyKSxyfXZhciBzMT1uZXcgTWFwO3ZhciBNMD1uZXcgV2Vha01hcCx2Y3Q9KGUsdCxyKT0+e2xldCBuPU0wLmdldCh0KTtuPT09dm9pZCAwJiYoaTEodCx0LmZpcnN0Q2hpbGQpLE0wLnNldCh0LG49bmV3IEJkKE9iamVjdC5hc3NpZ24oe3RlbXBsYXRlRmFjdG9yeTp5Y3R9LHIpKSksbi5hcHBlbmRJbnRvKHQpKSxuLnNldFZhbHVlKGUpLG4uY29tbWl0KCl9O3ZhciBVSD1jbGFzc3toYW5kbGVBdHRyaWJ1dGVFeHByZXNzaW9ucyh0LHIsbixpKXtsZXQgbz1yWzBdO3JldHVybiBvPT09Ii4iP25ldyB4UCh0LHIuc2xpY2UoMSksbikucGFydHM6bz09PSJAIj9bbmV3IGJQKHQsci5zbGljZSgxKSxpLmV2ZW50Q29udGV4dCldOm89PT0iPyI/W25ldyB2UCh0LHIuc2xpY2UoMSksbildOm5ldyBkMyh0LHIsbikucGFydHN9aGFuZGxlVGV4dEV4cHJlc3Npb24odCl7cmV0dXJuIG5ldyBCZCh0KX19LGRjZT1uZXcgVUg7dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJih3aW5kb3cubGl0SHRtbFZlcnNpb25zfHwod2luZG93LmxpdEh0bWxWZXJzaW9ucz1bXSkpLnB1c2goIjEuNC4xIik7dmFyIGdjZT0oZSx0KT0+YCR7ZX0tLSR7dH1gLHFIPSEwO3R5cGVvZiB3aW5kb3cuU2hhZHlDU1M9PSJ1bmRlZmluZWQiP3FIPSExOnR5cGVvZiB3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlRG9tPT0idW5kZWZpbmVkIiYmKGNvbnNvbGUud2FybigiSW5jb21wYXRpYmxlIFNoYWR5Q1NTIHZlcnNpb24gZGV0ZWN0ZWQuIFBsZWFzZSB1cGRhdGUgdG8gYXQgbGVhc3QgQHdlYmNvbXBvbmVudHMvd2ViY29tcG9uZW50c2pzQDIuMC4yIGFuZCBAd2ViY29tcG9uZW50cy9zaGFkeWNzc0AxLjMuMS4iKSxxSD0hMSk7dmFyIFR1cj1lPT50PT57bGV0IHI9Z2NlKHQudHlwZSxlKSxuPXMxLmdldChyKTtuPT09dm9pZCAwJiYobj17c3RyaW5nc0FycmF5Om5ldyBXZWFrTWFwLGtleVN0cmluZzpuZXcgTWFwfSxzMS5zZXQocixuKSk7bGV0IGk9bi5zdHJpbmdzQXJyYXkuZ2V0KHQuc3RyaW5ncyk7aWYoaSE9PXZvaWQgMClyZXR1cm4gaTtsZXQgbz10LnN0cmluZ3Muam9pbihHYyk7aWYoaT1uLmtleVN0cmluZy5nZXQobyksaT09PXZvaWQgMCl7bGV0IGE9dC5nZXRUZW1wbGF0ZUVsZW1lbnQoKTtxSCYmd2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZURvbShhLGUpLGk9bmV3IG8xKHQsYSksbi5rZXlTdHJpbmcuc2V0KG8saSl9cmV0dXJuIG4uc3RyaW5nc0FycmF5LnNldCh0LnN0cmluZ3MsaSksaX0sQ3VyPVsiaHRtbCIsInN2ZyJdLEF1cj1lPT57Q3VyLmZvckVhY2godD0+e2xldCByPXMxLmdldChnY2UodCxlKSk7ciE9PXZvaWQgMCYmci5rZXlTdHJpbmcuZm9yRWFjaChuPT57bGV0e2VsZW1lbnQ6e2NvbnRlbnQ6aX19PW4sbz1uZXcgU2V0O0FycmF5LmZyb20oaS5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpKS5mb3JFYWNoKGE9PntvLmFkZChhKX0pLF9jdChuLG8pfSl9KX0sX2NlPW5ldyBTZXQsUHVyPShlLHQscik9PntfY2UuYWRkKGUpO2xldCBuPXI/ci5lbGVtZW50OmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIiksaT10LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikse2xlbmd0aDpvfT1pO2lmKG89PT0wKXt3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlU3R5bGVzKG4sZSk7cmV0dXJufWxldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Zm9yKGxldCBjPTA7YzxvO2MrKyl7bGV0IHU9aVtjXTt1LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodSksYS50ZXh0Q29udGVudCs9dS50ZXh0Q29udGVudH1BdXIoZSk7bGV0IHM9bi5jb250ZW50O3I/aGNlKHIsYSxzLmZpcnN0Q2hpbGQpOnMuaW5zZXJ0QmVmb3JlKGEscy5maXJzdENoaWxkKSx3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlU3R5bGVzKG4sZSk7bGV0IGw9cy5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpO2lmKHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cmJmwhPT1udWxsKXQuaW5zZXJ0QmVmb3JlKGwuY2xvbmVOb2RlKCEwKSx0LmZpcnN0Q2hpbGQpO2Vsc2UgaWYocil7cy5pbnNlcnRCZWZvcmUoYSxzLmZpcnN0Q2hpbGQpO2xldCBjPW5ldyBTZXQ7Yy5hZGQoYSksX2N0KHIsYyl9fSx5Y2U9KGUsdCxyKT0+e2lmKCFyfHx0eXBlb2YgciE9Im9iamVjdCJ8fCFyLnNjb3BlTmFtZSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBgc2NvcGVOYW1lYCBvcHRpb24gaXMgcmVxdWlyZWQuIik7bGV0IG49ci5zY29wZU5hbWUsaT1NMC5oYXModCksbz1xSCYmdC5ub2RlVHlwZT09PTExJiYhIXQuaG9zdCxhPW8mJiFfY2UuaGFzKG4pLHM9YT9kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk6dDtpZih2Y3QoZSxzLE9iamVjdC5hc3NpZ24oe3RlbXBsYXRlRmFjdG9yeTpUdXIobil9LHIpKSxhKXtsZXQgbD1NMC5nZXQocyk7TTAuZGVsZXRlKHMpO2xldCBjPWwudmFsdWUgaW5zdGFuY2VvZiB3MD9sLnZhbHVlLnRlbXBsYXRlOnZvaWQgMDtQdXIobixzLGMpLGkxKHQsdC5maXJzdENoaWxkKSx0LmFwcGVuZENoaWxkKHMpLE0wLnNldCh0LGwpfSFpJiZvJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHQuaG9zdCl9O3ZhciB2Y2U7d2luZG93LkpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHk9KGUsdCk9PmU7dmFyIEVjdD17dG9BdHRyaWJ1dGUoZSx0KXtzd2l0Y2godCl7Y2FzZSBCb29sZWFuOnJldHVybiBlPyIiOm51bGw7Y2FzZSBPYmplY3Q6Y2FzZSBBcnJheTpyZXR1cm4gZT09bnVsbD9lOkpTT04uc3RyaW5naWZ5KGUpfXJldHVybiBlfSxmcm9tQXR0cmlidXRlKGUsdCl7c3dpdGNoKHQpe2Nhc2UgQm9vbGVhbjpyZXR1cm4gZSE9PW51bGw7Y2FzZSBOdW1iZXI6cmV0dXJuIGU9PT1udWxsP251bGw6TnVtYmVyKGUpO2Nhc2UgT2JqZWN0OmNhc2UgQXJyYXk6cmV0dXJuIEpTT04ucGFyc2UoZSl9cmV0dXJuIGV9fSx4Y2U9KGUsdCk9PnQhPT1lJiYodD09PXR8fGU9PT1lKSx4Y3Q9e2F0dHJpYnV0ZTohMCx0eXBlOlN0cmluZyxjb252ZXJ0ZXI6RWN0LHJlZmxlY3Q6ITEsaGFzQ2hhbmdlZDp4Y2V9LGJjdD0xLHdjdD0xPDwyLFNjdD0xPDwzLE1jdD0xPDw0LFRjdD0iZmluYWxpemVkIixtMz1jbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLmluaXRpYWxpemUoKX1zdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3RoaXMuZmluYWxpemUoKTtsZXQgdD1bXTtyZXR1cm4gdGhpcy5fY2xhc3NQcm9wZXJ0aWVzLmZvckVhY2goKHIsbik9PntsZXQgaT10aGlzLl9hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkobixyKTtpIT09dm9pZCAwJiYodGhpcy5fYXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5zZXQoaSxuKSx0LnB1c2goaSkpfSksdH1zdGF0aWMgX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9jbGFzc1Byb3BlcnRpZXMiLHRoaXMpKSl7dGhpcy5fY2xhc3NQcm9wZXJ0aWVzPW5ldyBNYXA7bGV0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9jbGFzc1Byb3BlcnRpZXM7dCE9PXZvaWQgMCYmdC5mb3JFYWNoKChyLG4pPT50aGlzLl9jbGFzc1Byb3BlcnRpZXMuc2V0KG4scikpfX1zdGF0aWMgY3JlYXRlUHJvcGVydHkodCxyPXhjdCl7aWYodGhpcy5fZW5zdXJlQ2xhc3NQcm9wZXJ0aWVzKCksdGhpcy5fY2xhc3NQcm9wZXJ0aWVzLnNldCh0LHIpLHIubm9BY2Nlc3Nvcnx8dGhpcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuO2xldCBuPXR5cGVvZiB0PT0ic3ltYm9sIj9TeW1ib2woKTpgX18ke3R9YCxpPXRoaXMuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQsbixyKTtpIT09dm9pZCAwJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wcm90b3R5cGUsdCxpKX1zdGF0aWMgZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHQscixuKXtyZXR1cm57Z2V0KCl7cmV0dXJuIHRoaXNbcl19LHNldChpKXtsZXQgbz10aGlzW3RdO3RoaXNbcl09aSx0aGlzLnJlcXVlc3RVcGRhdGVJbnRlcm5hbCh0LG8sbil9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfX1zdGF0aWMgZ2V0UHJvcGVydHlPcHRpb25zKHQpe3JldHVybiB0aGlzLl9jbGFzc1Byb3BlcnRpZXMmJnRoaXMuX2NsYXNzUHJvcGVydGllcy5nZXQodCl8fHhjdH1zdGF0aWMgZmluYWxpemUoKXtsZXQgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYodC5oYXNPd25Qcm9wZXJ0eShUY3QpfHx0LmZpbmFsaXplKCksdGhpc1tUY3RdPSEwLHRoaXMuX2Vuc3VyZUNsYXNzUHJvcGVydGllcygpLHRoaXMuX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXA9bmV3IE1hcCx0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInByb3BlcnRpZXMiLHRoaXMpKSl7bGV0IHI9dGhpcy5wcm9wZXJ0aWVzLG49Wy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpLC4uLnR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzPT0iZnVuY3Rpb24iP09iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocik6W11dO2ZvcihsZXQgaSBvZiBuKXRoaXMuY3JlYXRlUHJvcGVydHkoaSxyW2ldKX19c3RhdGljIF9hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCxyKXtsZXQgbj1yLmF0dHJpYnV0ZTtyZXR1cm4gbj09PSExP3ZvaWQgMDp0eXBlb2Ygbj09InN0cmluZyI/bjp0eXBlb2YgdD09InN0cmluZyI/dC50b0xvd2VyQ2FzZSgpOnZvaWQgMH1zdGF0aWMgX3ZhbHVlSGFzQ2hhbmdlZCh0LHIsbj14Y2Upe3JldHVybiBuKHQscil9c3RhdGljIF9wcm9wZXJ0eVZhbHVlRnJvbUF0dHJpYnV0ZSh0LHIpe2xldCBuPXIudHlwZSxpPXIuY29udmVydGVyfHxFY3Qsbz10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOmkuZnJvbUF0dHJpYnV0ZTtyZXR1cm4gbz9vKHQsbik6dH1zdGF0aWMgX3Byb3BlcnR5VmFsdWVUb0F0dHJpYnV0ZSh0LHIpe2lmKHIucmVmbGVjdD09PXZvaWQgMClyZXR1cm47bGV0IG49ci50eXBlLGk9ci5jb252ZXJ0ZXI7cmV0dXJuKGkmJmkudG9BdHRyaWJ1dGV8fEVjdC50b0F0dHJpYnV0ZSkodCxuKX1pbml0aWFsaXplKCl7dGhpcy5fdXBkYXRlU3RhdGU9MCx0aGlzLl91cGRhdGVQcm9taXNlPW5ldyBQcm9taXNlKHQ9PnRoaXMuX2VuYWJsZVVwZGF0aW5nUmVzb2x2ZXI9dCksdGhpcy5fY2hhbmdlZFByb3BlcnRpZXM9bmV3IE1hcCx0aGlzLl9zYXZlSW5zdGFuY2VQcm9wZXJ0aWVzKCksdGhpcy5yZXF1ZXN0VXBkYXRlSW50ZXJuYWwoKX1fc2F2ZUluc3RhbmNlUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuX2NsYXNzUHJvcGVydGllcy5mb3JFYWNoKCh0LHIpPT57aWYodGhpcy5oYXNPd25Qcm9wZXJ0eShyKSl7bGV0IG49dGhpc1tyXTtkZWxldGUgdGhpc1tyXSx0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXN8fCh0aGlzLl9pbnN0YW5jZVByb3BlcnRpZXM9bmV3IE1hcCksdGhpcy5faW5zdGFuY2VQcm9wZXJ0aWVzLnNldChyLG4pfX0pfV9hcHBseUluc3RhbmNlUHJvcGVydGllcygpe3RoaXMuX2luc3RhbmNlUHJvcGVydGllcy5mb3JFYWNoKCh0LHIpPT50aGlzW3JdPXQpLHRoaXMuX2luc3RhbmNlUHJvcGVydGllcz12b2lkIDB9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLmVuYWJsZVVwZGF0aW5nKCl9ZW5hYmxlVXBkYXRpbmcoKXt0aGlzLl9lbmFibGVVcGRhdGluZ1Jlc29sdmVyIT09dm9pZCAwJiYodGhpcy5fZW5hYmxlVXBkYXRpbmdSZXNvbHZlcigpLHRoaXMuX2VuYWJsZVVwZGF0aW5nUmVzb2x2ZXI9dm9pZCAwKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe31hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxyLG4pe3IhPT1uJiZ0aGlzLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsbil9X3Byb3BlcnR5VG9BdHRyaWJ1dGUodCxyLG49eGN0KXtsZXQgaT10aGlzLmNvbnN0cnVjdG9yLG89aS5fYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQsbik7aWYobyE9PXZvaWQgMCl7bGV0IGE9aS5fcHJvcGVydHlWYWx1ZVRvQXR0cmlidXRlKHIsbik7aWYoYT09PXZvaWQgMClyZXR1cm47dGhpcy5fdXBkYXRlU3RhdGU9dGhpcy5fdXBkYXRlU3RhdGV8U2N0LGE9PW51bGw/dGhpcy5yZW1vdmVBdHRyaWJ1dGUobyk6dGhpcy5zZXRBdHRyaWJ1dGUobyxhKSx0aGlzLl91cGRhdGVTdGF0ZT10aGlzLl91cGRhdGVTdGF0ZSZ+U2N0fX1fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LHIpe2lmKHRoaXMuX3VwZGF0ZVN0YXRlJlNjdClyZXR1cm47bGV0IG49dGhpcy5jb25zdHJ1Y3RvcixpPW4uX2F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuZ2V0KHQpO2lmKGkhPT12b2lkIDApe2xldCBvPW4uZ2V0UHJvcGVydHlPcHRpb25zKGkpO3RoaXMuX3VwZGF0ZVN0YXRlPXRoaXMuX3VwZGF0ZVN0YXRlfE1jdCx0aGlzW2ldPW4uX3Byb3BlcnR5VmFsdWVGcm9tQXR0cmlidXRlKHIsbyksdGhpcy5fdXBkYXRlU3RhdGU9dGhpcy5fdXBkYXRlU3RhdGUmfk1jdH19cmVxdWVzdFVwZGF0ZUludGVybmFsKHQscixuKXtsZXQgaT0hMDtpZih0IT09dm9pZCAwKXtsZXQgbz10aGlzLmNvbnN0cnVjdG9yO249bnx8by5nZXRQcm9wZXJ0eU9wdGlvbnModCksby5fdmFsdWVIYXNDaGFuZ2VkKHRoaXNbdF0scixuLmhhc0NoYW5nZWQpPyh0aGlzLl9jaGFuZ2VkUHJvcGVydGllcy5oYXModCl8fHRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzLnNldCh0LHIpLG4ucmVmbGVjdD09PSEwJiYhKHRoaXMuX3VwZGF0ZVN0YXRlJk1jdCkmJih0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcz09PXZvaWQgMCYmKHRoaXMuX3JlZmxlY3RpbmdQcm9wZXJ0aWVzPW5ldyBNYXApLHRoaXMuX3JlZmxlY3RpbmdQcm9wZXJ0aWVzLnNldCh0LG4pKSk6aT0hMX0hdGhpcy5faGFzUmVxdWVzdGVkVXBkYXRlJiZpJiYodGhpcy5fdXBkYXRlUHJvbWlzZT10aGlzLl9lbnF1ZXVlVXBkYXRlKCkpfXJlcXVlc3RVcGRhdGUodCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0VXBkYXRlSW50ZXJuYWwodCxyKSx0aGlzLnVwZGF0ZUNvbXBsZXRlfV9lbnF1ZXVlVXBkYXRlKCl7cmV0dXJuIGZwKHRoaXMsbnVsbCxmdW5jdGlvbiooKXt0aGlzLl91cGRhdGVTdGF0ZT10aGlzLl91cGRhdGVTdGF0ZXx3Y3Q7dHJ5e3lpZWxkIHRoaXMuX3VwZGF0ZVByb21pc2V9Y2F0Y2gocil7fWxldCB0PXRoaXMucGVyZm9ybVVwZGF0ZSgpO3JldHVybiB0IT1udWxsJiYoeWllbGQgdCksIXRoaXMuX2hhc1JlcXVlc3RlZFVwZGF0ZX0pfWdldCBfaGFzUmVxdWVzdGVkVXBkYXRlKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZVN0YXRlJndjdH1nZXQgaGFzVXBkYXRlZCgpe3JldHVybiB0aGlzLl91cGRhdGVTdGF0ZSZiY3R9cGVyZm9ybVVwZGF0ZSgpe2lmKCF0aGlzLl9oYXNSZXF1ZXN0ZWRVcGRhdGUpcmV0dXJuO3RoaXMuX2luc3RhbmNlUHJvcGVydGllcyYmdGhpcy5fYXBwbHlJbnN0YW5jZVByb3BlcnRpZXMoKTtsZXQgdD0hMSxyPXRoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzO3RyeXt0PXRoaXMuc2hvdWxkVXBkYXRlKHIpLHQ/dGhpcy51cGRhdGUocik6dGhpcy5fbWFya1VwZGF0ZWQoKX1jYXRjaChuKXt0aHJvdyB0PSExLHRoaXMuX21hcmtVcGRhdGVkKCksbn10JiYodGhpcy5fdXBkYXRlU3RhdGUmYmN0fHwodGhpcy5fdXBkYXRlU3RhdGU9dGhpcy5fdXBkYXRlU3RhdGV8YmN0LHRoaXMuZmlyc3RVcGRhdGVkKHIpKSx0aGlzLnVwZGF0ZWQocikpfV9tYXJrVXBkYXRlZCgpe3RoaXMuX2NoYW5nZWRQcm9wZXJ0aWVzPW5ldyBNYXAsdGhpcy5fdXBkYXRlU3RhdGU9dGhpcy5fdXBkYXRlU3RhdGUmfndjdH1nZXQgdXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5fZ2V0VXBkYXRlQ29tcGxldGUoKX1fZ2V0VXBkYXRlQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5nZXRVcGRhdGVDb21wbGV0ZSgpfWdldFVwZGF0ZUNvbXBsZXRlKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZVByb21pc2V9c2hvdWxkVXBkYXRlKHQpe3JldHVybiEwfXVwZGF0ZSh0KXt0aGlzLl9yZWZsZWN0aW5nUHJvcGVydGllcyE9PXZvaWQgMCYmdGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuc2l6ZT4wJiYodGhpcy5fcmVmbGVjdGluZ1Byb3BlcnRpZXMuZm9yRWFjaCgocixuKT0+dGhpcy5fcHJvcGVydHlUb0F0dHJpYnV0ZShuLHRoaXNbbl0scikpLHRoaXMuX3JlZmxlY3RpbmdQcm9wZXJ0aWVzPXZvaWQgMCksdGhpcy5fbWFya1VwZGF0ZWQoKX11cGRhdGVkKHQpe31maXJzdFVwZGF0ZWQodCl7fX07dmNlPVRjdDttM1t2Y2VdPSEwO3ZhciBiY2U9RWxlbWVudC5wcm90b3R5cGUsb2lpPWJjZS5tc01hdGNoZXNTZWxlY3Rvcnx8YmNlLndlYmtpdE1hdGNoZXNTZWxlY3Rvcjt2YXIgR0g9d2luZG93LlNoYWRvd1Jvb3QmJih3aW5kb3cuU2hhZHlDU1M9PT12b2lkIDB8fHdpbmRvdy5TaGFkeUNTUy5uYXRpdmVTaGFkb3cpJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2UiaW4gQ1NTU3R5bGVTaGVldC5wcm90b3R5cGUsQ2N0PVN5bWJvbCgpLGwxPWNsYXNze2NvbnN0cnVjdG9yKHQscil7aWYociE9PUNjdCl0aHJvdyBuZXcgRXJyb3IoIkNTU1Jlc3VsdCBpcyBub3QgY29uc3RydWN0YWJsZS4gVXNlIGB1bnNhZmVDU1NgIG9yIGBjc3NgIGluc3RlYWQuIik7dGhpcy5jc3NUZXh0PXR9Z2V0IHN0eWxlU2hlZXQoKXtyZXR1cm4gdGhpcy5fc3R5bGVTaGVldD09PXZvaWQgMCYmKEdIPyh0aGlzLl9zdHlsZVNoZWV0PW5ldyBDU1NTdHlsZVNoZWV0LHRoaXMuX3N0eWxlU2hlZXQucmVwbGFjZVN5bmModGhpcy5jc3NUZXh0KSk6dGhpcy5fc3R5bGVTaGVldD1udWxsKSx0aGlzLl9zdHlsZVNoZWV0fXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuY3NzVGV4dH19LEFjdD1lPT5uZXcgbDEoU3RyaW5nKGUpLENjdCksSXVyPWU9PntpZihlIGluc3RhbmNlb2YgbDEpcmV0dXJuIGUuY3NzVGV4dDtpZih0eXBlb2YgZT09Im51bWJlciIpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBwYXNzZWQgdG8gJ2NzcycgZnVuY3Rpb24gbXVzdCBiZSBhICdjc3MnIGZ1bmN0aW9uIHJlc3VsdDogJHtlfS4gVXNlICd1bnNhZmVDU1MnIHRvIHBhc3Mgbm9uLWxpdGVyYWwgdmFsdWVzLCBidXQKICAgICAgICAgICAgdGFrZSBjYXJlIHRvIGVuc3VyZSBwYWdlIHNlY3VyaXR5LmApfSxDaT0oZSwuLi50KT0+e2xldCByPXQucmVkdWNlKChuLGksbyk9Pm4rSXVyKGkpK2VbbysxXSxlWzBdKTtyZXR1cm4gbmV3IGwxKHIsQ2N0KX07KHdpbmRvdy5saXRFbGVtZW50VmVyc2lvbnN8fCh3aW5kb3cubGl0RWxlbWVudFZlcnNpb25zPVtdKSkucHVzaCgiMi41LjEiKTt2YXIgd2NlPXt9LHdQPWNsYXNzIGV4dGVuZHMgbTN7c3RhdGljIGdldFN0eWxlcygpe3JldHVybiB0aGlzLnN0eWxlc31zdGF0aWMgX2dldFVuaXF1ZVN0eWxlcygpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX3N0eWxlcyIsdGhpcykpKXJldHVybjtsZXQgdD10aGlzLmdldFN0eWxlcygpO2lmKEFycmF5LmlzQXJyYXkodCkpe2xldCByPShvLGEpPT5vLnJlZHVjZVJpZ2h0KChzLGwpPT5BcnJheS5pc0FycmF5KGwpP3IobCxzKToocy5hZGQobCkscyksYSksbj1yKHQsbmV3IFNldCksaT1bXTtuLmZvckVhY2gobz0+aS51bnNoaWZ0KG8pKSx0aGlzLl9zdHlsZXM9aX1lbHNlIHRoaXMuX3N0eWxlcz10PT09dm9pZCAwP1tdOlt0XTt0aGlzLl9zdHlsZXM9dGhpcy5fc3R5bGVzLm1hcChyPT57aWYociBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQmJiFHSCl7bGV0IG49QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoci5jc3NSdWxlcykucmVkdWNlKChpLG8pPT5pK28uY3NzVGV4dCwiIik7cmV0dXJuIEFjdChuKX1yZXR1cm4gcn0pfWluaXRpYWxpemUoKXtzdXBlci5pbml0aWFsaXplKCksdGhpcy5jb25zdHJ1Y3Rvci5fZ2V0VW5pcXVlU3R5bGVzKCksdGhpcy5yZW5kZXJSb290PXRoaXMuY3JlYXRlUmVuZGVyUm9vdCgpLHdpbmRvdy5TaGFkb3dSb290JiZ0aGlzLnJlbmRlclJvb3QgaW5zdGFuY2VvZiB3aW5kb3cuU2hhZG93Um9vdCYmdGhpcy5hZG9wdFN0eWxlcygpfWNyZWF0ZVJlbmRlclJvb3QoKXtyZXR1cm4gdGhpcy5hdHRhY2hTaGFkb3codGhpcy5jb25zdHJ1Y3Rvci5zaGFkb3dSb290T3B0aW9ucyl9YWRvcHRTdHlsZXMoKXtsZXQgdD10aGlzLmNvbnN0cnVjdG9yLl9zdHlsZXM7dC5sZW5ndGghPT0wJiYod2luZG93LlNoYWR5Q1NTIT09dm9pZCAwJiYhd2luZG93LlNoYWR5Q1NTLm5hdGl2ZVNoYWRvdz93aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0ucHJlcGFyZUFkb3B0ZWRDc3NUZXh0KHQubWFwKHI9PnIuY3NzVGV4dCksdGhpcy5sb2NhbE5hbWUpOkdIP3RoaXMucmVuZGVyUm9vdC5hZG9wdGVkU3R5bGVTaGVldHM9dC5tYXAocj0+ciBpbnN0YW5jZW9mIENTU1N0eWxlU2hlZXQ/cjpyLnN0eWxlU2hlZXQpOnRoaXMuX25lZWRzU2hpbUFkb3B0ZWRTdHlsZVNoZWV0cz0hMCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaGFzVXBkYXRlZCYmd2luZG93LlNoYWR5Q1NTIT09dm9pZCAwJiZ3aW5kb3cuU2hhZHlDU1Muc3R5bGVFbGVtZW50KHRoaXMpfXVwZGF0ZSh0KXtsZXQgcj10aGlzLnJlbmRlcigpO3N1cGVyLnVwZGF0ZSh0KSxyIT09d2NlJiZ0aGlzLmNvbnN0cnVjdG9yLnJlbmRlcihyLHRoaXMucmVuZGVyUm9vdCx7c2NvcGVOYW1lOnRoaXMubG9jYWxOYW1lLGV2ZW50Q29udGV4dDp0aGlzfSksdGhpcy5fbmVlZHNTaGltQWRvcHRlZFN0eWxlU2hlZXRzJiYodGhpcy5fbmVlZHNTaGltQWRvcHRlZFN0eWxlU2hlZXRzPSExLHRoaXMuY29uc3RydWN0b3IuX3N0eWxlcy5mb3JFYWNoKG49PntsZXQgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2kudGV4dENvbnRlbnQ9bi5jc3NUZXh0LHRoaXMucmVuZGVyUm9vdC5hcHBlbmRDaGlsZChpKX0pKX1yZW5kZXIoKXtyZXR1cm4gd2NlfX07d1AuZmluYWxpemVkPSEwO3dQLnJlbmRlcj15Y2U7d1Auc2hhZG93Um9vdE9wdGlvbnM9e21vZGU6Im9wZW4ifTt2YXIgU2NlPTAsUGN0PXt9LFdjPShlLHQscik9PntsZXQgbj1yJiZyLm1vZHVsZUlkfHxgY3VzdG9tLXN0eWxlLW1vZHVsZS0ke1NjZSsrfWA7QXJyYXkuaXNBcnJheSh0KXx8KHQ9dD9bdF06W10pLHQuZm9yRWFjaChhPT57aWYoIShhIGluc3RhbmNlb2YgbDEpKXRocm93IG5ldyBFcnJvcigiQW4gaXRlbSBpbiBzdHlsZXMgaXMgbm90IG9mIHR5cGUgQ1NTUmVzdWx0LiBVc2UgYHVuc2FmZUNTU2Agb3IgYGNzc2AuIik7aWYoIVBjdFthXSl7bGV0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZG9tLW1vZHVsZSIpO3MuaW5uZXJIVE1MPWAKICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICA8c3R5bGU+JHthLnRvU3RyaW5nKCl9PC9zdHlsZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICBgO2xldCBsPWBjdXN0b20tc3R5bGUtbW9kdWxlLSR7U2NlKyt9YDtzLnJlZ2lzdGVyKGwpLFBjdFthXT1sfX0pO2xldCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKTtpZihlKXtsZXQgYT1jdXN0b21FbGVtZW50cy5nZXQoZSk7YSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIl9fZmluYWxpemVkIikmJmNvbnNvbGUud2FybihgVGhlIGN1c3RvbSBlbGVtZW50IGRlZmluaXRpb24gZm9yICIke2V9IgogICAgICB3YXMgZmluYWxpemVkIGJlZm9yZSBhIHN0eWxlIG1vZHVsZSB3YXMgcmVnaXN0ZXJlZC4KICAgICAgTWFrZSBzdXJlIHRvIGFkZCBjb21wb25lbnQgc3BlY2lmaWMgc3R5bGUgbW9kdWxlcyBiZWZvcmUKICAgICAgaW1wb3J0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGN1c3RvbSBlbGVtZW50LmApLGkuc2V0QXR0cmlidXRlKCJ0aGVtZS1mb3IiLGUpfWxldCBvPXImJnIuaW5jbHVkZXx8W107aS5pbm5lckhUTUw9YAogICAgPHRlbXBsYXRlPgogICAgICAke28ubWFwKGE9PmA8c3R5bGUgaW5jbHVkZT0ke2F9Pjwvc3R5bGU+YCl9CiAgICAgICR7dC5tYXAoYT0+YDxzdHlsZSBpbmNsdWRlPSR7UGN0W2FdfT48L3N0eWxlPmApfQogICAgPC90ZW1wbGF0ZT4KICBgLGkucmVnaXN0ZXIobil9O3ZhciBJY3Q9Y2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudHtzdGF0aWMgZ2V0IHZlcnNpb24oKXtyZXR1cm4iMjAuMC4yIn19O2N1c3RvbUVsZW1lbnRzLmRlZmluZSgidmFhZGluLWx1bW8tc3R5bGVzIixJY3QpO3ZhciBMdXI9Q2lgCiAgOmhvc3QgewogICAgLyogQmFzZSAoYmFja2dyb3VuZCkgKi8KICAgIC0tbHVtby1iYXNlLWNvbG9yOiAjZmZmOwoKICAgIC8qIFRpbnQgKi8KICAgIC0tbHVtby10aW50LTVwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMyk7CiAgICAtLWx1bW8tdGludC0xMHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC4zNyk7CiAgICAtLWx1bW8tdGludC0yMHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC40NCk7CiAgICAtLWx1bW8tdGludC0zMHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC41KTsKICAgIC0tbHVtby10aW50LTQwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjU3KTsKICAgIC0tbHVtby10aW50LTUwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjY0KTsKICAgIC0tbHVtby10aW50LTYwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjcpOwogICAgLS1sdW1vLXRpbnQtNzBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNzcpOwogICAgLS1sdW1vLXRpbnQtODBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuODQpOwogICAgLS1sdW1vLXRpbnQtOTBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuOSk7CiAgICAtLWx1bW8tdGludDogI2ZmZjsKCiAgICAvKiBTaGFkZSAqLwogICAgLS1sdW1vLXNoYWRlLTVwY3Q6IGhzbGEoMjE0LCA2MSUsIDI1JSwgMC4wNSk7CiAgICAtLWx1bW8tc2hhZGUtMTBwY3Q6IGhzbGEoMjE0LCA1NyUsIDI0JSwgMC4xKTsKICAgIC0tbHVtby1zaGFkZS0yMHBjdDogaHNsYSgyMTQsIDUzJSwgMjMlLCAwLjE2KTsKICAgIC0tbHVtby1zaGFkZS0zMHBjdDogaHNsYSgyMTQsIDUwJSwgMjIlLCAwLjI2KTsKICAgIC0tbHVtby1zaGFkZS00MHBjdDogaHNsYSgyMTQsIDQ3JSwgMjElLCAwLjM4KTsKICAgIC0tbHVtby1zaGFkZS01MHBjdDogaHNsYSgyMTQsIDQ1JSwgMjAlLCAwLjUpOwogICAgLS1sdW1vLXNoYWRlLTYwcGN0OiBoc2xhKDIxNCwgNDMlLCAxOSUsIDAuNjEpOwogICAgLS1sdW1vLXNoYWRlLTcwcGN0OiBoc2xhKDIxNCwgNDIlLCAxOCUsIDAuNzIpOwogICAgLS1sdW1vLXNoYWRlLTgwcGN0OiBoc2xhKDIxNCwgNDElLCAxNyUsIDAuODMpOwogICAgLS1sdW1vLXNoYWRlLTkwcGN0OiBoc2xhKDIxNCwgNDAlLCAxNiUsIDAuOTQpOwogICAgLS1sdW1vLXNoYWRlOiBoc2woMjE0LCAzNSUsIDE1JSk7CgogICAgLyogQ29udHJhc3QgKi8KICAgIC0tbHVtby1jb250cmFzdC01cGN0OiB2YXIoLS1sdW1vLXNoYWRlLTVwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTEwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTEwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC0yMHBjdDogdmFyKC0tbHVtby1zaGFkZS0yMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMzBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtMzBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTQwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTQwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC01MHBjdDogdmFyKC0tbHVtby1zaGFkZS01MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNjBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNjBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0LTcwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTcwcGN0KTsKICAgIC0tbHVtby1jb250cmFzdC04MHBjdDogdmFyKC0tbHVtby1zaGFkZS04MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtOTBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtOTBwY3QpOwogICAgLS1sdW1vLWNvbnRyYXN0OiB2YXIoLS1sdW1vLXNoYWRlKTsKCiAgICAvKiBUZXh0ICovCiAgICAtLWx1bW8taGVhZGVyLXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QpOwogICAgLS1sdW1vLWJvZHktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC05MHBjdCk7CiAgICAtLWx1bW8tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtNzBwY3QpOwogICAgLS1sdW1vLXRlcnRpYXJ5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtNTBwY3QpOwogICAgLS1sdW1vLWRpc2FibGVkLXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMzBwY3QpOwoKICAgIC8qIFByaW1hcnkgKi8KICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yOiBoc2woMjE0LCA5MCUsIDUyJSk7CiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdDogaHNsYSgyMTQsIDkwJSwgNTIlLCAwLjUpOwogICAgLS1sdW1vLXByaW1hcnktY29sb3ItMTBwY3Q6IGhzbGEoMjE0LCA5MCUsIDUyJSwgMC4xKTsKICAgIC0tbHVtby1wcmltYXJ5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvcik7CiAgICAtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcjogI2ZmZjsKCiAgICAvKiBFcnJvciAqLwogICAgLS1sdW1vLWVycm9yLWNvbG9yOiBoc2woMywgMTAwJSwgNjElKTsKICAgIC0tbHVtby1lcnJvci1jb2xvci01MHBjdDogaHNsYSgzLCAxMDAlLCA2MCUsIDAuNSk7CiAgICAtLWx1bW8tZXJyb3ItY29sb3ItMTBwY3Q6IGhzbGEoMywgMTAwJSwgNjAlLCAwLjEpOwogICAgLS1sdW1vLWVycm9yLXRleHQtY29sb3I6IGhzbCgzLCA5MiUsIDUzJSk7CiAgICAtLWx1bW8tZXJyb3ItY29udHJhc3QtY29sb3I6ICNmZmY7CgogICAgLyogU3VjY2VzcyAqLwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3I6IGhzbCgxNDUsIDgwJSwgNDIlKTsgLyogaHNsKDE0NCw4MiUsMzclKTsgKi8KICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTUwcGN0OiBoc2xhKDE0NSwgNzYlLCA0NCUsIDAuNTUpOwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3ItMTBwY3Q6IGhzbGEoMTQ1LCA3NiUsIDQ0JSwgMC4xMik7CiAgICAtLWx1bW8tc3VjY2Vzcy10ZXh0LWNvbG9yOiBoc2woMTQ1LCAxMDAlLCAzMiUpOwogICAgLS1sdW1vLXN1Y2Nlc3MtY29udHJhc3QtY29sb3I6ICNmZmY7CiAgfQpgLE1jZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO01jZS5pbm5lckhUTUw9YDxzdHlsZT4ke0x1ci50b1N0cmluZygpLnJlcGxhY2UoIjpob3N0IiwiaHRtbCIpfTwvc3R5bGU+YDtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKE1jZS5jb250ZW50KTt2YXIga3VyPUNpYAogIFt0aGVtZX49J2RhcmsnXSB7CiAgICAvKiBCYXNlIChiYWNrZ3JvdW5kKSAqLwogICAgLS1sdW1vLWJhc2UtY29sb3I6IGhzbCgyMTQsIDM1JSwgMjElKTsKCiAgICAvKiBUaW50ICovCiAgICAtLWx1bW8tdGludC01cGN0OiBoc2xhKDIxNCwgNjUlLCA4NSUsIDAuMDYpOwogICAgLS1sdW1vLXRpbnQtMTBwY3Q6IGhzbGEoMjE0LCA2MCUsIDgwJSwgMC4xNCk7CiAgICAtLWx1bW8tdGludC0yMHBjdDogaHNsYSgyMTQsIDY0JSwgODIlLCAwLjIzKTsKICAgIC0tbHVtby10aW50LTMwcGN0OiBoc2xhKDIxNCwgNjklLCA4NCUsIDAuMzIpOwogICAgLS1sdW1vLXRpbnQtNDBwY3Q6IGhzbGEoMjE0LCA3MyUsIDg2JSwgMC40MSk7CiAgICAtLWx1bW8tdGludC01MHBjdDogaHNsYSgyMTQsIDc4JSwgODglLCAwLjUpOwogICAgLS1sdW1vLXRpbnQtNjBwY3Q6IGhzbGEoMjE0LCA4MiUsIDkwJSwgMC42KTsKICAgIC0tbHVtby10aW50LTcwcGN0OiBoc2xhKDIxNCwgODclLCA5MiUsIDAuNyk7CiAgICAtLWx1bW8tdGludC04MHBjdDogaHNsYSgyMTQsIDkxJSwgOTQlLCAwLjgpOwogICAgLS1sdW1vLXRpbnQtOTBwY3Q6IGhzbGEoMjE0LCA5NiUsIDk2JSwgMC45KTsKICAgIC0tbHVtby10aW50OiBoc2woMjE0LCAxMDAlLCA5OCUpOwoKICAgIC8qIFNoYWRlICovCiAgICAtLWx1bW8tc2hhZGUtNXBjdDogaHNsYSgyMTQsIDAlLCAwJSwgMC4wNyk7CiAgICAtLWx1bW8tc2hhZGUtMTBwY3Q6IGhzbGEoMjE0LCA0JSwgMiUsIDAuMTUpOwogICAgLS1sdW1vLXNoYWRlLTIwcGN0OiBoc2xhKDIxNCwgOCUsIDQlLCAwLjIzKTsKICAgIC0tbHVtby1zaGFkZS0zMHBjdDogaHNsYSgyMTQsIDEyJSwgNiUsIDAuMzIpOwogICAgLS1sdW1vLXNoYWRlLTQwcGN0OiBoc2xhKDIxNCwgMTYlLCA4JSwgMC40MSk7CiAgICAtLWx1bW8tc2hhZGUtNTBwY3Q6IGhzbGEoMjE0LCAyMCUsIDEwJSwgMC41KTsKICAgIC0tbHVtby1zaGFkZS02MHBjdDogaHNsYSgyMTQsIDI0JSwgMTIlLCAwLjYpOwogICAgLS1sdW1vLXNoYWRlLTcwcGN0OiBoc2xhKDIxNCwgMjglLCAxMyUsIDAuNyk7CiAgICAtLWx1bW8tc2hhZGUtODBwY3Q6IGhzbGEoMjE0LCAzMiUsIDEzJSwgMC44KTsKICAgIC0tbHVtby1zaGFkZS05MHBjdDogaHNsYSgyMTQsIDMzJSwgMTMlLCAwLjkpOwogICAgLS1sdW1vLXNoYWRlOiBoc2woMjE0LCAzMyUsIDEzJSk7CgogICAgLyogQ29udHJhc3QgKi8KICAgIC0tbHVtby1jb250cmFzdC01cGN0OiB2YXIoLS1sdW1vLXRpbnQtNXBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMTBwY3Q6IHZhcigtLWx1bW8tdGludC0xMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMjBwY3Q6IHZhcigtLWx1bW8tdGludC0yMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtMzBwY3Q6IHZhcigtLWx1bW8tdGludC0zMHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNDBwY3Q6IHZhcigtLWx1bW8tdGludC00MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNTBwY3Q6IHZhcigtLWx1bW8tdGludC01MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNjBwY3Q6IHZhcigtLWx1bW8tdGludC02MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtNzBwY3Q6IHZhcigtLWx1bW8tdGludC03MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtODBwY3Q6IHZhcigtLWx1bW8tdGludC04MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3QtOTBwY3Q6IHZhcigtLWx1bW8tdGludC05MHBjdCk7CiAgICAtLWx1bW8tY29udHJhc3Q6IHZhcigtLWx1bW8tdGludCk7CgogICAgLyogVGV4dCAqLwogICAgLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0KTsKICAgIC0tbHVtby1ib2R5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtOTBwY3QpOwogICAgLS1sdW1vLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTcwcGN0KTsKICAgIC0tbHVtby10ZXJ0aWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTUwcGN0KTsKICAgIC0tbHVtby1kaXNhYmxlZC10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKCiAgICAvKiBQcmltYXJ5ICovCiAgICAtLWx1bW8tcHJpbWFyeS1jb2xvcjogaHNsKDIxNCwgODYlLCA1NSUpOwogICAgLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3Q6IGhzbGEoMjE0LCA4NiUsIDU1JSwgMC41KTsKICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTEwcGN0OiBoc2xhKDIxNCwgOTAlLCA2MyUsIDAuMSk7CiAgICAtLWx1bW8tcHJpbWFyeS10ZXh0LWNvbG9yOiBoc2woMjE0LCAxMDAlLCA3MCUpOwogICAgLS1sdW1vLXByaW1hcnktY29udHJhc3QtY29sb3I6ICNmZmY7CgogICAgLyogRXJyb3IgKi8KICAgIC0tbHVtby1lcnJvci1jb2xvcjogaHNsKDMsIDkwJSwgNjMlKTsKICAgIC0tbHVtby1lcnJvci1jb2xvci01MHBjdDogaHNsYSgzLCA5MCUsIDYzJSwgMC41KTsKICAgIC0tbHVtby1lcnJvci1jb2xvci0xMHBjdDogaHNsYSgzLCA5MCUsIDYzJSwgMC4xKTsKICAgIC0tbHVtby1lcnJvci10ZXh0LWNvbG9yOiBoc2woMywgMTAwJSwgNjclKTsKCiAgICAvKiBTdWNjZXNzICovCiAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvcjogaHNsKDE0NSwgNjUlLCA0MiUpOwogICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3ItNTBwY3Q6IGhzbGEoMTQ1LCA2NSUsIDQyJSwgMC41KTsKICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTEwcGN0OiBoc2xhKDE0NSwgNjUlLCA0MiUsIDAuMSk7CiAgICAtLWx1bW8tc3VjY2Vzcy10ZXh0LWNvbG9yOiBoc2woMTQ1LCA4NSUsIDQ3JSk7CiAgfQoKICBodG1sIHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogIH0KCiAgW3RoZW1lfj0nZGFyayddIHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogIH0KCiAgaDEsCiAgaDIsCiAgaDMsCiAgaDQsCiAgaDUsCiAgaDYgewogICAgY29sb3I6IHZhcigtLWx1bW8taGVhZGVyLXRleHQtY29sb3IpOwogIH0KCiAgYSB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LXRleHQtY29sb3IpOwogIH0KCiAgYmxvY2txdW90ZSB7CiAgICBjb2xvcjogdmFyKC0tbHVtby1zZWNvbmRhcnktdGV4dC1jb2xvcik7CiAgfQoKICBjb2RlLAogIHByZSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTEwcGN0KTsKICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1tKTsKICB9CmA7V2MoIiIsa3VyLHttb2R1bGVJZDoibHVtby1jb2xvciJ9KTt2YXIgUnVyPUNpYAogIDpob3N0IHsKICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcikgIWltcG9ydGFudDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcikgIWltcG9ydGFudDsKICB9CmA7V2MoIiIsUnVyLHttb2R1bGVJZDoibHVtby1jb2xvci1sZWdhY3kiLGluY2x1ZGU6WyJsdW1vLWNvbG9yIl19KTt2YXIgRWNlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7RWNlLmlubmVySFRNTD1gCiAgPHN0eWxlPgogICAgQGZvbnQtZmFjZSB7CiAgICAgIGZvbnQtZmFtaWx5OiAnbHVtby1pY29ucyc7CiAgICAgIHNyYzogdXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFCRWNBQXNBQUFBQUlpd0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSFUxVkNBQUFCQ0FBQUFEc0FBQUJVSUlzbGVrOVRMeklBQUFGRUFBQUFRd0FBQUZaQUlVdUtZMjFoY0FBQUFZZ0FBQUQ0QUFBRHJzQ1U4ZDVuYkhsbUFBQUNnQUFBQzJNQUFCZDRoOVRvMldobFlXUUFBQTNrQUFBQU1BQUFBRFphLzZTc2FHaGxZUUFBRGhRQUFBQWRBQUFBSkFicEEzNW9iWFI0QUFBT05BQUFBQkFBQUFDc3BCQUFBR3h2WTJFQUFBNUVBQUFBV0FBQUFGaDU1SUFzYldGNGNBQUFEcHdBQUFBZkFBQUFJQUZLQVhCdVlXMWxBQUFPdkFBQUFURUFBQUl1VVVKWkNIQnZjM1FBQUEvd0FBQUJLd0FBQWVsbThTelZlSnhqWUdSZ1lPQmlNR0N3WTJCeWNmTUpZZURMU1N6Slk1QmlZR0dBQUpBOE1wc3hKek05a1lFRHhnUEtzWUJwRGlCbWc0Z0NBQ1k3QlVnQWVKeGpZR1MreURpQmdaV0JnYW1LYVE4REEwTVBoR1o4d0dESXlBUVVaV0JsWnNBS0F0SmNVeGdjWGpHKzBtSU8rcC9GRU1VY3hEQU5LTXdJa2dNQUJuOE1MUUI0bk8zU1dXNkRNQUJGMFV0d0NFbklQTS96aExLOExxaGZYUnliU1AxNFhVWXRIVjloR1lRd1FCTklvM2NVSVBraFFlTTdyaWIxZWtxblhnOTgxWHVDMXF2eTg0bHpvamxlaDNwdXhMMGhQakdqUlU0NzN0ZWxvRWVmQVVOR2pKa3daY2FjQlV0V3JObXdaY2VlQTBkT25MbHc1Y2FkQjA5ZWxQR2hHZitqME5USS82NUtmWGVyVDZKaHFLbnBSS3RnT3B1cWFUcnRLalBVbHFIbWh0bzIxSTdwTDZpNmhscVkzcTdxR1dyZlVBZUdPalRVa2FHT0RYVmlxRk5EblJucTNGQVhocm8wMUpXaHJnMTFZNmhiUTkwWjZ0NVFENFo2Tk5TVG9aNE45V0tvVjBPOUdlcmRVQitHK2pUVWw2R1dSdmtMMjRCa0VYaWN0Vmg5YkZ2VkZiL254dmJ6KzdSZi9ONnpIY2QyYkNmUCtXZ2MxWjlOMGpwTm5FTDZrYlJWUzZIQTJoUVlHaDlUR1IxQ2JDcWEyclhyV09rUUUvc0hOSmdtdFp2b1ZOWnFFMUIxRE5IeHpUUXhDZWhVVFlpSlRReUVOdWkwcVNMZXpyM1BkdXlRZmdtUldPZmRlOCs5NTUxejdybm4vTzRqTG9KL2JSUDBVYUtRTUxGSmpwQkF2cGhMWkMzRGswb2s3V0J6UjIvdXBKczdSeXcvbmZGYmxuL3V1Ti9hcEN2d3JLTHJTdlVxUnVmYm01cG4wZnMwdzRnWXhuR1ZQNnFIbk80YldpRFFHUWd3dFM2bG0zbEIzUW9YMU0ydndFbXV6aXJGMzl5K0VzMitESjhkMXBreXFCSXFvemUzRDErWno0RHJGb2F6eEk4ZFd3TXJEbFoyRE1xUUFSOUFST3NKVSsyY21sVFBhelRjbzUyRjF4VGEyYTIrSzh2dnE5MmRWSG10TG9QZVFYL0FaUFJZR3RoRFlPZVpqQmpLb0ZzVkd1bFIzbFdVOTVXZUNLNDRxSFU3TWhXVUdVS1pEVDNvS1VjRzJHV3VoK0VERGZVWUEvamhBaGwwVE9zSk5ZU0V1N21RbWkzVXpmWHdaS0E0QnNWc0hMWFFZR2dSVzk1dUV0cEoxVmZuOVhpTHJpUkJsRkVxeHNEakEwOXlDTlVvUXh4d2Q3S1dTVHQyeTNHVEtpZmxxSFJTb1daYzNtMTFXYS9mSmRGZ1hENHNTWWZsZUpCS2Q4R016N0o4ZFpuL2NHUkNjS0dEbkEyR2UzZkt6Y3ZsblRETnRoR1dMWHpYL1dhWHRVQW1SZ2VMbEhTcjMwcjBHOVVUWE1iMEF0bXd6T295NzNma1NsSFprZHV3L1RZdVU5Y0FENFl1dFBveFRUc0EzNzk3d1ZyNFovMU5DNXpBUkhyNHZ0eEpqeElmaVpNaE1rYldrKzE0Qm5KWkt3cUdad0Rmc3dMeXhXRFNnMTFyRkxKRjdOb3B4amQxaDEvUU9UK29lemdmdTNZcStIaytkdWY1eCs0MG8xR1RrYUlnaWtLL0lFbkM2YVl4Q1VCYVpKU040WFRZRmpVL1lNTklLcUp3aERHT0NDSThGRFhuWG1YanRHaEdKeVNocWpBT25CT2tXMkpHOVM3R2dZZU1XQVU1SnpobldtQk9hT00rQ0tFUG9xU2ZGREMyVW5xK0RMbFVnVVZVRkZMWkdKZzZqdGxvanNkc2E4a1BPYlB1SmRpNWRuQmRCc0xKTUdUV0RhNHQySnZ0d3VQbzlzK1k4NnN1di9XMzNRRzFyQWFPQVVWK3Z4NEs2ZjJEMDRQVktsQzdXTFNyWnpBaTQ1WlY2bElDN1dvWHFtUnl2VXFvVndyelVvVnNJamVUWFdRditSSDVHVGxCWGlCL0luOGxuMEliQkNBRk9hakFKcmdaWXlPSFdxT2ZVZS9hSGpJMTJSNk9RbzFqQ2d0MjE1bCs0ZjZYUGIrME1Ob3UwVis0M24yRjc3dFNmUmIyNGQ3eml0Z25LbXZZSHM2OXp1Z2FQdkJ3djZpb1hrYjJMZEw2NUF0dzUxdUxrWGx1MWJoTU1SY1hTUGNZb3FLSVJsaDM0bFFQOC81SmJ1VUZ5ZTR2eEQ2LzZNeEZGMTFDMHVWTHI5VWxndzQ0dFMzcE1WaU5MVUV4YnljRmdMSWN0K1FETWliUmlteDF5ZFV6OEZYWml1T0lEQk9NVlgyblVaYytodU5FNVhVSjgxdWlKb2lhYndxYVZGMHVhY0tiYXUvcGw0UjJWVzBYWGxKcmE2Ym9WcllHNjQ2VEY1Tll6d3k0dmpFTlZyRGxjTnBaUGw4REg2WFg4WFdDeDBtdldWWlk2S0ZMcnZzWTY2L3pQaWN0NUZueGFOVVIvanV2WkNNM1R2RDYwRTJXMXRaaXpiWFRQRHVhYmNtMG5iYnpwV0twbUExYXlCUThnaWVkTFVNK0Ewa05qQmpRam11WXo3WXJnSVhZdm1GNjNaTEJ3U1hycG45VGI5d3dkZC9VMUgwUE1RSzNYY084dWwzV1Q3UHlQUGRweTBUZW1LeE5SY0pOYXVpWEpublVEcFVwcFFXczRTblVJeTBFRVNHWXFKWVFMR0h4emFHV3dWSWFTNlk3bVFGTThaallEUTNheGpmNjFTV2pVMzNKd09aQTFwd2FHMUw5bXpmNzFhSFJkWDFKSHc2RnAwYVhoTndicXllR05nNE5iZHpHQ0J4b3o0WlhqeTROdTY5WnI2c0RZNnZNckxVNW5BMVA4SmtiZFdYSjZFUmZNcnl2TmgxSmZROStUNGRJaEd2Szl3M2R4akJCemF0c1EvTWxPSFZJRG5ZcER6Nm9kQVhsUTAxdDJQYTVJYWZkOE1NcHhBZURLUDBDNkNqZ1ZMVDVvc0I2aWNVeDAxbFdqWHh6VC9HeVJGMndlbEVNNVovN2pHM1ZqUTFTck5uNUlieXpPRzVkb2JCMy9RSHh5WnZzWGNvejhJb0V3UzdwbENnK3p4SFFrNDI0cTlCZkVwa0VTSmJGSFF1c0RCU1dGa3VCa29QTzBrTEt3UlZZanhHWGxIVGNURFFNSi9INlRYOWFma083bW5yYVRPMWZlVG5aQVhMdTRjcDdIQVhNbU5HMXllRms5VGdTL05IaFpSLzRRb0JUci9aQis2aENneWwxNU5xMVViTjZuRTEvWm5QMVUyY2l6Q0JwdnM4Y0pRWko0TGtZeDVOL3laUEFVWk5RUTBWNGYzQlFsbFdySzNZUnpsMzBkT1Q2UlZuMnVwTnVyNndvU2E4Q3FwZFQvYUtuQk00bzNqTnVyOWQ5eHF0VVQ2dmVCRXQ5Q2E5YXQrRVJ6RUVoVWtSOHNhNW1RNGFWdkpvVmVFQTh6STRlaTVtVUxYRkd5VTd6LzZUQWVZTFZjcHpTV1pZOFBZWUY1eXJUVjYwc1QwK1hWMTQxdlgrK1dmMTZWMmJGZUdWUFpYeEZwa3Z5ZUtUV0xsemZXMG1uS3hzWTZZMzI5NC8wOTk4U0NmWDFibG01cGJjdkZHbHEvcjA3TVJBTWhZSURpVzVKRktXVzN2ZHJFcENzWlNKRytvbTdadS9QU1NjWkpoTmtMYm1XNVdzcjEycFdxVzV6S3Rsd1JTNGJGT3hVdzE3bUN6eTZsc2tDRGwxV1lPR1dEWXJBRHJNQTdCRER3ZVdXTmQ1a29pSm5SMWR6K3l0TFAycTBTcVBCMWxuSzJjY0I3UlllNEZTb1BrczNpQjN0NHR4VFNIY3RiMnN5MWl2azBwdkh1Q05tNncxZjZ3eHYzK09DZ043OExxZFFuVVZoN1Iwb1RBcDB6T2YycmJXNzcwVnU1QzJkSXlHZFRuSG84elNqaTdkcHBqMFVTb1ZDeitsaFJNVGg1M1RlcTlWYkdmYmp1U2JBb29TZFhheVk0UFlIZzM3NEM2ZjdnbDFCL0RYdUo0L1FYeE9CZEpGSnNwRnNJM2VncG9XVVVDamxUSUZuTllObCtaeVpLbUJlWUtHSGtEMVF5RGxoYUtiS3dLY0lKcUo0VExKMk9tZFkvSldYYWU0RGRHQnc4SFo3ZVhjZ0ZGMnpyMlNvYWxEcnk1aUtxb2EwUHVoZTNoUFEyczNlbFRZTStNSStuM3JLMEtnTDcvTGEzR2VNTHQ2bTd1OTEydkdudnRPUmlJYTBxQm1ocVZpK1hXOVhOQm1xYjhlVmdLeklIZkdJNWJOb0c3WDBVQ3plSVNtcUljTy9uWThGSDdVOGF2WDlmeC9TVCtoeDBzZXpQdzlReThNdW0zR1dmMk40VXkveUlZR1ZCWGJKSFdJWnA3ZGZUY3B0ZE1UcjlRbXE3RGFpSy91a3FDTDRrdDRSVWZTNVhQbk10bVQyMi9tUUZxRjdlbVNxdHJsdThTVkVseERSSnJaT0RrcHV3ZTBWZlRmamRFcDFmN0E3ditmb3pOQlhVSi82V1R1SzJUdEZscEZWWkFaM0xjRnZVaTFaMnAyWVQrRU1Ba0dKVlN0T3pMVEFQZzRJcVdJQWx6UlNqT0JrbDJ6eGozVEt5Y3B6VC9NbnZYM3VhU01XTStnVTBya1hqb2hoZWZWUk1hcHMzL2tMTVNLdjIzbFQyM3V4UXJrUWp5T0psZU1Ec2RoQW5ENlpHRWxXWjVNakNYekNFL2hrV1grV0Y0a256R2hWT3lLMmVRWmVrVjNleW8wekw4a3VZV0NuREN2ampoQWtjVFBPQkRYVmRvYXYzSFZjRm5Rakx2dFY5UzJwMHpBNkplZ1B3TVF4dCt5RmIzbGw5ekdscS81ZFJLYjNjRXlRWW9hTllwaGFySjd4Q0I3QVd4c0xZM2pqWlhZMFhzWmowV2p3YzlJNlBQL2RLQUJuQ1phcUhwYVpFQUN4azRaZUxaU0tOZ1pBQmwrbFlRWDFzSlFPU1gzbjZyNDEwZXZjb3VkNUplQUdVWFZQOUgxdFpPS2VqVHE0T25vMHowZXJybzFGcm5PcG9odmExZC9oVGR0VnNRZEtONVc5UmxUM05qRDBuem55S05UZ0tBTWZXTldjeW9kVjBJR0xQSUhPRjBvNEp5cXVmYUs0ejZXSUl6dUdoM2Q4Yzhjd1FnOEVSK09WeHlyamRtOHZOdWh0czRMb09paEd4SU11VWRnendpWU43eGhoMStvWm5KTnVURzdnUVp2dTRYV1o5R0FaWmpHRXVid2VQcVlodEtEVEgrOVZRa2wxNy9pR3lic25KKzgrc0t0eVByY2xsOXR5NjVac2RzdC85aXFwRUtoN001VmRCeGgzY3NPZE5jNnRXM0kxdXlNMVB6T1hlZ1NPckxGc0ZOSTJPMjdNK1RGMkFwbk45TVV2NXVkNkxqeEl2RVFuSFJ6eEl1NElzQTlNTEZrSm4ydGNab1o3T043ZFhlN3VqcmM4SHJ1c1BLYW1scVh3ZDc3bFFVdUxwaWxhdTRQVU1hcHVlQmI3aXJVNFJvVVhFWVh1VnVJR2xSR21PcCsybE5rYVJQVnppT3FtbGFadmFxRzRkRmdTajBqeEVKV3J2MTJJVVdudG13K3JmUWFyUkUwQXBoNG9jSTZubFVsR3FzK3UzLytUL2V0aFc2MlBwSHAyZUhiWnN0bmgvd09POTV5REFIaWNZMkJrWUdBQTRwbUo2UUh4L0RaZkdiaVpYd0JGR0dwVU56UWk2UCt2bWFjeTNRSnlPUmlZUUtJQU5vVUxWWGljWTJCa1lHQU8rcDhGSkY4d0FBSHpWQVpHQmxTZ0RRQlc5Z052QUFBQWVKeGpZR0JnWUg0eE5EQUF6d1FtandBQUFBQUFUZ0NhQU9nQkNnRXNBVTRCY0FHYUFjUUI3Z0lhQXB3QzZBU2FCTHdFMWdUeUJRNEZLZ1Y2QmRBRi9nWkVCbVlHdGdjWUI1QUlHQWhTQ0dvSS9nbEdDYjRKMmdvRUNqd0tnZ3E0Q3ZBTFVBdVdDN3g0bkdOZ1pHQmcwR1pNWVJCbEFBRW1JT1lDUWdhRy8yQStBd0FZbEFHOEFIaWNiWkU5VHNNd0dJYmY5QS9SU2dnRVltSHhBZ3RxK2pOMlpHajNEdDNUMUdsVE9YSGt1Qlc5QXlmZ0VCeUNnVE53Q0E3QlcvTkpsVkJ0eWQvangrOFhLd21BYTN3aHduRkU2SWIxT0JxNDRPNlBtNlFiNFJiNVFiaU5IaDZGTy9SRDRTNmVNUkh1NFJhYVQ0aGFselIzZUJWdTRBcHZ3azM2ZCtFVytVTzRqWHQ4Q25mb3Y0VzdXT0JIdUllbjZNWHNDdHZQVTF2V2M3M2VtY1NkeElrVzJ0VzVMZFVvSHA3a1RKZmFKVjZ2MVBLZzZ2MTY3SDJtTW1jTE5iV2wxOFpZVlRtNzFhbVBOOTVYazhFZ0V4K250b0RCRGdVcytzaVJzcGFvTWVmN3J1a05Fcml6aVhOdXdTN0htb2U5d2dneHYrZTU1SXpKTXFRVGVOWVYwMHNjdU5iWTgrWXhyVWZHZmNhTVpiL0NOUFFlMDRiVDBsVGhiRXVUMHNmWWhLNksvMjNBbWYzTHgrSDI0aGNqNEdTY0FBQUFlSnh0anRsdWd6QVFSYmtKVUVKSXV1Lzd2cVI4bEdOUEFjV3gwWUFiNWUvTGtsUjk2RWdlblN1ZkdZMDM4UHFLdmY5cmhnR0c4QkVneEE0aWpCQmpqQVFUVExHTFBlempBSWM0d2pGT2NJb3puT01DbDdqQ05XNXdpenZjNHdHUGVNSXpYdkNLTjd6akF6Tjhlb25RUldaU1NhWW1qdnVnNmFzZTk4aEZsdGV4TUptbVZObVYyV0J2ZE5nWlVjK3VqQVd6WFczVURudTF3NDNhc1N0SGM4R3B6QVhYL3B5MGpxVFFaSlRna2N4SkxwYUNGMGxEMzJ4TnQrNDN0QXNuMjlEZnQwMnVES1MyY2pHVU5nc2syNnFLMmxGdGhZb1UyN0lOUHFtaURxZzVnb2UwcHFSNXFTb3FNZGVrL0NVWkZ5d0w0NnJFc2lJbWxlcWlxb015dDRiYVhsdS8xR0xkTkZmNXpiY05tZHIxWVVXQ1plNDdvK3pVbWIvRG9TdGJ3M2NWc2VmOUFMamppUFFBKSBmb3JtYXQoJ3dvZmYnKTsKICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgfQoKICAgIGh0bWwgewogICAgICAtLWx1bW8taWNvbnMtYWxpZ24tY2VudGVyOiAiXFxlYTAxIjsKICAgICAgLS1sdW1vLWljb25zLWFsaWduLWxlZnQ6ICJcXGVhMDIiOwogICAgICAtLWx1bW8taWNvbnMtYWxpZ24tcmlnaHQ6ICJcXGVhMDMiOwogICAgICAtLWx1bW8taWNvbnMtYW5nbGUtZG93bjogIlxcZWEwNCI7CiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS1sZWZ0OiAiXFxlYTA1IjsKICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLXJpZ2h0OiAiXFxlYTA2IjsKICAgICAgLS1sdW1vLWljb25zLWFuZ2xlLXVwOiAiXFxlYTA3IjsKICAgICAgLS1sdW1vLWljb25zLWFycm93LWRvd246ICJcXGVhMDgiOwogICAgICAtLWx1bW8taWNvbnMtYXJyb3ctbGVmdDogIlxcZWEwOSI7CiAgICAgIC0tbHVtby1pY29ucy1hcnJvdy1yaWdodDogIlxcZWEwYSI7CiAgICAgIC0tbHVtby1pY29ucy1hcnJvdy11cDogIlxcZWEwYiI7CiAgICAgIC0tbHVtby1pY29ucy1iYXItY2hhcnQ6ICJcXGVhMGMiOwogICAgICAtLWx1bW8taWNvbnMtYmVsbDogIlxcZWEwZCI7CiAgICAgIC0tbHVtby1pY29ucy1jYWxlbmRhcjogIlxcZWEwZSI7CiAgICAgIC0tbHVtby1pY29ucy1jaGVja21hcms6ICJcXGVhMGYiOwogICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi1kb3duOiAiXFxlYTEwIjsKICAgICAgLS1sdW1vLWljb25zLWNoZXZyb24tbGVmdDogIlxcZWExMSI7CiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLXJpZ2h0OiAiXFxlYTEyIjsKICAgICAgLS1sdW1vLWljb25zLWNoZXZyb24tdXA6ICJcXGVhMTMiOwogICAgICAtLWx1bW8taWNvbnMtY2xvY2s6ICJcXGVhMTQiOwogICAgICAtLWx1bW8taWNvbnMtY29nOiAiXFxlYTE1IjsKICAgICAgLS1sdW1vLWljb25zLWNyb3NzOiAiXFxlYTE2IjsKICAgICAgLS1sdW1vLWljb25zLWRvd25sb2FkOiAiXFxlYTE3IjsKICAgICAgLS1sdW1vLWljb25zLWRyb3Bkb3duOiAiXFxlYTE4IjsKICAgICAgLS1sdW1vLWljb25zLWVkaXQ6ICJcXGVhMTkiOwogICAgICAtLWx1bW8taWNvbnMtZXJyb3I6ICJcXGVhMWEiOwogICAgICAtLWx1bW8taWNvbnMtZXllOiAiXFxlYTFiIjsKICAgICAgLS1sdW1vLWljb25zLWV5ZS1kaXNhYmxlZDogIlxcZWExYyI7CiAgICAgIC0tbHVtby1pY29ucy1tZW51OiAiXFxlYTFkIjsKICAgICAgLS1sdW1vLWljb25zLW1pbnVzOiAiXFxlYTFlIjsKICAgICAgLS1sdW1vLWljb25zLW9yZGVyZWQtbGlzdDogIlxcZWExZiI7CiAgICAgIC0tbHVtby1pY29ucy1waG9uZTogIlxcZWEyMCI7CiAgICAgIC0tbHVtby1pY29ucy1waG90bzogIlxcZWEyMSI7CiAgICAgIC0tbHVtby1pY29ucy1wbGF5OiAiXFxlYTIyIjsKICAgICAgLS1sdW1vLWljb25zLXBsdXM6ICJcXGVhMjMiOwogICAgICAtLWx1bW8taWNvbnMtcmVkbzogIlxcZWEyNCI7CiAgICAgIC0tbHVtby1pY29ucy1yZWxvYWQ6ICJcXGVhMjUiOwogICAgICAtLWx1bW8taWNvbnMtc2VhcmNoOiAiXFxlYTI2IjsKICAgICAgLS1sdW1vLWljb25zLXVuZG86ICJcXGVhMjciOwogICAgICAtLWx1bW8taWNvbnMtdW5vcmRlcmVkLWxpc3Q6ICJcXGVhMjgiOwogICAgICAtLWx1bW8taWNvbnMtdXBsb2FkOiAiXFxlYTI5IjsKICAgICAgLS1sdW1vLWljb25zLXVzZXI6ICJcXGVhMmEiOwogICAgfQogIDwvc3R5bGU+CmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChFY2UuY29udGVudCk7dmFyIE51cj1DaWAKICA6aG9zdCB7CiAgICAtLWx1bW8tc2l6ZS14czogMS42MjVyZW07CiAgICAtLWx1bW8tc2l6ZS1zOiAxLjg3NXJlbTsKICAgIC0tbHVtby1zaXplLW06IDIuMjVyZW07CiAgICAtLWx1bW8tc2l6ZS1sOiAyLjc1cmVtOwogICAgLS1sdW1vLXNpemUteGw6IDMuNXJlbTsKCiAgICAvKiBJY29ucyAqLwogICAgLS1sdW1vLWljb24tc2l6ZS1zOiAxLjI1ZW07CiAgICAtLWx1bW8taWNvbi1zaXplLW06IDEuNWVtOwogICAgLS1sdW1vLWljb24tc2l6ZS1sOiAyLjI1ZW07CiAgICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi8KICAgIC0tbHVtby1pY29uLXNpemU6IHZhcigtLWx1bW8taWNvbi1zaXplLW0pOwogIH0KYCxUY2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtUY2UuaW5uZXJIVE1MPWA8c3R5bGU+JHtOdXIudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChUY2UuY29udGVudCk7dmFyIER1cj1DaWAKICA6aG9zdCB7CiAgICAvKiBTcXVhcmUgKi8KICAgIC0tbHVtby1zcGFjZS14czogMC4yNXJlbTsKICAgIC0tbHVtby1zcGFjZS1zOiAwLjVyZW07CiAgICAtLWx1bW8tc3BhY2UtbTogMXJlbTsKICAgIC0tbHVtby1zcGFjZS1sOiAxLjVyZW07CiAgICAtLWx1bW8tc3BhY2UteGw6IDIuNXJlbTsKCiAgICAvKiBXaWRlICovCiAgICAtLWx1bW8tc3BhY2Utd2lkZS14czogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhzKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UteHMpOwogICAgLS1sdW1vLXNwYWNlLXdpZGUtczogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXMpIC8gMikgdmFyKC0tbHVtby1zcGFjZS1zKTsKICAgIC0tbHVtby1zcGFjZS13aWRlLW06IGNhbGModmFyKC0tbHVtby1zcGFjZS1tKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UtbSk7CiAgICAtLWx1bW8tc3BhY2Utd2lkZS1sOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UtbCkgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLWwpOwogICAgLS1sdW1vLXNwYWNlLXdpZGUteGw6IGNhbGModmFyKC0tbHVtby1zcGFjZS14bCkgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLXhsKTsKCiAgICAvKiBUYWxsICovCiAgICAtLWx1bW8tc3BhY2UtdGFsbC14czogdmFyKC0tbHVtby1zcGFjZS14cykgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhzKSAvIDIpOwogICAgLS1sdW1vLXNwYWNlLXRhbGwtczogdmFyKC0tbHVtby1zcGFjZS1zKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UtcykgLyAyKTsKICAgIC0tbHVtby1zcGFjZS10YWxsLW06IHZhcigtLWx1bW8tc3BhY2UtbSkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLW0pIC8gMik7CiAgICAtLWx1bW8tc3BhY2UtdGFsbC1sOiB2YXIoLS1sdW1vLXNwYWNlLWwpIGNhbGModmFyKC0tbHVtby1zcGFjZS1sKSAvIDIpOwogICAgLS1sdW1vLXNwYWNlLXRhbGwteGw6IHZhcigtLWx1bW8tc3BhY2UteGwpIGNhbGModmFyKC0tbHVtby1zcGFjZS14bCkgLyAyKTsKICB9CmAsQ2NlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7Q2NlLmlubmVySFRNTD1gPHN0eWxlPiR7RHVyLnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoQ2NlLmNvbnRlbnQpO3ZhciBPdXI9Q2lgCiAgOmhvc3QgewogICAgLyogQm9yZGVyIHJhZGl1cyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtczogMC4yNWVtOyAvKiBDaGVja2JveCwgYmFkZ2UsIGRhdGUtcGlja2VyIHllYXIgaW5kaWNhdG9yLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLW06IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cywgMC4yNWVtKTsgLyogQnV0dG9uLCB0ZXh0IGZpZWxkLCBtZW51IG92ZXJsYXksIGV0YyAqLwogICAgLS1sdW1vLWJvcmRlci1yYWRpdXMtbDogMC41ZW07IC8qIERpYWxvZywgbm90aWZpY2F0aW9uLCBldGMgKi8KICAgIC0tbHVtby1ib3JkZXItcmFkaXVzOiAwLjI1ZW07IC8qIERlcHJlY2F0ZWQgKi8KCiAgICAvKiBTaGFkb3cgKi8KICAgIC0tbHVtby1ib3gtc2hhZG93LXhzOiAwIDFweCA0cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTUwcGN0KTsKICAgIC0tbHVtby1ib3gtc2hhZG93LXM6IDAgMnB4IDRweCAtMXB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDNweCAxMnB4IC0xcHggdmFyKC0tbHVtby1zaGFkZS0zMHBjdCk7CiAgICAtLWx1bW8tYm94LXNoYWRvdy1tOiAwIDJweCA2cHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCA4cHggMjRweCAtNHB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3ctbDogMCAzcHggMThweCAtMnB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDEycHggNDhweCAtNnB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpOwogICAgLS1sdW1vLWJveC1zaGFkb3cteGw6IDAgNHB4IDI0cHggLTNweCB2YXIoLS1sdW1vLXNoYWRlLTIwcGN0KSwgMCAxOHB4IDY0cHggLThweCB2YXIoLS1sdW1vLXNoYWRlLTQwcGN0KTsKCiAgICAvKiBDbGlja2FibGUgZWxlbWVudCBjdXJzb3IgKi8KICAgIC0tbHVtby1jbGlja2FibGUtY3Vyc29yOiBkZWZhdWx0OwogIH0KYCxBY2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtBY2UuaW5uZXJIVE1MPWA8c3R5bGU+JHtPdXIudG9TdHJpbmcoKS5yZXBsYWNlKCI6aG9zdCIsImh0bWwiKX08L3N0eWxlPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChBY2UuY29udGVudCk7dmFyIHp1cj1DaWAKICA6aG9zdCB7CiAgICAvKiBwcmV0dGllci1pZ25vcmUgKi8KICAgIC0tbHVtby1mb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnUm9ib3RvJywgJ1NlZ29lIFVJJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJywgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCc7CgogICAgLyogRm9udCBzaXplcyAqLwogICAgLS1sdW1vLWZvbnQtc2l6ZS14eHM6IDAuNzVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLXhzOiAwLjgxMjVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLXM6IDAuODc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS1tOiAxcmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS1sOiAxLjEyNXJlbTsKICAgIC0tbHVtby1mb250LXNpemUteGw6IDEuMzc1cmVtOwogICAgLS1sdW1vLWZvbnQtc2l6ZS14eGw6IDEuNzVyZW07CiAgICAtLWx1bW8tZm9udC1zaXplLXh4eGw6IDIuNXJlbTsKCiAgICAvKiBMaW5lIGhlaWdodHMgKi8KICAgIC0tbHVtby1saW5lLWhlaWdodC14czogMS4yNTsKICAgIC0tbHVtby1saW5lLWhlaWdodC1zOiAxLjM3NTsKICAgIC0tbHVtby1saW5lLWhlaWdodC1tOiAxLjYyNTsKICB9CmAsUGNlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7UGNlLmlubmVySFRNTD1gPHN0eWxlPiR7enVyLnRvU3RyaW5nKCkucmVwbGFjZSgiOmhvc3QiLCJodG1sIil9PC9zdHlsZT5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoUGNlLmNvbnRlbnQpO3ZhciBGdXI9Q2lgCiAgaHRtbCB7CiAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLCB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1tKSk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1tKTsKICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKICB9CgogIC8qIENhbuKAmXQgY29tYmluZSB3aXRoIHRoZSBhYm92ZSBzZWxlY3RvciBiZWNhdXNlIHRoYXQgZG9lc27igJl0IHdvcmsgaW4gYnJvd3NlcnMgd2l0aG91dCBuYXRpdmUgc2hhZG93IGRvbSAqLwogIDpob3N0IHsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1sdW1vLWZvbnQtZmFtaWx5KTsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUsIHZhcigtLWx1bW8tZm9udC1zaXplLW0pKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LW0pOwogICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwogIH0KCiAgc21hbGwsCiAgW3RoZW1lfj0nZm9udC1zaXplLXMnXSB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXMpOwogICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQtcyk7CiAgfQoKICBbdGhlbWV+PSdmb250LXNpemUteHMnXSB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXhzKTsKICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXhzKTsKICB9CgogIGgxLAogIGgyLAogIGgzLAogIGg0LAogIGg1LAogIGg2IHsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC14cyk7CiAgICBtYXJnaW4tdG9wOiAxLjI1ZW07CiAgfQoKICBoMSB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXh4eGwpOwogICAgbWFyZ2luLWJvdHRvbTogMC43NWVtOwogIH0KCiAgaDIgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14eGwpOwogICAgbWFyZ2luLWJvdHRvbTogMC41ZW07CiAgfQoKICBoMyB7CiAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXhsKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOwogIH0KCiAgaDQgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1sKTsKICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOwogIH0KCiAgaDUgewogICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1tKTsKICAgIG1hcmdpbi1ib3R0b206IDAuMjVlbTsKICB9CgogIGg2IHsKICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHMpOwogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtOwogIH0KCiAgcCwKICBibG9ja3F1b3RlIHsKICAgIG1hcmdpbi10b3A6IDAuNWVtOwogICAgbWFyZ2luLWJvdHRvbTogMC43NWVtOwogIH0KCiAgYSB7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgfQoKICBhOmhvdmVyIHsKICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogIH0KCiAgaHIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgaGVpZ2h0OiAxcHg7CiAgICBib3JkZXI6IDA7CiAgICBwYWRkaW5nOiAwOwogICAgbWFyZ2luOiB2YXIoLS1sdW1vLXNwYWNlLXMpIGNhbGModmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLW0pIC8gMik7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTEwcGN0KTsKICB9CgogIGJsb2NrcXVvdGUgewogICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICB9CgogIGIsCiAgc3Ryb25nIHsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgfQoKICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCgogIGJsb2NrcXVvdGVbZGlyPSdydGwnXSB7CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIGJvcmRlci1yaWdodDogMnB4IHNvbGlkIHZhcigtLWx1bW8tY29udHJhc3QtMzBwY3QpOwogIH0KYDtXYygiIixGdXIse21vZHVsZUlkOiJsdW1vLXR5cG9ncmFwaHkifSk7V2MoInZhYWRpbi1jaGVja2JveCIsQ2lgCiAgICA6aG9zdCB7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICB9CgogICAgW3BhcnQ9J2xhYmVsJ106bm90KFtlbXB0eV0pIHsKICAgICAgbWFyZ2luOiAwLjE4NzVlbSAwLjg3NWVtIDAuMTg3NWVtIDAuMzc1ZW07CiAgICB9CgogICAgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICB3aWR0aDogY2FsYygxZW0gKyAycHgpOwogICAgICBoZWlnaHQ6IGNhbGMoMWVtICsgMnB4KTsKICAgICAgbWFyZ2luOiAwLjE4NzVlbTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcyk7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMjBwY3QpOwogICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBjdWJpYy1iZXppZXIoMC4xMiwgMC4zMiwgMC41NCwgMiksIGJhY2tncm91bmQtY29sb3IgMC4xNXM7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgfQoKICAgIDpob3N0KFtpbmRldGVybWluYXRlXSkgW3BhcnQ9J2NoZWNrYm94J10sCiAgICA6aG9zdChbY2hlY2tlZF0pIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yKTsKICAgIH0KCiAgICAvKiBOZWVkZWQgdG8gYWxpZ24gdGhlIGNoZWNrYm94IG5pY2VseSBvbiB0aGUgYmFzZWxpbmUgKi8KICAgIFtwYXJ0PSdjaGVja2JveCddOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnXFwyMDAzJzsKICAgIH0KCiAgICAvKiBDaGVja21hcmsgKi8KICAgIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHdpZHRoOiAwOwogICAgICBoZWlnaHQ6IDA7CiAgICAgIGJvcmRlcjogMCBzb2xpZCB2YXIoLS1sdW1vLXByaW1hcnktY29udHJhc3QtY29sb3IpOwogICAgICBib3JkZXItd2lkdGg6IDAuMTg3NWVtIDAgMCAwLjE4NzVlbTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMC44MTI1ZW07CiAgICAgIGxlZnQ6IDAuNWVtOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNTUpIHJvdGF0ZSgtMTM1ZGVnKTsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICA6aG9zdChbY2hlY2tlZF0pIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIG9wYWNpdHk6IDE7CiAgICAgIHdpZHRoOiAwLjYyNWVtOwogICAgICBoZWlnaHQ6IDEuMDYyNWVtOwogICAgfQoKICAgIC8qIEluZGV0ZXJtaW5hdGUgY2hlY2ttYXJrICovCiAgICA6aG9zdChbaW5kZXRlcm1pbmF0ZV0pIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgb3BhY2l0eTogMTsKICAgICAgdG9wOiA0NSU7CiAgICAgIGhlaWdodDogMTAlOwogICAgICBsZWZ0OiAyMiU7CiAgICAgIHJpZ2h0OiAyMiU7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBib3JkZXI6IDA7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcik7CiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXM7CiAgICB9CgogICAgLyogRm9jdXMgcmluZyAqLwogICAgOmhvc3QoW2ZvY3VzLXJpbmddKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIC8qIERpc2FibGVkICovCiAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBjb2xvcjogdmFyKC0tbHVtby1kaXNhYmxlZC10ZXh0LWNvbG9yKTsKICAgIH0KCiAgICA6aG9zdChbZGlzYWJsZWRdKSBbcGFydD0nbGFiZWwnXSA6OnNsb3R0ZWQoKikgewogICAgICBjb2xvcjogaW5oZXJpdDsKICAgIH0KCiAgICA6aG9zdChbZGlzYWJsZWRdKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgICB9CgogICAgOmhvc3QoW2luZGV0ZXJtaW5hdGVdW2Rpc2FibGVkXSkgW3BhcnQ9J2NoZWNrYm94J106OmFmdGVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgICB9CgogICAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0PSdsYWJlbCddOm5vdChbZW1wdHldKSB7CiAgICAgIG1hcmdpbjogMC4xODc1ZW0gMC4zNzVlbSAwLjE4NzVlbSAwLjg3NWVtOwogICAgfQoKICAgIC8qIFRyYW5zaXRpb24gdGhlIGNoZWNrbWFyayBpZiBhY3RpdmF0ZWQgd2l0aCB0aGUgbW91c2UgKGRpc2FibGVkIGZvciBncmlkIHNlbGVjdC1hbGwgdGhpcyB3YXkpICovCiAgICA6aG9zdCg6aG92ZXIpIFtwYXJ0PSdjaGVja2JveCddOjphZnRlciB7CiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMXMsIGhlaWdodCAwLjI1czsKICAgIH0KCiAgICAvKiBVc2VkIGZvciBhY3RpdmF0aW9uICJoYWxvIiAqLwogICAgW3BhcnQ9J2NoZWNrYm94J106OmJlZm9yZSB7CiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNCk7CiAgICAgIG9wYWNpdHk6IDA7CiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzLCBvcGFjaXR5IDAuOHM7CiAgICB9CgogICAgLyogSG92ZXIgKi8KICAgIDpob3N0KDpub3QoW2NoZWNrZWRdKTpub3QoW2luZGV0ZXJtaW5hdGVdKTpub3QoW2Rpc2FibGVkXSk6aG92ZXIpIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7CiAgICB9CgogICAgLyogRGlzYWJsZSBob3ZlciBmb3IgdG91Y2ggZGV2aWNlcyAqLwogICAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpIHsKICAgICAgOmhvc3QoOm5vdChbY2hlY2tlZF0pOm5vdChbaW5kZXRlcm1pbmF0ZV0pOm5vdChbZGlzYWJsZWRdKTpob3ZlcikgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMjBwY3QpOwogICAgICB9CiAgICB9CgogICAgLyogQWN0aXZlICovCiAgICA6aG9zdChbYWN0aXZlXSkgW3BhcnQ9J2NoZWNrYm94J10gewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOSk7CiAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDVzOwogICAgfQoKICAgIDpob3N0KFthY3RpdmVdW2NoZWNrZWRdKSBbcGFydD0nY2hlY2tib3gnXSB7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIH0KCiAgICA6aG9zdChbYWN0aXZlXTpub3QoW2NoZWNrZWRdKSkgW3BhcnQ9J2NoZWNrYm94J106OmJlZm9yZSB7CiAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDFzLCAwLjAxczsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgb3BhY2l0eTogMC40OwogICAgfQogIGAse21vZHVsZUlkOiJsdW1vLWNoZWNrYm94In0pO3ZhciBJY2U9ZT0+Y2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnt0aGVtZTp7dHlwZTpTdHJpbmcscmVhZE9ubHk6ITB9fX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2socixuLGkpe3N1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhyLG4saSkscj09PSJ0aGVtZSImJnRoaXMuX3NldFRoZW1lKGkpfX07dmFyIFdIPWU9PmNsYXNzIGV4dGVuZHMgSWNlKGUpe3N0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCk7bGV0IHI9dGhpcy5wcm90b3R5cGUuX3RlbXBsYXRlLG49T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMucHJvdG90eXBlKS5fdGVtcGxhdGU7biYmQXJyYXkuZnJvbShuLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbaW5jbHVkZV0iKSkuZm9yRWFjaChpPT57dGhpcy5faW5jbHVkZVN0eWxlKGkuZ2V0QXR0cmlidXRlKCJpbmNsdWRlIikscil9KSx0aGlzLl9pbmNsdWRlTWF0Y2hpbmdUaGVtZXMocil9c3RhdGljIF9pbmNsdWRlTWF0Y2hpbmdUaGVtZXMocil7bGV0IGk9aXUucHJvdG90eXBlLm1vZHVsZXMsbz0hMSxhPXRoaXMuaXMrIi1kZWZhdWx0LXRoZW1lIjtPYmplY3Qua2V5cyhpKS5zb3J0KChzLGwpPT57bGV0IGM9cy5pbmRleE9mKCJ2YWFkaW4tIik9PT0wLHU9bC5pbmRleE9mKCJ2YWFkaW4tIik9PT0wLGg9WyJsdW1vLSIsIm1hdGVyaWFsLSJdLGY9aC5maWx0ZXIoZD0+cy5pbmRleE9mKGQpPT09MCkubGVuZ3RoPjAscD1oLmZpbHRlcihkPT5sLmluZGV4T2YoZCk9PT0wKS5sZW5ndGg+MDtyZXR1cm4gYyE9PXU/Yz8tMToxOmYhPT1wP2Y/LTE6MTowfSkuZm9yRWFjaChzPT57aWYocyE9PWEpe2xldCBsPWlbc10uZ2V0QXR0cmlidXRlKCJ0aGVtZS1mb3IiKTtsJiZsLnNwbGl0KCIgIikuZm9yRWFjaChjPT57bmV3IFJlZ0V4cCgiXiIrYy5zcGxpdCgiKiIpLmpvaW4oIi4qIikrIiQiKS50ZXN0KHRoaXMuaXMpJiYobz0hMCx0aGlzLl9pbmNsdWRlU3R5bGUocyxyKSl9KX19KSwhbyYmaVthXSYmdGhpcy5faW5jbHVkZVN0eWxlKGEscil9c3RhdGljIF9pbmNsdWRlU3R5bGUocixuKXtpZihuJiYhbi5jb250ZW50LnF1ZXJ5U2VsZWN0b3IoYHN0eWxlW2luY2x1ZGU9IiR7cn0iXWApKXtsZXQgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2kuc2V0QXR0cmlidXRlKCJpbmNsdWRlIixyKSxuLmNvbnRlbnQuYXBwZW5kQ2hpbGQoaSl9fX07dmFyIExjdD0hMTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKCk9PntMY3Q9ITB9LHtjYXB0dXJlOiEwfSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKCk9PntMY3Q9ITF9LHtjYXB0dXJlOiEwfSk7dmFyIEJ1cj1lPT5jbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3RhYmluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX3RhYmluZGV4Q2hhbmdlZCJ9fX19LExjZT1lPT5jbGFzcyBleHRlbmRzIEJ1cihlKXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57YXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW59LF9wcmV2aW91c1RhYkluZGV4Ont0eXBlOk51bWJlcn0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfaXNTaGlmdFRhYmJpbmc6e3R5cGU6Qm9vbGVhbn19fXJlYWR5KCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c2luIixyPT57ci5jb21wb3NlZFBhdGgoKVswXT09PXRoaXM/dGhpcy5jb250YWlucyhyLnJlbGF0ZWRUYXJnZXQpfHx0aGlzLl9mb2N1cygpOnIuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLmZvY3VzRWxlbWVudCkhPT0tMSYmIXRoaXMuZGlzYWJsZWQmJnRoaXMuX3NldEZvY3VzZWQoITApfSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsKCk9PnRoaXMuX3NldEZvY3VzZWQoITEpKSxzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIscj0+eyFyLmRlZmF1bHRQcmV2ZW50ZWQmJnIua2V5Q29kZT09PTkmJnIuc2hpZnRLZXkmJih0aGlzLl9pc1NoaWZ0VGFiYmluZz0hMCxIVE1MRWxlbWVudC5wcm90b3R5cGUuZm9jdXMuYXBwbHkodGhpcyksdGhpcy5fc2V0Rm9jdXNlZCghMSksc2V0VGltZW91dCgoKT0+dGhpcy5faXNTaGlmdFRhYmJpbmc9ITEsMCkpfSksdGhpcy5hdXRvZm9jdXMmJiF0aGlzLmRpc2FibGVkJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5fZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSx0aGlzLnNldEF0dHJpYnV0ZSgiZm9jdXMtcmluZyIsIiIpfSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaGFzQXR0cmlidXRlKCJmb2N1c2VkIikmJnRoaXMuX3NldEZvY3VzZWQoITEpfV9zZXRGb2N1c2VkKHIpe3I/dGhpcy5zZXRBdHRyaWJ1dGUoImZvY3VzZWQiLCIiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZm9jdXNlZCIpLHImJkxjdD90aGlzLnNldEF0dHJpYnV0ZSgiZm9jdXMtcmluZyIsIiIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKCJmb2N1cy1yaW5nIil9Z2V0IGZvY3VzRWxlbWVudCgpe3JldHVybiB3aW5kb3cuY29uc29sZS53YXJuKGBQbGVhc2UgaW1wbGVtZW50IHRoZSAnZm9jdXNFbGVtZW50JyBwcm9wZXJ0eSBpbiA8JHt0aGlzLmxvY2FsTmFtZX0+YCksdGhpc31fZm9jdXMoKXshdGhpcy5mb2N1c0VsZW1lbnR8fHRoaXMuX2lzU2hpZnRUYWJiaW5nfHwodGhpcy5mb2N1c0VsZW1lbnQuZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSl9Zm9jdXMoKXshdGhpcy5mb2N1c0VsZW1lbnR8fHRoaXMuZGlzYWJsZWR8fCh0aGlzLmZvY3VzRWxlbWVudC5mb2N1cygpLHRoaXMuX3NldEZvY3VzZWQoITApKX1ibHVyKCl7IXRoaXMuZm9jdXNFbGVtZW50fHwodGhpcy5mb2N1c0VsZW1lbnQuYmx1cigpLHRoaXMuX3NldEZvY3VzZWQoITEpKX1fZGlzYWJsZWRDaGFuZ2VkKHIpe3RoaXMuZm9jdXNFbGVtZW50LmRpc2FibGVkPXIscj8odGhpcy5ibHVyKCksdGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4LHRoaXMudGFiaW5kZXg9LTEsdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIikpOih0eXBlb2YgdGhpcy5fcHJldmlvdXNUYWJJbmRleCE9InVuZGVmaW5lZCImJih0aGlzLnRhYmluZGV4PXRoaXMuX3ByZXZpb3VzVGFiSW5kZXgpLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRpc2FibGVkIikpfV90YWJpbmRleENoYW5nZWQocil7ciE9PXZvaWQgMCYmKHRoaXMuZm9jdXNFbGVtZW50LnRhYkluZGV4PXIpLHRoaXMuZGlzYWJsZWQmJnRoaXMudGFiaW5kZXgmJih0aGlzLnRhYmluZGV4IT09LTEmJih0aGlzLl9wcmV2aW91c1RhYkluZGV4PXRoaXMudGFiaW5kZXgpLHRoaXMudGFiaW5kZXg9cj12b2lkIDApfWNsaWNrKCl7dGhpcy5kaXNhYmxlZHx8c3VwZXIuY2xpY2soKX19O3ZhciBIdXI9L1wvXCpcKlxzK3ZhYWRpbi1kZXYtbW9kZTpzdGFydChbXHNcU10qKXZhYWRpbi1kZXYtbW9kZTplbmRccytcKlwqXC8vaSxZSD13aW5kb3cuVmFhZGluJiZ3aW5kb3cuVmFhZGluLkZsb3cmJndpbmRvdy5WYWFkaW4uRmxvdy5jbGllbnRzO2Z1bmN0aW9uIFZ1cigpe2Z1bmN0aW9uIGUoKXtyZXR1cm4hMH1yZXR1cm4ga2NlKGUpfWZ1bmN0aW9uIFV1cigpe3RyeXtyZXR1cm4gcXVyKCk/ITA6R3VyKCk/WUg/IVd1cigpOiFWdXIoKTohMX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gcXVyKCl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ2YWFkaW4uZGV2ZWxvcG1lbnRtb2RlLmZvcmNlIil9ZnVuY3Rpb24gR3VyKCl7cmV0dXJuWyJsb2NhbGhvc3QiLCIxMjcuMC4wLjEiXS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+PTB9ZnVuY3Rpb24gV3VyKCl7cmV0dXJuISEoWUgmJk9iamVjdC5rZXlzKFlIKS5tYXAodD0+WUhbdF0pLmZpbHRlcih0PT50LnByb2R1Y3Rpb25Nb2RlKS5sZW5ndGg+MCl9ZnVuY3Rpb24ga2NlKGUsdCl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpcmV0dXJuO2xldCByPUh1ci5leGVjKGUudG9TdHJpbmcoKSk7aWYocil0cnl7ZT1uZXcgRnVuY3Rpb24oclsxXSl9Y2F0Y2gobil7Y29uc29sZS5sb2coInZhYWRpbi1kZXZlbG9wbWVudC1tb2RlLWRldGVjdG9yOiB1bmNvbW1lbnRBbmRSdW4oKSBmYWlsZWQiLG4pfXJldHVybiBlKHQpfXdpbmRvdy5WYWFkaW49d2luZG93LlZhYWRpbnx8e307dmFyIGtjdD1mdW5jdGlvbihlLHQpe2lmKHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlKXJldHVybiBrY2UoZSx0KX07d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGU9PT12b2lkIDAmJih3aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZT1VdXIoKSk7ZnVuY3Rpb24gWXVyKCl7fXZhciBSY2U9ZnVuY3Rpb24oKXtpZih0eXBlb2Yga2N0PT0iZnVuY3Rpb24iKXJldHVybiBrY3QoWXVyKX07dmFyIGczPWNsYXNze3N0YXRpYyBkZXRlY3RTY3JvbGxUeXBlKCl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC50ZXh0Q29udGVudD0iQUJDRCIsdC5kaXI9InJ0bCIsdC5zdHlsZS5mb250U2l6ZT0iMTRweCIsdC5zdHlsZS53aWR0aD0iNHB4Iix0LnN0eWxlLmhlaWdodD0iMXB4Iix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS50b3A9Ii0xMDAwcHgiLHQuc3R5bGUub3ZlcmZsb3c9InNjcm9sbCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtsZXQgcj0icmV2ZXJzZSI7cmV0dXJuIHQuc2Nyb2xsTGVmdD4wP3I9ImRlZmF1bHQiOih0LnNjcm9sbExlZnQ9Mix0LnNjcm9sbExlZnQ8MiYmKHI9Im5lZ2F0aXZlIikpLGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCkscn1zdGF0aWMgZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodCxyLG4pe2xldHtzY3JvbGxMZWZ0Oml9PW47aWYociE9PSJydGwifHwhdClyZXR1cm4gaTtzd2l0Y2godCl7Y2FzZSJuZWdhdGl2ZSI6cmV0dXJuIG4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aCtpO2Nhc2UicmV2ZXJzZSI6cmV0dXJuIG4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aC1pfXJldHVybiBpfXN0YXRpYyBzZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0LHIsbixpKXtpZihyIT09InJ0bCJ8fCF0KXtuLnNjcm9sbExlZnQ9aTtyZXR1cm59c3dpdGNoKHQpe2Nhc2UibmVnYXRpdmUiOm4uc2Nyb2xsTGVmdD1uLmNsaWVudFdpZHRoLW4uc2Nyb2xsV2lkdGgraTticmVhaztjYXNlInJldmVyc2UiOm4uc2Nyb2xsTGVmdD1uLnNjcm9sbFdpZHRoLW4uY2xpZW50V2lkdGgtaTticmVhaztkZWZhdWx0Om4uc2Nyb2xsTGVmdD1pO2JyZWFrfX19O3ZhciBFMD1bXSxqdXI9ZnVuY3Rpb24oKXtsZXQgZT1OY3QoKTtFMC5mb3JFYWNoKHQ9PntSY3QodCxlKX0pfSxqSCxYdXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoanVyKTtYdXIub2JzZXJ2ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsiZGlyIl19KTt2YXIgUmN0PWZ1bmN0aW9uKGUsdCxyPWUuZ2V0QXR0cmlidXRlKCJkaXIiKSl7dD9lLnNldEF0dHJpYnV0ZSgiZGlyIix0KTpyIT1udWxsJiZlLnJlbW92ZUF0dHJpYnV0ZSgiZGlyIil9LE5jdD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKX0sWEg9ZT0+Y2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntkaXI6e3R5cGU6U3RyaW5nLHZhbHVlOiIiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH19fXN0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCksakh8fChqSD1nMy5kZXRlY3RTY3JvbGxUeXBlKCkpfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhc0F0dHJpYnV0ZSgiZGlyIil8fCh0aGlzLl9fc3Vic2NyaWJlKCksUmN0KHRoaXMsTmN0KCksbnVsbCkpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhyLG4saSl7aWYoc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHIsbixpKSxyIT09ImRpciIpcmV0dXJuO2xldCBvPU5jdCgpLGE9aT09PW8mJkUwLmluZGV4T2YodGhpcyk9PT0tMSxzPSFpJiZuJiZFMC5pbmRleE9mKHRoaXMpPT09LTE7YXx8cz8odGhpcy5fX3N1YnNjcmliZSgpLFJjdCh0aGlzLG8saSkpOmkhPT1vJiZuPT09byYmdGhpcy5fX3N1YnNjcmliZSghMSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX19zdWJzY3JpYmUoITEpLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJkaXIiKX1fdmFsdWVUb05vZGVBdHRyaWJ1dGUocixuLGkpe2k9PT0iZGlyIiYmbj09PSIiJiYhci5oYXNBdHRyaWJ1dGUoImRpciIpfHxzdXBlci5fdmFsdWVUb05vZGVBdHRyaWJ1dGUocixuLGkpfV9hdHRyaWJ1dGVUb1Byb3BlcnR5KHIsbixpKXtyPT09ImRpciImJiFuP3RoaXMuZGlyPSIiOnN1cGVyLl9hdHRyaWJ1dGVUb1Byb3BlcnR5KHIsbixpKX1fX3N1YnNjcmliZShyPSEwKXtyP0UwLmluZGV4T2YodGhpcyk9PT0tMSYmRTAucHVzaCh0aGlzKTpFMC5pbmRleE9mKHRoaXMpPi0xJiZFMC5zcGxpY2UoRTAuaW5kZXhPZih0aGlzKSwxKX1fX2dldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHIpe3JldHVybiBnMy5nZXROb3JtYWxpemVkU2Nyb2xsTGVmdChqSCx0aGlzLmdldEF0dHJpYnV0ZSgiZGlyIil8fCJsdHIiLHIpfV9fc2V0Tm9ybWFsaXplZFNjcm9sbExlZnQocixuKXtyZXR1cm4gZzMuc2V0Tm9ybWFsaXplZFNjcm9sbExlZnQoakgsdGhpcy5nZXRBdHRyaWJ1dGUoImRpciIpfHwibHRyIixyLG4pfX07d2luZG93LlZhYWRpbj13aW5kb3cuVmFhZGlufHx7fTt3aW5kb3cuVmFhZGluLnJlZ2lzdHJhdGlvbnM9d2luZG93LlZhYWRpbi5yZWdpc3RyYXRpb25zfHxbXTt3aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZUNhbGxiYWNrPXdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2t8fHt9O3dpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2tbInZhYWRpbi11c2FnZS1zdGF0aXN0aWNzIl09ZnVuY3Rpb24oKXtSY2UoKX07dmFyIERjdCxOY2U9bmV3IFNldCwkSD1lPT5jbGFzcyBleHRlbmRzIFhIKGUpe3N0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCk7bGV0e2lzOnJ9PXRoaXM7ciYmIU5jZS5oYXMocikmJih3aW5kb3cuVmFhZGluLnJlZ2lzdHJhdGlvbnMucHVzaCh0aGlzKSxOY2UuYWRkKHIpLHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2smJihEY3Q9c3IuZGVib3VuY2UoRGN0LEx4LCgpPT57d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXSgpfSksS2woRGN0KSkpfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSxkb2N1bWVudC5kb2N0eXBlPT09bnVsbCYmY29uc29sZS53YXJuKCdWYWFkaW4gY29tcG9uZW50cyByZXF1aXJlIHRoZSAic3RhbmRhcmRzIG1vZGUiIGRlY2xhcmF0aW9uLiBQbGVhc2UgYWRkIDwhRE9DVFlQRSBodG1sPiB0byB0aGUgSFRNTCBkb2N1bWVudC4nKX19O3ZhciBLSD1jbGFzcyBleHRlbmRzICRIKExjZShXSChfaChtdCkpKSl7c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBRYAogICAgICA8c3R5bGU+CiAgICAgICAgOmhvc3QgewogICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIGxhYmVsIHsKICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB9CgogICAgICAgIFtwYXJ0PSdjaGVja2JveCddIHsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgIGZsZXg6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddIHsKICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgIHRvcDogMDsKICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICByaWdodDogMDsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgIGN1cnNvcjogaW5oZXJpdDsKICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgfQogICAgICA8L3N0eWxlPgoKICAgICAgPGxhYmVsPgogICAgICAgIDxzcGFuIHBhcnQ9ImNoZWNrYm94Ij4KICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICAgY2hlY2tlZD0ie3tjaGVja2VkOjpjaGFuZ2V9fSIKICAgICAgICAgICAgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iCiAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9Int7aW5kZXRlcm1pbmF0ZTo6Y2hhbmdlfX0iCiAgICAgICAgICAgIHJvbGU9InByZXNlbnRhdGlvbiIKICAgICAgICAgICAgdGFiaW5kZXg9Ii0xIgogICAgICAgICAgLz4KICAgICAgICA8L3NwYW4+CgogICAgICAgIDxzcGFuIHBhcnQ9ImxhYmVsIj4KICAgICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvbGFiZWw+CiAgICBgfXN0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWNoZWNrYm94In1zdGF0aWMgZ2V0IHZlcnNpb24oKXtyZXR1cm4iMjAuMC4yIn1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57Y2hlY2tlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX2NoZWNrZWRDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGluZGV0ZXJtaW5hdGU6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9pbmRldGVybWluYXRlQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9uIn0sX25hdGl2ZUNoZWNrYm94Ont0eXBlOk9iamVjdH19fWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLm5hbWV9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5jaGVja2VkP3RoaXMuX3N0b3JlZE5hbWU6IiJ9c2V0IG5hbWUodCl7dGhpcy5fc3RvcmVkTmFtZT10fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsImNoZWNrYm94IiksdGhpcy5fbmF0aXZlQ2hlY2tib3g9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKSx0aGlzLl9hZGRBY3RpdmVMaXN0ZW5lcnMoKTtsZXQgdD10aGlzLmdldEF0dHJpYnV0ZSgibmFtZSIpO3QmJih0aGlzLm5hbWU9dCksdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0ibGFiZWwiXScpLnF1ZXJ5U2VsZWN0b3IoInNsb3QiKS5hZGRFdmVudExpc3RlbmVyKCJzbG90Y2hhbmdlIix0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZS5iaW5kKHRoaXMpKSx0aGlzLl91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpfV91cGRhdGVMYWJlbEF0dHJpYnV0ZSgpe2xldCB0PXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdbcGFydH49ImxhYmVsIl0nKSxyPXQuZmlyc3RFbGVtZW50Q2hpbGQuYXNzaWduZWROb2RlcygpO3RoaXMuX2lzQXNzaWduZWROb2Rlc0VtcHR5KHIpP3Quc2V0QXR0cmlidXRlKCJlbXB0eSIsIiIpOnQucmVtb3ZlQXR0cmlidXRlKCJlbXB0eSIpfV9pc0Fzc2lnbmVkTm9kZXNFbXB0eSh0KXtyZXR1cm4gdC5sZW5ndGg9PT0wfHx0Lmxlbmd0aD09MSYmdFswXS5ub2RlVHlwZT09Tm9kZS5URVhUX05PREUmJnRbMF0udGV4dENvbnRlbnQudHJpbSgpPT09IiJ9X2NoZWNrZWRDaGFuZ2VkKHQpe3RoaXMuaW5kZXRlcm1pbmF0ZT90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIiwibWl4ZWQiKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIixCb29sZWFuKHQpKX1faW5kZXRlcm1pbmF0ZUNoYW5nZWQodCl7dD90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIiwibWl4ZWQiKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIix0aGlzLmNoZWNrZWQpfV9hZGRBY3RpdmVMaXN0ZW5lcnMoKXt0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHRoaXMsImRvd24iLHQ9Pnt0aGlzLl9faW50ZXJhY3Rpb25zQWxsb3dlZCh0KSYmdGhpcy5zZXRBdHRyaWJ1dGUoImFjdGl2ZSIsIiIpfSksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0aGlzLCJ1cCIsKCk9PnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhY3RpdmUiKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0PT57dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJnQua2V5Q29kZT09PTMyJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuc2V0QXR0cmlidXRlKCJhY3RpdmUiLCIiKSl9KSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIix0PT57dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJnQua2V5Q29kZT09PTMyJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYWN0aXZlIiksdGhpcy5pbmRldGVybWluYXRlJiYodGhpcy5pbmRldGVybWluYXRlPSExKSl9KX1nZXQgZm9jdXNFbGVtZW50KCl7cmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpfV9faW50ZXJhY3Rpb25zQWxsb3dlZCh0KXtyZXR1cm4hKHRoaXMuZGlzYWJsZWR8fHQudGFyZ2V0LmxvY2FsTmFtZT09PSJhIil9X2hhbmRsZUNsaWNrKHQpe3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYodGhpcy5pbmRldGVybWluYXRlPyh0aGlzLmluZGV0ZXJtaW5hdGU9ITEsdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSk6dC5jb21wb3NlZFBhdGgoKVswXSE9PXRoaXMuX25hdGl2ZUNoZWNrYm94JiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSkpfV90b2dnbGVDaGVja2VkKCl7dGhpcy5jaGVja2VkPSF0aGlzLmNoZWNrZWQsdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2hhbmdlIix7Y29tcG9zZWQ6ITEsYnViYmxlczohMH0pKX19O2N1c3RvbUVsZW1lbnRzLmRlZmluZShLSC5pcyxLSCk7V2MoInZhYWRpbi1ncmlkIixDaWAKICAgIDpob3N0IHsKICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWx1bW8tZm9udC1mYW1pbHkpOwogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pOwogICAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC1zKTsKICAgICAgY29sb3I6IHZhcigtLWx1bW8tYm9keS10ZXh0LWNvbG9yKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsKCiAgICAgIC8qIEZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTIwcGN0KTsKICAgICAgLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMTBwY3QpOwogICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAgIC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci0xMHBjdCk7CiAgICB9CgogICAgLyogTm8gKG91dGVyKSBib3JkZXIgKi8KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLWJvcmRlciddKSkgewogICAgICBib3JkZXI6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogQ2VsbCBzdHlsZXMgKi8KCiAgICBbcGFydH49J2NlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1tKTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgcGFkZGluZzogdmFyKC0tbHVtby1zcGFjZS14cykgdmFyKC0tbHVtby1zcGFjZS1tKTsKICAgIH0KCiAgICAvKiBBcHBseSByb3cgYm9yZGVycyBieSBkZWZhdWx0IGFuZCBpbnRyb2R1Y2UgdGhlICJuby1yb3ctYm9yZGVycyIgdmFyaWFudCAqLwogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm9yZGVyLXRvcDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcik7CiAgICB9CgogICAgLyogSGlkZSBmaXJzdCBib2R5IHJvdyB0b3AgYm9yZGVyICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J11bZmlyc3RdIFtwYXJ0fj0nY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJvcmRlci10b3A6IDA7CiAgICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tbHVtby1zaXplLW0pIC0gdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpKTsKICAgIH0KCiAgICAvKiBGb2N1cy1yaW5nICovCgogICAgW3BhcnR+PSdjZWxsJ106Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIDpob3N0KFtuYXZpZ2F0aW5nXSkgW3BhcnR+PSdjZWxsJ106Zm9jdXM6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIC8qIERyYWcgYW5kIERyb3Agc3R5bGVzICovCiAgICA6aG9zdChbZHJhZ292ZXJdKTo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB6LWluZGV4OiAxMDA7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGJvdHRvbTogMDsKICAgICAgbGVmdDogMDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXJdIHsKICAgICAgei1pbmRleDogMTAwICFpbXBvcnRhbnQ7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcl0gW3BhcnR+PSdjZWxsJ10gewogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdvdmVyXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIGhlaWdodDogY2FsYyh2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgKyAycHgpOwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0KTsKICAgIH0KCiAgICA6aG9zdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSBbZHJhZ292ZXJdIFtwYXJ0fj0nY2VsbCddOjphZnRlciB7CiAgICAgIGhlaWdodDogMnB4OwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXI9J2JlbG93J10gW3BhcnR+PSdjZWxsJ106OmFmdGVyIHsKICAgICAgdG9wOiAxMDAlOwogICAgICBib3R0b206IGF1dG87CiAgICAgIG1hcmdpbi10b3A6IC0xcHg7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnb3Zlcj0nYWJvdmUnXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICB0b3A6IGF1dG87CiAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RldGFpbHMtb3BlbmVkXVtkcmFnb3Zlcj0nYmVsb3cnXSBbcGFydH49J2NlbGwnXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSk6OmFmdGVyLAogICAgW3BhcnR+PSdyb3cnXVtkZXRhaWxzLW9wZW5lZF1bZHJhZ292ZXI9J2Fib3ZlJ10gW3BhcnR+PSdkZXRhaWxzLWNlbGwnXTo6YWZ0ZXIgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIFtwYXJ0fj0ncm93J11bZHJhZ292ZXJdW2RyYWdvdmVyPSdvbi10b3AnXSBbcGFydH49J2NlbGwnXTo6YWZ0ZXIgewogICAgICBoZWlnaHQ6IDEwMCU7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIHsKICAgICAgLyogQWRkIGJvdHRvbS1zcGFjZSB0byB0aGUgcm93IHNvIHRoZSBkcmFnIG51bWJlciBkb2Vzbid0IGdldCBjbGlwcGVkLiBOZWVkZWQgZm9yIElFL0VkZ2UgKi8KICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIHotaW5kZXg6IDEwMCAhaW1wb3J0YW50OwogICAgICBvcGFjaXR5OiAwLjk7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddIHsKICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ11bbGFzdC1jb2x1bW5dIHsKICAgICAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpIDA7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddW2ZpcnN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMCAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgIH0KCiAgICBbaW9zXSBbcGFydH49J3JvdyddW2RyYWdzdGFydF0gW3BhcnR+PSdjZWxsJ10gewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgfQoKICAgICNzY3JvbGxlcjpub3QoW2lvc10pIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XTpub3QoW2RyYWdzdGFydD0nJ10pOjphZnRlciB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGxlZnQ6IHZhcigtLV9ncmlkLWRyYWctc3RhcnQteCk7CiAgICAgIHRvcDogdmFyKC0tX2dyaWQtZHJhZy1zdGFydC15KTsKICAgICAgei1pbmRleDogMTAwOwogICAgICBjb250ZW50OiBhdHRyKGRyYWdzdGFydCk7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwYWRkaW5nOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpICogMC44KTsKICAgICAgY29sb3I6IHZhcigtLWx1bW8tZXJyb3ItY29udHJhc3QtY29sb3IpOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWVycm9yLWNvbG9yKTsKICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLW0pOwogICAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7CiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHhzKTsKICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsOwogICAgICBsZXR0ZXItc3BhY2luZzogaW5pdGlhbDsKICAgICAgbWluLXdpZHRoOiBjYWxjKHZhcigtLWx1bW8tc2l6ZS1zKSAqIDAuNyk7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAvKiBIZWFkZXJzIGFuZCBmb290ZXJzICovCgogICAgW3BhcnR+PSdoZWFkZXItY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgW3BhcnR+PSdmb290ZXItY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgW3BhcnR+PSdyZW9yZGVyLWdob3N0J10gewogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXMpOwogICAgICBmb250LXdlaWdodDogNTAwOwogICAgfQoKICAgIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICB9CgogICAgW3BhcnQ9J3JvdyddOm9ubHktY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgbWluLWhlaWdodDogdmFyKC0tbHVtby1zaXplLXhsKTsKICAgIH0KCiAgICAvKiBIZWFkZXIgYm9yZGVycyAqLwoKICAgIC8qIEhpZGUgZmlyc3QgaGVhZGVyIHJvdyB0b3AgYm9yZGVyICovCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcDogMDsKICAgIH0KCiAgICBbcGFydD0ncm93J106bGFzdC1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBib3JkZXItYm90dG9tOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnQ7CiAgICB9CgogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnQ9J3JvdyddOmxhc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBPdmVyZmxvdyB1c2VzIGEgc3Ryb25nZXIgYm9yZGVyIGNvbG9yICovCiAgICA6aG9zdChbb3ZlcmZsb3d+PSd0b3AnXSkgW3BhcnQ9J3JvdyddOmxhc3QtY2hpbGQgW3BhcnR+PSdoZWFkZXItY2VsbCddIHsKICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQoKICAgIC8qIEZvb3RlciBib3JkZXJzICovCgogICAgW3BhcnQ9J3JvdyddOmZpcnN0LWNoaWxkIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSB7CiAgICAgIGJvcmRlci10b3A6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIH0KCiAgICA6aG9zdCg6bm90KFt0aGVtZX49J25vLXJvdy1ib3JkZXJzJ10pKSBbcGFydD0ncm93J106Zmlyc3QtY2hpbGQgW3BhcnR+PSdmb290ZXItY2VsbCddIHsKICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBPdmVyZmxvdyB1c2VzIGEgc3Ryb25nZXIgYm9yZGVyIGNvbG9yICovCiAgICA6aG9zdChbb3ZlcmZsb3d+PSdib3R0b20nXSkgW3BhcnQ9J3JvdyddOmZpcnN0LWNoaWxkIFtwYXJ0fj0nZm9vdGVyLWNlbGwnXSB7CiAgICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBDb2x1bW4gcmVvcmRlcmluZyAqLwoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdjZWxsJ10gewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgfQoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSdjZWxsJ11bcmVvcmRlci1zdGF0dXM9J2FsbG93ZWQnXSB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgICB9CgogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J2NlbGwnXVtyZW9yZGVyLXN0YXR1cz0nZHJhZ2dpbmcnXSB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpLCB2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgfQoKICAgIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgb3BhY2l0eTogMC44NTsKICAgICAgYm94LXNoYWRvdzogdmFyKC0tbHVtby1ib3gtc2hhZG93LXMpOwogICAgICAvKiBUT0RPIFVzZSB0aGUgc2FtZSBzdHlsZXMgYXMgZm9yIHRoZSBjZWxsIGVsZW1lbnQgKHJlb3JkZXItZ2hvc3QgY29waWVzIHN0eWxlcyBmcm9tIHRoZSBjZWxsIGVsZW1lbnQpICovCiAgICAgIHBhZGRpbmc6IHZhcigtLWx1bW8tc3BhY2UtcykgdmFyKC0tbHVtby1zcGFjZS1tKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIENvbHVtbiByZXNpemluZyAqLwoKICAgIFtwYXJ0PSdyZXNpemUtaGFuZGxlJ10gewogICAgICB3aWR0aDogM3B4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgICBvcGFjaXR5OiAwOwogICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSAqOm5vdChbY29sdW1uLXJlc2l6aW5nXSkgW3BhcnR+PSdjZWxsJ106aG92ZXIgW3BhcnQ9J3Jlc2l6ZS1oYW5kbGUnXSwKICAgIFtwYXJ0PSdyZXNpemUtaGFuZGxlJ106YWN0aXZlIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4xNXM7CiAgICB9CgogICAgLyogQ29sdW1uIGJvcmRlcnMgKi8KCiAgICA6aG9zdChbdGhlbWV+PSdjb2x1bW4tYm9yZGVycyddKSBbcGFydH49J2NlbGwnXTpub3QoW2xhc3QtY29sdW1uXSk6bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBGcm96ZW4gY29sdW1ucyAqLwoKICAgIFtsYXN0LWZyb3plbl0gewogICAgICBib3JkZXItcmlnaHQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIH0KCiAgICA6aG9zdChbb3ZlcmZsb3d+PSdsZWZ0J10pIFtwYXJ0fj0nY2VsbCddW2xhc3QtZnJvemVuXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICAvKiBSb3cgc3RyaXBlcyAqLwoKICAgIDpob3N0KFt0aGVtZX49J3Jvdy1zdHJpcGVzJ10pIFtwYXJ0fj0ncm93J106bm90KFtvZGRdKSBbcGFydH49J2JvZHktY2VsbCddLAogICAgOmhvc3QoW3RoZW1lfj0ncm93LXN0cmlwZXMnXSkgW3BhcnR+PSdyb3cnXTpub3QoW29kZF0pIFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10gewogICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbHVtby1jb250cmFzdC01cGN0KSwgdmFyKC0tbHVtby1jb250cmFzdC01cGN0KSk7CiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgIH0KCiAgICAvKiBTZWxlY3RlZCByb3cgKi8KCiAgICAvKiBSYWlzZSB0aGUgc2VsZWN0ZWQgcm93cyBhYm92ZSB1bnNlbGVjdGVkIHJvd3MgKHNvIHRoYXQgYm94LXNoYWRvdyBjYW4gY292ZXIgdW5zZWxlY3RlZCByb3dzKSAqLwogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSBbcGFydH49J3JvdyddW3NlbGVjdGVkXSB7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSBbcGFydH49J3JvdyddW3NlbGVjdGVkXSBbcGFydH49J2JvZHktY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1fbHVtby1ncmlkLXNlbGVjdGVkLXJvdy1jb2xvciksIHZhcigtLV9sdW1vLWdyaWQtc2VsZWN0ZWQtcm93LWNvbG9yKSk7CiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CiAgICB9CgogICAgLyogQ292ZXIgdGhlIGJvcmRlciBvZiBhbiB1bnNlbGVjdGVkIHJvdyAqLwogICAgOmhvc3QoOm5vdChbdGhlbWV+PSduby1yb3ctYm9yZGVycyddKSkgW3BhcnR+PSdyb3cnXVtzZWxlY3RlZF0gW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgYm94LXNoYWRvdzogMCB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgMCAwIHZhcigtLV9sdW1vLWdyaWQtc2VsZWN0ZWQtcm93LWNvbG9yKTsKICAgIH0KCiAgICAvKiBDb21wYWN0ICovCgogICAgOmhvc3QoW3RoZW1lfj0nY29tcGFjdCddKSBbcGFydD0ncm93J106b25seS1jaGlsZCBbcGFydH49J2hlYWRlci1jZWxsJ10gewogICAgICBtaW4taGVpZ2h0OiB2YXIoLS1sdW1vLXNpemUtbSk7CiAgICB9CgogICAgOmhvc3QoW3RoZW1lfj0nY29tcGFjdCddKSBbcGFydH49J2NlbGwnXSB7CiAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1zKTsKICAgIH0KCiAgICA6aG9zdChbdGhlbWV+PSdjb21wYWN0J10pIFtwYXJ0PSdyb3cnXVtmaXJzdF0gW3BhcnR+PSdjZWxsJ106bm90KFtwYXJ0fj0nZGV0YWlscy1jZWxsJ10pIHsKICAgICAgbWluLWhlaWdodDogY2FsYyh2YXIoLS1sdW1vLXNpemUtcykgLSB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkpOwogICAgfQoKICAgIDpob3N0KFt0aGVtZX49J2NvbXBhY3QnXSkgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBwYWRkaW5nOiB2YXIoLS1sdW1vLXNwYWNlLXhzKSB2YXIoLS1sdW1vLXNwYWNlLXMpOwogICAgfQoKICAgIC8qIFdyYXAgY2VsbCBjb250ZW50cyAqLwoKICAgIDpob3N0KFt0aGVtZX49J3dyYXAtY2VsbC1jb250ZW50J10pIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgIH0KCiAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCgogICAgOmhvc3QoW2Rpcj0ncnRsJ10pIFtwYXJ0fj0ncm93J11bZHJhZ3N0YXJ0XSBbcGFydH49J2NlbGwnXVtsYXN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMCAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyb3cnXVtkcmFnc3RhcnRdIFtwYXJ0fj0nY2VsbCddW2ZpcnN0LWNvbHVtbl0gewogICAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXVt0aGVtZX49J2NvbHVtbi1ib3JkZXJzJ10pIFtwYXJ0fj0nY2VsbCddOm5vdChbbGFzdC1jb2x1bW5dKTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgIGJvcmRlci1sZWZ0OiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yKTsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtZnJvemVuXSB7CiAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXVtvdmVyZmxvd349J3JpZ2h0J10pIFtwYXJ0fj0nY2VsbCddW2xhc3QtZnJvemVuXTpub3QoW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSkgewogICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgfQogIGAse21vZHVsZUlkOiJsdW1vLWdyaWQifSk7V2MoInZhYWRpbi1jaGVja2JveCIsQ2lgCiAgICA6aG9zdCgudmFhZGluLWdyaWQtc2VsZWN0LWFsbC1jaGVja2JveCkgewogICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pOwogICAgfQogIGAse21vZHVsZUlkOiJ2YWFkaW4tZ3JpZC1zZWxlY3QtYWxsLWNoZWNrYm94LWx1bW8ifSk7dmFyIERjZT1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OmhvbmV8YWQ7KD86IFU7KT8gQ1BVKSBPUyAoXGQrKS8pLCR1cj1EY2UmJkRjZVsxXT49OCxPY2U9Myx6Y2U9bDkoe2JlaGF2aW9yczpbWnMsZzldLF9yYXRpbzouNSxfc2Nyb2xsZXJQYWRkaW5nVG9wOjAsX3Njcm9sbFBvc2l0aW9uOjAsX3BoeXNpY2FsU2l6ZTowLF9waHlzaWNhbEF2ZXJhZ2U6MCxfcGh5c2ljYWxBdmVyYWdlQ291bnQ6MCxfcGh5c2ljYWxUb3A6MCxfdmlydHVhbENvdW50OjAsX2VzdFNjcm9sbEhlaWdodDowLF9zY3JvbGxIZWlnaHQ6MCxfdmlld3BvcnRIZWlnaHQ6MCxfdmlld3BvcnRXaWR0aDowLF9waHlzaWNhbEl0ZW1zOm51bGwsX3BoeXNpY2FsU2l6ZXM6bnVsbCxfZmlyc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbGFzdFZpc2libGVJbmRleFZhbDpudWxsLF9tYXhQYWdlczoyLF9mb2N1c2VkVmlydHVhbEluZGV4Oi0xLF90ZW1wbGF0ZUNvc3Q6MCxnZXQgX3BoeXNpY2FsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3BoeXNpY2FsU2l6ZX0sZ2V0IF9zY3JvbGxCb3R0b20oKXtyZXR1cm4gdGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfdmlydHVhbEVuZCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xfSxnZXQgX2hpZGRlbkNvbnRlbnRTaXplKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsU2l6ZS10aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF9tYXhTY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3ZpZXdwb3J0SGVpZ2h0K3RoaXMuX3Njcm9sbE9mZnNldH0sZ2V0IF9tYXhWaXJ0dWFsU3RhcnQoKXtyZXR1cm4gTWF0aC5tYXgoMCx0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fcGh5c2ljYWxDb3VudCl9LHNldCBfdmlydHVhbFN0YXJ0KGUpe2U9dGhpcy5fY2xhbXAoZSwwLHRoaXMuX21heFZpcnR1YWxTdGFydCksdGhpcy5fdmlydHVhbFN0YXJ0VmFsPWV9LGdldCBfdmlydHVhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydFZhbHx8MH0sc2V0IF9waHlzaWNhbFN0YXJ0KGUpe2U9ZSV0aGlzLl9waHlzaWNhbENvdW50LGU8MCYmKGU9dGhpcy5fcGh5c2ljYWxDb3VudCtlKSx0aGlzLl9waHlzaWNhbFN0YXJ0VmFsPWV9LGdldCBfcGh5c2ljYWxTdGFydCgpe3JldHVybiB0aGlzLl9waHlzaWNhbFN0YXJ0VmFsfHwwfSxnZXQgX3BoeXNpY2FsRW5kKCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xKSV0aGlzLl9waHlzaWNhbENvdW50fSxzZXQgX3BoeXNpY2FsQ291bnQoZSl7dGhpcy5fcGh5c2ljYWxDb3VudFZhbD1lfSxnZXQgX3BoeXNpY2FsQ291bnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxDb3VudFZhbHx8MH0sZ2V0IF9vcHRQaHlzaWNhbFNpemUoKXtyZXR1cm4gdGhpcy5fdmlld3BvcnRIZWlnaHQ9PT0wPzEvMDp0aGlzLl92aWV3cG9ydEhlaWdodCp0aGlzLl9tYXhQYWdlc30sZ2V0IF9pc1Zpc2libGUoKXtyZXR1cm4gQm9vbGVhbih0aGlzLm9mZnNldFdpZHRofHx0aGlzLm9mZnNldEhlaWdodCl9LGdldCBmaXJzdFZpc2libGVJbmRleCgpe2xldCBlPXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsO2lmKGU9PW51bGwpe2xldCB0PXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDtlPXRoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihyLG4pe2lmKHQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbcl0sdD50aGlzLl9zY3JvbGxQb3NpdGlvbilyZXR1cm4gbn0pfHwwLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPWV9cmV0dXJuIGV9LGdldCBsYXN0VmlzaWJsZUluZGV4KCl7bGV0IGU9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbDtpZihlPT1udWxsKXtsZXQgdD10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKHIsbil7dDx0aGlzLl9zY3JvbGxCb3R0b20mJihlPW4pLHQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbcl19KSx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPWV9cmV0dXJuIGV9LGdldCBfc2Nyb2xsT2Zmc2V0KCl7cmV0dXJuIHRoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcH0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLFJpKSx0aGlzLmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy51bmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIil9LHVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllczpmdW5jdGlvbigpe2xldCBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpO3RoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcD10aGlzLnNjcm9sbFRhcmdldD09PXRoaXM/MDpwYXJzZUludChlWyJwYWRkaW5nLXRvcCJdLDEwKSx0aGlzLl9pc1JUTD1Cb29sZWFuKGUuZGlyZWN0aW9uPT09InJ0bCIpLHRoaXMuX3ZpZXdwb3J0V2lkdGg9dGhpcy4kLml0ZW1zLm9mZnNldFdpZHRoLHRoaXMuX3ZpZXdwb3J0SGVpZ2h0PXRoaXMuX3Njcm9sbFRhcmdldEhlaWdodH0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXtsZXQgZT1NYXRoLm1heCgwLE1hdGgubWluKHRoaXMuX21heFNjcm9sbFRvcCx0aGlzLl9zY3JvbGxUb3ApKSx0PWUtdGhpcy5fc2Nyb2xsUG9zaXRpb24scj10Pj0wO2lmKHRoaXMuX3Njcm9sbFBvc2l0aW9uPWUsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsTWF0aC5hYnModCk+dGhpcy5fcGh5c2ljYWxTaXplJiZ0aGlzLl9waHlzaWNhbFNpemU+MCl7dD10LXRoaXMuX3Njcm9sbE9mZnNldDtsZXQgbj1NYXRoLnJvdW5kKHQvdGhpcy5fcGh5c2ljYWxBdmVyYWdlKTt0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K24sdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K24sdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZSx0aGlzLl91cGRhdGUoKX1lbHNlIGlmKHRoaXMuX3BoeXNpY2FsQ291bnQ+MCl7bGV0e3BoeXNpY2FsVG9wOm4saW5kZXhlczppfT10aGlzLl9nZXRSZXVzYWJsZXMocik7cj8odGhpcy5fcGh5c2ljYWxUb3A9bix0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2kubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtpLmxlbmd0aCk6KHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQtaS5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0LWkubGVuZ3RoKSx0aGlzLl91cGRhdGUoaSxyP251bGw6aSksdGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLDApLGNpKX19LF9nZXRSZXVzYWJsZXM6ZnVuY3Rpb24oZSl7bGV0IHQscixuLGk9W10sbz10aGlzLl9oaWRkZW5Db250ZW50U2l6ZSp0aGlzLl9yYXRpbyxhPXRoaXMuX3ZpcnR1YWxTdGFydCxzPXRoaXMuX3ZpcnR1YWxFbmQsbD10aGlzLl9waHlzaWNhbENvdW50LGM9dGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0LHU9dGhpcy5fcGh5c2ljYWxCb3R0b20rdGhpcy5fc2Nyb2xsT2Zmc2V0LGg9dGhpcy5fc2Nyb2xsVG9wLGY9dGhpcy5fc2Nyb2xsQm90dG9tO2ZvcihlPyh0PXRoaXMuX3BoeXNpY2FsU3RhcnQscj1oLWMpOih0PXRoaXMuX3BoeXNpY2FsRW5kLHI9dS1mKTtuPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0scj1yLW4sIShpLmxlbmd0aD49bHx8cjw9byk7KWlmKGUpe2lmKHMraS5sZW5ndGgrMT49dGhpcy5fdmlydHVhbENvdW50fHxjK24+PWgtdGhpcy5fc2Nyb2xsT2Zmc2V0KWJyZWFrO2kucHVzaCh0KSxjPWMrbix0PSh0KzEpJWx9ZWxzZXtpZihhLWkubGVuZ3RoPD0wfHxjK3RoaXMuX3BoeXNpY2FsU2l6ZS1uPD1mKWJyZWFrO2kucHVzaCh0KSxjPWMtbix0PXQ9PT0wP2wtMTp0LTF9cmV0dXJue2luZGV4ZXM6aSxwaHlzaWNhbFRvcDpjLXRoaXMuX3Njcm9sbE9mZnNldH19LF91cGRhdGU6ZnVuY3Rpb24oZSx0KXtpZighKGUmJmUubGVuZ3RoPT09MHx8dGhpcy5fcGh5c2ljYWxDb3VudD09PTApKXtpZih0aGlzLl9hc3NpZ25Nb2RlbHMoZSksdGhpcy5fdXBkYXRlTWV0cmljcyhlKSx0KWZvcig7dC5sZW5ndGg7KXtsZXQgcj10LnBvcCgpO3RoaXMuX3BoeXNpY2FsVG9wLT10aGlzLl9waHlzaWNhbFNpemVzW3JdfXRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX19LF9pc0NsaWVudEZ1bGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2Nyb2xsQm90dG9tIT0wJiZ0aGlzLl9waHlzaWNhbEJvdHRvbS0xPj10aGlzLl9zY3JvbGxCb3R0b20mJnRoaXMuX3BoeXNpY2FsVG9wPD10aGlzLl9zY3JvbGxQb3NpdGlvbn0sX2luY3JlYXNlUG9vbElmTmVlZGVkOmZ1bmN0aW9uKGUpe2xldCByPXRoaXMuX2NsYW1wKHRoaXMuX3BoeXNpY2FsQ291bnQrZSxPY2UsdGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3ZpcnR1YWxTdGFydCktdGhpcy5fcGh5c2ljYWxDb3VudCxuPU1hdGgucm91bmQodGhpcy5fcGh5c2ljYWxDb3VudCouNSk7aWYoIShyPDApKXtpZihyPjApe2xldCBpPXdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtbXS5wdXNoLmFwcGx5KHRoaXMuX3BoeXNpY2FsSXRlbXMsdGhpcy5fY3JlYXRlUG9vbChyKSk7Zm9yKGxldCBvPTA7bzxyO28rKyl0aGlzLl9waHlzaWNhbFNpemVzLnB1c2goMCk7dGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50K3IsdGhpcy5fcGh5c2ljYWxTdGFydD50aGlzLl9waHlzaWNhbEVuZCYmdGhpcy5faXNJbmRleFJlbmRlcmVkKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpJiZ0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpPHRoaXMuX3BoeXNpY2FsRW5kJiYodGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K3IpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX3RlbXBsYXRlQ29zdD0od2luZG93LnBlcmZvcm1hbmNlLm5vdygpLWkpL3Isbj1NYXRoLnJvdW5kKHRoaXMuX3BoeXNpY2FsQ291bnQqLjUpfXRoaXMuX3ZpcnR1YWxFbmQ+PXRoaXMuX3ZpcnR1YWxDb3VudC0xfHxuPT09MHx8KHRoaXMuX2lzQ2xpZW50RnVsbCgpP3RoaXMuX3BoeXNpY2FsU2l6ZTx0aGlzLl9vcHRQaHlzaWNhbFNpemUmJnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyx0aGlzLl9jbGFtcChNYXRoLnJvdW5kKDUwL3RoaXMuX3RlbXBsYXRlQ29zdCksMSxuKSksTHgpOnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyxuKSxjaSkpfX0sX3JlbmRlcjpmdW5jdGlvbigpe2lmKCEoIXRoaXMuaXNBdHRhY2hlZHx8IXRoaXMuX2lzVmlzaWJsZSkpaWYodGhpcy5fcGh5c2ljYWxDb3VudCE9PTApe2xldHtwaHlzaWNhbFRvcDplLGluZGV4ZXM6dH09dGhpcy5fZ2V0UmV1c2FibGVzKCEwKTt0aGlzLl9waHlzaWNhbFRvcD1lLHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrdC5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K3QubGVuZ3RoLHRoaXMuX3VwZGF0ZSh0KSx0aGlzLl91cGRhdGUoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKX1lbHNlIHRoaXMuX3ZpcnR1YWxDb3VudD4wJiYodGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZChPY2UpKX0sX2l0ZW1zQ2hhbmdlZDpmdW5jdGlvbihlKXtlLnBhdGg9PT0iaXRlbXMiJiYodGhpcy5fdmlydHVhbFN0YXJ0PTAsdGhpcy5fcGh5c2ljYWxUb3A9MCx0aGlzLl92aXJ0dWFsQ291bnQ9dGhpcy5pdGVtcz90aGlzLml0ZW1zLmxlbmd0aDowLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXk9e30sdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50fHwwLHRoaXMuX3BoeXNpY2FsSXRlbXM9dGhpcy5fcGh5c2ljYWxJdGVtc3x8W10sdGhpcy5fcGh5c2ljYWxTaXplcz10aGlzLl9waHlzaWNhbFNpemVzfHxbXSx0aGlzLl9waHlzaWNhbFN0YXJ0PTAsdGhpcy5fc2Nyb2xsVG9wPnRoaXMuX3Njcm9sbE9mZnNldCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbigwKSx0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLFJpKSl9LF9pdGVyYXRlSXRlbXM6ZnVuY3Rpb24oZSx0KXtsZXQgcixuLGksbztpZihhcmd1bWVudHMubGVuZ3RoPT09MiYmdCl7Zm9yKG89MDtvPHQubGVuZ3RoO28rKylpZihyPXRbb10sbj10aGlzLl9jb21wdXRlVmlkeChyKSwoaT1lLmNhbGwodGhpcyxyLG4pKSE9bnVsbClyZXR1cm4gaX1lbHNle2ZvcihyPXRoaXMuX3BoeXNpY2FsU3RhcnQsbj10aGlzLl92aXJ0dWFsU3RhcnQ7cjx0aGlzLl9waHlzaWNhbENvdW50O3IrKyxuKyspaWYoKGk9ZS5jYWxsKHRoaXMscixuKSkhPW51bGwpcmV0dXJuIGk7Zm9yKHI9MDtyPHRoaXMuX3BoeXNpY2FsU3RhcnQ7cisrLG4rKylpZigoaT1lLmNhbGwodGhpcyxyLG4pKSE9bnVsbClyZXR1cm4gaX19LF9jb21wdXRlVmlkeDpmdW5jdGlvbihlKXtyZXR1cm4gZT49dGhpcy5fcGh5c2ljYWxTdGFydD90aGlzLl92aXJ0dWFsU3RhcnQrKGUtdGhpcy5fcGh5c2ljYWxTdGFydCk6dGhpcy5fdmlydHVhbFN0YXJ0Kyh0aGlzLl9waHlzaWNhbENvdW50LXRoaXMuX3BoeXNpY2FsU3RhcnQpK2V9LF91cGRhdGVNZXRyaWNzOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLl9pc1Zpc2libGUpcmV0dXJuO3VpKCk7bGV0IHQ9MCxyPTAsbj10aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCxpPXRoaXMuX3BoeXNpY2FsQXZlcmFnZTt0aGlzLl9pdGVyYXRlSXRlbXMoZnVuY3Rpb24obyl7cis9dGhpcy5fcGh5c2ljYWxTaXplc1tvXSx0aGlzLl9waHlzaWNhbFNpemVzW29dPXRoaXMuX3BoeXNpY2FsSXRlbXNbb10ub2Zmc2V0SGVpZ2h0LHQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbb10sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbb10/MTowfSxlKSx0aGlzLl9waHlzaWNhbFNpemU9dGhpcy5fcGh5c2ljYWxTaXplK3Qtcix0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCE9PW4mJih0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9TWF0aC5yb3VuZCgoaSpuK3QpL3RoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50KSl9LF9wb3NpdGlvbkl0ZW1zOmZ1bmN0aW9uKCl7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKTtsZXQgZT10aGlzLl9waHlzaWNhbFRvcDt0aGlzLl9pdGVyYXRlSXRlbXMoZnVuY3Rpb24odCl7dGhpcy50cmFuc2xhdGUzZCgwLGUrInB4IiwwLHRoaXMuX3BoeXNpY2FsSXRlbXNbdF0pLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF19KX0sX2FkanVzdFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7bGV0IGU9dGhpcy5fdmlydHVhbFN0YXJ0PT09MD90aGlzLl9waHlzaWNhbFRvcDpNYXRoLm1pbih0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl9waHlzaWNhbFRvcCwwKTtpZihlIT09MCl7dGhpcy5fcGh5c2ljYWxUb3A9dGhpcy5fcGh5c2ljYWxUb3AtZTtsZXQgdD10aGlzLl9zY3JvbGxUb3A7ISR1ciYmdD4wJiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHQtZSl9fSxfcmVzZXRTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbihlKXt0aGlzLnNjcm9sbFRhcmdldCYmZT49MCYmKHRoaXMuX3Njcm9sbFRvcD1lLHRoaXMuX3Njcm9sbFBvc2l0aW9uPXRoaXMuX3Njcm9sbFRvcCl9LF91cGRhdGVTY3JvbGxlclNpemU6ZnVuY3Rpb24oZSl7dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0PXRoaXMuX3BoeXNpY2FsQm90dG9tK01hdGgubWF4KHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl9waHlzaWNhbENvdW50LXRoaXMuX3ZpcnR1YWxTdGFydCwwKSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2UsZT1lfHx0aGlzLl9zY3JvbGxIZWlnaHQ9PT0wLGU9ZXx8dGhpcy5fc2Nyb2xsUG9zaXRpb24+PXRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9waHlzaWNhbFNpemUsKGV8fE1hdGguYWJzKHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9zY3JvbGxIZWlnaHQpPj10aGlzLl92aWV3cG9ydEhlaWdodCkmJih0aGlzLiQuaXRlbXMuc3R5bGUuaGVpZ2h0PXRoaXMuX2VzdFNjcm9sbEhlaWdodCsicHgiLHRoaXMuX3Njcm9sbEhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQpfSxzY3JvbGxUb0luZGV4OmZ1bmN0aW9uKGUpe2lmKHR5cGVvZiBlIT0ibnVtYmVyInx8ZTwwfHxlPnRoaXMuaXRlbXMubGVuZ3RoLTF8fCh1aSgpLHRoaXMuX3BoeXNpY2FsQ291bnQ9PT0wKSlyZXR1cm47ZT10aGlzLl9jbGFtcChlLDAsdGhpcy5fdmlydHVhbENvdW50LTEpLCghdGhpcy5faXNJbmRleFJlbmRlcmVkKGUpfHxlPj10aGlzLl9tYXhWaXJ0dWFsU3RhcnQpJiYodGhpcy5fdmlydHVhbFN0YXJ0PWUtMSksdGhpcy5fYXNzaWduTW9kZWxzKCksdGhpcy5fdXBkYXRlTWV0cmljcygpLHRoaXMuX3BoeXNpY2FsVG9wPU1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2U7bGV0IHQ9dGhpcy5fcGh5c2ljYWxTdGFydCxyPXRoaXMuX3ZpcnR1YWxTdGFydCxuPTAsaT10aGlzLl9oaWRkZW5Db250ZW50U2l6ZTtmb3IoO3I8ZSYmbjw9aTspbj1uK3RoaXMuX3BoeXNpY2FsU2l6ZXNbdF0sdD0odCsxKSV0aGlzLl9waHlzaWNhbENvdW50LHIrKzt0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoITApLHRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCtuKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKSx0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bnVsbH0sX3Jlc2V0QXZlcmFnZTpmdW5jdGlvbigpe3RoaXMuX3BoeXNpY2FsQXZlcmFnZT0wLHRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50PTB9LF9yZXNpemVIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLGZ1bmN0aW9uKCl7dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLl9pc1Zpc2libGU/KHRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITApLHRoaXMuX3Jlc2V0QXZlcmFnZSgpLHRoaXMuX3JlbmRlcigpKTp0aGlzLnRvZ2dsZVNjcm9sbExpc3RlbmVyKCExKX0sUmkpfSxfaXNJbmRleFJlbmRlcmVkOmZ1bmN0aW9uKGUpe3JldHVybiBlPj10aGlzLl92aXJ0dWFsU3RhcnQmJmU8PXRoaXMuX3ZpcnR1YWxFbmR9LF9nZXRQaHlzaWNhbEluZGV4OmZ1bmN0aW9uKGUpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0KyhlLXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnR9LF9jbGFtcDpmdW5jdGlvbihlLHQscil7cmV0dXJuIE1hdGgubWluKHIsTWF0aC5tYXgodCxlKSl9LF9kZWJvdW5jZTpmdW5jdGlvbihlLHQscil7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fSx0aGlzLl9kZWJvdW5jZXJzW2VdPXNyLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcnNbZV0scix0LmJpbmQodGhpcykpLEtsKHRoaXMuX2RlYm91bmNlcnNbZV0pfX0pO3ZhciBaSD1jbGFzcyBleHRlbmRzIHpjZXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57c2l6ZTp7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSxfdmlkeE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MH19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZWZmZWN0aXZlU2l6ZUNoYW5nZWQoX2VmZmVjdGl2ZVNpemUpIl19Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX3Njcm9sbEhhbmRsZXIoKX1fdXBkYXRlU2Nyb2xsZXJJdGVtKCl7fV9hZnRlclNjcm9sbCgpe31fZ2V0Um93VGFyZ2V0KCl7fV9jcmVhdGVTY3JvbGxlclJvd3MoKXt9X2NhblBvcHVsYXRlKCl7fXNjcm9sbFRvSW5kZXgodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3MoInNjcm9sbFRvSW5kZXgiKSx0aGlzLl9zY3JvbGxpbmdUb0luZGV4PSEwLHQ9TWF0aC5taW4oTWF0aC5tYXgodCwwKSx0aGlzLl9lZmZlY3RpdmVTaXplLTEpLHRoaXMuJC50YWJsZS5zY3JvbGxUb3A9dC90aGlzLl9lZmZlY3RpdmVTaXplKih0aGlzLiQudGFibGUuc2Nyb2xsSGVpZ2h0LXRoaXMuJC50YWJsZS5vZmZzZXRIZWlnaHQpLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSx0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKT0+dGhpcy5fbWF4U2Nyb2xsVG9wKSYmdGhpcy5fdmlydHVhbENvdW50PHRoaXMuX2VmZmVjdGl2ZVNpemUmJnRoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCgxZTYpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgpPT5zdXBlci5zY3JvbGxUb0luZGV4KHQtdGhpcy5fdmlkeE9mZnNldCkpLHRoaXMuX3Njcm9sbEhhbmRsZXIoKTtsZXQgcj1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKG49Pm4uaW5kZXg9PT10KVswXTtpZihyKXtsZXQgbj1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC10aGlzLiQuaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtNYXRoLmFicyhuKT4xJiYodGhpcy4kLnRhYmxlLnNjcm9sbFRvcCs9bix0aGlzLl9zY3JvbGxIYW5kbGVyKCkpfXRoaXMuX3Njcm9sbGluZ1RvSW5kZXg9ITF9X2VmZmVjdGl2ZVNpemVDaGFuZ2VkKHQpe2xldCByLG49MDt0aGlzLl9pdGVyYXRlSXRlbXMoKGksbyk9PntpZihvPT09dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpe2xldCBhPXRoaXMuX3BoeXNpY2FsSXRlbXNbaV07cj1hLmluZGV4LG49YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3B9fSksdGhpcy5pdGVtcyYmdDx0aGlzLml0ZW1zLmxlbmd0aCYmKHRoaXMuX3Njcm9sbFRvcD0wKSxBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpfHwodGhpcy5pdGVtcz17bGVuZ3RoOk1hdGgubWluKHQsMWU1KX0pLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgpPT5zdXBlci5faXRlbXNDaGFuZ2VkKHtwYXRoOiJpdGVtcyJ9KSksdGhpcy5fdmlydHVhbENvdW50PU1hdGgubWluKHRoaXMuaXRlbXMubGVuZ3RoLHQpfHwwLHRoaXMuX3Njcm9sbFRvcD09PTAmJih0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKT0+dGhpcy5fc2Nyb2xsVG9JbmRleChNYXRoLm1pbih0LTEscikpKSx0aGlzLl9pdGVyYXRlSXRlbXMoaT0+e2xldCBvPXRoaXMuX3BoeXNpY2FsSXRlbXNbaV07aWYoby5pbmRleD09PXImJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1NYXRoLnJvdW5kKG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLW4pKSxvLmluZGV4PT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCYmdGhpcy5faXRlbXNGb2N1c2FibGUmJnRoaXMuJC5pdGVtcy5jb250YWlucyh0aGlzLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCkpe2xldCBhPUFycmF5LmZyb20odGhpcy5faXRlbXNGb2N1c2FibGUucGFyZW50RWxlbWVudC5jaGlsZHJlbikuaW5kZXhPZih0aGlzLl9pdGVtc0ZvY3VzYWJsZSk7by5jaGlsZHJlblthXS5mb2N1cygpfX0pKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnRoaXMuX3VwZGF0ZSgpKSx0aGlzLl9fdXBkYXRlRm9vdGVyUG9zaXRpb25pbmcoKX1fcG9zaXRpb25JdGVtcygpe3RoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKCk7bGV0IHQ7aXNOYU4odGhpcy5fcGh5c2ljYWxUb3ApJiYodD0hMCx0aGlzLl9waHlzaWNhbFRvcD0wKTtsZXQgcj10aGlzLl9waHlzaWNhbFRvcDt0aGlzLl9pdGVyYXRlSXRlbXMobj0+e3RoaXMuX3BoeXNpY2FsSXRlbXNbbl0uc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVZKCR7cn1weClgLHIrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbbl19KSx0JiZ0aGlzLl9zY3JvbGxUb0luZGV4KDApfV9pbmNyZWFzZVBvb2xJZk5lZWRlZCh0KXt0PT09MCYmdGhpcy5fc2Nyb2xsaW5nVG9JbmRleHx8IXRoaXMuX2NhblBvcHVsYXRlKCl8fCF0aGlzLl9lZmZlY3RpdmVTaXplfHwodGhpcy5faW5pdGlhbFBvb2xDcmVhdGVkP3RoaXMuX29wdFBoeXNpY2FsU2l6ZSE9PTEvMCYmKHRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sPXNyLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLFJpLCgpPT57dGhpcy5fdXBkYXRlTWV0cmljcygpO2xldCByPXRoaXMuX29wdFBoeXNpY2FsU2l6ZS10aGlzLl9waHlzaWNhbFNpemUsbj1NYXRoLmNlaWwoci90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3BoeXNpY2FsQ291bnQrbj50aGlzLl9lZmZlY3RpdmVTaXplJiYobj1NYXRoLm1heCgwLHRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fcGh5c2ljYWxDb3VudCkpLHRoaXMuX3BoeXNpY2FsU2l6ZSYmbj4wJiZ0aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJihzdXBlci5faW5jcmVhc2VQb29sSWZOZWVkZWQobiksdGhpcy5fX3Jlb3JkZXJDaGlsZE5vZGVzKCkpfSkpOih0aGlzLl9pbml0aWFsUG9vbENyZWF0ZWQ9ITAsc3VwZXIuX2luY3JlYXNlUG9vbElmTmVlZGVkKDI1KSkpfV9fcmVvcmRlckNoaWxkTm9kZXMoKXtsZXQgdD1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZE5vZGVzKTshIXQucmVkdWNlKChuLGksbyxhKT0+e2lmKG89PT0wfHxhW28tMV0uaW5kZXg9PT1pLmluZGV4LTEpcmV0dXJuIG59LCEwKXx8dC5zb3J0KChuLGkpPT5uLmluZGV4LWkuaW5kZXgpLmZvckVhY2gobj0+dGhpcy4kLml0ZW1zLmFwcGVuZENoaWxkKG4pKX1fY3JlYXRlUG9vbCh0KXtsZXQgcj1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj10aGlzLl9jcmVhdGVTY3JvbGxlclJvd3ModCk7bi5mb3JFYWNoKG89PnIuYXBwZW5kQ2hpbGQobykpLHRoaXMuX2dldFJvd1RhcmdldCgpLmFwcGVuZENoaWxkKHIpO2xldCBpPXRoaXMucXVlcnlTZWxlY3RvcigiW3Nsb3RdIik7aWYoaSl7bGV0IG89aS5nZXRBdHRyaWJ1dGUoInNsb3QiKTtpLnNldEF0dHJpYnV0ZSgic2xvdCIsImZvby1iYXIiKSxpLnNldEF0dHJpYnV0ZSgic2xvdCIsbyl9cmV0dXJuIFRtKHRoaXMsKCk9PnRoaXMubm90aWZ5UmVzaXplKCkpLG59X2Fzc2lnbk1vZGVscyh0KXt0aGlzLl9pdGVyYXRlSXRlbXMoKHIsbik9PntsZXQgaT10aGlzLl9waHlzaWNhbEl0ZW1zW3JdO3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiaGlkZGVuIixuPj10aGlzLl9lZmZlY3RpdmVTaXplLGkpLHRoaXMuX3VwZGF0ZVNjcm9sbGVySXRlbShpLG4rKHRoaXMuX3ZpZHhPZmZzZXR8fDApKX0sdCl9X3Njcm9sbEhhbmRsZXIoKXtsZXQgdD10aGlzLiQudGFibGUuc2Nyb2xsVG9wLXRoaXMuX3Njcm9sbFBvc2l0aW9uO3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9zY3JvbGxIYW5kbGVyKTtsZXQgcj10aGlzLl92aWR4T2Zmc2V0O3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgpPT50aGlzLl9tYXhTY3JvbGxUb3ApJiZ0aGlzLl92aXJ0dWFsQ291bnQ8dGhpcy5fZWZmZWN0aXZlU2l6ZT90aGlzLl9hZGp1c3RWaXJ0dWFsSW5kZXhPZmZzZXQodCk6dGhpcy5fdmlkeE9mZnNldD0wLHRoaXMuX3ZpZHhPZmZzZXQhPT1yJiZ0aGlzLl91cGRhdGUoKSx0aGlzLl9hZnRlclNjcm9sbCgpfV9hZGp1c3RWaXJ0dWFsSW5kZXhPZmZzZXQodCl7aWYoTWF0aC5hYnModCk+MWU0KXtpZih0aGlzLl9ub1NjYWxlKXt0aGlzLl9ub1NjYWxlPSExO3JldHVybn1sZXQgcj10aGlzLiQudGFibGUuc2Nyb2xsVG9wLyh0aGlzLiQudGFibGUuc2Nyb2xsSGVpZ2h0LXRoaXMuJC50YWJsZS5vZmZzZXRIZWlnaHQpLG49cip0aGlzLl9lZmZlY3RpdmVTaXplO3RoaXMuX3ZpZHhPZmZzZXQ9TWF0aC5yb3VuZChuLXIqdGhpcy5fdmlydHVhbENvdW50KX1lbHNle2xldCByPXRoaXMuX3ZpZHhPZmZzZXR8fDAsbj0xZTMsaT0xMDA7dGhpcy5fc2Nyb2xsVG9wPT09MD8odGhpcy5fdmlkeE9mZnNldD0wLHIhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KDApKTp0aGlzLmZpcnN0VmlzaWJsZUluZGV4PG4mJnRoaXMuX3ZpZHhPZmZzZXQ+MCYmKHRoaXMuX3ZpZHhPZmZzZXQtPU1hdGgubWluKHRoaXMuX3ZpZHhPZmZzZXQsaSksciE9PXRoaXMuX3ZpZHhPZmZzZXQmJnN1cGVyLnNjcm9sbFRvSW5kZXgodGhpcy5maXJzdFZpc2libGVJbmRleCsoci10aGlzLl92aWR4T2Zmc2V0KSksdGhpcy5fbm9TY2FsZT0hMCk7bGV0IG89dGhpcy5fZWZmZWN0aXZlU2l6ZS10aGlzLl92aXJ0dWFsQ291bnQ7dGhpcy5fc2Nyb2xsVG9wPj10aGlzLl9tYXhTY3JvbGxUb3AmJnRoaXMuX21heFNjcm9sbFRvcD4wPyh0aGlzLl92aWR4T2Zmc2V0PW8sciE9PXRoaXMuX3ZpZHhPZmZzZXQmJnN1cGVyLnNjcm9sbFRvSW5kZXgodGhpcy5fdmlydHVhbENvdW50KSk6dGhpcy5maXJzdFZpc2libGVJbmRleD50aGlzLl92aXJ0dWFsQ291bnQtbiYmdGhpcy5fdmlkeE9mZnNldDxvJiYodGhpcy5fdmlkeE9mZnNldCs9TWF0aC5taW4oby10aGlzLl92aWR4T2Zmc2V0LGkpLHIhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuZmlyc3RWaXNpYmxlSW5kZXgtKHRoaXMuX3ZpZHhPZmZzZXQtcikpLHRoaXMuX25vU2NhbGU9ITApfX1fYWNjZXNzSXJvbkxpc3RBUEkodCl7dGhpcy5fd2FyblByaXZhdGVBUElBY2Nlc3NBc3luY0VuYWJsZWQ9ITE7bGV0IHI9dC5hcHBseSh0aGlzKTtyZXR1cm4gdGhpcy5fZGVib3VuY2VyV2FyblByaXZhdGVBUElBY2Nlc3M9c3IuZGVib3VuY2UodGhpcy5fZGVib3VuY2VyV2FyblByaXZhdGVBUElBY2Nlc3MsUmksKCk9PnRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkPSEwKSxyfV9kZWJvdW5jZVJlbmRlcih0LHIpe3N1cGVyLl9kZWJvdW5jZVJlbmRlcigoKT0+dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkodCkscil9X3dhcm5Qcml2YXRlQVBJQWNjZXNzKHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkJiZjb25zb2xlLndhcm4oYEFjY2Vzc2luZyBwcml2YXRlIEFQSSAoJHt0fSkhYCl9X3JlbmRlcigpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZW5kZXIpfV9pdGVtc0NoYW5nZWQoKXt9Z2V0IF9maXJzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKT0+c3VwZXIuZmlyc3RWaXNpYmxlSW5kZXgpfWdldCBfbGFzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKT0+c3VwZXIubGFzdFZpc2libGVJbmRleCl9X3Njcm9sbFRvSW5kZXgodCl7dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCk9PnRoaXMuc2Nyb2xsVG9JbmRleCh0KSl9Z2V0IGZpcnN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJmaXJzdFZpc2libGVJbmRleCIpLHN1cGVyLmZpcnN0VmlzaWJsZUluZGV4fXNldCBmaXJzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygiZmlyc3RWaXNpYmxlSW5kZXgiKSxzdXBlci5maXJzdFZpc2libGVJbmRleD10fWdldCBsYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJsYXN0VmlzaWJsZUluZGV4Iiksc3VwZXIubGFzdFZpc2libGVJbmRleH1zZXQgbGFzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygibGFzdFZpc2libGVJbmRleCIpLHN1cGVyLmxhc3RWaXNpYmxlSW5kZXg9dH11cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygidXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzIiksc3VwZXIudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1fcmVzaXplSGFuZGxlcigpe3N1cGVyLl9yZXNpemVIYW5kbGVyKCksdWkoKX19O3ZhciBGY2U9ZT0+Y2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfYTExeVVwZGF0ZUdyaWRTaXplKHNpemUsIF9jb2x1bW5UcmVlLCBfY29sdW1uVHJlZS4qKSJdfV9hMTF5R2V0SGVhZGVyUm93Q291bnQocil7cmV0dXJuIHIuZmlsdGVyKG49Pm4uc29tZShpPT5pLl9oZWFkZXJUZW1wbGF0ZXx8aS5oZWFkZXJSZW5kZXJlcnx8aS5wYXRofHxpLmhlYWRlcikpLmxlbmd0aH1fYTExeUdldEZvb3RlclJvd0NvdW50KHIpe3JldHVybiByLmZpbHRlcihuPT5uLnNvbWUoaT0+aS5faGVhZGVyVGVtcGxhdGV8fGkuaGVhZGVyUmVuZGVyZXIpKS5sZW5ndGh9X2ExMXlVcGRhdGVHcmlkU2l6ZShyLG4pe2lmKHI9PT12b2lkIDB8fG49PT12b2lkIDApcmV0dXJuO2xldCBpPW5bbi5sZW5ndGgtMV07dGhpcy4kLnRhYmxlLnNldEF0dHJpYnV0ZSgiYXJpYS1yb3djb3VudCIscit0aGlzLl9hMTF5R2V0SGVhZGVyUm93Q291bnQobikrdGhpcy5fYTExeUdldEZvb3RlclJvd0NvdW50KG4pKSx0aGlzLiQudGFibGUuc2V0QXR0cmlidXRlKCJhcmlhLWNvbGNvdW50IixpJiZpLmxlbmd0aHx8MCksdGhpcy5fYTExeVVwZGF0ZUhlYWRlclJvd3MoKSx0aGlzLl9hMTF5VXBkYXRlRm9vdGVyUm93cygpfV9hMTF5VXBkYXRlSGVhZGVyUm93cygpe0FycmF5LmZyb20odGhpcy4kLmhlYWRlci5jaGlsZHJlbikuZm9yRWFjaCgocixuKT0+ci5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgiLG4rMSkpfV9hMTF5VXBkYXRlRm9vdGVyUm93cygpe0FycmF5LmZyb20odGhpcy4kLmZvb3Rlci5jaGlsZHJlbikuZm9yRWFjaCgocixuKT0+ci5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgiLHRoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0aGlzLl9jb2x1bW5UcmVlKSt0aGlzLnNpemUrbisxKSl9X2ExMXlVcGRhdGVSb3dSb3dpbmRleChyLG4pe3Iuc2V0QXR0cmlidXRlKCJhcmlhLXJvd2luZGV4IixuK3RoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0aGlzLl9jb2x1bW5UcmVlKSsxKX1fYTExeVVwZGF0ZVJvd1NlbGVjdGVkKHIsbil7ci5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLEJvb2xlYW4obikpLEFycmF5LmZyb20oci5jaGlsZHJlbikuZm9yRWFjaChpPT5pLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsQm9vbGVhbihuKSkpfV9hMTF5VXBkYXRlUm93TGV2ZWwocixuKXtyLnNldEF0dHJpYnV0ZSgiYXJpYS1sZXZlbCIsbisxKX1fYTExeVVwZGF0ZVJvd0RldGFpbHNPcGVuZWQocixuKXtBcnJheS5mcm9tKHIuY2hpbGRyZW4pLmZvckVhY2goaT0+e3R5cGVvZiBuPT0iYm9vbGVhbiI/aS5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLG4pOmkuaGFzQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIikmJmkucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIil9KX1fYTExeVNldFJvd0RldGFpbHNDZWxsKHIsbil7QXJyYXkuZnJvbShyLmNoaWxkcmVuKS5mb3JFYWNoKGk9PntpIT09biYmaS5zZXRBdHRyaWJ1dGUoImFyaWEtY29udHJvbHMiLG4uaWQpfSl9X2ExMXlVcGRhdGVDZWxsQ29sc3BhbihyLG4pe3Iuc2V0QXR0cmlidXRlKCJhcmlhLWNvbHNwYW4iLE51bWJlcihuKSl9X2ExMXlVcGRhdGVTb3J0ZXJzKCl7QXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoInZhYWRpbi1ncmlkLXNvcnRlciIpKS5mb3JFYWNoKHI9PntsZXQgbj1yLnBhcmVudE5vZGU7Zm9yKDtuJiZuLmxvY2FsTmFtZSE9PSJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiOyluPW4ucGFyZW50Tm9kZTtuJiZuLmFzc2lnbmVkU2xvdCYmbi5hc3NpZ25lZFNsb3QucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImFyaWEtc29ydCIse2FzYzoiYXNjZW5kaW5nIixkZXNjOiJkZXNjZW5kaW5nIn1bU3RyaW5nKHIuZGlyZWN0aW9uKV18fCJub25lIil9KX19O3ZhciBCY2U9ZT0+Y2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnthY3RpdmVJdGVtOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6bnVsbH19fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLiQuc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX29uQ2xpY2suYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJjZWxsLWFjdGl2YXRlIix0aGlzLl9hY3RpdmF0ZUl0ZW0uYmluZCh0aGlzKSl9X2FjdGl2YXRlSXRlbShyKXtsZXQgbj1yLmRldGFpbC5tb2RlbCxpPW4/bi5pdGVtOm51bGw7aSYmKHRoaXMuYWN0aXZlSXRlbT10aGlzLl9pdGVtc0VxdWFsKHRoaXMuYWN0aXZlSXRlbSxpKT9udWxsOmkpfV9vbkNsaWNrKHIpe2lmKHIuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47bGV0IG49ci5jb21wb3NlZFBhdGgoKSxpPW5bbi5pbmRleE9mKHRoaXMuJC50YWJsZSktM107aWYoIWl8fGkuZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZigiZGV0YWlscy1jZWxsIik+LTEpcmV0dXJuO2xldCBvPWkuX2NvbnRlbnQsYT10aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudDshby5jb250YWlucyhhKSYmIXRoaXMuX2lzRm9jdXNhYmxlKHIudGFyZ2V0KSYmdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1hY3RpdmF0ZSIse2RldGFpbDp7bW9kZWw6dGhpcy5fX2dldFJvd01vZGVsKGkucGFyZW50RWxlbWVudCl9fSkpfV9pc0ZvY3VzYWJsZShyKXtyZXR1cm4gS3VyKHIpfX0sS3VyPWU9PntpZighZS5wYXJlbnROb2RlKXJldHVybiExO2xldCByPUFycmF5LmZyb20oZS5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoIlt0YWJpbmRleF0sIGJ1dHRvbiwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIG9iamVjdCwgaWZyYW1lLCBsYWJlbCwgYVtocmVmXSwgYXJlYVtocmVmXSIpKS5maWx0ZXIobj0+bi5nZXRBdHRyaWJ1dGUoInBhcnQiKSE9PSJjZWxsIGJvZHktY2VsbCIpLmluZGV4T2YoZSkhPT0tMTtyZXR1cm4hZS5kaXNhYmxlZCYmcn07dmFyIEhjZT1lPT5jbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOkFycmF5fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2l0ZW1zQ2hhbmdlZChpdGVtcywgaXRlbXMuKiwgaXNBdHRhY2hlZCkiXX1faXRlbXNDaGFuZ2VkKHIsbixpKXtpZighIWkpe2lmKCFBcnJheS5pc0FycmF5KHIpKXtyPT1udWxsJiYodGhpcy5zaXplPTApLHRoaXMuZGF0YVByb3ZpZGVyPT09dGhpcy5fYXJyYXlEYXRhUHJvdmlkZXImJih0aGlzLmRhdGFQcm92aWRlcj12b2lkIDApO3JldHVybn10aGlzLnNpemU9ci5sZW5ndGgsdGhpcy5kYXRhUHJvdmlkZXI9dGhpcy5kYXRhUHJvdmlkZXJ8fHRoaXMuX2FycmF5RGF0YVByb3ZpZGVyLHRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfX1fYXJyYXlEYXRhUHJvdmlkZXIocixuKXtsZXQgaT0oQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKT90aGlzLml0ZW1zOltdKS5zbGljZSgwKTt0aGlzLl9maWx0ZXJzJiZ0aGlzLl9jaGVja1BhdGhzKHRoaXMuX2ZpbHRlcnMsImZpbHRlcmluZyIsaSkmJihpPXRoaXMuX2ZpbHRlcihpKSksdGhpcy5zaXplPWkubGVuZ3RoLHIuc29ydE9yZGVycy5sZW5ndGgmJnRoaXMuX2NoZWNrUGF0aHModGhpcy5fc29ydGVycywic29ydGluZyIsaSkmJihpPWkuc29ydCh0aGlzLl9tdWx0aVNvcnQuYmluZCh0aGlzKSkpO2xldCBvPXIucGFnZSpyLnBhZ2VTaXplLGE9bytyLnBhZ2VTaXplLHM9aS5zbGljZShvLGEpO24ocyxpLmxlbmd0aCl9X2NoZWNrUGF0aHMocixuLGkpe2lmKCFpLmxlbmd0aClyZXR1cm4hMTtsZXQgbz0hMDtmb3IobGV0IGEgaW4gcil7bGV0IHM9clthXS5wYXRoO2lmKCFzfHxzLmluZGV4T2YoIi4iKT09PS0xKWNvbnRpbnVlO2xldCBsPXMucmVwbGFjZSgvXC5bXi5dKiQvLCIiKTtOYS5nZXQobCxpWzBdKT09PXZvaWQgMCYmKGNvbnNvbGUud2FybihgUGF0aCAiJHtzfSIgdXNlZCBmb3IgJHtufSBkb2VzIG5vdCBleGlzdCBpbiBhbGwgb2YgdGhlIGl0ZW1zLCAke259IGlzIGRpc2FibGVkLmApLG89ITEpfXJldHVybiBvfV9tdWx0aVNvcnQocixuKXtyZXR1cm4gdGhpcy5fc29ydGVycy5tYXAoaT0+aS5kaXJlY3Rpb249PT0iYXNjIj90aGlzLl9jb21wYXJlKE5hLmdldChpLnBhdGgsciksTmEuZ2V0KGkucGF0aCxuKSk6aS5kaXJlY3Rpb249PT0iZGVzYyI/dGhpcy5fY29tcGFyZShOYS5nZXQoaS5wYXRoLG4pLE5hLmdldChpLnBhdGgscikpOjApLnJlZHVjZSgoaSxvKT0+aXx8bywwKX1fbm9ybWFsaXplRW1wdHlWYWx1ZShyKXtyZXR1cm5bdm9pZCAwLG51bGxdLmluZGV4T2Yocik+PTA/IiI6aXNOYU4ocik/ci50b1N0cmluZygpOnJ9X2NvbXBhcmUocixuKXtyZXR1cm4gcj10aGlzLl9ub3JtYWxpemVFbXB0eVZhbHVlKHIpLG49dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShuKSxyPG4/LTE6cj5uPzE6MH1fZmlsdGVyKHIpe3JldHVybiByLmZpbHRlcihuPT50aGlzLl9maWx0ZXJzLmZpbHRlcihpPT57bGV0IG89dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShOYS5nZXQoaS5wYXRoLG4pKSxhPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoaS52YWx1ZSkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybiBvLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGEpPT09LTF9KS5sZW5ndGg9PT0wKX19O3ZhciBWY2U9ZT0+Y2xhc3MgZXh0ZW5kcyBfaChlKXtyZWFkeSgpe3N1cGVyLnJlYWR5KCk7bGV0IHI9dGhpcy4kLnNjcm9sbGVyO0VtKHIsInRyYWNrIix0aGlzLl9vbkhlYWRlclRyYWNrLmJpbmQodGhpcykpLHIuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixuPT5yLmhhc0F0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIikmJm4ucHJldmVudERlZmF1bHQoKSksci5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsbj0+bi50YXJnZXQuZ2V0QXR0cmlidXRlKCJwYXJ0Iik9PSJyZXNpemUtaGFuZGxlIiYmbi5wcmV2ZW50RGVmYXVsdCgpKSxyLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsbj0+bi50YXJnZXQuZ2V0QXR0cmlidXRlKCJwYXJ0Iik9PT0icmVzaXplLWhhbmRsZSImJm4ucHJldmVudERlZmF1bHQoKSl9X29uSGVhZGVyVHJhY2socil7bGV0IG49ci50YXJnZXQ7aWYobi5nZXRBdHRyaWJ1dGUoInBhcnQiKT09PSJyZXNpemUtaGFuZGxlIil7bGV0IG89bi5wYXJlbnRFbGVtZW50Ll9jb2x1bW47Zm9yKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIiwhMCx0aGlzLiQuc2Nyb2xsZXIpO28ubG9jYWxOYW1lPT09InZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI7KW89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoby5fY2hpbGRDb2x1bW5zLDApLnNvcnQoZnVuY3Rpb24obCxjKXtyZXR1cm4gbC5fb3JkZXItYy5fb3JkZXJ9KS5maWx0ZXIoZnVuY3Rpb24obCl7cmV0dXJuIWwuaGlkZGVufSkucG9wKCk7bGV0IGE9QXJyYXkuZnJvbSh0aGlzLiQuaGVhZGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0icm93Il06bGFzdC1jaGlsZCBbcGFydH49ImNlbGwiXScpKSxzPWEuZmlsdGVyKGw9PmwuX2NvbHVtbj09PW8pWzBdO2lmKHMub2Zmc2V0V2lkdGgpe2xldCBsPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHMpLGM9MTArcGFyc2VJbnQobC5wYWRkaW5nTGVmdCkrcGFyc2VJbnQobC5wYWRkaW5nUmlnaHQpK3BhcnNlSW50KGwuYm9yZGVyTGVmdFdpZHRoKStwYXJzZUludChsLmJvcmRlclJpZ2h0V2lkdGgpK3BhcnNlSW50KGwubWFyZ2luTGVmdCkrcGFyc2VJbnQobC5tYXJnaW5SaWdodCksdT1zLm9mZnNldFdpZHRoKyh0aGlzLl9faXNSVEw/cy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LXIuZGV0YWlsLng6ci5kZXRhaWwueC1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KTtvLndpZHRoPU1hdGgubWF4KGMsdSkrInB4IixvLmZsZXhHcm93PTB9YS5zb3J0KGZ1bmN0aW9uKGwsYyl7cmV0dXJuIGwuX2NvbHVtbi5fb3JkZXItYy5fY29sdW1uLl9vcmRlcn0pLmZvckVhY2goZnVuY3Rpb24obCxjLHUpe2M8dS5pbmRleE9mKHMpJiYobC5fY29sdW1uLndpZHRoPWwub2Zmc2V0V2lkdGgrInB4IixsLl9jb2x1bW4uZmxleEdyb3c9MCl9KSxyLmRldGFpbC5zdGF0ZT09PSJlbmQiJiYodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciLCExLHRoaXMuJC5zY3JvbGxlciksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY29sdW1uLXJlc2l6ZSIse2RldGFpbDp7cmVzaXplZENvbHVtbjpvfX0pKSksdGhpcy5fcmVzaXplSGFuZGxlcigpfX19O3ZhciBVY2U9Y2xhc3MgcWNle2NvbnN0cnVjdG9yKHQscixuKXt0aGlzLmdyaWQ9dCx0aGlzLnBhcmVudENhY2hlPXIsdGhpcy5wYXJlbnRJdGVtPW4sdGhpcy5pdGVtQ2FjaGVzPXt9LHRoaXMuaXRlbXM9e30sdGhpcy5lZmZlY3RpdmVTaXplPTAsdGhpcy5zaXplPTAsdGhpcy5wZW5kaW5nUmVxdWVzdHM9e319aXNMb2FkaW5nKCl7cmV0dXJuIEJvb2xlYW4oT2JqZWN0LmtleXModGhpcy5wZW5kaW5nUmVxdWVzdHMpLmxlbmd0aHx8T2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5maWx0ZXIodD0+dGhpcy5pdGVtQ2FjaGVzW3RdLmlzTG9hZGluZygpKVswXSl9Z2V0SXRlbUZvckluZGV4KHQpe2xldHtjYWNoZTpyLHNjYWxlZEluZGV4Om59PXRoaXMuZ2V0Q2FjaGVBbmRJbmRleCh0KTtyZXR1cm4gci5pdGVtc1tuXX11cGRhdGVTaXplKCl7dGhpcy5lZmZlY3RpdmVTaXplPSF0aGlzLnBhcmVudEl0ZW18fHRoaXMuZ3JpZC5faXNFeHBhbmRlZCh0aGlzLnBhcmVudEl0ZW0pP3RoaXMuc2l6ZStPYmplY3Qua2V5cyh0aGlzLml0ZW1DYWNoZXMpLnJlZHVjZSgodCxyKT0+e2xldCBuPXRoaXMuaXRlbUNhY2hlc1tyXTtyZXR1cm4gbi51cGRhdGVTaXplKCksdCtuLmVmZmVjdGl2ZVNpemV9LDApOjB9ZW5zdXJlU3ViQ2FjaGVGb3JTY2FsZWRJbmRleCh0KXtpZighdGhpcy5pdGVtQ2FjaGVzW3RdKXtsZXQgcj1uZXcgcWNlKHRoaXMuZ3JpZCx0aGlzLHRoaXMuaXRlbXNbdF0pO3RoaXMuaXRlbUNhY2hlc1t0XT1yLHRoaXMuZ3JpZC5fbG9hZFBhZ2UoMCxyKX19Z2V0Q2FjaGVBbmRJbmRleCh0KXtsZXQgcj10LG49T2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKTtmb3IobGV0IGk9MDtpPG4ubGVuZ3RoO2krKyl7bGV0IG89TnVtYmVyKG5baV0pLGE9dGhpcy5pdGVtQ2FjaGVzW29dO2lmKHI8PW8pcmV0dXJue2NhY2hlOnRoaXMsc2NhbGVkSW5kZXg6cn07aWYocjw9bythLmVmZmVjdGl2ZVNpemUpcmV0dXJuIGEuZ2V0Q2FjaGVBbmRJbmRleChyLW8tMSk7ci09YS5lZmZlY3RpdmVTaXplfXJldHVybntjYWNoZTp0aGlzLHNjYWxlZEluZGV4OnJ9fX0sR2NlPWU9PmNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57cGFnZVNpemU6e3R5cGU6TnVtYmVyLHZhbHVlOjUwLG9ic2VydmVyOiJfcGFnZVNpemVDaGFuZ2VkIn0sZGF0YVByb3ZpZGVyOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9kYXRhUHJvdmlkZXJDaGFuZ2VkIn0sbG9hZGluZzp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LF9jYWNoZTp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFVjZSh0aGlzKX19LGl0ZW1JZFBhdGg6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LGV4cGFuZGVkSXRlbXM6e3R5cGU6T2JqZWN0LG5vdGlmeTohMCx2YWx1ZTooKT0+W119fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX3NpemVDaGFuZ2VkKHNpemUpIiwiX2l0ZW1JZFBhdGhDaGFuZ2VkKGl0ZW1JZFBhdGgpIiwiX2V4cGFuZGVkSXRlbXNDaGFuZ2VkKGV4cGFuZGVkSXRlbXMuKikiXX1fc2l6ZUNoYW5nZWQocil7bGV0IG49ci10aGlzLl9jYWNoZS5zaXplO3RoaXMuX2NhY2hlLnNpemUrPW4sdGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSs9bix0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCl9X2dldEl0ZW0ocixuKXtpZihyPj10aGlzLl9lZmZlY3RpdmVTaXplKXJldHVybjtuLmluZGV4PXI7bGV0e2NhY2hlOmksc2NhbGVkSW5kZXg6b309dGhpcy5fY2FjaGUuZ2V0Q2FjaGVBbmRJbmRleChyKSxhPWkuaXRlbXNbb107YT8odGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJsb2FkaW5nIiwhMSxuKSx0aGlzLl91cGRhdGVJdGVtKG4sYSksdGhpcy5faXNFeHBhbmRlZChhKSYmaS5lbnN1cmVTdWJDYWNoZUZvclNjYWxlZEluZGV4KG8pKToodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJsb2FkaW5nIiwhMCxuKSx0aGlzLl9sb2FkUGFnZSh0aGlzLl9nZXRQYWdlRm9ySW5kZXgobyksaSkpfV9leHBhbmRlZEluc3RhbmNlQ2hhbmdlZENhbGxiYWNrKHIsbil7ci5pdGVtIT09dm9pZCAwJiYobj90aGlzLmV4cGFuZEl0ZW0oci5pdGVtKTp0aGlzLmNvbGxhcHNlSXRlbShyLml0ZW0pKX1nZXRJdGVtSWQocil7cmV0dXJuIHRoaXMuaXRlbUlkUGF0aD90aGlzLmdldCh0aGlzLml0ZW1JZFBhdGgscik6cn1faXNFeHBhbmRlZChyKXtyZXR1cm4gdGhpcy5fX2V4cGFuZGVkS2V5cy5oYXModGhpcy5nZXRJdGVtSWQocikpfV9leHBhbmRlZEl0ZW1zQ2hhbmdlZCgpe3RoaXMuX19jYWNoZUV4cGFuZGVkS2V5cygpLHRoaXMuX2NhY2hlLnVwZGF0ZVNpemUoKSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5fYXNzaWduTW9kZWxzKCl9X2l0ZW1JZFBhdGhDaGFuZ2VkKCl7dGhpcy5fX2NhY2hlRXhwYW5kZWRLZXlzKCl9X19jYWNoZUV4cGFuZGVkS2V5cygpe3RoaXMuZXhwYW5kZWRJdGVtcyYmKHRoaXMuX19leHBhbmRlZEtleXM9bmV3IFNldCx0aGlzLmV4cGFuZGVkSXRlbXMuZm9yRWFjaChyPT57dGhpcy5fX2V4cGFuZGVkS2V5cy5hZGQodGhpcy5nZXRJdGVtSWQocikpfSkpfWV4cGFuZEl0ZW0ocil7dGhpcy5faXNFeHBhbmRlZChyKXx8KHRoaXMuZXhwYW5kZWRJdGVtcz1bLi4udGhpcy5leHBhbmRlZEl0ZW1zLHJdKX1jb2xsYXBzZUl0ZW0ocil7dGhpcy5faXNFeHBhbmRlZChyKSYmKHRoaXMuZXhwYW5kZWRJdGVtcz10aGlzLmV4cGFuZGVkSXRlbXMuZmlsdGVyKG49PiF0aGlzLl9pdGVtc0VxdWFsKG4scikpKX1fZ2V0SW5kZXhMZXZlbChyKXtsZXR7Y2FjaGU6bn09dGhpcy5fY2FjaGUuZ2V0Q2FjaGVBbmRJbmRleChyKSxpPTA7Zm9yKDtuLnBhcmVudENhY2hlOyluPW4ucGFyZW50Q2FjaGUsaSsrO3JldHVybiBpfV9jYW5Qb3B1bGF0ZSgpe3JldHVybiBCb29sZWFuKHRoaXMuX2hhc0RhdGEmJnRoaXMuX2NvbHVtblRyZWUpfV9sb2FkUGFnZShyLG4pe2lmKCFuLnBlbmRpbmdSZXF1ZXN0c1tyXSYmdGhpcy5kYXRhUHJvdmlkZXIpe3RoaXMuX3NldExvYWRpbmcoITApLG4ucGVuZGluZ1JlcXVlc3RzW3JdPSEwO2xldCBpPXtwYWdlOnIscGFnZVNpemU6dGhpcy5wYWdlU2l6ZSxzb3J0T3JkZXJzOnRoaXMuX21hcFNvcnRlcnMoKSxmaWx0ZXJzOnRoaXMuX21hcEZpbHRlcnMoKSxwYXJlbnRJdGVtOm4ucGFyZW50SXRlbX07dGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCksdGhpcy5kYXRhUHJvdmlkZXIoaSwobyxhKT0+e2EhPT12b2lkIDA/bi5zaXplPWE6aS5wYXJlbnRJdGVtJiYobi5zaXplPW8ubGVuZ3RoKTtsZXQgcz1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikubWFwKGw9PmwuX2l0ZW0pO28uZm9yRWFjaCgobCxjKT0+e2xldCB1PXIqdGhpcy5wYWdlU2l6ZStjO24uaXRlbXNbdV09bCx0aGlzLl9pc0V4cGFuZGVkKGwpJiZzLmluZGV4T2YobCk+LTEmJm4uZW5zdXJlU3ViQ2FjaGVGb3JTY2FsZWRJbmRleCh1KX0pLHRoaXMuX2hhc0RhdGE9ITAsZGVsZXRlIG4ucGVuZGluZ1JlcXVlc3RzW3JdLHRoaXMuX2RlYm91bmNlckFwcGx5Q2FjaGVkRGF0YT1zci5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJBcHBseUNhY2hlZERhdGEscG8uYWZ0ZXIoMCksKCk9Pnt0aGlzLl9zZXRMb2FkaW5nKCExKSx0aGlzLl9jYWNoZS51cGRhdGVTaXplKCksdGhpcy5fZWZmZWN0aXZlU2l6ZT10aGlzLl9jYWNoZS5lZmZlY3RpdmVTaXplLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIobD0+IWwuaGlkZGVuKS5mb3JFYWNoKGw9Pnt0aGlzLl9jYWNoZS5nZXRJdGVtRm9ySW5kZXgobC5pbmRleCkmJnRoaXMuX2dldEl0ZW0obC5pbmRleCxsKX0pLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkKDApLHRoaXMuX19zY3JvbGxUb1BlbmRpbmdJbmRleCgpfSksdGhpcy5fY2FjaGUuaXNMb2FkaW5nKCl8fHRoaXMuX2RlYm91bmNlckFwcGx5Q2FjaGVkRGF0YS5mbHVzaCgpLHRoaXMuX19pdGVtc1JlY2VpdmVkKCl9KX19X2dldFBhZ2VGb3JJbmRleChyKXtyZXR1cm4gTWF0aC5mbG9vcihyL3RoaXMucGFnZVNpemUpfWNsZWFyQ2FjaGUoKXt0aGlzLl9jYWNoZT1uZXcgVWNlKHRoaXMpLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKHI9PntBcnJheS5mcm9tKHIuY2hpbGRyZW4pLmZvckVhY2gobj0+e24uX2luc3RhbmNlJiZuLl9pbnN0YW5jZS5fc2V0UGVuZGluZ1Byb3BlcnR5KCJpdGVtIix7fSwhMSl9KX0pLHRoaXMuX2NhY2hlLnNpemU9dGhpcy5zaXplfHwwLHRoaXMuX2NhY2hlLnVwZGF0ZVNpemUoKSx0aGlzLl9oYXNEYXRhPSExLHRoaXMuX2Fzc2lnbk1vZGVscygpLCghdGhpcy5fZWZmZWN0aXZlU2l6ZXx8IXRoaXMuX2luaXRpYWxQb29sQ3JlYXRlZCkmJnRoaXMuX2xvYWRQYWdlKDAsdGhpcy5fY2FjaGUpfV9wYWdlU2l6ZUNoYW5nZWQocixuKXtuIT09dm9pZCAwJiZyIT09biYmdGhpcy5jbGVhckNhY2hlKCl9X2NoZWNrU2l6ZSgpe3RoaXMuc2l6ZT09PXZvaWQgMCYmdGhpcy5fZWZmZWN0aXZlU2l6ZT09PTAmJmNvbnNvbGUud2FybigiVGhlIDx2YWFkaW4tZ3JpZD4gbmVlZHMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiBvcmRlciB0byBkaXNwbGF5IHJvd3MuIFNldCB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRvIHRoZSBgc2l6ZWAgcHJvcGVydHksIG9yIHByb3ZpZGUgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBgZGF0YVByb3ZpZGVyYFx1MjAxOXMgYGNhbGxiYWNrYCBjYWxsLiIpfV9kYXRhUHJvdmlkZXJDaGFuZ2VkKHIsbil7biE9PXZvaWQgMCYmdGhpcy5jbGVhckNhY2hlKCksciYmdGhpcy5pdGVtcyYmdGhpcy5pdGVtcy5sZW5ndGgmJnRoaXMuX3Njcm9sbFRvSW5kZXgodGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpLHRoaXMuX2RlYm91bmNlckNoZWNrU2l6ZT1zci5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJDaGVja1NpemUscG8uYWZ0ZXIoMmUzKSx0aGlzLl9jaGVja1NpemUuYmluZCh0aGlzKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfV9lbnN1cmVGaXJzdFBhZ2VMb2FkZWQoKXt0aGlzLl9oYXNEYXRhfHx0aGlzLl9sb2FkUGFnZSgwLHRoaXMuX2NhY2hlKX1faXRlbXNFcXVhbChyLG4pe3JldHVybiB0aGlzLmdldEl0ZW1JZChyKT09PXRoaXMuZ2V0SXRlbUlkKG4pfV9nZXRJdGVtSW5kZXhJbkFycmF5KHIsbil7bGV0IGk9LTE7cmV0dXJuIG4uZm9yRWFjaCgobyxhKT0+e3RoaXMuX2l0ZW1zRXF1YWwobyxyKSYmKGk9YSl9KSxpfXNjcm9sbFRvSW5kZXgocil7c3VwZXIuc2Nyb2xsVG9JbmRleChyKSwhaXNOYU4ocikmJih0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKXx8IXRoaXMuY2xpZW50SGVpZ2h0KSYmKHRoaXMuX19wZW5kaW5nU2Nyb2xsVG9JbmRleD1yKX1fX3Njcm9sbFRvUGVuZGluZ0luZGV4KCl7aWYodGhpcy5fX3BlbmRpbmdTY3JvbGxUb0luZGV4JiZ0aGlzLiQuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtsZXQgcj10aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXg7ZGVsZXRlIHRoaXMuX19wZW5kaW5nU2Nyb2xsVG9JbmRleCx0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCYmdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wuZmx1c2goKSx0aGlzLnNjcm9sbFRvSW5kZXgocil9fX07dmFyIFdjZT1lPT5jbGFzcyBleHRlbmRzIGV7cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2FkZE5vZGVPYnNlcnZlcigpfV9oYXNDb2x1bW5Hcm91cHMocil7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspaWYocltuXS5sb2NhbE5hbWU9PT0idmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIilyZXR1cm4hMDtyZXR1cm4hMX1fZ2V0Q2hpbGRDb2x1bW5zKHIpe3JldHVybiB5aC5nZXRGbGF0dGVuZWROb2RlcyhyKS5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KX1fZmxhdHRlbkNvbHVtbkdyb3VwcyhyKXtyZXR1cm4gci5tYXAobj0+bi5sb2NhbE5hbWU9PT0idmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj90aGlzLl9nZXRDaGlsZENvbHVtbnMobik6W25dKS5yZWR1Y2UoKG4saSk9Pm4uY29uY2F0KGkpLFtdKX1fZ2V0Q29sdW1uVHJlZSgpe2xldCByPXloLmdldEZsYXR0ZW5lZE5vZGVzKHRoaXMpLmZpbHRlcih0aGlzLl9pc0NvbHVtbkVsZW1lbnQpLG49W107Zm9yKGxldCBpPXI7bi5wdXNoKGkpLCEhdGhpcy5faGFzQ29sdW1uR3JvdXBzKGkpOylpPXRoaXMuX2ZsYXR0ZW5Db2x1bW5Hcm91cHMoaSk7cmV0dXJuIG59X3VwZGF0ZUNvbHVtblRyZWUoKXtsZXQgcj10aGlzLl9nZXRDb2x1bW5UcmVlKCk7dGhpcy5fYXJyYXlFcXVhbHMocix0aGlzLl9jb2x1bW5UcmVlKXx8KHRoaXMuX2NvbHVtblRyZWU9cil9X2FkZE5vZGVPYnNlcnZlcigpe3RoaXMuX29ic2VydmVyPW5ldyB5aCh0aGlzLHI9PntsZXQgbj1yLmFkZGVkTm9kZXMuZmlsdGVyKG89Pm8ubG9jYWxOYW1lPT09InRlbXBsYXRlIiYmby5jbGFzc0xpc3QuY29udGFpbnMoInJvdy1kZXRhaWxzIikpWzBdO24mJnRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZSE9PW4mJih0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGU9bik7bGV0IGk9bz0+by5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KS5sZW5ndGg+MDtpZihpKHIuYWRkZWROb2Rlcyl8fGkoci5yZW1vdmVkTm9kZXMpKXtsZXQgbz1yLnJlbW92ZWROb2Rlcy5mbGF0TWFwKHM9PnMuX2FsbENlbGxzKSxhPXM9Pm8uZmlsdGVyKGw9PmwuX2NvbnRlbnQuY29udGFpbnMocykpLmxlbmd0aDt0aGlzLl9fcmVtb3ZlU29ydGVycyh0aGlzLl9zb3J0ZXJzLmZpbHRlcihhKSksdGhpcy5fX3JlbW92ZUZpbHRlcnModGhpcy5fZmlsdGVycy5maWx0ZXIoYSkpLHRoaXMuX3VwZGF0ZUNvbHVtblRyZWUoKX10aGlzLl9kZWJvdW5jZXJDaGVja0ltcG9ydHM9c3IuZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQ2hlY2tJbXBvcnRzLHBvLmFmdGVyKDJlMyksdGhpcy5fY2hlY2tJbXBvcnRzLmJpbmQodGhpcykpLHRoaXMuX2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpfSl9X2FycmF5RXF1YWxzKHIsbil7aWYoIXJ8fCFufHxyLmxlbmd0aCE9bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBpPTAsbz1yLmxlbmd0aDtpPG87aSsrKWlmKHJbaV1pbnN0YW5jZW9mIEFycmF5JiZuW2ldaW5zdGFuY2VvZiBBcnJheSl7aWYoIXRoaXMuX2FycmF5RXF1YWxzKHJbaV0sbltpXSkpcmV0dXJuITF9ZWxzZSBpZihyW2ldIT1uW2ldKXJldHVybiExO3JldHVybiEwfV9jaGVja0ltcG9ydHMoKXtbInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCIsInZhYWRpbi1ncmlkLWZpbHRlciIsInZhYWRpbi1ncmlkLWZpbHRlci1jb2x1bW4iLCJ2YWFkaW4tZ3JpZC10cmVlLXRvZ2dsZSIsInZhYWRpbi1ncmlkLXNlbGVjdGlvbi1jb2x1bW4iLCJ2YWFkaW4tZ3JpZC1zb3J0LWNvbHVtbiIsInZhYWRpbi1ncmlkLXNvcnRlciJdLmZvckVhY2gocj0+e2xldCBuPXRoaXMucXVlcnlTZWxlY3RvcihyKTtuJiYhKG4gaW5zdGFuY2VvZiBtdCkmJmNvbnNvbGUud2FybihgTWFrZSBzdXJlIHlvdSBoYXZlIGltcG9ydGVkIHRoZSByZXF1aXJlZCBtb2R1bGUgZm9yIDwke3J9PiBlbGVtZW50LmApfSl9X3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpe0FycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRyIikpLmZvckVhY2gocj0+dGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uRm9yUm93KHIpKX1fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uRm9yUm93KHIpe0FycmF5LmZyb20oci5xdWVyeVNlbGVjdG9yQWxsKCdbcGFydH49ImNlbGwiXTpub3QoW3BhcnR+PSJkZXRhaWxzLWNlbGwiXSknKSkuc29ydCgobixpKT0+bi5fY29sdW1uLl9vcmRlci1pLl9jb2x1bW4uX29yZGVyKS5mb3JFYWNoKChuLGksbyk9Pnt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZpcnN0LWNvbHVtbiIsaT09PTAsbiksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJsYXN0LWNvbHVtbiIsaT09PW8ubGVuZ3RoLTEsbil9KX1faXNDb2x1bW5FbGVtZW50KHIpe3JldHVybiByLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJi9cYmNvbHVtblxiLy50ZXN0KHIubG9jYWxOYW1lKX19O3ZhciBZY2U9ZT0+Y2xhc3MgZXh0ZW5kcyBle2dldEV2ZW50Q29udGV4dChyKXtsZXQgbj17fSxpPXIuY29tcG9zZWRQYXRoKCksbz1pW2kuaW5kZXhPZih0aGlzLiQudGFibGUpLTNdO3JldHVybiBvJiYobi5zZWN0aW9uPVsiYm9keSIsImhlYWRlciIsImZvb3RlciIsImRldGFpbHMiXS5maWx0ZXIoYT0+by5nZXRBdHRyaWJ1dGUoInBhcnQiKS5pbmRleE9mKGEpPi0xKVswXSxvLl9jb2x1bW4mJihuLmNvbHVtbj1vLl9jb2x1bW4pLChuLnNlY3Rpb249PT0iYm9keSJ8fG4uc2VjdGlvbj09PSJkZXRhaWxzIikmJk9iamVjdC5hc3NpZ24obix0aGlzLl9fZ2V0Um93TW9kZWwoby5wYXJlbnRFbGVtZW50KSkpLG59fTt2YXIgamNlPWU9PmNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X2ZpbHRlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJmaWx0ZXItY2hhbmdlZCIsdGhpcy5fZmlsdGVyQ2hhbmdlZC5iaW5kKHRoaXMpKX1fZmlsdGVyQ2hhbmdlZChyKXtyLnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX19hZGRGaWx0ZXIoci50YXJnZXQpLHRoaXMuX19hcHBseUZpbHRlcnMoKX1fX3JlbW92ZUZpbHRlcnMocil7ci5sZW5ndGghPTAmJih0aGlzLl9maWx0ZXJzPXRoaXMuX2ZpbHRlcnMuZmlsdGVyKG49PnIuaW5kZXhPZihuKTwwKSx0aGlzLl9fYXBwbHlGaWx0ZXJzKCkpfV9fYWRkRmlsdGVyKHIpe3RoaXMuX2ZpbHRlcnMuaW5kZXhPZihyKT09PS0xJiZ0aGlzLl9maWx0ZXJzLnB1c2gocil9X19hcHBseUZpbHRlcnMoKXt0aGlzLmRhdGFQcm92aWRlciYmdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLmNsZWFyQ2FjaGUoKX1fbWFwRmlsdGVycygpe3JldHVybiB0aGlzLl9maWx0ZXJzLm1hcChyPT4oe3BhdGg6ci5wYXRoLHZhbHVlOnIudmFsdWV9KSl9fTt2YXIgVDA9Y2xhc3MgZXh0ZW5kcyBtdHtzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuInZhYWRpbi1ncmlkLXRlbXBsYXRpemVyIn1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGF0YUhvc3Q6T2JqZWN0LHRlbXBsYXRlOk9iamVjdCxfdGVtcGxhdGVJbnN0YW5jZXM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9wYXJlbnRQYXRoVmFsdWVzOnt2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt9fX0sX2dyaWQ6T2JqZWN0fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX3RlbXBsYXRlSW5zdGFuY2VzQ2hhbmdlZChfdGVtcGxhdGVJbnN0YW5jZXMuKiwgX3BhcmVudFBhdGhWYWx1ZXMuKikiXX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5faW5zdGFuY2VQcm9wcz17ZGV0YWlsc09wZW5lZDohMCxpbmRleDohMCxpdGVtOiEwLHNlbGVjdGVkOiEwLGV4cGFuZGVkOiEwLGxldmVsOiEwfX1jcmVhdGVJbnN0YW5jZSgpe3RoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCk7bGV0IHQ9bmV3IHRoaXMuX1RlbXBsYXRlQ2xhc3Moe30pO3JldHVybiB0aGlzLmFkZEluc3RhbmNlKHQpLHR9YWRkSW5zdGFuY2UodCl7dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZih0KT09PS0xJiYodGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMucHVzaCh0KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnRoaXMubm90aWZ5UGF0aCgiX3RlbXBsYXRlSW5zdGFuY2VzLioiLHRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzKSkpfXJlbW92ZUluc3RhbmNlKHQpe2xldCByPXRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmluZGV4T2YodCk7dGhpcy5zcGxpY2UoIl90ZW1wbGF0ZUluc3RhbmNlcyIsciwxKX1fZW5zdXJlVGVtcGxhdGl6ZWQoKXt0aGlzLl9UZW1wbGF0ZUNsYXNzfHwodGhpcy5fVGVtcGxhdGVDbGFzcz1KbCh0aGlzLnRlbXBsYXRlLHRoaXMse2luc3RhbmNlUHJvcHM6dGhpcy5faW5zdGFuY2VQcm9wcyxwYXJlbnRNb2RlbDohMCxmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxyKXt0aGlzLl9mb3J3YXJkUGFyZW50UHJvcCh0LHIpLHRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzJiZ0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5mb3JFYWNoKG49Pm4ubm90aWZ5UGF0aCh0LHIpKX0sbm90aWZ5SW5zdGFuY2VQcm9wOmZ1bmN0aW9uKHQscixuKXtpZihyPT09ImluZGV4Inx8cj09PSJpdGVtIilyZXR1cm47bGV0IGk9YF9fJHtyfV9fYDtpZih0W2ldPT09bilyZXR1cm47dFtpXT1uO2xldCBvPUFycmF5LmZyb20odGhpcy5fZ3JpZC4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIobD0+dGhpcy5fZ3JpZC5faXRlbXNFcXVhbChsLl9pdGVtLHQuaXRlbSkpWzBdO28mJkFycmF5LmZyb20oby5jaGlsZHJlbikuZm9yRWFjaChsPT57bC5faW5zdGFuY2UmJihsLl9pbnN0YW5jZVtpXT1uLGwuX2luc3RhbmNlLm5vdGlmeVBhdGgocixuKSl9KTtsZXQgYT0iaXRlbS4iO2lmKEFycmF5LmlzQXJyYXkodGhpcy5fZ3JpZC5pdGVtcykmJnIuaW5kZXhPZihhKT09PTApe2xldCBsPXRoaXMuX2dyaWQuaXRlbXMuaW5kZXhPZih0Lml0ZW0pLGM9ci5zbGljZShhLmxlbmd0aCk7dGhpcy5fZ3JpZC5ub3RpZnlQYXRoKGBpdGVtcy4ke2x9LiR7Y31gLG4pfWxldCBzPWBfJHtyfUluc3RhbmNlQ2hhbmdlZENhbGxiYWNrYDt0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkW3NdJiZ0aGlzLl9ncmlkW3NdKHQsbil9fSkpfV9mb3J3YXJkUGFyZW50UHJvcCh0LHIpe3RoaXMuX3BhcmVudFBhdGhWYWx1ZXNbdF09cix0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5mb3JFYWNoKG49Pm4ubm90aWZ5UGF0aCh0LHIpKX1fdGVtcGxhdGVJbnN0YW5jZXNDaGFuZ2VkKHQpe2xldCByLG47aWYodC5wYXRoPT09Il90ZW1wbGF0ZUluc3RhbmNlcyIpcj0wLG49dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMubGVuZ3RoO2Vsc2UgaWYodC5wYXRoPT09Il90ZW1wbGF0ZUluc3RhbmNlcy5zcGxpY2VzIilyPXQudmFsdWUuaW5kZXgsbj10LnZhbHVlLmFkZGVkQ291bnQ7ZWxzZSByZXR1cm47T2JqZWN0LmtleXModGhpcy5fcGFyZW50UGF0aFZhbHVlc3x8e30pLmZvckVhY2goaT0+e2ZvcihsZXQgbz1yO288cituO28rKyl0aGlzLl90ZW1wbGF0ZUluc3RhbmNlc1tvXS5zZXQoaSx0aGlzLl9wYXJlbnRQYXRoVmFsdWVzW2ldKX0pfX07Y3VzdG9tRWxlbWVudHMuZGVmaW5lKFQwLmlzLFQwKTt2YXIgWGNlPWU9PmNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGV0YWlsc09wZW5lZEl0ZW1zOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfcm93RGV0YWlsc1RlbXBsYXRlOk9iamVjdCxyb3dEZXRhaWxzUmVuZGVyZXI6RnVuY3Rpb24sX2RldGFpbHNDZWxsczp7dHlwZTpBcnJheX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZChkZXRhaWxzT3BlbmVkSXRlbXMuKiwgX3Jvd0RldGFpbHNUZW1wbGF0ZSwgcm93RGV0YWlsc1JlbmRlcmVyKSIsIl9yb3dEZXRhaWxzVGVtcGxhdGVPclJlbmRlcmVyQ2hhbmdlZChfcm93RGV0YWlsc1RlbXBsYXRlLCByb3dEZXRhaWxzUmVuZGVyZXIpIl19X3Jvd0RldGFpbHNUZW1wbGF0ZU9yUmVuZGVyZXJDaGFuZ2VkKHIsbil7aWYociYmbil0aHJvdyBuZXcgRXJyb3IoIllvdSBzaG91bGQgb25seSB1c2UgZWl0aGVyIGEgcmVuZGVyZXIgb3IgYSB0ZW1wbGF0ZSBmb3Igcm93IGRldGFpbHMiKTtpZihyfHxuKXtpZihyJiYhci50ZW1wbGF0aXplcil7bGV0IGk9bmV3IFQwO2kuX2dyaWQ9dGhpcyxpLmRhdGFIb3N0PXRoaXMuZGF0YUhvc3QsaS50ZW1wbGF0ZT1yLHIudGVtcGxhdGl6ZXI9aX10aGlzLl9jb2x1bW5UcmVlJiZBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaChpPT57aS5xdWVyeVNlbGVjdG9yKCJbcGFydH49ZGV0YWlscy1jZWxsXSIpfHwodGhpcy5fdXBkYXRlUm93KGksdGhpcy5fY29sdW1uVHJlZVt0aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xXSksdGhpcy5fYTExeVVwZGF0ZVJvd0RldGFpbHNPcGVuZWQoaSwhMSkpLGRlbGV0ZSBpLnF1ZXJ5U2VsZWN0b3IoIltwYXJ0fj1kZXRhaWxzLWNlbGxdIikuX2luc3RhbmNlfSksdGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMubGVuZ3RoJiYoQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2godGhpcy5fdG9nZ2xlRGV0YWlsc0NlbGwsdGhpcyksdGhpcy5fdXBkYXRlKCkpfX1fZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZChyKXtyLnBhdGg9PT0iZGV0YWlsc09wZW5lZEl0ZW1zLmxlbmd0aCJ8fCFyLnZhbHVlfHxBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaChuPT57dGhpcy5fdG9nZ2xlRGV0YWlsc0NlbGwobixuLl9pdGVtKSx0aGlzLl9hMTF5VXBkYXRlUm93RGV0YWlsc09wZW5lZChuLHRoaXMuX2lzRGV0YWlsc09wZW5lZChuLl9pdGVtKSksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkZXRhaWxzLW9wZW5lZCIsdGhpcy5faXNEZXRhaWxzT3BlbmVkKG4uX2l0ZW0pLG4pfSl9X2NvbmZpZ3VyZURldGFpbHNDZWxsKHIpe3Iuc2V0QXR0cmlidXRlKCJwYXJ0IiwiY2VsbCBkZXRhaWxzLWNlbGwiKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIsITAscil9X3RvZ2dsZURldGFpbHNDZWxsKHIsbil7bGV0IGk9ci5xdWVyeVNlbGVjdG9yKCdbcGFydH49ImRldGFpbHMtY2VsbCJdJyk7aWYoIWkpcmV0dXJuO2xldCBvPSF0aGlzLl9pc0RldGFpbHNPcGVuZWQobiksYT0hIWkuaGlkZGVuIT09bzsoIWkuX2luc3RhbmNlJiYhaS5fcmVuZGVyZXJ8fGkuaGlkZGVuIT09bykmJihpLmhpZGRlbj1vLG8/ci5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgicGFkZGluZy1ib3R0b20iKToodGhpcy5yb3dEZXRhaWxzUmVuZGVyZXI/KGkuX3JlbmRlcmVyPXRoaXMucm93RGV0YWlsc1JlbmRlcmVyLGkuX3JlbmRlcmVyLmNhbGwodGhpcyxpLl9jb250ZW50LHRoaXMse2luZGV4OnIuaW5kZXgsaXRlbTpufSkpOnRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZSYmIWkuX2luc3RhbmNlJiYoaS5faW5zdGFuY2U9dGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlLnRlbXBsYXRpemVyLmNyZWF0ZUluc3RhbmNlKCksaS5fY29udGVudC5pbm5lckhUTUw9IiIsaS5fY29udGVudC5hcHBlbmRDaGlsZChpLl9pbnN0YW5jZS5yb290KSx0aGlzLl91cGRhdGVJdGVtKHIsbikpLHVpKCksci5zdHlsZS5zZXRQcm9wZXJ0eSgicGFkZGluZy1ib3R0b20iLGAke2kub2Zmc2V0SGVpZ2h0fXB4YCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT50aGlzLm5vdGlmeVJlc2l6ZSgpKSkpLGEmJih0aGlzLl91cGRhdGVNZXRyaWNzKCksdGhpcy5fcG9zaXRpb25JdGVtcygpKX1fdXBkYXRlRGV0YWlsc0NlbGxIZWlnaHRzKCl7QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMucXVlcnlTZWxlY3RvckFsbCgnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXTpub3QoW2hpZGRlbl0pJykpLmZvckVhY2gocj0+e3IucGFyZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgicGFkZGluZy1ib3R0b20iLGAke3Iub2Zmc2V0SGVpZ2h0fXB4YCl9KX1faXNEZXRhaWxzT3BlbmVkKHIpe3JldHVybiB0aGlzLmRldGFpbHNPcGVuZWRJdGVtcyYmdGhpcy5fZ2V0SXRlbUluZGV4SW5BcnJheShyLHRoaXMuZGV0YWlsc09wZW5lZEl0ZW1zKSE9PS0xfW9wZW5JdGVtRGV0YWlscyhyKXt0aGlzLl9pc0RldGFpbHNPcGVuZWQocil8fCh0aGlzLmRldGFpbHNPcGVuZWRJdGVtcz1bLi4udGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMscl0pfWNsb3NlSXRlbURldGFpbHMocil7dGhpcy5faXNEZXRhaWxzT3BlbmVkKHIpJiYodGhpcy5kZXRhaWxzT3BlbmVkSXRlbXM9dGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMuZmlsdGVyKG49PiF0aGlzLl9pdGVtc0VxdWFsKG4scikpKX1fZGV0YWlsc09wZW5lZEluc3RhbmNlQ2hhbmdlZENhbGxiYWNrKHIsbil7bj90aGlzLm9wZW5JdGVtRGV0YWlscyhyLml0ZW0pOnRoaXMuY2xvc2VJdGVtRGV0YWlscyhyLml0ZW0pfX07dmFyIE9jdD17U0NST0xMSU5HOjUwMCxJR05PUkVfV0hFRUw6NTAwfSwkY2U9ZT0+Y2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntfZnJvemVuQ2VsbHM6e3R5cGU6QXJyYXksdmFsdWU6KCk9PltdfSxfcm93V2l0aEZvY3VzZWRFbGVtZW50OkVsZW1lbnQsX2RlbHRhWUFjYzp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sX3VzZVN0aWNreTp7dHlwZTpCb29sZWFuLHZhbHVlOndpbmRvdy5DU1MmJndpbmRvdy5DU1Muc3VwcG9ydHMmJih3aW5kb3cuQ1NTLnN1cHBvcnRzKCJwb3NpdGlvbiIsInN0aWNreSIpfHx3aW5kb3cuQ1NTLnN1cHBvcnRzKCJwb3NpdGlvbiIsIi13ZWJraXQtc3RpY2t5IikpfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zY3JvbGxWaWV3cG9ydEhlaWdodFVwZGF0ZWQoX3ZpZXdwb3J0SGVpZ2h0KSJdfXNldCBfc2Nyb2xsVG9wKHIpe3RoaXMuJC50YWJsZS5zY3JvbGxUb3A9cn1nZXQgX3Njcm9sbFRvcCgpe3JldHVybiB0aGlzLiQudGFibGUuc2Nyb2xsVG9wfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9zY3JvbGxMaW5lSGVpZ2h0PXRoaXMuX2dldFNjcm9sbExpbmVIZWlnaHQoKX1fZ2V0U2Nyb2xsTGluZUhlaWdodCgpe2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Iuc3R5bGUuZm9udFNpemU9ImluaXRpYWwiLHIuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyKTtsZXQgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKS5mb250U2l6ZTtyZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChyKSxuP3dpbmRvdy5wYXJzZUludChuKTp2b2lkIDB9X3Njcm9sbFZpZXdwb3J0SGVpZ2h0VXBkYXRlZChyKXt0aGlzLl9zY3JvbGxQYWdlSGVpZ2h0PXItdGhpcy4kLmhlYWRlci5jbGllbnRIZWlnaHQtdGhpcy4kLmZvb3Rlci5jbGllbnRIZWlnaHQtdGhpcy5fc2Nyb2xsTGluZUhlaWdodH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy4kLm91dGVyc2Nyb2xsZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5zY3JvbGxUYXJnZXQ9dGhpcy4kLnRhYmxlLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLHRoaXMuX29uV2hlZWwpLHRoaXMuJC5pdGVtcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c2luIixyPT57bGV0IG49ci5jb21wb3NlZFBhdGgoKS5pbmRleE9mKHRoaXMuJC5pdGVtcyk7dGhpcy5fcm93V2l0aEZvY3VzZWRFbGVtZW50PXIuY29tcG9zZWRQYXRoKClbbi0xXX0pLHRoaXMuJC5pdGVtcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsKCk9PnRoaXMuX3Jvd1dpdGhGb2N1c2VkRWxlbWVudD12b2lkIDApLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsKCk9PnRoaXMuX19tb3VzZURvd249ITApLHRoaXMuc2Nyb2xsVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCgpPT57dGhpcy5fX21vdXNlRG93bj0hMSx0aGlzLl9fcGVuZGluZ1Jlb3JkZXImJih0aGlzLl9fcGVuZGluZ1Jlb3JkZXI9ITEsc2V0VGltZW91dCgoKT0+dGhpcy5fcmVvcmRlclJvd3MoKSxPY3QuU0NST0xMSU5HKSl9KX1zY3JvbGxUb0luZGV4KHIpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgpPT5zdXBlci5zY3JvbGxUb0luZGV4KHIpKX1fb25XaGVlbChyKXtpZihyLmN0cmxLZXl8fHRoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3Ioci50YXJnZXQsci5kZWx0YVgsci5kZWx0YVkpKXJldHVybjtsZXQgbj10aGlzLiQudGFibGUsaT1yLmRlbHRhWTtpZihyLmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU/aSo9dGhpcy5fc2Nyb2xsTGluZUhlaWdodDpyLmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0UmJihpKj10aGlzLl9zY3JvbGxQYWdlSGVpZ2h0KSx0aGlzLl93aGVlbEFuaW1hdGlvbkZyYW1lKXt0aGlzLl9kZWx0YVlBY2MrPWksci5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1pKz10aGlzLl9kZWx0YVlBY2MsdGhpcy5fZGVsdGFZQWNjPTAsdGhpcy5fd2hlZWxBbmltYXRpb25GcmFtZT0hMCx0aGlzLl9kZWJvdW5jZXJXaGVlbEFuaW1hdGlvbkZyYW1lPXNyLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlcldoZWVsQW5pbWF0aW9uRnJhbWUsUmksKCk9PnRoaXMuX3doZWVsQW5pbWF0aW9uRnJhbWU9ITEpO2xldCBvPU1hdGguYWJzKHIuZGVsdGFYKStNYXRoLmFicyhpKTt0aGlzLl9jYW5TY3JvbGwobixyLmRlbHRhWCxpKT8oci5wcmV2ZW50RGVmYXVsdCgpLG4uc2Nyb2xsVG9wKz1pLG4uc2Nyb2xsTGVmdCs9ci5kZWx0YVgsdGhpcy5fc2Nyb2xsSGFuZGxlcigpLHRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW09ITAsdGhpcy5faWdub3JlTmV3V2hlZWw9ITAsdGhpcy5fZGVib3VuY2VySWdub3JlTmV3V2hlZWw9c3IuZGVib3VuY2UodGhpcy5fZGVib3VuY2VySWdub3JlTmV3V2hlZWwscG8uYWZ0ZXIoT2N0LklHTk9SRV9XSEVFTCksKCk9PnRoaXMuX2lnbm9yZU5ld1doZWVsPSExKSk6dGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bSYmbzw9dGhpcy5fcHJldmlvdXNNb21lbnR1bXx8dGhpcy5faWdub3JlTmV3V2hlZWw/ci5wcmV2ZW50RGVmYXVsdCgpOm8+dGhpcy5fcHJldmlvdXNNb21lbnR1bSYmKHRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW09ITEpLHRoaXMuX3ByZXZpb3VzTW9tZW50dW09b31faGFzU2Nyb2xsZWRBbmNlc3RvcihyLG4saSl7aWYoci5sb2NhbE5hbWU9PT0idmFhZGluLWdyaWQtY2VsbC1jb250ZW50IilyZXR1cm4hMTtpZih0aGlzLl9jYW5TY3JvbGwocixuLGkpJiZbImF1dG8iLCJzY3JvbGwiXS5pbmRleE9mKGdldENvbXB1dGVkU3R5bGUocikub3ZlcmZsb3cpIT09LTEpcmV0dXJuITA7aWYociE9PXRoaXMmJnIucGFyZW50RWxlbWVudClyZXR1cm4gdGhpcy5faGFzU2Nyb2xsZWRBbmNlc3RvcihyLnBhcmVudEVsZW1lbnQsbixpKX1fY2FuU2Nyb2xsKHIsbixpKXtyZXR1cm4gaT4wJiZyLnNjcm9sbFRvcDxyLnNjcm9sbEhlaWdodC1yLm9mZnNldEhlaWdodHx8aTwwJiZyLnNjcm9sbFRvcD4wfHxuPjAmJnIuc2Nyb2xsTGVmdDxyLnNjcm9sbFdpZHRoLXIub2Zmc2V0V2lkdGh8fG48MCYmci5zY3JvbGxMZWZ0PjB9X3NjaGVkdWxlU2Nyb2xsaW5nKCl7dGhpcy5fc2Nyb2xsaW5nRnJhbWV8fCh0aGlzLl9zY3JvbGxpbmdGcmFtZT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwhMCx0aGlzLiQuc2Nyb2xsZXIpKSksdGhpcy5fZGVib3VuY2VTY3JvbGxpbmc9c3IuZGVib3VuY2UodGhpcy5fZGVib3VuY2VTY3JvbGxpbmcscG8uYWZ0ZXIoT2N0LlNDUk9MTElORyksKCk9PntjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY3JvbGxpbmdGcmFtZSksZGVsZXRlIHRoaXMuX3Njcm9sbGluZ0ZyYW1lLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwhMSx0aGlzLiQuc2Nyb2xsZXIpLHRoaXMuX3Jlb3JkZXJSb3dzKCl9KX1fYWZ0ZXJTY3JvbGwoKXt0aGlzLl90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKSx0aGlzLmhhc0F0dHJpYnV0ZSgicmVvcmRlcmluZyIpfHx0aGlzLl9zY2hlZHVsZVNjcm9sbGluZygpLHRoaXMuX3VwZGF0ZU92ZXJmbG93KCl9X3VwZGF0ZU92ZXJmbG93KCl7bGV0IHI9IiIsbj10aGlzLiQudGFibGU7bi5zY3JvbGxUb3A8bi5zY3JvbGxIZWlnaHQtbi5jbGllbnRIZWlnaHQmJihyKz0iIGJvdHRvbSIpLG4uc2Nyb2xsVG9wPjAmJihyKz0iIHRvcCIpLG4uc2Nyb2xsTGVmdDxuLnNjcm9sbFdpZHRoLW4uY2xpZW50V2lkdGgmJihyKz0iIHJpZ2h0Iiksbi5zY3JvbGxMZWZ0PjAmJihyKz0iIGxlZnQiKSx0aGlzLl9kZWJvdW5jZU92ZXJmbG93PXNyLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlT3ZlcmZsb3csUmksKCk9PntsZXQgaT1yLnRyaW0oKTtpLmxlbmd0aD4wJiZ0aGlzLmdldEF0dHJpYnV0ZSgib3ZlcmZsb3ciKSE9PWk/dGhpcy5zZXRBdHRyaWJ1dGUoIm92ZXJmbG93IixpKTppLmxlbmd0aD09MCYmdGhpcy5oYXNBdHRyaWJ1dGUoIm92ZXJmbG93IikmJnRoaXMucmVtb3ZlQXR0cmlidXRlKCJvdmVyZmxvdyIpfSl9X3Jlb3JkZXJSb3dzKCl7aWYodGhpcy5fX21vdXNlRG93bil7dGhpcy5fX3BlbmRpbmdSZW9yZGVyPSEwO3JldHVybn1sZXQgcj10aGlzLiQuaXRlbXMsbj1yLnF1ZXJ5U2VsZWN0b3JBbGwoInRyIik7aWYoIW4ubGVuZ3RoKXJldHVybjtsZXQgaT10aGlzLl92aXJ0dWFsU3RhcnQrdGhpcy5fdmlkeE9mZnNldCxvPXRoaXMuX3Jvd1dpdGhGb2N1c2VkRWxlbWVudHx8QXJyYXkuZnJvbShuKS5maWx0ZXIobD0+IWwuaGlkZGVuKVswXTtpZighbylyZXR1cm47bGV0IGE9by5pbmRleC1pLHM9QXJyYXkuZnJvbShuKS5pbmRleE9mKG8pLWE7aWYocz4wKWZvcihsZXQgbD0wO2w8cztsKyspci5hcHBlbmRDaGlsZChuW2xdKTtlbHNlIGlmKHM8MClmb3IobGV0IGw9bi5sZW5ndGgrcztsPG4ubGVuZ3RoO2wrKylyLmluc2VydEJlZm9yZShuW2xdLG5bMF0pO2lmKHRoaXMuX3NhZmFyaSl7bGV0e3RyYW5zZm9ybTpsfT10aGlzLiQuaGVhZGVyLnN0eWxlO3RoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPSIiLHNldFRpbWVvdXQoKCk9PnRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPWwpfX1fZnJvemVuQ2VsbHNDaGFuZ2VkKCl7dGhpcy5fZGVib3VuY2VyQ2FjaGVFbGVtZW50cz1zci5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJDYWNoZUVsZW1lbnRzLGNpLCgpPT57QXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnW3BhcnR+PSJjZWxsIl0nKSkuZm9yRWFjaChmdW5jdGlvbihyKXtyLnN0eWxlLnRyYW5zZm9ybT0iIn0pLHRoaXMuX2Zyb3plbkNlbGxzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuJC50YWJsZS5xdWVyeVNlbGVjdG9yQWxsKCJbZnJvemVuXSIpKSx0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpLHRoaXMuX3RyYW5zbGF0ZVN0YXRpb25hcnlFbGVtZW50cygpfSksdGhpcy5fdXBkYXRlTGFzdEZyb3plbigpfV91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpe3RoaXMuX2Zyb3plbkNlbGxzLmxlbmd0aD4wJiZ0aGlzLl9faXNSVEwmJih0aGlzLl9fc2Nyb2xsZXJNZXRyaWNzPXtzY3JvbGxXaWR0aDp0aGlzLiQudGFibGUuc2Nyb2xsV2lkdGgsY2xpZW50V2lkdGg6dGhpcy4kLnRhYmxlLmNsaWVudFdpZHRofSl9X3VwZGF0ZUxhc3RGcm96ZW4oKXtpZighdGhpcy5fY29sdW1uVHJlZSlyZXR1cm47bGV0IHI9dGhpcy5fY29sdW1uVHJlZVt0aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xXS5zbGljZSgwKTtyLnNvcnQoKGksbyk9PmkuX29yZGVyLW8uX29yZGVyKTtsZXQgbj1yLnJlZHVjZSgoaSxvLGEpPT4oby5fbGFzdEZyb3plbj0hMSxvLmZyb3plbiYmIW8uaGlkZGVuP2E6aSksdm9pZCAwKTtuIT09dm9pZCAwJiYocltuXS5fbGFzdEZyb3plbj0hMCl9X3RyYW5zbGF0ZVN0YXRpb25hcnlFbGVtZW50cygpe2xldCByPU1hdGgubWF4KDAsdGhpcy5fc2Nyb2xsTGVmdCksbj1NYXRoLm1heCgwLHRoaXMuX3Njcm9sbFRvcCksaT0wLG89MCxhPTA7aWYodGhpcy5fdXNlU3RpY2t5fHwoaT1yLG89bixhPXRoaXMuJC50YWJsZS5jbGllbnRIZWlnaHQtdGhpcy4kLmZvb3Rlci5vZmZzZXRIZWlnaHQtdGhpcy4kLmZvb3Rlci5vZmZzZXRUb3ApLHRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2dldFRyYW5zbGF0ZSgtcitpLG8pLHRoaXMuJC5mb290ZXIuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2dldFRyYW5zbGF0ZSgtcitpLG8rYSksdGhpcy4kLml0ZW1zLnN0eWxlLnRyYW5zZm9ybT10aGlzLl9nZXRUcmFuc2xhdGUoLXIraSwwKSx0aGlzLl9mcm96ZW5DZWxscy5sZW5ndGg+MCl7bGV0IHM9dGhpcy5fX2lzUlRMP3RoaXMuX19nZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0aGlzLiQudGFibGUpK3RoaXMuX19zY3JvbGxlck1ldHJpY3MuY2xpZW50V2lkdGgtdGhpcy5fX3Njcm9sbGVyTWV0cmljcy5zY3JvbGxXaWR0aDp0aGlzLl9zY3JvbGxMZWZ0LGw9dGhpcy5fZ2V0VHJhbnNsYXRlKHMsMCk7Zm9yKGxldCBjPTA7Yzx0aGlzLl9mcm96ZW5DZWxscy5sZW5ndGg7YysrKXRoaXMuX2Zyb3plbkNlbGxzW2NdLnN0eWxlLnRyYW5zZm9ybT1sfX1fZ2V0VHJhbnNsYXRlKHIsbil7cmV0dXJuYHRyYW5zbGF0ZSgke3J9cHgsICR7bn1weClgfX07dmFyIEtjZT1lPT5jbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3NlbGVjdGVkSXRlbXM6e3R5cGU6T2JqZWN0LG5vdGlmeTohMCx2YWx1ZTooKT0+W119fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX3NlbGVjdGVkSXRlbXNDaGFuZ2VkKHNlbGVjdGVkSXRlbXMuKikiXX1faXNTZWxlY3RlZChyKXtyZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zJiZ0aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHIsdGhpcy5zZWxlY3RlZEl0ZW1zKT4tMX1zZWxlY3RJdGVtKHIpe3RoaXMuX2lzU2VsZWN0ZWQocil8fCh0aGlzLnNlbGVjdGVkSXRlbXM9Wy4uLnRoaXMuc2VsZWN0ZWRJdGVtcyxyXSl9ZGVzZWxlY3RJdGVtKHIpe3RoaXMuX2lzU2VsZWN0ZWQocikmJih0aGlzLnNlbGVjdGVkSXRlbXM9dGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihuPT4hdGhpcy5faXRlbXNFcXVhbChuLHIpKSl9X3RvZ2dsZUl0ZW0ocil7dGhpcy5fZ2V0SXRlbUluZGV4SW5BcnJheShyLHRoaXMuc2VsZWN0ZWRJdGVtcyk9PT0tMT90aGlzLnNlbGVjdEl0ZW0ocik6dGhpcy5kZXNlbGVjdEl0ZW0ocil9X3NlbGVjdGVkSXRlbXNDaGFuZ2VkKHIpe3RoaXMuJC5pdGVtcy5jaGlsZHJlbi5sZW5ndGgmJihyLnBhdGg9PT0ic2VsZWN0ZWRJdGVtcyJ8fHIucGF0aD09PSJzZWxlY3RlZEl0ZW1zLnNwbGljZXMiKSYmQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2gobj0+e3RoaXMuX3VwZGF0ZUl0ZW0obixuLl9pdGVtKX0pfV9zZWxlY3RlZEluc3RhbmNlQ2hhbmdlZENhbGxiYWNrKHIsbil7bj90aGlzLnNlbGVjdEl0ZW0oci5pdGVtKTp0aGlzLmRlc2VsZWN0SXRlbShyLml0ZW0pfX07dmFyIFpjZT1lPT5jbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue211bHRpU29ydDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfc29ydGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX3ByZXZpb3VzU29ydGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRlci1jaGFuZ2VkIix0aGlzLl9vblNvcnRlckNoYW5nZWQpfV9vblNvcnRlckNoYW5nZWQocil7bGV0IG49ci50YXJnZXQ7ci5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9fdXBkYXRlU29ydGVyKG4pLHRoaXMuX19hcHBseVNvcnRlcnMoKX1fX3JlbW92ZVNvcnRlcnMocil7ci5sZW5ndGghPTAmJih0aGlzLl9zb3J0ZXJzPXRoaXMuX3NvcnRlcnMuZmlsdGVyKG49PnIuaW5kZXhPZihuKTwwKSx0aGlzLm11bHRpU29ydCYmdGhpcy5fX3VwZGF0ZVNvcnRPcmRlcnMoKSx0aGlzLl9fYXBwbHlTb3J0ZXJzKCkpfV9fdXBkYXRlU29ydE9yZGVycygpe3RoaXMuX3NvcnRlcnMuZm9yRWFjaCgocixuKT0+ci5fb3JkZXI9dGhpcy5fc29ydGVycy5sZW5ndGg+MT9uOm51bGwsdGhpcyl9X191cGRhdGVTb3J0ZXIocil7aWYoISghci5kaXJlY3Rpb24mJnRoaXMuX3NvcnRlcnMuaW5kZXhPZihyKT09PS0xKSl7aWYoci5fb3JkZXI9bnVsbCx0aGlzLm11bHRpU29ydCl0aGlzLl9yZW1vdmVBcnJheUl0ZW0odGhpcy5fc29ydGVycyxyKSxyLmRpcmVjdGlvbiYmdGhpcy5fc29ydGVycy51bnNoaWZ0KHIpLHRoaXMuX191cGRhdGVTb3J0T3JkZXJzKCk7ZWxzZSBpZihyLmRpcmVjdGlvbil7bGV0IG49dGhpcy5fc29ydGVycy5maWx0ZXIoaT0+aSE9cik7dGhpcy5fc29ydGVycz1bcl0sbi5mb3JFYWNoKGk9PntpLl9vcmRlcj1udWxsLGkuZGlyZWN0aW9uPW51bGx9KX19fV9fYXBwbHlTb3J0ZXJzKCl7dGhpcy5kYXRhUHJvdmlkZXImJnRoaXMuaXNBdHRhY2hlZCYmSlNPTi5zdHJpbmdpZnkodGhpcy5fcHJldmlvdXNTb3J0ZXJzKSE9PUpTT04uc3RyaW5naWZ5KHRoaXMuX21hcFNvcnRlcnMoKSkmJnRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2ExMXlVcGRhdGVTb3J0ZXJzKCksdGhpcy5fcHJldmlvdXNTb3J0ZXJzPXRoaXMuX21hcFNvcnRlcnMoKX1fbWFwU29ydGVycygpe3JldHVybiB0aGlzLl9zb3J0ZXJzLm1hcChyPT4oe3BhdGg6ci5wYXRoLGRpcmVjdGlvbjpyLmRpcmVjdGlvbn0pKX1fcmVtb3ZlQXJyYXlJdGVtKHIsbil7bGV0IGk9ci5pbmRleE9mKG4pO2k+LTEmJnIuc3BsaWNlKGksMSl9fTt2YXIgSmNlPWU9PmNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57Y2VsbENsYXNzTmFtZUdlbmVyYXRvcjpGdW5jdGlvbn19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9fY2VsbENsYXNzTmFtZUdlbmVyYXRvckNoYW5nZWQoY2VsbENsYXNzTmFtZUdlbmVyYXRvcikiXX1fX2NlbGxDbGFzc05hbWVHZW5lcmF0b3JDaGFuZ2VkKCl7dGhpcy5nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKCl9Z2VuZXJhdGVDZWxsQ2xhc3NOYW1lcygpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIocj0+IXIuaGlkZGVuKS5mb3JFYWNoKHI9PnRoaXMuX2dlbmVyYXRlQ2VsbENsYXNzTmFtZXMocix0aGlzLl9fZ2V0Um93TW9kZWwocikpKX1fZ2VuZXJhdGVDZWxsQ2xhc3NOYW1lcyhyLG4pe0FycmF5LmZyb20oci5jaGlsZHJlbikuZm9yRWFjaChpPT57aWYoaS5fX2dlbmVyYXRlZENsYXNzZXMmJmkuX19nZW5lcmF0ZWRDbGFzc2VzLmZvckVhY2gobz0+aS5jbGFzc0xpc3QucmVtb3ZlKG8pKSx0aGlzLmNlbGxDbGFzc05hbWVHZW5lcmF0b3Ipe2xldCBvPXRoaXMuY2VsbENsYXNzTmFtZUdlbmVyYXRvcihpLl9jb2x1bW4sbik7aS5fX2dlbmVyYXRlZENsYXNzZXM9byYmby5zcGxpdCgiICIpLmZpbHRlcihhPT5hLmxlbmd0aD4wKSxpLl9fZ2VuZXJhdGVkQ2xhc3NlcyYmaS5fX2dlbmVyYXRlZENsYXNzZXMuZm9yRWFjaChhPT5pLmNsYXNzTGlzdC5hZGQoYSkpfX0pfX07dmFyIFNQPXtCRVRXRUVOOiJiZXR3ZWVuIixPTl9UT1A6Im9uLXRvcCIsT05fVE9QX09SX0JFVFdFRU46Im9uLXRvcC1vci1iZXR3ZWVuIixPTl9HUklEOiJvbi1ncmlkIn0sQzA9e09OX1RPUDoib24tdG9wIixBQk9WRToiYWJvdmUiLEJFTE9XOiJiZWxvdyIsRU1QVFk6ImVtcHR5In0sUWNlPWU9PmNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZHJvcE1vZGU6U3RyaW5nLHJvd3NEcmFnZ2FibGU6Qm9vbGVhbixkcmFnRmlsdGVyOkZ1bmN0aW9uLGRyb3BGaWx0ZXI6RnVuY3Rpb24sX19kbmRBdXRvU2Nyb2xsVGhyZXNob2xkOnt2YWx1ZTo1MH19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZHJhZ0Ryb3BBY2Nlc3NDaGFuZ2VkKHJvd3NEcmFnZ2FibGUsIGRyb3BNb2RlLCBkcmFnRmlsdGVyLCBkcm9wRmlsdGVyKSJdfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iix0aGlzLl9vbkRyYWdTdGFydC5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsdGhpcy5fb25EcmFnT3Zlci5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2xlYXZlIix0aGlzLl9vbkRyYWdMZWF2ZS5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsdGhpcy5fb25Ecm9wLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLHI9Pnt0aGlzLmRyb3BNb2RlJiYoci5wcmV2ZW50RGVmYXVsdCgpLHIuc3RvcFByb3BhZ2F0aW9uKCkpfSl9X29uRHJhZ1N0YXJ0KHIpe2lmKHRoaXMucm93c0RyYWdnYWJsZSl7bGV0IG49ci50YXJnZXQ7aWYobi5sb2NhbE5hbWU9PT0idmFhZGluLWdyaWQtY2VsbC1jb250ZW50IiYmKG49bi5hc3NpZ25lZFNsb3QucGFyZW50Tm9kZS5wYXJlbnROb2RlKSxuLnBhcmVudE5vZGUhPT10aGlzLiQuaXRlbXMpcmV0dXJuO2lmKHIuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcmFnZ2luZy1yb3dzIiwhMCx0aGlzKSx0aGlzLl9zYWZhcmkpe2xldCBzPW4uc3R5bGUudHJhbnNmb3JtO24uc3R5bGUudG9wPS90cmFuc2xhdGVZXCgoLiopXCkvLmV4ZWMocylbMV0sbi5zdHlsZS50cmFuc2Zvcm09Im5vbmUiLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e24uc3R5bGUudG9wPSIiLG4uc3R5bGUudHJhbnNmb3JtPXN9KX1sZXQgaT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX2lvcz9yLmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2Uobik6ci5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKG4sci5jbGllbnRYLWkubGVmdCxyLmNsaWVudFktaS50b3ApO2xldCBvPVtuXTt0aGlzLl9pc1NlbGVjdGVkKG4uX2l0ZW0pJiYobz10aGlzLl9fZ2V0Vmlld3BvcnRSb3dzKCkuZmlsdGVyKHM9PnRoaXMuX2lzU2VsZWN0ZWQocy5faXRlbSkpLmZpbHRlcihzPT4hdGhpcy5kcmFnRmlsdGVyfHx0aGlzLmRyYWdGaWx0ZXIodGhpcy5fX2dldFJvd01vZGVsKHMpKSkpLHIuZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQiLHRoaXMuX19mb3JtYXREZWZhdWx0VHJhbnNmZXJEYXRhKG8pKSxuLnNldEF0dHJpYnV0ZSgiZHJhZ3N0YXJ0IixvLmxlbmd0aD4xP28ubGVuZ3RoOiIiKSx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tX2dyaWQtZHJhZy1zdGFydC14IjpgJHtyLmNsaWVudFgtaS5sZWZ0KzIwfXB4YCwiLS1fZ3JpZC1kcmFnLXN0YXJ0LXkiOmAke3IuY2xpZW50WS1pLnRvcCsxMH1weGB9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuLnJlbW92ZUF0dHJpYnV0ZSgiZHJhZ3N0YXJ0IiksdGhpcy51cGRhdGVTdHlsZXMoeyItLV9ncmlkLWRyYWctc3RhcnQteCI6IiIsIi0tX2dyaWQtZHJhZy1zdGFydC15IjoiIn0pfSk7bGV0IGE9bmV3IEN1c3RvbUV2ZW50KCJncmlkLWRyYWdzdGFydCIse2RldGFpbDp7ZHJhZ2dlZEl0ZW1zOm8ubWFwKHM9PnMuX2l0ZW0pLHNldERyYWdEYXRhOihzLGwpPT5yLmRhdGFUcmFuc2Zlci5zZXREYXRhKHMsbCksc2V0RHJhZ2dlZEl0ZW1zQ291bnQ6cz0+bi5zZXRBdHRyaWJ1dGUoImRyYWdzdGFydCIscyl9fSk7YS5vcmlnaW5hbEV2ZW50PXIsdGhpcy5kaXNwYXRjaEV2ZW50KGEpfX1fb25EcmFnRW5kKHIpe3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJhZ2dpbmctcm93cyIsITEsdGhpcyksci5zdG9wUHJvcGFnYXRpb24oKTtsZXQgbj1uZXcgQ3VzdG9tRXZlbnQoImdyaWQtZHJhZ2VuZCIpO24ub3JpZ2luYWxFdmVudD1yLHRoaXMuZGlzcGF0Y2hFdmVudChuKX1fb25EcmFnTGVhdmUocil7ci5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9jbGVhckRyYWdTdHlsZXMoKX1fb25EcmFnT3ZlcihyKXtpZih0aGlzLmRyb3BNb2RlKXtpZih0aGlzLl9kcm9wTG9jYXRpb249dm9pZCAwLHRoaXMuX2RyYWdPdmVySXRlbT12b2lkIDAsdGhpcy5fX2RuZEF1dG9TY3JvbGwoci5jbGllbnRZKSl7dGhpcy5fY2xlYXJEcmFnU3R5bGVzKCk7cmV0dXJufWxldCBuPXIuY29tcG9zZWRQYXRoKCkuZmlsdGVyKGk9PmkubG9jYWxOYW1lPT09InRyIilbMF07aWYoIXRoaXMuX2VmZmVjdGl2ZVNpemV8fHRoaXMuZHJvcE1vZGU9PT1TUC5PTl9HUklEKXRoaXMuX2Ryb3BMb2NhdGlvbj1DMC5FTVBUWTtlbHNlIGlmKCFufHxuLnBhcmVudE5vZGUhPT10aGlzLiQuaXRlbXMpe2lmKG4pcmV0dXJuO2lmKHRoaXMuZHJvcE1vZGU9PT1TUC5CRVRXRUVOfHx0aGlzLmRyb3BNb2RlPT09U1AuT05fVE9QX09SX0JFVFdFRU4pbj1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKGk9PiFpLmhpZGRlbikucG9wKCksdGhpcy5fZHJvcExvY2F0aW9uPUMwLkJFTE9XO2Vsc2UgcmV0dXJufWVsc2V7bGV0IGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih0aGlzLl9kcm9wTG9jYXRpb249QzAuT05fVE9QLHRoaXMuZHJvcE1vZGU9PT1TUC5CRVRXRUVOKXtsZXQgbz1yLmNsaWVudFktaS50b3A8aS5ib3R0b20tci5jbGllbnRZO3RoaXMuX2Ryb3BMb2NhdGlvbj1vP0MwLkFCT1ZFOkMwLkJFTE9XfWVsc2UgdGhpcy5kcm9wTW9kZT09PVNQLk9OX1RPUF9PUl9CRVRXRUVOJiYoci5jbGllbnRZLWkudG9wPGkuaGVpZ2h0LzM/dGhpcy5fZHJvcExvY2F0aW9uPUMwLkFCT1ZFOnIuY2xpZW50WS1pLnRvcD5pLmhlaWdodC8zKjImJih0aGlzLl9kcm9wTG9jYXRpb249QzAuQkVMT1cpKX1pZihuJiZuLmhhc0F0dHJpYnV0ZSgiZHJvcC1kaXNhYmxlZCIpKXt0aGlzLl9kcm9wTG9jYXRpb249dm9pZCAwO3JldHVybn1yLnN0b3BQcm9wYWdhdGlvbigpLHIucHJldmVudERlZmF1bHQoKSx0aGlzLl9kcm9wTG9jYXRpb249PT1DMC5FTVBUWT90aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyYWdvdmVyIiwhMCx0aGlzKTpuPyh0aGlzLl9kcmFnT3Zlckl0ZW09bi5faXRlbSxuLmdldEF0dHJpYnV0ZSgiZHJhZ292ZXIiKSE9PXRoaXMuX2Ryb3BMb2NhdGlvbiYmbi5zZXRBdHRyaWJ1dGUoImRyYWdvdmVyIix0aGlzLl9kcm9wTG9jYXRpb24pKTp0aGlzLl9jbGVhckRyYWdTdHlsZXMoKX19X19kbmRBdXRvU2Nyb2xsKHIpe2lmKHRoaXMuX19kbmRBdXRvU2Nyb2xsaW5nKXJldHVybiEwO2xldCBuPXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLGk9dGhpcy4kLmZvb3Rlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Asbz1uLXIrdGhpcy5fX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQsYT1yLWkrdGhpcy5fX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQscz0wO2lmKGE+MD9zPWEqMjpvPjAmJihzPS1vKjIpLHMpe2xldCBsPXRoaXMuJC50YWJsZS5zY3JvbGxUb3A7aWYodGhpcy4kLnRhYmxlLnNjcm9sbFRvcCs9cyxsIT09dGhpcy4kLnRhYmxlLnNjcm9sbFRvcClyZXR1cm4gdGhpcy5fX2RuZEF1dG9TY3JvbGxpbmc9ITAsc2V0VGltZW91dCgoKT0+dGhpcy5fX2RuZEF1dG9TY3JvbGxpbmc9ITEsMjApLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSwhMH19X19nZXRWaWV3cG9ydFJvd3MoKXtsZXQgcj10aGlzLiQuaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSxuPXRoaXMuJC5mb290ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO3JldHVybiBBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKGk9PntsZXQgbz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBvLmJvdHRvbT5yJiZvLnRvcDxufSl9X2NsZWFyRHJhZ1N0eWxlcygpe3RoaXMucmVtb3ZlQXR0cmlidXRlKCJkcmFnb3ZlciIpLEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKHI9PnIucmVtb3ZlQXR0cmlidXRlKCJkcmFnb3ZlciIpKX1fb25Ecm9wKHIpe2lmKHRoaXMuZHJvcE1vZGUpe3Iuc3RvcFByb3BhZ2F0aW9uKCksci5wcmV2ZW50RGVmYXVsdCgpO2xldCBuPXIuZGF0YVRyYW5zZmVyLnR5cGVzJiZBcnJheS5mcm9tKHIuZGF0YVRyYW5zZmVyLnR5cGVzKS5tYXAobz0+KHt0eXBlOm8sZGF0YTpyLmRhdGFUcmFuc2Zlci5nZXREYXRhKG8pfSkpO3RoaXMuX2NsZWFyRHJhZ1N0eWxlcygpO2xldCBpPW5ldyBDdXN0b21FdmVudCgiZ3JpZC1kcm9wIix7YnViYmxlczpyLmJ1YmJsZXMsY2FuY2VsYWJsZTpyLmNhbmNlbGFibGUsZGV0YWlsOntkcm9wVGFyZ2V0SXRlbTp0aGlzLl9kcmFnT3Zlckl0ZW0sZHJvcExvY2F0aW9uOnRoaXMuX2Ryb3BMb2NhdGlvbixkcmFnRGF0YTpufX0pO2kub3JpZ2luYWxFdmVudD1yLHRoaXMuZGlzcGF0Y2hFdmVudChpKX19X19mb3JtYXREZWZhdWx0VHJhbnNmZXJEYXRhKHIpe3JldHVybiByLm1hcChuPT5BcnJheS5mcm9tKG4uY2hpbGRyZW4pLmZpbHRlcihpPT4haS5oaWRkZW4mJmkuZ2V0QXR0cmlidXRlKCJwYXJ0IikuaW5kZXhPZigiZGV0YWlscy1jZWxsIik9PT0tMSkuc29ydCgoaSxvKT0+aS5fY29sdW1uLl9vcmRlcj5vLl9jb2x1bW4uX29yZGVyPzE6LTEpLm1hcChpPT5pLl9jb250ZW50LnRleHRDb250ZW50LnRyaW0oKSkuZmlsdGVyKGk9PmkpLmpvaW4oIgkiKSkuam9pbihgCmApfV9kcmFnRHJvcEFjY2Vzc0NoYW5nZWQoKXt0aGlzLmZpbHRlckRyYWdBbmREcm9wKCl9ZmlsdGVyRHJhZ0FuZERyb3AoKXtBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKHI9PiFyLmhpZGRlbikuZm9yRWFjaChyPT57dGhpcy5fZmlsdGVyRHJhZ0FuZERyb3Aocix0aGlzLl9fZ2V0Um93TW9kZWwocikpfSl9X2ZpbHRlckRyYWdBbmREcm9wKHIsbil7bGV0IGk9IXRoaXMucm93c0RyYWdnYWJsZXx8dGhpcy5kcmFnRmlsdGVyJiYhdGhpcy5kcmFnRmlsdGVyKG4pLG89IXRoaXMuZHJvcE1vZGV8fHRoaXMuZHJvcEZpbHRlciYmIXRoaXMuZHJvcEZpbHRlcihuKTtBcnJheS5mcm9tKHIuY2hpbGRyZW4pLm1hcChzPT5zLl9jb250ZW50KS5mb3JFYWNoKHM9PntpP3MucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKTpzLnNldEF0dHJpYnV0ZSgiZHJhZ2dhYmxlIiwhMCl9KSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyYWctZGlzYWJsZWQiLGksciksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcm9wLWRpc2FibGVkIixvLHIpfX07dmFyIHR1ZT1lPT5jbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19oZWFkZXJGb2N1c2FibGU6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfZm9jdXNhYmxlQ2hhbmdlZCJ9LF9pdGVtc0ZvY3VzYWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9mb2N1c2FibGVDaGFuZ2VkIn0sX2Zvb3RlckZvY3VzYWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9mb2N1c2FibGVDaGFuZ2VkIn0sX25hdmlnYXRpbmdJc0hpZGRlbjpCb29sZWFuLF9mb2N1c2VkSXRlbUluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowfSxfZm9jdXNlZENvbHVtbk9yZGVyOk51bWJlcixpbnRlcmFjdGluZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMCxvYnNlcnZlcjoiX2ludGVyYWN0aW5nQ2hhbmdlZCJ9fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksISh0aGlzLl9pb3N8fHRoaXMuX2FuZHJvaWQpJiYodGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleURvd24pLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuX29uS2V5VXApLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25Gb2N1c0luKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLl9vbkZvY3VzT3V0KSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25DZWxsRm9jdXNJbi5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLHRoaXMuX29uQ2VsbEZvY3VzT3V0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKT0+e3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcyksdGhpcy5faXNNb3VzZWRvd249ITB9KSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCgpPT50aGlzLl9pc01vdXNlZG93bj0hMSkpfV9mb2N1c2FibGVDaGFuZ2VkKHIsbil7biYmbi5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSxyJiZ0aGlzLl91cGRhdGVHcmlkU2VjdGlvbkZvY3VzVGFyZ2V0KHIpfV9pbnRlcmFjdGluZ0NoYW5nZWQoKXt0aGlzLl91cGRhdGVHcmlkU2VjdGlvbkZvY3VzVGFyZ2V0KHRoaXMuX2hlYWRlckZvY3VzYWJsZSksdGhpcy5fdXBkYXRlR3JpZFNlY3Rpb25Gb2N1c1RhcmdldCh0aGlzLl9pdGVtc0ZvY3VzYWJsZSksdGhpcy5fdXBkYXRlR3JpZFNlY3Rpb25Gb2N1c1RhcmdldCh0aGlzLl9mb290ZXJGb2N1c2FibGUpfV9vbktleURvd24ocil7bGV0IG49ci5rZXksaTtzd2l0Y2gobil7Y2FzZSJBcnJvd1VwIjpjYXNlIkFycm93RG93biI6Y2FzZSJBcnJvd0xlZnQiOmNhc2UiQXJyb3dSaWdodCI6Y2FzZSJQYWdlVXAiOmNhc2UiUGFnZURvd24iOmNhc2UiSG9tZSI6Y2FzZSJFbmQiOmk9Ik5hdmlnYXRpb24iO2JyZWFrO2Nhc2UiRW50ZXIiOmNhc2UiRXNjYXBlIjpjYXNlIkYyIjppPSJJbnRlcmFjdGlvbiI7YnJlYWs7Y2FzZSJUYWIiOmk9IlRhYiI7YnJlYWs7Y2FzZSIgIjppPSJTcGFjZSI7YnJlYWt9dGhpcy5fZGV0ZWN0SW50ZXJhY3RpbmcociksdGhpcy5pbnRlcmFjdGluZyYmaSE9PSJJbnRlcmFjdGlvbiImJihpPXZvaWQgMCksaSYmdGhpc1tgX29uJHtpfUtleURvd25gXShyLG4pfV9lbnN1cmVTY3JvbGxlZFRvSW5kZXgocil7QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcihpPT5pLmluZGV4PT09cilbMF18fHRoaXMuX3Njcm9sbFRvSW5kZXgocil9X29uTmF2aWdhdGlvbktleURvd24ocixuKXt0aGlzLl9zY3JvbGxIYW5kbGVyKCksci5wcmV2ZW50RGVmYXVsdCgpO2Z1bmN0aW9uIGkoQil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoQi5wYXJlbnROb2RlLmNoaWxkcmVuLEIpfWxldCBvPXRoaXMuX2xhc3RWaXNpYmxlSW5kZXgtdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgtMSxhPTAscz0wO3N3aXRjaChuKXtjYXNlIkFycm93UmlnaHQiOmE9dGhpcy5fX2lzUlRMPy0xOjE7YnJlYWs7Y2FzZSJBcnJvd0xlZnQiOmE9dGhpcy5fX2lzUlRMPzE6LTE7YnJlYWs7Y2FzZSJIb21lIjphPS0xLzAsci5jdHJsS2V5JiYocz0tMS8wKTticmVhaztjYXNlIkVuZCI6YT0xLzAsci5jdHJsS2V5JiYocz0xLzApO2JyZWFrO2Nhc2UiQXJyb3dEb3duIjpzPTE7YnJlYWs7Y2FzZSJBcnJvd1VwIjpzPS0xO2JyZWFrO2Nhc2UiUGFnZURvd24iOnM9bzticmVhaztjYXNlIlBhZ2VVcCI6cz0tbzticmVha31sZXQgbD1yLmNvbXBvc2VkUGF0aCgpWzBdLGM9aShsKSx1PXRoaXMuX2VsZW1lbnRNYXRjaGVzKGwsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSxoPWwucGFyZW50Tm9kZSxmPWgucGFyZW50Tm9kZSxwPShmPT09dGhpcy4kLml0ZW1zP3RoaXMuX2VmZmVjdGl2ZVNpemU6Zi5jaGlsZHJlbi5sZW5ndGgpLTEsZD1mPT09dGhpcy4kLml0ZW1zP3RoaXMuX2ZvY3VzZWRJdGVtSW5kZXghPT12b2lkIDA/dGhpcy5fZm9jdXNlZEl0ZW1JbmRleDpoLmluZGV4OmkoaCksZz1NYXRoLm1heCgwLE1hdGgubWluKGQrcyxwKSksXz0hMTtpZihmPT09dGhpcy4kLml0ZW1zKXtsZXQgQj1oLl9pdGVtLEk9dGhpcy5fY2FjaGUuZ2V0SXRlbUZvckluZGV4KGcpO3U/Xz1zPT09MDpfPXM9PT0xJiZ0aGlzLl9pc0RldGFpbHNPcGVuZWQoQil8fHM9PT0tMSYmZyE9PWQmJnRoaXMuX2lzRGV0YWlsc09wZW5lZChJKSxfIT09dSYmKHM9PT0xJiZffHxzPT09LTEmJiFfKSYmKGc9ZCl9aWYoZiE9PXRoaXMuJC5pdGVtcyl7aWYoZz5kKWZvcig7ZzxwJiZmLmNoaWxkcmVuW2ddLmhpZGRlbjspZysrO2Vsc2UgaWYoZzxkKWZvcig7Zz4wJiZmLmNoaWxkcmVuW2ddLmhpZGRlbjspZy0tfXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcj09PXZvaWQgMCYmKHU/dGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyPTA6dGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyPXRoaXMuX2dldENvbHVtbnMoZixkKS5maWx0ZXIoQj0+IUIuaGlkZGVuKVtjXS5fb3JkZXIpO2xldCB5PXRoaXMuX2dldENvbHVtbnMoZixnKS5maWx0ZXIoQj0+IUIuaGlkZGVuKSx4PXkubWFwKEI9PkIuX29yZGVyKS5zb3J0KChCLEkpPT5CLUkpLGI9eC5sZW5ndGgtMSxTPXguaW5kZXhPZih4LnNsaWNlKDApLnNvcnQoKEIsSSk9Pk1hdGguYWJzKEItdGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyKS1NYXRoLmFicyhJLXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcikpWzBdKSxDPXM9PT0wJiZ1P1M6TWF0aC5tYXgoMCxNYXRoLm1pbihTK2EsYikpO0MhPT1TJiYodGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyPXZvaWQgMCksZj09PXRoaXMuJC5pdGVtcyYmdGhpcy5fZW5zdXJlU2Nyb2xsZWRUb0luZGV4KGcpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITAsdGhpcyk7bGV0IGs9eS5yZWR1Y2UoKEIsSSxMKT0+KEJbSS5fb3JkZXJdPUwsQikse30pW3hbQ11dLE89Zj09PXRoaXMuJC5pdGVtcz9BcnJheS5mcm9tKGYuY2hpbGRyZW4pLmZpbHRlcihCPT5CLmluZGV4PT09ZylbMF06Zi5jaGlsZHJlbltnXTtpZighTylyZXR1cm47bGV0IEQ9Xz9BcnJheS5mcm9tKE8uY2hpbGRyZW4pLmZpbHRlcihCPT50aGlzLl9lbGVtZW50TWF0Y2hlcyhCLCdbcGFydH49ImRldGFpbHMtY2VsbCJdJykpWzBdOk8uY2hpbGRyZW5ba107aWYodGhpcy5fc2Nyb2xsSG9yaXpvbnRhbGx5VG9DZWxsKEQpLGY9PT10aGlzLiQuaXRlbXMmJih0aGlzLl9mb2N1c2VkSXRlbUluZGV4PWcpLGY9PT10aGlzLiQuaXRlbXMpe2xldCBCPUQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksST10aGlzLiQuZm9vdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCxMPXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO0IuYm90dG9tPkk/KHRoaXMuJC50YWJsZS5zY3JvbGxUb3ArPUIuYm90dG9tLUksdGhpcy5fc2Nyb2xsSGFuZGxlcigpKTpCLnRvcDxMJiYodGhpcy4kLnRhYmxlLnNjcm9sbFRvcC09TC1CLnRvcCx0aGlzLl9zY3JvbGxIYW5kbGVyKCkpfUQuZm9jdXMoKX1fb25JbnRlcmFjdGlvbktleURvd24ocixuKXtsZXQgaT1yLmNvbXBvc2VkUGF0aCgpWzBdLG89aS5sb2NhbE5hbWU9PT0iaW5wdXQiJiYhL14oYnV0dG9ufGNoZWNrYm94fGNvbG9yfGZpbGV8aW1hZ2V8cmFkaW98cmFuZ2V8cmVzZXR8c3VibWl0KSQvaS50ZXN0KGkudHlwZSksYTtzd2l0Y2gobil7Y2FzZSJFbnRlciI6YT10aGlzLmludGVyYWN0aW5nPyFvOiEwO2JyZWFrO2Nhc2UiRXNjYXBlIjphPSExO2JyZWFrO2Nhc2UiRjIiOmE9IXRoaXMuaW50ZXJhY3Rpbmc7YnJlYWt9bGV0e2NlbGw6c309dGhpcy5fZ2V0R3JpZEV2ZW50TG9jYXRpb24ocik7aWYodGhpcy5pbnRlcmFjdGluZyE9PWEmJnMhPT1udWxsKWlmKGEpe2xldCBsPXMuX2NvbnRlbnQucXVlcnlTZWxlY3RvcigiW2ZvY3VzLXRhcmdldF0iKXx8cy5fY29udGVudC5maXJzdEVsZW1lbnRDaGlsZDtsJiYoci5wcmV2ZW50RGVmYXVsdCgpLGwuZm9jdXMoKSx0aGlzLl9zZXRJbnRlcmFjdGluZyghMCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMSx0aGlzKSl9ZWxzZSByLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNlZENvbHVtbk9yZGVyPXZvaWQgMCxzLmZvY3VzKCksdGhpcy5fc2V0SW50ZXJhY3RpbmcoITEpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITAsdGhpcyl9X3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQocixuKXtsZXQgaT1bdGhpcy4kLnRhYmxlLHRoaXMuX2hlYWRlckZvY3VzYWJsZSx0aGlzLl9pdGVtc0ZvY3VzYWJsZSx0aGlzLl9mb290ZXJGb2N1c2FibGUsdGhpcy4kLmZvY3VzZXhpdF0sbz1pLmluZGV4T2Yocik7Zm9yKG8rPW47bz49MCYmbzw9aS5sZW5ndGgtMSYmKCFpW29dfHxpW29dLnBhcmVudE5vZGUuaGlkZGVuKTspbys9bjtyZXR1cm4gaVtvXX1fb25UYWJLZXlEb3duKHIpe2xldCBuPXRoaXMuX3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQoci5jb21wb3NlZFBhdGgoKVswXSxyLnNoaWZ0S2V5Py0xOjEpO2lmKG49PT10aGlzLiQudGFibGUpdGhpcy4kLnRhYmxlLmZvY3VzKCk7ZWxzZSBpZihuPT09dGhpcy4kLmZvY3VzZXhpdCl0aGlzLiQuZm9jdXNleGl0LmZvY3VzKCk7ZWxzZSBpZihuPT09dGhpcy5faXRlbXNGb2N1c2FibGUpe2xldCBpPW4sbz10aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnROb2RlO2lmKHRoaXMuX2Vuc3VyZVNjcm9sbGVkVG9JbmRleCh0aGlzLl9mb2N1c2VkSXRlbUluZGV4KSxvLmluZGV4IT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCl7bGV0IGE9QXJyYXkuZnJvbShvLmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuX2l0ZW1zRm9jdXNhYmxlKSxzPUFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIobD0+bC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgpWzBdO3MmJihpPXMuY2hpbGRyZW5bYV0pfXIucHJldmVudERlZmF1bHQoKSxpLmZvY3VzKCl9ZWxzZSByLnByZXZlbnREZWZhdWx0KCksbi5mb2N1cygpO3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITAsdGhpcyl9X29uU3BhY2VLZXlEb3duKHIpe3IucHJldmVudERlZmF1bHQoKTtsZXQgbj1yLmNvbXBvc2VkUGF0aCgpWzBdOyghbi5fY29udGVudHx8IW4uX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQpJiZ0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsLWFjdGl2YXRlIix7ZGV0YWlsOnttb2RlbDp0aGlzLl9fZ2V0Um93TW9kZWwobi5wYXJlbnRFbGVtZW50KX19KSl9X29uS2V5VXAocil7aWYoIS9eKCB8U3BhY2VCYXIpJC8udGVzdChyLmtleSkpcmV0dXJuO3IucHJldmVudERlZmF1bHQoKTtsZXQgbj1yLmNvbXBvc2VkUGF0aCgpWzBdO2lmKG4uX2NvbnRlbnQmJm4uX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQpe2xldCBpPXRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIik7bi5fY29udGVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGljaygpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsaSx0aGlzKX19X29uRm9jdXNJbihyKXt0aGlzLl9pc01vdXNlZG93bnx8dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKTtsZXQgbj1yLmNvbXBvc2VkUGF0aCgpWzBdO249PT10aGlzLiQudGFibGV8fG49PT10aGlzLiQuZm9jdXNleGl0Pyh0aGlzLl9wcmVkaWN0Rm9jdXNTdGVwVGFyZ2V0KG4sbj09PXRoaXMuJC50YWJsZT8xOi0xKS5mb2N1cygpLHRoaXMuX3NldEludGVyYWN0aW5nKCExKSk6dGhpcy5fZGV0ZWN0SW50ZXJhY3Rpbmcocil9X29uRm9jdXNPdXQocil7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMSx0aGlzKSx0aGlzLl9kZXRlY3RJbnRlcmFjdGluZyhyKX1fb25DZWxsRm9jdXNJbihyKXtsZXR7c2VjdGlvbjpuLGNlbGw6aX09dGhpcy5fZ2V0R3JpZEV2ZW50TG9jYXRpb24ocik7dGhpcy5fZGV0ZWN0SW50ZXJhY3RpbmcociksbiYmaSYmKHRoaXMuX2FjdGl2ZVJvd0dyb3VwPW4sdGhpcy4kLmhlYWRlcj09PW4/dGhpcy5faGVhZGVyRm9jdXNhYmxlPWk6dGhpcy4kLml0ZW1zPT09bj90aGlzLl9pdGVtc0ZvY3VzYWJsZT1pOnRoaXMuJC5mb290ZXI9PT1uJiYodGhpcy5fZm9vdGVyRm9jdXNhYmxlPWkpLGkuX2NvbnRlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtZm9jdXNpbiIse2J1YmJsZXM6ITF9KSksaS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1mb2N1cyIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSkpLHRoaXMuX2RldGVjdEZvY3VzZWRJdGVtSW5kZXgocil9X29uQ2VsbEZvY3VzT3V0KHIpe3IuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLiQudGFibGUpPT09MyYmci5jb21wb3NlZFBhdGgoKVswXS5fY29udGVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1mb2N1c291dCIse2J1YmJsZXM6ITF9KSl9X2RldGVjdEludGVyYWN0aW5nKHIpe2xldCBuPXIuY29tcG9zZWRQYXRoKCkuc29tZShpPT5pLmxvY2FsTmFtZT09PSJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiKTt0aGlzLl9zZXRJbnRlcmFjdGluZyhuKX1fZGV0ZWN0Rm9jdXNlZEl0ZW1JbmRleChyKXtsZXR7c2VjdGlvbjpuLHJvdzppfT10aGlzLl9nZXRHcmlkRXZlbnRMb2NhdGlvbihyKTtuPT09dGhpcy4kLml0ZW1zJiYodGhpcy5fZm9jdXNlZEl0ZW1JbmRleD1pLmluZGV4KX1fdXBkYXRlR3JpZFNlY3Rpb25Gb2N1c1RhcmdldChyKXtpZighcilyZXR1cm47bGV0IG49dGhpcy5fZ2V0R3JpZFNlY3Rpb25Gcm9tRm9jdXNUYXJnZXQociksaT10aGlzLmludGVyYWN0aW5nJiZuPT09dGhpcy5fYWN0aXZlUm93R3JvdXA7ci50YWJJbmRleD1pPy0xOjB9X3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHIsbil7ci5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgmJnRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIikmJnRoaXMuX2FjdGl2ZVJvd0dyb3VwPT09dGhpcy4kLml0ZW1zJiYodGhpcy5fbmF2aWdhdGluZ0lzSGlkZGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcykpLG49PT10aGlzLl9mb2N1c2VkSXRlbUluZGV4JiZ0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW4mJih0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW49ITEsdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKSl9X2dldENvbHVtbnMocixuKXtsZXQgaT10aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xO3JldHVybiByPT09dGhpcy4kLmhlYWRlcj9pPW46cj09PXRoaXMuJC5mb290ZXImJihpPXRoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTEtbiksdGhpcy5fY29sdW1uVHJlZVtpXX1fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKXtpZih0aGlzLiQuaGVhZGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5faGVhZGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKHI9PiFyLmhpZGRlbilbMF0pLHRoaXMuJC5pdGVtcy5maXJzdEVsZW1lbnRDaGlsZCl7bGV0IHI9dGhpcy5faXRlcmF0ZUl0ZW1zKChuLGkpPT57aWYodGhpcy5fZmlyc3RWaXNpYmxlSW5kZXg9PT1pKXJldHVybiB0aGlzLiQuaXRlbXMuY2hpbGRyZW5bbl19KTtyJiYodGhpcy5faXRlbXNGb2N1c2FibGU9QXJyYXkuZnJvbShyLmNoaWxkcmVuKS5maWx0ZXIobj0+IW4uaGlkZGVuKVswXSl9dGhpcy4kLmZvb3Rlci5maXJzdEVsZW1lbnRDaGlsZCYmKHRoaXMuX2Zvb3RlckZvY3VzYWJsZT1BcnJheS5mcm9tKHRoaXMuJC5mb290ZXIuZmlyc3RFbGVtZW50Q2hpbGQuY2hpbGRyZW4pLmZpbHRlcihyPT4hci5oaWRkZW4pWzBdKX1fc2Nyb2xsSG9yaXpvbnRhbGx5VG9DZWxsKHIpe2lmKHIuaGFzQXR0cmlidXRlKCJmcm96ZW4iKXx8dGhpcy5fZWxlbWVudE1hdGNoZXMociwnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXScpKXJldHVybjtsZXQgbj1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9ci5wYXJlbnROb2RlLG89QXJyYXkuZnJvbShpLmNoaWxkcmVuKS5pbmRleE9mKHIpLGE9dGhpcy4kLnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9YS5sZWZ0LGw9YS5yaWdodDtmb3IobGV0IGM9by0xO2M+PTA7Yy0tKXtsZXQgdT1pLmNoaWxkcmVuW2NdO2lmKCEodS5oYXNBdHRyaWJ1dGUoImhpZGRlbiIpfHx0aGlzLl9lbGVtZW50TWF0Y2hlcyh1LCdbcGFydH49ImRldGFpbHMtY2VsbCJdJykpJiZ1Lmhhc0F0dHJpYnV0ZSgiZnJvemVuIikpe3M9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodDticmVha319Zm9yKGxldCBjPW8rMTtjPGkuY2hpbGRyZW4ubGVuZ3RoO2MrKyl7bGV0IHU9aS5jaGlsZHJlbltjXTtpZighKHUuaGFzQXR0cmlidXRlKCJoaWRkZW4iKXx8dGhpcy5fZWxlbWVudE1hdGNoZXModSwnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXScpKSYmdS5oYXNBdHRyaWJ1dGUoImZyb3plbiIpKXtsPXUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDticmVha319bi5sZWZ0PHMmJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9TWF0aC5yb3VuZChuLmxlZnQtcykpLG4ucmlnaHQ+bCYmKHRoaXMuJC50YWJsZS5zY3JvbGxMZWZ0Kz1NYXRoLnJvdW5kKG4ucmlnaHQtbCkpfV9lbGVtZW50TWF0Y2hlcyhyLG4pe3JldHVybiByLm1hdGNoZXM/ci5tYXRjaGVzKG4pOkFycmF5LmZyb20oci5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwobikpLmluZGV4T2YocikhPT0tMX1fZ2V0R3JpZEV2ZW50TG9jYXRpb24ocil7bGV0IG49ci5jb21wb3NlZFBhdGgoKSxpPW4uaW5kZXhPZih0aGlzLiQudGFibGUpLG89aT49MT9uW2ktMV06bnVsbCxhPWk+PTI/bltpLTJdOm51bGwscz1pPj0zP25baS0zXTpudWxsO3JldHVybntzZWN0aW9uOm8scm93OmEsY2VsbDpzfX1fZ2V0R3JpZFNlY3Rpb25Gcm9tRm9jdXNUYXJnZXQocil7cmV0dXJuIHI9PT10aGlzLl9oZWFkZXJGb2N1c2FibGU/dGhpcy4kLmhlYWRlcjpyPT09dGhpcy5faXRlbXNGb2N1c2FibGU/dGhpcy4kLml0ZW1zOnI9PT10aGlzLl9mb290ZXJGb2N1c2FibGU/dGhpcy4kLmZvb3RlcjpudWxsfX07ZnVuY3Rpb24gZXVlKGUsdCxyKXtsZXQgbj0xO2UuZm9yRWFjaChpPT57biUxMD09PTAmJm4rKyxpLl9vcmRlcj1yK24qdCxuKyt9KX12YXIgcnVlPWU9PmNsYXNzIGV4dGVuZHMgX2goZSl7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2NvbHVtblJlb3JkZXJpbmdBbGxvd2VkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9vcmRlckJhc2VTY29wZTp7dHlwZTpOdW1iZXIsdmFsdWU6MWU3fX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl91cGRhdGVPcmRlcnMoX2NvbHVtblRyZWUsIF9jb2x1bW5UcmVlLiopIl19cmVhZHkoKXtzdXBlci5yZWFkeSgpLEVtKHRoaXMsInRyYWNrIix0aGlzLl9vblRyYWNrRXZlbnQpLHRoaXMuX3Jlb3JkZXJHaG9zdD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignW3BhcnQ9InJlb3JkZXItZ2hvc3QiXScpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fb25Ub3VjaFN0YXJ0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLl9vblRvdWNoTW92ZS5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLl9vblRvdWNoRW5kLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLHRoaXMuX29uQ29udGV4dE1lbnUuYmluZCh0aGlzKSl9X29uQ29udGV4dE1lbnUocil7dGhpcy5oYXNBdHRyaWJ1dGUoInJlb3JkZXJpbmciKSYmci5wcmV2ZW50RGVmYXVsdCgpfV9vblRvdWNoU3RhcnQocil7dGhpcy5fc3RhcnRUb3VjaFJlb3JkZXJUaW1lb3V0PXNldFRpbWVvdXQoKCk9Pnt0aGlzLl9vblRyYWNrU3RhcnQoe2RldGFpbDp7eDpyLnRvdWNoZXNbMF0uY2xpZW50WCx5OnIudG91Y2hlc1swXS5jbGllbnRZfX0pfSwxMDApfV9vblRvdWNoTW92ZShyKXt0aGlzLl9kcmFnZ2VkQ29sdW1uJiZyLnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuX3N0YXJ0VG91Y2hSZW9yZGVyVGltZW91dCl9X29uVG91Y2hFbmQoKXtjbGVhclRpbWVvdXQodGhpcy5fc3RhcnRUb3VjaFJlb3JkZXJUaW1lb3V0KSx0aGlzLl9vblRyYWNrRW5kKCl9X29uVHJhY2tFdmVudChyKXtpZihyLmRldGFpbC5zdGF0ZT09PSJzdGFydCIpe2xldCBuPXIuY29tcG9zZWRQYXRoKCksaT1uW24uaW5kZXhPZih0aGlzLiQuaGVhZGVyKS0yXTtpZighaXx8IWkuX2NvbnRlbnR8fGkuX2NvbnRlbnQuY29udGFpbnModGhpcy5nZXRSb290Tm9kZSgpLmFjdGl2ZUVsZW1lbnQpfHx0aGlzLiQuc2Nyb2xsZXIuaGFzQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciKSlyZXR1cm47dGhpcy5fdG91Y2hEZXZpY2V8fHRoaXMuX29uVHJhY2tTdGFydChyKX1lbHNlIHIuZGV0YWlsLnN0YXRlPT09InRyYWNrIj90aGlzLl9vblRyYWNrKHIpOnIuZGV0YWlsLnN0YXRlPT09ImVuZCImJnRoaXMuX29uVHJhY2tFbmQocil9X29uVHJhY2tTdGFydChyKXtpZighdGhpcy5jb2x1bW5SZW9yZGVyaW5nQWxsb3dlZClyZXR1cm47bGV0IG49ci5jb21wb3NlZFBhdGgmJnIuY29tcG9zZWRQYXRoKCk7aWYobiYmbi5maWx0ZXIobz0+by5oYXNBdHRyaWJ1dGUmJm8uaGFzQXR0cmlidXRlKCJkcmFnZ2FibGUiKSlbMF0pcmV0dXJuO2xldCBpPXRoaXMuX2NlbGxGcm9tUG9pbnQoci5kZXRhaWwueCxyLmRldGFpbC55KTtpZighKCFpfHxpLmdldEF0dHJpYnV0ZSgicGFydCIpLmluZGV4T2YoImhlYWRlci1jZWxsIik9PT0tMSkpe2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCEwLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW49aS5fY29sdW1uO3RoaXMuX2RyYWdnZWRDb2x1bW4ucGFyZW50RWxlbWVudC5jaGlsZEVsZW1lbnRDb3VudD09PTE7KXRoaXMuX2RyYWdnZWRDb2x1bW49dGhpcy5fZHJhZ2dlZENvbHVtbi5wYXJlbnRFbGVtZW50O3RoaXMuX3NldFNpYmxpbmdzUmVvcmRlclN0YXR1cyh0aGlzLl9kcmFnZ2VkQ29sdW1uLCJhbGxvd2VkIiksdGhpcy5fZHJhZ2dlZENvbHVtbi5fcmVvcmRlclN0YXR1cz0iZHJhZ2dpbmciLHRoaXMuX3VwZGF0ZUdob3N0KGkpLHRoaXMuX3Jlb3JkZXJHaG9zdC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKHIuZGV0YWlsLngsdGhpcy5fdG91Y2hEZXZpY2U/ci5kZXRhaWwueS01MDpyLmRldGFpbC55KSx0aGlzLl9hdXRvU2Nyb2xsZXIoKX19X29uVHJhY2socil7aWYoIXRoaXMuX2RyYWdnZWRDb2x1bW4pcmV0dXJuO2xldCBuPXRoaXMuX2NlbGxGcm9tUG9pbnQoci5kZXRhaWwueCxyLmRldGFpbC55KTtpZighbilyZXR1cm47bGV0IGk9dGhpcy5fZ2V0VGFyZ2V0Q29sdW1uKG4sdGhpcy5fZHJhZ2dlZENvbHVtbik7dGhpcy5faXNTd2FwQWxsb3dlZCh0aGlzLl9kcmFnZ2VkQ29sdW1uLGkpJiZ0aGlzLl9pc1N3YXBwYWJsZUJ5UG9zaXRpb24oaSxyLmRldGFpbC54KSYmdGhpcy5fc3dhcENvbHVtbk9yZGVycyh0aGlzLl9kcmFnZ2VkQ29sdW1uLGkpLHRoaXMuX3VwZGF0ZUdob3N0UG9zaXRpb24oci5kZXRhaWwueCx0aGlzLl90b3VjaERldmljZT9yLmRldGFpbC55LTUwOnIuZGV0YWlsLnkpLHRoaXMuX2xhc3REcmFnQ2xpZW50WD1yLmRldGFpbC54fV9vblRyYWNrRW5kKCl7IXRoaXMuX2RyYWdnZWRDb2x1bW58fCh0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCExLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW4uX3Jlb3JkZXJTdGF0dXM9IiIsdGhpcy5fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHRoaXMuX2RyYWdnZWRDb2x1bW4sIiIpLHRoaXMuX2RyYWdnZWRDb2x1bW49bnVsbCx0aGlzLl9sYXN0RHJhZ0NsaWVudFg9bnVsbCx0aGlzLl9yZW9yZGVyR2hvc3Quc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb2x1bW4tcmVvcmRlciIse2RldGFpbDp7Y29sdW1uczp0aGlzLl9nZXRDb2x1bW5zSW5PcmRlcigpfX0pKSl9X2dldENvbHVtbnNJbk9yZGVyKCl7cmV0dXJuIHRoaXMuX2NvbHVtblRyZWUuc2xpY2UoMCkucG9wKCkuZmlsdGVyKHI9PiFyLmhpZGRlbikuc29ydCgocixuKT0+ci5fb3JkZXItbi5fb3JkZXIpfV9jZWxsRnJvbVBvaW50KHIsbil7cj1yfHwwLG49bnx8MCx0aGlzLl9kcmFnZ2VkQ29sdW1ufHx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5vLWNvbnRlbnQtcG9pbnRlci1ldmVudHMiLCEwLHRoaXMuJC5zY3JvbGxlcik7bGV0IGk9dGhpcy5zaGFkb3dSb290LmVsZW1lbnRGcm9tUG9pbnQocixuKTtpZih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5vLWNvbnRlbnQtcG9pbnRlci1ldmVudHMiLCExLHRoaXMuJC5zY3JvbGxlciksaSYmaS5fY29sdW1uKXJldHVybiBpfV91cGRhdGVHaG9zdFBvc2l0aW9uKHIsbil7bGV0IGk9dGhpcy5fcmVvcmRlckdob3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89ci1pLndpZHRoLzIsYT1uLWkuaGVpZ2h0LzIscz1wYXJzZUludCh0aGlzLl9yZW9yZGVyR2hvc3QuX2xlZnR8fDApLGw9cGFyc2VJbnQodGhpcy5fcmVvcmRlckdob3N0Ll90b3B8fDApO3RoaXMuX3Jlb3JkZXJHaG9zdC5fbGVmdD1zLShpLmxlZnQtbyksdGhpcy5fcmVvcmRlckdob3N0Ll90b3A9bC0oaS50b3AtYSksdGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKCR7dGhpcy5fcmVvcmRlckdob3N0Ll9sZWZ0fXB4LCAke3RoaXMuX3Jlb3JkZXJHaG9zdC5fdG9wfXB4KWB9X3VwZGF0ZUdob3N0KHIpe2xldCBuPXRoaXMuX3Jlb3JkZXJHaG9zdDtuLnRleHRDb250ZW50PXIuX2NvbnRlbnQuaW5uZXJUZXh0O2xldCBpPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHIpO3JldHVyblsiYm94U2l6aW5nIiwiZGlzcGxheSIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZCIsImFsaWduSXRlbXMiLCJwYWRkaW5nIiwiYm9yZGVyIiwiZmxleC1kaXJlY3Rpb24iLCJvdmVyZmxvdyJdLmZvckVhY2gobz0+bi5zdHlsZVtvXT1pW29dKSxufV91cGRhdGVPcmRlcnMocixuKXtyPT09dm9pZCAwfHxuPT09dm9pZCAwfHwoclswXS5mb3JFYWNoKGk9PmkuX29yZGVyPTApLGV1ZShyWzBdLHRoaXMuX29yZGVyQmFzZVNjb3BlLDApKX1fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHIsbil7QXJyYXkuZnJvbShyLnBhcmVudE5vZGUuY2hpbGRyZW4pLmZpbHRlcihpPT4vY29sdW1uLy50ZXN0KGkubG9jYWxOYW1lKSYmdGhpcy5faXNTd2FwQWxsb3dlZChpLHIpKS5mb3JFYWNoKGk9PmkuX3Jlb3JkZXJTdGF0dXM9bil9X2F1dG9TY3JvbGxlcigpe2lmKHRoaXMuX2xhc3REcmFnQ2xpZW50WCl7bGV0IHI9dGhpcy5fbGFzdERyYWdDbGllbnRYLXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQrNTAsbj10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdGhpcy5fbGFzdERyYWdDbGllbnRYKzUwO3I+MD90aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9ci8xMDpuPjAmJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdC09bi8xMCksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfXRoaXMuX2RyYWdnZWRDb2x1bW4mJnRoaXMuYXN5bmModGhpcy5fYXV0b1Njcm9sbGVyLDEwKX1faXNTd2FwQWxsb3dlZChyLG4pe2lmKHImJm4pe2xldCBpPXIhPT1uLG89ci5wYXJlbnRFbGVtZW50PT09bi5wYXJlbnRFbGVtZW50LGE9ci5mcm96ZW49PT1uLmZyb3plbjtyZXR1cm4gaSYmbyYmYX19X2lzU3dhcHBhYmxlQnlQb3NpdGlvbihyLG4pe2xldCBpPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCd0cjpub3QoW2hpZGRlbl0pIFtwYXJ0fj0iY2VsbCJdJykpLmZpbHRlcihzPT5yLmNvbnRhaW5zKHMuX2NvbHVtbikpWzBdLG89dGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yKCJ0cjpub3QoW2hpZGRlbl0pIFtyZW9yZGVyLXN0YXR1cz1kcmFnZ2luZ10iKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIGEubGVmdD5vLmxlZnQ/bj5hLnJpZ2h0LW8ud2lkdGg6bjxhLmxlZnQrby53aWR0aH1fc3dhcENvbHVtbk9yZGVycyhyLG4pe2xldCBpPXIuX29yZGVyO3IuX29yZGVyPW4uX29yZGVyLG4uX29yZGVyPWksdGhpcy5fdXBkYXRlTGFzdEZyb3plbigpLHRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpfV9nZXRUYXJnZXRDb2x1bW4ocixuKXtpZihyJiZuKXtsZXQgaT1yLl9jb2x1bW47Zm9yKDtpLnBhcmVudEVsZW1lbnQhPT1uLnBhcmVudEVsZW1lbnQmJmkhPT10aGlzOylpPWkucGFyZW50RWxlbWVudDtyZXR1cm4gaS5wYXJlbnRFbGVtZW50PT09bi5wYXJlbnRFbGVtZW50P2k6ci5fY29sdW1ufX19O3ZhciBadXI9ZT0+Y2xhc3MgZXh0ZW5kcyBle3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntyZXNpemFibGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMubG9jYWxOYW1lPT09InZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCIpcmV0dXJuO2xldCByPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gciYmci5sb2NhbE5hbWU9PT0idmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIiYmci5yZXNpemFibGV8fCExfX0sX2hlYWRlclRlbXBsYXRlOnt0eXBlOk9iamVjdH0sX2Zvb3RlclRlbXBsYXRlOnt0eXBlOk9iamVjdH0sZnJvemVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGhpZGRlbjp7dHlwZTpCb29sZWFufSxoZWFkZXI6e3R5cGU6U3RyaW5nfSx0ZXh0QWxpZ246e3R5cGU6U3RyaW5nfSxfbGFzdEZyb3plbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfb3JkZXI6TnVtYmVyLF9yZW9yZGVyU3RhdHVzOkJvb2xlYW4sX2VtcHR5Q2VsbHM6QXJyYXksX2hlYWRlckNlbGw6T2JqZWN0LF9mb290ZXJDZWxsOk9iamVjdCxfZ3JpZDpPYmplY3QsaGVhZGVyUmVuZGVyZXI6RnVuY3Rpb24sZm9vdGVyUmVuZGVyZXI6RnVuY3Rpb259fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfd2lkdGhDaGFuZ2VkKHdpZHRoLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9mcm96ZW5DaGFuZ2VkKGZyb3plbiwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiLCJfZmxleEdyb3dDaGFuZ2VkKGZsZXhHcm93LCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9wYXRoT3JIZWFkZXJDaGFuZ2VkKHBhdGgsIGhlYWRlciwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKiwgcmVuZGVyZXIsIGhlYWRlclJlbmRlcmVyLCBfYm9keVRlbXBsYXRlLCBfaGVhZGVyVGVtcGxhdGUpIiwiX3RleHRBbGlnbkNoYW5nZWQodGV4dEFsaWduLCBfY2VsbHMuKiwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsKSIsIl9vcmRlckNoYW5nZWQoX29yZGVyLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9sYXN0RnJvemVuQ2hhbmdlZChfbGFzdEZyb3plbikiLCJfc2V0Qm9keVRlbXBsYXRlT3JSZW5kZXJlcihfYm9keVRlbXBsYXRlLCByZW5kZXJlciwgX2NlbGxzLCBfY2VsbHMuKikiLCJfc2V0SGVhZGVyVGVtcGxhdGVPclJlbmRlcmVyKF9oZWFkZXJUZW1wbGF0ZSwgaGVhZGVyUmVuZGVyZXIsIF9oZWFkZXJDZWxsKSIsIl9zZXRGb290ZXJUZW1wbGF0ZU9yUmVuZGVyZXIoX2Zvb3RlclRlbXBsYXRlLCBmb290ZXJSZW5kZXJlciwgX2Zvb3RlckNlbGwpIiwiX3Jlc2l6YWJsZUNoYW5nZWQocmVzaXphYmxlLCBfaGVhZGVyQ2VsbCkiLCJfcmVvcmRlclN0YXR1c0NoYW5nZWQoX3Jlb3JkZXJTdGF0dXMsIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIiwiX2hpZGRlbkNoYW5nZWQoaGlkZGVuLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSJdfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9ib2R5VGVtcGxhdGUmJih0aGlzLl9ib2R5VGVtcGxhdGUudGVtcGxhdGl6ZXIuX2dyaWQ9dGhpcy5fZ3JpZCksdGhpcy5faGVhZGVyVGVtcGxhdGUmJih0aGlzLl9oZWFkZXJUZW1wbGF0ZS50ZW1wbGF0aXplci5fZ3JpZD10aGlzLl9ncmlkKSx0aGlzLl9mb290ZXJUZW1wbGF0ZSYmKHRoaXMuX2Zvb3RlclRlbXBsYXRlLnRlbXBsYXRpemVyLl9ncmlkPXRoaXMuX2dyaWQpLHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXIuZmx1c2goKSx0aGlzLl9ib2R5VGVtcGxhdGV8fHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXIuY2FsbGJhY2soKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLl9hbGxDZWxscy5mb3JFYWNoKHI9PntyLl9jb250ZW50LnBhcmVudE5vZGV8fHRoaXMuX2dyaWQmJnRoaXMuX2dyaWQuYXBwZW5kQ2hpbGQoci5fY29udGVudCl9KX0pfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLl9maW5kSG9zdEdyaWQoKXx8dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaChyPT57ci5fY29udGVudC5wYXJlbnROb2RlJiZyLl9jb250ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoci5fY29udGVudCl9KX0pLHRoaXMuX2dyaWRWYWx1ZT12b2lkIDB9X2ZpbmRIb3N0R3JpZCgpe2xldCByPXRoaXM7Zm9yKDtyJiYhL152YWFkaW4uKmdyaWQoLXBybyk/JC8udGVzdChyLmxvY2FsTmFtZSk7KXI9ci5hc3NpZ25lZFNsb3Q/ci5hc3NpZ25lZFNsb3QucGFyZW50Tm9kZTpyLnBhcmVudE5vZGU7cmV0dXJuIHJ8fHZvaWQgMH1nZXQgX2dyaWQoKXtyZXR1cm4gdGhpcy5fZ3JpZFZhbHVlfHwodGhpcy5fZ3JpZFZhbHVlPXRoaXMuX2ZpbmRIb3N0R3JpZCgpKSx0aGlzLl9ncmlkVmFsdWV9Z2V0IF9hbGxDZWxscygpe3JldHVybltdLmNvbmNhdCh0aGlzLl9jZWxsc3x8W10pLmNvbmNhdCh0aGlzLl9lbXB0eUNlbGxzfHxbXSkuY29uY2F0KHRoaXMuX2hlYWRlckNlbGwpLmNvbmNhdCh0aGlzLl9mb290ZXJDZWxsKS5maWx0ZXIocj0+cil9Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX3RlbXBsYXRlT2JzZXJ2ZXI9bmV3IHloKHRoaXMsKCk9Pnt0aGlzLl9oZWFkZXJUZW1wbGF0ZT10aGlzLl9wcmVwYXJlSGVhZGVyVGVtcGxhdGUoKSx0aGlzLl9mb290ZXJUZW1wbGF0ZT10aGlzLl9wcmVwYXJlRm9vdGVyVGVtcGxhdGUoKSx0aGlzLl9ib2R5VGVtcGxhdGU9dGhpcy5fcHJlcGFyZUJvZHlUZW1wbGF0ZSgpfSl9X3ByZXBhcmVIZWFkZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCExLCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVCb2R5VGVtcGxhdGUoKXtyZXR1cm4gdGhpcy5fcHJlcGFyZVRlbXBsYXRpemVyKHRoaXMuX2ZpbmRUZW1wbGF0ZSgpfHxudWxsKX1fcHJlcGFyZVRlbXBsYXRpemVyKHIsbil7aWYociYmIXIudGVtcGxhdGl6ZXIpe2xldCBpPW5ldyBUMDtpLl9ncmlkPXRoaXMuX2dyaWQsaS5kYXRhSG9zdD10aGlzLmRhdGFIb3N0LGkuX2luc3RhbmNlUHJvcHM9bnx8aS5faW5zdGFuY2VQcm9wcyxpLnRlbXBsYXRlPXIsci50ZW1wbGF0aXplcj1pfXJldHVybiByfV9yZW5kZXJIZWFkZXJBbmRGb290ZXIoKXt0aGlzLmhlYWRlclJlbmRlcmVyJiZ0aGlzLl9oZWFkZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5oZWFkZXJSZW5kZXJlcix0aGlzLl9oZWFkZXJDZWxsKSx0aGlzLmZvb3RlclJlbmRlcmVyJiZ0aGlzLl9mb290ZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5mb290ZXJSZW5kZXJlcix0aGlzLl9mb290ZXJDZWxsKX1fX3J1blJlbmRlcmVyKHIsbixpKXtsZXQgbz1bbi5fY29udGVudCx0aGlzXTtpJiZpLml0ZW0mJm8ucHVzaChpKSxyLmFwcGx5KHRoaXMsbyl9X19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIocixuLGkpe2lmKCF0aGlzLmhpZGRlbil7aWYociYmbil0aHJvdyBuZXcgRXJyb3IoIllvdSBzaG91bGQgb25seSB1c2UgZWl0aGVyIGEgcmVuZGVyZXIgb3IgYSB0ZW1wbGF0ZSIpO2kuZm9yRWFjaChvPT57bGV0IGE9dGhpcy5fZ3JpZC5fX2dldFJvd01vZGVsKG8ucGFyZW50RWxlbWVudCk7aWYobilvLl9yZW5kZXJlcj1uLChhLml0ZW18fG49PT10aGlzLmhlYWRlclJlbmRlcmVyfHxuPT09dGhpcy5mb290ZXJSZW5kZXJlcikmJnRoaXMuX19ydW5SZW5kZXJlcihuLG8sYSk7ZWxzZSBpZihvLl90ZW1wbGF0ZSE9PXIpe28uX3RlbXBsYXRlPXIsby5fY29udGVudC5pbm5lckhUTUw9IiIsci50ZW1wbGF0aXplci5fZ3JpZD1yLnRlbXBsYXRpemVyLl9ncmlkfHx0aGlzLl9ncmlkO2xldCBzPXIudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKTtvLl9jb250ZW50LmFwcGVuZENoaWxkKHMucm9vdCksby5faW5zdGFuY2U9cyxhLml0ZW0mJm8uX2luc3RhbmNlLnNldFByb3BlcnRpZXMoYSl9fSl9fV9zZXRCb2R5VGVtcGxhdGVPclJlbmRlcmVyKHIsbixpKXsocnx8bikmJmkmJnRoaXMuX19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIocixuLGkpfV9zZXRIZWFkZXJUZW1wbGF0ZU9yUmVuZGVyZXIocixuLGkpeyhyfHxuKSYmaSYmdGhpcy5fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcihyLG4sW2ldKX1fc2V0Rm9vdGVyVGVtcGxhdGVPclJlbmRlcmVyKHIsbixpKXsocnx8bikmJmkmJih0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHIsbixbaV0pLHRoaXMuX2dyaWQuX191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KGkucGFyZW50RWxlbWVudCkpfV9zZWxlY3RGaXJzdFRlbXBsYXRlKHI9ITEsbj0hMSl7cmV0dXJuIHloLmdldEZsYXR0ZW5lZE5vZGVzKHRoaXMpLmZpbHRlcihpPT5pLmxvY2FsTmFtZT09PSJ0ZW1wbGF0ZSImJmkuY2xhc3NMaXN0LmNvbnRhaW5zKCJoZWFkZXIiKT09PXImJmkuY2xhc3NMaXN0LmNvbnRhaW5zKCJmb290ZXIiKT09PW4pWzBdfV9maW5kVGVtcGxhdGUocixuKXtsZXQgaT10aGlzLl9zZWxlY3RGaXJzdFRlbXBsYXRlKHIsbik7cmV0dXJuIGkmJnRoaXMuZGF0YUhvc3QmJihpLl9yb290RGF0YUhvc3Q9dGhpcy5kYXRhSG9zdC5fcm9vdERhdGFIb3N0fHx0aGlzLmRhdGFIb3N0KSxpfV9mbGV4R3Jvd0NoYW5nZWQocil7dGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkJiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkKCJmbGV4R3JvdyIpLHRoaXMuX2FsbENlbGxzLmZvckVhY2gobj0+bi5zdHlsZS5mbGV4R3Jvdz1yKX1fb3JkZXJDaGFuZ2VkKHIpe3RoaXMuX2FsbENlbGxzLmZvckVhY2gobj0+bi5zdHlsZS5vcmRlcj1yKX1fd2lkdGhDaGFuZ2VkKHIpe3RoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCgid2lkdGgiKSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKG49Pm4uc3R5bGUud2lkdGg9ciksdGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5fX2ZvcmNlUmVmbG93JiZ0aGlzLl9ncmlkLl9fZm9yY2VSZWZsb3coKX1fZnJvemVuQ2hhbmdlZChyKXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImZyb3plbiIsciksdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaChuPT50aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIscixuKSksdGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5fZnJvemVuQ2VsbHNDaGFuZ2VkJiZ0aGlzLl9ncmlkLl9mcm96ZW5DZWxsc0NoYW5nZWQoKX1fbGFzdEZyb3plbkNoYW5nZWQocil7dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaChuPT50aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxhc3QtZnJvemVuIixyLG4pKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJih0aGlzLnBhcmVudEVsZW1lbnQuX2xhc3RGcm96ZW49cil9X3BhdGhPckhlYWRlckNoYW5nZWQocixuLGksbyxhLHMsbCxjLHUpe2xldCBoPW4hPT12b2lkIDA7aWYoIWwmJiF1JiZoJiZpJiZ0aGlzLl9fc2V0VGV4dENvbnRlbnQoaS5fY29udGVudCxuKSxyJiZhLnZhbHVlKXtpZighcyYmIWMpe2xldCBmPShwLGQse2l0ZW06Z30pPT50aGlzLl9fc2V0VGV4dENvbnRlbnQocCx0aGlzLmdldChyLGcpKTt0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHZvaWQgMCxmLGEudmFsdWUpfSFsJiYhdSYmIWgmJmkmJm4hPT1udWxsJiZ0aGlzLl9fc2V0VGV4dENvbnRlbnQoaS5fY29udGVudCx0aGlzLl9nZW5lcmF0ZUhlYWRlcihyKSl9aSYmdGhpcy5fZ3JpZC5fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkoaS5wYXJlbnRFbGVtZW50KX1fX3NldFRleHRDb250ZW50KHIsbil7ci50ZXh0Q29udGVudCE9PW4mJihyLnRleHRDb250ZW50PW4pfV9nZW5lcmF0ZUhlYWRlcihyKXtyZXR1cm4gci5zdWJzdHIoci5sYXN0SW5kZXhPZigiLiIpKzEpLnJlcGxhY2UoLyhbQS1aXSkvZywiLSQxIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tL2csIiAiKS5yZXBsYWNlKC9eLi8sbj0+bi50b1VwcGVyQ2FzZSgpKX1fdG9nZ2xlQXR0cmlidXRlKHIsbixpKXtpLmhhc0F0dHJpYnV0ZShyKT09PSFuJiYobj9pLnNldEF0dHJpYnV0ZShyLCIiKTppLnJlbW92ZUF0dHJpYnV0ZShyKSl9X3Jlb3JkZXJTdGF0dXNDaGFuZ2VkKHIpe3RoaXMuX2FsbENlbGxzLmZvckVhY2gobj0+bi5zZXRBdHRyaWJ1dGUoInJlb3JkZXItc3RhdHVzIixyKSl9X3Jlc2l6YWJsZUNoYW5nZWQocixuKXtyPT09dm9pZCAwfHxuPT09dm9pZCAwfHxuJiZbbl0uY29uY2F0KHRoaXMuX2VtcHR5Q2VsbHMpLmZvckVhY2goaT0+e2lmKGkpe2xldCBvPWkucXVlcnlTZWxlY3RvcignW3BhcnR+PSJyZXNpemUtaGFuZGxlIl0nKTtpZihvJiZpLnJlbW92ZUNoaWxkKG8pLHIpe2xldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc2V0QXR0cmlidXRlKCJwYXJ0IiwicmVzaXplLWhhbmRsZSIpLGkuYXBwZW5kQ2hpbGQoYSl9fX0pfV90ZXh0QWxpZ25DaGFuZ2VkKHIpe2lmKHI9PT12b2lkIDApcmV0dXJuO2lmKFsic3RhcnQiLCJlbmQiLCJjZW50ZXIiXS5pbmRleE9mKHIpPT09LTEpe2NvbnNvbGUud2FybigndGV4dEFsaWduIGNhbiBvbmx5IGJlIHNldCBhcyAic3RhcnQiLCAiZW5kIiBvciAiY2VudGVyIicpO3JldHVybn1sZXQgbjtnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2dyaWQpLmRpcmVjdGlvbj09PSJsdHIiP3I9PT0ic3RhcnQiP249ImxlZnQiOnI9PT0iZW5kIiYmKG49InJpZ2h0Iik6cj09PSJzdGFydCI/bj0icmlnaHQiOnI9PT0iZW5kIiYmKG49ImxlZnQiKSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKGk9PntpLl9jb250ZW50LnN0eWxlLnRleHRBbGlnbj1yLGdldENvbXB1dGVkU3R5bGUoaS5fY29udGVudCkudGV4dEFsaWduIT09ciYmKGkuX2NvbnRlbnQuc3R5bGUudGV4dEFsaWduPW4pfSl9X2hpZGRlbkNoYW5nZWQocil7dGhpcy5wYXJlbnRFbGVtZW50JiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkJiZ0aGlzLnBhcmVudEVsZW1lbnQuX2NvbHVtblByb3BDaGFuZ2VkKCJoaWRkZW4iLHIpLCEhciE9ISF0aGlzLl9wcmV2aW91c0hpZGRlbiYmdGhpcy5fZ3JpZCYmKHI9PT0hMCYmdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaChuPT57bi5fY29udGVudC5wYXJlbnROb2RlJiZuLl9jb250ZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobi5fY29udGVudCl9KSx0aGlzLl9ncmlkLl9kZWJvdW5jZXJIaWRkZW5DaGFuZ2VkPXNyLmRlYm91bmNlKHRoaXMuX2dyaWQuX2RlYm91bmNlckhpZGRlbkNoYW5nZWQsUmksKCk9Pnt0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkLl9yZW5kZXJDb2x1bW5UcmVlJiZ0aGlzLl9ncmlkLl9yZW5kZXJDb2x1bW5UcmVlKHRoaXMuX2dyaWQuX2NvbHVtblRyZWUpfSksdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbiYmdGhpcy5fZ3JpZC5fdXBkYXRlTGFzdEZyb3plbigpLHRoaXMuX2dyaWQubm90aWZ5UmVzaXplJiZ0aGlzLl9ncmlkLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX2dyaWQuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uJiZ0aGlzLl9ncmlkLl9yZXNldEtleWJvYXJkTmF2aWdhdGlvbigpKSx0aGlzLl9wcmV2aW91c0hpZGRlbj1yfX0sSkg9Y2xhc3MgZXh0ZW5kcyBadXIoWEgobXQpKXtzdGF0aWMgZ2V0IGlzKCl7cmV0dXJuInZhYWRpbi1ncmlkLWNvbHVtbiJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3dpZHRoOnt0eXBlOlN0cmluZyx2YWx1ZToiMTAwcHgifSxmbGV4R3Jvdzp7dHlwZTpOdW1iZXIsdmFsdWU6MX0scmVuZGVyZXI6RnVuY3Rpb24scGF0aDp7dHlwZTpTdHJpbmd9LGF1dG9XaWR0aDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYm9keVRlbXBsYXRlOnt0eXBlOk9iamVjdH0sX2NlbGxzOkFycmF5fX19O2N1c3RvbUVsZW1lbnRzLmRlZmluZShKSC5pcyxKSCk7V2MoInZhYWRpbi1ncmlkIixDaWAKICAgIEBrZXlmcmFtZXMgdmFhZGluLWdyaWQtYXBwZWFyIHsKICAgICAgdG8gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KICAgIH0KCiAgICA6aG9zdCB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBhbmltYXRpb246IDFtcyB2YWFkaW4tZ3JpZC1hcHBlYXI7CiAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CgogICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgICNzY3JvbGxlciB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgIHdpZHRoOiBhdXRvOwogICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICByaWdodDogMDsKICAgICAgYm90dG9tOiAwOwogICAgICBsZWZ0OiAwOwogICAgfQoKICAgIDpob3N0KFtoZWlnaHQtYnktcm93c10pIHsKICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgIDpob3N0KFtoZWlnaHQtYnktcm93c10pICNzY3JvbGxlciB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICAjdGFibGUgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBvdXRsaW5lOiBub25lOwogICAgICAvKiBXb3JrYXJvdW5kIGZvciBhIERlc2t0b3AgU2FmYXJpIGJ1ZzogbmV3IHN0YWNraW5nIGNvbnRleHQgaGVyZSBwcmV2ZW50cyB0aGUgc2Nyb2xsYmFyIGZyb20gZ2V0dGluZyBoaWRkZW4gKi8KICAgICAgei1pbmRleDogMDsKICAgIH0KCiAgICAjaGVhZGVyLAogICAgI2Zvb3RlciB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7CiAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgIGxlZnQ6IDA7CiAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgei1pbmRleDogMTsKICAgIH0KCiAgICAjaGVhZGVyIHsKICAgICAgdG9wOiAwOwogICAgfQoKICAgIHRoIHsKICAgICAgdGV4dC1hbGlnbjogaW5oZXJpdDsKICAgIH0KCiAgICAvKiBTYWZhcmkgZG9lc24ndCB3b3JrIHdpdGggImluaGVyaXQiICovCiAgICBbc2FmYXJpXSB0aCB7CiAgICAgIHRleHQtYWxpZ246IGluaXRpYWw7CiAgICB9CgogICAgI2Zvb3RlciB7CiAgICAgIGJvdHRvbTogMDsKICAgIH0KCiAgICAjaXRlbXMgewogICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwogICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICB3aWR0aDogMTAwJTsKICAgICAgbGVmdDogMDsKICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXSB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBtYXJnaW46IDA7CiAgICB9CgogICAgW3BhcnR+PSdyb3cnXVtsb2FkaW5nXSBbcGFydH49J2JvZHktY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgb3BhY2l0eTogMDsKICAgIH0KCiAgICAjaXRlbXMgW3BhcnR+PSdyb3cnXSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIH0KCiAgICAjaXRlbXMgW3BhcnR+PSdyb3cnXTplbXB0eSB7CiAgICAgIGhlaWdodDogMWVtOwogICAgfQoKICAgIFtwYXJ0fj0nY2VsbCddOm5vdChbcGFydH49J2RldGFpbHMtY2VsbCddKSB7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB9CgogICAgW3BhcnR+PSdkZXRhaWxzLWNlbGwnXSB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgYm90dG9tOiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgcGFkZGluZzogMDsKICAgIH0KCiAgICBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB9CgogICAgW2hpZGRlbl0gewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgW2Zyb3plbl0gewogICAgICB6LWluZGV4OiAyOwogICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgfQoKICAgIFtuby1zY3JvbGxiYXJzXVtzYWZhcmldICN0YWJsZSwKICAgIFtuby1zY3JvbGxiYXJzXVtmaXJlZm94XSAjdGFibGUgewogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC8qIFJlb3JkZXJpbmcgc3R5bGVzICovCiAgICA6aG9zdChbcmVvcmRlcmluZ10pIFtwYXJ0fj0nY2VsbCddIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXSwKICAgICNzY3JvbGxlcltuby1jb250ZW50LXBvaW50ZXItZXZlbnRzXSBbcGFydH49J2NlbGwnXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIFtwYXJ0fj0ncmVvcmRlci1naG9zdCddIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICBvcGFjaXR5OiAwLjU7CgogICAgICAvKiBQcmV2ZW50IG92ZXJmbG93aW5nIHRoZSBncmlkIGluIEZpcmVmb3ggKi8KICAgICAgdG9wOiAwOwogICAgICBsZWZ0OiAwOwogICAgfQoKICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgewogICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIH0KCiAgICAvKiBSZXNpemluZyBzdHlsZXMgKi8KICAgIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgei1pbmRleDogMTsKICAgIH0KCiAgICBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXTo6YmVmb3JlIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBjb250ZW50OiAnJzsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB3aWR0aDogMzVweDsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgfQoKICAgIFtsYXN0LWNvbHVtbl0gW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSwKICAgIFtsYXN0LWZyb3plbl0gW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIHdpZHRoOiAxOHB4OwogICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgIHJpZ2h0OiAwOwogICAgfQoKICAgICNzY3JvbGxlcltjb2x1bW4tcmVzaXppbmddIHsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIH0KCiAgICAvKiBTaXplciBzdHlsZXMgKi8KICAgICNzaXplciB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgICNzaXplciBbcGFydH49J2RldGFpbHMtY2VsbCddIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgICNzaXplciBbcGFydH49J2NlbGwnXVtoaWRkZW5dIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgICNzaXplciBbcGFydH49J2NlbGwnXSB7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBmbGV4LXNocmluazogMDsKICAgICAgbGluZS1oZWlnaHQ6IDA7CiAgICAgIGhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1heC1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ106OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICctJzsKICAgIH0KCiAgICAjc2l6ZXIgW3BhcnR+PSdjZWxsJ10gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwoKICAgIDpob3N0KFtkaXI9J3J0bCddKSAjaXRlbXMsCiAgICA6aG9zdChbZGlyPSdydGwnXSkgI2hlYWRlciwKICAgIDpob3N0KFtkaXI9J3J0bCddKSAjZm9vdGVyIHsKICAgICAgbGVmdDogYXV0bzsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyZW9yZGVyLWdob3N0J10gewogICAgICBsZWZ0OiBhdXRvOwogICAgICByaWdodDogMDsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ10gewogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogYXV0bzsKICAgIH0KCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW3BhcnR+PSdyZXNpemUtaGFuZGxlJ106OmJlZm9yZSB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1MCUpOwogICAgfQoKICAgIDpob3N0KFtkaXI9J3J0bCddKSBbbGFzdC1jb2x1bW5dIFtwYXJ0fj0ncmVzaXplLWhhbmRsZSddOjpiZWZvcmUsCiAgICA6aG9zdChbZGlyPSdydGwnXSkgW2xhc3QtZnJvemVuXSBbcGFydH49J3Jlc2l6ZS1oYW5kbGUnXTo6YmVmb3JlIHsKICAgICAgbGVmdDogMDsKICAgICAgcmlnaHQ6IGF1dG87CiAgICB9CiAgYCx7bW9kdWxlSWQ6InZhYWRpbi1ncmlkLXN0eWxlcyJ9KTt2YXIgSnVyPSgoKT0+e3RyeXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIlRvdWNoRXZlbnQiKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KSgpLFFIPWNsYXNzIGV4dGVuZHMgJEgoV0goR2NlKEhjZShXY2UoQmNlKCRjZShLY2UoWmNlKFhjZSh0dWUoRmNlKGpjZShydWUoVmNlKFljZShRY2UoSmNlKFpIKSkpKSkpKSkpKSkpKSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gUWAKICAgICAgPGRpdgogICAgICAgIGlkPSJzY3JvbGxlciIKICAgICAgICBzYWZhcmkkPSJbW19zYWZhcmldXSIKICAgICAgICBpb3MkPSJbW19pb3NdXSIKICAgICAgICBsb2FkaW5nJD0iW1tsb2FkaW5nXV0iCiAgICAgICAgY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZCQ9IltbY29sdW1uUmVvcmRlcmluZ0FsbG93ZWRdXSIKICAgICAgPgogICAgICAgIDx0YWJsZSBpZD0idGFibGUiIHJvbGU9ImdyaWQiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPSJ0cnVlIiB0YWJpbmRleD0iMCI+CiAgICAgICAgICA8Y2FwdGlvbiBpZD0ic2l6ZXIiIHBhcnQ9InJvdyI+PC9jYXB0aW9uPgogICAgICAgICAgPHRoZWFkIGlkPSJoZWFkZXIiIHJvbGU9InJvd2dyb3VwIj48L3RoZWFkPgogICAgICAgICAgPHRib2R5IGlkPSJpdGVtcyIgcm9sZT0icm93Z3JvdXAiPjwvdGJvZHk+CiAgICAgICAgICA8dGZvb3QgaWQ9ImZvb3RlciIgcm9sZT0icm93Z3JvdXAiPjwvdGZvb3Q+CiAgICAgICAgPC90YWJsZT4KCiAgICAgICAgPGRpdiBwYXJ0PSJyZW9yZGVyLWdob3N0Ij48L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGlkPSJmb2N1c2V4aXQiIHRhYmluZGV4PSIwIj48L2Rpdj4KICAgIGB9c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tZ3JpZCJ9c3RhdGljIGdldCB2ZXJzaW9uKCl7cmV0dXJuIjIwLjAuMiJ9c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9jb2x1bW5UcmVlQ2hhbmdlZChfY29sdW1uVHJlZSwgX2NvbHVtblRyZWUuKikiXX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X3NhZmFyaTp7dHlwZTpCb29sZWFuLHZhbHVlOi9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9LF9pb3M6e3R5cGU6Qm9vbGVhbix2YWx1ZTovaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXdpbmRvdy5NU1N0cmVhbXx8bmF2aWdhdG9yLnBsYXRmb3JtPT09Ik1hY0ludGVsIiYmbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjF9LF9maXJlZm94Ont0eXBlOkJvb2xlYW4sdmFsdWU6bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKT4tMX0sX2FuZHJvaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTovYW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9LF90b3VjaERldmljZTp7dHlwZTpCb29sZWFuLHZhbHVlOkp1cn0saGVpZ2h0QnlSb3dzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfaGVpZ2h0QnlSb3dzQ2hhbmdlZCJ9LF9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfX19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIix0aGlzLl9vbkFuaW1hdGlvbkVuZCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxyLG4pe3N1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LHIsbiksdD09PSJkaXIiJiYodGhpcy5fX2lzUlRMPW49PT0icnRsIix0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpKX1fX2hhc1Jvd3NXaXRoQ2xpZW50SGVpZ2h0KCl7cmV0dXJuISFBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKHQ9PnQuY2xpZW50SGVpZ2h0KS5sZW5ndGh9X19pdGVtc1JlY2VpdmVkKCl7dGhpcy5fcmVjYWxjdWxhdGVDb2x1bW5XaWR0aE9uY2VMb2FkaW5nRmluaXNoZWQmJiF0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSYmdGhpcy5fX2hhc1Jvd3NXaXRoQ2xpZW50SGVpZ2h0KCkmJih0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZD0hMSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCkpfV9yZWNhbGN1bGF0ZUNvbHVtbldpZHRocyh0KXt0LmZvckVhY2gocj0+e3Iud2lkdGg9ImF1dG8iLHIuX29yaWdGbGV4R3Jvdz1yLmZsZXhHcm93LHIuZmxleEdyb3c9MH0pLHQuZm9yRWFjaChyPT57ci5fY3VycmVudFdpZHRoPTAsci5fYWxsQ2VsbHMuZm9yRWFjaChuPT57bGV0IGk9bi5vZmZzZXRXaWR0aCsxO3IuX2N1cnJlbnRXaWR0aD1NYXRoLm1heChyLl9jdXJyZW50V2lkdGgsaSl9KX0pLHQuZm9yRWFjaChyPT57ci53aWR0aD1gJHtyLl9jdXJyZW50V2lkdGh9cHhgLHIuZmxleEdyb3c9ci5fb3JpZ0ZsZXhHcm93LHIuX2N1cnJlbnRXaWR0aD12b2lkIDAsci5fb3JpZ0ZsZXhHcm93PXZvaWQgMH0pfXJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl7aWYoISF0aGlzLl9jb2x1bW5UcmVlKWlmKHRoaXMuX2NhY2hlLmlzTG9hZGluZygpKXRoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhPbmNlTG9hZGluZ0ZpbmlzaGVkPSEwO2Vsc2V7bGV0IHQ9dGhpcy5fZ2V0Q29sdW1ucygpLmZpbHRlcihyPT4hci5oaWRkZW4mJnIuYXV0b1dpZHRoKTt0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRocyh0KX19X2NyZWF0ZVNjcm9sbGVyUm93cyh0KXtsZXQgcj1bXTtmb3IobGV0IG49MDtuPHQ7bisrKXtsZXQgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO2kuc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksaS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl91cGRhdGVSb3coaSx0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLCJib2R5IiwhMSwhMCksci5wdXNoKGkpfXJldHVybiB0aGlzLl9jb2x1bW5UcmVlJiZ0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLmZvckVhY2gobj0+bi5pc0Nvbm5lY3RlZCYmbi5ub3RpZnlQYXRoJiZuLm5vdGlmeVBhdGgoIl9jZWxscy4qIixuLl9jZWxscykpLGhndCh0aGlzLCgpPT57dGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uKCksdGhpcy5fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKX0pLHJ9X2dldFJvd1RhcmdldCgpe3JldHVybiB0aGlzLiQuaXRlbXN9X2NyZWF0ZUNlbGwodCl7bGV0IHI9dGhpcy5fY29udGVudEluZGV4PXRoaXMuX2NvbnRlbnRJbmRleCsxfHwwLG49InZhYWRpbi1ncmlkLWNlbGwtY29udGVudC0iK3IsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiKTtpLnNldEF0dHJpYnV0ZSgic2xvdCIsbik7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtvLmlkPW4ucmVwbGFjZSgiLWNvbnRlbnQtIiwiLSIpLG8uc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksby5zZXRBdHRyaWJ1dGUoInJvbGUiLHQ9PT0idGQiPyJncmlkY2VsbCI6ImNvbHVtbmhlYWRlciIpO2xldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNsb3QiKTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoIm5hbWUiLG4pLG8uYXBwZW5kQ2hpbGQoYSksby5fY29udGVudD1pLGkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKT0+e2lmKHdpbmRvdy5jaHJvbWUpe2xldCBzPSgpPT57aS5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCl8fG8uZm9jdXMoKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixzLCEwKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIscywhMCl9ZWxzZSBzZXRUaW1lb3V0KCgpPT57aS5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCl8fG8uZm9jdXMoKX0pfSksb31fdXBkYXRlUm93KHQscixuLGksbyl7bj1ufHwiYm9keSI7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO0FycmF5LmZyb20odC5jaGlsZHJlbikuZm9yRWFjaChzPT5zLl92YWNhbnQ9ITApLHQuaW5uZXJIVE1MPSIiLHQuaWQhPT0ic2l6ZXIiJiYodC5oaWRkZW49ITApLHIuZmlsdGVyKHM9PiFzLmhpZGRlbikuZm9yRWFjaCgocyxsLGMpPT57bGV0IHU7aWYobj09PSJib2R5Iil7aWYocy5fY2VsbHM9cy5fY2VsbHN8fFtdLHU9cy5fY2VsbHMuZmlsdGVyKGg9PmguX3ZhY2FudClbMF0sdXx8KHU9dGhpcy5fY3JlYXRlQ2VsbCgidGQiKSxzLl9jZWxscy5wdXNoKHUpKSx1LnNldEF0dHJpYnV0ZSgicGFydCIsImNlbGwgYm9keS1jZWxsIiksdC5hcHBlbmRDaGlsZCh1KSxsPT09Yy5sZW5ndGgtMSYmKHRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZXx8dGhpcy5yb3dEZXRhaWxzUmVuZGVyZXIpKXt0aGlzLl9kZXRhaWxzQ2VsbHM9dGhpcy5fZGV0YWlsc0NlbGxzfHxbXTtsZXQgaD10aGlzLl9kZXRhaWxzQ2VsbHMuZmlsdGVyKGY9PmYuX3ZhY2FudClbMF18fHRoaXMuX2NyZWF0ZUNlbGwoInRkIik7dGhpcy5fZGV0YWlsc0NlbGxzLmluZGV4T2YoaCk9PT0tMSYmdGhpcy5fZGV0YWlsc0NlbGxzLnB1c2goaCksaC5fY29udGVudC5wYXJlbnRFbGVtZW50fHxhLmFwcGVuZENoaWxkKGguX2NvbnRlbnQpLHRoaXMuX2NvbmZpZ3VyZURldGFpbHNDZWxsKGgpLHQuYXBwZW5kQ2hpbGQoaCksdGhpcy5fYTExeVNldFJvd0RldGFpbHNDZWxsKHQsaCksaC5fdmFjYW50PSExfXMubm90aWZ5UGF0aCYmIW8mJnMubm90aWZ5UGF0aCgiX2NlbGxzLioiLHMuX2NlbGxzKX1lbHNle2xldCBoPW49PT0iaGVhZGVyIj8idGgiOiJ0ZCI7aXx8cy5sb2NhbE5hbWU9PT0idmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj8odT1zW2BfJHtufUNlbGxgXXx8dGhpcy5fY3JlYXRlQ2VsbChoKSx1Ll9jb2x1bW49cyx0LmFwcGVuZENoaWxkKHUpLHNbYF8ke259Q2VsbGBdPXUpOihzLl9lbXB0eUNlbGxzPXMuX2VtcHR5Q2VsbHN8fFtdLHU9cy5fZW1wdHlDZWxscy5maWx0ZXIoZj0+Zi5fdmFjYW50KVswXXx8dGhpcy5fY3JlYXRlQ2VsbChoKSx1Ll9jb2x1bW49cyx0LmFwcGVuZENoaWxkKHUpLHMuX2VtcHR5Q2VsbHMuaW5kZXhPZih1KT09PS0xJiZzLl9lbXB0eUNlbGxzLnB1c2godSkpLHUuc2V0QXR0cmlidXRlKCJwYXJ0IixgY2VsbCAke259LWNlbGxgKSx0aGlzLl9fdXBkYXRlSGVhZGVyRm9vdGVyUm93VmlzaWJpbGl0eSh0KX11Ll9jb250ZW50LnBhcmVudEVsZW1lbnR8fGEuYXBwZW5kQ2hpbGQodS5fY29udGVudCksdS5fdmFjYW50PSExLHUuX2NvbHVtbj1zfSksdGhpcy5hcHBlbmRDaGlsZChhKSx0aGlzLl9mcm96ZW5DZWxsc0NoYW5nZWQoKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW5Gb3JSb3codCl9X191cGRhdGVIZWFkZXJGb290ZXJSb3dWaXNpYmlsaXR5KHQpe2lmKCF0KXJldHVybjtsZXQgcj1BcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZpbHRlcihuPT57bGV0IGk9bi5fY29sdW1uO2lmKGkuX2VtcHR5Q2VsbHMmJmkuX2VtcHR5Q2VsbHMuaW5kZXhPZihuKT4tMSlyZXR1cm4hMTtpZih0LnBhcmVudEVsZW1lbnQ9PT10aGlzLiQuaGVhZGVyKXtpZihpLmhlYWRlclJlbmRlcmVyfHxpLl9oZWFkZXJUZW1wbGF0ZSlyZXR1cm4hMDtpZihpLmhlYWRlcj09PW51bGwpcmV0dXJuITE7aWYoaS5wYXRofHxpLmhlYWRlciE9PXZvaWQgMClyZXR1cm4hMH1lbHNlIGlmKGkuZm9vdGVyUmVuZGVyZXJ8fGkuX2Zvb3RlclRlbXBsYXRlKXJldHVybiEwfSk7dC5oaWRkZW4hPT0hci5sZW5ndGgmJih0LmhpZGRlbj0hci5sZW5ndGgsdGhpcy5ub3RpZnlSZXNpemUoKSl9X3VwZGF0ZVNjcm9sbGVySXRlbSh0LHIpe3RoaXMuX3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsciksdGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZmlyc3QiLHI9PT0wLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgib2RkIixyJTIsdCksdGhpcy5fYTExeVVwZGF0ZVJvd1Jvd2luZGV4KHQsciksdGhpcy5fZ2V0SXRlbShyLHQpKX1fY29sdW1uVHJlZUNoYW5nZWQodCl7dGhpcy5fcmVuZGVyQ29sdW1uVHJlZSh0KSx0aGlzLnJlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKCl9X3JlbmRlckNvbHVtblRyZWUodCl7Zm9yKEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKHI9PnRoaXMuX3VwZGF0ZVJvdyhyLHRbdC5sZW5ndGgtMV0sbnVsbCwhMSwhMCkpO3RoaXMuJC5oZWFkZXIuY2hpbGRyZW4ubGVuZ3RoPHQubGVuZ3RoOyl7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTtyLnNldEF0dHJpYnV0ZSgicGFydCIsInJvdyIpLHIuc2V0QXR0cmlidXRlKCJyb2xlIiwicm93IiksdGhpcy4kLmhlYWRlci5hcHBlbmRDaGlsZChyKTtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO24uc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93Iiksbi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLiQuZm9vdGVyLmFwcGVuZENoaWxkKG4pfWZvcig7dGhpcy4kLmhlYWRlci5jaGlsZHJlbi5sZW5ndGg+dC5sZW5ndGg7KXRoaXMuJC5oZWFkZXIucmVtb3ZlQ2hpbGQodGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZCksdGhpcy4kLmZvb3Rlci5yZW1vdmVDaGlsZCh0aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkKTtBcnJheS5mcm9tKHRoaXMuJC5oZWFkZXIuY2hpbGRyZW4pLmZvckVhY2goKHIsbik9PnRoaXMuX3VwZGF0ZVJvdyhyLHRbbl0sImhlYWRlciIsbj09PXQubGVuZ3RoLTEpKSxBcnJheS5mcm9tKHRoaXMuJC5mb290ZXIuY2hpbGRyZW4pLmZvckVhY2goKHIsbik9PnRoaXMuX3VwZGF0ZVJvdyhyLHRbdC5sZW5ndGgtMS1uXSwiZm9vdGVyIixuPT09MCkpLHRoaXMuX3VwZGF0ZVJvdyh0aGlzLiQuc2l6ZXIsdFt0Lmxlbmd0aC0xXSksdGhpcy5fcmVzaXplSGFuZGxlcigpLHRoaXMuX2Zyb3plbkNlbGxzQ2hhbmdlZCgpLHRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbigpLHRoaXMuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uKCksdGhpcy5fYTExeVVwZGF0ZUhlYWRlclJvd3MoKSx0aGlzLl9hMTF5VXBkYXRlRm9vdGVyUm93cygpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9fdXBkYXRlRm9vdGVyUG9zaXRpb25pbmcoKXt0aGlzLl9maXJlZm94JiYodGhpcy4kLml0ZW1zLnN0eWxlLnBhZGRpbmdCb3R0b209MCx0aGlzLmhlaWdodEJ5Um93c3x8KHRoaXMuJC5pdGVtcy5zdHlsZS5wYWRkaW5nQm90dG9tPWAke3RoaXMuJC5mb290ZXIub2Zmc2V0SGVpZ2h0fXB4YCkpLHRoaXMuX2lvcyYmIXdpbmRvdy5DU1Muc3VwcG9ydHMoInBvc2l0aW9uIiwic3RpY2t5IikmJih0aGlzLiQudGFibGUuc3R5bGUuaGVpZ2h0PSIiLHRoaXMuJC50YWJsZS5zdHlsZS5taW5IZWlnaHQ9IjEwMCUiLHRoaXMuJC50YWJsZS5zdHlsZS5tYXhIZWlnaHQ9IjEwMCUiLHNldFRpbWVvdXQoKCk9PnRoaXMuJC50YWJsZS5zdHlsZS5oZWlnaHQ9YCR7dGhpcy4kLnNjcm9sbGVyLm9mZnNldEhlaWdodH1weGApKX1fdXBkYXRlSXRlbSh0LHIpe3QuX2l0ZW09cjtsZXQgbj10aGlzLl9fZ2V0Um93TW9kZWwodCk7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzZWxlY3RlZCIsbi5zZWxlY3RlZCx0KSx0aGlzLl9hMTF5VXBkYXRlUm93U2VsZWN0ZWQodCxuLnNlbGVjdGVkKSx0aGlzLl9hMTF5VXBkYXRlUm93TGV2ZWwodCxuLmxldmVsKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImV4cGFuZGVkIixuLmV4cGFuZGVkLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZGV0YWlscy1vcGVuZWQiLHRoaXMuX2lzRGV0YWlsc09wZW5lZChyKSx0KSwodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlfHx0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX3RvZ2dsZURldGFpbHNDZWxsKHQsciksdGhpcy5fZ2VuZXJhdGVDZWxsQ2xhc3NOYW1lcyh0LG4pLHRoaXMuX2ZpbHRlckRyYWdBbmREcm9wKHQsbiksQXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5mb3JFYWNoKGk9PntpZihpLl9yZW5kZXJlcil7bGV0IG89aS5fY29sdW1ufHx0aGlzO2kuX3JlbmRlcmVyLmNhbGwobyxpLl9jb250ZW50LG8sbil9ZWxzZSBpLl9pbnN0YW5jZSYmKGkuX2luc3RhbmNlLl9fZGV0YWlsc09wZW5lZF9fPW4uZGV0YWlsc09wZW5lZCxpLl9pbnN0YW5jZS5fX3NlbGVjdGVkX189bi5zZWxlY3RlZCxpLl9pbnN0YW5jZS5fX2xldmVsX189bi5sZXZlbCxpLl9pbnN0YW5jZS5fX2V4cGFuZGVkX189bi5leHBhbmRlZCxpLl9pbnN0YW5jZS5zZXRQcm9wZXJ0aWVzKG4pKX0pLHRoaXMuX2RlYm91bmNlclVwZGF0ZUhlaWdodHM9c3IuZGVib3VuY2UodGhpcy5fZGVib3VuY2VyVXBkYXRlSGVpZ2h0cyxwby5hZnRlcigxKSwoKT0+e3RoaXMuX3VwZGF0ZU1ldHJpY3MoKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9KX1fcmVzaXplSGFuZGxlcigpe3RoaXMuX3VwZGF0ZURldGFpbHNDZWxsSGVpZ2h0cygpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKHN1cGVyLl9yZXNpemVIYW5kbGVyLCEwKSx0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpfV9vbkFuaW1hdGlvbkVuZCh0KXt0LmFuaW1hdGlvbk5hbWUuaW5kZXhPZigidmFhZGluLWdyaWQtYXBwZWFyIik9PT0wJiYodGhpcy5fcmVuZGVyKCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pdGVtc1JlY2VpdmVkKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5fX3Njcm9sbFRvUGVuZGluZ0luZGV4KCksdGhpcy4kLnRhYmxlLnN0eWxlLndlYmtpdE92ZXJmbG93U2Nyb2xsaW5nPSJ0b3VjaCJ9KSl9X3RvZ2dsZUF0dHJpYnV0ZSh0LHIsbil7bi5oYXNBdHRyaWJ1dGUodCk9PT0hciYmKHI/bi5zZXRBdHRyaWJ1dGUodCwiIik6bi5yZW1vdmVBdHRyaWJ1dGUodCkpfV9fZ2V0Um93TW9kZWwodCl7cmV0dXJue2luZGV4OnQuaW5kZXgsaXRlbTp0Ll9pdGVtLGxldmVsOnRoaXMuX2dldEluZGV4TGV2ZWwodC5pbmRleCksZXhwYW5kZWQ6dGhpcy5faXNFeHBhbmRlZCh0Ll9pdGVtKSxzZWxlY3RlZDp0aGlzLl9pc1NlbGVjdGVkKHQuX2l0ZW0pLGRldGFpbHNPcGVuZWQ6ISEodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlfHx0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikmJnRoaXMuX2lzRGV0YWlsc09wZW5lZCh0Ll9pdGVtKX19cmVuZGVyKCl7dGhpcy5fY29sdW1uVHJlZSYmKHRoaXMuX2NvbHVtblRyZWUuZm9yRWFjaCh0PT57dC5mb3JFYWNoKHI9PnIuX3JlbmRlckhlYWRlckFuZEZvb3RlcigpKX0pLHRoaXMuX3VwZGF0ZSgpKX1ub3RpZnlSZXNpemUoKXtzdXBlci5ub3RpZnlSZXNpemUoKX1faGVpZ2h0QnlSb3dzQ2hhbmdlZCh0LHIpeyh0fHxyKSYmdGhpcy5ub3RpZnlSZXNpemUoKX1fX2ZvcmNlUmVmbG93KCl7dGhpcy5fZGVib3VuY2VyRm9yY2VSZWZsb3c9c3IuZGVib3VuY2UodGhpcy5fZGVib3VuY2VyRm9yY2VSZWZsb3csUmksKCk9Pnt0aGlzLiQuc2Nyb2xsZXIuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsc2V0VGltZW91dCgoKT0+dGhpcy4kLnNjcm9sbGVyLnN0eWxlLm92ZXJmbG93PSIiKX0pfX07Y3VzdG9tRWxlbWVudHMuZGVmaW5lKFFILmlzLFFIKTtmdW5jdGlvbiBudWUoZSx0KXtyZXR1cm4gSWd0KGUsdCl9dmFyIGMxPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3J1bj0iIn1fY3N2VXJsKHQscixuKXtyZXR1cm4gcj9DbihuKHQscikse2Zvcm1hdDoiY3N2In0pOiIifV9qc29uVXJsKHQscixuKXtyZXR1cm4gcj9uKHQscik6IiJ9X2Nzdk5hbWUodCxyKXtyZXR1cm4gcj9gcnVuLSR7cn0tdGFnLSR7dH0uY3N2YDoiIn1fanNvbk5hbWUodCxyKXtyZXR1cm4gcj9gcnVuLSR7cn0tdGFnLSR7dH0uanNvbmA6IiJ9fTtjMS50ZW1wbGF0ZT1RYAogICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgIGxhYmVsPSJydW4gdG8gZG93bmxvYWQiCiAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X3J1bn19IgogICAgPgogICAgICA8cGFwZXItbGlzdGJveCBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW3J1bnNdXSI+CiAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+W1tpdGVtXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ydW5dXSI+CiAgICAgIDxhIGRvd25sb2FkPSJbW19jc3ZOYW1lKHRhZywgX3J1bildXSIgaHJlZj0iW1tfY3N2VXJsKHRhZywgX3J1biwgdXJsRm4pXV0iCiAgICAgICAgPkNTVjwvYQogICAgICA+PCEtLQogICAgICAtLT48YQogICAgICAgIGRvd25sb2FkPSJbW19qc29uTmFtZSh0YWcsIF9ydW4pXV0iCiAgICAgICAgaHJlZj0iW1tfanNvblVybCh0YWcsIF9ydW4sIHVybEZuKV1dIgogICAgICAgID5KU09OPC9hCiAgICAgID4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CiAgICAgIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQogICAgICBhIHsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAwIDAuMmVtOwogICAgICB9CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxjMS5wcm90b3R5cGUsIl9ydW4iLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLGMxLnByb3RvdHlwZSwicnVucyIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxjMS5wcm90b3R5cGUsInRhZyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjMS5wcm90b3R5cGUsInVybEZuIix2b2lkIDApO2MxPUUoW3l0KCJ0Zi1kb3dubG9hZGVyIildLGMxKTt2YXIgUXVyPTY0LHRsaT1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLFduPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29sb3JTY2FsZT1udWxsLHRoaXMuX2xvYWREYXRhQ2FsbGJhY2s9KHQscixuKT0+e2lmKG49PW51bGwpe2NvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBsb2FkIGRhdGEgZm9yOiIscik7cmV0dXJufWxldCBpPW4ubWFwKGE9Pih7d2FsbF90aW1lOm5ldyBEYXRlKGFbMF0qMWUzKSxzdGVwOmFbMV0sc2NhbGFyOmFbMl19KSksbz10aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHIpO3Quc2V0U2VyaWVzTWV0YWRhdGEobyxyKSx0LnNldFNlcmllc0RhdGEobyxpKX0sdGhpcy5nZXREYXRhTG9hZFVybD0oe3RhZzp0LHJ1bjpyfSk9PnZlKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvc2NhbGFycyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnQscnVuOnJ9KSksdGhpcy5fZG93bmxvYWRVcmxGbj0odCxyKT0+dGhpcy5nZXREYXRhTG9hZFVybCh7dGFnOnQscnVuOnJ9KSx0aGlzLnJlcXVlc3REYXRhPSh0LHIsbik9PnRoaXMuaW5Db2xhYj90aGlzLl9yZXF1ZXN0RGF0YUdldCh0LHIsbik6dGhpcy5fcmVxdWVzdERhdGFQb3N0KHQscixuKSx0aGlzLl9yZXF1ZXN0RGF0YUdldD0odCxyLG4pPT57bGV0IG89dmUoKS5wbHVnaW5Sb3V0ZSgic2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoYT0+e2xldCBzPUNuKG8se3RhZzphLnRhZyxydW46YS5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHMpLnRoZW4obD0+dm9pZCByKHtpdGVtOmEsZGF0YTpsfSkpfSkpLmZpbmFsbHkoKCk9PnZvaWQgbigpKX0sdGhpcy5fcmVxdWVzdERhdGFQb3N0PSh0LHIsbik9Pnt2YXIgaTtsZXQgYT12ZSgpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnNfbXVsdGlydW4iKSxzPW5ldyBNYXA7Zm9yKGxldHt0YWc6dSxydW46aH1vZiB0KXtsZXQgZj1zLmdldCh1KTtmPT1udWxsJiZzLnNldCh1LGY9W10pLGYucHVzaChoKX1sZXQgbD0oaT10aGlzLmJhdGNoU2l6ZSkhPT1udWxsJiZpIT09dm9pZCAwP2k6UXVyLGM9W107Zm9yKGxldFt1LGhdb2Ygcylmb3IobGV0IGY9MDtmPGgubGVuZ3RoO2YrPWwpYy5wdXNoKHt0YWc6dSxydW5zOmguc2xpY2UoZixmK2wpfSk7UHJvbWlzZS5hbGwoYy5tYXAoKHt0YWc6dSxydW5zOmh9KT0+dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGEse3RhZzp1LHJ1bnM6aH0pLnRoZW4oZj0+e2ZvcihsZXQgcCBvZiBoKXtsZXQgZD17dGFnOnUscnVuOnB9O09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmLHApP3Ioe2l0ZW06ZCxkYXRhOmZbcF19KTpyKHtpdGVtOmQsZGF0YTpudWxsfSl9fSkpKS5maW5hbGx5KCgpPT52b2lkIG4oKSl9LHRoaXMuX2dldERhdGFMb2FkTmFtZT10PT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHQpLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2xldCB0PW5zdC5zbGljZSgpLHI9dC5maW5kSW5kZXgobj0+bi50aXRsZT09Ik5hbWUiKTtyZXR1cm4gdC5zcGxpY2UociwxLHt0aXRsZToiTmFtZSIsZXZhbHVhdGU6bj0+e2xldCBpPW4uZGF0YXNldC5tZXRhZGF0YSgpLm1ldGE7cmV0dXJuIHRoaXMuX2dldFNlcmllc0Rpc3BsYXlOYW1lRnJvbURhdHVtKGkpfX0pLHR9KSgpfV9nZXRDaGFydERhdGFMb2FkZXIoKXt2YXIgdDtyZXR1cm4odD10aGlzLnNoYWRvd1Jvb3QpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5xdWVyeVNlbGVjdG9yKCJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIil9cmVsb2FkKCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVsb2FkKCl9cmVkcmF3KCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX1fdG9nZ2xlTG9nU2NhbGUoKXt0aGlzLnNldCgiX2xvZ1NjYWxlQWN0aXZlIiwhdGhpcy5fbG9nU2NhbGVBY3RpdmUpfV9yZXNldERvbWFpbigpe2xldCB0PXRoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpO3QmJnQucmVzZXREb21haW4oKX1fdXBkYXRlRG93bmxvYWRMaW5rKCl7dmFyIHQ7bGV0IHI9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkuZXhwb3J0QXNTdmdTdHJpbmcoKSxuPSh0PXRoaXMuc2hhZG93Um9vdCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnF1ZXJ5U2VsZWN0b3IoIiNzdmdMaW5rIik7bi5ocmVmPWBkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCR7YnRvYShyKX1gfV9ydW5zRnJvbURhdGEodCl7cmV0dXJuIHQubWFwKHI9PnIucnVuKX1fZ2V0RGF0YVNlcmllcygpe3JldHVybiB0aGlzLmRhdGFUb0xvYWQubWFwKHQ9PnRoaXMuX2dldFNlcmllc05hbWVGcm9tRGF0dW0odCkpfV9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHtydW46dCxleHBlcmltZW50OnI9e25hbWU6Il9kZWZhdWx0In19KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoW3IubmFtZSx0XSl9X2dldFNlcmllc0Rpc3BsYXlOYW1lRnJvbURhdHVtKHQpe3JldHVybiB0LnJ1bn1fZ2V0Q29sb3JTY2FsZSgpe3JldHVybiB0aGlzLmNvbG9yU2NhbGUhPT1udWxsP3RoaXMuY29sb3JTY2FsZTp7c2NhbGU6dD0+e2xldFsscl09SlNPTi5wYXJzZSh0KTtyZXR1cm4gZm4ocil9fX19O1duLnRlbXBsYXRlPVFgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyCiAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgIGNvbG9yLXNjYWxlPSJbW19nZXRDb2xvclNjYWxlKGNvbG9yU2NhbGUpXV0iCiAgICAgICAgZGF0YS1zZXJpZXM9IltbX2dldERhdGFTZXJpZXMoZGF0YVRvTG9hZC4qKV1dIgogICAgICAgIGRhdGEtdG8tbG9hZD0iW1tkYXRhVG9Mb2FkXV0iCiAgICAgICAgZ2V0LWRhdGEtbG9hZC1uYW1lPSJbW19nZXREYXRhTG9hZE5hbWVdXSIKICAgICAgICBnZXQtZGF0YS1sb2FkLXVybD0iW1tnZXREYXRhTG9hZFVybF1dIgogICAgICAgIHJlcXVlc3QtZGF0YT0iW1tyZXF1ZXN0RGF0YV1dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIGxvYWQtZGF0YS1jYWxsYmFjaz0iW1tfbG9hZERhdGFDYWxsYmFja11dIgogICAgICAgIGxvYWQta2V5PSJbW3RhZ11dIgogICAgICAgIGxvZy1zY2FsZS1hY3RpdmU9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9Iltbc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgIHNtb290aGluZy13ZWlnaHQ9Iltbc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgdGFnLW1ldGFkYXRhPSJbW3RhZ01ldGFkYXRhXV0iCiAgICAgICAgdG9vbHRpcC1jb2x1bW5zPSJbW190b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtcG9zaXRpb249ImF1dG8iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICA+CiAgICAgIDwvdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcj4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0iYnV0dG9ucyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19sb2dTY2FsZUFjdGl2ZV1dIgogICAgICAgIGljb249ImxpbmUtd2VpZ2h0IgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUxvZ1NjYWxlIgogICAgICAgIHRpdGxlPSJUb2dnbGUgeS1heGlzIGxvZyBzY2FsZSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIGljb249InNldHRpbmdzLW92ZXJzY2FuIgogICAgICAgIG9uLXRhcD0iX3Jlc2V0RG9tYWluIgogICAgICAgIHRpdGxlPSJGaXQgZG9tYWluIHRvIGRhdGEiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPHBhcGVyLW1lbnUtYnV0dG9uIG9uLXBhcGVyLWRyb3Bkb3duLW9wZW49Il91cGRhdGVEb3dubG9hZExpbmsiPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi10cmlnZ2VyIgogICAgICAgICAgICBzbG90PSJkcm9wZG93bi10cmlnZ2VyIgogICAgICAgICAgICBpY29uPSJmaWxlLWRvd25sb2FkIgogICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgIDxwYXBlci1pdGVtPgogICAgICAgICAgICAgIDxhIGlkPSJzdmdMaW5rIiBkb3dubG9hZD0iW1t0YWddXS5zdmciPgogICAgICAgICAgICAgICAgRG93bmxvYWQgQ3VycmVudCBDaGFydCBhcyBTVkcKICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLW1lbnUtYnV0dG9uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8c3BhbiBzdHlsZT0iZmxleC1ncm93OiAxIj48L3NwYW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZC1saW5rcyI+CiAgICAgICAgICA8dGYtZG93bmxvYWRlcgogICAgICAgICAgICBydW5zPSJbW19ydW5zRnJvbURhdGEoZGF0YVRvTG9hZCldXSIKICAgICAgICAgICAgdGFnPSJbW3RhZ11dIgogICAgICAgICAgICB1cmwtZm49IltbX2Rvd25sb2FkVXJsRm5dXSIKICAgICAgICAgID48L3RmLWRvd25sb2FkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIG1hcmdpbjogNXB4OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgfQoKICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgOmhvc3QoW19leHBhbmRlZF0pICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7CiAgICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgfQoKICAgICAgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIH0KCiAgICAgICNidXR0b25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIGEgewogICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAycHg7CiAgICAgIH0KCiAgICAgIC5kb3dubG9hZC1saW5rcyBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHBhcGVyLW1lbnUtYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CiAgICAgIHBhcGVyLWl0ZW0gYSB7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxXbi5wcm90b3R5cGUsInRhZyIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sV24ucHJvdG90eXBlLCJkYXRhVG9Mb2FkIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFduLnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxXbi5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFduLnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sV24ucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFduLnByb3RvdHlwZSwic2hvd0Rvd25MaW5rcyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFduLnByb3RvdHlwZSwic21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxXbi5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxXbi5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFduLnByb3RvdHlwZSwiY29sb3JTY2FsZSIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxXbi5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLFduLnByb3RvdHlwZSwiYmF0Y2hTaXplIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxXbi5wcm90b3R5cGUsImluQ29sYWIiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sV24ucHJvdG90eXBlLCJfbG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFduLnByb3RvdHlwZSwiZ2V0RGF0YUxvYWRVcmwiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sV24ucHJvdG90eXBlLCJfZG93bmxvYWRVcmxGbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLFduLnByb3RvdHlwZSwicmVxdWVzdERhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sV24ucHJvdG90eXBlLCJfZ2V0RGF0YUxvYWROYW1lIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFduLnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sV24ucHJvdG90eXBlLCJfbG9nU2NhbGVBY3RpdmUiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFduLnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApO1duPUUoW3l0KCJ0Zi1zY2FsYXItY2FyZCIpXSxXbik7dmFyIEhzPWNsYXNzIGV4dGVuZHMgbnVlKFtsV10sbXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlc3Npb25Hcm91cD1udWxsLHRoaXMuX3hUeXBlPUVkLlNURVAsdGhpcy5fbm9NdWx0aUV4cGVyaW1lbnRzPSExLHRoaXMuX3JlcXVlc3REYXRhPSh0LHIsbik9PntQcm9taXNlLmFsbCh0Lm1hcChpPT57bGV0IG89e2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWUsc2Vzc2lvbk5hbWU6aS5ydW4sbWV0cmljTmFtZTppLnRhZ307cmV0dXJuIHRoaXMuYmFja2VuZC5saXN0TWV0cmljRXZhbHMobykudGhlbihhPT52b2lkIHIoe2l0ZW06aSxkYXRhOmF9KSl9KSkuZmluYWxseSgoKT0+dm9pZCBuKCkpfSx0aGlzLl9jb2xvclNjYWxlPXtzY2FsZTp0PT57bGV0IHI9SlNPTi5wYXJzZSh0KVsxXSxuPXRoaXMuX2luZGV4T2ZTZXNzaW9uLmdldChyKSxpPWVSO3JldHVybiBpWyh0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaCtuKSVpLmxlbmd0aF19fX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJpcm9uLXJlc2l6ZSIsdGhpcy5yZWRyYXcuYmluZCh0aGlzKSl9cmVkcmF3KCl7dmFyIHQ7KHQ9dGhpcy5zaGFkb3dSb290KT09PW51bGx8fHQ9PT12b2lkIDB8fHQucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKHI9PntyLnJlZHJhdygpfSl9X3Nlc3Npb25Hcm91cENoYW5nZWQoKXt2YXIgdDshdGhpcy5zZXNzaW9uR3JvdXB8fE9iamVjdC5rZXlzKHRoaXMuc2Vzc2lvbkdyb3VwKS5sZW5ndGg9PTA/KHRoaXMuX2luZGV4T2ZTZXNzaW9uPW5ldyBNYXAsdGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2g9MCk6KHRoaXMuX2luZGV4T2ZTZXNzaW9uPW5ldyBNYXAodGhpcy5zZXNzaW9uR3JvdXAuc2Vzc2lvbnMubWFwKChyLG4pPT5bci5uYW1lLG5dKSksdGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2g9cGN0KHRoaXMuc2Vzc2lvbkdyb3VwLm5hbWUpKSwodD10aGlzLnNoYWRvd1Jvb3QpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2gocj0+e2xldCBuPXIsaT1uLmdldCgidGFnIik7bi5zZXQoInRhZyIsIiIpLG4uc2V0KCJ0YWciLGkpfSl9X2hhdmVNZXRyaWNzKCl7cmV0dXJuIHRoaXMudmlzaWJsZVNjaGVtYSYmQXJyYXkuaXNBcnJheSh0aGlzLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MpJiZ0aGlzLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MubGVuZ3RoPjB9X2hhdmVNZXRyaWNzQW5kU2Vzc2lvbkdyb3VwKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbkdyb3VwJiZ0aGlzLl9oYXZlTWV0cmljcygpfV9jb21wdXRlU2VyaWVzRm9yU2Vzc2lvbkdyb3VwTWV0cmljKHQscil7cmV0dXJuIHQ9PT1udWxsfHxPYmplY3Qua2V5cyh0KS5sZW5ndGg9PTB8fHI9PT1udWxsP1tdOnQuc2Vzc2lvbnMuZmlsdGVyKG49PmgzKG4ubWV0cmljVmFsdWVzLHIubmFtZSkhPT12b2lkIDApLm1hcChuPT4oe3RhZzpyLm5hbWUscnVuOm4ubmFtZX0pKX1fY29tcHV0ZVRhZ01ldGFkYXRhKHQpe3JldHVybntkaXNwbGF5TmFtZTpKdSh0KSxkZXNjcmlwdGlvbjp0LmRlc2NyaXB0aW9ufHwiIn19fTtIcy50ZW1wbGF0ZT1RYAogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFzZXNzaW9uR3JvdXBdXSI+CiAgICAgIDxkaXY+CiAgICAgICAgPGgzPk5vIHNlc3Npb24gZ3JvdXAgc2VsZWN0ZWQ8L2gzPgogICAgICAgIDxwPlBsZWFzZSBzZWxlY3QgYSBzZXNzaW9uIGdyb3VwIHRvIHNlZSBpdHMgbWV0cmljLWdyYXBocyBoZXJlLjwvcD4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfaGF2ZU1ldHJpY3ModmlzaWJsZVNjaGVtYS4qKV1dIj4KICAgICAgPGRpdj4KICAgICAgICA8aDM+Tm8gbWV0cmljcyBhcmUgZW5hYmxlZDwvaDM+CiAgICAgICAgPHA+UGxlYXNlIGVuYWJsZSBzb21lIG1ldHJpY3MgdG8gc2VlIGNvbnRlbnQgaGVyZS48L3A+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxkaXYgY2xhc3M9ImxheW91dCBob3Jpem9udGFsIHdyYXAgc2Vzc2lvbi1ncm91cC1kZXRhaWxzIj4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICBpZj0iW1tfaGF2ZU1ldHJpY3NBbmRTZXNzaW9uR3JvdXAodmlzaWJsZVNjaGVtYS4qLCBzZXNzaW9uR3JvdXApXV0iCiAgICAgID4KICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgaXRlbXM9IltbdmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc11dIgogICAgICAgICAgYXM9Im1ldHJpY0luZm8iCiAgICAgICAgPgogICAgICAgICAgPCEtLSBOb3RlIHRoYXQgd2UgZG8gbm90IHByb3ZpZGUgYSByZXF1ZXN0LW1hbmFnZXIgYXR0cmlidXRlIHNpbmNlCiAgICAgICAgICAgICAgIHdlIHByb3ZpZGUgYSBmdW5jdGlvbiBpbiByZXF1ZXN0LWRhdGEgZm9yIGNhbGxpbmcgdGhlIGJhY2tlbmQKICAgICAgICAgICAgICAgdG8gZ2V0IHRoZSBtZXRyaWNzIGRhdGEuCiAgICAgICAgICAgIC0tPgogICAgICAgICAgPHRmLXNjYWxhci1jYXJkCiAgICAgICAgICAgIGNsYXNzPSJzY2FsYXItY2FyZCIKICAgICAgICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIKICAgICAgICAgICAgZGF0YS10by1sb2FkPSJbW19jb21wdXRlU2VyaWVzRm9yU2Vzc2lvbkdyb3VwTWV0cmljKHNlc3Npb25Hcm91cCwgbWV0cmljSW5mbyldXSIKICAgICAgICAgICAgdGFnPSJbW21ldHJpY0luZm8ubmFtZS50YWddXSIKICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW19jb21wdXRlVGFnTWV0YWRhdGEobWV0cmljSW5mbyldXSIKICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICBtdWx0aS1leHBlcmltZW50cz0iW1tfbm9NdWx0aUV4cGVyaW1lbnRzXV0iCiAgICAgICAgICAgIHJlcXVlc3QtZGF0YT0iW1tfcmVxdWVzdERhdGFdXSIKICAgICAgICAgICAgYWN0aXZlCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLXNjYWxhci1jYXJkPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KICAgIDwhLS0gImlyb24tZmxleCIgaXMgbmVlZGVkIHRvIHVzZSB0aGUgbGF5b3V0IGNsYXNzZXMgaW4gdGhlIGRpdiBhYm92ZSAtLT4KICAgIDxzdHlsZSBpbmNsdWRlPSJpcm9uLWZsZXgiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIcy5wcm90b3R5cGUsImJhY2tlbmQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSHMucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIcy5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSHMucHJvdG90eXBlLCJzZXNzaW9uR3JvdXAiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sSHMucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxIcy5wcm90b3R5cGUsIl9ub011bHRpRXhwZXJpbWVudHMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSHMucHJvdG90eXBlLCJfaW5kZXhPZlNlc3Npb24iLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sSHMucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3VwTmFtZUhhc2giLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxIcy5wcm90b3R5cGUsIl9yZXF1ZXN0RGF0YSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIcy5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApO0UoW0J0KCJzZXNzaW9uR3JvdXAuKiIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSHMucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3VwQ2hhbmdlZCIsbnVsbCk7SHM9RShbeXQoInRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzIildLEhzKTt2YXIgSGQ9Y2xhc3MgZXh0ZW5kcyBHdChnbyhtdCkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ocGFyYW1OYW1lPUZkLHRoaXMuX21ldHJpY05hbWU9SnV9X3Zpc2libGVTY2hlbWFPclNlc3Npb25Hcm91cHNDaGFuZ2VkKCl7bGV0IHQ9dGhpcy4kLnNlc3Npb25Hcm91cHNUYWJsZS5nZXQoImRldGFpbHNPcGVuZWRJdGVtcyIpO3RoaXMuJC5zZXNzaW9uR3JvdXBzVGFibGUuc2V0KCJkZXRhaWxzT3BlbmVkSXRlbXMiLFtdKSx1aSgpO2xldCByPW5ldyBNYXA7dGhpcy5zZXNzaW9uR3JvdXBzLmZvckVhY2gobj0+e3Iuc2V0KG4ubmFtZSxuKX0pLHRoaXMuJC5zZXNzaW9uR3JvdXBzVGFibGUuc2V0KCJkZXRhaWxzT3BlbmVkSXRlbXMiLHQubWFwKG49PnIuZ2V0KG4ubmFtZSkpLmZpbHRlcihCb29sZWFuKSl9X3Nlc3Npb25Hcm91cEhQYXJhbSh0LHIpe3JldHVybiB0PT1udWxsfHxPYmplY3Qua2V5cyh0KS5sZW5ndGg9PTB8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodC5ocGFyYW1zLHIpPyIiOmIwKHQuaHBhcmFtc1tyXSl9X3Nlc3Npb25Hcm91cE1ldHJpYyh0LHIpe2lmKHQ9PW51bGx8fE9iamVjdC5rZXlzKHQpLmxlbmd0aD09MClyZXR1cm4iIjtmb3IobGV0IG49MDtuPHQubWV0cmljVmFsdWVzLmxlbmd0aDsrK24pe2xldCBpPXQubWV0cmljVmFsdWVzW25dO2lmKGkubmFtZS5ncm91cD09PXIuZ3JvdXAmJmkubmFtZS50YWc9PXIudGFnKXJldHVybiBiMChpLnZhbHVlKX1yZXR1cm4iIn1fcm93TnVtYmVyKHQpe3JldHVybiB0KzF9fTtIZC50ZW1wbGF0ZT1RYAogICAgPHZhYWRpbi1ncmlkCiAgICAgIGNsYXNzPSJzZXNzaW9uLWdyb3VwLXRhYmxlIgogICAgICBpZD0ic2Vzc2lvbkdyb3Vwc1RhYmxlIgogICAgICBjb2x1bW4tcmVvcmRlcmluZy1hbGxvd2VkPSIiCiAgICAgIGl0ZW1zPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgID4KICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjAiIHdpZHRoPSIxMGVtIiByZXNpemFibGU9IiI+CiAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPlRyaWFsIElEPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jZWxsIj5bW2l0ZW0ubmFtZV1dPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlbmFibGVTaG93TWV0cmljc11dIj4KICAgICAgICA8dmFhZGluLWdyaWQtY29sdW1uIGZsZXgtZ3Jvdz0iMCIgYXV0b1dpZHRoPSIiIHJlc2l6YWJsZT0iIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPlNob3cgTWV0cmljczwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNsYXNzPSJ0YWJsZS1jZWxsIiBjaGVja2VkPSJ7e2RldGFpbHNPcGVuZWR9fSI+CiAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICBpdGVtcz0iW1t2aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zXV0iCiAgICAgICAgYXM9ImhwYXJhbUluZm8iCiAgICAgICAgaW5kZXgtYXM9ImhwYXJhbUluZGV4IgogICAgICA+CiAgICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjIiIHdpZHRoPSIxMGVtIiByZXNpemFibGU9IiI+CiAgICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19ocGFyYW1OYW1lKGhwYXJhbUluZm8pXV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19zZXNzaW9uR3JvdXBIUGFyYW0oaXRlbSwgaHBhcmFtSW5mby5uYW1lKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3ZhYWRpbi1ncmlkLWNvbHVtbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9Int7dmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc319IgogICAgICAgIGFzPSJtZXRyaWNJbmZvIgogICAgICAgIGluZGV4LWFzPSJtZXRyaWNJbmRleCIKICAgICAgPgogICAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIyIiB3aWR0aD0iMTBlbSIgcmVzaXphYmxlPSIiPgogICAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1oZWFkZXIgdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfbWV0cmljTmFtZShtZXRyaWNJbmZvKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfc2Vzc2lvbkdyb3VwTWV0cmljKGl0ZW0sIG1ldHJpY0luZm8ubmFtZSldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0icm93LWRldGFpbHMiPgogICAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscwogICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgIHNlc3Npb24tZ3JvdXA9IltbaXRlbV1dIgogICAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbdmlzaWJsZVNjaGVtYV1dIgogICAgICAgICAgY2xhc3M9InNlc3Npb24tZ3JvdXAtZGV0YWlscyIKICAgICAgICA+CiAgICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdmFhZGluLWdyaWQ+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lOwogICAgICB9CgogICAgICA6aG9zdCguZGFyay1tb2RlKSB7CiAgICAgICAgLS1sdW1vLWJhc2UtY29sb3I6ICMzMDMwMzA7CiAgICAgICAgLS1sdW1vLWJvZHktdGV4dC1jb2xvcjogI2ZmZjsKICAgICAgfQoKICAgICAgOmhvc3QoLmRhcmstbW9kZSkgdmFhZGluLWdyaWQgewogICAgICAgIC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiAjNTA1MDUwOwogICAgICB9CgogICAgICAudGFibGUtY2VsbCB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC50YWJsZS1oZWFkZXIgewogICAgICAgIC8qIGxpbmUtYnJlYWsgb3ZlcmZsb3dpbmcgY29sdW1uIGhlYWRlcnMgKi8KICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KICAgICAgLnNlc3Npb24tZ3JvdXAtdGFibGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuc2Vzc2lvbi1ncm91cC1kZXRhaWxzIHsKICAgICAgICBoZWlnaHQ6IDM2MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIZC5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLEhkLnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEhkLnByb3RvdHlwZSwiZW5hYmxlU2hvd01ldHJpY3MiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSGQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLEhkLnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCk7RShbQnQoInZpc2libGVTY2hlbWEuKiIsInNlc3Npb25Hcm91cHMuKiIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sSGQucHJvdG90eXBlLCJfdmlzaWJsZVNjaGVtYU9yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQiLG51bGwpO0hkPUUoW3l0KCJ0Zi1ocGFyYW1zLXRhYmxlLXZpZXciKV0sSGQpO3ZhciBNUD1jbGFzcyBleHRlbmRzIG10e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlc3Npb25Hcm91cD1udWxsLHRoaXMudmlzaWJsZVNjaGVtYT1udWxsfV9wcm9wZXJ0aWVzQXJlUG9wdWxhdGVkKHQscil7cmV0dXJuIHQhPW51bGwmJnIhPT12b2lkIDAmJnIhPT1udWxsfV9zaW5nbGV0b25TZXNzaW9uR3JvdXBzKHQpe3JldHVybiB0PT1udWxsP1tdOlt0XX19O01QLnRlbXBsYXRlPVFgCiAgICA8IS0tIElmIHNlc3Npb25Hcm91cCBvciB2aXNpYmxlU2NoZW1hIGFyZSBub3QgcG9wdWxhdGVkLCBkbyBub3QgZGlzcGxheQogICAgICAgICBhbnl0aGluZy4KICAgICAgLS0+CiAgICA8dGVtcGxhdGUKICAgICAgaXM9ImRvbS1pZiIKICAgICAgaWY9IltbX3Byb3BlcnRpZXNBcmVQb3B1bGF0ZWQodmlzaWJsZVNjaGVtYSwgc2Vzc2lvbkdyb3VwKV1dIgogICAgPgogICAgICA8IS0tIERpc3BsYXkgb25lIHJvdyB3aXRob3V0IGEgInNob3ctbWV0cmljcyIgY29sdW1uIC0tPgogICAgICA8dGYtaHBhcmFtcy10YWJsZS12aWV3CiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbdmlzaWJsZVNjaGVtYV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW19zaW5nbGV0b25TZXNzaW9uR3JvdXBzKHNlc3Npb25Hcm91cCldXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtdGFibGUtdmlldz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUKICAgICAgaXM9ImRvbS1pZiIKICAgICAgaWY9IltbIV9wcm9wZXJ0aWVzQXJlUG9wdWxhdGVkKHZpc2libGVTY2hlbWEsIHNlc3Npb25Hcm91cCldXSIKICAgID4KICAgICAgPGRpdj5DbGljayBvciBob3ZlciBvdmVyIGEgc2Vzc2lvbiBncm91cCB0byBkaXNwbGF5IGl0cyB2YWx1ZXMgaGVyZS48L2Rpdj4KICAgIDwvdGVtcGxhdGU+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxNUC5wcm90b3R5cGUsInNlc3Npb25Hcm91cCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxNUC5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCk7TVA9RShbeXQoInRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMiKV0sTVApO3ZhciBFUD1FZShPZSgpLDEpO2Z1bmN0aW9uIGl1ZShlLHQscixuKXtpZih0Lmxlbmd0aDwyKXJldHVybiBjb25zb2xlLmVycm9yKCJMZXNzIHRoYW4gdHdvIGF4ZXMgaW4gcGFyYWxsZWwgY29vcmRpbmF0ZXMgcGxvdC4iKSxudWxsO2xldCBpPXJbMF0sbz1yWzFdO2lmKGk8PXRbMF18fGk+PXRbdC5sZW5ndGgtMV0pcmV0dXJuIG51bGw7bGV0IGE9RVAuc29ydGVkSW5kZXgodCxpKTtjb25zb2xlLmFzc2VydChhPjApLGNvbnNvbGUuYXNzZXJ0KGE8dC5sZW5ndGgpO2xldCBzPWEtMTtmdW5jdGlvbiBsKGgsZixwLGQpe2xldCBnPWgtcCxfPWYtZCx5PWktcCx4PW8tZCxiPShnKnkrXyp4KS8oZypnK18qXyk7aWYoYjw9MClyZXR1cm4gZjMoeSx4KTtpZihiPj0xKXtsZXQgUz1oLWksQz1mLW87cmV0dXJuIGYzKFMsQyl9cmV0dXJuIGYzKHktYipnLHgtYipfKX1sZXQgYz1udWxsLHU9bnVsbDtyZXR1cm4gZS5mb3JFYWNoKGg9PntsZXQgZj1sKGguY29udHJvbFBvaW50c1tzXVswXSxoLmNvbnRyb2xQb2ludHNbc11bMV0saC5jb250cm9sUG9pbnRzW2FdWzBdLGguY29udHJvbFBvaW50c1thXVsxXSk7Zj5ufHwoYz09PW51bGx8fGY8YykmJihjPWYsdT1oKX0pLHV9ZnVuY3Rpb24gb3VlKGUsdCxyKXtyZXR1cm4gZS5kb21haW4oKS5maWx0ZXIobj0+e2xldCBpPWUobik7cmV0dXJuIHQ8PWkmJmk8PXJ9KX1mdW5jdGlvbiBhdWUoZSx0LHIpe2xldCBuPWUucmFuZ2UoKSxpPW4uZmlsdGVyKG89PnQ8PW8mJm88PXIpLm1hcChvPT57bGV0IGE9ZS5pbnZlcnRFeHRlbnQobyk7cmV0dXJuIG89PT1uW24ubGVuZ3RoLTFdP1thWzBdLGFbMV0rMV06YX0pO3JldHVybiBpLmxlbmd0aD09MD9bMCwwXTpvYShJbShpKSl9ZnVuY3Rpb24gc3VlKGUsdCxyKXtyZXR1cm5bZS5pbnZlcnQodCksZS5pbnZlcnQocildLnNvcnQoKG4saSk9Pm4taSl9ZnVuY3Rpb24gemN0KGUsdCxyKXtmdW5jdGlvbiBuKCl7aWYoZS5sZW5ndGg9PT0wKXJldHVyblsxLDJdO2xldFtpLG9dPW9hKGUpO3JldHVybiBpIT09bz9baSxvXTppPjA/W2kqLjUsaSoxLjVdOmk8MD9baSoxLjUsaSouNV06Wy0xLDFdfWlmKHI9PT0iTElORUFSIilyZXR1cm4gem4oKS5kb21haW4obigpKS5yYW5nZShbdCwwXSk7aWYocj09PSJMT0ciKXtsZXQgaT1uKCk7cmV0dXJuIGlbMF08PTAmJmlbMV0+PTA/emN0KGUsdCwiTElORUFSIik6c2MoKS5kb21haW4oaSkucmFuZ2UoW3QsMF0pfWVsc2UgaWYocj09PSJRVUFOVElMRSIpe2xldCBvPUlyKDIwKS5tYXAoYT0+dC1hKnQvMTkpO3JldHVybiBlLmxlbmd0aD09PTAmJihlPVsxXSksZWcoKS5kb21haW4oRVAudW5pcShlKSkucmFuZ2Uobyl9ZWxzZXtpZihyPT09Ik5PTl9OVU1FUklDIilyZXR1cm4gdGcoKS5kb21haW4oRVAudW5pcShlLnNvcnQoKSkpLnJhbmdlKFt0LDBdKS5wYWRkaW5nKC4xKTt0aHJvdyBSYW5nZUVycm9yKCJVbmtub3duIHNjYWxlOiAiK3IpfX12YXIgdTE7KGZ1bmN0aW9uKGUpe2UuTElORUFSPSJMSU5FQVIiLGUuTE9HPSJMT0ciLGUuUVVBTlRJTEU9IlFVQU5USUxFIixlLk5PTl9OVU1FUklDPSJOT05fTlVNRVJJQyJ9KSh1MXx8KHUxPXt9KSk7dmFyIFRQPWNsYXNze2lzUGFzc2luZyh0KXtyZXR1cm4hMH19LHRWPWNsYXNze2NvbnN0cnVjdG9yKHQscixuLGkpe3RoaXMuX2xvd2VyPXQsdGhpcy5fdXBwZXI9cix0aGlzLl9sb3dlck9wZW49bix0aGlzLl91cHBlck9wZW49aX1pc1Bhc3NpbmcodCl7bGV0IHI9dDtyZXR1cm4gdGhpcy5fYmVmb3JlKHRoaXMuX2xvd2VyLHIsIXRoaXMuX2xvd2VyT3BlbikmJnRoaXMuX2JlZm9yZShyLHRoaXMuX3VwcGVyLCF0aGlzLl91cHBlck9wZW4pfV9iZWZvcmUodCxyLG4pe3JldHVybiBuP3Q8PXI6dDxyfX0sQmN0PWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvbWFpblNldD10fWlzUGFzc2luZyh0KXtyZXR1cm4gdGhpcy5fZG9tYWluU2V0LmZpbmRJbmRleChyPT5yPT09dCkhPT0tMX19LEhjdD1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbixpKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1yLHRoaXMuX2ludGVyYWN0aW9uTWFuYWdlcj1uLHRoaXMuX2NvbEluZGV4PWksdGhpcy5faXNEaXNwbGF5ZWQ9ITEsdGhpcy5feVNjYWxlPW51bGwsdGhpcy5fc2NhbGVUeXBlPW51bGwsdGhpcy5zZXRCcnVzaFNlbGVjdGlvbihudWxsKX1jb2xJbmRleCgpe3JldHVybiB0aGlzLl9jb2xJbmRleH15U2NhbGUoKXtyZXR1cm4gdGhpcy5feVNjYWxlfXNjYWxlVHlwZSgpe3JldHVybiB0aGlzLl9zY2FsZVR5cGV9YnJ1c2hTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnJ1c2hTZWxlY3Rpb259aXNEaXNwbGF5ZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwbGF5ZWR9c2V0QnJ1c2hTZWxlY3Rpb24odCl7dGhpcy5fYnJ1c2hTZWxlY3Rpb249dCx0aGlzLl9icnVzaEZpbHRlcj10aGlzLl9idWlsZEJydXNoRmlsdGVyKHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSx0aGlzLnNjYWxlVHlwZSgpLHRoaXMueVNjYWxlKCkpfXNldERvbWFpbkFuZFNjYWxlKHQscil7dGhpcy5fc2NhbGVUeXBlPXIsdGhpcy5feVNjYWxlPXpjdCh0LnNsaWNlKCksdGhpcy5fc3ZnUHJvcHMuaGVpZ2h0LHRoaXMuc2NhbGVUeXBlKCkpLHRoaXMuX2JydXNoRmlsdGVyPXRoaXMuX2J1aWxkQnJ1c2hGaWx0ZXIodGhpcy5icnVzaFNlbGVjdGlvbigpLHRoaXMuc2NhbGVUeXBlKCksdGhpcy55U2NhbGUoKSl9YnJ1c2hGaWx0ZXIoKXtyZXR1cm4gdGhpcy5fYnJ1c2hGaWx0ZXJ9dXBkYXRlRE9NKHQpe2xldCByPXNiKHRoaXMueVNjYWxlKCkpO3RoaXMuc2NhbGVUeXBlKCk9PT11MS5RVUFOVElMRSYmKHI9ci50aWNrVmFsdWVzKHRoaXMueVNjYWxlKCkucXVhbnRpbGVzKCkpLnRpY2tGb3JtYXQoeG4oIi0uNmciKSkpO2xldCBuPUh0KHQpO24uc2VsZWN0QWxsKCJnIikucmVtb3ZlKCksbi5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzIiwhMCkuY2FsbChyKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJheGlzLXRpdGxlIiwhMCkuc3R5bGUoImN1cnNvciIsIm1vdmUiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ5IiwtOSkudGV4dChhPT5sY3QodGhpcy5fc2NoZW1hLGEpKSxuLmNhbGwoZmIoKS5vbigic3RhcnQiLCgpPT57dC5zZXRBdHRyaWJ1dGUoImlzLWRyYWdnaW5nIiwiIiksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZ1N0YXJ0KHRoaXMuY29sSW5kZXgoKSl9KS5vbigiZHJhZyIsKCk9PnRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkRyYWcocXQueCkpLm9uKCJlbmQiLCgpPT57dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZ0VuZCgpLHQucmVtb3ZlQXR0cmlidXRlKCJpcy1kcmFnZ2luZyIpfSkpO2xldCBpPUhMKCkuZXh0ZW50KFtbLTgsMF0sWzgsdGhpcy5fc3ZnUHJvcHMuaGVpZ2h0KzFdXSkub24oInN0YXJ0IiwoKT0+eyFGY3QocXQpfHwodC5zZXRBdHRyaWJ1dGUoImlzLWJydXNoaW5nIiwiIiksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxxdC5zZWxlY3Rpb24pKX0pLm9uKCJicnVzaCIsKCk9PnshRmN0KHF0KXx8dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSxxdC5zZWxlY3Rpb24pfSkub24oImVuZCIsKCk9PnshRmN0KHF0KXx8KHRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkJydXNoQ2hhbmdlZCh0aGlzLmNvbEluZGV4KCkscXQuc2VsZWN0aW9uKSx0LnJlbW92ZUF0dHJpYnV0ZSgiaXMtYnJ1c2hpbmciKSl9KSxvPUh0KHQpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImJydXNoIiwhMCk7by5jYWxsKGkpLGkubW92ZShvLHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSl9c2V0RGlzcGxheWVkKHQpe3RoaXMuX2lzRGlzcGxheWVkPXR9X2J1aWxkQnJ1c2hGaWx0ZXIodCxyLG4pe2lmKHQ9PT1udWxsKXJldHVybiBuZXcgVFA7aWYocj09PW51bGwpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIlNjYWxlIHR5cGUgaXMgbnVsbCwgYnV0IGJydXNoU2VsZWN0aW9uIGlzbid0OiAiLHQpLG5ldyBUUDtzd2l0Y2gocil7Y2FzZSB1MS5MSU5FQVI6Y2FzZSB1MS5MT0c6e2xldFtpLG9dPXN1ZShuLHRbMF0sdFsxXSk7cmV0dXJuIG5ldyB0VihpLG8sITEsITEpfWNhc2UgdTEuUVVBTlRJTEU6e2xldFtpLG9dPWF1ZShuLHRbMF0sdFsxXSk7cmV0dXJuIG5ldyB0VihpLG8sITEsITApfWNhc2UgdTEuTk9OX05VTUVSSUM6cmV0dXJuIG5ldyBCY3Qob3VlKG4sdFswXSx0WzFdKSl9cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlVua25vd24gc2NhbGUgdHlwZTogIixyKSxuZXcgVFB9fSxlVj1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbil7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9cix0aGlzLl9heGVzPXRoaXMuX2NyZWF0ZUF4ZXMobiksdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnM9dGcoKS5yYW5nZShbMSx0aGlzLl9zdmdQcm9wcy53aWR0aC0xXSkucGFkZGluZyguNSksdGhpcy5fZHJhZ2dlZEF4aXM9bnVsbCx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5heGlzLXBhcmVudCIpLnJlbW92ZSgpLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoIi5heGlzLXBhcmVudCIpfXVwZGF0ZUF4ZXModCxyKXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKTtsZXQgbj1uZXcgU2V0O3QuY29sdW1ucy5mb3JFYWNoKG89PntsZXQgYT1vLmFic29sdXRlSW5kZXgscz10aGlzLl9heGVzW2FdO3Muc2V0RGlzcGxheWVkKCEwKTtsZXQgbD1yLm1hcChjPT54MCh0aGlzLl9zY2hlbWEsYyxhKSk7cy5zZXREb21haW5BbmRTY2FsZShsLG8uc2NhbGUpLG4uYWRkKGEpfSksdGhpcy5fYXhlcy5mb3JFYWNoKG89PntuLmhhcyhvLmNvbEluZGV4KCkpfHxvLnNldERpc3BsYXllZCghMSl9KSx0aGlzLl91cGRhdGVTdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyhuKSx0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3BhcmVudHNTZWwuZGF0YShBcnJheS5mcm9tKG4pLG89Pm8pLHRoaXMuX3BhcmVudHNTZWwuZXhpdCgpLnJlbW92ZSgpLHRoaXMuX3BhcmVudHNTZWw9dGhpcy5fcGFyZW50c1NlbC5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImF4aXMtcGFyZW50IiwhMCkubWVyZ2UodGhpcy5fcGFyZW50c1NlbCk7bGV0IGk9dGhpczt0aGlzLl9wYXJlbnRzU2VsLmNhbGwobz0+dGhpcy5fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKG8pKS5lYWNoKGZ1bmN0aW9uKG8pe2kuX2F4ZXNbb10udXBkYXRlRE9NKHRoaXMpfSl9bWFwVmlzaWJsZUF4ZXModCl7cmV0dXJuIHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpLm1hcChyPT50KHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHIpLHRoaXMuX2F4ZXNbcl0pKX1hbGxWaXNpYmxlQXhlc1NhdGlzZnkodCl7cmV0dXJuIHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpLmV2ZXJ5KHI9PnQodGhpcy5nZXRBeGlzUG9zaXRpb24ociksdGhpcy5fYXhlc1tyXSkpfWdldEF4aXNGb3JDb2xJbmRleCh0KXtyZXR1cm4gdGhpcy5fYXhlc1t0XX1kcmFnU3RhcnQodCl7Y29uc29sZS5hc3NlcnQoIXRoaXMuaXNBeGlzRHJhZ2dpbmcoKSksY29uc29sZS5hc3NlcnQodGhpcy5fYXhlc1t0XS5pc0Rpc3BsYXllZCgpKSx0aGlzLl9kcmFnZ2VkQXhpcz10aGlzLl9heGVzW3RdLHRoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb249dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnModCl9ZHJhZyh0KXt0PU1hdGgubWluKE1hdGgubWF4KHQsMCksdGhpcy5fc3ZnUHJvcHMud2lkdGgpLHRoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb249dDtsZXQgcj10aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKTtyLnNvcnQoKG4saSk9PnRoaXMuZ2V0QXhpc1Bvc2l0aW9uKG4pLXRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGkpKSx0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4ociksdGhpcy5fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHRoaXMuX3BhcmVudHNTZWwpfWRyYWdFbmQodCl7Y29uc29sZS5hc3NlcnQodGhpcy5pc0F4aXNEcmFnZ2luZygpKSx0aGlzLl9kcmFnZ2VkQXhpc1Bvc2l0aW9uPW51bGwsdGhpcy5fZHJhZ2dlZEF4aXM9bnVsbCx0aGlzLl91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odGhpcy5fcGFyZW50c1NlbC50cmFuc2l0aW9uKCkuZHVyYXRpb24odCkpfWlzQXhpc0RyYWdnaW5nKCl7cmV0dXJuIHRoaXMuX2RyYWdnZWRBeGlzIT09bnVsbH1nZXRBeGlzUG9zaXRpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdnZWRBeGlzIT09bnVsbCYmdGhpcy5fZHJhZ2dlZEF4aXMuY29sSW5kZXgoKT09PXQ/dGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbjp0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyh0KX1fdXBkYXRlU3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnModCl7bGV0IHI9dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkuZmlsdGVyKGk9PnQuaGFzKGkpKSxuPUFycmF5LmZyb20obmV3IFNldChbLi4uciwuLi5BcnJheS5mcm9tKHQpXSkpO3RoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbihuKX1fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHQpe3QuYXR0cigidHJhbnNmb3JtIixyPT5tUCh0aGlzLmdldEF4aXNQb3NpdGlvbihyKSkpfV9jcmVhdGVBeGVzKHQpe3JldHVybiBJcihjY3QodGhpcy5fc2NoZW1hKSkubWFwKHI9Pm5ldyBIY3QodGhpcy5fc3ZnUHJvcHMsdGhpcy5fc2NoZW1hLHQscikpfX07ZnVuY3Rpb24gRmN0KGUpe3JldHVybiBlLnNvdXJjZUV2ZW50IT09bnVsbH12YXIgWWY7KGZ1bmN0aW9uKGUpe2VbZS5GT1JFR1JPVU5EPTBdPSJGT1JFR1JPVU5EIixlW2UuQkFDS0dST1VORD0xXT0iQkFDS0dST1VORCJ9KShZZnx8KFlmPXt9KSk7dmFyIFF1PWNsYXNze2NvbnN0cnVjdG9yKHQpe3Q9PT12b2lkIDAmJih0PUVwKG51bGwpKSxjb25zb2xlLmFzc2VydCh0LnNpemUoKTw9MSksdGhpcy5fc2Vzc2lvbkdyb3VwU2VsPXR9c2Vzc2lvbkdyb3VwKCl7cmV0dXJuIHRoaXMuX3Nlc3Npb25Hcm91cFNlbC5zaXplKCk9PT0xP3RoaXMuX3Nlc3Npb25Hcm91cFNlbC5kYXR1bSgpOm51bGx9aXNOdWxsKCl7cmV0dXJuIHRoaXMuc2Vzc2lvbkdyb3VwKCk9PT1udWxsfXNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9zZXNzaW9uR3JvdXBTZWx9ZXF1YWxzVG8odCl7dmFyIHIsbjtyZXR1cm4gdGhpcy5pc051bGwoKT90LmlzTnVsbCgpOnQuaXNOdWxsKCk/ITE6KChyPXQuc2Vzc2lvbkdyb3VwKCkpPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci5uYW1lKT09KChuPXRoaXMuc2Vzc2lvbkdyb3VwKCkpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5uYW1lKX19LHJWPWNsYXNze2NvbnN0cnVjdG9yKHQscixuKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1yLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW4sdGhpcy5fc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5iYWNrZ3JvdW5kIikucmVtb3ZlKCksdGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuZm9yZWdyb3VuZCIpLnJlbW92ZSgpLHRoaXMuX2JnUGF0aHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5hcHBlbmQoImciKS5jbGFzc2VkKCJiYWNrZ3JvdW5kIiwhMCkuc2VsZWN0QWxsKCJwYXRoIiksdGhpcy5fZmdQYXRoc1NlbD10aGlzLl9zdmdQcm9wcy5zdmdHLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZvcmVncm91bmQiLCEwKS5zZWxlY3RBbGwoInBhdGgiKSx0aGlzLl91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZT1uZXcgUXUsdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGU9bmV3IFF1LHRoaXMuX2QzbGluZT15dSgpLmN1cnZlKFdoKX1nZXRTZXNzaW9uR3JvdXBIYW5kbGUodCl7cmV0dXJuIHQ9PW51bGw/bmV3IFF1Om5ldyBRdSh0aGlzLl9mZ1BhdGhzU2VsLmZpbHRlcihyPT5yLm5hbWU9PT10Lm5hbWUpKX1oaWRlQmFja2dyb3VuZExpbmVzKCl7dGhpcy5fYmdQYXRoc1NlbC5hdHRyKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9c2hvd0JhY2tncm91bmRMaW5lcygpe3RoaXMuX2JnUGF0aHNTZWwuYXR0cigidmlzaWJpbGl0eSIsbnVsbCl9cGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCl7cmV0dXJuIHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZX1zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZX1yZWNvbXB1dGVDb250cm9sUG9pbnRzKHQscj0wKXsodD09PVlmLkZPUkVHUk9VTkQ/dGhpcy5fZmdQYXRoc1NlbDp0aGlzLl9iZ1BhdGhzU2VsKS50cmFuc2l0aW9uKCkuZHVyYXRpb24ocikuYXR0cigiZCIsaT0+dGhpcy5fcGF0aERBdHRyaWJ1dGUoaSkpLHQ9PT1ZZi5GT1JFR1JPVU5EJiZ3aW5kb3cuc2V0VGltZW91dCgoKT0+e2xldCBpPXRoaXM7dGhpcy5fZmdQYXRoc1NlbC5lYWNoKGZ1bmN0aW9uKG8pe2kuX3NldENvbnRyb2xQb2ludHNQcm9wZXJ0eSh0aGlzLG8pfSl9KX1yZWNvbXB1dGVGb3JlZ3JvdW5kTGluZXNWaXNpYmlsaXR5KCl7dGhpcy5fZmdQYXRoc1NlbC5jbGFzc2VkKCJpbnZpc2libGUtcGF0aCIsdD0+IXRoaXMuX2F4ZXNDb2xsZWN0aW9uLmFsbFZpc2libGVBeGVzU2F0aXNmeSgocixuKT0+bi5icnVzaEZpbHRlcigpLmlzUGFzc2luZyh4MCh0aGlzLl9zY2hlbWEsdCxuLmNvbEluZGV4KCkpKSkpLHRoaXMuX3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl9c2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IodCxyLG4pe2xldCBpPXRoaXMuX2NyZWF0ZUxpbmVDb2xvckZ1bmN0aW9uKHQscixuKTt0aGlzLl9mZ1BhdGhzU2VsLmF0dHIoInN0cm9rZSIsaSl9cmVkcmF3KHQscixuLGkpe2xldCBvPXRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZS5zZXNzaW9uR3JvdXAoKSxhPXRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlc3Npb25Hcm91cCgpO3RoaXMuX3Nlc3Npb25Hcm91cHM9dCx0aGlzLl9mZ1BhdGhzU2VsPXRoaXMuX3JlY29tcHV0ZVBhdGhTZWxlY3Rpb24odGhpcy5fZmdQYXRoc1NlbCksdGhpcy5fYmdQYXRoc1NlbD10aGlzLl9yZWNvbXB1dGVQYXRoU2VsZWN0aW9uKHRoaXMuX2JnUGF0aHNTZWwpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZT10aGlzLmdldFNlc3Npb25Hcm91cEhhbmRsZShvKSx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZT10aGlzLmdldFNlc3Npb25Hcm91cEhhbmRsZShhKSx0aGlzLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoWWYuRk9SRUdST1VORCksdGhpcy5yZWNvbXB1dGVDb250cm9sUG9pbnRzKFlmLkJBQ0tHUk9VTkQpLHRoaXMucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpLHRoaXMuc2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IocixuLGkpfXVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cCh0KXt0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCExKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9dCx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgicGVha2VkLXBhdGgiLCEwKX1jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpe3RoaXMudXBkYXRlUGVha2VkU2Vzc2lvbkdyb3VwKG5ldyBRdSl9dXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAodCl7dGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgic2VsZWN0ZWQtcGF0aCIsITEpLHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPXQsdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgic2VsZWN0ZWQtcGF0aCIsITApfWZpbmRDbG9zZXN0U2Vzc2lvbkdyb3VwKHQscil7bGV0IG49dGhpcy5fYXhlc0NvbGxlY3Rpb24ubWFwVmlzaWJsZUF4ZXMoKG8sYSk9Pm8pLGk9aXVlKHRoaXMuX3Zpc2libGVGZ1BhdGhzU2VsLm5vZGVzKCksbixbdCxyXSwxMDApO3JldHVybiBpPT09bnVsbD9uZXcgUXU6bmV3IFF1KEh0KGkpKX1fY3JlYXRlTGluZUNvbG9yRnVuY3Rpb24odCxyLG4pe2lmKHQ9PT1udWxsKXJldHVybigpPT4icmVkIjtsZXQgaT16bigpLmRvbWFpbih1Y3QodGhpcy5fc2NoZW1hLHRoaXMuX3Nlc3Npb25Hcm91cHMsdCkpLnJhbmdlKFtyLG5dKS5pbnRlcnBvbGF0ZShNXyk7cmV0dXJuIG89PmkoeDAodGhpcy5fc2NoZW1hLG8sdCkpfV9yZWNvbXB1dGVQYXRoU2VsZWN0aW9uKHQpe3JldHVybiB0PXQuZGF0YSh0aGlzLl9zZXNzaW9uR3JvdXBzLHI9PnIubmFtZSksdC5leGl0KCkucmVtb3ZlKCksdC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLm1lcmdlKHQpfV9zZXRDb250cm9sUG9pbnRzUHJvcGVydHkodCxyKXt0LmNvbnRyb2xQb2ludHM9dGhpcy5fY29tcHV0ZUNvbnRyb2xQb2ludHMocil9X2NvbXB1dGVDb250cm9sUG9pbnRzKHQpe3JldHVybiB0aGlzLl9heGVzQ29sbGVjdGlvbi5tYXBWaXNpYmxlQXhlcygocixuKT0+W3Isbi55U2NhbGUoKSh4MCh0aGlzLl9zY2hlbWEsdCxuLmNvbEluZGV4KCkpKV0pfV9wYXRoREF0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5fZDNsaW5lKHRoaXMuX2NvbXB1dGVDb250cm9sUG9pbnRzKHQpKX1fdXBkYXRlVmlzaWJsZUZnUGF0aHNTZWwoKXt0aGlzLl92aXNpYmxlRmdQYXRoc1NlbD10aGlzLl9mZ1BhdGhzU2VsLmZpbHRlcigiOm5vdCguaW52aXNpYmxlLXBhdGgpIil9fTt2YXIgblY9Y2xhc3N7Y29uc3RydWN0b3IodCxyKXt0aGlzLnN2Zz1IdCh0KTtsZXQgbj17dG9wOjMwLHJpZ2h0OjEwLGJvdHRvbToxMCxsZWZ0OjEwfSxpPTEwMCxvPTIwMCxhPXIqaStuLmxlZnQrbi5yaWdodCxzPW8rbi50b3Arbi5ib3R0b207dGhpcy5zdmcuYXR0cigidmlld0JveCIsYDAgMCAke2F9ICR7c31gKSx0aGlzLnN2Zy5hdHRyKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQiKSx0aGlzLnN2Zy5zdHlsZSgibWluLXdpZHRoIixhKyJweCIpLHRoaXMuc3ZnLnN0eWxlKCJtaW4taGVpZ2h0IixzKyJweCIpLHRoaXMud2lkdGg9YS1uLmxlZnQtbi5yaWdodCx0aGlzLmhlaWdodD1zLW4udG9wLW4uYm90dG9tLHRoaXMuc3ZnRz10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLG1QKG4ubGVmdCxuLnRvcCkpfX0saVY9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4saSl7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9cix0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0I9bix0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQj1pLHRoaXMuX2F4ZXNDb2xsZWN0aW9uPW5ldyBlVih0LHIsdGhpcyksdGhpcy5fbGluZXNDb2xsZWN0aW9uPW5ldyByVih0LHIsdGhpcy5fYXhlc0NvbGxlY3Rpb24pLHRoaXMuX3N2Z1Byb3BzLnN2Zy5vbigiY2xpY2siLCgpPT50aGlzLm9uQ2xpY2soKSkub24oIm1vdXNlbW92ZSBtb3VzZWVudGVyIiwoKT0+e2xldFtvLGFdPU9vKHRoaXMuX3N2Z1Byb3BzLnN2Z0cubm9kZSgpKTt0aGlzLm9uTW91c2VNb3ZlZChvLGEpfSkub24oIm1vdXNlbGVhdmUiLCgpPT50aGlzLm9uTW91c2VMZWF2ZSgpKX1vbkRyYWdTdGFydCh0KXt0aGlzLl9heGVzQ29sbGVjdGlvbi5kcmFnU3RhcnQodCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLmhpZGVCYWNrZ3JvdW5kTGluZXMoKX1vbkRyYWcodCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZyh0KSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlQ29udHJvbFBvaW50cyhZZi5GT1JFR1JPVU5EKX1vbkRyYWdFbmQoKXt0aGlzLl9heGVzQ29sbGVjdGlvbi5kcmFnRW5kKDUwMCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoWWYuRk9SRUdST1VORCw1MDApLHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57dGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoWWYuQkFDS0dST1VORCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLnNob3dCYWNrZ3JvdW5kTGluZXMoKX0sNTAwKX1vbkJydXNoQ2hhbmdlZCh0LHIpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmdldEF4aXNGb3JDb2xJbmRleCh0KS5zZXRCcnVzaFNlbGVjdGlvbihyKSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpfW9uTW91c2VNb3ZlZCh0LHIpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLmZpbmRDbG9zZXN0U2Vzc2lvbkdyb3VwKHQscikpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfW9uTW91c2VMZWF2ZSgpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5pc051bGwoKXx8KHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5jbGVhclBlYWtlZFNlc3Npb25Hcm91cCgpLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQihudWxsKSl9b25DbGljaygpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKT09PXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpP3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cChuZXcgUXUpOnRoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cCh0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkpLHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKX1vbk9wdGlvbnNPclNlc3Npb25Hcm91cHNDaGFuZ2VkKHQscil7dGhpcy5fYXhlc0NvbGxlY3Rpb24udXBkYXRlQXhlcyh0LHIpO2xldCBuPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSxpPXRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpO3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWRyYXcocix0LmNvbG9yQnlDb2x1bW5JbmRleCE9PXZvaWQgMD90LmNvbHVtbnNbdC5jb2xvckJ5Q29sdW1uSW5kZXhdLmFic29sdXRlSW5kZXg6bnVsbCx0Lm1pbkNvbG9yLHQubWF4Q29sb3IpLG4uZXF1YWxzVG8odGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKXx8dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSksaS5lcXVhbHNUbyh0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSl8fHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKX1zY2hlbWEoKXtyZXR1cm4gdGhpcy5fc2NoZW1hfX07dmFyIHRoPWNsYXNzIGV4dGVuZHMgR3QoZ28obXQpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cD1udWxsLHRoaXMuY2xvc2VzdFNlc3Npb25Hcm91cD1udWxsLHRoaXMucmVkcmF3Q291bnQ9MH1fb3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXt2YXIgdDtpZighdGhpcy5vcHRpb25zKXJldHVybjtsZXR7Y29uZmlndXJhdGlvbjpyfT0odD10aGlzLl9wcmV2T3B0aW9ucykhPT1udWxsJiZ0IT09dm9pZCAwP3Q6e30se2NvbmZpZ3VyYXRpb246bn09dGhpcy5vcHRpb25zO2lmKHRoaXMuX2ludGVyYWN0aW9uTWFuYWdlcj09PXZvaWQgMHx8IVZjdC5pc0VxdWFsKHI9PW51bGw/dm9pZCAwOnIuc2NoZW1hLG4uc2NoZW1hKXx8IVZjdC5pc0VxdWFsKHI9PW51bGw/dm9pZCAwOnIuY29sdW1uc1Zpc2liaWxpdHksbi5jb2x1bW5zVmlzaWJpbGl0eSkpe0h0KHRoaXMuJC5zdmcpLnNlbGVjdEFsbCgiKiIpLnJlbW92ZSgpO2xldCBpPW5ldyBuVih0aGlzLiQuc3ZnLG4uY29sdW1uc1Zpc2liaWxpdHkuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aCk7dGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLnN2ZywhMCksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyPW5ldyBpVihpLG4uc2NoZW1hLG89PnRoaXMuY2xvc2VzdFNlc3Npb25Hcm91cENoYW5nZWQobyksbz0+dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQobykpfXRoaXMuX2NvbXB1dGVWYWxpZFNlc3Npb25Hcm91cHMoKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25PcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCh0aGlzLm9wdGlvbnMsdGhpcy5fdmFsaWRTZXNzaW9uR3JvdXBzKSx0aGlzLnJlZHJhd0NvdW50KyssdGhpcy5fcHJldk9wdGlvbnM9dGhpcy5vcHRpb25zfWNsb3Nlc3RTZXNzaW9uR3JvdXBDaGFuZ2VkKHQpe3RoaXMuY2xvc2VzdFNlc3Npb25Hcm91cD10fXNlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZCh0KXt0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPXR9X2NvbXB1dGVWYWxpZFNlc3Npb25Hcm91cHMoKXtsZXQgdD1scztpZih0aGlzLnNlc3Npb25Hcm91cHM9PT12b2lkIDApe3RoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz12b2lkIDA7cmV0dXJufWxldCByPXRoaXMub3B0aW9ucy5jb25maWd1cmF0aW9uLnNjaGVtYTt0aGlzLl92YWxpZFNlc3Npb25Hcm91cHM9dGhpcy5zZXNzaW9uR3JvdXBzLmZpbHRlcihuPT57Zm9yKGxldCBpPTA7aTx0Lm51bUNvbHVtbnMocik7KytpKWlmKCEhdGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb24uY29sdW1uc1Zpc2liaWxpdHlbaV0mJnQuY29sdW1uVmFsdWVCeUluZGV4KHIsbixpKT09PXZvaWQgMClyZXR1cm4hMTtyZXR1cm4hMH0pfX07dGgudGVtcGxhdGU9UWAKICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CiAgICAgIDxzdmcgaWQ9InN2ZyI+PC9zdmc+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIC0tdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdC1heGlzLXNoYWRvdzogMCAxcHggMCAjZmZmLAogICAgICAgICAgMXB4IDAgMCAjZmZmLCAwIC0xcHggMCAjZmZmLCAtMXB4IDAgMCAjZmZmOwogICAgICB9CiAgICAgIDpob3N0KC5kYXJrLW1vZGUpIHsKICAgICAgICAtLXRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QtYXhpcy1zaGFkb3c6IDAgMXB4IDAgIzAwMCwKICAgICAgICAgIDFweCAwIDAgIzAwMCwgMCAtMXB4IDAgIzAwMCwgLTFweCAwIDAgIzAwMDsKICAgICAgfQogICAgICBzdmcgewogICAgICAgIGZvbnQ6IDEwcHggc2Fucy1zZXJpZjsKICAgICAgfQoKICAgICAgLmJhY2tncm91bmQgcGF0aCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6ICNkZGQ7CiAgICAgICAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOwogICAgICB9CgogICAgICAuZm9yZWdyb3VuZCBwYXRoIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZS1vcGFjaXR5OiAwLjc7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxOwogICAgICB9CgogICAgICAvKiBXaWxsIGJlIHNldCBvbiBmb3JlZ3JvdW5kIHBhdGhzIHRoYXQgYXJlIG5vdCAiY29udGFpbmVkIiBpbiB0aGUgY3VycmVudAogICAgICAgICBheGVzIGJydXNoZXMuIElmIG5vIGJydXNoZXMgYXJlIHNldCwgbm8gcGF0aCB3aWxsIGhhdmUgdGhpcyBjbGFzcy4gKi8KICAgICAgLmZvcmVncm91bmQgLmludmlzaWJsZS1wYXRoIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBTdHlsZSBmb3IgdGhlIHBhdGggY2xvc2VzdCB0byB0aGUgbW91c2UgcG9pbnRlciAodHlwaWNhbGx5IHdpbGwgYmVjb21lCiAgICAgIHRoZSBzZWxlY3RlZCBwYXRoIHdoZW4gdGhlIHVzZXIgY2xpY2tzKS4gKi8KICAgICAgLmZvcmVncm91bmQgLnBlYWtlZC1wYXRoIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDM7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgcGF0aCBjbGFzcy4gV2UgdXNlICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgdGhlCiAgICAgICAgIGlubGluZSBzdHlsZSB0aGF0IHNldHMgdGhlIHJlZ3VsYXIgY29sb3Igb2YgYSBwYXRoLiAqLwogICAgICAuZm9yZWdyb3VuZCAuc2VsZWN0ZWQtcGF0aCB7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAzICFpbXBvcnRhbnQ7CiAgICAgICAgc3Ryb2tlOiAjMGYwICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgICNjb250YWluZXIgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgc3ZnIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5heGlzIHRleHQgewogICAgICAgIHRleHQtc2hhZG93OiB2YXIoLS10Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90LWF4aXMtc2hhZG93KTsKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLHRoLnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0aC5wcm90b3R5cGUsIm9wdGlvbnMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHRoLnByb3RvdHlwZSwic2VsZWN0ZWRTZXNzaW9uR3JvdXAiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHRoLnByb3RvdHlwZSwiY2xvc2VzdFNlc3Npb25Hcm91cCIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx0aC5wcm90b3R5cGUsInJlZHJhd0NvdW50Iix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdGgucHJvdG90eXBlLCJfdmFsaWRTZXNzaW9uR3JvdXBzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLHRoLnByb3RvdHlwZSwiX2ludGVyYWN0aW9uTWFuYWdlciIsdm9pZCAwKTtFKFtCdCgib3B0aW9ucy4qIiwic2Vzc2lvbkdyb3Vwcy4qIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx0aC5wcm90b3R5cGUsIl9vcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCIsbnVsbCk7dGg9RShbeXQoInRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QiKV0sdGgpO3ZhciBBMD1jbGFzcyBleHRlbmRzIG10e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm9wdGlvbnM9bnVsbH1fY29uZmlndXJhdGlvbkNoYW5nZWQoKXtsZXQgdD10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYSxyPXRoaXMuY29uZmlndXJhdGlvbi5zY2hlbWEsbj0oYSxzKT0+KHtuYW1lOkZkKGEpLGluZGV4OnMsYWJzb2x1dGVJbmRleDpOSChyLHQscyksc2NhbGU6dGhpcy5faXNOdW1lcmljQ29sdW1uKHMpPyJMSU5FQVIiOiJOT05fTlVNRVJJQyJ9KSxpPShhLHMpPT57bGV0IGw9cyt0LmhwYXJhbUluZm9zLmxlbmd0aDtyZXR1cm57c2NhbGU6IkxJTkVBUiIsbmFtZTpKdShhKSxpbmRleDpsLGFic29sdXRlSW5kZXg6Tkgocix0LGwpfX0sbz17Y29sdW1uczp0LmhwYXJhbUluZm9zLm1hcChuKS5jb25jYXQodC5tZXRyaWNJbmZvcy5tYXAoaSkpLG1pbkNvbG9yOiIjMDAwMEZGIixtYXhDb2xvcjoiI0ZGMDAwMCIsY29uZmlndXJhdGlvbjp0aGlzLmNvbmZpZ3VyYXRpb259O3RoaXMuc2V0KCJvcHRpb25zIixvKSx1aSgpLHRoaXMuc2V0KCJvcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleCIsdGhpcy5fZGVmYXVsdENvbG9yQnlDb2x1bW5JbmRleCgpKX1fdW5zZWxlY3REaXNhYmxlZExvZ1NjYWxlcygpe3RoaXMub3B0aW9ucyE9PW51bGwmJnRoaXMub3B0aW9ucy5jb2x1bW5zLmZvckVhY2godD0+e2xldCByPSJvcHRpb25zLmNvbHVtbnMuIit0LmluZGV4OyF0aGlzLl9hbGxvd0xvZ1NjYWxlKHQpJiZ0LnNjYWxlPT09IkxPRyImJnRoaXMuc2V0KHIrIi5zY2FsZSIsIkxJTkVBUiIpfSl9X2FsbG93TG9nU2NhbGUodCl7aWYoIXRoaXMuX2lzTnVtZXJpY0NvbHVtbih0LmluZGV4KXx8IXRoaXMuc2Vzc2lvbkdyb3VwcylyZXR1cm4hMTtsZXRbcixuXT1kUCh0aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYSx0aGlzLnNlc3Npb25Hcm91cHMsdC5pbmRleCk7cmV0dXJuIHI+MHx8bjwwfV9pc051bWVyaWNDb2x1bW4odCl7cmV0dXJuIHQ+PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmxlbmd0aHx8dGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEuaHBhcmFtSW5mb3NbdF0udHlwZT09PSJEQVRBX1RZUEVfRkxPQVQ2NCJ9X2RlZmF1bHRDb2xvckJ5Q29sdW1uSW5kZXgoKXtpZih0aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcy5sZW5ndGg+MClyZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEuaHBhcmFtSW5mb3MubGVuZ3RoO2xldCB0PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmZpbmRJbmRleChyPT5yLnR5cGU9PT0iREFUQV9UWVBFX0ZMT0FUNjQiKTtpZih0IT09LTEpcmV0dXJuIHR9fTtBMC50ZW1wbGF0ZT1RYAogICAgPGRpdiBjbGFzcz0iY29udHJvbC1wYW5lbCI+CiAgICAgIDwhLS0gJ0NvbG9yIGJ5JyBkcm9wIGRvd24gbWVudSAtLT4KICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICBsYWJlbD0iQ29sb3IgYnkiCiAgICAgICAgaWQ9ImNvbG9yQnlEcm9wRG93bk1lbnUiCiAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCIKICAgICAgPgogICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICBzZWxlY3RlZD0ie3tvcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleH19IgogICAgICAgICAgaWQ9ImNvbG9yQnlMaXN0Qm94IgogICAgICAgID4KICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgaXRlbXM9Iltbb3B0aW9ucy5jb2x1bW5zXV0iCiAgICAgICAgICAgIGFzPSJjb2x1bW4iCiAgICAgICAgICAgIGlkPSJjb2xvckJ5Q29sdW1uVGVtcGxhdGUiCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1pdGVtIGRpc2FibGVkPSJbWyFfaXNOdW1lcmljQ29sdW1uKGNvbHVtbi5pbmRleCldXSI+CiAgICAgICAgICAgICAgW1tjb2x1bW4ubmFtZV1dCiAgICAgICAgICAgIDwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CgogICAgICA8IS0tIENvbHVtbnMgc2NhbGVzIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjb2x1bW5zLWNvbnRhaW5lciI+CiAgICAgICAgPCEtLSBTY2FsZSBvcHRpb25zIGZvciBlYWNoIG51bWVyaWMgZmVhdHVyZSAtLT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJ7e29wdGlvbnMuY29sdW1uc319IiBhcz0iY29sdW1uIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNOdW1lcmljQ29sdW1uKGNvbHVtbi5pbmRleCldXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbiI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sdW1uLXRpdGxlIj5bW2NvbHVtbi5uYW1lXV08L2Rpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJzY2FsZS1yYWRpby1ncm91cCIKICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9Int7Y29sdW1uLnNjYWxlfX0iCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iTElORUFSIj4KICAgICAgICAgICAgICAgICAgICBMaW5lYXIKICAgICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICAgIDwhLS0gVGhlIGlkIGhlcmUgaXMgdXNlZCB0byBhY2Nlc3MgdGhpcyBidXR0b24gaW4gdW5pdAogICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLi0tPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgaWQ9ImxvZ1NjYWxlQnV0dG9uX1tbY29sdW1uLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgICBuYW1lPSJMT0ciCiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9IltbIV9hbGxvd0xvZ1NjYWxlKGNvbHVtbiwgc2Vzc2lvbkdyb3Vwcy4qKV1dIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgTG9nYXJpdGhtaWMKICAgICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iUVVBTlRJTEUiPgogICAgICAgICAgICAgICAgICAgIFF1YW50aWxlCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1ncm91cD4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLmNvbnRyb2wtcGFuZWwgewogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CiAgICAgIC5jb2x1bW4gewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgICBib3JkZXI6IHNvbGlkIDFweCBkYXJrZ3JheTsKICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgIH0KICAgICAgLmNvbHVtbi10aXRsZSB7CiAgICAgICAgLyogRml0IGV2ZXJ5IHRpdGxlIGluIG9uZSBsaW5lIHNvIHRoZSByYWRpbyBib3hlcyBhbGlnbiB2ZXJ0aWNhbGx5LiAqLwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KICAgICAgLmNvbHVtbnMtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KICAgICAgLnNjYWxlLXJhZGlvLWdyb3VwIHBhcGVyLXJhZGlvLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMnB4OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIHBhcGVyLWxpc3Rib3ggewogICAgICAgIG1heC1oZWlnaHQ6IDE1ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxBMC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLEEwLnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQTAucHJvdG90eXBlLCJvcHRpb25zIix2b2lkIDApO0UoW0J0KCJjb25maWd1cmF0aW9uLioiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEEwLnByb3RvdHlwZSwiX2NvbmZpZ3VyYXRpb25DaGFuZ2VkIixudWxsKTtFKFtCdCgic2Vzc2lvbkdyb3Vwcy4qIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxBMC5wcm90b3R5cGUsIl91bnNlbGVjdERpc2FibGVkTG9nU2NhbGVzIixudWxsKTtBMD1FKFt5dCgidGYtaHBhcmFtcy1zY2FsZS1hbmQtY29sb3ItY29udHJvbHMiKV0sQTApO3ZhciBoMT1jbGFzcyBleHRlbmRzIG10e19jbG9zZXN0T3JTZWxlY3RlZCh0LHIpe3JldHVybiB0IT09bnVsbD90OnJ9fTtoMS50ZW1wbGF0ZT1RYAogICAgPCEtLSBDb250cm9scyBiZWhhdmlvciBvZiBwYXJhbGxlbCBjb29yZGluYXRlcyBwbG90CiAgICAgICAgIG91dHB1dHMgc2V0IG9wdGlvbnMgdG8gdGhlIF9vcHRpb25zIHByb3BlcnR5LgogICAgICAtLT4KICAgIDxocGFyYW1zLXNwbGl0LWxheW91dCBvcmllbnRhdGlvbj0idmVydGljYWwiPgogICAgICA8IS0tIFRoZSBzY2FsZSBhbmQgY29sb3IgY29udHJvbHMuIC0tPgogICAgICA8dGYtaHBhcmFtcy1zY2FsZS1hbmQtY29sb3ItY29udHJvbHMKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBjb25maWd1cmF0aW9uPSJbW2NvbmZpZ3VyYXRpb25dXSIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgb3B0aW9ucz0ie3tfb3B0aW9uc319IgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1zY2FsZS1hbmQtY29sb3ItY29udHJvbHM+CiAgICAgIDwhLS0gVGhlIGFjdHVhbCBwYXJhbGxlbCBjb29yZGluYXRlcyBwbG90IC0tPgogICAgICA8dGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdAogICAgICAgIGlkPSJwbG90IgogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgIHNlbGVjdGVkLXNlc3Npb24tZ3JvdXA9Int7X3NlbGVjdGVkR3JvdXB9fSIKICAgICAgICBjbG9zZXN0LXNlc3Npb24tZ3JvdXA9Int7X2Nsb3Nlc3RHcm91cH19IgogICAgICAgIG9wdGlvbnM9IltbX29wdGlvbnNdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3Q+CiAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzCiAgICAgICAgaWQ9InZhbHVlcyIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX2Nsb3Nlc3RPclNlbGVjdGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbG9zZXN0R3JvdXAsIF9zZWxlY3RlZEdyb3VwKV1dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcz4KICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzCiAgICAgICAgaWQ9ImRldGFpbHMiCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW19zZWxlY3RlZEdyb3VwXV0iCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CgogICAgPHN0eWxlPgogICAgICAuc2VjdGlvbiB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQogICAgICAjdmFsdWVzIHsKICAgICAgICBoZWlnaHQ6IDExNXB4OwogICAgICB9CiAgICAgICNkZXRhaWxzIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxoMS5wcm90b3R5cGUsImJhY2tlbmQiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saDEucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxoMS5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLGgxLnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKTtoMT1FKFt5dCgidGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldyIpXSxoMSk7dmFyIF8zPUVlKE9lKCksMSk7dmFyIFhvPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5fY29udGFpbmVyPW51bGwsdGhpcy5fc3ZnPW51bGwsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsdGhpcy5fYnJ1c2hlZENlbGxJbmRleD1udWxsLHRoaXMuX2JydXNoU2VsZWN0aW9uPW51bGx9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX2NvbnRhaW5lcj10aGlzLiQuY29udGFpbmVyLHRoaXMuX3N2Zz1IdCh0aGlzLiQuc3ZnKSx0aGlzLl9yZWRyYXcoKX1fc2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXt0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwIT09bnVsbCYmKHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9aGN0KHRoaXMuc2Vzc2lvbkdyb3Vwcyx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwLm5hbWUpfHxudWxsKSx0aGlzLl9yZWRyYXcoKX1fdmlzaWJsZVNjaGVtYUNoYW5nZWQoKXt0aGlzLl9icnVzaGVkQ2VsbEluZGV4PW51bGwsdGhpcy5fYnJ1c2hTZWxlY3Rpb249bnVsbCx0aGlzLl9yZWRyYXcoKX1fcmVkcmF3KCl7dGhpcy5kZWJvdW5jZSgiX3JlZHJhdyIsKCk9PntsZXQgdD1scyxyPTEyMDAsbj0uNCpyLGk9MTUwLG89Ljc1Kmk7dGhpcy53aWR0aD1NYXRoLm1heChpKnQubnVtVmlzaWJsZUNvbHVtbnModGhpcy52aXNpYmxlU2NoZW1hKSxyKSx0aGlzLmhlaWdodD1NYXRoLm1heChvKnQubnVtVmlzaWJsZU1ldHJpY3ModGhpcy52aXNpYmxlU2NoZW1hKSxuKSx0aGlzLl9jb250YWluZXIuc3R5bGUud2lkdGg9dGhpcy53aWR0aCsicHgiLHRoaXMuX2NvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5oZWlnaHQrInB4Iix0aGlzLl9zdmcuYXR0cigid2lkdGgiLHRoaXMud2lkdGgpLmF0dHIoImhlaWdodCIsdGhpcy5oZWlnaHQpLHRoaXMuX3N2Zy5zZWxlY3RBbGwoImciKS5yZW1vdmUoKSx0aGlzLl9kcmF3KCl9LDEwMCl9X2RyYXcoKXtsZXQgdD1scyxyPXRoaXM7aWYoIXRoaXMuc2Vzc2lvbkdyb3Vwc3x8dGhpcy5zZXNzaW9uR3JvdXBzLmxlbmd0aD09MHx8IXRoaXMudmlzaWJsZVNjaGVtYXx8dGhpcy52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zLmxlbmd0aD09MClyZXR1cm47bGV0IG49SXIodC5udW1WaXNpYmxlQ29sdW1ucyhyLnZpc2libGVTY2hlbWEpKSxpPUlyKHQubnVtVmlzaWJsZU1ldHJpY3Moci52aXNpYmxlU2NoZW1hKSksbz04MCxhPTUwLHM9NSxsPVFtKCkuZG9tYWluKG4pLnJhbmdlKFtvK3MsdGhpcy53aWR0aC0xLXNdKS5wYWRkaW5nSW5uZXIoLjEpLGM9UW0oKS5kb21haW4oaSkucmFuZ2UoW3RoaXMuaGVpZ2h0LTEtcy1hLHNdKS5wYWRkaW5nSW5uZXIoLjEpLHU9bC5iYW5kd2lkdGgoKSxoPWMuYmFuZHdpZHRoKCksZj1uLm1hcChjdD0+ci5fY2VsbFNjYWxlKGN0LFswLHUtMV0pKSxwPWkubWFwKGN0PT5yLl9jZWxsU2NhbGUoY3QrdC5udW1WaXNpYmxlSFBhcmFtcyhyLnZpc2libGVTY2hlbWEpLFtoLTEsMF0pKSxkPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi54LWF4aXMiKS5kYXRhKG4pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieC1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIixjdD0+dC50cmFuc2xhdGVTdHIobChjdCksMCkpO2Z1bmN0aW9uIGcoY3Qpe3JldHVybiJ4LWF4aXMtY2xpcC1wYXRoLSIrY3R9ZnVuY3Rpb24gXyhjdCl7cmV0dXJuIngtbGFiZWwtY2xpcC1wYXRoLSIrY3R9ZC5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGcpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC1zKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsdSsyKnMpLmF0dHIoImhlaWdodCIsci5oZWlnaHQtYS8yKSxkLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsXykuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsci5oZWlnaHQtYS8yKS5hdHRyKCJ3aWR0aCIsdSkuYXR0cigiaGVpZ2h0IixhLzIpLGQuYXBwZW5kKCJnIikuYXR0cigiY2xpcC1wYXRoIixjdD0+InVybCgjIitnKGN0KSsiKSIpLmVhY2goZnVuY3Rpb24oY3Qpe0h0KHRoaXMpLmNhbGwoUyxYOShmW2N0XSkudGlja1NpemUoci5oZWlnaHQtYSksdSw0MCxyLm9wdGlvbnMuY29sdW1uc1tjdF0uc2NhbGUpfSksZC5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWF4aXMtbGFiZWwiLCEwKS5hdHRyKCJjbGlwLXBhdGgiLGN0PT4idXJsKCMiK18oY3QpKyIpIikuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4Iix1LzIpLmF0dHIoInkiLHIuaGVpZ2h0LTEtYS80KS50ZXh0KGN0PT50LnNjaGVtYVZpc2libGVDb2x1bW5OYW1lKHIudmlzaWJsZVNjaGVtYSxjdCkpLmFwcGVuZCgidGl0bGUiKS50ZXh0KGN0PT50LnNjaGVtYVZpc2libGVDb2x1bW5OYW1lKHIudmlzaWJsZVNjaGVtYSxjdCkpO2xldCB5PXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi55LWF4aXMiKS5kYXRhKGkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIixjdD0+dC50cmFuc2xhdGVTdHIoci53aWR0aC0xLGMoY3QpKSk7ZnVuY3Rpb24geChjdCl7cmV0dXJuInktYXhpcy1jbGlwLXBhdGgtIitjdH1mdW5jdGlvbiBiKGN0KXtyZXR1cm4ieS1sYWJlbC1jbGlwLXBhdGgtIitjdH15LmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIseCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLShyLndpZHRoLW8vMi0xKSkuYXR0cigieSIsLXMpLmF0dHIoIndpZHRoIixyLndpZHRoLW8vMikuYXR0cigiaGVpZ2h0IixoKzIqcykseS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGIpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0oci53aWR0aC0xKSkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLG8vMikuYXR0cigiaGVpZ2h0IixoKSx5LmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsY3Q9PiJ1cmwoIyIreChjdCkrIikiKS5lYWNoKGZ1bmN0aW9uKGN0KXtIdCh0aGlzKS5jYWxsKFMsc2IocFtjdF0pLnRpY2tTaXplKHIud2lkdGgtbyksaCwyMCxyLm9wdGlvbnMuY29sdW1uc1tjdCt0Lm51bVZpc2libGVIUGFyYW1zKHIudmlzaWJsZVNjaGVtYSldLnNjYWxlKX0pLHkuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzLWxhYmVsIiwhMCkuYXR0cigiY2xpcC1wYXRoIixjdD0+InVybCgjIitiKGN0KSsiKSIpLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieCIsLShyLndpZHRoLW8vNC0xKSkuYXR0cigieSIsaC8yKS5hdHRyKCJ0cmFuc2Zvcm0iLHQucm90YXRlU3RyKDkwLC0oci53aWR0aC1vLzQtMSksaC8yKSkudGV4dChjdD0+dC5tZXRyaWNOYW1lKHIudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc1tjdF0pKS5hcHBlbmQoInRpdGxlIikudGV4dChjdD0+dC5tZXRyaWNOYW1lKHIudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc1tjdF0pKTtmdW5jdGlvbiBTKGN0LFgsZXQsZHQscSl7bGV0IHB0PU1hdGguZmxvb3IoZXQvZHQpLGh0PVguc2NhbGUoKTtpZihxPT09IlFVQU5USUxFIil7bGV0IHd0PWh0LnF1YW50aWxlcygpLGt0PU1hdGguY2VpbCh3dC5sZW5ndGgvcHQpO3d0PUlyKDAsd3QubGVuZ3RoLGt0KS5tYXAoaWU9Pnd0W2llXSksWC50aWNrVmFsdWVzKHd0KS50aWNrRm9ybWF0KHhuKCItLjJnIikpfShxPT09IkxJTkVBUiJ8fHE9PT0iTE9HIikmJlgudGlja3MocHQpLGN0LmNhbGwoWCksY3Quc2VsZWN0QWxsKCIuZG9tYWluIikucmVtb3ZlKCksY3Quc2VsZWN0QWxsKCIudGljayBsaW5lIikuYXR0cigic3Ryb2tlIiwiI2RkZCIpfWxldCBDPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi5jZWxsIikuZGF0YShIOShuLGkpKS5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImNlbGwiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLChbY3QsWF0pPT50LnRyYW5zbGF0ZVN0cihsKGN0KSxjKFgpKSksUD1DLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZyYW1lIiwhMCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLXMpLmF0dHIoInkiLC1zKS5hdHRyKCJ3aWR0aCIsdSsyKnMpLmF0dHIoImhlaWdodCIsaCsyKnMpLmF0dHIoInN0cm9rZSIsIiMwMDAiKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKSxrPW51bGw7ci5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleCE9PXZvaWQgMCYmKGs9em4oKS5kb21haW4odGhpcy5fY29sRXh0ZW50KHRoaXMub3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgpKS5yYW5nZShbdGhpcy5vcHRpb25zLm1pbkNvbG9yLHRoaXMub3B0aW9ucy5tYXhDb2xvcl0pLmludGVycG9sYXRlKE1fKSk7bGV0IE89ci5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleD09PXZvaWQgMD8oKT0+InJlZCI6KHtzZXNzaW9uR3JvdXA6Y3R9KT0+ayh0aGlzLl9jb2xWYWx1ZShjdCxyLm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4KSk7ZnVuY3Rpb24gRChjdCxYKXtyZXR1cm4gZltYXShyLl9jb2xWYWx1ZShjdCxYKSl9ZnVuY3Rpb24gQihjdCxYKXtyZXR1cm4gcFtYXShyLl9tZXRyaWNWYWx1ZShjdCxYKSl9ZnVuY3Rpb24gSShjdCxYKXtsZXQgZXQ9Y3Quc2VsZWN0QWxsKCIuZGF0YS1tYXJrZXIiKS5kYXRhKChbcHQsaHRdKT0+ci5zZXNzaW9uR3JvdXBzLmZpbHRlcih3dD0+ci5fY29sVmFsdWUod3QscHQpIT09dm9pZCAwJiZyLl9tZXRyaWNWYWx1ZSh3dCxodCkhPT12b2lkIDApLm1hcCh3dD0+KHtjb2w6cHQsbWV0cmljOmh0LHNlc3Npb25Hcm91cDp3dCx4OkQod3QscHQpLHk6Qih3dCxodCksc2Vzc2lvbkdyb3VwTWFya2VyczpudWxsfSkpKS5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuY2xhc3NlZCgiZGF0YS1tYXJrZXIiLCEwKS5hdHRyKCJjeCIsKHt4OnB0fSk9PnB0KS5hdHRyKCJjeSIsKHt5OnB0fSk9PnB0KS5hdHRyKCJyIiwyKS5hdHRyKCJmaWxsIixYKSxkdD1uZXcgTWFwO3Iuc2Vzc2lvbkdyb3Vwcy5mb3JFYWNoKHB0PT57ZHQuc2V0KHB0LFtdKX0pLGV0LmVhY2goZnVuY3Rpb24ocHQpe3ZhciBodDsoaHQ9ZHQuZ2V0KHB0LnNlc3Npb25Hcm91cCkpPT09bnVsbHx8aHQ9PT12b2lkIDB8fGh0LnB1c2godGhpcyl9KSxldC5lYWNoKHB0PT57bGV0IGh0PWR0LmdldChwdC5zZXNzaW9uR3JvdXApO3B0LnNlc3Npb25Hcm91cE1hcmtlcnM9bmV3IFNldChodCl9KTtsZXQgcT1uLm1hcChwdD0+aS5tYXAoaHQ9PmV0LmZpbHRlcih3dD0+d3QuY29sPT1wdCYmd3QubWV0cmljPT1odCkpKTtyZXR1cm5bZXQscSxkdF19bGV0W0wsUixGXT1JKEMuYXBwZW5kKCJnIiksTyk7ZnVuY3Rpb24geihjdCxYKXtsZXQgZXQ9W107cmV0dXJuIFJbY3RdW1hdLmVhY2goZnVuY3Rpb24oKXtldC5wdXNoKHRoaXMpfSksT2goKS54KGR0PT5IdChkdCkuZGF0dW0oKS54KS55KGR0PT5IdChkdCkuZGF0dW0oKS55KS5hZGRBbGwoZXQpfWxldCBVPW4ubWFwKGN0PT5pLm1hcChYPT56KGN0LFgpKSksVz1udWxsO2J0KCkmJihXPUMuZmlsdGVyKGN0PT5fMy5pc0VxdWFsKGN0LHIuX2JydXNoZWRDZWxsSW5kZXgpKSxjb25zb2xlLmFzc2VydChXLnNpemUoKT09MSxXKSk7bGV0IFo9bmV3IFNldChMLm5vZGVzKCkpO3J0KCk7ZnVuY3Rpb24gcnQoKXtsZXQgY3Q9bmV3IFNldChMLm5vZGVzKCkpO010KCl8fChjdD1vdChyLl9icnVzaGVkQ2VsbEluZGV4LHIuX2JydXNoU2VsZWN0aW9uKSksRXAoQXJyYXkuZnJvbSh0LmZpbHRlclNldChjdCxYPT4hWi5oYXMoWCkpKSkuYXR0cigiZmlsbCIsTyksRXAoQXJyYXkuZnJvbSh0LmZpbHRlclNldChaLFg9PiFjdC5oYXMoWCkpKSkuYXR0cigiZmlsbCIsIiNkZGQiKSxaPWN0fWZ1bmN0aW9uIG90KGN0LFgpe2NvbnNvbGUuYXNzZXJ0KGN0IT09bnVsbCksY29uc29sZS5hc3NlcnQoWCE9PW51bGwpO2xldFtldCxkdF09Y3QscT1uZXcgU2V0O3JldHVybiB0LnF1YWRUcmVlVmlzaXRQb2ludHNJblJlY3QoVVtldF1bZHRdLFhbMF1bMF0sWFswXVsxXSxYWzFdWzBdLFhbMV1bMV0scHQ9PntIdChwdCkuZGF0dW0oKS5zZXNzaW9uR3JvdXBNYXJrZXJzLmZvckVhY2god3Q9PntxLmFkZCh3dCl9KX0pLHF9bGV0IHN0PVZMKCkuZXh0ZW50KFtbLXMrMSwtcysxXSxbdS0xK3MtMSxoLTErcy0xXV0pLm9uKCJzdGFydCIsZnVuY3Rpb24oKXtidCgpJiZXLm5vZGUoKSE9dGhpcyYmc3QubW92ZShXLG51bGwpLFN0KHRoaXMpfSkub24oImJydXNoIixmdW5jdGlvbigpe1N0KHRoaXMpfSkub24oImVuZCIsZnVuY3Rpb24oKXtTdCh0aGlzKX0pO2Z1bmN0aW9uIFN0KGN0KXtsZXQgWD1CTChjdCk7IWJ0KCkmJlg9PT1udWxsfHxidCgpJiZjdD09PVcubm9kZSgpJiZfMy5pc0VxdWFsKFgsci5fYnJ1c2hTZWxlY3Rpb24pfHwoci5fYnJ1c2hTZWxlY3Rpb249WCxYIT09bnVsbD8oVz1IdChjdCksci5fYnJ1c2hlZENlbGxJbmRleD1XLmRhdHVtKCkpOihXPW51bGwsci5fYnJ1c2hlZENlbGxJbmRleD1udWxsKSxydCgpKX1mdW5jdGlvbiBidCgpe3JldHVybiByLl9icnVzaGVkQ2VsbEluZGV4IT09bnVsbCYmci5fYnJ1c2hTZWxlY3Rpb24hPT1udWxsfWZ1bmN0aW9uIE10KCl7cmV0dXJuIWJ0KCl8fHIuX2JydXNoU2VsZWN0aW9uWzBdWzBdPT09ci5fYnJ1c2hTZWxlY3Rpb25bMV1bMF18fHIuX2JydXNoU2VsZWN0aW9uWzBdWzFdPT09ci5fYnJ1c2hTZWxlY3Rpb25bMV1bMV19Qy5jYWxsKHN0KSxidCgpJiZzdC5tb3ZlKFcsci5fYnJ1c2hTZWxlY3Rpb24pO2xldCBsdD1udWxsLEt0PW51bGw7dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCE9PW51bGwmJihLdD1FcChGLmdldCh0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwKSkuY2xhc3NlZCgic2VsZWN0ZWQtbWFya2VyIiwhMCkpLEMub24oImNsaWNrIixmdW5jdGlvbigpe2xldCBjdD1sdD09PUt0P251bGw6bHQ7aWYoY3Q9PT1LdClyZXR1cm47S3QhPT1udWxsJiZLdC5jbGFzc2VkKCJzZWxlY3RlZC1tYXJrZXIiLCExKSxLdD1jdCxLdCE9PW51bGwmJkt0LmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITApO2xldCBYPUt0PT09bnVsbD9udWxsOkt0LmRhdHVtKCkuc2Vzc2lvbkdyb3VwO3Iuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9WH0pLm9uKCJtb3VzZW1vdmUgbW91c2VlbnRlciIsZnVuY3Rpb24oW2N0LFhdKXtsZXRbZXQsZHRdPU9vKHRoaXMpLHE9X3QoY3QsWCxldCxkdCwyMCk7bHQhPT1xJiYobHQhPT1udWxsJiZsdC5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITEpLGx0PXEsbHQhPT1udWxsPyhsdC5jbGFzc2VkKCJjbG9zZXN0LW1hcmtlciIsITApLHIuY2xvc2VzdFNlc3Npb25Hcm91cD1sdC5kYXR1bSgpLnNlc3Npb25Hcm91cCk6ci5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwpfSkub24oIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKFtjdCxYXSl7bHQhPT1udWxsJiYobHQuY2xhc3NlZCgiY2xvc2VzdC1tYXJrZXIiLCExKSxsdD1udWxsLHIuY2xvc2VzdFNlc3Npb25Hcm91cD1udWxsKX0pO2Z1bmN0aW9uIF90KGN0LFgsZXQsZHQscSl7bGV0IHB0PTEvMCxodD1udWxsO3JldHVybiB0LnF1YWRUcmVlVmlzaXRQb2ludHNJbkRpc2soVVtjdF1bWF0sZXQsZHQscSwod3Qsa3QpPT57aWYoWi5oYXMod3QpJiZrdDxwdCl7bGV0IGllPUh0KHd0KS5kYXR1bSgpO3B0PWt0LGh0PWllLnNlc3Npb25Hcm91cH19KSxodD09PW51bGw/bnVsbDpFcChGLmdldChodCkpfXRoaXMuX3N2Zy5zZWxlY3RBbGwoIioiKS5jbGFzc2VkKCJ0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtcGxvdCIsITApfV9jZWxsU2NhbGUodCxyKXtsZXQgbj10aGlzLl9jb2xFeHRlbnQodCksaT16bigpLmRvbWFpbihuKS5yYW5nZShyKTtpZih0aGlzLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZT09PSJMSU5FQVIiKXJldHVybiBpO2lmKHRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlPT09IkxPRyIpcmV0dXJuIG5bMF08PTAmJm5bMV0+PTA/aTpzYygpLmRvbWFpbihuKS5yYW5nZShyKTtpZih0aGlzLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZT09PSJRVUFOVElMRSIpe2xldCBvPShyWzFdLXJbMF0pLzE5LGE9SXIoMjApLm1hcChzPT5yWzBdK28qcyk7cmV0dXJuIGVnKCkuZG9tYWluKF8zLnVuaXEodGhpcy5zZXNzaW9uR3JvdXBzLm1hcChzPT50aGlzLl9jb2xWYWx1ZShzLHQpKSkpLnJhbmdlKGEpfWVsc2V7aWYodGhpcy5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGU9PT0iTk9OX05VTUVSSUMiKXJldHVybiB0ZygpLmRvbWFpbihfMy51bmlxKHRoaXMuc2Vzc2lvbkdyb3Vwcy5tYXAobz0+dGhpcy5fY29sVmFsdWUobyx0KSkuc29ydCgpKSkucmFuZ2UocikucGFkZGluZyguMSk7dGhyb3ciVW5rbm93biBzY2FsZSBmb3IgY29sdW1uOiAiK3QrIi4gb3B0aW9uczogIit0aGlzLm9wdGlvbnN9fV9jb2xWYWx1ZSh0LHIpe3JldHVybiBPSCh0aGlzLnZpc2libGVTY2hlbWEsdCxyKX1fbWV0cmljVmFsdWUodCxyKXtyZXR1cm4gREgodGhpcy52aXNpYmxlU2NoZW1hLHQscil9X2NvbEV4dGVudCh0KXtyZXR1cm4gZFAodGhpcy52aXNpYmxlU2NoZW1hLHRoaXMuc2Vzc2lvbkdyb3Vwcyx0KX19O1hvLnRlbXBsYXRlPVFgCiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8c3ZnIGlkPSJzdmciPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgc3ZnIHsKICAgICAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIHRleHQgewogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgICAgfQoKICAgICAgLmZyYW1lIHJlY3QgewogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICB9CgogICAgICAvKiBUaGUgY2xvc2VzdCBkYXRhIHBvaW50IG1hcmtlciB0byB0aGUgbW91c2UgcG9pbnRlci4gV2UgdXNlICFpbXBvcnRhbnQKICAgICAgICAgdG8gb3ZlcnJpZGUgdGhlIGlubGluZSBzdHlsZSB0aGF0IHNldHMgdGhlIHJlZ3VsYXIgc3R5bGUgb2YgYSBtYXJrZXIuCiAgICAgICovCiAgICAgIC5jbG9zZXN0LW1hcmtlciB7CiAgICAgICAgcjogNiAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAvKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGEgcG9pbnQgbWFya2VyLiBXZSB1c2UgIWltcG9ydGFudCB0bwogICAgICAgICBvdmVycmlkZSB0aGUgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBzdHlsZSBvZiBhIG1hcmtlci4gKi8KICAgICAgLnNlbGVjdGVkLW1hcmtlciB7CiAgICAgICAgcjogNiAhaW1wb3J0YW50OwogICAgICAgIGZpbGw6ICMwZjAgIWltcG9ydGFudDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFhvLnByb3RvdHlwZSwidmlzaWJsZVNjaGVtYSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sWG8ucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFhvLnByb3RvdHlwZSwib3B0aW9ucyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWG8ucHJvdG90eXBlLCJzZWxlY3RlZFNlc3Npb25Hcm91cCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWG8ucHJvdG90eXBlLCJjbG9zZXN0U2Vzc2lvbkdyb3VwIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEhUTUxFbGVtZW50KV0sWG8ucHJvdG90eXBlLCJfY29udGFpbmVyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFhvLnByb3RvdHlwZSwiX3N2ZyIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxYby5wcm90b3R5cGUsIndpZHRoIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLFhvLnByb3RvdHlwZSwiaGVpZ2h0Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFhvLnByb3RvdHlwZSwiX2JydXNoZWRDZWxsSW5kZXgiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWG8ucHJvdG90eXBlLCJfYnJ1c2hTZWxlY3Rpb24iLHZvaWQgMCk7RShbQnQoInNlc3Npb25Hcm91cHMuKiIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sWG8ucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3Vwc0NoYW5nZWQiLG51bGwpO0UoW0J0KCJ2aXNpYmxlU2NoZW1hLioiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFhvLnByb3RvdHlwZSwiX3Zpc2libGVTY2hlbWFDaGFuZ2VkIixudWxsKTtFKFtCdCgib3B0aW9ucy4qIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxYby5wcm90b3R5cGUsIl9yZWRyYXciLG51bGwpO1hvPUUoW3l0KCJ0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtcGxvdCIpXSxYbyk7dmFyIGYxPWNsYXNzIGV4dGVuZHMgbXR7X2Nsb3Nlc3RPclNlbGVjdGVkKHQscil7cmV0dXJuIHQhPT1udWxsP3Q6cn19O2YxLnRlbXBsYXRlPVFgCiAgICA8aHBhcmFtcy1zcGxpdC1sYXlvdXQgb3JpZW50YXRpb249InZlcnRpY2FsIj4KICAgICAgPCEtLSBDb250cm9scyBiZWhhdmlvciBvZiB0aGUgc2NhdHRlciBwbG90IG1hdHJpeAogICAgICAgICAgICAgb3V0cHV0cyB0aGUgY29uZmlndXJlZCBvcHRpb25zIHRvIHRoZSBfb3B0aW9ucyBwcm9wZXJ0eS4gLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scwogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgaWQ9ImNvbnRyb2xzIgogICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICBvcHRpb25zPSJ7e19vcHRpb25zfX0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scz4KICAgICAgPCEtLSBUaGUgYWN0dWFsIHNjYXR0ZXIgcGxvdCBtYXRyaXggLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtcGxvdAogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgaWQ9InBsb3QiCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgIHNlbGVjdGVkLXNlc3Npb24tZ3JvdXA9Int7X3NlbGVjdGVkR3JvdXB9fSIKICAgICAgICBjbG9zZXN0LXNlc3Npb24tZ3JvdXA9Int7X2Nsb3Nlc3RHcm91cH19IgogICAgICAgIG9wdGlvbnM9IltbX29wdGlvbnNdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90PgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcwogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgaWQ9InZhbHVlcyIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW19jbG9zZXN0T3JTZWxlY3RlZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Nsb3Nlc3RHcm91cCwgX3NlbGVjdGVkR3JvdXApXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzPgogICAgICA8IS0tIFNob3dzIHNlc3Npb24gZ3JvdXAgZGV0YWlscyBmb3IgdGhlIGNsaWNrZWQgbWFya2VyLiAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0iZGV0YWlscyIKICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW19zZWxlY3RlZEdyb3VwXV0iCiAgICAgICAgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgIDwvaHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIC5zZWN0aW9uIHsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CiAgICAgICNjb250cm9scyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgI3Bsb3QgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICAgICN2YWx1ZXMgewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGhlaWdodDogMTE1cHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjZGV0YWlscyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgdmFhZGluLXNwbGl0LWxheW91dCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZjEucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGYxLnByb3RvdHlwZSwiZXhwZXJpbWVudE5hbWUiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZjEucHJvdG90eXBlLCJjb25maWd1cmF0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxmMS5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCk7ZjE9RShbeXQoInRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3IildLGYxKTt2YXIgamY9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fc2VsZWN0ZWRUYWI9MH19O2pmLnRlbXBsYXRlPVFgCiAgICA8cGFwZXItaGVhZGVyLXBhbmVsPgogICAgICA8cGFwZXItdG9vbGJhciBzbG90PSJoZWFkZXIiIGNsYXNzPSJ0YWItYmFyIj4KICAgICAgICA8cGFwZXItdGFicyBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRUYWJ9fSIgc2xvdD0idG9wIj4KICAgICAgICAgIDwhLS0gdmlldy1pZCBjYW4gYmUgdXNlZCBieSBpbnRlZ3JhdGlvbiB0ZXN0cyB0byBsb2NhdGUgYSB0YWIuCiAgICAgICAgICAgICAgIEl0IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgcm9vdCBlbGVtZW50IGltcGxlbWVudGluZyB0aGUgdmlldwogICAgICAgICAgICAgICB3aXRob3V0IHRoZSAndGYtaHBhcmFtcy0nIHByZWZpeC4gLS0+CiAgICAgICAgICA8cGFwZXItdGFiIHZpZXctaWQ9InRhYmxlLXZpZXciPiBUQUJMRSBWSUVXIDwvcGFwZXItdGFiPgogICAgICAgICAgPHBhcGVyLXRhYiB2aWV3LWlkPSJwYXJhbGxlbC1jb29yZHMtdmlldyI+CiAgICAgICAgICAgIFBBUkFMTEVMIENPT1JESU5BVEVTIFZJRVcKICAgICAgICAgIDwvcGFwZXItdGFiPgogICAgICAgICAgPHBhcGVyLXRhYiB2aWV3LWlkPSJzY2F0dGVyLXBsb3QtbWF0cml4LXZpZXciPgogICAgICAgICAgICBTQ0FUVEVSIFBMT1QgTUFUUklYIFZJRVcKICAgICAgICAgIDwvcGFwZXItdGFiPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC1hbmQtZmVlZGJhY2siPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbYnVnUmVwb3J0VXJsXV0iPgogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmJD0iW1tidWdSZXBvcnRVcmxdXSIKICAgICAgICAgICAgICAgIHRhcmdldD0iX2JsYW5rIgogICAgICAgICAgICAgICAgcmVsPSJub29wZW5lciBub3JlZmVycmVyIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgICAgaWQ9ImJ1Zy1yZXBvcnQiCiAgICAgICAgICAgICAgICAgIHJhaXNlZAogICAgICAgICAgICAgICAgICB0aXRsZT0iU2VuZCBhIGJ1ZyByZXBvcnQgb3IgZmVhdHVyZSByZXF1ZXN0IgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBCdWcgUmVwb3J0IC8gRmVhdHVyZSBSZXF1ZXN0CiAgICAgICAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWxwVXJsXV0iPgogICAgICAgICAgICAgIDxhIGhyZWYkPSJbW2hlbHBVcmxdXSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+CiAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgICAgICAgaWNvbj0iaGVscC1vdXRsaW5lIgogICAgICAgICAgICAgICAgICB0aXRsZT0iVmlldyBkb2N1bWVudGF0aW9uIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3BhcGVyLXRhYnM+CiAgICAgIDwvcGFwZXItdG9vbGJhcj4KICAgICAgPGlyb24tcGFnZXMgc2VsZWN0ZWQ9IltbX3NlbGVjdGVkVGFiXV0iIGNsYXNzPSJmaXQgdGFiLXZpZXciPgogICAgICAgIDxkaXYgaWQ9IjAiIGNsYXNzPSJ0YWIiPgogICAgICAgICAgPHRmLWhwYXJhbXMtdGFibGUtdmlldwogICAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICAgIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIgogICAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgICAgIGVuYWJsZS1zaG93LW1ldHJpY3MKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtaHBhcmFtcy10YWJsZS12aWV3PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9IjEiIGNsYXNzPSJ0YWIiPgogICAgICAgICAgPHRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXZpZXcKICAgICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgICBjb25maWd1cmF0aW9uPSJbW2NvbmZpZ3VyYXRpb25dXSIKICAgICAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgICAgPgogICAgICAgICAgPC90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy12aWV3PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9IjIiIGNsYXNzPSJ0YWIiPgogICAgICAgICAgPHRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3CiAgICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXZpZXc+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1wYWdlcz4KICAgIDwvcGFwZXItaGVhZGVyLXBhbmVsPgoKICAgIDxzdHlsZT4KICAgICAgLnRhYi12aWV3IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLnRhYi1iYXIgewogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigKICAgICAgICAgIC0tdGItdG9vbGJhci1iYWNrZ3JvdW5kLWNvbG9yLAogICAgICAgICAgdmFyKC0tdGItb3JhbmdlLXN0cm9uZykKICAgICAgICApOwogICAgICB9CiAgICAgIC50YWIgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICBwYXBlci10YWJzIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIC0tcGFwZXItdGFicy1zZWxlY3Rpb24tYmFyLWNvbG9yOiB3aGl0ZTsKICAgICAgICAtLXBhcGVyLXRhYnMtY29udGVudDogewogICAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRmLWhwYXJhbXMtdGFibGUtdmlldyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIC5oZWxwLWFuZC1mZWVkYmFjayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IC8qIEVuc3VyZSB0aGF0IGljb25zIHN0YXkgYWxpZ25lZCAqLwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgIH0KICAgICAgI2J1Zy1yZXBvcnQgewogICAgICAgIGJvcmRlcjogc29saWQgYmxhY2s7CiAgICAgICAgYmFja2dyb3VuZDogcmVkOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZHM7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1heC13aWR0aDogMTUwcHg7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQogICAgICAuaGVscC1hbmQtZmVlZGJhY2sgYSB7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGpmLnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxqZi5wcm90b3R5cGUsImhlbHBVcmwiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0samYucHJvdG90eXBlLCJidWdSZXBvcnRVcmwiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0samYucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqZi5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLGpmLnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcn0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxqZi5wcm90b3R5cGUsIl9zZWxlY3RlZFRhYiIsdm9pZCAwKTtqZj1FKFt5dCgidGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lIildLGpmKTt2YXIgZWg9Y2xhc3MgZXh0ZW5kcyBHdChtdCl7cmVsb2FkKCl7dGhpcy4kWyJxdWVyeS1wYW5lIl0ucmVsb2FkKCl9fTtlaC50ZW1wbGF0ZT1RYAogICAgPGhwYXJhbXMtc3BsaXQtbGF5b3V0PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzaWRlYmFyIj4KICAgICAgICA8dGYtaHBhcmFtcy1xdWVyeS1wYW5lCiAgICAgICAgICBpZD0icXVlcnktcGFuZSIKICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICBjb25maWd1cmF0aW9uPSJ7e19jb25maWd1cmF0aW9ufX0iCiAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0ie3tfc2Vzc2lvbkdyb3Vwc319IgogICAgICAgICAgZGF0YS1sb2FkZWQtd2l0aC1ub24tZW1wdHktaHBhcmFtcz0ie3tfZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXN9fSIKICAgICAgICAgIGRhdGEtbG9hZGVkLXdpdGgtZW1wdHktaHBhcmFtcz0ie3tfZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXN9fSIKICAgICAgICA+CiAgICAgICAgPC90Zi1ocGFyYW1zLXF1ZXJ5LXBhbmU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXNdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gaHBhcmFtcyBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaHBhcmFtcyBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBFdmVudCBmaWxlcyBhcmUgc3RpbGwgYmVpbmcgbG9hZGVkICh0cnkgcmVsb2FkaW5nIHRoaXMgcGFnZSkuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXNdXSI+CiAgICAgICAgICA8dGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lCiAgICAgICAgICAgIGlkPSJzZXNzaW9ucy1wYW5lIgogICAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgICAgaGVscC11cmw9IltbaGVscFVybF1dIgogICAgICAgICAgICBidWctcmVwb3J0LXVybD0iW1tidWdSZXBvcnRVcmxdXSIKICAgICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249IltbX2NvbmZpZ3VyYXRpb25dXSIKICAgICAgICAgICAgc2Vzc2lvbi1ncm91cHM9IltbX3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgaHBhcmFtcy1zcGxpdC1sYXlvdXQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuc2lkZWJhciB7CiAgICAgICAgd2lkdGg6IDIwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIG1pbi13aWR0aDogMTAlOwogICAgICB9CgogICAgICAuY2VudGVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgICAgfQoKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CgogICAgICBhIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItbGluayk7CiAgICAgIH0KCiAgICAgIGE6dmlzaXRlZCB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWxpbmstdmlzaXRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixjMyldLGVoLnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlaC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGVoLnByb3RvdHlwZSwiaGVscFVybCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlaC5wcm90b3R5cGUsImJ1Z1JlcG9ydFVybCIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlaC5wcm90b3R5cGUsIl9jb25maWd1cmF0aW9uIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxlaC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZWgucHJvdG90eXBlLCJfZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXMiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlaC5wcm90b3R5cGUsIl9kYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsdm9pZCAwKTtlaD1FKFt5dCgidGYtaHBhcmFtcy1tYWluIildLGVoKTt2YXIgZWhyPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJ0ZW5zb3Jib2FyZENvbGFiIik9PT0idHJ1ZSIscmhyPSJocGFyYW1zIixvVj1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fYmFja2VuZD1uZXcgYzModmUoKS5wbHVnaW5Sb3V0ZShyaHIsIiIpLG5ldyBBZSxlaHIpfXJlbG9hZCgpe3RoaXMuJFsiaHBhcmFtcy1tYWluIl0ucmVsb2FkKCl9fTtvVi50ZW1wbGF0ZT1RYAogICAgPCEtLSBUZW5zb3JCb2FyZCBkb2VzIG5vdCBzcGVjaWZ5IGFuIGV4cGVyaW1lbnROYW1lLiBDdXJyZW50bHkgaXQgb25seQogICAgICAgICBzdXBwb3J0cyBvbmUgZXhwZXJpbWVudCBwZXIgaW52b2NhdGlvbi4gLS0+CiAgICA8dGYtaHBhcmFtcy1tYWluCiAgICAgIGlkPSJocGFyYW1zLW1haW4iCiAgICAgIGJhY2tlbmQ9IltbX2JhY2tlbmRdXSIKICAgICAgZXhwZXJpbWVudC1uYW1lPSIiCiAgICA+CiAgICA8L3RmLWhwYXJhbXMtbWFpbj4KICBgO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLG9WLnByb3RvdHlwZSwiX2JhY2tlbmQiLHZvaWQgMCk7b1Y9RShbeXQoInRmLWhwYXJhbXMtZGFzaGJvYXJkIildLG9WKTt2YXIgcDE9RWUoT2UoKSwxKTt2YXIgX249Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuYWN0dWFsU2l6ZT0hMSx0aGlzLmJyaWdodG5lc3NBZGp1c3RtZW50PS41LHRoaXMuY29udHJhc3RQZXJjZW50YWdlPTAsdGhpcy5fbWV0YWRhdGFDYW5jZWxsZXI9bmV3IGFuLHRoaXMuX2ltYWdlQ2FuY2VsbGVyPW5ldyBhbix0aGlzLl9zdGVwcz1bXSx0aGlzLl9pc0ltYWdlTG9hZGluZz0hMX1nZXQgX3J1bkNvbG9yKCl7dmFyIHQ9dGhpcy5ydW47cmV0dXJuIGZuKHQpfWdldCBfaGFzQXRMZWFzdE9uZVN0ZXAoKXt2YXIgdD10aGlzLl9zdGVwcztyZXR1cm4hIXQmJnQubGVuZ3RoPjB9Z2V0IF9oYXNNdWx0aXBsZVN0ZXBzKCl7dmFyIHQ9dGhpcy5fc3RlcHM7cmV0dXJuISF0JiZ0Lmxlbmd0aD4xfWdldCBfY3VycmVudFN0ZXAoKXt2YXIgdD10aGlzLl9zdGVwcyxyPXRoaXMuX3N0ZXBJbmRleDtyZXR1cm4gdFtyXXx8bnVsbH1nZXQgX3N0ZXBWYWx1ZSgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwO3JldHVybiB0P3Quc3RlcDowfWdldCBfY3VycmVudFdhbGxUaW1lKCl7dmFyIHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/YTIodC53YWxsX3RpbWUpOiIifWdldCBfbWF4U3RlcEluZGV4KCl7dmFyIHQ9dGhpcy5fc3RlcHM7cmV0dXJuIHQubGVuZ3RoLTF9Z2V0IF9zYW1wbGVUZXh0KCl7dmFyIHQ9dGhpcy5zYW1wbGU7cmV0dXJuYCR7dCsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXt2YXIgdD10aGlzLm9mU2FtcGxlcztyZXR1cm4gdD4xfV9nZXRBcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5hY3R1YWxTaXplPyJ0cnVlIjoiZmFsc2UifWF0dGFjaGVkKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5pc0F0dGFjaGVkKXJldHVybjt0aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxBbGwoKTtsZXQgdD12ZSgpLHI9Q24odC5wbHVnaW5Sb3V0ZSgiaW1hZ2VzIiwiL2ltYWdlcyIpLHt0YWc6dGhpcy50YWcscnVuOnRoaXMucnVuLHNhbXBsZTp0aGlzLnNhbXBsZX0pLG49dGhpcy5fbWV0YWRhdGFDYW5jZWxsZXIuY2FuY2VsbGFibGUoaT0+e2lmKGkuY2FuY2VsbGVkKXJldHVybjtsZXQgYT1pLnZhbHVlLm1hcCh0aGlzLl9jcmVhdGVTdGVwRGF0dW0uYmluZCh0aGlzKSk7dGhpcy5zZXQoIl9zdGVwcyIsYSksdGhpcy5zZXQoIl9zdGVwSW5kZXgiLGEubGVuZ3RoLTEpfSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHIpLnRoZW4obil9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtsZXQgcj12ZSgpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW5kaXZpZHVhbEltYWdlIik7cmV0dXJuIHI9Q24ocix7dHM6dC53YWxsX3RpbWV9KSxyKz0iJiIrdC5xdWVyeSx7d2FsbF90aW1lOm5ldyBEYXRlKHQud2FsbF90aW1lKjFlMyksc3RlcDp0LnN0ZXAsdXJsOnJ9fV91cGRhdGVJbWFnZVVybCgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwLHI9dGhpcy5icmlnaHRuZXNzQWRqdXN0bWVudCxuPXRoaXMuY29udHJhc3RQZXJjZW50YWdlO2lmKCF0KXJldHVybjtsZXQgaT1uZXcgSW1hZ2U7dGhpcy5faW1hZ2VDYW5jZWxsZXIuY2FuY2VsQWxsKCksaS5vbmxvYWQ9aS5vbmVycm9yPXRoaXMuX2ltYWdlQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKG89PntpZihvLmNhbmNlbGxlZClyZXR1cm47bGV0IGE9dGhpcy4kJCgiI21haW4taW1hZ2UtY29udGFpbmVyIik7YSYmKGEudGV4dENvbnRlbnQ9IiIsenQoYSkuYXBwZW5kQ2hpbGQoaSkpLHRoaXMuc2V0KCJfaXNJbWFnZUxvYWRpbmciLCExKX0pLmJpbmQodGhpcyksaS5zdHlsZS5maWx0ZXI9YGNvbnRyYXN0KCR7bn0lKSBgLGkuc3R5bGUuZmlsdGVyKz1gYnJpZ2h0bmVzcygke3J9KWAsdGhpcy5zZXQoIl9pc0ltYWdlTG9hZGluZyIsITApLGkuc3JjPXQudXJsfV9oYW5kbGVUYXAodCl7dGhpcy5zZXQoImFjdHVhbFNpemUiLCF0aGlzLmFjdHVhbFNpemUpfV90b0xvY2FsZVN0cmluZyh0KXtyZXR1cm4gdC50b0xvY2FsZVN0cmluZygpfX07X24udGVtcGxhdGU9UWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXNdXSI+CiAgICAgICAgPGRpdj5zYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIgogICAgICAgICAgICAgID5bW190b0xvY2FsZVN0cmluZyhfc3RlcFZhbHVlKV1dPC9zcGFuCiAgICAgICAgICAgID4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0IGRhdGV0aW1lIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50V2FsbFRpbWVdXSI+CiAgICAgICAgICAgICAgW1tfY3VycmVudFdhbGxUaW1lXV0KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwgcmlnaHQiPgogICAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZSBoaWRkZW4kPSJbWyFfaXNJbWFnZUxvYWRpbmddXSI+CiAgICAgICAgICAgIDwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0ic3RlcHMiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfbWF4U3RlcEluZGV4XV0iCiAgICAgICAgICAgIG1heC1tYXJrZXJzPSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7X3N0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPCEtLSBTZW1hbnRpY2FsbHkgYSBidXR0b24gYnV0IDxpbWc+IGluc2lkZSBhIDxidXR0b24+IGRpc2FsbG93cyB1c2VyIHRvIGRvCiAgICBhbiBpbnRlcmVzdGluZyBvcGVyYXRpb24gbGlrZSAiQ29weSBJbWFnZSIgaW4gbm9uLUNocm9taXVtIGJyb3dzZXJzLiAtLT4KICAgIDxhCiAgICAgIGlkPSJtYWluLWltYWdlLWNvbnRhaW5lciIKICAgICAgcm9sZT0iYnV0dG9uIgogICAgICBhcmlhLWxhYmVsPSJUb2dnbGUgYWN0dWFsIHNpemUiCiAgICAgIGFyaWEtZXhwYW5kZWQkPSJbW19nZXRBcmlhRXhwYW5kZWQoYWN0dWFsU2l6ZSldXSIKICAgICAgb24tdGFwPSJfaGFuZGxlVGFwIgogICAgPjwvYT4KCiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLyoqIE1ha2UgYnV0dG9uIGEgZGl2LiAqLwogICAgICBidXR0b24gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBHZXQgcmlkIG9mIGRvdHRlZCBsaW5lIGluc2lkZSBidXR0b24uICovCiAgICAgIGJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC8qKiBGaXJlZm94OiBTaW11bGF0ZSBDaHJvbWUncyBvdXRlciBnbG93IG9uIGJ1dHRvbiB3aGVuIGZvY3VzZWQuICovCiAgICAgIGJ1dHRvbjotbW96LWZvY3VzcmluZyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDFweCAycHggSGlnaGxpZ2h0OwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAwIDE1cHggNDBweCAwOwogICAgICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qKiBXaGVuIGFjdHVhbCBzaXplIHNob3duIGlzIG9uLCB1c2UgdGhlIGFjdHVhbCBpbWFnZSB3aWR0aC4gKi8KICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgewogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QoW2FjdHVhbC1zaXplXSkgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiBub25lOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSAjbWFpbi1pbWFnZS1jb250YWluZXIgaW1nIHsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgfQoKICAgICAgcGFwZXItc3Bpbm5lci1saXRlIHsKICAgICAgICB3aWR0aDogMTRweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOwogICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgIH0KCiAgICAgICNzdGVwcyB7CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyoKICAgICAgICAgKiAzMSBjb21lcyBmcm9tIGFkZGluZyBhIHBhZGRpbmcgb2YgMTVweCBmcm9tIGJvdGggc2lkZXMgb2YgdGhlCiAgICAgICAgICogcGFwZXItc2xpZGVyLCBzdWJ0cmFjdGluZyAxcHggc28gdGhhdCB0aGUgc2xpZGVyIHdpZHRoIGFsaWducwogICAgICAgICAqIHdpdGggdGhlIGltYWdlICh0aGUgbGFzdCBzbGlkZXIgbWFya2VyIHRha2VzIHVwIDFweCksIGFuZAogICAgICAgICAqIGFkZGluZyAycHggdG8gYWNjb3VudCBmb3IgYSBib3JkZXIgb2YgMXB4IG9uIGJvdGggc2lkZXMgb2YKICAgICAgICAgKiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICAgICAgICovCiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDMxcHgpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQoKICAgICAgI21haW4taW1hZ2UtY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiAxMDI0cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgICNtYWluLWltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7CiAgICAgICAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLF9uLnByb3RvdHlwZSwicnVuIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLF9uLnByb3RvdHlwZSwidGFnIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLF9uLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLF9uLnByb3RvdHlwZSwib2ZTYW1wbGVzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLF9uLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX24ucHJvdG90eXBlLCJhY3R1YWxTaXplIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLF9uLnByb3RvdHlwZSwiYnJpZ2h0bmVzc0FkanVzdG1lbnQiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sX24ucHJvdG90eXBlLCJjb250cmFzdFBlcmNlbnRhZ2UiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsQWUpXSxfbi5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLF9uLnByb3RvdHlwZSwiX21ldGFkYXRhQ2FuY2VsbGVyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLF9uLnByb3RvdHlwZSwiX2ltYWdlQ2FuY2VsbGVyIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sX24ucHJvdG90eXBlLCJfc3RlcHMiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLF9uLnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLF9uLnByb3RvdHlwZSwiX2lzSW1hZ2VMb2FkaW5nIix2b2lkIDApO0UoW1J0KCJydW4iKSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxfbi5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCk7RShbUnQoIl9zdGVwcyIpLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxfbi5wcm90b3R5cGUsIl9oYXNBdExlYXN0T25lU3RlcCIsbnVsbCk7RShbUnQoIl9zdGVwcyIpLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxfbi5wcm90b3R5cGUsIl9oYXNNdWx0aXBsZVN0ZXBzIixudWxsKTtFKFtSdCgiX3N0ZXBzIiwiX3N0ZXBJbmRleCIpLHcoImRlc2lnbjp0eXBlIixPYmplY3QpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLF9uLnByb3RvdHlwZSwiX2N1cnJlbnRTdGVwIixudWxsKTtFKFtSdCgiX2N1cnJlbnRTdGVwIiksdygiZGVzaWduOnR5cGUiLE51bWJlciksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sX24ucHJvdG90eXBlLCJfc3RlcFZhbHVlIixudWxsKTtFKFtSdCgiX2N1cnJlbnRTdGVwIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sX24ucHJvdG90eXBlLCJfY3VycmVudFdhbGxUaW1lIixudWxsKTtFKFtSdCgiX3N0ZXBzIiksdygiZGVzaWduOnR5cGUiLE51bWJlciksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sX24ucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKTtFKFtSdCgic2FtcGxlIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sX24ucHJvdG90eXBlLCJfc2FtcGxlVGV4dCIsbnVsbCk7RShbUnQoIm9mU2FtcGxlcyIpLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxfbi5wcm90b3R5cGUsIl9oYXNNdWx0aXBsZVNhbXBsZXMiLG51bGwpO0UoW0J0KCJydW4iLCJ0YWciKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLF9uLnByb3RvdHlwZSwicmVsb2FkIixudWxsKTtFKFtCdCgiX2N1cnJlbnRTdGVwIiwiYnJpZ2h0bmVzc0FkanVzdG1lbnQiLCJjb250cmFzdFBlcmNlbnRhZ2UiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLF9uLnByb3RvdHlwZSwiX3VwZGF0ZUltYWdlVXJsIixudWxsKTtfbj1FKFt5dCgidGYtaW1hZ2UtbG9hZGVyIildLF9uKTt2YXIgUG89Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnQ9MSx0aGlzLl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlPTEwMCx0aGlzLl9icmlnaHRuZXNzQWRqdXN0bWVudD0xLHRoaXMuX2NvbnRyYXN0UGVyY2VudGFnZT0xMDAsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IEFlfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKT0+e3RoaXMuX3JlbG9hZEltYWdlcygpfSl9X2ZldGNoVGFncygpe2xldCB0PXZlKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57aWYocDEuaXNFcXVhbChyLHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2xldCBuPXAxLm1hcFZhbHVlcyhyLG89Pk9iamVjdC5rZXlzKG8pKSxpPVhpKG4pO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIixpLmxlbmd0aD09PTApLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIixyKSx0aGlzLmFzeW5jKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pfSl9X3JlbG9hZEltYWdlcygpe3ZhciB0Oyh0PXRoaXMucm9vdCk9PT1udWxsfHx0PT09dm9pZCAwfHx0LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWltYWdlLWxvYWRlciIpLmZvckVhY2gocj0+e3IucmVsb2FkKCl9KX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fcmVzZXRCcmlnaHRuZXNzKCl7dGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9dGhpcy5fZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50fV9yZXNldENvbnRyYXN0KCl7dGhpcy5fY29udHJhc3RQZXJjZW50YWdlPXRoaXMuX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2V9Z2V0IF9icmlnaHRuZXNzSXNEZWZhdWx0KCl7dmFyIHQ9dGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ7cmV0dXJuIHQ9PT10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9Z2V0IF9jb250cmFzdElzRGVmYXVsdCgpe3ZhciB0PXRoaXMuX2NvbnRyYXN0UGVyY2VudGFnZTtyZXR1cm4gdD09PXRoaXMuX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2V9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fcnVuVG9UYWdJbmZvLHI9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyLGk9dGhpcy5fY2F0ZWdvcmllc0RvbVJlYWR5O2xldCBvPXAxLm1hcFZhbHVlcyh0LGM9Pk9iamVjdC5rZXlzKGMpKSxhPVpsKG8scixuKTtmdW5jdGlvbiBzKGMpe2xldCB1PXRbYy5ydW5dW2MudGFnXS5zYW1wbGVzO3JldHVybiBwMS5yYW5nZSh1KS5tYXAoaD0+T2JqZWN0LmFzc2lnbih7fSxjLHtzYW1wbGU6aCxvZlNhbXBsZXM6dX0pKX1yZXR1cm4gYS5tYXAoYz0+T2JqZWN0LmFzc2lnbih7fSxjLHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sYy5pdGVtcy5tYXAocykpfSkpfV90YWdNZXRhZGF0YSh0LHIsbil7cmV0dXJuIHRbcl1bbl19fTtQby50ZW1wbGF0ZT1RYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7X2FjdHVhbFNpemV9fSIKICAgICAgICAgICAgICAgID5TaG93IGFjdHVhbCBpbWFnZSBzaXplPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMyBjbGFzcz0idG9vbHRpcC1jb250YWluZXIiPkJyaWdodG5lc3MgYWRqdXN0bWVudDwvaDM+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgICAgbWF4PSIyIgogICAgICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgICAgIHBpbgogICAgICAgICAgICAgICAgc3RlcD0iMC4wMSIKICAgICAgICAgICAgICAgIHZhbHVlPSJ7e19icmlnaHRuZXNzQWRqdXN0bWVudH19IgogICAgICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19icmlnaHRuZXNzQWRqdXN0bWVudH19IgogICAgICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0ieC1idXR0b24iCiAgICAgICAgICAgICAgICBvbi10YXA9Il9yZXNldEJyaWdodG5lc3MiCiAgICAgICAgICAgICAgICBkaXNhYmxlZD0iW1tfYnJpZ2h0bmVzc0lzRGVmYXVsdF1dIgogICAgICAgICAgICAgICAgPlJlc2V0PC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8aDMgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5Db250cmFzdCBhZGp1c3RtZW50PC9oMz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIj4KICAgICAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgICBtYXg9IjUwMCIKICAgICAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgICAgICBwaW4KICAgICAgICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tfY29udHJhc3RQZXJjZW50YWdlfX0iCiAgICAgICAgICAgICAgICBpbW1lZGlhdGUtdmFsdWU9Int7X2NvbnRyYXN0UGVyY2VudGFnZX19IgogICAgICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBjbGFzcz0ieC1idXR0b24iCiAgICAgICAgICAgICAgICBvbi10YXA9Il9yZXNldENvbnRyYXN0IgogICAgICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2NvbnRyYXN0SXNEZWZhdWx0XV0iCiAgICAgICAgICAgICAgICA+UmVzZXQ8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvcgogICAgICAgICAgICBpZD0icnVucy1zZWxlY3RvciIKICAgICAgICAgICAgc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iCiAgICAgICAgICA+PC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGltYWdlIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBpbWFnZSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtaW1hZ2UtbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBzYW1wbGU9IltbaXRlbS5zYW1wbGVdXSIKICAgICAgICAgICAgICAgICAgb2Ytc2FtcGxlcz0iW1tpdGVtLm9mU2FtcGxlc11dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICBhY3R1YWwtc2l6ZT0iW1tfYWN0dWFsU2l6ZV1dIgogICAgICAgICAgICAgICAgICBicmlnaHRuZXNzLWFkanVzdG1lbnQ9IltbX2JyaWdodG5lc3NBZGp1c3RtZW50XV0iCiAgICAgICAgICAgICAgICAgIGNvbnRyYXN0LXBlcmNlbnRhZ2U9IltbX2NvbnRyYXN0UGVyY2VudGFnZV1dIgogICAgICAgICAgICAgICAgPjwvdGYtaW1hZ2UtbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAucmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIHBhcGVyLXNsaWRlciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgcGFwZXItYnV0dG9uIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIH0KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciBwYXBlci1idXR0b25bZGlzYWJsZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnNldDsKICAgICAgfQogICAgICAueC1idXR0b24gewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgIH0KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICAtLXBhcGVyLXNsaWRlci1hY3RpdmUtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1tYXJrZXJzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFBvLnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sUG8ucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLFBvLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFBvLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFBvLnByb3RvdHlwZSwiX2FjdHVhbFNpemUiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUG8ucHJvdG90eXBlLCJfZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50Iix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyfSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLFBvLnByb3RvdHlwZSwiX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2UiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUG8ucHJvdG90eXBlLCJfYnJpZ2h0bmVzc0FkanVzdG1lbnQiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sUG8ucHJvdG90eXBlLCJfY29udHJhc3RQZXJjZW50YWdlIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLFBvLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFBvLnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxQby5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKTtFKFtSdCgiX2JyaWdodG5lc3NBZGp1c3RtZW50IiksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFBvLnByb3RvdHlwZSwiX2JyaWdodG5lc3NJc0RlZmF1bHQiLG51bGwpO0UoW1J0KCJfY29udHJhc3RQZXJjZW50YWdlIiksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFBvLnByb3RvdHlwZSwiX2NvbnRyYXN0SXNEZWZhdWx0IixudWxsKTtFKFtSdCgiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sUG8ucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCk7UG89RShbeXQoInRmLWltYWdlLWRhc2hib2FyZCIpXSxQbyk7dmFyIHN4PUVlKE9lKCksMSk7dmFyIGQxOyhmdW5jdGlvbihlKXtlW2UuQ0FOQ0VMTEVEPTFdPSJDQU5DRUxMRUQifSkoZDF8fChkMT17fSkpO3ZhciBhVjsoZnVuY3Rpb24oZSl7ZVtlLlZFUlRFWD0xXT0iVkVSVEVYIixlW2UuRkFDRT0yXT0iRkFDRSIsZVtlLkNPTE9SPTNdPSJDT0xPUiJ9KShhVnx8KGFWPXt9KSk7dmFyIFVjdDsoZnVuY3Rpb24oZSl7ZS5WRVJURVg9ImZsb2F0MzIiLGUuRkFDRT0iaW50MzIiLGUuQ09MT1I9InVpbnQ4In0pKFVjdHx8KFVjdD17fSkpO3ZhciBDUD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9jYW5jZWxsZXI9bmV3IGFuLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPXR9cmVsb2FkKHQscixuKXtyZXR1cm4gdGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpLHRoaXMuX2ZldGNoTWV0YWRhdGEodCxyLG4pfV9mZXRjaERhdGFCeVN0ZXAodCxyLG4saSxvLGEpe2xldCBzPXZlKCkucGx1Z2luUm91dGUoIm1lc2giLCIvZGF0YSIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnIscnVuOnQsY29udGVudF90eXBlOm4sc2FtcGxlOlN0cmluZyhpKSxzdGVwOlN0cmluZyhvKX0pKSxsPWZ1bmN0aW9uKHUpe2xldCBmPVtdO2ZvcihsZXQgcD0wO3A8dS5sZW5ndGgvMztwKyspe2xldCBkPVtdO2ZvcihsZXQgZz0wO2c8MztnKyspZC5wdXNoKHVbcCozK2ddKTtmLnB1c2goZCl9cmV0dXJuIGZ9LGM9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKHU9PntpZih1LmNhbmNlbGxlZClyZXR1cm4gUHJvbWlzZS5yZWplY3Qoe2NvZGU6ZDEuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk7bGV0IGg9dS52YWx1ZTtzd2l0Y2gobil7Y2FzZSJWRVJURVgiOmEudmVydGljZXM9bChuZXcgRmxvYXQzMkFycmF5KGgpKTticmVhaztjYXNlIkZBQ0UiOmEuZmFjZXM9bChuZXcgSW50MzJBcnJheShoKSk7YnJlYWs7Y2FzZSJDT0xPUiI6YS5jb2xvcnM9bChuZXcgVWludDhBcnJheShoKSk7YnJlYWt9cmV0dXJuIGF9KTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIuZmV0Y2gocyx7bWV0aG9kOiJHRVQiLGhlYWRlcnM6e3Jlc3BvbnNlVHlwZToiYXJyYXlidWZmZXIiLGNvbnRlbnRUeXBlOlVjdFtuXX19KS50aGVuKHU9PnUuYXJyYXlCdWZmZXIoKSkudGhlbihjKX1mZXRjaERhdGEodCxyLG4saSl7bGV0IG89W10sYT1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyhhVikuZm9yRWFjaChzPT57bGV0IGw9MTw8YVZbc107dC5jb21wb25lbnRzJmwmJm8ucHVzaCh0aGlzLl9mZXRjaERhdGFCeVN0ZXAocixuLHMsaSx0LnN0ZXAsYSkpfSksUHJvbWlzZS5hbGwobyl9X2ZldGNoTWV0YWRhdGEodCxyLG4pe3RoaXMuX2NhbmNlbGxlci5jYW5jZWxBbGwoKTtsZXQgaT12ZSgpLnBsdWdpblJvdXRlKCJtZXNoIiwiL21lc2hlcyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnIscnVuOnQsc2FtcGxlOm59KSksbz10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoYT0+YS5jYW5jZWxsZWQ/UHJvbWlzZS5yZWplY3Qoe2NvZGU6ZDEuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk6YS52YWx1ZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLmZldGNoKGkpLnRoZW4oYT0+YS5qc29uKCkpLnRoZW4obykudGhlbih0aGlzLl9wcm9jZXNzTWV0YWRhdGEuYmluZCh0aGlzKSl9X3Byb2Nlc3NNZXRhZGF0YSh0KXtpZighdClyZXR1cm47bGV0IHI9bmV3IE1hcDtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7bGV0IG89dFtpXTtyLmhhcyhvLnN0ZXApfHxyLnNldChvLnN0ZXAsW10pLHIuZ2V0KG8uc3RlcCkucHVzaChvKX1sZXQgbj1bXTtyZXR1cm4gci5mb3JFYWNoKGk9PntsZXQgbz10aGlzLl9jcmVhdGVTdGVwRGF0dW0oaVswXSk7bi5wdXNoKG8pfSksbn1fY3JlYXRlU3RlcERhdHVtKHQpe3JldHVybnt3YWxsX3RpbWU6bmV3IERhdGUodC53YWxsX3RpbWUqMWUzKSxzdGVwOnQuc3RlcCxjb25maWc6dC5jb25maWcsY29udGVudF90eXBlOnQuY29udGVudF90eXBlLGNvbXBvbmVudHM6dC5jb21wb25lbnRzfX19O3ZhciBiTT17fTskcyhiTSx7QUNFU0ZpbG1pY1RvbmVNYXBwaW5nOigpPT5pZmUsQWRkRXF1YXRpb246KCk9Pk0xLEFkZE9wZXJhdGlvbjooKT0+dGZlLEFkZGl0aXZlQW5pbWF0aW9uQmxlbmRNb2RlOigpPT5MaHQsQWRkaXRpdmVCbGVuZGluZzooKT0+U3V0LEFscGhhRm9ybWF0OigpPT5oZmUsQWx3YXlzRGVwdGg6KCk9PmpoZSxBbHdheXNTdGVuY2lsRnVuYzooKT0+Q2ZlLEFtYmllbnRMaWdodDooKT0+QTYsQW1iaWVudExpZ2h0UHJvYmU6KCk9Pk5VLEFuaW1hdGlvbkNsaXA6KCk9PlExLEFuaW1hdGlvbkxvYWRlcjooKT0+aWh0LEFuaW1hdGlvbk1peGVyOigpPT5GVSxBbmltYXRpb25PYmplY3RHcm91cDooKT0+elUsQW5pbWF0aW9uVXRpbHM6KCk9PmpuLEFyY0N1cnZlOigpPT5vNixBcnJheUNhbWVyYTooKT0+dDYsQXJyb3dIZWxwZXI6KCk9PlNodCxBdWRpbzooKT0+azYsQXVkaW9BbmFseXNlcjooKT0+RFUsQXVkaW9Db250ZXh0OigpPT5PaHQsQXVkaW9MaXN0ZW5lcjooKT0+bGh0LEF1ZGlvTG9hZGVyOigpPT5rVSxBeGVzSGVscGVyOigpPT55TSxBeGlzSGVscGVyOigpPT5CMHIsQmFja1NpZGU6KCk9PklpLEJhc2ljRGVwdGhQYWNraW5nOigpPT5NZmUsQmFzaWNTaGFkb3dNYXA6KCk9PmlocixCaW5hcnlUZXh0dXJlTG9hZGVyOigpPT5HMHIsQm9uZTooKT0+YU0sQm9vbGVhbktleWZyYW1lVHJhY2s6KCk9PmFtLEJvdW5kaW5nQm94SGVscGVyOigpPT5IMHIsQm94MjooKT0+JDAsQm94MzooKT0+UW8sQm94M0hlbHBlcjooKT0+Ymh0LEJveEJ1ZmZlckdlb21ldHJ5OigpPT5KZixCb3hHZW9tZXRyeTooKT0+SmYsQm94SGVscGVyOigpPT5fTSxCdWZmZXJBdHRyaWJ1dGU6KCk9PkplLEJ1ZmZlckdlb21ldHJ5OigpPT5QZSxCdWZmZXJHZW9tZXRyeUxvYWRlcjooKT0+SVUsQnl0ZVR5cGU6KCk9PmFmZSxDYWNoZTooKT0+dHgsQ2FtZXJhOigpPT5SMSxDYW1lcmFIZWxwZXI6KCk9PnhodCxDYW52YXNSZW5kZXJlcjooKT0+WTByLENhbnZhc1RleHR1cmU6KCk9Pl9VLENhdG11bGxSb21DdXJ2ZTM6KCk9PmE2LENpbmVvblRvbmVNYXBwaW5nOigpPT5uZmUsQ2lyY2xlQnVmZmVyR2VvbWV0cnk6KCk9PkYxLENpcmNsZUdlb21ldHJ5OigpPT5GMSxDbGFtcFRvRWRnZVdyYXBwaW5nOigpPT5abyxDbG9jazooKT0+ZE0sQ29sb3I6KCk9Pm5lLENvbG9yS2V5ZnJhbWVUcmFjazooKT0+YjYsQ29tcHJlc3NlZFRleHR1cmU6KCk9Pm42LENvbXByZXNzZWRUZXh0dXJlTG9hZGVyOigpPT5vaHQsQ29uZUJ1ZmZlckdlb21ldHJ5OigpPT5CMSxDb25lR2VvbWV0cnk6KCk9PkIxLEN1YmVDYW1lcmE6KCk9PlozLEN1YmVSZWZsZWN0aW9uTWFwcGluZzooKT0+bngsQ3ViZVJlZnJhY3Rpb25NYXBwaW5nOigpPT5peCxDdWJlVGV4dHVyZTooKT0+SDAsQ3ViZVRleHR1cmVMb2FkZXI6KCk9PlNVLEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nOigpPT52TSxDdWJlVVZSZWZyYWN0aW9uTWFwcGluZzooKT0+TjYsQ3ViaWNCZXppZXJDdXJ2ZTooKT0+bE0sQ3ViaWNCZXppZXJDdXJ2ZTM6KCk9PnM2LEN1YmljSW50ZXJwb2xhbnQ6KCk9PnhVLEN1bGxGYWNlQmFjazooKT0+d3V0LEN1bGxGYWNlRnJvbnQ6KCk9PmtoZSxDdWxsRmFjZUZyb250QmFjazooKT0+bmhyLEN1bGxGYWNlTm9uZTooKT0+TGhlLEN1cnZlOigpPT5ocyxDdXJ2ZVBhdGg6KCk9PnZVLEN1c3RvbUJsZW5kaW5nOigpPT5OaGUsQ3VzdG9tVG9uZU1hcHBpbmc6KCk9Pm9mZSxDeWxpbmRlckJ1ZmZlckdlb21ldHJ5OigpPT5vbSxDeWxpbmRlckdlb21ldHJ5OigpPT5vbSxDeWxpbmRyaWNhbDooKT0+ZGh0LERhdGFUZXh0dXJlOigpPT5KZCxEYXRhVGV4dHVyZTJEQXJyYXk6KCk9PlEzLERhdGFUZXh0dXJlM0Q6KCk9PlFQLERhdGFUZXh0dXJlTG9hZGVyOigpPT5NVSxEYXRhVXRpbHM6KCk9PkVodCxEZWNyZW1lbnRTdGVuY2lsT3A6KCk9Pm1ocixEZWNyZW1lbnRXcmFwU3RlbmNpbE9wOigpPT5faHIsRGVmYXVsdExvYWRpbmdNYW5hZ2VyOigpPT4kZmUsRGVwdGhGb3JtYXQ6KCk9PnowLERlcHRoU3RlbmNpbEZvcm1hdDooKT0+azEsRGVwdGhUZXh0dXJlOigpPT5yTSxEaXJlY3Rpb25hbExpZ2h0OigpPT5DNixEaXJlY3Rpb25hbExpZ2h0SGVscGVyOigpPT52aHQsRGlzY3JldGVJbnRlcnBvbGFudDooKT0+YlUsRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk6KCk9PkgxLERvZGVjYWhlZHJvbkdlb21ldHJ5OigpPT5IMSxEb3VibGVTaWRlOigpPT5MMSxEc3RBbHBoYUZhY3RvcjooKT0+VmhlLERzdENvbG9yRmFjdG9yOigpPT5xaGUsRHluYW1pY0J1ZmZlckF0dHJpYnV0ZTooKT0+UDByLER5bmFtaWNDb3B5VXNhZ2U6KCk9PkxocixEeW5hbWljRHJhd1VzYWdlOigpPT5XMyxEeW5hbWljUmVhZFVzYWdlOigpPT5BaHIsRWRnZXNHZW9tZXRyeTooKT0+aTYsRWRnZXNIZWxwZXI6KCk9PlYwcixFbGxpcHNlQ3VydmU6KCk9PlYxLEVxdWFsRGVwdGg6KCk9PiRoZSxFcXVhbFN0ZW5jaWxGdW5jOigpPT5iaHIsRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc6KCk9PnFQLEVxdWlyZWN0YW5ndWxhclJlZnJhY3Rpb25NYXBwaW5nOigpPT5HUCxFdWxlcjooKT0+dG0sRXZlbnREaXNwYXRjaGVyOigpPT5WcyxFeHRydWRlQnVmZmVyR2VvbWV0cnk6KCk9PnVoLEV4dHJ1ZGVHZW9tZXRyeTooKT0+dWgsRmFjZUNvbG9yczooKT0+eTByLEZpbGVMb2FkZXI6KCk9PktjLEZsYXRTaGFkaW5nOigpPT5DaHQsRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZTooKT0+aFUsRmxvYXQzMkF0dHJpYnV0ZTooKT0+ejByLEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU6KCk9PnhlLEZsb2F0NjRBdHRyaWJ1dGU6KCk9PkYwcixGbG9hdDY0QnVmZmVyQXR0cmlidXRlOigpPT5mVSxGbG9hdFR5cGU6KCk9PmpkLEZvZzooKT0+ejEsRm9nRXhwMjooKT0+TzEsRm9udDooKT0+UTByLEZvbnRMb2FkZXI6KCk9PkowcixGcmFtZWJ1ZmZlclRleHR1cmU6KCk9PmdVLEZyb250U2lkZTooKT0+STEsRnJ1c3R1bTooKT0+TjEsR0xCdWZmZXJBdHRyaWJ1dGU6KCk9PkhVLEdMU0wxOigpPT5SaHIsR0xTTDM6KCk9PiR1dCxHcmVhdGVyRGVwdGg6KCk9PlpoZSxHcmVhdGVyRXF1YWxEZXB0aDooKT0+S2hlLEdyZWF0ZXJFcXVhbFN0ZW5jaWxGdW5jOigpPT5FaHIsR3JlYXRlclN0ZW5jaWxGdW5jOigpPT5TaHIsR3JpZEhlbHBlcjooKT0+cVUsR3JvdXA6KCk9PlhkLEhhbGZGbG9hdFR5cGU6KCk9PkMxLEhlbWlzcGhlcmVMaWdodDooKT0+UzYsSGVtaXNwaGVyZUxpZ2h0SGVscGVyOigpPT5faHQsSGVtaXNwaGVyZUxpZ2h0UHJvYmU6KCk9PlJVLEljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnk6KCk9PkcxLEljb3NhaGVkcm9uR2VvbWV0cnk6KCk9PkcxLEltYWdlQml0bWFwTG9hZGVyOigpPT5MVSxJbWFnZUxvYWRlcjooKT0+ZXgsSW1hZ2VVdGlsczooKT0+JGYsSW1tZWRpYXRlUmVuZGVyT2JqZWN0OigpPT50X3IsSW5jcmVtZW50U3RlbmNpbE9wOigpPT5kaHIsSW5jcmVtZW50V3JhcFN0ZW5jaWxPcDooKT0+Z2hyLEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTooKT0+cm0sSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk6KCk9Pkw2LEluc3RhbmNlZEludGVybGVhdmVkQnVmZmVyOigpPT5CVSxJbnN0YW5jZWRNZXNoOigpPT5lNixJbnQxNkF0dHJpYnV0ZTooKT0+UjByLEludDE2QnVmZmVyQXR0cmlidXRlOigpPT5jVSxJbnQzMkF0dHJpYnV0ZTooKT0+RDByLEludDMyQnVmZmVyQXR0cmlidXRlOigpPT51VSxJbnQ4QXR0cmlidXRlOigpPT5JMHIsSW50OEJ1ZmZlckF0dHJpYnV0ZTooKT0+YVUsSW50VHlwZTooKT0+bGZlLEludGVybGVhdmVkQnVmZmVyOigpPT5lbSxJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZTooKT0+UWYsSW50ZXJwb2xhbnQ6KCk9PmhoLEludGVycG9sYXRlRGlzY3JldGU6KCk9PmpQLEludGVycG9sYXRlTGluZWFyOigpPT5YUCxJbnRlcnBvbGF0ZVNtb290aDooKT0+UVYsSW52ZXJ0U3RlbmNpbE9wOigpPT55aHIsSlNPTkxvYWRlcjooKT0+ajByLEtlZXBTdGVuY2lsT3A6KCk9PnRVLEtleWZyYW1lVHJhY2s6KCk9Pk5sLExPRDooKT0+ZFUsTGF0aGVCdWZmZXJHZW9tZXRyeTooKT0+VzEsTGF0aGVHZW9tZXRyeTooKT0+VzEsTGF5ZXJzOigpPT5qMyxMZW5zRmxhcmU6KCk9PiQwcixMZXNzRGVwdGg6KCk9PlhoZSxMZXNzRXF1YWxEZXB0aDooKT0+ZVUsTGVzc0VxdWFsU3RlbmNpbEZ1bmM6KCk9PndocixMZXNzU3RlbmNpbEZ1bmM6KCk9PnhocixMaWdodDooKT0+RGwsTGlnaHRQcm9iZTooKT0+cngsTGluZTooKT0+bGgsTGluZTM6KCk9PlZVLExpbmVCYXNpY01hdGVyaWFsOigpPT5xaSxMaW5lQ3VydmU6KCk9PlUxLExpbmVDdXJ2ZTM6KCk9PnlVLExpbmVEYXNoZWRNYXRlcmlhbDooKT0+djYsTGluZUxvb3A6KCk9PnI2LExpbmVQaWVjZXM6KCk9PmcwcixMaW5lU2VnbWVudHM6KCk9PkNhLExpbmVTdHJpcDooKT0+bTByLExpbmVhckVuY29kaW5nOigpPT5RZCxMaW5lYXJGaWx0ZXI6KCk9Pm9pLExpbmVhckludGVycG9sYW50OigpPT54NixMaW5lYXJNaXBNYXBMaW5lYXJGaWx0ZXI6KCk9PmNocixMaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyOigpPT5saHIsTGluZWFyTWlwbWFwTGluZWFyRmlsdGVyOigpPT5veCxMaW5lYXJNaXBtYXBOZWFyZXN0RmlsdGVyOigpPT5JaHQsTGluZWFyVG9uZU1hcHBpbmc6KCk9PmVmZSxMb2FkZXI6KCk9PnRhLExvYWRlclV0aWxzOigpPT5wTSxMb2FkaW5nTWFuYWdlcjooKT0+dzYsTG9vcE9uY2U6KCk9PnhmZSxMb29wUGluZ1Bvbmc6KCk9PndmZSxMb29wUmVwZWF0OigpPT5iZmUsTHVtaW5hbmNlQWxwaGFGb3JtYXQ6KCk9PnBmZSxMdW1pbmFuY2VGb3JtYXQ6KCk9PmZmZSxNT1VTRTooKT0+SzAsTWF0ZXJpYWw6KCk9PlVpLE1hdGVyaWFsTG9hZGVyOigpPT5QVSxNYXRoOigpPT5qaHIsTWF0aFV0aWxzOigpPT5qaHIsTWF0cml4MzooKT0+a2ksTWF0cml4NDooKT0+TWUsTWF4RXF1YXRpb246KCk9PkN1dCxNZXNoOigpPT5laSxNZXNoQmFzaWNNYXRlcmlhbDooKT0+YWgsTWVzaERlcHRoTWF0ZXJpYWw6KCk9PnRNLE1lc2hEaXN0YW5jZU1hdGVyaWFsOigpPT5lTSxNZXNoRmFjZU1hdGVyaWFsOigpPT54MHIsTWVzaExhbWJlcnRNYXRlcmlhbDooKT0+XzYsTWVzaE1hdGNhcE1hdGVyaWFsOigpPT55NixNZXNoTm9ybWFsTWF0ZXJpYWw6KCk9Pmc2LE1lc2hQaG9uZ01hdGVyaWFsOigpPT5kNixNZXNoUGh5c2ljYWxNYXRlcmlhbDooKT0+cDYsTWVzaFN0YW5kYXJkTWF0ZXJpYWw6KCk9PmZNLE1lc2hUb29uTWF0ZXJpYWw6KCk9Pm02LE1pbkVxdWF0aW9uOigpPT5UdXQsTWlycm9yZWRSZXBlYXRXcmFwcGluZzooKT0+WVAsTWl4T3BlcmF0aW9uOigpPT5RaGUsTXVsdGlNYXRlcmlhbDooKT0+YjByLE11bHRpcGx5QmxlbmRpbmc6KCk9PkV1dCxNdWx0aXBseU9wZXJhdGlvbjooKT0+UjYsTmVhcmVzdEZpbHRlcjooKT0+TGksTmVhcmVzdE1pcE1hcExpbmVhckZpbHRlcjooKT0+c2hyLE5lYXJlc3RNaXBNYXBOZWFyZXN0RmlsdGVyOigpPT5haHIsTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcjooKT0+blUsTmVhcmVzdE1pcG1hcE5lYXJlc3RGaWx0ZXI6KCk9PnJVLE5ldmVyRGVwdGg6KCk9PlloZSxOZXZlclN0ZW5jaWxGdW5jOigpPT52aHIsTm9CbGVuZGluZzooKT0+JGQsTm9Db2xvcnM6KCk9Pl8wcixOb1RvbmVNYXBwaW5nOigpPT5LZCxOb3JtYWxBbmltYXRpb25CbGVuZE1vZGU6KCk9PllVLE5vcm1hbEJsZW5kaW5nOigpPT5IMyxOb3RFcXVhbERlcHRoOigpPT5KaGUsTm90RXF1YWxTdGVuY2lsRnVuYzooKT0+TWhyLE51bWJlcktleWZyYW1lVHJhY2s6KCk9PloxLE9iamVjdDNEOigpPT5vcixPYmplY3RMb2FkZXI6KCk9PmFodCxPYmplY3RTcGFjZU5vcm1hbE1hcDooKT0+VGZlLE9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeTooKT0+VzAsT2N0YWhlZHJvbkdlb21ldHJ5OigpPT5XMCxPbmVGYWN0b3I6KCk9PkZoZSxPbmVNaW51c0RzdEFscGhhRmFjdG9yOigpPT5VaGUsT25lTWludXNEc3RDb2xvckZhY3RvcjooKT0+R2hlLE9uZU1pbnVzU3JjQWxwaGFGYWN0b3I6KCk9PlBodCxPbmVNaW51c1NyY0NvbG9yRmFjdG9yOigpPT5IaGUsT3J0aG9ncmFwaGljQ2FtZXJhOigpPT5EMSxQQ0ZTaGFkb3dNYXA6KCk9PlRodCxQQ0ZTb2Z0U2hhZG93TWFwOigpPT5SaGUsUE1SRU1HZW5lcmF0b3I6KCk9PkpQLFBhcmFtZXRyaWNHZW9tZXRyeTooKT0+SzByLFBhcnRpY2xlOigpPT5TMHIsUGFydGljbGVCYXNpY01hdGVyaWFsOigpPT5UMHIsUGFydGljbGVTeXN0ZW06KCk9Pk0wcixQYXJ0aWNsZVN5c3RlbU1hdGVyaWFsOigpPT5DMHIsUGF0aDooKT0+cTEsUGVyc3BlY3RpdmVDYW1lcmE6KCk9PlZpLFBsYW5lOigpPT5qYyxQbGFuZUJ1ZmZlckdlb21ldHJ5OigpPT5WMCxQbGFuZUdlb21ldHJ5OigpPT5WMCxQbGFuZUhlbHBlcjooKT0+d2h0LFBvaW50Q2xvdWQ6KCk9PncwcixQb2ludENsb3VkTWF0ZXJpYWw6KCk9PkUwcixQb2ludExpZ2h0OigpPT5UNixQb2ludExpZ2h0SGVscGVyOigpPT5naHQsUG9pbnRzOigpPT5pbSxQb2ludHNNYXRlcmlhbDooKT0+bm0sUG9sYXJHcmlkSGVscGVyOigpPT55aHQsUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OigpPT5jaCxQb2x5aGVkcm9uR2VvbWV0cnk6KCk9PmNoLFBvc2l0aW9uYWxBdWRpbzooKT0+Y2h0LFByb3BlcnR5QmluZGluZzooKT0+Q3IsUHJvcGVydHlNaXhlcjooKT0+T1UsUXVhZHJhdGljQmV6aWVyQ3VydmU6KCk9PmNNLFF1YWRyYXRpY0JlemllckN1cnZlMzooKT0+dU0sUXVhdGVybmlvbjooKT0+dmksUXVhdGVybmlvbktleWZyYW1lVHJhY2s6KCk9PlgwLFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudDooKT0+d1UsUkVWSVNJT046KCk9PkdVLFJHQkFEZXB0aFBhY2tpbmc6KCk9PkVmZSxSR0JBRm9ybWF0OigpPT5KbyxSR0JBSW50ZWdlckZvcm1hdDooKT0+eWZlLFJHQkFfQVNUQ18xMHgxMF9Gb3JtYXQ6KCk9Pld1dCxSR0JBX0FTVENfMTB4NV9Gb3JtYXQ6KCk9PlV1dCxSR0JBX0FTVENfMTB4Nl9Gb3JtYXQ6KCk9PnF1dCxSR0JBX0FTVENfMTB4OF9Gb3JtYXQ6KCk9Pkd1dCxSR0JBX0FTVENfMTJ4MTBfRm9ybWF0OigpPT5ZdXQsUkdCQV9BU1RDXzEyeDEyX0Zvcm1hdDooKT0+anV0LFJHQkFfQVNUQ180eDRfRm9ybWF0OigpPT5OdXQsUkdCQV9BU1RDXzV4NF9Gb3JtYXQ6KCk9PkR1dCxSR0JBX0FTVENfNXg1X0Zvcm1hdDooKT0+T3V0LFJHQkFfQVNUQ182eDVfRm9ybWF0OigpPT56dXQsUkdCQV9BU1RDXzZ4Nl9Gb3JtYXQ6KCk9PkZ1dCxSR0JBX0FTVENfOHg1X0Zvcm1hdDooKT0+QnV0LFJHQkFfQVNUQ184eDZfRm9ybWF0OigpPT5IdXQsUkdCQV9BU1RDXzh4OF9Gb3JtYXQ6KCk9PlZ1dCxSR0JBX0JQVENfRm9ybWF0OigpPT5YdXQsUkdCQV9FVEMyX0VBQ19Gb3JtYXQ6KCk9PlJ1dCxSR0JBX1BWUlRDXzJCUFBWMV9Gb3JtYXQ6KCk9Pkx1dCxSR0JBX1BWUlRDXzRCUFBWMV9Gb3JtYXQ6KCk9Pkl1dCxSR0JBX1MzVENfRFhUMV9Gb3JtYXQ6KCk9PktWLFJHQkFfUzNUQ19EWFQzX0Zvcm1hdDooKT0+WlYsUkdCQV9TM1RDX0RYVDVfRm9ybWF0OigpPT5KVixSR0JfRVRDMV9Gb3JtYXQ6KCk9PnZmZSxSR0JfRVRDMl9Gb3JtYXQ6KCk9Pmt1dCxSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdDooKT0+UHV0LFJHQl9QVlJUQ180QlBQVjFfRm9ybWF0OigpPT5BdXQsUkdCX1MzVENfRFhUMV9Gb3JtYXQ6KCk9PiRWLFJHRm9ybWF0OigpPT5nZmUsUkdJbnRlZ2VyRm9ybWF0OigpPT5fZmUsUmF3U2hhZGVyTWF0ZXJpYWw6KCk9PlUwLFJheTooKT0+WmYsUmF5Y2FzdGVyOigpPT5maHQsUmVjdEFyZWFMaWdodDooKT0+UDYsUmVkRm9ybWF0OigpPT5kZmUsUmVkSW50ZWdlckZvcm1hdDooKT0+bWZlLFJlaW5oYXJkVG9uZU1hcHBpbmc6KCk9PnJmZSxSZXBlYXRXcmFwcGluZzooKT0+V1AsUmVwbGFjZVN0ZW5jaWxPcDooKT0+cGhyLFJldmVyc2VTdWJ0cmFjdEVxdWF0aW9uOigpPT5PaGUsUmluZ0J1ZmZlckdlb21ldHJ5OigpPT5ZMSxSaW5nR2VvbWV0cnk6KCk9PlkxLFNjZW5lOigpPT5xMCxTY2VuZVV0aWxzOigpPT5YMHIsU2hhZGVyQ2h1bms6KCk9PmhyLFNoYWRlckxpYjooKT0+b2gsU2hhZGVyTWF0ZXJpYWw6KCk9PnNoLFNoYWRvd01hdGVyaWFsOigpPT5mNixTaGFwZTooKT0+WGMsU2hhcGVCdWZmZXJHZW9tZXRyeTooKT0+WTAsU2hhcGVHZW9tZXRyeTooKT0+WTAsU2hhcGVQYXRoOigpPT5NaHQsU2hhcGVVdGlsczooKT0+JGMsU2hvcnRUeXBlOigpPT5zZmUsU2tlbGV0b246KCk9PnNNLFNrZWxldG9uSGVscGVyOigpPT5VVSxTa2lubmVkTWVzaDooKT0+b00sU21vb3RoU2hhZGluZzooKT0+b2hyLFNwaGVyZTooKT0+S2YsU3BoZXJlQnVmZmVyR2VvbWV0cnk6KCk9PmowLFNwaGVyZUdlb21ldHJ5OigpPT5qMCxTcGhlcmljYWw6KCk9PmdNLFNwaGVyaWNhbEhhcm1vbmljczM6KCk9Pkk2LFNwbGluZUN1cnZlOigpPT5oTSxTcG90TGlnaHQ6KCk9PkU2LFNwb3RMaWdodEhlbHBlcjooKT0+bWh0LFNwcml0ZTooKT0+aU0sU3ByaXRlTWF0ZXJpYWw6KCk9Pm5NLFNyY0FscGhhRmFjdG9yOigpPT5BaHQsU3JjQWxwaGFTYXR1cmF0ZUZhY3RvcjooKT0+V2hlLFNyY0NvbG9yRmFjdG9yOigpPT5CaGUsU3RhdGljQ29weVVzYWdlOigpPT5JaHIsU3RhdGljRHJhd1VzYWdlOigpPT5HMyxTdGF0aWNSZWFkVXNhZ2U6KCk9PkNocixTdGVyZW9DYW1lcmE6KCk9PnNodCxTdHJlYW1Db3B5VXNhZ2U6KCk9PmtocixTdHJlYW1EcmF3VXNhZ2U6KCk9PlRocixTdHJlYW1SZWFkVXNhZ2U6KCk9PlBocixTdHJpbmdLZXlmcmFtZVRyYWNrOigpPT5zbSxTdWJ0cmFjdEVxdWF0aW9uOigpPT5EaGUsU3VidHJhY3RpdmVCbGVuZGluZzooKT0+TXV0LFRPVUNIOigpPT5aMCxUYW5nZW50U3BhY2VOb3JtYWxNYXA6KCk9PmF4LFRldHJhaGVkcm9uQnVmZmVyR2VvbWV0cnk6KCk9PmoxLFRldHJhaGVkcm9uR2VvbWV0cnk6KCk9PmoxLFRleHRHZW9tZXRyeTooKT0+WjByLFRleHR1cmU6KCk9PnhpLFRleHR1cmVMb2FkZXI6KCk9PkVVLFRvcnVzQnVmZmVyR2VvbWV0cnk6KCk9PlgxLFRvcnVzR2VvbWV0cnk6KCk9PlgxLFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5OigpPT4kMSxUb3J1c0tub3RHZW9tZXRyeTooKT0+JDEsVHJpYW5nbGU6KCk9PmFpLFRyaWFuZ2xlRmFuRHJhd01vZGU6KCk9PmhocixUcmlhbmdsZVN0cmlwRHJhd01vZGU6KCk9PnVocixUcmlhbmdsZXNEcmF3TW9kZTooKT0+U2ZlLFR1YmVCdWZmZXJHZW9tZXRyeTooKT0+SzEsVHViZUdlb21ldHJ5OigpPT5LMSxVVk1hcHBpbmc6KCk9PldVLFVpbnQxNkF0dHJpYnV0ZTooKT0+TjByLFVpbnQxNkJ1ZmZlckF0dHJpYnV0ZTooKT0+WDMsVWludDMyQXR0cmlidXRlOigpPT5PMHIsVWludDMyQnVmZmVyQXR0cmlidXRlOigpPT4kMyxVaW50OEF0dHJpYnV0ZTooKT0+TDByLFVpbnQ4QnVmZmVyQXR0cmlidXRlOigpPT5zVSxVaW50OENsYW1wZWRBdHRyaWJ1dGU6KCk9PmswcixVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU6KCk9PmxVLFVuaWZvcm06KCk9Pm1NLFVuaWZvcm1zTGliOigpPT5yZSxVbmlmb3Jtc1V0aWxzOigpPT5rZmUsVW5zaWduZWRCeXRlVHlwZTooKT0+WmQsVW5zaWduZWRJbnQyNDhUeXBlOigpPT5BMSxVbnNpZ25lZEludFR5cGU6KCk9PkZQLFVuc2lnbmVkU2hvcnQ0NDQ0VHlwZTooKT0+Y2ZlLFVuc2lnbmVkU2hvcnQ1NTUxVHlwZTooKT0+dWZlLFVuc2lnbmVkU2hvcnRUeXBlOigpPT5xMyxWU01TaGFkb3dNYXA6KCk9PnozLFZlY3RvcjI6KCk9Pkx0LFZlY3RvcjM6KCk9PmosVmVjdG9yNDooKT0+ZW4sVmVjdG9yS2V5ZnJhbWVUcmFjazooKT0+SjEsVmVydGV4OigpPT5BMHIsVmVydGV4Q29sb3JzOigpPT52MHIsVmlkZW9UZXh0dXJlOigpPT5tVSxXZWJHTDFSZW5kZXJlcjooKT0+cFUsV2ViR0xDdWJlUmVuZGVyVGFyZ2V0OigpPT5KMyxXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0czooKT0+b1UsV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldDooKT0+WTMsV2ViR0xSZW5kZXJUYXJnZXQ6KCk9PmNzLFdlYkdMUmVuZGVyVGFyZ2V0Q3ViZTooKT0+VzByLFdlYkdMUmVuZGVyZXI6KCk9PnJuLFdlYkdMVXRpbHM6KCk9PkdmZSxXaXJlZnJhbWVHZW9tZXRyeTooKT0+aDYsV2lyZWZyYW1lSGVscGVyOigpPT5VMHIsV3JhcEFyb3VuZEVuZGluZzooKT0+JFAsWEhSTG9hZGVyOigpPT5xMHIsWmVyb0N1cnZhdHVyZUVuZGluZzooKT0+RTEsWmVyb0ZhY3RvcjooKT0+emhlLFplcm9TbG9wZUVuZGluZzooKT0+VDEsWmVyb1N0ZW5jaWxPcDooKT0+ZmhyLF9TUkdCQUZvcm1hdDooKT0+aVUsc1JHQkVuY29kaW5nOigpPT5Zbn0pO3ZhciBHVT0iMTM3IixLMD17TEVGVDowLE1JRERMRToxLFJJR0hUOjIsUk9UQVRFOjAsRE9MTFk6MSxQQU46Mn0sWjA9e1JPVEFURTowLFBBTjoxLERPTExZX1BBTjoyLERPTExZX1JPVEFURTozfSxMaGU9MCx3dXQ9MSxraGU9MixuaHI9MyxpaHI9MCxUaHQ9MSxSaGU9Mix6Mz0zLEkxPTAsSWk9MSxMMT0yLENodD0xLG9ocj0yLCRkPTAsSDM9MSxTdXQ9MixNdXQ9MyxFdXQ9NCxOaGU9NSxNMT0xMDAsRGhlPTEwMSxPaGU9MTAyLFR1dD0xMDMsQ3V0PTEwNCx6aGU9MjAwLEZoZT0yMDEsQmhlPTIwMixIaGU9MjAzLEFodD0yMDQsUGh0PTIwNSxWaGU9MjA2LFVoZT0yMDcscWhlPTIwOCxHaGU9MjA5LFdoZT0yMTAsWWhlPTAsamhlPTEsWGhlPTIsZVU9MywkaGU9NCxLaGU9NSxaaGU9NixKaGU9NyxSNj0wLFFoZT0xLHRmZT0yLEtkPTAsZWZlPTEscmZlPTIsbmZlPTMsaWZlPTQsb2ZlPTUsV1U9MzAwLG54PTMwMSxpeD0zMDIscVA9MzAzLEdQPTMwNCx2TT0zMDYsTjY9MzA3LFdQPTFlMyxabz0xMDAxLFlQPTEwMDIsTGk9MTAwMyxyVT0xMDA0LGFocj0xMDA0LG5VPTEwMDUsc2hyPTEwMDUsb2k9MTAwNixJaHQ9MTAwNyxsaHI9MTAwNyxveD0xMDA4LGNocj0xMDA4LFpkPTEwMDksYWZlPTEwMTAsc2ZlPTEwMTEscTM9MTAxMixsZmU9MTAxMyxGUD0xMDE0LGpkPTEwMTUsQzE9MTAxNixjZmU9MTAxNyx1ZmU9MTAxOCxBMT0xMDIwLGhmZT0xMDIxLEpvPTEwMjMsZmZlPTEwMjQscGZlPTEwMjUsejA9MTAyNixrMT0xMDI3LGRmZT0xMDI4LG1mZT0xMDI5LGdmZT0xMDMwLF9mZT0xMDMxLHlmZT0xMDMzLCRWPTMzNzc2LEtWPTMzNzc3LFpWPTMzNzc4LEpWPTMzNzc5LEF1dD0zNTg0MCxQdXQ9MzU4NDEsSXV0PTM1ODQyLEx1dD0zNTg0Myx2ZmU9MzYxOTYsa3V0PTM3NDkyLFJ1dD0zNzQ5NixOdXQ9Mzc4MDgsRHV0PTM3ODA5LE91dD0zNzgxMCx6dXQ9Mzc4MTEsRnV0PTM3ODEyLEJ1dD0zNzgxMyxIdXQ9Mzc4MTQsVnV0PTM3ODE1LFV1dD0zNzgxNixxdXQ9Mzc4MTcsR3V0PTM3ODE4LFd1dD0zNzgxOSxZdXQ9Mzc4MjAsanV0PTM3ODIxLFh1dD0zNjQ5Mix4ZmU9MjIwMCxiZmU9MjIwMSx3ZmU9MjIwMixqUD0yMzAwLFhQPTIzMDEsUVY9MjMwMixFMT0yNDAwLFQxPTI0MDEsJFA9MjQwMixZVT0yNTAwLExodD0yNTAxLFNmZT0wLHVocj0xLGhocj0yLFFkPTNlMyxZbj0zMDAxLE1mZT0zMjAwLEVmZT0zMjAxLGF4PTAsVGZlPTEsZmhyPTAsdFU9NzY4MCxwaHI9NzY4MSxkaHI9NzY4MixtaHI9NzY4MyxnaHI9MzQwNTUsX2hyPTM0MDU2LHlocj01Mzg2LHZocj01MTIseGhyPTUxMyxiaHI9NTE0LHdocj01MTUsU2hyPTUxNixNaHI9NTE3LEVocj01MTgsQ2ZlPTUxOSxHMz0zNTA0NCxXMz0zNTA0OCxUaHI9MzUwNDAsQ2hyPTM1MDQ1LEFocj0zNTA0OSxQaHI9MzUwNDEsSWhyPTM1MDQ2LExocj0zNTA1MCxraHI9MzUwNDIsUmhyPSIxMDAiLCR1dD0iMzAwIGVzIixpVT0xMDM1LFZzPWNsYXNze2FkZEV2ZW50TGlzdGVuZXIodCxyKXt0aGlzLl9saXN0ZW5lcnM9PT12b2lkIDAmJih0aGlzLl9saXN0ZW5lcnM9e30pO2xldCBuPXRoaXMuX2xpc3RlbmVycztuW3RdPT09dm9pZCAwJiYoblt0XT1bXSksblt0XS5pbmRleE9mKHIpPT09LTEmJm5bdF0ucHVzaChyKX1oYXNFdmVudExpc3RlbmVyKHQscil7aWYodGhpcy5fbGlzdGVuZXJzPT09dm9pZCAwKXJldHVybiExO2xldCBuPXRoaXMuX2xpc3RlbmVycztyZXR1cm4gblt0XSE9PXZvaWQgMCYmblt0XS5pbmRleE9mKHIpIT09LTF9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHIpe2lmKHRoaXMuX2xpc3RlbmVycz09PXZvaWQgMClyZXR1cm47bGV0IGk9dGhpcy5fbGlzdGVuZXJzW3RdO2lmKGkhPT12b2lkIDApe2xldCBvPWkuaW5kZXhPZihyKTtvIT09LTEmJmkuc3BsaWNlKG8sMSl9fWRpc3BhdGNoRXZlbnQodCl7aWYodGhpcy5fbGlzdGVuZXJzPT09dm9pZCAwKXJldHVybjtsZXQgbj10aGlzLl9saXN0ZW5lcnNbdC50eXBlXTtpZihuIT09dm9pZCAwKXt0LnRhcmdldD10aGlzO2xldCBpPW4uc2xpY2UoMCk7Zm9yKGxldCBvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlbb10uY2FsbCh0aGlzLHQpO3QudGFyZ2V0PW51bGx9fX0sJG89W107Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKSRvW2VdPShlPDE2PyIwIjoiIikrZS50b1N0cmluZygxNik7dmFyIHNWPTEyMzQ1NjcsUDE9TWF0aC5QSS8xODAsS1A9MTgwL01hdGguUEk7ZnVuY3Rpb24gUmwoKXtsZXQgZT1NYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTV8MCx0PU1hdGgucmFuZG9tKCkqNDI5NDk2NzI5NXwwLHI9TWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1fDAsbj1NYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTV8MDtyZXR1cm4oJG9bZSYyNTVdKyRvW2U+PjgmMjU1XSskb1tlPj4xNiYyNTVdKyRvW2U+PjI0JjI1NV0rIi0iKyRvW3QmMjU1XSskb1t0Pj44JjI1NV0rIi0iKyRvW3Q+PjE2JjE1fDY0XSskb1t0Pj4yNCYyNTVdKyItIiskb1tyJjYzfDEyOF0rJG9bcj4+OCYyNTVdKyItIiskb1tyPj4xNiYyNTVdKyRvW3I+PjI0JjI1NV0rJG9bbiYyNTVdKyRvW24+PjgmMjU1XSskb1tuPj4xNiYyNTVdKyRvW24+PjI0JjI1NV0pLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gS28oZSx0LHIpe3JldHVybiBNYXRoLm1heCh0LE1hdGgubWluKHIsZSkpfWZ1bmN0aW9uIGtodChlLHQpe3JldHVybihlJXQrdCkldH1mdW5jdGlvbiBOaHIoZSx0LHIsbixpKXtyZXR1cm4gbisoZS10KSooaS1uKS8oci10KX1mdW5jdGlvbiBEaHIoZSx0LHIpe3JldHVybiBlIT09dD8oci1lKS8odC1lKTowfWZ1bmN0aW9uIEJQKGUsdCxyKXtyZXR1cm4oMS1yKSplK3IqdH1mdW5jdGlvbiBPaHIoZSx0LHIsbil7cmV0dXJuIEJQKGUsdCwxLU1hdGguZXhwKC1yKm4pKX1mdW5jdGlvbiB6aHIoZSx0PTEpe3JldHVybiB0LU1hdGguYWJzKGtodChlLHQqMiktdCl9ZnVuY3Rpb24gRmhyKGUsdCxyKXtyZXR1cm4gZTw9dD8wOmU+PXI/MTooZT0oZS10KS8oci10KSxlKmUqKDMtMiplKSl9ZnVuY3Rpb24gQmhyKGUsdCxyKXtyZXR1cm4gZTw9dD8wOmU+PXI/MTooZT0oZS10KS8oci10KSxlKmUqZSooZSooZSo2LTE1KSsxMCkpfWZ1bmN0aW9uIEhocihlLHQpe3JldHVybiBlK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoodC1lKzEpKX1mdW5jdGlvbiBWaHIoZSx0KXtyZXR1cm4gZStNYXRoLnJhbmRvbSgpKih0LWUpfWZ1bmN0aW9uIFVocihlKXtyZXR1cm4gZSooLjUtTWF0aC5yYW5kb20oKSl9ZnVuY3Rpb24gcWhyKGUpe3JldHVybiBlIT09dm9pZCAwJiYoc1Y9ZSUyMTQ3NDgzNjQ3KSxzVj1zVioxNjgwNyUyMTQ3NDgzNjQ3LChzVi0xKS8yMTQ3NDgzNjQ2fWZ1bmN0aW9uIEdocihlKXtyZXR1cm4gZSpQMX1mdW5jdGlvbiBXaHIoZSl7cmV0dXJuIGUqS1B9ZnVuY3Rpb24gS3V0KGUpe3JldHVybihlJmUtMSk9PT0wJiZlIT09MH1mdW5jdGlvbiBBZmUoZSl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5jZWlsKE1hdGgubG9nKGUpL01hdGguTE4yKSl9ZnVuY3Rpb24gUGZlKGUpe3JldHVybiBNYXRoLnBvdygyLE1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpKX1mdW5jdGlvbiBZaHIoZSx0LHIsbixpKXtsZXQgbz1NYXRoLmNvcyxhPU1hdGguc2luLHM9byhyLzIpLGw9YShyLzIpLGM9bygodCtuKS8yKSx1PWEoKHQrbikvMiksaD1vKCh0LW4pLzIpLGY9YSgodC1uKS8yKSxwPW8oKG4tdCkvMiksZD1hKChuLXQpLzIpO3N3aXRjaChpKXtjYXNlIlhZWCI6ZS5zZXQocyp1LGwqaCxsKmYscypjKTticmVhaztjYXNlIllaWSI6ZS5zZXQobCpmLHMqdSxsKmgscypjKTticmVhaztjYXNlIlpYWiI6ZS5zZXQobCpoLGwqZixzKnUscypjKTticmVhaztjYXNlIlhaWCI6ZS5zZXQocyp1LGwqZCxsKnAscypjKTticmVhaztjYXNlIllYWSI6ZS5zZXQobCpwLHMqdSxsKmQscypjKTticmVhaztjYXNlIlpZWiI6ZS5zZXQobCpkLGwqcCxzKnUscypjKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuTWF0aFV0aWxzOiAuc2V0UXVhdGVybmlvbkZyb21Qcm9wZXJFdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIraSl9fXZhciBqaHI9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsREVHMlJBRDpQMSxSQUQyREVHOktQLGdlbmVyYXRlVVVJRDpSbCxjbGFtcDpLbyxldWNsaWRlYW5Nb2R1bG86a2h0LG1hcExpbmVhcjpOaHIsaW52ZXJzZUxlcnA6RGhyLGxlcnA6QlAsZGFtcDpPaHIscGluZ3Bvbmc6emhyLHNtb290aHN0ZXA6RmhyLHNtb290aGVyc3RlcDpCaHIscmFuZEludDpIaHIscmFuZEZsb2F0OlZocixyYW5kRmxvYXRTcHJlYWQ6VWhyLHNlZWRlZFJhbmRvbTpxaHIsZGVnVG9SYWQ6R2hyLHJhZFRvRGVnOldocixpc1Bvd2VyT2ZUd286S3V0LGNlaWxQb3dlck9mVHdvOkFmZSxmbG9vclBvd2VyT2ZUd286UGZlLHNldFF1YXRlcm5pb25Gcm9tUHJvcGVyRXVsZXI6WWhyfSksTHQ9Y2xhc3N7Y29uc3RydWN0b3IodD0wLHI9MCl7dGhpcy54PXQsdGhpcy55PXJ9Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMueH1zZXQgd2lkdGgodCl7dGhpcy54PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnl9c2V0IGhlaWdodCh0KXt0aGlzLnk9dH1zZXQodCxyKXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXIsdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldENvbXBvbmVudCh0LHIpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PXI7YnJlYWs7Y2FzZSAxOnRoaXMueT1yO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpc31hZGQodCxyKXtyZXR1cm4gciE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQscikpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpc31hZGRWZWN0b3JzKHQscil7cmV0dXJuIHRoaXMueD10Lngrci54LHRoaXMueT10Lnkrci55LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQscil7cmV0dXJuIHRoaXMueCs9dC54KnIsdGhpcy55Kz10Lnkqcix0aGlzfXN1Yih0LHIpe3JldHVybiByIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxyKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzfXN1YlZlY3RvcnModCxyKXtyZXR1cm4gdGhpcy54PXQueC1yLngsdGhpcy55PXQueS1yLnksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1hcHBseU1hdHJpeDModCl7bGV0IHI9dGhpcy54LG49dGhpcy55LGk9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWlbMF0qcitpWzNdKm4raVs2XSx0aGlzLnk9aVsxXSpyK2lbNF0qbitpWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxyKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihyLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihyLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LHIpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihyLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKHIsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LHIpe2xldCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4ocixuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzfWNlaWwoKXtyZXR1cm4gdGhpcy54PU1hdGguY2VpbCh0aGlzLngpLHRoaXMueT1NYXRoLmNlaWwodGhpcy55KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzfXJvdW5kVG9aZXJvKCl7cmV0dXJuIHRoaXMueD10aGlzLng8MD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCksdGhpcy55PXRoaXMueTwwP01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55fWNyb3NzKHQpe3JldHVybiB0aGlzLngqdC55LXRoaXMueSp0Lnh9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1hbmdsZSgpe3JldHVybiBNYXRoLmF0YW4yKC10aGlzLnksLXRoaXMueCkrTWF0aC5QSX1kaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VUb1NxdWFyZWQodCl7bGV0IHI9dGhpcy54LXQueCxuPXRoaXMueS10Lnk7cmV0dXJuIHIqcituKm59bWFuaGF0dGFuRGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5hYnModGhpcy54LXQueCkrTWF0aC5hYnModGhpcy55LXQueSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxyKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqcix0aGlzLnkrPSh0LnktdGhpcy55KSpyLHRoaXN9bGVycFZlY3RvcnModCxyLG4pe3JldHVybiB0aGlzLng9dC54KyhyLngtdC54KSpuLHRoaXMueT10LnkrKHIueS10LnkpKm4sdGhpc31lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55fWZyb21BcnJheSh0LHI9MCl7cmV0dXJuIHRoaXMueD10W3JdLHRoaXMueT10W3IrMV0sdGhpc310b0FycmF5KHQ9W10scj0wKXtyZXR1cm4gdFtyXT10aGlzLngsdFtyKzFdPXRoaXMueSx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxyLG4pe3JldHVybiBuIT09dm9pZCAwJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKHIpLHRoaXMueT10LmdldFkociksdGhpc31yb3RhdGVBcm91bmQodCxyKXtsZXQgbj1NYXRoLmNvcyhyKSxpPU1hdGguc2luKHIpLG89dGhpcy54LXQueCxhPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1vKm4tYSppK3QueCx0aGlzLnk9byppK2Eqbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55fX07THQucHJvdG90eXBlLmlzVmVjdG9yMj0hMDt2YXIga2k9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDEsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LHIsbixpLG8sYSxzLGwsYyl7bGV0IHU9dGhpcy5lbGVtZW50cztyZXR1cm4gdVswXT10LHVbMV09aSx1WzJdPXMsdVszXT1yLHVbNF09byx1WzVdPWwsdVs2XT1uLHVbN109YSx1WzhdPWMsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDEsMCwwLDAsMSksdGhpc31jb3B5KHQpe2xldCByPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiByWzBdPW5bMF0sclsxXT1uWzFdLHJbMl09blsyXSxyWzNdPW5bM10scls0XT1uWzRdLHJbNV09bls1XSxyWzZdPW5bNl0scls3XT1uWzddLHJbOF09bls4XSx0aGlzfWV4dHJhY3RCYXNpcyh0LHIsbil7cmV0dXJuIHQuc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywwKSxyLnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMSksbi5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDIpLHRoaXN9c2V0RnJvbU1hdHJpeDQodCl7bGV0IHI9dC5lbGVtZW50cztyZXR1cm4gdGhpcy5zZXQoclswXSxyWzRdLHJbOF0sclsxXSxyWzVdLHJbOV0sclsyXSxyWzZdLHJbMTBdKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LHIpe2xldCBuPXQuZWxlbWVudHMsaT1yLmVsZW1lbnRzLG89dGhpcy5lbGVtZW50cyxhPW5bMF0scz1uWzNdLGw9bls2XSxjPW5bMV0sdT1uWzRdLGg9bls3XSxmPW5bMl0scD1uWzVdLGQ9bls4XSxnPWlbMF0sXz1pWzNdLHk9aVs2XSx4PWlbMV0sYj1pWzRdLFM9aVs3XSxDPWlbMl0sUD1pWzVdLGs9aVs4XTtyZXR1cm4gb1swXT1hKmcrcyp4K2wqQyxvWzNdPWEqXytzKmIrbCpQLG9bNl09YSp5K3MqUytsKmssb1sxXT1jKmcrdSp4K2gqQyxvWzRdPWMqXyt1KmIraCpQLG9bN109Yyp5K3UqUytoKmssb1syXT1mKmcrcCp4K2QqQyxvWzVdPWYqXytwKmIrZCpQLG9bOF09Zip5K3AqUytkKmssdGhpc31tdWx0aXBseVNjYWxhcih0KXtsZXQgcj10aGlzLmVsZW1lbnRzO3JldHVybiByWzBdKj10LHJbM10qPXQscls2XSo9dCxyWzFdKj10LHJbNF0qPXQscls3XSo9dCxyWzJdKj10LHJbNV0qPXQscls4XSo9dCx0aGlzfWRldGVybWluYW50KCl7bGV0IHQ9dGhpcy5lbGVtZW50cyxyPXRbMF0sbj10WzFdLGk9dFsyXSxvPXRbM10sYT10WzRdLHM9dFs1XSxsPXRbNl0sYz10WzddLHU9dFs4XTtyZXR1cm4gciphKnUtcipzKmMtbipvKnUrbipzKmwraSpvKmMtaSphKmx9aW52ZXJ0KCl7bGV0IHQ9dGhpcy5lbGVtZW50cyxyPXRbMF0sbj10WzFdLGk9dFsyXSxvPXRbM10sYT10WzRdLHM9dFs1XSxsPXRbNl0sYz10WzddLHU9dFs4XSxoPXUqYS1zKmMsZj1zKmwtdSpvLHA9YypvLWEqbCxkPXIqaCtuKmYraSpwO2lmKGQ9PT0wKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCk7bGV0IGc9MS9kO3JldHVybiB0WzBdPWgqZyx0WzFdPShpKmMtdSpuKSpnLHRbMl09KHMqbi1pKmEpKmcsdFszXT1mKmcsdFs0XT0odSpyLWkqbCkqZyx0WzVdPShpKm8tcypyKSpnLHRbNl09cCpnLHRbN109KG4qbC1jKnIpKmcsdFs4XT0oYSpyLW4qbykqZyx0aGlzfXRyYW5zcG9zZSgpe2xldCB0LHI9dGhpcy5lbGVtZW50cztyZXR1cm4gdD1yWzFdLHJbMV09clszXSxyWzNdPXQsdD1yWzJdLHJbMl09cls2XSxyWzZdPXQsdD1yWzVdLHJbNV09cls3XSxyWzddPXQsdGhpc31nZXROb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuc2V0RnJvbU1hdHJpeDQodCkuaW52ZXJ0KCkudHJhbnNwb3NlKCl9dHJhbnNwb3NlSW50b0FycmF5KHQpe2xldCByPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbMF09clswXSx0WzFdPXJbM10sdFsyXT1yWzZdLHRbM109clsxXSx0WzRdPXJbNF0sdFs1XT1yWzddLHRbNl09clsyXSx0WzddPXJbNV0sdFs4XT1yWzhdLHRoaXN9c2V0VXZUcmFuc2Zvcm0odCxyLG4saSxvLGEscyl7bGV0IGw9TWF0aC5jb3MobyksYz1NYXRoLnNpbihvKTtyZXR1cm4gdGhpcy5zZXQobipsLG4qYywtbioobCphK2MqcykrYSt0LC1pKmMsaSpsLC1pKigtYyphK2wqcykrcytyLDAsMCwxKSx0aGlzfXNjYWxlKHQscil7bGV0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSo9dCxuWzNdKj10LG5bNl0qPXQsblsxXSo9cixuWzRdKj1yLG5bN10qPXIsdGhpc31yb3RhdGUodCl7bGV0IHI9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KSxpPXRoaXMuZWxlbWVudHMsbz1pWzBdLGE9aVszXSxzPWlbNl0sbD1pWzFdLGM9aVs0XSx1PWlbN107cmV0dXJuIGlbMF09cipvK24qbCxpWzNdPXIqYStuKmMsaVs2XT1yKnMrbip1LGlbMV09LW4qbytyKmwsaVs0XT0tbiphK3IqYyxpWzddPS1uKnMrcip1LHRoaXN9dHJhbnNsYXRlKHQscil7bGV0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSs9dCpuWzJdLG5bM10rPXQqbls1XSxuWzZdKz10Km5bOF0sblsxXSs9cipuWzJdLG5bNF0rPXIqbls1XSxuWzddKz1yKm5bOF0sdGhpc31lcXVhbHModCl7bGV0IHI9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7Zm9yKGxldCBpPTA7aTw5O2krKylpZihyW2ldIT09bltpXSlyZXR1cm4hMTtyZXR1cm4hMH1mcm9tQXJyYXkodCxyPTApe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rcl07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLHI9MCl7bGV0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gdFtyXT1uWzBdLHRbcisxXT1uWzFdLHRbcisyXT1uWzJdLHRbciszXT1uWzNdLHRbcis0XT1uWzRdLHRbcis1XT1uWzVdLHRbcis2XT1uWzZdLHRbcis3XT1uWzddLHRbcis4XT1uWzhdLHR9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9fTtraS5wcm90b3R5cGUuaXNNYXRyaXgzPSEwO2Z1bmN0aW9uIElmZShlKXtmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wOy0tdClpZihlW3RdPjY1NTM1KXJldHVybiEwO3JldHVybiExfXZhciBYaHI9e0ludDhBcnJheSxVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5fTtmdW5jdGlvbiBGMyhlLHQpe3JldHVybiBuZXcgWGhyW2VdKHQpfWZ1bmN0aW9uIFpQKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLGUpfXZhciBMZmU9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH0scmg9e2g6MCxzOjAsbDowfSxsVj17aDowLHM6MCxsOjB9O2Z1bmN0aW9uIHFjdChlLHQscil7cmV0dXJuIHI8MCYmKHIrPTEpLHI+MSYmKHItPTEpLHI8MS82P2UrKHQtZSkqNipyOnI8MS8yP3Q6cjwyLzM/ZSsodC1lKSo2KigyLzMtcik6ZX1mdW5jdGlvbiBWMyhlKXtyZXR1cm4gZTwuMDQwNDU/ZSouMDc3Mzk5MzgwODpNYXRoLnBvdyhlKi45NDc4NjcyOTg2Ky4wNTIxMzI3MDE0LDIuNCl9ZnVuY3Rpb24gR2N0KGUpe3JldHVybiBlPC4wMDMxMzA4P2UqMTIuOTI6MS4wNTUqTWF0aC5wb3coZSwuNDE2NjYpLS4wNTV9dmFyIG5lPWNsYXNze2NvbnN0cnVjdG9yKHQscixuKXtyZXR1cm4gcj09PXZvaWQgMCYmbj09PXZvaWQgMD90aGlzLnNldCh0KTp0aGlzLnNldFJHQih0LHIsbil9c2V0KHQpe3JldHVybiB0JiZ0LmlzQ29sb3I/dGhpcy5jb3B5KHQpOnR5cGVvZiB0PT0ibnVtYmVyIj90aGlzLnNldEhleCh0KTp0eXBlb2YgdD09InN0cmluZyImJnRoaXMuc2V0U3R5bGUodCksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMucj10LHRoaXMuZz10LHRoaXMuYj10LHRoaXN9c2V0SGV4KHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksdGhpcy5yPSh0Pj4xNiYyNTUpLzI1NSx0aGlzLmc9KHQ+PjgmMjU1KS8yNTUsdGhpcy5iPSh0JjI1NSkvMjU1LHRoaXN9c2V0UkdCKHQscixuKXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPXIsdGhpcy5iPW4sdGhpc31zZXRIU0wodCxyLG4pe2lmKHQ9a2h0KHQsMSkscj1LbyhyLDAsMSksbj1LbyhuLDAsMSkscj09PTApdGhpcy5yPXRoaXMuZz10aGlzLmI9bjtlbHNle2xldCBpPW48PS41P24qKDErcik6bityLW4qcixvPTIqbi1pO3RoaXMucj1xY3QobyxpLHQrMS8zKSx0aGlzLmc9cWN0KG8saSx0KSx0aGlzLmI9cWN0KG8saSx0LTEvMyl9cmV0dXJuIHRoaXN9c2V0U3R5bGUodCl7ZnVuY3Rpb24gcihpKXtpIT09dm9pZCAwJiZwYXJzZUZsb2F0KGkpPDEmJmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAiK3QrIiB3aWxsIGJlIGlnbm9yZWQuIil9bGV0IG47aWYobj0vXigoPzpyZ2J8aHNsKWE/KVwoKFteXCldKilcKS8uZXhlYyh0KSl7bGV0IGksbz1uWzFdLGE9blsyXTtzd2l0Y2gobyl7Y2FzZSJyZ2IiOmNhc2UicmdiYSI6aWYoaT0vXlxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGEpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMjU1LHBhcnNlSW50KGlbMV0sMTApKS8yNTUsdGhpcy5nPU1hdGgubWluKDI1NSxwYXJzZUludChpWzJdLDEwKSkvMjU1LHRoaXMuYj1NYXRoLm1pbigyNTUscGFyc2VJbnQoaVszXSwxMCkpLzI1NSxyKGlbNF0pLHRoaXM7aWYoaT0vXlxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGEpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMTAwLHBhcnNlSW50KGlbMV0sMTApKS8xMDAsdGhpcy5nPU1hdGgubWluKDEwMCxwYXJzZUludChpWzJdLDEwKSkvMTAwLHRoaXMuYj1NYXRoLm1pbigxMDAscGFyc2VJbnQoaVszXSwxMCkpLzEwMCxyKGlbNF0pLHRoaXM7YnJlYWs7Y2FzZSJoc2wiOmNhc2UiaHNsYSI6aWYoaT0vXlxzKihcZCpcLj9cZCspXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhhKSl7bGV0IHM9cGFyc2VGbG9hdChpWzFdKS8zNjAsbD1wYXJzZUludChpWzJdLDEwKS8xMDAsYz1wYXJzZUludChpWzNdLDEwKS8xMDA7cmV0dXJuIHIoaVs0XSksdGhpcy5zZXRIU0wocyxsLGMpfWJyZWFrfX1lbHNlIGlmKG49L15cIyhbQS1GYS1mXGRdKykkLy5leGVjKHQpKXtsZXQgaT1uWzFdLG89aS5sZW5ndGg7aWYobz09PTMpcmV0dXJuIHRoaXMucj1wYXJzZUludChpLmNoYXJBdCgwKStpLmNoYXJBdCgwKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludChpLmNoYXJBdCgxKStpLmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludChpLmNoYXJBdCgyKStpLmNoYXJBdCgyKSwxNikvMjU1LHRoaXM7aWYobz09PTYpcmV0dXJuIHRoaXMucj1wYXJzZUludChpLmNoYXJBdCgwKStpLmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludChpLmNoYXJBdCgyKStpLmNoYXJBdCgzKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludChpLmNoYXJBdCg0KStpLmNoYXJBdCg1KSwxNikvMjU1LHRoaXN9cmV0dXJuIHQmJnQubGVuZ3RoPjA/dGhpcy5zZXRDb2xvck5hbWUodCk6dGhpc31zZXRDb2xvck5hbWUodCl7bGV0IHI9TGZlW3QudG9Mb3dlckNhc2UoKV07cmV0dXJuIHIhPT12b2lkIDA/dGhpcy5zZXRIZXgocik6Y29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogVW5rbm93biBjb2xvciAiK3QpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfWNvcHkodCl7cmV0dXJuIHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iLHRoaXN9Y29weVNSR0JUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5yPVYzKHQuciksdGhpcy5nPVYzKHQuZyksdGhpcy5iPVYzKHQuYiksdGhpc31jb3B5TGluZWFyVG9TUkdCKHQpe3JldHVybiB0aGlzLnI9R2N0KHQuciksdGhpcy5nPUdjdCh0LmcpLHRoaXMuYj1HY3QodC5iKSx0aGlzfWNvbnZlcnRTUkdCVG9MaW5lYXIoKXtyZXR1cm4gdGhpcy5jb3B5U1JHQlRvTGluZWFyKHRoaXMpLHRoaXN9Y29udmVydExpbmVhclRvU1JHQigpe3JldHVybiB0aGlzLmNvcHlMaW5lYXJUb1NSR0IodGhpcyksdGhpc31nZXRIZXgoKXtyZXR1cm4gdGhpcy5yKjI1NTw8MTZedGhpcy5nKjI1NTw8OF50aGlzLmIqMjU1PDwwfWdldEhleFN0cmluZygpe3JldHVybigiMDAwMDAwIit0aGlzLmdldEhleCgpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpfWdldEhTTCh0KXtsZXQgcj10aGlzLnIsbj10aGlzLmcsaT10aGlzLmIsbz1NYXRoLm1heChyLG4saSksYT1NYXRoLm1pbihyLG4saSkscyxsLGM9KGErbykvMjtpZihhPT09bylzPTAsbD0wO2Vsc2V7bGV0IHU9by1hO3N3aXRjaChsPWM8PS41P3UvKG8rYSk6dS8oMi1vLWEpLG8pe2Nhc2UgcjpzPShuLWkpL3UrKG48aT82OjApO2JyZWFrO2Nhc2UgbjpzPShpLXIpL3UrMjticmVhaztjYXNlIGk6cz0oci1uKS91KzQ7YnJlYWt9cy89Nn1yZXR1cm4gdC5oPXMsdC5zPWwsdC5sPWMsdH1nZXRTdHlsZSgpe3JldHVybiJyZ2IoIisodGhpcy5yKjI1NXwwKSsiLCIrKHRoaXMuZyoyNTV8MCkrIiwiKyh0aGlzLmIqMjU1fDApKyIpIn1vZmZzZXRIU0wodCxyLG4pe3JldHVybiB0aGlzLmdldEhTTChyaCkscmguaCs9dCxyaC5zKz1yLHJoLmwrPW4sdGhpcy5zZXRIU0wocmguaCxyaC5zLHJoLmwpLHRoaXN9YWRkKHQpe3JldHVybiB0aGlzLnIrPXQucix0aGlzLmcrPXQuZyx0aGlzLmIrPXQuYix0aGlzfWFkZENvbG9ycyh0LHIpe3JldHVybiB0aGlzLnI9dC5yK3Iucix0aGlzLmc9dC5nK3IuZyx0aGlzLmI9dC5iK3IuYix0aGlzfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKz10LHRoaXMuZys9dCx0aGlzLmIrPXQsdGhpc31zdWIodCl7cmV0dXJuIHRoaXMucj1NYXRoLm1heCgwLHRoaXMuci10LnIpLHRoaXMuZz1NYXRoLm1heCgwLHRoaXMuZy10LmcpLHRoaXMuYj1NYXRoLm1heCgwLHRoaXMuYi10LmIpLHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMucio9dC5yLHRoaXMuZyo9dC5nLHRoaXMuYio9dC5iLHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMucio9dCx0aGlzLmcqPXQsdGhpcy5iKj10LHRoaXN9bGVycCh0LHIpe3JldHVybiB0aGlzLnIrPSh0LnItdGhpcy5yKSpyLHRoaXMuZys9KHQuZy10aGlzLmcpKnIsdGhpcy5iKz0odC5iLXRoaXMuYikqcix0aGlzfWxlcnBDb2xvcnModCxyLG4pe3JldHVybiB0aGlzLnI9dC5yKyhyLnItdC5yKSpuLHRoaXMuZz10LmcrKHIuZy10LmcpKm4sdGhpcy5iPXQuYisoci5iLXQuYikqbix0aGlzfWxlcnBIU0wodCxyKXt0aGlzLmdldEhTTChyaCksdC5nZXRIU0wobFYpO2xldCBuPUJQKHJoLmgsbFYuaCxyKSxpPUJQKHJoLnMsbFYucyxyKSxvPUJQKHJoLmwsbFYubCxyKTtyZXR1cm4gdGhpcy5zZXRIU0wobixpLG8pLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnI9PT10aGlzLnImJnQuZz09PXRoaXMuZyYmdC5iPT09dGhpcy5ifWZyb21BcnJheSh0LHI9MCl7cmV0dXJuIHRoaXMucj10W3JdLHRoaXMuZz10W3IrMV0sdGhpcy5iPXRbcisyXSx0aGlzfXRvQXJyYXkodD1bXSxyPTApe3JldHVybiB0W3JdPXRoaXMucix0W3IrMV09dGhpcy5nLHRbcisyXT10aGlzLmIsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQscil7cmV0dXJuIHRoaXMucj10LmdldFgociksdGhpcy5nPXQuZ2V0WShyKSx0aGlzLmI9dC5nZXRaKHIpLHQubm9ybWFsaXplZD09PSEwJiYodGhpcy5yLz0yNTUsdGhpcy5nLz0yNTUsdGhpcy5iLz0yNTUpLHRoaXN9dG9KU09OKCl7cmV0dXJuIHRoaXMuZ2V0SGV4KCl9fTtuZS5OQU1FUz1MZmU7bmUucHJvdG90eXBlLmlzQ29sb3I9ITA7bmUucHJvdG90eXBlLnI9MTtuZS5wcm90b3R5cGUuZz0xO25lLnByb3RvdHlwZS5iPTE7dmFyIHkzLCRmPWNsYXNze3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKXx8dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50PT0idW5kZWZpbmVkIilyZXR1cm4gdC5zcmM7bGV0IHI7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KXI9dDtlbHNle3kzPT09dm9pZCAwJiYoeTM9WlAoImNhbnZhcyIpKSx5My53aWR0aD10LndpZHRoLHkzLmhlaWdodD10LmhlaWdodDtsZXQgbj15My5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/bi5wdXRJbWFnZURhdGEodCwwLDApOm4uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLHI9eTN9cmV0dXJuIHIud2lkdGg+MjA0OHx8ci5oZWlnaHQ+MjA0OD8oY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmdldERhdGFVUkw6IEltYWdlIGNvbnZlcnRlZCB0byBqcGcgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMiLHQpLHIudG9EYXRhVVJMKCJpbWFnZS9qcGVnIiwuNikpOnIudG9EYXRhVVJMKCJpbWFnZS9wbmciKX1zdGF0aWMgc1JHQlRvTGluZWFyKHQpe2lmKHR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50IT0idW5kZWZpbmVkIiYmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fHR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCE9InVuZGVmaW5lZCImJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8dHlwZW9mIEltYWdlQml0bWFwIT0idW5kZWZpbmVkIiYmdCBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXtsZXQgcj1aUCgiY2FudmFzIik7ci53aWR0aD10LndpZHRoLHIuaGVpZ2h0PXQuaGVpZ2h0O2xldCBuPXIuZ2V0Q29udGV4dCgiMmQiKTtuLmRyYXdJbWFnZSh0LDAsMCx0LndpZHRoLHQuaGVpZ2h0KTtsZXQgaT1uLmdldEltYWdlRGF0YSgwLDAsdC53aWR0aCx0LmhlaWdodCksbz1pLmRhdGE7Zm9yKGxldCBhPTA7YTxvLmxlbmd0aDthKyspb1thXT1WMyhvW2FdLzI1NSkqMjU1O3JldHVybiBuLnB1dEltYWdlRGF0YShpLDAsMCkscn1lbHNlIGlmKHQuZGF0YSl7bGV0IHI9dC5kYXRhLnNsaWNlKDApO2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bisrKXIgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxyIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXk/cltuXT1NYXRoLmZsb29yKFYzKHJbbl0vMjU1KSoyNTUpOnJbbl09VjMocltuXSk7cmV0dXJue2RhdGE6cix3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19ZWxzZSByZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLnNSR0JUb0xpbmVhcigpOiBVbnN1cHBvcnRlZCBpbWFnZSB0eXBlLiBObyBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGFwcGxpZWQuIiksdH19LCRocj0wLHhpPWNsYXNzIGV4dGVuZHMgVnN7Y29uc3RydWN0b3IodD14aS5ERUZBVUxUX0lNQUdFLHI9eGkuREVGQVVMVF9NQVBQSU5HLG49Wm8saT1abyxvPW9pLGE9b3gscz1KbyxsPVpkLGM9MSx1PVFkKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOiRocisrfSksdGhpcy51dWlkPVJsKCksdGhpcy5uYW1lPSIiLHRoaXMuaW1hZ2U9dCx0aGlzLm1pcG1hcHM9W10sdGhpcy5tYXBwaW5nPXIsdGhpcy53cmFwUz1uLHRoaXMud3JhcFQ9aSx0aGlzLm1hZ0ZpbHRlcj1vLHRoaXMubWluRmlsdGVyPWEsdGhpcy5hbmlzb3Ryb3B5PWMsdGhpcy5mb3JtYXQ9cyx0aGlzLmludGVybmFsRm9ybWF0PW51bGwsdGhpcy50eXBlPWwsdGhpcy5vZmZzZXQ9bmV3IEx0KDAsMCksdGhpcy5yZXBlYXQ9bmV3IEx0KDEsMSksdGhpcy5jZW50ZXI9bmV3IEx0KDAsMCksdGhpcy5yb3RhdGlvbj0wLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMCx0aGlzLm1hdHJpeD1uZXcga2ksdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITAsdGhpcy5wcmVtdWx0aXBseUFscGhhPSExLHRoaXMuZmxpcFk9ITAsdGhpcy51bnBhY2tBbGlnbm1lbnQ9NCx0aGlzLmVuY29kaW5nPXUsdGhpcy51c2VyRGF0YT17fSx0aGlzLnZlcnNpb249MCx0aGlzLm9uVXBkYXRlPW51bGwsdGhpcy5pc1JlbmRlclRhcmdldFRleHR1cmU9ITEsdGhpcy5uZWVkc1BNUkVNVXBkYXRlPSExfXVwZGF0ZU1hdHJpeCgpe3RoaXMubWF0cml4LnNldFV2VHJhbnNmb3JtKHRoaXMub2Zmc2V0LngsdGhpcy5vZmZzZXQueSx0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnksdGhpcy5yb3RhdGlvbix0aGlzLmNlbnRlci54LHRoaXMuY2VudGVyLnkpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaW1hZ2U9dC5pbWFnZSx0aGlzLm1pcG1hcHM9dC5taXBtYXBzLnNsaWNlKDApLHRoaXMubWFwcGluZz10Lm1hcHBpbmcsdGhpcy53cmFwUz10LndyYXBTLHRoaXMud3JhcFQ9dC53cmFwVCx0aGlzLm1hZ0ZpbHRlcj10Lm1hZ0ZpbHRlcix0aGlzLm1pbkZpbHRlcj10Lm1pbkZpbHRlcix0aGlzLmFuaXNvdHJvcHk9dC5hbmlzb3Ryb3B5LHRoaXMuZm9ybWF0PXQuZm9ybWF0LHRoaXMuaW50ZXJuYWxGb3JtYXQ9dC5pbnRlcm5hbEZvcm1hdCx0aGlzLnR5cGU9dC50eXBlLHRoaXMub2Zmc2V0LmNvcHkodC5vZmZzZXQpLHRoaXMucmVwZWF0LmNvcHkodC5yZXBlYXQpLHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPXQuZ2VuZXJhdGVNaXBtYXBzLHRoaXMucHJlbXVsdGlwbHlBbHBoYT10LnByZW11bHRpcGx5QWxwaGEsdGhpcy5mbGlwWT10LmZsaXBZLHRoaXMudW5wYWNrQWxpZ25tZW50PXQudW5wYWNrQWxpZ25tZW50LHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyx0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLHRoaXN9dG9KU09OKHQpe2xldCByPXQ9PT12b2lkIDB8fHR5cGVvZiB0PT0ic3RyaW5nIjtpZighciYmdC50ZXh0dXJlc1t0aGlzLnV1aWRdIT09dm9pZCAwKXJldHVybiB0LnRleHR1cmVzW3RoaXMudXVpZF07bGV0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHRoaXMuaW1hZ2UhPT12b2lkIDApe2xldCBpPXRoaXMuaW1hZ2U7aWYoaS51dWlkPT09dm9pZCAwJiYoaS51dWlkPVJsKCkpLCFyJiZ0LmltYWdlc1tpLnV1aWRdPT09dm9pZCAwKXtsZXQgbztpZihBcnJheS5pc0FycmF5KGkpKXtvPVtdO2ZvcihsZXQgYT0wLHM9aS5sZW5ndGg7YTxzO2ErKylpW2FdLmlzRGF0YVRleHR1cmU/by5wdXNoKFdjdChpW2FdLmltYWdlKSk6by5wdXNoKFdjdChpW2FdKSl9ZWxzZSBvPVdjdChpKTt0LmltYWdlc1tpLnV1aWRdPXt1dWlkOmkudXVpZCx1cmw6b319bi5pbWFnZT1pLnV1aWR9cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpIT09Int9IiYmKG4udXNlckRhdGE9dGhpcy51c2VyRGF0YSkscnx8KHQudGV4dHVyZXNbdGhpcy51dWlkXT1uKSxufWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9dHJhbnNmb3JtVXYodCl7aWYodGhpcy5tYXBwaW5nIT09V1UpcmV0dXJuIHQ7aWYodC5hcHBseU1hdHJpeDModGhpcy5tYXRyaXgpLHQueDwwfHx0Lng+MSlzd2l0Y2godGhpcy53cmFwUyl7Y2FzZSBXUDp0Lng9dC54LU1hdGguZmxvb3IodC54KTticmVhaztjYXNlIFpvOnQueD10Lng8MD8wOjE7YnJlYWs7Y2FzZSBZUDpNYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik9PT0xP3QueD1NYXRoLmNlaWwodC54KS10Lng6dC54PXQueC1NYXRoLmZsb29yKHQueCk7YnJlYWt9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIFdQOnQueT10LnktTWF0aC5mbG9vcih0LnkpO2JyZWFrO2Nhc2UgWm86dC55PXQueTwwPzA6MTticmVhaztjYXNlIFlQOk1hdGguYWJzKE1hdGguZmxvb3IodC55KSUyKT09PTE/dC55PU1hdGguY2VpbCh0LnkpLXQueTp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVha31yZXR1cm4gdGhpcy5mbGlwWSYmKHQueT0xLXQueSksdH1zZXQgbmVlZHNVcGRhdGUodCl7dD09PSEwJiZ0aGlzLnZlcnNpb24rK319O3hpLkRFRkFVTFRfSU1BR0U9dm9pZCAwO3hpLkRFRkFVTFRfTUFQUElORz1XVTt4aS5wcm90b3R5cGUuaXNUZXh0dXJlPSEwO2Z1bmN0aW9uIFdjdChlKXtyZXR1cm4gdHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQhPSJ1bmRlZmluZWQiJiZlIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50IT0idW5kZWZpbmVkIiYmZSBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHx0eXBlb2YgSW1hZ2VCaXRtYXAhPSJ1bmRlZmluZWQiJiZlIGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/JGYuZ2V0RGF0YVVSTChlKTplLmRhdGE/e2RhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZS5kYXRhKSx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodCx0eXBlOmUuZGF0YS5jb25zdHJ1Y3Rvci5uYW1lfTooY29uc29sZS53YXJuKCJUSFJFRS5UZXh0dXJlOiBVbmFibGUgdG8gc2VyaWFsaXplIFRleHR1cmUuIikse30pfXZhciBlbj1jbGFzc3tjb25zdHJ1Y3Rvcih0PTAscj0wLG49MCxpPTEpe3RoaXMueD10LHRoaXMueT1yLHRoaXMuej1uLHRoaXMudz1pfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnp9c2V0IHdpZHRoKHQpe3RoaXMuej10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy53fXNldCBoZWlnaHQodCl7dGhpcy53PXR9c2V0KHQscixuLGkpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9cix0aGlzLno9bix0aGlzLnc9aSx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpcy53PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRXKHQpe3JldHVybiB0aGlzLnc9dCx0aGlzfXNldENvbXBvbmVudCh0LHIpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PXI7YnJlYWs7Y2FzZSAxOnRoaXMueT1yO2JyZWFrO2Nhc2UgMjp0aGlzLno9cjticmVhaztjYXNlIDM6dGhpcy53PXI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2Nhc2UgMzpyZXR1cm4gdGhpcy53O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56LHRoaXMudyl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpcy53PXQudyE9PXZvaWQgMD90Lnc6MSx0aGlzfWFkZCh0LHIpe3JldHVybiByIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxyKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMudys9dC53LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpcy53Kz10LHRoaXN9YWRkVmVjdG9ycyh0LHIpe3JldHVybiB0aGlzLng9dC54K3IueCx0aGlzLnk9dC55K3IueSx0aGlzLno9dC56K3Iueix0aGlzLnc9dC53K3Iudyx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LHIpe3JldHVybiB0aGlzLngrPXQueCpyLHRoaXMueSs9dC55KnIsdGhpcy56Kz10Lnoqcix0aGlzLncrPXQudypyLHRoaXN9c3ViKHQscil7cmV0dXJuIHIhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LHIpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcy53LT10LncsdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzLnctPXQsdGhpc31zdWJWZWN0b3JzKHQscil7cmV0dXJuIHRoaXMueD10Lngtci54LHRoaXMueT10Lnktci55LHRoaXMuej10Lnotci56LHRoaXMudz10Lnctci53LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMudyo9dC53LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXMudyo9dCx0aGlzfWFwcGx5TWF0cml4NCh0KXtsZXQgcj10aGlzLngsbj10aGlzLnksaT10aGlzLnosbz10aGlzLncsYT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9YVswXSpyK2FbNF0qbithWzhdKmkrYVsxMl0qbyx0aGlzLnk9YVsxXSpyK2FbNV0qbithWzldKmkrYVsxM10qbyx0aGlzLno9YVsyXSpyK2FbNl0qbithWzEwXSppK2FbMTRdKm8sdGhpcy53PWFbM10qcithWzddKm4rYVsxMV0qaSthWzE1XSpvLHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9c2V0QXhpc0FuZ2xlRnJvbVF1YXRlcm5pb24odCl7dGhpcy53PTIqTWF0aC5hY29zKHQudyk7bGV0IHI9TWF0aC5zcXJ0KDEtdC53KnQudyk7cmV0dXJuIHI8MWUtND8odGhpcy54PTEsdGhpcy55PTAsdGhpcy56PTApOih0aGlzLng9dC54L3IsdGhpcy55PXQueS9yLHRoaXMuej10LnovciksdGhpc31zZXRBeGlzQW5nbGVGcm9tUm90YXRpb25NYXRyaXgodCl7bGV0IHIsbixpLG8sbD10LmVsZW1lbnRzLGM9bFswXSx1PWxbNF0saD1sWzhdLGY9bFsxXSxwPWxbNV0sZD1sWzldLGc9bFsyXSxfPWxbNl0seT1sWzEwXTtpZihNYXRoLmFicyh1LWYpPC4wMSYmTWF0aC5hYnMoaC1nKTwuMDEmJk1hdGguYWJzKGQtXyk8LjAxKXtpZihNYXRoLmFicyh1K2YpPC4xJiZNYXRoLmFicyhoK2cpPC4xJiZNYXRoLmFicyhkK18pPC4xJiZNYXRoLmFicyhjK3AreS0zKTwuMSlyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCksdGhpcztyPU1hdGguUEk7bGV0IGI9KGMrMSkvMixTPShwKzEpLzIsQz0oeSsxKS8yLFA9KHUrZikvNCxrPShoK2cpLzQsTz0oZCtfKS80O3JldHVybiBiPlMmJmI+Qz9iPC4wMT8obj0wLGk9LjcwNzEwNjc4MSxvPS43MDcxMDY3ODEpOihuPU1hdGguc3FydChiKSxpPVAvbixvPWsvbik6Uz5DP1M8LjAxPyhuPS43MDcxMDY3ODEsaT0wLG89LjcwNzEwNjc4MSk6KGk9TWF0aC5zcXJ0KFMpLG49UC9pLG89Ty9pKTpDPC4wMT8obj0uNzA3MTA2NzgxLGk9LjcwNzEwNjc4MSxvPTApOihvPU1hdGguc3FydChDKSxuPWsvbyxpPU8vbyksdGhpcy5zZXQobixpLG8sciksdGhpc31sZXQgeD1NYXRoLnNxcnQoKF8tZCkqKF8tZCkrKGgtZykqKGgtZykrKGYtdSkqKGYtdSkpO3JldHVybiBNYXRoLmFicyh4KTwuMDAxJiYoeD0xKSx0aGlzLng9KF8tZCkveCx0aGlzLnk9KGgtZykveCx0aGlzLno9KGYtdSkveCx0aGlzLnc9TWF0aC5hY29zKChjK3AreS0xKS8yKSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpcy53PU1hdGgubWluKHRoaXMudyx0LncpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5tYXgodGhpcy53LHQudyksdGhpc31jbGFtcCh0LHIpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKHIueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKHIueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKHIueix0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodC53LE1hdGgubWluKHIudyx0aGlzLncpKSx0aGlzfWNsYW1wU2NhbGFyKHQscil7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKHIsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4ocix0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihyLHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LE1hdGgubWluKHIsdGhpcy53KSksdGhpc31jbGFtcExlbmd0aCh0LHIpe2xldCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4ocixuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz1NYXRoLmZsb29yKHRoaXMudyksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXMudz1NYXRoLmNlaWwodGhpcy53KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXMudz1NYXRoLnJvdW5kKHRoaXMudyksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9dGhpcy53PDA/TWF0aC5jZWlsKHRoaXMudyk6TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXMuej0tdGhpcy56LHRoaXMudz0tdGhpcy53LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0LnkrdGhpcy56KnQueit0aGlzLncqdC53fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLnd9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpK01hdGguYWJzKHRoaXMueikrTWF0aC5hYnModGhpcy53KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxyKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqcix0aGlzLnkrPSh0LnktdGhpcy55KSpyLHRoaXMueis9KHQuei10aGlzLnopKnIsdGhpcy53Kz0odC53LXRoaXMudykqcix0aGlzfWxlcnBWZWN0b3JzKHQscixuKXtyZXR1cm4gdGhpcy54PXQueCsoci54LXQueCkqbix0aGlzLnk9dC55KyhyLnktdC55KSpuLHRoaXMuej10LnorKHIuei10LnopKm4sdGhpcy53PXQudysoci53LXQudykqbix0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMueiYmdC53PT09dGhpcy53fWZyb21BcnJheSh0LHI9MCl7cmV0dXJuIHRoaXMueD10W3JdLHRoaXMueT10W3IrMV0sdGhpcy56PXRbcisyXSx0aGlzLnc9dFtyKzNdLHRoaXN9dG9BcnJheSh0PVtdLHI9MCl7cmV0dXJuIHRbcl09dGhpcy54LHRbcisxXT10aGlzLnksdFtyKzJdPXRoaXMueix0W3IrM109dGhpcy53LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LHIsbil7cmV0dXJuIG4hPT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgociksdGhpcy55PXQuZ2V0WShyKSx0aGlzLno9dC5nZXRaKHIpLHRoaXMudz10LmdldFcociksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpcy53PU1hdGgucmFuZG9tKCksdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55LHlpZWxkIHRoaXMueix5aWVsZCB0aGlzLnd9fTtlbi5wcm90b3R5cGUuaXNWZWN0b3I0PSEwO3ZhciBjcz1jbGFzcyBleHRlbmRzIFZze2NvbnN0cnVjdG9yKHQscixuPXt9KXtzdXBlcigpLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1yLHRoaXMuZGVwdGg9MSx0aGlzLnNjaXNzb3I9bmV3IGVuKDAsMCx0LHIpLHRoaXMuc2Npc3NvclRlc3Q9ITEsdGhpcy52aWV3cG9ydD1uZXcgZW4oMCwwLHQsciksdGhpcy50ZXh0dXJlPW5ldyB4aSh2b2lkIDAsbi5tYXBwaW5nLG4ud3JhcFMsbi53cmFwVCxuLm1hZ0ZpbHRlcixuLm1pbkZpbHRlcixuLmZvcm1hdCxuLnR5cGUsbi5hbmlzb3Ryb3B5LG4uZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmltYWdlPXt3aWR0aDp0LGhlaWdodDpyLGRlcHRoOjF9LHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9bi5nZW5lcmF0ZU1pcG1hcHMhPT12b2lkIDA/bi5nZW5lcmF0ZU1pcG1hcHM6ITEsdGhpcy50ZXh0dXJlLmludGVybmFsRm9ybWF0PW4uaW50ZXJuYWxGb3JtYXQhPT12b2lkIDA/bi5pbnRlcm5hbEZvcm1hdDpudWxsLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9bi5taW5GaWx0ZXIhPT12b2lkIDA/bi5taW5GaWx0ZXI6b2ksdGhpcy5kZXB0aEJ1ZmZlcj1uLmRlcHRoQnVmZmVyIT09dm9pZCAwP24uZGVwdGhCdWZmZXI6ITAsdGhpcy5zdGVuY2lsQnVmZmVyPW4uc3RlbmNpbEJ1ZmZlciE9PXZvaWQgMD9uLnN0ZW5jaWxCdWZmZXI6ITEsdGhpcy5kZXB0aFRleHR1cmU9bi5kZXB0aFRleHR1cmUhPT12b2lkIDA/bi5kZXB0aFRleHR1cmU6bnVsbH1zZXRUZXh0dXJlKHQpe3QuaW1hZ2U9e3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0LGRlcHRoOnRoaXMuZGVwdGh9LHRoaXMudGV4dHVyZT10fXNldFNpemUodCxyLG49MSl7KHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PXJ8fHRoaXMuZGVwdGghPT1uKSYmKHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1yLHRoaXMuZGVwdGg9bix0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PXIsdGhpcy50ZXh0dXJlLmltYWdlLmRlcHRoPW4sdGhpcy5kaXNwb3NlKCkpLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LHIpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQscil9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5jb3B5KHQudmlld3BvcnQpLHRoaXMudGV4dHVyZT10LnRleHR1cmUuY2xvbmUoKSx0aGlzLnRleHR1cmUuaW1hZ2U9T2JqZWN0LmFzc2lnbih7fSx0LnRleHR1cmUuaW1hZ2UpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19O2NzLnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyVGFyZ2V0PSEwO3ZhciBvVT1jbGFzcyBleHRlbmRzIGNze2NvbnN0cnVjdG9yKHQscixuKXtzdXBlcih0LHIpO2xldCBpPXRoaXMudGV4dHVyZTt0aGlzLnRleHR1cmU9W107Zm9yKGxldCBvPTA7bzxuO28rKyl0aGlzLnRleHR1cmVbb109aS5jbG9uZSgpfXNldFNpemUodCxyLG49MSl7aWYodGhpcy53aWR0aCE9PXR8fHRoaXMuaGVpZ2h0IT09cnx8dGhpcy5kZXB0aCE9PW4pe3RoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1yLHRoaXMuZGVwdGg9bjtmb3IobGV0IGk9MCxvPXRoaXMudGV4dHVyZS5sZW5ndGg7aTxvO2krKyl0aGlzLnRleHR1cmVbaV0uaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmVbaV0uaW1hZ2UuaGVpZ2h0PXIsdGhpcy50ZXh0dXJlW2ldLmltYWdlLmRlcHRoPW47dGhpcy5kaXNwb3NlKCl9cmV0dXJuIHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LHIpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsciksdGhpc31jb3B5KHQpe3RoaXMuZGlzcG9zZSgpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLmRlcHRoPXQuZGVwdGgsdGhpcy52aWV3cG9ydC5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXMudGV4dHVyZS5sZW5ndGg9MDtmb3IobGV0IHI9MCxuPXQudGV4dHVyZS5sZW5ndGg7cjxuO3IrKyl0aGlzLnRleHR1cmVbcl09dC50ZXh0dXJlW3JdLmNsb25lKCk7cmV0dXJuIHRoaXN9fTtvVS5wcm90b3R5cGUuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz0hMDt2YXIgWTM9Y2xhc3MgZXh0ZW5kcyBjc3tjb25zdHJ1Y3Rvcih0LHIsbj17fSl7c3VwZXIodCxyLG4pLHRoaXMuc2FtcGxlcz00LHRoaXMuaWdub3JlRGVwdGhGb3JNdWx0aXNhbXBsZUNvcHk9bi5pZ25vcmVEZXB0aCE9PXZvaWQgMD9uLmlnbm9yZURlcHRoOiEwLHRoaXMudXNlUmVuZGVyVG9UZXh0dXJlPW4udXNlUmVuZGVyVG9UZXh0dXJlIT09dm9pZCAwP24udXNlUmVuZGVyVG9UZXh0dXJlOiExLHRoaXMudXNlUmVuZGVyYnVmZmVyPXRoaXMudXNlUmVuZGVyVG9UZXh0dXJlPT09ITF9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weS5jYWxsKHRoaXMsdCksdGhpcy5zYW1wbGVzPXQuc2FtcGxlcyx0aGlzLnVzZVJlbmRlclRvVGV4dHVyZT10LnVzZVJlbmRlclRvVGV4dHVyZSx0aGlzLnVzZVJlbmRlcmJ1ZmZlcj10LnVzZVJlbmRlcmJ1ZmZlcix0aGlzfX07WTMucHJvdG90eXBlLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD0hMDt2YXIgdmk9Y2xhc3N7Y29uc3RydWN0b3IodD0wLHI9MCxuPTAsaT0xKXt0aGlzLl94PXQsdGhpcy5feT1yLHRoaXMuX3o9bix0aGlzLl93PWl9c3RhdGljIHNsZXJwKHQscixuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IFN0YXRpYyAuc2xlcnAoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgcW0uc2xlcnBRdWF0ZXJuaW9ucyggcWEsIHFiLCB0ICkgaW5zdGVhZC4iKSxuLnNsZXJwUXVhdGVybmlvbnModCxyLGkpfXN0YXRpYyBzbGVycEZsYXQodCxyLG4saSxvLGEscyl7bGV0IGw9bltpKzBdLGM9bltpKzFdLHU9bltpKzJdLGg9bltpKzNdLGY9b1thKzBdLHA9b1thKzFdLGQ9b1thKzJdLGc9b1thKzNdO2lmKHM9PT0wKXt0W3IrMF09bCx0W3IrMV09Yyx0W3IrMl09dSx0W3IrM109aDtyZXR1cm59aWYocz09PTEpe3RbciswXT1mLHRbcisxXT1wLHRbcisyXT1kLHRbciszXT1nO3JldHVybn1pZihoIT09Z3x8bCE9PWZ8fGMhPT1wfHx1IT09ZCl7bGV0IF89MS1zLHk9bCpmK2MqcCt1KmQraCpnLHg9eT49MD8xOi0xLGI9MS15Knk7aWYoYj5OdW1iZXIuRVBTSUxPTil7bGV0IEM9TWF0aC5zcXJ0KGIpLFA9TWF0aC5hdGFuMihDLHkqeCk7Xz1NYXRoLnNpbihfKlApL0Mscz1NYXRoLnNpbihzKlApL0N9bGV0IFM9cyp4O2lmKGw9bCpfK2YqUyxjPWMqXytwKlMsdT11Kl8rZCpTLGg9aCpfK2cqUyxfPT09MS1zKXtsZXQgQz0xL01hdGguc3FydChsKmwrYypjK3UqdStoKmgpO2wqPUMsYyo9Qyx1Kj1DLGgqPUN9fXRbcl09bCx0W3IrMV09Yyx0W3IrMl09dSx0W3IrM109aH1zdGF0aWMgbXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxyLG4saSxvLGEpe2xldCBzPW5baV0sbD1uW2krMV0sYz1uW2krMl0sdT1uW2krM10saD1vW2FdLGY9b1thKzFdLHA9b1thKzJdLGQ9b1thKzNdO3JldHVybiB0W3JdPXMqZCt1KmgrbCpwLWMqZix0W3IrMV09bCpkK3UqZitjKmgtcypwLHRbcisyXT1jKmQrdSpwK3MqZi1sKmgsdFtyKzNdPXUqZC1zKmgtbCpmLWMqcCx0fWdldCB4KCl7cmV0dXJuIHRoaXMuX3h9c2V0IHgodCl7dGhpcy5feD10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeSgpe3JldHVybiB0aGlzLl95fXNldCB5KHQpe3RoaXMuX3k9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHooKXtyZXR1cm4gdGhpcy5fen1zZXQgeih0KXt0aGlzLl96PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB3KCl7cmV0dXJuIHRoaXMuX3d9c2V0IHcodCl7dGhpcy5fdz10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1zZXQodCxyLG4saSl7cmV0dXJuIHRoaXMuX3g9dCx0aGlzLl95PXIsdGhpcy5fej1uLHRoaXMuX3c9aSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl93KX1jb3B5KHQpe3JldHVybiB0aGlzLl94PXQueCx0aGlzLl95PXQueSx0aGlzLl96PXQueix0aGlzLl93PXQudyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tRXVsZXIodCxyKXtpZighKHQmJnQuaXNFdWxlcikpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtsZXQgbj10Ll94LGk9dC5feSxvPXQuX3osYT10Ll9vcmRlcixzPU1hdGguY29zLGw9TWF0aC5zaW4sYz1zKG4vMiksdT1zKGkvMiksaD1zKG8vMiksZj1sKG4vMikscD1sKGkvMiksZD1sKG8vMik7c3dpdGNoKGEpe2Nhc2UiWFlaIjp0aGlzLl94PWYqdSpoK2MqcCpkLHRoaXMuX3k9YypwKmgtZip1KmQsdGhpcy5fej1jKnUqZCtmKnAqaCx0aGlzLl93PWMqdSpoLWYqcCpkO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PWYqdSpoK2MqcCpkLHRoaXMuX3k9YypwKmgtZip1KmQsdGhpcy5fej1jKnUqZC1mKnAqaCx0aGlzLl93PWMqdSpoK2YqcCpkO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PWYqdSpoLWMqcCpkLHRoaXMuX3k9YypwKmgrZip1KmQsdGhpcy5fej1jKnUqZCtmKnAqaCx0aGlzLl93PWMqdSpoLWYqcCpkO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl94PWYqdSpoLWMqcCpkLHRoaXMuX3k9YypwKmgrZip1KmQsdGhpcy5fej1jKnUqZC1mKnAqaCx0aGlzLl93PWMqdSpoK2YqcCpkO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl94PWYqdSpoK2MqcCpkLHRoaXMuX3k9YypwKmgrZip1KmQsdGhpcy5fej1jKnUqZC1mKnAqaCx0aGlzLl93PWMqdSpoLWYqcCpkO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl94PWYqdSpoLWMqcCpkLHRoaXMuX3k9YypwKmgtZip1KmQsdGhpcy5fej1jKnUqZCtmKnAqaCx0aGlzLl93PWMqdSpoK2YqcCpkO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIithKX1yZXR1cm4gciE9PSExJiZ0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tQXhpc0FuZ2xlKHQscil7bGV0IG49ci8yLGk9TWF0aC5zaW4obik7cmV0dXJuIHRoaXMuX3g9dC54KmksdGhpcy5feT10LnkqaSx0aGlzLl96PXQueippLHRoaXMuX3c9TWF0aC5jb3MobiksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpe2xldCByPXQuZWxlbWVudHMsbj1yWzBdLGk9cls0XSxvPXJbOF0sYT1yWzFdLHM9cls1XSxsPXJbOV0sYz1yWzJdLHU9cls2XSxoPXJbMTBdLGY9bitzK2g7aWYoZj4wKXtsZXQgcD0uNS9NYXRoLnNxcnQoZisxKTt0aGlzLl93PS4yNS9wLHRoaXMuX3g9KHUtbCkqcCx0aGlzLl95PShvLWMpKnAsdGhpcy5fej0oYS1pKSpwfWVsc2UgaWYobj5zJiZuPmgpe2xldCBwPTIqTWF0aC5zcXJ0KDErbi1zLWgpO3RoaXMuX3c9KHUtbCkvcCx0aGlzLl94PS4yNSpwLHRoaXMuX3k9KGkrYSkvcCx0aGlzLl96PShvK2MpL3B9ZWxzZSBpZihzPmgpe2xldCBwPTIqTWF0aC5zcXJ0KDErcy1uLWgpO3RoaXMuX3c9KG8tYykvcCx0aGlzLl94PShpK2EpL3AsdGhpcy5feT0uMjUqcCx0aGlzLl96PShsK3UpL3B9ZWxzZXtsZXQgcD0yKk1hdGguc3FydCgxK2gtbi1zKTt0aGlzLl93PShhLWkpL3AsdGhpcy5feD0obytjKS9wLHRoaXMuX3k9KGwrdSkvcCx0aGlzLl96PS4yNSpwfXJldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zZXRGcm9tVW5pdFZlY3RvcnModCxyKXtsZXQgbj10LmRvdChyKSsxO3JldHVybiBuPE51bWJlci5FUFNJTE9OPyhuPTAsTWF0aC5hYnModC54KT5NYXRoLmFicyh0LnopPyh0aGlzLl94PS10LnksdGhpcy5feT10LngsdGhpcy5fej0wLHRoaXMuX3c9bik6KHRoaXMuX3g9MCx0aGlzLl95PS10LnosdGhpcy5fej10LnksdGhpcy5fdz1uKSk6KHRoaXMuX3g9dC55KnIuei10Lnoqci55LHRoaXMuX3k9dC56KnIueC10Lngqci56LHRoaXMuX3o9dC54KnIueS10Lnkqci54LHRoaXMuX3c9biksdGhpcy5ub3JtYWxpemUoKX1hbmdsZVRvKHQpe3JldHVybiAyKk1hdGguYWNvcyhNYXRoLmFicyhLbyh0aGlzLmRvdCh0KSwtMSwxKSkpfXJvdGF0ZVRvd2FyZHModCxyKXtsZXQgbj10aGlzLmFuZ2xlVG8odCk7aWYobj09PTApcmV0dXJuIHRoaXM7bGV0IGk9TWF0aC5taW4oMSxyL24pO3JldHVybiB0aGlzLnNsZXJwKHQsaSksdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgwLDAsMCwxKX1pbnZlcnQoKXtyZXR1cm4gdGhpcy5jb25qdWdhdGUoKX1jb25qdWdhdGUoKXtyZXR1cm4gdGhpcy5feCo9LTEsdGhpcy5feSo9LTEsdGhpcy5feio9LTEsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLl94KnQuX3grdGhpcy5feSp0Ll95K3RoaXMuX3oqdC5feit0aGlzLl93KnQuX3d9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93KX1ub3JtYWxpemUoKXtsZXQgdD10aGlzLmxlbmd0aCgpO3JldHVybiB0PT09MD8odGhpcy5feD0wLHRoaXMuX3k9MCx0aGlzLl96PTAsdGhpcy5fdz0xKToodD0xL3QsdGhpcy5feD10aGlzLl94KnQsdGhpcy5feT10aGlzLl95KnQsdGhpcy5fej10aGlzLl96KnQsdGhpcy5fdz10aGlzLl93KnQpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfW11bHRpcGx5KHQscil7cmV0dXJuIHIhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlRdWF0ZXJuaW9ucyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQscikpOnRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCx0aGlzKX1tdWx0aXBseVF1YXRlcm5pb25zKHQscil7bGV0IG49dC5feCxpPXQuX3ksbz10Ll96LGE9dC5fdyxzPXIuX3gsbD1yLl95LGM9ci5feix1PXIuX3c7cmV0dXJuIHRoaXMuX3g9bip1K2EqcytpKmMtbypsLHRoaXMuX3k9aSp1K2EqbCtvKnMtbipjLHRoaXMuX3o9byp1K2EqYytuKmwtaSpzLHRoaXMuX3c9YSp1LW4qcy1pKmwtbypjLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwKHQscil7aWYocj09PTApcmV0dXJuIHRoaXM7aWYocj09PTEpcmV0dXJuIHRoaXMuY29weSh0KTtsZXQgbj10aGlzLl94LGk9dGhpcy5feSxvPXRoaXMuX3osYT10aGlzLl93LHM9YSp0Ll93K24qdC5feCtpKnQuX3krbyp0Ll96O2lmKHM8MD8odGhpcy5fdz0tdC5fdyx0aGlzLl94PS10Ll94LHRoaXMuX3k9LXQuX3ksdGhpcy5fej0tdC5feixzPS1zKTp0aGlzLmNvcHkodCkscz49MSlyZXR1cm4gdGhpcy5fdz1hLHRoaXMuX3g9bix0aGlzLl95PWksdGhpcy5fej1vLHRoaXM7bGV0IGw9MS1zKnM7aWYobDw9TnVtYmVyLkVQU0lMT04pe2xldCBwPTEtcjtyZXR1cm4gdGhpcy5fdz1wKmErcip0aGlzLl93LHRoaXMuX3g9cCpuK3IqdGhpcy5feCx0aGlzLl95PXAqaStyKnRoaXMuX3ksdGhpcy5fej1wKm8rcip0aGlzLl96LHRoaXMubm9ybWFsaXplKCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9bGV0IGM9TWF0aC5zcXJ0KGwpLHU9TWF0aC5hdGFuMihjLHMpLGg9TWF0aC5zaW4oKDEtcikqdSkvYyxmPU1hdGguc2luKHIqdSkvYztyZXR1cm4gdGhpcy5fdz1hKmgrdGhpcy5fdypmLHRoaXMuX3g9bipoK3RoaXMuX3gqZix0aGlzLl95PWkqaCt0aGlzLl95KmYsdGhpcy5fej1vKmgrdGhpcy5feipmLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNsZXJwUXVhdGVybmlvbnModCxyLG4pe3JldHVybiB0aGlzLmNvcHkodCkuc2xlcnAocixuKX1yYW5kb20oKXtsZXQgdD1NYXRoLnJhbmRvbSgpLHI9TWF0aC5zcXJ0KDEtdCksbj1NYXRoLnNxcnQodCksaT0yKk1hdGguUEkqTWF0aC5yYW5kb20oKSxvPTIqTWF0aC5QSSpNYXRoLnJhbmRvbSgpO3JldHVybiB0aGlzLnNldChyKk1hdGguY29zKGkpLG4qTWF0aC5zaW4obyksbipNYXRoLmNvcyhvKSxyKk1hdGguc2luKGkpKX1lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX3c9PT10aGlzLl93fWZyb21BcnJheSh0LHI9MCl7cmV0dXJuIHRoaXMuX3g9dFtyXSx0aGlzLl95PXRbcisxXSx0aGlzLl96PXRbcisyXSx0aGlzLl93PXRbciszXSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10scj0wKXtyZXR1cm4gdFtyXT10aGlzLl94LHRbcisxXT10aGlzLl95LHRbcisyXT10aGlzLl96LHRbciszXT10aGlzLl93LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LHIpe3JldHVybiB0aGlzLl94PXQuZ2V0WChyKSx0aGlzLl95PXQuZ2V0WShyKSx0aGlzLl96PXQuZ2V0WihyKSx0aGlzLl93PXQuZ2V0VyhyKSx0aGlzfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fTt2aS5wcm90b3R5cGUuaXNRdWF0ZXJuaW9uPSEwO3ZhciBqPWNsYXNze2NvbnN0cnVjdG9yKHQ9MCxyPTAsbj0wKXt0aGlzLng9dCx0aGlzLnk9cix0aGlzLno9bn1zZXQodCxyLG4pe3JldHVybiBuPT09dm9pZCAwJiYobj10aGlzLnopLHRoaXMueD10LHRoaXMueT1yLHRoaXMuej1uLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzLno9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRaKHQpe3JldHVybiB0aGlzLno9dCx0aGlzfXNldENvbXBvbmVudCh0LHIpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PXI7YnJlYWs7Y2FzZSAxOnRoaXMueT1yO2JyZWFrO2Nhc2UgMjp0aGlzLno9cjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7Y2FzZSAyOnJldHVybiB0aGlzLno7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnopfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXN9YWRkKHQscil7cmV0dXJuIHIhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LHIpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcy56Kz10LnosdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXMueis9dCx0aGlzfWFkZFZlY3RvcnModCxyKXtyZXR1cm4gdGhpcy54PXQueCtyLngsdGhpcy55PXQueStyLnksdGhpcy56PXQueityLnosdGhpc31hZGRTY2FsZWRWZWN0b3IodCxyKXtyZXR1cm4gdGhpcy54Kz10Lngqcix0aGlzLnkrPXQueSpyLHRoaXMueis9dC56KnIsdGhpc31zdWIodCxyKXtyZXR1cm4gciE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQscikpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzLnotPXQueix0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpcy56LT10LHRoaXN9c3ViVmVjdG9ycyh0LHIpe3JldHVybiB0aGlzLng9dC54LXIueCx0aGlzLnk9dC55LXIueSx0aGlzLno9dC56LXIueix0aGlzfW11bHRpcGx5KHQscil7cmV0dXJuIHIhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5VmVjdG9ycyh0LHIpKToodGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpcy56Kj10LnosdGhpcyl9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXN9bXVsdGlwbHlWZWN0b3JzKHQscil7cmV0dXJuIHRoaXMueD10Lngqci54LHRoaXMueT10Lnkqci55LHRoaXMuej10Lnoqci56LHRoaXN9YXBwbHlFdWxlcih0KXtyZXR1cm4gdCYmdC5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlFdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIiksdGhpcy5hcHBseVF1YXRlcm5pb24oY3VlLnNldEZyb21FdWxlcih0KSl9YXBwbHlBeGlzQW5nbGUodCxyKXtyZXR1cm4gdGhpcy5hcHBseVF1YXRlcm5pb24oY3VlLnNldEZyb21BeGlzQW5nbGUodCxyKSl9YXBwbHlNYXRyaXgzKHQpe2xldCByPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixvPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1vWzBdKnIrb1szXSpuK29bNl0qaSx0aGlzLnk9b1sxXSpyK29bNF0qbitvWzddKmksdGhpcy56PW9bMl0qcitvWzVdKm4rb1s4XSppLHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXgzKHQpLm5vcm1hbGl6ZSgpfWFwcGx5TWF0cml4NCh0KXtsZXQgcj10aGlzLngsbj10aGlzLnksaT10aGlzLnosbz10LmVsZW1lbnRzLGE9MS8ob1szXSpyK29bN10qbitvWzExXSppK29bMTVdKTtyZXR1cm4gdGhpcy54PShvWzBdKnIrb1s0XSpuK29bOF0qaStvWzEyXSkqYSx0aGlzLnk9KG9bMV0qcitvWzVdKm4rb1s5XSppK29bMTNdKSphLHRoaXMuej0ob1syXSpyK29bNl0qbitvWzEwXSppK29bMTRdKSphLHRoaXN9YXBwbHlRdWF0ZXJuaW9uKHQpe2xldCByPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixvPXQueCxhPXQueSxzPXQueixsPXQudyxjPWwqcithKmktcypuLHU9bCpuK3Mqci1vKmksaD1sKmkrbypuLWEqcixmPS1vKnItYSpuLXMqaTtyZXR1cm4gdGhpcy54PWMqbCtmKi1vK3UqLXMtaCotYSx0aGlzLnk9dSpsK2YqLWEraCotby1jKi1zLHRoaXMuej1oKmwrZiotcytjKi1hLXUqLW8sdGhpc31wcm9qZWN0KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkSW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQucHJvamVjdGlvbk1hdHJpeCl9dW5wcm9qZWN0KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCl9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2xldCByPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixvPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1vWzBdKnIrb1s0XSpuK29bOF0qaSx0aGlzLnk9b1sxXSpyK29bNV0qbitvWzldKmksdGhpcy56PW9bMl0qcitvWzZdKm4rb1sxMF0qaSx0aGlzLm5vcm1hbGl6ZSgpfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpcy56Lz10LnosdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzfWNsYW1wKHQscil7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oci54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oci55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4oci56LHRoaXMueikpLHRoaXN9Y2xhbXBTY2FsYXIodCxyKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4ocix0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihyLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKHIsdGhpcy56KSksdGhpc31jbGFtcExlbmd0aCh0LHIpe2xldCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4ocixuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnopfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxyKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqcix0aGlzLnkrPSh0LnktdGhpcy55KSpyLHRoaXMueis9KHQuei10aGlzLnopKnIsdGhpc31sZXJwVmVjdG9ycyh0LHIsbil7cmV0dXJuIHRoaXMueD10LngrKHIueC10LngpKm4sdGhpcy55PXQueSsoci55LXQueSkqbix0aGlzLno9dC56KyhyLnotdC56KSpuLHRoaXN9Y3Jvc3ModCxyKXtyZXR1cm4gciE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuY3Jvc3MoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5jcm9zc1ZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuY3Jvc3NWZWN0b3JzKHQscikpOnRoaXMuY3Jvc3NWZWN0b3JzKHRoaXMsdCl9Y3Jvc3NWZWN0b3JzKHQscil7bGV0IG49dC54LGk9dC55LG89dC56LGE9ci54LHM9ci55LGw9ci56O3JldHVybiB0aGlzLng9aSpsLW8qcyx0aGlzLnk9byphLW4qbCx0aGlzLno9bipzLWkqYSx0aGlzfXByb2plY3RPblZlY3Rvcih0KXtsZXQgcj10Lmxlbmd0aFNxKCk7aWYocj09PTApcmV0dXJuIHRoaXMuc2V0KDAsMCwwKTtsZXQgbj10LmRvdCh0aGlzKS9yO3JldHVybiB0aGlzLmNvcHkodCkubXVsdGlwbHlTY2FsYXIobil9cHJvamVjdE9uUGxhbmUodCl7cmV0dXJuIFljdC5jb3B5KHRoaXMpLnByb2plY3RPblZlY3Rvcih0KSx0aGlzLnN1YihZY3QpfXJlZmxlY3QodCl7cmV0dXJuIHRoaXMuc3ViKFljdC5jb3B5KHQpLm11bHRpcGx5U2NhbGFyKDIqdGhpcy5kb3QodCkpKX1hbmdsZVRvKHQpe2xldCByPU1hdGguc3FydCh0aGlzLmxlbmd0aFNxKCkqdC5sZW5ndGhTcSgpKTtpZihyPT09MClyZXR1cm4gTWF0aC5QSS8yO2xldCBuPXRoaXMuZG90KHQpL3I7cmV0dXJuIE1hdGguYWNvcyhLbyhuLC0xLDEpKX1kaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VUb1NxdWFyZWQodCl7bGV0IHI9dGhpcy54LXQueCxuPXRoaXMueS10LnksaT10aGlzLnotdC56O3JldHVybiByKnIrbipuK2kqaX1tYW5oYXR0YW5EaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLmFicyh0aGlzLngtdC54KStNYXRoLmFicyh0aGlzLnktdC55KStNYXRoLmFicyh0aGlzLnotdC56KX1zZXRGcm9tU3BoZXJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21TcGhlcmljYWxDb29yZHModC5yYWRpdXMsdC5waGksdC50aGV0YSl9c2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LHIsbil7bGV0IGk9TWF0aC5zaW4ocikqdDtyZXR1cm4gdGhpcy54PWkqTWF0aC5zaW4obiksdGhpcy55PU1hdGguY29zKHIpKnQsdGhpcy56PWkqTWF0aC5jb3MobiksdGhpc31zZXRGcm9tQ3lsaW5kcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQucmFkaXVzLHQudGhldGEsdC55KX1zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModCxyLG4pe3JldHVybiB0aGlzLng9dCpNYXRoLnNpbihyKSx0aGlzLnk9bix0aGlzLno9dCpNYXRoLmNvcyhyKSx0aGlzfXNldEZyb21NYXRyaXhQb3NpdGlvbih0KXtsZXQgcj10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9clsxMl0sdGhpcy55PXJbMTNdLHRoaXMuej1yWzE0XSx0aGlzfXNldEZyb21NYXRyaXhTY2FsZSh0KXtsZXQgcj10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxuPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDEpLmxlbmd0aCgpLGk9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMikubGVuZ3RoKCk7cmV0dXJuIHRoaXMueD1yLHRoaXMueT1uLHRoaXMuej1pLHRoaXN9c2V0RnJvbU1hdHJpeENvbHVtbih0LHIpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLHIqNCl9c2V0RnJvbU1hdHJpeDNDb2x1bW4odCxyKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cyxyKjMpfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMuen1mcm9tQXJyYXkodCxyPTApe3JldHVybiB0aGlzLng9dFtyXSx0aGlzLnk9dFtyKzFdLHRoaXMuej10W3IrMl0sdGhpc310b0FycmF5KHQ9W10scj0wKXtyZXR1cm4gdFtyXT10aGlzLngsdFtyKzFdPXRoaXMueSx0W3IrMl09dGhpcy56LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LHIsbil7cmV0dXJuIG4hPT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgociksdGhpcy55PXQuZ2V0WShyKSx0aGlzLno9dC5nZXRaKHIpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXN9cmFuZG9tRGlyZWN0aW9uKCl7bGV0IHQ9KE1hdGgucmFuZG9tKCktLjUpKjIscj1NYXRoLnJhbmRvbSgpKk1hdGguUEkqMixuPU1hdGguc3FydCgxLWNkdCh0LDIpKTtyZXR1cm4gdGhpcy54PW4qTWF0aC5jb3MociksdGhpcy55PW4qTWF0aC5zaW4ociksdGhpcy56PXQsdGhpc30qW1N5bWJvbC5pdGVyYXRvcl0oKXt5aWVsZCB0aGlzLngseWllbGQgdGhpcy55LHlpZWxkIHRoaXMuen19O2oucHJvdG90eXBlLmlzVmVjdG9yMz0hMDt2YXIgWWN0PW5ldyBqLGN1ZT1uZXcgdmksUW89Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgaigxLzAsMS8wLDEvMCkscj1uZXcgaigtMS8wLC0xLzAsLTEvMCkpe3RoaXMubWluPXQsdGhpcy5tYXg9cn1zZXQodCxyKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KHIpLHRoaXN9c2V0RnJvbUFycmF5KHQpe2xldCByPTEvMCxuPTEvMCxpPTEvMCxvPS0xLzAsYT0tMS8wLHM9LTEvMDtmb3IobGV0IGw9MCxjPXQubGVuZ3RoO2w8YztsKz0zKXtsZXQgdT10W2xdLGg9dFtsKzFdLGY9dFtsKzJdO3U8ciYmKHI9dSksaDxuJiYobj1oKSxmPGkmJihpPWYpLHU+byYmKG89dSksaD5hJiYoYT1oKSxmPnMmJihzPWYpfXJldHVybiB0aGlzLm1pbi5zZXQocixuLGkpLHRoaXMubWF4LnNldChvLGEscyksdGhpc31zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpe2xldCByPTEvMCxuPTEvMCxpPTEvMCxvPS0xLzAsYT0tMS8wLHM9LTEvMDtmb3IobGV0IGw9MCxjPXQuY291bnQ7bDxjO2wrKyl7bGV0IHU9dC5nZXRYKGwpLGg9dC5nZXRZKGwpLGY9dC5nZXRaKGwpO3U8ciYmKHI9dSksaDxuJiYobj1oKSxmPGkmJihpPWYpLHU+byYmKG89dSksaD5hJiYoYT1oKSxmPnMmJihzPWYpfXJldHVybiB0aGlzLm1pbi5zZXQocixuLGkpLHRoaXMubWF4LnNldChvLGEscyksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCByPTAsbj10Lmxlbmd0aDtyPG47cisrKXRoaXMuZXhwYW5kQnlQb2ludCh0W3JdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LHIpe2xldCBuPW0xLmNvcHkocikubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihuKSx0aGlzLm1heC5jb3B5KHQpLmFkZChuKSx0aGlzfXNldEZyb21PYmplY3QodCxyPSExKXtyZXR1cm4gdGhpcy5tYWtlRW1wdHkoKSx0aGlzLmV4cGFuZEJ5T2JqZWN0KHQscil9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT10aGlzLm1pbi56PTEvMCx0aGlzLm1heC54PXRoaXMubWF4Lnk9dGhpcy5tYXguej0tMS8wLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueXx8dGhpcy5tYXguejx0aGlzLm1pbi56fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwLDApOnQuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfWdldFNpemUodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCwwKTp0LnN1YlZlY3RvcnModGhpcy5tYXgsdGhpcy5taW4pfWV4cGFuZEJ5UG9pbnQodCl7cmV0dXJuIHRoaXMubWluLm1pbih0KSx0aGlzLm1heC5tYXgodCksdGhpc31leHBhbmRCeVZlY3Rvcih0KXtyZXR1cm4gdGhpcy5taW4uc3ViKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWV4cGFuZEJ5U2NhbGFyKHQpe3JldHVybiB0aGlzLm1pbi5hZGRTY2FsYXIoLXQpLHRoaXMubWF4LmFkZFNjYWxhcih0KSx0aGlzfWV4cGFuZEJ5T2JqZWN0KHQscj0hMSl7dC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSk7bGV0IG49dC5nZW9tZXRyeTtpZihuIT09dm9pZCAwKWlmKHImJm4uYXR0cmlidXRlcyE9bnVsbCYmbi5hdHRyaWJ1dGVzLnBvc2l0aW9uIT09dm9pZCAwKXtsZXQgbz1uLmF0dHJpYnV0ZXMucG9zaXRpb247Zm9yKGxldCBhPTAscz1vLmNvdW50O2E8czthKyspbTEuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGEpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLmV4cGFuZEJ5UG9pbnQobTEpfWVsc2Ugbi5ib3VuZGluZ0JveD09PW51bGwmJm4uY29tcHV0ZUJvdW5kaW5nQm94KCksamN0LmNvcHkobi5ib3VuZGluZ0JveCksamN0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLnVuaW9uKGpjdCk7bGV0IGk9dC5jaGlsZHJlbjtmb3IobGV0IG89MCxhPWkubGVuZ3RoO288YTtvKyspdGhpcy5leHBhbmRCeU9iamVjdChpW29dLHIpO3JldHVybiB0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuISh0Lng8dGhpcy5taW4ueHx8dC54PnRoaXMubWF4Lnh8fHQueTx0aGlzLm1pbi55fHx0Lnk+dGhpcy5tYXgueXx8dC56PHRoaXMubWluLnp8fHQuej50aGlzLm1heC56KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueSYmdGhpcy5taW4uejw9dC5taW4ueiYmdC5tYXguejw9dGhpcy5tYXguen1nZXRQYXJhbWV0ZXIodCxyKXtyZXR1cm4gci5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpLCh0LnotdGhpcy5taW4ueikvKHRoaXMubWF4LnotdGhpcy5taW4ueikpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4Lnl8fHQubWF4Lno8dGhpcy5taW4uenx8dC5taW4uej50aGlzLm1heC56KX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmNsYW1wUG9pbnQodC5jZW50ZXIsbTEpLG0xLmRpc3RhbmNlVG9TcXVhcmVkKHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9aW50ZXJzZWN0c1BsYW5lKHQpe2xldCByLG47cmV0dXJuIHQubm9ybWFsLng+MD8ocj10Lm5vcm1hbC54KnRoaXMubWluLngsbj10Lm5vcm1hbC54KnRoaXMubWF4LngpOihyPXQubm9ybWFsLngqdGhpcy5tYXgueCxuPXQubm9ybWFsLngqdGhpcy5taW4ueCksdC5ub3JtYWwueT4wPyhyKz10Lm5vcm1hbC55KnRoaXMubWluLnksbis9dC5ub3JtYWwueSp0aGlzLm1heC55KToocis9dC5ub3JtYWwueSp0aGlzLm1heC55LG4rPXQubm9ybWFsLnkqdGhpcy5taW4ueSksdC5ub3JtYWwuej4wPyhyKz10Lm5vcm1hbC56KnRoaXMubWluLnosbis9dC5ub3JtYWwueip0aGlzLm1heC56KToocis9dC5ub3JtYWwueip0aGlzLm1heC56LG4rPXQubm9ybWFsLnoqdGhpcy5taW4ueikscjw9LXQuY29uc3RhbnQmJm4+PS10LmNvbnN0YW50fWludGVyc2VjdHNUcmlhbmdsZSh0KXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4hMTt0aGlzLmdldENlbnRlcihBUCksY1Yuc3ViVmVjdG9ycyh0aGlzLm1heCxBUCksdjMuc3ViVmVjdG9ycyh0LmEsQVApLHgzLnN1YlZlY3RvcnModC5iLEFQKSxiMy5zdWJWZWN0b3JzKHQuYyxBUCksUDAuc3ViVmVjdG9ycyh4Myx2MyksSTAuc3ViVmVjdG9ycyhiMyx4MyksZzEuc3ViVmVjdG9ycyh2MyxiMyk7bGV0IHI9WzAsLVAwLnosUDAueSwwLC1JMC56LEkwLnksMCwtZzEueixnMS55LFAwLnosMCwtUDAueCxJMC56LDAsLUkwLngsZzEueiwwLC1nMS54LC1QMC55LFAwLngsMCwtSTAueSxJMC54LDAsLWcxLnksZzEueCwwXTtyZXR1cm4hWGN0KHIsdjMseDMsYjMsY1YpfHwocj1bMSwwLDAsMCwxLDAsMCwwLDFdLCFYY3Qocix2Myx4MyxiMyxjVikpPyExOih1Vi5jcm9zc1ZlY3RvcnMoUDAsSTApLHI9W3VWLngsdVYueSx1Vi56XSxYY3Qocix2Myx4MyxiMyxjVikpfWNsYW1wUG9pbnQodCxyKXtyZXR1cm4gci5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIG0xLmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpLnN1Yih0KS5sZW5ndGgoKX1nZXRCb3VuZGluZ1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5nZXRDZW50ZXIodC5jZW50ZXIpLHQucmFkaXVzPXRoaXMuZ2V0U2l6ZShtMSkubGVuZ3RoKCkqLjUsdH1pbnRlcnNlY3QodCl7cmV0dXJuIHRoaXMubWluLm1heCh0Lm1pbiksdGhpcy5tYXgubWluKHQubWF4KSx0aGlzLmlzRW1wdHkoKSYmdGhpcy5tYWtlRW1wdHkoKSx0aGlzfXVuaW9uKHQpe3JldHVybiB0aGlzLm1pbi5taW4odC5taW4pLHRoaXMubWF4Lm1heCh0Lm1heCksdGhpc31hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3RoaXM6KFZkWzBdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFZkWzFdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLFZkWzJdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFZkWzNdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLFZkWzRdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFZkWzVdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLFZkWzZdLnNldCh0aGlzLm1heC54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFZkWzddLnNldCh0aGlzLm1heC54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0RnJvbVBvaW50cyhWZCksdGhpcyl9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX07UW8ucHJvdG90eXBlLmlzQm94Mz0hMDt2YXIgVmQ9W25ldyBqLG5ldyBqLG5ldyBqLG5ldyBqLG5ldyBqLG5ldyBqLG5ldyBqLG5ldyBqXSxtMT1uZXcgaixqY3Q9bmV3IFFvLHYzPW5ldyBqLHgzPW5ldyBqLGIzPW5ldyBqLFAwPW5ldyBqLEkwPW5ldyBqLGcxPW5ldyBqLEFQPW5ldyBqLGNWPW5ldyBqLHVWPW5ldyBqLF8xPW5ldyBqO2Z1bmN0aW9uIFhjdChlLHQscixuLGkpe2ZvcihsZXQgbz0wLGE9ZS5sZW5ndGgtMztvPD1hO28rPTMpe18xLmZyb21BcnJheShlLG8pO2xldCBzPWkueCpNYXRoLmFicyhfMS54KStpLnkqTWF0aC5hYnMoXzEueSkraS56Kk1hdGguYWJzKF8xLnopLGw9dC5kb3QoXzEpLGM9ci5kb3QoXzEpLHU9bi5kb3QoXzEpO2lmKE1hdGgubWF4KC1NYXRoLm1heChsLGMsdSksTWF0aC5taW4obCxjLHUpKT5zKXJldHVybiExfXJldHVybiEwfXZhciBLaHI9bmV3IFFvLHV1ZT1uZXcgaixoVj1uZXcgaiwkY3Q9bmV3IGosS2Y9Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgaixyPS0xKXt0aGlzLmNlbnRlcj10LHRoaXMucmFkaXVzPXJ9c2V0KHQscil7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodCksdGhpcy5yYWRpdXM9cix0aGlzfXNldEZyb21Qb2ludHModCxyKXtsZXQgbj10aGlzLmNlbnRlcjtyIT09dm9pZCAwP24uY29weShyKTpLaHIuc2V0RnJvbVBvaW50cyh0KS5nZXRDZW50ZXIobik7bGV0IGk9MDtmb3IobGV0IG89MCxhPXQubGVuZ3RoO288YTtvKyspaT1NYXRoLm1heChpLG4uZGlzdGFuY2VUb1NxdWFyZWQodFtvXSkpO3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQoaSksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5yYWRpdXM8MH1tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5jZW50ZXIuc2V0KDAsMCwwKSx0aGlzLnJhZGl1cz0tMSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD10aGlzLnJhZGl1cyp0aGlzLnJhZGl1c31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLmNlbnRlciktdGhpcy5yYWRpdXN9aW50ZXJzZWN0c1NwaGVyZSh0KXtsZXQgcj10aGlzLnJhZGl1cyt0LnJhZGl1cztyZXR1cm4gdC5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD1yKnJ9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzU3BoZXJlKHRoaXMpfWludGVyc2VjdHNQbGFuZSh0KXtyZXR1cm4gTWF0aC5hYnModC5kaXN0YW5jZVRvUG9pbnQodGhpcy5jZW50ZXIpKTw9dGhpcy5yYWRpdXN9Y2xhbXBQb2ludCh0LHIpe2xldCBuPXRoaXMuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHQpO3JldHVybiByLmNvcHkodCksbj50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyYmKHIuc3ViKHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKSxyLm11bHRpcGx5U2NhbGFyKHRoaXMucmFkaXVzKS5hZGQodGhpcy5jZW50ZXIpKSxyfWdldEJvdW5kaW5nQm94KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT8odC5tYWtlRW1wdHkoKSx0KToodC5zZXQodGhpcy5jZW50ZXIsdGhpcy5jZW50ZXIpLHQuZXhwYW5kQnlTY2FsYXIodGhpcy5yYWRpdXMpLHQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYXBwbHlNYXRyaXg0KHQpLHRoaXMucmFkaXVzPXRoaXMucmFkaXVzKnQuZ2V0TWF4U2NhbGVPbkF4aXMoKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYWRkKHQpLHRoaXN9ZXhwYW5kQnlQb2ludCh0KXskY3Quc3ViVmVjdG9ycyh0LHRoaXMuY2VudGVyKTtsZXQgcj0kY3QubGVuZ3RoU3EoKTtpZihyPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzKXtsZXQgbj1NYXRoLnNxcnQociksaT0obi10aGlzLnJhZGl1cykqLjU7dGhpcy5jZW50ZXIuYWRkKCRjdC5tdWx0aXBseVNjYWxhcihpL24pKSx0aGlzLnJhZGl1cys9aX1yZXR1cm4gdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5jZW50ZXIuZXF1YWxzKHQuY2VudGVyKT09PSEwP2hWLnNldCgwLDAsMSkubXVsdGlwbHlTY2FsYXIodC5yYWRpdXMpOmhWLnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQucmFkaXVzKSx0aGlzLmV4cGFuZEJ5UG9pbnQodXVlLmNvcHkodC5jZW50ZXIpLmFkZChoVikpLHRoaXMuZXhwYW5kQnlQb2ludCh1dWUuY29weSh0LmNlbnRlcikuc3ViKGhWKSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJnQucmFkaXVzPT09dGhpcy5yYWRpdXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfX0sVWQ9bmV3IGosS2N0PW5ldyBqLGZWPW5ldyBqLEwwPW5ldyBqLFpjdD1uZXcgaixwVj1uZXcgaixKY3Q9bmV3IGosWmY9Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgaixyPW5ldyBqKDAsMCwtMSkpe3RoaXMub3JpZ2luPXQsdGhpcy5kaXJlY3Rpb249cn1zZXQodCxyKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KHIpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LHIpe3JldHVybiByLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLm9yaWdpbil9bG9va0F0KHQpe3JldHVybiB0aGlzLmRpcmVjdGlvbi5jb3B5KHQpLnN1Yih0aGlzLm9yaWdpbikubm9ybWFsaXplKCksdGhpc31yZWNhc3QodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodGhpcy5hdCh0LFVkKSksdGhpc31jbG9zZXN0UG9pbnRUb1BvaW50KHQscil7ci5zdWJWZWN0b3JzKHQsdGhpcy5vcmlnaW4pO2xldCBuPXIuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbjwwP3IuY29weSh0aGlzLm9yaWdpbik6ci5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2xldCByPVVkLnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gcjwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihVZC5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihyKS5hZGQodGhpcy5vcmlnaW4pLFVkLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVNxVG9TZWdtZW50KHQscixuLGkpe0tjdC5jb3B5KHQpLmFkZChyKS5tdWx0aXBseVNjYWxhciguNSksZlYuY29weShyKS5zdWIodCkubm9ybWFsaXplKCksTDAuY29weSh0aGlzLm9yaWdpbikuc3ViKEtjdCk7bGV0IG89dC5kaXN0YW5jZVRvKHIpKi41LGE9LXRoaXMuZGlyZWN0aW9uLmRvdChmVikscz1MMC5kb3QodGhpcy5kaXJlY3Rpb24pLGw9LUwwLmRvdChmViksYz1MMC5sZW5ndGhTcSgpLHU9TWF0aC5hYnMoMS1hKmEpLGgsZixwLGQ7aWYodT4wKWlmKGg9YSpsLXMsZj1hKnMtbCxkPW8qdSxoPj0wKWlmKGY+PS1kKWlmKGY8PWQpe2xldCBnPTEvdTtoKj1nLGYqPWcscD1oKihoK2EqZisyKnMpK2YqKGEqaCtmKzIqbCkrY31lbHNlIGY9byxoPU1hdGgubWF4KDAsLShhKmYrcykpLHA9LWgqaCtmKihmKzIqbCkrYztlbHNlIGY9LW8saD1NYXRoLm1heCgwLC0oYSpmK3MpKSxwPS1oKmgrZiooZisyKmwpK2M7ZWxzZSBmPD0tZD8oaD1NYXRoLm1heCgwLC0oLWEqbytzKSksZj1oPjA/LW86TWF0aC5taW4oTWF0aC5tYXgoLW8sLWwpLG8pLHA9LWgqaCtmKihmKzIqbCkrYyk6Zjw9ZD8oaD0wLGY9TWF0aC5taW4oTWF0aC5tYXgoLW8sLWwpLG8pLHA9ZiooZisyKmwpK2MpOihoPU1hdGgubWF4KDAsLShhKm8rcykpLGY9aD4wP286TWF0aC5taW4oTWF0aC5tYXgoLW8sLWwpLG8pLHA9LWgqaCtmKihmKzIqbCkrYyk7ZWxzZSBmPWE+MD8tbzpvLGg9TWF0aC5tYXgoMCwtKGEqZitzKSkscD0taCpoK2YqKGYrMipsKStjO3JldHVybiBuJiZuLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGgpLmFkZCh0aGlzLm9yaWdpbiksaSYmaS5jb3B5KGZWKS5tdWx0aXBseVNjYWxhcihmKS5hZGQoS2N0KSxwfWludGVyc2VjdFNwaGVyZSh0LHIpe1VkLnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5vcmlnaW4pO2xldCBuPVVkLmRvdCh0aGlzLmRpcmVjdGlvbiksaT1VZC5kb3QoVWQpLW4qbixvPXQucmFkaXVzKnQucmFkaXVzO2lmKGk+bylyZXR1cm4gbnVsbDtsZXQgYT1NYXRoLnNxcnQoby1pKSxzPW4tYSxsPW4rYTtyZXR1cm4gczwwJiZsPDA/bnVsbDpzPDA/dGhpcy5hdChsLHIpOnRoaXMuYXQocyxyKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2xldCByPXQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbik7aWYocj09PTApcmV0dXJuIHQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT09PTA/MDpudWxsO2xldCBuPS0odGhpcy5vcmlnaW4uZG90KHQubm9ybWFsKSt0LmNvbnN0YW50KS9yO3JldHVybiBuPj0wP246bnVsbH1pbnRlcnNlY3RQbGFuZSh0LHIpe2xldCBuPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBuPT09bnVsbD9udWxsOnRoaXMuYXQobixyKX1pbnRlcnNlY3RzUGxhbmUodCl7bGV0IHI9dC5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pO3JldHVybiByPT09MHx8dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKSpyPDB9aW50ZXJzZWN0Qm94KHQscil7bGV0IG4saSxvLGEscyxsLGM9MS90aGlzLmRpcmVjdGlvbi54LHU9MS90aGlzLmRpcmVjdGlvbi55LGg9MS90aGlzLmRpcmVjdGlvbi56LGY9dGhpcy5vcmlnaW47cmV0dXJuIGM+PTA/KG49KHQubWluLngtZi54KSpjLGk9KHQubWF4LngtZi54KSpjKToobj0odC5tYXgueC1mLngpKmMsaT0odC5taW4ueC1mLngpKmMpLHU+PTA/KG89KHQubWluLnktZi55KSp1LGE9KHQubWF4LnktZi55KSp1KToobz0odC5tYXgueS1mLnkpKnUsYT0odC5taW4ueS1mLnkpKnUpLG4+YXx8bz5pfHwoKG8+bnx8biE9PW4pJiYobj1vKSwoYTxpfHxpIT09aSkmJihpPWEpLGg+PTA/KHM9KHQubWluLnotZi56KSpoLGw9KHQubWF4LnotZi56KSpoKToocz0odC5tYXguei1mLnopKmgsbD0odC5taW4uei1mLnopKmgpLG4+bHx8cz5pKXx8KChzPm58fG4hPT1uKSYmKG49cyksKGw8aXx8aSE9PWkpJiYoaT1sKSxpPDApP251bGw6dGhpcy5hdChuPj0wP246aSxyKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0aGlzLmludGVyc2VjdEJveCh0LFVkKSE9PW51bGx9aW50ZXJzZWN0VHJpYW5nbGUodCxyLG4saSxvKXtaY3Quc3ViVmVjdG9ycyhyLHQpLHBWLnN1YlZlY3RvcnMobix0KSxKY3QuY3Jvc3NWZWN0b3JzKFpjdCxwVik7bGV0IGE9dGhpcy5kaXJlY3Rpb24uZG90KEpjdCkscztpZihhPjApe2lmKGkpcmV0dXJuIG51bGw7cz0xfWVsc2UgaWYoYTwwKXM9LTEsYT0tYTtlbHNlIHJldHVybiBudWxsO0wwLnN1YlZlY3RvcnModGhpcy5vcmlnaW4sdCk7bGV0IGw9cyp0aGlzLmRpcmVjdGlvbi5kb3QocFYuY3Jvc3NWZWN0b3JzKEwwLHBWKSk7aWYobDwwKXJldHVybiBudWxsO2xldCBjPXMqdGhpcy5kaXJlY3Rpb24uZG90KFpjdC5jcm9zcyhMMCkpO2lmKGM8MHx8bCtjPmEpcmV0dXJuIG51bGw7bGV0IHU9LXMqTDAuZG90KEpjdCk7cmV0dXJuIHU8MD9udWxsOnRoaXMuYXQodS9hLG8pfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KHQpLHRoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmdC5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fSxNZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZWxlbWVudHM9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxyLG4saSxvLGEscyxsLGMsdSxoLGYscCxkLGcsXyl7bGV0IHk9dGhpcy5lbGVtZW50cztyZXR1cm4geVswXT10LHlbNF09cix5WzhdPW4seVsxMl09aSx5WzFdPW8seVs1XT1hLHlbOV09cyx5WzEzXT1sLHlbMl09Yyx5WzZdPXUseVsxMF09aCx5WzE0XT1mLHlbM109cCx5WzddPWQseVsxMV09Zyx5WzE1XT1fLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgTWUoKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9Y29weSh0KXtsZXQgcj10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gclswXT1uWzBdLHJbMV09blsxXSxyWzJdPW5bMl0sclszXT1uWzNdLHJbNF09bls0XSxyWzVdPW5bNV0scls2XT1uWzZdLHJbN109bls3XSxyWzhdPW5bOF0scls5XT1uWzldLHJbMTBdPW5bMTBdLHJbMTFdPW5bMTFdLHJbMTJdPW5bMTJdLHJbMTNdPW5bMTNdLHJbMTRdPW5bMTRdLHJbMTVdPW5bMTVdLHRoaXN9Y29weVBvc2l0aW9uKHQpe2xldCByPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO3JldHVybiByWzEyXT1uWzEyXSxyWzEzXT1uWzEzXSxyWzE0XT1uWzE0XSx0aGlzfXNldEZyb21NYXRyaXgzKHQpe2xldCByPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KHJbMF0sclszXSxyWzZdLDAsclsxXSxyWzRdLHJbN10sMCxyWzJdLHJbNV0scls4XSwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdEJhc2lzKHQscixuKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMCksci5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMSksbi5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMiksdGhpc31tYWtlQmFzaXModCxyLG4pe3JldHVybiB0aGlzLnNldCh0Lngsci54LG4ueCwwLHQueSxyLnksbi55LDAsdC56LHIueixuLnosMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RSb3RhdGlvbih0KXtsZXQgcj10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cyxpPTEvdzMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLG89MS93My5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMSkubGVuZ3RoKCksYT0xL3czLnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gclswXT1uWzBdKmksclsxXT1uWzFdKmksclsyXT1uWzJdKmksclszXT0wLHJbNF09bls0XSpvLHJbNV09bls1XSpvLHJbNl09bls2XSpvLHJbN109MCxyWzhdPW5bOF0qYSxyWzldPW5bOV0qYSxyWzEwXT1uWzEwXSphLHJbMTFdPTAsclsxMl09MCxyWzEzXT0wLHJbMTRdPTAsclsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21FdWxlcih0KXt0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUm90YXRpb25Gcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7bGV0IHI9dGhpcy5lbGVtZW50cyxuPXQueCxpPXQueSxvPXQueixhPU1hdGguY29zKG4pLHM9TWF0aC5zaW4obiksbD1NYXRoLmNvcyhpKSxjPU1hdGguc2luKGkpLHU9TWF0aC5jb3MobyksaD1NYXRoLnNpbihvKTtpZih0Lm9yZGVyPT09IlhZWiIpe2xldCBmPWEqdSxwPWEqaCxkPXMqdSxnPXMqaDtyWzBdPWwqdSxyWzRdPS1sKmgscls4XT1jLHJbMV09cCtkKmMscls1XT1mLWcqYyxyWzldPS1zKmwsclsyXT1nLWYqYyxyWzZdPWQrcCpjLHJbMTBdPWEqbH1lbHNlIGlmKHQub3JkZXI9PT0iWVhaIil7bGV0IGY9bCp1LHA9bCpoLGQ9Yyp1LGc9YypoO3JbMF09ZitnKnMscls0XT1kKnMtcCxyWzhdPWEqYyxyWzFdPWEqaCxyWzVdPWEqdSxyWzldPS1zLHJbMl09cCpzLWQscls2XT1nK2YqcyxyWzEwXT1hKmx9ZWxzZSBpZih0Lm9yZGVyPT09IlpYWSIpe2xldCBmPWwqdSxwPWwqaCxkPWMqdSxnPWMqaDtyWzBdPWYtZypzLHJbNF09LWEqaCxyWzhdPWQrcCpzLHJbMV09cCtkKnMscls1XT1hKnUscls5XT1nLWYqcyxyWzJdPS1hKmMscls2XT1zLHJbMTBdPWEqbH1lbHNlIGlmKHQub3JkZXI9PT0iWllYIil7bGV0IGY9YSp1LHA9YSpoLGQ9cyp1LGc9cypoO3JbMF09bCp1LHJbNF09ZCpjLXAscls4XT1mKmMrZyxyWzFdPWwqaCxyWzVdPWcqYytmLHJbOV09cCpjLWQsclsyXT0tYyxyWzZdPXMqbCxyWzEwXT1hKmx9ZWxzZSBpZih0Lm9yZGVyPT09IllaWCIpe2xldCBmPWEqbCxwPWEqYyxkPXMqbCxnPXMqYztyWzBdPWwqdSxyWzRdPWctZipoLHJbOF09ZCpoK3AsclsxXT1oLHJbNV09YSp1LHJbOV09LXMqdSxyWzJdPS1jKnUscls2XT1wKmgrZCxyWzEwXT1mLWcqaH1lbHNlIGlmKHQub3JkZXI9PT0iWFpZIil7bGV0IGY9YSpsLHA9YSpjLGQ9cypsLGc9cypjO3JbMF09bCp1LHJbNF09LWgscls4XT1jKnUsclsxXT1mKmgrZyxyWzVdPWEqdSxyWzldPXAqaC1kLHJbMl09ZCpoLXAscls2XT1zKnUsclsxMF09ZypoK2Z9cmV0dXJuIHJbM109MCxyWzddPTAsclsxMV09MCxyWzEyXT0wLHJbMTNdPTAsclsxNF09MCxyWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMuY29tcG9zZShaaHIsdCxKaHIpfWxvb2tBdCh0LHIsbil7bGV0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gTGwuc3ViVmVjdG9ycyh0LHIpLExsLmxlbmd0aFNxKCk9PT0wJiYoTGwuej0xKSxMbC5ub3JtYWxpemUoKSxrMC5jcm9zc1ZlY3RvcnMobixMbCksazAubGVuZ3RoU3EoKT09PTAmJihNYXRoLmFicyhuLnopPT09MT9MbC54Kz0xZS00OkxsLnorPTFlLTQsTGwubm9ybWFsaXplKCksazAuY3Jvc3NWZWN0b3JzKG4sTGwpKSxrMC5ub3JtYWxpemUoKSxkVi5jcm9zc1ZlY3RvcnMoTGwsazApLGlbMF09azAueCxpWzRdPWRWLngsaVs4XT1MbC54LGlbMV09azAueSxpWzVdPWRWLnksaVs5XT1MbC55LGlbMl09azAueixpWzZdPWRWLnosaVsxMF09TGwueix0aGlzfW11bHRpcGx5KHQscil7cmV0dXJuIHIhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlNYXRyaWNlcyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQscikpOnRoaXMubXVsdGlwbHlNYXRyaWNlcyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModCx0aGlzKX1tdWx0aXBseU1hdHJpY2VzKHQscil7bGV0IG49dC5lbGVtZW50cyxpPXIuZWxlbWVudHMsbz10aGlzLmVsZW1lbnRzLGE9blswXSxzPW5bNF0sbD1uWzhdLGM9blsxMl0sdT1uWzFdLGg9bls1XSxmPW5bOV0scD1uWzEzXSxkPW5bMl0sZz1uWzZdLF89blsxMF0seT1uWzE0XSx4PW5bM10sYj1uWzddLFM9blsxMV0sQz1uWzE1XSxQPWlbMF0saz1pWzRdLE89aVs4XSxEPWlbMTJdLEI9aVsxXSxJPWlbNV0sTD1pWzldLFI9aVsxM10sRj1pWzJdLHo9aVs2XSxVPWlbMTBdLFc9aVsxNF0sWj1pWzNdLHJ0PWlbN10sb3Q9aVsxMV0sc3Q9aVsxNV07cmV0dXJuIG9bMF09YSpQK3MqQitsKkYrYypaLG9bNF09YSprK3MqSStsKnorYypydCxvWzhdPWEqTytzKkwrbCpVK2Mqb3Qsb1sxMl09YSpEK3MqUitsKlcrYypzdCxvWzFdPXUqUCtoKkIrZipGK3AqWixvWzVdPXUqaytoKkkrZip6K3AqcnQsb1s5XT11Kk8raCpMK2YqVStwKm90LG9bMTNdPXUqRCtoKlIrZipXK3Aqc3Qsb1syXT1kKlArZypCK18qRit5Klosb1s2XT1kKmsrZypJK18qeit5KnJ0LG9bMTBdPWQqTytnKkwrXypVK3kqb3Qsb1sxNF09ZCpEK2cqUitfKlcreSpzdCxvWzNdPXgqUCtiKkIrUypGK0MqWixvWzddPXgqaytiKkkrUyp6K0MqcnQsb1sxMV09eCpPK2IqTCtTKlUrQypvdCxvWzE1XT14KkQrYipSK1MqVytDKnN0LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7bGV0IHI9dGhpcy5lbGVtZW50cztyZXR1cm4gclswXSo9dCxyWzRdKj10LHJbOF0qPXQsclsxMl0qPXQsclsxXSo9dCxyWzVdKj10LHJbOV0qPXQsclsxM10qPXQsclsyXSo9dCxyWzZdKj10LHJbMTBdKj10LHJbMTRdKj10LHJbM10qPXQscls3XSo9dCxyWzExXSo9dCxyWzE1XSo9dCx0aGlzfWRldGVybWluYW50KCl7bGV0IHQ9dGhpcy5lbGVtZW50cyxyPXRbMF0sbj10WzRdLGk9dFs4XSxvPXRbMTJdLGE9dFsxXSxzPXRbNV0sbD10WzldLGM9dFsxM10sdT10WzJdLGg9dFs2XSxmPXRbMTBdLHA9dFsxNF0sZD10WzNdLGc9dFs3XSxfPXRbMTFdLHk9dFsxNV07cmV0dXJuIGQqKCtvKmwqaC1pKmMqaC1vKnMqZituKmMqZitpKnMqcC1uKmwqcCkrZyooK3IqbCpwLXIqYypmK28qYSpmLWkqYSpwK2kqYyp1LW8qbCp1KStfKigrcipjKmgtcipzKnAtbyphKmgrbiphKnArbypzKnUtbipjKnUpK3kqKC1pKnMqdS1yKmwqaCtyKnMqZitpKmEqaC1uKmEqZituKmwqdSl9dHJhbnNwb3NlKCl7bGV0IHQ9dGhpcy5lbGVtZW50cyxyO3JldHVybiByPXRbMV0sdFsxXT10WzRdLHRbNF09cixyPXRbMl0sdFsyXT10WzhdLHRbOF09cixyPXRbNl0sdFs2XT10WzldLHRbOV09cixyPXRbM10sdFszXT10WzEyXSx0WzEyXT1yLHI9dFs3XSx0WzddPXRbMTNdLHRbMTNdPXIscj10WzExXSx0WzExXT10WzE0XSx0WzE0XT1yLHRoaXN9c2V0UG9zaXRpb24odCxyLG4pe2xldCBpPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQuaXNWZWN0b3IzPyhpWzEyXT10LngsaVsxM109dC55LGlbMTRdPXQueik6KGlbMTJdPXQsaVsxM109cixpWzE0XT1uKSx0aGlzfWludmVydCgpe2xldCB0PXRoaXMuZWxlbWVudHMscj10WzBdLG49dFsxXSxpPXRbMl0sbz10WzNdLGE9dFs0XSxzPXRbNV0sbD10WzZdLGM9dFs3XSx1PXRbOF0saD10WzldLGY9dFsxMF0scD10WzExXSxkPXRbMTJdLGc9dFsxM10sXz10WzE0XSx5PXRbMTVdLHg9aCpfKmMtZypmKmMrZypsKnAtcypfKnAtaCpsKnkrcypmKnksYj1kKmYqYy11Kl8qYy1kKmwqcCthKl8qcCt1KmwqeS1hKmYqeSxTPXUqZypjLWQqaCpjK2QqcypwLWEqZypwLXUqcyp5K2EqaCp5LEM9ZCpoKmwtdSpnKmwtZCpzKmYrYSpnKmYrdSpzKl8tYSpoKl8sUD1yKngrbipiK2kqUytvKkM7aWYoUD09PTApcmV0dXJuIHRoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDApO2xldCBrPTEvUDtyZXR1cm4gdFswXT14KmssdFsxXT0oZypmKm8taCpfKm8tZyppKnArbipfKnAraCppKnktbipmKnkpKmssdFsyXT0ocypfKm8tZypsKm8rZyppKmMtbipfKmMtcyppKnkrbipsKnkpKmssdFszXT0oaCpsKm8tcypmKm8taCppKmMrbipmKmMrcyppKnAtbipsKnApKmssdFs0XT1iKmssdFs1XT0odSpfKm8tZCpmKm8rZCppKnAtcipfKnAtdSppKnkrcipmKnkpKmssdFs2XT0oZCpsKm8tYSpfKm8tZCppKmMrcipfKmMrYSppKnktcipsKnkpKmssdFs3XT0oYSpmKm8tdSpsKm8rdSppKmMtcipmKmMtYSppKnArcipsKnApKmssdFs4XT1TKmssdFs5XT0oZCpoKm8tdSpnKm8tZCpuKnArcipnKnArdSpuKnktcipoKnkpKmssdFsxMF09KGEqZypvLWQqcypvK2QqbipjLXIqZypjLWEqbip5K3Iqcyp5KSprLHRbMTFdPSh1KnMqby1hKmgqby11Km4qYytyKmgqYythKm4qcC1yKnMqcCkqayx0WzEyXT1DKmssdFsxM109KHUqZyppLWQqaCppK2QqbipmLXIqZypmLXUqbipfK3IqaCpfKSprLHRbMTRdPShkKnMqaS1hKmcqaS1kKm4qbCtyKmcqbCthKm4qXy1yKnMqXykqayx0WzE1XT0oYSpoKmktdSpzKmkrdSpuKmwtcipoKmwtYSpuKmYrcipzKmYpKmssdGhpc31zY2FsZSh0KXtsZXQgcj10aGlzLmVsZW1lbnRzLG49dC54LGk9dC55LG89dC56O3JldHVybiByWzBdKj1uLHJbNF0qPWkscls4XSo9byxyWzFdKj1uLHJbNV0qPWkscls5XSo9byxyWzJdKj1uLHJbNl0qPWksclsxMF0qPW8sclszXSo9bixyWzddKj1pLHJbMTFdKj1vLHRoaXN9Z2V0TWF4U2NhbGVPbkF4aXMoKXtsZXQgdD10aGlzLmVsZW1lbnRzLHI9dFswXSp0WzBdK3RbMV0qdFsxXSt0WzJdKnRbMl0sbj10WzRdKnRbNF0rdFs1XSp0WzVdK3RbNl0qdFs2XSxpPXRbOF0qdFs4XSt0WzldKnRbOV0rdFsxMF0qdFsxMF07cmV0dXJuIE1hdGguc3FydChNYXRoLm1heChyLG4saSkpfW1ha2VUcmFuc2xhdGlvbih0LHIsbil7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLHQsMCwxLDAsciwwLDAsMSxuLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWCh0KXtsZXQgcj1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDAsciwtbiwwLDAsbixyLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25ZKHQpe2xldCByPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KHIsMCxuLDAsMCwxLDAsMCwtbiwwLHIsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbloodCl7bGV0IHI9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQociwtbiwwLDAsbixyLDAsMCwwLDAsMSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uQXhpcyh0LHIpe2xldCBuPU1hdGguY29zKHIpLGk9TWF0aC5zaW4ociksbz0xLW4sYT10Lngscz10LnksbD10LnosYz1vKmEsdT1vKnM7cmV0dXJuIHRoaXMuc2V0KGMqYStuLGMqcy1pKmwsYypsK2kqcywwLGMqcytpKmwsdSpzK24sdSpsLWkqYSwwLGMqbC1pKnMsdSpsK2kqYSxvKmwqbCtuLDAsMCwwLDAsMSksdGhpc31tYWtlU2NhbGUodCxyLG4pe3JldHVybiB0aGlzLnNldCh0LDAsMCwwLDAsciwwLDAsMCwwLG4sMCwwLDAsMCwxKSx0aGlzfW1ha2VTaGVhcih0LHIsbixpLG8sYSl7cmV0dXJuIHRoaXMuc2V0KDEsbixvLDAsdCwxLGEsMCxyLGksMSwwLDAsMCwwLDEpLHRoaXN9Y29tcG9zZSh0LHIsbil7bGV0IGk9dGhpcy5lbGVtZW50cyxvPXIuX3gsYT1yLl95LHM9ci5feixsPXIuX3csYz1vK28sdT1hK2EsaD1zK3MsZj1vKmMscD1vKnUsZD1vKmgsZz1hKnUsXz1hKmgseT1zKmgseD1sKmMsYj1sKnUsUz1sKmgsQz1uLngsUD1uLnksaz1uLno7cmV0dXJuIGlbMF09KDEtKGcreSkpKkMsaVsxXT0ocCtTKSpDLGlbMl09KGQtYikqQyxpWzNdPTAsaVs0XT0ocC1TKSpQLGlbNV09KDEtKGYreSkpKlAsaVs2XT0oXyt4KSpQLGlbN109MCxpWzhdPShkK2IpKmssaVs5XT0oXy14KSprLGlbMTBdPSgxLShmK2cpKSprLGlbMTFdPTAsaVsxMl09dC54LGlbMTNdPXQueSxpWzE0XT10LnosaVsxNV09MSx0aGlzfWRlY29tcG9zZSh0LHIsbil7bGV0IGk9dGhpcy5lbGVtZW50cyxvPXczLnNldChpWzBdLGlbMV0saVsyXSkubGVuZ3RoKCksYT13My5zZXQoaVs0XSxpWzVdLGlbNl0pLmxlbmd0aCgpLHM9dzMuc2V0KGlbOF0saVs5XSxpWzEwXSkubGVuZ3RoKCk7dGhpcy5kZXRlcm1pbmFudCgpPDAmJihvPS1vKSx0Lng9aVsxMl0sdC55PWlbMTNdLHQuej1pWzE0XSxuaC5jb3B5KHRoaXMpO2xldCBjPTEvbyx1PTEvYSxoPTEvcztyZXR1cm4gbmguZWxlbWVudHNbMF0qPWMsbmguZWxlbWVudHNbMV0qPWMsbmguZWxlbWVudHNbMl0qPWMsbmguZWxlbWVudHNbNF0qPXUsbmguZWxlbWVudHNbNV0qPXUsbmguZWxlbWVudHNbNl0qPXUsbmguZWxlbWVudHNbOF0qPWgsbmguZWxlbWVudHNbOV0qPWgsbmguZWxlbWVudHNbMTBdKj1oLHIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KG5oKSxuLng9byxuLnk9YSxuLno9cyx0aGlzfW1ha2VQZXJzcGVjdGl2ZSh0LHIsbixpLG8sYSl7YT09PXZvaWQgMCYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZVBlcnNwZWN0aXZlKCkgaGFzIGJlZW4gcmVkZWZpbmVkIGFuZCBoYXMgYSBuZXcgc2lnbmF0dXJlLiBQbGVhc2UgY2hlY2sgdGhlIGRvY3MuIik7bGV0IHM9dGhpcy5lbGVtZW50cyxsPTIqby8oci10KSxjPTIqby8obi1pKSx1PShyK3QpLyhyLXQpLGg9KG4raSkvKG4taSksZj0tKGErbykvKGEtbykscD0tMiphKm8vKGEtbyk7cmV0dXJuIHNbMF09bCxzWzRdPTAsc1s4XT11LHNbMTJdPTAsc1sxXT0wLHNbNV09YyxzWzldPWgsc1sxM109MCxzWzJdPTAsc1s2XT0wLHNbMTBdPWYsc1sxNF09cCxzWzNdPTAsc1s3XT0wLHNbMTFdPS0xLHNbMTVdPTAsdGhpc31tYWtlT3J0aG9ncmFwaGljKHQscixuLGksbyxhKXtsZXQgcz10aGlzLmVsZW1lbnRzLGw9MS8oci10KSxjPTEvKG4taSksdT0xLyhhLW8pLGg9KHIrdCkqbCxmPShuK2kpKmMscD0oYStvKSp1O3JldHVybiBzWzBdPTIqbCxzWzRdPTAsc1s4XT0wLHNbMTJdPS1oLHNbMV09MCxzWzVdPTIqYyxzWzldPTAsc1sxM109LWYsc1syXT0wLHNbNl09MCxzWzEwXT0tMip1LHNbMTRdPS1wLHNbM109MCxzWzddPTAsc1sxMV09MCxzWzE1XT0xLHRoaXN9ZXF1YWxzKHQpe2xldCByPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgaT0wO2k8MTY7aSsrKWlmKHJbaV0hPT1uW2ldKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LHI9MCl7Zm9yKGxldCBuPTA7bjwxNjtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rcl07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLHI9MCl7bGV0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gdFtyXT1uWzBdLHRbcisxXT1uWzFdLHRbcisyXT1uWzJdLHRbciszXT1uWzNdLHRbcis0XT1uWzRdLHRbcis1XT1uWzVdLHRbcis2XT1uWzZdLHRbcis3XT1uWzddLHRbcis4XT1uWzhdLHRbcis5XT1uWzldLHRbcisxMF09blsxMF0sdFtyKzExXT1uWzExXSx0W3IrMTJdPW5bMTJdLHRbcisxM109blsxM10sdFtyKzE0XT1uWzE0XSx0W3IrMTVdPW5bMTVdLHR9fTtNZS5wcm90b3R5cGUuaXNNYXRyaXg0PSEwO3ZhciB3Mz1uZXcgaixuaD1uZXcgTWUsWmhyPW5ldyBqKDAsMCwwKSxKaHI9bmV3IGooMSwxLDEpLGswPW5ldyBqLGRWPW5ldyBqLExsPW5ldyBqLGh1ZT1uZXcgTWUsZnVlPW5ldyB2aSx0bT1jbGFzc3tjb25zdHJ1Y3Rvcih0PTAscj0wLG49MCxpPXRtLkRlZmF1bHRPcmRlcil7dGhpcy5feD10LHRoaXMuX3k9cix0aGlzLl96PW4sdGhpcy5fb3JkZXI9aX1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgb3JkZXIoKXtyZXR1cm4gdGhpcy5fb3JkZXJ9c2V0IG9yZGVyKHQpe3RoaXMuX29yZGVyPXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LHIsbixpPXRoaXMuX29yZGVyKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9cix0aGlzLl96PW4sdGhpcy5fb3JkZXI9aSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl9vcmRlcil9Y29weSh0KXtyZXR1cm4gdGhpcy5feD10Ll94LHRoaXMuX3k9dC5feSx0aGlzLl96PXQuX3osdGhpcy5fb3JkZXI9dC5fb3JkZXIsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQscj10aGlzLl9vcmRlcixuPSEwKXtsZXQgaT10LmVsZW1lbnRzLG89aVswXSxhPWlbNF0scz1pWzhdLGw9aVsxXSxjPWlbNV0sdT1pWzldLGg9aVsyXSxmPWlbNl0scD1pWzEwXTtzd2l0Y2gocil7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKEtvKHMsLTEsMSkpLE1hdGguYWJzKHMpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIoLXUscCksdGhpcy5fej1NYXRoLmF0YW4yKC1hLG8pKToodGhpcy5feD1NYXRoLmF0YW4yKGYsYyksdGhpcy5fej0wKTticmVhaztjYXNlIllYWiI6dGhpcy5feD1NYXRoLmFzaW4oLUtvKHUsLTEsMSkpLE1hdGguYWJzKHUpPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIocyxwKSx0aGlzLl96PU1hdGguYXRhbjIobCxjKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtaCxvKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PU1hdGguYXNpbihLbyhmLC0xLDEpKSxNYXRoLmFicyhmKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC1oLHApLHRoaXMuX3o9TWF0aC5hdGFuMigtYSxjKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIobCxvKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC1LbyhoLC0xLDEpKSxNYXRoLmFicyhoKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKGYscCksdGhpcy5fej1NYXRoLmF0YW4yKGwsbykpOih0aGlzLl94PTAsdGhpcy5fej1NYXRoLmF0YW4yKC1hLGMpKTticmVhaztjYXNlIllaWCI6dGhpcy5fej1NYXRoLmFzaW4oS28obCwtMSwxKSksTWF0aC5hYnMobCk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtdSxjKSx0aGlzLl95PU1hdGguYXRhbjIoLWgsbykpOih0aGlzLl94PTAsdGhpcy5feT1NYXRoLmF0YW4yKHMscCkpO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl96PU1hdGguYXNpbigtS28oYSwtMSwxKSksTWF0aC5hYnMoYSk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihmLGMpLHRoaXMuX3k9TWF0aC5hdGFuMihzLG8pKToodGhpcy5feD1NYXRoLmF0YW4yKC11LHApLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIityKX1yZXR1cm4gdGhpcy5fb3JkZXI9cixuPT09ITAmJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQscixuKXtyZXR1cm4gaHVlLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGh1ZSxyLG4pfXNldEZyb21WZWN0b3IzKHQscj10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuc2V0KHQueCx0LnksdC56LHIpfXJlb3JkZXIodCl7cmV0dXJuIGZ1ZS5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbihmdWUsdCl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll9vcmRlcj09PXRoaXMuX29yZGVyfWZyb21BcnJheSh0KXtyZXR1cm4gdGhpcy5feD10WzBdLHRoaXMuX3k9dFsxXSx0aGlzLl96PXRbMl0sdFszXSE9PXZvaWQgMCYmKHRoaXMuX29yZGVyPXRbM10pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxyPTApe3JldHVybiB0W3JdPXRoaXMuX3gsdFtyKzFdPXRoaXMuX3ksdFtyKzJdPXRoaXMuX3osdFtyKzNdPXRoaXMuX29yZGVyLHR9dG9WZWN0b3IzKHQpe3JldHVybiB0P3Quc2V0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KTpuZXcgaih0aGlzLl94LHRoaXMuX3ksdGhpcy5feil9X29uQ2hhbmdlKHQpe3JldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPXQsdGhpc31fb25DaGFuZ2VDYWxsYmFjaygpe319O3RtLnByb3RvdHlwZS5pc0V1bGVyPSEwO3RtLkRlZmF1bHRPcmRlcj0iWFlaIjt0bS5Sb3RhdGlvbk9yZGVycz1bIlhZWiIsIllaWCIsIlpYWSIsIlhaWSIsIllYWiIsIlpZWCJdO3ZhciBqMz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMubWFzaz0xfXNldCh0KXt0aGlzLm1hc2s9KDE8PHR8MCk+Pj4wfWVuYWJsZSh0KXt0aGlzLm1hc2t8PTE8PHR8MH1lbmFibGVBbGwoKXt0aGlzLm1hc2s9LTF9dG9nZ2xlKHQpe3RoaXMubWFza149MTw8dHwwfWRpc2FibGUodCl7dGhpcy5tYXNrJj1+KDE8PHR8MCl9ZGlzYWJsZUFsbCgpe3RoaXMubWFzaz0wfXRlc3QodCl7cmV0dXJuKHRoaXMubWFzayZ0Lm1hc2spIT09MH1pc0VuYWJsZWQodCl7cmV0dXJuKHRoaXMubWFzayYoMTw8dHwwKSkhPT0wfX0sUWhyPTAscHVlPW5ldyBqLFMzPW5ldyB2aSxxZD1uZXcgTWUsbVY9bmV3IGosUFA9bmV3IGosdGZyPW5ldyBqLGVmcj1uZXcgdmksZHVlPW5ldyBqKDEsMCwwKSxtdWU9bmV3IGooMCwxLDApLGd1ZT1uZXcgaigwLDAsMSkscmZyPXt0eXBlOiJhZGRlZCJ9LF91ZT17dHlwZToicmVtb3ZlZCJ9LG9yPWNsYXNzIGV4dGVuZHMgVnN7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlFocisrfSksdGhpcy51dWlkPVJsKCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iT2JqZWN0M0QiLHRoaXMucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbj1bXSx0aGlzLnVwPW9yLkRlZmF1bHRVcC5jbG9uZSgpO2xldCB0PW5ldyBqLHI9bmV3IHRtLG49bmV3IHZpLGk9bmV3IGooMSwxLDEpO2Z1bmN0aW9uIG8oKXtuLnNldEZyb21FdWxlcihyLCExKX1mdW5jdGlvbiBhKCl7ci5zZXRGcm9tUXVhdGVybmlvbihuLHZvaWQgMCwhMSl9ci5fb25DaGFuZ2Uobyksbi5fb25DaGFuZ2UoYSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7cG9zaXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnR9LHJvdGF0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpyfSxxdWF0ZXJuaW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpufSxzY2FsZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6aX0sbW9kZWxWaWV3TWF0cml4Ont2YWx1ZTpuZXcgTWV9LG5vcm1hbE1hdHJpeDp7dmFsdWU6bmV3IGtpfX0pLHRoaXMubWF0cml4PW5ldyBNZSx0aGlzLm1hdHJpeFdvcmxkPW5ldyBNZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9b3IuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExLHRoaXMubGF5ZXJzPW5ldyBqMyx0aGlzLnZpc2libGU9ITAsdGhpcy5jYXN0U2hhZG93PSExLHRoaXMucmVjZWl2ZVNoYWRvdz0hMSx0aGlzLmZydXN0dW1DdWxsZWQ9ITAsdGhpcy5yZW5kZXJPcmRlcj0wLHRoaXMuYW5pbWF0aW9ucz1bXSx0aGlzLnVzZXJEYXRhPXt9fW9uQmVmb3JlUmVuZGVyKCl7fW9uQWZ0ZXJSZW5kZXIoKXt9YXBwbHlNYXRyaXg0KHQpe3RoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLm1hdHJpeC5wcmVtdWx0aXBseSh0KSx0aGlzLm1hdHJpeC5kZWNvbXBvc2UodGhpcy5wb3NpdGlvbix0aGlzLnF1YXRlcm5pb24sdGhpcy5zY2FsZSl9YXBwbHlRdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkodCksdGhpc31zZXRSb3RhdGlvbkZyb21BeGlzQW5nbGUodCxyKXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUF4aXNBbmdsZSh0LHIpfXNldFJvdGF0aW9uRnJvbUV1bGVyKHQpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tRXVsZXIodCwhMCl9c2V0Um90YXRpb25Gcm9tTWF0cml4KHQpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgodCl9c2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbih0KXt0aGlzLnF1YXRlcm5pb24uY29weSh0KX1yb3RhdGVPbkF4aXModCxyKXtyZXR1cm4gUzMuc2V0RnJvbUF4aXNBbmdsZSh0LHIpLHRoaXMucXVhdGVybmlvbi5tdWx0aXBseShTMyksdGhpc31yb3RhdGVPbldvcmxkQXhpcyh0LHIpe3JldHVybiBTMy5zZXRGcm9tQXhpc0FuZ2xlKHQsciksdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KFMzKSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKGR1ZSx0KX1yb3RhdGVZKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhtdWUsdCl9cm90YXRlWih0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoZ3VlLHQpfXRyYW5zbGF0ZU9uQXhpcyh0LHIpe3JldHVybiBwdWUuY29weSh0KS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKSx0aGlzLnBvc2l0aW9uLmFkZChwdWUubXVsdGlwbHlTY2FsYXIocikpLHRoaXN9dHJhbnNsYXRlWCh0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoZHVlLHQpfXRyYW5zbGF0ZVkodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKG11ZSx0KX10cmFuc2xhdGVaKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhndWUsdCl9bG9jYWxUb1dvcmxkKHQpe3JldHVybiB0LmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKX13b3JsZFRvTG9jYWwodCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHFkLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCkpfWxvb2tBdCh0LHIsbil7dC5pc1ZlY3RvcjM/bVYuY29weSh0KTptVi5zZXQodCxyLG4pO2xldCBpPXRoaXMucGFyZW50O3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLFBQLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmlzQ2FtZXJhfHx0aGlzLmlzTGlnaHQ/cWQubG9va0F0KFBQLG1WLHRoaXMudXApOnFkLmxvb2tBdChtVixQUCx0aGlzLnVwKSx0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHFkKSxpJiYocWQuZXh0cmFjdFJvdGF0aW9uKGkubWF0cml4V29ybGQpLFMzLnNldEZyb21Sb3RhdGlvbk1hdHJpeChxZCksdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KFMzLmludmVydCgpKSl9YWRkKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7Zm9yKGxldCByPTA7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0aGlzLmFkZChhcmd1bWVudHNbcl0pO3JldHVybiB0aGlzfXJldHVybiB0PT09dGhpcz8oY29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3QgY2FuJ3QgYmUgYWRkZWQgYXMgYSBjaGlsZCBvZiBpdHNlbGYuIix0KSx0aGlzKToodCYmdC5pc09iamVjdDNEPyh0LnBhcmVudCE9PW51bGwmJnQucGFyZW50LnJlbW92ZSh0KSx0LnBhcmVudD10aGlzLHRoaXMuY2hpbGRyZW4ucHVzaCh0KSx0LmRpc3BhdGNoRXZlbnQocmZyKSk6Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3Qgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLk9iamVjdDNELiIsdCksdGhpcyl9cmVtb3ZlKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7Zm9yKGxldCBuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0aGlzLnJlbW92ZShhcmd1bWVudHNbbl0pO3JldHVybiB0aGlzfWxldCByPXRoaXMuY2hpbGRyZW4uaW5kZXhPZih0KTtyZXR1cm4gciE9PS0xJiYodC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuLnNwbGljZShyLDEpLHQuZGlzcGF0Y2hFdmVudChfdWUpKSx0aGlzfXJlbW92ZUZyb21QYXJlbnQoKXtsZXQgdD10aGlzLnBhcmVudDtyZXR1cm4gdCE9PW51bGwmJnQucmVtb3ZlKHRoaXMpLHRoaXN9Y2xlYXIoKXtmb3IobGV0IHQ9MDt0PHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3QrKyl7bGV0IHI9dGhpcy5jaGlsZHJlblt0XTtyLnBhcmVudD1udWxsLHIuZGlzcGF0Y2hFdmVudChfdWUpfXJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD0wLHRoaXN9YXR0YWNoKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxxZC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpLHQucGFyZW50IT09bnVsbCYmKHQucGFyZW50LnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxxZC5tdWx0aXBseSh0LnBhcmVudC5tYXRyaXhXb3JsZCkpLHQuYXBwbHlNYXRyaXg0KHFkKSx0aGlzLmFkZCh0KSx0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKSx0aGlzfWdldE9iamVjdEJ5SWQodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgiaWQiLHQpfWdldE9iamVjdEJ5TmFtZSh0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJuYW1lIix0KX1nZXRPYmplY3RCeVByb3BlcnR5KHQscil7aWYodGhpc1t0XT09PXIpcmV0dXJuIHRoaXM7Zm9yKGxldCBuPTAsaT10aGlzLmNoaWxkcmVuLmxlbmd0aDtuPGk7bisrKXtsZXQgYT10aGlzLmNoaWxkcmVuW25dLmdldE9iamVjdEJ5UHJvcGVydHkodCxyKTtpZihhIT09dm9pZCAwKXJldHVybiBhfX1nZXRXb3JsZFBvc2l0aW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKX1nZXRXb3JsZFF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKFBQLHQsdGZyKSx0fWdldFdvcmxkU2NhbGUodCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKFBQLGVmcix0KSx0fWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2xldCByPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KHJbOF0scls5XSxyWzEwXSkubm9ybWFsaXplKCl9cmF5Y2FzdCgpe310cmF2ZXJzZSh0KXt0KHRoaXMpO2xldCByPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1yLmxlbmd0aDtuPGk7bisrKXJbbl0udHJhdmVyc2UodCl9dHJhdmVyc2VWaXNpYmxlKHQpe2lmKHRoaXMudmlzaWJsZT09PSExKXJldHVybjt0KHRoaXMpO2xldCByPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1yLmxlbmd0aDtuPGk7bisrKXJbbl0udHJhdmVyc2VWaXNpYmxlKHQpfXRyYXZlcnNlQW5jZXN0b3JzKHQpe2xldCByPXRoaXMucGFyZW50O3IhPT1udWxsJiYodChyKSxyLnRyYXZlcnNlQW5jZXN0b3JzKHQpKX11cGRhdGVNYXRyaXgoKXt0aGlzLm1hdHJpeC5jb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH11cGRhdGVNYXRyaXhXb3JsZCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksKHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZXx8dCkmJih0aGlzLnBhcmVudD09PW51bGw/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0PSEwKTtsZXQgcj10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLGk9ci5sZW5ndGg7bjxpO24rKylyW25dLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfXVwZGF0ZVdvcmxkTWF0cml4KHQscil7bGV0IG49dGhpcy5wYXJlbnQ7aWYodD09PSEwJiZuIT09bnVsbCYmbi51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMucGFyZW50PT09bnVsbD90aGlzLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5tYXRyaXgpOnRoaXMubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLnBhcmVudC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeCkscj09PSEwKXtsZXQgaT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbz0wLGE9aS5sZW5ndGg7bzxhO28rKylpW29dLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX19dG9KU09OKHQpe2xldCByPXQ9PT12b2lkIDB8fHR5cGVvZiB0PT0ic3RyaW5nIixuPXt9O3ImJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxuLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2xldCBpPXt9O2kudXVpZD10aGlzLnV1aWQsaS50eXBlPXRoaXMudHlwZSx0aGlzLm5hbWUhPT0iIiYmKGkubmFtZT10aGlzLm5hbWUpLHRoaXMuY2FzdFNoYWRvdz09PSEwJiYoaS5jYXN0U2hhZG93PSEwKSx0aGlzLnJlY2VpdmVTaGFkb3c9PT0hMCYmKGkucmVjZWl2ZVNoYWRvdz0hMCksdGhpcy52aXNpYmxlPT09ITEmJihpLnZpc2libGU9ITEpLHRoaXMuZnJ1c3R1bUN1bGxlZD09PSExJiYoaS5mcnVzdHVtQ3VsbGVkPSExKSx0aGlzLnJlbmRlck9yZGVyIT09MCYmKGkucmVuZGVyT3JkZXI9dGhpcy5yZW5kZXJPcmRlciksSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkhPT0ie30iJiYoaS51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxpLmxheWVycz10aGlzLmxheWVycy5tYXNrLGkubWF0cml4PXRoaXMubWF0cml4LnRvQXJyYXkoKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9PT0hMSYmKGkubWF0cml4QXV0b1VwZGF0ZT0hMSksdGhpcy5pc0luc3RhbmNlZE1lc2gmJihpLnR5cGU9Ikluc3RhbmNlZE1lc2giLGkuY291bnQ9dGhpcy5jb3VudCxpLmluc3RhbmNlTWF0cml4PXRoaXMuaW5zdGFuY2VNYXRyaXgudG9KU09OKCksdGhpcy5pbnN0YW5jZUNvbG9yIT09bnVsbCYmKGkuaW5zdGFuY2VDb2xvcj10aGlzLmluc3RhbmNlQ29sb3IudG9KU09OKCkpKTtmdW5jdGlvbiBvKHMsbCl7cmV0dXJuIHNbbC51dWlkXT09PXZvaWQgMCYmKHNbbC51dWlkXT1sLnRvSlNPTih0KSksbC51dWlkfWlmKHRoaXMuaXNTY2VuZSl0aGlzLmJhY2tncm91bmQmJih0aGlzLmJhY2tncm91bmQuaXNDb2xvcj9pLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kLnRvSlNPTigpOnRoaXMuYmFja2dyb3VuZC5pc1RleHR1cmUmJihpLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kLnRvSlNPTih0KS51dWlkKSksdGhpcy5lbnZpcm9ubWVudCYmdGhpcy5lbnZpcm9ubWVudC5pc1RleHR1cmUmJihpLmVudmlyb25tZW50PXRoaXMuZW52aXJvbm1lbnQudG9KU09OKHQpLnV1aWQpO2Vsc2UgaWYodGhpcy5pc01lc2h8fHRoaXMuaXNMaW5lfHx0aGlzLmlzUG9pbnRzKXtpLmdlb21ldHJ5PW8odC5nZW9tZXRyaWVzLHRoaXMuZ2VvbWV0cnkpO2xldCBzPXRoaXMuZ2VvbWV0cnkucGFyYW1ldGVycztpZihzIT09dm9pZCAwJiZzLnNoYXBlcyE9PXZvaWQgMCl7bGV0IGw9cy5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShsKSlmb3IobGV0IGM9MCx1PWwubGVuZ3RoO2M8dTtjKyspe2xldCBoPWxbY107byh0LnNoYXBlcyxoKX1lbHNlIG8odC5zaGFwZXMsbCl9fWlmKHRoaXMuaXNTa2lubmVkTWVzaCYmKGkuYmluZE1vZGU9dGhpcy5iaW5kTW9kZSxpLmJpbmRNYXRyaXg9dGhpcy5iaW5kTWF0cml4LnRvQXJyYXkoKSx0aGlzLnNrZWxldG9uIT09dm9pZCAwJiYobyh0LnNrZWxldG9ucyx0aGlzLnNrZWxldG9uKSxpLnNrZWxldG9uPXRoaXMuc2tlbGV0b24udXVpZCkpLHRoaXMubWF0ZXJpYWwhPT12b2lkIDApaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7bGV0IHM9W107Zm9yKGxldCBsPTAsYz10aGlzLm1hdGVyaWFsLmxlbmd0aDtsPGM7bCsrKXMucHVzaChvKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWxbbF0pKTtpLm1hdGVyaWFsPXN9ZWxzZSBpLm1hdGVyaWFsPW8odC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbCk7aWYodGhpcy5jaGlsZHJlbi5sZW5ndGg+MCl7aS5jaGlsZHJlbj1bXTtmb3IobGV0IHM9MDtzPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO3MrKylpLmNoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltzXS50b0pTT04odCkub2JqZWN0KX1pZih0aGlzLmFuaW1hdGlvbnMubGVuZ3RoPjApe2kuYW5pbWF0aW9ucz1bXTtmb3IobGV0IHM9MDtzPHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg7cysrKXtsZXQgbD10aGlzLmFuaW1hdGlvbnNbc107aS5hbmltYXRpb25zLnB1c2gobyh0LmFuaW1hdGlvbnMsbCkpfX1pZihyKXtsZXQgcz1hKHQuZ2VvbWV0cmllcyksbD1hKHQubWF0ZXJpYWxzKSxjPWEodC50ZXh0dXJlcyksdT1hKHQuaW1hZ2VzKSxoPWEodC5zaGFwZXMpLGY9YSh0LnNrZWxldG9ucykscD1hKHQuYW5pbWF0aW9ucyk7cy5sZW5ndGg+MCYmKG4uZ2VvbWV0cmllcz1zKSxsLmxlbmd0aD4wJiYobi5tYXRlcmlhbHM9bCksYy5sZW5ndGg+MCYmKG4udGV4dHVyZXM9YyksdS5sZW5ndGg+MCYmKG4uaW1hZ2VzPXUpLGgubGVuZ3RoPjAmJihuLnNoYXBlcz1oKSxmLmxlbmd0aD4wJiYobi5za2VsZXRvbnM9ZikscC5sZW5ndGg+MCYmKG4uYW5pbWF0aW9ucz1wKX1yZXR1cm4gbi5vYmplY3Q9aSxuO2Z1bmN0aW9uIGEocyl7bGV0IGw9W107Zm9yKGxldCBjIGluIHMpe2xldCB1PXNbY107ZGVsZXRlIHUubWV0YWRhdGEsbC5wdXNoKHUpfXJldHVybiBsfX1jbG9uZSh0KXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMsdCl9Y29weSh0LHI9ITApe2lmKHRoaXMubmFtZT10Lm5hbWUsdGhpcy51cC5jb3B5KHQudXApLHRoaXMucG9zaXRpb24uY29weSh0LnBvc2l0aW9uKSx0aGlzLnJvdGF0aW9uLm9yZGVyPXQucm90YXRpb24ub3JkZXIsdGhpcy5xdWF0ZXJuaW9uLmNvcHkodC5xdWF0ZXJuaW9uKSx0aGlzLnNjYWxlLmNvcHkodC5zY2FsZSksdGhpcy5tYXRyaXguY29weSh0Lm1hdHJpeCksdGhpcy5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLHRoaXMubWF0cml4QXV0b1VwZGF0ZT10Lm1hdHJpeEF1dG9VcGRhdGUsdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPXQubWF0cml4V29ybGROZWVkc1VwZGF0ZSx0aGlzLmxheWVycy5tYXNrPXQubGF5ZXJzLm1hc2ssdGhpcy52aXNpYmxlPXQudmlzaWJsZSx0aGlzLmNhc3RTaGFkb3c9dC5jYXN0U2hhZG93LHRoaXMucmVjZWl2ZVNoYWRvdz10LnJlY2VpdmVTaGFkb3csdGhpcy5mcnVzdHVtQ3VsbGVkPXQuZnJ1c3R1bUN1bGxlZCx0aGlzLnJlbmRlck9yZGVyPXQucmVuZGVyT3JkZXIsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSxyPT09ITApZm9yKGxldCBuPTA7bjx0LmNoaWxkcmVuLmxlbmd0aDtuKyspe2xldCBpPXQuY2hpbGRyZW5bbl07dGhpcy5hZGQoaS5jbG9uZSgpKX1yZXR1cm4gdGhpc319O29yLkRlZmF1bHRVcD1uZXcgaigwLDEsMCk7b3IuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU9ITA7b3IucHJvdG90eXBlLmlzT2JqZWN0M0Q9ITA7dmFyIGloPW5ldyBqLEdkPW5ldyBqLFFjdD1uZXcgaixXZD1uZXcgaixNMz1uZXcgaixFMz1uZXcgaix5dWU9bmV3IGosdHV0PW5ldyBqLGV1dD1uZXcgaixydXQ9bmV3IGosYWk9Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgaixyPW5ldyBqLG49bmV3IGope3RoaXMuYT10LHRoaXMuYj1yLHRoaXMuYz1ufXN0YXRpYyBnZXROb3JtYWwodCxyLG4saSl7aS5zdWJWZWN0b3JzKG4sciksaWguc3ViVmVjdG9ycyh0LHIpLGkuY3Jvc3MoaWgpO2xldCBvPWkubGVuZ3RoU3EoKTtyZXR1cm4gbz4wP2kubXVsdGlwbHlTY2FsYXIoMS9NYXRoLnNxcnQobykpOmkuc2V0KDAsMCwwKX1zdGF0aWMgZ2V0QmFyeWNvb3JkKHQscixuLGksbyl7aWguc3ViVmVjdG9ycyhpLHIpLEdkLnN1YlZlY3RvcnMobixyKSxRY3Quc3ViVmVjdG9ycyh0LHIpO2xldCBhPWloLmRvdChpaCkscz1paC5kb3QoR2QpLGw9aWguZG90KFFjdCksYz1HZC5kb3QoR2QpLHU9R2QuZG90KFFjdCksaD1hKmMtcypzO2lmKGg9PT0wKXJldHVybiBvLnNldCgtMiwtMSwtMSk7bGV0IGY9MS9oLHA9KGMqbC1zKnUpKmYsZD0oYSp1LXMqbCkqZjtyZXR1cm4gby5zZXQoMS1wLWQsZCxwKX1zdGF0aWMgY29udGFpbnNQb2ludCh0LHIsbixpKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxyLG4saSxXZCksV2QueD49MCYmV2QueT49MCYmV2QueCtXZC55PD0xfXN0YXRpYyBnZXRVVih0LHIsbixpLG8sYSxzLGwpe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LHIsbixpLFdkKSxsLnNldCgwLDApLGwuYWRkU2NhbGVkVmVjdG9yKG8sV2QueCksbC5hZGRTY2FsZWRWZWN0b3IoYSxXZC55KSxsLmFkZFNjYWxlZFZlY3RvcihzLFdkLnopLGx9c3RhdGljIGlzRnJvbnRGYWNpbmcodCxyLG4saSl7cmV0dXJuIGloLnN1YlZlY3RvcnMobixyKSxHZC5zdWJWZWN0b3JzKHQsciksaWguY3Jvc3MoR2QpLmRvdChpKTwwfXNldCh0LHIsbil7cmV0dXJuIHRoaXMuYS5jb3B5KHQpLHRoaXMuYi5jb3B5KHIpLHRoaXMuYy5jb3B5KG4pLHRoaXN9c2V0RnJvbVBvaW50c0FuZEluZGljZXModCxyLG4saSl7cmV0dXJuIHRoaXMuYS5jb3B5KHRbcl0pLHRoaXMuYi5jb3B5KHRbbl0pLHRoaXMuYy5jb3B5KHRbaV0pLHRoaXN9c2V0RnJvbUF0dHJpYnV0ZUFuZEluZGljZXModCxyLG4saSl7cmV0dXJuIHRoaXMuYS5mcm9tQnVmZmVyQXR0cmlidXRlKHQsciksdGhpcy5iLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxuKSx0aGlzLmMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGkpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYS5jb3B5KHQuYSksdGhpcy5iLmNvcHkodC5iKSx0aGlzLmMuY29weSh0LmMpLHRoaXN9Z2V0QXJlYSgpe3JldHVybiBpaC5zdWJWZWN0b3JzKHRoaXMuYyx0aGlzLmIpLEdkLnN1YlZlY3RvcnModGhpcy5hLHRoaXMuYiksaWguY3Jvc3MoR2QpLmxlbmd0aCgpKi41fWdldE1pZHBvaW50KHQpe3JldHVybiB0LmFkZFZlY3RvcnModGhpcy5hLHRoaXMuYikuYWRkKHRoaXMuYykubXVsdGlwbHlTY2FsYXIoMS8zKX1nZXROb3JtYWwodCl7cmV0dXJuIGFpLmdldE5vcm1hbCh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1nZXRQbGFuZSh0KXtyZXR1cm4gdC5zZXRGcm9tQ29wbGFuYXJQb2ludHModGhpcy5hLHRoaXMuYix0aGlzLmMpfWdldEJhcnljb29yZCh0LHIpe3JldHVybiBhaS5nZXRCYXJ5Y29vcmQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyxyKX1nZXRVVih0LHIsbixpLG8pe3JldHVybiBhaS5nZXRVVih0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLHIsbixpLG8pfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIGFpLmNvbnRhaW5zUG9pbnQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyl9aXNGcm9udEZhY2luZyh0KXtyZXR1cm4gYWkuaXNGcm9udEZhY2luZyh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNUcmlhbmdsZSh0aGlzKX1jbG9zZXN0UG9pbnRUb1BvaW50KHQscil7bGV0IG49dGhpcy5hLGk9dGhpcy5iLG89dGhpcy5jLGEscztNMy5zdWJWZWN0b3JzKGksbiksRTMuc3ViVmVjdG9ycyhvLG4pLHR1dC5zdWJWZWN0b3JzKHQsbik7bGV0IGw9TTMuZG90KHR1dCksYz1FMy5kb3QodHV0KTtpZihsPD0wJiZjPD0wKXJldHVybiByLmNvcHkobik7ZXV0LnN1YlZlY3RvcnModCxpKTtsZXQgdT1NMy5kb3QoZXV0KSxoPUUzLmRvdChldXQpO2lmKHU+PTAmJmg8PXUpcmV0dXJuIHIuY29weShpKTtsZXQgZj1sKmgtdSpjO2lmKGY8PTAmJmw+PTAmJnU8PTApcmV0dXJuIGE9bC8obC11KSxyLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKE0zLGEpO3J1dC5zdWJWZWN0b3JzKHQsbyk7bGV0IHA9TTMuZG90KHJ1dCksZD1FMy5kb3QocnV0KTtpZihkPj0wJiZwPD1kKXJldHVybiByLmNvcHkobyk7bGV0IGc9cCpjLWwqZDtpZihnPD0wJiZjPj0wJiZkPD0wKXJldHVybiBzPWMvKGMtZCksci5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihFMyxzKTtsZXQgXz11KmQtcCpoO2lmKF88PTAmJmgtdT49MCYmcC1kPj0wKXJldHVybiB5dWUuc3ViVmVjdG9ycyhvLGkpLHM9KGgtdSkvKGgtdSsocC1kKSksci5jb3B5KGkpLmFkZFNjYWxlZFZlY3Rvcih5dWUscyk7bGV0IHk9MS8oXytnK2YpO3JldHVybiBhPWcqeSxzPWYqeSxyLmNvcHkobikuYWRkU2NhbGVkVmVjdG9yKE0zLGEpLmFkZFNjYWxlZFZlY3RvcihFMyxzKX1lcXVhbHModCl7cmV0dXJuIHQuYS5lcXVhbHModGhpcy5hKSYmdC5iLmVxdWFscyh0aGlzLmIpJiZ0LmMuZXF1YWxzKHRoaXMuYyl9fSxuZnI9MCxVaT1jbGFzcyBleHRlbmRzIFZze2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpuZnIrK30pLHRoaXMudXVpZD1SbCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik1hdGVyaWFsIix0aGlzLmZvZz0hMCx0aGlzLmJsZW5kaW5nPUgzLHRoaXMuc2lkZT1JMSx0aGlzLnZlcnRleENvbG9ycz0hMSx0aGlzLm9wYWNpdHk9MSx0aGlzLnRyYW5zcGFyZW50PSExLHRoaXMuYmxlbmRTcmM9QWh0LHRoaXMuYmxlbmREc3Q9UGh0LHRoaXMuYmxlbmRFcXVhdGlvbj1NMSx0aGlzLmJsZW5kU3JjQWxwaGE9bnVsbCx0aGlzLmJsZW5kRHN0QWxwaGE9bnVsbCx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT1udWxsLHRoaXMuZGVwdGhGdW5jPWVVLHRoaXMuZGVwdGhUZXN0PSEwLHRoaXMuZGVwdGhXcml0ZT0hMCx0aGlzLnN0ZW5jaWxXcml0ZU1hc2s9MjU1LHRoaXMuc3RlbmNpbEZ1bmM9Q2ZlLHRoaXMuc3RlbmNpbFJlZj0wLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGYWlsPXRVLHRoaXMuc3RlbmNpbFpGYWlsPXRVLHRoaXMuc3RlbmNpbFpQYXNzPXRVLHRoaXMuc3RlbmNpbFdyaXRlPSExLHRoaXMuY2xpcHBpbmdQbGFuZXM9bnVsbCx0aGlzLmNsaXBJbnRlcnNlY3Rpb249ITEsdGhpcy5jbGlwU2hhZG93cz0hMSx0aGlzLnNoYWRvd1NpZGU9bnVsbCx0aGlzLmNvbG9yV3JpdGU9ITAsdGhpcy5hbHBoYVdyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9ITEsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9ITEsdGhpcy52aXNpYmxlPSEwLHRoaXMudG9uZU1hcHBlZD0hMCx0aGlzLnVzZXJEYXRhPXt9LHRoaXMudmVyc2lvbj0wLHRoaXMuX2FscGhhVGVzdD0wfWdldCBhbHBoYVRlc3QoKXtyZXR1cm4gdGhpcy5fYWxwaGFUZXN0fXNldCBhbHBoYVRlc3QodCl7dGhpcy5fYWxwaGFUZXN0PjAhPXQ+MCYmdGhpcy52ZXJzaW9uKyssdGhpcy5fYWxwaGFUZXN0PXR9b25CdWlsZCgpe31vbkJlZm9yZVJlbmRlcigpe31vbkJlZm9yZUNvbXBpbGUoKXt9Y3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl7cmV0dXJuIHRoaXMub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCl9c2V0VmFsdWVzKHQpe2lmKHQhPT12b2lkIDApZm9yKGxldCByIGluIHQpe2xldCBuPXRbcl07aWYobj09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogJyIrcisiJyBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkLiIpO2NvbnRpbnVlfWlmKHI9PT0ic2hhZGluZyIpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9bj09PUNodDtjb250aW51ZX1sZXQgaT10aGlzW3JdO2lmKGk9PT12b2lkIDApe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogJyIrcisiJyBpcyBub3QgYSBwcm9wZXJ0eSBvZiB0aGlzIG1hdGVyaWFsLiIpO2NvbnRpbnVlfWkmJmkuaXNDb2xvcj9pLnNldChuKTppJiZpLmlzVmVjdG9yMyYmbiYmbi5pc1ZlY3RvcjM/aS5jb3B5KG4pOnRoaXNbcl09bn19dG9KU09OKHQpe2xldCByPXQ9PT12b2lkIDB8fHR5cGVvZiB0PT0ic3RyaW5nIjtyJiYodD17dGV4dHVyZXM6e30saW1hZ2VzOnt9fSk7bGV0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJNYXRlcmlhbCIsZ2VuZXJhdG9yOiJNYXRlcmlhbC50b0pTT04ifX07bi51dWlkPXRoaXMudXVpZCxuLnR5cGU9dGhpcy50eXBlLHRoaXMubmFtZSE9PSIiJiYobi5uYW1lPXRoaXMubmFtZSksdGhpcy5jb2xvciYmdGhpcy5jb2xvci5pc0NvbG9yJiYobi5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpKSx0aGlzLnJvdWdobmVzcyE9PXZvaWQgMCYmKG4ucm91Z2huZXNzPXRoaXMucm91Z2huZXNzKSx0aGlzLm1ldGFsbmVzcyE9PXZvaWQgMCYmKG4ubWV0YWxuZXNzPXRoaXMubWV0YWxuZXNzKSx0aGlzLnNoZWVuIT09dm9pZCAwJiYobi5zaGVlbj10aGlzLnNoZWVuKSx0aGlzLnNoZWVuQ29sb3ImJnRoaXMuc2hlZW5Db2xvci5pc0NvbG9yJiYobi5zaGVlbkNvbG9yPXRoaXMuc2hlZW5Db2xvci5nZXRIZXgoKSksdGhpcy5zaGVlblJvdWdobmVzcyE9PXZvaWQgMCYmKG4uc2hlZW5Sb3VnaG5lc3M9dGhpcy5zaGVlblJvdWdobmVzcyksdGhpcy5lbWlzc2l2ZSYmdGhpcy5lbWlzc2l2ZS5pc0NvbG9yJiYobi5lbWlzc2l2ZT10aGlzLmVtaXNzaXZlLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiZ0aGlzLmVtaXNzaXZlSW50ZW5zaXR5IT09MSYmKG4uZW1pc3NpdmVJbnRlbnNpdHk9dGhpcy5lbWlzc2l2ZUludGVuc2l0eSksdGhpcy5zcGVjdWxhciYmdGhpcy5zcGVjdWxhci5pc0NvbG9yJiYobi5zcGVjdWxhcj10aGlzLnNwZWN1bGFyLmdldEhleCgpKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5IT09dm9pZCAwJiYobi5zcGVjdWxhckludGVuc2l0eT10aGlzLnNwZWN1bGFySW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyQ29sb3ImJnRoaXMuc3BlY3VsYXJDb2xvci5pc0NvbG9yJiYobi5zcGVjdWxhckNvbG9yPXRoaXMuc3BlY3VsYXJDb2xvci5nZXRIZXgoKSksdGhpcy5zaGluaW5lc3MhPT12b2lkIDAmJihuLnNoaW5pbmVzcz10aGlzLnNoaW5pbmVzcyksdGhpcy5jbGVhcmNvYXQhPT12b2lkIDAmJihuLmNsZWFyY29hdD10aGlzLmNsZWFyY29hdCksdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MhPT12b2lkIDAmJihuLmNsZWFyY29hdFJvdWdobmVzcz10aGlzLmNsZWFyY29hdFJvdWdobmVzcyksdGhpcy5jbGVhcmNvYXRNYXAmJnRoaXMuY2xlYXJjb2F0TWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0TWFwPXRoaXMuY2xlYXJjb2F0TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcCYmdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwJiZ0aGlzLmNsZWFyY29hdE5vcm1hbE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE5vcm1hbE1hcD10aGlzLmNsZWFyY29hdE5vcm1hbE1hcC50b0pTT04odCkudXVpZCxuLmNsZWFyY29hdE5vcm1hbFNjYWxlPXRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudG9BcnJheSgpKSx0aGlzLm1hcCYmdGhpcy5tYXAuaXNUZXh0dXJlJiYobi5tYXA9dGhpcy5tYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWF0Y2FwJiZ0aGlzLm1hdGNhcC5pc1RleHR1cmUmJihuLm1hdGNhcD10aGlzLm1hdGNhcC50b0pTT04odCkudXVpZCksdGhpcy5hbHBoYU1hcCYmdGhpcy5hbHBoYU1hcC5pc1RleHR1cmUmJihuLmFscGhhTWFwPXRoaXMuYWxwaGFNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubGlnaHRNYXAmJnRoaXMubGlnaHRNYXAuaXNUZXh0dXJlJiYobi5saWdodE1hcD10aGlzLmxpZ2h0TWFwLnRvSlNPTih0KS51dWlkLG4ubGlnaHRNYXBJbnRlbnNpdHk9dGhpcy5saWdodE1hcEludGVuc2l0eSksdGhpcy5hb01hcCYmdGhpcy5hb01hcC5pc1RleHR1cmUmJihuLmFvTWFwPXRoaXMuYW9NYXAudG9KU09OKHQpLnV1aWQsbi5hb01hcEludGVuc2l0eT10aGlzLmFvTWFwSW50ZW5zaXR5KSx0aGlzLmJ1bXBNYXAmJnRoaXMuYnVtcE1hcC5pc1RleHR1cmUmJihuLmJ1bXBNYXA9dGhpcy5idW1wTWFwLnRvSlNPTih0KS51dWlkLG4uYnVtcFNjYWxlPXRoaXMuYnVtcFNjYWxlKSx0aGlzLm5vcm1hbE1hcCYmdGhpcy5ub3JtYWxNYXAuaXNUZXh0dXJlJiYobi5ub3JtYWxNYXA9dGhpcy5ub3JtYWxNYXAudG9KU09OKHQpLnV1aWQsbi5ub3JtYWxNYXBUeXBlPXRoaXMubm9ybWFsTWFwVHlwZSxuLm5vcm1hbFNjYWxlPXRoaXMubm9ybWFsU2NhbGUudG9BcnJheSgpKSx0aGlzLmRpc3BsYWNlbWVudE1hcCYmdGhpcy5kaXNwbGFjZW1lbnRNYXAuaXNUZXh0dXJlJiYobi5kaXNwbGFjZW1lbnRNYXA9dGhpcy5kaXNwbGFjZW1lbnRNYXAudG9KU09OKHQpLnV1aWQsbi5kaXNwbGFjZW1lbnRTY2FsZT10aGlzLmRpc3BsYWNlbWVudFNjYWxlLG4uZGlzcGxhY2VtZW50Qmlhcz10aGlzLmRpc3BsYWNlbWVudEJpYXMpLHRoaXMucm91Z2huZXNzTWFwJiZ0aGlzLnJvdWdobmVzc01hcC5pc1RleHR1cmUmJihuLnJvdWdobmVzc01hcD10aGlzLnJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5tZXRhbG5lc3NNYXAmJnRoaXMubWV0YWxuZXNzTWFwLmlzVGV4dHVyZSYmKG4ubWV0YWxuZXNzTWFwPXRoaXMubWV0YWxuZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVtaXNzaXZlTWFwJiZ0aGlzLmVtaXNzaXZlTWFwLmlzVGV4dHVyZSYmKG4uZW1pc3NpdmVNYXA9dGhpcy5lbWlzc2l2ZU1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhck1hcCYmdGhpcy5zcGVjdWxhck1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFyTWFwPXRoaXMuc3BlY3VsYXJNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJnRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAuaXNUZXh0dXJlJiYobi5zcGVjdWxhckludGVuc2l0eU1hcD10aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyQ29sb3JNYXAmJnRoaXMuc3BlY3VsYXJDb2xvck1hcC5pc1RleHR1cmUmJihuLnNwZWN1bGFyQ29sb3JNYXA9dGhpcy5zcGVjdWxhckNvbG9yTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVudk1hcCYmdGhpcy5lbnZNYXAuaXNUZXh0dXJlJiYobi5lbnZNYXA9dGhpcy5lbnZNYXAudG9KU09OKHQpLnV1aWQsdGhpcy5jb21iaW5lIT09dm9pZCAwJiYobi5jb21iaW5lPXRoaXMuY29tYmluZSkpLHRoaXMuZW52TWFwSW50ZW5zaXR5IT09dm9pZCAwJiYobi5lbnZNYXBJbnRlbnNpdHk9dGhpcy5lbnZNYXBJbnRlbnNpdHkpLHRoaXMucmVmbGVjdGl2aXR5IT09dm9pZCAwJiYobi5yZWZsZWN0aXZpdHk9dGhpcy5yZWZsZWN0aXZpdHkpLHRoaXMucmVmcmFjdGlvblJhdGlvIT09dm9pZCAwJiYobi5yZWZyYWN0aW9uUmF0aW89dGhpcy5yZWZyYWN0aW9uUmF0aW8pLHRoaXMuZ3JhZGllbnRNYXAmJnRoaXMuZ3JhZGllbnRNYXAuaXNUZXh0dXJlJiYobi5ncmFkaWVudE1hcD10aGlzLmdyYWRpZW50TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnRyYW5zbWlzc2lvbiE9PXZvaWQgMCYmKG4udHJhbnNtaXNzaW9uPXRoaXMudHJhbnNtaXNzaW9uKSx0aGlzLnRyYW5zbWlzc2lvbk1hcCYmdGhpcy50cmFuc21pc3Npb25NYXAuaXNUZXh0dXJlJiYobi50cmFuc21pc3Npb25NYXA9dGhpcy50cmFuc21pc3Npb25NYXAudG9KU09OKHQpLnV1aWQpLHRoaXMudGhpY2tuZXNzIT09dm9pZCAwJiYobi50aGlja25lc3M9dGhpcy50aGlja25lc3MpLHRoaXMudGhpY2tuZXNzTWFwJiZ0aGlzLnRoaWNrbmVzc01hcC5pc1RleHR1cmUmJihuLnRoaWNrbmVzc01hcD10aGlzLnRoaWNrbmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlIT09dm9pZCAwJiYobi5hdHRlbnVhdGlvbkRpc3RhbmNlPXRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZSksdGhpcy5hdHRlbnVhdGlvbkNvbG9yIT09dm9pZCAwJiYobi5hdHRlbnVhdGlvbkNvbG9yPXRoaXMuYXR0ZW51YXRpb25Db2xvci5nZXRIZXgoKSksdGhpcy5zaXplIT09dm9pZCAwJiYobi5zaXplPXRoaXMuc2l6ZSksdGhpcy5zaGFkb3dTaWRlIT09bnVsbCYmKG4uc2hhZG93U2lkZT10aGlzLnNoYWRvd1NpZGUpLHRoaXMuc2l6ZUF0dGVudWF0aW9uIT09dm9pZCAwJiYobi5zaXplQXR0ZW51YXRpb249dGhpcy5zaXplQXR0ZW51YXRpb24pLHRoaXMuYmxlbmRpbmchPT1IMyYmKG4uYmxlbmRpbmc9dGhpcy5ibGVuZGluZyksdGhpcy5zaWRlIT09STEmJihuLnNpZGU9dGhpcy5zaWRlKSx0aGlzLnZlcnRleENvbG9ycyYmKG4udmVydGV4Q29sb3JzPSEwKSx0aGlzLm9wYWNpdHk8MSYmKG4ub3BhY2l0eT10aGlzLm9wYWNpdHkpLHRoaXMudHJhbnNwYXJlbnQ9PT0hMCYmKG4udHJhbnNwYXJlbnQ9dGhpcy50cmFuc3BhcmVudCksbi5kZXB0aEZ1bmM9dGhpcy5kZXB0aEZ1bmMsbi5kZXB0aFRlc3Q9dGhpcy5kZXB0aFRlc3Qsbi5kZXB0aFdyaXRlPXRoaXMuZGVwdGhXcml0ZSxuLmNvbG9yV3JpdGU9dGhpcy5jb2xvcldyaXRlLG4uYWxwaGFXcml0ZT10aGlzLmFscGhhV3JpdGUsbi5zdGVuY2lsV3JpdGU9dGhpcy5zdGVuY2lsV3JpdGUsbi5zdGVuY2lsV3JpdGVNYXNrPXRoaXMuc3RlbmNpbFdyaXRlTWFzayxuLnN0ZW5jaWxGdW5jPXRoaXMuc3RlbmNpbEZ1bmMsbi5zdGVuY2lsUmVmPXRoaXMuc3RlbmNpbFJlZixuLnN0ZW5jaWxGdW5jTWFzaz10aGlzLnN0ZW5jaWxGdW5jTWFzayxuLnN0ZW5jaWxGYWlsPXRoaXMuc3RlbmNpbEZhaWwsbi5zdGVuY2lsWkZhaWw9dGhpcy5zdGVuY2lsWkZhaWwsbi5zdGVuY2lsWlBhc3M9dGhpcy5zdGVuY2lsWlBhc3MsdGhpcy5yb3RhdGlvbiYmdGhpcy5yb3RhdGlvbiE9PTAmJihuLnJvdGF0aW9uPXRoaXMucm90YXRpb24pLHRoaXMucG9seWdvbk9mZnNldD09PSEwJiYobi5wb2x5Z29uT2Zmc2V0PSEwKSx0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3IhPT0wJiYobi5wb2x5Z29uT2Zmc2V0RmFjdG9yPXRoaXMucG9seWdvbk9mZnNldEZhY3RvciksdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMhPT0wJiYobi5wb2x5Z29uT2Zmc2V0VW5pdHM9dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMpLHRoaXMubGluZXdpZHRoJiZ0aGlzLmxpbmV3aWR0aCE9PTEmJihuLmxpbmV3aWR0aD10aGlzLmxpbmV3aWR0aCksdGhpcy5kYXNoU2l6ZSE9PXZvaWQgMCYmKG4uZGFzaFNpemU9dGhpcy5kYXNoU2l6ZSksdGhpcy5nYXBTaXplIT09dm9pZCAwJiYobi5nYXBTaXplPXRoaXMuZ2FwU2l6ZSksdGhpcy5zY2FsZSE9PXZvaWQgMCYmKG4uc2NhbGU9dGhpcy5zY2FsZSksdGhpcy5kaXRoZXJpbmc9PT0hMCYmKG4uZGl0aGVyaW5nPSEwKSx0aGlzLmFscGhhVGVzdD4wJiYobi5hbHBoYVRlc3Q9dGhpcy5hbHBoYVRlc3QpLHRoaXMuYWxwaGFUb0NvdmVyYWdlPT09ITAmJihuLmFscGhhVG9Db3ZlcmFnZT10aGlzLmFscGhhVG9Db3ZlcmFnZSksdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9PT0hMCYmKG4ucHJlbXVsdGlwbGllZEFscGhhPXRoaXMucHJlbXVsdGlwbGllZEFscGhhKSx0aGlzLndpcmVmcmFtZT09PSEwJiYobi53aXJlZnJhbWU9dGhpcy53aXJlZnJhbWUpLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPjEmJihuLndpcmVmcmFtZUxpbmV3aWR0aD10aGlzLndpcmVmcmFtZUxpbmV3aWR0aCksdGhpcy53aXJlZnJhbWVMaW5lY2FwIT09InJvdW5kIiYmKG4ud2lyZWZyYW1lTGluZWNhcD10aGlzLndpcmVmcmFtZUxpbmVjYXApLHRoaXMud2lyZWZyYW1lTGluZWpvaW4hPT0icm91bmQiJiYobi53aXJlZnJhbWVMaW5lam9pbj10aGlzLndpcmVmcmFtZUxpbmVqb2luKSx0aGlzLmZsYXRTaGFkaW5nPT09ITAmJihuLmZsYXRTaGFkaW5nPXRoaXMuZmxhdFNoYWRpbmcpLHRoaXMudmlzaWJsZT09PSExJiYobi52aXNpYmxlPSExKSx0aGlzLnRvbmVNYXBwZWQ9PT0hMSYmKG4udG9uZU1hcHBlZD0hMSksSlNPTi5zdHJpbmdpZnkodGhpcy51c2VyRGF0YSkhPT0ie30iJiYobi51c2VyRGF0YT10aGlzLnVzZXJEYXRhKTtmdW5jdGlvbiBpKG8pe2xldCBhPVtdO2ZvcihsZXQgcyBpbiBvKXtsZXQgbD1vW3NdO2RlbGV0ZSBsLm1ldGFkYXRhLGEucHVzaChsKX1yZXR1cm4gYX1pZihyKXtsZXQgbz1pKHQudGV4dHVyZXMpLGE9aSh0LmltYWdlcyk7by5sZW5ndGg+MCYmKG4udGV4dHVyZXM9byksYS5sZW5ndGg+MCYmKG4uaW1hZ2VzPWEpfXJldHVybiBufWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMubmFtZT10Lm5hbWUsdGhpcy5mb2c9dC5mb2csdGhpcy5ibGVuZGluZz10LmJsZW5kaW5nLHRoaXMuc2lkZT10LnNpZGUsdGhpcy52ZXJ0ZXhDb2xvcnM9dC52ZXJ0ZXhDb2xvcnMsdGhpcy5vcGFjaXR5PXQub3BhY2l0eSx0aGlzLnRyYW5zcGFyZW50PXQudHJhbnNwYXJlbnQsdGhpcy5ibGVuZFNyYz10LmJsZW5kU3JjLHRoaXMuYmxlbmREc3Q9dC5ibGVuZERzdCx0aGlzLmJsZW5kRXF1YXRpb249dC5ibGVuZEVxdWF0aW9uLHRoaXMuYmxlbmRTcmNBbHBoYT10LmJsZW5kU3JjQWxwaGEsdGhpcy5ibGVuZERzdEFscGhhPXQuYmxlbmREc3RBbHBoYSx0aGlzLmJsZW5kRXF1YXRpb25BbHBoYT10LmJsZW5kRXF1YXRpb25BbHBoYSx0aGlzLmRlcHRoRnVuYz10LmRlcHRoRnVuYyx0aGlzLmRlcHRoVGVzdD10LmRlcHRoVGVzdCx0aGlzLmRlcHRoV3JpdGU9dC5kZXB0aFdyaXRlLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz10LnN0ZW5jaWxXcml0ZU1hc2ssdGhpcy5zdGVuY2lsRnVuYz10LnN0ZW5jaWxGdW5jLHRoaXMuc3RlbmNpbFJlZj10LnN0ZW5jaWxSZWYsdGhpcy5zdGVuY2lsRnVuY01hc2s9dC5zdGVuY2lsRnVuY01hc2ssdGhpcy5zdGVuY2lsRmFpbD10LnN0ZW5jaWxGYWlsLHRoaXMuc3RlbmNpbFpGYWlsPXQuc3RlbmNpbFpGYWlsLHRoaXMuc3RlbmNpbFpQYXNzPXQuc3RlbmNpbFpQYXNzLHRoaXMuc3RlbmNpbFdyaXRlPXQuc3RlbmNpbFdyaXRlO2xldCByPXQuY2xpcHBpbmdQbGFuZXMsbj1udWxsO2lmKHIhPT1udWxsKXtsZXQgaT1yLmxlbmd0aDtuPW5ldyBBcnJheShpKTtmb3IobGV0IG89MDtvIT09aTsrK28pbltvXT1yW29dLmNsb25lKCl9cmV0dXJuIHRoaXMuY2xpcHBpbmdQbGFuZXM9bix0aGlzLmNsaXBJbnRlcnNlY3Rpb249dC5jbGlwSW50ZXJzZWN0aW9uLHRoaXMuY2xpcFNoYWRvd3M9dC5jbGlwU2hhZG93cyx0aGlzLnNoYWRvd1NpZGU9dC5zaGFkb3dTaWRlLHRoaXMuY29sb3JXcml0ZT10LmNvbG9yV3JpdGUsdGhpcy5hbHBoYVdyaXRlPXQuYWxwaGFXcml0ZSx0aGlzLnByZWNpc2lvbj10LnByZWNpc2lvbix0aGlzLnBvbHlnb25PZmZzZXQ9dC5wb2x5Z29uT2Zmc2V0LHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IsdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMsdGhpcy5kaXRoZXJpbmc9dC5kaXRoZXJpbmcsdGhpcy5hbHBoYVRlc3Q9dC5hbHBoYVRlc3QsdGhpcy5hbHBoYVRvQ292ZXJhZ2U9dC5hbHBoYVRvQ292ZXJhZ2UsdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE9dC5wcmVtdWx0aXBsaWVkQWxwaGEsdGhpcy52aXNpYmxlPXQudmlzaWJsZSx0aGlzLnRvbmVNYXBwZWQ9dC50b25lTWFwcGVkLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfXNldCBuZWVkc1VwZGF0ZSh0KXt0PT09ITAmJnRoaXMudmVyc2lvbisrfX07VWkucHJvdG90eXBlLmlzTWF0ZXJpYWw9ITA7dmFyIGFoPWNsYXNzIGV4dGVuZHMgVWl7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBuZSgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT1SNix0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fTthaC5wcm90b3R5cGUuaXNNZXNoQmFzaWNNYXRlcmlhbD0hMDt2YXIgTG49bmV3IGosZ1Y9bmV3IEx0LEplPWNsYXNze2NvbnN0cnVjdG9yKHQscixuKXtpZihBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7dGhpcy5uYW1lPSIiLHRoaXMuYXJyYXk9dCx0aGlzLml0ZW1TaXplPXIsdGhpcy5jb3VudD10IT09dm9pZCAwP3QubGVuZ3RoL3I6MCx0aGlzLm5vcm1hbGl6ZWQ9bj09PSEwLHRoaXMudXNhZ2U9RzMsdGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9LHRoaXMudmVyc2lvbj0wfW9uVXBsb2FkQ2FsbGJhY2soKXt9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9c2V0VXNhZ2UodCl7cmV0dXJuIHRoaXMudXNhZ2U9dCx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubmFtZT10Lm5hbWUsdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLml0ZW1TaXplPXQuaXRlbVNpemUsdGhpcy5jb3VudD10LmNvdW50LHRoaXMubm9ybWFsaXplZD10Lm5vcm1hbGl6ZWQsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQscixuKXt0Kj10aGlzLml0ZW1TaXplLG4qPXIuaXRlbVNpemU7Zm9yKGxldCBpPTAsbz10aGlzLml0ZW1TaXplO2k8bztpKyspdGhpcy5hcnJheVt0K2ldPXIuYXJyYXlbbitpXTtyZXR1cm4gdGhpc31jb3B5QXJyYXkodCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQpLHRoaXN9Y29weUNvbG9yc0FycmF5KHQpe2xldCByPXRoaXMuYXJyYXksbj0wO2ZvcihsZXQgaT0wLG89dC5sZW5ndGg7aTxvO2krKyl7bGV0IGE9dFtpXTthPT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weUNvbG9yc0FycmF5KCk6IGNvbG9yIGlzIHVuZGVmaW5lZCIsaSksYT1uZXcgbmUpLHJbbisrXT1hLnIscltuKytdPWEuZyxyW24rK109YS5ifXJldHVybiB0aGlzfWNvcHlWZWN0b3Iyc0FycmF5KHQpe2xldCByPXRoaXMuYXJyYXksbj0wO2ZvcihsZXQgaT0wLG89dC5sZW5ndGg7aTxvO2krKyl7bGV0IGE9dFtpXTthPT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjJzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSksYT1uZXcgTHQpLHJbbisrXT1hLngscltuKytdPWEueX1yZXR1cm4gdGhpc31jb3B5VmVjdG9yM3NBcnJheSh0KXtsZXQgcj10aGlzLmFycmF5LG49MDtmb3IobGV0IGk9MCxvPXQubGVuZ3RoO2k8bztpKyspe2xldCBhPXRbaV07YT09PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLGE9bmV3IGopLHJbbisrXT1hLngscltuKytdPWEueSxyW24rK109YS56fXJldHVybiB0aGlzfWNvcHlWZWN0b3I0c0FycmF5KHQpe2xldCByPXRoaXMuYXJyYXksbj0wO2ZvcihsZXQgaT0wLG89dC5sZW5ndGg7aTxvO2krKyl7bGV0IGE9dFtpXTthPT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjRzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSksYT1uZXcgZW4pLHJbbisrXT1hLngscltuKytdPWEueSxyW24rK109YS56LHJbbisrXT1hLnd9cmV0dXJuIHRoaXN9YXBwbHlNYXRyaXgzKHQpe2lmKHRoaXMuaXRlbVNpemU9PT0yKWZvcihsZXQgcj0wLG49dGhpcy5jb3VudDtyPG47cisrKWdWLmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxyKSxnVi5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWShyLGdWLngsZ1YueSk7ZWxzZSBpZih0aGlzLml0ZW1TaXplPT09Mylmb3IobGV0IHI9MCxuPXRoaXMuY291bnQ7cjxuO3IrKylMbi5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsciksTG4uYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFlaKHIsTG4ueCxMbi55LExuLnopO3JldHVybiB0aGlzfWFwcGx5TWF0cml4NCh0KXtmb3IobGV0IHI9MCxuPXRoaXMuY291bnQ7cjxuO3IrKylMbi54PXRoaXMuZ2V0WChyKSxMbi55PXRoaXMuZ2V0WShyKSxMbi56PXRoaXMuZ2V0WihyKSxMbi5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRYWVoocixMbi54LExuLnksTG4ueik7cmV0dXJuIHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7Zm9yKGxldCByPTAsbj10aGlzLmNvdW50O3I8bjtyKyspTG4ueD10aGlzLmdldFgociksTG4ueT10aGlzLmdldFkociksTG4uej10aGlzLmdldFoociksTG4uYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVoocixMbi54LExuLnksTG4ueik7cmV0dXJuIHRoaXN9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2ZvcihsZXQgcj0wLG49dGhpcy5jb3VudDtyPG47cisrKUxuLng9dGhpcy5nZXRYKHIpLExuLnk9dGhpcy5nZXRZKHIpLExuLno9dGhpcy5nZXRaKHIpLExuLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihyLExuLngsTG4ueSxMbi56KTtyZXR1cm4gdGhpc31zZXQodCxyPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LHIpLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdfXNldFgodCxyKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdPXIsdGhpc31nZXRZKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXX1zZXRZKHQscil7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzFdPXIsdGhpc31nZXRaKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXX1zZXRaKHQscil7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdPXIsdGhpc31nZXRXKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXX1zZXRXKHQscil7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdPXIsdGhpc31zZXRYWSh0LHIsbil7cmV0dXJuIHQqPXRoaXMuaXRlbVNpemUsdGhpcy5hcnJheVt0KzBdPXIsdGhpcy5hcnJheVt0KzFdPW4sdGhpc31zZXRYWVoodCxyLG4saSl7cmV0dXJuIHQqPXRoaXMuaXRlbVNpemUsdGhpcy5hcnJheVt0KzBdPXIsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPWksdGhpc31zZXRYWVpXKHQscixuLGksbyl7cmV0dXJuIHQqPXRoaXMuaXRlbVNpemUsdGhpcy5hcnJheVt0KzBdPXIsdGhpcy5hcnJheVt0KzFdPW4sdGhpcy5hcnJheVt0KzJdPWksdGhpcy5hcnJheVt0KzNdPW8sdGhpc31vblVwbG9hZCh0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmFycmF5LHRoaXMuaXRlbVNpemUpLmNvcHkodGhpcyl9dG9KU09OKCl7bGV0IHQ9e2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5hcnJheSksbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9O3JldHVybiB0aGlzLm5hbWUhPT0iIiYmKHQubmFtZT10aGlzLm5hbWUpLHRoaXMudXNhZ2UhPT1HMyYmKHQudXNhZ2U9dGhpcy51c2FnZSksKHRoaXMudXBkYXRlUmFuZ2Uub2Zmc2V0IT09MHx8dGhpcy51cGRhdGVSYW5nZS5jb3VudCE9PS0xKSYmKHQudXBkYXRlUmFuZ2U9dGhpcy51cGRhdGVSYW5nZSksdH19O0plLnByb3RvdHlwZS5pc0J1ZmZlckF0dHJpYnV0ZT0hMDt2YXIgYVU9Y2xhc3MgZXh0ZW5kcyBKZXtjb25zdHJ1Y3Rvcih0LHIsbil7c3VwZXIobmV3IEludDhBcnJheSh0KSxyLG4pfX0sc1U9Y2xhc3MgZXh0ZW5kcyBKZXtjb25zdHJ1Y3Rvcih0LHIsbil7c3VwZXIobmV3IFVpbnQ4QXJyYXkodCkscixuKX19LGxVPWNsYXNzIGV4dGVuZHMgSmV7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKG5ldyBVaW50OENsYW1wZWRBcnJheSh0KSxyLG4pfX0sY1U9Y2xhc3MgZXh0ZW5kcyBKZXtjb25zdHJ1Y3Rvcih0LHIsbil7c3VwZXIobmV3IEludDE2QXJyYXkodCkscixuKX19LFgzPWNsYXNzIGV4dGVuZHMgSmV7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxyLG4pfX0sdVU9Y2xhc3MgZXh0ZW5kcyBKZXtjb25zdHJ1Y3Rvcih0LHIsbil7c3VwZXIobmV3IEludDMyQXJyYXkodCkscixuKX19LCQzPWNsYXNzIGV4dGVuZHMgSmV7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKG5ldyBVaW50MzJBcnJheSh0KSxyLG4pfX0saFU9Y2xhc3MgZXh0ZW5kcyBKZXtjb25zdHJ1Y3Rvcih0LHIsbil7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLHIsbil9fTtoVS5wcm90b3R5cGUuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlPSEwO3ZhciB4ZT1jbGFzcyBleHRlbmRzIEple2NvbnN0cnVjdG9yKHQscixuKXtzdXBlcihuZXcgRmxvYXQzMkFycmF5KHQpLHIsbil9fSxmVT1jbGFzcyBleHRlbmRzIEple2NvbnN0cnVjdG9yKHQscixuKXtzdXBlcihuZXcgRmxvYXQ2NEFycmF5KHQpLHIsbil9fSxpZnI9MCxZYz1uZXcgTWUsbnV0PW5ldyBvcixUMz1uZXcgaixrbD1uZXcgUW8sSVA9bmV3IFFvLElvPW5ldyBqLFBlPWNsYXNzIGV4dGVuZHMgVnN7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOmlmcisrfSksdGhpcy51dWlkPVJsKCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT0hMSx0aGlzLmdyb3Vwcz1bXSx0aGlzLmJvdW5kaW5nQm94PW51bGwsdGhpcy5ib3VuZGluZ1NwaGVyZT1udWxsLHRoaXMuZHJhd1JhbmdlPXtzdGFydDowLGNvdW50OjEvMH0sdGhpcy51c2VyRGF0YT17fX1nZXRJbmRleCgpe3JldHVybiB0aGlzLmluZGV4fXNldEluZGV4KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3RoaXMuaW5kZXg9bmV3KElmZSh0KT8kMzpYMykodCwxKTp0aGlzLmluZGV4PXQsdGhpc31nZXRBdHRyaWJ1dGUodCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XX1zZXRBdHRyaWJ1dGUodCxyKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdPXIsdGhpc31kZWxldGVBdHRyaWJ1dGUodCl7cmV0dXJuIGRlbGV0ZSB0aGlzLmF0dHJpYnV0ZXNbdF0sdGhpc31oYXNBdHRyaWJ1dGUodCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XSE9PXZvaWQgMH1hZGRHcm91cCh0LHIsbj0wKXt0aGlzLmdyb3Vwcy5wdXNoKHtzdGFydDp0LGNvdW50OnIsbWF0ZXJpYWxJbmRleDpufSl9Y2xlYXJHcm91cHMoKXt0aGlzLmdyb3Vwcz1bXX1zZXREcmF3UmFuZ2UodCxyKXt0aGlzLmRyYXdSYW5nZS5zdGFydD10LHRoaXMuZHJhd1JhbmdlLmNvdW50PXJ9YXBwbHlNYXRyaXg0KHQpe2xldCByPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjtyIT09dm9pZCAwJiYoci5hcHBseU1hdHJpeDQodCksci5uZWVkc1VwZGF0ZT0hMCk7bGV0IG49dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtpZihuIT09dm9pZCAwKXtsZXQgbz1uZXcga2koKS5nZXROb3JtYWxNYXRyaXgodCk7bi5hcHBseU5vcm1hbE1hdHJpeChvKSxuLm5lZWRzVXBkYXRlPSEwfWxldCBpPXRoaXMuYXR0cmlidXRlcy50YW5nZW50O3JldHVybiBpIT09dm9pZCAwJiYoaS50cmFuc2Zvcm1EaXJlY3Rpb24odCksaS5uZWVkc1VwZGF0ZT0hMCksdGhpcy5ib3VuZGluZ0JveCE9PW51bGwmJnRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksdGhpcy5ib3VuZGluZ1NwaGVyZSE9PW51bGwmJnRoaXMuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksdGhpc31hcHBseVF1YXRlcm5pb24odCl7cmV0dXJuIFljLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFljKSx0aGlzfXJvdGF0ZVgodCl7cmV0dXJuIFljLm1ha2VSb3RhdGlvblgodCksdGhpcy5hcHBseU1hdHJpeDQoWWMpLHRoaXN9cm90YXRlWSh0KXtyZXR1cm4gWWMubWFrZVJvdGF0aW9uWSh0KSx0aGlzLmFwcGx5TWF0cml4NChZYyksdGhpc31yb3RhdGVaKHQpe3JldHVybiBZYy5tYWtlUm90YXRpb25aKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFljKSx0aGlzfXRyYW5zbGF0ZSh0LHIsbil7cmV0dXJuIFljLm1ha2VUcmFuc2xhdGlvbih0LHIsbiksdGhpcy5hcHBseU1hdHJpeDQoWWMpLHRoaXN9c2NhbGUodCxyLG4pe3JldHVybiBZYy5tYWtlU2NhbGUodCxyLG4pLHRoaXMuYXBwbHlNYXRyaXg0KFljKSx0aGlzfWxvb2tBdCh0KXtyZXR1cm4gbnV0Lmxvb2tBdCh0KSxudXQudXBkYXRlTWF0cml4KCksdGhpcy5hcHBseU1hdHJpeDQobnV0Lm1hdHJpeCksdGhpc31jZW50ZXIoKXtyZXR1cm4gdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSx0aGlzLmJvdW5kaW5nQm94LmdldENlbnRlcihUMykubmVnYXRlKCksdGhpcy50cmFuc2xhdGUoVDMueCxUMy55LFQzLnopLHRoaXN9c2V0RnJvbVBvaW50cyh0KXtsZXQgcj1bXTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2xldCBvPXRbbl07ci5wdXNoKG8ueCxvLnksby56fHwwKX1yZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUociwzKSksdGhpc31jb21wdXRlQm91bmRpbmdCb3goKXt0aGlzLmJvdW5kaW5nQm94PT09bnVsbCYmKHRoaXMuYm91bmRpbmdCb3g9bmV3IFFvKTtsZXQgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24scj10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpe2NvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBib3guIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx0aGlzLmJvdW5kaW5nQm94LnNldChuZXcgaigtMS8wLC0xLzAsLTEvMCksbmV3IGooMS8wLDEvMCwxLzApKTtyZXR1cm59aWYodCE9PXZvaWQgMCl7aWYodGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLHIpZm9yKGxldCBuPTAsaT1yLmxlbmd0aDtuPGk7bisrKXtsZXQgbz1yW25dO2tsLnNldEZyb21CdWZmZXJBdHRyaWJ1dGUobyksdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT8oSW8uYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1pbixrbC5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChJbyksSW8uYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1heCxrbC5tYXgpLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChJbykpOih0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoa2wubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoa2wubWF4KSl9fWVsc2UgdGhpcy5ib3VuZGluZ0JveC5tYWtlRW1wdHkoKTsoaXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueCl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnkpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi56KSkmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBDb21wdXRlZCBtaW4vbWF4IGhhdmUgTmFOIHZhbHVlcy4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX1jb21wdXRlQm91bmRpbmdTcGhlcmUoKXt0aGlzLmJvdW5kaW5nU3BoZXJlPT09bnVsbCYmKHRoaXMuYm91bmRpbmdTcGhlcmU9bmV3IEtmKTtsZXQgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24scj10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpe2NvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBzcGhlcmUuIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx0aGlzLmJvdW5kaW5nU3BoZXJlLnNldChuZXcgaiwxLzApO3JldHVybn1pZih0KXtsZXQgbj10aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlcjtpZihrbC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLHIpZm9yKGxldCBvPTAsYT1yLmxlbmd0aDtvPGE7bysrKXtsZXQgcz1yW29dO0lQLnNldEZyb21CdWZmZXJBdHRyaWJ1dGUocyksdGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT8oSW8uYWRkVmVjdG9ycyhrbC5taW4sSVAubWluKSxrbC5leHBhbmRCeVBvaW50KElvKSxJby5hZGRWZWN0b3JzKGtsLm1heCxJUC5tYXgpLGtsLmV4cGFuZEJ5UG9pbnQoSW8pKTooa2wuZXhwYW5kQnlQb2ludChJUC5taW4pLGtsLmV4cGFuZEJ5UG9pbnQoSVAubWF4KSl9a2wuZ2V0Q2VudGVyKG4pO2xldCBpPTA7Zm9yKGxldCBvPTAsYT10LmNvdW50O288YTtvKyspSW8uZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG8pLGk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKElvKSk7aWYocilmb3IobGV0IG89MCxhPXIubGVuZ3RoO288YTtvKyspe2xldCBzPXJbb10sbD10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2ZvcihsZXQgYz0wLHU9cy5jb3VudDtjPHU7YysrKUlvLmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjKSxsJiYoVDMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGMpLElvLmFkZChUMykpLGk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKElvKSl9dGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXM9TWF0aC5zcXJ0KGkpLGlzTmFOKHRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzKSYmY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk6IENvbXB1dGVkIHJhZGl1cyBpcyBOYU4uIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9fWNvbXB1dGVUYW5nZW50cygpe2xldCB0PXRoaXMuaW5kZXgscj10aGlzLmF0dHJpYnV0ZXM7aWYodD09PW51bGx8fHIucG9zaXRpb249PT12b2lkIDB8fHIubm9ybWFsPT09dm9pZCAwfHxyLnV2PT09dm9pZCAwKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVUYW5nZW50cygpIGZhaWxlZC4gTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGVzIChpbmRleCwgcG9zaXRpb24sIG5vcm1hbCBvciB1dikiKTtyZXR1cm59bGV0IG49dC5hcnJheSxpPXIucG9zaXRpb24uYXJyYXksbz1yLm5vcm1hbC5hcnJheSxhPXIudXYuYXJyYXkscz1pLmxlbmd0aC8zO3IudGFuZ2VudD09PXZvaWQgMCYmdGhpcy5zZXRBdHRyaWJ1dGUoInRhbmdlbnQiLG5ldyBKZShuZXcgRmxvYXQzMkFycmF5KDQqcyksNCkpO2xldCBsPXIudGFuZ2VudC5hcnJheSxjPVtdLHU9W107Zm9yKGxldCBCPTA7QjxzO0IrKyljW0JdPW5ldyBqLHVbQl09bmV3IGo7bGV0IGg9bmV3IGosZj1uZXcgaixwPW5ldyBqLGQ9bmV3IEx0LGc9bmV3IEx0LF89bmV3IEx0LHk9bmV3IGoseD1uZXcgajtmdW5jdGlvbiBiKEIsSSxMKXtoLmZyb21BcnJheShpLEIqMyksZi5mcm9tQXJyYXkoaSxJKjMpLHAuZnJvbUFycmF5KGksTCozKSxkLmZyb21BcnJheShhLEIqMiksZy5mcm9tQXJyYXkoYSxJKjIpLF8uZnJvbUFycmF5KGEsTCoyKSxmLnN1YihoKSxwLnN1YihoKSxnLnN1YihkKSxfLnN1YihkKTtsZXQgUj0xLyhnLngqXy55LV8ueCpnLnkpOyFpc0Zpbml0ZShSKXx8KHkuY29weShmKS5tdWx0aXBseVNjYWxhcihfLnkpLmFkZFNjYWxlZFZlY3RvcihwLC1nLnkpLm11bHRpcGx5U2NhbGFyKFIpLHguY29weShwKS5tdWx0aXBseVNjYWxhcihnLngpLmFkZFNjYWxlZFZlY3RvcihmLC1fLngpLm11bHRpcGx5U2NhbGFyKFIpLGNbQl0uYWRkKHkpLGNbSV0uYWRkKHkpLGNbTF0uYWRkKHkpLHVbQl0uYWRkKHgpLHVbSV0uYWRkKHgpLHVbTF0uYWRkKHgpKX1sZXQgUz10aGlzLmdyb3VwcztTLmxlbmd0aD09PTAmJihTPVt7c3RhcnQ6MCxjb3VudDpuLmxlbmd0aH1dKTtmb3IobGV0IEI9MCxJPVMubGVuZ3RoO0I8STsrK0Ipe2xldCBMPVNbQl0sUj1MLnN0YXJ0LEY9TC5jb3VudDtmb3IobGV0IHo9UixVPVIrRjt6PFU7eis9MyliKG5beiswXSxuW3orMV0sblt6KzJdKX1sZXQgQz1uZXcgaixQPW5ldyBqLGs9bmV3IGosTz1uZXcgajtmdW5jdGlvbiBEKEIpe2suZnJvbUFycmF5KG8sQiozKSxPLmNvcHkoayk7bGV0IEk9Y1tCXTtDLmNvcHkoSSksQy5zdWIoay5tdWx0aXBseVNjYWxhcihrLmRvdChJKSkpLm5vcm1hbGl6ZSgpLFAuY3Jvc3NWZWN0b3JzKE8sSSk7bGV0IFI9UC5kb3QodVtCXSk8MD8tMToxO2xbQio0XT1DLngsbFtCKjQrMV09Qy55LGxbQio0KzJdPUMueixsW0IqNCszXT1SfWZvcihsZXQgQj0wLEk9Uy5sZW5ndGg7QjxJOysrQil7bGV0IEw9U1tCXSxSPUwuc3RhcnQsRj1MLmNvdW50O2ZvcihsZXQgej1SLFU9UitGO3o8VTt6Kz0zKUQoblt6KzBdKSxEKG5beisxXSksRChuW3orMl0pfX1jb21wdXRlVmVydGV4Tm9ybWFscygpe2xldCB0PXRoaXMuaW5kZXgscj10aGlzLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtpZihyIT09dm9pZCAwKXtsZXQgbj10aGlzLmdldEF0dHJpYnV0ZSgibm9ybWFsIik7aWYobj09PXZvaWQgMCluPW5ldyBKZShuZXcgRmxvYXQzMkFycmF5KHIuY291bnQqMyksMyksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbik7ZWxzZSBmb3IobGV0IGY9MCxwPW4uY291bnQ7ZjxwO2YrKyluLnNldFhZWihmLDAsMCwwKTtsZXQgaT1uZXcgaixvPW5ldyBqLGE9bmV3IGoscz1uZXcgaixsPW5ldyBqLGM9bmV3IGosdT1uZXcgaixoPW5ldyBqO2lmKHQpZm9yKGxldCBmPTAscD10LmNvdW50O2Y8cDtmKz0zKXtsZXQgZD10LmdldFgoZiswKSxnPXQuZ2V0WChmKzEpLF89dC5nZXRYKGYrMik7aS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsZCksby5mcm9tQnVmZmVyQXR0cmlidXRlKHIsZyksYS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsXyksdS5zdWJWZWN0b3JzKGEsbyksaC5zdWJWZWN0b3JzKGksbyksdS5jcm9zcyhoKSxzLmZyb21CdWZmZXJBdHRyaWJ1dGUobixkKSxsLmZyb21CdWZmZXJBdHRyaWJ1dGUobixnKSxjLmZyb21CdWZmZXJBdHRyaWJ1dGUobixfKSxzLmFkZCh1KSxsLmFkZCh1KSxjLmFkZCh1KSxuLnNldFhZWihkLHMueCxzLnkscy56KSxuLnNldFhZWihnLGwueCxsLnksbC56KSxuLnNldFhZWihfLGMueCxjLnksYy56KX1lbHNlIGZvcihsZXQgZj0wLHA9ci5jb3VudDtmPHA7Zis9MylpLmZyb21CdWZmZXJBdHRyaWJ1dGUocixmKzApLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGYrMSksYS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsZisyKSx1LnN1YlZlY3RvcnMoYSxvKSxoLnN1YlZlY3RvcnMoaSxvKSx1LmNyb3NzKGgpLG4uc2V0WFlaKGYrMCx1LngsdS55LHUueiksbi5zZXRYWVooZisxLHUueCx1LnksdS56KSxuLnNldFhZWihmKzIsdS54LHUueSx1LnopO3RoaXMubm9ybWFsaXplTm9ybWFscygpLG4ubmVlZHNVcGRhdGU9ITB9fW1lcmdlKHQscil7aWYoISh0JiZ0LmlzQnVmZmVyR2VvbWV0cnkpKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBnZW9tZXRyeSBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQnVmZmVyR2VvbWV0cnkuIix0KTtyZXR1cm59cj09PXZvaWQgMCYmKHI9MCxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IE92ZXJ3cml0aW5nIG9yaWdpbmFsIGdlb21ldHJ5LCBzdGFydGluZyBhdCBvZmZzZXQ9MC4gVXNlIEJ1ZmZlckdlb21ldHJ5VXRpbHMubWVyZ2VCdWZmZXJHZW9tZXRyaWVzKCkgZm9yIGxvc3NsZXNzIG1lcmdlLiIpKTtsZXQgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGxldCBpIGluIG4pe2lmKHQuYXR0cmlidXRlc1tpXT09PXZvaWQgMCljb250aW51ZTtsZXQgYT1uW2ldLmFycmF5LHM9dC5hdHRyaWJ1dGVzW2ldLGw9cy5hcnJheSxjPXMuaXRlbVNpemUqcix1PU1hdGgubWluKGwubGVuZ3RoLGEubGVuZ3RoLWMpO2ZvcihsZXQgaD0wLGY9YztoPHU7aCsrLGYrKylhW2ZdPWxbaF19cmV0dXJuIHRoaXN9bm9ybWFsaXplTm9ybWFscygpe2xldCB0PXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7Zm9yKGxldCByPTAsbj10LmNvdW50O3I8bjtyKyspSW8uZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LHIpLElvLm5vcm1hbGl6ZSgpLHQuc2V0WFlaKHIsSW8ueCxJby55LElvLnopfXRvTm9uSW5kZXhlZCgpe2Z1bmN0aW9uIHQocyxsKXtsZXQgYz1zLmFycmF5LHU9cy5pdGVtU2l6ZSxoPXMubm9ybWFsaXplZCxmPW5ldyBjLmNvbnN0cnVjdG9yKGwubGVuZ3RoKnUpLHA9MCxkPTA7Zm9yKGxldCBnPTAsXz1sLmxlbmd0aDtnPF87ZysrKXtzLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/cD1sW2ddKnMuZGF0YS5zdHJpZGUrcy5vZmZzZXQ6cD1sW2ddKnU7Zm9yKGxldCB5PTA7eTx1O3krKylmW2QrK109Y1twKytdfXJldHVybiBuZXcgSmUoZix1LGgpfWlmKHRoaXMuaW5kZXg9PT1udWxsKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LnRvTm9uSW5kZXhlZCgpOiBCdWZmZXJHZW9tZXRyeSBpcyBhbHJlYWR5IG5vbi1pbmRleGVkLiIpLHRoaXM7bGV0IHI9bmV3IFBlLG49dGhpcy5pbmRleC5hcnJheSxpPXRoaXMuYXR0cmlidXRlcztmb3IobGV0IHMgaW4gaSl7bGV0IGw9aVtzXSxjPXQobCxuKTtyLnNldEF0dHJpYnV0ZShzLGMpfWxldCBvPXRoaXMubW9ycGhBdHRyaWJ1dGVzO2ZvcihsZXQgcyBpbiBvKXtsZXQgbD1bXSxjPW9bc107Zm9yKGxldCB1PTAsaD1jLmxlbmd0aDt1PGg7dSsrKXtsZXQgZj1jW3VdLHA9dChmLG4pO2wucHVzaChwKX1yLm1vcnBoQXR0cmlidXRlc1tzXT1sfXIubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtsZXQgYT10aGlzLmdyb3Vwcztmb3IobGV0IHM9MCxsPWEubGVuZ3RoO3M8bDtzKyspe2xldCBjPWFbc107ci5hZGRHcm91cChjLnN0YXJ0LGMuY291bnQsYy5tYXRlcmlhbEluZGV4KX1yZXR1cm4gcn10b0pTT04oKXtsZXQgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkJ1ZmZlckdlb21ldHJ5IixnZW5lcmF0b3I6IkJ1ZmZlckdlb21ldHJ5LnRvSlNPTiJ9fTtpZih0LnV1aWQ9dGhpcy51dWlkLHQudHlwZT10aGlzLnR5cGUsdGhpcy5uYW1lIT09IiImJih0Lm5hbWU9dGhpcy5uYW1lKSxPYmplY3Qua2V5cyh0aGlzLnVzZXJEYXRhKS5sZW5ndGg+MCYmKHQudXNlckRhdGE9dGhpcy51c2VyRGF0YSksdGhpcy5wYXJhbWV0ZXJzIT09dm9pZCAwKXtsZXQgbD10aGlzLnBhcmFtZXRlcnM7Zm9yKGxldCBjIGluIGwpbFtjXSE9PXZvaWQgMCYmKHRbY109bFtjXSk7cmV0dXJuIHR9dC5kYXRhPXthdHRyaWJ1dGVzOnt9fTtsZXQgcj10aGlzLmluZGV4O3IhPT1udWxsJiYodC5kYXRhLmluZGV4PXt0eXBlOnIuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyLmFycmF5KX0pO2xldCBuPXRoaXMuYXR0cmlidXRlcztmb3IobGV0IGwgaW4gbil7bGV0IGM9bltsXTt0LmRhdGEuYXR0cmlidXRlc1tsXT1jLnRvSlNPTih0LmRhdGEpfWxldCBpPXt9LG89ITE7Zm9yKGxldCBsIGluIHRoaXMubW9ycGhBdHRyaWJ1dGVzKXtsZXQgYz10aGlzLm1vcnBoQXR0cmlidXRlc1tsXSx1PVtdO2ZvcihsZXQgaD0wLGY9Yy5sZW5ndGg7aDxmO2grKyl7bGV0IHA9Y1toXTt1LnB1c2gocC50b0pTT04odC5kYXRhKSl9dS5sZW5ndGg+MCYmKGlbbF09dSxvPSEwKX1vJiYodC5kYXRhLm1vcnBoQXR0cmlidXRlcz1pLHQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlKTtsZXQgYT10aGlzLmdyb3VwczthLmxlbmd0aD4wJiYodC5kYXRhLmdyb3Vwcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKSk7bGV0IHM9dGhpcy5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gcyE9PW51bGwmJih0LmRhdGEuYm91bmRpbmdTcGhlcmU9e2NlbnRlcjpzLmNlbnRlci50b0FycmF5KCkscmFkaXVzOnMucmFkaXVzfSksdH1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGw7bGV0IHI9e307dGhpcy5uYW1lPXQubmFtZTtsZXQgbj10LmluZGV4O24hPT1udWxsJiZ0aGlzLnNldEluZGV4KG4uY2xvbmUocikpO2xldCBpPXQuYXR0cmlidXRlcztmb3IobGV0IGMgaW4gaSl7bGV0IHU9aVtjXTt0aGlzLnNldEF0dHJpYnV0ZShjLHUuY2xvbmUocikpfWxldCBvPXQubW9ycGhBdHRyaWJ1dGVzO2ZvcihsZXQgYyBpbiBvKXtsZXQgdT1bXSxoPW9bY107Zm9yKGxldCBmPTAscD1oLmxlbmd0aDtmPHA7ZisrKXUucHVzaChoW2ZdLmNsb25lKHIpKTt0aGlzLm1vcnBoQXR0cmlidXRlc1tjXT11fXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9dC5tb3JwaFRhcmdldHNSZWxhdGl2ZTtsZXQgYT10Lmdyb3Vwcztmb3IobGV0IGM9MCx1PWEubGVuZ3RoO2M8dTtjKyspe2xldCBoPWFbY107dGhpcy5hZGRHcm91cChoLnN0YXJ0LGguY291bnQsaC5tYXRlcmlhbEluZGV4KX1sZXQgcz10LmJvdW5kaW5nQm94O3MhPT1udWxsJiYodGhpcy5ib3VuZGluZ0JveD1zLmNsb25lKCkpO2xldCBsPXQuYm91bmRpbmdTcGhlcmU7cmV0dXJuIGwhPT1udWxsJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1sLmNsb25lKCkpLHRoaXMuZHJhd1JhbmdlLnN0YXJ0PXQuZHJhd1JhbmdlLnN0YXJ0LHRoaXMuZHJhd1JhbmdlLmNvdW50PXQuZHJhd1JhbmdlLmNvdW50LHRoaXMudXNlckRhdGE9dC51c2VyRGF0YSx0LnBhcmFtZXRlcnMhPT12b2lkIDAmJih0aGlzLnBhcmFtZXRlcnM9T2JqZWN0LmFzc2lnbih7fSx0LnBhcmFtZXRlcnMpKSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fTtQZS5wcm90b3R5cGUuaXNCdWZmZXJHZW9tZXRyeT0hMDt2YXIgdnVlPW5ldyBNZSxDMz1uZXcgWmYsaXV0PW5ldyBLZixSMD1uZXcgaixOMD1uZXcgaixEMD1uZXcgaixvdXQ9bmV3IGosYXV0PW5ldyBqLHN1dD1uZXcgaixfVj1uZXcgaix5Vj1uZXcgaix2Vj1uZXcgaix4Vj1uZXcgTHQsYlY9bmV3IEx0LHdWPW5ldyBMdCxsdXQ9bmV3IGosU1Y9bmV3IGosZWk9Y2xhc3MgZXh0ZW5kcyBvcntjb25zdHJ1Y3Rvcih0PW5ldyBQZSxyPW5ldyBhaCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2giLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPXIsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHQubW9ycGhUYXJnZXRJbmZsdWVuY2VzIT09dm9pZCAwJiYodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMuc2xpY2UoKSksdC5tb3JwaFRhcmdldERpY3Rpb25hcnkhPT12b2lkIDAmJih0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT1PYmplY3QuYXNzaWduKHt9LHQubW9ycGhUYXJnZXREaWN0aW9uYXJ5KSksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2xldCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtsZXQgcj10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKHIpO2lmKG4ubGVuZ3RoPjApe2xldCBpPXJbblswXV07aWYoaSE9PXZvaWQgMCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBvPTAsYT1pLmxlbmd0aDtvPGE7bysrKXtsZXQgcz1pW29dLm5hbWV8fFN0cmluZyhvKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W3NdPW99fX19ZWxzZXtsZXQgcj10Lm1vcnBoVGFyZ2V0cztyIT09dm9pZCAwJiZyLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fXJheWNhc3QodCxyKXtsZXQgbj10aGlzLmdlb21ldHJ5LGk9dGhpcy5tYXRlcmlhbCxvPXRoaXMubWF0cml4V29ybGQ7aWYoaT09PXZvaWQgMHx8KG4uYm91bmRpbmdTcGhlcmU9PT1udWxsJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLGl1dC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLGl1dC5hcHBseU1hdHJpeDQobyksdC5yYXkuaW50ZXJzZWN0c1NwaGVyZShpdXQpPT09ITEpfHwodnVlLmNvcHkobykuaW52ZXJ0KCksQzMuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KHZ1ZSksbi5ib3VuZGluZ0JveCE9PW51bGwmJkMzLmludGVyc2VjdHNCb3gobi5ib3VuZGluZ0JveCk9PT0hMSkpcmV0dXJuO2xldCBhO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7bGV0IHM9bi5pbmRleCxsPW4uYXR0cmlidXRlcy5wb3NpdGlvbixjPW4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLHU9bi5tb3JwaFRhcmdldHNSZWxhdGl2ZSxoPW4uYXR0cmlidXRlcy51dixmPW4uYXR0cmlidXRlcy51djIscD1uLmdyb3VwcyxkPW4uZHJhd1JhbmdlO2lmKHMhPT1udWxsKWlmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBnPTAsXz1wLmxlbmd0aDtnPF87ZysrKXtsZXQgeT1wW2ddLHg9aVt5Lm1hdGVyaWFsSW5kZXhdLGI9TWF0aC5tYXgoeS5zdGFydCxkLnN0YXJ0KSxTPU1hdGgubWluKHMuY291bnQsTWF0aC5taW4oeS5zdGFydCt5LmNvdW50LGQuc3RhcnQrZC5jb3VudCkpO2ZvcihsZXQgQz1iLFA9UztDPFA7Qys9Myl7bGV0IGs9cy5nZXRYKEMpLE89cy5nZXRYKEMrMSksRD1zLmdldFgoQysyKTthPU1WKHRoaXMseCx0LEMzLGwsYyx1LGgsZixrLE8sRCksYSYmKGEuZmFjZUluZGV4PU1hdGguZmxvb3IoQy8zKSxhLmZhY2UubWF0ZXJpYWxJbmRleD15Lm1hdGVyaWFsSW5kZXgsci5wdXNoKGEpKX19ZWxzZXtsZXQgZz1NYXRoLm1heCgwLGQuc3RhcnQpLF89TWF0aC5taW4ocy5jb3VudCxkLnN0YXJ0K2QuY291bnQpO2ZvcihsZXQgeT1nLHg9Xzt5PHg7eSs9Myl7bGV0IGI9cy5nZXRYKHkpLFM9cy5nZXRYKHkrMSksQz1zLmdldFgoeSsyKTthPU1WKHRoaXMsaSx0LEMzLGwsYyx1LGgsZixiLFMsQyksYSYmKGEuZmFjZUluZGV4PU1hdGguZmxvb3IoeS8zKSxyLnB1c2goYSkpfX1lbHNlIGlmKGwhPT12b2lkIDApaWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGc9MCxfPXAubGVuZ3RoO2c8XztnKyspe2xldCB5PXBbZ10seD1pW3kubWF0ZXJpYWxJbmRleF0sYj1NYXRoLm1heCh5LnN0YXJ0LGQuc3RhcnQpLFM9TWF0aC5taW4obC5jb3VudCxNYXRoLm1pbih5LnN0YXJ0K3kuY291bnQsZC5zdGFydCtkLmNvdW50KSk7Zm9yKGxldCBDPWIsUD1TO0M8UDtDKz0zKXtsZXQgaz1DLE89QysxLEQ9QysyO2E9TVYodGhpcyx4LHQsQzMsbCxjLHUsaCxmLGssTyxEKSxhJiYoYS5mYWNlSW5kZXg9TWF0aC5mbG9vcihDLzMpLGEuZmFjZS5tYXRlcmlhbEluZGV4PXkubWF0ZXJpYWxJbmRleCxyLnB1c2goYSkpfX1lbHNle2xldCBnPU1hdGgubWF4KDAsZC5zdGFydCksXz1NYXRoLm1pbihsLmNvdW50LGQuc3RhcnQrZC5jb3VudCk7Zm9yKGxldCB5PWcseD1fO3k8eDt5Kz0zKXtsZXQgYj15LFM9eSsxLEM9eSsyO2E9TVYodGhpcyxpLHQsQzMsbCxjLHUsaCxmLGIsUyxDKSxhJiYoYS5mYWNlSW5kZXg9TWF0aC5mbG9vcih5LzMpLHIucHVzaChhKSl9fX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19O2VpLnByb3RvdHlwZS5pc01lc2g9ITA7ZnVuY3Rpb24gb2ZyKGUsdCxyLG4saSxvLGEscyl7bGV0IGw7aWYodC5zaWRlPT09SWk/bD1uLmludGVyc2VjdFRyaWFuZ2xlKGEsbyxpLCEwLHMpOmw9bi5pbnRlcnNlY3RUcmlhbmdsZShpLG8sYSx0LnNpZGUhPT1MMSxzKSxsPT09bnVsbClyZXR1cm4gbnVsbDtTVi5jb3B5KHMpLFNWLmFwcGx5TWF0cml4NChlLm1hdHJpeFdvcmxkKTtsZXQgYz1yLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhTVik7cmV0dXJuIGM8ci5uZWFyfHxjPnIuZmFyP251bGw6e2Rpc3RhbmNlOmMscG9pbnQ6U1YuY2xvbmUoKSxvYmplY3Q6ZX19ZnVuY3Rpb24gTVYoZSx0LHIsbixpLG8sYSxzLGwsYyx1LGgpe1IwLmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxjKSxOMC5mcm9tQnVmZmVyQXR0cmlidXRlKGksdSksRDAuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGgpO2xldCBmPWUubW9ycGhUYXJnZXRJbmZsdWVuY2VzO2lmKG8mJmYpe19WLnNldCgwLDAsMCkseVYuc2V0KDAsMCwwKSx2Vi5zZXQoMCwwLDApO2ZvcihsZXQgZD0wLGc9by5sZW5ndGg7ZDxnO2QrKyl7bGV0IF89ZltkXSx5PW9bZF07XyE9PTAmJihvdXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh5LGMpLGF1dC5mcm9tQnVmZmVyQXR0cmlidXRlKHksdSksc3V0LmZyb21CdWZmZXJBdHRyaWJ1dGUoeSxoKSxhPyhfVi5hZGRTY2FsZWRWZWN0b3Iob3V0LF8pLHlWLmFkZFNjYWxlZFZlY3RvcihhdXQsXyksdlYuYWRkU2NhbGVkVmVjdG9yKHN1dCxfKSk6KF9WLmFkZFNjYWxlZFZlY3RvcihvdXQuc3ViKFIwKSxfKSx5Vi5hZGRTY2FsZWRWZWN0b3IoYXV0LnN1YihOMCksXyksdlYuYWRkU2NhbGVkVmVjdG9yKHN1dC5zdWIoRDApLF8pKSl9UjAuYWRkKF9WKSxOMC5hZGQoeVYpLEQwLmFkZCh2Vil9ZS5pc1NraW5uZWRNZXNoJiYoZS5ib25lVHJhbnNmb3JtKGMsUjApLGUuYm9uZVRyYW5zZm9ybSh1LE4wKSxlLmJvbmVUcmFuc2Zvcm0oaCxEMCkpO2xldCBwPW9mcihlLHQscixuLFIwLE4wLEQwLGx1dCk7aWYocCl7cyYmKHhWLmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjKSxiVi5mcm9tQnVmZmVyQXR0cmlidXRlKHMsdSksd1YuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLGgpLHAudXY9YWkuZ2V0VVYobHV0LFIwLE4wLEQwLHhWLGJWLHdWLG5ldyBMdCkpLGwmJih4Vi5mcm9tQnVmZmVyQXR0cmlidXRlKGwsYyksYlYuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLHUpLHdWLmZyb21CdWZmZXJBdHRyaWJ1dGUobCxoKSxwLnV2Mj1haS5nZXRVVihsdXQsUjAsTjAsRDAseFYsYlYsd1YsbmV3IEx0KSk7bGV0IGQ9e2E6YyxiOnUsYzpoLG5vcm1hbDpuZXcgaixtYXRlcmlhbEluZGV4OjB9O2FpLmdldE5vcm1hbChSMCxOMCxEMCxkLm5vcm1hbCkscC5mYWNlPWR9cmV0dXJuIHB9dmFyIEpmPWNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodD0xLHI9MSxuPTEsaT0xLG89MSxhPTEpe3N1cGVyKCksdGhpcy50eXBlPSJCb3hHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDpyLGRlcHRoOm4sd2lkdGhTZWdtZW50czppLGhlaWdodFNlZ21lbnRzOm8sZGVwdGhTZWdtZW50czphfTtsZXQgcz10aGlzO2k9TWF0aC5mbG9vcihpKSxvPU1hdGguZmxvb3IobyksYT1NYXRoLmZsb29yKGEpO2xldCBsPVtdLGM9W10sdT1bXSxoPVtdLGY9MCxwPTA7ZCgieiIsInkiLCJ4IiwtMSwtMSxuLHIsdCxhLG8sMCksZCgieiIsInkiLCJ4IiwxLC0xLG4sciwtdCxhLG8sMSksZCgieCIsInoiLCJ5IiwxLDEsdCxuLHIsaSxhLDIpLGQoIngiLCJ6IiwieSIsMSwtMSx0LG4sLXIsaSxhLDMpLGQoIngiLCJ5IiwieiIsMSwtMSx0LHIsbixpLG8sNCksZCgieCIsInkiLCJ6IiwtMSwtMSx0LHIsLW4saSxvLDUpLHRoaXMuc2V0SW5kZXgobCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUoYywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IHhlKHUsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHhlKGgsMikpO2Z1bmN0aW9uIGQoZyxfLHkseCxiLFMsQyxQLGssTyxEKXtsZXQgQj1TL2ssST1DL08sTD1TLzIsUj1DLzIsRj1QLzIsej1rKzEsVT1PKzEsVz0wLFo9MCxydD1uZXcgajtmb3IobGV0IG90PTA7b3Q8VTtvdCsrKXtsZXQgc3Q9b3QqSS1SO2ZvcihsZXQgU3Q9MDtTdDx6O1N0Kyspe2xldCBidD1TdCpCLUw7cnRbZ109YnQqeCxydFtfXT1zdCpiLHJ0W3ldPUYsYy5wdXNoKHJ0LngscnQueSxydC56KSxydFtnXT0wLHJ0W19dPTAscnRbeV09UD4wPzE6LTEsdS5wdXNoKHJ0LngscnQueSxydC56KSxoLnB1c2goU3QvayksaC5wdXNoKDEtb3QvTyksVys9MX19Zm9yKGxldCBvdD0wO290PE87b3QrKylmb3IobGV0IHN0PTA7c3Q8aztzdCsrKXtsZXQgU3Q9ZitzdCt6Km90LGJ0PWYrc3Qreioob3QrMSksTXQ9Zisoc3QrMSkreioob3QrMSksbHQ9Zisoc3QrMSkreipvdDtsLnB1c2goU3QsYnQsbHQpLGwucHVzaChidCxNdCxsdCksWis9Nn1zLmFkZEdyb3VwKHAsWixEKSxwKz1aLGYrPVd9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEpmKHQud2lkdGgsdC5oZWlnaHQsdC5kZXB0aCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyx0LmRlcHRoU2VnbWVudHMpfX07ZnVuY3Rpb24gSzMoZSl7bGV0IHQ9e307Zm9yKGxldCByIGluIGUpe3Rbcl09e307Zm9yKGxldCBuIGluIGVbcl0pe2xldCBpPWVbcl1bbl07aSYmKGkuaXNDb2xvcnx8aS5pc01hdHJpeDN8fGkuaXNNYXRyaXg0fHxpLmlzVmVjdG9yMnx8aS5pc1ZlY3RvcjN8fGkuaXNWZWN0b3I0fHxpLmlzVGV4dHVyZXx8aS5pc1F1YXRlcm5pb24pP3Rbcl1bbl09aS5jbG9uZSgpOkFycmF5LmlzQXJyYXkoaSk/dFtyXVtuXT1pLnNsaWNlKCk6dFtyXVtuXT1pfX1yZXR1cm4gdH1mdW5jdGlvbiBFYShlKXtsZXQgdD17fTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl7bGV0IG49SzMoZVtyXSk7Zm9yKGxldCBpIGluIG4pdFtpXT1uW2ldfXJldHVybiB0fXZhciBrZmU9e2Nsb25lOkszLG1lcmdlOkVhfSxhZnI9YHZvaWQgbWFpbigpIHsKCWdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTsKfWAsc2ZyPWB2b2lkIG1haW4oKSB7CglnbF9GcmFnQ29sb3IgPSB2ZWM0KCAxLjAsIDAuMCwgMC4wLCAxLjAgKTsKfWAsc2g9Y2xhc3MgZXh0ZW5kcyBVaXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZGVyTWF0ZXJpYWwiLHRoaXMuZGVmaW5lcz17fSx0aGlzLnVuaWZvcm1zPXt9LHRoaXMudmVydGV4U2hhZGVyPWFmcix0aGlzLmZyYWdtZW50U2hhZGVyPXNmcix0aGlzLmxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5saWdodHM9ITEsdGhpcy5jbGlwcGluZz0hMSx0aGlzLmV4dGVuc2lvbnM9e2Rlcml2YXRpdmVzOiExLGZyYWdEZXB0aDohMSxkcmF3QnVmZmVyczohMSxzaGFkZXJUZXh0dXJlTE9EOiExfSx0aGlzLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM9e2NvbG9yOlsxLDEsMV0sdXY6WzAsMF0sdXYyOlswLDBdfSx0aGlzLmluZGV4MEF0dHJpYnV0ZU5hbWU9dm9pZCAwLHRoaXMudW5pZm9ybXNOZWVkVXBkYXRlPSExLHRoaXMuZ2xzbFZlcnNpb249bnVsbCx0IT09dm9pZCAwJiYodC5hdHRyaWJ1dGVzIT09dm9pZCAwJiZjb25zb2xlLmVycm9yKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogYXR0cmlidXRlcyBzaG91bGQgbm93IGJlIGRlZmluZWQgaW4gVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKSx0aGlzLnNldFZhbHVlcyh0KSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIsdGhpcy52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIsdGhpcy51bmlmb3Jtcz1LMyh0LnVuaWZvcm1zKSx0aGlzLmRlZmluZXM9T2JqZWN0LmFzc2lnbih7fSx0LmRlZmluZXMpLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMubGlnaHRzPXQubGlnaHRzLHRoaXMuY2xpcHBpbmc9dC5jbGlwcGluZyx0aGlzLmV4dGVuc2lvbnM9T2JqZWN0LmFzc2lnbih7fSx0LmV4dGVuc2lvbnMpLHRoaXMuZ2xzbFZlcnNpb249dC5nbHNsVmVyc2lvbix0aGlzfXRvSlNPTih0KXtsZXQgcj1zdXBlci50b0pTT04odCk7ci5nbHNsVmVyc2lvbj10aGlzLmdsc2xWZXJzaW9uLHIudW5pZm9ybXM9e307Zm9yKGxldCBpIGluIHRoaXMudW5pZm9ybXMpe2xldCBhPXRoaXMudW5pZm9ybXNbaV0udmFsdWU7YSYmYS5pc1RleHR1cmU/ci51bmlmb3Jtc1tpXT17dHlwZToidCIsdmFsdWU6YS50b0pTT04odCkudXVpZH06YSYmYS5pc0NvbG9yP3IudW5pZm9ybXNbaV09e3R5cGU6ImMiLHZhbHVlOmEuZ2V0SGV4KCl9OmEmJmEuaXNWZWN0b3IyP3IudW5pZm9ybXNbaV09e3R5cGU6InYyIix2YWx1ZTphLnRvQXJyYXkoKX06YSYmYS5pc1ZlY3RvcjM/ci51bmlmb3Jtc1tpXT17dHlwZToidjMiLHZhbHVlOmEudG9BcnJheSgpfTphJiZhLmlzVmVjdG9yND9yLnVuaWZvcm1zW2ldPXt0eXBlOiJ2NCIsdmFsdWU6YS50b0FycmF5KCl9OmEmJmEuaXNNYXRyaXgzP3IudW5pZm9ybXNbaV09e3R5cGU6Im0zIix2YWx1ZTphLnRvQXJyYXkoKX06YSYmYS5pc01hdHJpeDQ/ci51bmlmb3Jtc1tpXT17dHlwZToibTQiLHZhbHVlOmEudG9BcnJheSgpfTpyLnVuaWZvcm1zW2ldPXt2YWx1ZTphfX1PYmplY3Qua2V5cyh0aGlzLmRlZmluZXMpLmxlbmd0aD4wJiYoci5kZWZpbmVzPXRoaXMuZGVmaW5lcyksci52ZXJ0ZXhTaGFkZXI9dGhpcy52ZXJ0ZXhTaGFkZXIsci5mcmFnbWVudFNoYWRlcj10aGlzLmZyYWdtZW50U2hhZGVyO2xldCBuPXt9O2ZvcihsZXQgaSBpbiB0aGlzLmV4dGVuc2lvbnMpdGhpcy5leHRlbnNpb25zW2ldPT09ITAmJihuW2ldPSEwKTtyZXR1cm4gT2JqZWN0LmtleXMobikubGVuZ3RoPjAmJihyLmV4dGVuc2lvbnM9bikscn19O3NoLnByb3RvdHlwZS5pc1NoYWRlck1hdGVyaWFsPSEwO3ZhciBSMT1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkNhbWVyYSIsdGhpcy5tYXRyaXhXb3JsZEludmVyc2U9bmV3IE1lLHRoaXMucHJvamVjdGlvbk1hdHJpeD1uZXcgTWUsdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZT1uZXcgTWV9Y29weSh0LHIpe3JldHVybiBzdXBlci5jb3B5KHQsciksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5wcm9qZWN0aW9uTWF0cml4LmNvcHkodC5wcm9qZWN0aW9uTWF0cml4KSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSksdGhpc31nZXRXb3JsZERpcmVjdGlvbih0KXt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTtsZXQgcj10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldCgtcls4XSwtcls5XSwtclsxMF0pLm5vcm1hbGl6ZSgpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9dXBkYXRlV29ybGRNYXRyaXgodCxyKXtzdXBlci51cGRhdGVXb3JsZE1hdHJpeCh0LHIpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfX07UjEucHJvdG90eXBlLmlzQ2FtZXJhPSEwO3ZhciBWaT1jbGFzcyBleHRlbmRzIFIxe2NvbnN0cnVjdG9yKHQ9NTAscj0xLG49LjEsaT0yZTMpe3N1cGVyKCksdGhpcy50eXBlPSJQZXJzcGVjdGl2ZUNhbWVyYSIsdGhpcy5mb3Y9dCx0aGlzLnpvb209MSx0aGlzLm5lYXI9bix0aGlzLmZhcj1pLHRoaXMuZm9jdXM9MTAsdGhpcy5hc3BlY3Q9cix0aGlzLnZpZXc9bnVsbCx0aGlzLmZpbG1HYXVnZT0zNSx0aGlzLmZpbG1PZmZzZXQ9MCx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jb3B5KHQscil7cmV0dXJuIHN1cGVyLmNvcHkodCxyKSx0aGlzLmZvdj10LmZvdix0aGlzLnpvb209dC56b29tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy5mb2N1cz10LmZvY3VzLHRoaXMuYXNwZWN0PXQuYXNwZWN0LHRoaXMudmlldz10LnZpZXc9PT1udWxsP251bGw6T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpLHRoaXMuZmlsbUdhdWdlPXQuZmlsbUdhdWdlLHRoaXMuZmlsbU9mZnNldD10LmZpbG1PZmZzZXQsdGhpc31zZXRGb2NhbExlbmd0aCh0KXtsZXQgcj0uNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90O3RoaXMuZm92PUtQKjIqTWF0aC5hdGFuKHIpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldEZvY2FsTGVuZ3RoKCl7bGV0IHQ9TWF0aC50YW4oUDEqLjUqdGhpcy5mb3YpO3JldHVybiAuNSp0aGlzLmdldEZpbG1IZWlnaHQoKS90fWdldEVmZmVjdGl2ZUZPVigpe3JldHVybiBLUCoyKk1hdGguYXRhbihNYXRoLnRhbihQMSouNSp0aGlzLmZvdikvdGhpcy56b29tKX1nZXRGaWxtV2lkdGgoKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UqTWF0aC5taW4odGhpcy5hc3BlY3QsMSl9Z2V0RmlsbUhlaWdodCgpe3JldHVybiB0aGlzLmZpbG1HYXVnZS9NYXRoLm1heCh0aGlzLmFzcGVjdCwxKX1zZXRWaWV3T2Zmc2V0KHQscixuLGksbyxhKXt0aGlzLmFzcGVjdD10L3IsdGhpcy52aWV3PT09bnVsbCYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PXIsdGhpcy52aWV3Lm9mZnNldFg9bix0aGlzLnZpZXcub2Zmc2V0WT1pLHRoaXMudmlldy53aWR0aD1vLHRoaXMudmlldy5oZWlnaHQ9YSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jbGVhclZpZXdPZmZzZXQoKXt0aGlzLnZpZXchPT1udWxsJiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfXVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKXtsZXQgdD10aGlzLm5lYXIscj10Kk1hdGgudGFuKFAxKi41KnRoaXMuZm92KS90aGlzLnpvb20sbj0yKnIsaT10aGlzLmFzcGVjdCpuLG89LS41KmksYT10aGlzLnZpZXc7aWYodGhpcy52aWV3IT09bnVsbCYmdGhpcy52aWV3LmVuYWJsZWQpe2xldCBsPWEuZnVsbFdpZHRoLGM9YS5mdWxsSGVpZ2h0O28rPWEub2Zmc2V0WCppL2wsci09YS5vZmZzZXRZKm4vYyxpKj1hLndpZHRoL2wsbio9YS5oZWlnaHQvY31sZXQgcz10aGlzLmZpbG1PZmZzZXQ7cyE9PTAmJihvKz10KnMvdGhpcy5nZXRGaWxtV2lkdGgoKSksdGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShvLG8raSxyLHItbix0LHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX10b0pTT04odCl7bGV0IHI9c3VwZXIudG9KU09OKHQpO3JldHVybiByLm9iamVjdC5mb3Y9dGhpcy5mb3Ysci5vYmplY3Quem9vbT10aGlzLnpvb20sci5vYmplY3QubmVhcj10aGlzLm5lYXIsci5vYmplY3QuZmFyPXRoaXMuZmFyLHIub2JqZWN0LmZvY3VzPXRoaXMuZm9jdXMsci5vYmplY3QuYXNwZWN0PXRoaXMuYXNwZWN0LHRoaXMudmlldyE9PW51bGwmJihyLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksci5vYmplY3QuZmlsbUdhdWdlPXRoaXMuZmlsbUdhdWdlLHIub2JqZWN0LmZpbG1PZmZzZXQ9dGhpcy5maWxtT2Zmc2V0LHJ9fTtWaS5wcm90b3R5cGUuaXNQZXJzcGVjdGl2ZUNhbWVyYT0hMDt2YXIgQTM9OTAsUDM9MSxaMz1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKHQscixuKXtpZihzdXBlcigpLHRoaXMudHlwZT0iQ3ViZUNhbWVyYSIsbi5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCE9PSEwKXtjb25zb2xlLmVycm9yKCJUSFJFRS5DdWJlQ2FtZXJhOiBUaGUgY29uc3RydWN0b3Igbm93IGV4cGVjdHMgYW4gaW5zdGFuY2Ugb2YgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0IGFzIHRoaXJkIHBhcmFtZXRlci4iKTtyZXR1cm59dGhpcy5yZW5kZXJUYXJnZXQ9bjtsZXQgaT1uZXcgVmkoQTMsUDMsdCxyKTtpLmxheWVycz10aGlzLmxheWVycyxpLnVwLnNldCgwLC0xLDApLGkubG9va0F0KG5ldyBqKDEsMCwwKSksdGhpcy5hZGQoaSk7bGV0IG89bmV3IFZpKEEzLFAzLHQscik7by5sYXllcnM9dGhpcy5sYXllcnMsby51cC5zZXQoMCwtMSwwKSxvLmxvb2tBdChuZXcgaigtMSwwLDApKSx0aGlzLmFkZChvKTtsZXQgYT1uZXcgVmkoQTMsUDMsdCxyKTthLmxheWVycz10aGlzLmxheWVycyxhLnVwLnNldCgwLDAsMSksYS5sb29rQXQobmV3IGooMCwxLDApKSx0aGlzLmFkZChhKTtsZXQgcz1uZXcgVmkoQTMsUDMsdCxyKTtzLmxheWVycz10aGlzLmxheWVycyxzLnVwLnNldCgwLDAsLTEpLHMubG9va0F0KG5ldyBqKDAsLTEsMCkpLHRoaXMuYWRkKHMpO2xldCBsPW5ldyBWaShBMyxQMyx0LHIpO2wubGF5ZXJzPXRoaXMubGF5ZXJzLGwudXAuc2V0KDAsLTEsMCksbC5sb29rQXQobmV3IGooMCwwLDEpKSx0aGlzLmFkZChsKTtsZXQgYz1uZXcgVmkoQTMsUDMsdCxyKTtjLmxheWVycz10aGlzLmxheWVycyxjLnVwLnNldCgwLC0xLDApLGMubG9va0F0KG5ldyBqKDAsMCwtMSkpLHRoaXMuYWRkKGMpfXVwZGF0ZSh0LHIpe3RoaXMucGFyZW50PT09bnVsbCYmdGhpcy51cGRhdGVNYXRyaXhXb3JsZCgpO2xldCBuPXRoaXMucmVuZGVyVGFyZ2V0LFtpLG8sYSxzLGwsY109dGhpcy5jaGlsZHJlbix1PXQueHIuZW5hYmxlZCxoPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7dC54ci5lbmFibGVkPSExO2xldCBmPW4udGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM7bi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz0hMSx0LnNldFJlbmRlclRhcmdldChuLDApLHQucmVuZGVyKHIsaSksdC5zZXRSZW5kZXJUYXJnZXQobiwxKSx0LnJlbmRlcihyLG8pLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMiksdC5yZW5kZXIocixhKSx0LnNldFJlbmRlclRhcmdldChuLDMpLHQucmVuZGVyKHIscyksdC5zZXRSZW5kZXJUYXJnZXQobiw0KSx0LnJlbmRlcihyLGwpLG4udGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9Zix0LnNldFJlbmRlclRhcmdldChuLDUpLHQucmVuZGVyKHIsYyksdC5zZXRSZW5kZXJUYXJnZXQoaCksdC54ci5lbmFibGVkPXUsbi50ZXh0dXJlLm5lZWRzUE1SRU1VcGRhdGU9ITB9fSxIMD1jbGFzcyBleHRlbmRzIHhpe2NvbnN0cnVjdG9yKHQscixuLGksbyxhLHMsbCxjLHUpe3Q9dCE9PXZvaWQgMD90OltdLHI9ciE9PXZvaWQgMD9yOm54LHN1cGVyKHQscixuLGksbyxhLHMsbCxjLHUpLHRoaXMuZmxpcFk9ITF9Z2V0IGltYWdlcygpe3JldHVybiB0aGlzLmltYWdlfXNldCBpbWFnZXModCl7dGhpcy5pbWFnZT10fX07SDAucHJvdG90eXBlLmlzQ3ViZVRleHR1cmU9ITA7dmFyIEozPWNsYXNzIGV4dGVuZHMgY3N7Y29uc3RydWN0b3IodCxyLG4pe051bWJlci5pc0ludGVnZXIocikmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQ3ViZVJlbmRlclRhcmdldDogY29uc3RydWN0b3Igc2lnbmF0dXJlIGlzIG5vdyBXZWJHTEN1YmVSZW5kZXJUYXJnZXQoIHNpemUsIG9wdGlvbnMgKSIpLHI9biksc3VwZXIodCx0LHIpLHI9cnx8e30sdGhpcy50ZXh0dXJlPW5ldyBIMCh2b2lkIDAsci5tYXBwaW5nLHIud3JhcFMsci53cmFwVCxyLm1hZ0ZpbHRlcixyLm1pbkZpbHRlcixyLmZvcm1hdCxyLnR5cGUsci5hbmlzb3Ryb3B5LHIuZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5pc1JlbmRlclRhcmdldFRleHR1cmU9ITAsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1yLmdlbmVyYXRlTWlwbWFwcyE9PXZvaWQgMD9yLmdlbmVyYXRlTWlwbWFwczohMSx0aGlzLnRleHR1cmUubWluRmlsdGVyPXIubWluRmlsdGVyIT09dm9pZCAwP3IubWluRmlsdGVyOm9pfWZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQscil7dGhpcy50ZXh0dXJlLnR5cGU9ci50eXBlLHRoaXMudGV4dHVyZS5mb3JtYXQ9Sm8sdGhpcy50ZXh0dXJlLmVuY29kaW5nPXIuZW5jb2RpbmcsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1yLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPXIubWluRmlsdGVyLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ci5tYWdGaWx0ZXI7bGV0IG49e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6YAoKCQkJCXZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247CgoJCQkJdmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHsKCgkJCQkJcmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7CgoJCQkJfQoKCQkJCXZvaWQgbWFpbigpIHsKCgkJCQkJdldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTsKCgkJCQkJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCQkJCQkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgoJCQkJfQoJCQlgLGZyYWdtZW50U2hhZGVyOmAKCgkJCQl1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7CgoJCQkJdmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjsKCgkJCQkjaW5jbHVkZSA8Y29tbW9uPgoKCQkJCXZvaWQgbWFpbigpIHsKCgkJCQkJdmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApOwoKCQkJCQl2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7CgoJCQkJCWdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApOwoKCQkJCX0KCQkJYH0saT1uZXcgSmYoNSw1LDUpLG89bmV3IHNoKHtuYW1lOiJDdWJlbWFwRnJvbUVxdWlyZWN0Iix1bmlmb3JtczpLMyhuLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6bi52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6bi5mcmFnbWVudFNoYWRlcixzaWRlOklpLGJsZW5kaW5nOiRkfSk7by51bmlmb3Jtcy50RXF1aXJlY3QudmFsdWU9cjtsZXQgYT1uZXcgZWkoaSxvKSxzPXIubWluRmlsdGVyO3JldHVybiByLm1pbkZpbHRlcj09PW94JiYoci5taW5GaWx0ZXI9b2kpLG5ldyBaMygxLDEwLHRoaXMpLnVwZGF0ZSh0LGEpLHIubWluRmlsdGVyPXMsYS5nZW9tZXRyeS5kaXNwb3NlKCksYS5tYXRlcmlhbC5kaXNwb3NlKCksdGhpc31jbGVhcih0LHIsbixpKXtsZXQgbz10LmdldFJlbmRlclRhcmdldCgpO2ZvcihsZXQgYT0wO2E8NjthKyspdC5zZXRSZW5kZXJUYXJnZXQodGhpcyxhKSx0LmNsZWFyKHIsbixpKTt0LnNldFJlbmRlclRhcmdldChvKX19O0ozLnByb3RvdHlwZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD0hMDt2YXIgY3V0PW5ldyBqLGxmcj1uZXcgaixjZnI9bmV3IGtpLGpjPWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IGooMSwwLDApLHI9MCl7dGhpcy5ub3JtYWw9dCx0aGlzLmNvbnN0YW50PXJ9c2V0KHQscil7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD1yLHRoaXN9c2V0Q29tcG9uZW50cyh0LHIsbixpKXtyZXR1cm4gdGhpcy5ub3JtYWwuc2V0KHQscixuKSx0aGlzLmNvbnN0YW50PWksdGhpc31zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludCh0LHIpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9LXIuZG90KHRoaXMubm9ybWFsKSx0aGlzfXNldEZyb21Db3BsYW5hclBvaW50cyh0LHIsbil7bGV0IGk9Y3V0LnN1YlZlY3RvcnMobixyKS5jcm9zcyhsZnIuc3ViVmVjdG9ycyh0LHIpKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpcy5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludChpLHQpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0Lm5vcm1hbCksdGhpcy5jb25zdGFudD10LmNvbnN0YW50LHRoaXN9bm9ybWFsaXplKCl7bGV0IHQ9MS90aGlzLm5vcm1hbC5sZW5ndGgoKTtyZXR1cm4gdGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIodCksdGhpcy5jb25zdGFudCo9dCx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLmNvbnN0YW50Kj0tMSx0aGlzLm5vcm1hbC5uZWdhdGUoKSx0aGlzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuZG90KHQpK3RoaXMuY29uc3RhbnR9ZGlzdGFuY2VUb1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQodC5jZW50ZXIpLXQucmFkaXVzfXByb2plY3RQb2ludCh0LHIpe3JldHVybiByLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludCh0KSkuYWRkKHQpfWludGVyc2VjdExpbmUodCxyKXtsZXQgbj10LmRlbHRhKGN1dCksaT10aGlzLm5vcm1hbC5kb3Qobik7aWYoaT09PTApcmV0dXJuIHRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpPT09MD9yLmNvcHkodC5zdGFydCk6bnVsbDtsZXQgbz0tKHQuc3RhcnQuZG90KHRoaXMubm9ybWFsKSt0aGlzLmNvbnN0YW50KS9pO3JldHVybiBvPDB8fG8+MT9udWxsOnIuY29weShuKS5tdWx0aXBseVNjYWxhcihvKS5hZGQodC5zdGFydCl9aW50ZXJzZWN0c0xpbmUodCl7bGV0IHI9dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5zdGFydCksbj10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmVuZCk7cmV0dXJuIHI8MCYmbj4wfHxuPDAmJnI+MH1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0LmludGVyc2VjdHNQbGFuZSh0aGlzKX1jb3BsYW5hclBvaW50KHQpe3JldHVybiB0LmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmNvbnN0YW50KX1hcHBseU1hdHJpeDQodCxyKXtsZXQgbj1yfHxjZnIuZ2V0Tm9ybWFsTWF0cml4KHQpLGk9dGhpcy5jb3BsYW5hclBvaW50KGN1dCkuYXBwbHlNYXRyaXg0KHQpLG89dGhpcy5ub3JtYWwuYXBwbHlNYXRyaXgzKG4pLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLmNvbnN0YW50PS1pLmRvdChvKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jb25zdGFudC09dC5kb3QodGhpcy5ub3JtYWwpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm5vcm1hbC5lcXVhbHModGhpcy5ub3JtYWwpJiZ0LmNvbnN0YW50PT09dGhpcy5jb25zdGFudH1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fTtqYy5wcm90b3R5cGUuaXNQbGFuZT0hMDt2YXIgSTM9bmV3IEtmLEVWPW5ldyBqLE4xPWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IGpjLHI9bmV3IGpjLG49bmV3IGpjLGk9bmV3IGpjLG89bmV3IGpjLGE9bmV3IGpjKXt0aGlzLnBsYW5lcz1bdCxyLG4saSxvLGFdfXNldCh0LHIsbixpLG8sYSl7bGV0IHM9dGhpcy5wbGFuZXM7cmV0dXJuIHNbMF0uY29weSh0KSxzWzFdLmNvcHkociksc1syXS5jb3B5KG4pLHNbM10uY29weShpKSxzWzRdLmNvcHkobyksc1s1XS5jb3B5KGEpLHRoaXN9Y29weSh0KXtsZXQgcj10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKXJbbl0uY29weSh0LnBsYW5lc1tuXSk7cmV0dXJuIHRoaXN9c2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl7bGV0IHI9dGhpcy5wbGFuZXMsbj10LmVsZW1lbnRzLGk9blswXSxvPW5bMV0sYT1uWzJdLHM9blszXSxsPW5bNF0sYz1uWzVdLHU9bls2XSxoPW5bN10sZj1uWzhdLHA9bls5XSxkPW5bMTBdLGc9blsxMV0sXz1uWzEyXSx5PW5bMTNdLHg9blsxNF0sYj1uWzE1XTtyZXR1cm4gclswXS5zZXRDb21wb25lbnRzKHMtaSxoLWwsZy1mLGItXykubm9ybWFsaXplKCksclsxXS5zZXRDb21wb25lbnRzKHMraSxoK2wsZytmLGIrXykubm9ybWFsaXplKCksclsyXS5zZXRDb21wb25lbnRzKHMrbyxoK2MsZytwLGIreSkubm9ybWFsaXplKCksclszXS5zZXRDb21wb25lbnRzKHMtbyxoLWMsZy1wLGIteSkubm9ybWFsaXplKCkscls0XS5zZXRDb21wb25lbnRzKHMtYSxoLXUsZy1kLGIteCkubm9ybWFsaXplKCkscls1XS5zZXRDb21wb25lbnRzKHMrYSxoK3UsZytkLGIreCkubm9ybWFsaXplKCksdGhpc31pbnRlcnNlY3RzT2JqZWN0KHQpe2xldCByPXQuZ2VvbWV0cnk7cmV0dXJuIHIuYm91bmRpbmdTcGhlcmU9PT1udWxsJiZyLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEkzLmNvcHkoci5ib3VuZGluZ1NwaGVyZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShJMyl9aW50ZXJzZWN0c1Nwcml0ZSh0KXtyZXR1cm4gSTMuY2VudGVyLnNldCgwLDAsMCksSTMucmFkaXVzPS43MDcxMDY3ODExODY1NDc2LEkzLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoSTMpfWludGVyc2VjdHNTcGhlcmUodCl7bGV0IHI9dGhpcy5wbGFuZXMsbj10LmNlbnRlcixpPS10LnJhZGl1cztmb3IobGV0IG89MDtvPDY7bysrKWlmKHJbb10uZGlzdGFuY2VUb1BvaW50KG4pPGkpcmV0dXJuITE7cmV0dXJuITB9aW50ZXJzZWN0c0JveCh0KXtsZXQgcj10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKXtsZXQgaT1yW25dO2lmKEVWLng9aS5ub3JtYWwueD4wP3QubWF4Lng6dC5taW4ueCxFVi55PWkubm9ybWFsLnk+MD90Lm1heC55OnQubWluLnksRVYuej1pLm5vcm1hbC56PjA/dC5tYXguejp0Lm1pbi56LGkuZGlzdGFuY2VUb1BvaW50KEVWKTwwKXJldHVybiExfXJldHVybiEwfWNvbnRhaW5zUG9pbnQodCl7bGV0IHI9dGhpcy5wbGFuZXM7Zm9yKGxldCBuPTA7bjw2O24rKylpZihyW25dLmRpc3RhbmNlVG9Qb2ludCh0KTwwKXJldHVybiExO3JldHVybiEwfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX19O2Z1bmN0aW9uIFJmZSgpe2xldCBlPW51bGwsdD0hMSxyPW51bGwsbj1udWxsO2Z1bmN0aW9uIGkobyxhKXtyKG8sYSksbj1lLnJlcXVlc3RBbmltYXRpb25GcmFtZShpKX1yZXR1cm57c3RhcnQ6ZnVuY3Rpb24oKXt0IT09ITAmJnIhPT1udWxsJiYobj1lLnJlcXVlc3RBbmltYXRpb25GcmFtZShpKSx0PSEwKX0sc3RvcDpmdW5jdGlvbigpe2UuY2FuY2VsQW5pbWF0aW9uRnJhbWUobiksdD0hMX0sc2V0QW5pbWF0aW9uTG9vcDpmdW5jdGlvbihvKXtyPW99LHNldENvbnRleHQ6ZnVuY3Rpb24obyl7ZT1vfX19ZnVuY3Rpb24gdWZyKGUsdCl7bGV0IHI9dC5pc1dlYkdMMixuPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGkoYyx1KXtsZXQgaD1jLmFycmF5LGY9Yy51c2FnZSxwPWUuY3JlYXRlQnVmZmVyKCk7ZS5iaW5kQnVmZmVyKHUscCksZS5idWZmZXJEYXRhKHUsaCxmKSxjLm9uVXBsb2FkQ2FsbGJhY2soKTtsZXQgZD01MTI2O3JldHVybiBoIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5P2Q9NTEyNjpoIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVbnN1cHBvcnRlZCBkYXRhIGJ1ZmZlciBmb3JtYXQ6IEZsb2F0NjRBcnJheS4iKTpoIGluc3RhbmNlb2YgVWludDE2QXJyYXk/Yy5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU/cj9kPTUxMzE6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVzYWdlIG9mIEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgV2ViR0wyLiIpOmQ9NTEyMzpoIGluc3RhbmNlb2YgSW50MTZBcnJheT9kPTUxMjI6aCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5P2Q9NTEyNTpoIGluc3RhbmNlb2YgSW50MzJBcnJheT9kPTUxMjQ6aCBpbnN0YW5jZW9mIEludDhBcnJheT9kPTUxMjA6KGggaW5zdGFuY2VvZiBVaW50OEFycmF5fHxoIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXkpJiYoZD01MTIxKSx7YnVmZmVyOnAsdHlwZTpkLGJ5dGVzUGVyRWxlbWVudDpoLkJZVEVTX1BFUl9FTEVNRU5ULHZlcnNpb246Yy52ZXJzaW9ufX1mdW5jdGlvbiBvKGMsdSxoKXtsZXQgZj11LmFycmF5LHA9dS51cGRhdGVSYW5nZTtlLmJpbmRCdWZmZXIoaCxjKSxwLmNvdW50PT09LTE/ZS5idWZmZXJTdWJEYXRhKGgsMCxmKToocj9lLmJ1ZmZlclN1YkRhdGEoaCxwLm9mZnNldCpmLkJZVEVTX1BFUl9FTEVNRU5ULGYscC5vZmZzZXQscC5jb3VudCk6ZS5idWZmZXJTdWJEYXRhKGgscC5vZmZzZXQqZi5CWVRFU19QRVJfRUxFTUVOVCxmLnN1YmFycmF5KHAub2Zmc2V0LHAub2Zmc2V0K3AuY291bnQpKSxwLmNvdW50PS0xKX1mdW5jdGlvbiBhKGMpe3JldHVybiBjLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihjPWMuZGF0YSksbi5nZXQoYyl9ZnVuY3Rpb24gcyhjKXtjLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihjPWMuZGF0YSk7bGV0IHU9bi5nZXQoYyk7dSYmKGUuZGVsZXRlQnVmZmVyKHUuYnVmZmVyKSxuLmRlbGV0ZShjKSl9ZnVuY3Rpb24gbChjLHUpe2lmKGMuaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7bGV0IGY9bi5nZXQoYyk7KCFmfHxmLnZlcnNpb248Yy52ZXJzaW9uKSYmbi5zZXQoYyx7YnVmZmVyOmMuYnVmZmVyLHR5cGU6Yy50eXBlLGJ5dGVzUGVyRWxlbWVudDpjLmVsZW1lbnRTaXplLHZlcnNpb246Yy52ZXJzaW9ufSk7cmV0dXJufWMuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGM9Yy5kYXRhKTtsZXQgaD1uLmdldChjKTtoPT09dm9pZCAwP24uc2V0KGMsaShjLHUpKTpoLnZlcnNpb248Yy52ZXJzaW9uJiYobyhoLmJ1ZmZlcixjLHUpLGgudmVyc2lvbj1jLnZlcnNpb24pfXJldHVybntnZXQ6YSxyZW1vdmU6cyx1cGRhdGU6bH19dmFyIFYwPWNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodD0xLHI9MSxuPTEsaT0xKXtzdXBlcigpLHRoaXMudHlwZT0iUGxhbmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDpyLHdpZHRoU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czppfTtsZXQgbz10LzIsYT1yLzIscz1NYXRoLmZsb29yKG4pLGw9TWF0aC5mbG9vcihpKSxjPXMrMSx1PWwrMSxoPXQvcyxmPXIvbCxwPVtdLGQ9W10sZz1bXSxfPVtdO2ZvcihsZXQgeT0wO3k8dTt5Kyspe2xldCB4PXkqZi1hO2ZvcihsZXQgYj0wO2I8YztiKyspe2xldCBTPWIqaC1vO2QucHVzaChTLC14LDApLGcucHVzaCgwLDAsMSksXy5wdXNoKGIvcyksXy5wdXNoKDEteS9sKX19Zm9yKGxldCB5PTA7eTxsO3krKylmb3IobGV0IHg9MDt4PHM7eCsrKXtsZXQgYj14K2MqeSxTPXgrYyooeSsxKSxDPXgrMStjKih5KzEpLFA9eCsxK2MqeTtwLnB1c2goYixTLFApLHAucHVzaChTLEMsUCl9dGhpcy5zZXRJbmRleChwKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShkLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgeGUoZywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgeGUoXywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgVjAodC53aWR0aCx0LmhlaWdodCx0LndpZHRoU2VnbWVudHMsdC5oZWlnaHRTZWdtZW50cyl9fSxoZnI9YCNpZmRlZiBVU0VfQUxQSEFNQVAKCWRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHZVdiApLmc7CiNlbmRpZmAsZmZyPWAjaWZkZWYgVVNFX0FMUEhBTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDsKI2VuZGlmYCxwZnI9YCNpZmRlZiBVU0VfQUxQSEFURVNUCglpZiAoIGRpZmZ1c2VDb2xvci5hIDwgYWxwaGFUZXN0ICkgZGlzY2FyZDsKI2VuZGlmYCxkZnI9YCNpZmRlZiBVU0VfQUxQSEFURVNUCgl1bmlmb3JtIGZsb2F0IGFscGhhVGVzdDsKI2VuZGlmYCxtZnI9YCNpZmRlZiBVU0VfQU9NQVAKCWZsb2F0IGFtYmllbnRPY2NsdXNpb24gPSAoIHRleHR1cmUyRCggYW9NYXAsIHZVdjIgKS5yIC0gMS4wICkgKiBhb01hcEludGVuc2l0eSArIDEuMDsKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBhbWJpZW50T2NjbHVzaW9uOwoJI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBTVEFOREFSRCApCgkJZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApOwoJCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKj0gY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBkb3ROViwgYW1iaWVudE9jY2x1c2lvbiwgbWF0ZXJpYWwucm91Z2huZXNzICk7CgkjZW5kaWYKI2VuZGlmYCxnZnI9YCNpZmRlZiBVU0VfQU9NQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGFvTWFwOwoJdW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTsKI2VuZGlmYCxfZnI9InZlYzMgdHJhbnNmb3JtZWQgPSB2ZWMzKCBwb3NpdGlvbiApOyIseWZyPWB2ZWMzIG9iamVjdE5vcm1hbCA9IHZlYzMoIG5vcm1hbCApOwojaWZkZWYgVVNFX1RBTkdFTlQKCXZlYzMgb2JqZWN0VGFuZ2VudCA9IHZlYzMoIHRhbmdlbnQueHl6ICk7CiNlbmRpZmAsdmZyPWB2ZWMzIEJSREZfTGFtYmVydCggY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IgKSB7CglyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjsKfQp2ZWMzIEZfU2NobGljayggY29uc3QgaW4gdmVjMyBmMCwgY29uc3QgaW4gZmxvYXQgZjkwLCBjb25zdCBpbiBmbG9hdCBkb3RWSCApIHsKCWZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC0gNS41NTQ3MyAqIGRvdFZIIC0gNi45ODMxNiApICogZG90VkggKTsKCXJldHVybiBmMCAqICggMS4wIC0gZnJlc25lbCApICsgKCBmOTAgKiBmcmVzbmVsICk7Cn0KZmxvYXQgVl9HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkgewoJZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApOwoJZmxvYXQgZ3YgPSBkb3ROTCAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TlYgKSApOwoJZmxvYXQgZ2wgPSBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApOwoJcmV0dXJuIDAuNSAvIG1heCggZ3YgKyBnbCwgRVBTSUxPTiApOwp9CmZsb2F0IERfR0dYKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7CglmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7CglmbG9hdCBkZW5vbSA9IHBvdzIoIGRvdE5IICkgKiAoIGEyIC0gMS4wICkgKyAxLjA7CglyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGEyIC8gcG93MiggZGVub20gKTsKfQp2ZWMzIEJSREZfR0dYKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiBmbG9hdCBmOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHsKCWZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7Cgl2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGxpZ2h0RGlyICsgdmlld0RpciApOwoJZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGxpZ2h0RGlyICkgKTsKCWZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTsKCWZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTsKCWZsb2F0IGRvdFZIID0gc2F0dXJhdGUoIGRvdCggdmlld0RpciwgaGFsZkRpciApICk7Cgl2ZWMzIEYgPSBGX1NjaGxpY2soIGYwLCBmOTAsIGRvdFZIICk7CglmbG9hdCBWID0gVl9HR1hfU21pdGhDb3JyZWxhdGVkKCBhbHBoYSwgZG90TkwsIGRvdE5WICk7CglmbG9hdCBEID0gRF9HR1goIGFscGhhLCBkb3ROSCApOwoJcmV0dXJuIEYgKiAoIFYgKiBEICk7Cn0KdmVjMiBMVENfVXYoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7Cgljb25zdCBmbG9hdCBMVVRfU0laRSA9IDY0LjA7Cgljb25zdCBmbG9hdCBMVVRfU0NBTEUgPSAoIExVVF9TSVpFIC0gMS4wICkgLyBMVVRfU0laRTsKCWNvbnN0IGZsb2F0IExVVF9CSUFTID0gMC41IC8gTFVUX1NJWkU7CglmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIE4sIFYgKSApOwoJdmVjMiB1diA9IHZlYzIoIHJvdWdobmVzcywgc3FydCggMS4wIC0gZG90TlYgKSApOwoJdXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTOwoJcmV0dXJuIHV2Owp9CmZsb2F0IExUQ19DbGlwcGVkU3BoZXJlRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyBmICkgewoJZmxvYXQgbCA9IGxlbmd0aCggZiApOwoJcmV0dXJuIG1heCggKCBsICogbCArIGYueiApIC8gKCBsICsgMS4wICksIDAuMCApOwp9CnZlYzMgTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIHYxLCBjb25zdCBpbiB2ZWMzIHYyICkgewoJZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7CglmbG9hdCB5ID0gYWJzKCB4ICk7CglmbG9hdCBhID0gMC44NTQzOTg1ICsgKCAwLjQ5NjUxNTUgKyAwLjAxNDUyMDYgKiB5ICkgKiB5OwoJZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTsKCWZsb2F0IHYgPSBhIC8gYjsKCWZsb2F0IHRoZXRhX3NpbnRoZXRhID0gKCB4ID4gMC4wICkgPyB2IDogMC41ICogaW52ZXJzZXNxcnQoIG1heCggMS4wIC0geCAqIHgsIDFlLTcgKSApIC0gdjsKCXJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTsKfQp2ZWMzIExUQ19FdmFsdWF0ZSggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIHZlYzMgUCwgY29uc3QgaW4gbWF0MyBtSW52LCBjb25zdCBpbiB2ZWMzIHJlY3RDb29yZHNbIDQgXSApIHsKCXZlYzMgdjEgPSByZWN0Q29vcmRzWyAxIF0gLSByZWN0Q29vcmRzWyAwIF07Cgl2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdOwoJdmVjMyBsaWdodE5vcm1hbCA9IGNyb3NzKCB2MSwgdjIgKTsKCWlmKCBkb3QoIGxpZ2h0Tm9ybWFsLCBQIC0gcmVjdENvb3Jkc1sgMCBdICkgPCAwLjAgKSByZXR1cm4gdmVjMyggMC4wICk7Cgl2ZWMzIFQxLCBUMjsKCVQxID0gbm9ybWFsaXplKCBWIC0gTiAqIGRvdCggViwgTiApICk7CglUMiA9IC0gY3Jvc3MoIE4sIFQxICk7CgltYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApOwoJdmVjMyBjb29yZHNbIDQgXTsKCWNvb3Jkc1sgMCBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAwIF0gLSBQICk7Cgljb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApOwoJY29vcmRzWyAyIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDIgXSAtIFAgKTsKCWNvb3Jkc1sgMyBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAzIF0gLSBQICk7Cgljb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTsKCWNvb3Jkc1sgMSBdID0gbm9ybWFsaXplKCBjb29yZHNbIDEgXSApOwoJY29vcmRzWyAyIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMiBdICk7Cgljb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTsKCXZlYzMgdmVjdG9yRm9ybUZhY3RvciA9IHZlYzMoIDAuMCApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMCBdLCBjb29yZHNbIDEgXSApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMiBdLCBjb29yZHNbIDMgXSApOwoJdmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMyBdLCBjb29yZHNbIDAgXSApOwoJZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7CglyZXR1cm4gdmVjMyggcmVzdWx0ICk7Cn0KZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHsKCXJldHVybiAwLjI1Owp9CmZsb2F0IERfQmxpbm5QaG9uZyggY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHsKCXJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApOwp9CnZlYzMgQlJERl9CbGlublBob25nKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcyApIHsKCXZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggbGlnaHREaXIgKyB2aWV3RGlyICk7CglmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7CglmbG9hdCBkb3RWSCA9IHNhdHVyYXRlKCBkb3QoIHZpZXdEaXIsIGhhbGZEaXIgKSApOwoJdmVjMyBGID0gRl9TY2hsaWNrKCBzcGVjdWxhckNvbG9yLCAxLjAsIGRvdFZIICk7CglmbG9hdCBHID0gR19CbGlublBob25nX0ltcGxpY2l0KCApOwoJZmxvYXQgRCA9IERfQmxpbm5QaG9uZyggc2hpbmluZXNzLCBkb3ROSCApOwoJcmV0dXJuIEYgKiAoIEcgKiBEICk7Cn0KI2lmIGRlZmluZWQoIFVTRV9TSEVFTiApCmZsb2F0IERfQ2hhcmxpZSggZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBkb3ROSCApIHsKCWZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7CglmbG9hdCBpbnZBbHBoYSA9IDEuMCAvIGFscGhhOwoJZmxvYXQgY29zMmggPSBkb3ROSCAqIGRvdE5IOwoJZmxvYXQgc2luMmggPSBtYXgoIDEuMCAtIGNvczJoLCAwLjAwNzgxMjUgKTsKCXJldHVybiAoIDIuMCArIGludkFscGhhICkgKiBwb3coIHNpbjJoLCBpbnZBbHBoYSAqIDAuNSApIC8gKCAyLjAgKiBQSSApOwp9CmZsb2F0IFZfTmV1YmVsdCggZmxvYXQgZG90TlYsIGZsb2F0IGRvdE5MICkgewoJcmV0dXJuIHNhdHVyYXRlKCAxLjAgLyAoIDQuMCAqICggZG90TkwgKyBkb3ROViAtIGRvdE5MICogZG90TlYgKSApICk7Cn0KdmVjMyBCUkRGX1NoZWVuKCBjb25zdCBpbiB2ZWMzIGxpZ2h0RGlyLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCB2ZWMzIHNoZWVuQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoZWVuUm91Z2huZXNzICkgewoJdmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBsaWdodERpciArIHZpZXdEaXIgKTsKCWZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBsaWdodERpciApICk7CglmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7CglmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7CglmbG9hdCBEID0gRF9DaGFybGllKCBzaGVlblJvdWdobmVzcywgZG90TkggKTsKCWZsb2F0IFYgPSBWX05ldWJlbHQoIGRvdE5WLCBkb3ROTCApOwoJcmV0dXJuIHNoZWVuQ29sb3IgKiAoIEQgKiBWICk7Cn0KI2VuZGlmYCx4ZnI9YCNpZmRlZiBVU0VfQlVNUE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgYnVtcE1hcDsKCXVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlOwoJdmVjMiBkSGR4eV9md2QoKSB7CgkJdmVjMiBkU1RkeCA9IGRGZHgoIHZVdiApOwoJCXZlYzIgZFNUZHkgPSBkRmR5KCB2VXYgKTsKCQlmbG9hdCBIbGwgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiApLng7CgkJZmxvYXQgZEJ4ID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKyBkU1RkeCApLnggLSBIbGw7CgkJZmxvYXQgZEJ5ID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKyBkU1RkeSApLnggLSBIbGw7CgkJcmV0dXJuIHZlYzIoIGRCeCwgZEJ5ICk7Cgl9Cgl2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5LCBmbG9hdCBmYWNlRGlyZWN0aW9uICkgewoJCXZlYzMgdlNpZ21hWCA9IHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTsKCQl2ZWMzIHZTaWdtYVkgPSB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7CgkJdmVjMyB2TiA9IHN1cmZfbm9ybTsKCQl2ZWMzIFIxID0gY3Jvc3MoIHZTaWdtYVksIHZOICk7CgkJdmVjMyBSMiA9IGNyb3NzKCB2TiwgdlNpZ21hWCApOwoJCWZsb2F0IGZEZXQgPSBkb3QoIHZTaWdtYVgsIFIxICkgKiBmYWNlRGlyZWN0aW9uOwoJCXZlYzMgdkdyYWQgPSBzaWduKCBmRGV0ICkgKiAoIGRIZHh5LnggKiBSMSArIGRIZHh5LnkgKiBSMiApOwoJCXJldHVybiBub3JtYWxpemUoIGFicyggZkRldCApICogc3VyZl9ub3JtIC0gdkdyYWQgKTsKCX0KI2VuZGlmYCxiZnI9YCNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMAoJdmVjNCBwbGFuZTsKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHsKCQlwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07CgkJaWYgKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApIGRpc2NhcmQ7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJI2lmIFVOSU9OX0NMSVBQSU5HX1BMQU5FUyA8IE5VTV9DTElQUElOR19QTEFORVMKCQlib29sIGNsaXBwZWQgPSB0cnVlOwoJCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCQlmb3IgKCBpbnQgaSA9IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSA8IE5VTV9DTElQUElOR19QTEFORVM7IGkgKysgKSB7CgkJCXBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTsKCQkJY2xpcHBlZCA9ICggZG90KCB2Q2xpcFBvc2l0aW9uLCBwbGFuZS54eXogKSA+IHBsYW5lLncgKSAmJiBjbGlwcGVkOwoJCX0KCQkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJCWlmICggY2xpcHBlZCApIGRpc2NhcmQ7CgkjZW5kaWYKI2VuZGlmYCx3ZnI9YCNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMAoJdmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247Cgl1bmlmb3JtIHZlYzQgY2xpcHBpbmdQbGFuZXNbIE5VTV9DTElQUElOR19QTEFORVMgXTsKI2VuZGlmYCxTZnI9YCNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMAoJdmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247CiNlbmRpZmAsTWZyPWAjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDAKCXZDbGlwUG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6OwojZW5kaWZgLEVmcj1gI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApCglkaWZmdXNlQ29sb3IgKj0gdkNvbG9yOwojZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKQoJZGlmZnVzZUNvbG9yLnJnYiAqPSB2Q29sb3I7CiNlbmRpZmAsVGZyPWAjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBICkKCXZhcnlpbmcgdmVjNCB2Q29sb3I7CiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApCgl2YXJ5aW5nIHZlYzMgdkNvbG9yOwojZW5kaWZgLENmcj1gI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApCgl2YXJ5aW5nIHZlYzQgdkNvbG9yOwojZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApCgl2YXJ5aW5nIHZlYzMgdkNvbG9yOwojZW5kaWZgLEFmcj1gI2lmIGRlZmluZWQoIFVTRV9DT0xPUl9BTFBIQSApCgl2Q29sb3IgPSB2ZWM0KCAxLjAgKTsKI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKQoJdkNvbG9yID0gdmVjMyggMS4wICk7CiNlbmRpZgojaWZkZWYgVVNFX0NPTE9SCgl2Q29sb3IgKj0gY29sb3I7CiNlbmRpZgojaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1IKCXZDb2xvci54eXogKj0gaW5zdGFuY2VDb2xvci54eXo7CiNlbmRpZmAsUGZyPWAjZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzCiNkZWZpbmUgUEkyIDYuMjgzMTg1MzA3MTc5NTg2CiNkZWZpbmUgUElfSEFMRiAxLjU3MDc5NjMyNjc5NDg5NjYKI2RlZmluZSBSRUNJUFJPQ0FMX1BJIDAuMzE4MzA5ODg2MTgzNzkwNwojZGVmaW5lIFJFQ0lQUk9DQUxfUEkyIDAuMTU5MTU0OTQzMDkxODk1MzUKI2RlZmluZSBFUFNJTE9OIDFlLTYKI2lmbmRlZiBzYXR1cmF0ZQojZGVmaW5lIHNhdHVyYXRlKCBhICkgY2xhbXAoIGEsIDAuMCwgMS4wICkKI2VuZGlmCiNkZWZpbmUgd2hpdGVDb21wbGVtZW50KCBhICkgKCAxLjAgLSBzYXR1cmF0ZSggYSApICkKZmxvYXQgcG93MiggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeDsgfQpmbG9hdCBwb3czKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4Kng7IH0KZmxvYXQgcG93NCggY29uc3QgaW4gZmxvYXQgeCApIHsgZmxvYXQgeDIgPSB4Kng7IHJldHVybiB4Mip4MjsgfQpmbG9hdCBtYXgzKCBjb25zdCBpbiB2ZWMzIHYgKSB7IHJldHVybiBtYXgoIG1heCggdi54LCB2LnkgKSwgdi56ICk7IH0KZmxvYXQgYXZlcmFnZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsgcmV0dXJuIGRvdCggY29sb3IsIHZlYzMoIDAuMzMzMyApICk7IH0KaGlnaHAgZmxvYXQgcmFuZCggY29uc3QgaW4gdmVjMiB1diApIHsKCWNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAxMi45ODk4LCBiID0gNzguMjMzLCBjID0gNDM3NTguNTQ1MzsKCWhpZ2hwIGZsb2F0IGR0ID0gZG90KCB1di54eSwgdmVjMiggYSxiICkgKSwgc24gPSBtb2QoIGR0LCBQSSApOwoJcmV0dXJuIGZyYWN0KCBzaW4oIHNuICkgKiBjICk7Cn0KI2lmZGVmIEhJR0hfUFJFQ0lTSU9OCglmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7IHJldHVybiBsZW5ndGgoIHYgKTsgfQojZWxzZQoJZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkgewoJCWZsb2F0IG1heENvbXBvbmVudCA9IG1heDMoIGFicyggdiApICk7CgkJcmV0dXJuIGxlbmd0aCggdiAvIG1heENvbXBvbmVudCApICogbWF4Q29tcG9uZW50OwoJfQojZW5kaWYKc3RydWN0IEluY2lkZW50TGlnaHQgewoJdmVjMyBjb2xvcjsKCXZlYzMgZGlyZWN0aW9uOwoJYm9vbCB2aXNpYmxlOwp9OwpzdHJ1Y3QgUmVmbGVjdGVkTGlnaHQgewoJdmVjMyBkaXJlY3REaWZmdXNlOwoJdmVjMyBkaXJlY3RTcGVjdWxhcjsKCXZlYzMgaW5kaXJlY3REaWZmdXNlOwoJdmVjMyBpbmRpcmVjdFNwZWN1bGFyOwp9OwpzdHJ1Y3QgR2VvbWV0cmljQ29udGV4dCB7Cgl2ZWMzIHBvc2l0aW9uOwoJdmVjMyBub3JtYWw7Cgl2ZWMzIHZpZXdEaXI7CiNpZmRlZiBVU0VfQ0xFQVJDT0FUCgl2ZWMzIGNsZWFyY29hdE5vcm1hbDsKI2VuZGlmCn07CnZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7CglyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTsKfQp2ZWMzIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHsKCXJldHVybiBub3JtYWxpemUoICggdmVjNCggZGlyLCAwLjAgKSAqIG1hdHJpeCApLnh5eiApOwp9Cm1hdDMgdHJhbnNwb3NlTWF0MyggY29uc3QgaW4gbWF0MyBtICkgewoJbWF0MyB0bXA7Cgl0bXBbIDAgXSA9IHZlYzMoIG1bIDAgXS54LCBtWyAxIF0ueCwgbVsgMiBdLnggKTsKCXRtcFsgMSBdID0gdmVjMyggbVsgMCBdLnksIG1bIDEgXS55LCBtWyAyIF0ueSApOwoJdG1wWyAyIF0gPSB2ZWMzKCBtWyAwIF0ueiwgbVsgMSBdLnosIG1bIDIgXS56ICk7CglyZXR1cm4gdG1wOwp9CmZsb2F0IGxpbmVhclRvUmVsYXRpdmVMdW1pbmFuY2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7Cgl2ZWMzIHdlaWdodHMgPSB2ZWMzKCAwLjIxMjYsIDAuNzE1MiwgMC4wNzIyICk7CglyZXR1cm4gZG90KCB3ZWlnaHRzLCBjb2xvci5yZ2IgKTsKfQpib29sIGlzUGVyc3BlY3RpdmVNYXRyaXgoIG1hdDQgbSApIHsKCXJldHVybiBtWyAyIF1bIDMgXSA9PSAtIDEuMDsKfQp2ZWMyIGVxdWlyZWN0VXYoIGluIHZlYzMgZGlyICkgewoJZmxvYXQgdSA9IGF0YW4oIGRpci56LCBkaXIueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7CglmbG9hdCB2ID0gYXNpbiggY2xhbXAoIGRpci55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7CglyZXR1cm4gdmVjMiggdSwgdiApOwp9YCxJZnI9YCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWCgkjZGVmaW5lIGN1YmVVVl9tYXhNaXBMZXZlbCA4LjAKCSNkZWZpbmUgY3ViZVVWX21pbk1pcExldmVsIDQuMAoJI2RlZmluZSBjdWJlVVZfbWF4VGlsZVNpemUgMjU2LjAKCSNkZWZpbmUgY3ViZVVWX21pblRpbGVTaXplIDE2LjAKCWZsb2F0IGdldEZhY2UoIHZlYzMgZGlyZWN0aW9uICkgewoJCXZlYzMgYWJzRGlyZWN0aW9uID0gYWJzKCBkaXJlY3Rpb24gKTsKCQlmbG9hdCBmYWNlID0gLSAxLjA7CgkJaWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi56ICkgewoJCQlpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnkgKQoJCQkJZmFjZSA9IGRpcmVjdGlvbi54ID4gMC4wID8gMC4wIDogMy4wOwoJCQllbHNlCgkJCQlmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7CgkJfSBlbHNlIHsKCQkJaWYgKCBhYnNEaXJlY3Rpb24ueiA+IGFic0RpcmVjdGlvbi55ICkKCQkJCWZhY2UgPSBkaXJlY3Rpb24ueiA+IDAuMCA/IDIuMCA6IDUuMDsKCQkJZWxzZQoJCQkJZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wOwoJCX0KCQlyZXR1cm4gZmFjZTsKCX0KCXZlYzIgZ2V0VVYoIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBmYWNlICkgewoJCXZlYzIgdXY7CgkJaWYgKCBmYWNlID09IDAuMCApIHsKCQkJdXYgPSB2ZWMyKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTsKCQl9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHsKCQkJdXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCAtIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7CgkJfSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7CgkJCXV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTsKCQl9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHsKCQkJdXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApOwoJCX0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkgewoJCQl1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7CgkJfSBlbHNlIHsKCQkJdXYgPSB2ZWMyKCBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnogKTsKCQl9CgkJcmV0dXJuIDAuNSAqICggdXYgKyAxLjAgKTsKCX0KCXZlYzMgYmlsaW5lYXJDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBtaXBJbnQgKSB7CgkJZmxvYXQgZmFjZSA9IGdldEZhY2UoIGRpcmVjdGlvbiApOwoJCWZsb2F0IGZpbHRlckludCA9IG1heCggY3ViZVVWX21pbk1pcExldmVsIC0gbWlwSW50LCAwLjAgKTsKCQltaXBJbnQgPSBtYXgoIG1pcEludCwgY3ViZVVWX21pbk1pcExldmVsICk7CgkJZmxvYXQgZmFjZVNpemUgPSBleHAyKCBtaXBJbnQgKTsKCQlmbG9hdCB0ZXhlbFNpemUgPSAxLjAgLyAoIDMuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZSApOwoJCXZlYzIgdXYgPSBnZXRVViggZGlyZWN0aW9uLCBmYWNlICkgKiAoIGZhY2VTaXplIC0gMS4wICkgKyAwLjU7CgkJaWYgKCBmYWNlID4gMi4wICkgewoJCQl1di55ICs9IGZhY2VTaXplOwoJCQlmYWNlIC09IDMuMDsKCQl9CgkJdXYueCArPSBmYWNlICogZmFjZVNpemU7CgkJaWYgKCBtaXBJbnQgPCBjdWJlVVZfbWF4TWlwTGV2ZWwgKSB7CgkJCXV2LnkgKz0gMi4wICogY3ViZVVWX21heFRpbGVTaXplOwoJCX0KCQl1di55ICs9IGZpbHRlckludCAqIDIuMCAqIGN1YmVVVl9taW5UaWxlU2l6ZTsKCQl1di54ICs9IDMuMCAqIG1heCggMC4wLCBjdWJlVVZfbWF4VGlsZVNpemUgLSAyLjAgKiBmYWNlU2l6ZSApOwoJCXV2ICo9IHRleGVsU2l6ZTsKCQlyZXR1cm4gdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkucmdiOwoJfQoJI2RlZmluZSByMCAxLjAKCSNkZWZpbmUgdjAgMC4zMzkKCSNkZWZpbmUgbTAgLSAyLjAKCSNkZWZpbmUgcjEgMC44CgkjZGVmaW5lIHYxIDAuMjc2CgkjZGVmaW5lIG0xIC0gMS4wCgkjZGVmaW5lIHI0IDAuNAoJI2RlZmluZSB2NCAwLjA0NgoJI2RlZmluZSBtNCAyLjAKCSNkZWZpbmUgcjUgMC4zMDUKCSNkZWZpbmUgdjUgMC4wMTYKCSNkZWZpbmUgbTUgMy4wCgkjZGVmaW5lIHI2IDAuMjEKCSNkZWZpbmUgdjYgMC4wMDM4CgkjZGVmaW5lIG02IDQuMAoJZmxvYXQgcm91Z2huZXNzVG9NaXAoIGZsb2F0IHJvdWdobmVzcyApIHsKCQlmbG9hdCBtaXAgPSAwLjA7CgkJaWYgKCByb3VnaG5lc3MgPj0gcjEgKSB7CgkJCW1pcCA9ICggcjAgLSByb3VnaG5lc3MgKSAqICggbTEgLSBtMCApIC8gKCByMCAtIHIxICkgKyBtMDsKCQl9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjQgKSB7CgkJCW1pcCA9ICggcjEgLSByb3VnaG5lc3MgKSAqICggbTQgLSBtMSApIC8gKCByMSAtIHI0ICkgKyBtMTsKCQl9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjUgKSB7CgkJCW1pcCA9ICggcjQgLSByb3VnaG5lc3MgKSAqICggbTUgLSBtNCApIC8gKCByNCAtIHI1ICkgKyBtNDsKCQl9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjYgKSB7CgkJCW1pcCA9ICggcjUgLSByb3VnaG5lc3MgKSAqICggbTYgLSBtNSApIC8gKCByNSAtIHI2ICkgKyBtNTsKCQl9IGVsc2UgewoJCQltaXAgPSAtIDIuMCAqIGxvZzIoIDEuMTYgKiByb3VnaG5lc3MgKTsJCX0KCQlyZXR1cm4gbWlwOwoJfQoJdmVjNCB0ZXh0dXJlQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIHNhbXBsZURpciwgZmxvYXQgcm91Z2huZXNzICkgewoJCWZsb2F0IG1pcCA9IGNsYW1wKCByb3VnaG5lc3NUb01pcCggcm91Z2huZXNzICksIG0wLCBjdWJlVVZfbWF4TWlwTGV2ZWwgKTsKCQlmbG9hdCBtaXBGID0gZnJhY3QoIG1pcCApOwoJCWZsb2F0IG1pcEludCA9IGZsb29yKCBtaXAgKTsKCQl2ZWMzIGNvbG9yMCA9IGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpciwgbWlwSW50ICk7CgkJaWYgKCBtaXBGID09IDAuMCApIHsKCQkJcmV0dXJuIHZlYzQoIGNvbG9yMCwgMS4wICk7CgkJfSBlbHNlIHsKCQkJdmVjMyBjb2xvcjEgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCArIDEuMCApOwoJCQlyZXR1cm4gdmVjNCggbWl4KCBjb2xvcjAsIGNvbG9yMSwgbWlwRiApLCAxLjAgKTsKCQl9Cgl9CiNlbmRpZmAsTGZyPWB2ZWMzIHRyYW5zZm9ybWVkTm9ybWFsID0gb2JqZWN0Tm9ybWFsOwojaWZkZWYgVVNFX0lOU1RBTkNJTkcKCW1hdDMgbSA9IG1hdDMoIGluc3RhbmNlTWF0cml4ICk7Cgl0cmFuc2Zvcm1lZE5vcm1hbCAvPSB2ZWMzKCBkb3QoIG1bIDAgXSwgbVsgMCBdICksIGRvdCggbVsgMSBdLCBtWyAxIF0gKSwgZG90KCBtWyAyIF0sIG1bIDIgXSApICk7Cgl0cmFuc2Zvcm1lZE5vcm1hbCA9IG0gKiB0cmFuc2Zvcm1lZE5vcm1hbDsKI2VuZGlmCnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7CiNpZmRlZiBGTElQX1NJREVECgl0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7CiNlbmRpZgojaWZkZWYgVVNFX1RBTkdFTlQKCXZlYzMgdHJhbnNmb3JtZWRUYW5nZW50ID0gKCBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejsKCSNpZmRlZiBGTElQX1NJREVECgkJdHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7CgkjZW5kaWYKI2VuZGlmYCxrZnI9YCNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBkaXNwbGFjZW1lbnRNYXA7Cgl1bmlmb3JtIGZsb2F0IGRpc3BsYWNlbWVudFNjYWxlOwoJdW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzOwojZW5kaWZgLFJmcj1gI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVAKCXRyYW5zZm9ybWVkICs9IG5vcm1hbGl6ZSggb2JqZWN0Tm9ybWFsICkgKiAoIHRleHR1cmUyRCggZGlzcGxhY2VtZW50TWFwLCB2VXYgKS54ICogZGlzcGxhY2VtZW50U2NhbGUgKyBkaXNwbGFjZW1lbnRCaWFzICk7CiNlbmRpZmAsTmZyPWAjaWZkZWYgVVNFX0VNSVNTSVZFTUFQCgl2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTsKCXRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjsKI2VuZGlmYCxEZnI9YCNpZmRlZiBVU0VfRU1JU1NJVkVNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGVtaXNzaXZlTWFwOwojZW5kaWZgLE9mcj0iZ2xfRnJhZ0NvbG9yID0gbGluZWFyVG9PdXRwdXRUZXhlbCggZ2xfRnJhZ0NvbG9yICk7Iix6ZnI9YHZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7CglyZXR1cm4gdmFsdWU7Cn0KdmVjNCBMaW5lYXJUb3NSR0IoIGluIHZlYzQgdmFsdWUgKSB7CglyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7Cn1gLEZmcj1gI2lmZGVmIFVTRV9FTlZNQVAKCSNpZmRlZiBFTlZfV09STERQT1MKCQl2ZWMzIGNhbWVyYVRvRnJhZzsKCQlpZiAoIGlzT3J0aG9ncmFwaGljICkgewoJCQljYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApOwoJCX0gZWxzZSB7CgkJCWNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbiApOwoJCX0KCQl2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7CgkJI2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT04KCQkJdmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCApOwoJCSNlbHNlCgkJCXZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApOwoJCSNlbmRpZgoJI2Vsc2UKCQl2ZWMzIHJlZmxlY3RWZWMgPSB2UmVmbGVjdDsKCSNlbmRpZgoJI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkUKCQl2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApICk7CgkjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWICkKCQl2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCAwLjAgKTsKCSNlbHNlCgkJdmVjNCBlbnZDb2xvciA9IHZlYzQoIDAuMCApOwoJI2VuZGlmCgkjaWZkZWYgRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZCgkJb3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgb3V0Z29pbmdMaWdodCAqIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApOwoJI2VsaWYgZGVmaW5lZCggRU5WTUFQX0JMRU5ESU5HX01JWCApCgkJb3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7CgkjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREICkKCQlvdXRnb2luZ0xpZ2h0ICs9IGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7CgkjZW5kaWYKI2VuZGlmYCxCZnI9YCNpZmRlZiBVU0VfRU5WTUFQCgl1bmlmb3JtIGZsb2F0IGVudk1hcEludGVuc2l0eTsKCXVuaWZvcm0gZmxvYXQgZmxpcEVudk1hcDsKCSNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFCgkJdW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7CgkjZWxzZQoJCXVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDsKCSNlbmRpZgoJCiNlbmRpZmAsSGZyPWAjaWZkZWYgVVNFX0VOVk1BUAoJdW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7CgkjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKQoJCSNkZWZpbmUgRU5WX1dPUkxEUE9TCgkjZW5kaWYKCSNpZmRlZiBFTlZfV09STERQT1MKCQl2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CgkJdW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87CgkjZWxzZQoJCXZhcnlpbmcgdmVjMyB2UmVmbGVjdDsKCSNlbmRpZgojZW5kaWZgLFZmcj1gI2lmZGVmIFVTRV9FTlZNQVAKCSNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fGRlZmluZWQoIFBIT05HICkKCQkjZGVmaW5lIEVOVl9XT1JMRFBPUwoJI2VuZGlmCgkjaWZkZWYgRU5WX1dPUkxEUE9TCgkJCgkJdmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uOwoJI2Vsc2UKCQl2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7CgkJdW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87CgkjZW5kaWYKI2VuZGlmYCxVZnI9YCNpZmRlZiBVU0VfRU5WTUFQCgkjaWZkZWYgRU5WX1dPUkxEUE9TCgkJdldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejsKCSNlbHNlCgkJdmVjMyBjYW1lcmFUb1ZlcnRleDsKCQlpZiAoIGlzT3J0aG9ncmFwaGljICkgewoJCQljYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7CgkJfSBlbHNlIHsKCQkJY2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHdvcmxkUG9zaXRpb24ueHl6IC0gY2FtZXJhUG9zaXRpb24gKTsKCQl9CgkJdmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7CgkJI2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT04KCQkJdlJlZmxlY3QgPSByZWZsZWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwgKTsKCQkjZWxzZQoJCQl2UmVmbGVjdCA9IHJlZnJhY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7CgkJI2VuZGlmCgkjZW5kaWYKI2VuZGlmYCxxZnI9YCNpZmRlZiBVU0VfRk9HCgl2Rm9nRGVwdGggPSAtIG12UG9zaXRpb24uejsKI2VuZGlmYCxHZnI9YCNpZmRlZiBVU0VfRk9HCgl2YXJ5aW5nIGZsb2F0IHZGb2dEZXB0aDsKI2VuZGlmYCxXZnI9YCNpZmRlZiBVU0VfRk9HCgkjaWZkZWYgRk9HX0VYUDIKCQlmbG9hdCBmb2dGYWN0b3IgPSAxLjAgLSBleHAoIC0gZm9nRGVuc2l0eSAqIGZvZ0RlbnNpdHkgKiB2Rm9nRGVwdGggKiB2Rm9nRGVwdGggKTsKCSNlbHNlCgkJZmxvYXQgZm9nRmFjdG9yID0gc21vb3Roc3RlcCggZm9nTmVhciwgZm9nRmFyLCB2Rm9nRGVwdGggKTsKCSNlbmRpZgoJZ2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggZ2xfRnJhZ0NvbG9yLnJnYiwgZm9nQ29sb3IsIGZvZ0ZhY3RvciApOwojZW5kaWZgLFlmcj1gI2lmZGVmIFVTRV9GT0cKCXVuaWZvcm0gdmVjMyBmb2dDb2xvcjsKCXZhcnlpbmcgZmxvYXQgdkZvZ0RlcHRoOwoJI2lmZGVmIEZPR19FWFAyCgkJdW5pZm9ybSBmbG9hdCBmb2dEZW5zaXR5OwoJI2Vsc2UKCQl1bmlmb3JtIGZsb2F0IGZvZ05lYXI7CgkJdW5pZm9ybSBmbG9hdCBmb2dGYXI7CgkjZW5kaWYKI2VuZGlmYCxqZnI9YCNpZmRlZiBVU0VfR1JBRElFTlRNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGdyYWRpZW50TWFwOwojZW5kaWYKdmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkgewoJZmxvYXQgZG90TkwgPSBkb3QoIG5vcm1hbCwgbGlnaHREaXJlY3Rpb24gKTsKCXZlYzIgY29vcmQgPSB2ZWMyKCBkb3ROTCAqIDAuNSArIDAuNSwgMC4wICk7CgkjaWZkZWYgVVNFX0dSQURJRU5UTUFQCgkJcmV0dXJuIHZlYzMoIHRleHR1cmUyRCggZ3JhZGllbnRNYXAsIGNvb3JkICkuciApOwoJI2Vsc2UKCQlyZXR1cm4gKCBjb29yZC54IDwgMC43ICkgPyB2ZWMzKCAwLjcgKSA6IHZlYzMoIDEuMCApOwoJI2VuZGlmCn1gLFhmcj1gI2lmZGVmIFVTRV9MSUdIVE1BUAoJdmVjNCBsaWdodE1hcFRleGVsID0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApOwoJdmVjMyBsaWdodE1hcElycmFkaWFuY2UgPSBsaWdodE1hcFRleGVsLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5OwoJI2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTCgkJbGlnaHRNYXBJcnJhZGlhbmNlICo9IFBJOwoJI2VuZGlmCglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBJcnJhZGlhbmNlOwojZW5kaWZgLCRmcj1gI2lmZGVmIFVTRV9MSUdIVE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgbGlnaHRNYXA7Cgl1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5OwojZW5kaWZgLEtmcj1gdmVjMyBkaWZmdXNlID0gdmVjMyggMS4wICk7Ckdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7Cmdlb21ldHJ5LnBvc2l0aW9uID0gbXZQb3NpdGlvbi54eXo7Cmdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTsKZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggLW12UG9zaXRpb24ueHl6ICk7Ckdlb21ldHJpY0NvbnRleHQgYmFja0dlb21ldHJ5OwpiYWNrR2VvbWV0cnkucG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjsKYmFja0dlb21ldHJ5Lm5vcm1hbCA9IC1nZW9tZXRyeS5ub3JtYWw7CmJhY2tHZW9tZXRyeS52aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjsKdkxpZ2h0RnJvbnQgPSB2ZWMzKCAwLjAgKTsKdkluZGlyZWN0RnJvbnQgPSB2ZWMzKCAwLjAgKTsKI2lmZGVmIERPVUJMRV9TSURFRAoJdkxpZ2h0QmFjayA9IHZlYzMoIDAuMCApOwoJdkluZGlyZWN0QmFjayA9IHZlYzMoIDAuMCApOwojZW5kaWYKSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDsKZmxvYXQgZG90Tkw7CnZlYzMgZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlOwp2SW5kaXJlY3RGcm9udCArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApOwp2SW5kaXJlY3RGcm9udCArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkubm9ybWFsICk7CiNpZmRlZiBET1VCTEVfU0lERUQKCXZJbmRpcmVjdEJhY2sgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTsKCXZJbmRpcmVjdEJhY2sgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGJhY2tHZW9tZXRyeS5ub3JtYWwgKTsKI2VuZGlmCiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHsKCQlnZXRQb2ludExpZ2h0SW5mbyggcG9pbnRMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7CgkJZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7CgkJZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gZGlyZWN0TGlnaHQuY29sb3I7CgkJdkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CgkJI2lmZGVmIERPVUJMRV9TSURFRAoJCQl2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CgkJI2VuZGlmCgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDAKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHsKCQlnZXRTcG90TGlnaHRJbmZvKCBzcG90TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApOwoJCWRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApOwoJCWRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IGRpcmVjdExpZ2h0LmNvbG9yOwoJCXZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlOwoJCSNpZmRlZiBET1VCTEVfU0lERUQKCQkJdkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLSBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlOwoJCSNlbmRpZgoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmCiNpZiBOVU1fRElSX0xJR0hUUyA+IDAKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkgewoJCWdldERpcmVjdGlvbmFsTGlnaHRJbmZvKCBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTsKCQlkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTsKCQlkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBkaXJlY3RMaWdodC5jb2xvcjsKCQl2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTsKCQkjaWZkZWYgRE9VQkxFX1NJREVECgkJCXZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC0gZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTsKCQkjZW5kaWYKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCiNlbmRpZgojaWYgTlVNX0hFTUlfTElHSFRTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkgewoJCXZJbmRpcmVjdEZyb250ICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkubm9ybWFsICk7CgkJI2lmZGVmIERPVUJMRV9TSURFRAoJCQl2SW5kaXJlY3RCYWNrICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgYmFja0dlb21ldHJ5Lm5vcm1hbCApOwoJCSNlbmRpZgoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmYCxaZnI9YHVuaWZvcm0gYm9vbCByZWNlaXZlU2hhZG93Owp1bmlmb3JtIHZlYzMgYW1iaWVudExpZ2h0Q29sb3I7CnVuaWZvcm0gdmVjMyBsaWdodFByb2JlWyA5IF07CnZlYzMgc2hHZXRJcnJhZGlhbmNlQXQoIGluIHZlYzMgbm9ybWFsLCBpbiB2ZWMzIHNoQ29lZmZpY2llbnRzWyA5IF0gKSB7CglmbG9hdCB4ID0gbm9ybWFsLngsIHkgPSBub3JtYWwueSwgeiA9IG5vcm1hbC56OwoJdmVjMyByZXN1bHQgPSBzaENvZWZmaWNpZW50c1sgMCBdICogMC44ODYyMjc7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDEgXSAqIDIuMCAqIDAuNTExNjY0ICogeTsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMiBdICogMi4wICogMC41MTE2NjQgKiB6OwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAzIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHg7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDQgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHk7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDUgXSAqIDIuMCAqIDAuNDI5MDQzICogeSAqIHo7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDYgXSAqICggMC43NDMxMjUgKiB6ICogeiAtIDAuMjQ3NzA4ICk7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDcgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHo7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDggXSAqIDAuNDI5MDQzICogKCB4ICogeCAtIHkgKiB5ICk7CglyZXR1cm4gcmVzdWx0Owp9CnZlYzMgZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgbGlnaHRQcm9iZVsgOSBdLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCApIHsKCXZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTsKCXZlYzMgaXJyYWRpYW5jZSA9IHNoR2V0SXJyYWRpYW5jZUF0KCB3b3JsZE5vcm1hbCwgbGlnaHRQcm9iZSApOwoJcmV0dXJuIGlycmFkaWFuY2U7Cn0KdmVjMyBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGFtYmllbnRMaWdodENvbG9yICkgewoJdmVjMyBpcnJhZGlhbmNlID0gYW1iaWVudExpZ2h0Q29sb3I7CglyZXR1cm4gaXJyYWRpYW5jZTsKfQpmbG9hdCBnZXREaXN0YW5jZUF0dGVudWF0aW9uKCBjb25zdCBpbiBmbG9hdCBsaWdodERpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBjdXRvZmZEaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgZGVjYXlFeHBvbmVudCApIHsKCSNpZiBkZWZpbmVkICggUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyApCgkJZmxvYXQgZGlzdGFuY2VGYWxsb2ZmID0gMS4wIC8gbWF4KCBwb3coIGxpZ2h0RGlzdGFuY2UsIGRlY2F5RXhwb25lbnQgKSwgMC4wMSApOwoJCWlmICggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgKSB7CgkJCWRpc3RhbmNlRmFsbG9mZiAqPSBwb3cyKCBzYXR1cmF0ZSggMS4wIC0gcG93NCggbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICkgKSApOwoJCX0KCQlyZXR1cm4gZGlzdGFuY2VGYWxsb2ZmOwoJI2Vsc2UKCQlpZiAoIGN1dG9mZkRpc3RhbmNlID4gMC4wICYmIGRlY2F5RXhwb25lbnQgPiAwLjAgKSB7CgkJCXJldHVybiBwb3coIHNhdHVyYXRlKCAtIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSArIDEuMCApLCBkZWNheUV4cG9uZW50ICk7CgkJfQoJCXJldHVybiAxLjA7CgkjZW5kaWYKfQpmbG9hdCBnZXRTcG90QXR0ZW51YXRpb24oIGNvbnN0IGluIGZsb2F0IGNvbmVDb3NpbmUsIGNvbnN0IGluIGZsb2F0IHBlbnVtYnJhQ29zaW5lLCBjb25zdCBpbiBmbG9hdCBhbmdsZUNvc2luZSApIHsKCXJldHVybiBzbW9vdGhzdGVwKCBjb25lQ29zaW5lLCBwZW51bWJyYUNvc2luZSwgYW5nbGVDb3NpbmUgKTsKfQojaWYgTlVNX0RJUl9MSUdIVFMgPiAwCglzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodCB7CgkJdmVjMyBkaXJlY3Rpb247CgkJdmVjMyBjb2xvcjsKCX07Cgl1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodHNbIE5VTV9ESVJfTElHSFRTIF07Cgl2b2lkIGdldERpcmVjdGlvbmFsTGlnaHRJbmZvKCBjb25zdCBpbiBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGxpZ2h0ICkgewoJCWxpZ2h0LmNvbG9yID0gZGlyZWN0aW9uYWxMaWdodC5jb2xvcjsKCQlsaWdodC5kaXJlY3Rpb24gPSBkaXJlY3Rpb25hbExpZ2h0LmRpcmVjdGlvbjsKCQlsaWdodC52aXNpYmxlID0gdHJ1ZTsKCX0KI2VuZGlmCiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMAoJc3RydWN0IFBvaW50TGlnaHQgewoJCXZlYzMgcG9zaXRpb247CgkJdmVjMyBjb2xvcjsKCQlmbG9hdCBkaXN0YW5jZTsKCQlmbG9hdCBkZWNheTsKCX07Cgl1bmlmb3JtIFBvaW50TGlnaHQgcG9pbnRMaWdodHNbIE5VTV9QT0lOVF9MSUdIVFMgXTsKCXZvaWQgZ2V0UG9pbnRMaWdodEluZm8oIGNvbnN0IGluIFBvaW50TGlnaHQgcG9pbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgbGlnaHQgKSB7CgkJdmVjMyBsVmVjdG9yID0gcG9pbnRMaWdodC5wb3NpdGlvbiAtIGdlb21ldHJ5LnBvc2l0aW9uOwoJCWxpZ2h0LmRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggbFZlY3RvciApOwoJCWZsb2F0IGxpZ2h0RGlzdGFuY2UgPSBsZW5ndGgoIGxWZWN0b3IgKTsKCQlsaWdodC5jb2xvciA9IHBvaW50TGlnaHQuY29sb3I7CgkJbGlnaHQuY29sb3IgKj0gZ2V0RGlzdGFuY2VBdHRlbnVhdGlvbiggbGlnaHREaXN0YW5jZSwgcG9pbnRMaWdodC5kaXN0YW5jZSwgcG9pbnRMaWdodC5kZWNheSApOwoJCWxpZ2h0LnZpc2libGUgPSAoIGxpZ2h0LmNvbG9yICE9IHZlYzMoIDAuMCApICk7Cgl9CiNlbmRpZgojaWYgTlVNX1NQT1RfTElHSFRTID4gMAoJc3RydWN0IFNwb3RMaWdodCB7CgkJdmVjMyBwb3NpdGlvbjsKCQl2ZWMzIGRpcmVjdGlvbjsKCQl2ZWMzIGNvbG9yOwoJCWZsb2F0IGRpc3RhbmNlOwoJCWZsb2F0IGRlY2F5OwoJCWZsb2F0IGNvbmVDb3M7CgkJZmxvYXQgcGVudW1icmFDb3M7Cgl9OwoJdW5pZm9ybSBTcG90TGlnaHQgc3BvdExpZ2h0c1sgTlVNX1NQT1RfTElHSFRTIF07Cgl2b2lkIGdldFNwb3RMaWdodEluZm8oIGNvbnN0IGluIFNwb3RMaWdodCBzcG90TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGxpZ2h0ICkgewoJCXZlYzMgbFZlY3RvciA9IHNwb3RMaWdodC5wb3NpdGlvbiAtIGdlb21ldHJ5LnBvc2l0aW9uOwoJCWxpZ2h0LmRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggbFZlY3RvciApOwoJCWZsb2F0IGFuZ2xlQ29zID0gZG90KCBsaWdodC5kaXJlY3Rpb24sIHNwb3RMaWdodC5kaXJlY3Rpb24gKTsKCQlmbG9hdCBzcG90QXR0ZW51YXRpb24gPSBnZXRTcG90QXR0ZW51YXRpb24oIHNwb3RMaWdodC5jb25lQ29zLCBzcG90TGlnaHQucGVudW1icmFDb3MsIGFuZ2xlQ29zICk7CgkJaWYgKCBzcG90QXR0ZW51YXRpb24gPiAwLjAgKSB7CgkJCWZsb2F0IGxpZ2h0RGlzdGFuY2UgPSBsZW5ndGgoIGxWZWN0b3IgKTsKCQkJbGlnaHQuY29sb3IgPSBzcG90TGlnaHQuY29sb3IgKiBzcG90QXR0ZW51YXRpb247CgkJCWxpZ2h0LmNvbG9yICo9IGdldERpc3RhbmNlQXR0ZW51YXRpb24oIGxpZ2h0RGlzdGFuY2UsIHNwb3RMaWdodC5kaXN0YW5jZSwgc3BvdExpZ2h0LmRlY2F5ICk7CgkJCWxpZ2h0LnZpc2libGUgPSAoIGxpZ2h0LmNvbG9yICE9IHZlYzMoIDAuMCApICk7CgkJfSBlbHNlIHsKCQkJbGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTsKCQkJbGlnaHQudmlzaWJsZSA9IGZhbHNlOwoJCX0KCX0KI2VuZGlmCiNpZiBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDAKCXN0cnVjdCBSZWN0QXJlYUxpZ2h0IHsKCQl2ZWMzIGNvbG9yOwoJCXZlYzMgcG9zaXRpb247CgkJdmVjMyBoYWxmV2lkdGg7CgkJdmVjMyBoYWxmSGVpZ2h0OwoJfTsKCXVuaWZvcm0gc2FtcGxlcjJEIGx0Y18xOwl1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMjsKCXVuaWZvcm0gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0c1sgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgXTsKI2VuZGlmCiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwCglzdHJ1Y3QgSGVtaXNwaGVyZUxpZ2h0IHsKCQl2ZWMzIGRpcmVjdGlvbjsKCQl2ZWMzIHNreUNvbG9yOwoJCXZlYzMgZ3JvdW5kQ29sb3I7Cgl9OwoJdW5pZm9ybSBIZW1pc3BoZXJlTGlnaHQgaGVtaXNwaGVyZUxpZ2h0c1sgTlVNX0hFTUlfTElHSFRTIF07Cgl2ZWMzIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIEhlbWlzcGhlcmVMaWdodCBoZW1pTGlnaHQsIGNvbnN0IGluIHZlYzMgbm9ybWFsICkgewoJCWZsb2F0IGRvdE5MID0gZG90KCBub3JtYWwsIGhlbWlMaWdodC5kaXJlY3Rpb24gKTsKCQlmbG9hdCBoZW1pRGlmZnVzZVdlaWdodCA9IDAuNSAqIGRvdE5MICsgMC41OwoJCXZlYzMgaXJyYWRpYW5jZSA9IG1peCggaGVtaUxpZ2h0Lmdyb3VuZENvbG9yLCBoZW1pTGlnaHQuc2t5Q29sb3IsIGhlbWlEaWZmdXNlV2VpZ2h0ICk7CgkJcmV0dXJuIGlycmFkaWFuY2U7Cgl9CiNlbmRpZmAsSmZyPWAjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApCgkjaWZkZWYgRU5WTUFQX01PREVfUkVGUkFDVElPTgoJCXVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvOwoJI2VuZGlmCgl2ZWMzIGdldElCTElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkgewoJCSNpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWICkKCQkJdmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApOwoJCQl2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCB3b3JsZE5vcm1hbCwgMS4wICk7CgkJCXJldHVybiBQSSAqIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTsKCQkjZWxzZQoJCQlyZXR1cm4gdmVjMyggMC4wICk7CgkJI2VuZGlmCgl9Cgl2ZWMzIGdldElCTFJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7CgkJI2lmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKQoJCQl2ZWMzIHJlZmxlY3RWZWM7CgkJCSNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OCgkJCQlyZWZsZWN0VmVjID0gcmVmbGVjdCggLSB2aWV3RGlyLCBub3JtYWwgKTsKCQkJCXJlZmxlY3RWZWMgPSBub3JtYWxpemUoIG1peCggcmVmbGVjdFZlYywgbm9ybWFsLCByb3VnaG5lc3MgKiByb3VnaG5lc3MpICk7CgkJCSNlbHNlCgkJCQlyZWZsZWN0VmVjID0gcmVmcmFjdCggLSB2aWV3RGlyLCBub3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApOwoJCQkjZW5kaWYKCQkJcmVmbGVjdFZlYyA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHJlZmxlY3RWZWMsIHZpZXdNYXRyaXggKTsKCQkJdmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcmVmbGVjdFZlYywgcm91Z2huZXNzICk7CgkJCXJldHVybiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7CgkJI2Vsc2UKCQkJcmV0dXJuIHZlYzMoIDAuMCApOwoJCSNlbmRpZgoJfQojZW5kaWZgLFFmcj1gVG9vbk1hdGVyaWFsIG1hdGVyaWFsOwptYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiO2AsdHByPWB2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKc3RydWN0IFRvb25NYXRlcmlhbCB7Cgl2ZWMzIGRpZmZ1c2VDb2xvcjsKfTsKdm9pZCBSRV9EaXJlY3RfVG9vbiggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCXZlYzMgaXJyYWRpYW5jZSA9IGdldEdyYWRpZW50SXJyYWRpYW5jZSggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSAqIGRpcmVjdExpZ2h0LmNvbG9yOwoJcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTsKfQp2b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7Cn0KI2RlZmluZSBSRV9EaXJlY3QJCQkJUkVfRGlyZWN0X1Rvb24KI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2UJCVJFX0luZGlyZWN0RGlmZnVzZV9Ub29uCiNkZWZpbmUgTWF0ZXJpYWxfTGlnaHRQcm9iZUxPRCggbWF0ZXJpYWwgKQkoMClgLGVwcj1gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsOwptYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiOwptYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gc3BlY3VsYXI7Cm1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzID0gc2hpbmluZXNzOwptYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoID0gc3BlY3VsYXJTdHJlbmd0aDtgLHJwcj1gdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CnN0cnVjdCBCbGlublBob25nTWF0ZXJpYWwgewoJdmVjMyBkaWZmdXNlQ29sb3I7Cgl2ZWMzIHNwZWN1bGFyQ29sb3I7CglmbG9hdCBzcGVjdWxhclNoaW5pbmVzczsKCWZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7Cn07CnZvaWQgUkVfRGlyZWN0X0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7CglmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTsKCXZlYzMgaXJyYWRpYW5jZSA9IGRvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7CglyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApOwoJcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZSAqIEJSREZfQmxpbm5QaG9uZyggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzICkgKiBtYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoOwp9CnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTsKfQojZGVmaW5lIFJFX0RpcmVjdAkJCQlSRV9EaXJlY3RfQmxpbm5QaG9uZwojZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZQkJUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcKI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApCSgwKWAsbnByPWBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsOwptYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiICogKCAxLjAgLSBtZXRhbG5lc3NGYWN0b3IgKTsKdmVjMyBkeHkgPSBtYXgoIGFicyggZEZkeCggZ2VvbWV0cnlOb3JtYWwgKSApLCBhYnMoIGRGZHkoIGdlb21ldHJ5Tm9ybWFsICkgKSApOwpmbG9hdCBnZW9tZXRyeVJvdWdobmVzcyA9IG1heCggbWF4KCBkeHkueCwgZHh5LnkgKSwgZHh5LnogKTsKbWF0ZXJpYWwucm91Z2huZXNzID0gbWF4KCByb3VnaG5lc3NGYWN0b3IsIDAuMDUyNSApO21hdGVyaWFsLnJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzczsKbWF0ZXJpYWwucm91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5yb3VnaG5lc3MsIDEuMCApOwojaWZkZWYgSU9SCgkjaWZkZWYgU1BFQ1VMQVIKCQlmbG9hdCBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IHNwZWN1bGFySW50ZW5zaXR5OwoJCXZlYzMgc3BlY3VsYXJDb2xvckZhY3RvciA9IHNwZWN1bGFyQ29sb3I7CgkJI2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUAoJCQlzcGVjdWxhckludGVuc2l0eUZhY3RvciAqPSB0ZXh0dXJlMkQoIHNwZWN1bGFySW50ZW5zaXR5TWFwLCB2VXYgKS5hOwoJCSNlbmRpZgoJCSNpZmRlZiBVU0VfU1BFQ1VMQVJDT0xPUk1BUAoJCQlzcGVjdWxhckNvbG9yRmFjdG9yICo9IHRleHR1cmUyRCggc3BlY3VsYXJDb2xvck1hcCwgdlV2ICkucmdiOwoJCSNlbmRpZgoJCW1hdGVyaWFsLnNwZWN1bGFyRjkwID0gbWl4KCBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgMS4wLCBtZXRhbG5lc3NGYWN0b3IgKTsKCSNlbHNlCgkJZmxvYXQgc3BlY3VsYXJJbnRlbnNpdHlGYWN0b3IgPSAxLjA7CgkJdmVjMyBzcGVjdWxhckNvbG9yRmFjdG9yID0gdmVjMyggMS4wICk7CgkJbWF0ZXJpYWwuc3BlY3VsYXJGOTAgPSAxLjA7CgkjZW5kaWYKCW1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIG1pbiggcG93MiggKCBpb3IgLSAxLjAgKSAvICggaW9yICsgMS4wICkgKSAqIHNwZWN1bGFyQ29sb3JGYWN0b3IsIHZlYzMoIDEuMCApICkgKiBzcGVjdWxhckludGVuc2l0eUZhY3RvciwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7CiNlbHNlCgltYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCAwLjA0ICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApOwoJbWF0ZXJpYWwuc3BlY3VsYXJGOTAgPSAxLjA7CiNlbmRpZgojaWZkZWYgVVNFX0NMRUFSQ09BVAoJbWF0ZXJpYWwuY2xlYXJjb2F0ID0gY2xlYXJjb2F0OwoJbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gY2xlYXJjb2F0Um91Z2huZXNzOwoJbWF0ZXJpYWwuY2xlYXJjb2F0RjAgPSB2ZWMzKCAwLjA0ICk7CgltYXRlcmlhbC5jbGVhcmNvYXRGOTAgPSAxLjA7CgkjaWZkZWYgVVNFX0NMRUFSQ09BVE1BUAoJCW1hdGVyaWFsLmNsZWFyY29hdCAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE1hcCwgdlV2ICkueDsKCSNlbmRpZgoJI2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQCgkJbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICo9IHRleHR1cmUyRCggY2xlYXJjb2F0Um91Z2huZXNzTWFwLCB2VXYgKS55OwoJI2VuZGlmCgltYXRlcmlhbC5jbGVhcmNvYXQgPSBzYXR1cmF0ZSggbWF0ZXJpYWwuY2xlYXJjb2F0ICk7CW1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1heCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAwLjA1MjUgKTsKCW1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzczsKCW1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAxLjAgKTsKI2VuZGlmCiNpZmRlZiBVU0VfU0hFRU4KCW1hdGVyaWFsLnNoZWVuQ29sb3IgPSBzaGVlbkNvbG9yOwoJI2lmZGVmIFVTRV9TSEVFTkNPTE9STUFQCgkJbWF0ZXJpYWwuc2hlZW5Db2xvciAqPSB0ZXh0dXJlMkQoIHNoZWVuQ29sb3JNYXAsIHZVdiApLnJnYjsKCSNlbmRpZgoJbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3MgPSBjbGFtcCggc2hlZW5Sb3VnaG5lc3MsIDAuMDcsIDEuMCApOwoJI2lmZGVmIFVTRV9TSEVFTlJPVUdITkVTU01BUAoJCW1hdGVyaWFsLnNoZWVuUm91Z2huZXNzICo9IHRleHR1cmUyRCggc2hlZW5Sb3VnaG5lc3NNYXAsIHZVdiApLmE7CgkjZW5kaWYKI2VuZGlmYCxpcHI9YHN0cnVjdCBQaHlzaWNhbE1hdGVyaWFsIHsKCXZlYzMgZGlmZnVzZUNvbG9yOwoJZmxvYXQgcm91Z2huZXNzOwoJdmVjMyBzcGVjdWxhckNvbG9yOwoJZmxvYXQgc3BlY3VsYXJGOTA7CgkjaWZkZWYgVVNFX0NMRUFSQ09BVAoJCWZsb2F0IGNsZWFyY29hdDsKCQlmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7CgkJdmVjMyBjbGVhcmNvYXRGMDsKCQlmbG9hdCBjbGVhcmNvYXRGOTA7CgkjZW5kaWYKCSNpZmRlZiBVU0VfU0hFRU4KCQl2ZWMzIHNoZWVuQ29sb3I7CgkJZmxvYXQgc2hlZW5Sb3VnaG5lc3M7CgkjZW5kaWYKfTsKdmVjMyBjbGVhcmNvYXRTcGVjdWxhciA9IHZlYzMoIDAuMCApOwp2ZWMzIHNoZWVuU3BlY3VsYXIgPSB2ZWMzKCAwLjAgKTsKZmxvYXQgSUJMU2hlZW5CUkRGKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MpIHsKCWZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTsKCWZsb2F0IHIyID0gcm91Z2huZXNzICogcm91Z2huZXNzOwoJZmxvYXQgYSA9IHJvdWdobmVzcyA8IDAuMjUgPyAtMzM5LjIgKiByMiArIDE2MS40ICogcm91Z2huZXNzIC0gMjUuOSA6IC04LjQ4ICogcjIgKyAxNC4zICogcm91Z2huZXNzIC0gOS45NTsKCWZsb2F0IGIgPSByb3VnaG5lc3MgPCAwLjI1ID8gNDQuMCAqIHIyIC0gMjMuNyAqIHJvdWdobmVzcyArIDMuMjYgOiAxLjk3ICogcjIgLSAzLjI3ICogcm91Z2huZXNzICsgMC43MjsKCWZsb2F0IERHID0gZXhwKCBhICogZG90TlYgKyBiICkgKyAoIHJvdWdobmVzcyA8IDAuMjUgPyAwLjAgOiAwLjEgKiAoIHJvdWdobmVzcyAtIDAuMjUgKSApOwoJcmV0dXJuIHNhdHVyYXRlKCBERyAqIFJFQ0lQUk9DQUxfUEkgKTsKfQp2ZWMyIERGR0FwcHJveCggY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkgewoJZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApOwoJY29uc3QgdmVjNCBjMCA9IHZlYzQoIC0gMSwgLSAwLjAyNzUsIC0gMC41NzIsIDAuMDIyICk7Cgljb25zdCB2ZWM0IGMxID0gdmVjNCggMSwgMC4wNDI1LCAxLjA0LCAtIDAuMDQgKTsKCXZlYzQgciA9IHJvdWdobmVzcyAqIGMwICsgYzE7CglmbG9hdCBhMDA0ID0gbWluKCByLnggKiByLngsIGV4cDIoIC0gOS4yOCAqIGRvdE5WICkgKSAqIHIueCArIHIueTsKCXZlYzIgZmFiID0gdmVjMiggLSAxLjA0LCAxLjA0ICkgKiBhMDA0ICsgci56dzsKCXJldHVybiBmYWI7Cn0KdmVjMyBFbnZpcm9ubWVudEJSREYoIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc3BlY3VsYXJGOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHsKCXZlYzIgZmFiID0gREZHQXBwcm94KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApOwoJcmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBmYWIueCArIHNwZWN1bGFyRjkwICogZmFiLnk7Cn0Kdm9pZCBjb21wdXRlTXVsdGlzY2F0dGVyaW5nKCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNwZWN1bGFyRjkwLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGlub3V0IHZlYzMgc2luZ2xlU2NhdHRlciwgaW5vdXQgdmVjMyBtdWx0aVNjYXR0ZXIgKSB7Cgl2ZWMyIGZhYiA9IERGR0FwcHJveCggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTsKCXZlYzMgRnNzRXNzID0gc3BlY3VsYXJDb2xvciAqIGZhYi54ICsgc3BlY3VsYXJGOTAgKiBmYWIueTsKCWZsb2F0IEVzcyA9IGZhYi54ICsgZmFiLnk7CglmbG9hdCBFbXMgPSAxLjAgLSBFc3M7Cgl2ZWMzIEZhdmcgPSBzcGVjdWxhckNvbG9yICsgKCAxLjAgLSBzcGVjdWxhckNvbG9yICkgKiAwLjA0NzYxOTsJdmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7CglzaW5nbGVTY2F0dGVyICs9IEZzc0VzczsKCW11bHRpU2NhdHRlciArPSBGbXMgKiBFbXM7Cn0KI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMAoJdm9pZCBSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWwoIGNvbnN0IGluIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7CgkJdmVjMyBub3JtYWwgPSBnZW9tZXRyeS5ub3JtYWw7CgkJdmVjMyB2aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjsKCQl2ZWMzIHBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247CgkJdmVjMyBsaWdodFBvcyA9IHJlY3RBcmVhTGlnaHQucG9zaXRpb247CgkJdmVjMyBoYWxmV2lkdGggPSByZWN0QXJlYUxpZ2h0LmhhbGZXaWR0aDsKCQl2ZWMzIGhhbGZIZWlnaHQgPSByZWN0QXJlYUxpZ2h0LmhhbGZIZWlnaHQ7CgkJdmVjMyBsaWdodENvbG9yID0gcmVjdEFyZWFMaWdodC5jb2xvcjsKCQlmbG9hdCByb3VnaG5lc3MgPSBtYXRlcmlhbC5yb3VnaG5lc3M7CgkJdmVjMyByZWN0Q29vcmRzWyA0IF07CgkJcmVjdENvb3Jkc1sgMCBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0OwkJcmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0OwoJCXJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDsKCQlyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7CgkJdmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTsKCQl2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTsKCQl2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTsKCQltYXQzIG1JbnYgPSBtYXQzKAoJCQl2ZWMzKCB0MS54LCAwLCB0MS55ICksCgkJCXZlYzMoICAgIDAsIDEsICAgIDAgKSwKCQkJdmVjMyggdDEueiwgMCwgdDEudyApCgkJKTsKCQl2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTsKCQlyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApOwoJCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTsKCX0KI2VuZGlmCnZvaWQgUkVfRGlyZWN0X1BoeXNpY2FsKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCWZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApOwoJdmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjsKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUCgkJZmxvYXQgZG90TkxjYyA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTsKCQl2ZWMzIGNjSXJyYWRpYW5jZSA9IGRvdE5MY2MgKiBkaXJlY3RMaWdodC5jb2xvcjsKCQljbGVhcmNvYXRTcGVjdWxhciArPSBjY0lycmFkaWFuY2UgKiBCUkRGX0dHWCggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLmNsZWFyY29hdEYwLCBtYXRlcmlhbC5jbGVhcmNvYXRGOTAsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1NIRUVOCgkJc2hlZW5TcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9TaGVlbiggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNoZWVuQ29sb3IsIG1hdGVyaWFsLnNoZWVuUm91Z2huZXNzICk7CgkjZW5kaWYKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX0dHWCggZGlyZWN0TGlnaHQuZGlyZWN0aW9uLCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyRjkwLCBtYXRlcmlhbC5yb3VnaG5lc3MgKTsKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7Cn0Kdm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7Cn0Kdm9pZCBSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgY2xlYXJjb2F0UmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0KSB7CgkjaWZkZWYgVVNFX0NMRUFSQ09BVAoJCWNsZWFyY29hdFNwZWN1bGFyICs9IGNsZWFyY29hdFJhZGlhbmNlICogRW52aXJvbm1lbnRCUkRGKCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIsIG1hdGVyaWFsLmNsZWFyY29hdEYwLCBtYXRlcmlhbC5jbGVhcmNvYXRGOTAsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1NIRUVOCgkJc2hlZW5TcGVjdWxhciArPSBpcnJhZGlhbmNlICogbWF0ZXJpYWwuc2hlZW5Db2xvciAqIElCTFNoZWVuQlJERiggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyLCBtYXRlcmlhbC5zaGVlblJvdWdobmVzcyApOwoJI2VuZGlmCgl2ZWMzIHNpbmdsZVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTsKCXZlYzMgbXVsdGlTY2F0dGVyaW5nID0gdmVjMyggMC4wICk7Cgl2ZWMzIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZSA9IGlycmFkaWFuY2UgKiBSRUNJUFJPQ0FMX1BJOwoJY29tcHV0ZU11bHRpc2NhdHRlcmluZyggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyLCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhckY5MCwgbWF0ZXJpYWwucm91Z2huZXNzLCBzaW5nbGVTY2F0dGVyaW5nLCBtdWx0aVNjYXR0ZXJpbmcgKTsKCXZlYzMgZGlmZnVzZSA9IG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqICggMS4wIC0gKCBzaW5nbGVTY2F0dGVyaW5nICsgbXVsdGlTY2F0dGVyaW5nICkgKTsKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gcmFkaWFuY2UgKiBzaW5nbGVTY2F0dGVyaW5nOwoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBtdWx0aVNjYXR0ZXJpbmcgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gZGlmZnVzZSAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTsKfQojZGVmaW5lIFJFX0RpcmVjdAkJCQlSRV9EaXJlY3RfUGh5c2ljYWwKI2RlZmluZSBSRV9EaXJlY3RfUmVjdEFyZWEJCVJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbAojZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZQkJUkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsCiNkZWZpbmUgUkVfSW5kaXJlY3RTcGVjdWxhcgkJUkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbApmbG9hdCBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCBhbWJpZW50T2NjbHVzaW9uLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7CglyZXR1cm4gc2F0dXJhdGUoIHBvdyggZG90TlYgKyBhbWJpZW50T2NjbHVzaW9uLCBleHAyKCAtIDE2LjAgKiByb3VnaG5lc3MgLSAxLjAgKSApIC0gMS4wICsgYW1iaWVudE9jY2x1c2lvbiApOwp9YCxvcHI9YApHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5OwpnZW9tZXRyeS5wb3NpdGlvbiA9IC0gdlZpZXdQb3NpdGlvbjsKZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsOwpnZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7CiNpZmRlZiBVU0VfQ0xFQVJDT0FUCglnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwgPSBjbGVhcmNvYXROb3JtYWw7CiNlbmRpZgpJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0OwojaWYgKCBOVU1fUE9JTlRfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApCglQb2ludExpZ2h0IHBvaW50TGlnaHQ7CgkjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93OwoJI2VuZGlmCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkgewoJCXBvaW50TGlnaHQgPSBwb2ludExpZ2h0c1sgaSBdOwoJCWdldFBvaW50TGlnaHRJbmZvKCBwb2ludExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTsKCQkjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTICkKCQlwb2ludExpZ2h0U2hhZG93ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTsKCQlkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93QmlhcywgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDsKCQkjZW5kaWYKCQlSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmICggTlVNX1NQT1RfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApCglTcG90TGlnaHQgc3BvdExpZ2h0OwoJI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvdzsKCSNlbmRpZgoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkgewoJCXNwb3RMaWdodCA9IHNwb3RMaWdodHNbIGkgXTsKCQlnZXRTcG90TGlnaHRJbmZvKCBzcG90TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApOwoJCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyApCgkJc3BvdExpZ2h0U2hhZG93ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdOwoJCWRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93Qmlhcywgc3BvdExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7CgkJI2VuZGlmCgkJUkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmCiNpZiAoIE5VTV9ESVJfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApCglEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQ7CgkjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDAKCURpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvdzsKCSNlbmRpZgoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7CgkJZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRzWyBpIF07CgkJZ2V0RGlyZWN0aW9uYWxMaWdodEluZm8oIGRpcmVjdGlvbmFsTGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApOwoJCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTICkKCQlkaXJlY3Rpb25hbExpZ2h0U2hhZG93ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTsKCQlkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7CgkJI2VuZGlmCgkJUkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmCiNpZiAoIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdF9SZWN0QXJlYSApCglSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQ7CgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUkVDVF9BUkVBX0xJR0hUUzsgaSArKyApIHsKCQlyZWN0QXJlYUxpZ2h0ID0gcmVjdEFyZWFMaWdodHNbIGkgXTsKCQlSRV9EaXJlY3RfUmVjdEFyZWEoIHJlY3RBcmVhTGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCiNlbmRpZgojaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlICkKCXZlYzMgaWJsSXJyYWRpYW5jZSA9IHZlYzMoIDAuMCApOwoJdmVjMyBpcnJhZGlhbmNlID0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTsKCWlycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5Lm5vcm1hbCApOwoJI2lmICggTlVNX0hFTUlfTElHSFRTID4gMCApCgkJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHsKCQkJaXJyYWRpYW5jZSArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5Lm5vcm1hbCApOwoJCX0KCQkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJI2VuZGlmCiNlbmRpZgojaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApCgl2ZWMzIHJhZGlhbmNlID0gdmVjMyggMC4wICk7Cgl2ZWMzIGNsZWFyY29hdFJhZGlhbmNlID0gdmVjMyggMC4wICk7CiNlbmRpZmAsYXByPWAjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlICkKCSNpZmRlZiBVU0VfTElHSFRNQVAKCQl2ZWM0IGxpZ2h0TWFwVGV4ZWwgPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7CgkJdmVjMyBsaWdodE1hcElycmFkaWFuY2UgPSBsaWdodE1hcFRleGVsLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5OwoJCSNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUwoJCQlsaWdodE1hcElycmFkaWFuY2UgKj0gUEk7CgkJI2VuZGlmCgkJaXJyYWRpYW5jZSArPSBsaWdodE1hcElycmFkaWFuY2U7CgkjZW5kaWYKCSNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKSAmJiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWICkKCQlpYmxJcnJhZGlhbmNlICs9IGdldElCTElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCApOwoJI2VuZGlmCiNlbmRpZgojaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKQoJcmFkaWFuY2UgKz0gZ2V0SUJMUmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwucm91Z2huZXNzICk7CgkjaWZkZWYgVVNFX0NMRUFSQ09BVAoJCWNsZWFyY29hdFJhZGlhbmNlICs9IGdldElCTFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApOwoJI2VuZGlmCiNlbmRpZmAsc3ByPWAjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlICkKCVJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApOwojZW5kaWYKI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKQoJUkVfSW5kaXJlY3RTcGVjdWxhciggcmFkaWFuY2UsIGlibElycmFkaWFuY2UsIGNsZWFyY29hdFJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7CiNlbmRpZmAsbHByPWAjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApCglnbF9GcmFnRGVwdGhFWFQgPSB2SXNQZXJzcGVjdGl2ZSA9PSAwLjAgPyBnbF9GcmFnQ29vcmQueiA6IGxvZzIoIHZGcmFnRGVwdGggKSAqIGxvZ0RlcHRoQnVmRkMgKiAwLjU7CiNlbmRpZmAsY3ByPWAjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApCgl1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7Cgl2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7Cgl2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlOwojZW5kaWZgLHVwcj1gI2lmZGVmIFVTRV9MT0dERVBUSEJVRgoJI2lmZGVmIFVTRV9MT0dERVBUSEJVRl9FWFQKCQl2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7CgkJdmFyeWluZyBmbG9hdCB2SXNQZXJzcGVjdGl2ZTsKCSNlbHNlCgkJdW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDOwoJI2VuZGlmCiNlbmRpZmAsaHByPWAjaWZkZWYgVVNFX0xPR0RFUFRIQlVGCgkjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVAoJCXZGcmFnRGVwdGggPSAxLjAgKyBnbF9Qb3NpdGlvbi53OwoJCXZJc1BlcnNwZWN0aXZlID0gZmxvYXQoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApOwoJI2Vsc2UKCQlpZiAoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApIHsKCQkJZ2xfUG9zaXRpb24ueiA9IGxvZzIoIG1heCggRVBTSUxPTiwgZ2xfUG9zaXRpb24udyArIDEuMCApICkgKiBsb2dEZXB0aEJ1ZkZDIC0gMS4wOwoJCQlnbF9Qb3NpdGlvbi56ICo9IGdsX1Bvc2l0aW9uLnc7CgkJfQoJI2VuZGlmCiNlbmRpZmAsZnByPWAjaWZkZWYgVVNFX01BUAoJdmVjNCBzYW1wbGVkRGlmZnVzZUNvbG9yID0gdGV4dHVyZTJEKCBtYXAsIHZVdiApOwoJI2lmZGVmIERFQ09ERV9WSURFT19URVhUVVJFCgkJc2FtcGxlZERpZmZ1c2VDb2xvciA9IHZlYzQoIG1peCggcG93KCBzYW1wbGVkRGlmZnVzZUNvbG9yLnJnYiAqIDAuOTQ3ODY3Mjk4NiArIHZlYzMoIDAuMDUyMTMyNzAxNCApLCB2ZWMzKCAyLjQgKSApLCBzYW1wbGVkRGlmZnVzZUNvbG9yLnJnYiAqIDAuMDc3Mzk5MzgwOCwgdmVjMyggbGVzc1RoYW5FcXVhbCggc2FtcGxlZERpZmZ1c2VDb2xvci5yZ2IsIHZlYzMoIDAuMDQwNDUgKSApICkgKSwgc2FtcGxlZERpZmZ1c2VDb2xvci53ICk7CgkjZW5kaWYKCWRpZmZ1c2VDb2xvciAqPSBzYW1wbGVkRGlmZnVzZUNvbG9yOwojZW5kaWZgLHBwcj1gI2lmZGVmIFVTRV9NQVAKCXVuaWZvcm0gc2FtcGxlcjJEIG1hcDsKI2VuZGlmYCxkcHI9YCNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQICkKCXZlYzIgdXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggZ2xfUG9pbnRDb29yZC54LCAxLjAgLSBnbF9Qb2ludENvb3JkLnksIDEgKSApLnh5OwojZW5kaWYKI2lmZGVmIFVTRV9NQVAKCWRpZmZ1c2VDb2xvciAqPSB0ZXh0dXJlMkQoIG1hcCwgdXYgKTsKI2VuZGlmCiNpZmRlZiBVU0VfQUxQSEFNQVAKCWRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHV2ICkuZzsKI2VuZGlmYCxtcHI9YCNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQICkKCXVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTsKI2VuZGlmCiNpZmRlZiBVU0VfTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBtYXA7CiNlbmRpZgojaWZkZWYgVVNFX0FMUEhBTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDsKI2VuZGlmYCxncHI9YGZsb2F0IG1ldGFsbmVzc0ZhY3RvciA9IG1ldGFsbmVzczsKI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVAKCXZlYzQgdGV4ZWxNZXRhbG5lc3MgPSB0ZXh0dXJlMkQoIG1ldGFsbmVzc01hcCwgdlV2ICk7CgltZXRhbG5lc3NGYWN0b3IgKj0gdGV4ZWxNZXRhbG5lc3MuYjsKI2VuZGlmYCxfcHI9YCNpZmRlZiBVU0VfTUVUQUxORVNTTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBtZXRhbG5lc3NNYXA7CiNlbmRpZmAseXByPWAjaWZkZWYgVVNFX01PUlBITk9STUFMUwoJb2JqZWN0Tm9ybWFsICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTsKCSNpZmRlZiBNT1JQSFRBUkdFVFNfVEVYVFVSRQoJCWZvciAoIGludCBpID0gMDsgaSA8IE1PUlBIVEFSR0VUU19DT1VOVDsgaSArKyApIHsKCQkJaWYgKCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXSAhPSAwLjAgKSBvYmplY3ROb3JtYWwgKz0gZ2V0TW9ycGgoIGdsX1ZlcnRleElELCBpLCAxLCAyICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXTsKCQl9CgkjZWxzZQoJCW9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTsKCQlvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwxICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07CgkJb2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdOwoJCW9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTsKCSNlbmRpZgojZW5kaWZgLHZwcj1gI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFMKCXVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlOwoJI2lmZGVmIE1PUlBIVEFSR0VUU19URVhUVVJFCgkJdW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIE1PUlBIVEFSR0VUU19DT1VOVCBdOwoJCXVuaWZvcm0gc2FtcGxlcjJEQXJyYXkgbW9ycGhUYXJnZXRzVGV4dHVyZTsKCQl1bmlmb3JtIHZlYzIgbW9ycGhUYXJnZXRzVGV4dHVyZVNpemU7CgkJdmVjMyBnZXRNb3JwaCggY29uc3QgaW4gaW50IHZlcnRleEluZGV4LCBjb25zdCBpbiBpbnQgbW9ycGhUYXJnZXRJbmRleCwgY29uc3QgaW4gaW50IG9mZnNldCwgY29uc3QgaW4gaW50IHN0cmlkZSApIHsKCQkJZmxvYXQgdGV4ZWxJbmRleCA9IGZsb2F0KCB2ZXJ0ZXhJbmRleCAqIHN0cmlkZSArIG9mZnNldCApOwoJCQlmbG9hdCB5ID0gZmxvb3IoIHRleGVsSW5kZXggLyBtb3JwaFRhcmdldHNUZXh0dXJlU2l6ZS54ICk7CgkJCWZsb2F0IHggPSB0ZXhlbEluZGV4IC0geSAqIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLng7CgkJCXZlYzMgbW9ycGhVViA9IHZlYzMoICggeCArIDAuNSApIC8gbW9ycGhUYXJnZXRzVGV4dHVyZVNpemUueCwgeSAvIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLnksIG1vcnBoVGFyZ2V0SW5kZXggKTsKCQkJcmV0dXJuIHRleHR1cmUoIG1vcnBoVGFyZ2V0c1RleHR1cmUsIG1vcnBoVVYgKS54eXo7CgkJfQoJI2Vsc2UKCQkjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFMKCQkJdW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDggXTsKCQkjZWxzZQoJCQl1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdOwoJCSNlbmRpZgoJI2VuZGlmCiNlbmRpZmAseHByPWAjaWZkZWYgVVNFX01PUlBIVEFSR0VUUwoJdHJhbnNmb3JtZWQgKj0gbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlOwoJI2lmZGVmIE1PUlBIVEFSR0VUU19URVhUVVJFCgkJZm9yICggaW50IGkgPSAwOyBpIDwgTU9SUEhUQVJHRVRTX0NPVU5UOyBpICsrICkgewoJCQkjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFMKCQkJCWlmICggbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF0gIT0gMC4wICkgdHJhbnNmb3JtZWQgKz0gZ2V0TW9ycGgoIGdsX1ZlcnRleElELCBpLCAwLCAxICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXTsKCQkJI2Vsc2UKCQkJCWlmICggbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyBpIF0gIT0gMC4wICkgdHJhbnNmb3JtZWQgKz0gZ2V0TW9ycGgoIGdsX1ZlcnRleElELCBpLCAwLCAyICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXTsKCQkJI2VuZGlmCgkJfQoJI2Vsc2UKCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTsKCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTsKCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTsKCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTsKCQkjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFMKCQkJdHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ0ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07CgkJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNSBdOwoJCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDYgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDYgXTsKCQkJdHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ3ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA3IF07CgkJI2VuZGlmCgkjZW5kaWYKI2VuZGlmYCxicHI9YGZsb2F0IGZhY2VEaXJlY3Rpb24gPSBnbF9Gcm9udEZhY2luZyA/IDEuMCA6IC0gMS4wOwojaWZkZWYgRkxBVF9TSEFERUQKCXZlYzMgZmR4ID0gdmVjMyggZEZkeCggdlZpZXdQb3NpdGlvbi54ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnogKSApOwoJdmVjMyBmZHkgPSB2ZWMzKCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeSggdlZpZXdQb3NpdGlvbi55ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueiApICk7Cgl2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggY3Jvc3MoIGZkeCwgZmR5ICkgKTsKI2Vsc2UKCXZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCB2Tm9ybWFsICk7CgkjaWZkZWYgRE9VQkxFX1NJREVECgkJbm9ybWFsID0gbm9ybWFsICogZmFjZURpcmVjdGlvbjsKCSNlbmRpZgoJI2lmZGVmIFVTRV9UQU5HRU5UCgkJdmVjMyB0YW5nZW50ID0gbm9ybWFsaXplKCB2VGFuZ2VudCApOwoJCXZlYzMgYml0YW5nZW50ID0gbm9ybWFsaXplKCB2Qml0YW5nZW50ICk7CgkJI2lmZGVmIERPVUJMRV9TSURFRAoJCQl0YW5nZW50ID0gdGFuZ2VudCAqIGZhY2VEaXJlY3Rpb247CgkJCWJpdGFuZ2VudCA9IGJpdGFuZ2VudCAqIGZhY2VEaXJlY3Rpb247CgkJI2VuZGlmCgkJI2lmIGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCApCgkJCW1hdDMgdlRCTiA9IG1hdDMoIHRhbmdlbnQsIGJpdGFuZ2VudCwgbm9ybWFsICk7CgkJI2VuZGlmCgkjZW5kaWYKI2VuZGlmCnZlYzMgZ2VvbWV0cnlOb3JtYWwgPSBub3JtYWw7YCx3cHI9YCNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAKCW5vcm1hbCA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7CgkjaWZkZWYgRkxJUF9TSURFRAoJCW5vcm1hbCA9IC0gbm9ybWFsOwoJI2VuZGlmCgkjaWZkZWYgRE9VQkxFX1NJREVECgkJbm9ybWFsID0gbm9ybWFsICogZmFjZURpcmVjdGlvbjsKCSNlbmRpZgoJbm9ybWFsID0gbm9ybWFsaXplKCBub3JtYWxNYXRyaXggKiBub3JtYWwgKTsKI2VsaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApCgl2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wOwoJbWFwTi54eSAqPSBub3JtYWxTY2FsZTsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCW5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTsKCSNlbHNlCgkJbm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBtYXBOLCBmYWNlRGlyZWN0aW9uICk7CgkjZW5kaWYKI2VsaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKQoJbm9ybWFsID0gcGVydHVyYk5vcm1hbEFyYiggLSB2Vmlld1Bvc2l0aW9uLCBub3JtYWwsIGRIZHh5X2Z3ZCgpLCBmYWNlRGlyZWN0aW9uICk7CiNlbmRpZmAsU3ByPWAjaWZuZGVmIEZMQVRfU0hBREVECgl2YXJ5aW5nIHZlYzMgdk5vcm1hbDsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCXZhcnlpbmcgdmVjMyB2VGFuZ2VudDsKCQl2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDsKCSNlbmRpZgojZW5kaWZgLE1wcj1gI2lmbmRlZiBGTEFUX1NIQURFRAoJdmFyeWluZyB2ZWMzIHZOb3JtYWw7CgkjaWZkZWYgVVNFX1RBTkdFTlQKCQl2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7CgkJdmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7CgkjZW5kaWYKI2VuZGlmYCxFcHI9YCNpZm5kZWYgRkxBVF9TSEFERUQKCXZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7CgkjaWZkZWYgVVNFX1RBTkdFTlQKCQl2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7CgkJdkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTsKCSNlbmRpZgojZW5kaWZgLFRwcj1gI2lmZGVmIFVTRV9OT1JNQUxNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIG5vcm1hbE1hcDsKCXVuaWZvcm0gdmVjMiBub3JtYWxTY2FsZTsKI2VuZGlmCiNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAKCXVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7CiNlbmRpZgojaWYgISBkZWZpbmVkICggVVNFX1RBTkdFTlQgKSAmJiAoIGRlZmluZWQgKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQICkgKQoJdmVjMyBwZXJ0dXJiTm9ybWFsMkFyYiggdmVjMyBleWVfcG9zLCB2ZWMzIHN1cmZfbm9ybSwgdmVjMyBtYXBOLCBmbG9hdCBmYWNlRGlyZWN0aW9uICkgewoJCXZlYzMgcTAgPSB2ZWMzKCBkRmR4KCBleWVfcG9zLnggKSwgZEZkeCggZXllX3Bvcy55ICksIGRGZHgoIGV5ZV9wb3MueiApICk7CgkJdmVjMyBxMSA9IHZlYzMoIGRGZHkoIGV5ZV9wb3MueCApLCBkRmR5KCBleWVfcG9zLnkgKSwgZEZkeSggZXllX3Bvcy56ICkgKTsKCQl2ZWMyIHN0MCA9IGRGZHgoIHZVdi5zdCApOwoJCXZlYzIgc3QxID0gZEZkeSggdlV2LnN0ICk7CgkJdmVjMyBOID0gc3VyZl9ub3JtOwoJCXZlYzMgcTFwZXJwID0gY3Jvc3MoIHExLCBOICk7CgkJdmVjMyBxMHBlcnAgPSBjcm9zcyggTiwgcTAgKTsKCQl2ZWMzIFQgPSBxMXBlcnAgKiBzdDAueCArIHEwcGVycCAqIHN0MS54OwoJCXZlYzMgQiA9IHExcGVycCAqIHN0MC55ICsgcTBwZXJwICogc3QxLnk7CgkJZmxvYXQgZGV0ID0gbWF4KCBkb3QoIFQsIFQgKSwgZG90KCBCLCBCICkgKTsKCQlmbG9hdCBzY2FsZSA9ICggZGV0ID09IDAuMCApID8gMC4wIDogZmFjZURpcmVjdGlvbiAqIGludmVyc2VzcXJ0KCBkZXQgKTsKCQlyZXR1cm4gbm9ybWFsaXplKCBUICogKCBtYXBOLnggKiBzY2FsZSApICsgQiAqICggbWFwTi55ICogc2NhbGUgKSArIE4gKiBtYXBOLnogKTsKCX0KI2VuZGlmYCxDcHI9YCNpZmRlZiBVU0VfQ0xFQVJDT0FUCgl2ZWMzIGNsZWFyY29hdE5vcm1hbCA9IGdlb21ldHJ5Tm9ybWFsOwojZW5kaWZgLEFwcj1gI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQCgl2ZWMzIGNsZWFyY29hdE1hcE4gPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wOwoJY2xlYXJjb2F0TWFwTi54eSAqPSBjbGVhcmNvYXROb3JtYWxTY2FsZTsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCWNsZWFyY29hdE5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIGNsZWFyY29hdE1hcE4gKTsKCSNlbHNlCgkJY2xlYXJjb2F0Tm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC0gdlZpZXdQb3NpdGlvbiwgY2xlYXJjb2F0Tm9ybWFsLCBjbGVhcmNvYXRNYXBOLCBmYWNlRGlyZWN0aW9uICk7CgkjZW5kaWYKI2VuZGlmYCxQcHI9YCNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXRNYXA7CiNlbmRpZgojaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdFJvdWdobmVzc01hcDsKI2VuZGlmCiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Tm9ybWFsTWFwOwoJdW5pZm9ybSB2ZWMyIGNsZWFyY29hdE5vcm1hbFNjYWxlOwojZW5kaWZgLElwcj1gI2lmZGVmIE9QQVFVRQpkaWZmdXNlQ29sb3IuYSA9IDEuMDsKI2VuZGlmCiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OCmRpZmZ1c2VDb2xvci5hICo9IHRyYW5zbWlzc2lvbkFscGhhICsgMC4xOwojZW5kaWYKZ2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtgLExwcj1gdmVjMyBwYWNrTm9ybWFsVG9SR0IoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkgewoJcmV0dXJuIG5vcm1hbGl6ZSggbm9ybWFsICkgKiAwLjUgKyAwLjU7Cn0KdmVjMyB1bnBhY2tSR0JUb05vcm1hbCggY29uc3QgaW4gdmVjMyByZ2IgKSB7CglyZXR1cm4gMi4wICogcmdiLnh5eiAtIDEuMDsKfQpjb25zdCBmbG9hdCBQYWNrVXBzY2FsZSA9IDI1Ni4gLyAyNTUuO2NvbnN0IGZsb2F0IFVucGFja0Rvd25zY2FsZSA9IDI1NS4gLyAyNTYuOwpjb25zdCB2ZWMzIFBhY2tGYWN0b3JzID0gdmVjMyggMjU2LiAqIDI1Ni4gKiAyNTYuLCAyNTYuICogMjU2LiwgMjU2LiApOwpjb25zdCB2ZWM0IFVucGFja0ZhY3RvcnMgPSBVbnBhY2tEb3duc2NhbGUgLyB2ZWM0KCBQYWNrRmFjdG9ycywgMS4gKTsKY29uc3QgZmxvYXQgU2hpZnRSaWdodDggPSAxLiAvIDI1Ni47CnZlYzQgcGFja0RlcHRoVG9SR0JBKCBjb25zdCBpbiBmbG9hdCB2ICkgewoJdmVjNCByID0gdmVjNCggZnJhY3QoIHYgKiBQYWNrRmFjdG9ycyApLCB2ICk7CglyLnl6dyAtPSByLnh5eiAqIFNoaWZ0UmlnaHQ4OwlyZXR1cm4gciAqIFBhY2tVcHNjYWxlOwp9CmZsb2F0IHVucGFja1JHQkFUb0RlcHRoKCBjb25zdCBpbiB2ZWM0IHYgKSB7CglyZXR1cm4gZG90KCB2LCBVbnBhY2tGYWN0b3JzICk7Cn0KdmVjNCBwYWNrMkhhbGZUb1JHQkEoIHZlYzIgdiApIHsKCXZlYzQgciA9IHZlYzQoIHYueCwgZnJhY3QoIHYueCAqIDI1NS4wICksIHYueSwgZnJhY3QoIHYueSAqIDI1NS4wICkgKTsKCXJldHVybiB2ZWM0KCByLnggLSByLnkgLyAyNTUuMCwgci55LCByLnogLSByLncgLyAyNTUuMCwgci53ICk7Cn0KdmVjMiB1bnBhY2tSR0JBVG8ySGFsZiggdmVjNCB2ICkgewoJcmV0dXJuIHZlYzIoIHYueCArICggdi55IC8gMjU1LjAgKSwgdi56ICsgKCB2LncgLyAyNTUuMCApICk7Cn0KZmxvYXQgdmlld1pUb09ydGhvZ3JhcGhpY0RlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkgewoJcmV0dXJuICggdmlld1ogKyBuZWFyICkgLyAoIG5lYXIgLSBmYXIgKTsKfQpmbG9hdCBvcnRob2dyYXBoaWNEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGxpbmVhckNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7CglyZXR1cm4gbGluZWFyQ2xpcFogKiAoIG5lYXIgLSBmYXIgKSAtIG5lYXI7Cn0KZmxvYXQgdmlld1pUb1BlcnNwZWN0aXZlRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7CglyZXR1cm4gKCAoIG5lYXIgKyB2aWV3WiApICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogdmlld1ogKTsKfQpmbG9hdCBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgaW52Q2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHsKCXJldHVybiAoIG5lYXIgKiBmYXIgKSAvICggKCBmYXIgLSBuZWFyICkgKiBpbnZDbGlwWiAtIGZhciApOwp9YCxrcHI9YCNpZmRlZiBQUkVNVUxUSVBMSUVEX0FMUEhBCglnbF9GcmFnQ29sb3IucmdiICo9IGdsX0ZyYWdDb2xvci5hOwojZW5kaWZgLFJwcj1gdmVjNCBtdlBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApOwojaWZkZWYgVVNFX0lOU1RBTkNJTkcKCW12UG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIG12UG9zaXRpb247CiNlbmRpZgptdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogbXZQb3NpdGlvbjsKZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtgLE5wcj1gI2lmZGVmIERJVEhFUklORwoJZ2xfRnJhZ0NvbG9yLnJnYiA9IGRpdGhlcmluZyggZ2xfRnJhZ0NvbG9yLnJnYiApOwojZW5kaWZgLERwcj1gI2lmZGVmIERJVEhFUklORwoJdmVjMyBkaXRoZXJpbmcoIHZlYzMgY29sb3IgKSB7CgkJZmxvYXQgZ3JpZF9wb3NpdGlvbiA9IHJhbmQoIGdsX0ZyYWdDb29yZC54eSApOwoJCXZlYzMgZGl0aGVyX3NoaWZ0X1JHQiA9IHZlYzMoIDAuMjUgLyAyNTUuMCwgLTAuMjUgLyAyNTUuMCwgMC4yNSAvIDI1NS4wICk7CgkJZGl0aGVyX3NoaWZ0X1JHQiA9IG1peCggMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgLTIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIGdyaWRfcG9zaXRpb24gKTsKCQlyZXR1cm4gY29sb3IgKyBkaXRoZXJfc2hpZnRfUkdCOwoJfQojZW5kaWZgLE9wcj1gZmxvYXQgcm91Z2huZXNzRmFjdG9yID0gcm91Z2huZXNzOwojaWZkZWYgVVNFX1JPVUdITkVTU01BUAoJdmVjNCB0ZXhlbFJvdWdobmVzcyA9IHRleHR1cmUyRCggcm91Z2huZXNzTWFwLCB2VXYgKTsKCXJvdWdobmVzc0ZhY3RvciAqPSB0ZXhlbFJvdWdobmVzcy5nOwojZW5kaWZgLHpwcj1gI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIHJvdWdobmVzc01hcDsKI2VuZGlmYCxGcHI9YCNpZmRlZiBVU0VfU0hBRE9XTUFQCgkjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gc2FtcGxlcjJEIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTsKCQl2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdOwoJCXN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHsKCQkJZmxvYXQgc2hhZG93QmlhczsKCQkJZmxvYXQgc2hhZG93Tm9ybWFsQmlhczsKCQkJZmxvYXQgc2hhZG93UmFkaXVzOwoJCQl2ZWMyIHNoYWRvd01hcFNpemU7CgkJfTsKCQl1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdOwoJI2VuZGlmCgkjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDAKCQl1bmlmb3JtIHNhbXBsZXIyRCBzcG90U2hhZG93TWFwWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07CgkJdmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCQlzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHsKCQkJZmxvYXQgc2hhZG93QmlhczsKCQkJZmxvYXQgc2hhZG93Tm9ybWFsQmlhczsKCQkJZmxvYXQgc2hhZG93UmFkaXVzOwoJCQl2ZWMyIHNoYWRvd01hcFNpemU7CgkJfTsKCQl1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKCSNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDAKCQl1bmlmb3JtIHNhbXBsZXIyRCBwb2ludFNoYWRvd01hcFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTsKCQl2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07CgkJc3RydWN0IFBvaW50TGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQkJZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjsKCQkJZmxvYXQgc2hhZG93Q2FtZXJhRmFyOwoJCX07CgkJdW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdOwoJI2VuZGlmCglmbG9hdCB0ZXh0dXJlMkRDb21wYXJlKCBzYW1wbGVyMkQgZGVwdGhzLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkgewoJCXJldHVybiBzdGVwKCBjb21wYXJlLCB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBkZXB0aHMsIHV2ICkgKSApOwoJfQoJdmVjMiB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYgKSB7CgkJcmV0dXJuIHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvdywgdXYgKSApOwoJfQoJZmxvYXQgVlNNU2hhZG93IChzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICl7CgkJZmxvYXQgb2NjbHVzaW9uID0gMS4wOwoJCXZlYzIgZGlzdHJpYnV0aW9uID0gdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzaGFkb3csIHV2ICk7CgkJZmxvYXQgaGFyZF9zaGFkb3cgPSBzdGVwKCBjb21wYXJlICwgZGlzdHJpYnV0aW9uLnggKTsKCQlpZiAoaGFyZF9zaGFkb3cgIT0gMS4wICkgewoJCQlmbG9hdCBkaXN0YW5jZSA9IGNvbXBhcmUgLSBkaXN0cmlidXRpb24ueCA7CgkJCWZsb2F0IHZhcmlhbmNlID0gbWF4KCAwLjAwMDAwLCBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICk7CgkJCWZsb2F0IHNvZnRuZXNzX3Byb2JhYmlsaXR5ID0gdmFyaWFuY2UgLyAodmFyaWFuY2UgKyBkaXN0YW5jZSAqIGRpc3RhbmNlICk7CQkJc29mdG5lc3NfcHJvYmFiaWxpdHkgPSBjbGFtcCggKCBzb2Z0bmVzc19wcm9iYWJpbGl0eSAtIDAuMyApIC8gKCAwLjk1IC0gMC4zICksIDAuMCwgMS4wICk7CQkJb2NjbHVzaW9uID0gY2xhbXAoIG1heCggaGFyZF9zaGFkb3csIHNvZnRuZXNzX3Byb2JhYmlsaXR5ICksIDAuMCwgMS4wICk7CgkJfQoJCXJldHVybiBvY2NsdXNpb247Cgl9CglmbG9hdCBnZXRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkICkgewoJCWZsb2F0IHNoYWRvdyA9IDEuMDsKCQlzaGFkb3dDb29yZC54eXogLz0gc2hhZG93Q29vcmQudzsKCQlzaGFkb3dDb29yZC56ICs9IHNoYWRvd0JpYXM7CgkJYnZlYzQgaW5GcnVzdHVtVmVjID0gYnZlYzQgKCBzaGFkb3dDb29yZC54ID49IDAuMCwgc2hhZG93Q29vcmQueCA8PSAxLjAsIHNoYWRvd0Nvb3JkLnkgPj0gMC4wLCBzaGFkb3dDb29yZC55IDw9IDEuMCApOwoJCWJvb2wgaW5GcnVzdHVtID0gYWxsKCBpbkZydXN0dW1WZWMgKTsKCQlidmVjMiBmcnVzdHVtVGVzdFZlYyA9IGJ2ZWMyKCBpbkZydXN0dW0sIHNoYWRvd0Nvb3JkLnogPD0gMS4wICk7CgkJYm9vbCBmcnVzdHVtVGVzdCA9IGFsbCggZnJ1c3R1bVRlc3RWZWMgKTsKCQlpZiAoIGZydXN0dW1UZXN0ICkgewoJCSNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKQoJCQl2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTsKCQkJZmxvYXQgZHgwID0gLSB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1czsKCQkJZmxvYXQgZHkwID0gLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1czsKCQkJZmxvYXQgZHgxID0gKyB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1czsKCQkJZmxvYXQgZHkxID0gKyB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1czsKCQkJZmxvYXQgZHgyID0gZHgwIC8gMi4wOwoJCQlmbG9hdCBkeTIgPSBkeTAgLyAyLjA7CgkJCWZsb2F0IGR4MyA9IGR4MSAvIDIuMDsKCQkJZmxvYXQgZHkzID0gZHkxIC8gMi4wOwoJCQlzaGFkb3cgPSAoCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkxICksIHNoYWRvd0Nvb3JkLnogKQoJCQkpICogKCAxLjAgLyAxNy4wICk7CgkJI2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKQoJCQl2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTsKCQkJZmxvYXQgZHggPSB0ZXhlbFNpemUueDsKCQkJZmxvYXQgZHkgPSB0ZXhlbFNpemUueTsKCQkJdmVjMiB1diA9IHNoYWRvd0Nvb3JkLnh5OwoJCQl2ZWMyIGYgPSBmcmFjdCggdXYgKiBzaGFkb3dNYXBTaXplICsgMC41ICk7CgkJCXV2IC09IGYgKiB0ZXhlbFNpemU7CgkJCXNoYWRvdyA9ICgKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYsIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgZHkgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB0ZXhlbFNpemUsIHNoYWRvd0Nvb3JkLnogKSArCgkJCQltaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksIAoJCQkJCSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksCgkJCQkJIGYueCApICsKCQkJCW1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgZHkgKSwgc2hhZG93Q29vcmQueiApLCAKCQkJCQkgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksCgkJCQkJIGYueCApICsKCQkJCW1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwKCQkJCQkgZi55ICkgKwoJCQkJbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIAoJCQkJCSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwKCQkJCQkgZi55ICkgKwoJCQkJbWl4KCBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIAoJCQkJCQkgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwKCQkJCQkJICBmLnggKSwKCQkJCQkgbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksIAoJCQkJCQkgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLAoJCQkJCQkgIGYueCApLAoJCQkJCSBmLnkgKQoJCQkpICogKCAxLjAgLyA5LjAgKTsKCQkjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKQoJCQlzaGFkb3cgPSBWU01TaGFkb3coIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTsKCQkjZWxzZQoJCQlzaGFkb3cgPSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7CgkJI2VuZGlmCgkJfQoJCXJldHVybiBzaGFkb3c7Cgl9Cgl2ZWMyIGN1YmVUb1VWKCB2ZWMzIHYsIGZsb2F0IHRleGVsU2l6ZVkgKSB7CgkJdmVjMyBhYnNWID0gYWJzKCB2ICk7CgkJZmxvYXQgc2NhbGVUb0N1YmUgPSAxLjAgLyBtYXgoIGFic1YueCwgbWF4KCBhYnNWLnksIGFic1YueiApICk7CgkJYWJzViAqPSBzY2FsZVRvQ3ViZTsKCQl2ICo9IHNjYWxlVG9DdWJlICogKCAxLjAgLSAyLjAgKiB0ZXhlbFNpemVZICk7CgkJdmVjMiBwbGFuYXIgPSB2Lnh5OwoJCWZsb2F0IGFsbW9zdEFUZXhlbCA9IDEuNSAqIHRleGVsU2l6ZVk7CgkJZmxvYXQgYWxtb3N0T25lID0gMS4wIC0gYWxtb3N0QVRleGVsOwoJCWlmICggYWJzVi56ID49IGFsbW9zdE9uZSApIHsKCQkJaWYgKCB2LnogPiAwLjAgKQoJCQkJcGxhbmFyLnggPSA0LjAgLSB2Lng7CgkJfSBlbHNlIGlmICggYWJzVi54ID49IGFsbW9zdE9uZSApIHsKCQkJZmxvYXQgc2lnblggPSBzaWduKCB2LnggKTsKCQkJcGxhbmFyLnggPSB2LnogKiBzaWduWCArIDIuMCAqIHNpZ25YOwoJCX0gZWxzZSBpZiAoIGFic1YueSA+PSBhbG1vc3RPbmUgKSB7CgkJCWZsb2F0IHNpZ25ZID0gc2lnbiggdi55ICk7CgkJCXBsYW5hci54ID0gdi54ICsgMi4wICogc2lnblkgKyAyLjA7CgkJCXBsYW5hci55ID0gdi56ICogc2lnblkgLSAyLjA7CgkJfQoJCXJldHVybiB2ZWMyKCAwLjEyNSwgMC4yNSApICogcGxhbmFyICsgdmVjMiggMC4zNzUsIDAuNzUgKTsKCX0KCWZsb2F0IGdldFBvaW50U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCwgZmxvYXQgc2hhZG93Q2FtZXJhTmVhciwgZmxvYXQgc2hhZG93Q2FtZXJhRmFyICkgewoJCXZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyAoIHNoYWRvd01hcFNpemUgKiB2ZWMyKCA0LjAsIDIuMCApICk7CgkJdmVjMyBsaWdodFRvUG9zaXRpb24gPSBzaGFkb3dDb29yZC54eXo7CgkJZmxvYXQgZHAgPSAoIGxlbmd0aCggbGlnaHRUb1Bvc2l0aW9uICkgLSBzaGFkb3dDYW1lcmFOZWFyICkgLyAoIHNoYWRvd0NhbWVyYUZhciAtIHNoYWRvd0NhbWVyYU5lYXIgKTsJCWRwICs9IHNoYWRvd0JpYXM7CgkJdmVjMyBiZDNEID0gbm9ybWFsaXplKCBsaWdodFRvUG9zaXRpb24gKTsKCQkjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKQoJCQl2ZWMyIG9mZnNldCA9IHZlYzIoIC0gMSwgMSApICogc2hhZG93UmFkaXVzICogdGV4ZWxTaXplLnk7CgkJCXJldHVybiAoCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh5LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh5LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh4LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh4LCB0ZXhlbFNpemUueSApLCBkcCApCgkJCSkgKiAoIDEuMCAvIDkuMCApOwoJCSNlbHNlCgkJCXJldHVybiB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApOwoJCSNlbmRpZgoJfQojZW5kaWZgLEJwcj1gI2lmZGVmIFVTRV9TSEFET1dNQVAKCSNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwCgkJdW5pZm9ybSBtYXQ0IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTsKCQl2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdOwoJCXN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHsKCQkJZmxvYXQgc2hhZG93QmlhczsKCQkJZmxvYXQgc2hhZG93Tm9ybWFsQmlhczsKCQkJZmxvYXQgc2hhZG93UmFkaXVzOwoJCQl2ZWMyIHNoYWRvd01hcFNpemU7CgkJfTsKCQl1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdOwoJI2VuZGlmCgkjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDAKCQl1bmlmb3JtIG1hdDQgc3BvdFNoYWRvd01hdHJpeFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdOwoJCXZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07CgkJc3RydWN0IFNwb3RMaWdodFNoYWRvdyB7CgkJCWZsb2F0IHNoYWRvd0JpYXM7CgkJCWZsb2F0IHNoYWRvd05vcm1hbEJpYXM7CgkJCWZsb2F0IHNoYWRvd1JhZGl1czsKCQkJdmVjMiBzaGFkb3dNYXBTaXplOwoJCX07CgkJdW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdOwoJI2VuZGlmCgkjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwCgkJdW5pZm9ybSBtYXQ0IHBvaW50U2hhZG93TWF0cml4WyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdOwoJCXZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTsKCQlzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7CgkJCWZsb2F0IHNoYWRvd0JpYXM7CgkJCWZsb2F0IHNoYWRvd05vcm1hbEJpYXM7CgkJCWZsb2F0IHNoYWRvd1JhZGl1czsKCQkJdmVjMiBzaGFkb3dNYXBTaXplOwoJCQlmbG9hdCBzaGFkb3dDYW1lcmFOZWFyOwoJCQlmbG9hdCBzaGFkb3dDYW1lcmFGYXI7CgkJfTsKCQl1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKI2VuZGlmYCxIcHI9YCNpZmRlZiBVU0VfU0hBRE9XTUFQCgkjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMCB8fCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDAKCQl2ZWMzIHNoYWRvd1dvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTsKCQl2ZWM0IHNoYWRvd1dvcmxkUG9zaXRpb247CgkjZW5kaWYKCSNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7CgkJc2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApOwoJCXZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gPSBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKCSNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHsKCQlzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogc3BvdExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTsKCQl2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gPSBzcG90U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKCSNlbmRpZgoJI2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7CgkJc2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHBvaW50TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApOwoJCXZQb2ludFNoYWRvd0Nvb3JkWyBpIF0gPSBwb2ludFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKI2VuZGlmYCxWcHI9YGZsb2F0IGdldFNoYWRvd01hc2soKSB7CglmbG9hdCBzaGFkb3cgPSAxLjA7CgkjaWZkZWYgVVNFX1NIQURPV01BUAoJI2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDAKCURpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodDsKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHsKCQlkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTsKCQlzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJI2VuZGlmCgkjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDAKCVNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHQ7CgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkgewoJCXNwb3RMaWdodCA9IHNwb3RMaWdodFNoYWRvd3NbIGkgXTsKCQlzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggc3BvdFNoYWRvd01hcFsgaSBdLCBzcG90TGlnaHQuc2hhZG93TWFwU2l6ZSwgc3BvdExpZ2h0LnNoYWRvd0JpYXMsIHNwb3RMaWdodC5zaGFkb3dSYWRpdXMsIHZTcG90U2hhZG93Q29vcmRbIGkgXSApIDogMS4wOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKCSNlbmRpZgoJI2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0OwoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7CgkJcG9pbnRMaWdodCA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07CgkJc2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0LnNoYWRvd0JpYXMsIHBvaW50TGlnaHQuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJI2VuZGlmCgkjZW5kaWYKCXJldHVybiBzaGFkb3c7Cn1gLFVwcj1gI2lmZGVmIFVTRV9TS0lOTklORwoJbWF0NCBib25lTWF0WCA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC54ICk7CgltYXQ0IGJvbmVNYXRZID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnkgKTsKCW1hdDQgYm9uZU1hdFogPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueiApOwoJbWF0NCBib25lTWF0VyA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC53ICk7CiNlbmRpZmAscXByPWAjaWZkZWYgVVNFX1NLSU5OSU5HCgl1bmlmb3JtIG1hdDQgYmluZE1hdHJpeDsKCXVuaWZvcm0gbWF0NCBiaW5kTWF0cml4SW52ZXJzZTsKCSNpZmRlZiBCT05FX1RFWFRVUkUKCQl1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCBib25lVGV4dHVyZTsKCQl1bmlmb3JtIGludCBib25lVGV4dHVyZVNpemU7CgkJbWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkgewoJCQlmbG9hdCBqID0gaSAqIDQuMDsKCQkJZmxvYXQgeCA9IG1vZCggaiwgZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7CgkJCWZsb2F0IHkgPSBmbG9vciggaiAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApOwoJCQlmbG9hdCBkeCA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTsKCQkJZmxvYXQgZHkgPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7CgkJCXkgPSBkeSAqICggeSArIDAuNSApOwoJCQl2ZWM0IHYxID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAwLjUgKSwgeSApICk7CgkJCXZlYzQgdjIgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDEuNSApLCB5ICkgKTsKCQkJdmVjNCB2MyA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMi41ICksIHkgKSApOwoJCQl2ZWM0IHY0ID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAzLjUgKSwgeSApICk7CgkJCW1hdDQgYm9uZSA9IG1hdDQoIHYxLCB2MiwgdjMsIHY0ICk7CgkJCXJldHVybiBib25lOwoJCX0KCSNlbHNlCgkJdW5pZm9ybSBtYXQ0IGJvbmVNYXRyaWNlc1sgTUFYX0JPTkVTIF07CgkJbWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkgewoJCQltYXQ0IGJvbmUgPSBib25lTWF0cmljZXNbIGludChpKSBdOwoJCQlyZXR1cm4gYm9uZTsKCQl9CgkjZW5kaWYKI2VuZGlmYCxHcHI9YCNpZmRlZiBVU0VfU0tJTk5JTkcKCXZlYzQgc2tpblZlcnRleCA9IGJpbmRNYXRyaXggKiB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7Cgl2ZWM0IHNraW5uZWQgPSB2ZWM0KCAwLjAgKTsKCXNraW5uZWQgKz0gYm9uZU1hdFggKiBza2luVmVydGV4ICogc2tpbldlaWdodC54OwoJc2tpbm5lZCArPSBib25lTWF0WSAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnk7Cglza2lubmVkICs9IGJvbmVNYXRaICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQuejsKCXNraW5uZWQgKz0gYm9uZU1hdFcgKiBza2luVmVydGV4ICogc2tpbldlaWdodC53OwoJdHJhbnNmb3JtZWQgPSAoIGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbm5lZCApLnh5ejsKI2VuZGlmYCxXcHI9YCNpZmRlZiBVU0VfU0tJTk5JTkcKCW1hdDQgc2tpbk1hdHJpeCA9IG1hdDQoIDAuMCApOwoJc2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnggKiBib25lTWF0WDsKCXNraW5NYXRyaXggKz0gc2tpbldlaWdodC55ICogYm9uZU1hdFk7Cglza2luTWF0cml4ICs9IHNraW5XZWlnaHQueiAqIGJvbmVNYXRaOwoJc2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LncgKiBib25lTWF0VzsKCXNraW5NYXRyaXggPSBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5NYXRyaXggKiBiaW5kTWF0cml4OwoJb2JqZWN0Tm9ybWFsID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdE5vcm1hbCwgMC4wICkgKS54eXo7CgkjaWZkZWYgVVNFX1RBTkdFTlQKCQlvYmplY3RUYW5nZW50ID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6OwoJI2VuZGlmCiNlbmRpZmAsWXByPWBmbG9hdCBzcGVjdWxhclN0cmVuZ3RoOwojaWZkZWYgVVNFX1NQRUNVTEFSTUFQCgl2ZWM0IHRleGVsU3BlY3VsYXIgPSB0ZXh0dXJlMkQoIHNwZWN1bGFyTWFwLCB2VXYgKTsKCXNwZWN1bGFyU3RyZW5ndGggPSB0ZXhlbFNwZWN1bGFyLnI7CiNlbHNlCglzcGVjdWxhclN0cmVuZ3RoID0gMS4wOwojZW5kaWZgLGpwcj1gI2lmZGVmIFVTRV9TUEVDVUxBUk1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7CiNlbmRpZmAsWHByPWAjaWYgZGVmaW5lZCggVE9ORV9NQVBQSU5HICkKCWdsX0ZyYWdDb2xvci5yZ2IgPSB0b25lTWFwcGluZyggZ2xfRnJhZ0NvbG9yLnJnYiApOwojZW5kaWZgLCRwcj1gI2lmbmRlZiBzYXR1cmF0ZQojZGVmaW5lIHNhdHVyYXRlKCBhICkgY2xhbXAoIGEsIDAuMCwgMS4wICkKI2VuZGlmCnVuaWZvcm0gZmxvYXQgdG9uZU1hcHBpbmdFeHBvc3VyZTsKdmVjMyBMaW5lYXJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHsKCXJldHVybiB0b25lTWFwcGluZ0V4cG9zdXJlICogY29sb3I7Cn0KdmVjMyBSZWluaGFyZFRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgewoJY29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTsKCXJldHVybiBzYXR1cmF0ZSggY29sb3IgLyAoIHZlYzMoIDEuMCApICsgY29sb3IgKSApOwp9CnZlYzMgT3B0aW1pemVkQ2luZW9uVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7Cgljb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlOwoJY29sb3IgPSBtYXgoIHZlYzMoIDAuMCApLCBjb2xvciAtIDAuMDA0ICk7CglyZXR1cm4gcG93KCAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDAuNSApICkgLyAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDEuNyApICsgMC4wNiApLCB2ZWMzKCAyLjIgKSApOwp9CnZlYzMgUlJUQW5kT0RURml0KCB2ZWMzIHYgKSB7Cgl2ZWMzIGEgPSB2ICogKCB2ICsgMC4wMjQ1Nzg2ICkgLSAwLjAwMDA5MDUzNzsKCXZlYzMgYiA9IHYgKiAoIDAuOTgzNzI5ICogdiArIDAuNDMyOTUxMCApICsgMC4yMzgwODE7CglyZXR1cm4gYSAvIGI7Cn0KdmVjMyBBQ0VTRmlsbWljVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7Cgljb25zdCBtYXQzIEFDRVNJbnB1dE1hdCA9IG1hdDMoCgkJdmVjMyggMC41OTcxOSwgMC4wNzYwMCwgMC4wMjg0MCApLAkJdmVjMyggMC4zNTQ1OCwgMC45MDgzNCwgMC4xMzM4MyApLAoJCXZlYzMoIDAuMDQ4MjMsIDAuMDE1NjYsIDAuODM3NzcgKQoJKTsKCWNvbnN0IG1hdDMgQUNFU091dHB1dE1hdCA9IG1hdDMoCgkJdmVjMyggIDEuNjA0NzUsIC0wLjEwMjA4LCAtMC4wMDMyNyApLAkJdmVjMyggLTAuNTMxMDgsICAxLjEwODEzLCAtMC4wNzI3NiApLAoJCXZlYzMoIC0wLjA3MzY3LCAtMC4wMDYwNSwgIDEuMDc2MDIgKQoJKTsKCWNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmUgLyAwLjY7Cgljb2xvciA9IEFDRVNJbnB1dE1hdCAqIGNvbG9yOwoJY29sb3IgPSBSUlRBbmRPRFRGaXQoIGNvbG9yICk7Cgljb2xvciA9IEFDRVNPdXRwdXRNYXQgKiBjb2xvcjsKCXJldHVybiBzYXR1cmF0ZSggY29sb3IgKTsKfQp2ZWMzIEN1c3RvbVRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gY29sb3I7IH1gLEtwcj1gI2lmZGVmIFVTRV9UUkFOU01JU1NJT04KCWZsb2F0IHRyYW5zbWlzc2lvbkFscGhhID0gMS4wOwoJZmxvYXQgdHJhbnNtaXNzaW9uRmFjdG9yID0gdHJhbnNtaXNzaW9uOwoJZmxvYXQgdGhpY2tuZXNzRmFjdG9yID0gdGhpY2tuZXNzOwoJI2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVAKCQl0cmFuc21pc3Npb25GYWN0b3IgKj0gdGV4dHVyZTJEKCB0cmFuc21pc3Npb25NYXAsIHZVdiApLnI7CgkjZW5kaWYKCSNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQCgkJdGhpY2tuZXNzRmFjdG9yICo9IHRleHR1cmUyRCggdGhpY2tuZXNzTWFwLCB2VXYgKS5nOwoJI2VuZGlmCgl2ZWMzIHBvcyA9IHZXb3JsZFBvc2l0aW9uOwoJdmVjMyB2ID0gbm9ybWFsaXplKCBjYW1lcmFQb3NpdGlvbiAtIHBvcyApOwoJdmVjMyBuID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7Cgl2ZWM0IHRyYW5zbWlzc2lvbiA9IGdldElCTFZvbHVtZVJlZnJhY3Rpb24oCgkJbiwgdiwgcm91Z2huZXNzRmFjdG9yLCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyRjkwLAoJCXBvcywgbW9kZWxNYXRyaXgsIHZpZXdNYXRyaXgsIHByb2plY3Rpb25NYXRyaXgsIGlvciwgdGhpY2tuZXNzRmFjdG9yLAoJCWF0dGVudWF0aW9uQ29sb3IsIGF0dGVudWF0aW9uRGlzdGFuY2UgKTsKCXRvdGFsRGlmZnVzZSA9IG1peCggdG90YWxEaWZmdXNlLCB0cmFuc21pc3Npb24ucmdiLCB0cmFuc21pc3Npb25GYWN0b3IgKTsKCXRyYW5zbWlzc2lvbkFscGhhID0gbWl4KCB0cmFuc21pc3Npb25BbHBoYSwgdHJhbnNtaXNzaW9uLmEsIHRyYW5zbWlzc2lvbkZhY3RvciApOwojZW5kaWZgLFpwcj1gI2lmZGVmIFVTRV9UUkFOU01JU1NJT04KCXVuaWZvcm0gZmxvYXQgdHJhbnNtaXNzaW9uOwoJdW5pZm9ybSBmbG9hdCB0aGlja25lc3M7Cgl1bmlmb3JtIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2U7Cgl1bmlmb3JtIHZlYzMgYXR0ZW51YXRpb25Db2xvcjsKCSNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQCgkJdW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uTWFwOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1RISUNLTkVTU01BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHRoaWNrbmVzc01hcDsKCSNlbmRpZgoJdW5pZm9ybSB2ZWMyIHRyYW5zbWlzc2lvblNhbXBsZXJTaXplOwoJdW5pZm9ybSBzYW1wbGVyMkQgdHJhbnNtaXNzaW9uU2FtcGxlck1hcDsKCXVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDsKCXVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4OwoJdmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uOwoJdmVjMyBnZXRWb2x1bWVUcmFuc21pc3Npb25SYXkoIGNvbnN0IGluIHZlYzMgbiwgY29uc3QgaW4gdmVjMyB2LCBjb25zdCBpbiBmbG9hdCB0aGlja25lc3MsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gbWF0NCBtb2RlbE1hdHJpeCApIHsKCQl2ZWMzIHJlZnJhY3Rpb25WZWN0b3IgPSByZWZyYWN0KCAtIHYsIG5vcm1hbGl6ZSggbiApLCAxLjAgLyBpb3IgKTsKCQl2ZWMzIG1vZGVsU2NhbGU7CgkJbW9kZWxTY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLnh5eiApICk7CgkJbW9kZWxTY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLnh5eiApICk7CgkJbW9kZWxTY2FsZS56ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMiBdLnh5eiApICk7CgkJcmV0dXJuIG5vcm1hbGl6ZSggcmVmcmFjdGlvblZlY3RvciApICogdGhpY2tuZXNzICogbW9kZWxTY2FsZTsKCX0KCWZsb2F0IGFwcGx5SW9yVG9Sb3VnaG5lc3MoIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgaW9yICkgewoJCXJldHVybiByb3VnaG5lc3MgKiBjbGFtcCggaW9yICogMi4wIC0gMi4wLCAwLjAsIDEuMCApOwoJfQoJdmVjNCBnZXRUcmFuc21pc3Npb25TYW1wbGUoIGNvbnN0IGluIHZlYzIgZnJhZ0Nvb3JkLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGlvciApIHsKCQlmbG9hdCBmcmFtZWJ1ZmZlckxvZCA9IGxvZzIoIHRyYW5zbWlzc2lvblNhbXBsZXJTaXplLnggKSAqIGFwcGx5SW9yVG9Sb3VnaG5lc3MoIHJvdWdobmVzcywgaW9yICk7CgkJI2lmZGVmIFRFWFRVUkVfTE9EX0VYVAoJCQlyZXR1cm4gdGV4dHVyZTJETG9kRVhUKCB0cmFuc21pc3Npb25TYW1wbGVyTWFwLCBmcmFnQ29vcmQueHksIGZyYW1lYnVmZmVyTG9kICk7CgkJI2Vsc2UKCQkJcmV0dXJuIHRleHR1cmUyRCggdHJhbnNtaXNzaW9uU2FtcGxlck1hcCwgZnJhZ0Nvb3JkLnh5LCBmcmFtZWJ1ZmZlckxvZCApOwoJCSNlbmRpZgoJfQoJdmVjMyBhcHBseVZvbHVtZUF0dGVudWF0aW9uKCBjb25zdCBpbiB2ZWMzIHJhZGlhbmNlLCBjb25zdCBpbiBmbG9hdCB0cmFuc21pc3Npb25EaXN0YW5jZSwgY29uc3QgaW4gdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlICkgewoJCWlmICggYXR0ZW51YXRpb25EaXN0YW5jZSA9PSAwLjAgKSB7CgkJCXJldHVybiByYWRpYW5jZTsKCQl9IGVsc2UgewoJCQl2ZWMzIGF0dGVudWF0aW9uQ29lZmZpY2llbnQgPSAtbG9nKCBhdHRlbnVhdGlvbkNvbG9yICkgLyBhdHRlbnVhdGlvbkRpc3RhbmNlOwoJCQl2ZWMzIHRyYW5zbWl0dGFuY2UgPSBleHAoIC0gYXR0ZW51YXRpb25Db2VmZmljaWVudCAqIHRyYW5zbWlzc2lvbkRpc3RhbmNlICk7CQkJcmV0dXJuIHRyYW5zbWl0dGFuY2UgKiByYWRpYW5jZTsKCQl9Cgl9Cgl2ZWM0IGdldElCTFZvbHVtZVJlZnJhY3Rpb24oIGNvbnN0IGluIHZlYzMgbiwgY29uc3QgaW4gdmVjMyB2LCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yLAoJCWNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc3BlY3VsYXJGOTAsIGNvbnN0IGluIHZlYzMgcG9zaXRpb24sIGNvbnN0IGluIG1hdDQgbW9kZWxNYXRyaXgsCgkJY29uc3QgaW4gbWF0NCB2aWV3TWF0cml4LCBjb25zdCBpbiBtYXQ0IHByb2pNYXRyaXgsIGNvbnN0IGluIGZsb2F0IGlvciwgY29uc3QgaW4gZmxvYXQgdGhpY2tuZXNzLAoJCWNvbnN0IGluIHZlYzMgYXR0ZW51YXRpb25Db2xvciwgY29uc3QgaW4gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZSApIHsKCQl2ZWMzIHRyYW5zbWlzc2lvblJheSA9IGdldFZvbHVtZVRyYW5zbWlzc2lvblJheSggbiwgdiwgdGhpY2tuZXNzLCBpb3IsIG1vZGVsTWF0cml4ICk7CgkJdmVjMyByZWZyYWN0ZWRSYXlFeGl0ID0gcG9zaXRpb24gKyB0cmFuc21pc3Npb25SYXk7CgkJdmVjNCBuZGNQb3MgPSBwcm9qTWF0cml4ICogdmlld01hdHJpeCAqIHZlYzQoIHJlZnJhY3RlZFJheUV4aXQsIDEuMCApOwoJCXZlYzIgcmVmcmFjdGlvbkNvb3JkcyA9IG5kY1Bvcy54eSAvIG5kY1Bvcy53OwoJCXJlZnJhY3Rpb25Db29yZHMgKz0gMS4wOwoJCXJlZnJhY3Rpb25Db29yZHMgLz0gMi4wOwoJCXZlYzQgdHJhbnNtaXR0ZWRMaWdodCA9IGdldFRyYW5zbWlzc2lvblNhbXBsZSggcmVmcmFjdGlvbkNvb3Jkcywgcm91Z2huZXNzLCBpb3IgKTsKCQl2ZWMzIGF0dGVudWF0ZWRDb2xvciA9IGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24oIHRyYW5zbWl0dGVkTGlnaHQucmdiLCBsZW5ndGgoIHRyYW5zbWlzc2lvblJheSApLCBhdHRlbnVhdGlvbkNvbG9yLCBhdHRlbnVhdGlvbkRpc3RhbmNlICk7CgkJdmVjMyBGID0gRW52aXJvbm1lbnRCUkRGKCBuLCB2LCBzcGVjdWxhckNvbG9yLCBzcGVjdWxhckY5MCwgcm91Z2huZXNzICk7CgkJcmV0dXJuIHZlYzQoICggMS4wIC0gRiApICogYXR0ZW51YXRlZENvbG9yICogZGlmZnVzZUNvbG9yLCB0cmFuc21pdHRlZExpZ2h0LmEgKTsKCX0KI2VuZGlmYCxKcHI9YCNpZiAoIGRlZmluZWQoIFVTRV9VViApICYmICEgZGVmaW5lZCggVVZTX1ZFUlRFWF9PTkxZICkgKQoJdmFyeWluZyB2ZWMyIHZVdjsKI2VuZGlmYCxRcHI9YCNpZmRlZiBVU0VfVVYKCSNpZmRlZiBVVlNfVkVSVEVYX09OTFkKCQl2ZWMyIHZVdjsKCSNlbHNlCgkJdmFyeWluZyB2ZWMyIHZVdjsKCSNlbmRpZgoJdW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtOwojZW5kaWZgLHRkcj1gI2lmZGVmIFVTRV9VVgoJdlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTsKI2VuZGlmYCxlZHI9YCNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKQoJdmFyeWluZyB2ZWMyIHZVdjI7CiNlbmRpZmAscmRyPWAjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQICkKCWF0dHJpYnV0ZSB2ZWMyIHV2MjsKCXZhcnlpbmcgdmVjMiB2VXYyOwoJdW5pZm9ybSBtYXQzIHV2MlRyYW5zZm9ybTsKI2VuZGlmYCxuZHI9YCNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKQoJdlV2MiA9ICggdXYyVHJhbnNmb3JtICogdmVjMyggdXYyLCAxICkgKS54eTsKI2VuZGlmYCxpZHI9YCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCggRElTVEFOQ0UgKSB8fCBkZWZpbmVkICggVVNFX1NIQURPV01BUCApIHx8IGRlZmluZWQgKCBVU0VfVFJBTlNNSVNTSU9OICkKCXZlYzQgd29ybGRQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTsKCSNpZmRlZiBVU0VfSU5TVEFOQ0lORwoJCXdvcmxkUG9zaXRpb24gPSBpbnN0YW5jZU1hdHJpeCAqIHdvcmxkUG9zaXRpb247CgkjZW5kaWYKCXdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHdvcmxkUG9zaXRpb247CiNlbmRpZmAsb2RyPWB2YXJ5aW5nIHZlYzIgdlV2Owp1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07CnZvaWQgbWFpbigpIHsKCXZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7CglnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLnh5LCAxLjAsIDEuMCApOwp9YCxhZHI9YHVuaWZvcm0gc2FtcGxlcjJEIHQyRDsKdmFyeWluZyB2ZWMyIHZVdjsKdm9pZCBtYWluKCkgewoJZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCB0MkQsIHZVdiApOwoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KfWAsc2RyPWB2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgp2b2lkIG1haW4oKSB7Cgl2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApOwoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCWdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53Owp9YCxsZHI9YCNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKdmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjsKI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJdmVjMyB2UmVmbGVjdCA9IHZXb3JsZERpcmVjdGlvbjsKCSNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+CglnbF9GcmFnQ29sb3IgPSBlbnZDb2xvcjsKCWdsX0ZyYWdDb2xvci5hICo9IG9wYWNpdHk7CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50Pgp9YCxjZHI9YCNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4KdmFyeWluZyB2ZWMyIHZIaWdoUHJlY2lzaW9uWlc7CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVAKCQkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2VuZGlmCgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCXZIaWdoUHJlY2lzaW9uWlcgPSBnbF9Qb3NpdGlvbi56dzsKfWAsdWRyPWAjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwCgl1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNlbmRpZgojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8cGFja2luZz4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4KdmFyeWluZyB2ZWMyIHZIaWdoUHJlY2lzaW9uWlc7CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApOwoJI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMAoJCWRpZmZ1c2VDb2xvci5hID0gb3BhY2l0eTsKCSNlbmRpZgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CglmbG9hdCBmcmFnQ29vcmRaID0gMC41ICogdkhpZ2hQcmVjaXNpb25aV1swXSAvIHZIaWdoUHJlY2lzaW9uWldbMV0gKyAwLjU7CgkjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwCgkJZ2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggMS4wIC0gZnJhZ0Nvb3JkWiApLCBvcGFjaXR5ICk7CgkjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDEKCQlnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGZyYWdDb29yZFogKTsKCSNlbmRpZgp9YCxoZHI9YCNkZWZpbmUgRElTVEFOQ0UKdmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQCgkJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCQkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNlbmRpZgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+Cgl2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6Owp9YCxmZHI9YCNkZWZpbmUgRElTVEFOQ0UKdW5pZm9ybSB2ZWMzIHJlZmVyZW5jZVBvc2l0aW9uOwp1bmlmb3JtIGZsb2F0IG5lYXJEaXN0YW5jZTsKdW5pZm9ybSBmbG9hdCBmYXJEaXN0YW5jZTsKdmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8cGFja2luZz4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4gKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCWZsb2F0IGRpc3QgPSBsZW5ndGgoIHZXb3JsZFBvc2l0aW9uIC0gcmVmZXJlbmNlUG9zaXRpb24gKTsKCWRpc3QgPSAoIGRpc3QgLSBuZWFyRGlzdGFuY2UgKSAvICggZmFyRGlzdGFuY2UgLSBuZWFyRGlzdGFuY2UgKTsKCWRpc3QgPSBzYXR1cmF0ZSggZGlzdCApOwoJZ2xfRnJhZ0NvbG9yID0gcGFja0RlcHRoVG9SR0JBKCBkaXN0ICk7Cn1gLHBkcj1gdmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4Kdm9pZCBtYWluKCkgewoJdldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTsKCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+Cn1gLGRkcj1gdW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0Owp2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgp2b2lkIG1haW4oKSB7Cgl2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7Cgl2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7CglnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTsKCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+Cn1gLG1kcj1gdW5pZm9ybSBmbG9hdCBzY2FsZTsKYXR0cmlidXRlIGZsb2F0IGxpbmVEaXN0YW5jZTsKdmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7Cgl2TGluZURpc3RhbmNlID0gc2NhbGUgKiBsaW5lRGlzdGFuY2U7CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsZ2RyPWB1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5Owp1bmlmb3JtIGZsb2F0IGRhc2hTaXplOwp1bmlmb3JtIGZsb2F0IHRvdGFsU2l6ZTsKdmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJaWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7CgkJZGlzY2FyZDsKCX0KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApOwoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CglvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjsKCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50Pgp9YCxfZHI9YCNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2lmIGRlZmluZWQgKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9TS0lOTklORyApCgkJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCQkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+CgkJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNlbmRpZgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJI2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD4KCSNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLHlkcj1gdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2lmbmRlZiBGTEFUX1NIQURFRAoJdmFyeWluZyB2ZWMzIHZOb3JtYWw7CiNlbmRpZgojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCSNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD4KCVJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7CgkjaWZkZWYgVVNFX0xJR0hUTUFQCgkJdmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7CgkJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGxpZ2h0TWFwVGV4ZWwucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7CgkjZWxzZQoJCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2ZWMzKCAxLjAgKTsKCSNlbmRpZgoJI2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PgoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGRpZmZ1c2VDb2xvci5yZ2I7Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7CgkjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50Pgp9YCx2ZHI9YCNkZWZpbmUgTEFNQkVSVAp2YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7CnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDsKI2lmZGVmIERPVUJMRV9TSURFRAoJdmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7Cgl2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjazsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDx1djJfdmVydGV4PgoJI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxsaWdodHNfbGFtYmVydF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxmb2dfdmVydGV4Pgp9YCx4ZHI9YHVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIHZlYzMgZW1pc3NpdmU7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKdmFyeWluZyB2ZWMzIHZMaWdodEZyb250Owp2YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7CiNpZmRlZiBET1VCTEVfU0lERUQKCXZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrOwoJdmFyeWluZyB2ZWMzIHZJbmRpcmVjdEJhY2s7CiNlbmRpZgojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8cGFja2luZz4KI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+CiNpbmNsdWRlIDxic2Rmcz4KI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCVJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7Cgl2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+CgkjaWZkZWYgRE9VQkxFX1NJREVECgkJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9ICggZ2xfRnJvbnRGYWNpbmcgKSA/IHZJbmRpcmVjdEZyb250IDogdkluZGlyZWN0QmFjazsKCSNlbHNlCgkJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZJbmRpcmVjdEZyb250OwoJI2VuZGlmCgkjaW5jbHVkZSA8bGlnaHRtYXBfZnJhZ21lbnQ+CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gQlJERl9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICk7CgkjaWZkZWYgRE9VQkxFX1NJREVECgkJcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9ICggZ2xfRnJvbnRGYWNpbmcgKSA/IHZMaWdodEZyb250IDogdkxpZ2h0QmFjazsKCSNlbHNlCgkJcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9IHZMaWdodEZyb250OwoJI2VuZGlmCglyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICo9IEJSREZfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpOwoJI2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PgoJdmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTsKCSNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KCSNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD4KCSNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+Cn1gLGJkcj1gI2RlZmluZSBNQVRDQVAKdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KCXZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6Owp9YCx3ZHI9YCNkZWZpbmUgTUFUQ0FQCnVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CnVuaWZvcm0gc2FtcGxlcjJEIG1hdGNhcDsKdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4KCXZlYzMgdmlld0RpciA9IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApOwoJdmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLSB2aWV3RGlyLnggKSApOwoJdmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTsKCXZlYzIgdXYgPSB2ZWMyKCBkb3QoIHgsIG5vcm1hbCApLCBkb3QoIHksIG5vcm1hbCApICkgKiAwLjQ5NSArIDAuNTsKCSNpZmRlZiBVU0VfTUFUQ0FQCgkJdmVjNCBtYXRjYXBDb2xvciA9IHRleHR1cmUyRCggbWF0Y2FwLCB1diApOwoJI2Vsc2UKCQl2ZWM0IG1hdGNhcENvbG9yID0gdmVjNCggdmVjMyggbWl4KCAwLjIsIDAuOCwgdXYueSApICksIDEuMCApOwoJI2VuZGlmCgl2ZWMzIG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiICogbWF0Y2FwQ29sb3IucmdiOwoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50Pgp9YCxTZHI9YCNkZWZpbmUgTk9STUFMCiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApCgl2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+CiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApCgl2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejsKI2VuZGlmCn1gLE1kcj1gI2RlZmluZSBOT1JNQUwKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKQoJdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNlbmRpZgojaW5jbHVkZSA8cGFja2luZz4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4KCWdsX0ZyYWdDb2xvciA9IHZlYzQoIHBhY2tOb3JtYWxUb1JHQiggbm9ybWFsICksIG9wYWNpdHkgKTsKfWAsRWRyPWAjZGVmaW5lIFBIT05HCnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDx1djJfdmVydGV4PgoJI2luY2x1ZGUgPGNvbG9yX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+Cgl2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejsKCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLFRkcj1gI2RlZmluZSBQSE9ORwp1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSB2ZWMzIGVtaXNzaXZlOwp1bmlmb3JtIHZlYzMgc3BlY3VsYXI7CnVuaWZvcm0gZmxvYXQgc2hpbmluZXNzOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnNkZnM+CiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTsKCXZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCSNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+CgkjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX3Bob25nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPgoJI2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PgoJdmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTsKCSNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KCSNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD4KCSNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+Cn1gLENkcj1gI2RlZmluZSBTVEFOREFSRAp2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2lmZGVmIFVTRV9UUkFOU01JU1NJT04KCXZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCXZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6OwoJI2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD4KCSNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+CiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OCgl2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6OwojZW5kaWYKfWAsQWRyPWAjZGVmaW5lIFNUQU5EQVJECiNpZmRlZiBQSFlTSUNBTAoJI2RlZmluZSBJT1IKCSNkZWZpbmUgU1BFQ1VMQVIKI2VuZGlmCnVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIHZlYzMgZW1pc3NpdmU7CnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzOwp1bmlmb3JtIGZsb2F0IG1ldGFsbmVzczsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaWZkZWYgSU9SCgl1bmlmb3JtIGZsb2F0IGlvcjsKI2VuZGlmCiNpZmRlZiBTUEVDVUxBUgoJdW5pZm9ybSBmbG9hdCBzcGVjdWxhckludGVuc2l0eTsKCXVuaWZvcm0gdmVjMyBzcGVjdWxhckNvbG9yOwoJI2lmZGVmIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFySW50ZW5zaXR5TWFwOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1NQRUNVTEFSQ09MT1JNQVAKCQl1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhckNvbG9yTWFwOwoJI2VuZGlmCiNlbmRpZgojaWZkZWYgVVNFX0NMRUFSQ09BVAoJdW5pZm9ybSBmbG9hdCBjbGVhcmNvYXQ7Cgl1bmlmb3JtIGZsb2F0IGNsZWFyY29hdFJvdWdobmVzczsKI2VuZGlmCiNpZmRlZiBVU0VfU0hFRU4KCXVuaWZvcm0gdmVjMyBzaGVlbkNvbG9yOwoJdW5pZm9ybSBmbG9hdCBzaGVlblJvdWdobmVzczsKCSNpZmRlZiBVU0VfU0hFRU5DT0xPUk1BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNoZWVuQ29sb3JNYXA7CgkjZW5kaWYKCSNpZmRlZiBVU0VfU0hFRU5ST1VHSE5FU1NNQVAKCQl1bmlmb3JtIHNhbXBsZXIyRCBzaGVlblJvdWdobmVzc01hcDsKCSNlbmRpZgojZW5kaWYKdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxic2Rmcz4KI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGVhcmNvYXRfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCVJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7Cgl2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8cm91Z2huZXNzbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1ldGFsbmVzc21hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+CgkjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM+CgkjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPgoJI2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PgoJdmVjMyB0b3RhbERpZmZ1c2UgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlOwoJdmVjMyB0b3RhbFNwZWN1bGFyID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyOwoJI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9mcmFnbWVudD4KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHRvdGFsRGlmZnVzZSArIHRvdGFsU3BlY3VsYXIgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7CgkjaWZkZWYgVVNFX1NIRUVOCgkJZmxvYXQgc2hlZW5FbmVyZ3lDb21wID0gMS4wIC0gMC4xNTcgKiBtYXgzKCBtYXRlcmlhbC5zaGVlbkNvbG9yICk7CgkJb3V0Z29pbmdMaWdodCA9IG91dGdvaW5nTGlnaHQgKiBzaGVlbkVuZXJneUNvbXAgKyBzaGVlblNwZWN1bGFyOwoJI2VuZGlmCgkjaWZkZWYgVVNFX0NMRUFSQ09BVAoJCWZsb2F0IGRvdE5WY2MgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApOwoJCXZlYzMgRmNjID0gRl9TY2hsaWNrKCBtYXRlcmlhbC5jbGVhcmNvYXRGMCwgbWF0ZXJpYWwuY2xlYXJjb2F0RjkwLCBkb3ROVmNjICk7CgkJb3V0Z29pbmdMaWdodCA9IG91dGdvaW5nTGlnaHQgKiAoIDEuMCAtIG1hdGVyaWFsLmNsZWFyY29hdCAqIEZjYyApICsgY2xlYXJjb2F0U3BlY3VsYXIgKiBtYXRlcmlhbC5jbGVhcmNvYXQ7CgkjZW5kaWYKCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAsUGRyPWAjZGVmaW5lIFRPT04KdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCXZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6OwoJI2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD4KCSNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLElkcj1gI2RlZmluZSBUT09OCnVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIHZlYzMgZW1pc3NpdmU7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGdyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+CiNpbmNsdWRlIDxub3JtYWxfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxpZ2h0c190b29uX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CglSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApOwoJdmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxsaWdodHNfdG9vbl9mcmFnbWVudD4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+CgkjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+CgkjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD4KCSNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD4KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7CgkjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KCSNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD4KCSNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+Cn1gLExkcj1gdW5pZm9ybSBmbG9hdCBzaXplOwp1bmlmb3JtIGZsb2F0IHNjYWxlOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CglnbF9Qb2ludFNpemUgPSBzaXplOwoJI2lmZGVmIFVTRV9TSVpFQVRURU5VQVRJT04KCQlib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7CgkJaWYgKCBpc1BlcnNwZWN0aXZlICkgZ2xfUG9pbnRTaXplICo9ICggc2NhbGUgLyAtIG12UG9zaXRpb24ueiApOwoJI2VuZGlmCgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLGtkcj1gdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTsKCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CglvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjsKCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50Pgp9YCxSZHI9YCNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsTmRyPWB1bmlmb3JtIHZlYzMgY29sb3I7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJZ2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IsIG9wYWNpdHkgKiAoIDEuMCAtIGdldFNoYWRvd01hc2soKSApICk7CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KfWAsRGRyPWB1bmlmb3JtIGZsb2F0IHJvdGF0aW9uOwp1bmlmb3JtIHZlYzIgY2VudGVyOwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCXZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApOwoJdmVjMiBzY2FsZTsKCXNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueCwgbW9kZWxNYXRyaXhbIDAgXS55LCBtb2RlbE1hdHJpeFsgMCBdLnogKSApOwoJc2NhbGUueSA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDEgXS54LCBtb2RlbE1hdHJpeFsgMSBdLnksIG1vZGVsTWF0cml4WyAxIF0ueiApICk7CgkjaWZuZGVmIFVTRV9TSVpFQVRURU5VQVRJT04KCQlib29sIGlzUGVyc3BlY3RpdmUgPSBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICk7CgkJaWYgKCBpc1BlcnNwZWN0aXZlICkgc2NhbGUgKj0gLSBtdlBvc2l0aW9uLno7CgkjZW5kaWYKCXZlYzIgYWxpZ25lZFBvc2l0aW9uID0gKCBwb3NpdGlvbi54eSAtICggY2VudGVyIC0gdmVjMiggMC41ICkgKSApICogc2NhbGU7Cgl2ZWMyIHJvdGF0ZWRQb3NpdGlvbjsKCXJvdGF0ZWRQb3NpdGlvbi54ID0gY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggLSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTsKCXJvdGF0ZWRQb3NpdGlvbi55ID0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggKyBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTsKCW12UG9zaXRpb24ueHkgKz0gcm90YXRlZFBvc2l0aW9uOwoJZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCSNpbmNsdWRlIDxmb2dfdmVydGV4Pgp9YCxPZHI9YHVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApOwoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCW91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiOwoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50Pgp9YCxocj17YWxwaGFtYXBfZnJhZ21lbnQ6aGZyLGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ6ZmZyLGFscGhhdGVzdF9mcmFnbWVudDpwZnIsYWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ6ZGZyLGFvbWFwX2ZyYWdtZW50Om1mcixhb21hcF9wYXJzX2ZyYWdtZW50OmdmcixiZWdpbl92ZXJ0ZXg6X2ZyLGJlZ2lubm9ybWFsX3ZlcnRleDp5ZnIsYnNkZnM6dmZyLGJ1bXBtYXBfcGFyc19mcmFnbWVudDp4ZnIsY2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50OmJmcixjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudDp3ZnIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4OlNmcixjbGlwcGluZ19wbGFuZXNfdmVydGV4Ok1mcixjb2xvcl9mcmFnbWVudDpFZnIsY29sb3JfcGFyc19mcmFnbWVudDpUZnIsY29sb3JfcGFyc192ZXJ0ZXg6Q2ZyLGNvbG9yX3ZlcnRleDpBZnIsY29tbW9uOlBmcixjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ6SWZyLGRlZmF1bHRub3JtYWxfdmVydGV4OkxmcixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6a2ZyLGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg6UmZyLGVtaXNzaXZlbWFwX2ZyYWdtZW50Ok5mcixlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50OkRmcixlbmNvZGluZ3NfZnJhZ21lbnQ6T2ZyLGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OnpmcixlbnZtYXBfZnJhZ21lbnQ6RmZyLGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudDpCZnIsZW52bWFwX3BhcnNfZnJhZ21lbnQ6SGZyLGVudm1hcF9wYXJzX3ZlcnRleDpWZnIsZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6SmZyLGVudm1hcF92ZXJ0ZXg6VWZyLGZvZ192ZXJ0ZXg6cWZyLGZvZ19wYXJzX3ZlcnRleDpHZnIsZm9nX2ZyYWdtZW50Oldmcixmb2dfcGFyc19mcmFnbWVudDpZZnIsZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudDpqZnIsbGlnaHRtYXBfZnJhZ21lbnQ6WGZyLGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ6JGZyLGxpZ2h0c19sYW1iZXJ0X3ZlcnRleDpLZnIsbGlnaHRzX3BhcnNfYmVnaW46WmZyLGxpZ2h0c190b29uX2ZyYWdtZW50OlFmcixsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50OnRwcixsaWdodHNfcGhvbmdfZnJhZ21lbnQ6ZXByLGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50OnJwcixsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ6bnByLGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50OmlwcixsaWdodHNfZnJhZ21lbnRfYmVnaW46b3ByLGxpZ2h0c19mcmFnbWVudF9tYXBzOmFwcixsaWdodHNfZnJhZ21lbnRfZW5kOnNwcixsb2dkZXB0aGJ1Zl9mcmFnbWVudDpscHIsbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudDpjcHIsbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg6dXByLGxvZ2RlcHRoYnVmX3ZlcnRleDpocHIsbWFwX2ZyYWdtZW50OmZwcixtYXBfcGFyc19mcmFnbWVudDpwcHIsbWFwX3BhcnRpY2xlX2ZyYWdtZW50OmRwcixtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudDptcHIsbWV0YWxuZXNzbWFwX2ZyYWdtZW50OmdwcixtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudDpfcHIsbW9ycGhub3JtYWxfdmVydGV4Onlwcixtb3JwaHRhcmdldF9wYXJzX3ZlcnRleDp2cHIsbW9ycGh0YXJnZXRfdmVydGV4Onhwcixub3JtYWxfZnJhZ21lbnRfYmVnaW46YnByLG5vcm1hbF9mcmFnbWVudF9tYXBzOndwcixub3JtYWxfcGFyc19mcmFnbWVudDpTcHIsbm9ybWFsX3BhcnNfdmVydGV4Ok1wcixub3JtYWxfdmVydGV4OkVwcixub3JtYWxtYXBfcGFyc19mcmFnbWVudDpUcHIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbjpDcHIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzOkFwcixjbGVhcmNvYXRfcGFyc19mcmFnbWVudDpQcHIsb3V0cHV0X2ZyYWdtZW50OklwcixwYWNraW5nOkxwcixwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50Omtwcixwcm9qZWN0X3ZlcnRleDpScHIsZGl0aGVyaW5nX2ZyYWdtZW50Ok5wcixkaXRoZXJpbmdfcGFyc19mcmFnbWVudDpEcHIscm91Z2huZXNzbWFwX2ZyYWdtZW50Ok9wcixyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudDp6cHIsc2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ6RnByLHNoYWRvd21hcF9wYXJzX3ZlcnRleDpCcHIsc2hhZG93bWFwX3ZlcnRleDpIcHIsc2hhZG93bWFza19wYXJzX2ZyYWdtZW50OlZwcixza2luYmFzZV92ZXJ0ZXg6VXByLHNraW5uaW5nX3BhcnNfdmVydGV4OnFwcixza2lubmluZ192ZXJ0ZXg6R3ByLHNraW5ub3JtYWxfdmVydGV4OldwcixzcGVjdWxhcm1hcF9mcmFnbWVudDpZcHIsc3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudDpqcHIsdG9uZW1hcHBpbmdfZnJhZ21lbnQ6WHByLHRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6JHByLHRyYW5zbWlzc2lvbl9mcmFnbWVudDpLcHIsdHJhbnNtaXNzaW9uX3BhcnNfZnJhZ21lbnQ6WnByLHV2X3BhcnNfZnJhZ21lbnQ6SnByLHV2X3BhcnNfdmVydGV4OlFwcix1dl92ZXJ0ZXg6dGRyLHV2Ml9wYXJzX2ZyYWdtZW50OmVkcix1djJfcGFyc192ZXJ0ZXg6cmRyLHV2Ml92ZXJ0ZXg6bmRyLHdvcmxkcG9zX3ZlcnRleDppZHIsYmFja2dyb3VuZF92ZXJ0Om9kcixiYWNrZ3JvdW5kX2ZyYWc6YWRyLGN1YmVfdmVydDpzZHIsY3ViZV9mcmFnOmxkcixkZXB0aF92ZXJ0OmNkcixkZXB0aF9mcmFnOnVkcixkaXN0YW5jZVJHQkFfdmVydDpoZHIsZGlzdGFuY2VSR0JBX2ZyYWc6ZmRyLGVxdWlyZWN0X3ZlcnQ6cGRyLGVxdWlyZWN0X2ZyYWc6ZGRyLGxpbmVkYXNoZWRfdmVydDptZHIsbGluZWRhc2hlZF9mcmFnOmdkcixtZXNoYmFzaWNfdmVydDpfZHIsbWVzaGJhc2ljX2ZyYWc6eWRyLG1lc2hsYW1iZXJ0X3ZlcnQ6dmRyLG1lc2hsYW1iZXJ0X2ZyYWc6eGRyLG1lc2htYXRjYXBfdmVydDpiZHIsbWVzaG1hdGNhcF9mcmFnOndkcixtZXNobm9ybWFsX3ZlcnQ6U2RyLG1lc2hub3JtYWxfZnJhZzpNZHIsbWVzaHBob25nX3ZlcnQ6RWRyLG1lc2hwaG9uZ19mcmFnOlRkcixtZXNocGh5c2ljYWxfdmVydDpDZHIsbWVzaHBoeXNpY2FsX2ZyYWc6QWRyLG1lc2h0b29uX3ZlcnQ6UGRyLG1lc2h0b29uX2ZyYWc6SWRyLHBvaW50c192ZXJ0Okxkcixwb2ludHNfZnJhZzprZHIsc2hhZG93X3ZlcnQ6UmRyLHNoYWRvd19mcmFnOk5kcixzcHJpdGVfdmVydDpEZHIsc3ByaXRlX2ZyYWc6T2RyfSxyZT17Y29tbW9uOntkaWZmdXNlOnt2YWx1ZTpuZXcgbmUoMTY3NzcyMTUpfSxvcGFjaXR5Ont2YWx1ZToxfSxtYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcga2l9LHV2MlRyYW5zZm9ybTp7dmFsdWU6bmV3IGtpfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sYWxwaGFUZXN0Ont2YWx1ZTowfX0sc3BlY3VsYXJtYXA6e3NwZWN1bGFyTWFwOnt2YWx1ZTpudWxsfX0sZW52bWFwOntlbnZNYXA6e3ZhbHVlOm51bGx9LGZsaXBFbnZNYXA6e3ZhbHVlOi0xfSxyZWZsZWN0aXZpdHk6e3ZhbHVlOjF9LGlvcjp7dmFsdWU6MS41fSxyZWZyYWN0aW9uUmF0aW86e3ZhbHVlOi45OH19LGFvbWFwOnthb01hcDp7dmFsdWU6bnVsbH0sYW9NYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxsaWdodG1hcDp7bGlnaHRNYXA6e3ZhbHVlOm51bGx9LGxpZ2h0TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sZW1pc3NpdmVtYXA6e2VtaXNzaXZlTWFwOnt2YWx1ZTpudWxsfX0sYnVtcG1hcDp7YnVtcE1hcDp7dmFsdWU6bnVsbH0sYnVtcFNjYWxlOnt2YWx1ZToxfX0sbm9ybWFsbWFwOntub3JtYWxNYXA6e3ZhbHVlOm51bGx9LG5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgTHQoMSwxKX19LGRpc3BsYWNlbWVudG1hcDp7ZGlzcGxhY2VtZW50TWFwOnt2YWx1ZTpudWxsfSxkaXNwbGFjZW1lbnRTY2FsZTp7dmFsdWU6MX0sZGlzcGxhY2VtZW50Qmlhczp7dmFsdWU6MH19LHJvdWdobmVzc21hcDp7cm91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfX0sbWV0YWxuZXNzbWFwOnttZXRhbG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxncmFkaWVudG1hcDp7Z3JhZGllbnRNYXA6e3ZhbHVlOm51bGx9fSxmb2c6e2ZvZ0RlbnNpdHk6e3ZhbHVlOjI1ZS01fSxmb2dOZWFyOnt2YWx1ZToxfSxmb2dGYXI6e3ZhbHVlOjJlM30sZm9nQ29sb3I6e3ZhbHVlOm5ldyBuZSgxNjc3NzIxNSl9fSxsaWdodHM6e2FtYmllbnRMaWdodENvbG9yOnt2YWx1ZTpbXX0sbGlnaHRQcm9iZTp7dmFsdWU6W119LGRpcmVjdGlvbmFsTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sY29sb3I6e319fSxkaXJlY3Rpb25hbExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sZGlyZWN0aW9uYWxTaGFkb3dNYXA6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHNwb3RMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRpcmVjdGlvbjp7fSxkaXN0YW5jZTp7fSxjb25lQ29zOnt9LHBlbnVtYnJhQ29zOnt9LGRlY2F5Ont9fX0sc3BvdExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sc3BvdFNoYWRvd01hcDp7dmFsdWU6W119LHNwb3RTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxwb2ludExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGVjYXk6e30sZGlzdGFuY2U6e319fSxwb2ludExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9LHNoYWRvd0NhbWVyYU5lYXI6e30sc2hhZG93Q2FtZXJhRmFyOnt9fX0scG9pbnRTaGFkb3dNYXA6e3ZhbHVlOltdfSxwb2ludFNoYWRvd01hdHJpeDp7dmFsdWU6W119LGhlbWlzcGhlcmVMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxza3lDb2xvcjp7fSxncm91bmRDb2xvcjp7fX19LHJlY3RBcmVhTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSx3aWR0aDp7fSxoZWlnaHQ6e319fSxsdGNfMTp7dmFsdWU6bnVsbH0sbHRjXzI6e3ZhbHVlOm51bGx9fSxwb2ludHM6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBuZSgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LHNpemU6e3ZhbHVlOjF9LHNjYWxlOnt2YWx1ZToxfSxtYXA6e3ZhbHVlOm51bGx9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSxhbHBoYVRlc3Q6e3ZhbHVlOjB9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcga2l9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBuZSgxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LGNlbnRlcjp7dmFsdWU6bmV3IEx0KC41LC41KX0scm90YXRpb246e3ZhbHVlOjB9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LGFscGhhVGVzdDp7dmFsdWU6MH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBraX19fSxvaD17YmFzaWM6e3VuaWZvcm1zOkVhKFtyZS5jb21tb24scmUuc3BlY3VsYXJtYXAscmUuZW52bWFwLHJlLmFvbWFwLHJlLmxpZ2h0bWFwLHJlLmZvZ10pLHZlcnRleFNoYWRlcjpoci5tZXNoYmFzaWNfdmVydCxmcmFnbWVudFNoYWRlcjpoci5tZXNoYmFzaWNfZnJhZ30sbGFtYmVydDp7dW5pZm9ybXM6RWEoW3JlLmNvbW1vbixyZS5zcGVjdWxhcm1hcCxyZS5lbnZtYXAscmUuYW9tYXAscmUubGlnaHRtYXAscmUuZW1pc3NpdmVtYXAscmUuZm9nLHJlLmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBuZSgwKX19XSksdmVydGV4U2hhZGVyOmhyLm1lc2hsYW1iZXJ0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6aHIubWVzaGxhbWJlcnRfZnJhZ30scGhvbmc6e3VuaWZvcm1zOkVhKFtyZS5jb21tb24scmUuc3BlY3VsYXJtYXAscmUuZW52bWFwLHJlLmFvbWFwLHJlLmxpZ2h0bWFwLHJlLmVtaXNzaXZlbWFwLHJlLmJ1bXBtYXAscmUubm9ybWFsbWFwLHJlLmRpc3BsYWNlbWVudG1hcCxyZS5mb2cscmUubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IG5lKDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IG5lKDExMTg0ODEpfSxzaGluaW5lc3M6e3ZhbHVlOjMwfX1dKSx2ZXJ0ZXhTaGFkZXI6aHIubWVzaHBob25nX3ZlcnQsZnJhZ21lbnRTaGFkZXI6aHIubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3JtczpFYShbcmUuY29tbW9uLHJlLmVudm1hcCxyZS5hb21hcCxyZS5saWdodG1hcCxyZS5lbWlzc2l2ZW1hcCxyZS5idW1wbWFwLHJlLm5vcm1hbG1hcCxyZS5kaXNwbGFjZW1lbnRtYXAscmUucm91Z2huZXNzbWFwLHJlLm1ldGFsbmVzc21hcCxyZS5mb2cscmUubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IG5lKDApfSxyb3VnaG5lc3M6e3ZhbHVlOjF9LG1ldGFsbmVzczp7dmFsdWU6MH0sZW52TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6aHIubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6aHIubWVzaHBoeXNpY2FsX2ZyYWd9LHRvb246e3VuaWZvcm1zOkVhKFtyZS5jb21tb24scmUuYW9tYXAscmUubGlnaHRtYXAscmUuZW1pc3NpdmVtYXAscmUuYnVtcG1hcCxyZS5ub3JtYWxtYXAscmUuZGlzcGxhY2VtZW50bWFwLHJlLmdyYWRpZW50bWFwLHJlLmZvZyxyZS5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgbmUoMCl9fV0pLHZlcnRleFNoYWRlcjpoci5tZXNodG9vbl92ZXJ0LGZyYWdtZW50U2hhZGVyOmhyLm1lc2h0b29uX2ZyYWd9LG1hdGNhcDp7dW5pZm9ybXM6RWEoW3JlLmNvbW1vbixyZS5idW1wbWFwLHJlLm5vcm1hbG1hcCxyZS5kaXNwbGFjZW1lbnRtYXAscmUuZm9nLHttYXRjYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpoci5tZXNobWF0Y2FwX3ZlcnQsZnJhZ21lbnRTaGFkZXI6aHIubWVzaG1hdGNhcF9mcmFnfSxwb2ludHM6e3VuaWZvcm1zOkVhKFtyZS5wb2ludHMscmUuZm9nXSksdmVydGV4U2hhZGVyOmhyLnBvaW50c192ZXJ0LGZyYWdtZW50U2hhZGVyOmhyLnBvaW50c19mcmFnfSxkYXNoZWQ6e3VuaWZvcm1zOkVhKFtyZS5jb21tb24scmUuZm9nLHtzY2FsZTp7dmFsdWU6MX0sZGFzaFNpemU6e3ZhbHVlOjF9LHRvdGFsU2l6ZTp7dmFsdWU6Mn19XSksdmVydGV4U2hhZGVyOmhyLmxpbmVkYXNoZWRfdmVydCxmcmFnbWVudFNoYWRlcjpoci5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3JtczpFYShbcmUuY29tbW9uLHJlLmRpc3BsYWNlbWVudG1hcF0pLHZlcnRleFNoYWRlcjpoci5kZXB0aF92ZXJ0LGZyYWdtZW50U2hhZGVyOmhyLmRlcHRoX2ZyYWd9LG5vcm1hbDp7dW5pZm9ybXM6RWEoW3JlLmNvbW1vbixyZS5idW1wbWFwLHJlLm5vcm1hbG1hcCxyZS5kaXNwbGFjZW1lbnRtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpoci5tZXNobm9ybWFsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6aHIubWVzaG5vcm1hbF9mcmFnfSxzcHJpdGU6e3VuaWZvcm1zOkVhKFtyZS5zcHJpdGUscmUuZm9nXSksdmVydGV4U2hhZGVyOmhyLnNwcml0ZV92ZXJ0LGZyYWdtZW50U2hhZGVyOmhyLnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBraX0sdDJEOnt2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOmhyLmJhY2tncm91bmRfdmVydCxmcmFnbWVudFNoYWRlcjpoci5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOkVhKFtyZS5lbnZtYXAse29wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpoci5jdWJlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6aHIuY3ViZV9mcmFnfSxlcXVpcmVjdDp7dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpoci5lcXVpcmVjdF92ZXJ0LGZyYWdtZW50U2hhZGVyOmhyLmVxdWlyZWN0X2ZyYWd9LGRpc3RhbmNlUkdCQTp7dW5pZm9ybXM6RWEoW3JlLmNvbW1vbixyZS5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgan0sbmVhckRpc3RhbmNlOnt2YWx1ZToxfSxmYXJEaXN0YW5jZTp7dmFsdWU6MWUzfX1dKSx2ZXJ0ZXhTaGFkZXI6aHIuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6aHIuZGlzdGFuY2VSR0JBX2ZyYWd9LHNoYWRvdzp7dW5pZm9ybXM6RWEoW3JlLmxpZ2h0cyxyZS5mb2cse2NvbG9yOnt2YWx1ZTpuZXcgbmUoMCl9LG9wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpoci5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjpoci5zaGFkb3dfZnJhZ319O29oLnBoeXNpY2FsPXt1bmlmb3JtczpFYShbb2guc3RhbmRhcmQudW5pZm9ybXMse2NsZWFyY29hdDp7dmFsdWU6MH0sY2xlYXJjb2F0TWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXRSb3VnaG5lc3M6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Tm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBMdCgxLDEpfSxjbGVhcmNvYXROb3JtYWxNYXA6e3ZhbHVlOm51bGx9LHNoZWVuOnt2YWx1ZTowfSxzaGVlbkNvbG9yOnt2YWx1ZTpuZXcgbmUoMCl9LHNoZWVuQ29sb3JNYXA6e3ZhbHVlOm51bGx9LHNoZWVuUm91Z2huZXNzOnt2YWx1ZToxfSxzaGVlblJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sdHJhbnNtaXNzaW9uOnt2YWx1ZTowfSx0cmFuc21pc3Npb25NYXA6e3ZhbHVlOm51bGx9LHRyYW5zbWlzc2lvblNhbXBsZXJTaXplOnt2YWx1ZTpuZXcgTHR9LHRyYW5zbWlzc2lvblNhbXBsZXJNYXA6e3ZhbHVlOm51bGx9LHRoaWNrbmVzczp7dmFsdWU6MH0sdGhpY2tuZXNzTWFwOnt2YWx1ZTpudWxsfSxhdHRlbnVhdGlvbkRpc3RhbmNlOnt2YWx1ZTowfSxhdHRlbnVhdGlvbkNvbG9yOnt2YWx1ZTpuZXcgbmUoMCl9LHNwZWN1bGFySW50ZW5zaXR5Ont2YWx1ZToxfSxzcGVjdWxhckludGVuc2l0eU1hcDp7dmFsdWU6bnVsbH0sc3BlY3VsYXJDb2xvcjp7dmFsdWU6bmV3IG5lKDEsMSwxKX0sc3BlY3VsYXJDb2xvck1hcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOmhyLm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOmhyLm1lc2hwaHlzaWNhbF9mcmFnfTtmdW5jdGlvbiB6ZHIoZSx0LHIsbixpLG8pe2xldCBhPW5ldyBuZSgwKSxzPWk9PT0hMD8wOjEsbCxjLHU9bnVsbCxoPTAsZj1udWxsO2Z1bmN0aW9uIHAoZyxfKXtsZXQgeT0hMSx4PV8uaXNTY2VuZT09PSEwP18uYmFja2dyb3VuZDpudWxsO3gmJnguaXNUZXh0dXJlJiYoeD10LmdldCh4KSk7bGV0IGI9ZS54cixTPWIuZ2V0U2Vzc2lvbiYmYi5nZXRTZXNzaW9uKCk7UyYmUy5lbnZpcm9ubWVudEJsZW5kTW9kZT09PSJhZGRpdGl2ZSImJih4PW51bGwpLHg9PT1udWxsP2QoYSxzKTp4JiZ4LmlzQ29sb3ImJihkKHgsMSkseT0hMCksKGUuYXV0b0NsZWFyfHx5KSYmZS5jbGVhcihlLmF1dG9DbGVhckNvbG9yLGUuYXV0b0NsZWFyRGVwdGgsZS5hdXRvQ2xlYXJTdGVuY2lsKSx4JiYoeC5pc0N1YmVUZXh0dXJlfHx4Lm1hcHBpbmc9PT12TSk/KGM9PT12b2lkIDAmJihjPW5ldyBlaShuZXcgSmYoMSwxLDEpLG5ldyBzaCh7bmFtZToiQmFja2dyb3VuZEN1YmVNYXRlcmlhbCIsdW5pZm9ybXM6SzMob2guY3ViZS51bmlmb3JtcyksdmVydGV4U2hhZGVyOm9oLmN1YmUudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOm9oLmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZTpJaSxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSksYy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLGMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJ1diIpLGMub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24oQyxQLGspe3RoaXMubWF0cml4V29ybGQuY29weVBvc2l0aW9uKGsubWF0cml4V29ybGQpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5tYXRlcmlhbCwiZW52TWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMuZW52TWFwLnZhbHVlfX0pLG4udXBkYXRlKGMpKSxjLm1hdGVyaWFsLnVuaWZvcm1zLmVudk1hcC52YWx1ZT14LGMubWF0ZXJpYWwudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT14LmlzQ3ViZVRleHR1cmUmJnguaXNSZW5kZXJUYXJnZXRUZXh0dXJlPT09ITE/LTE6MSwodSE9PXh8fGghPT14LnZlcnNpb258fGYhPT1lLnRvbmVNYXBwaW5nKSYmKGMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsdT14LGg9eC52ZXJzaW9uLGY9ZS50b25lTWFwcGluZyksZy51bnNoaWZ0KGMsYy5nZW9tZXRyeSxjLm1hdGVyaWFsLDAsMCxudWxsKSk6eCYmeC5pc1RleHR1cmUmJihsPT09dm9pZCAwJiYobD1uZXcgZWkobmV3IFYwKDIsMiksbmV3IHNoKHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOkszKG9oLmJhY2tncm91bmQudW5pZm9ybXMpLHZlcnRleFNoYWRlcjpvaC5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpvaC5iYWNrZ3JvdW5kLmZyYWdtZW50U2hhZGVyLHNpZGU6STEsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLGwuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobC5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLG4udXBkYXRlKGwpKSxsLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT14LHgubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZ4LnVwZGF0ZU1hdHJpeCgpLGwubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weSh4Lm1hdHJpeCksKHUhPT14fHxoIT09eC52ZXJzaW9ufHxmIT09ZS50b25lTWFwcGluZykmJihsLm1hdGVyaWFsLm5lZWRzVXBkYXRlPSEwLHU9eCxoPXgudmVyc2lvbixmPWUudG9uZU1hcHBpbmcpLGcudW5zaGlmdChsLGwuZ2VvbWV0cnksbC5tYXRlcmlhbCwwLDAsbnVsbCkpfWZ1bmN0aW9uIGQoZyxfKXtyLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoZy5yLGcuZyxnLmIsXyxvKX1yZXR1cm57Z2V0Q2xlYXJDb2xvcjpmdW5jdGlvbigpe3JldHVybiBhfSxzZXRDbGVhckNvbG9yOmZ1bmN0aW9uKGcsXz0xKXthLnNldChnKSxzPV8sZChhLHMpfSxnZXRDbGVhckFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHNldENsZWFyQWxwaGE6ZnVuY3Rpb24oZyl7cz1nLGQoYSxzKX0scmVuZGVyOnB9fWZ1bmN0aW9uIEZkcihlLHQscixuKXtsZXQgaT1lLmdldFBhcmFtZXRlcigzNDkyMSksbz1uLmlzV2ViR0wyP251bGw6dC5nZXQoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiksYT1uLmlzV2ViR0wyfHxvIT09bnVsbCxzPXt9LGw9ZyhudWxsKSxjPWw7ZnVuY3Rpb24gdShSLEYseixVLFcpe2xldCBaPSExO2lmKGEpe2xldCBydD1kKFUseixGKTtjIT09cnQmJihjPXJ0LGYoYy5vYmplY3QpKSxaPV8oVSxXKSxaJiZ5KFUsVyl9ZWxzZXtsZXQgcnQ9Ri53aXJlZnJhbWU9PT0hMDsoYy5nZW9tZXRyeSE9PVUuaWR8fGMucHJvZ3JhbSE9PXouaWR8fGMud2lyZWZyYW1lIT09cnQpJiYoYy5nZW9tZXRyeT1VLmlkLGMucHJvZ3JhbT16LmlkLGMud2lyZWZyYW1lPXJ0LFo9ITApfVIuaXNJbnN0YW5jZWRNZXNoPT09ITAmJihaPSEwKSxXIT09bnVsbCYmci51cGRhdGUoVywzNDk2MyksWiYmKGsoUixGLHosVSksVyE9PW51bGwmJmUuYmluZEJ1ZmZlcigzNDk2MyxyLmdldChXKS5idWZmZXIpKX1mdW5jdGlvbiBoKCl7cmV0dXJuIG4uaXNXZWJHTDI/ZS5jcmVhdGVWZXJ0ZXhBcnJheSgpOm8uY3JlYXRlVmVydGV4QXJyYXlPRVMoKX1mdW5jdGlvbiBmKFIpe3JldHVybiBuLmlzV2ViR0wyP2UuYmluZFZlcnRleEFycmF5KFIpOm8uYmluZFZlcnRleEFycmF5T0VTKFIpfWZ1bmN0aW9uIHAoUil7cmV0dXJuIG4uaXNXZWJHTDI/ZS5kZWxldGVWZXJ0ZXhBcnJheShSKTpvLmRlbGV0ZVZlcnRleEFycmF5T0VTKFIpfWZ1bmN0aW9uIGQoUixGLHope2xldCBVPXoud2lyZWZyYW1lPT09ITAsVz1zW1IuaWRdO1c9PT12b2lkIDAmJihXPXt9LHNbUi5pZF09Vyk7bGV0IFo9V1tGLmlkXTtaPT09dm9pZCAwJiYoWj17fSxXW0YuaWRdPVopO2xldCBydD1aW1VdO3JldHVybiBydD09PXZvaWQgMCYmKHJ0PWcoaCgpKSxaW1VdPXJ0KSxydH1mdW5jdGlvbiBnKFIpe2xldCBGPVtdLHo9W10sVT1bXTtmb3IobGV0IFc9MDtXPGk7VysrKUZbV109MCx6W1ddPTAsVVtXXT0wO3JldHVybntnZW9tZXRyeTpudWxsLHByb2dyYW06bnVsbCx3aXJlZnJhbWU6ITEsbmV3QXR0cmlidXRlczpGLGVuYWJsZWRBdHRyaWJ1dGVzOnosYXR0cmlidXRlRGl2aXNvcnM6VSxvYmplY3Q6UixhdHRyaWJ1dGVzOnt9LGluZGV4Om51bGx9fWZ1bmN0aW9uIF8oUixGKXtsZXQgej1jLmF0dHJpYnV0ZXMsVT1SLmF0dHJpYnV0ZXMsVz0wO2ZvcihsZXQgWiBpbiBVKXtsZXQgcnQ9eltaXSxvdD1VW1pdO2lmKHJ0PT09dm9pZCAwfHxydC5hdHRyaWJ1dGUhPT1vdHx8cnQuZGF0YSE9PW90LmRhdGEpcmV0dXJuITA7VysrfXJldHVybiBjLmF0dHJpYnV0ZXNOdW0hPT1XfHxjLmluZGV4IT09Rn1mdW5jdGlvbiB5KFIsRil7bGV0IHo9e30sVT1SLmF0dHJpYnV0ZXMsVz0wO2ZvcihsZXQgWiBpbiBVKXtsZXQgcnQ9VVtaXSxvdD17fTtvdC5hdHRyaWJ1dGU9cnQscnQuZGF0YSYmKG90LmRhdGE9cnQuZGF0YSkseltaXT1vdCxXKyt9Yy5hdHRyaWJ1dGVzPXosYy5hdHRyaWJ1dGVzTnVtPVcsYy5pbmRleD1GfWZ1bmN0aW9uIHgoKXtsZXQgUj1jLm5ld0F0dHJpYnV0ZXM7Zm9yKGxldCBGPTAsej1SLmxlbmd0aDtGPHo7RisrKVJbRl09MH1mdW5jdGlvbiBiKFIpe1MoUiwwKX1mdW5jdGlvbiBTKFIsRil7bGV0IHo9Yy5uZXdBdHRyaWJ1dGVzLFU9Yy5lbmFibGVkQXR0cmlidXRlcyxXPWMuYXR0cmlidXRlRGl2aXNvcnM7eltSXT0xLFVbUl09PT0wJiYoZS5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShSKSxVW1JdPTEpLFdbUl0hPT1GJiYoKG4uaXNXZWJHTDI/ZTp0LmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKVtuLmlzV2ViR0wyPyJ2ZXJ0ZXhBdHRyaWJEaXZpc29yIjoidmVydGV4QXR0cmliRGl2aXNvckFOR0xFIl0oUixGKSxXW1JdPUYpfWZ1bmN0aW9uIEMoKXtsZXQgUj1jLm5ld0F0dHJpYnV0ZXMsRj1jLmVuYWJsZWRBdHRyaWJ1dGVzO2ZvcihsZXQgej0wLFU9Ri5sZW5ndGg7ejxVO3orKylGW3pdIT09Ult6XSYmKGUuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHopLEZbel09MCl9ZnVuY3Rpb24gUChSLEYseixVLFcsWil7bi5pc1dlYkdMMj09PSEwJiYoej09PTUxMjR8fHo9PT01MTI1KT9lLnZlcnRleEF0dHJpYklQb2ludGVyKFIsRix6LFcsWik6ZS52ZXJ0ZXhBdHRyaWJQb2ludGVyKFIsRix6LFUsVyxaKX1mdW5jdGlvbiBrKFIsRix6LFUpe2lmKG4uaXNXZWJHTDI9PT0hMSYmKFIuaXNJbnN0YW5jZWRNZXNofHxVLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpJiZ0LmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpPT09bnVsbClyZXR1cm47eCgpO2xldCBXPVUuYXR0cmlidXRlcyxaPXouZ2V0QXR0cmlidXRlcygpLHJ0PUYuZGVmYXVsdEF0dHJpYnV0ZVZhbHVlcztmb3IobGV0IG90IGluIFope2xldCBzdD1aW290XTtpZihzdC5sb2NhdGlvbj49MCl7bGV0IFN0PVdbb3RdO2lmKFN0PT09dm9pZCAwJiYob3Q9PT0iaW5zdGFuY2VNYXRyaXgiJiZSLmluc3RhbmNlTWF0cml4JiYoU3Q9Ui5pbnN0YW5jZU1hdHJpeCksb3Q9PT0iaW5zdGFuY2VDb2xvciImJlIuaW5zdGFuY2VDb2xvciYmKFN0PVIuaW5zdGFuY2VDb2xvcikpLFN0IT09dm9pZCAwKXtsZXQgYnQ9U3Qubm9ybWFsaXplZCxNdD1TdC5pdGVtU2l6ZSxsdD1yLmdldChTdCk7aWYobHQ9PT12b2lkIDApY29udGludWU7bGV0IEt0PWx0LmJ1ZmZlcixfdD1sdC50eXBlLGN0PWx0LmJ5dGVzUGVyRWxlbWVudDtpZihTdC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKXtsZXQgWD1TdC5kYXRhLGV0PVguc3RyaWRlLGR0PVN0Lm9mZnNldDtpZihYJiZYLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXIpe2ZvcihsZXQgcT0wO3E8c3QubG9jYXRpb25TaXplO3ErKylTKHN0LmxvY2F0aW9uK3EsWC5tZXNoUGVyQXR0cmlidXRlKTtSLmlzSW5zdGFuY2VkTWVzaCE9PSEwJiZVLl9tYXhJbnN0YW5jZUNvdW50PT09dm9pZCAwJiYoVS5fbWF4SW5zdGFuY2VDb3VudD1YLm1lc2hQZXJBdHRyaWJ1dGUqWC5jb3VudCl9ZWxzZSBmb3IobGV0IHE9MDtxPHN0LmxvY2F0aW9uU2l6ZTtxKyspYihzdC5sb2NhdGlvbitxKTtlLmJpbmRCdWZmZXIoMzQ5NjIsS3QpO2ZvcihsZXQgcT0wO3E8c3QubG9jYXRpb25TaXplO3ErKylQKHN0LmxvY2F0aW9uK3EsTXQvc3QubG9jYXRpb25TaXplLF90LGJ0LGV0KmN0LChkdCtNdC9zdC5sb2NhdGlvblNpemUqcSkqY3QpfWVsc2V7aWYoU3QuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGUpe2ZvcihsZXQgWD0wO1g8c3QubG9jYXRpb25TaXplO1grKylTKHN0LmxvY2F0aW9uK1gsU3QubWVzaFBlckF0dHJpYnV0ZSk7Ui5pc0luc3RhbmNlZE1lc2ghPT0hMCYmVS5fbWF4SW5zdGFuY2VDb3VudD09PXZvaWQgMCYmKFUuX21heEluc3RhbmNlQ291bnQ9U3QubWVzaFBlckF0dHJpYnV0ZSpTdC5jb3VudCl9ZWxzZSBmb3IobGV0IFg9MDtYPHN0LmxvY2F0aW9uU2l6ZTtYKyspYihzdC5sb2NhdGlvbitYKTtlLmJpbmRCdWZmZXIoMzQ5NjIsS3QpO2ZvcihsZXQgWD0wO1g8c3QubG9jYXRpb25TaXplO1grKylQKHN0LmxvY2F0aW9uK1gsTXQvc3QubG9jYXRpb25TaXplLF90LGJ0LE10KmN0LE10L3N0LmxvY2F0aW9uU2l6ZSpYKmN0KX19ZWxzZSBpZihydCE9PXZvaWQgMCl7bGV0IGJ0PXJ0W290XTtpZihidCE9PXZvaWQgMClzd2l0Y2goYnQubGVuZ3RoKXtjYXNlIDI6ZS52ZXJ0ZXhBdHRyaWIyZnYoc3QubG9jYXRpb24sYnQpO2JyZWFrO2Nhc2UgMzplLnZlcnRleEF0dHJpYjNmdihzdC5sb2NhdGlvbixidCk7YnJlYWs7Y2FzZSA0OmUudmVydGV4QXR0cmliNGZ2KHN0LmxvY2F0aW9uLGJ0KTticmVhaztkZWZhdWx0OmUudmVydGV4QXR0cmliMWZ2KHN0LmxvY2F0aW9uLGJ0KX19fX1DKCl9ZnVuY3Rpb24gTygpe0koKTtmb3IobGV0IFIgaW4gcyl7bGV0IEY9c1tSXTtmb3IobGV0IHogaW4gRil7bGV0IFU9Rlt6XTtmb3IobGV0IFcgaW4gVSlwKFVbV10ub2JqZWN0KSxkZWxldGUgVVtXXTtkZWxldGUgRlt6XX1kZWxldGUgc1tSXX19ZnVuY3Rpb24gRChSKXtpZihzW1IuaWRdPT09dm9pZCAwKXJldHVybjtsZXQgRj1zW1IuaWRdO2ZvcihsZXQgeiBpbiBGKXtsZXQgVT1GW3pdO2ZvcihsZXQgVyBpbiBVKXAoVVtXXS5vYmplY3QpLGRlbGV0ZSBVW1ddO2RlbGV0ZSBGW3pdfWRlbGV0ZSBzW1IuaWRdfWZ1bmN0aW9uIEIoUil7Zm9yKGxldCBGIGluIHMpe2xldCB6PXNbRl07aWYoeltSLmlkXT09PXZvaWQgMCljb250aW51ZTtsZXQgVT16W1IuaWRdO2ZvcihsZXQgVyBpbiBVKXAoVVtXXS5vYmplY3QpLGRlbGV0ZSBVW1ddO2RlbGV0ZSB6W1IuaWRdfX1mdW5jdGlvbiBJKCl7TCgpLGMhPT1sJiYoYz1sLGYoYy5vYmplY3QpKX1mdW5jdGlvbiBMKCl7bC5nZW9tZXRyeT1udWxsLGwucHJvZ3JhbT1udWxsLGwud2lyZWZyYW1lPSExfXJldHVybntzZXR1cDp1LHJlc2V0OkkscmVzZXREZWZhdWx0U3RhdGU6TCxkaXNwb3NlOk8scmVsZWFzZVN0YXRlc09mR2VvbWV0cnk6RCxyZWxlYXNlU3RhdGVzT2ZQcm9ncmFtOkIsaW5pdEF0dHJpYnV0ZXM6eCxlbmFibGVBdHRyaWJ1dGU6YixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpDfX1mdW5jdGlvbiBCZHIoZSx0LHIsbil7bGV0IGk9bi5pc1dlYkdMMixvO2Z1bmN0aW9uIGEoYyl7bz1jfWZ1bmN0aW9uIHMoYyx1KXtlLmRyYXdBcnJheXMobyxjLHUpLHIudXBkYXRlKHUsbywxKX1mdW5jdGlvbiBsKGMsdSxoKXtpZihoPT09MClyZXR1cm47bGV0IGYscDtpZihpKWY9ZSxwPSJkcmF3QXJyYXlzSW5zdGFuY2VkIjtlbHNlIGlmKGY9dC5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxwPSJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLGY9PT1udWxsKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEJ1ZmZlclJlbmRlcmVyOiB1c2luZyBUSFJFRS5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSBidXQgaGFyZHdhcmUgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb24gQU5HTEVfaW5zdGFuY2VkX2FycmF5cy4iKTtyZXR1cm59ZltwXShvLGMsdSxoKSxyLnVwZGF0ZSh1LG8saCl9dGhpcy5zZXRNb2RlPWEsdGhpcy5yZW5kZXI9cyx0aGlzLnJlbmRlckluc3RhbmNlcz1sfWZ1bmN0aW9uIEhkcihlLHQscil7bGV0IG47ZnVuY3Rpb24gaSgpe2lmKG4hPT12b2lkIDApcmV0dXJuIG47aWYodC5oYXMoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpPT09ITApe2xldCBrPXQuZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtuPWUuZ2V0UGFyYW1ldGVyKGsuTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKX1lbHNlIG49MDtyZXR1cm4gbn1mdW5jdGlvbiBvKGspe2lmKGs9PT0iaGlnaHAiKXtpZihlLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMywzNjMzOCkucHJlY2lzaW9uPjAmJmUuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMyLDM2MzM4KS5wcmVjaXNpb24+MClyZXR1cm4iaGlnaHAiO2s9Im1lZGl1bXAifXJldHVybiBrPT09Im1lZGl1bXAiJiZlLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMywzNjMzNykucHJlY2lzaW9uPjAmJmUuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMyLDM2MzM3KS5wcmVjaXNpb24+MD8ibWVkaXVtcCI6Imxvd3AifWxldCBhPXR5cGVvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0IT0idW5kZWZpbmVkIiYmZSBpbnN0YW5jZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8fHR5cGVvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dCE9InVuZGVmaW5lZCImJmUgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dCxzPXIucHJlY2lzaW9uIT09dm9pZCAwP3IucHJlY2lzaW9uOiJoaWdocCIsbD1vKHMpO2whPT1zJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiIscywibm90IHN1cHBvcnRlZCwgdXNpbmciLGwsImluc3RlYWQuIikscz1sKTtsZXQgYz1hfHx0LmhhcygiV0VCR0xfZHJhd19idWZmZXJzIiksdT1yLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI9PT0hMCxoPWUuZ2V0UGFyYW1ldGVyKDM0OTMwKSxmPWUuZ2V0UGFyYW1ldGVyKDM1NjYwKSxwPWUuZ2V0UGFyYW1ldGVyKDMzNzkpLGQ9ZS5nZXRQYXJhbWV0ZXIoMzQwNzYpLGc9ZS5nZXRQYXJhbWV0ZXIoMzQ5MjEpLF89ZS5nZXRQYXJhbWV0ZXIoMzYzNDcpLHk9ZS5nZXRQYXJhbWV0ZXIoMzYzNDgpLHg9ZS5nZXRQYXJhbWV0ZXIoMzYzNDkpLGI9Zj4wLFM9YXx8dC5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0IiksQz1iJiZTLFA9YT9lLmdldFBhcmFtZXRlcigzNjE4Myk6MDtyZXR1cm57aXNXZWJHTDI6YSxkcmF3QnVmZmVyczpjLGdldE1heEFuaXNvdHJvcHk6aSxnZXRNYXhQcmVjaXNpb246byxwcmVjaXNpb246cyxsb2dhcml0aG1pY0RlcHRoQnVmZmVyOnUsbWF4VGV4dHVyZXM6aCxtYXhWZXJ0ZXhUZXh0dXJlczpmLG1heFRleHR1cmVTaXplOnAsbWF4Q3ViZW1hcFNpemU6ZCxtYXhBdHRyaWJ1dGVzOmcsbWF4VmVydGV4VW5pZm9ybXM6XyxtYXhWYXJ5aW5nczp5LG1heEZyYWdtZW50VW5pZm9ybXM6eCx2ZXJ0ZXhUZXh0dXJlczpiLGZsb2F0RnJhZ21lbnRUZXh0dXJlczpTLGZsb2F0VmVydGV4VGV4dHVyZXM6QyxtYXhTYW1wbGVzOlB9fWZ1bmN0aW9uIFZkcihlKXtsZXQgdD10aGlzLHI9bnVsbCxuPTAsaT0hMSxvPSExLGE9bmV3IGpjLHM9bmV3IGtpLGw9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O3RoaXMudW5pZm9ybT1sLHRoaXMubnVtUGxhbmVzPTAsdGhpcy5udW1JbnRlcnNlY3Rpb249MCx0aGlzLmluaXQ9ZnVuY3Rpb24oaCxmLHApe2xldCBkPWgubGVuZ3RoIT09MHx8Znx8biE9PTB8fGk7cmV0dXJuIGk9ZixyPXUoaCxwLDApLG49aC5sZW5ndGgsZH0sdGhpcy5iZWdpblNoYWRvd3M9ZnVuY3Rpb24oKXtvPSEwLHUobnVsbCl9LHRoaXMuZW5kU2hhZG93cz1mdW5jdGlvbigpe289ITEsYygpfSx0aGlzLnNldFN0YXRlPWZ1bmN0aW9uKGgsZixwKXtsZXQgZD1oLmNsaXBwaW5nUGxhbmVzLGc9aC5jbGlwSW50ZXJzZWN0aW9uLF89aC5jbGlwU2hhZG93cyx5PWUuZ2V0KGgpO2lmKCFpfHxkPT09bnVsbHx8ZC5sZW5ndGg9PT0wfHxvJiYhXylvP3UobnVsbCk6YygpO2Vsc2V7bGV0IHg9bz8wOm4sYj14KjQsUz15LmNsaXBwaW5nU3RhdGV8fG51bGw7bC52YWx1ZT1TLFM9dShkLGYsYixwKTtmb3IobGV0IEM9MDtDIT09YjsrK0MpU1tDXT1yW0NdO3kuY2xpcHBpbmdTdGF0ZT1TLHRoaXMubnVtSW50ZXJzZWN0aW9uPWc/dGhpcy5udW1QbGFuZXM6MCx0aGlzLm51bVBsYW5lcys9eH19O2Z1bmN0aW9uIGMoKXtsLnZhbHVlIT09ciYmKGwudmFsdWU9cixsLm5lZWRzVXBkYXRlPW4+MCksdC5udW1QbGFuZXM9bix0Lm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIHUoaCxmLHAsZCl7bGV0IGc9aCE9PW51bGw/aC5sZW5ndGg6MCxfPW51bGw7aWYoZyE9PTApe2lmKF89bC52YWx1ZSxkIT09ITB8fF89PT1udWxsKXtsZXQgeT1wK2cqNCx4PWYubWF0cml4V29ybGRJbnZlcnNlO3MuZ2V0Tm9ybWFsTWF0cml4KHgpLChfPT09bnVsbHx8Xy5sZW5ndGg8eSkmJihfPW5ldyBGbG9hdDMyQXJyYXkoeSkpO2ZvcihsZXQgYj0wLFM9cDtiIT09ZzsrK2IsUys9NClhLmNvcHkoaFtiXSkuYXBwbHlNYXRyaXg0KHgscyksYS5ub3JtYWwudG9BcnJheShfLFMpLF9bUyszXT1hLmNvbnN0YW50fWwudmFsdWU9XyxsLm5lZWRzVXBkYXRlPSEwfXJldHVybiB0Lm51bVBsYW5lcz1nLHQubnVtSW50ZXJzZWN0aW9uPTAsX319ZnVuY3Rpb24gVWRyKGUpe2xldCB0PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHIoYSxzKXtyZXR1cm4gcz09PXFQP2EubWFwcGluZz1ueDpzPT09R1AmJihhLm1hcHBpbmc9aXgpLGF9ZnVuY3Rpb24gbihhKXtpZihhJiZhLmlzVGV4dHVyZSYmYS5pc1JlbmRlclRhcmdldFRleHR1cmU9PT0hMSl7bGV0IHM9YS5tYXBwaW5nO2lmKHM9PT1xUHx8cz09PUdQKWlmKHQuaGFzKGEpKXtsZXQgbD10LmdldChhKS50ZXh0dXJlO3JldHVybiByKGwsYS5tYXBwaW5nKX1lbHNle2xldCBsPWEuaW1hZ2U7aWYobCYmbC5oZWlnaHQ+MCl7bGV0IGM9bmV3IEozKGwuaGVpZ2h0LzIpO3JldHVybiBjLmZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKGUsYSksdC5zZXQoYSxjKSxhLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGkpLHIoYy50ZXh0dXJlLGEubWFwcGluZyl9ZWxzZSByZXR1cm4gbnVsbH19cmV0dXJuIGF9ZnVuY3Rpb24gaShhKXtsZXQgcz1hLnRhcmdldDtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGkpO2xldCBsPXQuZ2V0KHMpO2whPT12b2lkIDAmJih0LmRlbGV0ZShzKSxsLmRpc3Bvc2UoKSl9ZnVuY3Rpb24gbygpe3Q9bmV3IFdlYWtNYXB9cmV0dXJue2dldDpuLGRpc3Bvc2U6b319dmFyIEQxPWNsYXNzIGV4dGVuZHMgUjF7Y29uc3RydWN0b3IodD0tMSxyPTEsbj0xLGk9LTEsbz0uMSxhPTJlMyl7c3VwZXIoKSx0aGlzLnR5cGU9Ik9ydGhvZ3JhcGhpY0NhbWVyYSIsdGhpcy56b29tPTEsdGhpcy52aWV3PW51bGwsdGhpcy5sZWZ0PXQsdGhpcy5yaWdodD1yLHRoaXMudG9wPW4sdGhpcy5ib3R0b209aSx0aGlzLm5lYXI9byx0aGlzLmZhcj1hLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNvcHkodCxyKXtyZXR1cm4gc3VwZXIuY29weSh0LHIpLHRoaXMubGVmdD10LmxlZnQsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMudG9wPXQudG9wLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy56b29tPXQuem9vbSx0aGlzLnZpZXc9dC52aWV3PT09bnVsbD9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzfXNldFZpZXdPZmZzZXQodCxyLG4saSxvLGEpe3RoaXMudmlldz09PW51bGwmJih0aGlzLnZpZXc9e2VuYWJsZWQ6ITAsZnVsbFdpZHRoOjEsZnVsbEhlaWdodDoxLG9mZnNldFg6MCxvZmZzZXRZOjAsd2lkdGg6MSxoZWlnaHQ6MX0pLHRoaXMudmlldy5lbmFibGVkPSEwLHRoaXMudmlldy5mdWxsV2lkdGg9dCx0aGlzLnZpZXcuZnVsbEhlaWdodD1yLHRoaXMudmlldy5vZmZzZXRYPW4sdGhpcy52aWV3Lm9mZnNldFk9aSx0aGlzLnZpZXcud2lkdGg9byx0aGlzLnZpZXcuaGVpZ2h0PWEsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Y2xlYXJWaWV3T2Zmc2V0KCl7dGhpcy52aWV3IT09bnVsbCYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX11cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl7bGV0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS8oMip0aGlzLnpvb20pLHI9KHRoaXMudG9wLXRoaXMuYm90dG9tKS8oMip0aGlzLnpvb20pLG49KHRoaXMucmlnaHQrdGhpcy5sZWZ0KS8yLGk9KHRoaXMudG9wK3RoaXMuYm90dG9tKS8yLG89bi10LGE9bit0LHM9aStyLGw9aS1yO2lmKHRoaXMudmlldyE9PW51bGwmJnRoaXMudmlldy5lbmFibGVkKXtsZXQgYz0odGhpcy5yaWdodC10aGlzLmxlZnQpL3RoaXMudmlldy5mdWxsV2lkdGgvdGhpcy56b29tLHU9KHRoaXMudG9wLXRoaXMuYm90dG9tKS90aGlzLnZpZXcuZnVsbEhlaWdodC90aGlzLnpvb207bys9Yyp0aGlzLnZpZXcub2Zmc2V0WCxhPW8rYyp0aGlzLnZpZXcud2lkdGgscy09dSp0aGlzLnZpZXcub2Zmc2V0WSxsPXMtdSp0aGlzLnZpZXcuaGVpZ2h0fXRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlT3J0aG9ncmFwaGljKG8sYSxzLGwsdGhpcy5uZWFyLHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX10b0pTT04odCl7bGV0IHI9c3VwZXIudG9KU09OKHQpO3JldHVybiByLm9iamVjdC56b29tPXRoaXMuem9vbSxyLm9iamVjdC5sZWZ0PXRoaXMubGVmdCxyLm9iamVjdC5yaWdodD10aGlzLnJpZ2h0LHIub2JqZWN0LnRvcD10aGlzLnRvcCxyLm9iamVjdC5ib3R0b209dGhpcy5ib3R0b20sci5vYmplY3QubmVhcj10aGlzLm5lYXIsci5vYmplY3QuZmFyPXRoaXMuZmFyLHRoaXMudmlldyE9PW51bGwmJihyLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSkscn19O0QxLnByb3RvdHlwZS5pc09ydGhvZ3JhcGhpY0NhbWVyYT0hMDt2YXIgVTA9Y2xhc3MgZXh0ZW5kcyBzaHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnR5cGU9IlJhd1NoYWRlck1hdGVyaWFsIn19O1UwLnByb3RvdHlwZS5pc1Jhd1NoYWRlck1hdGVyaWFsPSEwO3ZhciBVMz00LEYwPTgsWGY9TWF0aC5wb3coMixGMCksTmZlPVsuMTI1LC4yMTUsLjM1LC40NDYsLjUyNiwuNTgyXSxEZmU9RjAtVTMrMStOZmUubGVuZ3RoLEwzPTIwLHV1dD1uZXcgRDEse19sb2RQbGFuZXM6TFAsX3NpemVMb2RzOnh1ZSxfc2lnbWFzOlRWfT1xZHIoKSxidWU9bmV3IG5lLGh1dD1udWxsLFMxPSgxK01hdGguc3FydCg1KSkvMixrMz0xL1MxLHd1ZT1bbmV3IGooMSwxLDEpLG5ldyBqKC0xLDEsMSksbmV3IGooMSwxLC0xKSxuZXcgaigtMSwxLC0xKSxuZXcgaigwLFMxLGszKSxuZXcgaigwLFMxLC1rMyksbmV3IGooazMsMCxTMSksbmV3IGooLWszLDAsUzEpLG5ldyBqKFMxLGszLDApLG5ldyBqKC1TMSxrMywwKV0sSlA9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD1udWxsLHRoaXMuX2JsdXJNYXRlcmlhbD1HZHIoTDMpLHRoaXMuX2VxdWlyZWN0U2hhZGVyPW51bGwsdGhpcy5fY3ViZW1hcFNoYWRlcj1udWxsLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9ibHVyTWF0ZXJpYWwpfWZyb21TY2VuZSh0LHI9MCxuPS4xLGk9MTAwKXtodXQ9dGhpcy5fcmVuZGVyZXIuZ2V0UmVuZGVyVGFyZ2V0KCk7bGV0IG89dGhpcy5fYWxsb2NhdGVUYXJnZXRzKCk7cmV0dXJuIHRoaXMuX3NjZW5lVG9DdWJlVVYodCxuLGksbykscj4wJiZ0aGlzLl9ibHVyKG8sMCwwLHIpLHRoaXMuX2FwcGx5UE1SRU0obyksdGhpcy5fY2xlYW51cChvKSxvfWZyb21FcXVpcmVjdGFuZ3VsYXIodCxyPW51bGwpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0LHIpfWZyb21DdWJlbWFwKHQscj1udWxsKXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCxyKX1jb21waWxlQ3ViZW1hcFNoYWRlcigpe3RoaXMuX2N1YmVtYXBTaGFkZXI9PT1udWxsJiYodGhpcy5fY3ViZW1hcFNoYWRlcj1FdWUoKSx0aGlzLl9jb21waWxlTWF0ZXJpYWwodGhpcy5fY3ViZW1hcFNoYWRlcikpfWNvbXBpbGVFcXVpcmVjdGFuZ3VsYXJTaGFkZXIoKXt0aGlzLl9lcXVpcmVjdFNoYWRlcj09PW51bGwmJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1NdWUoKSx0aGlzLl9jb21waWxlTWF0ZXJpYWwodGhpcy5fZXF1aXJlY3RTaGFkZXIpKX1kaXNwb3NlKCl7dGhpcy5fYmx1ck1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldCE9PW51bGwmJnRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0LmRpc3Bvc2UoKSx0aGlzLl9jdWJlbWFwU2hhZGVyIT09bnVsbCYmdGhpcy5fY3ViZW1hcFNoYWRlci5kaXNwb3NlKCksdGhpcy5fZXF1aXJlY3RTaGFkZXIhPT1udWxsJiZ0aGlzLl9lcXVpcmVjdFNoYWRlci5kaXNwb3NlKCk7Zm9yKGxldCB0PTA7dDxMUC5sZW5ndGg7dCsrKUxQW3RdLmRpc3Bvc2UoKX1fY2xlYW51cCh0KXt0aGlzLl9yZW5kZXJlci5zZXRSZW5kZXJUYXJnZXQoaHV0KSx0LnNjaXNzb3JUZXN0PSExLENWKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpfV9mcm9tVGV4dHVyZSh0LHIpe2h1dD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtsZXQgbj1yfHx0aGlzLl9hbGxvY2F0ZVRhcmdldHModCk7cmV0dXJuIHRoaXMuX3RleHR1cmVUb0N1YmVVVih0LG4pLHRoaXMuX2FwcGx5UE1SRU0obiksdGhpcy5fY2xlYW51cChuKSxufV9hbGxvY2F0ZVRhcmdldHModCl7bGV0IHI9e21hZ0ZpbHRlcjpvaSxtaW5GaWx0ZXI6b2ksZ2VuZXJhdGVNaXBtYXBzOiExLHR5cGU6QzEsZm9ybWF0OkpvLGVuY29kaW5nOlFkLGRlcHRoQnVmZmVyOiExfSxuPVN1ZShyKTtyZXR1cm4gbi5kZXB0aEJ1ZmZlcj0hdCx0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD09PW51bGwmJih0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD1TdWUocikpLG59X2NvbXBpbGVNYXRlcmlhbCh0KXtsZXQgcj1uZXcgZWkoTFBbMF0sdCk7dGhpcy5fcmVuZGVyZXIuY29tcGlsZShyLHV1dCl9X3NjZW5lVG9DdWJlVVYodCxyLG4saSl7bGV0IHM9bmV3IFZpKDkwLDEscixuKSxsPVsxLC0xLDEsMSwxLDFdLGM9WzEsMSwxLC0xLC0xLC0xXSx1PXRoaXMuX3JlbmRlcmVyLGg9dS5hdXRvQ2xlYXIsZj11LnRvbmVNYXBwaW5nO3UuZ2V0Q2xlYXJDb2xvcihidWUpLHUudG9uZU1hcHBpbmc9S2QsdS5hdXRvQ2xlYXI9ITE7bGV0IHA9bmV3IGFoKHtuYW1lOiJQTVJFTS5CYWNrZ3JvdW5kIixzaWRlOklpLGRlcHRoV3JpdGU6ITEsZGVwdGhUZXN0OiExfSksZD1uZXcgZWkobmV3IEpmLHApLGc9ITEsXz10LmJhY2tncm91bmQ7Xz9fLmlzQ29sb3ImJihwLmNvbG9yLmNvcHkoXyksdC5iYWNrZ3JvdW5kPW51bGwsZz0hMCk6KHAuY29sb3IuY29weShidWUpLGc9ITApO2ZvcihsZXQgeT0wO3k8Njt5Kyspe2xldCB4PXklMzt4PT09MD8ocy51cC5zZXQoMCxsW3ldLDApLHMubG9va0F0KGNbeV0sMCwwKSk6eD09PTE/KHMudXAuc2V0KDAsMCxsW3ldKSxzLmxvb2tBdCgwLGNbeV0sMCkpOihzLnVwLnNldCgwLGxbeV0sMCkscy5sb29rQXQoMCwwLGNbeV0pKSxDVihpLHgqWGYseT4yP1hmOjAsWGYsWGYpLHUuc2V0UmVuZGVyVGFyZ2V0KGkpLGcmJnUucmVuZGVyKGQscyksdS5yZW5kZXIodCxzKX1kLmdlb21ldHJ5LmRpc3Bvc2UoKSxkLm1hdGVyaWFsLmRpc3Bvc2UoKSx1LnRvbmVNYXBwaW5nPWYsdS5hdXRvQ2xlYXI9aCx0LmJhY2tncm91bmQ9X31fdGV4dHVyZVRvQ3ViZVVWKHQscil7bGV0IG49dGhpcy5fcmVuZGVyZXIsaT10Lm1hcHBpbmc9PT1ueHx8dC5tYXBwaW5nPT09aXg7aT8odGhpcy5fY3ViZW1hcFNoYWRlcj09PW51bGwmJih0aGlzLl9jdWJlbWFwU2hhZGVyPUV1ZSgpKSx0aGlzLl9jdWJlbWFwU2hhZGVyLnVuaWZvcm1zLmZsaXBFbnZNYXAudmFsdWU9dC5pc1JlbmRlclRhcmdldFRleHR1cmU9PT0hMT8tMToxKTp0aGlzLl9lcXVpcmVjdFNoYWRlcj09PW51bGwmJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1NdWUoKSk7bGV0IG89aT90aGlzLl9jdWJlbWFwU2hhZGVyOnRoaXMuX2VxdWlyZWN0U2hhZGVyLGE9bmV3IGVpKExQWzBdLG8pLHM9by51bmlmb3JtcztzLmVudk1hcC52YWx1ZT10LGl8fHMudGV4ZWxTaXplLnZhbHVlLnNldCgxL3QuaW1hZ2Uud2lkdGgsMS90LmltYWdlLmhlaWdodCksQ1YociwwLDAsMypYZiwyKlhmKSxuLnNldFJlbmRlclRhcmdldChyKSxuLnJlbmRlcihhLHV1dCl9X2FwcGx5UE1SRU0odCl7bGV0IHI9dGhpcy5fcmVuZGVyZXIsbj1yLmF1dG9DbGVhcjtyLmF1dG9DbGVhcj0hMTtmb3IobGV0IGk9MTtpPERmZTtpKyspe2xldCBvPU1hdGguc3FydChUVltpXSpUVltpXS1UVltpLTFdKlRWW2ktMV0pLGE9d3VlWyhpLTEpJXd1ZS5sZW5ndGhdO3RoaXMuX2JsdXIodCxpLTEsaSxvLGEpfXIuYXV0b0NsZWFyPW59X2JsdXIodCxyLG4saSxvKXtsZXQgYT10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldDt0aGlzLl9oYWxmQmx1cih0LGEscixuLGksImxhdGl0dWRpbmFsIixvKSx0aGlzLl9oYWxmQmx1cihhLHQsbixuLGksImxvbmdpdHVkaW5hbCIsbyl9X2hhbGZCbHVyKHQscixuLGksbyxhLHMpe2xldCBsPXRoaXMuX3JlbmRlcmVyLGM9dGhpcy5fYmx1ck1hdGVyaWFsO2EhPT0ibGF0aXR1ZGluYWwiJiZhIT09ImxvbmdpdHVkaW5hbCImJmNvbnNvbGUuZXJyb3IoImJsdXIgZGlyZWN0aW9uIG11c3QgYmUgZWl0aGVyIGxhdGl0dWRpbmFsIG9yIGxvbmdpdHVkaW5hbCEiKTtsZXQgdT0zLGg9bmV3IGVpKExQW2ldLGMpLGY9Yy51bmlmb3JtcyxwPXh1ZVtuXS0xLGQ9aXNGaW5pdGUobyk/TWF0aC5QSS8oMipwKToyKk1hdGguUEkvKDIqTDMtMSksZz1vL2QsXz1pc0Zpbml0ZShvKT8xK01hdGguZmxvb3IodSpnKTpMMztfPkwzJiZjb25zb2xlLndhcm4oYHNpZ21hUmFkaWFucywgJHtvfSwgaXMgdG9vIGxhcmdlIGFuZCB3aWxsIGNsaXAsIGFzIGl0IHJlcXVlc3RlZCAke199IHNhbXBsZXMgd2hlbiB0aGUgbWF4aW11bSBpcyBzZXQgdG8gJHtMM31gKTtsZXQgeT1bXSx4PTA7Zm9yKGxldCBQPTA7UDxMMzsrK1Ape2xldCBrPVAvZyxPPU1hdGguZXhwKC1rKmsvMik7eS5wdXNoKE8pLFA9PT0wP3grPU86UDxfJiYoeCs9MipPKX1mb3IobGV0IFA9MDtQPHkubGVuZ3RoO1ArKyl5W1BdPXlbUF0veDtmLmVudk1hcC52YWx1ZT10LnRleHR1cmUsZi5zYW1wbGVzLnZhbHVlPV8sZi53ZWlnaHRzLnZhbHVlPXksZi5sYXRpdHVkaW5hbC52YWx1ZT1hPT09ImxhdGl0dWRpbmFsIixzJiYoZi5wb2xlQXhpcy52YWx1ZT1zKSxmLmRUaGV0YS52YWx1ZT1kLGYubWlwSW50LnZhbHVlPUYwLW47bGV0IGI9eHVlW2ldLFM9MypNYXRoLm1heCgwLFhmLTIqYiksQz0oaT09PTA/MDoyKlhmKSsyKmIqKGk+RjAtVTM/aS1GMCtVMzowKTtDVihyLFMsQywzKmIsMipiKSxsLnNldFJlbmRlclRhcmdldChyKSxsLnJlbmRlcihoLHV1dCl9fTtmdW5jdGlvbiBxZHIoKXtsZXQgZT1bXSx0PVtdLHI9W10sbj1GMDtmb3IobGV0IGk9MDtpPERmZTtpKyspe2xldCBvPU1hdGgucG93KDIsbik7dC5wdXNoKG8pO2xldCBhPTEvbztpPkYwLVUzP2E9TmZlW2ktRjArVTMtMV06aT09PTAmJihhPTApLHIucHVzaChhKTtsZXQgcz0xLyhvLTEpLGw9LXMvMixjPTErcy8yLHU9W2wsbCxjLGwsYyxjLGwsbCxjLGMsbCxjXSxoPTYsZj02LHA9MyxkPTIsZz0xLF89bmV3IEZsb2F0MzJBcnJheShwKmYqaCkseT1uZXcgRmxvYXQzMkFycmF5KGQqZipoKSx4PW5ldyBGbG9hdDMyQXJyYXkoZypmKmgpO2ZvcihsZXQgUz0wO1M8aDtTKyspe2xldCBDPVMlMyoyLzMtMSxQPVM+Mj8wOi0xLGs9W0MsUCwwLEMrMi8zLFAsMCxDKzIvMyxQKzEsMCxDLFAsMCxDKzIvMyxQKzEsMCxDLFArMSwwXTtfLnNldChrLHAqZipTKSx5LnNldCh1LGQqZipTKTtsZXQgTz1bUyxTLFMsUyxTLFNdO3guc2V0KE8sZypmKlMpfWxldCBiPW5ldyBQZTtiLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBKZShfLHApKSxiLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBKZSh5LGQpKSxiLnNldEF0dHJpYnV0ZSgiZmFjZUluZGV4IixuZXcgSmUoeCxnKSksZS5wdXNoKGIpLG4+VTMmJm4tLX1yZXR1cm57X2xvZFBsYW5lczplLF9zaXplTG9kczp0LF9zaWdtYXM6cn19ZnVuY3Rpb24gU3VlKGUpe2xldCB0PW5ldyBjcygzKlhmLDMqWGYsZSk7cmV0dXJuIHQudGV4dHVyZS5tYXBwaW5nPXZNLHQudGV4dHVyZS5uYW1lPSJQTVJFTS5jdWJlVXYiLHQuc2Npc3NvclRlc3Q9ITAsdH1mdW5jdGlvbiBDVihlLHQscixuLGkpe2Uudmlld3BvcnQuc2V0KHQscixuLGkpLGUuc2Npc3Nvci5zZXQodCxyLG4saSl9ZnVuY3Rpb24gR2RyKGUpe2xldCB0PW5ldyBGbG9hdDMyQXJyYXkoZSkscj1uZXcgaigwLDEsMCk7cmV0dXJuIG5ldyBVMCh7bmFtZToiU3BoZXJpY2FsR2F1c3NpYW5CbHVyIixkZWZpbmVzOntuOmV9LHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHNhbXBsZXM6e3ZhbHVlOjF9LHdlaWdodHM6e3ZhbHVlOnR9LGxhdGl0dWRpbmFsOnt2YWx1ZTohMX0sZFRoZXRhOnt2YWx1ZTowfSxtaXBJbnQ6e3ZhbHVlOjB9LHBvbGVBeGlzOnt2YWx1ZTpyfX0sdmVydGV4U2hhZGVyOlJodCgpLGZyYWdtZW50U2hhZGVyOmAKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CgoJCQl2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjsKCgkJCXVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDsKCQkJdW5pZm9ybSBpbnQgc2FtcGxlczsKCQkJdW5pZm9ybSBmbG9hdCB3ZWlnaHRzWyBuIF07CgkJCXVuaWZvcm0gYm9vbCBsYXRpdHVkaW5hbDsKCQkJdW5pZm9ybSBmbG9hdCBkVGhldGE7CgkJCXVuaWZvcm0gZmxvYXQgbWlwSW50OwoJCQl1bmlmb3JtIHZlYzMgcG9sZUF4aXM7CgoJCQkjZGVmaW5lIEVOVk1BUF9UWVBFX0NVQkVfVVYKCQkJI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4KCgkJCXZlYzMgZ2V0U2FtcGxlKCBmbG9hdCB0aGV0YSwgdmVjMyBheGlzICkgewoKCQkJCWZsb2F0IGNvc1RoZXRhID0gY29zKCB0aGV0YSApOwoJCQkJLy8gUm9kcmlndWVzJyBheGlzLWFuZ2xlIHJvdGF0aW9uCgkJCQl2ZWMzIHNhbXBsZURpcmVjdGlvbiA9IHZPdXRwdXREaXJlY3Rpb24gKiBjb3NUaGV0YQoJCQkJCSsgY3Jvc3MoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqIHNpbiggdGhldGEgKQoJCQkJCSsgYXhpcyAqIGRvdCggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogKCAxLjAgLSBjb3NUaGV0YSApOwoKCQkJCXJldHVybiBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXJlY3Rpb24sIG1pcEludCApOwoKCQkJfQoKCQkJdm9pZCBtYWluKCkgewoKCQkJCXZlYzMgYXhpcyA9IGxhdGl0dWRpbmFsID8gcG9sZUF4aXMgOiBjcm9zcyggcG9sZUF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKTsKCgkJCQlpZiAoIGFsbCggZXF1YWwoIGF4aXMsIHZlYzMoIDAuMCApICkgKSApIHsKCgkJCQkJYXhpcyA9IHZlYzMoIHZPdXRwdXREaXJlY3Rpb24ueiwgMC4wLCAtIHZPdXRwdXREaXJlY3Rpb24ueCApOwoKCQkJCX0KCgkJCQlheGlzID0gbm9ybWFsaXplKCBheGlzICk7CgoJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7CgkJCQlnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIDAgXSAqIGdldFNhbXBsZSggMC4wLCBheGlzICk7CgoJCQkJZm9yICggaW50IGkgPSAxOyBpIDwgbjsgaSsrICkgewoKCQkJCQlpZiAoIGkgPj0gc2FtcGxlcyApIHsKCgkJCQkJCWJyZWFrOwoKCQkJCQl9CgoJCQkJCWZsb2F0IHRoZXRhID0gZFRoZXRhICogZmxvYXQoIGkgKTsKCQkJCQlnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggLTEuMCAqIHRoZXRhLCBheGlzICk7CgkJCQkJZ2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIHRoZXRhLCBheGlzICk7CgoJCQkJfQoKCQkJfQoJCWAsYmxlbmRpbmc6JGQsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITF9KX1mdW5jdGlvbiBNdWUoKXtsZXQgZT1uZXcgTHQoMSwxKTtyZXR1cm4gbmV3IFUwKHtuYW1lOiJFcXVpcmVjdGFuZ3VsYXJUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sdGV4ZWxTaXplOnt2YWx1ZTplfX0sdmVydGV4U2hhZGVyOlJodCgpLGZyYWdtZW50U2hhZGVyOmAKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CgoJCQl2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjsKCgkJCXVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDsKCQkJdW5pZm9ybSB2ZWMyIHRleGVsU2l6ZTsKCgkJCSNpbmNsdWRlIDxjb21tb24+CgoJCQl2b2lkIG1haW4oKSB7CgoJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7CgoJCQkJdmVjMyBvdXRwdXREaXJlY3Rpb24gPSBub3JtYWxpemUoIHZPdXRwdXREaXJlY3Rpb24gKTsKCQkJCXZlYzIgdXYgPSBlcXVpcmVjdFV2KCBvdXRwdXREaXJlY3Rpb24gKTsKCgkJCQl2ZWMyIGYgPSBmcmFjdCggdXYgLyB0ZXhlbFNpemUgLSAwLjUgKTsKCQkJCXV2IC09IGYgKiB0ZXhlbFNpemU7CgkJCQl2ZWMzIHRsID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCQkJCXV2LnggKz0gdGV4ZWxTaXplLng7CgkJCQl2ZWMzIHRyID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCQkJCXV2LnkgKz0gdGV4ZWxTaXplLnk7CgkJCQl2ZWMzIGJyID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCQkJCXV2LnggLT0gdGV4ZWxTaXplLng7CgkJCQl2ZWMzIGJsID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCgkJCQl2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApOwoJCQkJdmVjMyBibSA9IG1peCggYmwsIGJyLCBmLnggKTsKCQkJCWdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIHRtLCBibSwgZi55ICk7CgoJCQl9CgkJYCxibGVuZGluZzokZCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIEV1ZSgpe3JldHVybiBuZXcgVTAoe25hbWU6IkN1YmVtYXBUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9fSx2ZXJ0ZXhTaGFkZXI6Umh0KCksZnJhZ21lbnRTaGFkZXI6YAoKCQkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKCgkJCXVuaWZvcm0gZmxvYXQgZmxpcEVudk1hcDsKCgkJCXZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uOwoKCQkJdW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7CgoJCQl2b2lkIG1haW4oKSB7CgoJCQkJZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggZmxpcEVudk1hcCAqIHZPdXRwdXREaXJlY3Rpb24ueCwgdk91dHB1dERpcmVjdGlvbi55eiApICk7CgoJCQl9CgkJYCxibGVuZGluZzokZCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIFJodCgpe3JldHVybmAKCgkJcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7CgkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OwoKCQlhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjsKCQlhdHRyaWJ1dGUgdmVjMiB1djsKCQlhdHRyaWJ1dGUgZmxvYXQgZmFjZUluZGV4OwoKCQl2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjsKCgkJLy8gUkggY29vcmRpbmF0ZSBzeXN0ZW07IFBNUkVNIGZhY2UtaW5kZXhpbmcgY29udmVudGlvbgoJCXZlYzMgZ2V0RGlyZWN0aW9uKCB2ZWMyIHV2LCBmbG9hdCBmYWNlICkgewoKCQkJdXYgPSAyLjAgKiB1diAtIDEuMDsKCgkJCXZlYzMgZGlyZWN0aW9uID0gdmVjMyggdXYsIDEuMCApOwoKCQkJaWYgKCBmYWNlID09IDAuMCApIHsKCgkJCQlkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OyAvLyAoIDEsIHYsIHUgKSBwb3MgeAoKCQkJfSBlbHNlIGlmICggZmFjZSA9PSAxLjAgKSB7CgoJCQkJZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTsKCQkJCWRpcmVjdGlvbi54eiAqPSAtMS4wOyAvLyAoIC11LCAxLCAtdiApIHBvcyB5CgoJCQl9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHsKCgkJCQlkaXJlY3Rpb24ueCAqPSAtMS4wOyAvLyAoIC11LCB2LCAxICkgcG9zIHoKCgkJCX0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkgewoKCQkJCWRpcmVjdGlvbiA9IGRpcmVjdGlvbi56eXg7CgkJCQlkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtMSwgdiwgLXUgKSBuZWcgeAoKCQkJfSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7CgoJCQkJZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTsKCQkJCWRpcmVjdGlvbi54eSAqPSAtMS4wOyAvLyAoIC11LCAtMSwgdiApIG5lZyB5CgoJCQl9IGVsc2UgaWYgKCBmYWNlID09IDUuMCApIHsKCgkJCQlkaXJlY3Rpb24ueiAqPSAtMS4wOyAvLyAoIHUsIHYsIC0xICkgbmVnIHoKCgkJCX0KCgkJCXJldHVybiBkaXJlY3Rpb247CgoJCX0KCgkJdm9pZCBtYWluKCkgewoKCQkJdk91dHB1dERpcmVjdGlvbiA9IGdldERpcmVjdGlvbiggdXYsIGZhY2VJbmRleCApOwoJCQlnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTsKCgkJfQoJYH1mdW5jdGlvbiBXZHIoZSl7bGV0IHQ9bmV3IFdlYWtNYXAscj1udWxsO2Z1bmN0aW9uIG4ocyl7aWYocyYmcy5pc1RleHR1cmUpe2xldCBsPXMubWFwcGluZyxjPWw9PT1xUHx8bD09PUdQLHU9bD09PW54fHxsPT09aXg7aWYoY3x8dSlpZihzLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZSYmcy5uZWVkc1BNUkVNVXBkYXRlPT09ITApe3MubmVlZHNQTVJFTVVwZGF0ZT0hMTtsZXQgaD10LmdldChzKTtyZXR1cm4gcj09PW51bGwmJihyPW5ldyBKUChlKSksaD1jP3IuZnJvbUVxdWlyZWN0YW5ndWxhcihzLGgpOnIuZnJvbUN1YmVtYXAocyxoKSx0LnNldChzLGgpLGgudGV4dHVyZX1lbHNle2lmKHQuaGFzKHMpKXJldHVybiB0LmdldChzKS50ZXh0dXJlO3tsZXQgaD1zLmltYWdlO2lmKGMmJmgmJmguaGVpZ2h0PjB8fHUmJmgmJmkoaCkpe3I9PT1udWxsJiYocj1uZXcgSlAoZSkpO2xldCBmPWM/ci5mcm9tRXF1aXJlY3Rhbmd1bGFyKHMpOnIuZnJvbUN1YmVtYXAocyk7cmV0dXJuIHQuc2V0KHMsZikscy5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKSxmLnRleHR1cmV9ZWxzZSByZXR1cm4gbnVsbH19fXJldHVybiBzfWZ1bmN0aW9uIGkocyl7bGV0IGw9MCxjPTY7Zm9yKGxldCB1PTA7dTxjO3UrKylzW3VdIT09dm9pZCAwJiZsKys7cmV0dXJuIGw9PT1jfWZ1bmN0aW9uIG8ocyl7bGV0IGw9cy50YXJnZXQ7bC5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKTtsZXQgYz10LmdldChsKTtjIT09dm9pZCAwJiYodC5kZWxldGUobCksYy5kaXNwb3NlKCkpfWZ1bmN0aW9uIGEoKXt0PW5ldyBXZWFrTWFwLHIhPT1udWxsJiYoci5kaXNwb3NlKCkscj1udWxsKX1yZXR1cm57Z2V0Om4sZGlzcG9zZTphfX1mdW5jdGlvbiBZZHIoZSl7bGV0IHQ9e307ZnVuY3Rpb24gcihuKXtpZih0W25dIT09dm9pZCAwKXJldHVybiB0W25dO2xldCBpO3N3aXRjaChuKXtjYXNlIldFQkdMX2RlcHRoX3RleHR1cmUiOmk9ZS5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8ZS5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fGUuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2JyZWFrO2Nhc2UiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIjppPWUuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8ZS5nZXRFeHRlbnNpb24oIk1PWl9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8ZS5nZXRFeHRlbnNpb24oIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjppPWUuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHxlLmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fGUuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyI6aT1lLmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil8fGUuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7YnJlYWs7ZGVmYXVsdDppPWUuZ2V0RXh0ZW5zaW9uKG4pfXJldHVybiB0W25dPWksaX1yZXR1cm57aGFzOmZ1bmN0aW9uKG4pe3JldHVybiByKG4pIT09bnVsbH0saW5pdDpmdW5jdGlvbihuKXtuLmlzV2ViR0wyP3IoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKToocigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLHIoIk9FU190ZXh0dXJlX2Zsb2F0IikscigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLHIoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikscigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikscigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpLHIoIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikscigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKSxyKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSxyKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSxyKCJXRUJHTF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKX0sZ2V0OmZ1bmN0aW9uKG4pe2xldCBpPXIobik7cmV0dXJuIGk9PT1udWxsJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrbisiIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkLiIpLGl9fX1mdW5jdGlvbiBqZHIoZSx0LHIsbil7bGV0IGk9e30sbz1uZXcgV2Vha01hcDtmdW5jdGlvbiBhKGgpe2xldCBmPWgudGFyZ2V0O2YuaW5kZXghPT1udWxsJiZ0LnJlbW92ZShmLmluZGV4KTtmb3IobGV0IGQgaW4gZi5hdHRyaWJ1dGVzKXQucmVtb3ZlKGYuYXR0cmlidXRlc1tkXSk7Zi5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixhKSxkZWxldGUgaVtmLmlkXTtsZXQgcD1vLmdldChmKTtwJiYodC5yZW1vdmUocCksby5kZWxldGUoZikpLG4ucmVsZWFzZVN0YXRlc09mR2VvbWV0cnkoZiksZi5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PT09ITAmJmRlbGV0ZSBmLl9tYXhJbnN0YW5jZUNvdW50LHIubWVtb3J5Lmdlb21ldHJpZXMtLX1mdW5jdGlvbiBzKGgsZil7cmV0dXJuIGlbZi5pZF09PT0hMHx8KGYuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSksaVtmLmlkXT0hMCxyLm1lbW9yeS5nZW9tZXRyaWVzKyspLGZ9ZnVuY3Rpb24gbChoKXtsZXQgZj1oLmF0dHJpYnV0ZXM7Zm9yKGxldCBkIGluIGYpdC51cGRhdGUoZltkXSwzNDk2Mik7bGV0IHA9aC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGxldCBkIGluIHApe2xldCBnPXBbZF07Zm9yKGxldCBfPTAseT1nLmxlbmd0aDtfPHk7XysrKXQudXBkYXRlKGdbX10sMzQ5NjIpfX1mdW5jdGlvbiBjKGgpe2xldCBmPVtdLHA9aC5pbmRleCxkPWguYXR0cmlidXRlcy5wb3NpdGlvbixnPTA7aWYocCE9PW51bGwpe2xldCB4PXAuYXJyYXk7Zz1wLnZlcnNpb247Zm9yKGxldCBiPTAsUz14Lmxlbmd0aDtiPFM7Yis9Myl7bGV0IEM9eFtiKzBdLFA9eFtiKzFdLGs9eFtiKzJdO2YucHVzaChDLFAsUCxrLGssQyl9fWVsc2V7bGV0IHg9ZC5hcnJheTtnPWQudmVyc2lvbjtmb3IobGV0IGI9MCxTPXgubGVuZ3RoLzMtMTtiPFM7Yis9Myl7bGV0IEM9YiswLFA9YisxLGs9YisyO2YucHVzaChDLFAsUCxrLGssQyl9fWxldCBfPW5ldyhJZmUoZik/JDM6WDMpKGYsMSk7Xy52ZXJzaW9uPWc7bGV0IHk9by5nZXQoaCk7eSYmdC5yZW1vdmUoeSksby5zZXQoaCxfKX1mdW5jdGlvbiB1KGgpe2xldCBmPW8uZ2V0KGgpO2lmKGYpe2xldCBwPWguaW5kZXg7cCE9PW51bGwmJmYudmVyc2lvbjxwLnZlcnNpb24mJmMoaCl9ZWxzZSBjKGgpO3JldHVybiBvLmdldChoKX1yZXR1cm57Z2V0OnMsdXBkYXRlOmwsZ2V0V2lyZWZyYW1lQXR0cmlidXRlOnV9fWZ1bmN0aW9uIFhkcihlLHQscixuKXtsZXQgaT1uLmlzV2ViR0wyLG87ZnVuY3Rpb24gYShmKXtvPWZ9bGV0IHMsbDtmdW5jdGlvbiBjKGYpe3M9Zi50eXBlLGw9Zi5ieXRlc1BlckVsZW1lbnR9ZnVuY3Rpb24gdShmLHApe2UuZHJhd0VsZW1lbnRzKG8scCxzLGYqbCksci51cGRhdGUocCxvLDEpfWZ1bmN0aW9uIGgoZixwLGQpe2lmKGQ9PT0wKXJldHVybjtsZXQgZyxfO2lmKGkpZz1lLF89ImRyYXdFbGVtZW50c0luc3RhbmNlZCI7ZWxzZSBpZihnPXQuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiksXz0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiLGc9PT1udWxsKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZGV4ZWRCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuIik7cmV0dXJufWdbX10obyxwLHMsZipsLGQpLHIudXBkYXRlKHAsbyxkKX10aGlzLnNldE1vZGU9YSx0aGlzLnNldEluZGV4PWMsdGhpcy5yZW5kZXI9dSx0aGlzLnJlbmRlckluc3RhbmNlcz1ofWZ1bmN0aW9uICRkcihlKXtsZXQgdD17Z2VvbWV0cmllczowLHRleHR1cmVzOjB9LHI9e2ZyYW1lOjAsY2FsbHM6MCx0cmlhbmdsZXM6MCxwb2ludHM6MCxsaW5lczowfTtmdW5jdGlvbiBuKG8sYSxzKXtzd2l0Y2goci5jYWxscysrLGEpe2Nhc2UgNDpyLnRyaWFuZ2xlcys9cyooby8zKTticmVhaztjYXNlIDE6ci5saW5lcys9cyooby8yKTticmVhaztjYXNlIDM6ci5saW5lcys9cyooby0xKTticmVhaztjYXNlIDI6ci5saW5lcys9cypvO2JyZWFrO2Nhc2UgMDpyLnBvaW50cys9cypvO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmZvOiBVbmtub3duIGRyYXcgbW9kZToiLGEpO2JyZWFrfX1mdW5jdGlvbiBpKCl7ci5mcmFtZSsrLHIuY2FsbHM9MCxyLnRyaWFuZ2xlcz0wLHIucG9pbnRzPTAsci5saW5lcz0wfXJldHVybnttZW1vcnk6dCxyZW5kZXI6cixwcm9ncmFtczpudWxsLGF1dG9SZXNldDohMCxyZXNldDppLHVwZGF0ZTpufX12YXIgUTM9Y2xhc3MgZXh0ZW5kcyB4aXtjb25zdHJ1Y3Rvcih0PW51bGwscj0xLG49MSxpPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDpyLGhlaWdodDpuLGRlcHRoOml9LHRoaXMubWFnRmlsdGVyPUxpLHRoaXMubWluRmlsdGVyPUxpLHRoaXMud3JhcFI9Wm8sdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xfX07UTMucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwO2Z1bmN0aW9uIEtkcihlLHQpe3JldHVybiBlWzBdLXRbMF19ZnVuY3Rpb24gWmRyKGUsdCl7cmV0dXJuIE1hdGguYWJzKHRbMV0pLU1hdGguYWJzKGVbMV0pfWZ1bmN0aW9uIFR1ZShlLHQpe2xldCByPTEsbj10LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/dC5kYXRhLmFycmF5OnQuYXJyYXk7biBpbnN0YW5jZW9mIEludDhBcnJheT9yPTEyNzpuIGluc3RhbmNlb2YgSW50MTZBcnJheT9yPTMyNzY3Om4gaW5zdGFuY2VvZiBJbnQzMkFycmF5P3I9MjE0NzQ4MzY0Nzpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTE1vcnBodGFyZ2V0czogVW5zdXBwb3J0ZWQgbW9ycGggYXR0cmlidXRlIGRhdGEgdHlwZTogIixuKSxlLmRpdmlkZVNjYWxhcihyKX1mdW5jdGlvbiBKZHIoZSx0LHIpe2xldCBuPXt9LGk9bmV3IEZsb2F0MzJBcnJheSg4KSxvPW5ldyBXZWFrTWFwLGE9bmV3IGoscz1bXTtmb3IobGV0IGM9MDtjPDg7YysrKXNbY109W2MsMF07ZnVuY3Rpb24gbChjLHUsaCxmKXtsZXQgcD1jLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcztpZih0LmlzV2ViR0wyPT09ITApe2xldCBkPXUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aCxnPW8uZ2V0KHUpO2lmKGc9PT12b2lkIDB8fGcuY291bnQhPT1kKXtsZXQgTD1mdW5jdGlvbigpe0IuZGlzcG9zZSgpLG8uZGVsZXRlKHUpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsTCl9O2chPT12b2lkIDAmJmcudGV4dHVyZS5kaXNwb3NlKCk7bGV0IHg9dS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsIT09dm9pZCAwLGI9dS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sUz11Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWx8fFtdLEM9dS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmNvdW50LFA9eD09PSEwPzI6MSxrPUMqUCxPPTE7az50Lm1heFRleHR1cmVTaXplJiYoTz1NYXRoLmNlaWwoay90Lm1heFRleHR1cmVTaXplKSxrPXQubWF4VGV4dHVyZVNpemUpO2xldCBEPW5ldyBGbG9hdDMyQXJyYXkoaypPKjQqZCksQj1uZXcgUTMoRCxrLE8sZCk7Qi5mb3JtYXQ9Sm8sQi50eXBlPWpkLEIubmVlZHNVcGRhdGU9ITA7bGV0IEk9UCo0O2ZvcihsZXQgUj0wO1I8ZDtSKyspe2xldCBGPWJbUl0sej1TW1JdLFU9aypPKjQqUjtmb3IobGV0IFc9MDtXPEYuY291bnQ7VysrKXthLmZyb21CdWZmZXJBdHRyaWJ1dGUoRixXKSxGLm5vcm1hbGl6ZWQ9PT0hMCYmVHVlKGEsRik7bGV0IFo9VypJO0RbVStaKzBdPWEueCxEW1UrWisxXT1hLnksRFtVK1orMl09YS56LERbVStaKzNdPTAseD09PSEwJiYoYS5mcm9tQnVmZmVyQXR0cmlidXRlKHosVyksei5ub3JtYWxpemVkPT09ITAmJlR1ZShhLHopLERbVStaKzRdPWEueCxEW1UrWis1XT1hLnksRFtVK1orNl09YS56LERbVStaKzddPTApfX1nPXtjb3VudDpkLHRleHR1cmU6QixzaXplOm5ldyBMdChrLE8pfSxvLnNldCh1LGcpLHUuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsTCl9bGV0IF89MDtmb3IobGV0IHg9MDt4PHAubGVuZ3RoO3grKylfKz1wW3hdO2xldCB5PXUubW9ycGhUYXJnZXRzUmVsYXRpdmU/MToxLV87Zi5nZXRVbmlmb3JtcygpLnNldFZhbHVlKGUsIm1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZSIseSksZi5nZXRVbmlmb3JtcygpLnNldFZhbHVlKGUsIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIscCksZi5nZXRVbmlmb3JtcygpLnNldFZhbHVlKGUsIm1vcnBoVGFyZ2V0c1RleHR1cmUiLGcudGV4dHVyZSxyKSxmLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUoZSwibW9ycGhUYXJnZXRzVGV4dHVyZVNpemUiLGcuc2l6ZSl9ZWxzZXtsZXQgZD1wPT09dm9pZCAwPzA6cC5sZW5ndGgsZz1uW3UuaWRdO2lmKGc9PT12b2lkIDB8fGcubGVuZ3RoIT09ZCl7Zz1bXTtmb3IobGV0IFM9MDtTPGQ7UysrKWdbU109W1MsMF07blt1LmlkXT1nfWZvcihsZXQgUz0wO1M8ZDtTKyspe2xldCBDPWdbU107Q1swXT1TLENbMV09cFtTXX1nLnNvcnQoWmRyKTtmb3IobGV0IFM9MDtTPDg7UysrKVM8ZCYmZ1tTXVsxXT8oc1tTXVswXT1nW1NdWzBdLHNbU11bMV09Z1tTXVsxXSk6KHNbU11bMF09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsc1tTXVsxXT0wKTtzLnNvcnQoS2RyKTtsZXQgXz11Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbix5PXUubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCx4PTA7Zm9yKGxldCBTPTA7Uzw4O1MrKyl7bGV0IEM9c1tTXSxQPUNbMF0saz1DWzFdO1AhPT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUiYmaz8oXyYmdS5nZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0IitTKSE9PV9bUF0mJnUuc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrUyxfW1BdKSx5JiZ1LmdldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK1MpIT09eVtQXSYmdS5zZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIitTLHlbUF0pLGlbU109ayx4Kz1rKTooXyYmdS5oYXNBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0IitTKT09PSEwJiZ1LmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK1MpLHkmJnUuaGFzQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrUyk9PT0hMCYmdS5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIitTKSxpW1NdPTApfWxldCBiPXUubW9ycGhUYXJnZXRzUmVsYXRpdmU/MToxLXg7Zi5nZXRVbmlmb3JtcygpLnNldFZhbHVlKGUsIm1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZSIsYiksZi5nZXRVbmlmb3JtcygpLnNldFZhbHVlKGUsIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIsaSl9fXJldHVybnt1cGRhdGU6bH19ZnVuY3Rpb24gUWRyKGUsdCxyLG4pe2xldCBpPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG8obCl7bGV0IGM9bi5yZW5kZXIuZnJhbWUsdT1sLmdlb21ldHJ5LGg9dC5nZXQobCx1KTtyZXR1cm4gaS5nZXQoaCkhPT1jJiYodC51cGRhdGUoaCksaS5zZXQoaCxjKSksbC5pc0luc3RhbmNlZE1lc2gmJihsLmhhc0V2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHMpPT09ITEmJmwuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIscyksci51cGRhdGUobC5pbnN0YW5jZU1hdHJpeCwzNDk2MiksbC5pbnN0YW5jZUNvbG9yIT09bnVsbCYmci51cGRhdGUobC5pbnN0YW5jZUNvbG9yLDM0OTYyKSksaH1mdW5jdGlvbiBhKCl7aT1uZXcgV2Vha01hcH1mdW5jdGlvbiBzKGwpe2xldCBjPWwudGFyZ2V0O2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIscyksci5yZW1vdmUoYy5pbnN0YW5jZU1hdHJpeCksYy5pbnN0YW5jZUNvbG9yIT09bnVsbCYmci5yZW1vdmUoYy5pbnN0YW5jZUNvbG9yKX1yZXR1cm57dXBkYXRlOm8sZGlzcG9zZTphfX12YXIgUVA9Y2xhc3MgZXh0ZW5kcyB4aXtjb25zdHJ1Y3Rvcih0PW51bGwscj0xLG49MSxpPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDpyLGhlaWdodDpuLGRlcHRoOml9LHRoaXMubWFnRmlsdGVyPUxpLHRoaXMubWluRmlsdGVyPUxpLHRoaXMud3JhcFI9Wm8sdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xfX07UVAucHJvdG90eXBlLmlzRGF0YVRleHR1cmUzRD0hMDt2YXIgT2ZlPW5ldyB4aSx6ZmU9bmV3IFEzLEZmZT1uZXcgUVAsQmZlPW5ldyBIMCxDdWU9W10sQXVlPVtdLFB1ZT1uZXcgRmxvYXQzMkFycmF5KDE2KSxJdWU9bmV3IEZsb2F0MzJBcnJheSg5KSxMdWU9bmV3IEZsb2F0MzJBcnJheSg0KTtmdW5jdGlvbiB4TShlLHQscil7bGV0IG49ZVswXTtpZihuPD0wfHxuPjApcmV0dXJuIGU7bGV0IGk9dCpyLG89Q3VlW2ldO2lmKG89PT12b2lkIDAmJihvPW5ldyBGbG9hdDMyQXJyYXkoaSksQ3VlW2ldPW8pLHQhPT0wKXtuLnRvQXJyYXkobywwKTtmb3IobGV0IGE9MSxzPTA7YSE9PXQ7KythKXMrPXIsZVthXS50b0FycmF5KG8scyl9cmV0dXJuIG99ZnVuY3Rpb24gdXMoZSx0KXtpZihlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGg7cjxuO3IrKylpZihlW3JdIT09dFtyXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBUYShlLHQpe2ZvcihsZXQgcj0wLG49dC5sZW5ndGg7cjxuO3IrKyllW3JdPXRbcl19ZnVuY3Rpb24galUoZSx0KXtsZXQgcj1BdWVbdF07cj09PXZvaWQgMCYmKHI9bmV3IEludDMyQXJyYXkodCksQXVlW3RdPXIpO2ZvcihsZXQgbj0wO24hPT10OysrbilyW25dPWUuYWxsb2NhdGVUZXh0dXJlVW5pdCgpO3JldHVybiByfWZ1bmN0aW9uIHRtcihlLHQpe2xldCByPXRoaXMuY2FjaGU7clswXSE9PXQmJihlLnVuaWZvcm0xZih0aGlzLmFkZHIsdCksclswXT10KX1mdW5jdGlvbiBlbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlO2lmKHQueCE9PXZvaWQgMCkoclswXSE9PXQueHx8clsxXSE9PXQueSkmJihlLnVuaWZvcm0yZih0aGlzLmFkZHIsdC54LHQueSksclswXT10LngsclsxXT10LnkpO2Vsc2V7aWYodXMocix0KSlyZXR1cm47ZS51bmlmb3JtMmZ2KHRoaXMuYWRkcix0KSxUYShyLHQpfX1mdW5jdGlvbiBybXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlO2lmKHQueCE9PXZvaWQgMCkoclswXSE9PXQueHx8clsxXSE9PXQueXx8clsyXSE9PXQueikmJihlLnVuaWZvcm0zZih0aGlzLmFkZHIsdC54LHQueSx0LnopLHJbMF09dC54LHJbMV09dC55LHJbMl09dC56KTtlbHNlIGlmKHQuciE9PXZvaWQgMCkoclswXSE9PXQucnx8clsxXSE9PXQuZ3x8clsyXSE9PXQuYikmJihlLnVuaWZvcm0zZih0aGlzLmFkZHIsdC5yLHQuZyx0LmIpLHJbMF09dC5yLHJbMV09dC5nLHJbMl09dC5iKTtlbHNle2lmKHVzKHIsdCkpcmV0dXJuO2UudW5pZm9ybTNmdih0aGlzLmFkZHIsdCksVGEocix0KX19ZnVuY3Rpb24gbm1yKGUsdCl7bGV0IHI9dGhpcy5jYWNoZTtpZih0LnghPT12b2lkIDApKHJbMF0hPT10Lnh8fHJbMV0hPT10Lnl8fHJbMl0hPT10Lnp8fHJbM10hPT10LncpJiYoZS51bmlmb3JtNGYodGhpcy5hZGRyLHQueCx0LnksdC56LHQudyksclswXT10LngsclsxXT10LnksclsyXT10LnosclszXT10LncpO2Vsc2V7aWYodXMocix0KSlyZXR1cm47ZS51bmlmb3JtNGZ2KHRoaXMuYWRkcix0KSxUYShyLHQpfX1mdW5jdGlvbiBpbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlLG49dC5lbGVtZW50cztpZihuPT09dm9pZCAwKXtpZih1cyhyLHQpKXJldHVybjtlLnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLHQpLFRhKHIsdCl9ZWxzZXtpZih1cyhyLG4pKXJldHVybjtMdWUuc2V0KG4pLGUudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsTHVlKSxUYShyLG4pfX1mdW5jdGlvbiBvbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlLG49dC5lbGVtZW50cztpZihuPT09dm9pZCAwKXtpZih1cyhyLHQpKXJldHVybjtlLnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLHQpLFRhKHIsdCl9ZWxzZXtpZih1cyhyLG4pKXJldHVybjtJdWUuc2V0KG4pLGUudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsSXVlKSxUYShyLG4pfX1mdW5jdGlvbiBhbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlLG49dC5lbGVtZW50cztpZihuPT09dm9pZCAwKXtpZih1cyhyLHQpKXJldHVybjtlLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLHQpLFRhKHIsdCl9ZWxzZXtpZih1cyhyLG4pKXJldHVybjtQdWUuc2V0KG4pLGUudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsUHVlKSxUYShyLG4pfX1mdW5jdGlvbiBzbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlO3JbMF0hPT10JiYoZS51bmlmb3JtMWkodGhpcy5hZGRyLHQpLHJbMF09dCl9ZnVuY3Rpb24gbG1yKGUsdCl7bGV0IHI9dGhpcy5jYWNoZTt1cyhyLHQpfHwoZS51bmlmb3JtMml2KHRoaXMuYWRkcix0KSxUYShyLHQpKX1mdW5jdGlvbiBjbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlO3VzKHIsdCl8fChlLnVuaWZvcm0zaXYodGhpcy5hZGRyLHQpLFRhKHIsdCkpfWZ1bmN0aW9uIHVtcihlLHQpe2xldCByPXRoaXMuY2FjaGU7dXMocix0KXx8KGUudW5pZm9ybTRpdih0aGlzLmFkZHIsdCksVGEocix0KSl9ZnVuY3Rpb24gaG1yKGUsdCl7bGV0IHI9dGhpcy5jYWNoZTtyWzBdIT09dCYmKGUudW5pZm9ybTF1aSh0aGlzLmFkZHIsdCksclswXT10KX1mdW5jdGlvbiBmbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlO3VzKHIsdCl8fChlLnVuaWZvcm0ydWl2KHRoaXMuYWRkcix0KSxUYShyLHQpKX1mdW5jdGlvbiBwbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlO3VzKHIsdCl8fChlLnVuaWZvcm0zdWl2KHRoaXMuYWRkcix0KSxUYShyLHQpKX1mdW5jdGlvbiBkbXIoZSx0KXtsZXQgcj10aGlzLmNhY2hlO3VzKHIsdCl8fChlLnVuaWZvcm00dWl2KHRoaXMuYWRkcix0KSxUYShyLHQpKX1mdW5jdGlvbiBtbXIoZSx0LHIpe2xldCBuPXRoaXMuY2FjaGUsaT1yLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtuWzBdIT09aSYmKGUudW5pZm9ybTFpKHRoaXMuYWRkcixpKSxuWzBdPWkpLHIuc2FmZVNldFRleHR1cmUyRCh0fHxPZmUsaSl9ZnVuY3Rpb24gZ21yKGUsdCxyKXtsZXQgbj10aGlzLmNhY2hlLGk9ci5hbGxvY2F0ZVRleHR1cmVVbml0KCk7blswXSE9PWkmJihlLnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksblswXT1pKSxyLnNldFRleHR1cmUzRCh0fHxGZmUsaSl9ZnVuY3Rpb24gX21yKGUsdCxyKXtsZXQgbj10aGlzLmNhY2hlLGk9ci5hbGxvY2F0ZVRleHR1cmVVbml0KCk7blswXSE9PWkmJihlLnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksblswXT1pKSxyLnNhZmVTZXRUZXh0dXJlQ3ViZSh0fHxCZmUsaSl9ZnVuY3Rpb24geW1yKGUsdCxyKXtsZXQgbj10aGlzLmNhY2hlLGk9ci5hbGxvY2F0ZVRleHR1cmVVbml0KCk7blswXSE9PWkmJihlLnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksblswXT1pKSxyLnNldFRleHR1cmUyREFycmF5KHR8fHpmZSxpKX1mdW5jdGlvbiB2bXIoZSl7c3dpdGNoKGUpe2Nhc2UgNTEyNjpyZXR1cm4gdG1yO2Nhc2UgMzU2NjQ6cmV0dXJuIGVtcjtjYXNlIDM1NjY1OnJldHVybiBybXI7Y2FzZSAzNTY2NjpyZXR1cm4gbm1yO2Nhc2UgMzU2NzQ6cmV0dXJuIGltcjtjYXNlIDM1Njc1OnJldHVybiBvbXI7Y2FzZSAzNTY3NjpyZXR1cm4gYW1yO2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBzbXI7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBsbXI7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBjbXI7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiB1bXI7Y2FzZSA1MTI1OnJldHVybiBobXI7Y2FzZSAzNjI5NDpyZXR1cm4gZm1yO2Nhc2UgMzYyOTU6cmV0dXJuIHBtcjtjYXNlIDM2Mjk2OnJldHVybiBkbXI7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBtbXI7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIGdtcjtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBfbXI7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4geW1yfX1mdW5jdGlvbiB4bXIoZSx0KXtlLnVuaWZvcm0xZnYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIGJtcihlLHQpe2xldCByPXhNKHQsdGhpcy5zaXplLDIpO2UudW5pZm9ybTJmdih0aGlzLmFkZHIscil9ZnVuY3Rpb24gd21yKGUsdCl7bGV0IHI9eE0odCx0aGlzLnNpemUsMyk7ZS51bmlmb3JtM2Z2KHRoaXMuYWRkcixyKX1mdW5jdGlvbiBTbXIoZSx0KXtsZXQgcj14TSh0LHRoaXMuc2l6ZSw0KTtlLnVuaWZvcm00ZnYodGhpcy5hZGRyLHIpfWZ1bmN0aW9uIE1tcihlLHQpe2xldCByPXhNKHQsdGhpcy5zaXplLDQpO2UudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEscil9ZnVuY3Rpb24gRW1yKGUsdCl7bGV0IHI9eE0odCx0aGlzLnNpemUsOSk7ZS51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxyKX1mdW5jdGlvbiBUbXIoZSx0KXtsZXQgcj14TSh0LHRoaXMuc2l6ZSwxNik7ZS51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxyKX1mdW5jdGlvbiBDbXIoZSx0KXtlLnVuaWZvcm0xaXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIEFtcihlLHQpe2UudW5pZm9ybTJpdih0aGlzLmFkZHIsdCl9ZnVuY3Rpb24gUG1yKGUsdCl7ZS51bmlmb3JtM2l2KHRoaXMuYWRkcix0KX1mdW5jdGlvbiBJbXIoZSx0KXtlLnVuaWZvcm00aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIExtcihlLHQpe2UudW5pZm9ybTF1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIGttcihlLHQpe2UudW5pZm9ybTJ1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIFJtcihlLHQpe2UudW5pZm9ybTN1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIE5tcihlLHQpe2UudW5pZm9ybTR1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIERtcihlLHQscil7bGV0IG49dC5sZW5ndGgsaT1qVShyLG4pO2UudW5pZm9ybTFpdih0aGlzLmFkZHIsaSk7Zm9yKGxldCBvPTA7byE9PW47KytvKXIuc2FmZVNldFRleHR1cmUyRCh0W29dfHxPZmUsaVtvXSl9ZnVuY3Rpb24gT21yKGUsdCxyKXtsZXQgbj10Lmxlbmd0aCxpPWpVKHIsbik7ZS51bmlmb3JtMWl2KHRoaXMuYWRkcixpKTtmb3IobGV0IG89MDtvIT09bjsrK28pci5zZXRUZXh0dXJlM0QodFtvXXx8RmZlLGlbb10pfWZ1bmN0aW9uIHptcihlLHQscil7bGV0IG49dC5sZW5ndGgsaT1qVShyLG4pO2UudW5pZm9ybTFpdih0aGlzLmFkZHIsaSk7Zm9yKGxldCBvPTA7byE9PW47KytvKXIuc2FmZVNldFRleHR1cmVDdWJlKHRbb118fEJmZSxpW29dKX1mdW5jdGlvbiBGbXIoZSx0LHIpe2xldCBuPXQubGVuZ3RoLGk9alUocixuKTtlLnVuaWZvcm0xaXYodGhpcy5hZGRyLGkpO2ZvcihsZXQgbz0wO28hPT1uOysrbylyLnNldFRleHR1cmUyREFycmF5KHRbb118fHpmZSxpW29dKX1mdW5jdGlvbiBCbXIoZSl7c3dpdGNoKGUpe2Nhc2UgNTEyNjpyZXR1cm4geG1yO2Nhc2UgMzU2NjQ6cmV0dXJuIGJtcjtjYXNlIDM1NjY1OnJldHVybiB3bXI7Y2FzZSAzNTY2NjpyZXR1cm4gU21yO2Nhc2UgMzU2NzQ6cmV0dXJuIE1tcjtjYXNlIDM1Njc1OnJldHVybiBFbXI7Y2FzZSAzNTY3NjpyZXR1cm4gVG1yO2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBDbXI7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBBbXI7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBQbXI7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBJbXI7Y2FzZSA1MTI1OnJldHVybiBMbXI7Y2FzZSAzNjI5NDpyZXR1cm4ga21yO2Nhc2UgMzYyOTU6cmV0dXJuIFJtcjtjYXNlIDM2Mjk2OnJldHVybiBObXI7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBEbXI7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIE9tcjtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiB6bXI7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gRm1yfX1mdW5jdGlvbiBIbXIoZSx0LHIpe3RoaXMuaWQ9ZSx0aGlzLmFkZHI9cix0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9dm1yKHQudHlwZSl9ZnVuY3Rpb24gSGZlKGUsdCxyKXt0aGlzLmlkPWUsdGhpcy5hZGRyPXIsdGhpcy5jYWNoZT1bXSx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2V0VmFsdWU9Qm1yKHQudHlwZSl9SGZlLnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbihlKXtsZXQgdD10aGlzLmNhY2hlO2UgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkmJnQubGVuZ3RoIT09ZS5sZW5ndGgmJih0aGlzLmNhY2hlPW5ldyBGbG9hdDMyQXJyYXkoZS5sZW5ndGgpKSxUYSh0LGUpfTtmdW5jdGlvbiBWZmUoZSl7dGhpcy5pZD1lLHRoaXMuc2VxPVtdLHRoaXMubWFwPXt9fVZmZS5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24oZSx0LHIpe2xldCBuPXRoaXMuc2VxO2ZvcihsZXQgaT0wLG89bi5sZW5ndGg7aSE9PW87KytpKXtsZXQgYT1uW2ldO2Euc2V0VmFsdWUoZSx0W2EuaWRdLHIpfX07dmFyIGZ1dD0vKFx3KykoXF0pPyhcW3xcLik/L2c7ZnVuY3Rpb24ga3VlKGUsdCl7ZS5zZXEucHVzaCh0KSxlLm1hcFt0LmlkXT10fWZ1bmN0aW9uIFZtcihlLHQscil7bGV0IG49ZS5uYW1lLGk9bi5sZW5ndGg7Zm9yKGZ1dC5sYXN0SW5kZXg9MDs7KXtsZXQgbz1mdXQuZXhlYyhuKSxhPWZ1dC5sYXN0SW5kZXgscz1vWzFdLGw9b1syXT09PSJdIixjPW9bM107aWYobCYmKHM9c3wwKSxjPT09dm9pZCAwfHxjPT09IlsiJiZhKzI9PT1pKXtrdWUocixjPT09dm9pZCAwP25ldyBIbXIocyxlLHQpOm5ldyBIZmUocyxlLHQpKTticmVha31lbHNle2xldCBoPXIubWFwW3NdO2g9PT12b2lkIDAmJihoPW5ldyBWZmUocyksa3VlKHIsaCkpLHI9aH19fWZ1bmN0aW9uIEIwKGUsdCl7dGhpcy5zZXE9W10sdGhpcy5tYXA9e307bGV0IHI9ZS5nZXRQcm9ncmFtUGFyYW1ldGVyKHQsMzU3MTgpO2ZvcihsZXQgbj0wO248cjsrK24pe2xldCBpPWUuZ2V0QWN0aXZlVW5pZm9ybSh0LG4pLG89ZS5nZXRVbmlmb3JtTG9jYXRpb24odCxpLm5hbWUpO1ZtcihpLG8sdGhpcyl9fUIwLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbihlLHQscixuKXtsZXQgaT10aGlzLm1hcFt0XTtpIT09dm9pZCAwJiZpLnNldFZhbHVlKGUscixuKX07QjAucHJvdG90eXBlLnNldE9wdGlvbmFsPWZ1bmN0aW9uKGUsdCxyKXtsZXQgbj10W3JdO24hPT12b2lkIDAmJnRoaXMuc2V0VmFsdWUoZSxyLG4pfTtCMC51cGxvYWQ9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKGxldCBpPTAsbz10Lmxlbmd0aDtpIT09bzsrK2kpe2xldCBhPXRbaV0scz1yW2EuaWRdO3MubmVlZHNVcGRhdGUhPT0hMSYmYS5zZXRWYWx1ZShlLHMudmFsdWUsbil9fTtCMC5zZXFXaXRoVmFsdWU9ZnVuY3Rpb24oZSx0KXtsZXQgcj1bXTtmb3IobGV0IG49MCxpPWUubGVuZ3RoO24hPT1pOysrbil7bGV0IG89ZVtuXTtvLmlkIGluIHQmJnIucHVzaChvKX1yZXR1cm4gcn07ZnVuY3Rpb24gUnVlKGUsdCxyKXtsZXQgbj1lLmNyZWF0ZVNoYWRlcih0KTtyZXR1cm4gZS5zaGFkZXJTb3VyY2UobixyKSxlLmNvbXBpbGVTaGFkZXIobiksbn12YXIgVW1yPTA7ZnVuY3Rpb24gcW1yKGUpe2xldCB0PWUuc3BsaXQoYApgKTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPXIrMSsiOiAiK3Rbcl07cmV0dXJuIHQuam9pbihgCmApfWZ1bmN0aW9uIEdtcihlKXtzd2l0Y2goZSl7Y2FzZSBRZDpyZXR1cm5bIkxpbmVhciIsIiggdmFsdWUgKSJdO2Nhc2UgWW46cmV0dXJuWyJzUkdCIiwiKCB2YWx1ZSApIl07ZGVmYXVsdDpyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIGVuY29kaW5nOiIsZSksWyJMaW5lYXIiLCIoIHZhbHVlICkiXX19ZnVuY3Rpb24gTnVlKGUsdCxyKXtsZXQgbj1lLmdldFNoYWRlclBhcmFtZXRlcih0LDM1NzEzKSxpPWUuZ2V0U2hhZGVySW5mb0xvZyh0KS50cmltKCk7cmV0dXJuIG4mJmk9PT0iIj8iIjpyLnRvVXBwZXJDYXNlKCkrYAoKYCtpK2AKCmArcW1yKGUuZ2V0U2hhZGVyU291cmNlKHQpKX1mdW5jdGlvbiBXbXIoZSx0KXtsZXQgcj1HbXIodCk7cmV0dXJuInZlYzQgIitlKyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiBMaW5lYXJUbyIrclswXStyWzFdKyI7IH0ifWZ1bmN0aW9uIFltcihlLHQpe2xldCByO3N3aXRjaCh0KXtjYXNlIGVmZTpyPSJMaW5lYXIiO2JyZWFrO2Nhc2UgcmZlOnI9IlJlaW5oYXJkIjticmVhaztjYXNlIG5mZTpyPSJPcHRpbWl6ZWRDaW5lb24iO2JyZWFrO2Nhc2UgaWZlOnI9IkFDRVNGaWxtaWMiO2JyZWFrO2Nhc2Ugb2ZlOnI9IkN1c3RvbSI7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgdG9uZU1hcHBpbmc6Iix0KSxyPSJMaW5lYXIifXJldHVybiJ2ZWMzICIrZSsiKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gIityKyJUb25lTWFwcGluZyggY29sb3IgKTsgfSJ9ZnVuY3Rpb24gam1yKGUpe3JldHVybltlLmV4dGVuc2lvbkRlcml2YXRpdmVzfHxlLmVudk1hcEN1YmVVVnx8ZS5idW1wTWFwfHxlLnRhbmdlbnRTcGFjZU5vcm1hbE1hcHx8ZS5jbGVhcmNvYXROb3JtYWxNYXB8fGUuZmxhdFNoYWRpbmd8fGUuc2hhZGVySUQ9PT0icGh5c2ljYWwiPyIjZXh0ZW5zaW9uIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZSI6IiIsKGUuZXh0ZW5zaW9uRnJhZ0RlcHRofHxlLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIpJiZlLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogZW5hYmxlIjoiIixlLmV4dGVuc2lvbkRyYXdCdWZmZXJzJiZlLnJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM/IiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmUiOiIiLChlLmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fGUuZW52TWFwfHxlLnRyYW5zbWlzc2lvbikmJmUucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgOiBlbmFibGUiOiIiXS5maWx0ZXIoelApLmpvaW4oYApgKX1mdW5jdGlvbiBYbXIoZSl7bGV0IHQ9W107Zm9yKGxldCByIGluIGUpe2xldCBuPWVbcl07biE9PSExJiZ0LnB1c2goIiNkZWZpbmUgIityKyIgIituKX1yZXR1cm4gdC5qb2luKGAKYCl9ZnVuY3Rpb24gJG1yKGUsdCl7bGV0IHI9e30sbj1lLmdldFByb2dyYW1QYXJhbWV0ZXIodCwzNTcyMSk7Zm9yKGxldCBpPTA7aTxuO2krKyl7bGV0IG89ZS5nZXRBY3RpdmVBdHRyaWIodCxpKSxhPW8ubmFtZSxzPTE7by50eXBlPT09MzU2NzQmJihzPTIpLG8udHlwZT09PTM1Njc1JiYocz0zKSxvLnR5cGU9PT0zNTY3NiYmKHM9NCksclthXT17dHlwZTpvLnR5cGUsbG9jYXRpb246ZS5nZXRBdHRyaWJMb2NhdGlvbih0LGEpLGxvY2F0aW9uU2l6ZTpzfX1yZXR1cm4gcn1mdW5jdGlvbiB6UChlKXtyZXR1cm4gZSE9PSIifWZ1bmN0aW9uIER1ZShlLHQpe3JldHVybiBlLnJlcGxhY2UoL05VTV9ESVJfTElHSFRTL2csdC5udW1EaXJMaWdodHMpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUUy9nLHQubnVtU3BvdExpZ2h0cykucmVwbGFjZSgvTlVNX1JFQ1RfQVJFQV9MSUdIVFMvZyx0Lm51bVJlY3RBcmVhTGlnaHRzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRTL2csdC5udW1Qb2ludExpZ2h0cykucmVwbGFjZSgvTlVNX0hFTUlfTElHSFRTL2csdC5udW1IZW1pTGlnaHRzKS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUX1NIQURPV1MvZyx0Lm51bURpckxpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRfU0hBRE9XUy9nLHQubnVtU3BvdExpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MvZyx0Lm51bVBvaW50TGlnaHRTaGFkb3dzKX1mdW5jdGlvbiBPdWUoZSx0KXtyZXR1cm4gZS5yZXBsYWNlKC9OVU1fQ0xJUFBJTkdfUExBTkVTL2csdC5udW1DbGlwcGluZ1BsYW5lcykucmVwbGFjZSgvVU5JT05fQ0xJUFBJTkdfUExBTkVTL2csdC5udW1DbGlwcGluZ1BsYW5lcy10Lm51bUNsaXBJbnRlcnNlY3Rpb24pfXZhciBLbXI9L15bIFx0XSojaW5jbHVkZSArPChbXHdcZC4vXSspPi9nbTtmdW5jdGlvbiBadXQoZSl7cmV0dXJuIGUucmVwbGFjZShLbXIsWm1yKX1mdW5jdGlvbiBabXIoZSx0KXtsZXQgcj1oclt0XTtpZihyPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2FuIG5vdCByZXNvbHZlICNpbmNsdWRlIDwiK3QrIj4iKTtyZXR1cm4gWnV0KHIpfXZhciBKbXI9LyNwcmFnbWEgdW5yb2xsX2xvb3BbXHNdKz9mb3IgXCggaW50IGkgXD0gKFxkKylcOyBpIDwgKFxkKylcOyBpIFwrXCsgXCkgXHsoW1xzXFNdKz8pKD89XH0pXH0vZyxRbXI9LyNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRccytmb3JccypcKFxzKmludFxzK2lccyo9XHMqKFxkKylccyo7XHMqaVxzKjxccyooXGQrKVxzKjtccyppXHMqXCtcK1xzKlwpXHMqeyhbXHNcU10rPyl9XHMrI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQvZztmdW5jdGlvbiB6dWUoZSl7cmV0dXJuIGUucmVwbGFjZShRbXIsVWZlKS5yZXBsYWNlKEptcix0Z3IpfWZ1bmN0aW9uIHRncihlLHQscixuKXtyZXR1cm4gY29uc29sZS53YXJuKCJXZWJHTFByb2dyYW06ICNwcmFnbWEgdW5yb2xsX2xvb3Agc2hhZGVyIHN5bnRheCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQgc3ludGF4IGluc3RlYWQuIiksVWZlKGUsdCxyLG4pfWZ1bmN0aW9uIFVmZShlLHQscixuKXtsZXQgaT0iIjtmb3IobGV0IG89cGFyc2VJbnQodCk7bzxwYXJzZUludChyKTtvKyspaSs9bi5yZXBsYWNlKC9cW1xzKmlccypcXS9nLCJbICIrbysiIF0iKS5yZXBsYWNlKC9VTlJPTExFRF9MT09QX0lOREVYL2csbyk7cmV0dXJuIGl9ZnVuY3Rpb24gRnVlKGUpe2xldCB0PSJwcmVjaXNpb24gIitlLnByZWNpc2lvbitgIGZsb2F0OwpwcmVjaXNpb24gYCtlLnByZWNpc2lvbisiIGludDsiO3JldHVybiBlLnByZWNpc2lvbj09PSJoaWdocCI/dCs9YAojZGVmaW5lIEhJR0hfUFJFQ0lTSU9OYDplLnByZWNpc2lvbj09PSJtZWRpdW1wIj90Kz1gCiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTmA6ZS5wcmVjaXNpb249PT0ibG93cCImJih0Kz1gCiNkZWZpbmUgTE9XX1BSRUNJU0lPTmApLHR9ZnVuY3Rpb24gZWdyKGUpe2xldCB0PSJTSEFET1dNQVBfVFlQRV9CQVNJQyI7cmV0dXJuIGUuc2hhZG93TWFwVHlwZT09PVRodD90PSJTSEFET1dNQVBfVFlQRV9QQ0YiOmUuc2hhZG93TWFwVHlwZT09PVJoZT90PSJTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCI6ZS5zaGFkb3dNYXBUeXBlPT09ejMmJih0PSJTSEFET1dNQVBfVFlQRV9WU00iKSx0fWZ1bmN0aW9uIHJncihlKXtsZXQgdD0iRU5WTUFQX1RZUEVfQ1VCRSI7aWYoZS5lbnZNYXApc3dpdGNoKGUuZW52TWFwTW9kZSl7Y2FzZSBueDpjYXNlIGl4OnQ9IkVOVk1BUF9UWVBFX0NVQkUiO2JyZWFrO2Nhc2Ugdk06Y2FzZSBONjp0PSJFTlZNQVBfVFlQRV9DVUJFX1VWIjticmVha31yZXR1cm4gdH1mdW5jdGlvbiBuZ3IoZSl7bGV0IHQ9IkVOVk1BUF9NT0RFX1JFRkxFQ1RJT04iO2lmKGUuZW52TWFwKXN3aXRjaChlLmVudk1hcE1vZGUpe2Nhc2UgaXg6Y2FzZSBONjp0PSJFTlZNQVBfTU9ERV9SRUZSQUNUSU9OIjticmVha31yZXR1cm4gdH1mdW5jdGlvbiBpZ3IoZSl7bGV0IHQ9IkVOVk1BUF9CTEVORElOR19OT05FIjtpZihlLmVudk1hcClzd2l0Y2goZS5jb21iaW5lKXtjYXNlIFI2OnQ9IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7YnJlYWs7Y2FzZSBRaGU6dD0iRU5WTUFQX0JMRU5ESU5HX01JWCI7YnJlYWs7Y2FzZSB0ZmU6dD0iRU5WTUFQX0JMRU5ESU5HX0FERCI7YnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24gb2dyKGUsdCxyLG4pe2xldCBpPWUuZ2V0Q29udGV4dCgpLG89ci5kZWZpbmVzLGE9ci52ZXJ0ZXhTaGFkZXIscz1yLmZyYWdtZW50U2hhZGVyLGw9ZWdyKHIpLGM9cmdyKHIpLHU9bmdyKHIpLGg9aWdyKHIpLGY9ci5pc1dlYkdMMj8iIjpqbXIocikscD1YbXIobyksZD1pLmNyZWF0ZVByb2dyYW0oKSxnLF8seT1yLmdsc2xWZXJzaW9uPyIjdmVyc2lvbiAiK3IuZ2xzbFZlcnNpb24rYApgOiIiO3IuaXNSYXdTaGFkZXJNYXRlcmlhbD8oZz1bcF0uZmlsdGVyKHpQKS5qb2luKGAKYCksZy5sZW5ndGg+MCYmKGcrPWAKYCksXz1bZixwXS5maWx0ZXIoelApLmpvaW4oYApgKSxfLmxlbmd0aD4wJiYoXys9YApgKSk6KGc9W0Z1ZShyKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK3Iuc2hhZGVyTmFtZSxwLHIuaW5zdGFuY2luZz8iI2RlZmluZSBVU0VfSU5TVEFOQ0lORyI6IiIsci5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkdfQ09MT1IiOiIiLHIuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBWRVJURVhfVEVYVFVSRVMiOiIiLCIjZGVmaW5lIE1BWF9CT05FUyAiK3IubWF4Qm9uZXMsci51c2VGb2cmJnIuZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLHIudXNlRm9nJiZyLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLHIubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLHIuZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLHIuZW52TWFwPyIjZGVmaW5lICIrdToiIixyLmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsci5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLHIuZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIixyLmJ1bXBNYXA/IiNkZWZpbmUgVVNFX0JVTVBNQVAiOiIiLHIubm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9OT1JNQUxNQVAiOiIiLHIubm9ybWFsTWFwJiZyLm9iamVjdFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIE9CSkVDVFNQQUNFX05PUk1BTE1BUCI6IiIsci5ub3JtYWxNYXAmJnIudGFuZ2VudFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAiOiIiLHIuY2xlYXJjb2F0TWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRNQVAiOiIiLHIuY2xlYXJjb2F0Um91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQIjoiIixyLmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsci5kaXNwbGFjZW1lbnRNYXAmJnIuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBVU0VfRElTUExBQ0VNRU5UTUFQIjoiIixyLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsci5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLHIuc3BlY3VsYXJDb2xvck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJDT0xPUk1BUCI6IiIsci5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsci5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsci5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLHIudHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLHIudHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLHIudGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLHIuc2hlZW5Db2xvck1hcD8iI2RlZmluZSBVU0VfU0hFRU5DT0xPUk1BUCI6IiIsci5zaGVlblJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfU0hFRU5ST1VHSE5FU1NNQVAiOiIiLHIudmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLHIudmVydGV4Q29sb3JzPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsci52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixyLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLHIudXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLHIuZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLHIuc2tpbm5pbmc/IiNkZWZpbmUgVVNFX1NLSU5OSU5HIjoiIixyLnVzZVZlcnRleFRleHR1cmU/IiNkZWZpbmUgQk9ORV9URVhUVVJFIjoiIixyLm1vcnBoVGFyZ2V0cz8iI2RlZmluZSBVU0VfTU9SUEhUQVJHRVRTIjoiIixyLm1vcnBoTm9ybWFscyYmci5mbGF0U2hhZGluZz09PSExPyIjZGVmaW5lIFVTRV9NT1JQSE5PUk1BTFMiOiIiLHIubW9ycGhUYXJnZXRzJiZyLmlzV2ViR0wyPyIjZGVmaW5lIE1PUlBIVEFSR0VUU19URVhUVVJFIjoiIixyLm1vcnBoVGFyZ2V0cyYmci5pc1dlYkdMMj8iI2RlZmluZSBNT1JQSFRBUkdFVFNfQ09VTlQgIityLm1vcnBoVGFyZ2V0c0NvdW50OiIiLHIuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixyLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixyLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsci5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixyLnNpemVBdHRlbnVhdGlvbj8iI2RlZmluZSBVU0VfU0laRUFUVEVOVUFUSU9OIjoiIixyLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixyLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJnIucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsInVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgbW9kZWxWaWV3TWF0cml4OyIsInVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4OyIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkciLCIJYXR0cmlidXRlIG1hdDQgaW5zdGFuY2VNYXRyaXg7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SIiwiCWF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlQ29sb3I7IiwiI2VuZGlmIiwiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247IiwiYXR0cmlidXRlIHZlYzMgbm9ybWFsOyIsImF0dHJpYnV0ZSB2ZWMyIHV2OyIsIiNpZmRlZiBVU0VfVEFOR0VOVCIsIglhdHRyaWJ1dGUgdmVjNCB0YW5nZW50OyIsIiNlbmRpZiIsIiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKSIsIglhdHRyaWJ1dGUgdmVjNCBjb2xvcjsiLCIjZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSIsIglhdHRyaWJ1dGUgdmVjMyBjb2xvcjsiLCIjZW5kaWYiLCIjaWYgKCBkZWZpbmVkKCBVU0VfTU9SUEhUQVJHRVRTICkgJiYgISBkZWZpbmVkKCBNT1JQSFRBUkdFVFNfVEVYVFVSRSApICkiLCIJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQwOyIsIglhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiCWF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MjsiLCIJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQzOyIsIgkjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwwOyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwxOyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwyOyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwzOyIsIgkjZWxzZSIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ0OyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ1OyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ2OyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ3OyIsIgkjZW5kaWYiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX1NLSU5OSU5HIiwiCWF0dHJpYnV0ZSB2ZWM0IHNraW5JbmRleDsiLCIJYXR0cmlidXRlIHZlYzQgc2tpbldlaWdodDsiLCIjZW5kaWYiLGAKYF0uZmlsdGVyKHpQKS5qb2luKGAKYCksXz1bZixGdWUociksIiNkZWZpbmUgU0hBREVSX05BTUUgIityLnNoYWRlck5hbWUscCxyLnVzZUZvZyYmci5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsci51c2VGb2cmJnIuZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsci5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsci5tYXRjYXA/IiNkZWZpbmUgVVNFX01BVENBUCI6IiIsci5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsci5lbnZNYXA/IiNkZWZpbmUgIitjOiIiLHIuZW52TWFwPyIjZGVmaW5lICIrdToiIixyLmVudk1hcD8iI2RlZmluZSAiK2g6IiIsci5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLHIuYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixyLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsci5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixyLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixyLm5vcm1hbE1hcCYmci5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLHIubm9ybWFsTWFwJiZyLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixyLmNsZWFyY29hdD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUIjoiIixyLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixyLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsci5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLHIuc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixyLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsci5zcGVjdWxhckNvbG9yTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUkNPTE9STUFQIjoiIixyLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixyLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixyLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsci5hbHBoYVRlc3Q/IiNkZWZpbmUgVVNFX0FMUEhBVEVTVCI6IiIsci5zaGVlbj8iI2RlZmluZSBVU0VfU0hFRU4iOiIiLHIuc2hlZW5Db2xvck1hcD8iI2RlZmluZSBVU0VfU0hFRU5DT0xPUk1BUCI6IiIsci5zaGVlblJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfU0hFRU5ST1VHSE5FU1NNQVAiOiIiLHIudHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLHIudHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLHIudGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLHIuZGVjb2RlVmlkZW9UZXh0dXJlPyIjZGVmaW5lIERFQ09ERV9WSURFT19URVhUVVJFIjoiIixyLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixyLnZlcnRleENvbG9yc3x8ci5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixyLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLHIudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsci51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsci5ncmFkaWVudE1hcD8iI2RlZmluZSBVU0VfR1JBRElFTlRNQVAiOiIiLHIuZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLHIuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixyLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixyLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsci5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixyLnByZW11bHRpcGxpZWRBbHBoYT8iI2RlZmluZSBQUkVNVUxUSVBMSUVEX0FMUEhBIjoiIixyLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPyIjZGVmaW5lIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMiOiIiLHIubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLHIubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmci5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwoci5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHxyLmVudk1hcCkmJnIucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZGVmaW5lIFRFWFRVUkVfTE9EX0VYVCI6IiIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IixyLnRvbmVNYXBwaW5nIT09S2Q/IiNkZWZpbmUgVE9ORV9NQVBQSU5HIjoiIixyLnRvbmVNYXBwaW5nIT09S2Q/aHIudG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiIixyLnRvbmVNYXBwaW5nIT09S2Q/WW1yKCJ0b25lTWFwcGluZyIsci50b25lTWFwcGluZyk6IiIsci5kaXRoZXJpbmc/IiNkZWZpbmUgRElUSEVSSU5HIjoiIixyLmFscGhhV3JpdGU/IiI6IiNkZWZpbmUgT1BBUVVFIixoci5lbmNvZGluZ3NfcGFyc19mcmFnbWVudCxXbXIoImxpbmVhclRvT3V0cHV0VGV4ZWwiLHIub3V0cHV0RW5jb2RpbmcpLHIuZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIityLmRlcHRoUGFja2luZzoiIixgCmBdLmZpbHRlcih6UCkuam9pbihgCmApKSxhPVp1dChhKSxhPUR1ZShhLHIpLGE9T3VlKGEscikscz1adXQocykscz1EdWUocyxyKSxzPU91ZShzLHIpLGE9enVlKGEpLHM9enVlKHMpLHIuaXNXZWJHTDImJnIuaXNSYXdTaGFkZXJNYXRlcmlhbCE9PSEwJiYoeT1gI3ZlcnNpb24gMzAwIGVzCmAsZz1bInByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyREFycmF5OyIsIiNkZWZpbmUgYXR0cmlidXRlIGluIiwiI2RlZmluZSB2YXJ5aW5nIG91dCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiXS5qb2luKGAKYCkrYApgK2csXz1bIiNkZWZpbmUgdmFyeWluZyBpbiIsci5nbHNsVmVyc2lvbj09PSR1dD8iIjoibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IGhpZ2hwIHZlYzQgcGNfZnJhZ0NvbG9yOyIsci5nbHNsVmVyc2lvbj09PSR1dD8iIjoiI2RlZmluZSBnbF9GcmFnQ29sb3IgcGNfZnJhZ0NvbG9yIiwiI2RlZmluZSBnbF9GcmFnRGVwdGhFWFQgZ2xfRnJhZ0RlcHRoIiwiI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZSIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvaiB0ZXh0dXJlUHJvaiIsIiNkZWZpbmUgdGV4dHVyZTJETG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pMb2RFWFQgdGV4dHVyZVByb2pMb2QiLCIjZGVmaW5lIHRleHR1cmVDdWJlTG9kRVhUIHRleHR1cmVMb2QiLCIjZGVmaW5lIHRleHR1cmUyREdyYWRFWFQgdGV4dHVyZUdyYWQiLCIjZGVmaW5lIHRleHR1cmUyRFByb2pHcmFkRVhUIHRleHR1cmVQcm9qR3JhZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVHcmFkRVhUIHRleHR1cmVHcmFkIl0uam9pbihgCmApK2AKYCtfKTtsZXQgeD15K2crYSxiPXkrXytzLFM9UnVlKGksMzU2MzMseCksQz1SdWUoaSwzNTYzMixiKTtpZihpLmF0dGFjaFNoYWRlcihkLFMpLGkuYXR0YWNoU2hhZGVyKGQsQyksci5pbmRleDBBdHRyaWJ1dGVOYW1lIT09dm9pZCAwP2kuYmluZEF0dHJpYkxvY2F0aW9uKGQsMCxyLmluZGV4MEF0dHJpYnV0ZU5hbWUpOnIubW9ycGhUYXJnZXRzPT09ITAmJmkuYmluZEF0dHJpYkxvY2F0aW9uKGQsMCwicG9zaXRpb24iKSxpLmxpbmtQcm9ncmFtKGQpLGUuZGVidWcuY2hlY2tTaGFkZXJFcnJvcnMpe2xldCBPPWkuZ2V0UHJvZ3JhbUluZm9Mb2coZCkudHJpbSgpLEQ9aS5nZXRTaGFkZXJJbmZvTG9nKFMpLnRyaW0oKSxCPWkuZ2V0U2hhZGVySW5mb0xvZyhDKS50cmltKCksST0hMCxMPSEwO2lmKGkuZ2V0UHJvZ3JhbVBhcmFtZXRlcihkLDM1NzE0KT09PSExKXtJPSExO2xldCBSPU51ZShpLFMsInZlcnRleCIpLEY9TnVlKGksQywiZnJhZ21lbnQiKTtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFByb2dyYW06IFNoYWRlciBFcnJvciAiK2kuZ2V0RXJyb3IoKSsiIC0gVkFMSURBVEVfU1RBVFVTICIraS5nZXRQcm9ncmFtUGFyYW1ldGVyKGQsMzU3MTUpK2AKClByb2dyYW0gSW5mbyBMb2c6IGArTytgCmArUitgCmArRil9ZWxzZSBPIT09IiI/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFByb2dyYW0gSW5mbyBMb2c6IixPKTooRD09PSIifHxCPT09IiIpJiYoTD0hMSk7TCYmKHRoaXMuZGlhZ25vc3RpY3M9e3J1bm5hYmxlOkkscHJvZ3JhbUxvZzpPLHZlcnRleFNoYWRlcjp7bG9nOkQscHJlZml4Omd9LGZyYWdtZW50U2hhZGVyOntsb2c6QixwcmVmaXg6X319KX1pLmRlbGV0ZVNoYWRlcihTKSxpLmRlbGV0ZVNoYWRlcihDKTtsZXQgUDt0aGlzLmdldFVuaWZvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuIFA9PT12b2lkIDAmJihQPW5ldyBCMChpLGQpKSxQfTtsZXQgaztyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGs9PT12b2lkIDAmJihrPSRtcihpLGQpKSxrfSx0aGlzLmRlc3Ryb3k9ZnVuY3Rpb24oKXtuLnJlbGVhc2VTdGF0ZXNPZlByb2dyYW0odGhpcyksaS5kZWxldGVQcm9ncmFtKGQpLHRoaXMucHJvZ3JhbT12b2lkIDB9LHRoaXMubmFtZT1yLnNoYWRlck5hbWUsdGhpcy5pZD1VbXIrKyx0aGlzLmNhY2hlS2V5PXQsdGhpcy51c2VkVGltZXM9MSx0aGlzLnByb2dyYW09ZCx0aGlzLnZlcnRleFNoYWRlcj1TLHRoaXMuZnJhZ21lbnRTaGFkZXI9Qyx0aGlzfXZhciBhZ3I9MCxKdXQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnNoYWRlckNhY2hlPW5ldyBNYXAsdGhpcy5tYXRlcmlhbENhY2hlPW5ldyBNYXB9dXBkYXRlKHQpe2xldCByPXQudmVydGV4U2hhZGVyLG49dC5mcmFnbWVudFNoYWRlcixpPXRoaXMuX2dldFNoYWRlclN0YWdlKHIpLG89dGhpcy5fZ2V0U2hhZGVyU3RhZ2UobiksYT10aGlzLl9nZXRTaGFkZXJDYWNoZUZvck1hdGVyaWFsKHQpO3JldHVybiBhLmhhcyhpKT09PSExJiYoYS5hZGQoaSksaS51c2VkVGltZXMrKyksYS5oYXMobyk9PT0hMSYmKGEuYWRkKG8pLG8udXNlZFRpbWVzKyspLHRoaXN9cmVtb3ZlKHQpe2xldCByPXRoaXMubWF0ZXJpYWxDYWNoZS5nZXQodCk7Zm9yKGxldCBuIG9mIHIpbi51c2VkVGltZXMtLSxuLnVzZWRUaW1lcz09PTAmJnRoaXMuc2hhZGVyQ2FjaGUuZGVsZXRlKG4pO3JldHVybiB0aGlzLm1hdGVyaWFsQ2FjaGUuZGVsZXRlKHQpLHRoaXN9Z2V0VmVydGV4U2hhZGVySUQodCl7cmV0dXJuIHRoaXMuX2dldFNoYWRlclN0YWdlKHQudmVydGV4U2hhZGVyKS5pZH1nZXRGcmFnbWVudFNoYWRlcklEKHQpe3JldHVybiB0aGlzLl9nZXRTaGFkZXJTdGFnZSh0LmZyYWdtZW50U2hhZGVyKS5pZH1kaXNwb3NlKCl7dGhpcy5zaGFkZXJDYWNoZS5jbGVhcigpLHRoaXMubWF0ZXJpYWxDYWNoZS5jbGVhcigpfV9nZXRTaGFkZXJDYWNoZUZvck1hdGVyaWFsKHQpe2xldCByPXRoaXMubWF0ZXJpYWxDYWNoZTtyZXR1cm4gci5oYXModCk9PT0hMSYmci5zZXQodCxuZXcgU2V0KSxyLmdldCh0KX1fZ2V0U2hhZGVyU3RhZ2UodCl7bGV0IHI9dGhpcy5zaGFkZXJDYWNoZTtpZihyLmhhcyh0KT09PSExKXtsZXQgbj1uZXcgUXV0O3Iuc2V0KHQsbil9cmV0dXJuIHIuZ2V0KHQpfX0sUXV0PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5pZD1hZ3IrKyx0aGlzLnVzZWRUaW1lcz0wfX07ZnVuY3Rpb24gc2dyKGUsdCxyLG4saSxvLGEpe2xldCBzPW5ldyBqMyxsPW5ldyBKdXQsYz1bXSx1PWkuaXNXZWJHTDIsaD1pLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsZj1pLmZsb2F0VmVydGV4VGV4dHVyZXMscD1pLm1heFZlcnRleFVuaWZvcm1zLGQ9aS52ZXJ0ZXhUZXh0dXJlcyxnPWkucHJlY2lzaW9uLF89e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsTWVzaE5vcm1hbE1hdGVyaWFsOiJub3JtYWwiLE1lc2hCYXNpY01hdGVyaWFsOiJiYXNpYyIsTWVzaExhbWJlcnRNYXRlcmlhbDoibGFtYmVydCIsTWVzaFBob25nTWF0ZXJpYWw6InBob25nIixNZXNoVG9vbk1hdGVyaWFsOiJ0b29uIixNZXNoU3RhbmRhcmRNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hQaHlzaWNhbE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaE1hdGNhcE1hdGVyaWFsOiJtYXRjYXAiLExpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifTtmdW5jdGlvbiB5KEkpe2xldCBSPUkuc2tlbGV0b24uYm9uZXM7aWYoZilyZXR1cm4gMTAyNDt7bGV0IHo9TWF0aC5mbG9vcigocC0yMCkvNCksVT1NYXRoLm1pbih6LFIubGVuZ3RoKTtyZXR1cm4gVTxSLmxlbmd0aD8oY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBTa2VsZXRvbiBoYXMgIitSLmxlbmd0aCsiIGJvbmVzLiBUaGlzIEdQVSBzdXBwb3J0cyAiK1UrIi4iKSwwKTpVfX1mdW5jdGlvbiB4KEksTCxSLEYseil7bGV0IFU9Ri5mb2csVz1JLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/Ri5lbnZpcm9ubWVudDpudWxsLFo9KEkuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9yOnQpLmdldChJLmVudk1hcHx8VykscnQ9X1tJLnR5cGVdLG90PXouaXNTa2lubmVkTWVzaD95KHopOjA7SS5wcmVjaXNpb24hPT1udWxsJiYoZz1pLmdldE1heFByZWNpc2lvbihJLnByZWNpc2lvbiksZyE9PUkucHJlY2lzaW9uJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbS5nZXRQYXJhbWV0ZXJzOiIsSS5wcmVjaXNpb24sIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixnLCJpbnN0ZWFkLiIpKTtsZXQgc3QsU3QsYnQsTXQ7aWYocnQpe2xldCBYPW9oW3J0XTtzdD1YLnZlcnRleFNoYWRlcixTdD1YLmZyYWdtZW50U2hhZGVyfWVsc2Ugc3Q9SS52ZXJ0ZXhTaGFkZXIsU3Q9SS5mcmFnbWVudFNoYWRlcixsLnVwZGF0ZShJKSxidD1sLmdldFZlcnRleFNoYWRlcklEKEkpLE10PWwuZ2V0RnJhZ21lbnRTaGFkZXJJRChJKTtsZXQgbHQ9ZS5nZXRSZW5kZXJUYXJnZXQoKSxLdD1JLmFscGhhVGVzdD4wLF90PUkuY2xlYXJjb2F0PjA7cmV0dXJue2lzV2ViR0wyOnUsc2hhZGVySUQ6cnQsc2hhZGVyTmFtZTpJLnR5cGUsdmVydGV4U2hhZGVyOnN0LGZyYWdtZW50U2hhZGVyOlN0LGRlZmluZXM6SS5kZWZpbmVzLGN1c3RvbVZlcnRleFNoYWRlcklEOmJ0LGN1c3RvbUZyYWdtZW50U2hhZGVySUQ6TXQsaXNSYXdTaGFkZXJNYXRlcmlhbDpJLmlzUmF3U2hhZGVyTWF0ZXJpYWw9PT0hMCxnbHNsVmVyc2lvbjpJLmdsc2xWZXJzaW9uLHByZWNpc2lvbjpnLGluc3RhbmNpbmc6ei5pc0luc3RhbmNlZE1lc2g9PT0hMCxpbnN0YW5jaW5nQ29sb3I6ei5pc0luc3RhbmNlZE1lc2g9PT0hMCYmei5pbnN0YW5jZUNvbG9yIT09bnVsbCxzdXBwb3J0c1ZlcnRleFRleHR1cmVzOmQsb3V0cHV0RW5jb2Rpbmc6bHQ9PT1udWxsP2Uub3V0cHV0RW5jb2Rpbmc6bHQuaXNYUlJlbmRlclRhcmdldD09PSEwP2x0LnRleHR1cmUuZW5jb2Rpbmc6UWQsbWFwOiEhSS5tYXAsbWF0Y2FwOiEhSS5tYXRjYXAsZW52TWFwOiEhWixlbnZNYXBNb2RlOlomJloubWFwcGluZyxlbnZNYXBDdWJlVVY6ISFaJiYoWi5tYXBwaW5nPT09dk18fFoubWFwcGluZz09PU42KSxsaWdodE1hcDohIUkubGlnaHRNYXAsYW9NYXA6ISFJLmFvTWFwLGVtaXNzaXZlTWFwOiEhSS5lbWlzc2l2ZU1hcCxidW1wTWFwOiEhSS5idW1wTWFwLG5vcm1hbE1hcDohIUkubm9ybWFsTWFwLG9iamVjdFNwYWNlTm9ybWFsTWFwOkkubm9ybWFsTWFwVHlwZT09PVRmZSx0YW5nZW50U3BhY2VOb3JtYWxNYXA6SS5ub3JtYWxNYXBUeXBlPT09YXgsZGVjb2RlVmlkZW9UZXh0dXJlOiEhSS5tYXAmJkkubWFwLmlzVmlkZW9UZXh0dXJlPT09ITAmJkkubWFwLmVuY29kaW5nPT09WW4sY2xlYXJjb2F0Ol90LGNsZWFyY29hdE1hcDpfdCYmISFJLmNsZWFyY29hdE1hcCxjbGVhcmNvYXRSb3VnaG5lc3NNYXA6X3QmJiEhSS5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsY2xlYXJjb2F0Tm9ybWFsTWFwOl90JiYhIUkuY2xlYXJjb2F0Tm9ybWFsTWFwLGRpc3BsYWNlbWVudE1hcDohIUkuZGlzcGxhY2VtZW50TWFwLHJvdWdobmVzc01hcDohIUkucm91Z2huZXNzTWFwLG1ldGFsbmVzc01hcDohIUkubWV0YWxuZXNzTWFwLHNwZWN1bGFyTWFwOiEhSS5zcGVjdWxhck1hcCxzcGVjdWxhckludGVuc2l0eU1hcDohIUkuc3BlY3VsYXJJbnRlbnNpdHlNYXAsc3BlY3VsYXJDb2xvck1hcDohIUkuc3BlY3VsYXJDb2xvck1hcCxhbHBoYU1hcDohIUkuYWxwaGFNYXAsYWxwaGFUZXN0Okt0LGFscGhhV3JpdGU6SS5hbHBoYVdyaXRlfHxJLnRyYW5zcGFyZW50LGdyYWRpZW50TWFwOiEhSS5ncmFkaWVudE1hcCxzaGVlbjpJLnNoZWVuPjAsc2hlZW5Db2xvck1hcDohIUkuc2hlZW5Db2xvck1hcCxzaGVlblJvdWdobmVzc01hcDohIUkuc2hlZW5Sb3VnaG5lc3NNYXAsdHJhbnNtaXNzaW9uOkkudHJhbnNtaXNzaW9uPjAsdHJhbnNtaXNzaW9uTWFwOiEhSS50cmFuc21pc3Npb25NYXAsdGhpY2tuZXNzTWFwOiEhSS50aGlja25lc3NNYXAsY29tYmluZTpJLmNvbWJpbmUsdmVydGV4VGFuZ2VudHM6ISFJLm5vcm1hbE1hcCYmISF6Lmdlb21ldHJ5JiYhIXouZ2VvbWV0cnkuYXR0cmlidXRlcy50YW5nZW50LHZlcnRleENvbG9yczpJLnZlcnRleENvbG9ycyx2ZXJ0ZXhBbHBoYXM6SS52ZXJ0ZXhDb2xvcnM9PT0hMCYmISF6Lmdlb21ldHJ5JiYhIXouZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvciYmei5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplPT09NCx2ZXJ0ZXhVdnM6ISFJLm1hcHx8ISFJLmJ1bXBNYXB8fCEhSS5ub3JtYWxNYXB8fCEhSS5zcGVjdWxhck1hcHx8ISFJLmFscGhhTWFwfHwhIUkuZW1pc3NpdmVNYXB8fCEhSS5yb3VnaG5lc3NNYXB8fCEhSS5tZXRhbG5lc3NNYXB8fCEhSS5jbGVhcmNvYXRNYXB8fCEhSS5jbGVhcmNvYXRSb3VnaG5lc3NNYXB8fCEhSS5jbGVhcmNvYXROb3JtYWxNYXB8fCEhSS5kaXNwbGFjZW1lbnRNYXB8fCEhSS50cmFuc21pc3Npb25NYXB8fCEhSS50aGlja25lc3NNYXB8fCEhSS5zcGVjdWxhckludGVuc2l0eU1hcHx8ISFJLnNwZWN1bGFyQ29sb3JNYXB8fCEhSS5zaGVlbkNvbG9yTWFwfHwhIUkuc2hlZW5Sb3VnaG5lc3NNYXAsdXZzVmVydGV4T25seTohKCEhSS5tYXB8fCEhSS5idW1wTWFwfHwhIUkubm9ybWFsTWFwfHwhIUkuc3BlY3VsYXJNYXB8fCEhSS5hbHBoYU1hcHx8ISFJLmVtaXNzaXZlTWFwfHwhIUkucm91Z2huZXNzTWFwfHwhIUkubWV0YWxuZXNzTWFwfHwhIUkuY2xlYXJjb2F0Tm9ybWFsTWFwfHxJLnRyYW5zbWlzc2lvbj4wfHwhIUkudHJhbnNtaXNzaW9uTWFwfHwhIUkudGhpY2tuZXNzTWFwfHwhIUkuc3BlY3VsYXJJbnRlbnNpdHlNYXB8fCEhSS5zcGVjdWxhckNvbG9yTWFwfHxJLnNoZWVuPjB8fCEhSS5zaGVlbkNvbG9yTWFwfHwhIUkuc2hlZW5Sb3VnaG5lc3NNYXApJiYhIUkuZGlzcGxhY2VtZW50TWFwLGZvZzohIVUsdXNlRm9nOkkuZm9nLGZvZ0V4cDI6VSYmVS5pc0ZvZ0V4cDIsZmxhdFNoYWRpbmc6ISFJLmZsYXRTaGFkaW5nLHNpemVBdHRlbnVhdGlvbjpJLnNpemVBdHRlbnVhdGlvbixsb2dhcml0aG1pY0RlcHRoQnVmZmVyOmgsc2tpbm5pbmc6ei5pc1NraW5uZWRNZXNoPT09ITAmJm90PjAsbWF4Qm9uZXM6b3QsdXNlVmVydGV4VGV4dHVyZTpmLG1vcnBoVGFyZ2V0czohIXouZ2VvbWV0cnkmJiEhei5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbW9ycGhOb3JtYWxzOiEhei5nZW9tZXRyeSYmISF6Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsbW9ycGhUYXJnZXRzQ291bnQ6ISF6Lmdlb21ldHJ5JiYhIXouZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uP3ouZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aDowLG51bURpckxpZ2h0czpMLmRpcmVjdGlvbmFsLmxlbmd0aCxudW1Qb2ludExpZ2h0czpMLnBvaW50Lmxlbmd0aCxudW1TcG90TGlnaHRzOkwuc3BvdC5sZW5ndGgsbnVtUmVjdEFyZWFMaWdodHM6TC5yZWN0QXJlYS5sZW5ndGgsbnVtSGVtaUxpZ2h0czpMLmhlbWkubGVuZ3RoLG51bURpckxpZ2h0U2hhZG93czpMLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aCxudW1Qb2ludExpZ2h0U2hhZG93czpMLnBvaW50U2hhZG93TWFwLmxlbmd0aCxudW1TcG90TGlnaHRTaGFkb3dzOkwuc3BvdFNoYWRvd01hcC5sZW5ndGgsbnVtQ2xpcHBpbmdQbGFuZXM6YS5udW1QbGFuZXMsbnVtQ2xpcEludGVyc2VjdGlvbjphLm51bUludGVyc2VjdGlvbixkaXRoZXJpbmc6SS5kaXRoZXJpbmcsc2hhZG93TWFwRW5hYmxlZDplLnNoYWRvd01hcC5lbmFibGVkJiZSLmxlbmd0aD4wLHNoYWRvd01hcFR5cGU6ZS5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzpJLnRvbmVNYXBwZWQ/ZS50b25lTWFwcGluZzpLZCxwaHlzaWNhbGx5Q29ycmVjdExpZ2h0czplLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLHByZW11bHRpcGxpZWRBbHBoYTpJLnByZW11bHRpcGxpZWRBbHBoYSxkb3VibGVTaWRlZDpJLnNpZGU9PT1MMSxmbGlwU2lkZWQ6SS5zaWRlPT09SWksZGVwdGhQYWNraW5nOkkuZGVwdGhQYWNraW5nIT09dm9pZCAwP0kuZGVwdGhQYWNraW5nOiExLGluZGV4MEF0dHJpYnV0ZU5hbWU6SS5pbmRleDBBdHRyaWJ1dGVOYW1lLGV4dGVuc2lvbkRlcml2YXRpdmVzOkkuZXh0ZW5zaW9ucyYmSS5leHRlbnNpb25zLmRlcml2YXRpdmVzLGV4dGVuc2lvbkZyYWdEZXB0aDpJLmV4dGVuc2lvbnMmJkkuZXh0ZW5zaW9ucy5mcmFnRGVwdGgsZXh0ZW5zaW9uRHJhd0J1ZmZlcnM6SS5leHRlbnNpb25zJiZJLmV4dGVuc2lvbnMuZHJhd0J1ZmZlcnMsZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRDpJLmV4dGVuc2lvbnMmJkkuZXh0ZW5zaW9ucy5zaGFkZXJUZXh0dXJlTE9ELHJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoOnV8fG4uaGFzKCJFWFRfZnJhZ19kZXB0aCIpLHJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM6dXx8bi5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZDp1fHxuLmhhcygiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpLGN1c3RvbVByb2dyYW1DYWNoZUtleTpJLmN1c3RvbVByb2dyYW1DYWNoZUtleSgpfX1mdW5jdGlvbiBiKEkpe2xldCBMPVtdO2lmKEkuc2hhZGVySUQ/TC5wdXNoKEkuc2hhZGVySUQpOihMLnB1c2goSS5jdXN0b21WZXJ0ZXhTaGFkZXJJRCksTC5wdXNoKEkuY3VzdG9tRnJhZ21lbnRTaGFkZXJJRCkpLEkuZGVmaW5lcyE9PXZvaWQgMClmb3IobGV0IFIgaW4gSS5kZWZpbmVzKUwucHVzaChSKSxMLnB1c2goSS5kZWZpbmVzW1JdKTtyZXR1cm4gSS5pc1Jhd1NoYWRlck1hdGVyaWFsPT09ITEmJihTKEwsSSksQyhMLEkpLEwucHVzaChlLm91dHB1dEVuY29kaW5nKSksTC5wdXNoKEkuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KSxMLmpvaW4oKX1mdW5jdGlvbiBTKEksTCl7SS5wdXNoKEwucHJlY2lzaW9uKSxJLnB1c2goTC5vdXRwdXRFbmNvZGluZyksSS5wdXNoKEwuZW52TWFwTW9kZSksSS5wdXNoKEwuY29tYmluZSksSS5wdXNoKEwudmVydGV4VXZzKSxJLnB1c2goTC5mb2dFeHAyKSxJLnB1c2goTC5zaXplQXR0ZW51YXRpb24pLEkucHVzaChMLm1heEJvbmVzKSxJLnB1c2goTC5tb3JwaFRhcmdldHNDb3VudCksSS5wdXNoKEwubnVtRGlyTGlnaHRzKSxJLnB1c2goTC5udW1Qb2ludExpZ2h0cyksSS5wdXNoKEwubnVtU3BvdExpZ2h0cyksSS5wdXNoKEwubnVtSGVtaUxpZ2h0cyksSS5wdXNoKEwubnVtUmVjdEFyZWFMaWdodHMpLEkucHVzaChMLm51bURpckxpZ2h0U2hhZG93cyksSS5wdXNoKEwubnVtUG9pbnRMaWdodFNoYWRvd3MpLEkucHVzaChMLm51bVNwb3RMaWdodFNoYWRvd3MpLEkucHVzaChMLnNoYWRvd01hcFR5cGUpLEkucHVzaChMLnRvbmVNYXBwaW5nKSxJLnB1c2goTC5udW1DbGlwcGluZ1BsYW5lcyksSS5wdXNoKEwubnVtQ2xpcEludGVyc2VjdGlvbiksSS5wdXNoKEwuYWxwaGFXcml0ZSl9ZnVuY3Rpb24gQyhJLEwpe3MuZGlzYWJsZUFsbCgpLEwuaXNXZWJHTDImJnMuZW5hYmxlKDApLEwuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcyYmcy5lbmFibGUoMSksTC5pbnN0YW5jaW5nJiZzLmVuYWJsZSgyKSxMLmluc3RhbmNpbmdDb2xvciYmcy5lbmFibGUoMyksTC5tYXAmJnMuZW5hYmxlKDQpLEwubWF0Y2FwJiZzLmVuYWJsZSg1KSxMLmVudk1hcCYmcy5lbmFibGUoNiksTC5lbnZNYXBDdWJlVVYmJnMuZW5hYmxlKDcpLEwubGlnaHRNYXAmJnMuZW5hYmxlKDgpLEwuYW9NYXAmJnMuZW5hYmxlKDkpLEwuZW1pc3NpdmVNYXAmJnMuZW5hYmxlKDEwKSxMLmJ1bXBNYXAmJnMuZW5hYmxlKDExKSxMLm5vcm1hbE1hcCYmcy5lbmFibGUoMTIpLEwub2JqZWN0U3BhY2VOb3JtYWxNYXAmJnMuZW5hYmxlKDEzKSxMLnRhbmdlbnRTcGFjZU5vcm1hbE1hcCYmcy5lbmFibGUoMTQpLEwuY2xlYXJjb2F0JiZzLmVuYWJsZSgxNSksTC5jbGVhcmNvYXRNYXAmJnMuZW5hYmxlKDE2KSxMLmNsZWFyY29hdFJvdWdobmVzc01hcCYmcy5lbmFibGUoMTcpLEwuY2xlYXJjb2F0Tm9ybWFsTWFwJiZzLmVuYWJsZSgxOCksTC5kaXNwbGFjZW1lbnRNYXAmJnMuZW5hYmxlKDE5KSxMLnNwZWN1bGFyTWFwJiZzLmVuYWJsZSgyMCksTC5yb3VnaG5lc3NNYXAmJnMuZW5hYmxlKDIxKSxMLm1ldGFsbmVzc01hcCYmcy5lbmFibGUoMjIpLEwuZ3JhZGllbnRNYXAmJnMuZW5hYmxlKDIzKSxMLmFscGhhTWFwJiZzLmVuYWJsZSgyNCksTC5hbHBoYVRlc3QmJnMuZW5hYmxlKDI1KSxMLnZlcnRleENvbG9ycyYmcy5lbmFibGUoMjYpLEwudmVydGV4QWxwaGFzJiZzLmVuYWJsZSgyNyksTC52ZXJ0ZXhVdnMmJnMuZW5hYmxlKDI4KSxMLnZlcnRleFRhbmdlbnRzJiZzLmVuYWJsZSgyOSksTC51dnNWZXJ0ZXhPbmx5JiZzLmVuYWJsZSgzMCksTC5mb2cmJnMuZW5hYmxlKDMxKSxJLnB1c2gocy5tYXNrKSxzLmRpc2FibGVBbGwoKSxMLnVzZUZvZyYmcy5lbmFibGUoMCksTC5mbGF0U2hhZGluZyYmcy5lbmFibGUoMSksTC5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZzLmVuYWJsZSgyKSxMLnNraW5uaW5nJiZzLmVuYWJsZSgzKSxMLnVzZVZlcnRleFRleHR1cmUmJnMuZW5hYmxlKDQpLEwubW9ycGhUYXJnZXRzJiZzLmVuYWJsZSg1KSxMLm1vcnBoTm9ybWFscyYmcy5lbmFibGUoNiksTC5wcmVtdWx0aXBsaWVkQWxwaGEmJnMuZW5hYmxlKDcpLEwuc2hhZG93TWFwRW5hYmxlZCYmcy5lbmFibGUoOCksTC5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyYmcy5lbmFibGUoOSksTC5kb3VibGVTaWRlZCYmcy5lbmFibGUoMTApLEwuZmxpcFNpZGVkJiZzLmVuYWJsZSgxMSksTC5kZXB0aFBhY2tpbmcmJnMuZW5hYmxlKDEyKSxMLmRpdGhlcmluZyYmcy5lbmFibGUoMTMpLEwuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJnMuZW5hYmxlKDE0KSxMLnNwZWN1bGFyQ29sb3JNYXAmJnMuZW5hYmxlKDE1KSxMLnRyYW5zbWlzc2lvbiYmcy5lbmFibGUoMTYpLEwudHJhbnNtaXNzaW9uTWFwJiZzLmVuYWJsZSgxNyksTC50aGlja25lc3NNYXAmJnMuZW5hYmxlKDE4KSxMLnNoZWVuJiZzLmVuYWJsZSgxOSksTC5zaGVlbkNvbG9yTWFwJiZzLmVuYWJsZSgyMCksTC5zaGVlblJvdWdobmVzc01hcCYmcy5lbmFibGUoMjEpLEwuZGVjb2RlVmlkZW9UZXh0dXJlJiZzLmVuYWJsZSgyMiksSS5wdXNoKHMubWFzayl9ZnVuY3Rpb24gUChJKXtsZXQgTD1fW0kudHlwZV0sUjtpZihMKXtsZXQgRj1vaFtMXTtSPWtmZS5jbG9uZShGLnVuaWZvcm1zKX1lbHNlIFI9SS51bmlmb3JtcztyZXR1cm4gUn1mdW5jdGlvbiBrKEksTCl7bGV0IFI7Zm9yKGxldCBGPTAsej1jLmxlbmd0aDtGPHo7RisrKXtsZXQgVT1jW0ZdO2lmKFUuY2FjaGVLZXk9PT1MKXtSPVUsKytSLnVzZWRUaW1lczticmVha319cmV0dXJuIFI9PT12b2lkIDAmJihSPW5ldyBvZ3IoZSxMLEksbyksYy5wdXNoKFIpKSxSfWZ1bmN0aW9uIE8oSSl7aWYoLS1JLnVzZWRUaW1lcz09PTApe2xldCBMPWMuaW5kZXhPZihJKTtjW0xdPWNbYy5sZW5ndGgtMV0sYy5wb3AoKSxJLmRlc3Ryb3koKX19ZnVuY3Rpb24gRChJKXtsLnJlbW92ZShJKX1mdW5jdGlvbiBCKCl7bC5kaXNwb3NlKCl9cmV0dXJue2dldFBhcmFtZXRlcnM6eCxnZXRQcm9ncmFtQ2FjaGVLZXk6YixnZXRVbmlmb3JtczpQLGFjcXVpcmVQcm9ncmFtOmsscmVsZWFzZVByb2dyYW06TyxyZWxlYXNlU2hhZGVyQ2FjaGU6RCxwcm9ncmFtczpjLGRpc3Bvc2U6Qn19ZnVuY3Rpb24gbGdyKCl7bGV0IGU9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdChvKXtsZXQgYT1lLmdldChvKTtyZXR1cm4gYT09PXZvaWQgMCYmKGE9e30sZS5zZXQobyxhKSksYX1mdW5jdGlvbiByKG8pe2UuZGVsZXRlKG8pfWZ1bmN0aW9uIG4obyxhLHMpe2UuZ2V0KG8pW2FdPXN9ZnVuY3Rpb24gaSgpe2U9bmV3IFdlYWtNYXB9cmV0dXJue2dldDp0LHJlbW92ZTpyLHVwZGF0ZTpuLGRpc3Bvc2U6aX19ZnVuY3Rpb24gY2dyKGUsdCl7cmV0dXJuIGUuZ3JvdXBPcmRlciE9PXQuZ3JvdXBPcmRlcj9lLmdyb3VwT3JkZXItdC5ncm91cE9yZGVyOmUucmVuZGVyT3JkZXIhPT10LnJlbmRlck9yZGVyP2UucmVuZGVyT3JkZXItdC5yZW5kZXJPcmRlcjplLm1hdGVyaWFsLmlkIT09dC5tYXRlcmlhbC5pZD9lLm1hdGVyaWFsLmlkLXQubWF0ZXJpYWwuaWQ6ZS56IT09dC56P2Uuei10Lno6ZS5pZC10LmlkfWZ1bmN0aW9uIEJ1ZShlLHQpe3JldHVybiBlLmdyb3VwT3JkZXIhPT10Lmdyb3VwT3JkZXI/ZS5ncm91cE9yZGVyLXQuZ3JvdXBPcmRlcjplLnJlbmRlck9yZGVyIT09dC5yZW5kZXJPcmRlcj9lLnJlbmRlck9yZGVyLXQucmVuZGVyT3JkZXI6ZS56IT09dC56P3Quei1lLno6ZS5pZC10LmlkfWZ1bmN0aW9uIEh1ZSgpe2xldCBlPVtdLHQ9MCxyPVtdLG49W10saT1bXTtmdW5jdGlvbiBvKCl7dD0wLHIubGVuZ3RoPTAsbi5sZW5ndGg9MCxpLmxlbmd0aD0wfWZ1bmN0aW9uIGEoaCxmLHAsZCxnLF8pe2xldCB5PWVbdF07cmV0dXJuIHk9PT12b2lkIDA/KHk9e2lkOmguaWQsb2JqZWN0OmgsZ2VvbWV0cnk6ZixtYXRlcmlhbDpwLGdyb3VwT3JkZXI6ZCxyZW5kZXJPcmRlcjpoLnJlbmRlck9yZGVyLHo6Zyxncm91cDpffSxlW3RdPXkpOih5LmlkPWguaWQseS5vYmplY3Q9aCx5Lmdlb21ldHJ5PWYseS5tYXRlcmlhbD1wLHkuZ3JvdXBPcmRlcj1kLHkucmVuZGVyT3JkZXI9aC5yZW5kZXJPcmRlcix5Lno9Zyx5Lmdyb3VwPV8pLHQrKyx5fWZ1bmN0aW9uIHMoaCxmLHAsZCxnLF8pe2xldCB5PWEoaCxmLHAsZCxnLF8pO3AudHJhbnNtaXNzaW9uPjA/bi5wdXNoKHkpOnAudHJhbnNwYXJlbnQ9PT0hMD9pLnB1c2goeSk6ci5wdXNoKHkpfWZ1bmN0aW9uIGwoaCxmLHAsZCxnLF8pe2xldCB5PWEoaCxmLHAsZCxnLF8pO3AudHJhbnNtaXNzaW9uPjA/bi51bnNoaWZ0KHkpOnAudHJhbnNwYXJlbnQ9PT0hMD9pLnVuc2hpZnQoeSk6ci51bnNoaWZ0KHkpfWZ1bmN0aW9uIGMoaCxmKXtyLmxlbmd0aD4xJiZyLnNvcnQoaHx8Y2dyKSxuLmxlbmd0aD4xJiZuLnNvcnQoZnx8QnVlKSxpLmxlbmd0aD4xJiZpLnNvcnQoZnx8QnVlKX1mdW5jdGlvbiB1KCl7Zm9yKGxldCBoPXQsZj1lLmxlbmd0aDtoPGY7aCsrKXtsZXQgcD1lW2hdO2lmKHAuaWQ9PT1udWxsKWJyZWFrO3AuaWQ9bnVsbCxwLm9iamVjdD1udWxsLHAuZ2VvbWV0cnk9bnVsbCxwLm1hdGVyaWFsPW51bGwscC5ncm91cD1udWxsfX1yZXR1cm57b3BhcXVlOnIsdHJhbnNtaXNzaXZlOm4sdHJhbnNwYXJlbnQ6aSxpbml0Om8scHVzaDpzLHVuc2hpZnQ6bCxmaW5pc2g6dSxzb3J0OmN9fWZ1bmN0aW9uIHVncigpe2xldCBlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHQobixpKXtsZXQgbztyZXR1cm4gZS5oYXMobik9PT0hMT8obz1uZXcgSHVlLGUuc2V0KG4sW29dKSk6aT49ZS5nZXQobikubGVuZ3RoPyhvPW5ldyBIdWUsZS5nZXQobikucHVzaChvKSk6bz1lLmdldChuKVtpXSxvfWZ1bmN0aW9uIHIoKXtlPW5ldyBXZWFrTWFwfXJldHVybntnZXQ6dCxkaXNwb3NlOnJ9fWZ1bmN0aW9uIGhncigpe2xldCBlPXt9O3JldHVybntnZXQ6ZnVuY3Rpb24odCl7aWYoZVt0LmlkXSE9PXZvaWQgMClyZXR1cm4gZVt0LmlkXTtsZXQgcjtzd2l0Y2godC50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOnI9e2RpcmVjdGlvbjpuZXcgaixjb2xvcjpuZXcgbmV9O2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpyPXtwb3NpdGlvbjpuZXcgaixkaXJlY3Rpb246bmV3IGosY29sb3I6bmV3IG5lLGRpc3RhbmNlOjAsY29uZUNvczowLHBlbnVtYnJhQ29zOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpyPXtwb3NpdGlvbjpuZXcgaixjb2xvcjpuZXcgbmUsZGlzdGFuY2U6MCxkZWNheTowfTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6cj17ZGlyZWN0aW9uOm5ldyBqLHNreUNvbG9yOm5ldyBuZSxncm91bmRDb2xvcjpuZXcgbmV9O2JyZWFrO2Nhc2UiUmVjdEFyZWFMaWdodCI6cj17Y29sb3I6bmV3IG5lLHBvc2l0aW9uOm5ldyBqLGhhbGZXaWR0aDpuZXcgaixoYWxmSGVpZ2h0Om5ldyBqfTticmVha31yZXR1cm4gZVt0LmlkXT1yLHJ9fX1mdW5jdGlvbiBmZ3IoKXtsZXQgZT17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKHQpe2lmKGVbdC5pZF0hPT12b2lkIDApcmV0dXJuIGVbdC5pZF07bGV0IHI7c3dpdGNoKHQudHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpyPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IEx0fTticmVhaztjYXNlIlNwb3RMaWdodCI6cj17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBMdH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpyPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IEx0LHNoYWRvd0NhbWVyYU5lYXI6MSxzaGFkb3dDYW1lcmFGYXI6MWUzfTticmVha31yZXR1cm4gZVt0LmlkXT1yLHJ9fX12YXIgcGdyPTA7ZnVuY3Rpb24gZGdyKGUsdCl7cmV0dXJuKHQuY2FzdFNoYWRvdz8xOjApLShlLmNhc3RTaGFkb3c/MTowKX1mdW5jdGlvbiBtZ3IoZSx0KXtsZXQgcj1uZXcgaGdyLG49ZmdyKCksaT17dmVyc2lvbjowLGhhc2g6e2RpcmVjdGlvbmFsTGVuZ3RoOi0xLHBvaW50TGVuZ3RoOi0xLHNwb3RMZW5ndGg6LTEscmVjdEFyZWFMZW5ndGg6LTEsaGVtaUxlbmd0aDotMSxudW1EaXJlY3Rpb25hbFNoYWRvd3M6LTEsbnVtUG9pbnRTaGFkb3dzOi0xLG51bVNwb3RTaGFkb3dzOi0xfSxhbWJpZW50OlswLDAsMF0scHJvYmU6W10sZGlyZWN0aW9uYWw6W10sZGlyZWN0aW9uYWxTaGFkb3c6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXA6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6W10sc3BvdDpbXSxzcG90U2hhZG93OltdLHNwb3RTaGFkb3dNYXA6W10sc3BvdFNoYWRvd01hdHJpeDpbXSxyZWN0QXJlYTpbXSxyZWN0QXJlYUxUQzE6bnVsbCxyZWN0QXJlYUxUQzI6bnVsbCxwb2ludDpbXSxwb2ludFNoYWRvdzpbXSxwb2ludFNoYWRvd01hcDpbXSxwb2ludFNoYWRvd01hdHJpeDpbXSxoZW1pOltdfTtmb3IobGV0IHU9MDt1PDk7dSsrKWkucHJvYmUucHVzaChuZXcgaik7bGV0IG89bmV3IGosYT1uZXcgTWUscz1uZXcgTWU7ZnVuY3Rpb24gbCh1LGgpe2xldCBmPTAscD0wLGQ9MDtmb3IobGV0IEQ9MDtEPDk7RCsrKWkucHJvYmVbRF0uc2V0KDAsMCwwKTtsZXQgZz0wLF89MCx5PTAseD0wLGI9MCxTPTAsQz0wLFA9MDt1LnNvcnQoZGdyKTtsZXQgaz1oIT09ITA/TWF0aC5QSToxO2ZvcihsZXQgRD0wLEI9dS5sZW5ndGg7RDxCO0QrKyl7bGV0IEk9dVtEXSxMPUkuY29sb3IsUj1JLmludGVuc2l0eSxGPUkuZGlzdGFuY2Usej1JLnNoYWRvdyYmSS5zaGFkb3cubWFwP0kuc2hhZG93Lm1hcC50ZXh0dXJlOm51bGw7aWYoSS5pc0FtYmllbnRMaWdodClmKz1MLnIqUiprLHArPUwuZypSKmssZCs9TC5iKlIqaztlbHNlIGlmKEkuaXNMaWdodFByb2JlKWZvcihsZXQgVT0wO1U8OTtVKyspaS5wcm9iZVtVXS5hZGRTY2FsZWRWZWN0b3IoSS5zaC5jb2VmZmljaWVudHNbVV0sUik7ZWxzZSBpZihJLmlzRGlyZWN0aW9uYWxMaWdodCl7bGV0IFU9ci5nZXQoSSk7aWYoVS5jb2xvci5jb3B5KEkuY29sb3IpLm11bHRpcGx5U2NhbGFyKEkuaW50ZW5zaXR5KmspLEkuY2FzdFNoYWRvdyl7bGV0IFc9SS5zaGFkb3csWj1uLmdldChJKTtaLnNoYWRvd0JpYXM9Vy5iaWFzLFouc2hhZG93Tm9ybWFsQmlhcz1XLm5vcm1hbEJpYXMsWi5zaGFkb3dSYWRpdXM9Vy5yYWRpdXMsWi5zaGFkb3dNYXBTaXplPVcubWFwU2l6ZSxpLmRpcmVjdGlvbmFsU2hhZG93W2ddPVosaS5kaXJlY3Rpb25hbFNoYWRvd01hcFtnXT16LGkuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbZ109SS5zaGFkb3cubWF0cml4LFMrK31pLmRpcmVjdGlvbmFsW2ddPVUsZysrfWVsc2UgaWYoSS5pc1Nwb3RMaWdodCl7bGV0IFU9ci5nZXQoSSk7aWYoVS5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oSS5tYXRyaXhXb3JsZCksVS5jb2xvci5jb3B5KEwpLm11bHRpcGx5U2NhbGFyKFIqayksVS5kaXN0YW5jZT1GLFUuY29uZUNvcz1NYXRoLmNvcyhJLmFuZ2xlKSxVLnBlbnVtYnJhQ29zPU1hdGguY29zKEkuYW5nbGUqKDEtSS5wZW51bWJyYSkpLFUuZGVjYXk9SS5kZWNheSxJLmNhc3RTaGFkb3cpe2xldCBXPUkuc2hhZG93LFo9bi5nZXQoSSk7Wi5zaGFkb3dCaWFzPVcuYmlhcyxaLnNoYWRvd05vcm1hbEJpYXM9Vy5ub3JtYWxCaWFzLFouc2hhZG93UmFkaXVzPVcucmFkaXVzLFouc2hhZG93TWFwU2l6ZT1XLm1hcFNpemUsaS5zcG90U2hhZG93W3ldPVosaS5zcG90U2hhZG93TWFwW3ldPXosaS5zcG90U2hhZG93TWF0cml4W3ldPUkuc2hhZG93Lm1hdHJpeCxQKyt9aS5zcG90W3ldPVUseSsrfWVsc2UgaWYoSS5pc1JlY3RBcmVhTGlnaHQpe2xldCBVPXIuZ2V0KEkpO1UuY29sb3IuY29weShMKS5tdWx0aXBseVNjYWxhcihSKSxVLmhhbGZXaWR0aC5zZXQoSS53aWR0aCouNSwwLDApLFUuaGFsZkhlaWdodC5zZXQoMCxJLmhlaWdodCouNSwwKSxpLnJlY3RBcmVhW3hdPVUseCsrfWVsc2UgaWYoSS5pc1BvaW50TGlnaHQpe2xldCBVPXIuZ2V0KEkpO2lmKFUuY29sb3IuY29weShJLmNvbG9yKS5tdWx0aXBseVNjYWxhcihJLmludGVuc2l0eSprKSxVLmRpc3RhbmNlPUkuZGlzdGFuY2UsVS5kZWNheT1JLmRlY2F5LEkuY2FzdFNoYWRvdyl7bGV0IFc9SS5zaGFkb3csWj1uLmdldChJKTtaLnNoYWRvd0JpYXM9Vy5iaWFzLFouc2hhZG93Tm9ybWFsQmlhcz1XLm5vcm1hbEJpYXMsWi5zaGFkb3dSYWRpdXM9Vy5yYWRpdXMsWi5zaGFkb3dNYXBTaXplPVcubWFwU2l6ZSxaLnNoYWRvd0NhbWVyYU5lYXI9Vy5jYW1lcmEubmVhcixaLnNoYWRvd0NhbWVyYUZhcj1XLmNhbWVyYS5mYXIsaS5wb2ludFNoYWRvd1tfXT1aLGkucG9pbnRTaGFkb3dNYXBbX109eixpLnBvaW50U2hhZG93TWF0cml4W19dPUkuc2hhZG93Lm1hdHJpeCxDKyt9aS5wb2ludFtfXT1VLF8rK31lbHNlIGlmKEkuaXNIZW1pc3BoZXJlTGlnaHQpe2xldCBVPXIuZ2V0KEkpO1Uuc2t5Q29sb3IuY29weShJLmNvbG9yKS5tdWx0aXBseVNjYWxhcihSKmspLFUuZ3JvdW5kQ29sb3IuY29weShJLmdyb3VuZENvbG9yKS5tdWx0aXBseVNjYWxhcihSKmspLGkuaGVtaVtiXT1VLGIrK319eD4wJiYodC5pc1dlYkdMMnx8ZS5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpPT09ITA/KGkucmVjdEFyZWFMVEMxPXJlLkxUQ19GTE9BVF8xLGkucmVjdEFyZWFMVEMyPXJlLkxUQ19GTE9BVF8yKTplLmhhcygiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKT09PSEwPyhpLnJlY3RBcmVhTFRDMT1yZS5MVENfSEFMRl8xLGkucmVjdEFyZWFMVEMyPXJlLkxUQ19IQUxGXzIpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVuYWJsZSB0byB1c2UgUmVjdEFyZWFMaWdodC4gTWlzc2luZyBXZWJHTCBleHRlbnNpb25zLiIpKSxpLmFtYmllbnRbMF09ZixpLmFtYmllbnRbMV09cCxpLmFtYmllbnRbMl09ZDtsZXQgTz1pLmhhc2g7KE8uZGlyZWN0aW9uYWxMZW5ndGghPT1nfHxPLnBvaW50TGVuZ3RoIT09X3x8Ty5zcG90TGVuZ3RoIT09eXx8Ty5yZWN0QXJlYUxlbmd0aCE9PXh8fE8uaGVtaUxlbmd0aCE9PWJ8fE8ubnVtRGlyZWN0aW9uYWxTaGFkb3dzIT09U3x8Ty5udW1Qb2ludFNoYWRvd3MhPT1DfHxPLm51bVNwb3RTaGFkb3dzIT09UCkmJihpLmRpcmVjdGlvbmFsLmxlbmd0aD1nLGkuc3BvdC5sZW5ndGg9eSxpLnJlY3RBcmVhLmxlbmd0aD14LGkucG9pbnQubGVuZ3RoPV8saS5oZW1pLmxlbmd0aD1iLGkuZGlyZWN0aW9uYWxTaGFkb3cubGVuZ3RoPVMsaS5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGg9UyxpLnBvaW50U2hhZG93Lmxlbmd0aD1DLGkucG9pbnRTaGFkb3dNYXAubGVuZ3RoPUMsaS5zcG90U2hhZG93Lmxlbmd0aD1QLGkuc3BvdFNoYWRvd01hcC5sZW5ndGg9UCxpLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4Lmxlbmd0aD1TLGkucG9pbnRTaGFkb3dNYXRyaXgubGVuZ3RoPUMsaS5zcG90U2hhZG93TWF0cml4Lmxlbmd0aD1QLE8uZGlyZWN0aW9uYWxMZW5ndGg9ZyxPLnBvaW50TGVuZ3RoPV8sTy5zcG90TGVuZ3RoPXksTy5yZWN0QXJlYUxlbmd0aD14LE8uaGVtaUxlbmd0aD1iLE8ubnVtRGlyZWN0aW9uYWxTaGFkb3dzPVMsTy5udW1Qb2ludFNoYWRvd3M9QyxPLm51bVNwb3RTaGFkb3dzPVAsaS52ZXJzaW9uPXBncisrKX1mdW5jdGlvbiBjKHUsaCl7bGV0IGY9MCxwPTAsZD0wLGc9MCxfPTAseT1oLm1hdHJpeFdvcmxkSW52ZXJzZTtmb3IobGV0IHg9MCxiPXUubGVuZ3RoO3g8Yjt4Kyspe2xldCBTPXVbeF07aWYoUy5pc0RpcmVjdGlvbmFsTGlnaHQpe2xldCBDPWkuZGlyZWN0aW9uYWxbZl07Qy5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKFMubWF0cml4V29ybGQpLG8uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKFMudGFyZ2V0Lm1hdHJpeFdvcmxkKSxDLmRpcmVjdGlvbi5zdWIobyksQy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHkpLGYrK31lbHNlIGlmKFMuaXNTcG90TGlnaHQpe2xldCBDPWkuc3BvdFtkXTtDLnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihTLm1hdHJpeFdvcmxkKSxDLnBvc2l0aW9uLmFwcGx5TWF0cml4NCh5KSxDLmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oUy5tYXRyaXhXb3JsZCksby5zZXRGcm9tTWF0cml4UG9zaXRpb24oUy50YXJnZXQubWF0cml4V29ybGQpLEMuZGlyZWN0aW9uLnN1YihvKSxDLmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oeSksZCsrfWVsc2UgaWYoUy5pc1JlY3RBcmVhTGlnaHQpe2xldCBDPWkucmVjdEFyZWFbZ107Qy5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oUy5tYXRyaXhXb3JsZCksQy5wb3NpdGlvbi5hcHBseU1hdHJpeDQoeSkscy5pZGVudGl0eSgpLGEuY29weShTLm1hdHJpeFdvcmxkKSxhLnByZW11bHRpcGx5KHkpLHMuZXh0cmFjdFJvdGF0aW9uKGEpLEMuaGFsZldpZHRoLnNldChTLndpZHRoKi41LDAsMCksQy5oYWxmSGVpZ2h0LnNldCgwLFMuaGVpZ2h0Ki41LDApLEMuaGFsZldpZHRoLmFwcGx5TWF0cml4NChzKSxDLmhhbGZIZWlnaHQuYXBwbHlNYXRyaXg0KHMpLGcrK31lbHNlIGlmKFMuaXNQb2ludExpZ2h0KXtsZXQgQz1pLnBvaW50W3BdO0MucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKFMubWF0cml4V29ybGQpLEMucG9zaXRpb24uYXBwbHlNYXRyaXg0KHkpLHArK31lbHNlIGlmKFMuaXNIZW1pc3BoZXJlTGlnaHQpe2xldCBDPWkuaGVtaVtfXTtDLmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oUy5tYXRyaXhXb3JsZCksQy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKHkpLEMuZGlyZWN0aW9uLm5vcm1hbGl6ZSgpLF8rK319fXJldHVybntzZXR1cDpsLHNldHVwVmlldzpjLHN0YXRlOml9fWZ1bmN0aW9uIFZ1ZShlLHQpe2xldCByPW5ldyBtZ3IoZSx0KSxuPVtdLGk9W107ZnVuY3Rpb24gbygpe24ubGVuZ3RoPTAsaS5sZW5ndGg9MH1mdW5jdGlvbiBhKGgpe24ucHVzaChoKX1mdW5jdGlvbiBzKGgpe2kucHVzaChoKX1mdW5jdGlvbiBsKGgpe3Iuc2V0dXAobixoKX1mdW5jdGlvbiBjKGgpe3Iuc2V0dXBWaWV3KG4saCl9cmV0dXJue2luaXQ6byxzdGF0ZTp7bGlnaHRzQXJyYXk6bixzaGFkb3dzQXJyYXk6aSxsaWdodHM6cn0sc2V0dXBMaWdodHM6bCxzZXR1cExpZ2h0c1ZpZXc6YyxwdXNoTGlnaHQ6YSxwdXNoU2hhZG93OnN9fWZ1bmN0aW9uIGdncihlLHQpe2xldCByPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG4obyxhPTApe2xldCBzO3JldHVybiByLmhhcyhvKT09PSExPyhzPW5ldyBWdWUoZSx0KSxyLnNldChvLFtzXSkpOmE+PXIuZ2V0KG8pLmxlbmd0aD8ocz1uZXcgVnVlKGUsdCksci5nZXQobykucHVzaChzKSk6cz1yLmdldChvKVthXSxzfWZ1bmN0aW9uIGkoKXtyPW5ldyBXZWFrTWFwfXJldHVybntnZXQ6bixkaXNwb3NlOml9fXZhciB0TT1jbGFzcyBleHRlbmRzIFVpe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGVwdGhNYXRlcmlhbCIsdGhpcy5kZXB0aFBhY2tpbmc9TWZlLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlcHRoUGFja2luZz10LmRlcHRoUGFja2luZyx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpc319O3RNLnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwO3ZhciBlTT1jbGFzcyBleHRlbmRzIFVpe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGlzdGFuY2VNYXRlcmlhbCIsdGhpcy5yZWZlcmVuY2VQb3NpdGlvbj1uZXcgaix0aGlzLm5lYXJEaXN0YW5jZT0xLHRoaXMuZmFyRGlzdGFuY2U9MWUzLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuZm9nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5yZWZlcmVuY2VQb3NpdGlvbi5jb3B5KHQucmVmZXJlbmNlUG9zaXRpb24pLHRoaXMubmVhckRpc3RhbmNlPXQubmVhckRpc3RhbmNlLHRoaXMuZmFyRGlzdGFuY2U9dC5mYXJEaXN0YW5jZSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpc319O2VNLnByb3RvdHlwZS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPSEwO3ZhciBfZ3I9YHZvaWQgbWFpbigpIHsKCWdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApOwp9YCx5Z3I9YHVuaWZvcm0gc2FtcGxlcjJEIHNoYWRvd19wYXNzOwp1bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjsKdW5pZm9ybSBmbG9hdCByYWRpdXM7CiNpbmNsdWRlIDxwYWNraW5nPgp2b2lkIG1haW4oKSB7Cgljb25zdCBmbG9hdCBzYW1wbGVzID0gZmxvYXQoIFZTTV9TQU1QTEVTICk7CglmbG9hdCBtZWFuID0gMC4wOwoJZmxvYXQgc3F1YXJlZF9tZWFuID0gMC4wOwoJZmxvYXQgdXZTdHJpZGUgPSBzYW1wbGVzIDw9IDEuMCA/IDAuMCA6IDIuMCAvICggc2FtcGxlcyAtIDEuMCApOwoJZmxvYXQgdXZTdGFydCA9IHNhbXBsZXMgPD0gMS4wID8gMC4wIDogLSAxLjA7Cglmb3IgKCBmbG9hdCBpID0gMC4wOyBpIDwgc2FtcGxlczsgaSArKyApIHsKCQlmbG9hdCB1dk9mZnNldCA9IHV2U3RhcnQgKyBpICogdXZTdHJpZGU7CgkJI2lmZGVmIEhPUklaT05UQUxfUEFTUwoJCQl2ZWMyIGRpc3RyaWJ1dGlvbiA9IHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIHV2T2Zmc2V0LCAwLjAgKSAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7CgkJCW1lYW4gKz0gZGlzdHJpYnV0aW9uLng7CgkJCXNxdWFyZWRfbWVhbiArPSBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICsgZGlzdHJpYnV0aW9uLnggKiBkaXN0cmlidXRpb24ueDsKCQkjZWxzZQoJCQlmbG9hdCBkZXB0aCA9IHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIDAuMCwgdXZPZmZzZXQgKSAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7CgkJCW1lYW4gKz0gZGVwdGg7CgkJCXNxdWFyZWRfbWVhbiArPSBkZXB0aCAqIGRlcHRoOwoJCSNlbmRpZgoJfQoJbWVhbiA9IG1lYW4gLyBzYW1wbGVzOwoJc3F1YXJlZF9tZWFuID0gc3F1YXJlZF9tZWFuIC8gc2FtcGxlczsKCWZsb2F0IHN0ZF9kZXYgPSBzcXJ0KCBzcXVhcmVkX21lYW4gLSBtZWFuICogbWVhbiApOwoJZ2xfRnJhZ0NvbG9yID0gcGFjazJIYWxmVG9SR0JBKCB2ZWMyKCBtZWFuLCBzdGRfZGV2ICkgKTsKfWA7ZnVuY3Rpb24gcWZlKGUsdCxyKXtsZXQgbj1uZXcgTjEsaT1uZXcgTHQsbz1uZXcgTHQsYT1uZXcgZW4scz1uZXcgdE0oe2RlcHRoUGFja2luZzpFZmV9KSxsPW5ldyBlTSxjPXt9LHU9ci5tYXhUZXh0dXJlU2l6ZSxoPXswOklpLDE6STEsMjpMMX0sZj1uZXcgc2goe2RlZmluZXM6e1ZTTV9TQU1QTEVTOjh9LHVuaWZvcm1zOntzaGFkb3dfcGFzczp7dmFsdWU6bnVsbH0scmVzb2x1dGlvbjp7dmFsdWU6bmV3IEx0fSxyYWRpdXM6e3ZhbHVlOjR9fSx2ZXJ0ZXhTaGFkZXI6X2dyLGZyYWdtZW50U2hhZGVyOnlncn0pLHA9Zi5jbG9uZSgpO3AuZGVmaW5lcy5IT1JJWk9OVEFMX1BBU1M9MTtsZXQgZD1uZXcgUGU7ZC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgSmUobmV3IEZsb2F0MzJBcnJheShbLTEsLTEsLjUsMywtMSwuNSwtMSwzLC41XSksMykpO2xldCBnPW5ldyBlaShkLGYpLF89dGhpczt0aGlzLmVuYWJsZWQ9ITEsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy50eXBlPVRodCx0aGlzLnJlbmRlcj1mdW5jdGlvbihTLEMsUCl7aWYoXy5lbmFibGVkPT09ITF8fF8uYXV0b1VwZGF0ZT09PSExJiZfLm5lZWRzVXBkYXRlPT09ITF8fFMubGVuZ3RoPT09MClyZXR1cm47bGV0IGs9ZS5nZXRSZW5kZXJUYXJnZXQoKSxPPWUuZ2V0QWN0aXZlQ3ViZUZhY2UoKSxEPWUuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKSxCPWUuc3RhdGU7Qi5zZXRCbGVuZGluZygkZCksQi5idWZmZXJzLmNvbG9yLnNldENsZWFyKDEsMSwxLDEpLEIuYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxCLnNldFNjaXNzb3JUZXN0KCExKTtmb3IobGV0IEk9MCxMPVMubGVuZ3RoO0k8TDtJKyspe2xldCBSPVNbSV0sRj1SLnNoYWRvdztpZihGPT09dm9pZCAwKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiIsUiwiaGFzIG5vIHNoYWRvdy4iKTtjb250aW51ZX1pZihGLmF1dG9VcGRhdGU9PT0hMSYmRi5uZWVkc1VwZGF0ZT09PSExKWNvbnRpbnVlO2kuY29weShGLm1hcFNpemUpO2xldCB6PUYuZ2V0RnJhbWVFeHRlbnRzKCk7aWYoaS5tdWx0aXBseSh6KSxvLmNvcHkoRi5tYXBTaXplKSwoaS54PnV8fGkueT51KSYmKGkueD51JiYoby54PU1hdGguZmxvb3IodS96LngpLGkueD1vLngqei54LEYubWFwU2l6ZS54PW8ueCksaS55PnUmJihvLnk9TWF0aC5mbG9vcih1L3oueSksaS55PW8ueSp6LnksRi5tYXBTaXplLnk9by55KSksRi5tYXA9PT1udWxsJiYhRi5pc1BvaW50TGlnaHRTaGFkb3cmJnRoaXMudHlwZT09PXozKXtsZXQgVz17bWluRmlsdGVyOm9pLG1hZ0ZpbHRlcjpvaSxmb3JtYXQ6Sm99O0YubWFwPW5ldyBjcyhpLngsaS55LFcpLEYubWFwLnRleHR1cmUubmFtZT1SLm5hbWUrIi5zaGFkb3dNYXAiLEYubWFwUGFzcz1uZXcgY3MoaS54LGkueSxXKSxGLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9aWYoRi5tYXA9PT1udWxsKXtsZXQgVz17bWluRmlsdGVyOkxpLG1hZ0ZpbHRlcjpMaSxmb3JtYXQ6Sm99O0YubWFwPW5ldyBjcyhpLngsaS55LFcpLEYubWFwLnRleHR1cmUubmFtZT1SLm5hbWUrIi5zaGFkb3dNYXAiLEYuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1lLnNldFJlbmRlclRhcmdldChGLm1hcCksZS5jbGVhcigpO2xldCBVPUYuZ2V0Vmlld3BvcnRDb3VudCgpO2ZvcihsZXQgVz0wO1c8VTtXKyspe2xldCBaPUYuZ2V0Vmlld3BvcnQoVyk7YS5zZXQoby54KloueCxvLnkqWi55LG8ueCpaLnosby55KloudyksQi52aWV3cG9ydChhKSxGLnVwZGF0ZU1hdHJpY2VzKFIsVyksbj1GLmdldEZydXN0dW0oKSxiKEMsUCxGLmNhbWVyYSxSLHRoaXMudHlwZSl9IUYuaXNQb2ludExpZ2h0U2hhZG93JiZ0aGlzLnR5cGU9PT16MyYmeShGLFApLEYubmVlZHNVcGRhdGU9ITF9Xy5uZWVkc1VwZGF0ZT0hMSxlLnNldFJlbmRlclRhcmdldChrLE8sRCl9O2Z1bmN0aW9uIHkoUyxDKXtsZXQgUD10LnVwZGF0ZShnKTtmLmRlZmluZXMuVlNNX1NBTVBMRVMhPT1TLmJsdXJTYW1wbGVzJiYoZi5kZWZpbmVzLlZTTV9TQU1QTEVTPVMuYmx1clNhbXBsZXMscC5kZWZpbmVzLlZTTV9TQU1QTEVTPVMuYmx1clNhbXBsZXMsZi5uZWVkc1VwZGF0ZT0hMCxwLm5lZWRzVXBkYXRlPSEwKSxmLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPVMubWFwLnRleHR1cmUsZi51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlPVMubWFwU2l6ZSxmLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT1TLnJhZGl1cyxlLnNldFJlbmRlclRhcmdldChTLm1hcFBhc3MpLGUuY2xlYXIoKSxlLnJlbmRlckJ1ZmZlckRpcmVjdChDLG51bGwsUCxmLGcsbnVsbCkscC51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT1TLm1hcFBhc3MudGV4dHVyZSxwLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9Uy5tYXBTaXplLHAudW5pZm9ybXMucmFkaXVzLnZhbHVlPVMucmFkaXVzLGUuc2V0UmVuZGVyVGFyZ2V0KFMubWFwKSxlLmNsZWFyKCksZS5yZW5kZXJCdWZmZXJEaXJlY3QoQyxudWxsLFAscCxnLG51bGwpfWZ1bmN0aW9uIHgoUyxDLFAsayxPLEQsQil7bGV0IEk9bnVsbCxMPWsuaXNQb2ludExpZ2h0PT09ITA/Uy5jdXN0b21EaXN0YW5jZU1hdGVyaWFsOlMuY3VzdG9tRGVwdGhNYXRlcmlhbDtpZihMIT09dm9pZCAwP0k9TDpJPWsuaXNQb2ludExpZ2h0PT09ITA/bDpzLGUubG9jYWxDbGlwcGluZ0VuYWJsZWQmJlAuY2xpcFNoYWRvd3M9PT0hMCYmUC5jbGlwcGluZ1BsYW5lcy5sZW5ndGghPT0wfHxQLmRpc3BsYWNlbWVudE1hcCYmUC5kaXNwbGFjZW1lbnRTY2FsZSE9PTB8fFAuYWxwaGFNYXAmJlAuYWxwaGFUZXN0PjApe2xldCBSPUkudXVpZCxGPVAudXVpZCx6PWNbUl07ej09PXZvaWQgMCYmKHo9e30sY1tSXT16KTtsZXQgVT16W0ZdO1U9PT12b2lkIDAmJihVPUkuY2xvbmUoKSx6W0ZdPVUpLEk9VX1yZXR1cm4gSS52aXNpYmxlPVAudmlzaWJsZSxJLndpcmVmcmFtZT1QLndpcmVmcmFtZSxCPT09ejM/SS5zaWRlPVAuc2hhZG93U2lkZSE9PW51bGw/UC5zaGFkb3dTaWRlOlAuc2lkZTpJLnNpZGU9UC5zaGFkb3dTaWRlIT09bnVsbD9QLnNoYWRvd1NpZGU6aFtQLnNpZGVdLEkuYWxwaGFNYXA9UC5hbHBoYU1hcCxJLmFscGhhVGVzdD1QLmFscGhhVGVzdCxJLmNsaXBTaGFkb3dzPVAuY2xpcFNoYWRvd3MsSS5jbGlwcGluZ1BsYW5lcz1QLmNsaXBwaW5nUGxhbmVzLEkuY2xpcEludGVyc2VjdGlvbj1QLmNsaXBJbnRlcnNlY3Rpb24sSS5kaXNwbGFjZW1lbnRNYXA9UC5kaXNwbGFjZW1lbnRNYXAsSS5kaXNwbGFjZW1lbnRTY2FsZT1QLmRpc3BsYWNlbWVudFNjYWxlLEkuZGlzcGxhY2VtZW50Qmlhcz1QLmRpc3BsYWNlbWVudEJpYXMsSS53aXJlZnJhbWVMaW5ld2lkdGg9UC53aXJlZnJhbWVMaW5ld2lkdGgsSS5saW5ld2lkdGg9UC5saW5ld2lkdGgsay5pc1BvaW50TGlnaHQ9PT0hMCYmSS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPT09ITAmJihJLnJlZmVyZW5jZVBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihrLm1hdHJpeFdvcmxkKSxJLm5lYXJEaXN0YW5jZT1PLEkuZmFyRGlzdGFuY2U9RCksSX1mdW5jdGlvbiBiKFMsQyxQLGssTyl7aWYoUy52aXNpYmxlPT09ITEpcmV0dXJuO2lmKFMubGF5ZXJzLnRlc3QoQy5sYXllcnMpJiYoUy5pc01lc2h8fFMuaXNMaW5lfHxTLmlzUG9pbnRzKSYmKFMuY2FzdFNoYWRvd3x8Uy5yZWNlaXZlU2hhZG93JiZPPT09ejMpJiYoIVMuZnJ1c3R1bUN1bGxlZHx8bi5pbnRlcnNlY3RzT2JqZWN0KFMpKSl7Uy5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhQLm1hdHJpeFdvcmxkSW52ZXJzZSxTLm1hdHJpeFdvcmxkKTtsZXQgST10LnVwZGF0ZShTKSxMPVMubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShMKSl7bGV0IFI9SS5ncm91cHM7Zm9yKGxldCBGPTAsej1SLmxlbmd0aDtGPHo7RisrKXtsZXQgVT1SW0ZdLFc9TFtVLm1hdGVyaWFsSW5kZXhdO2lmKFcmJlcudmlzaWJsZSl7bGV0IFo9eChTLEksVyxrLFAubmVhcixQLmZhcixPKTtlLnJlbmRlckJ1ZmZlckRpcmVjdChQLG51bGwsSSxaLFMsVSl9fX1lbHNlIGlmKEwudmlzaWJsZSl7bGV0IFI9eChTLEksTCxrLFAubmVhcixQLmZhcixPKTtlLnJlbmRlckJ1ZmZlckRpcmVjdChQLG51bGwsSSxSLFMsbnVsbCl9fWxldCBCPVMuY2hpbGRyZW47Zm9yKGxldCBJPTAsTD1CLmxlbmd0aDtJPEw7SSsrKWIoQltJXSxDLFAsayxPKX19ZnVuY3Rpb24gdmdyKGUsdCxyKXtsZXQgbj1yLmlzV2ViR0wyO2Z1bmN0aW9uIGkoKXtsZXQgYXQ9ITEsc2U9bmV3IGVuLFF0PW51bGwsQ2U9bmV3IGVuKDAsMCwwLDApO3JldHVybntzZXRNYXNrOmZ1bmN0aW9uKFB0KXtRdCE9PVB0JiYhYXQmJihlLmNvbG9yTWFzayhQdCxQdCxQdCxQdCksUXQ9UHQpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24oUHQpe2F0PVB0fSxzZXRDbGVhcjpmdW5jdGlvbihQdCxOdCx6ZSx5bixHaSl7R2k9PT0hMCYmKFB0Kj15bixOdCo9eW4semUqPXluKSxzZS5zZXQoUHQsTnQsemUseW4pLENlLmVxdWFscyhzZSk9PT0hMSYmKGUuY2xlYXJDb2xvcihQdCxOdCx6ZSx5biksQ2UuY29weShzZSkpfSxyZXNldDpmdW5jdGlvbigpe2F0PSExLFF0PW51bGwsQ2Uuc2V0KC0xLDAsMCwwKX19fWZ1bmN0aW9uIG8oKXtsZXQgYXQ9ITEsc2U9bnVsbCxRdD1udWxsLENlPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24oUHQpe1B0P2x0KDI5MjkpOkt0KDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKFB0KXtzZSE9PVB0JiYhYXQmJihlLmRlcHRoTWFzayhQdCksc2U9UHQpfSxzZXRGdW5jOmZ1bmN0aW9uKFB0KXtpZihRdCE9PVB0KXtpZihQdClzd2l0Y2goUHQpe2Nhc2UgWWhlOmUuZGVwdGhGdW5jKDUxMik7YnJlYWs7Y2FzZSBqaGU6ZS5kZXB0aEZ1bmMoNTE5KTticmVhaztjYXNlIFhoZTplLmRlcHRoRnVuYyg1MTMpO2JyZWFrO2Nhc2UgZVU6ZS5kZXB0aEZ1bmMoNTE1KTticmVhaztjYXNlICRoZTplLmRlcHRoRnVuYyg1MTQpO2JyZWFrO2Nhc2UgS2hlOmUuZGVwdGhGdW5jKDUxOCk7YnJlYWs7Y2FzZSBaaGU6ZS5kZXB0aEZ1bmMoNTE2KTticmVhaztjYXNlIEpoZTplLmRlcHRoRnVuYyg1MTcpO2JyZWFrO2RlZmF1bHQ6ZS5kZXB0aEZ1bmMoNTE1KX1lbHNlIGUuZGVwdGhGdW5jKDUxNSk7UXQ9UHR9fSxzZXRMb2NrZWQ6ZnVuY3Rpb24oUHQpe2F0PVB0fSxzZXRDbGVhcjpmdW5jdGlvbihQdCl7Q2UhPT1QdCYmKGUuY2xlYXJEZXB0aChQdCksQ2U9UHQpfSxyZXNldDpmdW5jdGlvbigpe2F0PSExLHNlPW51bGwsUXQ9bnVsbCxDZT1udWxsfX19ZnVuY3Rpb24gYSgpe2xldCBhdD0hMSxzZT1udWxsLFF0PW51bGwsQ2U9bnVsbCxQdD1udWxsLE50PW51bGwsemU9bnVsbCx5bj1udWxsLEdpPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24oQXIpe2F0fHwoQXI/bHQoMjk2MCk6S3QoMjk2MCkpfSxzZXRNYXNrOmZ1bmN0aW9uKEFyKXtzZSE9PUFyJiYhYXQmJihlLnN0ZW5jaWxNYXNrKEFyKSxzZT1Bcil9LHNldEZ1bmM6ZnVuY3Rpb24oQXIsQWEsdW8peyhRdCE9PUFyfHxDZSE9PUFhfHxQdCE9PXVvKSYmKGUuc3RlbmNpbEZ1bmMoQXIsQWEsdW8pLFF0PUFyLENlPUFhLFB0PXVvKX0sc2V0T3A6ZnVuY3Rpb24oQXIsQWEsdW8peyhOdCE9PUFyfHx6ZSE9PUFhfHx5biE9PXVvKSYmKGUuc3RlbmNpbE9wKEFyLEFhLHVvKSxOdD1Bcix6ZT1BYSx5bj11byl9LHNldExvY2tlZDpmdW5jdGlvbihBcil7YXQ9QXJ9LHNldENsZWFyOmZ1bmN0aW9uKEFyKXtHaSE9PUFyJiYoZS5jbGVhclN0ZW5jaWwoQXIpLEdpPUFyKX0scmVzZXQ6ZnVuY3Rpb24oKXthdD0hMSxzZT1udWxsLFF0PW51bGwsQ2U9bnVsbCxQdD1udWxsLE50PW51bGwsemU9bnVsbCx5bj1udWxsLEdpPW51bGx9fX1sZXQgcz1uZXcgaSxsPW5ldyBvLGM9bmV3IGEsdT17fSxoPXt9LGY9bmV3IFdlYWtNYXAscD1bXSxkPW51bGwsZz0hMSxfPW51bGwseT1udWxsLHg9bnVsbCxiPW51bGwsUz1udWxsLEM9bnVsbCxQPW51bGwsaz0hMSxPPW51bGwsRD1udWxsLEI9bnVsbCxJPW51bGwsTD1udWxsLFI9ZS5nZXRQYXJhbWV0ZXIoMzU2NjEpLEY9ITEsej0wLFU9ZS5nZXRQYXJhbWV0ZXIoNzkzOCk7VS5pbmRleE9mKCJXZWJHTCIpIT09LTE/KHo9cGFyc2VGbG9hdCgvXldlYkdMIChcZCkvLmV4ZWMoVSlbMV0pLEY9ej49MSk6VS5pbmRleE9mKCJPcGVuR0wgRVMiKSE9PS0xJiYoej1wYXJzZUZsb2F0KC9eT3BlbkdMIEVTIChcZCkvLmV4ZWMoVSlbMV0pLEY9ej49Mik7bGV0IFc9bnVsbCxaPXt9LHJ0PWUuZ2V0UGFyYW1ldGVyKDMwODgpLG90PWUuZ2V0UGFyYW1ldGVyKDI5NzgpLHN0PW5ldyBlbigpLmZyb21BcnJheShydCksU3Q9bmV3IGVuKCkuZnJvbUFycmF5KG90KTtmdW5jdGlvbiBidChhdCxzZSxRdCl7bGV0IENlPW5ldyBVaW50OEFycmF5KDQpLFB0PWUuY3JlYXRlVGV4dHVyZSgpO2UuYmluZFRleHR1cmUoYXQsUHQpLGUudGV4UGFyYW1ldGVyaShhdCwxMDI0MSw5NzI4KSxlLnRleFBhcmFtZXRlcmkoYXQsMTAyNDAsOTcyOCk7Zm9yKGxldCBOdD0wO050PFF0O050KyspZS50ZXhJbWFnZTJEKHNlK050LDAsNjQwOCwxLDEsMCw2NDA4LDUxMjEsQ2UpO3JldHVybiBQdH1sZXQgTXQ9e307TXRbMzU1M109YnQoMzU1MywzNTUzLDEpLE10WzM0MDY3XT1idCgzNDA2NywzNDA2OSw2KSxzLnNldENsZWFyKDAsMCwwLDEpLGwuc2V0Q2xlYXIoMSksYy5zZXRDbGVhcigwKSxsdCgyOTI5KSxsLnNldEZ1bmMoZVUpLGh0KCExKSx3dCh3dXQpLGx0KDI4ODQpLHEoJGQpO2Z1bmN0aW9uIGx0KGF0KXt1W2F0XSE9PSEwJiYoZS5lbmFibGUoYXQpLHVbYXRdPSEwKX1mdW5jdGlvbiBLdChhdCl7dVthdF0hPT0hMSYmKGUuZGlzYWJsZShhdCksdVthdF09ITEpfWZ1bmN0aW9uIF90KGF0LHNlKXtyZXR1cm4gaFthdF0hPT1zZT8oZS5iaW5kRnJhbWVidWZmZXIoYXQsc2UpLGhbYXRdPXNlLG4mJihhdD09PTM2MDA5JiYoaFszNjE2MF09c2UpLGF0PT09MzYxNjAmJihoWzM2MDA5XT1zZSkpLCEwKTohMX1mdW5jdGlvbiBjdChhdCxzZSl7bGV0IFF0PXAsQ2U9ITE7aWYoYXQpaWYoUXQ9Zi5nZXQoc2UpLFF0PT09dm9pZCAwJiYoUXQ9W10sZi5zZXQoc2UsUXQpKSxhdC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzKXtsZXQgUHQ9YXQudGV4dHVyZTtpZihRdC5sZW5ndGghPT1QdC5sZW5ndGh8fFF0WzBdIT09MzYwNjQpe2ZvcihsZXQgTnQ9MCx6ZT1QdC5sZW5ndGg7TnQ8emU7TnQrKylRdFtOdF09MzYwNjQrTnQ7UXQubGVuZ3RoPVB0Lmxlbmd0aCxDZT0hMH19ZWxzZSBRdFswXSE9PTM2MDY0JiYoUXRbMF09MzYwNjQsQ2U9ITApO2Vsc2UgUXRbMF0hPT0xMDI5JiYoUXRbMF09MTAyOSxDZT0hMCk7Q2UmJihyLmlzV2ViR0wyP2UuZHJhd0J1ZmZlcnMoUXQpOnQuZ2V0KCJXRUJHTF9kcmF3X2J1ZmZlcnMiKS5kcmF3QnVmZmVyc1dFQkdMKFF0KSl9ZnVuY3Rpb24gWChhdCl7cmV0dXJuIGQhPT1hdD8oZS51c2VQcm9ncmFtKGF0KSxkPWF0LCEwKTohMX1sZXQgZXQ9e1tNMV06MzI3NzQsW0RoZV06MzI3NzgsW09oZV06MzI3Nzl9O2lmKG4pZXRbVHV0XT0zMjc3NSxldFtDdXRdPTMyNzc2O2Vsc2V7bGV0IGF0PXQuZ2V0KCJFWFRfYmxlbmRfbWlubWF4Iik7YXQhPT1udWxsJiYoZXRbVHV0XT1hdC5NSU5fRVhULGV0W0N1dF09YXQuTUFYX0VYVCl9bGV0IGR0PXtbemhlXTowLFtGaGVdOjEsW0JoZV06NzY4LFtBaHRdOjc3MCxbV2hlXTo3NzYsW3FoZV06Nzc0LFtWaGVdOjc3MixbSGhlXTo3NjksW1BodF06NzcxLFtHaGVdOjc3NSxbVWhlXTo3NzN9O2Z1bmN0aW9uIHEoYXQsc2UsUXQsQ2UsUHQsTnQsemUseW4pe2lmKGF0PT09JGQpe2c9PT0hMCYmKEt0KDMwNDIpLGc9ITEpO3JldHVybn1pZihnPT09ITEmJihsdCgzMDQyKSxnPSEwKSxhdCE9PU5oZSl7aWYoYXQhPT1ffHx5biE9PWspe2lmKCh5IT09TTF8fFMhPT1NMSkmJihlLmJsZW5kRXF1YXRpb24oMzI3NzQpLHk9TTEsUz1NMSkseW4pc3dpdGNoKGF0KXtjYXNlIEgzOmUuYmxlbmRGdW5jU2VwYXJhdGUoMSw3NzEsMSw3NzEpO2JyZWFrO2Nhc2UgU3V0OmUuYmxlbmRGdW5jKDEsMSk7YnJlYWs7Y2FzZSBNdXQ6ZS5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OSwwLDEpO2JyZWFrO2Nhc2UgRXV0OmUuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjgsMCw3NzApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixhdCk7YnJlYWt9ZWxzZSBzd2l0Y2goYXQpe2Nhc2UgSDM6ZS5ibGVuZEZ1bmNTZXBhcmF0ZSg3NzAsNzcxLDEsNzcxKTticmVhaztjYXNlIFN1dDplLmJsZW5kRnVuYyg3NzAsMSk7YnJlYWs7Y2FzZSBNdXQ6ZS5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OSwwLDEpO2JyZWFrO2Nhc2UgRXV0OmUuYmxlbmRGdW5jKDAsNzY4KTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsYXQpO2JyZWFrfXg9bnVsbCxiPW51bGwsQz1udWxsLFA9bnVsbCxfPWF0LGs9eW59cmV0dXJufVB0PVB0fHxzZSxOdD1OdHx8UXQsemU9emV8fENlLChzZSE9PXl8fFB0IT09UykmJihlLmJsZW5kRXF1YXRpb25TZXBhcmF0ZShldFtzZV0sZXRbUHRdKSx5PXNlLFM9UHQpLChRdCE9PXh8fENlIT09Ynx8TnQhPT1DfHx6ZSE9PVApJiYoZS5ibGVuZEZ1bmNTZXBhcmF0ZShkdFtRdF0sZHRbQ2VdLGR0W050XSxkdFt6ZV0pLHg9UXQsYj1DZSxDPU50LFA9emUpLF89YXQsaz1udWxsfWZ1bmN0aW9uIHB0KGF0LHNlKXthdC5zaWRlPT09TDE/S3QoMjg4NCk6bHQoMjg4NCk7bGV0IFF0PWF0LnNpZGU9PT1JaTtzZSYmKFF0PSFRdCksaHQoUXQpLGF0LmJsZW5kaW5nPT09SDMmJmF0LnRyYW5zcGFyZW50PT09ITE/cSgkZCk6cShhdC5ibGVuZGluZyxhdC5ibGVuZEVxdWF0aW9uLGF0LmJsZW5kU3JjLGF0LmJsZW5kRHN0LGF0LmJsZW5kRXF1YXRpb25BbHBoYSxhdC5ibGVuZFNyY0FscGhhLGF0LmJsZW5kRHN0QWxwaGEsYXQucHJlbXVsdGlwbGllZEFscGhhKSxsLnNldEZ1bmMoYXQuZGVwdGhGdW5jKSxsLnNldFRlc3QoYXQuZGVwdGhUZXN0KSxsLnNldE1hc2soYXQuZGVwdGhXcml0ZSkscy5zZXRNYXNrKGF0LmNvbG9yV3JpdGUpO2xldCBDZT1hdC5zdGVuY2lsV3JpdGU7Yy5zZXRUZXN0KENlKSxDZSYmKGMuc2V0TWFzayhhdC5zdGVuY2lsV3JpdGVNYXNrKSxjLnNldEZ1bmMoYXQuc3RlbmNpbEZ1bmMsYXQuc3RlbmNpbFJlZixhdC5zdGVuY2lsRnVuY01hc2spLGMuc2V0T3AoYXQuc3RlbmNpbEZhaWwsYXQuc3RlbmNpbFpGYWlsLGF0LnN0ZW5jaWxaUGFzcykpLGllKGF0LnBvbHlnb25PZmZzZXQsYXQucG9seWdvbk9mZnNldEZhY3RvcixhdC5wb2x5Z29uT2Zmc2V0VW5pdHMpLGF0LmFscGhhVG9Db3ZlcmFnZT09PSEwP2x0KDMyOTI2KTpLdCgzMjkyNil9ZnVuY3Rpb24gaHQoYXQpe08hPT1hdCYmKGF0P2UuZnJvbnRGYWNlKDIzMDQpOmUuZnJvbnRGYWNlKDIzMDUpLE89YXQpfWZ1bmN0aW9uIHd0KGF0KXthdCE9PUxoZT8obHQoMjg4NCksYXQhPT1EJiYoYXQ9PT13dXQ/ZS5jdWxsRmFjZSgxMDI5KTphdD09PWtoZT9lLmN1bGxGYWNlKDEwMjgpOmUuY3VsbEZhY2UoMTAzMikpKTpLdCgyODg0KSxEPWF0fWZ1bmN0aW9uIGt0KGF0KXthdCE9PUImJihGJiZlLmxpbmVXaWR0aChhdCksQj1hdCl9ZnVuY3Rpb24gaWUoYXQsc2UsUXQpe2F0PyhsdCgzMjgyMyksKEkhPT1zZXx8TCE9PVF0KSYmKGUucG9seWdvbk9mZnNldChzZSxRdCksST1zZSxMPVF0KSk6S3QoMzI4MjMpfWZ1bmN0aW9uIGVlKGF0KXthdD9sdCgzMDg5KTpLdCgzMDg5KX1mdW5jdGlvbiBMZShhdCl7YXQ9PT12b2lkIDAmJihhdD0zMzk4NCtSLTEpLFchPT1hdCYmKGUuYWN0aXZlVGV4dHVyZShhdCksVz1hdCl9ZnVuY3Rpb24gYXIoYXQsc2Upe1c9PT1udWxsJiZMZSgpO2xldCBRdD1aW1ddO1F0PT09dm9pZCAwJiYoUXQ9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxaW1ddPVF0KSwoUXQudHlwZSE9PWF0fHxRdC50ZXh0dXJlIT09c2UpJiYoZS5iaW5kVGV4dHVyZShhdCxzZXx8TXRbYXRdKSxRdC50eXBlPWF0LFF0LnRleHR1cmU9c2UpfWZ1bmN0aW9uIGZyKCl7bGV0IGF0PVpbV107YXQhPT12b2lkIDAmJmF0LnR5cGUhPT12b2lkIDAmJihlLmJpbmRUZXh0dXJlKGF0LnR5cGUsbnVsbCksYXQudHlwZT12b2lkIDAsYXQudGV4dHVyZT12b2lkIDApfWZ1bmN0aW9uIHR0KCl7dHJ5e2UuY29tcHJlc3NlZFRleEltYWdlMkQuYXBwbHkoZSxhcmd1bWVudHMpfWNhdGNoKGF0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsYXQpfX1mdW5jdGlvbiAkKCl7dHJ5e2UudGV4U3ViSW1hZ2UyRC5hcHBseShlLGFyZ3VtZW50cyl9Y2F0Y2goYXQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixhdCl9fWZ1bmN0aW9uIEl0KCl7dHJ5e2UudGV4U3ViSW1hZ2UzRC5hcHBseShlLGFyZ3VtZW50cyl9Y2F0Y2goYXQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixhdCl9fWZ1bmN0aW9uICR0KCl7dHJ5e2UuY29tcHJlc3NlZFRleFN1YkltYWdlMkQuYXBwbHkoZSxhcmd1bWVudHMpfWNhdGNoKGF0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsYXQpfX1mdW5jdGlvbiBoZSgpe3RyeXtlLnRleFN0b3JhZ2UyRC5hcHBseShlLGFyZ3VtZW50cyl9Y2F0Y2goYXQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixhdCl9fWZ1bmN0aW9uIFR0KCl7dHJ5e2UudGV4U3RvcmFnZTNELmFwcGx5KGUsYXJndW1lbnRzKX1jYXRjaChhdCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLGF0KX19ZnVuY3Rpb24gYmUoKXt0cnl7ZS50ZXhJbWFnZTJELmFwcGx5KGUsYXJndW1lbnRzKX1jYXRjaChhdCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLGF0KX19ZnVuY3Rpb24gbnQoKXt0cnl7ZS50ZXhJbWFnZTNELmFwcGx5KGUsYXJndW1lbnRzKX1jYXRjaChhdCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLGF0KX19ZnVuY3Rpb24gQ3QoYXQpe3N0LmVxdWFscyhhdCk9PT0hMSYmKGUuc2Npc3NvcihhdC54LGF0LnksYXQueixhdC53KSxzdC5jb3B5KGF0KSl9ZnVuY3Rpb24gV3QoYXQpe1N0LmVxdWFscyhhdCk9PT0hMSYmKGUudmlld3BvcnQoYXQueCxhdC55LGF0LnosYXQudyksU3QuY29weShhdCkpfWZ1bmN0aW9uIGZlKCl7ZS5kaXNhYmxlKDMwNDIpLGUuZGlzYWJsZSgyODg0KSxlLmRpc2FibGUoMjkyOSksZS5kaXNhYmxlKDMyODIzKSxlLmRpc2FibGUoMzA4OSksZS5kaXNhYmxlKDI5NjApLGUuZGlzYWJsZSgzMjkyNiksZS5ibGVuZEVxdWF0aW9uKDMyNzc0KSxlLmJsZW5kRnVuYygxLDApLGUuYmxlbmRGdW5jU2VwYXJhdGUoMSwwLDEsMCksZS5jb2xvck1hc2soITAsITAsITAsITApLGUuY2xlYXJDb2xvcigwLDAsMCwwKSxlLmRlcHRoTWFzayghMCksZS5kZXB0aEZ1bmMoNTEzKSxlLmNsZWFyRGVwdGgoMSksZS5zdGVuY2lsTWFzayg0Mjk0OTY3Mjk1KSxlLnN0ZW5jaWxGdW5jKDUxOSwwLDQyOTQ5NjcyOTUpLGUuc3RlbmNpbE9wKDc2ODAsNzY4MCw3NjgwKSxlLmNsZWFyU3RlbmNpbCgwKSxlLmN1bGxGYWNlKDEwMjkpLGUuZnJvbnRGYWNlKDIzMDUpLGUucG9seWdvbk9mZnNldCgwLDApLGUuYWN0aXZlVGV4dHVyZSgzMzk4NCksZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCksbj09PSEwJiYoZS5iaW5kRnJhbWVidWZmZXIoMzYwMDksbnVsbCksZS5iaW5kRnJhbWVidWZmZXIoMzYwMDgsbnVsbCkpLGUudXNlUHJvZ3JhbShudWxsKSxlLmxpbmVXaWR0aCgxKSxlLnNjaXNzb3IoMCwwLGUuY2FudmFzLndpZHRoLGUuY2FudmFzLmhlaWdodCksZS52aWV3cG9ydCgwLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0KSx1PXt9LFc9bnVsbCxaPXt9LGg9e30sZj1uZXcgV2Vha01hcCxwPVtdLGQ9bnVsbCxnPSExLF89bnVsbCx5PW51bGwseD1udWxsLGI9bnVsbCxTPW51bGwsQz1udWxsLFA9bnVsbCxrPSExLE89bnVsbCxEPW51bGwsQj1udWxsLEk9bnVsbCxMPW51bGwsc3Quc2V0KDAsMCxlLmNhbnZhcy53aWR0aCxlLmNhbnZhcy5oZWlnaHQpLFN0LnNldCgwLDAsZS5jYW52YXMud2lkdGgsZS5jYW52YXMuaGVpZ2h0KSxzLnJlc2V0KCksbC5yZXNldCgpLGMucmVzZXQoKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6cyxkZXB0aDpsLHN0ZW5jaWw6Y30sZW5hYmxlOmx0LGRpc2FibGU6S3QsYmluZEZyYW1lYnVmZmVyOl90LGRyYXdCdWZmZXJzOmN0LHVzZVByb2dyYW06WCxzZXRCbGVuZGluZzpxLHNldE1hdGVyaWFsOnB0LHNldEZsaXBTaWRlZDpodCxzZXRDdWxsRmFjZTp3dCxzZXRMaW5lV2lkdGg6a3Qsc2V0UG9seWdvbk9mZnNldDppZSxzZXRTY2lzc29yVGVzdDplZSxhY3RpdmVUZXh0dXJlOkxlLGJpbmRUZXh0dXJlOmFyLHVuYmluZFRleHR1cmU6ZnIsY29tcHJlc3NlZFRleEltYWdlMkQ6dHQsdGV4SW1hZ2UyRDpiZSx0ZXhJbWFnZTNEOm50LHRleFN0b3JhZ2UyRDpoZSx0ZXhTdG9yYWdlM0Q6VHQsdGV4U3ViSW1hZ2UyRDokLHRleFN1YkltYWdlM0Q6SXQsY29tcHJlc3NlZFRleFN1YkltYWdlMkQ6JHQsc2Npc3NvcjpDdCx2aWV3cG9ydDpXdCxyZXNldDpmZX19ZnVuY3Rpb24geGdyKGUsdCxyLG4saSxvLGEpe2xldCBzPWkuaXNXZWJHTDIsbD1pLm1heFRleHR1cmVzLGM9aS5tYXhDdWJlbWFwU2l6ZSx1PWkubWF4VGV4dHVyZVNpemUsaD1pLm1heFNhbXBsZXMscD10LmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIik/dC5nZXQoIldFQkdMX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpOnZvaWQgMCxkPW5ldyBXZWFrTWFwLGcsXz0hMTt0cnl7Xz10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzIT0idW5kZWZpbmVkIiYmbmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpLmdldENvbnRleHQoIjJkIikhPT1udWxsfWNhdGNoKHR0KXt9ZnVuY3Rpb24geSh0dCwkKXtyZXR1cm4gXz9uZXcgT2Zmc2NyZWVuQ2FudmFzKHR0LCQpOlpQKCJjYW52YXMiKX1mdW5jdGlvbiB4KHR0LCQsSXQsJHQpe2xldCBoZT0xO2lmKCh0dC53aWR0aD4kdHx8dHQuaGVpZ2h0PiR0KSYmKGhlPSR0L01hdGgubWF4KHR0LndpZHRoLHR0LmhlaWdodCkpLGhlPDF8fCQ9PT0hMClpZih0eXBlb2YgSFRNTEltYWdlRWxlbWVudCE9InVuZGVmaW5lZCImJnR0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50IT0idW5kZWZpbmVkIiYmdHQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8dHlwZW9mIEltYWdlQml0bWFwIT0idW5kZWZpbmVkIiYmdHQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcCl7bGV0IFR0PSQ/UGZlOk1hdGguZmxvb3IsYmU9VHQoaGUqdHQud2lkdGgpLG50PVR0KGhlKnR0LmhlaWdodCk7Zz09PXZvaWQgMCYmKGc9eShiZSxudCkpO2xldCBDdD1JdD95KGJlLG50KTpnO3JldHVybiBDdC53aWR0aD1iZSxDdC5oZWlnaHQ9bnQsQ3QuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UodHQsMCwwLGJlLG50KSxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaGFzIGJlZW4gcmVzaXplZCBmcm9tICgiK3R0LndpZHRoKyJ4Iit0dC5oZWlnaHQrIikgdG8gKCIrYmUrIngiK250KyIpLiIpLEN0fWVsc2UgcmV0dXJuImRhdGEiaW4gdHQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogSW1hZ2UgaW4gRGF0YVRleHR1cmUgaXMgdG9vIGJpZyAoIit0dC53aWR0aCsieCIrdHQuaGVpZ2h0KyIpLiIpLHR0O3JldHVybiB0dH1mdW5jdGlvbiBiKHR0KXtyZXR1cm4gS3V0KHR0LndpZHRoKSYmS3V0KHR0LmhlaWdodCl9ZnVuY3Rpb24gUyh0dCl7cmV0dXJuIHM/ITE6dHQud3JhcFMhPT1ab3x8dHQud3JhcFQhPT1ab3x8dHQubWluRmlsdGVyIT09TGkmJnR0Lm1pbkZpbHRlciE9PW9pfWZ1bmN0aW9uIEModHQsJCl7cmV0dXJuIHR0LmdlbmVyYXRlTWlwbWFwcyYmJCYmdHQubWluRmlsdGVyIT09TGkmJnR0Lm1pbkZpbHRlciE9PW9pfWZ1bmN0aW9uIFAodHQpe2UuZ2VuZXJhdGVNaXBtYXAodHQpfWZ1bmN0aW9uIGsodHQsJCxJdCwkdCxoZT0hMSl7aWYocz09PSExKXJldHVybiAkO2lmKHR0IT09bnVsbCl7aWYoZVt0dF0hPT12b2lkIDApcmV0dXJuIGVbdHRdO2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byB1c2Ugbm9uLWV4aXN0aW5nIFdlYkdMIGludGVybmFsIGZvcm1hdCAnIit0dCsiJyIpfWxldCBUdD0kO3JldHVybiAkPT09NjQwMyYmKEl0PT09NTEyNiYmKFR0PTMzMzI2KSxJdD09PTUxMzEmJihUdD0zMzMyNSksSXQ9PT01MTIxJiYoVHQ9MzMzMjEpKSwkPT09MzMzMTkmJihJdD09PTUxMjYmJihUdD0zMzMyOCksSXQ9PT01MTMxJiYoVHQ9MzMzMjcpLEl0PT09NTEyMSYmKFR0PTMzMzIzKSksJD09PTY0MDgmJihJdD09PTUxMjYmJihUdD0zNDgzNiksSXQ9PT01MTMxJiYoVHQ9MzQ4NDIpLEl0PT09NTEyMSYmKFR0PSR0PT09WW4mJmhlPT09ITE/MzU5MDc6MzI4NTYpLEl0PT09MzI4MTkmJihUdD0zMjg1NCksSXQ9PT0zMjgyMCYmKFR0PTMyODU1KSksKFR0PT09MzMzMjV8fFR0PT09MzMzMjZ8fFR0PT09MzMzMjd8fFR0PT09MzMzMjh8fFR0PT09MzQ4NDJ8fFR0PT09MzQ4MzYpJiZ0LmdldCgiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLFR0fWZ1bmN0aW9uIE8odHQsJCxJdCl7cmV0dXJuIEModHQsSXQpPT09ITB8fHR0LmlzRnJhbWVidWZmZXJUZXh0dXJlJiZ0dC5taW5GaWx0ZXIhPT1MaSYmdHQubWluRmlsdGVyIT09b2k/TWF0aC5sb2cyKE1hdGgubWF4KCQud2lkdGgsJC5oZWlnaHQpKSsxOnR0Lm1pcG1hcHMhPT12b2lkIDAmJnR0Lm1pcG1hcHMubGVuZ3RoPjA/dHQubWlwbWFwcy5sZW5ndGg6dHQuaXNDb21wcmVzc2VkVGV4dHVyZSYmQXJyYXkuaXNBcnJheSh0dC5pbWFnZSk/JC5taXBtYXBzLmxlbmd0aDoxfWZ1bmN0aW9uIEQodHQpe3JldHVybiB0dD09PUxpfHx0dD09PXJVfHx0dD09PW5VPzk3Mjg6OTcyOX1mdW5jdGlvbiBCKHR0KXtsZXQgJD10dC50YXJnZXQ7JC5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixCKSxMKCQpLCQuaXNWaWRlb1RleHR1cmUmJmQuZGVsZXRlKCQpLGEubWVtb3J5LnRleHR1cmVzLS19ZnVuY3Rpb24gSSh0dCl7bGV0ICQ9dHQudGFyZ2V0OyQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsSSksUigkKX1mdW5jdGlvbiBMKHR0KXtsZXQgJD1uLmdldCh0dCk7JC5fX3dlYmdsSW5pdCE9PXZvaWQgMCYmKGUuZGVsZXRlVGV4dHVyZSgkLl9fd2ViZ2xUZXh0dXJlKSxuLnJlbW92ZSh0dCkpfWZ1bmN0aW9uIFIodHQpe2xldCAkPXR0LnRleHR1cmUsSXQ9bi5nZXQodHQpLCR0PW4uZ2V0KCQpO2lmKCEhdHQpe2lmKCR0Ll9fd2ViZ2xUZXh0dXJlIT09dm9pZCAwJiYoZS5kZWxldGVUZXh0dXJlKCR0Ll9fd2ViZ2xUZXh0dXJlKSxhLm1lbW9yeS50ZXh0dXJlcy0tKSx0dC5kZXB0aFRleHR1cmUmJnR0LmRlcHRoVGV4dHVyZS5kaXNwb3NlKCksdHQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpZm9yKGxldCBoZT0wO2hlPDY7aGUrKyllLmRlbGV0ZUZyYW1lYnVmZmVyKEl0Ll9fd2ViZ2xGcmFtZWJ1ZmZlcltoZV0pLEl0Ll9fd2ViZ2xEZXB0aGJ1ZmZlciYmZS5kZWxldGVSZW5kZXJidWZmZXIoSXQuX193ZWJnbERlcHRoYnVmZmVyW2hlXSk7ZWxzZSBlLmRlbGV0ZUZyYW1lYnVmZmVyKEl0Ll9fd2ViZ2xGcmFtZWJ1ZmZlciksSXQuX193ZWJnbERlcHRoYnVmZmVyJiZlLmRlbGV0ZVJlbmRlcmJ1ZmZlcihJdC5fX3dlYmdsRGVwdGhidWZmZXIpLEl0Ll9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciYmZS5kZWxldGVGcmFtZWJ1ZmZlcihJdC5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLEl0Ll9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciYmZS5kZWxldGVSZW5kZXJidWZmZXIoSXQuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSxJdC5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJmUuZGVsZXRlUmVuZGVyYnVmZmVyKEl0Ll9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcik7aWYodHQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cylmb3IobGV0IGhlPTAsVHQ9JC5sZW5ndGg7aGU8VHQ7aGUrKyl7bGV0IGJlPW4uZ2V0KCRbaGVdKTtiZS5fX3dlYmdsVGV4dHVyZSYmKGUuZGVsZXRlVGV4dHVyZShiZS5fX3dlYmdsVGV4dHVyZSksYS5tZW1vcnkudGV4dHVyZXMtLSksbi5yZW1vdmUoJFtoZV0pfW4ucmVtb3ZlKCQpLG4ucmVtb3ZlKHR0KX19bGV0IEY9MDtmdW5jdGlvbiB6KCl7Rj0wfWZ1bmN0aW9uIFUoKXtsZXQgdHQ9RjtyZXR1cm4gdHQ+PWwmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlczogVHJ5aW5nIHRvIHVzZSAiK3R0KyIgdGV4dHVyZSB1bml0cyB3aGlsZSB0aGlzIEdQVSBzdXBwb3J0cyBvbmx5ICIrbCksRis9MSx0dH1mdW5jdGlvbiBXKHR0LCQpe2xldCBJdD1uLmdldCh0dCk7aWYodHQuaXNWaWRlb1RleHR1cmUmJmt0KHR0KSx0dC52ZXJzaW9uPjAmJkl0Ll9fdmVyc2lvbiE9PXR0LnZlcnNpb24pe2xldCAkdD10dC5pbWFnZTtpZigkdD09PXZvaWQgMCljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIHVuZGVmaW5lZCIpO2Vsc2UgaWYoJHQuY29tcGxldGU9PT0hMSljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKTtlbHNle2x0KEl0LHR0LCQpO3JldHVybn19ci5hY3RpdmVUZXh0dXJlKDMzOTg0KyQpLHIuYmluZFRleHR1cmUoMzU1MyxJdC5fX3dlYmdsVGV4dHVyZSl9ZnVuY3Rpb24gWih0dCwkKXtsZXQgSXQ9bi5nZXQodHQpO2lmKHR0LnZlcnNpb24+MCYmSXQuX192ZXJzaW9uIT09dHQudmVyc2lvbil7bHQoSXQsdHQsJCk7cmV0dXJufXIuYWN0aXZlVGV4dHVyZSgzMzk4NCskKSxyLmJpbmRUZXh0dXJlKDM1ODY2LEl0Ll9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBydCh0dCwkKXtsZXQgSXQ9bi5nZXQodHQpO2lmKHR0LnZlcnNpb24+MCYmSXQuX192ZXJzaW9uIT09dHQudmVyc2lvbil7bHQoSXQsdHQsJCk7cmV0dXJufXIuYWN0aXZlVGV4dHVyZSgzMzk4NCskKSxyLmJpbmRUZXh0dXJlKDMyODc5LEl0Ll9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBvdCh0dCwkKXtsZXQgSXQ9bi5nZXQodHQpO2lmKHR0LnZlcnNpb24+MCYmSXQuX192ZXJzaW9uIT09dHQudmVyc2lvbil7S3QoSXQsdHQsJCk7cmV0dXJufXIuYWN0aXZlVGV4dHVyZSgzMzk4NCskKSxyLmJpbmRUZXh0dXJlKDM0MDY3LEl0Ll9fd2ViZ2xUZXh0dXJlKX1sZXQgc3Q9e1tXUF06MTA0OTcsW1pvXTozMzA3MSxbWVBdOjMzNjQ4fSxTdD17W0xpXTo5NzI4LFtyVV06OTk4NCxbblVdOjk5ODYsW29pXTo5NzI5LFtJaHRdOjk5ODUsW294XTo5OTg3fTtmdW5jdGlvbiBidCh0dCwkLEl0KXtpZihJdD8oZS50ZXhQYXJhbWV0ZXJpKHR0LDEwMjQyLHN0WyQud3JhcFNdKSxlLnRleFBhcmFtZXRlcmkodHQsMTAyNDMsc3RbJC53cmFwVF0pLCh0dD09PTMyODc5fHx0dD09PTM1ODY2KSYmZS50ZXhQYXJhbWV0ZXJpKHR0LDMyODgyLHN0WyQud3JhcFJdKSxlLnRleFBhcmFtZXRlcmkodHQsMTAyNDAsU3RbJC5tYWdGaWx0ZXJdKSxlLnRleFBhcmFtZXRlcmkodHQsMTAyNDEsU3RbJC5taW5GaWx0ZXJdKSk6KGUudGV4UGFyYW1ldGVyaSh0dCwxMDI0MiwzMzA3MSksZS50ZXhQYXJhbWV0ZXJpKHR0LDEwMjQzLDMzMDcxKSwodHQ9PT0zMjg3OXx8dHQ9PT0zNTg2NikmJmUudGV4UGFyYW1ldGVyaSh0dCwzMjg4MiwzMzA3MSksKCQud3JhcFMhPT1ab3x8JC53cmFwVCE9PVpvKSYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUud3JhcFMgYW5kIFRleHR1cmUud3JhcFQgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5DbGFtcFRvRWRnZVdyYXBwaW5nLiIpLGUudGV4UGFyYW1ldGVyaSh0dCwxMDI0MCxEKCQubWFnRmlsdGVyKSksZS50ZXhQYXJhbWV0ZXJpKHR0LDEwMjQxLEQoJC5taW5GaWx0ZXIpKSwkLm1pbkZpbHRlciE9PUxpJiYkLm1pbkZpbHRlciE9PW9pJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSksdC5oYXMoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpPT09ITApe2xldCAkdD10LmdldCgiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7aWYoJC50eXBlPT09amQmJnQuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKT09PSExfHxzPT09ITEmJiQudHlwZT09PUMxJiZ0LmhhcygiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKT09PSExKXJldHVybjsoJC5hbmlzb3Ryb3B5PjF8fG4uZ2V0KCQpLl9fY3VycmVudEFuaXNvdHJvcHkpJiYoZS50ZXhQYXJhbWV0ZXJmKHR0LCR0LlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULE1hdGgubWluKCQuYW5pc290cm9weSxpLmdldE1heEFuaXNvdHJvcHkoKSkpLG4uZ2V0KCQpLl9fY3VycmVudEFuaXNvdHJvcHk9JC5hbmlzb3Ryb3B5KX19ZnVuY3Rpb24gTXQodHQsJCl7dHQuX193ZWJnbEluaXQ9PT12b2lkIDAmJih0dC5fX3dlYmdsSW5pdD0hMCwkLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLEIpLHR0Ll9fd2ViZ2xUZXh0dXJlPWUuY3JlYXRlVGV4dHVyZSgpLGEubWVtb3J5LnRleHR1cmVzKyspfWZ1bmN0aW9uIGx0KHR0LCQsSXQpe2xldCAkdD0zNTUzOyQuaXNEYXRhVGV4dHVyZTJEQXJyYXkmJigkdD0zNTg2NiksJC5pc0RhdGFUZXh0dXJlM0QmJigkdD0zMjg3OSksTXQodHQsJCksci5hY3RpdmVUZXh0dXJlKDMzOTg0K0l0KSxyLmJpbmRUZXh0dXJlKCR0LHR0Ll9fd2ViZ2xUZXh0dXJlKSxlLnBpeGVsU3RvcmVpKDM3NDQwLCQuZmxpcFkpLGUucGl4ZWxTdG9yZWkoMzc0NDEsJC5wcmVtdWx0aXBseUFscGhhKSxlLnBpeGVsU3RvcmVpKDMzMTcsJC51bnBhY2tBbGlnbm1lbnQpLGUucGl4ZWxTdG9yZWkoMzc0NDMsMCk7bGV0IGhlPVMoJCkmJmIoJC5pbWFnZSk9PT0hMSxUdD14KCQuaW1hZ2UsaGUsITEsdSk7VHQ9aWUoJCxUdCk7bGV0IGJlPWIoVHQpfHxzLG50PW8uY29udmVydCgkLmZvcm1hdCwkLmVuY29kaW5nKSxDdD1vLmNvbnZlcnQoJC50eXBlKSxXdD1rKCQuaW50ZXJuYWxGb3JtYXQsbnQsQ3QsJC5lbmNvZGluZywkLmlzVmlkZW9UZXh0dXJlKTtidCgkdCwkLGJlKTtsZXQgZmUsYXQ9JC5taXBtYXBzLHNlPXMmJiQuaXNWaWRlb1RleHR1cmUhPT0hMCxRdD10dC5fX3ZlcnNpb249PT12b2lkIDAsQ2U9TygkLFR0LGJlKTtpZigkLmlzRGVwdGhUZXh0dXJlKVd0PTY0MDIscz8kLnR5cGU9PT1qZD9XdD0zNjAxMjokLnR5cGU9PT1GUD9XdD0zMzE5MDokLnR5cGU9PT1BMT9XdD0zNTA1NjpXdD0zMzE4OTokLnR5cGU9PT1qZCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksJC5mb3JtYXQ9PT16MCYmV3Q9PT02NDAyJiYkLnR5cGUhPT1xMyYmJC50eXBlIT09RlAmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZFNob3J0VHlwZSBvciBVbnNpZ25lZEludFR5cGUgZm9yIERlcHRoRm9ybWF0IERlcHRoVGV4dHVyZS4iKSwkLnR5cGU9cTMsQ3Q9by5jb252ZXJ0KCQudHlwZSkpLCQuZm9ybWF0PT09azEmJld0PT09NjQwMiYmKFd0PTM0MDQxLCQudHlwZSE9PUExJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRJbnQyNDhUeXBlIGZvciBEZXB0aFN0ZW5jaWxGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLCQudHlwZT1BMSxDdD1vLmNvbnZlcnQoJC50eXBlKSkpLHNlJiZRdD9yLnRleFN0b3JhZ2UyRCgzNTUzLDEsV3QsVHQud2lkdGgsVHQuaGVpZ2h0KTpyLnRleEltYWdlMkQoMzU1MywwLFd0LFR0LndpZHRoLFR0LmhlaWdodCwwLG50LEN0LG51bGwpO2Vsc2UgaWYoJC5pc0RhdGFUZXh0dXJlKWlmKGF0Lmxlbmd0aD4wJiZiZSl7c2UmJlF0JiZyLnRleFN0b3JhZ2UyRCgzNTUzLENlLFd0LGF0WzBdLndpZHRoLGF0WzBdLmhlaWdodCk7Zm9yKGxldCBQdD0wLE50PWF0Lmxlbmd0aDtQdDxOdDtQdCsrKWZlPWF0W1B0XSxzZT9yLnRleFN1YkltYWdlMkQoMzU1MywwLDAsMCxmZS53aWR0aCxmZS5oZWlnaHQsbnQsQ3QsZmUuZGF0YSk6ci50ZXhJbWFnZTJEKDM1NTMsUHQsV3QsZmUud2lkdGgsZmUuaGVpZ2h0LDAsbnQsQ3QsZmUuZGF0YSk7JC5nZW5lcmF0ZU1pcG1hcHM9ITF9ZWxzZSBzZT8oUXQmJnIudGV4U3RvcmFnZTJEKDM1NTMsQ2UsV3QsVHQud2lkdGgsVHQuaGVpZ2h0KSxyLnRleFN1YkltYWdlMkQoMzU1MywwLDAsMCxUdC53aWR0aCxUdC5oZWlnaHQsbnQsQ3QsVHQuZGF0YSkpOnIudGV4SW1hZ2UyRCgzNTUzLDAsV3QsVHQud2lkdGgsVHQuaGVpZ2h0LDAsbnQsQ3QsVHQuZGF0YSk7ZWxzZSBpZigkLmlzQ29tcHJlc3NlZFRleHR1cmUpe3NlJiZRdCYmci50ZXhTdG9yYWdlMkQoMzU1MyxDZSxXdCxhdFswXS53aWR0aCxhdFswXS5oZWlnaHQpO2ZvcihsZXQgUHQ9MCxOdD1hdC5sZW5ndGg7UHQ8TnQ7UHQrKylmZT1hdFtQdF0sJC5mb3JtYXQhPT1Kbz9udCE9PW51bGw/c2U/ci5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNTUzLFB0LDAsMCxmZS53aWR0aCxmZS5oZWlnaHQsbnQsZmUuZGF0YSk6ci5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLFB0LFd0LGZlLndpZHRoLGZlLmhlaWdodCwwLGZlLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnVwbG9hZFRleHR1cmUoKSIpOnNlP3IudGV4U3ViSW1hZ2UyRCgzNTUzLFB0LDAsMCxmZS53aWR0aCxmZS5oZWlnaHQsbnQsQ3QsZmUuZGF0YSk6ci50ZXhJbWFnZTJEKDM1NTMsUHQsV3QsZmUud2lkdGgsZmUuaGVpZ2h0LDAsbnQsQ3QsZmUuZGF0YSl9ZWxzZSBpZigkLmlzRGF0YVRleHR1cmUyREFycmF5KXNlPyhRdCYmci50ZXhTdG9yYWdlM0QoMzU4NjYsQ2UsV3QsVHQud2lkdGgsVHQuaGVpZ2h0LFR0LmRlcHRoKSxyLnRleFN1YkltYWdlM0QoMzU4NjYsMCwwLDAsMCxUdC53aWR0aCxUdC5oZWlnaHQsVHQuZGVwdGgsbnQsQ3QsVHQuZGF0YSkpOnIudGV4SW1hZ2UzRCgzNTg2NiwwLFd0LFR0LndpZHRoLFR0LmhlaWdodCxUdC5kZXB0aCwwLG50LEN0LFR0LmRhdGEpO2Vsc2UgaWYoJC5pc0RhdGFUZXh0dXJlM0Qpc2U/KFF0JiZyLnRleFN0b3JhZ2UzRCgzMjg3OSxDZSxXdCxUdC53aWR0aCxUdC5oZWlnaHQsVHQuZGVwdGgpLHIudGV4U3ViSW1hZ2UzRCgzMjg3OSwwLDAsMCwwLFR0LndpZHRoLFR0LmhlaWdodCxUdC5kZXB0aCxudCxDdCxUdC5kYXRhKSk6ci50ZXhJbWFnZTNEKDMyODc5LDAsV3QsVHQud2lkdGgsVHQuaGVpZ2h0LFR0LmRlcHRoLDAsbnQsQ3QsVHQuZGF0YSk7ZWxzZSBpZigkLmlzRnJhbWVidWZmZXJUZXh0dXJlKXNlJiZRdD9yLnRleFN0b3JhZ2UyRCgzNTUzLENlLFd0LFR0LndpZHRoLFR0LmhlaWdodCk6ci50ZXhJbWFnZTJEKDM1NTMsMCxXdCxUdC53aWR0aCxUdC5oZWlnaHQsMCxudCxDdCxudWxsKTtlbHNlIGlmKGF0Lmxlbmd0aD4wJiZiZSl7c2UmJlF0JiZyLnRleFN0b3JhZ2UyRCgzNTUzLENlLFd0LGF0WzBdLndpZHRoLGF0WzBdLmhlaWdodCk7Zm9yKGxldCBQdD0wLE50PWF0Lmxlbmd0aDtQdDxOdDtQdCsrKWZlPWF0W1B0XSxzZT9yLnRleFN1YkltYWdlMkQoMzU1MyxQdCwwLDAsbnQsQ3QsZmUpOnIudGV4SW1hZ2UyRCgzNTUzLFB0LFd0LG50LEN0LGZlKTskLmdlbmVyYXRlTWlwbWFwcz0hMX1lbHNlIHNlPyhRdCYmci50ZXhTdG9yYWdlMkQoMzU1MyxDZSxXdCxUdC53aWR0aCxUdC5oZWlnaHQpLHIudGV4U3ViSW1hZ2UyRCgzNTUzLDAsMCwwLG50LEN0LFR0KSk6ci50ZXhJbWFnZTJEKDM1NTMsMCxXdCxudCxDdCxUdCk7QygkLGJlKSYmUCgkdCksdHQuX192ZXJzaW9uPSQudmVyc2lvbiwkLm9uVXBkYXRlJiYkLm9uVXBkYXRlKCQpfWZ1bmN0aW9uIEt0KHR0LCQsSXQpe2lmKCQuaW1hZ2UubGVuZ3RoIT09NilyZXR1cm47TXQodHQsJCksci5hY3RpdmVUZXh0dXJlKDMzOTg0K0l0KSxyLmJpbmRUZXh0dXJlKDM0MDY3LHR0Ll9fd2ViZ2xUZXh0dXJlKSxlLnBpeGVsU3RvcmVpKDM3NDQwLCQuZmxpcFkpLGUucGl4ZWxTdG9yZWkoMzc0NDEsJC5wcmVtdWx0aXBseUFscGhhKSxlLnBpeGVsU3RvcmVpKDMzMTcsJC51bnBhY2tBbGlnbm1lbnQpLGUucGl4ZWxTdG9yZWkoMzc0NDMsMCk7bGV0ICR0PSQmJigkLmlzQ29tcHJlc3NlZFRleHR1cmV8fCQuaW1hZ2VbMF0uaXNDb21wcmVzc2VkVGV4dHVyZSksaGU9JC5pbWFnZVswXSYmJC5pbWFnZVswXS5pc0RhdGFUZXh0dXJlLFR0PVtdO2ZvcihsZXQgUHQ9MDtQdDw2O1B0KyspISR0JiYhaGU/VHRbUHRdPXgoJC5pbWFnZVtQdF0sITEsITAsYyk6VHRbUHRdPWhlPyQuaW1hZ2VbUHRdLmltYWdlOiQuaW1hZ2VbUHRdLFR0W1B0XT1pZSgkLFR0W1B0XSk7bGV0IGJlPVR0WzBdLG50PWIoYmUpfHxzLEN0PW8uY29udmVydCgkLmZvcm1hdCwkLmVuY29kaW5nKSxXdD1vLmNvbnZlcnQoJC50eXBlKSxmZT1rKCQuaW50ZXJuYWxGb3JtYXQsQ3QsV3QsJC5lbmNvZGluZyksYXQ9cyYmJC5pc1ZpZGVvVGV4dHVyZSE9PSEwLHNlPXR0Ll9fdmVyc2lvbj09PXZvaWQgMCxRdD1PKCQsYmUsbnQpO2J0KDM0MDY3LCQsbnQpO2xldCBDZTtpZigkdCl7YXQmJnNlJiZyLnRleFN0b3JhZ2UyRCgzNDA2NyxRdCxmZSxiZS53aWR0aCxiZS5oZWlnaHQpO2ZvcihsZXQgUHQ9MDtQdDw2O1B0Kyspe0NlPVR0W1B0XS5taXBtYXBzO2ZvcihsZXQgTnQ9MDtOdDxDZS5sZW5ndGg7TnQrKyl7bGV0IHplPUNlW050XTskLmZvcm1hdCE9PUpvP0N0IT09bnVsbD9hdD9yLmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM0MDY5K1B0LE50LDAsMCx6ZS53aWR0aCx6ZS5oZWlnaHQsQ3QsemUuZGF0YSk6ci5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNDA2OStQdCxOdCxmZSx6ZS53aWR0aCx6ZS5oZWlnaHQsMCx6ZS5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC5zZXRUZXh0dXJlQ3ViZSgpIik6YXQ/ci50ZXhTdWJJbWFnZTJEKDM0MDY5K1B0LE50LDAsMCx6ZS53aWR0aCx6ZS5oZWlnaHQsQ3QsV3QsemUuZGF0YSk6ci50ZXhJbWFnZTJEKDM0MDY5K1B0LE50LGZlLHplLndpZHRoLHplLmhlaWdodCwwLEN0LFd0LHplLmRhdGEpfX19ZWxzZXtDZT0kLm1pcG1hcHMsYXQmJnNlJiYoQ2UubGVuZ3RoPjAmJlF0Kyssci50ZXhTdG9yYWdlMkQoMzQwNjcsUXQsZmUsVHRbMF0ud2lkdGgsVHRbMF0uaGVpZ2h0KSk7Zm9yKGxldCBQdD0wO1B0PDY7UHQrKylpZihoZSl7YXQ/ci50ZXhTdWJJbWFnZTJEKDM0MDY5K1B0LDAsMCwwLFR0W1B0XS53aWR0aCxUdFtQdF0uaGVpZ2h0LEN0LFd0LFR0W1B0XS5kYXRhKTpyLnRleEltYWdlMkQoMzQwNjkrUHQsMCxmZSxUdFtQdF0ud2lkdGgsVHRbUHRdLmhlaWdodCwwLEN0LFd0LFR0W1B0XS5kYXRhKTtmb3IobGV0IE50PTA7TnQ8Q2UubGVuZ3RoO050Kyspe2xldCB5bj1DZVtOdF0uaW1hZ2VbUHRdLmltYWdlO2F0P3IudGV4U3ViSW1hZ2UyRCgzNDA2OStQdCxOdCsxLDAsMCx5bi53aWR0aCx5bi5oZWlnaHQsQ3QsV3QseW4uZGF0YSk6ci50ZXhJbWFnZTJEKDM0MDY5K1B0LE50KzEsZmUseW4ud2lkdGgseW4uaGVpZ2h0LDAsQ3QsV3QseW4uZGF0YSl9fWVsc2V7YXQ/ci50ZXhTdWJJbWFnZTJEKDM0MDY5K1B0LDAsMCwwLEN0LFd0LFR0W1B0XSk6ci50ZXhJbWFnZTJEKDM0MDY5K1B0LDAsZmUsQ3QsV3QsVHRbUHRdKTtmb3IobGV0IE50PTA7TnQ8Q2UubGVuZ3RoO050Kyspe2xldCB6ZT1DZVtOdF07YXQ/ci50ZXhTdWJJbWFnZTJEKDM0MDY5K1B0LE50KzEsMCwwLEN0LFd0LHplLmltYWdlW1B0XSk6ci50ZXhJbWFnZTJEKDM0MDY5K1B0LE50KzEsZmUsQ3QsV3QsemUuaW1hZ2VbUHRdKX19fUMoJCxudCkmJlAoMzQwNjcpLHR0Ll9fdmVyc2lvbj0kLnZlcnNpb24sJC5vblVwZGF0ZSYmJC5vblVwZGF0ZSgkKX1mdW5jdGlvbiBfdCh0dCwkLEl0LCR0LGhlKXtsZXQgVHQ9by5jb252ZXJ0KEl0LmZvcm1hdCxJdC5lbmNvZGluZyksYmU9by5jb252ZXJ0KEl0LnR5cGUpLG50PWsoSXQuaW50ZXJuYWxGb3JtYXQsVHQsYmUsSXQuZW5jb2RpbmcpO24uZ2V0KCQpLl9faGFzRXh0ZXJuYWxUZXh0dXJlc3x8KGhlPT09MzI4Nzl8fGhlPT09MzU4NjY/ci50ZXhJbWFnZTNEKGhlLDAsbnQsJC53aWR0aCwkLmhlaWdodCwkLmRlcHRoLDAsVHQsYmUsbnVsbCk6ci50ZXhJbWFnZTJEKGhlLDAsbnQsJC53aWR0aCwkLmhlaWdodCwwLFR0LGJlLG51bGwpKSxyLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx0dCksJC51c2VSZW5kZXJUb1RleHR1cmU/cC5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLCR0LGhlLG4uZ2V0KEl0KS5fX3dlYmdsVGV4dHVyZSwwLHd0KCQpKTplLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLCR0LGhlLG4uZ2V0KEl0KS5fX3dlYmdsVGV4dHVyZSwwKSxyLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1mdW5jdGlvbiBjdCh0dCwkLEl0KXtpZihlLmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsdHQpLCQuZGVwdGhCdWZmZXImJiEkLnN0ZW5jaWxCdWZmZXIpe2xldCAkdD0zMzE4OTtpZihJdHx8JC51c2VSZW5kZXJUb1RleHR1cmUpe2xldCBoZT0kLmRlcHRoVGV4dHVyZTtoZSYmaGUuaXNEZXB0aFRleHR1cmUmJihoZS50eXBlPT09amQ/JHQ9MzYwMTI6aGUudHlwZT09PUZQJiYoJHQ9MzMxOTApKTtsZXQgVHQ9d3QoJCk7JC51c2VSZW5kZXJUb1RleHR1cmU/cC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoMzYxNjEsVHQsJHQsJC53aWR0aCwkLmhlaWdodCk6ZS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsVHQsJHQsJC53aWR0aCwkLmhlaWdodCl9ZWxzZSBlLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsJHQsJC53aWR0aCwkLmhlaWdodCk7ZS5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA5NiwzNjE2MSx0dCl9ZWxzZSBpZigkLmRlcHRoQnVmZmVyJiYkLnN0ZW5jaWxCdWZmZXIpe2xldCAkdD13dCgkKTtJdCYmJC51c2VSZW5kZXJidWZmZXI/ZS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsJHQsMzUwNTYsJC53aWR0aCwkLmhlaWdodCk6JC51c2VSZW5kZXJUb1RleHR1cmU/cC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoMzYxNjEsJHQsMzUwNTYsJC53aWR0aCwkLmhlaWdodCk6ZS5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLCQud2lkdGgsJC5oZWlnaHQpLGUuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsdHQpfWVsc2V7bGV0ICR0PSQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz09PSEwPyQudGV4dHVyZVswXTokLnRleHR1cmUsaGU9by5jb252ZXJ0KCR0LmZvcm1hdCwkdC5lbmNvZGluZyksVHQ9by5jb252ZXJ0KCR0LnR5cGUpLGJlPWsoJHQuaW50ZXJuYWxGb3JtYXQsaGUsVHQsJHQuZW5jb2RpbmcpLG50PXd0KCQpO0l0JiYkLnVzZVJlbmRlcmJ1ZmZlcj9lLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxudCxiZSwkLndpZHRoLCQuaGVpZ2h0KTokLnVzZVJlbmRlclRvVGV4dHVyZT9wLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgzNjE2MSxudCxiZSwkLndpZHRoLCQuaGVpZ2h0KTplLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsYmUsJC53aWR0aCwkLmhlaWdodCl9ZS5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIFgodHQsJCl7aWYoJCYmJC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZihyLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx0dCksISgkLmRlcHRoVGV4dHVyZSYmJC5kZXB0aFRleHR1cmUuaXNEZXB0aFRleHR1cmUpKXRocm93IG5ldyBFcnJvcigicmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFRIUkVFLkRlcHRoVGV4dHVyZSIpOyghbi5nZXQoJC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlfHwkLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aCE9PSQud2lkdGh8fCQuZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodCE9PSQuaGVpZ2h0KSYmKCQuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPSQud2lkdGgsJC5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PSQuaGVpZ2h0LCQuZGVwdGhUZXh0dXJlLm5lZWRzVXBkYXRlPSEwKSxXKCQuZGVwdGhUZXh0dXJlLDApO2xldCAkdD1uLmdldCgkLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUsaGU9d3QoJCk7aWYoJC5kZXB0aFRleHR1cmUuZm9ybWF0PT09ejApJC51c2VSZW5kZXJUb1RleHR1cmU/cC5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLDM2MDk2LDM1NTMsJHQsMCxoZSk6ZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLCR0LDApO2Vsc2UgaWYoJC5kZXB0aFRleHR1cmUuZm9ybWF0PT09azEpJC51c2VSZW5kZXJUb1RleHR1cmU/cC5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLDMzMzA2LDM1NTMsJHQsMCxoZSk6ZS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzMzMwNiwzNTUzLCR0LDApO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKX1mdW5jdGlvbiBldCh0dCl7bGV0ICQ9bi5nZXQodHQpLEl0PXR0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PT09ITA7aWYodHQuZGVwdGhUZXh0dXJlJiYhJC5fX2F1dG9BbGxvY2F0ZURlcHRoQnVmZmVyKXtpZihJdCl0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7WCgkLl9fd2ViZ2xGcmFtZWJ1ZmZlcix0dCl9ZWxzZSBpZihJdCl7JC5fX3dlYmdsRGVwdGhidWZmZXI9W107Zm9yKGxldCAkdD0wOyR0PDY7JHQrKylyLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCwkLl9fd2ViZ2xGcmFtZWJ1ZmZlclskdF0pLCQuX193ZWJnbERlcHRoYnVmZmVyWyR0XT1lLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLGN0KCQuX193ZWJnbERlcHRoYnVmZmVyWyR0XSx0dCwhMSl9ZWxzZSByLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCwkLl9fd2ViZ2xGcmFtZWJ1ZmZlciksJC5fX3dlYmdsRGVwdGhidWZmZXI9ZS5jcmVhdGVSZW5kZXJidWZmZXIoKSxjdCgkLl9fd2ViZ2xEZXB0aGJ1ZmZlcix0dCwhMSk7ci5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24gZHQodHQsJCxJdCl7bGV0ICR0PW4uZ2V0KHR0KTskIT09dm9pZCAwJiZfdCgkdC5fX3dlYmdsRnJhbWVidWZmZXIsdHQsdHQudGV4dHVyZSwzNjA2NCwzNTUzKSxJdCE9PXZvaWQgMCYmZXQodHQpfWZ1bmN0aW9uIHEodHQpe2xldCAkPXR0LnRleHR1cmUsSXQ9bi5nZXQodHQpLCR0PW4uZ2V0KCQpO3R0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLEkpLHR0LmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMhPT0hMCYmKCR0Ll9fd2ViZ2xUZXh0dXJlPT09dm9pZCAwJiYoJHQuX193ZWJnbFRleHR1cmU9ZS5jcmVhdGVUZXh0dXJlKCkpLCR0Ll9fdmVyc2lvbj0kLnZlcnNpb24sYS5tZW1vcnkudGV4dHVyZXMrKyk7bGV0IGhlPXR0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PT09ITAsVHQ9dHQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cz09PSEwLGJlPSQuaXNEYXRhVGV4dHVyZTNEfHwkLmlzRGF0YVRleHR1cmUyREFycmF5LG50PWIodHQpfHxzO2lmKGhlKXtJdC5fX3dlYmdsRnJhbWVidWZmZXI9W107Zm9yKGxldCBDdD0wO0N0PDY7Q3QrKylJdC5fX3dlYmdsRnJhbWVidWZmZXJbQ3RdPWUuY3JlYXRlRnJhbWVidWZmZXIoKX1lbHNlIGlmKEl0Ll9fd2ViZ2xGcmFtZWJ1ZmZlcj1lLmNyZWF0ZUZyYW1lYnVmZmVyKCksVHQpaWYoaS5kcmF3QnVmZmVycyl7bGV0IEN0PXR0LnRleHR1cmU7Zm9yKGxldCBXdD0wLGZlPUN0Lmxlbmd0aDtXdDxmZTtXdCsrKXtsZXQgYXQ9bi5nZXQoQ3RbV3RdKTthdC5fX3dlYmdsVGV4dHVyZT09PXZvaWQgMCYmKGF0Ll9fd2ViZ2xUZXh0dXJlPWUuY3JlYXRlVGV4dHVyZSgpLGEubWVtb3J5LnRleHR1cmVzKyspfX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMiBvciBXRUJHTF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uLiIpO2Vsc2UgaWYodHQudXNlUmVuZGVyYnVmZmVyKWlmKHMpe0l0Ll9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcj1lLmNyZWF0ZUZyYW1lYnVmZmVyKCksSXQuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyPWUuY3JlYXRlUmVuZGVyYnVmZmVyKCksZS5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLEl0Ll9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcik7bGV0IEN0PW8uY29udmVydCgkLmZvcm1hdCwkLmVuY29kaW5nKSxXdD1vLmNvbnZlcnQoJC50eXBlKSxmZT1rKCQuaW50ZXJuYWxGb3JtYXQsQ3QsV3QsJC5lbmNvZGluZyksYXQ9d3QodHQpO2UucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLGF0LGZlLHR0LndpZHRoLHR0LmhlaWdodCksci5iaW5kRnJhbWVidWZmZXIoMzYxNjAsSXQuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSxlLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLEl0Ll9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksZS5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLHR0LmRlcHRoQnVmZmVyJiYoSXQuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPWUuY3JlYXRlUmVuZGVyYnVmZmVyKCksY3QoSXQuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyLHR0LCEwKSksci5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihoZSl7ci5iaW5kVGV4dHVyZSgzNDA2NywkdC5fX3dlYmdsVGV4dHVyZSksYnQoMzQwNjcsJCxudCk7Zm9yKGxldCBDdD0wO0N0PDY7Q3QrKylfdChJdC5fX3dlYmdsRnJhbWVidWZmZXJbQ3RdLHR0LCQsMzYwNjQsMzQwNjkrQ3QpO0MoJCxudCkmJlAoMzQwNjcpLHIudW5iaW5kVGV4dHVyZSgpfWVsc2UgaWYoVHQpe2xldCBDdD10dC50ZXh0dXJlO2ZvcihsZXQgV3Q9MCxmZT1DdC5sZW5ndGg7V3Q8ZmU7V3QrKyl7bGV0IGF0PUN0W1d0XSxzZT1uLmdldChhdCk7ci5iaW5kVGV4dHVyZSgzNTUzLHNlLl9fd2ViZ2xUZXh0dXJlKSxidCgzNTUzLGF0LG50KSxfdChJdC5fX3dlYmdsRnJhbWVidWZmZXIsdHQsYXQsMzYwNjQrV3QsMzU1MyksQyhhdCxudCkmJlAoMzU1Myl9ci51bmJpbmRUZXh0dXJlKCl9ZWxzZXtsZXQgQ3Q9MzU1MztiZSYmKHM/Q3Q9JC5pc0RhdGFUZXh0dXJlM0Q/MzI4Nzk6MzU4NjY6Y29uc29sZS53YXJuKCJUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkgb25seSBzdXBwb3J0ZWQgd2l0aCBXZWJHTDIuIikpLHIuYmluZFRleHR1cmUoQ3QsJHQuX193ZWJnbFRleHR1cmUpLGJ0KEN0LCQsbnQpLF90KEl0Ll9fd2ViZ2xGcmFtZWJ1ZmZlcix0dCwkLDM2MDY0LEN0KSxDKCQsbnQpJiZQKEN0KSxyLnVuYmluZFRleHR1cmUoKX10dC5kZXB0aEJ1ZmZlciYmZXQodHQpfWZ1bmN0aW9uIHB0KHR0KXtsZXQgJD1iKHR0KXx8cyxJdD10dC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzPT09ITA/dHQudGV4dHVyZTpbdHQudGV4dHVyZV07Zm9yKGxldCAkdD0wLGhlPUl0Lmxlbmd0aDskdDxoZTskdCsrKXtsZXQgVHQ9SXRbJHRdO2lmKEMoVHQsJCkpe2xldCBiZT10dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLG50PW4uZ2V0KFR0KS5fX3dlYmdsVGV4dHVyZTtyLmJpbmRUZXh0dXJlKGJlLG50KSxQKGJlKSxyLnVuYmluZFRleHR1cmUoKX19fWZ1bmN0aW9uIGh0KHR0KXtpZih0dC51c2VSZW5kZXJidWZmZXIpaWYocyl7bGV0ICQ9dHQud2lkdGgsSXQ9dHQuaGVpZ2h0LCR0PTE2Mzg0LGhlPVszNjA2NF0sVHQ9dHQuc3RlbmNpbEJ1ZmZlcj8zMzMwNjozNjA5Njt0dC5kZXB0aEJ1ZmZlciYmaGUucHVzaChUdCksdHQuaWdub3JlRGVwdGhGb3JNdWx0aXNhbXBsZUNvcHl8fCh0dC5kZXB0aEJ1ZmZlciYmKCR0fD0yNTYpLHR0LnN0ZW5jaWxCdWZmZXImJigkdHw9MTAyNCkpO2xldCBiZT1uLmdldCh0dCk7ci5iaW5kRnJhbWVidWZmZXIoMzYwMDgsYmUuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSxyLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxiZS5fX3dlYmdsRnJhbWVidWZmZXIpLHR0Lmlnbm9yZURlcHRoRm9yTXVsdGlzYW1wbGVDb3B5JiYoZS5pbnZhbGlkYXRlRnJhbWVidWZmZXIoMzYwMDgsW1R0XSksZS5pbnZhbGlkYXRlRnJhbWVidWZmZXIoMzYwMDksW1R0XSkpLGUuYmxpdEZyYW1lYnVmZmVyKDAsMCwkLEl0LDAsMCwkLEl0LCR0LDk3MjgpLGUuaW52YWxpZGF0ZUZyYW1lYnVmZmVyKDM2MDA4LGhlKSxyLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxudWxsKSxyLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxiZS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIil9ZnVuY3Rpb24gd3QodHQpe3JldHVybiBzJiYodHQudXNlUmVuZGVyYnVmZmVyfHx0dC51c2VSZW5kZXJUb1RleHR1cmUpP01hdGgubWluKGgsdHQuc2FtcGxlcyk6MH1mdW5jdGlvbiBrdCh0dCl7bGV0ICQ9YS5yZW5kZXIuZnJhbWU7ZC5nZXQodHQpIT09JCYmKGQuc2V0KHR0LCQpLHR0LnVwZGF0ZSgpKX1mdW5jdGlvbiBpZSh0dCwkKXtsZXQgSXQ9dHQuZW5jb2RpbmcsJHQ9dHQuZm9ybWF0LGhlPXR0LnR5cGU7cmV0dXJuIHR0LmlzQ29tcHJlc3NlZFRleHR1cmU9PT0hMHx8dHQuaXNWaWRlb1RleHR1cmU9PT0hMHx8dHQuZm9ybWF0PT09aVV8fEl0IT09UWQmJihJdD09PVluP3M9PT0hMT90LmhhcygiRVhUX3NSR0IiKT09PSEwJiYkdD09PUpvPyh0dC5mb3JtYXQ9aVUsdHQubWluRmlsdGVyPW9pLHR0LmdlbmVyYXRlTWlwbWFwcz0hMSk6JD0kZi5zUkdCVG9MaW5lYXIoJCk6KCR0IT09Sm98fGhlIT09WmQpJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXM6IHNSR0IgZW5jb2RlZCB0ZXh0dXJlcyBoYXZlIHRvIHVzZSBSR0JBRm9ybWF0IGFuZCBVbnNpZ25lZEJ5dGVUeXBlLiIpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMVGV4dHVyZXM6IFVuc3VwcG9ydGVkIHRleHR1cmUgZW5jb2Rpbmc6IixJdCkpLCR9bGV0IGVlPSExLExlPSExO2Z1bmN0aW9uIGFyKHR0LCQpe3R0JiZ0dC5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoZWU9PT0hMSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLGVlPSEwKSx0dD10dC50ZXh0dXJlKSxXKHR0LCQpfWZ1bmN0aW9uIGZyKHR0LCQpe3R0JiZ0dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmKExlPT09ITEmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXMuc2FmZVNldFRleHR1cmVDdWJlOiBkb24ndCB1c2UgY3ViZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksTGU9ITApLHR0PXR0LnRleHR1cmUpLG90KHR0LCQpfXRoaXMuYWxsb2NhdGVUZXh0dXJlVW5pdD1VLHRoaXMucmVzZXRUZXh0dXJlVW5pdHM9eix0aGlzLnNldFRleHR1cmUyRD1XLHRoaXMuc2V0VGV4dHVyZTJEQXJyYXk9Wix0aGlzLnNldFRleHR1cmUzRD1ydCx0aGlzLnNldFRleHR1cmVDdWJlPW90LHRoaXMucmViaW5kVGV4dHVyZXM9ZHQsdGhpcy5zZXR1cFJlbmRlclRhcmdldD1xLHRoaXMudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwPXB0LHRoaXMudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9aHQsdGhpcy5zZXR1cERlcHRoUmVuZGVyYnVmZmVyPWV0LHRoaXMuc2V0dXBGcmFtZUJ1ZmZlclRleHR1cmU9X3QsdGhpcy5zYWZlU2V0VGV4dHVyZTJEPWFyLHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZyfWZ1bmN0aW9uIEdmZShlLHQscil7bGV0IG49ci5pc1dlYkdMMjtmdW5jdGlvbiBpKG8sYT1udWxsKXtsZXQgcztpZihvPT09WmQpcmV0dXJuIDUxMjE7aWYobz09PWNmZSlyZXR1cm4gMzI4MTk7aWYobz09PXVmZSlyZXR1cm4gMzI4MjA7aWYobz09PWFmZSlyZXR1cm4gNTEyMDtpZihvPT09c2ZlKXJldHVybiA1MTIyO2lmKG89PT1xMylyZXR1cm4gNTEyMztpZihvPT09bGZlKXJldHVybiA1MTI0O2lmKG89PT1GUClyZXR1cm4gNTEyNTtpZihvPT09amQpcmV0dXJuIDUxMjY7aWYobz09PUMxKXJldHVybiBuPzUxMzE6KHM9dC5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxzIT09bnVsbD9zLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKG89PT1oZmUpcmV0dXJuIDY0MDY7aWYobz09PUpvKXJldHVybiA2NDA4O2lmKG89PT1mZmUpcmV0dXJuIDY0MDk7aWYobz09PXBmZSlyZXR1cm4gNjQxMDtpZihvPT09ejApcmV0dXJuIDY0MDI7aWYobz09PWsxKXJldHVybiAzNDA0MTtpZihvPT09ZGZlKXJldHVybiA2NDAzO2lmKG89PT1pVSlyZXR1cm4gcz10LmdldCgiRVhUX3NSR0IiKSxzIT09bnVsbD9zLlNSR0JfQUxQSEFfRVhUOm51bGw7aWYobz09PW1mZSlyZXR1cm4gMzYyNDQ7aWYobz09PWdmZSlyZXR1cm4gMzMzMTk7aWYobz09PV9mZSlyZXR1cm4gMzMzMjA7aWYobz09PXlmZSlyZXR1cm4gMzYyNDk7aWYobz09PSRWfHxvPT09S1Z8fG89PT1aVnx8bz09PUpWKWlmKGE9PT1ZbilpZihzPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIikscyE9PW51bGwpe2lmKG89PT0kVilyZXR1cm4gcy5DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDtpZihvPT09S1YpcmV0dXJuIHMuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ7aWYobz09PVpWKXJldHVybiBzLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUO2lmKG89PT1KVilyZXR1cm4gcy5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVH1lbHNlIHJldHVybiBudWxsO2Vsc2UgaWYocz10LmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSxzIT09bnVsbCl7aWYobz09PSRWKXJldHVybiBzLkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7aWYobz09PUtWKXJldHVybiBzLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUO2lmKG89PT1aVilyZXR1cm4gcy5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDtpZihvPT09SlYpcmV0dXJuIHMuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFR9ZWxzZSByZXR1cm4gbnVsbDtpZihvPT09QXV0fHxvPT09UHV0fHxvPT09SXV0fHxvPT09THV0KWlmKHM9dC5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpLHMhPT1udWxsKXtpZihvPT09QXV0KXJldHVybiBzLkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc7aWYobz09PVB1dClyZXR1cm4gcy5DT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HO2lmKG89PT1JdXQpcmV0dXJuIHMuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc7aWYobz09PUx1dClyZXR1cm4gcy5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNR31lbHNlIHJldHVybiBudWxsO2lmKG89PT12ZmUpcmV0dXJuIHM9dC5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIikscyE9PW51bGw/cy5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOm51bGw7aWYobz09PWt1dHx8bz09PVJ1dClpZihzPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIikscyE9PW51bGwpe2lmKG89PT1rdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfRVRDMjpzLkNPTVBSRVNTRURfUkdCOF9FVEMyO2lmKG89PT1SdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOnMuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQ31lbHNlIHJldHVybiBudWxsO2lmKG89PT1OdXR8fG89PT1EdXR8fG89PT1PdXR8fG89PT16dXR8fG89PT1GdXR8fG89PT1CdXR8fG89PT1IdXR8fG89PT1WdXR8fG89PT1VdXR8fG89PT1xdXR8fG89PT1HdXR8fG89PT1XdXR8fG89PT1ZdXR8fG89PT1qdXQpaWYocz10LmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiKSxzIT09bnVsbCl7aWYobz09PU51dClyZXR1cm4gYT09PVluP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjtpZihvPT09RHV0KXJldHVybiBhPT09WW4/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSO2lmKG89PT1PdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjpzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI7aWYobz09PXp1dClyZXR1cm4gYT09PVluP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjtpZihvPT09RnV0KXJldHVybiBhPT09WW4/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSO2lmKG89PT1CdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjpzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI7aWYobz09PUh1dClyZXR1cm4gYT09PVluP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjtpZihvPT09VnV0KXJldHVybiBhPT09WW4/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSO2lmKG89PT1VdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjtpZihvPT09cXV0KXJldHVybiBhPT09WW4/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI7aWYobz09PUd1dClyZXR1cm4gYT09PVluP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjpzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSO2lmKG89PT1XdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSO2lmKG89PT1ZdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSO2lmKG89PT1qdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSfWVsc2UgcmV0dXJuIG51bGw7aWYobz09PVh1dClpZihzPXQuZ2V0KCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIikscyE9PW51bGwpe2lmKG89PT1YdXQpcmV0dXJuIGE9PT1Zbj9zLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9CUFRDX1VOT1JNX0VYVDpzLkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVH1lbHNlIHJldHVybiBudWxsO2lmKG89PT1BMSlyZXR1cm4gbj8zNDA0Mjoocz10LmdldCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLHMhPT1udWxsP3MuVU5TSUdORURfSU5UXzI0XzhfV0VCR0w6bnVsbCl9cmV0dXJue2NvbnZlcnQ6aX19dmFyIHQ2PWNsYXNzIGV4dGVuZHMgVml7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLmNhbWVyYXM9dH19O3Q2LnByb3RvdHlwZS5pc0FycmF5Q2FtZXJhPSEwO3ZhciBYZD1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikdyb3VwIn19O1hkLnByb3RvdHlwZS5pc0dyb3VwPSEwO3ZhciBiZ3I9e3R5cGU6Im1vdmUifSxIUD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3RhcmdldFJheT1udWxsLHRoaXMuX2dyaXA9bnVsbCx0aGlzLl9oYW5kPW51bGx9Z2V0SGFuZFNwYWNlKCl7cmV0dXJuIHRoaXMuX2hhbmQ9PT1udWxsJiYodGhpcy5faGFuZD1uZXcgWGQsdGhpcy5faGFuZC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2hhbmQudmlzaWJsZT0hMSx0aGlzLl9oYW5kLmpvaW50cz17fSx0aGlzLl9oYW5kLmlucHV0U3RhdGU9e3BpbmNoaW5nOiExfSksdGhpcy5faGFuZH1nZXRUYXJnZXRSYXlTcGFjZSgpe3JldHVybiB0aGlzLl90YXJnZXRSYXk9PT1udWxsJiYodGhpcy5fdGFyZ2V0UmF5PW5ldyBYZCx0aGlzLl90YXJnZXRSYXkubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSx0aGlzLl90YXJnZXRSYXkuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmxpbmVhclZlbG9jaXR5PW5ldyBqLHRoaXMuX3RhcmdldFJheS5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmFuZ3VsYXJWZWxvY2l0eT1uZXcgaiksdGhpcy5fdGFyZ2V0UmF5fWdldEdyaXBTcGFjZSgpe3JldHVybiB0aGlzLl9ncmlwPT09bnVsbCYmKHRoaXMuX2dyaXA9bmV3IFhkLHRoaXMuX2dyaXAubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9ncmlwLnZpc2libGU9ITEsdGhpcy5fZ3JpcC5oYXNMaW5lYXJWZWxvY2l0eT0hMSx0aGlzLl9ncmlwLmxpbmVhclZlbG9jaXR5PW5ldyBqLHRoaXMuX2dyaXAuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAuYW5ndWxhclZlbG9jaXR5PW5ldyBqKSx0aGlzLl9ncmlwfWRpc3BhdGNoRXZlbnQodCl7cmV0dXJuIHRoaXMuX3RhcmdldFJheSE9PW51bGwmJnRoaXMuX3RhcmdldFJheS5kaXNwYXRjaEV2ZW50KHQpLHRoaXMuX2dyaXAhPT1udWxsJiZ0aGlzLl9ncmlwLmRpc3BhdGNoRXZlbnQodCksdGhpcy5faGFuZCE9PW51bGwmJnRoaXMuX2hhbmQuZGlzcGF0Y2hFdmVudCh0KSx0aGlzfWRpc2Nvbm5lY3QodCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOnR9KSx0aGlzLl90YXJnZXRSYXkhPT1udWxsJiYodGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEpLHRoaXMuX2dyaXAhPT1udWxsJiYodGhpcy5fZ3JpcC52aXNpYmxlPSExKSx0aGlzLl9oYW5kIT09bnVsbCYmKHRoaXMuX2hhbmQudmlzaWJsZT0hMSksdGhpc311cGRhdGUodCxyLG4pe2xldCBpPW51bGwsbz1udWxsLGE9bnVsbCxzPXRoaXMuX3RhcmdldFJheSxsPXRoaXMuX2dyaXAsYz10aGlzLl9oYW5kO2lmKHQmJnIuc2Vzc2lvbi52aXNpYmlsaXR5U3RhdGUhPT0idmlzaWJsZS1ibHVycmVkIilpZihzIT09bnVsbCYmKGk9ci5nZXRQb3NlKHQudGFyZ2V0UmF5U3BhY2UsbiksaSE9PW51bGwmJihzLm1hdHJpeC5mcm9tQXJyYXkoaS50cmFuc2Zvcm0ubWF0cml4KSxzLm1hdHJpeC5kZWNvbXBvc2Uocy5wb3NpdGlvbixzLnJvdGF0aW9uLHMuc2NhbGUpLGkubGluZWFyVmVsb2NpdHk/KHMuaGFzTGluZWFyVmVsb2NpdHk9ITAscy5saW5lYXJWZWxvY2l0eS5jb3B5KGkubGluZWFyVmVsb2NpdHkpKTpzLmhhc0xpbmVhclZlbG9jaXR5PSExLGkuYW5ndWxhclZlbG9jaXR5PyhzLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMCxzLmFuZ3VsYXJWZWxvY2l0eS5jb3B5KGkuYW5ndWxhclZlbG9jaXR5KSk6cy5oYXNBbmd1bGFyVmVsb2NpdHk9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KGJncikpKSxjJiZ0LmhhbmQpe2E9ITA7Zm9yKGxldCBnIG9mIHQuaGFuZC52YWx1ZXMoKSl7bGV0IF89ci5nZXRKb2ludFBvc2UoZyxuKTtpZihjLmpvaW50c1tnLmpvaW50TmFtZV09PT12b2lkIDApe2xldCB4PW5ldyBYZDt4Lm1hdHJpeEF1dG9VcGRhdGU9ITEseC52aXNpYmxlPSExLGMuam9pbnRzW2cuam9pbnROYW1lXT14LGMuYWRkKHgpfWxldCB5PWMuam9pbnRzW2cuam9pbnROYW1lXTtfIT09bnVsbCYmKHkubWF0cml4LmZyb21BcnJheShfLnRyYW5zZm9ybS5tYXRyaXgpLHkubWF0cml4LmRlY29tcG9zZSh5LnBvc2l0aW9uLHkucm90YXRpb24seS5zY2FsZSkseS5qb2ludFJhZGl1cz1fLnJhZGl1cykseS52aXNpYmxlPV8hPT1udWxsfWxldCB1PWMuam9pbnRzWyJpbmRleC1maW5nZXItdGlwIl0saD1jLmpvaW50c1sidGh1bWItdGlwIl0sZj11LnBvc2l0aW9uLmRpc3RhbmNlVG8oaC5wb3NpdGlvbikscD0uMDIsZD0uMDA1O2MuaW5wdXRTdGF0ZS5waW5jaGluZyYmZj5wK2Q/KGMuaW5wdXRTdGF0ZS5waW5jaGluZz0hMSx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoZW5kIixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKTohYy5pbnB1dFN0YXRlLnBpbmNoaW5nJiZmPD1wLWQmJihjLmlucHV0U3RhdGUucGluY2hpbmc9ITAsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaHN0YXJ0IixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKX1lbHNlIGwhPT1udWxsJiZ0LmdyaXBTcGFjZSYmKG89ci5nZXRQb3NlKHQuZ3JpcFNwYWNlLG4pLG8hPT1udWxsJiYobC5tYXRyaXguZnJvbUFycmF5KG8udHJhbnNmb3JtLm1hdHJpeCksbC5tYXRyaXguZGVjb21wb3NlKGwucG9zaXRpb24sbC5yb3RhdGlvbixsLnNjYWxlKSxvLmxpbmVhclZlbG9jaXR5PyhsLmhhc0xpbmVhclZlbG9jaXR5PSEwLGwubGluZWFyVmVsb2NpdHkuY29weShvLmxpbmVhclZlbG9jaXR5KSk6bC5oYXNMaW5lYXJWZWxvY2l0eT0hMSxvLmFuZ3VsYXJWZWxvY2l0eT8obC5oYXNBbmd1bGFyVmVsb2NpdHk9ITAsbC5hbmd1bGFyVmVsb2NpdHkuY29weShvLmFuZ3VsYXJWZWxvY2l0eSkpOmwuaGFzQW5ndWxhclZlbG9jaXR5PSExKSk7cmV0dXJuIHMhPT1udWxsJiYocy52aXNpYmxlPWkhPT1udWxsKSxsIT09bnVsbCYmKGwudmlzaWJsZT1vIT09bnVsbCksYyE9PW51bGwmJihjLnZpc2libGU9YSE9PW51bGwpLHRoaXN9fSxyTT1jbGFzcyBleHRlbmRzIHhpe2NvbnN0cnVjdG9yKHQscixuLGksbyxhLHMsbCxjLHUpe2lmKHU9dSE9PXZvaWQgMD91OnowLHUhPT16MCYmdSE9PWsxKXRocm93IG5ldyBFcnJvcigiRGVwdGhUZXh0dXJlIGZvcm1hdCBtdXN0IGJlIGVpdGhlciBUSFJFRS5EZXB0aEZvcm1hdCBvciBUSFJFRS5EZXB0aFN0ZW5jaWxGb3JtYXQiKTtuPT09dm9pZCAwJiZ1PT09ejAmJihuPXEzKSxuPT09dm9pZCAwJiZ1PT09azEmJihuPUExKSxzdXBlcihudWxsLGksbyxhLHMsbCx1LG4sYyksdGhpcy5pbWFnZT17d2lkdGg6dCxoZWlnaHQ6cn0sdGhpcy5tYWdGaWx0ZXI9cyE9PXZvaWQgMD9zOkxpLHRoaXMubWluRmlsdGVyPWwhPT12b2lkIDA/bDpMaSx0aGlzLmZsaXBZPSExLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfX07ck0ucHJvdG90eXBlLmlzRGVwdGhUZXh0dXJlPSEwO3ZhciB0aHQ9Y2xhc3MgZXh0ZW5kcyBWc3tjb25zdHJ1Y3Rvcih0LHIpe3N1cGVyKCk7bGV0IG49dGhpcyxpPW51bGwsbz0xLGE9bnVsbCxzPSJsb2NhbC1mbG9vciIsbD10LmV4dGVuc2lvbnMuaGFzKCJXRUJHTF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSxjPW51bGwsdT1udWxsLGg9bnVsbCxmPW51bGwscD0hMSxkPW51bGwsZz1yLmdldENvbnRleHRBdHRyaWJ1dGVzKCksXz1udWxsLHk9bnVsbCx4PVtdLGI9bmV3IE1hcCxTPW5ldyBWaTtTLmxheWVycy5lbmFibGUoMSksUy52aWV3cG9ydD1uZXcgZW47bGV0IEM9bmV3IFZpO0MubGF5ZXJzLmVuYWJsZSgyKSxDLnZpZXdwb3J0PW5ldyBlbjtsZXQgUD1bUyxDXSxrPW5ldyB0NjtrLmxheWVycy5lbmFibGUoMSksay5sYXllcnMuZW5hYmxlKDIpO2xldCBPPW51bGwsRD1udWxsO3RoaXMuY2FtZXJhQXV0b1VwZGF0ZT0hMCx0aGlzLmVuYWJsZWQ9ITEsdGhpcy5pc1ByZXNlbnRpbmc9ITEsdGhpcy5nZXRDb250cm9sbGVyPWZ1bmN0aW9uKG90KXtsZXQgc3Q9eFtvdF07cmV0dXJuIHN0PT09dm9pZCAwJiYoc3Q9bmV3IEhQLHhbb3RdPXN0KSxzdC5nZXRUYXJnZXRSYXlTcGFjZSgpfSx0aGlzLmdldENvbnRyb2xsZXJHcmlwPWZ1bmN0aW9uKG90KXtsZXQgc3Q9eFtvdF07cmV0dXJuIHN0PT09dm9pZCAwJiYoc3Q9bmV3IEhQLHhbb3RdPXN0KSxzdC5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKG90KXtsZXQgc3Q9eFtvdF07cmV0dXJuIHN0PT09dm9pZCAwJiYoc3Q9bmV3IEhQLHhbb3RdPXN0KSxzdC5nZXRIYW5kU3BhY2UoKX07ZnVuY3Rpb24gQihvdCl7bGV0IHN0PWIuZ2V0KG90LmlucHV0U291cmNlKTtzdCYmc3QuZGlzcGF0Y2hFdmVudCh7dHlwZTpvdC50eXBlLGRhdGE6b3QuaW5wdXRTb3VyY2V9KX1mdW5jdGlvbiBJKCl7Yi5mb3JFYWNoKGZ1bmN0aW9uKG90LHN0KXtvdC5kaXNjb25uZWN0KHN0KX0pLGIuY2xlYXIoKSxPPW51bGwsRD1udWxsLHQuc2V0UmVuZGVyVGFyZ2V0KF8pLGY9bnVsbCxoPW51bGwsdT1udWxsLGk9bnVsbCx5PW51bGwscnQuc3RvcCgpLG4uaXNQcmVzZW50aW5nPSExLG4uZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbmVuZCJ9KX10aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24ob3Qpe289b3Qsbi5pc1ByZXNlbnRpbmc9PT0hMCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgZnJhbWVidWZmZXIgc2NhbGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5zZXRSZWZlcmVuY2VTcGFjZVR5cGU9ZnVuY3Rpb24ob3Qpe3M9b3Qsbi5pc1ByZXNlbnRpbmc9PT0hMCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgcmVmZXJlbmNlIHNwYWNlIHR5cGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5nZXRSZWZlcmVuY2VTcGFjZT1mdW5jdGlvbigpe3JldHVybiBhfSx0aGlzLmdldEJhc2VMYXllcj1mdW5jdGlvbigpe3JldHVybiBoIT09bnVsbD9oOmZ9LHRoaXMuZ2V0QmluZGluZz1mdW5jdGlvbigpe3JldHVybiB1fSx0aGlzLmdldEZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGR9LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBpfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24ob3Qpe3JldHVybiBmcCh0aGlzLG51bGwsZnVuY3Rpb24qKCl7aWYoaT1vdCxpIT09bnVsbCl7aWYoXz10LmdldFJlbmRlclRhcmdldCgpLGkuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0IixCKSxpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IixCKSxpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVuZCIsQiksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplIixCKSxpLmFkZEV2ZW50TGlzdGVuZXIoInNxdWVlemVzdGFydCIsQiksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplZW5kIixCKSxpLmFkZEV2ZW50TGlzdGVuZXIoImVuZCIsSSksaS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dHNvdXJjZXNjaGFuZ2UiLEwpLGcueHJDb21wYXRpYmxlIT09ITAmJih5aWVsZCByLm1ha2VYUkNvbXBhdGlibGUoKSksaS5yZW5kZXJTdGF0ZS5sYXllcnM9PT12b2lkIDB8fHQuY2FwYWJpbGl0aWVzLmlzV2ViR0wyPT09ITEpe2xldCBzdD17YW50aWFsaWFzOmkucmVuZGVyU3RhdGUubGF5ZXJzPT09dm9pZCAwP2cuYW50aWFsaWFzOiEwLGFscGhhOmcuYWxwaGEsZGVwdGg6Zy5kZXB0aCxzdGVuY2lsOmcuc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOm99O2Y9bmV3IFhSV2ViR0xMYXllcihpLHIsc3QpLGkudXBkYXRlUmVuZGVyU3RhdGUoe2Jhc2VMYXllcjpmfSkseT1uZXcgY3MoZi5mcmFtZWJ1ZmZlcldpZHRoLGYuZnJhbWVidWZmZXJIZWlnaHQse2Zvcm1hdDpKbyx0eXBlOlpkLGVuY29kaW5nOnQub3V0cHV0RW5jb2Rpbmd9KX1lbHNle3A9Zy5hbnRpYWxpYXM7bGV0IHN0PW51bGwsU3Q9bnVsbCxidD1udWxsO2cuZGVwdGgmJihidD1nLnN0ZW5jaWw/MzUwNTY6MzMxOTAsc3Q9Zy5zdGVuY2lsP2sxOnowLFN0PWcuc3RlbmNpbD9BMTpxMyk7bGV0IE10PXtjb2xvckZvcm1hdDp0Lm91dHB1dEVuY29kaW5nPT09WW4/MzU5MDc6MzI4NTYsZGVwdGhGb3JtYXQ6YnQsc2NhbGVGYWN0b3I6b307dT1uZXcgWFJXZWJHTEJpbmRpbmcoaSxyKSxoPXUuY3JlYXRlUHJvamVjdGlvbkxheWVyKE10KSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W2hdfSkscD95PW5ldyBZMyhoLnRleHR1cmVXaWR0aCxoLnRleHR1cmVIZWlnaHQse2Zvcm1hdDpKbyx0eXBlOlpkLGRlcHRoVGV4dHVyZTpuZXcgck0oaC50ZXh0dXJlV2lkdGgsaC50ZXh0dXJlSGVpZ2h0LFN0LHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHN0KSxzdGVuY2lsQnVmZmVyOmcuc3RlbmNpbCxpZ25vcmVEZXB0aDpoLmlnbm9yZURlcHRoVmFsdWVzLHVzZVJlbmRlclRvVGV4dHVyZTpsLGVuY29kaW5nOnQub3V0cHV0RW5jb2Rpbmd9KTp5PW5ldyBjcyhoLnRleHR1cmVXaWR0aCxoLnRleHR1cmVIZWlnaHQse2Zvcm1hdDpKbyx0eXBlOlpkLGRlcHRoVGV4dHVyZTpuZXcgck0oaC50ZXh0dXJlV2lkdGgsaC50ZXh0dXJlSGVpZ2h0LFN0LHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHN0KSxzdGVuY2lsQnVmZmVyOmcuc3RlbmNpbCxpZ25vcmVEZXB0aDpoLmlnbm9yZURlcHRoVmFsdWVzLGVuY29kaW5nOnQub3V0cHV0RW5jb2Rpbmd9KX15LmlzWFJSZW5kZXJUYXJnZXQ9ITAsdGhpcy5zZXRGb3ZlYXRpb24oMSksYT15aWVsZCBpLnJlcXVlc3RSZWZlcmVuY2VTcGFjZShzKSxydC5zZXRDb250ZXh0KGkpLHJ0LnN0YXJ0KCksbi5pc1ByZXNlbnRpbmc9ITAsbi5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9fSl9O2Z1bmN0aW9uIEwob3Qpe2xldCBzdD1pLmlucHV0U291cmNlcztmb3IobGV0IFN0PTA7U3Q8eC5sZW5ndGg7U3QrKyliLnNldChzdFtTdF0seFtTdF0pO2ZvcihsZXQgU3Q9MDtTdDxvdC5yZW1vdmVkLmxlbmd0aDtTdCsrKXtsZXQgYnQ9b3QucmVtb3ZlZFtTdF0sTXQ9Yi5nZXQoYnQpO010JiYoTXQuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOmJ0fSksYi5kZWxldGUoYnQpKX1mb3IobGV0IFN0PTA7U3Q8b3QuYWRkZWQubGVuZ3RoO1N0Kyspe2xldCBidD1vdC5hZGRlZFtTdF0sTXQ9Yi5nZXQoYnQpO010JiZNdC5kaXNwYXRjaEV2ZW50KHt0eXBlOiJjb25uZWN0ZWQiLGRhdGE6YnR9KX19bGV0IFI9bmV3IGosRj1uZXcgajtmdW5jdGlvbiB6KG90LHN0LFN0KXtSLnNldEZyb21NYXRyaXhQb3NpdGlvbihzdC5tYXRyaXhXb3JsZCksRi5zZXRGcm9tTWF0cml4UG9zaXRpb24oU3QubWF0cml4V29ybGQpO2xldCBidD1SLmRpc3RhbmNlVG8oRiksTXQ9c3QucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxsdD1TdC5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLEt0PU10WzE0XS8oTXRbMTBdLTEpLF90PU10WzE0XS8oTXRbMTBdKzEpLGN0PShNdFs5XSsxKS9NdFs1XSxYPShNdFs5XS0xKS9NdFs1XSxldD0oTXRbOF0tMSkvTXRbMF0sZHQ9KGx0WzhdKzEpL2x0WzBdLHE9S3QqZXQscHQ9S3QqZHQsaHQ9YnQvKC1ldCtkdCksd3Q9aHQqLWV0O3N0Lm1hdHJpeFdvcmxkLmRlY29tcG9zZShvdC5wb3NpdGlvbixvdC5xdWF0ZXJuaW9uLG90LnNjYWxlKSxvdC50cmFuc2xhdGVYKHd0KSxvdC50cmFuc2xhdGVaKGh0KSxvdC5tYXRyaXhXb3JsZC5jb21wb3NlKG90LnBvc2l0aW9uLG90LnF1YXRlcm5pb24sb3Quc2NhbGUpLG90Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KG90Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtsZXQga3Q9S3QraHQsaWU9X3QraHQsZWU9cS13dCxMZT1wdCsoYnQtd3QpLGFyPWN0Kl90L2llKmt0LGZyPVgqX3QvaWUqa3Q7b3QucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUoZWUsTGUsYXIsZnIsa3QsaWUpfWZ1bmN0aW9uIFUob3Qsc3Qpe3N0PT09bnVsbD9vdC5tYXRyaXhXb3JsZC5jb3B5KG90Lm1hdHJpeCk6b3QubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyhzdC5tYXRyaXhXb3JsZCxvdC5tYXRyaXgpLG90Lm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KG90Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKX10aGlzLnVwZGF0ZUNhbWVyYT1mdW5jdGlvbihvdCl7aWYoaT09PW51bGwpcmV0dXJuO2submVhcj1DLm5lYXI9Uy5uZWFyPW90Lm5lYXIsay5mYXI9Qy5mYXI9Uy5mYXI9b3QuZmFyLChPIT09ay5uZWFyfHxEIT09ay5mYXIpJiYoaS51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOmsubmVhcixkZXB0aEZhcjprLmZhcn0pLE89ay5uZWFyLEQ9ay5mYXIpO2xldCBzdD1vdC5wYXJlbnQsU3Q9ay5jYW1lcmFzO1UoayxzdCk7Zm9yKGxldCBNdD0wO010PFN0Lmxlbmd0aDtNdCsrKVUoU3RbTXRdLHN0KTtrLm1hdHJpeFdvcmxkLmRlY29tcG9zZShrLnBvc2l0aW9uLGsucXVhdGVybmlvbixrLnNjYWxlKSxvdC5wb3NpdGlvbi5jb3B5KGsucG9zaXRpb24pLG90LnF1YXRlcm5pb24uY29weShrLnF1YXRlcm5pb24pLG90LnNjYWxlLmNvcHkoay5zY2FsZSksb3QubWF0cml4LmNvcHkoay5tYXRyaXgpLG90Lm1hdHJpeFdvcmxkLmNvcHkoay5tYXRyaXhXb3JsZCk7bGV0IGJ0PW90LmNoaWxkcmVuO2ZvcihsZXQgTXQ9MCxsdD1idC5sZW5ndGg7TXQ8bHQ7TXQrKylidFtNdF0udXBkYXRlTWF0cml4V29ybGQoITApO1N0Lmxlbmd0aD09PTI/eihrLFMsQyk6ay5wcm9qZWN0aW9uTWF0cml4LmNvcHkoUy5wcm9qZWN0aW9uTWF0cml4KX0sdGhpcy5nZXRDYW1lcmE9ZnVuY3Rpb24oKXtyZXR1cm4ga30sdGhpcy5nZXRGb3ZlYXRpb249ZnVuY3Rpb24oKXtpZihoIT09bnVsbClyZXR1cm4gaC5maXhlZEZvdmVhdGlvbjtpZihmIT09bnVsbClyZXR1cm4gZi5maXhlZEZvdmVhdGlvbn0sdGhpcy5zZXRGb3ZlYXRpb249ZnVuY3Rpb24ob3Qpe2ghPT1udWxsJiYoaC5maXhlZEZvdmVhdGlvbj1vdCksZiE9PW51bGwmJmYuZml4ZWRGb3ZlYXRpb24hPT12b2lkIDAmJihmLmZpeGVkRm92ZWF0aW9uPW90KX07bGV0IFc9bnVsbDtmdW5jdGlvbiBaKG90LHN0KXtpZihjPXN0LmdldFZpZXdlclBvc2UoYSksZD1zdCxjIT09bnVsbCl7bGV0IGJ0PWMudmlld3M7ZiE9PW51bGwmJih0LnNldFJlbmRlclRhcmdldEZyYW1lYnVmZmVyKHksZi5mcmFtZWJ1ZmZlciksdC5zZXRSZW5kZXJUYXJnZXQoeSkpO2xldCBNdD0hMTtidC5sZW5ndGghPT1rLmNhbWVyYXMubGVuZ3RoJiYoay5jYW1lcmFzLmxlbmd0aD0wLE10PSEwKTtmb3IobGV0IGx0PTA7bHQ8YnQubGVuZ3RoO2x0Kyspe2xldCBLdD1idFtsdF0sX3Q9bnVsbDtpZihmIT09bnVsbClfdD1mLmdldFZpZXdwb3J0KEt0KTtlbHNle2xldCBYPXUuZ2V0Vmlld1N1YkltYWdlKGgsS3QpO190PVgudmlld3BvcnQsbHQ9PT0wJiYodC5zZXRSZW5kZXJUYXJnZXRUZXh0dXJlcyh5LFguY29sb3JUZXh0dXJlLGguaWdub3JlRGVwdGhWYWx1ZXM/dm9pZCAwOlguZGVwdGhTdGVuY2lsVGV4dHVyZSksdC5zZXRSZW5kZXJUYXJnZXQoeSkpfWxldCBjdD1QW2x0XTtjdC5tYXRyaXguZnJvbUFycmF5KEt0LnRyYW5zZm9ybS5tYXRyaXgpLGN0LnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KEt0LnByb2plY3Rpb25NYXRyaXgpLGN0LnZpZXdwb3J0LnNldChfdC54LF90LnksX3Qud2lkdGgsX3QuaGVpZ2h0KSxsdD09PTAmJmsubWF0cml4LmNvcHkoY3QubWF0cml4KSxNdD09PSEwJiZrLmNhbWVyYXMucHVzaChjdCl9fWxldCBTdD1pLmlucHV0U291cmNlcztmb3IobGV0IGJ0PTA7YnQ8eC5sZW5ndGg7YnQrKyl7bGV0IE10PXhbYnRdLGx0PVN0W2J0XTtNdC51cGRhdGUobHQsc3QsYSl9VyYmVyhvdCxzdCksZD1udWxsfWxldCBydD1uZXcgUmZlO3J0LnNldEFuaW1hdGlvbkxvb3AoWiksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKG90KXtXPW90fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fX07ZnVuY3Rpb24gd2dyKGUpe2Z1bmN0aW9uIHQoeSx4KXt5LmZvZ0NvbG9yLnZhbHVlLmNvcHkoeC5jb2xvcikseC5pc0ZvZz8oeS5mb2dOZWFyLnZhbHVlPXgubmVhcix5LmZvZ0Zhci52YWx1ZT14LmZhcik6eC5pc0ZvZ0V4cDImJih5LmZvZ0RlbnNpdHkudmFsdWU9eC5kZW5zaXR5KX1mdW5jdGlvbiByKHkseCxiLFMsQyl7eC5pc01lc2hCYXNpY01hdGVyaWFsP24oeSx4KTp4LmlzTWVzaExhbWJlcnRNYXRlcmlhbD8obih5LHgpLGwoeSx4KSk6eC5pc01lc2hUb29uTWF0ZXJpYWw/KG4oeSx4KSx1KHkseCkpOnguaXNNZXNoUGhvbmdNYXRlcmlhbD8obih5LHgpLGMoeSx4KSk6eC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsPyhuKHkseCkseC5pc01lc2hQaHlzaWNhbE1hdGVyaWFsP2YoeSx4LEMpOmgoeSx4KSk6eC5pc01lc2hNYXRjYXBNYXRlcmlhbD8obih5LHgpLHAoeSx4KSk6eC5pc01lc2hEZXB0aE1hdGVyaWFsPyhuKHkseCksZCh5LHgpKTp4LmlzTWVzaERpc3RhbmNlTWF0ZXJpYWw/KG4oeSx4KSxnKHkseCkpOnguaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KG4oeSx4KSxfKHkseCkpOnguaXNMaW5lQmFzaWNNYXRlcmlhbD8oaSh5LHgpLHguaXNMaW5lRGFzaGVkTWF0ZXJpYWwmJm8oeSx4KSk6eC5pc1BvaW50c01hdGVyaWFsP2EoeSx4LGIsUyk6eC5pc1Nwcml0ZU1hdGVyaWFsP3MoeSx4KTp4LmlzU2hhZG93TWF0ZXJpYWw/KHkuY29sb3IudmFsdWUuY29weSh4LmNvbG9yKSx5Lm9wYWNpdHkudmFsdWU9eC5vcGFjaXR5KTp4LmlzU2hhZGVyTWF0ZXJpYWwmJih4LnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSl9ZnVuY3Rpb24gbih5LHgpe3kub3BhY2l0eS52YWx1ZT14Lm9wYWNpdHkseC5jb2xvciYmeS5kaWZmdXNlLnZhbHVlLmNvcHkoeC5jb2xvcikseC5lbWlzc2l2ZSYmeS5lbWlzc2l2ZS52YWx1ZS5jb3B5KHguZW1pc3NpdmUpLm11bHRpcGx5U2NhbGFyKHguZW1pc3NpdmVJbnRlbnNpdHkpLHgubWFwJiYoeS5tYXAudmFsdWU9eC5tYXApLHguYWxwaGFNYXAmJih5LmFscGhhTWFwLnZhbHVlPXguYWxwaGFNYXApLHguc3BlY3VsYXJNYXAmJih5LnNwZWN1bGFyTWFwLnZhbHVlPXguc3BlY3VsYXJNYXApLHguYWxwaGFUZXN0PjAmJih5LmFscGhhVGVzdC52YWx1ZT14LmFscGhhVGVzdCk7bGV0IGI9ZS5nZXQoeCkuZW52TWFwO2ImJih5LmVudk1hcC52YWx1ZT1iLHkuZmxpcEVudk1hcC52YWx1ZT1iLmlzQ3ViZVRleHR1cmUmJmIuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPT09ITE/LTE6MSx5LnJlZmxlY3Rpdml0eS52YWx1ZT14LnJlZmxlY3Rpdml0eSx5Lmlvci52YWx1ZT14Lmlvcix5LnJlZnJhY3Rpb25SYXRpby52YWx1ZT14LnJlZnJhY3Rpb25SYXRpbykseC5saWdodE1hcCYmKHkubGlnaHRNYXAudmFsdWU9eC5saWdodE1hcCx5LmxpZ2h0TWFwSW50ZW5zaXR5LnZhbHVlPXgubGlnaHRNYXBJbnRlbnNpdHkpLHguYW9NYXAmJih5LmFvTWFwLnZhbHVlPXguYW9NYXAseS5hb01hcEludGVuc2l0eS52YWx1ZT14LmFvTWFwSW50ZW5zaXR5KTtsZXQgUzt4Lm1hcD9TPXgubWFwOnguc3BlY3VsYXJNYXA/Uz14LnNwZWN1bGFyTWFwOnguZGlzcGxhY2VtZW50TWFwP1M9eC5kaXNwbGFjZW1lbnRNYXA6eC5ub3JtYWxNYXA/Uz14Lm5vcm1hbE1hcDp4LmJ1bXBNYXA/Uz14LmJ1bXBNYXA6eC5yb3VnaG5lc3NNYXA/Uz14LnJvdWdobmVzc01hcDp4Lm1ldGFsbmVzc01hcD9TPXgubWV0YWxuZXNzTWFwOnguYWxwaGFNYXA/Uz14LmFscGhhTWFwOnguZW1pc3NpdmVNYXA/Uz14LmVtaXNzaXZlTWFwOnguY2xlYXJjb2F0TWFwP1M9eC5jbGVhcmNvYXRNYXA6eC5jbGVhcmNvYXROb3JtYWxNYXA/Uz14LmNsZWFyY29hdE5vcm1hbE1hcDp4LmNsZWFyY29hdFJvdWdobmVzc01hcD9TPXguY2xlYXJjb2F0Um91Z2huZXNzTWFwOnguc3BlY3VsYXJJbnRlbnNpdHlNYXA/Uz14LnNwZWN1bGFySW50ZW5zaXR5TWFwOnguc3BlY3VsYXJDb2xvck1hcD9TPXguc3BlY3VsYXJDb2xvck1hcDp4LnRyYW5zbWlzc2lvbk1hcD9TPXgudHJhbnNtaXNzaW9uTWFwOngudGhpY2tuZXNzTWFwP1M9eC50aGlja25lc3NNYXA6eC5zaGVlbkNvbG9yTWFwP1M9eC5zaGVlbkNvbG9yTWFwOnguc2hlZW5Sb3VnaG5lc3NNYXAmJihTPXguc2hlZW5Sb3VnaG5lc3NNYXApLFMhPT12b2lkIDAmJihTLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihTPVMudGV4dHVyZSksUy5tYXRyaXhBdXRvVXBkYXRlPT09ITAmJlMudXBkYXRlTWF0cml4KCkseS51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KFMubWF0cml4KSk7bGV0IEM7eC5hb01hcD9DPXguYW9NYXA6eC5saWdodE1hcCYmKEM9eC5saWdodE1hcCksQyE9PXZvaWQgMCYmKEMuaXNXZWJHTFJlbmRlclRhcmdldCYmKEM9Qy50ZXh0dXJlKSxDLm1hdHJpeEF1dG9VcGRhdGU9PT0hMCYmQy51cGRhdGVNYXRyaXgoKSx5LnV2MlRyYW5zZm9ybS52YWx1ZS5jb3B5KEMubWF0cml4KSl9ZnVuY3Rpb24gaSh5LHgpe3kuZGlmZnVzZS52YWx1ZS5jb3B5KHguY29sb3IpLHkub3BhY2l0eS52YWx1ZT14Lm9wYWNpdHl9ZnVuY3Rpb24gbyh5LHgpe3kuZGFzaFNpemUudmFsdWU9eC5kYXNoU2l6ZSx5LnRvdGFsU2l6ZS52YWx1ZT14LmRhc2hTaXplK3guZ2FwU2l6ZSx5LnNjYWxlLnZhbHVlPXguc2NhbGV9ZnVuY3Rpb24gYSh5LHgsYixTKXt5LmRpZmZ1c2UudmFsdWUuY29weSh4LmNvbG9yKSx5Lm9wYWNpdHkudmFsdWU9eC5vcGFjaXR5LHkuc2l6ZS52YWx1ZT14LnNpemUqYix5LnNjYWxlLnZhbHVlPVMqLjUseC5tYXAmJih5Lm1hcC52YWx1ZT14Lm1hcCkseC5hbHBoYU1hcCYmKHkuYWxwaGFNYXAudmFsdWU9eC5hbHBoYU1hcCkseC5hbHBoYVRlc3Q+MCYmKHkuYWxwaGFUZXN0LnZhbHVlPXguYWxwaGFUZXN0KTtsZXQgQzt4Lm1hcD9DPXgubWFwOnguYWxwaGFNYXAmJihDPXguYWxwaGFNYXApLEMhPT12b2lkIDAmJihDLm1hdHJpeEF1dG9VcGRhdGU9PT0hMCYmQy51cGRhdGVNYXRyaXgoKSx5LnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoQy5tYXRyaXgpKX1mdW5jdGlvbiBzKHkseCl7eS5kaWZmdXNlLnZhbHVlLmNvcHkoeC5jb2xvcikseS5vcGFjaXR5LnZhbHVlPXgub3BhY2l0eSx5LnJvdGF0aW9uLnZhbHVlPXgucm90YXRpb24seC5tYXAmJih5Lm1hcC52YWx1ZT14Lm1hcCkseC5hbHBoYU1hcCYmKHkuYWxwaGFNYXAudmFsdWU9eC5hbHBoYU1hcCkseC5hbHBoYVRlc3Q+MCYmKHkuYWxwaGFUZXN0LnZhbHVlPXguYWxwaGFUZXN0KTtsZXQgYjt4Lm1hcD9iPXgubWFwOnguYWxwaGFNYXAmJihiPXguYWxwaGFNYXApLGIhPT12b2lkIDAmJihiLm1hdHJpeEF1dG9VcGRhdGU9PT0hMCYmYi51cGRhdGVNYXRyaXgoKSx5LnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoYi5tYXRyaXgpKX1mdW5jdGlvbiBsKHkseCl7eC5lbWlzc2l2ZU1hcCYmKHkuZW1pc3NpdmVNYXAudmFsdWU9eC5lbWlzc2l2ZU1hcCl9ZnVuY3Rpb24gYyh5LHgpe3kuc3BlY3VsYXIudmFsdWUuY29weSh4LnNwZWN1bGFyKSx5LnNoaW5pbmVzcy52YWx1ZT1NYXRoLm1heCh4LnNoaW5pbmVzcywxZS00KSx4LmVtaXNzaXZlTWFwJiYoeS5lbWlzc2l2ZU1hcC52YWx1ZT14LmVtaXNzaXZlTWFwKSx4LmJ1bXBNYXAmJih5LmJ1bXBNYXAudmFsdWU9eC5idW1wTWFwLHkuYnVtcFNjYWxlLnZhbHVlPXguYnVtcFNjYWxlLHguc2lkZT09PUlpJiYoeS5idW1wU2NhbGUudmFsdWUqPS0xKSkseC5ub3JtYWxNYXAmJih5Lm5vcm1hbE1hcC52YWx1ZT14Lm5vcm1hbE1hcCx5Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoeC5ub3JtYWxTY2FsZSkseC5zaWRlPT09SWkmJnkubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLHguZGlzcGxhY2VtZW50TWFwJiYoeS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9eC5kaXNwbGFjZW1lbnRNYXAseS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT14LmRpc3BsYWNlbWVudFNjYWxlLHkuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT14LmRpc3BsYWNlbWVudEJpYXMpfWZ1bmN0aW9uIHUoeSx4KXt4LmdyYWRpZW50TWFwJiYoeS5ncmFkaWVudE1hcC52YWx1ZT14LmdyYWRpZW50TWFwKSx4LmVtaXNzaXZlTWFwJiYoeS5lbWlzc2l2ZU1hcC52YWx1ZT14LmVtaXNzaXZlTWFwKSx4LmJ1bXBNYXAmJih5LmJ1bXBNYXAudmFsdWU9eC5idW1wTWFwLHkuYnVtcFNjYWxlLnZhbHVlPXguYnVtcFNjYWxlLHguc2lkZT09PUlpJiYoeS5idW1wU2NhbGUudmFsdWUqPS0xKSkseC5ub3JtYWxNYXAmJih5Lm5vcm1hbE1hcC52YWx1ZT14Lm5vcm1hbE1hcCx5Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoeC5ub3JtYWxTY2FsZSkseC5zaWRlPT09SWkmJnkubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLHguZGlzcGxhY2VtZW50TWFwJiYoeS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9eC5kaXNwbGFjZW1lbnRNYXAseS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT14LmRpc3BsYWNlbWVudFNjYWxlLHkuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT14LmRpc3BsYWNlbWVudEJpYXMpfWZ1bmN0aW9uIGgoeSx4KXt5LnJvdWdobmVzcy52YWx1ZT14LnJvdWdobmVzcyx5Lm1ldGFsbmVzcy52YWx1ZT14Lm1ldGFsbmVzcyx4LnJvdWdobmVzc01hcCYmKHkucm91Z2huZXNzTWFwLnZhbHVlPXgucm91Z2huZXNzTWFwKSx4Lm1ldGFsbmVzc01hcCYmKHkubWV0YWxuZXNzTWFwLnZhbHVlPXgubWV0YWxuZXNzTWFwKSx4LmVtaXNzaXZlTWFwJiYoeS5lbWlzc2l2ZU1hcC52YWx1ZT14LmVtaXNzaXZlTWFwKSx4LmJ1bXBNYXAmJih5LmJ1bXBNYXAudmFsdWU9eC5idW1wTWFwLHkuYnVtcFNjYWxlLnZhbHVlPXguYnVtcFNjYWxlLHguc2lkZT09PUlpJiYoeS5idW1wU2NhbGUudmFsdWUqPS0xKSkseC5ub3JtYWxNYXAmJih5Lm5vcm1hbE1hcC52YWx1ZT14Lm5vcm1hbE1hcCx5Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoeC5ub3JtYWxTY2FsZSkseC5zaWRlPT09SWkmJnkubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLHguZGlzcGxhY2VtZW50TWFwJiYoeS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9eC5kaXNwbGFjZW1lbnRNYXAseS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT14LmRpc3BsYWNlbWVudFNjYWxlLHkuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT14LmRpc3BsYWNlbWVudEJpYXMpLGUuZ2V0KHgpLmVudk1hcCYmKHkuZW52TWFwSW50ZW5zaXR5LnZhbHVlPXguZW52TWFwSW50ZW5zaXR5KX1mdW5jdGlvbiBmKHkseCxiKXtoKHkseCkseS5pb3IudmFsdWU9eC5pb3IseC5zaGVlbj4wJiYoeS5zaGVlbkNvbG9yLnZhbHVlLmNvcHkoeC5zaGVlbkNvbG9yKS5tdWx0aXBseVNjYWxhcih4LnNoZWVuKSx5LnNoZWVuUm91Z2huZXNzLnZhbHVlPXguc2hlZW5Sb3VnaG5lc3MseC5zaGVlbkNvbG9yTWFwJiYoeS5zaGVlbkNvbG9yTWFwLnZhbHVlPXguc2hlZW5Db2xvck1hcCkseC5zaGVlblJvdWdobmVzc01hcCYmKHkuc2hlZW5Sb3VnaG5lc3NNYXAudmFsdWU9eC5zaGVlblJvdWdobmVzc01hcCkpLHguY2xlYXJjb2F0PjAmJih5LmNsZWFyY29hdC52YWx1ZT14LmNsZWFyY29hdCx5LmNsZWFyY29hdFJvdWdobmVzcy52YWx1ZT14LmNsZWFyY29hdFJvdWdobmVzcyx4LmNsZWFyY29hdE1hcCYmKHkuY2xlYXJjb2F0TWFwLnZhbHVlPXguY2xlYXJjb2F0TWFwKSx4LmNsZWFyY29hdFJvdWdobmVzc01hcCYmKHkuY2xlYXJjb2F0Um91Z2huZXNzTWFwLnZhbHVlPXguY2xlYXJjb2F0Um91Z2huZXNzTWFwKSx4LmNsZWFyY29hdE5vcm1hbE1hcCYmKHkuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUuY29weSh4LmNsZWFyY29hdE5vcm1hbFNjYWxlKSx5LmNsZWFyY29hdE5vcm1hbE1hcC52YWx1ZT14LmNsZWFyY29hdE5vcm1hbE1hcCx4LnNpZGU9PT1JaSYmeS5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSkpLHgudHJhbnNtaXNzaW9uPjAmJih5LnRyYW5zbWlzc2lvbi52YWx1ZT14LnRyYW5zbWlzc2lvbix5LnRyYW5zbWlzc2lvblNhbXBsZXJNYXAudmFsdWU9Yi50ZXh0dXJlLHkudHJhbnNtaXNzaW9uU2FtcGxlclNpemUudmFsdWUuc2V0KGIud2lkdGgsYi5oZWlnaHQpLHgudHJhbnNtaXNzaW9uTWFwJiYoeS50cmFuc21pc3Npb25NYXAudmFsdWU9eC50cmFuc21pc3Npb25NYXApLHkudGhpY2tuZXNzLnZhbHVlPXgudGhpY2tuZXNzLHgudGhpY2tuZXNzTWFwJiYoeS50aGlja25lc3NNYXAudmFsdWU9eC50aGlja25lc3NNYXApLHkuYXR0ZW51YXRpb25EaXN0YW5jZS52YWx1ZT14LmF0dGVudWF0aW9uRGlzdGFuY2UseS5hdHRlbnVhdGlvbkNvbG9yLnZhbHVlLmNvcHkoeC5hdHRlbnVhdGlvbkNvbG9yKSkseS5zcGVjdWxhckludGVuc2l0eS52YWx1ZT14LnNwZWN1bGFySW50ZW5zaXR5LHkuc3BlY3VsYXJDb2xvci52YWx1ZS5jb3B5KHguc3BlY3VsYXJDb2xvcikseC5zcGVjdWxhckludGVuc2l0eU1hcCYmKHkuc3BlY3VsYXJJbnRlbnNpdHlNYXAudmFsdWU9eC5zcGVjdWxhckludGVuc2l0eU1hcCkseC5zcGVjdWxhckNvbG9yTWFwJiYoeS5zcGVjdWxhckNvbG9yTWFwLnZhbHVlPXguc3BlY3VsYXJDb2xvck1hcCl9ZnVuY3Rpb24gcCh5LHgpe3gubWF0Y2FwJiYoeS5tYXRjYXAudmFsdWU9eC5tYXRjYXApLHguYnVtcE1hcCYmKHkuYnVtcE1hcC52YWx1ZT14LmJ1bXBNYXAseS5idW1wU2NhbGUudmFsdWU9eC5idW1wU2NhbGUseC5zaWRlPT09SWkmJih5LmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSx4Lm5vcm1hbE1hcCYmKHkubm9ybWFsTWFwLnZhbHVlPXgubm9ybWFsTWFwLHkubm9ybWFsU2NhbGUudmFsdWUuY29weSh4Lm5vcm1hbFNjYWxlKSx4LnNpZGU9PT1JaSYmeS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSkseC5kaXNwbGFjZW1lbnRNYXAmJih5LmRpc3BsYWNlbWVudE1hcC52YWx1ZT14LmRpc3BsYWNlbWVudE1hcCx5LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPXguZGlzcGxhY2VtZW50U2NhbGUseS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPXguZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gZCh5LHgpe3guZGlzcGxhY2VtZW50TWFwJiYoeS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9eC5kaXNwbGFjZW1lbnRNYXAseS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT14LmRpc3BsYWNlbWVudFNjYWxlLHkuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT14LmRpc3BsYWNlbWVudEJpYXMpfWZ1bmN0aW9uIGcoeSx4KXt4LmRpc3BsYWNlbWVudE1hcCYmKHkuZGlzcGxhY2VtZW50TWFwLnZhbHVlPXguZGlzcGxhY2VtZW50TWFwLHkuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9eC5kaXNwbGFjZW1lbnRTY2FsZSx5LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9eC5kaXNwbGFjZW1lbnRCaWFzKSx5LnJlZmVyZW5jZVBvc2l0aW9uLnZhbHVlLmNvcHkoeC5yZWZlcmVuY2VQb3NpdGlvbikseS5uZWFyRGlzdGFuY2UudmFsdWU9eC5uZWFyRGlzdGFuY2UseS5mYXJEaXN0YW5jZS52YWx1ZT14LmZhckRpc3RhbmNlfWZ1bmN0aW9uIF8oeSx4KXt4LmJ1bXBNYXAmJih5LmJ1bXBNYXAudmFsdWU9eC5idW1wTWFwLHkuYnVtcFNjYWxlLnZhbHVlPXguYnVtcFNjYWxlLHguc2lkZT09PUlpJiYoeS5idW1wU2NhbGUudmFsdWUqPS0xKSkseC5ub3JtYWxNYXAmJih5Lm5vcm1hbE1hcC52YWx1ZT14Lm5vcm1hbE1hcCx5Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoeC5ub3JtYWxTY2FsZSkseC5zaWRlPT09SWkmJnkubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLHguZGlzcGxhY2VtZW50TWFwJiYoeS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9eC5kaXNwbGFjZW1lbnRNYXAseS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT14LmRpc3BsYWNlbWVudFNjYWxlLHkuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT14LmRpc3BsYWNlbWVudEJpYXMpfXJldHVybntyZWZyZXNoRm9nVW5pZm9ybXM6dCxyZWZyZXNoTWF0ZXJpYWxVbmlmb3JtczpyfX1mdW5jdGlvbiBTZ3IoKXtsZXQgZT1aUCgiY2FudmFzIik7cmV0dXJuIGUuc3R5bGUuZGlzcGxheT0iYmxvY2siLGV9ZnVuY3Rpb24gcm4oZT17fSl7bGV0IHQ9ZS5jYW52YXMhPT12b2lkIDA/ZS5jYW52YXM6U2dyKCkscj1lLmNvbnRleHQhPT12b2lkIDA/ZS5jb250ZXh0Om51bGwsbj1lLmFscGhhIT09dm9pZCAwP2UuYWxwaGE6ITEsaT1lLmRlcHRoIT09dm9pZCAwP2UuZGVwdGg6ITAsbz1lLnN0ZW5jaWwhPT12b2lkIDA/ZS5zdGVuY2lsOiEwLGE9ZS5hbnRpYWxpYXMhPT12b2lkIDA/ZS5hbnRpYWxpYXM6ITEscz1lLnByZW11bHRpcGxpZWRBbHBoYSE9PXZvaWQgMD9lLnByZW11bHRpcGxpZWRBbHBoYTohMCxsPWUucHJlc2VydmVEcmF3aW5nQnVmZmVyIT09dm9pZCAwP2UucHJlc2VydmVEcmF3aW5nQnVmZmVyOiExLGM9ZS5wb3dlclByZWZlcmVuY2UhPT12b2lkIDA/ZS5wb3dlclByZWZlcmVuY2U6ImRlZmF1bHQiLHU9ZS5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0IT09dm9pZCAwP2UuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDohMSxoPW51bGwsZj1udWxsLHA9W10sZD1bXTt0aGlzLmRvbUVsZW1lbnQ9dCx0aGlzLmRlYnVnPXtjaGVja1NoYWRlckVycm9yczohMH0sdGhpcy5hdXRvQ2xlYXI9ITAsdGhpcy5hdXRvQ2xlYXJDb2xvcj0hMCx0aGlzLmF1dG9DbGVhckRlcHRoPSEwLHRoaXMuYXV0b0NsZWFyU3RlbmNpbD0hMCx0aGlzLnNvcnRPYmplY3RzPSEwLHRoaXMuY2xpcHBpbmdQbGFuZXM9W10sdGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZD0hMSx0aGlzLm91dHB1dEVuY29kaW5nPVFkLHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHM9ITEsdGhpcy50b25lTWFwcGluZz1LZCx0aGlzLnRvbmVNYXBwaW5nRXhwb3N1cmU9MTtsZXQgZz10aGlzLF89ITEseT0wLHg9MCxiPW51bGwsUz0tMSxDPW51bGwsUD1uZXcgZW4saz1uZXcgZW4sTz1udWxsLEQ9dC53aWR0aCxCPXQuaGVpZ2h0LEk9MSxMPW51bGwsUj1udWxsLEY9bmV3IGVuKDAsMCxELEIpLHo9bmV3IGVuKDAsMCxELEIpLFU9ITEsVz1uZXcgTjEsWj0hMSxydD0hMSxvdD1udWxsLHN0PW5ldyBNZSxTdD1uZXcgaixidD17YmFja2dyb3VuZDpudWxsLGZvZzpudWxsLGVudmlyb25tZW50Om51bGwsb3ZlcnJpZGVNYXRlcmlhbDpudWxsLGlzU2NlbmU6ITB9O2Z1bmN0aW9uIE10KCl7cmV0dXJuIGI9PT1udWxsP0k6MX1sZXQgbHQ9cjtmdW5jdGlvbiBLdChLLGd0KXtmb3IobGV0IEV0PTA7RXQ8Sy5sZW5ndGg7RXQrKyl7bGV0IHh0PUtbRXRdLEZ0PXQuZ2V0Q29udGV4dCh4dCxndCk7aWYoRnQhPT1udWxsKXJldHVybiBGdH1yZXR1cm4gbnVsbH10cnl7bGV0IEs9e2FscGhhOiEwLGRlcHRoOmksc3RlbmNpbDpvLGFudGlhbGlhczphLHByZW11bHRpcGxpZWRBbHBoYTpzLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjpsLHBvd2VyUHJlZmVyZW5jZTpjLGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6dX07aWYoInNldEF0dHJpYnV0ZSJpbiB0JiZ0LnNldEF0dHJpYnV0ZSgiZGF0YS1lbmdpbmUiLGB0aHJlZS5qcyByJHtHVX1gKSx0LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGZlLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixhdCwhMSksbHQ9PT1udWxsKXtsZXQgZ3Q9WyJ3ZWJnbDIiLCJ3ZWJnbCIsImV4cGVyaW1lbnRhbC13ZWJnbCJdO2lmKGcuaXNXZWJHTDFSZW5kZXJlcj09PSEwJiZndC5zaGlmdCgpLGx0PUt0KGd0LEspLGx0PT09bnVsbCl0aHJvdyBLdChndCk/bmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0IHdpdGggeW91ciBzZWxlY3RlZCBhdHRyaWJ1dGVzLiIpOm5ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dC4iKX1sdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ9PT12b2lkIDAmJihsdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm57cmFuZ2VNaW46MSxyYW5nZU1heDoxLHByZWNpc2lvbjoxfX0pfWNhdGNoKEspe3Rocm93IGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrSy5tZXNzYWdlKSxLfWxldCBfdCxjdCxYLGV0LGR0LHEscHQsaHQsd3Qsa3QsaWUsZWUsTGUsYXIsZnIsdHQsJCxJdCwkdCxoZSxUdCxiZSxudDtmdW5jdGlvbiBDdCgpe190PW5ldyBZZHIobHQpLGN0PW5ldyBIZHIobHQsX3QsZSksX3QuaW5pdChjdCksYmU9bmV3IEdmZShsdCxfdCxjdCksWD1uZXcgdmdyKGx0LF90LGN0KSxldD1uZXcgJGRyKGx0KSxkdD1uZXcgbGdyLHE9bmV3IHhncihsdCxfdCxYLGR0LGN0LGJlLGV0KSxwdD1uZXcgVWRyKGcpLGh0PW5ldyBXZHIoZyksd3Q9bmV3IHVmcihsdCxjdCksbnQ9bmV3IEZkcihsdCxfdCx3dCxjdCksa3Q9bmV3IGpkcihsdCx3dCxldCxudCksaWU9bmV3IFFkcihsdCxrdCx3dCxldCksJHQ9bmV3IEpkcihsdCxjdCxxKSx0dD1uZXcgVmRyKGR0KSxlZT1uZXcgc2dyKGcscHQsaHQsX3QsY3QsbnQsdHQpLExlPW5ldyB3Z3IoZHQpLGFyPW5ldyB1Z3IsZnI9bmV3IGdncihfdCxjdCksSXQ9bmV3IHpkcihnLHB0LFgsaWUsbixzKSwkPW5ldyBxZmUoZyxpZSxjdCksaGU9bmV3IEJkcihsdCxfdCxldCxjdCksVHQ9bmV3IFhkcihsdCxfdCxldCxjdCksZXQucHJvZ3JhbXM9ZWUucHJvZ3JhbXMsZy5jYXBhYmlsaXRpZXM9Y3QsZy5leHRlbnNpb25zPV90LGcucHJvcGVydGllcz1kdCxnLnJlbmRlckxpc3RzPWFyLGcuc2hhZG93TWFwPSQsZy5zdGF0ZT1YLGcuaW5mbz1ldH1DdCgpO2xldCBXdD1uZXcgdGh0KGcsbHQpO3RoaXMueHI9V3QsdGhpcy5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIGx0fSx0aGlzLmdldENvbnRleHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGx0LmdldENvbnRleHRBdHRyaWJ1dGVzKCl9LHRoaXMuZm9yY2VDb250ZXh0TG9zcz1mdW5jdGlvbigpe2xldCBLPV90LmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7SyYmSy5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtsZXQgSz1fdC5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO0smJksucmVzdG9yZUNvbnRleHQoKX0sdGhpcy5nZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIEl9LHRoaXMuc2V0UGl4ZWxSYXRpbz1mdW5jdGlvbihLKXtLIT09dm9pZCAwJiYoST1LLHRoaXMuc2V0U2l6ZShELEIsITEpKX0sdGhpcy5nZXRTaXplPWZ1bmN0aW9uKEspe3JldHVybiBLLnNldChELEIpfSx0aGlzLnNldFNpemU9ZnVuY3Rpb24oSyxndCxFdCl7aWYoV3QuaXNQcmVzZW50aW5nKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpO3JldHVybn1EPUssQj1ndCx0LndpZHRoPU1hdGguZmxvb3IoSypJKSx0LmhlaWdodD1NYXRoLmZsb29yKGd0KkkpLEV0IT09ITEmJih0LnN0eWxlLndpZHRoPUsrInB4Iix0LnN0eWxlLmhlaWdodD1ndCsicHgiKSx0aGlzLnNldFZpZXdwb3J0KDAsMCxLLGd0KX0sdGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbihLKXtyZXR1cm4gSy5zZXQoRCpJLEIqSSkuZmxvb3IoKX0sdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbihLLGd0LEV0KXtEPUssQj1ndCxJPUV0LHQud2lkdGg9TWF0aC5mbG9vcihLKkV0KSx0LmhlaWdodD1NYXRoLmZsb29yKGd0KkV0KSx0aGlzLnNldFZpZXdwb3J0KDAsMCxLLGd0KX0sdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQ9ZnVuY3Rpb24oSyl7cmV0dXJuIEsuY29weShQKX0sdGhpcy5nZXRWaWV3cG9ydD1mdW5jdGlvbihLKXtyZXR1cm4gSy5jb3B5KEYpfSx0aGlzLnNldFZpZXdwb3J0PWZ1bmN0aW9uKEssZ3QsRXQseHQpe0suaXNWZWN0b3I0P0Yuc2V0KEsueCxLLnksSy56LEsudyk6Ri5zZXQoSyxndCxFdCx4dCksWC52aWV3cG9ydChQLmNvcHkoRikubXVsdGlwbHlTY2FsYXIoSSkuZmxvb3IoKSl9LHRoaXMuZ2V0U2Npc3Nvcj1mdW5jdGlvbihLKXtyZXR1cm4gSy5jb3B5KHopfSx0aGlzLnNldFNjaXNzb3I9ZnVuY3Rpb24oSyxndCxFdCx4dCl7Sy5pc1ZlY3RvcjQ/ei5zZXQoSy54LEsueSxLLnosSy53KTp6LnNldChLLGd0LEV0LHh0KSxYLnNjaXNzb3Ioay5jb3B5KHopLm11bHRpcGx5U2NhbGFyKEkpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIFV9LHRoaXMuc2V0U2Npc3NvclRlc3Q9ZnVuY3Rpb24oSyl7WC5zZXRTY2lzc29yVGVzdChVPUspfSx0aGlzLnNldE9wYXF1ZVNvcnQ9ZnVuY3Rpb24oSyl7TD1LfSx0aGlzLnNldFRyYW5zcGFyZW50U29ydD1mdW5jdGlvbihLKXtSPUt9LHRoaXMuZ2V0Q2xlYXJDb2xvcj1mdW5jdGlvbihLKXtyZXR1cm4gSy5jb3B5KEl0LmdldENsZWFyQ29sb3IoKSl9LHRoaXMuc2V0Q2xlYXJDb2xvcj1mdW5jdGlvbigpe0l0LnNldENsZWFyQ29sb3IuYXBwbHkoSXQsYXJndW1lbnRzKX0sdGhpcy5nZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7cmV0dXJuIEl0LmdldENsZWFyQWxwaGEoKX0sdGhpcy5zZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7SXQuc2V0Q2xlYXJBbHBoYS5hcHBseShJdCxhcmd1bWVudHMpfSx0aGlzLmNsZWFyPWZ1bmN0aW9uKEssZ3QsRXQpe2xldCB4dD0wOyhLPT09dm9pZCAwfHxLKSYmKHh0fD0xNjM4NCksKGd0PT09dm9pZCAwfHxndCkmJih4dHw9MjU2KSwoRXQ9PT12b2lkIDB8fEV0KSYmKHh0fD0xMDI0KSxsdC5jbGVhcih4dCl9LHRoaXMuY2xlYXJDb2xvcj1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITAsITEsITEpfSx0aGlzLmNsZWFyRGVwdGg9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCEwLCExKX0sdGhpcy5jbGVhclN0ZW5jaWw9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCExLCEwKX0sdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixmZSwhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsYXQsITEpLGFyLmRpc3Bvc2UoKSxmci5kaXNwb3NlKCksZHQuZGlzcG9zZSgpLHB0LmRpc3Bvc2UoKSxodC5kaXNwb3NlKCksaWUuZGlzcG9zZSgpLG50LmRpc3Bvc2UoKSxlZS5kaXNwb3NlKCksV3QuZGlzcG9zZSgpLFd0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsemUpLFd0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLHluKSxvdCYmKG90LmRpc3Bvc2UoKSxvdD1udWxsKSxHaS5zdG9wKCl9O2Z1bmN0aW9uIGZlKEspe0sucHJldmVudERlZmF1bHQoKSxjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LiIpLF89ITB9ZnVuY3Rpb24gYXQoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKSxfPSExO2xldCBLPWV0LmF1dG9SZXNldCxndD0kLmVuYWJsZWQsRXQ9JC5hdXRvVXBkYXRlLHh0PSQubmVlZHNVcGRhdGUsRnQ9JC50eXBlO0N0KCksZXQuYXV0b1Jlc2V0PUssJC5lbmFibGVkPWd0LCQuYXV0b1VwZGF0ZT1FdCwkLm5lZWRzVXBkYXRlPXh0LCQudHlwZT1GdH1mdW5jdGlvbiBzZShLKXtsZXQgZ3Q9Sy50YXJnZXQ7Z3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsc2UpLFF0KGd0KX1mdW5jdGlvbiBRdChLKXtDZShLKSxkdC5yZW1vdmUoSyl9ZnVuY3Rpb24gQ2UoSyl7bGV0IGd0PWR0LmdldChLKS5wcm9ncmFtcztndCE9PXZvaWQgMCYmKGd0LmZvckVhY2goZnVuY3Rpb24oRXQpe2VlLnJlbGVhc2VQcm9ncmFtKEV0KX0pLEsuaXNTaGFkZXJNYXRlcmlhbCYmZWUucmVsZWFzZVNoYWRlckNhY2hlKEspKX10aGlzLnJlbmRlckJ1ZmZlckRpcmVjdD1mdW5jdGlvbihLLGd0LEV0LHh0LEZ0LFZlKXtndD09PW51bGwmJihndD1idCk7bGV0IFVlPUZ0LmlzTWVzaCYmRnQubWF0cml4V29ybGQuZGV0ZXJtaW5hbnQoKTwwLHRyPWNuKEssZ3QsRXQseHQsRnQpO1guc2V0TWF0ZXJpYWwoeHQsVWUpO2xldCBLZT1FdC5pbmRleCxYcj1FdC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKEtlPT09bnVsbCl7aWYoWHI9PT12b2lkIDB8fFhyLmNvdW50PT09MClyZXR1cm59ZWxzZSBpZihLZS5jb3VudD09PTApcmV0dXJuO2xldCBfcj0xO3h0LndpcmVmcmFtZT09PSEwJiYoS2U9a3QuZ2V0V2lyZWZyYW1lQXR0cmlidXRlKEV0KSxfcj0yKSxudC5zZXR1cChGdCx4dCx0cixFdCxLZSk7bGV0IFByLFhuPWhlO0tlIT09bnVsbCYmKFByPXd0LmdldChLZSksWG49VHQsWG4uc2V0SW5kZXgoUHIpKTtsZXQgcnA9S2UhPT1udWxsP0tlLmNvdW50OlhyLmNvdW50LHVtPUV0LmRyYXdSYW5nZS5zdGFydCpfcixtcj1FdC5kcmF3UmFuZ2UuY291bnQqX3Isemw9VmUhPT1udWxsP1ZlLnN0YXJ0Kl9yOjAsJG49VmUhPT1udWxsP1ZlLmNvdW50Kl9yOjEvMCxGbD1NYXRoLm1heCh1bSx6bCksdXg9TWF0aC5taW4ocnAsdW0rbXIsemwrJG4pLTEsQmw9TWF0aC5tYXgoMCx1eC1GbCsxKTtpZihCbCE9PTApe2lmKEZ0LmlzTWVzaCl4dC53aXJlZnJhbWU9PT0hMD8oWC5zZXRMaW5lV2lkdGgoeHQud2lyZWZyYW1lTGluZXdpZHRoKk10KCkpLFhuLnNldE1vZGUoMSkpOlhuLnNldE1vZGUoNCk7ZWxzZSBpZihGdC5pc0xpbmUpe2xldCBIbD14dC5saW5ld2lkdGg7SGw9PT12b2lkIDAmJihIbD0xKSxYLnNldExpbmVXaWR0aChIbCpNdCgpKSxGdC5pc0xpbmVTZWdtZW50cz9Ybi5zZXRNb2RlKDEpOkZ0LmlzTGluZUxvb3A/WG4uc2V0TW9kZSgyKTpYbi5zZXRNb2RlKDMpfWVsc2UgRnQuaXNQb2ludHM/WG4uc2V0TW9kZSgwKTpGdC5pc1Nwcml0ZSYmWG4uc2V0TW9kZSg0KTtpZihGdC5pc0luc3RhbmNlZE1lc2gpWG4ucmVuZGVySW5zdGFuY2VzKEZsLEJsLEZ0LmNvdW50KTtlbHNlIGlmKEV0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpe2xldCBIbD1NYXRoLm1pbihFdC5pbnN0YW5jZUNvdW50LEV0Ll9tYXhJbnN0YW5jZUNvdW50KTtYbi5yZW5kZXJJbnN0YW5jZXMoRmwsQmwsSGwpfWVsc2UgWG4ucmVuZGVyKEZsLEJsKX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbihLLGd0KXtmPWZyLmdldChLKSxmLmluaXQoKSxkLnB1c2goZiksSy50cmF2ZXJzZVZpc2libGUoZnVuY3Rpb24oRXQpe0V0LmlzTGlnaHQmJkV0LmxheWVycy50ZXN0KGd0LmxheWVycykmJihmLnB1c2hMaWdodChFdCksRXQuY2FzdFNoYWRvdyYmZi5wdXNoU2hhZG93KEV0KSl9KSxmLnNldHVwTGlnaHRzKGcucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLEsudHJhdmVyc2UoZnVuY3Rpb24oRXQpe2xldCB4dD1FdC5tYXRlcmlhbDtpZih4dClpZihBcnJheS5pc0FycmF5KHh0KSlmb3IobGV0IEZ0PTA7RnQ8eHQubGVuZ3RoO0Z0Kyspe2xldCBWZT14dFtGdF07Y20oVmUsSyxFdCl9ZWxzZSBjbSh4dCxLLEV0KX0pLGQucG9wKCksZj1udWxsfTtsZXQgUHQ9bnVsbDtmdW5jdGlvbiBOdChLKXtQdCYmUHQoSyl9ZnVuY3Rpb24gemUoKXtHaS5zdG9wKCl9ZnVuY3Rpb24geW4oKXtHaS5zdGFydCgpfWxldCBHaT1uZXcgUmZlO0dpLnNldEFuaW1hdGlvbkxvb3AoTnQpLHR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZHaS5zZXRDb250ZXh0KHdpbmRvdyksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKEspe1B0PUssV3Quc2V0QW5pbWF0aW9uTG9vcChLKSxLPT09bnVsbD9HaS5zdG9wKCk6R2kuc3RhcnQoKX0sV3QuYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbnN0YXJ0Iix6ZSksV3QuYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbmVuZCIseW4pLHRoaXMucmVuZGVyPWZ1bmN0aW9uKEssZ3Qpe2lmKGd0IT09dm9pZCAwJiZndC5pc0NhbWVyYSE9PSEwKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcjogY2FtZXJhIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5DYW1lcmEuIik7cmV0dXJufWlmKF89PT0hMClyZXR1cm47Sy5hdXRvVXBkYXRlPT09ITAmJksudXBkYXRlTWF0cml4V29ybGQoKSxndC5wYXJlbnQ9PT1udWxsJiZndC51cGRhdGVNYXRyaXhXb3JsZCgpLFd0LmVuYWJsZWQ9PT0hMCYmV3QuaXNQcmVzZW50aW5nPT09ITAmJihXdC5jYW1lcmFBdXRvVXBkYXRlPT09ITAmJld0LnVwZGF0ZUNhbWVyYShndCksZ3Q9V3QuZ2V0Q2FtZXJhKCkpLEsuaXNTY2VuZT09PSEwJiZLLm9uQmVmb3JlUmVuZGVyKGcsSyxndCxiKSxmPWZyLmdldChLLGQubGVuZ3RoKSxmLmluaXQoKSxkLnB1c2goZiksc3QubXVsdGlwbHlNYXRyaWNlcyhndC5wcm9qZWN0aW9uTWF0cml4LGd0Lm1hdHJpeFdvcmxkSW52ZXJzZSksVy5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChzdCkscnQ9dGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZCxaPXR0LmluaXQodGhpcy5jbGlwcGluZ1BsYW5lcyxydCxndCksaD1hci5nZXQoSyxwLmxlbmd0aCksaC5pbml0KCkscC5wdXNoKGgpLEFyKEssZ3QsMCxnLnNvcnRPYmplY3RzKSxoLmZpbmlzaCgpLGcuc29ydE9iamVjdHM9PT0hMCYmaC5zb3J0KEwsUiksWj09PSEwJiZ0dC5iZWdpblNoYWRvd3MoKTtsZXQgRXQ9Zi5zdGF0ZS5zaGFkb3dzQXJyYXk7aWYoJC5yZW5kZXIoRXQsSyxndCksWj09PSEwJiZ0dC5lbmRTaGFkb3dzKCksdGhpcy5pbmZvLmF1dG9SZXNldD09PSEwJiZ0aGlzLmluZm8ucmVzZXQoKSxJdC5yZW5kZXIoaCxLKSxmLnNldHVwTGlnaHRzKGcucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLGd0LmlzQXJyYXlDYW1lcmEpe2xldCB4dD1ndC5jYW1lcmFzO2ZvcihsZXQgRnQ9MCxWZT14dC5sZW5ndGg7RnQ8VmU7RnQrKyl7bGV0IFVlPXh0W0Z0XTtBYShoLEssVWUsVWUudmlld3BvcnQpfX1lbHNlIEFhKGgsSyxndCk7YiE9PW51bGwmJihxLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KGIpLHEudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKGIpKSxLLmlzU2NlbmU9PT0hMCYmSy5vbkFmdGVyUmVuZGVyKGcsSyxndCksWC5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLFguYnVmZmVycy5kZXB0aC5zZXRNYXNrKCEwKSxYLmJ1ZmZlcnMuY29sb3Iuc2V0TWFzayghMCksWC5zZXRQb2x5Z29uT2Zmc2V0KCExKSxudC5yZXNldERlZmF1bHRTdGF0ZSgpLFM9LTEsQz1udWxsLGQucG9wKCksZC5sZW5ndGg+MD9mPWRbZC5sZW5ndGgtMV06Zj1udWxsLHAucG9wKCkscC5sZW5ndGg+MD9oPXBbcC5sZW5ndGgtMV06aD1udWxsfTtmdW5jdGlvbiBBcihLLGd0LEV0LHh0KXtpZihLLnZpc2libGU9PT0hMSlyZXR1cm47aWYoSy5sYXllcnMudGVzdChndC5sYXllcnMpKXtpZihLLmlzR3JvdXApRXQ9Sy5yZW5kZXJPcmRlcjtlbHNlIGlmKEsuaXNMT0QpSy5hdXRvVXBkYXRlPT09ITAmJksudXBkYXRlKGd0KTtlbHNlIGlmKEsuaXNMaWdodClmLnB1c2hMaWdodChLKSxLLmNhc3RTaGFkb3cmJmYucHVzaFNoYWRvdyhLKTtlbHNlIGlmKEsuaXNTcHJpdGUpe2lmKCFLLmZydXN0dW1DdWxsZWR8fFcuaW50ZXJzZWN0c1Nwcml0ZShLKSl7eHQmJlN0LnNldEZyb21NYXRyaXhQb3NpdGlvbihLLm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoc3QpO2xldCBVZT1pZS51cGRhdGUoSyksdHI9Sy5tYXRlcmlhbDt0ci52aXNpYmxlJiZoLnB1c2goSyxVZSx0cixFdCxTdC56LG51bGwpfX1lbHNlIGlmKChLLmlzTWVzaHx8Sy5pc0xpbmV8fEsuaXNQb2ludHMpJiYoSy5pc1NraW5uZWRNZXNoJiZLLnNrZWxldG9uLmZyYW1lIT09ZXQucmVuZGVyLmZyYW1lJiYoSy5za2VsZXRvbi51cGRhdGUoKSxLLnNrZWxldG9uLmZyYW1lPWV0LnJlbmRlci5mcmFtZSksIUsuZnJ1c3R1bUN1bGxlZHx8Vy5pbnRlcnNlY3RzT2JqZWN0KEspKSl7eHQmJlN0LnNldEZyb21NYXRyaXhQb3NpdGlvbihLLm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoc3QpO2xldCBVZT1pZS51cGRhdGUoSyksdHI9Sy5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KHRyKSl7bGV0IEtlPVVlLmdyb3Vwcztmb3IobGV0IFhyPTAsX3I9S2UubGVuZ3RoO1hyPF9yO1hyKyspe2xldCBQcj1LZVtYcl0sWG49dHJbUHIubWF0ZXJpYWxJbmRleF07WG4mJlhuLnZpc2libGUmJmgucHVzaChLLFVlLFhuLEV0LFN0LnosUHIpfX1lbHNlIHRyLnZpc2libGUmJmgucHVzaChLLFVlLHRyLEV0LFN0LnosbnVsbCl9fWxldCBWZT1LLmNoaWxkcmVuO2ZvcihsZXQgVWU9MCx0cj1WZS5sZW5ndGg7VWU8dHI7VWUrKylBcihWZVtVZV0sZ3QsRXQseHQpfWZ1bmN0aW9uIEFhKEssZ3QsRXQseHQpe2xldCBGdD1LLm9wYXF1ZSxWZT1LLnRyYW5zbWlzc2l2ZSxVZT1LLnRyYW5zcGFyZW50O2Yuc2V0dXBMaWdodHNWaWV3KEV0KSxWZS5sZW5ndGg+MCYmdW8oRnQsZ3QsRXQpLHh0JiZYLnZpZXdwb3J0KFAuY29weSh4dCkpLEZ0Lmxlbmd0aD4wJiZQYShGdCxndCxFdCksVmUubGVuZ3RoPjAmJlBhKFZlLGd0LEV0KSxVZS5sZW5ndGg+MCYmUGEoVWUsZ3QsRXQpfWZ1bmN0aW9uIHVvKEssZ3QsRXQpe2lmKG90PT09bnVsbCl7bGV0IFVlPWE9PT0hMCYmY3QuaXNXZWJHTDI9PT0hMD9ZMzpjcztvdD1uZXcgVWUoMTAyNCwxMDI0LHtnZW5lcmF0ZU1pcG1hcHM6ITAsdHlwZTpiZS5jb252ZXJ0KEMxKSE9PW51bGw/QzE6WmQsbWluRmlsdGVyOm94LG1hZ0ZpbHRlcjpMaSx3cmFwUzpabyx3cmFwVDpabyx1c2VSZW5kZXJUb1RleHR1cmU6X3QuaGFzKCJXRUJHTF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKX0pfWxldCB4dD1nLmdldFJlbmRlclRhcmdldCgpO2cuc2V0UmVuZGVyVGFyZ2V0KG90KSxnLmNsZWFyKCk7bGV0IEZ0PWcudG9uZU1hcHBpbmc7Zy50b25lTWFwcGluZz1LZCxQYShLLGd0LEV0KSxnLnRvbmVNYXBwaW5nPUZ0LHEudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQob3QpLHEudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKG90KSxnLnNldFJlbmRlclRhcmdldCh4dCl9ZnVuY3Rpb24gUGEoSyxndCxFdCl7bGV0IHh0PWd0LmlzU2NlbmU9PT0hMD9ndC5vdmVycmlkZU1hdGVyaWFsOm51bGw7Zm9yKGxldCBGdD0wLFZlPUsubGVuZ3RoO0Z0PFZlO0Z0Kyspe2xldCBVZT1LW0Z0XSx0cj1VZS5vYmplY3QsS2U9VWUuZ2VvbWV0cnksWHI9eHQ9PT1udWxsP1VlLm1hdGVyaWFsOnh0LF9yPVVlLmdyb3VwO3RyLmxheWVycy50ZXN0KEV0LmxheWVycykmJmx4KHRyLGd0LEV0LEtlLFhyLF9yKX19ZnVuY3Rpb24gbHgoSyxndCxFdCx4dCxGdCxWZSl7Sy5vbkJlZm9yZVJlbmRlcihnLGd0LEV0LHh0LEZ0LFZlKSxLLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKEV0Lm1hdHJpeFdvcmxkSW52ZXJzZSxLLm1hdHJpeFdvcmxkKSxLLm5vcm1hbE1hdHJpeC5nZXROb3JtYWxNYXRyaXgoSy5tb2RlbFZpZXdNYXRyaXgpLEZ0Lm9uQmVmb3JlUmVuZGVyKGcsZ3QsRXQseHQsSyxWZSksRnQudHJhbnNwYXJlbnQ9PT0hMCYmRnQuc2lkZT09PUwxPyhGdC5zaWRlPUlpLEZ0Lm5lZWRzVXBkYXRlPSEwLGcucmVuZGVyQnVmZmVyRGlyZWN0KEV0LGd0LHh0LEZ0LEssVmUpLEZ0LnNpZGU9STEsRnQubmVlZHNVcGRhdGU9ITAsZy5yZW5kZXJCdWZmZXJEaXJlY3QoRXQsZ3QseHQsRnQsSyxWZSksRnQuc2lkZT1MMSk6Zy5yZW5kZXJCdWZmZXJEaXJlY3QoRXQsZ3QseHQsRnQsSyxWZSksSy5vbkFmdGVyUmVuZGVyKGcsZ3QsRXQseHQsRnQsVmUpfWZ1bmN0aW9uIGNtKEssZ3QsRXQpe2d0LmlzU2NlbmUhPT0hMCYmKGd0PWJ0KTtsZXQgeHQ9ZHQuZ2V0KEspLEZ0PWYuc3RhdGUubGlnaHRzLFZlPWYuc3RhdGUuc2hhZG93c0FycmF5LFVlPUZ0LnN0YXRlLnZlcnNpb24sdHI9ZWUuZ2V0UGFyYW1ldGVycyhLLEZ0LnN0YXRlLFZlLGd0LEV0KSxLZT1lZS5nZXRQcm9ncmFtQ2FjaGVLZXkodHIpLFhyPXh0LnByb2dyYW1zO3h0LmVudmlyb25tZW50PUsuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9ndC5lbnZpcm9ubWVudDpudWxsLHh0LmZvZz1ndC5mb2cseHQuZW52TWFwPShLLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/aHQ6cHQpLmdldChLLmVudk1hcHx8eHQuZW52aXJvbm1lbnQpLFhyPT09dm9pZCAwJiYoSy5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixzZSksWHI9bmV3IE1hcCx4dC5wcm9ncmFtcz1Ycik7bGV0IF9yPVhyLmdldChLZSk7aWYoX3IhPT12b2lkIDApe2lmKHh0LmN1cnJlbnRQcm9ncmFtPT09X3ImJnh0LmxpZ2h0c1N0YXRlVmVyc2lvbj09PVVlKXJldHVybiBKMChLLHRyKSxfcn1lbHNlIHRyLnVuaWZvcm1zPWVlLmdldFVuaWZvcm1zKEspLEsub25CdWlsZChFdCx0cixnKSxLLm9uQmVmb3JlQ29tcGlsZSh0cixnKSxfcj1lZS5hY3F1aXJlUHJvZ3JhbSh0cixLZSksWHIuc2V0KEtlLF9yKSx4dC51bmlmb3Jtcz10ci51bmlmb3JtcztsZXQgUHI9eHQudW5pZm9ybXM7KCFLLmlzU2hhZGVyTWF0ZXJpYWwmJiFLLmlzUmF3U2hhZGVyTWF0ZXJpYWx8fEsuY2xpcHBpbmc9PT0hMCkmJihQci5jbGlwcGluZ1BsYW5lcz10dC51bmlmb3JtKSxKMChLLHRyKSx4dC5uZWVkc0xpZ2h0cz1lcChLKSx4dC5saWdodHNTdGF0ZVZlcnNpb249VWUseHQubmVlZHNMaWdodHMmJihQci5hbWJpZW50TGlnaHRDb2xvci52YWx1ZT1GdC5zdGF0ZS5hbWJpZW50LFByLmxpZ2h0UHJvYmUudmFsdWU9RnQuc3RhdGUucHJvYmUsUHIuZGlyZWN0aW9uYWxMaWdodHMudmFsdWU9RnQuc3RhdGUuZGlyZWN0aW9uYWwsUHIuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MudmFsdWU9RnQuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3csUHIuc3BvdExpZ2h0cy52YWx1ZT1GdC5zdGF0ZS5zcG90LFByLnNwb3RMaWdodFNoYWRvd3MudmFsdWU9RnQuc3RhdGUuc3BvdFNoYWRvdyxQci5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1GdC5zdGF0ZS5yZWN0QXJlYSxQci5sdGNfMS52YWx1ZT1GdC5zdGF0ZS5yZWN0QXJlYUxUQzEsUHIubHRjXzIudmFsdWU9RnQuc3RhdGUucmVjdEFyZWFMVEMyLFByLnBvaW50TGlnaHRzLnZhbHVlPUZ0LnN0YXRlLnBvaW50LFByLnBvaW50TGlnaHRTaGFkb3dzLnZhbHVlPUZ0LnN0YXRlLnBvaW50U2hhZG93LFByLmhlbWlzcGhlcmVMaWdodHMudmFsdWU9RnQuc3RhdGUuaGVtaSxQci5kaXJlY3Rpb25hbFNoYWRvd01hcC52YWx1ZT1GdC5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hcCxQci5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC52YWx1ZT1GdC5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeCxQci5zcG90U2hhZG93TWFwLnZhbHVlPUZ0LnN0YXRlLnNwb3RTaGFkb3dNYXAsUHIuc3BvdFNoYWRvd01hdHJpeC52YWx1ZT1GdC5zdGF0ZS5zcG90U2hhZG93TWF0cml4LFByLnBvaW50U2hhZG93TWFwLnZhbHVlPUZ0LnN0YXRlLnBvaW50U2hhZG93TWFwLFByLnBvaW50U2hhZG93TWF0cml4LnZhbHVlPUZ0LnN0YXRlLnBvaW50U2hhZG93TWF0cml4KTtsZXQgWG49X3IuZ2V0VW5pZm9ybXMoKSxycD1CMC5zZXFXaXRoVmFsdWUoWG4uc2VxLFByKTtyZXR1cm4geHQuY3VycmVudFByb2dyYW09X3IseHQudW5pZm9ybXNMaXN0PXJwLF9yfWZ1bmN0aW9uIEowKEssZ3Qpe2xldCBFdD1kdC5nZXQoSyk7RXQub3V0cHV0RW5jb2Rpbmc9Z3Qub3V0cHV0RW5jb2RpbmcsRXQuaW5zdGFuY2luZz1ndC5pbnN0YW5jaW5nLEV0LnNraW5uaW5nPWd0LnNraW5uaW5nLEV0Lm1vcnBoVGFyZ2V0cz1ndC5tb3JwaFRhcmdldHMsRXQubW9ycGhOb3JtYWxzPWd0Lm1vcnBoTm9ybWFscyxFdC5tb3JwaFRhcmdldHNDb3VudD1ndC5tb3JwaFRhcmdldHNDb3VudCxFdC5udW1DbGlwcGluZ1BsYW5lcz1ndC5udW1DbGlwcGluZ1BsYW5lcyxFdC5udW1JbnRlcnNlY3Rpb249Z3QubnVtQ2xpcEludGVyc2VjdGlvbixFdC52ZXJ0ZXhBbHBoYXM9Z3QudmVydGV4QWxwaGFzLEV0LnZlcnRleFRhbmdlbnRzPWd0LnZlcnRleFRhbmdlbnRzLEV0LnRvbmVNYXBwaW5nPWd0LnRvbmVNYXBwaW5nfWZ1bmN0aW9uIGNuKEssZ3QsRXQseHQsRnQpe2d0LmlzU2NlbmUhPT0hMCYmKGd0PWJ0KSxxLnJlc2V0VGV4dHVyZVVuaXRzKCk7bGV0IFZlPWd0LmZvZyxVZT14dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2d0LmVudmlyb25tZW50Om51bGwsdHI9Yj09PW51bGw/Zy5vdXRwdXRFbmNvZGluZzpiLmlzWFJSZW5kZXJUYXJnZXQ9PT0hMD9iLnRleHR1cmUuZW5jb2Rpbmc6UWQsS2U9KHh0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/aHQ6cHQpLmdldCh4dC5lbnZNYXB8fFVlKSxYcj14dC52ZXJ0ZXhDb2xvcnM9PT0hMCYmISFFdC5hdHRyaWJ1dGVzLmNvbG9yJiZFdC5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplPT09NCxfcj0hIXh0Lm5vcm1hbE1hcCYmISFFdC5hdHRyaWJ1dGVzLnRhbmdlbnQsUHI9ISFFdC5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sWG49ISFFdC5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsLHJwPUV0Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbj9FdC5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24ubGVuZ3RoOjAsdW09eHQudG9uZU1hcHBlZD9nLnRvbmVNYXBwaW5nOktkLG1yPWR0LmdldCh4dCksemw9Zi5zdGF0ZS5saWdodHM7aWYoWj09PSEwJiYocnQ9PT0hMHx8SyE9PUMpKXtsZXQgVXM9Sz09PUMmJnh0LmlkPT09Uzt0dC5zZXRTdGF0ZSh4dCxLLFVzKX1sZXQgJG49ITE7eHQudmVyc2lvbj09PW1yLl9fdmVyc2lvbj8obXIubmVlZHNMaWdodHMmJm1yLmxpZ2h0c1N0YXRlVmVyc2lvbiE9PXpsLnN0YXRlLnZlcnNpb258fG1yLm91dHB1dEVuY29kaW5nIT09dHJ8fEZ0LmlzSW5zdGFuY2VkTWVzaCYmbXIuaW5zdGFuY2luZz09PSExfHwhRnQuaXNJbnN0YW5jZWRNZXNoJiZtci5pbnN0YW5jaW5nPT09ITB8fEZ0LmlzU2tpbm5lZE1lc2gmJm1yLnNraW5uaW5nPT09ITF8fCFGdC5pc1NraW5uZWRNZXNoJiZtci5za2lubmluZz09PSEwfHxtci5lbnZNYXAhPT1LZXx8eHQuZm9nJiZtci5mb2chPT1WZXx8bXIubnVtQ2xpcHBpbmdQbGFuZXMhPT12b2lkIDAmJihtci5udW1DbGlwcGluZ1BsYW5lcyE9PXR0Lm51bVBsYW5lc3x8bXIubnVtSW50ZXJzZWN0aW9uIT09dHQubnVtSW50ZXJzZWN0aW9uKXx8bXIudmVydGV4QWxwaGFzIT09WHJ8fG1yLnZlcnRleFRhbmdlbnRzIT09X3J8fG1yLm1vcnBoVGFyZ2V0cyE9PVByfHxtci5tb3JwaE5vcm1hbHMhPT1Ybnx8bXIudG9uZU1hcHBpbmchPT11bXx8Y3QuaXNXZWJHTDI9PT0hMCYmbXIubW9ycGhUYXJnZXRzQ291bnQhPT1ycCkmJigkbj0hMCk6KCRuPSEwLG1yLl9fdmVyc2lvbj14dC52ZXJzaW9uKTtsZXQgRmw9bXIuY3VycmVudFByb2dyYW07JG49PT0hMCYmKEZsPWNtKHh0LGd0LEZ0KSk7bGV0IHV4PSExLEJsPSExLEhsPSExLFdpPUZsLmdldFVuaWZvcm1zKCksaG09bXIudW5pZm9ybXM7aWYoWC51c2VQcm9ncmFtKEZsLnByb2dyYW0pJiYodXg9ITAsQmw9ITAsSGw9ITApLHh0LmlkIT09UyYmKFM9eHQuaWQsQmw9ITApLHV4fHxDIT09Syl7aWYoV2kuc2V0VmFsdWUobHQsInByb2plY3Rpb25NYXRyaXgiLEsucHJvamVjdGlvbk1hdHJpeCksY3QubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmV2kuc2V0VmFsdWUobHQsImxvZ0RlcHRoQnVmRkMiLDIvKE1hdGgubG9nKEsuZmFyKzEpL01hdGguTE4yKSksQyE9PUsmJihDPUssQmw9ITAsSGw9ITApLHh0LmlzU2hhZGVyTWF0ZXJpYWx8fHh0LmlzTWVzaFBob25nTWF0ZXJpYWx8fHh0LmlzTWVzaFRvb25NYXRlcmlhbHx8eHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8eHQuZW52TWFwKXtsZXQgVXM9V2kubWFwLmNhbWVyYVBvc2l0aW9uO1VzIT09dm9pZCAwJiZVcy5zZXRWYWx1ZShsdCxTdC5zZXRGcm9tTWF0cml4UG9zaXRpb24oSy5tYXRyaXhXb3JsZCkpfSh4dC5pc01lc2hQaG9uZ01hdGVyaWFsfHx4dC5pc01lc2hUb29uTWF0ZXJpYWx8fHh0LmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8eHQuaXNNZXNoQmFzaWNNYXRlcmlhbHx8eHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8eHQuaXNTaGFkZXJNYXRlcmlhbCkmJldpLnNldFZhbHVlKGx0LCJpc09ydGhvZ3JhcGhpYyIsSy5pc09ydGhvZ3JhcGhpY0NhbWVyYT09PSEwKSwoeHQuaXNNZXNoUGhvbmdNYXRlcmlhbHx8eHQuaXNNZXNoVG9vbk1hdGVyaWFsfHx4dC5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fHh0LmlzTWVzaEJhc2ljTWF0ZXJpYWx8fHh0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fHh0LmlzU2hhZGVyTWF0ZXJpYWx8fHh0LmlzU2hhZG93TWF0ZXJpYWx8fEZ0LmlzU2tpbm5lZE1lc2gpJiZXaS5zZXRWYWx1ZShsdCwidmlld01hdHJpeCIsSy5tYXRyaXhXb3JsZEludmVyc2UpfWlmKEZ0LmlzU2tpbm5lZE1lc2gpe1dpLnNldE9wdGlvbmFsKGx0LEZ0LCJiaW5kTWF0cml4IiksV2kuc2V0T3B0aW9uYWwobHQsRnQsImJpbmRNYXRyaXhJbnZlcnNlIik7bGV0IFVzPUZ0LnNrZWxldG9uO1VzJiYoY3QuZmxvYXRWZXJ0ZXhUZXh0dXJlcz8oVXMuYm9uZVRleHR1cmU9PT1udWxsJiZVcy5jb21wdXRlQm9uZVRleHR1cmUoKSxXaS5zZXRWYWx1ZShsdCwiYm9uZVRleHR1cmUiLFVzLmJvbmVUZXh0dXJlLHEpLFdpLnNldFZhbHVlKGx0LCJib25lVGV4dHVyZVNpemUiLFVzLmJvbmVUZXh0dXJlU2l6ZSkpOldpLnNldE9wdGlvbmFsKGx0LFVzLCJib25lTWF0cmljZXMiKSl9cmV0dXJuISFFdCYmKEV0Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbiE9PXZvaWQgMHx8RXQubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCE9PXZvaWQgMCkmJiR0LnVwZGF0ZShGdCxFdCx4dCxGbCksKEJsfHxtci5yZWNlaXZlU2hhZG93IT09RnQucmVjZWl2ZVNoYWRvdykmJihtci5yZWNlaXZlU2hhZG93PUZ0LnJlY2VpdmVTaGFkb3csV2kuc2V0VmFsdWUobHQsInJlY2VpdmVTaGFkb3ciLEZ0LnJlY2VpdmVTaGFkb3cpKSxCbCYmKFdpLnNldFZhbHVlKGx0LCJ0b25lTWFwcGluZ0V4cG9zdXJlIixnLnRvbmVNYXBwaW5nRXhwb3N1cmUpLG1yLm5lZWRzTGlnaHRzJiZjeChobSxIbCksVmUmJnh0LmZvZyYmTGUucmVmcmVzaEZvZ1VuaWZvcm1zKGhtLFZlKSxMZS5yZWZyZXNoTWF0ZXJpYWxVbmlmb3JtcyhobSx4dCxJLEIsb3QpLEIwLnVwbG9hZChsdCxtci51bmlmb3Jtc0xpc3QsaG0scSkpLHh0LmlzU2hhZGVyTWF0ZXJpYWwmJnh0LnVuaWZvcm1zTmVlZFVwZGF0ZT09PSEwJiYoQjAudXBsb2FkKGx0LG1yLnVuaWZvcm1zTGlzdCxobSxxKSx4dC51bmlmb3Jtc05lZWRVcGRhdGU9ITEpLHh0LmlzU3ByaXRlTWF0ZXJpYWwmJldpLnNldFZhbHVlKGx0LCJjZW50ZXIiLEZ0LmNlbnRlciksV2kuc2V0VmFsdWUobHQsIm1vZGVsVmlld01hdHJpeCIsRnQubW9kZWxWaWV3TWF0cml4KSxXaS5zZXRWYWx1ZShsdCwibm9ybWFsTWF0cml4IixGdC5ub3JtYWxNYXRyaXgpLFdpLnNldFZhbHVlKGx0LCJtb2RlbE1hdHJpeCIsRnQubWF0cml4V29ybGQpLEZsfWZ1bmN0aW9uIGN4KEssZ3Qpe0suYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9Z3QsSy5saWdodFByb2JlLm5lZWRzVXBkYXRlPWd0LEsuZGlyZWN0aW9uYWxMaWdodHMubmVlZHNVcGRhdGU9Z3QsSy5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1ndCxLLnBvaW50TGlnaHRzLm5lZWRzVXBkYXRlPWd0LEsucG9pbnRMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9Z3QsSy5zcG90TGlnaHRzLm5lZWRzVXBkYXRlPWd0LEsuc3BvdExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1ndCxLLnJlY3RBcmVhTGlnaHRzLm5lZWRzVXBkYXRlPWd0LEsuaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1ndH1mdW5jdGlvbiBlcChLKXtyZXR1cm4gSy5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fEsuaXNNZXNoVG9vbk1hdGVyaWFsfHxLLmlzTWVzaFBob25nTWF0ZXJpYWx8fEsuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8Sy5pc1NoYWRvd01hdGVyaWFsfHxLLmlzU2hhZGVyTWF0ZXJpYWwmJksubGlnaHRzPT09ITB9dGhpcy5nZXRBY3RpdmVDdWJlRmFjZT1mdW5jdGlvbigpe3JldHVybiB5fSx0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHh9LHRoaXMuZ2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGJ9LHRoaXMuc2V0UmVuZGVyVGFyZ2V0VGV4dHVyZXM9ZnVuY3Rpb24oSyxndCxFdCl7ZHQuZ2V0KEsudGV4dHVyZSkuX193ZWJnbFRleHR1cmU9Z3QsZHQuZ2V0KEsuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZT1FdDtsZXQgeHQ9ZHQuZ2V0KEspO3h0Ll9faGFzRXh0ZXJuYWxUZXh0dXJlcz0hMCx4dC5fX2hhc0V4dGVybmFsVGV4dHVyZXMmJih4dC5fX2F1dG9BbGxvY2F0ZURlcHRoQnVmZmVyPUV0PT09dm9pZCAwLHh0Ll9fYXV0b0FsbG9jYXRlRGVwdGhCdWZmZXJ8fEsudXNlUmVuZGVyVG9UZXh0dXJlJiYoY29uc29sZS53YXJuKCJyZW5kZXItdG8tdGV4dHVyZSBleHRlbnNpb24gd2FzIGRpc2FibGVkIGJlY2F1c2UgYW4gZXh0ZXJuYWwgdGV4dHVyZSB3YXMgcHJvdmlkZWQiKSxLLnVzZVJlbmRlclRvVGV4dHVyZT0hMSxLLnVzZVJlbmRlcmJ1ZmZlcj0hMCkpfSx0aGlzLnNldFJlbmRlclRhcmdldEZyYW1lYnVmZmVyPWZ1bmN0aW9uKEssZ3Qpe2xldCBFdD1kdC5nZXQoSyk7RXQuX193ZWJnbEZyYW1lYnVmZmVyPWd0LEV0Ll9fdXNlRGVmYXVsdEZyYW1lYnVmZmVyPWd0PT09dm9pZCAwfSx0aGlzLnNldFJlbmRlclRhcmdldD1mdW5jdGlvbihLLGd0PTAsRXQ9MCl7Yj1LLHk9Z3QseD1FdDtsZXQgeHQ9ITA7aWYoSyl7bGV0IEtlPWR0LmdldChLKTtLZS5fX3VzZURlZmF1bHRGcmFtZWJ1ZmZlciE9PXZvaWQgMD8oWC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCkseHQ9ITEpOktlLl9fd2ViZ2xGcmFtZWJ1ZmZlcj09PXZvaWQgMD9xLnNldHVwUmVuZGVyVGFyZ2V0KEspOktlLl9faGFzRXh0ZXJuYWxUZXh0dXJlcyYmcS5yZWJpbmRUZXh0dXJlcyhLLGR0LmdldChLLnRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlLGR0LmdldChLLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUpfWxldCBGdD1udWxsLFZlPSExLFVlPSExO2lmKEspe2xldCBLZT1LLnRleHR1cmU7KEtlLmlzRGF0YVRleHR1cmUzRHx8S2UuaXNEYXRhVGV4dHVyZTJEQXJyYXkpJiYoVWU9ITApO2xldCBYcj1kdC5nZXQoSykuX193ZWJnbEZyYW1lYnVmZmVyO0suaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/KEZ0PVhyW2d0XSxWZT0hMCk6Sy51c2VSZW5kZXJidWZmZXI/RnQ9ZHQuZ2V0KEspLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcjpGdD1YcixQLmNvcHkoSy52aWV3cG9ydCksay5jb3B5KEsuc2Npc3NvciksTz1LLnNjaXNzb3JUZXN0fWVsc2UgUC5jb3B5KEYpLm11bHRpcGx5U2NhbGFyKEkpLmZsb29yKCksay5jb3B5KHopLm11bHRpcGx5U2NhbGFyKEkpLmZsb29yKCksTz1VO2lmKFguYmluZEZyYW1lYnVmZmVyKDM2MTYwLEZ0KSYmY3QuZHJhd0J1ZmZlcnMmJnh0JiZYLmRyYXdCdWZmZXJzKEssRnQpLFgudmlld3BvcnQoUCksWC5zY2lzc29yKGspLFguc2V0U2Npc3NvclRlc3QoTyksVmUpe2xldCBLZT1kdC5nZXQoSy50ZXh0dXJlKTtsdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA2NCwzNDA2OStndCxLZS5fX3dlYmdsVGV4dHVyZSxFdCl9ZWxzZSBpZihVZSl7bGV0IEtlPWR0LmdldChLLnRleHR1cmUpLFhyPWd0fHwwO2x0LmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKDM2MTYwLDM2MDY0LEtlLl9fd2ViZ2xUZXh0dXJlLEV0fHwwLFhyKX1TPS0xfSx0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM9ZnVuY3Rpb24oSyxndCxFdCx4dCxGdCxWZSxVZSl7aWYoIShLJiZLLmlzV2ViR0xSZW5kZXJUYXJnZXQpKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQuIik7cmV0dXJufWxldCB0cj1kdC5nZXQoSykuX193ZWJnbEZyYW1lYnVmZmVyO2lmKEsuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQmJlVlIT09dm9pZCAwJiYodHI9dHJbVWVdKSx0cil7WC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsdHIpO3RyeXtsZXQgS2U9Sy50ZXh0dXJlLFhyPUtlLmZvcm1hdCxfcj1LZS50eXBlO2lmKFhyIT09Sm8mJmJlLmNvbnZlcnQoWHIpIT09bHQuZ2V0UGFyYW1ldGVyKDM1NzM5KSl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFJHQkEgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBmb3JtYXQuIik7cmV0dXJufWxldCBQcj1fcj09PUMxJiYoX3QuaGFzKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKXx8Y3QuaXNXZWJHTDImJl90LmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKTtpZihfciE9PVpkJiZiZS5jb252ZXJ0KF9yKSE9PWx0LmdldFBhcmFtZXRlcigzNTczOCkmJiEoX3I9PT1qZCYmKGN0LmlzV2ViR0wyfHxfdC5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0Iil8fF90LmhhcygiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0IikpKSYmIVByKXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gVW5zaWduZWRCeXRlVHlwZSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHR5cGUuIik7cmV0dXJufWx0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoMzYxNjApPT09MzYwNTM/Z3Q+PTAmJmd0PD1LLndpZHRoLXh0JiZFdD49MCYmRXQ8PUsuaGVpZ2h0LUZ0JiZsdC5yZWFkUGl4ZWxzKGd0LEV0LHh0LEZ0LGJlLmNvbnZlcnQoWHIpLGJlLmNvbnZlcnQoX3IpLFZlKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlYWRQaXhlbHMgZnJvbSByZW5kZXJUYXJnZXQgZmFpbGVkLiBGcmFtZWJ1ZmZlciBub3QgY29tcGxldGUuIil9ZmluYWxseXtsZXQgS2U9YiE9PW51bGw/ZHQuZ2V0KGIpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjpudWxsO1guYmluZEZyYW1lYnVmZmVyKDM2MTYwLEtlKX19fSx0aGlzLmNvcHlGcmFtZWJ1ZmZlclRvVGV4dHVyZT1mdW5jdGlvbihLLGd0LEV0PTApe2lmKGd0LmlzRnJhbWVidWZmZXJUZXh0dXJlIT09ITApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6IGNvcHlGcmFtZWJ1ZmZlclRvVGV4dHVyZSgpIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBGcmFtZWJ1ZmZlclRleHR1cmUuIik7cmV0dXJufWxldCB4dD1NYXRoLnBvdygyLC1FdCksRnQ9TWF0aC5mbG9vcihndC5pbWFnZS53aWR0aCp4dCksVmU9TWF0aC5mbG9vcihndC5pbWFnZS5oZWlnaHQqeHQpO3Euc2V0VGV4dHVyZTJEKGd0LDApLGx0LmNvcHlUZXhTdWJJbWFnZTJEKDM1NTMsRXQsMCwwLEsueCxLLnksRnQsVmUpLFgudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlPWZ1bmN0aW9uKEssZ3QsRXQseHQ9MCl7bGV0IEZ0PWd0LmltYWdlLndpZHRoLFZlPWd0LmltYWdlLmhlaWdodCxVZT1iZS5jb252ZXJ0KEV0LmZvcm1hdCksdHI9YmUuY29udmVydChFdC50eXBlKTtxLnNldFRleHR1cmUyRChFdCwwKSxsdC5waXhlbFN0b3JlaSgzNzQ0MCxFdC5mbGlwWSksbHQucGl4ZWxTdG9yZWkoMzc0NDEsRXQucHJlbXVsdGlwbHlBbHBoYSksbHQucGl4ZWxTdG9yZWkoMzMxNyxFdC51bnBhY2tBbGlnbm1lbnQpLGd0LmlzRGF0YVRleHR1cmU/bHQudGV4U3ViSW1hZ2UyRCgzNTUzLHh0LEsueCxLLnksRnQsVmUsVWUsdHIsZ3QuaW1hZ2UuZGF0YSk6Z3QuaXNDb21wcmVzc2VkVGV4dHVyZT9sdC5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNTUzLHh0LEsueCxLLnksZ3QubWlwbWFwc1swXS53aWR0aCxndC5taXBtYXBzWzBdLmhlaWdodCxVZSxndC5taXBtYXBzWzBdLmRhdGEpOmx0LnRleFN1YkltYWdlMkQoMzU1Myx4dCxLLngsSy55LFVlLHRyLGd0LmltYWdlKSx4dD09PTAmJkV0LmdlbmVyYXRlTWlwbWFwcyYmbHQuZ2VuZXJhdGVNaXBtYXAoMzU1MyksWC51bmJpbmRUZXh0dXJlKCl9LHRoaXMuY29weVRleHR1cmVUb1RleHR1cmUzRD1mdW5jdGlvbihLLGd0LEV0LHh0LEZ0PTApe2lmKGcuaXNXZWJHTDFSZW5kZXJlcil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7cmV0dXJufWxldCBWZT1LLm1heC54LUsubWluLngrMSxVZT1LLm1heC55LUsubWluLnkrMSx0cj1LLm1heC56LUsubWluLnorMSxLZT1iZS5jb252ZXJ0KHh0LmZvcm1hdCksWHI9YmUuY29udmVydCh4dC50eXBlKSxfcjtpZih4dC5pc0RhdGFUZXh0dXJlM0QpcS5zZXRUZXh0dXJlM0QoeHQsMCksX3I9MzI4Nzk7ZWxzZSBpZih4dC5pc0RhdGFUZXh0dXJlMkRBcnJheSlxLnNldFRleHR1cmUyREFycmF5KHh0LDApLF9yPTM1ODY2O2Vsc2V7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IG9ubHkgc3VwcG9ydHMgVEhSRUUuRGF0YVRleHR1cmUzRCBhbmQgVEhSRUUuRGF0YVRleHR1cmUyREFycmF5LiIpO3JldHVybn1sdC5waXhlbFN0b3JlaSgzNzQ0MCx4dC5mbGlwWSksbHQucGl4ZWxTdG9yZWkoMzc0NDEseHQucHJlbXVsdGlwbHlBbHBoYSksbHQucGl4ZWxTdG9yZWkoMzMxNyx4dC51bnBhY2tBbGlnbm1lbnQpO2xldCBQcj1sdC5nZXRQYXJhbWV0ZXIoMzMxNCksWG49bHQuZ2V0UGFyYW1ldGVyKDMyODc4KSxycD1sdC5nZXRQYXJhbWV0ZXIoMzMxNiksdW09bHQuZ2V0UGFyYW1ldGVyKDMzMTUpLG1yPWx0LmdldFBhcmFtZXRlcigzMjg3Nyksemw9RXQuaXNDb21wcmVzc2VkVGV4dHVyZT9FdC5taXBtYXBzWzBdOkV0LmltYWdlO2x0LnBpeGVsU3RvcmVpKDMzMTQsemwud2lkdGgpLGx0LnBpeGVsU3RvcmVpKDMyODc4LHpsLmhlaWdodCksbHQucGl4ZWxTdG9yZWkoMzMxNixLLm1pbi54KSxsdC5waXhlbFN0b3JlaSgzMzE1LEsubWluLnkpLGx0LnBpeGVsU3RvcmVpKDMyODc3LEsubWluLnopLEV0LmlzRGF0YVRleHR1cmV8fEV0LmlzRGF0YVRleHR1cmUzRD9sdC50ZXhTdWJJbWFnZTNEKF9yLEZ0LGd0LngsZ3QueSxndC56LFZlLFVlLHRyLEtlLFhyLHpsLmRhdGEpOkV0LmlzQ29tcHJlc3NlZFRleHR1cmU/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiB1bnRlc3RlZCBzdXBwb3J0IGZvciBjb21wcmVzc2VkIHNyY1RleHR1cmUuIiksbHQuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoX3IsRnQsZ3QueCxndC55LGd0LnosVmUsVWUsdHIsS2UsemwuZGF0YSkpOmx0LnRleFN1YkltYWdlM0QoX3IsRnQsZ3QueCxndC55LGd0LnosVmUsVWUsdHIsS2UsWHIsemwpLGx0LnBpeGVsU3RvcmVpKDMzMTQsUHIpLGx0LnBpeGVsU3RvcmVpKDMyODc4LFhuKSxsdC5waXhlbFN0b3JlaSgzMzE2LHJwKSxsdC5waXhlbFN0b3JlaSgzMzE1LHVtKSxsdC5waXhlbFN0b3JlaSgzMjg3NyxtciksRnQ9PT0wJiZ4dC5nZW5lcmF0ZU1pcG1hcHMmJmx0LmdlbmVyYXRlTWlwbWFwKF9yKSxYLnVuYmluZFRleHR1cmUoKX0sdGhpcy5pbml0VGV4dHVyZT1mdW5jdGlvbihLKXtxLnNldFRleHR1cmUyRChLLDApLFgudW5iaW5kVGV4dHVyZSgpfSx0aGlzLnJlc2V0U3RhdGU9ZnVuY3Rpb24oKXt5PTAseD0wLGI9bnVsbCxYLnJlc2V0KCksbnQucmVzZXQoKX0sdHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyE9InVuZGVmaW5lZCImJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfXJuLnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyZXI9ITA7dmFyIHBVPWNsYXNzIGV4dGVuZHMgcm57fTtwVS5wcm90b3R5cGUuaXNXZWJHTDFSZW5kZXJlcj0hMDt2YXIgTzE9Y2xhc3N7Y29uc3RydWN0b3IodCxyPTI1ZS01KXt0aGlzLm5hbWU9IiIsdGhpcy5jb2xvcj1uZXcgbmUodCksdGhpcy5kZW5zaXR5PXJ9Y2xvbmUoKXtyZXR1cm4gbmV3IE8xKHRoaXMuY29sb3IsdGhpcy5kZW5zaXR5KX10b0pTT04oKXtyZXR1cm57dHlwZToiRm9nRXhwMiIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxkZW5zaXR5OnRoaXMuZGVuc2l0eX19fTtPMS5wcm90b3R5cGUuaXNGb2dFeHAyPSEwO3ZhciB6MT1jbGFzc3tjb25zdHJ1Y3Rvcih0LHI9MSxuPTFlMyl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IG5lKHQpLHRoaXMubmVhcj1yLHRoaXMuZmFyPW59Y2xvbmUoKXtyZXR1cm4gbmV3IHoxKHRoaXMuY29sb3IsdGhpcy5uZWFyLHRoaXMuZmFyKX10b0pTT04oKXtyZXR1cm57dHlwZToiRm9nIixjb2xvcjp0aGlzLmNvbG9yLmdldEhleCgpLG5lYXI6dGhpcy5uZWFyLGZhcjp0aGlzLmZhcn19fTt6MS5wcm90b3R5cGUuaXNGb2c9ITA7dmFyIHEwPWNsYXNzIGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCx0eXBlb2YgX19USFJFRV9ERVZUT09MU19fIT0idW5kZWZpbmVkIiYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LHIpe3JldHVybiBzdXBlci5jb3B5KHQsciksdC5iYWNrZ3JvdW5kIT09bnVsbCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksdC5lbnZpcm9ubWVudCE9PW51bGwmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksdC5mb2chPT1udWxsJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksdC5vdmVycmlkZU1hdGVyaWFsIT09bnVsbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2xldCByPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gdGhpcy5mb2chPT1udWxsJiYoci5vYmplY3QuZm9nPXRoaXMuZm9nLnRvSlNPTigpKSxyfX07cTAucHJvdG90eXBlLmlzU2NlbmU9ITA7dmFyIGVtPWNsYXNze2NvbnN0cnVjdG9yKHQscil7dGhpcy5hcnJheT10LHRoaXMuc3RyaWRlPXIsdGhpcy5jb3VudD10IT09dm9pZCAwP3QubGVuZ3RoL3I6MCx0aGlzLnVzYWdlPUczLHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9UmwoKX1vblVwbG9hZENhbGxiYWNrKCl7fXNldCBuZWVkc1VwZGF0ZSh0KXt0PT09ITAmJnRoaXMudmVyc2lvbisrfXNldFVzYWdlKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLnN0cmlkZT10LnN0cmlkZSx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc31jb3B5QXQodCxyLG4pe3QqPXRoaXMuc3RyaWRlLG4qPXIuc3RyaWRlO2ZvcihsZXQgaT0wLG89dGhpcy5zdHJpZGU7aTxvO2krKyl0aGlzLmFycmF5W3QraV09ci5hcnJheVtuK2ldO3JldHVybiB0aGlzfXNldCh0LHI9MCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQsciksdGhpc31jbG9uZSh0KXt0LmFycmF5QnVmZmVycz09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzPXt9KSx0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD09PXZvaWQgMCYmKHRoaXMuYXJyYXkuYnVmZmVyLl91dWlkPVJsKCkpLHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT10aGlzLmFycmF5LnNsaWNlKDApLmJ1ZmZlcik7bGV0IHI9bmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdKSxuPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHIsdGhpcy5zdHJpZGUpO3JldHVybiBuLnNldFVzYWdlKHRoaXMudXNhZ2UpLG59b25VcGxvYWQodCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9dG9KU09OKHQpe3JldHVybiB0LmFycmF5QnVmZmVycz09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzPXt9KSx0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD09PXZvaWQgMCYmKHRoaXMuYXJyYXkuYnVmZmVyLl91dWlkPVJsKCkpLHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT09PXZvaWQgMCYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuZXcgVWludDMyQXJyYXkodGhpcy5hcnJheS5idWZmZXIpKSkse3V1aWQ6dGhpcy51dWlkLGJ1ZmZlcjp0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZCx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxzdHJpZGU6dGhpcy5zdHJpZGV9fX07ZW0ucHJvdG90eXBlLmlzSW50ZXJsZWF2ZWRCdWZmZXI9ITA7dmFyIEFpPW5ldyBqLFFmPWNsYXNze2NvbnN0cnVjdG9yKHQscixuLGk9ITEpe3RoaXMubmFtZT0iIix0aGlzLmRhdGE9dCx0aGlzLml0ZW1TaXplPXIsdGhpcy5vZmZzZXQ9bix0aGlzLm5vcm1hbGl6ZWQ9aT09PSEwfWdldCBjb3VudCgpe3JldHVybiB0aGlzLmRhdGEuY291bnR9Z2V0IGFycmF5KCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheX1zZXQgbmVlZHNVcGRhdGUodCl7dGhpcy5kYXRhLm5lZWRzVXBkYXRlPXR9YXBwbHlNYXRyaXg0KHQpe2ZvcihsZXQgcj0wLG49dGhpcy5kYXRhLmNvdW50O3I8bjtyKyspQWkueD10aGlzLmdldFgociksQWkueT10aGlzLmdldFkociksQWkuej10aGlzLmdldFoociksQWkuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKHIsQWkueCxBaS55LEFpLnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgcj0wLG49dGhpcy5jb3VudDtyPG47cisrKUFpLng9dGhpcy5nZXRYKHIpLEFpLnk9dGhpcy5nZXRZKHIpLEFpLno9dGhpcy5nZXRaKHIpLEFpLmFwcGx5Tm9ybWFsTWF0cml4KHQpLHRoaXMuc2V0WFlaKHIsQWkueCxBaS55LEFpLnopO3JldHVybiB0aGlzfXRyYW5zZm9ybURpcmVjdGlvbih0KXtmb3IobGV0IHI9MCxuPXRoaXMuY291bnQ7cjxuO3IrKylBaS54PXRoaXMuZ2V0WChyKSxBaS55PXRoaXMuZ2V0WShyKSxBaS56PXRoaXMuZ2V0WihyKSxBaS50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpcy5zZXRYWVoocixBaS54LEFpLnksQWkueik7cmV0dXJuIHRoaXN9c2V0WCh0LHIpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XT1yLHRoaXN9c2V0WSh0LHIpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdPXIsdGhpc31zZXRaKHQscil7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl09cix0aGlzfXNldFcodCxyKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXT1yLHRoaXN9Z2V0WCh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldF19Z2V0WSh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsxXX1nZXRaKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdfWdldFcodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrM119c2V0WFkodCxyLG4pe3JldHVybiB0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCx0aGlzLmRhdGEuYXJyYXlbdCswXT1yLHRoaXMuZGF0YS5hcnJheVt0KzFdPW4sdGhpc31zZXRYWVoodCxyLG4saSl7cmV0dXJuIHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0LHRoaXMuZGF0YS5hcnJheVt0KzBdPXIsdGhpcy5kYXRhLmFycmF5W3QrMV09bix0aGlzLmRhdGEuYXJyYXlbdCsyXT1pLHRoaXN9c2V0WFlaVyh0LHIsbixpLG8pe3JldHVybiB0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCx0aGlzLmRhdGEuYXJyYXlbdCswXT1yLHRoaXMuZGF0YS5hcnJheVt0KzFdPW4sdGhpcy5kYXRhLmFycmF5W3QrMl09aSx0aGlzLmRhdGEuYXJyYXlbdCszXT1vLHRoaXN9Y2xvbmUodCl7aWYodD09PXZvaWQgMCl7Y29uc29sZS5sb2coIlRIUkVFLkludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlLmNsb25lKCk6IENsb25pbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2xldCByPVtdO2ZvcihsZXQgbj0wO248dGhpcy5jb3VudDtuKyspe2xldCBpPW4qdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IG89MDtvPHRoaXMuaXRlbVNpemU7bysrKXIucHVzaCh0aGlzLmRhdGEuYXJyYXlbaStvXSl9cmV0dXJuIG5ldyBKZShuZXcgdGhpcy5hcnJheS5jb25zdHJ1Y3RvcihyKSx0aGlzLml0ZW1TaXplLHRoaXMubm9ybWFsaXplZCl9ZWxzZSByZXR1cm4gdC5pbnRlcmxlYXZlZEJ1ZmZlcnM9PT12b2lkIDAmJih0LmludGVybGVhdmVkQnVmZmVycz17fSksdC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPT09dm9pZCAwJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPXRoaXMuZGF0YS5jbG9uZSh0KSksbmV3IFFmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9dG9KU09OKHQpe2lmKHQ9PT12b2lkIDApe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2xldCByPVtdO2ZvcihsZXQgbj0wO248dGhpcy5jb3VudDtuKyspe2xldCBpPW4qdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IG89MDtvPHRoaXMuaXRlbVNpemU7bysrKXIucHVzaCh0aGlzLmRhdGEuYXJyYXlbaStvXSl9cmV0dXJue2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6cixub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19ZWxzZSByZXR1cm4gdC5pbnRlcmxlYXZlZEJ1ZmZlcnM9PT12b2lkIDAmJih0LmludGVybGVhdmVkQnVmZmVycz17fSksdC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPT09dm9pZCAwJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPXRoaXMuZGF0YS50b0pTT04odCkpLHtpc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlOiEwLGl0ZW1TaXplOnRoaXMuaXRlbVNpemUsZGF0YTp0aGlzLmRhdGEudXVpZCxvZmZzZXQ6dGhpcy5vZmZzZXQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fX07UWYucHJvdG90eXBlLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU9ITA7dmFyIG5NPWNsYXNzIGV4dGVuZHMgVWl7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBuZSgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5yb3RhdGlvbj0wLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMudHJhbnNwYXJlbnQ9ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLnNpemVBdHRlbnVhdGlvbj10LnNpemVBdHRlbnVhdGlvbix0aGlzfX07bk0ucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITA7dmFyIFIzLGtQPW5ldyBqLE4zPW5ldyBqLEQzPW5ldyBqLE8zPW5ldyBMdCxSUD1uZXcgTHQsV2ZlPW5ldyBNZSxBVj1uZXcgaixOUD1uZXcgaixQVj1uZXcgaixVdWU9bmV3IEx0LHB1dD1uZXcgTHQscXVlPW5ldyBMdCxpTT1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKHQpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJTcHJpdGUiLFIzPT09dm9pZCAwKXtSMz1uZXcgUGU7bGV0IHI9bmV3IEZsb2F0MzJBcnJheShbLS41LC0uNSwwLDAsMCwuNSwtLjUsMCwxLDAsLjUsLjUsMCwxLDEsLS41LC41LDAsMCwxXSksbj1uZXcgZW0ociw1KTtSMy5zZXRJbmRleChbMCwxLDIsMCwyLDNdKSxSMy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgUWYobiwzLDAsITEpKSxSMy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgUWYobiwyLDMsITEpKX10aGlzLmdlb21ldHJ5PVIzLHRoaXMubWF0ZXJpYWw9dCE9PXZvaWQgMD90Om5ldyBuTSx0aGlzLmNlbnRlcj1uZXcgTHQoLjUsLjUpfXJheWNhc3QodCxyKXt0LmNhbWVyYT09PW51bGwmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLlNwcml0ZTogIlJheWNhc3Rlci5jYW1lcmEiIG5lZWRzIHRvIGJlIHNldCBpbiBvcmRlciB0byByYXljYXN0IGFnYWluc3Qgc3ByaXRlcy4nKSxOMy5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksV2ZlLmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLEQzLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1vZGVsVmlld01hdHJpeCksdC5jYW1lcmEuaXNQZXJzcGVjdGl2ZUNhbWVyYSYmdGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb249PT0hMSYmTjMubXVsdGlwbHlTY2FsYXIoLUQzLnopO2xldCBuPXRoaXMubWF0ZXJpYWwucm90YXRpb24saSxvO24hPT0wJiYobz1NYXRoLmNvcyhuKSxpPU1hdGguc2luKG4pKTtsZXQgYT10aGlzLmNlbnRlcjtJVihBVi5zZXQoLS41LC0uNSwwKSxEMyxhLE4zLGksbyksSVYoTlAuc2V0KC41LC0uNSwwKSxEMyxhLE4zLGksbyksSVYoUFYuc2V0KC41LC41LDApLEQzLGEsTjMsaSxvKSxVdWUuc2V0KDAsMCkscHV0LnNldCgxLDApLHF1ZS5zZXQoMSwxKTtsZXQgcz10LnJheS5pbnRlcnNlY3RUcmlhbmdsZShBVixOUCxQViwhMSxrUCk7aWYocz09PW51bGwmJihJVihOUC5zZXQoLS41LC41LDApLEQzLGEsTjMsaSxvKSxwdXQuc2V0KDAsMSkscz10LnJheS5pbnRlcnNlY3RUcmlhbmdsZShBVixQVixOUCwhMSxrUCkscz09PW51bGwpKXJldHVybjtsZXQgbD10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhrUCk7bDx0Lm5lYXJ8fGw+dC5mYXJ8fHIucHVzaCh7ZGlzdGFuY2U6bCxwb2ludDprUC5jbG9uZSgpLHV2OmFpLmdldFVWKGtQLEFWLE5QLFBWLFV1ZSxwdXQscXVlLG5ldyBMdCksZmFjZTpudWxsLG9iamVjdDp0aGlzfSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0LmNlbnRlciE9PXZvaWQgMCYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fTtpTS5wcm90b3R5cGUuaXNTcHJpdGU9ITA7ZnVuY3Rpb24gSVYoZSx0LHIsbixpLG8pe08zLnN1YlZlY3RvcnMoZSxyKS5hZGRTY2FsYXIoLjUpLm11bHRpcGx5KG4pLGkhPT12b2lkIDA/KFJQLng9bypPMy54LWkqTzMueSxSUC55PWkqTzMueCtvKk8zLnkpOlJQLmNvcHkoTzMpLGUuY29weSh0KSxlLngrPVJQLngsZS55Kz1SUC55LGUuYXBwbHlNYXRyaXg0KFdmZSl9dmFyIExWPW5ldyBqLEd1ZT1uZXcgaixkVT1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9jdXJyZW50TGV2ZWw9MCx0aGlzLnR5cGU9IkxPRCIsT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7bGV2ZWxzOntlbnVtZXJhYmxlOiEwLHZhbHVlOltdfSxpc0xPRDp7dmFsdWU6ITB9fSksdGhpcy5hdXRvVXBkYXRlPSEwfWNvcHkodCl7c3VwZXIuY29weSh0LCExKTtsZXQgcj10LmxldmVscztmb3IobGV0IG49MCxpPXIubGVuZ3RoO248aTtuKyspe2xldCBvPXJbbl07dGhpcy5hZGRMZXZlbChvLm9iamVjdC5jbG9uZSgpLG8uZGlzdGFuY2UpfXJldHVybiB0aGlzLmF1dG9VcGRhdGU9dC5hdXRvVXBkYXRlLHRoaXN9YWRkTGV2ZWwodCxyPTApe3I9TWF0aC5hYnMocik7bGV0IG49dGhpcy5sZXZlbHMsaTtmb3IoaT0wO2k8bi5sZW5ndGgmJiEocjxuW2ldLmRpc3RhbmNlKTtpKyspO3JldHVybiBuLnNwbGljZShpLDAse2Rpc3RhbmNlOnIsb2JqZWN0OnR9KSx0aGlzLmFkZCh0KSx0aGlzfWdldEN1cnJlbnRMZXZlbCgpe3JldHVybiB0aGlzLl9jdXJyZW50TGV2ZWx9Z2V0T2JqZWN0Rm9yRGlzdGFuY2UodCl7bGV0IHI9dGhpcy5sZXZlbHM7aWYoci5sZW5ndGg+MCl7bGV0IG4saTtmb3Iobj0xLGk9ci5sZW5ndGg7bjxpJiYhKHQ8cltuXS5kaXN0YW5jZSk7bisrKTtyZXR1cm4gcltuLTFdLm9iamVjdH1yZXR1cm4gbnVsbH1yYXljYXN0KHQscil7aWYodGhpcy5sZXZlbHMubGVuZ3RoPjApe0xWLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTtsZXQgaT10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhMVik7dGhpcy5nZXRPYmplY3RGb3JEaXN0YW5jZShpKS5yYXljYXN0KHQscil9fXVwZGF0ZSh0KXtsZXQgcj10aGlzLmxldmVscztpZihyLmxlbmd0aD4xKXtMVi5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksR3VlLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTtsZXQgbj1MVi5kaXN0YW5jZVRvKEd1ZSkvdC56b29tO3JbMF0ub2JqZWN0LnZpc2libGU9ITA7bGV0IGksbztmb3IoaT0xLG89ci5sZW5ndGg7aTxvJiZuPj1yW2ldLmRpc3RhbmNlO2krKylyW2ktMV0ub2JqZWN0LnZpc2libGU9ITEscltpXS5vYmplY3QudmlzaWJsZT0hMDtmb3IodGhpcy5fY3VycmVudExldmVsPWktMTtpPG87aSsrKXJbaV0ub2JqZWN0LnZpc2libGU9ITF9fXRvSlNPTih0KXtsZXQgcj1zdXBlci50b0pTT04odCk7dGhpcy5hdXRvVXBkYXRlPT09ITEmJihyLm9iamVjdC5hdXRvVXBkYXRlPSExKSxyLm9iamVjdC5sZXZlbHM9W107bGV0IG49dGhpcy5sZXZlbHM7Zm9yKGxldCBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKXtsZXQgYT1uW2ldO3Iub2JqZWN0LmxldmVscy5wdXNoKHtvYmplY3Q6YS5vYmplY3QudXVpZCxkaXN0YW5jZTphLmRpc3RhbmNlfSl9cmV0dXJuIHJ9fSxXdWU9bmV3IGosWXVlPW5ldyBlbixqdWU9bmV3IGVuLE1ncj1uZXcgaixYdWU9bmV3IE1lLG9NPWNsYXNzIGV4dGVuZHMgZWl7Y29uc3RydWN0b3IodCxyKXtzdXBlcih0LHIpLHRoaXMudHlwZT0iU2tpbm5lZE1lc2giLHRoaXMuYmluZE1vZGU9ImF0dGFjaGVkIix0aGlzLmJpbmRNYXRyaXg9bmV3IE1lLHRoaXMuYmluZE1hdHJpeEludmVyc2U9bmV3IE1lfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5iaW5kTW9kZT10LmJpbmRNb2RlLHRoaXMuYmluZE1hdHJpeC5jb3B5KHQuYmluZE1hdHJpeCksdGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHQuYmluZE1hdHJpeEludmVyc2UpLHRoaXMuc2tlbGV0b249dC5za2VsZXRvbix0aGlzfWJpbmQodCxyKXt0aGlzLnNrZWxldG9uPXQscj09PXZvaWQgMCYmKHRoaXMudXBkYXRlTWF0cml4V29ybGQoITApLHRoaXMuc2tlbGV0b24uY2FsY3VsYXRlSW52ZXJzZXMoKSxyPXRoaXMubWF0cml4V29ybGQpLHRoaXMuYmluZE1hdHJpeC5jb3B5KHIpLHRoaXMuYmluZE1hdHJpeEludmVyc2UuY29weShyKS5pbnZlcnQoKX1wb3NlKCl7dGhpcy5za2VsZXRvbi5wb3NlKCl9bm9ybWFsaXplU2tpbldlaWdodHMoKXtsZXQgdD1uZXcgZW4scj10aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMuc2tpbldlaWdodDtmb3IobGV0IG49MCxpPXIuY291bnQ7bjxpO24rKyl7dC54PXIuZ2V0WChuKSx0Lnk9ci5nZXRZKG4pLHQuej1yLmdldFoobiksdC53PXIuZ2V0VyhuKTtsZXQgbz0xL3QubWFuaGF0dGFuTGVuZ3RoKCk7byE9PTEvMD90Lm11bHRpcGx5U2NhbGFyKG8pOnQuc2V0KDEsMCwwLDApLHIuc2V0WFlaVyhuLHQueCx0LnksdC56LHQudyl9fXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpLHRoaXMuYmluZE1vZGU9PT0iYXR0YWNoZWQiP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTp0aGlzLmJpbmRNb2RlPT09ImRldGFjaGVkIj90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5iaW5kTWF0cml4KS5pbnZlcnQoKTpjb25zb2xlLndhcm4oIlRIUkVFLlNraW5uZWRNZXNoOiBVbnJlY29nbml6ZWQgYmluZE1vZGU6ICIrdGhpcy5iaW5kTW9kZSl9Ym9uZVRyYW5zZm9ybSh0LHIpe2xldCBuPXRoaXMuc2tlbGV0b24saT10aGlzLmdlb21ldHJ5O1l1ZS5mcm9tQnVmZmVyQXR0cmlidXRlKGkuYXR0cmlidXRlcy5za2luSW5kZXgsdCksanVlLmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnNraW5XZWlnaHQsdCksV3VlLmNvcHkocikuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeCksci5zZXQoMCwwLDApO2ZvcihsZXQgbz0wO288NDtvKyspe2xldCBhPWp1ZS5nZXRDb21wb25lbnQobyk7aWYoYSE9PTApe2xldCBzPVl1ZS5nZXRDb21wb25lbnQobyk7WHVlLm11bHRpcGx5TWF0cmljZXMobi5ib25lc1tzXS5tYXRyaXhXb3JsZCxuLmJvbmVJbnZlcnNlc1tzXSksci5hZGRTY2FsZWRWZWN0b3IoTWdyLmNvcHkoV3VlKS5hcHBseU1hdHJpeDQoWHVlKSxhKX19cmV0dXJuIHIuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeEludmVyc2UpfX07b00ucHJvdG90eXBlLmlzU2tpbm5lZE1lc2g9ITA7dmFyIGFNPWNsYXNzIGV4dGVuZHMgb3J7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQm9uZSJ9fTthTS5wcm90b3R5cGUuaXNCb25lPSEwO3ZhciBKZD1jbGFzcyBleHRlbmRzIHhpe2NvbnN0cnVjdG9yKHQ9bnVsbCxyPTEsbj0xLGksbyxhLHMsbCxjPUxpLHU9TGksaCxmKXtzdXBlcihudWxsLGEscyxsLGMsdSxpLG8saCxmKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6cixoZWlnaHQ6bn0sdGhpcy5tYWdGaWx0ZXI9Yyx0aGlzLm1pbkZpbHRlcj11LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MX19O0pkLnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlPSEwO3ZhciAkdWU9bmV3IE1lLEVncj1uZXcgTWUsc009Y2xhc3N7Y29uc3RydWN0b3IodD1bXSxyPVtdKXt0aGlzLnV1aWQ9UmwoKSx0aGlzLmJvbmVzPXQuc2xpY2UoMCksdGhpcy5ib25lSW52ZXJzZXM9cix0aGlzLmJvbmVNYXRyaWNlcz1udWxsLHRoaXMuYm9uZVRleHR1cmU9bnVsbCx0aGlzLmJvbmVUZXh0dXJlU2l6ZT0wLHRoaXMuZnJhbWU9LTEsdGhpcy5pbml0KCl9aW5pdCgpe2xldCB0PXRoaXMuYm9uZXMscj10aGlzLmJvbmVJbnZlcnNlcztpZih0aGlzLmJvbmVNYXRyaWNlcz1uZXcgRmxvYXQzMkFycmF5KHQubGVuZ3RoKjE2KSxyLmxlbmd0aD09PTApdGhpcy5jYWxjdWxhdGVJbnZlcnNlcygpO2Vsc2UgaWYodC5sZW5ndGghPT1yLmxlbmd0aCl7Y29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogTnVtYmVyIG9mIGludmVyc2UgYm9uZSBtYXRyaWNlcyBkb2VzIG5vdCBtYXRjaCBhbW91bnQgb2YgYm9uZXMuIiksdGhpcy5ib25lSW52ZXJzZXM9W107Zm9yKGxldCBuPTAsaT10aGlzLmJvbmVzLmxlbmd0aDtuPGk7bisrKXRoaXMuYm9uZUludmVyc2VzLnB1c2gobmV3IE1lKX19Y2FsY3VsYXRlSW52ZXJzZXMoKXt0aGlzLmJvbmVJbnZlcnNlcy5sZW5ndGg9MDtmb3IobGV0IHQ9MCxyPXRoaXMuYm9uZXMubGVuZ3RoO3Q8cjt0Kyspe2xldCBuPW5ldyBNZTt0aGlzLmJvbmVzW3RdJiZuLmNvcHkodGhpcy5ib25lc1t0XS5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksdGhpcy5ib25lSW52ZXJzZXMucHVzaChuKX19cG9zZSgpe2ZvcihsZXQgdD0wLHI9dGhpcy5ib25lcy5sZW5ndGg7dDxyO3QrKyl7bGV0IG49dGhpcy5ib25lc1t0XTtuJiZuLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5ib25lSW52ZXJzZXNbdF0pLmludmVydCgpfWZvcihsZXQgdD0wLHI9dGhpcy5ib25lcy5sZW5ndGg7dDxyO3QrKyl7bGV0IG49dGhpcy5ib25lc1t0XTtuJiYobi5wYXJlbnQmJm4ucGFyZW50LmlzQm9uZT8obi5tYXRyaXguY29weShuLnBhcmVudC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksbi5tYXRyaXgubXVsdGlwbHkobi5tYXRyaXhXb3JsZCkpOm4ubWF0cml4LmNvcHkobi5tYXRyaXhXb3JsZCksbi5tYXRyaXguZGVjb21wb3NlKG4ucG9zaXRpb24sbi5xdWF0ZXJuaW9uLG4uc2NhbGUpKX19dXBkYXRlKCl7bGV0IHQ9dGhpcy5ib25lcyxyPXRoaXMuYm9uZUludmVyc2VzLG49dGhpcy5ib25lTWF0cmljZXMsaT10aGlzLmJvbmVUZXh0dXJlO2ZvcihsZXQgbz0wLGE9dC5sZW5ndGg7bzxhO28rKyl7bGV0IHM9dFtvXT90W29dLm1hdHJpeFdvcmxkOkVncjskdWUubXVsdGlwbHlNYXRyaWNlcyhzLHJbb10pLCR1ZS50b0FycmF5KG4sbyoxNil9aSE9PW51bGwmJihpLm5lZWRzVXBkYXRlPSEwKX1jbG9uZSgpe3JldHVybiBuZXcgc00odGhpcy5ib25lcyx0aGlzLmJvbmVJbnZlcnNlcyl9Y29tcHV0ZUJvbmVUZXh0dXJlKCl7bGV0IHQ9TWF0aC5zcXJ0KHRoaXMuYm9uZXMubGVuZ3RoKjQpO3Q9QWZlKHQpLHQ9TWF0aC5tYXgodCw0KTtsZXQgcj1uZXcgRmxvYXQzMkFycmF5KHQqdCo0KTtyLnNldCh0aGlzLmJvbmVNYXRyaWNlcyk7bGV0IG49bmV3IEpkKHIsdCx0LEpvLGpkKTtyZXR1cm4gbi5uZWVkc1VwZGF0ZT0hMCx0aGlzLmJvbmVNYXRyaWNlcz1yLHRoaXMuYm9uZVRleHR1cmU9bix0aGlzLmJvbmVUZXh0dXJlU2l6ZT10LHRoaXN9Z2V0Qm9uZUJ5TmFtZSh0KXtmb3IobGV0IHI9MCxuPXRoaXMuYm9uZXMubGVuZ3RoO3I8bjtyKyspe2xldCBpPXRoaXMuYm9uZXNbcl07aWYoaS5uYW1lPT09dClyZXR1cm4gaX19ZGlzcG9zZSgpe3RoaXMuYm9uZVRleHR1cmUhPT1udWxsJiYodGhpcy5ib25lVGV4dHVyZS5kaXNwb3NlKCksdGhpcy5ib25lVGV4dHVyZT1udWxsKX1mcm9tSlNPTih0LHIpe3RoaXMudXVpZD10LnV1aWQ7Zm9yKGxldCBuPTAsaT10LmJvbmVzLmxlbmd0aDtuPGk7bisrKXtsZXQgbz10LmJvbmVzW25dLGE9cltvXTthPT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogTm8gYm9uZSBmb3VuZCB3aXRoIFVVSUQ6IixvKSxhPW5ldyBhTSksdGhpcy5ib25lcy5wdXNoKGEpLHRoaXMuYm9uZUludmVyc2VzLnB1c2gobmV3IE1lKCkuZnJvbUFycmF5KHQuYm9uZUludmVyc2VzW25dKSl9cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXN9dG9KU09OKCl7bGV0IHQ9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJTa2VsZXRvbiIsZ2VuZXJhdG9yOiJTa2VsZXRvbi50b0pTT04ifSxib25lczpbXSxib25lSW52ZXJzZXM6W119O3QudXVpZD10aGlzLnV1aWQ7bGV0IHI9dGhpcy5ib25lcyxuPXRoaXMuYm9uZUludmVyc2VzO2ZvcihsZXQgaT0wLG89ci5sZW5ndGg7aTxvO2krKyl7bGV0IGE9cltpXTt0LmJvbmVzLnB1c2goYS51dWlkKTtsZXQgcz1uW2ldO3QuYm9uZUludmVyc2VzLnB1c2gocy50b0FycmF5KCkpfXJldHVybiB0fX0scm09Y2xhc3MgZXh0ZW5kcyBKZXtjb25zdHJ1Y3Rvcih0LHIsbixpPTEpe3R5cGVvZiBuPT0ibnVtYmVyIiYmKGk9bixuPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKSxzdXBlcih0LHIsbiksdGhpcy5tZXNoUGVyQXR0cmlidXRlPWl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9dC5tZXNoUGVyQXR0cmlidXRlLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsdC5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMCx0fX07cm0ucHJvdG90eXBlLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwO3ZhciBLdWU9bmV3IE1lLFp1ZT1uZXcgTWUsa1Y9W10sRFA9bmV3IGVpLGU2PWNsYXNzIGV4dGVuZHMgZWl7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKHQsciksdGhpcy5pbnN0YW5jZU1hdHJpeD1uZXcgcm0obmV3IEZsb2F0MzJBcnJheShuKjE2KSwxNiksdGhpcy5pbnN0YW5jZUNvbG9yPW51bGwsdGhpcy5jb3VudD1uLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuaW5zdGFuY2VNYXRyaXguY29weSh0Lmluc3RhbmNlTWF0cml4KSx0Lmluc3RhbmNlQ29sb3IhPT1udWxsJiYodGhpcy5pbnN0YW5jZUNvbG9yPXQuaW5zdGFuY2VDb2xvci5jbG9uZSgpKSx0aGlzLmNvdW50PXQuY291bnQsdGhpc31nZXRDb2xvckF0KHQscil7ci5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LHQqMyl9Z2V0TWF0cml4QXQodCxyKXtyLmZyb21BcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmFycmF5LHQqMTYpfXJheWNhc3QodCxyKXtsZXQgbj10aGlzLm1hdHJpeFdvcmxkLGk9dGhpcy5jb3VudDtpZihEUC5nZW9tZXRyeT10aGlzLmdlb21ldHJ5LERQLm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsRFAubWF0ZXJpYWwhPT12b2lkIDApZm9yKGxldCBvPTA7bzxpO28rKyl7dGhpcy5nZXRNYXRyaXhBdChvLEt1ZSksWnVlLm11bHRpcGx5TWF0cmljZXMobixLdWUpLERQLm1hdHJpeFdvcmxkPVp1ZSxEUC5yYXljYXN0KHQsa1YpO2ZvcihsZXQgYT0wLHM9a1YubGVuZ3RoO2E8czthKyspe2xldCBsPWtWW2FdO2wuaW5zdGFuY2VJZD1vLGwub2JqZWN0PXRoaXMsci5wdXNoKGwpfWtWLmxlbmd0aD0wfX1zZXRDb2xvckF0KHQscil7dGhpcy5pbnN0YW5jZUNvbG9yPT09bnVsbCYmKHRoaXMuaW5zdGFuY2VDb2xvcj1uZXcgcm0obmV3IEZsb2F0MzJBcnJheSh0aGlzLmluc3RhbmNlTWF0cml4LmNvdW50KjMpLDMpKSxyLnRvQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LHQqMyl9c2V0TWF0cml4QXQodCxyKXtyLnRvQXJyYXkodGhpcy5pbnN0YW5jZU1hdHJpeC5hcnJheSx0KjE2KX11cGRhdGVNb3JwaFRhcmdldHMoKXt9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19O2U2LnByb3RvdHlwZS5pc0luc3RhbmNlZE1lc2g9ITA7dmFyIHFpPWNsYXNzIGV4dGVuZHMgVWl7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBuZSgxNjc3NzIxNSksdGhpcy5saW5ld2lkdGg9MSx0aGlzLmxpbmVjYXA9InJvdW5kIix0aGlzLmxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5saW5ld2lkdGg9dC5saW5ld2lkdGgsdGhpcy5saW5lY2FwPXQubGluZWNhcCx0aGlzLmxpbmVqb2luPXQubGluZWpvaW4sdGhpc319O3FpLnByb3RvdHlwZS5pc0xpbmVCYXNpY01hdGVyaWFsPSEwO3ZhciBKdWU9bmV3IGosUXVlPW5ldyBqLHRoZT1uZXcgTWUsZHV0PW5ldyBaZixSVj1uZXcgS2YsbGg9Y2xhc3MgZXh0ZW5kcyBvcntjb25zdHJ1Y3Rvcih0PW5ldyBQZSxyPW5ldyBxaSl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmUiLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPXIsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc31jb21wdXRlTGluZURpc3RhbmNlcygpe2xldCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KWlmKHQuaW5kZXg9PT1udWxsKXtsZXQgcj10LmF0dHJpYnV0ZXMucG9zaXRpb24sbj1bMF07Zm9yKGxldCBpPTEsbz1yLmNvdW50O2k8bztpKyspSnVlLmZyb21CdWZmZXJBdHRyaWJ1dGUocixpLTEpLFF1ZS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsaSksbltpXT1uW2ktMV0sbltpXSs9SnVlLmRpc3RhbmNlVG8oUXVlKTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgeGUobiwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKTtyZXR1cm4gdGhpc31yYXljYXN0KHQscil7bGV0IG49dGhpcy5nZW9tZXRyeSxpPXRoaXMubWF0cml4V29ybGQsbz10LnBhcmFtcy5MaW5lLnRocmVzaG9sZCxhPW4uZHJhd1JhbmdlO2lmKG4uYm91bmRpbmdTcGhlcmU9PT1udWxsJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLFJWLmNvcHkobi5ib3VuZGluZ1NwaGVyZSksUlYuYXBwbHlNYXRyaXg0KGkpLFJWLnJhZGl1cys9byx0LnJheS5pbnRlcnNlY3RzU3BoZXJlKFJWKT09PSExKXJldHVybjt0aGUuY29weShpKS5pbnZlcnQoKSxkdXQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KHRoZSk7bGV0IHM9by8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxsPXMqcyxjPW5ldyBqLHU9bmV3IGosaD1uZXcgaixmPW5ldyBqLHA9dGhpcy5pc0xpbmVTZWdtZW50cz8yOjE7aWYobi5pc0J1ZmZlckdlb21ldHJ5KXtsZXQgZD1uLmluZGV4LF89bi5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKGQhPT1udWxsKXtsZXQgeT1NYXRoLm1heCgwLGEuc3RhcnQpLHg9TWF0aC5taW4oZC5jb3VudCxhLnN0YXJ0K2EuY291bnQpO2ZvcihsZXQgYj15LFM9eC0xO2I8UztiKz1wKXtsZXQgQz1kLmdldFgoYiksUD1kLmdldFgoYisxKTtpZihjLmZyb21CdWZmZXJBdHRyaWJ1dGUoXyxDKSx1LmZyb21CdWZmZXJBdHRyaWJ1dGUoXyxQKSxkdXQuZGlzdGFuY2VTcVRvU2VnbWVudChjLHUsZixoKT5sKWNvbnRpbnVlO2YuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2xldCBPPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKGYpO088dC5uZWFyfHxPPnQuZmFyfHxyLnB1c2goe2Rpc3RhbmNlOk8scG9pbnQ6aC5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxpbmRleDpiLGZhY2U6bnVsbCxmYWNlSW5kZXg6bnVsbCxvYmplY3Q6dGhpc30pfX1lbHNle2xldCB5PU1hdGgubWF4KDAsYS5zdGFydCkseD1NYXRoLm1pbihfLmNvdW50LGEuc3RhcnQrYS5jb3VudCk7Zm9yKGxldCBiPXksUz14LTE7YjxTO2IrPXApe2lmKGMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShfLGIpLHUuZnJvbUJ1ZmZlckF0dHJpYnV0ZShfLGIrMSksZHV0LmRpc3RhbmNlU3FUb1NlZ21lbnQoYyx1LGYsaCk+bCljb250aW51ZTtmLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKTtsZXQgUD10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhmKTtQPHQubmVhcnx8UD50LmZhcnx8ci5wdXNoKHtkaXN0YW5jZTpQLHBvaW50OmguY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6YixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19fWVsc2Ugbi5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2xldCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtsZXQgcj10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKHIpO2lmKG4ubGVuZ3RoPjApe2xldCBpPXJbblswXV07aWYoaSE9PXZvaWQgMCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBvPTAsYT1pLmxlbmd0aDtvPGE7bysrKXtsZXQgcz1pW29dLm5hbWV8fFN0cmluZyhvKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W3NdPW99fX19ZWxzZXtsZXQgcj10Lm1vcnBoVGFyZ2V0cztyIT09dm9pZCAwJiZyLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19O2xoLnByb3RvdHlwZS5pc0xpbmU9ITA7dmFyIGVoZT1uZXcgaixyaGU9bmV3IGosQ2E9Y2xhc3MgZXh0ZW5kcyBsaHtjb25zdHJ1Y3Rvcih0LHIpe3N1cGVyKHQsciksdGhpcy50eXBlPSJMaW5lU2VnbWVudHMifWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYodC5pbmRleD09PW51bGwpe2xldCByPXQuYXR0cmlidXRlcy5wb3NpdGlvbixuPVtdO2ZvcihsZXQgaT0wLG89ci5jb3VudDtpPG87aSs9MillaGUuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGkpLHJoZS5mcm9tQnVmZmVyQXR0cmlidXRlKHIsaSsxKSxuW2ldPWk9PT0wPzA6bltpLTFdLG5baSsxXT1uW2ldK2VoZS5kaXN0YW5jZVRvKHJoZSk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IHhlKG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfX07Q2EucHJvdG90eXBlLmlzTGluZVNlZ21lbnRzPSEwO3ZhciByNj1jbGFzcyBleHRlbmRzIGxoe2NvbnN0cnVjdG9yKHQscil7c3VwZXIodCxyKSx0aGlzLnR5cGU9IkxpbmVMb29wIn19O3I2LnByb3RvdHlwZS5pc0xpbmVMb29wPSEwO3ZhciBubT1jbGFzcyBleHRlbmRzIFVpe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQb2ludHNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgbmUoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fTtubS5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDt2YXIgbmhlPW5ldyBNZSxlaHQ9bmV3IFpmLE5WPW5ldyBLZixEVj1uZXcgaixpbT1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKHQ9bmV3IFBlLHI9bmV3IG5tKXtzdXBlcigpLHRoaXMudHlwZT0iUG9pbnRzIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1yLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9cmF5Y2FzdCh0LHIpe2xldCBuPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdHJpeFdvcmxkLG89dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxhPW4uZHJhd1JhbmdlO2lmKG4uYm91bmRpbmdTcGhlcmU9PT1udWxsJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLE5WLmNvcHkobi5ib3VuZGluZ1NwaGVyZSksTlYuYXBwbHlNYXRyaXg0KGkpLE5WLnJhZGl1cys9byx0LnJheS5pbnRlcnNlY3RzU3BoZXJlKE5WKT09PSExKXJldHVybjtuaGUuY29weShpKS5pbnZlcnQoKSxlaHQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KG5oZSk7bGV0IHM9by8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxsPXMqcztpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2xldCBjPW4uaW5kZXgsaD1uLmF0dHJpYnV0ZXMucG9zaXRpb247aWYoYyE9PW51bGwpe2xldCBmPU1hdGgubWF4KDAsYS5zdGFydCkscD1NYXRoLm1pbihjLmNvdW50LGEuc3RhcnQrYS5jb3VudCk7Zm9yKGxldCBkPWYsZz1wO2Q8ZztkKyspe2xldCBfPWMuZ2V0WChkKTtEVi5mcm9tQnVmZmVyQXR0cmlidXRlKGgsXyksaWhlKERWLF8sbCxpLHQscix0aGlzKX19ZWxzZXtsZXQgZj1NYXRoLm1heCgwLGEuc3RhcnQpLHA9TWF0aC5taW4oaC5jb3VudCxhLnN0YXJ0K2EuY291bnQpO2ZvcihsZXQgZD1mLGc9cDtkPGc7ZCsrKURWLmZyb21CdWZmZXJBdHRyaWJ1dGUoaCxkKSxpaGUoRFYsZCxsLGksdCxyLHRoaXMpfX1lbHNlIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlBvaW50cy5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX11cGRhdGVNb3JwaFRhcmdldHMoKXtsZXQgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7bGV0IHI9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhyKTtpZihuLmxlbmd0aD4wKXtsZXQgaT1yW25bMF1dO2lmKGkhPT12b2lkIDApe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgbz0wLGE9aS5sZW5ndGg7bzxhO28rKyl7bGV0IHM9aVtvXS5uYW1lfHxTdHJpbmcobyk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtzXT1vfX19fWVsc2V7bGV0IHI9dC5tb3JwaFRhcmdldHM7ciE9PXZvaWQgMCYmci5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19O2ltLnByb3RvdHlwZS5pc1BvaW50cz0hMDtmdW5jdGlvbiBpaGUoZSx0LHIsbixpLG8sYSl7bGV0IHM9ZWh0LmRpc3RhbmNlU3FUb1BvaW50KGUpO2lmKHM8cil7bGV0IGw9bmV3IGo7ZWh0LmNsb3Nlc3RQb2ludFRvUG9pbnQoZSxsKSxsLmFwcGx5TWF0cml4NChuKTtsZXQgYz1pLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhsKTtpZihjPGkubmVhcnx8Yz5pLmZhcilyZXR1cm47by5wdXNoKHtkaXN0YW5jZTpjLGRpc3RhbmNlVG9SYXk6TWF0aC5zcXJ0KHMpLHBvaW50OmwsaW5kZXg6dCxmYWNlOm51bGwsb2JqZWN0OmF9KX19dmFyIG1VPWNsYXNzIGV4dGVuZHMgeGl7Y29uc3RydWN0b3IodCxyLG4saSxvLGEscyxsLGMpe3N1cGVyKHQscixuLGksbyxhLHMsbCxjKSx0aGlzLm1pbkZpbHRlcj1hIT09dm9pZCAwP2E6b2ksdGhpcy5tYWdGaWx0ZXI9byE9PXZvaWQgMD9vOm9pLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExO2xldCB1PXRoaXM7ZnVuY3Rpb24gaCgpe3UubmVlZHNVcGRhdGU9ITAsdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGgpfSJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhoKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmltYWdlKS5jb3B5KHRoaXMpfXVwZGF0ZSgpe2xldCB0PXRoaXMuaW1hZ2U7InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdD09PSExJiZ0LnJlYWR5U3RhdGU+PXQuSEFWRV9DVVJSRU5UX0RBVEEmJih0aGlzLm5lZWRzVXBkYXRlPSEwKX19O21VLnByb3RvdHlwZS5pc1ZpZGVvVGV4dHVyZT0hMDt2YXIgZ1U9Y2xhc3MgZXh0ZW5kcyB4aXtjb25zdHJ1Y3Rvcih0LHIsbil7c3VwZXIoe3dpZHRoOnQsaGVpZ2h0OnJ9KSx0aGlzLmZvcm1hdD1uLHRoaXMubWFnRmlsdGVyPUxpLHRoaXMubWluRmlsdGVyPUxpLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMubmVlZHNVcGRhdGU9ITB9fTtnVS5wcm90b3R5cGUuaXNGcmFtZWJ1ZmZlclRleHR1cmU9ITA7dmFyIG42PWNsYXNzIGV4dGVuZHMgeGl7Y29uc3RydWN0b3IodCxyLG4saSxvLGEscyxsLGMsdSxoLGYpe3N1cGVyKG51bGwsYSxzLGwsYyx1LGksbyxoLGYpLHRoaXMuaW1hZ2U9e3dpZHRoOnIsaGVpZ2h0Om59LHRoaXMubWlwbWFwcz10LHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9fTtuNi5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMDt2YXIgX1U9Y2xhc3MgZXh0ZW5kcyB4aXtjb25zdHJ1Y3Rvcih0LHIsbixpLG8sYSxzLGwsYyl7c3VwZXIodCxyLG4saSxvLGEscyxsLGMpLHRoaXMubmVlZHNVcGRhdGU9ITB9fTtfVS5wcm90b3R5cGUuaXNDYW52YXNUZXh0dXJlPSEwO3ZhciBGMT1jbGFzcyBleHRlbmRzIFBle2NvbnN0cnVjdG9yKHQ9MSxyPTgsbj0wLGk9TWF0aC5QSSoyKXtzdXBlcigpLHRoaXMudHlwZT0iQ2lyY2xlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsc2VnbWVudHM6cix0aGV0YVN0YXJ0Om4sdGhldGFMZW5ndGg6aX0scj1NYXRoLm1heCgzLHIpO2xldCBvPVtdLGE9W10scz1bXSxsPVtdLGM9bmV3IGosdT1uZXcgTHQ7YS5wdXNoKDAsMCwwKSxzLnB1c2goMCwwLDEpLGwucHVzaCguNSwuNSk7Zm9yKGxldCBoPTAsZj0zO2g8PXI7aCsrLGYrPTMpe2xldCBwPW4raC9yKmk7Yy54PXQqTWF0aC5jb3MocCksYy55PXQqTWF0aC5zaW4ocCksYS5wdXNoKGMueCxjLnksYy56KSxzLnB1c2goMCwwLDEpLHUueD0oYVtmXS90KzEpLzIsdS55PShhW2YrMV0vdCsxKS8yLGwucHVzaCh1LngsdS55KX1mb3IobGV0IGg9MTtoPD1yO2grKylvLnB1c2goaCxoKzEsMCk7dGhpcy5zZXRJbmRleChvKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShhLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgeGUocywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgeGUobCwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgRjEodC5yYWRpdXMsdC5zZWdtZW50cyx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fSxvbT1jbGFzcyBleHRlbmRzIFBle2NvbnN0cnVjdG9yKHQ9MSxyPTEsbj0xLGk9OCxvPTEsYT0hMSxzPTAsbD1NYXRoLlBJKjIpe3N1cGVyKCksdGhpcy50eXBlPSJDeWxpbmRlckdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1c1RvcDp0LHJhZGl1c0JvdHRvbTpyLGhlaWdodDpuLHJhZGlhbFNlZ21lbnRzOmksaGVpZ2h0U2VnbWVudHM6byxvcGVuRW5kZWQ6YSx0aGV0YVN0YXJ0OnMsdGhldGFMZW5ndGg6bH07bGV0IGM9dGhpcztpPU1hdGguZmxvb3IoaSksbz1NYXRoLmZsb29yKG8pO2xldCB1PVtdLGg9W10sZj1bXSxwPVtdLGQ9MCxnPVtdLF89bi8yLHk9MDt4KCksYT09PSExJiYodD4wJiZiKCEwKSxyPjAmJmIoITEpKSx0aGlzLnNldEluZGV4KHUpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKGgsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyB4ZShmLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyB4ZShwLDIpKTtmdW5jdGlvbiB4KCl7bGV0IFM9bmV3IGosQz1uZXcgaixQPTAsaz0oci10KS9uO2ZvcihsZXQgTz0wO088PW87TysrKXtsZXQgRD1bXSxCPU8vbyxJPUIqKHItdCkrdDtmb3IobGV0IEw9MDtMPD1pO0wrKyl7bGV0IFI9TC9pLEY9UipsK3Msej1NYXRoLnNpbihGKSxVPU1hdGguY29zKEYpO0MueD1JKnosQy55PS1CKm4rXyxDLno9SSpVLGgucHVzaChDLngsQy55LEMueiksUy5zZXQoeixrLFUpLm5vcm1hbGl6ZSgpLGYucHVzaChTLngsUy55LFMueikscC5wdXNoKFIsMS1CKSxELnB1c2goZCsrKX1nLnB1c2goRCl9Zm9yKGxldCBPPTA7TzxpO08rKylmb3IobGV0IEQ9MDtEPG87RCsrKXtsZXQgQj1nW0RdW09dLEk9Z1tEKzFdW09dLEw9Z1tEKzFdW08rMV0sUj1nW0RdW08rMV07dS5wdXNoKEIsSSxSKSx1LnB1c2goSSxMLFIpLFArPTZ9Yy5hZGRHcm91cCh5LFAsMCkseSs9UH1mdW5jdGlvbiBiKFMpe2xldCBDPWQsUD1uZXcgTHQsaz1uZXcgaixPPTAsRD1TPT09ITA/dDpyLEI9Uz09PSEwPzE6LTE7Zm9yKGxldCBMPTE7TDw9aTtMKyspaC5wdXNoKDAsXypCLDApLGYucHVzaCgwLEIsMCkscC5wdXNoKC41LC41KSxkKys7bGV0IEk9ZDtmb3IobGV0IEw9MDtMPD1pO0wrKyl7bGV0IEY9TC9pKmwrcyx6PU1hdGguY29zKEYpLFU9TWF0aC5zaW4oRik7ay54PUQqVSxrLnk9XypCLGsuej1EKnosaC5wdXNoKGsueCxrLnksay56KSxmLnB1c2goMCxCLDApLFAueD16Ki41Ky41LFAueT1VKi41KkIrLjUscC5wdXNoKFAueCxQLnkpLGQrK31mb3IobGV0IEw9MDtMPGk7TCsrKXtsZXQgUj1DK0wsRj1JK0w7Uz09PSEwP3UucHVzaChGLEYrMSxSKTp1LnB1c2goRisxLEYsUiksTys9M31jLmFkZEdyb3VwKHksTyxTPT09ITA/MToyKSx5Kz1PfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBvbSh0LnJhZGl1c1RvcCx0LnJhZGl1c0JvdHRvbSx0LmhlaWdodCx0LnJhZGlhbFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5vcGVuRW5kZWQsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX0sQjE9Y2xhc3MgZXh0ZW5kcyBvbXtjb25zdHJ1Y3Rvcih0PTEscj0xLG49OCxpPTEsbz0hMSxhPTAscz1NYXRoLlBJKjIpe3N1cGVyKDAsdCxyLG4saSxvLGEscyksdGhpcy50eXBlPSJDb25lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsaGVpZ2h0OnIscmFkaWFsU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czppLG9wZW5FbmRlZDpvLHRoZXRhU3RhcnQ6YSx0aGV0YUxlbmd0aDpzfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBCMSh0LnJhZGl1cyx0LmhlaWdodCx0LnJhZGlhbFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5vcGVuRW5kZWQsdC50aGV0YVN0YXJ0LHQudGhldGFMZW5ndGgpfX0sY2g9Y2xhc3MgZXh0ZW5kcyBQZXtjb25zdHJ1Y3Rvcih0PVtdLHI9W10sbj0xLGk9MCl7c3VwZXIoKSx0aGlzLnR5cGU9IlBvbHloZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt2ZXJ0aWNlczp0LGluZGljZXM6cixyYWRpdXM6bixkZXRhaWw6aX07bGV0IG89W10sYT1bXTtzKGkpLGMobiksdSgpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyB4ZShvLnNsaWNlKCksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHhlKGEsMikpLGk9PT0wP3RoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTp0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKTtmdW5jdGlvbiBzKHgpe2xldCBiPW5ldyBqLFM9bmV3IGosQz1uZXcgajtmb3IobGV0IFA9MDtQPHIubGVuZ3RoO1ArPTMpcChyW1ArMF0sYikscChyW1ArMV0sUykscChyW1ArMl0sQyksbChiLFMsQyx4KX1mdW5jdGlvbiBsKHgsYixTLEMpe2xldCBQPUMrMSxrPVtdO2ZvcihsZXQgTz0wO088PVA7TysrKXtrW09dPVtdO2xldCBEPXguY2xvbmUoKS5sZXJwKFMsTy9QKSxCPWIuY2xvbmUoKS5sZXJwKFMsTy9QKSxJPVAtTztmb3IobGV0IEw9MDtMPD1JO0wrKylMPT09MCYmTz09PVA/a1tPXVtMXT1EOmtbT11bTF09RC5jbG9uZSgpLmxlcnAoQixML0kpfWZvcihsZXQgTz0wO088UDtPKyspZm9yKGxldCBEPTA7RDwyKihQLU8pLTE7RCsrKXtsZXQgQj1NYXRoLmZsb29yKEQvMik7RCUyPT09MD8oZihrW09dW0IrMV0pLGYoa1tPKzFdW0JdKSxmKGtbT11bQl0pKTooZihrW09dW0IrMV0pLGYoa1tPKzFdW0IrMV0pLGYoa1tPKzFdW0JdKSl9fWZ1bmN0aW9uIGMoeCl7bGV0IGI9bmV3IGo7Zm9yKGxldCBTPTA7UzxvLmxlbmd0aDtTKz0zKWIueD1vW1MrMF0sYi55PW9bUysxXSxiLno9b1tTKzJdLGIubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIoeCksb1tTKzBdPWIueCxvW1MrMV09Yi55LG9bUysyXT1iLnp9ZnVuY3Rpb24gdSgpe2xldCB4PW5ldyBqO2ZvcihsZXQgYj0wO2I8by5sZW5ndGg7Yis9Myl7eC54PW9bYiswXSx4Lnk9b1tiKzFdLHguej1vW2IrMl07bGV0IFM9Xyh4KS8yL01hdGguUEkrLjUsQz15KHgpL01hdGguUEkrLjU7YS5wdXNoKFMsMS1DKX1kKCksaCgpfWZ1bmN0aW9uIGgoKXtmb3IobGV0IHg9MDt4PGEubGVuZ3RoO3grPTYpe2xldCBiPWFbeCswXSxTPWFbeCsyXSxDPWFbeCs0XSxQPU1hdGgubWF4KGIsUyxDKSxrPU1hdGgubWluKGIsUyxDKTtQPi45JiZrPC4xJiYoYjwuMiYmKGFbeCswXSs9MSksUzwuMiYmKGFbeCsyXSs9MSksQzwuMiYmKGFbeCs0XSs9MSkpfX1mdW5jdGlvbiBmKHgpe28ucHVzaCh4LngseC55LHgueil9ZnVuY3Rpb24gcCh4LGIpe2xldCBTPXgqMztiLng9dFtTKzBdLGIueT10W1MrMV0sYi56PXRbUysyXX1mdW5jdGlvbiBkKCl7bGV0IHg9bmV3IGosYj1uZXcgaixTPW5ldyBqLEM9bmV3IGosUD1uZXcgTHQsaz1uZXcgTHQsTz1uZXcgTHQ7Zm9yKGxldCBEPTAsQj0wO0Q8by5sZW5ndGg7RCs9OSxCKz02KXt4LnNldChvW0QrMF0sb1tEKzFdLG9bRCsyXSksYi5zZXQob1tEKzNdLG9bRCs0XSxvW0QrNV0pLFMuc2V0KG9bRCs2XSxvW0QrN10sb1tEKzhdKSxQLnNldChhW0IrMF0sYVtCKzFdKSxrLnNldChhW0IrMl0sYVtCKzNdKSxPLnNldChhW0IrNF0sYVtCKzVdKSxDLmNvcHkoeCkuYWRkKGIpLmFkZChTKS5kaXZpZGVTY2FsYXIoMyk7bGV0IEk9XyhDKTtnKFAsQiswLHgsSSksZyhrLEIrMixiLEkpLGcoTyxCKzQsUyxJKX19ZnVuY3Rpb24gZyh4LGIsUyxDKXtDPDAmJngueD09PTEmJihhW2JdPXgueC0xKSxTLng9PT0wJiZTLno9PT0wJiYoYVtiXT1DLzIvTWF0aC5QSSsuNSl9ZnVuY3Rpb24gXyh4KXtyZXR1cm4gTWF0aC5hdGFuMih4LnosLXgueCl9ZnVuY3Rpb24geSh4KXtyZXR1cm4gTWF0aC5hdGFuMigteC55LE1hdGguc3FydCh4LngqeC54K3gueip4LnopKX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgY2godC52ZXJ0aWNlcyx0LmluZGljZXMsdC5yYWRpdXMsdC5kZXRhaWxzKX19LEgxPWNsYXNzIGV4dGVuZHMgY2h7Y29uc3RydWN0b3IodD0xLHI9MCl7bGV0IG49KDErTWF0aC5zcXJ0KDUpKS8yLGk9MS9uLG89Wy0xLC0xLC0xLC0xLC0xLDEsLTEsMSwtMSwtMSwxLDEsMSwtMSwtMSwxLC0xLDEsMSwxLC0xLDEsMSwxLDAsLWksLW4sMCwtaSxuLDAsaSwtbiwwLGksbiwtaSwtbiwwLC1pLG4sMCxpLC1uLDAsaSxuLDAsLW4sMCwtaSxuLDAsLWksLW4sMCxpLG4sMCxpXSxhPVszLDExLDcsMyw3LDE1LDMsMTUsMTMsNywxOSwxNyw3LDE3LDYsNyw2LDE1LDE3LDQsOCwxNyw4LDEwLDE3LDEwLDYsOCwwLDE2LDgsMTYsMiw4LDIsMTAsMCwxMiwxLDAsMSwxOCwwLDE4LDE2LDYsMTAsMiw2LDIsMTMsNiwxMywxNSwyLDE2LDE4LDIsMTgsMywyLDMsMTMsMTgsMSw5LDE4LDksMTEsMTgsMTEsMyw0LDE0LDEyLDQsMTIsMCw0LDAsOCwxMSw5LDUsMTEsNSwxOSwxMSwxOSw3LDE5LDUsMTQsMTksMTQsNCwxOSw0LDE3LDEsMTIsMTQsMSwxNCw1LDEsNSw5XTtzdXBlcihvLGEsdCxyKSx0aGlzLnR5cGU9IkRvZGVjYWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGRldGFpbDpyfX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBIMSh0LnJhZGl1cyx0LmRldGFpbCl9fSxPVj1uZXcgaix6Vj1uZXcgaixtdXQ9bmV3IGosRlY9bmV3IGFpLGk2PWNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodD1udWxsLHI9MSl7aWYoc3VwZXIoKSx0aGlzLnR5cGU9IkVkZ2VzR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17Z2VvbWV0cnk6dCx0aHJlc2hvbGRBbmdsZTpyfSx0IT09bnVsbCl7bGV0IGk9TWF0aC5wb3coMTAsNCksbz1NYXRoLmNvcyhQMSpyKSxhPXQuZ2V0SW5kZXgoKSxzPXQuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLGw9YT9hLmNvdW50OnMuY291bnQsYz1bMCwwLDBdLHU9WyJhIiwiYiIsImMiXSxoPW5ldyBBcnJheSgzKSxmPXt9LHA9W107Zm9yKGxldCBkPTA7ZDxsO2QrPTMpe2E/KGNbMF09YS5nZXRYKGQpLGNbMV09YS5nZXRYKGQrMSksY1syXT1hLmdldFgoZCsyKSk6KGNbMF09ZCxjWzFdPWQrMSxjWzJdPWQrMik7bGV0e2E6ZyxiOl8sYzp5fT1GVjtpZihnLmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjWzBdKSxfLmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjWzFdKSx5LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjWzJdKSxGVi5nZXROb3JtYWwobXV0KSxoWzBdPWAke01hdGgucm91bmQoZy54KmkpfSwke01hdGgucm91bmQoZy55KmkpfSwke01hdGgucm91bmQoZy56KmkpfWAsaFsxXT1gJHtNYXRoLnJvdW5kKF8ueCppKX0sJHtNYXRoLnJvdW5kKF8ueSppKX0sJHtNYXRoLnJvdW5kKF8ueippKX1gLGhbMl09YCR7TWF0aC5yb3VuZCh5LngqaSl9LCR7TWF0aC5yb3VuZCh5LnkqaSl9LCR7TWF0aC5yb3VuZCh5LnoqaSl9YCwhKGhbMF09PT1oWzFdfHxoWzFdPT09aFsyXXx8aFsyXT09PWhbMF0pKWZvcihsZXQgeD0wO3g8Mzt4Kyspe2xldCBiPSh4KzEpJTMsUz1oW3hdLEM9aFtiXSxQPUZWW3VbeF1dLGs9RlZbdVtiXV0sTz1gJHtTfV8ke0N9YCxEPWAke0N9XyR7U31gO0QgaW4gZiYmZltEXT8obXV0LmRvdChmW0RdLm5vcm1hbCk8PW8mJihwLnB1c2goUC54LFAueSxQLnopLHAucHVzaChrLngsay55LGsueikpLGZbRF09bnVsbCk6TyBpbiBmfHwoZltPXT17aW5kZXgwOmNbeF0saW5kZXgxOmNbYl0sbm9ybWFsOm11dC5jbG9uZSgpfSl9fWZvcihsZXQgZCBpbiBmKWlmKGZbZF0pe2xldHtpbmRleDA6ZyxpbmRleDE6X309ZltkXTtPVi5mcm9tQnVmZmVyQXR0cmlidXRlKHMsZykselYuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLF8pLHAucHVzaChPVi54LE9WLnksT1YueikscC5wdXNoKHpWLngselYueSx6Vi56KX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShwLDMpKX19fSxocz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iQ3VydmUiLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPTIwMH1nZXRQb2ludCgpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIiksbnVsbH1nZXRQb2ludEF0KHQscil7bGV0IG49dGhpcy5nZXRVdG9UbWFwcGluZyh0KTtyZXR1cm4gdGhpcy5nZXRQb2ludChuLHIpfWdldFBvaW50cyh0PTUpe2xldCByPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKXIucHVzaCh0aGlzLmdldFBvaW50KG4vdCkpO3JldHVybiByfWdldFNwYWNlZFBvaW50cyh0PTUpe2xldCByPVtdO2ZvcihsZXQgbj0wO248PXQ7bisrKXIucHVzaCh0aGlzLmdldFBvaW50QXQobi90KSk7cmV0dXJuIHJ9Z2V0TGVuZ3RoKCl7bGV0IHQ9dGhpcy5nZXRMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19Z2V0TGVuZ3Rocyh0PXRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zKXtpZih0aGlzLmNhY2hlQXJjTGVuZ3RocyYmdGhpcy5jYWNoZUFyY0xlbmd0aHMubGVuZ3RoPT09dCsxJiYhdGhpcy5uZWVkc1VwZGF0ZSlyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM7dGhpcy5uZWVkc1VwZGF0ZT0hMTtsZXQgcj1bXSxuLGk9dGhpcy5nZXRQb2ludCgwKSxvPTA7ci5wdXNoKDApO2ZvcihsZXQgYT0xO2E8PXQ7YSsrKW49dGhpcy5nZXRQb2ludChhL3QpLG8rPW4uZGlzdGFuY2VUbyhpKSxyLnB1c2gobyksaT1uO3JldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Rocz1yLHJ9dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5nZXRMZW5ndGhzKCl9Z2V0VXRvVG1hcHBpbmcodCxyKXtsZXQgbj10aGlzLmdldExlbmd0aHMoKSxpPTAsbz1uLmxlbmd0aCxhO3I/YT1yOmE9dCpuW28tMV07bGV0IHM9MCxsPW8tMSxjO2Zvcig7czw9bDspaWYoaT1NYXRoLmZsb29yKHMrKGwtcykvMiksYz1uW2ldLWEsYzwwKXM9aSsxO2Vsc2UgaWYoYz4wKWw9aS0xO2Vsc2V7bD1pO2JyZWFrfWlmKGk9bCxuW2ldPT09YSlyZXR1cm4gaS8oby0xKTtsZXQgdT1uW2ldLGY9bltpKzFdLXUscD0oYS11KS9mO3JldHVybihpK3ApLyhvLTEpfWdldFRhbmdlbnQodCxyKXtsZXQgaT10LTFlLTQsbz10KzFlLTQ7aTwwJiYoaT0wKSxvPjEmJihvPTEpO2xldCBhPXRoaXMuZ2V0UG9pbnQoaSkscz10aGlzLmdldFBvaW50KG8pLGw9cnx8KGEuaXNWZWN0b3IyP25ldyBMdDpuZXcgaik7cmV0dXJuIGwuY29weShzKS5zdWIoYSkubm9ybWFsaXplKCksbH1nZXRUYW5nZW50QXQodCxyKXtsZXQgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFRhbmdlbnQobixyKX1jb21wdXRlRnJlbmV0RnJhbWVzKHQscil7bGV0IG49bmV3IGosaT1bXSxvPVtdLGE9W10scz1uZXcgaixsPW5ldyBNZTtmb3IobGV0IHA9MDtwPD10O3ArKyl7bGV0IGQ9cC90O2lbcF09dGhpcy5nZXRUYW5nZW50QXQoZCxuZXcgail9b1swXT1uZXcgaixhWzBdPW5ldyBqO2xldCBjPU51bWJlci5NQVhfVkFMVUUsdT1NYXRoLmFicyhpWzBdLngpLGg9TWF0aC5hYnMoaVswXS55KSxmPU1hdGguYWJzKGlbMF0ueik7dTw9YyYmKGM9dSxuLnNldCgxLDAsMCkpLGg8PWMmJihjPWgsbi5zZXQoMCwxLDApKSxmPD1jJiZuLnNldCgwLDAsMSkscy5jcm9zc1ZlY3RvcnMoaVswXSxuKS5ub3JtYWxpemUoKSxvWzBdLmNyb3NzVmVjdG9ycyhpWzBdLHMpLGFbMF0uY3Jvc3NWZWN0b3JzKGlbMF0sb1swXSk7Zm9yKGxldCBwPTE7cDw9dDtwKyspe2lmKG9bcF09b1twLTFdLmNsb25lKCksYVtwXT1hW3AtMV0uY2xvbmUoKSxzLmNyb3NzVmVjdG9ycyhpW3AtMV0saVtwXSkscy5sZW5ndGgoKT5OdW1iZXIuRVBTSUxPTil7cy5ub3JtYWxpemUoKTtsZXQgZD1NYXRoLmFjb3MoS28oaVtwLTFdLmRvdChpW3BdKSwtMSwxKSk7b1twXS5hcHBseU1hdHJpeDQobC5tYWtlUm90YXRpb25BeGlzKHMsZCkpfWFbcF0uY3Jvc3NWZWN0b3JzKGlbcF0sb1twXSl9aWYocj09PSEwKXtsZXQgcD1NYXRoLmFjb3MoS28ob1swXS5kb3Qob1t0XSksLTEsMSkpO3AvPXQsaVswXS5kb3Qocy5jcm9zc1ZlY3RvcnMob1swXSxvW3RdKSk+MCYmKHA9LXApO2ZvcihsZXQgZD0xO2Q8PXQ7ZCsrKW9bZF0uYXBwbHlNYXRyaXg0KGwubWFrZVJvdGF0aW9uQXhpcyhpW2RdLHAqZCkpLGFbZF0uY3Jvc3NWZWN0b3JzKGlbZF0sb1tkXSl9cmV0dXJue3RhbmdlbnRzOmksbm9ybWFsczpvLGJpbm9ybWFsczphfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc310b0pTT04oKXtsZXQgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fWZyb21KU09OKHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfX0sVjE9Y2xhc3MgZXh0ZW5kcyBoc3tjb25zdHJ1Y3Rvcih0PTAscj0wLG49MSxpPTEsbz0wLGE9TWF0aC5QSSoyLHM9ITEsbD0wKXtzdXBlcigpLHRoaXMudHlwZT0iRWxsaXBzZUN1cnZlIix0aGlzLmFYPXQsdGhpcy5hWT1yLHRoaXMueFJhZGl1cz1uLHRoaXMueVJhZGl1cz1pLHRoaXMuYVN0YXJ0QW5nbGU9byx0aGlzLmFFbmRBbmdsZT1hLHRoaXMuYUNsb2Nrd2lzZT1zLHRoaXMuYVJvdGF0aW9uPWx9Z2V0UG9pbnQodCxyKXtsZXQgbj1yfHxuZXcgTHQsaT1NYXRoLlBJKjIsbz10aGlzLmFFbmRBbmdsZS10aGlzLmFTdGFydEFuZ2xlLGE9TWF0aC5hYnMobyk8TnVtYmVyLkVQU0lMT047Zm9yKDtvPDA7KW8rPWk7Zm9yKDtvPmk7KW8tPWk7bzxOdW1iZXIuRVBTSUxPTiYmKGE/bz0wOm89aSksdGhpcy5hQ2xvY2t3aXNlPT09ITAmJiFhJiYobz09PWk/bz0taTpvPW8taSk7bGV0IHM9dGhpcy5hU3RhcnRBbmdsZSt0Km8sbD10aGlzLmFYK3RoaXMueFJhZGl1cypNYXRoLmNvcyhzKSxjPXRoaXMuYVkrdGhpcy55UmFkaXVzKk1hdGguc2luKHMpO2lmKHRoaXMuYVJvdGF0aW9uIT09MCl7bGV0IHU9TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGg9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLGY9bC10aGlzLmFYLHA9Yy10aGlzLmFZO2w9Zip1LXAqaCt0aGlzLmFYLGM9ZipoK3AqdSt0aGlzLmFZfXJldHVybiBuLnNldChsLGMpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5hWD10aGlzLmFYLHQuYVk9dGhpcy5hWSx0LnhSYWRpdXM9dGhpcy54UmFkaXVzLHQueVJhZGl1cz10aGlzLnlSYWRpdXMsdC5hU3RhcnRBbmdsZT10aGlzLmFTdGFydEFuZ2xlLHQuYUVuZEFuZ2xlPXRoaXMuYUVuZEFuZ2xlLHQuYUNsb2Nrd2lzZT10aGlzLmFDbG9ja3dpc2UsdC5hUm90YXRpb249dGhpcy5hUm90YXRpb24sdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc319O1YxLnByb3RvdHlwZS5pc0VsbGlwc2VDdXJ2ZT0hMDt2YXIgbzY9Y2xhc3MgZXh0ZW5kcyBWMXtjb25zdHJ1Y3Rvcih0LHIsbixpLG8sYSl7c3VwZXIodCxyLG4sbixpLG8sYSksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9fTtvNi5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtmdW5jdGlvbiBOaHQoKXtsZXQgZT0wLHQ9MCxyPTAsbj0wO2Z1bmN0aW9uIGkobyxhLHMsbCl7ZT1vLHQ9cyxyPS0zKm8rMyphLTIqcy1sLG49MipvLTIqYStzK2x9cmV0dXJue2luaXRDYXRtdWxsUm9tOmZ1bmN0aW9uKG8sYSxzLGwsYyl7aShhLHMsYyoocy1vKSxjKihsLWEpKX0saW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tOmZ1bmN0aW9uKG8sYSxzLGwsYyx1LGgpe2xldCBmPShhLW8pL2MtKHMtbykvKGMrdSkrKHMtYSkvdSxwPShzLWEpL3UtKGwtYSkvKHUraCkrKGwtcykvaDtmKj11LHAqPXUsaShhLHMsZixwKX0sY2FsYzpmdW5jdGlvbihvKXtsZXQgYT1vKm8scz1hKm87cmV0dXJuIGUrdCpvK3IqYStuKnN9fX12YXIgQlY9bmV3IGosZ3V0PW5ldyBOaHQsX3V0PW5ldyBOaHQseXV0PW5ldyBOaHQsYTY9Y2xhc3MgZXh0ZW5kcyBoc3tjb25zdHJ1Y3Rvcih0PVtdLHI9ITEsbj0iY2VudHJpcGV0YWwiLGk9LjUpe3N1cGVyKCksdGhpcy50eXBlPSJDYXRtdWxsUm9tQ3VydmUzIix0aGlzLnBvaW50cz10LHRoaXMuY2xvc2VkPXIsdGhpcy5jdXJ2ZVR5cGU9bix0aGlzLnRlbnNpb249aX1nZXRQb2ludCh0LHI9bmV3IGope2xldCBuPXIsaT10aGlzLnBvaW50cyxvPWkubGVuZ3RoLGE9KG8tKHRoaXMuY2xvc2VkPzA6MSkpKnQscz1NYXRoLmZsb29yKGEpLGw9YS1zO3RoaXMuY2xvc2VkP3MrPXM+MD8wOihNYXRoLmZsb29yKE1hdGguYWJzKHMpL28pKzEpKm86bD09PTAmJnM9PT1vLTEmJihzPW8tMixsPTEpO2xldCBjLHU7dGhpcy5jbG9zZWR8fHM+MD9jPWlbKHMtMSklb106KEJWLnN1YlZlY3RvcnMoaVswXSxpWzFdKS5hZGQoaVswXSksYz1CVik7bGV0IGg9aVtzJW9dLGY9aVsocysxKSVvXTtpZih0aGlzLmNsb3NlZHx8cysyPG8/dT1pWyhzKzIpJW9dOihCVi5zdWJWZWN0b3JzKGlbby0xXSxpW28tMl0pLmFkZChpW28tMV0pLHU9QlYpLHRoaXMuY3VydmVUeXBlPT09ImNlbnRyaXBldGFsInx8dGhpcy5jdXJ2ZVR5cGU9PT0iY2hvcmRhbCIpe2xldCBwPXRoaXMuY3VydmVUeXBlPT09ImNob3JkYWwiPy41Oi4yNSxkPU1hdGgucG93KGMuZGlzdGFuY2VUb1NxdWFyZWQoaCkscCksZz1NYXRoLnBvdyhoLmRpc3RhbmNlVG9TcXVhcmVkKGYpLHApLF89TWF0aC5wb3coZi5kaXN0YW5jZVRvU3F1YXJlZCh1KSxwKTtnPDFlLTQmJihnPTEpLGQ8MWUtNCYmKGQ9ZyksXzwxZS00JiYoXz1nKSxndXQuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGMueCxoLngsZi54LHUueCxkLGcsXyksX3V0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShjLnksaC55LGYueSx1LnksZCxnLF8pLHl1dC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYy56LGgueixmLnosdS56LGQsZyxfKX1lbHNlIHRoaXMuY3VydmVUeXBlPT09ImNhdG11bGxyb20iJiYoZ3V0LmluaXRDYXRtdWxsUm9tKGMueCxoLngsZi54LHUueCx0aGlzLnRlbnNpb24pLF91dC5pbml0Q2F0bXVsbFJvbShjLnksaC55LGYueSx1LnksdGhpcy50ZW5zaW9uKSx5dXQuaW5pdENhdG11bGxSb20oYy56LGgueixmLnosdS56LHRoaXMudGVuc2lvbikpO3JldHVybiBuLnNldChndXQuY2FsYyhsKSxfdXQuY2FsYyhsKSx5dXQuY2FsYyhsKSksbn1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5wb2ludHM9W107Zm9yKGxldCByPTAsbj10LnBvaW50cy5sZW5ndGg7cjxuO3IrKyl7bGV0IGk9dC5wb2ludHNbcl07dGhpcy5wb2ludHMucHVzaChpLmNsb25lKCkpfXJldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCByPTAsbj10aGlzLnBvaW50cy5sZW5ndGg7cjxuO3IrKyl7bGV0IGk9dGhpcy5wb2ludHNbcl07dC5wb2ludHMucHVzaChpLnRvQXJyYXkoKSl9cmV0dXJuIHQuY2xvc2VkPXRoaXMuY2xvc2VkLHQuY3VydmVUeXBlPXRoaXMuY3VydmVUeXBlLHQudGVuc2lvbj10aGlzLnRlbnNpb24sdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IHI9MCxuPXQucG9pbnRzLmxlbmd0aDtyPG47cisrKXtsZXQgaT10LnBvaW50c1tyXTt0aGlzLnBvaW50cy5wdXNoKG5ldyBqKCkuZnJvbUFycmF5KGkpKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfX07YTYucHJvdG90eXBlLmlzQ2F0bXVsbFJvbUN1cnZlMz0hMDtmdW5jdGlvbiBvaGUoZSx0LHIsbixpKXtsZXQgbz0obi10KSouNSxhPShpLXIpKi41LHM9ZSplLGw9ZSpzO3JldHVybigyKnItMipuK28rYSkqbCsoLTMqciszKm4tMipvLWEpKnMrbyplK3J9ZnVuY3Rpb24gVGdyKGUsdCl7bGV0IHI9MS1lO3JldHVybiByKnIqdH1mdW5jdGlvbiBDZ3IoZSx0KXtyZXR1cm4gMiooMS1lKSplKnR9ZnVuY3Rpb24gQWdyKGUsdCl7cmV0dXJuIGUqZSp0fWZ1bmN0aW9uIFZQKGUsdCxyLG4pe3JldHVybiBUZ3IoZSx0KStDZ3IoZSxyKStBZ3IoZSxuKX1mdW5jdGlvbiBQZ3IoZSx0KXtsZXQgcj0xLWU7cmV0dXJuIHIqcipyKnR9ZnVuY3Rpb24gSWdyKGUsdCl7bGV0IHI9MS1lO3JldHVybiAzKnIqciplKnR9ZnVuY3Rpb24gTGdyKGUsdCl7cmV0dXJuIDMqKDEtZSkqZSplKnR9ZnVuY3Rpb24ga2dyKGUsdCl7cmV0dXJuIGUqZSplKnR9ZnVuY3Rpb24gVVAoZSx0LHIsbixpKXtyZXR1cm4gUGdyKGUsdCkrSWdyKGUscikrTGdyKGUsbikra2dyKGUsaSl9dmFyIGxNPWNsYXNzIGV4dGVuZHMgaHN7Y29uc3RydWN0b3IodD1uZXcgTHQscj1uZXcgTHQsbj1uZXcgTHQsaT1uZXcgTHQpe3N1cGVyKCksdGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1yLHRoaXMudjI9bix0aGlzLnYzPWl9Z2V0UG9pbnQodCxyPW5ldyBMdCl7bGV0IG49cixpPXRoaXMudjAsbz10aGlzLnYxLGE9dGhpcy52MixzPXRoaXMudjM7cmV0dXJuIG4uc2V0KFVQKHQsaS54LG8ueCxhLngscy54KSxVUCh0LGkueSxvLnksYS55LHMueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX07bE0ucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMDt2YXIgczY9Y2xhc3MgZXh0ZW5kcyBoc3tjb25zdHJ1Y3Rvcih0PW5ldyBqLHI9bmV3IGosbj1uZXcgaixpPW5ldyBqKXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPXIsdGhpcy52Mj1uLHRoaXMudjM9aX1nZXRQb2ludCh0LHI9bmV3IGope2xldCBuPXIsaT10aGlzLnYwLG89dGhpcy52MSxhPXRoaXMudjIscz10aGlzLnYzO3JldHVybiBuLnNldChVUCh0LGkueCxvLngsYS54LHMueCksVVAodCxpLnksby55LGEueSxzLnkpLFVQKHQsaS56LG8ueixhLnoscy56KSksbn1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXMudjMuY29weSh0LnYzKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fTtzNi5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlMz0hMDt2YXIgVTE9Y2xhc3MgZXh0ZW5kcyBoc3tjb25zdHJ1Y3Rvcih0PW5ldyBMdCxyPW5ldyBMdCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZSIsdGhpcy52MT10LHRoaXMudjI9cn1nZXRQb2ludCh0LHI9bmV3IEx0KXtsZXQgbj1yO3JldHVybiB0PT09MT9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59Z2V0UG9pbnRBdCh0LHIpe3JldHVybiB0aGlzLmdldFBvaW50KHQscil9Z2V0VGFuZ2VudCh0LHIpe2xldCBuPXJ8fG5ldyBMdDtyZXR1cm4gbi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319O1UxLnByb3RvdHlwZS5pc0xpbmVDdXJ2ZT0hMDt2YXIgeVU9Y2xhc3MgZXh0ZW5kcyBoc3tjb25zdHJ1Y3Rvcih0PW5ldyBqLHI9bmV3IGope3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQ3VydmUzIix0aGlzLmlzTGluZUN1cnZlMz0hMCx0aGlzLnYxPXQsdGhpcy52Mj1yfWdldFBvaW50KHQscj1uZXcgail7bGV0IG49cjtyZXR1cm4gdD09PTE/bi5jb3B5KHRoaXMudjIpOihuLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLG4ubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMudjEpKSxufWdldFBvaW50QXQodCxyKXtyZXR1cm4gdGhpcy5nZXRQb2ludCh0LHIpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319LGNNPWNsYXNzIGV4dGVuZHMgaHN7Y29uc3RydWN0b3IodD1uZXcgTHQscj1uZXcgTHQsbj1uZXcgTHQpe3N1cGVyKCksdGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZSIsdGhpcy52MD10LHRoaXMudjE9cix0aGlzLnYyPW59Z2V0UG9pbnQodCxyPW5ldyBMdCl7bGV0IG49cixpPXRoaXMudjAsbz10aGlzLnYxLGE9dGhpcy52MjtyZXR1cm4gbi5zZXQoVlAodCxpLngsby54LGEueCksVlAodCxpLnksby55LGEueSkpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX07Y00ucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7dmFyIHVNPWNsYXNzIGV4dGVuZHMgaHN7Y29uc3RydWN0b3IodD1uZXcgaixyPW5ldyBqLG49bmV3IGope3N1cGVyKCksdGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPXIsdGhpcy52Mj1ufWdldFBvaW50KHQscj1uZXcgail7bGV0IG49cixpPXRoaXMudjAsbz10aGlzLnYxLGE9dGhpcy52MjtyZXR1cm4gbi5zZXQoVlAodCxpLngsby54LGEueCksVlAodCxpLnksby55LGEueSksVlAodCxpLnosby56LGEueikpLG59Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfX07dU0ucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmUzPSEwO3ZhciBoTT1jbGFzcyBleHRlbmRzIGhze2NvbnN0cnVjdG9yKHQ9W10pe3N1cGVyKCksdGhpcy50eXBlPSJTcGxpbmVDdXJ2ZSIsdGhpcy5wb2ludHM9dH1nZXRQb2ludCh0LHI9bmV3IEx0KXtsZXQgbj1yLGk9dGhpcy5wb2ludHMsbz0oaS5sZW5ndGgtMSkqdCxhPU1hdGguZmxvb3Iobykscz1vLWEsbD1pW2E9PT0wP2E6YS0xXSxjPWlbYV0sdT1pW2E+aS5sZW5ndGgtMj9pLmxlbmd0aC0xOmErMV0saD1pW2E+aS5sZW5ndGgtMz9pLmxlbmd0aC0xOmErMl07cmV0dXJuIG4uc2V0KG9oZShzLGwueCxjLngsdS54LGgueCksb2hlKHMsbC55LGMueSx1LnksaC55KSksbn1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5wb2ludHM9W107Zm9yKGxldCByPTAsbj10LnBvaW50cy5sZW5ndGg7cjxuO3IrKyl7bGV0IGk9dC5wb2ludHNbcl07dGhpcy5wb2ludHMucHVzaChpLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgcj0wLG49dGhpcy5wb2ludHMubGVuZ3RoO3I8bjtyKyspe2xldCBpPXRoaXMucG9pbnRzW3JdO3QucG9pbnRzLnB1c2goaS50b0FycmF5KCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgcj0wLG49dC5wb2ludHMubGVuZ3RoO3I8bjtyKyspe2xldCBpPXQucG9pbnRzW3JdO3RoaXMucG9pbnRzLnB1c2gobmV3IEx0KCkuZnJvbUFycmF5KGkpKX1yZXR1cm4gdGhpc319O2hNLnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwO3ZhciBEaHQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6bzYsQ2F0bXVsbFJvbUN1cnZlMzphNixDdWJpY0JlemllckN1cnZlOmxNLEN1YmljQmV6aWVyQ3VydmUzOnM2LEVsbGlwc2VDdXJ2ZTpWMSxMaW5lQ3VydmU6VTEsTGluZUN1cnZlMzp5VSxRdWFkcmF0aWNCZXppZXJDdXJ2ZTpjTSxRdWFkcmF0aWNCZXppZXJDdXJ2ZTM6dU0sU3BsaW5lQ3VydmU6aE19KSx2VT1jbGFzcyBleHRlbmRzIGhze2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1cnZlUGF0aCIsdGhpcy5jdXJ2ZXM9W10sdGhpcy5hdXRvQ2xvc2U9ITF9YWRkKHQpe3RoaXMuY3VydmVzLnB1c2godCl9Y2xvc2VQYXRoKCl7bGV0IHQ9dGhpcy5jdXJ2ZXNbMF0uZ2V0UG9pbnQoMCkscj10aGlzLmN1cnZlc1t0aGlzLmN1cnZlcy5sZW5ndGgtMV0uZ2V0UG9pbnQoMSk7dC5lcXVhbHMocil8fHRoaXMuY3VydmVzLnB1c2gobmV3IFUxKHIsdCkpfWdldFBvaW50KHQscil7bGV0IG49dCp0aGlzLmdldExlbmd0aCgpLGk9dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKSxvPTA7Zm9yKDtvPGkubGVuZ3RoOyl7aWYoaVtvXT49bil7bGV0IGE9aVtvXS1uLHM9dGhpcy5jdXJ2ZXNbb10sbD1zLmdldExlbmd0aCgpLGM9bD09PTA/MDoxLWEvbDtyZXR1cm4gcy5nZXRQb2ludEF0KGMscil9bysrfXJldHVybiBudWxsfWdldExlbmd0aCgpe2xldCB0PXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5jYWNoZUxlbmd0aHM9bnVsbCx0aGlzLmdldEN1cnZlTGVuZ3RocygpfWdldEN1cnZlTGVuZ3Rocygpe2lmKHRoaXMuY2FjaGVMZW5ndGhzJiZ0aGlzLmNhY2hlTGVuZ3Rocy5sZW5ndGg9PT10aGlzLmN1cnZlcy5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzO2xldCB0PVtdLHI9MDtmb3IobGV0IG49MCxpPXRoaXMuY3VydmVzLmxlbmd0aDtuPGk7bisrKXIrPXRoaXMuY3VydmVzW25dLmdldExlbmd0aCgpLHQucHVzaChyKTtyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM9dCx0fWdldFNwYWNlZFBvaW50cyh0PTQwKXtsZXQgcj1bXTtmb3IobGV0IG49MDtuPD10O24rKylyLnB1c2godGhpcy5nZXRQb2ludChuL3QpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJnIucHVzaChyWzBdKSxyfWdldFBvaW50cyh0PTEyKXtsZXQgcj1bXSxuO2ZvcihsZXQgaT0wLG89dGhpcy5jdXJ2ZXM7aTxvLmxlbmd0aDtpKyspe2xldCBhPW9baV0scz1hJiZhLmlzRWxsaXBzZUN1cnZlP3QqMjphJiYoYS5pc0xpbmVDdXJ2ZXx8YS5pc0xpbmVDdXJ2ZTMpPzE6YSYmYS5pc1NwbGluZUN1cnZlP3QqYS5wb2ludHMubGVuZ3RoOnQsbD1hLmdldFBvaW50cyhzKTtmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrKyl7bGV0IHU9bFtjXTtuJiZuLmVxdWFscyh1KXx8KHIucHVzaCh1KSxuPXUpfX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJnIubGVuZ3RoPjEmJiFyW3IubGVuZ3RoLTFdLmVxdWFscyhyWzBdKSYmci5wdXNoKHJbMF0pLHJ9Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgcj0wLG49dC5jdXJ2ZXMubGVuZ3RoO3I8bjtyKyspe2xldCBpPXQuY3VydmVzW3JdO3RoaXMuY3VydmVzLnB1c2goaS5jbG9uZSgpKX1yZXR1cm4gdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTt0LmF1dG9DbG9zZT10aGlzLmF1dG9DbG9zZSx0LmN1cnZlcz1bXTtmb3IobGV0IHI9MCxuPXRoaXMuY3VydmVzLmxlbmd0aDtyPG47cisrKXtsZXQgaT10aGlzLmN1cnZlc1tyXTt0LmN1cnZlcy5wdXNoKGkudG9KU09OKCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMuYXV0b0Nsb3NlPXQuYXV0b0Nsb3NlLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgcj0wLG49dC5jdXJ2ZXMubGVuZ3RoO3I8bjtyKyspe2xldCBpPXQuY3VydmVzW3JdO3RoaXMuY3VydmVzLnB1c2gobmV3IERodFtpLnR5cGVdKCkuZnJvbUpTT04oaSkpfXJldHVybiB0aGlzfX0scTE9Y2xhc3MgZXh0ZW5kcyB2VXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iUGF0aCIsdGhpcy5jdXJyZW50UG9pbnQ9bmV3IEx0LHQmJnRoaXMuc2V0RnJvbVBvaW50cyh0KX1zZXRGcm9tUG9pbnRzKHQpe3RoaXMubW92ZVRvKHRbMF0ueCx0WzBdLnkpO2ZvcihsZXQgcj0xLG49dC5sZW5ndGg7cjxuO3IrKyl0aGlzLmxpbmVUbyh0W3JdLngsdFtyXS55KTtyZXR1cm4gdGhpc31tb3ZlVG8odCxyKXtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsciksdGhpc31saW5lVG8odCxyKXtsZXQgbj1uZXcgVTEodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgTHQodCxyKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gobiksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsciksdGhpc31xdWFkcmF0aWNDdXJ2ZVRvKHQscixuLGkpe2xldCBvPW5ldyBjTSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBMdCh0LHIpLG5ldyBMdChuLGkpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChvKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQobixpKSx0aGlzfWJlemllckN1cnZlVG8odCxyLG4saSxvLGEpe2xldCBzPW5ldyBsTSh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBMdCh0LHIpLG5ldyBMdChuLGkpLG5ldyBMdChvLGEpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChzKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQobyxhKSx0aGlzfXNwbGluZVRocnUodCl7bGV0IHI9W3RoaXMuY3VycmVudFBvaW50LmNsb25lKCldLmNvbmNhdCh0KSxuPW5ldyBoTShyKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChuKSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHRbdC5sZW5ndGgtMV0pLHRoaXN9YXJjKHQscixuLGksbyxhKXtsZXQgcz10aGlzLmN1cnJlbnRQb2ludC54LGw9dGhpcy5jdXJyZW50UG9pbnQueTtyZXR1cm4gdGhpcy5hYnNhcmModCtzLHIrbCxuLGksbyxhKSx0aGlzfWFic2FyYyh0LHIsbixpLG8sYSl7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0LHIsbixuLGksbyxhKSx0aGlzfWVsbGlwc2UodCxyLG4saSxvLGEscyxsKXtsZXQgYz10aGlzLmN1cnJlbnRQb2ludC54LHU9dGhpcy5jdXJyZW50UG9pbnQueTtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQrYyxyK3UsbixpLG8sYSxzLGwpLHRoaXN9YWJzZWxsaXBzZSh0LHIsbixpLG8sYSxzLGwpe2xldCBjPW5ldyBWMSh0LHIsbixpLG8sYSxzLGwpO2lmKHRoaXMuY3VydmVzLmxlbmd0aD4wKXtsZXQgaD1jLmdldFBvaW50KDApO2guZXF1YWxzKHRoaXMuY3VycmVudFBvaW50KXx8dGhpcy5saW5lVG8oaC54LGgueSl9dGhpcy5jdXJ2ZXMucHVzaChjKTtsZXQgdT1jLmdldFBvaW50KDEpO3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHUpLHRoaXN9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHQuY3VycmVudFBvaW50KSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LmN1cnJlbnRQb2ludD10aGlzLmN1cnJlbnRQb2ludC50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5jdXJyZW50UG9pbnQuZnJvbUFycmF5KHQuY3VycmVudFBvaW50KSx0aGlzfX0sWGM9Y2xhc3MgZXh0ZW5kcyBxMXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnV1aWQ9UmwoKSx0aGlzLnR5cGU9IlNoYXBlIix0aGlzLmhvbGVzPVtdfWdldFBvaW50c0hvbGVzKHQpe2xldCByPVtdO2ZvcihsZXQgbj0wLGk9dGhpcy5ob2xlcy5sZW5ndGg7bjxpO24rKylyW25dPXRoaXMuaG9sZXNbbl0uZ2V0UG9pbnRzKHQpO3JldHVybiByfWV4dHJhY3RQb2ludHModCl7cmV0dXJue3NoYXBlOnRoaXMuZ2V0UG9pbnRzKHQpLGhvbGVzOnRoaXMuZ2V0UG9pbnRzSG9sZXModCl9fWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgcj0wLG49dC5ob2xlcy5sZW5ndGg7cjxuO3IrKyl7bGV0IGk9dC5ob2xlc1tyXTt0aGlzLmhvbGVzLnB1c2goaS5jbG9uZSgpKX1yZXR1cm4gdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTt0LnV1aWQ9dGhpcy51dWlkLHQuaG9sZXM9W107Zm9yKGxldCByPTAsbj10aGlzLmhvbGVzLmxlbmd0aDtyPG47cisrKXtsZXQgaT10aGlzLmhvbGVzW3JdO3QuaG9sZXMucHVzaChpLnRvSlNPTigpKX1yZXR1cm4gdH1mcm9tSlNPTih0KXtzdXBlci5mcm9tSlNPTih0KSx0aGlzLnV1aWQ9dC51dWlkLHRoaXMuaG9sZXM9W107Zm9yKGxldCByPTAsbj10LmhvbGVzLmxlbmd0aDtyPG47cisrKXtsZXQgaT10LmhvbGVzW3JdO3RoaXMuaG9sZXMucHVzaChuZXcgcTEoKS5mcm9tSlNPTihpKSl9cmV0dXJuIHRoaXN9fSxSZ3I9e3RyaWFuZ3VsYXRlOmZ1bmN0aW9uKGUsdCxyPTIpe2xldCBuPXQmJnQubGVuZ3RoLGk9bj90WzBdKnI6ZS5sZW5ndGgsbz1ZZmUoZSwwLGksciwhMCksYT1bXTtpZighb3x8by5uZXh0PT09by5wcmV2KXJldHVybiBhO2xldCBzLGwsYyx1LGgsZixwO2lmKG4mJihvPUZncihlLHQsbyxyKSksZS5sZW5ndGg+ODAqcil7cz1jPWVbMF0sbD11PWVbMV07Zm9yKGxldCBkPXI7ZDxpO2QrPXIpaD1lW2RdLGY9ZVtkKzFdLGg8cyYmKHM9aCksZjxsJiYobD1mKSxoPmMmJihjPWgpLGY+dSYmKHU9Zik7cD1NYXRoLm1heChjLXMsdS1sKSxwPXAhPT0wPzEvcDowfXJldHVybiBsNihvLGEscixzLGwscCksYX19O2Z1bmN0aW9uIFlmZShlLHQscixuLGkpe2xldCBvLGE7aWYoaT09PSRncihlLHQscixuKT4wKWZvcihvPXQ7bzxyO28rPW4pYT1haGUobyxlW29dLGVbbysxXSxhKTtlbHNlIGZvcihvPXItbjtvPj10O28tPW4pYT1haGUobyxlW29dLGVbbysxXSxhKTtyZXR1cm4gYSYmWFUoYSxhLm5leHQpJiYodTYoYSksYT1hLm5leHQpLGF9ZnVuY3Rpb24gRzAoZSx0KXtpZighZSlyZXR1cm4gZTt0fHwodD1lKTtsZXQgcj1lLG47ZG8gaWYobj0hMSwhci5zdGVpbmVyJiYoWFUocixyLm5leHQpfHxzaShyLnByZXYscixyLm5leHQpPT09MCkpe2lmKHU2KHIpLHI9dD1yLnByZXYscj09PXIubmV4dClicmVhaztuPSEwfWVsc2Ugcj1yLm5leHQ7d2hpbGUobnx8ciE9PXQpO3JldHVybiB0fWZ1bmN0aW9uIGw2KGUsdCxyLG4saSxvLGEpe2lmKCFlKXJldHVybjshYSYmbyYmcWdyKGUsbixpLG8pO2xldCBzPWUsbCxjO2Zvcig7ZS5wcmV2IT09ZS5uZXh0Oyl7aWYobD1lLnByZXYsYz1lLm5leHQsbz9EZ3IoZSxuLGksbyk6TmdyKGUpKXt0LnB1c2gobC5pL3IpLHQucHVzaChlLmkvciksdC5wdXNoKGMuaS9yKSx1NihlKSxlPWMubmV4dCxzPWMubmV4dDtjb250aW51ZX1pZihlPWMsZT09PXMpe2E/YT09PTE/KGU9T2dyKEcwKGUpLHQsciksbDYoZSx0LHIsbixpLG8sMikpOmE9PT0yJiZ6Z3IoZSx0LHIsbixpLG8pOmw2KEcwKGUpLHQscixuLGksbywxKTticmVha319fWZ1bmN0aW9uIE5ncihlKXtsZXQgdD1lLnByZXYscj1lLG49ZS5uZXh0O2lmKHNpKHQscixuKT49MClyZXR1cm4hMTtsZXQgaT1lLm5leHQubmV4dDtmb3IoO2khPT1lLnByZXY7KXtpZihCMyh0LngsdC55LHIueCxyLnksbi54LG4ueSxpLngsaS55KSYmc2koaS5wcmV2LGksaS5uZXh0KT49MClyZXR1cm4hMTtpPWkubmV4dH1yZXR1cm4hMH1mdW5jdGlvbiBEZ3IoZSx0LHIsbil7bGV0IGk9ZS5wcmV2LG89ZSxhPWUubmV4dDtpZihzaShpLG8sYSk+PTApcmV0dXJuITE7bGV0IHM9aS54PG8ueD9pLng8YS54P2kueDphLng6by54PGEueD9vLng6YS54LGw9aS55PG8ueT9pLnk8YS55P2kueTphLnk6by55PGEueT9vLnk6YS55LGM9aS54Pm8ueD9pLng+YS54P2kueDphLng6by54PmEueD9vLng6YS54LHU9aS55Pm8ueT9pLnk+YS55P2kueTphLnk6by55PmEueT9vLnk6YS55LGg9cmh0KHMsbCx0LHIsbiksZj1yaHQoYyx1LHQscixuKSxwPWUucHJldlosZD1lLm5leHRaO2Zvcig7cCYmcC56Pj1oJiZkJiZkLno8PWY7KXtpZihwIT09ZS5wcmV2JiZwIT09ZS5uZXh0JiZCMyhpLngsaS55LG8ueCxvLnksYS54LGEueSxwLngscC55KSYmc2kocC5wcmV2LHAscC5uZXh0KT49MHx8KHA9cC5wcmV2WixkIT09ZS5wcmV2JiZkIT09ZS5uZXh0JiZCMyhpLngsaS55LG8ueCxvLnksYS54LGEueSxkLngsZC55KSYmc2koZC5wcmV2LGQsZC5uZXh0KT49MCkpcmV0dXJuITE7ZD1kLm5leHRafWZvcig7cCYmcC56Pj1oOyl7aWYocCE9PWUucHJldiYmcCE9PWUubmV4dCYmQjMoaS54LGkueSxvLngsby55LGEueCxhLnkscC54LHAueSkmJnNpKHAucHJldixwLHAubmV4dCk+PTApcmV0dXJuITE7cD1wLnByZXZafWZvcig7ZCYmZC56PD1mOyl7aWYoZCE9PWUucHJldiYmZCE9PWUubmV4dCYmQjMoaS54LGkueSxvLngsby55LGEueCxhLnksZC54LGQueSkmJnNpKGQucHJldixkLGQubmV4dCk+PTApcmV0dXJuITE7ZD1kLm5leHRafXJldHVybiEwfWZ1bmN0aW9uIE9ncihlLHQscil7bGV0IG49ZTtkb3tsZXQgaT1uLnByZXYsbz1uLm5leHQubmV4dDshWFUoaSxvKSYmamZlKGksbixuLm5leHQsbykmJmM2KGksbykmJmM2KG8saSkmJih0LnB1c2goaS5pL3IpLHQucHVzaChuLmkvciksdC5wdXNoKG8uaS9yKSx1NihuKSx1NihuLm5leHQpLG49ZT1vKSxuPW4ubmV4dH13aGlsZShuIT09ZSk7cmV0dXJuIEcwKG4pfWZ1bmN0aW9uIHpncihlLHQscixuLGksbyl7bGV0IGE9ZTtkb3tsZXQgcz1hLm5leHQubmV4dDtmb3IoO3MhPT1hLnByZXY7KXtpZihhLmkhPT1zLmkmJllncihhLHMpKXtsZXQgbD1YZmUoYSxzKTthPUcwKGEsYS5uZXh0KSxsPUcwKGwsbC5uZXh0KSxsNihhLHQscixuLGksbyksbDYobCx0LHIsbixpLG8pO3JldHVybn1zPXMubmV4dH1hPWEubmV4dH13aGlsZShhIT09ZSl9ZnVuY3Rpb24gRmdyKGUsdCxyLG4pe2xldCBpPVtdLG8sYSxzLGwsYztmb3Iobz0wLGE9dC5sZW5ndGg7bzxhO28rKylzPXRbb10qbixsPW88YS0xP3RbbysxXSpuOmUubGVuZ3RoLGM9WWZlKGUscyxsLG4sITEpLGM9PT1jLm5leHQmJihjLnN0ZWluZXI9ITApLGkucHVzaChXZ3IoYykpO2ZvcihpLnNvcnQoQmdyKSxvPTA7bzxpLmxlbmd0aDtvKyspSGdyKGlbb10scikscj1HMChyLHIubmV4dCk7cmV0dXJuIHJ9ZnVuY3Rpb24gQmdyKGUsdCl7cmV0dXJuIGUueC10Lnh9ZnVuY3Rpb24gSGdyKGUsdCl7aWYodD1WZ3IoZSx0KSx0KXtsZXQgcj1YZmUodCxlKTtHMCh0LHQubmV4dCksRzAocixyLm5leHQpfX1mdW5jdGlvbiBWZ3IoZSx0KXtsZXQgcj10LG49ZS54LGk9ZS55LG89LTEvMCxhO2Rve2lmKGk8PXIueSYmaT49ci5uZXh0LnkmJnIubmV4dC55IT09ci55KXtsZXQgZj1yLngrKGktci55KSooci5uZXh0Lngtci54KS8oci5uZXh0Lnktci55KTtpZihmPD1uJiZmPm8pe2lmKG89ZixmPT09bil7aWYoaT09PXIueSlyZXR1cm4gcjtpZihpPT09ci5uZXh0LnkpcmV0dXJuIHIubmV4dH1hPXIueDxyLm5leHQueD9yOnIubmV4dH19cj1yLm5leHR9d2hpbGUociE9PXQpO2lmKCFhKXJldHVybiBudWxsO2lmKG49PT1vKXJldHVybiBhO2xldCBzPWEsbD1hLngsYz1hLnksdT0xLzAsaDtyPWE7ZG8gbj49ci54JiZyLng+PWwmJm4hPT1yLngmJkIzKGk8Yz9uOm8saSxsLGMsaTxjP286bixpLHIueCxyLnkpJiYoaD1NYXRoLmFicyhpLXIueSkvKG4tci54KSxjNihyLGUpJiYoaDx1fHxoPT09dSYmKHIueD5hLnh8fHIueD09PWEueCYmVWdyKGEscikpKSYmKGE9cix1PWgpKSxyPXIubmV4dDt3aGlsZShyIT09cyk7cmV0dXJuIGF9ZnVuY3Rpb24gVWdyKGUsdCl7cmV0dXJuIHNpKGUucHJldixlLHQucHJldik8MCYmc2kodC5uZXh0LGUsZS5uZXh0KTwwfWZ1bmN0aW9uIHFncihlLHQscixuKXtsZXQgaT1lO2RvIGkuej09PW51bGwmJihpLno9cmh0KGkueCxpLnksdCxyLG4pKSxpLnByZXZaPWkucHJldixpLm5leHRaPWkubmV4dCxpPWkubmV4dDt3aGlsZShpIT09ZSk7aS5wcmV2Wi5uZXh0Wj1udWxsLGkucHJldlo9bnVsbCxHZ3IoaSl9ZnVuY3Rpb24gR2dyKGUpe2xldCB0LHIsbixpLG8sYSxzLGwsYz0xO2Rve2ZvcihyPWUsZT1udWxsLG89bnVsbCxhPTA7cjspe2ZvcihhKyssbj1yLHM9MCx0PTA7dDxjJiYocysrLG49bi5uZXh0WiwhIW4pO3QrKyk7Zm9yKGw9YztzPjB8fGw+MCYmbjspcyE9PTAmJihsPT09MHx8IW58fHIuejw9bi56KT8oaT1yLHI9ci5uZXh0WixzLS0pOihpPW4sbj1uLm5leHRaLGwtLSksbz9vLm5leHRaPWk6ZT1pLGkucHJldlo9byxvPWk7cj1ufW8ubmV4dFo9bnVsbCxjKj0yfXdoaWxlKGE+MSk7cmV0dXJuIGV9ZnVuY3Rpb24gcmh0KGUsdCxyLG4saSl7cmV0dXJuIGU9MzI3NjcqKGUtcikqaSx0PTMyNzY3Kih0LW4pKmksZT0oZXxlPDw4KSYxNjcxMTkzNSxlPShlfGU8PDQpJjI1MjY0NTEzNSxlPShlfGU8PDIpJjg1ODk5MzQ1OSxlPShlfGU8PDEpJjE0MzE2NTU3NjUsdD0odHx0PDw4KSYxNjcxMTkzNSx0PSh0fHQ8PDQpJjI1MjY0NTEzNSx0PSh0fHQ8PDIpJjg1ODk5MzQ1OSx0PSh0fHQ8PDEpJjE0MzE2NTU3NjUsZXx0PDwxfWZ1bmN0aW9uIFdncihlKXtsZXQgdD1lLHI9ZTtkbyh0Lng8ci54fHx0Lng9PT1yLngmJnQueTxyLnkpJiYocj10KSx0PXQubmV4dDt3aGlsZSh0IT09ZSk7cmV0dXJuIHJ9ZnVuY3Rpb24gQjMoZSx0LHIsbixpLG8sYSxzKXtyZXR1cm4oaS1hKSoodC1zKS0oZS1hKSooby1zKT49MCYmKGUtYSkqKG4tcyktKHItYSkqKHQtcyk+PTAmJihyLWEpKihvLXMpLShpLWEpKihuLXMpPj0wfWZ1bmN0aW9uIFlncihlLHQpe3JldHVybiBlLm5leHQuaSE9PXQuaSYmZS5wcmV2LmkhPT10LmkmJiFqZ3IoZSx0KSYmKGM2KGUsdCkmJmM2KHQsZSkmJlhncihlLHQpJiYoc2koZS5wcmV2LGUsdC5wcmV2KXx8c2koZSx0LnByZXYsdCkpfHxYVShlLHQpJiZzaShlLnByZXYsZSxlLm5leHQpPjAmJnNpKHQucHJldix0LHQubmV4dCk+MCl9ZnVuY3Rpb24gc2koZSx0LHIpe3JldHVybih0LnktZS55KSooci54LXQueCktKHQueC1lLngpKihyLnktdC55KX1mdW5jdGlvbiBYVShlLHQpe3JldHVybiBlLng9PT10LngmJmUueT09PXQueX1mdW5jdGlvbiBqZmUoZSx0LHIsbil7bGV0IGk9VlYoc2koZSx0LHIpKSxvPVZWKHNpKGUsdCxuKSksYT1WVihzaShyLG4sZSkpLHM9VlYoc2kocixuLHQpKTtyZXR1cm4hIShpIT09byYmYSE9PXN8fGk9PT0wJiZIVihlLHIsdCl8fG89PT0wJiZIVihlLG4sdCl8fGE9PT0wJiZIVihyLGUsbil8fHM9PT0wJiZIVihyLHQsbikpfWZ1bmN0aW9uIEhWKGUsdCxyKXtyZXR1cm4gdC54PD1NYXRoLm1heChlLngsci54KSYmdC54Pj1NYXRoLm1pbihlLngsci54KSYmdC55PD1NYXRoLm1heChlLnksci55KSYmdC55Pj1NYXRoLm1pbihlLnksci55KX1mdW5jdGlvbiBWVihlKXtyZXR1cm4gZT4wPzE6ZTwwPy0xOjB9ZnVuY3Rpb24gamdyKGUsdCl7bGV0IHI9ZTtkb3tpZihyLmkhPT1lLmkmJnIubmV4dC5pIT09ZS5pJiZyLmkhPT10LmkmJnIubmV4dC5pIT09dC5pJiZqZmUocixyLm5leHQsZSx0KSlyZXR1cm4hMDtyPXIubmV4dH13aGlsZShyIT09ZSk7cmV0dXJuITF9ZnVuY3Rpb24gYzYoZSx0KXtyZXR1cm4gc2koZS5wcmV2LGUsZS5uZXh0KTwwP3NpKGUsdCxlLm5leHQpPj0wJiZzaShlLGUucHJldix0KT49MDpzaShlLHQsZS5wcmV2KTwwfHxzaShlLGUubmV4dCx0KTwwfWZ1bmN0aW9uIFhncihlLHQpe2xldCByPWUsbj0hMSxpPShlLngrdC54KS8yLG89KGUueSt0LnkpLzI7ZG8gci55Pm8hPXIubmV4dC55Pm8mJnIubmV4dC55IT09ci55JiZpPChyLm5leHQueC1yLngpKihvLXIueSkvKHIubmV4dC55LXIueSkrci54JiYobj0hbikscj1yLm5leHQ7d2hpbGUociE9PWUpO3JldHVybiBufWZ1bmN0aW9uIFhmZShlLHQpe2xldCByPW5ldyBuaHQoZS5pLGUueCxlLnkpLG49bmV3IG5odCh0LmksdC54LHQueSksaT1lLm5leHQsbz10LnByZXY7cmV0dXJuIGUubmV4dD10LHQucHJldj1lLHIubmV4dD1pLGkucHJldj1yLG4ubmV4dD1yLHIucHJldj1uLG8ubmV4dD1uLG4ucHJldj1vLG59ZnVuY3Rpb24gYWhlKGUsdCxyLG4pe2xldCBpPW5ldyBuaHQoZSx0LHIpO3JldHVybiBuPyhpLm5leHQ9bi5uZXh0LGkucHJldj1uLG4ubmV4dC5wcmV2PWksbi5uZXh0PWkpOihpLnByZXY9aSxpLm5leHQ9aSksaX1mdW5jdGlvbiB1NihlKXtlLm5leHQucHJldj1lLnByZXYsZS5wcmV2Lm5leHQ9ZS5uZXh0LGUucHJldlomJihlLnByZXZaLm5leHRaPWUubmV4dFopLGUubmV4dFomJihlLm5leHRaLnByZXZaPWUucHJldlopfWZ1bmN0aW9uIG5odChlLHQscil7dGhpcy5pPWUsdGhpcy54PXQsdGhpcy55PXIsdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9ZnVuY3Rpb24gJGdyKGUsdCxyLG4pe2xldCBpPTA7Zm9yKGxldCBvPXQsYT1yLW47bzxyO28rPW4paSs9KGVbYV0tZVtvXSkqKGVbbysxXStlW2ErMV0pLGE9bztyZXR1cm4gaX12YXIgJGM9Y2xhc3N7c3RhdGljIGFyZWEodCl7bGV0IHI9dC5sZW5ndGgsbj0wO2ZvcihsZXQgaT1yLTEsbz0wO288cjtpPW8rKyluKz10W2ldLngqdFtvXS55LXRbb10ueCp0W2ldLnk7cmV0dXJuIG4qLjV9c3RhdGljIGlzQ2xvY2tXaXNlKHQpe3JldHVybiAkYy5hcmVhKHQpPDB9c3RhdGljIHRyaWFuZ3VsYXRlU2hhcGUodCxyKXtsZXQgbj1bXSxpPVtdLG89W107c2hlKHQpLGxoZShuLHQpO2xldCBhPXQubGVuZ3RoO3IuZm9yRWFjaChzaGUpO2ZvcihsZXQgbD0wO2w8ci5sZW5ndGg7bCsrKWkucHVzaChhKSxhKz1yW2xdLmxlbmd0aCxsaGUobixyW2xdKTtsZXQgcz1SZ3IudHJpYW5ndWxhdGUobixpKTtmb3IobGV0IGw9MDtsPHMubGVuZ3RoO2wrPTMpby5wdXNoKHMuc2xpY2UobCxsKzMpKTtyZXR1cm4gb319O2Z1bmN0aW9uIHNoZShlKXtsZXQgdD1lLmxlbmd0aDt0PjImJmVbdC0xXS5lcXVhbHMoZVswXSkmJmUucG9wKCl9ZnVuY3Rpb24gbGhlKGUsdCl7Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspZS5wdXNoKHRbcl0ueCksZS5wdXNoKHRbcl0ueSl9dmFyIHVoPWNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodD1uZXcgWGMoW25ldyBMdCguNSwuNSksbmV3IEx0KC0uNSwuNSksbmV3IEx0KC0uNSwtLjUpLG5ldyBMdCguNSwtLjUpXSkscj17fSl7c3VwZXIoKSx0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxvcHRpb25zOnJ9LHQ9QXJyYXkuaXNBcnJheSh0KT90Olt0XTtsZXQgbj10aGlzLGk9W10sbz1bXTtmb3IobGV0IHM9MCxsPXQubGVuZ3RoO3M8bDtzKyspe2xldCBjPXRbc107YShjKX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShpLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyB4ZShvLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7ZnVuY3Rpb24gYShzKXtsZXQgbD1bXSxjPXIuY3VydmVTZWdtZW50cyE9PXZvaWQgMD9yLmN1cnZlU2VnbWVudHM6MTIsdT1yLnN0ZXBzIT09dm9pZCAwP3Iuc3RlcHM6MSxoPXIuZGVwdGghPT12b2lkIDA/ci5kZXB0aDoxLGY9ci5iZXZlbEVuYWJsZWQhPT12b2lkIDA/ci5iZXZlbEVuYWJsZWQ6ITAscD1yLmJldmVsVGhpY2tuZXNzIT09dm9pZCAwP3IuYmV2ZWxUaGlja25lc3M6LjIsZD1yLmJldmVsU2l6ZSE9PXZvaWQgMD9yLmJldmVsU2l6ZTpwLS4xLGc9ci5iZXZlbE9mZnNldCE9PXZvaWQgMD9yLmJldmVsT2Zmc2V0OjAsXz1yLmJldmVsU2VnbWVudHMhPT12b2lkIDA/ci5iZXZlbFNlZ21lbnRzOjMseT1yLmV4dHJ1ZGVQYXRoLHg9ci5VVkdlbmVyYXRvciE9PXZvaWQgMD9yLlVWR2VuZXJhdG9yOktncjtyLmFtb3VudCE9PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBhbW91bnQgaGFzIGJlZW4gcmVuYW1lZCB0byBkZXB0aC4iKSxoPXIuYW1vdW50KTtsZXQgYixTPSExLEMsUCxrLE87eSYmKGI9eS5nZXRTcGFjZWRQb2ludHModSksUz0hMCxmPSExLEM9eS5jb21wdXRlRnJlbmV0RnJhbWVzKHUsITEpLFA9bmV3IGosaz1uZXcgaixPPW5ldyBqKSxmfHwoXz0wLHA9MCxkPTAsZz0wKTtsZXQgRD1zLmV4dHJhY3RQb2ludHMoYyksQj1ELnNoYXBlLEk9RC5ob2xlcztpZighJGMuaXNDbG9ja1dpc2UoQikpe0I9Qi5yZXZlcnNlKCk7Zm9yKGxldCBxPTAscHQ9SS5sZW5ndGg7cTxwdDtxKyspe2xldCBodD1JW3FdOyRjLmlzQ2xvY2tXaXNlKGh0KSYmKElbcV09aHQucmV2ZXJzZSgpKX19bGV0IFI9JGMudHJpYW5ndWxhdGVTaGFwZShCLEkpLEY9Qjtmb3IobGV0IHE9MCxwdD1JLmxlbmd0aDtxPHB0O3ErKyl7bGV0IGh0PUlbcV07Qj1CLmNvbmNhdChodCl9ZnVuY3Rpb24geihxLHB0LGh0KXtyZXR1cm4gcHR8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogdmVjIGRvZXMgbm90IGV4aXN0IikscHQuY2xvbmUoKS5tdWx0aXBseVNjYWxhcihodCkuYWRkKHEpfWxldCBVPUIubGVuZ3RoLFc9Ui5sZW5ndGg7ZnVuY3Rpb24gWihxLHB0LGh0KXtsZXQgd3Qsa3QsaWUsZWU9cS54LXB0LngsTGU9cS55LXB0LnksYXI9aHQueC1xLngsZnI9aHQueS1xLnksdHQ9ZWUqZWUrTGUqTGUsJD1lZSpmci1MZSphcjtpZihNYXRoLmFicygkKT5OdW1iZXIuRVBTSUxPTil7bGV0IEl0PU1hdGguc3FydCh0dCksJHQ9TWF0aC5zcXJ0KGFyKmFyK2ZyKmZyKSxoZT1wdC54LUxlL0l0LFR0PXB0LnkrZWUvSXQsYmU9aHQueC1mci8kdCxudD1odC55K2FyLyR0LEN0PSgoYmUtaGUpKmZyLShudC1UdCkqYXIpLyhlZSpmci1MZSphcik7d3Q9aGUrZWUqQ3QtcS54LGt0PVR0K0xlKkN0LXEueTtsZXQgV3Q9d3Qqd3Qra3Qqa3Q7aWYoV3Q8PTIpcmV0dXJuIG5ldyBMdCh3dCxrdCk7aWU9TWF0aC5zcXJ0KFd0LzIpfWVsc2V7bGV0IEl0PSExO2VlPk51bWJlci5FUFNJTE9OP2FyPk51bWJlci5FUFNJTE9OJiYoSXQ9ITApOmVlPC1OdW1iZXIuRVBTSUxPTj9hcjwtTnVtYmVyLkVQU0lMT04mJihJdD0hMCk6TWF0aC5zaWduKExlKT09PU1hdGguc2lnbihmcikmJihJdD0hMCksSXQ/KHd0PS1MZSxrdD1lZSxpZT1NYXRoLnNxcnQodHQpKTood3Q9ZWUsa3Q9TGUsaWU9TWF0aC5zcXJ0KHR0LzIpKX1yZXR1cm4gbmV3IEx0KHd0L2llLGt0L2llKX1sZXQgcnQ9W107Zm9yKGxldCBxPTAscHQ9Ri5sZW5ndGgsaHQ9cHQtMSx3dD1xKzE7cTxwdDtxKyssaHQrKyx3dCsrKWh0PT09cHQmJihodD0wKSx3dD09PXB0JiYod3Q9MCkscnRbcV09WihGW3FdLEZbaHRdLEZbd3RdKTtsZXQgb3Q9W10sc3QsU3Q9cnQuY29uY2F0KCk7Zm9yKGxldCBxPTAscHQ9SS5sZW5ndGg7cTxwdDtxKyspe2xldCBodD1JW3FdO3N0PVtdO2ZvcihsZXQgd3Q9MCxrdD1odC5sZW5ndGgsaWU9a3QtMSxlZT13dCsxO3d0PGt0O3d0KyssaWUrKyxlZSsrKWllPT09a3QmJihpZT0wKSxlZT09PWt0JiYoZWU9MCksc3Rbd3RdPVooaHRbd3RdLGh0W2llXSxodFtlZV0pO290LnB1c2goc3QpLFN0PVN0LmNvbmNhdChzdCl9Zm9yKGxldCBxPTA7cTxfO3ErKyl7bGV0IHB0PXEvXyxodD1wKk1hdGguY29zKHB0Kk1hdGguUEkvMiksd3Q9ZCpNYXRoLnNpbihwdCpNYXRoLlBJLzIpK2c7Zm9yKGxldCBrdD0wLGllPUYubGVuZ3RoO2t0PGllO2t0Kyspe2xldCBlZT16KEZba3RdLHJ0W2t0XSx3dCk7X3QoZWUueCxlZS55LC1odCl9Zm9yKGxldCBrdD0wLGllPUkubGVuZ3RoO2t0PGllO2t0Kyspe2xldCBlZT1JW2t0XTtzdD1vdFtrdF07Zm9yKGxldCBMZT0wLGFyPWVlLmxlbmd0aDtMZTxhcjtMZSsrKXtsZXQgZnI9eihlZVtMZV0sc3RbTGVdLHd0KTtfdChmci54LGZyLnksLWh0KX19fWxldCBidD1kK2c7Zm9yKGxldCBxPTA7cTxVO3ErKyl7bGV0IHB0PWY/eihCW3FdLFN0W3FdLGJ0KTpCW3FdO1M/KGsuY29weShDLm5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKHB0LngpLFAuY29weShDLmJpbm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIocHQueSksTy5jb3B5KGJbMF0pLmFkZChrKS5hZGQoUCksX3QoTy54LE8ueSxPLnopKTpfdChwdC54LHB0LnksMCl9Zm9yKGxldCBxPTE7cTw9dTtxKyspZm9yKGxldCBwdD0wO3B0PFU7cHQrKyl7bGV0IGh0PWY/eihCW3B0XSxTdFtwdF0sYnQpOkJbcHRdO1M/KGsuY29weShDLm5vcm1hbHNbcV0pLm11bHRpcGx5U2NhbGFyKGh0LngpLFAuY29weShDLmJpbm9ybWFsc1txXSkubXVsdGlwbHlTY2FsYXIoaHQueSksTy5jb3B5KGJbcV0pLmFkZChrKS5hZGQoUCksX3QoTy54LE8ueSxPLnopKTpfdChodC54LGh0LnksaC91KnEpfWZvcihsZXQgcT1fLTE7cT49MDtxLS0pe2xldCBwdD1xL18saHQ9cCpNYXRoLmNvcyhwdCpNYXRoLlBJLzIpLHd0PWQqTWF0aC5zaW4ocHQqTWF0aC5QSS8yKStnO2ZvcihsZXQga3Q9MCxpZT1GLmxlbmd0aDtrdDxpZTtrdCsrKXtsZXQgZWU9eihGW2t0XSxydFtrdF0sd3QpO190KGVlLngsZWUueSxoK2h0KX1mb3IobGV0IGt0PTAsaWU9SS5sZW5ndGg7a3Q8aWU7a3QrKyl7bGV0IGVlPUlba3RdO3N0PW90W2t0XTtmb3IobGV0IExlPTAsYXI9ZWUubGVuZ3RoO0xlPGFyO0xlKyspe2xldCBmcj16KGVlW0xlXSxzdFtMZV0sd3QpO1M/X3QoZnIueCxmci55K2JbdS0xXS55LGJbdS0xXS54K2h0KTpfdChmci54LGZyLnksaCtodCl9fX1NdCgpLGx0KCk7ZnVuY3Rpb24gTXQoKXtsZXQgcT1pLmxlbmd0aC8zO2lmKGYpe2xldCBwdD0wLGh0PVUqcHQ7Zm9yKGxldCB3dD0wO3d0PFc7d3QrKyl7bGV0IGt0PVJbd3RdO2N0KGt0WzJdK2h0LGt0WzFdK2h0LGt0WzBdK2h0KX1wdD11K18qMixodD1VKnB0O2ZvcihsZXQgd3Q9MDt3dDxXO3d0Kyspe2xldCBrdD1SW3d0XTtjdChrdFswXStodCxrdFsxXStodCxrdFsyXStodCl9fWVsc2V7Zm9yKGxldCBwdD0wO3B0PFc7cHQrKyl7bGV0IGh0PVJbcHRdO2N0KGh0WzJdLGh0WzFdLGh0WzBdKX1mb3IobGV0IHB0PTA7cHQ8VztwdCsrKXtsZXQgaHQ9UltwdF07Y3QoaHRbMF0rVSp1LGh0WzFdK1UqdSxodFsyXStVKnUpfX1uLmFkZEdyb3VwKHEsaS5sZW5ndGgvMy1xLDApfWZ1bmN0aW9uIGx0KCl7bGV0IHE9aS5sZW5ndGgvMyxwdD0wO0t0KEYscHQpLHB0Kz1GLmxlbmd0aDtmb3IobGV0IGh0PTAsd3Q9SS5sZW5ndGg7aHQ8d3Q7aHQrKyl7bGV0IGt0PUlbaHRdO0t0KGt0LHB0KSxwdCs9a3QubGVuZ3RofW4uYWRkR3JvdXAocSxpLmxlbmd0aC8zLXEsMSl9ZnVuY3Rpb24gS3QocSxwdCl7bGV0IGh0PXEubGVuZ3RoO2Zvcig7LS1odD49MDspe2xldCB3dD1odCxrdD1odC0xO2t0PDAmJihrdD1xLmxlbmd0aC0xKTtmb3IobGV0IGllPTAsZWU9dStfKjI7aWU8ZWU7aWUrKyl7bGV0IExlPVUqaWUsYXI9VSooaWUrMSksZnI9cHQrd3QrTGUsdHQ9cHQra3QrTGUsJD1wdCtrdCthcixJdD1wdCt3dCthcjtYKGZyLHR0LCQsSXQpfX19ZnVuY3Rpb24gX3QocSxwdCxodCl7bC5wdXNoKHEpLGwucHVzaChwdCksbC5wdXNoKGh0KX1mdW5jdGlvbiBjdChxLHB0LGh0KXtldChxKSxldChwdCksZXQoaHQpO2xldCB3dD1pLmxlbmd0aC8zLGt0PXguZ2VuZXJhdGVUb3BVVihuLGksd3QtMyx3dC0yLHd0LTEpO2R0KGt0WzBdKSxkdChrdFsxXSksZHQoa3RbMl0pfWZ1bmN0aW9uIFgocSxwdCxodCx3dCl7ZXQocSksZXQocHQpLGV0KHd0KSxldChwdCksZXQoaHQpLGV0KHd0KTtsZXQga3Q9aS5sZW5ndGgvMyxpZT14LmdlbmVyYXRlU2lkZVdhbGxVVihuLGksa3QtNixrdC0zLGt0LTIsa3QtMSk7ZHQoaWVbMF0pLGR0KGllWzFdKSxkdChpZVszXSksZHQoaWVbMV0pLGR0KGllWzJdKSxkdChpZVszXSl9ZnVuY3Rpb24gZXQocSl7aS5wdXNoKGxbcSozKzBdKSxpLnB1c2gobFtxKjMrMV0pLGkucHVzaChsW3EqMysyXSl9ZnVuY3Rpb24gZHQocSl7by5wdXNoKHEueCksby5wdXNoKHEueSl9fX10b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKSxyPXRoaXMucGFyYW1ldGVycy5zaGFwZXMsbj10aGlzLnBhcmFtZXRlcnMub3B0aW9ucztyZXR1cm4gWmdyKHIsbix0KX1zdGF0aWMgZnJvbUpTT04odCxyKXtsZXQgbj1bXTtmb3IobGV0IG89MCxhPXQuc2hhcGVzLmxlbmd0aDtvPGE7bysrKXtsZXQgcz1yW3Quc2hhcGVzW29dXTtuLnB1c2gocyl9bGV0IGk9dC5vcHRpb25zLmV4dHJ1ZGVQYXRoO3JldHVybiBpIT09dm9pZCAwJiYodC5vcHRpb25zLmV4dHJ1ZGVQYXRoPW5ldyBEaHRbaS50eXBlXSgpLmZyb21KU09OKGkpKSxuZXcgdWgobix0Lm9wdGlvbnMpfX0sS2dyPXtnZW5lcmF0ZVRvcFVWOmZ1bmN0aW9uKGUsdCxyLG4saSl7bGV0IG89dFtyKjNdLGE9dFtyKjMrMV0scz10W24qM10sbD10W24qMysxXSxjPXRbaSozXSx1PXRbaSozKzFdO3JldHVybltuZXcgTHQobyxhKSxuZXcgTHQocyxsKSxuZXcgTHQoYyx1KV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbihlLHQscixuLGksbyl7bGV0IGE9dFtyKjNdLHM9dFtyKjMrMV0sbD10W3IqMysyXSxjPXRbbiozXSx1PXRbbiozKzFdLGg9dFtuKjMrMl0sZj10W2kqM10scD10W2kqMysxXSxkPXRbaSozKzJdLGc9dFtvKjNdLF89dFtvKjMrMV0seT10W28qMysyXTtyZXR1cm4gTWF0aC5hYnMocy11KTxNYXRoLmFicyhhLWMpP1tuZXcgTHQoYSwxLWwpLG5ldyBMdChjLDEtaCksbmV3IEx0KGYsMS1kKSxuZXcgTHQoZywxLXkpXTpbbmV3IEx0KHMsMS1sKSxuZXcgTHQodSwxLWgpLG5ldyBMdChwLDEtZCksbmV3IEx0KF8sMS15KV19fTtmdW5jdGlvbiBaZ3IoZSx0LHIpe2lmKHIuc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKXtsZXQgbz1lW25dO3Iuc2hhcGVzLnB1c2goby51dWlkKX1lbHNlIHIuc2hhcGVzLnB1c2goZS51dWlkKTtyZXR1cm4gdC5leHRydWRlUGF0aCE9PXZvaWQgMCYmKHIub3B0aW9ucy5leHRydWRlUGF0aD10LmV4dHJ1ZGVQYXRoLnRvSlNPTigpKSxyfXZhciBHMT1jbGFzcyBleHRlbmRzIGNoe2NvbnN0cnVjdG9yKHQ9MSxyPTApe2xldCBuPSgxK01hdGguc3FydCg1KSkvMixpPVstMSxuLDAsMSxuLDAsLTEsLW4sMCwxLC1uLDAsMCwtMSxuLDAsMSxuLDAsLTEsLW4sMCwxLC1uLG4sMCwtMSxuLDAsMSwtbiwwLC0xLC1uLDAsMV0sbz1bMCwxMSw1LDAsNSwxLDAsMSw3LDAsNywxMCwwLDEwLDExLDEsNSw5LDUsMTEsNCwxMSwxMCwyLDEwLDcsNiw3LDEsOCwzLDksNCwzLDQsMiwzLDIsNiwzLDYsOCwzLDgsOSw0LDksNSwyLDQsMTEsNiwyLDEwLDgsNiw3LDksOCwxXTtzdXBlcihpLG8sdCxyKSx0aGlzLnR5cGU9Ikljb3NhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOnJ9fXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IEcxKHQucmFkaXVzLHQuZGV0YWlsKX19LFcxPWNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodD1bbmV3IEx0KDAsLjUpLG5ldyBMdCguNSwwKSxuZXcgTHQoMCwtLjUpXSxyPTEyLG49MCxpPU1hdGguUEkqMil7c3VwZXIoKSx0aGlzLnR5cGU9IkxhdGhlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cG9pbnRzOnQsc2VnbWVudHM6cixwaGlTdGFydDpuLHBoaUxlbmd0aDppfSxyPU1hdGguZmxvb3IociksaT1LbyhpLDAsTWF0aC5QSSoyKTtsZXQgbz1bXSxhPVtdLHM9W10sbD1bXSxjPVtdLHU9MS9yLGg9bmV3IGosZj1uZXcgTHQscD1uZXcgaixkPW5ldyBqLGc9bmV3IGosXz0wLHk9MDtmb3IobGV0IHg9MDt4PD10Lmxlbmd0aC0xO3grKylzd2l0Y2goeCl7Y2FzZSAwOl89dFt4KzFdLngtdFt4XS54LHk9dFt4KzFdLnktdFt4XS55LHAueD15KjEscC55PS1fLHAuej15KjAsZy5jb3B5KHApLHAubm9ybWFsaXplKCksbC5wdXNoKHAueCxwLnkscC56KTticmVhaztjYXNlIHQubGVuZ3RoLTE6bC5wdXNoKGcueCxnLnksZy56KTticmVhaztkZWZhdWx0Ol89dFt4KzFdLngtdFt4XS54LHk9dFt4KzFdLnktdFt4XS55LHAueD15KjEscC55PS1fLHAuej15KjAsZC5jb3B5KHApLHAueCs9Zy54LHAueSs9Zy55LHAueis9Zy56LHAubm9ybWFsaXplKCksbC5wdXNoKHAueCxwLnkscC56KSxnLmNvcHkoZCl9Zm9yKGxldCB4PTA7eDw9cjt4Kyspe2xldCBiPW4reCp1KmksUz1NYXRoLnNpbihiKSxDPU1hdGguY29zKGIpO2ZvcihsZXQgUD0wO1A8PXQubGVuZ3RoLTE7UCsrKXtoLng9dFtQXS54KlMsaC55PXRbUF0ueSxoLno9dFtQXS54KkMsYS5wdXNoKGgueCxoLnksaC56KSxmLng9eC9yLGYueT1QLyh0Lmxlbmd0aC0xKSxzLnB1c2goZi54LGYueSk7bGV0IGs9bFszKlArMF0qUyxPPWxbMypQKzFdLEQ9bFszKlArMF0qQztjLnB1c2goayxPLEQpfX1mb3IobGV0IHg9MDt4PHI7eCsrKWZvcihsZXQgYj0wO2I8dC5sZW5ndGgtMTtiKyspe2xldCBTPWIreCp0Lmxlbmd0aCxDPVMsUD1TK3QubGVuZ3RoLGs9Uyt0Lmxlbmd0aCsxLE89UysxO28ucHVzaChDLFAsTyksby5wdXNoKGssTyxQKX10aGlzLnNldEluZGV4KG8pLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKGEsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHhlKHMsMikpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyB4ZShjLDMpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBXMSh0LnBvaW50cyx0LnNlZ21lbnRzLHQucGhpU3RhcnQsdC5waGlMZW5ndGgpfX0sVzA9Y2xhc3MgZXh0ZW5kcyBjaHtjb25zdHJ1Y3Rvcih0PTEscj0wKXtsZXQgbj1bMSwwLDAsLTEsMCwwLDAsMSwwLDAsLTEsMCwwLDAsMSwwLDAsLTFdLGk9WzAsMiw0LDAsNCwzLDAsMyw1LDAsNSwyLDEsMiw1LDEsNSwzLDEsMyw0LDEsNCwyXTtzdXBlcihuLGksdCxyKSx0aGlzLnR5cGU9Ik9jdGFoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6cn19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgVzAodC5yYWRpdXMsdC5kZXRhaWwpfX0sWTE9Y2xhc3MgZXh0ZW5kcyBQZXtjb25zdHJ1Y3Rvcih0PS41LHI9MSxuPTgsaT0xLG89MCxhPU1hdGguUEkqMil7c3VwZXIoKSx0aGlzLnR5cGU9IlJpbmdHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtpbm5lclJhZGl1czp0LG91dGVyUmFkaXVzOnIsdGhldGFTZWdtZW50czpuLHBoaVNlZ21lbnRzOmksdGhldGFTdGFydDpvLHRoZXRhTGVuZ3RoOmF9LG49TWF0aC5tYXgoMyxuKSxpPU1hdGgubWF4KDEsaSk7bGV0IHM9W10sbD1bXSxjPVtdLHU9W10saD10LGY9KHItdCkvaSxwPW5ldyBqLGQ9bmV3IEx0O2ZvcihsZXQgZz0wO2c8PWk7ZysrKXtmb3IobGV0IF89MDtfPD1uO18rKyl7bGV0IHk9bytfL24qYTtwLng9aCpNYXRoLmNvcyh5KSxwLnk9aCpNYXRoLnNpbih5KSxsLnB1c2gocC54LHAueSxwLnopLGMucHVzaCgwLDAsMSksZC54PShwLngvcisxKS8yLGQueT0ocC55L3IrMSkvMix1LnB1c2goZC54LGQueSl9aCs9Zn1mb3IobGV0IGc9MDtnPGk7ZysrKXtsZXQgXz1nKihuKzEpO2ZvcihsZXQgeT0wO3k8bjt5Kyspe2xldCB4PXkrXyxiPXgsUz14K24rMSxDPXgrbisyLFA9eCsxO3MucHVzaChiLFMsUCkscy5wdXNoKFMsQyxQKX19dGhpcy5zZXRJbmRleChzKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgeGUoYywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgeGUodSwyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgWTEodC5pbm5lclJhZGl1cyx0Lm91dGVyUmFkaXVzLHQudGhldGFTZWdtZW50cyx0LnBoaVNlZ21lbnRzLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19LFkwPWNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodD1uZXcgWGMoW25ldyBMdCgwLC41KSxuZXcgTHQoLS41LC0uNSksbmV3IEx0KC41LC0uNSldKSxyPTEyKXtzdXBlcigpLHRoaXMudHlwZT0iU2hhcGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxjdXJ2ZVNlZ21lbnRzOnJ9O2xldCBuPVtdLGk9W10sbz1bXSxhPVtdLHM9MCxsPTA7aWYoQXJyYXkuaXNBcnJheSh0KT09PSExKWModCk7ZWxzZSBmb3IobGV0IHU9MDt1PHQubGVuZ3RoO3UrKyljKHRbdV0pLHRoaXMuYWRkR3JvdXAocyxsLHUpLHMrPWwsbD0wO3RoaXMuc2V0SW5kZXgobiksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IHhlKG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHhlKGEsMikpO2Z1bmN0aW9uIGModSl7bGV0IGg9aS5sZW5ndGgvMyxmPXUuZXh0cmFjdFBvaW50cyhyKSxwPWYuc2hhcGUsZD1mLmhvbGVzOyRjLmlzQ2xvY2tXaXNlKHApPT09ITEmJihwPXAucmV2ZXJzZSgpKTtmb3IobGV0IF89MCx5PWQubGVuZ3RoO188eTtfKyspe2xldCB4PWRbX107JGMuaXNDbG9ja1dpc2UoeCk9PT0hMCYmKGRbX109eC5yZXZlcnNlKCkpfWxldCBnPSRjLnRyaWFuZ3VsYXRlU2hhcGUocCxkKTtmb3IobGV0IF89MCx5PWQubGVuZ3RoO188eTtfKyspe2xldCB4PWRbX107cD1wLmNvbmNhdCh4KX1mb3IobGV0IF89MCx5PXAubGVuZ3RoO188eTtfKyspe2xldCB4PXBbX107aS5wdXNoKHgueCx4LnksMCksby5wdXNoKDAsMCwxKSxhLnB1c2goeC54LHgueSl9Zm9yKGxldCBfPTAseT1nLmxlbmd0aDtfPHk7XysrKXtsZXQgeD1nW19dLGI9eFswXStoLFM9eFsxXStoLEM9eFsyXStoO24ucHVzaChiLFMsQyksbCs9M319fXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpLHI9dGhpcy5wYXJhbWV0ZXJzLnNoYXBlcztyZXR1cm4gSmdyKHIsdCl9c3RhdGljIGZyb21KU09OKHQscil7bGV0IG49W107Zm9yKGxldCBpPTAsbz10LnNoYXBlcy5sZW5ndGg7aTxvO2krKyl7bGV0IGE9clt0LnNoYXBlc1tpXV07bi5wdXNoKGEpfXJldHVybiBuZXcgWTAobix0LmN1cnZlU2VnbWVudHMpfX07ZnVuY3Rpb24gSmdyKGUsdCl7aWYodC5zaGFwZXM9W10sQXJyYXkuaXNBcnJheShlKSlmb3IobGV0IHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe2xldCBpPWVbcl07dC5zaGFwZXMucHVzaChpLnV1aWQpfWVsc2UgdC5zaGFwZXMucHVzaChlLnV1aWQpO3JldHVybiB0fXZhciBqMD1jbGFzcyBleHRlbmRzIFBle2NvbnN0cnVjdG9yKHQ9MSxyPTMyLG49MTYsaT0wLG89TWF0aC5QSSoyLGE9MCxzPU1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJTcGhlcmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx3aWR0aFNlZ21lbnRzOnIsaGVpZ2h0U2VnbWVudHM6bixwaGlTdGFydDppLHBoaUxlbmd0aDpvLHRoZXRhU3RhcnQ6YSx0aGV0YUxlbmd0aDpzfSxyPU1hdGgubWF4KDMsTWF0aC5mbG9vcihyKSksbj1NYXRoLm1heCgyLE1hdGguZmxvb3IobikpO2xldCBsPU1hdGgubWluKGErcyxNYXRoLlBJKSxjPTAsdT1bXSxoPW5ldyBqLGY9bmV3IGoscD1bXSxkPVtdLGc9W10sXz1bXTtmb3IobGV0IHk9MDt5PD1uO3krKyl7bGV0IHg9W10sYj15L24sUz0wO3k9PTAmJmE9PTA/Uz0uNS9yOnk9PW4mJmw9PU1hdGguUEkmJihTPS0uNS9yKTtmb3IobGV0IEM9MDtDPD1yO0MrKyl7bGV0IFA9Qy9yO2gueD0tdCpNYXRoLmNvcyhpK1AqbykqTWF0aC5zaW4oYStiKnMpLGgueT10Kk1hdGguY29zKGErYipzKSxoLno9dCpNYXRoLnNpbihpK1AqbykqTWF0aC5zaW4oYStiKnMpLGQucHVzaChoLngsaC55LGgueiksZi5jb3B5KGgpLm5vcm1hbGl6ZSgpLGcucHVzaChmLngsZi55LGYueiksXy5wdXNoKFArUywxLWIpLHgucHVzaChjKyspfXUucHVzaCh4KX1mb3IobGV0IHk9MDt5PG47eSsrKWZvcihsZXQgeD0wO3g8cjt4Kyspe2xldCBiPXVbeV1beCsxXSxTPXVbeV1beF0sQz11W3krMV1beF0sUD11W3krMV1beCsxXTsoeSE9PTB8fGE+MCkmJnAucHVzaChiLFMsUCksKHkhPT1uLTF8fGw8TWF0aC5QSSkmJnAucHVzaChTLEMsUCl9dGhpcy5zZXRJbmRleChwKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShkLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgeGUoZywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgeGUoXywyKSl9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgajAodC5yYWRpdXMsdC53aWR0aFNlZ21lbnRzLHQuaGVpZ2h0U2VnbWVudHMsdC5waGlTdGFydCx0LnBoaUxlbmd0aCx0LnRoZXRhU3RhcnQsdC50aGV0YUxlbmd0aCl9fSxqMT1jbGFzcyBleHRlbmRzIGNoe2NvbnN0cnVjdG9yKHQ9MSxyPTApe2xldCBuPVsxLDEsMSwtMSwtMSwxLC0xLDEsLTEsMSwtMSwtMV0saT1bMiwxLDAsMCwzLDIsMSwzLDAsMiwzLDFdO3N1cGVyKG4saSx0LHIpLHRoaXMudHlwZT0iVGV0cmFoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6cn19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgajEodC5yYWRpdXMsdC5kZXRhaWwpfX0sWDE9Y2xhc3MgZXh0ZW5kcyBQZXtjb25zdHJ1Y3Rvcih0PTEscj0uNCxuPTgsaT02LG89TWF0aC5QSSoyKXtzdXBlcigpLHRoaXMudHlwZT0iVG9ydXNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCx0dWJlOnIscmFkaWFsU2VnbWVudHM6bix0dWJ1bGFyU2VnbWVudHM6aSxhcmM6b30sbj1NYXRoLmZsb29yKG4pLGk9TWF0aC5mbG9vcihpKTtsZXQgYT1bXSxzPVtdLGw9W10sYz1bXSx1PW5ldyBqLGg9bmV3IGosZj1uZXcgajtmb3IobGV0IHA9MDtwPD1uO3ArKylmb3IobGV0IGQ9MDtkPD1pO2QrKyl7bGV0IGc9ZC9pKm8sXz1wL24qTWF0aC5QSSoyO2gueD0odCtyKk1hdGguY29zKF8pKSpNYXRoLmNvcyhnKSxoLnk9KHQrcipNYXRoLmNvcyhfKSkqTWF0aC5zaW4oZyksaC56PXIqTWF0aC5zaW4oXykscy5wdXNoKGgueCxoLnksaC56KSx1Lng9dCpNYXRoLmNvcyhnKSx1Lnk9dCpNYXRoLnNpbihnKSxmLnN1YlZlY3RvcnMoaCx1KS5ub3JtYWxpemUoKSxsLnB1c2goZi54LGYueSxmLnopLGMucHVzaChkL2kpLGMucHVzaChwL24pfWZvcihsZXQgcD0xO3A8PW47cCsrKWZvcihsZXQgZD0xO2Q8PWk7ZCsrKXtsZXQgZz0oaSsxKSpwK2QtMSxfPShpKzEpKihwLTEpK2QtMSx5PShpKzEpKihwLTEpK2QseD0oaSsxKSpwK2Q7YS5wdXNoKGcsXyx4KSxhLnB1c2goXyx5LHgpfXRoaXMuc2V0SW5kZXgoYSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUocywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IHhlKGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHhlKGMsMikpfXN0YXRpYyBmcm9tSlNPTih0KXtyZXR1cm4gbmV3IFgxKHQucmFkaXVzLHQudHViZSx0LnJhZGlhbFNlZ21lbnRzLHQudHVidWxhclNlZ21lbnRzLHQuYXJjKX19LCQxPWNsYXNzIGV4dGVuZHMgUGV7Y29uc3RydWN0b3IodD0xLHI9LjQsbj02NCxpPTgsbz0yLGE9Myl7c3VwZXIoKSx0aGlzLnR5cGU9IlRvcnVzS25vdEdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHR1YmU6cix0dWJ1bGFyU2VnbWVudHM6bixyYWRpYWxTZWdtZW50czppLHA6byxxOmF9LG49TWF0aC5mbG9vcihuKSxpPU1hdGguZmxvb3IoaSk7bGV0IHM9W10sbD1bXSxjPVtdLHU9W10saD1uZXcgaixmPW5ldyBqLHA9bmV3IGosZD1uZXcgaixnPW5ldyBqLF89bmV3IGoseT1uZXcgajtmb3IobGV0IGI9MDtiPD1uOysrYil7bGV0IFM9Yi9uKm8qTWF0aC5QSSoyO3goUyxvLGEsdCxwKSx4KFMrLjAxLG8sYSx0LGQpLF8uc3ViVmVjdG9ycyhkLHApLHkuYWRkVmVjdG9ycyhkLHApLGcuY3Jvc3NWZWN0b3JzKF8seSkseS5jcm9zc1ZlY3RvcnMoZyxfKSxnLm5vcm1hbGl6ZSgpLHkubm9ybWFsaXplKCk7Zm9yKGxldCBDPTA7Qzw9aTsrK0Mpe2xldCBQPUMvaSpNYXRoLlBJKjIsaz0tcipNYXRoLmNvcyhQKSxPPXIqTWF0aC5zaW4oUCk7aC54PXAueCsoayp5LngrTypnLngpLGgueT1wLnkrKGsqeS55K08qZy55KSxoLno9cC56KyhrKnkueitPKmcueiksbC5wdXNoKGgueCxoLnksaC56KSxmLnN1YlZlY3RvcnMoaCxwKS5ub3JtYWxpemUoKSxjLnB1c2goZi54LGYueSxmLnopLHUucHVzaChiL24pLHUucHVzaChDL2kpfX1mb3IobGV0IGI9MTtiPD1uO2IrKylmb3IobGV0IFM9MTtTPD1pO1MrKyl7bGV0IEM9KGkrMSkqKGItMSkrKFMtMSksUD0oaSsxKSpiKyhTLTEpLGs9KGkrMSkqYitTLE89KGkrMSkqKGItMSkrUztzLnB1c2goQyxQLE8pLHMucHVzaChQLGssTyl9dGhpcy5zZXRJbmRleChzKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgeGUoYywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgeGUodSwyKSk7ZnVuY3Rpb24geChiLFMsQyxQLGspe2xldCBPPU1hdGguY29zKGIpLEQ9TWF0aC5zaW4oYiksQj1DL1MqYixJPU1hdGguY29zKEIpO2sueD1QKigyK0kpKi41Kk8say55PVAqKDIrSSkqRCouNSxrLno9UCpNYXRoLnNpbihCKSouNX19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgJDEodC5yYWRpdXMsdC50dWJlLHQudHVidWxhclNlZ21lbnRzLHQucmFkaWFsU2VnbWVudHMsdC5wLHQucSl9fSxLMT1jbGFzcyBleHRlbmRzIFBle2NvbnN0cnVjdG9yKHQ9bmV3IHVNKG5ldyBqKC0xLC0xLDApLG5ldyBqKC0xLDEsMCksbmV3IGooMSwxLDApKSxyPTY0LG49MSxpPTgsbz0hMSl7c3VwZXIoKSx0aGlzLnR5cGU9IlR1YmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtwYXRoOnQsdHVidWxhclNlZ21lbnRzOnIscmFkaXVzOm4scmFkaWFsU2VnbWVudHM6aSxjbG9zZWQ6b307bGV0IGE9dC5jb21wdXRlRnJlbmV0RnJhbWVzKHIsbyk7dGhpcy50YW5nZW50cz1hLnRhbmdlbnRzLHRoaXMubm9ybWFscz1hLm5vcm1hbHMsdGhpcy5iaW5vcm1hbHM9YS5iaW5vcm1hbHM7bGV0IHM9bmV3IGosbD1uZXcgaixjPW5ldyBMdCx1PW5ldyBqLGg9W10sZj1bXSxwPVtdLGQ9W107ZygpLHRoaXMuc2V0SW5kZXgoZCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUoaCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IHhlKGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHhlKHAsMikpO2Z1bmN0aW9uIGcoKXtmb3IobGV0IGI9MDtiPHI7YisrKV8oYik7XyhvPT09ITE/cjowKSx4KCkseSgpfWZ1bmN0aW9uIF8oYil7dT10LmdldFBvaW50QXQoYi9yLHUpO2xldCBTPWEubm9ybWFsc1tiXSxDPWEuYmlub3JtYWxzW2JdO2ZvcihsZXQgUD0wO1A8PWk7UCsrKXtsZXQgaz1QL2kqTWF0aC5QSSoyLE89TWF0aC5zaW4oayksRD0tTWF0aC5jb3Moayk7bC54PUQqUy54K08qQy54LGwueT1EKlMueStPKkMueSxsLno9RCpTLnorTypDLnosbC5ub3JtYWxpemUoKSxmLnB1c2gobC54LGwueSxsLnopLHMueD11LngrbipsLngscy55PXUueStuKmwueSxzLno9dS56K24qbC56LGgucHVzaChzLngscy55LHMueil9fWZ1bmN0aW9uIHkoKXtmb3IobGV0IGI9MTtiPD1yO2IrKylmb3IobGV0IFM9MTtTPD1pO1MrKyl7bGV0IEM9KGkrMSkqKGItMSkrKFMtMSksUD0oaSsxKSpiKyhTLTEpLGs9KGkrMSkqYitTLE89KGkrMSkqKGItMSkrUztkLnB1c2goQyxQLE8pLGQucHVzaChQLGssTyl9fWZ1bmN0aW9uIHgoKXtmb3IobGV0IGI9MDtiPD1yO2IrKylmb3IobGV0IFM9MDtTPD1pO1MrKyljLng9Yi9yLGMueT1TL2kscC5wdXNoKGMueCxjLnkpfX10b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5wYXRoPXRoaXMucGFyYW1ldGVycy5wYXRoLnRvSlNPTigpLHR9c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgSzEobmV3IERodFt0LnBhdGgudHlwZV0oKS5mcm9tSlNPTih0LnBhdGgpLHQudHVidWxhclNlZ21lbnRzLHQucmFkaXVzLHQucmFkaWFsU2VnbWVudHMsdC5jbG9zZWQpfX0saDY9Y2xhc3MgZXh0ZW5kcyBQZXtjb25zdHJ1Y3Rvcih0PW51bGwpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJXaXJlZnJhbWVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtnZW9tZXRyeTp0fSx0IT09bnVsbCl7bGV0IHI9W10sbj1uZXcgU2V0LGk9bmV3IGosbz1uZXcgajtpZih0LmluZGV4IT09bnVsbCl7bGV0IGE9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLHM9dC5pbmRleCxsPXQuZ3JvdXBzO2wubGVuZ3RoPT09MCYmKGw9W3tzdGFydDowLGNvdW50OnMuY291bnQsbWF0ZXJpYWxJbmRleDowfV0pO2ZvcihsZXQgYz0wLHU9bC5sZW5ndGg7Yzx1OysrYyl7bGV0IGg9bFtjXSxmPWguc3RhcnQscD1oLmNvdW50O2ZvcihsZXQgZD1mLGc9ZitwO2Q8ZztkKz0zKWZvcihsZXQgXz0wO188MztfKyspe2xldCB5PXMuZ2V0WChkK18pLHg9cy5nZXRYKGQrKF8rMSklMyk7aS5mcm9tQnVmZmVyQXR0cmlidXRlKGEseSksby5mcm9tQnVmZmVyQXR0cmlidXRlKGEseCksY2hlKGksbyxuKT09PSEwJiYoci5wdXNoKGkueCxpLnksaS56KSxyLnB1c2goby54LG8ueSxvLnopKX19fWVsc2V7bGV0IGE9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2ZvcihsZXQgcz0wLGw9YS5jb3VudC8zO3M8bDtzKyspZm9yKGxldCBjPTA7YzwzO2MrKyl7bGV0IHU9MypzK2MsaD0zKnMrKGMrMSklMztpLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSx1KSxvLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxoKSxjaGUoaSxvLG4pPT09ITAmJihyLnB1c2goaS54LGkueSxpLnopLHIucHVzaChvLngsby55LG8ueikpfX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShyLDMpKX19fTtmdW5jdGlvbiBjaGUoZSx0LHIpe2xldCBuPWAke2UueH0sJHtlLnl9LCR7ZS56fS0ke3QueH0sJHt0Lnl9LCR7dC56fWAsaT1gJHt0Lnh9LCR7dC55fSwke3Quen0tJHtlLnh9LCR7ZS55fSwke2Uuen1gO3JldHVybiByLmhhcyhuKT09PSEwfHxyLmhhcyhpKT09PSEwPyExOihyLmFkZChuLGkpLCEwKX12YXIgdWhlPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJveEdlb21ldHJ5OkpmLEJveEJ1ZmZlckdlb21ldHJ5OkpmLENpcmNsZUdlb21ldHJ5OkYxLENpcmNsZUJ1ZmZlckdlb21ldHJ5OkYxLENvbmVHZW9tZXRyeTpCMSxDb25lQnVmZmVyR2VvbWV0cnk6QjEsQ3lsaW5kZXJHZW9tZXRyeTpvbSxDeWxpbmRlckJ1ZmZlckdlb21ldHJ5Om9tLERvZGVjYWhlZHJvbkdlb21ldHJ5OkgxLERvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OkgxLEVkZ2VzR2VvbWV0cnk6aTYsRXh0cnVkZUdlb21ldHJ5OnVoLEV4dHJ1ZGVCdWZmZXJHZW9tZXRyeTp1aCxJY29zYWhlZHJvbkdlb21ldHJ5OkcxLEljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnk6RzEsTGF0aGVHZW9tZXRyeTpXMSxMYXRoZUJ1ZmZlckdlb21ldHJ5OlcxLE9jdGFoZWRyb25HZW9tZXRyeTpXMCxPY3RhaGVkcm9uQnVmZmVyR2VvbWV0cnk6VzAsUGxhbmVHZW9tZXRyeTpWMCxQbGFuZUJ1ZmZlckdlb21ldHJ5OlYwLFBvbHloZWRyb25HZW9tZXRyeTpjaCxQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnk6Y2gsUmluZ0dlb21ldHJ5OlkxLFJpbmdCdWZmZXJHZW9tZXRyeTpZMSxTaGFwZUdlb21ldHJ5OlkwLFNoYXBlQnVmZmVyR2VvbWV0cnk6WTAsU3BoZXJlR2VvbWV0cnk6ajAsU3BoZXJlQnVmZmVyR2VvbWV0cnk6ajAsVGV0cmFoZWRyb25HZW9tZXRyeTpqMSxUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OmoxLFRvcnVzR2VvbWV0cnk6WDEsVG9ydXNCdWZmZXJHZW9tZXRyeTpYMSxUb3J1c0tub3RHZW9tZXRyeTokMSxUb3J1c0tub3RCdWZmZXJHZW9tZXRyeTokMSxUdWJlR2VvbWV0cnk6SzEsVHViZUJ1ZmZlckdlb21ldHJ5OksxLFdpcmVmcmFtZUdlb21ldHJ5Omg2fSksZjY9Y2xhc3MgZXh0ZW5kcyBVaXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU2hhZG93TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IG5lKDApLHRoaXMudHJhbnNwYXJlbnQ9ITAsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpc319O2Y2LnByb3RvdHlwZS5pc1NoYWRvd01hdGVyaWFsPSEwO3ZhciBmTT1jbGFzcyBleHRlbmRzIFVpe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy50eXBlPSJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgbmUoMTY3NzcyMTUpLHRoaXMucm91Z2huZXNzPTEsdGhpcy5tZXRhbG5lc3M9MCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBuZSgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9YXgsdGhpcy5ub3JtYWxTY2FsZT1uZXcgTHQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLnJvdWdobmVzc01hcD1udWxsLHRoaXMubWV0YWxuZXNzTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5lbnZNYXBJbnRlbnNpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLnJvdWdobmVzcz10LnJvdWdobmVzcyx0aGlzLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnJvdWdobmVzc01hcD10LnJvdWdobmVzc01hcCx0aGlzLm1ldGFsbmVzc01hcD10Lm1ldGFsbmVzc01hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fTtmTS5wcm90b3R5cGUuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD0hMDt2YXIgcDY9Y2xhc3MgZXh0ZW5kcyBmTXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiIsUEhZU0lDQUw6IiJ9LHRoaXMudHlwZT0iTWVzaFBoeXNpY2FsTWF0ZXJpYWwiLHRoaXMuY2xlYXJjb2F0TWFwPW51bGwsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9MCx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD1udWxsLHRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IEx0KDEsMSksdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9bnVsbCx0aGlzLmlvcj0xLjUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInJlZmxlY3Rpdml0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiBLbygyLjUqKHRoaXMuaW9yLTEpLyh0aGlzLmlvcisxKSwwLDEpfSxzZXQ6ZnVuY3Rpb24ocil7dGhpcy5pb3I9KDErLjQqcikvKDEtLjQqcil9fSksdGhpcy5zaGVlbkNvbG9yPW5ldyBuZSgwKSx0aGlzLnNoZWVuQ29sb3JNYXA9bnVsbCx0aGlzLnNoZWVuUm91Z2huZXNzPTEsdGhpcy5zaGVlblJvdWdobmVzc01hcD1udWxsLHRoaXMudHJhbnNtaXNzaW9uTWFwPW51bGwsdGhpcy50aGlja25lc3M9MCx0aGlzLnRoaWNrbmVzc01hcD1udWxsLHRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZT0wLHRoaXMuYXR0ZW51YXRpb25Db2xvcj1uZXcgbmUoMSwxLDEpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHk9MSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5TWFwPW51bGwsdGhpcy5zcGVjdWxhckNvbG9yPW5ldyBuZSgxLDEsMSksdGhpcy5zcGVjdWxhckNvbG9yTWFwPW51bGwsdGhpcy5fc2hlZW49MCx0aGlzLl9jbGVhcmNvYXQ9MCx0aGlzLl90cmFuc21pc3Npb249MCx0aGlzLnNldFZhbHVlcyh0KX1nZXQgc2hlZW4oKXtyZXR1cm4gdGhpcy5fc2hlZW59c2V0IHNoZWVuKHQpe3RoaXMuX3NoZWVuPjAhPXQ+MCYmdGhpcy52ZXJzaW9uKyssdGhpcy5fc2hlZW49dH1nZXQgY2xlYXJjb2F0KCl7cmV0dXJuIHRoaXMuX2NsZWFyY29hdH1zZXQgY2xlYXJjb2F0KHQpe3RoaXMuX2NsZWFyY29hdD4wIT10PjAmJnRoaXMudmVyc2lvbisrLHRoaXMuX2NsZWFyY29hdD10fWdldCB0cmFuc21pc3Npb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNtaXNzaW9ufXNldCB0cmFuc21pc3Npb24odCl7dGhpcy5fdHJhbnNtaXNzaW9uPjAhPXQ+MCYmdGhpcy52ZXJzaW9uKyssdGhpcy5fdHJhbnNtaXNzaW9uPXR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLmNsZWFyY29hdD10LmNsZWFyY29hdCx0aGlzLmNsZWFyY29hdE1hcD10LmNsZWFyY29hdE1hcCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD10LmNsZWFyY29hdFJvdWdobmVzc01hcCx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD10LmNsZWFyY29hdE5vcm1hbE1hcCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLmNvcHkodC5jbGVhcmNvYXROb3JtYWxTY2FsZSksdGhpcy5pb3I9dC5pb3IsdGhpcy5zaGVlbj10LnNoZWVuLHRoaXMuc2hlZW5Db2xvci5jb3B5KHQuc2hlZW5Db2xvciksdGhpcy5zaGVlbkNvbG9yTWFwPXQuc2hlZW5Db2xvck1hcCx0aGlzLnNoZWVuUm91Z2huZXNzPXQuc2hlZW5Sb3VnaG5lc3MsdGhpcy5zaGVlblJvdWdobmVzc01hcD10LnNoZWVuUm91Z2huZXNzTWFwLHRoaXMudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uLHRoaXMudHJhbnNtaXNzaW9uTWFwPXQudHJhbnNtaXNzaW9uTWFwLHRoaXMudGhpY2tuZXNzPXQudGhpY2tuZXNzLHRoaXMudGhpY2tuZXNzTWFwPXQudGhpY2tuZXNzTWFwLHRoaXMuYXR0ZW51YXRpb25EaXN0YW5jZT10LmF0dGVudWF0aW9uRGlzdGFuY2UsdGhpcy5hdHRlbnVhdGlvbkNvbG9yLmNvcHkodC5hdHRlbnVhdGlvbkNvbG9yKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PXQuc3BlY3VsYXJJbnRlbnNpdHksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD10LnNwZWN1bGFySW50ZW5zaXR5TWFwLHRoaXMuc3BlY3VsYXJDb2xvci5jb3B5KHQuc3BlY3VsYXJDb2xvciksdGhpcy5zcGVjdWxhckNvbG9yTWFwPXQuc3BlY3VsYXJDb2xvck1hcCx0aGlzfX07cDYucHJvdG90eXBlLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw9ITA7dmFyIGQ2PWNsYXNzIGV4dGVuZHMgVWl7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9Ik1lc2hQaG9uZ01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBuZSgxNjc3NzIxNSksdGhpcy5zcGVjdWxhcj1uZXcgbmUoMTExODQ4MSksdGhpcy5zaGluaW5lc3M9MzAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgbmUoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPWF4LHRoaXMubm9ybWFsU2NhbGU9bmV3IEx0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT1SNix0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fTtkNi5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMDt2YXIgbTY9Y2xhc3MgZXh0ZW5kcyBVaXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17VE9PTjoiIn0sdGhpcy50eXBlPSJNZXNoVG9vbk1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBuZSgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmdyYWRpZW50TWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IG5lKDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT1heCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBMdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmdyYWRpZW50TWFwPXQuZ3JhZGllbnRNYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fTttNi5wcm90b3R5cGUuaXNNZXNoVG9vbk1hdGVyaWFsPSEwO3ZhciBnNj1jbGFzcyBleHRlbmRzIFVpe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9YXgsdGhpcy5ub3JtYWxTY2FsZT1uZXcgTHQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX07ZzYucHJvdG90eXBlLmlzTWVzaE5vcm1hbE1hdGVyaWFsPSEwO3ZhciBfNj1jbGFzcyBleHRlbmRzIFVpe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoTGFtYmVydE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBuZSgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgbmUoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPVI2LHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319O182LnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw9ITA7dmFyIHk2PWNsYXNzIGV4dGVuZHMgVWl7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e01BVENBUDoiIn0sdGhpcy50eXBlPSJNZXNoTWF0Y2FwTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IG5lKDE2Nzc3MjE1KSx0aGlzLm1hdGNhcD1udWxsLHRoaXMubWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT1heCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBMdCgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hdGNhcD10Lm1hdGNhcCx0aGlzLm1hcD10Lm1hcCx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319O3k2LnByb3RvdHlwZS5pc01lc2hNYXRjYXBNYXRlcmlhbD0hMDt2YXIgdjY9Y2xhc3MgZXh0ZW5kcyBxaXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTGluZURhc2hlZE1hdGVyaWFsIix0aGlzLnNjYWxlPTEsdGhpcy5kYXNoU2l6ZT0zLHRoaXMuZ2FwU2l6ZT0xLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zY2FsZT10LnNjYWxlLHRoaXMuZGFzaFNpemU9dC5kYXNoU2l6ZSx0aGlzLmdhcFNpemU9dC5nYXBTaXplLHRoaXN9fTt2Ni5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7dmFyIFFncj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxTaGFkb3dNYXRlcmlhbDpmNixTcHJpdGVNYXRlcmlhbDpuTSxSYXdTaGFkZXJNYXRlcmlhbDpVMCxTaGFkZXJNYXRlcmlhbDpzaCxQb2ludHNNYXRlcmlhbDpubSxNZXNoUGh5c2ljYWxNYXRlcmlhbDpwNixNZXNoU3RhbmRhcmRNYXRlcmlhbDpmTSxNZXNoUGhvbmdNYXRlcmlhbDpkNixNZXNoVG9vbk1hdGVyaWFsOm02LE1lc2hOb3JtYWxNYXRlcmlhbDpnNixNZXNoTGFtYmVydE1hdGVyaWFsOl82LE1lc2hEZXB0aE1hdGVyaWFsOnRNLE1lc2hEaXN0YW5jZU1hdGVyaWFsOmVNLE1lc2hCYXNpY01hdGVyaWFsOmFoLE1lc2hNYXRjYXBNYXRlcmlhbDp5NixMaW5lRGFzaGVkTWF0ZXJpYWw6djYsTGluZUJhc2ljTWF0ZXJpYWw6cWksTWF0ZXJpYWw6VWl9KSxqbj17YXJyYXlTbGljZTpmdW5jdGlvbihlLHQscil7cmV0dXJuIGpuLmlzVHlwZWRBcnJheShlKT9uZXcgZS5jb25zdHJ1Y3RvcihlLnN1YmFycmF5KHQsciE9PXZvaWQgMD9yOmUubGVuZ3RoKSk6ZS5zbGljZSh0LHIpfSxjb252ZXJ0QXJyYXk6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiFlfHwhciYmZS5jb25zdHJ1Y3Rvcj09PXQ/ZTp0eXBlb2YgdC5CWVRFU19QRVJfRUxFTUVOVD09Im51bWJlciI/bmV3IHQoZSk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9LGlzVHlwZWRBcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGUpJiYhKGUgaW5zdGFuY2VvZiBEYXRhVmlldyl9LGdldEtleWZyYW1lT3JkZXI6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChpLG8pe3JldHVybiBlW2ldLWVbb119bGV0IHI9ZS5sZW5ndGgsbj1uZXcgQXJyYXkocik7Zm9yKGxldCBpPTA7aSE9PXI7KytpKW5baV09aTtyZXR1cm4gbi5zb3J0KHQpLG59LHNvcnRlZEFycmF5OmZ1bmN0aW9uKGUsdCxyKXtsZXQgbj1lLmxlbmd0aCxpPW5ldyBlLmNvbnN0cnVjdG9yKG4pO2ZvcihsZXQgbz0wLGE9MDthIT09bjsrK28pe2xldCBzPXJbb10qdDtmb3IobGV0IGw9MDtsIT09dDsrK2wpaVthKytdPWVbcytsXX1yZXR1cm4gaX0sZmxhdHRlbkpTT046ZnVuY3Rpb24oZSx0LHIsbil7bGV0IGk9MSxvPWVbMF07Zm9yKDtvIT09dm9pZCAwJiZvW25dPT09dm9pZCAwOylvPWVbaSsrXTtpZihvPT09dm9pZCAwKXJldHVybjtsZXQgYT1vW25dO2lmKGEhPT12b2lkIDApaWYoQXJyYXkuaXNBcnJheShhKSlkbyBhPW9bbl0sYSE9PXZvaWQgMCYmKHQucHVzaChvLnRpbWUpLHIucHVzaC5hcHBseShyLGEpKSxvPWVbaSsrXTt3aGlsZShvIT09dm9pZCAwKTtlbHNlIGlmKGEudG9BcnJheSE9PXZvaWQgMClkbyBhPW9bbl0sYSE9PXZvaWQgMCYmKHQucHVzaChvLnRpbWUpLGEudG9BcnJheShyLHIubGVuZ3RoKSksbz1lW2krK107d2hpbGUobyE9PXZvaWQgMCk7ZWxzZSBkbyBhPW9bbl0sYSE9PXZvaWQgMCYmKHQucHVzaChvLnRpbWUpLHIucHVzaChhKSksbz1lW2krK107d2hpbGUobyE9PXZvaWQgMCl9LHN1YmNsaXA6ZnVuY3Rpb24oZSx0LHIsbixpPTMwKXtsZXQgbz1lLmNsb25lKCk7by5uYW1lPXQ7bGV0IGE9W107Zm9yKGxldCBsPTA7bDxvLnRyYWNrcy5sZW5ndGg7KytsKXtsZXQgYz1vLnRyYWNrc1tsXSx1PWMuZ2V0VmFsdWVTaXplKCksaD1bXSxmPVtdO2ZvcihsZXQgcD0wO3A8Yy50aW1lcy5sZW5ndGg7KytwKXtsZXQgZD1jLnRpbWVzW3BdKmk7aWYoIShkPHJ8fGQ+PW4pKXtoLnB1c2goYy50aW1lc1twXSk7Zm9yKGxldCBnPTA7Zzx1OysrZylmLnB1c2goYy52YWx1ZXNbcCp1K2ddKX19aC5sZW5ndGghPT0wJiYoYy50aW1lcz1qbi5jb252ZXJ0QXJyYXkoaCxjLnRpbWVzLmNvbnN0cnVjdG9yKSxjLnZhbHVlcz1qbi5jb252ZXJ0QXJyYXkoZixjLnZhbHVlcy5jb25zdHJ1Y3RvciksYS5wdXNoKGMpKX1vLnRyYWNrcz1hO2xldCBzPTEvMDtmb3IobGV0IGw9MDtsPG8udHJhY2tzLmxlbmd0aDsrK2wpcz5vLnRyYWNrc1tsXS50aW1lc1swXSYmKHM9by50cmFja3NbbF0udGltZXNbMF0pO2ZvcihsZXQgbD0wO2w8by50cmFja3MubGVuZ3RoOysrbClvLnRyYWNrc1tsXS5zaGlmdCgtMSpzKTtyZXR1cm4gby5yZXNldER1cmF0aW9uKCksb30sbWFrZUNsaXBBZGRpdGl2ZTpmdW5jdGlvbihlLHQ9MCxyPWUsbj0zMCl7bjw9MCYmKG49MzApO2xldCBpPXIudHJhY2tzLmxlbmd0aCxvPXQvbjtmb3IobGV0IGE9MDthPGk7KythKXtsZXQgcz1yLnRyYWNrc1thXSxsPXMuVmFsdWVUeXBlTmFtZTtpZihsPT09ImJvb2wifHxsPT09InN0cmluZyIpY29udGludWU7bGV0IGM9ZS50cmFja3MuZmluZChmdW5jdGlvbih5KXtyZXR1cm4geS5uYW1lPT09cy5uYW1lJiZ5LlZhbHVlVHlwZU5hbWU9PT1sfSk7aWYoYz09PXZvaWQgMCljb250aW51ZTtsZXQgdT0wLGg9cy5nZXRWYWx1ZVNpemUoKTtzLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYodT1oLzMpO2xldCBmPTAscD1jLmdldFZhbHVlU2l6ZSgpO2MuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihmPXAvMyk7bGV0IGQ9cy50aW1lcy5sZW5ndGgtMSxnO2lmKG88PXMudGltZXNbMF0pe2xldCB5PXUseD1oLXU7Zz1qbi5hcnJheVNsaWNlKHMudmFsdWVzLHkseCl9ZWxzZSBpZihvPj1zLnRpbWVzW2RdKXtsZXQgeT1kKmgrdSx4PXkraC11O2c9am4uYXJyYXlTbGljZShzLnZhbHVlcyx5LHgpfWVsc2V7bGV0IHk9cy5jcmVhdGVJbnRlcnBvbGFudCgpLHg9dSxiPWgtdTt5LmV2YWx1YXRlKG8pLGc9am4uYXJyYXlTbGljZSh5LnJlc3VsdEJ1ZmZlcix4LGIpfWw9PT0icXVhdGVybmlvbiImJm5ldyB2aSgpLmZyb21BcnJheShnKS5ub3JtYWxpemUoKS5jb25qdWdhdGUoKS50b0FycmF5KGcpO2xldCBfPWMudGltZXMubGVuZ3RoO2ZvcihsZXQgeT0wO3k8XzsrK3kpe2xldCB4PXkqcCtmO2lmKGw9PT0icXVhdGVybmlvbiIpdmkubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQoYy52YWx1ZXMseCxnLDAsYy52YWx1ZXMseCk7ZWxzZXtsZXQgYj1wLWYqMjtmb3IobGV0IFM9MDtTPGI7KytTKWMudmFsdWVzW3grU10tPWdbU119fX1yZXR1cm4gZS5ibGVuZE1vZGU9TGh0LGV9fSxoaD1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbixpKXt0aGlzLnBhcmFtZXRlclBvc2l0aW9ucz10LHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5yZXN1bHRCdWZmZXI9aSE9PXZvaWQgMD9pOm5ldyByLmNvbnN0cnVjdG9yKG4pLHRoaXMuc2FtcGxlVmFsdWVzPXIsdGhpcy52YWx1ZVNpemU9bix0aGlzLnNldHRpbmdzPW51bGwsdGhpcy5EZWZhdWx0U2V0dGluZ3NfPXt9fWV2YWx1YXRlKHQpe2xldCByPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zLG49dGhpcy5fY2FjaGVkSW5kZXgsaT1yW25dLG89cltuLTFdO3Q6e2U6e2xldCBhO3I6e246aWYoISh0PGkpKXtmb3IobGV0IHM9bisyOzspe2lmKGk9PT12b2lkIDApe2lmKHQ8bylicmVhayBuO3JldHVybiBuPXIubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5hZnRlckVuZF8obi0xLHQsbyl9aWYobj09PXMpYnJlYWs7aWYobz1pLGk9clsrK25dLHQ8aSlicmVhayBlfWE9ci5sZW5ndGg7YnJlYWsgcn1pZighKHQ+PW8pKXtsZXQgcz1yWzFdO3Q8cyYmKG49MixvPXMpO2ZvcihsZXQgbD1uLTI7Oyl7aWYobz09PXZvaWQgMClyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsaSk7aWYobj09PWwpYnJlYWs7aWYoaT1vLG89clstLW4tMV0sdD49bylicmVhayBlfWE9bixuPTA7YnJlYWsgcn1icmVhayB0fWZvcig7bjxhOyl7bGV0IHM9bithPj4+MTt0PHJbc10/YT1zOm49cysxfWlmKGk9cltuXSxvPXJbbi0xXSxvPT09dm9pZCAwKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxpKTtpZihpPT09dm9pZCAwKXJldHVybiBuPXIubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW4sdGhpcy5hZnRlckVuZF8obi0xLG8sdCl9dGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmludGVydmFsQ2hhbmdlZF8obixvLGkpfXJldHVybiB0aGlzLmludGVycG9sYXRlXyhuLG8sdCxpKX1nZXRTZXR0aW5nc18oKXtyZXR1cm4gdGhpcy5zZXR0aW5nc3x8dGhpcy5EZWZhdWx0U2V0dGluZ3NffWNvcHlTYW1wbGVWYWx1ZV8odCl7bGV0IHI9dGhpcy5yZXN1bHRCdWZmZXIsbj10aGlzLnNhbXBsZVZhbHVlcyxpPXRoaXMudmFsdWVTaXplLG89dCppO2ZvcihsZXQgYT0wO2EhPT1pOysrYSlyW2FdPW5bbythXTtyZXR1cm4gcn1pbnRlcnBvbGF0ZV8oKXt0aHJvdyBuZXcgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIil9aW50ZXJ2YWxDaGFuZ2VkXygpe319O2hoLnByb3RvdHlwZS5iZWZvcmVTdGFydF89aGgucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV87aGgucHJvdG90eXBlLmFmdGVyRW5kXz1oaC5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXzt2YXIgeFU9Y2xhc3MgZXh0ZW5kcyBoaHtjb25zdHJ1Y3Rvcih0LHIsbixpKXtzdXBlcih0LHIsbixpKSx0aGlzLl93ZWlnaHRQcmV2PS0wLHRoaXMuX29mZnNldFByZXY9LTAsdGhpcy5fd2VpZ2h0TmV4dD0tMCx0aGlzLl9vZmZzZXROZXh0PS0wLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17ZW5kaW5nU3RhcnQ6RTEsZW5kaW5nRW5kOkUxfX1pbnRlcnZhbENoYW5nZWRfKHQscixuKXtsZXQgaT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucyxvPXQtMixhPXQrMSxzPWlbb10sbD1pW2FdO2lmKHM9PT12b2lkIDApc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nU3RhcnQpe2Nhc2UgVDE6bz10LHM9MipyLW47YnJlYWs7Y2FzZSAkUDpvPWkubGVuZ3RoLTIscz1yK2lbb10taVtvKzFdO2JyZWFrO2RlZmF1bHQ6bz10LHM9bn1pZihsPT09dm9pZCAwKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ0VuZCl7Y2FzZSBUMTphPXQsbD0yKm4tcjticmVhaztjYXNlICRQOmE9MSxsPW4raVsxXS1pWzBdO2JyZWFrO2RlZmF1bHQ6YT10LTEsbD1yfWxldCBjPShuLXIpKi41LHU9dGhpcy52YWx1ZVNpemU7dGhpcy5fd2VpZ2h0UHJldj1jLyhyLXMpLHRoaXMuX3dlaWdodE5leHQ9Yy8obC1uKSx0aGlzLl9vZmZzZXRQcmV2PW8qdSx0aGlzLl9vZmZzZXROZXh0PWEqdX1pbnRlcnBvbGF0ZV8odCxyLG4saSl7bGV0IG89dGhpcy5yZXN1bHRCdWZmZXIsYT10aGlzLnNhbXBsZVZhbHVlcyxzPXRoaXMudmFsdWVTaXplLGw9dCpzLGM9bC1zLHU9dGhpcy5fb2Zmc2V0UHJldixoPXRoaXMuX29mZnNldE5leHQsZj10aGlzLl93ZWlnaHRQcmV2LHA9dGhpcy5fd2VpZ2h0TmV4dCxkPShuLXIpLyhpLXIpLGc9ZCpkLF89ZypkLHk9LWYqXysyKmYqZy1mKmQseD0oMStmKSpfKygtMS41LTIqZikqZysoLS41K2YpKmQrMSxiPSgtMS1wKSpfKygxLjUrcCkqZysuNSpkLFM9cCpfLXAqZztmb3IobGV0IEM9MDtDIT09czsrK0Mpb1tDXT15KmFbdStDXSt4KmFbYytDXStiKmFbbCtDXStTKmFbaCtDXTtyZXR1cm4gb319LHg2PWNsYXNzIGV4dGVuZHMgaGh7Y29uc3RydWN0b3IodCxyLG4saSl7c3VwZXIodCxyLG4saSl9aW50ZXJwb2xhdGVfKHQscixuLGkpe2xldCBvPXRoaXMucmVzdWx0QnVmZmVyLGE9dGhpcy5zYW1wbGVWYWx1ZXMscz10aGlzLnZhbHVlU2l6ZSxsPXQqcyxjPWwtcyx1PShuLXIpLyhpLXIpLGg9MS11O2ZvcihsZXQgZj0wO2YhPT1zOysrZilvW2ZdPWFbYytmXSpoK2FbbCtmXSp1O3JldHVybiBvfX0sYlU9Y2xhc3MgZXh0ZW5kcyBoaHtjb25zdHJ1Y3Rvcih0LHIsbixpKXtzdXBlcih0LHIsbixpKX1pbnRlcnBvbGF0ZV8odCl7cmV0dXJuIHRoaXMuY29weVNhbXBsZVZhbHVlXyh0LTEpfX0sTmw9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4saSl7aWYodD09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkIik7aWYocj09PXZvaWQgMHx8ci5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogbm8ga2V5ZnJhbWVzIGluIHRyYWNrIG5hbWVkICIrdCk7dGhpcy5uYW1lPXQsdGhpcy50aW1lcz1qbi5jb252ZXJ0QXJyYXkocix0aGlzLlRpbWVCdWZmZXJUeXBlKSx0aGlzLnZhbHVlcz1qbi5jb252ZXJ0QXJyYXkobix0aGlzLlZhbHVlQnVmZmVyVHlwZSksdGhpcy5zZXRJbnRlcnBvbGF0aW9uKGl8fHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXN0YXRpYyB0b0pTT04odCl7bGV0IHI9dC5jb25zdHJ1Y3RvcixuO2lmKHIudG9KU09OIT09dGhpcy50b0pTT04pbj1yLnRvSlNPTih0KTtlbHNle249e25hbWU6dC5uYW1lLHRpbWVzOmpuLmNvbnZlcnRBcnJheSh0LnRpbWVzLEFycmF5KSx2YWx1ZXM6am4uY29udmVydEFycmF5KHQudmFsdWVzLEFycmF5KX07bGV0IGk9dC5nZXRJbnRlcnBvbGF0aW9uKCk7aSE9PXQuRGVmYXVsdEludGVycG9sYXRpb24mJihuLmludGVycG9sYXRpb249aSl9cmV0dXJuIG4udHlwZT10LlZhbHVlVHlwZU5hbWUsbn1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZSh0KXtyZXR1cm4gbmV3IGJVKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyB4Nih0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoKHQpe3JldHVybiBuZXcgeFUodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfXNldEludGVycG9sYXRpb24odCl7bGV0IHI7c3dpdGNoKHQpe2Nhc2UgalA6cj10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlO2JyZWFrO2Nhc2UgWFA6cj10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjticmVhaztjYXNlIFFWOnI9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg7YnJlYWt9aWYocj09PXZvaWQgMCl7bGV0IG49InVuc3VwcG9ydGVkIGludGVycG9sYXRpb24gZm9yICIrdGhpcy5WYWx1ZVR5cGVOYW1lKyIga2V5ZnJhbWUgdHJhY2sgbmFtZWQgIit0aGlzLm5hbWU7aWYodGhpcy5jcmVhdGVJbnRlcnBvbGFudD09PXZvaWQgMClpZih0IT09dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil0aGlzLnNldEludGVycG9sYXRpb24odGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbik7ZWxzZSB0aHJvdyBuZXcgRXJyb3Iobik7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuS2V5ZnJhbWVUcmFjazoiLG4pLHRoaXN9cmV0dXJuIHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQ9cix0aGlzfWdldEludGVycG9sYXRpb24oKXtzd2l0Y2godGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlOnJldHVybiBqUDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnJldHVybiBYUDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnJldHVybiBRVn19Z2V0VmFsdWVTaXplKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aC90aGlzLnRpbWVzLmxlbmd0aH1zaGlmdCh0KXtpZih0IT09MCl7bGV0IHI9dGhpcy50aW1lcztmb3IobGV0IG49MCxpPXIubGVuZ3RoO24hPT1pOysrbilyW25dKz10fXJldHVybiB0aGlzfXNjYWxlKHQpe2lmKHQhPT0xKXtsZXQgcj10aGlzLnRpbWVzO2ZvcihsZXQgbj0wLGk9ci5sZW5ndGg7biE9PWk7KytuKXJbbl0qPXR9cmV0dXJuIHRoaXN9dHJpbSh0LHIpe2xldCBuPXRoaXMudGltZXMsaT1uLmxlbmd0aCxvPTAsYT1pLTE7Zm9yKDtvIT09aSYmbltvXTx0OykrK287Zm9yKDthIT09LTEmJm5bYV0+cjspLS1hO2lmKCsrYSxvIT09MHx8YSE9PWkpe28+PWEmJihhPU1hdGgubWF4KGEsMSksbz1hLTEpO2xldCBzPXRoaXMuZ2V0VmFsdWVTaXplKCk7dGhpcy50aW1lcz1qbi5hcnJheVNsaWNlKG4sbyxhKSx0aGlzLnZhbHVlcz1qbi5hcnJheVNsaWNlKHRoaXMudmFsdWVzLG8qcyxhKnMpfXJldHVybiB0aGlzfXZhbGlkYXRlKCl7bGV0IHQ9ITAscj10aGlzLmdldFZhbHVlU2l6ZSgpO3ItTWF0aC5mbG9vcihyKSE9PTAmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBJbnZhbGlkIHZhbHVlIHNpemUgaW4gdHJhY2suIix0aGlzKSx0PSExKTtsZXQgbj10aGlzLnRpbWVzLGk9dGhpcy52YWx1ZXMsbz1uLmxlbmd0aDtvPT09MCYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRyYWNrIGlzIGVtcHR5LiIsdGhpcyksdD0hMSk7bGV0IGE9bnVsbDtmb3IobGV0IHM9MDtzIT09bztzKyspe2xldCBsPW5bc107aWYodHlwZW9mIGw9PSJudW1iZXIiJiZpc05hTihsKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLHMsbCksdD0hMTticmVha31pZihhIT09bnVsbCYmYT5sKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBPdXQgb2Ygb3JkZXIga2V5cy4iLHRoaXMscyxsLGEpLHQ9ITE7YnJlYWt9YT1sfWlmKGkhPT12b2lkIDAmJmpuLmlzVHlwZWRBcnJheShpKSlmb3IobGV0IHM9MCxsPWkubGVuZ3RoO3MhPT1sOysrcyl7bGV0IGM9aVtzXTtpZihpc05hTihjKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxzLGMpLHQ9ITE7YnJlYWt9fXJldHVybiB0fW9wdGltaXplKCl7bGV0IHQ9am4uYXJyYXlTbGljZSh0aGlzLnRpbWVzKSxyPWpuLmFycmF5U2xpY2UodGhpcy52YWx1ZXMpLG49dGhpcy5nZXRWYWx1ZVNpemUoKSxpPXRoaXMuZ2V0SW50ZXJwb2xhdGlvbigpPT09UVYsbz10Lmxlbmd0aC0xLGE9MTtmb3IobGV0IHM9MTtzPG87KytzKXtsZXQgbD0hMSxjPXRbc10sdT10W3MrMV07aWYoYyE9PXUmJihzIT09MXx8YyE9PXRbMF0pKWlmKGkpbD0hMDtlbHNle2xldCBoPXMqbixmPWgtbixwPWgrbjtmb3IobGV0IGQ9MDtkIT09bjsrK2Qpe2xldCBnPXJbaCtkXTtpZihnIT09cltmK2RdfHxnIT09cltwK2RdKXtsPSEwO2JyZWFrfX19aWYobCl7aWYocyE9PWEpe3RbYV09dFtzXTtsZXQgaD1zKm4sZj1hKm47Zm9yKGxldCBwPTA7cCE9PW47KytwKXJbZitwXT1yW2grcF19KythfX1pZihvPjApe3RbYV09dFtvXTtmb3IobGV0IHM9bypuLGw9YSpuLGM9MDtjIT09bjsrK2MpcltsK2NdPXJbcytjXTsrK2F9cmV0dXJuIGEhPT10Lmxlbmd0aD8odGhpcy50aW1lcz1qbi5hcnJheVNsaWNlKHQsMCxhKSx0aGlzLnZhbHVlcz1qbi5hcnJheVNsaWNlKHIsMCxhKm4pKToodGhpcy50aW1lcz10LHRoaXMudmFsdWVzPXIpLHRoaXN9Y2xvbmUoKXtsZXQgdD1qbi5hcnJheVNsaWNlKHRoaXMudGltZXMsMCkscj1qbi5hcnJheVNsaWNlKHRoaXMudmFsdWVzLDApLG49dGhpcy5jb25zdHJ1Y3RvcixpPW5ldyBuKHRoaXMubmFtZSx0LHIpO3JldHVybiBpLmNyZWF0ZUludGVycG9sYW50PXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQsaX19O05sLnByb3RvdHlwZS5UaW1lQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXk7TmwucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXk7TmwucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPVhQO3ZhciBhbT1jbGFzcyBleHRlbmRzIE5se307YW0ucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImJvb2wiO2FtLnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9QXJyYXk7YW0ucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPWpQO2FtLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI9dm9pZCAwO2FtLnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO3ZhciBiNj1jbGFzcyBleHRlbmRzIE5se307YjYucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImNvbG9yIjt2YXIgWjE9Y2xhc3MgZXh0ZW5kcyBObHt9O1oxLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJudW1iZXIiO3ZhciB3VT1jbGFzcyBleHRlbmRzIGhoe2NvbnN0cnVjdG9yKHQscixuLGkpe3N1cGVyKHQscixuLGkpfWludGVycG9sYXRlXyh0LHIsbixpKXtsZXQgbz10aGlzLnJlc3VsdEJ1ZmZlcixhPXRoaXMuc2FtcGxlVmFsdWVzLHM9dGhpcy52YWx1ZVNpemUsbD0obi1yKS8oaS1yKSxjPXQqcztmb3IobGV0IHU9YytzO2MhPT11O2MrPTQpdmkuc2xlcnBGbGF0KG8sMCxhLGMtcyxhLGMsbCk7cmV0dXJuIG99fSxYMD1jbGFzcyBleHRlbmRzIE5se0ludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IHdVKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX19O1gwLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJxdWF0ZXJuaW9uIjtYMC5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249WFA7WDAucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7dmFyIHNtPWNsYXNzIGV4dGVuZHMgTmx7fTtzbS5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ic3RyaW5nIjtzbS5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5O3NtLnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1qUDtzbS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMDtzbS5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDt2YXIgSjE9Y2xhc3MgZXh0ZW5kcyBObHt9O0oxLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJ2ZWN0b3IiO3ZhciBRMT1jbGFzc3tjb25zdHJ1Y3Rvcih0LHI9LTEsbixpPVlVKXt0aGlzLm5hbWU9dCx0aGlzLnRyYWNrcz1uLHRoaXMuZHVyYXRpb249cix0aGlzLmJsZW5kTW9kZT1pLHRoaXMudXVpZD1SbCgpLHRoaXMuZHVyYXRpb248MCYmdGhpcy5yZXNldER1cmF0aW9uKCl9c3RhdGljIHBhcnNlKHQpe2xldCByPVtdLG49dC50cmFja3MsaT0xLyh0LmZwc3x8MSk7Zm9yKGxldCBhPTAscz1uLmxlbmd0aDthIT09czsrK2Epci5wdXNoKGUwcihuW2FdKS5zY2FsZShpKSk7bGV0IG89bmV3IHRoaXModC5uYW1lLHQuZHVyYXRpb24scix0LmJsZW5kTW9kZSk7cmV0dXJuIG8udXVpZD10LnV1aWQsb31zdGF0aWMgdG9KU09OKHQpe2xldCByPVtdLG49dC50cmFja3MsaT17bmFtZTp0Lm5hbWUsZHVyYXRpb246dC5kdXJhdGlvbix0cmFja3M6cix1dWlkOnQudXVpZCxibGVuZE1vZGU6dC5ibGVuZE1vZGV9O2ZvcihsZXQgbz0wLGE9bi5sZW5ndGg7byE9PWE7KytvKXIucHVzaChObC50b0pTT04obltvXSkpO3JldHVybiBpfXN0YXRpYyBDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LHIsbixpKXtsZXQgbz1yLmxlbmd0aCxhPVtdO2ZvcihsZXQgcz0wO3M8bztzKyspe2xldCBsPVtdLGM9W107bC5wdXNoKChzK28tMSklbyxzLChzKzEpJW8pLGMucHVzaCgwLDEsMCk7bGV0IHU9am4uZ2V0S2V5ZnJhbWVPcmRlcihsKTtsPWpuLnNvcnRlZEFycmF5KGwsMSx1KSxjPWpuLnNvcnRlZEFycmF5KGMsMSx1KSwhaSYmbFswXT09PTAmJihsLnB1c2gobyksYy5wdXNoKGNbMF0pKSxhLnB1c2gobmV3IFoxKCIubW9ycGhUYXJnZXRJbmZsdWVuY2VzWyIrcltzXS5uYW1lKyJdIixsLGMpLnNjYWxlKDEvbikpfXJldHVybiBuZXcgdGhpcyh0LC0xLGEpfXN0YXRpYyBmaW5kQnlOYW1lKHQscil7bGV0IG49dDtpZighQXJyYXkuaXNBcnJheSh0KSl7bGV0IGk9dDtuPWkuZ2VvbWV0cnkmJmkuZ2VvbWV0cnkuYW5pbWF0aW9uc3x8aS5hbmltYXRpb25zfWZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKWlmKG5baV0ubmFtZT09PXIpcmV0dXJuIG5baV07cmV0dXJuIG51bGx9c3RhdGljIENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzKHQscixuKXtsZXQgaT17fSxvPS9eKFtcdy1dKj8pKFtcZF0rKSQvO2ZvcihsZXQgcz0wLGw9dC5sZW5ndGg7czxsO3MrKyl7bGV0IGM9dFtzXSx1PWMubmFtZS5tYXRjaChvKTtpZih1JiZ1Lmxlbmd0aD4xKXtsZXQgaD11WzFdLGY9aVtoXTtmfHwoaVtoXT1mPVtdKSxmLnB1c2goYyl9fWxldCBhPVtdO2ZvcihsZXQgcyBpbiBpKWEucHVzaCh0aGlzLkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHMsaVtzXSxyLG4pKTtyZXR1cm4gYX1zdGF0aWMgcGFyc2VBbmltYXRpb24odCxyKXtpZighdClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO2xldCBuPWZ1bmN0aW9uKGgsZixwLGQsZyl7aWYocC5sZW5ndGghPT0wKXtsZXQgXz1bXSx5PVtdO2puLmZsYXR0ZW5KU09OKHAsXyx5LGQpLF8ubGVuZ3RoIT09MCYmZy5wdXNoKG5ldyBoKGYsXyx5KSl9fSxpPVtdLG89dC5uYW1lfHwiZGVmYXVsdCIsYT10LmZwc3x8MzAscz10LmJsZW5kTW9kZSxsPXQubGVuZ3RofHwtMSxjPXQuaGllcmFyY2h5fHxbXTtmb3IobGV0IGg9MDtoPGMubGVuZ3RoO2grKyl7bGV0IGY9Y1toXS5rZXlzO2lmKCEoIWZ8fGYubGVuZ3RoPT09MCkpaWYoZlswXS5tb3JwaFRhcmdldHMpe2xldCBwPXt9LGQ7Zm9yKGQ9MDtkPGYubGVuZ3RoO2QrKylpZihmW2RdLm1vcnBoVGFyZ2V0cylmb3IobGV0IGc9MDtnPGZbZF0ubW9ycGhUYXJnZXRzLmxlbmd0aDtnKyspcFtmW2RdLm1vcnBoVGFyZ2V0c1tnXV09LTE7Zm9yKGxldCBnIGluIHApe2xldCBfPVtdLHk9W107Zm9yKGxldCB4PTA7eCE9PWZbZF0ubW9ycGhUYXJnZXRzLmxlbmd0aDsrK3gpe2xldCBiPWZbZF07Xy5wdXNoKGIudGltZSkseS5wdXNoKGIubW9ycGhUYXJnZXQ9PT1nPzE6MCl9aS5wdXNoKG5ldyBaMSgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWyIrZysiXSIsXyx5KSl9bD1wLmxlbmd0aCooYXx8MSl9ZWxzZXtsZXQgcD0iLmJvbmVzWyIrcltoXS5uYW1lKyJdIjtuKEoxLHArIi5wb3NpdGlvbiIsZiwicG9zIixpKSxuKFgwLHArIi5xdWF0ZXJuaW9uIixmLCJyb3QiLGkpLG4oSjEscCsiLnNjYWxlIixmLCJzY2wiLGkpfX1yZXR1cm4gaS5sZW5ndGg9PT0wP251bGw6bmV3IHRoaXMobyxsLGkscyl9cmVzZXREdXJhdGlvbigpe2xldCB0PXRoaXMudHJhY2tzLHI9MDtmb3IobGV0IG49MCxpPXQubGVuZ3RoO24hPT1pOysrbil7bGV0IG89dGhpcy50cmFja3Nbbl07cj1NYXRoLm1heChyLG8udGltZXNbby50aW1lcy5sZW5ndGgtMV0pfXJldHVybiB0aGlzLmR1cmF0aW9uPXIsdGhpc310cmltKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLnRyaW0oMCx0aGlzLmR1cmF0aW9uKTtyZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2ZvcihsZXQgcj0wO3I8dGhpcy50cmFja3MubGVuZ3RoO3IrKyl0PXQmJnRoaXMudHJhY2tzW3JdLnZhbGlkYXRlKCk7cmV0dXJuIHR9b3B0aW1pemUoKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc31jbG9uZSgpe2xldCB0PVtdO2ZvcihsZXQgcj0wO3I8dGhpcy50cmFja3MubGVuZ3RoO3IrKyl0LnB1c2godGhpcy50cmFja3Nbcl0uY2xvbmUoKSk7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSx0aGlzLmR1cmF0aW9uLHQsdGhpcy5ibGVuZE1vZGUpfXRvSlNPTigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnRvSlNPTih0aGlzKX19O2Z1bmN0aW9uIHQwcihlKXtzd2l0Y2goZS50b0xvd2VyQ2FzZSgpKXtjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOnJldHVybiBaMTtjYXNlInZlY3RvciI6Y2FzZSJ2ZWN0b3IyIjpjYXNlInZlY3RvcjMiOmNhc2UidmVjdG9yNCI6cmV0dXJuIEoxO2Nhc2UiY29sb3IiOnJldHVybiBiNjtjYXNlInF1YXRlcm5pb24iOnJldHVybiBYMDtjYXNlImJvb2wiOmNhc2UiYm9vbGVhbiI6cmV0dXJuIGFtO2Nhc2Uic3RyaW5nIjpyZXR1cm4gc219dGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogIitlKX1mdW5jdGlvbiBlMHIoZSl7aWYoZS50eXBlPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgdHlwZSB1bmRlZmluZWQsIGNhbiBub3QgcGFyc2UiKTtsZXQgdD10MHIoZS50eXBlKTtpZihlLnRpbWVzPT09dm9pZCAwKXtsZXQgcj1bXSxuPVtdO2puLmZsYXR0ZW5KU09OKGUua2V5cyxyLG4sInZhbHVlIiksZS50aW1lcz1yLGUudmFsdWVzPW59cmV0dXJuIHQucGFyc2UhPT12b2lkIDA/dC5wYXJzZShlKTpuZXcgdChlLm5hbWUsZS50aW1lcyxlLnZhbHVlcyxlLmludGVycG9sYXRpb24pfXZhciB0eD17ZW5hYmxlZDohMSxmaWxlczp7fSxhZGQ6ZnVuY3Rpb24oZSx0KXt0aGlzLmVuYWJsZWQhPT0hMSYmKHRoaXMuZmlsZXNbZV09dCl9LGdldDpmdW5jdGlvbihlKXtpZih0aGlzLmVuYWJsZWQhPT0hMSlyZXR1cm4gdGhpcy5maWxlc1tlXX0scmVtb3ZlOmZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLmZpbGVzW2VdfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZmlsZXM9e319fSx3Nj1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbil7bGV0IGk9dGhpcyxvPSExLGE9MCxzPTAsbCxjPVtdO3RoaXMub25TdGFydD12b2lkIDAsdGhpcy5vbkxvYWQ9dCx0aGlzLm9uUHJvZ3Jlc3M9cix0aGlzLm9uRXJyb3I9bix0aGlzLml0ZW1TdGFydD1mdW5jdGlvbih1KXtzKyssbz09PSExJiZpLm9uU3RhcnQhPT12b2lkIDAmJmkub25TdGFydCh1LGEscyksbz0hMH0sdGhpcy5pdGVtRW5kPWZ1bmN0aW9uKHUpe2ErKyxpLm9uUHJvZ3Jlc3MhPT12b2lkIDAmJmkub25Qcm9ncmVzcyh1LGEscyksYT09PXMmJihvPSExLGkub25Mb2FkIT09dm9pZCAwJiZpLm9uTG9hZCgpKX0sdGhpcy5pdGVtRXJyb3I9ZnVuY3Rpb24odSl7aS5vbkVycm9yIT09dm9pZCAwJiZpLm9uRXJyb3IodSl9LHRoaXMucmVzb2x2ZVVSTD1mdW5jdGlvbih1KXtyZXR1cm4gbD9sKHUpOnV9LHRoaXMuc2V0VVJMTW9kaWZpZXI9ZnVuY3Rpb24odSl7cmV0dXJuIGw9dSx0aGlzfSx0aGlzLmFkZEhhbmRsZXI9ZnVuY3Rpb24odSxoKXtyZXR1cm4gYy5wdXNoKHUsaCksdGhpc30sdGhpcy5yZW1vdmVIYW5kbGVyPWZ1bmN0aW9uKHUpe2xldCBoPWMuaW5kZXhPZih1KTtyZXR1cm4gaCE9PS0xJiZjLnNwbGljZShoLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbih1KXtmb3IobGV0IGg9MCxmPWMubGVuZ3RoO2g8ZjtoKz0yKXtsZXQgcD1jW2hdLGQ9Y1toKzFdO2lmKHAuZ2xvYmFsJiYocC5sYXN0SW5kZXg9MCkscC50ZXN0KHUpKXJldHVybiBkfXJldHVybiBudWxsfX19LCRmZT1uZXcgdzYsdGE9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5tYW5hZ2VyPXQhPT12b2lkIDA/dDokZmUsdGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnBhdGg9IiIsdGhpcy5yZXNvdXJjZVBhdGg9IiIsdGhpcy5yZXF1ZXN0SGVhZGVyPXt9fWxvYWQoKXt9bG9hZEFzeW5jKHQscil7bGV0IG49dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oaSxvKXtuLmxvYWQodCxpLHIsbyl9KX1wYXJzZSgpe31zZXRDcm9zc09yaWdpbih0KXtyZXR1cm4gdGhpcy5jcm9zc09yaWdpbj10LHRoaXN9c2V0V2l0aENyZWRlbnRpYWxzKHQpe3JldHVybiB0aGlzLndpdGhDcmVkZW50aWFscz10LHRoaXN9c2V0UGF0aCh0KXtyZXR1cm4gdGhpcy5wYXRoPXQsdGhpc31zZXRSZXNvdXJjZVBhdGgodCl7cmV0dXJuIHRoaXMucmVzb3VyY2VQYXRoPXQsdGhpc31zZXRSZXF1ZXN0SGVhZGVyKHQpe3JldHVybiB0aGlzLnJlcXVlc3RIZWFkZXI9dCx0aGlzfX0sWWQ9e30sS2M9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQscixuLGkpe3Q9PT12b2lkIDAmJih0PSIiKSx0aGlzLnBhdGghPT12b2lkIDAmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2xldCBvPXR4LmdldCh0KTtpZihvIT09dm9pZCAwKXJldHVybiB0aGlzLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKCk9PntyJiZyKG8pLHRoaXMubWFuYWdlci5pdGVtRW5kKHQpfSwwKSxvO2lmKFlkW3RdIT09dm9pZCAwKXtZZFt0XS5wdXNoKHtvbkxvYWQ6cixvblByb2dyZXNzOm4sb25FcnJvcjppfSk7cmV0dXJufVlkW3RdPVtdLFlkW3RdLnB1c2goe29uTG9hZDpyLG9uUHJvZ3Jlc3M6bixvbkVycm9yOml9KTtsZXQgYT1uZXcgUmVxdWVzdCh0LHtoZWFkZXJzOm5ldyBIZWFkZXJzKHRoaXMucmVxdWVzdEhlYWRlciksY3JlZGVudGlhbHM6dGhpcy53aXRoQ3JlZGVudGlhbHM/ImluY2x1ZGUiOiJzYW1lLW9yaWdpbiJ9KSxzPXRoaXMubWltZVR5cGUsbD10aGlzLnJlc3BvbnNlVHlwZTtmZXRjaChhKS50aGVuKGM9PntpZihjLnN0YXR1cz09PTIwMHx8Yy5zdGF0dXM9PT0wKXtpZihjLnN0YXR1cz09PTAmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKSx0eXBlb2YgUmVhZGFibGVTdHJlYW09PSJ1bmRlZmluZWQifHxjLmJvZHkuZ2V0UmVhZGVyPT09dm9pZCAwKXJldHVybiBjO2xldCB1PVlkW3RdLGg9Yy5ib2R5LmdldFJlYWRlcigpLGY9Yy5oZWFkZXJzLmdldCgiQ29udGVudC1MZW5ndGgiKSxwPWY/cGFyc2VJbnQoZik6MCxkPXAhPT0wLGc9MCxfPW5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoeSl7eCgpO2Z1bmN0aW9uIHgoKXtoLnJlYWQoKS50aGVuKCh7ZG9uZTpiLHZhbHVlOlN9KT0+e2lmKGIpeS5jbG9zZSgpO2Vsc2V7Zys9Uy5ieXRlTGVuZ3RoO2xldCBDPW5ldyBQcm9ncmVzc0V2ZW50KCJwcm9ncmVzcyIse2xlbmd0aENvbXB1dGFibGU6ZCxsb2FkZWQ6Zyx0b3RhbDpwfSk7Zm9yKGxldCBQPTAsaz11Lmxlbmd0aDtQPGs7UCsrKXtsZXQgTz11W1BdO08ub25Qcm9ncmVzcyYmTy5vblByb2dyZXNzKEMpfXkuZW5xdWV1ZShTKSx4KCl9fSl9fX0pO3JldHVybiBuZXcgUmVzcG9uc2UoXyl9ZWxzZSB0aHJvdyBFcnJvcihgZmV0Y2ggZm9yICIke2MudXJsfSIgcmVzcG9uZGVkIHdpdGggJHtjLnN0YXR1c306ICR7Yy5zdGF0dXNUZXh0fWApfSkudGhlbihjPT57c3dpdGNoKGwpe2Nhc2UiYXJyYXlidWZmZXIiOnJldHVybiBjLmFycmF5QnVmZmVyKCk7Y2FzZSJibG9iIjpyZXR1cm4gYy5ibG9iKCk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIGMudGV4dCgpLnRoZW4odT0+bmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh1LHMpKTtjYXNlImpzb24iOnJldHVybiBjLmpzb24oKTtkZWZhdWx0OmlmKHM9PT12b2lkIDApcmV0dXJuIGMudGV4dCgpO3tsZXQgaD0vY2hhcnNldD0iPyhbXjsiXHNdKikiPy9pLmV4ZWMocyksZj1oJiZoWzFdP2hbMV0udG9Mb3dlckNhc2UoKTp2b2lkIDAscD1uZXcgVGV4dERlY29kZXIoZik7cmV0dXJuIGMuYXJyYXlCdWZmZXIoKS50aGVuKGQ9PnAuZGVjb2RlKGQpKX19fSkudGhlbihjPT57dHguYWRkKHQsYyk7bGV0IHU9WWRbdF07ZGVsZXRlIFlkW3RdO2ZvcihsZXQgaD0wLGY9dS5sZW5ndGg7aDxmO2grKyl7bGV0IHA9dVtoXTtwLm9uTG9hZCYmcC5vbkxvYWQoYyl9fSkuY2F0Y2goYz0+e2xldCB1PVlkW3RdO2lmKHU9PT12b2lkIDApdGhyb3cgdGhpcy5tYW5hZ2VyLml0ZW1FcnJvcih0KSxjO2RlbGV0ZSBZZFt0XTtmb3IobGV0IGg9MCxmPXUubGVuZ3RoO2g8ZjtoKyspe2xldCBwPXVbaF07cC5vbkVycm9yJiZwLm9uRXJyb3IoYyl9dGhpcy5tYW5hZ2VyLml0ZW1FcnJvcih0KX0pLmZpbmFsbHkoKCk9Pnt0aGlzLm1hbmFnZXIuaXRlbUVuZCh0KX0pLHRoaXMubWFuYWdlci5pdGVtU3RhcnQodCl9c2V0UmVzcG9uc2VUeXBlKHQpe3JldHVybiB0aGlzLnJlc3BvbnNlVHlwZT10LHRoaXN9c2V0TWltZVR5cGUodCl7cmV0dXJuIHRoaXMubWltZVR5cGU9dCx0aGlzfX0saWh0PWNsYXNzIGV4dGVuZHMgdGF7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LHIsbixpKXtsZXQgbz10aGlzLGE9bmV3IEtjKHRoaXMubWFuYWdlcik7YS5zZXRQYXRoKHRoaXMucGF0aCksYS5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksYS5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLGEubG9hZCh0LGZ1bmN0aW9uKHMpe3RyeXtyKG8ucGFyc2UoSlNPTi5wYXJzZShzKSkpfWNhdGNoKGwpe2k/aShsKTpjb25zb2xlLmVycm9yKGwpLG8ubWFuYWdlci5pdGVtRXJyb3IodCl9fSxuLGkpfXBhcnNlKHQpe2xldCByPVtdO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT1RMS5wYXJzZSh0W25dKTtyLnB1c2goaSl9cmV0dXJuIHJ9fSxvaHQ9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQscixuLGkpe2xldCBvPXRoaXMsYT1bXSxzPW5ldyBuNixsPW5ldyBLYyh0aGlzLm1hbmFnZXIpO2wuc2V0UGF0aCh0aGlzLnBhdGgpLGwuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGwuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGwuc2V0V2l0aENyZWRlbnRpYWxzKG8ud2l0aENyZWRlbnRpYWxzKTtsZXQgYz0wO2Z1bmN0aW9uIHUoaCl7bC5sb2FkKHRbaF0sZnVuY3Rpb24oZil7bGV0IHA9by5wYXJzZShmLCEwKTthW2hdPXt3aWR0aDpwLndpZHRoLGhlaWdodDpwLmhlaWdodCxmb3JtYXQ6cC5mb3JtYXQsbWlwbWFwczpwLm1pcG1hcHN9LGMrPTEsYz09PTYmJihwLm1pcG1hcENvdW50PT09MSYmKHMubWluRmlsdGVyPW9pKSxzLmltYWdlPWEscy5mb3JtYXQ9cC5mb3JtYXQscy5uZWVkc1VwZGF0ZT0hMCxyJiZyKHMpKX0sbixpKX1pZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgaD0wLGY9dC5sZW5ndGg7aDxmOysraCl1KGgpO2Vsc2UgbC5sb2FkKHQsZnVuY3Rpb24oaCl7bGV0IGY9by5wYXJzZShoLCEwKTtpZihmLmlzQ3ViZW1hcCl7bGV0IHA9Zi5taXBtYXBzLmxlbmd0aC9mLm1pcG1hcENvdW50O2ZvcihsZXQgZD0wO2Q8cDtkKyspe2FbZF09e21pcG1hcHM6W119O2ZvcihsZXQgZz0wO2c8Zi5taXBtYXBDb3VudDtnKyspYVtkXS5taXBtYXBzLnB1c2goZi5taXBtYXBzW2QqZi5taXBtYXBDb3VudCtnXSksYVtkXS5mb3JtYXQ9Zi5mb3JtYXQsYVtkXS53aWR0aD1mLndpZHRoLGFbZF0uaGVpZ2h0PWYuaGVpZ2h0fXMuaW1hZ2U9YX1lbHNlIHMuaW1hZ2Uud2lkdGg9Zi53aWR0aCxzLmltYWdlLmhlaWdodD1mLmhlaWdodCxzLm1pcG1hcHM9Zi5taXBtYXBzO2YubWlwbWFwQ291bnQ9PT0xJiYocy5taW5GaWx0ZXI9b2kpLHMuZm9ybWF0PWYuZm9ybWF0LHMubmVlZHNVcGRhdGU9ITAsciYmcihzKX0sbixpKTtyZXR1cm4gc319LGV4PWNsYXNzIGV4dGVuZHMgdGF7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LHIsbixpKXt0aGlzLnBhdGghPT12b2lkIDAmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2xldCBvPXRoaXMsYT10eC5nZXQodCk7aWYoYSE9PXZvaWQgMClyZXR1cm4gby5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ciYmcihhKSxvLm1hbmFnZXIuaXRlbUVuZCh0KX0sMCksYTtsZXQgcz1aUCgiaW1nIik7ZnVuY3Rpb24gbCgpe3UoKSx0eC5hZGQodCx0aGlzKSxyJiZyKHRoaXMpLG8ubWFuYWdlci5pdGVtRW5kKHQpfWZ1bmN0aW9uIGMoaCl7dSgpLGkmJmkoaCksby5tYW5hZ2VyLml0ZW1FcnJvcih0KSxvLm1hbmFnZXIuaXRlbUVuZCh0KX1mdW5jdGlvbiB1KCl7cy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixsLCExKSxzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixjLCExKX1yZXR1cm4gcy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixsLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixjLCExKSx0LnN1YnN0cigwLDUpIT09ImRhdGE6IiYmdGhpcy5jcm9zc09yaWdpbiE9PXZvaWQgMCYmKHMuY3Jvc3NPcmlnaW49dGhpcy5jcm9zc09yaWdpbiksby5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzLnNyYz10LHN9fSxTVT1jbGFzcyBleHRlbmRzIHRhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxyLG4saSl7bGV0IG89bmV3IEgwLGE9bmV3IGV4KHRoaXMubWFuYWdlcik7YS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxhLnNldFBhdGgodGhpcy5wYXRoKTtsZXQgcz0wO2Z1bmN0aW9uIGwoYyl7YS5sb2FkKHRbY10sZnVuY3Rpb24odSl7by5pbWFnZXNbY109dSxzKysscz09PTYmJihvLm5lZWRzVXBkYXRlPSEwLHImJnIobykpfSx2b2lkIDAsaSl9Zm9yKGxldCBjPTA7Yzx0Lmxlbmd0aDsrK2MpbChjKTtyZXR1cm4gb319LE1VPWNsYXNzIGV4dGVuZHMgdGF7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LHIsbixpKXtsZXQgbz10aGlzLGE9bmV3IEpkLHM9bmV3IEtjKHRoaXMubWFuYWdlcik7cmV0dXJuIHMuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLHMuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLHMuc2V0UGF0aCh0aGlzLnBhdGgpLHMuc2V0V2l0aENyZWRlbnRpYWxzKG8ud2l0aENyZWRlbnRpYWxzKSxzLmxvYWQodCxmdW5jdGlvbihsKXtsZXQgYz1vLnBhcnNlKGwpOyFjfHwoYy5pbWFnZSE9PXZvaWQgMD9hLmltYWdlPWMuaW1hZ2U6Yy5kYXRhIT09dm9pZCAwJiYoYS5pbWFnZS53aWR0aD1jLndpZHRoLGEuaW1hZ2UuaGVpZ2h0PWMuaGVpZ2h0LGEuaW1hZ2UuZGF0YT1jLmRhdGEpLGEud3JhcFM9Yy53cmFwUyE9PXZvaWQgMD9jLndyYXBTOlpvLGEud3JhcFQ9Yy53cmFwVCE9PXZvaWQgMD9jLndyYXBUOlpvLGEubWFnRmlsdGVyPWMubWFnRmlsdGVyIT09dm9pZCAwP2MubWFnRmlsdGVyOm9pLGEubWluRmlsdGVyPWMubWluRmlsdGVyIT09dm9pZCAwP2MubWluRmlsdGVyOm9pLGEuYW5pc290cm9weT1jLmFuaXNvdHJvcHkhPT12b2lkIDA/Yy5hbmlzb3Ryb3B5OjEsYy5lbmNvZGluZyE9PXZvaWQgMCYmKGEuZW5jb2Rpbmc9Yy5lbmNvZGluZyksYy5mbGlwWSE9PXZvaWQgMCYmKGEuZmxpcFk9Yy5mbGlwWSksYy5mb3JtYXQhPT12b2lkIDAmJihhLmZvcm1hdD1jLmZvcm1hdCksYy50eXBlIT09dm9pZCAwJiYoYS50eXBlPWMudHlwZSksYy5taXBtYXBzIT09dm9pZCAwJiYoYS5taXBtYXBzPWMubWlwbWFwcyxhLm1pbkZpbHRlcj1veCksYy5taXBtYXBDb3VudD09PTEmJihhLm1pbkZpbHRlcj1vaSksYy5nZW5lcmF0ZU1pcG1hcHMhPT12b2lkIDAmJihhLmdlbmVyYXRlTWlwbWFwcz1jLmdlbmVyYXRlTWlwbWFwcyksYS5uZWVkc1VwZGF0ZT0hMCxyJiZyKGEsYykpfSxuLGkpLGF9fSxFVT1jbGFzcyBleHRlbmRzIHRhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxyLG4saSl7bGV0IG89bmV3IHhpLGE9bmV3IGV4KHRoaXMubWFuYWdlcik7cmV0dXJuIGEuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksYS5zZXRQYXRoKHRoaXMucGF0aCksYS5sb2FkKHQsZnVuY3Rpb24ocyl7by5pbWFnZT1zLG8ubmVlZHNVcGRhdGU9ITAsciE9PXZvaWQgMCYmcihvKX0sbixpKSxvfX0sRGw9Y2xhc3MgZXh0ZW5kcyBvcntjb25zdHJ1Y3Rvcih0LHI9MSl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpZ2h0Iix0aGlzLmNvbG9yPW5ldyBuZSh0KSx0aGlzLmludGVuc2l0eT1yfWRpc3Bvc2UoKXt9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpc310b0pTT04odCl7bGV0IHI9c3VwZXIudG9KU09OKHQpO3JldHVybiByLm9iamVjdC5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpLHIub2JqZWN0LmludGVuc2l0eT10aGlzLmludGVuc2l0eSx0aGlzLmdyb3VuZENvbG9yIT09dm9pZCAwJiYoci5vYmplY3QuZ3JvdW5kQ29sb3I9dGhpcy5ncm91bmRDb2xvci5nZXRIZXgoKSksdGhpcy5kaXN0YW5jZSE9PXZvaWQgMCYmKHIub2JqZWN0LmRpc3RhbmNlPXRoaXMuZGlzdGFuY2UpLHRoaXMuYW5nbGUhPT12b2lkIDAmJihyLm9iamVjdC5hbmdsZT10aGlzLmFuZ2xlKSx0aGlzLmRlY2F5IT09dm9pZCAwJiYoci5vYmplY3QuZGVjYXk9dGhpcy5kZWNheSksdGhpcy5wZW51bWJyYSE9PXZvaWQgMCYmKHIub2JqZWN0LnBlbnVtYnJhPXRoaXMucGVudW1icmEpLHRoaXMuc2hhZG93IT09dm9pZCAwJiYoci5vYmplY3Quc2hhZG93PXRoaXMuc2hhZG93LnRvSlNPTigpKSxyfX07RGwucHJvdG90eXBlLmlzTGlnaHQ9ITA7dmFyIFM2PWNsYXNzIGV4dGVuZHMgRGx7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKHQsbiksdGhpcy50eXBlPSJIZW1pc3BoZXJlTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShvci5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5ncm91bmRDb2xvcj1uZXcgbmUocil9Y29weSh0KXtyZXR1cm4gRGwucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuZ3JvdW5kQ29sb3IuY29weSh0Lmdyb3VuZENvbG9yKSx0aGlzfX07UzYucHJvdG90eXBlLmlzSGVtaXNwaGVyZUxpZ2h0PSEwO3ZhciBoaGU9bmV3IE1lLGZoZT1uZXcgaixwaGU9bmV3IGosTTY9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5jYW1lcmE9dCx0aGlzLmJpYXM9MCx0aGlzLm5vcm1hbEJpYXM9MCx0aGlzLnJhZGl1cz0xLHRoaXMuYmx1clNhbXBsZXM9OCx0aGlzLm1hcFNpemU9bmV3IEx0KDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IE1lLHRoaXMuYXV0b1VwZGF0ZT0hMCx0aGlzLm5lZWRzVXBkYXRlPSExLHRoaXMuX2ZydXN0dW09bmV3IE4xLHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgTHQoMSwxKSx0aGlzLl92aWV3cG9ydENvdW50PTEsdGhpcy5fdmlld3BvcnRzPVtuZXcgZW4oMCwwLDEsMSldfWdldFZpZXdwb3J0Q291bnQoKXtyZXR1cm4gdGhpcy5fdmlld3BvcnRDb3VudH1nZXRGcnVzdHVtKCl7cmV0dXJuIHRoaXMuX2ZydXN0dW19dXBkYXRlTWF0cmljZXModCl7bGV0IHI9dGhpcy5jYW1lcmEsbj10aGlzLm1hdHJpeDtmaGUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLHIucG9zaXRpb24uY29weShmaGUpLHBoZS5zZXRGcm9tTWF0cml4UG9zaXRpb24odC50YXJnZXQubWF0cml4V29ybGQpLHIubG9va0F0KHBoZSksci51cGRhdGVNYXRyaXhXb3JsZCgpLGhoZS5tdWx0aXBseU1hdHJpY2VzKHIucHJvamVjdGlvbk1hdHJpeCxyLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChoaGUpLG4uc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpLG4ubXVsdGlwbHkoci5wcm9qZWN0aW9uTWF0cml4KSxuLm11bHRpcGx5KHIubWF0cml4V29ybGRJbnZlcnNlKX1nZXRWaWV3cG9ydCh0KXtyZXR1cm4gdGhpcy5fdmlld3BvcnRzW3RdfWdldEZyYW1lRXh0ZW50cygpe3JldHVybiB0aGlzLl9mcmFtZUV4dGVudHN9ZGlzcG9zZSgpe3RoaXMubWFwJiZ0aGlzLm1hcC5kaXNwb3NlKCksdGhpcy5tYXBQYXNzJiZ0aGlzLm1hcFBhc3MuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHRoaXMuY2FtZXJhPXQuY2FtZXJhLmNsb25lKCksdGhpcy5iaWFzPXQuYmlhcyx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLm1hcFNpemUuY29weSh0Lm1hcFNpemUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfXRvSlNPTigpe2xldCB0PXt9O3JldHVybiB0aGlzLmJpYXMhPT0wJiYodC5iaWFzPXRoaXMuYmlhcyksdGhpcy5ub3JtYWxCaWFzIT09MCYmKHQubm9ybWFsQmlhcz10aGlzLm5vcm1hbEJpYXMpLHRoaXMucmFkaXVzIT09MSYmKHQucmFkaXVzPXRoaXMucmFkaXVzKSwodGhpcy5tYXBTaXplLnghPT01MTJ8fHRoaXMubWFwU2l6ZS55IT09NTEyKSYmKHQubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpKSx0LmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdCxkZWxldGUgdC5jYW1lcmEubWF0cml4LHR9fSxUVT1jbGFzcyBleHRlbmRzIE02e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFZpKDUwLDEsLjUsNTAwKSksdGhpcy5mb2N1cz0xfXVwZGF0ZU1hdHJpY2VzKHQpe2xldCByPXRoaXMuY2FtZXJhLG49S1AqMip0LmFuZ2xlKnRoaXMuZm9jdXMsaT10aGlzLm1hcFNpemUud2lkdGgvdGhpcy5tYXBTaXplLmhlaWdodCxvPXQuZGlzdGFuY2V8fHIuZmFyOyhuIT09ci5mb3Z8fGkhPT1yLmFzcGVjdHx8byE9PXIuZmFyKSYmKHIuZm92PW4sci5hc3BlY3Q9aSxyLmZhcj1vLHIudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxzdXBlci51cGRhdGVNYXRyaWNlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzfX07VFUucHJvdG90eXBlLmlzU3BvdExpZ2h0U2hhZG93PSEwO3ZhciBFNj1jbGFzcyBleHRlbmRzIERse2NvbnN0cnVjdG9yKHQscixuPTAsaT1NYXRoLlBJLzMsbz0wLGE9MSl7c3VwZXIodCxyKSx0aGlzLnR5cGU9IlNwb3RMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KG9yLkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgb3IsdGhpcy5kaXN0YW5jZT1uLHRoaXMuYW5nbGU9aSx0aGlzLnBlbnVtYnJhPW8sdGhpcy5kZWNheT1hLHRoaXMuc2hhZG93PW5ldyBUVX1nZXQgcG93ZXIoKXtyZXR1cm4gdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fTtFNi5wcm90b3R5cGUuaXNTcG90TGlnaHQ9ITA7dmFyIGRoZT1uZXcgTWUsT1A9bmV3IGosdnV0PW5ldyBqLENVPWNsYXNzIGV4dGVuZHMgTTZ7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVmkoOTAsMSwuNSw1MDApKSx0aGlzLl9mcmFtZUV4dGVudHM9bmV3IEx0KDQsMiksdGhpcy5fdmlld3BvcnRDb3VudD02LHRoaXMuX3ZpZXdwb3J0cz1bbmV3IGVuKDIsMSwxLDEpLG5ldyBlbigwLDEsMSwxKSxuZXcgZW4oMywxLDEsMSksbmV3IGVuKDEsMSwxLDEpLG5ldyBlbigzLDAsMSwxKSxuZXcgZW4oMSwwLDEsMSldLHRoaXMuX2N1YmVEaXJlY3Rpb25zPVtuZXcgaigxLDAsMCksbmV3IGooLTEsMCwwKSxuZXcgaigwLDAsMSksbmV3IGooMCwwLC0xKSxuZXcgaigwLDEsMCksbmV3IGooMCwtMSwwKV0sdGhpcy5fY3ViZVVwcz1bbmV3IGooMCwxLDApLG5ldyBqKDAsMSwwKSxuZXcgaigwLDEsMCksbmV3IGooMCwxLDApLG5ldyBqKDAsMCwxKSxuZXcgaigwLDAsLTEpXX11cGRhdGVNYXRyaWNlcyh0LHI9MCl7bGV0IG49dGhpcy5jYW1lcmEsaT10aGlzLm1hdHJpeCxvPXQuZGlzdGFuY2V8fG4uZmFyO28hPT1uLmZhciYmKG4uZmFyPW8sbi51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLE9QLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxuLnBvc2l0aW9uLmNvcHkoT1ApLHZ1dC5jb3B5KG4ucG9zaXRpb24pLHZ1dC5hZGQodGhpcy5fY3ViZURpcmVjdGlvbnNbcl0pLG4udXAuY29weSh0aGlzLl9jdWJlVXBzW3JdKSxuLmxvb2tBdCh2dXQpLG4udXBkYXRlTWF0cml4V29ybGQoKSxpLm1ha2VUcmFuc2xhdGlvbigtT1AueCwtT1AueSwtT1AueiksZGhlLm11bHRpcGx5TWF0cmljZXMobi5wcm9qZWN0aW9uTWF0cml4LG4ubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLl9mcnVzdHVtLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KGRoZSl9fTtDVS5wcm90b3R5cGUuaXNQb2ludExpZ2h0U2hhZG93PSEwO3ZhciBUNj1jbGFzcyBleHRlbmRzIERse2NvbnN0cnVjdG9yKHQscixuPTAsaT0xKXtzdXBlcih0LHIpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsdGhpcy5kaXN0YW5jZT1uLHRoaXMuZGVjYXk9aSx0aGlzLnNoYWRvdz1uZXcgQ1V9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5KjQqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC8oNCpNYXRoLlBJKX1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuZGVjYXk9dC5kZWNheSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fTtUNi5wcm90b3R5cGUuaXNQb2ludExpZ2h0PSEwO3ZhciBBVT1jbGFzcyBleHRlbmRzIE02e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IEQxKC01LDUsNSwtNSwuNSw1MDApKX19O0FVLnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHRTaGFkb3c9ITA7dmFyIEM2PWNsYXNzIGV4dGVuZHMgRGx7Y29uc3RydWN0b3IodCxyKXtzdXBlcih0LHIpLHRoaXMudHlwZT0iRGlyZWN0aW9uYWxMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KG9yLkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgb3IsdGhpcy5zaGFkb3c9bmV3IEFVfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnRhcmdldD10LnRhcmdldC5jbG9uZSgpLHRoaXMuc2hhZG93PXQuc2hhZG93LmNsb25lKCksdGhpc319O0M2LnByb3RvdHlwZS5pc0RpcmVjdGlvbmFsTGlnaHQ9ITA7dmFyIEE2PWNsYXNzIGV4dGVuZHMgRGx7Y29uc3RydWN0b3IodCxyKXtzdXBlcih0LHIpLHRoaXMudHlwZT0iQW1iaWVudExpZ2h0In19O0E2LnByb3RvdHlwZS5pc0FtYmllbnRMaWdodD0hMDt2YXIgUDY9Y2xhc3MgZXh0ZW5kcyBEbHtjb25zdHJ1Y3Rvcih0LHIsbj0xMCxpPTEwKXtzdXBlcih0LHIpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD1uLHRoaXMuaGVpZ2h0PWl9Z2V0IHBvd2VyKCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5KnRoaXMud2lkdGgqdGhpcy5oZWlnaHQqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC8odGhpcy53aWR0aCp0aGlzLmhlaWdodCpNYXRoLlBJKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzfXRvSlNPTih0KXtsZXQgcj1zdXBlci50b0pTT04odCk7cmV0dXJuIHIub2JqZWN0LndpZHRoPXRoaXMud2lkdGgsci5vYmplY3QuaGVpZ2h0PXRoaXMuaGVpZ2h0LHJ9fTtQNi5wcm90b3R5cGUuaXNSZWN0QXJlYUxpZ2h0PSEwO3ZhciBJNj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY29lZmZpY2llbnRzPVtdO2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHMucHVzaChuZXcgail9c2V0KHQpe2ZvcihsZXQgcj0wO3I8OTtyKyspdGhpcy5jb2VmZmljaWVudHNbcl0uY29weSh0W3JdKTtyZXR1cm4gdGhpc316ZXJvKCl7Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50c1t0XS5zZXQoMCwwLDApO3JldHVybiB0aGlzfWdldEF0KHQscil7bGV0IG49dC54LGk9dC55LG89dC56LGE9dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIHIuY29weShhWzBdKS5tdWx0aXBseVNjYWxhciguMjgyMDk1KSxyLmFkZFNjYWxlZFZlY3RvcihhWzFdLC40ODg2MDMqaSksci5hZGRTY2FsZWRWZWN0b3IoYVsyXSwuNDg4NjAzKm8pLHIuYWRkU2NhbGVkVmVjdG9yKGFbM10sLjQ4ODYwMypuKSxyLmFkZFNjYWxlZFZlY3RvcihhWzRdLDEuMDkyNTQ4KihuKmkpKSxyLmFkZFNjYWxlZFZlY3RvcihhWzVdLDEuMDkyNTQ4KihpKm8pKSxyLmFkZFNjYWxlZFZlY3RvcihhWzZdLC4zMTUzOTIqKDMqbypvLTEpKSxyLmFkZFNjYWxlZFZlY3RvcihhWzddLDEuMDkyNTQ4KihuKm8pKSxyLmFkZFNjYWxlZFZlY3RvcihhWzhdLC41NDYyNzQqKG4qbi1pKmkpKSxyfWdldElycmFkaWFuY2VBdCh0LHIpe2xldCBuPXQueCxpPXQueSxvPXQueixhPXRoaXMuY29lZmZpY2llbnRzO3JldHVybiByLmNvcHkoYVswXSkubXVsdGlwbHlTY2FsYXIoLjg4NjIyNyksci5hZGRTY2FsZWRWZWN0b3IoYVsxXSwyKi41MTE2NjQqaSksci5hZGRTY2FsZWRWZWN0b3IoYVsyXSwyKi41MTE2NjQqbyksci5hZGRTY2FsZWRWZWN0b3IoYVszXSwyKi41MTE2NjQqbiksci5hZGRTY2FsZWRWZWN0b3IoYVs0XSwyKi40MjkwNDMqbippKSxyLmFkZFNjYWxlZFZlY3RvcihhWzVdLDIqLjQyOTA0MyppKm8pLHIuYWRkU2NhbGVkVmVjdG9yKGFbNl0sLjc0MzEyNSpvKm8tLjI0NzcwOCksci5hZGRTY2FsZWRWZWN0b3IoYVs3XSwyKi40MjkwNDMqbipvKSxyLmFkZFNjYWxlZFZlY3RvcihhWzhdLC40MjkwNDMqKG4qbi1pKmkpKSxyfWFkZCh0KXtmb3IobGV0IHI9MDtyPDk7cisrKXRoaXMuY29lZmZpY2llbnRzW3JdLmFkZCh0LmNvZWZmaWNpZW50c1tyXSk7cmV0dXJuIHRoaXN9YWRkU2NhbGVkU0godCxyKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmFkZFNjYWxlZFZlY3Rvcih0LmNvZWZmaWNpZW50c1tuXSxyKTtyZXR1cm4gdGhpc31zY2FsZSh0KXtmb3IobGV0IHI9MDtyPDk7cisrKXRoaXMuY29lZmZpY2llbnRzW3JdLm11bHRpcGx5U2NhbGFyKHQpO3JldHVybiB0aGlzfWxlcnAodCxyKXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmxlcnAodC5jb2VmZmljaWVudHNbbl0scik7cmV0dXJuIHRoaXN9ZXF1YWxzKHQpe2ZvcihsZXQgcj0wO3I8OTtyKyspaWYoIXRoaXMuY29lZmZpY2llbnRzW3JdLmVxdWFscyh0LmNvZWZmaWNpZW50c1tyXSkpcmV0dXJuITE7cmV0dXJuITB9Y29weSh0KXtyZXR1cm4gdGhpcy5zZXQodC5jb2VmZmljaWVudHMpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1mcm9tQXJyYXkodCxyPTApe2xldCBuPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgaT0wO2k8OTtpKyspbltpXS5mcm9tQXJyYXkodCxyK2kqMyk7cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLHI9MCl7bGV0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBpPTA7aTw5O2krKyluW2ldLnRvQXJyYXkodCxyK2kqMyk7cmV0dXJuIHR9c3RhdGljIGdldEJhc2lzQXQodCxyKXtsZXQgbj10LngsaT10Lnksbz10Lno7clswXT0uMjgyMDk1LHJbMV09LjQ4ODYwMyppLHJbMl09LjQ4ODYwMypvLHJbM109LjQ4ODYwMypuLHJbNF09MS4wOTI1NDgqbippLHJbNV09MS4wOTI1NDgqaSpvLHJbNl09LjMxNTM5MiooMypvKm8tMSkscls3XT0xLjA5MjU0OCpuKm8scls4XT0uNTQ2Mjc0KihuKm4taSppKX19O0k2LnByb3RvdHlwZS5pc1NwaGVyaWNhbEhhcm1vbmljczM9ITA7dmFyIHJ4PWNsYXNzIGV4dGVuZHMgRGx7Y29uc3RydWN0b3IodD1uZXcgSTYscj0xKXtzdXBlcih2b2lkIDAsciksdGhpcy5zaD10fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5zaC5jb3B5KHQuc2gpLHRoaXN9ZnJvbUpTT04odCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXMuc2guZnJvbUFycmF5KHQuc2gpLHRoaXN9dG9KU09OKHQpe2xldCByPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gci5vYmplY3Quc2g9dGhpcy5zaC50b0FycmF5KCkscn19O3J4LnByb3RvdHlwZS5pc0xpZ2h0UHJvYmU9ITA7dmFyIFBVPWNsYXNzIGV4dGVuZHMgdGF7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50ZXh0dXJlcz17fX1sb2FkKHQscixuLGkpe2xldCBvPXRoaXMsYT1uZXcgS2Moby5tYW5hZ2VyKTthLnNldFBhdGgoby5wYXRoKSxhLnNldFJlcXVlc3RIZWFkZXIoby5yZXF1ZXN0SGVhZGVyKSxhLnNldFdpdGhDcmVkZW50aWFscyhvLndpdGhDcmVkZW50aWFscyksYS5sb2FkKHQsZnVuY3Rpb24ocyl7dHJ5e3Ioby5wYXJzZShKU09OLnBhcnNlKHMpKSl9Y2F0Y2gobCl7aT9pKGwpOmNvbnNvbGUuZXJyb3IobCksby5tYW5hZ2VyLml0ZW1FcnJvcih0KX19LG4saSl9cGFyc2UodCl7bGV0IHI9dGhpcy50ZXh0dXJlcztmdW5jdGlvbiBuKG8pe3JldHVybiByW29dPT09dm9pZCAwJiZjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsTG9hZGVyOiBVbmRlZmluZWQgdGV4dHVyZSIsbykscltvXX1sZXQgaT1uZXcgUWdyW3QudHlwZV07aWYodC51dWlkIT09dm9pZCAwJiYoaS51dWlkPXQudXVpZCksdC5uYW1lIT09dm9pZCAwJiYoaS5uYW1lPXQubmFtZSksdC5jb2xvciE9PXZvaWQgMCYmaS5jb2xvciE9PXZvaWQgMCYmaS5jb2xvci5zZXRIZXgodC5jb2xvciksdC5yb3VnaG5lc3MhPT12b2lkIDAmJihpLnJvdWdobmVzcz10LnJvdWdobmVzcyksdC5tZXRhbG5lc3MhPT12b2lkIDAmJihpLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyksdC5zaGVlbiE9PXZvaWQgMCYmKGkuc2hlZW49dC5zaGVlbiksdC5zaGVlbkNvbG9yIT09dm9pZCAwJiYoaS5zaGVlbkNvbG9yPW5ldyBuZSgpLnNldEhleCh0LnNoZWVuQ29sb3IpKSx0LnNoZWVuUm91Z2huZXNzIT09dm9pZCAwJiYoaS5zaGVlblJvdWdobmVzcz10LnNoZWVuUm91Z2huZXNzKSx0LmVtaXNzaXZlIT09dm9pZCAwJiZpLmVtaXNzaXZlIT09dm9pZCAwJiZpLmVtaXNzaXZlLnNldEhleCh0LmVtaXNzaXZlKSx0LnNwZWN1bGFyIT09dm9pZCAwJiZpLnNwZWN1bGFyIT09dm9pZCAwJiZpLnNwZWN1bGFyLnNldEhleCh0LnNwZWN1bGFyKSx0LnNwZWN1bGFySW50ZW5zaXR5IT09dm9pZCAwJiYoaS5zcGVjdWxhckludGVuc2l0eT10LnNwZWN1bGFySW50ZW5zaXR5KSx0LnNwZWN1bGFyQ29sb3IhPT12b2lkIDAmJmkuc3BlY3VsYXJDb2xvciE9PXZvaWQgMCYmaS5zcGVjdWxhckNvbG9yLnNldEhleCh0LnNwZWN1bGFyQ29sb3IpLHQuc2hpbmluZXNzIT09dm9pZCAwJiYoaS5zaGluaW5lc3M9dC5zaGluaW5lc3MpLHQuY2xlYXJjb2F0IT09dm9pZCAwJiYoaS5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQpLHQuY2xlYXJjb2F0Um91Z2huZXNzIT09dm9pZCAwJiYoaS5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MpLHQudHJhbnNtaXNzaW9uIT09dm9pZCAwJiYoaS50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24pLHQudGhpY2tuZXNzIT09dm9pZCAwJiYoaS50aGlja25lc3M9dC50aGlja25lc3MpLHQuYXR0ZW51YXRpb25EaXN0YW5jZSE9PXZvaWQgMCYmKGkuYXR0ZW51YXRpb25EaXN0YW5jZT10LmF0dGVudWF0aW9uRGlzdGFuY2UpLHQuYXR0ZW51YXRpb25Db2xvciE9PXZvaWQgMCYmaS5hdHRlbnVhdGlvbkNvbG9yIT09dm9pZCAwJiZpLmF0dGVudWF0aW9uQ29sb3Iuc2V0SGV4KHQuYXR0ZW51YXRpb25Db2xvciksdC5mb2chPT12b2lkIDAmJihpLmZvZz10LmZvZyksdC5mbGF0U2hhZGluZyE9PXZvaWQgMCYmKGkuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyksdC5ibGVuZGluZyE9PXZvaWQgMCYmKGkuYmxlbmRpbmc9dC5ibGVuZGluZyksdC5jb21iaW5lIT09dm9pZCAwJiYoaS5jb21iaW5lPXQuY29tYmluZSksdC5zaWRlIT09dm9pZCAwJiYoaS5zaWRlPXQuc2lkZSksdC5zaGFkb3dTaWRlIT09dm9pZCAwJiYoaS5zaGFkb3dTaWRlPXQuc2hhZG93U2lkZSksdC5vcGFjaXR5IT09dm9pZCAwJiYoaS5vcGFjaXR5PXQub3BhY2l0eSksdC50cmFuc3BhcmVudCE9PXZvaWQgMCYmKGkudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCksdC5hbHBoYVRlc3QhPT12b2lkIDAmJihpLmFscGhhVGVzdD10LmFscGhhVGVzdCksdC5kZXB0aFRlc3QhPT12b2lkIDAmJihpLmRlcHRoVGVzdD10LmRlcHRoVGVzdCksdC5kZXB0aFdyaXRlIT09dm9pZCAwJiYoaS5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSksdC5jb2xvcldyaXRlIT09dm9pZCAwJiYoaS5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSksdC5hbHBoYVdyaXRlIT09dm9pZCAwJiYoaS5hbHBoYVdyaXRlPXQuYWxwaGFXcml0ZSksdC5zdGVuY2lsV3JpdGUhPT12b2lkIDAmJihpLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZSksdC5zdGVuY2lsV3JpdGVNYXNrIT09dm9pZCAwJiYoaS5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayksdC5zdGVuY2lsRnVuYyE9PXZvaWQgMCYmKGkuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyksdC5zdGVuY2lsUmVmIT09dm9pZCAwJiYoaS5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZiksdC5zdGVuY2lsRnVuY01hc2shPT12b2lkIDAmJihpLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayksdC5zdGVuY2lsRmFpbCE9PXZvaWQgMCYmKGkuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCksdC5zdGVuY2lsWkZhaWwhPT12b2lkIDAmJihpLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCksdC5zdGVuY2lsWlBhc3MhPT12b2lkIDAmJihpLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyksdC53aXJlZnJhbWUhPT12b2lkIDAmJihpLndpcmVmcmFtZT10LndpcmVmcmFtZSksdC53aXJlZnJhbWVMaW5ld2lkdGghPT12b2lkIDAmJihpLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCksdC53aXJlZnJhbWVMaW5lY2FwIT09dm9pZCAwJiYoaS53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCksdC53aXJlZnJhbWVMaW5lam9pbiE9PXZvaWQgMCYmKGkud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbiksdC5yb3RhdGlvbiE9PXZvaWQgMCYmKGkucm90YXRpb249dC5yb3RhdGlvbiksdC5saW5ld2lkdGghPT0xJiYoaS5saW5ld2lkdGg9dC5saW5ld2lkdGgpLHQuZGFzaFNpemUhPT12b2lkIDAmJihpLmRhc2hTaXplPXQuZGFzaFNpemUpLHQuZ2FwU2l6ZSE9PXZvaWQgMCYmKGkuZ2FwU2l6ZT10LmdhcFNpemUpLHQuc2NhbGUhPT12b2lkIDAmJihpLnNjYWxlPXQuc2NhbGUpLHQucG9seWdvbk9mZnNldCE9PXZvaWQgMCYmKGkucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQpLHQucG9seWdvbk9mZnNldEZhY3RvciE9PXZvaWQgMCYmKGkucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IpLHQucG9seWdvbk9mZnNldFVuaXRzIT09dm9pZCAwJiYoaS5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMpLHQuZGl0aGVyaW5nIT09dm9pZCAwJiYoaS5kaXRoZXJpbmc9dC5kaXRoZXJpbmcpLHQuYWxwaGFUb0NvdmVyYWdlIT09dm9pZCAwJiYoaS5hbHBoYVRvQ292ZXJhZ2U9dC5hbHBoYVRvQ292ZXJhZ2UpLHQucHJlbXVsdGlwbGllZEFscGhhIT09dm9pZCAwJiYoaS5wcmVtdWx0aXBsaWVkQWxwaGE9dC5wcmVtdWx0aXBsaWVkQWxwaGEpLHQudmlzaWJsZSE9PXZvaWQgMCYmKGkudmlzaWJsZT10LnZpc2libGUpLHQudG9uZU1hcHBlZCE9PXZvaWQgMCYmKGkudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQpLHQudXNlckRhdGEhPT12b2lkIDAmJihpLnVzZXJEYXRhPXQudXNlckRhdGEpLHQudmVydGV4Q29sb3JzIT09dm9pZCAwJiYodHlwZW9mIHQudmVydGV4Q29sb3JzPT0ibnVtYmVyIj9pLnZlcnRleENvbG9ycz10LnZlcnRleENvbG9ycz4wOmkudmVydGV4Q29sb3JzPXQudmVydGV4Q29sb3JzKSx0LnVuaWZvcm1zIT09dm9pZCAwKWZvcihsZXQgbyBpbiB0LnVuaWZvcm1zKXtsZXQgYT10LnVuaWZvcm1zW29dO3N3aXRjaChpLnVuaWZvcm1zW29dPXt9LGEudHlwZSl7Y2FzZSJ0IjppLnVuaWZvcm1zW29dLnZhbHVlPW4oYS52YWx1ZSk7YnJlYWs7Y2FzZSJjIjppLnVuaWZvcm1zW29dLnZhbHVlPW5ldyBuZSgpLnNldEhleChhLnZhbHVlKTticmVhaztjYXNlInYyIjppLnVuaWZvcm1zW29dLnZhbHVlPW5ldyBMdCgpLmZyb21BcnJheShhLnZhbHVlKTticmVhaztjYXNlInYzIjppLnVuaWZvcm1zW29dLnZhbHVlPW5ldyBqKCkuZnJvbUFycmF5KGEudmFsdWUpO2JyZWFrO2Nhc2UidjQiOmkudW5pZm9ybXNbb10udmFsdWU9bmV3IGVuKCkuZnJvbUFycmF5KGEudmFsdWUpO2JyZWFrO2Nhc2UibTMiOmkudW5pZm9ybXNbb10udmFsdWU9bmV3IGtpKCkuZnJvbUFycmF5KGEudmFsdWUpO2JyZWFrO2Nhc2UibTQiOmkudW5pZm9ybXNbb10udmFsdWU9bmV3IE1lKCkuZnJvbUFycmF5KGEudmFsdWUpO2JyZWFrO2RlZmF1bHQ6aS51bmlmb3Jtc1tvXS52YWx1ZT1hLnZhbHVlfX1pZih0LmRlZmluZXMhPT12b2lkIDAmJihpLmRlZmluZXM9dC5kZWZpbmVzKSx0LnZlcnRleFNoYWRlciE9PXZvaWQgMCYmKGkudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyKSx0LmZyYWdtZW50U2hhZGVyIT09dm9pZCAwJiYoaS5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyKSx0LmV4dGVuc2lvbnMhPT12b2lkIDApZm9yKGxldCBvIGluIHQuZXh0ZW5zaW9ucylpLmV4dGVuc2lvbnNbb109dC5leHRlbnNpb25zW29dO2lmKHQuc2hhZGluZyE9PXZvaWQgMCYmKGkuZmxhdFNoYWRpbmc9dC5zaGFkaW5nPT09MSksdC5zaXplIT09dm9pZCAwJiYoaS5zaXplPXQuc2l6ZSksdC5zaXplQXR0ZW51YXRpb24hPT12b2lkIDAmJihpLnNpemVBdHRlbnVhdGlvbj10LnNpemVBdHRlbnVhdGlvbiksdC5tYXAhPT12b2lkIDAmJihpLm1hcD1uKHQubWFwKSksdC5tYXRjYXAhPT12b2lkIDAmJihpLm1hdGNhcD1uKHQubWF0Y2FwKSksdC5hbHBoYU1hcCE9PXZvaWQgMCYmKGkuYWxwaGFNYXA9bih0LmFscGhhTWFwKSksdC5idW1wTWFwIT09dm9pZCAwJiYoaS5idW1wTWFwPW4odC5idW1wTWFwKSksdC5idW1wU2NhbGUhPT12b2lkIDAmJihpLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSksdC5ub3JtYWxNYXAhPT12b2lkIDAmJihpLm5vcm1hbE1hcD1uKHQubm9ybWFsTWFwKSksdC5ub3JtYWxNYXBUeXBlIT09dm9pZCAwJiYoaS5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSksdC5ub3JtYWxTY2FsZSE9PXZvaWQgMCl7bGV0IG89dC5ub3JtYWxTY2FsZTtBcnJheS5pc0FycmF5KG8pPT09ITEmJihvPVtvLG9dKSxpLm5vcm1hbFNjYWxlPW5ldyBMdCgpLmZyb21BcnJheShvKX1yZXR1cm4gdC5kaXNwbGFjZW1lbnRNYXAhPT12b2lkIDAmJihpLmRpc3BsYWNlbWVudE1hcD1uKHQuZGlzcGxhY2VtZW50TWFwKSksdC5kaXNwbGFjZW1lbnRTY2FsZSE9PXZvaWQgMCYmKGkuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSksdC5kaXNwbGFjZW1lbnRCaWFzIT09dm9pZCAwJiYoaS5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50QmlhcyksdC5yb3VnaG5lc3NNYXAhPT12b2lkIDAmJihpLnJvdWdobmVzc01hcD1uKHQucm91Z2huZXNzTWFwKSksdC5tZXRhbG5lc3NNYXAhPT12b2lkIDAmJihpLm1ldGFsbmVzc01hcD1uKHQubWV0YWxuZXNzTWFwKSksdC5lbWlzc2l2ZU1hcCE9PXZvaWQgMCYmKGkuZW1pc3NpdmVNYXA9bih0LmVtaXNzaXZlTWFwKSksdC5lbWlzc2l2ZUludGVuc2l0eSE9PXZvaWQgMCYmKGkuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSksdC5zcGVjdWxhck1hcCE9PXZvaWQgMCYmKGkuc3BlY3VsYXJNYXA9bih0LnNwZWN1bGFyTWFwKSksdC5zcGVjdWxhckludGVuc2l0eU1hcCE9PXZvaWQgMCYmKGkuc3BlY3VsYXJJbnRlbnNpdHlNYXA9bih0LnNwZWN1bGFySW50ZW5zaXR5TWFwKSksdC5zcGVjdWxhckNvbG9yTWFwIT09dm9pZCAwJiYoaS5zcGVjdWxhckNvbG9yTWFwPW4odC5zcGVjdWxhckNvbG9yTWFwKSksdC5lbnZNYXAhPT12b2lkIDAmJihpLmVudk1hcD1uKHQuZW52TWFwKSksdC5lbnZNYXBJbnRlbnNpdHkhPT12b2lkIDAmJihpLmVudk1hcEludGVuc2l0eT10LmVudk1hcEludGVuc2l0eSksdC5yZWZsZWN0aXZpdHkhPT12b2lkIDAmJihpLnJlZmxlY3Rpdml0eT10LnJlZmxlY3Rpdml0eSksdC5yZWZyYWN0aW9uUmF0aW8hPT12b2lkIDAmJihpLnJlZnJhY3Rpb25SYXRpbz10LnJlZnJhY3Rpb25SYXRpbyksdC5saWdodE1hcCE9PXZvaWQgMCYmKGkubGlnaHRNYXA9bih0LmxpZ2h0TWFwKSksdC5saWdodE1hcEludGVuc2l0eSE9PXZvaWQgMCYmKGkubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSksdC5hb01hcCE9PXZvaWQgMCYmKGkuYW9NYXA9bih0LmFvTWFwKSksdC5hb01hcEludGVuc2l0eSE9PXZvaWQgMCYmKGkuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSksdC5ncmFkaWVudE1hcCE9PXZvaWQgMCYmKGkuZ3JhZGllbnRNYXA9bih0LmdyYWRpZW50TWFwKSksdC5jbGVhcmNvYXRNYXAhPT12b2lkIDAmJihpLmNsZWFyY29hdE1hcD1uKHQuY2xlYXJjb2F0TWFwKSksdC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAhPT12b2lkIDAmJihpLmNsZWFyY29hdFJvdWdobmVzc01hcD1uKHQuY2xlYXJjb2F0Um91Z2huZXNzTWFwKSksdC5jbGVhcmNvYXROb3JtYWxNYXAhPT12b2lkIDAmJihpLmNsZWFyY29hdE5vcm1hbE1hcD1uKHQuY2xlYXJjb2F0Tm9ybWFsTWFwKSksdC5jbGVhcmNvYXROb3JtYWxTY2FsZSE9PXZvaWQgMCYmKGkuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IEx0KCkuZnJvbUFycmF5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpKSx0LnRyYW5zbWlzc2lvbk1hcCE9PXZvaWQgMCYmKGkudHJhbnNtaXNzaW9uTWFwPW4odC50cmFuc21pc3Npb25NYXApKSx0LnRoaWNrbmVzc01hcCE9PXZvaWQgMCYmKGkudGhpY2tuZXNzTWFwPW4odC50aGlja25lc3NNYXApKSx0LnNoZWVuQ29sb3JNYXAhPT12b2lkIDAmJihpLnNoZWVuQ29sb3JNYXA9bih0LnNoZWVuQ29sb3JNYXApKSx0LnNoZWVuUm91Z2huZXNzTWFwIT09dm9pZCAwJiYoaS5zaGVlblJvdWdobmVzc01hcD1uKHQuc2hlZW5Sb3VnaG5lc3NNYXApKSxpfXNldFRleHR1cmVzKHQpe3JldHVybiB0aGlzLnRleHR1cmVzPXQsdGhpc319LHBNPWNsYXNze3N0YXRpYyBkZWNvZGVUZXh0KHQpe2lmKHR5cGVvZiBUZXh0RGVjb2RlciE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh0KTtsZXQgcj0iIjtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspcis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W25dKTt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocikpfWNhdGNoKG4pe3JldHVybiByfX1zdGF0aWMgZXh0cmFjdFVybEJhc2UodCl7bGV0IHI9dC5sYXN0SW5kZXhPZigiLyIpO3JldHVybiByPT09LTE/Ii4vIjp0LnN1YnN0cigwLHIrMSl9c3RhdGljIHJlc29sdmVVUkwodCxyKXtyZXR1cm4gdHlwZW9mIHQhPSJzdHJpbmcifHx0PT09IiI/IiI6KC9eaHR0cHM/OlwvXC8vaS50ZXN0KHIpJiYvXlwvLy50ZXN0KHQpJiYocj1yLnJlcGxhY2UoLyheaHR0cHM/OlwvXC9bXlwvXSspLiovaSwiJDEiKSksL14oaHR0cHM/Oik/XC9cLy9pLnRlc3QodCl8fC9eZGF0YTouKiwuKiQvaS50ZXN0KHQpfHwvXmJsb2I6LiokL2kudGVzdCh0KT90OnIrdCl9fSxMNj1jbGFzcyBleHRlbmRzIFBle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluc3RhbmNlQ291bnQ9MS8wfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5pbnN0YW5jZUNvdW50PXQuaW5zdGFuY2VDb3VudCx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX10b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04odGhpcyk7cmV0dXJuIHQuaW5zdGFuY2VDb3VudD10aGlzLmluc3RhbmNlQ291bnQsdC5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwLHR9fTtMNi5wcm90b3R5cGUuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMDt2YXIgSVU9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQscixuLGkpe2xldCBvPXRoaXMsYT1uZXcgS2Moby5tYW5hZ2VyKTthLnNldFBhdGgoby5wYXRoKSxhLnNldFJlcXVlc3RIZWFkZXIoby5yZXF1ZXN0SGVhZGVyKSxhLnNldFdpdGhDcmVkZW50aWFscyhvLndpdGhDcmVkZW50aWFscyksYS5sb2FkKHQsZnVuY3Rpb24ocyl7dHJ5e3Ioby5wYXJzZShKU09OLnBhcnNlKHMpKSl9Y2F0Y2gobCl7aT9pKGwpOmNvbnNvbGUuZXJyb3IobCksby5tYW5hZ2VyLml0ZW1FcnJvcih0KX19LG4saSl9cGFyc2UodCl7bGV0IHI9e30sbj17fTtmdW5jdGlvbiBpKHAsZCl7aWYocltkXSE9PXZvaWQgMClyZXR1cm4gcltkXTtsZXQgXz1wLmludGVybGVhdmVkQnVmZmVyc1tkXSx5PW8ocCxfLmJ1ZmZlcikseD1GMyhfLnR5cGUseSksYj1uZXcgZW0oeCxfLnN0cmlkZSk7cmV0dXJuIGIudXVpZD1fLnV1aWQscltkXT1iLGJ9ZnVuY3Rpb24gbyhwLGQpe2lmKG5bZF0hPT12b2lkIDApcmV0dXJuIG5bZF07bGV0IF89cC5hcnJheUJ1ZmZlcnNbZF0seT1uZXcgVWludDMyQXJyYXkoXykuYnVmZmVyO3JldHVybiBuW2RdPXkseX1sZXQgYT10LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk/bmV3IEw2Om5ldyBQZSxzPXQuZGF0YS5pbmRleDtpZihzIT09dm9pZCAwKXtsZXQgcD1GMyhzLnR5cGUscy5hcnJheSk7YS5zZXRJbmRleChuZXcgSmUocCwxKSl9bGV0IGw9dC5kYXRhLmF0dHJpYnV0ZXM7Zm9yKGxldCBwIGluIGwpe2xldCBkPWxbcF0sZztpZihkLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2xldCBfPWkodC5kYXRhLGQuZGF0YSk7Zz1uZXcgUWYoXyxkLml0ZW1TaXplLGQub2Zmc2V0LGQubm9ybWFsaXplZCl9ZWxzZXtsZXQgXz1GMyhkLnR5cGUsZC5hcnJheSkseT1kLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlP3JtOkplO2c9bmV3IHkoXyxkLml0ZW1TaXplLGQubm9ybWFsaXplZCl9ZC5uYW1lIT09dm9pZCAwJiYoZy5uYW1lPWQubmFtZSksZC51c2FnZSE9PXZvaWQgMCYmZy5zZXRVc2FnZShkLnVzYWdlKSxkLnVwZGF0ZVJhbmdlIT09dm9pZCAwJiYoZy51cGRhdGVSYW5nZS5vZmZzZXQ9ZC51cGRhdGVSYW5nZS5vZmZzZXQsZy51cGRhdGVSYW5nZS5jb3VudD1kLnVwZGF0ZVJhbmdlLmNvdW50KSxhLnNldEF0dHJpYnV0ZShwLGcpfWxldCBjPXQuZGF0YS5tb3JwaEF0dHJpYnV0ZXM7aWYoYylmb3IobGV0IHAgaW4gYyl7bGV0IGQ9Y1twXSxnPVtdO2ZvcihsZXQgXz0wLHk9ZC5sZW5ndGg7Xzx5O18rKyl7bGV0IHg9ZFtfXSxiO2lmKHguaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7bGV0IFM9aSh0LmRhdGEseC5kYXRhKTtiPW5ldyBRZihTLHguaXRlbVNpemUseC5vZmZzZXQseC5ub3JtYWxpemVkKX1lbHNle2xldCBTPUYzKHgudHlwZSx4LmFycmF5KTtiPW5ldyBKZShTLHguaXRlbVNpemUseC5ub3JtYWxpemVkKX14Lm5hbWUhPT12b2lkIDAmJihiLm5hbWU9eC5uYW1lKSxnLnB1c2goYil9YS5tb3JwaEF0dHJpYnV0ZXNbcF09Z310LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmUmJihhLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPSEwKTtsZXQgaD10LmRhdGEuZ3JvdXBzfHx0LmRhdGEuZHJhd2NhbGxzfHx0LmRhdGEub2Zmc2V0cztpZihoIT09dm9pZCAwKWZvcihsZXQgcD0wLGQ9aC5sZW5ndGg7cCE9PWQ7KytwKXtsZXQgZz1oW3BdO2EuYWRkR3JvdXAoZy5zdGFydCxnLmNvdW50LGcubWF0ZXJpYWxJbmRleCl9bGV0IGY9dC5kYXRhLmJvdW5kaW5nU3BoZXJlO2lmKGYhPT12b2lkIDApe2xldCBwPW5ldyBqO2YuY2VudGVyIT09dm9pZCAwJiZwLmZyb21BcnJheShmLmNlbnRlciksYS5ib3VuZGluZ1NwaGVyZT1uZXcgS2YocCxmLnJhZGl1cyl9cmV0dXJuIHQubmFtZSYmKGEubmFtZT10Lm5hbWUpLHQudXNlckRhdGEmJihhLnVzZXJEYXRhPXQudXNlckRhdGEpLGF9fSxhaHQ9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQscixuLGkpe2xldCBvPXRoaXMsYT10aGlzLnBhdGg9PT0iIj9wTS5leHRyYWN0VXJsQmFzZSh0KTp0aGlzLnBhdGg7dGhpcy5yZXNvdXJjZVBhdGg9dGhpcy5yZXNvdXJjZVBhdGh8fGE7bGV0IHM9bmV3IEtjKHRoaXMubWFuYWdlcik7cy5zZXRQYXRoKHRoaXMucGF0aCkscy5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlcikscy5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLHMubG9hZCh0LGZ1bmN0aW9uKGwpe2xldCBjPW51bGw7dHJ5e2M9SlNPTi5wYXJzZShsKX1jYXRjaChoKXtpIT09dm9pZCAwJiZpKGgpLGNvbnNvbGUuZXJyb3IoIlRIUkVFOk9iamVjdExvYWRlcjogQ2FuJ3QgcGFyc2UgIit0KyIuIixoLm1lc3NhZ2UpO3JldHVybn1sZXQgdT1jLm1ldGFkYXRhO2lmKHU9PT12b2lkIDB8fHUudHlwZT09PXZvaWQgMHx8dS50eXBlLnRvTG93ZXJDYXNlKCk9PT0iZ2VvbWV0cnkiKXtjb25zb2xlLmVycm9yKCJUSFJFRS5PYmplY3RMb2FkZXI6IENhbid0IGxvYWQgIit0KTtyZXR1cm59by5wYXJzZShjLHIpfSxuLGkpfWxvYWRBc3luYyh0LHIpe3JldHVybiBmcCh0aGlzLG51bGwsZnVuY3Rpb24qKCl7bGV0IG49dGhpcyxpPXRoaXMucGF0aD09PSIiP3BNLmV4dHJhY3RVcmxCYXNlKHQpOnRoaXMucGF0aDt0aGlzLnJlc291cmNlUGF0aD10aGlzLnJlc291cmNlUGF0aHx8aTtsZXQgbz1uZXcgS2ModGhpcy5tYW5hZ2VyKTtvLnNldFBhdGgodGhpcy5wYXRoKSxvLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxvLnNldFdpdGhDcmVkZW50aWFscyh0aGlzLndpdGhDcmVkZW50aWFscyk7bGV0IGE9eWllbGQgby5sb2FkQXN5bmModCxyKSxzPUpTT04ucGFyc2UoYSksbD1zLm1ldGFkYXRhO2lmKGw9PT12b2lkIDB8fGwudHlwZT09PXZvaWQgMHx8bC50eXBlLnRvTG93ZXJDYXNlKCk9PT0iZ2VvbWV0cnkiKXRocm93IG5ldyBFcnJvcigiVEhSRUUuT2JqZWN0TG9hZGVyOiBDYW4ndCBsb2FkICIrdCk7cmV0dXJuIHlpZWxkIG4ucGFyc2VBc3luYyhzKX0pfXBhcnNlKHQscil7bGV0IG49dGhpcy5wYXJzZUFuaW1hdGlvbnModC5hbmltYXRpb25zKSxpPXRoaXMucGFyc2VTaGFwZXModC5zaGFwZXMpLG89dGhpcy5wYXJzZUdlb21ldHJpZXModC5nZW9tZXRyaWVzLGkpLGE9dGhpcy5wYXJzZUltYWdlcyh0LmltYWdlcyxmdW5jdGlvbigpe3IhPT12b2lkIDAmJnIoYyl9KSxzPXRoaXMucGFyc2VUZXh0dXJlcyh0LnRleHR1cmVzLGEpLGw9dGhpcy5wYXJzZU1hdGVyaWFscyh0Lm1hdGVyaWFscyxzKSxjPXRoaXMucGFyc2VPYmplY3QodC5vYmplY3QsbyxsLHMsbiksdT10aGlzLnBhcnNlU2tlbGV0b25zKHQuc2tlbGV0b25zLGMpO2lmKHRoaXMuYmluZFNrZWxldG9ucyhjLHUpLHIhPT12b2lkIDApe2xldCBoPSExO2ZvcihsZXQgZiBpbiBhKWlmKGFbZl1pbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpe2g9ITA7YnJlYWt9aD09PSExJiZyKGMpfXJldHVybiBjfXBhcnNlQXN5bmModCl7cmV0dXJuIGZwKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtsZXQgcj10aGlzLnBhcnNlQW5pbWF0aW9ucyh0LmFuaW1hdGlvbnMpLG49dGhpcy5wYXJzZVNoYXBlcyh0LnNoYXBlcyksaT10aGlzLnBhcnNlR2VvbWV0cmllcyh0Lmdlb21ldHJpZXMsbiksbz15aWVsZCB0aGlzLnBhcnNlSW1hZ2VzQXN5bmModC5pbWFnZXMpLGE9dGhpcy5wYXJzZVRleHR1cmVzKHQudGV4dHVyZXMsbykscz10aGlzLnBhcnNlTWF0ZXJpYWxzKHQubWF0ZXJpYWxzLGEpLGw9dGhpcy5wYXJzZU9iamVjdCh0Lm9iamVjdCxpLHMsYSxyKSxjPXRoaXMucGFyc2VTa2VsZXRvbnModC5za2VsZXRvbnMsbCk7cmV0dXJuIHRoaXMuYmluZFNrZWxldG9ucyhsLGMpLGx9KX1wYXJzZVNoYXBlcyh0KXtsZXQgcj17fTtpZih0IT09dm9pZCAwKWZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7bGV0IG89bmV3IFhjKCkuZnJvbUpTT04odFtuXSk7cltvLnV1aWRdPW99cmV0dXJuIHJ9cGFyc2VTa2VsZXRvbnModCxyKXtsZXQgbj17fSxpPXt9O2lmKHIudHJhdmVyc2UoZnVuY3Rpb24obyl7by5pc0JvbmUmJihpW28udXVpZF09byl9KSx0IT09dm9pZCAwKWZvcihsZXQgbz0wLGE9dC5sZW5ndGg7bzxhO28rKyl7bGV0IHM9bmV3IHNNKCkuZnJvbUpTT04odFtvXSxpKTtuW3MudXVpZF09c31yZXR1cm4gbn1wYXJzZUdlb21ldHJpZXModCxyKXtsZXQgbj17fTtpZih0IT09dm9pZCAwKXtsZXQgaT1uZXcgSVU7Zm9yKGxldCBvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtsZXQgcyxsPXRbb107c3dpdGNoKGwudHlwZSl7Y2FzZSJCdWZmZXJHZW9tZXRyeSI6Y2FzZSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSI6cz1pLnBhcnNlKGwpO2JyZWFrO2Nhc2UiR2VvbWV0cnkiOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdExvYWRlcjogVGhlIGxlZ2FjeSBHZW9tZXRyeSB0eXBlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIik7YnJlYWs7ZGVmYXVsdDpsLnR5cGUgaW4gdWhlP3M9dWhlW2wudHlwZV0uZnJvbUpTT04obCxyKTpjb25zb2xlLndhcm4oYFRIUkVFLk9iamVjdExvYWRlcjogVW5zdXBwb3J0ZWQgZ2VvbWV0cnkgdHlwZSAiJHtsLnR5cGV9ImApfXMudXVpZD1sLnV1aWQsbC5uYW1lIT09dm9pZCAwJiYocy5uYW1lPWwubmFtZSkscy5pc0J1ZmZlckdlb21ldHJ5PT09ITAmJmwudXNlckRhdGEhPT12b2lkIDAmJihzLnVzZXJEYXRhPWwudXNlckRhdGEpLG5bbC51dWlkXT1zfX1yZXR1cm4gbn1wYXJzZU1hdGVyaWFscyh0LHIpe2xldCBuPXt9LGk9e307aWYodCE9PXZvaWQgMCl7bGV0IG89bmV3IFBVO28uc2V0VGV4dHVyZXMocik7Zm9yKGxldCBhPTAscz10Lmxlbmd0aDthPHM7YSsrKXtsZXQgbD10W2FdO2lmKGwudHlwZT09PSJNdWx0aU1hdGVyaWFsIil7bGV0IGM9W107Zm9yKGxldCB1PTA7dTxsLm1hdGVyaWFscy5sZW5ndGg7dSsrKXtsZXQgaD1sLm1hdGVyaWFsc1t1XTtuW2gudXVpZF09PT12b2lkIDAmJihuW2gudXVpZF09by5wYXJzZShoKSksYy5wdXNoKG5baC51dWlkXSl9aVtsLnV1aWRdPWN9ZWxzZSBuW2wudXVpZF09PT12b2lkIDAmJihuW2wudXVpZF09by5wYXJzZShsKSksaVtsLnV1aWRdPW5bbC51dWlkXX19cmV0dXJuIGl9cGFyc2VBbmltYXRpb25zKHQpe2xldCByPXt9O2lmKHQhPT12b2lkIDApZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCBpPXRbbl0sbz1RMS5wYXJzZShpKTtyW28udXVpZF09b31yZXR1cm4gcn1wYXJzZUltYWdlcyh0LHIpe2xldCBuPXRoaXMsaT17fSxvO2Z1bmN0aW9uIGEobCl7cmV0dXJuIG4ubWFuYWdlci5pdGVtU3RhcnQobCksby5sb2FkKGwsZnVuY3Rpb24oKXtuLm1hbmFnZXIuaXRlbUVuZChsKX0sdm9pZCAwLGZ1bmN0aW9uKCl7bi5tYW5hZ2VyLml0ZW1FcnJvcihsKSxuLm1hbmFnZXIuaXRlbUVuZChsKX0pfWZ1bmN0aW9uIHMobCl7aWYodHlwZW9mIGw9PSJzdHJpbmciKXtsZXQgYz1sLHU9L14oXC9cLyl8KFthLXpdKzooXC9cLyk/KS9pLnRlc3QoYyk/YzpuLnJlc291cmNlUGF0aCtjO3JldHVybiBhKHUpfWVsc2UgcmV0dXJuIGwuZGF0YT97ZGF0YTpGMyhsLnR5cGUsbC5kYXRhKSx3aWR0aDpsLndpZHRoLGhlaWdodDpsLmhlaWdodH06bnVsbH1pZih0IT09dm9pZCAwJiZ0Lmxlbmd0aD4wKXtsZXQgbD1uZXcgdzYocik7bz1uZXcgZXgobCksby5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtmb3IobGV0IGM9MCx1PXQubGVuZ3RoO2M8dTtjKyspe2xldCBoPXRbY10sZj1oLnVybDtpZihBcnJheS5pc0FycmF5KGYpKXtpW2gudXVpZF09W107Zm9yKGxldCBwPTAsZD1mLmxlbmd0aDtwPGQ7cCsrKXtsZXQgZz1mW3BdLF89cyhnKTtfIT09bnVsbCYmKF8gaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50P2lbaC51dWlkXS5wdXNoKF8pOmlbaC51dWlkXS5wdXNoKG5ldyBKZChfLmRhdGEsXy53aWR0aCxfLmhlaWdodCkpKX19ZWxzZXtsZXQgcD1zKGgudXJsKTtwIT09bnVsbCYmKGlbaC51dWlkXT1wKX19fXJldHVybiBpfXBhcnNlSW1hZ2VzQXN5bmModCl7cmV0dXJuIGZwKHRoaXMsbnVsbCxmdW5jdGlvbiooKXtsZXQgcj10aGlzLG49e30saTtmdW5jdGlvbiBvKGEpe3JldHVybiBmcCh0aGlzLG51bGwsZnVuY3Rpb24qKCl7aWYodHlwZW9mIGE9PSJzdHJpbmciKXtsZXQgcz1hLGw9L14oXC9cLyl8KFthLXpdKzooXC9cLyk/KS9pLnRlc3Qocyk/czpyLnJlc291cmNlUGF0aCtzO3JldHVybiB5aWVsZCBpLmxvYWRBc3luYyhsKX1lbHNlIHJldHVybiBhLmRhdGE/e2RhdGE6RjMoYS50eXBlLGEuZGF0YSksd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9Om51bGx9KX1pZih0IT09dm9pZCAwJiZ0Lmxlbmd0aD4wKXtpPW5ldyBleCh0aGlzLm1hbmFnZXIpLGkuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Zm9yKGxldCBhPTAscz10Lmxlbmd0aDthPHM7YSsrKXtsZXQgbD10W2FdLGM9bC51cmw7aWYoQXJyYXkuaXNBcnJheShjKSl7bltsLnV1aWRdPVtdO2ZvcihsZXQgdT0wLGg9Yy5sZW5ndGg7dTxoO3UrKyl7bGV0IGY9Y1t1XSxwPXlpZWxkIG8oZik7cCE9PW51bGwmJihwIGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudD9uW2wudXVpZF0ucHVzaChwKTpuW2wudXVpZF0ucHVzaChuZXcgSmQocC5kYXRhLHAud2lkdGgscC5oZWlnaHQpKSl9fWVsc2V7bGV0IHU9eWllbGQgbyhsLnVybCk7dSE9PW51bGwmJihuW2wudXVpZF09dSl9fX1yZXR1cm4gbn0pfXBhcnNlVGV4dHVyZXModCxyKXtmdW5jdGlvbiBuKG8sYSl7cmV0dXJuIHR5cGVvZiBvPT0ibnVtYmVyIj9vOihjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlci5wYXJzZVRleHR1cmU6IENvbnN0YW50IHNob3VsZCBiZSBpbiBudW1lcmljIGZvcm0uIixvKSxhW29dKX1sZXQgaT17fTtpZih0IT09dm9pZCAwKWZvcihsZXQgbz0wLGE9dC5sZW5ndGg7bzxhO28rKyl7bGV0IHM9dFtvXTtzLmltYWdlPT09dm9pZCAwJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogTm8gImltYWdlIiBzcGVjaWZpZWQgZm9yJyxzLnV1aWQpLHJbcy5pbWFnZV09PT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgaW1hZ2UiLHMuaW1hZ2UpO2xldCBsLGM9cltzLmltYWdlXTtBcnJheS5pc0FycmF5KGMpPyhsPW5ldyBIMChjKSxjLmxlbmd0aD09PTYmJihsLm5lZWRzVXBkYXRlPSEwKSk6KGMmJmMuZGF0YT9sPW5ldyBKZChjLmRhdGEsYy53aWR0aCxjLmhlaWdodCk6bD1uZXcgeGkoYyksYyYmKGwubmVlZHNVcGRhdGU9ITApKSxsLnV1aWQ9cy51dWlkLHMubmFtZSE9PXZvaWQgMCYmKGwubmFtZT1zLm5hbWUpLHMubWFwcGluZyE9PXZvaWQgMCYmKGwubWFwcGluZz1uKHMubWFwcGluZyxyMHIpKSxzLm9mZnNldCE9PXZvaWQgMCYmbC5vZmZzZXQuZnJvbUFycmF5KHMub2Zmc2V0KSxzLnJlcGVhdCE9PXZvaWQgMCYmbC5yZXBlYXQuZnJvbUFycmF5KHMucmVwZWF0KSxzLmNlbnRlciE9PXZvaWQgMCYmbC5jZW50ZXIuZnJvbUFycmF5KHMuY2VudGVyKSxzLnJvdGF0aW9uIT09dm9pZCAwJiYobC5yb3RhdGlvbj1zLnJvdGF0aW9uKSxzLndyYXAhPT12b2lkIDAmJihsLndyYXBTPW4ocy53cmFwWzBdLG1oZSksbC53cmFwVD1uKHMud3JhcFsxXSxtaGUpKSxzLmZvcm1hdCE9PXZvaWQgMCYmKGwuZm9ybWF0PXMuZm9ybWF0KSxzLnR5cGUhPT12b2lkIDAmJihsLnR5cGU9cy50eXBlKSxzLmVuY29kaW5nIT09dm9pZCAwJiYobC5lbmNvZGluZz1zLmVuY29kaW5nKSxzLm1pbkZpbHRlciE9PXZvaWQgMCYmKGwubWluRmlsdGVyPW4ocy5taW5GaWx0ZXIsZ2hlKSkscy5tYWdGaWx0ZXIhPT12b2lkIDAmJihsLm1hZ0ZpbHRlcj1uKHMubWFnRmlsdGVyLGdoZSkpLHMuYW5pc290cm9weSE9PXZvaWQgMCYmKGwuYW5pc290cm9weT1zLmFuaXNvdHJvcHkpLHMuZmxpcFkhPT12b2lkIDAmJihsLmZsaXBZPXMuZmxpcFkpLHMucHJlbXVsdGlwbHlBbHBoYSE9PXZvaWQgMCYmKGwucHJlbXVsdGlwbHlBbHBoYT1zLnByZW11bHRpcGx5QWxwaGEpLHMudW5wYWNrQWxpZ25tZW50IT09dm9pZCAwJiYobC51bnBhY2tBbGlnbm1lbnQ9cy51bnBhY2tBbGlnbm1lbnQpLHMudXNlckRhdGEhPT12b2lkIDAmJihsLnVzZXJEYXRhPXMudXNlckRhdGEpLGlbcy51dWlkXT1sfXJldHVybiBpfXBhcnNlT2JqZWN0KHQscixuLGksbyl7bGV0IGE7ZnVuY3Rpb24gcyhmKXtyZXR1cm4gcltmXT09PXZvaWQgMCYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBnZW9tZXRyeSIsZikscltmXX1mdW5jdGlvbiBsKGYpe2lmKGYhPT12b2lkIDApe2lmKEFycmF5LmlzQXJyYXkoZikpe2xldCBwPVtdO2ZvcihsZXQgZD0wLGc9Zi5sZW5ndGg7ZDxnO2QrKyl7bGV0IF89ZltkXTtuW19dPT09dm9pZCAwJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsIixfKSxwLnB1c2gobltfXSl9cmV0dXJuIHB9cmV0dXJuIG5bZl09PT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgbWF0ZXJpYWwiLGYpLG5bZl19fWZ1bmN0aW9uIGMoZil7cmV0dXJuIGlbZl09PT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgdGV4dHVyZSIsZiksaVtmXX1sZXQgdSxoO3N3aXRjaCh0LnR5cGUpe2Nhc2UiU2NlbmUiOmE9bmV3IHEwLHQuYmFja2dyb3VuZCE9PXZvaWQgMCYmKE51bWJlci5pc0ludGVnZXIodC5iYWNrZ3JvdW5kKT9hLmJhY2tncm91bmQ9bmV3IG5lKHQuYmFja2dyb3VuZCk6YS5iYWNrZ3JvdW5kPWModC5iYWNrZ3JvdW5kKSksdC5lbnZpcm9ubWVudCE9PXZvaWQgMCYmKGEuZW52aXJvbm1lbnQ9Yyh0LmVudmlyb25tZW50KSksdC5mb2chPT12b2lkIDAmJih0LmZvZy50eXBlPT09IkZvZyI/YS5mb2c9bmV3IHoxKHQuZm9nLmNvbG9yLHQuZm9nLm5lYXIsdC5mb2cuZmFyKTp0LmZvZy50eXBlPT09IkZvZ0V4cDIiJiYoYS5mb2c9bmV3IE8xKHQuZm9nLmNvbG9yLHQuZm9nLmRlbnNpdHkpKSk7YnJlYWs7Y2FzZSJQZXJzcGVjdGl2ZUNhbWVyYSI6YT1uZXcgVmkodC5mb3YsdC5hc3BlY3QsdC5uZWFyLHQuZmFyKSx0LmZvY3VzIT09dm9pZCAwJiYoYS5mb2N1cz10LmZvY3VzKSx0Lnpvb20hPT12b2lkIDAmJihhLnpvb209dC56b29tKSx0LmZpbG1HYXVnZSE9PXZvaWQgMCYmKGEuZmlsbUdhdWdlPXQuZmlsbUdhdWdlKSx0LmZpbG1PZmZzZXQhPT12b2lkIDAmJihhLmZpbG1PZmZzZXQ9dC5maWxtT2Zmc2V0KSx0LnZpZXchPT12b2lkIDAmJihhLnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpKTticmVhaztjYXNlIk9ydGhvZ3JhcGhpY0NhbWVyYSI6YT1uZXcgRDEodC5sZWZ0LHQucmlnaHQsdC50b3AsdC5ib3R0b20sdC5uZWFyLHQuZmFyKSx0Lnpvb20hPT12b2lkIDAmJihhLnpvb209dC56b29tKSx0LnZpZXchPT12b2lkIDAmJihhLnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpKTticmVhaztjYXNlIkFtYmllbnRMaWdodCI6YT1uZXcgQTYodC5jb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjphPW5ldyBDNih0LmNvbG9yLHQuaW50ZW5zaXR5KTticmVhaztjYXNlIlBvaW50TGlnaHQiOmE9bmV3IFQ2KHQuY29sb3IsdC5pbnRlbnNpdHksdC5kaXN0YW5jZSx0LmRlY2F5KTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOmE9bmV3IFA2KHQuY29sb3IsdC5pbnRlbnNpdHksdC53aWR0aCx0LmhlaWdodCk7YnJlYWs7Y2FzZSJTcG90TGlnaHQiOmE9bmV3IEU2KHQuY29sb3IsdC5pbnRlbnNpdHksdC5kaXN0YW5jZSx0LmFuZ2xlLHQucGVudW1icmEsdC5kZWNheSk7YnJlYWs7Y2FzZSJIZW1pc3BoZXJlTGlnaHQiOmE9bmV3IFM2KHQuY29sb3IsdC5ncm91bmRDb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJMaWdodFByb2JlIjphPW5ldyByeCgpLmZyb21KU09OKHQpO2JyZWFrO2Nhc2UiU2tpbm5lZE1lc2giOnU9cyh0Lmdlb21ldHJ5KSxoPWwodC5tYXRlcmlhbCksYT1uZXcgb00odSxoKSx0LmJpbmRNb2RlIT09dm9pZCAwJiYoYS5iaW5kTW9kZT10LmJpbmRNb2RlKSx0LmJpbmRNYXRyaXghPT12b2lkIDAmJmEuYmluZE1hdHJpeC5mcm9tQXJyYXkodC5iaW5kTWF0cml4KSx0LnNrZWxldG9uIT09dm9pZCAwJiYoYS5za2VsZXRvbj10LnNrZWxldG9uKTticmVhaztjYXNlIk1lc2giOnU9cyh0Lmdlb21ldHJ5KSxoPWwodC5tYXRlcmlhbCksYT1uZXcgZWkodSxoKTticmVhaztjYXNlIkluc3RhbmNlZE1lc2giOnU9cyh0Lmdlb21ldHJ5KSxoPWwodC5tYXRlcmlhbCk7bGV0IGY9dC5jb3VudCxwPXQuaW5zdGFuY2VNYXRyaXgsZD10Lmluc3RhbmNlQ29sb3I7YT1uZXcgZTYodSxoLGYpLGEuaW5zdGFuY2VNYXRyaXg9bmV3IHJtKG5ldyBGbG9hdDMyQXJyYXkocC5hcnJheSksMTYpLGQhPT12b2lkIDAmJihhLmluc3RhbmNlQ29sb3I9bmV3IHJtKG5ldyBGbG9hdDMyQXJyYXkoZC5hcnJheSksZC5pdGVtU2l6ZSkpO2JyZWFrO2Nhc2UiTE9EIjphPW5ldyBkVTticmVhaztjYXNlIkxpbmUiOmE9bmV3IGxoKHModC5nZW9tZXRyeSksbCh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJMaW5lTG9vcCI6YT1uZXcgcjYocyh0Lmdlb21ldHJ5KSxsKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkxpbmVTZWdtZW50cyI6YT1uZXcgQ2Eocyh0Lmdlb21ldHJ5KSxsKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIlBvaW50Q2xvdWQiOmNhc2UiUG9pbnRzIjphPW5ldyBpbShzKHQuZ2VvbWV0cnkpLGwodC5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UiU3ByaXRlIjphPW5ldyBpTShsKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkdyb3VwIjphPW5ldyBYZDticmVhaztjYXNlIkJvbmUiOmE9bmV3IGFNO2JyZWFrO2RlZmF1bHQ6YT1uZXcgb3J9aWYoYS51dWlkPXQudXVpZCx0Lm5hbWUhPT12b2lkIDAmJihhLm5hbWU9dC5uYW1lKSx0Lm1hdHJpeCE9PXZvaWQgMD8oYS5tYXRyaXguZnJvbUFycmF5KHQubWF0cml4KSx0Lm1hdHJpeEF1dG9VcGRhdGUhPT12b2lkIDAmJihhLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlKSxhLm1hdHJpeEF1dG9VcGRhdGUmJmEubWF0cml4LmRlY29tcG9zZShhLnBvc2l0aW9uLGEucXVhdGVybmlvbixhLnNjYWxlKSk6KHQucG9zaXRpb24hPT12b2lkIDAmJmEucG9zaXRpb24uZnJvbUFycmF5KHQucG9zaXRpb24pLHQucm90YXRpb24hPT12b2lkIDAmJmEucm90YXRpb24uZnJvbUFycmF5KHQucm90YXRpb24pLHQucXVhdGVybmlvbiE9PXZvaWQgMCYmYS5xdWF0ZXJuaW9uLmZyb21BcnJheSh0LnF1YXRlcm5pb24pLHQuc2NhbGUhPT12b2lkIDAmJmEuc2NhbGUuZnJvbUFycmF5KHQuc2NhbGUpKSx0LmNhc3RTaGFkb3chPT12b2lkIDAmJihhLmNhc3RTaGFkb3c9dC5jYXN0U2hhZG93KSx0LnJlY2VpdmVTaGFkb3chPT12b2lkIDAmJihhLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93KSx0LnNoYWRvdyYmKHQuc2hhZG93LmJpYXMhPT12b2lkIDAmJihhLnNoYWRvdy5iaWFzPXQuc2hhZG93LmJpYXMpLHQuc2hhZG93Lm5vcm1hbEJpYXMhPT12b2lkIDAmJihhLnNoYWRvdy5ub3JtYWxCaWFzPXQuc2hhZG93Lm5vcm1hbEJpYXMpLHQuc2hhZG93LnJhZGl1cyE9PXZvaWQgMCYmKGEuc2hhZG93LnJhZGl1cz10LnNoYWRvdy5yYWRpdXMpLHQuc2hhZG93Lm1hcFNpemUhPT12b2lkIDAmJmEuc2hhZG93Lm1hcFNpemUuZnJvbUFycmF5KHQuc2hhZG93Lm1hcFNpemUpLHQuc2hhZG93LmNhbWVyYSE9PXZvaWQgMCYmKGEuc2hhZG93LmNhbWVyYT10aGlzLnBhcnNlT2JqZWN0KHQuc2hhZG93LmNhbWVyYSkpKSx0LnZpc2libGUhPT12b2lkIDAmJihhLnZpc2libGU9dC52aXNpYmxlKSx0LmZydXN0dW1DdWxsZWQhPT12b2lkIDAmJihhLmZydXN0dW1DdWxsZWQ9dC5mcnVzdHVtQ3VsbGVkKSx0LnJlbmRlck9yZGVyIT09dm9pZCAwJiYoYS5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyKSx0LnVzZXJEYXRhIT09dm9pZCAwJiYoYS51c2VyRGF0YT10LnVzZXJEYXRhKSx0LmxheWVycyE9PXZvaWQgMCYmKGEubGF5ZXJzLm1hc2s9dC5sYXllcnMpLHQuY2hpbGRyZW4hPT12b2lkIDApe2xldCBmPXQuY2hpbGRyZW47Zm9yKGxldCBwPTA7cDxmLmxlbmd0aDtwKyspYS5hZGQodGhpcy5wYXJzZU9iamVjdChmW3BdLHIsbixpLG8pKX1pZih0LmFuaW1hdGlvbnMhPT12b2lkIDApe2xldCBmPXQuYW5pbWF0aW9ucztmb3IobGV0IHA9MDtwPGYubGVuZ3RoO3ArKyl7bGV0IGQ9ZltwXTthLmFuaW1hdGlvbnMucHVzaChvW2RdKX19aWYodC50eXBlPT09IkxPRCIpe3QuYXV0b1VwZGF0ZSE9PXZvaWQgMCYmKGEuYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUpO2xldCBmPXQubGV2ZWxzO2ZvcihsZXQgcD0wO3A8Zi5sZW5ndGg7cCsrKXtsZXQgZD1mW3BdLGc9YS5nZXRPYmplY3RCeVByb3BlcnR5KCJ1dWlkIixkLm9iamVjdCk7ZyE9PXZvaWQgMCYmYS5hZGRMZXZlbChnLGQuZGlzdGFuY2UpfX1yZXR1cm4gYX1iaW5kU2tlbGV0b25zKHQscil7T2JqZWN0LmtleXMocikubGVuZ3RoIT09MCYmdC50cmF2ZXJzZShmdW5jdGlvbihuKXtpZihuLmlzU2tpbm5lZE1lc2g9PT0hMCYmbi5za2VsZXRvbiE9PXZvaWQgMCl7bGV0IGk9cltuLnNrZWxldG9uXTtpPT09dm9pZCAwP2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBObyBza2VsZXRvbiBmb3VuZCB3aXRoIFVVSUQ6IixuLnNrZWxldG9uKTpuLmJpbmQoaSxuLmJpbmRNYXRyaXgpfX0pfXNldFRleHR1cmVQYXRoKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogLnNldFRleHR1cmVQYXRoKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0UmVzb3VyY2VQYXRoKCkuIiksdGhpcy5zZXRSZXNvdXJjZVBhdGgodCl9fSxyMHI9e1VWTWFwcGluZzpXVSxDdWJlUmVmbGVjdGlvbk1hcHBpbmc6bngsQ3ViZVJlZnJhY3Rpb25NYXBwaW5nOml4LEVxdWlyZWN0YW5ndWxhclJlZmxlY3Rpb25NYXBwaW5nOnFQLEVxdWlyZWN0YW5ndWxhclJlZnJhY3Rpb25NYXBwaW5nOkdQLEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nOnZNLEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nOk42fSxtaGU9e1JlcGVhdFdyYXBwaW5nOldQLENsYW1wVG9FZGdlV3JhcHBpbmc6Wm8sTWlycm9yZWRSZXBlYXRXcmFwcGluZzpZUH0sZ2hlPXtOZWFyZXN0RmlsdGVyOkxpLE5lYXJlc3RNaXBtYXBOZWFyZXN0RmlsdGVyOnJVLE5lYXJlc3RNaXBtYXBMaW5lYXJGaWx0ZXI6blUsTGluZWFyRmlsdGVyOm9pLExpbmVhck1pcG1hcE5lYXJlc3RGaWx0ZXI6SWh0LExpbmVhck1pcG1hcExpbmVhckZpbHRlcjpveH0sTFU9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXA9PSJ1bmRlZmluZWQiJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBjcmVhdGVJbWFnZUJpdG1hcCgpIG5vdCBzdXBwb3J0ZWQuIiksdHlwZW9mIGZldGNoPT0idW5kZWZpbmVkIiYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fXNldE9wdGlvbnModCl7cmV0dXJuIHRoaXMub3B0aW9ucz10LHRoaXN9bG9hZCh0LHIsbixpKXt0PT09dm9pZCAwJiYodD0iIiksdGhpcy5wYXRoIT09dm9pZCAwJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtsZXQgbz10aGlzLGE9dHguZ2V0KHQpO2lmKGEhPT12b2lkIDApcmV0dXJuIG8ubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dChmdW5jdGlvbigpe3ImJnIoYSksby5tYW5hZ2VyLml0ZW1FbmQodCl9LDApLGE7bGV0IHM9e307cy5jcmVkZW50aWFscz10aGlzLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/InNhbWUtb3JpZ2luIjoiaW5jbHVkZSIscy5oZWFkZXJzPXRoaXMucmVxdWVzdEhlYWRlcixmZXRjaCh0LHMpLnRoZW4oZnVuY3Rpb24obCl7cmV0dXJuIGwuYmxvYigpfSkudGhlbihmdW5jdGlvbihsKXtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobCxPYmplY3QuYXNzaWduKG8ub3B0aW9ucyx7Y29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifSkpfSkudGhlbihmdW5jdGlvbihsKXt0eC5hZGQodCxsKSxyJiZyKGwpLG8ubWFuYWdlci5pdGVtRW5kKHQpfSkuY2F0Y2goZnVuY3Rpb24obCl7aSYmaShsKSxvLm1hbmFnZXIuaXRlbUVycm9yKHQpLG8ubWFuYWdlci5pdGVtRW5kKHQpfSksby5tYW5hZ2VyLml0ZW1TdGFydCh0KX19O0xVLnByb3RvdHlwZS5pc0ltYWdlQml0bWFwTG9hZGVyPSEwO3ZhciBVVixPaHQ9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gVVY9PT12b2lkIDAmJihVVj1uZXcod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkpLFVWfSxzZXRDb250ZXh0OmZ1bmN0aW9uKGUpe1VWPWV9fSxrVT1jbGFzcyBleHRlbmRzIHRhe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxyLG4saSl7bGV0IG89dGhpcyxhPW5ldyBLYyh0aGlzLm1hbmFnZXIpO2Euc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLGEuc2V0UGF0aCh0aGlzLnBhdGgpLGEuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLGEuc2V0V2l0aENyZWRlbnRpYWxzKHRoaXMud2l0aENyZWRlbnRpYWxzKSxhLmxvYWQodCxmdW5jdGlvbihzKXt0cnl7bGV0IGw9cy5zbGljZSgwKTtPaHQuZ2V0Q29udGV4dCgpLmRlY29kZUF1ZGlvRGF0YShsLGZ1bmN0aW9uKHUpe3IodSl9KX1jYXRjaChsKXtpP2kobCk6Y29uc29sZS5lcnJvcihsKSxvLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0sbixpKX19LFJVPWNsYXNzIGV4dGVuZHMgcnh7Y29uc3RydWN0b3IodCxyLG49MSl7c3VwZXIodm9pZCAwLG4pO2xldCBpPW5ldyBuZSgpLnNldCh0KSxvPW5ldyBuZSgpLnNldChyKSxhPW5ldyBqKGkucixpLmcsaS5iKSxzPW5ldyBqKG8ucixvLmcsby5iKSxsPU1hdGguc3FydChNYXRoLlBJKSxjPWwqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShhKS5hZGQocykubXVsdGlwbHlTY2FsYXIobCksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShhKS5zdWIocykubXVsdGlwbHlTY2FsYXIoYyl9fTtSVS5wcm90b3R5cGUuaXNIZW1pc3BoZXJlTGlnaHRQcm9iZT0hMDt2YXIgTlU9Y2xhc3MgZXh0ZW5kcyByeHtjb25zdHJ1Y3Rvcih0LHI9MSl7c3VwZXIodm9pZCAwLHIpO2xldCBuPW5ldyBuZSgpLnNldCh0KTt0aGlzLnNoLmNvZWZmaWNpZW50c1swXS5zZXQobi5yLG4uZyxuLmIpLm11bHRpcGx5U2NhbGFyKDIqTWF0aC5zcXJ0KE1hdGguUEkpKX19O05VLnByb3RvdHlwZS5pc0FtYmllbnRMaWdodFByb2JlPSEwO3ZhciBfaGU9bmV3IE1lLHloZT1uZXcgTWUseTE9bmV3IE1lLHNodD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iU3RlcmVvQ2FtZXJhIix0aGlzLmFzcGVjdD0xLHRoaXMuZXllU2VwPS4wNjQsdGhpcy5jYW1lcmFMPW5ldyBWaSx0aGlzLmNhbWVyYUwubGF5ZXJzLmVuYWJsZSgxKSx0aGlzLmNhbWVyYUwubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmNhbWVyYVI9bmV3IFZpLHRoaXMuY2FtZXJhUi5sYXllcnMuZW5hYmxlKDIpLHRoaXMuY2FtZXJhUi5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2NhY2hlPXtmb2N1czpudWxsLGZvdjpudWxsLGFzcGVjdDpudWxsLG5lYXI6bnVsbCxmYXI6bnVsbCx6b29tOm51bGwsZXllU2VwOm51bGx9fXVwZGF0ZSh0KXtsZXQgcj10aGlzLl9jYWNoZTtpZihyLmZvY3VzIT09dC5mb2N1c3x8ci5mb3YhPT10LmZvdnx8ci5hc3BlY3QhPT10LmFzcGVjdCp0aGlzLmFzcGVjdHx8ci5uZWFyIT09dC5uZWFyfHxyLmZhciE9PXQuZmFyfHxyLnpvb20hPT10Lnpvb218fHIuZXllU2VwIT09dGhpcy5leWVTZXApe3IuZm9jdXM9dC5mb2N1cyxyLmZvdj10LmZvdixyLmFzcGVjdD10LmFzcGVjdCp0aGlzLmFzcGVjdCxyLm5lYXI9dC5uZWFyLHIuZmFyPXQuZmFyLHIuem9vbT10Lnpvb20sci5leWVTZXA9dGhpcy5leWVTZXAseTEuY29weSh0LnByb2plY3Rpb25NYXRyaXgpO2xldCBpPXIuZXllU2VwLzIsbz1pKnIubmVhci9yLmZvY3VzLGE9ci5uZWFyKk1hdGgudGFuKFAxKnIuZm92Ki41KS9yLnpvb20scyxsO3loZS5lbGVtZW50c1sxMl09LWksX2hlLmVsZW1lbnRzWzEyXT1pLHM9LWEqci5hc3BlY3QrbyxsPWEqci5hc3BlY3Qrbyx5MS5lbGVtZW50c1swXT0yKnIubmVhci8obC1zKSx5MS5lbGVtZW50c1s4XT0obCtzKS8obC1zKSx0aGlzLmNhbWVyYUwucHJvamVjdGlvbk1hdHJpeC5jb3B5KHkxKSxzPS1hKnIuYXNwZWN0LW8sbD1hKnIuYXNwZWN0LW8seTEuZWxlbWVudHNbMF09MipyLm5lYXIvKGwtcykseTEuZWxlbWVudHNbOF09KGwrcykvKGwtcyksdGhpcy5jYW1lcmFSLnByb2plY3Rpb25NYXRyaXguY29weSh5MSl9dGhpcy5jYW1lcmFMLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCkubXVsdGlwbHkoeWhlKSx0aGlzLmNhbWVyYVIubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKS5tdWx0aXBseShfaGUpfX0sZE09Y2xhc3N7Y29uc3RydWN0b3IodD0hMCl7dGhpcy5hdXRvU3RhcnQ9dCx0aGlzLnN0YXJ0VGltZT0wLHRoaXMub2xkVGltZT0wLHRoaXMuZWxhcHNlZFRpbWU9MCx0aGlzLnJ1bm5pbmc9ITF9c3RhcnQoKXt0aGlzLnN0YXJ0VGltZT12aGUoKSx0aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWUsdGhpcy5lbGFwc2VkVGltZT0wLHRoaXMucnVubmluZz0hMH1zdG9wKCl7dGhpcy5nZXRFbGFwc2VkVGltZSgpLHRoaXMucnVubmluZz0hMSx0aGlzLmF1dG9TdGFydD0hMX1nZXRFbGFwc2VkVGltZSgpe3JldHVybiB0aGlzLmdldERlbHRhKCksdGhpcy5lbGFwc2VkVGltZX1nZXREZWx0YSgpe2xldCB0PTA7aWYodGhpcy5hdXRvU3RhcnQmJiF0aGlzLnJ1bm5pbmcpcmV0dXJuIHRoaXMuc3RhcnQoKSwwO2lmKHRoaXMucnVubmluZyl7bGV0IHI9dmhlKCk7dD0oci10aGlzLm9sZFRpbWUpLzFlMyx0aGlzLm9sZFRpbWU9cix0aGlzLmVsYXBzZWRUaW1lKz10fXJldHVybiB0fX07ZnVuY3Rpb24gdmhlKCl7cmV0dXJuKHR5cGVvZiBwZXJmb3JtYW5jZT09InVuZGVmaW5lZCI/RGF0ZTpwZXJmb3JtYW5jZSkubm93KCl9dmFyIHYxPW5ldyBqLHhoZT1uZXcgdmksbjByPW5ldyBqLHgxPW5ldyBqLGxodD1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IkF1ZGlvTGlzdGVuZXIiLHRoaXMuY29udGV4dD1PaHQuZ2V0Q29udGV4dCgpLHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpcy5maWx0ZXI9bnVsbCx0aGlzLnRpbWVEZWx0YT0wLHRoaXMuX2Nsb2NrPW5ldyBkTX1nZXRJbnB1dCgpe3JldHVybiB0aGlzLmdhaW59cmVtb3ZlRmlsdGVyKCl7cmV0dXJuIHRoaXMuZmlsdGVyIT09bnVsbCYmKHRoaXMuZ2Fpbi5kaXNjb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5kaXNjb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpcy5nYWluLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj1udWxsKSx0aGlzfWdldEZpbHRlcigpe3JldHVybiB0aGlzLmZpbHRlcn1zZXRGaWx0ZXIodCl7cmV0dXJuIHRoaXMuZmlsdGVyIT09bnVsbD8odGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSk6dGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmZpbHRlcj10LHRoaXMuZ2Fpbi5jb25uZWN0KHRoaXMuZmlsdGVyKSx0aGlzLmZpbHRlci5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpc31nZXRNYXN0ZXJWb2x1bWUoKXtyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWV9c2V0TWFzdGVyVm9sdW1lKHQpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodCx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe3N1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpO2xldCByPXRoaXMuY29udGV4dC5saXN0ZW5lcixuPXRoaXMudXA7aWYodGhpcy50aW1lRGVsdGE9dGhpcy5fY2xvY2suZ2V0RGVsdGEoKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZSh2MSx4aGUsbjByKSx4MS5zZXQoMCwwLC0xKS5hcHBseVF1YXRlcm5pb24oeGhlKSxyLnBvc2l0aW9uWCl7bGV0IGk9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3RoaXMudGltZURlbHRhO3IucG9zaXRpb25YLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHYxLngsaSksci5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodjEueSxpKSxyLnBvc2l0aW9uWi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh2MS56LGkpLHIuZm9yd2FyZFgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoeDEueCxpKSxyLmZvcndhcmRZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHgxLnksaSksci5mb3J3YXJkWi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh4MS56LGkpLHIudXBYLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG4ueCxpKSxyLnVwWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShuLnksaSksci51cFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobi56LGkpfWVsc2Ugci5zZXRQb3NpdGlvbih2MS54LHYxLnksdjEueiksci5zZXRPcmllbnRhdGlvbih4MS54LHgxLnkseDEueixuLngsbi55LG4ueil9fSxrNj1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJBdWRpbyIsdGhpcy5saXN0ZW5lcj10LHRoaXMuY29udGV4dD10LmNvbnRleHQsdGhpcy5nYWluPXRoaXMuY29udGV4dC5jcmVhdGVHYWluKCksdGhpcy5nYWluLmNvbm5lY3QodC5nZXRJbnB1dCgpKSx0aGlzLmF1dG9wbGF5PSExLHRoaXMuYnVmZmVyPW51bGwsdGhpcy5kZXR1bmU9MCx0aGlzLmxvb3A9ITEsdGhpcy5sb29wU3RhcnQ9MCx0aGlzLmxvb3BFbmQ9MCx0aGlzLm9mZnNldD0wLHRoaXMuZHVyYXRpb249dm9pZCAwLHRoaXMucGxheWJhY2tSYXRlPTEsdGhpcy5pc1BsYXlpbmc9ITEsdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITAsdGhpcy5zb3VyY2U9bnVsbCx0aGlzLnNvdXJjZVR5cGU9ImVtcHR5Iix0aGlzLl9zdGFydGVkQXQ9MCx0aGlzLl9wcm9ncmVzcz0wLHRoaXMuX2Nvbm5lY3RlZD0hMSx0aGlzLmZpbHRlcnM9W119Z2V0T3V0cHV0KCl7cmV0dXJuIHRoaXMuZ2Fpbn1zZXROb2RlU291cmNlKHQpe3JldHVybiB0aGlzLmhhc1BsYXliYWNrQ29udHJvbD0hMSx0aGlzLnNvdXJjZVR5cGU9ImF1ZGlvTm9kZSIsdGhpcy5zb3VyY2U9dCx0aGlzLmNvbm5lY3QoKSx0aGlzfXNldE1lZGlhRWxlbWVudFNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJtZWRpYU5vZGUiLHRoaXMuc291cmNlPXRoaXMuY29udGV4dC5jcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYVN0cmVhbVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJtZWRpYVN0cmVhbU5vZGUiLHRoaXMuc291cmNlPXRoaXMuY29udGV4dC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSh0KSx0aGlzLmNvbm5lY3QoKSx0aGlzfXNldEJ1ZmZlcih0KXtyZXR1cm4gdGhpcy5idWZmZXI9dCx0aGlzLnNvdXJjZVR5cGU9ImJ1ZmZlciIsdGhpcy5hdXRvcGxheSYmdGhpcy5wbGF5KCksdGhpc31wbGF5KHQ9MCl7aWYodGhpcy5pc1BsYXlpbmc9PT0hMCl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO3JldHVybn1pZih0aGlzLmhhc1BsYXliYWNrQ29udHJvbD09PSExKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpO3JldHVybn10aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7bGV0IHI9dGhpcy5jb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpO3JldHVybiByLmJ1ZmZlcj10aGlzLmJ1ZmZlcixyLmxvb3A9dGhpcy5sb29wLHIubG9vcFN0YXJ0PXRoaXMubG9vcFN0YXJ0LHIubG9vcEVuZD10aGlzLmxvb3BFbmQsci5vbmVuZGVkPXRoaXMub25FbmRlZC5iaW5kKHRoaXMpLHIuc3RhcnQodGhpcy5fc3RhcnRlZEF0LHRoaXMuX3Byb2dyZXNzK3RoaXMub2Zmc2V0LHRoaXMuZHVyYXRpb24pLHRoaXMuaXNQbGF5aW5nPSEwLHRoaXMuc291cmNlPXIsdGhpcy5zZXREZXR1bmUodGhpcy5kZXR1bmUpLHRoaXMuc2V0UGxheWJhY2tSYXRlKHRoaXMucGxheWJhY2tSYXRlKSx0aGlzLmNvbm5lY3QoKX1wYXVzZSgpe2lmKHRoaXMuaGFzUGxheWJhY2tDb250cm9sPT09ITEpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIik7cmV0dXJufXJldHVybiB0aGlzLmlzUGxheWluZz09PSEwJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsdGhpcy5sb29wPT09ITAmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzfXN0b3AoKXtpZih0aGlzLmhhc1BsYXliYWNrQ29udHJvbD09PSExKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpO3JldHVybn1yZXR1cm4gdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExLHRoaXN9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLHI9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PHI7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLHI9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PHI7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLHRoaXMuX2Nvbm5lY3RlZD09PSEwPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdGhpcy5zb3VyY2UuZGV0dW5lIT09dm9pZCAwKXJldHVybiB0aGlzLmlzUGxheWluZz09PSEwJiZ0aGlzLnNvdXJjZS5kZXR1bmUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMuZGV0dW5lLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9Z2V0RGV0dW5lKCl7cmV0dXJuIHRoaXMuZGV0dW5lfWdldEZpbHRlcigpe3JldHVybiB0aGlzLmdldEZpbHRlcnMoKVswXX1zZXRGaWx0ZXIodCl7cmV0dXJuIHRoaXMuc2V0RmlsdGVycyh0P1t0XTpbXSl9c2V0UGxheWJhY2tSYXRlKHQpe2lmKHRoaXMuaGFzUGxheWJhY2tDb250cm9sPT09ITEpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIik7cmV0dXJufXJldHVybiB0aGlzLnBsYXliYWNrUmF0ZT10LHRoaXMuaXNQbGF5aW5nPT09ITAmJnRoaXMuc291cmNlLnBsYXliYWNrUmF0ZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5wbGF5YmFja1JhdGUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9PT0hMT8oY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKSwhMSk6dGhpcy5sb29wfXNldExvb3AodCl7aWYodGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9PT0hMSl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTtyZXR1cm59cmV0dXJuIHRoaXMubG9vcD10LHRoaXMuaXNQbGF5aW5nPT09ITAmJih0aGlzLnNvdXJjZS5sb29wPXRoaXMubG9vcCksdGhpc31zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fSxiMT1uZXcgaixiaGU9bmV3IHZpLGkwcj1uZXcgaix3MT1uZXcgaixjaHQ9Y2xhc3MgZXh0ZW5kcyBrNntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnBhbm5lcj10aGlzLmNvbnRleHQuY3JlYXRlUGFubmVyKCksdGhpcy5wYW5uZXIucGFubmluZ01vZGVsPSJIUlRGIix0aGlzLnBhbm5lci5jb25uZWN0KHRoaXMuZ2Fpbil9Z2V0T3V0cHV0KCl7cmV0dXJuIHRoaXMucGFubmVyfWdldFJlZkRpc3RhbmNlKCl7cmV0dXJuIHRoaXMucGFubmVyLnJlZkRpc3RhbmNlfXNldFJlZkRpc3RhbmNlKHQpe3JldHVybiB0aGlzLnBhbm5lci5yZWZEaXN0YW5jZT10LHRoaXN9Z2V0Um9sbG9mZkZhY3Rvcigpe3JldHVybiB0aGlzLnBhbm5lci5yb2xsb2ZmRmFjdG9yfXNldFJvbGxvZmZGYWN0b3IodCl7cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3I9dCx0aGlzfWdldERpc3RhbmNlTW9kZWwoKXtyZXR1cm4gdGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbH1zZXREaXN0YW5jZU1vZGVsKHQpe3JldHVybiB0aGlzLnBhbm5lci5kaXN0YW5jZU1vZGVsPXQsdGhpc31nZXRNYXhEaXN0YW5jZSgpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX1zZXRNYXhEaXN0YW5jZSh0KXtyZXR1cm4gdGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9dCx0aGlzfXNldERpcmVjdGlvbmFsQ29uZSh0LHIsbil7cmV0dXJuIHRoaXMucGFubmVyLmNvbmVJbm5lckFuZ2xlPXQsdGhpcy5wYW5uZXIuY29uZU91dGVyQW5nbGU9cix0aGlzLnBhbm5lci5jb25lT3V0ZXJHYWluPW4sdGhpc311cGRhdGVNYXRyaXhXb3JsZCh0KXtpZihzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSx0aGlzLmhhc1BsYXliYWNrQ29udHJvbD09PSEwJiZ0aGlzLmlzUGxheWluZz09PSExKXJldHVybjt0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShiMSxiaGUsaTByKSx3MS5zZXQoMCwwLDEpLmFwcGx5UXVhdGVybmlvbihiaGUpO2xldCByPXRoaXMucGFubmVyO2lmKHIucG9zaXRpb25YKXtsZXQgbj10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7ci5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoYjEueCxuKSxyLnBvc2l0aW9uWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShiMS55LG4pLHIucG9zaXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGIxLnosbiksci5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUodzEueCxuKSxyLm9yaWVudGF0aW9uWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZSh3MS55LG4pLHIub3JpZW50YXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKHcxLnosbil9ZWxzZSByLnNldFBvc2l0aW9uKGIxLngsYjEueSxiMS56KSxyLnNldE9yaWVudGF0aW9uKHcxLngsdzEueSx3MS56KX19LERVPWNsYXNze2NvbnN0cnVjdG9yKHQscj0yMDQ4KXt0aGlzLmFuYWx5c2VyPXQuY29udGV4dC5jcmVhdGVBbmFseXNlcigpLHRoaXMuYW5hbHlzZXIuZmZ0U2l6ZT1yLHRoaXMuZGF0YT1uZXcgVWludDhBcnJheSh0aGlzLmFuYWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50KSx0LmdldE91dHB1dCgpLmNvbm5lY3QodGhpcy5hbmFseXNlcil9Z2V0RnJlcXVlbmN5RGF0YSgpe3JldHVybiB0aGlzLmFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKHRoaXMuZGF0YSksdGhpcy5kYXRhfWdldEF2ZXJhZ2VGcmVxdWVuY3koKXtsZXQgdD0wLHI9dGhpcy5nZXRGcmVxdWVuY3lEYXRhKCk7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspdCs9cltuXTtyZXR1cm4gdC9yLmxlbmd0aH19LE9VPWNsYXNze2NvbnN0cnVjdG9yKHQscixuKXt0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1uO2xldCBpLG8sYTtzd2l0Y2gocil7Y2FzZSJxdWF0ZXJuaW9uIjppPXRoaXMuX3NsZXJwLG89dGhpcy5fc2xlcnBBZGRpdGl2ZSxhPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkobio2KSx0aGlzLl93b3JrSW5kZXg9NTticmVhaztjYXNlInN0cmluZyI6Y2FzZSJib29sIjppPXRoaXMuX3NlbGVjdCxvPXRoaXMuX3NlbGVjdCxhPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlPdGhlcix0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkobio1KTticmVhaztkZWZhdWx0Omk9dGhpcy5fbGVycCxvPXRoaXMuX2xlcnBBZGRpdGl2ZSxhPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkobio1KX10aGlzLl9taXhCdWZmZXJSZWdpb249aSx0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZT1vLHRoaXMuX3NldElkZW50aXR5PWEsdGhpcy5fb3JpZ0luZGV4PTMsdGhpcy5fYWRkSW5kZXg9NCx0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHRoaXMudXNlQ291bnQ9MCx0aGlzLnJlZmVyZW5jZUNvdW50PTB9YWNjdW11bGF0ZSh0LHIpe2xldCBuPXRoaXMuYnVmZmVyLGk9dGhpcy52YWx1ZVNpemUsbz10KmkraSxhPXRoaXMuY3VtdWxhdGl2ZVdlaWdodDtpZihhPT09MCl7Zm9yKGxldCBzPTA7cyE9PWk7KytzKW5bbytzXT1uW3NdO2E9cn1lbHNle2ErPXI7bGV0IHM9ci9hO3RoaXMuX21peEJ1ZmZlclJlZ2lvbihuLG8sMCxzLGkpfXRoaXMuY3VtdWxhdGl2ZVdlaWdodD1hfWFjY3VtdWxhdGVBZGRpdGl2ZSh0KXtsZXQgcj10aGlzLmJ1ZmZlcixuPXRoaXMudmFsdWVTaXplLGk9bip0aGlzLl9hZGRJbmRleDt0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT09PTAmJnRoaXMuX3NldElkZW50aXR5KCksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUocixpLDAsdCxuKSx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSs9dH1hcHBseSh0KXtsZXQgcj10aGlzLnZhbHVlU2l6ZSxuPXRoaXMuYnVmZmVyLGk9dCpyK3Isbz10aGlzLmN1bXVsYXRpdmVXZWlnaHQsYT10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxzPXRoaXMuYmluZGluZztpZih0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLG88MSl7bGV0IGw9cip0aGlzLl9vcmlnSW5kZXg7dGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4saSxsLDEtbyxyKX1hPjAmJnRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKG4saSx0aGlzLl9hZGRJbmRleCpyLDEscik7Zm9yKGxldCBsPXIsYz1yK3I7bCE9PWM7KytsKWlmKG5bbF0hPT1uW2wrcl0pe3Muc2V0VmFsdWUobixpKTticmVha319c2F2ZU9yaWdpbmFsU3RhdGUoKXtsZXQgdD10aGlzLmJpbmRpbmcscj10aGlzLmJ1ZmZlcixuPXRoaXMudmFsdWVTaXplLGk9bip0aGlzLl9vcmlnSW5kZXg7dC5nZXRWYWx1ZShyLGkpO2ZvcihsZXQgbz1uLGE9aTtvIT09YTsrK28pcltvXT1yW2krbyVuXTt0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTB9cmVzdG9yZU9yaWdpbmFsU3RhdGUoKXtsZXQgdD10aGlzLnZhbHVlU2l6ZSozO3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlcix0KX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtsZXQgdD10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSxyPXQrdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBuPXQ7bjxyO24rKyl0aGlzLmJ1ZmZlcltuXT0wfV9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbigpe3RoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCksdGhpcy5idWZmZXJbdGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemUrM109MX1fc2V0QWRkaXRpdmVJZGVudGl0eU90aGVyKCl7bGV0IHQ9dGhpcy5fb3JpZ0luZGV4KnRoaXMudmFsdWVTaXplLHI9dGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBuPTA7bjx0aGlzLnZhbHVlU2l6ZTtuKyspdGhpcy5idWZmZXJbcituXT10aGlzLmJ1ZmZlclt0K25dfV9zZWxlY3QodCxyLG4saSxvKXtpZihpPj0uNSlmb3IobGV0IGE9MDthIT09bzsrK2EpdFtyK2FdPXRbbithXX1fc2xlcnAodCxyLG4saSl7dmkuc2xlcnBGbGF0KHQscix0LHIsdCxuLGkpfV9zbGVycEFkZGl0aXZlKHQscixuLGksbyl7bGV0IGE9dGhpcy5fd29ya0luZGV4Km87dmkubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxhLHQscix0LG4pLHZpLnNsZXJwRmxhdCh0LHIsdCxyLHQsYSxpKX1fbGVycCh0LHIsbixpLG8pe2xldCBhPTEtaTtmb3IobGV0IHM9MDtzIT09bzsrK3Mpe2xldCBsPXIrczt0W2xdPXRbbF0qYSt0W24rc10qaX19X2xlcnBBZGRpdGl2ZSh0LHIsbixpLG8pe2ZvcihsZXQgYT0wO2EhPT1vOysrYSl7bGV0IHM9cithO3Rbc109dFtzXSt0W24rYV0qaX19fSx6aHQ9IlxcW1xcXVxcLjpcXC8iLG8wcj1uZXcgUmVnRXhwKCJbIit6aHQrIl0iLCJnIiksRmh0PSJbXiIremh0KyJdIixhMHI9IlteIit6aHQucmVwbGFjZSgiXFwuIiwiIikrIl0iLHMwcj0vKCg/OldDK1tcLzpdKSopLy5zb3VyY2UucmVwbGFjZSgiV0MiLEZodCksbDByPS8oV0NPRCspPy8uc291cmNlLnJlcGxhY2UoIldDT0QiLGEwciksYzByPS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLEZodCksdTByPS9cLihXQyspKD86XFsoLispXF0pPy8uc291cmNlLnJlcGxhY2UoIldDIixGaHQpLGgwcj1uZXcgUmVnRXhwKCJeIitzMHIrbDByK2Mwcit1MHIrIiQiKSxmMHI9WyJtYXRlcmlhbCIsIm1hdGVyaWFscyIsImJvbmVzIl0sdWh0PWNsYXNze2NvbnN0cnVjdG9yKHQscixuKXtsZXQgaT1ufHxDci5wYXJzZVRyYWNrTmFtZShyKTt0aGlzLl90YXJnZXRHcm91cD10LHRoaXMuX2JpbmRpbmdzPXQuc3Vic2NyaWJlXyhyLGkpfWdldFZhbHVlKHQscil7dGhpcy5iaW5kKCk7bGV0IG49dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLGk9dGhpcy5fYmluZGluZ3Nbbl07aSE9PXZvaWQgMCYmaS5nZXRWYWx1ZSh0LHIpfXNldFZhbHVlKHQscil7bGV0IG49dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBpPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxvPW4ubGVuZ3RoO2khPT1vOysraSluW2ldLnNldFZhbHVlKHQscil9YmluZCgpe2xldCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgcj10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtyIT09bjsrK3IpdFtyXS5iaW5kKCl9dW5iaW5kKCl7bGV0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCByPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxuPXQubGVuZ3RoO3IhPT1uOysrcil0W3JdLnVuYmluZCgpfX0sQ3I9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG4pe3RoaXMucGF0aD1yLHRoaXMucGFyc2VkUGF0aD1ufHxDci5wYXJzZVRyYWNrTmFtZShyKSx0aGlzLm5vZGU9Q3IuZmluZE5vZGUodCx0aGlzLnBhcnNlZFBhdGgubm9kZU5hbWUpfHx0LHRoaXMucm9vdE5vZGU9dCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfXN0YXRpYyBjcmVhdGUodCxyLG4pe3JldHVybiB0JiZ0LmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA/bmV3IENyLkNvbXBvc2l0ZSh0LHIsbik6bmV3IENyKHQscixuKX1zdGF0aWMgc2FuaXRpemVOb2RlTmFtZSh0KXtyZXR1cm4gdC5yZXBsYWNlKC9ccy9nLCJfIikucmVwbGFjZShvMHIsIiIpfXN0YXRpYyBwYXJzZVRyYWNrTmFtZSh0KXtsZXQgcj1oMHIuZXhlYyh0KTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtsZXQgbj17bm9kZU5hbWU6clsyXSxvYmplY3ROYW1lOnJbM10sb2JqZWN0SW5kZXg6cls0XSxwcm9wZXJ0eU5hbWU6cls1XSxwcm9wZXJ0eUluZGV4OnJbNl19LGk9bi5ub2RlTmFtZSYmbi5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKGkhPT12b2lkIDAmJmkhPT0tMSl7bGV0IG89bi5ub2RlTmFtZS5zdWJzdHJpbmcoaSsxKTtmMHIuaW5kZXhPZihvKSE9PS0xJiYobi5ub2RlTmFtZT1uLm5vZGVOYW1lLnN1YnN0cmluZygwLGkpLG4ub2JqZWN0TmFtZT1vKX1pZihuLnByb3BlcnR5TmFtZT09PW51bGx8fG4ucHJvcGVydHlOYW1lLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IGNhbiBub3QgcGFyc2UgcHJvcGVydHlOYW1lIGZyb20gdHJhY2tOYW1lOiAiK3QpO3JldHVybiBufXN0YXRpYyBmaW5kTm9kZSh0LHIpe2lmKCFyfHxyPT09IiJ8fHI9PT0iLiJ8fHI9PT0tMXx8cj09PXQubmFtZXx8cj09PXQudXVpZClyZXR1cm4gdDtpZih0LnNrZWxldG9uKXtsZXQgbj10LnNrZWxldG9uLmdldEJvbmVCeU5hbWUocik7aWYobiE9PXZvaWQgMClyZXR1cm4gbn1pZih0LmNoaWxkcmVuKXtsZXQgbj1mdW5jdGlvbihvKXtmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErKyl7bGV0IHM9b1thXTtpZihzLm5hbWU9PT1yfHxzLnV1aWQ9PT1yKXJldHVybiBzO2xldCBsPW4ocy5jaGlsZHJlbik7aWYobClyZXR1cm4gbH1yZXR1cm4gbnVsbH0saT1uKHQuY2hpbGRyZW4pO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X2dldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9zZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fZ2V0VmFsdWVfZGlyZWN0KHQscil7dFtyXT10aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV19X2dldFZhbHVlX2FycmF5KHQscil7bGV0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLG89bi5sZW5ndGg7aSE9PW87KytpKXRbcisrXT1uW2ldfV9nZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxyKXt0W3JdPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdfV9nZXRWYWx1ZV90b0FycmF5KHQscil7dGhpcy5yZXNvbHZlZFByb3BlcnR5LnRvQXJyYXkodCxyKX1fc2V0VmFsdWVfZGlyZWN0KHQscil7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbcl19X3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSh0LHIpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W3JdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LHIpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W3JdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5KHQscil7bGV0IG49dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLG89bi5sZW5ndGg7aSE9PW87KytpKW5baV09dFtyKytdfV9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSh0LHIpe2xldCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxvPW4ubGVuZ3RoO2khPT1vOysraSluW2ldPXRbcisrXTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LHIpe2xldCBuPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxvPW4ubGVuZ3RoO2khPT1vOysraSluW2ldPXRbcisrXTt0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxyKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W3JdfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUodCxyKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W3JdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LHIpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbcl0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5KHQscil7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LHIpfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUodCxyKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsciksdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQscil7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LHIpLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X2dldFZhbHVlX3VuYm91bmQodCxyKXt0aGlzLmJpbmQoKSx0aGlzLmdldFZhbHVlKHQscil9X3NldFZhbHVlX3VuYm91bmQodCxyKXt0aGlzLmJpbmQoKSx0aGlzLnNldFZhbHVlKHQscil9YmluZCgpe2xldCB0PXRoaXMubm9kZSxyPXRoaXMucGFyc2VkUGF0aCxuPXIub2JqZWN0TmFtZSxpPXIucHJvcGVydHlOYW1lLG89ci5wcm9wZXJ0eUluZGV4O2lmKHR8fCh0PUNyLmZpbmROb2RlKHRoaXMucm9vdE5vZGUsci5ub2RlTmFtZSl8fHRoaXMucm9vdE5vZGUsdGhpcy5ub2RlPXQpLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5hdmFpbGFibGUsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmF2YWlsYWJsZSwhdCl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIG5vZGUgZm9yIHRyYWNrOiAiK3RoaXMucGF0aCsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIik7cmV0dXJufWlmKG4pe2xldCBjPXIub2JqZWN0SW5kZXg7c3dpdGNoKG4pe2Nhc2UibWF0ZXJpYWxzIjppZighdC5tYXRlcmlhbCl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWwuIix0aGlzKTtyZXR1cm59aWYoIXQubWF0ZXJpYWwubWF0ZXJpYWxzKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbC5tYXRlcmlhbHMgYXMgbm9kZS5tYXRlcmlhbCBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWxzIGFycmF5LiIsdGhpcyk7cmV0dXJufXQ9dC5tYXRlcmlhbC5tYXRlcmlhbHM7YnJlYWs7Y2FzZSJib25lcyI6aWYoIXQuc2tlbGV0b24pe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIGJvbmVzIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHNrZWxldG9uLiIsdGhpcyk7cmV0dXJufXQ9dC5za2VsZXRvbi5ib25lcztmb3IobGV0IHU9MDt1PHQubGVuZ3RoO3UrKylpZih0W3VdLm5hbWU9PT1jKXtjPXU7YnJlYWt9YnJlYWs7ZGVmYXVsdDppZih0W25dPT09dm9pZCAwKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBvYmplY3ROYW1lIG9mIG5vZGUgdW5kZWZpbmVkLiIsdGhpcyk7cmV0dXJufXQ9dFtuXX1pZihjIT09dm9pZCAwKXtpZih0W2NdPT09dm9pZCAwKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byBiaW5kIHRvIG9iamVjdEluZGV4IG9mIG9iamVjdE5hbWUsIGJ1dCBpcyB1bmRlZmluZWQuIix0aGlzLHQpO3JldHVybn10PXRbY119fWxldCBhPXRbaV07aWYoYT09PXZvaWQgMCl7bGV0IGM9ci5ub2RlTmFtZTtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgcHJvcGVydHkgZm9yIHRyYWNrOiAiK2MrIi4iK2krIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIsdCk7cmV0dXJufWxldCBzPXRoaXMuVmVyc2lvbmluZy5Ob25lO3RoaXMudGFyZ2V0T2JqZWN0PXQsdC5uZWVkc1VwZGF0ZSE9PXZvaWQgMD9zPXRoaXMuVmVyc2lvbmluZy5OZWVkc1VwZGF0ZTp0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUhPT12b2lkIDAmJihzPXRoaXMuVmVyc2lvbmluZy5NYXRyaXhXb3JsZE5lZWRzVXBkYXRlKTtsZXQgbD10aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtpZihvIT09dm9pZCAwKXtpZihpPT09Im1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIpe2lmKCF0Lmdlb21ldHJ5KXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS4iLHRoaXMpO3JldHVybn1pZih0Lmdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkpe2lmKCF0Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcyl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLiIsdGhpcyk7cmV0dXJufXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W29dIT09dm9pZCAwJiYobz10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtvXSl9ZWxzZXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgb24gVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIsdGhpcyk7cmV0dXJufX1sPXRoaXMuQmluZGluZ1R5cGUuQXJyYXlFbGVtZW50LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hLHRoaXMucHJvcGVydHlJbmRleD1vfWVsc2UgYS5mcm9tQXJyYXkhPT12b2lkIDAmJmEudG9BcnJheSE9PXZvaWQgMD8obD10aGlzLkJpbmRpbmdUeXBlLkhhc0Zyb21Ub0FycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1hKTpBcnJheS5pc0FycmF5KGEpPyhsPXRoaXMuQmluZGluZ1R5cGUuRW50aXJlQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PWEpOnRoaXMucHJvcGVydHlOYW1lPWk7dGhpcy5nZXRWYWx1ZT10aGlzLkdldHRlckJ5QmluZGluZ1R5cGVbbF0sdGhpcy5zZXRWYWx1ZT10aGlzLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nW2xdW3NdfXVuYmluZCgpe3RoaXMubm9kZT1udWxsLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9fTtDci5Db21wb3NpdGU9dWh0O0NyLnByb3RvdHlwZS5CaW5kaW5nVHlwZT17RGlyZWN0OjAsRW50aXJlQXJyYXk6MSxBcnJheUVsZW1lbnQ6MixIYXNGcm9tVG9BcnJheTozfTtDci5wcm90b3R5cGUuVmVyc2lvbmluZz17Tm9uZTowLE5lZWRzVXBkYXRlOjEsTWF0cml4V29ybGROZWVkc1VwZGF0ZToyfTtDci5wcm90b3R5cGUuR2V0dGVyQnlCaW5kaW5nVHlwZT1bQ3IucHJvdG90eXBlLl9nZXRWYWx1ZV9kaXJlY3QsQ3IucHJvdG90eXBlLl9nZXRWYWx1ZV9hcnJheSxDci5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5RWxlbWVudCxDci5wcm90b3R5cGUuX2dldFZhbHVlX3RvQXJyYXldO0NyLnByb3RvdHlwZS5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZz1bW0NyLnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0LENyLnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0X3NldE5lZWRzVXBkYXRlLENyLnByb3RvdHlwZS5fc2V0VmFsdWVfZGlyZWN0X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFtDci5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5LENyLnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXlfc2V0TmVlZHNVcGRhdGUsQ3IucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbQ3IucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnQsQ3IucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUsQ3IucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW0NyLnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5LENyLnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5X3NldE5lZWRzVXBkYXRlLENyLnByb3RvdHlwZS5fc2V0VmFsdWVfZnJvbUFycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdXTt2YXIgelU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnV1aWQ9UmwoKSx0aGlzLl9vYmplY3RzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksdGhpcy5uQ2FjaGVkT2JqZWN0c189MDtsZXQgdD17fTt0aGlzLl9pbmRpY2VzQnlVVUlEPXQ7Zm9yKGxldCBuPTAsaT1hcmd1bWVudHMubGVuZ3RoO24hPT1pOysrbil0W2FyZ3VtZW50c1tuXS51dWlkXT1uO3RoaXMuX3BhdGhzPVtdLHRoaXMuX3BhcnNlZFBhdGhzPVtdLHRoaXMuX2JpbmRpbmdzPVtdLHRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aD17fTtsZXQgcj10aGlzO3RoaXMuc3RhdHM9e29iamVjdHM6e2dldCB0b3RhbCgpe3JldHVybiByLl9vYmplY3RzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHRoaXMudG90YWwtci5uQ2FjaGVkT2JqZWN0c199fSxnZXQgYmluZGluZ3NQZXJPYmplY3QoKXtyZXR1cm4gci5fYmluZGluZ3MubGVuZ3RofX19YWRkKCl7bGV0IHQ9dGhpcy5fb2JqZWN0cyxyPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9wYXRocyxpPXRoaXMuX3BhcnNlZFBhdGhzLG89dGhpcy5fYmluZGluZ3MsYT1vLmxlbmd0aCxzLGw9dC5sZW5ndGgsYz10aGlzLm5DYWNoZWRPYmplY3RzXztmb3IobGV0IHU9MCxoPWFyZ3VtZW50cy5sZW5ndGg7dSE9PWg7Kyt1KXtsZXQgZj1hcmd1bWVudHNbdV0scD1mLnV1aWQsZD1yW3BdO2lmKGQ9PT12b2lkIDApe2Q9bCsrLHJbcF09ZCx0LnB1c2goZik7Zm9yKGxldCBnPTAsXz1hO2chPT1fOysrZylvW2ddLnB1c2gobmV3IENyKGYsbltnXSxpW2ddKSl9ZWxzZSBpZihkPGMpe3M9dFtkXTtsZXQgZz0tLWMsXz10W2ddO3JbXy51dWlkXT1kLHRbZF09XyxyW3BdPWcsdFtnXT1mO2ZvcihsZXQgeT0wLHg9YTt5IT09eDsrK3kpe2xldCBiPW9beV0sUz1iW2ddLEM9YltkXTtiW2RdPVMsQz09PXZvaWQgMCYmKEM9bmV3IENyKGYsblt5XSxpW3ldKSksYltnXT1DfX1lbHNlIHRbZF0hPT1zJiZjb25zb2xlLmVycm9yKCJUSFJFRS5BbmltYXRpb25PYmplY3RHcm91cDogRGlmZmVyZW50IG9iamVjdHMgd2l0aCB0aGUgc2FtZSBVVUlEIGRldGVjdGVkLiBDbGVhbiB0aGUgY2FjaGVzIG9yIHJlY3JlYXRlIHlvdXIgaW5mcmFzdHJ1Y3R1cmUgd2hlbiByZWxvYWRpbmcgc2NlbmVzLiIpfXRoaXMubkNhY2hlZE9iamVjdHNfPWN9cmVtb3ZlKCl7bGV0IHQ9dGhpcy5fb2JqZWN0cyxyPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9iaW5kaW5ncyxpPW4ubGVuZ3RoLG89dGhpcy5uQ2FjaGVkT2JqZWN0c187Zm9yKGxldCBhPTAscz1hcmd1bWVudHMubGVuZ3RoO2EhPT1zOysrYSl7bGV0IGw9YXJndW1lbnRzW2FdLGM9bC51dWlkLHU9cltjXTtpZih1IT09dm9pZCAwJiZ1Pj1vKXtsZXQgaD1vKyssZj10W2hdO3JbZi51dWlkXT11LHRbdV09ZixyW2NdPWgsdFtoXT1sO2ZvcihsZXQgcD0wLGQ9aTtwIT09ZDsrK3Ape2xldCBnPW5bcF0sXz1nW2hdLHk9Z1t1XTtnW3VdPV8sZ1toXT15fX19dGhpcy5uQ2FjaGVkT2JqZWN0c189b311bmNhY2hlKCl7bGV0IHQ9dGhpcy5fb2JqZWN0cyxyPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9iaW5kaW5ncyxpPW4ubGVuZ3RoLG89dGhpcy5uQ2FjaGVkT2JqZWN0c18sYT10Lmxlbmd0aDtmb3IobGV0IHM9MCxsPWFyZ3VtZW50cy5sZW5ndGg7cyE9PWw7KytzKXtsZXQgYz1hcmd1bWVudHNbc10sdT1jLnV1aWQsaD1yW3VdO2lmKGghPT12b2lkIDApaWYoZGVsZXRlIHJbdV0saDxvKXtsZXQgZj0tLW8scD10W2ZdLGQ9LS1hLGc9dFtkXTtyW3AudXVpZF09aCx0W2hdPXAscltnLnV1aWRdPWYsdFtmXT1nLHQucG9wKCk7Zm9yKGxldCBfPTAseT1pO18hPT15OysrXyl7bGV0IHg9bltfXSxiPXhbZl0sUz14W2RdO3hbaF09Yix4W2ZdPVMseC5wb3AoKX19ZWxzZXtsZXQgZj0tLWEscD10W2ZdO2Y+MCYmKHJbcC51dWlkXT1oKSx0W2hdPXAsdC5wb3AoKTtmb3IobGV0IGQ9MCxnPWk7ZCE9PWc7KytkKXtsZXQgXz1uW2RdO19baF09X1tmXSxfLnBvcCgpfX19dGhpcy5uQ2FjaGVkT2JqZWN0c189b31zdWJzY3JpYmVfKHQscil7bGV0IG49dGhpcy5fYmluZGluZ3NJbmRpY2VzQnlQYXRoLGk9blt0XSxvPXRoaXMuX2JpbmRpbmdzO2lmKGkhPT12b2lkIDApcmV0dXJuIG9baV07bGV0IGE9dGhpcy5fcGF0aHMscz10aGlzLl9wYXJzZWRQYXRocyxsPXRoaXMuX29iamVjdHMsYz1sLmxlbmd0aCx1PXRoaXMubkNhY2hlZE9iamVjdHNfLGg9bmV3IEFycmF5KGMpO2k9by5sZW5ndGgsblt0XT1pLGEucHVzaCh0KSxzLnB1c2gociksby5wdXNoKGgpO2ZvcihsZXQgZj11LHA9bC5sZW5ndGg7ZiE9PXA7KytmKXtsZXQgZD1sW2ZdO2hbZl09bmV3IENyKGQsdCxyKX1yZXR1cm4gaH11bnN1YnNjcmliZV8odCl7bGV0IHI9dGhpcy5fYmluZGluZ3NJbmRpY2VzQnlQYXRoLG49clt0XTtpZihuIT09dm9pZCAwKXtsZXQgaT10aGlzLl9wYXRocyxvPXRoaXMuX3BhcnNlZFBhdGhzLGE9dGhpcy5fYmluZGluZ3Mscz1hLmxlbmd0aC0xLGw9YVtzXSxjPXRbc107cltjXT1uLGFbbl09bCxhLnBvcCgpLG9bbl09b1tzXSxvLnBvcCgpLGlbbl09aVtzXSxpLnBvcCgpfX19O3pVLnByb3RvdHlwZS5pc0FuaW1hdGlvbk9iamVjdEdyb3VwPSEwO3ZhciBoaHQ9Y2xhc3N7Y29uc3RydWN0b3IodCxyLG49bnVsbCxpPXIuYmxlbmRNb2RlKXt0aGlzLl9taXhlcj10LHRoaXMuX2NsaXA9cix0aGlzLl9sb2NhbFJvb3Q9bix0aGlzLmJsZW5kTW9kZT1pO2xldCBvPXIudHJhY2tzLGE9by5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD17ZW5kaW5nU3RhcnQ6RTEsZW5kaW5nRW5kOkUxfTtmb3IobGV0IGM9MDtjIT09YTsrK2Mpe2xldCB1PW9bY10uY3JlYXRlSW50ZXJwb2xhbnQobnVsbCk7c1tjXT11LHUuc2V0dGluZ3M9bH10aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzPWwsdGhpcy5faW50ZXJwb2xhbnRzPXMsdGhpcy5fcHJvcGVydHlCaW5kaW5ncz1uZXcgQXJyYXkoYSksdGhpcy5fY2FjaGVJbmRleD1udWxsLHRoaXMuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5sb29wPWJmZSx0aGlzLl9sb29wQ291bnQ9LTEsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MSx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9MSx0aGlzLndlaWdodD0xLHRoaXMuX2VmZmVjdGl2ZVdlaWdodD0xLHRoaXMucmVwZXRpdGlvbnM9MS8wLHRoaXMucGF1c2VkPSExLHRoaXMuZW5hYmxlZD0hMCx0aGlzLmNsYW1wV2hlbkZpbmlzaGVkPSExLHRoaXMuemVyb1Nsb3BlQXRTdGFydD0hMCx0aGlzLnplcm9TbG9wZUF0RW5kPSEwfXBsYXkoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2FjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXN9c3RvcCgpe3JldHVybiB0aGlzLl9taXhlci5fZGVhY3RpdmF0ZUFjdGlvbih0aGlzKSx0aGlzLnJlc2V0KCl9cmVzZXQoKXtyZXR1cm4gdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMudGltZT0wLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnN0b3BGYWRpbmcoKS5zdG9wV2FycGluZygpfWlzUnVubmluZygpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLnBhdXNlZCYmdGhpcy50aW1lU2NhbGUhPT0wJiZ0aGlzLl9zdGFydFRpbWU9PT1udWxsJiZ0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9aXNTY2hlZHVsZWQoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfXN0YXJ0QXQodCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZT10LHRoaXN9c2V0TG9vcCh0LHIpe3JldHVybiB0aGlzLmxvb3A9dCx0aGlzLnJlcGV0aXRpb25zPXIsdGhpc31zZXRFZmZlY3RpdmVXZWlnaHQodCl7cmV0dXJuIHRoaXMud2VpZ2h0PXQsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMuZW5hYmxlZD90OjAsdGhpcy5zdG9wRmFkaW5nKCl9Z2V0RWZmZWN0aXZlV2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodH1mYWRlSW4odCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMCwxKX1mYWRlT3V0KHQpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyh0LDEsMCl9Y3Jvc3NGYWRlRnJvbSh0LHIsbil7aWYodC5mYWRlT3V0KHIpLHRoaXMuZmFkZUluKHIpLG4pe2xldCBpPXRoaXMuX2NsaXAuZHVyYXRpb24sbz10Ll9jbGlwLmR1cmF0aW9uLGE9by9pLHM9aS9vO3Qud2FycCgxLGEsciksdGhpcy53YXJwKHMsMSxyKX1yZXR1cm4gdGhpc31jcm9zc0ZhZGVUbyh0LHIsbil7cmV0dXJuIHQuY3Jvc3NGYWRlRnJvbSh0aGlzLHIsbil9c3RvcEZhZGluZygpe2xldCB0PXRoaXMuX3dlaWdodEludGVycG9sYW50O3JldHVybiB0IT09bnVsbCYmKHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpKSx0aGlzfXNldEVmZmVjdGl2ZVRpbWVTY2FsZSh0KXtyZXR1cm4gdGhpcy50aW1lU2NhbGU9dCx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9dGhpcy5wYXVzZWQ/MDp0LHRoaXMuc3RvcFdhcnBpbmcoKX1nZXRFZmZlY3RpdmVUaW1lU2NhbGUoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlfXNldER1cmF0aW9uKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10aGlzLl9jbGlwLmR1cmF0aW9uL3QsdGhpcy5zdG9wV2FycGluZygpfXN5bmNXaXRoKHQpe3JldHVybiB0aGlzLnRpbWU9dC50aW1lLHRoaXMudGltZVNjYWxlPXQudGltZVNjYWxlLHRoaXMuc3RvcFdhcnBpbmcoKX1oYWx0KHQpe3JldHVybiB0aGlzLndhcnAodGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlLDAsdCl9d2FycCh0LHIsbil7bGV0IGk9dGhpcy5fbWl4ZXIsbz1pLnRpbWUsYT10aGlzLnRpbWVTY2FsZSxzPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O3M9PT1udWxsJiYocz1pLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9cyk7bGV0IGw9cy5wYXJhbWV0ZXJQb3NpdGlvbnMsYz1zLnNhbXBsZVZhbHVlcztyZXR1cm4gbFswXT1vLGxbMV09bytuLGNbMF09dC9hLGNbMV09ci9hLHRoaXN9c3RvcFdhcnBpbmcoKXtsZXQgdD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtyZXR1cm4gdCE9PW51bGwmJih0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KSksdGhpc31nZXRNaXhlcigpe3JldHVybiB0aGlzLl9taXhlcn1nZXRDbGlwKCl7cmV0dXJuIHRoaXMuX2NsaXB9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9sb2NhbFJvb3R8fHRoaXMuX21peGVyLl9yb290fV91cGRhdGUodCxyLG4saSl7aWYoIXRoaXMuZW5hYmxlZCl7dGhpcy5fdXBkYXRlV2VpZ2h0KHQpO3JldHVybn1sZXQgbz10aGlzLl9zdGFydFRpbWU7aWYobyE9PW51bGwpe2xldCBsPSh0LW8pKm47aWYobDwwfHxuPT09MClyZXR1cm47dGhpcy5fc3RhcnRUaW1lPW51bGwscj1uKmx9cio9dGhpcy5fdXBkYXRlVGltZVNjYWxlKHQpO2xldCBhPXRoaXMuX3VwZGF0ZVRpbWUocikscz10aGlzLl91cGRhdGVXZWlnaHQodCk7aWYocz4wKXtsZXQgbD10aGlzLl9pbnRlcnBvbGFudHMsYz10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzO3N3aXRjaCh0aGlzLmJsZW5kTW9kZSl7Y2FzZSBMaHQ6Zm9yKGxldCB1PTAsaD1sLmxlbmd0aDt1IT09aDsrK3UpbFt1XS5ldmFsdWF0ZShhKSxjW3VdLmFjY3VtdWxhdGVBZGRpdGl2ZShzKTticmVhaztjYXNlIFlVOmRlZmF1bHQ6Zm9yKGxldCB1PTAsaD1sLmxlbmd0aDt1IT09aDsrK3UpbFt1XS5ldmFsdWF0ZShhKSxjW3VdLmFjY3VtdWxhdGUoaSxzKX19fV91cGRhdGVXZWlnaHQodCl7bGV0IHI9MDtpZih0aGlzLmVuYWJsZWQpe3I9dGhpcy53ZWlnaHQ7bGV0IG49dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7aWYobiE9PW51bGwpe2xldCBpPW4uZXZhbHVhdGUodClbMF07cio9aSx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wRmFkaW5nKCksaT09PTAmJih0aGlzLmVuYWJsZWQ9ITEpKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodD1yLHJ9X3VwZGF0ZVRpbWVTY2FsZSh0KXtsZXQgcj0wO2lmKCF0aGlzLnBhdXNlZCl7cj10aGlzLnRpbWVTY2FsZTtsZXQgbj10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtuIT09bnVsbCYmKHIqPW4uZXZhbHVhdGUodClbMF0sdD5uLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcFdhcnBpbmcoKSxyPT09MD90aGlzLnBhdXNlZD0hMDp0aGlzLnRpbWVTY2FsZT1yKSl9cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT1yLHJ9X3VwZGF0ZVRpbWUodCl7bGV0IHI9dGhpcy5fY2xpcC5kdXJhdGlvbixuPXRoaXMubG9vcCxpPXRoaXMudGltZSt0LG89dGhpcy5fbG9vcENvdW50LGE9bj09PXdmZTtpZih0PT09MClyZXR1cm4gbz09PS0xP2k6YSYmKG8mMSk9PT0xP3ItaTppO2lmKG49PT14ZmUpe289PT0tMSYmKHRoaXMuX2xvb3BDb3VudD0wLHRoaXMuX3NldEVuZGluZ3MoITAsITAsITEpKTt0OntpZihpPj1yKWk9cjtlbHNlIGlmKGk8MClpPTA7ZWxzZXt0aGlzLnRpbWU9aTticmVhayB0fXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLHRoaXMudGltZT1pLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dDwwPy0xOjF9KX19ZWxzZXtpZihvPT09LTEmJih0Pj0wPyhvPTAsdGhpcy5fc2V0RW5kaW5ncyghMCx0aGlzLnJlcGV0aXRpb25zPT09MCxhKSk6dGhpcy5fc2V0RW5kaW5ncyh0aGlzLnJlcGV0aXRpb25zPT09MCwhMCxhKSksaT49cnx8aTwwKXtsZXQgcz1NYXRoLmZsb29yKGkvcik7aS09cipzLG8rPU1hdGguYWJzKHMpO2xldCBsPXRoaXMucmVwZXRpdGlvbnMtbztpZihsPD0wKXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLGk9dD4wP3I6MCx0aGlzLnRpbWU9aSx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOnQ+MD8xOi0xfSk7ZWxzZXtpZihsPT09MSl7bGV0IGM9dDwwO3RoaXMuX3NldEVuZGluZ3MoYywhYyxhKX1lbHNlIHRoaXMuX3NldEVuZGluZ3MoITEsITEsYSk7dGhpcy5fbG9vcENvdW50PW8sdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToibG9vcCIsYWN0aW9uOnRoaXMsbG9vcERlbHRhOnN9KX19ZWxzZSB0aGlzLnRpbWU9aTtpZihhJiYobyYxKT09PTEpcmV0dXJuIHItaX1yZXR1cm4gaX1fc2V0RW5kaW5ncyh0LHIsbil7bGV0IGk9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncztuPyhpLmVuZGluZ1N0YXJ0PVQxLGkuZW5kaW5nRW5kPVQxKToodD9pLmVuZGluZ1N0YXJ0PXRoaXMuemVyb1Nsb3BlQXRTdGFydD9UMTpFMTppLmVuZGluZ1N0YXJ0PSRQLHI/aS5lbmRpbmdFbmQ9dGhpcy56ZXJvU2xvcGVBdEVuZD9UMTpFMTppLmVuZGluZ0VuZD0kUCl9X3NjaGVkdWxlRmFkaW5nKHQscixuKXtsZXQgaT10aGlzLl9taXhlcixvPWkudGltZSxhPXRoaXMuX3dlaWdodEludGVycG9sYW50O2E9PT1udWxsJiYoYT1pLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9YSk7bGV0IHM9YS5wYXJhbWV0ZXJQb3NpdGlvbnMsbD1hLnNhbXBsZVZhbHVlcztyZXR1cm4gc1swXT1vLGxbMF09cixzWzFdPW8rdCxsWzFdPW4sdGhpc319LEZVPWNsYXNzIGV4dGVuZHMgVnN7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9yb290PXQsdGhpcy5faW5pdE1lbW9yeU1hbmFnZXIoKSx0aGlzLl9hY2N1SW5kZXg9MCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xfV9iaW5kQWN0aW9uKHQscil7bGV0IG49dC5fbG9jYWxSb290fHx0aGlzLl9yb290LGk9dC5fY2xpcC50cmFja3Msbz1pLmxlbmd0aCxhPXQuX3Byb3BlcnR5QmluZGluZ3Mscz10Ll9pbnRlcnBvbGFudHMsbD1uLnV1aWQsYz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsdT1jW2xdO3U9PT12b2lkIDAmJih1PXt9LGNbbF09dSk7Zm9yKGxldCBoPTA7aCE9PW87KytoKXtsZXQgZj1pW2hdLHA9Zi5uYW1lLGQ9dVtwXTtpZihkIT09dm9pZCAwKSsrZC5yZWZlcmVuY2VDb3VudCxhW2hdPWQ7ZWxzZXtpZihkPWFbaF0sZCE9PXZvaWQgMCl7ZC5fY2FjaGVJbmRleD09PW51bGwmJigrK2QucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKGQsbCxwKSk7Y29udGludWV9bGV0IGc9ciYmci5fcHJvcGVydHlCaW5kaW5nc1toXS5iaW5kaW5nLnBhcnNlZFBhdGg7ZD1uZXcgT1UoQ3IuY3JlYXRlKG4scCxnKSxmLlZhbHVlVHlwZU5hbWUsZi5nZXRWYWx1ZVNpemUoKSksKytkLnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyhkLGwscCksYVtoXT1kfXNbaF0ucmVzdWx0QnVmZmVyPWQuYnVmZmVyfX1fYWN0aXZhdGVBY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZih0Ll9jYWNoZUluZGV4PT09bnVsbCl7bGV0IG49KHQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZCxpPXQuX2NsaXAudXVpZCxvPXRoaXMuX2FjdGlvbnNCeUNsaXBbaV07dGhpcy5fYmluZEFjdGlvbih0LG8mJm8ua25vd25BY3Rpb25zWzBdKSx0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbih0LGksbil9bGV0IHI9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IG49MCxpPXIubGVuZ3RoO24hPT1pOysrbil7bGV0IG89cltuXTtvLnVzZUNvdW50Kys9PT0wJiYodGhpcy5fbGVuZEJpbmRpbmcobyksby5zYXZlT3JpZ2luYWxTdGF0ZSgpKX10aGlzLl9sZW5kQWN0aW9uKHQpfX1fZGVhY3RpdmF0ZUFjdGlvbih0KXtpZih0aGlzLl9pc0FjdGl2ZUFjdGlvbih0KSl7bGV0IHI9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IG49MCxpPXIubGVuZ3RoO24hPT1pOysrbil7bGV0IG89cltuXTstLW8udXNlQ291bnQ9PT0wJiYoby5yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpLHRoaXMuX3Rha2VCYWNrQmluZGluZyhvKSl9dGhpcy5fdGFrZUJhY2tBY3Rpb24odCl9fV9pbml0TWVtb3J5TWFuYWdlcigpe3RoaXMuX2FjdGlvbnM9W10sdGhpcy5fbkFjdGl2ZUFjdGlvbnM9MCx0aGlzLl9hY3Rpb25zQnlDbGlwPXt9LHRoaXMuX2JpbmRpbmdzPVtdLHRoaXMuX25BY3RpdmVCaW5kaW5ncz0wLHRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZT17fSx0aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzPVtdLHRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzPTA7bGV0IHQ9dGhpczt0aGlzLnN0YXRzPXthY3Rpb25zOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fYWN0aW9ucy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0Ll9uQWN0aXZlQWN0aW9uc319LGJpbmRpbmdzOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fYmluZGluZ3MubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUJpbmRpbmdzfX0sY29udHJvbEludGVycG9sYW50czp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2NvbnRyb2xJbnRlcnBvbGFudHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHN9fX19X2lzQWN0aXZlQWN0aW9uKHQpe2xldCByPXQuX2NhY2hlSW5kZXg7cmV0dXJuIHIhPT1udWxsJiZyPHRoaXMuX25BY3RpdmVBY3Rpb25zfV9hZGRJbmFjdGl2ZUFjdGlvbih0LHIsbil7bGV0IGk9dGhpcy5fYWN0aW9ucyxvPXRoaXMuX2FjdGlvbnNCeUNsaXAsYT1vW3JdO2lmKGE9PT12b2lkIDApYT17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxvW3JdPWE7ZWxzZXtsZXQgcz1hLmtub3duQWN0aW9uczt0Ll9ieUNsaXBDYWNoZUluZGV4PXMubGVuZ3RoLHMucHVzaCh0KX10Ll9jYWNoZUluZGV4PWkubGVuZ3RoLGkucHVzaCh0KSxhLmFjdGlvbkJ5Um9vdFtuXT10fV9yZW1vdmVJbmFjdGl2ZUFjdGlvbih0KXtsZXQgcj10aGlzLl9hY3Rpb25zLG49cltyLmxlbmd0aC0xXSxpPXQuX2NhY2hlSW5kZXg7bi5fY2FjaGVJbmRleD1pLHJbaV09bixyLnBvcCgpLHQuX2NhY2hlSW5kZXg9bnVsbDtsZXQgbz10Ll9jbGlwLnV1aWQsYT10aGlzLl9hY3Rpb25zQnlDbGlwLHM9YVtvXSxsPXMua25vd25BY3Rpb25zLGM9bFtsLmxlbmd0aC0xXSx1PXQuX2J5Q2xpcENhY2hlSW5kZXg7Yy5fYnlDbGlwQ2FjaGVJbmRleD11LGxbdV09YyxsLnBvcCgpLHQuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbDtsZXQgaD1zLmFjdGlvbkJ5Um9vdCxmPSh0Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QpLnV1aWQ7ZGVsZXRlIGhbZl0sbC5sZW5ndGg9PT0wJiZkZWxldGUgYVtvXSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKHQpe2xldCByPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCBuPTAsaT1yLmxlbmd0aDtuIT09aTsrK24pe2xldCBvPXJbbl07LS1vLnJlZmVyZW5jZUNvdW50PT09MCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG8pfX1fbGVuZEFjdGlvbih0KXtsZXQgcj10aGlzLl9hY3Rpb25zLG49dC5fY2FjaGVJbmRleCxpPXRoaXMuX25BY3RpdmVBY3Rpb25zKyssbz1yW2ldO3QuX2NhY2hlSW5kZXg9aSxyW2ldPXQsby5fY2FjaGVJbmRleD1uLHJbbl09b31fdGFrZUJhY2tBY3Rpb24odCl7bGV0IHI9dGhpcy5fYWN0aW9ucyxuPXQuX2NhY2hlSW5kZXgsaT0tLXRoaXMuX25BY3RpdmVBY3Rpb25zLG89cltpXTt0Ll9jYWNoZUluZGV4PWkscltpXT10LG8uX2NhY2hlSW5kZXg9bixyW25dPW99X2FkZEluYWN0aXZlQmluZGluZyh0LHIsbil7bGV0IGk9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLG89dGhpcy5fYmluZGluZ3MsYT1pW3JdO2E9PT12b2lkIDAmJihhPXt9LGlbcl09YSksYVtuXT10LHQuX2NhY2hlSW5kZXg9by5sZW5ndGgsby5wdXNoKHQpfV9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcodCl7bGV0IHI9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsaT1uLnJvb3ROb2RlLnV1aWQsbz1uLnBhdGgsYT10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUscz1hW2ldLGw9cltyLmxlbmd0aC0xXSxjPXQuX2NhY2hlSW5kZXg7bC5fY2FjaGVJbmRleD1jLHJbY109bCxyLnBvcCgpLGRlbGV0ZSBzW29dLE9iamVjdC5rZXlzKHMpLmxlbmd0aD09PTAmJmRlbGV0ZSBhW2ldfV9sZW5kQmluZGluZyh0KXtsZXQgcj10aGlzLl9iaW5kaW5ncyxuPXQuX2NhY2hlSW5kZXgsaT10aGlzLl9uQWN0aXZlQmluZGluZ3MrKyxvPXJbaV07dC5fY2FjaGVJbmRleD1pLHJbaV09dCxvLl9jYWNoZUluZGV4PW4scltuXT1vfV90YWtlQmFja0JpbmRpbmcodCl7bGV0IHI9dGhpcy5fYmluZGluZ3Msbj10Ll9jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQmluZGluZ3Msbz1yW2ldO3QuX2NhY2hlSW5kZXg9aSxyW2ldPXQsby5fY2FjaGVJbmRleD1uLHJbbl09b31fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpe2xldCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMscj10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrLG49dFtyXTtyZXR1cm4gbj09PXZvaWQgMCYmKG49bmV3IHg2KG5ldyBGbG9hdDMyQXJyYXkoMiksbmV3IEZsb2F0MzJBcnJheSgyKSwxLHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXIpLG4uX19jYWNoZUluZGV4PXIsdFtyXT1uKSxufV90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KXtsZXQgcj10aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzLG49dC5fX2NhY2hlSW5kZXgsaT0tLXRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzLG89cltpXTt0Ll9fY2FjaGVJbmRleD1pLHJbaV09dCxvLl9fY2FjaGVJbmRleD1uLHJbbl09b31jbGlwQWN0aW9uKHQscixuKXtsZXQgaT1yfHx0aGlzLl9yb290LG89aS51dWlkLGE9dHlwZW9mIHQ9PSJzdHJpbmciP1ExLmZpbmRCeU5hbWUoaSx0KTp0LHM9YSE9PW51bGw/YS51dWlkOnQsbD10aGlzLl9hY3Rpb25zQnlDbGlwW3NdLGM9bnVsbDtpZihuPT09dm9pZCAwJiYoYSE9PW51bGw/bj1hLmJsZW5kTW9kZTpuPVlVKSxsIT09dm9pZCAwKXtsZXQgaD1sLmFjdGlvbkJ5Um9vdFtvXTtpZihoIT09dm9pZCAwJiZoLmJsZW5kTW9kZT09PW4pcmV0dXJuIGg7Yz1sLmtub3duQWN0aW9uc1swXSxhPT09bnVsbCYmKGE9Yy5fY2xpcCl9aWYoYT09PW51bGwpcmV0dXJuIG51bGw7bGV0IHU9bmV3IGhodCh0aGlzLGEscixuKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbih1LGMpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHUscyxvKSx1fWV4aXN0aW5nQWN0aW9uKHQscil7bGV0IG49cnx8dGhpcy5fcm9vdCxpPW4udXVpZCxvPXR5cGVvZiB0PT0ic3RyaW5nIj9RMS5maW5kQnlOYW1lKG4sdCk6dCxhPW8/by51dWlkOnQscz10aGlzLl9hY3Rpb25zQnlDbGlwW2FdO3JldHVybiBzIT09dm9pZCAwJiZzLmFjdGlvbkJ5Um9vdFtpXXx8bnVsbH1zdG9wQWxsQWN0aW9uKCl7bGV0IHQ9dGhpcy5fYWN0aW9ucyxyPXRoaXMuX25BY3RpdmVBY3Rpb25zO2ZvcihsZXQgbj1yLTE7bj49MDstLW4pdFtuXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe3QqPXRoaXMudGltZVNjYWxlO2xldCByPXRoaXMuX2FjdGlvbnMsbj10aGlzLl9uQWN0aXZlQWN0aW9ucyxpPXRoaXMudGltZSs9dCxvPU1hdGguc2lnbih0KSxhPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IGM9MDtjIT09bjsrK2MpcltjXS5fdXBkYXRlKGksdCxvLGEpO2xldCBzPXRoaXMuX2JpbmRpbmdzLGw9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgYz0wO2MhPT1sOysrYylzW2NdLmFwcGx5KGEpO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCByPTA7cjx0aGlzLl9hY3Rpb25zLmxlbmd0aDtyKyspdGhpcy5fYWN0aW9uc1tyXS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtsZXQgcj10aGlzLl9hY3Rpb25zLG49dC51dWlkLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcCxvPWlbbl07aWYobyE9PXZvaWQgMCl7bGV0IGE9by5rbm93bkFjdGlvbnM7Zm9yKGxldCBzPTAsbD1hLmxlbmd0aDtzIT09bDsrK3Mpe2xldCBjPWFbc107dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihjKTtsZXQgdT1jLl9jYWNoZUluZGV4LGg9cltyLmxlbmd0aC0xXTtjLl9jYWNoZUluZGV4PW51bGwsYy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLGguX2NhY2hlSW5kZXg9dSxyW3VdPWgsci5wb3AoKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKGMpfWRlbGV0ZSBpW25dfX11bmNhY2hlUm9vdCh0KXtsZXQgcj10LnV1aWQsbj10aGlzLl9hY3Rpb25zQnlDbGlwO2ZvcihsZXQgYSBpbiBuKXtsZXQgcz1uW2FdLmFjdGlvbkJ5Um9vdCxsPXNbcl07bCE9PXZvaWQgMCYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24obCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24obCkpfWxldCBpPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxvPWlbcl07aWYobyE9PXZvaWQgMClmb3IobGV0IGEgaW4gbyl7bGV0IHM9b1thXTtzLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHMpfX11bmNhY2hlQWN0aW9uKHQscil7bGV0IG49dGhpcy5leGlzdGluZ0FjdGlvbih0LHIpO24hPT1udWxsJiYodGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihuKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUFjdGlvbihuKSl9fTtGVS5wcm90b3R5cGUuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXI9bmV3IEZsb2F0MzJBcnJheSgxKTt2YXIgbU09Y2xhc3N7Y29uc3RydWN0b3IodCl7dHlwZW9mIHQ9PSJzdHJpbmciJiYoY29uc29sZS53YXJuKCJUSFJFRS5Vbmlmb3JtOiBUeXBlIHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVlZGVkLiIpLHQ9YXJndW1lbnRzWzFdKSx0aGlzLnZhbHVlPXR9Y2xvbmUoKXtyZXR1cm4gbmV3IG1NKHRoaXMudmFsdWUuY2xvbmU9PT12b2lkIDA/dGhpcy52YWx1ZTp0aGlzLnZhbHVlLmNsb25lKCkpfX0sQlU9Y2xhc3MgZXh0ZW5kcyBlbXtjb25zdHJ1Y3Rvcih0LHIsbj0xKXtzdXBlcih0LHIpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1ufWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfWNsb25lKHQpe2xldCByPXN1cGVyLmNsb25lKHQpO3JldHVybiByLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLHJ9dG9KU09OKHQpe2xldCByPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gci5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPSEwLHIubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUscn19O0JVLnByb3RvdHlwZS5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPSEwO3ZhciBIVT1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbixpLG8pe3RoaXMuYnVmZmVyPXQsdGhpcy50eXBlPXIsdGhpcy5pdGVtU2l6ZT1uLHRoaXMuZWxlbWVudFNpemU9aSx0aGlzLmNvdW50PW8sdGhpcy52ZXJzaW9uPTB9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9c2V0QnVmZmVyKHQpe3JldHVybiB0aGlzLmJ1ZmZlcj10LHRoaXN9c2V0VHlwZSh0LHIpe3JldHVybiB0aGlzLnR5cGU9dCx0aGlzLmVsZW1lbnRTaXplPXIsdGhpc31zZXRJdGVtU2l6ZSh0KXtyZXR1cm4gdGhpcy5pdGVtU2l6ZT10LHRoaXN9c2V0Q291bnQodCl7cmV0dXJuIHRoaXMuY291bnQ9dCx0aGlzfX07SFUucHJvdG90eXBlLmlzR0xCdWZmZXJBdHRyaWJ1dGU9ITA7dmFyIGZodD1jbGFzc3tjb25zdHJ1Y3Rvcih0LHIsbj0wLGk9MS8wKXt0aGlzLnJheT1uZXcgWmYodCxyKSx0aGlzLm5lYXI9bix0aGlzLmZhcj1pLHRoaXMuY2FtZXJhPW51bGwsdGhpcy5sYXllcnM9bmV3IGozLHRoaXMucGFyYW1zPXtNZXNoOnt9LExpbmU6e3RocmVzaG9sZDoxfSxMT0Q6e30sUG9pbnRzOnt0aHJlc2hvbGQ6MX0sU3ByaXRlOnt9fX1zZXQodCxyKXt0aGlzLnJheS5zZXQodCxyKX1zZXRGcm9tQ2FtZXJhKHQscil7ciYmci5pc1BlcnNwZWN0aXZlQ2FtZXJhPyh0aGlzLnJheS5vcmlnaW4uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHIubWF0cml4V29ybGQpLHRoaXMucmF5LmRpcmVjdGlvbi5zZXQodC54LHQueSwuNSkudW5wcm9qZWN0KHIpLnN1Yih0aGlzLnJheS5vcmlnaW4pLm5vcm1hbGl6ZSgpLHRoaXMuY2FtZXJhPXIpOnImJnIuaXNPcnRob2dyYXBoaWNDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXQodC54LHQueSwoci5uZWFyK3IuZmFyKS8oci5uZWFyLXIuZmFyKSkudW5wcm9qZWN0KHIpLHRoaXMucmF5LmRpcmVjdGlvbi5zZXQoMCwwLC0xKS50cmFuc2Zvcm1EaXJlY3Rpb24oci5tYXRyaXhXb3JsZCksdGhpcy5jYW1lcmE9cik6Y29uc29sZS5lcnJvcigiVEhSRUUuUmF5Y2FzdGVyOiBVbnN1cHBvcnRlZCBjYW1lcmEgdHlwZTogIityLnR5cGUpfWludGVyc2VjdE9iamVjdCh0LHI9ITAsbj1bXSl7cmV0dXJuIHBodCh0LHRoaXMsbixyKSxuLnNvcnQod2hlKSxufWludGVyc2VjdE9iamVjdHModCxyPSEwLG49W10pe2ZvcihsZXQgaT0wLG89dC5sZW5ndGg7aTxvO2krKylwaHQodFtpXSx0aGlzLG4scik7cmV0dXJuIG4uc29ydCh3aGUpLG59fTtmdW5jdGlvbiB3aGUoZSx0KXtyZXR1cm4gZS5kaXN0YW5jZS10LmRpc3RhbmNlfWZ1bmN0aW9uIHBodChlLHQscixuKXtpZihlLmxheWVycy50ZXN0KHQubGF5ZXJzKSYmZS5yYXljYXN0KHQsciksbj09PSEwKXtsZXQgaT1lLmNoaWxkcmVuO2ZvcihsZXQgbz0wLGE9aS5sZW5ndGg7bzxhO28rKylwaHQoaVtvXSx0LHIsITApfX12YXIgZ009Y2xhc3N7Y29uc3RydWN0b3IodD0xLHI9MCxuPTApe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMucGhpPXIsdGhpcy50aGV0YT1uLHRoaXN9c2V0KHQscixuKXtyZXR1cm4gdGhpcy5yYWRpdXM9dCx0aGlzLnBoaT1yLHRoaXMudGhldGE9bix0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXMucGhpPXQucGhpLHRoaXMudGhldGE9dC50aGV0YSx0aGlzfW1ha2VTYWZlKCl7cmV0dXJuIHRoaXMucGhpPU1hdGgubWF4KDFlLTYsTWF0aC5taW4oTWF0aC5QSS0xZS02LHRoaXMucGhpKSksdGhpc31zZXRGcm9tVmVjdG9yMyh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQueCx0LnksdC56KX1zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQscixuKXtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KHQqdCtyKnIrbipuKSx0aGlzLnJhZGl1cz09PTA/KHRoaXMudGhldGE9MCx0aGlzLnBoaT0wKToodGhpcy50aGV0YT1NYXRoLmF0YW4yKHQsbiksdGhpcy5waGk9TWF0aC5hY29zKEtvKHIvdGhpcy5yYWRpdXMsLTEsMSkpKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX19LGRodD1jbGFzc3tjb25zdHJ1Y3Rvcih0PTEscj0wLG49MCl7cmV0dXJuIHRoaXMucmFkaXVzPXQsdGhpcy50aGV0YT1yLHRoaXMueT1uLHRoaXN9c2V0KHQscixuKXtyZXR1cm4gdGhpcy5yYWRpdXM9dCx0aGlzLnRoZXRhPXIsdGhpcy55PW4sdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLnRoZXRhPXQudGhldGEsdGhpcy55PXQueSx0aGlzfXNldEZyb21WZWN0b3IzKHQpe3JldHVybiB0aGlzLnNldEZyb21DYXJ0ZXNpYW5Db29yZHModC54LHQueSx0LnopfXNldEZyb21DYXJ0ZXNpYW5Db29yZHModCxyLG4pe3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQodCp0K24qbiksdGhpcy50aGV0YT1NYXRoLmF0YW4yKHQsbiksdGhpcy55PXIsdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fSxTaGU9bmV3IEx0LCQwPWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IEx0KDEvMCwxLzApLHI9bmV3IEx0KC0xLzAsLTEvMCkpe3RoaXMubWluPXQsdGhpcy5tYXg9cn1zZXQodCxyKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KHIpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgcj0wLG49dC5sZW5ndGg7cjxuO3IrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtyXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxyKXtsZXQgbj1TaGUuY29weShyKS5tdWx0aXBseVNjYWxhciguNSk7cmV0dXJuIHRoaXMubWluLmNvcHkodCkuc3ViKG4pLHRoaXMubWF4LmNvcHkodCkuYWRkKG4pLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMubWluLmNvcHkodC5taW4pLHRoaXMubWF4LmNvcHkodC5tYXgpLHRoaXN9bWFrZUVtcHR5KCl7cmV0dXJuIHRoaXMubWluLng9dGhpcy5taW4ueT0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PS0xLzAsdGhpc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMubWF4Lng8dGhpcy5taW4ueHx8dGhpcy5tYXgueTx0aGlzLm1pbi55fWdldENlbnRlcih0KXtyZXR1cm4gdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwKTp0LmFkZFZlY3RvcnModGhpcy5taW4sdGhpcy5tYXgpLm11bHRpcGx5U2NhbGFyKC41KX1nZXRTaXplKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDApOnQuc3ViVmVjdG9ycyh0aGlzLm1heCx0aGlzLm1pbil9ZXhwYW5kQnlQb2ludCh0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQpLHRoaXMubWF4Lm1heCh0KSx0aGlzfWV4cGFuZEJ5VmVjdG9yKHQpe3JldHVybiB0aGlzLm1pbi5zdWIodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXhwYW5kQnlTY2FsYXIodCl7cmV0dXJuIHRoaXMubWluLmFkZFNjYWxhcigtdCksdGhpcy5tYXguYWRkU2NhbGFyKHQpLHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55KX1jb250YWluc0JveCh0KXtyZXR1cm4gdGhpcy5taW4ueDw9dC5taW4ueCYmdC5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9dC5taW4ueSYmdC5tYXgueTw9dGhpcy5tYXgueX1nZXRQYXJhbWV0ZXIodCxyKXtyZXR1cm4gci5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55KX1jbGFtcFBvaW50KHQscil7cmV0dXJuIHIuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBTaGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19OyQwLnByb3RvdHlwZS5pc0JveDI9ITA7dmFyIE1oZT1uZXcgaixxVj1uZXcgaixWVT1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBqLHI9bmV3IGope3RoaXMuc3RhcnQ9dCx0aGlzLmVuZD1yfXNldCh0LHIpe3JldHVybiB0aGlzLnN0YXJ0LmNvcHkodCksdGhpcy5lbmQuY29weShyKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0LnN0YXJ0KSx0aGlzLmVuZC5jb3B5KHQuZW5kKSx0aGlzfWdldENlbnRlcih0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuc3RhcnQsdGhpcy5lbmQpLm11bHRpcGx5U2NhbGFyKC41KX1kZWx0YSh0KXtyZXR1cm4gdC5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpfWRpc3RhbmNlU3EoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmVuZCl9ZGlzdGFuY2UoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvKHRoaXMuZW5kKX1hdCh0LHIpe3JldHVybiB0aGlzLmRlbHRhKHIpLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnN0YXJ0KX1jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQscil7TWhlLnN1YlZlY3RvcnModCx0aGlzLnN0YXJ0KSxxVi5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpO2xldCBuPXFWLmRvdChxViksbz1xVi5kb3QoTWhlKS9uO3JldHVybiByJiYobz1LbyhvLDAsMSkpLG99Y2xvc2VzdFBvaW50VG9Qb2ludCh0LHIsbil7bGV0IGk9dGhpcy5jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQscik7cmV0dXJuIHRoaXMuZGVsdGEobikubXVsdGlwbHlTY2FsYXIoaSkuYWRkKHRoaXMuc3RhcnQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5zdGFydC5hcHBseU1hdHJpeDQodCksdGhpcy5lbmQuYXBwbHlNYXRyaXg0KHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnN0YXJ0LmVxdWFscyh0aGlzLnN0YXJ0KSYmdC5lbmQuZXF1YWxzKHRoaXMuZW5kKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fSxFaGU9bmV3IGosbWh0PWNsYXNzIGV4dGVuZHMgb3J7Y29uc3RydWN0b3IodCxyKXtzdXBlcigpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5jb2xvcj1yO2xldCBuPW5ldyBQZSxpPVswLDAsMCwwLDAsMSwwLDAsMCwxLDAsMSwwLDAsMCwtMSwwLDEsMCwwLDAsMCwxLDEsMCwwLDAsMCwtMSwxXTtmb3IobGV0IGE9MCxzPTEsbD0zMjthPGw7YSsrLHMrKyl7bGV0IGM9YS9sKk1hdGguUEkqMix1PXMvbCpNYXRoLlBJKjI7aS5wdXNoKE1hdGguY29zKGMpLE1hdGguc2luKGMpLDEsTWF0aC5jb3ModSksTWF0aC5zaW4odSksMSl9bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUoaSwzKSk7bGV0IG89bmV3IHFpKHtmb2c6ITEsdG9uZU1hcHBlZDohMX0pO3RoaXMuY29uZT1uZXcgQ2EobixvKSx0aGlzLmFkZCh0aGlzLmNvbmUpLHRoaXMudXBkYXRlKCl9ZGlzcG9zZSgpe3RoaXMuY29uZS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5jb25lLm1hdGVyaWFsLmRpc3Bvc2UoKX11cGRhdGUoKXt0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCk7bGV0IHQ9dGhpcy5saWdodC5kaXN0YW5jZT90aGlzLmxpZ2h0LmRpc3RhbmNlOjFlMyxyPXQqTWF0aC50YW4odGhpcy5saWdodC5hbmdsZSk7dGhpcy5jb25lLnNjYWxlLnNldChyLHIsdCksRWhlLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0LnRhcmdldC5tYXRyaXhXb3JsZCksdGhpcy5jb25lLmxvb2tBdChFaGUpLHRoaXMuY29sb3IhPT12b2lkIDA/dGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTp0aGlzLmNvbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKX19LE8wPW5ldyBqLEdWPW5ldyBNZSx4dXQ9bmV3IE1lLFVVPWNsYXNzIGV4dGVuZHMgQ2F7Y29uc3RydWN0b3IodCl7bGV0IHI9S2ZlKHQpLG49bmV3IFBlLGk9W10sbz1bXSxhPW5ldyBuZSgwLDAsMSkscz1uZXcgbmUoMCwxLDApO2ZvcihsZXQgYz0wO2M8ci5sZW5ndGg7YysrKXtsZXQgdT1yW2NdO3UucGFyZW50JiZ1LnBhcmVudC5pc0JvbmUmJihpLnB1c2goMCwwLDApLGkucHVzaCgwLDAsMCksby5wdXNoKGEucixhLmcsYS5iKSxvLnB1c2gocy5yLHMuZyxzLmIpKX1uLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShpLDMpKSxuLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyB4ZShvLDMpKTtsZXQgbD1uZXcgcWkoe3ZlcnRleENvbG9yczohMCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExLHRyYW5zcGFyZW50OiEwfSk7c3VwZXIobixsKSx0aGlzLnR5cGU9IlNrZWxldG9uSGVscGVyIix0aGlzLmlzU2tlbGV0b25IZWxwZXI9ITAsdGhpcy5yb290PXQsdGhpcy5ib25lcz1yLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2xldCByPXRoaXMuYm9uZXMsbj10aGlzLmdlb21ldHJ5LGk9bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7eHV0LmNvcHkodGhpcy5yb290Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtmb3IobGV0IG89MCxhPTA7bzxyLmxlbmd0aDtvKyspe2xldCBzPXJbb107cy5wYXJlbnQmJnMucGFyZW50LmlzQm9uZSYmKEdWLm11bHRpcGx5TWF0cmljZXMoeHV0LHMubWF0cml4V29ybGQpLE8wLnNldEZyb21NYXRyaXhQb3NpdGlvbihHViksaS5zZXRYWVooYSxPMC54LE8wLnksTzAueiksR1YubXVsdGlwbHlNYXRyaWNlcyh4dXQscy5wYXJlbnQubWF0cml4V29ybGQpLE8wLnNldEZyb21NYXRyaXhQb3NpdGlvbihHViksaS5zZXRYWVooYSsxLE8wLngsTzAueSxPMC56KSxhKz0yKX1uLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKS5uZWVkc1VwZGF0ZT0hMCxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19O2Z1bmN0aW9uIEtmZShlKXtsZXQgdD1bXTtlJiZlLmlzQm9uZSYmdC5wdXNoKGUpO2ZvcihsZXQgcj0wO3I8ZS5jaGlsZHJlbi5sZW5ndGg7cisrKXQucHVzaC5hcHBseSh0LEtmZShlLmNoaWxkcmVuW3JdKSk7cmV0dXJuIHR9dmFyIGdodD1jbGFzcyBleHRlbmRzIGVpe2NvbnN0cnVjdG9yKHQscixuKXtsZXQgaT1uZXcgajAociw0LDIpLG89bmV3IGFoKHt3aXJlZnJhbWU6ITAsZm9nOiExLHRvbmVNYXBwZWQ6ITF9KTtzdXBlcihpLG8pLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5jb2xvcj1uLHRoaXMudHlwZT0iUG9pbnRMaWdodEhlbHBlciIsdGhpcy5tYXRyaXg9dGhpcy5saWdodC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7dGhpcy5jb2xvciE9PXZvaWQgMD90aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTp0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxwMHI9bmV3IGosVGhlPW5ldyBuZSxDaGU9bmV3IG5lLF9odD1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKHQscixuKXtzdXBlcigpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5jb2xvcj1uO2xldCBpPW5ldyBXMChyKTtpLnJvdGF0ZVkoTWF0aC5QSSouNSksdGhpcy5tYXRlcmlhbD1uZXcgYWgoe3dpcmVmcmFtZTohMCxmb2c6ITEsdG9uZU1hcHBlZDohMX0pLHRoaXMuY29sb3I9PT12b2lkIDAmJih0aGlzLm1hdGVyaWFsLnZlcnRleENvbG9ycz0hMCk7bGV0IG89aS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIiksYT1uZXcgRmxvYXQzMkFycmF5KG8uY291bnQqMyk7aS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgSmUoYSwzKSksdGhpcy5hZGQobmV3IGVpKGksdGhpcy5tYXRlcmlhbCkpLHRoaXMudXBkYXRlKCl9ZGlzcG9zZSgpe3RoaXMuY2hpbGRyZW5bMF0uZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe2xldCB0PXRoaXMuY2hpbGRyZW5bMF07aWYodGhpcy5jb2xvciE9PXZvaWQgMCl0aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTtlbHNle2xldCByPXQuZ2VvbWV0cnkuZ2V0QXR0cmlidXRlKCJjb2xvciIpO1RoZS5jb3B5KHRoaXMubGlnaHQuY29sb3IpLENoZS5jb3B5KHRoaXMubGlnaHQuZ3JvdW5kQ29sb3IpO2ZvcihsZXQgbj0wLGk9ci5jb3VudDtuPGk7bisrKXtsZXQgbz1uPGkvMj9UaGU6Q2hlO3Iuc2V0WFlaKG4sby5yLG8uZyxvLmIpfXIubmVlZHNVcGRhdGU9ITB9dC5sb29rQXQocDByLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkKS5uZWdhdGUoKSl9fSxxVT1jbGFzcyBleHRlbmRzIENhe2NvbnN0cnVjdG9yKHQ9MTAscj0xMCxuPTQ0NzM5MjQsaT04OTQ3ODQ4KXtuPW5ldyBuZShuKSxpPW5ldyBuZShpKTtsZXQgbz1yLzIsYT10L3Iscz10LzIsbD1bXSxjPVtdO2ZvcihsZXQgZj0wLHA9MCxkPS1zO2Y8PXI7ZisrLGQrPWEpe2wucHVzaCgtcywwLGQscywwLGQpLGwucHVzaChkLDAsLXMsZCwwLHMpO2xldCBnPWY9PT1vP246aTtnLnRvQXJyYXkoYyxwKSxwKz0zLGcudG9BcnJheShjLHApLHArPTMsZy50b0FycmF5KGMscCkscCs9MyxnLnRvQXJyYXkoYyxwKSxwKz0zfWxldCB1PW5ldyBQZTt1LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShsLDMpKSx1LnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyB4ZShjLDMpKTtsZXQgaD1uZXcgcWkoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSk7c3VwZXIodSxoKSx0aGlzLnR5cGU9IkdyaWRIZWxwZXIifX0seWh0PWNsYXNzIGV4dGVuZHMgQ2F7Y29uc3RydWN0b3IodD0xMCxyPTE2LG49OCxpPTY0LG89NDQ3MzkyNCxhPTg5NDc4NDgpe289bmV3IG5lKG8pLGE9bmV3IG5lKGEpO2xldCBzPVtdLGw9W107Zm9yKGxldCBoPTA7aDw9cjtoKyspe2xldCBmPWgvciooTWF0aC5QSSoyKSxwPU1hdGguc2luKGYpKnQsZD1NYXRoLmNvcyhmKSp0O3MucHVzaCgwLDAsMCkscy5wdXNoKHAsMCxkKTtsZXQgZz1oJjE/bzphO2wucHVzaChnLnIsZy5nLGcuYiksbC5wdXNoKGcucixnLmcsZy5iKX1mb3IobGV0IGg9MDtoPD1uO2grKyl7bGV0IGY9aCYxP286YSxwPXQtdC9uKmg7Zm9yKGxldCBkPTA7ZDxpO2QrKyl7bGV0IGc9ZC9pKihNYXRoLlBJKjIpLF89TWF0aC5zaW4oZykqcCx5PU1hdGguY29zKGcpKnA7cy5wdXNoKF8sMCx5KSxsLnB1c2goZi5yLGYuZyxmLmIpLGc9KGQrMSkvaSooTWF0aC5QSSoyKSxfPU1hdGguc2luKGcpKnAseT1NYXRoLmNvcyhnKSpwLHMucHVzaChfLDAseSksbC5wdXNoKGYucixmLmcsZi5iKX19bGV0IGM9bmV3IFBlO2Muc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKHMsMykpLGMuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IHhlKGwsMykpO2xldCB1PW5ldyBxaSh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KTtzdXBlcihjLHUpLHRoaXMudHlwZT0iUG9sYXJHcmlkSGVscGVyIn19LEFoZT1uZXcgaixXVj1uZXcgaixQaGU9bmV3IGosdmh0PWNsYXNzIGV4dGVuZHMgb3J7Y29uc3RydWN0b3IodCxyLG4pe3N1cGVyKCksdGhpcy5saWdodD10LHRoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmNvbG9yPW4scj09PXZvaWQgMCYmKHI9MSk7bGV0IGk9bmV3IFBlO2kuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKFstcixyLDAscixyLDAsciwtciwwLC1yLC1yLDAsLXIsciwwXSwzKSk7bGV0IG89bmV3IHFpKHtmb2c6ITEsdG9uZU1hcHBlZDohMX0pO3RoaXMubGlnaHRQbGFuZT1uZXcgbGgoaSxvKSx0aGlzLmFkZCh0aGlzLmxpZ2h0UGxhbmUpLGk9bmV3IFBlLGkuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKFswLDAsMCwwLDAsMV0sMykpLHRoaXMudGFyZ2V0TGluZT1uZXcgbGgoaSxvKSx0aGlzLmFkZCh0aGlzLnRhcmdldExpbmUpLHRoaXMudXBkYXRlKCl9ZGlzcG9zZSgpe3RoaXMubGlnaHRQbGFuZS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzLnRhcmdldExpbmUuZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7QWhlLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkKSxXVi5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLFBoZS5zdWJWZWN0b3JzKFdWLEFoZSksdGhpcy5saWdodFBsYW5lLmxvb2tBdChXViksdGhpcy5jb2xvciE9PXZvaWQgMD8odGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpKToodGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvciksdGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcikpLHRoaXMudGFyZ2V0TGluZS5sb29rQXQoV1YpLHRoaXMudGFyZ2V0TGluZS5zY2FsZS56PVBoZS5sZW5ndGgoKX19LFlWPW5ldyBqLHlpPW5ldyBSMSx4aHQ9Y2xhc3MgZXh0ZW5kcyBDYXtjb25zdHJ1Y3Rvcih0KXtsZXQgcj1uZXcgUGUsbj1uZXcgcWkoe2NvbG9yOjE2Nzc3MjE1LHZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSksaT1bXSxvPVtdLGE9e30scz1uZXcgbmUoMTY3NTUyMDApLGw9bmV3IG5lKDE2NzExNjgwKSxjPW5ldyBuZSg0Mzc3NSksdT1uZXcgbmUoMTY3NzcyMTUpLGg9bmV3IG5lKDMzNTU0NDMpO2YoIm4xIiwibjIiLHMpLGYoIm4yIiwibjQiLHMpLGYoIm40IiwibjMiLHMpLGYoIm4zIiwibjEiLHMpLGYoImYxIiwiZjIiLHMpLGYoImYyIiwiZjQiLHMpLGYoImY0IiwiZjMiLHMpLGYoImYzIiwiZjEiLHMpLGYoIm4xIiwiZjEiLHMpLGYoIm4yIiwiZjIiLHMpLGYoIm4zIiwiZjMiLHMpLGYoIm40IiwiZjQiLHMpLGYoInAiLCJuMSIsbCksZigicCIsIm4yIixsKSxmKCJwIiwibjMiLGwpLGYoInAiLCJuNCIsbCksZigidTEiLCJ1MiIsYyksZigidTIiLCJ1MyIsYyksZigidTMiLCJ1MSIsYyksZigiYyIsInQiLHUpLGYoInAiLCJjIixoKSxmKCJjbjEiLCJjbjIiLGgpLGYoImNuMyIsImNuNCIsaCksZigiY2YxIiwiY2YyIixoKSxmKCJjZjMiLCJjZjQiLGgpO2Z1bmN0aW9uIGYoZCxnLF8pe3AoZCxfKSxwKGcsXyl9ZnVuY3Rpb24gcChkLGcpe2kucHVzaCgwLDAsMCksby5wdXNoKGcucixnLmcsZy5iKSxhW2RdPT09dm9pZCAwJiYoYVtkXT1bXSksYVtkXS5wdXNoKGkubGVuZ3RoLzMtMSl9ci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUoaSwzKSksci5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgeGUobywzKSksc3VwZXIocixuKSx0aGlzLnR5cGU9IkNhbWVyYUhlbHBlciIsdGhpcy5jYW1lcmE9dCx0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4JiZ0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5wb2ludE1hcD1hLHRoaXMudXBkYXRlKCl9dXBkYXRlKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeSxyPXRoaXMucG9pbnRNYXAsbj0xLGk9MTt5aS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSxQaSgiYyIscix0LHlpLDAsMCwtMSksUGkoInQiLHIsdCx5aSwwLDAsMSksUGkoIm4xIixyLHQseWksLW4sLWksLTEpLFBpKCJuMiIscix0LHlpLG4sLWksLTEpLFBpKCJuMyIscix0LHlpLC1uLGksLTEpLFBpKCJuNCIscix0LHlpLG4saSwtMSksUGkoImYxIixyLHQseWksLW4sLWksMSksUGkoImYyIixyLHQseWksbiwtaSwxKSxQaSgiZjMiLHIsdCx5aSwtbixpLDEpLFBpKCJmNCIscix0LHlpLG4saSwxKSxQaSgidTEiLHIsdCx5aSxuKi43LGkqMS4xLC0xKSxQaSgidTIiLHIsdCx5aSwtbiouNyxpKjEuMSwtMSksUGkoInUzIixyLHQseWksMCxpKjIsLTEpLFBpKCJjZjEiLHIsdCx5aSwtbiwwLDEpLFBpKCJjZjIiLHIsdCx5aSxuLDAsMSksUGkoImNmMyIscix0LHlpLDAsLWksMSksUGkoImNmNCIscix0LHlpLDAsaSwxKSxQaSgiY24xIixyLHQseWksLW4sMCwtMSksUGkoImNuMiIscix0LHlpLG4sMCwtMSksUGkoImNuMyIscix0LHlpLDAsLWksLTEpLFBpKCJjbjQiLHIsdCx5aSwwLGksLTEpLHQuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwfWRpc3Bvc2UoKXt0aGlzLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLm1hdGVyaWFsLmRpc3Bvc2UoKX19O2Z1bmN0aW9uIFBpKGUsdCxyLG4saSxvLGEpe1lWLnNldChpLG8sYSkudW5wcm9qZWN0KG4pO2xldCBzPXRbZV07aWYocyE9PXZvaWQgMCl7bGV0IGw9ci5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7Zm9yKGxldCBjPTAsdT1zLmxlbmd0aDtjPHU7YysrKWwuc2V0WFlaKHNbY10sWVYueCxZVi55LFlWLnopfX12YXIgalY9bmV3IFFvLF9NPWNsYXNzIGV4dGVuZHMgQ2F7Y29uc3RydWN0b3IodCxyPTE2Nzc2OTYwKXtsZXQgbj1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSksaT1uZXcgRmxvYXQzMkFycmF5KDgqMyksbz1uZXcgUGU7by5zZXRJbmRleChuZXcgSmUobiwxKSksby5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgSmUoaSwzKSksc3VwZXIobyxuZXcgcWkoe2NvbG9yOnIsdG9uZU1hcHBlZDohMX0pKSx0aGlzLm9iamVjdD10LHRoaXMudHlwZT0iQm94SGVscGVyIix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX11cGRhdGUodCl7aWYodCE9PXZvaWQgMCYmY29uc29sZS53YXJuKCJUSFJFRS5Cb3hIZWxwZXI6IC51cGRhdGUoKSBoYXMgbm8gbG9uZ2VyIGFyZ3VtZW50cy4iKSx0aGlzLm9iamVjdCE9PXZvaWQgMCYmalYuc2V0RnJvbU9iamVjdCh0aGlzLm9iamVjdCksalYuaXNFbXB0eSgpKXJldHVybjtsZXQgcj1qVi5taW4sbj1qVi5tYXgsaT10aGlzLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24sbz1pLmFycmF5O29bMF09bi54LG9bMV09bi55LG9bMl09bi56LG9bM109ci54LG9bNF09bi55LG9bNV09bi56LG9bNl09ci54LG9bN109ci55LG9bOF09bi56LG9bOV09bi54LG9bMTBdPXIueSxvWzExXT1uLnosb1sxMl09bi54LG9bMTNdPW4ueSxvWzE0XT1yLnosb1sxNV09ci54LG9bMTZdPW4ueSxvWzE3XT1yLnosb1sxOF09ci54LG9bMTldPXIueSxvWzIwXT1yLnosb1syMV09bi54LG9bMjJdPXIueSxvWzIzXT1yLnosaS5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfXNldEZyb21PYmplY3QodCl7cmV0dXJuIHRoaXMub2JqZWN0PXQsdGhpcy51cGRhdGUoKSx0aGlzfWNvcHkodCl7cmV0dXJuIENhLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLm9iamVjdD10Lm9iamVjdCx0aGlzfX0sYmh0PWNsYXNzIGV4dGVuZHMgQ2F7Y29uc3RydWN0b3IodCxyPTE2Nzc2OTYwKXtsZXQgbj1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSksaT1bMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwtMSwtMSwxLC0xLC0xLC0xLC0xLDEsLTEsLTFdLG89bmV3IFBlO28uc2V0SW5kZXgobmV3IEplKG4sMSkpLG8uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKGksMykpLHN1cGVyKG8sbmV3IHFpKHtjb2xvcjpyLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5ib3g9dCx0aGlzLnR5cGU9IkJveDNIZWxwZXIiLHRoaXMuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl9dXBkYXRlTWF0cml4V29ybGQodCl7bGV0IHI9dGhpcy5ib3g7ci5pc0VtcHR5KCl8fChyLmdldENlbnRlcih0aGlzLnBvc2l0aW9uKSxyLmdldFNpemUodGhpcy5zY2FsZSksdGhpcy5zY2FsZS5tdWx0aXBseVNjYWxhciguNSksc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCkpfX0sd2h0PWNsYXNzIGV4dGVuZHMgbGh7Y29uc3RydWN0b3IodCxyPTEsbj0xNjc3Njk2MCl7bGV0IGk9bixvPVsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSxhPW5ldyBQZTthLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShvLDMpKSxhLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHN1cGVyKGEsbmV3IHFpKHtjb2xvcjppLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJQbGFuZUhlbHBlciIsdGhpcy5wbGFuZT10LHRoaXMuc2l6ZT1yO2xldCBzPVsxLDEsMSwtMSwxLDEsLTEsLTEsMSwxLDEsMSwtMSwtMSwxLDEsLTEsMV0sbD1uZXcgUGU7bC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgeGUocywzKSksbC5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSx0aGlzLmFkZChuZXcgZWkobCxuZXcgYWgoe2NvbG9yOmksb3BhY2l0eTouMix0cmFuc3BhcmVudDohMCxkZXB0aFdyaXRlOiExLHRvbmVNYXBwZWQ6ITF9KSkpfXVwZGF0ZU1hdHJpeFdvcmxkKHQpe2xldCByPS10aGlzLnBsYW5lLmNvbnN0YW50O01hdGguYWJzKHIpPDFlLTgmJihyPTFlLTgpLHRoaXMuc2NhbGUuc2V0KC41KnRoaXMuc2l6ZSwuNSp0aGlzLnNpemUsciksdGhpcy5jaGlsZHJlblswXS5tYXRlcmlhbC5zaWRlPXI8MD9JaTpJMSx0aGlzLmxvb2tBdCh0aGlzLnBsYW5lLm5vcm1hbCksc3VwZXIudXBkYXRlTWF0cml4V29ybGQodCl9fSxJaGU9bmV3IGosWFYsYnV0LFNodD1jbGFzcyBleHRlbmRzIG9ye2NvbnN0cnVjdG9yKHQ9bmV3IGooMCwwLDEpLHI9bmV3IGooMCwwLDApLG49MSxpPTE2Nzc2OTYwLG89biouMixhPW8qLjIpe3N1cGVyKCksdGhpcy50eXBlPSJBcnJvd0hlbHBlciIsWFY9PT12b2lkIDAmJihYVj1uZXcgUGUsWFYuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhlKFswLDAsMCwwLDEsMF0sMykpLGJ1dD1uZXcgb20oMCwuNSwxLDUsMSksYnV0LnRyYW5zbGF0ZSgwLC0uNSwwKSksdGhpcy5wb3NpdGlvbi5jb3B5KHIpLHRoaXMubGluZT1uZXcgbGgoWFYsbmV3IHFpKHtjb2xvcjppLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5saW5lLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5hZGQodGhpcy5saW5lKSx0aGlzLmNvbmU9bmV3IGVpKGJ1dCxuZXcgYWgoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLmNvbmUubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmFkZCh0aGlzLmNvbmUpLHRoaXMuc2V0RGlyZWN0aW9uKHQpLHRoaXMuc2V0TGVuZ3RoKG4sbyxhKX1zZXREaXJlY3Rpb24odCl7aWYodC55Pi45OTk5OSl0aGlzLnF1YXRlcm5pb24uc2V0KDAsMCwwLDEpO2Vsc2UgaWYodC55PC0uOTk5OTkpdGhpcy5xdWF0ZXJuaW9uLnNldCgxLDAsMCwwKTtlbHNle0loZS5zZXQodC56LDAsLXQueCkubm9ybWFsaXplKCk7bGV0IHI9TWF0aC5hY29zKHQueSk7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUoSWhlLHIpfX1zZXRMZW5ndGgodCxyPXQqLjIsbj1yKi4yKXt0aGlzLmxpbmUuc2NhbGUuc2V0KDEsTWF0aC5tYXgoMWUtNCx0LXIpLDEpLHRoaXMubGluZS51cGRhdGVNYXRyaXgoKSx0aGlzLmNvbmUuc2NhbGUuc2V0KG4scixuKSx0aGlzLmNvbmUucG9zaXRpb24ueT10LHRoaXMuY29uZS51cGRhdGVNYXRyaXgoKX1zZXRDb2xvcih0KXt0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHQpLHRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0LCExKSx0aGlzLmxpbmUuY29weSh0LmxpbmUpLHRoaXMuY29uZS5jb3B5KHQuY29uZSksdGhpc319LHlNPWNsYXNzIGV4dGVuZHMgQ2F7Y29uc3RydWN0b3IodD0xKXtsZXQgcj1bMCwwLDAsdCwwLDAsMCwwLDAsMCx0LDAsMCwwLDAsMCwwLHRdLG49WzEsMCwwLDEsLjYsMCwwLDEsMCwuNiwxLDAsMCwwLDEsMCwuNiwxXSxpPW5ldyBQZTtpLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyB4ZShyLDMpKSxpLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyB4ZShuLDMpKTtsZXQgbz1uZXcgcWkoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSk7c3VwZXIoaSxvKSx0aGlzLnR5cGU9IkF4ZXNIZWxwZXIifXNldENvbG9ycyh0LHIsbil7bGV0IGk9bmV3IG5lLG89dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLmFycmF5O3JldHVybiBpLnNldCh0KSxpLnRvQXJyYXkobywwKSxpLnRvQXJyYXkobywzKSxpLnNldChyKSxpLnRvQXJyYXkobyw2KSxpLnRvQXJyYXkobyw5KSxpLnNldChuKSxpLnRvQXJyYXkobywxMiksaS50b0FycmF5KG8sMTUpLHRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5jb2xvci5uZWVkc1VwZGF0ZT0hMCx0aGlzfWRpc3Bvc2UoKXt0aGlzLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLm1hdGVyaWFsLmRpc3Bvc2UoKX19LE1odD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iU2hhcGVQYXRoIix0aGlzLmNvbG9yPW5ldyBuZSx0aGlzLnN1YlBhdGhzPVtdLHRoaXMuY3VycmVudFBhdGg9bnVsbH1tb3ZlVG8odCxyKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aD1uZXcgcTEsdGhpcy5zdWJQYXRocy5wdXNoKHRoaXMuY3VycmVudFBhdGgpLHRoaXMuY3VycmVudFBhdGgubW92ZVRvKHQsciksdGhpc31saW5lVG8odCxyKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5saW5lVG8odCxyKSx0aGlzfXF1YWRyYXRpY0N1cnZlVG8odCxyLG4saSl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGgucXVhZHJhdGljQ3VydmVUbyh0LHIsbixpKSx0aGlzfWJlemllckN1cnZlVG8odCxyLG4saSxvLGEpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLmJlemllckN1cnZlVG8odCxyLG4saSxvLGEpLHRoaXN9c3BsaW5lVGhydSh0KXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KHQpLHRoaXN9dG9TaGFwZXModCxyKXtmdW5jdGlvbiBuKHgpe2xldCBiPVtdO2ZvcihsZXQgUz0wLEM9eC5sZW5ndGg7UzxDO1MrKyl7bGV0IFA9eFtTXSxrPW5ldyBYYztrLmN1cnZlcz1QLmN1cnZlcyxiLnB1c2goayl9cmV0dXJuIGJ9ZnVuY3Rpb24gaSh4LGIpe2xldCBTPWIubGVuZ3RoLEM9ITE7Zm9yKGxldCBQPVMtMSxrPTA7azxTO1A9aysrKXtsZXQgTz1iW1BdLEQ9YltrXSxCPUQueC1PLngsST1ELnktTy55O2lmKE1hdGguYWJzKEkpPk51bWJlci5FUFNJTE9OKXtpZihJPDAmJihPPWJba10sQj0tQixEPWJbUF0sST0tSSkseC55PE8ueXx8eC55PkQueSljb250aW51ZTtpZih4Lnk9PT1PLnkpe2lmKHgueD09PU8ueClyZXR1cm4hMH1lbHNle2xldCBMPUkqKHgueC1PLngpLUIqKHgueS1PLnkpO2lmKEw9PT0wKXJldHVybiEwO2lmKEw8MCljb250aW51ZTtDPSFDfX1lbHNle2lmKHgueSE9PU8ueSljb250aW51ZTtpZihELng8PXgueCYmeC54PD1PLnh8fE8ueDw9eC54JiZ4Lng8PUQueClyZXR1cm4hMH19cmV0dXJuIEN9bGV0IG89JGMuaXNDbG9ja1dpc2UsYT10aGlzLnN1YlBhdGhzO2lmKGEubGVuZ3RoPT09MClyZXR1cm5bXTtpZihyPT09ITApcmV0dXJuIG4oYSk7bGV0IHMsbCxjLHU9W107aWYoYS5sZW5ndGg9PT0xKXJldHVybiBsPWFbMF0sYz1uZXcgWGMsYy5jdXJ2ZXM9bC5jdXJ2ZXMsdS5wdXNoKGMpLHU7bGV0IGg9IW8oYVswXS5nZXRQb2ludHMoKSk7aD10PyFoOmg7bGV0IGY9W10scD1bXSxkPVtdLGc9MCxfO3BbZ109dm9pZCAwLGRbZ109W107Zm9yKGxldCB4PTAsYj1hLmxlbmd0aDt4PGI7eCsrKWw9YVt4XSxfPWwuZ2V0UG9pbnRzKCkscz1vKF8pLHM9dD8hczpzLHM/KCFoJiZwW2ddJiZnKysscFtnXT17czpuZXcgWGMscDpffSxwW2ddLnMuY3VydmVzPWwuY3VydmVzLGgmJmcrKyxkW2ddPVtdKTpkW2ddLnB1c2goe2g6bCxwOl9bMF19KTtpZighcFswXSlyZXR1cm4gbihhKTtpZihwLmxlbmd0aD4xKXtsZXQgeD0hMSxiPVtdO2ZvcihsZXQgUz0wLEM9cC5sZW5ndGg7UzxDO1MrKylmW1NdPVtdO2ZvcihsZXQgUz0wLEM9cC5sZW5ndGg7UzxDO1MrKyl7bGV0IFA9ZFtTXTtmb3IobGV0IGs9MDtrPFAubGVuZ3RoO2srKyl7bGV0IE89UFtrXSxEPSEwO2ZvcihsZXQgQj0wO0I8cC5sZW5ndGg7QisrKWkoTy5wLHBbQl0ucCkmJihTIT09QiYmYi5wdXNoKHtmcm9tczpTLHRvczpCLGhvbGU6a30pLEQ/KEQ9ITEsZltCXS5wdXNoKE8pKTp4PSEwKTtEJiZmW1NdLnB1c2goTyl9fWIubGVuZ3RoPjAmJih4fHwoZD1mKSl9bGV0IHk7Zm9yKGxldCB4PTAsYj1wLmxlbmd0aDt4PGI7eCsrKXtjPXBbeF0ucyx1LnB1c2goYykseT1kW3hdO2ZvcihsZXQgUz0wLEM9eS5sZW5ndGg7UzxDO1MrKyljLmhvbGVzLnB1c2goeVtTXS5oKX1yZXR1cm4gdX19LFpmZT1uZXcgRmxvYXQzMkFycmF5KDEpLGQwcj1uZXcgSW50MzJBcnJheShaZmUuYnVmZmVyKSxFaHQ9Y2xhc3N7c3RhdGljIHRvSGFsZkZsb2F0KHQpe3Q+NjU1MDQmJihjb25zb2xlLndhcm4oIlRIUkVFLkRhdGFVdGlscy50b0hhbGZGbG9hdCgpOiB2YWx1ZSBleGNlZWRzIDY1NTA0LiIpLHQ9NjU1MDQpLFpmZVswXT10O2xldCByPWQwclswXSxuPXI+PjE2JjMyNzY4LGk9cj4+MTImMjA0NyxvPXI+PjIzJjI1NTtyZXR1cm4gbzwxMDM/bjpvPjE0Mj8obnw9MzE3NDQsbnw9KG89PTI1NT8wOjEpJiZyJjgzODg2MDcsbik6bzwxMTM/KGl8PTIwNDgsbnw9KGk+PjExNC1vKSsoaT4+MTEzLW8mMSksbik6KG58PW8tMTEyPDwxMHxpPj4xLG4rPWkmMSxuKX19LG0wcj0wLGcwcj0xLF8wcj0wLHkwcj0xLHYwcj0yO2Z1bmN0aW9uIHgwcihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NZXNoRmFjZU1hdGVyaWFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhbiBBcnJheSBpbnN0ZWFkLiIpLGV9ZnVuY3Rpb24gYjByKGU9W10pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk11bHRpTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuIiksZS5pc011bHRpTWF0ZXJpYWw9ITAsZS5tYXRlcmlhbHM9ZSxlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIGUuc2xpY2UoKX0sZX1mdW5jdGlvbiB3MHIoZSx0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Qb2ludENsb3VkIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzLiIpLG5ldyBpbShlLHQpfWZ1bmN0aW9uIFMwcihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlNwcml0ZS4iKSxuZXcgaU0oZSl9ZnVuY3Rpb24gTTByKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGVTeXN0ZW0gaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHMuIiksbmV3IGltKGUsdCl9ZnVuY3Rpb24gRTByKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBvaW50Q2xvdWRNYXRlcmlhbCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50c01hdGVyaWFsLiIpLG5ldyBubShlKX1mdW5jdGlvbiBUMHIoZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGVCYXNpY01hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIiksbmV3IG5tKGUpfWZ1bmN0aW9uIEMwcihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbU1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIiksbmV3IG5tKGUpfWZ1bmN0aW9uIEEwcihlLHQscil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVydGV4IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5WZWN0b3IzIGluc3RlYWQuIiksbmV3IGooZSx0LHIpfWZ1bmN0aW9uIFAwcihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkR5bmFtaWNCdWZmZXJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUoKS5zZXRVc2FnZSggVEhSRUUuRHluYW1pY0RyYXdVc2FnZSApIGluc3RlYWQuIiksbmV3IEplKGUsdCkuc2V0VXNhZ2UoVzMpfWZ1bmN0aW9uIEkwcihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQ4QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgYVUoZSx0KX1mdW5jdGlvbiBMMHIoZSx0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5VaW50OEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgc1UoZSx0KX1mdW5jdGlvbiBrMHIoZSx0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5VaW50OENsYW1wZWRBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBsVShlLHQpfWZ1bmN0aW9uIFIwcihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludDE2QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuSW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBjVShlLHQpfWZ1bmN0aW9uIE4wcihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQxNkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQxNkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IFgzKGUsdCl9ZnVuY3Rpb24gRDByKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IHVVKGUsdCl9ZnVuY3Rpb24gTzByKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuVWludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgJDMoZSx0KX1mdW5jdGlvbiB6MHIoZSx0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5GbG9hdDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IHhlKGUsdCl9ZnVuY3Rpb24gRjByKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRmxvYXQ2NEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBmVShlLHQpfWhzLmNyZWF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBjb25zb2xlLmxvZygiVEhSRUUuQ3VydmUuY3JlYXRlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCIpLGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaHMucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUucHJvdG90eXBlLmdldFBvaW50PXQsZX07cTEucHJvdG90eXBlLmZyb21Qb2ludHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGF0aDogLmZyb21Qb2ludHMoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUG9pbnRzKCkuIiksdGhpcy5zZXRGcm9tUG9pbnRzKGUpfTtmdW5jdGlvbiBCMHIoZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQXhpc0hlbHBlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkF4ZXNIZWxwZXIuIiksbmV3IHlNKGUpfWZ1bmN0aW9uIEgwcihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJvdW5kaW5nQm94SGVscGVyIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIENyZWF0aW5nIGEgVEhSRUUuQm94SGVscGVyIGluc3RlYWQuIiksbmV3IF9NKGUsdCl9ZnVuY3Rpb24gVjByKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRWRnZXNIZWxwZXIgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkVkZ2VzR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgQ2EobmV3IGk2KGUuZ2VvbWV0cnkpLG5ldyBxaSh7Y29sb3I6dCE9PXZvaWQgMD90OjE2Nzc3MjE1fSkpfXFVLnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HcmlkSGVscGVyOiBzZXRDb2xvcnMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLCBwYXNzIHRoZW0gaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQuIil9O1VVLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2VsZXRvbkhlbHBlcjogdXBkYXRlKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIGNhbGxlZC4iKX07ZnVuY3Rpb24gVTByKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2lyZWZyYW1lSGVscGVyIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5XaXJlZnJhbWVHZW9tZXRyeSBpbnN0ZWFkLiIpLG5ldyBDYShuZXcgaDYoZS5nZW9tZXRyeSksbmV3IHFpKHtjb2xvcjp0IT09dm9pZCAwP3Q6MTY3NzcyMTV9KSl9dGEucHJvdG90eXBlLmV4dHJhY3RVcmxCYXNlPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxvYWRlcjogLmV4dHJhY3RVcmxCYXNlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkxvYWRlclV0aWxzLmV4dHJhY3RVcmxCYXNlKCkgaW5zdGVhZC4iKSxwTS5leHRyYWN0VXJsQmFzZShlKX07dGEuSGFuZGxlcnM9e2FkZDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuYWRkKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmFkZEhhbmRsZXIoKSBpbnN0ZWFkLiIpfSxnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmdldCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5nZXRIYW5kbGVyKCkgaW5zdGVhZC4iKX19O2Z1bmN0aW9uIHEwcihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5YSFJMb2FkZXIgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5GaWxlTG9hZGVyLiIpLG5ldyBLYyhlKX1mdW5jdGlvbiBHMHIoZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQmluYXJ5VGV4dHVyZUxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkRhdGFUZXh0dXJlTG9hZGVyLiIpLG5ldyBNVShlKX0kMC5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcihlKX07JDAucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfTskMC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveChlKX07JDAucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKGUpfTtRby5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcihlKX07UW8ucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpLHRoaXMuaXNFbXB0eSgpfTtRby5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveChlKX07UW8ucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uU3BoZXJlPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoZSl9O1FvLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5zaXplKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0U2l6ZSgpLiIpLHRoaXMuZ2V0U2l6ZShlKX07S2YucHJvdG90eXBlLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU3BoZXJlOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9O04xLnByb3RvdHlwZS5zZXRGcm9tTWF0cml4PWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkZydXN0dW06IC5zZXRGcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoKS4iKSx0aGlzLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KGUpfTtWVS5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIoZSl9O2tpLnByb3RvdHlwZS5mbGF0dGVuVG9BcnJheU9mZnNldD1mdW5jdGlvbihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIiksdGhpcy50b0FycmF5KGUsdCl9O2tpLnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjM9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXgzKCBtYXRyaXggKSBpbnN0ZWFkLiIpLGUuYXBwbHlNYXRyaXgzKHRoaXMpfTtraS5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtraS5wcm90b3R5cGUuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhdHRyaWJ1dGUuYXBwbHlNYXRyaXgzKCBtYXRyaXggKSBpbnN0ZWFkLiIpLGUuYXBwbHlNYXRyaXgzKHRoaXMpfTtraS5wcm90b3R5cGUuYXBwbHlUb1ZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07a2kucHJvdG90eXBlLmdldEludmVyc2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weShlKS5pbnZlcnQoKX07TWUucHJvdG90eXBlLmV4dHJhY3RQb3NpdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZXh0cmFjdFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuY29weVBvc2l0aW9uKCkuIiksdGhpcy5jb3B5UG9zaXRpb24oZSl9O01lLnByb3RvdHlwZS5mbGF0dGVuVG9BcnJheU9mZnNldD1mdW5jdGlvbihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIiksdGhpcy50b0FycmF5KGUsdCl9O01lLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRQb3NpdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBWZWN0b3IzLnNldEZyb21NYXRyaXhQb3NpdGlvbiggbWF0cml4ICkgaW5zdGVhZC4iKSxuZXcgaigpLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywzKX07TWUucHJvdG90eXBlLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oZSl9O01lLnByb3RvdHlwZS5tdWx0aXBseVRvQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVRvQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtNZS5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSxlLmFwcGx5TWF0cml4NCh0aGlzKX07TWUucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yND1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksZS5hcHBseU1hdHJpeDQodGhpcyl9O01lLnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O01lLnByb3RvdHlwZS5yb3RhdGVBeGlzPWZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy50cmFuc2Zvcm1EaXJlY3Rpb24oIG1hdHJpeCApIGluc3RlYWQuIiksZS50cmFuc2Zvcm1EaXJlY3Rpb24odGhpcyl9O01lLnByb3RvdHlwZS5jcm9zc1ZlY3Rvcj1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSxlLmFwcGx5TWF0cml4NCh0aGlzKX07TWUucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtNZS5wcm90b3R5cGUucm90YXRlWD1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVYKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07TWUucHJvdG90eXBlLnJvdGF0ZVk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O01lLnByb3RvdHlwZS5yb3RhdGVaPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVooKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtNZS5wcm90b3R5cGUucm90YXRlQnlBeGlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUJ5QXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9O01lLnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksZS5hcHBseU1hdHJpeDQodGhpcyl9O01lLnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtNZS5wcm90b3R5cGUubWFrZUZydXN0dW09ZnVuY3Rpb24oZSx0LHIsbixpLG8pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlRnJ1c3R1bSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAubWFrZVBlcnNwZWN0aXZlKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApIGluc3RlYWQuIiksdGhpcy5tYWtlUGVyc3BlY3RpdmUoZSx0LG4scixpLG8pfTtNZS5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KGUpLmludmVydCgpfTtqYy5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25MaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAuaXNJbnRlcnNlY3Rpb25MaW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0xpbmUoKS4iKSx0aGlzLmludGVyc2VjdHNMaW5lKGUpfTt2aS5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgaXMgbm93IHZlY3Rvci5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24gKSBpbnN0ZWFkLiIpLGUuYXBwbHlRdWF0ZXJuaW9uKHRoaXMpfTt2aS5wcm90b3R5cGUuaW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfTtaZi5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KGUpfTtaZi5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25QbGFuZT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1BsYW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzUGxhbmUoZSl9O1pmLnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoZSl9O2FpLnByb3RvdHlwZS5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5hcmVhKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QXJlYSgpLiIpLHRoaXMuZ2V0QXJlYSgpfTthaS5wcm90b3R5cGUuYmFyeWNvb3JkRnJvbVBvaW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSx0aGlzLmdldEJhcnljb29yZChlLHQpfTthaS5wcm90b3R5cGUubWlkcG9pbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludChlKX07YWkucHJvdG90eXBlbm9ybWFsPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubm9ybWFsKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Tm9ybWFsKCkuIiksdGhpcy5nZXROb3JtYWwoZSl9O2FpLnByb3RvdHlwZS5wbGFuZT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLnBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0UGxhbmUoKS4iKSx0aGlzLmdldFBsYW5lKGUpfTthaS5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24oZSx0LHIsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLGFpLmdldEJhcnljb29yZChlLHQscixuLGkpfTthaS5ub3JtYWw9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSxhaS5nZXROb3JtYWwoZSx0LHIsbil9O1hjLnByb3RvdHlwZS5leHRyYWN0QWxsUG9pbnRzPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cmFjdEFsbFBvaW50cygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZXh0cmFjdFBvaW50cygpIGluc3RlYWQuIiksdGhpcy5leHRyYWN0UG9pbnRzKGUpfTtYYy5wcm90b3R5cGUuZXh0cnVkZT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJ1ZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXh0cnVkZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgdWgodGhpcyxlKX07WGMucHJvdG90eXBlLm1ha2VHZW9tZXRyeT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLm1ha2VHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBTaGFwZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgWTAodGhpcyxlKX07THQucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQscil9O0x0LnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyhlKX07THQucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfTtqLnByb3RvdHlwZS5zZXRFdWxlckZyb21Sb3RhdGlvbk1hdHJpeD1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21Sb3RhdGlvbk1hdHJpeCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFdWxlci5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBpbnN0ZWFkLiIpfTtqLnByb3RvdHlwZS5zZXRFdWxlckZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVF1YXRlcm5pb24oKSBpbnN0ZWFkLiIpfTtqLnByb3RvdHlwZS5nZXRQb3NpdGlvbkZyb21NYXRyaXg9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFBvc2l0aW9uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhQb3NpdGlvbigpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUpfTtqLnByb3RvdHlwZS5nZXRTY2FsZUZyb21NYXRyaXg9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFNjYWxlRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhTY2FsZSgpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeFNjYWxlKGUpfTtqLnByb3RvdHlwZS5nZXRDb2x1bW5Gcm9tTWF0cml4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldENvbHVtbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4Q29sdW1uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsZSl9O2oucHJvdG90eXBlLmFwcGx5UHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlQcm9qZWN0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5hcHBseU1hdHJpeDQoIG0gKSBpbnN0ZWFkLiIpLHRoaXMuYXBwbHlNYXRyaXg0KGUpfTtqLnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0LHIpfTtqLnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyhlKX07ai5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9O2VuLnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0LHIpfTtlbi5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9O29yLnByb3RvdHlwZS5nZXRDaGlsZEJ5TmFtZT1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldENoaWxkQnlOYW1lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0T2JqZWN0QnlOYW1lKCkuIiksdGhpcy5nZXRPYmplY3RCeU5hbWUoZSl9O29yLnByb3RvdHlwZS5yZW5kZXJEZXB0aD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfTtvci5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnRyYW5zbGF0ZU9uQXhpcyggYXhpcywgZGlzdGFuY2UgKSBpbnN0ZWFkLiIpLHRoaXMudHJhbnNsYXRlT25BeGlzKHQsZSl9O29yLnByb3RvdHlwZS5nZXRXb3JsZFJvdGF0aW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFJvdGF0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLk9iamVjdDNELmdldFdvcmxkUXVhdGVybmlvbiggdGFyZ2V0ICkgaW5zdGVhZC4iKX07b3IucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NChlKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMob3IucHJvdG90eXBlLHtldWxlck9yZGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyfSxzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyPWV9fSx1c2VRdWF0ZXJuaW9uOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfX19KTtlaS5wcm90b3R5cGUuc2V0RHJhd01vZGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuc2V0RHJhd01vZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlaS5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksU2ZlfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuZHJhd01vZGUgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4gVHJhbnNmb3JtIHlvdXIgZ2VvbWV0cnkgdmlhIEJ1ZmZlckdlb21ldHJ5VXRpbHMudG9UcmlhbmdsZXNEcmF3TW9kZSgpIGlmIG5lY2Vzc2FyeS4iKX19fSk7b00ucHJvdG90eXBlLmluaXRCb25lcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoOiBpbml0Qm9uZXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtWaS5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbihlLHQpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx0IT09dm9pZCAwJiYodGhpcy5maWxtR2F1Z2U9dCksdGhpcy5zZXRGb2NhbExlbmd0aChlKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRGwucHJvdG90eXBlLHtvbmx5U2hhZG93OntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAub25seVNoYWRvdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93Q2FtZXJhRm92OntzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZvdiBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZm92LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mb3Y9ZX19LHNoYWRvd0NhbWVyYUxlZnQ6e3NldDpmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTGVmdCBpcyBub3cgLnNoYWRvdy5jYW1lcmEubGVmdC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubGVmdD1lfX0sc2hhZG93Q2FtZXJhUmlnaHQ6e3NldDpmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhUmlnaHQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnJpZ2h0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5yaWdodD1lfX0sc2hhZG93Q2FtZXJhVG9wOntzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVRvcCBpcyBub3cgLnNoYWRvdy5jYW1lcmEudG9wLiIpLHRoaXMuc2hhZG93LmNhbWVyYS50b3A9ZX19LHNoYWRvd0NhbWVyYUJvdHRvbTp7c2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFCb3R0b20gaXMgbm93IC5zaGFkb3cuY2FtZXJhLmJvdHRvbS4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuYm90dG9tPWV9fSxzaGFkb3dDYW1lcmFOZWFyOntzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYU5lYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLm5lYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLm5lYXI9ZX19LHNoYWRvd0NhbWVyYUZhcjp7c2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZmFyPWV9fSxzaGFkb3dDYW1lcmFWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVmlzaWJsZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkNhbWVyYUhlbHBlciggbGlnaHQuc2hhZG93LmNhbWVyYSApIGluc3RlYWQuIil9fSxzaGFkb3dCaWFzOntzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0JpYXMgaXMgbm93IC5zaGFkb3cuYmlhcy4iKSx0aGlzLnNoYWRvdy5iaWFzPWV9fSxzaGFkb3dEYXJrbmVzczp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0RhcmtuZXNzIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dNYXBXaWR0aDp7c2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBXaWR0aCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLndpZHRoLiIpLHRoaXMuc2hhZG93Lm1hcFNpemUud2lkdGg9ZX19LHNoYWRvd01hcEhlaWdodDp7c2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBIZWlnaHQgaXMgbm93IC5zaGFkb3cubWFwU2l6ZS5oZWlnaHQuIiksdGhpcy5zaGFkb3cubWFwU2l6ZS5oZWlnaHQ9ZX19fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSmUucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuIiksdGhpcy5hcnJheS5sZW5ndGh9fSxkeW5hbWljOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnVzYWdlPT09VzN9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShXMyl9fX0pO0plLnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKGU9PT0hMD9XMzpHMyksdGhpc307SmUucHJvdG90eXBlLmNvcHlJbmRpY2VzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5jb3B5SW5kaWNlc0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sSmUucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX07UGUucHJvdG90eXBlLmFkZEluZGV4PWZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRJbmRleCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEluZGV4KCkuIiksdGhpcy5zZXRJbmRleChlKX07UGUucHJvdG90eXBlLmFkZEF0dHJpYnV0ZT1mdW5jdGlvbihlLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0QXR0cmlidXRlKCkuIiksISh0JiZ0LmlzQnVmZmVyQXR0cmlidXRlKSYmISh0JiZ0LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpPyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4iKSx0aGlzLnNldEF0dHJpYnV0ZShlLG5ldyBKZShhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpOmU9PT0iaW5kZXgiPyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LmFkZEF0dHJpYnV0ZTogVXNlIC5zZXRJbmRleCgpIGZvciBpbmRleCBhdHRyaWJ1dGUuIiksdGhpcy5zZXRJbmRleCh0KSx0aGlzKTp0aGlzLnNldEF0dHJpYnV0ZShlLHQpfTtQZS5wcm90b3R5cGUuYWRkRHJhd0NhbGw9ZnVuY3Rpb24oZSx0LHIpe3IhPT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIG5vIGxvbmdlciBzdXBwb3J0cyBpbmRleE9mZnNldC4iKSxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBpcyBub3cgLmFkZEdyb3VwKCkuIiksdGhpcy5hZGRHcm91cChlLHQpfTtQZS5wcm90b3R5cGUuY2xlYXJEcmF3Q2FsbHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY2xlYXJEcmF3Q2FsbHMoKSBpcyBub3cgLmNsZWFyR3JvdXBzKCkuIiksdGhpcy5jbGVhckdyb3VwcygpfTtQZS5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtQZS5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAucmVtb3ZlQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZGVsZXRlQXR0cmlidXRlKCkuIiksdGhpcy5kZWxldGVBdHRyaWJ1dGUoZSl9O1BlLnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbihlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQoZSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFBlLnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSk7ZW0ucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5zZXREeW5hbWljKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRVc2FnZSgpIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShlPT09ITA/VzM6RzMpLHRoaXN9O2VtLnByb3RvdHlwZS5zZXRBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX07dWgucHJvdG90eXBlLmdldEFycmF5cz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmdldEFycmF5cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9O3VoLnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTt1aC5wcm90b3R5cGUuYWRkU2hhcGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O3EwLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmU6IC5kaXNwb3NlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07bU0ucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLm9uVXBkYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIiksdGhpc307T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVWkucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyBuZX19LHNoYWRpbmc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9ZT09PUNodH19LHN0ZW5jaWxNYXNrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFza30sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIiksdGhpcy5zdGVuY2lsRnVuY01hc2s9ZX19LHZlcnRleFRhbmdlbnRzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhzaC5wcm90b3R5cGUse2Rlcml2YXRpdmVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc30sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPWV9fX0pO3JuLnByb3RvdHlwZS5jbGVhclRhcmdldD1mdW5jdGlvbihlLHQscixuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jbGVhclRhcmdldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0UmVuZGVyVGFyZ2V0KCkgYW5kIC5jbGVhcigpIGluc3RlYWQuIiksdGhpcy5zZXRSZW5kZXJUYXJnZXQoZSksdGhpcy5jbGVhcih0LHIsbil9O3JuLnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFuaW1hdGUoKSBpcyBub3cgLnNldEFuaW1hdGlvbkxvb3AoKS4iKSx0aGlzLnNldEFuaW1hdGlvbkxvb3AoZSl9O3JuLnByb3RvdHlwZS5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpLHRoaXMuZ2V0UmVuZGVyVGFyZ2V0KCl9O3JuLnByb3RvdHlwZS5nZXRNYXhBbmlzb3Ryb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldE1heEFuaXNvdHJvcHkoKSBpcyBub3cgLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCkuIiksdGhpcy5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpfTtybi5wcm90b3R5cGUuZ2V0UHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldFByZWNpc2lvbigpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnByZWNpc2lvbi4iKSx0aGlzLmNhcGFiaWxpdGllcy5wcmVjaXNpb259O3JuLnByb3RvdHlwZS5yZXNldEdMU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLiIpLHRoaXMuc3RhdGUucmVzZXQoKX07cm4ucHJvdG90eXBlLnN1cHBvcnRzRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0Zsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKX07cm4ucHJvdG90eXBlLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKX07cm4ucHJvdG90eXBlLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfTtybi5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKX07cm4ucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUFZSVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfTtybi5wcm90b3R5cGUuc3VwcG9ydHNCbGVuZE1pbk1heD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiRVhUX2JsZW5kX21pbm1heCIpfTtybi5wcm90b3R5cGUuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1ZlcnRleFRleHR1cmVzKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXMuIiksdGhpcy5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXN9O3JuLnByb3RvdHlwZS5zdXBwb3J0c0luc3RhbmNlZEFycmF5cz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0luc3RhbmNlZEFycmF5cygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKX07cm4ucHJvdG90eXBlLmVuYWJsZVNjaXNzb3JUZXN0PWZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpLHRoaXMuc2V0U2Npc3NvclRlc3QoZSl9O3JuLnByb3RvdHlwZS5pbml0TWF0ZXJpYWw9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5pbml0TWF0ZXJpYWwoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtybi5wcm90b3R5cGUuYWRkUHJlUGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUHJlUGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07cm4ucHJvdG90eXBlLmFkZFBvc3RQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07cm4ucHJvdG90eXBlLnVwZGF0ZVNoYWRvd01hcD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnVwZGF0ZVNoYWRvd01hcCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O3JuLnByb3RvdHlwZS5zZXRGYWNlQ3VsbGluZz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldEZhY2VDdWxsaW5nKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07cm4ucHJvdG90eXBlLmFsbG9jVGV4dHVyZVVuaXQ9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07cm4ucHJvdG90eXBlLnNldFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07cm4ucHJvdG90eXBlLnNldFRleHR1cmUyRD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUyRCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O3JuLnByb3RvdHlwZS5zZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmVDdWJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07cm4ucHJvdG90eXBlLmdldEFjdGl2ZU1pcE1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEFjdGl2ZU1pcE1hcExldmVsKCkgaXMgbm93IC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLiIpLHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocm4ucHJvdG90eXBlLHtzaGFkb3dNYXBFbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAuZW5hYmxlZH0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4iKSx0aGlzLnNoYWRvd01hcC5lbmFibGVkPWV9fSxzaGFkb3dNYXBUeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZX0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcFR5cGUgaXMgbm93IC5zaGFkb3dNYXAudHlwZS4iKSx0aGlzLnNoYWRvd01hcC50eXBlPWV9fSxzaGFkb3dNYXBDdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LGNvbnRleHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZ2V0Q29udGV4dCgpIGluc3RlYWQuIiksdGhpcy5nZXRDb250ZXh0KCl9fSx2cjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnZyIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnhyIiksdGhpcy54cn19LGdhbW1hSW5wdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUlucHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCB0aGUgZW5jb2RpbmcgZm9yIHRleHR1cmVzIHZpYSBUZXh0dXJlLmVuY29kaW5nIGluc3RlYWQuIiksITF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKX19LGdhbW1hT3V0cHV0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hT3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCBXZWJHTFJlbmRlcmVyLm91dHB1dEVuY29kaW5nIGluc3RlYWQuIiksdGhpcy5vdXRwdXRFbmNvZGluZz1lPT09ITA/WW46UWR9fSx0b25lTWFwcGluZ1doaXRlUG9pbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC50b25lTWFwcGluZ1doaXRlUG9pbnQgaGFzIGJlZW4gcmVtb3ZlZC4iKSwxfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC50b25lTWFwcGluZ1doaXRlUG9pbnQgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LGdhbW1hRmFjdG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFGYWN0b3IgaGFzIGJlZW4gcmVtb3ZlZC4iKSwyfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUZhY3RvciBoYXMgYmVlbiByZW1vdmVkLiIpfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhxZmUucHJvdG90eXBlLHtjdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyUmV2ZXJzZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LHJlbmRlclNpbmdsZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fX0pO2Z1bmN0aW9uIFcwcihlLHQscil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXRDdWJlKCB3aWR0aCwgaGVpZ2h0LCBvcHRpb25zICkgaXMgbm93IFdlYkdMQ3ViZVJlbmRlclRhcmdldCggc2l6ZSwgb3B0aW9ucyApLiIpLG5ldyBKMyhlLHIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNzLnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPWV9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9ZX19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9ZX19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24oZSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9ZX19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PWV9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PWV9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PWV9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKGUpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PWV9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT1lfX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1lfX19KTtrNi5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihlKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4iKTtsZXQgdD10aGlzO3JldHVybiBuZXcga1UoKS5sb2FkKGUsZnVuY3Rpb24obil7dC5zZXRCdWZmZXIobil9KSx0aGlzfTtEVS5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvQW5hbHlzZXI6IC5nZXREYXRhKCkgaXMgbm93IC5nZXRGcmVxdWVuY3lEYXRhKCkuIiksdGhpcy5nZXRGcmVxdWVuY3lEYXRhKCl9O1ozLnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLiIpLHRoaXMudXBkYXRlKGUsdCl9O1ozLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAuY2xlYXIoKSBpcyBub3cgLnJlbmRlclRhcmdldC5jbGVhcigpLiIpLHRoaXMucmVuZGVyVGFyZ2V0LmNsZWFyKGUsdCxyLG4pfTskZi5jcm9zc09yaWdpbj12b2lkIDA7JGYubG9hZFRleHR1cmU9ZnVuY3Rpb24oZSx0LHIsbil7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5UZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtsZXQgaT1uZXcgRVU7aS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtsZXQgbz1pLmxvYWQoZSxyLHZvaWQgMCxuKTtyZXR1cm4gdCYmKG8ubWFwcGluZz10KSxvfTskZi5sb2FkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oZSx0LHIsbil7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ3ViZVRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2xldCBpPW5ldyBTVTtpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2xldCBvPWkubG9hZChlLHIsdm9pZCAwLG4pO3JldHVybiB0JiYoby5tYXBwaW5nPXQpLG99OyRmLmxvYWRDb21wcmVzc2VkVGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX07JGYubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O2Z1bmN0aW9uIFkwcigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkNhbnZhc1JlbmRlcmVyIGhhcyBiZWVuIHJlbW92ZWQiKX1mdW5jdGlvbiBqMHIoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5KU09OTG9hZGVyIGhhcyBiZWVuIHJlbW92ZWQuIil9dmFyIFgwcj17Y3JlYXRlTXVsdGlNYXRlcmlhbE9iamVjdDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGRldGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9LGF0dGFjaDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lVXRpbHMgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS91dGlscy9TY2VuZVV0aWxzLmpzIil9fTtmdW5jdGlvbiAkMHIoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5MZW5zRmxhcmUgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS9vYmplY3RzL0xlbnNmbGFyZS5qcyIpfWZ1bmN0aW9uIEswcigpe3JldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5QYXJhbWV0cmljR2VvbWV0cnkgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS9nZW9tZXRyaWVzL1BhcmFtZXRyaWNHZW9tZXRyeS5qcyIpLG5ldyBQZX1mdW5jdGlvbiBaMHIoKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuVGV4dEdlb21ldHJ5IGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qc20vZ2VvbWV0cmllcy9UZXh0R2VvbWV0cnkuanMiKSxuZXcgUGV9ZnVuY3Rpb24gSjByKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRm9udExvYWRlciBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL2xvYWRlcnMvRm9udExvYWRlci5qcyIpfWZ1bmN0aW9uIFEwcigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkZvbnQgaGFzIGJlZW4gbW92ZWQgdG8gL2V4YW1wbGVzL2pzbS9sb2FkZXJzL0ZvbnRMb2FkZXIuanMiKX1mdW5jdGlvbiB0X3IoKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbW1lZGlhdGVSZW5kZXJPYmplY3QgaGFzIGJlZW4gcmVtb3ZlZC4iKX10eXBlb2YgX19USFJFRV9ERVZUT09MU19fIT0idW5kZWZpbmVkIiYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJyZWdpc3RlciIse2RldGFpbDp7cmV2aXNpb246R1V9fSkpO3R5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiYod2luZG93Ll9fVEhSRUVfXz9jb25zb2xlLndhcm4oIldBUk5JTkc6IE11bHRpcGxlIGluc3RhbmNlcyBvZiBUaHJlZS5qcyBiZWluZyBpbXBvcnRlZC4iKTp3aW5kb3cuX19USFJFRV9fPUdVKTt2YXIgSmZlPXt0eXBlOiJjaGFuZ2UifSxCaHQ9e3R5cGU6InN0YXJ0In0sUWZlPXt0eXBlOiJlbmQifSwkVT1jbGFzcyBleHRlbmRzIFZze2NvbnN0cnVjdG9yKHQscil7c3VwZXIoKSxyPT09dm9pZCAwJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9yYml0Q29udHJvbHM6IFRoZSBzZWNvbmQgcGFyYW1ldGVyICJkb21FbGVtZW50IiBpcyBub3cgbWFuZGF0b3J5LicpLHI9PT1kb2N1bWVudCYmY29uc29sZS5lcnJvcignVEhSRUUuT3JiaXRDb250cm9sczogImRvY3VtZW50IiBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlIHRhcmdldCAiZG9tRWxlbWVudCIuIFBsZWFzZSB1c2UgInJlbmRlcmVyLmRvbUVsZW1lbnQiIGluc3RlYWQuJyksdGhpcy5vYmplY3Q9dCx0aGlzLmRvbUVsZW1lbnQ9cix0aGlzLmRvbUVsZW1lbnQuc3R5bGUudG91Y2hBY3Rpb249Im5vbmUiLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnRhcmdldD1uZXcgaix0aGlzLm1pbkRpc3RhbmNlPTAsdGhpcy5tYXhEaXN0YW5jZT0xLzAsdGhpcy5taW5ab29tPTAsdGhpcy5tYXhab29tPTEvMCx0aGlzLm1pblBvbGFyQW5nbGU9MCx0aGlzLm1heFBvbGFyQW5nbGU9TWF0aC5QSSx0aGlzLm1pbkF6aW11dGhBbmdsZT0tMS8wLHRoaXMubWF4QXppbXV0aEFuZ2xlPTEvMCx0aGlzLmVuYWJsZURhbXBpbmc9ITEsdGhpcy5kYW1waW5nRmFjdG9yPS4wNSx0aGlzLmVuYWJsZVpvb209ITAsdGhpcy56b29tU3BlZWQ9MSx0aGlzLmVuYWJsZVJvdGF0ZT0hMCx0aGlzLnJvdGF0ZVNwZWVkPTEsdGhpcy5lbmFibGVQYW49ITAsdGhpcy5wYW5TcGVlZD0xLHRoaXMuc2NyZWVuU3BhY2VQYW5uaW5nPSEwLHRoaXMua2V5UGFuU3BlZWQ9Nyx0aGlzLmF1dG9Sb3RhdGU9ITEsdGhpcy5hdXRvUm90YXRlU3BlZWQ9Mix0aGlzLmtleXM9e0xFRlQ6IkFycm93TGVmdCIsVVA6IkFycm93VXAiLFJJR0hUOiJBcnJvd1JpZ2h0IixCT1RUT006IkFycm93RG93biJ9LHRoaXMubW91c2VCdXR0b25zPXtMRUZUOkswLlJPVEFURSxNSURETEU6SzAuRE9MTFksUklHSFQ6SzAuUEFOfSx0aGlzLnRvdWNoZXM9e09ORTpaMC5ST1RBVEUsVFdPOlowLkRPTExZX1BBTn0sdGhpcy50YXJnZXQwPXRoaXMudGFyZ2V0LmNsb25lKCksdGhpcy5wb3NpdGlvbjA9dGhpcy5vYmplY3QucG9zaXRpb24uY2xvbmUoKSx0aGlzLnpvb20wPXRoaXMub2JqZWN0Lnpvb20sdGhpcy5fZG9tRWxlbWVudEtleUV2ZW50cz1udWxsLHRoaXMuZ2V0UG9sYXJBbmdsZT1mdW5jdGlvbigpe3JldHVybiBzLnBoaX0sdGhpcy5nZXRBemltdXRoYWxBbmdsZT1mdW5jdGlvbigpe3JldHVybiBzLnRoZXRhfSx0aGlzLmdldERpc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2JqZWN0LnBvc2l0aW9uLmRpc3RhbmNlVG8odGhpcy50YXJnZXQpfSx0aGlzLmxpc3RlblRvS2V5RXZlbnRzPWZ1bmN0aW9uKG50KXtudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIixmciksdGhpcy5fZG9tRWxlbWVudEtleUV2ZW50cz1udH0sdGhpcy5zYXZlU3RhdGU9ZnVuY3Rpb24oKXtuLnRhcmdldDAuY29weShuLnRhcmdldCksbi5wb3NpdGlvbjAuY29weShuLm9iamVjdC5wb3NpdGlvbiksbi56b29tMD1uLm9iamVjdC56b29tfSx0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7bi50YXJnZXQuY29weShuLnRhcmdldDApLG4ub2JqZWN0LnBvc2l0aW9uLmNvcHkobi5wb3NpdGlvbjApLG4ub2JqZWN0Lnpvb209bi56b29tMCxuLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksbi5kaXNwYXRjaEV2ZW50KEpmZSksbi51cGRhdGUoKSxvPWkuTk9ORX0sdGhpcy51cGRhdGU9ZnVuY3Rpb24oKXtsZXQgbnQ9bmV3IGosQ3Q9bmV3IHZpKCkuc2V0RnJvbVVuaXRWZWN0b3JzKHQudXAsbmV3IGooMCwxLDApKSxXdD1DdC5jbG9uZSgpLmludmVydCgpLGZlPW5ldyBqLGF0PW5ldyB2aSxzZT0yKk1hdGguUEk7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IENlPW4ub2JqZWN0LnBvc2l0aW9uO250LmNvcHkoQ2UpLnN1YihuLnRhcmdldCksbnQuYXBwbHlRdWF0ZXJuaW9uKEN0KSxzLnNldEZyb21WZWN0b3IzKG50KSxuLmF1dG9Sb3RhdGUmJm89PT1pLk5PTkUmJkQoaygpKSxuLmVuYWJsZURhbXBpbmc/KHMudGhldGErPWwudGhldGEqbi5kYW1waW5nRmFjdG9yLHMucGhpKz1sLnBoaSpuLmRhbXBpbmdGYWN0b3IpOihzLnRoZXRhKz1sLnRoZXRhLHMucGhpKz1sLnBoaSk7bGV0IFB0PW4ubWluQXppbXV0aEFuZ2xlLE50PW4ubWF4QXppbXV0aEFuZ2xlO3JldHVybiBpc0Zpbml0ZShQdCkmJmlzRmluaXRlKE50KSYmKFB0PC1NYXRoLlBJP1B0Kz1zZTpQdD5NYXRoLlBJJiYoUHQtPXNlKSxOdDwtTWF0aC5QST9OdCs9c2U6TnQ+TWF0aC5QSSYmKE50LT1zZSksUHQ8PU50P3MudGhldGE9TWF0aC5tYXgoUHQsTWF0aC5taW4oTnQscy50aGV0YSkpOnMudGhldGE9cy50aGV0YT4oUHQrTnQpLzI/TWF0aC5tYXgoUHQscy50aGV0YSk6TWF0aC5taW4oTnQscy50aGV0YSkpLHMucGhpPU1hdGgubWF4KG4ubWluUG9sYXJBbmdsZSxNYXRoLm1pbihuLm1heFBvbGFyQW5nbGUscy5waGkpKSxzLm1ha2VTYWZlKCkscy5yYWRpdXMqPWMscy5yYWRpdXM9TWF0aC5tYXgobi5taW5EaXN0YW5jZSxNYXRoLm1pbihuLm1heERpc3RhbmNlLHMucmFkaXVzKSksbi5lbmFibGVEYW1waW5nPT09ITA/bi50YXJnZXQuYWRkU2NhbGVkVmVjdG9yKHUsbi5kYW1waW5nRmFjdG9yKTpuLnRhcmdldC5hZGQodSksbnQuc2V0RnJvbVNwaGVyaWNhbChzKSxudC5hcHBseVF1YXRlcm5pb24oV3QpLENlLmNvcHkobi50YXJnZXQpLmFkZChudCksbi5vYmplY3QubG9va0F0KG4udGFyZ2V0KSxuLmVuYWJsZURhbXBpbmc9PT0hMD8obC50aGV0YSo9MS1uLmRhbXBpbmdGYWN0b3IsbC5waGkqPTEtbi5kYW1waW5nRmFjdG9yLHUubXVsdGlwbHlTY2FsYXIoMS1uLmRhbXBpbmdGYWN0b3IpKToobC5zZXQoMCwwLDApLHUuc2V0KDAsMCwwKSksYz0xLGh8fGZlLmRpc3RhbmNlVG9TcXVhcmVkKG4ub2JqZWN0LnBvc2l0aW9uKT5hfHw4KigxLWF0LmRvdChuLm9iamVjdC5xdWF0ZXJuaW9uKSk+YT8obi5kaXNwYXRjaEV2ZW50KEpmZSksZmUuY29weShuLm9iamVjdC5wb3NpdGlvbiksYXQuY29weShuLm9iamVjdC5xdWF0ZXJuaW9uKSxoPSExLCEwKTohMX19KCksdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7bi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixJdCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixodCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLGllKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLGFyKSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHd0KSxuLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixrdCksbi5fZG9tRWxlbWVudEtleUV2ZW50cyE9PW51bGwmJm4uX2RvbUVsZW1lbnRLZXlFdmVudHMucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZnIpfTtsZXQgbj10aGlzLGk9e05PTkU6LTEsUk9UQVRFOjAsRE9MTFk6MSxQQU46MixUT1VDSF9ST1RBVEU6MyxUT1VDSF9QQU46NCxUT1VDSF9ET0xMWV9QQU46NSxUT1VDSF9ET0xMWV9ST1RBVEU6Nn0sbz1pLk5PTkUsYT0xZS02LHM9bmV3IGdNLGw9bmV3IGdNLGM9MSx1PW5ldyBqLGg9ITEsZj1uZXcgTHQscD1uZXcgTHQsZD1uZXcgTHQsZz1uZXcgTHQsXz1uZXcgTHQseT1uZXcgTHQseD1uZXcgTHQsYj1uZXcgTHQsUz1uZXcgTHQsQz1bXSxQPXt9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gMipNYXRoLlBJLzYwLzYwKm4uYXV0b1JvdGF0ZVNwZWVkfWZ1bmN0aW9uIE8oKXtyZXR1cm4gTWF0aC5wb3coLjk1LG4uem9vbVNwZWVkKX1mdW5jdGlvbiBEKG50KXtsLnRoZXRhLT1udH1mdW5jdGlvbiBCKG50KXtsLnBoaS09bnR9bGV0IEk9ZnVuY3Rpb24oKXtsZXQgbnQ9bmV3IGo7cmV0dXJuIGZ1bmN0aW9uKFd0LGZlKXtudC5zZXRGcm9tTWF0cml4Q29sdW1uKGZlLDApLG50Lm11bHRpcGx5U2NhbGFyKC1XdCksdS5hZGQobnQpfX0oKSxMPWZ1bmN0aW9uKCl7bGV0IG50PW5ldyBqO3JldHVybiBmdW5jdGlvbihXdCxmZSl7bi5zY3JlZW5TcGFjZVBhbm5pbmc9PT0hMD9udC5zZXRGcm9tTWF0cml4Q29sdW1uKGZlLDEpOihudC5zZXRGcm9tTWF0cml4Q29sdW1uKGZlLDApLG50LmNyb3NzVmVjdG9ycyhuLm9iamVjdC51cCxudCkpLG50Lm11bHRpcGx5U2NhbGFyKFd0KSx1LmFkZChudCl9fSgpLFI9ZnVuY3Rpb24oKXtsZXQgbnQ9bmV3IGo7cmV0dXJuIGZ1bmN0aW9uKFd0LGZlKXtsZXQgYXQ9bi5kb21FbGVtZW50O2lmKG4ub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmEpe2xldCBzZT1uLm9iamVjdC5wb3NpdGlvbjtudC5jb3B5KHNlKS5zdWIobi50YXJnZXQpO2xldCBRdD1udC5sZW5ndGgoKTtRdCo9TWF0aC50YW4obi5vYmplY3QuZm92LzIqTWF0aC5QSS8xODApLEkoMipXdCpRdC9hdC5jbGllbnRIZWlnaHQsbi5vYmplY3QubWF0cml4KSxMKDIqZmUqUXQvYXQuY2xpZW50SGVpZ2h0LG4ub2JqZWN0Lm1hdHJpeCl9ZWxzZSBuLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8oSShXdCoobi5vYmplY3QucmlnaHQtbi5vYmplY3QubGVmdCkvbi5vYmplY3Quem9vbS9hdC5jbGllbnRXaWR0aCxuLm9iamVjdC5tYXRyaXgpLEwoZmUqKG4ub2JqZWN0LnRvcC1uLm9iamVjdC5ib3R0b20pL24ub2JqZWN0Lnpvb20vYXQuY2xpZW50SGVpZ2h0LG4ub2JqZWN0Lm1hdHJpeCkpOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIHBhbiBkaXNhYmxlZC4iKSxuLmVuYWJsZVBhbj0hMSl9fSgpO2Z1bmN0aW9uIEYobnQpe24ub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmE/Yy89bnQ6bi5vYmplY3QuaXNPcnRob2dyYXBoaWNDYW1lcmE/KG4ub2JqZWN0Lnpvb209TWF0aC5tYXgobi5taW5ab29tLE1hdGgubWluKG4ubWF4Wm9vbSxuLm9iamVjdC56b29tKm50KSksbi5vYmplY3QudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLGg9ITApOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIGRvbGx5L3pvb20gZGlzYWJsZWQuIiksbi5lbmFibGVab29tPSExKX1mdW5jdGlvbiB6KG50KXtuLm9iamVjdC5pc1BlcnNwZWN0aXZlQ2FtZXJhP2MqPW50Om4ub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhuLm9iamVjdC56b29tPU1hdGgubWF4KG4ubWluWm9vbSxNYXRoLm1pbihuLm1heFpvb20sbi5vYmplY3Quem9vbS9udCkpLG4ub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSxoPSEwKTooY29uc29sZS53YXJuKCJXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBkb2xseS96b29tIGRpc2FibGVkLiIpLG4uZW5hYmxlWm9vbT0hMSl9ZnVuY3Rpb24gVShudCl7Zi5zZXQobnQuY2xpZW50WCxudC5jbGllbnRZKX1mdW5jdGlvbiBXKG50KXt4LnNldChudC5jbGllbnRYLG50LmNsaWVudFkpfWZ1bmN0aW9uIFoobnQpe2cuc2V0KG50LmNsaWVudFgsbnQuY2xpZW50WSl9ZnVuY3Rpb24gcnQobnQpe3Auc2V0KG50LmNsaWVudFgsbnQuY2xpZW50WSksZC5zdWJWZWN0b3JzKHAsZikubXVsdGlwbHlTY2FsYXIobi5yb3RhdGVTcGVlZCk7bGV0IEN0PW4uZG9tRWxlbWVudDtEKDIqTWF0aC5QSSpkLngvQ3QuY2xpZW50SGVpZ2h0KSxCKDIqTWF0aC5QSSpkLnkvQ3QuY2xpZW50SGVpZ2h0KSxmLmNvcHkocCksbi51cGRhdGUoKX1mdW5jdGlvbiBvdChudCl7Yi5zZXQobnQuY2xpZW50WCxudC5jbGllbnRZKSxTLnN1YlZlY3RvcnMoYix4KSxTLnk+MD9GKE8oKSk6Uy55PDAmJnooTygpKSx4LmNvcHkoYiksbi51cGRhdGUoKX1mdW5jdGlvbiBzdChudCl7Xy5zZXQobnQuY2xpZW50WCxudC5jbGllbnRZKSx5LnN1YlZlY3RvcnMoXyxnKS5tdWx0aXBseVNjYWxhcihuLnBhblNwZWVkKSxSKHkueCx5LnkpLGcuY29weShfKSxuLnVwZGF0ZSgpfWZ1bmN0aW9uIFN0KG50KXtudC5kZWx0YVk8MD96KE8oKSk6bnQuZGVsdGFZPjAmJkYoTygpKSxuLnVwZGF0ZSgpfWZ1bmN0aW9uIGJ0KG50KXtsZXQgQ3Q9ITE7c3dpdGNoKG50LmNvZGUpe2Nhc2Ugbi5rZXlzLlVQOlIoMCxuLmtleVBhblNwZWVkKSxDdD0hMDticmVhaztjYXNlIG4ua2V5cy5CT1RUT006UigwLC1uLmtleVBhblNwZWVkKSxDdD0hMDticmVhaztjYXNlIG4ua2V5cy5MRUZUOlIobi5rZXlQYW5TcGVlZCwwKSxDdD0hMDticmVhaztjYXNlIG4ua2V5cy5SSUdIVDpSKC1uLmtleVBhblNwZWVkLDApLEN0PSEwO2JyZWFrfUN0JiYobnQucHJldmVudERlZmF1bHQoKSxuLnVwZGF0ZSgpKX1mdW5jdGlvbiBNdCgpe2lmKEMubGVuZ3RoPT09MSlmLnNldChDWzBdLnBhZ2VYLENbMF0ucGFnZVkpO2Vsc2V7bGV0IG50PS41KihDWzBdLnBhZ2VYK0NbMV0ucGFnZVgpLEN0PS41KihDWzBdLnBhZ2VZK0NbMV0ucGFnZVkpO2Yuc2V0KG50LEN0KX19ZnVuY3Rpb24gbHQoKXtpZihDLmxlbmd0aD09PTEpZy5zZXQoQ1swXS5wYWdlWCxDWzBdLnBhZ2VZKTtlbHNle2xldCBudD0uNSooQ1swXS5wYWdlWCtDWzFdLnBhZ2VYKSxDdD0uNSooQ1swXS5wYWdlWStDWzFdLnBhZ2VZKTtnLnNldChudCxDdCl9fWZ1bmN0aW9uIEt0KCl7bGV0IG50PUNbMF0ucGFnZVgtQ1sxXS5wYWdlWCxDdD1DWzBdLnBhZ2VZLUNbMV0ucGFnZVksV3Q9TWF0aC5zcXJ0KG50Km50K0N0KkN0KTt4LnNldCgwLFd0KX1mdW5jdGlvbiBfdCgpe24uZW5hYmxlWm9vbSYmS3QoKSxuLmVuYWJsZVBhbiYmbHQoKX1mdW5jdGlvbiBjdCgpe24uZW5hYmxlWm9vbSYmS3QoKSxuLmVuYWJsZVJvdGF0ZSYmTXQoKX1mdW5jdGlvbiBYKG50KXtpZihDLmxlbmd0aD09MSlwLnNldChudC5wYWdlWCxudC5wYWdlWSk7ZWxzZXtsZXQgV3Q9YmUobnQpLGZlPS41KihudC5wYWdlWCtXdC54KSxhdD0uNSoobnQucGFnZVkrV3QueSk7cC5zZXQoZmUsYXQpfWQuc3ViVmVjdG9ycyhwLGYpLm11bHRpcGx5U2NhbGFyKG4ucm90YXRlU3BlZWQpO2xldCBDdD1uLmRvbUVsZW1lbnQ7RCgyKk1hdGguUEkqZC54L0N0LmNsaWVudEhlaWdodCksQigyKk1hdGguUEkqZC55L0N0LmNsaWVudEhlaWdodCksZi5jb3B5KHApfWZ1bmN0aW9uIGV0KG50KXtpZihDLmxlbmd0aD09PTEpXy5zZXQobnQucGFnZVgsbnQucGFnZVkpO2Vsc2V7bGV0IEN0PWJlKG50KSxXdD0uNSoobnQucGFnZVgrQ3QueCksZmU9LjUqKG50LnBhZ2VZK0N0LnkpO18uc2V0KFd0LGZlKX15LnN1YlZlY3RvcnMoXyxnKS5tdWx0aXBseVNjYWxhcihuLnBhblNwZWVkKSxSKHkueCx5LnkpLGcuY29weShfKX1mdW5jdGlvbiBkdChudCl7bGV0IEN0PWJlKG50KSxXdD1udC5wYWdlWC1DdC54LGZlPW50LnBhZ2VZLUN0LnksYXQ9TWF0aC5zcXJ0KFd0Kld0K2ZlKmZlKTtiLnNldCgwLGF0KSxTLnNldCgwLE1hdGgucG93KGIueS94Lnksbi56b29tU3BlZWQpKSxGKFMueSkseC5jb3B5KGIpfWZ1bmN0aW9uIHEobnQpe24uZW5hYmxlWm9vbSYmZHQobnQpLG4uZW5hYmxlUGFuJiZldChudCl9ZnVuY3Rpb24gcHQobnQpe24uZW5hYmxlWm9vbSYmZHQobnQpLG4uZW5hYmxlUm90YXRlJiZYKG50KX1mdW5jdGlvbiBodChudCl7bi5lbmFibGVkIT09ITEmJihDLmxlbmd0aD09PTAmJihuLmRvbUVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUobnQucG9pbnRlcklkKSxuLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLHd0KSxuLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcnVwIixrdCkpLCR0KG50KSxudC5wb2ludGVyVHlwZT09PSJ0b3VjaCI/dHQobnQpOmVlKG50KSl9ZnVuY3Rpb24gd3QobnQpe24uZW5hYmxlZCE9PSExJiYobnQucG9pbnRlclR5cGU9PT0idG91Y2giPyQobnQpOkxlKG50KSl9ZnVuY3Rpb24ga3QobnQpe2hlKG50KSxDLmxlbmd0aD09PTAmJihuLmRvbUVsZW1lbnQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKG50LnBvaW50ZXJJZCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIix3dCksbi5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsa3QpKSxuLmRpc3BhdGNoRXZlbnQoUWZlKSxvPWkuTk9ORX1mdW5jdGlvbiBpZShudCl7aGUobnQpfWZ1bmN0aW9uIGVlKG50KXtsZXQgQ3Q7c3dpdGNoKG50LmJ1dHRvbil7Y2FzZSAwOkN0PW4ubW91c2VCdXR0b25zLkxFRlQ7YnJlYWs7Y2FzZSAxOkN0PW4ubW91c2VCdXR0b25zLk1JRERMRTticmVhaztjYXNlIDI6Q3Q9bi5tb3VzZUJ1dHRvbnMuUklHSFQ7YnJlYWs7ZGVmYXVsdDpDdD0tMX1zd2l0Y2goQ3Qpe2Nhc2UgSzAuRE9MTFk6aWYobi5lbmFibGVab29tPT09ITEpcmV0dXJuO1cobnQpLG89aS5ET0xMWTticmVhaztjYXNlIEswLlJPVEFURTppZihudC5jdHJsS2V5fHxudC5tZXRhS2V5fHxudC5zaGlmdEtleSl7aWYobi5lbmFibGVQYW49PT0hMSlyZXR1cm47WihudCksbz1pLlBBTn1lbHNle2lmKG4uZW5hYmxlUm90YXRlPT09ITEpcmV0dXJuO1UobnQpLG89aS5ST1RBVEV9YnJlYWs7Y2FzZSBLMC5QQU46aWYobnQuY3RybEtleXx8bnQubWV0YUtleXx8bnQuc2hpZnRLZXkpe2lmKG4uZW5hYmxlUm90YXRlPT09ITEpcmV0dXJuO1UobnQpLG89aS5ST1RBVEV9ZWxzZXtpZihuLmVuYWJsZVBhbj09PSExKXJldHVybjtaKG50KSxvPWkuUEFOfWJyZWFrO2RlZmF1bHQ6bz1pLk5PTkV9byE9PWkuTk9ORSYmbi5kaXNwYXRjaEV2ZW50KEJodCl9ZnVuY3Rpb24gTGUobnQpe2lmKG4uZW5hYmxlZCE9PSExKXN3aXRjaChvKXtjYXNlIGkuUk9UQVRFOmlmKG4uZW5hYmxlUm90YXRlPT09ITEpcmV0dXJuO3J0KG50KTticmVhaztjYXNlIGkuRE9MTFk6aWYobi5lbmFibGVab29tPT09ITEpcmV0dXJuO290KG50KTticmVhaztjYXNlIGkuUEFOOmlmKG4uZW5hYmxlUGFuPT09ITEpcmV0dXJuO3N0KG50KTticmVha319ZnVuY3Rpb24gYXIobnQpe24uZW5hYmxlZD09PSExfHxuLmVuYWJsZVpvb209PT0hMXx8byE9PWkuTk9ORXx8KG50LnByZXZlbnREZWZhdWx0KCksbi5kaXNwYXRjaEV2ZW50KEJodCksU3QobnQpLG4uZGlzcGF0Y2hFdmVudChRZmUpKX1mdW5jdGlvbiBmcihudCl7bi5lbmFibGVkPT09ITF8fG4uZW5hYmxlUGFuPT09ITF8fGJ0KG50KX1mdW5jdGlvbiB0dChudCl7c3dpdGNoKFR0KG50KSxDLmxlbmd0aCl7Y2FzZSAxOnN3aXRjaChuLnRvdWNoZXMuT05FKXtjYXNlIFowLlJPVEFURTppZihuLmVuYWJsZVJvdGF0ZT09PSExKXJldHVybjtNdCgpLG89aS5UT1VDSF9ST1RBVEU7YnJlYWs7Y2FzZSBaMC5QQU46aWYobi5lbmFibGVQYW49PT0hMSlyZXR1cm47bHQoKSxvPWkuVE9VQ0hfUEFOO2JyZWFrO2RlZmF1bHQ6bz1pLk5PTkV9YnJlYWs7Y2FzZSAyOnN3aXRjaChuLnRvdWNoZXMuVFdPKXtjYXNlIFowLkRPTExZX1BBTjppZihuLmVuYWJsZVpvb209PT0hMSYmbi5lbmFibGVQYW49PT0hMSlyZXR1cm47X3QoKSxvPWkuVE9VQ0hfRE9MTFlfUEFOO2JyZWFrO2Nhc2UgWjAuRE9MTFlfUk9UQVRFOmlmKG4uZW5hYmxlWm9vbT09PSExJiZuLmVuYWJsZVJvdGF0ZT09PSExKXJldHVybjtjdCgpLG89aS5UT1VDSF9ET0xMWV9ST1RBVEU7YnJlYWs7ZGVmYXVsdDpvPWkuTk9ORX1icmVhaztkZWZhdWx0Om89aS5OT05FfW8hPT1pLk5PTkUmJm4uZGlzcGF0Y2hFdmVudChCaHQpfWZ1bmN0aW9uICQobnQpe3N3aXRjaChUdChudCksbyl7Y2FzZSBpLlRPVUNIX1JPVEFURTppZihuLmVuYWJsZVJvdGF0ZT09PSExKXJldHVybjtYKG50KSxuLnVwZGF0ZSgpO2JyZWFrO2Nhc2UgaS5UT1VDSF9QQU46aWYobi5lbmFibGVQYW49PT0hMSlyZXR1cm47ZXQobnQpLG4udXBkYXRlKCk7YnJlYWs7Y2FzZSBpLlRPVUNIX0RPTExZX1BBTjppZihuLmVuYWJsZVpvb209PT0hMSYmbi5lbmFibGVQYW49PT0hMSlyZXR1cm47cShudCksbi51cGRhdGUoKTticmVhaztjYXNlIGkuVE9VQ0hfRE9MTFlfUk9UQVRFOmlmKG4uZW5hYmxlWm9vbT09PSExJiZuLmVuYWJsZVJvdGF0ZT09PSExKXJldHVybjtwdChudCksbi51cGRhdGUoKTticmVhaztkZWZhdWx0Om89aS5OT05FfX1mdW5jdGlvbiBJdChudCl7bi5lbmFibGVkIT09ITEmJm50LnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gJHQobnQpe0MucHVzaChudCl9ZnVuY3Rpb24gaGUobnQpe2RlbGV0ZSBQW250LnBvaW50ZXJJZF07Zm9yKGxldCBDdD0wO0N0PEMubGVuZ3RoO0N0KyspaWYoQ1tDdF0ucG9pbnRlcklkPT1udC5wb2ludGVySWQpe0Muc3BsaWNlKEN0LDEpO3JldHVybn19ZnVuY3Rpb24gVHQobnQpe2xldCBDdD1QW250LnBvaW50ZXJJZF07Q3Q9PT12b2lkIDAmJihDdD1uZXcgTHQsUFtudC5wb2ludGVySWRdPUN0KSxDdC5zZXQobnQucGFnZVgsbnQucGFnZVkpfWZ1bmN0aW9uIGJlKG50KXtsZXQgQ3Q9bnQucG9pbnRlcklkPT09Q1swXS5wb2ludGVySWQ/Q1sxXTpDWzBdO3JldHVybiBQW0N0LnBvaW50ZXJJZF19bi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IixJdCksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixodCksbi5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJjYW5jZWwiLGllKSxuLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLGFyLHtwYXNzaXZlOiExfSksdGhpcy51cGRhdGUoKX19O3ZhciBENj1jbGFzcyBleHRlbmRzIFZze2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fbGFzdE1lc2g9bnVsbCx0aGlzLl9jbG9jaz1uZXcgZE0sdGhpcy5fY2FudmFzU2l6ZT1udWxsLHRoaXMuX2xheWVyc0NvbmZpZz1udWxsLHRoaXMuX3J1bkNvbG9yPXR9X2lzT2JqZWN0KHQpe3ZhciByPXR5cGVvZiB0O3JldHVybiByPT0ib2JqZWN0IiYmdCE9bnVsbCYmIUFycmF5LmlzQXJyYXkodCl9X2FwcGx5RGVmYXVsdHModCxyKXtsZXQgbj17fSxpPVt0LHJdO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXtsZXQgYT1pW29dO2ZvcihsZXQgcyBpbiBhKXtsZXQgbD1zIGluIG47dGhpcy5faXNPYmplY3QoYVtzXSk/bltzXT10aGlzLl9hcHBseURlZmF1bHRzKG5bc118fHt9LGFbc10pOmx8fChuW3NdPWFbc10pfX1yZXR1cm4gbn1fY3JlYXRlTGF5ZXJzKCl7aWYoISghdGhpcy5fbGF5ZXJzQ29uZmlnfHwhdGhpcy5fc2NlbmV8fCF0aGlzLl9sYXN0TWVzaCkpe2lmKHRoaXMuX2xheWVyc0NvbmZpZy5zaG93Qm91bmRpbmdCb3gpe3ZhciB0PW5ldyBfTSh0aGlzLl9sYXN0TWVzaCxuZXcgbmUoInJnYigwLCAwLCAyNTUpIikpO3RoaXMuX3NjZW5lLmFkZCh0KX1pZih0aGlzLl9sYXllcnNDb25maWcuc2hvd0F4ZXMpe3ZhciByPW5ldyB5TSg1KTt0aGlzLl9zY2VuZS5hZGQocil9fX1zZXRMYXllcnNDb25maWcodCl7dGhpcy5fbGF5ZXJzQ29uZmlnPXRoaXMuX2FwcGx5RGVmYXVsdHModCx0aGlzLl9sYXllcnNDb25maWd8fHt9KX1fY3JlYXRlV29ybGQodCxyKXt2YXIgbixpLG8sYTtpZih0aGlzLmlzUmVhZHkoKSlyZXR1cm47dGhpcy5fc2NlbmU9bmV3IHEwO3ZhciBzPW5ldyBiTVt0LmNhbWVyYS5jbHNdKHQuY2FtZXJhLmZvdiwoKG49dGhpcy5fY2FudmFzU2l6ZSk9PT1udWxsfHxuPT09dm9pZCAwP3ZvaWQgMDpuLndpZHRoKS8oKGk9dGhpcy5fY2FudmFzU2l6ZSk9PT1udWxsfHxpPT09dm9pZCAwP3ZvaWQgMDppLmhlaWdodCksdC5jYW1lcmEubmVhcix0LmNhbWVyYS5mYXIpO3RoaXMuX2NhbWVyYT1zLHRoaXMuaW5pdENhbWVyYVBvc2l0aW9uPXZvaWQgMCx0LmNhbWVyYS5wb3NpdGlvbiYmKHRoaXMuaW5pdENhbWVyYVBvc2l0aW9uPW5ldyBqKCkuZnJvbUFycmF5KHQuY2FtZXJhLnBvc2l0aW9uKSksdGhpcy5pbml0Q2FtZXJhTG9va0F0PXZvaWQgMCx0LmNhbWVyYS5sb29rQXQmJih0aGlzLmluaXRDYW1lcmFMb29rQXQ9bmV3IGooKS5mcm9tQXJyYXkodC5jYW1lcmEubG9va0F0KSk7dmFyIGw9bmV3ICRVKHMscik7bGV0IGM9bDtjLmxvb2tTcGVlZD0uNCxjLm1vdmVtZW50U3BlZWQ9MjAsYy5ub0ZseT0hMCxjLmxvb2tWZXJ0aWNhbD0hMCxjLmNvbnN0cmFpblZlcnRpY2FsPSEwLGMudmVydGljYWxNaW49MSxjLnZlcnRpY2FsTWF4PTIsYy5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKSksdGhpcy5fY2FtZXJhQ29udHJvbHM9bCx0aGlzLl9yZW5kZXJlcj1uZXcgcm4oe2FudGlhbGlhczohMH0pLHRoaXMuX3JlbmRlcmVyLnNldFBpeGVsUmF0aW8od2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuX3JlbmRlcmVyLnNldFNpemUoKG89dGhpcy5fY2FudmFzU2l6ZSk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLndpZHRoLChhPXRoaXMuX2NhbnZhc1NpemUpPT09bnVsbHx8YT09PXZvaWQgMD92b2lkIDA6YS5oZWlnaHQpLHRoaXMuX3JlbmRlcmVyLnNldENsZWFyQ29sb3IoMTY3NzcyMTUsMSl9X2NsZWFyU2NlbmUoKXt2YXIgdDtpZih0aGlzLl9zY2VuZSlmb3IoO3RoaXMuX3NjZW5lLmNoaWxkcmVuLmxlbmd0aD4wOyl0aGlzLl9zY2VuZS5yZW1vdmUoKHQ9dGhpcy5fc2NlbmUpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5jaGlsZHJlblswXSl9Z2V0UmVuZGVyZXIoKXtyZXR1cm4gdGhpcy5fcmVuZGVyZXJ9Z2V0Q2FtZXJhQ29udHJvbHMoKXtyZXR1cm4gdGhpcy5fY2FtZXJhQ29udHJvbHN9aXNSZWFkeSgpe3JldHVybiEhdGhpcy5fY2FtZXJhJiYhIXRoaXMuX2NhbWVyYUNvbnRyb2xzfWdldENhbWVyYVBvc2l0aW9uKCl7dmFyIHQscixuO3JldHVybntmYXI6KHQ9dGhpcy5fY2FtZXJhKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZmFyLHBvc2l0aW9uOihyPXRoaXMuX2NhbWVyYSk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLnBvc2l0aW9uLmNsb25lKCksdGFyZ2V0OihuPXRoaXMuX2NhbWVyYUNvbnRyb2xzKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4udGFyZ2V0LmNsb25lKCl9fXNldENhbnZhc1NpemUodCl7dGhpcy5fY2FudmFzU2l6ZT10fWRyYXcoKXt2YXIgdCxyLG4saTt0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4JiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4KSx0aGlzLl9jYW1lcmEmJih0aGlzLl9jYW1lcmEuYXNwZWN0PSgodD10aGlzLl9jYW52YXNTaXplKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQud2lkdGgpLygocj10aGlzLl9jYW52YXNTaXplKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuaGVpZ2h0KSx0aGlzLl9jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSx0aGlzLl9yZW5kZXJlci5zZXRTaXplKChuPXRoaXMuX2NhbnZhc1NpemUpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi53aWR0aCwoaT10aGlzLl9jYW52YXNTaXplKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkuaGVpZ2h0KTtsZXQgbz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuX2Nsb2NrLmdldERlbHRhKCk7dGhpcy5fY2FtZXJhQ29udHJvbHMudXBkYXRlKGEpLHRoaXMuX2FuaW1hdGlvbkZyYW1lSW5kZXg9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG8pLHRoaXMuX3JlbmRlcmVyLnJlbmRlcih0aGlzLl9zY2VuZSx0aGlzLl9jYW1lcmEpfS5iaW5kKHRoaXMpO28oKX11cGRhdGVTY2VuZSh0LHIpe2xldCBuPXt9OyJjb25maWciaW4gdCYmdC5jb25maWcmJihuPUpTT04ucGFyc2UodC5jb25maWcpKSx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImJlZm9yZVVwZGF0ZVNjZW5lIn0pO2xldCBpPXtjYW1lcmE6e2NsczoiUGVyc3BlY3RpdmVDYW1lcmEiLGZvdjo3NSxuZWFyOi4xLGZhcjoxZTN9LGxpZ2h0czpbe2NsczoiQW1iaWVudExpZ2h0Iixjb2xvcjoiI2ZmZmZmZiIsaW50ZW5zaXR5Oi43NX0se2NsczoiRGlyZWN0aW9uYWxMaWdodCIsY29sb3I6IiNmZmZmZmYiLGludGVuc2l0eTouNzUscG9zaXRpb246WzAsLTEsMl19XX07bj10aGlzLl9hcHBseURlZmF1bHRzKG4saSksdGhpcy5fY3JlYXRlV29ybGQobixyKSx0aGlzLl9jbGVhclNjZW5lKCksdGhpcy5fY3JlYXRlTGlnaHRzKHRoaXMuX3NjZW5lLG4pLHRoaXMuX2NyZWF0ZUdlb21ldHJ5KHQsbiksdGhpcy5fY3JlYXRlTGF5ZXJzKCksdGhpcy5kcmF3KCl9cmVzZXRWaWV3KHQpe3ZhciByLG47aWYoIXRoaXMuaXNSZWFkeSgpKXJldHVybjsocj10aGlzLl9jYW1lcmFDb250cm9scyk9PT1udWxsfHxyPT09dm9pZCAwfHxyLnJlc2V0KCk7bGV0IGk7IXQmJnRoaXMuX2xhc3RNZXNoJiYoaT10aGlzLl9sYXN0TWVzaCksaSYmKHRoaXMuX2ZpdE9iamVjdFRvVmlld3BvcnQoaSksdGhpcy5fbGFzdE1lc2g9aSksKG49dGhpcy5fY2FtZXJhQ29udHJvbHMpPT09bnVsbHx8bj09PXZvaWQgMHx8bi51cGRhdGUoKX1fY3JlYXRlR2VvbWV0cnkodCxyKXtsZXQgbj10Lm1lc2g7bi52ZXJ0aWNlcyYmbi5mYWNlcyYmbi5mYWNlcy5sZW5ndGg/dGhpcy5fY3JlYXRlTWVzaChuLHIpOnRoaXMuX2NyZWF0ZVBvaW50Q2xvdWQobixyKX1fY3JlYXRlUG9pbnRDbG91ZCh0LHIpe3ZhciBuO2xldCBpPXQudmVydGljZXMsbz10LmNvbG9ycyxhPXttYXRlcmlhbDp7Y2xzOiJQb2ludHNNYXRlcmlhbCIsc2l6ZTouMDA1fX07byYmby5sZW5ndGg9PWkubGVuZ3RoP2EubWF0ZXJpYWwudmVydGV4Q29sb3JzPSEwOmEubWF0ZXJpYWwuY29sb3I9dGhpcy5fcnVuQ29sb3I7bGV0IHM9dGhpcy5fYXBwbHlEZWZhdWx0cyhyLGEpLGw9bmV3IFBlLGM9bmV3IEZsb2F0MzJBcnJheShpLmZsYXQoKSk7aWYobC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgSmUoYywzKSksbyYmby5sZW5ndGg9PWkubGVuZ3RoKXtsZXQgZj1uZXcgRmxvYXQzMkFycmF5KG8uZmxhdCgpKTtmb3IobGV0IHA9MDtwPGYubGVuZ3RoO3ArKylmW3BdPWZbcF0vMjU1O2wuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IEplKGYsMykpfXZhciB1PW5ldyBiTVtzLm1hdGVyaWFsLmNsc10ocy5tYXRlcmlhbCksaD1uZXcgaW0obCx1KTsobj10aGlzLl9zY2VuZSk9PT1udWxsfHxuPT09dm9pZCAwfHxuLmFkZChoKSx0aGlzLl9sYXN0TWVzaD1ofXNldENhbWVyYVZpZXdwb2ludCh0LHIsbil7dGhpcy5fc2lsZW50PSEwLHRoaXMuX2NhbWVyYSYmKHRoaXMuX2NhbWVyYS5mYXI9cix0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KHQueCx0LnksdC56KSx0aGlzLl9jYW1lcmEubG9va0F0KG4uY2xvbmUoKSksdGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSksdGhpcy5fY2FtZXJhQ29udHJvbHMmJih0aGlzLl9jYW1lcmFDb250cm9scy50YXJnZXQ9bi5jbG9uZSgpLHRoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZSgpKSx0aGlzLl9zaWxlbnQ9ITF9X29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UodCl7dGhpcy5fc2lsZW50fHx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImNhbWVyYVBvc2l0aW9uQ2hhbmdlIixldmVudDp0fSl9X2ZpdE9iamVjdFRvVmlld3BvcnQodCl7dmFyIHIsbixpO2xldCBhPW5ldyBRbyxzPW5ldyBqLGw9bmV3IGo7YS5zZXRGcm9tT2JqZWN0KHQpLGEuZ2V0Q2VudGVyKHMpLGEuZ2V0U2l6ZShsKTtsZXQgYz1NYXRoLm1heChsLngsbC55LGwueiksdT0oKHI9dGhpcy5fY2FtZXJhKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuZm92KSooTWF0aC5QSS8xODApLGg9TWF0aC5hYnMoYy8oMipNYXRoLnRhbih1LzIpKSkqMS4yNSxmPWEubWluLnoscD1mPDA/LWYraDpoLWYsZD0obj10aGlzLmluaXRDYW1lcmFQb3NpdGlvbikhPT1udWxsJiZuIT09dm9pZCAwP246bmV3IGoocy54LHMueSxoKSxnPShpPXRoaXMuaW5pdENhbWVyYUxvb2tBdCkhPT1udWxsJiZpIT09dm9pZCAwP2k6czt0aGlzLnNldENhbWVyYVZpZXdwb2ludChkLHAqMyxnKX1fY3JlYXRlTWVzaCh0LHIpe3ZhciBuO2xldCBpPXQudmVydGljZXMsbz10LmZhY2VzLGE9dC5jb2xvcnMscz10aGlzLl9hcHBseURlZmF1bHRzKHIse21hdGVyaWFsOntjbHM6Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIixjb2xvcjoiI2EwYTBhMCIscm91Z2huZXNzOjEsbWV0YWxuZXNzOjB9fSksbD1uZXcgUGUsYz1uZXcgRmxvYXQzMkFycmF5KGkuZmxhdCgpKTtsLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBKZShjLDMpKTtsZXQgdT1uZXcgVWludDE2QXJyYXkoby5mbGF0KCkpO2lmKGEmJmEubGVuZ3RoKXtsZXQgcD1hLmZsYXQoKTtmb3IobGV0IGQ9MDtkPHAubGVuZ3RoO2QrKylwW2RdPXBbZF0vMjU1O2wuc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IEplKG5ldyBGbG9hdDMyQXJyYXkocCksMykpLHMubWF0ZXJpYWw9cy5tYXRlcmlhbHx8e30scy5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9ITB9bC5jZW50ZXIoKSxsLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLGwuc2V0SW5kZXgobmV3IEplKHUsMSkpLGwuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtsZXQgaD1uZXcgYk1bcy5tYXRlcmlhbC5jbHNdKHMubWF0ZXJpYWwpLGY9bmV3IGVpKGwsaCk7Zi5jYXN0U2hhZG93PSEwLGYucmVjZWl2ZVNoYWRvdz0hMCwobj10aGlzLl9zY2VuZSk9PT1udWxsfHxuPT09dm9pZCAwfHxuLmFkZChmKSx0aGlzLl9sYXN0TWVzaD1mfV9jcmVhdGVMaWdodHModCxyKXtmb3IobGV0IG49MDtuPHIubGlnaHRzLmxlbmd0aDtuKyspe2xldCBpPXIubGlnaHRzW25dLG89bmV3IGJNW2kuY2xzXShpLmNvbG9yLGkuaW50ZW5zaXR5KTtpLnBvc2l0aW9uJiZvLnBvc2l0aW9uLnNldChpLnBvc2l0aW9uWzBdLGkucG9zaXRpb25bMV0saS5wb3NpdGlvblsyXSksdC5hZGQobyl9fX07dmFyIGtuPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlbGVjdGVkVmlldz0iYWxsIix0aGlzLmFjdGl2ZT0hMSx0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb249Zm4sdGhpcy5fc3RlcHM9W10sdGhpcy5fbWVzaFZpZXdlckF0dGFjaGVkPSExLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQ9ITEsdGhpcy5faXNNZXNoTG9hZGluZz0hMX1nZXQgX3J1bkNvbG9yKCl7dmFyIHQ9dGhpcy5ydW47cmV0dXJuIHRoaXMuX2NvbG9yU2NhbGVGdW5jdGlvbih0KX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fZGF0YVByb3ZpZGVyPW5ldyBDUCh0aGlzLnJlcXVlc3RNYW5hZ2VyKTtsZXQgdD1uZXcgRDYodGhpcy5fcnVuQ29sb3IpO3QuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlVXBkYXRlU2NlbmUiLHRoaXMuX3VwZGF0ZUNhbnZhc1NpemUuYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJjYW1lcmFQb3NpdGlvbkNoYW5nZSIsdGhpcy5fb25DYW1lcmFQb3NpdGlvbkNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLl9tZXNoVmlld2VyPXR9cmVsb2FkKCl7IXRoaXMuYWN0aXZlfHwhdGhpcy5fZGF0YVByb3ZpZGVyfHwodGhpcy5faXNNZXNoTG9hZGluZz0hMCx0aGlzLl9kYXRhUHJvdmlkZXIucmVsb2FkKHRoaXMucnVuLHRoaXMudGFnLHRoaXMuc2FtcGxlKS50aGVuKHQ9PnshdHx8KHRoaXMuX3N0ZXBzPXQsdGhpcy5fc3RlcEluZGV4PXQubGVuZ3RoLTEpfSkuY2F0Y2godD0+e2lmKCF0fHwhdC5jb2RlfHx0LmNvZGUhPWQxLkNBTkNFTExFRCl0aHJvdyB0PXR8fCJSZXNwb25zZSBwcm9jZXNzaW5nIGZhaWxlZC4iLG5ldyBFcnJvcih0KX0pKX1fdXBkYXRlU2NlbmUoKXt2YXIgdDtsZXQgcj10aGlzLl9jdXJyZW50U3RlcDshcnx8IXIubWVzaHx8KHRoaXMuX21lc2hWaWV3ZXIudXBkYXRlU2NlbmUocix0aGlzKSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkfHwodGhpcy5fbWVzaFZpZXdlci5yZXNldFZpZXcoKSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkPSEwKSx0aGlzLl9tZXNoVmlld2VyQXR0YWNoZWR8fCgodD10aGlzLnNoYWRvd1Jvb3QpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5hcHBlbmRDaGlsZCh0aGlzLl9tZXNoVmlld2VyLmdldFJlbmRlcmVyKCkuZG9tRWxlbWVudCksdGhpcy5fbWVzaFZpZXdlckF0dGFjaGVkPSEwKSl9X2RlYm91bmNlZEZldGNoTWVzaCgpe3RoaXMuZGVib3VuY2UoImZldGNoTWVzaCIsKCk9PnRoaXMuX21heWJlRmV0Y2hNZXNoKCksMTAwKX1fbWF5YmVGZXRjaE1lc2goKXtyZXR1cm4gcnUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCB0PXRoaXMuX2N1cnJlbnRTdGVwO2lmKCEoIXR8fHQubWVzaHx8dC5tZXNoRmV0Y2hpbmcpKXt0Lm1lc2hGZXRjaGluZz0hMCx0aGlzLl9pc01lc2hMb2FkaW5nPSEwO3RyeXtsZXQgcj15aWVsZCB0aGlzLl9kYXRhUHJvdmlkZXIuZmV0Y2hEYXRhKHQsdGhpcy5ydW4sdGhpcy50YWcsdGhpcy5zYW1wbGUpO3QubWVzaD1yWzBdLHRoaXMubm90aWZ5UGF0aCgiX2N1cnJlbnRTdGVwLm1lc2giKX1jYXRjaChyKXtpZighcnx8IXIuY29kZXx8ci5jb2RlIT1kMS5DQU5DRUxMRUQpdGhyb3cgcj1yfHwiUmVzcG9uc2UgcHJvY2Vzc2luZyBmYWlsZWQuIixuZXcgRXJyb3Iocil9ZmluYWxseXt0aGlzLl9pc01lc2hMb2FkaW5nPSExLHQubWVzaEZldGNoaW5nPSExfX19KX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZSgpe2lmKCF0aGlzLl9tZXNoVmlld2VyLmlzUmVhZHkoKSlyZXR1cm47bGV0IHQ9bmV3IEN1c3RvbUV2ZW50KCJjYW1lcmEtcG9zaXRpb24tY2hhbmdlIix7ZGV0YWlsOnRoaXMuX21lc2hWaWV3ZXIuZ2V0Q2FtZXJhUG9zaXRpb24oKX0pO3RoaXMuZGlzcGF0Y2hFdmVudCh0KX1zZXRDYW1lcmFWaWV3cG9pbnQodCxyLG4pe3RoaXMuX21lc2hWaWV3ZXIuc2V0Q2FtZXJhVmlld3BvaW50KHQscixuKX1fdXBkYXRlQ2FudmFzU2l6ZSgpe2xldCB0PXRoaXMub2Zmc2V0V2lkdGgscj10LG49dGhpcy4kJCgiLnRmLW1lc2gtbG9hZGVyLWhlYWRlciIpLm9mZnNldEhlaWdodCxpPXt3aWR0aDp0LGhlaWdodDpyLW59O3RoaXMuX21lc2hWaWV3ZXIuc2V0Q2FudmFzU2l6ZShpKX1yZWRyYXcoKXt0aGlzLl91cGRhdGVDYW52YXNTaXplKCksdGhpcy5pc0Nvbm5lY3RlZCYmdGhpcy5fbWVzaFZpZXdlci5kcmF3KCl9X2hhc0F0TGVhc3RPbmVTdGVwKHQpe3JldHVybiEhdCYmdC5sZW5ndGg+MH1faGFzTXVsdGlwbGVTdGVwcyh0KXtyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9jdXJyZW50U3RlcCgpe3ZhciB0PXRoaXMuX3N0ZXBzLHI9dGhpcy5fc3RlcEluZGV4O3JldHVybiB0W3JdfHxudWxsfWdldCBfc3RlcFZhbHVlKCl7bGV0IHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/dC5zdGVwOjB9Z2V0IF9jdXJyZW50V2FsbFRpbWUoKXtsZXQgdD10aGlzLl9jdXJyZW50U3RlcDtyZXR1cm4gdD9hMih0LndhbGxfdGltZSk6IiJ9X2dldE1heFN0ZXBJbmRleCh0KXtyZXR1cm4gdC5sZW5ndGgtMX1fZ2V0U2FtcGxlVGV4dCh0KXtyZXR1cm4gU3RyaW5nKHQrMSl9X2hhc011bHRpcGxlU2FtcGxlcyh0KXtyZXR1cm4gdD4xfV91cGRhdGVWaWV3KCl7dmFyIHQ9dGhpcy5zZWxlY3RlZFZpZXc7dGhpcy5fbWVzaFZpZXdlciYmdD09ImFsbCImJnRoaXMuX21lc2hWaWV3ZXIucmVzZXRWaWV3KCl9dG9Mb2NhbGVTdHJpbmdfKHQpe3JldHVybiB0LnRvTG9jYWxlU3RyaW5nKCl9fTtrbi50ZW1wbGF0ZT1RYAogICAgPHRmLWNhcmQtaGVhZGluZyBjb2xvcj0iW1tfcnVuQ29sb3JdXSIgY2xhc3M9InRmLW1lc2gtbG9hZGVyLWhlYWRlciI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTYW1wbGVzKG9mU2FtcGxlcyldXSI+CiAgICAgICAgPGRpdj5zYW1wbGU6IFtbX2dldFNhbXBsZVRleHQoc2FtcGxlKV1dIG9mIFtbb2ZTYW1wbGVzXV08L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcChfc3RlcHMpXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzdGVwCiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZCIKICAgICAgICAgICAgICA+W1t0b0xvY2FsZVN0cmluZ18oX3N0ZXBWYWx1ZSldXTwvc3BhbgogICAgICAgICAgICA+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwgaGVhZGluZy1yaWdodCI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfY3VycmVudFdhbGxUaW1lXV0iPgogICAgICAgICAgICAgIFtbX2N1cnJlbnRXYWxsVGltZV1dCiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsIHJpZ2h0Ij4KICAgICAgICAgICAgPHBhcGVyLXNwaW5uZXItbGl0ZSBhY3RpdmUgaGlkZGVuJD0iW1shX2lzTWVzaExvYWRpbmddXSI+CiAgICAgICAgICAgIDwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwcyhfc3RlcHMpXV0iPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19nZXRNYXhTdGVwSW5kZXgoX3N0ZXBzKV1dIgogICAgICAgICAgICBtYXgtbWFya2Vycz0iW1tfZ2V0TWF4U3RlcEluZGV4KF9zdGVwcyldXSIKICAgICAgICAgICAgc25hcHMKICAgICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgICAgdmFsdWU9Int7X3N0ZXBJbmRleH19IgogICAgICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8c3R5bGU+CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDFweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDFweDsKICAgICAgfQogICAgICAudGYtbWVzaC1sb2FkZXItaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwNXB4OwogICAgICB9CiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sa24ucHJvdG90eXBlLCJydW4iLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sa24ucHJvdG90eXBlLCJ0YWciLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sa24ucHJvdG90eXBlLCJzYW1wbGUiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXJ9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sa24ucHJvdG90eXBlLCJvZlNhbXBsZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sa24ucHJvdG90eXBlLCJzZWxlY3RlZFZpZXciLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxrbi5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixBZSldLGtuLnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsRDYpXSxrbi5wcm90b3R5cGUsIl9tZXNoVmlld2VyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLENQKV0sa24ucHJvdG90eXBlLCJfZGF0YVByb3ZpZGVyIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGtuLnByb3RvdHlwZSwiX2NvbG9yU2NhbGVGdW5jdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLGtuLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApO0UoW0Eoe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxrbi5wcm90b3R5cGUsIl9zdGVwSW5kZXgiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxrbi5wcm90b3R5cGUsIl9tZXNoVmlld2VyQXR0YWNoZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxrbi5wcm90b3R5cGUsIl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sa24ucHJvdG90eXBlLCJfaXNNZXNoTG9hZGluZyIsdm9pZCAwKTtFKFtSdCgicnVuIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sa24ucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpO0UoW0J0KCJydW4iLCJ0YWciLCJhY3RpdmUiLCJfZGF0YVByb3ZpZGVyIiwiX21lc2hWaWV3ZXIiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGtuLnByb3RvdHlwZSwicmVsb2FkIixudWxsKTtFKFtCdCgiX2N1cnJlbnRTdGVwLioiLCJfbWVzaFZpZXdlciIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sa24ucHJvdG90eXBlLCJfdXBkYXRlU2NlbmUiLG51bGwpO0UoW0J0KCJfY3VycmVudFN0ZXAiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGtuLnByb3RvdHlwZSwiX2RlYm91bmNlZEZldGNoTWVzaCIsbnVsbCk7RShbUnQoIl9zdGVwcyIsIl9zdGVwSW5kZXgiKSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxrbi5wcm90b3R5cGUsIl9jdXJyZW50U3RlcCIsbnVsbCk7RShbUnQoIl9jdXJyZW50U3RlcCIpLHcoImRlc2lnbjp0eXBlIixOdW1iZXIpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGtuLnByb3RvdHlwZSwiX3N0ZXBWYWx1ZSIsbnVsbCk7RShbUnQoIl9jdXJyZW50U3RlcCIpLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGtuLnByb3RvdHlwZSwiX2N1cnJlbnRXYWxsVGltZSIsbnVsbCk7RShbQnQoInNlbGVjdGVkVmlldyIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sa24ucHJvdG90eXBlLCJfdXBkYXRlVmlldyIsbnVsbCk7a249RShbeXQoInRmLW1lc2gtbG9hZGVyIildLGtuKTt2YXIgZmg9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3RhZ0ZpbHRlcj0iLioiLHRoaXMuX3NlbGVjdGVkVmlldz0iYWxsIix0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgQWUsd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsKCk9Pnt0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemUoKX0sITEpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1fZ2V0QWxsQ2hpbGRyZW4oKXt2YXIgdDtyZXR1cm4gQXJyYXkuZnJvbSgodD10aGlzLnNoYWRvd1Jvb3QpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1tZXNoLWxvYWRlciIpKX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZWQodCl7dGhpcy5fc2VsZWN0ZWRWaWV3PT0ic2hhcmUiJiZ0aGlzLl9nZXRBbGxDaGlsZHJlbigpLmZvckVhY2gocj0+e3QudGFyZ2V0IT1yJiZyLnNldENhbWVyYVZpZXdwb2ludCh0LmRldGFpbC5wb3NpdGlvbix0LmRldGFpbC5mYXIsdC5kZXRhaWwudGFyZ2V0KX0pfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4odGhpcy5fcmVsb2FkTWVzaGVzLmJpbmQodGhpcykpfV9oYW5kbGVXaW5kb3dSZXNpemUoKXt0aGlzLl9nZXRBbGxDaGlsZHJlbigpLmZvckVhY2godD0+e3QucmVkcmF3KCl9KX1fZmV0Y2hUYWdzKCl7bGV0IHQ9dmUoKS5wbHVnaW5Sb3V0ZSgibWVzaCIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57aWYoc3guaXNFcXVhbChyLHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2xldCBuPXN4Lm1hcFZhbHVlcyhyLG89Pk9iamVjdC5rZXlzKG8pKSxpPVhpKG4pO3RoaXMuX2RhdGFOb3RGb3VuZD1pLmxlbmd0aD09PTAsdGhpcy5fcnVuVG9UYWdJbmZvPXJ9KX1fcmVsb2FkTWVzaGVzKCl7dGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKHQ9Pnt0LnJlbG9hZCgpfSl9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fcnVuVG9UYWdJbmZvLHI9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyO2xldCBpPXN4Lm1hcFZhbHVlcyh0LGw9Pk9iamVjdC5rZXlzKGwpKSxvPVpsKGkscixuKTtmdW5jdGlvbiBhKGwpe2xldCBjPXRbbC5ydW5dW2wudGFnXS5zYW1wbGVzO3JldHVybiBzeC5yYW5nZShjKS5tYXAodT0+T2JqZWN0LmFzc2lnbih7fSxsLHtzYW1wbGU6dSxvZlNhbXBsZXM6Y30pKX1yZXR1cm4gby5tYXAobD0+T2JqZWN0LmFzc2lnbih7fSxsLHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sbC5pdGVtcy5tYXAoYSkpfSkpfX07ZmgudGVtcGxhdGU9UWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IHNsb3Q9InNpZGViYXIiIGNsYXNzPSJhbGwtY29udHJvbHMiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiB2aWV3LWNvbnRyb2wiPgogICAgICAgICAgICA8aDMgY2xhc3M9InRpdGxlIj5Qb2ludCBvZiB2aWV3PC9oMz4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgICAgICAgIGlkPSJ2aWV3LXJhZGlvLWdyb3VwIgogICAgICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVmlld319IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9ImFsbC1yYWRpby1idXR0b24iIG5hbWU9ImFsbCI+CiAgICAgICAgICAgICAgICAgIERpc3BsYXkgYWxsIHBvaW50cwogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0iYWxsLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIFpvb20gYW5kIGNlbnRlciBjYW1lcmEgdG8gZGlzcGxheSBhbGwgcG9pbnRzIGF0IG9uY2UuIE5vdGUsCiAgICAgICAgICAgICAgICAgIHRoYXQgc29tZSBwb2ludHMgY291bGQgYmUgdG9vIGZhciAoaS5lLiB0b28gc21hbGwpIHRvIGJlCiAgICAgICAgICAgICAgICAgIHZpc2libGUuCiAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJ1c2VyLXJhZGlvLWJ1dHRvbiIgbmFtZT0idXNlciI+CiAgICAgICAgICAgICAgICAgIEN1cnJlbnQgdmlldwogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0idXNlci1yYWRpby1idXR0b24iCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBLZWVwIGN1cnJlbnQgY2FtZXJhIHBvc2l0aW9uIGFuZCB6b29tIGxldmVsLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0ic2hhcmUtcmFkaW8tYnV0dG9uIiBuYW1lPSJzaGFyZSI+CiAgICAgICAgICAgICAgICAgIFNoYXJlIHZpZXdwb2ludAogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgIGZvcj0ic2hhcmUtcmFkaW8tYnV0dG9uIgogICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgU2hhcmUgdmlld3BvaW50IGFtb25nIGFsbCBjYW1lcmFzLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHBvaW50IGNsb3VkIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHBvaW50IGNsb3VkIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1tZXNoLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLXZpZXc9IltbX3NlbGVjdGVkVmlld11dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHNhbXBsZT0iW1tpdGVtLnNhbXBsZV1dIgogICAgICAgICAgICAgICAgICBvZi1zYW1wbGVzPSJbW2l0ZW0ub2ZTYW1wbGVzXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgY2xhc3M9InRmLW1lc2gtbG9hZGVyLWNvbnRhaW5lciIKICAgICAgICAgICAgICAgICAgb24tY2FtZXJhLXBvc2l0aW9uLWNoYW5nZT0iX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2VkIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPC90Zi1tZXNoLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgfQogICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICB9CgogICAgICAucnVucy1zZWxlY3RvciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CgogICAgICB0Zi1ydW5zLXNlbGVjdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIGgzLnRpdGxlIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC52aWV3LWNvbnRyb2wgcGFwZXItcmFkaW8tZ3JvdXAgewogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQogICAgICAvKiBMYXlvdXQgbXVzdCBiZSBob3Jpem9udGFsLCBpLmUuIGl0ZW1zIGFycmFuZ2VkIGluIGEgcm93LiBJZiBpdGVtcyBjYW5ub3QgZml0IGluIGEgcm93LAogICAgICAgKiB0aGV5IHNob3VsZCBiZSBtb3ZlZCB0byBuZXh0IGxpbmUuIEFsbCBpdGVtcyBtdXN0IGJlIHNxdWFyZSBhdCBhbGwgdGltZXMuIE1pbmltdW0gc2l6ZSBvZgogICAgICAgKiB0aGUgaXRlbSBpcyA0ODBweC4gVGhpcyBtZWFucyB0aGF0IG1heGltdW0gc2l6ZSBvZiB0aGUgaXRlbSBtdXN0IGJlIDQ4MHB4ICsgNDc5cHggPSA5NTlweC4KICAgICAgICogKi8KICAgICAgLmhvcml6b250YWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgdGYtbWVzaC1sb2FkZXIgewogICAgICAgIHdpZHRoOiA0ODBweDsKICAgICAgICBmbGV4LWJhc2lzOiA0ODBweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGZoLnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sZmgucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGZoLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGZoLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxmaC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLGZoLnByb3RvdHlwZSwiX3NlbGVjdGVkVmlldyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxmaC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKTtFKFtSdCgiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiksdygiZGVzaWduOnR5cGUiLEFycmF5KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxmaC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKTtmaD1FKFt5dCgibWVzaC1kYXNoYm9hcmQiKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxmaCk7dmFyIEtVPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9pbnN0YWxsQ29tbWFuZD0icGlwIGluc3RhbGwgLVUgdGVuc29yYm9hcmQtcGx1Z2luLXByb2ZpbGUifV9jb3B5SW5zdGFsbENvbW1hbmQoKXtyZXR1cm4gcnUodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCB0PSgpPT5ydSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy4kLmNvbW1hbmRUZXh0YXJlYS5zZWxlY3QoKTt0cnl7eWllbGQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5faW5zdGFsbENvbW1hbmQpfWNhdGNoKGkpe2lmKCFkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpKXJldHVybiBQcm9taXNlLnJlamVjdCgpfX0pLHI9dGhpcy4kLmNvcGllZE1lc3NhZ2U7dHJ5e3lpZWxkIHQoKSxyLmlubmVyVGV4dD0iQ29waWVkLiJ9Y2F0Y2gobil7ci5pbm5lclRleHQ9IkZhaWxlZCB0byBjb3B5IHRvIGNsaXBib2FyZC4ifX0pfV9yZW1vdmVDb3BpZWRNZXNzYWdlKCl7bGV0IHQ9dGhpcy4kLmNvcGllZE1lc3NhZ2U7dC5pbm5lclRleHQ9IiJ9fTtLVS50ZW1wbGF0ZT1RYAogICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgIDxoMz5UaGUgcHJvZmlsZSBwbHVnaW4gaGFzIG1vdmVkLjwvaDM+CiAgICAgIDxwPgogICAgICAgIFBsZWFzZSBpbnN0YWxsIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgcHJvZmlsZSBwbHVnaW4gZnJvbSBQeVBJIGJ5CiAgICAgICAgcnVubmluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSB0aGUgbWFjaGluZSBydW5uaW5nIFRlbnNvckJvYXJkOgogICAgICA8L3A+CiAgICAgIDx0ZXh0YXJlYQogICAgICAgIGlkPSJjb21tYW5kVGV4dGFyZWEiCiAgICAgICAgcmVhZG9ubHk9IiIKICAgICAgICByb3dzPSIxIgogICAgICAgIG9uLWJsdXI9Il9yZW1vdmVDb3BpZWRNZXNzYWdlIgogICAgICA+CltbX2luc3RhbGxDb21tYW5kXV08L3RleHRhcmVhCiAgICAgID4KICAgICAgPGRpdiBpZD0iY29weUNvbnRhaW5lciI+CiAgICAgICAgPHNwYW4gaWQ9ImNvcGllZE1lc3NhZ2UiPjwvc3Bhbj4KICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZD0iIiBvbi10YXA9Il9jb3B5SW5zdGFsbENvbW1hbmQiCiAgICAgICAgICA+Q29weSB0byBjbGlwYm9hcmQ8L3BhcGVyLWJ1dHRvbgogICAgICAgID4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubWVzc2FnZSB7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgIH0KICAgICAgI2NvbW1hbmRUZXh0YXJlYSB7CiAgICAgICAgbWFyZ2luLXRvcDogMWV4OwogICAgICAgIHBhZGRpbmc6IDFleCAxZW07CiAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAjY29weUNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAjY29waWVkTWVzc2FnZSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgcGFkZGluZy1yaWdodDogMWVtOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpTdHJpbmd9KSx3KCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS1UucHJvdG90eXBlLCJfaW5zdGFsbENvbW1hbmQiLHZvaWQgMCk7S1U9RShbeXQoInRmLXByb2ZpbGUtcmVkaXJlY3QtZGFzaGJvYXJkIildLEtVKTt2YXIgbG09RWUoT2UoKSwxKTt2YXIgT2w9RWUoT2UoKSwxKSxaVT1FZShibCgpLDEpO3ZhciBubj1jbGFzcyBleHRlbmRzIG10e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeT17fSx0aGlzLl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5PXt9LHRoaXMuX2NvbG9yU2NhbGVGdW5jdGlvbj17c2NhbGU6Zm59LHRoaXMuX2NhbmNlbGxlcj1uZXcgYW4sdGhpcy5feENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZD0oKT0+e2xldCB0PW5ldyBaVS5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IFpVLkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKSxhY2Nlc3NvcjpyPT5yLnJlY2FsbH19LHRoaXMuX3lWYWx1ZUFjY2Vzc29yPXQ9PnQucHJlY2lzaW9uLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2xldCB0PUd1KGUwKSxyPW49PmlzTmFOKG4pPyJOYU4iOnQobik7cmV0dXJuW3t0aXRsZToiUnVuIixldmFsdWF0ZTpuPT5uLmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlRocmVzaG9sZCIsZXZhbHVhdGU6bj0+cihuLmRhdHVtLnRocmVzaG9sZHMpfSx7dGl0bGU6IlByZWNpc2lvbiIsZXZhbHVhdGU6bj0+cihuLmRhdHVtLnByZWNpc2lvbil9LHt0aXRsZToiUmVjYWxsIixldmFsdWF0ZTpuPT5yKG4uZGF0dW0ucmVjYWxsKX0se3RpdGxlOiJUUCIsZXZhbHVhdGU6bj0+bi5kYXR1bS50cnVlX3Bvc2l0aXZlc30se3RpdGxlOiJGUCIsZXZhbHVhdGU6bj0+bi5kYXR1bS5mYWxzZV9wb3NpdGl2ZXN9LHt0aXRsZToiVE4iLGV2YWx1YXRlOm49Pm4uZGF0dW0udHJ1ZV9uZWdhdGl2ZXN9LHt0aXRsZToiRk4iLGV2YWx1YXRlOm49Pm4uZGF0dW0uZmFsc2VfbmVnYXRpdmVzfV19KSgpLHRoaXMuX3Nlcmllc0RhdGFGaWVsZHM9WyJ0aHJlc2hvbGRzIiwicHJlY2lzaW9uIiwicmVjYWxsIiwidHJ1ZV9wb3NpdGl2ZXMiLCJmYWxzZV9wb3NpdGl2ZXMiLCJ0cnVlX25lZ2F0aXZlcyIsImZhbHNlX25lZ2F0aXZlcyJdLHRoaXMuX2RlZmF1bHRYUmFuZ2U9Wy0uMDUsMS4wNV0sdGhpcy5fZGVmYXVsdFlSYW5nZT1bLS4wNSwxLjA1XSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxyLG4pPT57bGV0IG89dmUoKS5wbHVnaW5Sb3V0ZSgicHJfY3VydmVzIiwiL3ByX2N1cnZlcyIpO1Byb21pc2UuYWxsKHQubWFwKGE9PntsZXQgcz1hLGw9dGhpcy50YWcsYz1DbihvLHt0YWc6bCxydW46c30pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYykudGhlbih1PT52b2lkIHIoe2l0ZW06YSxkYXRhOnV9KSl9KSkuZmluYWxseSgoKT0+dm9pZCBuKCkpfSx0aGlzLl9zbW9vdGhpbmdFbmFibGVkPSExfV9jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKCl7cmV0dXJuKHQscixuKT0+e3RoaXMuc2V0KCJfcnVuVG9EYXRhT3ZlclRpbWUiLE9iamVjdC5hc3NpZ24oe30sdGhpcy5fcnVuVG9EYXRhT3ZlclRpbWUsbikpfX1fY29tcHV0ZVJ1bkNvbG9yKHQpe3JldHVybiBmbih0KX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fYXR0YWNoZWQ9ITAsdGhpcy5yZWxvYWQoKX1fZ2V0Q2hhcnREYXRhTG9hZGVyKCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5zaGFkb3dSb290KT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQucXVlcnlTZWxlY3RvcigidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpfXJlbG9hZCgpe2lmKCEhdGhpcy5fYXR0YWNoZWQpe2lmKHRoaXMucnVucy5sZW5ndGg9PT0wKXt0aGlzLnNldCgiX3J1blRvRGF0YU92ZXJUaW1lIix7fSk7cmV0dXJufXRoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpLnJlbG9hZCgpfX1fc2V0Q2hhcnREYXRhKCl7dmFyIHQ9dGhpcy5fcnVuVG9QckN1cnZlRW50cnkscj10aGlzLl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5LG49dGhpcy5fc2V0T2ZSZWxldmFudFJ1bnM7T2wuZm9yT3duKHQsKGksbyk9PntsZXQgYT1yW29dO2lmKCEoYSYmdFtvXS5zdGVwPT09YS5zdGVwKSl7aWYoIW5bb10pe3RoaXMuX2NsZWFyU2VyaWVzRGF0YShvKTtyZXR1cm59dGhpcy5fdXBkYXRlU2VyaWVzRGF0YUZvclJ1bihvLGkpfX0pfV91cGRhdGVTZXJpZXNEYXRhRm9yUnVuKHQscil7bGV0IG49T2wucmVkdWNlKHRoaXMuX3Nlcmllc0RhdGFGaWVsZHMsKGEscyk9PihhW3NdPXJbc10uc2xpY2UoKS5yZXZlcnNlKCksYSkse30pLGk9bmV3IEFycmF5KG5bdGhpcy5fc2VyaWVzRGF0YUZpZWxkc1swXV0ubGVuZ3RoKTtmb3IobGV0IGE9MDthPGkubGVuZ3RoO2ErKylpW2FdPU9sLm1hcFZhbHVlcyhuLHM9PnNbYV0pO2xldCBvPXRoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpO28uc2V0U2VyaWVzRGF0YSh0LGkpLG8uY29tbWl0Q2hhbmdlcygpfV9jbGVhclNlcmllc0RhdGEodCl7bGV0IHI9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCk7ci5zZXRTZXJpZXNEYXRhKHQsW10pLHIuY29tbWl0Q2hhbmdlcygpfV91cGRhdGVSdW5Ub1ByQ3VydmVFbnRyeSgpe3ZhciB0PXRoaXMuX3J1blRvRGF0YU92ZXJUaW1lLHI9dGhpcy5ydW5Ub1N0ZXBDYXA7bGV0IG49e307T2wuZm9yT3duKHQsKGksbyk9PnshaXx8IWkubGVuZ3RofHwobltvXT10aGlzLl9jb21wdXRlRW50cnlDbG9zZXN0T3JFcXVhbFRvU3RlcENhcChyW29dLGkpKX0pLHRoaXMuc2V0KCJfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSIsdGhpcy5fcnVuVG9QckN1cnZlRW50cnkpLHRoaXMuc2V0KCJfcnVuVG9QckN1cnZlRW50cnkiLG4pfV9ub3RpZnlEYXRhQ2hhbmdlKCl7dmFyIHQ9dGhpcy5fcnVuVG9EYXRhT3ZlclRpbWU7dGhpcy5vbkRhdGFDaGFuZ2UmJnRoaXMub25EYXRhQ2hhbmdlKHQpfV9jb21wdXRlRW50cnlDbG9zZXN0T3JFcXVhbFRvU3RlcENhcCh0LHIpe2xldCBuPU1hdGgubWluKE9sLnNvcnRlZEluZGV4KHIubWFwKGk9Pmkuc3RlcCksdCksci5sZW5ndGgtMSk7cmV0dXJuIHJbbl19Z2V0IF9ydW5zV2l0aFN0ZXBBdmFpbGFibGUoKXt2YXIgdD10aGlzLnJ1bnMscj10aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeTtyZXR1cm4gT2wuZmlsdGVyKHQsbj0+cltuXSkuc29ydCgpfWdldCBfc2V0T2ZSZWxldmFudFJ1bnMoKXt2YXIgdD10aGlzLl9ydW5zV2l0aFN0ZXBBdmFpbGFibGU7bGV0IHI9e307cmV0dXJuIE9sLmZvckVhY2godCxuPT57cltuXT0hMH0pLHJ9X2NvbXB1dGVDdXJyZW50U3RlcEZvclJ1bih0LHIpe2xldCBuPXRbcl07cmV0dXJuIG4/bi5zdGVwOm51bGx9X2NvbXB1dGVDdXJyZW50V2FsbFRpbWVGb3JSdW4odCxyKXtsZXQgbj10W3JdO3JldHVybiBuP25ldyBEYXRlKG4ud2FsbF90aW1lKjFlMykudG9TdHJpbmcoKTpudWxsfV90b2dnbGVFeHBhbmRlZCh0KXt0aGlzLnNldCgiX2V4cGFuZGVkIiwhdGhpcy5fZXhwYW5kZWQpLHRoaXMucmVkcmF3KCl9X3Jlc2V0RG9tYWluKCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVzZXREb21haW4oKX1yZWRyYXcoKXt0aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKS5yZWRyYXcoKX19O25uLnRlbXBsYXRlPVFgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgeC1jb21wb25lbnRzLWNyZWF0aW9uLW1ldGhvZD0iW1tfeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICB5LXZhbHVlLWFjY2Vzc29yPSJbW195VmFsdWVBY2Nlc3Nvcl1dIgogICAgICB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iCiAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlRnVuY3Rpb25dXSIKICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW19kZWZhdWx0WFJhbmdlXV0iCiAgICAgIGRlZmF1bHQteS1yYW5nZT0iW1tfZGVmYXVsdFlSYW5nZV1dIgogICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgZGF0YS1zZXJpZXM9IltbcnVuc11dIgogICAgICBsb2FkLWtleT0iW1t0YWddXSIKICAgICAgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIgogICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKV1dIgogICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICA+PC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgoKICAgIDxkaXYgaWQ9ImJ1dHRvbnMtcm93Ij4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iUmVzZXQgYXhlcyB0byBbMCwgMV0uIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9InN0ZXAtbGVnZW5kIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcnVuc1dpdGhTdGVwQXZhaWxhYmxlXV0iIGFzPSJydW4iPgogICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1yb3ciPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iY29sb3ItYm94IgogICAgICAgICAgICBzdHlsZT0iYmFja2dyb3VuZDogW1tfY29tcHV0ZVJ1bkNvbG9yKHJ1bildXTsiCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICBbW3J1bl1dIGlzIGF0CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcC1sYWJlbC10ZXh0Ij4KICAgICAgICAgICAgc3RlcCBbW19jb21wdXRlQ3VycmVudFN0ZXBGb3JSdW4oX3J1blRvUHJDdXJ2ZUVudHJ5LCBydW4pXV0gPC9zcGFuCiAgICAgICAgICA+PGJyIC8+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2FsbC10aW1lLWxhYmVsLXRleHQiPgogICAgICAgICAgICAoW1tfY29tcHV0ZUN1cnJlbnRXYWxsVGltZUZvclJ1bihfcnVuVG9QckN1cnZlRW50cnksIHJ1bildXSkKICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogNTAwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgIH0KICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICB0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIHsKICAgICAgICBoZWlnaHQ6IDMwMHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciB7CiAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CiAgICAgICNzdGVwLWxlZ2VuZCB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBmb250LXNpemU6IDAuOGVtOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAubGVnZW5kLXJvdyB7CiAgICAgICAgbWFyZ2luOiA1cHggMCA1cHggMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuY29sb3ItYm94IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMXB4OwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgfQogICAgICAuc3RlcC1sYWJlbC10ZXh0IHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICAud2FsbC10aW1lLWxhYmVsLXRleHQgewogICAgICAgIGNvbG9yOiAjODg4OwogICAgICAgIGZvbnQtc2l6ZTogMC44ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYDtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sbm4ucHJvdG90eXBlLCJydW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLG5uLnByb3RvdHlwZSwidGFnIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLG5uLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm4ucHJvdG90eXBlLCJydW5Ub1N0ZXBDYXAiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsQWUpXSxubi5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbm4ucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbm4ucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm4ucHJvdG90eXBlLCJfcnVuVG9QckN1cnZlRW50cnkiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm4ucHJvdG90eXBlLCJfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxubi5wcm90b3R5cGUsIl9ydW5Ub0RhdGFPdmVyVGltZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLG5uLnByb3RvdHlwZSwib25EYXRhQ2hhbmdlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLG5uLnByb3RvdHlwZSwiX2NvbG9yU2NhbGVGdW5jdGlvbiIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixhbildLG5uLnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLG5uLnByb3RvdHlwZSwiX2F0dGFjaGVkIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLG5uLnByb3RvdHlwZSwiX3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbm4ucHJvdG90eXBlLCJfeVZhbHVlQWNjZXNzb3IiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLG5uLnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxubi5wcm90b3R5cGUsIl9zZXJpZXNEYXRhRmllbGRzIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxubi5wcm90b3R5cGUsIl9kZWZhdWx0WFJhbmdlIix2b2lkIDApO0UoW0Eoe3R5cGU6QXJyYXl9KSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpXSxubi5wcm90b3R5cGUsIl9kZWZhdWx0WVJhbmdlIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sbm4ucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxubi5wcm90b3R5cGUsIl9zbW9vdGhpbmdFbmFibGVkIix2b2lkIDApO0UoW0J0KCJydW5zIiwidGFnIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxubi5wcm90b3R5cGUsInJlbG9hZCIsbnVsbCk7RShbQnQoIl9ydW5Ub1ByQ3VydmVFbnRyeSIsIl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5IiwiX3NldE9mUmVsZXZhbnRSdW5zIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxubi5wcm90b3R5cGUsIl9zZXRDaGFydERhdGEiLG51bGwpO0UoW0J0KCJfcnVuVG9EYXRhT3ZlclRpbWUiLCJydW5Ub1N0ZXBDYXAiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLG5uLnByb3RvdHlwZSwiX3VwZGF0ZVJ1blRvUHJDdXJ2ZUVudHJ5IixudWxsKTtFKFtCdCgiX3J1blRvRGF0YU92ZXJUaW1lIiksdygiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pLHcoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxubi5wcm90b3R5cGUsIl9ub3RpZnlEYXRhQ2hhbmdlIixudWxsKTtFKFtSdCgicnVucyIsIl9ydW5Ub1ByQ3VydmVFbnRyeSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbm4ucHJvdG90eXBlLCJfcnVuc1dpdGhTdGVwQXZhaWxhYmxlIixudWxsKTtFKFtSdCgiX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSIpLHcoImRlc2lnbjp0eXBlIixPYmplY3QpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLG5uLnByb3RvdHlwZSwiX3NldE9mUmVsZXZhbnRSdW5zIixudWxsKTtubj1FKFt5dCgidGYtcHItY3VydmUtY2FyZCIpXSxubik7dmFyIHdNPUVlKE9lKCksMSk7dmFyIHRwPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3J1blRvU3RlcEluZGV4PXt9fV9jb21wdXRlQ29sb3JGb3JSdW4odCl7cmV0dXJuIGZuKHQpfV9jb21wdXRlVGltZVRleHRGb3JSdW4odCxyLG4saSl7bGV0IG89cltuXTtpZighd00uaXNOdW1iZXIobykpcmV0dXJuIiI7bGV0IGE9dFtuXTtpZighYSlyZXR1cm4iIjtsZXQgcz1hW29dW2ldO2lmKGk9PT0ic3RlcCIpcmV0dXJuYHN0ZXAgJHtzfWA7aWYoaT09PSJyZWxhdGl2ZSIpcmV0dXJuIHM8MT9gJHsocyoxZTMpLnRvRml4ZWQoMil9IG1zYDpgJHtzLnRvRml4ZWQoMil9IHNgO2lmKGk9PT0id2FsbF90aW1lIilyZXR1cm4gbmV3IERhdGUocyoxZTMpLnRvU3RyaW5nKCk7dGhyb3cgbmV3IEVycm9yKGBUaGUgZGlzcGxheSB0eXBlIG9mICR7aX0gaXMgbm90IHJlY29nbml6ZWQuYCl9X3NsaWRlclZhbHVlQ2hhbmdlZCh0KXtsZXQgcj10LnRhcmdldC5kYXRhc2V0LnJ1bixuPXQudGFyZ2V0LmltbWVkaWF0ZVZhbHVlLGk9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub1N0ZXBJbmRleCk7aXNOYU4obik/ZGVsZXRlIGlbcl06aVtyXT10LnRhcmdldC5pbW1lZGlhdGVWYWx1ZSx0aGlzLl9ydW5Ub1N0ZXBJbmRleD1pfV9jb21wdXRlTWF4U3RlcEluZGV4Rm9yUnVuKHQscil7bGV0IG49dFtyXTtyZXR1cm4gbiYmbi5sZW5ndGg/bi5sZW5ndGgtMTowfV91cGRhdGVTdGVwc0Zvck5ld1J1bnMoKXt2YXIgdD10aGlzLnJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXM7bGV0IHI9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub1N0ZXBJbmRleCk7d00uZm9yT3duKHQsKG4saSk9Pnt3TS5pc051bWJlcihyW2ldKXx8KHJbaV09bi5sZW5ndGgtMSl9KSx0aGlzLl9ydW5Ub1N0ZXBJbmRleD1yfV9nZXRTdGVwKHQscil7cmV0dXJuIHRoaXMuX3J1blRvU3RlcEluZGV4P3RoaXMuX3J1blRvU3RlcEluZGV4W3JdOjB9X2NvbXB1dGVSdW5Ub1N0ZXAodCxyKXtsZXQgbj17fTtyZXR1cm4gd00uZm9yT3duKHIsKGksbyk9PntsZXQgYT10W29dOyFhfHwobltvXT1hW2ldLnN0ZXApfSksbn1nZXQgX3J1bnNXaXRoU2xpZGVycygpe3ZhciB0PXRoaXMucnVucyxyPXRoaXMucnVuVG9BdmFpbGFibGVUaW1lRW50cmllcztyZXR1cm4gdC5maWx0ZXIobj0+cltuXSl9fTt0cC50ZW1wbGF0ZT1RYAogICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcnVuc1dpdGhTbGlkZXJzXV0iIGFzPSJydW4iPgogICAgICA8ZGl2IGNsYXNzPSJydW4td2lkZ2V0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJydW4tZGlzcGxheS1jb250YWluZXIiPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0icnVuLWNvbG9yLWJveCIKICAgICAgICAgICAgc3R5bGU9ImJhY2tncm91bmQ6W1tfY29tcHV0ZUNvbG9yRm9yUnVuKHJ1bildXTsiCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJydW4tdGV4dCI+W1tydW5dXTwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InN0ZXAtZGlzcGxheS1jb250YWluZXIiPgogICAgICAgICAgW1tfY29tcHV0ZVRpbWVUZXh0Rm9yUnVuKHJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMsIF9ydW5Ub1N0ZXBJbmRleCwKICAgICAgICAgIHJ1biwgdGltZURpc3BsYXlUeXBlKV1dCiAgICAgICAgPC9kaXY+CiAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgZGF0YS1ydW4kPSJbW3J1bl1dIgogICAgICAgICAgc3RlcD0iMSIKICAgICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgIG1heD0iW1tfY29tcHV0ZU1heFN0ZXBJbmRleEZvclJ1bihydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBydW4pXV0iCiAgICAgICAgICB2YWx1ZT0iW1tfZ2V0U3RlcChfcnVuVG9TdGVwSW5kZXgsIHJ1bildXSIKICAgICAgICAgIG9uLWltbWVkaWF0ZS12YWx1ZS1jaGFuZ2VkPSJfc2xpZGVyVmFsdWVDaGFuZ2VkIgogICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAucnVuLXdpZGdldCB7CiAgICAgICAgbWFyZ2luOiAxMHB4IDAgMCAwOwogICAgICB9CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgbWFyZ2luOiAtOHB4IDAgMCAtMTVweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuc3RlcC1kaXNwbGF5LWNvbnRhaW5lciB7CiAgICAgICAgZm9udC1zaXplOiAwLjllbTsKICAgICAgICBtYXJnaW46IDAgMTVweCAwIDA7CiAgICAgIH0KICAgICAgLnJ1bi10ZXh0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KICAgICAgLnJ1bi1jb2xvci1ib3ggewogICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGA7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLHRwLnByb3RvdHlwZSwicnVucyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0cC5wcm90b3R5cGUsInJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLGNvbXB1dGVkOiJfY29tcHV0ZVJ1blRvU3RlcChydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBfcnVuVG9TdGVwSW5kZXgpIn0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0cC5wcm90b3R5cGUsInJ1blRvU3RlcCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx0cC5wcm90b3R5cGUsInRpbWVEaXNwbGF5VHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0cC5wcm90b3R5cGUsIl9ydW5Ub1N0ZXBJbmRleCIsdm9pZCAwKTtFKFtCdCgicnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIpLHcoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSx3KCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdHAucHJvdG90eXBlLCJfdXBkYXRlU3RlcHNGb3JOZXdSdW5zIixudWxsKTtFKFtSdCgicnVucyIsInJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiKSx3KCJkZXNpZ246dHlwZSIsQXJyYXkpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHRwLnByb3RvdHlwZSwiX3J1bnNXaXRoU2xpZGVycyIsbnVsbCk7dHA9RShbeXQoInRmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yIildLHRwKTt2YXIgTG89Y2xhc3MgZXh0ZW5kcyBHdChtdCl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90aW1lRGlzcGxheVR5cGU9InN0ZXAiLHRoaXMuX3NlbGVjdGVkUnVucz1bXSx0aGlzLl9ydW5Ub1RhZ0luZm89e30sdGhpcy5fdGFnVG9SdW5Ub0RhdGE9e30sdGhpcy5fZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PnQudGFnLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBBZSx0aGlzLl9zdGVwPTB9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtQcm9taXNlLmFsbChbdGhpcy5fZmV0Y2hUYWdzKCldKS50aGVuKCgpPT57dGhpcy5fcmVsb2FkQ2FyZHMoKX0pfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfV9mZXRjaFRhZ3MoKXtsZXQgdD12ZSgpLnBsdWdpblJvdXRlKCJwcl9jdXJ2ZXMiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4ocj0+e2lmKGxtLmlzRXF1YWwocix0aGlzLl9ydW5Ub1RhZ0luZm8pKXJldHVybjtsZXQgbj1sbS5tYXBWYWx1ZXMocixvPT5sbS5rZXlzKG8pKSxpPVhpKG4pO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIixpLmxlbmd0aD09PTApLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIixyKSx0aGlzLmFzeW5jKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pfSl9X3JlbG9hZENhcmRzKCl7dmFyIHQ7bG0uZm9yRWFjaCgodD10aGlzLnJvb3QpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1wci1jdXJ2ZS1jYXJkIikscj0+e3IucmVsb2FkKCl9KX1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZ0luZm8scj10aGlzLl9zZWxlY3RlZFJ1bnMsbj10aGlzLl90YWdGaWx0ZXI7bGV0IGk9bG0ubWFwVmFsdWVzKHQsbz0+T2JqZWN0LmtleXMobykpO3JldHVybiBsRShpLHIsbil9Z2V0IF9yZWxldmFudFNlbGVjdGVkUnVucygpe3ZhciB0PXRoaXMuX3NlbGVjdGVkUnVucyxyPXRoaXMuX3J1blRvVGFnSW5mbztyZXR1cm4gdC5maWx0ZXIobj0+cltuXSl9X3RhZ01ldGFkYXRhKHQscixuKXtsZXQgaT17fTtyLmZvckVhY2goYT0+e2lbYV09dFthXVtuXX0pO2xldCBvPW4ucmVwbGFjZSgvXC9wcl9jdXJ2ZXMkLywiIik7cmV0dXJuIHJSKGksbyl9X2NyZWF0ZURhdGFDaGFuZ2VDYWxsYmFjayh0KXtyZXR1cm4gcj0+e3RoaXMuc2V0KCJfdGFnVG9SdW5Ub0RhdGEiLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl90YWdUb1J1blRvRGF0YSkse1t0XTpyfSkpfX1nZXQgX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXMoKXt2YXIgdD10aGlzLl90YWdUb1J1blRvRGF0YTtsZXQgcj17fTtmb3IobGV0W2ksb11vZiBPYmplY3QuZW50cmllcyh0KSlmb3IobGV0W2Fdb2YgT2JqZWN0LmVudHJpZXMobykpKHJbYV09PW51bGx8fGk8clthXSkmJihyW2FdPWkpO2xldCBuPXt9O2ZvcihsZXRbaSxvXW9mIE9iamVjdC5lbnRyaWVzKHIpKXtsZXQgYT10W29dW2ldO25baV09YS5tYXAocz0+KHtzdGVwOnMuc3RlcCx3YWxsX3RpbWU6cy53YWxsX3RpbWUscmVsYXRpdmU6cy53YWxsX3RpbWUtYVswXS53YWxsX3RpbWV9KSl9cmV0dXJuIG59fTtMby50ZW1wbGF0ZT1RYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IKICAgICAgICAgICAgICBpZD0idGltZS10eXBlLXNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9IlRpbWUgRGlzcGxheSBUeXBlIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e190aW1lRGlzcGxheVR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8IS0tCiAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDwhLS0KICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXNdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiIgaWQ9InN0ZXBzLXNlbGVjdG9yLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHRmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yCiAgICAgICAgICAgICAgICBydW5zPSJbW19yZWxldmFudFNlbGVjdGVkUnVuc11dIgogICAgICAgICAgICAgICAgcnVuLXRvLXN0ZXA9Int7X3J1blRvU3RlcH19IgogICAgICAgICAgICAgICAgcnVuLXRvLWF2YWlsYWJsZS10aW1lLWVudHJpZXM9IltbX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXNdXSIKICAgICAgICAgICAgICAgIHRpbWUtZGlzcGxheS10eXBlPSJbW190aW1lRGlzcGxheVR5cGVdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3Rvcj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBwcmVjaXNpb27igJNyZWNhbGwgY3VydmUgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgcHJlY2lzaW9u4oCTcmVjYWxsIGRhdGEgdG8geW91ciBldmVudAogICAgICAgICAgICAgICAgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgICBnZXQtY2F0ZWdvcnktaXRlbS1rZXk9IltbX2dldENhdGVnb3J5SXRlbUtleV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLXByLWN1cnZlLWNhcmQKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBydW5zPSJbW2l0ZW0ucnVuc11dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1bnMsIGl0ZW0udGFnKV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIHJ1bi10by1zdGVwLWNhcD0iW1tfcnVuVG9TdGVwXV0iCiAgICAgICAgICAgICAgICAgIG9uLWRhdGEtY2hhbmdlPSJbW19jcmVhdGVEYXRhQ2hhbmdlQ2FsbGJhY2soaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1wci1jdXJ2ZS1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CgogICAgICAvKiogRG8gbm90IGxldCB0aGUgc3RlcHMgc2VsZWN0b3Igb2NjbHVkZSB0aGUgcnVuIHNlbGVjdG9yLiAqLwogICAgICAjc3RlcHMtc2VsZWN0b3ItY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiA2MCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTG8ucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLExvLnByb3RvdHlwZSwiX3RpbWVEaXNwbGF5VHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sTG8ucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLExvLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMby5wcm90b3R5cGUsIl90YWdUb1J1blRvRGF0YSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTG8ucHJvdG90eXBlLCJfcnVuVG9TdGVwIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTG8ucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLExvLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLExvLnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxMby5wcm90b3R5cGUsIl9nZXRDYXRlZ29yeUl0ZW1LZXkiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsQWUpXSxMby5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKTtFKFtBKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSx3KCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTG8ucHJvdG90eXBlLCJfc3RlcCIsdm9pZCAwKTtFKFtSdCgiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTG8ucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCk7RShbUnQoIl9zZWxlY3RlZFJ1bnMiLCJfcnVuVG9UYWdJbmZvIiksdygiZGVzaWduOnR5cGUiLEFycmF5KSx3KCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxMby5wcm90b3R5cGUsIl9yZWxldmFudFNlbGVjdGVkUnVucyIsbnVsbCk7RShbUnQoIl90YWdUb1J1blRvRGF0YSIpLHcoImRlc2lnbjp0eXBlIixPYmplY3QpLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLExvLnByb3RvdHlwZSwiX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiLG51bGwpO0xvPUUoW3l0KCJ0Zi1wci1jdXJ2ZS1kYXNoYm9hcmQiKV0sTG8pO3ZhciBPNj1FZShPZSgpLDEpO3ZhciBjbz1jbGFzcyBleHRlbmRzIEd0KHJiKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzPXZwKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl9zbW9vdGhpbmdXZWlnaHQ9ZEUoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KS5jYWxsKHRoaXMpLHRoaXMuX2lnbm9yZVlPdXRsaWVycz12cCgiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3hUeXBlPUVkLlNURVAsdGhpcy5fc2VsZWN0ZWRSdW5zPVtdLHRoaXMuX3RhZ0ZpbHRlcj0iIix0aGlzLl9jYXRlZ29yaWVzPVtdLHRoaXMuX2dldENhdGVnb3J5SXRlbUtleT10PT50LnRhZyx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgQWUoNTApLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXI9eHAoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSx0aGlzLl9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlcj1tRSgiX3Ntb290aGluZ1dlaWdodCIse2RlZmF1bHRWYWx1ZTouNn0pLHRoaXMuX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyPXhwKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pfWdldCBfc21vb3RoaW5nRW5hYmxlZCgpe3ZhciB0PXRoaXMuX3Ntb290aGluZ1dlaWdodDtyZXR1cm4gdD4wfV9nZXRDYXRlZ29yeUtleSh0KXtyZXR1cm4gdC5tZXRhZGF0YS50eXBlPT1SYS5TRUFSQ0hfUkVTVUxUUz8iIjp0Lm5hbWV9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgpPT57dGhpcy5fcmVsb2FkQ2hhcnRzKCl9KX1fZmV0Y2hUYWdzKCl7bGV0IHQ9dmUoKS5wbHVnaW5Sb3V0ZSgic2NhbGFycyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57aWYoTzYuaXNFcXVhbChyLHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2xldCBuPU82Lm1hcFZhbHVlcyhyLG89Pk9iamVjdC5rZXlzKG8pKSxpPVhpKG4pO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIixpLmxlbmd0aD09PTApLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIixyKSx0aGlzLmFzeW5jKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pfSl9X3JlbG9hZENoYXJ0cygpe3ZhciB0Oyh0PXRoaXMucm9vdCk9PT1udWxsfHx0PT09dm9pZCAwfHx0LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLXNjYWxhci1jYXJkIikuZm9yRWFjaChyPT57ci5yZWxvYWQoKX0pfV91cGRhdGVDYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fcnVuVG9UYWdJbmZvLHI9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyO2xldCBpLG89bixhPU82Lm1hcFZhbHVlcyh0LHM9Pk9iamVjdC5rZXlzKHMpKTtpPWxFKGEscixvKSxpLmZvckVhY2gocz0+e3MuaXRlbXM9cy5pdGVtcy5tYXAobD0+KHt0YWc6bC50YWcsc2VyaWVzOmwucnVucy5tYXAoYz0+KHtydW46Yyx0YWc6bC50YWd9KSl9KSl9KSx0aGlzLnVwZGF0ZUFycmF5UHJvcCgiX2NhdGVnb3JpZXMiLGksdGhpcy5fZ2V0Q2F0ZWdvcnlLZXkpfV90YWdNZXRhZGF0YSh0LHIsbil7bGV0IGk9dC5uYW1lLG89bi50YWcsYT17fTtuLnNlcmllcy5mb3JFYWNoKCh7cnVuOnV9KT0+e2FbdV09clt1XVtvXX0pO2xldCBzPW8ucmVwbGFjZSgvXC9zY2FsYXJfc3VtbWFyeSQvLCIiKSx7ZGVzY3JpcHRpb246bCxkaXNwbGF5TmFtZTpjfT1yUihhLHMpO3JldHVybiB0Lm1ldGFkYXRhLnR5cGU9PVJhLlBSRUZJWF9HUk9VUCYmYy5zdGFydHNXaXRoKGkrIi8iKSYmKGM9Yy5zbGljZShpLmxlbmd0aCsxKSkse2Rlc2NyaXB0aW9uOmwsZGlzcGxheU5hbWU6Y319fTtjby50ZW1wbGF0ZT1RYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgICBpZD0ic2hvdy1kb3dubG9hZC1saW5rcyIKICAgICAgICAgICAgICAgIGNoZWNrZWQ9Int7X3Nob3dEb3dubG9hZExpbmtzfX0iCiAgICAgICAgICAgICAgICA+U2hvdyBkYXRhIGRvd25sb2FkIGxpbmtzPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxpbmUtaXRlbSI+CiAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgICBpZD0iaWdub3JlLXktb3V0bGllciIKICAgICAgICAgICAgICAgIGNoZWNrZWQ9Int7X2lnbm9yZVlPdXRsaWVyc319IgogICAgICAgICAgICAgICAgPklnbm9yZSBvdXRsaWVycyBpbiBjaGFydCBzY2FsaW5nPC9wYXBlci1jaGVja2JveAogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZyI+CiAgICAgICAgICAgICAgPGRpdj5Ub29sdGlwIHNvcnRpbmcgbWV0aG9kOjwvZGl2PgogICAgICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgICAgICAgICAgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfdG9vbHRpcFNvcnRpbmdNZXRob2R9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9IjAiCiAgICAgICAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlZmF1bHQ8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmFzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+bmVhcmVzdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtc21vb3RoaW5nLWlucHV0CiAgICAgICAgICAgICAgd2VpZ2h0PSJ7e19zbW9vdGhpbmdXZWlnaHR9fSIKICAgICAgICAgICAgICBzdGVwPSIwLjAwMSIKICAgICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgICAgbWF4PSIwLjk5OSIKICAgICAgICAgICAgPjwvdGYtc21vb3RoaW5nLWlucHV0PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9IngtdHlwZS1zZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIb3Jpem9udGFsIEF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBzY2FsYXIgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHNjYWxhciBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgICAgZ2V0LWNhdGVnb3J5LWl0ZW0ta2V5PSJbW19nZXRDYXRlZ29yeUl0ZW1LZXldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1zY2FsYXItY2FyZAogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIGRhdGEtdG8tbG9hZD0iW1tpdGVtLnNlcmllc11dIgogICAgICAgICAgICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tfaWdub3JlWU91dGxpZXJzXV0iCiAgICAgICAgICAgICAgICAgIG11bHRpLWV4cGVyaW1lbnRzPSJbW19nZXRNdWx0aUV4cGVyaW1lbnRzKGRhdGFTZWxlY3Rpb24pXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgc2hvdy1kb3dubG9hZC1saW5rcz0iW1tfc2hvd0Rvd25sb2FkTGlua3NdXSIKICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9IltbX3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tfc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfdGFnTWV0YWRhdGEoY2F0ZWdvcnksIF9ydW5Ub1RhZ0luZm8sIGl0ZW0pXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW190b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgICAgICAgICAgICB4LXR5cGU9IltbX3hUeXBlXV0iCiAgICAgICAgICAgICAgICAgIGJhdGNoLXNpemU9IltbZmVhdHVyZUZsYWdzLnNjYWxhcnNCYXRjaFNpemVdXSIKICAgICAgICAgICAgICAgICAgaW4tY29sYWI9IltbZmVhdHVyZUZsYWdzLmluQ29sYWJdXSIKICAgICAgICAgICAgICAgID48L3RmLXNjYWxhci1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAtc29ydGluZyBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgd2lkdGg6IDEwNXB4OwogICAgICB9CgogICAgICAubGluZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIC5jZW50ZXIgewogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY28ucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGNvLnByb3RvdHlwZSwiZmVhdHVyZUZsYWdzIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zaG93RG93bmxvYWRMaW5rc09ic2VydmVyIn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY28ucHJvdG90eXBlLCJfc2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCk7RShbQSh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwLG9ic2VydmVyOiJfc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXIifSksdygiZGVzaWduOnR5cGUiLE51bWJlcildLGNvLnByb3RvdHlwZSwiX3Ntb290aGluZ1dlaWdodCIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9pZ25vcmVZT3V0bGllcnNPYnNlcnZlciJ9KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGNvLnByb3RvdHlwZSwiX2lnbm9yZVlPdXRsaWVycyIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxjby5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKTtFKFtBKHt0eXBlOkFycmF5fSksdygiZGVzaWduOnR5cGUiLEFycmF5KV0sY28ucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLE9iamVjdCldLGNvLnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGNvLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxjby5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxjby5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLGNvLnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY28ucHJvdG90eXBlLCJfZ2V0Q2F0ZWdvcnlJdGVtS2V5Iix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0sY28ucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbUnQoIl9zbW9vdGhpbmdXZWlnaHQiKSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbiksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sY28ucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsbnVsbCk7RShbQnQoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGNvLnByb3RvdHlwZSwiX3VwZGF0ZUNhdGVnb3JpZXMiLG51bGwpO2NvPUUoW3l0KCJ0Zi1zY2FsYXItZGFzaGJvYXJkIildLGNvKTt2YXIgdHBlPUVlKE9lKCksMSk7dmFyIHBoPWNsYXNzIGV4dGVuZHMgR3QobXQpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZXh0cz1bXSx0aGlzLl9jYW5jZWxsZXI9bmV3IGFufWdldCBfcnVuQ29sb3IoKXt2YXIgdD10aGlzLnJ1bjtyZXR1cm4gZm4odCl9X2NoYW5nZVJ1bkNvbG9yKCl7dmFyIHQ9dGhpcy5fcnVuQ29sb3I7dGhpcy51cGRhdGVTdHlsZXMoeyItLXRiLXRleHQtbG9hZGVyLW91dGxpbmUiOnR9KX1hdHRhY2hlZCgpe3RoaXMucmVsb2FkKCl9cmVsb2FkKCl7aWYoIXRoaXMuaXNBdHRhY2hlZClyZXR1cm47dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2xldCB0PXZlKCkscj1Dbih0LnBsdWdpblJvdXRlKCJ0ZXh0IiwiL3RleHQiKSx7dGFnOnRoaXMudGFnLHJ1bjp0aGlzLnJ1bixtYXJrZG93bjp0aGlzLm1hcmtkb3duRW5hYmxlZD8idHJ1ZSI6ImZhbHNlIn0pLG49dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKGk9PntpZihpLmNhbmNlbGxlZClyZXR1cm47bGV0IG89aS52YWx1ZS5tYXAoYT0+KHt3YWxsX3RpbWU6bmV3IERhdGUoYS53YWxsX3RpbWUqMWUzKSxzdGVwOmEuc3RlcCx0ZXh0OmEudGV4dH0pKTt0aGlzLnNldCgiX3RleHRzIixvLnNsaWNlKCkucmV2ZXJzZSgpKX0pO3RoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChyKS50aGVuKG4pfV9mb3JtYXRTdGVwKHQpe3JldHVybiB4bigiLCIpKHQpfX07cGgudGVtcGxhdGU9UWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgcnVuPSJbW3J1bl1dIiB0YWc9IltbdGFnXV0iIGNvbG9yPSJbW19ydW5Db2xvcl1dIj4KICAgIDwvdGYtY2FyZC1oZWFkaW5nPgogICAgPHBhcGVyLW1hdGVyaWFsCiAgICAgIGVsZXZhdGlvbj0iMSIKICAgICAgaWQ9InN0ZXBzLWNvbnRhaW5lciIKICAgICAgY2xhc3M9ImNvbnRhaW5lciBzY3JvbGxiYXIiCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3RleHRzXV0iPgogICAgICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJzdGVwLWNvbnRhaW5lciI+CiAgICAgICAgICBzdGVwIDxzcGFuIGNsYXNzPSJzdGVwLXZhbHVlIj5bW19mb3JtYXRTdGVwKGl0ZW0uc3RlcCldXTwvc3Bhbj4KICAgICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJ0ZXh0Ij4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbaXRlbS50ZXh0XV0iPjwvdGYtbWFya2Rvd24tdmlldz4KICAgICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9wYXBlci1tYXRlcmlhbD4KICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIC5zY3JvbGxiYXIgewogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KICAgICAgI3N0ZXBzLWNvbnRhaW5lciB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIC8qIGNvbG9yIGNvbXB1dGVkIGFuZCBzZXQgYXMgaW5saW5lIHN0eWxlICovOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi10ZXh0LWxvYWRlci1vdXRsaW5lKTsKICAgICAgfQogICAgICAudGV4dCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsKICAgICAgICBib3JkZXItcmFkaXVzOiAwIDNweCAzcHggM3B4OwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5zdGVwLWNvbnRhaW5lciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRiLXVpLWJvcmRlcik7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7IC8qIHRvIGNvcnJlY3QgZm9yIGJvcmRlciAqLwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgfQogICAgICAuc3RlcC1jb250YWluZXI6bm90KDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHBoLnByb3RvdHlwZSwicnVuIix2b2lkIDApO0UoW0Eoe3R5cGU6U3RyaW5nfSksdygiZGVzaWduOnR5cGUiLFN0cmluZyldLHBoLnByb3RvdHlwZSwidGFnIix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scGgucHJvdG90eXBlLCJtYXJrZG93bkVuYWJsZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLHBoLnByb3RvdHlwZSwiX3RleHRzIix2b2lkIDApO0UoW0Eoe3R5cGU6T2JqZWN0fSksdygiZGVzaWduOnR5cGUiLEFlKV0scGgucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixhbildLHBoLnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKTtFKFtSdCgicnVuIiksdygiZGVzaWduOnR5cGUiLFN0cmluZyksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scGgucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpO0UoW0J0KCJfcnVuQ29sb3IiKSx3KCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLHcoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksdygiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHBoLnByb3RvdHlwZSwiX2NoYW5nZVJ1bkNvbG9yIixudWxsKTtwaD1FKFt5dCgidGYtdGV4dC1sb2FkZXIiKV0scGgpO3ZhciBaYz1jbGFzcyBleHRlbmRzIEd0KG10KXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX21hcmtkb3duRW5hYmxlZD12cCgiX21hcmtkb3duRW5hYmxlZCIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBBZSx0aGlzLl9tYXJrZG93bkVuYWJsZWRTdG9yYWdlT2JzZXJ2ZXI9eHAoIl9tYXJrZG93bkVuYWJsZWQiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSl9c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9tYXJrZG93bkVuYWJsZWRPYnNlcnZlcihfbWFya2Rvd25FbmFibGVkKSJdfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKT0+e3RoaXMuX3JlbG9hZFRleHRzKCl9KX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fZmV0Y2hUYWdzKCl7bGV0IHQ9dmUoKS5wbHVnaW5Sb3V0ZSgidGV4dCIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihyPT57aWYodHBlLmlzRXF1YWwocix0aGlzLl9ydW5Ub1RhZykpcmV0dXJuO2xldCBuPVhpKHIpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIixuLmxlbmd0aD09PTApLHRoaXMuc2V0KCJfcnVuVG9UYWciLHIpLHRoaXMuYXN5bmMoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSl9KX1fcmVsb2FkVGV4dHMoKXt2YXIgdDsodD10aGlzLnJvb3QpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi10ZXh0LWxvYWRlciIpLmZvckVhY2gocj0+e3IucmVsb2FkKCl9KX1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZyxyPXRoaXMuX3NlbGVjdGVkUnVucyxuPXRoaXMuX3RhZ0ZpbHRlcjtyZXR1cm4gWmwodCxyLG4pfV9tYXJrZG93bkVuYWJsZWRPYnNlcnZlcigpe3RoaXMuX3JlbG9hZFRleHRzKCl9fTtaYy50ZW1wbGF0ZT1RYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tfbWFya2Rvd25FbmFibGVkfX0iCiAgICAgICAgICAgICAgPkVuYWJsZSBNYXJrZG93bjwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHRleHQgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHRleHQgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLXRleHQtbG9hZGVyCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIG1hcmtkb3duLWVuYWJsZWQ9IltbX21hcmtkb3duRW5hYmxlZF1dIgogICAgICAgICAgICAgICAgPjwvdGYtdGV4dC1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgO0UoW0Eoe3R5cGU6Qm9vbGVhbn0pLHcoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWmMucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApO0UoW0Eoe3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9tYXJrZG93bkVuYWJsZWRTdG9yYWdlT2JzZXJ2ZXIifSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxaYy5wcm90b3R5cGUsIl9tYXJrZG93bkVuYWJsZWQiLHZvaWQgMCk7RShbQSh7dHlwZTpBcnJheX0pLHcoImRlc2lnbjp0eXBlIixBcnJheSldLFpjLnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKTtFKFtBKHt0eXBlOk9iamVjdH0pLHcoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaYy5wcm90b3R5cGUsIl9ydW5Ub1RhZyIsdm9pZCAwKTtFKFtBKHt0eXBlOkJvb2xlYW59KSx3KCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFpjLnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKTtFKFtBKHt0eXBlOlN0cmluZ30pLHcoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxaYy5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCk7RShbQSh7dHlwZTpCb29sZWFufSksdygiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxaYy5wcm90b3R5cGUsIl9jYXRlZ29yaWVzRG9tUmVhZHkiLHZvaWQgMCk7RShbQSh7dHlwZTpPYmplY3R9KSx3KCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWmMucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCk7RShbUnQoIl9ydW5Ub1RhZyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLHcoImRlc2lnbjp0eXBlIixBcnJheSksdygiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWmMucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCk7WmM9RShbeXQoInRmLXRleHQtZGFzaGJvYXJkIildLFpjKTt2YXIgZXBlPWNsYXNzIGV4dGVuZHMgbXR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3RlbXBsYXRlPW51bGwsdGhpcy50Zl9iYWNrZW5kPUlCfX07ZXBlPUUoW3l0KCJ0Zi1iYWNrZW5kIildLGVwZSk7dmFyIHJwZT1jbGFzcyBleHRlbmRzIG10e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMucnVuc0NvbG9yU2NhbGU9Zm59fTtycGU9RShbeXQoInRmLWNvbG9yLXNjYWxlIildLHJwZSk7dmFyIG5wZT1jbGFzcyBleHRlbmRzIG10e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMudGZfZmVhdHVyZV9mbGFncz1KR319O25wZT1FKFt5dCgidGYtZmVhdHVyZS1mbGFncyIpXSxucGUpO3ZhciBpcGU9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX2dsb2JhbHM9TFd9fTtpcGU9RShbeXQoInRmLWdsb2JhbHMiKV0saXBlKTt2YXIgSGh0PXt9OyRzKEhodCx7VGZEb21SZXBlYXQ6KCk9PkRpLGFkZExpbWl0TGlzdGVuZXI6KCk9PlZXLGdldExpbWl0OigpPT5xVyxyZW1vdmVMaW1pdExpc3RlbmVyOigpPT5VVyxzZXRMaW1pdDooKT0+S2JlfSk7dmFyIG9wZT1jbGFzcyBleHRlbmRzIG10e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMudGZfcGFnaW5hdGVkX3ZpZXc9SGh0fX07b3BlPUUoW3l0KCJ0Zi1wYWdpbmF0ZWQtdmlldy1zdG9yZSIpXSxvcGUpO3ZhciBhcGU9Y2xhc3MgZXh0ZW5kcyBtdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX3N0b3JhZ2U9UkJ9fTthcGU9RShbeXQoInRmLXN0b3JhZ2UiKV0sYXBlKTt9KSgpOwovKiEKICogaXMtcGxhaW4tb2JqZWN0IDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1wbGFpbi1vYmplY3Q+CiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC4KICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogKi8KLyohCiAqIGlzb2JqZWN0IDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pc29iamVjdD4KICoKICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIEpvbiBTY2hsaW5rZXJ0LgogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiAqLwovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UKdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUKTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKClRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRApXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLApNRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULgoKU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLyoqCiAqIEBmaWxlb3ZlcnZpZXcKICogQHN1cHByZXNzIHtjaGVja1Byb3RvdHlwYWxUeXBlc30KICogQGxpY2Vuc2UgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAqIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkKICogYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieQogKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAqIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICovCi8qKgogKiBAbGljZW5zZQogKiBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQKICogYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heQogKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAqIEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAKICogcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogKi8KLyoqCiAqIEBsaWNlbnNlCiAqIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICogVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0CiAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAqIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAqIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQKICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAqLwovKioKICogQGxpY2Vuc2UKICogQ29weXJpZ2h0IChjKSAyMDE4IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogKiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogKiBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQKICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICogQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdAogKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICovCi8qKgogKiBAbGljZW5zZQogKiBDb3B5cmlnaHQgKGMpIDIwMjEgVmFhZGluIEx0ZC4KICogVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogKi8KLyoqCiAqIEBsaWNlbnNlCiAqIENvcHlyaWdodCAyMDEwLTIwMjIgVGhyZWUuanMgQXV0aG9ycwogKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAqLwovKioKICogQGxpY2Vuc2UKICogTG9kYXNoIDxodHRwczovL2xvZGFzaC5jb20vPgogKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+CiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT4KICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT4KICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzCiAqLwovKioKICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICogQGxpY2Vuc2UgTUlUCiAqCiAqIEBmaWxlb3ZlcnZpZXcgbWFudWFsbHkgYWRkIGQzLXNlbGVjdGlvbi1tdWx0aSB0byBkMyBkZWZhdWx0IGJ1bmRsZS4gTW9zdCBvZiB0aGlzIGNvZGUgaXMKICogY29waWVkIGZyb20gZDMtc2VsZWN0aW9uLW11bHRpQDEuMC4wLgogKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNlbGVjdGlvbi1tdWx0aS9pc3N1ZXMvMTEgZm9yIHdoeSB3ZSBoYXZlIHRvIGRvIHRoaXMKICovCi8qKgogKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogKiBAbGljZW5zZSBNSVQKICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIGEgY29udmVuaWVudCB0aHVuayBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNvbW1vbiBjYXNlCiAqIG9mIGNyZWF0aW5nIGEgbWVtb2l6ZWQgZnVuY3Rpb24gdGhhdCB0YWtlcyBpdHMgaW5wdXRzIGZyb20gbXV0YWJsZSBjbGFzcyBwcm9wZXJ0aWVzLgogKi8KLyoqCiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAqIEBsaWNlbnNlIE1JVAogKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgYSBmdW5jdGlvbiBtZW1vaXplciB1c2luZyB0aGUgU2lnbmF0dXJlIEFQSS4KICovCi8qKgogKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogKiBAbGljZW5zZSBNSVQKICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIHRoZSBTaWduYXR1cmUgQVBJIHRvIGhlbHAgaW4gY29tcGFyaW5nIHdoZW4gdHdvCiAqIFBsb3R0YWJsZSBvYmplY3RzIGhhdmUgImNoYW5nZWQiLgogKgogKiBNZW1vaXphdGlvbiBpbiBQbG90dGFibGUgaXMgY29tcGxpY2F0ZWQgYnkgbXV0YWJsZSBzY2FsZXMgYW5kIGRhdGFzZXRzLiBXZSBjYW5ub3Qgc2ltcGx5CiAqIHJlZmVyZW5jZSBjb21wYXJlIHR3byBlLmcuIHNjYWxlcyBzaW5jZSBpdCBtYXkgaGF2ZSBpbnRlcm5hbGx5IG11dGF0ZWQuIFRvIHJlc29sdmUgdGhpcywKICogd2Ugd3JpdGUgYSByZWN1cnNpdmUgU2lnbmF0dXJlIGludGVyZmFjZSB0aGF0IGhvbGRzIGFuIGltbXV0YWJsZSBzbmFwc2hvdCBvZiB3aGF0ZXZlcgogKiBzdGF0ZSB0aGUgc2NhbGUvZGF0YSB3YXMgaW4gYXQgdGhlIHRpbWUuIFRoZW4gb24gbWVtb2l6ZWQgZnVuY3Rpb24gaW52b2NhdGlvbiB3ZSBzaWduIHRoZQogKiBuZXcgaW5wdXRzIGFuZCBjb21wYXJlIHRoZSBzaWduYXR1cmVzIHRvIGRlY2lkZSBpZiB3ZSBzaG91bGQgcmVjb21wdXRlLgogKgogKiBXZSBtdXN0IGhhbmQtd3JpdGUgYSBzaWduYXR1cmUgZm9yIGVhY2ggY3VzdG9tIGNsYXNzIHdlIHdpc2ggdG8gc3VwcG9ydC4KICovCi8qKgogKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogKiBAbGljZW5zZSBNSVQKICovCi8qKgogKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogKiBAbGljZW5zZSBNSVQKICovCi8qKgpAbGljZW5zZQpDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQpmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwpwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CmZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAoqLwovKioKQGxpY2Vuc2UKQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0Cmh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0Cmh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudApmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKKi8KLyoqCkBsaWNlbnNlCkNvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CkNvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCnN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiovCi8qKgpAbGljZW5zZQpDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQpmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwpwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CmZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAoqLwovKioKQGxpY2Vuc2UKQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dApUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dApUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28Kc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKKi8KLyoqCkBsaWNlbnNlCkNvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdApodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdApodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCmZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCnBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiovCi8qKgpAbGljZW5zZQpDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0ClRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0ClRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dApDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwpzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAoqLwovKioKQGxpY2Vuc2UKQ29weXJpZ2h0IChjKSAyMDE5IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0Cmh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0Cmh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudApmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKKi8KLyoqCkBsaWNlbnNlCkNvcHlyaWdodCAoYykgMjAxOSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CkNvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCnN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiovCgoKCigoKT0+e3ZhciBQX3Q9T2JqZWN0LmNyZWF0ZTt2YXIgJDQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O3ZhciB5X3Q9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt2YXIgeF90PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO3ZhciB2X3Q9T2JqZWN0LmdldFByb3RvdHlwZU9mLHdfdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBLWj1NYXRoLnBvdzt2YXIgZXM9KG4sdCk9PigpPT4obiYmKHQ9bihuPTApKSx0KTt2YXIgZXk9KG4sdCk9PigpPT4odHx8bigodD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsdCksdC5leHBvcnRzKSxZUz0obix0KT0+e2Zvcih2YXIgZSBpbiB0KSQ0KG4sZSx7Z2V0OnRbZV0sZW51bWVyYWJsZTohMH0pfSxKWj0obix0LGUsbyk9PntpZih0JiZ0eXBlb2YgdD09Im9iamVjdCJ8fHR5cGVvZiB0PT0iZnVuY3Rpb24iKWZvcihsZXQgaSBvZiB4X3QodCkpIXdfdC5jYWxsKG4saSkmJmkhPT1lJiYkNChuLGkse2dldDooKT0+dFtpXSxlbnVtZXJhYmxlOiEobz15X3QodCxpKSl8fG8uZW51bWVyYWJsZX0pO3JldHVybiBufTt2YXIgJFo9KG4sdCxlKT0+KGU9biE9bnVsbD9QX3Qodl90KG4pKTp7fSxKWih0fHwhbnx8IW4uX19lc01vZHVsZT8kNChlLCJkZWZhdWx0Iix7dmFsdWU6bixlbnVtZXJhYmxlOiEwfSk6ZSxuKSksU190PW49PkpaKCQ0KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuKTt2YXIgdFg9KG4sdCxlKT0+bmV3IFByb21pc2UoKG8saSk9Pnt2YXIgYT1sPT57dHJ5e3MoZS5uZXh0KGwpKX1jYXRjaChjKXtpKGMpfX0scj1sPT57dHJ5e3MoZS50aHJvdyhsKSl9Y2F0Y2goYyl7aShjKX19LHM9bD0+bC5kb25lP28obC52YWx1ZSk6UHJvbWlzZS5yZXNvbHZlKGwudmFsdWUpLnRoZW4oYSxyKTtzKChlPWUuYXBwbHkobix0KSkubmV4dCgpKX0pO3ZhciBQWD1leSgoR0t0LG5OKT0+e3ZhciBlWCxuWCxvWCxpWCxhWCxyWCxzWCxsWCxjWCx0TixQNyxtWCxmWCxwWCxRMSxkWCxnWCx1WCxoWCxfWCxDWCxNWCxiWCxPWCxlTjsoZnVuY3Rpb24obil7dmFyIHQ9dHlwZW9mIGdsb2JhbD09Im9iamVjdCI/Z2xvYmFsOnR5cGVvZiBzZWxmPT0ib2JqZWN0Ij9zZWxmOnR5cGVvZiB0aGlzPT0ib2JqZWN0Ij90aGlzOnt9O3R5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKCJ0c2xpYiIsWyJleHBvcnRzIl0sZnVuY3Rpb24obyl7bihlKHQsZShvKSkpfSk6dHlwZW9mIG5OPT0ib2JqZWN0IiYmdHlwZW9mIG5OLmV4cG9ydHM9PSJvYmplY3QiP24oZSh0LGUobk4uZXhwb3J0cykpKTpuKGUodCkpO2Z1bmN0aW9uIGUobyxpKXtyZXR1cm4gbyE9PXQmJih0eXBlb2YgT2JqZWN0LmNyZWF0ZT09ImZ1bmN0aW9uIj9PYmplY3QuZGVmaW5lUHJvcGVydHkobywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk6by5fX2VzTW9kdWxlPSEwKSxmdW5jdGlvbihhLHIpe3JldHVybiBvW2FdPWk/aShhLHIpOnJ9fX0pKGZ1bmN0aW9uKG4pe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihvLGkpe28uX19wcm90b19fPWl9fHxmdW5jdGlvbihvLGkpe2Zvcih2YXIgYSBpbiBpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLGEpJiYob1thXT1pW2FdKX07ZVg9ZnVuY3Rpb24obyxpKXtpZih0eXBlb2YgaSE9ImZ1bmN0aW9uIiYmaSE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiK1N0cmluZyhpKSsiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGwiKTt0KG8saSk7ZnVuY3Rpb24gYSgpe3RoaXMuY29uc3RydWN0b3I9b31vLnByb3RvdHlwZT1pPT09bnVsbD9PYmplY3QuY3JlYXRlKGkpOihhLnByb3RvdHlwZT1pLnByb3RvdHlwZSxuZXcgYSl9LG5YPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKG8pe2Zvcih2YXIgaSxhPTEscj1hcmd1bWVudHMubGVuZ3RoO2E8cjthKyspe2k9YXJndW1lbnRzW2FdO2Zvcih2YXIgcyBpbiBpKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiYob1tzXT1pW3NdKX1yZXR1cm4gb30sb1g9ZnVuY3Rpb24obyxpKXt2YXIgYT17fTtmb3IodmFyIHIgaW4gbylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobyxyKSYmaS5pbmRleE9mKHIpPDAmJihhW3JdPW9bcl0pO2lmKG8hPW51bGwmJnR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzPT0iZnVuY3Rpb24iKWZvcih2YXIgcz0wLHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvKTtzPHIubGVuZ3RoO3MrKylpLmluZGV4T2YocltzXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG8scltzXSkmJihhW3Jbc11dPW9bcltzXV0pO3JldHVybiBhfSxpWD1mdW5jdGlvbihvLGksYSxyKXt2YXIgcz1hcmd1bWVudHMubGVuZ3RoLGw9czwzP2k6cj09PW51bGw/cj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksYSk6cixjO2lmKHR5cGVvZiBSZWZsZWN0PT0ib2JqZWN0IiYmdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGU9PSJmdW5jdGlvbiIpbD1SZWZsZWN0LmRlY29yYXRlKG8saSxhLHIpO2Vsc2UgZm9yKHZhciBtPW8ubGVuZ3RoLTE7bT49MDttLS0pKGM9b1ttXSkmJihsPShzPDM/YyhsKTpzPjM/YyhpLGEsbCk6YyhpLGEpKXx8bCk7cmV0dXJuIHM+MyYmbCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGksYSxsKSxsfSxhWD1mdW5jdGlvbihvLGkpe3JldHVybiBmdW5jdGlvbihhLHIpe2koYSxyLG8pfX0sclg9ZnVuY3Rpb24obyxpKXtpZih0eXBlb2YgUmVmbGVjdD09Im9iamVjdCImJnR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhPT0iZnVuY3Rpb24iKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG8saSl9LHNYPWZ1bmN0aW9uKG8saSxhLHIpe2Z1bmN0aW9uIHMobCl7cmV0dXJuIGwgaW5zdGFuY2VvZiBhP2w6bmV3IGEoZnVuY3Rpb24oYyl7YyhsKX0pfXJldHVybiBuZXcoYXx8KGE9UHJvbWlzZSkpKGZ1bmN0aW9uKGwsYyl7ZnVuY3Rpb24gbShnKXt0cnl7cChyLm5leHQoZykpfWNhdGNoKF8pe2MoXyl9fWZ1bmN0aW9uIGYoZyl7dHJ5e3Aoci50aHJvdyhnKSl9Y2F0Y2goXyl7YyhfKX19ZnVuY3Rpb24gcChnKXtnLmRvbmU/bChnLnZhbHVlKTpzKGcudmFsdWUpLnRoZW4obSxmKX1wKChyPXIuYXBwbHkobyxpfHxbXSkpLm5leHQoKSl9KX0sbFg9ZnVuY3Rpb24obyxpKXt2YXIgYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYobFswXSYxKXRocm93IGxbMV07cmV0dXJuIGxbMV19LHRyeXM6W10sb3BzOltdfSxyLHMsbCxjO3JldHVybiBjPXtuZXh0Om0oMCksdGhyb3c6bSgxKSxyZXR1cm46bSgyKX0sdHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmKGNbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksYztmdW5jdGlvbiBtKHApe3JldHVybiBmdW5jdGlvbihnKXtyZXR1cm4gZihbcCxnXSl9fWZ1bmN0aW9uIGYocCl7aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthOyl0cnl7aWYocj0xLHMmJihsPXBbMF0mMj9zLnJldHVybjpwWzBdP3MudGhyb3d8fCgobD1zLnJldHVybikmJmwuY2FsbChzKSwwKTpzLm5leHQpJiYhKGw9bC5jYWxsKHMscFsxXSkpLmRvbmUpcmV0dXJuIGw7c3dpdGNoKHM9MCxsJiYocD1bcFswXSYyLGwudmFsdWVdKSxwWzBdKXtjYXNlIDA6Y2FzZSAxOmw9cDticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6cFsxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLHM9cFsxXSxwPVswXTtjb250aW51ZTtjYXNlIDc6cD1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZihsPWEudHJ5cywhKGw9bC5sZW5ndGg+MCYmbFtsLmxlbmd0aC0xXSkmJihwWzBdPT09Nnx8cFswXT09PTIpKXthPTA7Y29udGludWV9aWYocFswXT09PTMmJighbHx8cFsxXT5sWzBdJiZwWzFdPGxbM10pKXthLmxhYmVsPXBbMV07YnJlYWt9aWYocFswXT09PTYmJmEubGFiZWw8bFsxXSl7YS5sYWJlbD1sWzFdLGw9cDticmVha31pZihsJiZhLmxhYmVsPGxbMl0pe2EubGFiZWw9bFsyXSxhLm9wcy5wdXNoKHApO2JyZWFrfWxbMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1wPWkuY2FsbChvLGEpfWNhdGNoKGcpe3A9WzYsZ10scz0wfWZpbmFsbHl7cj1sPTB9aWYocFswXSY1KXRocm93IHBbMV07cmV0dXJue3ZhbHVlOnBbMF0/cFsxXTp2b2lkIDAsZG9uZTohMH19fSxjWD1mdW5jdGlvbihvLGkpe2Zvcih2YXIgYSBpbiBvKWEhPT0iZGVmYXVsdCImJiFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxhKSYmZU4oaSxvLGEpfSxlTj1PYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG8saSxhLHIpe3I9PT12b2lkIDAmJihyPWEpO3ZhciBzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaSxhKTsoIXN8fCgiZ2V0ImluIHM/IWkuX19lc01vZHVsZTpzLndyaXRhYmxlfHxzLmNvbmZpZ3VyYWJsZSkpJiYocz17ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaVthXX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobyxyLHMpfTpmdW5jdGlvbihvLGksYSxyKXtyPT09dm9pZCAwJiYocj1hKSxvW3JdPWlbYV19LHROPWZ1bmN0aW9uKG8pe3ZhciBpPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5pdGVyYXRvcixhPWkmJm9baV0scj0wO2lmKGEpcmV0dXJuIGEuY2FsbChvKTtpZihvJiZ0eXBlb2Ygby5sZW5ndGg9PSJudW1iZXIiKXJldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIG8mJnI+PW8ubGVuZ3RoJiYobz12b2lkIDApLHt2YWx1ZTpvJiZvW3IrK10sZG9uZTohb319fTt0aHJvdyBuZXcgVHlwZUVycm9yKGk/Ik9iamVjdCBpcyBub3QgaXRlcmFibGUuIjoiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpfSxQNz1mdW5jdGlvbihvLGkpe3ZhciBhPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJm9bU3ltYm9sLml0ZXJhdG9yXTtpZighYSlyZXR1cm4gbzt2YXIgcj1hLmNhbGwobykscyxsPVtdLGM7dHJ5e2Zvcig7KGk9PT12b2lkIDB8fGktLSA+MCkmJiEocz1yLm5leHQoKSkuZG9uZTspbC5wdXNoKHMudmFsdWUpfWNhdGNoKG0pe2M9e2Vycm9yOm19fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihhPXIucmV0dXJuKSYmYS5jYWxsKHIpfWZpbmFsbHl7aWYoYyl0aHJvdyBjLmVycm9yfX1yZXR1cm4gbH0sbVg9ZnVuY3Rpb24oKXtmb3IodmFyIG89W10saT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspbz1vLmNvbmNhdChQNyhhcmd1bWVudHNbaV0pKTtyZXR1cm4gb30sZlg9ZnVuY3Rpb24oKXtmb3IodmFyIG89MCxpPTAsYT1hcmd1bWVudHMubGVuZ3RoO2k8YTtpKyspbys9YXJndW1lbnRzW2ldLmxlbmd0aDtmb3IodmFyIHI9QXJyYXkobykscz0wLGk9MDtpPGE7aSsrKWZvcih2YXIgbD1hcmd1bWVudHNbaV0sYz0wLG09bC5sZW5ndGg7YzxtO2MrKyxzKyspcltzXT1sW2NdO3JldHVybiByfSxwWD1mdW5jdGlvbihvLGksYSl7aWYoYXx8YXJndW1lbnRzLmxlbmd0aD09PTIpZm9yKHZhciByPTAscz1pLmxlbmd0aCxsO3I8cztyKyspKGx8fCEociBpbiBpKSkmJihsfHwobD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpLDAscikpLGxbcl09aVtyXSk7cmV0dXJuIG8uY29uY2F0KGx8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGkpKX0sUTE9ZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBRMT8odGhpcy52PW8sdGhpcyk6bmV3IFExKG8pfSxkWD1mdW5jdGlvbihvLGksYSl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciByPWEuYXBwbHkobyxpfHxbXSkscyxsPVtdO3JldHVybiBzPXt9LGMoIm5leHQiKSxjKCJ0aHJvdyIpLGMoInJldHVybiIpLHNbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHM7ZnVuY3Rpb24gYyhNKXtyW01dJiYoc1tNXT1mdW5jdGlvbih5KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oTyxiKXtsLnB1c2goW00seSxPLGJdKT4xfHxtKE0seSl9KX0pfWZ1bmN0aW9uIG0oTSx5KXt0cnl7ZihyW01dKHkpKX1jYXRjaChPKXtfKGxbMF1bM10sTyl9fWZ1bmN0aW9uIGYoTSl7TS52YWx1ZSBpbnN0YW5jZW9mIFExP1Byb21pc2UucmVzb2x2ZShNLnZhbHVlLnYpLnRoZW4ocCxnKTpfKGxbMF1bMl0sTSl9ZnVuY3Rpb24gcChNKXttKCJuZXh0IixNKX1mdW5jdGlvbiBnKE0pe20oInRocm93IixNKX1mdW5jdGlvbiBfKE0seSl7TSh5KSxsLnNoaWZ0KCksbC5sZW5ndGgmJm0obFswXVswXSxsWzBdWzFdKX19LGdYPWZ1bmN0aW9uKG8pe3ZhciBpLGE7cmV0dXJuIGk9e30scigibmV4dCIpLHIoInRocm93IixmdW5jdGlvbihzKXt0aHJvdyBzfSkscigicmV0dXJuIiksaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGk7ZnVuY3Rpb24gcihzLGwpe2lbc109b1tzXT9mdW5jdGlvbihjKXtyZXR1cm4oYT0hYSk/e3ZhbHVlOlExKG9bc10oYykpLGRvbmU6cz09PSJyZXR1cm4ifTpsP2woYyk6Y306bH19LHVYPWZ1bmN0aW9uKG8pe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgaT1vW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSxhO3JldHVybiBpP2kuY2FsbChvKToobz10eXBlb2YgdE49PSJmdW5jdGlvbiI/dE4obyk6b1tTeW1ib2wuaXRlcmF0b3JdKCksYT17fSxyKCJuZXh0IikscigidGhyb3ciKSxyKCJyZXR1cm4iKSxhW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxhKTtmdW5jdGlvbiByKGwpe2FbbF09b1tsXSYmZnVuY3Rpb24oYyl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG0sZil7Yz1vW2xdKGMpLHMobSxmLGMuZG9uZSxjLnZhbHVlKX0pfX1mdW5jdGlvbiBzKGwsYyxtLGYpe1Byb21pc2UucmVzb2x2ZShmKS50aGVuKGZ1bmN0aW9uKHApe2woe3ZhbHVlOnAsZG9uZTptfSl9LGMpfX0saFg9ZnVuY3Rpb24obyxpKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCJyYXciLHt2YWx1ZTppfSk6by5yYXc9aSxvfTt2YXIgZT1PYmplY3QuY3JlYXRlP2Z1bmN0aW9uKG8saSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOml9KX06ZnVuY3Rpb24obyxpKXtvLmRlZmF1bHQ9aX07X1g9ZnVuY3Rpb24obyl7aWYobyYmby5fX2VzTW9kdWxlKXJldHVybiBvO3ZhciBpPXt9O2lmKG8hPW51bGwpZm9yKHZhciBhIGluIG8pYSE9PSJkZWZhdWx0IiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sYSkmJmVOKGksbyxhKTtyZXR1cm4gZShpLG8pLGl9LENYPWZ1bmN0aW9uKG8pe3JldHVybiBvJiZvLl9fZXNNb2R1bGU/bzp7ZGVmYXVsdDpvfX0sTVg9ZnVuY3Rpb24obyxpLGEscil7aWYoYT09PSJhIiYmIXIpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgZ2V0dGVyIik7aWYodHlwZW9mIGk9PSJmdW5jdGlvbiI/byE9PWl8fCFyOiFpLmhhcyhvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgcmVhZCBwcml2YXRlIG1lbWJlciBmcm9tIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXQiKTtyZXR1cm4gYT09PSJtIj9yOmE9PT0iYSI/ci5jYWxsKG8pOnI/ci52YWx1ZTppLmdldChvKX0sYlg9ZnVuY3Rpb24obyxpLGEscixzKXtpZihyPT09Im0iKXRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZSIpO2lmKHI9PT0iYSImJiFzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlciIpO2lmKHR5cGVvZiBpPT0iZnVuY3Rpb24iP28hPT1pfHwhczohaS5oYXMobykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXQiKTtyZXR1cm4gcj09PSJhIj9zLmNhbGwobyxhKTpzP3MudmFsdWU9YTppLnNldChvLGEpLGF9LE9YPWZ1bmN0aW9uKG8saSl7aWYoaT09PW51bGx8fHR5cGVvZiBpIT0ib2JqZWN0IiYmdHlwZW9mIGkhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3QiKTtyZXR1cm4gdHlwZW9mIG89PSJmdW5jdGlvbiI/aT09PW86by5oYXMoaSl9LG4oIl9fZXh0ZW5kcyIsZVgpLG4oIl9fYXNzaWduIixuWCksbigiX19yZXN0IixvWCksbigiX19kZWNvcmF0ZSIsaVgpLG4oIl9fcGFyYW0iLGFYKSxuKCJfX21ldGFkYXRhIixyWCksbigiX19hd2FpdGVyIixzWCksbigiX19nZW5lcmF0b3IiLGxYKSxuKCJfX2V4cG9ydFN0YXIiLGNYKSxuKCJfX2NyZWF0ZUJpbmRpbmciLGVOKSxuKCJfX3ZhbHVlcyIsdE4pLG4oIl9fcmVhZCIsUDcpLG4oIl9fc3ByZWFkIixtWCksbigiX19zcHJlYWRBcnJheXMiLGZYKSxuKCJfX3NwcmVhZEFycmF5IixwWCksbigiX19hd2FpdCIsUTEpLG4oIl9fYXN5bmNHZW5lcmF0b3IiLGRYKSxuKCJfX2FzeW5jRGVsZWdhdG9yIixnWCksbigiX19hc3luY1ZhbHVlcyIsdVgpLG4oIl9fbWFrZVRlbXBsYXRlT2JqZWN0IixoWCksbigiX19pbXBvcnRTdGFyIixfWCksbigiX19pbXBvcnREZWZhdWx0IixDWCksbigiX19jbGFzc1ByaXZhdGVGaWVsZEdldCIsTVgpLG4oIl9fY2xhc3NQcml2YXRlRmllbGRTZXQiLGJYKSxuKCJfX2NsYXNzUHJpdmF0ZUZpZWxkSW4iLE9YKX0pfSk7dmFyIFJTPWV5KGZsPT57InVzZSBzdHJpY3QiO3ZhciBmWnQ9ZmwmJmZsLl9fdmFsdWVzfHxmdW5jdGlvbihuKXt2YXIgdD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZuW1N5bWJvbC5pdGVyYXRvcl0sZT0wO3JldHVybiB0P3QuY2FsbChuKTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiBuJiZlPj1uLmxlbmd0aCYmKG49dm9pZCAwKSx7dmFsdWU6biYmbltlKytdLGRvbmU6IW59fX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eShmbCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7ZnVuY3Rpb24gTnV0KG4sdCl7cmV0dXJuIE1hdGguZmxvb3IodCgpKm4pfWZsLnRhdVJhbmRJbnQ9TnV0O2Z1bmN0aW9uIHBadChuKXtyZXR1cm4gbigpfWZsLnRhdVJhbmQ9cFp0O2Z1bmN0aW9uIGRadChuKXt2YXIgdCxlLG89MDt0cnl7Zm9yKHZhciBpPWZadChuKSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSl7dmFyIHI9YS52YWx1ZTtvKz1NYXRoLnBvdyhyLDIpfX1jYXRjaChzKXt0PXtlcnJvcjpzfX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYoZT1pLnJldHVybikmJmUuY2FsbChpKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19cmV0dXJuIE1hdGguc3FydChvKX1mbC5ub3JtPWRadDtmdW5jdGlvbiBERihuKXtmb3IodmFyIHQ9W10sZT0wO2U8bjtlKyspdC5wdXNoKHZvaWQgMCk7cmV0dXJuIHR9ZmwuZW1wdHk9REY7ZnVuY3Rpb24gZ1p0KG4pe3JldHVybiBERihuKS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pfWZsLnJhbmdlPWdadDtmdW5jdGlvbiBwWihuLHQpe3JldHVybiBERihuKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdH0pfWZsLmZpbGxlZD1wWjtmdW5jdGlvbiBUdXQobil7cmV0dXJuIHBaKG4sMCl9ZmwuemVyb3M9VHV0O2Z1bmN0aW9uIHVadChuKXtyZXR1cm4gcFoobiwxKX1mbC5vbmVzPXVadDtmdW5jdGlvbiBoWnQobix0LGUpe3JldHVybiBERihlKS5tYXAoZnVuY3Rpb24obyxpKXtyZXR1cm4gbitpKigodC1uKS8oZS0xKSl9KX1mbC5saW5lYXI9aFp0O2Z1bmN0aW9uIEF1dChuKXtyZXR1cm4gbi5yZWR1Y2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSl9Zmwuc3VtPUF1dDtmdW5jdGlvbiBfWnQobil7cmV0dXJuIEF1dChuKS9uLmxlbmd0aH1mbC5tZWFuPV9adDtmdW5jdGlvbiBDWnQobil7Zm9yKHZhciB0PTAsZT0wO2U8bi5sZW5ndGg7ZSsrKXQ9bltlXT50P25bZV06dDtyZXR1cm4gdH1mbC5tYXg9Q1p0O2Z1bmN0aW9uIE1adChuKXtmb3IodmFyIHQ9MCxlPTA7ZTxuLmxlbmd0aDtlKyspZm9yKHZhciBvPTA7bzxuW2VdLmxlbmd0aDtvKyspdD1uW2VdW29dPnQ/bltlXVtvXTp0O3JldHVybiB0fWZsLm1heDJkPU1adDtmdW5jdGlvbiBiWnQobix0LGUpe2Zvcih2YXIgbz1UdXQobiksaT0wO2k8bjtpKyspZm9yKHZhciBhPSEwO2E7KXtmb3IodmFyIHI9TnV0KHQsZSkscz0hMSxsPTA7bDxpO2wrKylpZihyPT09b1tsXSl7cz0hMDticmVha31zfHwoYT0hMSksb1tpXT1yfXJldHVybiBvfWZsLnJlamVjdGlvblNhbXBsZT1iWnQ7ZnVuY3Rpb24gT1p0KG4sdCxlKXt2YXIgbz1bXSxpPTAsYT0wO2lmKG4ubGVuZ3RoIT09dCplKXRocm93IG5ldyBFcnJvcigiQXJyYXkgZGltZW5zaW9ucyBtdXN0IG1hdGNoIGlucHV0IGxlbmd0aC4iKTtmb3IodmFyIHI9MDtyPHQ7cisrKXtmb3IodmFyIHM9W10sbD0wO2w8ZTtsKyspcy5wdXNoKG5bYV0pLGErPTE7by5wdXNoKHMpLGkrPTF9cmV0dXJuIG99ZmwucmVzaGFwZTJkPU9adH0pO3ZhciBnWj1leShjYj0+eyJ1c2Ugc3RyaWN0Ijt2YXIgUFp0PWNiJiZjYi5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKG4pe2lmKG4mJm4uX19lc01vZHVsZSlyZXR1cm4gbjt2YXIgdD17fTtpZihuIT1udWxsKWZvcih2YXIgZSBpbiBuKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sZSkmJih0W2VdPW5bZV0pO3JldHVybiB0LmRlZmF1bHQ9bix0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoY2IsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBJND1QWnQoUlMoKSk7ZnVuY3Rpb24gRHV0KG4sdCl7dmFyIGU9ZnVuY3Rpb24oaSl7cmV0dXJuIEk0LmVtcHR5KG4pLm1hcChmdW5jdGlvbigpe3JldHVybiBJNC5maWxsZWQodCxpKX0pfSxvPVtdO3JldHVybiBvLnB1c2goZSgtMSkpLG8ucHVzaChlKDEvMCkpLG8ucHVzaChlKDApKSxvfWNiLm1ha2VIZWFwPUR1dDtmdW5jdGlvbiB5WnQobix0LGUpe2Zvcih2YXIgbz1JNC56ZXJvcyhuKSxpPTA7aTxuO2krKyl7Zm9yKHZhciBhPSEwLHI9MDthOyl7cj1JNC50YXVSYW5kSW50KHQsZSk7Zm9yKHZhciBzPSExLGw9MDtsPGk7bCsrKWlmKHI9PT1vW2xdKXtzPSEwO2JyZWFrfXN8fChhPSExKX1vW2ldPXJ9cmV0dXJuIG99Y2IucmVqZWN0aW9uU2FtcGxlPXladDtmdW5jdGlvbiBkWihuLHQsZSxvLGkpe3Q9TWF0aC5mbG9vcih0KTt2YXIgYT1uWzBdW3RdLHI9blsxXVt0XSxzPW5bMl1bdF07aWYoZT49clswXSlyZXR1cm4gMDtmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylpZihvPT09YVtsXSlyZXR1cm4gMDtyZXR1cm4gSXV0KG4sdCxlLG8saSl9Y2IuaGVhcFB1c2g9ZFo7ZnVuY3Rpb24gSXV0KG4sdCxlLG8saSl7dmFyIGE9blswXVt0XSxyPW5bMV1bdF0scz1uWzJdW3RdO2lmKGU+PXJbMF0pcmV0dXJuIDA7clswXT1lLGFbMF09byxzWzBdPWk7Zm9yKHZhciBsPTAsYz0wOzspe3ZhciBtPTIqbCsxLGY9bSsxLHA9blswXVswXS5sZW5ndGg7aWYobT49cClicmVhaztpZihmPj1wKWlmKHJbbV0+ZSljPW07ZWxzZSBicmVhaztlbHNlIGlmKHJbbV0+PXJbZl0paWYoZTxyW21dKWM9bTtlbHNlIGJyZWFrO2Vsc2UgaWYoZTxyW2ZdKWM9ZjtlbHNlIGJyZWFrO3JbbF09cltjXSxhW2xdPWFbY10sc1tsXT1zW2NdLGw9Y31yZXR1cm4gcltsXT1lLGFbbF09byxzW2xdPWksMX1jYi51bmNoZWNrZWRIZWFwUHVzaD1JdXQ7ZnVuY3Rpb24geFp0KG4sdCxlLG8saSl7Zm9yKHZhciBhPUR1dCh0LG8pLHI9MDtyPHQ7cisrKWZvcih2YXIgcz0wO3M8ZTtzKyspaWYoIShuWzBdW3JdW3NdPDApKXt2YXIgbD1uWzBdW3JdW3NdLGM9blsyXVtyXVtzXSxtPUk0LnRhdVJhbmQoaSk7ZFooYSxyLG0sbCxjKSxkWihhLGwsbSxyLGMpLG5bMl1bcl1bc109MH1yZXR1cm4gYX1jYi5idWlsZENhbmRpZGF0ZXM9eFp0O2Z1bmN0aW9uIHZadChuKXtmb3IodmFyIHQ9blswXSxlPW5bMV0sbz0wO288dC5sZW5ndGg7bysrKWZvcih2YXIgaT10W29dLGE9ZVtvXSxyPTA7cjxpLmxlbmd0aC0xO3IrKyl7dmFyIHM9aS5sZW5ndGgtci0xLGw9YS5sZW5ndGgtci0xLGM9aVswXTtpWzBdPWlbc10saVtzXT1jO3ZhciBtPWFbMF07YVswXT1hW2xdLGFbbF09bSx3WnQoYSxpLGwsMCl9cmV0dXJue2luZGljZXM6dCx3ZWlnaHRzOmV9fWNiLmRlaGVhcFNvcnQ9dlp0O2Z1bmN0aW9uIHdadChuLHQsZSxvKXtmb3IoO28qMisxPGU7KXt2YXIgaT1vKjIrMSxhPWkrMSxyPW87aWYobltyXTxuW2ldJiYocj1pKSxhPGUmJm5bcl08blthXSYmKHI9YSkscj09PW8pYnJlYWs7dmFyIHM9bltvXTtuW29dPW5bcl0sbltyXT1zO3ZhciBsPXRbb107dFtvXT10W3JdLHRbcl09bCxvPXJ9fWZ1bmN0aW9uIFNadChuLHQpe2Zvcih2YXIgZT1uWzBdW3RdLG89blsxXVt0XSxpPW5bMl1bdF0sYT0xLzAscj0tMSxzPTA7cz5lLmxlbmd0aDtzKyspaVtzXT09PTEmJm9bc108YSYmKGE9b1tzXSxyPXMpO3JldHVybiByPj0wPyhpW3JdPTAsTWF0aC5mbG9vcihlW3JdKSk6LTF9Y2Iuc21hbGxlc3RGbGFnZ2VkPVNadH0pO3ZhciB1Wj1leShwbD0+eyJ1c2Ugc3RyaWN0Ijt2YXIgSUY9cGwmJnBsLl9fcmVhZHx8ZnVuY3Rpb24obix0KXt2YXIgZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZuW1N5bWJvbC5pdGVyYXRvcl07aWYoIWUpcmV0dXJuIG47dmFyIG89ZS5jYWxsKG4pLGksYT1bXSxyO3RyeXtmb3IoOyh0PT09dm9pZCAwfHx0LS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KWEucHVzaChpLnZhbHVlKX1jYXRjaChzKXtyPXtlcnJvcjpzfX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYoZT1vLnJldHVybikmJmUuY2FsbChvKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19cmV0dXJuIGF9LFJadD1wbCYmcGwuX192YWx1ZXN8fGZ1bmN0aW9uKG4pe3ZhciB0PXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJm5bU3ltYm9sLml0ZXJhdG9yXSxlPTA7cmV0dXJuIHQ/dC5jYWxsKG4pOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIG4mJmU+PW4ubGVuZ3RoJiYobj12b2lkIDApLHt2YWx1ZTpuJiZuW2UrK10sZG9uZTohbn19fX0sRVp0PXBsJiZwbC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKG4pe2lmKG4mJm4uX19lc01vZHVsZSlyZXR1cm4gbjt2YXIgdD17fTtpZihuIT1udWxsKWZvcih2YXIgZSBpbiBuKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sZSkmJih0W2VdPW5bZV0pO3JldHVybiB0LmRlZmF1bHQ9bix0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB6NCx6dXQ9RVp0KFJTKCkpLEVTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0LGUsbyxpKXtpZih0aGlzLmVudHJpZXM9bmV3IE1hcCx0aGlzLm5Sb3dzPTAsdGhpcy5uQ29scz0wLHQubGVuZ3RoIT09ZS5sZW5ndGh8fHQubGVuZ3RoIT09by5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJyb3dzLCBjb2xzIGFuZCB2YWx1ZXMgYXJyYXlzIG11c3QgYWxsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoIik7dGhpcy5uUm93cz1pWzBdLHRoaXMubkNvbHM9aVsxXTtmb3IodmFyIGE9MDthPG8ubGVuZ3RoO2ErKyl7dmFyIHI9dFthXSxzPWVbYV07dGhpcy5jaGVja0RpbXMocixzKTt2YXIgbD10aGlzLm1ha2VLZXkocixzKTt0aGlzLmVudHJpZXMuc2V0KGwse3ZhbHVlOm9bYV0scm93OnIsY29sOnN9KX19cmV0dXJuIG4ucHJvdG90eXBlLm1ha2VLZXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCsiOiIrZX0sbi5wcm90b3R5cGUuY2hlY2tEaW1zPWZ1bmN0aW9uKHQsZSl7dmFyIG89dDx0aGlzLm5Sb3dzJiZlPHRoaXMubkNvbHM7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJyb3cgYW5kL29yIGNvbCBzcGVjaWZpZWQgb3V0c2lkZSBvZiBtYXRyaXggZGltZW5zaW9ucyIpfSxuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlLG8pe3RoaXMuY2hlY2tEaW1zKHQsZSk7dmFyIGk9dGhpcy5tYWtlS2V5KHQsZSk7dGhpcy5lbnRyaWVzLmhhcyhpKT90aGlzLmVudHJpZXMuZ2V0KGkpLnZhbHVlPW86dGhpcy5lbnRyaWVzLnNldChpLHt2YWx1ZTpvLHJvdzp0LGNvbDplfSl9LG4ucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUsbyl7bz09PXZvaWQgMCYmKG89MCksdGhpcy5jaGVja0RpbXModCxlKTt2YXIgaT10aGlzLm1ha2VLZXkodCxlKTtyZXR1cm4gdGhpcy5lbnRyaWVzLmhhcyhpKT90aGlzLmVudHJpZXMuZ2V0KGkpLnZhbHVlOm99LG4ucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbih0KXt0PT09dm9pZCAwJiYodD0hMCk7dmFyIGU9W107cmV0dXJuIHRoaXMuZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKG8pe2UucHVzaChvKX0pLHQmJmUuc29ydChmdW5jdGlvbihvLGkpe3JldHVybiBvLnJvdz09PWkucm93P28uY29sLWkuY29sOm8ucm93LWkucm93fSksZX0sbi5wcm90b3R5cGUuZ2V0RGltcz1mdW5jdGlvbigpe3JldHVyblt0aGlzLm5Sb3dzLHRoaXMubkNvbHNdfSxuLnByb3RvdHlwZS5nZXRSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLGZ1bmN0aW9uKHQpe3ZhciBlPUlGKHQsMiksbz1lWzBdLGk9ZVsxXTtyZXR1cm4gaS5yb3d9KX0sbi5wcm90b3R5cGUuZ2V0Q29scz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcyxmdW5jdGlvbih0KXt2YXIgZT1JRih0LDIpLG89ZVswXSxpPWVbMV07cmV0dXJuIGkuY29sfSl9LG4ucHJvdG90eXBlLmdldFZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcyxmdW5jdGlvbih0KXt2YXIgZT1JRih0LDIpLG89ZVswXSxpPWVbMV07cmV0dXJuIGkudmFsdWV9KX0sbi5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gdChlLnZhbHVlLGUucm93LGUuY29sKX0pfSxuLnByb3RvdHlwZS5tYXA9ZnVuY3Rpb24odCl7dmFyIGU9W107dGhpcy5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oaSl7ZS5wdXNoKHQoaS52YWx1ZSxpLnJvdyxpLmNvbCkpfSk7dmFyIG89W3RoaXMublJvd3MsdGhpcy5uQ29sc107cmV0dXJuIG5ldyBuKHRoaXMuZ2V0Um93cygpLHRoaXMuZ2V0Q29scygpLGUsbyl9LG4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9enV0LmVtcHR5KHRoaXMublJvd3MpLG89ZS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4genV0Lnplcm9zKHQubkNvbHMpfSk7cmV0dXJuIHRoaXMuZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGkpe29baS5yb3ddW2kuY29sXT1pLnZhbHVlfSksb30sbn0oKTtwbC5TcGFyc2VNYXRyaXg9RVM7ZnVuY3Rpb24ga1p0KG4pe3ZhciB0PVtdLGU9W10sbz1bXTtuLmZvckVhY2goZnVuY3Rpb24oYSxyLHMpe3QucHVzaChyKSxlLnB1c2gocyksby5wdXNoKGEpfSk7dmFyIGk9W24ubkNvbHMsbi5uUm93c107cmV0dXJuIG5ldyBFUyhlLHQsbyxpKX1wbC50cmFuc3Bvc2U9a1p0O2Z1bmN0aW9uIE5adChuKXtmb3IodmFyIHQ9SUYobiwxKSxlPXRbMF0sbz1uZXcgRVMoW10sW10sW10sbiksaT0wO2k8ZTtpKyspby5zZXQoaSxpLDEpO3JldHVybiBvfXBsLmlkZW50aXR5PU5adDtmdW5jdGlvbiBUWnQobix0KXtyZXR1cm4gekYobix0LGZ1bmN0aW9uKGUsbyl7cmV0dXJuIGUqb30pfXBsLnBhaXJ3aXNlTXVsdGlwbHk9VFp0O2Z1bmN0aW9uIEFadChuLHQpe3JldHVybiB6RihuLHQsZnVuY3Rpb24oZSxvKXtyZXR1cm4gZStvfSl9cGwuYWRkPUFadDtmdW5jdGlvbiBEWnQobix0KXtyZXR1cm4gekYobix0LGZ1bmN0aW9uKGUsbyl7cmV0dXJuIGUtb30pfXBsLnN1YnRyYWN0PURadDtmdW5jdGlvbiBJWnQobix0KXtyZXR1cm4gekYobix0LGZ1bmN0aW9uKGUsbyl7cmV0dXJuIGU+bz9lOm99KX1wbC5tYXhpbXVtPUladDtmdW5jdGlvbiB6WnQobix0KXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUqdH0pfXBsLm11bHRpcGx5U2NhbGFyPXpadDtmdW5jdGlvbiBIWnQobil7Zm9yKHZhciB0PW5ldyBTZXQsZT1uLmdldFZhbHVlcygpLG89bi5nZXRSb3dzKCksaT1uLmdldENvbHMoKSxhPTA7YTxlLmxlbmd0aDthKyspZVthXT09PTAmJnQuYWRkKGEpO3ZhciByPWZ1bmN0aW9uKG0sZil7cmV0dXJuIXQuaGFzKGYpfSxzPWUuZmlsdGVyKHIpLGw9by5maWx0ZXIociksYz1pLmZpbHRlcihyKTtyZXR1cm4gbmV3IEVTKGwsYyxzLG4uZ2V0RGltcygpKX1wbC5lbGltaW5hdGVaZXJvcz1IWnQ7ZnVuY3Rpb24gRlp0KG4sdCl7dD09PXZvaWQgMCYmKHQ9ImwyIik7dmFyIGUsbyxpPUxadFt0XSxhPW5ldyBNYXA7bi5mb3JFYWNoKGZ1bmN0aW9uKGYscCxnKXt2YXIgXz1hLmdldChwKXx8W107Xy5wdXNoKGcpLGEuc2V0KHAsXyl9KTt2YXIgcj1uZXcgRVMoW10sW10sW10sbi5nZXREaW1zKCkpLHM9ZnVuY3Rpb24oZil7Zm9yKHZhciBwPWEuZ2V0KGYpLnNvcnQoKSxnPXAubWFwKGZ1bmN0aW9uKHkpe3JldHVybiBuLmdldChmLHkpfSksXz1pKGcpLE09MDtNPF8ubGVuZ3RoO00rKylyLnNldChmLHBbTV0sX1tNXSl9O3RyeXtmb3IodmFyIGw9Ulp0KGEua2V5cygpKSxjPWwubmV4dCgpOyFjLmRvbmU7Yz1sLm5leHQoKSl7dmFyIG09Yy52YWx1ZTtzKG0pfX1jYXRjaChmKXtlPXtlcnJvcjpmfX1maW5hbGx5e3RyeXtjJiYhYy5kb25lJiYobz1sLnJldHVybikmJm8uY2FsbChsKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIHJ9cGwubm9ybWFsaXplPUZadDt2YXIgTFp0PSh6ND17fSx6NC5tYXg9ZnVuY3Rpb24obil7Zm9yKHZhciB0PS0xLzAsZT0wO2U8bi5sZW5ndGg7ZSsrKXQ9bltlXT50P25bZV06dDtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG8vdH0pfSx6NC5sMT1mdW5jdGlvbihuKXtmb3IodmFyIHQ9MCxlPTA7ZTxuLmxlbmd0aDtlKyspdCs9bltlXTtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIG8vdH0pfSx6NC5sMj1mdW5jdGlvbihuKXtmb3IodmFyIHQ9MCxlPTA7ZTxuLmxlbmd0aDtlKyspdCs9TWF0aC5wb3cobltlXSwyKTtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhvLDIpL3QpfSl9LHo0KTtmdW5jdGlvbiB6RihuLHQsZSl7Zm9yKHZhciBvPW5ldyBTZXQsaT1bXSxhPVtdLHI9W10scz1mdW5jdGlvbihSLEUpe2kucHVzaChSKSxhLnB1c2goRSk7dmFyIGo9ZShuLmdldChSLEUpLHQuZ2V0KFIsRSkpO3IucHVzaChqKX0sbD1uLmdldFZhbHVlcygpLGM9bi5nZXRSb3dzKCksbT1uLmdldENvbHMoKSxmPTA7ZjxsLmxlbmd0aDtmKyspe3ZhciBwPWNbZl0sZz1tW2ZdLF89cCsiOiIrZztvLmFkZChfKSxzKHAsZyl9Zm9yKHZhciBNPXQuZ2V0VmFsdWVzKCkseT10LmdldFJvd3MoKSxPPXQuZ2V0Q29scygpLGY9MDtmPE0ubGVuZ3RoO2YrKyl7dmFyIHA9eVtmXSxnPU9bZl0sXz1wKyI6IitnO28uaGFzKF8pfHxzKHAsZyl9dmFyIGI9W24ublJvd3Msbi5uQ29sc107cmV0dXJuIG5ldyBFUyhpLGEscixiKX1mdW5jdGlvbiBCWnQobil7dmFyIHQ9W107bi5mb3JFYWNoKGZ1bmN0aW9uKGYscCxnKXt0LnB1c2goe3ZhbHVlOmYscm93OnAsY29sOmd9KX0pLHQuc29ydChmdW5jdGlvbihmLHApe3JldHVybiBmLnJvdz09PXAucm93P2YuY29sLXAuY29sOmYucm93LXAucm93fSk7Zm9yKHZhciBlPVtdLG89W10saT1bXSxhPS0xLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIHM9dFtyXSxsPXMucm93LGM9cy5jb2wsbT1zLnZhbHVlO2whPT1hJiYoYT1sLGkucHVzaChyKSksZS5wdXNoKGMpLG8ucHVzaChtKX1yZXR1cm57aW5kaWNlczplLHZhbHVlczpvLGluZHB0cjppfX1wbC5nZXRDU1I9Qlp0fSk7dmFyIGJaPWV5KEdkPT57InVzZSBzdHJpY3QiO3ZhciBWWnQ9R2QmJkdkLl9fcmVhZHx8ZnVuY3Rpb24obix0KXt2YXIgZT10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZuW1N5bWJvbC5pdGVyYXRvcl07aWYoIWUpcmV0dXJuIG47dmFyIG89ZS5jYWxsKG4pLGksYT1bXSxyO3RyeXtmb3IoOyh0PT09dm9pZCAwfHx0LS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KWEucHVzaChpLnZhbHVlKX1jYXRjaChzKXtyPXtlcnJvcjpzfX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYoZT1vLnJldHVybikmJmUuY2FsbChvKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19cmV0dXJuIGF9LEh1dD1HZCYmR2QuX19zcHJlYWR8fGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW49bi5jb25jYXQoVlp0KGFyZ3VtZW50c1t0XSkpO3JldHVybiBufSxqWnQ9R2QmJkdkLl9fdmFsdWVzfHxmdW5jdGlvbihuKXt2YXIgdD10eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiZuW1N5bWJvbC5pdGVyYXRvcl0sZT0wO3JldHVybiB0P3QuY2FsbChuKTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiBuJiZlPj1uLmxlbmd0aCYmKG49dm9pZCAwKSx7dmFsdWU6biYmbltlKytdLGRvbmU6IW59fX19LFVadD1HZCYmR2QuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihuKXtpZihuJiZuLl9fZXNNb2R1bGUpcmV0dXJuIG47dmFyIHQ9e307aWYobiE9bnVsbClmb3IodmFyIGUgaW4gbilPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChuLGUpJiYodFtlXT1uW2VdKTtyZXR1cm4gdC5kZWZhdWx0PW4sdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KEdkLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgQW09VVp0KFJTKCkpLEZ1dD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxlLG8saSl7dGhpcy5oeXBlcnBsYW5lcz10LHRoaXMub2Zmc2V0cz1lLHRoaXMuY2hpbGRyZW49byx0aGlzLmluZGljZXM9aX1yZXR1cm4gbn0oKTtHZC5GbGF0VHJlZT1GdXQ7ZnVuY3Rpb24gWVp0KG4sdCxlLG8pe3ZhciBpPU1hdGgubWF4KDEwLHQpLGE9QW0ucmFuZ2UoZSkubWFwKGZ1bmN0aW9uKHMsbCl7cmV0dXJuIEdadChuLGksbCxvKX0pLHI9YS5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHFadChzLGkpfSk7cmV0dXJuIHJ9R2QubWFrZUZvcmVzdD1ZWnQ7ZnVuY3Rpb24gR1p0KG4sdCxlLG8pe3Q9PT12b2lkIDAmJih0PTMwKTt2YXIgaT1BbS5yYW5nZShuLmxlbmd0aCksYT1oWihuLGksdCxlLG8pO3JldHVybiBhfWZ1bmN0aW9uIGhaKG4sdCxlLG8saSl7aWYoZT09PXZvaWQgMCYmKGU9MzApLHQubGVuZ3RoPmUpe3ZhciBhPVdadChuLHQsaSkscj1hLmluZGljZXNMZWZ0LHM9YS5pbmRpY2VzUmlnaHQsbD1hLmh5cGVycGxhbmUsYz1hLm9mZnNldCxtPWhaKG4scixlLG8rMSxpKSxmPWhaKG4scyxlLG8rMSxpKSxwPXtsZWZ0Q2hpbGQ6bSxyaWdodENoaWxkOmYsaXNMZWFmOiExLGh5cGVycGxhbmU6bCxvZmZzZXQ6Y307cmV0dXJuIHB9ZWxzZXt2YXIgcD17aW5kaWNlczp0LGlzTGVhZjohMH07cmV0dXJuIHB9fWZ1bmN0aW9uIFdadChuLHQsZSl7dmFyIG89blswXS5sZW5ndGgsaT1BbS50YXVSYW5kSW50KHQubGVuZ3RoLGUpLGE9QW0udGF1UmFuZEludCh0Lmxlbmd0aCxlKTthKz1pPT09YT8xOjAsYT1hJXQubGVuZ3RoO2Zvcih2YXIgcj10W2ldLHM9dFthXSxsPTAsYz1BbS56ZXJvcyhvKSxtPTA7bTxjLmxlbmd0aDttKyspY1ttXT1uW3JdW21dLW5bc11bbV0sbC09Y1ttXSoobltyXVttXStuW3NdW21dKS8yO2Zvcih2YXIgZj0wLHA9MCxnPUFtLnplcm9zKHQubGVuZ3RoKSxtPTA7bTx0Lmxlbmd0aDttKyspe2Zvcih2YXIgXz1sLE09MDtNPG87TSsrKV8rPWNbTV0qblt0W21dXVtNXTtfPT09MD8oZ1ttXT1BbS50YXVSYW5kSW50KDIsZSksZ1ttXT09PTA/Zis9MTpwKz0xKTpfPjA/KGdbbV09MCxmKz0xKTooZ1ttXT0xLHArPTEpfXZhciB5PUFtLnplcm9zKGYpLE89QW0uemVyb3MocCk7Zj0wLHA9MDtmb3IodmFyIG09MDttPGcubGVuZ3RoO20rKylnW21dPT09MD8oeVtmXT10W21dLGYrPTEpOihPW3BdPXRbbV0scCs9MSk7cmV0dXJue2luZGljZXNMZWZ0OnksaW5kaWNlc1JpZ2h0Ok8saHlwZXJwbGFuZTpjLG9mZnNldDpsfX1mdW5jdGlvbiBxWnQobix0KXt2YXIgZT1DWihuKSxvPU1aKG4pLGk9QW0ucmFuZ2UoZSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIEFtLnplcm9zKG4uaHlwZXJwbGFuZT9uLmh5cGVycGxhbmUubGVuZ3RoOjApfSksYT1BbS56ZXJvcyhlKSxyPUFtLnJhbmdlKGUpLm1hcChmdW5jdGlvbigpe3JldHVyblstMSwtMV19KSxzPUFtLnJhbmdlKG8pLm1hcChmdW5jdGlvbigpe3JldHVybiBBbS5yYW5nZSh0KS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4tMX0pfSk7cmV0dXJuIF9aKG4saSxhLHIscywwLDApLG5ldyBGdXQoaSxhLHIscyl9ZnVuY3Rpb24gX1oobix0LGUsbyxpLGEscil7dmFyIHM7aWYobi5pc0xlYWYpcmV0dXJuIG9bYV1bMF09LXIsKHM9aVtyXSkuc3BsaWNlLmFwcGx5KHMsSHV0KFswLG4uaW5kaWNlcy5sZW5ndGhdLG4uaW5kaWNlcykpLHIrPTEse25vZGVOdW06YSxsZWFmTnVtOnJ9O3RbYV09bi5oeXBlcnBsYW5lLGVbYV09bi5vZmZzZXQsb1thXVswXT1hKzE7dmFyIGw9YSxjPV9aKG4ubGVmdENoaWxkLHQsZSxvLGksYSsxLHIpO3JldHVybiBhPWMubm9kZU51bSxyPWMubGVhZk51bSxvW2xdWzFdPWErMSxjPV9aKG4ucmlnaHRDaGlsZCx0LGUsbyxpLGErMSxyKSx7bm9kZU51bTpjLm5vZGVOdW0sbGVhZk51bTpjLmxlYWZOdW19fWZ1bmN0aW9uIENaKG4pe3JldHVybiBuLmlzTGVhZj8xOjErQ1oobi5sZWZ0Q2hpbGQpK0NaKG4ucmlnaHRDaGlsZCl9ZnVuY3Rpb24gTVoobil7cmV0dXJuIG4uaXNMZWFmPzE6TVoobi5sZWZ0Q2hpbGQpK01aKG4ucmlnaHRDaGlsZCl9ZnVuY3Rpb24gWlp0KG4pe3ZhciB0LGU7aWYobi5sZW5ndGg+MCl7dmFyIG89W107dHJ5e2Zvcih2YXIgaT1qWnQobiksYT1pLm5leHQoKTshYS5kb25lO2E9aS5uZXh0KCkpe3ZhciByPWEudmFsdWU7by5wdXNoLmFwcGx5KG8sSHV0KHIuaW5kaWNlcykpfX1jYXRjaChzKXt0PXtlcnJvcjpzfX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYoZT1pLnJldHVybikmJmUuY2FsbChpKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19cmV0dXJuIG99ZWxzZSByZXR1cm5bWy0xXV19R2QubWFrZUxlYWZBcnJheT1aWnQ7ZnVuY3Rpb24gWFp0KG4sdCxlLG8pe2Zvcih2YXIgaT10LGE9MDthPGUubGVuZ3RoO2ErKylpKz1uW2FdKmVbYV07aWYoaT09PTApe3ZhciByPUFtLnRhdVJhbmRJbnQoMixvKTtyZXR1cm4gcn1lbHNlIHJldHVybiBpPjA/MDoxfWZ1bmN0aW9uIFFadChuLHQsZSl7Zm9yKHZhciBvPTA7dC5jaGlsZHJlbltvXVswXT4wOyl7dmFyIGk9WFp0KHQuaHlwZXJwbGFuZXNbb10sdC5vZmZzZXRzW29dLG4sZSk7aT09PTA/bz10LmNoaWxkcmVuW29dWzBdOm89dC5jaGlsZHJlbltvXVsxXX12YXIgYT0tMSp0LmNoaWxkcmVuW29dWzBdO3JldHVybiB0LmluZGljZXNbYV19R2Quc2VhcmNoRmxhdFRyZWU9UVp0fSk7dmFyIFZ1dD1leSh6Tz0+eyJ1c2Ugc3RyaWN0Ijt2YXIgTHV0PXpPJiZ6Ty5fX3ZhbHVlc3x8ZnVuY3Rpb24obil7dmFyIHQ9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmbltTeW1ib2wuaXRlcmF0b3JdLGU9MDtyZXR1cm4gdD90LmNhbGwobik6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbiYmZT49bi5sZW5ndGgmJihuPXZvaWQgMCkse3ZhbHVlOm4mJm5bZSsrXSxkb25lOiFufX19fSxIRj16TyYmek8uX19pbXBvcnRTdGFyfHxmdW5jdGlvbihuKXtpZihuJiZuLl9fZXNNb2R1bGUpcmV0dXJuIG47dmFyIHQ9e307aWYobiE9bnVsbClmb3IodmFyIGUgaW4gbilPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChuLGUpJiYodFtlXT1uW2VdKTtyZXR1cm4gdC5kZWZhdWx0PW4sdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHpPLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgTmY9SEYoZ1ooKSksS1p0PUhGKHVaKCkpLEpadD1IRihiWigpKSxCdXQ9SEYoUlMoKSk7ZnVuY3Rpb24gJFp0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKG8saSxhLHIscyxsLGMsbSl7cj09PXZvaWQgMCYmKHI9MTApLHM9PT12b2lkIDAmJihzPTUwKSxsPT09dm9pZCAwJiYobD0uMDAxKSxjPT09dm9pZCAwJiYoYz0uNSksbT09PXZvaWQgMCYmKG09ITApO2Zvcih2YXIgZj1vLmxlbmd0aCxwPU5mLm1ha2VIZWFwKG8ubGVuZ3RoLGEpLGc9MDtnPG8ubGVuZ3RoO2crKylmb3IodmFyIF89TmYucmVqZWN0aW9uU2FtcGxlKGEsby5sZW5ndGgsdCksTT0wO008Xy5sZW5ndGg7TSsrKXt2YXIgeT1uKG9bZ10sb1tfW01dXSk7TmYuaGVhcFB1c2gocCxnLHksX1tNXSwxKSxOZi5oZWFwUHVzaChwLF9bTV0seSxnLDEpfWlmKG0pZm9yKHZhciBPPTA7TzxpLmxlbmd0aDtPKyspZm9yKHZhciBnPTA7ZzxpW09dLmxlbmd0aCYmIShpW09dW2ddPDApO2crKylmb3IodmFyIE09ZysxO008aVtPXS5sZW5ndGgmJiEoaVtPXVtNXTwwKTtNKyspe3ZhciB5PW4ob1tpW09dW2ddXSxvW2lbT11bTV1dKTtOZi5oZWFwUHVzaChwLGlbT11bZ10seSxpW09dW01dLDEpLE5mLmhlYXBQdXNoKHAsaVtPXVtNXSx5LGlbT11bZ10sMSl9Zm9yKHZhciBPPTA7TzxyO08rKyl7Zm9yKHZhciBiPU5mLmJ1aWxkQ2FuZGlkYXRlcyhwLGYsYSxzLHQpLFI9MCxnPTA7ZzxmO2crKylmb3IodmFyIE09MDtNPHM7TSsrKXt2YXIgRT1NYXRoLmZsb29yKGJbMF1bZ11bTV0pO2lmKCEoRTwwfHxCdXQudGF1UmFuZCh0KTxjKSlmb3IodmFyIGo9MDtqPHM7aisrKXt2YXIgcnQ9TWF0aC5mbG9vcihiWzBdW2ddW2pdKSxKPWJbMl1bZ11bTV0sRXQ9YlsyXVtnXVtqXTtpZighKHJ0PDB8fCFKJiYhRXQpKXt2YXIgeT1uKG9bRV0sb1tydF0pO1IrPU5mLmhlYXBQdXNoKHAsRSx5LHJ0LDEpLFIrPU5mLmhlYXBQdXNoKHAscnQseSxFLDEpfX19aWYoUjw9bCphKm8ubGVuZ3RoKWJyZWFrfXZhciBqdD1OZi5kZWhlYXBTb3J0KHApO3JldHVybiBqdH19ek8ubWFrZU5ORGVzY2VudD0kWnQ7ZnVuY3Rpb24gdFh0KG4pe2Z1bmN0aW9uIHQobyxpLGEscixzKXtmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylmb3IodmFyIGM9QnV0LnJlamVjdGlvblNhbXBsZShvLGkubGVuZ3RoLHMpLG09MDttPGMubGVuZ3RoO20rKylpZighKGNbbV08MCkpe3ZhciBmPW4oaVtjW21dXSxhW2xdKTtOZi5oZWFwUHVzaChyLGwsZixjW21dLDEpfX1mdW5jdGlvbiBlKG8saSxhLHIscyl7Zm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspZm9yKHZhciBjPUpadC5zZWFyY2hGbGF0VHJlZShhW2xdLG8scyksbT0wO208Yy5sZW5ndGg7bSsrKXtpZihjW21dPDApcmV0dXJuO3ZhciBmPW4oaVtjW21dXSxhW2xdKTtOZi5oZWFwUHVzaChyLGwsZixjW21dLDEpfX1yZXR1cm57aW5pdEZyb21SYW5kb206dCxpbml0RnJvbVRyZWU6ZX19ek8ubWFrZUluaXRpYWxpemF0aW9ucz10WHQ7ZnVuY3Rpb24gZVh0KG4pe3JldHVybiBmdW5jdGlvbihlLG8saSxhKXtmb3IodmFyIHIscyxsPUtadC5nZXRDU1IobyksYz1sLmluZGljZXMsbT1sLmluZHB0cixmPTA7ZjxhLmxlbmd0aDtmKyspZm9yKHZhciBwPW5ldyBTZXQoaVswXVtmXSk7Oyl7dmFyIGc9TmYuc21hbGxlc3RGbGFnZ2VkKGksZik7aWYoZz09PS0xKWJyZWFrO3ZhciBfPWMuc2xpY2UobVtnXSxtW2crMV0pO3RyeXtmb3IodmFyIE09THV0KF8pLHk9TS5uZXh0KCk7IXkuZG9uZTt5PU0ubmV4dCgpKXt2YXIgTz15LnZhbHVlO2lmKCEoTz09PWd8fE89PT0tMXx8cC5oYXMoTykpKXt2YXIgYj1uKGVbT10sYVtmXSk7TmYudW5jaGVja2VkSGVhcFB1c2goaSxmLGIsTywxKSxwLmFkZChPKX19fWNhdGNoKFIpe3I9e2Vycm9yOlJ9fWZpbmFsbHl7dHJ5e3kmJiF5LmRvbmUmJihzPU0ucmV0dXJuKSYmcy5jYWxsKE0pfWZpbmFsbHl7aWYocil0aHJvdyByLmVycm9yfX19cmV0dXJuIGl9fXpPLm1ha2VJbml0aWFsaXplZE5OU2VhcmNoPWVYdDtmdW5jdGlvbiBuWHQobix0LGUsbyxpLGEscil7dmFyIHMsbCxjPU5mLm1ha2VIZWFwKGUubGVuZ3RoLG8pO2lmKGkobyx0LGUsYyxyKSxuKXRyeXtmb3IodmFyIG09THV0KG4pLGY9bS5uZXh0KCk7IWYuZG9uZTtmPW0ubmV4dCgpKXt2YXIgcD1mLnZhbHVlO2EocCx0LGUsYyxyKX19Y2F0Y2goZyl7cz17ZXJyb3I6Z319ZmluYWxseXt0cnl7ZiYmIWYuZG9uZSYmKGw9bS5yZXR1cm4pJiZsLmNhbGwobSl9ZmluYWxseXtpZihzKXRocm93IHMuZXJyb3J9fXJldHVybiBjfXpPLmluaXRpYWxpemVTZWFyY2g9blh0fSk7ZnVuY3Rpb24gSDQobil7cmV0dXJuIG9YdC5jYWxsKG4pLmVuZHNXaXRoKCJBcnJheV0iKX12YXIgb1h0LGp1dD1lcygoKT0+e29YdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nfSk7ZnVuY3Rpb24gRkYobix0LGUpe2xldCBvPTAsaT1lKHQpO2ZvcihsZXQgYT0wO2E8bi54Lmxlbmd0aDthKyspbys9TWF0aC5hYnMobi55W2FdLWkobi54W2FdKSk7cmV0dXJuIG99dmFyIFV1dD1lcygoKT0+e30pO2Z1bmN0aW9uIHF4KG4pe3JldHVybiBpWHQuY2FsbChuKS5lbmRzV2l0aCgiQXJyYXldIil9dmFyIGlYdCxMRj1lcygoKT0+e2lYdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nfSk7ZnVuY3Rpb24gYVh0KG4pe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fTtpZighcXgobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKG4ubGVuZ3RoPT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO3ZhciBlPXQuZnJvbUluZGV4LG89ZT09PXZvaWQgMD8wOmUsaT10LnRvSW5kZXgsYT1pPT09dm9pZCAwP24ubGVuZ3RoOmk7aWYobzwwfHxvPj1uLmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IEVycm9yKCJmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCIpO2lmKGE8PW98fGE+bi5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBFcnJvcigidG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgiKTtmb3IodmFyIHI9bltvXSxzPW8rMTtzPGE7cysrKW5bc10+ciYmKHI9bltzXSk7cmV0dXJuIHJ9dmFyIFl1dCxHdXQ9ZXMoKCk9PntMRigpO1l1dD1hWHR9KTtmdW5jdGlvbiByWHQobil7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9O2lmKCFxeChuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IGJlIGFuIGFycmF5Iik7aWYobi5sZW5ndGg9PT0wKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3Qgbm90IGJlIGVtcHR5Iik7dmFyIGU9dC5mcm9tSW5kZXgsbz1lPT09dm9pZCAwPzA6ZSxpPXQudG9JbmRleCxhPWk9PT12b2lkIDA/bi5sZW5ndGg6aTtpZihvPDB8fG8+PW4ubGVuZ3RofHwhTnVtYmVyLmlzSW50ZWdlcihvKSl0aHJvdyBuZXcgRXJyb3IoImZyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoIik7aWYoYTw9b3x8YT5uLmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEVycm9yKCJ0b0luZGV4IG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gZnJvbUluZGV4IGFuZCBhdCBtb3N0IGVxdWFsIHRvIGxlbmd0aCIpO2Zvcih2YXIgcj1uW29dLHM9bysxO3M8YTtzKyspbltzXTxyJiYocj1uW3NdKTtyZXR1cm4gcn12YXIgV3V0LHF1dD1lcygoKT0+e0xGKCk7V3V0PXJYdH0pO2Z1bmN0aW9uIHNYdChuKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e307aWYocXgobikpe2lmKG4ubGVuZ3RoPT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO3ZhciBlO2lmKHQub3V0cHV0IT09dm9pZCAwKXtpZighcXgodC5vdXRwdXQpKXRocm93IG5ldyBUeXBlRXJyb3IoIm91dHB1dCBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBpZiBzcGVjaWZpZWQiKTtlPXQub3V0cHV0fWVsc2UgZT1uZXcgQXJyYXkobi5sZW5ndGgpO3ZhciBvPVd1dChuKSxpPVl1dChuKTtpZihvPT09aSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigibWluaW11bSBhbmQgbWF4aW11bSBpbnB1dCB2YWx1ZXMgYXJlIGVxdWFsLiBDYW5ub3QgcmVzY2FsZSBhIGNvbnN0YW50IGFycmF5Iik7dmFyIGE9dC5taW4scj1hPT09dm9pZCAwP3QuYXV0b01pbk1heD9vOjA6YSxzPXQubWF4LGw9cz09PXZvaWQgMD90LmF1dG9NaW5NYXg/aToxOnM7aWYocj49bCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigibWluIG9wdGlvbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXggb3B0aW9uIik7Zm9yKHZhciBjPShsLXIpLyhpLW8pLG09MDttPG4ubGVuZ3RoO20rKyllW21dPShuW21dLW8pKmMrcjtyZXR1cm4gZX12YXIgT1osWnV0PWVzKCgpPT57TEYoKTtHdXQoKTtxdXQoKTtPWj1zWHR9KTtmdW5jdGlvbiBRdXQoKXtyZXR1cm4gUFoodGhpcyl9ZnVuY3Rpb24gUFoobix0PXt9KXtsZXR7bWF4Um93czplPTE1LG1heENvbHVtbnM6bz0xMCxtYXhOdW1TaXplOmk9OH09dDtyZXR1cm5gJHtuLmNvbnN0cnVjdG9yLm5hbWV9IHsKJHtCRn1bCiR7WHV0fSR7bFh0KG4sZSxvLGkpfQoke0JGfV0KJHtCRn1yb3dzOiAke24ucm93c30KJHtCRn1jb2x1bW5zOiAke24uY29sdW1uc30KfWB9ZnVuY3Rpb24gbFh0KG4sdCxlLG8pe2xldHtyb3dzOmksY29sdW1uczphfT1uLHI9TWF0aC5taW4oaSx0KSxzPU1hdGgubWluKGEsZSksbD1bXTtmb3IobGV0IGM9MDtjPHI7YysrKXtsZXQgbT1bXTtmb3IobGV0IGY9MDtmPHM7ZisrKW0ucHVzaChjWHQobi5nZXQoYyxmKSxvKSk7bC5wdXNoKGAke20uam9pbigiICIpfWApfXJldHVybiBzIT09YSYmKGxbbC5sZW5ndGgtMV0rPWAgLi4uICR7YS1lfSBtb3JlIGNvbHVtbnNgKSxyIT09aSYmbC5wdXNoKGAuLi4gJHtpLXR9IG1vcmUgcm93c2ApLGwuam9pbihgCiR7WHV0fWApfWZ1bmN0aW9uIGNYdChuLHQpe2xldCBlPVN0cmluZyhuKTtpZihlLmxlbmd0aDw9dClyZXR1cm4gZS5wYWRFbmQodCwiICIpO2xldCBvPW4udG9QcmVjaXNpb24odC0yKTtpZihvLmxlbmd0aDw9dClyZXR1cm4gbztsZXQgaT1uLnRvRXhwb25lbnRpYWwodC0yKSxhPWkuaW5kZXhPZigiZSIpLHI9aS5zbGljZShhKTtyZXR1cm4gaS5zbGljZSgwLHQtci5sZW5ndGgpK3J9dmFyIEJGLFh1dCxLdXQ9ZXMoKCk9PntCRj0iICIucmVwZWF0KDIpLFh1dD0iICIucmVwZWF0KDQpfSk7ZnVuY3Rpb24gSnV0KG4sdCl7bi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKG8pe3JldHVybiB0eXBlb2Ygbz09Im51bWJlciI/dGhpcy5hZGRTKG8pOnRoaXMuYWRkTShvKX0sbi5wcm90b3R5cGUuYWRkUz1mdW5jdGlvbihvKXtmb3IobGV0IGk9MDtpPHRoaXMucm93cztpKyspZm9yKGxldCBhPTA7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuc2V0KGksYSx0aGlzLmdldChpLGEpK28pO3JldHVybiB0aGlzfSxuLnByb3RvdHlwZS5hZGRNPWZ1bmN0aW9uKG8pe2lmKG89dC5jaGVja01hdHJpeChvKSx0aGlzLnJvd3MhPT1vLnJvd3N8fHRoaXMuY29sdW1ucyE9PW8uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsdGhpcy5nZXQoaSxhKStvLmdldChpLGEpKTtyZXR1cm4gdGhpc30sbi5hZGQ9ZnVuY3Rpb24obyxpKXtyZXR1cm4gbmV3IHQobykuYWRkKGkpfSxuLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24obyl7cmV0dXJuIHR5cGVvZiBvPT0ibnVtYmVyIj90aGlzLnN1YlMobyk6dGhpcy5zdWJNKG8pfSxuLnByb3RvdHlwZS5zdWJTPWZ1bmN0aW9uKG8pe2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSktbyk7cmV0dXJuIHRoaXN9LG4ucHJvdG90eXBlLnN1Yk09ZnVuY3Rpb24obyl7aWYobz10LmNoZWNrTWF0cml4KG8pLHRoaXMucm93cyE9PW8ucm93c3x8dGhpcy5jb2x1bW5zIT09by5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IGk9MDtpPHRoaXMucm93cztpKyspZm9yKGxldCBhPTA7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuc2V0KGksYSx0aGlzLmdldChpLGEpLW8uZ2V0KGksYSkpO3JldHVybiB0aGlzfSxuLnN1Yj1mdW5jdGlvbihvLGkpe3JldHVybiBuZXcgdChvKS5zdWIoaSl9LG4ucHJvdG90eXBlLnN1YnRyYWN0PW4ucHJvdG90eXBlLnN1YixuLnByb3RvdHlwZS5zdWJ0cmFjdFM9bi5wcm90b3R5cGUuc3ViUyxuLnByb3RvdHlwZS5zdWJ0cmFjdE09bi5wcm90b3R5cGUuc3ViTSxuLnN1YnRyYWN0PW4uc3ViLG4ucHJvdG90eXBlLm11bD1mdW5jdGlvbihvKXtyZXR1cm4gdHlwZW9mIG89PSJudW1iZXIiP3RoaXMubXVsUyhvKTp0aGlzLm11bE0obyl9LG4ucHJvdG90eXBlLm11bFM9ZnVuY3Rpb24obyl7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsdGhpcy5nZXQoaSxhKSpvKTtyZXR1cm4gdGhpc30sbi5wcm90b3R5cGUubXVsTT1mdW5jdGlvbihvKXtpZihvPXQuY2hlY2tNYXRyaXgobyksdGhpcy5yb3dzIT09by5yb3dzfHx0aGlzLmNvbHVtbnMhPT1vLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSkqby5nZXQoaSxhKSk7cmV0dXJuIHRoaXN9LG4ubXVsPWZ1bmN0aW9uKG8saSl7cmV0dXJuIG5ldyB0KG8pLm11bChpKX0sbi5wcm90b3R5cGUubXVsdGlwbHk9bi5wcm90b3R5cGUubXVsLG4ucHJvdG90eXBlLm11bHRpcGx5Uz1uLnByb3RvdHlwZS5tdWxTLG4ucHJvdG90eXBlLm11bHRpcGx5TT1uLnByb3RvdHlwZS5tdWxNLG4ubXVsdGlwbHk9bi5tdWwsbi5wcm90b3R5cGUuZGl2PWZ1bmN0aW9uKG8pe3JldHVybiB0eXBlb2Ygbz09Im51bWJlciI/dGhpcy5kaXZTKG8pOnRoaXMuZGl2TShvKX0sbi5wcm90b3R5cGUuZGl2Uz1mdW5jdGlvbihvKXtmb3IobGV0IGk9MDtpPHRoaXMucm93cztpKyspZm9yKGxldCBhPTA7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuc2V0KGksYSx0aGlzLmdldChpLGEpL28pO3JldHVybiB0aGlzfSxuLnByb3RvdHlwZS5kaXZNPWZ1bmN0aW9uKG8pe2lmKG89dC5jaGVja01hdHJpeChvKSx0aGlzLnJvd3MhPT1vLnJvd3N8fHRoaXMuY29sdW1ucyE9PW8uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsdGhpcy5nZXQoaSxhKS9vLmdldChpLGEpKTtyZXR1cm4gdGhpc30sbi5kaXY9ZnVuY3Rpb24obyxpKXtyZXR1cm4gbmV3IHQobykuZGl2KGkpfSxuLnByb3RvdHlwZS5kaXZpZGU9bi5wcm90b3R5cGUuZGl2LG4ucHJvdG90eXBlLmRpdmlkZVM9bi5wcm90b3R5cGUuZGl2UyxuLnByb3RvdHlwZS5kaXZpZGVNPW4ucHJvdG90eXBlLmRpdk0sbi5kaXZpZGU9bi5kaXYsbi5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKG8pe3JldHVybiB0eXBlb2Ygbz09Im51bWJlciI/dGhpcy5tb2RTKG8pOnRoaXMubW9kTShvKX0sbi5wcm90b3R5cGUubW9kUz1mdW5jdGlvbihvKXtmb3IobGV0IGk9MDtpPHRoaXMucm93cztpKyspZm9yKGxldCBhPTA7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuc2V0KGksYSx0aGlzLmdldChpLGEpJW8pO3JldHVybiB0aGlzfSxuLnByb3RvdHlwZS5tb2RNPWZ1bmN0aW9uKG8pe2lmKG89dC5jaGVja01hdHJpeChvKSx0aGlzLnJvd3MhPT1vLnJvd3N8fHRoaXMuY29sdW1ucyE9PW8uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsdGhpcy5nZXQoaSxhKSVvLmdldChpLGEpKTtyZXR1cm4gdGhpc30sbi5tb2Q9ZnVuY3Rpb24obyxpKXtyZXR1cm4gbmV3IHQobykubW9kKGkpfSxuLnByb3RvdHlwZS5tb2R1bHVzPW4ucHJvdG90eXBlLm1vZCxuLnByb3RvdHlwZS5tb2R1bHVzUz1uLnByb3RvdHlwZS5tb2RTLG4ucHJvdG90eXBlLm1vZHVsdXNNPW4ucHJvdG90eXBlLm1vZE0sbi5tb2R1bHVzPW4ubW9kLG4ucHJvdG90eXBlLmFuZD1mdW5jdGlvbihvKXtyZXR1cm4gdHlwZW9mIG89PSJudW1iZXIiP3RoaXMuYW5kUyhvKTp0aGlzLmFuZE0obyl9LG4ucHJvdG90eXBlLmFuZFM9ZnVuY3Rpb24obyl7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsdGhpcy5nZXQoaSxhKSZvKTtyZXR1cm4gdGhpc30sbi5wcm90b3R5cGUuYW5kTT1mdW5jdGlvbihvKXtpZihvPXQuY2hlY2tNYXRyaXgobyksdGhpcy5yb3dzIT09by5yb3dzfHx0aGlzLmNvbHVtbnMhPT1vLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSkmby5nZXQoaSxhKSk7cmV0dXJuIHRoaXN9LG4uYW5kPWZ1bmN0aW9uKG8saSl7cmV0dXJuIG5ldyB0KG8pLmFuZChpKX0sbi5wcm90b3R5cGUub3I9ZnVuY3Rpb24obyl7cmV0dXJuIHR5cGVvZiBvPT0ibnVtYmVyIj90aGlzLm9yUyhvKTp0aGlzLm9yTShvKX0sbi5wcm90b3R5cGUub3JTPWZ1bmN0aW9uKG8pe2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSl8byk7cmV0dXJuIHRoaXN9LG4ucHJvdG90eXBlLm9yTT1mdW5jdGlvbihvKXtpZihvPXQuY2hlY2tNYXRyaXgobyksdGhpcy5yb3dzIT09by5yb3dzfHx0aGlzLmNvbHVtbnMhPT1vLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSl8by5nZXQoaSxhKSk7cmV0dXJuIHRoaXN9LG4ub3I9ZnVuY3Rpb24obyxpKXtyZXR1cm4gbmV3IHQobykub3IoaSl9LG4ucHJvdG90eXBlLnhvcj1mdW5jdGlvbihvKXtyZXR1cm4gdHlwZW9mIG89PSJudW1iZXIiP3RoaXMueG9yUyhvKTp0aGlzLnhvck0obyl9LG4ucHJvdG90eXBlLnhvclM9ZnVuY3Rpb24obyl7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsdGhpcy5nZXQoaSxhKV5vKTtyZXR1cm4gdGhpc30sbi5wcm90b3R5cGUueG9yTT1mdW5jdGlvbihvKXtpZihvPXQuY2hlY2tNYXRyaXgobyksdGhpcy5yb3dzIT09by5yb3dzfHx0aGlzLmNvbHVtbnMhPT1vLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSleby5nZXQoaSxhKSk7cmV0dXJuIHRoaXN9LG4ueG9yPWZ1bmN0aW9uKG8saSl7cmV0dXJuIG5ldyB0KG8pLnhvcihpKX0sbi5wcm90b3R5cGUubGVmdFNoaWZ0PWZ1bmN0aW9uKG8pe3JldHVybiB0eXBlb2Ygbz09Im51bWJlciI/dGhpcy5sZWZ0U2hpZnRTKG8pOnRoaXMubGVmdFNoaWZ0TShvKX0sbi5wcm90b3R5cGUubGVmdFNoaWZ0Uz1mdW5jdGlvbihvKXtmb3IobGV0IGk9MDtpPHRoaXMucm93cztpKyspZm9yKGxldCBhPTA7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuc2V0KGksYSx0aGlzLmdldChpLGEpPDxvKTtyZXR1cm4gdGhpc30sbi5wcm90b3R5cGUubGVmdFNoaWZ0TT1mdW5jdGlvbihvKXtpZihvPXQuY2hlY2tNYXRyaXgobyksdGhpcy5yb3dzIT09by5yb3dzfHx0aGlzLmNvbHVtbnMhPT1vLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSk8PG8uZ2V0KGksYSkpO3JldHVybiB0aGlzfSxuLmxlZnRTaGlmdD1mdW5jdGlvbihvLGkpe3JldHVybiBuZXcgdChvKS5sZWZ0U2hpZnQoaSl9LG4ucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQ9ZnVuY3Rpb24obyl7cmV0dXJuIHR5cGVvZiBvPT0ibnVtYmVyIj90aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKG8pOnRoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0obyl9LG4ucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTPWZ1bmN0aW9uKG8pe2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSk+Pm8pO3JldHVybiB0aGlzfSxuLnByb3RvdHlwZS5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TT1mdW5jdGlvbihvKXtpZihvPXQuY2hlY2tNYXRyaXgobyksdGhpcy5yb3dzIT09by5yb3dzfHx0aGlzLmNvbHVtbnMhPT1vLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSk+Pm8uZ2V0KGksYSkpO3JldHVybiB0aGlzfSxuLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQ9ZnVuY3Rpb24obyxpKXtyZXR1cm4gbmV3IHQobykuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdChpKX0sbi5wcm90b3R5cGUucmlnaHRTaGlmdD1mdW5jdGlvbihvKXtyZXR1cm4gdHlwZW9mIG89PSJudW1iZXIiP3RoaXMucmlnaHRTaGlmdFMobyk6dGhpcy5yaWdodFNoaWZ0TShvKX0sbi5wcm90b3R5cGUucmlnaHRTaGlmdFM9ZnVuY3Rpb24obyl7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsdGhpcy5nZXQoaSxhKT4+Pm8pO3JldHVybiB0aGlzfSxuLnByb3RvdHlwZS5yaWdodFNoaWZ0TT1mdW5jdGlvbihvKXtpZihvPXQuY2hlY2tNYXRyaXgobyksdGhpcy5yb3dzIT09by5yb3dzfHx0aGlzLmNvbHVtbnMhPT1vLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLHRoaXMuZ2V0KGksYSk+Pj5vLmdldChpLGEpKTtyZXR1cm4gdGhpc30sbi5yaWdodFNoaWZ0PWZ1bmN0aW9uKG8saSl7cmV0dXJuIG5ldyB0KG8pLnJpZ2h0U2hpZnQoaSl9LG4ucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdD1uLnByb3RvdHlwZS5yaWdodFNoaWZ0LG4ucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdFM9bi5wcm90b3R5cGUucmlnaHRTaGlmdFMsbi5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0TT1uLnByb3RvdHlwZS5yaWdodFNoaWZ0TSxuLnplcm9GaWxsUmlnaHRTaGlmdD1uLnJpZ2h0U2hpZnQsbi5wcm90b3R5cGUubm90PWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksfnRoaXMuZ2V0KG8saSkpO3JldHVybiB0aGlzfSxuLm5vdD1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykubm90KCl9LG4ucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5zZXQobyxpLE1hdGguYWJzKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5hYnM9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmFicygpfSxuLnByb3RvdHlwZS5hY29zPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5hY29zKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5hY29zPWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdChvKS5hY29zKCl9LG4ucHJvdG90eXBlLmFjb3NoPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5hY29zaCh0aGlzLmdldChvLGkpKSk7cmV0dXJuIHRoaXN9LG4uYWNvc2g9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmFjb3NoKCl9LG4ucHJvdG90eXBlLmFzaW49ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmFzaW4odGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLmFzaW49ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmFzaW4oKX0sbi5wcm90b3R5cGUuYXNpbmg9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmFzaW5oKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5hc2luaD1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykuYXNpbmgoKX0sbi5wcm90b3R5cGUuYXRhbj1mdW5jdGlvbigpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5zZXQobyxpLE1hdGguYXRhbih0aGlzLmdldChvLGkpKSk7cmV0dXJuIHRoaXN9LG4uYXRhbj1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykuYXRhbigpfSxuLnByb3RvdHlwZS5hdGFuaD1mdW5jdGlvbigpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5zZXQobyxpLE1hdGguYXRhbmgodGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLmF0YW5oPWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdChvKS5hdGFuaCgpfSxuLnByb3RvdHlwZS5jYnJ0PWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5jYnJ0KHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5jYnJ0PWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdChvKS5jYnJ0KCl9LG4ucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmNlaWwodGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLmNlaWw9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmNlaWwoKX0sbi5wcm90b3R5cGUuY2x6MzI9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmNsejMyKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5jbHozMj1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykuY2x6MzIoKX0sbi5wcm90b3R5cGUuY29zPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5jb3ModGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLmNvcz1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykuY29zKCl9LG4ucHJvdG90eXBlLmNvc2g9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmNvc2godGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLmNvc2g9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmNvc2goKX0sbi5wcm90b3R5cGUuZXhwPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5leHAodGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLmV4cD1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykuZXhwKCl9LG4ucHJvdG90eXBlLmV4cG0xPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5leHBtMSh0aGlzLmdldChvLGkpKSk7cmV0dXJuIHRoaXN9LG4uZXhwbTE9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmV4cG0xKCl9LG4ucHJvdG90eXBlLmZsb29yPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5mbG9vcih0aGlzLmdldChvLGkpKSk7cmV0dXJuIHRoaXN9LG4uZmxvb3I9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmZsb29yKCl9LG4ucHJvdG90eXBlLmZyb3VuZD1mdW5jdGlvbigpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5zZXQobyxpLE1hdGguZnJvdW5kKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5mcm91bmQ9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLmZyb3VuZCgpfSxuLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmxvZyh0aGlzLmdldChvLGkpKSk7cmV0dXJuIHRoaXN9LG4ubG9nPWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdChvKS5sb2coKX0sbi5wcm90b3R5cGUubG9nMXA9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmxvZzFwKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5sb2cxcD1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykubG9nMXAoKX0sbi5wcm90b3R5cGUubG9nMTA9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLmxvZzEwKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5sb2cxMD1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykubG9nMTAoKX0sbi5wcm90b3R5cGUubG9nMj1mdW5jdGlvbigpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5zZXQobyxpLE1hdGgubG9nMih0aGlzLmdldChvLGkpKSk7cmV0dXJuIHRoaXN9LG4ubG9nMj1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykubG9nMigpfSxuLnByb3RvdHlwZS5yb3VuZD1mdW5jdGlvbigpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5zZXQobyxpLE1hdGgucm91bmQodGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLnJvdW5kPWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdChvKS5yb3VuZCgpfSxuLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5zaWduKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5zaWduPWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdChvKS5zaWduKCl9LG4ucHJvdG90eXBlLnNpbj1mdW5jdGlvbigpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5zZXQobyxpLE1hdGguc2luKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5zaW49ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLnNpbigpfSxuLnByb3RvdHlwZS5zaW5oPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC5zaW5oKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi5zaW5oPWZ1bmN0aW9uKG8pe3JldHVybiBuZXcgdChvKS5zaW5oKCl9LG4ucHJvdG90eXBlLnNxcnQ9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLnNxcnQodGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLnNxcnQ9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLnNxcnQoKX0sbi5wcm90b3R5cGUudGFuPWZ1bmN0aW9uKCl7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKWZvcihsZXQgaT0wO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLnNldChvLGksTWF0aC50YW4odGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLnRhbj1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykudGFuKCl9LG4ucHJvdG90eXBlLnRhbmg9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLnRhbmgodGhpcy5nZXQobyxpKSkpO3JldHVybiB0aGlzfSxuLnRhbmg9ZnVuY3Rpb24obyl7cmV0dXJuIG5ldyB0KG8pLnRhbmgoKX0sbi5wcm90b3R5cGUudHJ1bmM9ZnVuY3Rpb24oKXtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuc2V0KG8saSxNYXRoLnRydW5jKHRoaXMuZ2V0KG8saSkpKTtyZXR1cm4gdGhpc30sbi50cnVuYz1mdW5jdGlvbihvKXtyZXR1cm4gbmV3IHQobykudHJ1bmMoKX0sbi5wb3c9ZnVuY3Rpb24obyxpKXtyZXR1cm4gbmV3IHQobykucG93KGkpfSxuLnByb3RvdHlwZS5wb3c9ZnVuY3Rpb24obyl7cmV0dXJuIHR5cGVvZiBvPT0ibnVtYmVyIj90aGlzLnBvd1Mobyk6dGhpcy5wb3dNKG8pfSxuLnByb3RvdHlwZS5wb3dTPWZ1bmN0aW9uKG8pe2ZvcihsZXQgaT0wO2k8dGhpcy5yb3dzO2krKylmb3IobGV0IGE9MDthPHRoaXMuY29sdW1uczthKyspdGhpcy5zZXQoaSxhLE1hdGgucG93KHRoaXMuZ2V0KGksYSksbykpO3JldHVybiB0aGlzfSxuLnByb3RvdHlwZS5wb3dNPWZ1bmN0aW9uKG8pe2lmKG89dC5jaGVja01hdHJpeChvKSx0aGlzLnJvd3MhPT1vLnJvd3N8fHRoaXMuY29sdW1ucyE9PW8uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCBpPTA7aTx0aGlzLnJvd3M7aSsrKWZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl0aGlzLnNldChpLGEsTWF0aC5wb3codGhpcy5nZXQoaSxhKSxvLmdldChpLGEpKSk7cmV0dXJuIHRoaXN9fXZhciAkdXQ9ZXMoKCk9Pnt9KTtmdW5jdGlvbiBwQyhuLHQsZSl7bGV0IG89ZT9uLnJvd3M6bi5yb3dzLTE7aWYodDwwfHx0Pm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJvdyBpbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBkQyhuLHQsZSl7bGV0IG89ZT9uLmNvbHVtbnM6bi5jb2x1bW5zLTE7aWYodDwwfHx0Pm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkNvbHVtbiBpbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBHMShuLHQpe2lmKHQudG8xREFycmF5JiYodD10LnRvMURBcnJheSgpKSx0Lmxlbmd0aCE9PW4uY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMiKTtyZXR1cm4gdH1mdW5jdGlvbiBXMShuLHQpe2lmKHQudG8xREFycmF5JiYodD10LnRvMURBcnJheSgpKSx0Lmxlbmd0aCE9PW4ucm93cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHJvd3MiKTtyZXR1cm4gdH1mdW5jdGlvbiB0aHQobix0LGUpe3JldHVybntyb3c6bVh0KG4sdCksY29sdW1uOmZYdChuLGUpfX1mdW5jdGlvbiBtWHQobix0KXtpZih0eXBlb2YgdCE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigidW5leHBlY3RlZCB0eXBlIGZvciByb3cgaW5kaWNlcyIpO2lmKHQuc29tZShvPT5vPDB8fG8+PW4ucm93cykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJvdyBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KXx8KHQ9QXJyYXkuZnJvbSh0KSksdH1mdW5jdGlvbiBmWHQobix0KXtpZih0eXBlb2YgdCE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigidW5leHBlY3RlZCB0eXBlIGZvciBjb2x1bW4gaW5kaWNlcyIpO2lmKHQuc29tZShvPT5vPDB8fG8+PW4uY29sdW1ucykpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImNvbHVtbiBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KXx8KHQ9QXJyYXkuZnJvbSh0KSksdH1mdW5jdGlvbiB5WihuLHQsZSxvLGkpe2lmKGFyZ3VtZW50cy5sZW5ndGghPT01KXRocm93IG5ldyBSYW5nZUVycm9yKCJleHBlY3RlZCA0IGFyZ3VtZW50cyIpO2lmKFZGKCJzdGFydFJvdyIsdCksVkYoImVuZFJvdyIsZSksVkYoInN0YXJ0Q29sdW1uIixvKSxWRigiZW5kQ29sdW1uIixpKSx0PmV8fG8+aXx8dDwwfHx0Pj1uLnJvd3N8fGU8MHx8ZT49bi5yb3dzfHxvPDB8fG8+PW4uY29sdW1uc3x8aTwwfHxpPj1uLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlN1Ym1hdHJpeCBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBGNChuLHQ9MCl7bGV0IGU9W107Zm9yKGxldCBvPTA7bzxuO28rKyllLnB1c2godCk7cmV0dXJuIGV9ZnVuY3Rpb24gVkYobix0KXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtufSBtdXN0IGJlIGEgbnVtYmVyYCl9ZnVuY3Rpb24gcTEobil7aWYobi5pc0VtcHR5KCkpdGhyb3cgbmV3IEVycm9yKCJFbXB0eSBtYXRyaXggaGFzIG5vIGVsZW1lbnRzIHRvIGluZGV4Iil9dmFyIHhaPWVzKCgpPT57fSk7ZnVuY3Rpb24gZWh0KG4pe2xldCB0PUY0KG4ucm93cyk7Zm9yKGxldCBlPTA7ZTxuLnJvd3M7KytlKWZvcihsZXQgbz0wO288bi5jb2x1bW5zOysrbyl0W2VdKz1uLmdldChlLG8pO3JldHVybiB0fWZ1bmN0aW9uIG5odChuKXtsZXQgdD1GNChuLmNvbHVtbnMpO2ZvcihsZXQgZT0wO2U8bi5yb3dzOysrZSlmb3IobGV0IG89MDtvPG4uY29sdW1uczsrK28pdFtvXSs9bi5nZXQoZSxvKTtyZXR1cm4gdH1mdW5jdGlvbiBvaHQobil7bGV0IHQ9MDtmb3IobGV0IGU9MDtlPG4ucm93cztlKyspZm9yKGxldCBvPTA7bzxuLmNvbHVtbnM7bysrKXQrPW4uZ2V0KGUsbyk7cmV0dXJuIHR9ZnVuY3Rpb24gaWh0KG4pe2xldCB0PUY0KG4ucm93cywxKTtmb3IobGV0IGU9MDtlPG4ucm93czsrK2UpZm9yKGxldCBvPTA7bzxuLmNvbHVtbnM7KytvKXRbZV0qPW4uZ2V0KGUsbyk7cmV0dXJuIHR9ZnVuY3Rpb24gYWh0KG4pe2xldCB0PUY0KG4uY29sdW1ucywxKTtmb3IobGV0IGU9MDtlPG4ucm93czsrK2UpZm9yKGxldCBvPTA7bzxuLmNvbHVtbnM7KytvKXRbb10qPW4uZ2V0KGUsbyk7cmV0dXJuIHR9ZnVuY3Rpb24gcmh0KG4pe2xldCB0PTE7Zm9yKGxldCBlPTA7ZTxuLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288bi5jb2x1bW5zO28rKyl0Kj1uLmdldChlLG8pO3JldHVybiB0fWZ1bmN0aW9uIHNodChuLHQsZSl7bGV0IG89bi5yb3dzLGk9bi5jb2x1bW5zLGE9W107Zm9yKGxldCByPTA7cjxvO3IrKyl7bGV0IHM9MCxsPTAsYz0wO2ZvcihsZXQgbT0wO208aTttKyspYz1uLmdldChyLG0pLWVbcl0scys9YyxsKz1jKmM7dD9hLnB1c2goKGwtcypzL2kpLyhpLTEpKTphLnB1c2goKGwtcypzL2kpL2kpfXJldHVybiBhfWZ1bmN0aW9uIGxodChuLHQsZSl7bGV0IG89bi5yb3dzLGk9bi5jb2x1bW5zLGE9W107Zm9yKGxldCByPTA7cjxpO3IrKyl7bGV0IHM9MCxsPTAsYz0wO2ZvcihsZXQgbT0wO208bzttKyspYz1uLmdldChtLHIpLWVbcl0scys9YyxsKz1jKmM7dD9hLnB1c2goKGwtcypzL28pLyhvLTEpKTphLnB1c2goKGwtcypzL28pL28pfXJldHVybiBhfWZ1bmN0aW9uIGNodChuLHQsZSl7bGV0IG89bi5yb3dzLGk9bi5jb2x1bW5zLGE9byppLHI9MCxzPTAsbD0wO2ZvcihsZXQgYz0wO2M8bztjKyspZm9yKGxldCBtPTA7bTxpO20rKylsPW4uZ2V0KGMsbSktZSxyKz1sLHMrPWwqbDtyZXR1cm4gdD8ocy1yKnIvYSkvKGEtMSk6KHMtcipyL2EpL2F9ZnVuY3Rpb24gbWh0KG4sdCl7Zm9yKGxldCBlPTA7ZTxuLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288bi5jb2x1bW5zO28rKyluLnNldChlLG8sbi5nZXQoZSxvKS10W2VdKX1mdW5jdGlvbiBmaHQobix0KXtmb3IobGV0IGU9MDtlPG4ucm93cztlKyspZm9yKGxldCBvPTA7bzxuLmNvbHVtbnM7bysrKW4uc2V0KGUsbyxuLmdldChlLG8pLXRbb10pfWZ1bmN0aW9uIHBodChuLHQpe2ZvcihsZXQgZT0wO2U8bi5yb3dzO2UrKylmb3IobGV0IG89MDtvPG4uY29sdW1ucztvKyspbi5zZXQoZSxvLG4uZ2V0KGUsbyktdCl9ZnVuY3Rpb24gZGh0KG4pe2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8bi5yb3dzO2UrKyl7bGV0IG89MDtmb3IobGV0IGk9MDtpPG4uY29sdW1ucztpKyspbys9TWF0aC5wb3cobi5nZXQoZSxpKSwyKS8obi5jb2x1bW5zLTEpO3QucHVzaChNYXRoLnNxcnQobykpfXJldHVybiB0fWZ1bmN0aW9uIGdodChuLHQpe2ZvcihsZXQgZT0wO2U8bi5yb3dzO2UrKylmb3IobGV0IG89MDtvPG4uY29sdW1ucztvKyspbi5zZXQoZSxvLG4uZ2V0KGUsbykvdFtlXSl9ZnVuY3Rpb24gdWh0KG4pe2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8bi5jb2x1bW5zO2UrKyl7bGV0IG89MDtmb3IobGV0IGk9MDtpPG4ucm93cztpKyspbys9TWF0aC5wb3cobi5nZXQoaSxlKSwyKS8obi5yb3dzLTEpO3QucHVzaChNYXRoLnNxcnQobykpfXJldHVybiB0fWZ1bmN0aW9uIGhodChuLHQpe2ZvcihsZXQgZT0wO2U8bi5yb3dzO2UrKylmb3IobGV0IG89MDtvPG4uY29sdW1ucztvKyspbi5zZXQoZSxvLG4uZ2V0KGUsbykvdFtvXSl9ZnVuY3Rpb24gX2h0KG4pe2xldCB0PW4uc2l6ZS0xLGU9MDtmb3IobGV0IG89MDtvPG4uY29sdW1ucztvKyspZm9yKGxldCBpPTA7aTxuLnJvd3M7aSsrKWUrPU1hdGgucG93KG4uZ2V0KGksbyksMikvdDtyZXR1cm4gTWF0aC5zcXJ0KGUpfWZ1bmN0aW9uIENodChuLHQpe2ZvcihsZXQgZT0wO2U8bi5yb3dzO2UrKylmb3IobGV0IG89MDtvPG4uY29sdW1ucztvKyspbi5zZXQoZSxvLG4uZ2V0KGUsbykvdCl9dmFyIE1odD1lcygoKT0+e3haKCl9KTtmdW5jdGlvbiBiaHQobix0KXtyZXR1cm4gbi10fXZhciBBbyx2bixaMT1lcygoKT0+e1p1dCgpO0t1dCgpOyR1dCgpO01odCgpO3haKCk7QW89Y2xhc3N7c3RhdGljIGZyb20xREFycmF5KHQsZSxvKXtpZih0KmUhPT1vLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiZGF0YSBsZW5ndGggZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZGltZW5zaW9ucyIpO2xldCBhPW5ldyB2bih0LGUpO2ZvcihsZXQgcj0wO3I8dDtyKyspZm9yKGxldCBzPTA7czxlO3MrKylhLnNldChyLHMsb1tyKmUrc10pO3JldHVybiBhfXN0YXRpYyByb3dWZWN0b3IodCl7bGV0IGU9bmV3IHZuKDEsdC5sZW5ndGgpO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKWUuc2V0KDAsbyx0W29dKTtyZXR1cm4gZX1zdGF0aWMgY29sdW1uVmVjdG9yKHQpe2xldCBlPW5ldyB2bih0Lmxlbmd0aCwxKTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyllLnNldChvLDAsdFtvXSk7cmV0dXJuIGV9c3RhdGljIHplcm9zKHQsZSl7cmV0dXJuIG5ldyB2bih0LGUpfXN0YXRpYyBvbmVzKHQsZSl7cmV0dXJuIG5ldyB2bih0LGUpLmZpbGwoMSl9c3RhdGljIHJhbmQodCxlLG89e30pe2lmKHR5cGVvZiBvIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7bGV0e3JhbmRvbTppPU1hdGgucmFuZG9tfT1vLGE9bmV3IHZuKHQsZSk7Zm9yKGxldCByPTA7cjx0O3IrKylmb3IobGV0IHM9MDtzPGU7cysrKWEuc2V0KHIscyxpKCkpO3JldHVybiBhfXN0YXRpYyByYW5kSW50KHQsZSxvPXt9KXtpZih0eXBlb2YgbyE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldHttaW46aT0wLG1heDphPTFlMyxyYW5kb206cj1NYXRoLnJhbmRvbX09bztpZighTnVtYmVyLmlzSW50ZWdlcihpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhbiBpbnRlZ2VyIik7aWYoIU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYW4gaW50ZWdlciIpO2lmKGk+PWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgiKTtsZXQgcz1hLWksbD1uZXcgdm4odCxlKTtmb3IobGV0IGM9MDtjPHQ7YysrKWZvcihsZXQgbT0wO208ZTttKyspe2xldCBmPWkrTWF0aC5yb3VuZChyKCkqcyk7bC5zZXQoYyxtLGYpfXJldHVybiBsfXN0YXRpYyBleWUodCxlLG8pe2U9PT12b2lkIDAmJihlPXQpLG89PT12b2lkIDAmJihvPTEpO2xldCBpPU1hdGgubWluKHQsZSksYT10aGlzLnplcm9zKHQsZSk7Zm9yKGxldCByPTA7cjxpO3IrKylhLnNldChyLHIsbyk7cmV0dXJuIGF9c3RhdGljIGRpYWcodCxlLG8pe2xldCBpPXQubGVuZ3RoO2U9PT12b2lkIDAmJihlPWkpLG89PT12b2lkIDAmJihvPWUpO2xldCBhPU1hdGgubWluKGksZSxvKSxyPXRoaXMuemVyb3MoZSxvKTtmb3IobGV0IHM9MDtzPGE7cysrKXIuc2V0KHMscyx0W3NdKTtyZXR1cm4gcn1zdGF0aWMgbWluKHQsZSl7dD10aGlzLmNoZWNrTWF0cml4KHQpLGU9dGhpcy5jaGVja01hdHJpeChlKTtsZXQgbz10LnJvd3MsaT10LmNvbHVtbnMsYT1uZXcgdm4obyxpKTtmb3IobGV0IHI9MDtyPG87cisrKWZvcihsZXQgcz0wO3M8aTtzKyspYS5zZXQocixzLE1hdGgubWluKHQuZ2V0KHIscyksZS5nZXQocixzKSkpO3JldHVybiBhfXN0YXRpYyBtYXgodCxlKXt0PXRoaXMuY2hlY2tNYXRyaXgodCksZT10aGlzLmNoZWNrTWF0cml4KGUpO2xldCBvPXQucm93cyxpPXQuY29sdW1ucyxhPW5ldyB0aGlzKG8saSk7Zm9yKGxldCByPTA7cjxvO3IrKylmb3IobGV0IHM9MDtzPGk7cysrKWEuc2V0KHIscyxNYXRoLm1heCh0LmdldChyLHMpLGUuZ2V0KHIscykpKTtyZXR1cm4gYX1zdGF0aWMgY2hlY2tNYXRyaXgodCl7cmV0dXJuIEFvLmlzTWF0cml4KHQpP3Q6bmV3IHZuKHQpfXN0YXRpYyBpc01hdHJpeCh0KXtyZXR1cm4gdCE9bnVsbCYmdC5rbGFzcz09PSJNYXRyaXgifWdldCBzaXplKCl7cmV0dXJuIHRoaXMucm93cyp0aGlzLmNvbHVtbnN9YXBwbHkodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIik7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0LmNhbGwodGhpcyxlLG8pO3JldHVybiB0aGlzfXRvMURBcnJheSgpe2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdC5wdXNoKHRoaXMuZ2V0KGUsbykpO3JldHVybiB0fXRvMkRBcnJheSgpe2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl7dC5wdXNoKFtdKTtmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdFtlXS5wdXNoKHRoaXMuZ2V0KGUsbykpfXJldHVybiB0fXRvSlNPTigpe3JldHVybiB0aGlzLnRvMkRBcnJheSgpfWlzUm93VmVjdG9yKCl7cmV0dXJuIHRoaXMucm93cz09PTF9aXNDb2x1bW5WZWN0b3IoKXtyZXR1cm4gdGhpcy5jb2x1bW5zPT09MX1pc1ZlY3Rvcigpe3JldHVybiB0aGlzLnJvd3M9PT0xfHx0aGlzLmNvbHVtbnM9PT0xfWlzU3F1YXJlKCl7cmV0dXJuIHRoaXMucm93cz09PXRoaXMuY29sdW1uc31pc0VtcHR5KCl7cmV0dXJuIHRoaXMucm93cz09PTB8fHRoaXMuY29sdW1ucz09PTB9aXNTeW1tZXRyaWMoKXtpZih0aGlzLmlzU3F1YXJlKCkpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPD10O2UrKylpZih0aGlzLmdldCh0LGUpIT09dGhpcy5nZXQoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1pc0VjaGVsb25Gb3JtKCl7bGV0IHQ9MCxlPTAsbz0tMSxpPSEwLGE9ITE7Zm9yKDt0PHRoaXMucm93cyYmaTspe2ZvcihlPTAsYT0hMTtlPHRoaXMuY29sdW1ucyYmYT09PSExOyl0aGlzLmdldCh0LGUpPT09MD9lKys6dGhpcy5nZXQodCxlKT09PTEmJmU+bz8oYT0hMCxvPWUpOihpPSExLGE9ITApO3QrK31yZXR1cm4gaX1pc1JlZHVjZWRFY2hlbG9uRm9ybSgpe2xldCB0PTAsZT0wLG89LTEsaT0hMCxhPSExO2Zvcig7dDx0aGlzLnJvd3MmJmk7KXtmb3IoZT0wLGE9ITE7ZTx0aGlzLmNvbHVtbnMmJmE9PT0hMTspdGhpcy5nZXQodCxlKT09PTA/ZSsrOnRoaXMuZ2V0KHQsZSk9PT0xJiZlPm8/KGE9ITAsbz1lKTooaT0hMSxhPSEwKTtmb3IobGV0IHI9ZSsxO3I8dGhpcy5yb3dzO3IrKyl0aGlzLmdldCh0LHIpIT09MCYmKGk9ITEpO3QrK31yZXR1cm4gaX1lY2hlbG9uRm9ybSgpe2xldCB0PXRoaXMuY2xvbmUoKSxlPTAsbz0wO2Zvcig7ZTx0LnJvd3MmJm88dC5jb2x1bW5zOyl7bGV0IGk9ZTtmb3IobGV0IGE9ZTthPHQucm93czthKyspdC5nZXQoYSxvKT50LmdldChpLG8pJiYoaT1hKTtpZih0LmdldChpLG8pPT09MClvKys7ZWxzZXt0LnN3YXBSb3dzKGUsaSk7bGV0IGE9dC5nZXQoZSxvKTtmb3IobGV0IHI9bztyPHQuY29sdW1ucztyKyspdC5zZXQoZSxyLHQuZ2V0KGUscikvYSk7Zm9yKGxldCByPWUrMTtyPHQucm93cztyKyspe2xldCBzPXQuZ2V0KHIsbykvdC5nZXQoZSxvKTt0LnNldChyLG8sMCk7Zm9yKGxldCBsPW8rMTtsPHQuY29sdW1ucztsKyspdC5zZXQocixsLHQuZ2V0KHIsbCktdC5nZXQoZSxsKSpzKX1lKyssbysrfX1yZXR1cm4gdH1yZWR1Y2VkRWNoZWxvbkZvcm0oKXtsZXQgdD10aGlzLmVjaGVsb25Gb3JtKCksZT10LmNvbHVtbnMsbz10LnJvd3MsaT1vLTE7Zm9yKDtpPj0wOylpZih0Lm1heFJvdyhpKT09PTApaS0tO2Vsc2V7bGV0IGE9MCxyPSExO2Zvcig7YTxvJiZyPT09ITE7KXQuZ2V0KGksYSk9PT0xP3I9ITA6YSsrO2ZvcihsZXQgcz0wO3M8aTtzKyspe2xldCBsPXQuZ2V0KHMsYSk7Zm9yKGxldCBjPWE7YzxlO2MrKyl7bGV0IG09dC5nZXQocyxjKS1sKnQuZ2V0KGksYyk7dC5zZXQocyxjLG0pfX1pLS19cmV0dXJuIHR9c2V0KCl7dGhyb3cgbmV3IEVycm9yKCJzZXQgbWV0aG9kIGlzIHVuaW1wbGVtZW50ZWQiKX1nZXQoKXt0aHJvdyBuZXcgRXJyb3IoImdldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCIpfXJlcGVhdCh0PXt9KXtpZih0eXBlb2YgdCE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldHtyb3dzOmU9MSxjb2x1bW5zOm89MX09dDtpZighTnVtYmVyLmlzSW50ZWdlcihlKXx8ZTw9MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJyb3dzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIik7aWYoIU51bWJlci5pc0ludGVnZXIobyl8fG88PTApdGhyb3cgbmV3IFR5cGVFcnJvcigiY29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2xldCBpPW5ldyB2bih0aGlzLnJvd3MqZSx0aGlzLmNvbHVtbnMqbyk7Zm9yKGxldCBhPTA7YTxlO2ErKylmb3IobGV0IHI9MDtyPG87cisrKWkuc2V0U3ViTWF0cml4KHRoaXMsdGhpcy5yb3dzKmEsdGhpcy5jb2x1bW5zKnIpO3JldHVybiBpfWZpbGwodCl7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLnNldChlLG8sdCk7cmV0dXJuIHRoaXN9bmVnKCl7cmV0dXJuIHRoaXMubXVsUygtMSl9Z2V0Um93KHQpe3BDKHRoaXMsdCk7bGV0IGU9W107Zm9yKGxldCBvPTA7bzx0aGlzLmNvbHVtbnM7bysrKWUucHVzaCh0aGlzLmdldCh0LG8pKTtyZXR1cm4gZX1nZXRSb3dWZWN0b3IodCl7cmV0dXJuIHZuLnJvd1ZlY3Rvcih0aGlzLmdldFJvdyh0KSl9c2V0Um93KHQsZSl7cEModGhpcyx0KSxlPUcxKHRoaXMsZSk7Zm9yKGxldCBvPTA7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuc2V0KHQsbyxlW29dKTtyZXR1cm4gdGhpc31zd2FwUm93cyh0LGUpe3BDKHRoaXMsdCkscEModGhpcyxlKTtmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspe2xldCBpPXRoaXMuZ2V0KHQsbyk7dGhpcy5zZXQodCxvLHRoaXMuZ2V0KGUsbykpLHRoaXMuc2V0KGUsbyxpKX1yZXR1cm4gdGhpc31nZXRDb2x1bW4odCl7ZEModGhpcyx0KTtsZXQgZT1bXTtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZS5wdXNoKHRoaXMuZ2V0KG8sdCkpO3JldHVybiBlfWdldENvbHVtblZlY3Rvcih0KXtyZXR1cm4gdm4uY29sdW1uVmVjdG9yKHRoaXMuZ2V0Q29sdW1uKHQpKX1zZXRDb2x1bW4odCxlKXtkQyh0aGlzLHQpLGU9VzEodGhpcyxlKTtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspdGhpcy5zZXQobyx0LGVbb10pO3JldHVybiB0aGlzfXN3YXBDb2x1bW5zKHQsZSl7ZEModGhpcyx0KSxkQyh0aGlzLGUpO2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKyl7bGV0IGk9dGhpcy5nZXQobyx0KTt0aGlzLnNldChvLHQsdGhpcy5nZXQobyxlKSksdGhpcy5zZXQobyxlLGkpfXJldHVybiB0aGlzfWFkZFJvd1ZlY3Rvcih0KXt0PUcxKHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLnNldChlLG8sdGhpcy5nZXQoZSxvKSt0W29dKTtyZXR1cm4gdGhpc31zdWJSb3dWZWN0b3IodCl7dD1HMSh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdGhpcy5zZXQoZSxvLHRoaXMuZ2V0KGUsbyktdFtvXSk7cmV0dXJuIHRoaXN9bXVsUm93VmVjdG9yKHQpe3Q9RzEodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBvPTA7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuc2V0KGUsbyx0aGlzLmdldChlLG8pKnRbb10pO3JldHVybiB0aGlzfWRpdlJvd1ZlY3Rvcih0KXt0PUcxKHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLnNldChlLG8sdGhpcy5nZXQoZSxvKS90W29dKTtyZXR1cm4gdGhpc31hZGRDb2x1bW5WZWN0b3IodCl7dD1XMSh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdGhpcy5zZXQoZSxvLHRoaXMuZ2V0KGUsbykrdFtlXSk7cmV0dXJuIHRoaXN9c3ViQ29sdW1uVmVjdG9yKHQpe3Q9VzEodGhpcyx0KTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBvPTA7bzx0aGlzLmNvbHVtbnM7bysrKXRoaXMuc2V0KGUsbyx0aGlzLmdldChlLG8pLXRbZV0pO3JldHVybiB0aGlzfW11bENvbHVtblZlY3Rvcih0KXt0PVcxKHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLnNldChlLG8sdGhpcy5nZXQoZSxvKSp0W2VdKTtyZXR1cm4gdGhpc31kaXZDb2x1bW5WZWN0b3IodCl7dD1XMSh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdGhpcy5zZXQoZSxvLHRoaXMuZ2V0KGUsbykvdFtlXSk7cmV0dXJuIHRoaXN9bXVsUm93KHQsZSl7cEModGhpcyx0KTtmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdGhpcy5zZXQodCxvLHRoaXMuZ2V0KHQsbykqZSk7cmV0dXJuIHRoaXN9bXVsQ29sdW1uKHQsZSl7ZEModGhpcyx0KTtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspdGhpcy5zZXQobyx0LHRoaXMuZ2V0KG8sdCkqZSk7cmV0dXJuIHRoaXN9bWF4KCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgdD10aGlzLmdldCgwLDApO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdGhpcy5nZXQoZSxvKT50JiYodD10aGlzLmdldChlLG8pKTtyZXR1cm4gdH1tYXhJbmRleCgpe3ExKHRoaXMpO2xldCB0PXRoaXMuZ2V0KDAsMCksZT1bMCwwXTtmb3IobGV0IG89MDtvPHRoaXMucm93cztvKyspZm9yKGxldCBpPTA7aTx0aGlzLmNvbHVtbnM7aSsrKXRoaXMuZ2V0KG8saSk+dCYmKHQ9dGhpcy5nZXQobyxpKSxlWzBdPW8sZVsxXT1pKTtyZXR1cm4gZX1taW4oKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCB0PXRoaXMuZ2V0KDAsMCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldChlLG8pPHQmJih0PXRoaXMuZ2V0KGUsbykpO3JldHVybiB0fW1pbkluZGV4KCl7cTEodGhpcyk7bGV0IHQ9dGhpcy5nZXQoMCwwKSxlPVswLDBdO2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5nZXQobyxpKTx0JiYodD10aGlzLmdldChvLGkpLGVbMF09byxlWzFdPWkpO3JldHVybiBlfW1heFJvdyh0KXtpZihwQyh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQodCwwKTtmb3IobGV0IG89MTtvPHRoaXMuY29sdW1ucztvKyspdGhpcy5nZXQodCxvKT5lJiYoZT10aGlzLmdldCh0LG8pKTtyZXR1cm4gZX1tYXhSb3dJbmRleCh0KXtwQyh0aGlzLHQpLHExKHRoaXMpO2xldCBlPXRoaXMuZ2V0KHQsMCksbz1bdCwwXTtmb3IobGV0IGk9MTtpPHRoaXMuY29sdW1ucztpKyspdGhpcy5nZXQodCxpKT5lJiYoZT10aGlzLmdldCh0LGkpLG9bMV09aSk7cmV0dXJuIG99bWluUm93KHQpe2lmKHBDKHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgZT10aGlzLmdldCh0LDApO2ZvcihsZXQgbz0xO288dGhpcy5jb2x1bW5zO28rKyl0aGlzLmdldCh0LG8pPGUmJihlPXRoaXMuZ2V0KHQsbykpO3JldHVybiBlfW1pblJvd0luZGV4KHQpe3BDKHRoaXMsdCkscTEodGhpcyk7bGV0IGU9dGhpcy5nZXQodCwwKSxvPVt0LDBdO2ZvcihsZXQgaT0xO2k8dGhpcy5jb2x1bW5zO2krKyl0aGlzLmdldCh0LGkpPGUmJihlPXRoaXMuZ2V0KHQsaSksb1sxXT1pKTtyZXR1cm4gb31tYXhDb2x1bW4odCl7aWYoZEModGhpcyx0KSx0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCBlPXRoaXMuZ2V0KDAsdCk7Zm9yKGxldCBvPTE7bzx0aGlzLnJvd3M7bysrKXRoaXMuZ2V0KG8sdCk+ZSYmKGU9dGhpcy5nZXQobyx0KSk7cmV0dXJuIGV9bWF4Q29sdW1uSW5kZXgodCl7ZEModGhpcyx0KSxxMSh0aGlzKTtsZXQgZT10aGlzLmdldCgwLHQpLG89WzAsdF07Zm9yKGxldCBpPTE7aTx0aGlzLnJvd3M7aSsrKXRoaXMuZ2V0KGksdCk+ZSYmKGU9dGhpcy5nZXQoaSx0KSxvWzBdPWkpO3JldHVybiBvfW1pbkNvbHVtbih0KXtpZihkQyh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IGU9dGhpcy5nZXQoMCx0KTtmb3IobGV0IG89MTtvPHRoaXMucm93cztvKyspdGhpcy5nZXQobyx0KTxlJiYoZT10aGlzLmdldChvLHQpKTtyZXR1cm4gZX1taW5Db2x1bW5JbmRleCh0KXtkQyh0aGlzLHQpLHExKHRoaXMpO2xldCBlPXRoaXMuZ2V0KDAsdCksbz1bMCx0XTtmb3IobGV0IGk9MTtpPHRoaXMucm93cztpKyspdGhpcy5nZXQoaSx0KTxlJiYoZT10aGlzLmdldChpLHQpLG9bMF09aSk7cmV0dXJuIG99ZGlhZygpe2xldCB0PU1hdGgubWluKHRoaXMucm93cyx0aGlzLmNvbHVtbnMpLGU9W107Zm9yKGxldCBvPTA7bzx0O28rKyllLnB1c2godGhpcy5nZXQobyxvKSk7cmV0dXJuIGV9bm9ybSh0PSJmcm9iZW5pdXMiKXtsZXQgZT0wO2lmKHQ9PT0ibWF4IilyZXR1cm4gdGhpcy5tYXgoKTtpZih0PT09ImZyb2Jlbml1cyIpe2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKylmb3IobGV0IGk9MDtpPHRoaXMuY29sdW1ucztpKyspZT1lK3RoaXMuZ2V0KG8saSkqdGhpcy5nZXQobyxpKTtyZXR1cm4gTWF0aC5zcXJ0KGUpfWVsc2UgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYHVua25vd24gbm9ybSB0eXBlOiAke3R9YCl9Y3VtdWxhdGl2ZVN1bSgpe2xldCB0PTA7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0Kz10aGlzLmdldChlLG8pLHRoaXMuc2V0KGUsbyx0KTtyZXR1cm4gdGhpc31kb3QodCl7QW8uaXNNYXRyaXgodCkmJih0PXQudG8xREFycmF5KCkpO2xldCBlPXRoaXMudG8xREFycmF5KCk7aWYoZS5sZW5ndGghPT10Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9ycyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IG89MDtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKylvKz1lW2ldKnRbaV07cmV0dXJuIG99bW11bCh0KXt0PXZuLmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMucm93cyxvPXRoaXMuY29sdW1ucyxpPXQuY29sdW1ucyxhPW5ldyB2bihlLGkpLHI9bmV3IEZsb2F0NjRBcnJheShvKTtmb3IobGV0IHM9MDtzPGk7cysrKXtmb3IobGV0IGw9MDtsPG87bCsrKXJbbF09dC5nZXQobCxzKTtmb3IobGV0IGw9MDtsPGU7bCsrKXtsZXQgYz0wO2ZvcihsZXQgbT0wO208bzttKyspYys9dGhpcy5nZXQobCxtKSpyW21dO2Euc2V0KGwscyxjKX19cmV0dXJuIGF9c3RyYXNzZW4yeDIodCl7dD12bi5jaGVja01hdHJpeCh0KTtsZXQgZT1uZXcgdm4oMiwyKSxvPXRoaXMuZ2V0KDAsMCksaT10LmdldCgwLDApLGE9dGhpcy5nZXQoMCwxKSxyPXQuZ2V0KDAsMSkscz10aGlzLmdldCgxLDApLGw9dC5nZXQoMSwwKSxjPXRoaXMuZ2V0KDEsMSksbT10LmdldCgxLDEpLGY9KG8rYykqKGkrbSkscD0ocytjKSppLGc9byooci1tKSxfPWMqKGwtaSksTT0obythKSptLHk9KHMtbykqKGkrciksTz0oYS1jKSoobCttKSxiPWYrXy1NK08sUj1nK00sRT1wK18saj1mLXArZyt5O3JldHVybiBlLnNldCgwLDAsYiksZS5zZXQoMCwxLFIpLGUuc2V0KDEsMCxFKSxlLnNldCgxLDEsaiksZX1zdHJhc3NlbjN4Myh0KXt0PXZuLmNoZWNrTWF0cml4KHQpO2xldCBlPW5ldyB2bigzLDMpLG89dGhpcy5nZXQoMCwwKSxpPXRoaXMuZ2V0KDAsMSksYT10aGlzLmdldCgwLDIpLHI9dGhpcy5nZXQoMSwwKSxzPXRoaXMuZ2V0KDEsMSksbD10aGlzLmdldCgxLDIpLGM9dGhpcy5nZXQoMiwwKSxtPXRoaXMuZ2V0KDIsMSksZj10aGlzLmdldCgyLDIpLHA9dC5nZXQoMCwwKSxnPXQuZ2V0KDAsMSksXz10LmdldCgwLDIpLE09dC5nZXQoMSwwKSx5PXQuZ2V0KDEsMSksTz10LmdldCgxLDIpLGI9dC5nZXQoMiwwKSxSPXQuZ2V0KDIsMSksRT10LmdldCgyLDIpLGo9KG8raSthLXItcy1tLWYpKnkscnQ9KG8tcikqKC1nK3kpLEo9cyooLXArZytNLXktTy1iK0UpLEV0PSgtbytyK3MpKihwLWcreSksanQ9KHIrcykqKC1wK2cpLGt0PW8qcCx3PSgtbytjK20pKihwLV8rTyksVT0oLW8rYykqKF8tTyksbnQ9KGMrbSkqKC1wK18pLGx0PShvK2krYS1zLWwtYy1tKSpPLGJ0PW0qKC1wK18rTS15LU8tYitSKSxvdD0oLWErbStmKSooeStiLVIpLHV0PShhLWYpKih5LVIpLGd0PWEqYixXdD0obStmKSooLWIrUiksUnQ9KC1hK3MrbCkqKE8rYi1FKSxHdD0oYS1sKSooTy1FKSx5ZT0ocytsKSooLWIrRSksamU9aSpNLGNlPWwqUixMdD1yKl8sUG49YypnLFZlPWYqRSxEZT1rdCtndCtqZSxxdD1qK0V0K2p0K2t0K290K2d0K1d0LExlPWt0K3crbnQrbHQrZ3QrUnQreWUsSGU9cnQrSitFdCtrdCtndCtSdCtHdCxodD1ydCtFdCtqdCtrdCtjZSxSZT1ndCtSdCtHdCt5ZStMdCxmZT1rdCt3K1UrYnQrb3QrdXQrZ3QsVWU9b3QrdXQrZ3QrV3QrUG4sRmU9a3QrdytVK250K1ZlO3JldHVybiBlLnNldCgwLDAsRGUpLGUuc2V0KDAsMSxxdCksZS5zZXQoMCwyLExlKSxlLnNldCgxLDAsSGUpLGUuc2V0KDEsMSxodCksZS5zZXQoMSwyLFJlKSxlLnNldCgyLDAsZmUpLGUuc2V0KDIsMSxVZSksZS5zZXQoMiwyLEZlKSxlfW1tdWxTdHJhc3Nlbih0KXt0PXZuLmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuY2xvbmUoKSxvPWUucm93cyxpPWUuY29sdW1ucyxhPXQucm93cyxyPXQuY29sdW1ucztpIT09YSYmY29uc29sZS53YXJuKGBNdWx0aXBseWluZyAke299IHggJHtpfSBhbmQgJHthfSB4ICR7cn0gbWF0cml4OiBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaC5gKTtmdW5jdGlvbiBzKGYscCxnKXtsZXQgXz1mLnJvd3MsTT1mLmNvbHVtbnM7aWYoXz09PXAmJk09PT1nKXJldHVybiBmO3tsZXQgeT1Bby56ZXJvcyhwLGcpO3JldHVybiB5PXkuc2V0U3ViTWF0cml4KGYsMCwwKSx5fX1sZXQgbD1NYXRoLm1heChvLGEpLGM9TWF0aC5tYXgoaSxyKTtlPXMoZSxsLGMpLHQ9cyh0LGwsYyk7ZnVuY3Rpb24gbShmLHAsZyxfKXtpZihnPD01MTJ8fF88PTUxMilyZXR1cm4gZi5tbXVsKHApO2clMj09PTEmJl8lMj09PTE/KGY9cyhmLGcrMSxfKzEpLHA9cyhwLGcrMSxfKzEpKTpnJTI9PT0xPyhmPXMoZixnKzEsXykscD1zKHAsZysxLF8pKTpfJTI9PT0xJiYoZj1zKGYsZyxfKzEpLHA9cyhwLGcsXysxKSk7bGV0IE09cGFyc2VJbnQoZi5yb3dzLzIsMTApLHk9cGFyc2VJbnQoZi5jb2x1bW5zLzIsMTApLE89Zi5zdWJNYXRyaXgoMCxNLTEsMCx5LTEpLGI9cC5zdWJNYXRyaXgoMCxNLTEsMCx5LTEpLFI9Zi5zdWJNYXRyaXgoMCxNLTEseSxmLmNvbHVtbnMtMSksRT1wLnN1Yk1hdHJpeCgwLE0tMSx5LHAuY29sdW1ucy0xKSxqPWYuc3ViTWF0cml4KE0sZi5yb3dzLTEsMCx5LTEpLHJ0PXAuc3ViTWF0cml4KE0scC5yb3dzLTEsMCx5LTEpLEo9Zi5zdWJNYXRyaXgoTSxmLnJvd3MtMSx5LGYuY29sdW1ucy0xKSxFdD1wLnN1Yk1hdHJpeChNLHAucm93cy0xLHkscC5jb2x1bW5zLTEpLGp0PW0oQW8uYWRkKE8sSiksQW8uYWRkKGIsRXQpLE0seSksa3Q9bShBby5hZGQoaixKKSxiLE0seSksdz1tKE8sQW8uc3ViKEUsRXQpLE0seSksVT1tKEosQW8uc3ViKHJ0LGIpLE0seSksbnQ9bShBby5hZGQoTyxSKSxFdCxNLHkpLGx0PW0oQW8uc3ViKGosTyksQW8uYWRkKGIsRSksTSx5KSxidD1tKEFvLnN1YihSLEopLEFvLmFkZChydCxFdCksTSx5KSxvdD1Bby5hZGQoanQsVSk7b3Quc3ViKG50KSxvdC5hZGQoYnQpO2xldCB1dD1Bby5hZGQodyxudCksZ3Q9QW8uYWRkKGt0LFUpLFd0PUFvLnN1YihqdCxrdCk7V3QuYWRkKHcpLFd0LmFkZChsdCk7bGV0IFJ0PUFvLnplcm9zKDIqb3Qucm93cywyKm90LmNvbHVtbnMpO3JldHVybiBSdD1SdC5zZXRTdWJNYXRyaXgob3QsMCwwKSxSdD1SdC5zZXRTdWJNYXRyaXgodXQsb3Qucm93cywwKSxSdD1SdC5zZXRTdWJNYXRyaXgoZ3QsMCxvdC5jb2x1bW5zKSxSdD1SdC5zZXRTdWJNYXRyaXgoV3Qsb3Qucm93cyxvdC5jb2x1bW5zKSxSdC5zdWJNYXRyaXgoMCxnLTEsMCxfLTEpfXJldHVybiBtKGUsdCxsLGMpfXNjYWxlUm93cyh0PXt9KXtpZih0eXBlb2YgdCE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldHttaW46ZT0wLG1heDpvPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1vKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IGk9bmV3IHZuKHRoaXMucm93cyx0aGlzLmNvbHVtbnMpO2ZvcihsZXQgYT0wO2E8dGhpcy5yb3dzO2ErKyl7bGV0IHI9dGhpcy5nZXRSb3coYSk7ci5sZW5ndGg+MCYmT1oocix7bWluOmUsbWF4Om8sb3V0cHV0OnJ9KSxpLnNldFJvdyhhLHIpfXJldHVybiBpfXNjYWxlQ29sdW1ucyh0PXt9KXtpZih0eXBlb2YgdCE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldHttaW46ZT0wLG1heDpvPTF9PXQ7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhIG51bWJlciIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYSBudW1iZXIiKTtpZihlPj1vKXRocm93IG5ldyBSYW5nZUVycm9yKCJtaW4gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4Iik7bGV0IGk9bmV3IHZuKHRoaXMucm93cyx0aGlzLmNvbHVtbnMpO2ZvcihsZXQgYT0wO2E8dGhpcy5jb2x1bW5zO2ErKyl7bGV0IHI9dGhpcy5nZXRDb2x1bW4oYSk7ci5sZW5ndGgmJk9aKHIse21pbjplLG1heDpvLG91dHB1dDpyfSksaS5zZXRDb2x1bW4oYSxyKX1yZXR1cm4gaX1mbGlwUm93cygpe2xldCB0PU1hdGguY2VpbCh0aGlzLmNvbHVtbnMvMik7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dDtvKyspe2xldCBpPXRoaXMuZ2V0KGUsbyksYT10aGlzLmdldChlLHRoaXMuY29sdW1ucy0xLW8pO3RoaXMuc2V0KGUsbyxhKSx0aGlzLnNldChlLHRoaXMuY29sdW1ucy0xLW8saSl9cmV0dXJuIHRoaXN9ZmxpcENvbHVtbnMoKXtsZXQgdD1NYXRoLmNlaWwodGhpcy5yb3dzLzIpO2ZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKylmb3IobGV0IG89MDtvPHQ7bysrKXtsZXQgaT10aGlzLmdldChvLGUpLGE9dGhpcy5nZXQodGhpcy5yb3dzLTEtbyxlKTt0aGlzLnNldChvLGUsYSksdGhpcy5zZXQodGhpcy5yb3dzLTEtbyxlLGkpfXJldHVybiB0aGlzfWtyb25lY2tlclByb2R1Y3QodCl7dD12bi5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLnJvd3Msbz10aGlzLmNvbHVtbnMsaT10LnJvd3MsYT10LmNvbHVtbnMscj1uZXcgdm4oZSppLG8qYSk7Zm9yKGxldCBzPTA7czxlO3MrKylmb3IobGV0IGw9MDtsPG87bCsrKWZvcihsZXQgYz0wO2M8aTtjKyspZm9yKGxldCBtPTA7bTxhO20rKylyLnNldChpKnMrYyxhKmwrbSx0aGlzLmdldChzLGwpKnQuZ2V0KGMsbSkpO3JldHVybiByfWtyb25lY2tlclN1bSh0KXtpZih0PXZuLmNoZWNrTWF0cml4KHQpLCF0aGlzLmlzU3F1YXJlKCl8fCF0LmlzU3F1YXJlKCkpdGhyb3cgbmV3IEVycm9yKCJLcm9uZWNrZXIgU3VtIG5lZWRzIHR3byBTcXVhcmUgTWF0cmljZXMiKTtsZXQgZT10aGlzLnJvd3Msbz10LnJvd3MsaT10aGlzLmtyb25lY2tlclByb2R1Y3Qodm4uZXllKG8sbykpLGE9dm4uZXllKGUsZSkua3JvbmVja2VyUHJvZHVjdCh0KTtyZXR1cm4gaS5hZGQoYSl9dHJhbnNwb3NlKCl7bGV0IHQ9bmV3IHZuKHRoaXMuY29sdW1ucyx0aGlzLnJvd3MpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKylmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspdC5zZXQobyxlLHRoaXMuZ2V0KGUsbykpO3JldHVybiB0fXNvcnRSb3dzKHQ9Ymh0KXtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspdGhpcy5zZXRSb3coZSx0aGlzLmdldFJvdyhlKS5zb3J0KHQpKTtyZXR1cm4gdGhpc31zb3J0Q29sdW1ucyh0PWJodCl7Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0Q29sdW1uKGUsdGhpcy5nZXRDb2x1bW4oZSkuc29ydCh0KSk7cmV0dXJuIHRoaXN9c3ViTWF0cml4KHQsZSxvLGkpe3laKHRoaXMsdCxlLG8saSk7bGV0IGE9bmV3IHZuKGUtdCsxLGktbysxKTtmb3IobGV0IHI9dDtyPD1lO3IrKylmb3IobGV0IHM9bztzPD1pO3MrKylhLnNldChyLXQscy1vLHRoaXMuZ2V0KHIscykpO3JldHVybiBhfXN1Yk1hdHJpeFJvdyh0LGUsbyl7aWYoZT09PXZvaWQgMCYmKGU9MCksbz09PXZvaWQgMCYmKG89dGhpcy5jb2x1bW5zLTEpLGU+b3x8ZTwwfHxlPj10aGlzLmNvbHVtbnN8fG88MHx8bz49dGhpcy5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJBcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTtsZXQgaT1uZXcgdm4odC5sZW5ndGgsby1lKzEpO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWZvcihsZXQgcj1lO3I8PW87cisrKXtpZih0W2FdPDB8fHRbYV0+PXRoaXMucm93cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgUm93IGluZGV4IG91dCBvZiByYW5nZTogJHt0W2FdfWApO2kuc2V0KGEsci1lLHRoaXMuZ2V0KHRbYV0scikpfXJldHVybiBpfXN1Yk1hdHJpeENvbHVtbih0LGUsbyl7aWYoZT09PXZvaWQgMCYmKGU9MCksbz09PXZvaWQgMCYmKG89dGhpcy5yb3dzLTEpLGU+b3x8ZTwwfHxlPj10aGlzLnJvd3N8fG88MHx8bz49dGhpcy5yb3dzKXRocm93IG5ldyBSYW5nZUVycm9yKCJBcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTtsZXQgaT1uZXcgdm4oby1lKzEsdC5sZW5ndGgpO2ZvcihsZXQgYT0wO2E8dC5sZW5ndGg7YSsrKWZvcihsZXQgcj1lO3I8PW87cisrKXtpZih0W2FdPDB8fHRbYV0+PXRoaXMuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZTogJHt0W2FdfWApO2kuc2V0KHItZSxhLHRoaXMuZ2V0KHIsdFthXSkpfXJldHVybiBpfXNldFN1Yk1hdHJpeCh0LGUsbyl7aWYodD12bi5jaGVja01hdHJpeCh0KSx0LmlzRW1wdHkoKSlyZXR1cm4gdGhpcztsZXQgaT1lK3Qucm93cy0xLGE9byt0LmNvbHVtbnMtMTt5Wih0aGlzLGUsaSxvLGEpO2ZvcihsZXQgcj0wO3I8dC5yb3dzO3IrKylmb3IobGV0IHM9MDtzPHQuY29sdW1ucztzKyspdGhpcy5zZXQoZStyLG8rcyx0LmdldChyLHMpKTtyZXR1cm4gdGhpc31zZWxlY3Rpb24odCxlKXtsZXQgbz10aHQodGhpcyx0LGUpLGk9bmV3IHZuKHQubGVuZ3RoLGUubGVuZ3RoKTtmb3IobGV0IGE9MDthPG8ucm93Lmxlbmd0aDthKyspe2xldCByPW8ucm93W2FdO2ZvcihsZXQgcz0wO3M8by5jb2x1bW4ubGVuZ3RoO3MrKyl7bGV0IGw9by5jb2x1bW5bc107aS5zZXQoYSxzLHRoaXMuZ2V0KHIsbCkpfX1yZXR1cm4gaX10cmFjZSgpe2xldCB0PU1hdGgubWluKHRoaXMucm93cyx0aGlzLmNvbHVtbnMpLGU9MDtmb3IobGV0IG89MDtvPHQ7bysrKWUrPXRoaXMuZ2V0KG8sbyk7cmV0dXJuIGV9Y2xvbmUoKXtsZXQgdD1uZXcgdm4odGhpcy5yb3dzLHRoaXMuY29sdW1ucyk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKWZvcihsZXQgbz0wO288dGhpcy5jb2x1bW5zO28rKyl0LnNldChlLG8sdGhpcy5nZXQoZSxvKSk7cmV0dXJuIHR9c3VtKHQpe3N3aXRjaCh0KXtjYXNlInJvdyI6cmV0dXJuIGVodCh0aGlzKTtjYXNlImNvbHVtbiI6cmV0dXJuIG5odCh0aGlzKTtjYXNlIHZvaWQgMDpyZXR1cm4gb2h0KHRoaXMpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX1wcm9kdWN0KHQpe3N3aXRjaCh0KXtjYXNlInJvdyI6cmV0dXJuIGlodCh0aGlzKTtjYXNlImNvbHVtbiI6cmV0dXJuIGFodCh0aGlzKTtjYXNlIHZvaWQgMDpyZXR1cm4gcmh0KHRoaXMpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX1tZWFuKHQpe2xldCBlPXRoaXMuc3VtKHQpO3N3aXRjaCh0KXtjYXNlInJvdyI6e2ZvcihsZXQgbz0wO288dGhpcy5yb3dzO28rKyllW29dLz10aGlzLmNvbHVtbnM7cmV0dXJuIGV9Y2FzZSJjb2x1bW4iOntmb3IobGV0IG89MDtvPHRoaXMuY29sdW1ucztvKyspZVtvXS89dGhpcy5yb3dzO3JldHVybiBlfWNhc2Ugdm9pZCAwOnJldHVybiBlL3RoaXMuc2l6ZTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19dmFyaWFuY2UodCxlPXt9KXtpZih0eXBlb2YgdD09Im9iamVjdCImJihlPXQsdD12b2lkIDApLHR5cGVvZiBlIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7bGV0e3VuYmlhc2VkOm89ITAsbWVhbjppPXRoaXMubWVhbih0KX09ZTtpZih0eXBlb2YgbyE9ImJvb2xlYW4iKXRocm93IG5ldyBUeXBlRXJyb3IoInVuYmlhc2VkIG11c3QgYmUgYSBib29sZWFuIik7c3dpdGNoKHQpe2Nhc2Uicm93Ijp7aWYoIUFycmF5LmlzQXJyYXkoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcigibWVhbiBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuIHNodCh0aGlzLG8saSl9Y2FzZSJjb2x1bW4iOntpZighQXJyYXkuaXNBcnJheShpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4gbGh0KHRoaXMsbyxpKX1jYXNlIHZvaWQgMDp7aWYodHlwZW9mIGkhPSJudW1iZXIiKXRocm93IG5ldyBUeXBlRXJyb3IoIm1lYW4gbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBjaHQodGhpcyxvLGkpfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX1zdGFuZGFyZERldmlhdGlvbih0LGUpe3R5cGVvZiB0PT0ib2JqZWN0IiYmKGU9dCx0PXZvaWQgMCk7bGV0IG89dGhpcy52YXJpYW5jZSh0LGUpO2lmKHQ9PT12b2lkIDApcmV0dXJuIE1hdGguc3FydChvKTtmb3IobGV0IGk9MDtpPG8ubGVuZ3RoO2krKylvW2ldPU1hdGguc3FydChvW2ldKTtyZXR1cm4gb31jZW50ZXIodCxlPXt9KXtpZih0eXBlb2YgdD09Im9iamVjdCImJihlPXQsdD12b2lkIDApLHR5cGVvZiBlIT0ib2JqZWN0Iil0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7bGV0e2NlbnRlcjpvPXRoaXMubWVhbih0KX09ZTtzd2l0Y2godCl7Y2FzZSJyb3ciOntpZighQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjZW50ZXIgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybiBtaHQodGhpcyxvKSx0aGlzfWNhc2UiY29sdW1uIjp7aWYoIUFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2VudGVyIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4gZmh0KHRoaXMsbyksdGhpc31jYXNlIHZvaWQgMDp7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBUeXBlRXJyb3IoImNlbnRlciBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIHBodCh0aGlzLG8pLHRoaXN9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXNjYWxlKHQsZT17fSl7aWYodHlwZW9mIHQ9PSJvYmplY3QiJiYoZT10LHQ9dm9pZCAwKSx0eXBlb2YgZSE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldCBvPWUuc2NhbGU7c3dpdGNoKHQpe2Nhc2Uicm93Ijp7aWYobz09PXZvaWQgMClvPWRodCh0aGlzKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KG8pKXRocm93IG5ldyBUeXBlRXJyb3IoInNjYWxlIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4gZ2h0KHRoaXMsbyksdGhpc31jYXNlImNvbHVtbiI6e2lmKG89PT12b2lkIDApbz11aHQodGhpcyk7ZWxzZSBpZighQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzY2FsZSBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuIGhodCh0aGlzLG8pLHRoaXN9Y2FzZSB2b2lkIDA6e2lmKG89PT12b2lkIDApbz1faHQodGhpcyk7ZWxzZSBpZih0eXBlb2YgbyE9Im51bWJlciIpdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBDaHQodGhpcyxvKSx0aGlzfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHt0fWApfX10b1N0cmluZyh0KXtyZXR1cm4gUFoodGhpcyx0KX19O0FvLnByb3RvdHlwZS5rbGFzcz0iTWF0cml4Ijt0eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmKEFvLnByb3RvdHlwZVtTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpXT1RdXQpO0FvLnJhbmRvbT1Bby5yYW5kO0FvLnJhbmRvbUludD1Bby5yYW5kSW50O0FvLmRpYWdvbmFsPUFvLmRpYWc7QW8ucHJvdG90eXBlLmRpYWdvbmFsPUFvLnByb3RvdHlwZS5kaWFnO0FvLmlkZW50aXR5PUFvLmV5ZTtBby5wcm90b3R5cGUubmVnYXRlPUFvLnByb3RvdHlwZS5uZWc7QW8ucHJvdG90eXBlLnRlbnNvclByb2R1Y3Q9QW8ucHJvdG90eXBlLmtyb25lY2tlclByb2R1Y3Q7dm49Y2xhc3MgZXh0ZW5kcyBBb3tjb25zdHJ1Y3Rvcih0LGUpe2lmKHN1cGVyKCksdm4uaXNNYXRyaXgodCkpcmV0dXJuIHQuY2xvbmUoKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wKWlmKHRoaXMuZGF0YT1bXSxOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0wKWZvcihsZXQgbz0wO288dDtvKyspdGhpcy5kYXRhLnB1c2gobmV3IEZsb2F0NjRBcnJheShlKSk7ZWxzZSB0aHJvdyBuZXcgVHlwZUVycm9yKCJuQ29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7bGV0IG89dDtpZih0PW8ubGVuZ3RoLGU9dD9vWzBdLmxlbmd0aDowLHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgVHlwZUVycm9yKCJEYXRhIG11c3QgYmUgYSAyRCBhcnJheSB3aXRoIGF0IGxlYXN0IG9uZSBlbGVtZW50Iik7dGhpcy5kYXRhPVtdO2ZvcihsZXQgaT0wO2k8dDtpKyspe2lmKG9baV0ubGVuZ3RoIT09ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5jb25zaXN0ZW50IGFycmF5IGRpbWVuc2lvbnMiKTt0aGlzLmRhdGEucHVzaChGbG9hdDY0QXJyYXkuZnJvbShvW2ldKSl9fWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciBvciBhbiBhcnJheSIpO3RoaXMucm93cz10LHRoaXMuY29sdW1ucz1lfXNldCh0LGUsbyl7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXT1vLHRoaXN9Z2V0KHQsZSl7cmV0dXJuIHRoaXMuZGF0YVt0XVtlXX1yZW1vdmVSb3codCl7cmV0dXJuIHBDKHRoaXMsdCksdGhpcy5kYXRhLnNwbGljZSh0LDEpLHRoaXMucm93cy09MSx0aGlzfWFkZFJvdyh0LGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT10LHQ9dGhpcy5yb3dzKSxwQyh0aGlzLHQsITApLGU9RmxvYXQ2NEFycmF5LmZyb20oRzEodGhpcyxlKSksdGhpcy5kYXRhLnNwbGljZSh0LDAsZSksdGhpcy5yb3dzKz0xLHRoaXN9cmVtb3ZlQ29sdW1uKHQpe2RDKHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKXtsZXQgbz1uZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucy0xKTtmb3IobGV0IGk9MDtpPHQ7aSsrKW9baV09dGhpcy5kYXRhW2VdW2ldO2ZvcihsZXQgaT10KzE7aTx0aGlzLmNvbHVtbnM7aSsrKW9baS0xXT10aGlzLmRhdGFbZV1baV07dGhpcy5kYXRhW2VdPW99cmV0dXJuIHRoaXMuY29sdW1ucy09MSx0aGlzfWFkZENvbHVtbih0LGUpe3R5cGVvZiBlPT0idW5kZWZpbmVkIiYmKGU9dCx0PXRoaXMuY29sdW1ucyksZEModGhpcyx0LCEwKSxlPVcxKHRoaXMsZSk7Zm9yKGxldCBvPTA7bzx0aGlzLnJvd3M7bysrKXtsZXQgaT1uZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucysxKSxhPTA7Zm9yKDthPHQ7YSsrKWlbYV09dGhpcy5kYXRhW29dW2FdO2ZvcihpW2ErK109ZVtvXTthPHRoaXMuY29sdW1ucysxO2ErKylpW2FdPXRoaXMuZGF0YVtvXVthLTFdO3RoaXMuZGF0YVtvXT1pfXJldHVybiB0aGlzLmNvbHVtbnMrPTEsdGhpc319O0p1dChBbyx2bil9KTt2YXIgT2h0PWVzKCgpPT57fSk7dmFyIGJoLEw0PWVzKCgpPT57WjEoKTtiaD1jbGFzcyBleHRlbmRzIEFve2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kYXRhPXQsdGhpcy5yb3dzPXQubGVuZ3RoLHRoaXMuY29sdW1ucz10WzBdLmxlbmd0aH1zZXQodCxlLG8pe3JldHVybiB0aGlzLmRhdGFbdF1bZV09byx0aGlzfWdldCh0LGUpe3JldHVybiB0aGlzLmRhdGFbdF1bZV19fX0pO3ZhciBCNCxQaHQ9ZXMoKCk9PntaMSgpO0w0KCk7QjQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dD1iaC5jaGVja01hdHJpeCh0KTtsZXQgZT10LmNsb25lKCksbz1lLnJvd3MsaT1lLmNvbHVtbnMsYT1uZXcgRmxvYXQ2NEFycmF5KG8pLHI9MSxzLGwsYyxtLGYscCxnLF8sTTtmb3Iocz0wO3M8bztzKyspYVtzXT1zO2ZvcihfPW5ldyBGbG9hdDY0QXJyYXkobyksbD0wO2w8aTtsKyspe2ZvcihzPTA7czxvO3MrKylfW3NdPWUuZ2V0KHMsbCk7Zm9yKHM9MDtzPG87cysrKXtmb3IoTT1NYXRoLm1pbihzLGwpLGY9MCxjPTA7YzxNO2MrKylmKz1lLmdldChzLGMpKl9bY107X1tzXS09ZixlLnNldChzLGwsX1tzXSl9Zm9yKG09bCxzPWwrMTtzPG87cysrKU1hdGguYWJzKF9bc10pPk1hdGguYWJzKF9bbV0pJiYobT1zKTtpZihtIT09bCl7Zm9yKGM9MDtjPGk7YysrKXA9ZS5nZXQobSxjKSxlLnNldChtLGMsZS5nZXQobCxjKSksZS5zZXQobCxjLHApO2c9YVttXSxhW21dPWFbbF0sYVtsXT1nLHI9LXJ9aWYobDxvJiZlLmdldChsLGwpIT09MClmb3Iocz1sKzE7czxvO3MrKyllLnNldChzLGwsZS5nZXQocyxsKS9lLmdldChsLGwpKX10aGlzLkxVPWUsdGhpcy5waXZvdFZlY3Rvcj1hLHRoaXMucGl2b3RTaWduPXJ9aXNTaW5ndWxhcigpe2xldCB0PXRoaXMuTFUsZT10LmNvbHVtbnM7Zm9yKGxldCBvPTA7bzxlO28rKylpZih0LmdldChvLG8pPT09MClyZXR1cm4hMDtyZXR1cm4hMX1zb2x2ZSh0KXt0PXZuLmNoZWNrTWF0cml4KHQpO2xldCBlPXRoaXMuTFU7aWYoZS5yb3dzIT09dC5yb3dzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBtYXRyaXggZGltZW5zaW9ucyIpO2lmKHRoaXMuaXNTaW5ndWxhcigpKXRocm93IG5ldyBFcnJvcigiTFUgbWF0cml4IGlzIHNpbmd1bGFyIik7bGV0IGk9dC5jb2x1bW5zLGE9dC5zdWJNYXRyaXhSb3codGhpcy5waXZvdFZlY3RvciwwLGktMSkscj1lLmNvbHVtbnMscyxsLGM7Zm9yKGM9MDtjPHI7YysrKWZvcihzPWMrMTtzPHI7cysrKWZvcihsPTA7bDxpO2wrKylhLnNldChzLGwsYS5nZXQocyxsKS1hLmdldChjLGwpKmUuZ2V0KHMsYykpO2ZvcihjPXItMTtjPj0wO2MtLSl7Zm9yKGw9MDtsPGk7bCsrKWEuc2V0KGMsbCxhLmdldChjLGwpL2UuZ2V0KGMsYykpO2ZvcihzPTA7czxjO3MrKylmb3IobD0wO2w8aTtsKyspYS5zZXQocyxsLGEuZ2V0KHMsbCktYS5nZXQoYyxsKSplLmdldChzLGMpKX1yZXR1cm4gYX1nZXQgZGV0ZXJtaW5hbnQoKXtsZXQgdD10aGlzLkxVO2lmKCF0LmlzU3F1YXJlKCkpdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggbXVzdCBiZSBzcXVhcmUiKTtsZXQgZT10aGlzLnBpdm90U2lnbixvPXQuY29sdW1ucztmb3IobGV0IGk9MDtpPG87aSsrKWUqPXQuZ2V0KGksaSk7cmV0dXJuIGV9Z2V0IGxvd2VyVHJpYW5ndWxhck1hdHJpeCgpe2xldCB0PXRoaXMuTFUsZT10LnJvd3Msbz10LmNvbHVtbnMsaT1uZXcgdm4oZSxvKTtmb3IobGV0IGE9MDthPGU7YSsrKWZvcihsZXQgcj0wO3I8bztyKyspYT5yP2kuc2V0KGEscix0LmdldChhLHIpKTphPT09cj9pLnNldChhLHIsMSk6aS5zZXQoYSxyLDApO3JldHVybiBpfWdldCB1cHBlclRyaWFuZ3VsYXJNYXRyaXgoKXtsZXQgdD10aGlzLkxVLGU9dC5yb3dzLG89dC5jb2x1bW5zLGk9bmV3IHZuKGUsbyk7Zm9yKGxldCBhPTA7YTxlO2ErKylmb3IobGV0IHI9MDtyPG87cisrKWE8PXI/aS5zZXQoYSxyLHQuZ2V0KGEscikpOmkuc2V0KGEsciwwKTtyZXR1cm4gaX1nZXQgcGl2b3RQZXJtdXRhdGlvblZlY3Rvcigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMucGl2b3RWZWN0b3IpfX19KTtmdW5jdGlvbiBKUChuLHQpe2xldCBlPTA7cmV0dXJuIE1hdGguYWJzKG4pPk1hdGguYWJzKHQpPyhlPXQvbixNYXRoLmFicyhuKSpNYXRoLnNxcnQoMStlKmUpKTp0IT09MD8oZT1uL3QsTWF0aC5hYnModCkqTWF0aC5zcXJ0KDErZSplKSk6MH12YXIgdlo9ZXMoKCk9Pnt9KTt2YXIgVjQseWh0PWVzKCgpPT57WjEoKTtMNCgpO3ZaKCk7VjQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dD1iaC5jaGVja01hdHJpeCh0KTtsZXQgZT10LmNsb25lKCksbz10LnJvd3MsaT10LmNvbHVtbnMsYT1uZXcgRmxvYXQ2NEFycmF5KGkpLHIscyxsLGM7Zm9yKGw9MDtsPGk7bCsrKXtsZXQgbT0wO2ZvcihyPWw7cjxvO3IrKyltPUpQKG0sZS5nZXQocixsKSk7aWYobSE9PTApe2ZvcihlLmdldChsLGwpPDAmJihtPS1tKSxyPWw7cjxvO3IrKyllLnNldChyLGwsZS5nZXQocixsKS9tKTtmb3IoZS5zZXQobCxsLGUuZ2V0KGwsbCkrMSkscz1sKzE7czxpO3MrKyl7Zm9yKGM9MCxyPWw7cjxvO3IrKyljKz1lLmdldChyLGwpKmUuZ2V0KHIscyk7Zm9yKGM9LWMvZS5nZXQobCxsKSxyPWw7cjxvO3IrKyllLnNldChyLHMsZS5nZXQocixzKStjKmUuZ2V0KHIsbCkpfX1hW2xdPS1tfXRoaXMuUVI9ZSx0aGlzLlJkaWFnPWF9c29sdmUodCl7dD12bi5jaGVja01hdHJpeCh0KTtsZXQgZT10aGlzLlFSLG89ZS5yb3dzO2lmKHQucm93cyE9PW8pdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggcm93IGRpbWVuc2lvbnMgbXVzdCBhZ3JlZSIpO2lmKCF0aGlzLmlzRnVsbFJhbmsoKSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCBpcyByYW5rIGRlZmljaWVudCIpO2xldCBpPXQuY29sdW1ucyxhPXQuY2xvbmUoKSxyPWUuY29sdW1ucyxzLGwsYyxtO2ZvcihjPTA7YzxyO2MrKylmb3IobD0wO2w8aTtsKyspe2ZvcihtPTAscz1jO3M8bztzKyspbSs9ZS5nZXQocyxjKSphLmdldChzLGwpO2ZvcihtPS1tL2UuZ2V0KGMsYykscz1jO3M8bztzKyspYS5zZXQocyxsLGEuZ2V0KHMsbCkrbSplLmdldChzLGMpKX1mb3IoYz1yLTE7Yz49MDtjLS0pe2ZvcihsPTA7bDxpO2wrKylhLnNldChjLGwsYS5nZXQoYyxsKS90aGlzLlJkaWFnW2NdKTtmb3Iocz0wO3M8YztzKyspZm9yKGw9MDtsPGk7bCsrKWEuc2V0KHMsbCxhLmdldChzLGwpLWEuZ2V0KGMsbCkqZS5nZXQocyxjKSl9cmV0dXJuIGEuc3ViTWF0cml4KDAsci0xLDAsaS0xKX1pc0Z1bGxSYW5rKCl7bGV0IHQ9dGhpcy5RUi5jb2x1bW5zO2ZvcihsZXQgZT0wO2U8dDtlKyspaWYodGhpcy5SZGlhZ1tlXT09PTApcmV0dXJuITE7cmV0dXJuITB9Z2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpe2xldCB0PXRoaXMuUVIsZT10LmNvbHVtbnMsbz1uZXcgdm4oZSxlKSxpLGE7Zm9yKGk9MDtpPGU7aSsrKWZvcihhPTA7YTxlO2ErKylpPGE/by5zZXQoaSxhLHQuZ2V0KGksYSkpOmk9PT1hP28uc2V0KGksYSx0aGlzLlJkaWFnW2ldKTpvLnNldChpLGEsMCk7cmV0dXJuIG99Z2V0IG9ydGhvZ29uYWxNYXRyaXgoKXtsZXQgdD10aGlzLlFSLGU9dC5yb3dzLG89dC5jb2x1bW5zLGk9bmV3IHZuKGUsbyksYSxyLHMsbDtmb3Iocz1vLTE7cz49MDtzLS0pe2ZvcihhPTA7YTxlO2ErKylpLnNldChhLHMsMCk7Zm9yKGkuc2V0KHMscywxKSxyPXM7cjxvO3IrKylpZih0LmdldChzLHMpIT09MCl7Zm9yKGw9MCxhPXM7YTxlO2ErKylsKz10LmdldChhLHMpKmkuZ2V0KGEscik7Zm9yKGw9LWwvdC5nZXQocyxzKSxhPXM7YTxlO2ErKylpLnNldChhLHIsaS5nZXQoYSxyKStsKnQuZ2V0KGEscykpfX1yZXR1cm4gaX19fSk7dmFyIGtTLHhodD1lcygoKT0+e1oxKCk7TDQoKTt2WigpO2tTPWNsYXNze2NvbnN0cnVjdG9yKHQsZT17fSl7aWYodD1iaC5jaGVja01hdHJpeCh0KSx0LmlzRW1wdHkoKSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCBtdXN0IGJlIG5vbi1lbXB0eSIpO2xldCBvPXQucm93cyxpPXQuY29sdW1ucyx7Y29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnM6YT0hMCxjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnM6cj0hMCxhdXRvVHJhbnNwb3NlOnM9ITF9PWUsbD1Cb29sZWFuKGEpLGM9Qm9vbGVhbihyKSxtPSExLGY7aWYobzxpKWlmKCFzKWY9dC5jbG9uZSgpLGNvbnNvbGUud2FybigiQ29tcHV0aW5nIFNWRCBvbiBhIG1hdHJpeCB3aXRoIG1vcmUgY29sdW1ucyB0aGFuIHJvd3MuIENvbnNpZGVyIGVuYWJsaW5nIGF1dG9UcmFuc3Bvc2UiKTtlbHNle2Y9dC50cmFuc3Bvc2UoKSxvPWYucm93cyxpPWYuY29sdW1ucyxtPSEwO2xldCB3PWw7bD1jLGM9d31lbHNlIGY9dC5jbG9uZSgpO2xldCBwPU1hdGgubWluKG8saSksZz1NYXRoLm1pbihvKzEsaSksXz1uZXcgRmxvYXQ2NEFycmF5KGcpLE09bmV3IHZuKG8scCkseT1uZXcgdm4oaSxpKSxPPW5ldyBGbG9hdDY0QXJyYXkoaSksYj1uZXcgRmxvYXQ2NEFycmF5KG8pLFI9bmV3IEZsb2F0NjRBcnJheShnKTtmb3IobGV0IHc9MDt3PGc7dysrKVJbd109dztsZXQgRT1NYXRoLm1pbihvLTEsaSksaj1NYXRoLm1heCgwLE1hdGgubWluKGktMixvKSkscnQ9TWF0aC5tYXgoRSxqKTtmb3IobGV0IHc9MDt3PHJ0O3crKyl7aWYodzxFKXtfW3ddPTA7Zm9yKGxldCBVPXc7VTxvO1UrKylfW3ddPUpQKF9bd10sZi5nZXQoVSx3KSk7aWYoX1t3XSE9PTApe2YuZ2V0KHcsdyk8MCYmKF9bd109LV9bd10pO2ZvcihsZXQgVT13O1U8bztVKyspZi5zZXQoVSx3LGYuZ2V0KFUsdykvX1t3XSk7Zi5zZXQodyx3LGYuZ2V0KHcsdykrMSl9X1t3XT0tX1t3XX1mb3IobGV0IFU9dysxO1U8aTtVKyspe2lmKHc8RSYmX1t3XSE9PTApe2xldCBudD0wO2ZvcihsZXQgbHQ9dztsdDxvO2x0KyspbnQrPWYuZ2V0KGx0LHcpKmYuZ2V0KGx0LFUpO250PS1udC9mLmdldCh3LHcpO2ZvcihsZXQgbHQ9dztsdDxvO2x0KyspZi5zZXQobHQsVSxmLmdldChsdCxVKStudCpmLmdldChsdCx3KSl9T1tVXT1mLmdldCh3LFUpfWlmKGwmJnc8RSlmb3IobGV0IFU9dztVPG87VSsrKU0uc2V0KFUsdyxmLmdldChVLHcpKTtpZih3PGope09bd109MDtmb3IobGV0IFU9dysxO1U8aTtVKyspT1t3XT1KUChPW3ddLE9bVV0pO2lmKE9bd10hPT0wKXtPW3crMV08MCYmKE9bd109MC1PW3ddKTtmb3IobGV0IFU9dysxO1U8aTtVKyspT1tVXS89T1t3XTtPW3crMV0rPTF9aWYoT1t3XT0tT1t3XSx3KzE8byYmT1t3XSE9PTApe2ZvcihsZXQgVT13KzE7VTxvO1UrKyliW1VdPTA7Zm9yKGxldCBVPXcrMTtVPG87VSsrKWZvcihsZXQgbnQ9dysxO250PGk7bnQrKyliW1VdKz1PW250XSpmLmdldChVLG50KTtmb3IobGV0IFU9dysxO1U8aTtVKyspe2xldCBudD0tT1tVXS9PW3crMV07Zm9yKGxldCBsdD13KzE7bHQ8bztsdCsrKWYuc2V0KGx0LFUsZi5nZXQobHQsVSkrbnQqYltsdF0pfX1pZihjKWZvcihsZXQgVT13KzE7VTxpO1UrKyl5LnNldChVLHcsT1tVXSl9fWxldCBKPU1hdGgubWluKGksbysxKTtpZihFPGkmJihfW0VdPWYuZ2V0KEUsRSkpLG88SiYmKF9bSi0xXT0wKSxqKzE8SiYmKE9bal09Zi5nZXQoaixKLTEpKSxPW0otMV09MCxsKXtmb3IobGV0IHc9RTt3PHA7dysrKXtmb3IobGV0IFU9MDtVPG87VSsrKU0uc2V0KFUsdywwKTtNLnNldCh3LHcsMSl9Zm9yKGxldCB3PUUtMTt3Pj0wO3ctLSlpZihfW3ddIT09MCl7Zm9yKGxldCBVPXcrMTtVPHA7VSsrKXtsZXQgbnQ9MDtmb3IobGV0IGx0PXc7bHQ8bztsdCsrKW50Kz1NLmdldChsdCx3KSpNLmdldChsdCxVKTtudD0tbnQvTS5nZXQodyx3KTtmb3IobGV0IGx0PXc7bHQ8bztsdCsrKU0uc2V0KGx0LFUsTS5nZXQobHQsVSkrbnQqTS5nZXQobHQsdykpfWZvcihsZXQgVT13O1U8bztVKyspTS5zZXQoVSx3LC1NLmdldChVLHcpKTtNLnNldCh3LHcsMStNLmdldCh3LHcpKTtmb3IobGV0IFU9MDtVPHctMTtVKyspTS5zZXQoVSx3LDApfWVsc2V7Zm9yKGxldCBVPTA7VTxvO1UrKylNLnNldChVLHcsMCk7TS5zZXQodyx3LDEpfX1pZihjKWZvcihsZXQgdz1pLTE7dz49MDt3LS0pe2lmKHc8aiYmT1t3XSE9PTApZm9yKGxldCBVPXcrMTtVPGk7VSsrKXtsZXQgbnQ9MDtmb3IobGV0IGx0PXcrMTtsdDxpO2x0KyspbnQrPXkuZ2V0KGx0LHcpKnkuZ2V0KGx0LFUpO250PS1udC95LmdldCh3KzEsdyk7Zm9yKGxldCBsdD13KzE7bHQ8aTtsdCsrKXkuc2V0KGx0LFUseS5nZXQobHQsVSkrbnQqeS5nZXQobHQsdykpfWZvcihsZXQgVT0wO1U8aTtVKyspeS5zZXQoVSx3LDApO3kuc2V0KHcsdywxKX1sZXQgRXQ9Si0xLGp0PTAsa3Q9TnVtYmVyLkVQU0lMT047Zm9yKDtKPjA7KXtsZXQgdyxVO2Zvcih3PUotMjt3Pj0tMSYmdyE9PS0xO3ctLSl7bGV0IG50PU51bWJlci5NSU5fVkFMVUUra3QqTWF0aC5hYnMoX1t3XStNYXRoLmFicyhfW3crMV0pKTtpZihNYXRoLmFicyhPW3ddKTw9bnR8fE51bWJlci5pc05hTihPW3ddKSl7T1t3XT0wO2JyZWFrfX1pZih3PT09Si0yKVU9NDtlbHNle2xldCBudDtmb3IobnQ9Si0xO250Pj13JiZudCE9PXc7bnQtLSl7bGV0IGx0PShudCE9PUo/TWF0aC5hYnMoT1tudF0pOjApKyhudCE9PXcrMT9NYXRoLmFicyhPW250LTFdKTowKTtpZihNYXRoLmFicyhfW250XSk8PWt0Kmx0KXtfW250XT0wO2JyZWFrfX1udD09PXc/VT0zOm50PT09Si0xP1U9MTooVT0yLHc9bnQpfXN3aXRjaCh3KyssVSl7Y2FzZSAxOntsZXQgbnQ9T1tKLTJdO09bSi0yXT0wO2ZvcihsZXQgbHQ9Si0yO2x0Pj13O2x0LS0pe2xldCBidD1KUChfW2x0XSxudCksb3Q9X1tsdF0vYnQsdXQ9bnQvYnQ7aWYoX1tsdF09YnQsbHQhPT13JiYobnQ9LXV0Kk9bbHQtMV0sT1tsdC0xXT1vdCpPW2x0LTFdKSxjKWZvcihsZXQgZ3Q9MDtndDxpO2d0KyspYnQ9b3QqeS5nZXQoZ3QsbHQpK3V0KnkuZ2V0KGd0LEotMSkseS5zZXQoZ3QsSi0xLC11dCp5LmdldChndCxsdCkrb3QqeS5nZXQoZ3QsSi0xKSkseS5zZXQoZ3QsbHQsYnQpfWJyZWFrfWNhc2UgMjp7bGV0IG50PU9bdy0xXTtPW3ctMV09MDtmb3IobGV0IGx0PXc7bHQ8SjtsdCsrKXtsZXQgYnQ9SlAoX1tsdF0sbnQpLG90PV9bbHRdL2J0LHV0PW50L2J0O2lmKF9bbHRdPWJ0LG50PS11dCpPW2x0XSxPW2x0XT1vdCpPW2x0XSxsKWZvcihsZXQgZ3Q9MDtndDxvO2d0KyspYnQ9b3QqTS5nZXQoZ3QsbHQpK3V0Kk0uZ2V0KGd0LHctMSksTS5zZXQoZ3Qsdy0xLC11dCpNLmdldChndCxsdCkrb3QqTS5nZXQoZ3Qsdy0xKSksTS5zZXQoZ3QsbHQsYnQpfWJyZWFrfWNhc2UgMzp7bGV0IG50PU1hdGgubWF4KE1hdGguYWJzKF9bSi0xXSksTWF0aC5hYnMoX1tKLTJdKSxNYXRoLmFicyhPW0otMl0pLE1hdGguYWJzKF9bd10pLE1hdGguYWJzKE9bd10pKSxsdD1fW0otMV0vbnQsYnQ9X1tKLTJdL250LG90PU9bSi0yXS9udCx1dD1fW3ddL250LGd0PU9bd10vbnQsV3Q9KChidCtsdCkqKGJ0LWx0KStvdCpvdCkvMixSdD1sdCpvdCoobHQqb3QpLEd0PTA7KFd0IT09MHx8UnQhPT0wKSYmKFd0PDA/R3Q9MC1NYXRoLnNxcnQoV3QqV3QrUnQpOkd0PU1hdGguc3FydChXdCpXdCtSdCksR3Q9UnQvKFd0K0d0KSk7bGV0IHllPSh1dCtsdCkqKHV0LWx0KStHdCxqZT11dCpndDtmb3IobGV0IGNlPXc7Y2U8Si0xO2NlKyspe2xldCBMdD1KUCh5ZSxqZSk7THQ9PT0wJiYoTHQ9TnVtYmVyLk1JTl9WQUxVRSk7bGV0IFBuPXllL0x0LFZlPWplL0x0O2lmKGNlIT09dyYmKE9bY2UtMV09THQpLHllPVBuKl9bY2VdK1ZlKk9bY2VdLE9bY2VdPVBuKk9bY2VdLVZlKl9bY2VdLGplPVZlKl9bY2UrMV0sX1tjZSsxXT1QbipfW2NlKzFdLGMpZm9yKGxldCBEZT0wO0RlPGk7RGUrKylMdD1Qbip5LmdldChEZSxjZSkrVmUqeS5nZXQoRGUsY2UrMSkseS5zZXQoRGUsY2UrMSwtVmUqeS5nZXQoRGUsY2UpK1BuKnkuZ2V0KERlLGNlKzEpKSx5LnNldChEZSxjZSxMdCk7aWYoTHQ9SlAoeWUsamUpLEx0PT09MCYmKEx0PU51bWJlci5NSU5fVkFMVUUpLFBuPXllL0x0LFZlPWplL0x0LF9bY2VdPUx0LHllPVBuKk9bY2VdK1ZlKl9bY2UrMV0sX1tjZSsxXT0tVmUqT1tjZV0rUG4qX1tjZSsxXSxqZT1WZSpPW2NlKzFdLE9bY2UrMV09UG4qT1tjZSsxXSxsJiZjZTxvLTEpZm9yKGxldCBEZT0wO0RlPG87RGUrKylMdD1QbipNLmdldChEZSxjZSkrVmUqTS5nZXQoRGUsY2UrMSksTS5zZXQoRGUsY2UrMSwtVmUqTS5nZXQoRGUsY2UpK1BuKk0uZ2V0KERlLGNlKzEpKSxNLnNldChEZSxjZSxMdCl9T1tKLTJdPXllLGp0PWp0KzE7YnJlYWt9Y2FzZSA0OntpZihfW3ddPD0wJiYoX1t3XT1fW3ddPDA/LV9bd106MCxjKSlmb3IobGV0IG50PTA7bnQ8PUV0O250KyspeS5zZXQobnQsdywteS5nZXQobnQsdykpO2Zvcig7dzxFdCYmIShfW3ddPj1fW3crMV0pOyl7bGV0IG50PV9bd107aWYoX1t3XT1fW3crMV0sX1t3KzFdPW50LGMmJnc8aS0xKWZvcihsZXQgbHQ9MDtsdDxpO2x0KyspbnQ9eS5nZXQobHQsdysxKSx5LnNldChsdCx3KzEseS5nZXQobHQsdykpLHkuc2V0KGx0LHcsbnQpO2lmKGwmJnc8by0xKWZvcihsZXQgbHQ9MDtsdDxvO2x0KyspbnQ9TS5nZXQobHQsdysxKSxNLnNldChsdCx3KzEsTS5nZXQobHQsdykpLE0uc2V0KGx0LHcsbnQpO3crK31qdD0wLEotLTticmVha319fWlmKG0pe2xldCB3PXk7eT1NLE09d310aGlzLm09byx0aGlzLm49aSx0aGlzLnM9Xyx0aGlzLlU9TSx0aGlzLlY9eX1zb2x2ZSh0KXtsZXQgZT10LG89dGhpcy50aHJlc2hvbGQsaT10aGlzLnMubGVuZ3RoLGE9dm4uemVyb3MoaSxpKTtmb3IobGV0IHA9MDtwPGk7cCsrKU1hdGguYWJzKHRoaXMuc1twXSk8PW8/YS5zZXQocCxwLDApOmEuc2V0KHAscCwxL3RoaXMuc1twXSk7bGV0IHI9dGhpcy5VLHM9dGhpcy5yaWdodFNpbmd1bGFyVmVjdG9ycyxsPXMubW11bChhKSxjPXMucm93cyxtPXIucm93cyxmPXZuLnplcm9zKGMsbSk7Zm9yKGxldCBwPTA7cDxjO3ArKylmb3IobGV0IGc9MDtnPG07ZysrKXtsZXQgXz0wO2ZvcihsZXQgTT0wO008aTtNKyspXys9bC5nZXQocCxNKSpyLmdldChnLE0pO2Yuc2V0KHAsZyxfKX1yZXR1cm4gZi5tbXVsKGUpfXNvbHZlRm9yRGlhZ29uYWwodCl7cmV0dXJuIHRoaXMuc29sdmUodm4uZGlhZyh0KSl9aW52ZXJzZSgpe2xldCB0PXRoaXMuVixlPXRoaXMudGhyZXNob2xkLG89dC5yb3dzLGk9dC5jb2x1bW5zLGE9bmV3IHZuKG8sdGhpcy5zLmxlbmd0aCk7Zm9yKGxldCBtPTA7bTxvO20rKylmb3IobGV0IGY9MDtmPGk7ZisrKU1hdGguYWJzKHRoaXMuc1tmXSk+ZSYmYS5zZXQobSxmLHQuZ2V0KG0sZikvdGhpcy5zW2ZdKTtsZXQgcj10aGlzLlUscz1yLnJvd3MsbD1yLmNvbHVtbnMsYz1uZXcgdm4obyxzKTtmb3IobGV0IG09MDttPG87bSsrKWZvcihsZXQgZj0wO2Y8cztmKyspe2xldCBwPTA7Zm9yKGxldCBnPTA7ZzxsO2crKylwKz1hLmdldChtLGcpKnIuZ2V0KGYsZyk7Yy5zZXQobSxmLHApfXJldHVybiBjfWdldCBjb25kaXRpb24oKXtyZXR1cm4gdGhpcy5zWzBdL3RoaXMuc1tNYXRoLm1pbih0aGlzLm0sdGhpcy5uKS0xXX1nZXQgbm9ybTIoKXtyZXR1cm4gdGhpcy5zWzBdfWdldCByYW5rKCl7bGV0IHQ9TWF0aC5tYXgodGhpcy5tLHRoaXMubikqdGhpcy5zWzBdKk51bWJlci5FUFNJTE9OLGU9MCxvPXRoaXMucztmb3IobGV0IGk9MCxhPW8ubGVuZ3RoO2k8YTtpKyspb1tpXT50JiZlKys7cmV0dXJuIGV9Z2V0IGRpYWdvbmFsKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5zKX1nZXQgdGhyZXNob2xkKCl7cmV0dXJuIE51bWJlci5FUFNJTE9OLzIqTWF0aC5tYXgodGhpcy5tLHRoaXMubikqdGhpcy5zWzBdfWdldCBsZWZ0U2luZ3VsYXJWZWN0b3JzKCl7cmV0dXJuIHRoaXMuVX1nZXQgcmlnaHRTaW5ndWxhclZlY3RvcnMoKXtyZXR1cm4gdGhpcy5WfWdldCBkaWFnb25hbE1hdHJpeCgpe3JldHVybiB2bi5kaWFnKHRoaXMucyl9fX0pO2Z1bmN0aW9uIHdaKG4sdD0hMSl7cmV0dXJuIG49YmguY2hlY2tNYXRyaXgobiksdD9uZXcga1MobikuaW52ZXJzZSgpOnZodChuLHZuLmV5ZShuLnJvd3MpKX1mdW5jdGlvbiB2aHQobix0LGU9ITEpe3JldHVybiBuPWJoLmNoZWNrTWF0cml4KG4pLHQ9YmguY2hlY2tNYXRyaXgodCksZT9uZXcga1Mobikuc29sdmUodCk6bi5pc1NxdWFyZSgpP25ldyBCNChuKS5zb2x2ZSh0KTpuZXcgVjQobikuc29sdmUodCl9dmFyIHdodD1lcygoKT0+e1BodCgpO3lodCgpO3hodCgpO1oxKCk7TDQoKX0pO3ZhciBTaHQ9ZXMoKCk9PntaMSgpO09odCgpO3dodCgpfSk7ZnVuY3Rpb24gcFh0KG4sdCxlLG8saSl7bGV0IGE9ZS5sZW5ndGgscj1uLngubGVuZ3RoLHM9bmV3IEFycmF5KGEpO2ZvcihsZXQgbD0wO2w8YTtsKyspe3NbbF09bmV3IEFycmF5KHIpO2xldCBjPWUuc2xpY2UoKTtjW2xdKz1vO2xldCBtPWkoYyk7Zm9yKGxldCBmPTA7ZjxyO2YrKylzW2xdW2ZdPXRbZl0tbShuLnhbZl0pfXJldHVybiBuZXcgdm4ocyl9ZnVuY3Rpb24gZFh0KG4sdCl7bGV0IGU9bi54Lmxlbmd0aCxvPW5ldyBBcnJheShlKTtmb3IobGV0IGk9MDtpPGU7aSsrKW9baV09W24ueVtpXS10W2ldXTtyZXR1cm4gbmV3IHZuKG8pfWZ1bmN0aW9uIFNaKG4sdCxlLG8saSl7bGV0IGE9ZSpvKm8scj12bi5leWUodC5sZW5ndGgsdC5sZW5ndGgsYSkscz1pKHQpLGw9bmV3IEZsb2F0NjRBcnJheShuLngubGVuZ3RoKTtmb3IobGV0IHA9MDtwPG4ueC5sZW5ndGg7cCsrKWxbcF09cyhuLnhbcF0pO2xldCBjPXBYdChuLGwsdCxvLGkpLG09ZFh0KG4sbCksZj13WihyLmFkZChjLm1tdWwoYy50cmFuc3Bvc2UoKSkpKTtyZXR1cm4gdD1uZXcgdm4oW3RdKSx0PXQuc3ViKGYubW11bChjKS5tbXVsKG0pLm11bChvKS50cmFuc3Bvc2UoKSksdC50bzFEQXJyYXkoKX12YXIgUmh0PWVzKCgpPT57U2h0KCl9KTt2YXIga2h0PXt9O1lTKGtodCx7ZGVmYXVsdDooKT0+RWh0fSk7ZnVuY3Rpb24gRWh0KG4sdCxlPXt9KXtsZXR7bWF4SXRlcmF0aW9uczpvPTEwMCxncmFkaWVudERpZmZlcmVuY2U6aT0uMSxkYW1waW5nOmE9MCxlcnJvclRvbGVyYW5jZTpyPS4wMSxtaW5WYWx1ZXM6cyxtYXhWYWx1ZXM6bCxpbml0aWFsVmFsdWVzOmN9PWU7aWYoYTw9MCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYW1waW5nIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIik7aWYoIW4ueHx8IW4ueSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBkYXRhIHBhcmFtZXRlciBtdXN0IGhhdmUgeCBhbmQgeSBlbGVtZW50cyIpO2lmKCFINChuLngpfHxuLngubGVuZ3RoPDJ8fCFINChuLnkpfHxuLnkubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgZWxlbWVudHMgbXVzdCBiZSBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiAyIHBvaW50cyIpO2lmKG4ueC5sZW5ndGghPT1uLnkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IG09Y3x8bmV3IEFycmF5KHQubGVuZ3RoKS5maWxsKDEpLGY9bS5sZW5ndGg7aWYobD1sfHxuZXcgQXJyYXkoZikuZmlsbChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikscz1zfHxuZXcgQXJyYXkoZikuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUiksbC5sZW5ndGghPT1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm1pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZSIpO2lmKCFINChtKSl0aHJvdyBuZXcgRXJyb3IoImluaXRpYWxWYWx1ZXMgbXVzdCBiZSBhbiBhcnJheSIpO2xldCBwPUZGKG4sbSx0KSxnPXA8PXIsXztmb3IoXz0wO188byYmIWc7XysrKXttPVNaKG4sbSxhLGksdCk7Zm9yKGxldCBNPTA7TTxmO00rKyltW01dPU1hdGgubWluKE1hdGgubWF4KHNbTV0sbVtNXSksbFtNXSk7aWYocD1GRihuLG0sdCksaXNOYU4ocCkpYnJlYWs7Zz1wPD1yfXJldHVybntwYXJhbWV0ZXJWYWx1ZXM6bSxwYXJhbWV0ZXJFcnJvcjpwLGl0ZXJhdGlvbnM6X319dmFyIE5odD1lcygoKT0+e2p1dCgpO1V1dCgpO1JodCgpfSk7dmFyIFlodD1leShTcz0+eyJ1c2Ugc3RyaWN0Ijt2YXIgVGh0PVNzJiZTcy5fX2F3YWl0ZXJ8fGZ1bmN0aW9uKG4sdCxlLG8pe3JldHVybiBuZXcoZXx8KGU9UHJvbWlzZSkpKGZ1bmN0aW9uKGksYSl7ZnVuY3Rpb24gcihjKXt0cnl7bChvLm5leHQoYykpfWNhdGNoKG0pe2EobSl9fWZ1bmN0aW9uIHMoYyl7dHJ5e2woby50aHJvdyhjKSl9Y2F0Y2gobSl7YShtKX19ZnVuY3Rpb24gbChjKXtjLmRvbmU/aShjLnZhbHVlKTpuZXcgZShmdW5jdGlvbihtKXttKGMudmFsdWUpfSkudGhlbihyLHMpfWwoKG89by5hcHBseShuLHR8fFtdKSkubmV4dCgpKX0pfSxBaHQ9U3MmJlNzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihuLHQpe3ZhciBlPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZihhWzBdJjEpdGhyb3cgYVsxXTtyZXR1cm4gYVsxXX0sdHJ5czpbXSxvcHM6W119LG8saSxhLHI7cmV0dXJuIHI9e25leHQ6cygwKSx0aHJvdzpzKDEpLHJldHVybjpzKDIpfSx0eXBlb2YgU3ltYm9sPT0iZnVuY3Rpb24iJiYocltTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxyO2Z1bmN0aW9uIHMoYyl7cmV0dXJuIGZ1bmN0aW9uKG0pe3JldHVybiBsKFtjLG1dKX19ZnVuY3Rpb24gbChjKXtpZihvKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2U7KXRyeXtpZihvPTEsaSYmKGE9Y1swXSYyP2kucmV0dXJuOmNbMF0/aS50aHJvd3x8KChhPWkucmV0dXJuKSYmYS5jYWxsKGkpLDApOmkubmV4dCkmJiEoYT1hLmNhbGwoaSxjWzFdKSkuZG9uZSlyZXR1cm4gYTtzd2l0Y2goaT0wLGEmJihjPVtjWzBdJjIsYS52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6YT1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gZS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTplLmxhYmVsKyssaT1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWUub3BzLnBvcCgpLGUudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKGE9ZS50cnlzLCEoYT1hLmxlbmd0aD4wJiZhW2EubGVuZ3RoLTFdKSYmKGNbMF09PT02fHxjWzBdPT09Mikpe2U9MDtjb250aW51ZX1pZihjWzBdPT09MyYmKCFhfHxjWzFdPmFbMF0mJmNbMV08YVszXSkpe2UubGFiZWw9Y1sxXTticmVha31pZihjWzBdPT09NiYmZS5sYWJlbDxhWzFdKXtlLmxhYmVsPWFbMV0sYT1jO2JyZWFrfWlmKGEmJmUubGFiZWw8YVsyXSl7ZS5sYWJlbD1hWzJdLGUub3BzLnB1c2goYyk7YnJlYWt9YVsyXSYmZS5vcHMucG9wKCksZS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKG4sZSl9Y2F0Y2gobSl7Yz1bNixtXSxpPTB9ZmluYWxseXtvPWE9MH1pZihjWzBdJjUpdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19LFJaPVNzJiZTcy5fX3JlYWR8fGZ1bmN0aW9uKG4sdCl7dmFyIGU9dHlwZW9mIFN5bWJvbD09ImZ1bmN0aW9uIiYmbltTeW1ib2wuaXRlcmF0b3JdO2lmKCFlKXJldHVybiBuO3ZhciBvPWUuY2FsbChuKSxpLGE9W10scjt0cnl7Zm9yKDsodD09PXZvaWQgMHx8dC0tID4wKSYmIShpPW8ubmV4dCgpKS5kb25lOylhLnB1c2goaS52YWx1ZSl9Y2F0Y2gocyl7cj17ZXJyb3I6c319ZmluYWxseXt0cnl7aSYmIWkuZG9uZSYmKGU9by5yZXR1cm4pJiZlLmNhbGwobyl9ZmluYWxseXtpZihyKXRocm93IHIuZXJyb3J9fXJldHVybiBhfSxEaHQ9U3MmJlNzLl9fc3ByZWFkfHxmdW5jdGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyluPW4uY29uY2F0KFJaKGFyZ3VtZW50c1t0XSkpO3JldHVybiBufSxqND1TcyYmU3MuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihuKXtpZihuJiZuLl9fZXNNb2R1bGUpcmV0dXJuIG47dmFyIHQ9e307aWYobiE9bnVsbClmb3IodmFyIGUgaW4gbilPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChuLGUpJiYodFtlXT1uW2VdKTtyZXR1cm4gdC5kZWZhdWx0PW4sdH0sZ1h0PVNzJiZTcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKG4pe3JldHVybiBuJiZuLl9fZXNNb2R1bGU/bjp7ZGVmYXVsdDpufX07T2JqZWN0LmRlZmluZVByb3BlcnR5KFNzLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdVh0PWo0KGdaKCkpLFFyPWo0KHVaKCkpLGpGPWo0KFZ1dCgpKSxJaHQ9ajQoYlooKSksd3M9ajQoUlMoKSksaFh0PWdYdCgoTmh0KCksU190KGtodCkpKSx6aHQ9MWUtNSxVRj0uMDAxLF9YdD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCl7dD09PXZvaWQgMCYmKHQ9e30pO3ZhciBlPXRoaXM7dGhpcy5sZWFybmluZ1JhdGU9MSx0aGlzLmxvY2FsQ29ubmVjdGl2aXR5PTEsdGhpcy5taW5EaXN0PS4xLHRoaXMubkNvbXBvbmVudHM9Mix0aGlzLm5FcG9jaHM9MCx0aGlzLm5OZWlnaGJvcnM9MTUsdGhpcy5uZWdhdGl2ZVNhbXBsZVJhdGU9NSx0aGlzLnJhbmRvbT1NYXRoLnJhbmRvbSx0aGlzLnJlcHVsc2lvblN0cmVuZ3RoPTEsdGhpcy5zZXRPcE1peFJhdGlvPTEsdGhpcy5zcHJlYWQ9MSx0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZT00LHRoaXMudGFyZ2V0TWV0cmljPSJjYXRlZ29yaWNhbCIsdGhpcy50YXJnZXRXZWlnaHQ9LjUsdGhpcy50YXJnZXROTmVpZ2hib3JzPXRoaXMubk5laWdoYm9ycyx0aGlzLmRpc3RhbmNlRm49TGh0LHRoaXMuaXNJbml0aWFsaXplZD0hMSx0aGlzLnJwRm9yZXN0PVtdLHRoaXMuZW1iZWRkaW5nPVtdLHRoaXMub3B0aW1pemF0aW9uU3RhdGU9bmV3IE1YdDt2YXIgbz1mdW5jdGlvbihpKXt0W2ldIT09dm9pZCAwJiYoZVtpXT10W2ldKX07bygiZGlzdGFuY2VGbiIpLG8oImxlYXJuaW5nUmF0ZSIpLG8oImxvY2FsQ29ubmVjdGl2aXR5IiksbygibWluRGlzdCIpLG8oIm5Db21wb25lbnRzIiksbygibkVwb2NocyIpLG8oIm5OZWlnaGJvcnMiKSxvKCJuZWdhdGl2ZVNhbXBsZVJhdGUiKSxvKCJyYW5kb20iKSxvKCJyZXB1bHNpb25TdHJlbmd0aCIpLG8oInNldE9wTWl4UmF0aW8iKSxvKCJzcHJlYWQiKSxvKCJ0cmFuc2Zvcm1RdWV1ZVNpemUiKX1yZXR1cm4gbi5wcm90b3R5cGUuZml0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluaXRpYWxpemVGaXQodCksdGhpcy5vcHRpbWl6ZUxheW91dCgpLHRoaXMuZW1iZWRkaW5nfSxuLnByb3RvdHlwZS5maXRBc3luYz1mdW5jdGlvbih0LGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT1mdW5jdGlvbigpe3JldHVybiEwfSksVGh0KHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBBaHQodGhpcyxmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnJldHVybiB0aGlzLmluaXRpYWxpemVGaXQodCksWzQsdGhpcy5vcHRpbWl6ZUxheW91dEFzeW5jKGUpXTtjYXNlIDE6cmV0dXJuIG8uc2VudCgpLFsyLHRoaXMuZW1iZWRkaW5nXX19KX0pfSxuLnByb3RvdHlwZS5zZXRTdXBlcnZpc2VkUHJvamVjdGlvbj1mdW5jdGlvbih0LGUpe2U9PT12b2lkIDAmJihlPXt9KSx0aGlzLlk9dCx0aGlzLnRhcmdldE1ldHJpYz1lLnRhcmdldE1ldHJpY3x8dGhpcy50YXJnZXRNZXRyaWMsdGhpcy50YXJnZXRXZWlnaHQ9ZS50YXJnZXRXZWlnaHR8fHRoaXMudGFyZ2V0V2VpZ2h0LHRoaXMudGFyZ2V0Tk5laWdoYm9ycz1lLnRhcmdldE5OZWlnaGJvcnN8fHRoaXMudGFyZ2V0Tk5laWdoYm9yc30sbi5wcm90b3R5cGUuc2V0UHJlY29tcHV0ZWRLTk49ZnVuY3Rpb24odCxlKXt0aGlzLmtubkluZGljZXM9dCx0aGlzLmtubkRpc3RhbmNlcz1lfSxuLnByb3RvdHlwZS5pbml0aWFsaXplRml0PWZ1bmN0aW9uKHQpe2lmKHQubGVuZ3RoPD10aGlzLm5OZWlnaGJvcnMpdGhyb3cgbmV3IEVycm9yKCJOb3QgZW5vdWdoIGRhdGEgcG9pbnRzICgiK3QubGVuZ3RoKyIpIHRvIGNyZWF0ZSBuTmVpZ2hib3JzOiAiK3RoaXMubk5laWdoYm9ycysiLiAgQWRkIG1vcmUgZGF0YSBwb2ludHMgb3IgYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uLiIpO2lmKHRoaXMuWD09PXQmJnRoaXMuaXNJbml0aWFsaXplZClyZXR1cm4gdGhpcy5nZXRORXBvY2hzKCk7aWYodGhpcy5YPXQsIXRoaXMua25uSW5kaWNlcyYmIXRoaXMua25uRGlzdGFuY2VzKXt2YXIgZT10aGlzLm5lYXJlc3ROZWlnaGJvcnModCk7dGhpcy5rbm5JbmRpY2VzPWUua25uSW5kaWNlcyx0aGlzLmtubkRpc3RhbmNlcz1lLmtubkRpc3RhbmNlc310aGlzLmdyYXBoPXRoaXMuZnV6enlTaW1wbGljaWFsU2V0KHQsdGhpcy5uTmVpZ2hib3JzLHRoaXMuc2V0T3BNaXhSYXRpbyksdGhpcy5tYWtlU2VhcmNoRm5zKCksdGhpcy5zZWFyY2hHcmFwaD10aGlzLm1ha2VTZWFyY2hHcmFwaCh0KSx0aGlzLnByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uKCk7dmFyIG89dGhpcy5pbml0aWFsaXplU2ltcGxpY2lhbFNldEVtYmVkZGluZygpLGk9by5oZWFkLGE9by50YWlsLHI9by5lcG9jaHNQZXJTYW1wbGU7cmV0dXJuIHRoaXMub3B0aW1pemF0aW9uU3RhdGUuaGVhZD1pLHRoaXMub3B0aW1pemF0aW9uU3RhdGUudGFpbD1hLHRoaXMub3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyU2FtcGxlPXIsdGhpcy5pbml0aWFsaXplT3B0aW1pemF0aW9uKCksdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpLHRoaXMuaXNJbml0aWFsaXplZD0hMCx0aGlzLmdldE5FcG9jaHMoKX0sbi5wcm90b3R5cGUubWFrZVNlYXJjaEZucz1mdW5jdGlvbigpe3ZhciB0PWpGLm1ha2VJbml0aWFsaXphdGlvbnModGhpcy5kaXN0YW5jZUZuKSxlPXQuaW5pdEZyb21UcmVlLG89dC5pbml0RnJvbVJhbmRvbTt0aGlzLmluaXRGcm9tVHJlZT1lLHRoaXMuaW5pdEZyb21SYW5kb209byx0aGlzLnNlYXJjaD1qRi5tYWtlSW5pdGlhbGl6ZWROTlNlYXJjaCh0aGlzLmRpc3RhbmNlRm4pfSxuLnByb3RvdHlwZS5tYWtlU2VhcmNoR3JhcGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMua25uSW5kaWNlcyxvPXRoaXMua25uRGlzdGFuY2VzLGk9W3QubGVuZ3RoLHQubGVuZ3RoXSxhPW5ldyBRci5TcGFyc2VNYXRyaXgoW10sW10sW10saSkscj0wO3I8ZS5sZW5ndGg7cisrKWZvcih2YXIgcz1lW3JdLGw9b1tyXSxjPTA7YzxzLmxlbmd0aDtjKyspe3ZhciBtPXNbY10sZj1sW2NdO2Y+MCYmYS5zZXQocixtLGYpfXZhciBwPVFyLnRyYW5zcG9zZShhKTtyZXR1cm4gUXIubWF4aW11bShhLHApfSxuLnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxvPXRoaXMuWDtpZihvPT09dm9pZCAwfHxvLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJObyBkYXRhIGhhcyBiZWVuIGZpdC4iKTt2YXIgaT1NYXRoLmZsb29yKHRoaXMubk5laWdoYm9ycyp0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSk7aT1NYXRoLm1pbihvLmxlbmd0aCxpKTt2YXIgYT1qRi5pbml0aWFsaXplU2VhcmNoKHRoaXMucnBGb3Jlc3Qsbyx0LGksdGhpcy5pbml0RnJvbVJhbmRvbSx0aGlzLmluaXRGcm9tVHJlZSx0aGlzLnJhbmRvbSkscj10aGlzLnNlYXJjaChvLHRoaXMuc2VhcmNoR3JhcGgsYSx0KSxzPXVYdC5kZWhlYXBTb3J0KHIpLGw9cy5pbmRpY2VzLGM9cy53ZWlnaHRzO2w9bC5tYXAoZnVuY3Rpb24oYnQpe3JldHVybiBidC5zbGljZSgwLGUubk5laWdoYm9ycyl9KSxjPWMubWFwKGZ1bmN0aW9uKGJ0KXtyZXR1cm4gYnQuc2xpY2UoMCxlLm5OZWlnaGJvcnMpfSk7dmFyIG09TWF0aC5tYXgoMCx0aGlzLmxvY2FsQ29ubmVjdGl2aXR5LTEpLGY9dGhpcy5zbW9vdGhLTk5EaXN0YW5jZShjLHRoaXMubk5laWdoYm9ycyxtKSxwPWYuc2lnbWFzLGc9Zi5yaG9zLF89dGhpcy5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyhsLGMscCxnKSxNPV8ucm93cyx5PV8uY29scyxPPV8udmFscyxiPVt0Lmxlbmd0aCxvLmxlbmd0aF0sUj1uZXcgUXIuU3BhcnNlTWF0cml4KE0seSxPLGIpLEU9UXIubm9ybWFsaXplKFIsImwxIiksaj1Rci5nZXRDU1IoRSkscnQ9dC5sZW5ndGgsSj13cy5yZXNoYXBlMmQoai5pbmRpY2VzLHJ0LHRoaXMubk5laWdoYm9ycyksRXQ9d3MucmVzaGFwZTJkKGoudmFsdWVzLHJ0LHRoaXMubk5laWdoYm9ycyksanQ9VWh0KEosRXQsdGhpcy5lbWJlZGRpbmcpLGt0PXRoaXMubkVwb2Nocz90aGlzLm5FcG9jaHMvMzpSLm5Sb3dzPD0xZTQ/MTAwOjMwLHc9Ui5nZXRWYWx1ZXMoKS5yZWR1Y2UoZnVuY3Rpb24oYnQsb3Qpe3JldHVybiBvdD5idD9vdDpidH0sMCk7Uj1SLm1hcChmdW5jdGlvbihidCl7cmV0dXJuIGJ0PHcva3Q/MDpidH0pLFI9UXIuZWxpbWluYXRlWmVyb3MoUik7dmFyIFU9dGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKFIuZ2V0VmFsdWVzKCksa3QpLG50PVIuZ2V0Um93cygpLGx0PVIuZ2V0Q29scygpO3JldHVybiB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7aGVhZEVtYmVkZGluZzpqdCx0YWlsRW1iZWRkaW5nOnRoaXMuZW1iZWRkaW5nLGhlYWQ6bnQsdGFpbDpsdCxjdXJyZW50RXBvY2g6MCxuRXBvY2hzOmt0LG5WZXJ0aWNlczpSLmdldERpbXMoKVsxXSxlcG9jaHNQZXJTYW1wbGU6VX0pLHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKSx0aGlzLm9wdGltaXplTGF5b3V0KCl9LG4ucHJvdG90eXBlLnByb2Nlc3NHcmFwaEZvclN1cGVydmlzZWRQcm9qZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuWSxvPXQuWDtpZihlKXtpZihlLmxlbmd0aCE9PW8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTGVuZ3RoIG9mIFggYW5kIHkgbXVzdCBiZSBlcXVhbCIpO2lmKHRoaXMudGFyZ2V0TWV0cmljPT09ImNhdGVnb3JpY2FsIil7dmFyIGk9dGhpcy50YXJnZXRXZWlnaHQ8MSxhPWk/Mi41KigxLygxLXRoaXMudGFyZ2V0V2VpZ2h0KSk6MWUxMjt0aGlzLmdyYXBoPXRoaXMuY2F0ZWdvcmljYWxTaW1wbGljaWFsU2V0SW50ZXJzZWN0aW9uKHRoaXMuZ3JhcGgsZSxhKX19fSxuLnByb3RvdHlwZS5zdGVwPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7cmV0dXJuIHQ8dGhpcy5nZXRORXBvY2hzKCkmJnRoaXMub3B0aW1pemVMYXlvdXRTdGVwKHQpLHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NofSxuLnByb3RvdHlwZS5nZXRFbWJlZGRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWJlZGRpbmd9LG4ucHJvdG90eXBlLm5lYXJlc3ROZWlnaGJvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxvPWUuZGlzdGFuY2VGbixpPWUubk5laWdoYm9ycyxhPWZ1bmN0aW9uKF8pe3JldHVybiBNYXRoLmxvZyhfKS9NYXRoLmxvZygyKX0scj1qRi5tYWtlTk5EZXNjZW50KG8sdGhpcy5yYW5kb20pLHM9ZnVuY3Rpb24oXyl7cmV0dXJuIF89PT0uNT8wOk1hdGgucm91bmQoXyl9LGw9NStNYXRoLmZsb29yKHMoTWF0aC5wb3codC5sZW5ndGgsLjUpLzIwKSksYz1NYXRoLm1heCg1LE1hdGguZmxvb3IoTWF0aC5yb3VuZChhKHQubGVuZ3RoKSkpKTt0aGlzLnJwRm9yZXN0PUlodC5tYWtlRm9yZXN0KHQsaSxsLHRoaXMucmFuZG9tKTt2YXIgbT1JaHQubWFrZUxlYWZBcnJheSh0aGlzLnJwRm9yZXN0KSxmPXIodCxtLGksYykscD1mLmluZGljZXMsZz1mLndlaWdodHM7cmV0dXJue2tubkluZGljZXM6cCxrbm5EaXN0YW5jZXM6Z319LG4ucHJvdG90eXBlLmZ1enp5U2ltcGxpY2lhbFNldD1mdW5jdGlvbih0LGUsbyl7bz09PXZvaWQgMCYmKG89MSk7dmFyIGk9dGhpcyxhPWkua25uSW5kaWNlcyxyPWE9PT12b2lkIDA/W106YSxzPWkua25uRGlzdGFuY2VzLGw9cz09PXZvaWQgMD9bXTpzLGM9aS5sb2NhbENvbm5lY3Rpdml0eSxtPXRoaXMuc21vb3RoS05ORGlzdGFuY2UobCxlLGMpLGY9bS5zaWdtYXMscD1tLnJob3MsZz10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKHIsbCxmLHApLF89Zy5yb3dzLE09Zy5jb2xzLHk9Zy52YWxzLE89W3QubGVuZ3RoLHQubGVuZ3RoXSxiPW5ldyBRci5TcGFyc2VNYXRyaXgoXyxNLHksTyksUj1Rci50cmFuc3Bvc2UoYiksRT1Rci5wYWlyd2lzZU11bHRpcGx5KGIsUiksaj1Rci5zdWJ0cmFjdChRci5hZGQoYixSKSxFKSxydD1Rci5tdWx0aXBseVNjYWxhcihqLG8pLEo9UXIubXVsdGlwbHlTY2FsYXIoRSwxLW8pLEV0PVFyLmFkZChydCxKKTtyZXR1cm4gRXR9LG4ucHJvdG90eXBlLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsbyxpKXtpPT09dm9pZCAwJiYoaT0xKTt2YXIgYT1WaHQodCxlLGksbyk7cmV0dXJuIGE9UXIuZWxpbWluYXRlWmVyb3MoYSksamh0KGEpfSxuLnByb3RvdHlwZS5zbW9vdGhLTk5EaXN0YW5jZT1mdW5jdGlvbih0LGUsbyxpLGEpe289PT12b2lkIDAmJihvPTEpLGk9PT12b2lkIDAmJihpPTY0KSxhPT09dm9pZCAwJiYoYT0xKTtmb3IodmFyIHI9TWF0aC5sb2coZSkvTWF0aC5sb2coMikqYSxzPXdzLnplcm9zKHQubGVuZ3RoKSxsPXdzLnplcm9zKHQubGVuZ3RoKSxjPTA7Yzx0Lmxlbmd0aDtjKyspe3ZhciBtPTAsZj0xLzAscD0xLGc9dFtjXSxfPWcuZmlsdGVyKGZ1bmN0aW9uKEope3JldHVybiBKPjB9KTtpZihfLmxlbmd0aD49byl7dmFyIE09TWF0aC5mbG9vcihvKSx5PW8tTTtNPjA/KHNbY109X1tNLTFdLHk+emh0JiYoc1tjXSs9eSooX1tNXS1fW00tMV0pKSk6c1tjXT15Kl9bMF19ZWxzZSBfLmxlbmd0aD4wJiYoc1tjXT13cy5tYXgoXykpO2Zvcih2YXIgTz0wO088aTtPKyspe2Zvcih2YXIgYj0wLFI9MTtSPHRbY10ubGVuZ3RoO1IrKyl7dmFyIEU9dFtjXVtSXS1zW2NdO0U+MD9iKz1NYXRoLmV4cCgtKEUvcCkpOmIrPTF9aWYoTWF0aC5hYnMoYi1yKTx6aHQpYnJlYWs7Yj5yPyhmPXAscD0obStmKS8yKToobT1wLGY9PT0xLzA/cCo9MjpwPShtK2YpLzIpfWlmKGxbY109cCxzW2NdPjApe3ZhciBqPXdzLm1lYW4oZyk7bFtjXTxVRipqJiYobFtjXT1VRipqKX1lbHNle3ZhciBydD13cy5tZWFuKHQubWFwKHdzLm1lYW4pKTtsW2NdPFVGKnJ0JiYobFtjXT1VRipydCl9fXJldHVybntzaWdtYXM6bCxyaG9zOnN9fSxuLnByb3RvdHlwZS5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3Rocz1mdW5jdGlvbih0LGUsbyxpKXtmb3IodmFyIGE9dC5sZW5ndGgscj10WzBdLmxlbmd0aCxzPXdzLnplcm9zKGEqciksbD13cy56ZXJvcyhhKnIpLGM9d3MuemVyb3MoYSpyKSxtPTA7bTxhO20rKylmb3IodmFyIGY9MDtmPHI7ZisrKXt2YXIgcD0wO3RbbV1bZl0hPT0tMSYmKHRbbV1bZl09PT1tP3A9MDplW21dW2ZdLWlbbV08PTA/cD0xOnA9TWF0aC5leHAoLSgoZVttXVtmXS1pW21dKS9vW21dKSksc1ttKnIrZl09bSxsW20qcitmXT10W21dW2ZdLGNbbSpyK2ZdPXApfXJldHVybntyb3dzOnMsY29sczpsLHZhbHM6Y319LG4ucHJvdG90eXBlLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMsZT10aGlzLmdldE5FcG9jaHMoKSxvPXRoaXMubkNvbXBvbmVudHMsaT10aGlzLmdyYXBoLmdldFZhbHVlcygpLGE9MCxyPTA7cjxpLmxlbmd0aDtyKyspe3ZhciBzPWlbcl07YTxpW3JdJiYoYT1zKX12YXIgbD10aGlzLmdyYXBoLm1hcChmdW5jdGlvbihNKXtyZXR1cm4gTTxhL2U/MDpNfSk7dGhpcy5lbWJlZGRpbmc9d3MuemVyb3MobC5uUm93cykubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHdzLnplcm9zKG8pLm1hcChmdW5jdGlvbigpe3JldHVybiB3cy50YXVSYW5kKHQucmFuZG9tKSoyMCstMTB9KX0pO2Zvcih2YXIgYz1bXSxtPVtdLGY9W10scD1sLmdldEFsbCgpLHI9MDtyPHAubGVuZ3RoO3IrKyl7dmFyIGc9cFtyXTtnLnZhbHVlJiYoYy5wdXNoKGcudmFsdWUpLGYucHVzaChnLnJvdyksbS5wdXNoKGcuY29sKSl9dmFyIF89dGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKGMsZSk7cmV0dXJue2hlYWQ6bSx0YWlsOmYsZXBvY2hzUGVyU2FtcGxlOl99fSxuLnByb3RvdHlwZS5tYWtlRXBvY2hzUGVyU2FtcGxlPWZ1bmN0aW9uKHQsZSl7dmFyIG89d3MuZmlsbGVkKHQubGVuZ3RoLC0xKSxpPXdzLm1heCh0KSxhPXQubWFwKGZ1bmN0aW9uKHIpe3JldHVybiByL2kqZX0pO3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24ocixzKXtyPjAmJihvW3NdPWUvYVtzXSl9KSxvfSxuLnByb3RvdHlwZS5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7T2JqZWN0LmFzc2lnbih0aGlzLm9wdGltaXphdGlvblN0YXRlLHQpfSxuLnByb3RvdHlwZS5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10LnJlcHVsc2lvblN0cmVuZ3RoLG89dC5sZWFybmluZ1JhdGUsaT10Lm5lZ2F0aXZlU2FtcGxlUmF0ZSxhPXRoaXMub3B0aW1pemF0aW9uU3RhdGUscj1hLmVwb2Noc1BlclNhbXBsZSxzPWEuaGVhZEVtYmVkZGluZyxsPWEudGFpbEVtYmVkZGluZyxjPXNbMF0ubGVuZ3RoLG09cy5sZW5ndGg9PT1sLmxlbmd0aCxmPXIubWFwKGZ1bmN0aW9uKF8pe3JldHVybiBfL2l9KSxwPURodChmKSxnPURodChyKTt0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7ZXBvY2hPZk5leHRTYW1wbGU6ZyxlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlOnAsZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGU6Zixtb3ZlT3RoZXI6bSxpbml0aWFsQWxwaGE6byxhbHBoYTpvLGdhbW1hOmUsZGltOmN9KX0sbi5wcm90b3R5cGUuaW5pdGlhbGl6ZU9wdGltaXphdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZW1iZWRkaW5nLGU9dGhpcy5lbWJlZGRpbmcsbz10aGlzLm9wdGltaXphdGlvblN0YXRlLGk9by5oZWFkLGE9by50YWlsLHI9by5lcG9jaHNQZXJTYW1wbGUscz10aGlzLmdldE5FcG9jaHMoKSxsPXRoaXMuZ3JhcGgubkNvbHMsYz1CaHQodGhpcy5zcHJlYWQsdGhpcy5taW5EaXN0KSxtPWMuYSxmPWMuYjt0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7aGVhZEVtYmVkZGluZzp0LHRhaWxFbWJlZGRpbmc6ZSxoZWFkOmksdGFpbDphLGVwb2Noc1BlclNhbXBsZTpyLGE6bSxiOmYsbkVwb2NoczpzLG5WZXJ0aWNlczpsfSl9LG4ucHJvdG90eXBlLm9wdGltaXplTGF5b3V0U3RlcD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxvPWUuaGVhZCxpPWUudGFpbCxhPWUuaGVhZEVtYmVkZGluZyxyPWUudGFpbEVtYmVkZGluZyxzPWUuZXBvY2hzUGVyU2FtcGxlLGw9ZS5lcG9jaE9mTmV4dFNhbXBsZSxjPWUuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSxtPWUuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsZj1lLm1vdmVPdGhlcixwPWUuaW5pdGlhbEFscGhhLGc9ZS5hbHBoYSxfPWUuZ2FtbWEsTT1lLmEseT1lLmIsTz1lLmRpbSxiPWUubkVwb2NocyxSPWUublZlcnRpY2VzLEU9NCxqPTA7ajxzLmxlbmd0aDtqKyspaWYoIShsW2pdPnQpKXt2YXIgcnQ9b1tqXSxKPWlbal0sRXQ9YVtydF0sanQ9cltKXSxrdD1GaHQoRXQsanQpLHc9MDtrdD4wJiYodz0tMipNKnkqTWF0aC5wb3coa3QseS0xKSx3Lz1NKk1hdGgucG93KGt0LHkpKzEpO2Zvcih2YXIgVT0wO1U8TztVKyspe3ZhciBudD1IaHQodyooRXRbVV0tanRbVV0pLEUpO0V0W1VdKz1udCpnLGYmJihqdFtVXSs9LW50KmcpfWxbal0rPXNbal07Zm9yKHZhciBsdD1NYXRoLmZsb29yKCh0LWNbal0pL21bal0pLGJ0PTA7YnQ8bHQ7YnQrKyl7dmFyIG90PXdzLnRhdVJhbmRJbnQoUix0aGlzLnJhbmRvbSksdXQ9cltvdF0sZ3Q9Rmh0KEV0LHV0KSxXdD0wO2lmKGd0PjApV3Q9MipfKnksV3QvPSguMDAxK2d0KSooTSpNYXRoLnBvdyhndCx5KSsxKTtlbHNlIGlmKHJ0PT09b3QpY29udGludWU7Zm9yKHZhciBVPTA7VTxPO1UrKyl7dmFyIG50PTQ7V3Q+MCYmKG50PUhodChXdCooRXRbVV0tdXRbVV0pLEUpKSxFdFtVXSs9bnQqZ319Y1tqXSs9bHQqbVtqXX1yZXR1cm4gZS5hbHBoYT1wKigxLXQvYiksZS5jdXJyZW50RXBvY2grPTEsYX0sbi5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRBc3luYz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0PT09dm9pZCAwJiYodD1mdW5jdGlvbigpe3JldHVybiEwfSksbmV3IFByb21pc2UoZnVuY3Rpb24obyxpKXt2YXIgYT1mdW5jdGlvbigpe3JldHVybiBUaHQoZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHIscyxsLGMsbSxmO3JldHVybiBBaHQodGhpcyxmdW5jdGlvbihwKXt0cnl7aWYocj10aGlzLm9wdGltaXphdGlvblN0YXRlLHM9ci5uRXBvY2hzLGw9ci5jdXJyZW50RXBvY2gsdGhpcy5lbWJlZGRpbmc9dGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAobCksYz10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCxtPXQoYyk9PT0hMSxmPWM9PT1zLCFtJiYhZilzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGEoKX0sMCk7ZWxzZSByZXR1cm5bMixvKGYpXX1jYXRjaChnKXtpKGcpfXJldHVyblsyXX0pfSl9O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gYSgpfSwwKX0pfSxuLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dD1mdW5jdGlvbih0KXt0PT09dm9pZCAwJiYodD1mdW5jdGlvbigpe3JldHVybiEwfSk7Zm9yKHZhciBlPSExLG89W107IWU7KXt2YXIgaT10aGlzLm9wdGltaXphdGlvblN0YXRlLGE9aS5uRXBvY2hzLHI9aS5jdXJyZW50RXBvY2g7bz10aGlzLm9wdGltaXplTGF5b3V0U3RlcChyKTt2YXIgcz10aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCxsPXQocyk9PT0hMTtlPXM9PT1hfHxsfXJldHVybiBvfSxuLnByb3RvdHlwZS5nZXRORXBvY2hzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5ncmFwaDtpZih0aGlzLm5FcG9jaHM+MClyZXR1cm4gdGhpcy5uRXBvY2hzO3ZhciBlPXQublJvd3M7cmV0dXJuIGU8PTI1MDA/NTAwOmU8PTVlMz80MDA6ZTw9NzUwMD8zMDA6MjAwfSxufSgpO1NzLlVNQVA9X1h0O2Z1bmN0aW9uIExodChuLHQpe2Zvcih2YXIgZT0wLG89MDtvPG4ubGVuZ3RoO28rKyllKz1NYXRoLnBvdyhuW29dLXRbb10sMik7cmV0dXJuIE1hdGguc3FydChlKX1Tcy5ldWNsaWRlYW49TGh0O2Z1bmN0aW9uIENYdChuLHQpe2Zvcih2YXIgZT0wLG89MCxpPTAsYT0wO2E8bi5sZW5ndGg7YSsrKWUrPW5bYV0qdFthXSxvKz1NYXRoLnBvdyhuW2FdLDIpLGkrPU1hdGgucG93KHRbYV0sMik7cmV0dXJuIG89PT0wJiZpPT09MD8wOm89PT0wfHxpPT09MD8xOjEtZS9NYXRoLnNxcnQobyppKX1Tcy5jb3NpbmU9Q1h0O3ZhciBNWHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dGhpcy5jdXJyZW50RXBvY2g9MCx0aGlzLmhlYWRFbWJlZGRpbmc9W10sdGhpcy50YWlsRW1iZWRkaW5nPVtdLHRoaXMuaGVhZD1bXSx0aGlzLnRhaWw9W10sdGhpcy5lcG9jaHNQZXJTYW1wbGU9W10sdGhpcy5lcG9jaE9mTmV4dFNhbXBsZT1bXSx0aGlzLmVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGU9W10sdGhpcy5lcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZT1bXSx0aGlzLm1vdmVPdGhlcj0hMCx0aGlzLmluaXRpYWxBbHBoYT0xLHRoaXMuYWxwaGE9MSx0aGlzLmdhbW1hPTEsdGhpcy5hPTEuNTc2OTQzNDYwMzExMzA3Nyx0aGlzLmI9Ljg5NTA2MDg3NzkxMDk3MzMsdGhpcy5kaW09Mix0aGlzLm5FcG9jaHM9NTAwLHRoaXMublZlcnRpY2VzPTB9cmV0dXJuIG59KCk7ZnVuY3Rpb24gSGh0KG4sdCl7cmV0dXJuIG4+dD90Om48LXQ/LXQ6bn1mdW5jdGlvbiBGaHQobix0KXtmb3IodmFyIGU9MCxvPTA7bzxuLmxlbmd0aDtvKyspZSs9TWF0aC5wb3cobltvXS10W29dLDIpO3JldHVybiBlfWZ1bmN0aW9uIEJodChuLHQpe3ZhciBlPWZ1bmN0aW9uKHApe3ZhciBnPVJaKHAsMiksXz1nWzBdLE09Z1sxXTtyZXR1cm4gZnVuY3Rpb24oeSl7cmV0dXJuIDEvKDErXypNYXRoLnBvdyh5LDIqTSkpfX0sbz13cy5saW5lYXIoMCxuKjMsMzAwKS5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHA8dD8xOnB9KSxpPXdzLnplcm9zKG8ubGVuZ3RoKS5tYXAoZnVuY3Rpb24ocCxnKXt2YXIgXz1vW2ddPj10O3JldHVybiBfP01hdGguZXhwKC0ob1tnXS10KS9uKTpwfSksYT1bLjUsLjVdLHI9e3g6byx5Oml9LHM9e2RhbXBpbmc6MS41LGluaXRpYWxWYWx1ZXM6YSxncmFkaWVudERpZmZlcmVuY2U6LjEsbWF4SXRlcmF0aW9uczoxMDAsZXJyb3JUb2xlcmFuY2U6LjAxfSxsPWhYdC5kZWZhdWx0KHIsZSxzKS5wYXJhbWV0ZXJWYWx1ZXMsYz1SWihsLDIpLG09Y1swXSxmPWNbMV07cmV0dXJue2E6bSxiOmZ9fVNzLmZpbmRBQlBhcmFtcz1CaHQ7ZnVuY3Rpb24gVmh0KG4sdCxlLG8pe3JldHVybiBlPT09dm9pZCAwJiYoZT0xKSxvPT09dm9pZCAwJiYobz01KSxuLm1hcChmdW5jdGlvbihpLGEscil7cmV0dXJuIHRbYV09PT0tMXx8dFtyXT09PS0xP2kqTWF0aC5leHAoLWUpOnRbYV0hPT10W3JdP2kqTWF0aC5leHAoLW8pOml9KX1Tcy5mYXN0SW50ZXJzZWN0aW9uPVZodDtmdW5jdGlvbiBqaHQobil7bj1Rci5ub3JtYWxpemUobiwibWF4Iik7dmFyIHQ9UXIudHJhbnNwb3NlKG4pLGU9UXIucGFpcndpc2VNdWx0aXBseSh0LG4pO3JldHVybiBuPVFyLmFkZChuLFFyLnN1YnRyYWN0KHQsZSkpLFFyLmVsaW1pbmF0ZVplcm9zKG4pfVNzLnJlc2V0TG9jYWxDb25uZWN0aXZpdHk9amh0O2Z1bmN0aW9uIFVodChuLHQsZSl7Zm9yKHZhciBvPXdzLnplcm9zKG4ubGVuZ3RoKS5tYXAoZnVuY3Rpb24obCl7cmV0dXJuIHdzLnplcm9zKGVbMF0ubGVuZ3RoKX0pLGk9MDtpPG4ubGVuZ3RoO2krKylmb3IodmFyIGE9MDthPG5bMF0ubGVuZ3RoO2ErKylmb3IodmFyIHI9MDtyPGVbMF0ubGVuZ3RoO3IrKyl7dmFyIHM9bltpXVthXTtvW2ldW3JdKz10W2ldW2FdKmVbc11bcl19cmV0dXJuIG99U3MuaW5pdFRyYW5zZm9ybT1VaHR9KTt2YXIgR2h0PWV5KEVaPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShFWiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGJYdD1ZaHQoKTtFWi5VTUFQPWJYdC5VTUFQfSk7dmFyIHlYPSRaKFBYKCksMSkse19fZXh0ZW5kczpZaSxfX2Fzc2lnbjpXS3QsX19yZXN0OmVfLF9fZGVjb3JhdGU6eFgsX19wYXJhbTpxS3QsX19tZXRhZGF0YTpaS3QsX19hd2FpdGVyOnpDLF9fZ2VuZXJhdG9yOm9OLF9fZXhwb3J0U3RhcjpYS3QsX19jcmVhdGVCaW5kaW5nOlFLdCxfX3ZhbHVlczpMTyxfX3JlYWQ6R2ksX19zcHJlYWQ6S0t0LF9fc3ByZWFkQXJyYXlzOkpLdCxfX3NwcmVhZEFycmF5OmRhLF9fYXdhaXQ6aU4sX19hc3luY0dlbmVyYXRvcjp2WCxfX2FzeW5jRGVsZWdhdG9yOiRLdCxfX2FzeW5jVmFsdWVzOndYLF9fbWFrZVRlbXBsYXRlT2JqZWN0OnRKdCxfX2ltcG9ydFN0YXI6ZUp0LF9faW1wb3J0RGVmYXVsdDpuSnQsX19jbGFzc1ByaXZhdGVGaWVsZEdldDpvSnQsX19jbGFzc1ByaXZhdGVGaWVsZFNldDppSnQsX19jbGFzc1ByaXZhdGVGaWVsZEluOmFKdH09eVguZGVmYXVsdDtmdW5jdGlvbiBRbihuKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gSzEobil7dmFyIHQ9ZnVuY3Rpb24obyl7RXJyb3IuY2FsbChvKSxvLnN0YWNrPW5ldyBFcnJvcigpLnN0YWNrfSxlPW4odCk7cmV0dXJuIGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGV9dmFyIGFOPUsxKGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbihlKXtuKHRoaXMpLHRoaXMubWVzc2FnZT1lP2UubGVuZ3RoK2AgZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjoKYCtlLm1hcChmdW5jdGlvbihvLGkpe3JldHVybiBpKzErIikgIitvLnRvU3RyaW5nKCl9KS5qb2luKGAKICBgKToiIix0aGlzLm5hbWU9IlVuc3Vic2NyaXB0aW9uRXJyb3IiLHRoaXMuZXJyb3JzPWV9fSk7ZnVuY3Rpb24gJHgobix0KXtpZihuKXt2YXIgZT1uLmluZGV4T2YodCk7MDw9ZSYmbi5zcGxpY2UoZSwxKX19dmFyIEVvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0KXt0aGlzLmluaXRpYWxUZWFyZG93bj10LHRoaXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudGFnZT1udWxsLHRoaXMuX2ZpbmFsaXplcnM9bnVsbH1yZXR1cm4gbi5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgdCxlLG8saSxhO2lmKCF0aGlzLmNsb3NlZCl7dGhpcy5jbG9zZWQ9ITA7dmFyIHI9dGhpcy5fcGFyZW50YWdlO2lmKHIpaWYodGhpcy5fcGFyZW50YWdlPW51bGwsQXJyYXkuaXNBcnJheShyKSl0cnl7Zm9yKHZhciBzPUxPKHIpLGw9cy5uZXh0KCk7IWwuZG9uZTtsPXMubmV4dCgpKXt2YXIgYz1sLnZhbHVlO2MucmVtb3ZlKHRoaXMpfX1jYXRjaChNKXt0PXtlcnJvcjpNfX1maW5hbGx5e3RyeXtsJiYhbC5kb25lJiYoZT1zLnJldHVybikmJmUuY2FsbChzKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcn19ZWxzZSByLnJlbW92ZSh0aGlzKTt2YXIgbT10aGlzLmluaXRpYWxUZWFyZG93bjtpZihRbihtKSl0cnl7bSgpfWNhdGNoKE0pe2E9TSBpbnN0YW5jZW9mIGFOP00uZXJyb3JzOltNXX12YXIgZj10aGlzLl9maW5hbGl6ZXJzO2lmKGYpe3RoaXMuX2ZpbmFsaXplcnM9bnVsbDt0cnl7Zm9yKHZhciBwPUxPKGYpLGc9cC5uZXh0KCk7IWcuZG9uZTtnPXAubmV4dCgpKXt2YXIgXz1nLnZhbHVlO3RyeXtTWChfKX1jYXRjaChNKXthPWEhPW51bGw/YTpbXSxNIGluc3RhbmNlb2YgYU4/YT1kYShkYShbXSxHaShhKSksR2koTS5lcnJvcnMpKTphLnB1c2goTSl9fX1jYXRjaChNKXtvPXtlcnJvcjpNfX1maW5hbGx5e3RyeXtnJiYhZy5kb25lJiYoaT1wLnJldHVybikmJmkuY2FsbChwKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19fWlmKGEpdGhyb3cgbmV3IGFOKGEpfX0sbi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3ZhciBlO2lmKHQmJnQhPT10aGlzKWlmKHRoaXMuY2xvc2VkKVNYKHQpO2Vsc2V7aWYodCBpbnN0YW5jZW9mIG4pe2lmKHQuY2xvc2VkfHx0Ll9oYXNQYXJlbnQodGhpcykpcmV0dXJuO3QuX2FkZFBhcmVudCh0aGlzKX0odGhpcy5fZmluYWxpemVycz0oZT10aGlzLl9maW5hbGl6ZXJzKSE9PW51bGwmJmUhPT12b2lkIDA/ZTpbXSkucHVzaCh0KX19LG4ucHJvdG90eXBlLl9oYXNQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyZW50YWdlO3JldHVybiBlPT09dHx8QXJyYXkuaXNBcnJheShlKSYmZS5pbmNsdWRlcyh0KX0sbi5wcm90b3R5cGUuX2FkZFBhcmVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9wYXJlbnRhZ2U7dGhpcy5fcGFyZW50YWdlPUFycmF5LmlzQXJyYXkoZSk/KGUucHVzaCh0KSxlKTplP1tlLHRdOnR9LG4ucHJvdG90eXBlLl9yZW1vdmVQYXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyZW50YWdlO2U9PT10P3RoaXMuX3BhcmVudGFnZT1udWxsOkFycmF5LmlzQXJyYXkoZSkmJiR4KGUsdCl9LG4ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9maW5hbGl6ZXJzO2UmJiR4KGUsdCksdCBpbnN0YW5jZW9mIG4mJnQuX3JlbW92ZVBhcmVudCh0aGlzKX0sbi5FTVBUWT1mdW5jdGlvbigpe3ZhciB0PW5ldyBuO3JldHVybiB0LmNsb3NlZD0hMCx0fSgpLG59KCk7dmFyIHk3PUVvLkVNUFRZO2Z1bmN0aW9uIHJOKG4pe3JldHVybiBuIGluc3RhbmNlb2YgRW98fG4mJiJjbG9zZWQiaW4gbiYmUW4obi5yZW1vdmUpJiZRbihuLmFkZCkmJlFuKG4udW5zdWJzY3JpYmUpfWZ1bmN0aW9uIFNYKG4pe1FuKG4pP24oKTpuLnVuc3Vic2NyaWJlKCl9dmFyIEhDPXtvblVuaGFuZGxlZEVycm9yOm51bGwsb25TdG9wcGVkTm90aWZpY2F0aW9uOm51bGwsUHJvbWlzZTp2b2lkIDAsdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzohMSx1c2VEZXByZWNhdGVkTmV4dENvbnRleHQ6ITF9O3ZhciBKMT17c2V0VGltZW91dDpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1bXSxvPTI7bzxhcmd1bWVudHMubGVuZ3RoO28rKyllW28tMl09YXJndW1lbnRzW29dO3ZhciBpPUoxLmRlbGVnYXRlO3JldHVybiBpIT1udWxsJiZpLnNldFRpbWVvdXQ/aS5zZXRUaW1lb3V0LmFwcGx5KGksZGEoW24sdF0sR2koZSkpKTpzZXRUaW1lb3V0LmFwcGx5KHZvaWQgMCxkYShbbix0XSxHaShlKSkpfSxjbGVhclRpbWVvdXQ6ZnVuY3Rpb24obil7dmFyIHQ9SjEuZGVsZWdhdGU7cmV0dXJuKCh0PT1udWxsP3ZvaWQgMDp0LmNsZWFyVGltZW91dCl8fGNsZWFyVGltZW91dCkobil9LGRlbGVnYXRlOnZvaWQgMH07ZnVuY3Rpb24gc04obil7SjEuc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0PUhDLm9uVW5oYW5kbGVkRXJyb3I7aWYodCl0KG4pO2Vsc2UgdGhyb3cgbn0pfWZ1bmN0aW9uIEZDKCl7fXZhciBSWD1mdW5jdGlvbigpe3JldHVybiB4NygiQyIsdm9pZCAwLHZvaWQgMCl9KCk7ZnVuY3Rpb24gRVgobil7cmV0dXJuIHg3KCJFIix2b2lkIDAsbil9ZnVuY3Rpb24ga1gobil7cmV0dXJuIHg3KCJOIixuLHZvaWQgMCl9ZnVuY3Rpb24geDcobix0LGUpe3JldHVybntraW5kOm4sdmFsdWU6dCxlcnJvcjplfX12YXIgdHY9bnVsbDtmdW5jdGlvbiAkMShuKXtpZihIQy51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXt2YXIgdD0hdHY7aWYodCYmKHR2PXtlcnJvclRocm93bjohMSxlcnJvcjpudWxsfSksbigpLHQpe3ZhciBlPXR2LG89ZS5lcnJvclRocm93bixpPWUuZXJyb3I7aWYodHY9bnVsbCxvKXRocm93IGl9fWVsc2UgbigpfWZ1bmN0aW9uIE5YKG4pe0hDLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJnR2JiYodHYuZXJyb3JUaHJvd249ITAsdHYuZXJyb3I9bil9dmFyIEdTPWZ1bmN0aW9uKG4pe1lpKHQsbik7ZnVuY3Rpb24gdChlKXt2YXIgbz1uLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uaXNTdG9wcGVkPSExLGU/KG8uZGVzdGluYXRpb249ZSxyTihlKSYmZS5hZGQobykpOm8uZGVzdGluYXRpb249Tl90LG99cmV0dXJuIHQuY3JlYXRlPWZ1bmN0aW9uKGUsbyxpKXtyZXR1cm4gbmV3IHR3KGUsbyxpKX0sdC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt0aGlzLmlzU3RvcHBlZD93NyhrWChlKSx0aGlzKTp0aGlzLl9uZXh0KGUpfSx0LnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihlKXt0aGlzLmlzU3RvcHBlZD93NyhFWChlKSx0aGlzKToodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fZXJyb3IoZSkpfSx0LnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMuaXNTdG9wcGVkP3c3KFJYLHRoaXMpOih0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9jb21wbGV0ZSgpKX0sdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmNsb3NlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLG4ucHJvdG90eXBlLnVuc3Vic2NyaWJlLmNhbGwodGhpcyksdGhpcy5kZXN0aW5hdGlvbj1udWxsKX0sdC5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24oZSl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSx0LnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24oZSl7dHJ5e3RoaXMuZGVzdGluYXRpb24uZXJyb3IoZSl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fSx0LnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0cnl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX0sdH0oRW8pO3ZhciBSX3Q9RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ7ZnVuY3Rpb24gdjcobix0KXtyZXR1cm4gUl90LmNhbGwobix0KX12YXIgRV90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0KXt0aGlzLnBhcnRpYWxPYnNlcnZlcj10fXJldHVybiBuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucGFydGlhbE9ic2VydmVyO2lmKGUubmV4dCl0cnl7ZS5uZXh0KHQpfWNhdGNoKG8pe2xOKG8pfX0sbi5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wYXJ0aWFsT2JzZXJ2ZXI7aWYoZS5lcnJvcil0cnl7ZS5lcnJvcih0KX1jYXRjaChvKXtsTihvKX1lbHNlIGxOKHQpfSxuLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMucGFydGlhbE9ic2VydmVyO2lmKHQuY29tcGxldGUpdHJ5e3QuY29tcGxldGUoKX1jYXRjaChlKXtsTihlKX19LG59KCksdHc9ZnVuY3Rpb24obil7WWkodCxuKTtmdW5jdGlvbiB0KGUsbyxpKXt2YXIgYT1uLmNhbGwodGhpcyl8fHRoaXMscjtpZihRbihlKXx8IWUpcj17bmV4dDplIT1udWxsP2U6dm9pZCAwLGVycm9yOm8hPW51bGw/bzp2b2lkIDAsY29tcGxldGU6aSE9bnVsbD9pOnZvaWQgMH07ZWxzZXt2YXIgczthJiZIQy51c2VEZXByZWNhdGVkTmV4dENvbnRleHQ/KHM9T2JqZWN0LmNyZWF0ZShlKSxzLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7cmV0dXJuIGEudW5zdWJzY3JpYmUoKX0scj17bmV4dDplLm5leHQmJnY3KGUubmV4dCxzKSxlcnJvcjplLmVycm9yJiZ2NyhlLmVycm9yLHMpLGNvbXBsZXRlOmUuY29tcGxldGUmJnY3KGUuY29tcGxldGUscyl9KTpyPWV9cmV0dXJuIGEuZGVzdGluYXRpb249bmV3IEVfdChyKSxhfXJldHVybiB0fShHUyk7ZnVuY3Rpb24gbE4obil7SEMudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZz9OWChuKTpzTihuKX1mdW5jdGlvbiBrX3Qobil7dGhyb3cgbn1mdW5jdGlvbiB3NyhuLHQpe3ZhciBlPUhDLm9uU3RvcHBlZE5vdGlmaWNhdGlvbjtlJiZKMS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUobix0KX0pfXZhciBOX3Q9e2Nsb3NlZDohMCxuZXh0OkZDLGVycm9yOmtfdCxjb21wbGV0ZTpGQ307dmFyIGV3PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJlN5bWJvbC5vYnNlcnZhYmxlfHwiQEBvYnNlcnZhYmxlIn0oKTtmdW5jdGlvbiBMbChuKXtyZXR1cm4gbn1mdW5jdGlvbiBTNygpe2Zvcih2YXIgbj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyluW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gUjcobil9ZnVuY3Rpb24gUjcobil7cmV0dXJuIG4ubGVuZ3RoPT09MD9MbDpuLmxlbmd0aD09PTE/blswXTpmdW5jdGlvbihlKXtyZXR1cm4gbi5yZWR1Y2UoZnVuY3Rpb24obyxpKXtyZXR1cm4gaShvKX0sZSl9fXZhciBEbj1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCl7dCYmKHRoaXMuX3N1YnNjcmliZT10KX1yZXR1cm4gbi5wcm90b3R5cGUubGlmdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgbjtyZXR1cm4gZS5zb3VyY2U9dGhpcyxlLm9wZXJhdG9yPXQsZX0sbi5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKHQsZSxvKXt2YXIgaT10aGlzLGE9QV90KHQpP3Q6bmV3IHR3KHQsZSxvKTtyZXR1cm4gJDEoZnVuY3Rpb24oKXt2YXIgcj1pLHM9ci5vcGVyYXRvcixsPXIuc291cmNlO2EuYWRkKHM/cy5jYWxsKGEsbCk6bD9pLl9zdWJzY3JpYmUoYSk6aS5fdHJ5U3Vic2NyaWJlKGEpKX0pLGF9LG4ucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3JpYmUodCl9Y2F0Y2goZSl7dC5lcnJvcihlKX19LG4ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbz10aGlzO3JldHVybiBlPVRYKGUpLG5ldyBlKGZ1bmN0aW9uKGksYSl7dmFyIHI9bmV3IHR3KHtuZXh0OmZ1bmN0aW9uKHMpe3RyeXt0KHMpfWNhdGNoKGwpe2EobCksci51bnN1YnNjcmliZSgpfX0sZXJyb3I6YSxjb21wbGV0ZTppfSk7by5zdWJzY3JpYmUocil9KX0sbi5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4oZT10aGlzLnNvdXJjZSk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLnN1YnNjcmliZSh0KX0sbi5wcm90b3R5cGVbZXddPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG4ucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIFI3KHQpKHRoaXMpfSxuLnByb3RvdHlwZS50b1Byb21pc2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gdD1UWCh0KSxuZXcgdChmdW5jdGlvbihvLGkpe3ZhciBhO2Uuc3Vic2NyaWJlKGZ1bmN0aW9uKHIpe3JldHVybiBhPXJ9LGZ1bmN0aW9uKHIpe3JldHVybiBpKHIpfSxmdW5jdGlvbigpe3JldHVybiBvKGEpfSl9KX0sbi5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBuKHQpfSxufSgpO2Z1bmN0aW9uIFRYKG4pe3ZhciB0O3JldHVybih0PW4hPW51bGw/bjpIQy5Qcm9taXNlKSE9PW51bGwmJnQhPT12b2lkIDA/dDpQcm9taXNlfWZ1bmN0aW9uIFRfdChuKXtyZXR1cm4gbiYmUW4obi5uZXh0KSYmUW4obi5lcnJvcikmJlFuKG4uY29tcGxldGUpfWZ1bmN0aW9uIEFfdChuKXtyZXR1cm4gbiYmbiBpbnN0YW5jZW9mIEdTfHxUX3QobikmJnJOKG4pfWZ1bmN0aW9uIERfdChuKXtyZXR1cm4gUW4obj09bnVsbD92b2lkIDA6bi5saWZ0KX1mdW5jdGlvbiBTbihuKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoRF90KHQpKXJldHVybiB0LmxpZnQoZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBuKGUsdGhpcyl9Y2F0Y2gobyl7dGhpcy5lcnJvcihvKX19KTt0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmFibGUgdG8gbGlmdCB1bmtub3duIE9ic2VydmFibGUgdHlwZSIpfX1mdW5jdGlvbiBibihuLHQsZSxvLGkpe3JldHVybiBuZXcgRTcobix0LGUsbyxpKX12YXIgRTc9ZnVuY3Rpb24obil7WWkodCxuKTtmdW5jdGlvbiB0KGUsbyxpLGEscixzKXt2YXIgbD1uLmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gbC5vbkZpbmFsaXplPXIsbC5zaG91bGRVbnN1YnNjcmliZT1zLGwuX25leHQ9bz9mdW5jdGlvbihjKXt0cnl7byhjKX1jYXRjaChtKXtlLmVycm9yKG0pfX06bi5wcm90b3R5cGUuX25leHQsbC5fZXJyb3I9YT9mdW5jdGlvbihjKXt0cnl7YShjKX1jYXRjaChtKXtlLmVycm9yKG0pfWZpbmFsbHl7dGhpcy51bnN1YnNjcmliZSgpfX06bi5wcm90b3R5cGUuX2Vycm9yLGwuX2NvbXBsZXRlPWk/ZnVuY3Rpb24oKXt0cnl7aSgpfWNhdGNoKGMpe2UuZXJyb3IoYyl9ZmluYWxseXt0aGlzLnVuc3Vic2NyaWJlKCl9fTpuLnByb3RvdHlwZS5fY29tcGxldGUsbH1yZXR1cm4gdC5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt2YXIgZTtpZighdGhpcy5zaG91bGRVbnN1YnNjcmliZXx8dGhpcy5zaG91bGRVbnN1YnNjcmliZSgpKXt2YXIgbz10aGlzLmNsb3NlZDtuLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpLCFvJiYoKGU9dGhpcy5vbkZpbmFsaXplKT09PW51bGx8fGU9PT12b2lkIDB8fGUuY2FsbCh0aGlzKSl9fSx0fShHUyk7dmFyIG53PXtzY2hlZHVsZTpmdW5jdGlvbihuKXt2YXIgdD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsZT1jYW5jZWxBbmltYXRpb25GcmFtZSxvPW53LmRlbGVnYXRlO28mJih0PW8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lLGU9by5jYW5jZWxBbmltYXRpb25GcmFtZSk7dmFyIGk9dChmdW5jdGlvbihhKXtlPXZvaWQgMCxuKGEpfSk7cmV0dXJuIG5ldyBFbyhmdW5jdGlvbigpe3JldHVybiBlPT1udWxsP3ZvaWQgMDplKGkpfSl9LHJlcXVlc3RBbmltYXRpb25GcmFtZTpmdW5jdGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyluW3RdPWFyZ3VtZW50c1t0XTt2YXIgZT1udy5kZWxlZ2F0ZTtyZXR1cm4oKGU9PW51bGw/dm9pZCAwOmUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKXx8cmVxdWVzdEFuaW1hdGlvbkZyYW1lKS5hcHBseSh2b2lkIDAsZGEoW10sR2kobikpKX0sY2FuY2VsQW5pbWF0aW9uRnJhbWU6ZnVuY3Rpb24oKXtmb3IodmFyIG49W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspblt0XT1hcmd1bWVudHNbdF07dmFyIGU9bncuZGVsZWdhdGU7cmV0dXJuKChlPT1udWxsP3ZvaWQgMDplLmNhbmNlbEFuaW1hdGlvbkZyYW1lKXx8Y2FuY2VsQW5pbWF0aW9uRnJhbWUpLmFwcGx5KHZvaWQgMCxkYShbXSxHaShuKSkpfSxkZWxlZ2F0ZTp2b2lkIDB9O3ZhciBBWD1LMShmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtuKHRoaXMpLHRoaXMubmFtZT0iT2JqZWN0VW5zdWJzY3JpYmVkRXJyb3IiLHRoaXMubWVzc2FnZT0ib2JqZWN0IHVuc3Vic2NyaWJlZCJ9fSk7dmFyIEp0PWZ1bmN0aW9uKG4pe1lpKHQsbik7ZnVuY3Rpb24gdCgpe3ZhciBlPW4uY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5jbG9zZWQ9ITEsZS5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsZS5vYnNlcnZlcnM9W10sZS5pc1N0b3BwZWQ9ITEsZS5oYXNFcnJvcj0hMSxlLnRocm93bkVycm9yPW51bGwsZX1yZXR1cm4gdC5wcm90b3R5cGUubGlmdD1mdW5jdGlvbihlKXt2YXIgbz1uZXcgRFgodGhpcyx0aGlzKTtyZXR1cm4gby5vcGVyYXRvcj1lLG99LHQucHJvdG90eXBlLl90aHJvd0lmQ2xvc2VkPWZ1bmN0aW9uKCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IEFYfSx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKGUpe3ZhciBvPXRoaXM7JDEoZnVuY3Rpb24oKXt2YXIgaSxhO2lmKG8uX3Rocm93SWZDbG9zZWQoKSwhby5pc1N0b3BwZWQpe28uY3VycmVudE9ic2VydmVyc3x8KG8uY3VycmVudE9ic2VydmVycz1BcnJheS5mcm9tKG8ub2JzZXJ2ZXJzKSk7dHJ5e2Zvcih2YXIgcj1MTyhvLmN1cnJlbnRPYnNlcnZlcnMpLHM9ci5uZXh0KCk7IXMuZG9uZTtzPXIubmV4dCgpKXt2YXIgbD1zLnZhbHVlO2wubmV4dChlKX19Y2F0Y2goYyl7aT17ZXJyb3I6Y319ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKGE9ci5yZXR1cm4pJiZhLmNhbGwocil9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fX19KX0sdC5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oZSl7dmFyIG89dGhpczskMShmdW5jdGlvbigpe2lmKG8uX3Rocm93SWZDbG9zZWQoKSwhby5pc1N0b3BwZWQpe28uaGFzRXJyb3I9by5pc1N0b3BwZWQ9ITAsby50aHJvd25FcnJvcj1lO2Zvcih2YXIgaT1vLm9ic2VydmVycztpLmxlbmd0aDspaS5zaGlmdCgpLmVycm9yKGUpfX0pfSx0LnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7JDEoZnVuY3Rpb24oKXtpZihlLl90aHJvd0lmQ2xvc2VkKCksIWUuaXNTdG9wcGVkKXtlLmlzU3RvcHBlZD0hMDtmb3IodmFyIG89ZS5vYnNlcnZlcnM7by5sZW5ndGg7KW8uc2hpZnQoKS5jb21wbGV0ZSgpfX0pfSx0LnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuaXNTdG9wcGVkPXRoaXMuY2xvc2VkPSEwLHRoaXMub2JzZXJ2ZXJzPXRoaXMuY3VycmVudE9ic2VydmVycz1udWxsfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsIm9ic2VydmVkIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuKChlPXRoaXMub2JzZXJ2ZXJzKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUubGVuZ3RoKT4wfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3Rocm93SWZDbG9zZWQoKSxuLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcyxlKX0sdC5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoZSksdGhpcy5faW5uZXJTdWJzY3JpYmUoZSl9LHQucHJvdG90eXBlLl9pbm5lclN1YnNjcmliZT1mdW5jdGlvbihlKXt2YXIgbz10aGlzLGk9dGhpcyxhPWkuaGFzRXJyb3Iscj1pLmlzU3RvcHBlZCxzPWkub2JzZXJ2ZXJzO3JldHVybiBhfHxyP3k3Oih0aGlzLmN1cnJlbnRPYnNlcnZlcnM9bnVsbCxzLnB1c2goZSksbmV3IEVvKGZ1bmN0aW9uKCl7by5jdXJyZW50T2JzZXJ2ZXJzPW51bGwsJHgocyxlKX0pKX0sdC5wcm90b3R5cGUuX2NoZWNrRmluYWxpemVkU3RhdHVzZXM9ZnVuY3Rpb24oZSl7dmFyIG89dGhpcyxpPW8uaGFzRXJyb3IsYT1vLnRocm93bkVycm9yLHI9by5pc1N0b3BwZWQ7aT9lLmVycm9yKGEpOnImJmUuY29tcGxldGUoKX0sdC5wcm90b3R5cGUuYXNPYnNlcnZhYmxlPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IERuO3JldHVybiBlLnNvdXJjZT10aGlzLGV9LHQuY3JlYXRlPWZ1bmN0aW9uKGUsbyl7cmV0dXJuIG5ldyBEWChlLG8pfSx0fShEbik7dmFyIERYPWZ1bmN0aW9uKG4pe1lpKHQsbik7ZnVuY3Rpb24gdChlLG8pe3ZhciBpPW4uY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5kZXN0aW5hdGlvbj1lLGkuc291cmNlPW8saX1yZXR1cm4gdC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt2YXIgbyxpOyhpPShvPXRoaXMuZGVzdGluYXRpb24pPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5uZXh0KT09PW51bGx8fGk9PT12b2lkIDB8fGkuY2FsbChvLGUpfSx0LnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihlKXt2YXIgbyxpOyhpPShvPXRoaXMuZGVzdGluYXRpb24pPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5lcnJvcik9PT1udWxsfHxpPT09dm9pZCAwfHxpLmNhbGwobyxlKX0sdC5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgZSxvOyhvPShlPXRoaXMuZGVzdGluYXRpb24pPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5jb21wbGV0ZSk9PT1udWxsfHxvPT09dm9pZCAwfHxvLmNhbGwoZSl9LHQucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dmFyIG8saTtyZXR1cm4oaT0obz10aGlzLnNvdXJjZSk9PT1udWxsfHxvPT09dm9pZCAwP3ZvaWQgMDpvLnN1YnNjcmliZShlKSkhPT1udWxsJiZpIT09dm9pZCAwP2k6eTd9LHR9KEp0KTt2YXIgR2E9ZnVuY3Rpb24obil7WWkodCxuKTtmdW5jdGlvbiB0KGUpe3ZhciBvPW4uY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gby5fdmFsdWU9ZSxvfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInZhbHVlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWUoKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe3ZhciBvPW4ucHJvdG90eXBlLl9zdWJzY3JpYmUuY2FsbCh0aGlzLGUpO3JldHVybiFvLmNsb3NlZCYmZS5uZXh0KHRoaXMuX3ZhbHVlKSxvfSx0LnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbz1lLmhhc0Vycm9yLGk9ZS50aHJvd25FcnJvcixhPWUuX3ZhbHVlO2lmKG8pdGhyb3cgaTtyZXR1cm4gdGhpcy5fdGhyb3dJZkNsb3NlZCgpLGF9LHQucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oZSl7bi5wcm90b3R5cGUubmV4dC5jYWxsKHRoaXMsdGhpcy5fdmFsdWU9ZSl9LHR9KEp0KTt2YXIgV1M9e25vdzpmdW5jdGlvbigpe3JldHVybihXUy5kZWxlZ2F0ZXx8RGF0ZSkubm93KCl9LGRlbGVnYXRlOnZvaWQgMH07dmFyIHFTPWZ1bmN0aW9uKG4pe1lpKHQsbik7ZnVuY3Rpb24gdChlLG8saSl7ZT09PXZvaWQgMCYmKGU9MS8wKSxvPT09dm9pZCAwJiYobz0xLzApLGk9PT12b2lkIDAmJihpPVdTKTt2YXIgYT1uLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGEuX2J1ZmZlclNpemU9ZSxhLl93aW5kb3dUaW1lPW8sYS5fdGltZXN0YW1wUHJvdmlkZXI9aSxhLl9idWZmZXI9W10sYS5faW5maW5pdGVUaW1lV2luZG93PSEwLGEuX2luZmluaXRlVGltZVdpbmRvdz1vPT09MS8wLGEuX2J1ZmZlclNpemU9TWF0aC5tYXgoMSxlKSxhLl93aW5kb3dUaW1lPU1hdGgubWF4KDEsbyksYX1yZXR1cm4gdC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt2YXIgbz10aGlzLGk9by5pc1N0b3BwZWQsYT1vLl9idWZmZXIscj1vLl9pbmZpbml0ZVRpbWVXaW5kb3cscz1vLl90aW1lc3RhbXBQcm92aWRlcixsPW8uX3dpbmRvd1RpbWU7aXx8KGEucHVzaChlKSwhciYmYS5wdXNoKHMubm93KCkrbCkpLHRoaXMuX3RyaW1CdWZmZXIoKSxuLnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyxlKX0sdC5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLl90aHJvd0lmQ2xvc2VkKCksdGhpcy5fdHJpbUJ1ZmZlcigpO2Zvcih2YXIgbz10aGlzLl9pbm5lclN1YnNjcmliZShlKSxpPXRoaXMsYT1pLl9pbmZpbml0ZVRpbWVXaW5kb3cscj1pLl9idWZmZXIscz1yLnNsaWNlKCksbD0wO2w8cy5sZW5ndGgmJiFlLmNsb3NlZDtsKz1hPzE6MillLm5leHQoc1tsXSk7cmV0dXJuIHRoaXMuX2NoZWNrRmluYWxpemVkU3RhdHVzZXMoZSksb30sdC5wcm90b3R5cGUuX3RyaW1CdWZmZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG89ZS5fYnVmZmVyU2l6ZSxpPWUuX3RpbWVzdGFtcFByb3ZpZGVyLGE9ZS5fYnVmZmVyLHI9ZS5faW5maW5pdGVUaW1lV2luZG93LHM9KHI/MToyKSpvO2lmKG88MS8wJiZzPGEubGVuZ3RoJiZhLnNwbGljZSgwLGEubGVuZ3RoLXMpLCFyKXtmb3IodmFyIGw9aS5ub3coKSxjPTAsbT0xO208YS5sZW5ndGgmJmFbbV08PWw7bSs9MiljPW07YyYmYS5zcGxpY2UoMCxjKzEpfX0sdH0oSnQpO3ZhciBJWD1mdW5jdGlvbihuKXtZaSh0LG4pO2Z1bmN0aW9uIHQoZSxvKXtyZXR1cm4gbi5jYWxsKHRoaXMpfHx0aGlzfXJldHVybiB0LnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbihlLG8pe3JldHVybiBvPT09dm9pZCAwJiYobz0wKSx0aGlzfSx0fShFbyk7dmFyIFpTPXtzZXRJbnRlcnZhbDpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1bXSxvPTI7bzxhcmd1bWVudHMubGVuZ3RoO28rKyllW28tMl09YXJndW1lbnRzW29dO3ZhciBpPVpTLmRlbGVnYXRlO3JldHVybiBpIT1udWxsJiZpLnNldEludGVydmFsP2kuc2V0SW50ZXJ2YWwuYXBwbHkoaSxkYShbbix0XSxHaShlKSkpOnNldEludGVydmFsLmFwcGx5KHZvaWQgMCxkYShbbix0XSxHaShlKSkpfSxjbGVhckludGVydmFsOmZ1bmN0aW9uKG4pe3ZhciB0PVpTLmRlbGVnYXRlO3JldHVybigodD09bnVsbD92b2lkIDA6dC5jbGVhckludGVydmFsKXx8Y2xlYXJJbnRlcnZhbCkobil9LGRlbGVnYXRlOnZvaWQgMH07dmFyIG55PWZ1bmN0aW9uKG4pe1lpKHQsbik7ZnVuY3Rpb24gdChlLG8pe3ZhciBpPW4uY2FsbCh0aGlzLGUsbyl8fHRoaXM7cmV0dXJuIGkuc2NoZWR1bGVyPWUsaS53b3JrPW8saS5wZW5kaW5nPSExLGl9cmV0dXJuIHQucHJvdG90eXBlLnNjaGVkdWxlPWZ1bmN0aW9uKGUsbyl7aWYobz09PXZvaWQgMCYmKG89MCksdGhpcy5jbG9zZWQpcmV0dXJuIHRoaXM7dGhpcy5zdGF0ZT1lO3ZhciBpPXRoaXMuaWQsYT10aGlzLnNjaGVkdWxlcjtyZXR1cm4gaSE9bnVsbCYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChhLGksbykpLHRoaXMucGVuZGluZz0hMCx0aGlzLmRlbGF5PW8sdGhpcy5pZD10aGlzLmlkfHx0aGlzLnJlcXVlc3RBc3luY0lkKGEsdGhpcy5pZCxvKSx0aGlzfSx0LnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbihlLG8saSl7cmV0dXJuIGk9PT12b2lkIDAmJihpPTApLFpTLnNldEludGVydmFsKGUuZmx1c2guYmluZChlLHRoaXMpLGkpfSx0LnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG8saSl7aWYoaT09PXZvaWQgMCYmKGk9MCksaSE9bnVsbCYmdGhpcy5kZWxheT09PWkmJnRoaXMucGVuZGluZz09PSExKXJldHVybiBvO1pTLmNsZWFySW50ZXJ2YWwobyl9LHQucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oZSxvKXtpZih0aGlzLmNsb3NlZClyZXR1cm4gbmV3IEVycm9yKCJleGVjdXRpbmcgYSBjYW5jZWxsZWQgYWN0aW9uIik7dGhpcy5wZW5kaW5nPSExO3ZhciBpPXRoaXMuX2V4ZWN1dGUoZSxvKTtpZihpKXJldHVybiBpO3RoaXMucGVuZGluZz09PSExJiZ0aGlzLmlkIT1udWxsJiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKHRoaXMuc2NoZWR1bGVyLHRoaXMuaWQsbnVsbCkpfSx0LnByb3RvdHlwZS5fZXhlY3V0ZT1mdW5jdGlvbihlLG8pe3ZhciBpPSExLGE7dHJ5e3RoaXMud29yayhlKX1jYXRjaChyKXtpPSEwLGE9cnx8bmV3IEVycm9yKCJTY2hlZHVsZWQgYWN0aW9uIHRocmV3IGZhbHN5IGVycm9yIil9aWYoaSlyZXR1cm4gdGhpcy51bnN1YnNjcmliZSgpLGF9LHQucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuY2xvc2VkKXt2YXIgZT10aGlzLG89ZS5pZCxpPWUuc2NoZWR1bGVyLGE9aS5hY3Rpb25zO3RoaXMud29yaz10aGlzLnN0YXRlPXRoaXMuc2NoZWR1bGVyPW51bGwsdGhpcy5wZW5kaW5nPSExLCR4KGEsdGhpcyksbyE9bnVsbCYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChpLG8sbnVsbCkpLHRoaXMuZGVsYXk9bnVsbCxuLnByb3RvdHlwZS51bnN1YnNjcmliZS5jYWxsKHRoaXMpfX0sdH0oSVgpO3ZhciBJX3Q9MSxrNyxONz17fTtmdW5jdGlvbiB6WChuKXtyZXR1cm4gbiBpbiBONz8oZGVsZXRlIE43W25dLCEwKTohMX12YXIgVDc9e3NldEltbWVkaWF0ZTpmdW5jdGlvbihuKXt2YXIgdD1JX3QrKztyZXR1cm4gTjdbdF09ITAsazd8fChrNz1Qcm9taXNlLnJlc29sdmUoKSksazcudGhlbihmdW5jdGlvbigpe3JldHVybiB6WCh0KSYmbigpfSksdH0sY2xlYXJJbW1lZGlhdGU6ZnVuY3Rpb24obil7elgobil9fTt2YXIgel90PVQ3LnNldEltbWVkaWF0ZSxIX3Q9VDcuY2xlYXJJbW1lZGlhdGUsWFM9e3NldEltbWVkaWF0ZTpmdW5jdGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyluW3RdPWFyZ3VtZW50c1t0XTt2YXIgZT1YUy5kZWxlZ2F0ZTtyZXR1cm4oKGU9PW51bGw/dm9pZCAwOmUuc2V0SW1tZWRpYXRlKXx8el90KS5hcHBseSh2b2lkIDAsZGEoW10sR2kobikpKX0sY2xlYXJJbW1lZGlhdGU6ZnVuY3Rpb24obil7dmFyIHQ9WFMuZGVsZWdhdGU7cmV0dXJuKCh0PT1udWxsP3ZvaWQgMDp0LmNsZWFySW1tZWRpYXRlKXx8SF90KShuKX0sZGVsZWdhdGU6dm9pZCAwfTt2YXIgSFg9ZnVuY3Rpb24obil7WWkodCxuKTtmdW5jdGlvbiB0KGUsbyl7dmFyIGk9bi5jYWxsKHRoaXMsZSxvKXx8dGhpcztyZXR1cm4gaS5zY2hlZHVsZXI9ZSxpLndvcms9byxpfXJldHVybiB0LnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZD1mdW5jdGlvbihlLG8saSl7cmV0dXJuIGk9PT12b2lkIDAmJihpPTApLGkhPT1udWxsJiZpPjA/bi5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQuY2FsbCh0aGlzLGUsbyxpKTooZS5hY3Rpb25zLnB1c2godGhpcyksZS5fc2NoZWR1bGVkfHwoZS5fc2NoZWR1bGVkPVhTLnNldEltbWVkaWF0ZShlLmZsdXNoLmJpbmQoZSx2b2lkIDApKSkpfSx0LnByb3RvdHlwZS5yZWN5Y2xlQXN5bmNJZD1mdW5jdGlvbihlLG8saSl7aWYoaT09PXZvaWQgMCYmKGk9MCksaSE9bnVsbCYmaT4wfHxpPT1udWxsJiZ0aGlzLmRlbGF5PjApcmV0dXJuIG4ucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkLmNhbGwodGhpcyxlLG8saSk7ZS5hY3Rpb25zLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWQ9PT1vfSl8fChYUy5jbGVhckltbWVkaWF0ZShvKSxlLl9zY2hlZHVsZWQ9dm9pZCAwKX0sdH0obnkpO3ZhciBBNz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxlKXtlPT09dm9pZCAwJiYoZT1uLm5vdyksdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yPXQsdGhpcy5ub3c9ZX1yZXR1cm4gbi5wcm90b3R5cGUuc2NoZWR1bGU9ZnVuY3Rpb24odCxlLG8pe3JldHVybiBlPT09dm9pZCAwJiYoZT0wKSxuZXcgdGhpcy5zY2hlZHVsZXJBY3Rpb25DdG9yKHRoaXMsdCkuc2NoZWR1bGUobyxlKX0sbi5ub3c9V1Mubm93LG59KCk7dmFyIG95PWZ1bmN0aW9uKG4pe1lpKHQsbik7ZnVuY3Rpb24gdChlLG8pe289PT12b2lkIDAmJihvPUE3Lm5vdyk7dmFyIGk9bi5jYWxsKHRoaXMsZSxvKXx8dGhpcztyZXR1cm4gaS5hY3Rpb25zPVtdLGkuX2FjdGl2ZT0hMSxpLl9zY2hlZHVsZWQ9dm9pZCAwLGl9cmV0dXJuIHQucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKGUpe3ZhciBvPXRoaXMuYWN0aW9ucztpZih0aGlzLl9hY3RpdmUpe28ucHVzaChlKTtyZXR1cm59dmFyIGk7dGhpcy5fYWN0aXZlPSEwO2RvIGlmKGk9ZS5leGVjdXRlKGUuc3RhdGUsZS5kZWxheSkpYnJlYWs7d2hpbGUoZT1vLnNoaWZ0KCkpO2lmKHRoaXMuX2FjdGl2ZT0hMSxpKXtmb3IoO2U9by5zaGlmdCgpOyllLnVuc3Vic2NyaWJlKCk7dGhyb3cgaX19LHR9KEE3KTt2YXIgRlg9ZnVuY3Rpb24obil7WWkodCxuKTtmdW5jdGlvbiB0KCl7cmV0dXJuIG4hPT1udWxsJiZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gdC5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oZSl7dGhpcy5fYWN0aXZlPSEwO3ZhciBvPXRoaXMuX3NjaGVkdWxlZDt0aGlzLl9zY2hlZHVsZWQ9dm9pZCAwO3ZhciBpPXRoaXMuYWN0aW9ucyxhO2U9ZXx8aS5zaGlmdCgpO2RvIGlmKGE9ZS5leGVjdXRlKGUuc3RhdGUsZS5kZWxheSkpYnJlYWs7d2hpbGUoKGU9aVswXSkmJmUuaWQ9PT1vJiZpLnNoaWZ0KCkpO2lmKHRoaXMuX2FjdGl2ZT0hMSxhKXtmb3IoOyhlPWlbMF0pJiZlLmlkPT09byYmaS5zaGlmdCgpOyllLnVuc3Vic2NyaWJlKCk7dGhyb3cgYX19LHR9KG95KTt2YXIgb3c9bmV3IEZYKEhYKTt2YXIgQk89bmV3IG95KG55KSxMWD1CTzt2YXIgQlg9ZnVuY3Rpb24obil7WWkodCxuKTtmdW5jdGlvbiB0KGUsbyl7dmFyIGk9bi5jYWxsKHRoaXMsZSxvKXx8dGhpcztyZXR1cm4gaS5zY2hlZHVsZXI9ZSxpLndvcms9byxpfXJldHVybiB0LnByb3RvdHlwZS5zY2hlZHVsZT1mdW5jdGlvbihlLG8pe3JldHVybiBvPT09dm9pZCAwJiYobz0wKSxvPjA/bi5wcm90b3R5cGUuc2NoZWR1bGUuY2FsbCh0aGlzLGUsbyk6KHRoaXMuZGVsYXk9byx0aGlzLnN0YXRlPWUsdGhpcy5zY2hlZHVsZXIuZmx1c2godGhpcyksdGhpcyl9LHQucHJvdG90eXBlLmV4ZWN1dGU9ZnVuY3Rpb24oZSxvKXtyZXR1cm4gbz4wfHx0aGlzLmNsb3NlZD9uLnByb3RvdHlwZS5leGVjdXRlLmNhbGwodGhpcyxlLG8pOnRoaXMuX2V4ZWN1dGUoZSxvKX0sdC5wcm90b3R5cGUucmVxdWVzdEFzeW5jSWQ9ZnVuY3Rpb24oZSxvLGkpe3JldHVybiBpPT09dm9pZCAwJiYoaT0wKSxpIT1udWxsJiZpPjB8fGk9PW51bGwmJnRoaXMuZGVsYXk+MD9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZC5jYWxsKHRoaXMsZSxvLGkpOmUuZmx1c2godGhpcyl9LHR9KG55KTt2YXIgVlg9ZnVuY3Rpb24obil7WWkodCxuKTtmdW5jdGlvbiB0KCl7cmV0dXJuIG4hPT1udWxsJiZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gdH0ob3kpO3ZhciBENz1uZXcgVlgoQlgpO3ZhciBqWD1mdW5jdGlvbihuKXtZaSh0LG4pO2Z1bmN0aW9uIHQoZSxvKXt2YXIgaT1uLmNhbGwodGhpcyxlLG8pfHx0aGlzO3JldHVybiBpLnNjaGVkdWxlcj1lLGkud29yaz1vLGl9cmV0dXJuIHQucHJvdG90eXBlLnJlcXVlc3RBc3luY0lkPWZ1bmN0aW9uKGUsbyxpKXtyZXR1cm4gaT09PXZvaWQgMCYmKGk9MCksaSE9PW51bGwmJmk+MD9uLnByb3RvdHlwZS5yZXF1ZXN0QXN5bmNJZC5jYWxsKHRoaXMsZSxvLGkpOihlLmFjdGlvbnMucHVzaCh0aGlzKSxlLl9zY2hlZHVsZWR8fChlLl9zY2hlZHVsZWQ9bncucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmx1c2godm9pZCAwKX0pKSl9LHQucHJvdG90eXBlLnJlY3ljbGVBc3luY0lkPWZ1bmN0aW9uKGUsbyxpKXtpZihpPT09dm9pZCAwJiYoaT0wKSxpIT1udWxsJiZpPjB8fGk9PW51bGwmJnRoaXMuZGVsYXk+MClyZXR1cm4gbi5wcm90b3R5cGUucmVjeWNsZUFzeW5jSWQuY2FsbCh0aGlzLGUsbyxpKTtlLmFjdGlvbnMuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gYS5pZD09PW99KXx8KG53LmNhbmNlbEFuaW1hdGlvbkZyYW1lKG8pLGUuX3NjaGVkdWxlZD12b2lkIDApfSx0fShueSk7dmFyIFVYPWZ1bmN0aW9uKG4pe1lpKHQsbik7ZnVuY3Rpb24gdCgpe3JldHVybiBuIT09bnVsbCYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIHQucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKGUpe3RoaXMuX2FjdGl2ZT0hMDt2YXIgbz10aGlzLl9zY2hlZHVsZWQ7dGhpcy5fc2NoZWR1bGVkPXZvaWQgMDt2YXIgaT10aGlzLmFjdGlvbnMsYTtlPWV8fGkuc2hpZnQoKTtkbyBpZihhPWUuZXhlY3V0ZShlLnN0YXRlLGUuZGVsYXkpKWJyZWFrO3doaWxlKChlPWlbMF0pJiZlLmlkPT09byYmaS5zaGlmdCgpKTtpZih0aGlzLl9hY3RpdmU9ITEsYSl7Zm9yKDsoZT1pWzBdKSYmZS5pZD09PW8mJmkuc2hpZnQoKTspZS51bnN1YnNjcmliZSgpO3Rocm93IGF9fSx0fShveSk7dmFyIEk3PW5ldyBVWChqWCk7dmFyIE5zPW5ldyBEbihmdW5jdGlvbihuKXtyZXR1cm4gbi5jb21wbGV0ZSgpfSk7ZnVuY3Rpb24gY04obil7cmV0dXJuIG4mJlFuKG4uc2NoZWR1bGUpfWZ1bmN0aW9uIHo3KG4pe3JldHVybiBuW24ubGVuZ3RoLTFdfWZ1bmN0aW9uIHViKG4pe3JldHVybiBRbih6NyhuKSk/bi5wb3AoKTp2b2lkIDB9ZnVuY3Rpb24gaGIobil7cmV0dXJuIGNOKHo3KG4pKT9uLnBvcCgpOnZvaWQgMH1mdW5jdGlvbiBZWChuLHQpe3JldHVybiB0eXBlb2Ygejcobik9PSJudW1iZXIiP24ucG9wKCk6dH12YXIgaXc9ZnVuY3Rpb24obil7cmV0dXJuIG4mJnR5cGVvZiBuLmxlbmd0aD09Im51bWJlciImJnR5cGVvZiBuIT0iZnVuY3Rpb24ifTtmdW5jdGlvbiBtTihuKXtyZXR1cm4gUW4obj09bnVsbD92b2lkIDA6bi50aGVuKX1mdW5jdGlvbiBmTihuKXtyZXR1cm4gUW4obltld10pfWZ1bmN0aW9uIHBOKG4pe3JldHVybiBTeW1ib2wuYXN5bmNJdGVyYXRvciYmUW4obj09bnVsbD92b2lkIDA6bltTeW1ib2wuYXN5bmNJdGVyYXRvcl0pfWZ1bmN0aW9uIGROKG4pe3JldHVybiBuZXcgVHlwZUVycm9yKCJZb3UgcHJvdmlkZWQgIisobiE9PW51bGwmJnR5cGVvZiBuPT0ib2JqZWN0Ij8iYW4gaW52YWxpZCBvYmplY3QiOiInIituKyInIikrIiB3aGVyZSBhIHN0cmVhbSB3YXMgZXhwZWN0ZWQuIFlvdSBjYW4gcHJvdmlkZSBhbiBPYnNlcnZhYmxlLCBQcm9taXNlLCBSZWFkYWJsZVN0cmVhbSwgQXJyYXksIEFzeW5jSXRlcmFibGUsIG9yIEl0ZXJhYmxlLiIpfWZ1bmN0aW9uIEZfdCgpe3JldHVybiB0eXBlb2YgU3ltYm9sIT0iZnVuY3Rpb24ifHwhU3ltYm9sLml0ZXJhdG9yPyJAQGl0ZXJhdG9yIjpTeW1ib2wuaXRlcmF0b3J9dmFyIGdOPUZfdCgpO2Z1bmN0aW9uIHVOKG4pe3JldHVybiBRbihuPT1udWxsP3ZvaWQgMDpuW2dOXSl9ZnVuY3Rpb24gaE4obil7cmV0dXJuIHZYKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKCl7dmFyIGUsbyxpLGE7cmV0dXJuIG9OKHRoaXMsZnVuY3Rpb24ocil7c3dpdGNoKHIubGFiZWwpe2Nhc2UgMDplPW4uZ2V0UmVhZGVyKCksci5sYWJlbD0xO2Nhc2UgMTpyLnRyeXMucHVzaChbMSwsOSwxMF0pLHIubGFiZWw9MjtjYXNlIDI6cmV0dXJuWzQsaU4oZS5yZWFkKCkpXTtjYXNlIDM6cmV0dXJuIG89ci5zZW50KCksaT1vLnZhbHVlLGE9by5kb25lLGE/WzQsaU4odm9pZCAwKV06WzMsNV07Y2FzZSA0OnJldHVyblsyLHIuc2VudCgpXTtjYXNlIDU6cmV0dXJuWzQsaU4oaSldO2Nhc2UgNjpyZXR1cm5bNCxyLnNlbnQoKV07Y2FzZSA3OnJldHVybiByLnNlbnQoKSxbMywyXTtjYXNlIDg6cmV0dXJuWzMsMTBdO2Nhc2UgOTpyZXR1cm4gZS5yZWxlYXNlTG9jaygpLFs3XTtjYXNlIDEwOnJldHVyblsyXX19KX0pfWZ1bmN0aW9uIF9OKG4pe3JldHVybiBRbihuPT1udWxsP3ZvaWQgMDpuLmdldFJlYWRlcil9ZnVuY3Rpb24gJG8obil7aWYobiBpbnN0YW5jZW9mIERuKXJldHVybiBuO2lmKG4hPW51bGwpe2lmKGZOKG4pKXJldHVybiBMX3Qobik7aWYoaXcobikpcmV0dXJuIEJfdChuKTtpZihtTihuKSlyZXR1cm4gVl90KG4pO2lmKHBOKG4pKXJldHVybiBHWChuKTtpZih1TihuKSlyZXR1cm4gal90KG4pO2lmKF9OKG4pKXJldHVybiBVX3Qobil9dGhyb3cgZE4obil9ZnVuY3Rpb24gTF90KG4pe3JldHVybiBuZXcgRG4oZnVuY3Rpb24odCl7dmFyIGU9bltld10oKTtpZihRbihlLnN1YnNjcmliZSkpcmV0dXJuIGUuc3Vic2NyaWJlKHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlIil9KX1mdW5jdGlvbiBCX3Qobil7cmV0dXJuIG5ldyBEbihmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPG4ubGVuZ3RoJiYhdC5jbG9zZWQ7ZSsrKXQubmV4dChuW2VdKTt0LmNvbXBsZXRlKCl9KX1mdW5jdGlvbiBWX3Qobil7cmV0dXJuIG5ldyBEbihmdW5jdGlvbih0KXtuLnRoZW4oZnVuY3Rpb24oZSl7dC5jbG9zZWR8fCh0Lm5leHQoZSksdC5jb21wbGV0ZSgpKX0sZnVuY3Rpb24oZSl7cmV0dXJuIHQuZXJyb3IoZSl9KS50aGVuKG51bGwsc04pfSl9ZnVuY3Rpb24gal90KG4pe3JldHVybiBuZXcgRG4oZnVuY3Rpb24odCl7dmFyIGUsbzt0cnl7Zm9yKHZhciBpPUxPKG4pLGE9aS5uZXh0KCk7IWEuZG9uZTthPWkubmV4dCgpKXt2YXIgcj1hLnZhbHVlO2lmKHQubmV4dChyKSx0LmNsb3NlZClyZXR1cm59fWNhdGNoKHMpe2U9e2Vycm9yOnN9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihvPWkucmV0dXJuKSYmby5jYWxsKGkpfWZpbmFsbHl7aWYoZSl0aHJvdyBlLmVycm9yfX10LmNvbXBsZXRlKCl9KX1mdW5jdGlvbiBHWChuKXtyZXR1cm4gbmV3IERuKGZ1bmN0aW9uKHQpe1lfdChuLHQpLmNhdGNoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmVycm9yKGUpfSl9KX1mdW5jdGlvbiBVX3Qobil7cmV0dXJuIEdYKGhOKG4pKX1mdW5jdGlvbiBZX3Qobix0KXt2YXIgZSxvLGksYTtyZXR1cm4gekModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7dmFyIHIscztyZXR1cm4gb04odGhpcyxmdW5jdGlvbihsKXtzd2l0Y2gobC5sYWJlbCl7Y2FzZSAwOmwudHJ5cy5wdXNoKFswLDUsNiwxMV0pLGU9d1gobiksbC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm5bNCxlLm5leHQoKV07Y2FzZSAyOmlmKG89bC5zZW50KCksISFvLmRvbmUpcmV0dXJuWzMsNF07aWYocj1vLnZhbHVlLHQubmV4dChyKSx0LmNsb3NlZClyZXR1cm5bMl07bC5sYWJlbD0zO2Nhc2UgMzpyZXR1cm5bMywxXTtjYXNlIDQ6cmV0dXJuWzMsMTFdO2Nhc2UgNTpyZXR1cm4gcz1sLnNlbnQoKSxpPXtlcnJvcjpzfSxbMywxMV07Y2FzZSA2OnJldHVybiBsLnRyeXMucHVzaChbNiwsOSwxMF0pLG8mJiFvLmRvbmUmJihhPWUucmV0dXJuKT9bNCxhLmNhbGwoZSldOlszLDhdO2Nhc2UgNzpsLnNlbnQoKSxsLmxhYmVsPTg7Y2FzZSA4OnJldHVyblszLDEwXTtjYXNlIDk6aWYoaSl0aHJvdyBpLmVycm9yO3JldHVybls3XTtjYXNlIDEwOnJldHVybls3XTtjYXNlIDExOnJldHVybiB0LmNvbXBsZXRlKCksWzJdfX0pfSl9ZnVuY3Rpb24gTGYobix0LGUsbyxpKXtvPT09dm9pZCAwJiYobz0wKSxpPT09dm9pZCAwJiYoaT0hMSk7dmFyIGE9dC5zY2hlZHVsZShmdW5jdGlvbigpe2UoKSxpP24uYWRkKHRoaXMuc2NoZWR1bGUobnVsbCxvKSk6dGhpcy51bnN1YnNjcmliZSgpfSxvKTtpZihuLmFkZChhKSwhaSlyZXR1cm4gYX1mdW5jdGlvbiBldihuLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD0wKSxTbihmdW5jdGlvbihlLG8pe2Uuc3Vic2NyaWJlKGJuKG8sZnVuY3Rpb24oaSl7cmV0dXJuIExmKG8sbixmdW5jdGlvbigpe3JldHVybiBvLm5leHQoaSl9LHQpfSxmdW5jdGlvbigpe3JldHVybiBMZihvLG4sZnVuY3Rpb24oKXtyZXR1cm4gby5jb21wbGV0ZSgpfSx0KX0sZnVuY3Rpb24oaSl7cmV0dXJuIExmKG8sbixmdW5jdGlvbigpe3JldHVybiBvLmVycm9yKGkpfSx0KX0pKX0pfWZ1bmN0aW9uIENOKG4sdCl7cmV0dXJuIHQ9PT12b2lkIDAmJih0PTApLFNuKGZ1bmN0aW9uKGUsbyl7by5hZGQobi5zY2hlZHVsZShmdW5jdGlvbigpe3JldHVybiBlLnN1YnNjcmliZShvKX0sdCkpfSl9ZnVuY3Rpb24gV1gobix0KXtyZXR1cm4gJG8obikucGlwZShDTih0KSxldih0KSl9ZnVuY3Rpb24gcVgobix0KXtyZXR1cm4gJG8obikucGlwZShDTih0KSxldih0KSl9ZnVuY3Rpb24gWlgobix0KXtyZXR1cm4gbmV3IERuKGZ1bmN0aW9uKGUpe3ZhciBvPTA7cmV0dXJuIHQuc2NoZWR1bGUoZnVuY3Rpb24oKXtvPT09bi5sZW5ndGg/ZS5jb21wbGV0ZSgpOihlLm5leHQobltvKytdKSxlLmNsb3NlZHx8dGhpcy5zY2hlZHVsZSgpKX0pfSl9ZnVuY3Rpb24gWFgobix0KXtyZXR1cm4gbmV3IERuKGZ1bmN0aW9uKGUpe3ZhciBvO3JldHVybiBMZihlLHQsZnVuY3Rpb24oKXtvPW5bZ05dKCksTGYoZSx0LGZ1bmN0aW9uKCl7dmFyIGksYSxyO3RyeXtpPW8ubmV4dCgpLGE9aS52YWx1ZSxyPWkuZG9uZX1jYXRjaChzKXtlLmVycm9yKHMpO3JldHVybn1yP2UuY29tcGxldGUoKTplLm5leHQoYSl9LDAsITApfSksZnVuY3Rpb24oKXtyZXR1cm4gUW4obz09bnVsbD92b2lkIDA6by5yZXR1cm4pJiZvLnJldHVybigpfX0pfWZ1bmN0aW9uIE1OKG4sdCl7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJJdGVyYWJsZSBjYW5ub3QgYmUgbnVsbCIpO3JldHVybiBuZXcgRG4oZnVuY3Rpb24oZSl7TGYoZSx0LGZ1bmN0aW9uKCl7dmFyIG89bltTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTtMZihlLHQsZnVuY3Rpb24oKXtvLm5leHQoKS50aGVuKGZ1bmN0aW9uKGkpe2kuZG9uZT9lLmNvbXBsZXRlKCk6ZS5uZXh0KGkudmFsdWUpfSl9LDAsITApfSl9KX1mdW5jdGlvbiBRWChuLHQpe3JldHVybiBNTihoTihuKSx0KX1mdW5jdGlvbiBLWChuLHQpe2lmKG4hPW51bGwpe2lmKGZOKG4pKXJldHVybiBXWChuLHQpO2lmKGl3KG4pKXJldHVybiBaWChuLHQpO2lmKG1OKG4pKXJldHVybiBxWChuLHQpO2lmKHBOKG4pKXJldHVybiBNTihuLHQpO2lmKHVOKG4pKXJldHVybiBYWChuLHQpO2lmKF9OKG4pKXJldHVybiBRWChuLHQpfXRocm93IGROKG4pfWZ1bmN0aW9uIERhKG4sdCl7cmV0dXJuIHQ/S1gobix0KTokbyhuKX1mdW5jdGlvbiBkbigpe2Zvcih2YXIgbj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyluW3RdPWFyZ3VtZW50c1t0XTt2YXIgZT1oYihuKTtyZXR1cm4gRGEobixlKX1mdW5jdGlvbiBMQyhuLHQpe3ZhciBlPVFuKG4pP246ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbz1mdW5jdGlvbihpKXtyZXR1cm4gaS5lcnJvcihlKCkpfTtyZXR1cm4gbmV3IERuKHQ/ZnVuY3Rpb24oaSl7cmV0dXJuIHQuc2NoZWR1bGUobywwLGkpfTpvKX12YXIgSlg7KGZ1bmN0aW9uKG4pe24uTkVYVD0iTiIsbi5FUlJPUj0iRSIsbi5DT01QTEVURT0iQyJ9KShKWHx8KEpYPXt9KSk7dmFyIFFTPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0LGUsbyl7dGhpcy5raW5kPXQsdGhpcy52YWx1ZT1lLHRoaXMuZXJyb3I9byx0aGlzLmhhc1ZhbHVlPXQ9PT0iTiJ9cmV0dXJuIG4ucHJvdG90eXBlLm9ic2VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIEg3KHRoaXMsdCl9LG4ucHJvdG90eXBlLmRvPWZ1bmN0aW9uKHQsZSxvKXt2YXIgaT10aGlzLGE9aS5raW5kLHI9aS52YWx1ZSxzPWkuZXJyb3I7cmV0dXJuIGE9PT0iTiI/dD09bnVsbD92b2lkIDA6dChyKTphPT09IkUiP2U9PW51bGw/dm9pZCAwOmUocyk6bz09bnVsbD92b2lkIDA6bygpfSxuLnByb3RvdHlwZS5hY2NlcHQ9ZnVuY3Rpb24odCxlLG8pe3ZhciBpO3JldHVybiBRbigoaT10KT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkubmV4dCk/dGhpcy5vYnNlcnZlKHQpOnRoaXMuZG8odCxlLG8pfSxuLnByb3RvdHlwZS50b09ic2VydmFibGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5raW5kLG89dC52YWx1ZSxpPXQuZXJyb3IsYT1lPT09Ik4iP2RuKG8pOmU9PT0iRSI/TEMoZnVuY3Rpb24oKXtyZXR1cm4gaX0pOmU9PT0iQyI/TnM6MDtpZighYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmV4cGVjdGVkIG5vdGlmaWNhdGlvbiBraW5kICIrZSk7cmV0dXJuIGF9LG4uY3JlYXRlTmV4dD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IG4oIk4iLHQpfSxuLmNyZWF0ZUVycm9yPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbigiRSIsdm9pZCAwLHQpfSxuLmNyZWF0ZUNvbXBsZXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG4uY29tcGxldGVOb3RpZmljYXRpb259LG4uY29tcGxldGVOb3RpZmljYXRpb249bmV3IG4oIkMiKSxufSgpO2Z1bmN0aW9uIEg3KG4sdCl7dmFyIGUsbyxpLGE9bixyPWEua2luZCxzPWEudmFsdWUsbD1hLmVycm9yO2lmKHR5cGVvZiByIT0ic3RyaW5nIil0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vdGlmaWNhdGlvbiwgbWlzc2luZyAia2luZCInKTtyPT09Ik4iPyhlPXQubmV4dCk9PT1udWxsfHxlPT09dm9pZCAwfHxlLmNhbGwodCxzKTpyPT09IkUiPyhvPXQuZXJyb3IpPT09bnVsbHx8bz09PXZvaWQgMHx8by5jYWxsKHQsbCk6KGk9dC5jb21wbGV0ZSk9PT1udWxsfHxpPT09dm9pZCAwfHxpLmNhbGwodCl9ZnVuY3Rpb24gbnYobil7cmV0dXJuISFuJiYobiBpbnN0YW5jZW9mIERufHxRbihuLmxpZnQpJiZRbihuLnN1YnNjcmliZSkpfXZhciBhdz1LMShmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oKXtuKHRoaXMpLHRoaXMubmFtZT0iRW1wdHlFcnJvciIsdGhpcy5tZXNzYWdlPSJubyBlbGVtZW50cyBpbiBzZXF1ZW5jZSJ9fSk7ZnVuY3Rpb24gJFgobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBEYXRlJiYhaXNOYU4obil9ZnVuY3Rpb24gRyhuLHQpe3JldHVybiBTbihmdW5jdGlvbihlLG8pe3ZhciBpPTA7ZS5zdWJzY3JpYmUoYm4obyxmdW5jdGlvbihhKXtvLm5leHQobi5jYWxsKHQsYSxpKyspKX0pKX0pfXZhciBHX3Q9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBXX3Qobix0KXtyZXR1cm4gR190KHQpP24uYXBwbHkodm9pZCAwLGRhKFtdLEdpKHQpKSk6bih0KX1mdW5jdGlvbiBpeShuKXtyZXR1cm4gRyhmdW5jdGlvbih0KXtyZXR1cm4gV190KG4sdCl9KX12YXIgcV90PUFycmF5LmlzQXJyYXksWl90PU9iamVjdC5nZXRQcm90b3R5cGVPZixYX3Q9T2JqZWN0LnByb3RvdHlwZSxRX3Q9T2JqZWN0LmtleXM7ZnVuY3Rpb24gYk4obil7aWYobi5sZW5ndGg9PT0xKXt2YXIgdD1uWzBdO2lmKHFfdCh0KSlyZXR1cm57YXJnczp0LGtleXM6bnVsbH07aWYoS190KHQpKXt2YXIgZT1RX3QodCk7cmV0dXJue2FyZ3M6ZS5tYXAoZnVuY3Rpb24obyl7cmV0dXJuIHRbb119KSxrZXlzOmV9fX1yZXR1cm57YXJnczpuLGtleXM6bnVsbH19ZnVuY3Rpb24gS190KG4pe3JldHVybiBuJiZ0eXBlb2Ygbj09Im9iamVjdCImJlpfdChuKT09PVhfdH1mdW5jdGlvbiBPTihuLHQpe3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihlLG8saSl7cmV0dXJuIGVbb109dFtpXSxlfSx7fSl9ZnVuY3Rpb24gb24oKXtmb3IodmFyIG49W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspblt0XT1hcmd1bWVudHNbdF07dmFyIGU9aGIobiksbz11YihuKSxpPWJOKG4pLGE9aS5hcmdzLHI9aS5rZXlzO2lmKGEubGVuZ3RoPT09MClyZXR1cm4gRGEoW10sZSk7dmFyIHM9bmV3IERuKEY3KGEsZSxyP2Z1bmN0aW9uKGwpe3JldHVybiBPTihyLGwpfTpMbCkpO3JldHVybiBvP3MucGlwZShpeShvKSk6c31mdW5jdGlvbiBGNyhuLHQsZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPUxsKSxmdW5jdGlvbihvKXt0USh0LGZ1bmN0aW9uKCl7Zm9yKHZhciBpPW4ubGVuZ3RoLGE9bmV3IEFycmF5KGkpLHI9aSxzPWksbD1mdW5jdGlvbihtKXt0USh0LGZ1bmN0aW9uKCl7dmFyIGY9RGEoblttXSx0KSxwPSExO2Yuc3Vic2NyaWJlKGJuKG8sZnVuY3Rpb24oZyl7YVttXT1nLHB8fChwPSEwLHMtLSksc3x8by5uZXh0KGUoYS5zbGljZSgpKSl9LGZ1bmN0aW9uKCl7LS1yfHxvLmNvbXBsZXRlKCl9KSl9LG8pfSxjPTA7YzxpO2MrKylsKGMpfSxvKX19ZnVuY3Rpb24gdFEobix0LGUpe24/TGYoZSxuLHQpOnQoKX1mdW5jdGlvbiBlUShuLHQsZSxvLGksYSxyLHMpe3ZhciBsPVtdLGM9MCxtPTAsZj0hMSxwPWZ1bmN0aW9uKCl7ZiYmIWwubGVuZ3RoJiYhYyYmdC5jb21wbGV0ZSgpfSxnPWZ1bmN0aW9uKE0pe3JldHVybiBjPG8/XyhNKTpsLnB1c2goTSl9LF89ZnVuY3Rpb24oTSl7YSYmdC5uZXh0KE0pLGMrKzt2YXIgeT0hMTskbyhlKE0sbSsrKSkuc3Vic2NyaWJlKGJuKHQsZnVuY3Rpb24oTyl7aT09bnVsbHx8aShPKSxhP2coTyk6dC5uZXh0KE8pfSxmdW5jdGlvbigpe3k9ITB9LHZvaWQgMCxmdW5jdGlvbigpe2lmKHkpdHJ5e2MtLTtmb3IodmFyIE89ZnVuY3Rpb24oKXt2YXIgYj1sLnNoaWZ0KCk7cj9MZih0LHIsZnVuY3Rpb24oKXtyZXR1cm4gXyhiKX0pOl8oYil9O2wubGVuZ3RoJiZjPG87KU8oKTtwKCl9Y2F0Y2goYil7dC5lcnJvcihiKX19KSl9O3JldHVybiBuLnN1YnNjcmliZShibih0LGcsZnVuY3Rpb24oKXtmPSEwLHAoKX0pKSxmdW5jdGlvbigpe3M9PW51bGx8fHMoKX19ZnVuY3Rpb24gVW4obix0LGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0xLzApLFFuKHQpP1VuKGZ1bmN0aW9uKG8saSl7cmV0dXJuIEcoZnVuY3Rpb24oYSxyKXtyZXR1cm4gdChvLGEsaSxyKX0pKCRvKG4obyxpKSkpfSxlKToodHlwZW9mIHQ9PSJudW1iZXIiJiYoZT10KSxTbihmdW5jdGlvbihvLGkpe3JldHVybiBlUShvLGksbixlKX0pKX1mdW5jdGlvbiBQTihuKXtyZXR1cm4gbj09PXZvaWQgMCYmKG49MS8wKSxVbihMbCxuKX1mdW5jdGlvbiBuUSgpe3JldHVybiBQTigxKX1mdW5jdGlvbiBheSgpe2Zvcih2YXIgbj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyluW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gblEoKShEYShuLGhiKG4pKSl9ZnVuY3Rpb24gQkMobil7cmV0dXJuIG5ldyBEbihmdW5jdGlvbih0KXskbyhuKCkpLnN1YnNjcmliZSh0KX0pfWZ1bmN0aW9uIGdhKCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO3ZhciBlPXViKG4pLG89Yk4obiksaT1vLmFyZ3MsYT1vLmtleXMscj1uZXcgRG4oZnVuY3Rpb24ocyl7dmFyIGw9aS5sZW5ndGg7aWYoIWwpe3MuY29tcGxldGUoKTtyZXR1cm59Zm9yKHZhciBjPW5ldyBBcnJheShsKSxtPWwsZj1sLHA9ZnVuY3Rpb24oXyl7dmFyIE09ITE7JG8oaVtfXSkuc3Vic2NyaWJlKGJuKHMsZnVuY3Rpb24oeSl7TXx8KE09ITAsZi0tKSxjW19dPXl9LGZ1bmN0aW9uKCl7cmV0dXJuIG0tLX0sdm9pZCAwLGZ1bmN0aW9uKCl7KCFtfHwhTSkmJihmfHxzLm5leHQoYT9PTihhLGMpOmMpLHMuY29tcGxldGUoKSl9KSl9LGc9MDtnPGw7ZysrKXAoZyl9KTtyZXR1cm4gZT9yLnBpcGUoaXkoZSkpOnJ9dmFyIEpfdD1bImFkZExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiXSwkX3Q9WyJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLHQwdD1bIm9uIiwib2ZmIl07ZnVuY3Rpb24gam8obix0LGUsbyl7aWYoUW4oZSkmJihvPWUsZT12b2lkIDApLG8pcmV0dXJuIGpvKG4sdCxlKS5waXBlKGl5KG8pKTt2YXIgaT1HaShvMHQobik/JF90Lm1hcChmdW5jdGlvbihzKXtyZXR1cm4gZnVuY3Rpb24obCl7cmV0dXJuIG5bc10odCxsLGUpfX0pOmUwdChuKT9KX3QubWFwKG9RKG4sdCkpOm4wdChuKT90MHQubWFwKG9RKG4sdCkpOltdLDIpLGE9aVswXSxyPWlbMV07aWYoIWEmJml3KG4pKXJldHVybiBVbihmdW5jdGlvbihzKXtyZXR1cm4gam8ocyx0LGUpfSkoJG8obikpO2lmKCFhKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgZXZlbnQgdGFyZ2V0Iik7cmV0dXJuIG5ldyBEbihmdW5jdGlvbihzKXt2YXIgbD1mdW5jdGlvbigpe2Zvcih2YXIgYz1bXSxtPTA7bTxhcmd1bWVudHMubGVuZ3RoO20rKyljW21dPWFyZ3VtZW50c1ttXTtyZXR1cm4gcy5uZXh0KDE8Yy5sZW5ndGg/YzpjWzBdKX07cmV0dXJuIGEobCksZnVuY3Rpb24oKXtyZXR1cm4gcihsKX19KX1mdW5jdGlvbiBvUShuLHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIG5bZV0odCxvKX19fWZ1bmN0aW9uIGUwdChuKXtyZXR1cm4gUW4obi5hZGRMaXN0ZW5lcikmJlFuKG4ucmVtb3ZlTGlzdGVuZXIpfWZ1bmN0aW9uIG4wdChuKXtyZXR1cm4gUW4obi5vbikmJlFuKG4ub2ZmKX1mdW5jdGlvbiBvMHQobil7cmV0dXJuIFFuKG4uYWRkRXZlbnRMaXN0ZW5lcikmJlFuKG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcil9ZnVuY3Rpb24gdWcobix0LGUpe249PT12b2lkIDAmJihuPTApLGU9PT12b2lkIDAmJihlPUxYKTt2YXIgbz0tMTtyZXR1cm4gdCE9bnVsbCYmKGNOKHQpP2U9dDpvPXQpLG5ldyBEbihmdW5jdGlvbihpKXt2YXIgYT0kWChuKT8rbi1lLm5vdygpOm47YTwwJiYoYT0wKTt2YXIgcj0wO3JldHVybiBlLnNjaGVkdWxlKGZ1bmN0aW9uKCl7aS5jbG9zZWR8fChpLm5leHQocisrKSwwPD1vP3RoaXMuc2NoZWR1bGUodm9pZCAwLG8pOmkuY29tcGxldGUoKSl9LGEpfSl9ZnVuY3Rpb24geW4oKXtmb3IodmFyIG49W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspblt0XT1hcmd1bWVudHNbdF07dmFyIGU9aGIobiksbz1ZWChuLDEvMCksaT1uO3JldHVybiBpLmxlbmd0aD9pLmxlbmd0aD09PTE/JG8oaVswXSk6UE4obykoRGEoaSxlKSk6TnN9dmFyIGkwdD1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIHlOKG4pe3JldHVybiBuLmxlbmd0aD09PTEmJmkwdChuWzBdKT9uWzBdOm59ZnVuY3Rpb24gdWUobix0KXtyZXR1cm4gU24oZnVuY3Rpb24oZSxvKXt2YXIgaT0wO2Uuc3Vic2NyaWJlKGJuKG8sZnVuY3Rpb24oYSl7cmV0dXJuIG4uY2FsbCh0LGEsaSsrKSYmby5uZXh0KGEpfSkpfSl9ZnVuY3Rpb24gTDcoKXtmb3IodmFyIG49W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspblt0XT1hcmd1bWVudHNbdF07dmFyIGU9dWIobiksbz15TihuKTtyZXR1cm4gby5sZW5ndGg/bmV3IERuKGZ1bmN0aW9uKGkpe3ZhciBhPW8ubWFwKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxyPW8ubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITF9KTtpLmFkZChmdW5jdGlvbigpe2E9cj1udWxsfSk7Zm9yKHZhciBzPWZ1bmN0aW9uKGMpeyRvKG9bY10pLnN1YnNjcmliZShibihpLGZ1bmN0aW9uKG0pe2lmKGFbY10ucHVzaChtKSxhLmV2ZXJ5KGZ1bmN0aW9uKHApe3JldHVybiBwLmxlbmd0aH0pKXt2YXIgZj1hLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcC5zaGlmdCgpfSk7aS5uZXh0KGU/ZS5hcHBseSh2b2lkIDAsZGEoW10sR2koZikpKTpmKSxhLnNvbWUoZnVuY3Rpb24ocCxnKXtyZXR1cm4hcC5sZW5ndGgmJnJbZ119KSYmaS5jb21wbGV0ZSgpfX0sZnVuY3Rpb24oKXtyW2NdPSEwLCFhW2NdLmxlbmd0aCYmaS5jb21wbGV0ZSgpfSkpfSxsPTA7IWkuY2xvc2VkJiZsPG8ubGVuZ3RoO2wrKylzKGwpO3JldHVybiBmdW5jdGlvbigpe2E9cj1udWxsfX0pOk5zfWZ1bmN0aW9uIGlRKG4pe3JldHVybiBTbihmdW5jdGlvbih0LGUpe3ZhciBvPSExLGk9bnVsbCxhPW51bGwscj0hMSxzPWZ1bmN0aW9uKCl7aWYoYT09bnVsbHx8YS51bnN1YnNjcmliZSgpLGE9bnVsbCxvKXtvPSExO3ZhciBjPWk7aT1udWxsLGUubmV4dChjKX1yJiZlLmNvbXBsZXRlKCl9LGw9ZnVuY3Rpb24oKXthPW51bGwsciYmZS5jb21wbGV0ZSgpfTt0LnN1YnNjcmliZShibihlLGZ1bmN0aW9uKGMpe289ITAsaT1jLGF8fCRvKG4oYykpLnN1YnNjcmliZShhPWJuKGUscyxsKSl9LGZ1bmN0aW9uKCl7cj0hMCwoIW98fCFhfHxhLmNsb3NlZCkmJmUuY29tcGxldGUoKX0pKX0pfWZ1bmN0aW9uIG5fKG4sdCl7cmV0dXJuIHQ9PT12b2lkIDAmJih0PUJPKSxpUShmdW5jdGlvbigpe3JldHVybiB1ZyhuLHQpfSl9ZnVuY3Rpb24gQjcobil7cmV0dXJuIFNuKGZ1bmN0aW9uKHQsZSl7dmFyIG89W107cmV0dXJuIHQuc3Vic2NyaWJlKGJuKGUsZnVuY3Rpb24oaSl7cmV0dXJuIG8ucHVzaChpKX0sZnVuY3Rpb24oKXtlLm5leHQobyksZS5jb21wbGV0ZSgpfSkpLG4uc3Vic2NyaWJlKGJuKGUsZnVuY3Rpb24oKXt2YXIgaT1vO289W10sZS5uZXh0KGkpfSxGQykpLGZ1bmN0aW9uKCl7bz1udWxsfX0pfWZ1bmN0aW9uIG5zKG4pe3JldHVybiBTbihmdW5jdGlvbih0LGUpe3ZhciBvPW51bGwsaT0hMSxhO289dC5zdWJzY3JpYmUoYm4oZSx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKHIpe2E9JG8obihyLG5zKG4pKHQpKSksbz8oby51bnN1YnNjcmliZSgpLG89bnVsbCxhLnN1YnNjcmliZShlKSk6aT0hMH0pKSxpJiYoby51bnN1YnNjcmliZSgpLG89bnVsbCxhLnN1YnNjcmliZShlKSl9KX1mdW5jdGlvbiBhUShuLHQsZSxvLGkpe3JldHVybiBmdW5jdGlvbihhLHIpe3ZhciBzPWUsbD10LGM9MDthLnN1YnNjcmliZShibihyLGZ1bmN0aW9uKG0pe3ZhciBmPWMrKztsPXM/bihsLG0sZik6KHM9ITAsbSksbyYmci5uZXh0KGwpfSxpJiZmdW5jdGlvbigpe3MmJnIubmV4dChsKSxyLmNvbXBsZXRlKCl9KSl9fWZ1bmN0aW9uIFY3KCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO3ZhciBlPXViKG4pO3JldHVybiBlP1M3KFY3LmFwcGx5KHZvaWQgMCxkYShbXSxHaShuKSkpLGl5KGUpKTpTbihmdW5jdGlvbihvLGkpe0Y3KGRhKFtvXSxHaSh5TihuKSkpKShpKX0pfWZ1bmN0aW9uIFBhKCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO3JldHVybiBWNy5hcHBseSh2b2lkIDAsZGEoW10sR2kobikpKX1mdW5jdGlvbiB4TihuLHQpe3JldHVybiBRbih0KT9VbihuLHQsMSk6VW4obiwxKX1mdW5jdGlvbiBscihuLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD1CTyksU24oZnVuY3Rpb24oZSxvKXt2YXIgaT1udWxsLGE9bnVsbCxyPW51bGwscz1mdW5jdGlvbigpe2lmKGkpe2kudW5zdWJzY3JpYmUoKSxpPW51bGw7dmFyIGM9YTthPW51bGwsby5uZXh0KGMpfX07ZnVuY3Rpb24gbCgpe3ZhciBjPXIrbixtPXQubm93KCk7aWYobTxjKXtpPXRoaXMuc2NoZWR1bGUodm9pZCAwLGMtbSksby5hZGQoaSk7cmV0dXJufXMoKX1lLnN1YnNjcmliZShibihvLGZ1bmN0aW9uKGMpe2E9YyxyPXQubm93KCksaXx8KGk9dC5zY2hlZHVsZShsLG4pLG8uYWRkKGkpKX0sZnVuY3Rpb24oKXtzKCksby5jb21wbGV0ZSgpfSx2b2lkIDAsZnVuY3Rpb24oKXthPWk9bnVsbH0pKX0pfWZ1bmN0aW9uIHZOKG4pe3JldHVybiBTbihmdW5jdGlvbih0LGUpe3ZhciBvPSExO3Quc3Vic2NyaWJlKGJuKGUsZnVuY3Rpb24oaSl7bz0hMCxlLm5leHQoaSl9LGZ1bmN0aW9uKCl7b3x8ZS5uZXh0KG4pLGUuY29tcGxldGUoKX0pKX0pfWZ1bmN0aW9uIENuKG4pe3JldHVybiBuPD0wP2Z1bmN0aW9uKCl7cmV0dXJuIE5zfTpTbihmdW5jdGlvbih0LGUpe3ZhciBvPTA7dC5zdWJzY3JpYmUoYm4oZSxmdW5jdGlvbihpKXsrK288PW4mJihlLm5leHQoaSksbjw9byYmZS5jb21wbGV0ZSgpKX0pKX0pfWZ1bmN0aW9uIEtTKCl7cmV0dXJuIFNuKGZ1bmN0aW9uKG4sdCl7bi5zdWJzY3JpYmUoYm4odCxGQykpfSl9ZnVuY3Rpb24gclEobil7cmV0dXJuIEcoZnVuY3Rpb24oKXtyZXR1cm4gbn0pfWZ1bmN0aW9uIHJ3KG4sdCl7cmV0dXJuIHQ/ZnVuY3Rpb24oZSl7cmV0dXJuIGF5KHQucGlwZShDbigxKSxLUygpKSxlLnBpcGUocncobikpKX06VW4oZnVuY3Rpb24oZSxvKXtyZXR1cm4gbihlLG8pLnBpcGUoQ24oMSksclEoZSkpfSl9ZnVuY3Rpb24gb18obix0KXt0PT09dm9pZCAwJiYodD1CTyk7dmFyIGU9dWcobix0KTtyZXR1cm4gcncoZnVuY3Rpb24oKXtyZXR1cm4gZX0pfWZ1bmN0aW9uIGo3KCl7cmV0dXJuIFNuKGZ1bmN0aW9uKG4sdCl7bi5zdWJzY3JpYmUoYm4odCxmdW5jdGlvbihlKXtyZXR1cm4gSDcoZSx0KX0pKX0pfWZ1bmN0aW9uIFhvKG4sdCl7cmV0dXJuIHQ9PT12b2lkIDAmJih0PUxsKSxuPW4hPW51bGw/bjphMHQsU24oZnVuY3Rpb24oZSxvKXt2YXIgaSxhPSEwO2Uuc3Vic2NyaWJlKGJuKG8sZnVuY3Rpb24ocil7dmFyIHM9dChyKTsoYXx8IW4oaSxzKSkmJihhPSExLGk9cyxvLm5leHQocikpfSkpfSl9ZnVuY3Rpb24gYTB0KG4sdCl7cmV0dXJuIG49PT10fWZ1bmN0aW9uIHdOKG4pe3JldHVybiBuPT09dm9pZCAwJiYobj1yMHQpLFNuKGZ1bmN0aW9uKHQsZSl7dmFyIG89ITE7dC5zdWJzY3JpYmUoYm4oZSxmdW5jdGlvbihpKXtvPSEwLGUubmV4dChpKX0sZnVuY3Rpb24oKXtyZXR1cm4gbz9lLmNvbXBsZXRlKCk6ZS5lcnJvcihuKCkpfSkpfSl9ZnVuY3Rpb24gcjB0KCl7cmV0dXJuIG5ldyBhd31mdW5jdGlvbiBTTihuLHQpe3JldHVybiB0P2Z1bmN0aW9uKGUpe3JldHVybiBlLnBpcGUoU04oZnVuY3Rpb24obyxpKXtyZXR1cm4gJG8obihvLGkpKS5waXBlKEcoZnVuY3Rpb24oYSxyKXtyZXR1cm4gdChvLGEsaSxyKX0pKX0pKX06U24oZnVuY3Rpb24oZSxvKXt2YXIgaT0wLGE9bnVsbCxyPSExO2Uuc3Vic2NyaWJlKGJuKG8sZnVuY3Rpb24ocyl7YXx8KGE9Ym4obyx2b2lkIDAsZnVuY3Rpb24oKXthPW51bGwsciYmby5jb21wbGV0ZSgpfSksJG8obihzLGkrKykpLnN1YnNjcmliZShhKSl9LGZ1bmN0aW9uKCl7cj0hMCwhYSYmby5jb21wbGV0ZSgpfSkpfSl9ZnVuY3Rpb24gUk4obil7cmV0dXJuIFNuKGZ1bmN0aW9uKHQsZSl7dHJ5e3Quc3Vic2NyaWJlKGUpfWZpbmFsbHl7ZS5hZGQobil9fSl9ZnVuY3Rpb24gVTcobix0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPj0yO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gby5waXBlKG4/dWUoZnVuY3Rpb24oaSxhKXtyZXR1cm4gbihpLGEsbyl9KTpMbCxDbigxKSxlP3ZOKHQpOndOKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhd30pKX19ZnVuY3Rpb24gRU4obix0LGUsbyl7cmV0dXJuIFNuKGZ1bmN0aW9uKGksYSl7dmFyIHI7IXR8fHR5cGVvZiB0PT0iZnVuY3Rpb24iP3I9dDooZT10LmR1cmF0aW9uLHI9dC5lbGVtZW50LG89dC5jb25uZWN0b3IpO3ZhciBzPW5ldyBNYXAsbD1mdW5jdGlvbihfKXtzLmZvckVhY2goXyksXyhhKX0sYz1mdW5jdGlvbihfKXtyZXR1cm4gbChmdW5jdGlvbihNKXtyZXR1cm4gTS5lcnJvcihfKX0pfSxtPTAsZj0hMSxwPW5ldyBFNyhhLGZ1bmN0aW9uKF8pe3RyeXt2YXIgTT1uKF8pLHk9cy5nZXQoTSk7aWYoIXkpe3Muc2V0KE0seT1vP28oKTpuZXcgSnQpO3ZhciBPPWcoTSx5KTtpZihhLm5leHQoTyksZSl7dmFyIGI9Ym4oeSxmdW5jdGlvbigpe3kuY29tcGxldGUoKSxiPT1udWxsfHxiLnVuc3Vic2NyaWJlKCl9LHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWxldGUoTSl9KTtwLmFkZCgkbyhlKE8pKS5zdWJzY3JpYmUoYikpfX15Lm5leHQocj9yKF8pOl8pfWNhdGNoKFIpe2MoUil9fSxmdW5jdGlvbigpe3JldHVybiBsKGZ1bmN0aW9uKF8pe3JldHVybiBfLmNvbXBsZXRlKCl9KX0sYyxmdW5jdGlvbigpe3JldHVybiBzLmNsZWFyKCl9LGZ1bmN0aW9uKCl7cmV0dXJuIGY9ITAsbT09PTB9KTtpLnN1YnNjcmliZShwKTtmdW5jdGlvbiBnKF8sTSl7dmFyIHk9bmV3IERuKGZ1bmN0aW9uKE8pe20rKzt2YXIgYj1NLnN1YnNjcmliZShPKTtyZXR1cm4gZnVuY3Rpb24oKXtiLnVuc3Vic2NyaWJlKCksLS1tPT09MCYmZiYmcC51bnN1YnNjcmliZSgpfX0pO3JldHVybiB5LmtleT1fLHl9fSl9ZnVuY3Rpb24gc1Eobil7cmV0dXJuIG48PTA/ZnVuY3Rpb24oKXtyZXR1cm4gTnN9OlNuKGZ1bmN0aW9uKHQsZSl7dmFyIG89W107dC5zdWJzY3JpYmUoYm4oZSxmdW5jdGlvbihpKXtvLnB1c2goaSksbjxvLmxlbmd0aCYmby5zaGlmdCgpfSxmdW5jdGlvbigpe3ZhciBpLGE7dHJ5e2Zvcih2YXIgcj1MTyhvKSxzPXIubmV4dCgpOyFzLmRvbmU7cz1yLm5leHQoKSl7dmFyIGw9cy52YWx1ZTtlLm5leHQobCl9fWNhdGNoKGMpe2k9e2Vycm9yOmN9fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihhPXIucmV0dXJuKSYmYS5jYWxsKHIpfWZpbmFsbHl7aWYoaSl0aHJvdyBpLmVycm9yfX1lLmNvbXBsZXRlKCl9LHZvaWQgMCxmdW5jdGlvbigpe289bnVsbH0pKX0pfWZ1bmN0aW9uIFk3KG4sdCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIG8ucGlwZShuP3VlKGZ1bmN0aW9uKGksYSl7cmV0dXJuIG4oaSxhLG8pfSk6TGwsc1EoMSksZT92Tih0KTp3TihmdW5jdGlvbigpe3JldHVybiBuZXcgYXd9KSl9fWZ1bmN0aW9uIEc3KCl7cmV0dXJuIFNuKGZ1bmN0aW9uKG4sdCl7bi5zdWJzY3JpYmUoYm4odCxmdW5jdGlvbihlKXt0Lm5leHQoUVMuY3JlYXRlTmV4dChlKSl9LGZ1bmN0aW9uKCl7dC5uZXh0KFFTLmNyZWF0ZUNvbXBsZXRlKCkpLHQuY29tcGxldGUoKX0sZnVuY3Rpb24oZSl7dC5uZXh0KFFTLmNyZWF0ZUVycm9yKGUpKSx0LmNvbXBsZXRlKCl9KSl9KX1mdW5jdGlvbiBzdygpe3JldHVybiBTbihmdW5jdGlvbihuLHQpe3ZhciBlLG89ITE7bi5zdWJzY3JpYmUoYm4odCxmdW5jdGlvbihpKXt2YXIgYT1lO2U9aSxvJiZ0Lm5leHQoW2EsaV0pLG89ITB9KSl9KX1mdW5jdGlvbiBXNygpe2Zvcih2YXIgbj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyluW3RdPWFyZ3VtZW50c1t0XTt2YXIgZT1uLmxlbmd0aDtpZihlPT09MCl0aHJvdyBuZXcgRXJyb3IoImxpc3Qgb2YgcHJvcGVydGllcyBjYW5ub3QgYmUgZW1wdHkuIik7cmV0dXJuIEcoZnVuY3Rpb24obyl7Zm9yKHZhciBpPW8sYT0wO2E8ZTthKyspe3ZhciByPWk9PW51bGw/dm9pZCAwOmlbblthXV07aWYodHlwZW9mIHIhPSJ1bmRlZmluZWQiKWk9cjtlbHNlIHJldHVybn1yZXR1cm4gaX0pfWZ1bmN0aW9uIHE3KG4pe3JldHVybiBTbihmdW5jdGlvbih0LGUpe3ZhciBvLGk9ITEsYSxyPSExLHM9ITEsbD1mdW5jdGlvbigpe3JldHVybiBzJiZyJiYoZS5jb21wbGV0ZSgpLCEwKX0sYz1mdW5jdGlvbigpe3JldHVybiBhfHwoYT1uZXcgSnQsbihhKS5zdWJzY3JpYmUoYm4oZSxmdW5jdGlvbigpe28/bSgpOmk9ITB9LGZ1bmN0aW9uKCl7cj0hMCxsKCl9KSkpLGF9LG09ZnVuY3Rpb24oKXtzPSExLG89dC5zdWJzY3JpYmUoYm4oZSx2b2lkIDAsZnVuY3Rpb24oKXtzPSEwLCFsKCkmJmMoKS5uZXh0KCl9KSksaSYmKG8udW5zdWJzY3JpYmUoKSxvPW51bGwsaT0hMSxtKCkpfTttKCl9KX1mdW5jdGlvbiBaNyhuLHQpe3JldHVybiBTbihhUShuLHQsYXJndW1lbnRzLmxlbmd0aD49MiwhMCkpfWZ1bmN0aW9uIEJjKG4pe249PT12b2lkIDAmJihuPXt9KTt2YXIgdD1uLmNvbm5lY3RvcixlPXQ9PT12b2lkIDA/ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEp0fTp0LG89bi5yZXNldE9uRXJyb3IsaT1vPT09dm9pZCAwPyEwOm8sYT1uLnJlc2V0T25Db21wbGV0ZSxyPWE9PT12b2lkIDA/ITA6YSxzPW4ucmVzZXRPblJlZkNvdW50WmVybyxsPXM9PT12b2lkIDA/ITA6cztyZXR1cm4gZnVuY3Rpb24oYyl7dmFyIG09bnVsbCxmPW51bGwscD1udWxsLGc9MCxfPSExLE09ITEseT1mdW5jdGlvbigpe2Y9PW51bGx8fGYudW5zdWJzY3JpYmUoKSxmPW51bGx9LE89ZnVuY3Rpb24oKXt5KCksbT1wPW51bGwsXz1NPSExfSxiPWZ1bmN0aW9uKCl7dmFyIFI9bTtPKCksUj09bnVsbHx8Ui51bnN1YnNjcmliZSgpfTtyZXR1cm4gU24oZnVuY3Rpb24oUixFKXtnKyssIU0mJiFfJiZ5KCk7dmFyIGo9cD1wIT1udWxsP3A6ZSgpO0UuYWRkKGZ1bmN0aW9uKCl7Zy0tLGc9PT0wJiYhTSYmIV8mJihmPVg3KGIsbCkpfSksai5zdWJzY3JpYmUoRSksbXx8KG09bmV3IHR3KHtuZXh0OmZ1bmN0aW9uKHJ0KXtyZXR1cm4gai5uZXh0KHJ0KX0sZXJyb3I6ZnVuY3Rpb24ocnQpe009ITAseSgpLGY9WDcoTyxpLHJ0KSxqLmVycm9yKHJ0KX0sY29tcGxldGU6ZnVuY3Rpb24oKXtfPSEwLHkoKSxmPVg3KE8sciksai5jb21wbGV0ZSgpfX0pLERhKFIpLnN1YnNjcmliZShtKSl9KShjKX19ZnVuY3Rpb24gWDcobix0KXtmb3IodmFyIGU9W10sbz0yO288YXJndW1lbnRzLmxlbmd0aDtvKyspZVtvLTJdPWFyZ3VtZW50c1tvXTtyZXR1cm4gdD09PSEwPyhuKCksbnVsbCk6dD09PSExP251bGw6dC5hcHBseSh2b2lkIDAsZGEoW10sR2koZSkpKS5waXBlKENuKDEpKS5zdWJzY3JpYmUoZnVuY3Rpb24oKXtyZXR1cm4gbigpfSl9ZnVuY3Rpb24gQmYobix0LGUpe3ZhciBvLGksYSxyLHM9ITE7cmV0dXJuIG4mJnR5cGVvZiBuPT0ib2JqZWN0Ij8obz1uLmJ1ZmZlclNpemUscj1vPT09dm9pZCAwPzEvMDpvLGk9bi53aW5kb3dUaW1lLHQ9aT09PXZvaWQgMD8xLzA6aSxhPW4ucmVmQ291bnQscz1hPT09dm9pZCAwPyExOmEsZT1uLnNjaGVkdWxlcik6cj1uIT1udWxsP246MS8wLEJjKHtjb25uZWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHFTKHIsdCxlKX0scmVzZXRPbkVycm9yOiEwLHJlc2V0T25Db21wbGV0ZTohMSxyZXNldE9uUmVmQ291bnRaZXJvOnN9KX1mdW5jdGlvbiBWQyhuKXtyZXR1cm4gdWUoZnVuY3Rpb24odCxlKXtyZXR1cm4gbjw9ZX0pfWZ1bmN0aW9uIFNvKCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO3ZhciBlPWhiKG4pO3JldHVybiBTbihmdW5jdGlvbihvLGkpeyhlP2F5KG4sbyxlKTpheShuLG8pKS5zdWJzY3JpYmUoaSl9KX1mdW5jdGlvbiB0aShuLHQpe3JldHVybiBTbihmdW5jdGlvbihlLG8pe3ZhciBpPW51bGwsYT0wLHI9ITEscz1mdW5jdGlvbigpe3JldHVybiByJiYhaSYmby5jb21wbGV0ZSgpfTtlLnN1YnNjcmliZShibihvLGZ1bmN0aW9uKGwpe2k9PW51bGx8fGkudW5zdWJzY3JpYmUoKTt2YXIgYz0wLG09YSsrOyRvKG4obCxtKSkuc3Vic2NyaWJlKGk9Ym4obyxmdW5jdGlvbihmKXtyZXR1cm4gby5uZXh0KHQ/dChsLGYsbSxjKyspOmYpfSxmdW5jdGlvbigpe2k9bnVsbCxzKCl9KSl9LGZ1bmN0aW9uKCl7cj0hMCxzKCl9KSl9KX1mdW5jdGlvbiBQZShuKXtyZXR1cm4gU24oZnVuY3Rpb24odCxlKXskbyhuKS5zdWJzY3JpYmUoYm4oZSxmdW5jdGlvbigpe3JldHVybiBlLmNvbXBsZXRlKCl9LEZDKSksIWUuY2xvc2VkJiZ0LnN1YnNjcmliZShlKX0pfWZ1bmN0aW9uIEpTKG4sdCl7cmV0dXJuIHQ9PT12b2lkIDAmJih0PSExKSxTbihmdW5jdGlvbihlLG8pe3ZhciBpPTA7ZS5zdWJzY3JpYmUoYm4obyxmdW5jdGlvbihhKXt2YXIgcj1uKGEsaSsrKTsocnx8dCkmJm8ubmV4dChhKSwhciYmby5jb21wbGV0ZSgpfSkpfSl9ZnVuY3Rpb24gYW4obix0LGUpe3ZhciBvPVFuKG4pfHx0fHxlP3tuZXh0Om4sZXJyb3I6dCxjb21wbGV0ZTplfTpuO3JldHVybiBvP1NuKGZ1bmN0aW9uKGksYSl7dmFyIHI7KHI9by5zdWJzY3JpYmUpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5jYWxsKG8pO3ZhciBzPSEwO2kuc3Vic2NyaWJlKGJuKGEsZnVuY3Rpb24obCl7dmFyIGM7KGM9by5uZXh0KT09PW51bGx8fGM9PT12b2lkIDB8fGMuY2FsbChvLGwpLGEubmV4dChsKX0sZnVuY3Rpb24oKXt2YXIgbDtzPSExLChsPW8uY29tcGxldGUpPT09bnVsbHx8bD09PXZvaWQgMHx8bC5jYWxsKG8pLGEuY29tcGxldGUoKX0sZnVuY3Rpb24obCl7dmFyIGM7cz0hMSwoYz1vLmVycm9yKT09PW51bGx8fGM9PT12b2lkIDB8fGMuY2FsbChvLGwpLGEuZXJyb3IobCl9LGZ1bmN0aW9uKCl7dmFyIGwsYztzJiYoKGw9by51bnN1YnNjcmliZSk9PT1udWxsfHxsPT09dm9pZCAwfHxsLmNhbGwobykpLChjPW8uZmluYWxpemUpPT09bnVsbHx8Yz09PXZvaWQgMHx8Yy5jYWxsKG8pfSkpfSk6TGx9dmFyIFE3PXtsZWFkaW5nOiEwLHRyYWlsaW5nOiExfTtmdW5jdGlvbiBsUShuLHQpe3JldHVybiB0PT09dm9pZCAwJiYodD1RNyksU24oZnVuY3Rpb24oZSxvKXt2YXIgaT10LmxlYWRpbmcsYT10LnRyYWlsaW5nLHI9ITEscz1udWxsLGw9bnVsbCxjPSExLG09ZnVuY3Rpb24oKXtsPT1udWxsfHxsLnVuc3Vic2NyaWJlKCksbD1udWxsLGEmJihnKCksYyYmby5jb21wbGV0ZSgpKX0sZj1mdW5jdGlvbigpe2w9bnVsbCxjJiZvLmNvbXBsZXRlKCl9LHA9ZnVuY3Rpb24oXyl7cmV0dXJuIGw9JG8obihfKSkuc3Vic2NyaWJlKGJuKG8sbSxmKSl9LGc9ZnVuY3Rpb24oKXtpZihyKXtyPSExO3ZhciBfPXM7cz1udWxsLG8ubmV4dChfKSwhYyYmcChfKX19O2Uuc3Vic2NyaWJlKGJuKG8sZnVuY3Rpb24oXyl7cj0hMCxzPV8sIShsJiYhbC5jbG9zZWQpJiYoaT9nKCk6cChfKSl9LGZ1bmN0aW9uKCl7Yz0hMCwhKGEmJnImJmwmJiFsLmNsb3NlZCkmJm8uY29tcGxldGUoKX0pKX0pfWZ1bmN0aW9uIGx3KG4sdCxlKXt0PT09dm9pZCAwJiYodD1CTyksZT09PXZvaWQgMCYmKGU9UTcpO3ZhciBvPXVnKG4sdCk7cmV0dXJuIGxRKGZ1bmN0aW9uKCl7cmV0dXJuIG99LGUpfWZ1bmN0aW9uIE9uKCl7Zm9yKHZhciBuPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW5bdF09YXJndW1lbnRzW3RdO3ZhciBlPXViKG4pO3JldHVybiBTbihmdW5jdGlvbihvLGkpe2Zvcih2YXIgYT1uLmxlbmd0aCxyPW5ldyBBcnJheShhKSxzPW4ubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITF9KSxsPSExLGM9ZnVuY3Rpb24oZil7JG8obltmXSkuc3Vic2NyaWJlKGJuKGksZnVuY3Rpb24ocCl7cltmXT1wLCFsJiYhc1tmXSYmKHNbZl09ITAsKGw9cy5ldmVyeShMbCkpJiYocz1udWxsKSl9LEZDKSl9LG09MDttPGE7bSsrKWMobSk7by5zdWJzY3JpYmUoYm4oaSxmdW5jdGlvbihmKXtpZihsKXt2YXIgcD1kYShbZl0sR2kocikpO2kubmV4dChlP2UuYXBwbHkodm9pZCAwLGRhKFtdLEdpKHApKSk6cCl9fSkpfSl9ZnVuY3Rpb24gRmkobil7Zm9yKGxldCB0IGluIG4paWYoblt0XT09PUZpKXJldHVybiB0O3Rocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCByZW5hbWVkIHByb3BlcnR5IG9uIHRhcmdldCBvYmplY3QuIil9ZnVuY3Rpb24gSzcobix0KXtmb3IobGV0IGUgaW4gdCl0Lmhhc093blByb3BlcnR5KGUpJiYhbi5oYXNPd25Qcm9wZXJ0eShlKSYmKG5bZV09dFtlXSl9ZnVuY3Rpb24gT28obil7aWYodHlwZW9mIG49PSJzdHJpbmciKXJldHVybiBuO2lmKEFycmF5LmlzQXJyYXkobikpcmV0dXJuIlsiK24ubWFwKE9vKS5qb2luKCIsICIpKyJdIjtpZihuPT1udWxsKXJldHVybiIiK247aWYobi5vdmVycmlkZGVuTmFtZSlyZXR1cm5gJHtuLm92ZXJyaWRkZW5OYW1lfWA7aWYobi5uYW1lKXJldHVybmAke24ubmFtZX1gO2xldCB0PW4udG9TdHJpbmcoKTtpZih0PT1udWxsKXJldHVybiIiK3Q7bGV0IGU9dC5pbmRleE9mKGAKYCk7cmV0dXJuIGU9PT0tMT90OnQuc3Vic3RyaW5nKDAsZSl9ZnVuY3Rpb24gdkwobix0KXtyZXR1cm4gbj09bnVsbHx8bj09PSIiP3Q9PT1udWxsPyIiOnQ6dD09bnVsbHx8dD09PSIiP246bisiICIrdH12YXIgbDB0PUZpKHtfX2ZvcndhcmRfcmVmX186Rml9KTtmdW5jdGlvbiB0byhuKXtyZXR1cm4gbi5fX2ZvcndhcmRfcmVmX189dG8sbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBPbyh0aGlzKCkpfSxufWZ1bmN0aW9uIFVvKG4pe3JldHVybiBPSyhuKT9uKCk6bn1mdW5jdGlvbiBPSyhuKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiImJm4uaGFzT3duUHJvcGVydHkobDB0KSYmbi5fX2ZvcndhcmRfcmVmX189PT10b312YXIgYzB0PSJodHRwczovL2FuZ3VsYXIuaW8vZXJyb3JzIjt2YXIgeWI9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHo4KHQsZSkpLHRoaXMuY29kZT10fX0sbTB0PW5ldyBTZXQoWyIxMDAiLCIyMDAiLCIyMDEiLCIzMDAiLCIzMDEiLCIzMDIiXSk7ZnVuY3Rpb24gejgobix0KXtsZXQgbz1gJHtuP2BORzAke259OiBgOiIifSR7dH1gO3JldHVybiBuZ0Rldk1vZGUmJm0wdC5oYXMobikmJihvPWAke299LiBGaW5kIG1vcmUgYXQgJHtjMHR9L05HMCR7bn1gKSxvfWZ1bmN0aW9uIFJvKG4pe3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/bjpuPT1udWxsPyIiOlN0cmluZyhuKX1mdW5jdGlvbiBWYyhuKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bi5uYW1lfHxuLnRvU3RyaW5nKCk6dHlwZW9mIG49PSJvYmplY3QiJiZuIT1udWxsJiZ0eXBlb2Ygbi50eXBlPT0iZnVuY3Rpb24iP24udHlwZS5uYW1lfHxuLnR5cGUudG9TdHJpbmcoKTpSbyhuKX1mdW5jdGlvbiB3TChuLHQpe2xldCBlPXQ/YC4gRGVwZW5kZW5jeSBwYXRoOiAke3Quam9pbigiID4gIil9ID4gJHtufWA6IiI7dGhyb3cgbmV3IHliKCIyMDAiLGBDaXJjdWxhciBkZXBlbmRlbmN5IGluIERJIGRldGVjdGVkIGZvciAke259JHtlfWApfWZ1bmN0aW9uIGNRKCl7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG11bHRpIHByb3ZpZGVycyBhbmQgcmVndWxhciBwcm92aWRlcnMiKX1mdW5jdGlvbiBmMHQobix0LGUpe2xldCBvPSIiO3Rocm93IG4mJnQmJihvPWAgLSBvbmx5IGluc3RhbmNlcyBvZiBQcm92aWRlciBhbmQgVHlwZSBhcmUgYWxsb3dlZCwgZ290OiBbJHt0Lm1hcChhPT5hPT1lPyI/IitlKyI/IjoiLi4uIikuam9pbigiLCAiKX1dYCksbmV3IEVycm9yKGBJbnZhbGlkIHByb3ZpZGVyIGZvciB0aGUgTmdNb2R1bGUgJyR7T28obil9J2Arbyl9ZnVuY3Rpb24gSDgobix0KXtsZXQgZT10P2AgaW4gJHt0fWA6IiI7dGhyb3cgbmV3IHliKCIyMDEiLGBObyBwcm92aWRlciBmb3IgJHtWYyhuKX0gZm91bmQke2V9YCl9ZnVuY3Rpb24gV2Eobix0KXt0eXBlb2YgbiE9Im51bWJlciImJmhhKHQsdHlwZW9mIG4sIm51bWJlciIsIj09PSIpfWZ1bmN0aW9uIGNSKG4sdCxlKXtXYShuLCJFeHBlY3RlZCBhIG51bWJlciIpLHlLKG4sZSwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byIpLFpPKG4sdCwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byIpfWZ1bmN0aW9uIHlSKG4sdCl7dHlwZW9mIG4hPSJzdHJpbmciJiZoYSh0LG49PT1udWxsPyJudWxsIjp0eXBlb2Ygbiwic3RyaW5nIiwiPT09Iil9ZnVuY3Rpb24gcDB0KG4sdCl7dHlwZW9mIG4hPSJmdW5jdGlvbiImJmhhKHQsbj09PW51bGw/Im51bGwiOnR5cGVvZiBuLCJmdW5jdGlvbiIsIj09PSIpfWZ1bmN0aW9uIGlvKG4sdCxlKXtuIT10JiZoYShlLG4sdCwiPT0iKX1mdW5jdGlvbiBxQyhuLHQsZSl7bj09dCYmaGEoZSxuLHQsIiE9Iil9ZnVuY3Rpb24gUEsobix0LGUpe24hPT10JiZoYShlLG4sdCwiPT09Iil9ZnVuY3Rpb24gU3cobix0LGUpe249PT10JiZoYShlLG4sdCwiIT09Iil9ZnVuY3Rpb24gaHkobix0LGUpe248dHx8aGEoZSxuLHQsIjwiKX1mdW5jdGlvbiB5SyhuLHQsZSl7bjw9dHx8aGEoZSxuLHQsIjw9Iil9ZnVuY3Rpb24gUncobix0LGUpe24+dHx8aGEoZSxuLHQsIj4iKX1mdW5jdGlvbiBaTyhuLHQsZSl7bj49dHx8aGEoZSxuLHQsIj49Iil9ZnVuY3Rpb24gdW4obix0KXtuPT1udWxsJiZoYSh0LG4sbnVsbCwiIT0iKX1mdW5jdGlvbiBoYShuLHQsZSxvKXt0aHJvdyBuZXcgRXJyb3IoYEFTU0VSVElPTiBFUlJPUjogJHtufWArKG89PW51bGw/IiI6YCBbRXhwZWN0ZWQ9PiAke2V9ICR7b30gJHt0fSA8PUFjdHVhbF1gKSl9ZnVuY3Rpb24gQ2Iobil7ISh0eXBlb2YgTm9kZSE9InVuZGVmaW5lZCImJm4gaW5zdGFuY2VvZiBOb2RlKSYmISh0eXBlb2Ygbj09Im9iamVjdCImJm4hPW51bGwmJm4uY29uc3RydWN0b3IubmFtZT09PSJXZWJXb3JrZXJSZW5kZXJOb2RlIikmJmhhKGBUaGUgcHJvdmlkZWQgdmFsdWUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIERPTSBOb2RlIGJ1dCBnb3QgJHtPbyhuKX1gKX1mdW5jdGlvbiBBcihuLHQpe3VuKG4sIkFycmF5IG11c3QgYmUgZGVmaW5lZC4iKTtsZXQgZT1uLmxlbmd0aDsodDwwfHx0Pj1lKSYmaGEoYEluZGV4IGV4cGVjdGVkIHRvIGJlIGxlc3MgdGhhbiAke2V9IGJ1dCBnb3QgJHt0fWApfWZ1bmN0aW9uIGQwdChuLC4uLnQpe2lmKHQuaW5kZXhPZihuKSE9PS0xKXJldHVybiEwO2hhKGBFeHBlY3RlZCB2YWx1ZSB0byBiZSBvbmUgb2YgJHtKU09OLnN0cmluZ2lmeSh0KX0gYnV0IHdhcyAke0pTT04uc3RyaW5naWZ5KG4pfS5gKX1mdW5jdGlvbiBQdChuKXtyZXR1cm57dG9rZW46bi50b2tlbixwcm92aWRlZEluOm4ucHJvdmlkZWRJbnx8bnVsbCxmYWN0b3J5Om4uZmFjdG9yeSx2YWx1ZTp2b2lkIDB9fWZ1bmN0aW9uIFcobil7cmV0dXJue3Byb3ZpZGVyczpuLnByb3ZpZGVyc3x8W10saW1wb3J0czpuLmltcG9ydHN8fFtdfX1mdW5jdGlvbiBGOChuKXtyZXR1cm4gbVEobixXTil8fG1RKG4seEspfWZ1bmN0aW9uIG1RKG4sdCl7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkodCk/blt0XTpudWxsfWZ1bmN0aW9uIGcwdChuKXtsZXQgdD1uJiYobltXTl18fG5beEtdKTtpZih0KXtsZXQgZT11MHQobik7cmV0dXJuIGNvbnNvbGUud2FybihgREVQUkVDQVRFRDogREkgaXMgaW5zdGFudGlhdGluZyBhIHRva2VuICIke2V9IiB0aGF0IGluaGVyaXRzIGl0cyBASW5qZWN0YWJsZSBkZWNvcmF0b3IgYnV0IGRvZXMgbm90IHByb3ZpZGUgb25lIGl0c2VsZi4KVGhpcyB3aWxsIGJlY29tZSBhbiBlcnJvciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIEFuZ3VsYXIuIFBsZWFzZSBhZGQgQEluamVjdGFibGUoKSB0byB0aGUgIiR7ZX0iIGNsYXNzLmApLHR9ZWxzZSByZXR1cm4gbnVsbH1mdW5jdGlvbiB1MHQobil7aWYobi5oYXNPd25Qcm9wZXJ0eSgibmFtZSIpKXJldHVybiBuLm5hbWU7bGV0IHQ9KCIiK24pLm1hdGNoKC9eZnVuY3Rpb25ccyooW15ccyhdKykvKTtyZXR1cm4gdD09PW51bGw/IiI6dFsxXX1mdW5jdGlvbiBmUShuKXtyZXR1cm4gbiYmKG4uaGFzT3duUHJvcGVydHkoU0wpfHxuLmhhc093blByb3BlcnR5KGgwdCkpP25bU0xdOm51bGx9dmFyIFdOPUZpKHtcdTAyNzVwcm92OkZpfSksU0w9Rmkoe1x1MDI3NWluajpGaX0pLHhLPUZpKHtuZ0luamVjdGFibGVEZWY6Rml9KSxoMHQ9Rmkoe25nSW5qZWN0b3JEZWY6Rml9KTt2YXIgTmk7KGZ1bmN0aW9uKG4pe25bbi5EZWZhdWx0PTBdPSJEZWZhdWx0IixuW24uSG9zdD0xXT0iSG9zdCIsbltuLlNlbGY9Ml09IlNlbGYiLG5bbi5Ta2lwU2VsZj00XT0iU2tpcFNlbGYiLG5bbi5PcHRpb25hbD04XT0iT3B0aW9uYWwifSkoTml8fChOaT17fSkpO3ZhciBxTjtmdW5jdGlvbiBfMHQoKXtyZXR1cm4gcU59ZnVuY3Rpb24gX3kobil7bGV0IHQ9cU47cmV0dXJuIHFOPW4sdH1mdW5jdGlvbiB2SyhuLHQsZSl7bGV0IG89Rjgobik7aWYobyYmby5wcm92aWRlZEluPT0icm9vdCIpcmV0dXJuIG8udmFsdWU9PT12b2lkIDA/by52YWx1ZT1vLmZhY3RvcnkoKTpvLnZhbHVlO2lmKGUmTmkuT3B0aW9uYWwpcmV0dXJuIG51bGw7aWYodCE9PXZvaWQgMClyZXR1cm4gdDtIOChPbyhuKSwiSW5qZWN0b3IiKX1mdW5jdGlvbiBDMHQobil7bmdEZXZNb2RlJiZxQyhxTixuLCJDYWxsaW5nIFx1MDI3NVx1MDI3NWluamVjdCB3b3VsZCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24iKX1mdW5jdGlvbiBQeShuKXtyZXR1cm57dG9TdHJpbmc6bn0udG9TdHJpbmcoKX12YXIgdHQ7KGZ1bmN0aW9uKG4pe25bbi5PblB1c2g9MF09Ik9uUHVzaCIsbltuLkRlZmF1bHQ9MV09IkRlZmF1bHQifSkodHR8fCh0dD17fSkpO3ZhciBwUTsoZnVuY3Rpb24obil7bltuLkNoZWNrT25jZT0wXT0iQ2hlY2tPbmNlIixuW24uQ2hlY2tlZD0xXT0iQ2hlY2tlZCIsbltuLkNoZWNrQWx3YXlzPTJdPSJDaGVja0Fsd2F5cyIsbltuLkRldGFjaGVkPTNdPSJEZXRhY2hlZCIsbltuLkVycm9yZWQ9NF09IkVycm9yZWQiLG5bbi5EZXN0cm95ZWQ9NV09IkRlc3Ryb3llZCJ9KShwUXx8KHBRPXt9KSk7dmFyIEplOyhmdW5jdGlvbihuKXtuW24uRW11bGF0ZWQ9MF09IkVtdWxhdGVkIixuW24uTm9uZT0yXT0iTm9uZSIsbltuLlNoYWRvd0RvbT0zXT0iU2hhZG93RG9tIn0pKEplfHwoSmU9e30pKTt2YXIgTTB0PXR5cGVvZiBnbG9iYWxUaGlzIT0idW5kZWZpbmVkIiYmZ2xvYmFsVGhpcyxiMHQ9dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJndpbmRvdyxPMHQ9dHlwZW9mIHNlbGYhPSJ1bmRlZmluZWQiJiZ0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUhPSJ1bmRlZmluZWQiJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsUDB0PXR5cGVvZiBnbG9iYWwhPSJ1bmRlZmluZWQiJiZnbG9iYWwsTWk9TTB0fHxQMHR8fGIwdHx8TzB0O2Z1bmN0aW9uIHkwdCgpe2xldCBuPXR5cGVvZiBsb2NhdGlvbiE9InVuZGVmaW5lZCI/bG9jYXRpb24udG9TdHJpbmcoKToiIix0PXtuYW1lZENvbnN0cnVjdG9yczpuLmluZGV4T2YoIm5nRGV2TW9kZT1uYW1lZENvbnN0cnVjdG9ycyIpIT0tMSxmaXJzdENyZWF0ZVBhc3M6MCx0Tm9kZTowLHRWaWV3OjAscmVuZGVyZXJDcmVhdGVUZXh0Tm9kZTowLHJlbmRlcmVyU2V0VGV4dDowLHJlbmRlcmVyQ3JlYXRlRWxlbWVudDowLHJlbmRlcmVyQWRkRXZlbnRMaXN0ZW5lcjowLHJlbmRlcmVyU2V0QXR0cmlidXRlOjAscmVuZGVyZXJSZW1vdmVBdHRyaWJ1dGU6MCxyZW5kZXJlclNldFByb3BlcnR5OjAscmVuZGVyZXJTZXRDbGFzc05hbWU6MCxyZW5kZXJlckFkZENsYXNzOjAscmVuZGVyZXJSZW1vdmVDbGFzczowLHJlbmRlcmVyU2V0U3R5bGU6MCxyZW5kZXJlclJlbW92ZVN0eWxlOjAscmVuZGVyZXJEZXN0cm95OjAscmVuZGVyZXJEZXN0cm95Tm9kZTowLHJlbmRlcmVyTW92ZU5vZGU6MCxyZW5kZXJlclJlbW92ZU5vZGU6MCxyZW5kZXJlckFwcGVuZENoaWxkOjAscmVuZGVyZXJJbnNlcnRCZWZvcmU6MCxyZW5kZXJlckNyZWF0ZUNvbW1lbnQ6MH0sZT1uLmluZGV4T2YoIm5nRGV2TW9kZT1mYWxzZSIpPT09LTE7cmV0dXJuIE1pLm5nRGV2TW9kZT1lJiZ0LHR9ZnVuY3Rpb24geFIoKXtyZXR1cm4gdHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZT8odHlwZW9mIG5nRGV2TW9kZSE9Im9iamVjdCImJnkwdCgpLHR5cGVvZiBuZ0Rldk1vZGUhPSJ1bmRlZmluZWQiJiYhIW5nRGV2TW9kZSk6ITF9dmFyIGx2PXt9LHVhPVtdOyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmeFIoKSYmKE9iamVjdC5mcmVlemUobHYpLE9iamVjdC5mcmVlemUodWEpKTt2YXIgeFQ9Rmkoe1x1MDI3NWNtcDpGaX0pLEw4PUZpKHtcdTAyNzVkaXI6Rml9KSxCOD1GaSh7XHUwMjc1cGlwZTpGaX0pLHdLPUZpKHtcdTAyNzVtb2Q6Rml9KSx4MHQ9Rmkoe1x1MDI3NWxvYzpGaX0pLFVPPUZpKHtcdTAyNzVmYWM6Rml9KSxuUj1GaSh7X19OR19FTEVNRU5UX0lEX186Rml9KTt2YXIgdjB0PTA7ZnVuY3Rpb24geihuKXtyZXR1cm4gUHkoKCk9PnsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJnhSKCk7bGV0IHQ9bi50eXBlLGU9e30sbz17dHlwZTp0LHByb3ZpZGVyc1Jlc29sdmVyOm51bGwsZGVjbHM6bi5kZWNscyx2YXJzOm4udmFycyxmYWN0b3J5Om51bGwsdGVtcGxhdGU6bi50ZW1wbGF0ZXx8bnVsbCxjb25zdHM6bi5jb25zdHN8fG51bGwsbmdDb250ZW50U2VsZWN0b3JzOm4ubmdDb250ZW50U2VsZWN0b3JzLGhvc3RCaW5kaW5nczpuLmhvc3RCaW5kaW5nc3x8bnVsbCxob3N0VmFyczpuLmhvc3RWYXJzfHwwLGhvc3RBdHRyczpuLmhvc3RBdHRyc3x8bnVsbCxjb250ZW50UXVlcmllczpuLmNvbnRlbnRRdWVyaWVzfHxudWxsLGRlY2xhcmVkSW5wdXRzOmUsaW5wdXRzOm51bGwsb3V0cHV0czpudWxsLGV4cG9ydEFzOm4uZXhwb3J0QXN8fG51bGwsb25QdXNoOm4uY2hhbmdlRGV0ZWN0aW9uPT09dHQuT25QdXNoLGRpcmVjdGl2ZURlZnM6bnVsbCxwaXBlRGVmczpudWxsLHNlbGVjdG9yczpuLnNlbGVjdG9yc3x8dWEsdmlld1F1ZXJ5Om4udmlld1F1ZXJ5fHxudWxsLGZlYXR1cmVzOm4uZmVhdHVyZXN8fG51bGwsZGF0YTpuLmRhdGF8fHt9LGVuY2Fwc3VsYXRpb246bi5lbmNhcHN1bGF0aW9ufHxKZS5FbXVsYXRlZCxpZDoiYyIsc3R5bGVzOm4uc3R5bGVzfHx1YSxfOm51bGwsc2V0SW5wdXQ6bnVsbCxzY2hlbWFzOm4uc2NoZW1hc3x8bnVsbCx0VmlldzpudWxsfSxpPW4uZGlyZWN0aXZlcyxhPW4uZmVhdHVyZXMscj1uLnBpcGVzO3JldHVybiBvLmlkKz12MHQrKyxvLmlucHV0cz1kUShuLmlucHV0cyxlKSxvLm91dHB1dHM9ZFEobi5vdXRwdXRzKSxhJiZhLmZvckVhY2gocz0+cyhvKSksby5kaXJlY3RpdmVEZWZzPWk/KCk9Pih0eXBlb2YgaT09ImZ1bmN0aW9uIj9pKCk6aSkubWFwKFNLKTpudWxsLG8ucGlwZURlZnM9cj8oKT0+KHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoKTpyKS5tYXAoUkspOm51bGwsb30pfWZ1bmN0aW9uIHZSKG4sdCxlKXtsZXQgbz1uLlx1MDI3NWNtcDtvLmRpcmVjdGl2ZURlZnM9KCk9PnQubWFwKFNLKSxvLnBpcGVEZWZzPSgpPT5lLm1hcChSSyl9ZnVuY3Rpb24gU0sobil7bGV0IHQ9VmYobil8fGN5KG4pO2lmKG5nRGV2TW9kZSYmIXQpdGhyb3cgbmV3IEVycm9yKGAnJHtuLm5hbWV9JyBpcyBuZWl0aGVyICdDb21wb25lbnRUeXBlJyBvciAnRGlyZWN0aXZlVHlwZScuYCk7cmV0dXJuIHR9ZnVuY3Rpb24gUksobil7bGV0IHQ9YXYobik7aWYobmdEZXZNb2RlJiYhdCl0aHJvdyBuZXcgRXJyb3IoYCcke24ubmFtZX0nIGlzIG5vdCBhICdQaXBlVHlwZScuYCk7cmV0dXJuIHR9dmFyIHcwdD17fTtmdW5jdGlvbiBxKG4pe3JldHVybiBQeSgoKT0+e2xldCB0PXt0eXBlOm4udHlwZSxib290c3RyYXA6bi5ib290c3RyYXB8fHVhLGRlY2xhcmF0aW9uczpuLmRlY2xhcmF0aW9uc3x8dWEsaW1wb3J0czpuLmltcG9ydHN8fHVhLGV4cG9ydHM6bi5leHBvcnRzfHx1YSx0cmFuc2l0aXZlQ29tcGlsZVNjb3BlczpudWxsLHNjaGVtYXM6bi5zY2hlbWFzfHxudWxsLGlkOm4uaWR8fG51bGx9O3JldHVybiBuLmlkIT1udWxsJiYodzB0W24uaWRdPW4udHlwZSksdH0pfWZ1bmN0aW9uIGV0KG4sdCl7cmV0dXJuIFB5KCgpPT57bGV0IGU9c18obiwhMCk7ZS5kZWNsYXJhdGlvbnM9dC5kZWNsYXJhdGlvbnN8fHVhLGUuaW1wb3J0cz10LmltcG9ydHN8fHVhLGUuZXhwb3J0cz10LmV4cG9ydHN8fHVhfSl9ZnVuY3Rpb24gZFEobix0KXtpZihuPT1udWxsKXJldHVybiBsdjtsZXQgZT17fTtmb3IobGV0IG8gaW4gbilpZihuLmhhc093blByb3BlcnR5KG8pKXtsZXQgaT1uW29dLGE9aTtBcnJheS5pc0FycmF5KGkpJiYoYT1pWzFdLGk9aVswXSksZVtpXT1vLHQmJih0W2ldPWEpfXJldHVybiBlfXZhciB2dD16O2Z1bmN0aW9uIGptKG4pe3JldHVybnt0eXBlOm4udHlwZSxuYW1lOm4ubmFtZSxmYWN0b3J5Om51bGwscHVyZTpuLnB1cmUhPT0hMSxvbkRlc3Ryb3k6bi50eXBlLnByb3RvdHlwZS5uZ09uRGVzdHJveXx8bnVsbH19ZnVuY3Rpb24gVmYobil7cmV0dXJuIG5beFRdfHxudWxsfWZ1bmN0aW9uIGN5KG4pe3JldHVybiBuW0w4XXx8bnVsbH1mdW5jdGlvbiBhdihuKXtyZXR1cm4gbltCOF18fG51bGx9ZnVuY3Rpb24gc18obix0KXtsZXQgZT1uW3dLXXx8bnVsbDtpZighZSYmdD09PSEwKXRocm93IG5ldyBFcnJvcihgVHlwZSAke09vKG4pfSBkb2VzIG5vdCBoYXZlICdcdTAyNzVtb2QnIHByb3BlcnR5LmApO3JldHVybiBlfWZ1bmN0aW9uIFMwdChuKXtyZXR1cm4gblt4MHRdfHxudWxsfXZhciBsXz0wLFJuPTEsUW89Mix5cj0zLGhnPTQsaXY9NSxZYz02LGN2PTcsVHI9OCxtUj05LHJ2PTEwLFBvPTExLFpOPTEyLGh3PTEzLFJMPTE0LEN5PTE1LGJnPTE2LHdSPTE3LGN3PTE4LF9nPTE5LGdpPTIwLFIwdD1bIlJvb3QiLCJDb21wb25lbnQiLCJFbWJlZGRlZCJdLEUwdD0xO3ZhciBWOD0xLGo4PTIsdlQ9NyxYTj04LE15PTksQmw9MTAsazB0PTE7ZnVuY3Rpb24gVk8obil7cmV0dXJuIEFycmF5LmlzQXJyYXkobikmJnR5cGVvZiBuW1Y4XT09Im9iamVjdCJ9ZnVuY3Rpb24gWkMobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobikmJm5bVjhdPT09ITB9ZnVuY3Rpb24gVTgobil7cmV0dXJuKG4uZmxhZ3MmOCkhPT0wfWZ1bmN0aW9uIFk4KG4pe3JldHVybihuLmZsYWdzJjIpPT09Mn1mdW5jdGlvbiB3VChuKXtyZXR1cm4obi5mbGFncyYxKT09PTF9ZnVuY3Rpb24gV0Mobil7cmV0dXJuIG4udGVtcGxhdGUhPT1udWxsfWZ1bmN0aW9uIE4wdChuKXtyZXR1cm4obltRb10mNTEyKSE9PTB9ZnVuY3Rpb24geXkobix0KXtFdyhuLHRbUm5dKX1mdW5jdGlvbiBFdyhuLHQpe0c4KG4pLG4uaGFzT3duUHJvcGVydHkoInRWaWV3XyIpJiZpbyhuLnRWaWV3Xyx0LCJUaGlzIFROb2RlIGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIFRWaWV3LiIpfWZ1bmN0aW9uIEc4KG4pe3VuKG4sIlROb2RlIG11c3QgYmUgZGVmaW5lZCIpLG4mJnR5cGVvZiBuPT0ib2JqZWN0IiYmbi5oYXNPd25Qcm9wZXJ0eSgiZGlyZWN0aXZlU3R5bGluZ0xhc3QiKXx8aGEoIk5vdCBvZiB0eXBlIFROb2RlLCBnb3Q6ICIrbil9ZnVuY3Rpb24gVzgobil7dW4obiwiRXhwZWN0ZWQgVEljdSB0byBiZSBkZWZpbmVkIiksdHlwZW9mIG4uY3VycmVudENhc2VMVmlld0luZGV4IT0ibnVtYmVyIiYmaGEoIk9iamVjdCBpcyBub3Qgb2YgVEljdSB0eXBlLiIpfWZ1bmN0aW9uIFQwdChuLHQ9IlR5cGUgcGFzc2VkIGluIGlzIG5vdCBDb21wb25lbnRUeXBlLCBpdCBkb2VzIG5vdCBoYXZlICdcdTAyNzVjbXAnIHByb3BlcnR5LiIpe1ZmKG4pfHxoYSh0KX1mdW5jdGlvbiBBMHQobix0PSJUeXBlIHBhc3NlZCBpbiBpcyBub3QgTmdNb2R1bGVUeXBlLCBpdCBkb2VzIG5vdCBoYXZlICdcdTAyNzVtb2QnIHByb3BlcnR5LiIpe3NfKG4pfHxoYSh0KX1mdW5jdGlvbiBFSyhuKXt1bihuLCJjdXJyZW50VE5vZGUgc2hvdWxkIGV4aXN0ISIpLHVuKG4ucGFyZW50LCJjdXJyZW50VE5vZGUgc2hvdWxkIGhhdmUgYSBwYXJlbnQiKX1mdW5jdGlvbiB4YihuKXt1bihuLCJMQ29udGFpbmVyIG11c3QgYmUgZGVmaW5lZCIpLGlvKFpDKG4pLCEwLCJFeHBlY3RpbmcgTENvbnRhaW5lciIpfWZ1bmN0aW9uIGtLKG4pe24mJmlvKFZPKG4pLCEwLCJFeHBlY3RpbmcgTFZpZXcgb3IgdW5kZWZpbmVkIG9yIG51bGwiKX1mdW5jdGlvbiBrdyhuKXt1bihuLCJMVmlldyBtdXN0IGJlIGRlZmluZWQiKSxpbyhWTyhuKSwhMCwiRXhwZWN0aW5nIExWaWV3Iil9ZnVuY3Rpb24gT2cobix0KXtpbyhuLmZpcnN0Q3JlYXRlUGFzcywhMCx0fHwiU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGZpcnN0IGNyZWF0ZSBwYXNzLiIpfWZ1bmN0aW9uIHE4KG4sdCl7aW8obi5maXJzdFVwZGF0ZVBhc3MsITAsdHx8IlNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBmaXJzdCB1cGRhdGUgcGFzcy4iKX1mdW5jdGlvbiBEMHQobil7KG4udHlwZT09PXZvaWQgMHx8bi5zZWxlY3RvcnM9PW51bGx8fG4uaW5wdXRzPT09dm9pZCAwKSYmaGEoIkV4cGVjdGVkIGEgRGlyZWN0aXZlRGVmL0NvbXBvbmVudERlZiBhbmQgdGhpcyBvYmplY3QgZG9lcyBub3Qgc2VlbSB0byBoYXZlIHRoZSBleHBlY3RlZCBzaGFwZS4iKX1mdW5jdGlvbiBJMHQobix0KXtsZXQgZT1uWzFdO05LKGdpLGUuYmluZGluZ1N0YXJ0SW5kZXgsdCl9ZnVuY3Rpb24gUU4obix0KXtsZXQgZT1uWzFdO05LKGUuZXhwYW5kb1N0YXJ0SW5kZXgsbi5sZW5ndGgsdCl9ZnVuY3Rpb24gTksobix0LGUpe248PWUmJmU8dHx8aGEoYEluZGV4IG91dCBvZiByYW5nZSAoZXhwZWN0aW5nICR7bn0gPD0gJHtlfSA8ICR7dH0pYCl9ZnVuY3Rpb24gejB0KG4sdCl7dW4obltiZ10sIkNvbXBvbmVudCB2aWV3cyBzaG91bGQgZXhpc3QuIiksdW4obltiZ11bWWNdLnByb2plY3Rpb24sdHx8IkNvbXBvbmVudHMgd2l0aCBwcm9qZWN0aW9uIG5vZGVzICg8bmctY29udGVudD4pIG11c3QgaGF2ZSBwcm9qZWN0aW9uIHNsb3RzIGRlZmluZWQuIil9ZnVuY3Rpb24gVEsobix0KXt1bihuLHR8fCJDb21wb25lbnQgdmlld3Mgc2hvdWxkIGFsd2F5cyBoYXZlIGEgcGFyZW50IHZpZXcgKGNvbXBvbmVudCdzIGhvc3QgdmlldykiKX1mdW5jdGlvbiBaOChuLHQpe1FOKG4sdCksUU4obix0KzgpLFdhKG5bdCswXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxXYShuW3QrMV0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIiksV2Eoblt0KzJdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLFdhKG5bdCszXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxXYShuW3QrNF0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIiksV2Eoblt0KzVdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLFdhKG5bdCs2XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSxXYShuW3QrN10sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIiksV2Eoblt0KzhdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBwYXJlbnQgaW5qZWN0b3IiKX1mdW5jdGlvbiBtdihuLHQpe2xldCBlPW4uaGFzT3duUHJvcGVydHkoVU8pO2lmKCFlJiZ0PT09ITAmJm5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoYFR5cGUgJHtPbyhuKX0gZG9lcyBub3QgaGF2ZSAnXHUwMjc1ZmFjJyBwcm9wZXJ0eS5gKTtyZXR1cm4gZT9uW1VPXTpudWxsfXZhciBFTD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hhbmdlPW99aXNGaXJzdENoYW5nZSgpe3JldHVybiB0aGlzLmZpcnN0Q2hhbmdlfX07ZnVuY3Rpb24gV2UoKXtyZXR1cm4gQUt9ZnVuY3Rpb24gQUsobil7cmV0dXJuIG4udHlwZS5wcm90b3R5cGUubmdPbkNoYW5nZXMmJihuLnNldElucHV0PUYwdCksSDB0fVdlLm5nSW5oZXJpdD0hMDtmdW5jdGlvbiBIMHQoKXtsZXQgbj1JSyh0aGlzKSx0PW49PW51bGw/dm9pZCAwOm4uY3VycmVudDtpZih0KXtsZXQgZT1uLnByZXZpb3VzO2lmKGU9PT1sdiluLnByZXZpb3VzPXQ7ZWxzZSBmb3IobGV0IG8gaW4gdCllW29dPXRbb107bi5jdXJyZW50PW51bGwsdGhpcy5uZ09uQ2hhbmdlcyh0KX19ZnVuY3Rpb24gRjB0KG4sdCxlLG8pe2xldCBpPUlLKG4pfHxMMHQobix7cHJldmlvdXM6bHYsY3VycmVudDpudWxsfSksYT1pLmN1cnJlbnR8fChpLmN1cnJlbnQ9e30pLHI9aS5wcmV2aW91cyxzPXRoaXMuZGVjbGFyZWRJbnB1dHNbZV0sbD1yW3NdO2Fbc109bmV3IEVMKGwmJmwuY3VycmVudFZhbHVlLHQscj09PWx2KSxuW29dPXR9dmFyIERLPSJfX25nU2ltcGxlQ2hhbmdlc19fIjtmdW5jdGlvbiBJSyhuKXtyZXR1cm4gbltES118fG51bGx9ZnVuY3Rpb24gTDB0KG4sdCl7cmV0dXJuIG5bREtdPXR9dmFyIGtMPW51bGwsQjB0PW49PntrTD1ufSxhXz1mdW5jdGlvbihuLHQsZSl7a0whPW51bGwmJmtMKG4sdCxlKX07dmFyIHpLPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsSEs9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aE1MLyI7dmFyIE5MO2Z1bmN0aW9uIEZLKG4pe05MPW59ZnVuY3Rpb24gWDgoKXtpZihOTCE9PXZvaWQgMClyZXR1cm4gTkw7aWYodHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIilyZXR1cm4gZG9jdW1lbnR9dmFyIGdROyhmdW5jdGlvbihuKXtuW24uSW1wb3J0YW50PTFdPSJJbXBvcnRhbnQiLG5bbi5EYXNoQ2FzZT0yXT0iRGFzaENhc2UifSkoZ1F8fChnUT17fSkpO2Z1bmN0aW9uIElhKG4pe3JldHVybiEhbi5saXN0ZW59dmFyIFYwdD0obix0KT0+WDgoKSxqMHQ9e2NyZWF0ZVJlbmRlcmVyOlYwdH0sVTB0PTE7ZnVuY3Rpb24gWnMobil7Zm9yKDtBcnJheS5pc0FycmF5KG4pOyluPW5bbF9dO3JldHVybiBufWZ1bmN0aW9uIFkwdChuKXtmb3IoO0FycmF5LmlzQXJyYXkobik7KXtpZih0eXBlb2YgbltWOF09PSJvYmplY3QiKXJldHVybiBuO249bltsX119cmV0dXJuIG51bGx9ZnVuY3Rpb24gU1Qobix0KXtyZXR1cm4gbmdEZXZNb2RlJiZBcih0LG4pLG5nRGV2TW9kZSYmWk8obixnaSwiRXhwZWN0ZWQgdG8gYmUgcGFzdCBIRUFERVJfT0ZGU0VUIiksWnModFtuXSl9ZnVuY3Rpb24geWcobix0KXtuZ0Rldk1vZGUmJnl5KG4sdCksbmdEZXZNb2RlJiZBcih0LG4uaW5kZXgpO2xldCBlPVpzKHRbbi5pbmRleF0pO3JldHVybiBuZ0Rldk1vZGUmJiFJYSh0W1BvXSkmJkNiKGUpLGV9ZnVuY3Rpb24gTEsobix0KXtuZ0Rldk1vZGUmJlJ3KHQsLTEsIndyb25nIGluZGV4IGZvciBUTm9kZSIpLG5nRGV2TW9kZSYmaHkodCxuLmRhdGEubGVuZ3RoLCJ3cm9uZyBpbmRleCBmb3IgVE5vZGUiKTtsZXQgZT1uLmRhdGFbdF07cmV0dXJuIG5nRGV2TW9kZSYmZSE9PW51bGwmJkc4KGUpLGV9ZnVuY3Rpb24gTncobix0KXtyZXR1cm4gbmdEZXZNb2RlJiZBcihuLHQpLG5bdF19ZnVuY3Rpb24gY18obix0KXtuZ0Rldk1vZGUmJkFyKHQsbik7bGV0IGU9dFtuXTtyZXR1cm4gVk8oZSk/ZTplW2xfXX1mdW5jdGlvbiBUdyhuKXtyZXR1cm4obltRb10mNCk9PT00fWZ1bmN0aW9uIFE4KG4pe3JldHVybihuW1FvXSYxMjgpPT09MTI4fWZ1bmN0aW9uIEcwdChuKXtyZXR1cm4gWkMoblt5cl0pfWZ1bmN0aW9uIGJ5KG4sdCl7cmV0dXJuIHQ9PW51bGw/bnVsbDoobmdEZXZNb2RlJiZBcihuLHQpLG5bdF0pfWZ1bmN0aW9uIEJLKG4pe25bY3ddPTB9ZnVuY3Rpb24gSzgobix0KXtuW2l2XSs9dDtsZXQgZT1uLG89blt5cl07Zm9yKDtvIT09bnVsbCYmKHQ9PT0xJiZlW2l2XT09PTF8fHQ9PT0tMSYmZVtpdl09PT0wKTspb1tpdl0rPXQsZT1vLG89b1t5cl19dmFyIHBvPXtsRnJhbWU6WksobnVsbCksYmluZGluZ3NFbmFibGVkOiEwLGlzSW5DaGVja05vQ2hhbmdlc01vZGU6ITF9O2Z1bmN0aW9uIFcwdCgpe3JldHVybiBwby5sRnJhbWUuZWxlbWVudERlcHRoQ291bnR9ZnVuY3Rpb24gcTB0KCl7cG8ubEZyYW1lLmVsZW1lbnREZXB0aENvdW50Kyt9ZnVuY3Rpb24gWjB0KCl7cG8ubEZyYW1lLmVsZW1lbnREZXB0aENvdW50LS19ZnVuY3Rpb24gVksoKXtyZXR1cm4gcG8uYmluZGluZ3NFbmFibGVkfWZ1bmN0aW9uIFgwdCgpe3BvLmJpbmRpbmdzRW5hYmxlZD0hMH1mdW5jdGlvbiBRMHQoKXtwby5iaW5kaW5nc0VuYWJsZWQ9ITF9ZnVuY3Rpb24gdmUoKXtyZXR1cm4gcG8ubEZyYW1lLmxWaWV3fWZ1bmN0aW9uIENvKCl7cmV0dXJuIHBvLmxGcmFtZS50Vmlld31mdW5jdGlvbiBPdChuKXtyZXR1cm4gcG8ubEZyYW1lLmNvbnRleHRMVmlldz1uLG5bVHJdfWZ1bmN0aW9uIFRzKCl7bGV0IG49aksoKTtmb3IoO24hPT1udWxsJiZuLnR5cGU9PT02NDspbj1uLnBhcmVudDtyZXR1cm4gbn1mdW5jdGlvbiBqSygpe3JldHVybiBwby5sRnJhbWUuY3VycmVudFROb2RlfWZ1bmN0aW9uIGZSKCl7bGV0IG49cG8ubEZyYW1lLHQ9bi5jdXJyZW50VE5vZGU7cmV0dXJuIG4uaXNQYXJlbnQ/dDp0LnBhcmVudH1mdW5jdGlvbiB2YihuLHQpe25nRGV2TW9kZSYmbiYmRXcobixwby5sRnJhbWUudFZpZXcpO2xldCBlPXBvLmxGcmFtZTtlLmN1cnJlbnRUTm9kZT1uLGUuaXNQYXJlbnQ9dH1mdW5jdGlvbiBKOCgpe3JldHVybiBwby5sRnJhbWUuaXNQYXJlbnR9ZnVuY3Rpb24gJDgoKXtwby5sRnJhbWUuaXNQYXJlbnQ9ITF9ZnVuY3Rpb24gSzB0KCl7cmV0dXJuIHBvLmxGcmFtZS5jb250ZXh0TFZpZXd9ZnVuY3Rpb24gQXcoKXtyZXR1cm4gcG8uaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZX1mdW5jdGlvbiBLTihuKXtwby5pc0luQ2hlY2tOb0NoYW5nZXNNb2RlPW59ZnVuY3Rpb24gVW0oKXtsZXQgbj1wby5sRnJhbWUsdD1uLmJpbmRpbmdSb290SW5kZXg7cmV0dXJuIHQ9PT0tMSYmKHQ9bi5iaW5kaW5nUm9vdEluZGV4PW4udFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgpLHR9ZnVuY3Rpb24gTGkoKXtyZXR1cm4gcG8ubEZyYW1lLmJpbmRpbmdJbmRleH1mdW5jdGlvbiBVSyhuKXtyZXR1cm4gcG8ubEZyYW1lLmJpbmRpbmdJbmRleD1ufWZ1bmN0aW9uIER3KCl7cmV0dXJuIHBvLmxGcmFtZS5iaW5kaW5nSW5kZXgrK31mdW5jdGlvbiBYTyhuKXtsZXQgdD1wby5sRnJhbWUsZT10LmJpbmRpbmdJbmRleDtyZXR1cm4gdC5iaW5kaW5nSW5kZXg9dC5iaW5kaW5nSW5kZXgrbixlfWZ1bmN0aW9uIEowdCgpe3JldHVybiBwby5sRnJhbWUuaW5JMThufWZ1bmN0aW9uIFlLKG4pe3BvLmxGcmFtZS5pbkkxOG49bn1mdW5jdGlvbiAkMHQobix0KXtsZXQgZT1wby5sRnJhbWU7ZS5iaW5kaW5nSW5kZXg9ZS5iaW5kaW5nUm9vdEluZGV4PW4sVEwodCl9ZnVuY3Rpb24gdEN0KCl7cmV0dXJuIHBvLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXh9ZnVuY3Rpb24gVEwobil7cG8ubEZyYW1lLmN1cnJlbnREaXJlY3RpdmVJbmRleD1ufWZ1bmN0aW9uIHRCKG4pe2xldCB0PXBvLmxGcmFtZS5jdXJyZW50RGlyZWN0aXZlSW5kZXg7cmV0dXJuIHQ9PT0tMT9udWxsOm5bdF19ZnVuY3Rpb24gR0soKXtyZXR1cm4gcG8ubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4fWZ1bmN0aW9uIGVCKG4pe3BvLmxGcmFtZS5jdXJyZW50UXVlcnlJbmRleD1ufWZ1bmN0aW9uIGVDdChuKXtsZXQgdD1uW1JuXTtyZXR1cm4gdC50eXBlPT09Mj8obmdEZXZNb2RlJiZ1bih0LmRlY2xUTm9kZSwiRW1iZWRkZWQgVE5vZGVzIHNob3VsZCBoYXZlIGRlY2xhcmF0aW9uIHBhcmVudHMuIiksdC5kZWNsVE5vZGUpOnQudHlwZT09PTE/bltZY106bnVsbH1mdW5jdGlvbiBXSyhuLHQsZSl7aWYobmdEZXZNb2RlJiZrSyhuKSxlJk5pLlNraXBTZWxmKXtuZ0Rldk1vZGUmJkV3KHQsbltSbl0pO2xldCBpPXQsYT1uO2Zvcig7bmdEZXZNb2RlJiZ1bihpLCJQYXJlbnQgVE5vZGUgc2hvdWxkIGJlIGRlZmluZWQiKSxpPWkucGFyZW50LGk9PT1udWxsJiYhKGUmTmkuSG9zdCk7KWlmKGk9ZUN0KGEpLGk9PT1udWxsfHwobmdEZXZNb2RlJiZ1bihhLCJQYXJlbnQgTFZpZXcgc2hvdWxkIGJlIGRlZmluZWQiKSxhPWFbQ3ldLGkudHlwZSYxMCkpYnJlYWs7aWYoaT09PW51bGwpcmV0dXJuITE7dD1pLG49YX1uZ0Rldk1vZGUmJnl5KHQsbik7bGV0IG89cG8ubEZyYW1lPXFLKCk7cmV0dXJuIG8uY3VycmVudFROb2RlPXQsby5sVmlldz1uLCEwfWZ1bmN0aW9uIG5CKG4pe25nRGV2TW9kZSYmcUMoblswXSxuWzFdLCI/Pz8/IiksbmdEZXZNb2RlJiZrSyhuKTtsZXQgdD1xSygpO25nRGV2TW9kZSYmKGlvKHQuaXNQYXJlbnQsITAsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGlvKHQubFZpZXcsbnVsbCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksaW8odC50VmlldyxudWxsLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxpbyh0LnNlbGVjdGVkSW5kZXgsLTEsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGlvKHQuZWxlbWVudERlcHRoQ291bnQsMCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksaW8odC5jdXJyZW50RGlyZWN0aXZlSW5kZXgsLTEsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGlvKHQuY3VycmVudE5hbWVzcGFjZSxudWxsLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSxpbyh0LmJpbmRpbmdSb290SW5kZXgsLTEsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLGlvKHQuY3VycmVudFF1ZXJ5SW5kZXgsMCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIikpO2xldCBlPW5bUm5dO3BvLmxGcmFtZT10LG5nRGV2TW9kZSYmZS5maXJzdENoaWxkJiZFdyhlLmZpcnN0Q2hpbGQsZSksdC5jdXJyZW50VE5vZGU9ZS5maXJzdENoaWxkLHQubFZpZXc9bix0LnRWaWV3PWUsdC5jb250ZXh0TFZpZXc9bix0LmJpbmRpbmdJbmRleD1lLmJpbmRpbmdTdGFydEluZGV4LHQuaW5JMThuPSExfWZ1bmN0aW9uIHFLKCl7bGV0IG49cG8ubEZyYW1lLHQ9bj09PW51bGw/bnVsbDpuLmNoaWxkO3JldHVybiB0PT09bnVsbD9aSyhuKTp0fWZ1bmN0aW9uIFpLKG4pe2xldCB0PXtjdXJyZW50VE5vZGU6bnVsbCxpc1BhcmVudDohMCxsVmlldzpudWxsLHRWaWV3Om51bGwsc2VsZWN0ZWRJbmRleDotMSxjb250ZXh0TFZpZXc6bnVsbCxlbGVtZW50RGVwdGhDb3VudDowLGN1cnJlbnROYW1lc3BhY2U6bnVsbCxjdXJyZW50RGlyZWN0aXZlSW5kZXg6LTEsYmluZGluZ1Jvb3RJbmRleDotMSxiaW5kaW5nSW5kZXg6LTEsY3VycmVudFF1ZXJ5SW5kZXg6MCxwYXJlbnQ6bixjaGlsZDpudWxsLGluSTE4bjohMX07cmV0dXJuIG4hPT1udWxsJiYobi5jaGlsZD10KSx0fWZ1bmN0aW9uIFhLKCl7bGV0IG49cG8ubEZyYW1lO3JldHVybiBwby5sRnJhbWU9bi5wYXJlbnQsbi5jdXJyZW50VE5vZGU9bnVsbCxuLmxWaWV3PW51bGwsbn12YXIgUUs9WEs7ZnVuY3Rpb24gb0IoKXtsZXQgbj1YSygpO24uaXNQYXJlbnQ9ITAsbi50Vmlldz1udWxsLG4uc2VsZWN0ZWRJbmRleD0tMSxuLmNvbnRleHRMVmlldz1udWxsLG4uZWxlbWVudERlcHRoQ291bnQ9MCxuLmN1cnJlbnREaXJlY3RpdmVJbmRleD0tMSxuLmN1cnJlbnROYW1lc3BhY2U9bnVsbCxuLmJpbmRpbmdSb290SW5kZXg9LTEsbi5iaW5kaW5nSW5kZXg9LTEsbi5jdXJyZW50UXVlcnlJbmRleD0wfWZ1bmN0aW9uIG5DdChuKXtyZXR1cm4ocG8ubEZyYW1lLmNvbnRleHRMVmlldz1vQ3Qobixwby5sRnJhbWUuY29udGV4dExWaWV3KSlbVHJdfWZ1bmN0aW9uIG9DdChuLHQpe2Zvcig7bj4wOyluZ0Rldk1vZGUmJnVuKHRbQ3ldLCJEZWNsYXJhdGlvbiB2aWV3IHNob3VsZCBiZSBkZWZpbmVkIGlmIG5lc3RpbmcgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIDAuIiksdD10W0N5XSxuLS07cmV0dXJuIHR9ZnVuY3Rpb24gWW0oKXtyZXR1cm4gcG8ubEZyYW1lLnNlbGVjdGVkSW5kZXh9ZnVuY3Rpb24gT3kobil7bmdEZXZNb2RlJiZuIT09LTEmJlpPKG4sZ2ksIkluZGV4IG11c3QgYmUgcGFzdCBIRUFERVJfT0ZGU0VUIChvciAtMSkuIiksbmdEZXZNb2RlJiZoeShuLHBvLmxGcmFtZS5sVmlldy5sZW5ndGgsIkNhbid0IHNldCBpbmRleCBwYXNzZWQgZW5kIG9mIExWaWV3IikscG8ubEZyYW1lLnNlbGVjdGVkSW5kZXg9bn1mdW5jdGlvbiBEcigpe2xldCBuPXBvLmxGcmFtZTtyZXR1cm4gTEsobi50VmlldyxuLnNlbGVjdGVkSW5kZXgpfWZ1bmN0aW9uIEtuKCl7cG8ubEZyYW1lLmN1cnJlbnROYW1lc3BhY2U9ekt9ZnVuY3Rpb24gaUN0KCl7cG8ubEZyYW1lLmN1cnJlbnROYW1lc3BhY2U9SEt9ZnVuY3Rpb24gR20oKXthQ3QoKX1mdW5jdGlvbiBhQ3QoKXtwby5sRnJhbWUuY3VycmVudE5hbWVzcGFjZT1udWxsfWZ1bmN0aW9uIHJDdCgpe3JldHVybiBwby5sRnJhbWUuY3VycmVudE5hbWVzcGFjZX1mdW5jdGlvbiBzQ3Qobix0LGUpe25nRGV2TW9kZSYmT2coZSk7bGV0e25nT25DaGFuZ2VzOm8sbmdPbkluaXQ6aSxuZ0RvQ2hlY2s6YX09dC50eXBlLnByb3RvdHlwZTtpZihvKXtsZXQgcj1BSyh0KTsoZS5wcmVPcmRlckhvb2tzfHwoZS5wcmVPcmRlckhvb2tzPVtdKSkucHVzaChuLHIpLChlLnByZU9yZGVyQ2hlY2tIb29rc3x8KGUucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaChuLHIpfWkmJihlLnByZU9yZGVySG9va3N8fChlLnByZU9yZGVySG9va3M9W10pKS5wdXNoKDAtbixpKSxhJiYoKGUucHJlT3JkZXJIb29rc3x8KGUucHJlT3JkZXJIb29rcz1bXSkpLnB1c2gobixhKSwoZS5wcmVPcmRlckNoZWNrSG9va3N8fChlLnByZU9yZGVyQ2hlY2tIb29rcz1bXSkpLnB1c2gobixhKSl9ZnVuY3Rpb24gUlQobix0KXtuZ0Rldk1vZGUmJk9nKG4pO2ZvcihsZXQgZT10LmRpcmVjdGl2ZVN0YXJ0LG89dC5kaXJlY3RpdmVFbmQ7ZTxvO2UrKyl7bGV0IGk9bi5kYXRhW2VdO25nRGV2TW9kZSYmdW4oaSwiRXhwZWN0aW5nIERpcmVjdGl2ZURlZiIpO2xldCBhPWkudHlwZS5wcm90b3R5cGUse25nQWZ0ZXJDb250ZW50SW5pdDpyLG5nQWZ0ZXJDb250ZW50Q2hlY2tlZDpzLG5nQWZ0ZXJWaWV3SW5pdDpsLG5nQWZ0ZXJWaWV3Q2hlY2tlZDpjLG5nT25EZXN0cm95Om19PWE7ciYmKG4uY29udGVudEhvb2tzfHwobi5jb250ZW50SG9va3M9W10pKS5wdXNoKC1lLHIpLHMmJigobi5jb250ZW50SG9va3N8fChuLmNvbnRlbnRIb29rcz1bXSkpLnB1c2goZSxzKSwobi5jb250ZW50Q2hlY2tIb29rc3x8KG4uY29udGVudENoZWNrSG9va3M9W10pKS5wdXNoKGUscykpLGwmJihuLnZpZXdIb29rc3x8KG4udmlld0hvb2tzPVtdKSkucHVzaCgtZSxsKSxjJiYoKG4udmlld0hvb2tzfHwobi52aWV3SG9va3M9W10pKS5wdXNoKGUsYyksKG4udmlld0NoZWNrSG9va3N8fChuLnZpZXdDaGVja0hvb2tzPVtdKSkucHVzaChlLGMpKSxtIT1udWxsJiYobi5kZXN0cm95SG9va3N8fChuLmRlc3Ryb3lIb29rcz1bXSkpLnB1c2goZSxtKX19ZnVuY3Rpb24gQk4obix0LGUpe0tLKG4sdCwzLGUpfWZ1bmN0aW9uIFZOKG4sdCxlLG8pe25nRGV2TW9kZSYmcUMoZSwzLCJJbml0IHByZS1vcmRlciBob29rcyBzaG91bGQgbm90IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpLChuW1FvXSYzKT09PWUmJktLKG4sdCxlLG8pfWZ1bmN0aW9uIEo3KG4sdCl7bmdEZXZNb2RlJiZxQyh0LDMsIkluaXQgaG9va3MgcGhhc2Ugc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhbGwgaW5pdCBob29rcyBoYXZlIGJlZW4gcnVuLiIpO2xldCBlPW5bUW9dOyhlJjMpPT09dCYmKGUmPTIwNDcsZSs9MSxuW1FvXT1lKX1mdW5jdGlvbiBLSyhuLHQsZSxvKXtuZ0Rldk1vZGUmJmlvKEF3KCksITEsIkhvb2tzIHNob3VsZCBuZXZlciBiZSBydW4gd2hlbiBpbiBjaGVjayBubyBjaGFuZ2VzIG1vZGUuIik7bGV0IGk9byE9PXZvaWQgMD9uW2N3XSY2NTUzNTowLGE9byE9bnVsbD9vOi0xLHI9dC5sZW5ndGgtMSxzPTA7Zm9yKGxldCBsPWk7bDxyO2wrKylpZih0eXBlb2YgdFtsKzFdPT0ibnVtYmVyIil7aWYocz10W2xdLG8hPW51bGwmJnM+PW8pYnJlYWt9ZWxzZSB0W2xdPDAmJihuW2N3XSs9NjU1MzYpLChzPGF8fGE9PS0xKSYmKGxDdChuLGUsdCxsKSxuW2N3XT0obltjd10mNDI5NDkwMTc2MCkrbCsyKSxsKyt9ZnVuY3Rpb24gbEN0KG4sdCxlLG8pe2xldCBpPWVbb108MCxhPWVbbysxXSxyPWk/LWVbb106ZVtvXSxzPW5bcl07aWYoaSl7aWYobltRb10+PjExPG5bY3ddPj4xNiYmKG5bUW9dJjMpPT09dCl7bltRb10rPTIwNDgsYV8oNCxzLGEpO3RyeXthLmNhbGwocyl9ZmluYWxseXthXyg1LHMsYSl9fX1lbHNle2FfKDQscyxhKTt0cnl7YS5jYWxsKHMpfWZpbmFsbHl7YV8oNSxzLGEpfX19dmFyIG15PS0xLGZ2PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmZhY3Rvcnk9dCx0aGlzLnJlc29sdmluZz0hMSxuZ0Rldk1vZGUmJnVuKHQsIkZhY3Rvcnkgbm90IHNwZWNpZmllZCIpLG5nRGV2TW9kZSYmaW8odHlwZW9mIHQsImZ1bmN0aW9uIiwiRXhwZWN0ZWQgZmFjdG9yeSBmdW5jdGlvbi4iKSx0aGlzLmNhblNlZVZpZXdQcm92aWRlcnM9ZSx0aGlzLmluamVjdEltcGw9b319O2Z1bmN0aW9uIGNDdChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIGZ2fXZhciBtQ3Q9MTtmdW5jdGlvbiBwUihuKXtsZXQgdD0iIjtyZXR1cm4gbiYxJiYodCs9InxUZXh0IiksbiYyJiYodCs9InxFbGVtZW50IiksbiY0JiYodCs9InxDb250YWluZXIiKSxuJjgmJih0Kz0ifEVsZW1lbnRDb250YWluZXIiKSxuJjE2JiYodCs9InxQcm9qZWN0aW9uIiksbiYzMiYmKHQrPSJ8SWN1Q29udGFpbmVyIiksbiY2NCYmKHQrPSJ8UGxhY2Vob2xkZXIiKSx0Lmxlbmd0aD4wP3Quc3Vic3RyaW5nKDEpOnR9dmFyIGlCPTE7ZnVuY3Rpb24gZkN0KG4pe3JldHVybihuLmZsYWdzJjE2KSE9PTB9ZnVuY3Rpb24gcEN0KG4pe3JldHVybihuLmZsYWdzJjMyKSE9PTB9ZnVuY3Rpb24gR2Mobix0LGUpe3VuKG4sInNob3VsZCBiZSBjYWxsZWQgd2l0aCBhIFROb2RlIiksKG4udHlwZSZ0KT09PTAmJmhhKGV8fGBFeHBlY3RlZCBbJHtwUih0KX1dIGJ1dCBnb3QgJHtwUihuLnR5cGUpfS5gKX1mdW5jdGlvbiBkQ3Qobil7bj09PTJ8fG49PT0xfHxuPT09NHx8bj09PTh8fG49PT0zMnx8bj09PTE2fHxuPT09NjR8fGhhKGBFeHBlY3RlZCBUTm9kZVR5cGUgdG8gaGF2ZSBvbmx5IGEgc2luZ2xlIHR5cGUgc2VsZWN0ZWQsIGJ1dCBnb3QgJHtwUihuKX0uYCl9ZnVuY3Rpb24gSk4obix0LGUpe2xldCBvPUlhKG4pLGk9MDtmb3IoO2k8ZS5sZW5ndGg7KXtsZXQgYT1lW2ldO2lmKHR5cGVvZiBhPT0ibnVtYmVyIil7aWYoYSE9PTApYnJlYWs7aSsrO2xldCByPWVbaSsrXSxzPWVbaSsrXSxsPWVbaSsrXTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldEF0dHJpYnV0ZSsrLG8/bi5zZXRBdHRyaWJ1dGUodCxzLGwscik6dC5zZXRBdHRyaWJ1dGVOUyhyLHMsbCl9ZWxzZXtsZXQgcj1hLHM9ZVsrK2ldO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0QXR0cmlidXRlKyssYUIocik/byYmbi5zZXRQcm9wZXJ0eSh0LHIscyk6bz9uLnNldEF0dHJpYnV0ZSh0LHIscyk6dC5zZXRBdHRyaWJ1dGUocixzKSxpKyt9fXJldHVybiBpfWZ1bmN0aW9uIEpLKG4pe3JldHVybiBuPT09M3x8bj09PTR8fG49PT02fWZ1bmN0aW9uIGFCKG4pe3JldHVybiBuLmNoYXJDb2RlQXQoMCk9PT02NH1mdW5jdGlvbiAkTihuLHQpe2lmKCEodD09PW51bGx8fHQubGVuZ3RoPT09MCkpaWYobj09PW51bGx8fG4ubGVuZ3RoPT09MCluPXQuc2xpY2UoKTtlbHNle2xldCBlPS0xO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtsZXQgaT10W29dO3R5cGVvZiBpPT0ibnVtYmVyIj9lPWk6ZT09PTB8fChlPT09LTF8fGU9PT0yP3VRKG4sZSxpLG51bGwsdFsrK29dKTp1UShuLGUsaSxudWxsLG51bGwpKX19cmV0dXJuIG59ZnVuY3Rpb24gdVEobix0LGUsbyxpKXtsZXQgYT0wLHI9bi5sZW5ndGg7aWYodD09PS0xKXI9LTE7ZWxzZSBmb3IoO2E8bi5sZW5ndGg7KXtsZXQgcz1uW2ErK107aWYodHlwZW9mIHM9PSJudW1iZXIiKXtpZihzPT09dCl7cj0tMTticmVha31lbHNlIGlmKHM+dCl7cj1hLTE7YnJlYWt9fX1mb3IoO2E8bi5sZW5ndGg7KXtsZXQgcz1uW2FdO2lmKHR5cGVvZiBzPT0ibnVtYmVyIilicmVhaztpZihzPT09ZSl7aWYobz09PW51bGwpe2khPT1udWxsJiYoblthKzFdPWkpO3JldHVybn1lbHNlIGlmKG89PT1uW2ErMV0pe25bYSsyXT1pO3JldHVybn19YSsrLG8hPT1udWxsJiZhKyssaSE9PW51bGwmJmErK31yIT09LTEmJihuLnNwbGljZShyLDAsdCksYT1yKzEpLG4uc3BsaWNlKGErKywwLGUpLG8hPT1udWxsJiZuLnNwbGljZShhKyssMCxvKSxpIT09bnVsbCYmbi5zcGxpY2UoYSsrLDAsaSl9ZnVuY3Rpb24gJEsobil7cmV0dXJuIG4hPT1teX1mdW5jdGlvbiBfdyhuKXtuZ0Rldk1vZGUmJldhKG4sIk51bWJlciBleHBlY3RlZCIpLG5nRGV2TW9kZSYmcUMobiwtMSwiTm90IGEgdmFsaWQgc3RhdGUuIik7bGV0IHQ9biYzMjc2NztyZXR1cm4gbmdEZXZNb2RlJiZSdyh0LGdpLCJQYXJlbnQgaW5qZWN0b3IgbXVzdCBiZSBwb2ludGluZyBwYXN0IEhFQURFUl9PRkZTRVQuIiksbiYzMjc2N31mdW5jdGlvbiBnQ3Qobil7cmV0dXJuIG4+PjE2fWZ1bmN0aW9uIEN3KG4sdCl7bGV0IGU9Z0N0KG4pLG89dDtmb3IoO2U+MDspbz1vW0N5XSxlLS07cmV0dXJuIG99dmFyIEFMPSEwO2Z1bmN0aW9uIHRUKG4pe2xldCB0PUFMO3JldHVybiBBTD1uLHR9dmFyIHVDdD0yNTYsdEo9dUN0LTEsZUo9NSxoQ3Q9MDtmdW5jdGlvbiBfQ3Qobix0LGUpe25nRGV2TW9kZSYmaW8odC5maXJzdENyZWF0ZVBhc3MsITAsImV4cGVjdGVkIGZpcnN0Q3JlYXRlUGFzcyB0byBiZSB0cnVlIik7bGV0IG87dHlwZW9mIGU9PSJzdHJpbmciP289ZS5jaGFyQ29kZUF0KDApfHwwOmUuaGFzT3duUHJvcGVydHkoblIpJiYobz1lW25SXSksbz09bnVsbCYmKG89ZVtuUl09aEN0KyspO2xldCBpPW8mdEosYT0xPDxpO3QuZGF0YVtuKyhpPj5lSildfD1hfWZ1bmN0aW9uIGRSKG4sdCl7bGV0IGU9ckIobix0KTtpZihlIT09LTEpcmV0dXJuIGU7bGV0IG89dFtSbl07by5maXJzdENyZWF0ZVBhc3MmJihuLmluamVjdG9ySW5kZXg9dC5sZW5ndGgsJDcoby5kYXRhLG4pLCQ3KHQsbnVsbCksJDcoby5ibHVlcHJpbnQsbnVsbCkpO2xldCBpPUVUKG4sdCksYT1uLmluamVjdG9ySW5kZXg7aWYoJEsoaSkpe2xldCByPV93KGkpLHM9Q3coaSx0KSxsPXNbUm5dLmRhdGE7Zm9yKGxldCBjPTA7Yzw4O2MrKyl0W2ErY109c1tyK2NdfGxbcitjXX1yZXR1cm4gdFthKzhdPWksYX1mdW5jdGlvbiAkNyhuLHQpe24ucHVzaCgwLDAsMCwwLDAsMCwwLDAsdCl9ZnVuY3Rpb24gckIobix0KXtyZXR1cm4gbi5pbmplY3RvckluZGV4PT09LTF8fG4ucGFyZW50JiZuLnBhcmVudC5pbmplY3RvckluZGV4PT09bi5pbmplY3RvckluZGV4fHx0W24uaW5qZWN0b3JJbmRleCs4XT09PW51bGw/LTE6KG5nRGV2TW9kZSYmQXIodCxuLmluamVjdG9ySW5kZXgpLG4uaW5qZWN0b3JJbmRleCl9ZnVuY3Rpb24gRVQobix0KXtpZihuLnBhcmVudCYmbi5wYXJlbnQuaW5qZWN0b3JJbmRleCE9PS0xKXJldHVybiBuLnBhcmVudC5pbmplY3RvckluZGV4O2xldCBlPTAsbz1udWxsLGk9dDtmb3IoO2khPT1udWxsOyl7bGV0IGE9aVtSbl0scj1hLnR5cGU7aWYocj09PTI/KG5nRGV2TW9kZSYmdW4oYS5kZWNsVE5vZGUsIkVtYmVkZGVkIFROb2RlcyBzaG91bGQgaGF2ZSBkZWNsYXJhdGlvbiBwYXJlbnRzLiIpLG89YS5kZWNsVE5vZGUpOnI9PT0xP289aVtZY106KG5nRGV2TW9kZSYmaW8oYS50eXBlLDAsIlJvb3QgdHlwZSBleHBlY3RlZCIpLG89bnVsbCksbz09PW51bGwpcmV0dXJuIG15O2lmKG5nRGV2TW9kZSYmbyYmeXkobyxpW0N5XSksZSsrLGk9aVtDeV0sby5pbmplY3RvckluZGV4IT09LTEpcmV0dXJuIG8uaW5qZWN0b3JJbmRleHxlPDwxNn1yZXR1cm4gbXl9ZnVuY3Rpb24gZVQobix0LGUpe19DdChuLHQsZSl9ZnVuY3Rpb24gQ0N0KG4sdCl7aWYobmdEZXZNb2RlJiZHYyhuLDE1KSxuZ0Rldk1vZGUmJnVuKG4sImV4cGVjdGluZyB0Tm9kZSIpLHQ9PT0iY2xhc3MiKXJldHVybiBuLmNsYXNzZXM7aWYodD09PSJzdHlsZSIpcmV0dXJuIG4uc3R5bGVzO2xldCBlPW4uYXR0cnM7aWYoZSl7bGV0IG89ZS5sZW5ndGgsaT0wO2Zvcig7aTxvOyl7bGV0IGE9ZVtpXTtpZihKSyhhKSlicmVhaztpZihhPT09MClpPWkrMjtlbHNlIGlmKHR5cGVvZiBhPT0ibnVtYmVyIilmb3IoaSsrO2k8byYmdHlwZW9mIGVbaV09PSJzdHJpbmciOylpKys7ZWxzZXtpZihhPT09dClyZXR1cm4gZVtpKzFdO2k9aSsyfX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gbkoobix0LGUpe2lmKGUmTmkuT3B0aW9uYWwpcmV0dXJuIG47SDgodCwiTm9kZUluamVjdG9yIil9ZnVuY3Rpb24gaFEobix0LGUsbyl7aWYoZSZOaS5PcHRpb25hbCYmbz09PXZvaWQgMCYmKG89bnVsbCksKGUmKE5pLlNlbGZ8TmkuSG9zdCkpPT09MCl7bGV0IGk9blttUl0sYT1feSh2b2lkIDApO3RyeXtyZXR1cm4gaT9pLmdldCh0LG8sZSZOaS5PcHRpb25hbCk6dksodCxvLGUmTmkuT3B0aW9uYWwpfWZpbmFsbHl7X3koYSl9fXJldHVybiBuSihvLHQsZSl9ZnVuY3Rpb24gb0oobix0LGUsbz1OaS5EZWZhdWx0LGkpe2lmKG4hPT1udWxsKXtsZXQgYT1PQ3QoZSk7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpe2lmKCFXSyh0LG4sbykpcmV0dXJuIG8mTmkuSG9zdD9uSihpLGUsbyk6aFEodCxlLG8saSk7dHJ5e2xldCByPWEobyk7aWYocj09bnVsbCYmIShvJk5pLk9wdGlvbmFsKSlIOChlKTtlbHNlIHJldHVybiByfWZpbmFsbHl7UUsoKX19ZWxzZSBpZih0eXBlb2YgYT09Im51bWJlciIpe2xldCByPW51bGwscz1yQihuLHQpLGw9bXksYz1vJk5pLkhvc3Q/dFtiZ11bWWNdOm51bGw7Zm9yKChzPT09LTF8fG8mTmkuU2tpcFNlbGYpJiYobD1zPT09LTE/RVQobix0KTp0W3MrOF0sbD09PW15fHwhQ1EobywhMSk/cz0tMToocj10W1JuXSxzPV93KGwpLHQ9Q3cobCx0KSkpO3MhPT0tMTspe25nRGV2TW9kZSYmWjgodCxzKTtsZXQgbT10W1JuXTtpZihuZ0Rldk1vZGUmJnl5KG0uZGF0YVtzKzhdLHQpLF9RKGEscyxtLmRhdGEpKXtsZXQgZj1iQ3Qocyx0LGUscixvLGMpO2lmKGYhPT1pSilyZXR1cm4gZn1sPXRbcys4XSxsIT09bXkmJkNRKG8sdFtSbl0uZGF0YVtzKzhdPT09YykmJl9RKGEscyx0KT8ocj1tLHM9X3cobCksdD1DdyhsLHQpKTpzPS0xfX19cmV0dXJuIGhRKHQsZSxvLGkpfXZhciBpSj17fTtmdW5jdGlvbiBNQ3QoKXtyZXR1cm4gbmV3IGZ5KFRzKCksdmUoKSl9ZnVuY3Rpb24gYkN0KG4sdCxlLG8saSxhKXtsZXQgcj10W1JuXSxzPXIuZGF0YVtuKzhdLGw9bz09bnVsbD9ZOChzKSYmQUw6byE9ciYmKHMudHlwZSYzKSE9PTAsYz1pJk5pLkhvc3QmJmE9PT1zLG09ak4ocyxyLGUsbCxjKTtyZXR1cm4gbSE9PW51bGw/U1IodCxyLG0scyk6aUp9ZnVuY3Rpb24gak4obix0LGUsbyxpKXtsZXQgYT1uLnByb3ZpZGVySW5kZXhlcyxyPXQuZGF0YSxzPWEmMTA0ODU3NSxsPW4uZGlyZWN0aXZlU3RhcnQsYz1uLmRpcmVjdGl2ZUVuZCxtPWE+PjIwLGY9bz9zOnMrbSxwPWk/cyttOmM7Zm9yKGxldCBnPWY7ZzxwO2crKyl7bGV0IF89cltnXTtpZihnPGwmJmU9PT1ffHxnPj1sJiZfLnR5cGU9PT1lKXJldHVybiBnfWlmKGkpe2xldCBnPXJbbF07aWYoZyYmV0MoZykmJmcudHlwZT09PWUpcmV0dXJuIGx9cmV0dXJuIG51bGx9ZnVuY3Rpb24gU1Iobix0LGUsbyl7bGV0IGk9bltlXSxhPXQuZGF0YTtpZihjQ3QoaSkpe2xldCByPWk7ci5yZXNvbHZpbmcmJndMKFZjKGFbZV0pKTtsZXQgcz10VChyLmNhblNlZVZpZXdQcm92aWRlcnMpO3IucmVzb2x2aW5nPSEwO2xldCBsPXIuaW5qZWN0SW1wbD9feShyLmluamVjdEltcGwpOm51bGwsYz1XSyhuLG8sTmkuRGVmYXVsdCk7bmdEZXZNb2RlJiZpbyhjLCEwLCJCZWNhdXNlIGZsYWdzIGRvIG5vdCBjb250YWluIGBTa2lwU2VsZicgd2UgZXhwZWN0IHRoaXMgdG8gYWx3YXlzIHN1Y2NlZWQuIik7dHJ5e2k9bltlXT1yLmZhY3Rvcnkodm9pZCAwLGEsbixvKSx0LmZpcnN0Q3JlYXRlUGFzcyYmZT49by5kaXJlY3RpdmVTdGFydCYmKG5nRGV2TW9kZSYmRDB0KGFbZV0pLHNDdChlLGFbZV0sdCkpfWZpbmFsbHl7bCE9PW51bGwmJl95KGwpLHRUKHMpLHIucmVzb2x2aW5nPSExLFFLKCl9fXJldHVybiBpfWZ1bmN0aW9uIE9DdChuKXtpZihuZ0Rldk1vZGUmJnVuKG4sInRva2VuIG11c3QgYmUgZGVmaW5lZCIpLHR5cGVvZiBuPT0ic3RyaW5nIilyZXR1cm4gbi5jaGFyQ29kZUF0KDApfHwwO2xldCB0PW4uaGFzT3duUHJvcGVydHkoblIpP25bblJdOnZvaWQgMDtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIiP3Q+PTA/dCZ0SjoobmdEZXZNb2RlJiZpbyh0LC0xLCJFeHBlY3RpbmcgdG8gZ2V0IFNwZWNpYWwgSW5qZWN0b3IgSWQiKSxNQ3QpOnR9ZnVuY3Rpb24gX1Eobix0LGUpe2xldCBvPTE8PG47cmV0dXJuISEoZVt0KyhuPj5lSildJm8pfWZ1bmN0aW9uIENRKG4sdCl7cmV0dXJuIShuJk5pLlNlbGYpJiYhKG4mTmkuSG9zdCYmdCl9dmFyIGZ5PWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fdE5vZGU9dCx0aGlzLl9sVmlldz1lfWdldCh0LGUsbyl7cmV0dXJuIG9KKHRoaXMuX3ROb2RlLHRoaXMuX2xWaWV3LHQsbyxlKX19O2Z1bmN0aW9uIEZuKG4pe3JldHVybiBQeSgoKT0+e2xldCB0PW4ucHJvdG90eXBlLmNvbnN0cnVjdG9yLGU9dFtVT118fERMKHQpLG89T2JqZWN0LnByb3RvdHlwZSxpPU9iamVjdC5nZXRQcm90b3R5cGVPZihuLnByb3RvdHlwZSkuY29uc3RydWN0b3I7Zm9yKDtpJiZpIT09bzspe2xldCBhPWlbVU9dfHxETChpKTtpZihhJiZhIT09ZSlyZXR1cm4gYTtpPU9iamVjdC5nZXRQcm90b3R5cGVPZihpKX1yZXR1cm4gYT0+bmV3IGF9KX1mdW5jdGlvbiBETChuKXtyZXR1cm4gT0sobik/KCk9PntsZXQgdD1ETChVbyhuKSk7cmV0dXJuIHQmJnQoKX06bXYobil9ZnVuY3Rpb24gWmEobil7cmV0dXJuIENDdChUcygpLG4pfXZhciBtdz0iX19hbm5vdGF0aW9uc19fIixmdz0iX19wYXJhbWV0ZXJzX18iLHB3PSJfX3Byb3BfX21ldGFkYXRhX18iO2Z1bmN0aW9uIFJSKG4sdCxlLG8saSl7cmV0dXJuIFB5KCgpPT57bGV0IGE9c0IodCk7ZnVuY3Rpb24gciguLi5zKXtpZih0aGlzIGluc3RhbmNlb2YgcilyZXR1cm4gYS5jYWxsKHRoaXMsLi4ucyksdGhpcztsZXQgbD1uZXcgciguLi5zKTtyZXR1cm4gZnVuY3Rpb24obSl7cmV0dXJuIGkmJmkobSwuLi5zKSwobS5oYXNPd25Qcm9wZXJ0eShtdyk/bVttd106T2JqZWN0LmRlZmluZVByb3BlcnR5KG0sbXcse3ZhbHVlOltdfSlbbXddKS5wdXNoKGwpLG8mJm8obSksbX19cmV0dXJuIGUmJihyLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSksci5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9bixyLmFubm90YXRpb25DbHM9cixyfSl9ZnVuY3Rpb24gc0Iobil7cmV0dXJuIGZ1bmN0aW9uKC4uLmUpe2lmKG4pe2xldCBvPW4oLi4uZSk7Zm9yKGxldCBpIGluIG8pdGhpc1tpXT1vW2ldfX19ZnVuY3Rpb24gSXcobix0LGUpe3JldHVybiBQeSgoKT0+e2xldCBvPXNCKHQpO2Z1bmN0aW9uIGkoLi4uYSl7aWYodGhpcyBpbnN0YW5jZW9mIGkpcmV0dXJuIG8uYXBwbHkodGhpcyxhKSx0aGlzO2xldCByPW5ldyBpKC4uLmEpO3JldHVybiBzLmFubm90YXRpb249cixzO2Z1bmN0aW9uIHMobCxjLG0pe2xldCBmPWwuaGFzT3duUHJvcGVydHkoZncpP2xbZnddOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShsLGZ3LHt2YWx1ZTpbXX0pW2Z3XTtmb3IoO2YubGVuZ3RoPD1tOylmLnB1c2gobnVsbCk7cmV0dXJuKGZbbV09ZlttXXx8W10pLnB1c2gociksbH19cmV0dXJuIGUmJihpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSksaS5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9bixpLmFubm90YXRpb25DbHM9aSxpfSl9ZnVuY3Rpb24geHkobix0LGUsbyl7cmV0dXJuIFB5KCgpPT57bGV0IGk9c0IodCk7ZnVuY3Rpb24gYSguLi5yKXtpZih0aGlzIGluc3RhbmNlb2YgYSlyZXR1cm4gaS5hcHBseSh0aGlzLHIpLHRoaXM7bGV0IHM9bmV3IGEoLi4ucik7ZnVuY3Rpb24gbChjLG0pe2xldCBmPWMuY29uc3RydWN0b3IscD1mLmhhc093blByb3BlcnR5KHB3KT9mW3B3XTpPYmplY3QuZGVmaW5lUHJvcGVydHkoZixwdyx7dmFsdWU6e319KVtwd107cFttXT1wLmhhc093blByb3BlcnR5KG0pJiZwW21dfHxbXSxwW21dLnVuc2hpZnQocyksbyYmbyhjLG0sLi4ucil9cmV0dXJuIGx9cmV0dXJuIGUmJihhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlKSksYS5wcm90b3R5cGUubmdNZXRhZGF0YU5hbWU9bixhLmFubm90YXRpb25DbHM9YSxhfSl9ZnVuY3Rpb24gUEN0KCl7cmV0dXJuIEl3KCJBdHRyaWJ1dGUiLG49Pih7YXR0cmlidXRlTmFtZTpuLF9fTkdfRUxFTUVOVF9JRF9fOigpPT5aYShuKX0pKX12YXIgeUN0PVBDdCxsaT15Q3QoKTt2YXIgeXQ9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9kZXNjPXQsdGhpcy5uZ01ldGFkYXRhTmFtZT0iSW5qZWN0aW9uVG9rZW4iLHRoaXMuXHUwMjc1cHJvdj12b2lkIDAsdHlwZW9mIGU9PSJudW1iZXIiPygodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJmh5KGUsMCwiT25seSBuZWdhdGl2ZSBudW1iZXJzIGFyZSBzdXBwb3J0ZWQgaGVyZSIpLHRoaXMuX19OR19FTEVNRU5UX0lEX189ZSk6ZSE9PXZvaWQgMCYmKHRoaXMuXHUwMjc1cHJvdj1QdCh7dG9rZW46dGhpcyxwcm92aWRlZEluOmUucHJvdmlkZWRJbnx8InJvb3QiLGZhY3Rvcnk6ZS5mYWN0b3J5fSkpfXRvU3RyaW5nKCl7cmV0dXJuYEluamVjdGlvblRva2VuICR7dGhpcy5fZGVzY31gfX07dmFyIFpzZT1uZXcgeXQoIkFuYWx5emVGb3JFbnRyeUNvbXBvbmVudHMiKSxhSj0hMCxNdz1jbGFzc3t9LHhDdD0obix0PXt9KT0+T2JqZWN0LmFzc2lnbih7c2VsZWN0b3I6bixmaXJzdDohMSxpc1ZpZXdRdWVyeTohMSxkZXNjZW5kYW50czohMSxlbWl0RGlzdGluY3RDaGFuZ2VzT25seTphSn0sdCksbG89eHkoIkNvbnRlbnRDaGlsZHJlbiIseEN0LE13KSx2Q3Q9KG4sdD17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOm4sZmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITEsZGVzY2VuZGFudHM6ITB9LHQpLEtvPXh5KCJDb250ZW50Q2hpbGQiLHZDdCxNdyksd0N0PShuLHQ9e30pPT5PYmplY3QuYXNzaWduKHtzZWxlY3RvcjpuLGZpcnN0OiExLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwLGVtaXREaXN0aW5jdENoYW5nZXNPbmx5OmFKfSx0KSxYc2U9eHkoIlZpZXdDaGlsZHJlbiIsd0N0LE13KSxTQ3Q9KG4sdCk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOm4sZmlyc3Q6ITAsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITB9LHQpLEl0PXh5KCJWaWV3Q2hpbGQiLFNDdCxNdyk7dmFyIE1ROyhmdW5jdGlvbihuKXtuW24uRGlyZWN0aXZlPTBdPSJEaXJlY3RpdmUiLG5bbi5Db21wb25lbnQ9MV09IkNvbXBvbmVudCIsbltuLkluamVjdGFibGU9Ml09IkluamVjdGFibGUiLG5bbi5QaXBlPTNdPSJQaXBlIixuW24uTmdNb2R1bGU9NF09Ik5nTW9kdWxlIn0pKE1RfHwoTVE9e30pKTt2YXIgYlE7KGZ1bmN0aW9uKG4pe25bbi5FbXVsYXRlZD0wXT0iRW11bGF0ZWQiLG5bbi5Ob25lPTJdPSJOb25lIixuW24uU2hhZG93RG9tPTNdPSJTaGFkb3dEb20ifSkoYlF8fChiUT17fSkpO2Z1bmN0aW9uIHJfKG4pe2xldCB0PU1pLm5nO2lmKHQmJnQuXHUwMjc1Y29tcGlsZXJGYWNhZGUpcmV0dXJuIHQuXHUwMjc1Y29tcGlsZXJGYWNhZGU7aWYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSl7Y29uc29sZS5lcnJvcihgSklUIGNvbXBpbGF0aW9uIGZhaWxlZCBmb3IgJHtuLmtpbmR9YCxuLnR5cGUpO2xldCBlPWBUaGUgJHtuLmtpbmR9ICcke24udHlwZS5uYW1lfScgbmVlZHMgdG8gYmUgY29tcGlsZWQgdXNpbmcgdGhlIEpJVCBjb21waWxlciwgYnV0ICdAYW5ndWxhci9jb21waWxlcicgaXMgbm90IGF2YWlsYWJsZS4KCmA7dGhyb3cgbi51c2FnZT09PTE/KGUrPWBUaGUgJHtuLmtpbmR9IGlzIHBhcnQgb2YgYSBsaWJyYXJ5IHRoYXQgaGFzIGJlZW4gcGFydGlhbGx5IGNvbXBpbGVkLgpgLGUrPWBIb3dldmVyLCB0aGUgQW5ndWxhciBMaW5rZXIgaGFzIG5vdCBwcm9jZXNzZWQgdGhlIGxpYnJhcnkgc3VjaCB0aGF0IEpJVCBjb21waWxhdGlvbiBpcyB1c2VkIGFzIGZhbGxiYWNrLgpgLGUrPWAKYCxlKz1gSWRlYWxseSwgdGhlIGxpYnJhcnkgaXMgcHJvY2Vzc2VkIHVzaW5nIHRoZSBBbmd1bGFyIExpbmtlciB0byBiZWNvbWUgZnVsbHkgQU9UIGNvbXBpbGVkLgpgKTplKz1gSklUIGNvbXBpbGF0aW9uIGlzIGRpc2NvdXJhZ2VkIGZvciBwcm9kdWN0aW9uIHVzZS1jYXNlcyEgQ29uc2lkZXIgdXNpbmcgQU9UIG1vZGUgaW5zdGVhZC4KYCxlKz1gQWx0ZXJuYXRpdmVseSwgdGhlIEpJVCBjb21waWxlciBzaG91bGQgYmUgbG9hZGVkIGJ5IGJvb3RzdHJhcHBpbmcgdXNpbmcgJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYycgb3IgJ0Bhbmd1bGFyL3BsYXRmb3JtLXNlcnZlcicsCmAsZSs9YG9yIG1hbnVhbGx5IHByb3ZpZGUgdGhlIGNvbXBpbGVyIHdpdGggJ2ltcG9ydCAiQGFuZ3VsYXIvY29tcGlsZXIiOycgYmVmb3JlIGJvb3RzdHJhcHBpbmcuYCxuZXcgRXJyb3IoZSl9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkpJVCBjb21waWxlciB1bmF2YWlsYWJsZSIpfXZhciBYQz1GdW5jdGlvbjtmdW5jdGlvbiBrTihuKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gUkN0KG4sdCxlKXtpZihuLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtsZXQgaT1uW29dLGE9dFtvXTtpZihlJiYoaT1lKGkpLGE9ZShhKSksYSE9PWkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gaV8obix0KXt0PT09dm9pZCAwJiYodD1uKTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7bGV0IG89bltlXTtBcnJheS5pc0FycmF5KG8pPyh0PT09biYmKHQ9bi5zbGljZSgwLGUpKSxpXyhvLHQpKTp0IT09biYmdC5wdXNoKG8pfXJldHVybiB0fWZ1bmN0aW9uIF9iKG4sdCl7bi5mb3JFYWNoKGU9PkFycmF5LmlzQXJyYXkoZSk/X2IoZSx0KTp0KGUpKX1mdW5jdGlvbiBySihuLHQsZSl7dD49bi5sZW5ndGg/bi5wdXNoKGUpOm4uc3BsaWNlKHQsMCxlKX1mdW5jdGlvbiBuVChuLHQpe3JldHVybiB0Pj1uLmxlbmd0aC0xP24ucG9wKCk6bi5zcGxpY2UodCwxKVswXX1mdW5jdGlvbiBvUihuLHQpe2xldCBlPVtdO2ZvcihsZXQgbz0wO288bjtvKyspZS5wdXNoKHQpO3JldHVybiBlfWZ1bmN0aW9uIEVDdChuLHQsZSxvKXtuZ0Rldk1vZGUmJnlLKHQsbi5sZW5ndGgsIkNhbid0IGluc2VydCBwYXN0IGFycmF5IGVuZC4iKTtsZXQgaT1uLmxlbmd0aDtpZihpPT10KW4ucHVzaChlLG8pO2Vsc2UgaWYoaT09PTEpbi5wdXNoKG8sblswXSksblswXT1lO2Vsc2V7Zm9yKGktLSxuLnB1c2gobltpLTFdLG5baV0pO2k+dDspe2xldCBhPWktMjtuW2ldPW5bYV0saS0tfW5bdF09ZSxuW3QrMV09b319ZnVuY3Rpb24geGcobix0LGUpe2xldCBvPUVSKG4sdCk7cmV0dXJuIG8+PTA/bltvfDFdPWU6KG89fm8sRUN0KG4sbyx0LGUpKSxvfWZ1bmN0aW9uIHRMKG4sdCl7bGV0IGU9RVIobix0KTtpZihlPj0wKXJldHVybiBuW2V8MV19ZnVuY3Rpb24gRVIobix0KXtyZXR1cm4ga0N0KG4sdCwxKX1mdW5jdGlvbiBrQ3Qobix0LGUpe25nRGV2TW9kZSYmaW8oQXJyYXkuaXNBcnJheShuKSwhMCwiRXhwZWN0aW5nIGFuIGFycmF5Iik7bGV0IG89MCxpPW4ubGVuZ3RoPj5lO2Zvcig7aSE9PW87KXtsZXQgYT1vKyhpLW8+PjEpLHI9blthPDxlXTtpZih0PT09cilyZXR1cm4gYTw8ZTtyPnQ/aT1hOm89YSsxfXJldHVybn4oaTw8ZSl9dmFyIE5DdD0vXmZ1bmN0aW9uXHMrXFMrXChcKVxzKntbXHNcU10rXC5hcHBseVwodGhpcyxccyooYXJndW1lbnRzfCg/OlteKCldK1woXFtcXSwpP1teKCldK1woYXJndW1lbnRzXCkpXCkvLFRDdD0vXmNsYXNzXHMrW0EtWmEtelxkJF9dKlxzKmV4dGVuZHNccytbXntdK3svLEFDdD0vXmNsYXNzXHMrW0EtWmEtelxkJF9dKlxzKmV4dGVuZHNccytbXntdK3tbXHNcU10qY29uc3RydWN0b3JccypcKC8sREN0PS9eY2xhc3NccytbQS1aYS16XGQkX10qXHMqZXh0ZW5kc1xzK1tee10re1tcc1xTXSpjb25zdHJ1Y3RvclxzKlwoXClccyp7XHMqc3VwZXJcKFwuXC5cLmFyZ3VtZW50c1wpLztmdW5jdGlvbiBJQ3Qobil7cmV0dXJuIE5DdC50ZXN0KG4pfHxEQ3QudGVzdChuKXx8VEN0LnRlc3QobikmJiFBQ3QudGVzdChuKX12YXIgb1Q9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVmbGVjdD10fHxNaS5SZWZsZWN0fWlzUmVmbGVjdGlvbkVuYWJsZWQoKXtyZXR1cm4hMH1mYWN0b3J5KHQpe3JldHVybiguLi5lKT0+bmV3IHQoLi4uZSl9X3ppcFR5cGVzQW5kQW5ub3RhdGlvbnModCxlKXtsZXQgbzt0eXBlb2YgdD09InVuZGVmaW5lZCI/bz1vUihlLmxlbmd0aCk6bz1vUih0Lmxlbmd0aCk7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspdHlwZW9mIHQ9PSJ1bmRlZmluZWQiP29baV09W106dFtpXSYmdFtpXSE9T2JqZWN0P29baV09W3RbaV1dOm9baV09W10sZSYmZVtpXSE9bnVsbCYmKG9baV09b1tpXS5jb25jYXQoZVtpXSkpO3JldHVybiBvfV9vd25QYXJhbWV0ZXJzKHQsZSl7bGV0IG89dC50b1N0cmluZygpO2lmKElDdChvKSlyZXR1cm4gbnVsbDtpZih0LnBhcmFtZXRlcnMmJnQucGFyYW1ldGVycyE9PWUucGFyYW1ldGVycylyZXR1cm4gdC5wYXJhbWV0ZXJzO2xldCBpPXQuY3RvclBhcmFtZXRlcnM7aWYoaSYmaSE9PWUuY3RvclBhcmFtZXRlcnMpe2xldCBzPXR5cGVvZiBpPT0iZnVuY3Rpb24iP2koKTppLGw9cy5tYXAobT0+bSYmbS50eXBlKSxjPXMubWFwKG09Pm0mJmVMKG0uZGVjb3JhdG9ycykpO3JldHVybiB0aGlzLl96aXBUeXBlc0FuZEFubm90YXRpb25zKGwsYyl9bGV0IGE9dC5oYXNPd25Qcm9wZXJ0eShmdykmJnRbZnddLHI9dGhpcy5fcmVmbGVjdCYmdGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSYmdGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSgiZGVzaWduOnBhcmFtdHlwZXMiLHQpO3JldHVybiByfHxhP3RoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMocixhKTpvUih0Lmxlbmd0aCl9cGFyYW1ldGVycyh0KXtpZigha04odCkpcmV0dXJuW107bGV0IGU9Tk4odCksbz10aGlzLl9vd25QYXJhbWV0ZXJzKHQsZSk7cmV0dXJuIW8mJmUhPT1PYmplY3QmJihvPXRoaXMucGFyYW1ldGVycyhlKSksb3x8W119X293bkFubm90YXRpb25zKHQsZSl7aWYodC5hbm5vdGF0aW9ucyYmdC5hbm5vdGF0aW9ucyE9PWUuYW5ub3RhdGlvbnMpe2xldCBvPXQuYW5ub3RhdGlvbnM7cmV0dXJuIHR5cGVvZiBvPT0iZnVuY3Rpb24iJiZvLmFubm90YXRpb25zJiYobz1vLmFubm90YXRpb25zKSxvfXJldHVybiB0LmRlY29yYXRvcnMmJnQuZGVjb3JhdG9ycyE9PWUuZGVjb3JhdG9ycz9lTCh0LmRlY29yYXRvcnMpOnQuaGFzT3duUHJvcGVydHkobXcpP3RbbXddOm51bGx9YW5ub3RhdGlvbnModCl7aWYoIWtOKHQpKXJldHVybltdO2xldCBlPU5OKHQpLG89dGhpcy5fb3duQW5ub3RhdGlvbnModCxlKXx8W107cmV0dXJuKGUhPT1PYmplY3Q/dGhpcy5hbm5vdGF0aW9ucyhlKTpbXSkuY29uY2F0KG8pfV9vd25Qcm9wTWV0YWRhdGEodCxlKXtpZih0LnByb3BNZXRhZGF0YSYmdC5wcm9wTWV0YWRhdGEhPT1lLnByb3BNZXRhZGF0YSl7bGV0IG89dC5wcm9wTWV0YWRhdGE7cmV0dXJuIHR5cGVvZiBvPT0iZnVuY3Rpb24iJiZvLnByb3BNZXRhZGF0YSYmKG89by5wcm9wTWV0YWRhdGEpLG99aWYodC5wcm9wRGVjb3JhdG9ycyYmdC5wcm9wRGVjb3JhdG9ycyE9PWUucHJvcERlY29yYXRvcnMpe2xldCBvPXQucHJvcERlY29yYXRvcnMsaT17fTtyZXR1cm4gT2JqZWN0LmtleXMobykuZm9yRWFjaChhPT57aVthXT1lTChvW2FdKX0pLGl9cmV0dXJuIHQuaGFzT3duUHJvcGVydHkocHcpP3RbcHddOm51bGx9cHJvcE1ldGFkYXRhKHQpe2lmKCFrTih0KSlyZXR1cm57fTtsZXQgZT1OTih0KSxvPXt9O2lmKGUhPT1PYmplY3Qpe2xldCBhPXRoaXMucHJvcE1ldGFkYXRhKGUpO09iamVjdC5rZXlzKGEpLmZvckVhY2gocj0+e29bcl09YVtyXX0pfWxldCBpPXRoaXMuX293blByb3BNZXRhZGF0YSh0LGUpO3JldHVybiBpJiZPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGE9PntsZXQgcj1bXTtvLmhhc093blByb3BlcnR5KGEpJiZyLnB1c2goLi4ub1thXSksci5wdXNoKC4uLmlbYV0pLG9bYV09cn0pLG99b3duUHJvcE1ldGFkYXRhKHQpe3JldHVybiBrTih0KT90aGlzLl9vd25Qcm9wTWV0YWRhdGEodCxOTih0KSl8fHt9Ont9fWhhc0xpZmVjeWNsZUhvb2sodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIFhDJiZlIGluIHQucHJvdG90eXBlfWd1YXJkcyh0KXtyZXR1cm57fX1nZXR0ZXIodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsInJldHVybiBvLiIrdCsiOyIpfXNldHRlcih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwidiIsInJldHVybiBvLiIrdCsiID0gdjsiKX1tZXRob2QodCl7bGV0IGU9YGlmICghby4ke3R9KSB0aHJvdyBuZXcgRXJyb3IoJyIke3R9IiBpcyB1bmRlZmluZWQnKTsKICAgICAgICByZXR1cm4gby4ke3R9LmFwcGx5KG8sIGFyZ3MpO2A7cmV0dXJuIG5ldyBGdW5jdGlvbigibyIsImFyZ3MiLGUpfWltcG9ydFVyaSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZ0LmZpbGVQYXRoP3QuZmlsZVBhdGg6YC4vJHtPbyh0KX1gfXJlc291cmNlVXJpKHQpe3JldHVybmAuLyR7T28odCl9YH1yZXNvbHZlSWRlbnRpZmllcih0LGUsbyxpKXtyZXR1cm4gaX1yZXNvbHZlRW51bSh0LGUpe3JldHVybiB0W2VdfX07ZnVuY3Rpb24gZUwobil7cmV0dXJuIG4/bi5tYXAodD0+e2xldCBvPXQudHlwZS5hbm5vdGF0aW9uQ2xzLGk9dC5hcmdzP3QuYXJnczpbXTtyZXR1cm4gbmV3IG8oLi4uaSl9KTpbXX1mdW5jdGlvbiBOTihuKXtsZXQgdD1uLnByb3RvdHlwZT9PYmplY3QuZ2V0UHJvdG90eXBlT2Yobi5wcm90b3R5cGUpOm51bGw7cmV0dXJuKHQ/dC5jb25zdHJ1Y3RvcjpudWxsKXx8T2JqZWN0fXZhciB6Q3Q9e30scHk9ekN0LElMPSJfX05HX0RJX0ZMQUdfXyIsaVQ9Im5nVGVtcFRva2VuUGF0aCIsSEN0PSJuZ1Rva2VuUGF0aCIsRkN0PS9cbi9nbSxMQ3Q9Ilx1MDI3NSIsT1E9Il9fc291cmNlIixCQ3Q9RmksVkN0PUZpKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpCQ3R9KSxpUjtmdW5jdGlvbiBQUShuKXtsZXQgdD1pUjtyZXR1cm4gaVI9bix0fWZ1bmN0aW9uIGpDdChuLHQ9TmkuRGVmYXVsdCl7aWYoaVI9PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJpbmplY3QoKSBtdXN0IGJlIGNhbGxlZCBmcm9tIGFuIGluamVjdGlvbiBjb250ZXh0Iik7cmV0dXJuIGlSPT09bnVsbD92SyhuLHZvaWQgMCx0KTppUi5nZXQobix0Jk5pLk9wdGlvbmFsP251bGw6dm9pZCAwLHQpfWZ1bmN0aW9uIEkobix0PU5pLkRlZmF1bHQpe3JldHVybihfMHQoKXx8akN0KShVbyhuKSx0KX1mdW5jdGlvbiBzSihuKXtsZXQgdD1uZ0Rldk1vZGU/YFRoaXMgY29uc3RydWN0b3IgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBBbmd1bGFyIERlcGVuZGVuY3kgSW5qZWN0aW9uIGJlY2F1c2UgaXRzIGRlcGVuZGVuY3kgYXQgaW5kZXggJHtufSBvZiB0aGUgcGFyYW1ldGVyIGxpc3QgaXMgaW52YWxpZC4KVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBkZXBlbmRlbmN5IHR5cGUgaXMgYSBwcmltaXRpdmUgbGlrZSBhIHN0cmluZyBvciBpZiBhbiBhbmNlc3RvciBvZiB0aGlzIGNsYXNzIGlzIG1pc3NpbmcgYW4gQW5ndWxhciBkZWNvcmF0b3IuCgpQbGVhc2UgY2hlY2sgdGhhdCAxKSB0aGUgdHlwZSBmb3IgdGhlIHBhcmFtZXRlciBhdCBpbmRleCAke259IGlzIGNvcnJlY3QgYW5kIDIpIHRoZSBjb3JyZWN0IEFuZ3VsYXIgZGVjb3JhdG9ycyBhcmUgZGVmaW5lZCBmb3IgdGhpcyBjbGFzcyBhbmQgaXRzIGFuY2VzdG9ycy5gOiJpbnZhbGlkIjt0aHJvdyBuZXcgRXJyb3IodCl9dmFyIHp3PUk7ZnVuY3Rpb24gekwobil7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2xldCBvPVVvKG5bZV0pO2lmKEFycmF5LmlzQXJyYXkobykpe2lmKG8ubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoIkFyZ3VtZW50cyBhcnJheSBtdXN0IGhhdmUgYXJndW1lbnRzLiIpO2xldCBpLGE9TmkuRGVmYXVsdDtmb3IobGV0IHI9MDtyPG8ubGVuZ3RoO3IrKyl7bGV0IHM9b1tyXSxsPVVDdChzKTt0eXBlb2YgbD09Im51bWJlciI/bD09PS0xP2k9cy50b2tlbjphfD1sOmk9c310LnB1c2goSShpLGEpKX1lbHNlIHQucHVzaChJKG8pKX1yZXR1cm4gdH1mdW5jdGlvbiBrUihuLHQpe3JldHVybiBuW0lMXT10LG4ucHJvdG90eXBlW0lMXT10LG59ZnVuY3Rpb24gVUN0KG4pe3JldHVybiBuW0lMXX1mdW5jdGlvbiBZQ3Qobix0LGUsbyl7bGV0IGk9bltpVF07dGhyb3cgdFtPUV0mJmkudW5zaGlmdCh0W09RXSksbi5tZXNzYWdlPUdDdChgCmArbi5tZXNzYWdlLGksZSxvKSxuW0hDdF09aSxuW2lUXT1udWxsLG59ZnVuY3Rpb24gR0N0KG4sdCxlLG89bnVsbCl7bj1uJiZuLmNoYXJBdCgwKT09PWAKYCYmbi5jaGFyQXQoMSk9PUxDdD9uLnN1YnN0cigyKTpuO2xldCBpPU9vKHQpO2lmKEFycmF5LmlzQXJyYXkodCkpaT10Lm1hcChPbykuam9pbigiIC0+ICIpO2Vsc2UgaWYodHlwZW9mIHQ9PSJvYmplY3QiKXtsZXQgYT1bXTtmb3IobGV0IHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXtsZXQgcz10W3JdO2EucHVzaChyKyI6IisodHlwZW9mIHM9PSJzdHJpbmciP0pTT04uc3RyaW5naWZ5KHMpOk9vKHMpKSl9aT1geyR7YS5qb2luKCIsICIpfX1gfXJldHVybmAke2V9JHtvPyIoIitvKyIpIjoiIn1bJHtpfV06ICR7bi5yZXBsYWNlKEZDdCxgCiAgYCl9YH12YXIgV0N0PW49Pih7dG9rZW46bn0pLE49a1IoSXcoIkluamVjdCIsV0N0KSwtMSksSD1rUihJdygiT3B0aW9uYWwiKSw4KSxJbj1rUihJdygiU2VsZiIpLDIpLFlvPWtSKEl3KCJTa2lwU2VsZiIpLDQpLHphPWtSKEl3KCJIb3N0IiksMSk7dmFyIHlRPW51bGw7ZnVuY3Rpb24gbEIoKXtyZXR1cm4geVE9eVF8fG5ldyBvVH1mdW5jdGlvbiBrVChuKXtyZXR1cm4gbEoobEIoKS5wYXJhbWV0ZXJzKG4pKX1mdW5jdGlvbiBsSihuKXtyZXR1cm4gbi5tYXAodD0+cUN0KHQpKX1mdW5jdGlvbiBxQ3Qobil7bGV0IHQ9e3Rva2VuOm51bGwsYXR0cmlidXRlOm51bGwsaG9zdDohMSxvcHRpb25hbDohMSxzZWxmOiExLHNraXBTZWxmOiExfTtpZihBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aD4wKWZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtsZXQgbz1uW2VdO2lmKG89PT12b2lkIDApY29udGludWU7bGV0IGk9T2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO2lmKG8gaW5zdGFuY2VvZiBIfHxpLm5nTWV0YWRhdGFOYW1lPT09Ik9wdGlvbmFsIil0Lm9wdGlvbmFsPSEwO2Vsc2UgaWYobyBpbnN0YW5jZW9mIFlvfHxpLm5nTWV0YWRhdGFOYW1lPT09IlNraXBTZWxmIil0LnNraXBTZWxmPSEwO2Vsc2UgaWYobyBpbnN0YW5jZW9mIElufHxpLm5nTWV0YWRhdGFOYW1lPT09IlNlbGYiKXQuc2VsZj0hMDtlbHNlIGlmKG8gaW5zdGFuY2VvZiB6YXx8aS5uZ01ldGFkYXRhTmFtZT09PSJIb3N0Iil0Lmhvc3Q9ITA7ZWxzZSBpZihvIGluc3RhbmNlb2YgTil0LnRva2VuPW8udG9rZW47ZWxzZSBpZihvIGluc3RhbmNlb2YgbGkpe2lmKG8uYXR0cmlidXRlTmFtZT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkF0dHJpYnV0ZSBuYW1lIG11c3QgYmUgZGVmaW5lZC4iKTt0LmF0dHJpYnV0ZT1vLmF0dHJpYnV0ZU5hbWV9ZWxzZSB0LnRva2VuPW99ZWxzZSBuPT09dm9pZCAwfHxBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aD09PTA/dC50b2tlbj1udWxsOnQudG9rZW49bjtyZXR1cm4gdH1mdW5jdGlvbiBaQ3Qobil7bGV0IHQ9W10sZT1uZXcgTWFwO2Z1bmN0aW9uIG8oaSl7bGV0IGE9ZS5nZXQoaSk7aWYoIWEpe2xldCByPW4oaSk7ZS5zZXQoaSxhPXIudGhlbihKQ3QpKX1yZXR1cm4gYX1yZXR1cm4gZ1IuZm9yRWFjaCgoaSxhKT0+e2xldCByPVtdO2kudGVtcGxhdGVVcmwmJnIucHVzaChvKGkudGVtcGxhdGVVcmwpLnRoZW4oZj0+e2kudGVtcGxhdGU9Zn0pKTtsZXQgcz1pLnN0eWxlVXJscyxsPWkuc3R5bGVzfHwoaS5zdHlsZXM9W10pLGM9aS5zdHlsZXMubGVuZ3RoO3MmJnMuZm9yRWFjaCgoZixwKT0+e2wucHVzaCgiIiksci5wdXNoKG8oZikudGhlbihnPT57bFtjK3BdPWcscy5zcGxpY2Uocy5pbmRleE9mKGYpLDEpLHMubGVuZ3RoPT0wJiYoaS5zdHlsZVVybHM9dm9pZCAwKX0pKX0pO2xldCBtPVByb21pc2UuYWxsKHIpLnRoZW4oKCk9PiRDdChhKSk7dC5wdXNoKG0pfSksUUN0KCksUHJvbWlzZS5hbGwodCkudGhlbigoKT0+e30pfXZhciBnUj1uZXcgTWFwLGNKPW5ldyBTZXQ7ZnVuY3Rpb24gWEN0KG4sdCl7bUoodCkmJihnUi5zZXQobix0KSxjSi5hZGQobikpfWZ1bmN0aW9uIG1KKG4pe3JldHVybiEhKG4udGVtcGxhdGVVcmwmJiFuLmhhc093blByb3BlcnR5KCJ0ZW1wbGF0ZSIpfHxuLnN0eWxlVXJscyYmbi5zdHlsZVVybHMubGVuZ3RoKX1mdW5jdGlvbiBRQ3QoKXtsZXQgbj1nUjtyZXR1cm4gZ1I9bmV3IE1hcCxufWZ1bmN0aW9uIEtDdCgpe3JldHVybiBnUi5zaXplPT09MH1mdW5jdGlvbiBKQ3Qobil7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj9uOm4udGV4dCgpfWZ1bmN0aW9uICRDdChuKXtjSi5kZWxldGUobil9dmFyIFROO2Z1bmN0aW9uIGNCKCl7aWYoVE49PT12b2lkIDAmJihUTj1udWxsLE1pLnRydXN0ZWRUeXBlcykpdHJ5e1ROPU1pLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIiLHtjcmVhdGVIVE1MOm49Pm4sY3JlYXRlU2NyaXB0Om49Pm4sY3JlYXRlU2NyaXB0VVJMOm49Pm59KX1jYXRjaChuKXt9cmV0dXJuIFROfWZ1bmN0aW9uIGJ3KG4pe3ZhciB0O3JldHVybigodD1jQigpKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuY3JlYXRlSFRNTChuKSl8fG59ZnVuY3Rpb24gdE10KG4pe3ZhciB0O3JldHVybigodD1jQigpKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuY3JlYXRlU2NyaXB0KG4pKXx8bn1mdW5jdGlvbiBlTXQobil7dmFyIHQ7cmV0dXJuKCh0PWNCKCkpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5jcmVhdGVTY3JpcHRVUkwobikpfHxufWZ1bmN0aW9uIG5NdCguLi5uKXtpZih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkIil0aHJvdyBuZXcgRXJyb3IoIm5ld1RydXN0ZWRGdW5jdGlvbkZvckRldiBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHByb2R1Y3Rpb24iKTtpZighTWkudHJ1c3RlZFR5cGVzKXJldHVybiBuZXcgRnVuY3Rpb24oLi4ubik7bGV0IHQ9bi5zbGljZSgwLC0xKS5qb2luKCIsIiksZT1uW24ubGVuZ3RoLTFdLG89YChmdW5jdGlvbiBhbm9ueW1vdXMoJHt0fQopIHsgJHtlfQp9KWAsaT1NaS5ldmFsKHRNdChvKSk7cmV0dXJuIGkuYmluZD09PXZvaWQgMD9uZXcgRnVuY3Rpb24oLi4ubik6KGkudG9TdHJpbmc9KCk9Pm8saS5iaW5kKE1pKSl9dmFyIEFOO2Z1bmN0aW9uIG1CKCl7aWYoQU49PT12b2lkIDAmJihBTj1udWxsLE1pLnRydXN0ZWRUeXBlcykpdHJ5e0FOPU1pLnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImFuZ3VsYXIjdW5zYWZlLWJ5cGFzcyIse2NyZWF0ZUhUTUw6bj0+bixjcmVhdGVTY3JpcHQ6bj0+bixjcmVhdGVTY3JpcHRVUkw6bj0+bn0pfWNhdGNoKG4pe31yZXR1cm4gQU59ZnVuY3Rpb24geFEobil7dmFyIHQ7cmV0dXJuKCh0PW1CKCkpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5jcmVhdGVIVE1MKG4pKXx8bn1mdW5jdGlvbiB2UShuKXt2YXIgdDtyZXR1cm4oKHQ9bUIoKSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LmNyZWF0ZVNjcmlwdChuKSl8fG59ZnVuY3Rpb24gd1Eobil7dmFyIHQ7cmV0dXJuKCh0PW1CKCkpPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5jcmVhdGVTY3JpcHRVUkwobikpfHxufXZhciBZTz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk9dH10b1N0cmluZygpe3JldHVybmBTYWZlVmFsdWUgbXVzdCB1c2UgW3Byb3BlcnR5XT1iaW5kaW5nOiAke3RoaXMuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eX0gKHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWB9fSxITD1jbGFzcyBleHRlbmRzIFlPe2dldFR5cGVOYW1lKCl7cmV0dXJuIkhUTUwifX0sRkw9Y2xhc3MgZXh0ZW5kcyBZT3tnZXRUeXBlTmFtZSgpe3JldHVybiJTdHlsZSJ9fSxMTD1jbGFzcyBleHRlbmRzIFlPe2dldFR5cGVOYW1lKCl7cmV0dXJuIlNjcmlwdCJ9fSxCTD1jbGFzcyBleHRlbmRzIFlPe2dldFR5cGVOYW1lKCl7cmV0dXJuIlVSTCJ9fSxWTD1jbGFzcyBleHRlbmRzIFlPe2dldFR5cGVOYW1lKCl7cmV0dXJuIlJlc291cmNlVVJMIn19O2Z1bmN0aW9uIEdmKG4pe3JldHVybiBuIGluc3RhbmNlb2YgWU8/bi5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5Om59ZnVuY3Rpb24gUUMobix0KXtsZXQgZT1mQihuKTtpZihlIT1udWxsJiZlIT09dCl7aWYoZT09PSJSZXNvdXJjZVVSTCImJnQ9PT0iVVJMIilyZXR1cm4hMDt0aHJvdyBuZXcgRXJyb3IoYFJlcXVpcmVkIGEgc2FmZSAke3R9LCBnb3QgYSAke2V9IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKX1yZXR1cm4gZT09PXR9ZnVuY3Rpb24gZkIobil7cmV0dXJuIG4gaW5zdGFuY2VvZiBZTyYmbi5nZXRUeXBlTmFtZSgpfHxudWxsfWZ1bmN0aW9uIGZKKG4pe3JldHVybiBuZXcgSEwobil9ZnVuY3Rpb24gcEoobil7cmV0dXJuIG5ldyBGTChuKX1mdW5jdGlvbiBkSihuKXtyZXR1cm4gbmV3IExMKG4pfWZ1bmN0aW9uIGdKKG4pe3JldHVybiBuZXcgQkwobil9ZnVuY3Rpb24gdUoobil7cmV0dXJuIG5ldyBWTChuKX1mdW5jdGlvbiBoSihuKXtsZXQgdD1uZXcgVUwobik7cmV0dXJuIG9NdCgpP25ldyBqTCh0KTp0fXZhciBqTD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmluZXJ0RG9jdW1lbnRIZWxwZXI9dH1nZXRJbmVydEJvZHlFbGVtZW50KHQpe3Q9Ijxib2R5PjxyZW1vdmU+PC9yZW1vdmU+Iit0O3RyeXtsZXQgZT1uZXcgd2luZG93LkRPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhidyh0KSwidGV4dC9odG1sIikuYm9keTtyZXR1cm4gZT09PW51bGw/dGhpcy5pbmVydERvY3VtZW50SGVscGVyLmdldEluZXJ0Qm9keUVsZW1lbnQodCk6KGUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKSxlKX1jYXRjaChlKXtyZXR1cm4gbnVsbH19fSxVTD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLmRlZmF1bHREb2M9dCx0aGlzLmluZXJ0RG9jdW1lbnQ9dGhpcy5kZWZhdWx0RG9jLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgic2FuaXRpemF0aW9uLWluZXJ0IiksdGhpcy5pbmVydERvY3VtZW50LmJvZHk9PW51bGwpe2xldCBlPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJodG1sIik7dGhpcy5pbmVydERvY3VtZW50LmFwcGVuZENoaWxkKGUpO2xldCBvPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7ZS5hcHBlbmRDaGlsZChvKX19Z2V0SW5lcnRCb2R5RWxlbWVudCh0KXtsZXQgZT10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtpZigiY29udGVudCJpbiBlKXJldHVybiBlLmlubmVySFRNTD1idyh0KSxlO2xldCBvPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7cmV0dXJuIG8uaW5uZXJIVE1MPWJ3KHQpLHRoaXMuZGVmYXVsdERvYy5kb2N1bWVudE1vZGUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKG8pLG99c3RyaXBDdXN0b21Oc0F0dHJzKHQpe2xldCBlPXQuYXR0cmlidXRlcztmb3IobGV0IGk9ZS5sZW5ndGgtMTswPGk7aS0tKXtsZXQgcj1lLml0ZW0oaSkubmFtZTsocj09PSJ4bWxuczpuczEifHxyLmluZGV4T2YoIm5zMToiKT09PTApJiZ0LnJlbW92ZUF0dHJpYnV0ZShyKX1sZXQgbz10LmZpcnN0Q2hpbGQ7Zm9yKDtvOylvLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKG8pLG89by5uZXh0U2libGluZ319O2Z1bmN0aW9uIG9NdCgpe3RyeXtyZXR1cm4hIW5ldyB3aW5kb3cuRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGJ3KCIiKSwidGV4dC9odG1sIil9Y2F0Y2gobil7cmV0dXJuITF9fXZhciBpTXQ9L14oPzooPzpodHRwcz98bWFpbHRvfGZ0cHx0ZWx8ZmlsZXxzbXMpOnxbXiY6Lz8jXSooPzpbLz8jXXwkKSkvZ2k7dmFyIGFNdD0vXmRhdGE6KD86aW1hZ2VcLyg/OmJtcHxnaWZ8anBlZ3xqcGd8cG5nfHRpZmZ8d2VicCl8dmlkZW9cLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtKXxhdWRpb1wvKD86bXAzfG9nYXxvZ2d8b3B1cykpO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTtmdW5jdGlvbiBIdyhuKXtyZXR1cm4gbj1TdHJpbmcobiksbi5tYXRjaChpTXQpfHxuLm1hdGNoKGFNdCk/bjooKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZjb25zb2xlLndhcm4oYFdBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAke259IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcylgKSwidW5zYWZlOiIrbil9ZnVuY3Rpb24gX0oobil7cmV0dXJuIG49U3RyaW5nKG4pLG4uc3BsaXQoIiwiKS5tYXAodD0+SHcodC50cmltKCkpKS5qb2luKCIsICIpfWZ1bmN0aW9uIFNiKG4pe2xldCB0PXt9O2ZvcihsZXQgZSBvZiBuLnNwbGl0KCIsIikpdFtlXT0hMDtyZXR1cm4gdH1mdW5jdGlvbiBOUiguLi5uKXtsZXQgdD17fTtmb3IobGV0IGUgb2Ygbilmb3IobGV0IG8gaW4gZSllLmhhc093blByb3BlcnR5KG8pJiYodFtvXT0hMCk7cmV0dXJuIHR9dmFyIENKPVNiKCJhcmVhLGJyLGNvbCxocixpbWcsd2JyIiksTUo9U2IoImNvbGdyb3VwLGRkLGR0LGxpLHAsdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdHIiKSxiSj1TYigicnAscnQiKSxyTXQ9TlIoYkosTUopLHNNdD1OUihNSixTYigiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJsb2NrcXVvdGUsY2FwdGlvbixjZW50ZXIsZGVsLGRldGFpbHMsZGlhbG9nLGRpcixkaXYsZGwsZmlndXJlLGZpZ2NhcHRpb24sZm9vdGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhlYWRlcixoZ3JvdXAsaHIsaW5zLG1haW4sbWFwLG1lbnUsbmF2LG9sLHByZSxzZWN0aW9uLHN1bW1hcnksdGFibGUsdWwiKSksbE10PU5SKGJKLFNiKCJhLGFiYnIsYWNyb255bSxhdWRpbyxiLGJkaSxiZG8sYmlnLGJyLGNpdGUsY29kZSxkZWwsZGZuLGVtLGZvbnQsaSxpbWcsaW5zLGtiZCxsYWJlbCxtYXAsbWFyayxwaWN0dXJlLHEscnVieSxycCxydCxzLHNhbXAsc21hbGwsc291cmNlLHNwYW4sc3RyaWtlLHN0cm9uZyxzdWIsc3VwLHRpbWUsdHJhY2ssdHQsdSx2YXIsdmlkZW8iKSksWUw9TlIoQ0osc010LGxNdCxyTXQpLHBCPVNiKCJiYWNrZ3JvdW5kLGNpdGUsaHJlZixpdGVtdHlwZSxsb25nZGVzYyxwb3N0ZXIsc3JjLHhsaW5rOmhyZWYiKSxkQj1TYigic3Jjc2V0IiksY010PVNiKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzdGFydCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsdmFsaWduLHZhbHVlLHZzcGFjZSx3aWR0aCIpLG1NdD1TYigiYXJpYS1hY3RpdmVkZXNjZW5kYW50LGFyaWEtYXRvbWljLGFyaWEtYXV0b2NvbXBsZXRlLGFyaWEtYnVzeSxhcmlhLWNoZWNrZWQsYXJpYS1jb2xjb3VudCxhcmlhLWNvbGluZGV4LGFyaWEtY29sc3BhbixhcmlhLWNvbnRyb2xzLGFyaWEtY3VycmVudCxhcmlhLWRlc2NyaWJlZGJ5LGFyaWEtZGV0YWlscyxhcmlhLWRpc2FibGVkLGFyaWEtZHJvcGVmZmVjdCxhcmlhLWVycm9ybWVzc2FnZSxhcmlhLWV4cGFuZGVkLGFyaWEtZmxvd3RvLGFyaWEtZ3JhYmJlZCxhcmlhLWhhc3BvcHVwLGFyaWEtaGlkZGVuLGFyaWEtaW52YWxpZCxhcmlhLWtleXNob3J0Y3V0cyxhcmlhLWxhYmVsLGFyaWEtbGFiZWxsZWRieSxhcmlhLWxldmVsLGFyaWEtbGl2ZSxhcmlhLW1vZGFsLGFyaWEtbXVsdGlsaW5lLGFyaWEtbXVsdGlzZWxlY3RhYmxlLGFyaWEtb3JpZW50YXRpb24sYXJpYS1vd25zLGFyaWEtcGxhY2Vob2xkZXIsYXJpYS1wb3NpbnNldCxhcmlhLXByZXNzZWQsYXJpYS1yZWFkb25seSxhcmlhLXJlbGV2YW50LGFyaWEtcmVxdWlyZWQsYXJpYS1yb2xlZGVzY3JpcHRpb24sYXJpYS1yb3djb3VudCxhcmlhLXJvd2luZGV4LGFyaWEtcm93c3BhbixhcmlhLXNlbGVjdGVkLGFyaWEtc2V0c2l6ZSxhcmlhLXNvcnQsYXJpYS12YWx1ZW1heCxhcmlhLXZhbHVlbWluLGFyaWEtdmFsdWVub3csYXJpYS12YWx1ZXRleHQiKSxPSj1OUihwQixkQixjTXQsbU10KSxmTXQ9U2IoInNjcmlwdCxzdHlsZSx0ZW1wbGF0ZSIpLEdMPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEsdGhpcy5idWY9W119c2FuaXRpemVDaGlsZHJlbih0KXtsZXQgZT10LmZpcnN0Q2hpbGQsbz0hMDtmb3IoO2U7KXtpZihlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREU/bz10aGlzLnN0YXJ0RWxlbWVudChlKTplLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREU/dGhpcy5jaGFycyhlLm5vZGVWYWx1ZSk6dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITAsbyYmZS5maXJzdENoaWxkKXtlPWUuZmlyc3RDaGlsZDtjb250aW51ZX1mb3IoO2U7KXtlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChlKTtsZXQgaT10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChlLGUubmV4dFNpYmxpbmcpO2lmKGkpe2U9aTticmVha31lPXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGUsZS5wYXJlbnROb2RlKX19cmV0dXJuIHRoaXMuYnVmLmpvaW4oIiIpfXN0YXJ0RWxlbWVudCh0KXtsZXQgZT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIVlMLmhhc093blByb3BlcnR5KGUpKXJldHVybiB0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCwhZk10Lmhhc093blByb3BlcnR5KGUpO3RoaXMuYnVmLnB1c2goIjwiKSx0aGlzLmJ1Zi5wdXNoKGUpO2xldCBvPXQuYXR0cmlidXRlcztmb3IobGV0IGk9MDtpPG8ubGVuZ3RoO2krKyl7bGV0IGE9by5pdGVtKGkpLHI9YS5uYW1lLHM9ci50b0xvd2VyQ2FzZSgpO2lmKCFPSi5oYXNPd25Qcm9wZXJ0eShzKSl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITA7Y29udGludWV9bGV0IGw9YS52YWx1ZTtwQltzXSYmKGw9SHcobCkpLGRCW3NdJiYobD1fSihsKSksdGhpcy5idWYucHVzaCgiICIsciwnPSInLFNRKGwpLCciJyl9cmV0dXJuIHRoaXMuYnVmLnB1c2goIj4iKSwhMH1lbmRFbGVtZW50KHQpe2xldCBlPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtZTC5oYXNPd25Qcm9wZXJ0eShlKSYmIUNKLmhhc093blByb3BlcnR5KGUpJiYodGhpcy5idWYucHVzaCgiPC8iKSx0aGlzLmJ1Zi5wdXNoKGUpLHRoaXMuYnVmLnB1c2goIj4iKSl9Y2hhcnModCl7dGhpcy5idWYucHVzaChTUSh0KSl9Y2hlY2tDbG9iYmVyZWRFbGVtZW50KHQsZSl7aWYoZSYmKHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpPT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogJHt0Lm91dGVySFRNTH1gKTtyZXR1cm4gZX19LHBNdD0vW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdL2csZE10PS8oW15cIy1+IHwhXSkvZztmdW5jdGlvbiBTUShuKXtyZXR1cm4gbi5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZShwTXQsZnVuY3Rpb24odCl7bGV0IGU9dC5jaGFyQ29kZUF0KDApLG89dC5jaGFyQ29kZUF0KDEpO3JldHVybiImIyIrKChlLTU1Mjk2KSoxMDI0KyhvLTU2MzIwKSs2NTUzNikrIjsifSkucmVwbGFjZShkTXQsZnVuY3Rpb24odCl7cmV0dXJuIiYjIit0LmNoYXJDb2RlQXQoMCkrIjsifSkucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9dmFyIEROO2Z1bmN0aW9uIGdCKG4sdCl7bGV0IGU9bnVsbDt0cnl7RE49RE58fGhKKG4pO2xldCBvPXQ/U3RyaW5nKHQpOiIiO2U9RE4uZ2V0SW5lcnRCb2R5RWxlbWVudChvKTtsZXQgaT01LGE9bztkb3tpZihpPT09MCl0aHJvdyBuZXcgRXJyb3IoIkZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGlucHV0IGlzIHVuc3RhYmxlIik7aS0tLG89YSxhPWUuaW5uZXJIVE1MLGU9RE4uZ2V0SW5lcnRCb2R5RWxlbWVudChvKX13aGlsZShvIT09YSk7bGV0IHI9bmV3IEdMLHM9ci5zYW5pdGl6ZUNoaWxkcmVuKFdMKGUpfHxlKTtyZXR1cm4odHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJnIuc2FuaXRpemVkU29tZXRoaW5nJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgSFRNTCBzdHJpcHBlZCBzb21lIGNvbnRlbnQsIHNlZSBodHRwczovL2cuY28vbmcvc2VjdXJpdHkjeHNzIiksYncocyl9ZmluYWxseXtpZihlKXtsZXQgbz1XTChlKXx8ZTtmb3IoO28uZmlyc3RDaGlsZDspby5yZW1vdmVDaGlsZChvLmZpcnN0Q2hpbGQpfX19ZnVuY3Rpb24gV0wobil7cmV0dXJuImNvbnRlbnQiaW4gbiYmZ010KG4pP24uY29udGVudDpudWxsfWZ1bmN0aW9uIGdNdChuKXtyZXR1cm4gbi5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZuLm5vZGVOYW1lPT09IlRFTVBMQVRFIn12YXIgQXM7KGZ1bmN0aW9uKG4pe25bbi5OT05FPTBdPSJOT05FIixuW24uSFRNTD0xXT0iSFRNTCIsbltuLlNUWUxFPTJdPSJTVFlMRSIsbltuLlNDUklQVD0zXT0iU0NSSVBUIixuW24uVVJMPTRdPSJVUkwiLG5bbi5SRVNPVVJDRV9VUkw9NV09IlJFU09VUkNFX1VSTCJ9KShBc3x8KEFzPXt9KSk7ZnVuY3Rpb24gdUIobil7bGV0IHQ9VFIoKTtyZXR1cm4gdD94USh0LnNhbml0aXplKEFzLkhUTUwsbil8fCIiKTpRQyhuLCJIVE1MIik/eFEoR2YobikpOmdCKFg4KCksUm8obikpfWZ1bmN0aW9uIHVNdChuKXtsZXQgdD1UUigpO3JldHVybiB0P3Quc2FuaXRpemUoQXMuU1RZTEUsbil8fCIiOlFDKG4sIlN0eWxlIik/R2Yobik6Um8obil9ZnVuY3Rpb24gV2Yobil7bGV0IHQ9VFIoKTtyZXR1cm4gdD90LnNhbml0aXplKEFzLlVSTCxuKXx8IiI6UUMobiwiVVJMIik/R2Yobik6SHcoUm8obikpfWZ1bmN0aW9uIFBKKG4pe2xldCB0PVRSKCk7aWYodClyZXR1cm4gd1EodC5zYW5pdGl6ZShBcy5SRVNPVVJDRV9VUkwsbil8fCIiKTtpZihRQyhuLCJSZXNvdXJjZVVSTCIpKXJldHVybiB3UShHZihuKSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKX1mdW5jdGlvbiBoTXQobil7bGV0IHQ9VFIoKTtpZih0KXJldHVybiB2USh0LnNhbml0aXplKEFzLlNDUklQVCxuKXx8IiIpO2lmKFFDKG4sIlNjcmlwdCIpKXJldHVybiB2UShHZihuKSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iil9ZnVuY3Rpb24gX010KG4pe2lmKG5nRGV2TW9kZSYmKCFBcnJheS5pc0FycmF5KG4pfHwhQXJyYXkuaXNBcnJheShuLnJhdyl8fG4ubGVuZ3RoIT09MSkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGludGVycG9sYXRpb24gaW4gdHJ1c3RlZCBIVE1MIGNvbnN0YW50OiAke24uam9pbigiPyIpfWApO3JldHVybiBidyhuWzBdKX1mdW5jdGlvbiBDTXQobil7aWYobmdEZXZNb2RlJiYoIUFycmF5LmlzQXJyYXkobil8fCFBcnJheS5pc0FycmF5KG4ucmF3KXx8bi5sZW5ndGghPT0xKSl0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgaW50ZXJwb2xhdGlvbiBpbiB0cnVzdGVkIFVSTCBjb25zdGFudDogJHtuLmpvaW4oIj8iKX1gKTtyZXR1cm4gZU10KG5bMF0pfWZ1bmN0aW9uIE1NdChuLHQpe3JldHVybiB0PT09InNyYyImJihuPT09ImVtYmVkInx8bj09PSJmcmFtZSJ8fG49PT0iaWZyYW1lInx8bj09PSJtZWRpYSJ8fG49PT0ic2NyaXB0Iil8fHQ9PT0iaHJlZiImJihuPT09ImJhc2UifHxuPT09ImxpbmsiKT9QSjpXZn1mdW5jdGlvbiBiTXQobix0LGUpe3JldHVybiBNTXQodCxlKShuKX1mdW5jdGlvbiBPTXQobil7aWYobi50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoIm9uIikpe2xldCB0PWBCaW5kaW5nIHRvIGV2ZW50IHByb3BlcnR5ICcke259JyBpcyBkaXNhbGxvd2VkIGZvciBzZWN1cml0eSByZWFzb25zLCBwbGVhc2UgdXNlICgke24uc2xpY2UoMil9KT0uLi4KSWYgJyR7bn0nIGlzIGEgZGlyZWN0aXZlIGlucHV0LCBtYWtlIHN1cmUgdGhlIGRpcmVjdGl2ZSBpcyBpbXBvcnRlZCBieSB0aGUgY3VycmVudCBtb2R1bGUuYDt0aHJvdyBuZXcgRXJyb3IodCl9fWZ1bmN0aW9uIFBNdChuKXtpZihuLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aCgib24iKSl7bGV0IHQ9YEJpbmRpbmcgdG8gZXZlbnQgYXR0cmlidXRlICcke259JyBpcyBkaXNhbGxvd2VkIGZvciBzZWN1cml0eSByZWFzb25zLCBwbGVhc2UgdXNlICgke24uc2xpY2UoMil9KT0uLi5gO3Rocm93IG5ldyBFcnJvcih0KX19ZnVuY3Rpb24gVFIoKXtsZXQgbj12ZSgpO3JldHVybiBuJiZuW1pOXX1mdW5jdGlvbiB1dihuKXtsZXQgdD1hUihuKTtpZih0KXtpZihBcnJheS5pc0FycmF5KHQpKXtsZXQgZT10LG8saSxhO2lmKHlNdChuKSl7aWYobz12SihlLG4pLG89PS0xKXRocm93IG5ldyBFcnJvcigiVGhlIHByb3ZpZGVkIGNvbXBvbmVudCB3YXMgbm90IGZvdW5kIGluIHRoZSBhcHBsaWNhdGlvbiIpO2k9bn1lbHNlIGlmKHhNdChuKSl7aWYobz13TXQoZSxuKSxvPT0tMSl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwcm92aWRlZCBkaXJlY3RpdmUgd2FzIG5vdCBmb3VuZCBpbiB0aGUgYXBwbGljYXRpb24iKTthPXdKKG8sZSwhMSl9ZWxzZSBpZihvPVJRKGUsbiksbz09LTEpcmV0dXJuIG51bGw7bGV0IHI9WnMoZVtvXSkscz1hUihyKSxsPXMmJiFBcnJheS5pc0FycmF5KHMpP3M6cUwoZSxvLHIpO2lmKGkmJmwuY29tcG9uZW50PT09dm9pZCAwJiYobC5jb21wb25lbnQ9aSxqYyhsLmNvbXBvbmVudCxsKSksYSYmbC5kaXJlY3RpdmVzPT09dm9pZCAwKXtsLmRpcmVjdGl2ZXM9YTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKylqYyhhW2NdLGwpfWpjKGwubmF0aXZlLGwpLHQ9bH19ZWxzZXtsZXQgZT1uO25nRGV2TW9kZSYmQ2IoZSk7bGV0IG89ZTtmb3IoO289by5wYXJlbnROb2RlOyl7bGV0IGk9YVIobyk7aWYoaSl7bGV0IGE7aWYoQXJyYXkuaXNBcnJheShpKT9hPWk6YT1pLmxWaWV3LCFhKXJldHVybiBudWxsO2xldCByPVJRKGEsZSk7aWYocj49MCl7bGV0IHM9WnMoYVtyXSksbD1xTChhLHIscyk7amMocyxsKSx0PWw7YnJlYWt9fX19cmV0dXJuIHR8fG51bGx9ZnVuY3Rpb24gcUwobix0LGUpe3JldHVybntsVmlldzpuLG5vZGVJbmRleDp0LG5hdGl2ZTplLGNvbXBvbmVudDp2b2lkIDAsZGlyZWN0aXZlczp2b2lkIDAsbG9jYWxSZWZzOnZvaWQgMH19ZnVuY3Rpb24geUoobil7bGV0IHQ9YVIobiksZTtpZihBcnJheS5pc0FycmF5KHQpKXtsZXQgbz12Sih0LG4pO2U9Y18obyx0KTtsZXQgaT1xTCh0LG8sZVtsX10pO2kuY29tcG9uZW50PW4samMobixpKSxqYyhpLm5hdGl2ZSxpKX1lbHNle2xldCBvPXQ7ZT1jXyhvLm5vZGVJbmRleCxvLmxWaWV3KX1yZXR1cm4gZX12YXIgeEo9Il9fbmdDb250ZXh0X18iO2Z1bmN0aW9uIGpjKG4sdCl7bmdEZXZNb2RlJiZ1bihuLCJUYXJnZXQgZXhwZWN0ZWQiKSxuW3hKXT10fWZ1bmN0aW9uIGFSKG4pe3JldHVybiBuZ0Rldk1vZGUmJnVuKG4sIlRhcmdldCBleHBlY3RlZCIpLG5beEpdfHxudWxsfWZ1bmN0aW9uIGhCKG4pe2xldCB0PWFSKG4pO3JldHVybiB0P0FycmF5LmlzQXJyYXkodCk/dDp0LmxWaWV3Om51bGx9ZnVuY3Rpb24geU10KG4pe3JldHVybiBuJiZuLmNvbnN0cnVjdG9yJiZuLmNvbnN0cnVjdG9yLlx1MDI3NWNtcH1mdW5jdGlvbiB4TXQobil7cmV0dXJuIG4mJm4uY29uc3RydWN0b3ImJm4uY29uc3RydWN0b3IuXHUwMjc1ZGlyfWZ1bmN0aW9uIFJRKG4sdCl7bGV0IGU9bltSbl07Zm9yKGxldCBvPWdpO288ZS5iaW5kaW5nU3RhcnRJbmRleDtvKyspaWYoWnMobltvXSk9PT10KXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIHZNdChuKXtpZihuLmNoaWxkKXJldHVybiBuLmNoaWxkO2lmKG4ubmV4dClyZXR1cm4gbi5uZXh0O2Zvcig7bi5wYXJlbnQmJiFuLnBhcmVudC5uZXh0OyluPW4ucGFyZW50O3JldHVybiBuLnBhcmVudCYmbi5wYXJlbnQubmV4dH1mdW5jdGlvbiB2SihuLHQpe2xldCBlPW5bUm5dLmNvbXBvbmVudHM7aWYoZSlmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7bGV0IGk9ZVtvXTtpZihjXyhpLG4pW1RyXT09PXQpcmV0dXJuIGl9ZWxzZSBpZihjXyhnaSxuKVtUcl09PT10KXJldHVybiBnaTtyZXR1cm4tMX1mdW5jdGlvbiB3TXQobix0KXtsZXQgZT1uW1JuXS5maXJzdENoaWxkO2Zvcig7ZTspe2xldCBvPWUuZGlyZWN0aXZlU3RhcnQsaT1lLmRpcmVjdGl2ZUVuZDtmb3IobGV0IGE9bzthPGk7YSsrKWlmKG5bYV09PT10KXJldHVybiBlLmluZGV4O2U9dk10KGUpfXJldHVybi0xfWZ1bmN0aW9uIHdKKG4sdCxlKXtsZXQgbz10W1JuXS5kYXRhW25dLGk9by5kaXJlY3RpdmVTdGFydDtpZihpPT0wKXJldHVybiB1YTtsZXQgYT1vLmRpcmVjdGl2ZUVuZDtyZXR1cm4hZSYmby5mbGFncyYyJiZpKyssdC5zbGljZShpLGEpfWZ1bmN0aW9uIFNNdChuLHQpe2xldCBlPXRbUm5dLmRhdGFbbl0sbz1lLmRpcmVjdGl2ZVN0YXJ0O3JldHVybiBlLmZsYWdzJjI/dFtvXTpudWxsfXZhciBSTXQ9Im5nRGVidWdDb250ZXh0IixfQj0ibmdPcmlnaW5hbEVycm9yIixFTXQ9Im5nRXJyb3JMb2dnZXIiO2Z1bmN0aW9uIGtNdChuLHQpe2xldCBlPWAke259IGNhdXNlZCBieTogJHt0IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOnR9YCxvPUVycm9yKGUpO3JldHVybiBvW19CXT10LG99ZnVuY3Rpb24gTk10KG4pe3JldHVybiBuW1JNdF19ZnVuY3Rpb24gSU4obil7cmV0dXJuIG5bX0JdfWZ1bmN0aW9uIFRNdChuKXtyZXR1cm4gbiYmbltFTXRdfHxBTXR9ZnVuY3Rpb24gQU10KG4sLi4udCl7bi5lcnJvciguLi50KX12YXIgeWE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9jb25zb2xlPWNvbnNvbGV9aGFuZGxlRXJyb3IodCl7bGV0IGU9dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IodCksbz10aGlzLl9maW5kQ29udGV4dCh0KSxpPVRNdCh0KTtpKHRoaXMuX2NvbnNvbGUsIkVSUk9SIix0KSxlJiZpKHRoaXMuX2NvbnNvbGUsIk9SSUdJTkFMIEVSUk9SIixlKSxvJiZpKHRoaXMuX2NvbnNvbGUsIkVSUk9SIENPTlRFWFQiLG8pfV9maW5kQ29udGV4dCh0KXtyZXR1cm4gdD9OTXQodCl8fHRoaXMuX2ZpbmRDb250ZXh0KElOKHQpKTpudWxsfV9maW5kT3JpZ2luYWxFcnJvcih0KXtsZXQgZT10JiZJTih0KTtmb3IoO2UmJklOKGUpOyllPUlOKGUpO3JldHVybiBlfHxudWxsfX07dmFyIERNdD17bmFtZToiY3VzdG9tLWVsZW1lbnRzIn0sSU10PXtuYW1lOiJuby1lcnJvcnMtc2NoZW1hIn07dmFyIHpNdD0vXj58Xi0+fDwhLS18LS0+fC0tIT58PCEtJC9nLEhNdD0vKDx8PikvLEZNdD0iXHUyMDBCJDFcdTIwMEIiO2Z1bmN0aW9uIFNKKG4pe3JldHVybiBuLnJlcGxhY2Uoek10LHQ9PnQucmVwbGFjZShITXQsRk10KSl9ZnVuY3Rpb24gQ2cobil7aWYobmdEZXZNb2RlKXRyeXtyZXR1cm4gbk10KCJBcnJheSIsYHJldHVybiBjbGFzcyAke259IGV4dGVuZHMgQXJyYXl7fWApKEFycmF5KX1jYXRjaCh0KXtyZXR1cm4gQXJyYXl9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkxvb2tzIGxpa2Ugd2UgYXJlIGluICdwcm9kIG1vZGUnLCBidXQgd2UgYXJlIGNyZWF0aW5nIGEgbmFtZWQgQXJyYXkgdHlwZSwgd2hpY2ggaXMgd3JvbmchIENoZWNrIHlvdXIgY29kZSIpfWZ1bmN0aW9uIExNdChuKXtyZXR1cm4gbj1WTXQobi5yZXBsYWNlKC9bJEBdL2csIl8iKSksYG5nLXJlZmxlY3QtJHtufWB9dmFyIEJNdD0vKFtBLVpdKS9nO2Z1bmN0aW9uIFZNdChuKXtyZXR1cm4gbi5yZXBsYWNlKEJNdCwoLi4udCk9PiItIit0WzFdLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGpNdChuKXt0cnl7cmV0dXJuIG4hPW51bGw/bi50b1N0cmluZygpLnNsaWNlKDAsMzApOm59Y2F0Y2godCl7cmV0dXJuIltFUlJPUl0gRXhjZXB0aW9uIHdoaWxlIHRyeWluZyB0byBzZXJpYWxpemUgdGhlIHZhbHVlIn19dmFyIFVNdD0oKT0+KHR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUhPSJ1bmRlZmluZWQiJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNldFRpbWVvdXQpLmJpbmQoTWkpLFJKPVVNdCgpO2Z1bmN0aW9uIEFSKG4pe3JldHVybiBuLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gTlQobil7cmV0dXJuIG4ub3duZXJEb2N1bWVudH1mdW5jdGlvbiBZTXQobil7cmV0dXJuIG4ub3duZXJEb2N1bWVudC5ib2R5fXZhciB1Uj0iXHVGRkZEIjtmdW5jdGlvbiBNYihuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEZ1bmN0aW9uP24oKTpufWZ1bmN0aW9uIEdNdChuKXt0aHJvdyBuZXcgeWIoIjMwMCIsYE11bHRpcGxlIGNvbXBvbmVudHMgbWF0Y2ggbm9kZSB3aXRoIHRhZ25hbWUgJHtuLnZhbHVlfWApfWZ1bmN0aW9uIFdNdChuLHQsZSxvKXtsZXQgYT1gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcjogRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZC4gUHJldmlvdXMgdmFsdWUke28/YCBmb3IgJyR7b30nYDoiIn06ICcke3R9Jy4gQ3VycmVudCB2YWx1ZTogJyR7ZX0nLmA7dGhyb3cgbiYmKGErPSIgSXQgc2VlbXMgbGlrZSB0aGUgdmlldyBoYXMgYmVlbiBjcmVhdGVkIGFmdGVyIGl0cyBwYXJlbnQgYW5kIGl0cyBjaGlsZHJlbiBoYXZlIGJlZW4gZGlydHkgY2hlY2tlZC4gSGFzIGl0IGJlZW4gY3JlYXRlZCBpbiBhIGNoYW5nZSBkZXRlY3Rpb24gaG9vaz8iKSxuZXcgeWIoIjEwMCIsYSl9ZnVuY3Rpb24gRVEobix0LGUsbyxpKXtsZXRbYSxyLC4uLnNdPW8uc3BsaXQodVIpLGw9cixjPXI7Zm9yKGxldCBtPTA7bTxzLmxlbmd0aDttKyspe2xldCBmPXQrbTtsKz1gJHtuW2ZdfSR7c1ttXX1gLGMrPWAke2Y9PT1lP2k6bltmXX0ke3NbbV19YH1yZXR1cm57cHJvcE5hbWU6YSxvbGRWYWx1ZTpsLG5ld1ZhbHVlOmN9fWZ1bmN0aW9uIHFNdChuLHQsZSxvKXtsZXQgaT1uW1JuXS5kYXRhLGE9aVt0XTtpZih0eXBlb2YgYT09InN0cmluZyIpcmV0dXJuIGEuaW5kZXhPZih1Uik+LTE/RVEobix0LHQsYSxvKTp7cHJvcE5hbWU6YSxvbGRWYWx1ZTplLG5ld1ZhbHVlOm99O2lmKGE9PT1udWxsKXtsZXQgcj10LTE7Zm9yKDt0eXBlb2YgaVtyXSE9InN0cmluZyImJmlbcisxXT09PW51bGw7KXItLTtsZXQgcz1pW3JdO2lmKHR5cGVvZiBzPT0ic3RyaW5nIil7bGV0IGw9cy5tYXRjaChuZXcgUmVnRXhwKHVSLCJnIikpO2lmKGwmJmwubGVuZ3RoLTE+dC1yKXJldHVybiBFUShuLHIsdCxzLG8pfX1yZXR1cm57cHJvcE5hbWU6dm9pZCAwLG9sZFZhbHVlOmUsbmV3VmFsdWU6b319dmFyIEdPOyhmdW5jdGlvbihuKXtuW24uSW1wb3J0YW50PTFdPSJJbXBvcnRhbnQiLG5bbi5EYXNoQ2FzZT0yXT0iRGFzaENhc2UifSkoR098fChHTz17fSkpO3ZhciBaTDtmdW5jdGlvbiBDQihuLHQpe3JldHVybiBaTChuLHQpfWZ1bmN0aW9uIFpNdChuKXtaTD09PXZvaWQgMCYmKFpMPW4oKSl9dmFyIEVKPTE7ZnVuY3Rpb24gRFIobil7bmdEZXZNb2RlJiZrdyhuKTtsZXQgdD1uW3lyXTtyZXR1cm4gWkModCk/dFt5cl06dH1mdW5jdGlvbiBYTXQobil7bmdEZXZNb2RlJiZ1bihuLCJjb21wb25lbnQiKTtsZXQgdD1WTyhuKT9uOmhCKG4pO2Zvcig7dCYmISh0W1FvXSY1MTIpOyl0PURSKHQpO3JldHVybiBuZ0Rldk1vZGUmJmt3KHQpLHR9ZnVuY3Rpb24gUU10KG4pe2xldCB0PVhNdChuKTtyZXR1cm4gbmdEZXZNb2RlJiZ1bih0W1RyXSwiUm9vdFZpZXcgaGFzIG5vIGNvbnRleHQuIFBlcmhhcHMgaXQgaXMgZGlzY29ubmVjdGVkPyIpLHRbVHJdfWZ1bmN0aW9uIE1CKG4pe3JldHVybiBrSihuW2h3XSl9ZnVuY3Rpb24gYkIobil7cmV0dXJuIGtKKG5baGddKX1mdW5jdGlvbiBrSihuKXtmb3IoO24hPT1udWxsJiYhWkMobik7KW49bltoZ107cmV0dXJuIG59dmFyIFFzZT1rMHQraUIrRUorVTB0K0UwdDtmdW5jdGlvbiBkdyhuLHQsZSxvLGkpe2lmKG8hPW51bGwpe2xldCBhLHI9ITE7WkMobyk/YT1vOlZPKG8pJiYocj0hMCxuZ0Rldk1vZGUmJnVuKG9bbF9dLCJIT1NUIG11c3QgYmUgZGVmaW5lZCBmb3IgYSBjb21wb25lbnQgTFZpZXciKSxvPW9bbF9dKTtsZXQgcz1acyhvKTtuZ0Rldk1vZGUmJiFJYSh0KSYmQ2Iocyksbj09PTAmJmUhPT1udWxsP2k9PW51bGw/ekoodCxlLHMpOnB2KHQsZSxzLGl8fG51bGwsITApOm49PT0xJiZlIT09bnVsbD9wdih0LGUscyxpfHxudWxsLCEwKTpuPT09Mj9qSih0LHMscik6bj09PTMmJihuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckRlc3Ryb3lOb2RlKyssdC5kZXN0cm95Tm9kZShzKSksYSE9bnVsbCYmY2J0KHQsbixhLGUsaSl9fWZ1bmN0aW9uIE9CKG4sdCl7cmV0dXJuIG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlVGV4dE5vZGUrKyxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldFRleHQrKyxJYShuKT9uLmNyZWF0ZVRleHQodCk6bi5jcmVhdGVUZXh0Tm9kZSh0KX1mdW5jdGlvbiBOSihuLHQsZSl7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRUZXh0KyssSWEobik/bi5zZXRWYWx1ZSh0LGUpOnQudGV4dENvbnRlbnQ9ZX1mdW5jdGlvbiBLTXQobix0KXtyZXR1cm4gbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVDb21tZW50Kyssbi5jcmVhdGVDb21tZW50KFNKKHQpKX1mdW5jdGlvbiBQQihuLHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlRWxlbWVudCsrLElhKG4pP24uY3JlYXRlRWxlbWVudCh0LGUpOmU9PT1udWxsP24uY3JlYXRlRWxlbWVudCh0KTpuLmNyZWF0ZUVsZW1lbnROUyhlLHQpfWZ1bmN0aW9uIEpNdChuLHQpe2xldCBlPXRbUG9dO0lSKG4sdCxlLDIsbnVsbCxudWxsKSx0W2xfXT1udWxsLHRbWWNdPW51bGx9ZnVuY3Rpb24gJE10KG4sdCxlLG8saSxhKXtvW2xfXT1pLG9bWWNdPXQsSVIobixvLGUsMSxpLGEpfWZ1bmN0aW9uIHRidChuLHQpe0lSKG4sdCx0W1BvXSwyLG51bGwsbnVsbCl9ZnVuY3Rpb24gZWJ0KG4pe2xldCB0PW5baHddO2lmKCF0KXJldHVybiBuTChuW1JuXSxuKTtmb3IoO3Q7KXtsZXQgZT1udWxsO2lmKFZPKHQpKWU9dFtod107ZWxzZXtuZ0Rldk1vZGUmJnhiKHQpO2xldCBvPXRbQmxdO28mJihlPW8pfWlmKCFlKXtmb3IoO3QmJiF0W2hnXSYmdCE9PW47KVZPKHQpJiZuTCh0W1JuXSx0KSx0PXRbeXJdO3Q9PT1udWxsJiYodD1uKSxWTyh0KSYmbkwodFtSbl0sdCksZT10JiZ0W2hnXX10PWV9fWZ1bmN0aW9uIG5idChuLHQsZSxvKXtuZ0Rldk1vZGUmJmt3KHQpLG5nRGV2TW9kZSYmeGIoZSk7bGV0IGk9QmwrbyxhPWUubGVuZ3RoO28+MCYmKGVbaS0xXVtoZ109dCksbzxhLUJsPyh0W2hnXT1lW2ldLHJKKGUsQmwrbyx0KSk6KGUucHVzaCh0KSx0W2hnXT1udWxsKSx0W3lyXT1lO2xldCByPXRbd1JdO3IhPT1udWxsJiZlIT09ciYmb2J0KHIsdCk7bGV0IHM9dFtfZ107cyE9PW51bGwmJnMuaW5zZXJ0VmlldyhuKSx0W1FvXXw9MTI4fWZ1bmN0aW9uIG9idChuLHQpe25nRGV2TW9kZSYmdW4odCwiTFZpZXcgcmVxdWlyZWQiKSxuZ0Rldk1vZGUmJnhiKG4pO2xldCBlPW5bTXldLG89dFt5cl07bmdEZXZNb2RlJiZ4YihvKTtsZXQgaT1vW3lyXVtiZ107bmdEZXZNb2RlJiZ1bihpLCJNaXNzaW5nIGluc2VydGVkQ29tcG9uZW50TFZpZXciKTtsZXQgYT10W2JnXTtuZ0Rldk1vZGUmJnVuKGEsIk1pc3NpbmcgZGVjbGFyZWRDb21wb25lbnRMVmlldyIpLGEhPT1pJiYobltqOF09ITApLGU9PT1udWxsP25bTXldPVt0XTplLnB1c2godCl9ZnVuY3Rpb24gVEoobix0KXtuZ0Rldk1vZGUmJnhiKG4pLG5nRGV2TW9kZSYmdW4obltNeV0sIkEgcHJvamVjdGVkIHZpZXcgc2hvdWxkIGJlbG9uZyB0byBhIG5vbi1lbXB0eSBwcm9qZWN0ZWQgdmlld3MgY29sbGVjdGlvbiIpO2xldCBlPW5bTXldLG89ZS5pbmRleE9mKHQpLGk9dFt5cl07bmdEZXZNb2RlJiZ4YihpKSx0W1FvXSYxMDI0JiYodFtRb10mPS0xMDI1LEs4KGksLTEpKSxlLnNwbGljZShvLDEpfWZ1bmN0aW9uIFhMKG4sdCl7aWYobi5sZW5ndGg8PUJsKXJldHVybjtsZXQgZT1CbCt0LG89bltlXTtpZihvKXtsZXQgaT1vW3dSXTtpIT09bnVsbCYmaSE9PW4mJlRKKGksbyksdD4wJiYobltlLTFdW2hnXT1vW2hnXSk7bGV0IGE9blQobixCbCt0KTtKTXQob1tSbl0sbyk7bGV0IHI9YVtfZ107ciE9PW51bGwmJnIuZGV0YWNoVmlldyhhW1JuXSksb1t5cl09bnVsbCxvW2hnXT1udWxsLG9bUW9dJj0tMTI5fXJldHVybiBvfWZ1bmN0aW9uIEFKKG4sdCl7aWYoISh0W1FvXSYyNTYpKXtsZXQgZT10W1BvXTtJYShlKSYmZS5kZXN0cm95Tm9kZSYmSVIobix0LGUsMyxudWxsLG51bGwpLGVidCh0KX19ZnVuY3Rpb24gbkwobix0KXtpZighKHRbUW9dJjI1Nikpe3RbUW9dJj0tMTI5LHRbUW9dfD0yNTYsYWJ0KG4sdCksaWJ0KG4sdCksdFtSbl0udHlwZT09PTEmJklhKHRbUG9dKSYmKG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyRGVzdHJveSsrLHRbUG9dLmRlc3Ryb3koKSk7bGV0IGU9dFt3Ul07aWYoZSE9PW51bGwmJlpDKHRbeXJdKSl7ZSE9PXRbeXJdJiZUSihlLHQpO2xldCBvPXRbX2ddO28hPT1udWxsJiZvLmRldGFjaFZpZXcobil9fX1mdW5jdGlvbiBpYnQobix0KXtsZXQgZT1uLmNsZWFudXAsbz10W2N2XSxpPS0xO2lmKGUhPT1udWxsKWZvcihsZXQgYT0wO2E8ZS5sZW5ndGgtMTthKz0yKWlmKHR5cGVvZiBlW2FdPT0ic3RyaW5nIil7bGV0IHI9ZVthKzFdLHM9dHlwZW9mIHI9PSJmdW5jdGlvbiI/cih0KTpacyh0W3JdKSxsPW9baT1lW2ErMl1dLGM9ZVthKzNdO3R5cGVvZiBjPT0iYm9vbGVhbiI/cy5yZW1vdmVFdmVudExpc3RlbmVyKGVbYV0sbCxjKTpjPj0wP29baT1jXSgpOm9baT0tY10udW5zdWJzY3JpYmUoKSxhKz0yfWVsc2V7bGV0IHI9b1tpPWVbYSsxXV07ZVthXS5jYWxsKHIpfWlmKG8hPT1udWxsKXtmb3IobGV0IGE9aSsxO2E8by5sZW5ndGg7YSsrKXtsZXQgcj1vW2FdO25nRGV2TW9kZSYmcDB0KHIsIkV4cGVjdGluZyBpbnN0YW5jZSBjbGVhbnVwIGZ1bmN0aW9uLiIpLHIoKX10W2N2XT1udWxsfX1mdW5jdGlvbiBhYnQobix0KXtsZXQgZTtpZihuIT1udWxsJiYoZT1uLmRlc3Ryb3lIb29rcykhPW51bGwpZm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKz0yKXtsZXQgaT10W2Vbb11dO2lmKCEoaSBpbnN0YW5jZW9mIGZ2KSl7bGV0IGE9ZVtvKzFdO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKz0yKXtsZXQgcz1pW2Fbcl1dLGw9YVtyKzFdO2FfKDQscyxsKTt0cnl7bC5jYWxsKHMpfWZpbmFsbHl7YV8oNSxzLGwpfX1lbHNle2FfKDQsaSxhKTt0cnl7YS5jYWxsKGkpfWZpbmFsbHl7YV8oNSxpLGEpfX19fX1mdW5jdGlvbiBESihuLHQsZSl7cmV0dXJuIElKKG4sdC5wYXJlbnQsZSl9ZnVuY3Rpb24gSUoobix0LGUpe2xldCBvPXQ7Zm9yKDtvIT09bnVsbCYmby50eXBlJjQwOyl0PW8sbz10LnBhcmVudDtpZihvPT09bnVsbClyZXR1cm4gZVtsX107aWYobmdEZXZNb2RlJiZHYyhvLDcpLG8uZmxhZ3MmMil7bmdEZXZNb2RlJiZ5eShvLGUpO2xldCBpPW4uZGF0YVtvLmRpcmVjdGl2ZVN0YXJ0XS5lbmNhcHN1bGF0aW9uO2lmKGk9PT1KZS5Ob25lfHxpPT09SmUuRW11bGF0ZWQpcmV0dXJuIG51bGx9cmV0dXJuIHlnKG8sZSl9ZnVuY3Rpb24gcHYobix0LGUsbyxpKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckluc2VydEJlZm9yZSsrLElhKG4pP24uaW5zZXJ0QmVmb3JlKHQsZSxvLGkpOnQuaW5zZXJ0QmVmb3JlKGUsbyxpKX1mdW5jdGlvbiB6SihuLHQsZSl7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJBcHBlbmRDaGlsZCsrLG5nRGV2TW9kZSYmdW4odCwicGFyZW50IG5vZGUgbXVzdCBiZSBkZWZpbmVkIiksSWEobik/bi5hcHBlbmRDaGlsZCh0LGUpOnQuYXBwZW5kQ2hpbGQoZSl9ZnVuY3Rpb24ga1Eobix0LGUsbyxpKXtvIT09bnVsbD9wdihuLHQsZSxvLGkpOnpKKG4sdCxlKX1mdW5jdGlvbiByYnQobix0LGUsbyl7SWEobik/bi5yZW1vdmVDaGlsZCh0LGUsbyk6dC5yZW1vdmVDaGlsZChlKX1mdW5jdGlvbiBUVChuLHQpe3JldHVybiBJYShuKT9uLnBhcmVudE5vZGUodCk6dC5wYXJlbnROb2RlfWZ1bmN0aW9uIHNidChuLHQpe3JldHVybiBJYShuKT9uLm5leHRTaWJsaW5nKHQpOnQubmV4dFNpYmxpbmd9ZnVuY3Rpb24gSEoobix0LGUpe3JldHVybiBMSihuLHQsZSl9ZnVuY3Rpb24gRkoobix0LGUpe3JldHVybiBuLnR5cGUmNDA/eWcobixlKTpudWxsfXZhciBMSj1GSixRTDtmdW5jdGlvbiBCSihuLHQpe0xKPW4sUUw9dH1mdW5jdGlvbiBBVChuLHQsZSxvKXtsZXQgaT1ESihuLG8sdCksYT10W1BvXSxyPW8ucGFyZW50fHx0W1ljXSxzPUhKKHIsbyx0KTtpZihpIT1udWxsKWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCBsPTA7bDxlLmxlbmd0aDtsKyspa1EoYSxpLGVbbF0scywhMSk7ZWxzZSBrUShhLGksZSxzLCExKTtRTCE9PXZvaWQgMCYmUUwoYSxvLHQsZSxpKX1mdW5jdGlvbiBVTihuLHQpe2lmKHQhPT1udWxsKXtuZ0Rldk1vZGUmJkdjKHQsNjMpO2xldCBlPXQudHlwZTtpZihlJjMpcmV0dXJuIHlnKHQsbik7aWYoZSY0KXJldHVybiBLTCgtMSxuW3QuaW5kZXhdKTtpZihlJjgpe2xldCBvPXQuY2hpbGQ7aWYobyE9PW51bGwpcmV0dXJuIFVOKG4sbyk7e2xldCBpPW5bdC5pbmRleF07cmV0dXJuIFpDKGkpP0tMKC0xLGkpOlpzKGkpfX1lbHNle2lmKGUmMzIpcmV0dXJuIENCKHQsbikoKXx8WnMoblt0LmluZGV4XSk7e2xldCBvPVZKKG4sdCk7aWYobyE9PW51bGwpe2lmKEFycmF5LmlzQXJyYXkobykpcmV0dXJuIG9bMF07bGV0IGk9RFIobltiZ10pO3JldHVybiBuZ0Rldk1vZGUmJlRLKGkpLFVOKGksbyl9ZWxzZSByZXR1cm4gVU4obix0Lm5leHQpfX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gVkoobix0KXtpZih0IT09bnVsbCl7bGV0IG89bltiZ11bWWNdLGk9dC5wcm9qZWN0aW9uO3JldHVybiBuZ0Rldk1vZGUmJnowdChuKSxvLnByb2plY3Rpb25baV19cmV0dXJuIG51bGx9ZnVuY3Rpb24gS0wobix0KXtsZXQgZT1CbCtuKzE7aWYoZTx0Lmxlbmd0aCl7bGV0IG89dFtlXSxpPW9bUm5dLmZpcnN0Q2hpbGQ7aWYoaSE9PW51bGwpcmV0dXJuIFVOKG8saSl9cmV0dXJuIHRbdlRdfWZ1bmN0aW9uIGpKKG4sdCxlKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZU5vZGUrKztsZXQgbz1UVChuLHQpO28mJnJidChuLG8sdCxlKX1mdW5jdGlvbiB5QihuLHQsZSxvLGksYSxyKXtmb3IoO2UhPW51bGw7KXtuZ0Rldk1vZGUmJnl5KGUsbyksbmdEZXZNb2RlJiZHYyhlLDYzKTtsZXQgcz1vW2UuaW5kZXhdLGw9ZS50eXBlO2lmKHImJnQ9PT0wJiYocyYmamMoWnMocyksbyksZS5mbGFnc3w9NCksKGUuZmxhZ3MmNjQpIT09NjQpaWYobCY4KXlCKG4sdCxlLmNoaWxkLG8saSxhLCExKSxkdyh0LG4saSxzLGEpO2Vsc2UgaWYobCYzMil7bGV0IGM9Q0IoZSxvKSxtO2Zvcig7bT1jKCk7KWR3KHQsbixpLG0sYSk7ZHcodCxuLGkscyxhKX1lbHNlIGwmMTY/VUoobix0LG8sZSxpLGEpOihuZ0Rldk1vZGUmJkdjKGUsNyksZHcodCxuLGkscyxhKSk7ZT1yP2UucHJvamVjdGlvbk5leHQ6ZS5uZXh0fX1mdW5jdGlvbiBJUihuLHQsZSxvLGksYSl7eUIoZSxvLG4uZmlyc3RDaGlsZCx0LGksYSwhMSl9ZnVuY3Rpb24gbGJ0KG4sdCxlKXtsZXQgbz10W1BvXSxpPURKKG4sZSx0KSxhPWUucGFyZW50fHx0W1ljXSxyPUhKKGEsZSx0KTtVSihvLDAsdCxlLGkscil9ZnVuY3Rpb24gVUoobix0LGUsbyxpLGEpe2xldCByPWVbYmddLHM9cltZY107bmdEZXZNb2RlJiZpbyh0eXBlb2Ygby5wcm9qZWN0aW9uLCJudW1iZXIiLCJleHBlY3RpbmcgcHJvamVjdGlvbiBpbmRleCIpO2xldCBsPXMucHJvamVjdGlvbltvLnByb2plY3Rpb25dO2lmKEFycmF5LmlzQXJyYXkobCkpZm9yKGxldCBjPTA7YzxsLmxlbmd0aDtjKyspe2xldCBtPWxbY107ZHcodCxuLGksbSxhKX1lbHNle2xldCBjPWwsbT1yW3lyXTt5QihuLHQsYyxtLGksYSwhMCl9fWZ1bmN0aW9uIGNidChuLHQsZSxvLGkpe25nRGV2TW9kZSYmeGIoZSk7bGV0IGE9ZVt2VF0scj1acyhlKTthIT09ciYmZHcodCxuLG8sYSxpKTtmb3IobGV0IHM9Qmw7czxlLmxlbmd0aDtzKyspe2xldCBsPWVbc107SVIobFtSbl0sbCxuLHQsbyxhKX19ZnVuY3Rpb24gbWJ0KG4sdCxlLG8saSl7bGV0IGE9SWEobik7aWYodClpPyhuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZENsYXNzKyssYT9uLmFkZENsYXNzKGUsbyk6KG5nRGV2TW9kZSYmdW4oZS5jbGFzc0xpc3QsIkhUTUxFbGVtZW50IGV4cGVjdGVkIiksZS5jbGFzc0xpc3QuYWRkKG8pKSk6KG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlQ2xhc3MrKyxhP24ucmVtb3ZlQ2xhc3MoZSxvKTplLmNsYXNzTGlzdC5yZW1vdmUobykpO2Vsc2V7bGV0IHI9by5pbmRleE9mKCItIik9PT0tMT92b2lkIDA6R08uRGFzaENhc2U7aWYoaT09bnVsbCluZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZVN0eWxlKyssYT9uLnJlbW92ZVN0eWxlKGUsbyxyKTplLnN0eWxlLnJlbW92ZVByb3BlcnR5KG8pO2Vsc2V7bGV0IHM9dHlwZW9mIGk9PSJzdHJpbmciP2kuZW5kc1dpdGgoIiFpbXBvcnRhbnQiKTohMTtzJiYoaT1pLnNsaWNlKDAsLTEwKSxyfD1HTy5JbXBvcnRhbnQpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0U3R5bGUrKyxhP24uc2V0U3R5bGUoZSxvLGkscik6KG5nRGV2TW9kZSYmdW4oZS5zdHlsZSwiSFRNTEVsZW1lbnQgZXhwZWN0ZWQiKSxlLnN0eWxlLnNldFByb3BlcnR5KG8saSxzPyJpbXBvcnRhbnQiOiIiKSl9fX1mdW5jdGlvbiBZSihuLHQsZSl7bmdEZXZNb2RlJiZ5UihlLCInbmV3VmFsdWUnIHNob3VsZCBiZSBhIHN0cmluZyIpLElhKG4pP24uc2V0QXR0cmlidXRlKHQsInN0eWxlIixlKTp0LnN0eWxlLmNzc1RleHQ9ZSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldFN0eWxlKyt9ZnVuY3Rpb24geEIobix0LGUpe25nRGV2TW9kZSYmeVIoZSwiJ25ld1ZhbHVlJyBzaG91bGQgYmUgYSBzdHJpbmciKSxJYShuKT9lPT09IiI/bi5yZW1vdmVBdHRyaWJ1dGUodCwiY2xhc3MiKTpuLnNldEF0dHJpYnV0ZSh0LCJjbGFzcyIsZSk6dC5jbGFzc05hbWU9ZSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldENsYXNzTmFtZSsrfWZ1bmN0aW9uIEdKKG4sdCxlKXtuZ0Rldk1vZGUmJnFDKHQsIiIsJ2NhbiBub3QgbG9vayBmb3IgIiIgc3RyaW5nLicpO2xldCBvPW4ubGVuZ3RoO2Zvcig7Oyl7bGV0IGk9bi5pbmRleE9mKHQsZSk7aWYoaT09PS0xKXJldHVybiBpO2lmKGk9PT0wfHxuLmNoYXJDb2RlQXQoaS0xKTw9MzIpe2xldCBhPXQubGVuZ3RoO2lmKGkrYT09PW98fG4uY2hhckNvZGVBdChpK2EpPD0zMilyZXR1cm4gaX1lPWkrMX19dmFyIEtzZT1pQitFSixXSj0ibmctdGVtcGxhdGUiO2Z1bmN0aW9uIGZidChuLHQsZSl7bmdEZXZNb2RlJiZpbyh0LHQudG9Mb3dlckNhc2UoKSwiQ2xhc3MgbmFtZSBleHBlY3RlZCB0byBiZSBsb3dlcmNhc2UuIik7bGV0IG89MDtmb3IoO288bi5sZW5ndGg7KXtsZXQgaT1uW28rK107aWYoZSYmaT09PSJjbGFzcyIpe2lmKGk9bltvXSxHSihpLnRvTG93ZXJDYXNlKCksdCwwKSE9PS0xKXJldHVybiEwfWVsc2UgaWYoaT09PTEpe2Zvcig7bzxuLmxlbmd0aCYmdHlwZW9mKGk9bltvKytdKT09InN0cmluZyI7KWlmKGkudG9Mb3dlckNhc2UoKT09PXQpcmV0dXJuITA7cmV0dXJuITF9fXJldHVybiExfWZ1bmN0aW9uIHFKKG4pe3JldHVybiBuLnR5cGU9PT00JiZuLnZhbHVlIT09V0p9ZnVuY3Rpb24gcGJ0KG4sdCxlKXtsZXQgbz1uLnR5cGU9PT00JiYhZT9XSjpuLnZhbHVlO3JldHVybiB0PT09b31mdW5jdGlvbiBkYnQobix0LGUpe25nRGV2TW9kZSYmdW4odFswXSwiU2VsZWN0b3Igc2hvdWxkIGhhdmUgYSB0YWcgbmFtZSIpO2xldCBvPTQsaT1uLmF0dHJzfHxbXSxhPWhidChpKSxyPSExO2ZvcihsZXQgcz0wO3M8dC5sZW5ndGg7cysrKXtsZXQgbD10W3NdO2lmKHR5cGVvZiBsPT0ibnVtYmVyIil7aWYoIXImJiFVQyhvKSYmIVVDKGwpKXJldHVybiExO2lmKHImJlVDKGwpKWNvbnRpbnVlO3I9ITEsbz1sfG8mMTtjb250aW51ZX1pZighcilpZihvJjQpe2lmKG89MnxvJjEsbCE9PSIiJiYhcGJ0KG4sbCxlKXx8bD09PSIiJiZ0Lmxlbmd0aD09PTEpe2lmKFVDKG8pKXJldHVybiExO3I9ITB9fWVsc2V7bGV0IGM9byY4P2w6dFsrK3NdO2lmKG8mOCYmbi5hdHRycyE9PW51bGwpe2lmKCFmYnQobi5hdHRycyxjLGUpKXtpZihVQyhvKSlyZXR1cm4hMTtyPSEwfWNvbnRpbnVlfWxldCBtPW8mOD8iY2xhc3MiOmwsZj1nYnQobSxpLHFKKG4pLGUpO2lmKGY9PT0tMSl7aWYoVUMobykpcmV0dXJuITE7cj0hMDtjb250aW51ZX1pZihjIT09IiIpe2xldCBwO2Y+YT9wPSIiOihuZ0Rldk1vZGUmJnFDKGlbZl0sMCwiV2UgZG8gbm90IG1hdGNoIGRpcmVjdGl2ZXMgb24gbmFtZXNwYWNlZCBhdHRyaWJ1dGVzIikscD1pW2YrMV0udG9Mb3dlckNhc2UoKSk7bGV0IGc9byY4P3A6bnVsbDtpZihnJiZHSihnLGMsMCkhPT0tMXx8byYyJiZjIT09cCl7aWYoVUMobykpcmV0dXJuITE7cj0hMH19fX1yZXR1cm4gVUMobyl8fHJ9ZnVuY3Rpb24gVUMobil7cmV0dXJuKG4mMSk9PT0wfWZ1bmN0aW9uIGdidChuLHQsZSxvKXtpZih0PT09bnVsbClyZXR1cm4tMTtsZXQgaT0wO2lmKG98fCFlKXtsZXQgYT0hMTtmb3IoO2k8dC5sZW5ndGg7KXtsZXQgcj10W2ldO2lmKHI9PT1uKXJldHVybiBpO2lmKHI9PT0zfHxyPT09NilhPSEwO2Vsc2UgaWYocj09PTF8fHI9PT0yKXtsZXQgcz10WysraV07Zm9yKDt0eXBlb2Ygcz09InN0cmluZyI7KXM9dFsrK2ldO2NvbnRpbnVlfWVsc2V7aWYocj09PTQpYnJlYWs7aWYocj09PTApe2krPTQ7Y29udGludWV9fWkrPWE/MToyfXJldHVybi0xfWVsc2UgcmV0dXJuIF9idCh0LG4pfWZ1bmN0aW9uIFpKKG4sdCxlPSExKXtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKylpZihkYnQobix0W29dLGUpKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHVidChuKXtsZXQgdD1uLmF0dHJzO2lmKHQhPW51bGwpe2xldCBlPXQuaW5kZXhPZig1KTtpZigoZSYxKT09PTApcmV0dXJuIHRbZSsxXX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBoYnQobil7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2xldCBlPW5bdF07aWYoSksoZSkpcmV0dXJuIHR9cmV0dXJuIG4ubGVuZ3RofWZ1bmN0aW9uIF9idChuLHQpe2xldCBlPW4uaW5kZXhPZig0KTtpZihlPi0xKWZvcihlKys7ZTxuLmxlbmd0aDspe2xldCBvPW5bZV07aWYodHlwZW9mIG89PSJudW1iZXIiKXJldHVybi0xO2lmKG89PT10KXJldHVybiBlO2UrK31yZXR1cm4tMX1mdW5jdGlvbiBDYnQobix0KXt0OmZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbz10W2VdO2lmKG4ubGVuZ3RoPT09by5sZW5ndGgpe2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKWlmKG5baV0hPT1vW2ldKWNvbnRpbnVlIHQ7cmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIE5RKG4sdCl7cmV0dXJuIG4/Ijpub3QoIit0LnRyaW0oKSsiKSI6dH1mdW5jdGlvbiBNYnQobil7bGV0IHQ9blswXSxlPTEsbz0yLGk9IiIsYT0hMTtmb3IoO2U8bi5sZW5ndGg7KXtsZXQgcj1uW2VdO2lmKHR5cGVvZiByPT0ic3RyaW5nIilpZihvJjIpe2xldCBzPW5bKytlXTtpKz0iWyIrcisocy5sZW5ndGg+MD8nPSInK3MrJyInOiIiKSsiXSJ9ZWxzZSBvJjg/aSs9Ii4iK3I6byY0JiYoaSs9IiAiK3IpO2Vsc2UgaSE9PSIiJiYhVUMocikmJih0Kz1OUShhLGkpLGk9IiIpLG89cixhPWF8fCFVQyhvKTtlKyt9cmV0dXJuIGkhPT0iIiYmKHQrPU5RKGEsaSkpLHR9ZnVuY3Rpb24gYmJ0KG4pe3JldHVybiBuLm1hcChNYnQpLmpvaW4oIiwiKX1mdW5jdGlvbiBPYnQobil7bGV0IHQ9W10sZT1bXSxvPTEsaT0yO2Zvcig7bzxuLmxlbmd0aDspe2xldCBhPW5bb107aWYodHlwZW9mIGE9PSJzdHJpbmciKWk9PT0yP2EhPT0iIiYmdC5wdXNoKGEsblsrK29dKTppPT09OCYmZS5wdXNoKGEpO2Vsc2V7aWYoIVVDKGkpKWJyZWFrO2k9YX1vKyt9cmV0dXJue2F0dHJzOnQsY2xhc3NlczplfX12YXIgJG49dHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZT97X19icmFuZF9fOiJOT19DSEFOR0UifTp7fTtmdW5jdGlvbiB4KG4pe25nRGV2TW9kZSYmUncobiwwLCJDYW4gb25seSBhZHZhbmNlIGZvcndhcmQiKSxYSihDbygpLHZlKCksWW0oKStuLEF3KCkpfWZ1bmN0aW9uIFhKKG4sdCxlLG8pe2lmKG5nRGV2TW9kZSYmSTB0KHQsZSksIW8paWYoKHRbUW9dJjMpPT09Myl7bGV0IGE9bi5wcmVPcmRlckNoZWNrSG9va3M7YSE9PW51bGwmJkJOKHQsYSxlKX1lbHNle2xldCBhPW4ucHJlT3JkZXJIb29rczthIT09bnVsbCYmVk4odCxhLDAsZSl9T3koZSl9ZnVuY3Rpb24gek4obix0KXtyZXR1cm4gbmdEZXZNb2RlJiZjUihuLDAsMzI3NjcpLG5nRGV2TW9kZSYmY1IodCwwLDMyNzY3KSxuPDwxN3x0PDwyfWZ1bmN0aW9uIGJiKG4pe3JldHVybiBuZ0Rldk1vZGUmJldhKG4sImV4cGVjdGVkIG51bWJlciIpLG4+PjE3JjMyNzY3fWZ1bmN0aW9uIFFKKG4pe3JldHVybiBuZ0Rldk1vZGUmJldhKG4sImV4cGVjdGVkIG51bWJlciIpLChuJjIpPT0yfWZ1bmN0aW9uIFBidChuLHQpe3JldHVybiBuZ0Rldk1vZGUmJldhKG4sImV4cGVjdGVkIG51bWJlciIpLG5nRGV2TW9kZSYmY1IodCwwLDMyNzY3KSxuJjEzMTA3MXx0PDwxN31mdW5jdGlvbiBKTChuKXtyZXR1cm4gbmdEZXZNb2RlJiZXYShuLCJleHBlY3RlZCBudW1iZXIiKSxufDJ9ZnVuY3Rpb24gV08obil7cmV0dXJuIG5nRGV2TW9kZSYmV2EobiwiZXhwZWN0ZWQgbnVtYmVyIiksKG4mMTMxMDY4KT4+Mn1mdW5jdGlvbiBvTChuLHQpe3JldHVybiBuZ0Rldk1vZGUmJldhKG4sImV4cGVjdGVkIG51bWJlciIpLG5nRGV2TW9kZSYmY1IodCwwLDMyNzY3KSxuJi0xMzEwNjl8dDw8Mn1mdW5jdGlvbiBLSihuKXtyZXR1cm4gbmdEZXZNb2RlJiZXYShuLCJleHBlY3RlZCBudW1iZXIiKSwobiYxKT09PTF9ZnVuY3Rpb24gJEwobil7cmV0dXJuIG5nRGV2TW9kZSYmV2EobiwiZXhwZWN0ZWQgbnVtYmVyIiksbnwxfWZ1bmN0aW9uIEpKKG4sdCl7aWYobmdEZXZNb2RlKU9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJkZWJ1ZyIse3ZhbHVlOnQsZW51bWVyYWJsZTohMX0pO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIGBuZ0Rldk1vZGVgIHNvIHRoYXQgaXQgY2FuIGJlIHRyZWUgc2hha2VuIGluIHByb2R1Y3Rpb24hIil9ZnVuY3Rpb24gc3Yobix0KXtpZihuZ0Rldk1vZGUpT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sImRlYnVnIix7Z2V0OnQsZW51bWVyYWJsZTohMX0pO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIGBuZ0Rldk1vZGVgIHNvIHRoYXQgaXQgY2FuIGJlIHRyZWUgc2hha2VuIGluIHByb2R1Y3Rpb24hIil9dmFyIFFPPSh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8ISFuZ0Rldk1vZGUpJiZ4UigpLEhOLEZOLGlMO2Z1bmN0aW9uIHlidChuKXtyZXR1cm4geGJ0KG4udHlwZSxuLnRlbXBsYXRlJiZuLnRlbXBsYXRlLm5hbWUpLmNvbmNhdChuLmJsdWVwcmludCl9ZnVuY3Rpb24geGJ0KG4sdCl7c3dpdGNoKG4pe2Nhc2UgMDpyZXR1cm4gaUw9PT12b2lkIDAmJihpTD1uZXcoQ2coIkxSb290VmlldyIpKSksaUw7Y2FzZSAxOkhOPT09dm9pZCAwJiYoSE49bmV3IE1hcCk7bGV0IGU9SE4uZ2V0KHQpO3JldHVybiBlPT09dm9pZCAwJiYoZT1uZXcoQ2coIkxDb21wb25lbnRWaWV3IitUUSh0KSkpLEhOLnNldCh0LGUpKSxlO2Nhc2UgMjpGTj09PXZvaWQgMCYmKEZOPW5ldyBNYXApO2xldCBvPUZOLmdldCh0KTtyZXR1cm4gbz09PXZvaWQgMCYmKG89bmV3KENnKCJMRW1iZWRkZWRWaWV3IitUUSh0KSkpLEZOLnNldCh0LG8pKSxvfX1mdW5jdGlvbiBUUShuKXtpZihuPT1udWxsKXJldHVybiIiO2xldCB0PW4ubGFzdEluZGV4T2YoIl9UZW1wbGF0ZSIpO3JldHVybiJfIisodD09PS0xP246bi5zdWJzdHIoMCx0KSl9dmFyIHZidD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE8sYixSLEUsaixydCxKLEV0LGp0LGt0LHcsVSxudCxsdCxidCxvdCl7dGhpcy50eXBlPXQsdGhpcy5ibHVlcHJpbnQ9ZSx0aGlzLnRlbXBsYXRlPW8sdGhpcy5xdWVyaWVzPWksdGhpcy52aWV3UXVlcnk9YSx0aGlzLmRlY2xUTm9kZT1yLHRoaXMuZGF0YT1zLHRoaXMuYmluZGluZ1N0YXJ0SW5kZXg9bCx0aGlzLmV4cGFuZG9TdGFydEluZGV4PWMsdGhpcy5ob3N0QmluZGluZ09wQ29kZXM9bSx0aGlzLmZpcnN0Q3JlYXRlUGFzcz1mLHRoaXMuZmlyc3RVcGRhdGVQYXNzPXAsdGhpcy5zdGF0aWNWaWV3UXVlcmllcz1nLHRoaXMuc3RhdGljQ29udGVudFF1ZXJpZXM9Xyx0aGlzLnByZU9yZGVySG9va3M9TSx0aGlzLnByZU9yZGVyQ2hlY2tIb29rcz15LHRoaXMuY29udGVudEhvb2tzPU8sdGhpcy5jb250ZW50Q2hlY2tIb29rcz1iLHRoaXMudmlld0hvb2tzPVIsdGhpcy52aWV3Q2hlY2tIb29rcz1FLHRoaXMuZGVzdHJveUhvb2tzPWosdGhpcy5jbGVhbnVwPXJ0LHRoaXMuY29udGVudFF1ZXJpZXM9Six0aGlzLmNvbXBvbmVudHM9RXQsdGhpcy5kaXJlY3RpdmVSZWdpc3RyeT1qdCx0aGlzLnBpcGVSZWdpc3RyeT1rdCx0aGlzLmZpcnN0Q2hpbGQ9dyx0aGlzLnNjaGVtYXM9VSx0aGlzLmNvbnN0cz1udCx0aGlzLmluY29tcGxldGVGaXJzdFBhc3M9bHQsdGhpcy5fZGVjbHM9YnQsdGhpcy5fdmFycz1vdH1nZXQgdGVtcGxhdGVfKCl7bGV0IHQ9W107cmV0dXJuICRKKHRoaXMuZmlyc3RDaGlsZCx0KSx0LmpvaW4oIiIpfWdldCB0eXBlXygpe3JldHVybiBSMHRbdGhpcy50eXBlXXx8YFRWaWV3VHlwZS4/JHt0aGlzLnR5cGV9P2B9fSx0OD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE8sYixSLEUsaixydCxKLEV0LGp0LGt0LHcsVSxudCxsdCxidCxvdCl7dGhpcy50Vmlld189dCx0aGlzLnR5cGU9ZSx0aGlzLmluZGV4PW8sdGhpcy5pbnNlcnRCZWZvcmVJbmRleD1pLHRoaXMuaW5qZWN0b3JJbmRleD1hLHRoaXMuZGlyZWN0aXZlU3RhcnQ9cix0aGlzLmRpcmVjdGl2ZUVuZD1zLHRoaXMuZGlyZWN0aXZlU3R5bGluZ0xhc3Q9bCx0aGlzLnByb3BlcnR5QmluZGluZ3M9Yyx0aGlzLmZsYWdzPW0sdGhpcy5wcm92aWRlckluZGV4ZXM9Zix0aGlzLnZhbHVlPXAsdGhpcy5hdHRycz1nLHRoaXMubWVyZ2VkQXR0cnM9Xyx0aGlzLmxvY2FsTmFtZXM9TSx0aGlzLmluaXRpYWxJbnB1dHM9eSx0aGlzLmlucHV0cz1PLHRoaXMub3V0cHV0cz1iLHRoaXMudFZpZXdzPVIsdGhpcy5uZXh0PUUsdGhpcy5wcm9qZWN0aW9uTmV4dD1qLHRoaXMuY2hpbGQ9cnQsdGhpcy5wYXJlbnQ9Six0aGlzLnByb2plY3Rpb249RXQsdGhpcy5zdHlsZXM9anQsdGhpcy5zdHlsZXNXaXRob3V0SG9zdD1rdCx0aGlzLnJlc2lkdWFsU3R5bGVzPXcsdGhpcy5jbGFzc2VzPVUsdGhpcy5jbGFzc2VzV2l0aG91dEhvc3Q9bnQsdGhpcy5yZXNpZHVhbENsYXNzZXM9bHQsdGhpcy5jbGFzc0JpbmRpbmdzPWJ0LHRoaXMuc3R5bGVCaW5kaW5ncz1vdH1kZWJ1Z05vZGVJbmplY3RvclBhdGgodCl7bGV0IGU9W10sbz1yQih0aGlzLHQpO2lmKG89PT0tMSl7bGV0IGk9RVQodGhpcyx0KTtpIT09bXkmJihvPV93KGkpLHQ9Q3coaSx0KSl9Zm9yKDtvIT09LTE7KXtuZ0Rldk1vZGUmJlo4KHQsbyk7bGV0IGk9dFtSbl0uZGF0YVtvKzhdO2UucHVzaChuJChpLHQpKTtsZXQgYT10W28rOF07YT09PW15P289LTE6KG89X3coYSksdD1DdyhhLHQpKX1yZXR1cm4gZX1nZXQgdHlwZV8oKXtyZXR1cm4gcFIodGhpcy50eXBlKXx8YFROb2RlVHlwZS4/JHt0aGlzLnR5cGV9P2B9Z2V0IGZsYWdzXygpe2xldCB0PVtdO3JldHVybiB0aGlzLmZsYWdzJjE2JiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzQ2xhc3NJbnB1dCIpLHRoaXMuZmxhZ3MmOCYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc0NvbnRlbnRRdWVyeSIpLHRoaXMuZmxhZ3MmMzImJnQucHVzaCgiVE5vZGVGbGFncy5oYXNTdHlsZUlucHV0IiksdGhpcy5mbGFncyYxMjgmJnQucHVzaCgiVE5vZGVGbGFncy5oYXNIb3N0QmluZGluZ3MiKSx0aGlzLmZsYWdzJjImJnQucHVzaCgiVE5vZGVGbGFncy5pc0NvbXBvbmVudEhvc3QiKSx0aGlzLmZsYWdzJjEmJnQucHVzaCgiVE5vZGVGbGFncy5pc0RpcmVjdGl2ZUhvc3QiKSx0aGlzLmZsYWdzJjY0JiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNEZXRhY2hlZCIpLHRoaXMuZmxhZ3MmNCYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzUHJvamVjdGVkIiksdC5qb2luKCJ8Iil9Z2V0IHRlbXBsYXRlXygpe2lmKHRoaXMudHlwZSYxKXJldHVybiB0aGlzLnZhbHVlO2xldCB0PVtdLGU9dHlwZW9mIHRoaXMudmFsdWU9PSJzdHJpbmciJiZ0aGlzLnZhbHVlfHx0aGlzLnR5cGVfO2lmKHQucHVzaCgiPCIsZSksdGhpcy5mbGFncyYmdC5wdXNoKCIgIix0aGlzLmZsYWdzXyksdGhpcy5hdHRycylmb3IobGV0IG89MDtvPHRoaXMuYXR0cnMubGVuZ3RoOyl7bGV0IGk9dGhpcy5hdHRyc1tvKytdO2lmKHR5cGVvZiBpPT0ibnVtYmVyIilicmVhaztsZXQgYT10aGlzLmF0dHJzW28rK107dC5wdXNoKCIgIixpLCc9IicsYSwnIicpfXJldHVybiB0LnB1c2goIj4iKSwkSih0aGlzLmNoaWxkLHQpLHQucHVzaCgiPC8iLGUsIj4iKSx0LmpvaW4oIiIpfWdldCBzdHlsZUJpbmRpbmdzXygpe3JldHVybiBBUSh0aGlzLCExKX1nZXQgY2xhc3NCaW5kaW5nc18oKXtyZXR1cm4gQVEodGhpcywhMCl9Z2V0IHByb3ZpZGVySW5kZXhTdGFydF8oKXtyZXR1cm4gdGhpcy5wcm92aWRlckluZGV4ZXMmMTA0ODU3NX1nZXQgcHJvdmlkZXJJbmRleEVuZF8oKXtyZXR1cm4gdGhpcy5wcm92aWRlckluZGV4U3RhcnRfKyh0aGlzLnByb3ZpZGVySW5kZXhlcz4+PjIwKX19LHdidD10ODtmdW5jdGlvbiBBUShuLHQpe2xldCBlPW4udFZpZXdfLmRhdGEsbz1bXSxpPXQ/bi5jbGFzc0JpbmRpbmdzOm4uc3R5bGVCaW5kaW5ncyxhPWJiKGkpLHI9V08oaSkscz1yIT09MCxsPXM/cjphO2Zvcig7bCE9PTA7KXtsZXQgYz1lW2xdLG09ZVtsKzFdO28udW5zaGlmdCh7a2V5OmMsaW5kZXg6bCxpc1RlbXBsYXRlOnMscHJldkR1cGxpY2F0ZTpRSihtKSxuZXh0RHVwbGljYXRlOktKKG0pLG5leHRJbmRleDpXTyhtKSxwcmV2SW5kZXg6YmIobSl9KSxsPT09YSYmKHM9ITEpLGw9YmIobSl9cmV0dXJuIG8ucHVzaCgodD9uLnJlc2lkdWFsQ2xhc3NlczpuLnJlc2lkdWFsU3R5bGVzKXx8bnVsbCksb31mdW5jdGlvbiAkSihuLHQpe2Zvcig7bjspdC5wdXNoKG4udGVtcGxhdGVfKSxuPW4ubmV4dH12YXIgU2J0PVFPJiZDZygiVFZpZXdEYXRhIil8fG51bGwsYUw7ZnVuY3Rpb24gUmJ0KG4pe3JldHVybiBhTD09PXZvaWQgMCYmKGFMPW5ldyBTYnQpLGFMLmNvbmNhdChuKX12YXIgRWJ0PVFPJiZDZygiTFZpZXdCbHVlcHJpbnQiKXx8bnVsbCxrYnQ9UU8mJkNnKCJNYXRjaGVzQXJyYXkiKXx8bnVsbCxOYnQ9UU8mJkNnKCJUVmlld0NvbXBvbmVudHMiKXx8bnVsbCxUYnQ9UU8mJkNnKCJUTm9kZUxvY2FsTmFtZXMiKXx8bnVsbCxBYnQ9UU8mJkNnKCJUTm9kZUluaXRpYWxJbnB1dHMiKXx8bnVsbCwkc2U9UU8mJkNnKCJUTm9kZUluaXRpYWxEYXRhIil8fG51bGwsRGJ0PVFPJiZDZygiTENsZWFudXAiKXx8bnVsbCxJYnQ9UU8mJkNnKCJUQ2xlYW51cCIpfHxudWxsO2Z1bmN0aW9uIHpidChuKXtKSihuLG5ldyBlOChuKSl9ZnVuY3Rpb24gSGJ0KG4pe0pKKG4sbmV3IG44KG4pKX1mdW5jdGlvbiBzeShuKXtpZihuKXtsZXQgdD1uLmRlYnVnO3JldHVybiB1bih0LCJPYmplY3QgZG9lcyBub3QgaGF2ZSBhIGRlYnVnIHJlcHJlc2VudGF0aW9uLiIpLHR9ZWxzZSByZXR1cm4gbn1mdW5jdGlvbiB2QihuLHQ9ITEpe2xldCBlPVpzKG4pO2lmKGUpc3dpdGNoKGUubm9kZVR5cGUpe2Nhc2UgTm9kZS5URVhUX05PREU6cmV0dXJuIGUudGV4dENvbnRlbnQ7Y2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpyZXR1cm5gPCEtLSR7ZS50ZXh0Q29udGVudH0tLT5gO2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6bGV0IG89ZS5vdXRlckhUTUw7aWYodClyZXR1cm4gbzt7bGV0IGk9Ij4iK2UuaW5uZXJIVE1MKyI8IjtyZXR1cm4gby5zcGxpdChpKVswXSsiPiJ9fXJldHVybiBudWxsfXZhciBlOD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yYXdfbFZpZXc9dH1nZXQgZmxhZ3MoKXtsZXQgdD10aGlzLl9yYXdfbFZpZXdbUW9dO3JldHVybntfX3Jhd19fZmxhZ3NfXzp0LGluaXRQaGFzZVN0YXRlOnQmMyxjcmVhdGlvbk1vZGU6ISEodCY0KSxmaXJzdFZpZXdQYXNzOiEhKHQmOCksY2hlY2tBbHdheXM6ISEodCYxNiksZGlydHk6ISEodCY2NCksYXR0YWNoZWQ6ISEodCYxMjgpLGRlc3Ryb3llZDohISh0JjI1NiksaXNSb290OiEhKHQmNTEyKSxpbmRleFdpdGhpbkluaXRQaGFzZTp0Pj4xMX19Z2V0IHBhcmVudCgpe3JldHVybiBzeSh0aGlzLl9yYXdfbFZpZXdbeXJdKX1nZXQgaG9zdEhUTUwoKXtyZXR1cm4gdkIodGhpcy5fcmF3X2xWaWV3W2xfXSwhMCl9Z2V0IGh0bWwoKXtyZXR1cm4odGhpcy5ub2Rlc3x8W10pLm1hcCh0JCkuam9pbigiIil9Z2V0IGNvbnRleHQoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3W1RyXX1nZXQgbm9kZXMoKXtsZXQgdD10aGlzLl9yYXdfbFZpZXcsZT10W1JuXS5maXJzdENoaWxkO3JldHVybiBlJChlLHQpfWdldCB0ZW1wbGF0ZSgpe3JldHVybiB0aGlzLnRWaWV3LnRlbXBsYXRlX31nZXQgdFZpZXcoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3W1JuXX1nZXQgY2xlYW51cCgpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbY3ZdfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbbVJdfWdldCByZW5kZXJlckZhY3RvcnkoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3W3J2XX1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3W1BvXX1nZXQgc2FuaXRpemVyKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1taTl19Z2V0IGNoaWxkSGVhZCgpe3JldHVybiBzeSh0aGlzLl9yYXdfbFZpZXdbaHddKX1nZXQgbmV4dCgpe3JldHVybiBzeSh0aGlzLl9yYXdfbFZpZXdbaGddKX1nZXQgY2hpbGRUYWlsKCl7cmV0dXJuIHN5KHRoaXMuX3Jhd19sVmlld1tSTF0pfWdldCBkZWNsYXJhdGlvblZpZXcoKXtyZXR1cm4gc3kodGhpcy5fcmF3X2xWaWV3W0N5XSl9Z2V0IHF1ZXJpZXMoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3W19nXX1nZXQgdEhvc3QoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3W1ljXX1nZXQgZGVjbHMoKXtyZXR1cm4gckwodGhpcy50Vmlldyx0aGlzLl9yYXdfbFZpZXcsZ2ksdGhpcy50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCl9Z2V0IHZhcnMoKXtyZXR1cm4gckwodGhpcy50Vmlldyx0aGlzLl9yYXdfbFZpZXcsdGhpcy50Vmlldy5iaW5kaW5nU3RhcnRJbmRleCx0aGlzLnRWaWV3LmV4cGFuZG9TdGFydEluZGV4KX1nZXQgZXhwYW5kbygpe3JldHVybiByTCh0aGlzLnRWaWV3LHRoaXMuX3Jhd19sVmlldyx0aGlzLnRWaWV3LmV4cGFuZG9TdGFydEluZGV4LHRoaXMuX3Jhd19sVmlldy5sZW5ndGgpfWdldCBjaGlsZFZpZXdzKCl7bGV0IHQ9W10sZT10aGlzLmNoaWxkSGVhZDtmb3IoO2U7KXQucHVzaChlKSxlPWUubmV4dDtyZXR1cm4gdH19O2Z1bmN0aW9uIHQkKG4pe2lmKG4udHlwZT09PSJFbGVtZW50Q29udGFpbmVyIilyZXR1cm4obi5jaGlsZHJlbnx8W10pLm1hcCh0JCkuam9pbigiIik7aWYobi50eXBlPT09IkljdUNvbnRhaW5lciIpdGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTtyZXR1cm4gdkIobi5uYXRpdmUsITApfHwiIn1mdW5jdGlvbiByTChuLHQsZSxvKXtsZXQgaT1bXTtmb3IobGV0IGE9ZTthPG87YSsrKWkucHVzaCh7aW5kZXg6YSx0Om4uZGF0YVthXSxsOnRbYV19KTtyZXR1cm57c3RhcnQ6ZSxlbmQ6byxsZW5ndGg6by1lLGNvbnRlbnQ6aX19ZnVuY3Rpb24gZSQobix0KXtpZihuKXtsZXQgZT1bXSxvPW47Zm9yKDtvOyllLnB1c2gobiQobyx0KSksbz1vLm5leHQ7cmV0dXJuIGV9ZWxzZSByZXR1cm5bXX1mdW5jdGlvbiBuJChuLHQpe2xldCBlPXRbbi5pbmRleF0sbz1acyhlKSxpPVtdLGE9W10scj10W1JuXTtmb3IobGV0IHM9bi5kaXJlY3RpdmVTdGFydDtzPG4uZGlyZWN0aXZlRW5kO3MrKyl7bGV0IGw9ci5kYXRhW3NdO2kucHVzaChsLnR5cGUpLGEucHVzaCh0W3NdKX1yZXR1cm57aHRtbDp2QihvKSx0eXBlOnBSKG4udHlwZSksdE5vZGU6bixuYXRpdmU6byxjaGlsZHJlbjplJChuLmNoaWxkLHQpLGZhY3RvcmllczppLGluc3RhbmNlczphLGluamVjdG9yOkZidChuLHIsdCksZ2V0IGluamVjdG9yUmVzb2x1dGlvblBhdGgoKXtyZXR1cm4gbi5kZWJ1Z05vZGVJbmplY3RvclBhdGgodCl9fX1mdW5jdGlvbiBGYnQobix0LGUpe2xldCBvPVtdO2ZvcihsZXQgcj1uLnByb3ZpZGVySW5kZXhTdGFydF87cjxuLnByb3ZpZGVySW5kZXhFbmRfO3IrKylvLnB1c2godC5kYXRhW3JdKTtsZXQgaT1bXTtmb3IobGV0IHI9bi5wcm92aWRlckluZGV4RW5kXztyPG4uZGlyZWN0aXZlRW5kO3IrKylpLnB1c2godC5kYXRhW3JdKTtyZXR1cm57Ymxvb206RFEoZSxuLmluamVjdG9ySW5kZXgpLGN1bXVsYXRpdmVCbG9vbTpEUSh0LmRhdGEsbi5pbmplY3RvckluZGV4KSxwcm92aWRlcnM6aSx2aWV3UHJvdmlkZXJzOm8scGFyZW50SW5qZWN0b3JJbmRleDplW24ucHJvdmlkZXJJbmRleFN0YXJ0Xy0xXX19ZnVuY3Rpb24gcnkobix0KXtsZXQgZT1uW3RdO2lmKHR5cGVvZiBlIT0ibnVtYmVyIilyZXR1cm4iPz8/Pz8/Pz8iO2xldCBvPSIwMDAwMDAwMCIrZS50b1N0cmluZygyKTtyZXR1cm4gby5zdWJzdHJpbmcoby5sZW5ndGgtOCl9ZnVuY3Rpb24gRFEobix0KXtyZXR1cm4gdDwwPyJOT19OT0RFX0lOSkVDVE9SIjpgJHtyeShuLHQrNyl9XyR7cnkobix0KzYpfV8ke3J5KG4sdCs1KX1fJHtyeShuLHQrNCl9XyR7cnkobix0KzMpfV8ke3J5KG4sdCsyKX1fJHtyeShuLHQrMSl9XyR7cnkobix0KzApfWB9dmFyIG44PWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Jhd19sQ29udGFpbmVyPXR9Z2V0IGhhc1RyYW5zcGxhbnRlZFZpZXdzKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyW2o4XX1nZXQgdmlld3MoKXtyZXR1cm4gdGhpcy5fcmF3X2xDb250YWluZXIuc2xpY2UoQmwpLm1hcChzeSl9Z2V0IHBhcmVudCgpe3JldHVybiBzeSh0aGlzLl9yYXdfbENvbnRhaW5lclt5cl0pfWdldCBtb3ZlZFZpZXdzKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyW015XX1nZXQgaG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lcltsX119Z2V0IG5hdGl2ZSgpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lclt2VF19Z2V0IG5leHQoKXtyZXR1cm4gc3kodGhpcy5fcmF3X2xDb250YWluZXJbaGddKX19LExidD0oKT0+UHJvbWlzZS5yZXNvbHZlKG51bGwpLG84PUxidCgpO2Z1bmN0aW9uIEJidChuLHQpe2xldCBlPW4uaG9zdEJpbmRpbmdPcENvZGVzO2lmKGUhPT1udWxsKXRyeXtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7bGV0IGk9ZVtvXTtpZihpPDApT3kofmkpO2Vsc2V7bGV0IGE9aSxyPWVbKytvXSxzPWVbKytvXTskMHQocixhKTtsZXQgbD10W2FdO3MoMixsKX19fWZpbmFsbHl7T3koLTEpfX1mdW5jdGlvbiBvJChuLHQpe2xldCBlPW4uY29udGVudFF1ZXJpZXM7aWYoZSE9PW51bGwpZm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKz0yKXtsZXQgaT1lW29dLGE9ZVtvKzFdO2lmKGEhPT0tMSl7bGV0IHI9bi5kYXRhW2FdO25nRGV2TW9kZSYmdW4ociwiRGlyZWN0aXZlRGVmIG5vdCBmb3VuZC4iKSxuZ0Rldk1vZGUmJnVuKHIuY29udGVudFF1ZXJpZXMsImNvbnRlbnRRdWVyaWVzIGZ1bmN0aW9uIHNob3VsZCBiZSBkZWZpbmVkIiksZUIoaSksci5jb250ZW50UXVlcmllcygyLHRbYV0sYSl9fX1mdW5jdGlvbiBWYnQobix0KXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylwT3Qobix0W2VdKX1mdW5jdGlvbiBqYnQobix0KXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylkT3Qobix0W2VdKX1mdW5jdGlvbiBEVChuLHQsZSxvLGksYSxyLHMsbCxjKXtsZXQgbT1uZ0Rldk1vZGU/eWJ0KHQpOnQuYmx1ZXByaW50LnNsaWNlKCk7cmV0dXJuIG1bbF9dPWksbVtRb109b3w0fDEyOHw4LEJLKG0pLG5nRGV2TW9kZSYmdC5kZWNsVE5vZGUmJm4mJnl5KHQuZGVjbFROb2RlLG4pLG1beXJdPW1bQ3ldPW4sbVtUcl09ZSxtW3J2XT1yfHxuJiZuW3J2XSxuZ0Rldk1vZGUmJnVuKG1bcnZdLCJSZW5kZXJlckZhY3RvcnkgaXMgcmVxdWlyZWQiKSxtW1BvXT1zfHxuJiZuW1BvXSxuZ0Rldk1vZGUmJnVuKG1bUG9dLCJSZW5kZXJlciBpcyByZXF1aXJlZCIpLG1bWk5dPWx8fG4mJm5bWk5dfHxudWxsLG1bbVJdPWN8fG4mJm5bbVJdfHxudWxsLG1bWWNdPWEsbmdEZXZNb2RlJiZpbyh0LnR5cGU9PTI/biE9PW51bGw6ITAsITAsIkVtYmVkZGVkIHZpZXdzIG11c3QgaGF2ZSBwYXJlbnRMVmlldyIpLG1bYmddPXQudHlwZT09Mj9uW2JnXTptLG5nRGV2TW9kZSYmemJ0KG0pLG19ZnVuY3Rpb24gRncobix0LGUsbyxpKXtuZ0Rldk1vZGUmJnQhPT0wJiZaTyh0LGdpLCJUTm9kZXMgY2FuJ3QgYmUgaW4gdGhlIExWaWV3IGhlYWRlci4iKSxuZ0Rldk1vZGUmJmRDdChlKTtsZXQgYT1uLmRhdGFbdF07aWYoYT09PW51bGwpYT13QihuLHQsZSxvLGkpLEowdCgpJiYoYS5mbGFnc3w9NjQpO2Vsc2UgaWYoYS50eXBlJjY0KXthLnR5cGU9ZSxhLnZhbHVlPW8sYS5hdHRycz1pO2xldCByPWZSKCk7YS5pbmplY3RvckluZGV4PXI9PT1udWxsPy0xOnIuaW5qZWN0b3JJbmRleCxuZ0Rldk1vZGUmJkV3KGEsbiksbmdEZXZNb2RlJiZpbyh0LGEuaW5kZXgsIkV4cGVjdGluZyBzYW1lIGluZGV4Iil9cmV0dXJuIHZiKGEsITApLGF9ZnVuY3Rpb24gd0Iobix0LGUsbyxpKXtsZXQgYT1qSygpLHI9SjgoKSxzPXI/YTphJiZhLnBhcmVudCxsPW4uZGF0YVt0XT1xYnQobixzLGUsdCxvLGkpO3JldHVybiBuLmZpcnN0Q2hpbGQ9PT1udWxsJiYobi5maXJzdENoaWxkPWwpLGEhPT1udWxsJiYocj9hLmNoaWxkPT1udWxsJiZsLnBhcmVudCE9PW51bGwmJihhLmNoaWxkPWwpOmEubmV4dD09PW51bGwmJihhLm5leHQ9bCkpLGx9ZnVuY3Rpb24gTHcobix0LGUsbyl7aWYoZT09PTApcmV0dXJuLTE7bmdEZXZNb2RlJiYoT2cobiksUEsobix0W1JuXSwiYExWaWV3YCBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBgVFZpZXdgISIpLGlvKG4uZGF0YS5sZW5ndGgsdC5sZW5ndGgsIkV4cGVjdGluZyBMVmlldyB0byBiZSBzYW1lIHNpemUgYXMgVFZpZXciKSxpbyhuLmRhdGEubGVuZ3RoLG4uYmx1ZXByaW50Lmxlbmd0aCwiRXhwZWN0aW5nIEJsdWVwcmludCB0byBiZSBzYW1lIHNpemUgYXMgVFZpZXciKSxxOChuKSk7bGV0IGk9dC5sZW5ndGg7Zm9yKGxldCBhPTA7YTxlO2ErKyl0LnB1c2gobyksbi5ibHVlcHJpbnQucHVzaChvKSxuLmRhdGEucHVzaChudWxsKTtyZXR1cm4gaX1mdW5jdGlvbiBJVChuLHQsZSl7bmdEZXZNb2RlJiZpbyhUdyh0KSwhMCwiU2hvdWxkIGJlIHJ1biBpbiBjcmVhdGlvbiBtb2RlIiksbkIodCk7dHJ5e2xldCBvPW4udmlld1F1ZXJ5O28hPT1udWxsJiZhOCgxLG8sZSk7bGV0IGk9bi50ZW1wbGF0ZTtpIT09bnVsbCYmaSQobix0LGksMSxlKSxuLmZpcnN0Q3JlYXRlUGFzcyYmKG4uZmlyc3RDcmVhdGVQYXNzPSExKSxuLnN0YXRpY0NvbnRlbnRRdWVyaWVzJiZvJChuLHQpLG4uc3RhdGljVmlld1F1ZXJpZXMmJmE4KDIsbi52aWV3UXVlcnksZSk7bGV0IGE9bi5jb21wb25lbnRzO2EhPT1udWxsJiZqYnQodCxhKX1jYXRjaChvKXt0aHJvdyBuLmZpcnN0Q3JlYXRlUGFzcyYmKG4uaW5jb21wbGV0ZUZpcnN0UGFzcz0hMCxuLmZpcnN0Q3JlYXRlUGFzcz0hMSksb31maW5hbGx5e3RbUW9dJj0tNSxvQigpfX1mdW5jdGlvbiB6UihuLHQsZSxvKXtuZ0Rldk1vZGUmJmlvKFR3KHQpLCExLCJTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlIik7bGV0IGk9dFtRb107aWYoKGkmMjU2KT09PTI1NilyZXR1cm47bkIodCk7bGV0IGE9QXcoKTt0cnl7QksodCksVUsobi5iaW5kaW5nU3RhcnRJbmRleCksZSE9PW51bGwmJmkkKG4sdCxlLDIsbyk7bGV0IHI9KGkmMyk9PT0zO2lmKCFhKWlmKHIpe2xldCBjPW4ucHJlT3JkZXJDaGVja0hvb2tzO2MhPT1udWxsJiZCTih0LGMsbnVsbCl9ZWxzZXtsZXQgYz1uLnByZU9yZGVySG9va3M7YyE9PW51bGwmJlZOKHQsYywwLG51bGwpLEo3KHQsMCl9aWYoZk90KHQpLG1PdCh0KSxuLmNvbnRlbnRRdWVyaWVzIT09bnVsbCYmbyQobix0KSwhYSlpZihyKXtsZXQgYz1uLmNvbnRlbnRDaGVja0hvb2tzO2MhPT1udWxsJiZCTih0LGMpfWVsc2V7bGV0IGM9bi5jb250ZW50SG9va3M7YyE9PW51bGwmJlZOKHQsYywxKSxKNyh0LDEpfUJidChuLHQpO2xldCBzPW4uY29tcG9uZW50cztzIT09bnVsbCYmVmJ0KHQscyk7bGV0IGw9bi52aWV3UXVlcnk7aWYobCE9PW51bGwmJmE4KDIsbCxvKSwhYSlpZihyKXtsZXQgYz1uLnZpZXdDaGVja0hvb2tzO2MhPT1udWxsJiZCTih0LGMpfWVsc2V7bGV0IGM9bi52aWV3SG9va3M7YyE9PW51bGwmJlZOKHQsYywyKSxKNyh0LDIpfW4uZmlyc3RVcGRhdGVQYXNzPT09ITAmJihuLmZpcnN0VXBkYXRlUGFzcz0hMSksYXx8KHRbUW9dJj0tNzMpLHRbUW9dJjEwMjQmJih0W1FvXSY9LTEwMjUsSzgodFt5cl0sLTEpKX1maW5hbGx5e29CKCl9fWZ1bmN0aW9uIFVidChuLHQsZSxvKXtsZXQgaT10W3J2XSxhPSFBdygpLHI9VHcodCk7dHJ5e2EmJiFyJiZpLmJlZ2luJiZpLmJlZ2luKCksciYmSVQobix0LG8pLHpSKG4sdCxlLG8pfWZpbmFsbHl7YSYmIXImJmkuZW5kJiZpLmVuZCgpfX1mdW5jdGlvbiBpJChuLHQsZSxvLGkpe2xldCBhPVltKCkscj1vJjI7dHJ5e095KC0xKSxyJiZ0Lmxlbmd0aD5naSYmWEoobix0LGdpLEF3KCkpLGFfKHI/MjowLGkpLGUobyxpKX1maW5hbGx5e095KGEpLGFfKHI/MzoxLGkpfX1mdW5jdGlvbiBhJChuLHQsZSl7aWYoVTgodCkpe2xldCBvPXQuZGlyZWN0aXZlU3RhcnQsaT10LmRpcmVjdGl2ZUVuZDtmb3IobGV0IGE9bzthPGk7YSsrKXtsZXQgcj1uLmRhdGFbYV07ci5jb250ZW50UXVlcmllcyYmci5jb250ZW50UXVlcmllcygxLGVbYV0sYSl9fX1mdW5jdGlvbiBTQihuLHQsZSl7IVZLKCl8fChlT3Qobix0LGUseWcoZSx0KSksKGUuZmxhZ3MmMTI4KT09PTEyOCYmbk90KG4sdCxlKSl9ZnVuY3Rpb24gUkIobix0LGU9eWcpe2xldCBvPXQubG9jYWxOYW1lcztpZihvIT09bnVsbCl7bGV0IGk9dC5pbmRleCsxO2ZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSs9Mil7bGV0IHI9b1thKzFdLHM9cj09PS0xP2UodCxuKTpuW3JdO25baSsrXT1zfX19ZnVuY3Rpb24gciQobil7bGV0IHQ9bi50VmlldztyZXR1cm4gdD09PW51bGx8fHQuaW5jb21wbGV0ZUZpcnN0UGFzcz9uLnRWaWV3PUVCKDEsbnVsbCxuLnRlbXBsYXRlLG4uZGVjbHMsbi52YXJzLG4uZGlyZWN0aXZlRGVmcyxuLnBpcGVEZWZzLG4udmlld1F1ZXJ5LG4uc2NoZW1hcyxuLmNvbnN0cyk6dH1mdW5jdGlvbiBFQihuLHQsZSxvLGksYSxyLHMsbCxjKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS50VmlldysrO2xldCBtPWdpK28sZj1tK2kscD1ZYnQobSxmKSxnPXR5cGVvZiBjPT0iZnVuY3Rpb24iP2MoKTpjLF89cFtSbl09bmdEZXZNb2RlP25ldyB2YnQobixwLGUsbnVsbCxzLHQsUmJ0KHApLmZpbGwobnVsbCxtKSxtLGYsbnVsbCwhMCwhMCwhMSwhMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLHR5cGVvZiBhPT0iZnVuY3Rpb24iP2EoKTphLHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoKTpyLG51bGwsbCxnLCExLG8saSk6e3R5cGU6bixibHVlcHJpbnQ6cCx0ZW1wbGF0ZTplLHF1ZXJpZXM6bnVsbCx2aWV3UXVlcnk6cyxkZWNsVE5vZGU6dCxkYXRhOnAuc2xpY2UoKS5maWxsKG51bGwsbSksYmluZGluZ1N0YXJ0SW5kZXg6bSxleHBhbmRvU3RhcnRJbmRleDpmLGhvc3RCaW5kaW5nT3BDb2RlczpudWxsLGZpcnN0Q3JlYXRlUGFzczohMCxmaXJzdFVwZGF0ZVBhc3M6ITAsc3RhdGljVmlld1F1ZXJpZXM6ITEsc3RhdGljQ29udGVudFF1ZXJpZXM6ITEscHJlT3JkZXJIb29rczpudWxsLHByZU9yZGVyQ2hlY2tIb29rczpudWxsLGNvbnRlbnRIb29rczpudWxsLGNvbnRlbnRDaGVja0hvb2tzOm51bGwsdmlld0hvb2tzOm51bGwsdmlld0NoZWNrSG9va3M6bnVsbCxkZXN0cm95SG9va3M6bnVsbCxjbGVhbnVwOm51bGwsY29udGVudFF1ZXJpZXM6bnVsbCxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZlUmVnaXN0cnk6dHlwZW9mIGE9PSJmdW5jdGlvbiI/YSgpOmEscGlwZVJlZ2lzdHJ5OnR5cGVvZiByPT0iZnVuY3Rpb24iP3IoKTpyLGZpcnN0Q2hpbGQ6bnVsbCxzY2hlbWFzOmwsY29uc3RzOmcsaW5jb21wbGV0ZUZpcnN0UGFzczohMX07cmV0dXJuIG5nRGV2TW9kZSYmT2JqZWN0LnNlYWwoXyksX31mdW5jdGlvbiBZYnQobix0KXtsZXQgZT1uZ0Rldk1vZGU/bmV3IEVidDpbXTtmb3IobGV0IG89MDtvPHQ7bysrKWUucHVzaChvPG4/bnVsbDokbik7cmV0dXJuIGV9ZnVuY3Rpb24gSVEobix0KXtyZXR1cm4gbmV3IEVycm9yKGBSZW5kZXJlcjogJHtufSBbJHtWYyh0KX1dYCl9ZnVuY3Rpb24gR2J0KG4sdCl7aWYoIW4pdGhyb3cgSVEodHlwZW9mIHQ9PSJzdHJpbmciPyJIb3N0IG5vZGUgd2l0aCBzZWxlY3RvciBub3QgZm91bmQ6IjoiSG9zdCBub2RlIGlzIHJlcXVpcmVkOiIsdCl9ZnVuY3Rpb24gV2J0KG4sdCxlKXtpZihJYShuKSl7bGV0IGk9ZT09PUplLlNoYWRvd0RvbTtyZXR1cm4gbi5zZWxlY3RSb290RWxlbWVudCh0LGkpfWxldCBvPXR5cGVvZiB0PT0ic3RyaW5nIj9uLnF1ZXJ5U2VsZWN0b3IodCk6dDtyZXR1cm4gbmdEZXZNb2RlJiZHYnQobyx0KSxvLnRleHRDb250ZW50PSIiLG99ZnVuY3Rpb24gcyQobix0LGUsbyl7bGV0IGk9XyQodCk7ZT09PW51bGw/KG5nRGV2TW9kZSYmT2JqZWN0LmZyZWV6ZShyOChuKSksaS5wdXNoKG8pKTooaS5wdXNoKGUpLG4uZmlyc3RDcmVhdGVQYXNzJiZyOChuKS5wdXNoKG8saS5sZW5ndGgtMSkpfWZ1bmN0aW9uIHFidChuLHQsZSxvLGksYSl7bmdEZXZNb2RlJiZvIT09MCYmWk8obyxnaSwiVE5vZGVzIGNhbid0IGJlIGluIHRoZSBMVmlldyBoZWFkZXIuIiksbmdEZXZNb2RlJiZTdyhhLHZvaWQgMCwiJ3VuZGVmaW5lZCcgaXMgbm90IHZhbGlkIHZhbHVlIGZvciAnYXR0cnMnIiksbmdEZXZNb2RlJiZuZ0Rldk1vZGUudE5vZGUrKyxuZ0Rldk1vZGUmJnQmJkV3KHQsbik7bGV0IHI9dD90LmluamVjdG9ySW5kZXg6LTEscz1uZ0Rldk1vZGU/bmV3IHdidChuLGUsbyxudWxsLHIsLTEsLTEsLTEsbnVsbCwwLDAsaSxhLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsdCxudWxsLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLHZvaWQgMCwwLDApOnt0eXBlOmUsaW5kZXg6byxpbnNlcnRCZWZvcmVJbmRleDpudWxsLGluamVjdG9ySW5kZXg6cixkaXJlY3RpdmVTdGFydDotMSxkaXJlY3RpdmVFbmQ6LTEsZGlyZWN0aXZlU3R5bGluZ0xhc3Q6LTEscHJvcGVydHlCaW5kaW5nczpudWxsLGZsYWdzOjAscHJvdmlkZXJJbmRleGVzOjAsdmFsdWU6aSxhdHRyczphLG1lcmdlZEF0dHJzOm51bGwsbG9jYWxOYW1lczpudWxsLGluaXRpYWxJbnB1dHM6dm9pZCAwLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCx0Vmlld3M6bnVsbCxuZXh0Om51bGwscHJvamVjdGlvbk5leHQ6bnVsbCxjaGlsZDpudWxsLHBhcmVudDp0LHByb2plY3Rpb246bnVsbCxzdHlsZXM6bnVsbCxzdHlsZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsU3R5bGVzOnZvaWQgMCxjbGFzc2VzOm51bGwsY2xhc3Nlc1dpdGhvdXRIb3N0Om51bGwscmVzaWR1YWxDbGFzc2VzOnZvaWQgMCxjbGFzc0JpbmRpbmdzOjAsc3R5bGVCaW5kaW5nczowfTtyZXR1cm4gbmdEZXZNb2RlJiZPYmplY3Quc2VhbChzKSxzfWZ1bmN0aW9uIHpRKG4sdCxlKXtmb3IobGV0IG8gaW4gbilpZihuLmhhc093blByb3BlcnR5KG8pKXtlPWU9PT1udWxsP3t9OmU7bGV0IGk9bltvXTtlLmhhc093blByb3BlcnR5KG8pP2Vbb10ucHVzaCh0LGkpOmVbb109W3QsaV19cmV0dXJuIGV9ZnVuY3Rpb24gWmJ0KG4sdCl7bmdEZXZNb2RlJiZPZyhuKTtsZXQgZT10LmRpcmVjdGl2ZVN0YXJ0LG89dC5kaXJlY3RpdmVFbmQsaT1uLmRhdGEsYT10LmF0dHJzLHI9bmdEZXZNb2RlP25ldyBBYnQ6W10scz1udWxsLGw9bnVsbDtmb3IobGV0IGM9ZTtjPG87YysrKXtsZXQgbT1pW2NdLGY9bS5pbnB1dHMscD1hIT09bnVsbCYmIXFKKHQpP2xPdChmLGEpOm51bGw7ci5wdXNoKHApLHM9elEoZixjLHMpLGw9elEobS5vdXRwdXRzLGMsbCl9cyE9PW51bGwmJihzLmhhc093blByb3BlcnR5KCJjbGFzcyIpJiYodC5mbGFnc3w9MTYpLHMuaGFzT3duUHJvcGVydHkoInN0eWxlIikmJih0LmZsYWdzfD0zMikpLHQuaW5pdGlhbElucHV0cz1yLHQuaW5wdXRzPXMsdC5vdXRwdXRzPWx9ZnVuY3Rpb24gWGJ0KG4pe3JldHVybiBuPT09ImNsYXNzIj8iY2xhc3NOYW1lIjpuPT09ImZvciI/Imh0bWxGb3IiOm49PT0iZm9ybWFjdGlvbiI/ImZvcm1BY3Rpb24iOm49PT0iaW5uZXJIdG1sIj8iaW5uZXJIVE1MIjpuPT09InJlYWRvbmx5Ij8icmVhZE9ubHkiOm49PT0idGFiaW5kZXgiPyJ0YWJJbmRleCI6bn1mdW5jdGlvbiB2ZyhuLHQsZSxvLGksYSxyLHMpe25nRGV2TW9kZSYmU3coaSwkbiwiSW5jb21pbmcgdmFsdWUgc2hvdWxkIG5ldmVyIGJlIE5PX0NIQU5HRS4iKTtsZXQgbD15Zyh0LGUpLGM9dC5pbnB1dHMsbTtpZighcyYmYyE9bnVsbCYmKG09Y1tvXSkpYiQobixlLG0sbyxpKSxZOCh0KSYmUWJ0KGUsdC5pbmRleCksbmdEZXZNb2RlJiZLYnQoZSxsLHQudHlwZSxtLGkpO2Vsc2UgaWYodC50eXBlJjMpe2lmKG89WGJ0KG8pLG5nRGV2TW9kZSl7aWYoT010KG8pLCFKYnQobixsLG8sdCkpe0hRKG8sdCk7cmV0dXJufW5nRGV2TW9kZS5yZW5kZXJlclNldFByb3BlcnR5Kyt9aT1yIT1udWxsP3IoaSx0LnZhbHVlfHwiIixvKTppLElhKGEpP2Euc2V0UHJvcGVydHkobCxvLGkpOmFCKG8pfHwobC5zZXRQcm9wZXJ0eT9sLnNldFByb3BlcnR5KG8saSk6bFtvXT1pKX1lbHNlIHQudHlwZSYxMiYmbmdEZXZNb2RlJiYha0Iobix0LnZhbHVlKSYmSFEobyx0KX1mdW5jdGlvbiBRYnQobix0KXtuZ0Rldk1vZGUmJmt3KG4pO2xldCBlPWNfKHQsbik7ZVtRb10mMTZ8fChlW1FvXXw9NjQpfWZ1bmN0aW9uIGwkKG4sdCxlLG8saSl7bGV0IGE9bltQb107bz1MTXQobyk7bGV0IHI9ak10KGkpO2lmKGUmMylpPT1udWxsP0lhKGEpP2EucmVtb3ZlQXR0cmlidXRlKHQsbyk6dC5yZW1vdmVBdHRyaWJ1dGUobyk6SWEoYSk/YS5zZXRBdHRyaWJ1dGUodCxvLHIpOnQuc2V0QXR0cmlidXRlKG8scik7ZWxzZXtsZXQgcz1TSihgYmluZGluZ3M9JHtKU09OLnN0cmluZ2lmeSh7W29dOnJ9LG51bGwsMil9YCk7SWEoYSk/YS5zZXRWYWx1ZSh0LHMpOnQudGV4dENvbnRlbnQ9c319ZnVuY3Rpb24gS2J0KG4sdCxlLG8saSl7aWYoZSY3KWZvcihsZXQgYT0wO2E8by5sZW5ndGg7YSs9MilsJChuLHQsZSxvW2ErMV0saSl9ZnVuY3Rpb24gSmJ0KG4sdCxlLG8pe3JldHVybiBuLnNjaGVtYXM9PT1udWxsfHxrQihuLG8udmFsdWUpfHxlIGluIHR8fGFCKGUpPyEwOnR5cGVvZiBOb2RlPT0idW5kZWZpbmVkInx8Tm9kZT09PW51bGx8fCEodCBpbnN0YW5jZW9mIE5vZGUpfWZ1bmN0aW9uIGtCKG4sdCl7bGV0IGU9bi5zY2hlbWFzO2lmKGUhPT1udWxsKWZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtsZXQgaT1lW29dO2lmKGk9PT1JTXR8fGk9PT1ETXQmJnQmJnQuaW5kZXhPZigiLSIpPi0xKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIEhRKG4sdCl7bGV0IGU9YENhbid0IGJpbmQgdG8gJyR7bn0nIHNpbmNlIGl0IGlzbid0IGEga25vd24gcHJvcGVydHkgb2YgJyR7dC52YWx1ZX0nLmA7Y29uc29sZS5lcnJvcih6OCgiMzAzIixlKSl9ZnVuY3Rpb24gJGJ0KG4sdCxlKXtsZXQgbz1UcygpO2lmKG4uZmlyc3RDcmVhdGVQYXNzKXtlLnByb3ZpZGVyc1Jlc29sdmVyJiZlLnByb3ZpZGVyc1Jlc29sdmVyKGUpO2xldCByPUx3KG4sdCwxLG51bGwpO25nRGV2TW9kZSYmaW8ocixvLmRpcmVjdGl2ZVN0YXJ0LCJCZWNhdXNlIHRoaXMgaXMgYSByb290IGNvbXBvbmVudCB0aGUgYWxsb2NhdGVkIGV4cGFuZG8gc2hvdWxkIG1hdGNoIHRoZSBUTm9kZSBjb21wb25lbnQuIiksZCQobixvLHQscixlKX1sZXQgaT1TUih0LG4sby5kaXJlY3RpdmVTdGFydCxvKTtqYyhpLHQpO2xldCBhPXlnKG8sdCk7cmV0dXJuIGEmJmpjKGEsdCksaX1mdW5jdGlvbiBOQihuLHQsZSxvKXtuZ0Rldk1vZGUmJk9nKG4pO2xldCBpPSExO2lmKFZLKCkpe2xldCBhPW9PdChuLHQsZSkscj1vPT09bnVsbD9udWxsOnsiIjotMX07aWYoYSE9PW51bGwpe2k9ITAscCQoZSxuLmRhdGEubGVuZ3RoLGEubGVuZ3RoKTtmb3IobGV0IG09MDttPGEubGVuZ3RoO20rKyl7bGV0IGY9YVttXTtmLnByb3ZpZGVyc1Jlc29sdmVyJiZmLnByb3ZpZGVyc1Jlc29sdmVyKGYpfWxldCBzPSExLGw9ITEsYz1MdyhuLHQsYS5sZW5ndGgsbnVsbCk7bmdEZXZNb2RlJiZQSyhjLGUuZGlyZWN0aXZlU3RhcnQsIlROb2RlLmRpcmVjdGl2ZVN0YXJ0IHNob3VsZCBwb2ludCB0byBqdXN0IGFsbG9jYXRlZCBzcGFjZSIpO2ZvcihsZXQgbT0wO208YS5sZW5ndGg7bSsrKXtsZXQgZj1hW21dO2UubWVyZ2VkQXR0cnM9JE4oZS5tZXJnZWRBdHRycyxmLmhvc3RBdHRycyksZCQobixlLHQsYyxmKSxhT3QoYyxmLHIpLGYuY29udGVudFF1ZXJpZXMhPT1udWxsJiYoZS5mbGFnc3w9OCksKGYuaG9zdEJpbmRpbmdzIT09bnVsbHx8Zi5ob3N0QXR0cnMhPT1udWxsfHxmLmhvc3RWYXJzIT09MCkmJihlLmZsYWdzfD0xMjgpO2xldCBwPWYudHlwZS5wcm90b3R5cGU7IXMmJihwLm5nT25DaGFuZ2VzfHxwLm5nT25Jbml0fHxwLm5nRG9DaGVjaykmJigobi5wcmVPcmRlckhvb2tzfHwobi5wcmVPcmRlckhvb2tzPVtdKSkucHVzaChlLmluZGV4KSxzPSEwKSwhbCYmKHAubmdPbkNoYW5nZXN8fHAubmdEb0NoZWNrKSYmKChuLnByZU9yZGVyQ2hlY2tIb29rc3x8KG4ucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaChlLmluZGV4KSxsPSEwKSxjKyt9WmJ0KG4sZSl9ciYmaU90KGUsbyxyKX1yZXR1cm4gZS5tZXJnZWRBdHRycz0kTihlLm1lcmdlZEF0dHJzLGUuYXR0cnMpLGl9ZnVuY3Rpb24gYyQobix0LGUsbyxpLGEpe25nRGV2TW9kZSYmT2cobik7bGV0IHI9YS5ob3N0QmluZGluZ3M7aWYocil7bGV0IHM9bi5ob3N0QmluZGluZ09wQ29kZXM7cz09PW51bGwmJihzPW4uaG9zdEJpbmRpbmdPcENvZGVzPVtdKTtsZXQgbD1+dC5pbmRleDt0T3QocykhPWwmJnMucHVzaChsKSxzLnB1c2gobyxpLHIpfX1mdW5jdGlvbiB0T3Qobil7bGV0IHQ9bi5sZW5ndGg7Zm9yKDt0PjA7KXtsZXQgZT1uWy0tdF07aWYodHlwZW9mIGU9PSJudW1iZXIiJiZlPDApcmV0dXJuIGV9cmV0dXJuIDB9ZnVuY3Rpb24gZU90KG4sdCxlLG8pe2xldCBpPWUuZGlyZWN0aXZlU3RhcnQsYT1lLmRpcmVjdGl2ZUVuZDtuLmZpcnN0Q3JlYXRlUGFzc3x8ZFIoZSx0KSxqYyhvLHQpO2xldCByPWUuaW5pdGlhbElucHV0cztmb3IobGV0IHM9aTtzPGE7cysrKXtsZXQgbD1uLmRhdGFbc10sYz1XQyhsKTtjJiYobmdEZXZNb2RlJiZHYyhlLDMpLHJPdCh0LGUsbCkpO2xldCBtPVNSKHQsbixzLGUpO2lmKGpjKG0sdCksciE9PW51bGwmJnNPdCh0LHMtaSxtLGwsZSxyKSxjKXtsZXQgZj1jXyhlLmluZGV4LHQpO2ZbVHJdPW19fX1mdW5jdGlvbiBuT3Qobix0LGUpe2xldCBvPWUuZGlyZWN0aXZlU3RhcnQsaT1lLmRpcmVjdGl2ZUVuZCxhPW4uZmlyc3RDcmVhdGVQYXNzLHI9ZS5pbmRleCxzPXRDdCgpO3RyeXtPeShyKTtmb3IobGV0IGw9bztsPGk7bCsrKXtsZXQgYz1uLmRhdGFbbF0sbT10W2xdO1RMKGwpLChjLmhvc3RCaW5kaW5ncyE9PW51bGx8fGMuaG9zdFZhcnMhPT0wfHxjLmhvc3RBdHRycyE9PW51bGwpJiZtJChjLG0pfX1maW5hbGx5e095KC0xKSxUTChzKX19ZnVuY3Rpb24gbSQobix0KXtuLmhvc3RCaW5kaW5ncyE9PW51bGwmJm4uaG9zdEJpbmRpbmdzKDEsdCl9ZnVuY3Rpb24gb090KG4sdCxlKXtuZ0Rldk1vZGUmJk9nKG4pLG5nRGV2TW9kZSYmR2MoZSwxNSk7bGV0IG89bi5kaXJlY3RpdmVSZWdpc3RyeSxpPW51bGw7aWYobylmb3IobGV0IGE9MDthPG8ubGVuZ3RoO2ErKyl7bGV0IHI9b1thXTtaSihlLHIuc2VsZWN0b3JzLCExKSYmKGl8fChpPW5nRGV2TW9kZT9uZXcga2J0OltdKSxlVChkUihlLHQpLG4sci50eXBlKSxXQyhyKT8obmdEZXZNb2RlJiYoR2MoZSwyLGAiJHtlLnZhbHVlfSIgdGFncyBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgaG9zdHMuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgdGFnIHRvIGFjdGl2YXRlIHRoZSAke09vKHIudHlwZSl9IGNvbXBvbmVudC5gKSxlLmZsYWdzJjImJkdNdChlKSksZiQobixlKSxpLnVuc2hpZnQocikpOmkucHVzaChyKSl9cmV0dXJuIGl9ZnVuY3Rpb24gZiQobix0KXtuZ0Rldk1vZGUmJk9nKG4pLHQuZmxhZ3N8PTIsKG4uY29tcG9uZW50c3x8KG4uY29tcG9uZW50cz1uZ0Rldk1vZGU/bmV3IE5idDpbXSkpLnB1c2godC5pbmRleCl9ZnVuY3Rpb24gaU90KG4sdCxlKXtpZih0KXtsZXQgbz1uLmxvY2FsTmFtZXM9bmdEZXZNb2RlP25ldyBUYnQ6W107Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKz0yKXtsZXQgYT1lW3RbaSsxXV07aWYoYT09bnVsbCl0aHJvdyBuZXcgeWIoIjMwMSIsYEV4cG9ydCBvZiBuYW1lICcke3RbaSsxXX0nIG5vdCBmb3VuZCFgKTtvLnB1c2godFtpXSxhKX19fWZ1bmN0aW9uIGFPdChuLHQsZSl7aWYoZSl7aWYodC5leHBvcnRBcylmb3IobGV0IG89MDtvPHQuZXhwb3J0QXMubGVuZ3RoO28rKyllW3QuZXhwb3J0QXNbb11dPW47V0ModCkmJihlWyIiXT1uKX19ZnVuY3Rpb24gcCQobix0LGUpe25nRGV2TW9kZSYmcUMoZSxuLmRpcmVjdGl2ZUVuZC1uLmRpcmVjdGl2ZVN0YXJ0LCJSZWFjaGVkIHRoZSBtYXggbnVtYmVyIG9mIGRpcmVjdGl2ZXMiKSxuLmZsYWdzfD0xLG4uZGlyZWN0aXZlU3RhcnQ9dCxuLmRpcmVjdGl2ZUVuZD10K2Usbi5wcm92aWRlckluZGV4ZXM9dH1mdW5jdGlvbiBkJChuLHQsZSxvLGkpe25nRGV2TW9kZSYmWk8obyxnaSwiTXVzdCBiZSBpbiBFeHBhbmRvIHNlY3Rpb24iKSxuLmRhdGFbb109aTtsZXQgYT1pLmZhY3Rvcnl8fChpLmZhY3Rvcnk9bXYoaS50eXBlLCEwKSkscj1uZXcgZnYoYSxXQyhpKSxudWxsKTtuLmJsdWVwcmludFtvXT1yLGVbb109cixjJChuLHQsZSxvLEx3KG4sZSxpLmhvc3RWYXJzLCRuKSxpKX1mdW5jdGlvbiByT3Qobix0LGUpe2xldCBvPXlnKHQsbiksaT1yJChlKSxhPW5bcnZdLHI9elQobixEVChuLGksbnVsbCxlLm9uUHVzaD82NDoxNixvLHQsYSxhLmNyZWF0ZVJlbmRlcmVyKG8sZSksbnVsbCxudWxsKSk7blt0LmluZGV4XT1yfWZ1bmN0aW9uIFJiKG4sdCxlLG8saSxhKXtuZ0Rldk1vZGUmJihTdyhvLCRuLCJJbmNvbWluZyB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpLFBNdChlKSxHYyhuLDIsYEF0dGVtcHRlZCB0byBzZXQgYXR0cmlidXRlIFxgJHtlfVxgIG9uIGEgY29udGFpbmVyIG5vZGUuIEhvc3QgYmluZGluZ3MgYXJlIG5vdCB2YWxpZCBvbiBuZy1jb250YWluZXIgb3IgbmctdGVtcGxhdGUuYCkpO2xldCByPXlnKG4sdCk7VEIodFtQb10scixhLG4udmFsdWUsZSxvLGkpfWZ1bmN0aW9uIFRCKG4sdCxlLG8saSxhLHIpe2lmKGE9PW51bGwpbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJSZW1vdmVBdHRyaWJ1dGUrKyxJYShuKT9uLnJlbW92ZUF0dHJpYnV0ZSh0LGksZSk6dC5yZW1vdmVBdHRyaWJ1dGUoaSk7ZWxzZXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldEF0dHJpYnV0ZSsrO2xldCBzPXI9PW51bGw/Um8oYSk6cihhLG98fCIiLGkpO0lhKG4pP24uc2V0QXR0cmlidXRlKHQsaSxzLGUpOmU/dC5zZXRBdHRyaWJ1dGVOUyhlLGkscyk6dC5zZXRBdHRyaWJ1dGUoaSxzKX19ZnVuY3Rpb24gc090KG4sdCxlLG8saSxhKXtsZXQgcj1hW3RdO2lmKHIhPT1udWxsKXtsZXQgcz1vLnNldElucHV0O2ZvcihsZXQgbD0wO2w8ci5sZW5ndGg7KXtsZXQgYz1yW2wrK10sbT1yW2wrK10sZj1yW2wrK107aWYocyE9PW51bGw/by5zZXRJbnB1dChlLGYsYyxtKTplW21dPWYsbmdEZXZNb2RlKXtsZXQgcD15ZyhpLG4pO2wkKG4scCxpLnR5cGUsbSxmKX19fX1mdW5jdGlvbiBsT3Qobix0KXtsZXQgZT1udWxsLG89MDtmb3IoO288dC5sZW5ndGg7KXtsZXQgaT10W29dO2lmKGk9PT0wKXtvKz00O2NvbnRpbnVlfWVsc2UgaWYoaT09PTUpe28rPTI7Y29udGludWV9aWYodHlwZW9mIGk9PSJudW1iZXIiKWJyZWFrO24uaGFzT3duUHJvcGVydHkoaSkmJihlPT09bnVsbCYmKGU9W10pLGUucHVzaChpLG5baV0sdFtvKzFdKSksbys9Mn1yZXR1cm4gZX12YXIgY090PSh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmeFIoKSYmQ2coIkxDb250YWluZXIiKTtmdW5jdGlvbiBnJChuLHQsZSxvKXtuZ0Rldk1vZGUmJmt3KHQpLG5nRGV2TW9kZSYmIUlhKHRbUG9dKSYmQ2IoZSk7bGV0IGk9bmV3KG5nRGV2TW9kZT9jT3Q6QXJyYXkpKG4sITAsITEsdCxudWxsLDAsbyxlLG51bGwsbnVsbCk7cmV0dXJuIG5nRGV2TW9kZSYmaW8oaS5sZW5ndGgsQmwsIlNob3VsZCBhbGxvY2F0ZSBjb3JyZWN0IG51bWJlciBvZiBzbG90cyBmb3IgTENvbnRhaW5lciBoZWFkZXIuIiksbmdEZXZNb2RlJiZIYnQoaSksaX1mdW5jdGlvbiBtT3Qobil7Zm9yKGxldCB0PU1CKG4pO3QhPT1udWxsO3Q9YkIodCkpZm9yKGxldCBlPUJsO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbz10W2VdLGk9b1tSbl07bmdEZXZNb2RlJiZ1bihpLCJUVmlldyBtdXN0IGJlIGFsbG9jYXRlZCIpLFE4KG8pJiZ6UihpLG8saS50ZW1wbGF0ZSxvW1RyXSl9fWZ1bmN0aW9uIGZPdChuKXtmb3IobGV0IHQ9TUIobik7dCE9PW51bGw7dD1iQih0KSl7aWYoIXRbajhdKWNvbnRpbnVlO2xldCBlPXRbTXldO25nRGV2TW9kZSYmdW4oZSwiVHJhbnNwbGFudGVkIFZpZXcgZmxhZ3Mgc2V0IGJ1dCBtaXNzaW5nIE1PVkVEX1ZJRVdTIik7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2xldCBpPWVbb10sYT1pW3lyXTtuZ0Rldk1vZGUmJnhiKGEpLChpW1FvXSYxMDI0KT09PTAmJks4KGEsMSksaVtRb118PTEwMjR9fX1mdW5jdGlvbiBwT3Qobix0KXtuZ0Rldk1vZGUmJmlvKFR3KG4pLCExLCJTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlIik7bGV0IGU9Y18odCxuKTtpZihROChlKSl7bGV0IG89ZVtSbl07ZVtRb10mODA/elIobyxlLG8udGVtcGxhdGUsZVtUcl0pOmVbaXZdPjAmJmk4KGUpfX1mdW5jdGlvbiBpOChuKXtmb3IobGV0IG89TUIobik7byE9PW51bGw7bz1iQihvKSlmb3IobGV0IGk9Qmw7aTxvLmxlbmd0aDtpKyspe2xldCBhPW9baV07aWYoYVtRb10mMTAyNCl7bGV0IHI9YVtSbl07bmdEZXZNb2RlJiZ1bihyLCJUVmlldyBtdXN0IGJlIGFsbG9jYXRlZCIpLHpSKHIsYSxyLnRlbXBsYXRlLGFbVHJdKX1lbHNlIGFbaXZdPjAmJmk4KGEpfWxldCBlPW5bUm5dLmNvbXBvbmVudHM7aWYoZSE9PW51bGwpZm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2xldCBpPWNfKGVbb10sbik7UTgoaSkmJmlbaXZdPjAmJmk4KGkpfX1mdW5jdGlvbiBkT3Qobix0KXtuZ0Rldk1vZGUmJmlvKFR3KG4pLCEwLCJTaG91bGQgYmUgcnVuIGluIGNyZWF0aW9uIG1vZGUiKTtsZXQgZT1jXyh0LG4pLG89ZVtSbl07Z090KG8sZSksSVQobyxlLGVbVHJdKX1mdW5jdGlvbiBnT3Qobix0KXtmb3IobGV0IGU9dC5sZW5ndGg7ZTxuLmJsdWVwcmludC5sZW5ndGg7ZSsrKXQucHVzaChuLmJsdWVwcmludFtlXSl9ZnVuY3Rpb24gelQobix0KXtyZXR1cm4gbltod10/bltSTF1baGddPXQ6bltod109dCxuW1JMXT10LHR9ZnVuY3Rpb24gQUIobil7Zm9yKDtuOyl7bltRb118PTY0O2xldCB0PURSKG4pO2lmKE4wdChuKSYmIXQpcmV0dXJuIG47bj10fXJldHVybiBudWxsfWZ1bmN0aW9uIHVPdChuLHQpe2lmKG4uZmxhZ3M9PT0wJiZuLmNsZWFuPT1vOCl7bi5mbGFnc3w9dDtsZXQgbztuLmNsZWFuPW5ldyBQcm9taXNlKGk9Pm89aSksbi5zY2hlZHVsZXIoKCk9PntpZihuLmZsYWdzJjEmJihuLmZsYWdzJj0tMix1JChuKSksbi5mbGFncyYyKXtuLmZsYWdzJj0tMztsZXQgaT1uLnBsYXllckhhbmRsZXI7aSYmaS5mbHVzaFBsYXllcnMoKX1uLmNsZWFuPW84LG8obnVsbCl9KX19ZnVuY3Rpb24gdSQobil7Zm9yKGxldCB0PTA7dDxuLmNvbXBvbmVudHMubGVuZ3RoO3QrKyl7bGV0IGU9bi5jb21wb25lbnRzW3RdLG89aEIoZSksaT1vW1JuXTtVYnQoaSxvLGkudGVtcGxhdGUsZSl9fWZ1bmN0aW9uIERCKG4sdCxlKXtsZXQgbz10W3J2XTtvLmJlZ2luJiZvLmJlZ2luKCk7dHJ5e3pSKG4sdCxuLnRlbXBsYXRlLGUpfWNhdGNoKGkpe3Rocm93IE0kKHQsaSksaX1maW5hbGx5e28uZW5kJiZvLmVuZCgpfX1mdW5jdGlvbiBoJChuKXt1JChuW1RyXSl9ZnVuY3Rpb24gaE90KG4sdCxlKXtLTighMCk7dHJ5e0RCKG4sdCxlKX1maW5hbGx5e0tOKCExKX19ZnVuY3Rpb24gX090KG4pe0tOKCEwKTt0cnl7aCQobil9ZmluYWxseXtLTighMSl9fWZ1bmN0aW9uIGE4KG4sdCxlKXtuZ0Rldk1vZGUmJnVuKHQsIlZpZXcgcXVlcmllcyBmdW5jdGlvbiB0byBleGVjdXRlIG11c3QgYmUgZGVmaW5lZC4iKSxlQigwKSx0KG4sZSl9ZnVuY3Rpb24gSXIobix0LGUsbywuLi5pKXtpZihuW29dPT09bnVsbCYmKHQuaW5wdXRzPT1udWxsfHwhdC5pbnB1dHNbZV0pKXsodC5wcm9wZXJ0eUJpbmRpbmdzfHwodC5wcm9wZXJ0eUJpbmRpbmdzPVtdKSkucHVzaChvKTtsZXQgcj1lO2kubGVuZ3RoPjAmJihyKz11UitpLmpvaW4odVIpKSxuW29dPXJ9fXZhciBDT3Q9bzg7ZnVuY3Rpb24gXyQobil7cmV0dXJuIG5bY3ZdfHwobltjdl09bmdEZXZNb2RlP25ldyBEYnQ6W10pfWZ1bmN0aW9uIHI4KG4pe3JldHVybiBuLmNsZWFudXB8fChuLmNsZWFudXA9bmdEZXZNb2RlP25ldyBJYnQ6W10pfWZ1bmN0aW9uIEMkKG4sdCxlKXtyZXR1cm4obj09PW51bGx8fFdDKG4pKSYmKGU9WTB0KGVbdC5pbmRleF0pKSxlW1BvXX1mdW5jdGlvbiBNJChuLHQpe2xldCBlPW5bbVJdLG89ZT9lLmdldCh5YSxudWxsKTpudWxsO28mJm8uaGFuZGxlRXJyb3IodCl9ZnVuY3Rpb24gYiQobix0LGUsbyxpKXtmb3IobGV0IGE9MDthPGUubGVuZ3RoOyl7bGV0IHI9ZVthKytdLHM9ZVthKytdLGw9dFtyXTtuZ0Rldk1vZGUmJkFyKHQscik7bGV0IGM9bi5kYXRhW3JdO2Muc2V0SW5wdXQhPT1udWxsP2Muc2V0SW5wdXQobCxpLG8scyk6bFtzXT1pfX1mdW5jdGlvbiBLTyhuLHQsZSl7bmdEZXZNb2RlJiZ5UihlLCJWYWx1ZSBzaG91bGQgYmUgYSBzdHJpbmciKSxuZ0Rldk1vZGUmJlN3KGUsJG4sInZhbHVlIHNob3VsZCBub3QgYmUgTk9fQ0hBTkdFIiksbmdEZXZNb2RlJiZBcihuLHQpO2xldCBvPVNUKHQsbik7bmdEZXZNb2RlJiZ1bihvLCJuYXRpdmUgZWxlbWVudCBzaG91bGQgZXhpc3QiKSxOSihuW1BvXSxvLGUpfWZ1bmN0aW9uIGFUKG4sdCxlKXtuZ0Rldk1vZGUmJk9nKENvKCksIkV4cGVjdGluZyB0byBiZSBjYWxsZWQgaW4gZmlyc3QgdGVtcGxhdGUgcGFzcyBvbmx5Iik7bGV0IG89ZT9uLnN0eWxlczpudWxsLGk9ZT9uLmNsYXNzZXM6bnVsbCxhPTA7aWYodCE9PW51bGwpZm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspe2xldCBzPXRbcl07aWYodHlwZW9mIHM9PSJudW1iZXIiKWE9cztlbHNlIGlmKGE9PTEpaT12TChpLHMpO2Vsc2UgaWYoYT09Mil7bGV0IGw9cyxjPXRbKytyXTtvPXZMKG8sbCsiOiAiK2MrIjsiKX19ZT9uLnN0eWxlcz1vOm4uc3R5bGVzV2l0aG91dEhvc3Q9byxlP24uY2xhc3Nlcz1pOm4uY2xhc3Nlc1dpdGhvdXRIb3N0PWl9ZnVuY3Rpb24gTU90KG4pe2xldCB0PXlKKG4pO0RCKHRbUm5dLHQsbil9ZnVuY3Rpb24gYk90KG4pe25nRGV2TW9kZSYmdW4obiwiY29tcG9uZW50Iik7bGV0IHQ9QUIoeUoobikpO25nRGV2TW9kZSYmdW4odFtUcl0sInJvb3RDb250ZXh0IHNob3VsZCBiZSBkZWZpbmVkIiksdU90KHRbVHJdLDEpfXZhciBKTz1uZXcgeXQoIklOSkVDVE9SIiwtMSk7dmFyIHJUPWNsYXNze2dldCh0LGU9cHkpe2lmKGU9PT1weSl7bGV0IG89bmV3IEVycm9yKGBOdWxsSW5qZWN0b3JFcnJvcjogTm8gcHJvdmlkZXIgZm9yICR7T28odCl9IWApO3Rocm93IG8ubmFtZT0iTnVsbEluamVjdG9yRXJyb3IiLG99cmV0dXJuIGV9fTt2YXIgSFQ9bmV3IHl0KCJTZXQgSW5qZWN0b3Igc2NvcGUuIik7dmFyIHRSPXt9LEZRPXt9LHNMO2Z1bmN0aW9uIE8kKCl7cmV0dXJuIHNMPT09dm9pZCAwJiYoc0w9bmV3IHJUKSxzTH1mdW5jdGlvbiBPT3Qobix0PW51bGwsZT1udWxsLG8pe2xldCBpPVAkKG4sdCxlLG8pO3JldHVybiBpLl9yZXNvbHZlSW5qZWN0b3JEZWZUeXBlcygpLGl9ZnVuY3Rpb24gUCQobix0PW51bGwsZT1udWxsLG8pe3JldHVybiBuZXcgczgobixlLHR8fE8kKCksbyl9dmFyIHM4PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGk9bnVsbCl7dGhpcy5wYXJlbnQ9byx0aGlzLnJlY29yZHM9bmV3IE1hcCx0aGlzLmluamVjdG9yRGVmVHlwZXM9bmV3IFNldCx0aGlzLm9uRGVzdHJveT1uZXcgU2V0LHRoaXMuX2Rlc3Ryb3llZD0hMTtsZXQgYT1bXTtlJiZfYihlLHM9PnRoaXMucHJvY2Vzc1Byb3ZpZGVyKHMsdCxlKSksX2IoW3RdLHM9PnRoaXMucHJvY2Vzc0luamVjdG9yVHlwZShzLFtdLGEpKSx0aGlzLnJlY29yZHMuc2V0KEpPLGd3KHZvaWQgMCx0aGlzKSk7bGV0IHI9dGhpcy5yZWNvcmRzLmdldChIVCk7dGhpcy5zY29wZT1yIT1udWxsP3IudmFsdWU6bnVsbCx0aGlzLnNvdXJjZT1pfHwodHlwZW9mIHQ9PSJvYmplY3QiP251bGw6T28odCkpfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfWRlc3Ryb3koKXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpLHRoaXMuX2Rlc3Ryb3llZD0hMDt0cnl7dGhpcy5vbkRlc3Ryb3kuZm9yRWFjaCh0PT50Lm5nT25EZXN0cm95KCkpfWZpbmFsbHl7dGhpcy5yZWNvcmRzLmNsZWFyKCksdGhpcy5vbkRlc3Ryb3kuY2xlYXIoKSx0aGlzLmluamVjdG9yRGVmVHlwZXMuY2xlYXIoKX19Z2V0KHQsZT1weSxvPU5pLkRlZmF1bHQpe3RoaXMuYXNzZXJ0Tm90RGVzdHJveWVkKCk7bGV0IGk9UFEodGhpcyksYT1feSh2b2lkIDApO3RyeXtpZighKG8mTmkuU2tpcFNlbGYpKXtsZXQgcz10aGlzLnJlY29yZHMuZ2V0KHQpO2lmKHM9PT12b2lkIDApe2xldCBsPUVPdCh0KSYmRjgodCk7bCYmdGhpcy5pbmplY3RhYmxlRGVmSW5TY29wZShsKT9zPWd3KGw4KHQpLHRSKTpzPW51bGwsdGhpcy5yZWNvcmRzLnNldCh0LHMpfWlmKHMhPW51bGwpcmV0dXJuIHRoaXMuaHlkcmF0ZSh0LHMpfWxldCByPW8mTmkuU2VsZj9PJCgpOnRoaXMucGFyZW50O3JldHVybiBlPW8mTmkuT3B0aW9uYWwmJmU9PT1weT9udWxsOmUsci5nZXQodCxlKX1jYXRjaChyKXtpZihyLm5hbWU9PT0iTnVsbEluamVjdG9yRXJyb3IiKXtpZigocltpVF09cltpVF18fFtdKS51bnNoaWZ0KE9vKHQpKSxpKXRocm93IHI7cmV0dXJuIFlDdChyLHQsIlIzSW5qZWN0b3JFcnJvciIsdGhpcy5zb3VyY2UpfWVsc2UgdGhyb3cgcn1maW5hbGx5e195KGEpLFBRKGkpfX1fcmVzb2x2ZUluamVjdG9yRGVmVHlwZXMoKXt0aGlzLmluamVjdG9yRGVmVHlwZXMuZm9yRWFjaCh0PT50aGlzLmdldCh0KSl9dG9TdHJpbmcoKXtsZXQgdD1bXTtyZXR1cm4gdGhpcy5yZWNvcmRzLmZvckVhY2goKG8saSk9PnQucHVzaChPbyhpKSkpLGBSM0luamVjdG9yWyR7dC5qb2luKCIsICIpfV1gfWFzc2VydE5vdERlc3Ryb3llZCgpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkluamVjdG9yIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkLiIpfXByb2Nlc3NJbmplY3RvclR5cGUodCxlLG8pe2lmKHQ9VW8odCksIXQpcmV0dXJuITE7bGV0IGk9ZlEodCksYT1pPT1udWxsJiZ0Lm5nTW9kdWxlfHx2b2lkIDAscj1hPT09dm9pZCAwP3Q6YTtpZihuZ0Rldk1vZGUmJmUuaW5kZXhPZihyKSE9PS0xKXtsZXQgbT1PbyhyKSxmPWUubWFwKE9vKTt3TChtLGYpfWxldCBzPW8uaW5kZXhPZihyKSE9PS0xO2lmKGEhPT12b2lkIDAmJihpPWZRKGEpKSxpPT1udWxsKXJldHVybiExO2lmKGkuaW1wb3J0cyE9bnVsbCYmIXMpe25nRGV2TW9kZSYmZS5wdXNoKHIpLG8ucHVzaChyKTtsZXQgbTt0cnl7X2IoaS5pbXBvcnRzLGY9Pnt0aGlzLnByb2Nlc3NJbmplY3RvclR5cGUoZixlLG8pJiYobT09PXZvaWQgMCYmKG09W10pLG0ucHVzaChmKSl9KX1maW5hbGx5e25nRGV2TW9kZSYmZS5wb3AoKX1pZihtIT09dm9pZCAwKWZvcihsZXQgZj0wO2Y8bS5sZW5ndGg7ZisrKXtsZXR7bmdNb2R1bGU6cCxwcm92aWRlcnM6Z309bVtmXTtfYihnLF89PnRoaXMucHJvY2Vzc1Byb3ZpZGVyKF8scCxnfHx1YSkpfX10aGlzLmluamVjdG9yRGVmVHlwZXMuYWRkKHIpO2xldCBsPW12KHIpfHwoKCk9Pm5ldyByKTt0aGlzLnJlY29yZHMuc2V0KHIsZ3cobCx0UikpO2xldCBjPWkucHJvdmlkZXJzO2lmKGMhPW51bGwmJiFzKXtsZXQgbT10O19iKGMsZj0+dGhpcy5wcm9jZXNzUHJvdmlkZXIoZixtLGMpKX1yZXR1cm4gYSE9PXZvaWQgMCYmdC5wcm92aWRlcnMhPT12b2lkIDB9cHJvY2Vzc1Byb3ZpZGVyKHQsZSxvKXt0PVVvKHQpO2xldCBpPU93KHQpP3Q6VW8odCYmdC5wcm92aWRlKSxhPXlPdCh0LGUsbyk7aWYoIU93KHQpJiZ0Lm11bHRpPT09ITApe2xldCByPXRoaXMucmVjb3Jkcy5nZXQoaSk7cj9uZ0Rldk1vZGUmJnIubXVsdGk9PT12b2lkIDAmJmNRKCk6KHI9Z3codm9pZCAwLHRSLCEwKSxyLmZhY3Rvcnk9KCk9PnpMKHIubXVsdGkpLHRoaXMucmVjb3Jkcy5zZXQoaSxyKSksaT10LHIubXVsdGkucHVzaCh0KX1lbHNle2xldCByPXRoaXMucmVjb3Jkcy5nZXQoaSk7bmdEZXZNb2RlJiZyJiZyLm11bHRpIT09dm9pZCAwJiZjUSgpfXRoaXMucmVjb3Jkcy5zZXQoaSxhKX1oeWRyYXRlKHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmZS52YWx1ZT09PUZRP3dMKE9vKHQpKTplLnZhbHVlPT09dFImJihlLnZhbHVlPUZRLGUudmFsdWU9ZS5mYWN0b3J5KCkpLHR5cGVvZiBlLnZhbHVlPT0ib2JqZWN0IiYmZS52YWx1ZSYmUk90KGUudmFsdWUpJiZ0aGlzLm9uRGVzdHJveS5hZGQoZS52YWx1ZSksZS52YWx1ZX1pbmplY3RhYmxlRGVmSW5TY29wZSh0KXtpZighdC5wcm92aWRlZEluKXJldHVybiExO2xldCBlPVVvKHQucHJvdmlkZWRJbik7cmV0dXJuIHR5cGVvZiBlPT0ic3RyaW5nIj9lPT09ImFueSJ8fGU9PT10aGlzLnNjb3BlOnRoaXMuaW5qZWN0b3JEZWZUeXBlcy5oYXMoZSl9fTtmdW5jdGlvbiBsOChuKXtsZXQgdD1GOChuKSxlPXQhPT1udWxsP3QuZmFjdG9yeTptdihuKTtpZihlIT09bnVsbClyZXR1cm4gZTtpZihuIGluc3RhbmNlb2YgeXQpdGhyb3cgbmV3IEVycm9yKGBUb2tlbiAke09vKG4pfSBpcyBtaXNzaW5nIGEgXHUwMjc1cHJvdiBkZWZpbml0aW9uLmApO2lmKG4gaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4gUE90KG4pO3Rocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX1mdW5jdGlvbiBQT3Qobil7bGV0IHQ9bi5sZW5ndGg7aWYodD4wKXtsZXQgbz1vUih0LCI/Iik7dGhyb3cgbmV3IEVycm9yKGBDYW4ndCByZXNvbHZlIGFsbCBwYXJhbWV0ZXJzIGZvciAke09vKG4pfTogKCR7by5qb2luKCIsICIpfSkuYCl9bGV0IGU9ZzB0KG4pO3JldHVybiBlIT09bnVsbD8oKT0+ZS5mYWN0b3J5KG4pOigpPT5uZXcgbn1mdW5jdGlvbiB5T3Qobix0LGUpe2lmKHgkKG4pKXJldHVybiBndyh2b2lkIDAsbi51c2VWYWx1ZSk7e2xldCBvPXkkKG4sdCxlKTtyZXR1cm4gZ3cobyx0Uil9fWZ1bmN0aW9uIHkkKG4sdCxlKXtsZXQgbztpZihPdyhuKSl7bGV0IGk9VW8obik7cmV0dXJuIG12KGkpfHxsOChpKX1lbHNlIGlmKHgkKG4pKW89KCk9PlVvKG4udXNlVmFsdWUpO2Vsc2UgaWYodk90KG4pKW89KCk9Pm4udXNlRmFjdG9yeSguLi56TChuLmRlcHN8fFtdKSk7ZWxzZSBpZih4T3Qobikpbz0oKT0+SShVbyhuLnVzZUV4aXN0aW5nKSk7ZWxzZXtsZXQgaT1VbyhuJiYobi51c2VDbGFzc3x8bi5wcm92aWRlKSk7aWYobmdEZXZNb2RlJiYhaSYmZjB0KHQsZSxuKSxTT3Qobikpbz0oKT0+bmV3IGkoLi4uekwobi5kZXBzKSk7ZWxzZSByZXR1cm4gbXYoaSl8fGw4KGkpfXJldHVybiBvfWZ1bmN0aW9uIGd3KG4sdCxlPSExKXtyZXR1cm57ZmFjdG9yeTpuLHZhbHVlOnQsbXVsdGk6ZT9bXTp2b2lkIDB9fWZ1bmN0aW9uIHgkKG4pe3JldHVybiBuIT09bnVsbCYmdHlwZW9mIG49PSJvYmplY3QiJiZWQ3QgaW4gbn1mdW5jdGlvbiB4T3Qobil7cmV0dXJuISEobiYmbi51c2VFeGlzdGluZyl9ZnVuY3Rpb24gdk90KG4pe3JldHVybiEhKG4mJm4udXNlRmFjdG9yeSl9ZnVuY3Rpb24gT3cobil7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24ifWZ1bmN0aW9uIHdPdChuKXtyZXR1cm4hIW4udXNlQ2xhc3N9ZnVuY3Rpb24gU090KG4pe3JldHVybiEhbi5kZXBzfWZ1bmN0aW9uIFJPdChuKXtyZXR1cm4gbiE9PW51bGwmJnR5cGVvZiBuPT0ib2JqZWN0IiYmdHlwZW9mIG4ubmdPbkRlc3Ryb3k9PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gRU90KG4pe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uInx8dHlwZW9mIG49PSJvYmplY3QiJiZuIGluc3RhbmNlb2YgeXR9ZnVuY3Rpb24ga090KG4sdCxlKXtyZXR1cm4gT090KHtuYW1lOmV9LHQsbixlKX12YXIgTFE9a090LCRlPWNsYXNze3N0YXRpYyBjcmVhdGUodCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9MUSh0LGUsIiIpOkxRKHQucHJvdmlkZXJzLHQucGFyZW50LHQubmFtZXx8IiIpfX07JGUuVEhST1dfSUZfTk9UX0ZPVU5EPXB5OyRlLk5VTEw9bmV3IHJUOyRlLlx1MDI3NXByb3Y9UHQoe3Rva2VuOiRlLHByb3ZpZGVkSW46ImFueSIsZmFjdG9yeTooKT0+SShKTyl9KTskZS5fX05HX0VMRU1FTlRfSURfXz0tMTtmdW5jdGlvbiBOT3Qobil7SUIobik7bGV0IHQ9dXYobik7cmV0dXJuIHQ9PT1udWxsP251bGw6KHQuY29tcG9uZW50PT09dm9pZCAwJiYodC5jb21wb25lbnQ9U010KHQubm9kZUluZGV4LHQubFZpZXcpKSx0LmNvbXBvbmVudCl9ZnVuY3Rpb24gVE90KG4pe0lCKG4pO2xldCB0PXV2KG4pO3JldHVybiB0PT09bnVsbD9udWxsOnQubFZpZXdbVHJdfWZ1bmN0aW9uIEFPdChuKXtsZXQgdD11dihuKTtpZih0PT09bnVsbClyZXR1cm4gbnVsbDtsZXQgZT10LmxWaWV3LG87Zm9yKG5nRGV2TW9kZSYma3coZSk7ZVtSbl0udHlwZT09PTImJihvPURSKGUpKTspZT1vO3JldHVybiBlW1FvXSY1MTI/bnVsbDplW1RyXX1mdW5jdGlvbiB2JChuKXtyZXR1cm5bLi4uUU10KG4pLmNvbXBvbmVudHNdfWZ1bmN0aW9uIERPdChuKXtsZXQgdD11dihuKTtpZih0PT09bnVsbClyZXR1cm4gJGUuTlVMTDtsZXQgZT10LmxWaWV3W1JuXS5kYXRhW3Qubm9kZUluZGV4XTtyZXR1cm4gbmV3IGZ5KGUsdC5sVmlldyl9ZnVuY3Rpb24gSU90KG4pe2lmKG4gaW5zdGFuY2VvZiBUZXh0KXJldHVybltdO2xldCB0PXV2KG4pO2lmKHQ9PT1udWxsKXJldHVybltdO2xldCBlPXQubFZpZXcsbz1lW1JuXSxpPXQubm9kZUluZGV4O3JldHVybiBvIT1udWxsJiZvLmRhdGFbaV0/KHQuZGlyZWN0aXZlcz09PXZvaWQgMCYmKHQuZGlyZWN0aXZlcz13SihpLGUsITEpKSx0LmRpcmVjdGl2ZXM9PT1udWxsP1tdOlsuLi50LmRpcmVjdGl2ZXNdKTpbXX1mdW5jdGlvbiB6T3Qobil7bGV0e2NvbnN0cnVjdG9yOnR9PW47aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCB0aGUgaW5zdGFuY2UgY29uc3RydWN0b3IiKTtsZXQgZT1WZih0KTtpZihlKXJldHVybntpbnB1dHM6ZS5pbnB1dHMsb3V0cHV0czplLm91dHB1dHMsZW5jYXBzdWxhdGlvbjplLmVuY2Fwc3VsYXRpb24sY2hhbmdlRGV0ZWN0aW9uOmUub25QdXNoP3R0Lk9uUHVzaDp0dC5EZWZhdWx0fTtsZXQgbz1jeSh0KTtyZXR1cm4gbz97aW5wdXRzOm8uaW5wdXRzLG91dHB1dHM6by5vdXRwdXRzfTpudWxsfWZ1bmN0aW9uIEhPdChuKXtyZXR1cm4gdXYobikubmF0aXZlfWZ1bmN0aW9uIEZPdChuKXtJQihuKTtsZXQgdD11dihuKTtpZih0PT09bnVsbClyZXR1cm5bXTtsZXQgZT10LmxWaWV3LG89ZVtSbl0saT1lW2N2XSxhPW8uY2xlYW51cCxyPVtdO2lmKGEmJmkpZm9yKGxldCBzPTA7czxhLmxlbmd0aDspe2xldCBsPWFbcysrXSxjPWFbcysrXTtpZih0eXBlb2YgbD09InN0cmluZyIpe2xldCBtPWwsZj1acyhlW2NdKSxwPWlbYVtzKytdXSxnPWFbcysrXSxfPXR5cGVvZiBnPT0iYm9vbGVhbiJ8fGc+PTA/ImRvbSI6Im91dHB1dCIsTT10eXBlb2YgZz09ImJvb2xlYW4iP2c6ITE7bj09ZiYmci5wdXNoKHtlbGVtZW50Om4sbmFtZTptLGNhbGxiYWNrOnAsdXNlQ2FwdHVyZTpNLHR5cGU6X30pfX1yZXR1cm4gci5zb3J0KExPdCkscn1mdW5jdGlvbiBMT3Qobix0KXtyZXR1cm4gbi5uYW1lPT10Lm5hbWU/MDpuLm5hbWU8dC5uYW1lPy0xOjF9ZnVuY3Rpb24gSUIobil7aWYodHlwZW9mIEVsZW1lbnQhPSJ1bmRlZmluZWQiJiYhKG4gaW5zdGFuY2VvZiBFbGVtZW50KSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBpbnN0YW5jZSBvZiBET00gRWxlbWVudCIpfWZ1bmN0aW9uIEJPdChuKXtiT3QobiksdiQobikuZm9yRWFjaCh0PT5NT3QodCkpfXZhciBCUT0ibmciLFZRPSExO2Z1bmN0aW9uIFZPdCgpe1ZRfHwoVlE9ITAsakMoIlx1MDI3NXNldFByb2ZpbGVyIixCMHQpLGpDKCJnZXREaXJlY3RpdmVNZXRhZGF0YSIsek90KSxqQygiZ2V0Q29tcG9uZW50IixOT3QpLGpDKCJnZXRDb250ZXh0IixUT3QpLGpDKCJnZXRMaXN0ZW5lcnMiLEZPdCksakMoImdldE93bmluZ0NvbXBvbmVudCIsQU90KSxqQygiZ2V0SG9zdEVsZW1lbnQiLEhPdCksakMoImdldEluamVjdG9yIixET3QpLGpDKCJnZXRSb290Q29tcG9uZW50cyIsdiQpLGpDKCJnZXREaXJlY3RpdmVzIixJT3QpLGpDKCJhcHBseUNoYW5nZXMiLEJPdCkpfWZ1bmN0aW9uIGpDKG4sdCl7aWYodHlwZW9mIENPTVBJTEVEPT0idW5kZWZpbmVkInx8IUNPTVBJTEVEKXtsZXQgZT1NaTtpZihuZ0Rldk1vZGUmJnVuKHQsImZ1bmN0aW9uIG5vdCBkZWZpbmVkIiksZSl7bGV0IG89ZVtCUV07b3x8KG89ZVtCUV09e30pLG9bbl09dH19fWZ1bmN0aW9uIGpPdChuLHQsZSxvLGksYSl7bGV0IHI9ZVtSbl0scz1naTtuZ0Rldk1vZGUmJkFyKGUscyksZVtzXT1uO2xldCBsPUZ3KHIscywyLCIjaG9zdCIsbnVsbCksYz1sLm1lcmdlZEF0dHJzPXQuaG9zdEF0dHJzO2MhPT1udWxsJiYoYVQobCxjLCEwKSxuIT09bnVsbCYmKEpOKGksbixjKSxsLmNsYXNzZXMhPT1udWxsJiZ4QihpLG4sbC5jbGFzc2VzKSxsLnN0eWxlcyE9PW51bGwmJllKKGksbixsLnN0eWxlcykpKTtsZXQgbT1vLmNyZWF0ZVJlbmRlcmVyKG4sdCksZj1EVChlLHIkKHQpLG51bGwsdC5vblB1c2g/NjQ6MTYsZVtzXSxsLG8sbSxhfHxudWxsLG51bGwpO3JldHVybiByLmZpcnN0Q3JlYXRlUGFzcyYmKGVUKGRSKGwsZSkscix0LnR5cGUpLGYkKHIsbCkscCQobCxlLmxlbmd0aCwxKSkselQoZSxmKSxlW3NdPWZ9ZnVuY3Rpb24gVU90KG4sdCxlLG8saSl7bGV0IGE9ZVtSbl0scj0kYnQoYSxlLHQpO2lmKG8uY29tcG9uZW50cy5wdXNoKHIpLG5bVHJdPXIsaSYmaS5mb3JFYWNoKGw9Pmwocix0KSksdC5jb250ZW50UXVlcmllcyl7bGV0IGw9VHMoKTtuZ0Rldk1vZGUmJnVuKGwsIlROb2RlIGV4cGVjdGVkIiksdC5jb250ZW50UXVlcmllcygxLHIsbC5kaXJlY3RpdmVTdGFydCl9bGV0IHM9VHMoKTtpZihuZ0Rldk1vZGUmJnVuKHMsInROb2RlIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBjcmVhdGVkIiksYS5maXJzdENyZWF0ZVBhc3MmJih0Lmhvc3RCaW5kaW5ncyE9PW51bGx8fHQuaG9zdEF0dHJzIT09bnVsbCkpe095KHMuaW5kZXgpO2xldCBsPWVbUm5dO2MkKGwscyxlLHMuZGlyZWN0aXZlU3RhcnQscy5kaXJlY3RpdmVFbmQsdCksbSQodCxyKX1yZXR1cm4gcn1mdW5jdGlvbiBZT3Qobix0KXtyZXR1cm57Y29tcG9uZW50czpbXSxzY2hlZHVsZXI6bnx8UkosY2xlYW46Q090LHBsYXllckhhbmRsZXI6dHx8bnVsbCxmbGFnczowfX1mdW5jdGlvbiBHT3Qobix0KXtsZXQgZT1oQihuKTtuZ0Rldk1vZGUmJnVuKGUsIkxWaWV3IGlzIHJlcXVpcmVkIik7bGV0IG89ZVtSbl0saT1UcygpO25nRGV2TW9kZSYmdW4oaSwiVE5vZGUgaXMgcmVxdWlyZWQiKSxSVChvLGkpfWZ1bmN0aW9uIHckKG4pe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobi5wcm90b3R5cGUpLmNvbnN0cnVjdG9yfWZ1bmN0aW9uIGFlKG4pe2xldCB0PXckKG4udHlwZSksZT0hMCxvPVtuXTtmb3IoO3Q7KXtsZXQgaTtpZihXQyhuKSlpPXQuXHUwMjc1Y21wfHx0Llx1MDI3NWRpcjtlbHNle2lmKHQuXHUwMjc1Y21wKXRocm93IG5ldyBFcnJvcigiRGlyZWN0aXZlcyBjYW5ub3QgaW5oZXJpdCBDb21wb25lbnRzIik7aT10Llx1MDI3NWRpcn1pZihpKXtpZihlKXtvLnB1c2goaSk7bGV0IHI9bjtyLmlucHV0cz1sTChuLmlucHV0cyksci5kZWNsYXJlZElucHV0cz1sTChuLmRlY2xhcmVkSW5wdXRzKSxyLm91dHB1dHM9bEwobi5vdXRwdXRzKTtsZXQgcz1pLmhvc3RCaW5kaW5ncztzJiZYT3QobixzKTtsZXQgbD1pLnZpZXdRdWVyeSxjPWkuY29udGVudFF1ZXJpZXM7aWYobCYmcU90KG4sbCksYyYmWk90KG4sYyksSzcobi5pbnB1dHMsaS5pbnB1dHMpLEs3KG4uZGVjbGFyZWRJbnB1dHMsaS5kZWNsYXJlZElucHV0cyksSzcobi5vdXRwdXRzLGkub3V0cHV0cyksV0MoaSkmJmkuZGF0YS5hbmltYXRpb24pe2xldCBtPW4uZGF0YTttLmFuaW1hdGlvbj0obS5hbmltYXRpb258fFtdKS5jb25jYXQoaS5kYXRhLmFuaW1hdGlvbil9fWxldCBhPWkuZmVhdHVyZXM7aWYoYSlmb3IobGV0IHI9MDtyPGEubGVuZ3RoO3IrKyl7bGV0IHM9YVtyXTtzJiZzLm5nSW5oZXJpdCYmcyhuKSxzPT09YWUmJihlPSExKX19dD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9V090KG8pfWZ1bmN0aW9uIFdPdChuKXtsZXQgdD0wLGU9bnVsbDtmb3IobGV0IG89bi5sZW5ndGgtMTtvPj0wO28tLSl7bGV0IGk9bltvXTtpLmhvc3RWYXJzPXQrPWkuaG9zdFZhcnMsaS5ob3N0QXR0cnM9JE4oaS5ob3N0QXR0cnMsZT0kTihlLGkuaG9zdEF0dHJzKSl9fWZ1bmN0aW9uIGxMKG4pe3JldHVybiBuPT09bHY/e306bj09PXVhP1tdOm59ZnVuY3Rpb24gcU90KG4sdCl7bGV0IGU9bi52aWV3UXVlcnk7ZT9uLnZpZXdRdWVyeT0obyxpKT0+e3QobyxpKSxlKG8saSl9Om4udmlld1F1ZXJ5PXR9ZnVuY3Rpb24gWk90KG4sdCl7bGV0IGU9bi5jb250ZW50UXVlcmllcztlP24uY29udGVudFF1ZXJpZXM9KG8saSxhKT0+e3QobyxpLGEpLGUobyxpLGEpfTpuLmNvbnRlbnRRdWVyaWVzPXR9ZnVuY3Rpb24gWE90KG4sdCl7bGV0IGU9bi5ob3N0QmluZGluZ3M7ZT9uLmhvc3RCaW5kaW5ncz0obyxpKT0+e3QobyxpKSxlKG8saSl9Om4uaG9zdEJpbmRpbmdzPXR9dmFyIFFPdD1bInByb3ZpZGVyc1Jlc29sdmVyIl0sS090PVsidGVtcGxhdGUiLCJkZWNscyIsImNvbnN0cyIsInZhcnMiLCJvblB1c2giLCJuZ0NvbnRlbnRTZWxlY3RvcnMiLCJzdHlsZXMiLCJlbmNhcHN1bGF0aW9uIiwic2NoZW1hcyJdO2Z1bmN0aW9uIEpPdChuKXtsZXQgdD13JChuLnR5cGUpLGU7V0Mobik/ZT10Llx1MDI3NWNtcDplPXQuXHUwMjc1ZGlyO2xldCBvPW47Zm9yKGxldCBpIG9mIFFPdClvW2ldPWVbaV07aWYoV0MoZSkpZm9yKGxldCBpIG9mIEtPdClvW2ldPWVbaV19dmFyIExOPW51bGw7ZnVuY3Rpb24gUHcoKXtpZighTE4pe2xldCBuPU1pLlN5bWJvbDtpZihuJiZuLml0ZXJhdG9yKUxOPW4uaXRlcmF0b3I7ZWxzZXtsZXQgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhNYXAucHJvdG90eXBlKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSl7bGV0IG89dFtlXTtvIT09ImVudHJpZXMiJiZvIT09InNpemUiJiZNYXAucHJvdG90eXBlW29dPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYoTE49byl9fX1yZXR1cm4gTE59ZnVuY3Rpb24gUyQobix0KXtsZXQgZT15dyhuKSxvPXl3KHQpO3JldHVybiBlJiZvPyRPdChuLHQsUyQpOiFlJiYobiYmKHR5cGVvZiBuPT0ib2JqZWN0Inx8dHlwZW9mIG49PSJmdW5jdGlvbiIpKSYmIW8mJih0JiYodHlwZW9mIHQ9PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpPyEwOk9iamVjdC5pcyhuLHQpfXZhciBkeT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLndyYXBwZWQ9dH1zdGF0aWMgd3JhcCh0KXtyZXR1cm4gbmV3IGR5KHQpfXN0YXRpYyB1bndyYXAodCl7cmV0dXJuIGR5LmlzV3JhcHBlZCh0KT90LndyYXBwZWQ6dH1zdGF0aWMgaXNXcmFwcGVkKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZHl9fTtmdW5jdGlvbiB5dyhuKXtyZXR1cm4gekIobik/QXJyYXkuaXNBcnJheShuKXx8IShuIGluc3RhbmNlb2YgTWFwKSYmUHcoKWluIG46ITF9ZnVuY3Rpb24gJE90KG4sdCxlKXtsZXQgbz1uW1B3KCldKCksaT10W1B3KCldKCk7Zm9yKDs7KXtsZXQgYT1vLm5leHQoKSxyPWkubmV4dCgpO2lmKGEuZG9uZSYmci5kb25lKXJldHVybiEwO2lmKGEuZG9uZXx8ci5kb25lfHwhZShhLnZhbHVlLHIudmFsdWUpKXJldHVybiExfX1mdW5jdGlvbiB0UHQobix0KXtpZihBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXQobltlXSk7ZWxzZXtsZXQgZT1uW1B3KCldKCksbztmb3IoOyEobz1lLm5leHQoKSkuZG9uZTspdChvLnZhbHVlKX19ZnVuY3Rpb24gekIobil7cmV0dXJuIG4hPT1udWxsJiYodHlwZW9mIG49PSJmdW5jdGlvbiJ8fHR5cGVvZiBuPT0ib2JqZWN0Iil9ZnVuY3Rpb24gRWIobix0LGUpe3JldHVybiBuW3RdPWV9ZnVuY3Rpb24gSFIobix0KXtyZXR1cm4gbmdEZXZNb2RlJiZBcihuLHQpLG5nRGV2TW9kZSYmU3coblt0XSwkbiwiU3RvcmVkIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksblt0XX1mdW5jdGlvbiBXYyhuLHQsZSl7bmdEZXZNb2RlJiZTdyhlLCRuLCJJbmNvbWluZyB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpLG5nRGV2TW9kZSYmaHkodCxuLmxlbmd0aCwiU2xvdCBzaG91bGQgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIE5PX0NIQU5HRSIpO2xldCBvPW5bdF07aWYoT2JqZWN0LmlzKG8sZSkpcmV0dXJuITE7aWYobmdEZXZNb2RlJiZBdygpKXtsZXQgaT1vIT09JG4/bzp2b2lkIDA7aWYoIVMkKGksZSkpe2xldCBhPXFNdChuLHQsaSxlKTtXTXQobz09PSRuLGEub2xkVmFsdWUsYS5uZXdWYWx1ZSxhLnByb3BOYW1lKX1yZXR1cm4hMX1yZXR1cm4gblt0XT1lLCEwfWZ1bmN0aW9uIGR2KG4sdCxlLG8pe2xldCBpPVdjKG4sdCxlKTtyZXR1cm4gV2Mobix0KzEsbyl8fGl9ZnVuY3Rpb24gRlQobix0LGUsbyxpKXtsZXQgYT1kdihuLHQsZSxvKTtyZXR1cm4gV2Mobix0KzIsaSl8fGF9ZnVuY3Rpb24gbV8obix0LGUsbyxpLGEpe2xldCByPWR2KG4sdCxlLG8pO3JldHVybiBkdihuLHQrMixpLGEpfHxyfWZ1bmN0aW9uIHJlKG4sdCxlLG8pe2xldCBpPXZlKCksYT1EdygpO2lmKFdjKGksYSx0KSl7bGV0IHI9Q28oKSxzPURyKCk7UmIocyxpLG4sdCxlLG8pLG5nRGV2TW9kZSYmSXIoci5kYXRhLHMsImF0dHIuIituLGEpfXJldHVybiByZX1mdW5jdGlvbiBCdyhuLHQpe25nRGV2TW9kZSYmaHkoMix0Lmxlbmd0aCwic2hvdWxkIGhhdmUgYXQgbGVhc3QgMyB2YWx1ZXMiKSxuZ0Rldk1vZGUmJmlvKHQubGVuZ3RoJTIsMSwic2hvdWxkIGhhdmUgYW4gb2RkIG51bWJlciBvZiB2YWx1ZXMiKTtsZXQgZT0hMSxvPUxpKCk7Zm9yKGxldCBhPTE7YTx0Lmxlbmd0aDthKz0yKWU9V2MobixvKyssdFthXSl8fGU7aWYoVUsobyksIWUpcmV0dXJuICRuO2xldCBpPXRbMF07Zm9yKGxldCBhPTE7YTx0Lmxlbmd0aDthKz0yKWkrPVJvKHRbYV0pK3RbYSsxXTtyZXR1cm4gaX1mdW5jdGlvbiBWdyhuLHQsZSxvKXtyZXR1cm4gV2MobixEdygpLGUpP3QrUm8oZSkrbzokbn1mdW5jdGlvbiBqdyhuLHQsZSxvLGksYSl7bGV0IHI9TGkoKSxzPWR2KG4scixlLGkpO3JldHVybiBYTygyKSxzP3QrUm8oZSkrbytSbyhpKSthOiRufWZ1bmN0aW9uIFV3KG4sdCxlLG8saSxhLHIscyl7bGV0IGw9TGkoKSxjPUZUKG4sbCxlLGkscik7cmV0dXJuIFhPKDMpLGM/dCtSbyhlKStvK1JvKGkpK2ErUm8ocikrczokbn1mdW5jdGlvbiBZdyhuLHQsZSxvLGksYSxyLHMsbCxjKXtsZXQgbT1MaSgpLGY9bV8obixtLGUsaSxyLGwpO3JldHVybiBYTyg0KSxmP3QrUm8oZSkrbytSbyhpKSthK1JvKHIpK3MrUm8obCkrYzokbn1mdW5jdGlvbiBHdyhuLHQsZSxvLGksYSxyLHMsbCxjLG0sZil7bGV0IHA9TGkoKSxnPW1fKG4scCxlLGkscixsKTtyZXR1cm4gZz1XYyhuLHArNCxtKXx8ZyxYTyg1KSxnP3QrUm8oZSkrbytSbyhpKSthK1JvKHIpK3MrUm8obCkrYytSbyhtKStmOiRufWZ1bmN0aW9uIFd3KG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyl7bGV0IF89TGkoKSxNPW1fKG4sXyxlLGkscixsKTtyZXR1cm4gTT1kdihuLF8rNCxtLHApfHxNLFhPKDYpLE0/dCtSbyhlKStvK1JvKGkpK2ErUm8ocikrcytSbyhsKStjK1JvKG0pK2YrUm8ocCkrZzokbn1mdW5jdGlvbiBxdyhuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyxNKXtsZXQgeT1MaSgpLE89bV8obix5LGUsaSxyLGwpO3JldHVybiBPPUZUKG4seSs0LG0scCxfKXx8TyxYTyg3KSxPP3QrUm8oZSkrbytSbyhpKSthK1JvKHIpK3MrUm8obCkrYytSbyhtKStmK1JvKHApK2crUm8oXykrTTokbn1mdW5jdGlvbiBadyhuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyxNLHksTyl7bGV0IGI9TGkoKSxSPW1fKG4sYixlLGkscixsKTtyZXR1cm4gUj1tXyhuLGIrNCxtLHAsXyx5KXx8UixYTyg4KSxSP3QrUm8oZSkrbytSbyhpKSthK1JvKHIpK3MrUm8obCkrYytSbyhtKStmK1JvKHApK2crUm8oXykrTStSbyh5KStPOiRufWZ1bmN0aW9uIFIkKG4sdCxlLG8saSxhKXtsZXQgcj12ZSgpLHM9Vncocix0LGUsbyk7aWYocyE9PSRuKXtsZXQgbD1EcigpO1JiKGwscixuLHMsaSxhKSxuZ0Rldk1vZGUmJklyKENvKCkuZGF0YSxsLCJhdHRyLiIrbixMaSgpLTEsdCxvKX1yZXR1cm4gUiR9ZnVuY3Rpb24gRSQobix0LGUsbyxpLGEscixzKXtsZXQgbD12ZSgpLGM9ancobCx0LGUsbyxpLGEpO2lmKGMhPT0kbil7bGV0IG09RHIoKTtSYihtLGwsbixjLHIscyksbmdEZXZNb2RlJiZJcihDbygpLmRhdGEsbSwiYXR0ci4iK24sTGkoKS0yLHQsbyxhKX1yZXR1cm4gRSR9ZnVuY3Rpb24gayQobix0LGUsbyxpLGEscixzLGwsYyl7bGV0IG09dmUoKSxmPVV3KG0sdCxlLG8saSxhLHIscyk7aWYoZiE9PSRuKXtsZXQgcD1EcigpO1JiKHAsbSxuLGYsbCxjKSxuZ0Rldk1vZGUmJklyKENvKCkuZGF0YSxwLCJhdHRyLiIrbixMaSgpLTMsdCxvLGEscyl9cmV0dXJuIGskfWZ1bmN0aW9uIE4kKG4sdCxlLG8saSxhLHIscyxsLGMsbSxmKXtsZXQgcD12ZSgpLGc9WXcocCx0LGUsbyxpLGEscixzLGwsYyk7aWYoZyE9PSRuKXtsZXQgXz1EcigpO1JiKF8scCxuLGcsbSxmKSxuZ0Rldk1vZGUmJklyKENvKCkuZGF0YSxfLCJhdHRyLiIrbixMaSgpLTQsdCxvLGEscyxjKX1yZXR1cm4gTiR9ZnVuY3Rpb24gVCQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnKXtsZXQgXz12ZSgpLE09R3coXyx0LGUsbyxpLGEscixzLGwsYyxtLGYpO2lmKE0hPT0kbil7bGV0IHk9RHIoKTtSYih5LF8sbixNLHAsZyksbmdEZXZNb2RlJiZJcihDbygpLmRhdGEseSwiYXR0ci4iK24sTGkoKS01LHQsbyxhLHMsYyxmKX1yZXR1cm4gVCR9ZnVuY3Rpb24gQSQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSl7bGV0IHk9dmUoKSxPPVd3KHksdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyk7aWYoTyE9PSRuKXtsZXQgYj1EcigpO1JiKGIseSxuLE8sXyxNKSxuZ0Rldk1vZGUmJklyKENvKCkuZGF0YSxiLCJhdHRyLiIrbixMaSgpLTYsdCxvLGEscyxjLGYsZyl9cmV0dXJuIEEkfWZ1bmN0aW9uIEQkKG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSxPKXtsZXQgYj12ZSgpLFI9cXcoYix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSk7aWYoUiE9PSRuKXtsZXQgRT1EcigpO1JiKEUsYixuLFIseSxPKSxuZ0Rldk1vZGUmJklyKENvKCkuZGF0YSxFLCJhdHRyLiIrbixMaSgpLTcsdCxvLGEscyxjLGYsZyxNKX1yZXR1cm4gRCR9ZnVuY3Rpb24gSSQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE8sYixSKXtsZXQgRT12ZSgpLGo9WncoRSx0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE8pO2lmKGohPT0kbil7bGV0IHJ0PURyKCk7UmIocnQsRSxuLGosYixSKSxuZ0Rldk1vZGUmJklyKENvKCkuZGF0YSxydCwiYXR0ci4iK24sTGkoKS04LHQsbyxhLHMsYyxmLGcsTSxPKX1yZXR1cm4gSSR9ZnVuY3Rpb24geiQobix0LGUsbyl7bGV0IGk9dmUoKSxhPUJ3KGksdCk7aWYoYSE9PSRuKXtsZXQgcj1EcigpO2lmKFJiKHIsaSxuLGEsZSxvKSxuZ0Rldk1vZGUpe2xldCBzPVt0WzBdXTtmb3IobGV0IGw9MjtsPHQubGVuZ3RoO2wrPTIpcy5wdXNoKHRbbF0pO0lyKENvKCkuZGF0YSxyLCJhdHRyLiIrbixMaSgpLXMubGVuZ3RoKzEsLi4ucyl9fXJldHVybiB6JH1mdW5jdGlvbiBlUHQobix0LGUsbyxpLGEscixzLGwpe25nRGV2TW9kZSYmT2codCksbmdEZXZNb2RlJiZuZ0Rldk1vZGUuZmlyc3RDcmVhdGVQYXNzKys7bGV0IGM9dC5jb25zdHMsbT1Gdyh0LG4sNCxyfHxudWxsLGJ5KGMscykpO05CKHQsZSxtLGJ5KGMsbCkpLFJUKHQsbSk7bGV0IGY9bS50Vmlld3M9RUIoMixtLG8saSxhLHQuZGlyZWN0aXZlUmVnaXN0cnksdC5waXBlUmVnaXN0cnksbnVsbCx0LnNjaGVtYXMsYyk7cmV0dXJuIHQucXVlcmllcyE9PW51bGwmJih0LnF1ZXJpZXMudGVtcGxhdGUodCxtKSxmLnF1ZXJpZXM9dC5xdWVyaWVzLmVtYmVkZGVkVFZpZXcobSkpLG19ZnVuY3Rpb24gayhuLHQsZSxvLGksYSxyLHMpe2xldCBsPXZlKCksYz1DbygpLG09bitnaSxmPWMuZmlyc3RDcmVhdGVQYXNzP2VQdChtLGMsbCx0LGUsbyxpLGEscik6Yy5kYXRhW21dO3ZiKGYsITEpO2xldCBwPWxbUG9dLmNyZWF0ZUNvbW1lbnQobmdEZXZNb2RlPyJjb250YWluZXIiOiIiKTtBVChjLGwscCxmKSxqYyhwLGwpLHpUKGwsbFttXT1nJChwLGwscCxmKSksd1QoZikmJlNCKGMsbCxmKSxyIT1udWxsJiZSQihsLGYscyl9ZnVuY3Rpb24gblB0KG4sdCxlLG8pe2U+PW4uZGF0YS5sZW5ndGgmJihuLmRhdGFbZV09bnVsbCxuLmJsdWVwcmludFtlXT1udWxsKSx0W2VdPW99ZnVuY3Rpb24gd2Uobil7bGV0IHQ9SzB0KCk7cmV0dXJuIE53KHQsZ2krbil9dmFyIGpRPXtcdTAyNzVcdTAyNzVkZWZpbmVJbmplY3RhYmxlOlB0LFx1MDI3NVx1MDI3NWRlZmluZUluamVjdG9yOlcsXHUwMjc1XHUwMjc1aW5qZWN0OkksXHUwMjc1XHUwMjc1aW52YWxpZEZhY3RvcnlEZXA6c0oscmVzb2x2ZUZvcndhcmRSZWY6VW99O2Z1bmN0aW9uIG9QdChuLHQpe2xldCBlPW51bGwsbz1udWxsO24uaGFzT3duUHJvcGVydHkoV04pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixXTix7Z2V0OigpPT4oZT09PW51bGwmJihlPXJfKHt1c2FnZTowLGtpbmQ6ImluamVjdGFibGUiLHR5cGU6bn0pLmNvbXBpbGVJbmplY3RhYmxlKGpRLGBuZzovLy8ke24ubmFtZX0vXHUwMjc1cHJvdi5qc2AsbFB0KG4sdCkpKSxlKX0pLG4uaGFzT3duUHJvcGVydHkoVU8pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixVTyx7Z2V0OigpPT57aWYobz09PW51bGwpe2xldCBpPXJfKHt1c2FnZTowLGtpbmQ6ImluamVjdGFibGUiLHR5cGU6bn0pO289aS5jb21waWxlRmFjdG9yeShqUSxgbmc6Ly8vJHtuLm5hbWV9L1x1MDI3NWZhYy5qc2Ase25hbWU6bi5uYW1lLHR5cGU6bix0eXBlQXJndW1lbnRDb3VudDowLGRlcHM6a1QobiksdGFyZ2V0OmkuRmFjdG9yeVRhcmdldC5JbmplY3RhYmxlfSl9cmV0dXJuIG99LGNvbmZpZ3VyYWJsZTohMH0pfXZhciBpUHQ9RmksYVB0PUZpKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTppUHR9KTtmdW5jdGlvbiBVUShuKXtyZXR1cm4gbi51c2VDbGFzcyE9PXZvaWQgMH1mdW5jdGlvbiByUHQobil7cmV0dXJuIGFQdCBpbiBufWZ1bmN0aW9uIFlRKG4pe3JldHVybiBuLnVzZUZhY3RvcnkhPT12b2lkIDB9ZnVuY3Rpb24gc1B0KG4pe3JldHVybiBuLnVzZUV4aXN0aW5nIT09dm9pZCAwfWZ1bmN0aW9uIGxQdChuLHQpe2xldCBlPXR8fHtwcm92aWRlZEluOm51bGx9LG89e25hbWU6bi5uYW1lLHR5cGU6bix0eXBlQXJndW1lbnRDb3VudDowLHByb3ZpZGVkSW46ZS5wcm92aWRlZElufTtyZXR1cm4oVVEoZSl8fFlRKGUpKSYmZS5kZXBzIT09dm9pZCAwJiYoby5kZXBzPWxKKGUuZGVwcykpLFVRKGUpP28udXNlQ2xhc3M9ZS51c2VDbGFzczpyUHQoZSk/by51c2VWYWx1ZT1lLnVzZVZhbHVlOllRKGUpP28udXNlRmFjdG9yeT1lLnVzZUZhY3Rvcnk6c1B0KGUpJiYoby51c2VFeGlzdGluZz1lLnVzZUV4aXN0aW5nKSxvfXZhciBjUHQ9RmksdGxlPUZpKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpjUHR9KTt2YXIgbVB0PShuLHQpPT5wUHQobix0KSxTdD1SUigiSW5qZWN0YWJsZSIsdm9pZCAwLHZvaWQgMCx2b2lkIDAsbVB0KTt2YXIgZlB0PW9QdDt2YXIgcFB0PWZQdDtmdW5jdGlvbiBkUHQobil7bGV0IHQ9W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDsrK2Upe2lmKHQuaW5kZXhPZihuW2VdKT4tMSlyZXR1cm4gdC5wdXNoKG5bZV0pLHQ7dC5wdXNoKG5bZV0pfXJldHVybiB0fWZ1bmN0aW9uIEhCKG4pe2lmKG4ubGVuZ3RoPjEpe2xldCBlPWRQdChuLnNsaWNlKCkucmV2ZXJzZSgpKS5tYXAobz0+T28oby50b2tlbikpO3JldHVybiIgKCIrZS5qb2luKCIgLT4gIikrIikifXJldHVybiIifWZ1bmN0aW9uIEZCKG4sdCxlLG8pe2xldCBpPVt0XSxhPWUoaSkscj1vP2tNdChhLG8pOkVycm9yKGEpO3JldHVybiByLmFkZEtleT1nUHQsci5rZXlzPWksci5pbmplY3RvcnM9W25dLHIuY29uc3RydWN0UmVzb2x2aW5nTWVzc2FnZT1lLHJbX0JdPW8scn1mdW5jdGlvbiBnUHQobix0KXt0aGlzLmluamVjdG9ycy5wdXNoKG4pLHRoaXMua2V5cy5wdXNoKHQpLHRoaXMubWVzc2FnZT10aGlzLmNvbnN0cnVjdFJlc29sdmluZ01lc3NhZ2UodGhpcy5rZXlzKX1mdW5jdGlvbiB1UHQobix0KXtyZXR1cm4gRkIobix0LGZ1bmN0aW9uKGUpe3JldHVybmBObyBwcm92aWRlciBmb3IgJHtPbyhlWzBdLnRva2VuKX0hJHtIQihlKX1gfSl9ZnVuY3Rpb24gaFB0KG4sdCl7cmV0dXJuIEZCKG4sdCxmdW5jdGlvbihlKXtyZXR1cm5gQ2Fubm90IGluc3RhbnRpYXRlIGN5Y2xpYyBkZXBlbmRlbmN5ISR7SEIoZSl9YH0pfWZ1bmN0aW9uIF9QdChuLHQsZSxvKXtyZXR1cm4gRkIobixvLGZ1bmN0aW9uKGkpe2xldCBhPU9vKGlbMF0udG9rZW4pO3JldHVybmAke3QubWVzc2FnZX06IEVycm9yIGR1cmluZyBpbnN0YW50aWF0aW9uIG9mICR7YX0hJHtIQihpKX0uYH0sdCl9ZnVuY3Rpb24gQ1B0KG4pe3JldHVybiBFcnJvcihgSW52YWxpZCBwcm92aWRlciAtIG9ubHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFuZCBUeXBlIGFyZSBhbGxvd2VkLCBnb3Q6ICR7bn1gKX1mdW5jdGlvbiBIJChuLHQpe2xldCBlPVtdO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IGE9dFtvXTshYXx8YS5sZW5ndGg9PTA/ZS5wdXNoKCI/Iik6ZS5wdXNoKGEubWFwKE9vKS5qb2luKCIgIikpfXJldHVybiBFcnJvcigiQ2Fubm90IHJlc29sdmUgYWxsIHBhcmFtZXRlcnMgZm9yICciK09vKG4pKyInKCIrZS5qb2luKCIsICIpKyIpLiBNYWtlIHN1cmUgdGhhdCBhbGwgdGhlIHBhcmFtZXRlcnMgYXJlIGRlY29yYXRlZCB3aXRoIEluamVjdCBvciBoYXZlIHZhbGlkIHR5cGUgYW5ub3RhdGlvbnMgYW5kIHRoYXQgJyIrT28obikrIicgaXMgZGVjb3JhdGVkIHdpdGggSW5qZWN0YWJsZS4iKX1mdW5jdGlvbiBNUHQobil7cmV0dXJuIEVycm9yKGBJbmRleCAke259IGlzIG91dC1vZi1ib3VuZHMuYCl9ZnVuY3Rpb24gYlB0KG4sdCl7cmV0dXJuIEVycm9yKGBDYW5ub3QgbWl4IG11bHRpIHByb3ZpZGVycyBhbmQgcmVndWxhciBwcm92aWRlcnMsIGdvdDogJHtufSAke3R9YCl9dmFyIE9iPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7aWYodGhpcy50b2tlbj10LHRoaXMuaWQ9ZSwhdCl0aHJvdyBuZXcgRXJyb3IoIlRva2VuIG11c3QgYmUgZGVmaW5lZCEiKTt0aGlzLmRpc3BsYXlOYW1lPU9vKHRoaXMudG9rZW4pfXN0YXRpYyBnZXQodCl7cmV0dXJuIEdRLmdldChVbyh0KSl9c3RhdGljIGdldCBudW1iZXJPZktleXMoKXtyZXR1cm4gR1EubnVtYmVyT2ZLZXlzfX0sYzg9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9hbGxLZXlzPW5ldyBNYXB9Z2V0KHQpe2lmKHQgaW5zdGFuY2VvZiBPYilyZXR1cm4gdDtpZih0aGlzLl9hbGxLZXlzLmhhcyh0KSlyZXR1cm4gdGhpcy5fYWxsS2V5cy5nZXQodCk7bGV0IGU9bmV3IE9iKHQsT2IubnVtYmVyT2ZLZXlzKTtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zZXQodCxlKSxlfWdldCBudW1iZXJPZktleXMoKXtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zaXplfX0sR1E9bmV3IGM4O3ZhciBtOD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9dH11cGRhdGVDYXBhYmlsaXRpZXModCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9ZmFjdG9yeSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmZhY3RvcnkodCl9cGFyYW1ldGVycyh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnBhcmFtZXRlcnModCl9YW5ub3RhdGlvbnModCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0KX1wcm9wTWV0YWRhdGEodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wcm9wTWV0YWRhdGEodCl9aGFzTGlmZWN5Y2xlSG9vayh0LGUpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaGFzTGlmZWN5Y2xlSG9vayh0LGUpfWdldHRlcih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX1zZXR0ZXIodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIodCl9bWV0aG9kKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKHQpfWltcG9ydFVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVyaSh0KX1yZXNvdXJjZVVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc291cmNlVXJpKHQpfXJlc29sdmVJZGVudGlmaWVyKHQsZSxvLGkpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb2x2ZUlkZW50aWZpZXIodCxlLG8saSl9cmVzb2x2ZUVudW0odCxlKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVFbnVtKHQsZSl9fTt2YXIgRiQ9bmV3IG04KG5ldyBvVCk7dmFyIHh3PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmtleT10LHRoaXMub3B0aW9uYWw9ZSx0aGlzLnZpc2liaWxpdHk9b31zdGF0aWMgZnJvbUtleSh0KXtyZXR1cm4gbmV3IHh3KHQsITEsbnVsbCl9fSxPUHQ9W10sc1Q9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMua2V5PXQsdGhpcy5yZXNvbHZlZEZhY3Rvcmllcz1lLHRoaXMubXVsdGlQcm92aWRlcj1vLHRoaXMucmVzb2x2ZWRGYWN0b3J5PXRoaXMucmVzb2x2ZWRGYWN0b3JpZXNbMF19fSxmOD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZmFjdG9yeT10LHRoaXMuZGVwZW5kZW5jaWVzPWV9fTtmdW5jdGlvbiBQUHQobil7bGV0IHQsZTtpZihuLnVzZUNsYXNzKXtsZXQgbz1VbyhuLnVzZUNsYXNzKTt0PUYkLmZhY3RvcnkobyksZT1CJChvKX1lbHNlIG4udXNlRXhpc3Rpbmc/KHQ9bz0+byxlPVt4dy5mcm9tS2V5KE9iLmdldChuLnVzZUV4aXN0aW5nKSldKTpuLnVzZUZhY3Rvcnk/KHQ9bi51c2VGYWN0b3J5LGU9d1B0KG4udXNlRmFjdG9yeSxuLmRlcHMpKToodD0oKT0+bi51c2VWYWx1ZSxlPU9QdCk7cmV0dXJuIG5ldyBmOCh0LGUpfWZ1bmN0aW9uIHlQdChuKXtyZXR1cm4gbmV3IHNUKE9iLmdldChuLnByb3ZpZGUpLFtQUHQobildLG4ubXVsdGl8fCExKX1mdW5jdGlvbiB4UHQobil7bGV0IGU9TCQobixbXSkubWFwKHlQdCksbz12UHQoZSxuZXcgTWFwKTtyZXR1cm4gQXJyYXkuZnJvbShvLnZhbHVlcygpKX1mdW5jdGlvbiB2UHQobix0KXtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7bGV0IG89bltlXSxpPXQuZ2V0KG8ua2V5LmlkKTtpZihpKXtpZihvLm11bHRpUHJvdmlkZXIhPT1pLm11bHRpUHJvdmlkZXIpdGhyb3cgYlB0KGksbyk7aWYoby5tdWx0aVByb3ZpZGVyKWZvcihsZXQgYT0wO2E8by5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7YSsrKWkucmVzb2x2ZWRGYWN0b3JpZXMucHVzaChvLnJlc29sdmVkRmFjdG9yaWVzW2FdKTtlbHNlIHQuc2V0KG8ua2V5LmlkLG8pfWVsc2V7bGV0IGE7by5tdWx0aVByb3ZpZGVyP2E9bmV3IHNUKG8ua2V5LG8ucmVzb2x2ZWRGYWN0b3JpZXMuc2xpY2UoKSxvLm11bHRpUHJvdmlkZXIpOmE9byx0LnNldChvLmtleS5pZCxhKX19cmV0dXJuIHR9ZnVuY3Rpb24gTCQobix0KXtyZXR1cm4gbi5mb3JFYWNoKGU9PntpZihlIGluc3RhbmNlb2YgWEMpdC5wdXNoKHtwcm92aWRlOmUsdXNlQ2xhc3M6ZX0pO2Vsc2UgaWYoZSYmdHlwZW9mIGU9PSJvYmplY3QiJiZlLnByb3ZpZGUhPT12b2lkIDApdC5wdXNoKGUpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlMJChlLHQpO2Vsc2UgdGhyb3cgQ1B0KGUpfSksdH1mdW5jdGlvbiB3UHQobix0KXtpZih0KXtsZXQgZT10Lm1hcChvPT5bb10pO3JldHVybiB0Lm1hcChvPT5WJChuLG8sZSkpfWVsc2UgcmV0dXJuIEIkKG4pfWZ1bmN0aW9uIEIkKG4pe2xldCB0PUYkLnBhcmFtZXRlcnMobik7aWYoIXQpcmV0dXJuW107aWYodC5zb21lKGU9PmU9PW51bGwpKXRocm93IEgkKG4sdCk7cmV0dXJuIHQubWFwKGU9PlYkKG4sZSx0KSl9ZnVuY3Rpb24gViQobix0LGUpe2xldCBvPW51bGwsaT0hMTtpZighQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdCBpbnN0YW5jZW9mIE4/Y0wodC50b2tlbixpLG51bGwpOmNMKHQsaSxudWxsKTtsZXQgYT1udWxsO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7KytyKXtsZXQgcz10W3JdO3MgaW5zdGFuY2VvZiBYQz9vPXM6cyBpbnN0YW5jZW9mIE4/bz1zLnRva2VuOnMgaW5zdGFuY2VvZiBIP2k9ITA6cyBpbnN0YW5jZW9mIElufHxzIGluc3RhbmNlb2YgWW8/YT1zOnMgaW5zdGFuY2VvZiB5dCYmKG89cyl9aWYobz1VbyhvKSxvIT1udWxsKXJldHVybiBjTChvLGksYSk7dGhyb3cgSCQobixlKX1mdW5jdGlvbiBjTChuLHQsZSl7cmV0dXJuIG5ldyB4dyhPYi5nZXQobiksdCxlKX12YXIgJFM9e30scU89Y2xhc3N7c3RhdGljIHJlc29sdmUodCl7cmV0dXJuIHhQdCh0KX1zdGF0aWMgcmVzb2x2ZUFuZENyZWF0ZSh0LGUpe2xldCBvPXFPLnJlc29sdmUodCk7cmV0dXJuIHFPLmZyb21SZXNvbHZlZFByb3ZpZGVycyhvLGUpfXN0YXRpYyBmcm9tUmVzb2x2ZWRQcm92aWRlcnModCxlKXtyZXR1cm4gbmV3IGd5KHQsZSl9fSxneT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXI9MCx0aGlzLl9wcm92aWRlcnM9dCx0aGlzLnBhcmVudD1lfHxudWxsO2xldCBvPXQubGVuZ3RoO3RoaXMua2V5SWRzPVtdLHRoaXMub2Jqcz1bXTtmb3IobGV0IGk9MDtpPG87aSsrKXRoaXMua2V5SWRzW2ldPXRbaV0ua2V5LmlkLHRoaXMub2Jqc1tpXT0kU31nZXQodCxlPXB5KXtyZXR1cm4gdGhpcy5fZ2V0QnlLZXkoT2IuZ2V0KHQpLG51bGwsZSl9cmVzb2x2ZUFuZENyZWF0ZUNoaWxkKHQpe2xldCBlPXFPLnJlc29sdmUodCk7cmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQoZSl9Y3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQodCl7bGV0IGU9bmV3IGd5KHQpO3JldHVybiBlLnBhcmVudD10aGlzLGV9cmVzb2x2ZUFuZEluc3RhbnRpYXRlKHQpe3JldHVybiB0aGlzLmluc3RhbnRpYXRlUmVzb2x2ZWQocU8ucmVzb2x2ZShbdF0pWzBdKX1pbnN0YW50aWF0ZVJlc29sdmVkKHQpe3JldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHQpfWdldFByb3ZpZGVyQXRJbmRleCh0KXtpZih0PDB8fHQ+PXRoaXMuX3Byb3ZpZGVycy5sZW5ndGgpdGhyb3cgTVB0KHQpO3JldHVybiB0aGlzLl9wcm92aWRlcnNbdF19X25ldyh0KXtpZih0aGlzLl9jb25zdHJ1Y3Rpb25Db3VudGVyKys+dGhpcy5fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCkpdGhyb3cgaFB0KHRoaXMsdC5rZXkpO3JldHVybiB0aGlzLl9pbnN0YW50aWF0ZVByb3ZpZGVyKHQpfV9nZXRNYXhOdW1iZXJPZk9iamVjdHMoKXtyZXR1cm4gdGhpcy5vYmpzLmxlbmd0aH1faW5zdGFudGlhdGVQcm92aWRlcih0KXtpZih0Lm11bHRpUHJvdmlkZXIpe2xldCBlPVtdO2ZvcihsZXQgbz0wO288dC5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7KytvKWVbb109dGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVzW29dKTtyZXR1cm4gZX1lbHNlIHJldHVybiB0aGlzLl9pbnN0YW50aWF0ZSh0LHQucmVzb2x2ZWRGYWN0b3JpZXNbMF0pfV9pbnN0YW50aWF0ZSh0LGUpe2xldCBvPWUuZmFjdG9yeSxpO3RyeXtpPWUuZGVwZW5kZW5jaWVzLm1hcChyPT50aGlzLl9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHIpKX1jYXRjaChyKXt0aHJvdyByLmFkZEtleSYmci5hZGRLZXkodGhpcyx0LmtleSkscn1sZXQgYTt0cnl7YT1vKC4uLmkpfWNhdGNoKHIpe3Rocm93IF9QdCh0aGlzLHIsci5zdGFjayx0LmtleSl9cmV0dXJuIGF9X2dldEJ5UmVmbGVjdGl2ZURlcGVuZGVuY3kodCl7cmV0dXJuIHRoaXMuX2dldEJ5S2V5KHQua2V5LHQudmlzaWJpbGl0eSx0Lm9wdGlvbmFsP251bGw6cHkpfV9nZXRCeUtleSh0LGUsbyl7cmV0dXJuIHQ9PT1neS5JTkpFQ1RPUl9LRVk/dGhpczplIGluc3RhbmNlb2YgSW4/dGhpcy5fZ2V0QnlLZXlTZWxmKHQsbyk6dGhpcy5fZ2V0QnlLZXlEZWZhdWx0KHQsbyxlKX1fZ2V0T2JqQnlLZXlJZCh0KXtmb3IobGV0IGU9MDtlPHRoaXMua2V5SWRzLmxlbmd0aDtlKyspaWYodGhpcy5rZXlJZHNbZV09PT10KXJldHVybiB0aGlzLm9ianNbZV09PT0kUyYmKHRoaXMub2Jqc1tlXT10aGlzLl9uZXcodGhpcy5fcHJvdmlkZXJzW2VdKSksdGhpcy5vYmpzW2VdO3JldHVybiAkU31fdGhyb3dPck51bGwodCxlKXtpZihlIT09cHkpcmV0dXJuIGU7dGhyb3cgdVB0KHRoaXMsdCl9X2dldEJ5S2V5U2VsZih0LGUpe2xldCBvPXRoaXMuX2dldE9iakJ5S2V5SWQodC5pZCk7cmV0dXJuIG8hPT0kUz9vOnRoaXMuX3Rocm93T3JOdWxsKHQsZSl9X2dldEJ5S2V5RGVmYXVsdCh0LGUsbyl7bGV0IGk7Zm9yKG8gaW5zdGFuY2VvZiBZbz9pPXRoaXMucGFyZW50Omk9dGhpcztpIGluc3RhbmNlb2YgZ3k7KXtsZXQgYT1pLHI9YS5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtpZihyIT09JFMpcmV0dXJuIHI7aT1hLnBhcmVudH1yZXR1cm4gaSE9PW51bGw/aS5nZXQodC50b2tlbixlKTp0aGlzLl90aHJvd09yTnVsbCh0LGUpfWdldCBkaXNwbGF5TmFtZSgpe3JldHVybmBSZWZsZWN0aXZlSW5qZWN0b3IocHJvdmlkZXJzOiBbJHtTUHQodGhpcyxlPT4nICInK2Uua2V5LmRpc3BsYXlOYW1lKyciICcpLmpvaW4oIiwgIil9XSlgfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuZGlzcGxheU5hbWV9fTtneS5JTkpFQ1RPUl9LRVk9T2IuZ2V0KCRlKTtmdW5jdGlvbiBTUHQobix0KXtsZXQgZT1bXTtmb3IobGV0IG89MDtvPG4uX3Byb3ZpZGVycy5sZW5ndGg7KytvKWVbb109dChuLmdldFByb3ZpZGVyQXRJbmRleChvKSk7cmV0dXJuIGV9ZnVuY3Rpb24gdihuLHQ9TmkuRGVmYXVsdCl7bGV0IGU9dmUoKTtpZihlPT09bnVsbClyZXR1cm4gbmdEZXZNb2RlJiZDMHQodiksSShuLHQpO2xldCBvPVRzKCk7cmV0dXJuIG9KKG8sZSxVbyhuKSx0KX1mdW5jdGlvbiBSUHQoKXtsZXQgbj1uZ0Rldk1vZGU/IlRoaXMgY29uc3RydWN0b3Igd2FzIG5vdCBjb21wYXRpYmxlIHdpdGggRGVwZW5kZW5jeSBJbmplY3Rpb24uIjoiaW52YWxpZCI7dGhyb3cgbmV3IEVycm9yKG4pfWZ1bmN0aW9uIFAobix0LGUpe2xldCBvPXZlKCksaT1EdygpO2lmKFdjKG8saSx0KSl7bGV0IGE9Q28oKSxyPURyKCk7dmcoYSxyLG8sbix0LG9bUG9dLGUsITEpLG5nRGV2TW9kZSYmSXIoYS5kYXRhLHIsbixpKX1yZXR1cm4gUH1mdW5jdGlvbiBwOChuLHQsZSxvLGkpe2xldCBhPXQuaW5wdXRzLHI9aT8iY2xhc3MiOiJzdHlsZSI7YiQobixlLGFbcl0scixvKX1mdW5jdGlvbiBFUHQobix0LGUsbyxpLGEscil7bmdEZXZNb2RlJiZPZyh0KSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5maXJzdENyZWF0ZVBhc3MrKztsZXQgcz10LmNvbnN0cyxsPWJ5KHMsYSksYz1Gdyh0LG4sMixpLGwpLG09TkIodCxlLGMsYnkocyxyKSk7cmV0dXJuIG5nRGV2TW9kZSYma1B0KHQsbyxjLG0pLGMuYXR0cnMhPT1udWxsJiZhVChjLGMuYXR0cnMsITEpLGMubWVyZ2VkQXR0cnMhPT1udWxsJiZhVChjLGMubWVyZ2VkQXR0cnMsITApLHQucXVlcmllcyE9PW51bGwmJnQucXVlcmllcy5lbGVtZW50U3RhcnQodCxjKSxjfWZ1bmN0aW9uIHUobix0LGUsbyl7bGV0IGk9dmUoKSxhPUNvKCkscj1naStuO25nRGV2TW9kZSYmaW8oTGkoKSxhLmJpbmRpbmdTdGFydEluZGV4LCJlbGVtZW50cyBzaG91bGQgYmUgY3JlYXRlZCBiZWZvcmUgYW55IGJpbmRpbmdzIiksbmdEZXZNb2RlJiZBcihpLHIpO2xldCBzPWlbUG9dLGw9aVtyXT1QQihzLHQsckN0KCkpLGM9YS5maXJzdENyZWF0ZVBhc3M/RVB0KHIsYSxpLGwsdCxlLG8pOmEuZGF0YVtyXTt2YihjLCEwKTtsZXQgbT1jLm1lcmdlZEF0dHJzO20hPT1udWxsJiZKTihzLGwsbSk7bGV0IGY9Yy5jbGFzc2VzO2YhPT1udWxsJiZ4QihzLGwsZik7bGV0IHA9Yy5zdHlsZXM7cCE9PW51bGwmJllKKHMsbCxwKSwoYy5mbGFncyY2NCkhPT02NCYmQVQoYSxpLGwsYyksVzB0KCk9PT0wJiZqYyhsLGkpLHEwdCgpLHdUKGMpJiYoU0IoYSxpLGMpLGEkKGEsYyxpKSksbyE9PW51bGwmJlJCKGksYyl9ZnVuY3Rpb24gaCgpe2xldCBuPVRzKCk7bmdEZXZNb2RlJiZ1bihuLCJObyBwYXJlbnQgbm9kZSB0byBjbG9zZS4iKSxKOCgpPyQ4KCk6KG5nRGV2TW9kZSYmRUsoVHMoKSksbj1uLnBhcmVudCx2YihuLCExKSk7bGV0IHQ9bjtuZ0Rldk1vZGUmJkdjKHQsMyksWjB0KCk7bGV0IGU9Q28oKTtlLmZpcnN0Q3JlYXRlUGFzcyYmKFJUKGUsbiksVTgobikmJmUucXVlcmllcy5lbGVtZW50RW5kKG4pKSx0LmNsYXNzZXNXaXRob3V0SG9zdCE9bnVsbCYmZkN0KHQpJiZwOChlLHQsdmUoKSx0LmNsYXNzZXNXaXRob3V0SG9zdCwhMCksdC5zdHlsZXNXaXRob3V0SG9zdCE9bnVsbCYmcEN0KHQpJiZwOChlLHQsdmUoKSx0LnN0eWxlc1dpdGhvdXRIb3N0LCExKX1mdW5jdGlvbiBEKG4sdCxlLG8pe3Uobix0LGUsbyksaCgpfWZ1bmN0aW9uIGtQdChuLHQsZSxvKXtpZihuLnNjaGVtYXM9PT1udWxsKXJldHVybjtsZXQgYT1lLnZhbHVlO2lmKCFvJiZhIT09bnVsbCYmKHR5cGVvZiBIVE1MVW5rbm93bkVsZW1lbnQhPSJ1bmRlZmluZWQiJiZIVE1MVW5rbm93bkVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MVW5rbm93bkVsZW1lbnR8fHR5cGVvZiBjdXN0b21FbGVtZW50cyE9InVuZGVmaW5lZCImJmEuaW5kZXhPZigiLSIpPi0xJiYhY3VzdG9tRWxlbWVudHMuZ2V0KGEpKSYmIWtCKG4sYSkpe2xldCBzPWAnJHthfScgaXMgbm90IGEga25vd24gZWxlbWVudDoKYDtzKz1gMS4gSWYgJyR7YX0nIGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50LCB0aGVuIHZlcmlmeSB0aGF0IGl0IGlzIHBhcnQgb2YgdGhpcyBtb2R1bGUuCmAsYSYmYS5pbmRleE9mKCItIik+LTE/cys9YDIuIElmICcke2F9JyBpcyBhIFdlYiBDb21wb25lbnQgdGhlbiBhZGQgJ0NVU1RPTV9FTEVNRU5UU19TQ0hFTUEnIHRvIHRoZSAnQE5nTW9kdWxlLnNjaGVtYXMnIG9mIHRoaXMgY29tcG9uZW50IHRvIHN1cHByZXNzIHRoaXMgbWVzc2FnZS5gOnMrPSIyLiBUbyBhbGxvdyBhbnkgZWxlbWVudCBhZGQgJ05PX0VSUk9SU19TQ0hFTUEnIHRvIHRoZSAnQE5nTW9kdWxlLnNjaGVtYXMnIG9mIHRoaXMgY29tcG9uZW50LiIsY29uc29sZS5lcnJvcih6OCgiMzA0IixzKSl9fWZ1bmN0aW9uIE5QdChuLHQsZSxvLGkpe25nRGV2TW9kZSYmbmdEZXZNb2RlLmZpcnN0Q3JlYXRlUGFzcysrO2xldCBhPXQuY29uc3RzLHI9YnkoYSxvKSxzPUZ3KHQsbiw4LCJuZy1jb250YWluZXIiLHIpO3IhPT1udWxsJiZhVChzLHIsITApO2xldCBsPWJ5KGEsaSk7cmV0dXJuIE5CKHQsZSxzLGwpLHQucXVlcmllcyE9PW51bGwmJnQucXVlcmllcy5lbGVtZW50U3RhcnQodCxzKSxzfWZ1bmN0aW9uIEVuKG4sdCxlKXtsZXQgbz12ZSgpLGk9Q28oKSxhPW4rZ2k7bmdEZXZNb2RlJiZBcihvLGEpLG5nRGV2TW9kZSYmaW8oTGkoKSxpLmJpbmRpbmdTdGFydEluZGV4LCJlbGVtZW50IGNvbnRhaW5lcnMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpO2xldCByPWkuZmlyc3RDcmVhdGVQYXNzP05QdChhLGksbyx0LGUpOmkuZGF0YVthXTt2YihyLCEwKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUNvbW1lbnQrKztsZXQgcz1vW2FdPW9bUG9dLmNyZWF0ZUNvbW1lbnQobmdEZXZNb2RlPyJuZy1jb250YWluZXIiOiIiKTtBVChpLG8scyxyKSxqYyhzLG8pLHdUKHIpJiYoU0IoaSxvLHIpLGEkKGkscixvKSksZSE9bnVsbCYmUkIobyxyKX1mdW5jdGlvbiBrbigpe2xldCBuPVRzKCksdD1DbygpO0o4KCk/JDgoKToobmdEZXZNb2RlJiZFSyhuKSxuPW4ucGFyZW50LHZiKG4sITEpKSxuZ0Rldk1vZGUmJkdjKG4sOCksdC5maXJzdENyZWF0ZVBhc3MmJihSVCh0LG4pLFU4KG4pJiZ0LnF1ZXJpZXMuZWxlbWVudEVuZChuKSl9ZnVuY3Rpb24gTW8obix0LGUpe0VuKG4sdCxlKSxrbigpfWZ1bmN0aW9uICR0KCl7cmV0dXJuIHZlKCl9ZnVuY3Rpb24gWHcobil7cmV0dXJuISFuJiZ0eXBlb2Ygbi50aGVuPT0iZnVuY3Rpb24ifWZ1bmN0aW9uIExCKG4pe3JldHVybiEhbiYmdHlwZW9mIG4uc3Vic2NyaWJlPT0iZnVuY3Rpb24ifXZhciBMVD1MQjtmdW5jdGlvbiBBKG4sdCxlLG8pe2xldCBpPXZlKCksYT1DbygpLHI9VHMoKTtyZXR1cm4gaiQoYSxpLGlbUG9dLHIsbix0LCEhZSxvKSxBfWZ1bmN0aW9uIFF3KG4sdCl7bGV0IGU9VHMoKSxvPXZlKCksaT1DbygpLGE9dEIoaS5kYXRhKSxyPUMkKGEsZSxvKTtyZXR1cm4gaiQoaSxvLHIsZSxuLHQsITEpLFF3fWZ1bmN0aW9uIFRQdChuLHQsZSxvKXtsZXQgaT1uLmNsZWFudXA7aWYoaSE9bnVsbClmb3IobGV0IGE9MDthPGkubGVuZ3RoLTE7YSs9Mil7bGV0IHI9aVthXTtpZihyPT09ZSYmaVthKzFdPT09byl7bGV0IHM9dFtjdl0sbD1pW2ErMl07cmV0dXJuIHMubGVuZ3RoPmw/c1tsXTpudWxsfXR5cGVvZiByPT0ic3RyaW5nIiYmKGErPTIpfXJldHVybiBudWxsfWZ1bmN0aW9uIGokKG4sdCxlLG8saSxhLHIscyl7bGV0IGw9d1QobyksbT1uLmZpcnN0Q3JlYXRlUGFzcyYmcjgobiksZj10W1RyXSxwPV8kKHQpO25nRGV2TW9kZSYmR2MobywxNSk7bGV0IGc9ITA7aWYoby50eXBlJjN8fHMpe2xldCB5PXlnKG8sdCksTz1zP3MoeSk6eSxiPXAubGVuZ3RoLFI9cz9FPT5zKFpzKEVbby5pbmRleF0pKTpvLmluZGV4O2lmKElhKGUpKXtsZXQgRT1udWxsO2lmKCFzJiZsJiYoRT1UUHQobix0LGksby5pbmRleCkpLEUhPT1udWxsKXtsZXQgaj1FLl9fbmdMYXN0TGlzdGVuZXJGbl9ffHxFO2ouX19uZ05leHRMaXN0ZW5lckZuX189YSxFLl9fbmdMYXN0TGlzdGVuZXJGbl9fPWEsZz0hMX1lbHNle2E9bUwobyx0LGYsYSwhMSk7bGV0IGo9ZS5saXN0ZW4oTyxpLGEpO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQWRkRXZlbnRMaXN0ZW5lcisrLHAucHVzaChhLGopLG0mJm0ucHVzaChpLFIsYixiKzEpfX1lbHNlIGE9bUwobyx0LGYsYSwhMCksTy5hZGRFdmVudExpc3RlbmVyKGksYSxyKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZEV2ZW50TGlzdGVuZXIrKyxwLnB1c2goYSksbSYmbS5wdXNoKGksUixiLHIpfWVsc2UgYT1tTChvLHQsZixhLCExKTtsZXQgXz1vLm91dHB1dHMsTTtpZihnJiZfIT09bnVsbCYmKE09X1tpXSkpe2xldCB5PU0ubGVuZ3RoO2lmKHkpZm9yKGxldCBPPTA7Tzx5O08rPTIpe2xldCBiPU1bT107bmdEZXZNb2RlJiZBcih0LGIpO2xldCBSPU1bTysxXSxFPXRbYl0saj1FW1JdO2lmKG5nRGV2TW9kZSYmIUxUKGopKXRocm93IG5ldyBFcnJvcihgQE91dHB1dCAke1J9IG5vdCBpbml0aWFsaXplZCBpbiAnJHtFLmNvbnN0cnVjdG9yLm5hbWV9Jy5gKTtsZXQgcnQ9ai5zdWJzY3JpYmUoYSksSj1wLmxlbmd0aDtwLnB1c2goYSxydCksbSYmbS5wdXNoKGksby5pbmRleCxKLC0oSisxKSl9fX1mdW5jdGlvbiBXUShuLHQsZSxvKXt0cnl7cmV0dXJuIGFfKDYsdCxlKSxlKG8pIT09ITF9Y2F0Y2goaSl7cmV0dXJuIE0kKG4saSksITF9ZmluYWxseXthXyg3LHQsZSl9fWZ1bmN0aW9uIG1MKG4sdCxlLG8saSl7cmV0dXJuIGZ1bmN0aW9uIGEocil7aWYocj09PUZ1bmN0aW9uKXJldHVybiBvO2xldCBzPW4uZmxhZ3MmMj9jXyhuLmluZGV4LHQpOnQ7KHRbUW9dJjMyKT09PTAmJkFCKHMpO2xldCBsPVdRKHQsZSxvLHIpLGM9YS5fX25nTmV4dExpc3RlbmVyRm5fXztmb3IoO2M7KWw9V1EodCxlLGMscikmJmwsYz1jLl9fbmdOZXh0TGlzdGVuZXJGbl9fO3JldHVybiBpJiZsPT09ITEmJihyLnByZXZlbnREZWZhdWx0KCksci5yZXR1cm5WYWx1ZT0hMSksbH19ZnVuY3Rpb24gUyhuPTEpe3JldHVybiBuQ3Qobil9ZnVuY3Rpb24gQVB0KG4sdCl7bGV0IGU9bnVsbCxvPXVidChuKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7bGV0IGE9dFtpXTtpZihhPT09IioiKXtlPWk7Y29udGludWV9aWYobz09PW51bGw/WkoobixhLCEwKTpDYnQobyxhKSlyZXR1cm4gaX1yZXR1cm4gZX1mdW5jdGlvbiB5byhuKXtsZXQgdD12ZSgpW2JnXVtZY107aWYoIXQucHJvamVjdGlvbil7bGV0IGU9bj9uLmxlbmd0aDoxLG89dC5wcm9qZWN0aW9uPW9SKGUsbnVsbCksaT1vLnNsaWNlKCksYT10LmNoaWxkO2Zvcig7YSE9PW51bGw7KXtsZXQgcj1uP0FQdChhLG4pOjA7ciE9PW51bGwmJihpW3JdP2lbcl0ucHJvamVjdGlvbk5leHQ9YTpvW3JdPWEsaVtyXT1hKSxhPWEubmV4dH19fWZ1bmN0aW9uIFluKG4sdD0wLGUpe2xldCBvPXZlKCksaT1DbygpLGE9RncoaSxnaStuLDE2LG51bGwsZXx8bnVsbCk7YS5wcm9qZWN0aW9uPT09bnVsbCYmKGEucHJvamVjdGlvbj10KSwkOCgpLChhLmZsYWdzJjY0KSE9PTY0JiZsYnQoaSxvLGEpfWZ1bmN0aW9uIFdpKG4sdCxlKXtyZXR1cm4gRlIobiwiIix0LCIiLGUpLFdpfWZ1bmN0aW9uIEZSKG4sdCxlLG8saSl7bGV0IGE9dmUoKSxyPVZ3KGEsdCxlLG8pO2lmKHIhPT0kbil7bGV0IHM9Q28oKSxsPURyKCk7dmcocyxsLGEsbixyLGFbUG9dLGksITEpLG5nRGV2TW9kZSYmSXIocy5kYXRhLGwsbixMaSgpLTEsdCxvKX1yZXR1cm4gRlJ9ZnVuY3Rpb24gQlQobix0LGUsbyxpLGEscil7bGV0IHM9dmUoKSxsPWp3KHMsdCxlLG8saSxhKTtpZihsIT09JG4pe2xldCBjPUNvKCksbT1EcigpO3ZnKGMsbSxzLG4sbCxzW1BvXSxyLCExKSxuZ0Rldk1vZGUmJklyKGMuZGF0YSxtLG4sTGkoKS0yLHQsbyxhKX1yZXR1cm4gQlR9ZnVuY3Rpb24gVSQobix0LGUsbyxpLGEscixzLGwpe2xldCBjPXZlKCksbT1VdyhjLHQsZSxvLGksYSxyLHMpO2lmKG0hPT0kbil7bGV0IGY9Q28oKSxwPURyKCk7dmcoZixwLGMsbixtLGNbUG9dLGwsITEpLG5nRGV2TW9kZSYmSXIoZi5kYXRhLHAsbixMaSgpLTMsdCxvLGEscyl9cmV0dXJuIFUkfWZ1bmN0aW9uIFkkKG4sdCxlLG8saSxhLHIscyxsLGMsbSl7bGV0IGY9dmUoKSxwPVl3KGYsdCxlLG8saSxhLHIscyxsLGMpO2lmKHAhPT0kbil7bGV0IGc9Q28oKSxfPURyKCk7dmcoZyxfLGYsbixwLGZbUG9dLG0sITEpLG5nRGV2TW9kZSYmSXIoZy5kYXRhLF8sbixMaSgpLTQsdCxvLGEscyxjKX1yZXR1cm4gWSR9ZnVuY3Rpb24gRyQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCl7bGV0IGc9dmUoKSxfPUd3KGcsdCxlLG8saSxhLHIscyxsLGMsbSxmKTtpZihfIT09JG4pe2xldCBNPUNvKCkseT1EcigpO3ZnKE0seSxnLG4sXyxnW1BvXSxwLCExKSxuZ0Rldk1vZGUmJklyKE0uZGF0YSx5LG4sTGkoKS01LHQsbyxhLHMsYyxmKX1yZXR1cm4gRyR9ZnVuY3Rpb24gVyQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8pe2xldCBNPXZlKCkseT1XdyhNLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcpO2lmKHkhPT0kbil7bGV0IE89Q28oKSxiPURyKCk7dmcoTyxiLE0sbix5LE1bUG9dLF8sITEpLG5nRGV2TW9kZSYmSXIoTy5kYXRhLGIsbixMaSgpLTYsdCxvLGEscyxjLGYsZyl9cmV0dXJuIFckfWZ1bmN0aW9uIHEkKG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSl7bGV0IE89dmUoKSxiPXF3KE8sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0pO2lmKGIhPT0kbil7bGV0IFI9Q28oKSxFPURyKCk7dmcoUixFLE8sbixiLE9bUG9dLHksITEpLG5nRGV2TW9kZSYmSXIoUi5kYXRhLEUsbixMaSgpLTcsdCxvLGEscyxjLGYsZyxNKX1yZXR1cm4gcSR9ZnVuY3Rpb24gWiQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE8sYil7bGV0IFI9dmUoKSxFPVp3KFIsdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSxPKTtpZihFIT09JG4pe2xldCBqPUNvKCkscnQ9RHIoKTt2ZyhqLHJ0LFIsbixFLFJbUG9dLGIsITEpLG5nRGV2TW9kZSYmSXIoai5kYXRhLHJ0LG4sTGkoKS04LHQsbyxhLHMsYyxmLGcsTSxPKX1yZXR1cm4gWiR9ZnVuY3Rpb24gWCQobix0LGUpe2xldCBvPXZlKCksaT1CdyhvLHQpO2lmKGkhPT0kbil7bGV0IGE9Q28oKSxyPURyKCk7aWYodmcoYSxyLG8sbixpLG9bUG9dLGUsITEpLG5nRGV2TW9kZSl7bGV0IHM9W3RbMF1dO2ZvcihsZXQgbD0yO2w8dC5sZW5ndGg7bCs9MilzLnB1c2godFtsXSk7SXIoYS5kYXRhLHIsbixMaSgpLXMubGVuZ3RoKzEsLi4ucyl9fXJldHVybiBYJH1mdW5jdGlvbiBEUHQobix0LGUsbyxpLGEpe25nRGV2TW9kZSYmcTgoQ28oKSk7bGV0IHI9YT90LmNsYXNzQmluZGluZ3M6dC5zdHlsZUJpbmRpbmdzLHM9YmIociksbD1XTyhyKTtuW29dPWU7bGV0IGM9ITEsbTtpZihBcnJheS5pc0FycmF5KGUpKXtsZXQgZj1lO209ZlsxXSwobT09PW51bGx8fEVSKGYsbSk+MCkmJihjPSEwKX1lbHNlIG09ZTtpZihpKWlmKGwhPT0wKXtsZXQgcD1iYihuW3MrMV0pO25bbysxXT16TihwLHMpLHAhPT0wJiYobltwKzFdPW9MKG5bcCsxXSxvKSksbltzKzFdPVBidChuW3MrMV0sbyl9ZWxzZSBuW28rMV09ek4ocywwKSxzIT09MCYmKG5bcysxXT1vTChuW3MrMV0sbykpLHM9bztlbHNlIG5bbysxXT16TihsLDApLG5nRGV2TW9kZSYmaW8ocyE9PTAmJmw9PT0wLCExLCJBZGRpbmcgdGVtcGxhdGUgYmluZGluZ3MgYWZ0ZXIgaG9zdEJpbmRpbmdzIGlzIG5vdCBhbGxvd2VkLiIpLHM9PT0wP3M9bzpuW2wrMV09b0wobltsKzFdLG8pLGw9bztjJiYobltvKzFdPUpMKG5bbysxXSkpLHFRKG4sbSxvLCEwLGEpLHFRKG4sbSxvLCExLGEpLElQdCh0LG0sbixvLGEpLHI9ek4ocyxsKSxhP3QuY2xhc3NCaW5kaW5ncz1yOnQuc3R5bGVCaW5kaW5ncz1yfWZ1bmN0aW9uIElQdChuLHQsZSxvLGkpe2xldCBhPWk/bi5yZXNpZHVhbENsYXNzZXM6bi5yZXNpZHVhbFN0eWxlczthIT1udWxsJiZ0eXBlb2YgdD09InN0cmluZyImJkVSKGEsdCk+PTAmJihlW28rMV09JEwoZVtvKzFdKSl9ZnVuY3Rpb24gcVEobix0LGUsbyxpKXtsZXQgYT1uW2UrMV0scj10PT09bnVsbCxzPW8/YmIoYSk6V08oYSksbD0hMTtmb3IoO3MhPT0wJiYobD09PSExfHxyKTspe25nRGV2TW9kZSYmQXIobixzKTtsZXQgYz1uW3NdLG09bltzKzFdO3pQdChjLHQpJiYobD0hMCxuW3MrMV09bz8kTChtKTpKTChtKSkscz1vP2JiKG0pOldPKG0pfWwmJihuW2UrMV09bz9KTChhKTokTChhKSl9ZnVuY3Rpb24gelB0KG4sdCl7cmV0dXJuIG5nRGV2TW9kZSYmcUMoQXJyYXkuaXNBcnJheSh0KSwhMCwiRXhwZWN0ZWQgdGhhdCAndFN0eWxpbmdLZXknIGhhcyBiZWVuIHVud3JhcHBlZCIpLG49PT1udWxsfHx0PT1udWxsfHwoQXJyYXkuaXNBcnJheShuKT9uWzFdOm4pPT09dD8hMDpBcnJheS5pc0FycmF5KG4pJiZ0eXBlb2YgdD09InN0cmluZyI/RVIobix0KT49MDohMX12YXIgcXM9e3RleHRFbmQ6MCxrZXk6MCxrZXlFbmQ6MCx2YWx1ZTowLHZhbHVlRW5kOjB9O2Z1bmN0aW9uIFEkKG4pe3JldHVybiBuLnN1YnN0cmluZyhxcy5rZXkscXMua2V5RW5kKX1mdW5jdGlvbiBIUHQobil7cmV0dXJuIG4uc3Vic3RyaW5nKHFzLnZhbHVlLHFzLnZhbHVlRW5kKX1mdW5jdGlvbiBGUHQobil7cmV0dXJuICQkKG4pLEskKG4sdncobiwwLHFzLnRleHRFbmQpKX1mdW5jdGlvbiBLJChuLHQpe2xldCBlPXFzLnRleHRFbmQ7cmV0dXJuIGU9PT10Py0xOih0PXFzLmtleUVuZD1CUHQobixxcy5rZXk9dCxlKSx2dyhuLHQsZSkpfWZ1bmN0aW9uIExQdChuKXtyZXR1cm4gJCQobiksSiQobix2dyhuLDAscXMudGV4dEVuZCkpfWZ1bmN0aW9uIEokKG4sdCl7bGV0IGU9cXMudGV4dEVuZCxvPXFzLmtleT12dyhuLHQsZSk7cmV0dXJuIGU9PT1vPy0xOihvPXFzLmtleUVuZD1WUHQobixvLGUpLG89WlEobixvLGUsNTgpLG89cXMudmFsdWU9dncobixvLGUpLG89cXMudmFsdWVFbmQ9alB0KG4sbyxlKSxaUShuLG8sZSw1OSkpfWZ1bmN0aW9uICQkKG4pe3FzLmtleT0wLHFzLmtleUVuZD0wLHFzLnZhbHVlPTAscXMudmFsdWVFbmQ9MCxxcy50ZXh0RW5kPW4ubGVuZ3RofWZ1bmN0aW9uIHZ3KG4sdCxlKXtmb3IoO3Q8ZSYmbi5jaGFyQ29kZUF0KHQpPD0zMjspdCsrO3JldHVybiB0fWZ1bmN0aW9uIEJQdChuLHQsZSl7Zm9yKDt0PGUmJm4uY2hhckNvZGVBdCh0KT4zMjspdCsrO3JldHVybiB0fWZ1bmN0aW9uIFZQdChuLHQsZSl7bGV0IG87Zm9yKDt0PGUmJigobz1uLmNoYXJDb2RlQXQodCkpPT09NDV8fG89PT05NXx8KG8mLTMzKT49NjUmJihvJi0zMyk8PTkwfHxvPj00OCYmbzw9NTcpOyl0Kys7cmV0dXJuIHR9ZnVuY3Rpb24gWlEobix0LGUsbyl7cmV0dXJuIHQ9dncobix0LGUpLHQ8ZSYmKG5nRGV2TW9kZSYmbi5jaGFyQ29kZUF0KHQpIT09byYmdHR0KG4sU3RyaW5nLmZyb21DaGFyQ29kZShvKSx0KSx0KyspLHR9ZnVuY3Rpb24galB0KG4sdCxlKXtsZXQgbz0tMSxpPS0xLGE9LTEscj10LHM9cjtmb3IoO3I8ZTspe2xldCBsPW4uY2hhckNvZGVBdChyKyspO2lmKGw9PT01OSlyZXR1cm4gcztsPT09MzR8fGw9PT0zOT9zPXI9WFEobixsLHIsZSk6dD09PXItNCYmYT09PTg1JiZpPT09ODImJm89PT03NiYmbD09PTQwP3M9cj1YUShuLDQxLHIsZSk6bD4zMiYmKHM9ciksYT1pLGk9byxvPWwmLTMzfXJldHVybiBzfWZ1bmN0aW9uIFhRKG4sdCxlLG8pe2xldCBpPS0xLGE9ZTtmb3IoO2E8bzspe2xldCByPW4uY2hhckNvZGVBdChhKyspO2lmKHI9PXQmJmkhPT05MilyZXR1cm4gYTtyPT05MiYmaT09PTkyP2k9MDppPXJ9dGhyb3cgbmdEZXZNb2RlP3R0dChuLFN0cmluZy5mcm9tQ2hhckNvZGUodCksbyk6bmV3IEVycm9yfWZ1bmN0aW9uIHR0dChuLHQsZSl7dGhyb3cgbmdEZXZNb2RlJiZpbyh0eXBlb2Ygbj09InN0cmluZyIsITAsIlN0cmluZyBleHBlY3RlZCBoZXJlIiksaGEoYE1hbGZvcm1lZCBzdHlsZSBhdCBsb2NhdGlvbiAke2V9IGluIHN0cmluZyAnYCtuLnN1YnN0cmluZygwLGUpKyJbPj4iK24uc3Vic3RyaW5nKGUsZSsxKSsiPDxdIituLnN1YnN0cihlKzEpK2AnLiBFeHBlY3RpbmcgJyR7dH0nLmApfWZ1bmN0aW9uIHFlKG4sdCxlKXtyZXR1cm4gS0Mobix0LGUsITEpLHFlfWZ1bmN0aW9uIG1lKG4sdCl7cmV0dXJuIEtDKG4sdCxudWxsLCEwKSxtZX1mdW5jdGlvbiBwXyhuKXtKQyhvdHQsVVB0LG4sITEpfWZ1bmN0aW9uIFVQdChuLHQpe2ZvcihsZXQgZT1MUHQodCk7ZT49MDtlPUokKHQsZSkpb3R0KG4sUSQodCksSFB0KHQpKX1mdW5jdGlvbiBxZihuKXtKQyh4ZyxrYixuLCEwKX1mdW5jdGlvbiBrYihuLHQpe2ZvcihsZXQgZT1GUHQodCk7ZT49MDtlPUskKHQsZSkpeGcobixRJCh0KSwhMCl9ZnVuY3Rpb24gS0Mobix0LGUsbyl7bGV0IGk9dmUoKSxhPUNvKCkscj1YTygyKTtpZihhLmZpcnN0VXBkYXRlUGFzcyYmbnR0KGEsbixyLG8pLHQhPT0kbiYmV2MoaSxyLHQpKXtsZXQgcz1hLmRhdGFbWW0oKV07aXR0KGEscyxpLGlbUG9dLG4saVtyKzFdPVFQdCh0LGUpLG8scil9fWZ1bmN0aW9uIEpDKG4sdCxlLG8pe2xldCBpPUNvKCksYT1YTygyKTtpLmZpcnN0VXBkYXRlUGFzcyYmbnR0KGksbnVsbCxhLG8pO2xldCByPXZlKCk7aWYoZSE9PSRuJiZXYyhyLGEsZSkpe2xldCBzPWkuZGF0YVtZbSgpXTtpZihhdHQocyxvKSYmIWV0dChpLGEpKXtpZihuZ0Rldk1vZGUpe2xldCBjPWkuZGF0YVthXTtpbyhBcnJheS5pc0FycmF5KGMpP2NbMV06YywhMSwiU3R5bGluZyBsaW5rZWQgbGlzdCBzaGFkb3cgaW5wdXQgc2hvdWxkIGJlIG1hcmtlZCBhcyAnZmFsc2UnIil9bGV0IGw9bz9zLmNsYXNzZXNXaXRob3V0SG9zdDpzLnN0eWxlc1dpdGhvdXRIb3N0O25nRGV2TW9kZSYmbz09PSExJiZsIT09bnVsbCYmaW8obC5lbmRzV2l0aCgiOyIpLCEwLCJFeHBlY3Rpbmcgc3RhdGljIHBvcnRpb24gdG8gZW5kIHdpdGggJzsnIiksbCE9PW51bGwmJihlPXZMKGwsZXx8IiIpKSxwOChpLHMscixlLG8pfWVsc2UgWFB0KGkscyxyLHJbUG9dLHJbYSsxXSxyW2ErMV09WlB0KG4sdCxlKSxvLGEpfX1mdW5jdGlvbiBldHQobix0KXtyZXR1cm4gdD49bi5leHBhbmRvU3RhcnRJbmRleH1mdW5jdGlvbiBudHQobix0LGUsbyl7bmdEZXZNb2RlJiZxOChuKTtsZXQgaT1uLmRhdGE7aWYoaVtlKzFdPT09bnVsbCl7bGV0IGE9aVtZbSgpXTtuZ0Rldk1vZGUmJnVuKGEsIlROb2RlIGV4cGVjdGVkIik7bGV0IHI9ZXR0KG4sZSk7YXR0KGEsbykmJnQ9PT1udWxsJiYhciYmKHQ9ITEpLHQ9WVB0KGksYSx0LG8pLERQdChpLGEsdCxlLHIsbyl9fWZ1bmN0aW9uIFlQdChuLHQsZSxvKXtsZXQgaT10QihuKSxhPW8/dC5yZXNpZHVhbENsYXNzZXM6dC5yZXNpZHVhbFN0eWxlcztpZihpPT09bnVsbCkobz90LmNsYXNzQmluZGluZ3M6dC5zdHlsZUJpbmRpbmdzKT09PTAmJihlPWZMKG51bGwsbix0LGUsbyksZT1oUihlLHQuYXR0cnMsbyksYT1udWxsKTtlbHNle2xldCByPXQuZGlyZWN0aXZlU3R5bGluZ0xhc3Q7aWYocj09PS0xfHxuW3JdIT09aSlpZihlPWZMKGksbix0LGUsbyksYT09PW51bGwpe2xldCBsPUdQdChuLHQsbyk7bCE9PXZvaWQgMCYmQXJyYXkuaXNBcnJheShsKSYmKGw9ZkwobnVsbCxuLHQsbFsxXSxvKSxsPWhSKGwsdC5hdHRycyxvKSxXUHQobix0LG8sbCkpfWVsc2UgYT1xUHQobix0LG8pfXJldHVybiBhIT09dm9pZCAwJiYobz90LnJlc2lkdWFsQ2xhc3Nlcz1hOnQucmVzaWR1YWxTdHlsZXM9YSksZX1mdW5jdGlvbiBHUHQobix0LGUpe2xldCBvPWU/dC5jbGFzc0JpbmRpbmdzOnQuc3R5bGVCaW5kaW5ncztpZihXTyhvKSE9PTApcmV0dXJuIG5bYmIobyldfWZ1bmN0aW9uIFdQdChuLHQsZSxvKXtsZXQgaT1lP3QuY2xhc3NCaW5kaW5nczp0LnN0eWxlQmluZGluZ3M7bmdEZXZNb2RlJiZxQyhXTyhpKSwwLCJFeHBlY3RpbmcgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgdGVtcGxhdGUgc3R5bGluZyBiaW5kaW5nLiIpLG5bYmIoaSldPW99ZnVuY3Rpb24gcVB0KG4sdCxlKXtsZXQgbyxpPXQuZGlyZWN0aXZlRW5kO25nRGV2TW9kZSYmcUModC5kaXJlY3RpdmVTdHlsaW5nTGFzdCwtMSwiQnkgdGhlIHRpbWUgdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBhdCBsZWFzdCBvbmUgaG9zdEJpbmRpbmdzLW5vZGUgc3R5bGluZyBpbnN0cnVjdGlvbiBtdXN0IGhhdmUgZXhlY3V0ZWQuIik7Zm9yKGxldCBhPTErdC5kaXJlY3RpdmVTdHlsaW5nTGFzdDthPGk7YSsrKXtsZXQgcj1uW2FdLmhvc3RBdHRycztvPWhSKG8scixlKX1yZXR1cm4gaFIobyx0LmF0dHJzLGUpfWZ1bmN0aW9uIGZMKG4sdCxlLG8saSl7bGV0IGE9bnVsbCxyPWUuZGlyZWN0aXZlRW5kLHM9ZS5kaXJlY3RpdmVTdHlsaW5nTGFzdDtmb3Iocz09PS0xP3M9ZS5kaXJlY3RpdmVTdGFydDpzKys7czxyJiYoYT10W3NdLG5nRGV2TW9kZSYmdW4oYSwiZXhwZWN0ZWQgdG8gYmUgZGVmaW5lZCIpLG89aFIobyxhLmhvc3RBdHRycyxpKSxhIT09bik7KXMrKztyZXR1cm4gbiE9PW51bGwmJihlLmRpcmVjdGl2ZVN0eWxpbmdMYXN0PXMpLG99ZnVuY3Rpb24gaFIobix0LGUpe2xldCBvPWU/MToyLGk9LTE7aWYodCE9PW51bGwpZm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspe2xldCByPXRbYV07dHlwZW9mIHI9PSJudW1iZXIiP2k9cjppPT09byYmKEFycmF5LmlzQXJyYXkobil8fChuPW49PT12b2lkIDA/W106WyIiLG5dKSx4ZyhuLHIsZT8hMDp0WysrYV0pKX1yZXR1cm4gbj09PXZvaWQgMD9udWxsOm59ZnVuY3Rpb24gWlB0KG4sdCxlKXtpZihlPT1udWxsfHxlPT09IiIpcmV0dXJuIHVhO2xldCBvPVtdLGk9R2YoZSk7aWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IGE9MDthPGkubGVuZ3RoO2ErKyluKG8saVthXSwhMCk7ZWxzZSBpZih0eXBlb2YgaT09Im9iamVjdCIpZm9yKGxldCBhIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShhKSYmbihvLGEsaVthXSk7ZWxzZSB0eXBlb2YgaT09InN0cmluZyI/dChvLGkpOm5nRGV2TW9kZSYmaGEoIlVuc3VwcG9ydGVkIHN0eWxpbmcgdHlwZSAiK3R5cGVvZiBpKyI6ICIraSk7cmV0dXJuIG99ZnVuY3Rpb24gb3R0KG4sdCxlKXt4ZyhuLHQsR2YoZSkpfWZ1bmN0aW9uIFhQdChuLHQsZSxvLGksYSxyLHMpe2k9PT0kbiYmKGk9dWEpO2xldCBsPTAsYz0wLG09MDxpLmxlbmd0aD9pWzBdOm51bGwsZj0wPGEubGVuZ3RoP2FbMF06bnVsbDtmb3IoO20hPT1udWxsfHxmIT09bnVsbDspe25nRGV2TW9kZSYmaHkobCw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpLG5nRGV2TW9kZSYmaHkoYyw5OTksIkFyZSB3ZSBzdHVjayBpbiBpbmZpbml0ZSBsb29wPyIpO2xldCBwPWw8aS5sZW5ndGg/aVtsKzFdOnZvaWQgMCxnPWM8YS5sZW5ndGg/YVtjKzFdOnZvaWQgMCxfPW51bGwsTTttPT09Zj8obCs9MixjKz0yLHAhPT1nJiYoXz1mLE09ZykpOmY9PT1udWxsfHxtIT09bnVsbCYmbTxmPyhsKz0yLF89bSk6KG5nRGV2TW9kZSYmdW4oZiwiRXhwZWN0aW5nIHRvIGhhdmUgYSB2YWxpZCBrZXkiKSxjKz0yLF89ZixNPWcpLF8hPT1udWxsJiZpdHQobix0LGUsbyxfLE0scixzKSxtPWw8aS5sZW5ndGg/aVtsXTpudWxsLGY9YzxhLmxlbmd0aD9hW2NdOm51bGx9fWZ1bmN0aW9uIGl0dChuLHQsZSxvLGksYSxyLHMpe2lmKCEodC50eXBlJjMpKXJldHVybjtsZXQgbD1uLmRhdGEsYz1sW3MrMV0sbT1LSihjKT9RUShsLHQsZSxpLFdPKGMpLHIpOnZvaWQgMDtpZighbFQobSkpe2xUKGEpfHxRSihjKSYmKGE9UVEobCxudWxsLGUsaSxzLHIpKTtsZXQgZj1TVChZbSgpLGUpO21idChvLHIsZixpLGEpfX1mdW5jdGlvbiBRUShuLHQsZSxvLGksYSl7bGV0IHI9dD09PW51bGwscztmb3IoO2k+MDspe2xldCBsPW5baV0sYz1BcnJheS5pc0FycmF5KGwpLG09Yz9sWzFdOmwsZj1tPT09bnVsbCxwPWVbaSsxXTtwPT09JG4mJihwPWY/dWE6dm9pZCAwKTtsZXQgZz1mP3RMKHAsbyk6bT09PW8/cDp2b2lkIDA7aWYoYyYmIWxUKGcpJiYoZz10TChsLG8pKSxsVChnKSYmKHM9ZyxyKSlyZXR1cm4gcztsZXQgXz1uW2krMV07aT1yP2JiKF8pOldPKF8pfWlmKHQhPT1udWxsKXtsZXQgbD1hP3QucmVzaWR1YWxDbGFzc2VzOnQucmVzaWR1YWxTdHlsZXM7bCE9bnVsbCYmKHM9dEwobCxvKSl9cmV0dXJuIHN9ZnVuY3Rpb24gbFQobil7cmV0dXJuIG4hPT12b2lkIDB9ZnVuY3Rpb24gUVB0KG4sdCl7cmV0dXJuIG49PW51bGx8fCh0eXBlb2YgdD09InN0cmluZyI/bj1uK3Q6dHlwZW9mIG49PSJvYmplY3QiJiYobj1PbyhHZihuKSkpKSxufWZ1bmN0aW9uIGF0dChuLHQpe3JldHVybihuLmZsYWdzJih0PzE2OjMyKSkhPT0wfWZ1bmN0aW9uIFQobix0PSIiKXtsZXQgZT12ZSgpLG89Q28oKSxpPW4rZ2k7bmdEZXZNb2RlJiZpbyhMaSgpLG8uYmluZGluZ1N0YXJ0SW5kZXgsInRleHQgbm9kZXMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpLG5nRGV2TW9kZSYmQXIoZSxpKTtsZXQgYT1vLmZpcnN0Q3JlYXRlUGFzcz9GdyhvLGksMSx0LG51bGwpOm8uZGF0YVtpXSxyPWVbaV09T0IoZVtQb10sdCk7QVQobyxlLHIsYSksdmIoYSwhMSl9ZnVuY3Rpb24gSWUobil7cmV0dXJuIGxlKCIiLG4sIiIpLEllfWZ1bmN0aW9uIGxlKG4sdCxlKXtsZXQgbz12ZSgpLGk9VncobyxuLHQsZSk7cmV0dXJuIGkhPT0kbiYmS08obyxZbSgpLGkpLGxlfWZ1bmN0aW9uIHZ5KG4sdCxlLG8saSl7bGV0IGE9dmUoKSxyPWp3KGEsbix0LGUsbyxpKTtyZXR1cm4gciE9PSRuJiZLTyhhLFltKCksciksdnl9ZnVuY3Rpb24gVlQobix0LGUsbyxpLGEscil7bGV0IHM9dmUoKSxsPVV3KHMsbix0LGUsbyxpLGEscik7cmV0dXJuIGwhPT0kbiYmS08ocyxZbSgpLGwpLFZUfWZ1bmN0aW9uIHJ0dChuLHQsZSxvLGksYSxyLHMsbCl7bGV0IGM9dmUoKSxtPVl3KGMsbix0LGUsbyxpLGEscixzLGwpO3JldHVybiBtIT09JG4mJktPKGMsWW0oKSxtKSxydHR9ZnVuY3Rpb24gc3R0KG4sdCxlLG8saSxhLHIscyxsLGMsbSl7bGV0IGY9dmUoKSxwPUd3KGYsbix0LGUsbyxpLGEscixzLGwsYyxtKTtyZXR1cm4gcCE9PSRuJiZLTyhmLFltKCkscCksc3R0fWZ1bmN0aW9uIGx0dChuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwKXtsZXQgZz12ZSgpLF89V3coZyxuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwKTtyZXR1cm4gXyE9PSRuJiZLTyhnLFltKCksXyksbHR0fWZ1bmN0aW9uIGN0dChuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyl7bGV0IE09dmUoKSx5PXF3KE0sbix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8pO3JldHVybiB5IT09JG4mJktPKE0sWW0oKSx5KSxjdHR9ZnVuY3Rpb24gbXR0KG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSl7bGV0IE89dmUoKSxiPVp3KE8sbix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5KTtyZXR1cm4gYiE9PSRuJiZLTyhPLFltKCksYiksbXR0fWZ1bmN0aW9uIGZ0dChuKXtsZXQgdD12ZSgpLGU9QncodCxuKTtyZXR1cm4gZSE9PSRuJiZLTyh0LFltKCksZSksZnR0fWZ1bmN0aW9uIExSKG4sdCxlKXtsZXQgbz12ZSgpLGk9VncobyxuLHQsZSk7SkMoeGcsa2IsaSwhMCl9ZnVuY3Rpb24gS1B0KG4sdCxlLG8saSl7bGV0IGE9dmUoKSxyPWp3KGEsbix0LGUsbyxpKTtKQyh4ZyxrYixyLCEwKX1mdW5jdGlvbiBKUHQobix0LGUsbyxpLGEscil7bGV0IHM9dmUoKSxsPVV3KHMsbix0LGUsbyxpLGEscik7SkMoeGcsa2IsbCwhMCl9ZnVuY3Rpb24gJFB0KG4sdCxlLG8saSxhLHIscyxsKXtsZXQgYz12ZSgpLG09WXcoYyxuLHQsZSxvLGksYSxyLHMsbCk7SkMoeGcsa2IsbSwhMCl9ZnVuY3Rpb24gdHl0KG4sdCxlLG8saSxhLHIscyxsLGMsbSl7bGV0IGY9dmUoKSxwPUd3KGYsbix0LGUsbyxpLGEscixzLGwsYyxtKTtKQyh4ZyxrYixwLCEwKX1mdW5jdGlvbiBleXQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCl7bGV0IGc9dmUoKSxfPVd3KGcsbix0LGUsbyxpLGEscixzLGwsYyxtLGYscCk7SkMoeGcsa2IsXywhMCl9ZnVuY3Rpb24gbnl0KG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfKXtsZXQgTT12ZSgpLHk9cXcoTSxuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyk7SkMoeGcsa2IseSwhMCl9ZnVuY3Rpb24gb3l0KG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSl7bGV0IE89dmUoKSxiPVp3KE8sbix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5KTtKQyh4ZyxrYixiLCEwKX1mdW5jdGlvbiBpeXQobil7bGV0IHQ9dmUoKSxlPUJ3KHQsbik7SkMoeGcsa2IsZSwhMCl9ZnVuY3Rpb24gYXl0KG4sdCxlKXtsZXQgbz12ZSgpLGk9VncobyxuLHQsZSk7cF8oaSl9ZnVuY3Rpb24gcnl0KG4sdCxlLG8saSl7bGV0IGE9dmUoKSxyPWp3KGEsbix0LGUsbyxpKTtwXyhyKX1mdW5jdGlvbiBzeXQobix0LGUsbyxpLGEscil7bGV0IHM9dmUoKSxsPVV3KHMsbix0LGUsbyxpLGEscik7cF8obCl9ZnVuY3Rpb24gbHl0KG4sdCxlLG8saSxhLHIscyxsKXtsZXQgYz12ZSgpLG09WXcoYyxuLHQsZSxvLGksYSxyLHMsbCk7cF8obSl9ZnVuY3Rpb24gY3l0KG4sdCxlLG8saSxhLHIscyxsLGMsbSl7bGV0IGY9dmUoKSxwPUd3KGYsbix0LGUsbyxpLGEscixzLGwsYyxtKTtwXyhwKX1mdW5jdGlvbiBteXQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCl7bGV0IGc9dmUoKSxfPVd3KGcsbix0LGUsbyxpLGEscixzLGwsYyxtLGYscCk7cF8oXyl9ZnVuY3Rpb24gZnl0KG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfKXtsZXQgTT12ZSgpLHk9cXcoTSxuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyk7cF8oeSl9ZnVuY3Rpb24gcHl0KG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSl7bGV0IE89dmUoKSxiPVp3KE8sbix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5KTtwXyhiKX1mdW5jdGlvbiBkeXQobil7bGV0IHQ9dmUoKSxlPUJ3KHQsbik7cF8oZSl9ZnVuY3Rpb24gcHR0KG4sdCxlLG8saSl7bGV0IGE9dmUoKSxyPVZ3KGEsdCxlLG8pO3JldHVybiBLQyhuLHIsaSwhMSkscHR0fWZ1bmN0aW9uIGR0dChuLHQsZSxvLGksYSxyKXtsZXQgcz12ZSgpLGw9ancocyx0LGUsbyxpLGEpO3JldHVybiBLQyhuLGwsciwhMSksZHR0fWZ1bmN0aW9uIGd0dChuLHQsZSxvLGksYSxyLHMsbCl7bGV0IGM9dmUoKSxtPVV3KGMsdCxlLG8saSxhLHIscyk7cmV0dXJuIEtDKG4sbSxsLCExKSxndHR9ZnVuY3Rpb24gdXR0KG4sdCxlLG8saSxhLHIscyxsLGMsbSl7bGV0IGY9dmUoKSxwPVl3KGYsdCxlLG8saSxhLHIscyxsLGMpO3JldHVybiBLQyhuLHAsbSwhMSksdXR0fWZ1bmN0aW9uIGh0dChuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwKXtsZXQgZz12ZSgpLF89R3coZyx0LGUsbyxpLGEscixzLGwsYyxtLGYpO3JldHVybiBLQyhuLF8scCwhMSksaHR0fWZ1bmN0aW9uIF90dChuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyl7bGV0IE09dmUoKSx5PVd3KE0sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyk7cmV0dXJuIEtDKG4seSxfLCExKSxfdHR9ZnVuY3Rpb24gQ3R0KG4sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSl7bGV0IE89dmUoKSxiPXF3KE8sdCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0pO3JldHVybiBLQyhuLGIseSwhMSksQ3R0fWZ1bmN0aW9uIE10dChuLHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyxNLHksTyxiKXtsZXQgUj12ZSgpLEU9WncoUix0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE8pO3JldHVybiBLQyhuLEUsYiwhMSksTXR0fWZ1bmN0aW9uIGJ0dChuLHQsZSl7bGV0IG89dmUoKSxpPUJ3KG8sdCk7cmV0dXJuIEtDKG4saSxlLCExKSxidHR9ZnVuY3Rpb24gdWwobix0LGUpe2xldCBvPXZlKCksaT1EdygpO2lmKFdjKG8saSx0KSl7bGV0IGE9Q28oKSxyPURyKCk7dmcoYSxyLG8sbix0LG9bUG9dLGUsITApLG5nRGV2TW9kZSYmSXIoYS5kYXRhLHIsbixpKX1yZXR1cm4gdWx9ZnVuY3Rpb24gS3cobix0LGUpe2xldCBvPXZlKCksaT1EdygpO2lmKFdjKG8saSx0KSl7bGV0IGE9Q28oKSxyPURyKCkscz10QihhLmRhdGEpLGw9QyQocyxyLG8pO3ZnKGEscixvLG4sdCxsLGUsITApLG5nRGV2TW9kZSYmSXIoYS5kYXRhLHIsbixpKX1yZXR1cm4gS3d9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlPT0idW5kZWZpbmVkIiYmZnVuY3Rpb24oKXtNaS5uZ0kxOG5DbG9zdXJlTW9kZT10eXBlb2YgZ29vZyE9InVuZGVmaW5lZCImJnR5cGVvZiBnb29nLmdldE1zZz09ImZ1bmN0aW9uIn0oKTt2YXIgb3Y9dm9pZCAwO2Z1bmN0aW9uIGd5dChuKXtsZXQgdD1NYXRoLmZsb29yKE1hdGguYWJzKG4pKSxlPW4udG9TdHJpbmcoKS5yZXBsYWNlKC9eW14uXSpcLj8vLCIiKS5sZW5ndGg7cmV0dXJuIHQ9PT0xJiZlPT09MD8xOjV9dmFyIHV5dD1bImVuIixbWyJhIiwicCJdLFsiQU0iLCJQTSJdLG92XSxbWyJBTSIsIlBNIl0sb3Ysb3ZdLFtbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLG92LFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSxvdixbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJdLFsiezF9LCB7MH0iLG92LCJ7MX0gJ2F0JyB7MH0iLG92XSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCJceEQ3IiwiXHUyMDMwIiwiXHUyMjFFIiwiTmFOIiwiOiJdLFsiIywjIzAuIyMjIiwiIywjIzAlIiwiXHhBNCMsIyMwLjAwIiwiI0UwIl0sIlVTRCIsIiQiLCJVUyBEb2xsYXIiLHt9LCJsdHIiLGd5dF07dmFyIHBMPXt9O2Z1bmN0aW9uIFdtKG4pe2xldCB0PWh5dChuKSxlPUtRKHQpO2lmKGUpcmV0dXJuIGU7bGV0IG89dC5zcGxpdCgiLSIpWzBdO2lmKGU9S1EobyksZSlyZXR1cm4gZTtpZihvPT09ImVuIilyZXR1cm4gdXl0O3Rocm93IG5ldyBFcnJvcihgTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgdGhlIGxvY2FsZSAiJHtufSIuYCl9ZnVuY3Rpb24gQkIobil7cmV0dXJuIFdtKG4pW3FhLlBsdXJhbENhc2VdfWZ1bmN0aW9uIEtRKG4pe3JldHVybiBuIGluIHBMfHwocExbbl09TWkubmcmJk1pLm5nLmNvbW1vbiYmTWkubmcuY29tbW9uLmxvY2FsZXMmJk1pLm5nLmNvbW1vbi5sb2NhbGVzW25dKSxwTFtuXX12YXIgcWE7KGZ1bmN0aW9uKG4pe25bbi5Mb2NhbGVJZD0wXT0iTG9jYWxlSWQiLG5bbi5EYXlQZXJpb2RzRm9ybWF0PTFdPSJEYXlQZXJpb2RzRm9ybWF0IixuW24uRGF5UGVyaW9kc1N0YW5kYWxvbmU9Ml09IkRheVBlcmlvZHNTdGFuZGFsb25lIixuW24uRGF5c0Zvcm1hdD0zXT0iRGF5c0Zvcm1hdCIsbltuLkRheXNTdGFuZGFsb25lPTRdPSJEYXlzU3RhbmRhbG9uZSIsbltuLk1vbnRoc0Zvcm1hdD01XT0iTW9udGhzRm9ybWF0IixuW24uTW9udGhzU3RhbmRhbG9uZT02XT0iTW9udGhzU3RhbmRhbG9uZSIsbltuLkVyYXM9N109IkVyYXMiLG5bbi5GaXJzdERheU9mV2Vlaz04XT0iRmlyc3REYXlPZldlZWsiLG5bbi5XZWVrZW5kUmFuZ2U9OV09IldlZWtlbmRSYW5nZSIsbltuLkRhdGVGb3JtYXQ9MTBdPSJEYXRlRm9ybWF0IixuW24uVGltZUZvcm1hdD0xMV09IlRpbWVGb3JtYXQiLG5bbi5EYXRlVGltZUZvcm1hdD0xMl09IkRhdGVUaW1lRm9ybWF0IixuW24uTnVtYmVyU3ltYm9scz0xM109Ik51bWJlclN5bWJvbHMiLG5bbi5OdW1iZXJGb3JtYXRzPTE0XT0iTnVtYmVyRm9ybWF0cyIsbltuLkN1cnJlbmN5Q29kZT0xNV09IkN1cnJlbmN5Q29kZSIsbltuLkN1cnJlbmN5U3ltYm9sPTE2XT0iQ3VycmVuY3lTeW1ib2wiLG5bbi5DdXJyZW5jeU5hbWU9MTddPSJDdXJyZW5jeU5hbWUiLG5bbi5DdXJyZW5jaWVzPTE4XT0iQ3VycmVuY2llcyIsbltuLkRpcmVjdGlvbmFsaXR5PTE5XT0iRGlyZWN0aW9uYWxpdHkiLG5bbi5QbHVyYWxDYXNlPTIwXT0iUGx1cmFsQ2FzZSIsbltuLkV4dHJhRGF0YT0yMV09IkV4dHJhRGF0YSJ9KShxYXx8KHFhPXt9KSk7ZnVuY3Rpb24gaHl0KG4pe3JldHVybiBuLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIil9dmFyIF95dD1bInplcm8iLCJvbmUiLCJ0d28iLCJmZXciLCJtYW55Il07ZnVuY3Rpb24gQ3l0KG4sdCl7bGV0IGU9QkIodCkocGFyc2VJbnQobiwxMCkpLG89X3l0W2VdO3JldHVybiBvIT09dm9pZCAwP286Im90aGVyIn12YXIgY1Q9ImVuLVVTIixNeXQ9IlVTRCI7dmFyIGpUPXttYXJrZXI6ImVsZW1lbnQifSxVVD17bWFya2VyOiJJQ1UifSxWbTsoZnVuY3Rpb24obil7bltuLlNISUZUPTJdPSJTSElGVCIsbltuLkFQUEVORF9FQUdFUkxZPTFdPSJBUFBFTkRfRUFHRVJMWSIsbltuLkNPTU1FTlQ9Ml09IkNPTU1FTlQifSkoVm18fChWbT17fSkpO3ZhciBPdHQ9Y1Q7ZnVuY3Rpb24gVkIobil7dW4obiwiRXhwZWN0ZWQgbG9jYWxlSWQgdG8gYmUgZGVmaW5lZCIpLHR5cGVvZiBuPT0ic3RyaW5nIiYmKE90dD1uLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIikpfWZ1bmN0aW9uIGJ5dCgpe3JldHVybiBPdHR9ZnVuY3Rpb24gUHR0KG4sdCxlKXtsZXQgbz10Lmluc2VydEJlZm9yZUluZGV4LGk9QXJyYXkuaXNBcnJheShvKT9vWzBdOm87cmV0dXJuIGk9PT1udWxsP0ZKKG4sdCxlKToobmdEZXZNb2RlJiZBcihlLGkpLFpzKGVbaV0pKX1mdW5jdGlvbiB5dHQobix0LGUsbyxpKXtsZXQgYT10Lmluc2VydEJlZm9yZUluZGV4O2lmKEFycmF5LmlzQXJyYXkoYSkpe25nRGV2TW9kZSYmQ2Iobyk7bGV0IHI9byxzPW51bGw7aWYodC50eXBlJjN8fChzPXIscj1pKSxyIT09bnVsbCYmKHQuZmxhZ3MmMik9PT0wKWZvcihsZXQgbD0xO2w8YS5sZW5ndGg7bCsrKXtsZXQgYz1lW2FbbF1dO3B2KG4scixjLHMsITEpfX19ZnVuY3Rpb24geHR0KG4sdCl7aWYobmdEZXZNb2RlJiZpbyh0Lmluc2VydEJlZm9yZUluZGV4LG51bGwsIldlIGV4cGVjdCB0aGF0IGluc2VydEJlZm9yZUluZGV4IGlzIG5vdCBzZXQiKSxuLnB1c2godCksbi5sZW5ndGg+MSlmb3IobGV0IGU9bi5sZW5ndGgtMjtlPj0wO2UtLSl7bGV0IG89bltlXTt2dHQobyl8fE95dChvLHQpJiZQeXQobyk9PT1udWxsJiZ5eXQobyx0LmluZGV4KX19ZnVuY3Rpb24gdnR0KG4pe3JldHVybiEobi50eXBlJjY0KX1mdW5jdGlvbiBPeXQobix0KXtyZXR1cm4gdnR0KHQpfHxuLmluZGV4PnQuaW5kZXh9ZnVuY3Rpb24gUHl0KG4pe2xldCB0PW4uaW5zZXJ0QmVmb3JlSW5kZXg7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dFswXTp0fWZ1bmN0aW9uIHl5dChuLHQpe2xldCBlPW4uaW5zZXJ0QmVmb3JlSW5kZXg7QXJyYXkuaXNBcnJheShlKT9lWzBdPXQ6KEJKKFB0dCx5dHQpLG4uaW5zZXJ0QmVmb3JlSW5kZXg9dCl9ZnVuY3Rpb24gclIobix0KXtsZXQgZT1uLmRhdGFbdF07aWYoZT09PW51bGx8fHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gbnVsbDtuZ0Rldk1vZGUmJiEoZS5oYXNPd25Qcm9wZXJ0eSgidFZpZXdzIil8fGUuaGFzT3duUHJvcGVydHkoImN1cnJlbnRDYXNlTFZpZXdJbmRleCIpKSYmaGEoIldlIGV4cGVjdCB0byBnZXQgJ251bGwnfCdUSWN1J3wnVEljdUNvbnRhaW5lcicsIGJ1dCBnb3Q6ICIrZSk7bGV0IG89ZS5oYXNPd25Qcm9wZXJ0eSgiY3VycmVudENhc2VMVmlld0luZGV4Iik/ZTplLnZhbHVlO3JldHVybiBuZ0Rldk1vZGUmJlc4KG8pLG99ZnVuY3Rpb24geHl0KG4sdCxlKXtsZXQgbz1uLmRhdGFbdF07bmdEZXZNb2RlJiZpbyhvPT09bnVsbHx8by5oYXNPd25Qcm9wZXJ0eSgidFZpZXdzIiksITAsIldlIGV4cGVjdCB0byBnZXQgJ251bGwnfCdUSWN1Q29udGFpbmVyJyIpLG89PT1udWxsP24uZGF0YVt0XT1lOihuZ0Rldk1vZGUmJkdjKG8sMzIpLG8udmFsdWU9ZSl9ZnVuY3Rpb24gdnl0KG4sdCl7bmdEZXZNb2RlJiZHOChuKTtsZXQgZT1uLmluc2VydEJlZm9yZUluZGV4O2U9PT1udWxsPyhCSihQdHQseXR0KSxlPW4uaW5zZXJ0QmVmb3JlSW5kZXg9W251bGwsdF0pOihpbyhBcnJheS5pc0FycmF5KGUpLCEwLCJFeHBlY3RpbmcgYXJyYXkgaGVyZSIpLGUucHVzaCh0KSl9ZnVuY3Rpb24gd3l0KG4sdCxlKXtsZXQgbz13QihuLGUsNjQsbnVsbCxudWxsKTtyZXR1cm4geHR0KHQsbyksb31mdW5jdGlvbiBZVChuLHQpe2xldCBlPXRbbi5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdO3JldHVybiBlPT09bnVsbD9lOmU8MD9+ZTplfWZ1bmN0aW9uIHd0dChuKXtyZXR1cm4gbj4+PjE3fWZ1bmN0aW9uIFN0dChuKXtyZXR1cm4obiYxMzEwNzApPj4+MX1mdW5jdGlvbiBKUShuKXtyZXR1cm4gbiYxfWZ1bmN0aW9uIFN5dChuLHQsZSl7cmV0dXJuIG5nRGV2TW9kZSYmWk8odCwwLCJNaXNzaW5nIHBhcmVudCBpbmRleCIpLG5nRGV2TW9kZSYmUncoZSwwLCJNaXNzaW5nIHJlZiBpbmRleCIpLG58dDw8MTd8ZTw8MX12YXIgX1I9MCxzUj0wO2Z1bmN0aW9uIFJ5dChuKXtuJiYoX1I9X1J8MTw8TWF0aC5taW4oc1IsMzEpKSxzUisrfWZ1bmN0aW9uIEV5dChuLHQsZSl7aWYoc1I+MCl7bmdEZXZNb2RlJiZ1bihuLCJ0VmlldyBzaG91bGQgYmUgZGVmaW5lZCIpO2xldCBvPW4uZGF0YVtlXSxpPUFycmF5LmlzQXJyYXkobyk/bzpvLnVwZGF0ZSxhPUxpKCktc1ItMTtFdHQobix0LGksYSxfUil9X1I9MCxzUj0wfWZ1bmN0aW9uIGt5dChuLHQsZSxvKXtsZXQgaT1uW1BvXTtmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKyl7bGV0IHI9dFthKytdLHM9dFthXSxsPShyJlZtLkNPTU1FTlQpPT09Vm0uQ09NTUVOVCxjPShyJlZtLkFQUEVORF9FQUdFUkxZKT09PVZtLkFQUEVORF9FQUdFUkxZLG09cj4+PlZtLlNISUZULGY9blttXTtmPT09bnVsbCYmKGY9blttXT1sP2kuY3JlYXRlQ29tbWVudChzKTpPQihpLHMpKSxjJiZlIT09bnVsbCYmcHYoaSxlLGYsbywhMSl9fWZ1bmN0aW9uIFJ0dChuLHQsZSxvKXtuZ0Rldk1vZGUmJkNiKG8pO2xldCBpPWVbUG9dLGE9bnVsbCxyO2ZvcihsZXQgcz0wO3M8dC5sZW5ndGg7cysrKXtsZXQgbD10W3NdO2lmKHR5cGVvZiBsPT0ic3RyaW5nIil7bGV0IGM9dFsrK3NdO2VbY109PT1udWxsJiYobmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVUZXh0Tm9kZSsrLG5nRGV2TW9kZSYmQXIoZSxjKSxlW2NdPU9CKGksbCkpfWVsc2UgaWYodHlwZW9mIGw9PSJudW1iZXIiKXN3aXRjaChsJjEpe2Nhc2UgMDpsZXQgYz13dHQobCk7YT09PW51bGwmJihhPWMscj1UVChpLG8pKTtsZXQgbSxmO2lmKGM9PT1hPyhtPW8sZj1yKToobT1udWxsLGY9WnMoZVtjXSkpLGYhPT1udWxsKXtuZ0Rldk1vZGUmJkNiKGYpO2xldCBNPVN0dChsKTtuZ0Rldk1vZGUmJlJ3KE0sZ2ksIk1pc3NpbmcgcmVmIik7bGV0IHk9ZVtNXTtuZ0Rldk1vZGUmJkNiKHkpLHB2KGksZix5LG0sITEpO2xldCBPPXJSKG4sTSk7aWYoTyE9PW51bGwmJnR5cGVvZiBPPT0ib2JqZWN0Iil7bmdEZXZNb2RlJiZXOChPKTtsZXQgYj1ZVChPLGUpO2IhPT1udWxsJiZSdHQobixPLmNyZWF0ZVtiXSxlLGVbTy5hbmNob3JJZHhdKX19YnJlYWs7Y2FzZSAxOmxldCBwPWw+Pj4xLGc9dFsrK3NdLF89dFsrK3NdO1RCKGksU1QocCxlKSxudWxsLG51bGwsZyxfLG51bGwpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIG11dGF0ZSBvcGVyYXRpb24gZm9yICIke2x9ImApfWVsc2Ugc3dpdGNoKGwpe2Nhc2UgVVQ6bGV0IGM9dFsrK3NdLG09dFsrK3NdO2lmKGVbbV09PT1udWxsKXtuZ0Rldk1vZGUmJmlvKHR5cGVvZiBjLCJzdHJpbmciLGBFeHBlY3RlZCAiJHtjfSIgdG8gYmUgYSBjb21tZW50IG5vZGUgdmFsdWVgKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckNyZWF0ZUNvbW1lbnQrKyxuZ0Rldk1vZGUmJlFOKGUsbSk7bGV0IGc9ZVttXT1LTXQoaSxjKTtqYyhnLGUpfWJyZWFrO2Nhc2UgalQ6bGV0IGY9dFsrK3NdLHA9dFsrK3NdO2lmKGVbcF09PT1udWxsKXtuZ0Rldk1vZGUmJmlvKHR5cGVvZiBmLCJzdHJpbmciLGBFeHBlY3RlZCAiJHtmfSIgdG8gYmUgYW4gZWxlbWVudCBub2RlIHRhZyBuYW1lYCksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVFbGVtZW50KyssbmdEZXZNb2RlJiZRTihlLHApO2xldCBnPWVbcF09UEIoaSxmLG51bGwpO2pjKGcsZSl9YnJlYWs7ZGVmYXVsdDpuZ0Rldk1vZGUmJmhhKGBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIG11dGF0ZSBvcGVyYXRpb24gZm9yICIke2x9ImApfX19ZnVuY3Rpb24gRXR0KG4sdCxlLG8saSl7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2xldCByPWVbYV0scz1lWysrYV07aWYociZpKXtsZXQgbD0iIjtmb3IobGV0IGM9YSsxO2M8PWErcztjKyspe2xldCBtPWVbY107aWYodHlwZW9mIG09PSJzdHJpbmciKWwrPW07ZWxzZSBpZih0eXBlb2YgbT09Im51bWJlciIpaWYobTwwKWwrPVJvKHRbby1tXSk7ZWxzZXtsZXQgZj1tPj4+Mjtzd2l0Y2gobSYzKXtjYXNlIDE6bGV0IHA9ZVsrK2NdLGc9ZVsrK2NdLF89bi5kYXRhW2ZdO25nRGV2TW9kZSYmdW4oXywiRXhwZXJ0aW5nIFROb2RlIG9yIHN0cmluZyIpLHR5cGVvZiBfPT0ic3RyaW5nIj9UQih0W1BvXSx0W2ZdLG51bGwsXyxwLGwsZyk6dmcobixfLHQscCxsLHRbUG9dLGcsITEpO2JyZWFrO2Nhc2UgMDpsZXQgTT10W2ZdO00hPT1udWxsJiZOSih0W1BvXSxNLGwpO2JyZWFrO2Nhc2UgMjpOeXQobixyUihuLGYpLHQsbCk7YnJlYWs7Y2FzZSAzOiRRKG4sclIobixmKSxvLHQpO2JyZWFrfX19fWVsc2V7bGV0IGw9ZVthKzFdO2lmKGw+MCYmKGwmMyk9PT0zKXtsZXQgYz1sPj4+MixtPXJSKG4sYyk7dFttLmN1cnJlbnRDYXNlTFZpZXdJbmRleF08MCYmJFEobixtLG8sdCl9fWErPXN9fWZ1bmN0aW9uICRRKG4sdCxlLG8pe25nRGV2TW9kZSYmQXIobyx0LmN1cnJlbnRDYXNlTFZpZXdJbmRleCk7bGV0IGk9b1t0LmN1cnJlbnRDYXNlTFZpZXdJbmRleF07aWYoaSE9PW51bGwpe2xldCBhPV9SO2k8MCYmKGk9b1t0LmN1cnJlbnRDYXNlTFZpZXdJbmRleF09fmksYT0tMSksRXR0KG4sbyx0LnVwZGF0ZVtpXSxlLGEpfX1mdW5jdGlvbiBOeXQobix0LGUsbyl7bGV0IGk9VHl0KHQsbyk7aWYoWVQodCxlKSE9PWkmJihrdHQobix0LGUpLGVbdC5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdPWk9PT1udWxsP251bGw6fmksaSE9PW51bGwpKXtsZXQgcj1lW3QuYW5jaG9ySWR4XTtyJiYobmdEZXZNb2RlJiZDYihyKSxSdHQobix0LmNyZWF0ZVtpXSxlLHIpKX19ZnVuY3Rpb24ga3R0KG4sdCxlKXtsZXQgbz1ZVCh0LGUpO2lmKG8hPT1udWxsKXtsZXQgaT10LnJlbW92ZVtvXTtmb3IobGV0IGE9MDthPGkubGVuZ3RoO2ErKyl7bGV0IHI9aVthXTtpZihyPjApe2xldCBzPVNUKHIsZSk7cyE9PW51bGwmJmpKKGVbUG9dLHMpfWVsc2Uga3R0KG4sclIobix+ciksZSl9fX1mdW5jdGlvbiBUeXQobix0KXtsZXQgZT1uLmNhc2VzLmluZGV4T2YodCk7aWYoZT09PS0xKXN3aXRjaChuLnR5cGUpe2Nhc2UgMTp7bGV0IG89Q3l0KHQsYnl0KCkpO2U9bi5jYXNlcy5pbmRleE9mKG8pLGU9PT0tMSYmbyE9PSJvdGhlciImJihlPW4uY2FzZXMuaW5kZXhPZigib3RoZXIiKSk7YnJlYWt9Y2FzZSAwOntlPW4uY2FzZXMuaW5kZXhPZigib3RoZXIiKTticmVha319cmV0dXJuIGU9PT0tMT9udWxsOmV9ZnVuY3Rpb24gQXl0KCl7bGV0IG49W10sdD0tMSxlLG87ZnVuY3Rpb24gaShzLGwpe2ZvcihlPWw7bi5sZW5ndGg7KW4ucG9wKCk7cmV0dXJuIG5nRGV2TW9kZSYmeXkocyxsKSxhKHMudmFsdWUsbCkscn1mdW5jdGlvbiBhKHMsbCl7dD0wO2xldCBjPVlUKHMsbCk7YyE9PW51bGw/KG5nRGV2TW9kZSYmY1IoYywwLHMuY2FzZXMubGVuZ3RoLTEpLG89cy5yZW1vdmVbY10pOm89dWF9ZnVuY3Rpb24gcigpe2lmKHQ8by5sZW5ndGgpe2xldCBzPW9bdCsrXTtpZihuZ0Rldk1vZGUmJldhKHMsIkV4cGVjdGluZyBPcENvZGUgbnVtYmVyIikscz4wKXtsZXQgbD1lW3NdO3JldHVybiBuZ0Rldk1vZGUmJkNiKGwpLGx9ZWxzZXtuLnB1c2godCxvKTtsZXQgbD1+cyxjPWVbUm5dLmRhdGFbbF07cmV0dXJuIG5nRGV2TW9kZSYmVzgoYyksYShjLGUpLHIoKX19ZWxzZSByZXR1cm4gbi5sZW5ndGg9PT0wP251bGw6KG89bi5wb3AoKSx0PW4ucG9wKCkscigpKX1yZXR1cm4gaX1mdW5jdGlvbiBEeXQobil7bGV0IHQ9bnx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSksZT1bXTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvKytdLGE9dFtvXSxyPShpJlZtLkNPTU1FTlQpPT09Vm0uQ09NTUVOVCxzPShpJlZtLkFQUEVORF9FQUdFUkxZKT09PVZtLkFQUEVORF9FQUdFUkxZLGw9aT4+PlZtLlNISUZUO2UucHVzaChgbFZpZXdbJHtsfV0gPSBkb2N1bWVudC4ke3I/ImNyZWF0ZUNvbW1lbnQiOiJjcmVhdGVUZXh0In0oJHtKU09OLnN0cmluZ2lmeShhKX0pO2ApLHMmJmUucHVzaChgcGFyZW50LmFwcGVuZENoaWxkKGxWaWV3WyR7bH1dKTtgKX1yZXR1cm4gZX1mdW5jdGlvbiBHVChuKXtsZXQgdD1uZXcgbVQobnx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSkpLGU9W107ZnVuY3Rpb24gbyhpKXtsZXQgYT1pPj4+Mjtzd2l0Y2goaSYzKXtjYXNlIDA6cmV0dXJuYChsVmlld1ske2F9XSBhcyBUZXh0KS50ZXh0Q29udGVudCA9ICQkJGA7Y2FzZSAxOmxldCBzPXQuY29uc3VtZVN0cmluZygpLGw9dC5jb25zdW1lRnVuY3Rpb24oKSxjPWw/YCgke2x9KSgkJCQpYDoiJCQkIjtyZXR1cm5gKGxWaWV3WyR7YX1dIGFzIEVsZW1lbnQpLnNldEF0dHJpYnV0ZSgnJHtzfScsICR7Y30pYDtjYXNlIDI6cmV0dXJuYGljdVN3aXRjaENhc2UoJHthfSwgJCQkKWA7Y2FzZSAzOnJldHVybmBpY3VVcGRhdGVDYXNlKCR7YX0pYH10aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgT3BDb2RlIil9Zm9yKDt0Lmhhc01vcmUoKTspe2xldCBpPXQuY29uc3VtZU51bWJlcigpLGE9dC5jb25zdW1lTnVtYmVyKCkscj10LmkrYSxzPVtdLGw9IiI7Zm9yKDt0Lmk8cjspe2xldCBjPXQuY29uc3VtZU51bWJlck9yU3RyaW5nKCk7aWYodHlwZW9mIGM9PSJzdHJpbmciKWwrPWM7ZWxzZSBpZihjPDApbCs9IiR7bFZpZXdbaSIrYysiXX0iO2Vsc2V7bGV0IG09byhjKTtzLnB1c2gobS5yZXBsYWNlKCIkJCQiLCJgIitsKyJgIikrIjsiKSxsPSIifX1lLnB1c2goYGlmIChtYXNrICYgMGIke2kudG9TdHJpbmcoMil9KSB7ICR7cy5qb2luKCIgIil9IH1gKX1yZXR1cm4gZX1mdW5jdGlvbiBJeXQobil7bGV0IHQ9bmV3IG1UKG58fChBcnJheS5pc0FycmF5KHRoaXMpP3RoaXM6W10pKSxlPVtdO2Z1bmN0aW9uIG8oYSl7bGV0IHI9d3R0KGEpLHM9U3R0KGEpO3N3aXRjaChKUShhKSl7Y2FzZSAwOnJldHVybmAobFZpZXdbJHtyfV0gYXMgRWxlbWVudCkuYXBwZW5kQ2hpbGQobFZpZXdbJHtpfV0pYDtjYXNlIDE6cmV0dXJuYChsVmlld1ske3N9XSBhcyBFbGVtZW50KS5zZXRBdHRyaWJ1dGUoIiR7dC5jb25zdW1lU3RyaW5nKCl9IiwgIiR7dC5jb25zdW1lU3RyaW5nKCl9IilgfXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBPcENvZGU6ICIrSlEoYSkpfWxldCBpPS0xO2Zvcig7dC5oYXNNb3JlKCk7KXtsZXQgYT10LmNvbnN1bWVOdW1iZXJTdHJpbmdPck1hcmtlcigpO2lmKGE9PT1VVCl7bGV0IHI9dC5jb25zdW1lU3RyaW5nKCk7aT10LmNvbnN1bWVOdW1iZXIoKSxlLnB1c2goYGxWaWV3WyR7aX1dID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiJHtyfSIpYCl9ZWxzZSBpZihhPT09alQpe2xldCByPXQuY29uc3VtZVN0cmluZygpO2k9dC5jb25zdW1lTnVtYmVyKCksZS5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIiR7cn0iKWApfWVsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKWk9dC5jb25zdW1lTnVtYmVyKCksZS5wdXNoKGBsVmlld1ske2l9XSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIke2F9IilgKTtlbHNlIGlmKHR5cGVvZiBhPT0ibnVtYmVyIil7bGV0IHI9byhhKTtyJiZlLnB1c2gocil9ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUiKX1yZXR1cm4gZX1mdW5jdGlvbiB6eXQobil7bGV0IHQ9bnx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSksZT1bXTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvXTtpPjA/ZS5wdXNoKGByZW1vdmUobFZpZXdbJHtpfV0pYCk6ZS5wdXNoKGByZW1vdmVOZXN0ZWRJQ1UoJHt+aX0pYCl9cmV0dXJuIGV9dmFyIG1UPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuaT0wLHRoaXMuY29kZXM9dH1oYXNNb3JlKCl7cmV0dXJuIHRoaXMuaTx0aGlzLmNvZGVzLmxlbmd0aH1jb25zdW1lTnVtYmVyKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIFdhKHQsImV4cGVjdGluZyBudW1iZXIgaW4gT3BDb2RlIiksdH1jb25zdW1lU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIHlSKHQsImV4cGVjdGluZyBzdHJpbmcgaW4gT3BDb2RlIiksdH1jb25zdW1lRnVuY3Rpb24oKXtsZXQgdD10aGlzLmNvZGVzW3RoaXMuaSsrXTtpZih0PT09bnVsbHx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJleHBlY3RpbmcgZnVuY3Rpb24gaW4gT3BDb2RlIil9Y29uc3VtZU51bWJlck9yU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nInx8V2EodCwiZXhwZWN0aW5nIG51bWJlciBvciBzdHJpbmcgaW4gT3BDb2RlIiksdH1jb25zdW1lTnVtYmVyU3RyaW5nT3JNYXJrZXIoKXtsZXQgdD10aGlzLmNvZGVzW3RoaXMuaSsrXTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmcifHx0eXBlb2YgdD09Im51bWJlciJ8fHQ9PVVUfHx0PT1qVHx8V2EodCwiZXhwZWN0aW5nIG51bWJlciwgc3RyaW5nLCBJQ1VfTUFSS0VSIG9yIEVMRU1FTlRfTUFSS0VSIGluIE9wQ29kZSIpLHR9fTt2YXIgZlQ9L++/vShcZCspOj9cZCrvv70vZ2ksSHl0PS8oe1xzKu+/vVxkKzo/XGQq77+9XHMqLFxzKlxTezZ9XHMqLFtcc1xTXSp9KS9naSxGeXQ9L++/vShcZCsp77+9LyxOdHQ9L15ccyoo77+9XGQrOj9cZCrvv70pXHMqLFxzKihzZWxlY3R8cGx1cmFsKVxzKiwvLGxSPSJcdUZGRkQiLEx5dD0v77+9XC8/XCooXGQrOlxkKynvv70vZ2ksQnl0PS/vv70oXC8/WyMqXVxkKyk6P1xkKu+/vS9naSxWeXQ9L1x1RTUwMC9nO2Z1bmN0aW9uIGp5dChuKXtyZXR1cm4gbi5yZXBsYWNlKFZ5dCwiICIpfWZ1bmN0aW9uIFV5dChuLHQsZSxvLGksYSl7bGV0IHI9ZlIoKSxzPVtdLGw9W10sYz1bW11dO25nRGV2TW9kZSYmKHN2KHMsRHl0KSxzdihsLEdUKSksaT1aeXQoaSxhKTtsZXQgbT1qeXQoaSkuc3BsaXQoQnl0KTtmb3IobGV0IGY9MDtmPG0ubGVuZ3RoO2YrKyl7bGV0IHA9bVtmXTtpZigoZiYxKT09PTApe2xldCBnPWQ4KHApO2ZvcihsZXQgXz0wO188Zy5sZW5ndGg7XysrKXtsZXQgTT1nW19dO2lmKChfJjEpPT09MCl7bGV0IHk9TTtuZ0Rldk1vZGUmJnlSKHksIlBhcnNlZCBJQ1UgcGFydCBzaG91bGQgYmUgc3RyaW5nIikseSE9PSIiJiZZeXQobixyLGNbMF0scyxsLGUseSl9ZWxzZXtsZXQgeT1NO2lmKHR5cGVvZiB5IT0ib2JqZWN0Iil0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBJQ1UgZXhwcmVzc2lvbiBpbiAiJHtpfSIgbWVzc2FnZS5gKTtsZXQgYj1UdHQobixyLGNbMF0sZSxzLG5nRGV2TW9kZT9gSUNVICR7b306JHt5Lm1haW5CaW5kaW5nfWA6IiIsITApLmluZGV4O25nRGV2TW9kZSYmWk8oYixnaSwiSW5kZXggbXVzdCBiZSBpbiBhYnNvbHV0ZSBMVmlldyBvZmZzZXQiKSxEdHQobixlLGwsdCx5LGIpfX19ZWxzZXtsZXQgZz1wLmNoYXJDb2RlQXQoMCk9PT00NyxfPXAuY2hhckNvZGVBdChnPzE6MCk7bmdEZXZNb2RlJiZkMHQoXyw0MiwzNSk7bGV0IE09Z2krTnVtYmVyLnBhcnNlSW50KHAuc3Vic3RyaW5nKGc/MjoxKSk7aWYoZyljLnNoaWZ0KCksdmIoZlIoKSwhMSk7ZWxzZXtsZXQgeT13eXQobixjWzBdLE0pO2MudW5zaGlmdChbXSksdmIoeSwhMCl9fX1uLmRhdGFbb109e2NyZWF0ZTpzLHVwZGF0ZTpsfX1mdW5jdGlvbiBUdHQobix0LGUsbyxpLGEscil7bGV0IHM9THcobixvLDEsbnVsbCksbD1zPDxWbS5TSElGVCxjPWZSKCk7dD09PWMmJihjPW51bGwpLGM9PT1udWxsJiYobHw9Vm0uQVBQRU5EX0VBR0VSTFkpLHImJihsfD1WbS5DT01NRU5ULFpNdChBeXQpKSxpLnB1c2gobCxhPT09bnVsbD8iIjphKTtsZXQgbT13QihuLHMscj8zMjoxLGE9PT1udWxsP25nRGV2TW9kZT8ie3s/fX0iOiIiOmEsbnVsbCk7eHR0KGUsbSk7bGV0IGY9bS5pbmRleDtyZXR1cm4gdmIobSwhMSksYyE9PW51bGwmJnQhPT1jJiZ2eXQoYyxmKSxtfWZ1bmN0aW9uIFl5dChuLHQsZSxvLGksYSxyKXtsZXQgcz1yLm1hdGNoKGZUKSxsPVR0dChuLHQsZSxhLG8scz9udWxsOnIsITEpO3MmJnV3KGkscixsLmluZGV4LG51bGwsMCxudWxsKX1mdW5jdGlvbiBHeXQobix0LGUpe2xldCBpPVRzKCkuaW5kZXgsYT1bXTtpZihuZ0Rldk1vZGUmJnN2KGEsR1QpLG4uZmlyc3RDcmVhdGVQYXNzJiZuLmRhdGFbdF09PT1udWxsKXtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrPTIpe2xldCBzPWVbcl0sbD1lW3IrMV07aWYobCE9PSIiKXtpZihIeXQudGVzdChsKSl0aHJvdyBuZXcgRXJyb3IoYElDVSBleHByZXNzaW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiBhdHRyaWJ1dGVzLiBNZXNzYWdlOiAiJHtsfSIuYCk7dXcoYSxsLGkscyxXeXQoYSksbnVsbCl9fW4uZGF0YVt0XT1hfX1mdW5jdGlvbiB1dyhuLHQsZSxvLGksYSl7bmdEZXZNb2RlJiZaTyhlLGdpLCJJbmRleCBtdXN0IGJlIGluIGFic29sdXRlIExWaWV3IG9mZnNldCIpO2xldCByPW4ubGVuZ3RoLHM9cisxO24ucHVzaChudWxsLG51bGwpO2xldCBsPXIrMjtuZ0Rldk1vZGUmJnN2KG4sR1QpO2xldCBjPXQuc3BsaXQoZlQpLG09MDtmb3IobGV0IGY9MDtmPGMubGVuZ3RoO2YrKyl7bGV0IHA9Y1tmXTtpZihmJjEpe2xldCBnPWkrcGFyc2VJbnQocCwxMCk7bi5wdXNoKC0xLWcpLG09bXxBdHQoZyl9ZWxzZSBwIT09IiImJm4ucHVzaChwKX1yZXR1cm4gbi5wdXNoKGU8PDJ8KG8/MTowKSksbyYmbi5wdXNoKG8sYSksbltyXT1tLG5bc109bi5sZW5ndGgtbCxtfWZ1bmN0aW9uIFd5dChuKXtsZXQgdD0wO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtsZXQgbz1uW2VdO3R5cGVvZiBvPT0ibnVtYmVyIiYmbzwwJiZ0Kyt9cmV0dXJuIHR9ZnVuY3Rpb24gQXR0KG4pe3JldHVybiAxPDxNYXRoLm1pbihuLDMxKX1mdW5jdGlvbiBxeXQobil7cmV0dXJuIG49PT0tMX1mdW5jdGlvbiB0SyhuKXtsZXQgdCxlPSIiLG89MCxpPSExLGE7Zm9yKDsodD1MeXQuZXhlYyhuKSkhPT1udWxsOylpP3RbMF09PT1gJHtsUn0vKiR7YX0ke2xSfWAmJihvPXQuaW5kZXgsaT0hMSk6KGUrPW4uc3Vic3RyaW5nKG8sdC5pbmRleCt0WzBdLmxlbmd0aCksYT10WzFdLGk9ITApO3JldHVybiBuZ0Rldk1vZGUmJmlvKGksITEsYFRhZyBtaXNtYXRjaDogdW5hYmxlIHRvIGZpbmQgdGhlIGVuZCBvZiB0aGUgc3ViLXRlbXBsYXRlIGluIHRoZSB0cmFuc2xhdGlvbiAiJHtufSJgKSxlKz1uLnN1YnN0cihvKSxlfWZ1bmN0aW9uIFp5dChuLHQpe2lmKHF5dCh0KSlyZXR1cm4gdEsobik7e2xldCBlPW4uaW5kZXhPZihgOiR7dH0ke2xSfWApKzIrdC50b1N0cmluZygpLmxlbmd0aCxvPW4uc2VhcmNoKG5ldyBSZWdFeHAoYCR7bFJ9XFwvXFwqXFxkKzoke3R9JHtsUn1gKSk7cmV0dXJuIHRLKG4uc3Vic3RyaW5nKGUsbykpfX1mdW5jdGlvbiBEdHQobix0LGUsbyxpLGEpe25nRGV2TW9kZSYmdW4oaSwiSUNVIGV4cHJlc3Npb24gbXVzdCBiZSBkZWZpbmVkIik7bGV0IHI9MCxzPXt0eXBlOmkudHlwZSxjdXJyZW50Q2FzZUxWaWV3SW5kZXg6THcobix0LDEsbnVsbCksYW5jaG9ySWR4OmEsY2FzZXM6W10sY3JlYXRlOltdLHJlbW92ZTpbXSx1cGRhdGU6W119O0p5dChlLGksYSkseHl0KG4sYSxzKTtsZXQgbD1pLnZhbHVlcztmb3IobGV0IGM9MDtjPGwubGVuZ3RoO2MrKyl7bGV0IG09bFtjXSxmPVtdO2ZvcihsZXQgcD0wO3A8bS5sZW5ndGg7cCsrKXtsZXQgZz1tW3BdO2lmKHR5cGVvZiBnIT0ic3RyaW5nIil7bGV0IF89Zi5wdXNoKGcpLTE7bVtwXT1gPCEtLVx1RkZGRCR7X31cdUZGRkQtLT5gfX1yPVF5dChuLHMsdCxlLG8saS5jYXNlc1tjXSxtLmpvaW4oIiIpLGYpfHJ9ciYmJHl0KGUscixhKX1mdW5jdGlvbiBYeXQobil7bGV0IHQ9W10sZT1bXSxvPTEsaT0wO249bi5yZXBsYWNlKE50dCxmdW5jdGlvbihyLHMsbCl7cmV0dXJuIGw9PT0ic2VsZWN0Ij9vPTA6bz0xLGk9cGFyc2VJbnQocy5zdWJzdHIoMSksMTApLCIifSk7bGV0IGE9ZDgobik7Zm9yKGxldCByPTA7cjxhLmxlbmd0aDspe2xldCBzPWFbcisrXS50cmltKCk7bz09PTEmJihzPXMucmVwbGFjZSgvXHMqKD86PSk/KFx3KylccyovLCIkMSIpKSxzLmxlbmd0aCYmdC5wdXNoKHMpO2xldCBsPWQ4KGFbcisrXSk7dC5sZW5ndGg+ZS5sZW5ndGgmJmUucHVzaChsKX1yZXR1cm57dHlwZTpvLG1haW5CaW5kaW5nOmksY2FzZXM6dCx2YWx1ZXM6ZX19ZnVuY3Rpb24gZDgobil7aWYoIW4pcmV0dXJuW107bGV0IHQ9MCxlPVtdLG89W10saT0vW3t9XS9nO2kubGFzdEluZGV4PTA7bGV0IGE7Zm9yKDthPWkuZXhlYyhuKTspe2xldCBzPWEuaW5kZXg7aWYoYVswXT09In0iKXtpZihlLnBvcCgpLGUubGVuZ3RoPT0wKXtsZXQgbD1uLnN1YnN0cmluZyh0LHMpO050dC50ZXN0KGwpP28ucHVzaChYeXQobCkpOm8ucHVzaChsKSx0PXMrMX19ZWxzZXtpZihlLmxlbmd0aD09MCl7bGV0IGw9bi5zdWJzdHJpbmcodCxzKTtvLnB1c2gobCksdD1zKzF9ZS5wdXNoKCJ7Iil9fWxldCByPW4uc3Vic3RyaW5nKHQpO3JldHVybiBvLnB1c2gociksb31mdW5jdGlvbiBReXQobix0LGUsbyxpLGEscixzKXtsZXQgbD1bXSxjPVtdLG09W107bmdEZXZNb2RlJiYoc3YobCxJeXQpLHN2KGMsenl0KSxzdihtLEdUKSksdC5jYXNlcy5wdXNoKGEpLHQuY3JlYXRlLnB1c2gobCksdC5yZW1vdmUucHVzaChjKSx0LnVwZGF0ZS5wdXNoKG0pO2xldCBwPWhKKFg4KCkpLmdldEluZXJ0Qm9keUVsZW1lbnQocik7bmdEZXZNb2RlJiZ1bihwLCJVbmFibGUgdG8gZ2VuZXJhdGUgaW5lcnQgYm9keSBlbGVtZW50Iik7bGV0IGc9V0wocCl8fHA7cmV0dXJuIGc/SXR0KG4sdCxlLG8sbCxjLG0sZyxpLHMsMCk6MH1mdW5jdGlvbiBJdHQobix0LGUsbyxpLGEscixzLGwsYyxtKXtsZXQgZj0wLHA9cy5maXJzdENoaWxkO2Zvcig7cDspe2xldCBnPUx3KG4sZSwxLG51bGwpO3N3aXRjaChwLm5vZGVUeXBlKXtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmxldCBfPXAsTT1fLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZihZTC5oYXNPd25Qcm9wZXJ0eShNKSl7ZEwoaSxqVCxNLGwsZyksbi5kYXRhW2ddPU07bGV0IFI9Xy5hdHRyaWJ1dGVzO2ZvcihsZXQgRT0wO0U8Ui5sZW5ndGg7RSsrKXtsZXQgaj1SLml0ZW0oRSkscnQ9ai5uYW1lLnRvTG93ZXJDYXNlKCk7ISFqLnZhbHVlLm1hdGNoKGZUKT9PSi5oYXNPd25Qcm9wZXJ0eShydCk/cEJbcnRdP3V3KHIsai52YWx1ZSxnLGoubmFtZSwwLEh3KTpkQltydF0/dXcocixqLnZhbHVlLGcsai5uYW1lLDAsX0opOnV3KHIsai52YWx1ZSxnLGoubmFtZSwwLG51bGwpOm5nRGV2TW9kZSYmY29uc29sZS53YXJuKGBXQVJOSU5HOiBpZ25vcmluZyB1bnNhZmUgYXR0cmlidXRlIHZhbHVlICR7cnR9IG9uIGVsZW1lbnQgJHtNfSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCk6dHh0KGksZyxqKX1mPUl0dChuLHQsZSxvLGksYSxyLHAsZyxjLG0rMSl8ZixlSyhhLGcsbSl9YnJlYWs7Y2FzZSBOb2RlLlRFWFRfTk9ERTpsZXQgeT1wLnRleHRDb250ZW50fHwiIixPPXkubWF0Y2goZlQpO2RMKGksbnVsbCxPPyIiOnksbCxnKSxlSyhhLGcsbSksTyYmKGY9dXcocix5LGcsbnVsbCwwLG51bGwpfGYpO2JyZWFrO2Nhc2UgTm9kZS5DT01NRU5UX05PREU6bGV0IGI9Rnl0LmV4ZWMocC50ZXh0Q29udGVudHx8IiIpO2lmKGIpe2xldCBSPXBhcnNlSW50KGJbMV0sMTApLEU9Y1tSXTtkTChpLFVULG5nRGV2TW9kZT9gbmVzdGVkIElDVSAke1J9YDoiIixsLGcpLER0dChuLGUsbyxsLEUsZyksS3l0KGEsZyxtKX1icmVha31wPXAubmV4dFNpYmxpbmd9cmV0dXJuIGZ9ZnVuY3Rpb24gZUsobix0LGUpe2U9PT0wJiZuLnB1c2godCl9ZnVuY3Rpb24gS3l0KG4sdCxlKXtlPT09MCYmKG4ucHVzaCh+dCksbi5wdXNoKHQpKX1mdW5jdGlvbiBKeXQobix0LGUpe24ucHVzaChBdHQodC5tYWluQmluZGluZyksMiwtMS10Lm1haW5CaW5kaW5nLGU8PDJ8Mil9ZnVuY3Rpb24gJHl0KG4sdCxlKXtuLnB1c2godCwxLGU8PDJ8Myl9ZnVuY3Rpb24gZEwobix0LGUsbyxpKXt0IT09bnVsbCYmbi5wdXNoKHQpLG4ucHVzaChlLGksU3l0KDAsbyxpKSl9ZnVuY3Rpb24gdHh0KG4sdCxlKXtuLnB1c2godDw8MXwxLGUubmFtZSxlLnZhbHVlKX12YXIgbks9MCxleHQ9L1xbKO+/vS4rP++/vT8pXF0vLG54dD0vXFso77+9Lis/77+9PylcXXwo77+9XC8/XCpcZCs6XGQr77+9KS9nLG94dD0vKHtccyopKFZBUl8oUExVUkFMfFNFTEVDVCkoX1xkKyk/KShccyosKS9nLGl4dD0veyhbQS1aMC05X10rKX0vZyxheHQ9L++/vUkxOE5fRVhQXyhJQ1UoX1xkKyk/Ke+/vS9nLHJ4dD0vXC9cKi8sc3h0PS9cZCtcOihcZCspLztmdW5jdGlvbiBseHQobix0PXt9KXtsZXQgZT1uO2lmKGV4dC50ZXN0KG4pKXtsZXQgbz17fSxpPVtuS107ZT1lLnJlcGxhY2Uobnh0LChhLHIscyk9PntsZXQgbD1yfHxzLGM9b1tsXXx8W107aWYoYy5sZW5ndGh8fChsLnNwbGl0KCJ8IikuZm9yRWFjaChNPT57bGV0IHk9TS5tYXRjaChzeHQpLE89eT9wYXJzZUludCh5WzFdLDEwKTpuSyxiPXJ4dC50ZXN0KE0pO2MucHVzaChbTyxiLE1dKX0pLG9bbF09YyksIWMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgaTE4biBwb3N0cHJvY2VzczogdW5tYXRjaGVkIHBsYWNlaG9sZGVyIC0gJHtsfWApO2xldCBtPWlbaS5sZW5ndGgtMV0sZj0wO2ZvcihsZXQgTT0wO008Yy5sZW5ndGg7TSsrKWlmKGNbTV1bMF09PT1tKXtmPU07YnJlYWt9bGV0W3AsZyxfXT1jW2ZdO3JldHVybiBnP2kucG9wKCk6bSE9PXAmJmkucHVzaChwKSxjLnNwbGljZShmLDEpLF99KX1yZXR1cm4gT2JqZWN0LmtleXModCkubGVuZ3RoJiYoZT1lLnJlcGxhY2Uob3h0LChvLGksYSxyLHMsbCk9PnQuaGFzT3duUHJvcGVydHkoYSk/YCR7aX0ke3RbYV19JHtsfWA6byksZT1lLnJlcGxhY2UoaXh0LChvLGkpPT50Lmhhc093blByb3BlcnR5KGkpP3RbaV06byksZT1lLnJlcGxhY2UoYXh0LChvLGkpPT57aWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7bGV0IGE9dFtpXTtpZighYS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBpMThuIHBvc3Rwcm9jZXNzOiB1bm1hdGNoZWQgSUNVIC0gJHtvfSB3aXRoIGtleTogJHtpfWApO3JldHVybiBhLnNoaWZ0KCl9cmV0dXJuIG99KSksZX1mdW5jdGlvbiB6dHQobix0LGU9LTEpe2xldCBvPUNvKCksaT12ZSgpLGE9Z2krbjtuZ0Rldk1vZGUmJnVuKG8sInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7bGV0IHI9Ynkoby5jb25zdHMsdCkscz1mUigpO28uZmlyc3RDcmVhdGVQYXNzJiZVeXQobyxzPT09bnVsbD8wOnMuaW5kZXgsaSxhLHIsZSk7bGV0IGw9by5kYXRhW2FdLGM9cz09PWlbWWNdP251bGw6cyxtPUlKKG8sYyxpKSxmPXMmJnMudHlwZSY4P2lbcy5pbmRleF06bnVsbDtreXQoaSxsLmNyZWF0ZSxtLGYpLFlLKCEwKX1mdW5jdGlvbiBIdHQoKXtZSyghMSl9ZnVuY3Rpb24gV1Qobix0LGUpe3p0dChuLHQsZSksSHR0KCl9ZnVuY3Rpb24gY3h0KG4sdCl7bGV0IGU9Q28oKTtuZ0Rldk1vZGUmJnVuKGUsInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7bGV0IG89YnkoZS5jb25zdHMsdCk7R3l0KGUsbitnaSxvKX1mdW5jdGlvbiBCUihuKXtsZXQgdD12ZSgpO3JldHVybiBSeXQoV2ModCxEdygpLG4pKSxCUn1mdW5jdGlvbiBxVChuKXtFeXQoQ28oKSx2ZSgpLG4rZ2kpfWZ1bmN0aW9uIFpUKG4sdD17fSl7cmV0dXJuIGx4dChuLHQpfWZ1bmN0aW9uIG14dChuLHQsZSl7bGV0IG89Q28oKTtpZihvLmZpcnN0Q3JlYXRlUGFzcyl7bGV0IGk9V0Mobik7ZzgoZSxvLmRhdGEsby5ibHVlcHJpbnQsaSwhMCksZzgodCxvLmRhdGEsby5ibHVlcHJpbnQsaSwhMSl9fWZ1bmN0aW9uIGc4KG4sdCxlLG8saSl7aWYobj1VbyhuKSxBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKWc4KG5bYV0sdCxlLG8saSk7ZWxzZXtsZXQgYT1DbygpLHI9dmUoKSxzPU93KG4pP246VW8obi5wcm92aWRlKSxsPXkkKG4pLGM9VHMoKSxtPWMucHJvdmlkZXJJbmRleGVzJjEwNDg1NzUsZj1jLmRpcmVjdGl2ZVN0YXJ0LHA9Yy5wcm92aWRlckluZGV4ZXM+PjIwO2lmKE93KG4pfHwhbi5tdWx0aSl7bGV0IGc9bmV3IGZ2KGwsaSx2KSxfPXVMKHMsdCxpP206bStwLGYpO189PT0tMT8oZVQoZFIoYyxyKSxhLHMpLGdMKGEsbix0Lmxlbmd0aCksdC5wdXNoKHMpLGMuZGlyZWN0aXZlU3RhcnQrKyxjLmRpcmVjdGl2ZUVuZCsrLGkmJihjLnByb3ZpZGVySW5kZXhlcys9MTA0ODU3NiksZS5wdXNoKGcpLHIucHVzaChnKSk6KGVbX109ZyxyW19dPWcpfWVsc2V7bGV0IGc9dUwocyx0LG0rcCxmKSxfPXVMKHMsdCxtLG0rcCksTT1nPj0wJiZlW2ddLHk9Xz49MCYmZVtfXTtpZihpJiYheXx8IWkmJiFNKXtlVChkUihjLHIpLGEscyk7bGV0IE89ZHh0KGk/cHh0OmZ4dCxlLmxlbmd0aCxpLG8sbCk7IWkmJnkmJihlW19dLnByb3ZpZGVyRmFjdG9yeT1PKSxnTChhLG4sdC5sZW5ndGgsMCksdC5wdXNoKHMpLGMuZGlyZWN0aXZlU3RhcnQrKyxjLmRpcmVjdGl2ZUVuZCsrLGkmJihjLnByb3ZpZGVySW5kZXhlcys9MTA0ODU3NiksZS5wdXNoKE8pLHIucHVzaChPKX1lbHNle2xldCBPPUZ0dChlW2k/XzpnXSxsLCFpJiZvKTtnTChhLG4sZz4tMT9nOl8sTyl9IWkmJm8mJnkmJmVbX10uY29tcG9uZW50UHJvdmlkZXJzKyt9fX1mdW5jdGlvbiBnTChuLHQsZSxvKXtsZXQgaT1Pdyh0KTtpZihpfHx3T3QodCkpe2xldCByPSh0LnVzZUNsYXNzfHx0KS5wcm90b3R5cGUubmdPbkRlc3Ryb3k7aWYocil7bGV0IHM9bi5kZXN0cm95SG9va3N8fChuLmRlc3Ryb3lIb29rcz1bXSk7aWYoIWkmJnQubXVsdGkpe25nRGV2TW9kZSYmdW4obywiaW5kZXhJbkZhY3Rvcnkgd2hlbiByZWdpc3RlcmluZyBtdWx0aSBmYWN0b3J5IGRlc3Ryb3kgaG9vayIpO2xldCBsPXMuaW5kZXhPZihlKTtsPT09LTE/cy5wdXNoKGUsW28scl0pOnNbbCsxXS5wdXNoKG8scil9ZWxzZSBzLnB1c2goZSxyKX19fWZ1bmN0aW9uIEZ0dChuLHQsZSl7cmV0dXJuIGUmJm4uY29tcG9uZW50UHJvdmlkZXJzKyssbi5tdWx0aS5wdXNoKHQpLTF9ZnVuY3Rpb24gdUwobix0LGUsbyl7Zm9yKGxldCBpPWU7aTxvO2krKylpZih0W2ldPT09bilyZXR1cm4gaTtyZXR1cm4tMX1mdW5jdGlvbiBmeHQobix0LGUsbyl7cmV0dXJuIHU4KHRoaXMubXVsdGksW10pfWZ1bmN0aW9uIHB4dChuLHQsZSxvKXtsZXQgaT10aGlzLm11bHRpLGE7aWYodGhpcy5wcm92aWRlckZhY3Rvcnkpe2xldCByPXRoaXMucHJvdmlkZXJGYWN0b3J5LmNvbXBvbmVudFByb3ZpZGVycyxzPVNSKGUsZVtSbl0sdGhpcy5wcm92aWRlckZhY3RvcnkuaW5kZXgsbyk7YT1zLnNsaWNlKDAsciksdTgoaSxhKTtmb3IobGV0IGw9cjtsPHMubGVuZ3RoO2wrKylhLnB1c2goc1tsXSl9ZWxzZSBhPVtdLHU4KGksYSk7cmV0dXJuIGF9ZnVuY3Rpb24gdTgobix0KXtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7bGV0IG89bltlXTt0LnB1c2gobygpKX1yZXR1cm4gdH1mdW5jdGlvbiBkeHQobix0LGUsbyxpKXtsZXQgYT1uZXcgZnYobixlLHYpO3JldHVybiBhLm11bHRpPVtdLGEuaW5kZXg9dCxhLmNvbXBvbmVudFByb3ZpZGVycz0wLEZ0dChhLGksbyYmIWUpLGF9ZnVuY3Rpb24gVGUobix0PVtdKXtyZXR1cm4gZT0+e2UucHJvdmlkZXJzUmVzb2x2ZXI9KG8saSk9Pm14dChvLGk/aShuKTpuLHQpfX12YXIgaDg9Y2xhc3N7fSxwVD1jbGFzc3t9O2Z1bmN0aW9uIGd4dChuKXtsZXQgdD1FcnJvcihgTm8gY29tcG9uZW50IGZhY3RvcnkgZm91bmQgZm9yICR7T28obil9LiBEaWQgeW91IGFkZCBpdCB0byBATmdNb2R1bGUuZW50cnlDb21wb25lbnRzP2ApO3JldHVybiB0W3V4dF09bix0fXZhciB1eHQ9Im5nQ29tcG9uZW50Ijt2YXIgXzg9Y2xhc3N7cmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCl7dGhyb3cgZ3h0KHQpfX0sX289Y2xhc3N7fTtfby5OVUxMPW5ldyBfODtmdW5jdGlvbiBkVCguLi5uKXt9ZnVuY3Rpb24gaHh0KCl7cmV0dXJuIEp3KFRzKCksdmUoKSl9ZnVuY3Rpb24gSncobix0KXtyZXR1cm4gbmV3IEwoeWcobix0KSl9dmFyIF94dD1oeHQ7dmFyIEN4dD1feHQsTD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLm5hdGl2ZUVsZW1lbnQ9dH19O0wuX19OR19FTEVNRU5UX0lEX189Q3h0O2Z1bmN0aW9uIE14dChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEw/bi5uYXRpdmVFbGVtZW50Om59dmFyIGVsZT1uZXcgeXQoIlJlbmRlcmVyMkludGVyY2VwdG9yIiksVWY9Y2xhc3N7fSxvYT1jbGFzc3t9O29hLl9fTkdfRUxFTUVOVF9JRF9fPSgpPT5PeHQoKTt2YXIgYnh0PXl4dDt2YXIgT3h0PWJ4dDtmdW5jdGlvbiBQeHQobil7bGV0IHQ9bltQb107aWYobmdEZXZNb2RlJiYhSWEodCkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW5qZWN0IFJlbmRlcmVyMiB3aGVuIHRoZSBhcHBsaWNhdGlvbiB1c2VzIFJlbmRlcmVyMyEiKTtyZXR1cm4gdH1mdW5jdGlvbiB5eHQoKXtsZXQgbj12ZSgpLHQ9VHMoKSxlPWNfKHQuaW5kZXgsbik7cmV0dXJuIFB4dChWTyhlKT9lOm4pfXZhciB3dz1jbGFzc3t9O3d3Llx1MDI3NXByb3Y9UHQoe3Rva2VuOnd3LHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm51bGx9KTt2YXIgWWY9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5mdWxsPXQsdGhpcy5tYWpvcj10LnNwbGl0KCIuIilbMF0sdGhpcy5taW5vcj10LnNwbGl0KCIuIilbMV0sdGhpcy5wYXRjaD10LnNwbGl0KCIuIikuc2xpY2UoMikuam9pbigiLiIpfX0seHh0PW5ldyBZZigiMTIuMi4xNiIpO3ZhciBnVD1jbGFzc3tjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyh0KXtyZXR1cm4geXcodCl9Y3JlYXRlKHQpe3JldHVybiBuZXcgQzgodCl9fSx2eHQ9KG4sdCk9PnQ7dmFyIEM4PWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMubGVuZ3RoPTAsdGhpcy5fbGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3VubGlua2VkUmVjb3Jkcz1udWxsLHRoaXMuX3ByZXZpb3VzSXRIZWFkPW51bGwsdGhpcy5faXRIZWFkPW51bGwsdGhpcy5faXRUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD1udWxsLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0aGlzLl9tb3Zlc0hlYWQ9bnVsbCx0aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9bnVsbCx0aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsLHRoaXMuX3RyYWNrQnlGbj10fHx2eHR9Zm9yRWFjaEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5faXRIZWFkO2UhPT1udWxsO2U9ZS5fbmV4dCl0KGUpfWZvckVhY2hPcGVyYXRpb24odCl7bGV0IGU9dGhpcy5faXRIZWFkLG89dGhpcy5fcmVtb3ZhbHNIZWFkLGk9MCxhPW51bGw7Zm9yKDtlfHxvOyl7bGV0IHI9IW98fGUmJmUuY3VycmVudEluZGV4PG9LKG8saSxhKT9lOm8scz1vSyhyLGksYSksbD1yLmN1cnJlbnRJbmRleDtpZihyPT09bylpLS0sbz1vLl9uZXh0UmVtb3ZlZDtlbHNlIGlmKGU9ZS5fbmV4dCxyLnByZXZpb3VzSW5kZXg9PW51bGwpaSsrO2Vsc2V7YXx8KGE9W10pO2xldCBjPXMtaSxtPWwtaTtpZihjIT1tKXtmb3IobGV0IHA9MDtwPGM7cCsrKXtsZXQgZz1wPGEubGVuZ3RoP2FbcF06YVtwXT0wLF89ZytwO208PV8mJl88YyYmKGFbcF09ZysxKX1sZXQgZj1yLnByZXZpb3VzSW5kZXg7YVtmXT1tLWN9fXMhPT1sJiZ0KHIscyxsKX19Zm9yRWFjaFByZXZpb3VzSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9wcmV2aW91c0l0SGVhZDtlIT09bnVsbDtlPWUuX25leHRQcmV2aW91cyl0KGUpfWZvckVhY2hBZGRlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtlIT09bnVsbDtlPWUuX25leHRBZGRlZCl0KGUpfWZvckVhY2hNb3ZlZEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fbW92ZXNIZWFkO2UhPT1udWxsO2U9ZS5fbmV4dE1vdmVkKXQoZSl9Zm9yRWFjaFJlbW92ZWRJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtlIT09bnVsbDtlPWUuX25leHRSZW1vdmVkKXQoZSl9Zm9yRWFjaElkZW50aXR5Q2hhbmdlKHQpe2xldCBlO2ZvcihlPXRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ7ZSE9PW51bGw7ZT1lLl9uZXh0SWRlbnRpdHlDaGFuZ2UpdChlKX1kaWZmKHQpe2lmKHQ9PW51bGwmJih0PVtdKSwheXcodCkpdGhyb3cgbmV3IEVycm9yKGBFcnJvciB0cnlpbmcgdG8gZGlmZiAnJHtPbyh0KX0nLiBPbmx5IGFycmF5cyBhbmQgaXRlcmFibGVzIGFyZSBhbGxvd2VkYCk7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayh0KXt0aGlzLl9yZXNldCgpO2xldCBlPXRoaXMuX2l0SGVhZCxvPSExLGksYSxyO2lmKEFycmF5LmlzQXJyYXkodCkpe3RoaXMubGVuZ3RoPXQubGVuZ3RoO2ZvcihsZXQgcz0wO3M8dGhpcy5sZW5ndGg7cysrKWE9dFtzXSxyPXRoaXMuX3RyYWNrQnlGbihzLGEpLGU9PT1udWxsfHwhT2JqZWN0LmlzKGUudHJhY2tCeUlkLHIpPyhlPXRoaXMuX21pc21hdGNoKGUsYSxyLHMpLG89ITApOihvJiYoZT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihlLGEscixzKSksT2JqZWN0LmlzKGUuaXRlbSxhKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoZSxhKSksZT1lLl9uZXh0fWVsc2UgaT0wLHRQdCh0LHM9PntyPXRoaXMuX3RyYWNrQnlGbihpLHMpLGU9PT1udWxsfHwhT2JqZWN0LmlzKGUudHJhY2tCeUlkLHIpPyhlPXRoaXMuX21pc21hdGNoKGUscyxyLGkpLG89ITApOihvJiYoZT10aGlzLl92ZXJpZnlSZWluc2VydGlvbihlLHMscixpKSksT2JqZWN0LmlzKGUuaXRlbSxzKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoZSxzKSksZT1lLl9uZXh0LGkrK30pLHRoaXMubGVuZ3RoPWk7cmV0dXJuIHRoaXMuX3RydW5jYXRlKGUpLHRoaXMuY29sbGVjdGlvbj10LHRoaXMuaXNEaXJ0eX1nZXQgaXNEaXJ0eSgpe3JldHVybiB0aGlzLl9hZGRpdGlvbnNIZWFkIT09bnVsbHx8dGhpcy5fbW92ZXNIZWFkIT09bnVsbHx8dGhpcy5fcmVtb3ZhbHNIZWFkIT09bnVsbHx8dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZCE9PW51bGx9X3Jlc2V0KCl7aWYodGhpcy5pc0RpcnR5KXtsZXQgdDtmb3IodD10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7dCE9PW51bGw7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0O2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7dCE9PW51bGw7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0PXRoaXMuX21vdmVzSGVhZDt0IT09bnVsbDt0PXQuX25leHRNb3ZlZCl0LnByZXZpb3VzSW5kZXg9dC5jdXJyZW50SW5kZXg7dGhpcy5fbW92ZXNIZWFkPXRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD10aGlzLl9yZW1vdmFsc1RhaWw9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbH19X21pc21hdGNoKHQsZSxvLGkpe2xldCBhO3JldHVybiB0PT09bnVsbD9hPXRoaXMuX2l0VGFpbDooYT10Ll9wcmV2LHRoaXMuX3JlbW92ZSh0KSksdD10aGlzLl91bmxpbmtlZFJlY29yZHM9PT1udWxsP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChvLG51bGwpLHQhPT1udWxsPyhPYmplY3QuaXModC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIodCxhLGkpKToodD10aGlzLl9saW5rZWRSZWNvcmRzPT09bnVsbD9udWxsOnRoaXMuX2xpbmtlZFJlY29yZHMuZ2V0KG8saSksdCE9PW51bGw/KE9iamVjdC5pcyh0Lml0ZW0sZSl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHQsZSksdGhpcy5fbW92ZUFmdGVyKHQsYSxpKSk6dD10aGlzLl9hZGRBZnRlcihuZXcgTTgoZSxvKSxhLGkpKSx0fV92ZXJpZnlSZWluc2VydGlvbih0LGUsbyxpKXtsZXQgYT10aGlzLl91bmxpbmtlZFJlY29yZHM9PT1udWxsP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChvLG51bGwpO3JldHVybiBhIT09bnVsbD90PXRoaXMuX3JlaW5zZXJ0QWZ0ZXIoYSx0Ll9wcmV2LGkpOnQuY3VycmVudEluZGV4IT1pJiYodC5jdXJyZW50SW5kZXg9aSx0aGlzLl9hZGRUb01vdmVzKHQsaSkpLHR9X3RydW5jYXRlKHQpe2Zvcig7dCE9PW51bGw7KXtsZXQgZT10Ll9uZXh0O3RoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKSx0PWV9dGhpcy5fdW5saW5rZWRSZWNvcmRzIT09bnVsbCYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLmNsZWFyKCksdGhpcy5fYWRkaXRpb25zVGFpbCE9PW51bGwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksdGhpcy5fbW92ZXNUYWlsIT09bnVsbCYmKHRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPW51bGwpLHRoaXMuX2l0VGFpbCE9PW51bGwmJih0aGlzLl9pdFRhaWwuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNUYWlsIT09bnVsbCYmKHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9bnVsbCksdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbCE9PW51bGwmJih0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbCl9X3JlaW5zZXJ0QWZ0ZXIodCxlLG8pe3RoaXMuX3VubGlua2VkUmVjb3JkcyE9PW51bGwmJnRoaXMuX3VubGlua2VkUmVjb3Jkcy5yZW1vdmUodCk7bGV0IGk9dC5fcHJldlJlbW92ZWQsYT10Ll9uZXh0UmVtb3ZlZDtyZXR1cm4gaT09PW51bGw/dGhpcy5fcmVtb3ZhbHNIZWFkPWE6aS5fbmV4dFJlbW92ZWQ9YSxhPT09bnVsbD90aGlzLl9yZW1vdmFsc1RhaWw9aTphLl9wcmV2UmVtb3ZlZD1pLHRoaXMuX2luc2VydEFmdGVyKHQsZSxvKSx0aGlzLl9hZGRUb01vdmVzKHQsbyksdH1fbW92ZUFmdGVyKHQsZSxvKXtyZXR1cm4gdGhpcy5fdW5saW5rKHQpLHRoaXMuX2luc2VydEFmdGVyKHQsZSxvKSx0aGlzLl9hZGRUb01vdmVzKHQsbyksdH1fYWRkQWZ0ZXIodCxlLG8pe3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcih0LGUsbyksdGhpcy5fYWRkaXRpb25zVGFpbD09PW51bGw/dGhpcy5fYWRkaXRpb25zVGFpbD10aGlzLl9hZGRpdGlvbnNIZWFkPXQ6dGhpcy5fYWRkaXRpb25zVGFpbD10aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9dCx0fV9pbnNlcnRBZnRlcih0LGUsbyl7bGV0IGk9ZT09PW51bGw/dGhpcy5faXRIZWFkOmUuX25leHQ7cmV0dXJuIHQuX25leHQ9aSx0Ll9wcmV2PWUsaT09PW51bGw/dGhpcy5faXRUYWlsPXQ6aS5fcHJldj10LGU9PT1udWxsP3RoaXMuX2l0SGVhZD10OmUuX25leHQ9dCx0aGlzLl9saW5rZWRSZWNvcmRzPT09bnVsbCYmKHRoaXMuX2xpbmtlZFJlY29yZHM9bmV3IHVUKSx0aGlzLl9saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1vLHR9X3JlbW92ZSh0KXtyZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsodCkpfV91bmxpbmsodCl7dGhpcy5fbGlua2VkUmVjb3JkcyE9PW51bGwmJnRoaXMuX2xpbmtlZFJlY29yZHMucmVtb3ZlKHQpO2xldCBlPXQuX3ByZXYsbz10Ll9uZXh0O3JldHVybiBlPT09bnVsbD90aGlzLl9pdEhlYWQ9bzplLl9uZXh0PW8sbz09PW51bGw/dGhpcy5faXRUYWlsPWU6by5fcHJldj1lLHR9X2FkZFRvTW92ZXModCxlKXtyZXR1cm4gdC5wcmV2aW91c0luZGV4PT09ZXx8KHRoaXMuX21vdmVzVGFpbD09PW51bGw/dGhpcy5fbW92ZXNUYWlsPXRoaXMuX21vdmVzSGVhZD10OnRoaXMuX21vdmVzVGFpbD10aGlzLl9tb3Zlc1RhaWwuX25leHRNb3ZlZD10KSx0fV9hZGRUb1JlbW92YWxzKHQpe3JldHVybiB0aGlzLl91bmxpbmtlZFJlY29yZHM9PT1udWxsJiYodGhpcy5fdW5saW5rZWRSZWNvcmRzPW5ldyB1VCksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1udWxsLHQuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPT09bnVsbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD10LHQuX3ByZXZSZW1vdmVkPW51bGwpOih0Ll9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9dCksdH1fYWRkSWRlbnRpdHlDaGFuZ2UodCxlKXtyZXR1cm4gdC5pdGVtPWUsdGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD09PW51bGw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkPXQ6dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9dCx0fX0sTTg9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNrQnlJZD1lLHRoaXMuY3VycmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH19LGI4PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbH1hZGQodCl7dGhpcy5faGVhZD09PW51bGw/KHRoaXMuX2hlYWQ9dGhpcy5fdGFpbD10LHQuX25leHREdXA9bnVsbCx0Ll9wcmV2RHVwPW51bGwpOih0aGlzLl90YWlsLl9uZXh0RHVwPXQsdC5fcHJldkR1cD10aGlzLl90YWlsLHQuX25leHREdXA9bnVsbCx0aGlzLl90YWlsPXQpfWdldCh0LGUpe2xldCBvO2ZvcihvPXRoaXMuX2hlYWQ7byE9PW51bGw7bz1vLl9uZXh0RHVwKWlmKChlPT09bnVsbHx8ZTw9by5jdXJyZW50SW5kZXgpJiZPYmplY3QuaXMoby50cmFja0J5SWQsdCkpcmV0dXJuIG87cmV0dXJuIG51bGx9cmVtb3ZlKHQpe2xldCBlPXQuX3ByZXZEdXAsbz10Ll9uZXh0RHVwO3JldHVybiBlPT09bnVsbD90aGlzLl9oZWFkPW86ZS5fbmV4dER1cD1vLG89PT1udWxsP3RoaXMuX3RhaWw9ZTpvLl9wcmV2RHVwPWUsdGhpcy5faGVhZD09PW51bGx9fSx1VD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMubWFwPW5ldyBNYXB9cHV0KHQpe2xldCBlPXQudHJhY2tCeUlkLG89dGhpcy5tYXAuZ2V0KGUpO298fChvPW5ldyBiOCx0aGlzLm1hcC5zZXQoZSxvKSksby5hZGQodCl9Z2V0KHQsZSl7bGV0IG89dCxpPXRoaXMubWFwLmdldChvKTtyZXR1cm4gaT9pLmdldCh0LGUpOm51bGx9cmVtb3ZlKHQpe2xldCBlPXQudHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3ZlKHQpJiZ0aGlzLm1hcC5kZWxldGUoZSksdH1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLm1hcC5zaXplPT09MH1jbGVhcigpe3RoaXMubWFwLmNsZWFyKCl9fTtmdW5jdGlvbiBvSyhuLHQsZSl7bGV0IG89bi5wcmV2aW91c0luZGV4O2lmKG89PT1udWxsKXJldHVybiBvO2xldCBpPTA7cmV0dXJuIGUmJm88ZS5sZW5ndGgmJihpPWVbb10pLG8rdCtpfXZhciBoVD1jbGFzc3tjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE1hcHx8ekIodCl9Y3JlYXRlKCl7cmV0dXJuIG5ldyBPOH19LE84PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fcmVjb3Jkcz1uZXcgTWFwLHRoaXMuX21hcEhlYWQ9bnVsbCx0aGlzLl9hcHBlbmRBZnRlcj1udWxsLHRoaXMuX3ByZXZpb3VzTWFwSGVhZD1udWxsLHRoaXMuX2NoYW5nZXNIZWFkPW51bGwsdGhpcy5fY2hhbmdlc1RhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsfWdldCBpc0RpcnR5KCl7cmV0dXJuIHRoaXMuX2FkZGl0aW9uc0hlYWQhPT1udWxsfHx0aGlzLl9jaGFuZ2VzSGVhZCE9PW51bGx8fHRoaXMuX3JlbW92YWxzSGVhZCE9PW51bGx9Zm9yRWFjaEl0ZW0odCl7bGV0IGU7Zm9yKGU9dGhpcy5fbWFwSGVhZDtlIT09bnVsbDtlPWUuX25leHQpdChlKX1mb3JFYWNoUHJldmlvdXNJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3ByZXZpb3VzTWFwSGVhZDtlIT09bnVsbDtlPWUuX25leHRQcmV2aW91cyl0KGUpfWZvckVhY2hDaGFuZ2VkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtlIT09bnVsbDtlPWUuX25leHRDaGFuZ2VkKXQoZSl9Zm9yRWFjaEFkZGVkSXRlbSh0KXtsZXQgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO2UhPT1udWxsO2U9ZS5fbmV4dEFkZGVkKXQoZSl9Zm9yRWFjaFJlbW92ZWRJdGVtKHQpe2xldCBlO2ZvcihlPXRoaXMuX3JlbW92YWxzSGVhZDtlIT09bnVsbDtlPWUuX25leHRSZW1vdmVkKXQoZSl9ZGlmZih0KXtpZighdCl0PW5ldyBNYXA7ZWxzZSBpZighKHQgaW5zdGFuY2VvZiBNYXB8fHpCKHQpKSl0aHJvdyBuZXcgRXJyb3IoYEVycm9yIHRyeWluZyB0byBkaWZmICcke09vKHQpfScuIE9ubHkgbWFwcyBhbmQgb2JqZWN0cyBhcmUgYWxsb3dlZGApO3JldHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6bnVsbH1vbkRlc3Ryb3koKXt9Y2hlY2sodCl7dGhpcy5fcmVzZXQoKTtsZXQgZT10aGlzLl9tYXBIZWFkO2lmKHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fZm9yRWFjaCh0LChvLGkpPT57aWYoZSYmZS5rZXk9PT1pKXRoaXMuX21heWJlQWRkVG9DaGFuZ2VzKGUsbyksdGhpcy5fYXBwZW5kQWZ0ZXI9ZSxlPWUuX25leHQ7ZWxzZXtsZXQgYT10aGlzLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleShpLG8pO2U9dGhpcy5faW5zZXJ0QmVmb3JlT3JBcHBlbmQoZSxhKX19KSxlKXtlLl9wcmV2JiYoZS5fcHJldi5fbmV4dD1udWxsKSx0aGlzLl9yZW1vdmFsc0hlYWQ9ZTtmb3IobGV0IG89ZTtvIT09bnVsbDtvPW8uX25leHRSZW1vdmVkKW89PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1udWxsKSx0aGlzLl9yZWNvcmRzLmRlbGV0ZShvLmtleSksby5fbmV4dFJlbW92ZWQ9by5fbmV4dCxvLnByZXZpb3VzVmFsdWU9by5jdXJyZW50VmFsdWUsby5jdXJyZW50VmFsdWU9bnVsbCxvLl9wcmV2PW51bGwsby5fbmV4dD1udWxsfXJldHVybiB0aGlzLl9jaGFuZ2VzVGFpbCYmKHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD1udWxsKSx0aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLHRoaXMuaXNEaXJ0eX1faW5zZXJ0QmVmb3JlT3JBcHBlbmQodCxlKXtpZih0KXtsZXQgbz10Ll9wcmV2O3JldHVybiBlLl9uZXh0PXQsZS5fcHJldj1vLHQuX3ByZXY9ZSxvJiYoby5fbmV4dD1lKSx0PT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9ZSksdGhpcy5fYXBwZW5kQWZ0ZXI9dCx0fXJldHVybiB0aGlzLl9hcHBlbmRBZnRlcj8odGhpcy5fYXBwZW5kQWZ0ZXIuX25leHQ9ZSxlLl9wcmV2PXRoaXMuX2FwcGVuZEFmdGVyKTp0aGlzLl9tYXBIZWFkPWUsdGhpcy5fYXBwZW5kQWZ0ZXI9ZSxudWxsfV9nZXRPckNyZWF0ZVJlY29yZEZvcktleSh0LGUpe2lmKHRoaXMuX3JlY29yZHMuaGFzKHQpKXtsZXQgaT10aGlzLl9yZWNvcmRzLmdldCh0KTt0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhpLGUpO2xldCBhPWkuX3ByZXYscj1pLl9uZXh0O3JldHVybiBhJiYoYS5fbmV4dD1yKSxyJiYoci5fcHJldj1hKSxpLl9uZXh0PW51bGwsaS5fcHJldj1udWxsLGl9bGV0IG89bmV3IFA4KHQpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldCh0LG8pLG8uY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9BZGRpdGlvbnMobyksb31fcmVzZXQoKXtpZih0aGlzLmlzRGlydHkpe2xldCB0O2Zvcih0aGlzLl9wcmV2aW91c01hcEhlYWQ9dGhpcy5fbWFwSGVhZCx0PXRoaXMuX3ByZXZpb3VzTWFwSGVhZDt0IT09bnVsbDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5fY2hhbmdlc0hlYWQ7dCE9PW51bGw7dD10Ll9uZXh0Q2hhbmdlZCl0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWU7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDt0IT1udWxsO3Q9dC5fbmV4dEFkZGVkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTt0aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsfX1fbWF5YmVBZGRUb0NoYW5nZXModCxlKXtPYmplY3QuaXMoZSx0LmN1cnJlbnRWYWx1ZSl8fCh0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWUsdC5jdXJyZW50VmFsdWU9ZSx0aGlzLl9hZGRUb0NoYW5nZXModCkpfV9hZGRUb0FkZGl0aW9ucyh0KXt0aGlzLl9hZGRpdGlvbnNIZWFkPT09bnVsbD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX1fYWRkVG9DaGFuZ2VzKHQpe3RoaXMuX2NoYW5nZXNIZWFkPT09bnVsbD90aGlzLl9jaGFuZ2VzSGVhZD10aGlzLl9jaGFuZ2VzVGFpbD10Oih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9dCx0aGlzLl9jaGFuZ2VzVGFpbD10KX1fZm9yRWFjaCh0LGUpe3QgaW5zdGFuY2VvZiBNYXA/dC5mb3JFYWNoKGUpOk9iamVjdC5rZXlzKHQpLmZvckVhY2gobz0+ZSh0W29dLG8pKX19LFA4PWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMua2V5PXQsdGhpcy5wcmV2aW91c1ZhbHVlPW51bGwsdGhpcy5jdXJyZW50VmFsdWU9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dENoYW5nZWQ9bnVsbH19O2Z1bmN0aW9uIEx0dCgpe3JldHVybiBuZXcga28oW25ldyBnVF0pfXZhciBrbz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmZhY3Rvcmllcz10fXN0YXRpYyBjcmVhdGUodCxlKXtpZihlIT1udWxsKXtsZXQgbz1lLmZhY3Rvcmllcy5zbGljZSgpO3Q9dC5jb25jYXQobyl9cmV0dXJuIG5ldyBrbyh0KX1zdGF0aWMgZXh0ZW5kKHQpe3JldHVybntwcm92aWRlOmtvLHVzZUZhY3Rvcnk6ZT0+a28uY3JlYXRlKHQsZXx8THR0KCkpLGRlcHM6W1trbyxuZXcgWW8sbmV3IEhdXX19ZmluZCh0KXtsZXQgZT10aGlzLmZhY3Rvcmllcy5maW5kKG89Pm8uc3VwcG9ydHModCkpO2lmKGUhPW51bGwpcmV0dXJuIGU7dGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnJHt0fScgb2YgdHlwZSAnJHt3eHQodCl9J2ApfX07a28uXHUwMjc1cHJvdj1QdCh7dG9rZW46a28scHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpMdHR9KTtmdW5jdGlvbiB3eHQobil7cmV0dXJuIG4ubmFtZXx8dHlwZW9mIG59ZnVuY3Rpb24gQnR0KCl7cmV0dXJuIG5ldyBQcihbbmV3IGhUXSl9dmFyIFByPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuZmFjdG9yaWVzPXR9c3RhdGljIGNyZWF0ZSh0LGUpe2lmKGUpe2xldCBvPWUuZmFjdG9yaWVzLnNsaWNlKCk7dD10LmNvbmNhdChvKX1yZXR1cm4gbmV3IFByKHQpfXN0YXRpYyBleHRlbmQodCl7cmV0dXJue3Byb3ZpZGU6UHIsdXNlRmFjdG9yeTplPT5Qci5jcmVhdGUodCxlfHxCdHQoKSksZGVwczpbW1ByLG5ldyBZbyxuZXcgSF1dfX1maW5kKHQpe2xldCBlPXRoaXMuZmFjdG9yaWVzLmZpbmQobz0+by5zdXBwb3J0cyh0KSk7aWYoZSlyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke3R9J2ApfX07UHIuXHUwMjc1cHJvdj1QdCh7dG9rZW46UHIscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpCdHR9KTtmdW5jdGlvbiBZTihuLHQsZSxvLGk9ITEpe2Zvcig7ZSE9PW51bGw7KXtuZ0Rldk1vZGUmJkdjKGUsNjMpO2xldCBhPXRbZS5pbmRleF07aWYoYSE9PW51bGwmJm8ucHVzaChacyhhKSksWkMoYSkpZm9yKGxldCBzPUJsO3M8YS5sZW5ndGg7cysrKXtsZXQgbD1hW3NdLGM9bFtSbl0uZmlyc3RDaGlsZDtjIT09bnVsbCYmWU4obFtSbl0sbCxjLG8pfWxldCByPWUudHlwZTtpZihyJjgpWU4obix0LGUuY2hpbGQsbyk7ZWxzZSBpZihyJjMyKXtsZXQgcz1DQihlLHQpLGw7Zm9yKDtsPXMoKTspby5wdXNoKGwpfWVsc2UgaWYociYxNil7bGV0IHM9VkoodCxlKTtpZihBcnJheS5pc0FycmF5KHMpKW8ucHVzaCguLi5zKTtlbHNle2xldCBsPURSKHRbYmddKTtuZ0Rldk1vZGUmJlRLKGwpLFlOKGxbUm5dLGwscyxvLCEwKX19ZT1pP2UucHJvamVjdGlvbk5leHQ6ZS5uZXh0fXJldHVybiBvfXZhciBndj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2xWaWV3PXQsdGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3PWUsdGhpcy5fYXBwUmVmPW51bGwsdGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITF9Z2V0IHJvb3ROb2Rlcygpe2xldCB0PXRoaXMuX2xWaWV3LGU9dFtSbl07cmV0dXJuIFlOKGUsdCxlLmZpcnN0Q2hpbGQsW10pfWdldCBjb250ZXh0KCl7cmV0dXJuIHRoaXMuX2xWaWV3W1RyXX1zZXQgY29udGV4dCh0KXt0aGlzLl9sVmlld1tUcl09dH1nZXQgZGVzdHJveWVkKCl7cmV0dXJuKHRoaXMuX2xWaWV3W1FvXSYyNTYpPT09MjU2fWRlc3Ryb3koKXtpZih0aGlzLl9hcHBSZWYpdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk7ZWxzZSBpZih0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcil7bGV0IHQ9dGhpcy5fbFZpZXdbeXJdO2lmKFpDKHQpKXtsZXQgZT10W1hOXSxvPWU/ZS5pbmRleE9mKHRoaXMpOi0xO28+LTEmJihuZ0Rldk1vZGUmJmlvKG8sdC5pbmRleE9mKHRoaXMuX2xWaWV3KS1CbCwiQW4gYXR0YWNoZWQgdmlldyBzaG91bGQgYmUgaW4gdGhlIHNhbWUgcG9zaXRpb24gd2l0aGluIGl0cyBjb250YWluZXIgYXMgaXRzIFZpZXdSZWYgaW4gdGhlIFZJRVdfUkVGUyBhcnJheS4iKSxYTCh0LG8pLG5UKGUsbykpfXRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyPSExfUFKKHRoaXMuX2xWaWV3W1JuXSx0aGlzLl9sVmlldyl9b25EZXN0cm95KHQpe3MkKHRoaXMuX2xWaWV3W1JuXSx0aGlzLl9sVmlldyxudWxsLHQpfW1hcmtGb3JDaGVjaygpe0FCKHRoaXMuX2NkUmVmSW5qZWN0aW5nVmlld3x8dGhpcy5fbFZpZXcpfWRldGFjaCgpe3RoaXMuX2xWaWV3W1FvXSY9LTEyOX1yZWF0dGFjaCgpe3RoaXMuX2xWaWV3W1FvXXw9MTI4fWRldGVjdENoYW5nZXMoKXtEQih0aGlzLl9sVmlld1tSbl0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1jaGVja05vQ2hhbmdlcygpe2hPdCh0aGlzLl9sVmlld1tSbl0sdGhpcy5fbFZpZXcsdGhpcy5jb250ZXh0KX1hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fYXR0YWNoZWRUb1ZpZXdDb250YWluZXI9ITB9ZGV0YWNoRnJvbUFwcFJlZigpe3RoaXMuX2FwcFJlZj1udWxsLHRidCh0aGlzLl9sVmlld1tSbl0sdGhpcy5fbFZpZXcpfWF0dGFjaFRvQXBwUmVmKHQpe2lmKHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyKXRocm93IG5ldyBFcnJvcigiVGhpcyB2aWV3IGlzIGFscmVhZHkgYXR0YWNoZWQgdG8gYSBWaWV3Q29udGFpbmVyISIpO3RoaXMuX2FwcFJlZj10fX0seTg9Y2xhc3MgZXh0ZW5kcyBndntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl92aWV3PXR9ZGV0ZWN0Q2hhbmdlcygpe2gkKHRoaXMuX3ZpZXcpfWNoZWNrTm9DaGFuZ2VzKCl7X090KHRoaXMuX3ZpZXcpfWdldCBjb250ZXh0KCl7cmV0dXJuIG51bGx9fTt2YXIgU3h0PUV4dDt2YXIgUnh0PVN4dCxUdD1jbGFzc3t9O1R0Ll9fTkdfRUxFTUVOVF9JRF9fPVJ4dDtmdW5jdGlvbiBFeHQobil7cmV0dXJuIGt4dChUcygpLHZlKCksKG4mMTYpPT09MTYpfWZ1bmN0aW9uIGt4dChuLHQsZSl7aWYoWTgobikmJiFlKXtsZXQgbz1jXyhuLmluZGV4LHQpO3JldHVybiBuZXcgZ3YobyxvKX1lbHNlIGlmKG4udHlwZSY0Nyl7bGV0IG89dFtiZ107cmV0dXJuIG5ldyBndihvLHQpfXJldHVybiBudWxsfXZhciBOeHQ9W25ldyBoVF0sVHh0PVtuZXcgZ1RdLEF4dD1uZXcga28oVHh0KSxEeHQ9bmV3IFByKE54dCk7dmFyIEl4dD1MeHQ7dmFyIHp4dD1JeHQsa2U9Y2xhc3N7fTtrZS5fX05HX0VMRU1FTlRfSURfXz16eHQ7dmFyIEh4dD1rZSxGeHQ9Y2xhc3MgZXh0ZW5kcyBIeHR7Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKCksdGhpcy5fZGVjbGFyYXRpb25MVmlldz10LHRoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lcj1lLHRoaXMuZWxlbWVudFJlZj1vfWNyZWF0ZUVtYmVkZGVkVmlldyh0KXtsZXQgZT10aGlzLl9kZWNsYXJhdGlvblRDb250YWluZXIudFZpZXdzLG89RFQodGhpcy5fZGVjbGFyYXRpb25MVmlldyxlLHQsMTYsbnVsbCxlLmRlY2xUTm9kZSxudWxsLG51bGwsbnVsbCxudWxsKSxpPXRoaXMuX2RlY2xhcmF0aW9uTFZpZXdbdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLmluZGV4XTtuZ0Rldk1vZGUmJnhiKGkpLG9bd1JdPWk7bGV0IGE9dGhpcy5fZGVjbGFyYXRpb25MVmlld1tfZ107cmV0dXJuIGEhPT1udWxsJiYob1tfZ109YS5jcmVhdGVFbWJlZGRlZFZpZXcoZSkpLElUKGUsbyx0KSxuZXcgZ3Yobyl9fTtmdW5jdGlvbiBMeHQoKXtyZXR1cm4gWFQoVHMoKSx2ZSgpKX1mdW5jdGlvbiBYVChuLHQpe3JldHVybiBuLnR5cGUmND8obmdEZXZNb2RlJiZ1bihuLnRWaWV3cywiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSxuZXcgRnh0KHQsbixKdyhuLHQpKSk6bnVsbH12YXIgUGI9Y2xhc3N7fSx4OD1jbGFzc3t9O3ZhciBCeHQ9anh0O3ZhciBWeHQ9Qnh0LF9lPWNsYXNze307X2UuX19OR19FTEVNRU5UX0lEX189Vnh0O2Z1bmN0aW9uIGp4dCgpe2xldCBuPVRzKCk7cmV0dXJuIGp0dChuLHZlKCkpfXZhciBVeHQ9X2UsVnR0PWNsYXNzIGV4dGVuZHMgVXh0e2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcigpLHRoaXMuX2xDb250YWluZXI9dCx0aGlzLl9ob3N0VE5vZGU9ZSx0aGlzLl9ob3N0TFZpZXc9b31nZXQgZWxlbWVudCgpe3JldHVybiBKdyh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdExWaWV3KX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IGZ5KHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpfWdldCBwYXJlbnRJbmplY3Rvcigpe2xldCB0PUVUKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0TFZpZXcpO2lmKCRLKHQpKXtsZXQgZT1Ddyh0LHRoaXMuX2hvc3RMVmlldyksbz1fdyh0KTtuZ0Rldk1vZGUmJlo4KGUsbyk7bGV0IGk9ZVtSbl0uZGF0YVtvKzhdO3JldHVybiBuZXcgZnkoaSxlKX1lbHNlIHJldHVybiBuZXcgZnkobnVsbCx0aGlzLl9ob3N0TFZpZXcpfWNsZWFyKCl7Zm9yKDt0aGlzLmxlbmd0aD4wOyl0aGlzLnJlbW92ZSh0aGlzLmxlbmd0aC0xKX1nZXQodCl7bGV0IGU9aUsodGhpcy5fbENvbnRhaW5lcik7cmV0dXJuIGUhPT1udWxsJiZlW3RdfHxudWxsfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbENvbnRhaW5lci5sZW5ndGgtQmx9Y3JlYXRlRW1iZWRkZWRWaWV3KHQsZSxvKXtsZXQgaT10LmNyZWF0ZUVtYmVkZGVkVmlldyhlfHx7fSk7cmV0dXJuIHRoaXMuaW5zZXJ0KGksbyksaX1jcmVhdGVDb21wb25lbnQodCxlLG8saSxhKXtsZXQgcj1vfHx0aGlzLnBhcmVudEluamVjdG9yO2lmKCFhJiZ0Lm5nTW9kdWxlPT1udWxsJiZyKXtsZXQgbD1yLmdldChQYixudWxsKTtsJiYoYT1sKX1sZXQgcz10LmNyZWF0ZShyLGksdm9pZCAwLGEpO3JldHVybiB0aGlzLmluc2VydChzLmhvc3RWaWV3LGUpLHN9aW5zZXJ0KHQsZSl7bGV0IG89dC5fbFZpZXcsaT1vW1JuXTtpZihuZ0Rldk1vZGUmJnQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGluc2VydCBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEiKTtpZihHMHQobykpe2xldCBtPXRoaXMuaW5kZXhPZih0KTtpZihtIT09LTEpdGhpcy5kZXRhY2gobSk7ZWxzZXtsZXQgZj1vW3lyXTtuZ0Rldk1vZGUmJmlvKFpDKGYpLCEwLCJBbiBhdHRhY2hlZCB2aWV3IHNob3VsZCBoYXZlIGl0cyBQQVJFTlQgcG9pbnQgdG8gYSBjb250YWluZXIuIik7bGV0IHA9bmV3IFZ0dChmLGZbWWNdLGZbeXJdKTtwLmRldGFjaChwLmluZGV4T2YodCkpfX1sZXQgYT10aGlzLl9hZGp1c3RJbmRleChlKSxyPXRoaXMuX2xDb250YWluZXI7bmJ0KGksbyxyLGEpO2xldCBzPUtMKGEsciksbD1vW1BvXSxjPVRUKGwsclt2VF0pO3JldHVybiBjIT09bnVsbCYmJE10KGkscltZY10sbCxvLGMscyksdC5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYoKSxySihoTChyKSxhLHQpLHR9bW92ZSh0LGUpe2lmKG5nRGV2TW9kZSYmdC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbW92ZSBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEiKTtyZXR1cm4gdGhpcy5pbnNlcnQodCxlKX1pbmRleE9mKHQpe2xldCBlPWlLKHRoaXMuX2xDb250YWluZXIpO3JldHVybiBlIT09bnVsbD9lLmluZGV4T2YodCk6LTF9cmVtb3ZlKHQpe2xldCBlPXRoaXMuX2FkanVzdEluZGV4KHQsLTEpLG89WEwodGhpcy5fbENvbnRhaW5lcixlKTtvJiYoblQoaEwodGhpcy5fbENvbnRhaW5lciksZSksQUoob1tSbl0sbykpfWRldGFjaCh0KXtsZXQgZT10aGlzLl9hZGp1c3RJbmRleCh0LC0xKSxvPVhMKHRoaXMuX2xDb250YWluZXIsZSk7cmV0dXJuIG8mJm5UKGhMKHRoaXMuX2xDb250YWluZXIpLGUpIT1udWxsP25ldyBndihvKTpudWxsfV9hZGp1c3RJbmRleCh0LGU9MCl7cmV0dXJuIHQ9PW51bGw/dGhpcy5sZW5ndGgrZToobmdEZXZNb2RlJiYoUncodCwtMSxgVmlld1JlZiBpbmRleCBtdXN0IGJlIHBvc2l0aXZlLCBnb3QgJHt0fWApLGh5KHQsdGhpcy5sZW5ndGgrMStlLCJpbmRleCIpKSx0KX19O2Z1bmN0aW9uIGlLKG4pe3JldHVybiBuW1hOXX1mdW5jdGlvbiBoTChuKXtyZXR1cm4gbltYTl18fChuW1hOXT1bXSl9ZnVuY3Rpb24ganR0KG4sdCl7bmdEZXZNb2RlJiZHYyhuLDE1KTtsZXQgZSxvPXRbbi5pbmRleF07aWYoWkMobykpZT1vO2Vsc2V7bGV0IGk7aWYobi50eXBlJjgpaT1acyhvKTtlbHNle2xldCBhPXRbUG9dO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLGk9YS5jcmVhdGVDb21tZW50KG5nRGV2TW9kZT8iY29udGFpbmVyIjoiIik7bGV0IHI9eWcobix0KSxzPVRUKGEscik7cHYoYSxzLGksc2J0KGEsciksITEpfXRbbi5pbmRleF09ZT1nJChvLHQsaSxuKSx6VCh0LGUpfXJldHVybiBuZXcgVnR0KGUsbix0KX12YXIgX0w9bmV3IE1hcDtmdW5jdGlvbiBOYihuKXtsZXQgdD1fTC5nZXQobik7cmV0dXJuIHR8fCh0PU9vKG4pKyJfIitfTC5zaXplLF9MLnNldChuLHQpKSx0fXZhciBpbGU9TmIoJGUpLGFsZT1OYihKTykscmxlPU5iKFBiKTt2YXIgc2xlPU5iKG9hKSxsbGU9TmIoTCksY2xlPU5iKF9lKSxtbGU9TmIoa2UpLGZsZT1OYihUdCkscGxlPU5iKCRlKSxkbGU9TmIoSk8pO3ZhciBDTD17fTt2YXIgX1Q9Y2xhc3MgZXh0ZW5kcyBfb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubmdNb2R1bGU9dH1yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KXtuZ0Rldk1vZGUmJlQwdCh0KTtsZXQgZT1WZih0KTtyZXR1cm4gbmV3IENUKGUsdGhpcy5uZ01vZHVsZSl9fTtmdW5jdGlvbiBhSyhuKXtsZXQgdD1bXTtmb3IobGV0IGUgaW4gbilpZihuLmhhc093blByb3BlcnR5KGUpKXtsZXQgbz1uW2VdO3QucHVzaCh7cHJvcE5hbWU6byx0ZW1wbGF0ZU5hbWU6ZX0pfXJldHVybiB0fWZ1bmN0aW9uIFl4dChuKXtsZXQgdD1uLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT0ic3ZnIj96Szp0PT09Im1hdGgiP0hLOm51bGx9dmFyIEd4dD1uZXcgeXQoIlNDSEVEVUxFUl9UT0tFTiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9PlJKfSk7ZnVuY3Rpb24gV3h0KG4sdCl7cmV0dXJue2dldDooZSxvLGkpPT57bGV0IGE9bi5nZXQoZSxDTCxpKTtyZXR1cm4gYSE9PUNMfHxvPT09Q0w/YTp0LmdldChlLG8saSl9fX12YXIgQ1Q9Y2xhc3MgZXh0ZW5kcyBwVHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5jb21wb25lbnREZWY9dCx0aGlzLm5nTW9kdWxlPWUsdGhpcy5jb21wb25lbnRUeXBlPXQudHlwZSx0aGlzLnNlbGVjdG9yPWJidCh0LnNlbGVjdG9ycyksdGhpcy5uZ0NvbnRlbnRTZWxlY3RvcnM9dC5uZ0NvbnRlbnRTZWxlY3RvcnM/dC5uZ0NvbnRlbnRTZWxlY3RvcnM6W10sdGhpcy5pc0JvdW5kVG9Nb2R1bGU9ISFlfWdldCBpbnB1dHMoKXtyZXR1cm4gYUsodGhpcy5jb21wb25lbnREZWYuaW5wdXRzKX1nZXQgb3V0cHV0cygpe3JldHVybiBhSyh0aGlzLmNvbXBvbmVudERlZi5vdXRwdXRzKX1jcmVhdGUodCxlLG8saSl7aT1pfHx0aGlzLm5nTW9kdWxlO2xldCBhPWk/V3h0KHQsaS5pbmplY3Rvcik6dCxyPWEuZ2V0KFVmLGowdCkscz1hLmdldCh3dyxudWxsKSxsPXIuY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksYz10aGlzLmNvbXBvbmVudERlZi5zZWxlY3RvcnNbMF1bMF18fCJkaXYiLG09bz9XYnQobCxvLHRoaXMuY29tcG9uZW50RGVmLmVuY2Fwc3VsYXRpb24pOlBCKHIuY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksYyxZeHQoYykpLGY9dGhpcy5jb21wb25lbnREZWYub25QdXNoPzU3Njo1MjgscD1ZT3QoKSxnPUVCKDAsbnVsbCxudWxsLDEsMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpLF89RFQobnVsbCxnLHAsZixudWxsLG51bGwscixsLHMsYSk7bkIoXyk7bGV0IE0seTt0cnl7bGV0IE89ak90KG0sdGhpcy5jb21wb25lbnREZWYsXyxyLGwpO2lmKG0paWYobylKTihsLG0sWyJuZy12ZXJzaW9uIix4eHQuZnVsbF0pO2Vsc2V7bGV0e2F0dHJzOmIsY2xhc3NlczpSfT1PYnQodGhpcy5jb21wb25lbnREZWYuc2VsZWN0b3JzWzBdKTtiJiZKTihsLG0sYiksUiYmUi5sZW5ndGg+MCYmeEIobCxtLFIuam9pbigiICIpKX1pZih5PUxLKGcsZ2kpLGUhPT12b2lkIDApe2xldCBiPXkucHJvamVjdGlvbj1bXTtmb3IobGV0IFI9MDtSPHRoaXMubmdDb250ZW50U2VsZWN0b3JzLmxlbmd0aDtSKyspe2xldCBFPWVbUl07Yi5wdXNoKEUhPW51bGw/QXJyYXkuZnJvbShFKTpudWxsKX19TT1VT3QoTyx0aGlzLmNvbXBvbmVudERlZixfLHAsW0dPdF0pLElUKGcsXyxudWxsKX1maW5hbGx5e29CKCl9cmV0dXJuIG5ldyB2OCh0aGlzLmNvbXBvbmVudFR5cGUsTSxKdyh5LF8pLF8seSl9fSxnbGU9bmV3IF9UO3ZhciB2OD1jbGFzcyBleHRlbmRzIGg4e2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7c3VwZXIoKSx0aGlzLmxvY2F0aW9uPW8sdGhpcy5fcm9vdExWaWV3PWksdGhpcy5fdE5vZGU9YSx0aGlzLmluc3RhbmNlPWUsdGhpcy5ob3N0Vmlldz10aGlzLmNoYW5nZURldGVjdG9yUmVmPW5ldyB5OChpKSx0aGlzLmNvbXBvbmVudFR5cGU9dH1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IGZ5KHRoaXMuX3ROb2RlLHRoaXMuX3Jvb3RMVmlldyl9ZGVzdHJveSgpe3RoaXMuaG9zdFZpZXcuZGVzdHJveSgpfW9uRGVzdHJveSh0KXt0aGlzLmhvc3RWaWV3Lm9uRGVzdHJveSh0KX19O2Z1bmN0aW9uIEMobix0LGUsbyl7cmV0dXJuIFB5KCgpPT57bGV0IGk9bjt0IT09bnVsbCYmKGkuaGFzT3duUHJvcGVydHkoImRlY29yYXRvcnMiKSYmaS5kZWNvcmF0b3JzIT09dm9pZCAwP2kuZGVjb3JhdG9ycy5wdXNoKC4uLnQpOmkuZGVjb3JhdG9ycz10KSxlIT09bnVsbCYmKGkuY3RvclBhcmFtZXRlcnM9ZSksbyE9PW51bGwmJihpLmhhc093blByb3BlcnR5KCJwcm9wRGVjb3JhdG9ycyIpJiZpLnByb3BEZWNvcmF0b3JzIT09dm9pZCAwP2kucHJvcERlY29yYXRvcnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkucHJvcERlY29yYXRvcnMpLG8pOmkucHJvcERlY29yYXRvcnM9byl9KX12YXIgcks9bmV3IE1hcDtmdW5jdGlvbiBxeHQobix0LGUpe2lmKHQmJnQhPT1lKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIG1vZHVsZSByZWdpc3RlcmVkIGZvciAke259IC0gJHtPbyh0KX0gdnMgJHtPbyh0Lm5hbWUpfWApfWZ1bmN0aW9uIFp4dChuKXtsZXQgdD1uZXcgU2V0O2Uobik7ZnVuY3Rpb24gZShvKXtsZXQgaT1zXyhvLCEwKSxhPWkuaWQ7aWYoYSE9PW51bGwpe2xldCBzPXJLLmdldChhKTtxeHQoYSxzLG8pLHJLLnNldChhLG8pfWxldCByPU1iKGkuaW1wb3J0cyk7Zm9yKGxldCBzIG9mIHIpdC5oYXMocyl8fCh0LmFkZChzKSxlKHMpKX19dmFyIHc4PWNsYXNzIGV4dGVuZHMgUGJ7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX3BhcmVudD1lLHRoaXMuX2Jvb3RzdHJhcENvbXBvbmVudHM9W10sdGhpcy5pbmplY3Rvcj10aGlzLHRoaXMuZGVzdHJveUNicz1bXSx0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1uZXcgX1QodGhpcyk7bGV0IG89c18odCk7bmdEZXZNb2RlJiZ1bihvLGBOZ01vZHVsZSAnJHtPbyh0KX0nIGlzIG5vdCBhIHN1YnR5cGUgb2YgJ05nTW9kdWxlVHlwZScuYCk7bGV0IGk9UzB0KHQpO2kmJlZCKGkpLHRoaXMuX2Jvb3RzdHJhcENvbXBvbmVudHM9TWIoby5ib290c3RyYXApLHRoaXMuX3IzSW5qZWN0b3I9UCQodCxlLFt7cHJvdmlkZTpQYix1c2VWYWx1ZTp0aGlzfSx7cHJvdmlkZTpfbyx1c2VWYWx1ZTp0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcn1dLE9vKHQpKSx0aGlzLl9yM0luamVjdG9yLl9yZXNvbHZlSW5qZWN0b3JEZWZUeXBlcygpLHRoaXMuaW5zdGFuY2U9dGhpcy5nZXQodCl9Z2V0KHQsZT0kZS5USFJPV19JRl9OT1RfRk9VTkQsbz1OaS5EZWZhdWx0KXtyZXR1cm4gdD09PSRlfHx0PT09UGJ8fHQ9PT1KTz90aGlzOnRoaXMuX3IzSW5qZWN0b3IuZ2V0KHQsZSxvKX1kZXN0cm95KCl7bmdEZXZNb2RlJiZ1bih0aGlzLmRlc3Ryb3lDYnMsIk5nTW9kdWxlIGFscmVhZHkgZGVzdHJveWVkIik7bGV0IHQ9dGhpcy5fcjNJbmplY3RvcjshdC5kZXN0cm95ZWQmJnQuZGVzdHJveSgpLHRoaXMuZGVzdHJveUNicy5mb3JFYWNoKGU9PmUoKSksdGhpcy5kZXN0cm95Q2JzPW51bGx9b25EZXN0cm95KHQpe25nRGV2TW9kZSYmdW4odGhpcy5kZXN0cm95Q2JzLCJOZ01vZHVsZSBhbHJlYWR5IGRlc3Ryb3llZCIpLHRoaXMuZGVzdHJveUNicy5wdXNoKHQpfX0sTVQ9Y2xhc3MgZXh0ZW5kcyB4OHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubW9kdWxlVHlwZT10LHNfKHQpIT09bnVsbCYmWnh0KHQpfWNyZWF0ZSh0KXtyZXR1cm4gbmV3IHc4KHRoaXMubW9kdWxlVHlwZSx0KX19O2Z1bmN0aW9uIHd5KG4sdCxlKXtsZXQgbz1VbSgpK24saT12ZSgpO3JldHVybiBpW29dPT09JG4/RWIoaSxvLGU/dC5jYWxsKGUpOnQoKSk6SFIoaSxvKX1mdW5jdGlvbiBhbyhuLHQsZSxvKXtyZXR1cm4gVXR0KHZlKCksVW0oKSxuLHQsZSxvKX1mdW5jdGlvbiBobChuLHQsZSxvLGkpe3JldHVybiBZdHQodmUoKSxVbSgpLG4sdCxlLG8saSl9ZnVuY3Rpb24gakIobix0LGUsbyxpLGEpe3JldHVybiBHdHQodmUoKSxVbSgpLG4sdCxlLG8saSxhKX1mdW5jdGlvbiBRVChuLHQsZSxvLGksYSxyKXtyZXR1cm4gV3R0KHZlKCksVW0oKSxuLHQsZSxvLGksYSxyKX1mdW5jdGlvbiBYeHQobix0LGUsbyxpLGEscixzKXtsZXQgbD1VbSgpK24sYz12ZSgpLG09bV8oYyxsLGUsbyxpLGEpO3JldHVybiBXYyhjLGwrNCxyKXx8bT9FYihjLGwrNSxzP3QuY2FsbChzLGUsbyxpLGEscik6dChlLG8saSxhLHIpKTpIUihjLGwrNSl9ZnVuY3Rpb24gUXh0KG4sdCxlLG8saSxhLHIscyxsKXtsZXQgYz1VbSgpK24sbT12ZSgpLGY9bV8obSxjLGUsbyxpLGEpO3JldHVybiBkdihtLGMrNCxyLHMpfHxmP0ViKG0sYys2LGw/dC5jYWxsKGwsZSxvLGksYSxyLHMpOnQoZSxvLGksYSxyLHMpKTpIUihtLGMrNil9ZnVuY3Rpb24gS3h0KG4sdCxlLG8saSxhLHIscyxsLGMpe2xldCBtPVVtKCkrbixmPXZlKCkscD1tXyhmLG0sZSxvLGksYSk7cmV0dXJuIEZUKGYsbSs0LHIscyxsKXx8cD9FYihmLG0rNyxjP3QuY2FsbChjLGUsbyxpLGEscixzLGwpOnQoZSxvLGksYSxyLHMsbCkpOkhSKGYsbSs3KX1mdW5jdGlvbiBKeHQobix0LGUsbyxpLGEscixzLGwsYyxtKXtsZXQgZj1VbSgpK24scD12ZSgpLGc9bV8ocCxmLGUsbyxpLGEpO3JldHVybiBtXyhwLGYrNCxyLHMsbCxjKXx8Zz9FYihwLGYrOCxtP3QuY2FsbChtLGUsbyxpLGEscixzLGwsYyk6dChlLG8saSxhLHIscyxsLGMpKTpIUihwLGYrOCl9ZnVuY3Rpb24gJHh0KG4sdCxlLG8pe3JldHVybiBxdHQodmUoKSxVbSgpLG4sdCxlLG8pfWZ1bmN0aW9uIFZSKG4sdCl7bmdEZXZNb2RlJiZBcihuLHQpO2xldCBlPW5bdF07cmV0dXJuIGU9PT0kbj92b2lkIDA6ZX1mdW5jdGlvbiBVdHQobix0LGUsbyxpLGEpe2xldCByPXQrZTtyZXR1cm4gV2MobixyLGkpP0ViKG4scisxLGE/by5jYWxsKGEsaSk6byhpKSk6VlIobixyKzEpfWZ1bmN0aW9uIFl0dChuLHQsZSxvLGksYSxyKXtsZXQgcz10K2U7cmV0dXJuIGR2KG4scyxpLGEpP0ViKG4scysyLHI/by5jYWxsKHIsaSxhKTpvKGksYSkpOlZSKG4scysyKX1mdW5jdGlvbiBHdHQobix0LGUsbyxpLGEscixzKXtsZXQgbD10K2U7cmV0dXJuIEZUKG4sbCxpLGEscik/RWIobixsKzMscz9vLmNhbGwocyxpLGEscik6byhpLGEscikpOlZSKG4sbCszKX1mdW5jdGlvbiBXdHQobix0LGUsbyxpLGEscixzLGwpe2xldCBjPXQrZTtyZXR1cm4gbV8obixjLGksYSxyLHMpP0ViKG4sYys0LGw/by5jYWxsKGwsaSxhLHIscyk6byhpLGEscixzKSk6VlIobixjKzQpfWZ1bmN0aW9uIHF0dChuLHQsZSxvLGksYSl7bGV0IHI9dCtlLHM9ITE7Zm9yKGxldCBsPTA7bDxpLmxlbmd0aDtsKyspV2MobixyKyssaVtsXSkmJihzPSEwKTtyZXR1cm4gcz9FYihuLHIsby5hcHBseShhLGkpKTpWUihuLHIpfWZ1bmN0aW9uIFgobix0KXtsZXQgZT1DbygpLG8saT1uK2dpO2UuZmlyc3RDcmVhdGVQYXNzPyhvPXR2dCh0LGUucGlwZVJlZ2lzdHJ5KSxlLmRhdGFbaV09byxvLm9uRGVzdHJveSYmKGUuZGVzdHJveUhvb2tzfHwoZS5kZXN0cm95SG9va3M9W10pKS5wdXNoKGksby5vbkRlc3Ryb3kpKTpvPWUuZGF0YVtpXTtsZXQgYT1vLmZhY3Rvcnl8fChvLmZhY3Rvcnk9bXYoby50eXBlLCEwKSkscj1feSh2KTt0cnl7bGV0IHM9dFQoITEpLGw9YSgpO3JldHVybiB0VChzKSxuUHQoZSx2ZSgpLGksbCksbH1maW5hbGx5e195KHIpfX1mdW5jdGlvbiB0dnQobix0KXtpZih0KWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKXtsZXQgbz10W2VdO2lmKG49PT1vLm5hbWUpcmV0dXJuIG99dGhyb3cgbmV3IHliKCIzMDIiLGBUaGUgcGlwZSAnJHtufScgY291bGQgbm90IGJlIGZvdW5kIWApfWZ1bmN0aW9uIFEobix0LGUpe2xldCBvPW4rZ2ksaT12ZSgpLGE9TncoaSxvKTtyZXR1cm4gVVIoaSxqUihpLG8pP1V0dChpLFVtKCksdCxhLnRyYW5zZm9ybSxlLGEpOmEudHJhbnNmb3JtKGUpKX1mdW5jdGlvbiBodihuLHQsZSxvKXtsZXQgaT1uK2dpLGE9dmUoKSxyPU53KGEsaSk7cmV0dXJuIFVSKGEsalIoYSxpKT9ZdHQoYSxVbSgpLHQsci50cmFuc2Zvcm0sZSxvLHIpOnIudHJhbnNmb3JtKGUsbykpfWZ1bmN0aW9uIFVCKG4sdCxlLG8saSl7bGV0IGE9bitnaSxyPXZlKCkscz1OdyhyLGEpO3JldHVybiBVUihyLGpSKHIsYSk/R3R0KHIsVW0oKSx0LHMudHJhbnNmb3JtLGUsbyxpLHMpOnMudHJhbnNmb3JtKGUsbyxpKSl9ZnVuY3Rpb24gZXZ0KG4sdCxlLG8saSxhKXtsZXQgcj1uK2dpLHM9dmUoKSxsPU53KHMscik7cmV0dXJuIFVSKHMsalIocyxyKT9XdHQocyxVbSgpLHQsbC50cmFuc2Zvcm0sZSxvLGksYSxsKTpsLnRyYW5zZm9ybShlLG8saSxhKSl9ZnVuY3Rpb24gbnZ0KG4sdCxlKXtsZXQgbz1uK2dpLGk9dmUoKSxhPU53KGksbyk7cmV0dXJuIFVSKGksalIoaSxvKT9xdHQoaSxVbSgpLHQsYS50cmFuc2Zvcm0sZSxhKTphLnRyYW5zZm9ybS5hcHBseShhLGUpKX1mdW5jdGlvbiBqUihuLHQpe3JldHVybiBuW1JuXS5kYXRhW3RdLnB1cmV9ZnVuY3Rpb24gVVIobix0KXtpZihkeS5pc1dyYXBwZWQodCkpe3Q9ZHkudW53cmFwKHQpO2xldCBlPUxpKCk7bltlXT0kbn1yZXR1cm4gdH12YXIgUzg9Y2xhc3MgZXh0ZW5kcyBKdHtjb25zdHJ1Y3Rvcih0PSExKXtzdXBlcigpLHRoaXMuX19pc0FzeW5jPXR9ZW1pdCh0KXtzdXBlci5uZXh0KHQpfXN1YnNjcmliZSh0LGUsbyl7dmFyIGksYSxyO2xldCBzPXQsbD1lfHwoKCk9Pm51bGwpLGM9bztpZih0JiZ0eXBlb2YgdD09Im9iamVjdCIpe2xldCBmPXQ7cz0oaT1mLm5leHQpPT09bnVsbHx8aT09PXZvaWQgMD92b2lkIDA6aS5iaW5kKGYpLGw9KGE9Zi5lcnJvcik9PT1udWxsfHxhPT09dm9pZCAwP3ZvaWQgMDphLmJpbmQoZiksYz0ocj1mLmNvbXBsZXRlKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIuYmluZChmKX10aGlzLl9faXNBc3luYyYmKGw9TUwobCkscyYmKHM9TUwocykpLGMmJihjPU1MKGMpKSk7bGV0IG09c3VwZXIuc3Vic2NyaWJlKHtuZXh0OnMsZXJyb3I6bCxjb21wbGV0ZTpjfSk7cmV0dXJuIHQgaW5zdGFuY2VvZiBFbyYmdC5hZGQobSksbX19O2Z1bmN0aW9uIE1MKG4pe3JldHVybiB0PT57c2V0VGltZW91dChuLHZvaWQgMCx0KX19dmFyICQ9Uzg7ZnVuY3Rpb24gb3Z0KCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbUHcoKV0oKX12YXIgZl89Y2xhc3N7Y29uc3RydWN0b3IodD0hMSl7dGhpcy5fZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk9dCx0aGlzLmRpcnR5PSEwLHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5fY2hhbmdlc0RldGVjdGVkPSExLHRoaXMuX2NoYW5nZXM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMuZmlyc3Q9dm9pZCAwLHRoaXMubGFzdD12b2lkIDA7bGV0IGU9UHcoKSxvPWZfLnByb3RvdHlwZTtvW2VdfHwob1tlXT1vdnQpfWdldCBjaGFuZ2VzKCl7cmV0dXJuIHRoaXMuX2NoYW5nZXN8fCh0aGlzLl9jaGFuZ2VzPW5ldyAkKX1nZXQodCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHNbdF19bWFwKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLm1hcCh0KX1maWx0ZXIodCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmlsdGVyKHQpfWZpbmQodCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmluZCh0KX1yZWR1Y2UodCxlKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5yZWR1Y2UodCxlKX1mb3JFYWNoKHQpe3RoaXMuX3Jlc3VsdHMuZm9yRWFjaCh0KX1zb21lKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLnNvbWUodCl9dG9BcnJheSgpe3JldHVybiB0aGlzLl9yZXN1bHRzLnNsaWNlKCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy50b1N0cmluZygpfXJlc2V0KHQsZSl7bGV0IG89dGhpcztvLmRpcnR5PSExO2xldCBpPWlfKHQpOyh0aGlzLl9jaGFuZ2VzRGV0ZWN0ZWQ9IVJDdChvLl9yZXN1bHRzLGksZSkpJiYoby5fcmVzdWx0cz1pLG8ubGVuZ3RoPWkubGVuZ3RoLG8ubGFzdD1pW3RoaXMubGVuZ3RoLTFdLG8uZmlyc3Q9aVswXSl9bm90aWZ5T25DaGFuZ2VzKCl7dGhpcy5fY2hhbmdlcyYmKHRoaXMuX2NoYW5nZXNEZXRlY3RlZHx8IXRoaXMuX2VtaXREaXN0aW5jdENoYW5nZXNPbmx5KSYmdGhpcy5fY2hhbmdlcy5lbWl0KHRoaXMpfXNldERpcnR5KCl7dGhpcy5kaXJ0eT0hMH1kZXN0cm95KCl7dGhpcy5jaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5jaGFuZ2VzLnVuc3Vic2NyaWJlKCl9fTt2YXIgaXZ0PTE7dmFyIGF2dD0xO3ZhciB1bGU9aXZ0K21DdCtpQithdnQsQ1I9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5xdWVyeUxpc3Q9dCx0aGlzLm1hdGNoZXM9bnVsbH1jbG9uZSgpe3JldHVybiBuZXcgQ1IodGhpcy5xdWVyeUxpc3QpfXNldERpcnR5KCl7dGhpcy5xdWVyeUxpc3Quc2V0RGlydHkoKX19LE1SPWNsYXNze2NvbnN0cnVjdG9yKHQ9W10pe3RoaXMucXVlcmllcz10fWNyZWF0ZUVtYmVkZGVkVmlldyh0KXtsZXQgZT10LnF1ZXJpZXM7aWYoZSE9PW51bGwpe2xldCBvPXQuY29udGVudFF1ZXJpZXMhPT1udWxsP3QuY29udGVudFF1ZXJpZXNbMF06ZS5sZW5ndGgsaT1bXTtmb3IobGV0IGE9MDthPG87YSsrKXtsZXQgcj1lLmdldEJ5SW5kZXgoYSkscz10aGlzLnF1ZXJpZXNbci5pbmRleEluRGVjbGFyYXRpb25WaWV3XTtpLnB1c2gocy5jbG9uZSgpKX1yZXR1cm4gbmV3IE1SKGkpfXJldHVybiBudWxsfWluc2VydFZpZXcodCl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KX1kZXRhY2hWaWV3KHQpe3RoaXMuZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl9ZGlydHlRdWVyaWVzV2l0aE1hdGNoZXModCl7Zm9yKGxldCBlPTA7ZTx0aGlzLnF1ZXJpZXMubGVuZ3RoO2UrKylLdHQodCxlKS5tYXRjaGVzIT09bnVsbCYmdGhpcy5xdWVyaWVzW2VdLnNldERpcnR5KCl9fSxiVD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbz1udWxsKXt0aGlzLnByZWRpY2F0ZT10LHRoaXMuZmxhZ3M9ZSx0aGlzLnJlYWQ9b319LGJSPWNsYXNze2NvbnN0cnVjdG9yKHQ9W10pe3RoaXMucXVlcmllcz10fWVsZW1lbnRTdGFydCh0LGUpe25nRGV2TW9kZSYmT2codCwiUXVlcmllcyBzaG91bGQgY29sbGVjdCByZXN1bHRzIG9uIHRoZSBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtmb3IobGV0IG89MDtvPHRoaXMucXVlcmllcy5sZW5ndGg7bysrKXRoaXMucXVlcmllc1tvXS5lbGVtZW50U3RhcnQodCxlKX1lbGVtZW50RW5kKHQpe2ZvcihsZXQgZT0wO2U8dGhpcy5xdWVyaWVzLmxlbmd0aDtlKyspdGhpcy5xdWVyaWVzW2VdLmVsZW1lbnRFbmQodCl9ZW1iZWRkZWRUVmlldyh0KXtsZXQgZT1udWxsO2ZvcihsZXQgbz0wO288dGhpcy5sZW5ndGg7bysrKXtsZXQgaT1lIT09bnVsbD9lLmxlbmd0aDowLGE9dGhpcy5nZXRCeUluZGV4KG8pLmVtYmVkZGVkVFZpZXcodCxpKTthJiYoYS5pbmRleEluRGVjbGFyYXRpb25WaWV3PW8sZSE9PW51bGw/ZS5wdXNoKGEpOmU9W2FdKX1yZXR1cm4gZSE9PW51bGw/bmV3IGJSKGUpOm51bGx9dGVtcGxhdGUodCxlKXtuZ0Rldk1vZGUmJk9nKHQsIlF1ZXJpZXMgc2hvdWxkIGNvbGxlY3QgcmVzdWx0cyBvbiB0aGUgZmlyc3QgdGVtcGxhdGUgcGFzcyBvbmx5Iik7Zm9yKGxldCBvPTA7bzx0aGlzLnF1ZXJpZXMubGVuZ3RoO28rKyl0aGlzLnF1ZXJpZXNbb10udGVtcGxhdGUodCxlKX1nZXRCeUluZGV4KHQpe3JldHVybiBuZ0Rldk1vZGUmJkFyKHRoaXMucXVlcmllcyx0KSx0aGlzLnF1ZXJpZXNbdF19Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLnF1ZXJpZXMubGVuZ3RofXRyYWNrKHQpe3RoaXMucXVlcmllcy5wdXNoKHQpfX0sT1I9Y2xhc3N7Y29uc3RydWN0b3IodCxlPS0xKXt0aGlzLm1ldGFkYXRhPXQsdGhpcy5tYXRjaGVzPW51bGwsdGhpcy5pbmRleEluRGVjbGFyYXRpb25WaWV3PS0xLHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITEsdGhpcy5fYXBwbGllc1RvTmV4dE5vZGU9ITAsdGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg9ZX1lbGVtZW50U3RhcnQodCxlKXt0aGlzLmlzQXBwbHlpbmdUb05vZGUoZSkmJnRoaXMubWF0Y2hUTm9kZSh0LGUpfWVsZW1lbnRFbmQodCl7dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg9PT10LmluZGV4JiYodGhpcy5fYXBwbGllc1RvTmV4dE5vZGU9ITEpfXRlbXBsYXRlKHQsZSl7dGhpcy5lbGVtZW50U3RhcnQodCxlKX1lbWJlZGRlZFRWaWV3KHQsZSl7cmV0dXJuIHRoaXMuaXNBcHBseWluZ1RvTm9kZSh0KT8odGhpcy5jcm9zc2VzTmdUZW1wbGF0ZT0hMCx0aGlzLmFkZE1hdGNoKC10LmluZGV4LGUpLG5ldyBPUih0aGlzLm1ldGFkYXRhKSk6bnVsbH1pc0FwcGx5aW5nVG9Ob2RlKHQpe2lmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlJiYodGhpcy5tZXRhZGF0YS5mbGFncyYxKSE9PTEpe2xldCBlPXRoaXMuX2RlY2xhcmF0aW9uTm9kZUluZGV4LG89dC5wYXJlbnQ7Zm9yKDtvIT09bnVsbCYmby50eXBlJjgmJm8uaW5kZXghPT1lOylvPW8ucGFyZW50O3JldHVybiBlPT09KG8hPT1udWxsP28uaW5kZXg6LTEpfXJldHVybiB0aGlzLl9hcHBsaWVzVG9OZXh0Tm9kZX1tYXRjaFROb2RlKHQsZSl7bGV0IG89dGhpcy5tZXRhZGF0YS5wcmVkaWNhdGU7aWYoQXJyYXkuaXNBcnJheShvKSlmb3IobGV0IGk9MDtpPG8ubGVuZ3RoO2krKyl7bGV0IGE9b1tpXTt0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUscnZ0KGUsYSkpLHRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxqTihlLHQsYSwhMSwhMSkpfWVsc2Ugbz09PWtlP2UudHlwZSY0JiZ0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsLTEpOnRoaXMubWF0Y2hUTm9kZVdpdGhSZWFkT3B0aW9uKHQsZSxqTihlLHQsbywhMSwhMSkpfW1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LGUsbyl7aWYobyE9PW51bGwpe2xldCBpPXRoaXMubWV0YWRhdGEucmVhZDtpZihpIT09bnVsbClpZihpPT09THx8aT09PV9lfHxpPT09a2UmJmUudHlwZSY0KXRoaXMuYWRkTWF0Y2goZS5pbmRleCwtMik7ZWxzZXtsZXQgYT1qTihlLHQsaSwhMSwhMSk7YSE9PW51bGwmJnRoaXMuYWRkTWF0Y2goZS5pbmRleCxhKX1lbHNlIHRoaXMuYWRkTWF0Y2goZS5pbmRleCxvKX19YWRkTWF0Y2godCxlKXt0aGlzLm1hdGNoZXM9PT1udWxsP3RoaXMubWF0Y2hlcz1bdCxlXTp0aGlzLm1hdGNoZXMucHVzaCh0LGUpfX07ZnVuY3Rpb24gcnZ0KG4sdCl7bGV0IGU9bi5sb2NhbE5hbWVzO2lmKGUhPT1udWxsKXtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rPTIpaWYoZVtvXT09PXQpcmV0dXJuIGVbbysxXX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBzdnQobix0KXtyZXR1cm4gbi50eXBlJjExP0p3KG4sdCk6bi50eXBlJjQ/WFQobix0KTpudWxsfWZ1bmN0aW9uIGx2dChuLHQsZSxvKXtyZXR1cm4gZT09PS0xP3N2dCh0LG4pOmU9PT0tMj9jdnQobix0LG8pOlNSKG4sbltSbl0sZSx0KX1mdW5jdGlvbiBjdnQobix0LGUpe2lmKGU9PT1MKXJldHVybiBKdyh0LG4pO2lmKGU9PT1rZSlyZXR1cm4gWFQodCxuKTtpZihlPT09X2UpcmV0dXJuIG5nRGV2TW9kZSYmR2ModCwxNSksanR0KHQsbik7bmdEZXZNb2RlJiZoYShgU3BlY2lhbCB0b2tlbiB0byByZWFkIHNob3VsZCBiZSBvbmUgb2YgRWxlbWVudFJlZiwgVGVtcGxhdGVSZWYgb3IgVmlld0NvbnRhaW5lclJlZiBidXQgZ290ICR7T28oZSl9LmApfWZ1bmN0aW9uIFp0dChuLHQsZSxvKXtsZXQgaT10W19nXS5xdWVyaWVzW29dO2lmKGkubWF0Y2hlcz09PW51bGwpe2xldCBhPW4uZGF0YSxyPWUubWF0Y2hlcyxzPVtdO2ZvcihsZXQgbD0wO2w8ci5sZW5ndGg7bCs9Mil7bGV0IGM9cltsXTtpZihjPDApcy5wdXNoKG51bGwpO2Vsc2V7bmdEZXZNb2RlJiZBcihhLGMpO2xldCBtPWFbY107cy5wdXNoKGx2dCh0LG0scltsKzFdLGUubWV0YWRhdGEucmVhZCkpfX1pLm1hdGNoZXM9c31yZXR1cm4gaS5tYXRjaGVzfWZ1bmN0aW9uIFI4KG4sdCxlLG8pe2xldCBpPW4ucXVlcmllcy5nZXRCeUluZGV4KGUpLGE9aS5tYXRjaGVzO2lmKGEhPT1udWxsKXtsZXQgcj1adHQobix0LGksZSk7Zm9yKGxldCBzPTA7czxhLmxlbmd0aDtzKz0yKXtsZXQgbD1hW3NdO2lmKGw+MClvLnB1c2gocltzLzJdKTtlbHNle2xldCBjPWFbcysxXSxtPXRbLWxdO25nRGV2TW9kZSYmeGIobSk7Zm9yKGxldCBmPUJsO2Y8bS5sZW5ndGg7ZisrKXtsZXQgcD1tW2ZdO3Bbd1JdPT09cFt5cl0mJlI4KHBbUm5dLHAsYyxvKX1pZihtW015XSE9PW51bGwpe2xldCBmPW1bTXldO2ZvcihsZXQgcD0wO3A8Zi5sZW5ndGg7cCsrKXtsZXQgZz1mW3BdO1I4KGdbUm5dLGcsYyxvKX19fX19cmV0dXJuIG99ZnVuY3Rpb24gSHQobil7bGV0IHQ9dmUoKSxlPUNvKCksbz1HSygpO2VCKG8rMSk7bGV0IGk9S3R0KGUsbyk7aWYobi5kaXJ0eSYmVHcodCk9PT0oKGkubWV0YWRhdGEuZmxhZ3MmMik9PT0yKSl7aWYoaS5tYXRjaGVzPT09bnVsbCluLnJlc2V0KFtdKTtlbHNle2xldCBhPWkuY3Jvc3Nlc05nVGVtcGxhdGU/UjgoZSx0LG8sW10pOlp0dChlLHQsaSxvKTtuLnJlc2V0KGEsTXh0KSxuLm5vdGlmeU9uQ2hhbmdlcygpfXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHBlKG4sdCxlKXtuZ0Rldk1vZGUmJldhKHQsIkV4cGVjdGluZyBmbGFncyIpO2xldCBvPUNvKCk7by5maXJzdENyZWF0ZVBhc3MmJihRdHQobyxuZXcgYlQobix0LGUpLC0xKSwodCYyKT09PTImJihvLnN0YXRpY1ZpZXdRdWVyaWVzPSEwKSksWHR0KG8sdmUoKSx0KX1mdW5jdGlvbiBnbyhuLHQsZSxvKXtuZ0Rldk1vZGUmJldhKGUsIkV4cGVjdGluZyBmbGFncyIpO2xldCBpPUNvKCk7aWYoaS5maXJzdENyZWF0ZVBhc3Mpe2xldCBhPVRzKCk7UXR0KGksbmV3IGJUKHQsZSxvKSxhLmluZGV4KSxmdnQoaSxuKSwoZSYyKT09PTImJihpLnN0YXRpY0NvbnRlbnRRdWVyaWVzPSEwKX1YdHQoaSx2ZSgpLGUpfWZ1bmN0aW9uIEZ0KCl7cmV0dXJuIG12dCh2ZSgpLEdLKCkpfWZ1bmN0aW9uIG12dChuLHQpe3JldHVybiBuZ0Rldk1vZGUmJnVuKG5bX2ddLCJMUXVlcmllcyBzaG91bGQgYmUgZGVmaW5lZCB3aGVuIHRyeWluZyB0byBsb2FkIGEgcXVlcnkiKSxuZ0Rldk1vZGUmJkFyKG5bX2ddLnF1ZXJpZXMsdCksbltfZ10ucXVlcmllc1t0XS5xdWVyeUxpc3R9ZnVuY3Rpb24gWHR0KG4sdCxlKXtsZXQgbz1uZXcgZl8oKGUmNCk9PT00KTtzJChuLHQsbyxvLmRlc3Ryb3kpLHRbX2ddPT09bnVsbCYmKHRbX2ddPW5ldyBNUiksdFtfZ10ucXVlcmllcy5wdXNoKG5ldyBDUihvKSl9ZnVuY3Rpb24gUXR0KG4sdCxlKXtuLnF1ZXJpZXM9PT1udWxsJiYobi5xdWVyaWVzPW5ldyBiUiksbi5xdWVyaWVzLnRyYWNrKG5ldyBPUih0LGUpKX1mdW5jdGlvbiBmdnQobix0KXtsZXQgZT1uLmNvbnRlbnRRdWVyaWVzfHwobi5jb250ZW50UXVlcmllcz1bXSksbz1lLmxlbmd0aD9lW2UubGVuZ3RoLTFdOi0xO3QhPT1vJiZlLnB1c2gobi5xdWVyaWVzLmxlbmd0aC0xLHQpfWZ1bmN0aW9uIEt0dChuLHQpe3JldHVybiBuZ0Rldk1vZGUmJnVuKG4ucXVlcmllcywiVFF1ZXJpZXMgbXVzdCBiZSBkZWZpbmVkIHRvIHJldHJpZXZlIGEgVFF1ZXJ5Iiksbi5xdWVyaWVzLmdldEJ5SW5kZXgodCl9ZnVuY3Rpb24geG4obix0KXtyZXR1cm4gWFQobix0KX12YXIgcHZ0PSgpPT4oe1x1MDI3NVx1MDI3NWF0dHJpYnV0ZTpyZSxcdTAyNzVcdTAyNzVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTE6UiQsXHUwMjc1XHUwMjc1YXR0cmlidXRlSW50ZXJwb2xhdGUyOkUkLFx1MDI3NVx1MDI3NWF0dHJpYnV0ZUludGVycG9sYXRlMzprJCxcdTAyNzVcdTAyNzVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTQ6TiQsXHUwMjc1XHUwMjc1YXR0cmlidXRlSW50ZXJwb2xhdGU1OlQkLFx1MDI3NVx1MDI3NWF0dHJpYnV0ZUludGVycG9sYXRlNjpBJCxcdTAyNzVcdTAyNzVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTc6RCQsXHUwMjc1XHUwMjc1YXR0cmlidXRlSW50ZXJwb2xhdGU4OkkkLFx1MDI3NVx1MDI3NWF0dHJpYnV0ZUludGVycG9sYXRlVjp6JCxcdTAyNzVcdTAyNzVkZWZpbmVDb21wb25lbnQ6eixcdTAyNzVcdTAyNzVkZWZpbmVEaXJlY3RpdmU6dnQsXHUwMjc1XHUwMjc1ZGVmaW5lSW5qZWN0YWJsZTpQdCxcdTAyNzVcdTAyNzVkZWZpbmVJbmplY3RvcjpXLFx1MDI3NVx1MDI3NWRlZmluZU5nTW9kdWxlOnEsXHUwMjc1XHUwMjc1ZGVmaW5lUGlwZTpqbSxcdTAyNzVcdTAyNzVkaXJlY3RpdmVJbmplY3Q6dixcdTAyNzVcdTAyNzVnZXRJbmhlcml0ZWRGYWN0b3J5OkZuLFx1MDI3NVx1MDI3NWluamVjdDpJLFx1MDI3NVx1MDI3NWluamVjdEF0dHJpYnV0ZTpaYSxcdTAyNzVcdTAyNzVpbnZhbGlkRmFjdG9yeTpSUHQsXHUwMjc1XHUwMjc1aW52YWxpZEZhY3RvcnlEZXA6c0osXHUwMjc1XHUwMjc1dGVtcGxhdGVSZWZFeHRyYWN0b3I6eG4sXHUwMjc1XHUwMjc1TmdPbkNoYW5nZXNGZWF0dXJlOldlLFx1MDI3NVx1MDI3NVByb3ZpZGVyc0ZlYXR1cmU6VGUsXHUwMjc1XHUwMjc1Q29weURlZmluaXRpb25GZWF0dXJlOkpPdCxcdTAyNzVcdTAyNzVJbmhlcml0RGVmaW5pdGlvbkZlYXR1cmU6YWUsXHUwMjc1XHUwMjc1bmV4dENvbnRleHQ6UyxcdTAyNzVcdTAyNzVuYW1lc3BhY2VIVE1MOkdtLFx1MDI3NVx1MDI3NW5hbWVzcGFjZU1hdGhNTDppQ3QsXHUwMjc1XHUwMjc1bmFtZXNwYWNlU1ZHOktuLFx1MDI3NVx1MDI3NWVuYWJsZUJpbmRpbmdzOlgwdCxcdTAyNzVcdTAyNzVkaXNhYmxlQmluZGluZ3M6UTB0LFx1MDI3NVx1MDI3NWVsZW1lbnRTdGFydDp1LFx1MDI3NVx1MDI3NWVsZW1lbnRFbmQ6aCxcdTAyNzVcdTAyNzVlbGVtZW50OkQsXHUwMjc1XHUwMjc1ZWxlbWVudENvbnRhaW5lclN0YXJ0OkVuLFx1MDI3NVx1MDI3NWVsZW1lbnRDb250YWluZXJFbmQ6a24sXHUwMjc1XHUwMjc1ZWxlbWVudENvbnRhaW5lcjpNbyxcdTAyNzVcdTAyNzVwdXJlRnVuY3Rpb24wOnd5LFx1MDI3NVx1MDI3NXB1cmVGdW5jdGlvbjE6YW8sXHUwMjc1XHUwMjc1cHVyZUZ1bmN0aW9uMjpobCxcdTAyNzVcdTAyNzVwdXJlRnVuY3Rpb24zOmpCLFx1MDI3NVx1MDI3NXB1cmVGdW5jdGlvbjQ6UVQsXHUwMjc1XHUwMjc1cHVyZUZ1bmN0aW9uNTpYeHQsXHUwMjc1XHUwMjc1cHVyZUZ1bmN0aW9uNjpReHQsXHUwMjc1XHUwMjc1cHVyZUZ1bmN0aW9uNzpLeHQsXHUwMjc1XHUwMjc1cHVyZUZ1bmN0aW9uODpKeHQsXHUwMjc1XHUwMjc1cHVyZUZ1bmN0aW9uVjokeHQsXHUwMjc1XHUwMjc1Z2V0Q3VycmVudFZpZXc6JHQsXHUwMjc1XHUwMjc1cmVzdG9yZVZpZXc6T3QsXHUwMjc1XHUwMjc1bGlzdGVuZXI6QSxcdTAyNzVcdTAyNzVwcm9qZWN0aW9uOlluLFx1MDI3NVx1MDI3NXN5bnRoZXRpY0hvc3RQcm9wZXJ0eTpLdyxcdTAyNzVcdTAyNzVzeW50aGV0aWNIb3N0TGlzdGVuZXI6UXcsXHUwMjc1XHUwMjc1cGlwZUJpbmQxOlEsXHUwMjc1XHUwMjc1cGlwZUJpbmQyOmh2LFx1MDI3NVx1MDI3NXBpcGVCaW5kMzpVQixcdTAyNzVcdTAyNzVwaXBlQmluZDQ6ZXZ0LFx1MDI3NVx1MDI3NXBpcGVCaW5kVjpudnQsXHUwMjc1XHUwMjc1cHJvamVjdGlvbkRlZjp5byxcdTAyNzVcdTAyNzVob3N0UHJvcGVydHk6dWwsXHUwMjc1XHUwMjc1cHJvcGVydHk6UCxcdTAyNzVcdTAyNzVwcm9wZXJ0eUludGVycG9sYXRlOldpLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGUxOkZSLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGUyOkJULFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGUzOlUkLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGU0OlkkLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGU1OkckLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGU2OlckLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGU3OnEkLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGU4OlokLFx1MDI3NVx1MDI3NXByb3BlcnR5SW50ZXJwb2xhdGVWOlgkLFx1MDI3NVx1MDI3NXBpcGU6WCxcdTAyNzVcdTAyNzVxdWVyeVJlZnJlc2g6SHQsXHUwMjc1XHUwMjc1dmlld1F1ZXJ5OnBlLFx1MDI3NVx1MDI3NWxvYWRRdWVyeTpGdCxcdTAyNzVcdTAyNzVjb250ZW50UXVlcnk6Z28sXHUwMjc1XHUwMjc1cmVmZXJlbmNlOndlLFx1MDI3NVx1MDI3NWNsYXNzTWFwOnFmLFx1MDI3NVx1MDI3NWNsYXNzTWFwSW50ZXJwb2xhdGUxOkxSLFx1MDI3NVx1MDI3NWNsYXNzTWFwSW50ZXJwb2xhdGUyOktQdCxcdTAyNzVcdTAyNzVjbGFzc01hcEludGVycG9sYXRlMzpKUHQsXHUwMjc1XHUwMjc1Y2xhc3NNYXBJbnRlcnBvbGF0ZTQ6JFB0LFx1MDI3NVx1MDI3NWNsYXNzTWFwSW50ZXJwb2xhdGU1OnR5dCxcdTAyNzVcdTAyNzVjbGFzc01hcEludGVycG9sYXRlNjpleXQsXHUwMjc1XHUwMjc1Y2xhc3NNYXBJbnRlcnBvbGF0ZTc6bnl0LFx1MDI3NVx1MDI3NWNsYXNzTWFwSW50ZXJwb2xhdGU4Om95dCxcdTAyNzVcdTAyNzVjbGFzc01hcEludGVycG9sYXRlVjppeXQsXHUwMjc1XHUwMjc1c3R5bGVNYXA6cF8sXHUwMjc1XHUwMjc1c3R5bGVNYXBJbnRlcnBvbGF0ZTE6YXl0LFx1MDI3NVx1MDI3NXN0eWxlTWFwSW50ZXJwb2xhdGUyOnJ5dCxcdTAyNzVcdTAyNzVzdHlsZU1hcEludGVycG9sYXRlMzpzeXQsXHUwMjc1XHUwMjc1c3R5bGVNYXBJbnRlcnBvbGF0ZTQ6bHl0LFx1MDI3NVx1MDI3NXN0eWxlTWFwSW50ZXJwb2xhdGU1OmN5dCxcdTAyNzVcdTAyNzVzdHlsZU1hcEludGVycG9sYXRlNjpteXQsXHUwMjc1XHUwMjc1c3R5bGVNYXBJbnRlcnBvbGF0ZTc6Znl0LFx1MDI3NVx1MDI3NXN0eWxlTWFwSW50ZXJwb2xhdGU4OnB5dCxcdTAyNzVcdTAyNzVzdHlsZU1hcEludGVycG9sYXRlVjpkeXQsXHUwMjc1XHUwMjc1c3R5bGVQcm9wOnFlLFx1MDI3NVx1MDI3NXN0eWxlUHJvcEludGVycG9sYXRlMTpwdHQsXHUwMjc1XHUwMjc1c3R5bGVQcm9wSW50ZXJwb2xhdGUyOmR0dCxcdTAyNzVcdTAyNzVzdHlsZVByb3BJbnRlcnBvbGF0ZTM6Z3R0LFx1MDI3NVx1MDI3NXN0eWxlUHJvcEludGVycG9sYXRlNDp1dHQsXHUwMjc1XHUwMjc1c3R5bGVQcm9wSW50ZXJwb2xhdGU1Omh0dCxcdTAyNzVcdTAyNzVzdHlsZVByb3BJbnRlcnBvbGF0ZTY6X3R0LFx1MDI3NVx1MDI3NXN0eWxlUHJvcEludGVycG9sYXRlNzpDdHQsXHUwMjc1XHUwMjc1c3R5bGVQcm9wSW50ZXJwb2xhdGU4Ok10dCxcdTAyNzVcdTAyNzVzdHlsZVByb3BJbnRlcnBvbGF0ZVY6YnR0LFx1MDI3NVx1MDI3NWNsYXNzUHJvcDptZSxcdTAyNzVcdTAyNzVhZHZhbmNlOngsXHUwMjc1XHUwMjc1dGVtcGxhdGU6ayxcdTAyNzVcdTAyNzV0ZXh0OlQsXHUwMjc1XHUwMjc1dGV4dEludGVycG9sYXRlOkllLFx1MDI3NVx1MDI3NXRleHRJbnRlcnBvbGF0ZTE6bGUsXHUwMjc1XHUwMjc1dGV4dEludGVycG9sYXRlMjp2eSxcdTAyNzVcdTAyNzV0ZXh0SW50ZXJwb2xhdGUzOlZULFx1MDI3NVx1MDI3NXRleHRJbnRlcnBvbGF0ZTQ6cnR0LFx1MDI3NVx1MDI3NXRleHRJbnRlcnBvbGF0ZTU6c3R0LFx1MDI3NVx1MDI3NXRleHRJbnRlcnBvbGF0ZTY6bHR0LFx1MDI3NVx1MDI3NXRleHRJbnRlcnBvbGF0ZTc6Y3R0LFx1MDI3NVx1MDI3NXRleHRJbnRlcnBvbGF0ZTg6bXR0LFx1MDI3NVx1MDI3NXRleHRJbnRlcnBvbGF0ZVY6ZnR0LFx1MDI3NVx1MDI3NWkxOG46V1QsXHUwMjc1XHUwMjc1aTE4bkF0dHJpYnV0ZXM6Y3h0LFx1MDI3NVx1MDI3NWkxOG5FeHA6QlIsXHUwMjc1XHUwMjc1aTE4blN0YXJ0Onp0dCxcdTAyNzVcdTAyNzVpMThuRW5kOkh0dCxcdTAyNzVcdTAyNzVpMThuQXBwbHk6cVQsXHUwMjc1XHUwMjc1aTE4blBvc3Rwcm9jZXNzOlpULFx1MDI3NVx1MDI3NXJlc29sdmVXaW5kb3c6QVIsXHUwMjc1XHUwMjc1cmVzb2x2ZURvY3VtZW50Ok5ULFx1MDI3NVx1MDI3NXJlc29sdmVCb2R5OllNdCxcdTAyNzVcdTAyNzVzZXRDb21wb25lbnRTY29wZTp2UixcdTAyNzVcdTAyNzVzZXROZ01vZHVsZVNjb3BlOmV0LFx1MDI3NVx1MDI3NXNhbml0aXplSHRtbDp1QixcdTAyNzVcdTAyNzVzYW5pdGl6ZVN0eWxlOnVNdCxcdTAyNzVcdTAyNzVzYW5pdGl6ZVJlc291cmNlVXJsOlBKLFx1MDI3NVx1MDI3NXNhbml0aXplU2NyaXB0OmhNdCxcdTAyNzVcdTAyNzVzYW5pdGl6ZVVybDpXZixcdTAyNzVcdTAyNzVzYW5pdGl6ZVVybE9yUmVzb3VyY2VVcmw6Yk10LFx1MDI3NVx1MDI3NXRydXN0Q29uc3RhbnRIdG1sOl9NdCxcdTAyNzVcdTAyNzV0cnVzdENvbnN0YW50UmVzb3VyY2VVcmw6Q010LGZvcndhcmRSZWY6dG8scmVzb2x2ZUZvcndhcmRSZWY6VW99KSx1eT1wdnQoKSxlUj1udWxsO2Z1bmN0aW9uIGR2dChuKXtpZihlUiE9PW51bGwpe2lmKG4uZGVmYXVsdEVuY2Fwc3VsYXRpb24hPT1lUi5kZWZhdWx0RW5jYXBzdWxhdGlvbil7bmdEZXZNb2RlJiZjb25zb2xlLmVycm9yKCJQcm92aWRlZCB2YWx1ZSBmb3IgYGRlZmF1bHRFbmNhcHN1bGF0aW9uYCBjYW4gbm90IGJlIGNoYW5nZWQgb25jZSBpdCBoYXMgYmVlbiBzZXQuIik7cmV0dXJufWlmKG4ucHJlc2VydmVXaGl0ZXNwYWNlcyE9PWVSLnByZXNlcnZlV2hpdGVzcGFjZXMpe25nRGV2TW9kZSYmY29uc29sZS5lcnJvcigiUHJvdmlkZWQgdmFsdWUgZm9yIGBwcmVzZXJ2ZVdoaXRlc3BhY2VzYCBjYW4gbm90IGJlIGNoYW5nZWQgb25jZSBpdCBoYXMgYmVlbiBzZXQuIik7cmV0dXJufX1lUj1ufWZ1bmN0aW9uIGd2dCgpe3JldHVybiBlUn12YXIgR049W107ZnVuY3Rpb24gdXZ0KG4sdCl7R04ucHVzaCh7bW9kdWxlVHlwZTpuLG5nTW9kdWxlOnR9KX12YXIgYkw9ITE7ZnVuY3Rpb24gaHZ0KCl7aWYoIWJMKXtiTD0hMDt0cnl7Zm9yKGxldCBuPUdOLmxlbmd0aC0xO24+PTA7bi0tKXtsZXR7bW9kdWxlVHlwZTp0LG5nTW9kdWxlOmV9PUdOW25dO2UuZGVjbGFyYXRpb25zJiZlLmRlY2xhcmF0aW9ucy5ldmVyeShKdHQpJiYoR04uc3BsaWNlKG4sMSksTXZ0KHQsZSkpfX1maW5hbGx5e2JMPSExfX19ZnVuY3Rpb24gSnR0KG4pe3JldHVybiBBcnJheS5pc0FycmF5KG4pP24uZXZlcnkoSnR0KTohIVVvKG4pfWZ1bmN0aW9uIF92dChuLHQ9e30pe0N2dChuLHQpLHV2dChuLHQpfWZ1bmN0aW9uIEN2dChuLHQsZT0hMSl7bmdEZXZNb2RlJiZ1bihuLCJSZXF1aXJlZCB2YWx1ZSBtb2R1bGVUeXBlIiksbmdEZXZNb2RlJiZ1bih0LCJSZXF1aXJlZCB2YWx1ZSBuZ01vZHVsZSIpO2xldCBvPWlfKHQuZGVjbGFyYXRpb25zfHx1YSksaT1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLHdLLHtjb25maWd1cmFibGU6ITAsZ2V0OigpPT57aWYoaT09PW51bGwpe2lmKG5nRGV2TW9kZSYmdC5pbXBvcnRzJiZ0LmltcG9ydHMuaW5kZXhPZihuKT4tMSl0aHJvdyBuZXcgRXJyb3IoYCcke1ZjKG4pfScgbW9kdWxlIGNhbid0IGltcG9ydCBpdHNlbGZgKTtpPXJfKHt1c2FnZTowLGtpbmQ6Ik5nTW9kdWxlIix0eXBlOm59KS5jb21waWxlTmdNb2R1bGUodXksYG5nOi8vLyR7bi5uYW1lfS9cdTAyNzVtb2QuanNgLHt0eXBlOm4sYm9vdHN0cmFwOmlfKHQuYm9vdHN0cmFwfHx1YSkubWFwKFVvKSxkZWNsYXJhdGlvbnM6by5tYXAoVW8pLGltcG9ydHM6aV8odC5pbXBvcnRzfHx1YSkubWFwKFVvKS5tYXAobUspLGV4cG9ydHM6aV8odC5leHBvcnRzfHx1YSkubWFwKFVvKS5tYXAobUspLHNjaGVtYXM6dC5zY2hlbWFzP2lfKHQuc2NoZW1hcyk6bnVsbCxpZDp0LmlkfHxudWxsfSksaS5zY2hlbWFzfHwoaS5zY2hlbWFzPVtdKX1yZXR1cm4gaX19KTtsZXQgYT1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLFVPLHtnZXQ6KCk9PntpZihhPT09bnVsbCl7bGV0IHM9cl8oe3VzYWdlOjAsa2luZDoiTmdNb2R1bGUiLHR5cGU6bn0pO2E9cy5jb21waWxlRmFjdG9yeSh1eSxgbmc6Ly8vJHtuLm5hbWV9L1x1MDI3NWZhYy5qc2Ase25hbWU6bi5uYW1lLHR5cGU6bixkZXBzOmtUKG4pLHRhcmdldDpzLkZhY3RvcnlUYXJnZXQuTmdNb2R1bGUsdHlwZUFyZ3VtZW50Q291bnQ6MH0pfXJldHVybiBhfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KTtsZXQgcj1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLFNMLHtnZXQ6KCk9PntpZihyPT09bnVsbCl7bmdEZXZNb2RlJiZPVChuLGUpO2xldCBzPXtuYW1lOm4ubmFtZSx0eXBlOm4scHJvdmlkZXJzOnQucHJvdmlkZXJzfHx1YSxpbXBvcnRzOlsodC5pbXBvcnRzfHx1YSkubWFwKFVvKSwodC5leHBvcnRzfHx1YSkubWFwKFVvKV19O3I9cl8oe3VzYWdlOjAsa2luZDoiTmdNb2R1bGUiLHR5cGU6bn0pLmNvbXBpbGVJbmplY3Rvcih1eSxgbmc6Ly8vJHtuLm5hbWV9L1x1MDI3NWluai5qc2Ascyl9cmV0dXJuIHJ9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfWZ1bmN0aW9uIE9UKG4sdCxlKXtpZihjSy5nZXQobikpcmV0dXJuO2NLLnNldChuLCEwKSxuPVVvKG4pO2xldCBvO2lmKGUpe2lmKG89c18obiksIW8pdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlICcke24ubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7ZS5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCl9ZWxzZSBvPXNfKG4sITApO2xldCBpPVtdLGE9TWIoby5kZWNsYXJhdGlvbnMpLHI9TWIoby5pbXBvcnRzKTtpXyhyKS5tYXAoc0spLmZvckVhY2goYj0+e08oYixuKSxPVChiLCExLG4pfSk7bGV0IHM9TWIoby5leHBvcnRzKTthLmZvckVhY2gobSksYS5mb3JFYWNoKGYpO2xldCBsPVsuLi5hLm1hcChVbyksLi4uaV8oci5tYXAoJHR0KSkubWFwKFVvKV07cy5mb3JFYWNoKHApLGEuZm9yRWFjaChiPT5nKGIsdCkpLGEuZm9yRWFjaCh5KTtsZXQgYz1sSyhuLCJOZ01vZHVsZSIpO2lmKGMmJihjLmltcG9ydHMmJmlfKGMuaW1wb3J0cykubWFwKHNLKS5mb3JFYWNoKGI9PntPKGIsbiksT1QoYiwhMSxuKX0pLGMuYm9vdHN0cmFwJiZfYihjLmJvb3RzdHJhcCxNKSxjLmJvb3RzdHJhcCYmX2IoYy5ib290c3RyYXAsXyksYy5lbnRyeUNvbXBvbmVudHMmJl9iKGMuZW50cnlDb21wb25lbnRzLF8pKSxpLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoaS5qb2luKGAKYCkpO2Z1bmN0aW9uIG0oYil7Yj1VbyhiKSxWZihiKXx8Y3koYil8fGF2KGIpfHxpLnB1c2goYFVuZXhwZWN0ZWQgdmFsdWUgJyR7VmMoYil9JyBkZWNsYXJlZCBieSB0aGUgbW9kdWxlICcke1ZjKG4pfScuIFBsZWFzZSBhZGQgYSBAUGlwZS9ARGlyZWN0aXZlL0BDb21wb25lbnQgYW5ub3RhdGlvbi5gKX1mdW5jdGlvbiBmKGIpe2I9VW8oYik7bGV0IFI9Y3koYik7IVZmKGIpJiZSJiZSLnNlbGVjdG9ycy5sZW5ndGg9PTAmJmkucHVzaChgRGlyZWN0aXZlICR7VmMoYil9IGhhcyBubyBzZWxlY3RvciwgcGxlYXNlIGFkZCBpdCFgKX1mdW5jdGlvbiBwKGIpe2I9VW8oYik7bGV0IFI9VmYoYikmJiJjb21wb25lbnQifHxjeShiKSYmImRpcmVjdGl2ZSJ8fGF2KGIpJiYicGlwZSI7UiYmbC5sYXN0SW5kZXhPZihiKT09PS0xJiZpLnB1c2goYENhbid0IGV4cG9ydCAke1J9ICR7VmMoYil9IGZyb20gJHtWYyhuKX0gYXMgaXQgd2FzIG5laXRoZXIgZGVjbGFyZWQgbm9yIGltcG9ydGVkIWApfWZ1bmN0aW9uIGcoYixSKXtiPVVvKGIpO2xldCBFPU9MLmdldChiKTtpZihFJiZFIT09bil7aWYoIVIpe2xldCBqPVtFLG5dLm1hcChWYykuc29ydCgpO2kucHVzaChgVHlwZSAke1ZjKGIpfSBpcyBwYXJ0IG9mIHRoZSBkZWNsYXJhdGlvbnMgb2YgMiBtb2R1bGVzOiAke2pbMF19IGFuZCAke2pbMV19ISBQbGVhc2UgY29uc2lkZXIgbW92aW5nICR7VmMoYil9IHRvIGEgaGlnaGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgJHtqWzBdfSBhbmQgJHtqWzFdfS4gWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBOZ01vZHVsZSB0aGF0IGV4cG9ydHMgYW5kIGluY2x1ZGVzICR7VmMoYil9IHRoZW4gaW1wb3J0IHRoYXQgTmdNb2R1bGUgaW4gJHtqWzBdfSBhbmQgJHtqWzFdfS5gKX19ZWxzZSBPTC5zZXQoYixuKX1mdW5jdGlvbiBfKGIpe2I9VW8oYiksT0wuZ2V0KGIpfHxpLnB1c2goYENvbXBvbmVudCAke1ZjKGIpfSBpcyBub3QgcGFydCBvZiBhbnkgTmdNb2R1bGUgb3IgdGhlIG1vZHVsZSBoYXMgbm90IGJlZW4gaW1wb3J0ZWQgaW50byB5b3VyIG1vZHVsZS5gKX1mdW5jdGlvbiBNKGIpe2I9VW8oYiksVmYoYil8fGkucHVzaChgJHtWYyhiKX0gY2Fubm90IGJlIHVzZWQgYXMgYW4gZW50cnkgY29tcG9uZW50LmApfWZ1bmN0aW9uIHkoYil7aWYoYj1VbyhiKSxWZihiKSl7bGV0IFI9bEsoYiwiQ29tcG9uZW50Iik7UiYmUi5lbnRyeUNvbXBvbmVudHMmJl9iKFIuZW50cnlDb21wb25lbnRzLF8pfX1mdW5jdGlvbiBPKGIsUil7aWYoYj1VbyhiKSxWZihiKXx8Y3koYikpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRpcmVjdGl2ZSAnJHtiLm5hbWV9JyBpbXBvcnRlZCBieSB0aGUgbW9kdWxlICcke1IubmFtZX0nLiBQbGVhc2UgYWRkIGFuIEBOZ01vZHVsZSBhbm5vdGF0aW9uLmApO2lmKGF2KGIpKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBwaXBlICcke2IubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7Ui5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCl9fWZ1bmN0aW9uIHNLKG4pe3JldHVybiBuPVVvKG4pLG4ubmdNb2R1bGV8fG59ZnVuY3Rpb24gbEsobix0KXtsZXQgZT1udWxsO3JldHVybiBvKG4uX19hbm5vdGF0aW9uc19fKSxvKG4uZGVjb3JhdG9ycyksZTtmdW5jdGlvbiBvKGEpe2EmJmEuZm9yRWFjaChpKX1mdW5jdGlvbiBpKGEpe2V8fChPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkubmdNZXRhZGF0YU5hbWU9PXQ/ZT1hOmEudHlwZSYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGEudHlwZSkubmdNZXRhZGF0YU5hbWU9PXQmJihlPWEuYXJnc1swXSkpfX12YXIgT0w9bmV3IFdlYWtNYXAsY0s9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gJHR0KG4pe249VW8obik7bGV0IHQ9c18obiwhMCk7cmV0dXJuWy4uLmlfKE1iKHQuZXhwb3J0cykubWFwKGU9PnNfKGUpPyhPVChlLCExKSwkdHQoZSkpOmUpKV19ZnVuY3Rpb24gTXZ0KG4sdCl7bGV0IGU9aV8odC5kZWNsYXJhdGlvbnN8fHVhKSxvPVBUKG4pO2UuZm9yRWFjaChpPT57aWYoaS5oYXNPd25Qcm9wZXJ0eSh4VCkpe2xldCByPVZmKGkpO3RldChyLG8pfWVsc2UhaS5oYXNPd25Qcm9wZXJ0eShMOCkmJiFpLmhhc093blByb3BlcnR5KEI4KSYmKGkubmdTZWxlY3RvclNjb3BlPW4pfSl9ZnVuY3Rpb24gdGV0KG4sdCl7bi5kaXJlY3RpdmVEZWZzPSgpPT5BcnJheS5mcm9tKHQuY29tcGlsYXRpb24uZGlyZWN0aXZlcykubWFwKGU9PmUuaGFzT3duUHJvcGVydHkoeFQpP1ZmKGUpOmN5KGUpKS5maWx0ZXIoZT0+ISFlKSxuLnBpcGVEZWZzPSgpPT5BcnJheS5mcm9tKHQuY29tcGlsYXRpb24ucGlwZXMpLm1hcChlPT5hdihlKSksbi5zY2hlbWFzPXQuc2NoZW1hcyxuLnRWaWV3PW51bGx9ZnVuY3Rpb24gUFQobil7aWYoIVBMKG4pKXRocm93IG5ldyBFcnJvcihgJHtuLm5hbWV9IGRvZXMgbm90IGhhdmUgYSBtb2R1bGUgZGVmIChcdTAyNzVtb2QgcHJvcGVydHkpYCk7bGV0IHQ9c18obik7aWYodC50cmFuc2l0aXZlQ29tcGlsZVNjb3BlcyE9PW51bGwpcmV0dXJuIHQudHJhbnNpdGl2ZUNvbXBpbGVTY29wZXM7bGV0IGU9e3NjaGVtYXM6dC5zY2hlbWFzfHxudWxsLGNvbXBpbGF0aW9uOntkaXJlY3RpdmVzOm5ldyBTZXQscGlwZXM6bmV3IFNldH0sZXhwb3J0ZWQ6e2RpcmVjdGl2ZXM6bmV3IFNldCxwaXBlczpuZXcgU2V0fX07cmV0dXJuIE1iKHQuaW1wb3J0cykuZm9yRWFjaChvPT57bGV0IGk9bztpZighUEwoaSkpdGhyb3cgbmV3IEVycm9yKGBJbXBvcnRpbmcgJHtpLm5hbWV9IHdoaWNoIGRvZXMgbm90IGhhdmUgYSBcdTAyNzVtb2QgcHJvcGVydHlgKTtsZXQgYT1QVChpKTthLmV4cG9ydGVkLmRpcmVjdGl2ZXMuZm9yRWFjaChyPT5lLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMuYWRkKHIpKSxhLmV4cG9ydGVkLnBpcGVzLmZvckVhY2gocj0+ZS5jb21waWxhdGlvbi5waXBlcy5hZGQocikpfSksTWIodC5kZWNsYXJhdGlvbnMpLmZvckVhY2gobz0+e2F2KG8pP2UuY29tcGlsYXRpb24ucGlwZXMuYWRkKG8pOmUuY29tcGlsYXRpb24uZGlyZWN0aXZlcy5hZGQobyl9KSxNYih0LmV4cG9ydHMpLmZvckVhY2gobz0+e2xldCBpPW87aWYoUEwoaSkpe2xldCBhPVBUKGkpO2EuZXhwb3J0ZWQuZGlyZWN0aXZlcy5mb3JFYWNoKHI9PntlLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMuYWRkKHIpLGUuZXhwb3J0ZWQuZGlyZWN0aXZlcy5hZGQocil9KSxhLmV4cG9ydGVkLnBpcGVzLmZvckVhY2gocj0+e2UuY29tcGlsYXRpb24ucGlwZXMuYWRkKHIpLGUuZXhwb3J0ZWQucGlwZXMuYWRkKHIpfSl9ZWxzZSBhdihpKT9lLmV4cG9ydGVkLnBpcGVzLmFkZChpKTplLmV4cG9ydGVkLmRpcmVjdGl2ZXMuYWRkKGkpfSksdC50cmFuc2l0aXZlQ29tcGlsZVNjb3Blcz1lLGV9ZnVuY3Rpb24gbUsobil7cmV0dXJuIGJ2dChuKT9uLm5nTW9kdWxlOm59ZnVuY3Rpb24gYnZ0KG4pe3JldHVybiBuLm5nTW9kdWxlIT09dm9pZCAwfWZ1bmN0aW9uIFBMKG4pe3JldHVybiEhc18obil9dmFyIHlMPTA7ZnVuY3Rpb24gT3Z0KG4sdCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZ4UigpO2xldCBlPW51bGw7WEN0KG4sdCksb2V0KG4sdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4seFQse2dldDooKT0+e2lmKGU9PT1udWxsKXtsZXQgbz1yXyh7dXNhZ2U6MCxraW5kOiJjb21wb25lbnQiLHR5cGU6bn0pO2lmKG1KKHQpKXtsZXQgYz1bYENvbXBvbmVudCAnJHtuLm5hbWV9JyBpcyBub3QgcmVzb2x2ZWQ6YF07dGhyb3cgdC50ZW1wbGF0ZVVybCYmYy5wdXNoKGAgLSB0ZW1wbGF0ZVVybDogJHt0LnRlbXBsYXRlVXJsfWApLHQuc3R5bGVVcmxzJiZ0LnN0eWxlVXJscy5sZW5ndGgmJmMucHVzaChgIC0gc3R5bGVVcmxzOiAke0pTT04uc3RyaW5naWZ5KHQuc3R5bGVVcmxzKX1gKSxjLnB1c2goIkRpZCB5b3UgcnVuIGFuZCB3YWl0IGZvciAncmVzb2x2ZUNvbXBvbmVudFJlc291cmNlcygpJz8iKSxuZXcgRXJyb3IoYy5qb2luKGAKYCkpfWxldCBpPWd2dCgpLGE9dC5wcmVzZXJ2ZVdoaXRlc3BhY2VzO2E9PT12b2lkIDAmJihpIT09bnVsbCYmaS5wcmVzZXJ2ZVdoaXRlc3BhY2VzIT09dm9pZCAwP2E9aS5wcmVzZXJ2ZVdoaXRlc3BhY2VzOmE9ITEpO2xldCByPXQuZW5jYXBzdWxhdGlvbjtyPT09dm9pZCAwJiYoaSE9PW51bGwmJmkuZGVmYXVsdEVuY2Fwc3VsYXRpb24hPT12b2lkIDA/cj1pLmRlZmF1bHRFbmNhcHN1bGF0aW9uOnI9SmUuRW11bGF0ZWQpO2xldCBzPXQudGVtcGxhdGVVcmx8fGBuZzovLy8ke24ubmFtZX0vdGVtcGxhdGUuaHRtbGAsbD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saWV0KG4sdCkpLHt0eXBlU291cmNlU3BhbjpvLmNyZWF0ZVBhcnNlU291cmNlU3BhbigiQ29tcG9uZW50IixuLm5hbWUscyksdGVtcGxhdGU6dC50ZW1wbGF0ZXx8IiIscHJlc2VydmVXaGl0ZXNwYWNlczphLHN0eWxlczp0LnN0eWxlc3x8dWEsYW5pbWF0aW9uczp0LmFuaW1hdGlvbnMsZGlyZWN0aXZlczpbXSxjaGFuZ2VEZXRlY3Rpb246dC5jaGFuZ2VEZXRlY3Rpb24scGlwZXM6bmV3IE1hcCxlbmNhcHN1bGF0aW9uOnIsaW50ZXJwb2xhdGlvbjp0LmludGVycG9sYXRpb24sdmlld1Byb3ZpZGVyczp0LnZpZXdQcm92aWRlcnN8fG51bGx9KTt5TCsrO3RyeXtsLnVzZXNJbmhlcml0YW5jZSYmYWV0KG4pLGU9by5jb21waWxlQ29tcG9uZW50KHV5LHMsbCl9ZmluYWxseXt5TC0tfWlmKHlMPT09MCYmaHZ0KCksUHZ0KG4pKXtsZXQgYz1QVChuLm5nU2VsZWN0b3JTY29wZSk7dGV0KGUsYyl9fXJldHVybiBlfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KX1mdW5jdGlvbiBQdnQobil7cmV0dXJuIG4ubmdTZWxlY3RvclNjb3BlIT09dm9pZCAwfWZ1bmN0aW9uIGVldChuLHQpe2xldCBlPW51bGw7b2V0KG4sdHx8e30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLEw4LHtnZXQ6KCk9PntpZihlPT09bnVsbCl7bGV0IG89bmV0KG4sdHx8e30pO2U9cl8oe3VzYWdlOjAsa2luZDoiZGlyZWN0aXZlIix0eXBlOm59KS5jb21waWxlRGlyZWN0aXZlKHV5LG8uc291cmNlTWFwVXJsLG8ubWV0YWRhdGEpfXJldHVybiBlfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KX1mdW5jdGlvbiBuZXQobix0KXtsZXQgZT1uJiZuLm5hbWUsbz1gbmc6Ly8vJHtlfS9cdTAyNzVkaXIuanNgLGk9cl8oe3VzYWdlOjAsa2luZDoiZGlyZWN0aXZlIix0eXBlOm59KSxhPWlldChuLHQpO3JldHVybiBhLnR5cGVTb3VyY2VTcGFuPWkuY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCJEaXJlY3RpdmUiLGUsbyksYS51c2VzSW5oZXJpdGFuY2UmJmFldChuKSx7bWV0YWRhdGE6YSxzb3VyY2VNYXBVcmw6b319ZnVuY3Rpb24gb2V0KG4sdCl7bGV0IGU9bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkobixVTyx7Z2V0OigpPT57aWYoZT09PW51bGwpe2xldCBvPW5ldChuLHQpLGk9cl8oe3VzYWdlOjAsa2luZDoiZGlyZWN0aXZlIix0eXBlOm59KTtlPWkuY29tcGlsZUZhY3RvcnkodXksYG5nOi8vLyR7bi5uYW1lfS9cdTAyNzVmYWMuanNgLHtuYW1lOm8ubWV0YWRhdGEubmFtZSx0eXBlOm8ubWV0YWRhdGEudHlwZSx0eXBlQXJndW1lbnRDb3VudDowLGRlcHM6a1QobiksdGFyZ2V0OmkuRmFjdG9yeVRhcmdldC5EaXJlY3RpdmV9KX1yZXR1cm4gZX0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9ZnVuY3Rpb24geXZ0KG4pe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobi5wcm90b3R5cGUpPT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBpZXQobix0KXtsZXQgZT1sQigpLG89ZS5vd25Qcm9wTWV0YWRhdGEobik7cmV0dXJue25hbWU6bi5uYW1lLHR5cGU6bixzZWxlY3Rvcjp0LnNlbGVjdG9yIT09dm9pZCAwP3Quc2VsZWN0b3I6bnVsbCxob3N0OnQuaG9zdHx8bHYscHJvcE1ldGFkYXRhOm8saW5wdXRzOnQuaW5wdXRzfHx1YSxvdXRwdXRzOnQub3V0cHV0c3x8dWEscXVlcmllczpmSyhuLG8scmV0KSxsaWZlY3ljbGU6e3VzZXNPbkNoYW5nZXM6ZS5oYXNMaWZlY3ljbGVIb29rKG4sIm5nT25DaGFuZ2VzIil9LHR5cGVTb3VyY2VTcGFuOm51bGwsdXNlc0luaGVyaXRhbmNlOiF5dnQobiksZXhwb3J0QXM6d3Z0KHQuZXhwb3J0QXMpLHByb3ZpZGVyczp0LnByb3ZpZGVyc3x8bnVsbCx2aWV3UXVlcmllczpmSyhuLG8sc2V0KX19ZnVuY3Rpb24gYWV0KG4pe2xldCB0PU9iamVjdC5wcm90b3R5cGUsZT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobi5wcm90b3R5cGUpLmNvbnN0cnVjdG9yO2Zvcig7ZSYmZSE9PXQ7KSFjeShlKSYmIVZmKGUpJiZSdnQoZSkmJmVldChlLG51bGwpLGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfWZ1bmN0aW9uIHh2dChuKXtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP21ldChuKTpVbyhuKX1mdW5jdGlvbiB2dnQobix0KXtyZXR1cm57cHJvcGVydHlOYW1lOm4scHJlZGljYXRlOnh2dCh0LnNlbGVjdG9yKSxkZXNjZW5kYW50czp0LmRlc2NlbmRhbnRzLGZpcnN0OnQuZmlyc3QscmVhZDp0LnJlYWQ/dC5yZWFkOm51bGwsc3RhdGljOiEhdC5zdGF0aWMsZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6ISF0LmVtaXREaXN0aW5jdENoYW5nZXNPbmx5fX1mdW5jdGlvbiBmSyhuLHQsZSl7bGV0IG89W107Zm9yKGxldCBpIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShpKSl7bGV0IGE9dFtpXTthLmZvckVhY2gocj0+e2lmKGUocikpe2lmKCFyLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcihgQ2FuJ3QgY29uc3RydWN0IGEgcXVlcnkgZm9yIHRoZSBwcm9wZXJ0eSAiJHtpfSIgb2YgIiR7VmMobil9IiBzaW5jZSB0aGUgcXVlcnkgc2VsZWN0b3Igd2Fzbid0IGRlZmluZWQuYCk7aWYoYS5zb21lKGNldCkpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY29tYmluZSBASW5wdXQgZGVjb3JhdG9ycyB3aXRoIHF1ZXJ5IGRlY29yYXRvcnMiKTtvLnB1c2godnZ0KGkscikpfX0pfXJldHVybiBvfWZ1bmN0aW9uIHd2dChuKXtyZXR1cm4gbj09PXZvaWQgMD9udWxsOm1ldChuKX1mdW5jdGlvbiByZXQobil7bGV0IHQ9bi5uZ01ldGFkYXRhTmFtZTtyZXR1cm4gdD09PSJDb250ZW50Q2hpbGQifHx0PT09IkNvbnRlbnRDaGlsZHJlbiJ9ZnVuY3Rpb24gc2V0KG4pe2xldCB0PW4ubmdNZXRhZGF0YU5hbWU7cmV0dXJuIHQ9PT0iVmlld0NoaWxkInx8dD09PSJWaWV3Q2hpbGRyZW4ifWZ1bmN0aW9uIGNldChuKXtyZXR1cm4gbi5uZ01ldGFkYXRhTmFtZT09PSJJbnB1dCJ9ZnVuY3Rpb24gbWV0KG4pe3JldHVybiBuLnNwbGl0KCIsIikubWFwKHQ9PnQudHJpbSgpKX12YXIgU3Z0PVsibmdPbkNoYW5nZXMiLCJuZ09uSW5pdCIsIm5nT25EZXN0cm95IiwibmdEb0NoZWNrIiwibmdBZnRlclZpZXdJbml0IiwibmdBZnRlclZpZXdDaGVja2VkIiwibmdBZnRlckNvbnRlbnRJbml0IiwibmdBZnRlckNvbnRlbnRDaGVja2VkIl07ZnVuY3Rpb24gUnZ0KG4pe2xldCB0PWxCKCk7aWYoU3Z0LnNvbWUobz0+dC5oYXNMaWZlY3ljbGVIb29rKG4sbykpKXJldHVybiEwO2xldCBlPXQucHJvcE1ldGFkYXRhKG4pO2ZvcihsZXQgbyBpbiBlKXtsZXQgaT1lW29dO2ZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSsrKXtsZXQgcj1pW2FdLHM9ci5uZ01ldGFkYXRhTmFtZTtpZihjZXQocil8fHJldChyKXx8c2V0KHIpfHxzPT09Ik91dHB1dCJ8fHM9PT0iSG9zdEJpbmRpbmcifHxzPT09Ikhvc3RMaXN0ZW5lciIpcmV0dXJuITB9fXJldHVybiExfWZ1bmN0aW9uIEV2dChuLHQpe2xldCBlPW51bGwsbz1udWxsO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLFVPLHtnZXQ6KCk9PntpZihvPT09bnVsbCl7bGV0IGk9cEsobix0KSxhPXJfKHt1c2FnZTowLGtpbmQ6InBpcGUiLHR5cGU6aS50eXBlfSk7bz1hLmNvbXBpbGVGYWN0b3J5KHV5LGBuZzovLy8ke2kubmFtZX0vXHUwMjc1ZmFjLmpzYCx7bmFtZTppLm5hbWUsdHlwZTppLnR5cGUsdHlwZUFyZ3VtZW50Q291bnQ6MCxkZXBzOmtUKG4pLHRhcmdldDphLkZhY3RvcnlUYXJnZXQuUGlwZX0pfXJldHVybiBvfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobixCOCx7Z2V0OigpPT57aWYoZT09PW51bGwpe2xldCBpPXBLKG4sdCk7ZT1yXyh7dXNhZ2U6MCxraW5kOiJwaXBlIix0eXBlOmkudHlwZX0pLmNvbXBpbGVQaXBlKHV5LGBuZzovLy8ke2kubmFtZX0vXHUwMjc1cGlwZS5qc2AsaSl9cmV0dXJuIGV9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfWZ1bmN0aW9uIHBLKG4sdCl7cmV0dXJue3R5cGU6bixuYW1lOm4ubmFtZSxwaXBlTmFtZTp0Lm5hbWUscHVyZTp0LnB1cmUhPT12b2lkIDA/dC5wdXJlOiEwfX12YXIga3Z0PShuPXt9KT0+bixOdnQ9KG4sdCk9Pll2dChuLHQpLHd0PVJSKCJEaXJlY3RpdmUiLGt2dCx2b2lkIDAsdm9pZCAwLE52dCksVHZ0PShuPXt9KT0+T2JqZWN0LmFzc2lnbih7Y2hhbmdlRGV0ZWN0aW9uOnR0LkRlZmF1bHR9LG4pLEF2dD0obix0KT0+VXZ0KG4sdCksRj1SUigiQ29tcG9uZW50IixUdnQsd3Qsdm9pZCAwLEF2dCksRHZ0PW49Pk9iamVjdC5hc3NpZ24oe3B1cmU6ITB9LG4pLEl2dD0obix0KT0+R3Z0KG4sdCksWmY9UlIoIlBpcGUiLER2dCx2b2lkIDAsdm9pZCAwLEl2dCksenZ0PW49Pih7YmluZGluZ1Byb3BlcnR5TmFtZTpufSksZD14eSgiSW5wdXQiLHp2dCksSHZ0PW49Pih7YmluZGluZ1Byb3BlcnR5TmFtZTpufSksQj14eSgiT3V0cHV0IixIdnQpLEZ2dD1uPT4oe2hvc3RQcm9wZXJ0eU5hbWU6bn0pLEhhPXh5KCJIb3N0QmluZGluZyIsRnZ0KSxMdnQ9KG4sdCk9Pih7ZXZlbnROYW1lOm4sYXJnczp0fSkseG89eHkoIkhvc3RMaXN0ZW5lciIsTHZ0KSxCdnQ9T3Z0LFZ2dD1lZXQsanZ0PUV2dDt2YXIgVXZ0PUJ2dCxZdnQ9VnZ0LEd2dD1qdnQ7dmFyIFd2dD1uPT5uLHF2dD0obix0KT0+WHZ0KG4sdCksWj1SUigiTmdNb2R1bGUiLFd2dCx2b2lkIDAsdm9pZCAwLHF2dCk7dmFyIFp2dD1fdnQ7dmFyIFh2dD1adnQ7dmFyIF92PW5ldyB5dCgiQXBwbGljYXRpb24gSW5pdGlhbGl6ZXIiKSxnbD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmFwcEluaXRzPXQsdGhpcy5yZXNvbHZlPWRULHRoaXMucmVqZWN0PWRULHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKGUsbyk9Pnt0aGlzLnJlc29sdmU9ZSx0aGlzLnJlamVjdD1vfSl9cnVuSW5pdGlhbGl6ZXJzKCl7aWYodGhpcy5pbml0aWFsaXplZClyZXR1cm47bGV0IHQ9W10sZT0oKT0+e3RoaXMuZG9uZT0hMCx0aGlzLnJlc29sdmUoKX07aWYodGhpcy5hcHBJbml0cylmb3IobGV0IG89MDtvPHRoaXMuYXBwSW5pdHMubGVuZ3RoO28rKyl7bGV0IGk9dGhpcy5hcHBJbml0c1tvXSgpO2lmKFh3KGkpKXQucHVzaChpKTtlbHNlIGlmKExUKGkpKXtsZXQgYT1uZXcgUHJvbWlzZSgocixzKT0+e2kuc3Vic2NyaWJlKHtjb21wbGV0ZTpyLGVycm9yOnN9KX0pO3QucHVzaChhKX19UHJvbWlzZS5hbGwodCkudGhlbigoKT0+e2UoKX0pLmNhdGNoKG89Pnt0aGlzLnJlamVjdChvKX0pLHQubGVuZ3RoPT09MCYmZSgpLHRoaXMuaW5pdGlhbGl6ZWQ9ITB9fTtnbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxnbCkoSShfdiw4KSl9O2dsLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmdsLGZhY3Rvcnk6Z2wuXHUwMjc1ZmFjfSk7Z2wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdl19LHt0eXBlOkh9XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhnbCxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdl19LHt0eXBlOkh9XX1dfSxudWxsKX0pKCk7dmFyIFRiPW5ldyB5dCgiQXBwSWQiKTtmdW5jdGlvbiBRdnQoKXtyZXR1cm5gJHt4TCgpfSR7eEwoKX0ke3hMKCl9YH12YXIgS3Z0PXtwcm92aWRlOlRiLHVzZUZhY3Rvcnk6UXZ0LGRlcHM6W119O2Z1bmN0aW9uIHhMKCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoOTcrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjI1KSl9dmFyIFlCPW5ldyB5dCgiUGxhdGZvcm0gSW5pdGlhbGl6ZXIiKSxYZj1uZXcgeXQoIlBsYXRmb3JtIElEIiksSnZ0PW5ldyB5dCgiYXBwQm9vdHN0cmFwTGlzdGVuZXIiKSxobGU9bmV3IHl0KCJBcHBsaWNhdGlvbiBQYWNrYWdlcyBSb290IFVSTCIpO3ZhciBVYz1jbGFzc3tsb2codCl7Y29uc29sZS5sb2codCl9d2Fybih0KXtjb25zb2xlLndhcm4odCl9fTtVYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxVYyl9O1VjLlx1MDI3NXByb3Y9UHQoe3Rva2VuOlVjLGZhY3Rvcnk6VWMuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFVjLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBjcj1uZXcgeXQoIkxvY2FsZUlkIiksWVI9bmV3IHl0KCJEZWZhdWx0Q3VycmVuY3lDb2RlIiksX2xlPW5ldyB5dCgiVHJhbnNsYXRpb25zIiksQ2xlPW5ldyB5dCgiVHJhbnNsYXRpb25zRm9ybWF0IiksZEs7KGZ1bmN0aW9uKG4pe25bbi5FcnJvcj0wXT0iRXJyb3IiLG5bbi5XYXJuaW5nPTFdPSJXYXJuaW5nIixuW24uSWdub3JlPTJdPSJJZ25vcmUifSkoZEt8fChkSz17fSkpO3ZhciAkdnQ9ITA7dmFyIEtUPSR2dDt2YXIgRTg9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT10LHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPWV9fTt2YXIgR0I9ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBNVChuKX0sdDF0PUdCO3ZhciBlMXQ9ZnVuY3Rpb24obil7cmV0dXJuIFByb21pc2UucmVzb2x2ZShHQihuKSl9LG4xdD1lMXQ7dmFyIGZldD1mdW5jdGlvbihuKXtsZXQgdD1HQihuKSxlPXNfKG4pLG89TWIoZS5kZWNsYXJhdGlvbnMpLnJlZHVjZSgoaSxhKT0+e2xldCByPVZmKGEpO3JldHVybiByJiZpLnB1c2gobmV3IENUKHIpKSxpfSxbXSk7cmV0dXJuIG5ldyBFOCh0LG8pfSxvMXQ9ZmV0O3ZhciBpMXQ9ZnVuY3Rpb24obil7cmV0dXJuIFByb21pc2UucmVzb2x2ZShmZXQobikpfSxhMXQ9aTF0LGpmPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jb21waWxlTW9kdWxlU3luYz10MXQsdGhpcy5jb21waWxlTW9kdWxlQXN5bmM9bjF0LHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jPW8xdCx0aGlzLmNvbXBpbGVNb2R1bGVBbmRBbGxDb21wb25lbnRzQXN5bmM9YTF0fWNsZWFyQ2FjaGUoKXt9Y2xlYXJDYWNoZUZvcih0KXt9Z2V0TW9kdWxlSWQodCl7fX07amYuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8amYpfTtqZi5cdTAyNzVwcm92PVB0KHt0b2tlbjpqZixmYWN0b3J5OmpmLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhqZixbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVybltdfSxudWxsKX0pKCk7dmFyIHIxdD1uZXcgeXQoImNvbXBpbGVyT3B0aW9ucyIpO3ZhciBzMXQ9KCgpPT5Qcm9taXNlLnJlc29sdmUoMCkpKCk7ZnVuY3Rpb24gazgobil7dHlwZW9mIFpvbmU9PSJ1bmRlZmluZWQiP3MxdC50aGVuKCgpPT57biYmbi5hcHBseShudWxsLG51bGwpfSk6Wm9uZS5jdXJyZW50LnNjaGVkdWxlTWljcm9UYXNrKCJzY2hlZHVsZU1pY3JvdGFzayIsbil9ZnVuY3Rpb24gbDF0KCl7bGV0IG49TWkucmVxdWVzdEFuaW1hdGlvbkZyYW1lLHQ9TWkuY2FuY2VsQW5pbWF0aW9uRnJhbWU7aWYodHlwZW9mIFpvbmUhPSJ1bmRlZmluZWQiJiZuJiZ0KXtsZXQgZT1uW1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtlJiYobj1lKTtsZXQgbz10W1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTtvJiYodD1vKX1yZXR1cm57bmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOm4sbmF0aXZlQ2FuY2VsQW5pbWF0aW9uRnJhbWU6dH19dmFyIEN0PWNsYXNze2NvbnN0cnVjdG9yKHtlbmFibGVMb25nU3RhY2tUcmFjZTp0PSExLHNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb246ZT0hMSxzaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbjpvPSExfSl7aWYodGhpcy5oYXNQZW5kaW5nTWFjcm90YXNrcz0hMSx0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaXNTdGFibGU9ITAsdGhpcy5vblVuc3RhYmxlPW5ldyAkKCExKSx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3ICQoITEpLHRoaXMub25TdGFibGU9bmV3ICQoITEpLHRoaXMub25FcnJvcj1uZXcgJCghMSksdHlwZW9mIFpvbmU9PSJ1bmRlZmluZWQiKXRocm93IG5ldyBFcnJvcigiSW4gdGhpcyBjb25maWd1cmF0aW9uIEFuZ3VsYXIgcmVxdWlyZXMgWm9uZS5qcyIpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKTtsZXQgaT10aGlzO2kuX25lc3Rpbmc9MCxpLl9vdXRlcj1pLl9pbm5lcj1ab25lLmN1cnJlbnQsWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYyYmKGkuX2lubmVyPWkuX2lubmVyLmZvcmsobmV3IFpvbmUuVGFza1RyYWNraW5nWm9uZVNwZWMpKSx0JiZab25lLmxvbmdTdGFja1RyYWNlWm9uZVNwZWMmJihpLl9pbm5lcj1pLl9pbm5lci5mb3JrKFpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYykpLGkuc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbj0hbyYmZSxpLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uPW8saS5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9LTEsaS5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWU9bDF0KCkubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lLGYxdChpKX1zdGF0aWMgaXNJbkFuZ3VsYXJab25lKCl7cmV0dXJuIFpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpvbmUiKT09PSEwfXN0YXRpYyBhc3NlcnRJbkFuZ3VsYXJab25lKCl7aWYoIUN0LmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMgbm90ISIpfXN0YXRpYyBhc3NlcnROb3RJbkFuZ3VsYXJab25lKCl7aWYoQ3QuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBub3QgYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMhIil9cnVuKHQsZSxvKXtyZXR1cm4gdGhpcy5faW5uZXIucnVuKHQsZSxvKX1ydW5UYXNrKHQsZSxvLGkpe2xldCBhPXRoaXMuX2lubmVyLHI9YS5zY2hlZHVsZUV2ZW50VGFzaygiTmdab25lRXZlbnQ6ICIraSx0LGMxdCxkVCxkVCk7dHJ5e3JldHVybiBhLnJ1blRhc2socixlLG8pfWZpbmFsbHl7YS5jYW5jZWxUYXNrKHIpfX1ydW5HdWFyZGVkKHQsZSxvKXtyZXR1cm4gdGhpcy5faW5uZXIucnVuR3VhcmRlZCh0LGUsbyl9cnVuT3V0c2lkZUFuZ3VsYXIodCl7cmV0dXJuIHRoaXMuX291dGVyLnJ1bih0KX19LGMxdD17fTtmdW5jdGlvbiBXQihuKXtpZihuLl9uZXN0aW5nPT0wJiYhbi5oYXNQZW5kaW5nTWljcm90YXNrcyYmIW4uaXNTdGFibGUpdHJ5e24uX25lc3RpbmcrKyxuLm9uTWljcm90YXNrRW1wdHkuZW1pdChudWxsKX1maW5hbGx5e2lmKG4uX25lc3RpbmctLSwhbi5oYXNQZW5kaW5nTWljcm90YXNrcyl0cnl7bi5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bi5vblN0YWJsZS5lbWl0KG51bGwpKX1maW5hbGx5e24uaXNTdGFibGU9ITB9fX1mdW5jdGlvbiBtMXQobil7bi5pc0NoZWNrU3RhYmxlUnVubmluZ3x8bi5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQhPT0tMXx8KG4ubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPW4ubmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lLmNhbGwoTWksKCk9PntuLmZha2VUb3BFdmVudFRhc2t8fChuLmZha2VUb3BFdmVudFRhc2s9Wm9uZS5yb290LnNjaGVkdWxlRXZlbnRUYXNrKCJmYWtlVG9wRXZlbnRUYXNrIiwoKT0+e24ubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPS0xLE44KG4pLG4uaXNDaGVja1N0YWJsZVJ1bm5pbmc9ITAsV0Iobiksbi5pc0NoZWNrU3RhYmxlUnVubmluZz0hMX0sdm9pZCAwLCgpPT57fSwoKT0+e30pKSxuLmZha2VUb3BFdmVudFRhc2suaW52b2tlKCl9KSxOOChuKSl9ZnVuY3Rpb24gZjF0KG4pe2xldCB0PSgpPT57bTF0KG4pfTtuLl9pbm5lcj1uLl9pbm5lci5mb3JrKHtuYW1lOiJhbmd1bGFyIixwcm9wZXJ0aWVzOntpc0FuZ3VsYXJab25lOiEwfSxvbkludm9rZVRhc2s6KGUsbyxpLGEscixzKT0+e3RyeXtyZXR1cm4gZ0sobiksZS5pbnZva2VUYXNrKGksYSxyLHMpfWZpbmFsbHl7KG4uc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbiYmYS50eXBlPT09ImV2ZW50VGFzayJ8fG4uc2hvdWxkQ29hbGVzY2VSdW5DaGFuZ2VEZXRlY3Rpb24pJiZ0KCksdUsobil9fSxvbkludm9rZTooZSxvLGksYSxyLHMsbCk9Pnt0cnl7cmV0dXJuIGdLKG4pLGUuaW52b2tlKGksYSxyLHMsbCl9ZmluYWxseXtuLnNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uJiZ0KCksdUsobil9fSxvbkhhc1Rhc2s6KGUsbyxpLGEpPT57ZS5oYXNUYXNrKGksYSksbz09PWkmJihhLmNoYW5nZT09Im1pY3JvVGFzayI/KG4uX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPWEubWljcm9UYXNrLE44KG4pLFdCKG4pKTphLmNoYW5nZT09Im1hY3JvVGFzayImJihuLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPWEubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6KGUsbyxpLGEpPT4oZS5oYW5kbGVFcnJvcihpLGEpLG4ucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pm4ub25FcnJvci5lbWl0KGEpKSwhMSl9KX1mdW5jdGlvbiBOOChuKXtuLl9oYXNQZW5kaW5nTWljcm90YXNrc3x8KG4uc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbnx8bi5zaG91bGRDb2FsZXNjZVJ1bkNoYW5nZURldGVjdGlvbikmJm4ubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkIT09LTE/bi5oYXNQZW5kaW5nTWljcm90YXNrcz0hMDpuLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExfWZ1bmN0aW9uIGdLKG4pe24uX25lc3RpbmcrKyxuLmlzU3RhYmxlJiYobi5pc1N0YWJsZT0hMSxuLm9uVW5zdGFibGUuZW1pdChudWxsKSl9ZnVuY3Rpb24gdUsobil7bi5fbmVzdGluZy0tLFdCKG4pfXZhciBUOD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWFjcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgJCx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3ICQsdGhpcy5vblN0YWJsZT1uZXcgJCx0aGlzLm9uRXJyb3I9bmV3ICR9cnVuKHQsZSxvKXtyZXR1cm4gdC5hcHBseShlLG8pfXJ1bkd1YXJkZWQodCxlLG8pe3JldHVybiB0LmFwcGx5KGUsbyl9cnVuT3V0c2lkZUFuZ3VsYXIodCl7cmV0dXJuIHQoKX1ydW5UYXNrKHQsZSxvLGkpe3JldHVybiB0LmFwcGx5KGUsbyl9fTt2YXIgTWc9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fbmdab25lPXQsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLHQucnVuKCgpPT57dGhpcy50YXNrVHJhY2tpbmdab25lPXR5cGVvZiBab25lPT0idW5kZWZpbmVkIj9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pfV93YXRjaEFuZ3VsYXJFdmVudHMoKXt0aGlzLl9uZ1pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoe25leHQ6KCk9Pnt0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX2lzWm9uZVN0YWJsZT0hMX19KSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtuZXh0OigpPT57Q3QuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLGs4KCgpPT57dGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pfX0pfSl9aW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH1kZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJlbG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3VudH1pc1N0YWJsZSgpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJnRoaXMuX3BlbmRpbmdDb3VudD09PTAmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N9X3J1bkNhbGxiYWNrc0lmUmVhZHkoKXtpZih0aGlzLmlzU3RhYmxlKCkpazgoKCk9Pntmb3IoO3RoaXMuX2NhbGxiYWNrcy5sZW5ndGghPT0wOyl7bGV0IHQ9dGhpcy5fY2FsbGJhY2tzLnBvcCgpO2NsZWFyVGltZW91dCh0LnRpbWVvdXRJZCksdC5kb25lQ2IodGhpcy5fZGlkV29yayl9dGhpcy5fZGlkV29yaz0hMX0pO2Vsc2V7bGV0IHQ9dGhpcy5nZXRQZW5kaW5nVGFza3MoKTt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcihlPT5lLnVwZGF0ZUNiJiZlLnVwZGF0ZUNiKHQpPyhjbGVhclRpbWVvdXQoZS50aW1lb3V0SWQpLCExKTohMCksdGhpcy5fZGlkV29yaz0hMH19Z2V0UGVuZGluZ1Rhc2tzKCl7cmV0dXJuIHRoaXMudGFza1RyYWNraW5nWm9uZT90aGlzLnRhc2tUcmFja2luZ1pvbmUubWFjcm9UYXNrcy5tYXAodD0+KHtzb3VyY2U6dC5zb3VyY2UsY3JlYXRpb25Mb2NhdGlvbjp0LmNyZWF0aW9uTG9jYXRpb24sZGF0YTp0LmRhdGF9KSk6W119YWRkQ2FsbGJhY2sodCxlLG8pe2xldCBpPS0xO2UmJmU+MCYmKGk9c2V0VGltZW91dCgoKT0+e3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKGE9PmEudGltZW91dElkIT09aSksdCh0aGlzLl9kaWRXb3JrLHRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCkpfSxlKSksdGhpcy5fY2FsbGJhY2tzLnB1c2goe2RvbmVDYjp0LHRpbWVvdXRJZDppLHVwZGF0ZUNiOm99KX13aGVuU3RhYmxlKHQsZSxvKXtpZihvJiYhdGhpcy50YXNrVHJhY2tpbmdab25lKXRocm93IG5ldyBFcnJvcignVGFzayB0cmFja2luZyB6b25lIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiB1cGRhdGUgY2FsbGJhY2sgdG8gd2hlblN0YWJsZSgpLiBJcyAiem9uZS5qcy9wbHVnaW5zL3Rhc2stdHJhY2tpbmciIGxvYWRlZD8nKTt0aGlzLmFkZENhbGxiYWNrKHQsZSxvKSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9Z2V0UGVuZGluZ1JlcXVlc3RDb3VudCgpe3JldHVybiB0aGlzLl9wZW5kaW5nQ291bnR9ZmluZFByb3ZpZGVycyh0LGUsbyl7cmV0dXJuW119fTtNZy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxNZykoSShDdCkpfTtNZy5cdTAyNzVwcm92PVB0KHt0b2tlbjpNZyxmYWN0b3J5Ok1nLlx1MDI3NWZhY30pO01nLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q3R9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTWcsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q3R9XX0sbnVsbCl9KSgpO3ZhciBZQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FwcGxpY2F0aW9ucz1uZXcgTWFwLEQ4LmFkZFRvV2luZG93KHRoaXMpfXJlZ2lzdGVyQXBwbGljYXRpb24odCxlKXt0aGlzLl9hcHBsaWNhdGlvbnMuc2V0KHQsZSl9dW5yZWdpc3RlckFwcGxpY2F0aW9uKHQpe3RoaXMuX2FwcGxpY2F0aW9ucy5kZWxldGUodCl9dW5yZWdpc3RlckFsbEFwcGxpY2F0aW9ucygpe3RoaXMuX2FwcGxpY2F0aW9ucy5jbGVhcigpfWdldFRlc3RhYmlsaXR5KHQpe3JldHVybiB0aGlzLl9hcHBsaWNhdGlvbnMuZ2V0KHQpfHxudWxsfWdldEFsbFRlc3RhYmlsaXRpZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMudmFsdWVzKCkpfWdldEFsbFJvb3RFbGVtZW50cygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy5rZXlzKCkpfWZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LGU9ITApe3JldHVybiBEOC5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LGUpfX07WUMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WUMpfTtZQy5cdTAyNzVwcm92PVB0KHt0b2tlbjpZQyxmYWN0b3J5OllDLlx1MDI3NWZhY30pO1lDLmN0b3JQYXJhbWV0ZXJzPSgpPT5bXTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWUMsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0sbnVsbCl9KSgpO3ZhciBBOD1jbGFzc3thZGRUb1dpbmRvdyh0KXt9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsZSxvKXtyZXR1cm4gbnVsbH19O2Z1bmN0aW9uIHBldChuKXtEOD1ufXZhciBEOD1uZXcgQTg7dmFyIGRldD0hMCxnZXQ9ITE7ZnVuY3Rpb24gd2IoKXtyZXR1cm4gZ2V0PSEwLGRldH1mdW5jdGlvbiB1ZXQoKXtpZihnZXQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5hYmxlIHByb2QgbW9kZSBhZnRlciBwbGF0Zm9ybSBzZXR1cC4iKTsodHlwZW9mIG5nRGV2TW9kZT09PXZvaWQgMHx8ISFuZ0Rldk1vZGUpJiYoTWkubmdEZXZNb2RlPSExKSxkZXQ9ITF9dmFyIGx5LHAxdD1kMXQ7ZnVuY3Rpb24gZDF0KG4sdCxlKXtuZ0Rldk1vZGUmJkEwdChlKTtsZXQgbz1uZXcgTVQoZSk7aWYodHlwZW9mIG5nSml0TW9kZSE9InVuZGVmaW5lZCImJiFuZ0ppdE1vZGUpcmV0dXJuIFByb21pc2UucmVzb2x2ZShvKTtsZXQgaT1uLmdldChyMXQsW10pLmNvbmNhdCh0KTtpZihkdnQoe2RlZmF1bHRFbmNhcHN1bGF0aW9uOmhLKGkubWFwKGM9PmMuZGVmYXVsdEVuY2Fwc3VsYXRpb24pKSxwcmVzZXJ2ZVdoaXRlc3BhY2VzOmhLKGkubWFwKGM9PmMucHJlc2VydmVXaGl0ZXNwYWNlcykpfSksS0N0KCkpcmV0dXJuIFByb21pc2UucmVzb2x2ZShvKTtsZXQgYT1QMXQoaS5tYXAoYz0+Yy5wcm92aWRlcnMpKTtpZihhLmxlbmd0aD09PTApcmV0dXJuIFByb21pc2UucmVzb2x2ZShvKTtsZXQgcj1yXyh7dXNhZ2U6MCxraW5kOiJOZ01vZHVsZSIsdHlwZTplfSksbD0kZS5jcmVhdGUoe3Byb3ZpZGVyczphfSkuZ2V0KHIuUmVzb3VyY2VMb2FkZXIpO3JldHVybiBaQ3QoYz0+UHJvbWlzZS5yZXNvbHZlKGwuZ2V0KGMpKSkudGhlbigoKT0+byl9ZnVuY3Rpb24gZzF0KCl7bmdEZXZNb2RlJiZWT3QoKX12YXIgdTF0PWcxdCxoMXQ9XzF0O2Z1bmN0aW9uIF8xdChuKXtyZXR1cm4gbi5pc0JvdW5kVG9Nb2R1bGV9dmFyIGhldD1uZXcgeXQoIkFsbG93TXVsdGlwbGVUb2tlbiIpLHlUPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy50b2tlbj1lfX07ZnVuY3Rpb24gQzF0KG4pe2lmKGx5JiYhbHkuZGVzdHJveWVkJiYhbHkuaW5qZWN0b3IuZ2V0KGhldCwhMSkpdGhyb3cgbmV3IEVycm9yKCJUaGVyZSBjYW4gYmUgb25seSBvbmUgcGxhdGZvcm0uIERlc3Ryb3kgdGhlIHByZXZpb3VzIG9uZSB0byBjcmVhdGUgYSBuZXcgb25lLiIpO3UxdCgpLGx5PW4uZ2V0KEdDKTtsZXQgdD1uLmdldChZQixudWxsKTtyZXR1cm4gdCYmdC5mb3JFYWNoKGU9PmUoKSksbHl9ZnVuY3Rpb24gcUIobix0LGU9W10pe2xldCBvPWBQbGF0Zm9ybTogJHt0fWAsaT1uZXcgeXQobyk7cmV0dXJuKGE9W10pPT57bGV0IHI9X2V0KCk7aWYoIXJ8fHIuaW5qZWN0b3IuZ2V0KGhldCwhMSkpaWYobiluKGUuY29uY2F0KGEpLmNvbmNhdCh7cHJvdmlkZTppLHVzZVZhbHVlOiEwfSkpO2Vsc2V7bGV0IHM9ZS5jb25jYXQoYSkuY29uY2F0KHtwcm92aWRlOmksdXNlVmFsdWU6ITB9LHtwcm92aWRlOkhULHVzZVZhbHVlOiJwbGF0Zm9ybSJ9KTtDMXQoJGUuY3JlYXRlKHtwcm92aWRlcnM6cyxuYW1lOm99KSl9cmV0dXJuIE0xdChpKX19ZnVuY3Rpb24gTTF0KG4pe2xldCB0PV9ldCgpO2lmKCF0KXRocm93IG5ldyBFcnJvcigiTm8gcGxhdGZvcm0gZXhpc3RzISIpO2lmKCF0LmluamVjdG9yLmdldChuLG51bGwpKXRocm93IG5ldyBFcnJvcigiQSBwbGF0Zm9ybSB3aXRoIGEgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gaGFzIGJlZW4gY3JlYXRlZC4gUGxlYXNlIGRlc3Ryb3kgaXQgZmlyc3QuIik7cmV0dXJuIHR9ZnVuY3Rpb24gX2V0KCl7cmV0dXJuIGx5JiYhbHkuZGVzdHJveWVkP2x5Om51bGx9dmFyIEdDPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2luamVjdG9yPXQsdGhpcy5fbW9kdWxlcz1bXSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdLHRoaXMuX2Rlc3Ryb3llZD0hMX1ib290c3RyYXBNb2R1bGVGYWN0b3J5KHQsZSl7bGV0IG89ZT9lLm5nWm9uZTp2b2lkIDAsaT1lJiZlLm5nWm9uZUV2ZW50Q29hbGVzY2luZ3x8ITEsYT1lJiZlLm5nWm9uZVJ1bkNvYWxlc2Npbmd8fCExLHI9YjF0KG8se25nWm9uZUV2ZW50Q29hbGVzY2luZzppLG5nWm9uZVJ1bkNvYWxlc2Npbmc6YX0pLHM9W3twcm92aWRlOkN0LHVzZVZhbHVlOnJ9XTtyZXR1cm4gci5ydW4oKCk9PntsZXQgbD0kZS5jcmVhdGUoe3Byb3ZpZGVyczpzLHBhcmVudDp0aGlzLmluamVjdG9yLG5hbWU6dC5tb2R1bGVUeXBlLm5hbWV9KSxjPXQuY3JlYXRlKGwpLG09Yy5pbmplY3Rvci5nZXQoeWEsbnVsbCk7aWYoIW0pdGhyb3cgbmV3IEVycm9yKCJObyBFcnJvckhhbmRsZXIuIElzIHBsYXRmb3JtIG1vZHVsZSAoQnJvd3Nlck1vZHVsZSkgaW5jbHVkZWQ/Iik7cmV0dXJuIHIucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntsZXQgZj1yLm9uRXJyb3Iuc3Vic2NyaWJlKHtuZXh0OnA9PnttLmhhbmRsZUVycm9yKHApfX0pO2Mub25EZXN0cm95KCgpPT57STgodGhpcy5fbW9kdWxlcyxjKSxmLnVuc3Vic2NyaWJlKCl9KX0pLE8xdChtLHIsKCk9PntsZXQgZj1jLmluamVjdG9yLmdldChnbCk7cmV0dXJuIGYucnVuSW5pdGlhbGl6ZXJzKCksZi5kb25lUHJvbWlzZS50aGVuKCgpPT57aWYoS1Qpe2xldCBwPWMuaW5qZWN0b3IuZ2V0KGNyLGNUKTtWQihwfHxjVCl9cmV0dXJuIHRoaXMuX21vZHVsZURvQm9vdHN0cmFwKGMpLGN9KX0pfSl9Ym9vdHN0cmFwTW9kdWxlKHQsZT1bXSl7bGV0IG89Q2V0KHt9LGUpO3JldHVybiBwMXQodGhpcy5pbmplY3RvcixvLHQpLnRoZW4oaT0+dGhpcy5ib290c3RyYXBNb2R1bGVGYWN0b3J5KGksbykpfV9tb2R1bGVEb0Jvb3RzdHJhcCh0KXtsZXQgZT10LmluamVjdG9yLmdldChuYSk7aWYodC5fYm9vdHN0cmFwQ29tcG9uZW50cy5sZW5ndGg+MCl0Ll9ib290c3RyYXBDb21wb25lbnRzLmZvckVhY2gobz0+ZS5ib290c3RyYXAobykpO2Vsc2UgaWYodC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKXQuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcChlKTtlbHNlIHRocm93IG5ldyBFcnJvcihgVGhlIG1vZHVsZSAke09vKHQuaW5zdGFuY2UuY29uc3RydWN0b3IpfSB3YXMgYm9vdHN0cmFwcGVkLCBidXQgaXQgZG9lcyBub3QgZGVjbGFyZSAiQE5nTW9kdWxlLmJvb3RzdHJhcCIgY29tcG9uZW50cyBub3IgYSAibmdEb0Jvb3RzdHJhcCIgbWV0aG9kLiBQbGVhc2UgZGVmaW5lIG9uZSBvZiB0aGVzZS5gKTt0aGlzLl9tb2R1bGVzLnB1c2godCl9b25EZXN0cm95KHQpe3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCh0KX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5faW5qZWN0b3J9ZGVzdHJveSgpe2lmKHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBwbGF0Zm9ybSBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZCEiKTt0aGlzLl9tb2R1bGVzLnNsaWNlKCkuZm9yRWFjaCh0PT50LmRlc3Ryb3koKSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKHQ9PnQoKSksdGhpcy5fZGVzdHJveWVkPSEwfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfX07R0MuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8R0MpKEkoJGUpKX07R0MuXHUwMjc1cHJvdj1QdCh7dG9rZW46R0MsZmFjdG9yeTpHQy5cdTAyNzVmYWN9KTtHQy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiRlfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEdDLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOiRlfV19LG51bGwpfSkoKTtmdW5jdGlvbiBiMXQobix0KXtsZXQgZTtyZXR1cm4gbj09PSJub29wIj9lPW5ldyBUODplPShuPT09InpvbmUuanMiP3ZvaWQgMDpuKXx8bmV3IEN0KHtlbmFibGVMb25nU3RhY2tUcmFjZTp3YigpLHNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb246ISEodCE9bnVsbCYmdC5uZ1pvbmVFdmVudENvYWxlc2NpbmcpLHNob3VsZENvYWxlc2NlUnVuQ2hhbmdlRGV0ZWN0aW9uOiEhKHQhPW51bGwmJnQubmdab25lUnVuQ29hbGVzY2luZyl9KSxlfWZ1bmN0aW9uIE8xdChuLHQsZSl7dHJ5e2xldCBvPWUoKTtyZXR1cm4gWHcobyk/by5jYXRjaChpPT57dGhyb3cgdC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bi5oYW5kbGVFcnJvcihpKSksaX0pOm99Y2F0Y2gobyl7dGhyb3cgdC5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bi5oYW5kbGVFcnJvcihvKSksb319ZnVuY3Rpb24gQ2V0KG4sdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/bj10LnJlZHVjZShDZXQsbik6bj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbiksdCksbn12YXIgbmE9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhKXt0aGlzLl96b25lPXQsdGhpcy5faW5qZWN0b3I9ZSx0aGlzLl9leGNlcHRpb25IYW5kbGVyPW8sdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPWksdGhpcy5faW5pdFN0YXR1cz1hLHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl92aWV3cz1bXSx0aGlzLl9ydW5uaW5nVGljaz0hMSx0aGlzLl9zdGFibGU9ITAsdGhpcy5jb21wb25lbnRUeXBlcz1bXSx0aGlzLmNvbXBvbmVudHM9W10sdGhpcy5fb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlwdGlvbj10aGlzLl96b25lLm9uTWljcm90YXNrRW1wdHkuc3Vic2NyaWJlKHtuZXh0OigpPT57dGhpcy5fem9uZS5ydW4oKCk9Pnt0aGlzLnRpY2soKX0pfX0pO2xldCByPW5ldyBEbihsPT57dGhpcy5fc3RhYmxlPXRoaXMuX3pvbmUuaXNTdGFibGUmJiF0aGlzLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWljcm90YXNrcyx0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57bC5uZXh0KHRoaXMuX3N0YWJsZSksbC5jb21wbGV0ZSgpfSl9KSxzPW5ldyBEbihsPT57bGV0IGM7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2M9dGhpcy5fem9uZS5vblN0YWJsZS5zdWJzY3JpYmUoKCk9PntDdC5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksazgoKCk9PnshdGhpcy5fc3RhYmxlJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIXRoaXMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3MmJih0aGlzLl9zdGFibGU9ITAsbC5uZXh0KCEwKSl9KX0pfSk7bGV0IG09dGhpcy5fem9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSgoKT0+e0N0LmFzc2VydEluQW5ndWxhclpvbmUoKSx0aGlzLl9zdGFibGUmJih0aGlzLl9zdGFibGU9ITEsdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2wubmV4dCghMSl9KSl9KTtyZXR1cm4oKT0+e2MudW5zdWJzY3JpYmUoKSxtLnVuc3Vic2NyaWJlKCl9fSk7dGhpcy5pc1N0YWJsZT15bihyLHMucGlwZShCYygpKSl9Ym9vdHN0cmFwKHQsZSl7aWYoIXRoaXMuX2luaXRTdGF0dXMuZG9uZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBib290c3RyYXAgYXMgdGhlcmUgYXJlIHN0aWxsIGFzeW5jaHJvbm91cyBpbml0aWFsaXplcnMgcnVubmluZy4gQm9vdHN0cmFwIGNvbXBvbmVudHMgaW4gdGhlIGBuZ0RvQm9vdHN0cmFwYCBtZXRob2Qgb2YgdGhlIHJvb3QgbW9kdWxlLiIpO2xldCBvO3QgaW5zdGFuY2VvZiBwVD9vPXQ6bz10aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCksdGhpcy5jb21wb25lbnRUeXBlcy5wdXNoKG8uY29tcG9uZW50VHlwZSk7bGV0IGk9aDF0KG8pP3ZvaWQgMDp0aGlzLl9pbmplY3Rvci5nZXQoUGIpLGE9ZXx8by5zZWxlY3RvcixyPW8uY3JlYXRlKCRlLk5VTEwsW10sYSxpKSxzPXIubG9jYXRpb24ubmF0aXZlRWxlbWVudCxsPXIuaW5qZWN0b3IuZ2V0KE1nLG51bGwpLGM9bCYmci5pbmplY3Rvci5nZXQoWUMpO3JldHVybiBsJiZjJiZjLnJlZ2lzdGVyQXBwbGljYXRpb24ocyxsKSxyLm9uRGVzdHJveSgoKT0+e3RoaXMuZGV0YWNoVmlldyhyLmhvc3RWaWV3KSxJOCh0aGlzLmNvbXBvbmVudHMsciksYyYmYy51bnJlZ2lzdGVyQXBwbGljYXRpb24ocyl9KSx0aGlzLl9sb2FkQ29tcG9uZW50KHIpLCh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmd2IoKSYmdGhpcy5faW5qZWN0b3IuZ2V0KFVjKS5sb2coIkFuZ3VsYXIgaXMgcnVubmluZyBpbiBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RNb2RlKCkgdG8gZW5hYmxlIHByb2R1Y3Rpb24gbW9kZS4iKSxyfXRpY2soKXtpZih0aGlzLl9ydW5uaW5nVGljayl0aHJvdyBuZXcgRXJyb3IoIkFwcGxpY2F0aW9uUmVmLnRpY2sgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5Iik7dHJ5e3RoaXMuX3J1bm5pbmdUaWNrPSEwO2ZvcihsZXQgdCBvZiB0aGlzLl92aWV3cyl0LmRldGVjdENoYW5nZXMoKTtpZigodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJndiKCkpZm9yKGxldCB0IG9mIHRoaXMuX3ZpZXdzKXQuY2hlY2tOb0NoYW5nZXMoKX1jYXRjaCh0KXt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT50aGlzLl9leGNlcHRpb25IYW5kbGVyLmhhbmRsZUVycm9yKHQpKX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExfX1hdHRhY2hWaWV3KHQpe2xldCBlPXQ7dGhpcy5fdmlld3MucHVzaChlKSxlLmF0dGFjaFRvQXBwUmVmKHRoaXMpfWRldGFjaFZpZXcodCl7bGV0IGU9dDtJOCh0aGlzLl92aWV3cyxlKSxlLmRldGFjaEZyb21BcHBSZWYoKX1fbG9hZENvbXBvbmVudCh0KXt0aGlzLmF0dGFjaFZpZXcodC5ob3N0VmlldyksdGhpcy50aWNrKCksdGhpcy5jb21wb25lbnRzLnB1c2godCksdGhpcy5faW5qZWN0b3IuZ2V0KEp2dCxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaChvPT5vKHQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFjaCh0PT50LmRlc3Ryb3koKSksdGhpcy5fb25NaWNyb3Rhc2tFbXB0eVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWdldCB2aWV3Q291bnQoKXtyZXR1cm4gdGhpcy5fdmlld3MubGVuZ3RofX07bmEuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bmEpKEkoQ3QpLEkoJGUpLEkoeWEpLEkoX28pLEkoZ2wpKX07bmEuXHUwMjc1cHJvdj1QdCh7dG9rZW46bmEsZmFjdG9yeTpuYS5cdTAyNzVmYWN9KTtuYS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkN0fSx7dHlwZTokZX0se3R5cGU6eWF9LHt0eXBlOl9vfSx7dHlwZTpnbH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhuYSxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpDdH0se3R5cGU6JGV9LHt0eXBlOnlhfSx7dHlwZTpfb30se3R5cGU6Z2x9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIEk4KG4sdCl7bGV0IGU9bi5pbmRleE9mKHQpO2U+LTEmJm4uc3BsaWNlKGUsMSl9ZnVuY3Rpb24gaEsobil7Zm9yKGxldCB0PW4ubGVuZ3RoLTE7dD49MDt0LS0paWYoblt0XSE9PXZvaWQgMClyZXR1cm4gblt0XX1mdW5jdGlvbiBQMXQobil7bGV0IHQ9W107cmV0dXJuIG4uZm9yRWFjaChlPT5lJiZ0LnB1c2goLi4uZSkpLHR9dmFyIF9LPSIjIix5MXQ9Ik5nRmFjdG9yeSIsUFI9Y2xhc3N7fSx4MXQ9e2ZhY3RvcnlQYXRoUHJlZml4OiIiLGZhY3RvcnlQYXRoU3VmZml4OiIubmdmYWN0b3J5In0sak89Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9jb21waWxlcj10LHRoaXMuX2NvbmZpZz1lfHx4MXR9bG9hZCh0KXtyZXR1cm4hS1QmJnRoaXMuX2NvbXBpbGVyIGluc3RhbmNlb2YgamY/dGhpcy5sb2FkRmFjdG9yeSh0KTp0aGlzLmxvYWRBbmRDb21waWxlKHQpfWxvYWRBbmRDb21waWxlKHQpe2xldFtlLG9dPXQuc3BsaXQoX0spO3JldHVybiBvPT09dm9pZCAwJiYobz0iZGVmYXVsdCIpLFN5c3RlbS5pbXBvcnQoZSkudGhlbihpPT5pW29dKS50aGVuKGk9PkNLKGksZSxvKSkudGhlbihpPT50aGlzLl9jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmMoaSkpfWxvYWRGYWN0b3J5KHQpe2xldFtlLG9dPXQuc3BsaXQoX0spLGk9eTF0O3JldHVybiBvPT09dm9pZCAwJiYobz0iZGVmYXVsdCIsaT0iIiksU3lzdGVtLmltcG9ydCh0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhQcmVmaXgrZSt0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhTdWZmaXgpLnRoZW4oYT0+YVtvK2ldKS50aGVuKGE9PkNLKGEsZSxvKSl9fTtqTy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxqTykoSShqZiksSShQUiw4KSl9O2pPLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmpPLGZhY3Rvcnk6ak8uXHUwMjc1ZmFjfSk7ak8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpqZn0se3R5cGU6UFIsZGVjb3JhdG9yczpbe3R5cGU6SH1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGpPLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmpmfSx7dHlwZTpQUixkZWNvcmF0b3JzOlt7dHlwZTpIfV19XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIENLKG4sdCxlKXtpZighbil0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kICcke2V9JyBpbiAnJHt0fSdgKTtyZXR1cm4gbn1mdW5jdGlvbiB2MXQobil7cmV0dXJuIG51bGx9dmFyIE1ldD12MXQ7dmFyIHcxdD1be3Byb3ZpZGU6WGYsdXNlVmFsdWU6InVua25vd24ifSx7cHJvdmlkZTpHQyxkZXBzOlskZV19LHtwcm92aWRlOllDLGRlcHM6W119LHtwcm92aWRlOlVjLGRlcHM6W119XSxiZXQ9cUIobnVsbCwiY29yZSIsdzF0KTtmdW5jdGlvbiBTMXQoKXtyZXR1cm4gQXh0fWZ1bmN0aW9uIFIxdCgpe3JldHVybiBEeHR9ZnVuY3Rpb24gRTF0KG4pe3JldHVybiBuPW58fGsxdCgpLEtUJiZWQihuKSxufWZ1bmN0aW9uIGsxdCgpe3JldHVybiB0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZSYmdHlwZW9mIGdvb2chPSJ1bmRlZmluZWQiJiZnb29nLmdldExvY2FsZSgpIT09ImVuIj9nb29nLmdldExvY2FsZSgpOktUJiZ0eXBlb2YgJGxvY2FsaXplIT0idW5kZWZpbmVkIiYmJGxvY2FsaXplLmxvY2FsZXx8Y1R9dmFyIE4xdD1NeXQsT2V0PVt7cHJvdmlkZTpuYSx1c2VDbGFzczpuYSxkZXBzOltDdCwkZSx5YSxfbyxnbF19LHtwcm92aWRlOkd4dCxkZXBzOltDdF0sdXNlRmFjdG9yeTpUMXR9LHtwcm92aWRlOmdsLHVzZUNsYXNzOmdsLGRlcHM6W1tuZXcgSCxfdl1dfSx7cHJvdmlkZTpqZix1c2VDbGFzczpqZixkZXBzOltdfSxLdnQse3Byb3ZpZGU6a28sdXNlRmFjdG9yeTpTMXQsZGVwczpbXX0se3Byb3ZpZGU6UHIsdXNlRmFjdG9yeTpSMXQsZGVwczpbXX0se3Byb3ZpZGU6Y3IsdXNlRmFjdG9yeTpFMXQsZGVwczpbW25ldyBOKGNyKSxuZXcgSCxuZXcgWW9dXX0se3Byb3ZpZGU6WVIsdXNlVmFsdWU6TjF0fV07ZnVuY3Rpb24gVDF0KG4pe2xldCB0PVtdO3JldHVybiBuLm9uU3RhYmxlLnN1YnNjcmliZSgoKT0+e2Zvcig7dC5sZW5ndGg7KXQucG9wKCkoKX0pLGZ1bmN0aW9uKGUpe3QucHVzaChlKX19dmFyIFBnPWNsYXNze2NvbnN0cnVjdG9yKHQpe319O1BnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFBnKShJKG5hKSl9O1BnLlx1MDI3NW1vZD1xKHt0eXBlOlBnfSk7UGcuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpPZXR9KTtQZy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm5hfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFBnLFt7dHlwZTpaLGFyZ3M6W3twcm92aWRlcnM6T2V0fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpuYX1dfSxudWxsKX0pKCk7dmFyIE1LOyhmdW5jdGlvbihuKXtuW24uQ3JlYXRlVmlld05vZGVzPTBdPSJDcmVhdGVWaWV3Tm9kZXMiLG5bbi5DaGVja05vQ2hhbmdlcz0xXT0iQ2hlY2tOb0NoYW5nZXMiLG5bbi5DaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzPTJdPSJDaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzIixuW24uQ2hlY2tBbmRVcGRhdGU9M109IkNoZWNrQW5kVXBkYXRlIixuW24uQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cz00XT0iQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cyIsbltuLkRlc3Ryb3k9NV09IkRlc3Ryb3kifSkoTUt8fChNSz17fSkpO3ZhciBiSzsoZnVuY3Rpb24obil7bltuLmNyZWF0ZT0wXT0iY3JlYXRlIixuW24uZGV0ZWN0Q2hhbmdlcz0xXT0iZGV0ZWN0Q2hhbmdlcyIsbltuLmNoZWNrTm9DaGFuZ2VzPTJdPSJjaGVja05vQ2hhbmdlcyIsbltuLmRlc3Ryb3k9M109ImRlc3Ryb3kiLG5bbi5oYW5kbGVFdmVudD00XT0iaGFuZGxlRXZlbnQifSkoYkt8fChiSz17fSkpO3R5cGVvZiBuZ0Rldk1vZGUhPSJ1bmRlZmluZWQiJiZuZ0Rldk1vZGUmJihNaS4kbG9jYWxpemU9TWkuJGxvY2FsaXplfHxmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiSXQgbG9va3MgbGlrZSB5b3VyIGFwcGxpY2F0aW9uIG9yIG9uZSBvZiBpdHMgZGVwZW5kZW5jaWVzIGlzIHVzaW5nIGkxOG4uXG5Bbmd1bGFyIDkgaW50cm9kdWNlZCBhIGdsb2JhbCBgJGxvY2FsaXplKClgIGZ1bmN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgbG9hZGVkLlxuUGxlYXNlIHJ1biBgbmcgYWRkIEBhbmd1bGFyL2xvY2FsaXplYCBmcm9tIHRoZSBBbmd1bGFyIENMSS5cbihGb3Igbm9uLUNMSSBwcm9qZWN0cywgYWRkIGBpbXBvcnQgJ0Bhbmd1bGFyL2xvY2FsaXplL2luaXQnO2AgdG8geW91ciBgcG9seWZpbGxzLnRzYCBmaWxlLlxuRm9yIHNlcnZlci1zaWRlIHJlbmRlcmluZyBhcHBsaWNhdGlvbnMgYWRkIHRoZSBpbXBvcnQgdG8geW91ciBgbWFpbi5zZXJ2ZXIudHNgIGZpbGUuKSIpfSk7dmFyIEExdD10eXBlb2YgZ2xvYmFsVGhpcyE9InVuZGVmaW5lZCImJmdsb2JhbFRoaXMsRDF0PXR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZ3aW5kb3csSTF0PXR5cGVvZiBzZWxmIT0idW5kZWZpbmVkIiYmdHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlIT0idW5kZWZpbmVkIiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmLHoxdD10eXBlb2YgZ2xvYmFsIT0idW5kZWZpbmVkIiYmZ2xvYmFsLEgxdD1BMXR8fHoxdHx8RDF0fHxJMXQ7dmFyIFpCPWZ1bmN0aW9uKG4sLi4udCl7aWYoWkIudHJhbnNsYXRlKXtsZXQgbz1aQi50cmFuc2xhdGUobix0KTtuPW9bMF0sdD1vWzFdfWxldCBlPVBldChuWzBdLG4ucmF3WzBdKTtmb3IobGV0IG89MTtvPG4ubGVuZ3RoO28rKyllKz10W28tMV0rUGV0KG5bb10sbi5yYXdbb10pO3JldHVybiBlfSx5ZXQ9IjoiO2Z1bmN0aW9uIFBldChuLHQpe3JldHVybiB0LmNoYXJBdCgwKT09PXlldD9uLnN1YnN0cmluZyhGMXQobix0KSsxKTpufWZ1bmN0aW9uIEYxdChuLHQpe2ZvcihsZXQgZT0xLG89MTtlPG4ubGVuZ3RoO2UrKyxvKyspaWYodFtvXT09PSJcXCIpbysrO2Vsc2UgaWYobltlXT09PXlldClyZXR1cm4gZTt0aHJvdyBuZXcgRXJyb3IoYFVudGVybWluYXRlZCAkbG9jYWxpemUgbWV0YWRhdGEgYmxvY2sgaW4gIiR7dH0iLmApfUgxdC4kbG9jYWxpemU9WkI7dmFyIHRWPW51bGw7ZnVuY3Rpb24gd2coKXtyZXR1cm4gdFZ9ZnVuY3Rpb24gemV0KG4pe3RWfHwodFY9bil9dmFyIGFBPWNsYXNze307dmFyIF90PW5ldyB5dCgiRG9jdW1lbnRUb2tlbiIpO3ZhciBYcz1jbGFzc3toaXN0b3J5R28odCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX19O1hzLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFhzKX07WHMuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpIZXQsdG9rZW46WHMscHJvdmlkZWRJbjoicGxhdGZvcm0ifSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFhzLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicGxhdGZvcm0iLHVzZUZhY3Rvcnk6SGV0fV19XSxudWxsLG51bGwpfSkoKTtmdW5jdGlvbiBIZXQoKXtyZXR1cm4gSShJYil9dmFyIHlsZT1uZXcgeXQoIkxvY2F0aW9uIEluaXRpYWxpemVkIiksSWI9Y2xhc3MgZXh0ZW5kcyBYc3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10LHRoaXMuX2luaXQoKX1faW5pdCgpe3RoaXMubG9jYXRpb249d2luZG93LmxvY2F0aW9uLHRoaXMuX2hpc3Rvcnk9d2luZG93Lmhpc3Rvcnl9Z2V0QmFzZUhyZWZGcm9tRE9NKCl7cmV0dXJuIHdnKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKHQpe2xldCBlPXdnKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKTtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCwhMSksKCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLHQpfW9uSGFzaENoYW5nZSh0KXtsZXQgZT13ZygpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93Iik7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdCwhMSksKCk9PmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdCl9Z2V0IGhyZWYoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ocmVmfWdldCBwcm90b2NvbCgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnByb3RvY29sfWdldCBob3N0bmFtZSgpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhvc3RuYW1lfWdldCBwb3J0KCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucG9ydH1nZXQgcGF0aG5hbWUoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wYXRobmFtZX1nZXQgc2VhcmNoKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uc2VhcmNofWdldCBoYXNoKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaGFzaH1zZXQgcGF0aG5hbWUodCl7dGhpcy5sb2NhdGlvbi5wYXRobmFtZT10fXB1c2hTdGF0ZSh0LGUsbyl7eGV0KCk/dGhpcy5faGlzdG9yeS5wdXNoU3RhdGUodCxlLG8pOnRoaXMubG9jYXRpb24uaGFzaD1vfXJlcGxhY2VTdGF0ZSh0LGUsbyl7eGV0KCk/dGhpcy5faGlzdG9yeS5yZXBsYWNlU3RhdGUodCxlLG8pOnRoaXMubG9jYXRpb24uaGFzaD1vfWZvcndhcmQoKXt0aGlzLl9oaXN0b3J5LmZvcndhcmQoKX1iYWNrKCl7dGhpcy5faGlzdG9yeS5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dGhpcy5faGlzdG9yeS5nbyh0KX1nZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9oaXN0b3J5LnN0YXRlfX07SWIuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SWIpKEkoX3QpKX07SWIuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpGZXQsdG9rZW46SWIscHJvdmlkZWRJbjoicGxhdGZvcm0ifSk7SWIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJYixbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InBsYXRmb3JtIix1c2VGYWN0b3J5OkZldH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIHhldCgpe3JldHVybiEhd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlfWZ1bmN0aW9uIEZldCgpe3JldHVybiBuZXcgSWIoSShfdCkpfWZ1bmN0aW9uIHJWKG4sdCl7aWYobi5sZW5ndGg9PTApcmV0dXJuIHQ7aWYodC5sZW5ndGg9PTApcmV0dXJuIG47bGV0IGU9MDtyZXR1cm4gbi5lbmRzV2l0aCgiLyIpJiZlKyssdC5zdGFydHNXaXRoKCIvIikmJmUrKyxlPT0yP24rdC5zdWJzdHJpbmcoMSk6ZT09MT9uK3Q6bisiLyIrdH1mdW5jdGlvbiBMZXQobil7bGV0IHQ9bi5tYXRjaCgvI3xcP3wkLyksZT10JiZ0LmluZGV4fHxuLmxlbmd0aCxvPWUtKG5bZS0xXT09PSIvIj8xOjApO3JldHVybiBuLnNsaWNlKDAsbykrbi5zbGljZShlKX1mdW5jdGlvbiB0UChuKXtyZXR1cm4gbiYmblswXSE9PSI/Ij8iPyIrbjpufXZhciBTZz1jbGFzc3toaXN0b3J5R28odCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX19O1NnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFNnKX07U2cuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpCZXQsdG9rZW46U2cscHJvdmlkZWRJbjoicm9vdCJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU2csW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290Iix1c2VGYWN0b3J5OkJldH1dfV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gQmV0KG4pe2xldCB0PUkoX3QpLmxvY2F0aW9uO3JldHVybiBuZXcgRGIoSShYcyksdCYmdC5vcmlnaW58fCIiKX12YXIgJHc9bmV3IHl0KCJhcHBCYXNlSHJlZiIpLERiPWNsYXNzIGV4dGVuZHMgU2d7Y29uc3RydWN0b3IodCxlKXtpZihzdXBlcigpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb249dCx0aGlzLl9yZW1vdmVMaXN0ZW5lckZucz1bXSxlPT1udWxsJiYoZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpKSxlPT1udWxsKXRocm93IG5ldyBFcnJvcigiTm8gYmFzZSBocmVmIHNldC4gUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIEFQUF9CQVNFX0hSRUYgdG9rZW4gb3IgYWRkIGEgYmFzZSBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC4iKTt0aGlzLl9iYXNlSHJlZj1lfW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5sZW5ndGg7KXRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnBvcCgpKCl9b25Qb3BTdGF0ZSh0KXt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wdXNoKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KSl9Z2V0QmFzZUhyZWYoKXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiByVih0aGlzLl9iYXNlSHJlZix0KX1wYXRoKHQ9ITEpe2xldCBlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUrdFAodGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5zZWFyY2gpLG89dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5oYXNoO3JldHVybiBvJiZ0P2Ake2V9JHtvfWA6ZX1wdXNoU3RhdGUodCxlLG8saSl7bGV0IGE9dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobyt0UChpKSk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxlLGEpfXJlcGxhY2VTdGF0ZSh0LGUsbyxpKXtsZXQgYT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChvK3RQKGkpKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0LGUsYSl9Zm9yd2FyZCgpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmJhY2soKX1oaXN0b3J5R28odD0wKXt2YXIgZSxvOyhvPShlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24pLmhpc3RvcnlHbyk9PT1udWxsfHxvPT09dm9pZCAwfHxvLmNhbGwoZSx0KX19O0RiLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fERiKShJKFhzKSxJKCR3LDgpKX07RGIuXHUwMjc1cHJvdj1QdCh7dG9rZW46RGIsZmFjdG9yeTpEYi5cdTAyNzVmYWN9KTtEYi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlhzfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOlskd119XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhEYixbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYc30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbJHddfV19XX0sbnVsbCl9KSgpO3ZhciBlUD1jbGFzcyBleHRlbmRzIFNne2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPXQsdGhpcy5fYmFzZUhyZWY9IiIsdGhpcy5fcmVtb3ZlTGlzdGVuZXJGbnM9W10sZSE9bnVsbCYmKHRoaXMuX2Jhc2VIcmVmPWUpfW5nT25EZXN0cm95KCl7Zm9yKDt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5sZW5ndGg7KXRoaXMuX3JlbW92ZUxpc3RlbmVyRm5zLnBvcCgpKCl9b25Qb3BTdGF0ZSh0KXt0aGlzLl9yZW1vdmVMaXN0ZW5lckZucy5wdXNoKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KSl9Z2V0QmFzZUhyZWYoKXtyZXR1cm4gdGhpcy5fYmFzZUhyZWZ9cGF0aCh0PSExKXtsZXQgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIGU9PW51bGwmJihlPSIjIiksZS5sZW5ndGg+MD9lLnN1YnN0cmluZygxKTplfXByZXBhcmVFeHRlcm5hbFVybCh0KXtsZXQgZT1yVih0aGlzLl9iYXNlSHJlZix0KTtyZXR1cm4gZS5sZW5ndGg+MD8iIyIrZTplfXB1c2hTdGF0ZSh0LGUsbyxpKXtsZXQgYT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChvK3RQKGkpKTthLmxlbmd0aD09MCYmKGE9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxlLGEpfXJlcGxhY2VTdGF0ZSh0LGUsbyxpKXtsZXQgYT10aGlzLnByZXBhcmVFeHRlcm5hbFVybChvK3RQKGkpKTthLmxlbmd0aD09MCYmKGE9dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wYXRobmFtZSksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5yZXBsYWNlU3RhdGUodCxlLGEpfWZvcndhcmQoKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX1iYWNrKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9aGlzdG9yeUdvKHQ9MCl7dmFyIGUsbzsobz0oZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uKS5oaXN0b3J5R28pPT09bnVsbHx8bz09PXZvaWQgMHx8by5jYWxsKGUsdCl9fTtlUC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxlUCkoSShYcyksSSgkdyw4KSl9O2VQLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmVQLGZhY3Rvcnk6ZVAuXHUwMjc1ZmFjfSk7ZVAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYc30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbJHddfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZVAsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WHN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6WyR3XX1dfV19LG51bGwpfSkoKTt2YXIgbXI9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9zdWJqZWN0PW5ldyAkLHRoaXMuX3VybENoYW5nZUxpc3RlbmVycz1bXSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5PXQ7bGV0IG89dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5nZXRCYXNlSHJlZigpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb249ZSx0aGlzLl9iYXNlSHJlZj1MZXQodmV0KG8pKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5Lm9uUG9wU3RhdGUoaT0+e3RoaXMuX3N1YmplY3QuZW1pdCh7dXJsOnRoaXMucGF0aCghMCkscG9wOiEwLHN0YXRlOmkuc3RhdGUsdHlwZTppLnR5cGV9KX0pfXBhdGgodD0hMSl7cmV0dXJuIHRoaXMubm9ybWFsaXplKHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucGF0aCh0KSl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRTdGF0ZSgpfWlzQ3VycmVudFBhdGhFcXVhbFRvKHQsZT0iIil7cmV0dXJuIHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZSh0K3RQKGUpKX1ub3JtYWxpemUodCl7cmV0dXJuIG1yLnN0cmlwVHJhaWxpbmdTbGFzaChMMXQodGhpcy5fYmFzZUhyZWYsdmV0KHQpKSl9cHJlcGFyZUV4dGVybmFsVXJsKHQpe3JldHVybiB0JiZ0WzBdIT09Ii8iJiYodD0iLyIrdCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9Z28odCxlPSIiLG89bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wdXNoU3RhdGUobywiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K3RQKGUpKSxvKX1yZXBsYWNlU3RhdGUodCxlPSIiLG89bnVsbCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5yZXBsYWNlU3RhdGUobywiIix0LGUpLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K3RQKGUpKSxvKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfWhpc3RvcnlHbyh0PTApe3ZhciBlLG87KG89KGU9dGhpcy5fcGxhdGZvcm1TdHJhdGVneSkuaGlzdG9yeUdvKT09PW51bGx8fG89PT12b2lkIDB8fG8uY2FsbChlLHQpfW9uVXJsQ2hhbmdlKHQpe3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKHQpLHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbnx8KHRoaXMuX3VybENoYW5nZVN1YnNjcmlwdGlvbj10aGlzLnN1YnNjcmliZShlPT57dGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKGUudXJsLGUuc3RhdGUpfSkpfV9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnModD0iIixlKXt0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuZm9yRWFjaChvPT5vKHQsZSkpfXN1YnNjcmliZSh0LGUsbyl7cmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKHtuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpvfSl9fTttci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxtcikoSShTZyksSShYcykpfTttci5ub3JtYWxpemVRdWVyeVBhcmFtcz10UDttci5qb2luV2l0aFNsYXNoPXJWO21yLnN0cmlwVHJhaWxpbmdTbGFzaD1MZXQ7bXIuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpWZXQsdG9rZW46bXIscHJvdmlkZWRJbjoicm9vdCJ9KTttci5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlNnfSx7dHlwZTpYc31dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhtcixbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUZhY3Rvcnk6VmV0fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTZ30se3R5cGU6WHN9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIFZldCgpe3JldHVybiBuZXcgbXIoSShTZyksSShYcykpfWZ1bmN0aW9uIEwxdChuLHQpe3JldHVybiBuJiZ0LnN0YXJ0c1dpdGgobik/dC5zdWJzdHJpbmcobi5sZW5ndGgpOnR9ZnVuY3Rpb24gdmV0KG4pe3JldHVybiBuLnJlcGxhY2UoL1wvaW5kZXguaHRtbCQvLCIiKX12YXIgamV0PXtBRFA6W3ZvaWQgMCx2b2lkIDAsMF0sQUZOOlt2b2lkIDAsdm9pZCAwLDBdLEFMTDpbdm9pZCAwLHZvaWQgMCwwXSxBTUQ6W3ZvaWQgMCx2b2lkIDAsMl0sQU9BOlt2b2lkIDAsIkt6Il0sQVJTOlt2b2lkIDAsIiQiXSxBVUQ6WyJBJCIsIiQiXSxCQU06W3ZvaWQgMCwiS00iXSxCQkQ6W3ZvaWQgMCwiJCJdLEJEVDpbdm9pZCAwLCJcdTA5RjMiXSxCSEQ6W3ZvaWQgMCx2b2lkIDAsM10sQklGOlt2b2lkIDAsdm9pZCAwLDBdLEJNRDpbdm9pZCAwLCIkIl0sQk5EOlt2b2lkIDAsIiQiXSxCT0I6W3ZvaWQgMCwiQnMiXSxCUkw6WyJSJCJdLEJTRDpbdm9pZCAwLCIkIl0sQldQOlt2b2lkIDAsIlAiXSxCWU46W3ZvaWQgMCwiXHUwNDQwLiIsMl0sQllSOlt2b2lkIDAsdm9pZCAwLDBdLEJaRDpbdm9pZCAwLCIkIl0sQ0FEOlsiQ0EkIiwiJCIsMl0sQ0hGOlt2b2lkIDAsdm9pZCAwLDJdLENMRjpbdm9pZCAwLHZvaWQgMCw0XSxDTFA6W3ZvaWQgMCwiJCIsMF0sQ05ZOlsiQ05ceEE1IiwiXHhBNSJdLENPUDpbdm9pZCAwLCIkIiwyXSxDUkM6W3ZvaWQgMCwiXHUyMEExIiwyXSxDVUM6W3ZvaWQgMCwiJCJdLENVUDpbdm9pZCAwLCIkIl0sQ1pLOlt2b2lkIDAsIktcdTAxMEQiLDJdLERKRjpbdm9pZCAwLHZvaWQgMCwwXSxES0s6W3ZvaWQgMCwia3IiLDJdLERPUDpbdm9pZCAwLCIkIl0sRUdQOlt2b2lkIDAsIkVceEEzIl0sRVNQOlt2b2lkIDAsIlx1MjBBNyIsMF0sRVVSOlsiXHUyMEFDIl0sRkpEOlt2b2lkIDAsIiQiXSxGS1A6W3ZvaWQgMCwiXHhBMyJdLEdCUDpbIlx4QTMiXSxHRUw6W3ZvaWQgMCwiXHUyMEJFIl0sR0lQOlt2b2lkIDAsIlx4QTMiXSxHTkY6W3ZvaWQgMCwiRkciLDBdLEdUUTpbdm9pZCAwLCJRIl0sR1lEOlt2b2lkIDAsIiQiLDJdLEhLRDpbIkhLJCIsIiQiXSxITkw6W3ZvaWQgMCwiTCJdLEhSSzpbdm9pZCAwLCJrbiJdLEhVRjpbdm9pZCAwLCJGdCIsMl0sSURSOlt2b2lkIDAsIlJwIiwyXSxJTFM6WyJcdTIwQUEiXSxJTlI6WyJcdTIwQjkiXSxJUUQ6W3ZvaWQgMCx2b2lkIDAsMF0sSVJSOlt2b2lkIDAsdm9pZCAwLDBdLElTSzpbdm9pZCAwLCJrciIsMF0sSVRMOlt2b2lkIDAsdm9pZCAwLDBdLEpNRDpbdm9pZCAwLCIkIl0sSk9EOlt2b2lkIDAsdm9pZCAwLDNdLEpQWTpbIlx4QTUiLHZvaWQgMCwwXSxLSFI6W3ZvaWQgMCwiXHUxN0RCIl0sS01GOlt2b2lkIDAsIkNGIiwwXSxLUFc6W3ZvaWQgMCwiXHUyMEE5IiwwXSxLUlc6WyJcdTIwQTkiLHZvaWQgMCwwXSxLV0Q6W3ZvaWQgMCx2b2lkIDAsM10sS1lEOlt2b2lkIDAsIiQiXSxLWlQ6W3ZvaWQgMCwiXHUyMEI4Il0sTEFLOlt2b2lkIDAsIlx1MjBBRCIsMF0sTEJQOlt2b2lkIDAsIkxceEEzIiwwXSxMS1I6W3ZvaWQgMCwiUnMiXSxMUkQ6W3ZvaWQgMCwiJCJdLExUTDpbdm9pZCAwLCJMdCJdLExVRjpbdm9pZCAwLHZvaWQgMCwwXSxMVkw6W3ZvaWQgMCwiTHMiXSxMWUQ6W3ZvaWQgMCx2b2lkIDAsM10sTUdBOlt2b2lkIDAsIkFyIiwwXSxNR0Y6W3ZvaWQgMCx2b2lkIDAsMF0sTU1LOlt2b2lkIDAsIksiLDBdLE1OVDpbdm9pZCAwLCJcdTIwQUUiLDJdLE1STzpbdm9pZCAwLHZvaWQgMCwwXSxNVVI6W3ZvaWQgMCwiUnMiLDJdLE1YTjpbIk1YJCIsIiQiXSxNWVI6W3ZvaWQgMCwiUk0iXSxOQUQ6W3ZvaWQgMCwiJCJdLE5HTjpbdm9pZCAwLCJcdTIwQTYiXSxOSU86W3ZvaWQgMCwiQyQiXSxOT0s6W3ZvaWQgMCwia3IiLDJdLE5QUjpbdm9pZCAwLCJScyJdLE5aRDpbIk5aJCIsIiQiXSxPTVI6W3ZvaWQgMCx2b2lkIDAsM10sUEhQOlt2b2lkIDAsIlx1MjBCMSJdLFBLUjpbdm9pZCAwLCJScyIsMl0sUExOOlt2b2lkIDAsInpcdTAxNDIiXSxQWUc6W3ZvaWQgMCwiXHUyMEIyIiwwXSxST046W3ZvaWQgMCwibGVpIl0sUlNEOlt2b2lkIDAsdm9pZCAwLDBdLFJVQjpbdm9pZCAwLCJcdTIwQkQiXSxSVVI6W3ZvaWQgMCwiXHUwNDQwLiJdLFJXRjpbdm9pZCAwLCJSRiIsMF0sU0JEOlt2b2lkIDAsIiQiXSxTRUs6W3ZvaWQgMCwia3IiLDJdLFNHRDpbdm9pZCAwLCIkIl0sU0hQOlt2b2lkIDAsIlx4QTMiXSxTTEw6W3ZvaWQgMCx2b2lkIDAsMF0sU09TOlt2b2lkIDAsdm9pZCAwLDBdLFNSRDpbdm9pZCAwLCIkIl0sU1NQOlt2b2lkIDAsIlx4QTMiXSxTVEQ6W3ZvaWQgMCx2b2lkIDAsMF0sU1ROOlt2b2lkIDAsIkRiIl0sU1lQOlt2b2lkIDAsIlx4QTMiLDBdLFRIQjpbdm9pZCAwLCJcdTBFM0YiXSxUTU06W3ZvaWQgMCx2b2lkIDAsMF0sVE5EOlt2b2lkIDAsdm9pZCAwLDNdLFRPUDpbdm9pZCAwLCJUJCJdLFRSTDpbdm9pZCAwLHZvaWQgMCwwXSxUUlk6W3ZvaWQgMCwiXHUyMEJBIl0sVFREOlt2b2lkIDAsIiQiXSxUV0Q6WyJOVCQiLCIkIiwyXSxUWlM6W3ZvaWQgMCx2b2lkIDAsMl0sVUFIOlt2b2lkIDAsIlx1MjBCNCJdLFVHWDpbdm9pZCAwLHZvaWQgMCwwXSxVU0Q6WyIkIl0sVVlJOlt2b2lkIDAsdm9pZCAwLDBdLFVZVTpbdm9pZCAwLCIkIl0sVVlXOlt2b2lkIDAsdm9pZCAwLDRdLFVaUzpbdm9pZCAwLHZvaWQgMCwyXSxWRUY6W3ZvaWQgMCwiQnMiLDJdLFZORDpbIlx1MjBBQiIsdm9pZCAwLDBdLFZVVjpbdm9pZCAwLHZvaWQgMCwwXSxYQUY6WyJGQ0ZBIix2b2lkIDAsMF0sWENEOlsiRUMkIiwiJCJdLFhPRjpbIkNGQSIsdm9pZCAwLDBdLFhQRjpbIkNGUEYiLHZvaWQgMCwwXSxYWFg6WyJceEE0Il0sWUVSOlt2b2lkIDAsdm9pZCAwLDBdLFpBUjpbdm9pZCAwLCJSIl0sWk1LOlt2b2lkIDAsdm9pZCAwLDBdLFpNVzpbdm9pZCAwLCJaSyJdLFpXRDpbdm9pZCAwLHZvaWQgMCwwXX07dmFyIHFSOyhmdW5jdGlvbihuKXtuW24uRGVjaW1hbD0wXT0iRGVjaW1hbCIsbltuLlBlcmNlbnQ9MV09IlBlcmNlbnQiLG5bbi5DdXJyZW5jeT0yXT0iQ3VycmVuY3kiLG5bbi5TY2llbnRpZmljPTNdPSJTY2llbnRpZmljIn0pKHFSfHwocVI9e30pKTt2YXIgQ3Y7KGZ1bmN0aW9uKG4pe25bbi5aZXJvPTBdPSJaZXJvIixuW24uT25lPTFdPSJPbmUiLG5bbi5Ud289Ml09IlR3byIsbltuLkZldz0zXT0iRmV3IixuW24uTWFueT00XT0iTWFueSIsbltuLk90aGVyPTVdPSJPdGhlciJ9KShDdnx8KEN2PXt9KSk7dmFyIHFjOyhmdW5jdGlvbihuKXtuW24uRm9ybWF0PTBdPSJGb3JtYXQiLG5bbi5TdGFuZGFsb25lPTFdPSJTdGFuZGFsb25lIn0pKHFjfHwocWM9e30pKTt2YXIgX2E7KGZ1bmN0aW9uKG4pe25bbi5OYXJyb3c9MF09Ik5hcnJvdyIsbltuLkFiYnJldmlhdGVkPTFdPSJBYmJyZXZpYXRlZCIsbltuLldpZGU9Ml09IldpZGUiLG5bbi5TaG9ydD0zXT0iU2hvcnQifSkoX2F8fChfYT17fSkpO3ZhciBRZjsoZnVuY3Rpb24obil7bltuLlNob3J0PTBdPSJTaG9ydCIsbltuLk1lZGl1bT0xXT0iTWVkaXVtIixuW24uTG9uZz0yXT0iTG9uZyIsbltuLkZ1bGw9M109IkZ1bGwifSkoUWZ8fChRZj17fSkpO3ZhciB6cjsoZnVuY3Rpb24obil7bltuLkRlY2ltYWw9MF09IkRlY2ltYWwiLG5bbi5Hcm91cD0xXT0iR3JvdXAiLG5bbi5MaXN0PTJdPSJMaXN0IixuW24uUGVyY2VudFNpZ249M109IlBlcmNlbnRTaWduIixuW24uUGx1c1NpZ249NF09IlBsdXNTaWduIixuW24uTWludXNTaWduPTVdPSJNaW51c1NpZ24iLG5bbi5FeHBvbmVudGlhbD02XT0iRXhwb25lbnRpYWwiLG5bbi5TdXBlcnNjcmlwdGluZ0V4cG9uZW50PTddPSJTdXBlcnNjcmlwdGluZ0V4cG9uZW50IixuW24uUGVyTWlsbGU9OF09IlBlck1pbGxlIixuW24uSW5maW5pdHk9OV09IkluZmluaXR5IixuW24uTmFOPTEwXT0iTmFOIixuW24uVGltZVNlcGFyYXRvcj0xMV09IlRpbWVTZXBhcmF0b3IiLG5bbi5DdXJyZW5jeURlY2ltYWw9MTJdPSJDdXJyZW5jeURlY2ltYWwiLG5bbi5DdXJyZW5jeUdyb3VwPTEzXT0iQ3VycmVuY3lHcm91cCJ9KSh6cnx8KHpyPXt9KSk7dmFyIHdldDsoZnVuY3Rpb24obil7bltuLlN1bmRheT0wXT0iU3VuZGF5IixuW24uTW9uZGF5PTFdPSJNb25kYXkiLG5bbi5UdWVzZGF5PTJdPSJUdWVzZGF5IixuW24uV2VkbmVzZGF5PTNdPSJXZWRuZXNkYXkiLG5bbi5UaHVyc2RheT00XT0iVGh1cnNkYXkiLG5bbi5GcmlkYXk9NV09IkZyaWRheSIsbltuLlNhdHVyZGF5PTZdPSJTYXR1cmRheSJ9KSh3ZXR8fCh3ZXQ9e30pKTtmdW5jdGlvbiBCMXQobil7cmV0dXJuIFdtKG4pW3FhLkxvY2FsZUlkXX1mdW5jdGlvbiBWMXQobix0LGUpe2xldCBvPVdtKG4pLGk9W29bcWEuRGF5UGVyaW9kc0Zvcm1hdF0sb1txYS5EYXlQZXJpb2RzU3RhbmRhbG9uZV1dLGE9Z18oaSx0KTtyZXR1cm4gZ18oYSxlKX1mdW5jdGlvbiBqMXQobix0LGUpe2xldCBvPVdtKG4pLGk9W29bcWEuRGF5c0Zvcm1hdF0sb1txYS5EYXlzU3RhbmRhbG9uZV1dLGE9Z18oaSx0KTtyZXR1cm4gZ18oYSxlKX1mdW5jdGlvbiBVMXQobix0LGUpe2xldCBvPVdtKG4pLGk9W29bcWEuTW9udGhzRm9ybWF0XSxvW3FhLk1vbnRoc1N0YW5kYWxvbmVdXSxhPWdfKGksdCk7cmV0dXJuIGdfKGEsZSl9ZnVuY3Rpb24gWTF0KG4sdCl7bGV0IG89V20obilbcWEuRXJhc107cmV0dXJuIGdfKG8sdCl9ZnVuY3Rpb24gSlQobix0KXtsZXQgZT1XbShuKTtyZXR1cm4gZ18oZVtxYS5EYXRlRm9ybWF0XSx0KX1mdW5jdGlvbiAkVChuLHQpe2xldCBlPVdtKG4pO3JldHVybiBnXyhlW3FhLlRpbWVGb3JtYXRdLHQpfWZ1bmN0aW9uIHRBKG4sdCl7bGV0IG89V20obilbcWEuRGF0ZVRpbWVGb3JtYXRdO3JldHVybiBnXyhvLHQpfWZ1bmN0aW9uIGRfKG4sdCl7bGV0IGU9V20obiksbz1lW3FhLk51bWJlclN5bWJvbHNdW3RdO2lmKHR5cGVvZiBvPT0idW5kZWZpbmVkIil7aWYodD09PXpyLkN1cnJlbmN5RGVjaW1hbClyZXR1cm4gZVtxYS5OdW1iZXJTeW1ib2xzXVt6ci5EZWNpbWFsXTtpZih0PT09enIuQ3VycmVuY3lHcm91cClyZXR1cm4gZVtxYS5OdW1iZXJTeW1ib2xzXVt6ci5Hcm91cF19cmV0dXJuIG99ZnVuY3Rpb24gc1Yobix0KXtyZXR1cm4gV20obilbcWEuTnVtYmVyRm9ybWF0c11bdF19ZnVuY3Rpb24gRzF0KG4pe3JldHVybiBXbShuKVtxYS5DdXJyZW5jaWVzXX12YXIgVzF0PUJCO2Z1bmN0aW9uIFVldChuKXtpZighbltxYS5FeHRyYURhdGFdKXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBleHRyYSBsb2NhbGUgZGF0YSBmb3IgdGhlIGxvY2FsZSAiJHtuW3FhLkxvY2FsZUlkXX0iLiBVc2UgInJlZ2lzdGVyTG9jYWxlRGF0YSIgdG8gbG9hZCBuZXcgZGF0YS4gU2VlIHRoZSAiSTE4biBndWlkZSIgb24gYW5ndWxhci5pbyB0byBrbm93IG1vcmUuYCl9ZnVuY3Rpb24gcTF0KG4pe2xldCB0PVdtKG4pO3JldHVybiBVZXQodCksKHRbcWEuRXh0cmFEYXRhXVsyXXx8W10pLm1hcChvPT50eXBlb2Ygbz09InN0cmluZyI/WEIobyk6W1hCKG9bMF0pLFhCKG9bMV0pXSl9ZnVuY3Rpb24gWjF0KG4sdCxlKXtsZXQgbz1XbShuKTtVZXQobyk7bGV0IGk9W29bcWEuRXh0cmFEYXRhXVswXSxvW3FhLkV4dHJhRGF0YV1bMV1dLGE9Z18oaSx0KXx8W107cmV0dXJuIGdfKGEsZSl8fFtdfWZ1bmN0aW9uIGdfKG4sdCl7Zm9yKGxldCBlPXQ7ZT4tMTtlLS0paWYodHlwZW9mIG5bZV0hPSJ1bmRlZmluZWQiKXJldHVybiBuW2VdO3Rocm93IG5ldyBFcnJvcigiTG9jYWxlIGRhdGEgQVBJOiBsb2NhbGUgZGF0YSB1bmRlZmluZWQiKX1mdW5jdGlvbiBYQihuKXtsZXRbdCxlXT1uLnNwbGl0KCI6Iik7cmV0dXJue2hvdXJzOit0LG1pbnV0ZXM6K2V9fWZ1bmN0aW9uIFgxdChuLHQsZT0iZW4iKXtsZXQgbz1HMXQoZSlbbl18fGpldFtuXXx8W10saT1vWzFdO3JldHVybiB0PT09Im5hcnJvdyImJnR5cGVvZiBpPT0ic3RyaW5nIj9pOm9bMF18fG59dmFyIFExdD0yO2Z1bmN0aW9uIEsxdChuKXtsZXQgdCxlPWpldFtuXTtyZXR1cm4gZSYmKHQ9ZVsyXSksdHlwZW9mIHQ9PSJudW1iZXIiP3Q6UTF0fXZhciBKMXQ9L14oXGR7NH0pLT8oXGRcZCktPyhcZFxkKSg/OlQoXGRcZCkoPzo6PyhcZFxkKSg/Ojo/KFxkXGQpKD86XC4oXGQrKSk/KT8pPyhafChbKy1dKShcZFxkKTo/KFxkXGQpKT8pPyQvLEdSPXt9LCQxdD0vKCg/OlteQkVHSExNT1NXWVphYmNkaG1zd3l6J10rKXwoPzonKD86W14nXXwnJykqJyl8KD86R3sxLDV9fHl7MSw0fXxZezEsNH18TXsxLDV9fEx7MSw1fXx3ezEsMn18V3sxfXxkezEsMn18RXsxLDZ9fGN7MSw2fXxhezEsNX18YnsxLDV9fEJ7MSw1fXxoezEsMn18SHsxLDJ9fG17MSwyfXxzezEsMn18U3sxLDN9fHp7MSw0fXxaezEsNX18T3sxLDR9KSkoW1xzXFNdKikvLEFiOyhmdW5jdGlvbihuKXtuW24uU2hvcnQ9MF09IlNob3J0IixuW24uU2hvcnRHTVQ9MV09IlNob3J0R01UIixuW24uTG9uZz0yXT0iTG9uZyIsbltuLkV4dGVuZGVkPTNdPSJFeHRlbmRlZCJ9KShBYnx8KEFiPXt9KSk7dmFyIEFpOyhmdW5jdGlvbihuKXtuW24uRnVsbFllYXI9MF09IkZ1bGxZZWFyIixuW24uTW9udGg9MV09Ik1vbnRoIixuW24uRGF0ZT0yXT0iRGF0ZSIsbltuLkhvdXJzPTNdPSJIb3VycyIsbltuLk1pbnV0ZXM9NF09Ik1pbnV0ZXMiLG5bbi5TZWNvbmRzPTVdPSJTZWNvbmRzIixuW24uRnJhY3Rpb25hbFNlY29uZHM9Nl09IkZyYWN0aW9uYWxTZWNvbmRzIixuW24uRGF5PTddPSJEYXkifSkoQWl8fChBaT17fSkpO3ZhciBUaTsoZnVuY3Rpb24obil7bltuLkRheVBlcmlvZHM9MF09IkRheVBlcmlvZHMiLG5bbi5EYXlzPTFdPSJEYXlzIixuW24uTW9udGhzPTJdPSJNb250aHMiLG5bbi5FcmFzPTNdPSJFcmFzIn0pKFRpfHwoVGk9e30pKTtmdW5jdGlvbiB0d3Qobix0LGUsbyl7bGV0IGk9Y3d0KG4pO3Q9JE8oZSx0KXx8dDtsZXQgcj1bXSxzO2Zvcig7dDspaWYocz0kMXQuZXhlYyh0KSxzKXtyPXIuY29uY2F0KHMuc2xpY2UoMSkpO2xldCBtPXIucG9wKCk7aWYoIW0pYnJlYWs7dD1tfWVsc2V7ci5wdXNoKHQpO2JyZWFrfWxldCBsPWkuZ2V0VGltZXpvbmVPZmZzZXQoKTtvJiYobD1HZXQobyxsKSxpPWx3dChpLG8sITApKTtsZXQgYz0iIjtyZXR1cm4gci5mb3JFYWNoKG09PntsZXQgZj1yd3QobSk7Yys9Zj9mKGksZSxsKTptPT09IicnIj8iJyI6bS5yZXBsYWNlKC8oXid8JyQpL2csIiIpLnJlcGxhY2UoLycnL2csIiciKX0pLGN9ZnVuY3Rpb24gckEobix0LGUpe2xldCBvPW5ldyBEYXRlKDApO3JldHVybiBvLnNldEZ1bGxZZWFyKG4sdCxlKSxvLnNldEhvdXJzKDAsMCwwKSxvfWZ1bmN0aW9uICRPKG4sdCl7bGV0IGU9QjF0KG4pO2lmKEdSW2VdPUdSW2VdfHx7fSxHUltlXVt0XSlyZXR1cm4gR1JbZV1bdF07bGV0IG89IiI7c3dpdGNoKHQpe2Nhc2Uic2hvcnREYXRlIjpvPUpUKG4sUWYuU2hvcnQpO2JyZWFrO2Nhc2UibWVkaXVtRGF0ZSI6bz1KVChuLFFmLk1lZGl1bSk7YnJlYWs7Y2FzZSJsb25nRGF0ZSI6bz1KVChuLFFmLkxvbmcpO2JyZWFrO2Nhc2UiZnVsbERhdGUiOm89SlQobixRZi5GdWxsKTticmVhaztjYXNlInNob3J0VGltZSI6bz0kVChuLFFmLlNob3J0KTticmVhaztjYXNlIm1lZGl1bVRpbWUiOm89JFQobixRZi5NZWRpdW0pO2JyZWFrO2Nhc2UibG9uZ1RpbWUiOm89JFQobixRZi5Mb25nKTticmVhaztjYXNlImZ1bGxUaW1lIjpvPSRUKG4sUWYuRnVsbCk7YnJlYWs7Y2FzZSJzaG9ydCI6bGV0IGk9JE8obiwic2hvcnRUaW1lIiksYT0kTyhuLCJzaG9ydERhdGUiKTtvPWVBKHRBKG4sUWYuU2hvcnQpLFtpLGFdKTticmVhaztjYXNlIm1lZGl1bSI6bGV0IHI9JE8obiwibWVkaXVtVGltZSIpLHM9JE8obiwibWVkaXVtRGF0ZSIpO289ZUEodEEobixRZi5NZWRpdW0pLFtyLHNdKTticmVhaztjYXNlImxvbmciOmxldCBsPSRPKG4sImxvbmdUaW1lIiksYz0kTyhuLCJsb25nRGF0ZSIpO289ZUEodEEobixRZi5Mb25nKSxbbCxjXSk7YnJlYWs7Y2FzZSJmdWxsIjpsZXQgbT0kTyhuLCJmdWxsVGltZSIpLGY9JE8obiwiZnVsbERhdGUiKTtvPWVBKHRBKG4sUWYuRnVsbCksW20sZl0pO2JyZWFrfXJldHVybiBvJiYoR1JbZV1bdF09byksb31mdW5jdGlvbiBlQShuLHQpe3JldHVybiB0JiYobj1uLnJlcGxhY2UoL1x7KFtefV0rKX0vZyxmdW5jdGlvbihlLG8pe3JldHVybiB0IT1udWxsJiZvIGluIHQ/dFtvXTplfSkpLG59ZnVuY3Rpb24gJEMobix0LGU9Ii0iLG8saSl7bGV0IGE9IiI7KG48MHx8aSYmbjw9MCkmJihpP249LW4rMToobj0tbixhPWUpKTtsZXQgcj1TdHJpbmcobik7Zm9yKDtyLmxlbmd0aDx0OylyPSIwIityO3JldHVybiBvJiYocj1yLnN1YnN0cihyLmxlbmd0aC10KSksYStyfWZ1bmN0aW9uIGV3dChuLHQpe3JldHVybiAkQyhuLDMpLnN1YnN0cigwLHQpfWZ1bmN0aW9uIERzKG4sdCxlPTAsbz0hMSxpPSExKXtyZXR1cm4gZnVuY3Rpb24oYSxyKXtsZXQgcz1ud3QobixhKTtpZigoZT4wfHxzPi1lKSYmKHMrPWUpLG49PT1BaS5Ib3VycylzPT09MCYmZT09PS0xMiYmKHM9MTIpO2Vsc2UgaWYobj09PUFpLkZyYWN0aW9uYWxTZWNvbmRzKXJldHVybiBld3Qocyx0KTtsZXQgbD1kXyhyLHpyLk1pbnVzU2lnbik7cmV0dXJuICRDKHMsdCxsLG8saSl9fWZ1bmN0aW9uIG53dChuLHQpe3N3aXRjaChuKXtjYXNlIEFpLkZ1bGxZZWFyOnJldHVybiB0LmdldEZ1bGxZZWFyKCk7Y2FzZSBBaS5Nb250aDpyZXR1cm4gdC5nZXRNb250aCgpO2Nhc2UgQWkuRGF0ZTpyZXR1cm4gdC5nZXREYXRlKCk7Y2FzZSBBaS5Ib3VyczpyZXR1cm4gdC5nZXRIb3VycygpO2Nhc2UgQWkuTWludXRlczpyZXR1cm4gdC5nZXRNaW51dGVzKCk7Y2FzZSBBaS5TZWNvbmRzOnJldHVybiB0LmdldFNlY29uZHMoKTtjYXNlIEFpLkZyYWN0aW9uYWxTZWNvbmRzOnJldHVybiB0LmdldE1pbGxpc2Vjb25kcygpO2Nhc2UgQWkuRGF5OnJldHVybiB0LmdldERheSgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIERhdGVUeXBlIHZhbHVlICIke259Ii5gKX19ZnVuY3Rpb24gRmEobix0LGU9cWMuRm9ybWF0LG89ITEpe3JldHVybiBmdW5jdGlvbihpLGEpe3JldHVybiBvd3QoaSxhLG4sdCxlLG8pfX1mdW5jdGlvbiBvd3Qobix0LGUsbyxpLGEpe3N3aXRjaChlKXtjYXNlIFRpLk1vbnRoczpyZXR1cm4gVTF0KHQsaSxvKVtuLmdldE1vbnRoKCldO2Nhc2UgVGkuRGF5czpyZXR1cm4gajF0KHQsaSxvKVtuLmdldERheSgpXTtjYXNlIFRpLkRheVBlcmlvZHM6bGV0IHI9bi5nZXRIb3VycygpLHM9bi5nZXRNaW51dGVzKCk7aWYoYSl7bGV0IGM9cTF0KHQpLG09WjF0KHQsaSxvKSxmPWMuZmluZEluZGV4KHA9PntpZihBcnJheS5pc0FycmF5KHApKXtsZXRbZyxfXT1wLE09cj49Zy5ob3VycyYmcz49Zy5taW51dGVzLHk9cjxfLmhvdXJzfHxyPT09Xy5ob3VycyYmczxfLm1pbnV0ZXM7aWYoZy5ob3VyczxfLmhvdXJzKXtpZihNJiZ5KXJldHVybiEwfWVsc2UgaWYoTXx8eSlyZXR1cm4hMH1lbHNlIGlmKHAuaG91cnM9PT1yJiZwLm1pbnV0ZXM9PT1zKXJldHVybiEwO3JldHVybiExfSk7aWYoZiE9PS0xKXJldHVybiBtW2ZdfXJldHVybiBWMXQodCxpLG8pW3I8MTI/MDoxXTtjYXNlIFRpLkVyYXM6cmV0dXJuIFkxdCh0LG8pW24uZ2V0RnVsbFllYXIoKTw9MD8wOjFdO2RlZmF1bHQ6bGV0IGw9ZTt0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgdHJhbnNsYXRpb24gdHlwZSAke2x9YCl9fWZ1bmN0aW9uIG5BKG4pe3JldHVybiBmdW5jdGlvbih0LGUsbyl7bGV0IGk9LTEqbyxhPWRfKGUsenIuTWludXNTaWduKSxyPWk+MD9NYXRoLmZsb29yKGkvNjApOk1hdGguY2VpbChpLzYwKTtzd2l0Y2gobil7Y2FzZSBBYi5TaG9ydDpyZXR1cm4oaT49MD8iKyI6IiIpKyRDKHIsMixhKSskQyhNYXRoLmFicyhpJTYwKSwyLGEpO2Nhc2UgQWIuU2hvcnRHTVQ6cmV0dXJuIkdNVCIrKGk+PTA/IisiOiIiKSskQyhyLDEsYSk7Y2FzZSBBYi5Mb25nOnJldHVybiJHTVQiKyhpPj0wPyIrIjoiIikrJEMociwyLGEpKyI6IiskQyhNYXRoLmFicyhpJTYwKSwyLGEpO2Nhc2UgQWIuRXh0ZW5kZWQ6cmV0dXJuIG89PT0wPyJaIjooaT49MD8iKyI6IiIpKyRDKHIsMixhKSsiOiIrJEMoTWF0aC5hYnMoaSU2MCksMixhKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biB6b25lIHdpZHRoICIke259ImApfX19dmFyIGl3dD0wLGlBPTQ7ZnVuY3Rpb24gYXd0KG4pe2xldCB0PXJBKG4saXd0LDEpLmdldERheSgpO3JldHVybiByQShuLDAsMSsodDw9aUE/aUE6aUErNyktdCl9ZnVuY3Rpb24gWWV0KG4pe3JldHVybiByQShuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgpKyhpQS1uLmdldERheSgpKSl9ZnVuY3Rpb24gUUIobix0PSExKXtyZXR1cm4gZnVuY3Rpb24oZSxvKXtsZXQgaTtpZih0KXtsZXQgYT1uZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLDEpLmdldERheSgpLTEscj1lLmdldERhdGUoKTtpPTErTWF0aC5mbG9vcigocithKS83KX1lbHNle2xldCBhPVlldChlKSxyPWF3dChhLmdldEZ1bGxZZWFyKCkpLHM9YS5nZXRUaW1lKCktci5nZXRUaW1lKCk7aT0xK01hdGgucm91bmQocy82MDQ4ZTUpfXJldHVybiAkQyhpLG4sZF8obyx6ci5NaW51c1NpZ24pKX19ZnVuY3Rpb24gb0Eobix0PSExKXtyZXR1cm4gZnVuY3Rpb24oZSxvKXtsZXQgYT1ZZXQoZSkuZ2V0RnVsbFllYXIoKTtyZXR1cm4gJEMoYSxuLGRfKG8senIuTWludXNTaWduKSx0KX19dmFyIEtCPXt9O2Z1bmN0aW9uIHJ3dChuKXtpZihLQltuXSlyZXR1cm4gS0Jbbl07bGV0IHQ7c3dpdGNoKG4pe2Nhc2UiRyI6Y2FzZSJHRyI6Y2FzZSJHR0ciOnQ9RmEoVGkuRXJhcyxfYS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJHR0dHIjp0PUZhKFRpLkVyYXMsX2EuV2lkZSk7YnJlYWs7Y2FzZSJHR0dHRyI6dD1GYShUaS5FcmFzLF9hLk5hcnJvdyk7YnJlYWs7Y2FzZSJ5Ijp0PURzKEFpLkZ1bGxZZWFyLDEsMCwhMSwhMCk7YnJlYWs7Y2FzZSJ5eSI6dD1EcyhBaS5GdWxsWWVhciwyLDAsITAsITApO2JyZWFrO2Nhc2UieXl5Ijp0PURzKEFpLkZ1bGxZZWFyLDMsMCwhMSwhMCk7YnJlYWs7Y2FzZSJ5eXl5Ijp0PURzKEFpLkZ1bGxZZWFyLDQsMCwhMSwhMCk7YnJlYWs7Y2FzZSJZIjp0PW9BKDEpO2JyZWFrO2Nhc2UiWVkiOnQ9b0EoMiwhMCk7YnJlYWs7Y2FzZSJZWVkiOnQ9b0EoMyk7YnJlYWs7Y2FzZSJZWVlZIjp0PW9BKDQpO2JyZWFrO2Nhc2UiTSI6Y2FzZSJMIjp0PURzKEFpLk1vbnRoLDEsMSk7YnJlYWs7Y2FzZSJNTSI6Y2FzZSJMTCI6dD1EcyhBaS5Nb250aCwyLDEpO2JyZWFrO2Nhc2UiTU1NIjp0PUZhKFRpLk1vbnRocyxfYS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJNTU1NIjp0PUZhKFRpLk1vbnRocyxfYS5XaWRlKTticmVhaztjYXNlIk1NTU1NIjp0PUZhKFRpLk1vbnRocyxfYS5OYXJyb3cpO2JyZWFrO2Nhc2UiTExMIjp0PUZhKFRpLk1vbnRocyxfYS5BYmJyZXZpYXRlZCxxYy5TdGFuZGFsb25lKTticmVhaztjYXNlIkxMTEwiOnQ9RmEoVGkuTW9udGhzLF9hLldpZGUscWMuU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJMTExMTCI6dD1GYShUaS5Nb250aHMsX2EuTmFycm93LHFjLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UidyI6dD1RQigxKTticmVhaztjYXNlInd3Ijp0PVFCKDIpO2JyZWFrO2Nhc2UiVyI6dD1RQigxLCEwKTticmVhaztjYXNlImQiOnQ9RHMoQWkuRGF0ZSwxKTticmVhaztjYXNlImRkIjp0PURzKEFpLkRhdGUsMik7YnJlYWs7Y2FzZSJjIjpjYXNlImNjIjp0PURzKEFpLkRheSwxKTticmVhaztjYXNlImNjYyI6dD1GYShUaS5EYXlzLF9hLkFiYnJldmlhdGVkLHFjLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiY2NjYyI6dD1GYShUaS5EYXlzLF9hLldpZGUscWMuU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJjY2NjYyI6dD1GYShUaS5EYXlzLF9hLk5hcnJvdyxxYy5TdGFuZGFsb25lKTticmVhaztjYXNlImNjY2NjYyI6dD1GYShUaS5EYXlzLF9hLlNob3J0LHFjLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UiRSI6Y2FzZSJFRSI6Y2FzZSJFRUUiOnQ9RmEoVGkuRGF5cyxfYS5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJFRUVFIjp0PUZhKFRpLkRheXMsX2EuV2lkZSk7YnJlYWs7Y2FzZSJFRUVFRSI6dD1GYShUaS5EYXlzLF9hLk5hcnJvdyk7YnJlYWs7Y2FzZSJFRUVFRUUiOnQ9RmEoVGkuRGF5cyxfYS5TaG9ydCk7YnJlYWs7Y2FzZSJhIjpjYXNlImFhIjpjYXNlImFhYSI6dD1GYShUaS5EYXlQZXJpb2RzLF9hLkFiYnJldmlhdGVkKTticmVhaztjYXNlImFhYWEiOnQ9RmEoVGkuRGF5UGVyaW9kcyxfYS5XaWRlKTticmVhaztjYXNlImFhYWFhIjp0PUZhKFRpLkRheVBlcmlvZHMsX2EuTmFycm93KTticmVhaztjYXNlImIiOmNhc2UiYmIiOmNhc2UiYmJiIjp0PUZhKFRpLkRheVBlcmlvZHMsX2EuQWJicmV2aWF0ZWQscWMuU3RhbmRhbG9uZSwhMCk7YnJlYWs7Y2FzZSJiYmJiIjp0PUZhKFRpLkRheVBlcmlvZHMsX2EuV2lkZSxxYy5TdGFuZGFsb25lLCEwKTticmVhaztjYXNlImJiYmJiIjp0PUZhKFRpLkRheVBlcmlvZHMsX2EuTmFycm93LHFjLlN0YW5kYWxvbmUsITApO2JyZWFrO2Nhc2UiQiI6Y2FzZSJCQiI6Y2FzZSJCQkIiOnQ9RmEoVGkuRGF5UGVyaW9kcyxfYS5BYmJyZXZpYXRlZCxxYy5Gb3JtYXQsITApO2JyZWFrO2Nhc2UiQkJCQiI6dD1GYShUaS5EYXlQZXJpb2RzLF9hLldpZGUscWMuRm9ybWF0LCEwKTticmVhaztjYXNlIkJCQkJCIjp0PUZhKFRpLkRheVBlcmlvZHMsX2EuTmFycm93LHFjLkZvcm1hdCwhMCk7YnJlYWs7Y2FzZSJoIjp0PURzKEFpLkhvdXJzLDEsLTEyKTticmVhaztjYXNlImhoIjp0PURzKEFpLkhvdXJzLDIsLTEyKTticmVhaztjYXNlIkgiOnQ9RHMoQWkuSG91cnMsMSk7YnJlYWs7Y2FzZSJISCI6dD1EcyhBaS5Ib3VycywyKTticmVhaztjYXNlIm0iOnQ9RHMoQWkuTWludXRlcywxKTticmVhaztjYXNlIm1tIjp0PURzKEFpLk1pbnV0ZXMsMik7YnJlYWs7Y2FzZSJzIjp0PURzKEFpLlNlY29uZHMsMSk7YnJlYWs7Y2FzZSJzcyI6dD1EcyhBaS5TZWNvbmRzLDIpO2JyZWFrO2Nhc2UiUyI6dD1EcyhBaS5GcmFjdGlvbmFsU2Vjb25kcywxKTticmVhaztjYXNlIlNTIjp0PURzKEFpLkZyYWN0aW9uYWxTZWNvbmRzLDIpO2JyZWFrO2Nhc2UiU1NTIjp0PURzKEFpLkZyYWN0aW9uYWxTZWNvbmRzLDMpO2JyZWFrO2Nhc2UiWiI6Y2FzZSJaWiI6Y2FzZSJaWloiOnQ9bkEoQWIuU2hvcnQpO2JyZWFrO2Nhc2UiWlpaWloiOnQ9bkEoQWIuRXh0ZW5kZWQpO2JyZWFrO2Nhc2UiTyI6Y2FzZSJPTyI6Y2FzZSJPT08iOmNhc2UieiI6Y2FzZSJ6eiI6Y2FzZSJ6enoiOnQ9bkEoQWIuU2hvcnRHTVQpO2JyZWFrO2Nhc2UiT09PTyI6Y2FzZSJaWlpaIjpjYXNlInp6enoiOnQ9bkEoQWIuTG9uZyk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gS0Jbbl09dCx0fWZ1bmN0aW9uIEdldChuLHQpe249bi5yZXBsYWNlKC86L2csIiIpO2xldCBlPURhdGUucGFyc2UoIkphbiAwMSwgMTk3MCAwMDowMDowMCAiK24pLzZlNDtyZXR1cm4gaXNOYU4oZSk/dDplfWZ1bmN0aW9uIHN3dChuLHQpe3JldHVybiBuPW5ldyBEYXRlKG4uZ2V0VGltZSgpKSxuLnNldE1pbnV0ZXMobi5nZXRNaW51dGVzKCkrdCksbn1mdW5jdGlvbiBsd3Qobix0LGUpe2xldCBvPWU/LTE6MSxpPW4uZ2V0VGltZXpvbmVPZmZzZXQoKSxhPUdldCh0LGkpO3JldHVybiBzd3QobixvKihhLWkpKX1mdW5jdGlvbiBjd3Qobil7aWYoUmV0KG4pKXJldHVybiBuO2lmKHR5cGVvZiBuPT0ibnVtYmVyIiYmIWlzTmFOKG4pKXJldHVybiBuZXcgRGF0ZShuKTtpZih0eXBlb2Ygbj09InN0cmluZyIpe2lmKG49bi50cmltKCksL14oXGR7NH0oLVxkezEsMn0oLVxkezEsMn0pPyk/KSQvLnRlc3Qobikpe2xldFtpLGE9MSxyPTFdPW4uc3BsaXQoIi0iKS5tYXAocz0+K3MpO3JldHVybiByQShpLGEtMSxyKX1sZXQgZT1wYXJzZUZsb2F0KG4pO2lmKCFpc05hTihuLWUpKXJldHVybiBuZXcgRGF0ZShlKTtsZXQgbztpZihvPW4ubWF0Y2goSjF0KSlyZXR1cm4gbXd0KG8pfWxldCB0PW5ldyBEYXRlKG4pO2lmKCFSZXQodCkpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY29udmVydCAiJHtufSIgaW50byBhIGRhdGVgKTtyZXR1cm4gdH1mdW5jdGlvbiBtd3Qobil7bGV0IHQ9bmV3IERhdGUoMCksZT0wLG89MCxpPW5bOF0/dC5zZXRVVENGdWxsWWVhcjp0LnNldEZ1bGxZZWFyLGE9bls4XT90LnNldFVUQ0hvdXJzOnQuc2V0SG91cnM7bls5XSYmKGU9TnVtYmVyKG5bOV0rblsxMF0pLG89TnVtYmVyKG5bOV0rblsxMV0pKSxpLmNhbGwodCxOdW1iZXIoblsxXSksTnVtYmVyKG5bMl0pLTEsTnVtYmVyKG5bM10pKTtsZXQgcj1OdW1iZXIobls0XXx8MCktZSxzPU51bWJlcihuWzVdfHwwKS1vLGw9TnVtYmVyKG5bNl18fDApLGM9TWF0aC5mbG9vcihwYXJzZUZsb2F0KCIwLiIrKG5bN118fDApKSoxZTMpO3JldHVybiBhLmNhbGwodCxyLHMsbCxjKSx0fWZ1bmN0aW9uIFJldChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIERhdGUmJiFpc05hTihuLnZhbHVlT2YoKSl9dmFyIGZ3dD0vXihcZCspP1wuKChcZCspKC0oXGQrKSk/KT8kLyxFZXQ9MjIsc0E9Ii4iLFdSPSIwIixwd3Q9IjsiLGR3dD0iLCIsSkI9IiMiLGtldD0iXHhBNCIsZ3d0PSIlIjtmdW5jdGlvbiBsVihuLHQsZSxvLGksYSxyPSExKXtsZXQgcz0iIixsPSExO2lmKCFpc0Zpbml0ZShuKSlzPWRfKGUsenIuSW5maW5pdHkpO2Vsc2V7bGV0IGM9Q3d0KG4pO3ImJihjPV93dChjKSk7bGV0IG09dC5taW5JbnQsZj10Lm1pbkZyYWMscD10Lm1heEZyYWM7aWYoYSl7bGV0IGI9YS5tYXRjaChmd3QpO2lmKGI9PT1udWxsKXRocm93IG5ldyBFcnJvcihgJHthfSBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvYCk7bGV0IFI9YlsxXSxFPWJbM10saj1iWzVdO1IhPW51bGwmJihtPSRCKFIpKSxFIT1udWxsJiYoZj0kQihFKSksaiE9bnVsbD9wPSRCKGopOkUhPW51bGwmJmY+cCYmKHA9Zil9TXd0KGMsZixwKTtsZXQgZz1jLmRpZ2l0cyxfPWMuaW50ZWdlckxlbixNPWMuZXhwb25lbnQseT1bXTtmb3IobD1nLmV2ZXJ5KGI9PiFiKTtfPG07XysrKWcudW5zaGlmdCgwKTtmb3IoO188MDtfKyspZy51bnNoaWZ0KDApO18+MD95PWcuc3BsaWNlKF8sZy5sZW5ndGgpOih5PWcsZz1bMF0pO2xldCBPPVtdO2ZvcihnLmxlbmd0aD49dC5sZ1NpemUmJk8udW5zaGlmdChnLnNwbGljZSgtdC5sZ1NpemUsZy5sZW5ndGgpLmpvaW4oIiIpKTtnLmxlbmd0aD50LmdTaXplOylPLnVuc2hpZnQoZy5zcGxpY2UoLXQuZ1NpemUsZy5sZW5ndGgpLmpvaW4oIiIpKTtnLmxlbmd0aCYmTy51bnNoaWZ0KGcuam9pbigiIikpLHM9Ty5qb2luKGRfKGUsbykpLHkubGVuZ3RoJiYocys9ZF8oZSxpKSt5LmpvaW4oIiIpKSxNJiYocys9ZF8oZSx6ci5FeHBvbmVudGlhbCkrIisiK00pfXJldHVybiBuPDAmJiFsP3M9dC5uZWdQcmUrcyt0Lm5lZ1N1ZjpzPXQucG9zUHJlK3MrdC5wb3NTdWYsc31mdW5jdGlvbiB1d3Qobix0LGUsbyxpKXtsZXQgYT1zVih0LHFSLkN1cnJlbmN5KSxyPW1WKGEsZF8odCx6ci5NaW51c1NpZ24pKTtyZXR1cm4gci5taW5GcmFjPUsxdChvKSxyLm1heEZyYWM9ci5taW5GcmFjLGxWKG4scix0LHpyLkN1cnJlbmN5R3JvdXAsenIuQ3VycmVuY3lEZWNpbWFsLGkpLnJlcGxhY2Uoa2V0LGUpLnJlcGxhY2Uoa2V0LCIiKS50cmltKCl9ZnVuY3Rpb24gaHd0KG4sdCxlKXtsZXQgbz1zVih0LHFSLlBlcmNlbnQpLGk9bVYobyxkXyh0LHpyLk1pbnVzU2lnbikpO3JldHVybiBsVihuLGksdCx6ci5Hcm91cCx6ci5EZWNpbWFsLGUsITApLnJlcGxhY2UobmV3IFJlZ0V4cChnd3QsImciKSxkXyh0LHpyLlBlcmNlbnRTaWduKSl9ZnVuY3Rpb24gY1Yobix0LGUpe2xldCBvPXNWKHQscVIuRGVjaW1hbCksaT1tVihvLGRfKHQsenIuTWludXNTaWduKSk7cmV0dXJuIGxWKG4saSx0LHpyLkdyb3VwLHpyLkRlY2ltYWwsZSl9ZnVuY3Rpb24gbVYobix0PSItIil7bGV0IGU9e21pbkludDoxLG1pbkZyYWM6MCxtYXhGcmFjOjAscG9zUHJlOiIiLHBvc1N1ZjoiIixuZWdQcmU6IiIsbmVnU3VmOiIiLGdTaXplOjAsbGdTaXplOjB9LG89bi5zcGxpdChwd3QpLGk9b1swXSxhPW9bMV0scj1pLmluZGV4T2Yoc0EpIT09LTE/aS5zcGxpdChzQSk6W2kuc3Vic3RyaW5nKDAsaS5sYXN0SW5kZXhPZihXUikrMSksaS5zdWJzdHJpbmcoaS5sYXN0SW5kZXhPZihXUikrMSldLHM9clswXSxsPXJbMV18fCIiO2UucG9zUHJlPXMuc3Vic3RyKDAscy5pbmRleE9mKEpCKSk7Zm9yKGxldCBtPTA7bTxsLmxlbmd0aDttKyspe2xldCBmPWwuY2hhckF0KG0pO2Y9PT1XUj9lLm1pbkZyYWM9ZS5tYXhGcmFjPW0rMTpmPT09SkI/ZS5tYXhGcmFjPW0rMTplLnBvc1N1Zis9Zn1sZXQgYz1zLnNwbGl0KGR3dCk7aWYoZS5nU2l6ZT1jWzFdP2NbMV0ubGVuZ3RoOjAsZS5sZ1NpemU9Y1syXXx8Y1sxXT8oY1syXXx8Y1sxXSkubGVuZ3RoOjAsYSl7bGV0IG09aS5sZW5ndGgtZS5wb3NQcmUubGVuZ3RoLWUucG9zU3VmLmxlbmd0aCxmPWEuaW5kZXhPZihKQik7ZS5uZWdQcmU9YS5zdWJzdHIoMCxmKS5yZXBsYWNlKC8nL2csIiIpLGUubmVnU3VmPWEuc3Vic3RyKGYrbSkucmVwbGFjZSgvJy9nLCIiKX1lbHNlIGUubmVnUHJlPXQrZS5wb3NQcmUsZS5uZWdTdWY9ZS5wb3NTdWY7cmV0dXJuIGV9ZnVuY3Rpb24gX3d0KG4pe2lmKG4uZGlnaXRzWzBdPT09MClyZXR1cm4gbjtsZXQgdD1uLmRpZ2l0cy5sZW5ndGgtbi5pbnRlZ2VyTGVuO3JldHVybiBuLmV4cG9uZW50P24uZXhwb25lbnQrPTI6KHQ9PT0wP24uZGlnaXRzLnB1c2goMCwwKTp0PT09MSYmbi5kaWdpdHMucHVzaCgwKSxuLmludGVnZXJMZW4rPTIpLG59ZnVuY3Rpb24gQ3d0KG4pe2xldCB0PU1hdGguYWJzKG4pKyIiLGU9MCxvLGksYSxyLHM7Zm9yKChpPXQuaW5kZXhPZihzQSkpPi0xJiYodD10LnJlcGxhY2Uoc0EsIiIpKSwoYT10LnNlYXJjaCgvZS9pKSk+MD8oaTwwJiYoaT1hKSxpKz0rdC5zbGljZShhKzEpLHQ9dC5zdWJzdHJpbmcoMCxhKSk6aTwwJiYoaT10Lmxlbmd0aCksYT0wO3QuY2hhckF0KGEpPT09V1I7YSsrKTtpZihhPT09KHM9dC5sZW5ndGgpKW89WzBdLGk9MTtlbHNle2ZvcihzLS07dC5jaGFyQXQocyk9PT1XUjspcy0tO2ZvcihpLT1hLG89W10scj0wO2E8PXM7YSsrLHIrKylvW3JdPU51bWJlcih0LmNoYXJBdChhKSl9cmV0dXJuIGk+RWV0JiYobz1vLnNwbGljZSgwLEVldC0xKSxlPWktMSxpPTEpLHtkaWdpdHM6byxleHBvbmVudDplLGludGVnZXJMZW46aX19ZnVuY3Rpb24gTXd0KG4sdCxlKXtpZih0PmUpdGhyb3cgbmV3IEVycm9yKGBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIGZyYWN0aW9uICgke3R9KSBpcyBoaWdoZXIgdGhhbiB0aGUgbWF4aW11bSAoJHtlfSkuYCk7bGV0IG89bi5kaWdpdHMsaT1vLmxlbmd0aC1uLmludGVnZXJMZW4sYT1NYXRoLm1pbihNYXRoLm1heCh0LGkpLGUpLHI9YStuLmludGVnZXJMZW4scz1vW3JdO2lmKHI+MCl7by5zcGxpY2UoTWF0aC5tYXgobi5pbnRlZ2VyTGVuLHIpKTtmb3IobGV0IGY9cjtmPG8ubGVuZ3RoO2YrKylvW2ZdPTB9ZWxzZXtpPU1hdGgubWF4KDAsaSksbi5pbnRlZ2VyTGVuPTEsby5sZW5ndGg9TWF0aC5tYXgoMSxyPWErMSksb1swXT0wO2ZvcihsZXQgZj0xO2Y8cjtmKyspb1tmXT0wfWlmKHM+PTUpaWYoci0xPDApe2ZvcihsZXQgZj0wO2Y+cjtmLS0pby51bnNoaWZ0KDApLG4uaW50ZWdlckxlbisrO28udW5zaGlmdCgxKSxuLmludGVnZXJMZW4rK31lbHNlIG9bci0xXSsrO2Zvcig7aTxNYXRoLm1heCgwLGEpO2krKylvLnB1c2goMCk7bGV0IGw9YSE9PTAsYz10K24uaW50ZWdlckxlbixtPW8ucmVkdWNlUmlnaHQoZnVuY3Rpb24oZixwLGcsXyl7cmV0dXJuIHA9cCtmLF9bZ109cDwxMD9wOnAtMTAsbCYmKF9bZ109PT0wJiZnPj1jP18ucG9wKCk6bD0hMSkscD49MTA/MTowfSwwKTttJiYoby51bnNoaWZ0KG0pLG4uaW50ZWdlckxlbisrKX1mdW5jdGlvbiAkQihuKXtsZXQgdD1wYXJzZUludChuKTtpZihpc05hTih0KSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdoZW4gcGFyc2luZyAiK24pO3JldHVybiB0fXZhciBlTT1jbGFzc3t9O2Z1bmN0aW9uIFdldChuLHQsZSxvKXtsZXQgaT1gPSR7bn1gO2lmKHQuaW5kZXhPZihpKT4tMXx8KGk9ZS5nZXRQbHVyYWxDYXRlZ29yeShuLG8pLHQuaW5kZXhPZihpKT4tMSkpcmV0dXJuIGk7aWYodC5pbmRleE9mKCJvdGhlciIpPi0xKXJldHVybiJvdGhlciI7dGhyb3cgbmV3IEVycm9yKGBObyBwbHVyYWwgbWVzc2FnZSBmb3VuZCBmb3IgdmFsdWUgIiR7bn0iYCl9dmFyIHRNPWNsYXNzIGV4dGVuZHMgZU17Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmxvY2FsZT10fWdldFBsdXJhbENhdGVnb3J5KHQsZSl7c3dpdGNoKFcxdChlfHx0aGlzLmxvY2FsZSkodCkpe2Nhc2UgQ3YuWmVybzpyZXR1cm4iemVybyI7Y2FzZSBDdi5PbmU6cmV0dXJuIm9uZSI7Y2FzZSBDdi5Ud286cmV0dXJuInR3byI7Y2FzZSBDdi5GZXc6cmV0dXJuImZldyI7Y2FzZSBDdi5NYW55OnJldHVybiJtYW55IjtkZWZhdWx0OnJldHVybiJvdGhlciJ9fX07dE0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dE0pKEkoY3IpKX07dE0uXHUwMjc1cHJvdj1QdCh7dG9rZW46dE0sZmFjdG9yeTp0TS5cdTAyNzVmYWN9KTt0TS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2NyXX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHRNLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2NyXX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBtQShuLHQpe3Q9ZW5jb2RlVVJJQ29tcG9uZW50KHQpO2ZvcihsZXQgZSBvZiBuLnNwbGl0KCI7Iikpe2xldCBvPWUuaW5kZXhPZigiPSIpLFtpLGFdPW89PS0xP1tlLCIiXTpbZS5zbGljZSgwLG8pLGUuc2xpY2UobysxKV07aWYoaS50cmltKCk9PT10KXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoYSl9cmV0dXJuIG51bGx9dmFyIGpuPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuX2l0ZXJhYmxlRGlmZmVycz10LHRoaXMuX2tleVZhbHVlRGlmZmVycz1lLHRoaXMuX25nRWw9byx0aGlzLl9yZW5kZXJlcj1pLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9pbml0aWFsQ2xhc3Nlcz1bXSx0aGlzLl9yYXdDbGFzcz1udWxsfXNldCBrbGFzcyh0KXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2VzKSx0aGlzLl9pbml0aWFsQ2xhc3Nlcz10eXBlb2YgdD09InN0cmluZyI/dC5zcGxpdCgvXHMrLyk6W10sdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX2luaXRpYWxDbGFzc2VzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5fcmF3Q2xhc3MpfXNldCBuZ0NsYXNzKHQpe3RoaXMuX3JlbW92ZUNsYXNzZXModGhpcy5fcmF3Q2xhc3MpLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5faXRlcmFibGVEaWZmZXI9bnVsbCx0aGlzLl9rZXlWYWx1ZURpZmZlcj1udWxsLHRoaXMuX3Jhd0NsYXNzPXR5cGVvZiB0PT0ic3RyaW5nIj90LnNwbGl0KC9ccysvKTp0LHRoaXMuX3Jhd0NsYXNzJiYoeXcodGhpcy5fcmF3Q2xhc3MpP3RoaXMuX2l0ZXJhYmxlRGlmZmVyPXRoaXMuX2l0ZXJhYmxlRGlmZmVycy5maW5kKHRoaXMuX3Jhd0NsYXNzKS5jcmVhdGUoKTp0aGlzLl9rZXlWYWx1ZURpZmZlcj10aGlzLl9rZXlWYWx1ZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2l0ZXJhYmxlRGlmZmVyKXtsZXQgdD10aGlzLl9pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTt0JiZ0aGlzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0KX1lbHNlIGlmKHRoaXMuX2tleVZhbHVlRGlmZmVyKXtsZXQgdD10aGlzLl9rZXlWYWx1ZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTt0JiZ0aGlzLl9hcHBseUtleVZhbHVlQ2hhbmdlcyh0KX19X2FwcGx5S2V5VmFsdWVDaGFuZ2VzKHQpe3QuZm9yRWFjaEFkZGVkSXRlbShlPT50aGlzLl90b2dnbGVDbGFzcyhlLmtleSxlLmN1cnJlbnRWYWx1ZSkpLHQuZm9yRWFjaENoYW5nZWRJdGVtKGU9PnRoaXMuX3RvZ2dsZUNsYXNzKGUua2V5LGUuY3VycmVudFZhbHVlKSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oZT0+e2UucHJldmlvdXNWYWx1ZSYmdGhpcy5fdG9nZ2xlQ2xhc3MoZS5rZXksITEpfSl9X2FwcGx5SXRlcmFibGVDaGFuZ2VzKHQpe3QuZm9yRWFjaEFkZGVkSXRlbShlPT57aWYodHlwZW9mIGUuaXRlbT09InN0cmluZyIpdGhpcy5fdG9nZ2xlQ2xhc3MoZS5pdGVtLCEwKTtlbHNlIHRocm93IG5ldyBFcnJvcihgTmdDbGFzcyBjYW4gb25seSB0b2dnbGUgQ1NTIGNsYXNzZXMgZXhwcmVzc2VkIGFzIHN0cmluZ3MsIGdvdCAke09vKGUuaXRlbSl9YCl9KSx0LmZvckVhY2hSZW1vdmVkSXRlbShlPT50aGlzLl90b2dnbGVDbGFzcyhlLml0ZW0sITEpKX1fYXBwbHlDbGFzc2VzKHQpe3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaChlPT50aGlzLl90b2dnbGVDbGFzcyhlLCEwKSk6T2JqZWN0LmtleXModCkuZm9yRWFjaChlPT50aGlzLl90b2dnbGVDbGFzcyhlLCEhdFtlXSkpKX1fcmVtb3ZlQ2xhc3Nlcyh0KXt0JiYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFNldD90LmZvckVhY2goZT0+dGhpcy5fdG9nZ2xlQ2xhc3MoZSwhMSkpOk9iamVjdC5rZXlzKHQpLmZvckVhY2goZT0+dGhpcy5fdG9nZ2xlQ2xhc3MoZSwhMSkpKX1fdG9nZ2xlQ2xhc3ModCxlKXt0PXQudHJpbSgpLHQmJnQuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKG89PntlP3RoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX25nRWwubmF0aXZlRWxlbWVudCxvKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsbyl9KX19O2puLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGpuKSh2KGtvKSx2KFByKSx2KEwpLHYob2EpKX07am4uXHUwMjc1ZGlyPXZ0KHt0eXBlOmpuLHNlbGVjdG9yczpbWyIiLCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdDbGFzczoibmdDbGFzcyJ9fSk7am4uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprb30se3R5cGU6UHJ9LHt0eXBlOkx9LHt0eXBlOm9hfV07am4ucHJvcERlY29yYXRvcnM9e2tsYXNzOlt7dHlwZTpkLGFyZ3M6WyJjbGFzcyJdfV0sbmdDbGFzczpbe3R5cGU6ZCxhcmdzOlsibmdDbGFzcyJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhqbixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbmdDbGFzc10ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTprb30se3R5cGU6UHJ9LHt0eXBlOkx9LHt0eXBlOm9hfV19LHtrbGFzczpbe3R5cGU6ZCxhcmdzOlsiY2xhc3MiXX1dLG5nQ2xhc3M6W3t0eXBlOmQsYXJnczpbIm5nQ2xhc3MiXX1dfSl9KSgpO3ZhciB1Xz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fY29tcG9uZW50UmVmPW51bGwsdGhpcy5fbW9kdWxlUmVmPW51bGx9bmdPbkNoYW5nZXModCl7aWYodGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpLHRoaXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMubmdDb21wb25lbnRPdXRsZXQpe2xldCBlPXRoaXMubmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcnx8dGhpcy5fdmlld0NvbnRhaW5lclJlZi5wYXJlbnRJbmplY3RvcjtpZih0Lm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5KWlmKHRoaXMuX21vZHVsZVJlZiYmdGhpcy5fbW9kdWxlUmVmLmRlc3Ryb3koKSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5KXtsZXQgYT1lLmdldChQYik7dGhpcy5fbW9kdWxlUmVmPXRoaXMubmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkuY3JlYXRlKGEuaW5qZWN0b3IpfWVsc2UgdGhpcy5fbW9kdWxlUmVmPW51bGw7bGV0IGk9KHRoaXMuX21vZHVsZVJlZj90aGlzLl9tb2R1bGVSZWYuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOmUuZ2V0KF9vKSkucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5uZ0NvbXBvbmVudE91dGxldCk7dGhpcy5fY29tcG9uZW50UmVmPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGksdGhpcy5fdmlld0NvbnRhaW5lclJlZi5sZW5ndGgsZSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0Q29udGVudCl9fW5nT25EZXN0cm95KCl7dGhpcy5fbW9kdWxlUmVmJiZ0aGlzLl9tb2R1bGVSZWYuZGVzdHJveSgpfX07dV8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dV8pKHYoX2UpKX07dV8uXHUwMjc1ZGlyPXZ0KHt0eXBlOnVfLHNlbGVjdG9yczpbWyIiLCJuZ0NvbXBvbmVudE91dGxldCIsIiJdXSxpbnB1dHM6e25nQ29tcG9uZW50T3V0bGV0OiJuZ0NvbXBvbmVudE91dGxldCIsbmdDb21wb25lbnRPdXRsZXRJbmplY3RvcjoibmdDb21wb25lbnRPdXRsZXRJbmplY3RvciIsbmdDb21wb25lbnRPdXRsZXRDb250ZW50OiJuZ0NvbXBvbmVudE91dGxldENvbnRlbnQiLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5OiJuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeSJ9LGZlYXR1cmVzOltXZV19KTt1Xy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOl9lfV07dV8ucHJvcERlY29yYXRvcnM9e25nQ29tcG9uZW50T3V0bGV0Olt7dHlwZTpkfV0sbmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcjpbe3R5cGU6ZH1dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpbe3R5cGU6ZH1dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh1Xyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbmdDb21wb25lbnRPdXRsZXRdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9XX0se25nQ29tcG9uZW50T3V0bGV0Olt7dHlwZTpkfV0sbmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcjpbe3R5cGU6ZH1dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpbe3R5cGU6ZH1dLG5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5Olt7dHlwZTpkfV19KX0pKCk7dmFyIGVWPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuJGltcGxpY2l0PXQsdGhpcy5uZ0Zvck9mPWUsdGhpcy5pbmRleD1vLHRoaXMuY291bnQ9aX1nZXQgZmlyc3QoKXtyZXR1cm4gdGhpcy5pbmRleD09PTB9Z2V0IGxhc3QoKXtyZXR1cm4gdGhpcy5pbmRleD09PXRoaXMuY291bnQtMX1nZXQgZXZlbigpe3JldHVybiB0aGlzLmluZGV4JTI9PT0wfWdldCBvZGQoKXtyZXR1cm4hdGhpcy5ldmVufX0sbW49Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX3ZpZXdDb250YWluZXI9dCx0aGlzLl90ZW1wbGF0ZT1lLHRoaXMuX2RpZmZlcnM9byx0aGlzLl9uZ0Zvck9mPW51bGwsdGhpcy5fbmdGb3JPZkRpcnR5PSEwLHRoaXMuX2RpZmZlcj1udWxsfXNldCBuZ0Zvck9mKHQpe3RoaXMuX25nRm9yT2Y9dCx0aGlzLl9uZ0Zvck9mRGlydHk9ITB9c2V0IG5nRm9yVHJhY2tCeSh0KXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJnQhPW51bGwmJnR5cGVvZiB0IT0iZnVuY3Rpb24iJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihgdHJhY2tCeSBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfS4gU2VlIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29tbW9uL05nRm9yT2YjY2hhbmdlLXByb3BhZ2F0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLmApLHRoaXMuX3RyYWNrQnlGbj10fWdldCBuZ0ZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fdHJhY2tCeUZufXNldCBuZ0ZvclRlbXBsYXRlKHQpe3QmJih0aGlzLl90ZW1wbGF0ZT10KX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9uZ0Zvck9mRGlydHkpe3RoaXMuX25nRm9yT2ZEaXJ0eT0hMTtsZXQgdD10aGlzLl9uZ0Zvck9mO2lmKCF0aGlzLl9kaWZmZXImJnQpdHJ5e3RoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQodCkuY3JlYXRlKHRoaXMubmdGb3JUcmFja0J5KX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke3R9JyBvZiB0eXBlICcke2J3dCh0KX0nLiBOZ0ZvciBvbmx5IHN1cHBvcnRzIGJpbmRpbmcgdG8gSXRlcmFibGVzIHN1Y2ggYXMgQXJyYXlzLmApfX1pZih0aGlzLl9kaWZmZXIpe2xldCB0PXRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX25nRm9yT2YpO3QmJnRoaXMuX2FwcGx5Q2hhbmdlcyh0KX19X2FwcGx5Q2hhbmdlcyh0KXtsZXQgZT1bXTt0LmZvckVhY2hPcGVyYXRpb24oKG8saSxhKT0+e2lmKG8ucHJldmlvdXNJbmRleD09bnVsbCl7bGV0IHI9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGUsbmV3IGVWKG51bGwsdGhpcy5fbmdGb3JPZiwtMSwtMSksYT09PW51bGw/dm9pZCAwOmEpLHM9bmV3IGxBKG8scik7ZS5wdXNoKHMpfWVsc2UgaWYoYT09bnVsbCl0aGlzLl92aWV3Q29udGFpbmVyLnJlbW92ZShpPT09bnVsbD92b2lkIDA6aSk7ZWxzZSBpZihpIT09bnVsbCl7bGV0IHI9dGhpcy5fdmlld0NvbnRhaW5lci5nZXQoaSk7dGhpcy5fdmlld0NvbnRhaW5lci5tb3ZlKHIsYSk7bGV0IHM9bmV3IGxBKG8scik7ZS5wdXNoKHMpfX0pO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXRoaXMuX3BlclZpZXdDaGFuZ2UoZVtvXS52aWV3LGVbb10ucmVjb3JkKTtmb3IobGV0IG89MCxpPXRoaXMuX3ZpZXdDb250YWluZXIubGVuZ3RoO288aTtvKyspe2xldCBhPXRoaXMuX3ZpZXdDb250YWluZXIuZ2V0KG8pO2EuY29udGV4dC5pbmRleD1vLGEuY29udGV4dC5jb3VudD1pLGEuY29udGV4dC5uZ0Zvck9mPXRoaXMuX25nRm9yT2Z9dC5mb3JFYWNoSWRlbnRpdHlDaGFuZ2Uobz0+e2xldCBpPXRoaXMuX3ZpZXdDb250YWluZXIuZ2V0KG8uY3VycmVudEluZGV4KTtpLmNvbnRleHQuJGltcGxpY2l0PW8uaXRlbX0pfV9wZXJWaWV3Q2hhbmdlKHQsZSl7dC5jb250ZXh0LiRpbXBsaWNpdD1lLml0ZW19c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQodCxlKXtyZXR1cm4hMH19O21uLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG1uKSh2KF9lKSx2KGtlKSx2KGtvKSl9O21uLlx1MDI3NWRpcj12dCh7dHlwZTptbixzZWxlY3RvcnM6W1siIiwibmdGb3IiLCIiLCJuZ0Zvck9mIiwiIl1dLGlucHV0czp7bmdGb3JPZjoibmdGb3JPZiIsbmdGb3JUcmFja0J5OiJuZ0ZvclRyYWNrQnkiLG5nRm9yVGVtcGxhdGU6Im5nRm9yVGVtcGxhdGUifX0pO21uLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X2V9LHt0eXBlOmtlfSx7dHlwZTprb31dO21uLnByb3BEZWNvcmF0b3JzPXtuZ0Zvck9mOlt7dHlwZTpkfV0sbmdGb3JUcmFja0J5Olt7dHlwZTpkfV0sbmdGb3JUZW1wbGF0ZTpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobW4sW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW25nRm9yXVtuZ0Zvck9mXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9lfSx7dHlwZTprZX0se3R5cGU6a299XX0se25nRm9yT2Y6W3t0eXBlOmR9XSxuZ0ZvclRyYWNrQnk6W3t0eXBlOmR9XSxuZ0ZvclRlbXBsYXRlOlt7dHlwZTpkfV19KX0pKCk7dmFyIGxBPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5yZWNvcmQ9dCx0aGlzLnZpZXc9ZX19O2Z1bmN0aW9uIGJ3dChuKXtyZXR1cm4gbi5uYW1lfHx0eXBlb2Ygbn12YXIgWHQ9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhpcy5fY29udGV4dD1uZXcgblYsdGhpcy5fdGhlblRlbXBsYXRlUmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmPW51bGwsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1lfXNldCBuZ0lmKHQpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0PXRoaXMuX2NvbnRleHQubmdJZj10LHRoaXMuX3VwZGF0ZVZpZXcoKX1zZXQgbmdJZlRoZW4odCl7TmV0KCJuZ0lmVGhlbiIsdCksdGhpcy5fdGhlblRlbXBsYXRlUmVmPXQsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl91cGRhdGVWaWV3KCl9c2V0IG5nSWZFbHNlKHQpe05ldCgibmdJZkVsc2UiLHQpLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZj10LHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdXBkYXRlVmlldygpfV91cGRhdGVWaWV3KCl7dGhpcy5fY29udGV4dC4kaW1wbGljaXQ/dGhpcy5fdGhlblZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZWxzZVZpZXdSZWY9bnVsbCx0aGlzLl90aGVuVGVtcGxhdGVSZWYmJih0aGlzLl90aGVuVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90aGVuVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKTp0aGlzLl9lbHNlVmlld1JlZnx8KHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZiYmKHRoaXMuX2Vsc2VWaWV3UmVmPXRoaXMuX3ZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX2Vsc2VUZW1wbGF0ZVJlZix0aGlzLl9jb250ZXh0KSkpfXN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKHQsZSl7cmV0dXJuITB9fTtYdC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxYdCkodihfZSksdihrZSkpfTtYdC5cdTAyNzVkaXI9dnQoe3R5cGU6WHQsc2VsZWN0b3JzOltbIiIsIm5nSWYiLCIiXV0saW5wdXRzOntuZ0lmOiJuZ0lmIixuZ0lmVGhlbjoibmdJZlRoZW4iLG5nSWZFbHNlOiJuZ0lmRWxzZSJ9fSk7WHQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfZX0se3R5cGU6a2V9XTtYdC5wcm9wRGVjb3JhdG9ycz17bmdJZjpbe3R5cGU6ZH1dLG5nSWZUaGVuOlt7dHlwZTpkfV0sbmdJZkVsc2U6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFh0LFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltuZ0lmXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9lfSx7dHlwZTprZX1dfSx7bmdJZjpbe3R5cGU6ZH1dLG5nSWZUaGVuOlt7dHlwZTpkfV0sbmdJZkVsc2U6W3t0eXBlOmR9XX0pfSkoKTt2YXIgblY9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLiRpbXBsaWNpdD1udWxsLHRoaXMubmdJZj1udWxsfX07ZnVuY3Rpb24gTmV0KG4sdCl7aWYoISEhKCF0fHx0LmNyZWF0ZUVtYmVkZGVkVmlldykpdGhyb3cgbmV3IEVycm9yKGAke259IG11c3QgYmUgYSBUZW1wbGF0ZVJlZiwgYnV0IHJlY2VpdmVkICcke09vKHQpfScuYCl9dmFyIFpSPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBsYXRlUmVmPWUsdGhpcy5fY3JlYXRlZD0hMX1jcmVhdGUoKXt0aGlzLl9jcmVhdGVkPSEwLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX3RlbXBsYXRlUmVmKX1kZXN0cm95KCl7dGhpcy5fY3JlYXRlZD0hMSx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCl9ZW5mb3JjZVN0YXRlKHQpe3QmJiF0aGlzLl9jcmVhdGVkP3RoaXMuY3JlYXRlKCk6IXQmJnRoaXMuX2NyZWF0ZWQmJnRoaXMuZGVzdHJveSgpfX0sR289Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExfXNldCBuZ1N3aXRjaCh0KXt0aGlzLl9uZ1N3aXRjaD10LHRoaXMuX2Nhc2VDb3VudD09PTAmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghMCl9X2FkZENhc2UoKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9X2FkZERlZmF1bHQodCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmlld3MucHVzaCh0KX1fbWF0Y2hDYXNlKHQpe2xldCBlPXQ9PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPXRoaXMuX2xhc3RDYXNlc01hdGNoZWR8fGUsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4KyssdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCF0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExKSxlfV91cGRhdGVEZWZhdWx0Q2FzZXModCl7aWYodGhpcy5fZGVmYXVsdFZpZXdzJiZ0IT09dGhpcy5fZGVmYXVsdFVzZWQpe3RoaXMuX2RlZmF1bHRVc2VkPXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLl9kZWZhdWx0Vmlld3MubGVuZ3RoO2UrKyl0aGlzLl9kZWZhdWx0Vmlld3NbZV0uZW5mb3JjZVN0YXRlKHQpfX19O0dvLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEdvKX07R28uXHUwMjc1ZGlyPXZ0KHt0eXBlOkdvLHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaCIsIiJdXSxpbnB1dHM6e25nU3dpdGNoOiJuZ1N3aXRjaCJ9fSk7R28ucHJvcERlY29yYXRvcnM9e25nU3dpdGNoOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhHbyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0se25nU3dpdGNoOlt7dHlwZTpkfV19KX0pKCk7dmFyIHVpPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLm5nU3dpdGNoPW8sKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiYhbyYmcWV0KCJuZ1N3aXRjaENhc2UiLCJOZ1N3aXRjaENhc2UiKSxvLl9hZGRDYXNlKCksdGhpcy5fdmlldz1uZXcgWlIodCxlKX1uZ0RvQ2hlY2soKXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlzLm5nU3dpdGNoLl9tYXRjaENhc2UodGhpcy5uZ1N3aXRjaENhc2UpKX19O3VpLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHVpKSh2KF9lKSx2KGtlKSx2KEdvLDkpKX07dWkuXHUwMjc1ZGlyPXZ0KHt0eXBlOnVpLHNlbGVjdG9yczpbWyIiLCJuZ1N3aXRjaENhc2UiLCIiXV0saW5wdXRzOntuZ1N3aXRjaENhc2U6Im5nU3dpdGNoQ2FzZSJ9fSk7dWkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfZX0se3R5cGU6a2V9LHt0eXBlOkdvLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOnphfV19XTt1aS5wcm9wRGVjb3JhdG9ycz17bmdTd2l0Y2hDYXNlOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh1aSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbmdTd2l0Y2hDYXNlXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9lfSx7dHlwZTprZX0se3R5cGU6R28sZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6emF9XX1dfSx7bmdTd2l0Y2hDYXNlOlt7dHlwZTpkfV19KX0pKCk7dmFyIFZsPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJiFvJiZxZXQoIm5nU3dpdGNoRGVmYXVsdCIsIk5nU3dpdGNoRGVmYXVsdCIpLG8uX2FkZERlZmF1bHQobmV3IFpSKHQsZSkpfX07VmwuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8VmwpKHYoX2UpLHYoa2UpLHYoR28sOSkpfTtWbC5cdTAyNzVkaXI9dnQoe3R5cGU6Vmwsc2VsZWN0b3JzOltbIiIsIm5nU3dpdGNoRGVmYXVsdCIsIiJdXX0pO1ZsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X2V9LHt0eXBlOmtlfSx7dHlwZTpHbyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTp6YX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFZsLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltuZ1N3aXRjaERlZmF1bHRdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9LHt0eXBlOmtlfSx7dHlwZTpHbyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTp6YX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBxZXQobix0KXt0aHJvdyBuZXcgeWIoIjMwNSIsYEFuIGVsZW1lbnQgd2l0aCB0aGUgIiR7bn0iIGF0dHJpYnV0ZSAobWF0Y2hpbmcgdGhlICIke3R9IiBkaXJlY3RpdmUpIG11c3QgYmUgbG9jYXRlZCBpbnNpZGUgYW4gZWxlbWVudCB3aXRoIHRoZSAibmdTd2l0Y2giIGF0dHJpYnV0ZSAobWF0Y2hpbmcgIk5nU3dpdGNoIiBkaXJlY3RpdmUpYCl9dmFyIHFtPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsaXphdGlvbj10LHRoaXMuX2Nhc2VWaWV3cz17fX1zZXQgbmdQbHVyYWwodCl7dGhpcy5fc3dpdGNoVmFsdWU9dCx0aGlzLl91cGRhdGVWaWV3KCl9YWRkQ2FzZSh0LGUpe3RoaXMuX2Nhc2VWaWV3c1t0XT1lfV91cGRhdGVWaWV3KCl7dGhpcy5fY2xlYXJWaWV3cygpO2xldCB0PU9iamVjdC5rZXlzKHRoaXMuX2Nhc2VWaWV3cyksZT1XZXQodGhpcy5fc3dpdGNoVmFsdWUsdCx0aGlzLl9sb2NhbGl6YXRpb24pO3RoaXMuX2FjdGl2YXRlVmlldyh0aGlzLl9jYXNlVmlld3NbZV0pfV9jbGVhclZpZXdzKCl7dGhpcy5fYWN0aXZlVmlldyYmdGhpcy5fYWN0aXZlVmlldy5kZXN0cm95KCl9X2FjdGl2YXRlVmlldyh0KXt0JiYodGhpcy5fYWN0aXZlVmlldz10LHRoaXMuX2FjdGl2ZVZpZXcuY3JlYXRlKCkpfX07cW0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cW0pKHYoZU0pKX07cW0uXHUwMjc1ZGlyPXZ0KHt0eXBlOnFtLHNlbGVjdG9yczpbWyIiLCJuZ1BsdXJhbCIsIiJdXSxpbnB1dHM6e25nUGx1cmFsOiJuZ1BsdXJhbCJ9fSk7cW0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTplTX1dO3FtLnByb3BEZWNvcmF0b3JzPXtuZ1BsdXJhbDpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocW0sW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW25nUGx1cmFsXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmVNfV19LHtuZ1BsdXJhbDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBuTT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLnZhbHVlPXQ7bGV0IGE9IWlzTmFOKE51bWJlcih0KSk7aS5hZGRDYXNlKGE/YD0ke3R9YDp0LG5ldyBaUihvLGUpKX19O25NLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG5NKShaYSgibmdQbHVyYWxDYXNlIiksdihrZSksdihfZSksdihxbSwxKSl9O25NLlx1MDI3NWRpcj12dCh7dHlwZTpuTSxzZWxlY3RvcnM6W1siIiwibmdQbHVyYWxDYXNlIiwiIl1dfSk7bk0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6bGksYXJnczpbIm5nUGx1cmFsQ2FzZSJdfV19LHt0eXBlOmtlfSx7dHlwZTpfZX0se3R5cGU6cW0sZGVjb3JhdG9yczpbe3R5cGU6emF9XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhuTSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbmdQbHVyYWxDYXNlXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsibmdQbHVyYWxDYXNlIl19XX0se3R5cGU6a2V9LHt0eXBlOl9lfSx7dHlwZTpxbSxkZWNvcmF0b3JzOlt7dHlwZTp6YX1dfV19LG51bGwpfSkoKTt2YXIgSHI9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX25nRWw9dCx0aGlzLl9kaWZmZXJzPWUsdGhpcy5fcmVuZGVyZXI9byx0aGlzLl9uZ1N0eWxlPW51bGwsdGhpcy5fZGlmZmVyPW51bGx9c2V0IG5nU3R5bGUodCl7dGhpcy5fbmdTdHlsZT10LCF0aGlzLl9kaWZmZXImJnQmJih0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9kaWZmZXIpe2xldCB0PXRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX25nU3R5bGUpO3QmJnRoaXMuX2FwcGx5Q2hhbmdlcyh0KX19X3NldFN0eWxlKHQsZSl7bGV0W28saV09dC5zcGxpdCgiLiIpO2U9ZSE9bnVsbCYmaT9gJHtlfSR7aX1gOmUsZSE9bnVsbD90aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsbyxlKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsbyl9X2FwcGx5Q2hhbmdlcyh0KXt0LmZvckVhY2hSZW1vdmVkSXRlbShlPT50aGlzLl9zZXRTdHlsZShlLmtleSxudWxsKSksdC5mb3JFYWNoQWRkZWRJdGVtKGU9PnRoaXMuX3NldFN0eWxlKGUua2V5LGUuY3VycmVudFZhbHVlKSksdC5mb3JFYWNoQ2hhbmdlZEl0ZW0oZT0+dGhpcy5fc2V0U3R5bGUoZS5rZXksZS5jdXJyZW50VmFsdWUpKX19O0hyLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEhyKSh2KEwpLHYoUHIpLHYob2EpKX07SHIuXHUwMjc1ZGlyPXZ0KHt0eXBlOkhyLHNlbGVjdG9yczpbWyIiLCJuZ1N0eWxlIiwiIl1dLGlucHV0czp7bmdTdHlsZToibmdTdHlsZSJ9fSk7SHIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpQcn0se3R5cGU6b2F9XTtIci5wcm9wRGVjb3JhdG9ycz17bmdTdHlsZTpbe3R5cGU6ZCxhcmdzOlsibmdTdHlsZSJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhIcixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbmdTdHlsZV0ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpQcn0se3R5cGU6b2F9XX0se25nU3R5bGU6W3t0eXBlOmQsYXJnczpbIm5nU3R5bGUiXX1dfSl9KSgpO3ZhciBMYT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fdmlld1JlZj1udWxsLHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQ9bnVsbCx0aGlzLm5nVGVtcGxhdGVPdXRsZXQ9bnVsbH1uZ09uQ2hhbmdlcyh0KXtpZih0Lm5nVGVtcGxhdGVPdXRsZXQpe2xldCBlPXRoaXMuX3ZpZXdDb250YWluZXJSZWY7dGhpcy5fdmlld1JlZiYmZS5yZW1vdmUoZS5pbmRleE9mKHRoaXMuX3ZpZXdSZWYpKSx0aGlzLl92aWV3UmVmPXRoaXMubmdUZW1wbGF0ZU91dGxldD9lLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLm5nVGVtcGxhdGVPdXRsZXQsdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCk6bnVsbH1lbHNlIHRoaXMuX3ZpZXdSZWYmJnQubmdUZW1wbGF0ZU91dGxldENvbnRleHQmJnRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQmJih0aGlzLl92aWV3UmVmLmNvbnRleHQ9dGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCl9fTtMYS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxMYSkodihfZSkpfTtMYS5cdTAyNzVkaXI9dnQoe3R5cGU6TGEsc2VsZWN0b3JzOltbIiIsIm5nVGVtcGxhdGVPdXRsZXQiLCIiXV0saW5wdXRzOntuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDoibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLG5nVGVtcGxhdGVPdXRsZXQ6Im5nVGVtcGxhdGVPdXRsZXQifSxmZWF0dXJlczpbV2VdfSk7TGEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfZX1dO0xhLnByb3BEZWNvcmF0b3JzPXtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6ZH1dLG5nVGVtcGxhdGVPdXRsZXQ6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKExhLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltuZ1RlbXBsYXRlT3V0bGV0XSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9lfV19LHtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dDpbe3R5cGU6ZH1dLG5nVGVtcGxhdGVPdXRsZXQ6W3t0eXBlOmR9XX0pfSkoKTt2YXIgVGV0PVtqbix1XyxtbixYdCxMYSxIcixHbyx1aSxWbCxxbSxuTV07ZnVuY3Rpb24gaU0obix0KXtyZXR1cm4gRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6ICcke3R9JyBmb3IgcGlwZSAnJHtPbyhuKX0nYCl9dmFyIG9WPWNsYXNze2NyZWF0ZVN1YnNjcmlwdGlvbih0LGUpe3JldHVybiB0LnN1YnNjcmliZSh7bmV4dDplLGVycm9yOm89Pnt0aHJvdyBvfX0pfWRpc3Bvc2UodCl7dC51bnN1YnNjcmliZSgpfW9uRGVzdHJveSh0KXt0LnVuc3Vic2NyaWJlKCl9fSxpVj1jbGFzc3tjcmVhdGVTdWJzY3JpcHRpb24odCxlKXtyZXR1cm4gdC50aGVuKGUsbz0+e3Rocm93IG99KX1kaXNwb3NlKHQpe31vbkRlc3Ryb3kodCl7fX0sT3d0PW5ldyBpVixQd3Q9bmV3IG9WLG9lPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3JlZj10LHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGwsdGhpcy5fc3RyYXRlZ3k9bnVsbH1uZ09uRGVzdHJveSgpe3RoaXMuX3N1YnNjcmlwdGlvbiYmdGhpcy5fZGlzcG9zZSgpfXRyYW5zZm9ybSh0KXtyZXR1cm4gdGhpcy5fb2JqP3QhPT10aGlzLl9vYmo/KHRoaXMuX2Rpc3Bvc2UoKSx0aGlzLnRyYW5zZm9ybSh0KSk6dGhpcy5fbGF0ZXN0VmFsdWU6KHQmJnRoaXMuX3N1YnNjcmliZSh0KSx0aGlzLl9sYXRlc3RWYWx1ZSl9X3N1YnNjcmliZSh0KXt0aGlzLl9vYmo9dCx0aGlzLl9zdHJhdGVneT10aGlzLl9zZWxlY3RTdHJhdGVneSh0KSx0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5fc3RyYXRlZ3kuY3JlYXRlU3Vic2NyaXB0aW9uKHQsZT0+dGhpcy5fdXBkYXRlTGF0ZXN0VmFsdWUodCxlKSl9X3NlbGVjdFN0cmF0ZWd5KHQpe2lmKFh3KHQpKXJldHVybiBPd3Q7aWYoTEIodCkpcmV0dXJuIFB3dDt0aHJvdyBpTShvZSx0KX1fZGlzcG9zZSgpe3RoaXMuX3N0cmF0ZWd5LmRpc3Bvc2UodGhpcy5fc3Vic2NyaXB0aW9uKSx0aGlzLl9sYXRlc3RWYWx1ZT1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsLHRoaXMuX29iaj1udWxsfV91cGRhdGVMYXRlc3RWYWx1ZSh0LGUpe3Q9PT10aGlzLl9vYmomJih0aGlzLl9sYXRlc3RWYWx1ZT1lLHRoaXMuX3JlZi5tYXJrRm9yQ2hlY2soKSl9fTtvZS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxvZSkodihUdCwxNikpfTtvZS5cdTAyNzVwaXBlPWptKHtuYW1lOiJhc3luYyIsdHlwZTpvZSxwdXJlOiExfSk7b2UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpUdH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhvZSxbe3R5cGU6WmYsYXJnczpbe25hbWU6ImFzeW5jIixwdXJlOiExfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUdH1dfSxudWxsKX0pKCk7dmFyIGhfPWNsYXNze3RyYW5zZm9ybSh0KXtpZih0PT1udWxsKXJldHVybiBudWxsO2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBpTShoXyx0KTtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpfX07aF8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8aF8pfTtoXy5cdTAyNzVwaXBlPWptKHtuYW1lOiJsb3dlcmNhc2UiLHR5cGU6aF8scHVyZTohMH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhoXyxbe3R5cGU6WmYsYXJnczpbe25hbWU6Imxvd2VyY2FzZSJ9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciB5d3Q9Lyg/OlswLTlBLVphLXpceEFBXHhCNVx4QkFceEMwLVx4RDZceEQ4LVx4RjZceEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0RcdTAzN0ZcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyRlx1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjAtXHUwNTg4XHUwNUQwLVx1MDVFQVx1MDVFRi1cdTA1RjJcdTA2MjAtXHUwNjRBXHUwNjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRVx1MDZFRlx1MDZGQS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDQS1cdTA3RUFcdTA3RjRcdTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0XHUwODI4XHUwODQwLVx1MDg1OFx1MDg2MC1cdTA4NkFcdTA4NzAtXHUwODg3XHUwODg5LVx1MDg4RVx1MDhBMC1cdTA4QzlcdTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1cdTA5ODBcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MDlGQ1x1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBBRjlcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzOVx1MEMzRFx1MEM1OC1cdTBDNUFcdTBDNURcdTBDNjBcdTBDNjFcdTBDODBcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBDQUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENGMlx1MEQwNC1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ1NC1cdTBENTZcdTBENUYtXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4Ni1cdTBFOEFcdTBFOEMtXHUwRUEzXHUwRUE1XHUwRUE3LVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZcdTBFREMtXHUwRURGXHUwRjAwXHUwRjQwLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhDXHUxMDAwLVx1MTAyQVx1MTAzRlx1MTA1MC1cdTEwNTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEwOEVcdTEwQTAtXHUxMEM1XHUxMEM3XHUxMENEXHUxMEQwLVx1MTBGQVx1MTBGQy1cdTEyNDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1MTI1Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEyQjBcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUxMkQ2XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjVcdTEzRjgtXHUxM0ZEXHUxNDAxLVx1MTY2Q1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1MTZGMS1cdTE2RjhcdTE3MDAtXHUxNzExXHUxNzFGLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE4MjAtXHUxODc4XHUxODgwLVx1MTg4NFx1MTg4Ny1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxRVx1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRDXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQzkwLVx1MUNCQVx1MUNCRC1cdTFDQkZcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGM1x1MUNGNVx1MUNGNlx1MUNGQVx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1cdTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1cdTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYtXHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZGNFx1MUZGNi1cdTFGRkNcdTIwNzFcdTIwN0ZcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBBLVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJEXHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTgzXHUyMTg0XHUyQzAwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNVx1MzAwNlx1MzAzMS1cdTMwMzVcdTMwM0JcdTMwM0NcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRlx1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJGXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQkZcdTRFMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OURcdUE2QTAtXHVBNkU1XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBN0NBXHVBN0QwXHVBN0QxXHVBN0QzXHVBN0Q1LVx1QTdEOVx1QTdGMi1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJcdUE4RkRcdUE4RkVcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBOUUwLVx1QTlFNFx1QTlFNi1cdUE5RUZcdUE5RkEtXHVBOUZFXHVBQTAwLVx1QUEyOFx1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE3RS1cdUFBQUZcdUFBQjFcdUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCMzAtXHVBQjVBXHVBQjVDLVx1QUI2OVx1QUI3MC1cdUFCRTJcdUFDMDAtXHVEN0EzXHVEN0IwLVx1RDdDNlx1RDdDQi1cdUQ3RkJcdUY5MDAtXHVGQTZEXHVGQTcwLVx1RkFEOVx1RkIwMC1cdUZCMDZcdUZCMTMtXHVGQjE3XHVGQjFEXHVGQjFGLVx1RkIyOFx1RkIyQS1cdUZCMzZcdUZCMzgtXHVGQjNDXHVGQjNFXHVGQjQwXHVGQjQxXHVGQjQzXHVGQjQ0XHVGQjQ2LVx1RkJCMVx1RkJEMy1cdUZEM0RcdUZENTAtXHVGRDhGXHVGRDkyLVx1RkRDN1x1RkRGMC1cdUZERkJcdUZFNzAtXHVGRTc0XHVGRTc2LVx1RkVGQ1x1RkYyMS1cdUZGM0FcdUZGNDEtXHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZGRENdfFx1RDgwMFtcdURDMDAtXHVEQzBCXHVEQzBELVx1REMyNlx1REMyOC1cdURDM0FcdURDM0NcdURDM0RcdURDM0YtXHVEQzREXHVEQzUwLVx1REM1RFx1REM4MC1cdURDRkFcdURFODAtXHVERTlDXHVERUEwLVx1REVEMFx1REYwMC1cdURGMUZcdURGMkQtXHVERjQwXHVERjQyLVx1REY0OVx1REY1MC1cdURGNzVcdURGODAtXHVERjlEXHVERkEwLVx1REZDM1x1REZDOC1cdURGQ0ZdfFx1RDgwMVtcdURDMDAtXHVEQzlEXHVEQ0IwLVx1RENEM1x1RENEOC1cdURDRkJcdUREMDAtXHVERDI3XHVERDMwLVx1REQ2M1x1REQ3MC1cdUREN0FcdUREN0MtXHVERDhBXHVERDhDLVx1REQ5Mlx1REQ5NFx1REQ5NVx1REQ5Ny1cdUREQTFcdUREQTMtXHVEREIxXHVEREIzLVx1RERCOVx1RERCQlx1RERCQ1x1REUwMC1cdURGMzZcdURGNDAtXHVERjU1XHVERjYwLVx1REY2N1x1REY4MC1cdURGODVcdURGODctXHVERkIwXHVERkIyLVx1REZCQV18XHVEODAyW1x1REMwMC1cdURDMDVcdURDMDhcdURDMEEtXHVEQzM1XHVEQzM3XHVEQzM4XHVEQzNDXHVEQzNGLVx1REM1NVx1REM2MC1cdURDNzZcdURDODAtXHVEQzlFXHVEQ0UwLVx1RENGMlx1RENGNFx1RENGNVx1REQwMC1cdUREMTVcdUREMjAtXHVERDM5XHVERDgwLVx1RERCN1x1RERCRVx1RERCRlx1REUwMFx1REUxMC1cdURFMTNcdURFMTUtXHVERTE3XHVERTE5LVx1REUzNVx1REU2MC1cdURFN0NcdURFODAtXHVERTlDXHVERUMwLVx1REVDN1x1REVDOS1cdURFRTRcdURGMDAtXHVERjM1XHVERjQwLVx1REY1NVx1REY2MC1cdURGNzJcdURGODAtXHVERjkxXXxcdUQ4MDNbXHVEQzAwLVx1REM0OFx1REM4MC1cdURDQjJcdURDQzAtXHVEQ0YyXHVERDAwLVx1REQyM1x1REU4MC1cdURFQTlcdURFQjBcdURFQjFcdURGMDAtXHVERjFDXHVERjI3XHVERjMwLVx1REY0NVx1REY3MC1cdURGODFcdURGQjAtXHVERkM0XHVERkUwLVx1REZGNl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDNzFcdURDNzJcdURDNzVcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1REQwMy1cdUREMjZcdURENDRcdURENDdcdURENTAtXHVERDcyXHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdUREREFcdURERENcdURFMDAtXHVERTExXHVERTEzLVx1REUyQlx1REU4MC1cdURFODZcdURFODhcdURFOEEtXHVERThEXHVERThGLVx1REU5RFx1REU5Ri1cdURFQThcdURFQjAtXHVERURFXHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzRFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM1Ri1cdURDNjFcdURDODAtXHVEQ0FGXHVEQ0M0XHVEQ0M1XHVEQ0M3XHVERDgwLVx1RERBRVx1REREOC1cdUREREJcdURFMDAtXHVERTJGXHVERTQ0XHVERTgwLVx1REVBQVx1REVCOFx1REYwMC1cdURGMUFcdURGNDAtXHVERjQ2XXxcdUQ4MDZbXHVEQzAwLVx1REMyQlx1RENBMC1cdURDREZcdURDRkYtXHVERDA2XHVERDA5XHVERDBDLVx1REQxM1x1REQxNVx1REQxNlx1REQxOC1cdUREMkZcdUREM0ZcdURENDFcdUREQTAtXHVEREE3XHVEREFBLVx1REREMFx1RERFMVx1RERFM1x1REUwMFx1REUwQi1cdURFMzJcdURFM0FcdURFNTBcdURFNUMtXHVERTg5XHVERTlEXHVERUIwLVx1REVGOF18XHVEODA3W1x1REMwMC1cdURDMDhcdURDMEEtXHVEQzJFXHVEQzQwXHVEQzcyLVx1REM4Rlx1REQwMC1cdUREMDZcdUREMDhcdUREMDlcdUREMEItXHVERDMwXHVERDQ2XHVERDYwLVx1REQ2NVx1REQ2N1x1REQ2OFx1REQ2QS1cdUREODlcdUREOThcdURFRTAtXHVERUYyXHVERkIwXXxcdUQ4MDhbXHVEQzAwLVx1REY5OV18XHVEODA5W1x1REM4MC1cdURENDNdfFx1RDgwQltcdURGOTAtXHVERkYwXXxbXHVEODBDXHVEODFDLVx1RDgyMFx1RDgyMlx1RDg0MC1cdUQ4NjhcdUQ4NkEtXHVEODZDXHVEODZGLVx1RDg3Mlx1RDg3NC1cdUQ4NzlcdUQ4ODAtXHVEODgzXVtcdURDMDAtXHVERkZGXXxcdUQ4MERbXHVEQzAwLVx1REMyRV18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REU3MC1cdURFQkVcdURFRDAtXHVERUVEXHVERjAwLVx1REYyRlx1REY0MC1cdURGNDNcdURGNjMtXHVERjc3XHVERjdELVx1REY4Rl18XHVEODFCW1x1REU0MC1cdURFN0ZcdURGMDAtXHVERjRBXHVERjUwXHVERjkzLVx1REY5Rlx1REZFMFx1REZFMVx1REZFM118XHVEODIxW1x1REMwMC1cdURGRjddfFx1RDgyM1tcdURDMDAtXHVEQ0Q1XHVERDAwLVx1REQwOF18XHVEODJCW1x1REZGMC1cdURGRjNcdURGRjUtXHVERkZCXHVERkZEXHVERkZFXXxcdUQ4MkNbXHVEQzAwLVx1REQyMlx1REQ1MC1cdURENTJcdURENjQtXHVERDY3XHVERDcwLVx1REVGQl18XHVEODJGW1x1REMwMC1cdURDNkFcdURDNzAtXHVEQzdDXHVEQzgwLVx1REM4OFx1REM5MC1cdURDOTldfFx1RDgzNVtcdURDMDAtXHVEQzU0XHVEQzU2LVx1REM5Q1x1REM5RVx1REM5Rlx1RENBMlx1RENBNVx1RENBNlx1RENBOS1cdURDQUNcdURDQUUtXHVEQ0I5XHVEQ0JCXHVEQ0JELVx1RENDM1x1RENDNS1cdUREMDVcdUREMDctXHVERDBBXHVERDBELVx1REQxNFx1REQxNi1cdUREMUNcdUREMUUtXHVERDM5XHVERDNCLVx1REQzRVx1REQ0MC1cdURENDRcdURENDZcdURENEEtXHVERDUwXHVERDUyLVx1REVBNVx1REVBOC1cdURFQzBcdURFQzItXHVERURBXHVERURDLVx1REVGQVx1REVGQy1cdURGMTRcdURGMTYtXHVERjM0XHVERjM2LVx1REY0RVx1REY1MC1cdURGNkVcdURGNzAtXHVERjg4XHVERjhBLVx1REZBOFx1REZBQS1cdURGQzJcdURGQzQtXHVERkNCXXxcdUQ4MzdbXHVERjAwLVx1REYxRV18XHVEODM4W1x1REQwMC1cdUREMkNcdUREMzctXHVERDNEXHVERDRFXHVERTkwLVx1REVBRFx1REVDMC1cdURFRUJdfFx1RDgzOVtcdURGRTAtXHVERkU2XHVERkU4LVx1REZFQlx1REZFRFx1REZFRVx1REZGMC1cdURGRkVdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVERDAwLVx1REQ0M1x1REQ0Ql18XHVEODNCW1x1REUwMC1cdURFMDNcdURFMDUtXHVERTFGXHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQtXHVERTRGXHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1REVBM1x1REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4NjlbXHVEQzAwLVx1REVERlx1REYwMC1cdURGRkZdfFx1RDg2RFtcdURDMDAtXHVERjM4XHVERjQwLVx1REZGRl18XHVEODZFW1x1REMwMC1cdURDMURcdURDMjAtXHVERkZGXXxcdUQ4NzNbXHVEQzAwLVx1REVBMVx1REVCMC1cdURGRkZdfFx1RDg3QVtcdURDMDAtXHVERkUwXXxcdUQ4N0VbXHVEQzAwLVx1REUxRF18XHVEODg0W1x1REMwMC1cdURGNEFdKVxTKi9nLF9fPWNsYXNze3RyYW5zZm9ybSh0KXtpZih0PT1udWxsKXJldHVybiBudWxsO2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBpTShfXyx0KTtyZXR1cm4gdC5yZXBsYWNlKHl3dCxlPT5lWzBdLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKSl9fTtfXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxfXyl9O19fLlx1MDI3NXBpcGU9am0oe25hbWU6InRpdGxlY2FzZSIsdHlwZTpfXyxwdXJlOiEwfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9fLFt7dHlwZTpaZixhcmdzOlt7bmFtZToidGl0bGVjYXNlIn1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIENfPWNsYXNze3RyYW5zZm9ybSh0KXtpZih0PT1udWxsKXJldHVybiBudWxsO2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBpTShDXyx0KTtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfX07Q18uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Q18pfTtDXy5cdTAyNzVwaXBlPWptKHtuYW1lOiJ1cHBlcmNhc2UiLHR5cGU6Q18scHVyZTohMH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhDXyxbe3R5cGU6WmYsYXJnczpbe25hbWU6InVwcGVyY2FzZSJ9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBRcz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmxvY2FsZT10fXRyYW5zZm9ybSh0LGU9Im1lZGl1bURhdGUiLG8saSl7aWYodD09bnVsbHx8dD09PSIifHx0IT09dClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIHR3dCh0LGUsaXx8dGhpcy5sb2NhbGUsbyl9Y2F0Y2goYSl7dGhyb3cgaU0oUXMsYS5tZXNzYWdlKX19fTtRcy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxRcykodihjciwxNikpfTtRcy5cdTAyNzVwaXBlPWptKHtuYW1lOiJkYXRlIix0eXBlOlFzLHB1cmU6ITB9KTtRcy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2NyXX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFFzLFt7dHlwZTpaZixhcmdzOlt7bmFtZToiZGF0ZSIscHVyZTohMH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbY3JdfV19XX0sbnVsbCl9KSgpO3ZhciB4d3Q9LyMvZyxSZz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dH10cmFuc2Zvcm0odCxlLG8pe2lmKHQ9PW51bGwpcmV0dXJuIiI7aWYodHlwZW9mIGUhPSJvYmplY3QifHxlPT09bnVsbCl0aHJvdyBpTShSZyxlKTtsZXQgaT1XZXQodCxPYmplY3Qua2V5cyhlKSx0aGlzLl9sb2NhbGl6YXRpb24sbyk7cmV0dXJuIGVbaV0ucmVwbGFjZSh4d3QsdC50b1N0cmluZygpKX19O1JnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFJnKSh2KGVNLDE2KSl9O1JnLlx1MDI3NXBpcGU9am0oe25hbWU6ImkxOG5QbHVyYWwiLHR5cGU6UmcscHVyZTohMH0pO1JnLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ZU19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUmcsW3t0eXBlOlpmLGFyZ3M6W3tuYW1lOiJpMThuUGx1cmFsIixwdXJlOiEwfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTplTX1dfSxudWxsKX0pKCk7dmFyIE1fPWNsYXNze3RyYW5zZm9ybSh0LGUpe2lmKHQ9PW51bGwpcmV0dXJuIiI7aWYodHlwZW9mIGUhPSJvYmplY3QifHx0eXBlb2YgdCE9InN0cmluZyIpdGhyb3cgaU0oTV8sZSk7cmV0dXJuIGUuaGFzT3duUHJvcGVydHkodCk/ZVt0XTplLmhhc093blByb3BlcnR5KCJvdGhlciIpP2Uub3RoZXI6IiJ9fTtNXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxNXyl9O01fLlx1MDI3NXBpcGU9am0oe25hbWU6ImkxOG5TZWxlY3QiLHR5cGU6TV8scHVyZTohMH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhNXyxbe3R5cGU6WmYsYXJnczpbe25hbWU6ImkxOG5TZWxlY3QiLHB1cmU6ITB9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciB6Yj1jbGFzc3t0cmFuc2Zvcm0odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQsbnVsbCwyKX19O3piLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHpiKX07emIuXHUwMjc1cGlwZT1qbSh7bmFtZToianNvbiIsdHlwZTp6YixwdXJlOiExfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHpiLFt7dHlwZTpaZixhcmdzOlt7bmFtZToianNvbiIscHVyZTohMX1dfV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gdnd0KG4sdCl7cmV0dXJue2tleTpuLHZhbHVlOnR9fXZhciBvTT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpZmZlcnM9dCx0aGlzLmtleVZhbHVlcz1bXSx0aGlzLmNvbXBhcmVGbj1BZXR9dHJhbnNmb3JtKHQsZT1BZXQpe2lmKCF0fHwhKHQgaW5zdGFuY2VvZiBNYXApJiZ0eXBlb2YgdCE9Im9iamVjdCIpcmV0dXJuIG51bGw7dGhpcy5kaWZmZXJ8fCh0aGlzLmRpZmZlcj10aGlzLmRpZmZlcnMuZmluZCh0KS5jcmVhdGUoKSk7bGV0IG89dGhpcy5kaWZmZXIuZGlmZih0KSxpPWUhPT10aGlzLmNvbXBhcmVGbjtyZXR1cm4gbyYmKHRoaXMua2V5VmFsdWVzPVtdLG8uZm9yRWFjaEl0ZW0oYT0+e3RoaXMua2V5VmFsdWVzLnB1c2godnd0KGEua2V5LGEuY3VycmVudFZhbHVlKSl9KSksKG98fGkpJiYodGhpcy5rZXlWYWx1ZXMuc29ydChlKSx0aGlzLmNvbXBhcmVGbj1lKSx0aGlzLmtleVZhbHVlc319O29NLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9NKSh2KFByLDE2KSl9O29NLlx1MDI3NXBpcGU9am0oe25hbWU6ImtleXZhbHVlIix0eXBlOm9NLHB1cmU6ITF9KTtvTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlByfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG9NLFt7dHlwZTpaZixhcmdzOlt7bmFtZToia2V5dmFsdWUiLHB1cmU6ITF9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlByfV19LG51bGwpfSkoKTtmdW5jdGlvbiBBZXQobix0KXtsZXQgZT1uLmtleSxvPXQua2V5O2lmKGU9PT1vKXJldHVybiAwO2lmKGU9PT12b2lkIDApcmV0dXJuIDE7aWYobz09PXZvaWQgMClyZXR1cm4tMTtpZihlPT09bnVsbClyZXR1cm4gMTtpZihvPT09bnVsbClyZXR1cm4tMTtpZih0eXBlb2YgZT09InN0cmluZyImJnR5cGVvZiBvPT0ic3RyaW5nIilyZXR1cm4gZTxvPy0xOjE7aWYodHlwZW9mIGU9PSJudW1iZXIiJiZ0eXBlb2Ygbz09Im51bWJlciIpcmV0dXJuIGUtbztpZih0eXBlb2YgZT09ImJvb2xlYW4iJiZ0eXBlb2Ygbz09ImJvb2xlYW4iKXJldHVybiBlPG8/LTE6MTtsZXQgaT1TdHJpbmcoZSksYT1TdHJpbmcobyk7cmV0dXJuIGk9PWE/MDppPGE/LTE6MX12YXIgWGE9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fbG9jYWxlPXR9dHJhbnNmb3JtKHQsZSxvKXtpZighZlYodCkpcmV0dXJuIG51bGw7bz1vfHx0aGlzLl9sb2NhbGU7dHJ5e2xldCBpPXBWKHQpO3JldHVybiBjVihpLG8sZSl9Y2F0Y2goaSl7dGhyb3cgaU0oWGEsaS5tZXNzYWdlKX19fTtYYS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxYYSkodihjciwxNikpfTtYYS5cdTAyNzVwaXBlPWptKHtuYW1lOiJudW1iZXIiLHR5cGU6WGEscHVyZTohMH0pO1hhLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbY3JdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWGEsW3t0eXBlOlpmLGFyZ3M6W3tuYW1lOiJudW1iZXIifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltjcl19XX1dfSxudWxsKX0pKCk7dmFyIEVnPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsZT10fXRyYW5zZm9ybSh0LGUsbyl7aWYoIWZWKHQpKXJldHVybiBudWxsO289b3x8dGhpcy5fbG9jYWxlO3RyeXtsZXQgaT1wVih0KTtyZXR1cm4gaHd0KGksbyxlKX1jYXRjaChpKXt0aHJvdyBpTShFZyxpLm1lc3NhZ2UpfX19O0VnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEVnKSh2KGNyLDE2KSl9O0VnLlx1MDI3NXBpcGU9am0oe25hbWU6InBlcmNlbnQiLHR5cGU6RWcscHVyZTohMH0pO0VnLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbY3JdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRWcsW3t0eXBlOlpmLGFyZ3M6W3tuYW1lOiJwZXJjZW50In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbY3JdfV19XX0sbnVsbCl9KSgpO3ZhciBrZz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGU9IlVTRCIpe3RoaXMuX2xvY2FsZT10LHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU9ZX10cmFuc2Zvcm0odCxlPXRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGUsbz0ic3ltYm9sIixpLGEpe2lmKCFmVih0KSlyZXR1cm4gbnVsbDthPWF8fHRoaXMuX2xvY2FsZSx0eXBlb2Ygbz09ImJvb2xlYW4iJiYoKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignV2FybmluZzogdGhlIGN1cnJlbmN5IHBpcGUgaGFzIGJlZW4gY2hhbmdlZCBpbiBBbmd1bGFyIHY1LiBUaGUgc3ltYm9sRGlzcGxheSBvcHRpb24gKHRoaXJkIHBhcmFtZXRlcikgaXMgbm93IGEgc3RyaW5nIGluc3RlYWQgb2YgYSBib29sZWFuLiBUaGUgYWNjZXB0ZWQgdmFsdWVzIGFyZSAiY29kZSIsICJzeW1ib2wiIG9yICJzeW1ib2wtbmFycm93Ii4nKSxvPW8/InN5bWJvbCI6ImNvZGUiKTtsZXQgcj1lfHx0aGlzLl9kZWZhdWx0Q3VycmVuY3lDb2RlO28hPT0iY29kZSImJihvPT09InN5bWJvbCJ8fG89PT0ic3ltYm9sLW5hcnJvdyI/cj1YMXQocixvPT09InN5bWJvbCI/IndpZGUiOiJuYXJyb3ciLGEpOnI9byk7dHJ5e2xldCBzPXBWKHQpO3JldHVybiB1d3QocyxhLHIsZSxpKX1jYXRjaChzKXt0aHJvdyBpTShrZyxzLm1lc3NhZ2UpfX19O2tnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGtnKSh2KGNyLDE2KSx2KFlSLDE2KSl9O2tnLlx1MDI3NXBpcGU9am0oe25hbWU6ImN1cnJlbmN5Iix0eXBlOmtnLHB1cmU6ITB9KTtrZy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2NyXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltZUl19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhrZyxbe3R5cGU6WmYsYXJnczpbe25hbWU6ImN1cnJlbmN5In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbY3JdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1lSXX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBmVihuKXtyZXR1cm4hKG49PW51bGx8fG49PT0iInx8biE9PW4pfWZ1bmN0aW9uIHBWKG4pe2lmKHR5cGVvZiBuPT0ic3RyaW5nIiYmIWlzTmFOKE51bWJlcihuKS1wYXJzZUZsb2F0KG4pKSlyZXR1cm4gTnVtYmVyKG4pO2lmKHR5cGVvZiBuIT0ibnVtYmVyIil0aHJvdyBuZXcgRXJyb3IoYCR7bn0gaXMgbm90IGEgbnVtYmVyYCk7cmV0dXJuIG59dmFyIEtmPWNsYXNze3RyYW5zZm9ybSh0LGUsbyl7aWYodD09bnVsbClyZXR1cm4gbnVsbDtpZighdGhpcy5zdXBwb3J0cyh0KSl0aHJvdyBpTShLZix0KTtyZXR1cm4gdC5zbGljZShlLG8pfXN1cHBvcnRzKHQpe3JldHVybiB0eXBlb2YgdD09InN0cmluZyJ8fEFycmF5LmlzQXJyYXkodCl9fTtLZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxLZil9O0tmLlx1MDI3NXBpcGU9am0oe25hbWU6InNsaWNlIix0eXBlOktmLHB1cmU6ITF9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoS2YsW3t0eXBlOlpmLGFyZ3M6W3tuYW1lOiJzbGljZSIscHVyZTohMX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIERldD1bb2UsQ18saF8semIsS2YsWGEsRWcsX18sa2csUXMsUmcsTV8sb01dO3ZhciBZPWNsYXNze307WS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxZKX07WS5cdTAyNzVtb2Q9cSh7dHlwZTpZfSk7WS5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlt7cHJvdmlkZTplTSx1c2VDbGFzczp0TX1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFksW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbVGV0LERldF0sZXhwb3J0czpbVGV0LERldF0scHJvdmlkZXJzOlt7cHJvdmlkZTplTSx1c2VDbGFzczp0TX1dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFkse2RlY2xhcmF0aW9uczpbam4sdV8sbW4sWHQsTGEsSHIsR28sdWksVmwscW0sbk0sb2UsQ18saF8semIsS2YsWGEsRWcsX18sa2csUXMsUmcsTV8sb01dLGV4cG9ydHM6W2puLHVfLG1uLFh0LExhLEhyLEdvLHVpLFZsLHFtLG5NLG9lLENfLGhfLHpiLEtmLFhhLEVnLF9fLGtnLFFzLFJnLE1fLG9NXX0pfSkoKTt2YXIgZFY9ImJyb3dzZXIiO2Z1bmN0aW9uIFpldChuKXtyZXR1cm4gbj09PWRWfXZhciB4bGU9bmV3IFlmKCIxMi4yLjE2Iik7dmFyIGNBPWNsYXNze307Y0EuXHUwMjc1cHJvdj1QdCh7dG9rZW46Y0EscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+bmV3IGFWKEkoX3QpLHdpbmRvdyl9KTt2YXIgYVY9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLmRvY3VtZW50PXQsdGhpcy53aW5kb3c9ZSx0aGlzLm9mZnNldD0oKT0+WzAsMF19c2V0T2Zmc2V0KHQpe0FycmF5LmlzQXJyYXkodCk/dGhpcy5vZmZzZXQ9KCk9PnQ6dGhpcy5vZmZzZXQ9dH1nZXRTY3JvbGxQb3NpdGlvbigpe3JldHVybiB0aGlzLnN1cHBvcnRzU2Nyb2xsaW5nKCk/W3RoaXMud2luZG93LnBhZ2VYT2Zmc2V0LHRoaXMud2luZG93LnBhZ2VZT2Zmc2V0XTpbMCwwXX1zY3JvbGxUb1Bvc2l0aW9uKHQpe3RoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKSYmdGhpcy53aW5kb3cuc2Nyb2xsVG8odFswXSx0WzFdKX1zY3JvbGxUb0FuY2hvcih0KXtpZighdGhpcy5zdXBwb3J0c1Njcm9sbGluZygpKXJldHVybjtsZXQgZT13d3QodGhpcy5kb2N1bWVudCx0KTtlJiYodGhpcy5zY3JvbGxUb0VsZW1lbnQoZSksdGhpcy5hdHRlbXB0Rm9jdXMoZSkpfXNldEhpc3RvcnlTY3JvbGxSZXN0b3JhdGlvbih0KXtpZih0aGlzLnN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpKXtsZXQgZT10aGlzLndpbmRvdy5oaXN0b3J5O2UmJmUuc2Nyb2xsUmVzdG9yYXRpb24mJihlLnNjcm9sbFJlc3RvcmF0aW9uPXQpfX1zY3JvbGxUb0VsZW1lbnQodCl7bGV0IGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPWUubGVmdCt0aGlzLndpbmRvdy5wYWdlWE9mZnNldCxpPWUudG9wK3RoaXMud2luZG93LnBhZ2VZT2Zmc2V0LGE9dGhpcy5vZmZzZXQoKTt0aGlzLndpbmRvdy5zY3JvbGxUbyhvLWFbMF0saS1hWzFdKX1hdHRlbXB0Rm9jdXModCl7cmV0dXJuIHQuZm9jdXMoKSx0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10fXN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpe3RyeXtpZighdGhpcy5zdXBwb3J0c1Njcm9sbGluZygpKXJldHVybiExO2xldCB0PUlldCh0aGlzLndpbmRvdy5oaXN0b3J5KXx8SWV0KE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLndpbmRvdy5oaXN0b3J5KSk7cmV0dXJuISF0JiYhISh0LndyaXRhYmxlfHx0LnNldCl9Y2F0Y2godCl7cmV0dXJuITF9fXN1cHBvcnRzU2Nyb2xsaW5nKCl7dHJ5e3JldHVybiEhdGhpcy53aW5kb3cmJiEhdGhpcy53aW5kb3cuc2Nyb2xsVG8mJiJwYWdlWE9mZnNldCJpbiB0aGlzLndpbmRvd31jYXRjaCh0KXtyZXR1cm4hMX19fTtmdW5jdGlvbiBJZXQobil7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobiwic2Nyb2xsUmVzdG9yYXRpb24iKX1mdW5jdGlvbiB3d3Qobix0KXtsZXQgZT1uLmdldEVsZW1lbnRCeUlkKHQpfHxuLmdldEVsZW1lbnRzQnlOYW1lKHQpWzBdO2lmKGUpcmV0dXJuIGU7aWYodHlwZW9mIG4uY3JlYXRlVHJlZVdhbGtlcj09ImZ1bmN0aW9uIiYmbi5ib2R5JiYobi5ib2R5LmNyZWF0ZVNoYWRvd1Jvb3R8fG4uYm9keS5hdHRhY2hTaGFkb3cpKXtsZXQgbz1uLmNyZWF0ZVRyZWVXYWxrZXIobi5ib2R5LE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UKSxpPW8uY3VycmVudE5vZGU7Zm9yKDtpOyl7bGV0IGE9aS5zaGFkb3dSb290O2lmKGEpe2xldCByPWEuZ2V0RWxlbWVudEJ5SWQodCl8fGEucXVlcnlTZWxlY3RvcihgW25hbWU9IiR7dH0iXWApO2lmKHIpcmV0dXJuIHJ9aT1vLm5leHROb2RlKCl9fXJldHVybiBudWxsfXZhciBuUD1jbGFzc3t9O3ZhciB1Vj1jbGFzcyBleHRlbmRzIGFBe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnN1cHBvcnRzRE9NRXZlbnRzPSEwfX07dmFyIFFSPWNsYXNzIGV4dGVuZHMgdVZ7c3RhdGljIG1ha2VDdXJyZW50KCl7emV0KG5ldyBRUil9b25BbmRDYW5jZWwodCxlLG8pe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxvLCExKSwoKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG8sITEpfX1kaXNwYXRjaEV2ZW50KHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUpfXJlbW92ZSh0KXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX1jcmVhdGVFbGVtZW50KHQsZSl7cmV0dXJuIGU9ZXx8dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKSxlLmNyZWF0ZUVsZW1lbnQodCl9Y3JlYXRlSHRtbERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiZmFrZVRpdGxlIil9Z2V0RGVmYXVsdERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50fWlzRWxlbWVudE5vZGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX1pc1NoYWRvd1Jvb3QodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50fWdldEdsb2JhbEV2ZW50VGFyZ2V0KHQsZSl7cmV0dXJuIGU9PT0id2luZG93Ij93aW5kb3c6ZT09PSJkb2N1bWVudCI/dDplPT09ImJvZHkiP3QuYm9keTpudWxsfWdldEJhc2VIcmVmKHQpe2xldCBlPVN3dCgpO3JldHVybiBlPT1udWxsP251bGw6Und0KGUpfXJlc2V0QmFzZUVsZW1lbnQoKXtYUj1udWxsfWdldFVzZXJBZ2VudCgpe3JldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudH1nZXRDb29raWUodCl7cmV0dXJuIG1BKGRvY3VtZW50LmNvb2tpZSx0KX19LFhSPW51bGw7ZnVuY3Rpb24gU3d0KCl7cmV0dXJuIFhSPVhSfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIiksWFI/WFIuZ2V0QXR0cmlidXRlKCJocmVmIik6bnVsbH12YXIgZkE7ZnVuY3Rpb24gUnd0KG4pe2ZBPWZBfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksZkEuc2V0QXR0cmlidXRlKCJocmVmIixuKTtsZXQgdD1mQS5wYXRobmFtZTtyZXR1cm4gdC5jaGFyQXQoMCk9PT0iLyI/dDpgLyR7dH1gfXZhciBpbnQ9bmV3IHl0KCJUUkFOU0lUSU9OX0lEIik7ZnVuY3Rpb24gRXd0KG4sdCxlKXtyZXR1cm4oKT0+e2UuZ2V0KGdsKS5kb25lUHJvbWlzZS50aGVuKCgpPT57bGV0IG89d2coKSxpPXQucXVlcnlTZWxlY3RvckFsbChgc3R5bGVbbmctdHJhbnNpdGlvbj0iJHtufSJdYCk7Zm9yKGxldCBhPTA7YTxpLmxlbmd0aDthKyspby5yZW1vdmUoaVthXSl9KX19dmFyIGt3dD1be3Byb3ZpZGU6X3YsdXNlRmFjdG9yeTpFd3QsZGVwczpbaW50LF90LCRlXSxtdWx0aTohMH1dO3ZhciBLUj1jbGFzc3tzdGF0aWMgaW5pdCgpe3BldChuZXcgS1IpfWFkZFRvV2luZG93KHQpe01pLmdldEFuZ3VsYXJUZXN0YWJpbGl0eT0obyxpPSEwKT0+e2xldCBhPXQuZmluZFRlc3RhYmlsaXR5SW5UcmVlKG8saSk7aWYoYT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHRlc3RhYmlsaXR5IGZvciBlbGVtZW50LiIpO3JldHVybiBhfSxNaS5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcz0oKT0+dC5nZXRBbGxUZXN0YWJpbGl0aWVzKCksTWkuZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cz0oKT0+dC5nZXRBbGxSb290RWxlbWVudHMoKTtsZXQgZT1vPT57bGV0IGk9TWkuZ2V0QWxsQW5ndWxhclRlc3RhYmlsaXRpZXMoKSxhPWkubGVuZ3RoLHI9ITEscz1mdW5jdGlvbihsKXtyPXJ8fGwsYS0tLGE9PTAmJm8ocil9O2kuZm9yRWFjaChmdW5jdGlvbihsKXtsLndoZW5TdGFibGUocyl9KX07TWkuZnJhbWV3b3JrU3RhYmlsaXplcnN8fChNaS5mcmFtZXdvcmtTdGFiaWxpemVycz1bXSksTWkuZnJhbWV3b3JrU3RhYmlsaXplcnMucHVzaChlKX1maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLG8pe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7bGV0IGk9dC5nZXRUZXN0YWJpbGl0eShlKTtyZXR1cm4gaSE9bnVsbD9pOm8/d2coKS5pc1NoYWRvd1Jvb3QoZSk/dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxlLmhvc3QsITApOnRoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsZS5wYXJlbnRFbGVtZW50LCEwKTpudWxsfX07dmFyIG9QPWNsYXNze2J1aWxkKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH19O29QLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9QKX07b1AuXHUwMjc1cHJvdj1QdCh7dG9rZW46b1AsZmFjdG9yeTpvUC5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob1AsW3t0eXBlOlN0fV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gWGV0KG4sdCl7aWYodHlwZW9mIENPTVBJTEVEPT0idW5kZWZpbmVkInx8IUNPTVBJTEVEKXtsZXQgZT1NaS5uZz1NaS5uZ3x8e307ZVtuXT10fX12YXIgTnd0PSgpPT4oe0FwcGxpY2F0aW9uUmVmOm5hLE5nWm9uZTpDdH0pLFR3dD1Od3QoKSxBd3Q9InByb2JlIixEd3Q9ImNvcmVUb2tlbnMiO2Z1bmN0aW9uIFFldChuKXtyZXR1cm4gTWV0KG4pfWZ1bmN0aW9uIEl3dChuKXtyZXR1cm4gWGV0KEF3dCxRZXQpLFhldChEd3QsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LFR3dCksend0KG58fFtdKSkpLCgpPT5RZXR9ZnVuY3Rpb24gend0KG4pe3JldHVybiBuLnJlZHVjZSgodCxlKT0+KHRbZS5uYW1lXT1lLnRva2VuLHQpLHt9KX12YXIgSHd0PVtdLFNsZT1be3Byb3ZpZGU6X3YsdXNlRmFjdG9yeTpJd3QsZGVwczpbW3lULG5ldyBIXV0sbXVsdGk6ITB9XSxGd3Q9SHd0O3ZhciBNdj1uZXcgeXQoIkV2ZW50TWFuYWdlclBsdWdpbnMiKSxabT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3pvbmU9ZSx0aGlzLl9ldmVudE5hbWVUb1BsdWdpbj1uZXcgTWFwLHQuZm9yRWFjaChvPT5vLm1hbmFnZXI9dGhpcyksdGhpcy5fcGx1Z2lucz10LnNsaWNlKCkucmV2ZXJzZSgpfWFkZEV2ZW50TGlzdGVuZXIodCxlLG8pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEV2ZW50TGlzdGVuZXIodCxlLG8pfWFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLG8pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEdsb2JhbEV2ZW50TGlzdGVuZXIodCxlLG8pfWdldFpvbmUoKXtyZXR1cm4gdGhpcy5fem9uZX1fZmluZFBsdWdpbkZvcih0KXtsZXQgZT10aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5nZXQodCk7aWYoZSlyZXR1cm4gZTtsZXQgbz10aGlzLl9wbHVnaW5zO2ZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKXtsZXQgYT1vW2ldO2lmKGEuc3VwcG9ydHModCkpcmV0dXJuIHRoaXMuX2V2ZW50TmFtZVRvUGx1Z2luLnNldCh0LGEpLGF9dGhyb3cgbmV3IEVycm9yKGBObyBldmVudCBtYW5hZ2VyIHBsdWdpbiBmb3VuZCBmb3IgZXZlbnQgJHt0fWApfX07Wm0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Wm0pKEkoTXYpLEkoQ3QpKX07Wm0uXHUwMjc1cHJvdj1QdCh7dG9rZW46Wm0sZmFjdG9yeTpabS5cdTAyNzVmYWN9KTtabS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbTXZdfV19LHt0eXBlOkN0fV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFptLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbTXZdfV19LHt0eXBlOkN0fV19LG51bGwpfSkoKTt2YXIgSlI9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXR9YWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LGUsbyl7bGV0IGk9d2coKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsdCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgJHtpfSBmb3IgZXZlbnQgJHtlfWApO3JldHVybiB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoaSxlLG8pfX07dmFyIEhiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fc3R5bGVzU2V0PW5ldyBTZXR9YWRkU3R5bGVzKHQpe2xldCBlPW5ldyBTZXQ7dC5mb3JFYWNoKG89Pnt0aGlzLl9zdHlsZXNTZXQuaGFzKG8pfHwodGhpcy5fc3R5bGVzU2V0LmFkZChvKSxlLmFkZChvKSl9KSx0aGlzLm9uU3R5bGVzQWRkZWQoZSl9b25TdHlsZXNBZGRlZCh0KXt9Z2V0QWxsU3R5bGVzKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5fc3R5bGVzU2V0KX19O0hiLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEhiKX07SGIuXHUwMjc1cHJvdj1QdCh7dG9rZW46SGIsZmFjdG9yeTpIYi5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSGIsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0sbnVsbCl9KSgpO3ZhciBYYz1jbGFzcyBleHRlbmRzIEhie2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZG9jPXQsdGhpcy5faG9zdE5vZGVzPW5ldyBNYXAsdGhpcy5faG9zdE5vZGVzLnNldCh0LmhlYWQsW10pfV9hZGRTdHlsZXNUb0hvc3QodCxlLG8pe3QuZm9yRWFjaChpPT57bGV0IGE9dGhpcy5fZG9jLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7YS50ZXh0Q29udGVudD1pLG8ucHVzaChlLmFwcGVuZENoaWxkKGEpKX0pfWFkZEhvc3QodCl7bGV0IGU9W107dGhpcy5fYWRkU3R5bGVzVG9Ib3N0KHRoaXMuX3N0eWxlc1NldCx0LGUpLHRoaXMuX2hvc3ROb2Rlcy5zZXQodCxlKX1yZW1vdmVIb3N0KHQpe2xldCBlPXRoaXMuX2hvc3ROb2Rlcy5nZXQodCk7ZSYmZS5mb3JFYWNoKEtldCksdGhpcy5faG9zdE5vZGVzLmRlbGV0ZSh0KX1vblN0eWxlc0FkZGVkKHQpe3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKChlLG8pPT57dGhpcy5fYWRkU3R5bGVzVG9Ib3N0KHQsbyxlKX0pfW5nT25EZXN0cm95KCl7dGhpcy5faG9zdE5vZGVzLmZvckVhY2godD0+dC5mb3JFYWNoKEtldCkpfX07WGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WGMpKEkoX3QpKX07WGMuXHUwMjc1cHJvdj1QdCh7dG9rZW46WGMsZmFjdG9yeTpYYy5cdTAyNzVmYWN9KTtYYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFhjLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBLZXQobil7d2coKS5yZW1vdmUobil9dmFyIGdWPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifSxDVj0vJUNPTVAlL2csSmV0PXR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHwhIW5nRGV2TW9kZSxhbnQ9IiVDT01QJSIsTHd0PWBfbmdob3N0LSR7YW50fWAsQnd0PWBfbmdjb250ZW50LSR7YW50fWA7ZnVuY3Rpb24gVnd0KG4pe3JldHVybiBCd3QucmVwbGFjZShDVixuKX1mdW5jdGlvbiBqd3Qobil7cmV0dXJuIEx3dC5yZXBsYWNlKENWLG4pfWZ1bmN0aW9uIHBBKG4sdCxlKXtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7bGV0IGk9dFtvXTtBcnJheS5pc0FycmF5KGkpP3BBKG4saSxlKTooaT1pLnJlcGxhY2UoQ1YsbiksZS5wdXNoKGkpKX1yZXR1cm4gZX1mdW5jdGlvbiAkZXQobil7cmV0dXJuIHQ9PntpZih0PT09Il9fbmdVbndyYXBfXyIpcmV0dXJuIG47bih0KT09PSExJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQucmV0dXJuVmFsdWU9ITEpfX12YXIgdG50PSExLEpmPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmV2ZW50TWFuYWdlcj10LHRoaXMuc2hhcmVkU3R5bGVzSG9zdD1lLHRoaXMuYXBwSWQ9byx0aGlzLnJlbmRlcmVyQnlDb21wSWQ9bmV3IE1hcCx0aGlzLmRlZmF1bHRSZW5kZXJlcj1uZXcgJFIodCl9Y3JlYXRlUmVuZGVyZXIodCxlKXtpZighdHx8IWUpcmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyO3N3aXRjaChlLmVuY2Fwc3VsYXRpb24pe2Nhc2UgSmUuRW11bGF0ZWQ6e2xldCBvPXRoaXMucmVuZGVyZXJCeUNvbXBJZC5nZXQoZS5pZCk7cmV0dXJuIG98fChvPW5ldyBoVih0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsZSx0aGlzLmFwcElkKSx0aGlzLnJlbmRlcmVyQnlDb21wSWQuc2V0KGUuaWQsbykpLG8uYXBwbHlUb0hvc3QodCksb31jYXNlIDE6Y2FzZSBKZS5TaGFkb3dEb206cmV0dXJuKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiYhdG50JiZlLmVuY2Fwc3VsYXRpb249PT0xJiYodG50PSEwLGNvbnNvbGUud2FybigiVmlld0VuY2Fwc3VsYXRpb24uTmF0aXZlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIEZhbGxpbmcgYmFjayB0byBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb20uIFRoZSBmYWxsYmFjayB3aWxsIGJlIHJlbW92ZWQgaW4gdjEyLiIpKSxuZXcgX1YodGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LHQsZSk7ZGVmYXVsdDp7aWYoIXRoaXMucmVuZGVyZXJCeUNvbXBJZC5oYXMoZS5pZCkpe2xldCBvPXBBKGUuaWQsZS5zdHlsZXMsW10pO3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5hZGRTdHlsZXMobyksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLHRoaXMuZGVmYXVsdFJlbmRlcmVyKX1yZXR1cm4gdGhpcy5kZWZhdWx0UmVuZGVyZXJ9fX1iZWdpbigpe31lbmQoKXt9fTtKZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxKZikoSShabSksSShYYyksSShUYikpfTtKZi5cdTAyNzVwcm92PVB0KHt0b2tlbjpKZixmYWN0b3J5OkpmLlx1MDI3NWZhY30pO0pmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Wm19LHt0eXBlOlhjfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltUYl19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhKZixbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpabX0se3R5cGU6WGN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1RiXX1dfV19LG51bGwpfSkoKTt2YXIgJFI9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKX1kZXN0cm95KCl7fWNyZWF0ZUVsZW1lbnQodCxlKXtyZXR1cm4gZT9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZ1ZbZV18fGUsdCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KX1jcmVhdGVDb21tZW50KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfWNyZWF0ZVRleHQodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfWFwcGVuZENoaWxkKHQsZSl7dC5hcHBlbmRDaGlsZChlKX1pbnNlcnRCZWZvcmUodCxlLG8pe3QmJnQuaW5zZXJ0QmVmb3JlKGUsbyl9cmVtb3ZlQ2hpbGQodCxlKXt0JiZ0LnJlbW92ZUNoaWxkKGUpfXNlbGVjdFJvb3RFbGVtZW50KHQsZSl7bGV0IG89dHlwZW9mIHQ9PSJzdHJpbmciP2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dDtpZighbyl0aHJvdyBuZXcgRXJyb3IoYFRoZSBzZWxlY3RvciAiJHt0fSIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHNgKTtyZXR1cm4gZXx8KG8udGV4dENvbnRlbnQ9IiIpLG99cGFyZW50Tm9kZSh0KXtyZXR1cm4gdC5wYXJlbnROb2RlfW5leHRTaWJsaW5nKHQpe3JldHVybiB0Lm5leHRTaWJsaW5nfXNldEF0dHJpYnV0ZSh0LGUsbyxpKXtpZihpKXtlPWkrIjoiK2U7bGV0IGE9Z1ZbaV07YT90LnNldEF0dHJpYnV0ZU5TKGEsZSxvKTp0LnNldEF0dHJpYnV0ZShlLG8pfWVsc2UgdC5zZXRBdHRyaWJ1dGUoZSxvKX1yZW1vdmVBdHRyaWJ1dGUodCxlLG8pe2lmKG8pe2xldCBpPWdWW29dO2k/dC5yZW1vdmVBdHRyaWJ1dGVOUyhpLGUpOnQucmVtb3ZlQXR0cmlidXRlKGAke299OiR7ZX1gKX1lbHNlIHQucmVtb3ZlQXR0cmlidXRlKGUpfWFkZENsYXNzKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfXJlbW92ZUNsYXNzKHQsZSl7dC5jbGFzc0xpc3QucmVtb3ZlKGUpfXNldFN0eWxlKHQsZSxvLGkpe2kmKEdPLkRhc2hDYXNlfEdPLkltcG9ydGFudCk/dC5zdHlsZS5zZXRQcm9wZXJ0eShlLG8saSZHTy5JbXBvcnRhbnQ/ImltcG9ydGFudCI6IiIpOnQuc3R5bGVbZV09b31yZW1vdmVTdHlsZSh0LGUsbyl7byZHTy5EYXNoQ2FzZT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpOnQuc3R5bGVbZV09IiJ9c2V0UHJvcGVydHkodCxlLG8pe0pldCYmZW50KGUsInByb3BlcnR5IiksdFtlXT1vfXNldFZhbHVlKHQsZSl7dC5ub2RlVmFsdWU9ZX1saXN0ZW4odCxlLG8pe3JldHVybiBKZXQmJmVudChlLCJsaXN0ZW5lciIpLHR5cGVvZiB0PT0ic3RyaW5nIj90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSwkZXQobykpOnRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIodCxlLCRldChvKSl9fSxVd3Q9KCk9PiJAIi5jaGFyQ29kZUF0KDApLFl3dD1Vd3QoKTtmdW5jdGlvbiBlbnQobix0KXtpZihuLmNoYXJDb2RlQXQoMCk9PT1Zd3QpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHN5bnRoZXRpYyAke3R9ICR7bn0gZm91bmQuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdDoKICAtIEVpdGhlciBcYEJyb3dzZXJBbmltYXRpb25zTW9kdWxlXGAgb3IgXGBOb29wQW5pbWF0aW9uc01vZHVsZVxgIGFyZSBpbXBvcnRlZCBpbiB5b3VyIGFwcGxpY2F0aW9uLgogIC0gVGhlcmUgaXMgY29ycmVzcG9uZGluZyBjb25maWd1cmF0aW9uIGZvciB0aGUgYW5pbWF0aW9uIG5hbWVkIFxgJHtufVxgIGRlZmluZWQgaW4gdGhlIFxgYW5pbWF0aW9uc1xgIGZpZWxkIG9mIHRoZSBcYEBDb21wb25lbnRcYCBkZWNvcmF0b3IgKHNlZSBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvcmUvQ29tcG9uZW50I2FuaW1hdGlvbnMpLmApfXZhciBoVj1jbGFzcyBleHRlbmRzICRSe2NvbnN0cnVjdG9yKHQsZSxvLGkpe3N1cGVyKHQpLHRoaXMuY29tcG9uZW50PW87bGV0IGE9cEEoaSsiLSIrby5pZCxvLnN0eWxlcyxbXSk7ZS5hZGRTdHlsZXMoYSksdGhpcy5jb250ZW50QXR0cj1Wd3QoaSsiLSIrby5pZCksdGhpcy5ob3N0QXR0cj1qd3QoaSsiLSIrby5pZCl9YXBwbHlUb0hvc3QodCl7c3VwZXIuc2V0QXR0cmlidXRlKHQsdGhpcy5ob3N0QXR0ciwiIil9Y3JlYXRlRWxlbWVudCh0LGUpe2xldCBvPXN1cGVyLmNyZWF0ZUVsZW1lbnQodCxlKTtyZXR1cm4gc3VwZXIuc2V0QXR0cmlidXRlKG8sdGhpcy5jb250ZW50QXR0ciwiIiksb319LF9WPWNsYXNzIGV4dGVuZHMgJFJ7Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIodCksdGhpcy5zaGFyZWRTdHlsZXNIb3N0PWUsdGhpcy5ob3N0RWw9byx0aGlzLnNoYWRvd1Jvb3Q9by5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSksdGhpcy5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QodGhpcy5zaGFkb3dSb290KTtsZXQgYT1wQShpLmlkLGkuc3R5bGVzLFtdKTtmb3IobGV0IHI9MDtyPGEubGVuZ3RoO3IrKyl7bGV0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtzLnRleHRDb250ZW50PWFbcl0sdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKHMpfX1ub2RlT3JTaGFkb3dSb290KHQpe3JldHVybiB0PT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OnR9ZGVzdHJveSgpe3RoaXMuc2hhcmVkU3R5bGVzSG9zdC5yZW1vdmVIb3N0KHRoaXMuc2hhZG93Um9vdCl9YXBwZW5kQ2hpbGQodCxlKXtyZXR1cm4gc3VwZXIuYXBwZW5kQ2hpbGQodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpLGUpfWluc2VydEJlZm9yZSh0LGUsbyl7cmV0dXJuIHN1cGVyLmluc2VydEJlZm9yZSh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCksZSxvKX1yZW1vdmVDaGlsZCh0LGUpe3JldHVybiBzdXBlci5yZW1vdmVDaGlsZCh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCksZSl9cGFyZW50Tm9kZSh0KXtyZXR1cm4gdGhpcy5ub2RlT3JTaGFkb3dSb290KHN1cGVyLnBhcmVudE5vZGUodGhpcy5ub2RlT3JTaGFkb3dSb290KHQpKSl9fTt2YXIgRmI9Y2xhc3MgZXh0ZW5kcyBKUntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdXBwb3J0cyh0KXtyZXR1cm4hMH1hZGRFdmVudExpc3RlbmVyKHQsZSxvKXtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKGUsbywhMSksKCk9PnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsbyl9cmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGUsbyl7cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG8pfX07RmIuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RmIpKEkoX3QpKX07RmIuXHUwMjc1cHJvdj1QdCh7dG9rZW46RmIsZmFjdG9yeTpGYi5cdTAyNzVmYWN9KTtGYi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEZiLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTt2YXIgR3d0PXtwYW46ITAscGFuc3RhcnQ6ITAscGFubW92ZTohMCxwYW5lbmQ6ITAscGFuY2FuY2VsOiEwLHBhbmxlZnQ6ITAscGFucmlnaHQ6ITAscGFudXA6ITAscGFuZG93bjohMCxwaW5jaDohMCxwaW5jaHN0YXJ0OiEwLHBpbmNobW92ZTohMCxwaW5jaGVuZDohMCxwaW5jaGNhbmNlbDohMCxwaW5jaGluOiEwLHBpbmNob3V0OiEwLHByZXNzOiEwLHByZXNzdXA6ITAscm90YXRlOiEwLHJvdGF0ZXN0YXJ0OiEwLHJvdGF0ZW1vdmU6ITAscm90YXRlZW5kOiEwLHJvdGF0ZWNhbmNlbDohMCxzd2lwZTohMCxzd2lwZWxlZnQ6ITAsc3dpcGVyaWdodDohMCxzd2lwZXVwOiEwLHN3aXBlZG93bjohMCx0YXA6ITAsZG91YmxldGFwOiEwfSx0RT1uZXcgeXQoIkhhbW1lckdlc3R1cmVDb25maWciKSxkQT1uZXcgeXQoIkhhbW1lckxvYWRlciIpLGFNPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudHM9W10sdGhpcy5vdmVycmlkZXM9e319YnVpbGRIYW1tZXIodCl7bGV0IGU9bmV3IEhhbW1lcih0LHRoaXMub3B0aW9ucyk7ZS5nZXQoInBpbmNoIikuc2V0KHtlbmFibGU6ITB9KSxlLmdldCgicm90YXRlIikuc2V0KHtlbmFibGU6ITB9KTtmb3IobGV0IG8gaW4gdGhpcy5vdmVycmlkZXMpZS5nZXQobykuc2V0KHRoaXMub3ZlcnJpZGVzW29dKTtyZXR1cm4gZX19O2FNLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGFNKX07YU0uXHUwMjc1cHJvdj1QdCh7dG9rZW46YU0sZmFjdG9yeTphTS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYU0sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0sbnVsbCl9KSgpO3ZhciBMYj1jbGFzcyBleHRlbmRzIEpSe2NvbnN0cnVjdG9yKHQsZSxvLGkpe3N1cGVyKHQpLHRoaXMuX2NvbmZpZz1lLHRoaXMuY29uc29sZT1vLHRoaXMubG9hZGVyPWksdGhpcy5fbG9hZGVyUHJvbWlzZT1udWxsfXN1cHBvcnRzKHQpe3JldHVybiFHd3QuaGFzT3duUHJvcGVydHkodC50b0xvd2VyQ2FzZSgpKSYmIXRoaXMuaXNDdXN0b21FdmVudCh0KT8hMTohd2luZG93LkhhbW1lciYmIXRoaXMubG9hZGVyPygodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJnRoaXMuY29uc29sZS53YXJuKGBUaGUgIiR7dH0iIGV2ZW50IGNhbm5vdCBiZSBib3VuZCBiZWNhdXNlIEhhbW1lci5KUyBpcyBub3QgbG9hZGVkIGFuZCBubyBjdXN0b20gbG9hZGVyIGhhcyBiZWVuIHNwZWNpZmllZC5gKSwhMSk6ITB9YWRkRXZlbnRMaXN0ZW5lcih0LGUsbyl7bGV0IGk9dGhpcy5tYW5hZ2VyLmdldFpvbmUoKTtpZihlPWUudG9Mb3dlckNhc2UoKSwhd2luZG93LkhhbW1lciYmdGhpcy5sb2FkZXIpe3RoaXMuX2xvYWRlclByb21pc2U9dGhpcy5fbG9hZGVyUHJvbWlzZXx8dGhpcy5sb2FkZXIoKTtsZXQgYT0hMSxyPSgpPT57YT0hMH07cmV0dXJuIHRoaXMuX2xvYWRlclByb21pc2UudGhlbigoKT0+e2lmKCF3aW5kb3cuSGFtbWVyKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJnRoaXMuY29uc29sZS53YXJuKCJUaGUgY3VzdG9tIEhBTU1FUl9MT0FERVIgY29tcGxldGVkLCBidXQgSGFtbWVyLkpTIGlzIG5vdCBwcmVzZW50LiIpLHI9KCk9Pnt9O3JldHVybn1hfHwocj10aGlzLmFkZEV2ZW50TGlzdGVuZXIodCxlLG8pKX0pLmNhdGNoKCgpPT57KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZ0aGlzLmNvbnNvbGUud2FybihgVGhlICIke2V9IiBldmVudCBjYW5ub3QgYmUgYm91bmQgYmVjYXVzZSB0aGUgY3VzdG9tIEhhbW1lci5KUyBsb2FkZXIgZmFpbGVkLmApLHI9KCk9Pnt9fSksKCk9PntyKCl9fXJldHVybiBpLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57bGV0IGE9dGhpcy5fY29uZmlnLmJ1aWxkSGFtbWVyKHQpLHI9ZnVuY3Rpb24ocyl7aS5ydW5HdWFyZGVkKGZ1bmN0aW9uKCl7byhzKX0pfTtyZXR1cm4gYS5vbihlLHIpLCgpPT57YS5vZmYoZSxyKSx0eXBlb2YgYS5kZXN0cm95PT0iZnVuY3Rpb24iJiZhLmRlc3Ryb3koKX19KX1pc0N1c3RvbUV2ZW50KHQpe3JldHVybiB0aGlzLl9jb25maWcuZXZlbnRzLmluZGV4T2YodCk+LTF9fTtMYi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxMYikoSShfdCksSSh0RSksSShVYyksSShkQSw4KSl9O0xiLlx1MDI3NXByb3Y9UHQoe3Rva2VuOkxiLGZhY3Rvcnk6TGIuXHUwMjc1ZmFjfSk7TGIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6YU0sZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOlt0RV19XX0se3R5cGU6VWN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W2RBXX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKExiLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTphTSxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3RFXX1dfSx7dHlwZTpVY30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbZEFdfV19XX0sbnVsbCl9KSgpO3ZhciBXd3Q9W10scm50PVt7cHJvdmlkZTpNdix1c2VDbGFzczpMYixtdWx0aTohMCxkZXBzOltfdCx0RSxVYyxbbmV3IEgsZEFdXX0se3Byb3ZpZGU6dEUsdXNlQ2xhc3M6YU0sZGVwczpbXX1dLHF3dD1Xd3QsU3k9Y2xhc3N7fTtTeS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxTeSl9O1N5Llx1MDI3NW1vZD1xKHt0eXBlOlN5fSk7U3kuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpybnR9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU3ksW3t0eXBlOlosYXJnczpbe3Byb3ZpZGVyczpybnR9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBubnQ9WyJhbHQiLCJjb250cm9sIiwibWV0YSIsInNoaWZ0Il0sWnd0PTMsWHd0PXsiXGIiOiJCYWNrc3BhY2UiLCIJIjoiVGFiIiwiXHg3RiI6IkRlbGV0ZSIsIlx4MUIiOiJFc2NhcGUiLERlbDoiRGVsZXRlIixFc2M6IkVzY2FwZSIsTGVmdDoiQXJyb3dMZWZ0IixSaWdodDoiQXJyb3dSaWdodCIsVXA6IkFycm93VXAiLERvd246IkFycm93RG93biIsTWVudToiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsV2luOiJPUyJ9LG9udD17QToiMSIsQjoiMiIsQzoiMyIsRDoiNCIsRToiNSIsRjoiNiIsRzoiNyIsSDoiOCIsSToiOSIsSjoiKiIsSzoiKyIsTToiLSIsTjoiLiIsTzoiLyIsImAiOiIwIiwiXHg5MCI6Ik51bUxvY2sifSxRd3Q9bj0+bi5hbHRLZXksS3d0PW49Pm4uY3RybEtleSxKd3Q9bj0+bi5tZXRhS2V5LCR3dD1uPT5uLnNoaWZ0S2V5LHQzdD17YWx0OlF3dCxjb250cm9sOkt3dCxtZXRhOkp3dCxzaGlmdDokd3R9LFpjPWNsYXNzIGV4dGVuZHMgSlJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9c3VwcG9ydHModCl7cmV0dXJuIFpjLnBhcnNlRXZlbnROYW1lKHQpIT1udWxsfWFkZEV2ZW50TGlzdGVuZXIodCxlLG8pe2xldCBpPVpjLnBhcnNlRXZlbnROYW1lKGUpLGE9WmMuZXZlbnRDYWxsYmFjayhpLmZ1bGxLZXksbyx0aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpKTtyZXR1cm4gdGhpcy5tYW5hZ2VyLmdldFpvbmUoKS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+d2coKS5vbkFuZENhbmNlbCh0LGkuZG9tRXZlbnROYW1lLGEpKX1zdGF0aWMgcGFyc2VFdmVudE5hbWUodCl7bGV0IGU9dC50b0xvd2VyQ2FzZSgpLnNwbGl0KCIuIiksbz1lLnNoaWZ0KCk7aWYoZS5sZW5ndGg9PT0wfHwhKG89PT0ia2V5ZG93biJ8fG89PT0ia2V5dXAiKSlyZXR1cm4gbnVsbDtsZXQgaT1aYy5fbm9ybWFsaXplS2V5KGUucG9wKCkpLGE9IiI7aWYobm50LmZvckVhY2gocz0+e2xldCBsPWUuaW5kZXhPZihzKTtsPi0xJiYoZS5zcGxpY2UobCwxKSxhKz1zKyIuIil9KSxhKz1pLGUubGVuZ3RoIT0wfHxpLmxlbmd0aD09PTApcmV0dXJuIG51bGw7bGV0IHI9e307cmV0dXJuIHIuZG9tRXZlbnROYW1lPW8sci5mdWxsS2V5PWEscn1zdGF0aWMgZ2V0RXZlbnRGdWxsS2V5KHQpe2xldCBlPSIiLG89ZTN0KHQpO3JldHVybiBvPW8udG9Mb3dlckNhc2UoKSxvPT09IiAiP289InNwYWNlIjpvPT09Ii4iJiYobz0iZG90Iiksbm50LmZvckVhY2goaT0+e2lmKGkhPW8pe2xldCBhPXQzdFtpXTthKHQpJiYoZSs9aSsiLiIpfX0pLGUrPW8sZX1zdGF0aWMgZXZlbnRDYWxsYmFjayh0LGUsbyl7cmV0dXJuIGk9PntaYy5nZXRFdmVudEZ1bGxLZXkoaSk9PT10JiZvLnJ1bkd1YXJkZWQoKCk9PmUoaSkpfX1zdGF0aWMgX25vcm1hbGl6ZUtleSh0KXtzd2l0Y2godCl7Y2FzZSJlc2MiOnJldHVybiJlc2NhcGUiO2RlZmF1bHQ6cmV0dXJuIHR9fX07WmMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WmMpKEkoX3QpKX07WmMuXHUwMjc1cHJvdj1QdCh7dG9rZW46WmMsZmFjdG9yeTpaYy5cdTAyNzVmYWN9KTtaYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFpjLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBlM3Qobil7bGV0IHQ9bi5rZXk7aWYodD09bnVsbCl7aWYodD1uLmtleUlkZW50aWZpZXIsdD09bnVsbClyZXR1cm4iVW5pZGVudGlmaWVkIjt0LnN0YXJ0c1dpdGgoIlUrIikmJih0PVN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKSxuLmxvY2F0aW9uPT09Wnd0JiZvbnQuaGFzT3duUHJvcGVydHkodCkmJih0PW9udFt0XSkpfXJldHVybiBYd3RbdF18fHR9dmFyIEtzPWNsYXNze307S3MuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8S3MpfTtLcy5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIEkock0pfSx0b2tlbjpLcyxwcm92aWRlZEluOiJyb290In0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhLcyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUV4aXN0aW5nOnRvKCgpPT5yTSl9XX1dLG51bGwsbnVsbCl9KSgpO2Z1bmN0aW9uIHNudChuKXtyZXR1cm4gbmV3IHJNKG4uZ2V0KF90KSl9dmFyIHJNPWNsYXNzIGV4dGVuZHMgS3N7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kb2M9dH1zYW5pdGl6ZSh0LGUpe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7c3dpdGNoKHQpe2Nhc2UgQXMuTk9ORTpyZXR1cm4gZTtjYXNlIEFzLkhUTUw6cmV0dXJuIFFDKGUsIkhUTUwiKT9HZihlKTpnQih0aGlzLl9kb2MsU3RyaW5nKGUpKS50b1N0cmluZygpO2Nhc2UgQXMuU1RZTEU6cmV0dXJuIFFDKGUsIlN0eWxlIik/R2YoZSk6ZTtjYXNlIEFzLlNDUklQVDppZihRQyhlLCJTY3JpcHQiKSlyZXR1cm4gR2YoZSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iik7Y2FzZSBBcy5VUkw6bGV0IG89ZkIoZSk7cmV0dXJuIFFDKGUsIlVSTCIpP0dmKGUpOkh3KFN0cmluZyhlKSk7Y2FzZSBBcy5SRVNPVVJDRV9VUkw6aWYoUUMoZSwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gR2YoZSk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBTZWN1cml0eUNvbnRleHQgJHt0fSAoc2VlIGh0dHBzOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9fWJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHQpe3JldHVybiBmSih0KX1ieXBhc3NTZWN1cml0eVRydXN0U3R5bGUodCl7cmV0dXJuIHBKKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQodCl7cmV0dXJuIGRKKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwodCl7cmV0dXJuIGdKKHQpfWJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh0KXtyZXR1cm4gdUoodCl9fTtyTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxyTSkoSShfdCkpfTtyTS5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIHNudChJKEpPKSl9LHRva2VuOnJNLHByb3ZpZGVkSW46InJvb3QifSk7ck0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhyTSxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QiLHVzZUZhY3Rvcnk6c250LGRlcHM6WyRlXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIG4zdCgpe1FSLm1ha2VDdXJyZW50KCksS1IuaW5pdCgpfWZ1bmN0aW9uIG8zdCgpe3JldHVybiBuZXcgeWF9ZnVuY3Rpb24gaTN0KCl7cmV0dXJuIEZLKGRvY3VtZW50KSxkb2N1bWVudH12YXIgYTN0PWRWLHIzdD1be3Byb3ZpZGU6WGYsdXNlVmFsdWU6YTN0fSx7cHJvdmlkZTpZQix1c2VWYWx1ZTpuM3QsbXVsdGk6ITB9LHtwcm92aWRlOl90LHVzZUZhY3Rvcnk6aTN0LGRlcHM6W119XTt2YXIgczN0PVtdLGwzdD1zM3QsTVY9cUIoYmV0LCJicm93c2VyIixyM3QpLGxudD1bbDN0LHtwcm92aWRlOkhULHVzZVZhbHVlOiJyb290In0se3Byb3ZpZGU6eWEsdXNlRmFjdG9yeTpvM3QsZGVwczpbXX0se3Byb3ZpZGU6TXYsdXNlQ2xhc3M6RmIsbXVsdGk6ITAsZGVwczpbX3QsQ3QsWGZdfSx7cHJvdmlkZTpNdix1c2VDbGFzczpaYyxtdWx0aTohMCxkZXBzOltfdF19LHF3dCx7cHJvdmlkZTpKZix1c2VDbGFzczpKZixkZXBzOltabSxYYyxUYl19LHtwcm92aWRlOlVmLHVzZUV4aXN0aW5nOkpmfSx7cHJvdmlkZTpIYix1c2VFeGlzdGluZzpYY30se3Byb3ZpZGU6WGMsdXNlQ2xhc3M6WGMsZGVwczpbX3RdfSx7cHJvdmlkZTpNZyx1c2VDbGFzczpNZyxkZXBzOltDdF19LHtwcm92aWRlOlptLHVzZUNsYXNzOlptLGRlcHM6W012LEN0XX0se3Byb3ZpZGU6blAsdXNlQ2xhc3M6b1AsZGVwczpbXX0sRnd0XSxDYT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXtpZih0KXRocm93IG5ldyBFcnJvcigiQnJvd3Nlck1vZHVsZSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4gSWYgeW91IG5lZWQgYWNjZXNzIHRvIGNvbW1vbiBkaXJlY3RpdmVzIHN1Y2ggYXMgTmdJZiBhbmQgTmdGb3IgZnJvbSBhIGxhenkgbG9hZGVkIG1vZHVsZSwgaW1wb3J0IENvbW1vbk1vZHVsZSBpbnN0ZWFkLiIpfXN0YXRpYyB3aXRoU2VydmVyVHJhbnNpdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6Q2EscHJvdmlkZXJzOlt7cHJvdmlkZTpUYix1c2VWYWx1ZTp0LmFwcElkfSx7cHJvdmlkZTppbnQsdXNlRXhpc3Rpbmc6VGJ9LGt3dF19fX07Q2EuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Q2EpKEkoQ2EsMTIpKX07Q2EuXHUwMjc1bW9kPXEoe3R5cGU6Q2F9KTtDYS5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOmxudCxpbXBvcnRzOltZLFBnXX0pO0NhLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q2EsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6WW99LHt0eXBlOk4sYXJnczpbQ2FdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQ2EsW3t0eXBlOlosYXJnczpbe3Byb3ZpZGVyczpsbnQsZXhwb3J0czpbWSxQZ119XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNhLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOllvfSx7dHlwZTpOLGFyZ3M6W0NhXX1dfV19LG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KENhLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1ksUGddfX0pfSkoKTtmdW5jdGlvbiBjbnQoKXtyZXR1cm4gbmV3IGlQKEkoX3QpKX12YXIgaVA9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXQsdGhpcy5fZG9tPXdnKCl9YWRkVGFnKHQsZT0hMSl7cmV0dXJuIHQ/dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KHQsZSk6bnVsbH1hZGRUYWdzKHQsZT0hMSl7cmV0dXJuIHQ/dC5yZWR1Y2UoKG8saSk9PihpJiZvLnB1c2godGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KGksZSkpLG8pLFtdKTpbXX1nZXRUYWcodCl7cmV0dXJuIHQmJnRoaXMuX2RvYy5xdWVyeVNlbGVjdG9yKGBtZXRhWyR7dH1dYCl8fG51bGx9Z2V0VGFncyh0KXtpZighdClyZXR1cm5bXTtsZXQgZT10aGlzLl9kb2MucXVlcnlTZWxlY3RvckFsbChgbWV0YVske3R9XWApO3JldHVybiBlP1tdLnNsaWNlLmNhbGwoZSk6W119dXBkYXRlVGFnKHQsZSl7aWYoIXQpcmV0dXJuIG51bGw7ZT1lfHx0aGlzLl9wYXJzZVNlbGVjdG9yKHQpO2xldCBvPXRoaXMuZ2V0VGFnKGUpO3JldHVybiBvP3RoaXMuX3NldE1ldGFFbGVtZW50QXR0cmlidXRlcyh0LG8pOnRoaXMuX2dldE9yQ3JlYXRlRWxlbWVudCh0LCEwKX1yZW1vdmVUYWcodCl7dGhpcy5yZW1vdmVUYWdFbGVtZW50KHRoaXMuZ2V0VGFnKHQpKX1yZW1vdmVUYWdFbGVtZW50KHQpe3QmJnRoaXMuX2RvbS5yZW1vdmUodCl9X2dldE9yQ3JlYXRlRWxlbWVudCh0LGU9ITEpe2lmKCFlKXtsZXQgYT10aGlzLl9wYXJzZVNlbGVjdG9yKHQpLHI9dGhpcy5nZXRUYWdzKGEpLmZpbHRlcihzPT50aGlzLl9jb250YWluc0F0dHJpYnV0ZXModCxzKSlbMF07aWYociE9PXZvaWQgMClyZXR1cm4gcn1sZXQgbz10aGlzLl9kb20uY3JlYXRlRWxlbWVudCgibWV0YSIpO3JldHVybiB0aGlzLl9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXModCxvKSx0aGlzLl9kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZChvKSxvfV9zZXRNZXRhRWxlbWVudEF0dHJpYnV0ZXModCxlKXtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChvPT5lLnNldEF0dHJpYnV0ZSh0aGlzLl9nZXRNZXRhS2V5TWFwKG8pLHRbb10pKSxlfV9wYXJzZVNlbGVjdG9yKHQpe2xldCBlPXQubmFtZT8ibmFtZSI6InByb3BlcnR5IjtyZXR1cm5gJHtlfT0iJHt0W2VdfSJgfV9jb250YWluc0F0dHJpYnV0ZXModCxlKXtyZXR1cm4gT2JqZWN0LmtleXModCkuZXZlcnkobz0+ZS5nZXRBdHRyaWJ1dGUodGhpcy5fZ2V0TWV0YUtleU1hcChvKSk9PT10W29dKX1fZ2V0TWV0YUtleU1hcCh0KXtyZXR1cm4gYzN0W3RdfHx0fX07aVAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8aVApKEkoX3QpKX07aVAuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpjbnQsdG9rZW46aVAscHJvdmlkZWRJbjoicm9vdCJ9KTtpUC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGlQLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTpjbnQsZGVwczpbXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO3ZhciBjM3Q9e2h0dHBFcXVpdjoiaHR0cC1lcXVpdiJ9O2Z1bmN0aW9uIG1udCgpe3JldHVybiBuZXcgYVAoSShfdCkpfXZhciBhUD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2M9dH1nZXRUaXRsZSgpe3JldHVybiB0aGlzLl9kb2MudGl0bGV9c2V0VGl0bGUodCl7dGhpcy5fZG9jLnRpdGxlPXR8fCIifX07YVAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8YVApKEkoX3QpKX07YVAuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTptbnQsdG9rZW46YVAscHJvdmlkZWRJbjoicm9vdCJ9KTthUC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGFQLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCIsdXNlRmFjdG9yeTptbnQsZGVwczpbXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIG0zdChuKXtsZXQgdD17IiZhOyI6IiYiLCImcTsiOiciJywiJnM7IjoiJyIsIiZsOyI6IjwiLCImZzsiOiI+In07cmV0dXJuIG4ucmVwbGFjZSgvJlteO10rOy9nLGU9PnRbZV0pfXZhciBOZz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RvcmU9e30sdGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcz17fX1zdGF0aWMgaW5pdCh0KXtsZXQgZT1uZXcgTmc7cmV0dXJuIGUuc3RvcmU9dCxlfWdldCh0LGUpe3JldHVybiB0aGlzLnN0b3JlW3RdIT09dm9pZCAwP3RoaXMuc3RvcmVbdF06ZX1zZXQodCxlKXt0aGlzLnN0b3JlW3RdPWV9cmVtb3ZlKHQpe2RlbGV0ZSB0aGlzLnN0b3JlW3RdfWhhc0tleSh0KXtyZXR1cm4gdGhpcy5zdG9yZS5oYXNPd25Qcm9wZXJ0eSh0KX1vblNlcmlhbGl6ZSh0LGUpe3RoaXMub25TZXJpYWxpemVDYWxsYmFja3NbdF09ZX10b0pzb24oKXtmb3IobGV0IHQgaW4gdGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcylpZih0aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzLmhhc093blByb3BlcnR5KHQpKXRyeXt0aGlzLnN0b3JlW3RdPXRoaXMub25TZXJpYWxpemVDYWxsYmFja3NbdF0oKX1jYXRjaChlKXtjb25zb2xlLndhcm4oIkV4Y2VwdGlvbiBpbiBvblNlcmlhbGl6ZSBjYWxsYmFjazogIixlKX1yZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5zdG9yZSl9fTtOZy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxOZyl9O05nLlx1MDI3NXByb3Y9UHQoe3Rva2VuOk5nLGZhY3Rvcnk6TmcuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE5nLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW119LG51bGwpfSkoKTtmdW5jdGlvbiBmbnQobix0KXtsZXQgZT1uLmdldEVsZW1lbnRCeUlkKHQrIi1zdGF0ZSIpLG89e307aWYoZSYmZS50ZXh0Q29udGVudCl0cnl7bz1KU09OLnBhcnNlKG0zdChlLnRleHRDb250ZW50KSl9Y2F0Y2goaSl7Y29uc29sZS53YXJuKCJFeGNlcHRpb24gd2hpbGUgcmVzdG9yaW5nIFRyYW5zZmVyU3RhdGUgZm9yIGFwcCAiK3QsaSl9cmV0dXJuIE5nLmluaXQobyl9dmFyIFJ5PWNsYXNze307UnkuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UnkpfTtSeS5cdTAyNzVtb2Q9cSh7dHlwZTpSeX0pO1J5Llx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3twcm92aWRlOk5nLHVzZUZhY3Rvcnk6Zm50LGRlcHM6W190LFRiXX1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFJ5LFt7dHlwZTpaLGFyZ3M6W3twcm92aWRlcnM6W3twcm92aWRlOk5nLHVzZUZhY3Rvcnk6Zm50LGRlcHM6W190LFRiXX1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgUmxlPW5ldyBZZigiMTIuMi4xNiIpOyhmdW5jdGlvbihuKXt0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShuKTpuKCl9KShmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbihLKXt2YXIgbXQ9Sy5wZXJmb3JtYW5jZTtmdW5jdGlvbiBkdChubil7bXQmJm10Lm1hcmsmJm10Lm1hcmsobm4pfWZ1bmN0aW9uIE10KG5uLEJ0KXttdCYmbXQubWVhc3VyZSYmbXQubWVhc3VyZShubixCdCl9ZHQoIlpvbmUiKTt2YXIgQXQ9Sy5fX1pvbmVfc3ltYm9sX3ByZWZpeHx8Il9fem9uZV9zeW1ib2xfXyI7ZnVuY3Rpb24gWnQobm4pe3JldHVybiBBdCtubn12YXIgQ2U9S1tadCgiZm9yY2VEdXBsaWNhdGVab25lQ2hlY2siKV09PT0hMDtpZihLLlpvbmUpe2lmKENlfHx0eXBlb2YgSy5ab25lLl9fc3ltYm9sX18hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJab25lIGFscmVhZHkgbG9hZGVkLiIpO3JldHVybiBLLlpvbmV9dmFyIFllPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbm4oQnQsenQpe3RoaXMuX3BhcmVudD1CdCx0aGlzLl9uYW1lPXp0P3p0Lm5hbWV8fCJ1bm5hbWVkIjoiPHJvb3Q+Iix0aGlzLl9wcm9wZXJ0aWVzPXp0JiZ6dC5wcm9wZXJ0aWVzfHx7fSx0aGlzLl96b25lRGVsZWdhdGU9bmV3IHhlKHRoaXMsdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuX3pvbmVEZWxlZ2F0ZSx6dCl9cmV0dXJuIG5uLmFzc2VydFpvbmVQYXRjaGVkPWZ1bmN0aW9uKCl7aWYoSy5Qcm9taXNlIT09VWkuWm9uZUF3YXJlUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIlpvbmUuanMgaGFzIGRldGVjdGVkIHRoYXQgWm9uZUF3YXJlUHJvbWlzZSBgKHdpbmRvd3xnbG9iYWwpLlByb21pc2VgIGhhcyBiZWVuIG92ZXJ3cml0dGVuLlxuTW9zdCBsaWtlbHkgY2F1c2UgaXMgdGhhdCBhIFByb21pc2UgcG9seWZpbGwgaGFzIGJlZW4gbG9hZGVkIGFmdGVyIFpvbmUuanMgKFBvbHlmaWxsaW5nIFByb21pc2UgYXBpIGlzIG5vdCBuZWNlc3Nhcnkgd2hlbiB6b25lLmpzIGlzIGxvYWRlZC4gSWYgeW91IG11c3QgbG9hZCBvbmUsIGRvIHNvIGJlZm9yZSBsb2FkaW5nIHpvbmUuanMuKSIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkobm4sInJvb3QiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIEJ0PW5uLmN1cnJlbnQ7QnQucGFyZW50OylCdD1CdC5wYXJlbnQ7cmV0dXJuIEJ0fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShubiwiY3VycmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiBkaS56b25lfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShubiwiY3VycmVudFRhc2siLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ2d9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbm4uX19sb2FkX3BhdGNoPWZ1bmN0aW9uKEJ0LHp0LGVlKXtpZihlZT09PXZvaWQgMCYmKGVlPSExKSxVaS5oYXNPd25Qcm9wZXJ0eShCdCkpe2lmKCFlZSYmQ2UpdGhyb3cgRXJyb3IoIkFscmVhZHkgbG9hZGVkIHBhdGNoOiAiK0J0KX1lbHNlIGlmKCFLWyJfX1pvbmVfZGlzYWJsZV8iK0J0XSl7dmFyIG9vPSJab25lOiIrQnQ7ZHQob28pLFVpW0J0XT16dChLLG5uLGZvKSxNdChvbyxvbyl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkobm4ucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShubi5wcm90b3R5cGUsIm5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbmFtZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxubi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKEJ0KXt2YXIgenQ9dGhpcy5nZXRab25lV2l0aChCdCk7aWYoenQpcmV0dXJuIHp0Ll9wcm9wZXJ0aWVzW0J0XX0sbm4ucHJvdG90eXBlLmdldFpvbmVXaXRoPWZ1bmN0aW9uKEJ0KXtmb3IodmFyIHp0PXRoaXM7enQ7KXtpZih6dC5fcHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShCdCkpcmV0dXJuIHp0O3p0PXp0Ll9wYXJlbnR9cmV0dXJuIG51bGx9LG5uLnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKEJ0KXtpZighQnQpdGhyb3cgbmV3IEVycm9yKCJab25lU3BlYyByZXF1aXJlZCEiKTtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmZvcmsodGhpcyxCdCl9LG5uLnByb3RvdHlwZS53cmFwPWZ1bmN0aW9uKEJ0LHp0KXtpZih0eXBlb2YgQnQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgZnVuY3Rpb24gZ290OiAiK0J0KTt2YXIgZWU9dGhpcy5fem9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLEJ0LHp0KSxvbz10aGlzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvby5ydW5HdWFyZGVkKGVlLHRoaXMsYXJndW1lbnRzLHp0KX19LG5uLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oQnQsenQsZWUsb28pe2RpPXtwYXJlbnQ6ZGksem9uZTp0aGlzfTt0cnl7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5pbnZva2UodGhpcyxCdCx6dCxlZSxvbyl9ZmluYWxseXtkaT1kaS5wYXJlbnR9fSxubi5wcm90b3R5cGUucnVuR3VhcmRlZD1mdW5jdGlvbihCdCx6dCxlZSxvbyl7enQ9PT12b2lkIDAmJih6dD1udWxsKSxkaT17cGFyZW50OmRpLHpvbmU6dGhpc307dHJ5e3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLEJ0LHp0LGVlLG9vKX1jYXRjaChBYSl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsQWEpKXRocm93IEFhfX1maW5hbGx5e2RpPWRpLnBhcmVudH19LG5uLnByb3RvdHlwZS5ydW5UYXNrPWZ1bmN0aW9uKEJ0LHp0LGVlKXtpZihCdC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIHJ1biBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyhCdC56b25lfHxraSkubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7aWYoIShCdC5zdGF0ZT09PXhpJiYoQnQudHlwZT09PXZvfHxCdC50eXBlPT09RXMpKSl7dmFyIG9vPUJ0LnN0YXRlIT1KbjtvbyYmQnQuX3RyYW5zaXRpb25UbyhKbixwYSksQnQucnVuQ291bnQrKzt2YXIgQWE9Z2c7Z2c9QnQsZGk9e3BhcmVudDpkaSx6b25lOnRoaXN9O3RyeXtCdC50eXBlPT1FcyYmQnQuZGF0YSYmIUJ0LmRhdGEuaXNQZXJpb2RpYyYmKEJ0LmNhbmNlbEZuPXZvaWQgMCk7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlVGFzayh0aGlzLEJ0LHp0LGVlKX1jYXRjaCh0Xyl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdF8pKXRocm93IHRffX1maW5hbGx5e0J0LnN0YXRlIT09eGkmJkJ0LnN0YXRlIT09cGkmJihCdC50eXBlPT12b3x8QnQuZGF0YSYmQnQuZGF0YS5pc1BlcmlvZGljP29vJiZCdC5fdHJhbnNpdGlvblRvKHBhLEpuKTooQnQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQoQnQsLTEpLG9vJiZCdC5fdHJhbnNpdGlvblRvKHhpLEpuLHhpKSkpLGRpPWRpLnBhcmVudCxnZz1BYX19fSxubi5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKEJ0KXtpZihCdC56b25lJiZCdC56b25lIT09dGhpcylmb3IodmFyIHp0PXRoaXM7enQ7KXtpZih6dD09PUJ0LnpvbmUpdGhyb3cgRXJyb3IoImNhbiBub3QgcmVzY2hlZHVsZSB0YXNrIHRvICIrdGhpcy5uYW1lKyIgd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgIitCdC56b25lLm5hbWUpO3p0PXp0LnBhcmVudH1CdC5fdHJhbnNpdGlvblRvKGZhLHhpKTt2YXIgZWU9W107QnQuX3pvbmVEZWxlZ2F0ZXM9ZWUsQnQuX3pvbmU9dGhpczt0cnl7QnQ9dGhpcy5fem9uZURlbGVnYXRlLnNjaGVkdWxlVGFzayh0aGlzLEJ0KX1jYXRjaChvbyl7dGhyb3cgQnQuX3RyYW5zaXRpb25UbyhwaSxmYSx4aSksdGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsb28pLG9vfXJldHVybiBCdC5fem9uZURlbGVnYXRlcz09PWVlJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQoQnQsMSksQnQuc3RhdGU9PWZhJiZCdC5fdHJhbnNpdGlvblRvKHBhLGZhKSxCdH0sbm4ucHJvdG90eXBlLnNjaGVkdWxlTWljcm9UYXNrPWZ1bmN0aW9uKEJ0LHp0LGVlLG9vKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IFFlKEZjLEJ0LHp0LGVlLG9vLHZvaWQgMCkpfSxubi5wcm90b3R5cGUuc2NoZWR1bGVNYWNyb1Rhc2s9ZnVuY3Rpb24oQnQsenQsZWUsb28sQWEpe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgUWUoRXMsQnQsenQsZWUsb28sQWEpKX0sbm4ucHJvdG90eXBlLnNjaGVkdWxlRXZlbnRUYXNrPWZ1bmN0aW9uKEJ0LHp0LGVlLG9vLEFhKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IFFlKHZvLEJ0LHp0LGVlLG9vLEFhKSl9LG5uLnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9uKEJ0KXtpZihCdC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIGNhbmNlbGxlZCBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyhCdC56b25lfHxraSkubmFtZSsiOyBFeGVjdXRpb246ICIrdGhpcy5uYW1lKyIpIik7QnQuX3RyYW5zaXRpb25UbyhGbCxwYSxKbik7dHJ5e3RoaXMuX3pvbmVEZWxlZ2F0ZS5jYW5jZWxUYXNrKHRoaXMsQnQpfWNhdGNoKHp0KXt0aHJvdyBCdC5fdHJhbnNpdGlvblRvKHBpLEZsKSx0aGlzLl96b25lRGVsZWdhdGUuaGFuZGxlRXJyb3IodGhpcyx6dCksenR9cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudChCdCwtMSksQnQuX3RyYW5zaXRpb25Ubyh4aSxGbCksQnQucnVuQ291bnQ9MCxCdH0sbm4ucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVuY3Rpb24oQnQsenQpe3ZhciBlZT1CdC5fem9uZURlbGVnYXRlczt6dD09LTEmJihCdC5fem9uZURlbGVnYXRlcz1udWxsKTtmb3IodmFyIG9vPTA7b288ZWUubGVuZ3RoO29vKyspZWVbb29dLl91cGRhdGVUYXNrQ291bnQoQnQudHlwZSx6dCl9LG5ufSgpO1llLl9fc3ltYm9sX189WnQ7dmFyIGhuPXtuYW1lOiIiLG9uSGFzVGFzazpmdW5jdGlvbihubixCdCx6dCxlZSl7cmV0dXJuIG5uLmhhc1Rhc2soenQsZWUpfSxvblNjaGVkdWxlVGFzazpmdW5jdGlvbihubixCdCx6dCxlZSl7cmV0dXJuIG5uLnNjaGVkdWxlVGFzayh6dCxlZSl9LG9uSW52b2tlVGFzazpmdW5jdGlvbihubixCdCx6dCxlZSxvbyxBYSl7cmV0dXJuIG5uLmludm9rZVRhc2soenQsZWUsb28sQWEpfSxvbkNhbmNlbFRhc2s6ZnVuY3Rpb24obm4sQnQsenQsZWUpe3JldHVybiBubi5jYW5jZWxUYXNrKHp0LGVlKX19LHhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbm4oQnQsenQsZWUpe3RoaXMuX3Rhc2tDb3VudHM9e21pY3JvVGFzazowLG1hY3JvVGFzazowLGV2ZW50VGFzazowfSx0aGlzLnpvbmU9QnQsdGhpcy5fcGFyZW50RGVsZWdhdGU9enQsdGhpcy5fZm9ya1pTPWVlJiYoZWUmJmVlLm9uRm9yaz9lZTp6dC5fZm9ya1pTKSx0aGlzLl9mb3JrRGxndD1lZSYmKGVlLm9uRm9yaz96dDp6dC5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1lZSYmKGVlLm9uRm9yaz90aGlzLnpvbmU6enQuX2ZvcmtDdXJyWm9uZSksdGhpcy5faW50ZXJjZXB0WlM9ZWUmJihlZS5vbkludGVyY2VwdD9lZTp6dC5faW50ZXJjZXB0WlMpLHRoaXMuX2ludGVyY2VwdERsZ3Q9ZWUmJihlZS5vbkludGVyY2VwdD96dDp6dC5faW50ZXJjZXB0RGxndCksdGhpcy5faW50ZXJjZXB0Q3VyclpvbmU9ZWUmJihlZS5vbkludGVyY2VwdD90aGlzLnpvbmU6enQuX2ludGVyY2VwdEN1cnJab25lKSx0aGlzLl9pbnZva2VaUz1lZSYmKGVlLm9uSW52b2tlP2VlOnp0Ll9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1lZSYmKGVlLm9uSW52b2tlP3p0Onp0Ll9pbnZva2VEbGd0KSx0aGlzLl9pbnZva2VDdXJyWm9uZT1lZSYmKGVlLm9uSW52b2tlP3RoaXMuem9uZTp6dC5faW52b2tlQ3VyclpvbmUpLHRoaXMuX2hhbmRsZUVycm9yWlM9ZWUmJihlZS5vbkhhbmRsZUVycm9yP2VlOnp0Ll9oYW5kbGVFcnJvclpTKSx0aGlzLl9oYW5kbGVFcnJvckRsZ3Q9ZWUmJihlZS5vbkhhbmRsZUVycm9yP3p0Onp0Ll9oYW5kbGVFcnJvckRsZ3QpLHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmU9ZWUmJihlZS5vbkhhbmRsZUVycm9yP3RoaXMuem9uZTp6dC5faGFuZGxlRXJyb3JDdXJyWm9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9ZWUmJihlZS5vblNjaGVkdWxlVGFzaz9lZTp6dC5fc2NoZWR1bGVUYXNrWlMpLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9ZWUmJihlZS5vblNjaGVkdWxlVGFzaz96dDp6dC5fc2NoZWR1bGVUYXNrRGxndCksdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9ZWUmJihlZS5vblNjaGVkdWxlVGFzaz90aGlzLnpvbmU6enQuX3NjaGVkdWxlVGFza0N1cnJab25lKSx0aGlzLl9pbnZva2VUYXNrWlM9ZWUmJihlZS5vbkludm9rZVRhc2s/ZWU6enQuX2ludm9rZVRhc2taUyksdGhpcy5faW52b2tlVGFza0RsZ3Q9ZWUmJihlZS5vbkludm9rZVRhc2s/enQ6enQuX2ludm9rZVRhc2tEbGd0KSx0aGlzLl9pbnZva2VUYXNrQ3VyclpvbmU9ZWUmJihlZS5vbkludm9rZVRhc2s/dGhpcy56b25lOnp0Ll9pbnZva2VUYXNrQ3VyclpvbmUpLHRoaXMuX2NhbmNlbFRhc2taUz1lZSYmKGVlLm9uQ2FuY2VsVGFzaz9lZTp6dC5fY2FuY2VsVGFza1pTKSx0aGlzLl9jYW5jZWxUYXNrRGxndD1lZSYmKGVlLm9uQ2FuY2VsVGFzaz96dDp6dC5fY2FuY2VsVGFza0RsZ3QpLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT1lZSYmKGVlLm9uQ2FuY2VsVGFzaz90aGlzLnpvbmU6enQuX2NhbmNlbFRhc2tDdXJyWm9uZSksdGhpcy5faGFzVGFza1pTPW51bGwsdGhpcy5faGFzVGFza0RsZ3Q9bnVsbCx0aGlzLl9oYXNUYXNrRGxndE93bmVyPW51bGwsdGhpcy5faGFzVGFza0N1cnJab25lPW51bGw7dmFyIG9vPWVlJiZlZS5vbkhhc1Rhc2ssQWE9enQmJnp0Ll9oYXNUYXNrWlM7KG9vfHxBYSkmJih0aGlzLl9oYXNUYXNrWlM9b28/ZWU6aG4sdGhpcy5faGFzVGFza0RsZ3Q9enQsdGhpcy5faGFzVGFza0RsZ3RPd25lcj10aGlzLHRoaXMuX2hhc1Rhc2tDdXJyWm9uZT1CdCxlZS5vblNjaGVkdWxlVGFza3x8KHRoaXMuX3NjaGVkdWxlVGFza1pTPWhuLHRoaXMuX3NjaGVkdWxlVGFza0RsZ3Q9enQsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmU9dGhpcy56b25lKSxlZS5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9aG4sdGhpcy5faW52b2tlVGFza0RsZ3Q9enQsdGhpcy5faW52b2tlVGFza0N1cnJab25lPXRoaXMuem9uZSksZWUub25DYW5jZWxUYXNrfHwodGhpcy5fY2FuY2VsVGFza1pTPWhuLHRoaXMuX2NhbmNlbFRhc2tEbGd0PXp0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT10aGlzLnpvbmUpKX1yZXR1cm4gbm4ucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24oQnQsenQpe3JldHVybiB0aGlzLl9mb3JrWlM/dGhpcy5fZm9ya1pTLm9uRm9yayh0aGlzLl9mb3JrRGxndCx0aGlzLnpvbmUsQnQsenQpOm5ldyBZZShCdCx6dCl9LG5uLnByb3RvdHlwZS5pbnRlcmNlcHQ9ZnVuY3Rpb24oQnQsenQsZWUpe3JldHVybiB0aGlzLl9pbnRlcmNlcHRaUz90aGlzLl9pbnRlcmNlcHRaUy5vbkludGVyY2VwdCh0aGlzLl9pbnRlcmNlcHREbGd0LHRoaXMuX2ludGVyY2VwdEN1cnJab25lLEJ0LHp0LGVlKTp6dH0sbm4ucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbihCdCx6dCxlZSxvbyxBYSl7cmV0dXJuIHRoaXMuX2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsdGhpcy5faW52b2tlQ3VyclpvbmUsQnQsenQsZWUsb28sQWEpOnp0LmFwcGx5KGVlLG9vKX0sbm4ucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKEJ0LHp0KXtyZXR1cm4gdGhpcy5faGFuZGxlRXJyb3JaUz90aGlzLl9oYW5kbGVFcnJvclpTLm9uSGFuZGxlRXJyb3IodGhpcy5faGFuZGxlRXJyb3JEbGd0LHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmUsQnQsenQpOiEwfSxubi5wcm90b3R5cGUuc2NoZWR1bGVUYXNrPWZ1bmN0aW9uKEJ0LHp0KXt2YXIgZWU9enQ7aWYodGhpcy5fc2NoZWR1bGVUYXNrWlMpdGhpcy5faGFzVGFza1pTJiZlZS5fem9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3duZXIpLGVlPXRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUsQnQsenQpLGVlfHwoZWU9enQpO2Vsc2UgaWYoenQuc2NoZWR1bGVGbil6dC5zY2hlZHVsZUZuKHp0KTtlbHNlIGlmKHp0LnR5cGU9PUZjKU1uKHp0KTtlbHNlIHRocm93IG5ldyBFcnJvcigiVGFzayBpcyBtaXNzaW5nIHNjaGVkdWxlRm4uIik7cmV0dXJuIGVlfSxubi5wcm90b3R5cGUuaW52b2tlVGFzaz1mdW5jdGlvbihCdCx6dCxlZSxvbyl7cmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUz90aGlzLl9pbnZva2VUYXNrWlMub25JbnZva2VUYXNrKHRoaXMuX2ludm9rZVRhc2tEbGd0LHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSxCdCx6dCxlZSxvbyk6enQuY2FsbGJhY2suYXBwbHkoZWUsb28pfSxubi5wcm90b3R5cGUuY2FuY2VsVGFzaz1mdW5jdGlvbihCdCx6dCl7dmFyIGVlO2lmKHRoaXMuX2NhbmNlbFRhc2taUyllZT10aGlzLl9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSxCdCx6dCk7ZWxzZXtpZighenQuY2FuY2VsRm4pdGhyb3cgRXJyb3IoIlRhc2sgaXMgbm90IGNhbmNlbGFibGUiKTtlZT16dC5jYW5jZWxGbih6dCl9cmV0dXJuIGVlfSxubi5wcm90b3R5cGUuaGFzVGFzaz1mdW5jdGlvbihCdCx6dCl7dHJ5e3RoaXMuX2hhc1Rhc2taUyYmdGhpcy5faGFzVGFza1pTLm9uSGFzVGFzayh0aGlzLl9oYXNUYXNrRGxndCx0aGlzLl9oYXNUYXNrQ3VyclpvbmUsQnQsenQpfWNhdGNoKGVlKXt0aGlzLmhhbmRsZUVycm9yKEJ0LGVlKX19LG5uLnByb3RvdHlwZS5fdXBkYXRlVGFza0NvdW50PWZ1bmN0aW9uKEJ0LHp0KXt2YXIgZWU9dGhpcy5fdGFza0NvdW50cyxvbz1lZVtCdF0sQWE9ZWVbQnRdPW9vK3p0O2lmKEFhPDApdGhyb3cgbmV3IEVycm9yKCJNb3JlIHRhc2tzIGV4ZWN1dGVkIHRoZW4gd2VyZSBzY2hlZHVsZWQuIik7aWYob289PTB8fEFhPT0wKXt2YXIgdF89e21pY3JvVGFzazplZS5taWNyb1Rhc2s+MCxtYWNyb1Rhc2s6ZWUubWFjcm9UYXNrPjAsZXZlbnRUYXNrOmVlLmV2ZW50VGFzaz4wLGNoYW5nZTpCdH07dGhpcy5oYXNUYXNrKHRoaXMuem9uZSx0Xyl9fSxubn0oKSxRZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG5uKEJ0LHp0LGVlLG9vLEFhLHRfKXtpZih0aGlzLl96b25lPW51bGwsdGhpcy5ydW5Db3VudD0wLHRoaXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCx0aGlzLl9zdGF0ZT0ibm90U2NoZWR1bGVkIix0aGlzLnR5cGU9QnQsdGhpcy5zb3VyY2U9enQsdGhpcy5kYXRhPW9vLHRoaXMuc2NoZWR1bGVGbj1BYSx0aGlzLmNhbmNlbEZuPXRfLCFlZSl0aHJvdyBuZXcgRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBkZWZpbmVkIik7dGhpcy5jYWxsYmFjaz1lZTt2YXIgRWU9dGhpcztCdD09PXZvJiZvbyYmb28udXNlRz90aGlzLmludm9rZT1ubi5pbnZva2VUYXNrOnRoaXMuaW52b2tlPWZ1bmN0aW9uKCl7cmV0dXJuIG5uLmludm9rZVRhc2suY2FsbChLLEVlLHRoaXMsYXJndW1lbnRzKX19cmV0dXJuIG5uLmludm9rZVRhc2s9ZnVuY3Rpb24oQnQsenQsZWUpe0J0fHwoQnQ9dGhpcyksSGYrKzt0cnl7cmV0dXJuIEJ0LnJ1bkNvdW50KyssQnQuem9uZS5ydW5UYXNrKEJ0LHp0LGVlKX1maW5hbGx5e0hmPT0xJiZlbigpLEhmLS19fSxPYmplY3QuZGVmaW5lUHJvcGVydHkobm4ucHJvdG90eXBlLCJ6b25lIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3pvbmV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KG5uLnByb3RvdHlwZSwic3RhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdGV9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksbm4ucHJvdG90eXBlLmNhbmNlbFNjaGVkdWxlUmVxdWVzdD1mdW5jdGlvbigpe3RoaXMuX3RyYW5zaXRpb25Ubyh4aSxmYSl9LG5uLnByb3RvdHlwZS5fdHJhbnNpdGlvblRvPWZ1bmN0aW9uKEJ0LHp0LGVlKXtpZih0aGlzLl9zdGF0ZT09PXp0fHx0aGlzLl9zdGF0ZT09PWVlKXRoaXMuX3N0YXRlPUJ0LEJ0PT14aSYmKHRoaXMuX3pvbmVEZWxlZ2F0ZXM9bnVsbCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IodGhpcy50eXBlKyIgJyIrdGhpcy5zb3VyY2UrIic6IGNhbiBub3QgdHJhbnNpdGlvbiB0byAnIitCdCsiJywgZXhwZWN0aW5nIHN0YXRlICciK3p0KyInIisoZWU/IiBvciAnIitlZSsiJyI6IiIpKyIsIHdhcyAnIit0aGlzLl9zdGF0ZSsiJy4iKX0sbm4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YSYmdHlwZW9mIHRoaXMuZGF0YS5oYW5kbGVJZCE9InVuZGVmaW5lZCI/dGhpcy5kYXRhLmhhbmRsZUlkLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSxubi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6dGhpcy50eXBlLHN0YXRlOnRoaXMuc3RhdGUsc291cmNlOnRoaXMuc291cmNlLHpvbmU6dGhpcy56b25lLm5hbWUscnVuQ291bnQ6dGhpcy5ydW5Db3VudH19LG5ufSgpLEdlPVp0KCJzZXRUaW1lb3V0IiksX249WnQoIlByb21pc2UiKSxzbz1adCgidGhlbiIpLG5vPVtdLGhvPSExLERvO2Z1bmN0aW9uIE1uKG5uKXtpZihIZj09PTAmJm5vLmxlbmd0aD09PTApaWYoRG98fEtbX25dJiYoRG89S1tfbl0ucmVzb2x2ZSgwKSksRG8pe3ZhciBCdD1Eb1tzb107QnR8fChCdD1Eby50aGVuKSxCdC5jYWxsKERvLGVuKX1lbHNlIEtbR2VdKGVuLDApO25uJiZuby5wdXNoKG5uKX1mdW5jdGlvbiBlbigpe2lmKCFobyl7Zm9yKGhvPSEwO25vLmxlbmd0aDspe3ZhciBubj1ubztubz1bXTtmb3IodmFyIEJ0PTA7QnQ8bm4ubGVuZ3RoO0J0Kyspe3ZhciB6dD1ubltCdF07dHJ5e3p0LnpvbmUucnVuVGFzayh6dCxudWxsLG51bGwpfWNhdGNoKGVlKXtmby5vblVuaGFuZGxlZEVycm9yKGVlKX19fWZvLm1pY3JvdGFza0RyYWluRG9uZSgpLGhvPSExfX12YXIga2k9e25hbWU6Ik5PIFpPTkUifSx4aT0ibm90U2NoZWR1bGVkIixmYT0ic2NoZWR1bGluZyIscGE9InNjaGVkdWxlZCIsSm49InJ1bm5pbmciLEZsPSJjYW5jZWxpbmciLHBpPSJ1bmtub3duIixGYz0ibWljcm9UYXNrIixFcz0ibWFjcm9UYXNrIix2bz0iZXZlbnRUYXNrIixVaT17fSxmbz17c3ltYm9sOlp0LGN1cnJlbnRab25lRnJhbWU6ZnVuY3Rpb24oKXtyZXR1cm4gZGl9LG9uVW5oYW5kbGVkRXJyb3I6dmksbWljcm90YXNrRHJhaW5Eb25lOnZpLHNjaGVkdWxlTWljcm9UYXNrOk1uLHNob3dVbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIVllW1p0KCJpZ25vcmVDb25zb2xlRXJyb3JVbmNhdWdodEVycm9yIildfSxwYXRjaEV2ZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoT25Qcm9wZXJ0aWVzOnZpLHBhdGNoTWV0aG9kOmZ1bmN0aW9uKCl7cmV0dXJuIHZpfSxiaW5kQXJndW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoVGhlbjpmdW5jdGlvbigpe3JldHVybiB2aX0scGF0Y2hNYWNyb1Rhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gdml9LHBhdGNoRXZlbnRQcm90b3R5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gdml9LGlzSUVPckVkZ2U6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ2V0R2xvYmFsT2JqZWN0czpmdW5jdGlvbigpe30sT2JqZWN0RGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oKXtyZXR1cm4gdml9LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpmdW5jdGlvbigpe30sT2JqZWN0Q3JlYXRlOmZ1bmN0aW9uKCl7fSxBcnJheVNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdml9LHdyYXBXaXRoQ3VycmVudFpvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdml9LGZpbHRlclByb3BlcnRpZXM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sYXR0YWNoT3JpZ2luVG9QYXRjaGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHZpfSxfcmVkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbigpe3JldHVybiB2aX0scGF0Y2hDYWxsYmFja3M6ZnVuY3Rpb24oKXtyZXR1cm4gdml9fSxkaT17cGFyZW50Om51bGwsem9uZTpuZXcgWWUobnVsbCxudWxsKX0sZ2c9bnVsbCxIZj0wO2Z1bmN0aW9uIHZpKCl7fXJldHVybiBNdCgiWm9uZSIsIlpvbmUiKSxLLlpvbmU9WWV9KHR5cGVvZiB3aW5kb3chPSJ1bmRlZmluZWQiJiZ3aW5kb3d8fHR5cGVvZiBzZWxmIT0idW5kZWZpbmVkIiYmc2VsZnx8Z2xvYmFsKTt2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGU9T2JqZWN0LmRlZmluZVByb3BlcnR5LG89T2JqZWN0LmdldFByb3RvdHlwZU9mLGk9T2JqZWN0LmNyZWF0ZSxhPUFycmF5LnByb3RvdHlwZS5zbGljZSxyPSJhZGRFdmVudExpc3RlbmVyIixzPSJyZW1vdmVFdmVudExpc3RlbmVyIixsPVpvbmUuX19zeW1ib2xfXyhyKSxjPVpvbmUuX19zeW1ib2xfXyhzKSxtPSJ0cnVlIixmPSJmYWxzZSIscD1ab25lLl9fc3ltYm9sX18oIiIpO2Z1bmN0aW9uIGcoSyxtdCl7cmV0dXJuIFpvbmUuY3VycmVudC53cmFwKEssbXQpfWZ1bmN0aW9uIF8oSyxtdCxkdCxNdCxBdCl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayhLLG10LGR0LE10LEF0KX12YXIgTT1ab25lLl9fc3ltYm9sX18seT10eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIixPPXk/d2luZG93OnZvaWQgMCxiPXkmJk98fHR5cGVvZiBzZWxmPT0ib2JqZWN0IiYmc2VsZnx8Z2xvYmFsLFI9InJlbW92ZUF0dHJpYnV0ZSIsRT1bbnVsbF07ZnVuY3Rpb24gaihLLG10KXtmb3IodmFyIGR0PUsubGVuZ3RoLTE7ZHQ+PTA7ZHQtLSl0eXBlb2YgS1tkdF09PSJmdW5jdGlvbiImJihLW2R0XT1nKEtbZHRdLG10KyJfIitkdCkpO3JldHVybiBLfWZ1bmN0aW9uIHJ0KEssbXQpe2Zvcih2YXIgZHQ9Sy5jb25zdHJ1Y3Rvci5uYW1lLE10PWZ1bmN0aW9uKFp0KXt2YXIgQ2U9bXRbWnRdLFllPUtbQ2VdO2lmKFllKXt2YXIgaG49dChLLENlKTtpZighSihobikpcmV0dXJuImNvbnRpbnVlIjtLW0NlXT1mdW5jdGlvbih4ZSl7dmFyIFFlPWZ1bmN0aW9uKCl7cmV0dXJuIHhlLmFwcGx5KHRoaXMsaihhcmd1bWVudHMsZHQrIi4iK0NlKSl9O3JldHVybiBSdChRZSx4ZSksUWV9KFllKX19LEF0PTA7QXQ8bXQubGVuZ3RoO0F0KyspTXQoQXQpfWZ1bmN0aW9uIEooSyl7cmV0dXJuIEs/Sy53cml0YWJsZT09PSExPyExOiEodHlwZW9mIEsuZ2V0PT0iZnVuY3Rpb24iJiZ0eXBlb2YgSy5zZXQ9PSJ1bmRlZmluZWQiKTohMH12YXIgRXQ9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlIT0idW5kZWZpbmVkIiYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlLGp0PSEoIm53ImluIGIpJiZ0eXBlb2YgYi5wcm9jZXNzIT0idW5kZWZpbmVkIiYme30udG9TdHJpbmcuY2FsbChiLnByb2Nlc3MpPT09IltvYmplY3QgcHJvY2Vzc10iLGt0PSFqdCYmIUV0JiYhISh5JiZPLkhUTUxFbGVtZW50KSx3PXR5cGVvZiBiLnByb2Nlc3MhPSJ1bmRlZmluZWQiJiZ7fS50b1N0cmluZy5jYWxsKGIucHJvY2Vzcyk9PT0iW29iamVjdCBwcm9jZXNzXSImJiFFdCYmISEoeSYmTy5IVE1MRWxlbWVudCksVT17fSxudD1mdW5jdGlvbihLKXtpZihLPUt8fGIuZXZlbnQsISFLKXt2YXIgbXQ9VVtLLnR5cGVdO210fHwobXQ9VVtLLnR5cGVdPU0oIk9OX1BST1BFUlRZIitLLnR5cGUpKTt2YXIgZHQ9dGhpc3x8Sy50YXJnZXR8fGIsTXQ9ZHRbbXRdLEF0O2lmKGt0JiZkdD09PU8mJksudHlwZT09PSJlcnJvciIpe3ZhciBadD1LO0F0PU10JiZNdC5jYWxsKHRoaXMsWnQubWVzc2FnZSxadC5maWxlbmFtZSxadC5saW5lbm8sWnQuY29sbm8sWnQuZXJyb3IpLEF0PT09ITAmJksucHJldmVudERlZmF1bHQoKX1lbHNlIEF0PU10JiZNdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksQXQhPW51bGwmJiFBdCYmSy5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBBdH19O2Z1bmN0aW9uIGx0KEssbXQsZHQpe3ZhciBNdD10KEssbXQpO2lmKCFNdCYmZHQpe3ZhciBBdD10KGR0LG10KTtBdCYmKE10PXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWlmKCEoIU10fHwhTXQuY29uZmlndXJhYmxlKSl7dmFyIFp0PU0oIm9uIittdCsicGF0Y2hlZCIpO2lmKCEoSy5oYXNPd25Qcm9wZXJ0eShadCkmJktbWnRdKSl7ZGVsZXRlIE10LndyaXRhYmxlLGRlbGV0ZSBNdC52YWx1ZTt2YXIgQ2U9TXQuZ2V0LFllPU10LnNldCxobj1tdC5zdWJzdHIoMikseGU9VVtobl07eGV8fCh4ZT1VW2huXT1NKCJPTl9QUk9QRVJUWSIraG4pKSxNdC5zZXQ9ZnVuY3Rpb24oUWUpe3ZhciBHZT10aGlzO2lmKCFHZSYmSz09PWImJihHZT1iKSwhIUdlKXt2YXIgX249R2VbeGVdO19uJiZHZS5yZW1vdmVFdmVudExpc3RlbmVyKGhuLG50KSxZZSYmWWUuYXBwbHkoR2UsRSksdHlwZW9mIFFlPT0iZnVuY3Rpb24iPyhHZVt4ZV09UWUsR2UuYWRkRXZlbnRMaXN0ZW5lcihobixudCwhMSkpOkdlW3hlXT1udWxsfX0sTXQuZ2V0PWZ1bmN0aW9uKCl7dmFyIFFlPXRoaXM7aWYoIVFlJiZLPT09YiYmKFFlPWIpLCFRZSlyZXR1cm4gbnVsbDt2YXIgR2U9UWVbeGVdO2lmKEdlKXJldHVybiBHZTtpZihDZSl7dmFyIF9uPUNlJiZDZS5jYWxsKHRoaXMpO2lmKF9uKXJldHVybiBNdC5zZXQuY2FsbCh0aGlzLF9uKSx0eXBlb2YgUWVbUl09PSJmdW5jdGlvbiImJlFlLnJlbW92ZUF0dHJpYnV0ZShtdCksX259cmV0dXJuIG51bGx9LGUoSyxtdCxNdCksS1tadF09ITB9fX1mdW5jdGlvbiBidChLLG10LGR0KXtpZihtdClmb3IodmFyIE10PTA7TXQ8bXQubGVuZ3RoO010KyspbHQoSywib24iK210W010XSxkdCk7ZWxzZXt2YXIgQXQ9W107Zm9yKHZhciBadCBpbiBLKVp0LnN1YnN0cigwLDIpPT0ib24iJiZBdC5wdXNoKFp0KTtmb3IodmFyIENlPTA7Q2U8QXQubGVuZ3RoO0NlKyspbHQoSyxBdFtDZV0sZHQpfX12YXIgb3Q9TSgib3JpZ2luYWxJbnN0YW5jZSIpO2Z1bmN0aW9uIHV0KEspe3ZhciBtdD1iW0tdO2lmKCEhbXQpe2JbTShLKV09bXQsYltLXT1mdW5jdGlvbigpe3ZhciBBdD1qKGFyZ3VtZW50cyxLKTtzd2l0Y2goQXQubGVuZ3RoKXtjYXNlIDA6dGhpc1tvdF09bmV3IG10O2JyZWFrO2Nhc2UgMTp0aGlzW290XT1uZXcgbXQoQXRbMF0pO2JyZWFrO2Nhc2UgMjp0aGlzW290XT1uZXcgbXQoQXRbMF0sQXRbMV0pO2JyZWFrO2Nhc2UgMzp0aGlzW290XT1uZXcgbXQoQXRbMF0sQXRbMV0sQXRbMl0pO2JyZWFrO2Nhc2UgNDp0aGlzW290XT1uZXcgbXQoQXRbMF0sQXRbMV0sQXRbMl0sQXRbM10pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJBcmcgbGlzdCB0b28gbG9uZy4iKX19LFJ0KGJbS10sbXQpO3ZhciBkdD1uZXcgbXQoZnVuY3Rpb24oKXt9KSxNdDtmb3IoTXQgaW4gZHQpSz09PSJYTUxIdHRwUmVxdWVzdCImJk10PT09InJlc3BvbnNlQmxvYiJ8fGZ1bmN0aW9uKEF0KXt0eXBlb2YgZHRbQXRdPT0iZnVuY3Rpb24iP2JbS10ucHJvdG90eXBlW0F0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzW290XVtBdF0uYXBwbHkodGhpc1tvdF0sYXJndW1lbnRzKX06ZShiW0tdLnByb3RvdHlwZSxBdCx7c2V0OmZ1bmN0aW9uKFp0KXt0eXBlb2YgWnQ9PSJmdW5jdGlvbiI/KHRoaXNbb3RdW0F0XT1nKFp0LEsrIi4iK0F0KSxSdCh0aGlzW290XVtBdF0sWnQpKTp0aGlzW290XVtBdF09WnR9LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW290XVtBdF19fSl9KE10KTtmb3IoTXQgaW4gbXQpTXQhPT0icHJvdG90eXBlIiYmbXQuaGFzT3duUHJvcGVydHkoTXQpJiYoYltLXVtNdF09bXRbTXRdKX19ZnVuY3Rpb24gZ3QoSyxtdCxkdCl7Zm9yKHZhciBNdD1LO010JiYhTXQuaGFzT3duUHJvcGVydHkobXQpOylNdD1vKE10KTshTXQmJktbbXRdJiYoTXQ9Syk7dmFyIEF0PU0obXQpLFp0PW51bGw7aWYoTXQmJighKFp0PU10W0F0XSl8fCFNdC5oYXNPd25Qcm9wZXJ0eShBdCkpKXtadD1NdFtBdF09TXRbbXRdO3ZhciBDZT1NdCYmdChNdCxtdCk7aWYoSihDZSkpe3ZhciBZZT1kdChadCxBdCxtdCk7TXRbbXRdPWZ1bmN0aW9uKCl7cmV0dXJuIFllKHRoaXMsYXJndW1lbnRzKX0sUnQoTXRbbXRdLFp0KX19cmV0dXJuIFp0fWZ1bmN0aW9uIFd0KEssbXQsZHQpe3ZhciBNdD1udWxsO2Z1bmN0aW9uIEF0KFp0KXt2YXIgQ2U9WnQuZGF0YTtyZXR1cm4gQ2UuYXJnc1tDZS5jYklkeF09ZnVuY3Rpb24oKXtadC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxNdC5hcHBseShDZS50YXJnZXQsQ2UuYXJncyksWnR9TXQ9Z3QoSyxtdCxmdW5jdGlvbihadCl7cmV0dXJuIGZ1bmN0aW9uKENlLFllKXt2YXIgaG49ZHQoQ2UsWWUpO3JldHVybiBobi5jYklkeD49MCYmdHlwZW9mIFllW2huLmNiSWR4XT09ImZ1bmN0aW9uIj9fKGhuLm5hbWUsWWVbaG4uY2JJZHhdLGhuLEF0KTpadC5hcHBseShDZSxZZSl9fSl9ZnVuY3Rpb24gUnQoSyxtdCl7S1tNKCJPcmlnaW5hbERlbGVnYXRlIildPW10fXZhciBHdD0hMSx5ZT0hMTtmdW5jdGlvbiBqZSgpe3RyeXt2YXIgSz1PLm5hdmlnYXRvci51c2VyQWdlbnQ7aWYoSy5pbmRleE9mKCJNU0lFICIpIT09LTF8fEsuaW5kZXhPZigiVHJpZGVudC8iKSE9PS0xKXJldHVybiEwfWNhdGNoKG10KXt9cmV0dXJuITF9ZnVuY3Rpb24gY2UoKXtpZihHdClyZXR1cm4geWU7R3Q9ITA7dHJ5e3ZhciBLPU8ubmF2aWdhdG9yLnVzZXJBZ2VudDsoSy5pbmRleE9mKCJNU0lFICIpIT09LTF8fEsuaW5kZXhPZigiVHJpZGVudC8iKSE9PS0xfHxLLmluZGV4T2YoIkVkZ2UvIikhPT0tMSkmJih5ZT0hMCl9Y2F0Y2gobXQpe31yZXR1cm4geWV9Wm9uZS5fX2xvYWRfcGF0Y2goIlpvbmVBd2FyZVByb21pc2UiLGZ1bmN0aW9uKEssbXQsZHQpe3ZhciBNdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLEF0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtmdW5jdGlvbiBadChFZSl7aWYoRWUmJkVlLnRvU3RyaW5nPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyl7dmFyIGduPUVlLmNvbnN0cnVjdG9yJiZFZS5jb25zdHJ1Y3Rvci5uYW1lO3JldHVybihnbnx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkoRWUpfXJldHVybiBFZT9FZS50b1N0cmluZygpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChFZSl9dmFyIENlPWR0LnN5bWJvbCxZZT1bXSxobj1LW0NlKCJESVNBQkxFX1dSQVBQSU5HX1VOQ0FVR0hUX1BST01JU0VfUkVKRUNUSU9OIildPT09ITAseGU9Q2UoIlByb21pc2UiKSxRZT1DZSgidGhlbiIpLEdlPSJfX2NyZWF0aW9uVHJhY2VfXyI7ZHQub25VbmhhbmRsZWRFcnJvcj1mdW5jdGlvbihFZSl7aWYoZHQuc2hvd1VuY2F1Z2h0RXJyb3IoKSl7dmFyIGduPUVlJiZFZS5yZWplY3Rpb247Z24/Y29uc29sZS5lcnJvcigiVW5oYW5kbGVkIFByb21pc2UgcmVqZWN0aW9uOiIsZ24gaW5zdGFuY2VvZiBFcnJvcj9nbi5tZXNzYWdlOmduLCI7IFpvbmU6IixFZS56b25lLm5hbWUsIjsgVGFzazoiLEVlLnRhc2smJkVlLnRhc2suc291cmNlLCI7IFZhbHVlOiIsZ24sZ24gaW5zdGFuY2VvZiBFcnJvcj9nbi5zdGFjazp2b2lkIDApOmNvbnNvbGUuZXJyb3IoRWUpfX0sZHQubWljcm90YXNrRHJhaW5Eb25lPWZ1bmN0aW9uKCl7Zm9yKHZhciBFZT1mdW5jdGlvbigpe3ZhciBnbj1ZZS5zaGlmdCgpO3RyeXtnbi56b25lLnJ1bkd1YXJkZWQoZnVuY3Rpb24oKXt0aHJvdyBnbi50aHJvd09yaWdpbmFsP2duLnJlamVjdGlvbjpnbn0pfWNhdGNoKGllKXtzbyhpZSl9fTtZZS5sZW5ndGg7KUVlKCl9O3ZhciBfbj1DZSgidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKTtmdW5jdGlvbiBzbyhFZSl7ZHQub25VbmhhbmRsZWRFcnJvcihFZSk7dHJ5e3ZhciBnbj1tdFtfbl07dHlwZW9mIGduPT0iZnVuY3Rpb24iJiZnbi5jYWxsKHRoaXMsRWUpfWNhdGNoKGllKXt9fWZ1bmN0aW9uIG5vKEVlKXtyZXR1cm4gRWUmJkVlLnRoZW59ZnVuY3Rpb24gaG8oRWUpe3JldHVybiBFZX1mdW5jdGlvbiBEbyhFZSl7cmV0dXJuIHp0LnJlamVjdChFZSl9dmFyIE1uPUNlKCJzdGF0ZSIpLGVuPUNlKCJ2YWx1ZSIpLGtpPUNlKCJmaW5hbGx5IikseGk9Q2UoInBhcmVudFByb21pc2VWYWx1ZSIpLGZhPUNlKCJwYXJlbnRQcm9taXNlU3RhdGUiKSxwYT0iUHJvbWlzZS50aGVuIixKbj1udWxsLEZsPSEwLHBpPSExLEZjPTA7ZnVuY3Rpb24gRXMoRWUsZ24pe3JldHVybiBmdW5jdGlvbihpZSl7dHJ5e2RpKEVlLGduLGllKX1jYXRjaChwbil7ZGkoRWUsITEscG4pfX19dmFyIHZvPWZ1bmN0aW9uKCl7dmFyIEVlPSExO3JldHVybiBmdW5jdGlvbihpZSl7cmV0dXJuIGZ1bmN0aW9uKCl7RWV8fChFZT0hMCxpZS5hcHBseShudWxsLGFyZ3VtZW50cykpfX19LFVpPSJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIixmbz1DZSgiY3VycmVudFRhc2tUcmFjZSIpO2Z1bmN0aW9uIGRpKEVlLGduLGllKXt2YXIgcG49dm8oKTtpZihFZT09PWllKXRocm93IG5ldyBUeXBlRXJyb3IoVWkpO2lmKEVlW01uXT09PUpuKXt2YXIgYm89bnVsbDt0cnl7KHR5cGVvZiBpZT09Im9iamVjdCJ8fHR5cGVvZiBpZT09ImZ1bmN0aW9uIikmJihibz1pZSYmaWUudGhlbil9Y2F0Y2goem8pe3JldHVybiBwbihmdW5jdGlvbigpe2RpKEVlLCExLHpvKX0pKCksRWV9aWYoZ24hPT1waSYmaWUgaW5zdGFuY2VvZiB6dCYmaWUuaGFzT3duUHJvcGVydHkoTW4pJiZpZS5oYXNPd25Qcm9wZXJ0eShlbikmJmllW01uXSE9PUpuKUhmKGllKSxkaShFZSxpZVtNbl0saWVbZW5dKTtlbHNlIGlmKGduIT09cGkmJnR5cGVvZiBibz09ImZ1bmN0aW9uIil0cnl7Ym8uY2FsbChpZSxwbihFcyhFZSxnbikpLHBuKEVzKEVlLCExKSkpfWNhdGNoKHpvKXtwbihmdW5jdGlvbigpe2RpKEVlLCExLHpvKX0pKCl9ZWxzZXtFZVtNbl09Z247dmFyIHdvPUVlW2VuXTtpZihFZVtlbl09aWUsRWVba2ldPT09a2kmJmduPT09RmwmJihFZVtNbl09RWVbZmFdLEVlW2VuXT1FZVt4aV0pLGduPT09cGkmJmllIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciBKbz1tdC5jdXJyZW50VGFzayYmbXQuY3VycmVudFRhc2suZGF0YSYmbXQuY3VycmVudFRhc2suZGF0YVtHZV07Sm8mJkF0KGllLGZvLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTpKb30pfWZvcih2YXIgd2k9MDt3aTx3by5sZW5ndGg7KXZpKEVlLHdvW3dpKytdLHdvW3dpKytdLHdvW3dpKytdLHdvW3dpKytdKTtpZih3by5sZW5ndGg9PTAmJmduPT1waSl7RWVbTW5dPUZjO3ZhciBJbz1pZTt0cnl7dGhyb3cgbmV3IEVycm9yKCJVbmNhdWdodCAoaW4gcHJvbWlzZSk6ICIrWnQoaWUpKyhpZSYmaWUuc3RhY2s/YApgK2llLnN0YWNrOiIiKSl9Y2F0Y2goem8pe0lvPXpvfWhuJiYoSW8udGhyb3dPcmlnaW5hbD0hMCksSW8ucmVqZWN0aW9uPWllLElvLnByb21pc2U9RWUsSW8uem9uZT1tdC5jdXJyZW50LElvLnRhc2s9bXQuY3VycmVudFRhc2ssWWUucHVzaChJbyksZHQuc2NoZWR1bGVNaWNyb1Rhc2soKX19fXJldHVybiBFZX12YXIgZ2c9Q2UoInJlamVjdGlvbkhhbmRsZWRIYW5kbGVyIik7ZnVuY3Rpb24gSGYoRWUpe2lmKEVlW01uXT09PUZjKXt0cnl7dmFyIGduPW10W2dnXTtnbiYmdHlwZW9mIGduPT0iZnVuY3Rpb24iJiZnbi5jYWxsKHRoaXMse3JlamVjdGlvbjpFZVtlbl0scHJvbWlzZTpFZX0pfWNhdGNoKHBuKXt9RWVbTW5dPXBpO2Zvcih2YXIgaWU9MDtpZTxZZS5sZW5ndGg7aWUrKylFZT09PVllW2llXS5wcm9taXNlJiZZZS5zcGxpY2UoaWUsMSl9fWZ1bmN0aW9uIHZpKEVlLGduLGllLHBuLGJvKXtIZihFZSk7dmFyIHdvPUVlW01uXSxKbz13bz90eXBlb2YgcG49PSJmdW5jdGlvbiI/cG46aG86dHlwZW9mIGJvPT0iZnVuY3Rpb24iP2JvOkRvO2duLnNjaGVkdWxlTWljcm9UYXNrKHBhLGZ1bmN0aW9uKCl7dHJ5e3ZhciB3aT1FZVtlbl0sSW89ISFpZSYma2k9PT1pZVtraV07SW8mJihpZVt4aV09d2ksaWVbZmFdPXdvKTt2YXIgem89Z24ucnVuKEpvLHZvaWQgMCxJbyYmSm8hPT1EbyYmSm8hPT1obz9bXTpbd2ldKTtkaShpZSwhMCx6byl9Y2F0Y2goWWEpe2RpKGllLCExLFlhKX19LGllKX12YXIgbm49ImZ1bmN0aW9uIFpvbmVBd2FyZVByb21pc2UoKSB7IFtuYXRpdmUgY29kZV0gfSIsQnQ9ZnVuY3Rpb24oKXt9LHp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRWUoZ24pe3ZhciBpZT10aGlzO2lmKCEoaWUgaW5zdGFuY2VvZiBFZSkpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGFuIGluc3RhbmNlb2YgUHJvbWlzZS4iKTtpZVtNbl09Sm4saWVbZW5dPVtdO3RyeXtnbiYmZ24oRXMoaWUsRmwpLEVzKGllLHBpKSl9Y2F0Y2gocG4pe2RpKGllLCExLHBuKX19cmV0dXJuIEVlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIG5ufSxFZS5yZXNvbHZlPWZ1bmN0aW9uKGduKXtyZXR1cm4gZGkobmV3IHRoaXMobnVsbCksRmwsZ24pfSxFZS5yZWplY3Q9ZnVuY3Rpb24oZ24pe3JldHVybiBkaShuZXcgdGhpcyhudWxsKSxwaSxnbil9LEVlLnJhY2U9ZnVuY3Rpb24oZ24pe3ZhciBpZSxwbixibz1uZXcgdGhpcyhmdW5jdGlvbihZYSxMYyl7aWU9WWEscG49TGN9KTtmdW5jdGlvbiB3byhZYSl7aWUoWWEpfWZ1bmN0aW9uIEpvKFlhKXtwbihZYSl9Zm9yKHZhciB3aT0wLElvPWduO3dpPElvLmxlbmd0aDt3aSsrKXt2YXIgem89SW9bd2ldO25vKHpvKXx8KHpvPXRoaXMucmVzb2x2ZSh6bykpLHpvLnRoZW4od28sSm8pfXJldHVybiBib30sRWUuYWxsPWZ1bmN0aW9uKGduKXtyZXR1cm4gRWUuYWxsV2l0aENhbGxiYWNrKGduKX0sRWUuYWxsU2V0dGxlZD1mdW5jdGlvbihnbil7dmFyIGllPXRoaXMmJnRoaXMucHJvdG90eXBlIGluc3RhbmNlb2YgRWU/dGhpczpFZTtyZXR1cm4gaWUuYWxsV2l0aENhbGxiYWNrKGduLHt0aGVuQ2FsbGJhY2s6ZnVuY3Rpb24ocG4pe3JldHVybntzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6cG59fSxlcnJvckNhbGxiYWNrOmZ1bmN0aW9uKHBuKXtyZXR1cm57c3RhdHVzOiJyZWplY3RlZCIscmVhc29uOnBufX19KX0sRWUuYWxsV2l0aENhbGxiYWNrPWZ1bmN0aW9uKGduLGllKXtmb3IodmFyIHBuLGJvLHdvPW5ldyB0aGlzKGZ1bmN0aW9uKGtzLGRsKXtwbj1rcyxibz1kbH0pLEpvPTIsd2k9MCxJbz1bXSx6bz1mdW5jdGlvbihrcyl7bm8oa3MpfHwoa3M9WWEucmVzb2x2ZShrcykpO3ZhciBkbD13aTt0cnl7a3MudGhlbihmdW5jdGlvbihGZil7SW9bZGxdPWllP2llLnRoZW5DYWxsYmFjayhGZik6RmYsSm8tLSxKbz09PTAmJnBuKElvKX0sZnVuY3Rpb24oRmYpe2llPyhJb1tkbF09aWUuZXJyb3JDYWxsYmFjayhGZiksSm8tLSxKbz09PTAmJnBuKElvKSk6Ym8oRmYpfSl9Y2F0Y2goRmYpe2JvKEZmKX1KbysrLHdpKyt9LFlhPXRoaXMsTGM9MCxnYj1nbjtMYzxnYi5sZW5ndGg7TGMrKyl7dmFyIEJtPWdiW0xjXTt6byhCbSl9cmV0dXJuIEpvLT0yLEpvPT09MCYmcG4oSW8pLHdvfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoRWUucHJvdG90eXBlLFN5bWJvbC50b1N0cmluZ1RhZyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIlByb21pc2UifSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFZS5wcm90b3R5cGUsU3ltYm9sLnNwZWNpZXMse2dldDpmdW5jdGlvbigpe3JldHVybiBFZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxFZS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihnbixpZSl7dmFyIHBuPXRoaXMuY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdOyghcG58fHR5cGVvZiBwbiE9ImZ1bmN0aW9uIikmJihwbj10aGlzLmNvbnN0cnVjdG9yfHxFZSk7dmFyIGJvPW5ldyBwbihCdCksd289bXQuY3VycmVudDtyZXR1cm4gdGhpc1tNbl09PUpuP3RoaXNbZW5dLnB1c2god28sYm8sZ24saWUpOnZpKHRoaXMsd28sYm8sZ24saWUpLGJvfSxFZS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZ24pe3JldHVybiB0aGlzLnRoZW4obnVsbCxnbil9LEVlLnByb3RvdHlwZS5maW5hbGx5PWZ1bmN0aW9uKGduKXt2YXIgaWU9dGhpcy5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc107KCFpZXx8dHlwZW9mIGllIT0iZnVuY3Rpb24iKSYmKGllPUVlKTt2YXIgcG49bmV3IGllKEJ0KTtwbltraV09a2k7dmFyIGJvPW10LmN1cnJlbnQ7cmV0dXJuIHRoaXNbTW5dPT1Kbj90aGlzW2VuXS5wdXNoKGJvLHBuLGduLGduKTp2aSh0aGlzLGJvLHBuLGduLGduKSxwbn0sRWV9KCk7enQucmVzb2x2ZT16dC5yZXNvbHZlLHp0LnJlamVjdD16dC5yZWplY3QsenQucmFjZT16dC5yYWNlLHp0LmFsbD16dC5hbGw7dmFyIGVlPUtbeGVdPUsuUHJvbWlzZTtLLlByb21pc2U9enQ7dmFyIG9vPUNlKCJ0aGVuUGF0Y2hlZCIpO2Z1bmN0aW9uIEFhKEVlKXt2YXIgZ249RWUucHJvdG90eXBlLGllPU10KGduLCJ0aGVuIik7aWYoIShpZSYmKGllLndyaXRhYmxlPT09ITF8fCFpZS5jb25maWd1cmFibGUpKSl7dmFyIHBuPWduLnRoZW47Z25bUWVdPXBuLEVlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGJvLHdvKXt2YXIgSm89dGhpcyx3aT1uZXcgenQoZnVuY3Rpb24oSW8sem8pe3BuLmNhbGwoSm8sSW8sem8pfSk7cmV0dXJuIHdpLnRoZW4oYm8sd28pfSxFZVtvb109ITB9fWR0LnBhdGNoVGhlbj1BYTtmdW5jdGlvbiB0XyhFZSl7cmV0dXJuIGZ1bmN0aW9uKGduLGllKXt2YXIgcG49RWUuYXBwbHkoZ24saWUpO2lmKHBuIGluc3RhbmNlb2YgenQpcmV0dXJuIHBuO3ZhciBibz1wbi5jb25zdHJ1Y3RvcjtyZXR1cm4gYm9bb29dfHxBYShibykscG59fXJldHVybiBlZSYmKEFhKGVlKSxndChLLCJmZXRjaCIsZnVuY3Rpb24oRWUpe3JldHVybiB0XyhFZSl9KSksUHJvbWlzZVttdC5fX3N5bWJvbF9fKCJ1bmNhdWdodFByb21pc2VFcnJvcnMiKV09WWUsenR9KTtab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLGZ1bmN0aW9uKEspe3ZhciBtdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsZHQ9TSgiT3JpZ2luYWxEZWxlZ2F0ZSIpLE10PU0oIlByb21pc2UiKSxBdD1NKCJFcnJvciIpLFp0PWZ1bmN0aW9uKCl7aWYodHlwZW9mIHRoaXM9PSJmdW5jdGlvbiIpe3ZhciB4ZT10aGlzW2R0XTtpZih4ZSlyZXR1cm4gdHlwZW9mIHhlPT0iZnVuY3Rpb24iP210LmNhbGwoeGUpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4ZSk7aWYodGhpcz09PVByb21pc2Upe3ZhciBRZT1LW010XTtpZihRZSlyZXR1cm4gbXQuY2FsbChRZSl9aWYodGhpcz09PUVycm9yKXt2YXIgR2U9S1tBdF07aWYoR2UpcmV0dXJuIG10LmNhbGwoR2UpfX1yZXR1cm4gbXQuY2FsbCh0aGlzKX07WnRbZHRdPW10LEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1adDt2YXIgQ2U9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxZZT0iW29iamVjdCBQcm9taXNlXSI7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgUHJvbWlzZT09ImZ1bmN0aW9uIiYmdGhpcyBpbnN0YW5jZW9mIFByb21pc2U/WWU6Q2UuY2FsbCh0aGlzKX19KTt2YXIgTHQ9ITE7aWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCIpdHJ5e3ZhciBQbj1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXtMdD0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsUG4sUG4pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixQbixQbil9Y2F0Y2goSyl7THQ9ITF9dmFyIFZlPXt1c2VHOiEwfSxEZT17fSxxdD17fSxMZT1uZXcgUmVnRXhwKCJeIitwKyIoXFx3KykodHJ1ZXxmYWxzZSkkIiksSGU9TSgicHJvcGFnYXRpb25TdG9wcGVkIik7ZnVuY3Rpb24gaHQoSyxtdCl7dmFyIGR0PShtdD9tdChLKTpLKStmLE10PShtdD9tdChLKTpLKSttLEF0PXArZHQsWnQ9cCtNdDtEZVtLXT17fSxEZVtLXVtmXT1BdCxEZVtLXVttXT1adH1mdW5jdGlvbiBSZShLLG10LGR0KXt2YXIgTXQ9ZHQmJmR0LmFkZHx8cixBdD1kdCYmZHQucm18fHMsWnQ9ZHQmJmR0Lmxpc3RlbmVyc3x8ImV2ZW50TGlzdGVuZXJzIixDZT1kdCYmZHQucm1BbGx8fCJyZW1vdmVBbGxMaXN0ZW5lcnMiLFllPU0oTXQpLGhuPSIuIitNdCsiOiIseGU9InByZXBlbmRMaXN0ZW5lciIsUWU9Ii4iK3hlKyI6IixHZT1mdW5jdGlvbihNbixlbixraSl7aWYoIU1uLmlzUmVtb3ZlZCl7dmFyIHhpPU1uLmNhbGxiYWNrO3R5cGVvZiB4aT09Im9iamVjdCImJnhpLmhhbmRsZUV2ZW50JiYoTW4uY2FsbGJhY2s9ZnVuY3Rpb24oSm4pe3JldHVybiB4aS5oYW5kbGVFdmVudChKbil9LE1uLm9yaWdpbmFsRGVsZWdhdGU9eGkpLE1uLmludm9rZShNbixlbixba2ldKTt2YXIgZmE9TW4ub3B0aW9ucztpZihmYSYmdHlwZW9mIGZhPT0ib2JqZWN0IiYmZmEub25jZSl7dmFyIHBhPU1uLm9yaWdpbmFsRGVsZWdhdGU/TW4ub3JpZ2luYWxEZWxlZ2F0ZTpNbi5jYWxsYmFjaztlbltBdF0uY2FsbChlbixraS50eXBlLHBhLGZhKX19fSxfbj1mdW5jdGlvbihNbil7aWYoTW49TW58fEsuZXZlbnQsISFNbil7dmFyIGVuPXRoaXN8fE1uLnRhcmdldHx8SyxraT1lbltEZVtNbi50eXBlXVtmXV07aWYoa2kpaWYoa2kubGVuZ3RoPT09MSlHZShraVswXSxlbixNbik7ZWxzZSBmb3IodmFyIHhpPWtpLnNsaWNlKCksZmE9MDtmYTx4aS5sZW5ndGgmJiEoTW4mJk1uW0hlXT09PSEwKTtmYSsrKUdlKHhpW2ZhXSxlbixNbil9fSxzbz1mdW5jdGlvbihNbil7aWYoTW49TW58fEsuZXZlbnQsISFNbil7dmFyIGVuPXRoaXN8fE1uLnRhcmdldHx8SyxraT1lbltEZVtNbi50eXBlXVttXV07aWYoa2kpaWYoa2kubGVuZ3RoPT09MSlHZShraVswXSxlbixNbik7ZWxzZSBmb3IodmFyIHhpPWtpLnNsaWNlKCksZmE9MDtmYTx4aS5sZW5ndGgmJiEoTW4mJk1uW0hlXT09PSEwKTtmYSsrKUdlKHhpW2ZhXSxlbixNbil9fTtmdW5jdGlvbiBubyhNbixlbil7aWYoIU1uKXJldHVybiExO3ZhciBraT0hMDtlbiYmZW4udXNlRyE9PXZvaWQgMCYmKGtpPWVuLnVzZUcpO3ZhciB4aT1lbiYmZW4udmgsZmE9ITA7ZW4mJmVuLmNoa0R1cCE9PXZvaWQgMCYmKGZhPWVuLmNoa0R1cCk7dmFyIHBhPSExO2VuJiZlbi5ydCE9PXZvaWQgMCYmKHBhPWVuLnJ0KTtmb3IodmFyIEpuPU1uO0puJiYhSm4uaGFzT3duUHJvcGVydHkoTXQpOylKbj1vKEpuKTtpZighSm4mJk1uW010XSYmKEpuPU1uKSwhSm58fEpuW1llXSlyZXR1cm4hMTt2YXIgRmw9ZW4mJmVuLmV2ZW50TmFtZVRvU3RyaW5nLHBpPXt9LEZjPUpuW1llXT1KbltNdF0sRXM9Sm5bTShBdCldPUpuW0F0XSx2bz1KbltNKFp0KV09Sm5bWnRdLFVpPUpuW00oQ2UpXT1KbltDZV0sZm87ZW4mJmVuLnByZXBlbmQmJihmbz1KbltNKGVuLnByZXBlbmQpXT1Kbltlbi5wcmVwZW5kXSk7ZnVuY3Rpb24gZGkoaWUscG4pe3JldHVybiFMdCYmdHlwZW9mIGllPT0ib2JqZWN0IiYmaWU/ISFpZS5jYXB0dXJlOiFMdHx8IXBuP2llOnR5cGVvZiBpZT09ImJvb2xlYW4iP3tjYXB0dXJlOmllLHBhc3NpdmU6ITB9OmllP3R5cGVvZiBpZT09Im9iamVjdCImJmllLnBhc3NpdmUhPT0hMT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saWUpLHtwYXNzaXZlOiEwfSk6aWU6e3Bhc3NpdmU6ITB9fXZhciBnZz1mdW5jdGlvbihpZSl7aWYoIXBpLmlzRXhpc3RpbmcpcmV0dXJuIEZjLmNhbGwocGkudGFyZ2V0LHBpLmV2ZW50TmFtZSxwaS5jYXB0dXJlP3NvOl9uLHBpLm9wdGlvbnMpfSxIZj1mdW5jdGlvbihpZSl7aWYoIWllLmlzUmVtb3ZlZCl7dmFyIHBuPURlW2llLmV2ZW50TmFtZV0sYm89dm9pZCAwO3BuJiYoYm89cG5baWUuY2FwdHVyZT9tOmZdKTt2YXIgd289Ym8mJmllLnRhcmdldFtib107aWYod28pZm9yKHZhciBKbz0wO0pvPHdvLmxlbmd0aDtKbysrKXt2YXIgd2k9d29bSm9dO2lmKHdpPT09aWUpe3dvLnNwbGljZShKbywxKSxpZS5pc1JlbW92ZWQ9ITAsd28ubGVuZ3RoPT09MCYmKGllLmFsbFJlbW92ZWQ9ITAsaWUudGFyZ2V0W2JvXT1udWxsKTticmVha319fWlmKCEhaWUuYWxsUmVtb3ZlZClyZXR1cm4gRXMuY2FsbChpZS50YXJnZXQsaWUuZXZlbnROYW1lLGllLmNhcHR1cmU/c286X24saWUub3B0aW9ucyl9LHZpPWZ1bmN0aW9uKGllKXtyZXR1cm4gRmMuY2FsbChwaS50YXJnZXQscGkuZXZlbnROYW1lLGllLmludm9rZSxwaS5vcHRpb25zKX0sbm49ZnVuY3Rpb24oaWUpe3JldHVybiBmby5jYWxsKHBpLnRhcmdldCxwaS5ldmVudE5hbWUsaWUuaW52b2tlLHBpLm9wdGlvbnMpfSxCdD1mdW5jdGlvbihpZSl7cmV0dXJuIEVzLmNhbGwoaWUudGFyZ2V0LGllLmV2ZW50TmFtZSxpZS5pbnZva2UsaWUub3B0aW9ucyl9LHp0PWtpP2dnOnZpLGVlPWtpP0hmOkJ0LG9vPWZ1bmN0aW9uKGllLHBuKXt2YXIgYm89dHlwZW9mIHBuO3JldHVybiBibz09PSJmdW5jdGlvbiImJmllLmNhbGxiYWNrPT09cG58fGJvPT09Im9iamVjdCImJmllLm9yaWdpbmFsRGVsZWdhdGU9PT1wbn0sQWE9ZW4mJmVuLmRpZmY/ZW4uZGlmZjpvbyx0Xz1ab25lW00oIlVOUEFUQ0hFRF9FVkVOVFMiKV0sRWU9S1tNKCJQQVNTSVZFX0VWRU5UUyIpXSxnbj1mdW5jdGlvbihpZSxwbixibyx3byxKbyx3aSl7cmV0dXJuIEpvPT09dm9pZCAwJiYoSm89ITEpLHdpPT09dm9pZCAwJiYod2k9ITEpLGZ1bmN0aW9uKCl7dmFyIElvPXRoaXN8fEssem89YXJndW1lbnRzWzBdO2VuJiZlbi50cmFuc2ZlckV2ZW50TmFtZSYmKHpvPWVuLnRyYW5zZmVyRXZlbnROYW1lKHpvKSk7dmFyIFlhPWFyZ3VtZW50c1sxXTtpZighWWEpcmV0dXJuIGllLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihqdCYmem89PT0idW5jYXVnaHRFeGNlcHRpb24iKXJldHVybiBpZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIExjPSExO2lmKHR5cGVvZiBZYSE9ImZ1bmN0aW9uIil7aWYoIVlhLmhhbmRsZUV2ZW50KXJldHVybiBpZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7TGM9ITB9aWYoISh4aSYmIXhpKGllLFlhLElvLGFyZ3VtZW50cykpKXt2YXIgZ2I9THQmJiEhRWUmJkVlLmluZGV4T2Yoem8pIT09LTEsQm09ZGkoYXJndW1lbnRzWzJdLGdiKTtpZih0Xyl7Zm9yKHZhciBrcz0wO2tzPHRfLmxlbmd0aDtrcysrKWlmKHpvPT09dF9ba3NdKXJldHVybiBnYj9pZS5jYWxsKElvLHpvLFlhLEJtKTppZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGRsPUJtP3R5cGVvZiBCbT09ImJvb2xlYW4iPyEwOkJtLmNhcHR1cmU6ITEsRmY9Qm0mJnR5cGVvZiBCbT09Im9iamVjdCI/Qm0ub25jZTohMSxPX3Q9Wm9uZS5jdXJyZW50LE83PURlW3pvXTtPN3x8KGh0KHpvLEZsKSxPNz1EZVt6b10pO3ZhciBxWj1PN1tkbD9tOmZdLFgxPUlvW3FaXSxaWj0hMTtpZihYMSl7aWYoWlo9ITAsZmEpe2Zvcih2YXIga3M9MDtrczxYMS5sZW5ndGg7a3MrKylpZihBYShYMVtrc10sWWEpKXJldHVybn19ZWxzZSBYMT1Jb1txWl09W107dmFyIEo0LFhaPUlvLmNvbnN0cnVjdG9yLm5hbWUsUVo9cXRbWFpdO1FaJiYoSjQ9UVpbem9dKSxKNHx8KEo0PVhaK3BuKyhGbD9GbCh6byk6em8pKSxwaS5vcHRpb25zPUJtLEZmJiYocGkub3B0aW9ucy5vbmNlPSExKSxwaS50YXJnZXQ9SW8scGkuY2FwdHVyZT1kbCxwaS5ldmVudE5hbWU9em8scGkuaXNFeGlzdGluZz1aWjt2YXIgVVM9a2k/VmU6dm9pZCAwO1VTJiYoVVMudGFza0RhdGE9cGkpO3ZhciB0eT1PX3Quc2NoZWR1bGVFdmVudFRhc2soSjQsWWEsVVMsYm8sd28pO2lmKHBpLnRhcmdldD1udWxsLFVTJiYoVVMudGFza0RhdGE9bnVsbCksRmYmJihCbS5vbmNlPSEwKSwhTHQmJnR5cGVvZiB0eS5vcHRpb25zPT0iYm9vbGVhbiJ8fCh0eS5vcHRpb25zPUJtKSx0eS50YXJnZXQ9SW8sdHkuY2FwdHVyZT1kbCx0eS5ldmVudE5hbWU9em8sTGMmJih0eS5vcmlnaW5hbERlbGVnYXRlPVlhKSx3aT9YMS51bnNoaWZ0KHR5KTpYMS5wdXNoKHR5KSxKbylyZXR1cm4gSW99fX07cmV0dXJuIEpuW010XT1nbihGYyxobix6dCxlZSxwYSksZm8mJihKblt4ZV09Z24oZm8sUWUsbm4sZWUscGEsITApKSxKbltBdF09ZnVuY3Rpb24oKXt2YXIgaWU9dGhpc3x8Syxwbj1hcmd1bWVudHNbMF07ZW4mJmVuLnRyYW5zZmVyRXZlbnROYW1lJiYocG49ZW4udHJhbnNmZXJFdmVudE5hbWUocG4pKTt2YXIgYm89YXJndW1lbnRzWzJdLHdvPWJvP3R5cGVvZiBibz09ImJvb2xlYW4iPyEwOmJvLmNhcHR1cmU6ITEsSm89YXJndW1lbnRzWzFdO2lmKCFKbylyZXR1cm4gRXMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCEoeGkmJiF4aShFcyxKbyxpZSxhcmd1bWVudHMpKSl7dmFyIHdpPURlW3BuXSxJbzt3aSYmKElvPXdpW3dvP206Zl0pO3ZhciB6bz1JbyYmaWVbSW9dO2lmKHpvKWZvcih2YXIgWWE9MDtZYTx6by5sZW5ndGg7WWErKyl7dmFyIExjPXpvW1lhXTtpZihBYShMYyxKbykpe2lmKHpvLnNwbGljZShZYSwxKSxMYy5pc1JlbW92ZWQ9ITAsem8ubGVuZ3RoPT09MCYmKExjLmFsbFJlbW92ZWQ9ITAsaWVbSW9dPW51bGwsdHlwZW9mIHBuPT0ic3RyaW5nIikpe3ZhciBnYj1wKyJPTl9QUk9QRVJUWSIrcG47aWVbZ2JdPW51bGx9cmV0dXJuIExjLnpvbmUuY2FuY2VsVGFzayhMYykscGE/aWU6dm9pZCAwfX1yZXR1cm4gRXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sSm5bWnRdPWZ1bmN0aW9uKCl7dmFyIGllPXRoaXN8fEsscG49YXJndW1lbnRzWzBdO2VuJiZlbi50cmFuc2ZlckV2ZW50TmFtZSYmKHBuPWVuLnRyYW5zZmVyRXZlbnROYW1lKHBuKSk7Zm9yKHZhciBibz1bXSx3bz1mZShpZSxGbD9GbChwbik6cG4pLEpvPTA7Sm88d28ubGVuZ3RoO0pvKyspe3ZhciB3aT13b1tKb10sSW89d2kub3JpZ2luYWxEZWxlZ2F0ZT93aS5vcmlnaW5hbERlbGVnYXRlOndpLmNhbGxiYWNrO2JvLnB1c2goSW8pfXJldHVybiBib30sSm5bQ2VdPWZ1bmN0aW9uKCl7dmFyIGllPXRoaXN8fEsscG49YXJndW1lbnRzWzBdO2lmKHBuKXtlbiYmZW4udHJhbnNmZXJFdmVudE5hbWUmJihwbj1lbi50cmFuc2ZlckV2ZW50TmFtZShwbikpO3ZhciB6bz1EZVtwbl07aWYoem8pe3ZhciBZYT16b1tmXSxMYz16b1ttXSxnYj1pZVtZYV0sQm09aWVbTGNdO2lmKGdiKWZvcih2YXIga3M9Z2Iuc2xpY2UoKSx3bz0wO3dvPGtzLmxlbmd0aDt3bysrKXt2YXIgZGw9a3Nbd29dLEZmPWRsLm9yaWdpbmFsRGVsZWdhdGU/ZGwub3JpZ2luYWxEZWxlZ2F0ZTpkbC5jYWxsYmFjazt0aGlzW0F0XS5jYWxsKHRoaXMscG4sRmYsZGwub3B0aW9ucyl9aWYoQm0pZm9yKHZhciBrcz1CbS5zbGljZSgpLHdvPTA7d288a3MubGVuZ3RoO3dvKyspe3ZhciBkbD1rc1t3b10sRmY9ZGwub3JpZ2luYWxEZWxlZ2F0ZT9kbC5vcmlnaW5hbERlbGVnYXRlOmRsLmNhbGxiYWNrO3RoaXNbQXRdLmNhbGwodGhpcyxwbixGZixkbC5vcHRpb25zKX19fWVsc2V7Zm9yKHZhciBibz1PYmplY3Qua2V5cyhpZSksd289MDt3bzxiby5sZW5ndGg7d28rKyl7dmFyIEpvPWJvW3dvXSx3aT1MZS5leGVjKEpvKSxJbz13aSYmd2lbMV07SW8mJklvIT09InJlbW92ZUxpc3RlbmVyIiYmdGhpc1tDZV0uY2FsbCh0aGlzLElvKX10aGlzW0NlXS5jYWxsKHRoaXMsInJlbW92ZUxpc3RlbmVyIil9aWYocGEpcmV0dXJuIHRoaXN9LFJ0KEpuW010XSxGYyksUnQoSm5bQXRdLEVzKSxVaSYmUnQoSm5bQ2VdLFVpKSx2byYmUnQoSm5bWnRdLHZvKSwhMH1mb3IodmFyIGhvPVtdLERvPTA7RG88bXQubGVuZ3RoO0RvKyspaG9bRG9dPW5vKG10W0RvXSxkdCk7cmV0dXJuIGhvfWZ1bmN0aW9uIGZlKEssbXQpe2lmKCFtdCl7dmFyIGR0PVtdO2Zvcih2YXIgTXQgaW4gSyl7dmFyIEF0PUxlLmV4ZWMoTXQpLFp0PUF0JiZBdFsxXTtpZihadCYmKCFtdHx8WnQ9PT1tdCkpe3ZhciBDZT1LW010XTtpZihDZSlmb3IodmFyIFllPTA7WWU8Q2UubGVuZ3RoO1llKyspZHQucHVzaChDZVtZZV0pfX1yZXR1cm4gZHR9dmFyIGhuPURlW210XTtobnx8KGh0KG10KSxobj1EZVttdF0pO3ZhciB4ZT1LW2huW2ZdXSxRZT1LW2huW21dXTtyZXR1cm4geGU/UWU/eGUuY29uY2F0KFFlKTp4ZS5zbGljZSgpOlFlP1FlLnNsaWNlKCk6W119ZnVuY3Rpb24gVWUoSyxtdCl7dmFyIGR0PUsuRXZlbnQ7ZHQmJmR0LnByb3RvdHlwZSYmbXQucGF0Y2hNZXRob2QoZHQucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLGZ1bmN0aW9uKE10KXtyZXR1cm4gZnVuY3Rpb24oQXQsWnQpe0F0W0hlXT0hMCxNdCYmTXQuYXBwbHkoQXQsWnQpfX0pfWZ1bmN0aW9uIEZlKEssbXQsZHQsTXQsQXQpe3ZhciBadD1ab25lLl9fc3ltYm9sX18oTXQpO2lmKCFtdFtadF0pe3ZhciBDZT1tdFtadF09bXRbTXRdO210W010XT1mdW5jdGlvbihZZSxobix4ZSl7cmV0dXJuIGhuJiZobi5wcm90b3R5cGUmJkF0LmZvckVhY2goZnVuY3Rpb24oUWUpe3ZhciBHZT1kdCsiLiIrTXQrIjo6IitRZSxfbj1obi5wcm90b3R5cGU7aWYoX24uaGFzT3duUHJvcGVydHkoUWUpKXt2YXIgc289Sy5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX24sUWUpO3NvJiZzby52YWx1ZT8oc28udmFsdWU9Sy53cmFwV2l0aEN1cnJlbnRab25lKHNvLnZhbHVlLEdlKSxLLl9yZWRlZmluZVByb3BlcnR5KGhuLnByb3RvdHlwZSxRZSxzbykpOl9uW1FlXSYmKF9uW1FlXT1LLndyYXBXaXRoQ3VycmVudFpvbmUoX25bUWVdLEdlKSl9ZWxzZSBfbltRZV0mJihfbltRZV09Sy53cmFwV2l0aEN1cnJlbnRab25lKF9uW1FlXSxHZSkpfSksQ2UuY2FsbChtdCxZZSxobix4ZSl9LEsuYXR0YWNoT3JpZ2luVG9QYXRjaGVkKG10W010XSxDZSl9fXZhciBCbj1bImFib3J0IiwiYW5pbWF0aW9uY2FuY2VsIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYXV4Y2xpY2siLCJiZWZvcmVpbnB1dCIsImJsdXIiLCJjYW5jZWwiLCJjYW5wbGF5IiwiY2FucGxheXRocm91Z2giLCJjaGFuZ2UiLCJjb21wb3NpdGlvbnN0YXJ0IiwiY29tcG9zaXRpb251cGRhdGUiLCJjb21wb3NpdGlvbmVuZCIsImN1ZWNoYW5nZSIsImNsaWNrIiwiY2xvc2UiLCJjb250ZXh0bWVudSIsImN1cmVjaGFuZ2UiLCJkYmxjbGljayIsImRyYWciLCJkcmFnZW5kIiwiZHJhZ2VudGVyIiwiZHJhZ2V4aXQiLCJkcmFnbGVhdmUiLCJkcmFnb3ZlciIsImRyb3AiLCJkdXJhdGlvbmNoYW5nZSIsImVtcHRpZWQiLCJlbmRlZCIsImVycm9yIiwiZm9jdXMiLCJmb2N1c2luIiwiZm9jdXNvdXQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImlucHV0IiwiaW52YWxpZCIsImtleWRvd24iLCJrZXlwcmVzcyIsImtleXVwIiwibG9hZCIsImxvYWRzdGFydCIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsIm1vdXNlZG93biIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJtb3VzZW92ZXIiLCJtb3VzZXVwIiwibW91c2V3aGVlbCIsIm9yaWVudGF0aW9uY2hhbmdlIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInBvaW50ZXJjYW5jZWwiLCJwb2ludGVyZG93biIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsInBvaW50ZXJsb2NrY2hhbmdlIiwibW96cG9pbnRlcmxvY2tjaGFuZ2UiLCJ3ZWJraXRwb2ludGVybG9ja2VyY2hhbmdlIiwicG9pbnRlcmxvY2tlcnJvciIsIm1venBvaW50ZXJsb2NrZXJyb3IiLCJ3ZWJraXRwb2ludGVybG9ja2Vycm9yIiwicG9pbnRlcm1vdmUiLCJwb2ludG91dCIsInBvaW50ZXJvdmVyIiwicG9pbnRlcnVwIiwicHJvZ3Jlc3MiLCJyYXRlY2hhbmdlIiwicmVzZXQiLCJyZXNpemUiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic2VsZWN0Iiwic2VsZWN0aW9uY2hhbmdlIiwic2VsZWN0c3RhcnQiLCJzaG93Iiwic29ydCIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGltZXVwZGF0ZSIsInZvbHVtZWNoYW5nZSIsInRvdWNoY2FuY2VsIiwidG91Y2htb3ZlIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIiwidHJhbnNpdGlvbmNhbmNlbCIsInRyYW5zaXRpb25lbmQiLCJ3YWl0aW5nIiwid2hlZWwiXSx3bj1bImFmdGVyc2NyaXB0ZXhlY3V0ZSIsImJlZm9yZXNjcmlwdGV4ZWN1dGUiLCJET01Db250ZW50TG9hZGVkIiwiZnJlZXplIiwiZnVsbHNjcmVlbmNoYW5nZSIsIm1vemZ1bGxzY3JlZW5jaGFuZ2UiLCJ3ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiwibXNmdWxsc2NyZWVuY2hhbmdlIiwiZnVsbHNjcmVlbmVycm9yIiwibW96ZnVsbHNjcmVlbmVycm9yIiwid2Via2l0ZnVsbHNjcmVlbmVycm9yIiwibXNmdWxsc2NyZWVuZXJyb3IiLCJyZWFkeXN0YXRlY2hhbmdlIiwidmlzaWJpbGl0eWNoYW5nZSIsInJlc3VtZSJdLHFvPVsiYWJzb2x1dGVkZXZpY2VvcmllbnRhdGlvbiIsImFmdGVyaW5wdXQiLCJhZnRlcnByaW50IiwiYXBwaW5zdGFsbGVkIiwiYmVmb3JlaW5zdGFsbHByb21wdCIsImJlZm9yZXByaW50IiwiYmVmb3JldW5sb2FkIiwiZGV2aWNlbGlnaHQiLCJkZXZpY2Vtb3Rpb24iLCJkZXZpY2VvcmllbnRhdGlvbiIsImRldmljZW9yaWVudGF0aW9uYWJzb2x1dGUiLCJkZXZpY2Vwcm94aW1pdHkiLCJoYXNoY2hhbmdlIiwibGFuZ3VhZ2VjaGFuZ2UiLCJtZXNzYWdlIiwibW96YmVmb3JlcGFpbnQiLCJvZmZsaW5lIiwib25saW5lIiwicGFpbnQiLCJwYWdlc2hvdyIsInBhZ2VoaWRlIiwicG9wc3RhdGUiLCJyZWplY3Rpb25oYW5kbGVkIiwic3RvcmFnZSIsInVuaGFuZGxlZHJlamVjdGlvbiIsInVubG9hZCIsInVzZXJwcm94aW1pdHkiLCJ2cmRpc3BsYXljb25uZWN0ZWQiLCJ2cmRpc3BsYXlkaXNjb25uZWN0ZWQiLCJ2cmRpc3BsYXlwcmVzZW50Y2hhbmdlIl0sbWE9WyJiZWZvcmVjb3B5IiwiYmVmb3JlY3V0IiwiYmVmb3JlcGFzdGUiLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkcmFnc3RhcnQiLCJsb2FkZW5kIiwiYW5pbWF0aW9uc3RhcnQiLCJzZWFyY2giLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbnN0YXJ0Iiwid2Via2l0YW5pbWF0aW9uZW5kIiwid2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uIiwid2Via2l0YW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXR0cmFuc2l0aW9uZW5kIl0samk9WyJlbmNyeXB0ZWQiLCJ3YWl0aW5nZm9ya2V5IiwibXNuZWVka2V5IiwibW96aW50ZXJydXB0YmVnaW4iLCJtb3ppbnRlcnJ1cHRlbmQiXSxmdD1bImFjdGl2YXRlIiwiYWZ0ZXJ1cGRhdGUiLCJhcmlhcmVxdWVzdCIsImJlZm9yZWFjdGl2YXRlIiwiYmVmb3JlZGVhY3RpdmF0ZSIsImJlZm9yZWVkaXRmb2N1cyIsImJlZm9yZXVwZGF0ZSIsImNlbGxjaGFuZ2UiLCJjb250cm9sc2VsZWN0IiwiZGF0YWF2YWlsYWJsZSIsImRhdGFzZXRjaGFuZ2VkIiwiZGF0YXNldGNvbXBsZXRlIiwiZXJyb3J1cGRhdGUiLCJmaWx0ZXJjaGFuZ2UiLCJsYXlvdXRjb21wbGV0ZSIsImxvc2VjYXB0dXJlIiwibW92ZSIsIm1vdmVlbmQiLCJtb3Zlc3RhcnQiLCJwcm9wZXJ0eWNoYW5nZSIsInJlc2l6ZWVuZCIsInJlc2l6ZXN0YXJ0Iiwicm93ZW50ZXIiLCJyb3dleGl0Iiwicm93c2RlbGV0ZSIsInJvd3NpbnNlcnRlZCIsImNvbW1hbmQiLCJjb21wYXNzbmVlZHNjYWxpYnJhdGlvbiIsImRlYWN0aXZhdGUiLCJoZWxwIiwibXNjb250ZW50em9vbSIsIm1zbWFuaXB1bGF0aW9uc3RhdGVjaGFuZ2VkIiwibXNnZXN0dXJlY2hhbmdlIiwibXNnZXN0dXJlZG91YmxldGFwIiwibXNnZXN0dXJlZW5kIiwibXNnZXN0dXJlaG9sZCIsIm1zZ2VzdHVyZXN0YXJ0IiwibXNnZXN0dXJldGFwIiwibXNnb3Rwb2ludGVyY2FwdHVyZSIsIm1zaW5lcnRpYXN0YXJ0IiwibXNsb3N0cG9pbnRlcmNhcHR1cmUiLCJtc3BvaW50ZXJjYW5jZWwiLCJtc3BvaW50ZXJkb3duIiwibXNwb2ludGVyZW50ZXIiLCJtc3BvaW50ZXJob3ZlciIsIm1zcG9pbnRlcmxlYXZlIiwibXNwb2ludGVybW92ZSIsIm1zcG9pbnRlcm91dCIsIm1zcG9pbnRlcm92ZXIiLCJtc3BvaW50ZXJ1cCIsInBvaW50ZXJvdXQiLCJtc3NpdGVtb2RlanVtcGxpc3RpdGVtcmVtb3ZlZCIsIm1zdGh1bWJuYWlsY2xpY2siLCJzdG9wIiwic3RvcmFnZWNvbW1pdCJdLGl0PVsid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciJdLGdlPVsiYXV0b2NvbXBsZXRlIiwiYXV0b2NvbXBsZXRlZXJyb3IiXSxLZT1bInRvZ2dsZSJdLEhuPVsibG9hZCJdLGRlPVsiYmx1ciIsImVycm9yIiwiZm9jdXMiLCJsb2FkIiwicmVzaXplIiwic2Nyb2xsIiwibWVzc2FnZWVycm9yIl0sWG49WyJib3VuY2UiLCJmaW5pc2giLCJzdGFydCJdLFZuPVsibG9hZHN0YXJ0IiwicHJvZ3Jlc3MiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsInByb2dyZXNzIiwidGltZW91dCIsImxvYWRlbmQiLCJyZWFkeXN0YXRlY2hhbmdlIl0sdG49WyJ1cGdyYWRlbmVlZGVkIiwiY29tcGxldGUiLCJhYm9ydCIsInN1Y2Nlc3MiLCJlcnJvciIsImJsb2NrZWQiLCJ2ZXJzaW9uY2hhbmdlIiwiY2xvc2UiXSxjbj1bImNsb3NlIiwiZXJyb3IiLCJvcGVuIiwibWVzc2FnZSJdLHVvPVsiZXJyb3IiLCJtZXNzYWdlIl0seHQ9Qm4uY29uY2F0KGl0LGdlLEtlLHduLHFvLG1hLGZ0KTtmdW5jdGlvbiBBbihLLG10LGR0KXtpZighZHR8fGR0Lmxlbmd0aD09PTApcmV0dXJuIG10O3ZhciBNdD1kdC5maWx0ZXIoZnVuY3Rpb24oWnQpe3JldHVybiBadC50YXJnZXQ9PT1LfSk7aWYoIU10fHxNdC5sZW5ndGg9PT0wKXJldHVybiBtdDt2YXIgQXQ9TXRbMF0uaWdub3JlUHJvcGVydGllcztyZXR1cm4gbXQuZmlsdGVyKGZ1bmN0aW9uKFp0KXtyZXR1cm4gQXQuaW5kZXhPZihadCk9PT0tMX0pfWZ1bmN0aW9uIEJlKEssbXQsZHQsTXQpe2lmKCEhSyl7dmFyIEF0PUFuKEssbXQsZHQpO2J0KEssQXQsTXQpfX1mdW5jdGlvbiBybyhLLG10KXtpZighKGp0JiYhdykmJiFab25lW0suc3ltYm9sKCJwYXRjaEV2ZW50cyIpXSl7dmFyIGR0PXR5cGVvZiBXZWJTb2NrZXQhPSJ1bmRlZmluZWQiLE10PW10Ll9fWm9uZV9pZ25vcmVfb25fcHJvcGVydGllcztpZihrdCl7dmFyIEF0PXdpbmRvdyxadD1qZSgpP1t7dGFyZ2V0OkF0LGlnbm9yZVByb3BlcnRpZXM6WyJlcnJvciJdfV06W107QmUoQXQseHQuY29uY2F0KFsibWVzc2FnZWVycm9yIl0pLE10JiZNdC5jb25jYXQoWnQpLG8oQXQpKSxCZShEb2N1bWVudC5wcm90b3R5cGUseHQsTXQpLHR5cGVvZiBBdC5TVkdFbGVtZW50IT0idW5kZWZpbmVkIiYmQmUoQXQuU1ZHRWxlbWVudC5wcm90b3R5cGUseHQsTXQpLEJlKEVsZW1lbnQucHJvdG90eXBlLHh0LE10KSxCZShIVE1MRWxlbWVudC5wcm90b3R5cGUseHQsTXQpLEJlKEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlLGppLE10KSxCZShIVE1MRnJhbWVTZXRFbGVtZW50LnByb3RvdHlwZSxxby5jb25jYXQoZGUpLE10KSxCZShIVE1MQm9keUVsZW1lbnQucHJvdG90eXBlLHFvLmNvbmNhdChkZSksTXQpLEJlKEhUTUxGcmFtZUVsZW1lbnQucHJvdG90eXBlLEhuLE10KSxCZShIVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGUsSG4sTXQpO3ZhciBDZT1BdC5IVE1MTWFycXVlZUVsZW1lbnQ7Q2UmJkJlKENlLnByb3RvdHlwZSxYbixNdCk7dmFyIFllPUF0LldvcmtlcjtZZSYmQmUoWWUucHJvdG90eXBlLHVvLE10KX12YXIgaG49bXQuWE1MSHR0cFJlcXVlc3Q7aG4mJkJlKGhuLnByb3RvdHlwZSxWbixNdCk7dmFyIHhlPW10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7eGUmJkJlKHhlJiZ4ZS5wcm90b3R5cGUsVm4sTXQpLHR5cGVvZiBJREJJbmRleCE9InVuZGVmaW5lZCImJihCZShJREJJbmRleC5wcm90b3R5cGUsdG4sTXQpLEJlKElEQlJlcXVlc3QucHJvdG90eXBlLHRuLE10KSxCZShJREJPcGVuREJSZXF1ZXN0LnByb3RvdHlwZSx0bixNdCksQmUoSURCRGF0YWJhc2UucHJvdG90eXBlLHRuLE10KSxCZShJREJUcmFuc2FjdGlvbi5wcm90b3R5cGUsdG4sTXQpLEJlKElEQkN1cnNvci5wcm90b3R5cGUsdG4sTXQpKSxkdCYmQmUoV2ViU29ja2V0LnByb3RvdHlwZSxjbixNdCl9fVpvbmUuX19sb2FkX3BhdGNoKCJ1dGlsIixmdW5jdGlvbihLLG10LGR0KXtkdC5wYXRjaE9uUHJvcGVydGllcz1idCxkdC5wYXRjaE1ldGhvZD1ndCxkdC5iaW5kQXJndW1lbnRzPWosZHQucGF0Y2hNYWNyb1Rhc2s9V3Q7dmFyIE10PW10Ll9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKSxBdD1tdC5fX3N5bWJvbF9fKCJVTlBBVENIRURfRVZFTlRTIik7S1tBdF0mJihLW010XT1LW0F0XSksS1tNdF0mJihtdFtNdF09bXRbQXRdPUtbTXRdKSxkdC5wYXRjaEV2ZW50UHJvdG90eXBlPVVlLGR0LnBhdGNoRXZlbnRUYXJnZXQ9UmUsZHQuaXNJRU9yRWRnZT1jZSxkdC5PYmplY3REZWZpbmVQcm9wZXJ0eT1lLGR0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcj10LGR0Lk9iamVjdENyZWF0ZT1pLGR0LkFycmF5U2xpY2U9YSxkdC5wYXRjaENsYXNzPXV0LGR0LndyYXBXaXRoQ3VycmVudFpvbmU9ZyxkdC5maWx0ZXJQcm9wZXJ0aWVzPUFuLGR0LmF0dGFjaE9yaWdpblRvUGF0Y2hlZD1SdCxkdC5fcmVkZWZpbmVQcm9wZXJ0eT1PYmplY3QuZGVmaW5lUHJvcGVydHksZHQucGF0Y2hDYWxsYmFja3M9RmUsZHQuZ2V0R2xvYmFsT2JqZWN0cz1mdW5jdGlvbigpe3JldHVybntnbG9iYWxTb3VyY2VzOnF0LHpvbmVTeW1ib2xFdmVudE5hbWVzOkRlLGV2ZW50TmFtZXM6eHQsaXNCcm93c2VyOmt0LGlzTWl4OncsaXNOb2RlOmp0LFRSVUVfU1RSOm0sRkFMU0VfU1RSOmYsWk9ORV9TWU1CT0xfUFJFRklYOnAsQUREX0VWRU5UX0xJU1RFTkVSX1NUUjpyLFJFTU9WRV9FVkVOVF9MSVNURU5FUl9TVFI6c319fSk7dmFyIGhlLHFuLFpvLFRhLHRzO2Z1bmN0aW9uIHNyKCl7aGU9Wm9uZS5fX3N5bWJvbF9fLHFuPU9iamVjdFtoZSgiZGVmaW5lUHJvcGVydHkiKV09T2JqZWN0LmRlZmluZVByb3BlcnR5LFpvPU9iamVjdFtoZSgiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIildPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsVGE9T2JqZWN0LmNyZWF0ZSx0cz1oZSgidW5jb25maWd1cmFibGVzIiksT2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKEssbXQsZHQpe2lmKCRoKEssbXQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhc3NpZ24gdG8gcmVhZCBvbmx5IHByb3BlcnR5ICciK210KyInIG9mICIrSyk7dmFyIE10PWR0LmNvbmZpZ3VyYWJsZTtyZXR1cm4gbXQhPT0icHJvdG90eXBlIiYmKGR0PSRQKEssbXQsZHQpKSxRNChLLG10LGR0LE10KX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9ZnVuY3Rpb24oSyxtdCl7cmV0dXJuIE9iamVjdC5rZXlzKG10KS5mb3JFYWNoKGZ1bmN0aW9uKGR0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoSyxkdCxtdFtkdF0pfSksS30sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbihLLG10KXtyZXR1cm4gdHlwZW9mIG10PT0ib2JqZWN0IiYmIU9iamVjdC5pc0Zyb3plbihtdCkmJk9iamVjdC5rZXlzKG10KS5mb3JFYWNoKGZ1bmN0aW9uKGR0KXttdFtkdF09JFAoSyxkdCxtdFtkdF0pfSksVGEoSyxtdCl9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9ZnVuY3Rpb24oSyxtdCl7dmFyIGR0PVpvKEssbXQpO3JldHVybiBkdCYmJGgoSyxtdCkmJihkdC5jb25maWd1cmFibGU9ITEpLGR0fX1mdW5jdGlvbiBKaChLLG10LGR0KXt2YXIgTXQ9ZHQuY29uZmlndXJhYmxlO3JldHVybiBkdD0kUChLLG10LGR0KSxRNChLLG10LGR0LE10KX1mdW5jdGlvbiAkaChLLG10KXtyZXR1cm4gSyYmS1t0c10mJktbdHNdW210XX1mdW5jdGlvbiAkUChLLG10LGR0KXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKGR0KXx8KGR0LmNvbmZpZ3VyYWJsZT0hMCksZHQuY29uZmlndXJhYmxlfHwoIUtbdHNdJiYhT2JqZWN0LmlzRnJvemVuKEspJiZxbihLLHRzLHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLEtbdHNdJiYoS1t0c11bbXRdPSEwKSksZHR9ZnVuY3Rpb24gUTQoSyxtdCxkdCxNdCl7dHJ5e3JldHVybiBxbihLLG10LGR0KX1jYXRjaChDZSl7aWYoZHQuY29uZmlndXJhYmxlKXt0eXBlb2YgTXQ9PSJ1bmRlZmluZWQiP2RlbGV0ZSBkdC5jb25maWd1cmFibGU6ZHQuY29uZmlndXJhYmxlPU10O3RyeXtyZXR1cm4gcW4oSyxtdCxkdCl9Y2F0Y2goWWUpe3ZhciBBdD0hMTtpZigobXQ9PT0iY3JlYXRlZENhbGxiYWNrInx8bXQ9PT0iYXR0YWNoZWRDYWxsYmFjayJ8fG10PT09ImRldGFjaGVkQ2FsbGJhY2sifHxtdD09PSJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siKSYmKEF0PSEwKSwhQXQpdGhyb3cgWWU7dmFyIFp0PW51bGw7dHJ5e1p0PUpTT04uc3RyaW5naWZ5KGR0KX1jYXRjaChobil7WnQ9ZHQudG9TdHJpbmcoKX1jb25zb2xlLmxvZygiQXR0ZW1wdGluZyB0byBjb25maWd1cmUgJyIrbXQrIicgd2l0aCBkZXNjcmlwdG9yICciK1p0KyInIG9uIG9iamVjdCAnIitLKyInIGFuZCBnb3QgZXJyb3IsIGdpdmluZyB1cDogIitZZSl9fWVsc2UgdGhyb3cgQ2V9fWZ1bmN0aW9uIGpTKEssbXQpe3ZhciBkdD1tdC5nZXRHbG9iYWxPYmplY3RzKCksTXQ9ZHQuZXZlbnROYW1lcyxBdD1kdC5nbG9iYWxTb3VyY2VzLFp0PWR0LnpvbmVTeW1ib2xFdmVudE5hbWVzLENlPWR0LlRSVUVfU1RSLFllPWR0LkZBTFNFX1NUUixobj1kdC5aT05FX1NZTUJPTF9QUkVGSVgseGU9IkFuY2hvcixBcmVhLEF1ZGlvLEJSLEJhc2UsQmFzZUZvbnQsQm9keSxCdXR0b24sQ2FudmFzLENvbnRlbnQsRExpc3QsRGlyZWN0b3J5LERpdixFbWJlZCxGaWVsZFNldCxGb250LEZvcm0sRnJhbWUsRnJhbWVTZXQsSFIsSGVhZCxIZWFkaW5nLEh0bWwsSUZyYW1lLEltYWdlLElucHV0LEtleWdlbixMSSxMYWJlbCxMZWdlbmQsTGluayxNYXAsTWFycXVlZSxNZWRpYSxNZW51LE1ldGEsTWV0ZXIsTW9kLE9MaXN0LE9iamVjdCxPcHRHcm91cCxPcHRpb24sT3V0cHV0LFBhcmFncmFwaCxQcmUsUHJvZ3Jlc3MsUXVvdGUsU2NyaXB0LFNlbGVjdCxTb3VyY2UsU3BhbixTdHlsZSxUYWJsZUNhcHRpb24sVGFibGVDZWxsLFRhYmxlQ29sLFRhYmxlLFRhYmxlUm93LFRhYmxlU2VjdGlvbixUZXh0QXJlYSxUaXRsZSxUcmFjayxVTGlzdCxVbmtub3duLFZpZGVvIixRZT0iQXBwbGljYXRpb25DYWNoZSxFdmVudFNvdXJjZSxGaWxlUmVhZGVyLElucHV0TWV0aG9kQ29udGV4dCxNZWRpYUNvbnRyb2xsZXIsTWVzc2FnZVBvcnQsTm9kZSxQZXJmb3JtYW5jZSxTVkdFbGVtZW50SW5zdGFuY2UsU2hhcmVkV29ya2VyLFRleHRUcmFjayxUZXh0VHJhY2tDdWUsVGV4dFRyYWNrTGlzdCxXZWJLaXROYW1lZEZsb3csV2luZG93LFdvcmtlcixXb3JrZXJHbG9iYWxTY29wZSxYTUxIdHRwUmVxdWVzdCxYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0LFhNTEh0dHBSZXF1ZXN0VXBsb2FkLElEQlJlcXVlc3QsSURCT3BlbkRCUmVxdWVzdCxJREJEYXRhYmFzZSxJREJUcmFuc2FjdGlvbixJREJDdXJzb3IsREJJbmRleCxXZWJTb2NrZXQiLnNwbGl0KCIsIiksR2U9IkV2ZW50VGFyZ2V0Iixfbj1bXSxzbz1LLnd0Zixubz14ZS5zcGxpdCgiLCIpO3NvP19uPW5vLm1hcChmdW5jdGlvbih2aSl7cmV0dXJuIkhUTUwiK3ZpKyJFbGVtZW50In0pLmNvbmNhdChRZSk6S1tHZV0/X24ucHVzaChHZSk6X249UWU7Zm9yKHZhciBobz1LLl9fWm9uZV9kaXNhYmxlX0lFX2NoZWNrfHwhMSxEbz1LLl9fWm9uZV9lbmFibGVfY3Jvc3NfY29udGV4dF9jaGVja3x8ITEsTW49bXQuaXNJRU9yRWRnZSgpLGVuPSIuYWRkRXZlbnRMaXN0ZW5lcjoiLGtpPSJbb2JqZWN0IEZ1bmN0aW9uV3JhcHBlcl0iLHhpPSJmdW5jdGlvbiBfX0JST1dTRVJUT09MU19DT05TT0xFX1NBRkVGVU5DKCkgeyBbbmF0aXZlIGNvZGVdIH0iLGZhPXtNU1BvaW50ZXJDYW5jZWw6InBvaW50ZXJjYW5jZWwiLE1TUG9pbnRlckRvd246InBvaW50ZXJkb3duIixNU1BvaW50ZXJFbnRlcjoicG9pbnRlcmVudGVyIixNU1BvaW50ZXJIb3ZlcjoicG9pbnRlcmhvdmVyIixNU1BvaW50ZXJMZWF2ZToicG9pbnRlcmxlYXZlIixNU1BvaW50ZXJNb3ZlOiJwb2ludGVybW92ZSIsTVNQb2ludGVyT3V0OiJwb2ludGVyb3V0IixNU1BvaW50ZXJPdmVyOiJwb2ludGVyb3ZlciIsTVNQb2ludGVyVXA6InBvaW50ZXJ1cCJ9LHBhPTA7cGE8TXQubGVuZ3RoO3BhKyspe3ZhciBKbj1NdFtwYV0sRmw9Sm4rWWUscGk9Sm4rQ2UsRmM9aG4rRmwsRXM9aG4rcGk7WnRbSm5dPXt9LFp0W0puXVtZZV09RmMsWnRbSm5dW0NlXT1Fc31mb3IodmFyIHBhPTA7cGE8bm8ubGVuZ3RoO3BhKyspZm9yKHZhciB2bz1ub1twYV0sVWk9QXRbdm9dPXt9LGZvPTA7Zm88TXQubGVuZ3RoO2ZvKyspe3ZhciBKbj1NdFtmb107VWlbSm5dPXZvK2VuK0pufWZvcih2YXIgZGk9ZnVuY3Rpb24odmksbm4sQnQsenQpe2lmKCFobyYmTW4paWYoRG8pdHJ5e3ZhciBlZT1ubi50b1N0cmluZygpO2lmKGVlPT09a2l8fGVlPT14aSlyZXR1cm4gdmkuYXBwbHkoQnQsenQpLCExfWNhdGNoKG9vKXtyZXR1cm4gdmkuYXBwbHkoQnQsenQpLCExfWVsc2V7dmFyIGVlPW5uLnRvU3RyaW5nKCk7aWYoZWU9PT1raXx8ZWU9PXhpKXJldHVybiB2aS5hcHBseShCdCx6dCksITF9ZWxzZSBpZihEbyl0cnl7bm4udG9TdHJpbmcoKX1jYXRjaChvbyl7cmV0dXJuIHZpLmFwcGx5KEJ0LHp0KSwhMX1yZXR1cm4hMH0sZ2c9W10scGE9MDtwYTxfbi5sZW5ndGg7cGErKyl7dmFyIEhmPUtbX25bcGFdXTtnZy5wdXNoKEhmJiZIZi5wcm90b3R5cGUpfXJldHVybiBtdC5wYXRjaEV2ZW50VGFyZ2V0KEssZ2cse3ZoOmRpLHRyYW5zZmVyRXZlbnROYW1lOmZ1bmN0aW9uKHZpKXt2YXIgbm49ZmFbdmldO3JldHVybiBubnx8dml9fSksWm9uZVttdC5zeW1ib2woInBhdGNoRXZlbnRUYXJnZXQiKV09ISFLW0dlXSwhMH1mdW5jdGlvbiBLNChLLG10KXt2YXIgZHQ9Sy5nZXRHbG9iYWxPYmplY3RzKCksTXQ9ZHQuQUREX0VWRU5UX0xJU1RFTkVSX1NUUixBdD1kdC5SRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSLFp0PW10LldlYlNvY2tldDttdC5FdmVudFRhcmdldHx8Sy5wYXRjaEV2ZW50VGFyZ2V0KG10LFtadC5wcm90b3R5cGVdKSxtdC5XZWJTb2NrZXQ9ZnVuY3Rpb24oaG4seGUpe3ZhciBRZT1hcmd1bWVudHMubGVuZ3RoPjE/bmV3IFp0KGhuLHhlKTpuZXcgWnQoaG4pLEdlLF9uLHNvPUsuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFFlLCJvbm1lc3NhZ2UiKTtyZXR1cm4gc28mJnNvLmNvbmZpZ3VyYWJsZT09PSExPyhHZT1LLk9iamVjdENyZWF0ZShRZSksX249UWUsW010LEF0LCJzZW5kIiwiY2xvc2UiXS5mb3JFYWNoKGZ1bmN0aW9uKG5vKXtHZVtub109ZnVuY3Rpb24oKXt2YXIgaG89Sy5BcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzKTtpZihubz09PU10fHxubz09PUF0KXt2YXIgRG89aG8ubGVuZ3RoPjA/aG9bMF06dm9pZCAwO2lmKERvKXt2YXIgTW49Wm9uZS5fX3N5bWJvbF9fKCJPTl9QUk9QRVJUWSIrRG8pO1FlW01uXT1HZVtNbl19fXJldHVybiBRZVtub10uYXBwbHkoUWUsaG8pfX0pKTpHZT1RZSxLLnBhdGNoT25Qcm9wZXJ0aWVzKEdlLFsiY2xvc2UiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcGVuIl0sX24pLEdlfTt2YXIgQ2U9bXQuV2ViU29ja2V0O2Zvcih2YXIgWWUgaW4gWnQpQ2VbWWVdPVp0W1llXX1mdW5jdGlvbiBDNyhLLG10KXt2YXIgZHQ9Sy5nZXRHbG9iYWxPYmplY3RzKCksTXQ9ZHQuaXNOb2RlLEF0PWR0LmlzTWl4O2lmKCEoTXQmJiFBdCkmJiFNNyhLLG10KSl7dmFyIFp0PXR5cGVvZiBXZWJTb2NrZXQhPSJ1bmRlZmluZWQiO2I3KEspLEsucGF0Y2hDbGFzcygiWE1MSHR0cFJlcXVlc3QiKSxadCYmSzQoSyxtdCksWm9uZVtLLnN5bWJvbCgicGF0Y2hFdmVudHMiKV09ITB9fWZ1bmN0aW9uIE03KEssbXQpe3ZhciBkdD1LLmdldEdsb2JhbE9iamVjdHMoKSxNdD1kdC5pc0Jyb3dzZXIsQXQ9ZHQuaXNNaXg7aWYoKE10fHxBdCkmJiFLLk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKSYmdHlwZW9mIEVsZW1lbnQhPSJ1bmRlZmluZWQiKXt2YXIgWnQ9Sy5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKTtpZihadCYmIVp0LmNvbmZpZ3VyYWJsZSlyZXR1cm4hMTtpZihadCl7Sy5PYmplY3REZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiEwfX0pO3ZhciBDZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxZZT0hIUNlLm9uY2xpY2s7cmV0dXJuIEsuT2JqZWN0RGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siLFp0KSxZZX19dmFyIGhuPW10LlhNTEh0dHBSZXF1ZXN0O2lmKCFobilyZXR1cm4hMTt2YXIgeGU9Im9ucmVhZHlzdGF0ZWNoYW5nZSIsUWU9aG4ucHJvdG90eXBlLEdlPUsuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFFlLHhlKTtpZihHZSl7Sy5PYmplY3REZWZpbmVQcm9wZXJ0eShRZSx4ZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSk7dmFyIF9uPW5ldyBobixZZT0hIV9uLm9ucmVhZHlzdGF0ZWNoYW5nZTtyZXR1cm4gSy5PYmplY3REZWZpbmVQcm9wZXJ0eShRZSx4ZSxHZXx8e30pLFllfWVsc2V7dmFyIHNvPUsuc3ltYm9sKCJmYWtlIik7Sy5PYmplY3REZWZpbmVQcm9wZXJ0eShRZSx4ZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbc29dfSxzZXQ6ZnVuY3Rpb24oTW4pe3RoaXNbc29dPU1ufX0pO3ZhciBfbj1uZXcgaG4sbm89ZnVuY3Rpb24oKXt9O19uLm9ucmVhZHlzdGF0ZWNoYW5nZT1ubzt2YXIgWWU9X25bc29dPT09bm87cmV0dXJuIF9uLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLFllfX1mdW5jdGlvbiBiNyhLKXtmb3IodmFyIG10PUsuZ2V0R2xvYmFsT2JqZWN0cygpLmV2ZW50TmFtZXMsZHQ9Sy5zeW1ib2woInVuYm91bmQiKSxNdD1mdW5jdGlvbihadCl7dmFyIENlPW10W1p0XSxZZT0ib24iK0NlO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcihDZSxmdW5jdGlvbihobil7dmFyIHhlPWhuLnRhcmdldCxRZSxHZTtmb3IoeGU/R2U9eGUuY29uc3RydWN0b3IubmFtZSsiLiIrWWU6R2U9InVua25vd24uIitZZTt4ZTspeGVbWWVdJiYheGVbWWVdW2R0XSYmKFFlPUsud3JhcFdpdGhDdXJyZW50Wm9uZSh4ZVtZZV0sR2UpLFFlW2R0XT14ZVtZZV0seGVbWWVdPVFlKSx4ZT14ZS5wYXJlbnRFbGVtZW50fSwhMCl9LEF0PTA7QXQ8bXQubGVuZ3RoO0F0KyspTXQoQXQpfWZ1bmN0aW9uIGF0KEssbXQpe3ZhciBkdD1tdC5nZXRHbG9iYWxPYmplY3RzKCksTXQ9ZHQuaXNCcm93c2VyLEF0PWR0LmlzTWl4O2lmKCEoIU10JiYhQXR8fCEoInJlZ2lzdGVyRWxlbWVudCJpbiBLLmRvY3VtZW50KSkpe3ZhciBadD1bImNyZWF0ZWRDYWxsYmFjayIsImF0dGFjaGVkQ2FsbGJhY2siLCJkZXRhY2hlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl07bXQucGF0Y2hDYWxsYmFja3MobXQsZG9jdW1lbnQsIkRvY3VtZW50IiwicmVnaXN0ZXJFbGVtZW50IixadCl9fShmdW5jdGlvbihLKXt2YXIgbXQ9Sy5fX1pvbmVfc3ltYm9sX3ByZWZpeHx8Il9fem9uZV9zeW1ib2xfXyI7ZnVuY3Rpb24gZHQoTXQpe3JldHVybiBtdCtNdH1LW2R0KCJsZWdhY3lQYXRjaCIpXT1mdW5jdGlvbigpe3ZhciBNdD1LLlpvbmU7TXQuX19sb2FkX3BhdGNoKCJkZWZpbmVQcm9wZXJ0eSIsZnVuY3Rpb24oQXQsWnQsQ2Upe0NlLl9yZWRlZmluZVByb3BlcnR5PUpoLHNyKCl9KSxNdC5fX2xvYWRfcGF0Y2goInJlZ2lzdGVyRWxlbWVudCIsZnVuY3Rpb24oQXQsWnQsQ2Upe2F0KEF0LENlKX0pLE10Ll9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXRMZWdhY3kiLGZ1bmN0aW9uKEF0LFp0LENlKXtqUyhBdCxDZSksQzcoQ2UsQXQpfSl9fSkodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCI/d2luZG93OnR5cGVvZiBnbG9iYWwhPSJ1bmRlZmluZWQiP2dsb2JhbDp0eXBlb2Ygc2VsZiE9InVuZGVmaW5lZCI/c2VsZjp7fSk7dmFyIFV0PU0oInpvbmVUYXNrIik7ZnVuY3Rpb24gbmUoSyxtdCxkdCxNdCl7dmFyIEF0PW51bGwsWnQ9bnVsbDttdCs9TXQsZHQrPU10O3ZhciBDZT17fTtmdW5jdGlvbiBZZSh4ZSl7dmFyIFFlPXhlLmRhdGE7cmV0dXJuIFFlLmFyZ3NbMF09ZnVuY3Rpb24oKXtyZXR1cm4geGUuaW52b2tlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sUWUuaGFuZGxlSWQ9QXQuYXBwbHkoSyxRZS5hcmdzKSx4ZX1mdW5jdGlvbiBobih4ZSl7cmV0dXJuIFp0LmNhbGwoSyx4ZS5kYXRhLmhhbmRsZUlkKX1BdD1ndChLLG10LGZ1bmN0aW9uKHhlKXtyZXR1cm4gZnVuY3Rpb24oUWUsR2Upe2lmKHR5cGVvZiBHZVswXT09ImZ1bmN0aW9uIil7dmFyIF9uPXtpc1BlcmlvZGljOk10PT09IkludGVydmFsIixkZWxheTpNdD09PSJUaW1lb3V0Inx8TXQ9PT0iSW50ZXJ2YWwiP0dlWzFdfHwwOnZvaWQgMCxhcmdzOkdlfSxzbz1HZVswXTtHZVswXT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gc28uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7X24uaXNQZXJpb2RpY3x8KHR5cGVvZiBfbi5oYW5kbGVJZD09Im51bWJlciI/ZGVsZXRlIENlW19uLmhhbmRsZUlkXTpfbi5oYW5kbGVJZCYmKF9uLmhhbmRsZUlkW1V0XT1udWxsKSl9fTt2YXIgbm89XyhtdCxHZVswXSxfbixZZSxobik7aWYoIW5vKXJldHVybiBubzt2YXIgaG89bm8uZGF0YS5oYW5kbGVJZDtyZXR1cm4gdHlwZW9mIGhvPT0ibnVtYmVyIj9DZVtob109bm86aG8mJihob1tVdF09bm8pLGhvJiZoby5yZWYmJmhvLnVucmVmJiZ0eXBlb2YgaG8ucmVmPT0iZnVuY3Rpb24iJiZ0eXBlb2YgaG8udW5yZWY9PSJmdW5jdGlvbiImJihuby5yZWY9aG8ucmVmLmJpbmQoaG8pLG5vLnVucmVmPWhvLnVucmVmLmJpbmQoaG8pKSx0eXBlb2YgaG89PSJudW1iZXIifHxobz9obzpub31lbHNlIHJldHVybiB4ZS5hcHBseShLLEdlKX19KSxadD1ndChLLGR0LGZ1bmN0aW9uKHhlKXtyZXR1cm4gZnVuY3Rpb24oUWUsR2Upe3ZhciBfbj1HZVswXSxzbzt0eXBlb2YgX249PSJudW1iZXIiP3NvPUNlW19uXTooc289X24mJl9uW1V0XSxzb3x8KHNvPV9uKSksc28mJnR5cGVvZiBzby50eXBlPT0ic3RyaW5nIj9zby5zdGF0ZSE9PSJub3RTY2hlZHVsZWQiJiYoc28uY2FuY2VsRm4mJnNvLmRhdGEuaXNQZXJpb2RpY3x8c28ucnVuQ291bnQ9PT0wKSYmKHR5cGVvZiBfbj09Im51bWJlciI/ZGVsZXRlIENlW19uXTpfbiYmKF9uW1V0XT1udWxsKSxzby56b25lLmNhbmNlbFRhc2soc28pKTp4ZS5hcHBseShLLEdlKX19KX1mdW5jdGlvbiB0ZShLLG10KXt2YXIgZHQ9bXQuZ2V0R2xvYmFsT2JqZWN0cygpLE10PWR0LmlzQnJvd3NlcixBdD1kdC5pc01peDtpZighKCFNdCYmIUF0fHwhSy5jdXN0b21FbGVtZW50c3x8ISgiY3VzdG9tRWxlbWVudHMiaW4gSykpKXt2YXIgWnQ9WyJjb25uZWN0ZWRDYWxsYmFjayIsImRpc2Nvbm5lY3RlZENhbGxiYWNrIiwiYWRvcHRlZENhbGxiYWNrIiwiYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrIl07bXQucGF0Y2hDYWxsYmFja3MobXQsSy5jdXN0b21FbGVtZW50cywiY3VzdG9tRWxlbWVudHMiLCJkZWZpbmUiLFp0KX19ZnVuY3Rpb24gT2UoSyxtdCl7aWYoIVpvbmVbbXQuc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildKXtmb3IodmFyIGR0PW10LmdldEdsb2JhbE9iamVjdHMoKSxNdD1kdC5ldmVudE5hbWVzLEF0PWR0LnpvbmVTeW1ib2xFdmVudE5hbWVzLFp0PWR0LlRSVUVfU1RSLENlPWR0LkZBTFNFX1NUUixZZT1kdC5aT05FX1NZTUJPTF9QUkVGSVgsaG49MDtobjxNdC5sZW5ndGg7aG4rKyl7dmFyIHhlPU10W2huXSxRZT14ZStDZSxHZT14ZStadCxfbj1ZZStRZSxzbz1ZZStHZTtBdFt4ZV09e30sQXRbeGVdW0NlXT1fbixBdFt4ZV1bWnRdPXNvfXZhciBubz1LLkV2ZW50VGFyZ2V0O2lmKCEoIW5vfHwhbm8ucHJvdG90eXBlKSlyZXR1cm4gbXQucGF0Y2hFdmVudFRhcmdldChLLFtubyYmbm8ucHJvdG90eXBlXSksITB9fWZ1bmN0aW9uIG1vKEssbXQpe210LnBhdGNoRXZlbnRQcm90b3R5cGUoSyxtdCl9Wm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsZnVuY3Rpb24oSyl7dmFyIG10PUtbWm9uZS5fX3N5bWJvbF9fKCJsZWdhY3lQYXRjaCIpXTttdCYmbXQoKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJxdWV1ZU1pY3JvdGFzayIsZnVuY3Rpb24oSyxtdCxkdCl7ZHQucGF0Y2hNZXRob2QoSywicXVldWVNaWNyb3Rhc2siLGZ1bmN0aW9uKE10KXtyZXR1cm4gZnVuY3Rpb24oQXQsWnQpe210LmN1cnJlbnQuc2NoZWR1bGVNaWNyb1Rhc2soInF1ZXVlTWljcm90YXNrIixadFswXSl9fSl9KSxab25lLl9fbG9hZF9wYXRjaCgidGltZXJzIixmdW5jdGlvbihLKXt2YXIgbXQ9InNldCIsZHQ9ImNsZWFyIjtuZShLLG10LGR0LCJUaW1lb3V0IiksbmUoSyxtdCxkdCwiSW50ZXJ2YWwiKSxuZShLLG10LGR0LCJJbW1lZGlhdGUiKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLGZ1bmN0aW9uKEspe25lKEssInJlcXVlc3QiLCJjYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLG5lKEssIm1velJlcXVlc3QiLCJtb3pDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpLG5lKEssIndlYmtpdFJlcXVlc3QiLCJ3ZWJraXRDYW5jZWwiLCJBbmltYXRpb25GcmFtZSIpfSksWm9uZS5fX2xvYWRfcGF0Y2goImJsb2NraW5nIixmdW5jdGlvbihLLG10KXtmb3IodmFyIGR0PVsiYWxlcnQiLCJwcm9tcHQiLCJjb25maXJtIl0sTXQ9MDtNdDxkdC5sZW5ndGg7TXQrKyl7dmFyIEF0PWR0W010XTtndChLLEF0LGZ1bmN0aW9uKFp0LENlLFllKXtyZXR1cm4gZnVuY3Rpb24oaG4seGUpe3JldHVybiBtdC5jdXJyZW50LnJ1bihadCxLLHhlLFllKX19KX19KSxab25lLl9fbG9hZF9wYXRjaCgiRXZlbnRUYXJnZXQiLGZ1bmN0aW9uKEssbXQsZHQpe21vKEssZHQpLE9lKEssZHQpO3ZhciBNdD1LLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ7TXQmJk10LnByb3RvdHlwZSYmZHQucGF0Y2hFdmVudFRhcmdldChLLFtNdC5wcm90b3R5cGVdKX0pLFpvbmUuX19sb2FkX3BhdGNoKCJNdXRhdGlvbk9ic2VydmVyIixmdW5jdGlvbihLLG10LGR0KXt1dCgiTXV0YXRpb25PYnNlcnZlciIpLHV0KCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIil9KSxab25lLl9fbG9hZF9wYXRjaCgiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLGZ1bmN0aW9uKEssbXQsZHQpe3V0KCJJbnRlcnNlY3Rpb25PYnNlcnZlciIpfSksWm9uZS5fX2xvYWRfcGF0Y2goIkZpbGVSZWFkZXIiLGZ1bmN0aW9uKEssbXQsZHQpe3V0KCJGaWxlUmVhZGVyIil9KSxab25lLl9fbG9hZF9wYXRjaCgib25fcHJvcGVydHkiLGZ1bmN0aW9uKEssbXQsZHQpe3JvKGR0LEspfSksWm9uZS5fX2xvYWRfcGF0Y2goImN1c3RvbUVsZW1lbnRzIixmdW5jdGlvbihLLG10LGR0KXt0ZShLLGR0KX0pLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLGZ1bmN0aW9uKEssbXQpe2huKEspO3ZhciBkdD1NKCJ4aHJUYXNrIiksTXQ9TSgieGhyU3luYyIpLEF0PU0oInhockxpc3RlbmVyIiksWnQ9TSgieGhyU2NoZWR1bGVkIiksQ2U9TSgieGhyVVJMIiksWWU9TSgieGhyRXJyb3JCZWZvcmVTY2hlZHVsZWQiKTtmdW5jdGlvbiBobih4ZSl7dmFyIFFlPXhlLlhNTEh0dHBSZXF1ZXN0O2lmKCFRZSlyZXR1cm47dmFyIEdlPVFlLnByb3RvdHlwZTtmdW5jdGlvbiBfbih2byl7cmV0dXJuIHZvW2R0XX12YXIgc289R2VbbF0sbm89R2VbY107aWYoIXNvKXt2YXIgaG89eGUuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtpZihobyl7dmFyIERvPWhvLnByb3RvdHlwZTtzbz1Eb1tsXSxubz1Eb1tjXX19dmFyIE1uPSJyZWFkeXN0YXRlY2hhbmdlIixlbj0ic2NoZWR1bGVkIjtmdW5jdGlvbiBraSh2byl7dmFyIFVpPXZvLmRhdGEsZm89VWkudGFyZ2V0O2ZvW1p0XT0hMSxmb1tZZV09ITE7dmFyIGRpPWZvW0F0XTtzb3x8KHNvPWZvW2xdLG5vPWZvW2NdKSxkaSYmbm8uY2FsbChmbyxNbixkaSk7dmFyIGdnPWZvW0F0XT1mdW5jdGlvbigpe2lmKGZvLnJlYWR5U3RhdGU9PT1mby5ET05FKWlmKCFVaS5hYm9ydGVkJiZmb1tadF0mJnZvLnN0YXRlPT09ZW4pe3ZhciB2aT1mb1ttdC5fX3N5bWJvbF9fKCJsb2FkZmFsc2UiKV07aWYoZm8uc3RhdHVzIT09MCYmdmkmJnZpLmxlbmd0aD4wKXt2YXIgbm49dm8uaW52b2tlO3ZvLmludm9rZT1mdW5jdGlvbigpe2Zvcih2YXIgQnQ9Zm9bbXQuX19zeW1ib2xfXygibG9hZGZhbHNlIildLHp0PTA7enQ8QnQubGVuZ3RoO3p0KyspQnRbenRdPT09dm8mJkJ0LnNwbGljZSh6dCwxKTshVWkuYWJvcnRlZCYmdm8uc3RhdGU9PT1lbiYmbm4uY2FsbCh2byl9LHZpLnB1c2godm8pfWVsc2Ugdm8uaW52b2tlKCl9ZWxzZSFVaS5hYm9ydGVkJiZmb1tadF09PT0hMSYmKGZvW1llXT0hMCl9O3NvLmNhbGwoZm8sTW4sZ2cpO3ZhciBIZj1mb1tkdF07cmV0dXJuIEhmfHwoZm9bZHRdPXZvKSxGYy5hcHBseShmbyxVaS5hcmdzKSxmb1tadF09ITAsdm99ZnVuY3Rpb24geGkoKXt9ZnVuY3Rpb24gZmEodm8pe3ZhciBVaT12by5kYXRhO3JldHVybiBVaS5hYm9ydGVkPSEwLEVzLmFwcGx5KFVpLnRhcmdldCxVaS5hcmdzKX12YXIgcGE9Z3QoR2UsIm9wZW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHZvLFVpKXtyZXR1cm4gdm9bTXRdPVVpWzJdPT0hMSx2b1tDZV09VWlbMV0scGEuYXBwbHkodm8sVWkpfX0pLEpuPSJYTUxIdHRwUmVxdWVzdC5zZW5kIixGbD1NKCJmZXRjaFRhc2tBYm9ydGluZyIpLHBpPU0oImZldGNoVGFza1NjaGVkdWxpbmciKSxGYz1ndChHZSwic2VuZCIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odm8sVWkpe2lmKG10LmN1cnJlbnRbcGldPT09ITB8fHZvW010XSlyZXR1cm4gRmMuYXBwbHkodm8sVWkpO3ZhciBmbz17dGFyZ2V0OnZvLHVybDp2b1tDZV0saXNQZXJpb2RpYzohMSxhcmdzOlVpLGFib3J0ZWQ6ITF9LGRpPV8oSm4seGksZm8sa2ksZmEpO3ZvJiZ2b1tZZV09PT0hMCYmIWZvLmFib3J0ZWQmJmRpLnN0YXRlPT09ZW4mJmRpLmludm9rZSgpfX0pLEVzPWd0KEdlLCJhYm9ydCIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odm8sVWkpe3ZhciBmbz1fbih2byk7aWYoZm8mJnR5cGVvZiBmby50eXBlPT0ic3RyaW5nIil7aWYoZm8uY2FuY2VsRm49PW51bGx8fGZvLmRhdGEmJmZvLmRhdGEuYWJvcnRlZClyZXR1cm47Zm8uem9uZS5jYW5jZWxUYXNrKGZvKX1lbHNlIGlmKG10LmN1cnJlbnRbRmxdPT09ITApcmV0dXJuIEVzLmFwcGx5KHZvLFVpKX19KX19KSxab25lLl9fbG9hZF9wYXRjaCgiZ2VvbG9jYXRpb24iLGZ1bmN0aW9uKEspe0submF2aWdhdG9yJiZLLm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmcnQoSy5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24sWyJnZXRDdXJyZW50UG9zaXRpb24iLCJ3YXRjaFBvc2l0aW9uIl0pfSksWm9uZS5fX2xvYWRfcGF0Y2goIlByb21pc2VSZWplY3Rpb25FdmVudCIsZnVuY3Rpb24oSyxtdCl7ZnVuY3Rpb24gZHQoTXQpe3JldHVybiBmdW5jdGlvbihBdCl7dmFyIFp0PWZlKEssTXQpO1p0LmZvckVhY2goZnVuY3Rpb24oQ2Upe3ZhciBZZT1LLlByb21pc2VSZWplY3Rpb25FdmVudDtpZihZZSl7dmFyIGhuPW5ldyBZZShNdCx7cHJvbWlzZTpBdC5wcm9taXNlLHJlYXNvbjpBdC5yZWplY3Rpb259KTtDZS5pbnZva2UoaG4pfX0pfX1LLlByb21pc2VSZWplY3Rpb25FdmVudCYmKG10W00oInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIildPWR0KCJ1bmhhbmRsZWRyZWplY3Rpb24iKSxtdFtNKCJyZWplY3Rpb25IYW5kbGVkSGFuZGxlciIpXT1kdCgicmVqZWN0aW9uaGFuZGxlZCIpKX0pfSk7dmFyIGVFPWNsYXNze30sZ0E9Y2xhc3N7fTt2YXIgQmI9IioiO2Z1bmN0aW9uIHhyKG4sdCl7cmV0dXJue3R5cGU6NyxuYW1lOm4sZGVmaW5pdGlvbnM6dCxvcHRpb25zOnt9fX1mdW5jdGlvbiBEaShuLHQ9bnVsbCl7cmV0dXJue3R5cGU6NCxzdHlsZXM6dCx0aW1pbmdzOm59fWZ1bmN0aW9uIHVBKG4sdD1udWxsKXtyZXR1cm57dHlwZToyLHN0ZXBzOm4sb3B0aW9uczp0fX1mdW5jdGlvbiBMbihuKXtyZXR1cm57dHlwZTo2LHN0eWxlczpuLG9mZnNldDpudWxsfX1mdW5jdGlvbiBoaShuLHQsZSl7cmV0dXJue3R5cGU6MCxuYW1lOm4sc3R5bGVzOnQsb3B0aW9uczplfX1mdW5jdGlvbiBidihuKXtyZXR1cm57dHlwZTo1LHN0ZXBzOm59fWZ1bmN0aW9uIGJpKG4sdCxlPW51bGwpe3JldHVybnt0eXBlOjEsZXhwcjpuLGFuaW1hdGlvbjp0LG9wdGlvbnM6ZX19ZnVuY3Rpb24gaEEobj1udWxsKXtyZXR1cm57dHlwZTo5LG9wdGlvbnM6bn19ZnVuY3Rpb24gX0Eobix0LGU9bnVsbCl7cmV0dXJue3R5cGU6MTEsc2VsZWN0b3I6bixhbmltYXRpb246dCxvcHRpb25zOmV9fWZ1bmN0aW9uIHBudChuKXtQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbihuKX12YXIgclA9Y2xhc3N7Y29uc3RydWN0b3IodD0wLGU9MCl7dGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3Bvc2l0aW9uPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLnRvdGFsVGltZT10K2V9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaCh0PT50KCkpLHRoaXMuX29uRG9uZUZucz1bXSl9b25TdGFydCh0KXt0aGlzLl9vblN0YXJ0Rm5zLnB1c2godCl9b25Eb25lKHQpe3RoaXMuX29uRG9uZUZucy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaCh0KX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9aW5pdCgpe31wbGF5KCl7dGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9vblN0YXJ0KCksdGhpcy50cmlnZ2VyTWljcm90YXNrKCkpLHRoaXMuX3N0YXJ0ZWQ9ITB9dHJpZ2dlck1pY3JvdGFzaygpe3BudCgoKT0+dGhpcy5fb25GaW5pc2goKSl9X29uU3RhcnQoKXt0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2godD0+dCgpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdfXBhdXNlKCl7fXJlc3RhcnQoKXt9ZmluaXNoKCl7dGhpcy5fb25GaW5pc2goKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuaGFzU3RhcnRlZCgpfHx0aGlzLl9vblN0YXJ0KCksdGhpcy5maW5pc2goKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCh0PT50KCkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe3RoaXMuX3Bvc2l0aW9uPXRoaXMudG90YWxUaW1lP3QqdGhpcy50b3RhbFRpbWU6MX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnRvdGFsVGltZT90aGlzLl9wb3NpdGlvbi90aGlzLnRvdGFsVGltZToxfXRyaWdnZXJDYWxsYmFjayh0KXtsZXQgZT10PT0ic3RhcnQiP3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2UuZm9yRWFjaChvPT5vKCkpLGUubGVuZ3RoPTB9fTt2YXIgbkU9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMucGFyZW50UGxheWVyPW51bGwsdGhpcy50b3RhbFRpbWU9MCx0aGlzLnBsYXllcnM9dDtsZXQgZT0wLG89MCxpPTAsYT10aGlzLnBsYXllcnMubGVuZ3RoO2E9PTA/cG50KCgpPT50aGlzLl9vbkZpbmlzaCgpKTp0aGlzLnBsYXllcnMuZm9yRWFjaChyPT57ci5vbkRvbmUoKCk9PnsrK2U9PWEmJnRoaXMuX29uRmluaXNoKCl9KSxyLm9uRGVzdHJveSgoKT0+eysrbz09YSYmdGhpcy5fb25EZXN0cm95KCl9KSxyLm9uU3RhcnQoKCk9PnsrK2k9PWEmJnRoaXMuX29uU3RhcnQoKX0pfSksdGhpcy50b3RhbFRpbWU9dGhpcy5wbGF5ZXJzLnJlZHVjZSgocixzKT0+TWF0aC5tYXgocixzLnRvdGFsVGltZSksMCl9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaCh0PT50KCkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMucGxheWVycy5mb3JFYWNoKHQ9PnQuaW5pdCgpKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1fb25TdGFydCgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fc3RhcnRlZD0hMCx0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2godD0+dCgpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdKX1vbkRvbmUodCl7dGhpcy5fb25Eb25lRm5zLnB1c2godCl9b25EZXN0cm95KHQpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKHQpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1wbGF5KCl7dGhpcy5wYXJlbnRQbGF5ZXJ8fHRoaXMuaW5pdCgpLHRoaXMuX29uU3RhcnQoKSx0aGlzLnBsYXllcnMuZm9yRWFjaCh0PT50LnBsYXkoKSl9cGF1c2UoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCh0PT50LnBhdXNlKCkpfXJlc3RhcnQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCh0PT50LnJlc3RhcnQoKSl9ZmluaXNoKCl7dGhpcy5fb25GaW5pc2goKSx0aGlzLnBsYXllcnMuZm9yRWFjaCh0PT50LmZpbmlzaCgpKX1kZXN0cm95KCl7dGhpcy5fb25EZXN0cm95KCl9X29uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKHQ9PnQuZGVzdHJveSgpKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCh0PT50KCkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCh0PT50LnJlc2V0KCkpLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe2xldCBlPXQqdGhpcy50b3RhbFRpbWU7dGhpcy5wbGF5ZXJzLmZvckVhY2gobz0+e2xldCBpPW8udG90YWxUaW1lP01hdGgubWluKDEsZS9vLnRvdGFsVGltZSk6MTtvLnNldFBvc2l0aW9uKGkpfSl9Z2V0UG9zaXRpb24oKXtsZXQgdD10aGlzLnBsYXllcnMucmVkdWNlKChlLG8pPT5lPT09bnVsbHx8by50b3RhbFRpbWU+ZS50b3RhbFRpbWU/bzplLG51bGwpO3JldHVybiB0IT1udWxsP3QuZ2V0UG9zaXRpb24oKTowfWJlZm9yZURlc3Ryb3koKXt0aGlzLnBsYXllcnMuZm9yRWFjaCh0PT57dC5iZWZvcmVEZXN0cm95JiZ0LmJlZm9yZURlc3Ryb3koKX0pfXRyaWdnZXJDYWxsYmFjayh0KXtsZXQgZT10PT0ic3RhcnQiP3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO2UuZm9yRWFjaChvPT5vKCkpLGUubGVuZ3RoPTB9fTt2YXIgQ0E9IiEiO2Z1bmN0aW9uIEludCgpe3JldHVybiB0eXBlb2Ygd2luZG93IT0idW5kZWZpbmVkIiYmdHlwZW9mIHdpbmRvdy5kb2N1bWVudCE9InVuZGVmaW5lZCJ9ZnVuY3Rpb24gR1YoKXtyZXR1cm4gdHlwZW9mIHByb2Nlc3MhPSJ1bmRlZmluZWQiJiZ7fS50b1N0cmluZy5jYWxsKHByb2Nlc3MpPT09IltvYmplY3QgcHJvY2Vzc10ifWZ1bmN0aW9uIEV5KG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgclA7Y2FzZSAxOnJldHVybiBuWzBdO2RlZmF1bHQ6cmV0dXJuIG5ldyBuRShuKX19ZnVuY3Rpb24gem50KG4sdCxlLG8saT17fSxhPXt9KXtsZXQgcj1bXSxzPVtdLGw9LTEsYz1udWxsO2lmKG8uZm9yRWFjaChtPT57bGV0IGY9bS5vZmZzZXQscD1mPT1sLGc9cCYmY3x8e307T2JqZWN0LmtleXMobSkuZm9yRWFjaChfPT57bGV0IE09Xyx5PW1bX107aWYoXyE9PSJvZmZzZXQiKXN3aXRjaChNPXQubm9ybWFsaXplUHJvcGVydHlOYW1lKE0scikseSl7Y2FzZSBDQTp5PWlbX107YnJlYWs7Y2FzZSBCYjp5PWFbX107YnJlYWs7ZGVmYXVsdDp5PXQubm9ybWFsaXplU3R5bGVWYWx1ZShfLE0seSxyKTticmVha31nW01dPXl9KSxwfHxzLnB1c2goZyksYz1nLGw9Zn0pLHIubGVuZ3RoKXtsZXQgbT1gCiAtIGA7dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gYW5pbWF0ZSBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6JHttfSR7ci5qb2luKG0pfWApfXJldHVybiBzfWZ1bmN0aW9uIFdWKG4sdCxlLG8pe3N3aXRjaCh0KXtjYXNlInN0YXJ0IjpuLm9uU3RhcnQoKCk9Pm8oZSYmT1YoZSwic3RhcnQiLG4pKSk7YnJlYWs7Y2FzZSJkb25lIjpuLm9uRG9uZSgoKT0+byhlJiZPVihlLCJkb25lIixuKSkpO2JyZWFrO2Nhc2UiZGVzdHJveSI6bi5vbkRlc3Ryb3koKCk9Pm8oZSYmT1YoZSwiZGVzdHJveSIsbikpKTticmVha319ZnVuY3Rpb24gT1Yobix0LGUpe2xldCBvPWUudG90YWxUaW1lLGk9ISFlLmRpc2FibGVkLGE9cVYobi5lbGVtZW50LG4udHJpZ2dlck5hbWUsbi5mcm9tU3RhdGUsbi50b1N0YXRlLHR8fG4ucGhhc2VOYW1lLG89PW51bGw/bi50b3RhbFRpbWU6byxpKSxyPW4uX2RhdGE7cmV0dXJuIHIhPW51bGwmJihhLl9kYXRhPXIpLGF9ZnVuY3Rpb24gcVYobix0LGUsbyxpPSIiLGE9MCxyKXtyZXR1cm57ZWxlbWVudDpuLHRyaWdnZXJOYW1lOnQsZnJvbVN0YXRlOmUsdG9TdGF0ZTpvLHBoYXNlTmFtZTppLHRvdGFsVGltZTphLGRpc2FibGVkOiEhcn19ZnVuY3Rpb24gQWcobix0LGUpe2xldCBvO3JldHVybiBuIGluc3RhbmNlb2YgTWFwPyhvPW4uZ2V0KHQpLG98fG4uc2V0KHQsbz1lKSk6KG89blt0XSxvfHwobz1uW3RdPWUpKSxvfWZ1bmN0aW9uIGRudChuKXtsZXQgdD1uLmluZGV4T2YoIjoiKSxlPW4uc3Vic3RyaW5nKDEsdCksbz1uLnN1YnN0cih0KzEpO3JldHVybltlLG9dfXZhciB3Vj0obix0KT0+ITE7dmFyIFNWPShuLHQpPT4hMTt2YXIgSG50PShuLHQsZSk9PltdO3ZhciBnbnQ9R1YoKTsoZ250fHx0eXBlb2YgRWxlbWVudCE9InVuZGVmaW5lZCIpJiYoSW50KCk/d1Y9KG4sdCk9Pntmb3IoO3QmJnQhPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7KXtpZih0PT09bilyZXR1cm4hMDt0PXQucGFyZW50Tm9kZXx8dC5ob3N0fXJldHVybiExfTp3Vj0obix0KT0+bi5jb250YWlucyh0KSxTVj0oKCk9PntpZihnbnR8fEVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMpcmV0dXJuKG4sdCk9Pm4ubWF0Y2hlcyh0KTt7bGV0IG49RWxlbWVudC5wcm90b3R5cGUsdD1uLm1hdGNoZXNTZWxlY3Rvcnx8bi5tb3pNYXRjaGVzU2VsZWN0b3J8fG4ubXNNYXRjaGVzU2VsZWN0b3J8fG4ub01hdGNoZXNTZWxlY3Rvcnx8bi53ZWJraXRNYXRjaGVzU2VsZWN0b3I7cmV0dXJuIHQ/KGUsbyk9PnQuYXBwbHkoZSxbb10pOlNWfX0pKCksSG50PShuLHQsZSk9PntsZXQgbz1bXTtpZihlKXtsZXQgaT1uLnF1ZXJ5U2VsZWN0b3JBbGwodCk7Zm9yKGxldCBhPTA7YTxpLmxlbmd0aDthKyspby5wdXNoKGlbYV0pfWVsc2V7bGV0IGk9bi5xdWVyeVNlbGVjdG9yKHQpO2kmJm8ucHVzaChpKX1yZXR1cm4gb30pO2Z1bmN0aW9uIGYzdChuKXtyZXR1cm4gbi5zdWJzdHJpbmcoMSw2KT09ImVia2l0In12YXIgT3Y9bnVsbCx1bnQ9ITE7ZnVuY3Rpb24gWlYobil7T3Z8fChPdj1wM3QoKXx8e30sdW50PU92LnN0eWxlPyJXZWJraXRBcHBlYXJhbmNlImluIE92LnN0eWxlOiExKTtsZXQgdD0hMDtyZXR1cm4gT3Yuc3R5bGUmJiFmM3QobikmJih0PW4gaW4gT3Yuc3R5bGUsIXQmJnVudCYmKHQ9IldlYmtpdCIrbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStuLnN1YnN0cigxKWluIE92LnN0eWxlKSksdH1mdW5jdGlvbiBwM3QoKXtyZXR1cm4gdHlwZW9mIGRvY3VtZW50IT0idW5kZWZpbmVkIj9kb2N1bWVudC5ib2R5Om51bGx9dmFyIFhWPVNWLFFWPXdWLEtWPUhudDtmdW5jdGlvbiBGbnQobil7bGV0IHQ9e307cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goZT0+e2xldCBvPWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywiJDEtJDIiKTt0W29dPW5bZV19KSx0fXZhciBzTT1jbGFzc3t2YWxpZGF0ZVN0eWxlUHJvcGVydHkodCl7cmV0dXJuIFpWKHQpfW1hdGNoZXNFbGVtZW50KHQsZSl7cmV0dXJuIFhWKHQsZSl9Y29udGFpbnNFbGVtZW50KHQsZSl7cmV0dXJuIFFWKHQsZSl9cXVlcnkodCxlLG8pe3JldHVybiBLVih0LGUsbyl9Y29tcHV0ZVN0eWxlKHQsZSxvKXtyZXR1cm4gb3x8IiJ9YW5pbWF0ZSh0LGUsbyxpLGEscj1bXSxzKXtyZXR1cm4gbmV3IHJQKG8saSl9fTtzTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxzTSl9O3NNLlx1MDI3NXByb3Y9UHQoe3Rva2VuOnNNLGZhY3Rvcnk6c00uXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHNNLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBqYj1jbGFzc3t9O2piLk5PT1A9bmV3IHNNO3ZhciBkM3Q9MWUzLExudD0ie3siLGczdD0ifX0iLEJudD0ibmctZW50ZXIiLFJWPSJuZy1sZWF2ZSI7dmFyIE1BPSJuZy10cmlnZ2VyIix5QT0iLm5nLXRyaWdnZXIiLGhudD0ibmctYW5pbWF0aW5nIixFVj0iLm5nLWFuaW1hdGluZyI7ZnVuY3Rpb24geXYobil7aWYodHlwZW9mIG49PSJudW1iZXIiKXJldHVybiBuO2xldCB0PW4ubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpLyk7cmV0dXJuIXR8fHQubGVuZ3RoPDI/MDprVihwYXJzZUZsb2F0KHRbMV0pLHRbMl0pfWZ1bmN0aW9uIGtWKG4sdCl7c3dpdGNoKHQpe2Nhc2UicyI6cmV0dXJuIG4qZDN0O2RlZmF1bHQ6cmV0dXJuIG59fWZ1bmN0aW9uIHhBKG4sdCxlKXtyZXR1cm4gbi5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKT9uOnUzdChuLHQsZSl9ZnVuY3Rpb24gdTN0KG4sdCxlKXtsZXQgbz0vXigtP1tcLlxkXSspKG0/cykoPzpccysoLT9bXC5cZF0rKShtP3MpKT8oPzpccysoWy1hLXpdKyg/OlwoLis/XCkpPykpPyQvaSxpLGE9MCxyPSIiO2lmKHR5cGVvZiBuPT0ic3RyaW5nIil7bGV0IHM9bi5tYXRjaChvKTtpZihzPT09bnVsbClyZXR1cm4gdC5wdXNoKGBUaGUgcHJvdmlkZWQgdGltaW5nIHZhbHVlICIke259IiBpcyBpbnZhbGlkLmApLHtkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiIifTtpPWtWKHBhcnNlRmxvYXQoc1sxXSksc1syXSk7bGV0IGw9c1szXTtsIT1udWxsJiYoYT1rVihwYXJzZUZsb2F0KGwpLHNbNF0pKTtsZXQgYz1zWzVdO2MmJihyPWMpfWVsc2UgaT1uO2lmKCFlKXtsZXQgcz0hMSxsPXQubGVuZ3RoO2k8MCYmKHQucHVzaCgiRHVyYXRpb24gdmFsdWVzIGJlbG93IDAgYXJlIG5vdCBhbGxvd2VkIGZvciB0aGlzIGFuaW1hdGlvbiBzdGVwLiIpLHM9ITApLGE8MCYmKHQucHVzaCgiRGVsYXkgdmFsdWVzIGJlbG93IDAgYXJlIG5vdCBhbGxvd2VkIGZvciB0aGlzIGFuaW1hdGlvbiBzdGVwLiIpLHM9ITApLHMmJnQuc3BsaWNlKGwsMCxgVGhlIHByb3ZpZGVkIHRpbWluZyB2YWx1ZSAiJHtufSIgaXMgaW52YWxpZC5gKX1yZXR1cm57ZHVyYXRpb246aSxkZWxheTphLGVhc2luZzpyfX1mdW5jdGlvbiBvMyhuLHQ9e30pe3JldHVybiBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGU9Pnt0W2VdPW5bZV19KSx0fWZ1bmN0aW9uIGUzKG4sdCxlPXt9KXtpZih0KWZvcihsZXQgbyBpbiBuKWVbb109bltvXTtlbHNlIG8zKG4sZSk7cmV0dXJuIGV9ZnVuY3Rpb24gX250KG4sdCxlKXtyZXR1cm4gZT90KyI6IitlKyI7IjoiIn1mdW5jdGlvbiBWbnQobil7bGV0IHQ9IiI7Zm9yKGxldCBlPTA7ZTxuLnN0eWxlLmxlbmd0aDtlKyspe2xldCBvPW4uc3R5bGUuaXRlbShlKTt0Kz1fbnQobixvLG4uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShvKSl9Zm9yKGxldCBlIGluIG4uc3R5bGUpe2lmKCFuLnN0eWxlLmhhc093blByb3BlcnR5KGUpfHxlLnN0YXJ0c1dpdGgoIl8iKSljb250aW51ZTtsZXQgbz1DM3QoZSk7dCs9X250KG4sbyxuLnN0eWxlW2VdKX1uLnNldEF0dHJpYnV0ZSgic3R5bGUiLHQpfWZ1bmN0aW9uIFZiKG4sdCxlKXtuLnN0eWxlJiYoT2JqZWN0LmtleXModCkuZm9yRWFjaChvPT57bGV0IGk9SlYobyk7ZSYmIWUuaGFzT3duUHJvcGVydHkobykmJihlW29dPW4uc3R5bGVbaV0pLG4uc3R5bGVbaV09dFtvXX0pLEdWKCkmJlZudChuKSl9ZnVuY3Rpb24geHYobix0KXtuLnN0eWxlJiYoT2JqZWN0LmtleXModCkuZm9yRWFjaChlPT57bGV0IG89SlYoZSk7bi5zdHlsZVtvXT0iIn0pLEdWKCkmJlZudChuKSl9ZnVuY3Rpb24gb0Uobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5sZW5ndGg9PTE/blswXTp1QShuKTpufWZ1bmN0aW9uIGgzdChuLHQsZSl7bGV0IG89dC5wYXJhbXN8fHt9LGk9am50KG4pO2kubGVuZ3RoJiZpLmZvckVhY2goYT0+e28uaGFzT3duUHJvcGVydHkoYSl8fGUucHVzaChgVW5hYmxlIHRvIHJlc29sdmUgdGhlIGxvY2FsIGFuaW1hdGlvbiBwYXJhbSAke2F9IGluIHRoZSBnaXZlbiBsaXN0IG9mIHZhbHVlc2ApfSl9dmFyIE5WPW5ldyBSZWdFeHAoYCR7TG50fVxccyooLis/KVxccyoke2czdH1gLCJnIik7ZnVuY3Rpb24gam50KG4pe2xldCB0PVtdO2lmKHR5cGVvZiBuPT0ic3RyaW5nIil7bGV0IGU7Zm9yKDtlPU5WLmV4ZWMobik7KXQucHVzaChlWzFdKTtOVi5sYXN0SW5kZXg9MH1yZXR1cm4gdH1mdW5jdGlvbiBEQShuLHQsZSl7bGV0IG89bi50b1N0cmluZygpLGk9by5yZXBsYWNlKE5WLChhLHIpPT57bGV0IHM9dFtyXTtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShyKXx8KGUucHVzaChgUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIGFuaW1hdGlvbiBwYXJhbSAke3J9YCkscz0iIikscy50b1N0cmluZygpfSk7cmV0dXJuIGk9PW8/bjppfWZ1bmN0aW9uIHZBKG4pe2xldCB0PVtdLGU9bi5uZXh0KCk7Zm9yKDshZS5kb25lOyl0LnB1c2goZS52YWx1ZSksZT1uLm5leHQoKTtyZXR1cm4gdH12YXIgXzN0PS8tKyhbYS16MC05XSkvZztmdW5jdGlvbiBKVihuKXtyZXR1cm4gbi5yZXBsYWNlKF8zdCwoLi4udCk9PnRbMV0udG9VcHBlckNhc2UoKSl9ZnVuY3Rpb24gQzN0KG4pe3JldHVybiBuLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csIiQxLSQyIikudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBVbnQobix0KXtyZXR1cm4gbj09PTB8fHQ9PT0wfWZ1bmN0aW9uIFludChuLHQsZSl7bGV0IG89T2JqZWN0LmtleXMoZSk7aWYoby5sZW5ndGgmJnQubGVuZ3RoKXtsZXQgYT10WzBdLHI9W107aWYoby5mb3JFYWNoKHM9PnthLmhhc093blByb3BlcnR5KHMpfHxyLnB1c2gocyksYVtzXT1lW3NdfSksci5sZW5ndGgpZm9yKHZhciBpPTE7aTx0Lmxlbmd0aDtpKyspe2xldCBzPXRbaV07ci5mb3JFYWNoKGZ1bmN0aW9uKGwpe3NbbF09JFYobixsKX0pfX1yZXR1cm4gdH1mdW5jdGlvbiBUZyhuLHQsZSl7c3dpdGNoKHQudHlwZSl7Y2FzZSA3OnJldHVybiBuLnZpc2l0VHJpZ2dlcih0LGUpO2Nhc2UgMDpyZXR1cm4gbi52aXNpdFN0YXRlKHQsZSk7Y2FzZSAxOnJldHVybiBuLnZpc2l0VHJhbnNpdGlvbih0LGUpO2Nhc2UgMjpyZXR1cm4gbi52aXNpdFNlcXVlbmNlKHQsZSk7Y2FzZSAzOnJldHVybiBuLnZpc2l0R3JvdXAodCxlKTtjYXNlIDQ6cmV0dXJuIG4udmlzaXRBbmltYXRlKHQsZSk7Y2FzZSA1OnJldHVybiBuLnZpc2l0S2V5ZnJhbWVzKHQsZSk7Y2FzZSA2OnJldHVybiBuLnZpc2l0U3R5bGUodCxlKTtjYXNlIDg6cmV0dXJuIG4udmlzaXRSZWZlcmVuY2UodCxlKTtjYXNlIDk6cmV0dXJuIG4udmlzaXRBbmltYXRlQ2hpbGQodCxlKTtjYXNlIDEwOnJldHVybiBuLnZpc2l0QW5pbWF0ZVJlZih0LGUpO2Nhc2UgMTE6cmV0dXJuIG4udmlzaXRRdWVyeSh0LGUpO2Nhc2UgMTI6cmV0dXJuIG4udmlzaXRTdGFnZ2VyKHQsZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byByZXNvbHZlIGFuaW1hdGlvbiBtZXRhZGF0YSBub2RlICMke3QudHlwZX1gKX19ZnVuY3Rpb24gJFYobix0KXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUobilbdF19dmFyIHdBPSIqIjtmdW5jdGlvbiBNM3Qobix0KXtsZXQgZT1bXTtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP24uc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKG89PmIzdChvLGUsdCkpOmUucHVzaChuKSxlfWZ1bmN0aW9uIGIzdChuLHQsZSl7aWYoblswXT09IjoiKXtsZXQgbD1PM3QobixlKTtpZih0eXBlb2YgbD09ImZ1bmN0aW9uIil7dC5wdXNoKGwpO3JldHVybn1uPWx9bGV0IG89bi5tYXRjaCgvXihcKnxbLVx3XSspXHMqKDw/Wz0tXT4pXHMqKFwqfFstXHddKykkLyk7aWYobz09bnVsbHx8by5sZW5ndGg8NClyZXR1cm4gZS5wdXNoKGBUaGUgcHJvdmlkZWQgdHJhbnNpdGlvbiBleHByZXNzaW9uICIke259IiBpcyBub3Qgc3VwcG9ydGVkYCksdDtsZXQgaT1vWzFdLGE9b1syXSxyPW9bM107dC5wdXNoKENudChpLHIpKTtsZXQgcz1pPT13QSYmcj09d0E7YVswXT09IjwiJiYhcyYmdC5wdXNoKENudChyLGkpKX1mdW5jdGlvbiBPM3Qobix0KXtzd2l0Y2gobil7Y2FzZSI6ZW50ZXIiOnJldHVybiJ2b2lkID0+ICoiO2Nhc2UiOmxlYXZlIjpyZXR1cm4iKiA9PiB2b2lkIjtjYXNlIjppbmNyZW1lbnQiOnJldHVybihlLG8pPT5wYXJzZUZsb2F0KG8pPnBhcnNlRmxvYXQoZSk7Y2FzZSI6ZGVjcmVtZW50IjpyZXR1cm4oZSxvKT0+cGFyc2VGbG9hdChvKTxwYXJzZUZsb2F0KGUpO2RlZmF1bHQ6cmV0dXJuIHQucHVzaChgVGhlIHRyYW5zaXRpb24gYWxpYXMgdmFsdWUgIiR7bn0iIGlzIG5vdCBzdXBwb3J0ZWRgKSwiKiA9PiAqIn19dmFyIGJBPW5ldyBTZXQoWyJ0cnVlIiwiMSJdKSxPQT1uZXcgU2V0KFsiZmFsc2UiLCIwIl0pO2Z1bmN0aW9uIENudChuLHQpe2xldCBlPWJBLmhhcyhuKXx8T0EuaGFzKG4pLG89YkEuaGFzKHQpfHxPQS5oYXModCk7cmV0dXJuKGksYSk9PntsZXQgcj1uPT13QXx8bj09aSxzPXQ9PXdBfHx0PT1hO3JldHVybiFyJiZlJiZ0eXBlb2YgaT09ImJvb2xlYW4iJiYocj1pP2JBLmhhcyhuKTpPQS5oYXMobikpLCFzJiZvJiZ0eXBlb2YgYT09ImJvb2xlYW4iJiYocz1hP2JBLmhhcyh0KTpPQS5oYXModCkpLHImJnN9fXZhciBHbnQ9IjpzZWxmIixQM3Q9bmV3IFJlZ0V4cChgcyoke0dudH1zKiw/YCwiZyIpO2Z1bmN0aW9uIFdudChuLHQsZSl7cmV0dXJuIG5ldyBUVihuKS5idWlsZCh0LGUpfXZhciBNbnQ9IiIsVFY9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZHJpdmVyPXR9YnVpbGQodCxlKXtsZXQgbz1uZXcgQVYoZSk7cmV0dXJuIHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUobyksVGcodGhpcyxvRSh0KSxvKX1fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZSh0KXt0LmN1cnJlbnRRdWVyeVNlbGVjdG9yPU1udCx0LmNvbGxlY3RlZFN0eWxlcz17fSx0LmNvbGxlY3RlZFN0eWxlc1tNbnRdPXt9LHQuY3VycmVudFRpbWU9MH12aXNpdFRyaWdnZXIodCxlKXtsZXQgbz1lLnF1ZXJ5Q291bnQ9MCxpPWUuZGVwQ291bnQ9MCxhPVtdLHI9W107cmV0dXJuIHQubmFtZS5jaGFyQXQoMCk9PSJAIiYmZS5lcnJvcnMucHVzaCgiYW5pbWF0aW9uIHRyaWdnZXJzIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGFuIGBAYCBzaWduIChlLmcuIHRyaWdnZXIoJ0Bmb28nLCBbLi4uXSkpIiksdC5kZWZpbml0aW9ucy5mb3JFYWNoKHM9PntpZih0aGlzLl9yZXNldENvbnRleHRTdHlsZVRpbWluZ1N0YXRlKGUpLHMudHlwZT09MCl7bGV0IGw9cyxjPWwubmFtZTtjLnRvU3RyaW5nKCkuc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKG09PntsLm5hbWU9bSxhLnB1c2godGhpcy52aXNpdFN0YXRlKGwsZSkpfSksbC5uYW1lPWN9ZWxzZSBpZihzLnR5cGU9PTEpe2xldCBsPXRoaXMudmlzaXRUcmFuc2l0aW9uKHMsZSk7bys9bC5xdWVyeUNvdW50LGkrPWwuZGVwQ291bnQsci5wdXNoKGwpfWVsc2UgZS5lcnJvcnMucHVzaCgib25seSBzdGF0ZSgpIGFuZCB0cmFuc2l0aW9uKCkgZGVmaW5pdGlvbnMgY2FuIHNpdCBpbnNpZGUgb2YgYSB0cmlnZ2VyKCkiKX0pLHt0eXBlOjcsbmFtZTp0Lm5hbWUsc3RhdGVzOmEsdHJhbnNpdGlvbnM6cixxdWVyeUNvdW50Om8sZGVwQ291bnQ6aSxvcHRpb25zOm51bGx9fXZpc2l0U3RhdGUodCxlKXtsZXQgbz10aGlzLnZpc2l0U3R5bGUodC5zdHlsZXMsZSksaT10Lm9wdGlvbnMmJnQub3B0aW9ucy5wYXJhbXN8fG51bGw7aWYoby5jb250YWluc0R5bmFtaWNTdHlsZXMpe2xldCBhPW5ldyBTZXQscj1pfHx7fTtpZihvLnN0eWxlcy5mb3JFYWNoKHM9PntpZihTQShzKSl7bGV0IGw9cztPYmplY3Qua2V5cyhsKS5mb3JFYWNoKGM9PntqbnQobFtjXSkuZm9yRWFjaChtPT57ci5oYXNPd25Qcm9wZXJ0eShtKXx8YS5hZGQobSl9KX0pfX0pLGEuc2l6ZSl7bGV0IHM9dkEoYS52YWx1ZXMoKSk7ZS5lcnJvcnMucHVzaChgc3RhdGUoIiR7dC5uYW1lfSIsIC4uLikgbXVzdCBkZWZpbmUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZm9sbG93aW5nIHN0eWxlIHN1YnN0aXR1dGlvbnM6ICR7cy5qb2luKCIsICIpfWApfX1yZXR1cm57dHlwZTowLG5hbWU6dC5uYW1lLHN0eWxlOm8sb3B0aW9uczppP3twYXJhbXM6aX06bnVsbH19dmlzaXRUcmFuc2l0aW9uKHQsZSl7ZS5xdWVyeUNvdW50PTAsZS5kZXBDb3VudD0wO2xldCBvPVRnKHRoaXMsb0UodC5hbmltYXRpb24pLGUpLGk9TTN0KHQuZXhwcixlLmVycm9ycyk7cmV0dXJue3R5cGU6MSxtYXRjaGVyczppLGFuaW1hdGlvbjpvLHF1ZXJ5Q291bnQ6ZS5xdWVyeUNvdW50LGRlcENvdW50OmUuZGVwQ291bnQsb3B0aW9uczpQdih0Lm9wdGlvbnMpfX12aXNpdFNlcXVlbmNlKHQsZSl7cmV0dXJue3R5cGU6MixzdGVwczp0LnN0ZXBzLm1hcChvPT5UZyh0aGlzLG8sZSkpLG9wdGlvbnM6UHYodC5vcHRpb25zKX19dmlzaXRHcm91cCh0LGUpe2xldCBvPWUuY3VycmVudFRpbWUsaT0wLGE9dC5zdGVwcy5tYXAocj0+e2UuY3VycmVudFRpbWU9bztsZXQgcz1UZyh0aGlzLHIsZSk7cmV0dXJuIGk9TWF0aC5tYXgoaSxlLmN1cnJlbnRUaW1lKSxzfSk7cmV0dXJuIGUuY3VycmVudFRpbWU9aSx7dHlwZTozLHN0ZXBzOmEsb3B0aW9uczpQdih0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGUodCxlKXtsZXQgbz13M3QodC50aW1pbmdzLGUuZXJyb3JzKTtlLmN1cnJlbnRBbmltYXRlVGltaW5ncz1vO2xldCBpLGE9dC5zdHlsZXM/dC5zdHlsZXM6TG4oe30pO2lmKGEudHlwZT09NSlpPXRoaXMudmlzaXRLZXlmcmFtZXMoYSxlKTtlbHNle2xldCByPXQuc3R5bGVzLHM9ITE7aWYoIXIpe3M9ITA7bGV0IGM9e307by5lYXNpbmcmJihjLmVhc2luZz1vLmVhc2luZykscj1MbihjKX1lLmN1cnJlbnRUaW1lKz1vLmR1cmF0aW9uK28uZGVsYXk7bGV0IGw9dGhpcy52aXNpdFN0eWxlKHIsZSk7bC5pc0VtcHR5U3RlcD1zLGk9bH1yZXR1cm4gZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx7dHlwZTo0LHRpbWluZ3M6byxzdHlsZTppLG9wdGlvbnM6bnVsbH19dmlzaXRTdHlsZSh0LGUpe2xldCBvPXRoaXMuX21ha2VTdHlsZUFzdCh0LGUpO3JldHVybiB0aGlzLl92YWxpZGF0ZVN0eWxlQXN0KG8sZSksb31fbWFrZVN0eWxlQXN0KHQsZSl7bGV0IG89W107QXJyYXkuaXNBcnJheSh0LnN0eWxlcyk/dC5zdHlsZXMuZm9yRWFjaChyPT57dHlwZW9mIHI9PSJzdHJpbmciP3I9PUJiP28ucHVzaChyKTplLmVycm9ycy5wdXNoKGBUaGUgcHJvdmlkZWQgc3R5bGUgc3RyaW5nIHZhbHVlICR7cn0gaXMgbm90IGFsbG93ZWQuYCk6by5wdXNoKHIpfSk6by5wdXNoKHQuc3R5bGVzKTtsZXQgaT0hMSxhPW51bGw7cmV0dXJuIG8uZm9yRWFjaChyPT57aWYoU0Eocikpe2xldCBzPXIsbD1zLmVhc2luZztpZihsJiYoYT1sLGRlbGV0ZSBzLmVhc2luZyksIWkpe2ZvcihsZXQgYyBpbiBzKWlmKHNbY10udG9TdHJpbmcoKS5pbmRleE9mKExudCk+PTApe2k9ITA7YnJlYWt9fX19KSx7dHlwZTo2LHN0eWxlczpvLGVhc2luZzphLG9mZnNldDp0Lm9mZnNldCxjb250YWluc0R5bmFtaWNTdHlsZXM6aSxvcHRpb25zOm51bGx9fV92YWxpZGF0ZVN0eWxlQXN0KHQsZSl7bGV0IG89ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MsaT1lLmN1cnJlbnRUaW1lLGE9ZS5jdXJyZW50VGltZTtvJiZhPjAmJihhLT1vLmR1cmF0aW9uK28uZGVsYXkpLHQuc3R5bGVzLmZvckVhY2gocj0+e3R5cGVvZiByIT0ic3RyaW5nIiYmT2JqZWN0LmtleXMocikuZm9yRWFjaChzPT57aWYoIXRoaXMuX2RyaXZlci52YWxpZGF0ZVN0eWxlUHJvcGVydHkocykpe2UuZXJyb3JzLnB1c2goYFRoZSBwcm92aWRlZCBhbmltYXRpb24gcHJvcGVydHkgIiR7c30iIGlzIG5vdCBhIHN1cHBvcnRlZCBDU1MgcHJvcGVydHkgZm9yIGFuaW1hdGlvbnNgKTtyZXR1cm59bGV0IGw9ZS5jb2xsZWN0ZWRTdHlsZXNbZS5jdXJyZW50UXVlcnlTZWxlY3Rvcl0sYz1sW3NdLG09ITA7YyYmKGEhPWkmJmE+PWMuc3RhcnRUaW1lJiZpPD1jLmVuZFRpbWUmJihlLmVycm9ycy5wdXNoKGBUaGUgQ1NTIHByb3BlcnR5ICIke3N9IiB0aGF0IGV4aXN0cyBiZXR3ZWVuIHRoZSB0aW1lcyBvZiAiJHtjLnN0YXJ0VGltZX1tcyIgYW5kICIke2MuZW5kVGltZX1tcyIgaXMgYWxzbyBiZWluZyBhbmltYXRlZCBpbiBhIHBhcmFsbGVsIGFuaW1hdGlvbiBiZXR3ZWVuIHRoZSB0aW1lcyBvZiAiJHthfW1zIiBhbmQgIiR7aX1tcyJgKSxtPSExKSxhPWMuc3RhcnRUaW1lKSxtJiYobFtzXT17c3RhcnRUaW1lOmEsZW5kVGltZTppfSksZS5vcHRpb25zJiZoM3QocltzXSxlLm9wdGlvbnMsZS5lcnJvcnMpfSl9KX12aXNpdEtleWZyYW1lcyh0LGUpe2xldCBvPXt0eXBlOjUsc3R5bGVzOltdLG9wdGlvbnM6bnVsbH07aWYoIWUuY3VycmVudEFuaW1hdGVUaW1pbmdzKXJldHVybiBlLmVycm9ycy5wdXNoKCJrZXlmcmFtZXMoKSBtdXN0IGJlIHBsYWNlZCBpbnNpZGUgb2YgYSBjYWxsIHRvIGFuaW1hdGUoKSIpLG87bGV0IGk9MSxhPTAscj1bXSxzPSExLGw9ITEsYz0wLG09dC5zdGVwcy5tYXAoTz0+e2xldCBiPXRoaXMuX21ha2VTdHlsZUFzdChPLGUpLFI9Yi5vZmZzZXQhPW51bGw/Yi5vZmZzZXQ6djN0KGIuc3R5bGVzKSxFPTA7cmV0dXJuIFIhPW51bGwmJihhKyssRT1iLm9mZnNldD1SKSxsPWx8fEU8MHx8RT4xLHM9c3x8RTxjLGM9RSxyLnB1c2goRSksYn0pO2wmJmUuZXJyb3JzLnB1c2goIlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwga2V5ZnJhbWUgb2Zmc2V0cyBhcmUgYmV0d2VlbiAwIGFuZCAxIikscyYmZS5lcnJvcnMucHVzaCgiUGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBrZXlmcmFtZSBvZmZzZXRzIGFyZSBpbiBvcmRlciIpO2xldCBmPXQuc3RlcHMubGVuZ3RoLHA9MDthPjAmJmE8Zj9lLmVycm9ycy5wdXNoKCJOb3QgYWxsIHN0eWxlKCkgc3RlcHMgd2l0aGluIHRoZSBkZWNsYXJlZCBrZXlmcmFtZXMoKSBjb250YWluIG9mZnNldHMiKTphPT0wJiYocD1pLyhmLTEpKTtsZXQgZz1mLTEsXz1lLmN1cnJlbnRUaW1lLE09ZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3MseT1NLmR1cmF0aW9uO3JldHVybiBtLmZvckVhY2goKE8sYik9PntsZXQgUj1wPjA/Yj09Zz8xOnAqYjpyW2JdLEU9Uip5O2UuY3VycmVudFRpbWU9XytNLmRlbGF5K0UsTS5kdXJhdGlvbj1FLHRoaXMuX3ZhbGlkYXRlU3R5bGVBc3QoTyxlKSxPLm9mZnNldD1SLG8uc3R5bGVzLnB1c2goTyl9KSxvfXZpc2l0UmVmZXJlbmNlKHQsZSl7cmV0dXJue3R5cGU6OCxhbmltYXRpb246VGcodGhpcyxvRSh0LmFuaW1hdGlvbiksZSksb3B0aW9uczpQdih0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGVDaGlsZCh0LGUpe3JldHVybiBlLmRlcENvdW50Kysse3R5cGU6OSxvcHRpb25zOlB2KHQub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZVJlZih0LGUpe3JldHVybnt0eXBlOjEwLGFuaW1hdGlvbjp0aGlzLnZpc2l0UmVmZXJlbmNlKHQuYW5pbWF0aW9uLGUpLG9wdGlvbnM6UHYodC5vcHRpb25zKX19dmlzaXRRdWVyeSh0LGUpe2xldCBvPWUuY3VycmVudFF1ZXJ5U2VsZWN0b3IsaT10Lm9wdGlvbnN8fHt9O2UucXVlcnlDb3VudCsrLGUuY3VycmVudFF1ZXJ5PXQ7bGV0W2Escl09eTN0KHQuc2VsZWN0b3IpO2UuY3VycmVudFF1ZXJ5U2VsZWN0b3I9by5sZW5ndGg/bysiICIrYTphLEFnKGUuY29sbGVjdGVkU3R5bGVzLGUuY3VycmVudFF1ZXJ5U2VsZWN0b3Ise30pO2xldCBzPVRnKHRoaXMsb0UodC5hbmltYXRpb24pLGUpO3JldHVybiBlLmN1cnJlbnRRdWVyeT1udWxsLGUuY3VycmVudFF1ZXJ5U2VsZWN0b3I9byx7dHlwZToxMSxzZWxlY3RvcjphLGxpbWl0OmkubGltaXR8fDAsb3B0aW9uYWw6ISFpLm9wdGlvbmFsLGluY2x1ZGVTZWxmOnIsYW5pbWF0aW9uOnMsb3JpZ2luYWxTZWxlY3Rvcjp0LnNlbGVjdG9yLG9wdGlvbnM6UHYodC5vcHRpb25zKX19dmlzaXRTdGFnZ2VyKHQsZSl7ZS5jdXJyZW50UXVlcnl8fGUuZXJyb3JzLnB1c2goInN0YWdnZXIoKSBjYW4gb25seSBiZSB1c2VkIGluc2lkZSBvZiBxdWVyeSgpIik7bGV0IG89dC50aW1pbmdzPT09ImZ1bGwiP3tkdXJhdGlvbjowLGRlbGF5OjAsZWFzaW5nOiJmdWxsIn06eEEodC50aW1pbmdzLGUuZXJyb3JzLCEwKTtyZXR1cm57dHlwZToxMixhbmltYXRpb246VGcodGhpcyxvRSh0LmFuaW1hdGlvbiksZSksdGltaW5nczpvLG9wdGlvbnM6bnVsbH19fTtmdW5jdGlvbiB5M3Qobil7bGV0IHQ9ISFuLnNwbGl0KC9ccyosXHMqLykuZmluZChlPT5lPT1HbnQpO3JldHVybiB0JiYobj1uLnJlcGxhY2UoUDN0LCIiKSksbj1uLnJlcGxhY2UoL0BcKi9nLHlBKS5yZXBsYWNlKC9AXHcrL2csZT0+eUErIi0iK2Uuc3Vic3RyKDEpKS5yZXBsYWNlKC86YW5pbWF0aW5nL2csRVYpLFtuLHRdfWZ1bmN0aW9uIHgzdChuKXtyZXR1cm4gbj9vMyhuKTpudWxsfXZhciBBVj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmVycm9ycz10LHRoaXMucXVlcnlDb3VudD0wLHRoaXMuZGVwQ291bnQ9MCx0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPW51bGwsdGhpcy5jdXJyZW50UXVlcnk9bnVsbCx0aGlzLmN1cnJlbnRRdWVyeVNlbGVjdG9yPW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLmN1cnJlbnRUaW1lPTAsdGhpcy5jb2xsZWN0ZWRTdHlsZXM9e30sdGhpcy5vcHRpb25zPW51bGx9fTtmdW5jdGlvbiB2M3Qobil7aWYodHlwZW9mIG49PSJzdHJpbmciKXJldHVybiBudWxsO2xldCB0PW51bGw7aWYoQXJyYXkuaXNBcnJheShuKSluLmZvckVhY2goZT0+e2lmKFNBKGUpJiZlLmhhc093blByb3BlcnR5KCJvZmZzZXQiKSl7bGV0IG89ZTt0PXBhcnNlRmxvYXQoby5vZmZzZXQpLGRlbGV0ZSBvLm9mZnNldH19KTtlbHNlIGlmKFNBKG4pJiZuLmhhc093blByb3BlcnR5KCJvZmZzZXQiKSl7bGV0IGU9bjt0PXBhcnNlRmxvYXQoZS5vZmZzZXQpLGRlbGV0ZSBlLm9mZnNldH1yZXR1cm4gdH1mdW5jdGlvbiBTQShuKXtyZXR1cm4hQXJyYXkuaXNBcnJheShuKSYmdHlwZW9mIG49PSJvYmplY3QifWZ1bmN0aW9uIHczdChuLHQpe2xldCBlPW51bGw7aWYobi5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKSllPW47ZWxzZSBpZih0eXBlb2Ygbj09Im51bWJlciIpe2xldCBhPXhBKG4sdCkuZHVyYXRpb247cmV0dXJuIFBWKGEsMCwiIil9bGV0IG89bjtpZihvLnNwbGl0KC9ccysvKS5zb21lKGE9PmEuY2hhckF0KDApPT0ieyImJmEuY2hhckF0KDEpPT0ieyIpKXtsZXQgYT1QVigwLDAsIiIpO3JldHVybiBhLmR5bmFtaWM9ITAsYS5zdHJWYWx1ZT1vLGF9cmV0dXJuIGU9ZXx8eEEobyx0KSxQVihlLmR1cmF0aW9uLGUuZGVsYXksZS5lYXNpbmcpfWZ1bmN0aW9uIFB2KG4pe3JldHVybiBuPyhuPW8zKG4pLG4ucGFyYW1zJiYobi5wYXJhbXM9eDN0KG4ucGFyYW1zKSkpOm49e30sbn1mdW5jdGlvbiBQVihuLHQsZSl7cmV0dXJue2R1cmF0aW9uOm4sZGVsYXk6dCxlYXNpbmc6ZX19ZnVuY3Rpb24gdGoobix0LGUsbyxpLGEscj1udWxsLHM9ITEpe3JldHVybnt0eXBlOjEsZWxlbWVudDpuLGtleWZyYW1lczp0LHByZVN0eWxlUHJvcHM6ZSxwb3N0U3R5bGVQcm9wczpvLGR1cmF0aW9uOmksZGVsYXk6YSx0b3RhbFRpbWU6aSthLGVhc2luZzpyLHN1YlRpbWVsaW5lOnN9fXZhciBhRT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWNvbnN1bWUodCl7bGV0IGU9dGhpcy5fbWFwLmdldCh0KTtyZXR1cm4gZT90aGlzLl9tYXAuZGVsZXRlKHQpOmU9W10sZX1hcHBlbmQodCxlKXtsZXQgbz10aGlzLl9tYXAuZ2V0KHQpO298fHRoaXMuX21hcC5zZXQodCxvPVtdKSxvLnB1c2goLi4uZSl9aGFzKHQpe3JldHVybiB0aGlzLl9tYXAuaGFzKHQpfWNsZWFyKCl7dGhpcy5fbWFwLmNsZWFyKCl9fTt2YXIgUzN0PTEsUjN0PSI6ZW50ZXIiLEUzdD1uZXcgUmVnRXhwKFIzdCwiZyIpLGszdD0iOmxlYXZlIixOM3Q9bmV3IFJlZ0V4cChrM3QsImciKTtmdW5jdGlvbiBxbnQobix0LGUsbyxpLGE9e30scj17fSxzLGwsYz1bXSl7cmV0dXJuIG5ldyBEVigpLmJ1aWxkS2V5ZnJhbWVzKG4sdCxlLG8saSxhLHIscyxsLGMpfXZhciBEVj1jbGFzc3tidWlsZEtleWZyYW1lcyh0LGUsbyxpLGEscixzLGwsYyxtPVtdKXtjPWN8fG5ldyBhRTtsZXQgZj1uZXcgckUodCxlLGMsaSxhLG0sW10pO2Yub3B0aW9ucz1sLGYuY3VycmVudFRpbWVsaW5lLnNldFN0eWxlcyhbcl0sbnVsbCxmLmVycm9ycyxsKSxUZyh0aGlzLG8sZik7bGV0IHA9Zi50aW1lbGluZXMuZmlsdGVyKGc9PmcuY29udGFpbnNBbmltYXRpb24oKSk7aWYocC5sZW5ndGgmJk9iamVjdC5rZXlzKHMpLmxlbmd0aCl7bGV0IGc9cFtwLmxlbmd0aC0xXTtnLmFsbG93T25seVRpbWVsaW5lU3R5bGVzKCl8fGcuc2V0U3R5bGVzKFtzXSxudWxsLGYuZXJyb3JzLGwpfXJldHVybiBwLmxlbmd0aD9wLm1hcChnPT5nLmJ1aWxkS2V5ZnJhbWVzKCkpOlt0aihlLFtdLFtdLFtdLDAsMCwiIiwhMSldfXZpc2l0VHJpZ2dlcih0LGUpe312aXNpdFN0YXRlKHQsZSl7fXZpc2l0VHJhbnNpdGlvbih0LGUpe312aXNpdEFuaW1hdGVDaGlsZCh0LGUpe2xldCBvPWUuc3ViSW5zdHJ1Y3Rpb25zLmNvbnN1bWUoZS5lbGVtZW50KTtpZihvKXtsZXQgaT1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKSxhPWUuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lLHI9dGhpcy5fdmlzaXRTdWJJbnN0cnVjdGlvbnMobyxpLGkub3B0aW9ucyk7YSE9ciYmZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUocil9ZS5wcmV2aW91c05vZGU9dH12aXNpdEFuaW1hdGVSZWYodCxlKXtsZXQgbz1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKTtvLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLHRoaXMudmlzaXRSZWZlcmVuY2UodC5hbmltYXRpb24sbyksZS50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoby5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpLGUucHJldmlvdXNOb2RlPXR9X3Zpc2l0U3ViSW5zdHJ1Y3Rpb25zKHQsZSxvKXtsZXQgYT1lLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSxyPW8uZHVyYXRpb24hPW51bGw/eXYoby5kdXJhdGlvbik6bnVsbCxzPW8uZGVsYXkhPW51bGw/eXYoby5kZWxheSk6bnVsbDtyZXR1cm4gciE9PTAmJnQuZm9yRWFjaChsPT57bGV0IGM9ZS5hcHBlbmRJbnN0cnVjdGlvblRvVGltZWxpbmUobCxyLHMpO2E9TWF0aC5tYXgoYSxjLmR1cmF0aW9uK2MuZGVsYXkpfSksYX12aXNpdFJlZmVyZW5jZSh0LGUpe2UudXBkYXRlT3B0aW9ucyh0Lm9wdGlvbnMsITApLFRnKHRoaXMsdC5hbmltYXRpb24sZSksZS5wcmV2aW91c05vZGU9dH12aXNpdFNlcXVlbmNlKHQsZSl7bGV0IG89ZS5zdWJDb250ZXh0Q291bnQsaT1lLGE9dC5vcHRpb25zO2lmKGEmJihhLnBhcmFtc3x8YS5kZWxheSkmJihpPWUuY3JlYXRlU3ViQ29udGV4dChhKSxpLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLGEuZGVsYXkhPW51bGwpKXtpLnByZXZpb3VzTm9kZS50eXBlPT02JiYoaS5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCksaS5wcmV2aW91c05vZGU9UkEpO2xldCByPXl2KGEuZGVsYXkpO2kuZGVsYXlOZXh0U3RlcChyKX10LnN0ZXBzLmxlbmd0aCYmKHQuc3RlcHMuZm9yRWFjaChyPT5UZyh0aGlzLHIsaSkpLGkuY3VycmVudFRpbWVsaW5lLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLGkuc3ViQ29udGV4dENvdW50Pm8mJmkudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCkpLGUucHJldmlvdXNOb2RlPXR9dmlzaXRHcm91cCh0LGUpe2xldCBvPVtdLGk9ZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUsYT10Lm9wdGlvbnMmJnQub3B0aW9ucy5kZWxheT95dih0Lm9wdGlvbnMuZGVsYXkpOjA7dC5zdGVwcy5mb3JFYWNoKHI9PntsZXQgcz1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKTthJiZzLmRlbGF5TmV4dFN0ZXAoYSksVGcodGhpcyxyLHMpLGk9TWF0aC5tYXgoaSxzLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSksby5wdXNoKHMuY3VycmVudFRpbWVsaW5lKX0pLG8uZm9yRWFjaChyPT5lLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHIpKSxlLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShpKSxlLnByZXZpb3VzTm9kZT10fV92aXNpdFRpbWluZyh0LGUpe2lmKHQuZHluYW1pYyl7bGV0IG89dC5zdHJWYWx1ZSxpPWUucGFyYW1zP0RBKG8sZS5wYXJhbXMsZS5lcnJvcnMpOm87cmV0dXJuIHhBKGksZS5lcnJvcnMpfWVsc2UgcmV0dXJue2R1cmF0aW9uOnQuZHVyYXRpb24sZGVsYXk6dC5kZWxheSxlYXNpbmc6dC5lYXNpbmd9fXZpc2l0QW5pbWF0ZSh0LGUpe2xldCBvPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuX3Zpc2l0VGltaW5nKHQudGltaW5ncyxlKSxpPWUuY3VycmVudFRpbWVsaW5lO28uZGVsYXkmJihlLmluY3JlbWVudFRpbWUoby5kZWxheSksaS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk7bGV0IGE9dC5zdHlsZTthLnR5cGU9PTU/dGhpcy52aXNpdEtleWZyYW1lcyhhLGUpOihlLmluY3JlbWVudFRpbWUoby5kdXJhdGlvbiksdGhpcy52aXNpdFN0eWxlKGEsZSksaS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSksZS5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCxlLnByZXZpb3VzTm9kZT10fXZpc2l0U3R5bGUodCxlKXtsZXQgbz1lLmN1cnJlbnRUaW1lbGluZSxpPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzOyFpJiZvLmdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKS5sZW5ndGgmJm8uZm9yd2FyZEZyYW1lKCk7bGV0IGE9aSYmaS5lYXNpbmd8fHQuZWFzaW5nO3QuaXNFbXB0eVN0ZXA/by5hcHBseUVtcHR5U3RlcChhKTpvLnNldFN0eWxlcyh0LnN0eWxlcyxhLGUuZXJyb3JzLGUub3B0aW9ucyksZS5wcmV2aW91c05vZGU9dH12aXNpdEtleWZyYW1lcyh0LGUpe2xldCBvPWUuY3VycmVudEFuaW1hdGVUaW1pbmdzLGk9ZS5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24sYT1vLmR1cmF0aW9uLHM9ZS5jcmVhdGVTdWJDb250ZXh0KCkuY3VycmVudFRpbWVsaW5lO3MuZWFzaW5nPW8uZWFzaW5nLHQuc3R5bGVzLmZvckVhY2gobD0+e2xldCBjPWwub2Zmc2V0fHwwO3MuZm9yd2FyZFRpbWUoYyphKSxzLnNldFN0eWxlcyhsLnN0eWxlcyxsLmVhc2luZyxlLmVycm9ycyxlLm9wdGlvbnMpLHMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCl9KSxlLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHMpLGUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGkrYSksZS5wcmV2aW91c05vZGU9dH12aXNpdFF1ZXJ5KHQsZSl7bGV0IG89ZS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUsaT10Lm9wdGlvbnN8fHt9LGE9aS5kZWxheT95dihpLmRlbGF5KTowO2EmJihlLnByZXZpb3VzTm9kZS50eXBlPT09Nnx8bz09MCYmZS5jdXJyZW50VGltZWxpbmUuZ2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpLmxlbmd0aCkmJihlLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSxlLnByZXZpb3VzTm9kZT1SQSk7bGV0IHI9byxzPWUuaW52b2tlUXVlcnkodC5zZWxlY3Rvcix0Lm9yaWdpbmFsU2VsZWN0b3IsdC5saW1pdCx0LmluY2x1ZGVTZWxmLCEhaS5vcHRpb25hbCxlLmVycm9ycyk7ZS5jdXJyZW50UXVlcnlUb3RhbD1zLmxlbmd0aDtsZXQgbD1udWxsO3MuZm9yRWFjaCgoYyxtKT0+e2UuY3VycmVudFF1ZXJ5SW5kZXg9bTtsZXQgZj1lLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zLGMpO2EmJmYuZGVsYXlOZXh0U3RlcChhKSxjPT09ZS5lbGVtZW50JiYobD1mLmN1cnJlbnRUaW1lbGluZSksVGcodGhpcyx0LmFuaW1hdGlvbixmKSxmLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKTtsZXQgcD1mLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZTtyPU1hdGgubWF4KHIscCl9KSxlLmN1cnJlbnRRdWVyeUluZGV4PTAsZS5jdXJyZW50UXVlcnlUb3RhbD0wLGUudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKHIpLGwmJihlLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKGwpLGUuY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpKSxlLnByZXZpb3VzTm9kZT10fXZpc2l0U3RhZ2dlcih0LGUpe2xldCBvPWUucGFyZW50Q29udGV4dCxpPWUuY3VycmVudFRpbWVsaW5lLGE9dC50aW1pbmdzLHI9TWF0aC5hYnMoYS5kdXJhdGlvbikscz1yKihlLmN1cnJlbnRRdWVyeVRvdGFsLTEpLGw9ciplLmN1cnJlbnRRdWVyeUluZGV4O3N3aXRjaChhLmR1cmF0aW9uPDA/InJldmVyc2UiOmEuZWFzaW5nKXtjYXNlInJldmVyc2UiOmw9cy1sO2JyZWFrO2Nhc2UiZnVsbCI6bD1vLmN1cnJlbnRTdGFnZ2VyVGltZTticmVha31sZXQgbT1lLmN1cnJlbnRUaW1lbGluZTtsJiZtLmRlbGF5TmV4dFN0ZXAobCk7bGV0IGY9bS5jdXJyZW50VGltZTtUZyh0aGlzLHQuYW5pbWF0aW9uLGUpLGUucHJldmlvdXNOb2RlPXQsby5jdXJyZW50U3RhZ2dlclRpbWU9aS5jdXJyZW50VGltZS1mKyhpLnN0YXJ0VGltZS1vLmN1cnJlbnRUaW1lbGluZS5zdGFydFRpbWUpfX0sUkE9e30sckU9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyxsKXt0aGlzLl9kcml2ZXI9dCx0aGlzLmVsZW1lbnQ9ZSx0aGlzLnN1Ykluc3RydWN0aW9ucz1vLHRoaXMuX2VudGVyQ2xhc3NOYW1lPWksdGhpcy5fbGVhdmVDbGFzc05hbWU9YSx0aGlzLmVycm9ycz1yLHRoaXMudGltZWxpbmVzPXMsdGhpcy5wYXJlbnRDb250ZXh0PW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLnByZXZpb3VzTm9kZT1SQSx0aGlzLnN1YkNvbnRleHRDb3VudD0wLHRoaXMub3B0aW9ucz17fSx0aGlzLmN1cnJlbnRRdWVyeUluZGV4PTAsdGhpcy5jdXJyZW50UXVlcnlUb3RhbD0wLHRoaXMuY3VycmVudFN0YWdnZXJUaW1lPTAsdGhpcy5jdXJyZW50VGltZWxpbmU9bHx8bmV3IG4zKHRoaXMuX2RyaXZlcixlLDApLHMucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSl9Z2V0IHBhcmFtcygpe3JldHVybiB0aGlzLm9wdGlvbnMucGFyYW1zfXVwZGF0ZU9wdGlvbnModCxlKXtpZighdClyZXR1cm47bGV0IG89dCxpPXRoaXMub3B0aW9ucztvLmR1cmF0aW9uIT1udWxsJiYoaS5kdXJhdGlvbj15dihvLmR1cmF0aW9uKSksby5kZWxheSE9bnVsbCYmKGkuZGVsYXk9eXYoby5kZWxheSkpO2xldCBhPW8ucGFyYW1zO2lmKGEpe2xldCByPWkucGFyYW1zO3J8fChyPXRoaXMub3B0aW9ucy5wYXJhbXM9e30pLE9iamVjdC5rZXlzKGEpLmZvckVhY2gocz0+eyghZXx8IXIuaGFzT3duUHJvcGVydHkocykpJiYocltzXT1EQShhW3NdLHIsdGhpcy5lcnJvcnMpKX0pfX1fY29weU9wdGlvbnMoKXtsZXQgdD17fTtpZih0aGlzLm9wdGlvbnMpe2xldCBlPXRoaXMub3B0aW9ucy5wYXJhbXM7aWYoZSl7bGV0IG89dC5wYXJhbXM9e307T2JqZWN0LmtleXMoZSkuZm9yRWFjaChpPT57b1tpXT1lW2ldfSl9fXJldHVybiB0fWNyZWF0ZVN1YkNvbnRleHQodD1udWxsLGUsbyl7bGV0IGk9ZXx8dGhpcy5lbGVtZW50LGE9bmV3IHJFKHRoaXMuX2RyaXZlcixpLHRoaXMuc3ViSW5zdHJ1Y3Rpb25zLHRoaXMuX2VudGVyQ2xhc3NOYW1lLHRoaXMuX2xlYXZlQ2xhc3NOYW1lLHRoaXMuZXJyb3JzLHRoaXMudGltZWxpbmVzLHRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsoaSxvfHwwKSk7cmV0dXJuIGEucHJldmlvdXNOb2RlPXRoaXMucHJldmlvdXNOb2RlLGEuY3VycmVudEFuaW1hdGVUaW1pbmdzPXRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzLGEub3B0aW9ucz10aGlzLl9jb3B5T3B0aW9ucygpLGEudXBkYXRlT3B0aW9ucyh0KSxhLmN1cnJlbnRRdWVyeUluZGV4PXRoaXMuY3VycmVudFF1ZXJ5SW5kZXgsYS5jdXJyZW50UXVlcnlUb3RhbD10aGlzLmN1cnJlbnRRdWVyeVRvdGFsLGEucGFyZW50Q29udGV4dD10aGlzLHRoaXMuc3ViQ29udGV4dENvdW50KyssYX10cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUodCl7cmV0dXJuIHRoaXMucHJldmlvdXNOb2RlPVJBLHRoaXMuY3VycmVudFRpbWVsaW5lPXRoaXMuY3VycmVudFRpbWVsaW5lLmZvcmsodGhpcy5lbGVtZW50LHQpLHRoaXMudGltZWxpbmVzLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpLHRoaXMuY3VycmVudFRpbWVsaW5lfWFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZSh0LGUsbyl7bGV0IGk9e2R1cmF0aW9uOmUhPW51bGw/ZTp0LmR1cmF0aW9uLGRlbGF5OnRoaXMuY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lKyhvIT1udWxsP286MCkrdC5kZWxheSxlYXNpbmc6IiJ9LGE9bmV3IElWKHRoaXMuX2RyaXZlcix0LmVsZW1lbnQsdC5rZXlmcmFtZXMsdC5wcmVTdHlsZVByb3BzLHQucG9zdFN0eWxlUHJvcHMsaSx0LnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lKTtyZXR1cm4gdGhpcy50aW1lbGluZXMucHVzaChhKSxpfWluY3JlbWVudFRpbWUodCl7dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yd2FyZFRpbWUodGhpcy5jdXJyZW50VGltZWxpbmUuZHVyYXRpb24rdCl9ZGVsYXlOZXh0U3RlcCh0KXt0PjAmJnRoaXMuY3VycmVudFRpbWVsaW5lLmRlbGF5TmV4dFN0ZXAodCl9aW52b2tlUXVlcnkodCxlLG8saSxhLHIpe2xldCBzPVtdO2lmKGkmJnMucHVzaCh0aGlzLmVsZW1lbnQpLHQubGVuZ3RoPjApe3Q9dC5yZXBsYWNlKEUzdCwiLiIrdGhpcy5fZW50ZXJDbGFzc05hbWUpLHQ9dC5yZXBsYWNlKE4zdCwiLiIrdGhpcy5fbGVhdmVDbGFzc05hbWUpO2xldCBsPW8hPTEsYz10aGlzLl9kcml2ZXIucXVlcnkodGhpcy5lbGVtZW50LHQsbCk7byE9PTAmJihjPW88MD9jLnNsaWNlKGMubGVuZ3RoK28sYy5sZW5ndGgpOmMuc2xpY2UoMCxvKSkscy5wdXNoKC4uLmMpfXJldHVybiFhJiZzLmxlbmd0aD09MCYmci5wdXNoKGBcYHF1ZXJ5KCIke2V9IilcYCByZXR1cm5lZCB6ZXJvIGVsZW1lbnRzLiAoVXNlIFxgcXVlcnkoIiR7ZX0iLCB7IG9wdGlvbmFsOiB0cnVlIH0pXGAgaWYgeW91IHdpc2ggdG8gYWxsb3cgdGhpcy4pYCksc319LG4zPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuX2RyaXZlcj10LHRoaXMuZWxlbWVudD1lLHRoaXMuc3RhcnRUaW1lPW8sdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwPWksdGhpcy5kdXJhdGlvbj0wLHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWU9e30sdGhpcy5fY3VycmVudEtleWZyYW1lPXt9LHRoaXMuX2tleWZyYW1lcz1uZXcgTWFwLHRoaXMuX3N0eWxlU3VtbWFyeT17fSx0aGlzLl9wZW5kaW5nU3R5bGVzPXt9LHRoaXMuX2JhY2tGaWxsPXt9LHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT1udWxsLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cHx8KHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1uZXcgTWFwKSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzPU9iamVjdC5jcmVhdGUodGhpcy5fYmFja0ZpbGwse30pLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzPXRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cC5nZXQoZSksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXN8fCh0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cC5zZXQoZSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKSksdGhpcy5fbG9hZEtleWZyYW1lKCl9Y29udGFpbnNBbmltYXRpb24oKXtzd2l0Y2godGhpcy5fa2V5ZnJhbWVzLnNpemUpe2Nhc2UgMDpyZXR1cm4hMTtjYXNlIDE6cmV0dXJuIHRoaXMuZ2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpLmxlbmd0aD4wO2RlZmF1bHQ6cmV0dXJuITB9fWdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fY3VycmVudEtleWZyYW1lKX1nZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5zdGFydFRpbWUrdGhpcy5kdXJhdGlvbn1kZWxheU5leHRTdGVwKHQpe2xldCBlPXRoaXMuX2tleWZyYW1lcy5zaXplPT0xJiZPYmplY3Qua2V5cyh0aGlzLl9wZW5kaW5nU3R5bGVzKS5sZW5ndGg7dGhpcy5kdXJhdGlvbnx8ZT8odGhpcy5mb3J3YXJkVGltZSh0aGlzLmN1cnJlbnRUaW1lK3QpLGUmJnRoaXMuc25hcHNob3RDdXJyZW50U3R5bGVzKCkpOnRoaXMuc3RhcnRUaW1lKz10fWZvcmsodCxlKXtyZXR1cm4gdGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxuZXcgbjModGhpcy5fZHJpdmVyLHQsZXx8dGhpcy5jdXJyZW50VGltZSx0aGlzLl9lbGVtZW50VGltZWxpbmVTdHlsZXNMb29rdXApfV9sb2FkS2V5ZnJhbWUoKXt0aGlzLl9jdXJyZW50S2V5ZnJhbWUmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lPXRoaXMuX2N1cnJlbnRLZXlmcmFtZSksdGhpcy5fY3VycmVudEtleWZyYW1lPXRoaXMuX2tleWZyYW1lcy5nZXQodGhpcy5kdXJhdGlvbiksdGhpcy5fY3VycmVudEtleWZyYW1lfHwodGhpcy5fY3VycmVudEtleWZyYW1lPU9iamVjdC5jcmVhdGUodGhpcy5fYmFja0ZpbGwse30pLHRoaXMuX2tleWZyYW1lcy5zZXQodGhpcy5kdXJhdGlvbix0aGlzLl9jdXJyZW50S2V5ZnJhbWUpKX1mb3J3YXJkRnJhbWUoKXt0aGlzLmR1cmF0aW9uKz1TM3QsdGhpcy5fbG9hZEtleWZyYW1lKCl9Zm9yd2FyZFRpbWUodCl7dGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSx0aGlzLmR1cmF0aW9uPXQsdGhpcy5fbG9hZEtleWZyYW1lKCl9X3VwZGF0ZVN0eWxlKHQsZSl7dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlc1t0XT1lLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzW3RdPWUsdGhpcy5fc3R5bGVTdW1tYXJ5W3RdPXt0aW1lOnRoaXMuY3VycmVudFRpbWUsdmFsdWU6ZX19YWxsb3dPbmx5VGltZWxpbmVTdHlsZXMoKXtyZXR1cm4gdGhpcy5fY3VycmVudEVtcHR5U3RlcEtleWZyYW1lIT09dGhpcy5fY3VycmVudEtleWZyYW1lfWFwcGx5RW1wdHlTdGVwKHQpe3QmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lLmVhc2luZz10KSxPYmplY3Qua2V5cyh0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcykuZm9yRWFjaChlPT57dGhpcy5fYmFja0ZpbGxbZV09dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXNbZV18fEJiLHRoaXMuX2N1cnJlbnRLZXlmcmFtZVtlXT1CYn0pLHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT10aGlzLl9jdXJyZW50S2V5ZnJhbWV9c2V0U3R5bGVzKHQsZSxvLGkpe2UmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lLmVhc2luZz1lKTtsZXQgYT1pJiZpLnBhcmFtc3x8e30scj1UM3QodCx0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcyk7T2JqZWN0LmtleXMocikuZm9yRWFjaChzPT57bGV0IGw9REEocltzXSxhLG8pO3RoaXMuX3BlbmRpbmdTdHlsZXNbc109bCx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLmhhc093blByb3BlcnR5KHMpfHwodGhpcy5fYmFja0ZpbGxbc109dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXMuaGFzT3duUHJvcGVydHkocyk/dGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXNbc106QmIpLHRoaXMuX3VwZGF0ZVN0eWxlKHMsbCl9KX1hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKXtsZXQgdD10aGlzLl9wZW5kaW5nU3R5bGVzLGU9T2JqZWN0LmtleXModCk7ZS5sZW5ndGghPTAmJih0aGlzLl9wZW5kaW5nU3R5bGVzPXt9LGUuZm9yRWFjaChvPT57bGV0IGk9dFtvXTt0aGlzLl9jdXJyZW50S2V5ZnJhbWVbb109aX0pLE9iamVjdC5rZXlzKHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMpLmZvckVhY2gobz0+e3RoaXMuX2N1cnJlbnRLZXlmcmFtZS5oYXNPd25Qcm9wZXJ0eShvKXx8KHRoaXMuX2N1cnJlbnRLZXlmcmFtZVtvXT10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzW29dKX0pKX1zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKXtPYmplY3Qua2V5cyh0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKS5mb3JFYWNoKHQ9PntsZXQgZT10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzW3RdO3RoaXMuX3BlbmRpbmdTdHlsZXNbdF09ZSx0aGlzLl91cGRhdGVTdHlsZSh0LGUpfSl9Z2V0RmluYWxLZXlmcmFtZSgpe3JldHVybiB0aGlzLl9rZXlmcmFtZXMuZ2V0KHRoaXMuZHVyYXRpb24pfWdldCBwcm9wZXJ0aWVzKCl7bGV0IHQ9W107Zm9yKGxldCBlIGluIHRoaXMuX2N1cnJlbnRLZXlmcmFtZSl0LnB1c2goZSk7cmV0dXJuIHR9bWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyh0KXtPYmplY3Qua2V5cyh0Ll9zdHlsZVN1bW1hcnkpLmZvckVhY2goZT0+e2xldCBvPXRoaXMuX3N0eWxlU3VtbWFyeVtlXSxpPXQuX3N0eWxlU3VtbWFyeVtlXTsoIW98fGkudGltZT5vLnRpbWUpJiZ0aGlzLl91cGRhdGVTdHlsZShlLGkudmFsdWUpfSl9YnVpbGRLZXlmcmFtZXMoKXt0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpO2xldCB0PW5ldyBTZXQsZT1uZXcgU2V0LG89dGhpcy5fa2V5ZnJhbWVzLnNpemU9PT0xJiZ0aGlzLmR1cmF0aW9uPT09MCxpPVtdO3RoaXMuX2tleWZyYW1lcy5mb3JFYWNoKChzLGwpPT57bGV0IGM9ZTMocywhMCk7T2JqZWN0LmtleXMoYykuZm9yRWFjaChtPT57bGV0IGY9Y1ttXTtmPT1DQT90LmFkZChtKTpmPT1CYiYmZS5hZGQobSl9KSxvfHwoYy5vZmZzZXQ9bC90aGlzLmR1cmF0aW9uKSxpLnB1c2goYyl9KTtsZXQgYT10LnNpemU/dkEodC52YWx1ZXMoKSk6W10scj1lLnNpemU/dkEoZS52YWx1ZXMoKSk6W107aWYobyl7bGV0IHM9aVswXSxsPW8zKHMpO3Mub2Zmc2V0PTAsbC5vZmZzZXQ9MSxpPVtzLGxdfXJldHVybiB0aih0aGlzLmVsZW1lbnQsaSxhLHIsdGhpcy5kdXJhdGlvbix0aGlzLnN0YXJ0VGltZSx0aGlzLmVhc2luZywhMSl9fSxJVj1jbGFzcyBleHRlbmRzIG4ze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHM9ITEpe3N1cGVyKHQsZSxyLmRlbGF5KSx0aGlzLmtleWZyYW1lcz1vLHRoaXMucHJlU3R5bGVQcm9wcz1pLHRoaXMucG9zdFN0eWxlUHJvcHM9YSx0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT1zLHRoaXMudGltaW5ncz17ZHVyYXRpb246ci5kdXJhdGlvbixkZWxheTpyLmRlbGF5LGVhc2luZzpyLmVhc2luZ319Y29udGFpbnNBbmltYXRpb24oKXtyZXR1cm4gdGhpcy5rZXlmcmFtZXMubGVuZ3RoPjF9YnVpbGRLZXlmcmFtZXMoKXtsZXQgdD10aGlzLmtleWZyYW1lcyx7ZGVsYXk6ZSxkdXJhdGlvbjpvLGVhc2luZzppfT10aGlzLnRpbWluZ3M7aWYodGhpcy5fc3RyZXRjaFN0YXJ0aW5nS2V5ZnJhbWUmJmUpe2xldCBhPVtdLHI9bytlLHM9ZS9yLGw9ZTModFswXSwhMSk7bC5vZmZzZXQ9MCxhLnB1c2gobCk7bGV0IGM9ZTModFswXSwhMSk7Yy5vZmZzZXQ9Ym50KHMpLGEucHVzaChjKTtsZXQgbT10Lmxlbmd0aC0xO2ZvcihsZXQgZj0xO2Y8PW07ZisrKXtsZXQgcD1lMyh0W2ZdLCExKSxnPXAub2Zmc2V0LF89ZStnKm87cC5vZmZzZXQ9Ym50KF8vciksYS5wdXNoKHApfW89cixlPTAsaT0iIix0PWF9cmV0dXJuIHRqKHRoaXMuZWxlbWVudCx0LHRoaXMucHJlU3R5bGVQcm9wcyx0aGlzLnBvc3RTdHlsZVByb3BzLG8sZSxpLCEwKX19O2Z1bmN0aW9uIGJudChuLHQ9Myl7bGV0IGU9TWF0aC5wb3coMTAsdC0xKTtyZXR1cm4gTWF0aC5yb3VuZChuKmUpL2V9ZnVuY3Rpb24gVDN0KG4sdCl7bGV0IGU9e30sbztyZXR1cm4gbi5mb3JFYWNoKGk9PntpPT09IioiPyhvPW98fE9iamVjdC5rZXlzKHQpLG8uZm9yRWFjaChhPT57ZVthXT1CYn0pKTplMyhpLCExLGUpfSksZX12YXIgc1A9Y2xhc3N7fTt2YXIgRUE9Y2xhc3MgZXh0ZW5kcyBzUHtub3JtYWxpemVQcm9wZXJ0eU5hbWUodCxlKXtyZXR1cm4gSlYodCl9bm9ybWFsaXplU3R5bGVWYWx1ZSh0LGUsbyxpKXtsZXQgYT0iIixyPW8udG9TdHJpbmcoKS50cmltKCk7aWYoRDN0W2VdJiZvIT09MCYmbyE9PSIwIilpZih0eXBlb2Ygbz09Im51bWJlciIpYT0icHgiO2Vsc2V7bGV0IHM9by5tYXRjaCgvXlsrLV0/W1xkXC5dKyhbYS16XSopJC8pO3MmJnNbMV0ubGVuZ3RoPT0wJiZpLnB1c2goYFBsZWFzZSBwcm92aWRlIGEgQ1NTIHVuaXQgdmFsdWUgZm9yICR7dH06JHtvfWApfXJldHVybiByK2F9fSxBM3Q9KCk9PkkzdCgid2lkdGgsaGVpZ2h0LG1pbldpZHRoLG1pbkhlaWdodCxtYXhXaWR0aCxtYXhIZWlnaHQsbGVmdCx0b3AsYm90dG9tLHJpZ2h0LGZvbnRTaXplLG91dGxpbmVXaWR0aCxvdXRsaW5lT2Zmc2V0LHBhZGRpbmdUb3AscGFkZGluZ0xlZnQscGFkZGluZ0JvdHRvbSxwYWRkaW5nUmlnaHQsbWFyZ2luVG9wLG1hcmdpbkxlZnQsbWFyZ2luQm90dG9tLG1hcmdpblJpZ2h0LGJvcmRlclJhZGl1cyxib3JkZXJXaWR0aCxib3JkZXJUb3BXaWR0aCxib3JkZXJMZWZ0V2lkdGgsYm9yZGVyUmlnaHRXaWR0aCxib3JkZXJCb3R0b21XaWR0aCx0ZXh0SW5kZW50LHBlcnNwZWN0aXZlIi5zcGxpdCgiLCIpKSxEM3Q9QTN0KCk7ZnVuY3Rpb24gSTN0KG4pe2xldCB0PXt9O3JldHVybiBuLmZvckVhY2goZT0+dFtlXT0hMCksdH1mdW5jdGlvbiBPbnQobix0LGUsbyxpLGEscixzLGwsYyxtLGYscCl7cmV0dXJue3R5cGU6MCxlbGVtZW50Om4sdHJpZ2dlck5hbWU6dCxpc1JlbW92YWxUcmFuc2l0aW9uOmksZnJvbVN0YXRlOmUsZnJvbVN0eWxlczphLHRvU3RhdGU6byx0b1N0eWxlczpyLHRpbWVsaW5lczpzLHF1ZXJpZWRFbGVtZW50czpsLHByZVN0eWxlUHJvcHM6Yyxwb3N0U3R5bGVQcm9wczptLHRvdGFsVGltZTpmLGVycm9yczpwfX12YXIgeVY9e30sa0E9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX3RyaWdnZXJOYW1lPXQsdGhpcy5hc3Q9ZSx0aGlzLl9zdGF0ZVN0eWxlcz1vfW1hdGNoKHQsZSxvLGkpe3JldHVybiB6M3QodGhpcy5hc3QubWF0Y2hlcnMsdCxlLG8saSl9YnVpbGRTdHlsZXModCxlLG8pe2xldCBpPXRoaXMuX3N0YXRlU3R5bGVzWyIqIl0sYT10aGlzLl9zdGF0ZVN0eWxlc1t0XSxyPWk/aS5idWlsZFN0eWxlcyhlLG8pOnt9O3JldHVybiBhP2EuYnVpbGRTdHlsZXMoZSxvKTpyfWJ1aWxkKHQsZSxvLGksYSxyLHMsbCxjLG0pe2xldCBmPVtdLHA9dGhpcy5hc3Qub3B0aW9ucyYmdGhpcy5hc3Qub3B0aW9ucy5wYXJhbXN8fHlWLGc9cyYmcy5wYXJhbXN8fHlWLF89dGhpcy5idWlsZFN0eWxlcyhvLGcsZiksTT1sJiZsLnBhcmFtc3x8eVYseT10aGlzLmJ1aWxkU3R5bGVzKGksTSxmKSxPPW5ldyBTZXQsYj1uZXcgTWFwLFI9bmV3IE1hcCxFPWk9PT0idm9pZCIsaj17cGFyYW1zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxwKSxNKX0scnQ9bT9bXTpxbnQodCxlLHRoaXMuYXN0LmFuaW1hdGlvbixhLHIsXyx5LGosYyxmKSxKPTA7aWYocnQuZm9yRWFjaChqdD0+e0o9TWF0aC5tYXgoanQuZHVyYXRpb24ranQuZGVsYXksSil9KSxmLmxlbmd0aClyZXR1cm4gT250KGUsdGhpcy5fdHJpZ2dlck5hbWUsbyxpLEUsXyx5LFtdLFtdLGIsUixKLGYpO3J0LmZvckVhY2goanQ9PntsZXQga3Q9anQuZWxlbWVudCx3PUFnKGIsa3Qse30pO2p0LnByZVN0eWxlUHJvcHMuZm9yRWFjaChudD0+d1tudF09ITApO2xldCBVPUFnKFIsa3Qse30pO2p0LnBvc3RTdHlsZVByb3BzLmZvckVhY2gobnQ9PlVbbnRdPSEwKSxrdCE9PWUmJk8uYWRkKGt0KX0pO2xldCBFdD12QShPLnZhbHVlcygpKTtyZXR1cm4gT250KGUsdGhpcy5fdHJpZ2dlck5hbWUsbyxpLEUsXyx5LHJ0LEV0LGIsUixKKX19O2Z1bmN0aW9uIHozdChuLHQsZSxvLGkpe3JldHVybiBuLnNvbWUoYT0+YSh0LGUsbyxpKSl9dmFyIHpWPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLnN0eWxlcz10LHRoaXMuZGVmYXVsdFBhcmFtcz1lLHRoaXMubm9ybWFsaXplcj1vfWJ1aWxkU3R5bGVzKHQsZSl7bGV0IG89e30saT1vMyh0aGlzLmRlZmF1bHRQYXJhbXMpO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGE9PntsZXQgcj10W2FdO3IhPW51bGwmJihpW2FdPXIpfSksdGhpcy5zdHlsZXMuc3R5bGVzLmZvckVhY2goYT0+e2lmKHR5cGVvZiBhIT0ic3RyaW5nIil7bGV0IHI9YTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKHM9PntsZXQgbD1yW3NdO2wubGVuZ3RoPjEmJihsPURBKGwsaSxlKSk7bGV0IGM9dGhpcy5ub3JtYWxpemVyLm5vcm1hbGl6ZVByb3BlcnR5TmFtZShzLGUpO2w9dGhpcy5ub3JtYWxpemVyLm5vcm1hbGl6ZVN0eWxlVmFsdWUocyxjLGwsZSksb1tjXT1sfSl9fSksb319O2Z1bmN0aW9uIEgzdChuLHQsZSl7cmV0dXJuIG5ldyBIVihuLHQsZSl9dmFyIEhWPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLm5hbWU9dCx0aGlzLmFzdD1lLHRoaXMuX25vcm1hbGl6ZXI9byx0aGlzLnRyYW5zaXRpb25GYWN0b3JpZXM9W10sdGhpcy5zdGF0ZXM9e30sZS5zdGF0ZXMuZm9yRWFjaChpPT57bGV0IGE9aS5vcHRpb25zJiZpLm9wdGlvbnMucGFyYW1zfHx7fTt0aGlzLnN0YXRlc1tpLm5hbWVdPW5ldyB6VihpLnN0eWxlLGEsbyl9KSxQbnQodGhpcy5zdGF0ZXMsInRydWUiLCIxIiksUG50KHRoaXMuc3RhdGVzLCJmYWxzZSIsIjAiKSxlLnRyYW5zaXRpb25zLmZvckVhY2goaT0+e3RoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5wdXNoKG5ldyBrQSh0LGksdGhpcy5zdGF0ZXMpKX0pLHRoaXMuZmFsbGJhY2tUcmFuc2l0aW9uPUYzdCh0LHRoaXMuc3RhdGVzLHRoaXMuX25vcm1hbGl6ZXIpfWdldCBjb250YWluc1F1ZXJpZXMoKXtyZXR1cm4gdGhpcy5hc3QucXVlcnlDb3VudD4wfW1hdGNoVHJhbnNpdGlvbih0LGUsbyxpKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLmZpbmQocj0+ci5tYXRjaCh0LGUsbyxpKSl8fG51bGx9bWF0Y2hTdHlsZXModCxlLG8pe3JldHVybiB0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbi5idWlsZFN0eWxlcyh0LGUsbyl9fTtmdW5jdGlvbiBGM3Qobix0LGUpe2xldCBhPXt0eXBlOjEsYW5pbWF0aW9uOnt0eXBlOjIsc3RlcHM6W10sb3B0aW9uczpudWxsfSxtYXRjaGVyczpbKHIscyk9PiEwXSxvcHRpb25zOm51bGwscXVlcnlDb3VudDowLGRlcENvdW50OjB9O3JldHVybiBuZXcga0EobixhLHQpfWZ1bmN0aW9uIFBudChuLHQsZSl7bi5oYXNPd25Qcm9wZXJ0eSh0KT9uLmhhc093blByb3BlcnR5KGUpfHwobltlXT1uW3RdKTpuLmhhc093blByb3BlcnR5KGUpJiYoblt0XT1uW2VdKX12YXIgTDN0PW5ldyBhRSxGVj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5ib2R5Tm9kZT10LHRoaXMuX2RyaXZlcj1lLHRoaXMuX25vcm1hbGl6ZXI9byx0aGlzLl9hbmltYXRpb25zPXt9LHRoaXMuX3BsYXllcnNCeUlkPXt9LHRoaXMucGxheWVycz1bXX1yZWdpc3Rlcih0LGUpe2xldCBvPVtdLGk9V250KHRoaXMuX2RyaXZlcixlLG8pO2lmKG8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGJ1aWxkIHRoZSBhbmltYXRpb24gZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiAke28uam9pbihgCmApfWApO3RoaXMuX2FuaW1hdGlvbnNbdF09aX1fYnVpbGRQbGF5ZXIodCxlLG8pe2xldCBpPXQuZWxlbWVudCxhPXpudCh0aGlzLl9kcml2ZXIsdGhpcy5fbm9ybWFsaXplcixpLHQua2V5ZnJhbWVzLGUsbyk7cmV0dXJuIHRoaXMuX2RyaXZlci5hbmltYXRlKGksYSx0LmR1cmF0aW9uLHQuZGVsYXksdC5lYXNpbmcsW10sITApfWNyZWF0ZSh0LGUsbz17fSl7bGV0IGk9W10sYT10aGlzLl9hbmltYXRpb25zW3RdLHIscz1uZXcgTWFwO2lmKGE/KHI9cW50KHRoaXMuX2RyaXZlcixlLGEsQm50LFJWLHt9LHt9LG8sTDN0LGkpLHIuZm9yRWFjaChtPT57bGV0IGY9QWcocyxtLmVsZW1lbnQse30pO20ucG9zdFN0eWxlUHJvcHMuZm9yRWFjaChwPT5mW3BdPW51bGwpfSkpOihpLnB1c2goIlRoZSByZXF1ZXN0ZWQgYW5pbWF0aW9uIGRvZXNuJ3QgZXhpc3Qgb3IgaGFzIGFscmVhZHkgYmVlbiBkZXN0cm95ZWQiKSxyPVtdKSxpLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBjcmVhdGUgdGhlIGFuaW1hdGlvbiBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6ICR7aS5qb2luKGAKYCl9YCk7cy5mb3JFYWNoKChtLGYpPT57T2JqZWN0LmtleXMobSkuZm9yRWFjaChwPT57bVtwXT10aGlzLl9kcml2ZXIuY29tcHV0ZVN0eWxlKGYscCxCYil9KX0pO2xldCBsPXIubWFwKG09PntsZXQgZj1zLmdldChtLmVsZW1lbnQpO3JldHVybiB0aGlzLl9idWlsZFBsYXllcihtLHt9LGYpfSksYz1FeShsKTtyZXR1cm4gdGhpcy5fcGxheWVyc0J5SWRbdF09YyxjLm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KHQpKSx0aGlzLnBsYXllcnMucHVzaChjKSxjfWRlc3Ryb3kodCl7bGV0IGU9dGhpcy5fZ2V0UGxheWVyKHQpO2UuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLl9wbGF5ZXJzQnlJZFt0XTtsZXQgbz10aGlzLnBsYXllcnMuaW5kZXhPZihlKTtvPj0wJiZ0aGlzLnBsYXllcnMuc3BsaWNlKG8sMSl9X2dldFBsYXllcih0KXtsZXQgZT10aGlzLl9wbGF5ZXJzQnlJZFt0XTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBmaW5kIHRoZSB0aW1lbGluZSBwbGF5ZXIgcmVmZXJlbmNlZCBieSAke3R9YCk7cmV0dXJuIGV9bGlzdGVuKHQsZSxvLGkpe2xldCBhPXFWKGUsIiIsIiIsIiIpO3JldHVybiBXVih0aGlzLl9nZXRQbGF5ZXIodCksbyxhLGkpLCgpPT57fX1jb21tYW5kKHQsZSxvLGkpe2lmKG89PSJyZWdpc3RlciIpe3RoaXMucmVnaXN0ZXIodCxpWzBdKTtyZXR1cm59aWYobz09ImNyZWF0ZSIpe2xldCByPWlbMF18fHt9O3RoaXMuY3JlYXRlKHQsZSxyKTtyZXR1cm59bGV0IGE9dGhpcy5fZ2V0UGxheWVyKHQpO3N3aXRjaChvKXtjYXNlInBsYXkiOmEucGxheSgpO2JyZWFrO2Nhc2UicGF1c2UiOmEucGF1c2UoKTticmVhaztjYXNlInJlc2V0IjphLnJlc2V0KCk7YnJlYWs7Y2FzZSJyZXN0YXJ0IjphLnJlc3RhcnQoKTticmVhaztjYXNlImZpbmlzaCI6YS5maW5pc2goKTticmVhaztjYXNlImluaXQiOmEuaW5pdCgpO2JyZWFrO2Nhc2Uic2V0UG9zaXRpb24iOmEuc2V0UG9zaXRpb24ocGFyc2VGbG9hdChpWzBdKSk7YnJlYWs7Y2FzZSJkZXN0cm95Ijp0aGlzLmRlc3Ryb3kodCk7YnJlYWt9fX07dmFyIHludD0ibmctYW5pbWF0ZS1xdWV1ZWQiLEIzdD0iLm5nLWFuaW1hdGUtcXVldWVkIix4bnQ9Im5nLWFuaW1hdGUtZGlzYWJsZWQiLHZudD0iLm5nLWFuaW1hdGUtZGlzYWJsZWQiLFYzdD0ibmctc3Rhci1pbnNlcnRlZCIsajN0PSIubmctc3Rhci1pbnNlcnRlZCIsVTN0PVtdLFpudD17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yUmVtb3ZhbDohMSxzZXRGb3JNb3ZlOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMX0sWTN0PXtuYW1lc3BhY2VJZDoiIixzZXRGb3JNb3ZlOiExLHNldEZvclJlbW92YWw6ITEsaGFzQW5pbWF0aW9uOiExLHJlbW92ZWRCZWZvcmVRdWVyaWVkOiEwfSxiXz0iX19uZ19yZW1vdmVkIixzRT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGU9IiIpe3RoaXMubmFtZXNwYWNlSWQ9ZTtsZXQgbz10JiZ0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpLGk9bz90LnZhbHVlOnQ7aWYodGhpcy52YWx1ZT1XM3QoaSksbyl7bGV0IGE9bzModCk7ZGVsZXRlIGEudmFsdWUsdGhpcy5vcHRpb25zPWF9ZWxzZSB0aGlzLm9wdGlvbnM9e307dGhpcy5vcHRpb25zLnBhcmFtc3x8KHRoaXMub3B0aW9ucy5wYXJhbXM9e30pfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtc31hYnNvcmJPcHRpb25zKHQpe2xldCBlPXQucGFyYW1zO2lmKGUpe2xldCBvPXRoaXMub3B0aW9ucy5wYXJhbXM7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChpPT57b1tpXT09bnVsbCYmKG9baV09ZVtpXSl9KX19fSxpRT0idm9pZCIseFY9bmV3IHNFKGlFKSxMVj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5pZD10LHRoaXMuaG9zdEVsZW1lbnQ9ZSx0aGlzLl9lbmdpbmU9byx0aGlzLnBsYXllcnM9W10sdGhpcy5fdHJpZ2dlcnM9e30sdGhpcy5fcXVldWU9W10sdGhpcy5fZWxlbWVudExpc3RlbmVycz1uZXcgTWFwLHRoaXMuX2hvc3RDbGFzc05hbWU9Im5nLXRucy0iK3QsT18oZSx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1saXN0ZW4odCxlLG8saSl7aWYoIXRoaXMuX3RyaWdnZXJzLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgZXZlbnQgIiR7b30iIGJlY2F1c2UgdGhlIGFuaW1hdGlvbiB0cmlnZ2VyICIke2V9IiBkb2Vzbid0IGV4aXN0IWApO2lmKG89PW51bGx8fG8ubGVuZ3RoPT0wKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxpc3RlbiBvbiB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7ZX0iIGJlY2F1c2UgdGhlIHByb3ZpZGVkIGV2ZW50IGlzIHVuZGVmaW5lZCFgKTtpZighcTN0KG8pKXRocm93IG5ldyBFcnJvcihgVGhlIHByb3ZpZGVkIGFuaW1hdGlvbiB0cmlnZ2VyIGV2ZW50ICIke299IiBmb3IgdGhlIGFuaW1hdGlvbiB0cmlnZ2VyICIke2V9IiBpcyBub3Qgc3VwcG9ydGVkIWApO2xldCBhPUFnKHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMsdCxbXSkscj17bmFtZTplLHBoYXNlOm8sY2FsbGJhY2s6aX07YS5wdXNoKHIpO2xldCBzPUFnKHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQsdCx7fSk7cmV0dXJuIHMuaGFzT3duUHJvcGVydHkoZSl8fChPXyh0LE1BKSxPXyh0LE1BKyItIitlKSxzW2VdPXhWKSwoKT0+e3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgpPT57bGV0IGw9YS5pbmRleE9mKHIpO2w+PTAmJmEuc3BsaWNlKGwsMSksdGhpcy5fdHJpZ2dlcnNbZV18fGRlbGV0ZSBzW2VdfSl9fXJlZ2lzdGVyKHQsZSl7cmV0dXJuIHRoaXMuX3RyaWdnZXJzW3RdPyExOih0aGlzLl90cmlnZ2Vyc1t0XT1lLCEwKX1fZ2V0VHJpZ2dlcih0KXtsZXQgZT10aGlzLl90cmlnZ2Vyc1t0XTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm92aWRlZCBhbmltYXRpb24gdHJpZ2dlciAiJHt0fSIgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQhYCk7cmV0dXJuIGV9dHJpZ2dlcih0LGUsbyxpPSEwKXtsZXQgYT10aGlzLl9nZXRUcmlnZ2VyKGUpLHI9bmV3IGxFKHRoaXMuaWQsZSx0KSxzPXRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZ2V0KHQpO3N8fChPXyh0LE1BKSxPXyh0LE1BKyItIitlKSx0aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LnNldCh0LHM9e30pKTtsZXQgbD1zW2VdLGM9bmV3IHNFKG8sdGhpcy5pZCk7aWYoIShvJiZvLmhhc093blByb3BlcnR5KCJ2YWx1ZSIpKSYmbCYmYy5hYnNvcmJPcHRpb25zKGwub3B0aW9ucyksc1tlXT1jLGx8fChsPXhWKSwhKGMudmFsdWU9PT1pRSkmJmwudmFsdWU9PT1jLnZhbHVlKXtpZighUTN0KGwucGFyYW1zLGMucGFyYW1zKSl7bGV0IE09W10seT1hLm1hdGNoU3R5bGVzKGwudmFsdWUsbC5wYXJhbXMsTSksTz1hLm1hdGNoU3R5bGVzKGMudmFsdWUsYy5wYXJhbXMsTSk7TS5sZW5ndGg/dGhpcy5fZW5naW5lLnJlcG9ydEVycm9yKE0pOnRoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgpPT57eHYodCx5KSxWYih0LE8pfSl9cmV0dXJufWxldCBwPUFnKHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LHQsW10pO3AuZm9yRWFjaChNPT57TS5uYW1lc3BhY2VJZD09dGhpcy5pZCYmTS50cmlnZ2VyTmFtZT09ZSYmTS5xdWV1ZWQmJk0uZGVzdHJveSgpfSk7bGV0IGc9YS5tYXRjaFRyYW5zaXRpb24obC52YWx1ZSxjLnZhbHVlLHQsYy5wYXJhbXMpLF89ITE7aWYoIWcpe2lmKCFpKXJldHVybjtnPWEuZmFsbGJhY2tUcmFuc2l0aW9uLF89ITB9cmV0dXJuIHRoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OnQsdHJpZ2dlck5hbWU6ZSx0cmFuc2l0aW9uOmcsZnJvbVN0YXRlOmwsdG9TdGF0ZTpjLHBsYXllcjpyLGlzRmFsbGJhY2tUcmFuc2l0aW9uOl99KSxffHwoT18odCx5bnQpLHIub25TdGFydCgoKT0+e3QzKHQseW50KX0pKSxyLm9uRG9uZSgoKT0+e2xldCBNPXRoaXMucGxheWVycy5pbmRleE9mKHIpO00+PTAmJnRoaXMucGxheWVycy5zcGxpY2UoTSwxKTtsZXQgeT10aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudC5nZXQodCk7aWYoeSl7bGV0IE89eS5pbmRleE9mKHIpO08+PTAmJnkuc3BsaWNlKE8sMSl9fSksdGhpcy5wbGF5ZXJzLnB1c2gocikscC5wdXNoKHIpLHJ9ZGVyZWdpc3Rlcih0KXtkZWxldGUgdGhpcy5fdHJpZ2dlcnNbdF0sdGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5mb3JFYWNoKChlLG8pPT57ZGVsZXRlIGVbdF19KSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmZvckVhY2goKGUsbyk9Pnt0aGlzLl9lbGVtZW50TGlzdGVuZXJzLnNldChvLGUuZmlsdGVyKGk9PmkubmFtZSE9dCkpfSl9Y2xlYXJFbGVtZW50Q2FjaGUodCl7dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5kZWxldGUodCksdGhpcy5fZWxlbWVudExpc3RlbmVycy5kZWxldGUodCk7bGV0IGU9dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2UmJihlLmZvckVhY2gobz0+by5kZXN0cm95KCkpLHRoaXMuX2VuZ2luZS5wbGF5ZXJzQnlFbGVtZW50LmRlbGV0ZSh0KSl9X3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHQsZSl7bGV0IG89dGhpcy5fZW5naW5lLmRyaXZlci5xdWVyeSh0LHlBLCEwKTtvLmZvckVhY2goaT0+e2lmKGlbYl9dKXJldHVybjtsZXQgYT10aGlzLl9lbmdpbmUuZmV0Y2hOYW1lc3BhY2VzQnlFbGVtZW50KGkpO2Euc2l6ZT9hLmZvckVhY2gocj0+ci50cmlnZ2VyTGVhdmVBbmltYXRpb24oaSxlLCExLCEwKSk6dGhpcy5jbGVhckVsZW1lbnRDYWNoZShpKX0pLHRoaXMuX2VuZ2luZS5hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoKCk9Pm8uZm9yRWFjaChpPT50aGlzLmNsZWFyRWxlbWVudENhY2hlKGkpKSl9dHJpZ2dlckxlYXZlQW5pbWF0aW9uKHQsZSxvLGkpe2xldCBhPXRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZ2V0KHQpO2lmKGEpe2xldCByPVtdO2lmKE9iamVjdC5rZXlzKGEpLmZvckVhY2gocz0+e2lmKHRoaXMuX3RyaWdnZXJzW3NdKXtsZXQgbD10aGlzLnRyaWdnZXIodCxzLGlFLGkpO2wmJnIucHVzaChsKX19KSxyLmxlbmd0aClyZXR1cm4gdGhpcy5fZW5naW5lLm1hcmtFbGVtZW50QXNSZW1vdmVkKHRoaXMuaWQsdCwhMCxlKSxvJiZFeShyKS5vbkRvbmUoKCk9PnRoaXMuX2VuZ2luZS5wcm9jZXNzTGVhdmVOb2RlKHQpKSwhMH1yZXR1cm4hMX1wcmVwYXJlTGVhdmVBbmltYXRpb25MaXN0ZW5lcnModCl7bGV0IGU9dGhpcy5fZWxlbWVudExpc3RlbmVycy5nZXQodCksbz10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihlJiZvKXtsZXQgaT1uZXcgU2V0O2UuZm9yRWFjaChhPT57bGV0IHI9YS5uYW1lO2lmKGkuaGFzKHIpKXJldHVybjtpLmFkZChyKTtsZXQgbD10aGlzLl90cmlnZ2Vyc1tyXS5mYWxsYmFja1RyYW5zaXRpb24sYz1vW3JdfHx4VixtPW5ldyBzRShpRSksZj1uZXcgbEUodGhpcy5pZCxyLHQpO3RoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OnQsdHJpZ2dlck5hbWU6cix0cmFuc2l0aW9uOmwsZnJvbVN0YXRlOmMsdG9TdGF0ZTptLHBsYXllcjpmLGlzRmFsbGJhY2tUcmFuc2l0aW9uOiEwfSl9KX19cmVtb3ZlTm9kZSh0LGUpe2xldCBvPXRoaXMuX2VuZ2luZTtpZih0LmNoaWxkRWxlbWVudENvdW50JiZ0aGlzLl9zaWduYWxSZW1vdmFsRm9ySW5uZXJUcmlnZ2Vycyh0LGUpLHRoaXMudHJpZ2dlckxlYXZlQW5pbWF0aW9uKHQsZSwhMCkpcmV0dXJuO2xldCBpPSExO2lmKG8udG90YWxBbmltYXRpb25zKXtsZXQgYT1vLnBsYXllcnMubGVuZ3RoP28ucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpOltdO2lmKGEmJmEubGVuZ3RoKWk9ITA7ZWxzZXtsZXQgcj10O2Zvcig7cj1yLnBhcmVudE5vZGU7KWlmKG8uc3RhdGVzQnlFbGVtZW50LmdldChyKSl7aT0hMDticmVha319fWlmKHRoaXMucHJlcGFyZUxlYXZlQW5pbWF0aW9uTGlzdGVuZXJzKHQpLGkpby5tYXJrRWxlbWVudEFzUmVtb3ZlZCh0aGlzLmlkLHQsITEsZSk7ZWxzZXtsZXQgYT10W2JfXTsoIWF8fGE9PT1abnQpJiYoby5hZnRlckZsdXNoKCgpPT50aGlzLmNsZWFyRWxlbWVudENhY2hlKHQpKSxvLmRlc3Ryb3lJbm5lckFuaW1hdGlvbnModCksby5fb25SZW1vdmFsQ29tcGxldGUodCxlKSl9fWluc2VydE5vZGUodCxlKXtPXyh0LHRoaXMuX2hvc3RDbGFzc05hbWUpfWRyYWluUXVldWVkVHJhbnNpdGlvbnModCl7bGV0IGU9W107cmV0dXJuIHRoaXMuX3F1ZXVlLmZvckVhY2gobz0+e2xldCBpPW8ucGxheWVyO2lmKGkuZGVzdHJveWVkKXJldHVybjtsZXQgYT1vLmVsZW1lbnQscj10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldChhKTtyJiZyLmZvckVhY2gocz0+e2lmKHMubmFtZT09by50cmlnZ2VyTmFtZSl7bGV0IGw9cVYoYSxvLnRyaWdnZXJOYW1lLG8uZnJvbVN0YXRlLnZhbHVlLG8udG9TdGF0ZS52YWx1ZSk7bC5fZGF0YT10LFdWKG8ucGxheWVyLHMucGhhc2UsbCxzLmNhbGxiYWNrKX19KSxpLm1hcmtlZEZvckRlc3Ryb3k/dGhpcy5fZW5naW5lLmFmdGVyRmx1c2goKCk9PntpLmRlc3Ryb3koKX0pOmUucHVzaChvKX0pLHRoaXMuX3F1ZXVlPVtdLGUuc29ydCgobyxpKT0+e2xldCBhPW8udHJhbnNpdGlvbi5hc3QuZGVwQ291bnQscj1pLnRyYW5zaXRpb24uYXN0LmRlcENvdW50O3JldHVybiBhPT0wfHxyPT0wP2Etcjp0aGlzLl9lbmdpbmUuZHJpdmVyLmNvbnRhaW5zRWxlbWVudChvLmVsZW1lbnQsaS5lbGVtZW50KT8xOi0xfSl9ZGVzdHJveSh0KXt0aGlzLnBsYXllcnMuZm9yRWFjaChlPT5lLmRlc3Ryb3koKSksdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModGhpcy5ob3N0RWxlbWVudCx0KX1lbGVtZW50Q29udGFpbnNEYXRhKHQpe2xldCBlPSExO3JldHVybiB0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmhhcyh0KSYmKGU9ITApLGU9ISF0aGlzLl9xdWV1ZS5maW5kKG89Pm8uZWxlbWVudD09PXQpfHxlLGV9fSxCVj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5ib2R5Tm9kZT10LHRoaXMuZHJpdmVyPWUsdGhpcy5fbm9ybWFsaXplcj1vLHRoaXMucGxheWVycz1bXSx0aGlzLm5ld0hvc3RFbGVtZW50cz1uZXcgTWFwLHRoaXMucGxheWVyc0J5RWxlbWVudD1uZXcgTWFwLHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQ9bmV3IE1hcCx0aGlzLnN0YXRlc0J5RWxlbWVudD1uZXcgTWFwLHRoaXMuZGlzYWJsZWROb2Rlcz1uZXcgU2V0LHRoaXMudG90YWxBbmltYXRpb25zPTAsdGhpcy50b3RhbFF1ZXVlZFBsYXllcnM9MCx0aGlzLl9uYW1lc3BhY2VMb29rdXA9e30sdGhpcy5fbmFtZXNwYWNlTGlzdD1bXSx0aGlzLl9mbHVzaEZucz1bXSx0aGlzLl93aGVuUXVpZXRGbnM9W10sdGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudD1uZXcgTWFwLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cz1bXSx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHM9W10sdGhpcy5vblJlbW92YWxDb21wbGV0ZT0oaSxhKT0+e319X29uUmVtb3ZhbENvbXBsZXRlKHQsZSl7dGhpcy5vblJlbW92YWxDb21wbGV0ZSh0LGUpfWdldCBxdWV1ZWRQbGF5ZXJzKCl7bGV0IHQ9W107cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxpc3QuZm9yRWFjaChlPT57ZS5wbGF5ZXJzLmZvckVhY2gobz0+e28ucXVldWVkJiZ0LnB1c2gobyl9KX0pLHR9Y3JlYXRlTmFtZXNwYWNlKHQsZSl7bGV0IG89bmV3IExWKHQsZSx0aGlzKTtyZXR1cm4gdGhpcy5ib2R5Tm9kZSYmdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KHRoaXMuYm9keU5vZGUsZSk/dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3QobyxlKToodGhpcy5uZXdIb3N0RWxlbWVudHMuc2V0KGUsbyksdGhpcy5jb2xsZWN0RW50ZXJFbGVtZW50KGUpKSx0aGlzLl9uYW1lc3BhY2VMb29rdXBbdF09b31fYmFsYW5jZU5hbWVzcGFjZUxpc3QodCxlKXtsZXQgbz10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO2lmKG8+PTApe2xldCBpPSExO2ZvcihsZXQgYT1vO2E+PTA7YS0tKXtsZXQgcj10aGlzLl9uYW1lc3BhY2VMaXN0W2FdO2lmKHRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudChyLmhvc3RFbGVtZW50LGUpKXt0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShhKzEsMCx0KSxpPSEwO2JyZWFrfX1pfHx0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZSgwLDAsdCl9ZWxzZSB0aGlzLl9uYW1lc3BhY2VMaXN0LnB1c2godCk7cmV0dXJuIHRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuc2V0KGUsdCksdH1yZWdpc3Rlcih0LGUpe2xldCBvPXRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtyZXR1cm4gb3x8KG89dGhpcy5jcmVhdGVOYW1lc3BhY2UodCxlKSksb31yZWdpc3RlclRyaWdnZXIodCxlLG8pe2xldCBpPXRoaXMuX25hbWVzcGFjZUxvb2t1cFt0XTtpJiZpLnJlZ2lzdGVyKGUsbykmJnRoaXMudG90YWxBbmltYXRpb25zKyt9ZGVzdHJveSh0LGUpe2lmKCF0KXJldHVybjtsZXQgbz10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTt0aGlzLmFmdGVyRmx1c2goKCk9Pnt0aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LmRlbGV0ZShvLmhvc3RFbGVtZW50KSxkZWxldGUgdGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdO2xldCBpPXRoaXMuX25hbWVzcGFjZUxpc3QuaW5kZXhPZihvKTtpPj0wJiZ0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShpLDEpfSksdGhpcy5hZnRlckZsdXNoQW5pbWF0aW9uc0RvbmUoKCk9Pm8uZGVzdHJveShlKSl9X2ZldGNoTmFtZXNwYWNlKHQpe3JldHVybiB0aGlzLl9uYW1lc3BhY2VMb29rdXBbdF19ZmV0Y2hOYW1lc3BhY2VzQnlFbGVtZW50KHQpe2xldCBlPW5ldyBTZXQsbz10aGlzLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7aWYobyl7bGV0IGk9T2JqZWN0LmtleXMobyk7Zm9yKGxldCBhPTA7YTxpLmxlbmd0aDthKyspe2xldCByPW9baVthXV0ubmFtZXNwYWNlSWQ7aWYocil7bGV0IHM9dGhpcy5fZmV0Y2hOYW1lc3BhY2Uocik7cyYmZS5hZGQocyl9fX1yZXR1cm4gZX10cmlnZ2VyKHQsZSxvLGkpe2lmKFBBKGUpKXtsZXQgYT10aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTtpZihhKXJldHVybiBhLnRyaWdnZXIoZSxvLGkpLCEwfXJldHVybiExfWluc2VydE5vZGUodCxlLG8saSl7aWYoIVBBKGUpKXJldHVybjtsZXQgYT1lW2JfXTtpZihhJiZhLnNldEZvclJlbW92YWwpe2Euc2V0Rm9yUmVtb3ZhbD0hMSxhLnNldEZvck1vdmU9ITA7bGV0IHI9dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmluZGV4T2YoZSk7cj49MCYmdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLnNwbGljZShyLDEpfWlmKHQpe2xldCByPXRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpO3ImJnIuaW5zZXJ0Tm9kZShlLG8pfWkmJnRoaXMuY29sbGVjdEVudGVyRWxlbWVudChlKX1jb2xsZWN0RW50ZXJFbGVtZW50KHQpe3RoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5wdXNoKHQpfW1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LGUpe2U/dGhpcy5kaXNhYmxlZE5vZGVzLmhhcyh0KXx8KHRoaXMuZGlzYWJsZWROb2Rlcy5hZGQodCksT18odCx4bnQpKTp0aGlzLmRpc2FibGVkTm9kZXMuaGFzKHQpJiYodGhpcy5kaXNhYmxlZE5vZGVzLmRlbGV0ZSh0KSx0Myh0LHhudCkpfXJlbW92ZU5vZGUodCxlLG8saSl7aWYoUEEoZSkpe2xldCBhPXQ/dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCk6bnVsbDtpZihhP2EucmVtb3ZlTm9kZShlLGkpOnRoaXMubWFya0VsZW1lbnRBc1JlbW92ZWQodCxlLCExLGkpLG8pe2xldCByPXRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuZ2V0KGUpO3ImJnIuaWQhPT10JiZyLnJlbW92ZU5vZGUoZSxpKX19ZWxzZSB0aGlzLl9vblJlbW92YWxDb21wbGV0ZShlLGkpfW1hcmtFbGVtZW50QXNSZW1vdmVkKHQsZSxvLGkpe3RoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5wdXNoKGUpLGVbYl9dPXtuYW1lc3BhY2VJZDp0LHNldEZvclJlbW92YWw6aSxoYXNBbmltYXRpb246byxyZW1vdmVkQmVmb3JlUXVlcmllZDohMX19bGlzdGVuKHQsZSxvLGksYSl7cmV0dXJuIFBBKGUpP3RoaXMuX2ZldGNoTmFtZXNwYWNlKHQpLmxpc3RlbihlLG8saSxhKTooKT0+e319X2J1aWxkSW5zdHJ1Y3Rpb24odCxlLG8saSxhKXtyZXR1cm4gdC50cmFuc2l0aW9uLmJ1aWxkKHRoaXMuZHJpdmVyLHQuZWxlbWVudCx0LmZyb21TdGF0ZS52YWx1ZSx0LnRvU3RhdGUudmFsdWUsbyxpLHQuZnJvbVN0YXRlLm9wdGlvbnMsdC50b1N0YXRlLm9wdGlvbnMsZSxhKX1kZXN0cm95SW5uZXJBbmltYXRpb25zKHQpe2xldCBlPXRoaXMuZHJpdmVyLnF1ZXJ5KHQseUEsITApO2UuZm9yRWFjaChvPT50aGlzLmRlc3Ryb3lBY3RpdmVBbmltYXRpb25zRm9yRWxlbWVudChvKSksdGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5zaXplIT0wJiYoZT10aGlzLmRyaXZlci5xdWVyeSh0LEVWLCEwKSxlLmZvckVhY2gobz0+dGhpcy5maW5pc2hBY3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KG8pKSl9ZGVzdHJveUFjdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KHQpe2xldCBlPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQodCk7ZSYmZS5mb3JFYWNoKG89PntvLnF1ZXVlZD9vLm1hcmtlZEZvckRlc3Ryb3k9ITA6by5kZXN0cm95KCl9KX1maW5pc2hBY3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KHQpe2xldCBlPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpO2UmJmUuZm9yRWFjaChvPT5vLmZpbmlzaCgpKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiBuZXcgUHJvbWlzZSh0PT57aWYodGhpcy5wbGF5ZXJzLmxlbmd0aClyZXR1cm4gRXkodGhpcy5wbGF5ZXJzKS5vbkRvbmUoKCk9PnQoKSk7dCgpfSl9cHJvY2Vzc0xlYXZlTm9kZSh0KXtsZXQgZT10W2JfXTtpZihlJiZlLnNldEZvclJlbW92YWwpe2lmKHRbYl9dPVpudCxlLm5hbWVzcGFjZUlkKXt0aGlzLmRlc3Ryb3lJbm5lckFuaW1hdGlvbnModCk7bGV0IG89dGhpcy5fZmV0Y2hOYW1lc3BhY2UoZS5uYW1lc3BhY2VJZCk7byYmby5jbGVhckVsZW1lbnRDYWNoZSh0KX10aGlzLl9vblJlbW92YWxDb21wbGV0ZSh0LGUuc2V0Rm9yUmVtb3ZhbCl9dGhpcy5kcml2ZXIubWF0Y2hlc0VsZW1lbnQodCx2bnQpJiZ0aGlzLm1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LCExKSx0aGlzLmRyaXZlci5xdWVyeSh0LHZudCwhMCkuZm9yRWFjaChvPT57dGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQobywhMSl9KX1mbHVzaCh0PS0xKXtsZXQgZT1bXTtpZih0aGlzLm5ld0hvc3RFbGVtZW50cy5zaXplJiYodGhpcy5uZXdIb3N0RWxlbWVudHMuZm9yRWFjaCgobyxpKT0+dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3QobyxpKSksdGhpcy5uZXdIb3N0RWxlbWVudHMuY2xlYXIoKSksdGhpcy50b3RhbEFuaW1hdGlvbnMmJnRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpZm9yKGxldCBvPTA7bzx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoO28rKyl7bGV0IGk9dGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzW29dO09fKGksVjN0KX1pZih0aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aCYmKHRoaXMudG90YWxRdWV1ZWRQbGF5ZXJzfHx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoKSl7bGV0IG89W107dHJ5e2U9dGhpcy5fZmx1c2hBbmltYXRpb25zKG8sdCl9ZmluYWxseXtmb3IobGV0IGk9MDtpPG8ubGVuZ3RoO2krKylvW2ldKCl9fWVsc2UgZm9yKGxldCBvPTA7bzx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO28rKyl7bGV0IGk9dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzW29dO3RoaXMucHJvY2Vzc0xlYXZlTm9kZShpKX1pZih0aGlzLnRvdGFsUXVldWVkUGxheWVycz0wLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg9MCx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5fZmx1c2hGbnMuZm9yRWFjaChvPT5vKCkpLHRoaXMuX2ZsdXNoRm5zPVtdLHRoaXMuX3doZW5RdWlldEZucy5sZW5ndGgpe2xldCBvPXRoaXMuX3doZW5RdWlldEZuczt0aGlzLl93aGVuUXVpZXRGbnM9W10sZS5sZW5ndGg/RXkoZSkub25Eb25lKCgpPT57by5mb3JFYWNoKGk9PmkoKSl9KTpvLmZvckVhY2goaT0+aSgpKX19cmVwb3J0RXJyb3IodCl7dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcHJvY2VzcyBhbmltYXRpb25zIGR1ZSB0byB0aGUgZm9sbG93aW5nIGZhaWxlZCB0cmlnZ2VyIHRyYW5zaXRpb25zCiAke3Quam9pbihgCmApfWApfV9mbHVzaEFuaW1hdGlvbnModCxlKXtsZXQgbz1uZXcgYUUsaT1bXSxhPW5ldyBNYXAscj1bXSxzPW5ldyBNYXAsbD1uZXcgTWFwLGM9bmV3IE1hcCxtPW5ldyBTZXQ7dGhpcy5kaXNhYmxlZE5vZGVzLmZvckVhY2gob3Q9PnttLmFkZChvdCk7bGV0IHV0PXRoaXMuZHJpdmVyLnF1ZXJ5KG90LEIzdCwhMCk7Zm9yKGxldCBndD0wO2d0PHV0Lmxlbmd0aDtndCsrKW0uYWRkKHV0W2d0XSl9KTtsZXQgZj10aGlzLmJvZHlOb2RlLHA9QXJyYXkuZnJvbSh0aGlzLnN0YXRlc0J5RWxlbWVudC5rZXlzKCkpLGc9Um50KHAsdGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzKSxfPW5ldyBNYXAsTT0wO2cuZm9yRWFjaCgob3QsdXQpPT57bGV0IGd0PUJudCtNKys7Xy5zZXQodXQsZ3QpLG90LmZvckVhY2goV3Q9Pk9fKFd0LGd0KSl9KTtsZXQgeT1bXSxPPW5ldyBTZXQsYj1uZXcgU2V0O2ZvcihsZXQgb3Q9MDtvdDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO290Kyspe2xldCB1dD10aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHNbb3RdLGd0PXV0W2JfXTtndCYmZ3Quc2V0Rm9yUmVtb3ZhbCYmKHkucHVzaCh1dCksTy5hZGQodXQpLGd0Lmhhc0FuaW1hdGlvbj90aGlzLmRyaXZlci5xdWVyeSh1dCxqM3QsITApLmZvckVhY2goV3Q9Pk8uYWRkKFd0KSk6Yi5hZGQodXQpKX1sZXQgUj1uZXcgTWFwLEU9Um50KHAsQXJyYXkuZnJvbShPKSk7RS5mb3JFYWNoKChvdCx1dCk9PntsZXQgZ3Q9UlYrTSsrO1Iuc2V0KHV0LGd0KSxvdC5mb3JFYWNoKFd0PT5PXyhXdCxndCkpfSksdC5wdXNoKCgpPT57Zy5mb3JFYWNoKChvdCx1dCk9PntsZXQgZ3Q9Xy5nZXQodXQpO290LmZvckVhY2goV3Q9PnQzKFd0LGd0KSl9KSxFLmZvckVhY2goKG90LHV0KT0+e2xldCBndD1SLmdldCh1dCk7b3QuZm9yRWFjaChXdD0+dDMoV3QsZ3QpKX0pLHkuZm9yRWFjaChvdD0+e3RoaXMucHJvY2Vzc0xlYXZlTm9kZShvdCl9KX0pO2xldCBqPVtdLHJ0PVtdO2ZvcihsZXQgb3Q9dGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgtMTtvdD49MDtvdC0tKXRoaXMuX25hbWVzcGFjZUxpc3Rbb3RdLmRyYWluUXVldWVkVHJhbnNpdGlvbnMoZSkuZm9yRWFjaChndD0+e2xldCBXdD1ndC5wbGF5ZXIsUnQ9Z3QuZWxlbWVudDtpZihqLnB1c2goV3QpLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGgpe2xldCBQbj1SdFtiX107aWYoUG4mJlBuLnNldEZvck1vdmUpe1d0LmRlc3Ryb3koKTtyZXR1cm59fWxldCBHdD0hZnx8IXRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudChmLFJ0KSx5ZT1SLmdldChSdCksamU9Xy5nZXQoUnQpLGNlPXRoaXMuX2J1aWxkSW5zdHJ1Y3Rpb24oZ3QsbyxqZSx5ZSxHdCk7aWYoY2UuZXJyb3JzJiZjZS5lcnJvcnMubGVuZ3RoKXtydC5wdXNoKGNlKTtyZXR1cm59aWYoR3Qpe1d0Lm9uU3RhcnQoKCk9Pnh2KFJ0LGNlLmZyb21TdHlsZXMpKSxXdC5vbkRlc3Ryb3koKCk9PlZiKFJ0LGNlLnRvU3R5bGVzKSksaS5wdXNoKFd0KTtyZXR1cm59aWYoZ3QuaXNGYWxsYmFja1RyYW5zaXRpb24pe1d0Lm9uU3RhcnQoKCk9Pnh2KFJ0LGNlLmZyb21TdHlsZXMpKSxXdC5vbkRlc3Ryb3koKCk9PlZiKFJ0LGNlLnRvU3R5bGVzKSksaS5wdXNoKFd0KTtyZXR1cm59Y2UudGltZWxpbmVzLmZvckVhY2goUG49PlBuLnN0cmV0Y2hTdGFydGluZ0tleWZyYW1lPSEwKSxvLmFwcGVuZChSdCxjZS50aW1lbGluZXMpO2xldCBMdD17aW5zdHJ1Y3Rpb246Y2UscGxheWVyOld0LGVsZW1lbnQ6UnR9O3IucHVzaChMdCksY2UucXVlcmllZEVsZW1lbnRzLmZvckVhY2goUG49PkFnKHMsUG4sW10pLnB1c2goV3QpKSxjZS5wcmVTdHlsZVByb3BzLmZvckVhY2goKFBuLFZlKT0+e2xldCBEZT1PYmplY3Qua2V5cyhQbik7aWYoRGUubGVuZ3RoKXtsZXQgcXQ9bC5nZXQoVmUpO3F0fHxsLnNldChWZSxxdD1uZXcgU2V0KSxEZS5mb3JFYWNoKExlPT5xdC5hZGQoTGUpKX19KSxjZS5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKChQbixWZSk9PntsZXQgRGU9T2JqZWN0LmtleXMoUG4pLHF0PWMuZ2V0KFZlKTtxdHx8Yy5zZXQoVmUscXQ9bmV3IFNldCksRGUuZm9yRWFjaChMZT0+cXQuYWRkKExlKSl9KX0pO2lmKHJ0Lmxlbmd0aCl7bGV0IG90PVtdO3J0LmZvckVhY2godXQ9PntvdC5wdXNoKGBAJHt1dC50cmlnZ2VyTmFtZX0gaGFzIGZhaWxlZCBkdWUgdG86CmApLHV0LmVycm9ycy5mb3JFYWNoKGd0PT5vdC5wdXNoKGAtICR7Z3R9CmApKX0pLGouZm9yRWFjaCh1dD0+dXQuZGVzdHJveSgpKSx0aGlzLnJlcG9ydEVycm9yKG90KX1sZXQgSj1uZXcgTWFwLEV0PW5ldyBNYXA7ci5mb3JFYWNoKG90PT57bGV0IHV0PW90LmVsZW1lbnQ7by5oYXModXQpJiYoRXQuc2V0KHV0LHV0KSx0aGlzLl9iZWZvcmVBbmltYXRpb25CdWlsZChvdC5wbGF5ZXIubmFtZXNwYWNlSWQsb3QuaW5zdHJ1Y3Rpb24sSikpfSksaS5mb3JFYWNoKG90PT57bGV0IHV0PW90LmVsZW1lbnQ7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKHV0LCExLG90Lm5hbWVzcGFjZUlkLG90LnRyaWdnZXJOYW1lLG51bGwpLmZvckVhY2goV3Q9PntBZyhKLHV0LFtdKS5wdXNoKFd0KSxXdC5kZXN0cm95KCl9KX0pO2xldCBqdD15LmZpbHRlcihvdD0+RW50KG90LGwsYykpLGt0PW5ldyBNYXA7U250KGt0LHRoaXMuZHJpdmVyLGIsYyxCYikuZm9yRWFjaChvdD0+e0VudChvdCxsLGMpJiZqdC5wdXNoKG90KX0pO2xldCBVPW5ldyBNYXA7Zy5mb3JFYWNoKChvdCx1dCk9PntTbnQoVSx0aGlzLmRyaXZlcixuZXcgU2V0KG90KSxsLENBKX0pLGp0LmZvckVhY2gob3Q9PntsZXQgdXQ9a3QuZ2V0KG90KSxndD1VLmdldChvdCk7a3Quc2V0KG90LE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx1dCksZ3QpKX0pO2xldCBudD1bXSxsdD1bXSxidD17fTtyLmZvckVhY2gob3Q9PntsZXR7ZWxlbWVudDp1dCxwbGF5ZXI6Z3QsaW5zdHJ1Y3Rpb246V3R9PW90O2lmKG8uaGFzKHV0KSl7aWYobS5oYXModXQpKXtndC5vbkRlc3Ryb3koKCk9PlZiKHV0LFd0LnRvU3R5bGVzKSksZ3QuZGlzYWJsZWQ9ITAsZ3Qub3ZlcnJpZGVUb3RhbFRpbWUoV3QudG90YWxUaW1lKSxpLnB1c2goZ3QpO3JldHVybn1sZXQgUnQ9YnQ7aWYoRXQuc2l6ZT4xKXtsZXQgeWU9dXQsamU9W107Zm9yKDt5ZT15ZS5wYXJlbnROb2RlOyl7bGV0IGNlPUV0LmdldCh5ZSk7aWYoY2Upe1J0PWNlO2JyZWFrfWplLnB1c2goeWUpfWplLmZvckVhY2goY2U9PkV0LnNldChjZSxSdCkpfWxldCBHdD10aGlzLl9idWlsZEFuaW1hdGlvbihndC5uYW1lc3BhY2VJZCxXdCxKLGEsVSxrdCk7aWYoZ3Quc2V0UmVhbFBsYXllcihHdCksUnQ9PT1idCludC5wdXNoKGd0KTtlbHNle2xldCB5ZT10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KFJ0KTt5ZSYmeWUubGVuZ3RoJiYoZ3QucGFyZW50UGxheWVyPUV5KHllKSksaS5wdXNoKGd0KX19ZWxzZSB4dih1dCxXdC5mcm9tU3R5bGVzKSxndC5vbkRlc3Ryb3koKCk9PlZiKHV0LFd0LnRvU3R5bGVzKSksbHQucHVzaChndCksbS5oYXModXQpJiZpLnB1c2goZ3QpfSksbHQuZm9yRWFjaChvdD0+e2xldCB1dD1hLmdldChvdC5lbGVtZW50KTtpZih1dCYmdXQubGVuZ3RoKXtsZXQgZ3Q9RXkodXQpO290LnNldFJlYWxQbGF5ZXIoZ3QpfX0pLGkuZm9yRWFjaChvdD0+e290LnBhcmVudFBsYXllcj9vdC5zeW5jUGxheWVyRXZlbnRzKG90LnBhcmVudFBsYXllcik6b3QuZGVzdHJveSgpfSk7Zm9yKGxldCBvdD0wO290PHkubGVuZ3RoO290Kyspe2xldCB1dD15W290XSxndD11dFtiX107aWYodDModXQsUlYpLGd0JiZndC5oYXNBbmltYXRpb24pY29udGludWU7bGV0IFd0PVtdO2lmKHMuc2l6ZSl7bGV0IEd0PXMuZ2V0KHV0KTtHdCYmR3QubGVuZ3RoJiZXdC5wdXNoKC4uLkd0KTtsZXQgeWU9dGhpcy5kcml2ZXIucXVlcnkodXQsRVYsITApO2ZvcihsZXQgamU9MDtqZTx5ZS5sZW5ndGg7amUrKyl7bGV0IGNlPXMuZ2V0KHllW2plXSk7Y2UmJmNlLmxlbmd0aCYmV3QucHVzaCguLi5jZSl9fWxldCBSdD1XdC5maWx0ZXIoR3Q9PiFHdC5kZXN0cm95ZWQpO1J0Lmxlbmd0aD9aM3QodGhpcyx1dCxSdCk6dGhpcy5wcm9jZXNzTGVhdmVOb2RlKHV0KX1yZXR1cm4geS5sZW5ndGg9MCxudC5mb3JFYWNoKG90PT57dGhpcy5wbGF5ZXJzLnB1c2gob3QpLG90Lm9uRG9uZSgoKT0+e290LmRlc3Ryb3koKTtsZXQgdXQ9dGhpcy5wbGF5ZXJzLmluZGV4T2Yob3QpO3RoaXMucGxheWVycy5zcGxpY2UodXQsMSl9KSxvdC5wbGF5KCl9KSxudH1lbGVtZW50Q29udGFpbnNEYXRhKHQsZSl7bGV0IG89ITEsaT1lW2JfXTtyZXR1cm4gaSYmaS5zZXRGb3JSZW1vdmFsJiYobz0hMCksdGhpcy5wbGF5ZXJzQnlFbGVtZW50LmhhcyhlKSYmKG89ITApLHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuaGFzKGUpJiYobz0hMCksdGhpcy5zdGF0ZXNCeUVsZW1lbnQuaGFzKGUpJiYobz0hMCksdGhpcy5fZmV0Y2hOYW1lc3BhY2UodCkuZWxlbWVudENvbnRhaW5zRGF0YShlKXx8b31hZnRlckZsdXNoKHQpe3RoaXMuX2ZsdXNoRm5zLnB1c2godCl9YWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKHQpe3RoaXMuX3doZW5RdWlldEZucy5wdXNoKHQpfV9nZXRQcmV2aW91c1BsYXllcnModCxlLG8saSxhKXtsZXQgcj1bXTtpZihlKXtsZXQgcz10aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldCh0KTtzJiYocj1zKX1lbHNle2xldCBzPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQodCk7aWYocyl7bGV0IGw9IWF8fGE9PWlFO3MuZm9yRWFjaChjPT57Yy5xdWV1ZWR8fCFsJiZjLnRyaWdnZXJOYW1lIT1pfHxyLnB1c2goYyl9KX19cmV0dXJuKG98fGkpJiYocj1yLmZpbHRlcihzPT4hKG8mJm8hPXMubmFtZXNwYWNlSWR8fGkmJmkhPXMudHJpZ2dlck5hbWUpKSkscn1fYmVmb3JlQW5pbWF0aW9uQnVpbGQodCxlLG8pe2xldCBpPWUudHJpZ2dlck5hbWUsYT1lLmVsZW1lbnQscj1lLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOnQscz1lLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOmk7Zm9yKGxldCBsIG9mIGUudGltZWxpbmVzKXtsZXQgYz1sLmVsZW1lbnQsbT1jIT09YSxmPUFnKG8sYyxbXSk7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKGMsbSxyLHMsZS50b1N0YXRlKS5mb3JFYWNoKGc9PntsZXQgXz1nLmdldFJlYWxQbGF5ZXIoKTtfLmJlZm9yZURlc3Ryb3kmJl8uYmVmb3JlRGVzdHJveSgpLGcuZGVzdHJveSgpLGYucHVzaChnKX0pfXh2KGEsZS5mcm9tU3R5bGVzKX1fYnVpbGRBbmltYXRpb24odCxlLG8saSxhLHIpe2xldCBzPWUudHJpZ2dlck5hbWUsbD1lLmVsZW1lbnQsYz1bXSxtPW5ldyBTZXQsZj1uZXcgU2V0LHA9ZS50aW1lbGluZXMubWFwKF89PntsZXQgTT1fLmVsZW1lbnQ7bS5hZGQoTSk7bGV0IHk9TVtiX107aWYoeSYmeS5yZW1vdmVkQmVmb3JlUXVlcmllZClyZXR1cm4gbmV3IHJQKF8uZHVyYXRpb24sXy5kZWxheSk7bGV0IE89TSE9PWwsYj1YM3QoKG8uZ2V0KE0pfHxVM3QpLm1hcChKPT5KLmdldFJlYWxQbGF5ZXIoKSkpLmZpbHRlcihKPT57bGV0IEV0PUo7cmV0dXJuIEV0LmVsZW1lbnQ/RXQuZWxlbWVudD09PU06ITF9KSxSPWEuZ2V0KE0pLEU9ci5nZXQoTSksaj16bnQodGhpcy5kcml2ZXIsdGhpcy5fbm9ybWFsaXplcixNLF8ua2V5ZnJhbWVzLFIsRSkscnQ9dGhpcy5fYnVpbGRQbGF5ZXIoXyxqLGIpO2lmKF8uc3ViVGltZWxpbmUmJmkmJmYuYWRkKE0pLE8pe2xldCBKPW5ldyBsRSh0LHMsTSk7Si5zZXRSZWFsUGxheWVyKHJ0KSxjLnB1c2goSil9cmV0dXJuIHJ0fSk7Yy5mb3JFYWNoKF89PntBZyh0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LF8uZWxlbWVudCxbXSkucHVzaChfKSxfLm9uRG9uZSgoKT0+RzN0KHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQsXy5lbGVtZW50LF8pKX0pLG0uZm9yRWFjaChfPT5PXyhfLGhudCkpO2xldCBnPUV5KHApO3JldHVybiBnLm9uRGVzdHJveSgoKT0+e20uZm9yRWFjaChfPT50MyhfLGhudCkpLFZiKGwsZS50b1N0eWxlcyl9KSxmLmZvckVhY2goXz0+e0FnKGksXyxbXSkucHVzaChnKX0pLGd9X2J1aWxkUGxheWVyKHQsZSxvKXtyZXR1cm4gZS5sZW5ndGg+MD90aGlzLmRyaXZlci5hbmltYXRlKHQuZWxlbWVudCxlLHQuZHVyYXRpb24sdC5kZWxheSx0LmVhc2luZyxvKTpuZXcgclAodC5kdXJhdGlvbix0LmRlbGF5KX19LGxFPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLm5hbWVzcGFjZUlkPXQsdGhpcy50cmlnZ2VyTmFtZT1lLHRoaXMuZWxlbWVudD1vLHRoaXMuX3BsYXllcj1uZXcgclAsdGhpcy5fY29udGFpbnNSZWFsUGxheWVyPSExLHRoaXMuX3F1ZXVlZENhbGxiYWNrcz17fSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLm1hcmtlZEZvckRlc3Ryb3k9ITEsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnF1ZXVlZD0hMCx0aGlzLnRvdGFsVGltZT0wfXNldFJlYWxQbGF5ZXIodCl7dGhpcy5fY29udGFpbnNSZWFsUGxheWVyfHwodGhpcy5fcGxheWVyPXQsT2JqZWN0LmtleXModGhpcy5fcXVldWVkQ2FsbGJhY2tzKS5mb3JFYWNoKGU9Pnt0aGlzLl9xdWV1ZWRDYWxsYmFja3NbZV0uZm9yRWFjaChvPT5XVih0LGUsdm9pZCAwLG8pKX0pLHRoaXMuX3F1ZXVlZENhbGxiYWNrcz17fSx0aGlzLl9jb250YWluc1JlYWxQbGF5ZXI9ITAsdGhpcy5vdmVycmlkZVRvdGFsVGltZSh0LnRvdGFsVGltZSksdGhpcy5xdWV1ZWQ9ITEpfWdldFJlYWxQbGF5ZXIoKXtyZXR1cm4gdGhpcy5fcGxheWVyfW92ZXJyaWRlVG90YWxUaW1lKHQpe3RoaXMudG90YWxUaW1lPXR9c3luY1BsYXllckV2ZW50cyh0KXtsZXQgZT10aGlzLl9wbGF5ZXI7ZS50cmlnZ2VyQ2FsbGJhY2smJnQub25TdGFydCgoKT0+ZS50cmlnZ2VyQ2FsbGJhY2soInN0YXJ0IikpLHQub25Eb25lKCgpPT50aGlzLmZpbmlzaCgpKSx0Lm9uRGVzdHJveSgoKT0+dGhpcy5kZXN0cm95KCkpfV9xdWV1ZUV2ZW50KHQsZSl7QWcodGhpcy5fcXVldWVkQ2FsbGJhY2tzLHQsW10pLnB1c2goZSl9b25Eb25lKHQpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJkb25lIix0KSx0aGlzLl9wbGF5ZXIub25Eb25lKHQpfW9uU3RhcnQodCl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoInN0YXJ0Iix0KSx0aGlzLl9wbGF5ZXIub25TdGFydCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoImRlc3Ryb3kiLHQpLHRoaXMuX3BsYXllci5vbkRlc3Ryb3kodCl9aW5pdCgpe3RoaXMuX3BsYXllci5pbml0KCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLnF1ZXVlZD8hMTp0aGlzLl9wbGF5ZXIuaGFzU3RhcnRlZCgpfXBsYXkoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5wbGF5KCl9cGF1c2UoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5wYXVzZSgpfXJlc3RhcnQoKXshdGhpcy5xdWV1ZWQmJnRoaXMuX3BsYXllci5yZXN0YXJ0KCl9ZmluaXNoKCl7dGhpcy5fcGxheWVyLmZpbmlzaCgpfWRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZD0hMCx0aGlzLl9wbGF5ZXIuZGVzdHJveSgpfXJlc2V0KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucmVzZXQoKX1zZXRQb3NpdGlvbih0KXt0aGlzLnF1ZXVlZHx8dGhpcy5fcGxheWVyLnNldFBvc2l0aW9uKHQpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMucXVldWVkPzA6dGhpcy5fcGxheWVyLmdldFBvc2l0aW9uKCl9dHJpZ2dlckNhbGxiYWNrKHQpe2xldCBlPXRoaXMuX3BsYXllcjtlLnRyaWdnZXJDYWxsYmFjayYmZS50cmlnZ2VyQ2FsbGJhY2sodCl9fTtmdW5jdGlvbiBHM3Qobix0LGUpe2xldCBvO2lmKG4gaW5zdGFuY2VvZiBNYXApe2lmKG89bi5nZXQodCksbyl7aWYoby5sZW5ndGgpe2xldCBpPW8uaW5kZXhPZihlKTtvLnNwbGljZShpLDEpfW8ubGVuZ3RoPT0wJiZuLmRlbGV0ZSh0KX19ZWxzZSBpZihvPW5bdF0sbyl7aWYoby5sZW5ndGgpe2xldCBpPW8uaW5kZXhPZihlKTtvLnNwbGljZShpLDEpfW8ubGVuZ3RoPT0wJiZkZWxldGUgblt0XX1yZXR1cm4gb31mdW5jdGlvbiBXM3Qobil7cmV0dXJuIG4hPW51bGw/bjpudWxsfWZ1bmN0aW9uIFBBKG4pe3JldHVybiBuJiZuLm5vZGVUeXBlPT09MX1mdW5jdGlvbiBxM3Qobil7cmV0dXJuIG49PSJzdGFydCJ8fG49PSJkb25lIn1mdW5jdGlvbiB3bnQobix0KXtsZXQgZT1uLnN0eWxlLmRpc3BsYXk7cmV0dXJuIG4uc3R5bGUuZGlzcGxheT10IT1udWxsP3Q6Im5vbmUiLGV9ZnVuY3Rpb24gU250KG4sdCxlLG8saSl7bGV0IGE9W107ZS5mb3JFYWNoKGw9PmEucHVzaCh3bnQobCkpKTtsZXQgcj1bXTtvLmZvckVhY2goKGwsYyk9PntsZXQgbT17fTtsLmZvckVhY2goZj0+e2xldCBwPW1bZl09dC5jb21wdXRlU3R5bGUoYyxmLGkpOyghcHx8cC5sZW5ndGg9PTApJiYoY1tiX109WTN0LHIucHVzaChjKSl9KSxuLnNldChjLG0pfSk7bGV0IHM9MDtyZXR1cm4gZS5mb3JFYWNoKGw9PndudChsLGFbcysrXSkpLHJ9ZnVuY3Rpb24gUm50KG4sdCl7bGV0IGU9bmV3IE1hcDtpZihuLmZvckVhY2gocz0+ZS5zZXQocyxbXSkpLHQubGVuZ3RoPT0wKXJldHVybiBlO2xldCBvPTEsaT1uZXcgU2V0KHQpLGE9bmV3IE1hcDtmdW5jdGlvbiByKHMpe2lmKCFzKXJldHVybiBvO2xldCBsPWEuZ2V0KHMpO2lmKGwpcmV0dXJuIGw7bGV0IGM9cy5wYXJlbnROb2RlO3JldHVybiBlLmhhcyhjKT9sPWM6aS5oYXMoYyk/bD1vOmw9cihjKSxhLnNldChzLGwpLGx9cmV0dXJuIHQuZm9yRWFjaChzPT57bGV0IGw9cihzKTtsIT09byYmZS5nZXQobCkucHVzaChzKX0pLGV9dmFyIFZWPSIkJGNsYXNzZXMiO2Z1bmN0aW9uIE9fKG4sdCl7aWYobi5jbGFzc0xpc3Qpbi5jbGFzc0xpc3QuYWRkKHQpO2Vsc2V7bGV0IGU9bltWVl07ZXx8KGU9bltWVl09e30pLGVbdF09ITB9fWZ1bmN0aW9uIHQzKG4sdCl7aWYobi5jbGFzc0xpc3Qpbi5jbGFzc0xpc3QucmVtb3ZlKHQpO2Vsc2V7bGV0IGU9bltWVl07ZSYmZGVsZXRlIGVbdF19fWZ1bmN0aW9uIFozdChuLHQsZSl7RXkoZSkub25Eb25lKCgpPT5uLnByb2Nlc3NMZWF2ZU5vZGUodCkpfWZ1bmN0aW9uIFgzdChuKXtsZXQgdD1bXTtyZXR1cm4gWG50KG4sdCksdH1mdW5jdGlvbiBYbnQobix0KXtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7bGV0IG89bltlXTtvIGluc3RhbmNlb2YgbkU/WG50KG8ucGxheWVycyx0KTp0LnB1c2gobyl9fWZ1bmN0aW9uIFEzdChuLHQpe2xldCBlPU9iamVjdC5rZXlzKG4pLG89T2JqZWN0LmtleXModCk7aWYoZS5sZW5ndGghPW8ubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtsZXQgYT1lW2ldO2lmKCF0Lmhhc093blByb3BlcnR5KGEpfHxuW2FdIT09dFthXSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBFbnQobix0LGUpe2xldCBvPWUuZ2V0KG4pO2lmKCFvKXJldHVybiExO2xldCBpPXQuZ2V0KG4pO3JldHVybiBpP28uZm9yRWFjaChhPT5pLmFkZChhKSk6dC5zZXQobixvKSxlLmRlbGV0ZShuKSwhMH12YXIgVWI9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuYm9keU5vZGU9dCx0aGlzLl9kcml2ZXI9ZSx0aGlzLl9ub3JtYWxpemVyPW8sdGhpcy5fdHJpZ2dlckNhY2hlPXt9LHRoaXMub25SZW1vdmFsQ29tcGxldGU9KGksYSk9Pnt9LHRoaXMuX3RyYW5zaXRpb25FbmdpbmU9bmV3IEJWKHQsZSxvKSx0aGlzLl90aW1lbGluZUVuZ2luZT1uZXcgRlYodCxlLG8pLHRoaXMuX3RyYW5zaXRpb25FbmdpbmUub25SZW1vdmFsQ29tcGxldGU9KGksYSk9PnRoaXMub25SZW1vdmFsQ29tcGxldGUoaSxhKX1yZWdpc3RlclRyaWdnZXIodCxlLG8saSxhKXtsZXQgcj10KyItIitpLHM9dGhpcy5fdHJpZ2dlckNhY2hlW3JdO2lmKCFzKXtsZXQgbD1bXSxjPVdudCh0aGlzLl9kcml2ZXIsYSxsKTtpZihsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBhbmltYXRpb24gdHJpZ2dlciAiJHtpfSIgaGFzIGZhaWxlZCB0byBidWlsZCBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6CiAtICR7bC5qb2luKGAKIC0gYCl9YCk7cz1IM3QoaSxjLHRoaXMuX25vcm1hbGl6ZXIpLHRoaXMuX3RyaWdnZXJDYWNoZVtyXT1zfXRoaXMuX3RyYW5zaXRpb25FbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKGUsaSxzKX1yZWdpc3Rlcih0LGUpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUucmVnaXN0ZXIodCxlKX1kZXN0cm95KHQsZSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5kZXN0cm95KHQsZSl9b25JbnNlcnQodCxlLG8saSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5pbnNlcnROb2RlKHQsZSxvLGkpfW9uUmVtb3ZlKHQsZSxvLGkpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUucmVtb3ZlTm9kZSh0LGUsaXx8ITEsbyl9ZGlzYWJsZUFuaW1hdGlvbnModCxlKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLm1hcmtFbGVtZW50QXNEaXNhYmxlZCh0LGUpfXByb2Nlc3ModCxlLG8saSl7aWYoby5jaGFyQXQoMCk9PSJAIil7bGV0W2Escl09ZG50KG8pLHM9aTt0aGlzLl90aW1lbGluZUVuZ2luZS5jb21tYW5kKGEsZSxyLHMpfWVsc2UgdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS50cmlnZ2VyKHQsZSxvLGkpfWxpc3Rlbih0LGUsbyxpLGEpe2lmKG8uY2hhckF0KDApPT0iQCIpe2xldFtyLHNdPWRudChvKTtyZXR1cm4gdGhpcy5fdGltZWxpbmVFbmdpbmUubGlzdGVuKHIsZSxzLGEpfXJldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLmxpc3Rlbih0LGUsbyxpLGEpfWZsdXNoKHQ9LTEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZmx1c2godCl9Z2V0IHBsYXllcnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5wbGF5ZXJzLmNvbmNhdCh0aGlzLl90aW1lbGluZUVuZ2luZS5wbGF5ZXJzKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9fTtmdW5jdGlvbiBRbnQobix0KXtsZXQgZT1udWxsLG89bnVsbDtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg/KGU9dlYodFswXSksdC5sZW5ndGg+MSYmKG89dlYodFt0Lmxlbmd0aC0xXSkpKTp0JiYoZT12Vih0KSksZXx8bz9uZXcga3kobixlLG8pOm51bGx9dmFyIGt5PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fc3RhcnRTdHlsZXM9ZSx0aGlzLl9lbmRTdHlsZXM9byx0aGlzLl9zdGF0ZT0wO2xldCBpPWt5LmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuZ2V0KHQpO2l8fGt5LmluaXRpYWxTdHlsZXNCeUVsZW1lbnQuc2V0KHQsaT17fSksdGhpcy5faW5pdGlhbFN0eWxlcz1pfXN0YXJ0KCl7dGhpcy5fc3RhdGU8MSYmKHRoaXMuX3N0YXJ0U3R5bGVzJiZWYih0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzLHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTEpfWZpbmlzaCgpe3RoaXMuc3RhcnQoKSx0aGlzLl9zdGF0ZTwyJiYoVmIodGhpcy5fZWxlbWVudCx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9lbmRTdHlsZXMmJihWYih0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLHRoaXMuX3N0YXRlPTEpfWRlc3Ryb3koKXt0aGlzLmZpbmlzaCgpLHRoaXMuX3N0YXRlPDMmJihreS5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmRlbGV0ZSh0aGlzLl9lbGVtZW50KSx0aGlzLl9zdGFydFN0eWxlcyYmKHh2KHRoaXMuX2VsZW1lbnQsdGhpcy5fc3RhcnRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9lbmRTdHlsZXMmJih4dih0aGlzLl9lbGVtZW50LHRoaXMuX2VuZFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzPW51bGwpLFZiKHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fc3RhdGU9Myl9fTtreS5pbml0aWFsU3R5bGVzQnlFbGVtZW50PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHZWKG4pe2xldCB0PW51bGwsZT1PYmplY3Qua2V5cyhuKTtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl7bGV0IGk9ZVtvXTtLM3QoaSkmJih0PXR8fHt9LHRbaV09bltpXSl9cmV0dXJuIHR9ZnVuY3Rpb24gSzN0KG4pe3JldHVybiBuPT09ImRpc3BsYXkifHxuPT09InBvc2l0aW9uIn12YXIgSjN0PTMsS250PSJhbmltYXRpb24iLGtudD0iYW5pbWF0aW9uZW5kIiwkM3Q9MWUzLGpWPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9uYW1lPWUsdGhpcy5fZHVyYXRpb249byx0aGlzLl9kZWxheT1pLHRoaXMuX2Vhc2luZz1hLHRoaXMuX2ZpbGxNb2RlPXIsdGhpcy5fb25Eb25lRm49cyx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fc3RhcnRUaW1lPTAsdGhpcy5fcG9zaXRpb249MCx0aGlzLl9ldmVudEZuPWw9PnRoaXMuX2hhbmRsZUNhbGxiYWNrKGwpfWFwcGx5KCl7dDJ0KHRoaXMuX2VsZW1lbnQsYCR7dGhpcy5fZHVyYXRpb259bXMgJHt0aGlzLl9lYXNpbmd9ICR7dGhpcy5fZGVsYXl9bXMgMSBub3JtYWwgJHt0aGlzLl9maWxsTW9kZX0gJHt0aGlzLl9uYW1lfWApLFRudCh0aGlzLl9lbGVtZW50LHRoaXMuX2V2ZW50Rm4sITEpLHRoaXMuX3N0YXJ0VGltZT1EYXRlLm5vdygpfXBhdXNlKCl7Tm50KHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSwicGF1c2VkIil9cmVzdW1lKCl7Tm50KHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSwicnVubmluZyIpfXNldFBvc2l0aW9uKHQpe2xldCBlPUpudCh0aGlzLl9lbGVtZW50LHRoaXMuX25hbWUpO3RoaXMuX3Bvc2l0aW9uPXQqdGhpcy5fZHVyYXRpb24sSUEodGhpcy5fZWxlbWVudCwiRGVsYXkiLGAtJHt0aGlzLl9wb3NpdGlvbn1tc2AsZSl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259X2hhbmRsZUNhbGxiYWNrKHQpe2xldCBlPXQuX25nVGVzdE1hbnVhbFRpbWVzdGFtcHx8RGF0ZS5ub3coKSxvPXBhcnNlRmxvYXQodC5lbGFwc2VkVGltZS50b0ZpeGVkKEozdCkpKiQzdDt0LmFuaW1hdGlvbk5hbWU9PXRoaXMuX25hbWUmJk1hdGgubWF4KGUtdGhpcy5fc3RhcnRUaW1lLDApPj10aGlzLl9kZWxheSYmbz49dGhpcy5fZHVyYXRpb24mJnRoaXMuZmluaXNoKCl9ZmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbigpLFRudCh0aGlzLl9lbGVtZW50LHRoaXMuX2V2ZW50Rm4sITApKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZmluaXNoKCksZTJ0KHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSkpfX07ZnVuY3Rpb24gTm50KG4sdCxlKXtsZXQgbz1KbnQobix0KTtJQShuLCJQbGF5U3RhdGUiLGUsbyl9ZnVuY3Rpb24gdDJ0KG4sdCl7bGV0IGU9ZWoobiwiIikudHJpbSgpLG89MDtyZXR1cm4gZS5sZW5ndGgmJihvPW4ydChlLCIsIikrMSx0PWAke2V9LCAke3R9YCksSUEobiwiIix0KSxvfWZ1bmN0aW9uIGUydChuLHQpe2xldCBvPWVqKG4sIiIpLnNwbGl0KCIsIiksaT1VVihvLHQpO2lmKGk+PTApe28uc3BsaWNlKGksMSk7bGV0IGE9by5qb2luKCIsIik7SUEobiwiIixhKX19ZnVuY3Rpb24gSm50KG4sdCl7bGV0IGU9ZWoobiwiIik7aWYoZS5pbmRleE9mKCIsIik+MCl7bGV0IG89ZS5zcGxpdCgiLCIpO3JldHVybiBVVihvLHQpfXJldHVybiBVVihbZV0sdCl9ZnVuY3Rpb24gVVYobix0KXtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylpZihuW2VdLmluZGV4T2YodCk+PTApcmV0dXJuIGU7cmV0dXJuLTF9ZnVuY3Rpb24gVG50KG4sdCxlKXtlP24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihrbnQsdCk6bi5hZGRFdmVudExpc3RlbmVyKGtudCx0KX1mdW5jdGlvbiBJQShuLHQsZSxvKXtsZXQgaT1LbnQrdDtpZihvIT1udWxsKXtsZXQgYT1uLnN0eWxlW2ldO2lmKGEubGVuZ3RoKXtsZXQgcj1hLnNwbGl0KCIsIik7cltvXT1lLGU9ci5qb2luKCIsIil9fW4uc3R5bGVbaV09ZX1mdW5jdGlvbiBlaihuLHQpe3JldHVybiBuLnN0eWxlW0tudCt0XXx8IiJ9ZnVuY3Rpb24gbjJ0KG4sdCl7bGV0IGU9MDtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyluLmNoYXJBdChvKT09PXQmJmUrKztyZXR1cm4gZX12YXIgbzJ0PSJmb3J3YXJkcyIsaTJ0PSJsaW5lYXIiLE5BPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCl7dGhpcy5lbGVtZW50PXQsdGhpcy5rZXlmcmFtZXM9ZSx0aGlzLmFuaW1hdGlvbk5hbWU9byx0aGlzLl9kdXJhdGlvbj1pLHRoaXMuX2RlbGF5PWEsdGhpcy5fZmluYWxTdHlsZXM9cyx0aGlzLl9zcGVjaWFsU3R5bGVzPWwsdGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMuY3VycmVudFNuYXBzaG90PXt9LHRoaXMuX3N0YXRlPTAsdGhpcy5lYXNpbmc9cnx8aTJ0LHRoaXMudG90YWxUaW1lPWkrYSx0aGlzLl9idWlsZFN0eWxlcigpfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9ZGVzdHJveSgpe3RoaXMuaW5pdCgpLCEodGhpcy5fc3RhdGU+PTQpJiYodGhpcy5fc3RhdGU9NCx0aGlzLl9zdHlsZXIuZGVzdHJveSgpLHRoaXMuX2ZsdXNoU3RhcnRGbnMoKSx0aGlzLl9mbHVzaERvbmVGbnMoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmRlc3Ryb3koKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCh0PT50KCkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9X2ZsdXNoRG9uZUZucygpe3RoaXMuX29uRG9uZUZucy5mb3JFYWNoKHQ9PnQoKSksdGhpcy5fb25Eb25lRm5zPVtdfV9mbHVzaFN0YXJ0Rm5zKCl7dGhpcy5fb25TdGFydEZucy5mb3JFYWNoKHQ9PnQoKSksdGhpcy5fb25TdGFydEZucz1bXX1maW5pc2goKXt0aGlzLmluaXQoKSwhKHRoaXMuX3N0YXRlPj0zKSYmKHRoaXMuX3N0YXRlPTMsdGhpcy5fc3R5bGVyLmZpbmlzaCgpLHRoaXMuX2ZsdXNoU3RhcnRGbnMoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmZpbmlzaCgpLHRoaXMuX2ZsdXNoRG9uZUZucygpKX1zZXRQb3NpdGlvbih0KXt0aGlzLl9zdHlsZXIuc2V0UG9zaXRpb24odCl9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fc3R5bGVyLmdldFBvc2l0aW9uKCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGF0ZT49Mn1pbml0KCl7aWYodGhpcy5fc3RhdGU+PTEpcmV0dXJuO3RoaXMuX3N0YXRlPTE7bGV0IHQ9dGhpcy5lbGVtZW50O3RoaXMuX3N0eWxlci5hcHBseSgpLHRoaXMuX2RlbGF5JiZ0aGlzLl9zdHlsZXIucGF1c2UoKX1wbGF5KCl7dGhpcy5pbml0KCksdGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fc3RhdGU9Mix0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLnN0YXJ0KCkpLHRoaXMuX3N0eWxlci5yZXN1bWUoKX1wYXVzZSgpe3RoaXMuaW5pdCgpLHRoaXMuX3N0eWxlci5wYXVzZSgpfXJlc3RhcnQoKXt0aGlzLnJlc2V0KCksdGhpcy5wbGF5KCl9cmVzZXQoKXt0aGlzLl9zdGF0ZT0wLHRoaXMuX3N0eWxlci5kZXN0cm95KCksdGhpcy5fYnVpbGRTdHlsZXIoKSx0aGlzLl9zdHlsZXIuYXBwbHkoKX1fYnVpbGRTdHlsZXIoKXt0aGlzLl9zdHlsZXI9bmV3IGpWKHRoaXMuZWxlbWVudCx0aGlzLmFuaW1hdGlvbk5hbWUsdGhpcy5fZHVyYXRpb24sdGhpcy5fZGVsYXksdGhpcy5lYXNpbmcsbzJ0LCgpPT50aGlzLmZpbmlzaCgpKX10cmlnZ2VyQ2FsbGJhY2sodCl7bGV0IGU9dD09InN0YXJ0Ij90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztlLmZvckVhY2gobz0+bygpKSxlLmxlbmd0aD0wfWJlZm9yZURlc3Ryb3koKXt0aGlzLmluaXQoKTtsZXQgdD17fTtpZih0aGlzLmhhc1N0YXJ0ZWQoKSl7bGV0IGU9dGhpcy5fc3RhdGU+PTM7T2JqZWN0LmtleXModGhpcy5fZmluYWxTdHlsZXMpLmZvckVhY2gobz0+e28hPSJvZmZzZXQiJiYodFtvXT1lP3RoaXMuX2ZpbmFsU3R5bGVzW29dOiRWKHRoaXMuZWxlbWVudCxvKSl9KX10aGlzLmN1cnJlbnRTbmFwc2hvdD10fX07dmFyIFlWPWNsYXNzIGV4dGVuZHMgclB7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuZWxlbWVudD10LHRoaXMuX3N0YXJ0aW5nU3R5bGVzPXt9LHRoaXMuX19pbml0aWFsaXplZD0hMSx0aGlzLl9zdHlsZXM9Rm50KGUpfWluaXQoKXt0aGlzLl9faW5pdGlhbGl6ZWR8fCF0aGlzLl9zdGFydGluZ1N0eWxlc3x8KHRoaXMuX19pbml0aWFsaXplZD0hMCxPYmplY3Qua2V5cyh0aGlzLl9zdHlsZXMpLmZvckVhY2godD0+e3RoaXMuX3N0YXJ0aW5nU3R5bGVzW3RdPXRoaXMuZWxlbWVudC5zdHlsZVt0XX0pLHN1cGVyLmluaXQoKSl9cGxheSgpeyF0aGlzLl9zdGFydGluZ1N0eWxlc3x8KHRoaXMuaW5pdCgpLE9iamVjdC5rZXlzKHRoaXMuX3N0eWxlcykuZm9yRWFjaCh0PT50aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodCx0aGlzLl9zdHlsZXNbdF0pKSxzdXBlci5wbGF5KCkpfWRlc3Ryb3koKXshdGhpcy5fc3RhcnRpbmdTdHlsZXN8fChPYmplY3Qua2V5cyh0aGlzLl9zdGFydGluZ1N0eWxlcykuZm9yRWFjaCh0PT57bGV0IGU9dGhpcy5fc3RhcnRpbmdTdHlsZXNbdF07ZT90aGlzLmVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkodCxlKTp0aGlzLmVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9KSx0aGlzLl9zdGFydGluZ1N0eWxlcz1udWxsLHN1cGVyLmRlc3Ryb3koKSl9fSxhMnQ9Imdlbl9jc3Nfa2ZfIixBbnQ9IiAiLGNFPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fY291bnQ9MH12YWxpZGF0ZVN0eWxlUHJvcGVydHkodCl7cmV0dXJuIFpWKHQpfW1hdGNoZXNFbGVtZW50KHQsZSl7cmV0dXJuIFhWKHQsZSl9Y29udGFpbnNFbGVtZW50KHQsZSl7cmV0dXJuIFFWKHQsZSl9cXVlcnkodCxlLG8pe3JldHVybiBLVih0LGUsbyl9Y29tcHV0ZVN0eWxlKHQsZSxvKXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUodClbZV19YnVpbGRLZXlmcmFtZUVsZW1lbnQodCxlLG8pe289by5tYXAocz0+Rm50KHMpKTtsZXQgaT1gQGtleWZyYW1lcyAke2V9IHsKYCxhPSIiO28uZm9yRWFjaChzPT57YT1BbnQ7bGV0IGw9cGFyc2VGbG9hdChzLm9mZnNldCk7aSs9YCR7YX0ke2wqMTAwfSUgewpgLGErPUFudCxPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGM9PntsZXQgbT1zW2NdO3N3aXRjaChjKXtjYXNlIm9mZnNldCI6cmV0dXJuO2Nhc2UiZWFzaW5nIjptJiYoaSs9YCR7YX1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAke219OwpgKTtyZXR1cm47ZGVmYXVsdDppKz1gJHthfSR7Y306ICR7bX07CmA7cmV0dXJufX0pLGkrPWAke2F9fQpgfSksaSs9YH0KYDtsZXQgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiByLnRleHRDb250ZW50PWkscn1hbmltYXRlKHQsZSxvLGksYSxyPVtdLHMpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmcyYmYzJ0KCk7bGV0IGw9ci5maWx0ZXIoeT0+eSBpbnN0YW5jZW9mIE5BKSxjPXt9O1VudChvLGkpJiZsLmZvckVhY2goeT0+e2xldCBPPXkuY3VycmVudFNuYXBzaG90O09iamVjdC5rZXlzKE8pLmZvckVhY2goYj0+Y1tiXT1PW2JdKX0pLGU9WW50KHQsZSxjKTtsZXQgbT1zMnQoZSk7aWYobz09MClyZXR1cm4gbmV3IFlWKHQsbSk7bGV0IGY9YCR7YTJ0fSR7dGhpcy5fY291bnQrK31gLHA9dGhpcy5idWlsZEtleWZyYW1lRWxlbWVudCh0LGYsZSk7cjJ0KHQpLmFwcGVuZENoaWxkKHApO2xldCBfPVFudCh0LGUpLE09bmV3IE5BKHQsZSxmLG8saSxhLG0sXyk7cmV0dXJuIE0ub25EZXN0cm95KCgpPT5sMnQocCkpLE19fTtmdW5jdGlvbiByMnQobil7dmFyIHQ7bGV0IGU9KHQ9bi5nZXRSb290Tm9kZSk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LmNhbGwobik7cmV0dXJuIHR5cGVvZiBTaGFkb3dSb290IT0idW5kZWZpbmVkIiYmZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q/ZTpkb2N1bWVudC5oZWFkfWZ1bmN0aW9uIHMydChuKXtsZXQgdD17fTtyZXR1cm4gbiYmKEFycmF5LmlzQXJyYXkobik/bjpbbl0pLmZvckVhY2gobz0+e09iamVjdC5rZXlzKG8pLmZvckVhY2goaT0+e2k9PSJvZmZzZXQifHxpPT0iZWFzaW5nInx8KHRbaV09b1tpXSl9KX0pLHR9ZnVuY3Rpb24gbDJ0KG4pe24ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKX12YXIgRG50PSExO2Z1bmN0aW9uIGMydCgpe0RudHx8KGNvbnNvbGUud2FybihgQGFuZ3VsYXIvYW5pbWF0aW9uczogcGxlYXNlIGxvYWQgdGhlIHdlYi1hbmltYXRpb25zLmpzIHBvbHlmaWxsIHRvIGFsbG93IHByb2dyYW1tYXRpYyBhY2Nlc3MuLi4KYCwiICB2aXNpdCBodHRwczovL2JpdC5seS9JV3VrYW0gdG8gbGVhcm4gbW9yZSBhYm91dCB1c2luZyB0aGUgd2ViLWFuaW1hdGlvbi1qcyBwb2x5ZmlsbC4iKSxEbnQ9ITApfXZhciBUQT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLmVsZW1lbnQ9dCx0aGlzLmtleWZyYW1lcz1lLHRoaXMub3B0aW9ucz1vLHRoaXMuX3NwZWNpYWxTdHlsZXM9aSx0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5faW5pdGlhbGl6ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy50aW1lPTAsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLmN1cnJlbnRTbmFwc2hvdD17fSx0aGlzLl9kdXJhdGlvbj1vLmR1cmF0aW9uLHRoaXMuX2RlbGF5PW8uZGVsYXl8fDAsdGhpcy50aW1lPXRoaXMuX2R1cmF0aW9uK3RoaXMuX2RlbGF5fV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2godD0+dCgpKSx0aGlzLl9vbkRvbmVGbnM9W10pfWluaXQoKXt0aGlzLl9idWlsZFBsYXllcigpLHRoaXMuX3ByZXBhcmVQbGF5ZXJCZWZvcmVTdGFydCgpfV9idWlsZFBsYXllcigpe2lmKHRoaXMuX2luaXRpYWxpemVkKXJldHVybjt0aGlzLl9pbml0aWFsaXplZD0hMDtsZXQgdD10aGlzLmtleWZyYW1lczt0aGlzLmRvbVBsYXllcj10aGlzLl90cmlnZ2VyV2ViQW5pbWF0aW9uKHRoaXMuZWxlbWVudCx0LHRoaXMub3B0aW9ucyksdGhpcy5fZmluYWxLZXlmcmFtZT10Lmxlbmd0aD90W3QubGVuZ3RoLTFdOnt9LHRoaXMuZG9tUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaCIsKCk9PnRoaXMuX29uRmluaXNoKCkpfV9wcmVwYXJlUGxheWVyQmVmb3JlU3RhcnQoKXt0aGlzLl9kZWxheT90aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCk6dGhpcy5kb21QbGF5ZXIucGF1c2UoKX1fdHJpZ2dlcldlYkFuaW1hdGlvbih0LGUsbyl7cmV0dXJuIHQuYW5pbWF0ZShlLG8pfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9cGxheSgpe3RoaXMuX2J1aWxkUGxheWVyKCksdGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2godD0+dCgpKSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITAsdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5zdGFydCgpKSx0aGlzLmRvbVBsYXllci5wbGF5KCl9cGF1c2UoKXt0aGlzLmluaXQoKSx0aGlzLmRvbVBsYXllci5wYXVzZSgpfWZpbmlzaCgpe3RoaXMuaW5pdCgpLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZmluaXNoKCksdGhpcy5fb25GaW5pc2goKSx0aGlzLmRvbVBsYXllci5maW5pc2goKX1yZXNldCgpe3RoaXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fc3RhcnRlZD0hMX1fcmVzZXREb21QbGF5ZXJTdGF0ZSgpe3RoaXMuZG9tUGxheWVyJiZ0aGlzLmRvbVBsYXllci5jYW5jZWwoKX1yZXN0YXJ0KCl7dGhpcy5yZXNldCgpLHRoaXMucGxheSgpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhcnRlZH1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKSx0aGlzLl9vbkZpbmlzaCgpLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuZGVzdHJveSgpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKHQ9PnQoKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1zZXRQb3NpdGlvbih0KXt0aGlzLmRvbVBsYXllcj09PXZvaWQgMCYmdGhpcy5pbml0KCksdGhpcy5kb21QbGF5ZXIuY3VycmVudFRpbWU9dCp0aGlzLnRpbWV9Z2V0UG9zaXRpb24oKXtyZXR1cm4gdGhpcy5kb21QbGF5ZXIuY3VycmVudFRpbWUvdGhpcy50aW1lfWdldCB0b3RhbFRpbWUoKXtyZXR1cm4gdGhpcy5fZGVsYXkrdGhpcy5fZHVyYXRpb259YmVmb3JlRGVzdHJveSgpe2xldCB0PXt9O3RoaXMuaGFzU3RhcnRlZCgpJiZPYmplY3Qua2V5cyh0aGlzLl9maW5hbEtleWZyYW1lKS5mb3JFYWNoKGU9PntlIT0ib2Zmc2V0IiYmKHRbZV09dGhpcy5fZmluaXNoZWQ/dGhpcy5fZmluYWxLZXlmcmFtZVtlXTokVih0aGlzLmVsZW1lbnQsZSkpfSksdGhpcy5jdXJyZW50U25hcHNob3Q9dH10cmlnZ2VyQ2FsbGJhY2sodCl7bGV0IGU9dD09InN0YXJ0Ij90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztlLmZvckVhY2gobz0+bygpKSxlLmxlbmd0aD0wfX0sQUE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9pc05hdGl2ZUltcGw9L1x7XHMqXFtuYXRpdmVccytjb2RlXF1ccypcfS8udGVzdCh0b3QoKS50b1N0cmluZygpKSx0aGlzLl9jc3NLZXlmcmFtZXNEcml2ZXI9bmV3IGNFfXZhbGlkYXRlU3R5bGVQcm9wZXJ0eSh0KXtyZXR1cm4gWlYodCl9bWF0Y2hlc0VsZW1lbnQodCxlKXtyZXR1cm4gWFYodCxlKX1jb250YWluc0VsZW1lbnQodCxlKXtyZXR1cm4gUVYodCxlKX1xdWVyeSh0LGUsbyl7cmV0dXJuIEtWKHQsZSxvKX1jb21wdXRlU3R5bGUodCxlLG8pe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KVtlXX1vdmVycmlkZVdlYkFuaW1hdGlvbnNTdXBwb3J0KHQpe3RoaXMuX2lzTmF0aXZlSW1wbD10fWFuaW1hdGUodCxlLG8saSxhLHI9W10scyl7aWYoIXMmJiF0aGlzLl9pc05hdGl2ZUltcGwpcmV0dXJuIHRoaXMuX2Nzc0tleWZyYW1lc0RyaXZlci5hbmltYXRlKHQsZSxvLGksYSxyKTtsZXQgYz1pPT0wPyJib3RoIjoiZm9yd2FyZHMiLG09e2R1cmF0aW9uOm8sZGVsYXk6aSxmaWxsOmN9O2EmJihtLmVhc2luZz1hKTtsZXQgZj17fSxwPXIuZmlsdGVyKF89Pl8gaW5zdGFuY2VvZiBUQSk7VW50KG8saSkmJnAuZm9yRWFjaChfPT57bGV0IE09Xy5jdXJyZW50U25hcHNob3Q7T2JqZWN0LmtleXMoTSkuZm9yRWFjaCh5PT5mW3ldPU1beV0pfSksZT1lLm1hcChfPT5lMyhfLCExKSksZT1ZbnQodCxlLGYpO2xldCBnPVFudCh0LGUpO3JldHVybiBuZXcgVEEodCxlLG0sZyl9fTtmdW5jdGlvbiAkbnQoKXtyZXR1cm4gdHlwZW9mIHRvdCgpPT0iZnVuY3Rpb24ifWZ1bmN0aW9uIHRvdCgpe3JldHVybiBJbnQoKSYmRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZXx8e319dmFyIFliPWNsYXNzIGV4dGVuZHMgZUV7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMuX25leHRBbmltYXRpb25JZD0wO2xldCBvPXtpZDoiMCIsZW5jYXBzdWxhdGlvbjpKZS5Ob25lLHN0eWxlczpbXSxkYXRhOnthbmltYXRpb246W119fTt0aGlzLl9yZW5kZXJlcj10LmNyZWF0ZVJlbmRlcmVyKGUuYm9keSxvKX1idWlsZCh0KXtsZXQgZT10aGlzLl9uZXh0QW5pbWF0aW9uSWQudG9TdHJpbmcoKTt0aGlzLl9uZXh0QW5pbWF0aW9uSWQrKztsZXQgbz1BcnJheS5pc0FycmF5KHQpP3VBKHQpOnQ7cmV0dXJuIGVvdCh0aGlzLl9yZW5kZXJlcixudWxsLGUsInJlZ2lzdGVyIixbb10pLG5ldyBuaihlLHRoaXMuX3JlbmRlcmVyKX19O1liLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFliKShJKFVmKSxJKF90KSl9O1liLlx1MDI3NXByb3Y9UHQoe3Rva2VuOlliLGZhY3Rvcnk6WWIuXHUwMjc1ZmFjfSk7WWIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpVZn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWWIsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VWZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTt2YXIgbmo9Y2xhc3MgZXh0ZW5kcyBnQXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5faWQ9dCx0aGlzLl9yZW5kZXJlcj1lfWNyZWF0ZSh0LGUpe3JldHVybiBuZXcgb2oodGhpcy5faWQsdCxlfHx7fSx0aGlzLl9yZW5kZXJlcil9fSxvaj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLmlkPXQsdGhpcy5lbGVtZW50PWUsdGhpcy5fcmVuZGVyZXI9aSx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy50b3RhbFRpbWU9MCx0aGlzLl9jb21tYW5kKCJjcmVhdGUiLG8pfV9saXN0ZW4odCxlKXtyZXR1cm4gdGhpcy5fcmVuZGVyZXIubGlzdGVuKHRoaXMuZWxlbWVudCxgQEAke3RoaXMuaWR9OiR7dH1gLGUpfV9jb21tYW5kKHQsLi4uZSl7cmV0dXJuIGVvdCh0aGlzLl9yZW5kZXJlcix0aGlzLmVsZW1lbnQsdGhpcy5pZCx0LGUpfW9uRG9uZSh0KXt0aGlzLl9saXN0ZW4oImRvbmUiLHQpfW9uU3RhcnQodCl7dGhpcy5fbGlzdGVuKCJzdGFydCIsdCl9b25EZXN0cm95KHQpe3RoaXMuX2xpc3RlbigiZGVzdHJveSIsdCl9aW5pdCgpe3RoaXMuX2NvbW1hbmQoImluaXQiKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9cGxheSgpe3RoaXMuX2NvbW1hbmQoInBsYXkiKSx0aGlzLl9zdGFydGVkPSEwfXBhdXNlKCl7dGhpcy5fY29tbWFuZCgicGF1c2UiKX1yZXN0YXJ0KCl7dGhpcy5fY29tbWFuZCgicmVzdGFydCIpfWZpbmlzaCgpe3RoaXMuX2NvbW1hbmQoImZpbmlzaCIpfWRlc3Ryb3koKXt0aGlzLl9jb21tYW5kKCJkZXN0cm95Iil9cmVzZXQoKXt0aGlzLl9jb21tYW5kKCJyZXNldCIpLHRoaXMuX3N0YXJ0ZWQ9ITF9c2V0UG9zaXRpb24odCl7dGhpcy5fY29tbWFuZCgic2V0UG9zaXRpb24iLHQpfWdldFBvc2l0aW9uKCl7dmFyIHQsZTtyZXR1cm4oZT0odD10aGlzLl9yZW5kZXJlci5lbmdpbmUucGxheWVyc1srdGhpcy5pZF0pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC5nZXRQb3NpdGlvbigpKSE9PW51bGwmJmUhPT12b2lkIDA/ZTowfX07ZnVuY3Rpb24gZW90KG4sdCxlLG8saSl7cmV0dXJuIG4uc2V0UHJvcGVydHkodCxgQEAke2V9OiR7b31gLGkpfXZhciB6QT0iQCIsbm90PSJALmRpc2FibGVkIixHYj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5kZWxlZ2F0ZT10LHRoaXMuZW5naW5lPWUsdGhpcy5fem9uZT1vLHRoaXMuX2N1cnJlbnRJZD0wLHRoaXMuX21pY3JvdGFza0lkPTEsdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyPVtdLHRoaXMuX3JlbmRlcmVyQ2FjaGU9bmV3IE1hcCx0aGlzLl9jZFJlY3VyRGVwdGg9MCx0aGlzLnByb21pc2U9UHJvbWlzZS5yZXNvbHZlKDApLGUub25SZW1vdmFsQ29tcGxldGU9KGksYSk9PnthJiZhLnBhcmVudE5vZGUoaSkmJmEucmVtb3ZlQ2hpbGQoaS5wYXJlbnROb2RlLGkpfX1jcmVhdGVSZW5kZXJlcih0LGUpe2xldCBvPSIiLGk9dGhpcy5kZWxlZ2F0ZS5jcmVhdGVSZW5kZXJlcih0LGUpO2lmKCF0fHwhZXx8IWUuZGF0YXx8IWUuZGF0YS5hbmltYXRpb24pe2xldCBjPXRoaXMuX3JlbmRlcmVyQ2FjaGUuZ2V0KGkpO3JldHVybiBjfHwoYz1uZXcgSEEobyxpLHRoaXMuZW5naW5lKSx0aGlzLl9yZW5kZXJlckNhY2hlLnNldChpLGMpKSxjfWxldCBhPWUuaWQscj1lLmlkKyItIit0aGlzLl9jdXJyZW50SWQ7dGhpcy5fY3VycmVudElkKyssdGhpcy5lbmdpbmUucmVnaXN0ZXIocix0KTtsZXQgcz1jPT57QXJyYXkuaXNBcnJheShjKT9jLmZvckVhY2gocyk6dGhpcy5lbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKGEscix0LGMubmFtZSxjKX07cmV0dXJuIGUuZGF0YS5hbmltYXRpb24uZm9yRWFjaChzKSxuZXcgaWoodGhpcyxyLGksdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRoKyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5kZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNvdW50VGFzaygpe3RoaXMucHJvbWlzZS50aGVuKCgpPT57dGhpcy5fbWljcm90YXNrSWQrK30pfXNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayh0LGUsbyl7aWYodD49MCYmdDx0aGlzLl9taWNyb3Rhc2tJZCl7dGhpcy5fem9uZS5ydW4oKCk9PmUobykpO3JldHVybn10aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIubGVuZ3RoPT0wJiZQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKT0+e3RoaXMuX3pvbmUucnVuKCgpPT57dGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyLmZvckVhY2goaT0+e2xldFthLHJdPWk7YShyKX0pLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlcj1bXX0pfSksdGhpcy5fYW5pbWF0aW9uQ2FsbGJhY2tzQnVmZmVyLnB1c2goW2Usb10pfWVuZCgpe3RoaXMuX2NkUmVjdXJEZXB0aC0tLHRoaXMuX2NkUmVjdXJEZXB0aD09MCYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX3NjaGVkdWxlQ291bnRUYXNrKCksdGhpcy5lbmdpbmUuZmx1c2godGhpcy5fbWljcm90YXNrSWQpfSksdGhpcy5kZWxlZ2F0ZS5lbmQmJnRoaXMuZGVsZWdhdGUuZW5kKCl9d2hlblJlbmRlcmluZ0RvbmUoKXtyZXR1cm4gdGhpcy5lbmdpbmUud2hlblJlbmRlcmluZ0RvbmUoKX19O0diLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEdiKShJKFVmKSxJKFViKSxJKEN0KSl9O0diLlx1MDI3NXByb3Y9UHQoe3Rva2VuOkdiLGZhY3Rvcnk6R2IuXHUwMjc1ZmFjfSk7R2IuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpVZn0se3R5cGU6VWJ9LHt0eXBlOkN0fV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEdiLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlVmfSx7dHlwZTpVYn0se3R5cGU6Q3R9XX0sbnVsbCl9KSgpO3ZhciBIQT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5uYW1lc3BhY2VJZD10LHRoaXMuZGVsZWdhdGU9ZSx0aGlzLmVuZ2luZT1vLHRoaXMuZGVzdHJveU5vZGU9dGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZT9pPT5lLmRlc3Ryb3lOb2RlKGkpOm51bGx9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5kYXRhfWRlc3Ryb3koKXt0aGlzLmVuZ2luZS5kZXN0cm95KHRoaXMubmFtZXNwYWNlSWQsdGhpcy5kZWxlZ2F0ZSksdGhpcy5kZWxlZ2F0ZS5kZXN0cm95KCl9Y3JlYXRlRWxlbWVudCh0LGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZUVsZW1lbnQodCxlKX1jcmVhdGVDb21tZW50KHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLmNyZWF0ZUNvbW1lbnQodCl9Y3JlYXRlVGV4dCh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0KHQpfWFwcGVuZENoaWxkKHQsZSl7dGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGUpLHRoaXMuZW5naW5lLm9uSW5zZXJ0KHRoaXMubmFtZXNwYWNlSWQsZSx0LCExKX1pbnNlcnRCZWZvcmUodCxlLG8saT0hMCl7dGhpcy5kZWxlZ2F0ZS5pbnNlcnRCZWZvcmUodCxlLG8pLHRoaXMuZW5naW5lLm9uSW5zZXJ0KHRoaXMubmFtZXNwYWNlSWQsZSx0LGkpfXJlbW92ZUNoaWxkKHQsZSxvKXt0aGlzLmVuZ2luZS5vblJlbW92ZSh0aGlzLm5hbWVzcGFjZUlkLGUsdGhpcy5kZWxlZ2F0ZSxvKX1zZWxlY3RSb290RWxlbWVudCh0LGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KHQsZSl9cGFyZW50Tm9kZSh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKHQpfW5leHRTaWJsaW5nKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKHQpfXNldEF0dHJpYnV0ZSh0LGUsbyxpKXt0aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LGUsbyxpKX1yZW1vdmVBdHRyaWJ1dGUodCxlLG8pe3RoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsZSxvKX1hZGRDbGFzcyh0LGUpe3RoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxlKX1yZW1vdmVDbGFzcyh0LGUpe3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX1zZXRTdHlsZSh0LGUsbyxpKXt0aGlzLmRlbGVnYXRlLnNldFN0eWxlKHQsZSxvLGkpfXJlbW92ZVN0eWxlKHQsZSxvKXt0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlKHQsZSxvKX1zZXRQcm9wZXJ0eSh0LGUsbyl7ZS5jaGFyQXQoMCk9PXpBJiZlPT1ub3Q/dGhpcy5kaXNhYmxlQW5pbWF0aW9ucyh0LCEhbyk6dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbyl9c2V0VmFsdWUodCxlKXt0aGlzLmRlbGVnYXRlLnNldFZhbHVlKHQsZSl9bGlzdGVuKHQsZSxvKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG8pfWRpc2FibGVBbmltYXRpb25zKHQsZSl7dGhpcy5lbmdpbmUuZGlzYWJsZUFuaW1hdGlvbnModCxlKX19LGlqPWNsYXNzIGV4dGVuZHMgSEF7Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIoZSxvLGkpLHRoaXMuZmFjdG9yeT10LHRoaXMubmFtZXNwYWNlSWQ9ZX1zZXRQcm9wZXJ0eSh0LGUsbyl7ZS5jaGFyQXQoMCk9PXpBP2UuY2hhckF0KDEpPT0iLiImJmU9PW5vdD8obz1vPT09dm9pZCAwPyEwOiEhbyx0aGlzLmRpc2FibGVBbmltYXRpb25zKHQsbykpOnRoaXMuZW5naW5lLnByb2Nlc3ModGhpcy5uYW1lc3BhY2VJZCx0LGUuc3Vic3RyKDEpLG8pOnRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkodCxlLG8pfWxpc3Rlbih0LGUsbyl7aWYoZS5jaGFyQXQoMCk9PXpBKXtsZXQgaT1mMnQodCksYT1lLnN1YnN0cigxKSxyPSIiO3JldHVybiBhLmNoYXJBdCgwKSE9ekEmJihbYSxyXT1wMnQoYSkpLHRoaXMuZW5naW5lLmxpc3Rlbih0aGlzLm5hbWVzcGFjZUlkLGksYSxyLHM9PntsZXQgbD1zLl9kYXRhfHwtMTt0aGlzLmZhY3Rvcnkuc2NoZWR1bGVMaXN0ZW5lckNhbGxiYWNrKGwsbyxzKX0pfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbyl9fTtmdW5jdGlvbiBmMnQobil7c3dpdGNoKG4pe2Nhc2UiYm9keSI6cmV0dXJuIGRvY3VtZW50LmJvZHk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIGRvY3VtZW50O2Nhc2Uid2luZG93IjpyZXR1cm4gd2luZG93O2RlZmF1bHQ6cmV0dXJuIG59fWZ1bmN0aW9uIHAydChuKXtsZXQgdD1uLmluZGV4T2YoIi4iKSxlPW4uc3Vic3RyaW5nKDAsdCksbz1uLnN1YnN0cih0KzEpO3JldHVybltlLG9dfXZhciBXYj1jbGFzcyBleHRlbmRzIFVie2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LmJvZHksZSxvKX1uZ09uRGVzdHJveSgpe3RoaXMuZmx1c2goKX19O1diLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFdiKShJKF90KSxJKGpiKSxJKHNQKSl9O1diLlx1MDI3NXByb3Y9UHQoe3Rva2VuOldiLGZhY3Rvcnk6V2IuXHUwMjc1ZmFjfSk7V2IuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6amJ9LHt0eXBlOnNQfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFdiLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpqYn0se3R5cGU6c1B9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIGQydCgpe3JldHVybiAkbnQoKT9uZXcgQUE6bmV3IGNFfWZ1bmN0aW9uIGcydCgpe3JldHVybiBuZXcgRUF9ZnVuY3Rpb24gdTJ0KG4sdCxlKXtyZXR1cm4gbmV3IEdiKG4sdCxlKX12YXIgc249bmV3IHl0KCJBbmltYXRpb25Nb2R1bGVUeXBlIiksb290PVt7cHJvdmlkZTplRSx1c2VDbGFzczpZYn0se3Byb3ZpZGU6c1AsdXNlRmFjdG9yeTpnMnR9LHtwcm92aWRlOlViLHVzZUNsYXNzOldifSx7cHJvdmlkZTpVZix1c2VGYWN0b3J5OnUydCxkZXBzOltKZixVYixDdF19XSxhaj1be3Byb3ZpZGU6amIsdXNlRmFjdG9yeTpkMnR9LHtwcm92aWRlOnNuLHVzZVZhbHVlOiJCcm93c2VyQW5pbWF0aW9ucyJ9LC4uLm9vdF0scmo9W3twcm92aWRlOmpiLHVzZUNsYXNzOnNNfSx7cHJvdmlkZTpzbix1c2VWYWx1ZToiTm9vcEFuaW1hdGlvbnMifSwuLi5vb3RdO3ZhciBYbT1jbGFzc3tzdGF0aWMgd2l0aENvbmZpZyh0KXtyZXR1cm57bmdNb2R1bGU6WG0scHJvdmlkZXJzOnQuZGlzYWJsZUFuaW1hdGlvbnM/cmo6YWp9fX07WG0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WG0pfTtYbS5cdTAyNzVtb2Q9cSh7dHlwZTpYbX0pO1htLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6YWosaW1wb3J0czpbQ2FdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFhtLFt7dHlwZTpaLGFyZ3M6W3tleHBvcnRzOltDYV0scHJvdmlkZXJzOmFqfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFhtLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0NhXX19KX0pKCk7dmFyIGxQPWNsYXNze307bFAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bFApfTtsUC5cdTAyNzVtb2Q9cSh7dHlwZTpsUH0pO2xQLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6cmosaW1wb3J0czpbQ2FdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGxQLFt7dHlwZTpaLGFyZ3M6W3tleHBvcnRzOltDYV0scHJvdmlkZXJzOnJqfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGxQLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0NhXX19KX0pKCk7dmFyIG1qPXt9O2Z1bmN0aW9uIE50KG4sdCl7aWYobWpbbl09KG1qW25dfHwwKSsxLHR5cGVvZiB0PT0iZnVuY3Rpb24iKXJldHVybiBzaihuLCguLi5vKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQoLi4ubykpLHt0eXBlOm59KSk7c3dpdGNoKHQ/dC5fYXM6ImVtcHR5Iil7Y2FzZSJlbXB0eSI6cmV0dXJuIHNqKG4sKCk9Pih7dHlwZTpufSkpO2Nhc2UicHJvcHMiOnJldHVybiBzaihuLG89Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx7dHlwZTpufSkpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNvbmZpZy4iKX19ZnVuY3Rpb24gYmUoKXtyZXR1cm57X2FzOiJwcm9wcyIsX3A6dm9pZCAwfX1mdW5jdGlvbiBzaihuLHQpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidHlwZSIse3ZhbHVlOm4sd3JpdGFibGU6ITF9KX12YXIgTW90PSJAbmdyeC9zdG9yZS9pbml0Iixvcz1jbGFzcyBleHRlbmRzIEdhe2NvbnN0cnVjdG9yKCl7c3VwZXIoe3R5cGU6TW90fSl9bmV4dCh0KXtpZih0eXBlb2YgdD09ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKGAKICAgICAgICBEaXNwYXRjaCBleHBlY3RlZCBhbiBvYmplY3QsIGluc3RlYWQgaXQgcmVjZWl2ZWQgYSBmdW5jdGlvbi4KICAgICAgICBJZiB5b3UncmUgdXNpbmcgdGhlIGNyZWF0ZUFjdGlvbiBmdW5jdGlvbiwgbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb24KICAgICAgICBiZWZvcmUgZGlzcGF0Y2hpbmcgdGhlIGFjdGlvbi4gRm9yIGV4YW1wbGUsIHNvbWVBY3Rpb24gc2hvdWxkIGJlIHNvbWVBY3Rpb24oKS5gKTtpZih0eXBlb2YgdD09InVuZGVmaW5lZCIpdGhyb3cgbmV3IFR5cGVFcnJvcigiQWN0aW9ucyBtdXN0IGJlIG9iamVjdHMiKTtpZih0eXBlb2YgdC50eXBlPT0idW5kZWZpbmVkIil0aHJvdyBuZXcgVHlwZUVycm9yKCJBY3Rpb25zIG11c3QgaGF2ZSBhIHR5cGUgcHJvcGVydHkiKTtzdXBlci5uZXh0KHQpfWNvbXBsZXRlKCl7fW5nT25EZXN0cm95KCl7c3VwZXIuY29tcGxldGUoKX19O29zLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9zKX07b3MuXHUwMjc1cHJvdj1QdCh7dG9rZW46b3MsZmFjdG9yeTpvcy5cdTAyNzVmYWN9KTtvcy5jdG9yUGFyYW1ldGVycz0oKT0+W107KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG9zLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW119LG51bGwpfSkoKTt2YXIgaDJ0PVtvc10sRkE9bmV3IHl0KCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSb290IEd1YXJkIiksaW90PW5ldyB5dCgiQG5ncngvc3RvcmUgSW50ZXJuYWwgSW5pdGlhbCBTdGF0ZSIpLFN2PW5ldyB5dCgiQG5ncngvc3RvcmUgSW5pdGlhbCBTdGF0ZSIpLExBPW5ldyB5dCgiQG5ncngvc3RvcmUgUmVkdWNlciBGYWN0b3J5IiksYW90PW5ldyB5dCgiQG5ncngvc3RvcmUgSW50ZXJuYWwgUmVkdWNlciBGYWN0b3J5IFByb3ZpZGVyIiksQkE9bmV3IHl0KCJAbmdyeC9zdG9yZSBJbml0aWFsIFJlZHVjZXJzIiksbGo9bmV3IHl0KCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBJbml0aWFsIFJlZHVjZXJzIikscm90PW5ldyB5dCgiQG5ncngvc3RvcmUgU3RvcmUgRmVhdHVyZXMiKSxzb3Q9bmV3IHl0KCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBTdG9yZSBSZWR1Y2VycyIpLGNqPW5ldyB5dCgiQG5ncngvc3RvcmUgSW50ZXJuYWwgRmVhdHVyZSBSZWR1Y2VycyIpLGxvdD1uZXcgeXQoIkBuZ3J4L3N0b3JlIEludGVybmFsIEZlYXR1cmUgQ29uZmlncyIpLFZBPW5ldyB5dCgiQG5ncngvc3RvcmUgSW50ZXJuYWwgU3RvcmUgRmVhdHVyZXMiKSxjb3Q9bmV3IHl0KCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIFJlZHVjZXJzIFRva2VuIiksakE9bmV3IHl0KCJAbmdyeC9zdG9yZSBGZWF0dXJlIFJlZHVjZXJzIiksbW90PW5ldyB5dCgiQG5ncngvc3RvcmUgVXNlciBQcm92aWRlZCBNZXRhIFJlZHVjZXJzIiksdnY9bmV3IHl0KCJAbmdyeC9zdG9yZSBNZXRhIFJlZHVjZXJzIiksZm90PW5ldyB5dCgiQG5ncngvc3RvcmUgSW50ZXJuYWwgUmVzb2x2ZWQgTWV0YSBSZWR1Y2VycyIpLHBvdD1uZXcgeXQoIkBuZ3J4L3N0b3JlIFVzZXIgUnVudGltZSBDaGVja3MgQ29uZmlnIiksZG90PW5ldyB5dCgiQG5ncngvc3RvcmUgSW50ZXJuYWwgVXNlciBSdW50aW1lIENoZWNrcyBDb25maWciKSxtRT1uZXcgeXQoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJ1bnRpbWUgQ2hlY2tzIiksUnY9bmV3IHl0KCJAbmdyeC9zdG9yZSBDaGVjayBpZiBBY3Rpb24gdHlwZXMgYXJlIHVuaXF1ZSIpO2Z1bmN0aW9uIHd2KG4sdD17fSl7bGV0IGU9T2JqZWN0LmtleXMobiksbz17fTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7bGV0IHI9ZVthXTt0eXBlb2YgbltyXT09ImZ1bmN0aW9uIiYmKG9bcl09bltyXSl9bGV0IGk9T2JqZWN0LmtleXMobyk7cmV0dXJuIGZ1bmN0aW9uKHIscyl7cj1yPT09dm9pZCAwP3Q6cjtsZXQgbD0hMSxjPXt9O2ZvcihsZXQgbT0wO208aS5sZW5ndGg7bSsrKXtsZXQgZj1pW21dLHA9b1tmXSxnPXJbZl0sXz1wKGcscyk7Y1tmXT1fLGw9bHx8XyE9PWd9cmV0dXJuIGw/YzpyfX1mdW5jdGlvbiBfMnQobix0KXtyZXR1cm4gT2JqZWN0LmtleXMobikuZmlsdGVyKGU9PmUhPT10KS5yZWR1Y2UoKGUsbyk9Pk9iamVjdC5hc3NpZ24oZSx7W29dOm5bb119KSx7fSl9ZnVuY3Rpb24gVUEoLi4ubil7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKG4ubGVuZ3RoPT09MClyZXR1cm4gdDtsZXQgZT1uW24ubGVuZ3RoLTFdO3JldHVybiBuLnNsaWNlKDAsLTEpLnJlZHVjZVJpZ2h0KChpLGEpPT5hKGkpLGUodCkpfX1mdW5jdGlvbiBib3Qobix0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+MCYmKG49VUEuYXBwbHkobnVsbCxbLi4udCxuXSkpLChlLG8pPT57bGV0IGk9bihlKTtyZXR1cm4oYSxyKT0+KGE9YT09PXZvaWQgMD9vOmEsaShhLHIpKX19ZnVuY3Rpb24gQzJ0KG4pe2xldCB0PUFycmF5LmlzQXJyYXkobikmJm4ubGVuZ3RoPjA/VUEoLi4ubik6ZT0+ZTtyZXR1cm4oZSxvKT0+KGU9dChlKSwoaSxhKT0+KGk9aT09PXZvaWQgMD9vOmksZShpLGEpKSl9dmFyIGNQPWNsYXNzIGV4dGVuZHMgRG57fSxpMz1jbGFzcyBleHRlbmRzIG9ze30sTTJ0PSJAbmdyeC9zdG9yZS91cGRhdGUtcmVkdWNlcnMiLGpsPWNsYXNzIGV4dGVuZHMgR2F7Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIoaShvLGUpKSx0aGlzLmRpc3BhdGNoZXI9dCx0aGlzLmluaXRpYWxTdGF0ZT1lLHRoaXMucmVkdWNlcnM9byx0aGlzLnJlZHVjZXJGYWN0b3J5PWl9Z2V0IGN1cnJlbnRSZWR1Y2Vycygpe3JldHVybiB0aGlzLnJlZHVjZXJzfWFkZEZlYXR1cmUodCl7dGhpcy5hZGRGZWF0dXJlcyhbdF0pfWFkZEZlYXR1cmVzKHQpe2xldCBlPXQucmVkdWNlKChvLHtyZWR1Y2VyczppLHJlZHVjZXJGYWN0b3J5OmEsbWV0YVJlZHVjZXJzOnIsaW5pdGlhbFN0YXRlOnMsa2V5Omx9KT0+e2xldCBjPXR5cGVvZiBpPT0iZnVuY3Rpb24iP0MydChyKShpLHMpOmJvdChhLHIpKGkscyk7cmV0dXJuIG9bbF09YyxvfSx7fSk7dGhpcy5hZGRSZWR1Y2VycyhlKX1yZW1vdmVGZWF0dXJlKHQpe3RoaXMucmVtb3ZlRmVhdHVyZXMoW3RdKX1yZW1vdmVGZWF0dXJlcyh0KXt0aGlzLnJlbW92ZVJlZHVjZXJzKHQubWFwKGU9PmUua2V5KSl9YWRkUmVkdWNlcih0LGUpe3RoaXMuYWRkUmVkdWNlcnMoe1t0XTplfSl9YWRkUmVkdWNlcnModCl7dGhpcy5yZWR1Y2Vycz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yZWR1Y2VycyksdCksdGhpcy51cGRhdGVSZWR1Y2VycyhPYmplY3Qua2V5cyh0KSl9cmVtb3ZlUmVkdWNlcih0KXt0aGlzLnJlbW92ZVJlZHVjZXJzKFt0XSl9cmVtb3ZlUmVkdWNlcnModCl7dC5mb3JFYWNoKGU9Pnt0aGlzLnJlZHVjZXJzPV8ydCh0aGlzLnJlZHVjZXJzLGUpfSksdGhpcy51cGRhdGVSZWR1Y2Vycyh0KX11cGRhdGVSZWR1Y2Vycyh0KXt0aGlzLm5leHQodGhpcy5yZWR1Y2VyRmFjdG9yeSh0aGlzLnJlZHVjZXJzLHRoaXMuaW5pdGlhbFN0YXRlKSksdGhpcy5kaXNwYXRjaGVyLm5leHQoe3R5cGU6TTJ0LGZlYXR1cmVzOnR9KX1uZ09uRGVzdHJveSgpe3RoaXMuY29tcGxldGUoKX19O2psLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGpsKShJKGkzKSxJKFN2KSxJKEJBKSxJKExBKSl9O2psLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmpsLGZhY3Rvcnk6amwuXHUwMjc1ZmFjfSk7amwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTppM30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbU3ZdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W0JBXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltMQV19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhqbCxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTppM30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbU3ZdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W0JBXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltMQV19XX1dfSxudWxsKX0pKCk7dmFyIGIydD1bamwse3Byb3ZpZGU6Y1AsdXNlRXhpc3Rpbmc6amx9LHtwcm92aWRlOmkzLHVzZUV4aXN0aW5nOm9zfV0sSXM9Y2xhc3MgZXh0ZW5kcyBKdHtuZ09uRGVzdHJveSgpe3RoaXMuY29tcGxldGUoKX19O0lzLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4oSXMpKSkoZXx8SXMpfX0oKTtJcy5cdTAyNzVwcm92PVB0KHt0b2tlbjpJcyxmYWN0b3J5OklzLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJcyxbe3R5cGU6U3R9XSxudWxsLG51bGwpfSkoKTt2YXIgTzJ0PVtJc10sYTM9Y2xhc3MgZXh0ZW5kcyBEbnt9LFBfPWNsYXNzIGV4dGVuZHMgR2F7Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIoaSk7bGV0IHI9dC5waXBlKGV2KEQ3KSkucGlwZShPbihlKSkscz17c3RhdGU6aX0sbD1yLnBpcGUoWjcoUDJ0LHMpKTt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPWwuc3Vic2NyaWJlKCh7c3RhdGU6YyxhY3Rpb246bX0pPT57dGhpcy5uZXh0KGMpLG8ubmV4dChtKX0pfW5nT25EZXN0cm95KCl7dGhpcy5zdGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuY29tcGxldGUoKX19O1BfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFBfKShJKG9zKSxJKGNQKSxJKElzKSxJKFN2KSl9O1BfLlx1MDI3NXByb3Y9UHQoe3Rva2VuOlBfLGZhY3Rvcnk6UF8uXHUwMjc1ZmFjfSk7UF8uSU5JVD1Nb3Q7UF8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpvc30se3R5cGU6Y1B9LHt0eXBlOklzfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltTdl19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhQXyxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpvc30se3R5cGU6Y1B9LHt0eXBlOklzfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltTdl19XX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gUDJ0KG49e3N0YXRlOnZvaWQgMH0sW3QsZV0pe2xldHtzdGF0ZTpvfT1uO3JldHVybntzdGF0ZTplKG8sdCksYWN0aW9uOnR9fXZhciB5MnQ9W1BfLHtwcm92aWRlOmEzLHVzZUV4aXN0aW5nOlBffV0sc3Q9Y2xhc3MgZXh0ZW5kcyBEbntjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIoKSx0aGlzLmFjdGlvbnNPYnNlcnZlcj1lLHRoaXMucmVkdWNlck1hbmFnZXI9byx0aGlzLnNvdXJjZT10fXNlbGVjdCh0LC4uLmUpe3JldHVybiB6ZS5jYWxsKG51bGwsdCwuLi5lKSh0aGlzKX1saWZ0KHQpe2xldCBlPW5ldyBzdCh0aGlzLHRoaXMuYWN0aW9uc09ic2VydmVyLHRoaXMucmVkdWNlck1hbmFnZXIpO3JldHVybiBlLm9wZXJhdG9yPXQsZX1kaXNwYXRjaCh0KXt0aGlzLmFjdGlvbnNPYnNlcnZlci5uZXh0KHQpfW5leHQodCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIubmV4dCh0KX1lcnJvcih0KXt0aGlzLmFjdGlvbnNPYnNlcnZlci5lcnJvcih0KX1jb21wbGV0ZSgpe3RoaXMuYWN0aW9uc09ic2VydmVyLmNvbXBsZXRlKCl9YWRkUmVkdWNlcih0LGUpe3RoaXMucmVkdWNlck1hbmFnZXIuYWRkUmVkdWNlcih0LGUpfXJlbW92ZVJlZHVjZXIodCl7dGhpcy5yZWR1Y2VyTWFuYWdlci5yZW1vdmVSZWR1Y2VyKHQpfX07c3QuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8c3QpKEkoYTMpLEkob3MpLEkoamwpKX07c3QuXHUwMjc1cHJvdj1QdCh7dG9rZW46c3QsZmFjdG9yeTpzdC5cdTAyNzVmYWN9KTtzdC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmEzfSx7dHlwZTpvc30se3R5cGU6amx9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoc3QsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YTN9LHt0eXBlOm9zfSx7dHlwZTpqbH1dfSxudWxsKX0pKCk7dmFyIHgydD1bc3RdO2Z1bmN0aW9uIHplKG4sdCwuLi5lKXtyZXR1cm4gZnVuY3Rpb24oaSl7bGV0IGE7aWYodHlwZW9mIG49PSJzdHJpbmciKXtsZXQgcj1bdCwuLi5lXS5maWx0ZXIoQm9vbGVhbik7YT1pLnBpcGUoVzcobiwuLi5yKSl9ZWxzZSBpZih0eXBlb2Ygbj09ImZ1bmN0aW9uIilhPWkucGlwZShHKHI9Pm4ocix0KSkpO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcihgVW5leHBlY3RlZCB0eXBlICcke3R5cGVvZiBufScgaW4gc2VsZWN0IG9wZXJhdG9yLCBleHBlY3RlZCAnc3RyaW5nJyBvciAnZnVuY3Rpb24nYCk7cmV0dXJuIGEucGlwZShYbygpKX19dmFyIGdqPSJodHRwczovL25ncnguaW8vZ3VpZGUvc3RvcmUvY29uZmlndXJhdGlvbi9ydW50aW1lLWNoZWNrcyI7ZnVuY3Rpb24gZ290KG4pe3JldHVybiBuPT09dm9pZCAwfWZ1bmN0aW9uIHVvdChuKXtyZXR1cm4gbj09PW51bGx9ZnVuY3Rpb24gT290KG4pe3JldHVybiBBcnJheS5pc0FycmF5KG4pfWZ1bmN0aW9uIHYydChuKXtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmcifWZ1bmN0aW9uIHcydChuKXtyZXR1cm4gdHlwZW9mIG49PSJib29sZWFuIn1mdW5jdGlvbiBTMnQobil7cmV0dXJuIHR5cGVvZiBuPT0ibnVtYmVyIn1mdW5jdGlvbiBQb3Qobil7cmV0dXJuIHR5cGVvZiBuPT0ib2JqZWN0IiYmbiE9PW51bGx9ZnVuY3Rpb24gUjJ0KG4pe3JldHVybiBQb3QobikmJiFPb3Qobil9ZnVuY3Rpb24gRTJ0KG4pe2lmKCFSMnQobikpcmV0dXJuITE7bGV0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiB0PT09T2JqZWN0LnByb3RvdHlwZXx8dD09PW51bGx9ZnVuY3Rpb24gZmoobil7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24ifWZ1bmN0aW9uIGsydChuKXtyZXR1cm4gZmoobikmJm4uaGFzT3duUHJvcGVydHkoIlx1MDI3NWNtcCIpfWZ1bmN0aW9uIE4ydChuLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobix0KX12YXIgVDJ0PSExO2Z1bmN0aW9uIEEydCgpe3JldHVybiBUMnR9ZnVuY3Rpb24gaG90KG4sdCl7cmV0dXJuIG49PT10fWZ1bmN0aW9uIEQydChuLHQsZSl7Zm9yKGxldCBvPTA7bzxuLmxlbmd0aDtvKyspaWYoIWUobltvXSx0W29dKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB5b3Qobix0PWhvdCxlPWhvdCl7bGV0IG89bnVsbCxpPW51bGwsYTtmdW5jdGlvbiByKCl7bz1udWxsLGk9bnVsbH1mdW5jdGlvbiBzKG09dm9pZCAwKXthPXtyZXN1bHQ6bX19ZnVuY3Rpb24gbCgpe2E9dm9pZCAwfWZ1bmN0aW9uIGMoKXtpZihhIT09dm9pZCAwKXJldHVybiBhLnJlc3VsdDtpZighbylyZXR1cm4gaT1uLmFwcGx5KG51bGwsYXJndW1lbnRzKSxvPWFyZ3VtZW50cyxpO2lmKCFEMnQoYXJndW1lbnRzLG8sdCkpcmV0dXJuIGk7bGV0IG09bi5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIG89YXJndW1lbnRzLGUoaSxtKT9pOihpPW0sbSl9cmV0dXJue21lbW9pemVkOmMscmVzZXQ6cixzZXRSZXN1bHQ6cyxjbGVhclJlc3VsdDpsfX1mdW5jdGlvbiBjdCguLi5uKXtyZXR1cm4gejJ0KHlvdCkoLi4ubil9ZnVuY3Rpb24gSTJ0KG4sdCxlLG8pe2lmKGU9PT12b2lkIDApe2xldCBhPXQubWFwKHI9PnIobikpO3JldHVybiBvLm1lbW9pemVkLmFwcGx5KG51bGwsYSl9bGV0IGk9dC5tYXAoYT0+YShuLGUpKTtyZXR1cm4gby5tZW1vaXplZC5hcHBseShudWxsLFsuLi5pLGVdKX1mdW5jdGlvbiB6MnQobix0PXtzdGF0ZUZuOkkydH0pe3JldHVybiBmdW5jdGlvbiguLi5lKXtsZXQgbz1lO2lmKEFycmF5LmlzQXJyYXkob1swXSkpe2xldFttLC4uLmZdPW87bz1bLi4ubSwuLi5mXX1sZXQgaT1vLnNsaWNlKDAsby5sZW5ndGgtMSksYT1vW28ubGVuZ3RoLTFdLHI9aS5maWx0ZXIobT0+bS5yZWxlYXNlJiZ0eXBlb2YgbS5yZWxlYXNlPT0iZnVuY3Rpb24iKSxzPW4oZnVuY3Rpb24oLi4ubSl7cmV0dXJuIGEuYXBwbHkobnVsbCxtKX0pLGw9eW90KGZ1bmN0aW9uKG0sZil7cmV0dXJuIHQuc3RhdGVGbi5hcHBseShudWxsLFttLGksZixzXSl9KTtmdW5jdGlvbiBjKCl7bC5yZXNldCgpLHMucmVzZXQoKSxyLmZvckVhY2gobT0+bS5yZWxlYXNlKCkpfXJldHVybiBPYmplY3QuYXNzaWduKGwubWVtb2l6ZWQse3JlbGVhc2U6Yyxwcm9qZWN0b3I6cy5tZW1vaXplZCxzZXRSZXN1bHQ6bC5zZXRSZXN1bHQsY2xlYXJSZXN1bHQ6bC5jbGVhclJlc3VsdH0pfX1mdW5jdGlvbiBCYShuKXtyZXR1cm4gY3QodD0+e2xldCBlPXRbbl07cmV0dXJuIUEydCgpJiZ3YigpJiYhKG4gaW4gdCkmJmNvbnNvbGUud2FybihgQG5ncngvc3RvcmU6IFRoZSBmZWF0dXJlIG5hbWUgIiR7bn0iIGRvZXMgbm90IGV4aXN0IGluIHRoZSBzdGF0ZSwgdGhlcmVmb3JlIGNyZWF0ZUZlYXR1cmVTZWxlY3RvciBjYW5ub3QgYWNjZXNzIGl0LiAgQmUgc3VyZSBpdCBpcyBpbXBvcnRlZCBpbiBhIGxvYWRlZCBtb2R1bGUgdXNpbmcgU3RvcmVNb2R1bGUuZm9yUm9vdCgnJHtufScsIC4uLikgb3IgU3RvcmVNb2R1bGUuZm9yRmVhdHVyZSgnJHtufScsIC4uLikuICBJZiB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBpbnRlbmRlZCB0byBiZSB1bmRlZmluZWQsIGFzIGlzIHRoZSBjYXNlIHdpdGggcm91dGVyIHN0YXRlLCB0aGlzIGRldmVsb3BtZW50LW9ubHkgd2FybmluZyBtZXNzYWdlIGNhbiBiZSBpZ25vcmVkLmApLGV9LHQ9PnQpfWZ1bmN0aW9uIEgydChuLHQpe3JldHVybiBmdW5jdGlvbihlLG8pe2xldCBpPXQuYWN0aW9uKG8pP3BqKG8pOm8sYT1uKGUsaSk7cmV0dXJuIHQuc3RhdGUoKT9waihhKTphfX1mdW5jdGlvbiBwaihuKXtPYmplY3QuZnJlZXplKG4pO2xldCB0PWZqKG4pO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKS5mb3JFYWNoKGU9PntpZighZS5zdGFydHNXaXRoKCJcdTAyNzUiKSYmTjJ0KG4sZSkmJih0P2UhPT0iY2FsbGVyIiYmZSE9PSJjYWxsZWUiJiZlIT09ImFyZ3VtZW50cyI6ITApKXtsZXQgbz1uW2VdOyhQb3Qobyl8fGZqKG8pKSYmIU9iamVjdC5pc0Zyb3plbihvKSYmcGoobyl9fSksbn1mdW5jdGlvbiBGMnQobix0KXtyZXR1cm4gZnVuY3Rpb24oZSxvKXtpZih0LmFjdGlvbihvKSl7bGV0IGE9ZGoobyk7X290KGEsImFjdGlvbiIpfWxldCBpPW4oZSxvKTtpZih0LnN0YXRlKCkpe2xldCBhPWRqKGkpO19vdChhLCJzdGF0ZSIpfXJldHVybiBpfX1mdW5jdGlvbiBkaihuLHQ9W10pe3JldHVybihnb3Qobil8fHVvdChuKSkmJnQubGVuZ3RoPT09MD97cGF0aDpbInJvb3QiXSx2YWx1ZTpufTpPYmplY3Qua2V5cyhuKS5yZWR1Y2UoKG8saSk9PntpZihvKXJldHVybiBvO2xldCBhPW5baV07cmV0dXJuIGsydChhKT9vOmdvdChhKXx8dW90KGEpfHxTMnQoYSl8fHcydChhKXx8djJ0KGEpfHxPb3QoYSk/ITE6RTJ0KGEpP2RqKGEsWy4uLnQsaV0pOntwYXRoOlsuLi50LGldLHZhbHVlOmF9fSwhMSl9ZnVuY3Rpb24gX290KG4sdCl7aWYobj09PSExKXJldHVybjtsZXQgZT1uLnBhdGguam9pbigiLiIpLG89bmV3IEVycm9yKGBEZXRlY3RlZCB1bnNlcmlhbGl6YWJsZSAke3R9IGF0ICIke2V9Ii4gJHtnan0jc3RyaWN0JHt0fXNlcmlhbGl6YWJpbGl0eWApO3Rocm93IG8udmFsdWU9bi52YWx1ZSxvLnVuc2VyaWFsaXphYmxlUGF0aD1lLG99ZnVuY3Rpb24gTDJ0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKGUsbyl7aWYodC5hY3Rpb24obykmJiFDdC5pc0luQW5ndWxhclpvbmUoKSl0aHJvdyBuZXcgRXJyb3IoYEFjdGlvbiAnJHtvLnR5cGV9JyBydW5uaW5nIG91dHNpZGUgTmdab25lLiAke2dqfSNzdHJpY3RhY3Rpb253aXRoaW5uZ3pvbmVgKTtyZXR1cm4gbihlLG8pfX1mdW5jdGlvbiBCMnQobil7cmV0dXJuIHdiKCk/T2JqZWN0LmFzc2lnbih7c3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25XaXRoaW5OZ1pvbmU6ITEsc3RyaWN0QWN0aW9uVHlwZVVuaXF1ZW5lc3M6ITF9LG4pOntzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5OiExLHN0cmljdEFjdGlvbldpdGhpbk5nWm9uZTohMSxzdHJpY3RBY3Rpb25UeXBlVW5pcXVlbmVzczohMX19ZnVuY3Rpb24gVjJ0KHtzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6bixzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTp0fSl7cmV0dXJuIGU9Pm58fHQ/RjJ0KGUse2FjdGlvbjpvPT5uJiYhdWoobyksc3RhdGU6KCk9PnR9KTplfWZ1bmN0aW9uIGoydCh7c3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5Om4sc3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6dH0pe3JldHVybiBlPT5ufHx0P0gydChlLHthY3Rpb246bz0+biYmIXVqKG8pLHN0YXRlOigpPT50fSk6ZX1mdW5jdGlvbiB1aihuKXtyZXR1cm4gbi50eXBlLnN0YXJ0c1dpdGgoIkBuZ3J4Iil9ZnVuY3Rpb24gVTJ0KHtzdHJpY3RBY3Rpb25XaXRoaW5OZ1pvbmU6bn0pe3JldHVybiB0PT5uP0wydCh0LHthY3Rpb246ZT0+biYmIXVqKGUpfSk6dH1mdW5jdGlvbiBZMnQobil7cmV0dXJuW3twcm92aWRlOmRvdCx1c2VWYWx1ZTpufSx7cHJvdmlkZTpwb3QsdXNlRmFjdG9yeTpHMnQsZGVwczpbZG90XX0se3Byb3ZpZGU6bUUsZGVwczpbcG90XSx1c2VGYWN0b3J5OkIydH0se3Byb3ZpZGU6dnYsbXVsdGk6ITAsZGVwczpbbUVdLHVzZUZhY3Rvcnk6ajJ0fSx7cHJvdmlkZTp2dixtdWx0aTohMCxkZXBzOlttRV0sdXNlRmFjdG9yeTpWMnR9LHtwcm92aWRlOnZ2LG11bHRpOiEwLGRlcHM6W21FXSx1c2VGYWN0b3J5OlUydH1dfWZ1bmN0aW9uIENvdCgpe3JldHVyblt7cHJvdmlkZTpSdixtdWx0aTohMCxkZXBzOlttRV0sdXNlRmFjdG9yeTpXMnR9XX1mdW5jdGlvbiBHMnQobil7cmV0dXJuIG59ZnVuY3Rpb24gVzJ0KG4pe2lmKCFuLnN0cmljdEFjdGlvblR5cGVVbmlxdWVuZXNzKXJldHVybjtsZXQgdD1PYmplY3QuZW50cmllcyhtaikuZmlsdGVyKChbLGVdKT0+ZT4xKS5tYXAoKFtlXSk9PmUpO2lmKHQubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQWN0aW9uIHR5cGVzIGFyZSByZWdpc3RlcmVkIG1vcmUgdGhhbiBvbmNlLCAke3QubWFwKGU9PmAiJHtlfSJgKS5qb2luKCIsICIpfS4gJHtnan0jc3RyaWN0YWN0aW9udHlwZXVuaXF1ZW5lc3NgKX12YXIgdnI9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhLHIpe319O3ZyLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHZyKShJKG9zKSxJKGNQKSxJKElzKSxJKHN0KSxJKEZBLDgpLEkoUnYsOCkpfTt2ci5cdTAyNzVtb2Q9cSh7dHlwZTp2cn0pO3ZyLlx1MDI3NWluaj1XKHt9KTt2ci5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm9zfSx7dHlwZTpjUH0se3R5cGU6SXN9LHt0eXBlOnN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltGQV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbUnZdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModnIsW3t0eXBlOlosYXJnczpbe31dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6b3N9LHt0eXBlOmNQfSx7dHlwZTpJc30se3R5cGU6c3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W0ZBXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltSdl19XX1dfSxudWxsKX0pKCk7dmFyIE5vPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7dGhpcy5mZWF0dXJlcz10LHRoaXMuZmVhdHVyZVJlZHVjZXJzPWUsdGhpcy5yZWR1Y2VyTWFuYWdlcj1vO2xldCByPXQubWFwKChzLGwpPT57bGV0IG09ZS5zaGlmdCgpW2xdO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse3JlZHVjZXJzOm0saW5pdGlhbFN0YXRlOnhvdChzLmluaXRpYWxTdGF0ZSl9KX0pO28uYWRkRmVhdHVyZXMocil9bmdPbkRlc3Ryb3koKXt0aGlzLnJlZHVjZXJNYW5hZ2VyLnJlbW92ZUZlYXR1cmVzKHRoaXMuZmVhdHVyZXMpfX07Tm8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Tm8pKEkoVkEpLEkoakEpLEkoamwpLEkodnIpLEkoUnYsOCkpfTtOby5cdTAyNzVtb2Q9cSh7dHlwZTpOb30pO05vLlx1MDI3NWluaj1XKHt9KTtOby5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbVkFdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbakFdfV19LHt0eXBlOmpsfSx7dHlwZTp2cn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbUnZdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTm8sW3t0eXBlOlosYXJnczpbe31dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltWQV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltqQV19XX0se3R5cGU6amx9LHt0eXBlOnZyfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltSdl19XX1dfSxudWxsKX0pKCk7dmFyIGNvPWNsYXNze3N0YXRpYyBmb3JSb290KHQsZT17fSl7cmV0dXJue25nTW9kdWxlOnZyLHByb3ZpZGVyczpbe3Byb3ZpZGU6RkEsdXNlRmFjdG9yeTpLMnQsZGVwczpbW3N0LG5ldyBILG5ldyBZb11dfSx7cHJvdmlkZTppb3QsdXNlVmFsdWU6ZS5pbml0aWFsU3RhdGV9LHtwcm92aWRlOlN2LHVzZUZhY3Rvcnk6eG90LGRlcHM6W2lvdF19LHtwcm92aWRlOmxqLHVzZVZhbHVlOnR9LHtwcm92aWRlOnNvdCx1c2VFeGlzdGluZzp0IGluc3RhbmNlb2YgeXQ/dDpsan0se3Byb3ZpZGU6QkEsZGVwczpbJGUsbGosW25ldyBOKHNvdCldXSx1c2VGYWN0b3J5OnEydH0se3Byb3ZpZGU6bW90LHVzZVZhbHVlOmUubWV0YVJlZHVjZXJzP2UubWV0YVJlZHVjZXJzOltdfSx7cHJvdmlkZTpmb3QsZGVwczpbdnYsbW90XSx1c2VGYWN0b3J5OlEydH0se3Byb3ZpZGU6YW90LHVzZVZhbHVlOmUucmVkdWNlckZhY3Rvcnk/ZS5yZWR1Y2VyRmFjdG9yeTp3dn0se3Byb3ZpZGU6TEEsZGVwczpbYW90LGZvdF0sdXNlRmFjdG9yeTpib3R9LGgydCxiMnQsTzJ0LHkydCx4MnQsWTJ0KGUucnVudGltZUNoZWNrcyksQ290KCldfX1zdGF0aWMgZm9yRmVhdHVyZSh0LGUsbz17fSl7cmV0dXJue25nTW9kdWxlOk5vLHByb3ZpZGVyczpbe3Byb3ZpZGU6bG90LG11bHRpOiEwLHVzZVZhbHVlOnQgaW5zdGFuY2VvZiBPYmplY3Q/e306b30se3Byb3ZpZGU6cm90LG11bHRpOiEwLHVzZVZhbHVlOntrZXk6dCBpbnN0YW5jZW9mIE9iamVjdD90Lm5hbWU6dCxyZWR1Y2VyRmFjdG9yeTohKG8gaW5zdGFuY2VvZiB5dCkmJm8ucmVkdWNlckZhY3Rvcnk/by5yZWR1Y2VyRmFjdG9yeTp3dixtZXRhUmVkdWNlcnM6IShvIGluc3RhbmNlb2YgeXQpJiZvLm1ldGFSZWR1Y2Vycz9vLm1ldGFSZWR1Y2VyczpbXSxpbml0aWFsU3RhdGU6IShvIGluc3RhbmNlb2YgeXQpJiZvLmluaXRpYWxTdGF0ZT9vLmluaXRpYWxTdGF0ZTp2b2lkIDB9fSx7cHJvdmlkZTpWQSxkZXBzOlskZSxsb3Qscm90XSx1c2VGYWN0b3J5OloydH0se3Byb3ZpZGU6Y2osbXVsdGk6ITAsdXNlVmFsdWU6dCBpbnN0YW5jZW9mIE9iamVjdD90LnJlZHVjZXI6ZX0se3Byb3ZpZGU6Y290LG11bHRpOiEwLHVzZUV4aXN0aW5nOmUgaW5zdGFuY2VvZiB5dD9lOmNqfSx7cHJvdmlkZTpqQSxtdWx0aTohMCxkZXBzOlskZSxjaixbbmV3IE4oY290KV1dLHVzZUZhY3Rvcnk6WDJ0fSxDb3QoKV19fX07Y28uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Y28pfTtjby5cdTAyNzVtb2Q9cSh7dHlwZTpjb30pO2NvLlx1MDI3NWluaj1XKHt9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoY28sW3t0eXBlOlosYXJnczpbe31dfV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gcTJ0KG4sdCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB5dD9uLmdldCh0KTp0fWZ1bmN0aW9uIFoydChuLHQsZSl7cmV0dXJuIGUubWFwKChvLGkpPT57aWYodFtpXWluc3RhbmNlb2YgeXQpe2xldCBhPW4uZ2V0KHRbaV0pO3JldHVybntrZXk6by5rZXkscmVkdWNlckZhY3Rvcnk6YS5yZWR1Y2VyRmFjdG9yeT9hLnJlZHVjZXJGYWN0b3J5Ond2LG1ldGFSZWR1Y2VyczphLm1ldGFSZWR1Y2Vycz9hLm1ldGFSZWR1Y2VyczpbXSxpbml0aWFsU3RhdGU6YS5pbml0aWFsU3RhdGV9fXJldHVybiBvfSl9ZnVuY3Rpb24gWDJ0KG4sdCl7cmV0dXJuIHQubWFwKG89Pm8gaW5zdGFuY2VvZiB5dD9uLmdldChvKTpvKX1mdW5jdGlvbiB4b3Qobil7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpufWZ1bmN0aW9uIFEydChuLHQpe3JldHVybiBuLmNvbmNhdCh0KX1mdW5jdGlvbiBLMnQobil7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJTdG9yZU1vZHVsZS5mb3JSb290KCkgY2FsbGVkIHR3aWNlLiBGZWF0dXJlIG1vZHVsZXMgc2hvdWxkIHVzZSBTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKCkgaW5zdGVhZC4iKTtyZXR1cm4iZ3VhcmRlZCJ9ZnVuY3Rpb24gWXQoLi4ubil7bGV0IHQ9bi5wb3AoKSxlPW4ubWFwKG89Pm8udHlwZSk7cmV0dXJue3JlZHVjZXI6dCx0eXBlczplfX1mdW5jdGlvbiB4YShuLC4uLnQpe2xldCBlPW5ldyBNYXA7Zm9yKGxldCBvIG9mIHQpZm9yKGxldCBpIG9mIG8udHlwZXMpe2xldCBhPWUuZ2V0KGkpO2lmKGEpe2xldCByPShzLGwpPT5vLnJlZHVjZXIoYShzLGwpLGwpO2Uuc2V0KGkscil9ZWxzZSBlLnNldChpLG8ucmVkdWNlcil9cmV0dXJuIGZ1bmN0aW9uKG89bixpKXtsZXQgYT1lLmdldChpLnR5cGUpO3JldHVybiBhP2EobyxpKTpvfX12YXIgSjJ0PXtkaXNwYXRjaDohMCx1c2VFZmZlY3RzRXJyb3JIYW5kbGVyOiEwfSxHQT0iX19AbmdyeC9lZmZlY3RzX2NyZWF0ZV9fIjtmdW5jdGlvbiBNYShuLHQpe2xldCBlPW4oKSxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxKMnQpLHQpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxHQSx7dmFsdWU6b30pLGV9ZnVuY3Rpb24gJDJ0KG4pe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhuKS5maWx0ZXIobz0+bltvXSYmbltvXS5oYXNPd25Qcm9wZXJ0eShHQSk/bltvXVtHQV0uaGFzT3duUHJvcGVydHkoImRpc3BhdGNoIik6ITEpLm1hcChvPT57bGV0IGk9bltvXVtHQV07cmV0dXJuIE9iamVjdC5hc3NpZ24oe3Byb3BlcnR5TmFtZTpvfSxpKX0pfWZ1bmN0aW9uIF9qKG4pe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobil9dmFyIFNvdD0iX19AbmdyeC9lZmZlY3RzX18iO2Z1bmN0aW9uIHRTdChuKXtyZXR1cm4gVUEoblN0LF9qKShuKX1mdW5jdGlvbiBlU3Qobil7cmV0dXJuIG4uY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoU290KX1mdW5jdGlvbiBuU3Qobil7cmV0dXJuIGVTdChuKT9uLmNvbnN0cnVjdG9yW1NvdF06W119ZnVuY3Rpb24gb1N0KG4pe3JldHVyblt0U3QsJDJ0XS5yZWR1Y2UoKGUsbyk9PmUuY29uY2F0KG8obikpLFtdKX1mdW5jdGlvbiBpU3Qobix0LGUpe2xldCBvPV9qKG4pLmNvbnN0cnVjdG9yLm5hbWUsaT1vU3QobikubWFwKCh7cHJvcGVydHlOYW1lOmEsZGlzcGF0Y2g6cix1c2VFZmZlY3RzRXJyb3JIYW5kbGVyOnN9KT0+e2xldCBsPXR5cGVvZiBuW2FdPT0iZnVuY3Rpb24iP25bYV0oKTpuW2FdLGM9cz9lKGwsdCk6bDtyZXR1cm4gcj09PSExP2MucGlwZShLUygpKTpjLnBpcGUoRzcoKSkucGlwZShHKGY9Pih7ZWZmZWN0Om5bYV0sbm90aWZpY2F0aW9uOmYscHJvcGVydHlOYW1lOmEsc291cmNlTmFtZTpvLHNvdXJjZUluc3RhbmNlOm59KSkpfSk7cmV0dXJuIHluKC4uLmkpfXZhciBhU3Q9MTA7ZnVuY3Rpb24gUm90KG4sdCxlPWFTdCl7cmV0dXJuIG4ucGlwZShucyhvPT4odCYmdC5oYW5kbGVFcnJvcihvKSxlPD0xP246Um90KG4sdCxlLTEpKSkpfXZhciBUbz1jbGFzcyBleHRlbmRzIERue2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdCYmKHRoaXMuc291cmNlPXQpfWxpZnQodCl7bGV0IGU9bmV3IFRvO3JldHVybiBlLnNvdXJjZT10aGlzLGUub3BlcmF0b3I9dCxlfX07VG8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8VG8pKEkoSXMpKX07VG8uXHUwMjc1cHJvdj1QdCh7dG9rZW46VG8sZmFjdG9yeTpUby5cdTAyNzVmYWN9KTtUby5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkRuLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbSXNdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVG8sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RG4sZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltJc119XX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gRm8oLi4ubil7cmV0dXJuIHVlKHQ9Pm4uc29tZShlPT50eXBlb2YgZT09InN0cmluZyI/ZT09PXQudHlwZTplLnR5cGU9PT10LnR5cGUpKX1mdW5jdGlvbiByU3Qobix0KXtpZihuLm5vdGlmaWNhdGlvbi5raW5kPT09Ik4iKXtsZXQgZT1uLm5vdGlmaWNhdGlvbi52YWx1ZTshc1N0KGUpJiZ0LmhhbmRsZUVycm9yKG5ldyBFcnJvcihgRWZmZWN0ICR7bFN0KG4pfSBkaXNwYXRjaGVkIGFuIGludmFsaWQgYWN0aW9uOiAke2NTdChlKX1gKSl9fWZ1bmN0aW9uIHNTdChuKXtyZXR1cm4gdHlwZW9mIG4hPSJmdW5jdGlvbiImJm4mJm4udHlwZSYmdHlwZW9mIG4udHlwZT09InN0cmluZyJ9ZnVuY3Rpb24gbFN0KHtwcm9wZXJ0eU5hbWU6bixzb3VyY2VJbnN0YW5jZTp0LHNvdXJjZU5hbWU6ZX0pe2xldCBvPXR5cGVvZiB0W25dPT0iZnVuY3Rpb24iO3JldHVybmAiJHtlfS4ke1N0cmluZyhuKX0ke28/IigpIjoiIn0iYH1mdW5jdGlvbiBjU3Qobil7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShuKX1jYXRjaCh0KXtyZXR1cm4gbn19dmFyIG1TdD0ibmdyeE9uSWRlbnRpZnlFZmZlY3RzIjtmdW5jdGlvbiBmU3Qobil7cmV0dXJuIENqKG4sbVN0KX12YXIgcFN0PSJuZ3J4T25SdW5FZmZlY3RzIjtmdW5jdGlvbiBkU3Qobil7cmV0dXJuIENqKG4scFN0KX12YXIgZ1N0PSJuZ3J4T25Jbml0RWZmZWN0cyI7ZnVuY3Rpb24gdVN0KG4pe3JldHVybiBDaihuLGdTdCl9ZnVuY3Rpb24gQ2oobix0KXtyZXR1cm4gbiYmdCBpbiBuJiZ0eXBlb2Ygblt0XT09ImZ1bmN0aW9uIn12YXIgV0E9bmV3IHl0KCJAbmdyeC9lZmZlY3RzIEludGVybmFsIFJvb3QgR3VhcmQiKSxZQT1uZXcgeXQoIkBuZ3J4L2VmZmVjdHMgVXNlciBQcm92aWRlZCBFZmZlY3RzIiksaGo9bmV3IHl0KCJAbmdyeC9lZmZlY3RzIEludGVybmFsIFJvb3QgRWZmZWN0cyIpLHFBPW5ldyB5dCgiQG5ncngvZWZmZWN0cyBSb290IEVmZmVjdHMiKSx2b3Q9bmV3IHl0KCJAbmdyeC9lZmZlY3RzIEludGVybmFsIEZlYXR1cmUgRWZmZWN0cyIpLFpBPW5ldyB5dCgiQG5ncngvZWZmZWN0cyBGZWF0dXJlIEVmZmVjdHMiKSxYQT1uZXcgeXQoIkBuZ3J4L2VmZmVjdHMgRWZmZWN0cyBFcnJvciBIYW5kbGVyIiksUWM9Y2xhc3MgZXh0ZW5kcyBKdHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5lcnJvckhhbmRsZXI9dCx0aGlzLmVmZmVjdHNFcnJvckhhbmRsZXI9ZX1hZGRFZmZlY3RzKHQpe3RoaXMubmV4dCh0KX10b0FjdGlvbnMoKXtyZXR1cm4gdGhpcy5waXBlKEVOKF9qKSxVbih0PT50LnBpcGUoRU4oaFN0KSkpLFVuKHQ9PntsZXQgZT10LnBpcGUoU04oaT0+X1N0KHRoaXMuZXJyb3JIYW5kbGVyLHRoaXMuZWZmZWN0c0Vycm9ySGFuZGxlcikoaSkpLEcoaT0+KHJTdChpLHRoaXMuZXJyb3JIYW5kbGVyKSxpLm5vdGlmaWNhdGlvbikpLHVlKGk9Pmkua2luZD09PSJOIiYmaS52YWx1ZSE9bnVsbCksajcoKSksbz10LnBpcGUoQ24oMSksdWUodVN0KSxHKGk9PmkubmdyeE9uSW5pdEVmZmVjdHMoKSkpO3JldHVybiB5bihlLG8pfSkpfX07UWMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UWMpKEkoeWEpLEkoWEEpKX07UWMuXHUwMjc1cHJvdj1QdCh7dG9rZW46UWMsZmFjdG9yeTpRYy5cdTAyNzVmYWN9KTtRYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnlhfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltYQV19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhRYyxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp5YX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbWEFdfV19XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIGhTdChuKXtyZXR1cm4gZlN0KG4pP24ubmdyeE9uSWRlbnRpZnlFZmZlY3RzKCk6IiJ9ZnVuY3Rpb24gX1N0KG4sdCl7cmV0dXJuIGU9PntsZXQgbz1pU3QoZSxuLHQpO3JldHVybiBkU3QoZSk/ZS5uZ3J4T25SdW5FZmZlY3RzKG8pOm99fXZhciAkZj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuZWZmZWN0U291cmNlcz10LHRoaXMuc3RvcmU9ZSx0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb249bnVsbH1zdGFydCgpe3RoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbnx8KHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbj10aGlzLmVmZmVjdFNvdXJjZXMudG9BY3Rpb25zKCkuc3Vic2NyaWJlKHRoaXMuc3RvcmUpKX1uZ09uRGVzdHJveSgpe3RoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbiYmKHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuZWZmZWN0c1N1YnNjcmlwdGlvbj1udWxsKX19OyRmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fCRmKShJKFFjKSxJKHN0KSl9OyRmLlx1MDI3NXByb3Y9UHQoe3Rva2VuOiRmLGZhY3Rvcnk6JGYuXHUwMjc1ZmFjfSk7JGYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpRY30se3R5cGU6c3R9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoJGYsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UWN9LHt0eXBlOnN0fV19LG51bGwpfSkoKTt2YXIgRW90PSJAbmdyeC9lZmZlY3RzL2luaXQiLEdsZT1OdChFb3QpLFFtPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMpe3RoaXMuc291cmNlcz10LGUuc3RhcnQoKSxpLmZvckVhY2gobD0+dC5hZGRFZmZlY3RzKGwpKSxvLmRpc3BhdGNoKHt0eXBlOkVvdH0pfWFkZEVmZmVjdHModCl7dGhpcy5zb3VyY2VzLmFkZEVmZmVjdHModCl9fTtRbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxRbSkoSShRYyksSSgkZiksSShzdCksSShxQSksSSh2ciw4KSxJKE5vLDgpLEkoV0EsOCkpfTtRbS5cdTAyNzVtb2Q9cSh7dHlwZTpRbX0pO1FtLlx1MDI3NWluaj1XKHt9KTtRbS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlFjfSx7dHlwZTokZn0se3R5cGU6c3R9LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbcUFdfV19LHt0eXBlOnZyLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6Tm8sZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltXQV19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhRbSxbe3R5cGU6WixhcmdzOlt7fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpRY30se3R5cGU6JGZ9LHt0eXBlOnN0fSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3FBXX1dfSx7dHlwZTp2cixkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOk5vLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbV0FdfV19XX0sbnVsbCl9KSgpO3ZhciBxaT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXtlLmZvckVhY2goYT0+YS5mb3JFYWNoKHI9PnQuYWRkRWZmZWN0cyhyKSkpfX07cWkuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cWkpKEkoUW0pLEkoWkEpLEkodnIsOCksSShObyw4KSl9O3FpLlx1MDI3NW1vZD1xKHt0eXBlOnFpfSk7cWkuXHUwMjc1aW5qPVcoe30pO3FpLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UW19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbWkFdfV19LHt0eXBlOnZyLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6Tm8sZGVjb3JhdG9yczpbe3R5cGU6SH1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHFpLFt7dHlwZTpaLGFyZ3M6W3t9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFtfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1pBXX1dfSx7dHlwZTp2cixkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOk5vLGRlY29yYXRvcnM6W3t0eXBlOkh9XX1dfSxudWxsKX0pKCk7dmFyIEhvPWNsYXNze3N0YXRpYyBmb3JGZWF0dXJlKHQ9W10pe3JldHVybntuZ01vZHVsZTpxaSxwcm92aWRlcnM6W3Qse3Byb3ZpZGU6dm90LG11bHRpOiEwLHVzZVZhbHVlOnR9LHtwcm92aWRlOllBLG11bHRpOiEwLHVzZVZhbHVlOltdfSx7cHJvdmlkZTpaQSxtdWx0aTohMCx1c2VGYWN0b3J5OndvdCxkZXBzOlskZSx2b3QsWUFdfV19fXN0YXRpYyBmb3JSb290KHQ9W10pe3JldHVybntuZ01vZHVsZTpRbSxwcm92aWRlcnM6W3twcm92aWRlOlhBLHVzZVZhbHVlOlJvdH0sJGYsUWMsVG8sdCx7cHJvdmlkZTpoaix1c2VWYWx1ZTpbdF19LHtwcm92aWRlOldBLHVzZUZhY3Rvcnk6TVN0LGRlcHM6W1skZixuZXcgSCxuZXcgWW9dLFtoaixuZXcgSW5dXX0se3Byb3ZpZGU6WUEsbXVsdGk6ITAsdXNlVmFsdWU6W119LHtwcm92aWRlOnFBLHVzZUZhY3Rvcnk6d290LGRlcHM6WyRlLGhqLFlBXX1dfX19O0hvLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEhvKX07SG8uXHUwMjc1bW9kPXEoe3R5cGU6SG99KTtIby5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEhvLFt7dHlwZTpaLGFyZ3M6W3t9XX1dLG51bGwsbnVsbCl9KSgpO2Z1bmN0aW9uIHdvdChuLHQsZSl7bGV0IG89W107Zm9yKGxldCBpIG9mIHQpby5wdXNoKC4uLmkpO2ZvcihsZXQgaSBvZiBlKW8ucHVzaCguLi5pKTtyZXR1cm4gQ1N0KG4sbyl9ZnVuY3Rpb24gQ1N0KG4sdCl7cmV0dXJuIHQubWFwKGU9Pm4uZ2V0KGUpKX1mdW5jdGlvbiBNU3Qobix0KXtpZighKHQubGVuZ3RoPT09MSYmdFswXS5sZW5ndGg9PT0wKSYmbil0aHJvdyBuZXcgVHlwZUVycm9yKCJFZmZlY3RzTW9kdWxlLmZvclJvb3QoKSBjYWxsZWQgdHdpY2UuIEZlYXR1cmUgbW9kdWxlcyBzaG91bGQgdXNlIEVmZmVjdHNNb2R1bGUuZm9yRmVhdHVyZSgpIGluc3RlYWQuIik7cmV0dXJuImd1YXJkZWQifXZhciBXbzsoZnVuY3Rpb24obil7bltuLlVOS05PV049MF09IlVOS05PV04iLG5bbi5FWFBFUklNRU5UUz0xXT0iRVhQRVJJTUVOVFMiLG5bbi5FWFBFUklNRU5UPTJdPSJFWFBFUklNRU5UIixuW24uQ09NUEFSRV9FWFBFUklNRU5UPTNdPSJDT01QQVJFX0VYUEVSSU1FTlQiLG5bbi5OT1RfU0VUPTRdPSJOT1RfU0VUIixuW24uRkxBR1M9NV09IkZMQUdTIn0pKFdvfHwoV289e30pKTt2YXIgUUE9ImRlZmF1bHRFeHBlcmltZW50SWQiLGZFOyhmdW5jdGlvbihuKXtuW24uRVhQRVJJTUVOVFM9MF09IkVYUEVSSU1FTlRTIixuW24uREFTSEJPQVJEPTFdPSJEQVNIQk9BUkQifSkoZkV8fChmRT17fSkpO2Z1bmN0aW9uIGRFKG4pe3JldHVybiBuLnNwbGl0KCIsIikubWFwKHQ9PntsZXQgZT10LmluZGV4T2YoIjoiKTtpZihlPDApdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgY29sb24gZGVsaW1pdGluZyBuYW1lIGFuZCBJRDogJHt0fWApO2xldCBvPXQuc2xpY2UoMCxlKSxpPXQuc2xpY2UoZSsxKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdCBpZCB0byBiZSBub24tZmFsc3k6ICR7dH1gKTtyZXR1cm57bmFtZTpvLGlkOml9fSl9ZnVuY3Rpb24ga290KG4pe3JldHVybiBuLm1hcCgoe2FsaWFzOnQsaWQ6ZX0pPT5gJHt0fToke2V9YCkuam9pbigiLCIpfWZ1bmN0aW9uIHBFKG4sdCl7c3dpdGNoKG4pe2Nhc2UgV28uRVhQRVJJTUVOVDpyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsImV4cGVyaW1lbnRJZCIpP1t0LmV4cGVyaW1lbnRJZF06W1FBXTtjYXNlIFdvLkNPTVBBUkVfRVhQRVJJTUVOVDpyZXR1cm4gZEUodC5leHBlcmltZW50SWRzKS5tYXAoKHtpZDpvfSk9Pm8pO2Nhc2UgV28uRVhQRVJJTUVOVFM6ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gS2Mobix0KXtpZighbnx8IXQpcmV0dXJuIG49PT10O2lmKG4ucm91dGVLaW5kIT09dC5yb3V0ZUtpbmQpcmV0dXJuITE7bGV0IGU9cEUobi5yb3V0ZUtpbmQsbi5wYXJhbXMpLG89cEUodC5yb3V0ZUtpbmQsdC5wYXJhbXMpO2lmKGU9PT1udWxsfHxvPT09bnVsbClyZXR1cm4gZT09PW87aWYoZS5sZW5ndGghPT1vLmxlbmd0aClyZXR1cm4hMTtsZXQgaT1vLnNvcnQoKTtyZXR1cm4gZS5zb3J0KCkuZXZlcnkoKGEscik9Pmlbcl09PT1hKX1mdW5jdGlvbiBOb3Qobil7bGV0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IobGV0e2tleTplLHZhbHVlOm99b2Ygbil0LmFwcGVuZChlLG8pO3JldHVybiB0fWZ1bmN0aW9uIFRvdChuLHQpe3JldHVybiBuLnBhdGhuYW1lIT09dC5wYXRobmFtZXx8bi5xdWVyeVBhcmFtcy5sZW5ndGghPT10LnF1ZXJ5UGFyYW1zLmxlbmd0aD8hMTpuLnF1ZXJ5UGFyYW1zLmV2ZXJ5KChlLG8pPT57bGV0IGk9dC5xdWVyeVBhcmFtc1tvXTtyZXR1cm4gZS5rZXk9PT1pLmtleSYmZS52YWx1ZT09PWkudmFsdWV9KX1mdW5jdGlvbiBNaihuKXtzd2l0Y2gobil7Y2FzZSBXby5FWFBFUklNRU5UUzpyZXR1cm4gZkUuRVhQRVJJTUVOVFM7Y2FzZSBXby5FWFBFUklNRU5UOmNhc2UgV28uQ09NUEFSRV9FWFBFUklNRU5UOnJldHVybiBmRS5EQVNIQk9BUkQ7Y2FzZSBXby5VTktOT1dOOmNhc2UgV28uTk9UX1NFVDpjYXNlIFdvLkZMQUdTOnJldHVybiBudWxsfX1mdW5jdGlvbiBLQShuLHQsZSl7bGV0IG89TWoobik7cmV0dXJuIG8hPT1udWxsJiYhZS5zb21lKGk9PmkuZGVlcExpbmtHcm91cD09PW8mJmkubmFtZXNwYWNlSWQ9PT10KX1mdW5jdGlvbiBBb3QoKXtsZXQgbj1uZXcgVWludDhBcnJheSgzMik7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuKTtsZXQgdD0iIjtmb3IobGV0IGUgb2Ygbil0Kz0oZT4+NCkudG9TdHJpbmcoMTYpO3JldHVybiB0fXZhciBEb3Q9e2dldEhyZWYoKXtyZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWZ9fSx6cz1jbGFzc3tnZXRIcmVmKCl7cmV0dXJuIERvdC5nZXRIcmVmKCl9Z2V0U2VhcmNoKCl7bGV0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSxlPVtdO3JldHVybiB0LmZvckVhY2goKG8saSk9PntlLnB1c2goe2tleTppLHZhbHVlOm99KX0pLGV9Z2V0SGFzaCgpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaGFzaH1nZXRQYXRoKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1nZXRIaXN0b3J5U3RhdGUoKXtyZXR1cm4gd2luZG93Lmhpc3Rvcnkuc3RhdGV9cmVwbGFjZVN0YXRlVXJsKHQpe3dpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh3aW5kb3cuaGlzdG9yeS5zdGF0ZSwiIix0KX1wdXNoU3RhdGVVcmwodCl7d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsIiIsdCl9cmVwbGFjZVN0YXRlRGF0YSh0KXt3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUodCwiIil9b25Qb3BTdGF0ZSgpe3JldHVybiBqbyh3aW5kb3csInBvcHN0YXRlIikucGlwZShHKHQ9Pih7cGF0aG5hbWU6dGhpcy5nZXRQYXRoKCksc3RhdGU6dC5zdGF0ZX0pKSl9Z2V0UmVzb2x2ZWRQYXRoKHQpe3JldHVybiBuZXcgVVJMKHQsRG90LmdldEhyZWYoKSkucGF0aG5hbWV9Z2V0RnVsbFBhdGgodCxlLG8pe2xldCBpPXRoaXMuZ2V0UmVzb2x2ZWRQYXRoKHQpLGE9IiI7ZS5sZW5ndGgmJihhPSI/IitOb3QoZSkudG9TdHJpbmcoKSk7bGV0IHI9bz90aGlzLmdldEhhc2goKToiIjtyZXR1cm5gJHtpfSR7YX0ke3J9YH19O3pzLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHpzKX07enMuXHUwMjc1cHJvdj1QdCh7dG9rZW46enMsZmFjdG9yeTp6cy5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoenMsW3t0eXBlOlN0fV0sbnVsbCxudWxsKX0pKCk7dmFyIGFzPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuYXBwUm9vdD10aGlzLmdldEFwcFJvb3RGcm9tTWV0YUVsZW1lbnQodCl9Z2V0QXBwUm9vdEZyb21NZXRhRWxlbWVudCh0KXtsZXQgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkIG1ldGFbbmFtZT0idGItcmVsYXRpdmUtcm9vdCJdJyk7aWYoIWUpcmV0dXJuIi8iO2xldHtwYXRobmFtZTpvfT1uZXcgVVJMKGUuY29udGVudCx0LmdldEhyZWYoKSk7cmV0dXJuIG8ucmVwbGFjZSgvXC8qJC8sIi8iKX1nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQpe3JldHVybiB0aGlzLmFwcFJvb3Quc2xpY2UoMCwtMSkrdH1nZXRBcHBSb290bGVzc1BhdGhuYW1lKHQpe3JldHVybiB0LnN0YXJ0c1dpdGgodGhpcy5hcHBSb290KT8iLyIrdC5zbGljZSh0aGlzLmFwcFJvb3QubGVuZ3RoKTp0fX07YXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8YXMpKEkoenMpKX07YXMuXHUwMjc1cHJvdj1QdCh7dG9rZW46YXMsZmFjdG9yeTphcy5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYXMsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6enN9XX0sbnVsbCl9KSgpO3ZhciBtUD1jbGFzcyBleHRlbmRzIGFze2dldEFwcFJvb3QoKXtyZXR1cm4gdGhpcy5hcHBSb290fXNldEFwcFJvb3QodCl7dGhpcy5hcHBSb290PXR9fTttUC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKG1QKSkpKGV8fG1QKX19KCk7bVAuXHUwMjc1cHJvdj1QdCh7dG9rZW46bVAsZmFjdG9yeTptUC5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobVAsW3t0eXBlOlN0fV0sbnVsbCxudWxsKX0pKCk7dmFyIEhzPWNsYXNze307SHMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SHMpfTtIcy5cdTAyNzVtb2Q9cSh7dHlwZTpIc30pO0hzLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3pzXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhIcyxbe3R5cGU6WixhcmdzOlt7cHJvdmlkZXJzOlt6c119XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBycz1jbGFzc3t9O3JzLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHJzKX07cnMuXHUwMjc1bW9kPXEoe3R5cGU6cnN9KTtycy5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlthc10saW1wb3J0czpbW0hzXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocnMsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0hzXSxwcm92aWRlcnM6W2FzXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChycyx7aW1wb3J0czpbSHNdfSl9KSgpO3ZhciBKQT1uZXcgeXQoIltBcHAgUm91dGluZ10gRGlydHkgVXBkYXRlcyIpO3ZhciBKYz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpcnR5VXBkYXRlc1NlbGVjdG9yRmFjdG9yaWVzPXR9Z2V0RGlydHlVcGRhdGVzU2VsZWN0b3JzKCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5kaXJ0eVVwZGF0ZXNTZWxlY3RvckZhY3RvcmllcykhPT1udWxsJiZ0IT09dm9pZCAwP3Q6W119c3RhdGljIHJlZ2lzdGVyRGlydHlVcGRhdGVzKHQpe3JldHVybntuZ01vZHVsZTpKYyxwcm92aWRlcnM6W3twcm92aWRlOkpBLG11bHRpOiEwLHVzZUZhY3Rvcnk6dH1dfX19O0pjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEpjKShJKEpBLDgpKX07SmMuXHUwMjc1bW9kPXEoe3R5cGU6SmN9KTtKYy5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEpjLFt7dHlwZTpafV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltKQV19XX1dfSxudWxsKX0pKCk7dmFyIElvdD1OdCgiW0FwcCBSb3V0aW5nXSBEaXNjYXJkaW5nIFVuc2F2ZWQgVXBkYXRlcyIpLHIzPU50KCJbQXBwIFJvdXRpbmddIFN0YXRlIFJlaHlkcmF0ZWQgRnJvbSBVcmwiLGJlKCkpLCRBPU50KCJbQXBwIFJvdXRpbmddIFJvdXRlIENvbmZpZyBMb2FkZWQiLGJlKCkpLHREPU50KCJbQXBwIFJvdXRpbmddIEluIEFwcCBOYXZpZ2F0aW9uIFJlcXVlc3RlZCIsYmUoKSksZUQ9TnQoIltBcHAgUm91dGluZ10gSW4gQXBwIE5hdmlnYXRpbmciLGJlKCkpLHlfPU50KCJbQXBwIFJvdXRpbmddIEluIEFwcCBOYXZpZ2F0ZWQiLGJlKCkpO3ZhciBuRD1uZXcgeXQoIltBcHAgUm91dGluZ10gUHJvZ3JhbW1hdGljYWwgTmF2aWdhdGlvbiBQcm92aWRlciIpO3ZhciAkYz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb3ZpZGVycz1uZXcgTWFwO2ZvcihsZXQgZSBvZiB0fHxbXSl7aWYodGhpcy5wcm92aWRlcnMuaGFzKGUuYWN0aW9uQ3JlYXRvci50eXBlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgIiR7ZS5hY3Rpb25DcmVhdG9yLnR5cGV9IiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIG5hdi4gTXVsdGlwbGUgbmF2aWdhdGlvbnMgb24gc2FtZSBraWNrIGlzIG5vdCBhbGxvd2VkLmApO3RoaXMucHJvdmlkZXJzLnNldChlLmFjdGlvbkNyZWF0b3IudHlwZSxlLmxhbWJkYSl9fWdldE5hdmlnYXRpb24odCl7bGV0IGU9dGhpcy5wcm92aWRlcnMuZ2V0KHQudHlwZSk7cmV0dXJuIGU/ZSh0KTpudWxsfXN0YXRpYyByZWdpc3RlclByb2dyYW1tYXRpY2FsTmF2aWdhdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6JGMscHJvdmlkZXJzOlt7cHJvdmlkZTpuRCxtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fTskYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHwkYykoSShuRCw4KSl9OyRjLlx1MDI3NW1vZD1xKHt0eXBlOiRjfSk7JGMuXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQygkYyxbe3R5cGU6WixhcmdzOlt7fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltuRF19XX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gZ0Uobil7bGV0IHQ9bjtyZXR1cm4gdC5yb3V0ZUtpbmQhPT12b2lkIDAmJnQucm91dGVLaW5kIT09bnVsbH1mdW5jdGlvbiBIb3Qobil7cmV0dXJuIG4ucmVkaXJlY3Rpb25QYXRoIT09dm9pZCAwfWZ1bmN0aW9uIHhqKG4pe3JldHVybiBMb3QobikubWFwKGU9PntsZXQgbz1lLnN0YXJ0c1dpdGgoIjoiKTtyZXR1cm4gbz97cGF0aFBhcnQ6ZSxpc1BhcmFtOiEwLHBhcmFtTmFtZTplLnNsaWNlKDEpfTp7cGF0aFBhcnQ6ZSxpc1BhcmFtOm99fSl9dmFyIHMzPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMudmFsaWRhdGVDb25maWcodCksdGhpcy5wYXRoRnJhZ21lbnRzPXhqKHQucGF0aCksdGhpcy5wYXRoTWF0Y2hlcnM9dGhpcy5nZXRQYXRoTWF0Y2hlcnModGhpcy5wYXRoRnJhZ21lbnRzKX1zdGF0aWMgZ2V0TWF0Y2hlcih0KXtyZXR1cm4gZ0UodCk/bmV3IHVFKHQpOkhvdCh0KT9uZXcgUGoodCk6bmV3IHlqKHQpfXZhbGlkYXRlQ29uZmlnKHtwYXRoOnR9KXtpZighdC5zdGFydHNXaXRoKCIvIikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYGNvbmZpZy5wYXRoIHNob3VsZCBzdGFydCB3aXRoICcvJy4gJHt0fWApO2xldCBlPTA7Zm9yKDsoZT10LmluZGV4T2YoIjoiLGUrMSkpPj0wOyl7aWYodFtlLTFdIT09Ii8iKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBwYXJhbWV0ZXIgc2hvdWxkIGNvbWUgYWZ0ZXIgJy8nLiAke3R9YCk7aWYodFtlKzFdPT09dm9pZCAwfHx0W2UrMV09PT0iLyIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYGNvbmZpZy5wYXRoIHBhcmFtZXRlciBzaG91bGQgaGF2ZSBub24tZW1wdHkgbmFtZS4gJHt0fWApfX1nZXRQYXRoTWF0Y2hlcnModCl7cmV0dXJuIHQubWFwKGU9PntsZXR7cGF0aFBhcnQ6b309ZTtyZXR1cm4gZS5pc1BhcmFtP2k9Pih7aXNQYXJhbVBhdGhQYXJ0OiEwLHBhcnRNYXRjaGVkOiEwLHBhcmFtTmFtZTplLnBhcmFtTmFtZSxwYXJhbVZhbHVlOml9KTppPT4oe2lzUGFyYW1QYXRoUGFydDohMSxwYXJ0TWF0Y2hlZDppPT09b30pfSl9bWF0Y2godCl7bGV0IGU9e307aWYodGhpcy5wYXRoTWF0Y2hlcnMubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJue3Jlc3VsdDohMX07bGV0IG89MDtmb3IobGV0IGkgb2YgdGhpcy5wYXRoTWF0Y2hlcnMpe2xldCBhPXRbbysrXSxyPWkoYSk7aWYoIXIucGFydE1hdGNoZWQpcmV0dXJue3Jlc3VsdDohMX07ci5pc1BhcmFtUGF0aFBhcnQmJihlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7W3IucGFyYW1OYW1lXTpyLnBhcmFtVmFsdWV9KSl9cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6ZSxwYXRoUGFydHM6dCxpc1JlZGlyZWN0aW9uOiExLHJlZGlyZWN0aW9uUXVlcnlQYXJhbXM6dm9pZCAwfX1tYXRjaEJ5UGFyYW1zKHQpe2xldCBlPXRoaXMucmVwcm9qZWN0UGF0aEJ5UGFyYW1zKHRoaXMucGF0aEZyYWdtZW50cyx0KTtyZXR1cm57cmVzdWx0OiEwLHBhcmFtczp0LHBhdGhQYXJ0czplLGlzUmVkaXJlY3Rpb246ITEscmVkaXJlY3Rpb25RdWVyeVBhcmFtczp2b2lkIDB9fXJlcHJvamVjdFBhdGhCeVBhcmFtcyh0LGUpe2xldCBvPVtdO2ZvcihsZXQgaSBvZiB0KWlmKGkuaXNQYXJhbSl7bGV0e3BhcmFtTmFtZTphfT1pO2lmKCFlLmhhc093blByb3BlcnR5KGEpKXRocm93IG5ldyBSYW5nZUVycm9yKGBGYWlsZWQgdG8gcmVwcm9qZWN0IHBhcmFtZXRlci4gIiR7YX0iIHBhcmFtZXRlciBzaG91bGQgYmUgcHJlc2VudC5gKTtvLnB1c2goZVthXSl9ZWxzZSBvLnB1c2goaS5wYXRoUGFydCk7cmV0dXJuIG99fSx1RT1jbGFzcyBleHRlbmRzIHMze2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuZGVmaW5pdGlvbj10fX0sUGo9Y2xhc3MgZXh0ZW5kcyBzM3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLmRlZmluaXRpb249dCx0aGlzLnJlZGlyZWN0aW9uRnJhZ21lbnRzPXhqKHQucmVkaXJlY3Rpb25QYXRoKX1tYXRjaCh0KXtsZXQgZT1zdXBlci5tYXRjaCh0KTtpZighZS5yZXN1bHQpcmV0dXJuIGU7bGV0IG89dGhpcy5yZXByb2plY3RQYXRoQnlQYXJhbXModGhpcy5yZWRpcmVjdGlvbkZyYWdtZW50cyxlLnBhcmFtcyk7cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6ZS5wYXJhbXMscGF0aFBhcnRzOm8saXNSZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvblF1ZXJ5UGFyYW1zOnZvaWQgMH19fSx5aj1jbGFzcyBleHRlbmRzIHMze2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuZGVmaW5pdGlvbj10fW1hdGNoKHQpe2xldCBlPXN1cGVyLm1hdGNoKHQpO2lmKCFlLnJlc3VsdClyZXR1cm4gZTtsZXR7cGF0aFBhcnRzOm8scXVlcnlQYXJhbXM6aX09dGhpcy5kZWZpbml0aW9uLnJlZGlyZWN0b3IodCk7cmV0dXJue3Jlc3VsdDohMCxwYXJhbXM6ZS5wYXJhbXMscGF0aFBhcnRzOm8saXNSZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvblF1ZXJ5UGFyYW1zOml9fX0saEU9Y2xhc3N7Y29uc3RydWN0b3IodCxlPTMpe2lmKHRoaXMubWF4UmVkaXJlY3Rpb249ZSxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1heFJlZGlyZWN0aW9uIGhhcyB0byBiZSBub24tbmVnYXRpdmUgbnVtYmVyIik7dGhpcy52YWxpZGF0ZVJvdXRlQ29uZmlncyh0KSx0aGlzLmRlZmF1bHRSb3V0ZUNvbmZpZz1udWxsLHRoaXMucm91dGVLaW5kVG9Db25jcmV0ZUNvbmZpZ01hdGNoZXJzPW5ldyBNYXAsdGhpcy5jb25maWdNYXRjaGVycz1bXTtmb3IobGV0IG8gb2YgdCl7bGV0IGk9czMuZ2V0TWF0Y2hlcihvKTt0aGlzLmNvbmZpZ01hdGNoZXJzLnB1c2goaSksaSBpbnN0YW5jZW9mIHVFJiYodGhpcy5yb3V0ZUtpbmRUb0NvbmNyZXRlQ29uZmlnTWF0Y2hlcnMuc2V0KGkuZGVmaW5pdGlvbi5yb3V0ZUtpbmQsaSksaS5kZWZpbml0aW9uLmRlZmF1bHRSb3V0ZSYmKHRoaXMuZGVmYXVsdFJvdXRlQ29uZmlnPWkpKX19dmFsaWRhdGVSb3V0ZUNvbmZpZ3ModCl7bGV0IGU9dC5maWx0ZXIoZ0UpLG89ZS5maWx0ZXIoYT0+YS5kZWZhdWx0Um91dGUpO2lmKG8ubGVuZ3RoPjEpe2xldCBhPW8ubWFwKCh7cGF0aDpyfSk9PnIpLmpvaW4oIiwgIik7dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGRlZmF1bHRSb3V0ZXMuICR7YX1gKX1lbHNlIGlmKG8ubGVuZ3RoPT09MSl7bGV0e3BhdGg6YX09b1swXTtpZihCb29sZWFuKHhqKGEpLmZpbmQoKHtpc1BhcmFtOnN9KT0+cykpKXRocm93IG5ldyBSYW5nZUVycm9yKGBBIGRlZmF1bHRSb3V0ZSBjYW5ub3QgaGF2ZSBhbnkgcGFyYW1zLiAke2F9YCl9bGV0IGk9bmV3IFNldDtmb3IobGV0e3JvdXRlS2luZDphfW9mIGUpe2lmKGkuaGFzKGEpKXRocm93IG5ldyBSYW5nZUVycm9yKGBNdWx0aXBsZSByb3V0ZSBjb25maWd1cmF0aW9uIGZvciBraW5kOiAke2F9LiBDb25maWd1cmF0aW9ucyBzaG91bGQgaGF2ZSB1bmlxdWUgcm91dGVLaW5kc2ApO2kuYWRkKGEpfX1tYXRjaCh0KXt2YXIgZTtpZighdC5wYXRobmFtZS5zdGFydHNXaXRoKCIvIikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ05hdmlnYXRpb24gaGFzIHRvIG1hZGUgd2l0aCBwYXRobmFtZSB0aGF0IHN0YXJ0cyB3aXRoICIvIicpO2xldCBvPUxvdCh0LnBhdGhuYW1lKSxpPTAsYT0hMSxyO2Zvcig7Oyl7bGV0IHM9ITE7Zm9yKGxldCBsIG9mIHRoaXMuY29uZmlnTWF0Y2hlcnMpe2xldCBjPWwubWF0Y2gobyk7aWYoYy5yZXN1bHQpe3M9ITA7bGV0e3BhcmFtczptLHBhdGhQYXJ0czpmLGlzUmVkaXJlY3Rpb246cH09YztpZihwKXtvPWYsYT0hMCxyPWMucmVkaXJlY3Rpb25RdWVyeVBhcmFtczticmVha31pZighKGwgaW5zdGFuY2VvZiB1RSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk5vIGNvbmNyZXRlIHJvdXRlIGRlZmluaXRpb24gYG1hdGNoYCByZXR1cm4gcmVkaXJlY3Rpb24iKTtsZXR7ZGVmaW5pdGlvbjpnfT1sLF89e3JvdXRlS2luZDpnLnJvdXRlS2luZCxwYXJhbXM6bSxwYXRobmFtZTpGb3QoZiksZGVlcExpbmtQcm92aWRlcjpnLmRlZXBMaW5rUHJvdmlkZXJ8fG51bGx9O3JldHVybiBhP09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxfKSx7b3JpZ2luYXRlRnJvbVJlZGlyZWN0aW9uOiEwLHJlZGlyZWN0aW9uT25seVF1ZXJ5UGFyYW1zOnJ9KTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sXykse29yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMX0pfX1pZihhJiZpKyssIXN8fGk+dGhpcy5tYXhSZWRpcmVjdGlvbilicmVha31pZihpPnRoaXMubWF4UmVkaXJlY3Rpb24pdGhyb3cgbmV3IEVycm9yKGBQb3RlbnRpYWwgcmVkaXJlY3Rpb24gbG9vcCAocmVkaXJlY3RpbmcgbW9yZSB0aGFuICR7dGhpcy5tYXhSZWRpcmVjdGlvbn0gdGltZXMuIFBsZWFzZSBkbyBub3QgaGF2ZSBjeWNsZXMgaW4gdGhlIHJvdXRlcy5gKTtpZih0aGlzLmRlZmF1bHRSb3V0ZUNvbmZpZyl7bGV0e2RlZmluaXRpb246c309dGhpcy5kZWZhdWx0Um91dGVDb25maWc7cmV0dXJue3JvdXRlS2luZDpzLnJvdXRlS2luZCxkZWVwTGlua1Byb3ZpZGVyOihlPXMuZGVlcExpbmtQcm92aWRlcikhPT1udWxsJiZlIT09dm9pZCAwP2U6bnVsbCxwYXRobmFtZTpzLnBhdGgscGFyYW1zOnt9LG9yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMCxyZWRpcmVjdGlvbk9ubHlRdWVyeVBhcmFtczp2b2lkIDB9fXJldHVybiBudWxsfW1hdGNoQnlSb3V0ZUtpbmQodCxlKXtsZXQgbz10aGlzLnJvdXRlS2luZFRvQ29uY3JldGVDb25maWdNYXRjaGVycy5nZXQodCk7aWYoIW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFJlcXVpcmVzIGNvbmZpZ3VyYXRpb24gZm9yIHJvdXRlS2luZDogJHt0fWApO2xldCBpPW8ubWF0Y2hCeVBhcmFtcyhlKTtyZXR1cm57cm91dGVLaW5kOnQscGFyYW1zOmUscGF0aG5hbWU6Rm90KGkucGF0aFBhcnRzKSxkZWVwTGlua1Byb3ZpZGVyOm8uZGVmaW5pdGlvbi5kZWVwTGlua1Byb3ZpZGVyfHxudWxsLG9yaWdpbmF0ZUZyb21SZWRpcmVjdGlvbjohMX19fTtmdW5jdGlvbiBMb3Qobil7cmV0dXJuIG4uc3BsaXQoIi8iKS5zbGljZSgxKX1mdW5jdGlvbiBGb3Qobil7cmV0dXJuIi8iK24uam9pbigiLyIpfXZhciBvRD1uZXcgeXQoIltBcHAgUm91dGluZ10gUm91dGUgQ29uZmlnIik7dmFyIGlhPWNsYXNze2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudD1uZXcgTWFwLCF0KXt0aGlzLnJvdXRlQ29uZmlncz1uZXcgaEUoW10pO3JldHVybn1sZXQgZT1bXTtmb3IobGV0IG8gb2YgdClmb3IobGV0IGkgb2YgbyllLnB1c2goaSk7dGhpcy5yb3V0ZUNvbmZpZ3M9bmV3IGhFKGUpLGUuZm9yRWFjaChvPT57Z0UobykmJnRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudC5zZXQoby5yb3V0ZUtpbmQsby5uZ0NvbXBvbmVudCl9KX1nZXRSZWdpc3RlcmVkUm91dGVLaW5kcygpe3JldHVybiB0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQua2V5cygpfWdldFJvdXRlQ29uZmlncygpe3JldHVybiB0aGlzLnJvdXRlQ29uZmlnc31nZXROZ0NvbXBvbmVudEJ5Um91dGVLaW5kKHQpe3JldHVybiB0aGlzLnJvdXRlS2luZFRvTmdDb21wb25lbnQuZ2V0KHQpfHxudWxsfXN0YXRpYyByZWdpc3RlclJvdXRlcyh0KXtyZXR1cm57bmdNb2R1bGU6aWEscHJvdmlkZXJzOlt7cHJvdmlkZTpvRCxtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fTtpYS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxpYSkoSShvRCw4KSl9O2lhLlx1MDI3NW1vZD1xKHt0eXBlOmlhfSk7aWEuXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhpYSxbe3R5cGU6WixhcmdzOlt7fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltvRF19XX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gQm90KG4pe2xldCB0PW5ldyBNYXAsZT1kRShuLmV4cGVyaW1lbnRJZHMpLG89MDtmb3IobGV0e2lkOmksbmFtZTphfW9mIGUpbysrLCF0LmhhcyhpKSYmdC5zZXQoaSx7YWxpYXNUZXh0OmEsYWxpYXNOdW1iZXI6b30pO3JldHVybiB0fWZ1bmN0aW9uIFZvdChuKXtsZXQgdD1uZXcgTWFwLGU9ZEUobi5leHBlcmltZW50SWRzKTtmb3IobGV0e2lkOm8sbmFtZTppfW9mIGUpaSYmdC5zZXQobyxpKTtyZXR1cm4gdH12YXIgX0U9ImFwcF9yb3V0aW5nIjt2YXIgQ0U9QmEoX0UpLHRwPWN0KENFLG49Pm4uYWN0aXZlUm91dGUpLGpvdD1jdChDRSxuPT5uLm5leHRSb3V0ZSksVW90PWN0KENFLG49Pm4uYWN0aXZlTmFtZXNwYWNlSWQpLFlvdD1jdChDRSxuPT5uLnJlaHlkcmF0ZWREZWVwTGlua3MpLEdvdD1jdChDRSxuPT5uLnJlZ2lzdGVyZWRSb3V0ZUtleXMpLHFiPWN0KHRwLG49Pm4/bi5yb3V0ZUtpbmQ6V28uTk9UX1NFVCksd2o9Y3QodHAsbj0+bj9uLnBhcmFtczp7fSksSnM9Y3QocWIsd2osKG4sdCk9PnBFKG4sdCkpLEhjZT1jdChxYix3aiwobix0KT0+e2lmKG4hPT1Xby5DT01QQVJFX0VYUEVSSU1FTlQpcmV0dXJue307bGV0IG89Vm90KHQpO3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoby5lbnRyaWVzKCkpfSksWmI9Y3QocWIsd2osKG4sdCk9PntpZihuIT09V28uQ09NUEFSRV9FWFBFUklNRU5UKXJldHVybnt9O2xldCBvPUJvdCh0KTtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKG8uZW50cmllcygpKX0pO3ZhciBTaj1OdCgiW0FwcCBSb3V0aW5nXSBFZmZlY3RzIEluaXQiKSxlcDsoZnVuY3Rpb24obil7bltuLlVOQ0hBTkdFRD0wXT0iVU5DSEFOR0VEIixuW24uTkVXPTFdPSJORVciLG5bbi5GUk9NX0hJU1RPUlk9Ml09IkZST01fSElTVE9SWSJ9KShlcHx8KGVwPXt9KSk7dmFyIGxNPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMpe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5sb2NhdGlvbj1vLHRoaXMuZGlydHlVcGRhdGVzUmVnaXN0cnk9aSx0aGlzLnJlZ2lzdHJ5PWEsdGhpcy5wcm9ncmFtbWF0aWNhbE5hdk1vZHVsZT1yLHRoaXMuYXBwUm9vdFByb3ZpZGVyPXMsdGhpcy5vbk5hdmlnYXRpb25SZXF1ZXN0ZWQkPXRoaXMuYWN0aW9ucyQucGlwZShGbyh0RCksRyhsPT57dmFyIGM7cmV0dXJue3BhdGhuYW1lOmwucGF0aG5hbWUuc3RhcnRzV2l0aCgiLyIpP3RoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QobC5wYXRobmFtZSk6dGhpcy5sb2NhdGlvbi5nZXRSZXNvbHZlZFBhdGgobC5wYXRobmFtZSksb3B0aW9uczp7YnJvd3NlckluaXRpYXRlZDohMSxyZXBsYWNlU3RhdGU6KGM9bC5yZXBsYWNlU3RhdGUpIT09bnVsbCYmYyE9PXZvaWQgMD9jOiExLG5hbWVzcGFjZVVwZGF0ZTp7b3B0aW9uOmwucmVzZXROYW1lc3BhY2VkU3RhdGU/ZXAuTkVXOmVwLlVOQ0hBTkdFRH19fX0pKSx0aGlzLmJvb3RzdHJhcFJlZHVjZXJzJD1NYSgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKEZvKFNqKSxHKCgpPT4kQSh7cm91dGVLaW5kczpuZXcgU2V0KHRoaXMucmVnaXN0cnkuZ2V0UmVnaXN0ZXJlZFJvdXRlS2luZHMoKSl9KSkpKSx0aGlzLm9uSW5pdCQ9dGhpcy5hY3Rpb25zJC5waXBlKEZvKFNqKSkucGlwZShvXygwKSxHKCgpPT57dmFyIGw7bGV0IGM9KGw9dGhpcy5sb2NhdGlvbi5nZXRIaXN0b3J5U3RhdGUoKSk9PT1udWxsfHxsPT09dm9pZCAwP3ZvaWQgMDpsLm5hbWVzcGFjZUlkLG09Yz09PXZvaWQgMD97b3B0aW9uOmVwLk5FV306e29wdGlvbjplcC5GUk9NX0hJU1RPUlksbmFtZXNwYWNlSWQ6Y307cmV0dXJue3BhdGhuYW1lOnRoaXMubG9jYXRpb24uZ2V0UGF0aCgpLG9wdGlvbnM6e2Jyb3dzZXJJbml0aWF0ZWQ6ITAscmVwbGFjZVN0YXRlOiEwLG5hbWVzcGFjZVVwZGF0ZTptfX19KSksdGhpcy5vblBvcFN0YXRlJD10aGlzLmxvY2F0aW9uLm9uUG9wU3RhdGUoKS5waXBlKEcobD0+e3ZhciBjO2xldCBtPSgoYz1sLnN0YXRlKT09PW51bGx8fGM9PT12b2lkIDA/dm9pZCAwOmMubmFtZXNwYWNlSWQpPT09dm9pZCAwP3tvcHRpb246ZXAuVU5DSEFOR0VEfTp7b3B0aW9uOmVwLkZST01fSElTVE9SWSxuYW1lc3BhY2VJZDpsLnN0YXRlLm5hbWVzcGFjZUlkfTtyZXR1cm57cGF0aG5hbWU6bC5wYXRobmFtZSxvcHRpb25zOnticm93c2VySW5pdGlhdGVkOiEwLHJlcGxhY2VTdGF0ZTohMCxuYW1lc3BhY2VVcGRhdGU6bX19fSkpLHRoaXMudXNlckluaXROYXZSb3V0ZSQ9eW4odGhpcy5vbk5hdmlnYXRpb25SZXF1ZXN0ZWQkLHRoaXMub25Jbml0JCx0aGlzLm9uUG9wU3RhdGUkKS5waXBlKEcobD0+e2lmKCFsLnBhdGhuYW1lLnN0YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgRXJyb3IoYFtBcHAgcm91dGluZ10gcGF0aG5hbWUgbXVzdCBzdGFydCB3aXRoICcvJy4gR290OiAke2wucGF0aG5hbWV9YCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxsKSx7cGF0aG5hbWU6dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QXBwUm9vdGxlc3NQYXRobmFtZShsLnBhdGhuYW1lKX0pfSksRyhsPT4oe3JvdXRlTWF0Y2g6dGhpcy5yb3V0ZUNvbmZpZ3MubWF0Y2gobCksb3B0aW9uczpsLm9wdGlvbnN9KSkpLHRoaXMucHJvZ3JhbW1hdGljYWxOYXZSb3V0ZSQ9dGhpcy5hY3Rpb25zJC5waXBlKEcobD0+dGhpcy5wcm9ncmFtbWF0aWNhbE5hdk1vZHVsZS5nZXROYXZpZ2F0aW9uKGwpKSx1ZShsPT5sIT09bnVsbCksRyhsPT57bGV0IGM9bCx7cmVwbGFjZVN0YXRlOm09ITEscmVzZXROYW1lc3BhY2VkU3RhdGU6Zixyb3V0ZUtpbmQ6cH09YyxnO3N3aXRjaChjLnJvdXRlS2luZCl7Y2FzZSBXby5DT01QQVJFX0VYUEVSSU1FTlQ6Zz17ZXhwZXJpbWVudElkczprb3QoYy5yb3V0ZVBhcmFtcy5hbGlhc0FuZEV4cGVyaW1lbnRJZHMpfTticmVhaztkZWZhdWx0Omc9Yy5yb3V0ZVBhcmFtc31yZXR1cm57cmVwbGFjZVN0YXRlOm0scm91dGVLaW5kOnAscm91dGVQYXJhbXM6ZyxyZXNldE5hbWVzcGFjZWRTdGF0ZTpmfX0pLEcoKHtyZXBsYWNlU3RhdGU6bCxyb3V0ZUtpbmQ6Yyxyb3V0ZVBhcmFtczptLHJlc2V0TmFtZXNwYWNlZFN0YXRlOmZ9KT0+KHtyb3V0ZU1hdGNoOnRoaXMucm91dGVDb25maWdzP3RoaXMucm91dGVDb25maWdzLm1hdGNoQnlSb3V0ZUtpbmQoYyxtKTpudWxsLG9wdGlvbnM6e3JlcGxhY2VTdGF0ZTpsLGJyb3dzZXJJbml0aWF0ZWQ6ITEsbmFtZXNwYWNlVXBkYXRlOntvcHRpb246Zj9lcC5ORVc6ZXAuVU5DSEFOR0VEfX19KSkpLHRoaXMudmFsaWRhdGVkUm91dGVNYXRjaCQ9eW4odGhpcy51c2VySW5pdE5hdlJvdXRlJCx0aGlzLnByb2dyYW1tYXRpY2FsTmF2Um91dGUkKS5waXBlKHVlKCh7cm91dGVNYXRjaDpsfSk9PkJvb2xlYW4obCkpLEcoKHtyb3V0ZU1hdGNoOmwsb3B0aW9uczpjfSk9Pih7cm91dGVNYXRjaDpsLG9wdGlvbnM6Y30pKSksdGhpcy5uYXZpZ2F0ZSQ9TWEoKCk9PnRoaXMudmFsaWRhdGVkUm91dGVNYXRjaCQucGlwZShPbih0aGlzLnN0b3JlLnNlbGVjdCh0cCkpLFVuKChbbSxmXSk9PntsZXQgcD1mIT09bnVsbCYmS2MoZixtLnJvdXRlTWF0Y2gpLGc9dGhpcy5kaXJ0eVVwZGF0ZXNSZWdpc3RyeS5nZXREaXJ0eVVwZGF0ZXNTZWxlY3RvcnMoKTtyZXR1cm4gcHx8IWcubGVuZ3RoP2RuKG0pOmdhKHRoaXMuZGlydHlVcGRhdGVzUmVnaXN0cnkuZ2V0RGlydHlVcGRhdGVzU2VsZWN0b3JzKCkubWFwKF89PnRoaXMuc3RvcmUuc2VsZWN0KF8pLnBpcGUoQ24oMSkpKSkucGlwZShHKF89Pl9bMF0uZXhwZXJpbWVudElkcyE9PXZvaWQgMCYmX1swXS5leHBlcmltZW50SWRzLmxlbmd0aD4wKSx1ZShfPT57aWYoXyl7bGV0IE09d2luZG93LmNvbmZpcm0oIllvdSBoYXZlIHVuc2F2ZWQgZWRpdHMsIGFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkaXNjYXJkIHRoZW0/Iik7cmV0dXJuIE0mJnRoaXMuc3RvcmUuZGlzcGF0Y2goSW90KCkpLE19cmV0dXJuITB9KSxHKCgpPT5tKSl9KSxPbih0aGlzLnN0b3JlLnNlbGVjdChZb3QpKSxhbigoW3tyb3V0ZU1hdGNoOm0sb3B0aW9uczpmfSxwXSk9PntpZighZi5icm93c2VySW5pdGlhdGVkfHwhbS5kZWVwTGlua1Byb3ZpZGVyfHxmLm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT1lcC5GUk9NX0hJU1RPUlkmJiFLQShtLnJvdXRlS2luZCxmLm5hbWVzcGFjZVVwZGF0ZS5uYW1lc3BhY2VJZCxwKSlyZXR1cm47bGV0IGc9bS5vcmlnaW5hdGVGcm9tUmVkaXJlY3Rpb24mJm0ucmVkaXJlY3Rpb25Pbmx5UXVlcnlQYXJhbXM/bS5yZWRpcmVjdGlvbk9ubHlRdWVyeVBhcmFtczp0aGlzLmxvY2F0aW9uLmdldFNlYXJjaCgpLF89bS5kZWVwTGlua1Byb3ZpZGVyLmRlc2VyaWFsaXplUXVlcnlQYXJhbXMoZyk7dGhpcy5zdG9yZS5kaXNwYXRjaChyMyh7cm91dGVLaW5kOm0ucm91dGVLaW5kLHBhcnRpYWxTdGF0ZTpffSkpfSksdGkoKFt7cm91dGVNYXRjaDptLG9wdGlvbnM6Zn1dKT0+bS5kZWVwTGlua1Byb3ZpZGVyPT09bnVsbD9kbih7cm91dGU6e3JvdXRlS2luZDptLnJvdXRlS2luZCxwYXJhbXM6bS5wYXJhbXN9LHBhdGhuYW1lOm0ucGF0aG5hbWUscXVlcnlQYXJhbXM6W10sb3B0aW9uczpmfSk6bS5kZWVwTGlua1Byb3ZpZGVyLnNlcmlhbGl6ZVN0YXRlVG9RdWVyeVBhcmFtcyh0aGlzLnN0b3JlKS5waXBlKEcoKHAsZyk9Pih7cm91dGU6e3JvdXRlS2luZDptLnJvdXRlS2luZCxwYXJhbXM6bS5wYXJhbXN9LHBhdGhuYW1lOm0ucGF0aG5hbWUscXVlcnlQYXJhbXM6cCxvcHRpb25zOmc9PT0wP2Y6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGYpLHtuYW1lc3BhY2VVcGRhdGU6e29wdGlvbjplcC5VTkNIQU5HRUR9LHJlcGxhY2VTdGF0ZTohMH0pfSkpKSksYW4oKHtyb3V0ZTptfSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGVEKHthZnRlcjptfSkpfSksbHIoMCkpLnBpcGUoT24odGhpcy5zdG9yZS5zZWxlY3QodHApKSxHKChbbSxmXSk9PntsZXQgcD1mPT09bnVsbHx8bS5yb3V0ZT09PW51bGx8fEtjKGYsbS5yb3V0ZSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxtKSx7cHJlc2VydmVIYXNoOnB9KX0pLGFuKCh7cHJlc2VydmVIYXNoOm0scGF0aG5hbWU6ZixxdWVyeVBhcmFtczpwLG9wdGlvbnM6Z30pPT57VG90KHtwYXRobmFtZTpmLHF1ZXJ5UGFyYW1zOnB9LHtwYXRobmFtZTp0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBcHBSb290bGVzc1BhdGhuYW1lKHRoaXMubG9jYXRpb24uZ2V0UGF0aCgpKSxxdWVyeVBhcmFtczp0aGlzLmxvY2F0aW9uLmdldFNlYXJjaCgpfSl8fChnLnJlcGxhY2VTdGF0ZT90aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZVVybCh0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0RnVsbFBhdGgoZixwLG0pKSk6dGhpcy5sb2NhdGlvbi5wdXNoU3RhdGVVcmwodGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0aGlzLmxvY2F0aW9uLmdldEZ1bGxQYXRoKGYscCxtKSkpKX0pKS5waXBlKE9uKHRoaXMuc3RvcmUuc2VsZWN0KHRwKSx0aGlzLnN0b3JlLnNlbGVjdChVb3QpKSxHKChbe3JvdXRlOm0sb3B0aW9uczpmfSxwLGddKT0+e2xldCBfPVBTdChtLGYsZyk7cmV0dXJuIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlRGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5sb2NhdGlvbi5nZXRIaXN0b3J5U3RhdGUoKSkse25hbWVzcGFjZUlkOl99KSkseV8oe2JlZm9yZTpwLGFmdGVyOm0sYmVmb3JlTmFtZXNwYWNlSWQ6ZyxhZnRlck5hbWVzcGFjZUlkOl99KX0pKSksdGhpcy5yb3V0ZUNvbmZpZ3M9YS5nZXRSb3V0ZUNvbmZpZ3MoKX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiBTaigpfX07bE0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bE0pKEkoVG8pLEkoc3QpLEkoenMpLEkoSmMpLEkoaWEpLEkoJGMpLEkoYXMpKX07bE0uXHUwMjc1cHJvdj1QdCh7dG9rZW46bE0sZmFjdG9yeTpsTS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobE0sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VG99LHt0eXBlOnN0fSx7dHlwZTp6c30se3R5cGU6SmN9LHt0eXBlOmlhfSx7dHlwZTokY30se3R5cGU6YXN9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIFBTdChuLHQsZSl7cmV0dXJuIHQubmFtZXNwYWNlVXBkYXRlLm9wdGlvbj09PWVwLkZST01fSElTVE9SWT90Lm5hbWVzcGFjZVVwZGF0ZS5uYW1lc3BhY2VJZDplPT1udWxsfHx0Lm5hbWVzcGFjZVVwZGF0ZS5vcHRpb249PT1lcC5ORVc/YCR7RGF0ZS5ub3coKS50b1N0cmluZygpfToke0FvdCgpfWA6ZX12YXIgeVN0PXthY3RpdmVSb3V0ZTpudWxsLG5leHRSb3V0ZTpudWxsLGFjdGl2ZU5hbWVzcGFjZUlkOm51bGwscmVoeWRyYXRlZERlZXBMaW5rczpbXSxyZWdpc3RlcmVkUm91dGVLZXlzOm5ldyBTZXR9LHhTdD14YSh5U3QsWXQoZUQsKG4se2FmdGVyOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtuZXh0Um91dGU6dH0pKSxZdCh5Xywobix7YWZ0ZXI6dCxhZnRlck5hbWVzcGFjZUlkOmV9KT0+e2xldCBvPW4ucmVoeWRyYXRlZERlZXBMaW5rcztyZXR1cm4gS0EodC5yb3V0ZUtpbmQsZSxvKSYmKG89Wy4uLm9dLG8ucHVzaCh7ZGVlcExpbmtHcm91cDpNaih0LnJvdXRlS2luZCksbmFtZXNwYWNlSWQ6ZX0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2FjdGl2ZVJvdXRlOnQsbmV4dFJvdXRlOm51bGwsYWN0aXZlTmFtZXNwYWNlSWQ6ZSxyZWh5ZHJhdGVkRGVlcExpbmtzOm99KX0pLFl0KCRBLChuLHtyb3V0ZUtpbmRzOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtyZWdpc3RlcmVkUm91dGVLZXlzOnR9KSkpO2Z1bmN0aW9uIFJqKG4sdCl7cmV0dXJuIHhTdChuLHQpfXZhciBzcz1jbGFzc3t9O3NzLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHNzKX07c3MuXHUwMjc1bW9kPXEoe3R5cGU6c3N9KTtzcy5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltKYywkY10saW1wb3J0czpbW2lhLGNvLmZvckZlYXR1cmUoX0UsUmopLEhvLmZvckZlYXR1cmUoW2xNXSkscnMsSHNdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhzcyxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbaWEsY28uZm9yRmVhdHVyZShfRSxSaiksSG8uZm9yRmVhdHVyZShbbE1dKSxycyxIc10scHJvdmlkZXJzOltKYywkY119XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoc3Mse2ltcG9ydHM6W2lhLE5vLHFpLHJzLEhzXX0pfSkoKTt2YXIgV290PSJfX3RhYl9fIixjTT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudGZTdG9yYWdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKSxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1nbG9iYWxzIikudGZfZ2xvYmFscy5zZXRVc2VIYXNoKCEwKSx0aGlzLnRmU3RvcmFnZS50Zl9zdG9yYWdlLm1pZ3JhdGVMZWdhY3lVUkxTY2hlbWUoKX1nZXRTdHJpbmcodCl7cmV0dXJuIHRoaXMudGZTdG9yYWdlLnRmX3N0b3JhZ2UuZ2V0U3RyaW5nKHQpfXNldFN0cmluZyh0LGUsbyl7dGhpcy50ZlN0b3JhZ2UudGZfc3RvcmFnZS5zZXRTdHJpbmcodCxlLG8pfWdldFBsdWdpbklkKCl7cmV0dXJuIHRoaXMuZ2V0U3RyaW5nKFdvdCl9c2V0UGx1Z2luSWQodCxlKXt0aGlzLnNldFN0cmluZyhXb3QsdCxlKX19O2NNLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGNNKX07Y00uXHUwMjc1cHJvdj1QdCh7dG9rZW46Y00sZmFjdG9yeTpjTS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoY00sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0sbnVsbCl9KSgpO3ZhciBtTT1jbGFzc3t9O3ZhciBpRD1uZXcgeXQoIltQZXJzaXN0ZW50IFNldHRpbmdzXSBHbG9iYWwgU2V0dGluZ3MiKTt2YXIgTm49Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5nbG9iYWxTZXR0aW5nU2VsZWN0b3JzPVtdLHQmJih0aGlzLmdsb2JhbFNldHRpbmdTZWxlY3RvcnM9dC5tYXAoZT0+ZSgpKSl9Z2V0R2xvYmFsU2V0dGluZ1NlbGVjdG9ycygpe3ZhciB0O3JldHVybih0PXRoaXMuZ2xvYmFsU2V0dGluZ1NlbGVjdG9ycykhPT1udWxsJiZ0IT09dm9pZCAwP3Q6W119c3RhdGljIGRlZmluZUdsb2JhbFNldHRpbmcodCl7cmV0dXJue25nTW9kdWxlOk5uLHByb3ZpZGVyczpbe3Byb3ZpZGU6aUQsbXVsdGk6ITAsdXNlVmFsdWU6dH1dfX19O05uLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE5uKShJKGlELDgpKX07Tm4uXHUwMjc1bW9kPXEoe3R5cGU6Tm59KTtObi5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE5uLFt7dHlwZTpafV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltpRF19XX1dfSxudWxsKX0pKCk7dmFyIERnOyhmdW5jdGlvbihuKXtuLkJST1dTRVJfREVGQVVMVD0iYnJvd3Nlcl9kZWZhdWx0IixuLkxJR0hUPSJsaWdodCIsbi5EQVJLPSJkYXJrIn0pKERnfHwoRGc9e30pKTt2YXIgcW90PSJfdGJfZ2xvYmFsX3NldHRpbmdzLnRpbWVzZXJpZXMiLFpvdD0iX3RiX2dsb2JhbF9zZXR0aW5ncyIsWG90PSJub3RpZmljYXRpb25MYXN0UmVhZFRpbWVzdGFtcCIsbnA9Y2xhc3N7fTtucC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxucCl9O25wLlx1MDI3NXByb3Y9UHQoe3Rva2VuOm5wLGZhY3Rvcnk6bnAuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5wLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBvcD1jbGFzc3t9O29wLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9wKX07b3AuXHUwMjc1cHJvdj1QdCh7dG9rZW46b3AsZmFjdG9yeTpvcC5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob3AsW3t0eXBlOlN0fV0sbnVsbCxudWxsKX0pKCk7dmFyIGlwPWNsYXNzIGV4dGVuZHMgb3B7dWlUb0JhY2tlbmQodCl7bGV0IGU9e307cmV0dXJuIHQuaWdub3JlT3V0bGllcnMhPT12b2lkIDAmJihlLmlnbm9yZU91dGxpZXJzPXQuaWdub3JlT3V0bGllcnMpLHQuc2NhbGFyU21vb3RoaW5nIT09dm9pZCAwJiYoZS5zY2FsYXJTbW9vdGhpbmc9dC5zY2FsYXJTbW9vdGhpbmcpLHQudG9vbHRpcFNvcnRTdHJpbmchPT12b2lkIDAmJihlLnRvb2x0aXBTb3J0PXQudG9vbHRpcFNvcnRTdHJpbmcpLHQuYXV0b1JlbG9hZCE9PXZvaWQgMCYmKGUuYXV0b1JlbG9hZD10LmF1dG9SZWxvYWQpLHQuYXV0b1JlbG9hZFBlcmlvZEluTXMhPT12b2lkIDAmJihlLmF1dG9SZWxvYWRQZXJpb2RJbk1zPXQuYXV0b1JlbG9hZFBlcmlvZEluTXMpLHQucGFnZVNpemUhPT12b2lkIDAmJihlLnBhZ2luYXRpb25TaXplPXQucGFnZVNpemUpLHQudGhlbWVPdmVycmlkZSE9PXZvaWQgMCYmKGUudGhlbWU9dC50aGVtZU92ZXJyaWRlKSx0Lm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMhPT12b2lkIDAmJihlLm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM9dC5ub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zKSx0LnNpZGVCYXJXaWR0aEluUGVyY2VudCE9PXZvaWQgMCYmKGUuc2lkZUJhcldpZHRoSW5QZXJjZW50PXQuc2lkZUJhcldpZHRoSW5QZXJjZW50KSx0LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQhPT12b2lkIDAmJihlLnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ9dC50aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkKSx0LnRpbWVTZXJpZXNDYXJkTWluV2lkdGghPT12b2lkIDAmJihlLnRpbWVTZXJpZXNDYXJkTWluV2lkdGg9dC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoKSx0LnN0ZXBTZWxlY3RvckVuYWJsZWQhPT12b2lkIDAmJihlLnN0ZXBTZWxlY3RvckVuYWJsZWQ9dC5zdGVwU2VsZWN0b3JFbmFibGVkKSx0LnJhbmdlU2VsZWN0aW9uRW5hYmxlZCE9PXZvaWQgMCYmKGUucmFuZ2VTZWxlY3Rpb25FbmFibGVkPXQucmFuZ2VTZWxlY3Rpb25FbmFibGVkKSx0LmxpbmtlZFRpbWVFbmFibGVkIT09dm9pZCAwJiYoZS5saW5rZWRUaW1lRW5hYmxlZD10LmxpbmtlZFRpbWVFbmFibGVkKSxlfWJhY2tlbmRUb1VpKHQpe2xldCBlPXt9O3JldHVybiB0Lmhhc093blByb3BlcnR5KCJzY2FsYXJTbW9vdGhpbmciKSYmdHlwZW9mIHQuc2NhbGFyU21vb3RoaW5nPT0ibnVtYmVyIiYmKGUuc2NhbGFyU21vb3RoaW5nPXQuc2NhbGFyU21vb3RoaW5nKSx0Lmhhc093blByb3BlcnR5KCJpZ25vcmVPdXRsaWVycyIpJiZ0eXBlb2YgdC5pZ25vcmVPdXRsaWVycz09ImJvb2xlYW4iJiYoZS5pZ25vcmVPdXRsaWVycz10Lmlnbm9yZU91dGxpZXJzKSx0Lmhhc093blByb3BlcnR5KCJ0b29sdGlwU29ydCIpJiZ0eXBlb2YgdC50b29sdGlwU29ydD09InN0cmluZyImJihlLnRvb2x0aXBTb3J0U3RyaW5nPXQudG9vbHRpcFNvcnQpLHQuaGFzT3duUHJvcGVydHkoImF1dG9SZWxvYWQiKSYmdHlwZW9mIHQuYXV0b1JlbG9hZD09ImJvb2xlYW4iJiYoZS5hdXRvUmVsb2FkPXQuYXV0b1JlbG9hZCksdC5oYXNPd25Qcm9wZXJ0eSgiYXV0b1JlbG9hZFBlcmlvZEluTXMiKSYmdHlwZW9mIHQuYXV0b1JlbG9hZFBlcmlvZEluTXM9PSJudW1iZXIiJiYoZS5hdXRvUmVsb2FkUGVyaW9kSW5Ncz10LmF1dG9SZWxvYWRQZXJpb2RJbk1zKSx0Lmhhc093blByb3BlcnR5KCJwYWdpbmF0aW9uU2l6ZSIpJiZ0eXBlb2YgdC5wYWdpbmF0aW9uU2l6ZT09Im51bWJlciImJihlLnBhZ2VTaXplPXQucGFnaW5hdGlvblNpemUpLHQuaGFzT3duUHJvcGVydHkoInRoZW1lIikmJnR5cGVvZiB0LnRoZW1lPT0ic3RyaW5nIiYmbmV3IFNldChPYmplY3QudmFsdWVzKERnKSkuaGFzKHQudGhlbWUpJiYoZS50aGVtZU92ZXJyaWRlPXQudGhlbWUpLHQuaGFzT3duUHJvcGVydHkoIm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXMiKSYmdHlwZW9mIHQubm90aWZpY2F0aW9uTGFzdFJlYWRUaW1lSW5Ncz09Im51bWJlciImJihlLm5vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM9dC5ub3RpZmljYXRpb25MYXN0UmVhZFRpbWVJbk1zKSx0Lmhhc093blByb3BlcnR5KCJzaWRlQmFyV2lkdGhJblBlcmNlbnQiKSYmdHlwZW9mIHQuc2lkZUJhcldpZHRoSW5QZXJjZW50PT0ibnVtYmVyIiYmKGUuc2lkZUJhcldpZHRoSW5QZXJjZW50PXQuc2lkZUJhcldpZHRoSW5QZXJjZW50KSx0Lmhhc093blByb3BlcnR5KCJ0aW1lU2VyaWVzU2V0dGluZ3NQYW5lT3BlbmVkIikmJnR5cGVvZiB0LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ9PSJib29sZWFuIiYmKGUudGltZVNlcmllc1NldHRpbmdzUGFuZU9wZW5lZD10LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQpLHQuaGFzT3duUHJvcGVydHkoInRpbWVTZXJpZXNDYXJkTWluV2lkdGgiKSYmdHlwZW9mIHQudGltZVNlcmllc0NhcmRNaW5XaWR0aD09Im51bWJlciImJihlLnRpbWVTZXJpZXNDYXJkTWluV2lkdGg9dC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoKSx0Lmhhc093blByb3BlcnR5KCJzdGVwU2VsZWN0b3JFbmFibGVkIikmJnR5cGVvZiB0LnN0ZXBTZWxlY3RvckVuYWJsZWQ9PSJib29sZWFuIiYmKGUuc3RlcFNlbGVjdG9yRW5hYmxlZD10LnN0ZXBTZWxlY3RvckVuYWJsZWQpLHQuaGFzT3duUHJvcGVydHkoInJhbmdlU2VsZWN0aW9uRW5hYmxlZCIpJiZ0eXBlb2YgdC5yYW5nZVNlbGVjdGlvbkVuYWJsZWQ9PSJib29sZWFuIiYmKGUucmFuZ2VTZWxlY3Rpb25FbmFibGVkPXQucmFuZ2VTZWxlY3Rpb25FbmFibGVkKSx0Lmhhc093blByb3BlcnR5KCJsaW5rZWRUaW1lRW5hYmxlZCIpJiZ0eXBlb2YgdC5saW5rZWRUaW1lRW5hYmxlZD09ImJvb2xlYW4iJiYoZS5saW5rZWRUaW1lRW5hYmxlZD10LmxpbmtlZFRpbWVFbmFibGVkKSxlfX07aXAuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihpcCkpKShlfHxpcCl9fSgpO2lwLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmlwLGZhY3Rvcnk6aXAuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGlwLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBmTT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbnZlcnRlcj10fXNldFNldHRpbmdzKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KT90aGlzLmdldFNldHRpbmdzKCkucGlwZShhbihlPT57bG9jYWxTdG9yYWdlLnNldEl0ZW0oWm90LEpTT04uc3RyaW5naWZ5KHRoaXMuY29udmVydGVyLnVpVG9CYWNrZW5kKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx0KSkpKSxsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShxb3QpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFhvdCl9KSxHKCgpPT57fSkpOk5zfWRlc2VyaWFsaXplKHQpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaChlKXtyZXR1cm57fX19Z2V0U2V0dGluZ3MoKXt2YXIgdCxlO2xldCBvPWxvY2FsU3RvcmFnZS5nZXRJdGVtKFhvdCksaT10aGlzLmNvbnZlcnRlci5iYWNrZW5kVG9VaSh0aGlzLmRlc2VyaWFsaXplKG8/SlNPTi5zdHJpbmdpZnkoe25vdGlmaWNhdGlvbkxhc3RSZWFkVGltZUluTXM6TnVtYmVyKG8pfSk6Int9IikpLGE9dGhpcy5jb252ZXJ0ZXIuYmFja2VuZFRvVWkodGhpcy5kZXNlcmlhbGl6ZSgodD1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShxb3QpKSE9PW51bGwmJnQhPT12b2lkIDA/dDoie30iKSkscj10aGlzLmNvbnZlcnRlci5iYWNrZW5kVG9VaSh0aGlzLmRlc2VyaWFsaXplKChlPWxvY2FsU3RvcmFnZS5nZXRJdGVtKFpvdCkpIT09bnVsbCYmZSE9PXZvaWQgMD9lOiJ7fSIpKTtyZXR1cm4gZG4oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksYSkscikpfX07Zk0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Zk0pKEkob3ApKX07Zk0uXHUwMjc1cHJvdj1QdCh7dG9rZW46Zk0sZmFjdG9yeTpmTS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZk0sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6b3B9XX0sbnVsbCl9KSgpO3ZhciB4Xz1jbGFzc3t9O3hfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHhfKX07eF8uXHUwMjc1bW9kPXEoe3R5cGU6eF99KTt4Xy5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlt7cHJvdmlkZTpucCx1c2VDbGFzczpmTX0saXAse3Byb3ZpZGU6b3AsdXNlRXhpc3Rpbmc6aXB9XX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh4Xyxbe3R5cGU6WixhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTpucCx1c2VDbGFzczpmTX0saXAse3Byb3ZpZGU6b3AsdXNlRXhpc3Rpbmc6aXB9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIHBNPU50KCJbUGVyc2lzdGVudCBTZXR0aW5nc10gR2xvYmFsIFNldHRpbmdzIExvYWRlZCIsYmUoKSk7dmFyIFFvdD1OdCgiW1BlcnNpc3RlbnQgU2V0dGluZ3NdIEVmZmVjdHMgSW5pdCIpLFNTdD01MDAsZE09Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmNvbmZpZ01vZHVsZT1vLHRoaXMuZGF0YVNvdXJjZT1pLHRoaXMuaW5pdGlhbGl6ZUFuZFVwZGF0ZVNldHRpbmdzJD1NYSgoKT0+e2xldCBhPXRoaXMuYWN0aW9ucyQucGlwZShGbyhRb3QpLFVuKCgpPT50aGlzLmRhdGFTb3VyY2UuZ2V0U2V0dGluZ3MoKSksYW4ocj0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gocE0oe3BhcnRpYWxTZXR0aW5nczpyfSkpfSksb18oMCksVW4oKCk9PntsZXQgcj10aGlzLmNvbmZpZ01vZHVsZS5nZXRHbG9iYWxTZXR0aW5nU2VsZWN0b3JzKCkubWFwKHM9PnRoaXMuc3RvcmUuc2VsZWN0KHMpLnBpcGUoWG8oKGwsYyk9PntsZXQgbT1PYmplY3QudmFsdWVzKGwpLGY9T2JqZWN0LnZhbHVlcyhjKTtyZXR1cm4gbS5sZW5ndGg9PT1mLmxlbmd0aCYmbS5ldmVyeSgocCxnKT0+cD09PWZbZ10pfSksVkMoMSkpKTtyZXR1cm4geW4oLi4ucil9KSxCYygpKTtyZXR1cm4gYS5waXBlKEI3KGEucGlwZShscihTU3QpKSksVW4ocj0+e2xldCBzPXt9O2ZvcihsZXQgbCBvZiByKU9iamVjdC5hc3NpZ24ocyxsKTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLnNldFNldHRpbmdzKHMpfSkpfSx7ZGlzcGF0Y2g6ITF9KX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiBRb3QoKX19O2RNLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGRNKShJKFRvKSxJKHN0KSxJKE5uKSxJKG5wKSl9O2RNLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmRNLGZhY3Rvcnk6ZE0uXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGRNLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlRvfSx7dHlwZTpzdH0se3R5cGU6Tm59LHt0eXBlOm5wfV19LG51bGwpfSkoKTt2YXIgYXA9Y2xhc3N7fTthcC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxhcCl9O2FwLlx1MDI3NW1vZD1xKHt0eXBlOmFwfSk7YXAuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbTm5dLGltcG9ydHM6W1tIby5mb3JGZWF0dXJlKFtkTV0pLHhfXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYXAsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0hvLmZvckZlYXR1cmUoW2RNXSkseF9dLHByb3ZpZGVyczpbTm5dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGFwLHtpbXBvcnRzOltxaSx4X119KX0pKCk7dmFyIGt2PWNsYXNze30sTnY9Y2xhc3N7fTt2YXIgSWc9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5ub3JtYWxpemVkTmFtZXM9bmV3IE1hcCx0aGlzLmxhenlVcGRhdGU9bnVsbCx0P3R5cGVvZiB0PT0ic3RyaW5nIj90aGlzLmxhenlJbml0PSgpPT57dGhpcy5oZWFkZXJzPW5ldyBNYXAsdC5zcGxpdChgCmApLmZvckVhY2goZT0+e2xldCBvPWUuaW5kZXhPZigiOiIpO2lmKG8+MCl7bGV0IGk9ZS5zbGljZSgwLG8pLGE9aS50b0xvd2VyQ2FzZSgpLHI9ZS5zbGljZShvKzEpLnRyaW0oKTt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoaSxhKSx0aGlzLmhlYWRlcnMuaGFzKGEpP3RoaXMuaGVhZGVycy5nZXQoYSkucHVzaChyKTp0aGlzLmhlYWRlcnMuc2V0KGEsW3JdKX19KX06dGhpcy5sYXp5SW5pdD0oKT0+e3RoaXMuaGVhZGVycz1uZXcgTWFwLE9iamVjdC5rZXlzKHQpLmZvckVhY2goZT0+e2xldCBvPXRbZV0saT1lLnRvTG93ZXJDYXNlKCk7dHlwZW9mIG89PSJzdHJpbmciJiYobz1bb10pLG8ubGVuZ3RoPjAmJih0aGlzLmhlYWRlcnMuc2V0KGksbyksdGhpcy5tYXliZVNldE5vcm1hbGl6ZWROYW1lKGUsaSkpfSl9OnRoaXMuaGVhZGVycz1uZXcgTWFwfWhhcyh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5oZWFkZXJzLmhhcyh0LnRvTG93ZXJDYXNlKCkpfWdldCh0KXt0aGlzLmluaXQoKTtsZXQgZT10aGlzLmhlYWRlcnMuZ2V0KHQudG9Mb3dlckNhc2UoKSk7cmV0dXJuIGUmJmUubGVuZ3RoPjA/ZVswXTpudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1lcy52YWx1ZXMoKSl9Z2V0QWxsKHQpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmhlYWRlcnMuZ2V0KHQudG9Mb3dlckNhc2UoKSl8fG51bGx9YXBwZW5kKHQsZSl7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6dCx2YWx1ZTplLG9wOiJhIn0pfXNldCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOnQsdmFsdWU6ZSxvcDoicyJ9KX1kZWxldGUodCxlKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTp0LHZhbHVlOmUsb3A6ImQifSl9bWF5YmVTZXROb3JtYWxpemVkTmFtZSh0LGUpe3RoaXMubm9ybWFsaXplZE5hbWVzLmhhcyhlKXx8dGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KGUsdCl9aW5pdCgpe3RoaXMubGF6eUluaXQmJih0aGlzLmxhenlJbml0IGluc3RhbmNlb2YgSWc/dGhpcy5jb3B5RnJvbSh0aGlzLmxhenlJbml0KTp0aGlzLmxhenlJbml0KCksdGhpcy5sYXp5SW5pdD1udWxsLHRoaXMubGF6eVVwZGF0ZSYmKHRoaXMubGF6eVVwZGF0ZS5mb3JFYWNoKHQ9PnRoaXMuYXBwbHlVcGRhdGUodCkpLHRoaXMubGF6eVVwZGF0ZT1udWxsKSl9Y29weUZyb20odCl7dC5pbml0KCksQXJyYXkuZnJvbSh0LmhlYWRlcnMua2V5cygpKS5mb3JFYWNoKGU9Pnt0aGlzLmhlYWRlcnMuc2V0KGUsdC5oZWFkZXJzLmdldChlKSksdGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KGUsdC5ub3JtYWxpemVkTmFtZXMuZ2V0KGUpKX0pfWNsb25lKHQpe2xldCBlPW5ldyBJZztyZXR1cm4gZS5sYXp5SW5pdD0hIXRoaXMubGF6eUluaXQmJnRoaXMubGF6eUluaXQgaW5zdGFuY2VvZiBJZz90aGlzLmxhenlJbml0OnRoaXMsZS5sYXp5VXBkYXRlPSh0aGlzLmxhenlVcGRhdGV8fFtdKS5jb25jYXQoW3RdKSxlfWFwcGx5VXBkYXRlKHQpe2xldCBlPXQubmFtZS50b0xvd2VyQ2FzZSgpO3N3aXRjaCh0Lm9wKXtjYXNlImEiOmNhc2UicyI6bGV0IG89dC52YWx1ZTtpZih0eXBlb2Ygbz09InN0cmluZyImJihvPVtvXSksby5sZW5ndGg9PT0wKXJldHVybjt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUodC5uYW1lLGUpO2xldCBpPSh0Lm9wPT09ImEiP3RoaXMuaGVhZGVycy5nZXQoZSk6dm9pZCAwKXx8W107aS5wdXNoKC4uLm8pLHRoaXMuaGVhZGVycy5zZXQoZSxpKTticmVhaztjYXNlImQiOmxldCBhPXQudmFsdWU7aWYoIWEpdGhpcy5oZWFkZXJzLmRlbGV0ZShlKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5kZWxldGUoZSk7ZWxzZXtsZXQgcj10aGlzLmhlYWRlcnMuZ2V0KGUpO2lmKCFyKXJldHVybjtyPXIuZmlsdGVyKHM9PmEuaW5kZXhPZihzKT09PS0xKSxyLmxlbmd0aD09PTA/KHRoaXMuaGVhZGVycy5kZWxldGUoZSksdGhpcy5ub3JtYWxpemVkTmFtZXMuZGVsZXRlKGUpKTp0aGlzLmhlYWRlcnMuc2V0KGUscil9YnJlYWt9fWZvckVhY2godCl7dGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1lcy5rZXlzKCkpLmZvckVhY2goZT0+dCh0aGlzLm5vcm1hbGl6ZWROYW1lcy5nZXQoZSksdGhpcy5oZWFkZXJzLmdldChlKSkpfX07dmFyIGtqPWNsYXNze2VuY29kZUtleSh0KXtyZXR1cm4gS290KHQpfWVuY29kZVZhbHVlKHQpe3JldHVybiBLb3QodCl9ZGVjb2RlS2V5KHQpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQodCl9ZGVjb2RlVmFsdWUodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh0KX19O2Z1bmN0aW9uIFJTdChuLHQpe2xldCBlPW5ldyBNYXA7cmV0dXJuIG4ubGVuZ3RoPjAmJm4ucmVwbGFjZSgvXlw/LywiIikuc3BsaXQoIiYiKS5mb3JFYWNoKGk9PntsZXQgYT1pLmluZGV4T2YoIj0iKSxbcixzXT1hPT0tMT9bdC5kZWNvZGVLZXkoaSksIiJdOlt0LmRlY29kZUtleShpLnNsaWNlKDAsYSkpLHQuZGVjb2RlVmFsdWUoaS5zbGljZShhKzEpKV0sbD1lLmdldChyKXx8W107bC5wdXNoKHMpLGUuc2V0KHIsbCl9KSxlfXZhciBFU3Q9LyUoXGRbYS1mMC05XSkvZ2ksa1N0PXs0MDoiQCIsIjNBIjoiOiIsMjQ6IiQiLCIyQyI6IiwiLCIzQiI6IjsiLCIyQiI6IisiLCIzRCI6Ij0iLCIzRiI6Ij8iLCIyRiI6Ii8ifTtmdW5jdGlvbiBLb3Qobil7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChuKS5yZXBsYWNlKEVTdCwodCxlKT0+e3ZhciBvO3JldHVybihvPWtTdFtlXSkhPT1udWxsJiZvIT09dm9pZCAwP286dH0pfWZ1bmN0aW9uIEpvdChuKXtyZXR1cm5gJHtufWB9dmFyIFhiPWNsYXNze2NvbnN0cnVjdG9yKHQ9e30pe2lmKHRoaXMudXBkYXRlcz1udWxsLHRoaXMuY2xvbmVGcm9tPW51bGwsdGhpcy5lbmNvZGVyPXQuZW5jb2Rlcnx8bmV3IGtqLHQuZnJvbVN0cmluZyl7aWYodC5mcm9tT2JqZWN0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBmcm9tU3RyaW5nIGFuZCBmcm9tT2JqZWN0LiIpO3RoaXMubWFwPVJTdCh0LmZyb21TdHJpbmcsdGhpcy5lbmNvZGVyKX1lbHNlIHQuZnJvbU9iamVjdD8odGhpcy5tYXA9bmV3IE1hcCxPYmplY3Qua2V5cyh0LmZyb21PYmplY3QpLmZvckVhY2goZT0+e2xldCBvPXQuZnJvbU9iamVjdFtlXTt0aGlzLm1hcC5zZXQoZSxBcnJheS5pc0FycmF5KG8pP286W29dKX0pKTp0aGlzLm1hcD1udWxsfWhhcyh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuaGFzKHQpfWdldCh0KXt0aGlzLmluaXQoKTtsZXQgZT10aGlzLm1hcC5nZXQodCk7cmV0dXJuIGU/ZVswXTpudWxsfWdldEFsbCh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuZ2V0KHQpfHxudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpfWFwcGVuZCh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6ImEifSl9YXBwZW5kQWxsKHQpe2xldCBlPVtdO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKG89PntsZXQgaT10W29dO0FycmF5LmlzQXJyYXkoaSk/aS5mb3JFYWNoKGE9PntlLnB1c2goe3BhcmFtOm8sdmFsdWU6YSxvcDoiYSJ9KX0pOmUucHVzaCh7cGFyYW06byx2YWx1ZTppLG9wOiJhIn0pfSksdGhpcy5jbG9uZShlKX1zZXQodCxlKXtyZXR1cm4gdGhpcy5jbG9uZSh7cGFyYW06dCx2YWx1ZTplLG9wOiJzIn0pfWRlbGV0ZSh0LGUpe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOmUsb3A6ImQifSl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5rZXlzKCkubWFwKHQ9PntsZXQgZT10aGlzLmVuY29kZXIuZW5jb2RlS2V5KHQpO3JldHVybiB0aGlzLm1hcC5nZXQodCkubWFwKG89PmUrIj0iK3RoaXMuZW5jb2Rlci5lbmNvZGVWYWx1ZShvKSkuam9pbigiJiIpfSkuZmlsdGVyKHQ9PnQhPT0iIikuam9pbigiJiIpfWNsb25lKHQpe2xldCBlPW5ldyBYYih7ZW5jb2Rlcjp0aGlzLmVuY29kZXJ9KTtyZXR1cm4gZS5jbG9uZUZyb209dGhpcy5jbG9uZUZyb218fHRoaXMsZS51cGRhdGVzPSh0aGlzLnVwZGF0ZXN8fFtdKS5jb25jYXQodCksZX1pbml0KCl7dGhpcy5tYXA9PT1udWxsJiYodGhpcy5tYXA9bmV3IE1hcCksdGhpcy5jbG9uZUZyb20hPT1udWxsJiYodGhpcy5jbG9uZUZyb20uaW5pdCgpLHRoaXMuY2xvbmVGcm9tLmtleXMoKS5mb3JFYWNoKHQ9PnRoaXMubWFwLnNldCh0LHRoaXMuY2xvbmVGcm9tLm1hcC5nZXQodCkpKSx0aGlzLnVwZGF0ZXMuZm9yRWFjaCh0PT57c3dpdGNoKHQub3Ape2Nhc2UiYSI6Y2FzZSJzIjpsZXQgZT0odC5vcD09PSJhIj90aGlzLm1hcC5nZXQodC5wYXJhbSk6dm9pZCAwKXx8W107ZS5wdXNoKEpvdCh0LnZhbHVlKSksdGhpcy5tYXAuc2V0KHQucGFyYW0sZSk7YnJlYWs7Y2FzZSJkIjppZih0LnZhbHVlIT09dm9pZCAwKXtsZXQgbz10aGlzLm1hcC5nZXQodC5wYXJhbSl8fFtdLGk9by5pbmRleE9mKEpvdCh0LnZhbHVlKSk7aSE9PS0xJiZvLnNwbGljZShpLDEpLG8ubGVuZ3RoPjA/dGhpcy5tYXAuc2V0KHQucGFyYW0sbyk6dGhpcy5tYXAuZGVsZXRlKHQucGFyYW0pfWVsc2V7dGhpcy5tYXAuZGVsZXRlKHQucGFyYW0pO2JyZWFrfX19KSx0aGlzLmNsb25lRnJvbT10aGlzLnVwZGF0ZXM9bnVsbCl9fTt2YXIgTmo9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfXNldCh0LGUpe3JldHVybiB0aGlzLm1hcC5zZXQodCxlKSx0aGlzfWdldCh0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHQpfHx0aGlzLm1hcC5zZXQodCx0LmRlZmF1bHRWYWx1ZSgpKSx0aGlzLm1hcC5nZXQodCl9ZGVsZXRlKHQpe3JldHVybiB0aGlzLm1hcC5kZWxldGUodCksdGhpc31rZXlzKCl7cmV0dXJuIHRoaXMubWFwLmtleXMoKX19O2Z1bmN0aW9uIE5TdChuKXtzd2l0Y2gobil7Y2FzZSJERUxFVEUiOmNhc2UiR0VUIjpjYXNlIkhFQUQiOmNhc2UiT1BUSU9OUyI6Y2FzZSJKU09OUCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19ZnVuY3Rpb24gJG90KG4pe3JldHVybiB0eXBlb2YgQXJyYXlCdWZmZXIhPSJ1bmRlZmluZWQiJiZuIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ9ZnVuY3Rpb24gdGl0KG4pe3JldHVybiB0eXBlb2YgQmxvYiE9InVuZGVmaW5lZCImJm4gaW5zdGFuY2VvZiBCbG9ifWZ1bmN0aW9uIGVpdChuKXtyZXR1cm4gdHlwZW9mIEZvcm1EYXRhIT0idW5kZWZpbmVkIiYmbiBpbnN0YW5jZW9mIEZvcm1EYXRhfWZ1bmN0aW9uIFRTdChuKXtyZXR1cm4gdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyE9InVuZGVmaW5lZCImJm4gaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXN9dmFyIEV2PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMudXJsPWUsdGhpcy5ib2R5PW51bGwsdGhpcy5yZXBvcnRQcm9ncmVzcz0hMSx0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnJlc3BvbnNlVHlwZT0ianNvbiIsdGhpcy5tZXRob2Q9dC50b1VwcGVyQ2FzZSgpO2xldCBhO2lmKE5TdCh0aGlzLm1ldGhvZCl8fCEhaT8odGhpcy5ib2R5PW8hPT12b2lkIDA/bzpudWxsLGE9aSk6YT1vLGEmJih0aGlzLnJlcG9ydFByb2dyZXNzPSEhYS5yZXBvcnRQcm9ncmVzcyx0aGlzLndpdGhDcmVkZW50aWFscz0hIWEud2l0aENyZWRlbnRpYWxzLGEucmVzcG9uc2VUeXBlJiYodGhpcy5yZXNwb25zZVR5cGU9YS5yZXNwb25zZVR5cGUpLGEuaGVhZGVycyYmKHRoaXMuaGVhZGVycz1hLmhlYWRlcnMpLGEuY29udGV4dCYmKHRoaXMuY29udGV4dD1hLmNvbnRleHQpLGEucGFyYW1zJiYodGhpcy5wYXJhbXM9YS5wYXJhbXMpKSx0aGlzLmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9bmV3IElnKSx0aGlzLmNvbnRleHR8fCh0aGlzLmNvbnRleHQ9bmV3IE5qKSwhdGhpcy5wYXJhbXMpdGhpcy5wYXJhbXM9bmV3IFhiLHRoaXMudXJsV2l0aFBhcmFtcz1lO2Vsc2V7bGV0IHI9dGhpcy5wYXJhbXMudG9TdHJpbmcoKTtpZihyLmxlbmd0aD09PTApdGhpcy51cmxXaXRoUGFyYW1zPWU7ZWxzZXtsZXQgcz1lLmluZGV4T2YoIj8iKSxsPXM9PT0tMT8iPyI6czxlLmxlbmd0aC0xPyImIjoiIjt0aGlzLnVybFdpdGhQYXJhbXM9ZStsK3J9fX1zZXJpYWxpemVCb2R5KCl7cmV0dXJuIHRoaXMuYm9keT09PW51bGw/bnVsbDokb3QodGhpcy5ib2R5KXx8dGl0KHRoaXMuYm9keSl8fGVpdCh0aGlzLmJvZHkpfHxUU3QodGhpcy5ib2R5KXx8dHlwZW9mIHRoaXMuYm9keT09InN0cmluZyI/dGhpcy5ib2R5OnRoaXMuYm9keSBpbnN0YW5jZW9mIFhiP3RoaXMuYm9keS50b1N0cmluZygpOnR5cGVvZiB0aGlzLmJvZHk9PSJvYmplY3QifHx0eXBlb2YgdGhpcy5ib2R5PT0iYm9vbGVhbiJ8fEFycmF5LmlzQXJyYXkodGhpcy5ib2R5KT9KU09OLnN0cmluZ2lmeSh0aGlzLmJvZHkpOnRoaXMuYm9keS50b1N0cmluZygpfWRldGVjdENvbnRlbnRUeXBlSGVhZGVyKCl7cmV0dXJuIHRoaXMuYm9keT09PW51bGx8fGVpdCh0aGlzLmJvZHkpP251bGw6dGl0KHRoaXMuYm9keSk/dGhpcy5ib2R5LnR5cGV8fG51bGw6JG90KHRoaXMuYm9keSk/bnVsbDp0eXBlb2YgdGhpcy5ib2R5PT0ic3RyaW5nIj8idGV4dC9wbGFpbiI6dGhpcy5ib2R5IGluc3RhbmNlb2YgWGI/ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Ijp0eXBlb2YgdGhpcy5ib2R5PT0ib2JqZWN0Inx8dHlwZW9mIHRoaXMuYm9keT09Im51bWJlciJ8fHR5cGVvZiB0aGlzLmJvZHk9PSJib29sZWFuIj8iYXBwbGljYXRpb24vanNvbiI6bnVsbH1jbG9uZSh0PXt9KXt2YXIgZTtsZXQgbz10Lm1ldGhvZHx8dGhpcy5tZXRob2QsaT10LnVybHx8dGhpcy51cmwsYT10LnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUscj10LmJvZHkhPT12b2lkIDA/dC5ib2R5OnRoaXMuYm9keSxzPXQud2l0aENyZWRlbnRpYWxzIT09dm9pZCAwP3Qud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLGw9dC5yZXBvcnRQcm9ncmVzcyE9PXZvaWQgMD90LnJlcG9ydFByb2dyZXNzOnRoaXMucmVwb3J0UHJvZ3Jlc3MsYz10LmhlYWRlcnN8fHRoaXMuaGVhZGVycyxtPXQucGFyYW1zfHx0aGlzLnBhcmFtcyxmPShlPXQuY29udGV4dCkhPT1udWxsJiZlIT09dm9pZCAwP2U6dGhpcy5jb250ZXh0O3JldHVybiB0LnNldEhlYWRlcnMhPT12b2lkIDAmJihjPU9iamVjdC5rZXlzKHQuc2V0SGVhZGVycykucmVkdWNlKChwLGcpPT5wLnNldChnLHQuc2V0SGVhZGVyc1tnXSksYykpLHQuc2V0UGFyYW1zJiYobT1PYmplY3Qua2V5cyh0LnNldFBhcmFtcykucmVkdWNlKChwLGcpPT5wLnNldChnLHQuc2V0UGFyYW1zW2ddKSxtKSksbmV3IEV2KG8saSxyLHtwYXJhbXM6bSxoZWFkZXJzOmMsY29udGV4dDpmLHJlcG9ydFByb2dyZXNzOmwscmVzcG9uc2VUeXBlOmEsd2l0aENyZWRlbnRpYWxzOnN9KX19O3ZhciBOeTsoZnVuY3Rpb24obil7bltuLlNlbnQ9MF09IlNlbnQiLG5bbi5VcGxvYWRQcm9ncmVzcz0xXT0iVXBsb2FkUHJvZ3Jlc3MiLG5bbi5SZXNwb25zZUhlYWRlcj0yXT0iUmVzcG9uc2VIZWFkZXIiLG5bbi5Eb3dubG9hZFByb2dyZXNzPTNdPSJEb3dubG9hZFByb2dyZXNzIixuW24uUmVzcG9uc2U9NF09IlJlc3BvbnNlIixuW24uVXNlcj01XT0iVXNlciJ9KShOeXx8KE55PXt9KSk7dmFyIGJFPWNsYXNze2NvbnN0cnVjdG9yKHQsZT0yMDAsbz0iT0siKXt0aGlzLmhlYWRlcnM9dC5oZWFkZXJzfHxuZXcgSWcsdGhpcy5zdGF0dXM9dC5zdGF0dXMhPT12b2lkIDA/dC5zdGF0dXM6ZSx0aGlzLnN0YXR1c1RleHQ9dC5zdGF0dXNUZXh0fHxvLHRoaXMudXJsPXQudXJsfHxudWxsLHRoaXMub2s9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwfX0sT0U9Y2xhc3MgZXh0ZW5kcyBiRXtjb25zdHJ1Y3Rvcih0PXt9KXtzdXBlcih0KSx0aGlzLnR5cGU9TnkuUmVzcG9uc2VIZWFkZXJ9Y2xvbmUodD17fSl7cmV0dXJuIG5ldyBPRSh7aGVhZGVyczp0LmhlYWRlcnN8fHRoaXMuaGVhZGVycyxzdGF0dXM6dC5zdGF0dXMhPT12b2lkIDA/dC5zdGF0dXM6dGhpcy5zdGF0dXMsc3RhdHVzVGV4dDp0LnN0YXR1c1RleHR8fHRoaXMuc3RhdHVzVGV4dCx1cmw6dC51cmx8fHRoaXMudXJsfHx2b2lkIDB9KX19LFR2PWNsYXNzIGV4dGVuZHMgYkV7Y29uc3RydWN0b3IodD17fSl7c3VwZXIodCksdGhpcy50eXBlPU55LlJlc3BvbnNlLHRoaXMuYm9keT10LmJvZHkhPT12b2lkIDA/dC5ib2R5Om51bGx9Y2xvbmUodD17fSl7cmV0dXJuIG5ldyBUdih7Ym9keTp0LmJvZHkhPT12b2lkIDA/dC5ib2R5OnRoaXMuYm9keSxoZWFkZXJzOnQuaGVhZGVyc3x8dGhpcy5oZWFkZXJzLHN0YXR1czp0LnN0YXR1cyE9PXZvaWQgMD90LnN0YXR1czp0aGlzLnN0YXR1cyxzdGF0dXNUZXh0OnQuc3RhdHVzVGV4dHx8dGhpcy5zdGF0dXNUZXh0LHVybDp0LnVybHx8dGhpcy51cmx8fHZvaWQgMH0pfX0sX009Y2xhc3MgZXh0ZW5kcyBiRXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0LDAsIlVua25vd24gRXJyb3IiKSx0aGlzLm5hbWU9Ikh0dHBFcnJvclJlc3BvbnNlIix0aGlzLm9rPSExLHRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMD90aGlzLm1lc3NhZ2U9YEh0dHAgZmFpbHVyZSBkdXJpbmcgcGFyc2luZyBmb3IgJHt0LnVybHx8Iih1bmtub3duIHVybCkifWA6dGhpcy5tZXNzYWdlPWBIdHRwIGZhaWx1cmUgcmVzcG9uc2UgZm9yICR7dC51cmx8fCIodW5rbm93biB1cmwpIn06ICR7dC5zdGF0dXN9ICR7dC5zdGF0dXNUZXh0fWAsdGhpcy5lcnJvcj10LmVycm9yfHxudWxsfX07ZnVuY3Rpb24gRWoobix0KXtyZXR1cm57Ym9keTp0LGhlYWRlcnM6bi5oZWFkZXJzLGNvbnRleHQ6bi5jb250ZXh0LG9ic2VydmU6bi5vYnNlcnZlLHBhcmFtczpuLnBhcmFtcyxyZXBvcnRQcm9ncmVzczpuLnJlcG9ydFByb2dyZXNzLHJlc3BvbnNlVHlwZTpuLnJlc3BvbnNlVHlwZSx3aXRoQ3JlZGVudGlhbHM6bi53aXRoQ3JlZGVudGlhbHN9fXZhciBGcj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmhhbmRsZXI9dH1yZXF1ZXN0KHQsZSxvPXt9KXtsZXQgaTtpZih0IGluc3RhbmNlb2YgRXYpaT10O2Vsc2V7bGV0IHM7by5oZWFkZXJzIGluc3RhbmNlb2YgSWc/cz1vLmhlYWRlcnM6cz1uZXcgSWcoby5oZWFkZXJzKTtsZXQgbDtvLnBhcmFtcyYmKG8ucGFyYW1zIGluc3RhbmNlb2YgWGI/bD1vLnBhcmFtczpsPW5ldyBYYih7ZnJvbU9iamVjdDpvLnBhcmFtc30pKSxpPW5ldyBFdih0LGUsby5ib2R5IT09dm9pZCAwP28uYm9keTpudWxsLHtoZWFkZXJzOnMsY29udGV4dDpvLmNvbnRleHQscGFyYW1zOmwscmVwb3J0UHJvZ3Jlc3M6by5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6by5yZXNwb25zZVR5cGV8fCJqc29uIix3aXRoQ3JlZGVudGlhbHM6by53aXRoQ3JlZGVudGlhbHN9KX1sZXQgYT1kbihpKS5waXBlKHhOKHM9PnRoaXMuaGFuZGxlci5oYW5kbGUocykpKTtpZih0IGluc3RhbmNlb2YgRXZ8fG8ub2JzZXJ2ZT09PSJldmVudHMiKXJldHVybiBhO2xldCByPWEucGlwZSh1ZShzPT5zIGluc3RhbmNlb2YgVHYpKTtzd2l0Y2goby5vYnNlcnZlfHwiYm9keSIpe2Nhc2UiYm9keSI6c3dpdGNoKGkucmVzcG9uc2VUeXBlKXtjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4gci5waXBlKEcocz0+e2lmKHMuYm9keSE9PW51bGwmJiEocy5ib2R5IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGFuIEFycmF5QnVmZmVyLiIpO3JldHVybiBzLmJvZHl9KSk7Y2FzZSJibG9iIjpyZXR1cm4gci5waXBlKEcocz0+e2lmKHMuYm9keSE9PW51bGwmJiEocy5ib2R5IGluc3RhbmNlb2YgQmxvYikpdGhyb3cgbmV3IEVycm9yKCJSZXNwb25zZSBpcyBub3QgYSBCbG9iLiIpO3JldHVybiBzLmJvZHl9KSk7Y2FzZSJ0ZXh0IjpyZXR1cm4gci5waXBlKEcocz0+e2lmKHMuYm9keSE9PW51bGwmJnR5cGVvZiBzLmJvZHkhPSJzdHJpbmciKXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGEgc3RyaW5nLiIpO3JldHVybiBzLmJvZHl9KSk7Y2FzZSJqc29uIjpkZWZhdWx0OnJldHVybiByLnBpcGUoRyhzPT5zLmJvZHkpKX1jYXNlInJlc3BvbnNlIjpyZXR1cm4gcjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5yZWFjaGFibGU6IHVuaGFuZGxlZCBvYnNlcnZlIHR5cGUgJHtvLm9ic2VydmV9fWApfX1kZWxldGUodCxlPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJERUxFVEUiLHQsZSl9Z2V0KHQsZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiR0VUIix0LGUpfWhlYWQodCxlPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJIRUFEIix0LGUpfWpzb25wKHQsZSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiSlNPTlAiLHQse3BhcmFtczpuZXcgWGIoKS5hcHBlbmQoZSwiSlNPTlBfQ0FMTEJBQ0siKSxvYnNlcnZlOiJib2R5IixyZXNwb25zZVR5cGU6Impzb24ifSl9b3B0aW9ucyh0LGU9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIk9QVElPTlMiLHQsZSl9cGF0Y2godCxlLG89e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIlBBVENIIix0LEVqKG8sZSkpfXBvc3QodCxlLG89e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIlBPU1QiLHQsRWoobyxlKSl9cHV0KHQsZSxvPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJQVVQiLHQsRWoobyxlKSl9fTtGci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxGcikoSShrdikpfTtGci5cdTAyNzVwcm92PVB0KHt0b2tlbjpGcixmYWN0b3J5OkZyLlx1MDI3NWZhY30pO0ZyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a3Z9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRnIsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a3Z9XX0sbnVsbCl9KSgpO3ZhciBUaj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMubmV4dD10LHRoaXMuaW50ZXJjZXB0b3I9ZX1oYW5kbGUodCl7cmV0dXJuIHRoaXMuaW50ZXJjZXB0b3IuaW50ZXJjZXB0KHQsdGhpcy5uZXh0KX19LEF5PW5ldyB5dCgiSFRUUF9JTlRFUkNFUFRPUlMiKSxmUD1jbGFzc3tpbnRlcmNlcHQodCxlKXtyZXR1cm4gZS5oYW5kbGUodCl9fTtmUC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxmUCl9O2ZQLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmZQLGZhY3Rvcnk6ZlAuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGZQLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBBU3Q9MCxEU3Q9IkpTT05QIGluamVjdGVkIHNjcmlwdCBkaWQgbm90IGludm9rZSBjYWxsYmFjay4iLElTdD0iSlNPTlAgcmVxdWVzdHMgbXVzdCB1c2UgSlNPTlAgcmVxdWVzdCBtZXRob2QuIix6U3Q9IkpTT05QIHJlcXVlc3RzIG11c3QgdXNlIEpzb24gcmVzcG9uc2UgdHlwZS4iLEF2PWNsYXNze30scnA9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNhbGxiYWNrTWFwPXQsdGhpcy5kb2N1bWVudD1lLHRoaXMucmVzb2x2ZWRQcm9taXNlPVByb21pc2UucmVzb2x2ZSgpfW5leHRDYWxsYmFjaygpe3JldHVybmBuZ19qc29ucF9jYWxsYmFja18ke0FTdCsrfWB9aGFuZGxlKHQpe2lmKHQubWV0aG9kIT09IkpTT05QIil0aHJvdyBuZXcgRXJyb3IoSVN0KTtpZih0LnJlc3BvbnNlVHlwZSE9PSJqc29uIil0aHJvdyBuZXcgRXJyb3IoelN0KTtyZXR1cm4gbmV3IERuKGU9PntsZXQgbz10aGlzLm5leHRDYWxsYmFjaygpLGk9dC51cmxXaXRoUGFyYW1zLnJlcGxhY2UoLz1KU09OUF9DQUxMQkFDSygmfCQpLyxgPSR7b30kMWApLGE9dGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTthLnNyYz1pO2xldCByPW51bGwscz0hMSxsPSExO3RoaXMuY2FsbGJhY2tNYXBbb109cD0+e2RlbGV0ZSB0aGlzLmNhbGxiYWNrTWFwW29dLCFsJiYocj1wLHM9ITApfTtsZXQgYz0oKT0+e2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpLGRlbGV0ZSB0aGlzLmNhbGxiYWNrTWFwW29dfSxtPXA9PntsfHx0aGlzLnJlc29sdmVkUHJvbWlzZS50aGVuKCgpPT57aWYoYygpLCFzKXtlLmVycm9yKG5ldyBfTSh7dXJsOmksc3RhdHVzOjAsc3RhdHVzVGV4dDoiSlNPTlAgRXJyb3IiLGVycm9yOm5ldyBFcnJvcihEU3QpfSkpO3JldHVybn1lLm5leHQobmV3IFR2KHtib2R5OnIsc3RhdHVzOjIwMCxzdGF0dXNUZXh0OiJPSyIsdXJsOml9KSksZS5jb21wbGV0ZSgpfSl9LGY9cD0+e2x8fChjKCksZS5lcnJvcihuZXcgX00oe2Vycm9yOnAsc3RhdHVzOjAsc3RhdHVzVGV4dDoiSlNPTlAgRXJyb3IiLHVybDppfSkpKX07cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsbSksYS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZiksdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGUubmV4dCh7dHlwZTpOeS5TZW50fSksKCk9PntsPSEwLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsbSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsZiksYygpfX0pfX07cnAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cnApKEkoQXYpLEkoX3QpKX07cnAuXHUwMjc1cHJvdj1QdCh7dG9rZW46cnAsZmFjdG9yeTpycC5cdTAyNzVmYWN9KTtycC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkF2fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhycCxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBdn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO3ZhciBnTT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmpzb25wPXR9aW50ZXJjZXB0KHQsZSl7cmV0dXJuIHQubWV0aG9kPT09IkpTT05QIj90aGlzLmpzb25wLmhhbmRsZSh0KTplLmhhbmRsZSh0KX19O2dNLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGdNKShJKHJwKSl9O2dNLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmdNLGZhY3Rvcnk6Z00uXHUwMjc1ZmFjfSk7Z00uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpycH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhnTSxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpycH1dfSxudWxsKX0pKCk7dmFyIEhTdD0vXlwpXF1cfScsP1xuLztmdW5jdGlvbiBGU3Qobil7cmV0dXJuInJlc3BvbnNlVVJMImluIG4mJm4ucmVzcG9uc2VVUkw/bi5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdChuLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT9uLmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH12YXIgemc9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy54aHJGYWN0b3J5PXR9aGFuZGxlKHQpe2lmKHQubWV0aG9kPT09IkpTT05QIil0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHRlZCB0byBjb25zdHJ1Y3QgSnNvbnAgcmVxdWVzdCB3aXRob3V0IEh0dHBDbGllbnRKc29ucE1vZHVsZSBpbnN0YWxsZWQuIik7cmV0dXJuIG5ldyBEbihlPT57bGV0IG89dGhpcy54aHJGYWN0b3J5LmJ1aWxkKCk7aWYoby5vcGVuKHQubWV0aG9kLHQudXJsV2l0aFBhcmFtcyksdC53aXRoQ3JlZGVudGlhbHMmJihvLndpdGhDcmVkZW50aWFscz0hMCksdC5oZWFkZXJzLmZvckVhY2goKHAsZyk9Pm8uc2V0UmVxdWVzdEhlYWRlcihwLGcuam9pbigiLCIpKSksdC5oZWFkZXJzLmhhcygiQWNjZXB0Iil8fG8uc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IiwiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIiksIXQuaGVhZGVycy5oYXMoIkNvbnRlbnQtVHlwZSIpKXtsZXQgcD10LmRldGVjdENvbnRlbnRUeXBlSGVhZGVyKCk7cCE9PW51bGwmJm8uc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixwKX1pZih0LnJlc3BvbnNlVHlwZSl7bGV0IHA9dC5yZXNwb25zZVR5cGUudG9Mb3dlckNhc2UoKTtvLnJlc3BvbnNlVHlwZT1wIT09Impzb24iP3A6InRleHQifWxldCBpPXQuc2VyaWFsaXplQm9keSgpLGE9bnVsbCxyPSgpPT57aWYoYSE9PW51bGwpcmV0dXJuIGE7bGV0IHA9by5zdGF0dXM9PT0xMjIzPzIwNDpvLnN0YXR1cyxnPW8uc3RhdHVzVGV4dHx8Ik9LIixfPW5ldyBJZyhvLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSxNPUZTdChvKXx8dC51cmw7cmV0dXJuIGE9bmV3IE9FKHtoZWFkZXJzOl8sc3RhdHVzOnAsc3RhdHVzVGV4dDpnLHVybDpNfSksYX0scz0oKT0+e2xldHtoZWFkZXJzOnAsc3RhdHVzOmcsc3RhdHVzVGV4dDpfLHVybDpNfT1yKCkseT1udWxsO2chPT0yMDQmJih5PXR5cGVvZiBvLnJlc3BvbnNlPT0idW5kZWZpbmVkIj9vLnJlc3BvbnNlVGV4dDpvLnJlc3BvbnNlKSxnPT09MCYmKGc9eT8yMDA6MCk7bGV0IE89Zz49MjAwJiZnPDMwMDtpZih0LnJlc3BvbnNlVHlwZT09PSJqc29uIiYmdHlwZW9mIHk9PSJzdHJpbmciKXtsZXQgYj15O3k9eS5yZXBsYWNlKEhTdCwiIik7dHJ5e3k9eSE9PSIiP0pTT04ucGFyc2UoeSk6bnVsbH1jYXRjaChSKXt5PWIsTyYmKE89ITEseT17ZXJyb3I6Uix0ZXh0Onl9KX19Tz8oZS5uZXh0KG5ldyBUdih7Ym9keTp5LGhlYWRlcnM6cCxzdGF0dXM6ZyxzdGF0dXNUZXh0Ol8sdXJsOk18fHZvaWQgMH0pKSxlLmNvbXBsZXRlKCkpOmUuZXJyb3IobmV3IF9NKHtlcnJvcjp5LGhlYWRlcnM6cCxzdGF0dXM6ZyxzdGF0dXNUZXh0Ol8sdXJsOk18fHZvaWQgMH0pKX0sbD1wPT57bGV0e3VybDpnfT1yKCksXz1uZXcgX00oe2Vycm9yOnAsc3RhdHVzOm8uc3RhdHVzfHwwLHN0YXR1c1RleHQ6by5zdGF0dXNUZXh0fHwiVW5rbm93biBFcnJvciIsdXJsOmd8fHZvaWQgMH0pO2UuZXJyb3IoXyl9LGM9ITEsbT1wPT57Y3x8KGUubmV4dChyKCkpLGM9ITApO2xldCBnPXt0eXBlOk55LkRvd25sb2FkUHJvZ3Jlc3MsbG9hZGVkOnAubG9hZGVkfTtwLmxlbmd0aENvbXB1dGFibGUmJihnLnRvdGFsPXAudG90YWwpLHQucmVzcG9uc2VUeXBlPT09InRleHQiJiYhIW8ucmVzcG9uc2VUZXh0JiYoZy5wYXJ0aWFsVGV4dD1vLnJlc3BvbnNlVGV4dCksZS5uZXh0KGcpfSxmPXA9PntsZXQgZz17dHlwZTpOeS5VcGxvYWRQcm9ncmVzcyxsb2FkZWQ6cC5sb2FkZWR9O3AubGVuZ3RoQ29tcHV0YWJsZSYmKGcudG90YWw9cC50b3RhbCksZS5uZXh0KGcpfTtyZXR1cm4gby5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixzKSxvLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixsKSxvLmFkZEV2ZW50TGlzdGVuZXIoInRpbWVvdXQiLGwpLG8uYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGwpLHQucmVwb3J0UHJvZ3Jlc3MmJihvLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixtKSxpIT09bnVsbCYmby51cGxvYWQmJm8udXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixmKSksby5zZW5kKGkpLGUubmV4dCh7dHlwZTpOeS5TZW50fSksKCk9PntvLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixsKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixsKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMpLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGltZW91dCIsbCksdC5yZXBvcnRQcm9ncmVzcyYmKG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLG0pLGkhPT1udWxsJiZvLnVwbG9hZCYmby51cGxvYWQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGYpKSxvLnJlYWR5U3RhdGUhPT1vLkRPTkUmJm8uYWJvcnQoKX19KX19O3pnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHpnKShJKG5QKSl9O3pnLlx1MDI3NXByb3Y9UHQoe3Rva2VuOnpnLGZhY3Rvcnk6emcuXHUwMjc1ZmFjfSk7emcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpuUH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh6Zyxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpuUH1dfSxudWxsKX0pKCk7dmFyIGwzPW5ldyB5dCgiWFNSRl9DT09LSUVfTkFNRSIpLGMzPW5ldyB5dCgiWFNSRl9IRUFERVJfTkFNRSIpLER2PWNsYXNze30sdU09Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuZG9jPXQsdGhpcy5wbGF0Zm9ybT1lLHRoaXMuY29va2llTmFtZT1vLHRoaXMubGFzdENvb2tpZVN0cmluZz0iIix0aGlzLmxhc3RUb2tlbj1udWxsLHRoaXMucGFyc2VDb3VudD0wfWdldFRva2VuKCl7aWYodGhpcy5wbGF0Zm9ybT09PSJzZXJ2ZXIiKXJldHVybiBudWxsO2xldCB0PXRoaXMuZG9jLmNvb2tpZXx8IiI7cmV0dXJuIHQhPT10aGlzLmxhc3RDb29raWVTdHJpbmcmJih0aGlzLnBhcnNlQ291bnQrKyx0aGlzLmxhc3RUb2tlbj1tQSh0LHRoaXMuY29va2llTmFtZSksdGhpcy5sYXN0Q29va2llU3RyaW5nPXQpLHRoaXMubGFzdFRva2VufX07dU0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dU0pKEkoX3QpLEkoWGYpLEkobDMpKX07dU0uXHUwMjc1cHJvdj1QdCh7dG9rZW46dU0sZmFjdG9yeTp1TS5cdTAyNzVmYWN9KTt1TS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltYZl19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbbDNdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModU0sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1hmXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltsM119XX1dfSxudWxsKX0pKCk7dmFyIHNwPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50b2tlblNlcnZpY2U9dCx0aGlzLmhlYWRlck5hbWU9ZX1pbnRlcmNlcHQodCxlKXtsZXQgbz10LnVybC50b0xvd2VyQ2FzZSgpO2lmKHQubWV0aG9kPT09IkdFVCJ8fHQubWV0aG9kPT09IkhFQUQifHxvLnN0YXJ0c1dpdGgoImh0dHA6Ly8iKXx8by5zdGFydHNXaXRoKCJodHRwczovLyIpKXJldHVybiBlLmhhbmRsZSh0KTtsZXQgaT10aGlzLnRva2VuU2VydmljZS5nZXRUb2tlbigpO3JldHVybiBpIT09bnVsbCYmIXQuaGVhZGVycy5oYXModGhpcy5oZWFkZXJOYW1lKSYmKHQ9dC5jbG9uZSh7aGVhZGVyczp0LmhlYWRlcnMuc2V0KHRoaXMuaGVhZGVyTmFtZSxpKX0pKSxlLmhhbmRsZSh0KX19O3NwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHNwKShJKER2KSxJKGMzKSl9O3NwLlx1MDI3NXByb3Y9UHQoe3Rva2VuOnNwLGZhY3Rvcnk6c3AuXHUwMjc1ZmFjfSk7c3AuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpEdn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbYzNdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoc3AsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6RHZ9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2MzXX1dfV19LG51bGwpfSkoKTt2YXIgaE09Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLmJhY2tlbmQ9dCx0aGlzLmluamVjdG9yPWUsdGhpcy5jaGFpbj1udWxsfWhhbmRsZSh0KXtpZih0aGlzLmNoYWluPT09bnVsbCl7bGV0IGU9dGhpcy5pbmplY3Rvci5nZXQoQXksW10pO3RoaXMuY2hhaW49ZS5yZWR1Y2VSaWdodCgobyxpKT0+bmV3IFRqKG8saSksdGhpcy5iYWNrZW5kKX1yZXR1cm4gdGhpcy5jaGFpbi5oYW5kbGUodCl9fTtoTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxoTSkoSShOdiksSSgkZSkpfTtoTS5cdTAyNzVwcm92PVB0KHt0b2tlbjpoTSxmYWN0b3J5OmhNLlx1MDI3NWZhY30pO2hNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TnZ9LHt0eXBlOiRlfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGhNLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk52fSx7dHlwZTokZX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gbml0KCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c9PSJvYmplY3QiP3dpbmRvdzp7fX12YXIgbHA9Y2xhc3N7c3RhdGljIGRpc2FibGUoKXtyZXR1cm57bmdNb2R1bGU6bHAscHJvdmlkZXJzOlt7cHJvdmlkZTpzcCx1c2VDbGFzczpmUH1dfX1zdGF0aWMgd2l0aE9wdGlvbnModD17fSl7cmV0dXJue25nTW9kdWxlOmxwLHByb3ZpZGVyczpbdC5jb29raWVOYW1lP3twcm92aWRlOmwzLHVzZVZhbHVlOnQuY29va2llTmFtZX06W10sdC5oZWFkZXJOYW1lP3twcm92aWRlOmMzLHVzZVZhbHVlOnQuaGVhZGVyTmFtZX06W11dfX19O2xwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGxwKX07bHAuXHUwMjc1bW9kPXEoe3R5cGU6bHB9KTtscC5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltzcCx7cHJvdmlkZTpBeSx1c2VFeGlzdGluZzpzcCxtdWx0aTohMH0se3Byb3ZpZGU6RHYsdXNlQ2xhc3M6dU19LHtwcm92aWRlOmwzLHVzZVZhbHVlOiJYU1JGLVRPS0VOIn0se3Byb3ZpZGU6YzMsdXNlVmFsdWU6IlgtWFNSRi1UT0tFTiJ9XX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhscCxbe3R5cGU6WixhcmdzOlt7cHJvdmlkZXJzOltzcCx7cHJvdmlkZTpBeSx1c2VFeGlzdGluZzpzcCxtdWx0aTohMH0se3Byb3ZpZGU6RHYsdXNlQ2xhc3M6dU19LHtwcm92aWRlOmwzLHVzZVZhbHVlOiJYU1JGLVRPS0VOIn0se3Byb3ZpZGU6YzMsdXNlVmFsdWU6IlgtWFNSRi1UT0tFTiJ9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIEhnPWNsYXNze307SGcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SGcpfTtIZy5cdTAyNzVtb2Q9cSh7dHlwZTpIZ30pO0hnLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W0ZyLHtwcm92aWRlOmt2LHVzZUNsYXNzOmhNfSx6Zyx7cHJvdmlkZTpOdix1c2VFeGlzdGluZzp6Z31dLGltcG9ydHM6W1tscC53aXRoT3B0aW9ucyh7Y29va2llTmFtZToiWFNSRi1UT0tFTiIsaGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIn0pXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSGcsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W2xwLndpdGhPcHRpb25zKHtjb29raWVOYW1lOiJYU1JGLVRPS0VOIixoZWFkZXJOYW1lOiJYLVhTUkYtVE9LRU4ifSldLHByb3ZpZGVyczpbRnIse3Byb3ZpZGU6a3YsdXNlQ2xhc3M6aE19LHpnLHtwcm92aWRlOk52LHVzZUV4aXN0aW5nOnpnfV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoSGcse2ltcG9ydHM6W2xwXX0pfSkoKTt2YXIgVHk9Y2xhc3N7fTtUeS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxUeSl9O1R5Llx1MDI3NW1vZD1xKHt0eXBlOlR5fSk7VHkuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbcnAse3Byb3ZpZGU6QXYsdXNlRmFjdG9yeTpuaXR9LHtwcm92aWRlOkF5LHVzZUNsYXNzOmdNLG11bHRpOiEwfV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVHksW3t0eXBlOlosYXJnczpbe3Byb3ZpZGVyczpbcnAse3Byb3ZpZGU6QXYsdXNlRmFjdG9yeTpuaXR9LHtwcm92aWRlOkF5LHVzZUNsYXNzOmdNLG11bHRpOiEwfV19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBQRT0iZmVhdHVyZSI7dmFyIG0zPUJhKFBFKSxEeT1jdChtMyxuPT5uLmlzRmVhdHVyZUZsYWdzTG9hZGVkKSx0bT1jdChtMyxuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5kZWZhdWx0RmxhZ3MpLG4uZmxhZ092ZXJyaWRlcykpLG9pdD1jdChtMyxuPT5uLmRlZmF1bHRGbGFncyksYUQ9Y3QobTMsbj0+bi5mbGFnT3ZlcnJpZGVzfHx7fSksckQ9Y3QobTMsbj0+bi5tZXRhZGF0YSksc0Q9Y3QobTMsbj0+e2xldCB0PXt9O2ZvcihsZXQgZSBpbiBuLmZsYWdPdmVycmlkZXMpe2xldCBvPW4ubWV0YWRhdGFbZV07by5xdWVyeVBhcmFtT3ZlcnJpZGUmJm8uc2VuZFRvU2VydmVyV2hlbk92ZXJyaWRkZW4mJih0W2VdPW4uZmxhZ092ZXJyaWRlc1tlXSl9cmV0dXJuIHR9KSxpaXQ9Y3QodG0sbj0+bi5pc0F1dG9EYXJrTW9kZUFsbG93ZWQpLFFiPWN0KHRtLG49Pm4uZW5hYmxlRGFya01vZGVPdmVycmlkZSE9PW51bGw/bi5lbmFibGVEYXJrTW9kZU92ZXJyaWRlOm4uZGVmYXVsdEVuYWJsZURhcmtNb2RlKSxsRD1jdCh0bSxuPT5uLmVuYWJsZURhcmtNb2RlT3ZlcnJpZGUpLGFpdD1jdCh0bSxuPT5uLmVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zKSxyaXQ9Y3QodG0sbj0+bi5pbkNvbGFiKSxjRD1jdCh0bSxuPT5uLm1ldHJpY3NJbWFnZVN1cHBvcnRFbmFibGVkKSxzaXQ9Y3QodG0sbj0+bi5lbmFibGVkTGlua2VkVGltZSksbGl0PWN0KHRtLG49Pm4uZm9yY2VTdmcpLGNpdD1jdCh0bSxuPT5uLmVuYWJsZWRTY2FsYXJEYXRhVGFibGUpLG1pdD1jdCh0bSxuPT5uLmVuYWJsZVNob3dGbGFncyksZml0PWN0KHRtLG49Pm4uYWxsb3dSYW5nZVNlbGVjdGlvbikscGl0PWN0KHRtLG49Pm4uZW5hYmxlZFByb3NwZWN0aXZlRm9iKTtmdW5jdGlvbiBMU3Qobil7bGV0IHQ9e307Zm9yKGxldFtlLG9db2Ygbi5lbnRyaWVzKCkpdFtlXT1vO3JldHVybiB0fXZhciBCU3Q9IlgtWFNSRi1Qcm90ZWN0ZWQiO2Z1bmN0aW9uIERqKG4pe2xldCB0PW4uaGVhZGVyc3x8bmV3IElnO3JldHVybiB0PXQuYXBwZW5kKEJTdCwiMSIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aGVhZGVyczp0fSl9dmFyIGFhPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmFwcFJvb3RQcm92aWRlcj10LHRoaXMuaHR0cD1lLHRoaXMuc3RvcmU9b31yZXNvbHZlQXBwUm9vdCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCIvIik/dGhpcy5hcHBSb290UHJvdmlkZXIuZ2V0QWJzUGF0aG5hbWVXaXRoQXBwUm9vdCh0KTp0fWdldCh0LGU9e30pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMucmVzb2x2ZUFwcFJvb3QodCksZSl9cG9zdCh0LGUsbz17fSl7cmV0dXJuIG89RGoobyksdGhpcy5zdG9yZS5zZWxlY3QoRHkpLnBpcGUodWUoaT0+Qm9vbGVhbihpKSksQ24oMSksT24odGhpcy5zdG9yZS5zZWxlY3Qocml0KSksVW4oKFssaV0pPT57dmFyIGE7bGV0IHI9dGhpcy5yZXNvbHZlQXBwUm9vdCh0KTtyZXR1cm4gaT90aGlzLmh0dHAuZ2V0KHIse2hlYWRlcnM6KGE9by5oZWFkZXJzKSE9PW51bGwmJmEhPT12b2lkIDA/YTp7fSxwYXJhbXM6TFN0KGUpfSk6dGhpcy5odHRwLnBvc3QocixlLG8pfSkpfXB1dCh0LGUsbz17fSl7cmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5yZXNvbHZlQXBwUm9vdCh0KSxlLERqKG8pKX1kZWxldGUodCxlPXt9KXtyZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLnJlc29sdmVBcHBSb290KHQpLERqKGUpKX19O2FhLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGFhKShJKGFzKSxJKEZyKSxJKHN0KSl9O2FhLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmFhLGZhY3Rvcnk6YWEuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGFhLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmFzfSx7dHlwZTpGcn0se3R5cGU6c3R9XX0sbnVsbCl9KSgpO3ZhciByYT1jbGFzc3t9O3JhLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHJhKX07cmEuXHUwMjc1bW9kPXEoe3R5cGU6cmF9KTtyYS5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlthYV0saW1wb3J0czpbW0hnLHJzXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocmEsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0hnLHJzXSxwcm92aWRlcnM6W2FhXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChyYSx7aW1wb3J0czpbSGcscnNdfSl9KSgpO3ZhciBDTTsoZnVuY3Rpb24obil7bi5VTktOT1dOPSJVTktOT1dOIixuLk5PVF9GT1VORD0iTk9UX0ZPVU5EIixuLlBFUk1JU1NJT05fREVOSUVEPSJQRVJNSVNTSU9OX0RFTklFRCJ9KShDTXx8KENNPXt9KSk7dmFyIElqPW5ldyB5dCgiVGVuc29yQm9hcmQgYnJhbmQgbmFtZSIpO3ZhciAkczsoZnVuY3Rpb24obil7bi5TVEVQPSJzdGVwIixuLldBTExfVElNRT0id2FsbF90aW1lIixuLlJFTEFUSVZFPSJyZWxhdGl2ZSJ9KSgkc3x8KCRzPXt9KSk7dmFyIHdyOyhmdW5jdGlvbihuKXtuLk9GRlNFVD0ib2Zmc2V0IixuLk9WRVJMQVk9Im92ZXJsYXkifSkod3J8fCh3cj17fSkpO2Z1bmN0aW9uIFZTdChuKXtpZighbi5sZW5ndGgpcmV0dXJuIG51bGw7bGV0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IobGV0IGUgb2Ygbil0LmFwcGVuZCgiZXhwZXJpbWVudGFsUGx1Z2luIixlKTtyZXR1cm4gdH1mdW5jdGlvbiBkaXQobil7bGV0IHQ9Q00uVU5LTk9XTjtyZXR1cm4gbiBpbnN0YW5jZW9mIF9NJiYobi5zdGF0dXM9PT00MDQmJih0PUNNLk5PVF9GT1VORCksbi5zdGF0dXM9PT00MDMmJih0PUNNLlBFUk1JU1NJT05fREVOSUVEKSksTEMobmV3IHlFKHQpKX12YXIgeUU9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5mYWlsdXJlQ29kZT10fX0sY3A9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy50ZkJhY2tlbmQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGYtYmFja2VuZCIpLnRmX2JhY2tlbmR9ZmV0Y2hQbHVnaW5zTGlzdGluZyh0KXtsZXQgZT1WU3QodCksbz1lP2BkYXRhL3BsdWdpbnNfbGlzdGluZz8ke2UudG9TdHJpbmcoKX1gOiJkYXRhL3BsdWdpbnNfbGlzdGluZyI7cmV0dXJuIHRoaXMuaHR0cC5nZXQobykucGlwZShucyhkaXQpKX1mZXRjaEVudmlyb25tZW50KCl7bGV0IHQ9dGhpcy5odHRwLmdldCgiZGF0YS9lbnZpcm9ubWVudCIpLGU9RGEodGhpcy50ZkJhY2tlbmQuZW52aXJvbm1lbnRTdG9yZS5yZWZyZXNoKCkpO3JldHVybiBnYShbdCxlXSkucGlwZShHKChbb10pPT5vKSxucyhkaXQpKX19O2NwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGNwKShJKGFhKSl9O2NwLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmNwLGZhY3Rvcnk6Y3AuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGNwLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmFhfV19LG51bGwpfSkoKTt2YXIgRmc9Y2xhc3N7fTtGZy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxGZyl9O0ZnLlx1MDI3NW1vZD1xKHt0eXBlOkZnfSk7RmcuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbY3BdLGltcG9ydHM6W1tyYV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEZnLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltyYV0scHJvdmlkZXJzOltjcF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoRmcse2ltcG9ydHM6W3JhXX0pfSkoKTt2YXIgS3Q7KGZ1bmN0aW9uKG4pe25bbi5OT1RfTE9BREVEPTBdPSJOT1RfTE9BREVEIixuW24uTE9BREVEPTFdPSJMT0FERUQiLG5bbi5MT0FESU5HPTJdPSJMT0FESU5HIixuW24uRkFJTEVEPTNdPSJGQUlMRUQifSkoS3R8fChLdD17fSkpO3ZhciBLYj1OdCgiW0NvcmVdIFBsdWdpbiBDaGFuZ2VkIixiZSgpKSxtRD1OdCgiW0NvcmVdIFBsdWdpbiBVcmwgSGFzaCBDaGFuZ2VkIixiZSgpKSxnaXQ9TnQoIltDb3JlXSBMb2FkZWQiKSxtcD1OdCgiW0NvcmVdIFVzZXIgVHJpZ2dlcmVkIFJlbG9hZCIpLEttPU50KCJbQ29yZV0gQXV0byBSZWxvYWQiKSxmRD1OdCgiW0NvcmVdIFBsdWdpbkxpc3RpbmcgRmV0Y2ggUmVxdWVzdGVkIiksSXY9TnQoIltDb3JlXSBQbHVnaW5MaXN0aW5nIEZldGNoIFN1Y2Nlc3NmdWwiLGJlKCkpLHhFPU50KCJbQ29yZV0gUGx1Z2luTGlzdGluZyBGZXRjaCBGYWlsZWQiLGJlKCkpLHBEPU50KCJbQ29yZV0gUG9seW1lciBDb21wb25lbnQgUnVucyBGZXRjaCBSZXF1ZXN0ZWQiKSxkRD1OdCgiW0NvcmVdIFBvbHltZXIgQ29tcG9uZW50IFJ1bnMgRmV0Y2ggU3VjY2Vzc2Z1bCIpLGdEPU50KCJbQ29yZV0gUG9seW1lciBDb21wb25lbnQgUnVucyBGZXRjaCBGYWlsZWQiKSx1RD1OdCgiW0NvcmVdIEVudmlyb25tZW50IEZldGNoIFN1Y2Nlc3NmdWwiLGJlKCkpLHVpdD1OdCgiW0NvcmVdIFJ1biBTZWxlY3Rpb24gQ2hhbmdlZCIsYmUoKSksaGl0PU50KCJbQ29yZV0gUnVuIEZldGNoIFN1Y2Nlc3NmdWwiLGJlKCkpLHAzPU50KCJbQ29yZV0gU2lkZSBCYXIgV2lkdGggQ2hhbmdlZCIsYmUoKSk7ZnVuY3Rpb24genYobix0LGUpe2xldCBvPU9iamVjdC5rZXlzKG4pLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbiksdCkse3ByaXZhdGVOYW1lc3BhY2VkU3RhdGU6e319KTtmdW5jdGlvbiBhKHMsbCxjKXt2YXIgbTtsZXQgZj1PYmplY3QuYXNzaWduKHt9LHMucHJpdmF0ZU5hbWVzcGFjZWRTdGF0ZSk7aWYobCl7bGV0IGc9e307Zm9yKGxldCBfIG9mIG8pZ1tfXT1zW19dO2Y9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGYpLHtbbF06Z30pfWxldCBwPXt9O3JldHVybiEoKG09cy5wcml2YXRlTmFtZXNwYWNlZFN0YXRlKT09PW51bGx8fG09PT12b2lkIDApJiZtW2NdP3A9cy5wcml2YXRlTmFtZXNwYWNlZFN0YXRlW2NdOmwmJihwPW4pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHApLHtwcml2YXRlTmFtZXNwYWNlZFN0YXRlOmZ9KX1sZXQgcj14YShpLFl0KHlfLChzLHtiZWZvcmU6bCxhZnRlcjpjLGJlZm9yZU5hbWVzcGFjZUlkOm0sYWZ0ZXJOYW1lc3BhY2VJZDpmfSk9PntsZXQgcD1zO3JldHVybiBtIT09ZiYmKHA9YShzLG0sZikpLGUmJihwPWUocCxsLGMpKSxwfSkpO3JldHVybntpbml0aWFsU3RhdGU6aSxyZWR1Y2VyczpyfX1mdW5jdGlvbiBIdiguLi5uKXtyZXR1cm4odCxlKT0+e2xldCBvPXQ7Zm9yKGxldCBpIG9mIG4pbz1pKG8sZSk7cmV0dXJuIG99fXZhciB2RT0iY29yZSIsd0U9e2FjdGl2ZVBsdWdpbjpudWxsLHBsdWdpbnM6e30sY29yZURhdGFMb2FkU3RhdGU6e3N0YXRlOkt0Lk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LHBsdWdpbnNMaXN0TG9hZGVkOntzdGF0ZTpLdC5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsLGZhaWx1cmVDb2RlOm51bGx9LGVudmlyb25tZW50OntkYXRhX2xvY2F0aW9uOiIiLHdpbmRvd190aXRsZToiIn0scG9seW1lclJ1bnNMb2FkU3RhdGU6e3N0YXRlOkt0Lk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LHBvbHltZXJJbnRlcm9wUnVuczpbXSxwb2x5bWVySW50ZXJvcFJ1blNlbGVjdGlvbjpuZXcgU2V0LHNpZGVCYXJXaWR0aEluUGVyY2VudDoyMH07dmFyIFVTdD14YSh3RSxZdChLYixtRCwobix7cGx1Z2luOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHthY3RpdmVQbHVnaW46dH0pKSxZdChmRCxuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2NvcmVEYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmNvcmVEYXRhTG9hZFN0YXRlKSx7c3RhdGU6S3QuTE9BRElOR30pLHBsdWdpbnNMaXN0TG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnBsdWdpbnNMaXN0TG9hZGVkKSx7c3RhdGU6S3QuTE9BRElOR30pfSkpLFl0KHhFLChuLHtmYWlsdXJlQ29kZTp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7Y29yZURhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uY29yZURhdGFMb2FkU3RhdGUpLHtzdGF0ZTpLdC5GQUlMRUR9KSxwbHVnaW5zTGlzdExvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5wbHVnaW5zTGlzdExvYWRlZCkse3N0YXRlOkt0LkZBSUxFRCxmYWlsdXJlQ29kZTp0fSl9KSksWXQoSXYsKG4se3BsdWdpbnM6dH0pPT57bGV0IGU9T2JqZWN0LmtleXModCkuZmluZChyPT50W3JdLmVuYWJsZWQpfHxudWxsLG89bi5hY3RpdmVQbHVnaW58fGUsaT1EYXRlLm5vdygpLGE9bi5jb3JlRGF0YUxvYWRTdGF0ZTtyZXR1cm4gbi5wb2x5bWVyUnVuc0xvYWRTdGF0ZS5zdGF0ZT09PUt0LkxPQURFRCYmKGE9e3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6aX0pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7YWN0aXZlUGx1Z2luOm8sY29yZURhdGFMb2FkU3RhdGU6YSxwbHVnaW5zOnQscGx1Z2luc0xpc3RMb2FkZWQ6e3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6aSxmYWlsdXJlQ29kZTpudWxsfX0pfSksWXQocEQsbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtjb3JlRGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5jb3JlRGF0YUxvYWRTdGF0ZSkse3N0YXRlOkt0LkxPQURJTkd9KSxwb2x5bWVyUnVuc0xvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5wb2x5bWVyUnVuc0xvYWRTdGF0ZSkse3N0YXRlOkt0LkxPQURJTkd9KX0pKSxZdChkRCxuPT57bGV0IHQ9RGF0ZS5ub3coKSxlPW4uY29yZURhdGFMb2FkU3RhdGU7cmV0dXJuIG4ucGx1Z2luc0xpc3RMb2FkZWQuc3RhdGU9PT1LdC5MT0FERUQmJihlPXtzdGF0ZTpLdC5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOnR9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2NvcmVEYXRhTG9hZFN0YXRlOmUscG9seW1lclJ1bnNMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4ucG9seW1lclJ1bnNMb2FkU3RhdGUpLHtzdGF0ZTpLdC5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOnR9KX0pfSksWXQoZ0Qsbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtjb3JlRGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5jb3JlRGF0YUxvYWRTdGF0ZSkse3N0YXRlOkt0LkZBSUxFRH0pLHBvbHltZXJSdW5zTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnBvbHltZXJSdW5zTG9hZFN0YXRlKSx7c3RhdGU6S3QuRkFJTEVEfSl9KSksWXQodUQsKG4se2Vudmlyb25tZW50OnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtlbnZpcm9ubWVudDp0fSkpLFl0KGhpdCwobix7cnVuczp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7cG9seW1lckludGVyb3BSdW5zOnR9KSksWXQodWl0LChuLHtuZXh0U2VsZWN0aW9uOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtwb2x5bWVySW50ZXJvcFJ1blNlbGVjdGlvbjpuZXcgU2V0KHQpfSkpLFl0KHAzLChuLHt3aWR0aEluUGVyY2VudDp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2lkZUJhcldpZHRoSW5QZXJjZW50Ok1hdGgubWluKE1hdGgubWF4KDAsdCksMTAwKX0pKSxZdChwTSwobix7cGFydGlhbFNldHRpbmdzOnR9KT0+e2xldCBlPU9iamVjdC5hc3NpZ24oe30sbiksbz10LnNpZGVCYXJXaWR0aEluUGVyY2VudDtyZXR1cm4gdHlwZW9mIG89PSJudW1iZXIiJiZvPj0wJiZvPD0xMDAmJihlLnNpZGVCYXJXaWR0aEluUGVyY2VudD1vKSxlfSkpLHtyZWR1Y2VyczpZU3R9PXp2KHdFLHt9KTtmdW5jdGlvbiB6aihuLHQpe3JldHVybiBIdihVU3QsWVN0KShuLHQpfXZhciBJeT1CYSh2RSksX0Q9Y3QoSXksbj0+bi5wbHVnaW5zTGlzdExvYWRlZCksX2l0PWN0KEl5LG49Pm4ucG9seW1lclJ1bnNMb2FkU3RhdGUpLENpdD1jdChJeSxuPT5uLmNvcmVEYXRhTG9hZFN0YXRlLnN0YXRlKSxkMz1jdChJeSxuPT5uLmNvcmVEYXRhTG9hZFN0YXRlLmxhc3RMb2FkZWRUaW1lSW5NcyksZW09Y3QoSXksbj0+bi5hY3RpdmVQbHVnaW4pLGczPWN0KEl5LG49Pm4ucGx1Z2lucyksdTM9Y3QoSXksbj0+bi5lbnZpcm9ubWVudCksQ0Q9Y3QoSXksbj0+bi5zaWRlQmFyV2lkdGhJblBlcmNlbnQpO3ZhciBHU3Q9MSxXU3Q9NTAwLE1pdD1uZXcgU2V0KFtXby5DT01QQVJFX0VYUEVSSU1FTlQsV28uRVhQRVJJTUVOVCxXby5OT1RfU0VUXSksTU09Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy53ZWJhcHBEYXRhU291cmNlPW8sdGhpcy50ZkJhY2tlbmQ9e3JlZjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH0sdGhpcy5vbkRhc2hib2FyZExvYWQkPXluKHRoaXMuYWN0aW9ucyQucGlwZShGbyhnaXQseV8pLE9uKHRoaXMuc3RvcmUuc2VsZWN0KHRwKSksWG8oKFssaV0sWyxhXSk9PktjKGksYSkpKSx0aGlzLmFjdGlvbnMkLnBpcGUoRm8oS20sbXApKSkucGlwZShPbih0aGlzLnN0b3JlLnNlbGVjdChxYikpLHVlKChbLGldKT0+TWl0LmhhcyhpKSksbHcoR1N0LHZvaWQgMCx7bGVhZGluZzohMH0pKSx0aGlzLmZldGNoV2ViQXBwRGF0YSQ9TWEoKCk9PntsZXQgaT10aGlzLm9uRGFzaGJvYXJkTG9hZCQucGlwZShPbih0aGlzLnN0b3JlLnNlbGVjdChfRCksdGhpcy5zdG9yZS5zZWxlY3QoYWl0KSksdWUoKFsse3N0YXRlOnJ9XSk9PnIhPT1LdC5MT0FESU5HKSxhbigoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChmRCgpKSksVW4oKFssLHJdKT0+TDcodGhpcy53ZWJhcHBEYXRhU291cmNlLmZldGNoUGx1Z2luc0xpc3RpbmcociksdGhpcy5mZXRjaEVudmlyb25tZW50KCkpLnBpcGUoRygoW3NdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goSXYoe3BsdWdpbnM6c30pKX0pLG5zKHM9PihzIGluc3RhbmNlb2YgeUU/dGhpcy5zdG9yZS5kaXNwYXRjaCh4RSh7ZmFpbHVyZUNvZGU6cy5mYWlsdXJlQ29kZX0pKTp0aGlzLnN0b3JlLmRpc3BhdGNoKHhFKHtmYWlsdXJlQ29kZTpDTS5VTktOT1dOfSkpLE5zKSkpKSksYT10aGlzLm9uRGFzaGJvYXJkTG9hZCQucGlwZShHKChbLHJdKT0+ciksdGkocj0+ciE9PVdvLkNPTVBBUkVfRVhQRVJJTUVOVD9kbihbXSk6dGhpcy5zdG9yZS5zZWxlY3QoWmIpLnBpcGUoWG8oKHMsbCk9PntsZXQgYz1PYmplY3QuZW50cmllcyhzKSxtPW5ldyBNYXAoT2JqZWN0LmVudHJpZXMobCkpO2lmKGMubGVuZ3RoIT09bS5zaXplKXJldHVybiExO2ZvcihsZXRbZixwXW9mIGMpaWYoIW0uZ2V0KGYpfHxtLmdldChmKS5hbGlhc1RleHQhPT1wLmFsaWFzVGV4dHx8bS5nZXQoZikuYWxpYXNOdW1iZXIhPT1wLmFsaWFzTnVtYmVyKXJldHVybiExO3JldHVybiEwfSksb18oMCksbHcoV1N0LHZvaWQgMCx7bGVhZGluZzohMCx0cmFpbGluZzohMH0pKSksT24odGhpcy5zdG9yZS5zZWxlY3QocWIpLHRoaXMuc3RvcmUuc2VsZWN0KF9pdCkpLHVlKChbLHIsc10pPT5NaXQuaGFzKHIpJiZzLnN0YXRlIT09S3QuTE9BRElORyksYW4oKCk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHBEKCkpfSksdGkoKCk9PnRoaXMucmVmcmVzaFBvbHltZXJSdW5zKCkpLGFuKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChkRCgpKX0pLG5zKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaChnRCgpKSxOcykpKTtyZXR1cm4geW4oaSxhKX0se2Rpc3BhdGNoOiExfSksdGhpcy5kaXNwYXRjaENoYW5nZVBsdWdpbiQ9TWEoKCk9PnluKHRoaXMub25EYXNoYm9hcmRMb2FkJCx0aGlzLmFjdGlvbnMkLnBpcGUoRm8oSXYpKSkucGlwZShPbih0aGlzLnN0b3JlLnNlbGVjdChlbSkpLEcoKFssaV0pPT5pKSxYbygpLHVlKGk9PmkhPT1udWxsKSxDbigxKSxhbihpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChLYih7cGx1Z2luOml9KSl9KSkse2Rpc3BhdGNoOiExfSl9cmVmcmVzaFBvbHltZXJSdW5zKCl7cmV0dXJuIERhKHRoaXMudGZCYWNrZW5kLnJlZi5ydW5zU3RvcmUucmVmcmVzaCgpKX1mZXRjaEVudmlyb25tZW50KCl7cmV0dXJuIHRoaXMud2ViYXBwRGF0YVNvdXJjZS5mZXRjaEVudmlyb25tZW50KCkucGlwZShhbih0PT57dGhpcy5zdG9yZS5kaXNwYXRjaCh1RCh7ZW52aXJvbm1lbnQ6dH0pKX0pKX19O01NLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE1NKShJKFRvKSxJKHN0KSxJKGNwKSl9O01NLlx1MDI3NXByb3Y9UHQoe3Rva2VuOk1NLGZhY3Rvcnk6TU0uXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE1NLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlRvfSx7dHlwZTpzdH0se3R5cGU6Y3B9XX0sbnVsbCl9KSgpO3ZhciBTRT1uZXcgeXQoIkNvcmUgRmVhdHVyZSBDb25maWciKTtmdW5jdGlvbiBIaihuKXtyZXR1cm57aW5pdGlhbFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx3RSkse2FjdGl2ZVBsdWdpbjpuLmdldFBsdWdpbklkKCl8fG51bGx9KX19ZnVuY3Rpb24gYml0KCl7cmV0dXJuIGN0KENELG49Pih7c2lkZUJhcldpZHRoSW5QZXJjZW50Om59KSl9dmFyIFNpPWNsYXNze307U2kuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8U2kpfTtTaS5cdTAyNzVtb2Q9cSh7dHlwZTpTaX0pO1NpLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3twcm92aWRlOlNFLGRlcHM6W21NXSx1c2VGYWN0b3J5OkhqfV0saW1wb3J0czpbW0hvLmZvckZlYXR1cmUoW01NXSksY28uZm9yRmVhdHVyZSh2RSx6aixTRSksRmcsTm4uZGVmaW5lR2xvYmFsU2V0dGluZyhiaXQpXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU2ksW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0hvLmZvckZlYXR1cmUoW01NXSksY28uZm9yRmVhdHVyZSh2RSx6aixTRSksRmcsTm4uZGVmaW5lR2xvYmFsU2V0dGluZyhiaXQpXSxwcm92aWRlcnM6W3twcm92aWRlOlNFLGRlcHM6W21NXSx1c2VGYWN0b3J5OkhqfV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoU2kse2ltcG9ydHM6W3FpLE5vLEZnLE5uXX0pfSkoKTt2YXIgRmo9bmV3IHl0KCJbQWxlcnRdIEFjdGlvbi1Uby1BbGVydCBQcm92aWRlciIpLHZhPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMucHJvdmlkZXJzPW5ldyBNYXA7Zm9yKGxldCBlIG9mIHR8fFtdKWZvcihsZXQgbyBvZiBlKXtpZih0aGlzLnByb3ZpZGVycy5oYXMoby5hY3Rpb25DcmVhdG9yLnR5cGUpKXRocm93IG5ldyBSYW5nZUVycm9yKGAiJHtvLmFjdGlvbkNyZWF0b3IudHlwZX0iIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBmb3IgYWxlcnRzLiBNdWx0aXBsZSBhbGVydHMgZm9yIHRoZSBzYW1lIGFjdGlvbiBpcyBub3QgYWxsb3dlZC5gKTt0aGlzLnByb3ZpZGVycy5zZXQoby5hY3Rpb25DcmVhdG9yLnR5cGUsby5hbGVydEZyb21BY3Rpb24pfX1nZXRBbGVydEZyb21BY3Rpb24odCl7bGV0IGU9dGhpcy5wcm92aWRlcnMuZ2V0KHQudHlwZSk7cmV0dXJuIGU/ZSh0KTpudWxsfXN0YXRpYyByZWdpc3RlckFsZXJ0QWN0aW9ucyh0KXtyZXR1cm57bmdNb2R1bGU6dmEscHJvdmlkZXJzOlt7cHJvdmlkZTpGaixtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fTt2YS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx2YSkoSShGaiw4KSl9O3ZhLlx1MDI3NW1vZD1xKHt0eXBlOnZhfSk7dmEuXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh2YSxbe3R5cGU6WixhcmdzOlt7fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltGal19XX1dfSxudWxsKX0pKCk7dmFyIE1EPU50KCJbUnVuc10gRmV0Y2ggUnVucyBSZXF1ZXN0ZWQiLGJlKCkpLHp5PU50KCJbUnVuc10gRmV0Y2ggUnVucyBTdWNjZWVkZWQiLGJlKCkpLGgzPU50KCJbUnVuc10gRmV0Y2ggUnVucyBGYWlsZWQiLGJlKCkpLGJEPU50KCJbUnVuc10gUnVuIFNlbGVjdGlvbiBUb2dnbGVkIixiZSgpKSxPRD1OdCgiW1J1bnNdIFNpbmdsZSBSdW4gU2VsZWN0ZWQiLGJlKCkpLFBEPU50KCJbUnVuc10gUnVuIFBhZ2UgU2VsZWN0aW9uIFRvZ2dsZWQiLGJlKCkpLHlEPU50KCJbUnVuc10gUnVuIFNlbGVjdG9yIFBhZ2luYXRpb24gT3B0aW9uIENoYW5nZWQiLGJlKCkpLHhEPU50KCJbUnVuc10gUnVuIFNlbGVjdG9yIFNvcnQgQ2hhbmdlZCIsYmUoKSksUkU9TnQoIltSdW5zXSBSdW4gU2VsZWN0b3IgUmVnZXggRmlsdGVyIENoYW5nZWQiLGJlKCkpLHZEPU50KCJbUnVuc10gUnVuIENvbG9yIENoYW5nZWQiLGJlKCkpLHdEPU50KCJbUnVuc10gUnVuIFRhYmxlIFNob3duIixiZSgpKSxfMz1OdCgiW1J1bnNdIFJ1biBHcm91cCBCeSBDaGFuZ2VkIixiZSgpKTt2YXIgU0Q7KGZ1bmN0aW9uKG4pe24uREFUQVNFVF9VTktOT1dOPSJEQVRBU0VUX1VOS05PV04iLG4uREFUQVNFVF9UUkFJTklORz0iREFUQVNFVF9UUkFJTklORyIsbi5EQVRBU0VUX1ZBTElEQVRJT049IkRBVEFTRVRfVkFMSURBVElPTiJ9KShTRHx8KFNEPXt9KSk7dmFyIE9pdDsoZnVuY3Rpb24obil7bi5TVEFUVVNfVU5LTk9XTj0iU1RBVFVTX1VOS05PV04iLG4uU1RBVFVTX1NVQ0NFU1M9IlNUQVRVU19TVUNDRVNTIixuLlNUQVRVU19GQUlMVVJFPSJTVEFUVVNfRkFJTFVSRSIsbi5TVEFUVVNfUlVOTklORz0iU1RBVFVTX1JVTk5JTkcifSkoT2l0fHwoT2l0PXt9KSk7dmFyIFJEOyhmdW5jdGlvbihuKXtuLkRBVEFfVFlQRV9VTlNFVD0iREFUQV9UWVBFX1VOU0VUIixuLkRBVEFfVFlQRV9TVFJJTkc9IkRBVEFfVFlQRV9TVFJJTkciLG4uREFUQV9UWVBFX0JPT0w9IkRBVEFfVFlQRV9CT09MIixuLkRBVEFfVFlQRV9GTE9BVDY0PSJEQVRBX1RZUEVfRkxPQVQ2NCJ9KShSRHx8KFJEPXt9KSk7dmFyIGVpOyhmdW5jdGlvbihuKXtuW24uRElTQ1JFVEU9MF09IkRJU0NSRVRFIixuW24uSU5URVJWQUw9MV09IklOVEVSVkFMIn0pKGVpfHwoZWk9e30pKTt2YXIgZnA9Y2xhc3N7fTtmcC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxmcCl9O2ZwLlx1MDI3NXByb3Y9UHQoe3Rva2VuOmZwLGZhY3Rvcnk6ZnAuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGZwLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBIeT17fTtZUyhIeSx7aHBhcmFtc0Rpc2NyZXRlSHBhcmFtRmlsdGVyQ2hhbmdlZDooKT0+VmosaHBhcmFtc0ludGVydmFsSHBhcmFtRmlsdGVyQ2hhbmdlZDooKT0+amosaHBhcmFtc01ldHJpY0ZpbHRlckNoYW5nZWQ6KCk9PlVqfSk7dmFyIFZqPU50KCJbSHBhcmFtc10gSHBhcmFtcyBEaXNjcmV0ZSBIcGFyYW0gRmlsdGVyIENoYW5nZWQiLGJlKCkpLGpqPU50KCJbSHBhcmFtc10gSHBhcmFtcyBJbnRlcnZhbCBIcGFyYW0gRmlsdGVyIENoYW5nZWQiLGJlKCkpLFVqPU50KCJbSHBhcmFtc10gSHBhcmFtcyBNZXRyaWMgRmlsdGVyIENoYW5nZWQiLGJlKCkpO2Z1bmN0aW9uIEZ2KG4pe3JldHVybiBKU09OLnN0cmluZ2lmeShbLi4ubl0uc29ydCgpKX1mdW5jdGlvbiBFRShuKXt2YXIgdCxlLG8saTtsZXQgYT1uZXcgTWFwLHI9bmV3IE1hcCxzPW5ldyBNYXA7Zm9yKGxldCBsIG9mIG4pZm9yKGxldFtjLG1db2YgbClpZihtLnR5cGU9PT1laS5ESVNDUkVURSl7bGV0e3Bvc3NpYmxlVmFsdWVzOmYsdmFsdWVzOnB9PXIuZ2V0KGMpfHx7cG9zc2libGVWYWx1ZXM6bmV3IFNldCx2YWx1ZXM6bmV3IFNldH07Zm9yKGxldCBnIG9mIG0uZmlsdGVyVmFsdWVzKXAuYWRkKGcpO2ZvcihsZXQgZyBvZiBtLnBvc3NpYmxlVmFsdWVzKWYuYWRkKGcpO3Iuc2V0KGMse3Bvc3NpYmxlVmFsdWVzOmYsdmFsdWVzOnB9KX1lbHNle2xldCBmPXMuZ2V0KGMpO3Muc2V0KGMse2ZpbHRlckxvd2VyVmFsdWU6TWF0aC5taW4obS5maWx0ZXJMb3dlclZhbHVlLCh0PWY9PW51bGw/dm9pZCAwOmYuZmlsdGVyTG93ZXJWYWx1ZSkhPT1udWxsJiZ0IT09dm9pZCAwP3Q6MS8wKSxmaWx0ZXJVcHBlclZhbHVlOk1hdGgubWF4KG0uZmlsdGVyVXBwZXJWYWx1ZSwoZT1mPT1udWxsP3ZvaWQgMDpmLmZpbHRlclVwcGVyVmFsdWUpIT09bnVsbCYmZSE9PXZvaWQgMD9lOi0xLzApLG1pblZhbHVlOk1hdGgubWluKG0ubWluVmFsdWUsKG89Zj09bnVsbD92b2lkIDA6Zi5taW5WYWx1ZSkhPT1udWxsJiZvIT09dm9pZCAwP286MS8wKSxtYXhWYWx1ZTpNYXRoLm1heChtLm1heFZhbHVlLChpPWY9PW51bGw/dm9pZCAwOmYubWF4VmFsdWUpIT09bnVsbCYmaSE9PXZvaWQgMD9pOi0xLzApfSl9Zm9yKGxldFtsLHt2YWx1ZXM6Yyxwb3NzaWJsZVZhbHVlczptfV1vZiByKWEuc2V0KGwse3R5cGU6ZWkuRElTQ1JFVEUsaW5jbHVkZVVuZGVmaW5lZDohMCxwb3NzaWJsZVZhbHVlczpbLi4ubV0sZmlsdGVyVmFsdWVzOlsuLi5jXX0pO2ZvcihsZXRbbCx7bWluVmFsdWU6YyxtYXhWYWx1ZTptLGZpbHRlckxvd2VyVmFsdWU6ZixmaWx0ZXJVcHBlclZhbHVlOnB9XW9mIHMpe2lmKGEuaGFzKGwpKXtsZXQgZz1hLmdldChsKTtpZihnLnR5cGU9PT1laS5ESVNDUkVURSYmZy5wb3NzaWJsZVZhbHVlcy5zb21lKF89Pl8pKXRocm93IG5ldyBSYW5nZUVycm9yKGBDYW5ub3QgY29tYmluZSBocGFyYW0sICR7bH0sIGFzIGl0IGlzIG9mIG1peGVkIHR5cGVzLmApfWEuc2V0KGwse3R5cGU6ZWkuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDohMCxtaW5WYWx1ZTpjLG1heFZhbHVlOm0sZmlsdGVyTG93ZXJWYWx1ZTpmLGZpbHRlclVwcGVyVmFsdWU6cH0pfXJldHVybiBhfWZ1bmN0aW9uIEVEKG4pe3ZhciB0LGUsbyxpO2xldCBhPW5ldyBNYXA7Zm9yKGxldCByIG9mIG4pZm9yKGxldFtzLGxdb2Ygcil7bGV0IGM9YS5nZXQocyk7YS5zZXQocyxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe3R5cGU6ZWkuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDohMH0sYykse21pblZhbHVlOk1hdGgubWluKGwubWluVmFsdWUsKHQ9Yz09bnVsbD92b2lkIDA6Yy5taW5WYWx1ZSkhPT1udWxsJiZ0IT09dm9pZCAwP3Q6MS8wKSxtYXhWYWx1ZTpNYXRoLm1heChsLm1heFZhbHVlLChlPWM9PW51bGw/dm9pZCAwOmMubWF4VmFsdWUpIT09bnVsbCYmZSE9PXZvaWQgMD9lOi0xLzApLGZpbHRlckxvd2VyVmFsdWU6TWF0aC5taW4obC5maWx0ZXJMb3dlclZhbHVlLChvPWM9PW51bGw/dm9pZCAwOmMuZmlsdGVyTG93ZXJWYWx1ZSkhPT1udWxsJiZvIT09dm9pZCAwP286MS8wKSxmaWx0ZXJVcHBlclZhbHVlOk1hdGgubWF4KGwuZmlsdGVyVXBwZXJWYWx1ZSwoaT1jPT1udWxsP3ZvaWQgMDpjLmZpbHRlclVwcGVyVmFsdWUpIT09bnVsbCYmaSE9PXZvaWQgMD9pOi0xLzApfSkpfXJldHVybiBhfXZhciBaU3Q9e3NwZWNzOnt9LGZpbHRlcnM6e319LFhTdD14YShaU3QsWXQoVmosKG4sdCk9Pnt2YXIgZTtsZXR7ZXhwZXJpbWVudElkczpvLGhwYXJhbU5hbWU6aSxmaWx0ZXJWYWx1ZXM6YSxpbmNsdWRlVW5kZWZpbmVkOnJ9PXQscz1GdihvKSxsPShlPW4uZmlsdGVyc1tzXSkhPT1udWxsJiZlIT09dm9pZCAwP2U6e2hwYXJhbXM6bmV3IE1hcH0sYz1sLmhwYXJhbXMuZ2V0KGkpO2lmKGMmJmMudHlwZSE9PWVpLkRJU0NSRVRFKXRocm93IG5ldyBSYW5nZUVycm9yKGBOZXcgZGlzY3JldGUgZmlsdGVyIG9mICR7aX0gY29uZmxpY3RzIGV4aXN0aW5nIGZpbHRlciBvZiBgK2VpW2MudHlwZV0pO2xldCBtPUVFKG8uZmlsdGVyKF89PkJvb2xlYW4obi5zcGVjc1tfXSkpLm1hcChfPT5uLnNwZWNzW19dLmhwYXJhbS5kZWZhdWx0RmlsdGVycykpLmdldChpKTtpZighbSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgaHBhcmFtLCAke2l9LCB3aGVuIGl0IGlzIG5vdCBrbm93biBmb3IgZXhwZXJpbWVudElkczogJHtvLmpvaW4oIiwgIil9YCk7aWYobS50eXBlIT09ZWkuRElTQ1JFVEUpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0ICR7aX0gd2hlbiBkZWZhdWx0IGZpbHRlciBpcyBub3Qgb2YgZGlzY3JldGUgdHlwZS5gKTtsZXQgZj1uZXcgU2V0KG0ucG9zc2libGVWYWx1ZXMpLHA9Wy4uLmFdLmZpbHRlcihfPT4hZi5oYXMoXykpO2lmKHAubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgTmV3IGZpbHRlciBmb3IgJHtpfSBoYXMgbW9yZSB0aGFuIG9uZSB2YWx1ZSB0aGF0IGlzIG5vdCBwcmVzZW50IGluIHRoZSBzcGVjLiBCYWQgdmFsdWVzOiAke3Auam9pbigiLCAiKX1gKTtsZXQgZz1uZXcgTWFwKGwuaHBhcmFtcyk7cmV0dXJuIGcuc2V0KGksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHt0eXBlOmVpLkRJU0NSRVRFLGluY2x1ZGVVbmRlZmluZWQ6cixwb3NzaWJsZVZhbHVlczpbLi4uZl0sZmlsdGVyVmFsdWVzOmF9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZpbHRlcnMpLHtbc106T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtocGFyYW1zOmd9KX0pfSl9KSxZdChqaiwobix0KT0+e3ZhciBlO2xldHtleHBlcmltZW50SWRzOm8saHBhcmFtTmFtZTppLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnIsaW5jbHVkZVVuZGVmaW5lZDpzfT10LGw9RnYobyksYz0oZT1uLmZpbHRlcnNbbF0pIT09bnVsbCYmZSE9PXZvaWQgMD9lOnttZXRyaWNzOm5ldyBNYXAsaHBhcmFtczpuZXcgTWFwfSxtPWMuaHBhcmFtcy5nZXQoaSk7aWYobSYmbS50eXBlIT09ZWkuSU5URVJWQUwpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE5ldyBpbnRlcnZhbCBmaWx0ZXIgb2YgJHtpfSBjb25mbGljdHMgZXhpc3RpbmcgZmlsdGVyIG9mIGArZWlbbS50eXBlXSk7bGV0IGY9RUUoby5maWx0ZXIoZz0+Qm9vbGVhbihuLnNwZWNzW2ddKSkubWFwKGc9Pm4uc3BlY3NbZ10uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKSkuZ2V0KGkpO2lmKCFmKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCBocGFyYSwgJHtpfSwgd2hlbiBpdCBpcyBub3Qga25vd24gZm9yIGV4cGVyaW1lbnRJZHM6ICR7by5qb2luKCIsICIpfWApO2lmKGYudHlwZSE9PWVpLklOVEVSVkFMKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCAke2l9IHdoZW4gZGVmYXVsdCBmaWx0ZXIgaXMgbm90IG9mIGludGVydmFsIHR5cGUuYCk7bGV0IHA9bmV3IE1hcChjLmhwYXJhbXMpO3JldHVybiBwLnNldChpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxtKSx7dHlwZTplaS5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOnMsbWluVmFsdWU6Zi5taW5WYWx1ZSxtYXhWYWx1ZTpmLm1heFZhbHVlLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZpbHRlcnMpLHtbbF06T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHtocGFyYW1zOnB9KX0pfSl9KSxZdChVaiwobix0KT0+e3ZhciBlO2xldHtleHBlcmltZW50SWRzOm8sbWV0cmljVGFnOmksZmlsdGVyTG93ZXJWYWx1ZTphLGZpbHRlclVwcGVyVmFsdWU6cixpbmNsdWRlVW5kZWZpbmVkOnN9PXQsbD1GdihvKSxjPShlPW4uZmlsdGVyc1tsXSkhPT1udWxsJiZlIT09dm9pZCAwP2U6e21ldHJpY3M6bmV3IE1hcCxocGFyYW1zOm5ldyBNYXB9LG09RUQoby5maWx0ZXIoZz0+Qm9vbGVhbihuLnNwZWNzW2ddKSkubWFwKGc9Pm4uc3BlY3NbZ10ubWV0cmljLmRlZmF1bHRGaWx0ZXJzKSkuZ2V0KGkpO2lmKCFtKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCBtZXRyaWMsICR7aX0sIHdoZW4gaXQgaXMgbm90IGtub3duIGZvciBleHBlcmltZW50SWRzOiAke28uam9pbigiLCAiKX1gKTtsZXQgZj1jLm1ldHJpY3MuZ2V0KGkpLHA9bmV3IE1hcChjLm1ldHJpY3MpO3JldHVybiBwLnNldChpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxmKSx7dHlwZTplaS5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOnMsbWluVmFsdWU6bS5taW5WYWx1ZSxtYXhWYWx1ZTptLm1heFZhbHVlLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOnJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtmaWx0ZXJzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZpbHRlcnMpLHtbbF06T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHttZXRyaWNzOnB9KX0pfSl9KSxZdCh6eSwobix0KT0+e3ZhciBlLG8saSxhO2lmKE9iamVjdC5rZXlzKHQubmV3UnVuc0FuZE1ldGFkYXRhKS5sZW5ndGg9PT0wKXJldHVybiBuO2xldCByPU9iamVjdC5hc3NpZ24oe30sbi5zcGVjcykscz1uZXcgTWFwLGw9bmV3IFNldDtmb3IobGV0IGMgb2YgT2JqZWN0LmtleXModC5uZXdSdW5zQW5kTWV0YWRhdGEpKXtsZXQgbT1uZXcgTWFwLGY9bmV3IE1hcCxwPW5ldyBNYXAsZz1uZXcgTWFwLHtydW5zOl8sbWV0YWRhdGE6TX09dC5uZXdSdW5zQW5kTWV0YWRhdGFbY107Zm9yKGxldCB5IG9mIF8pe2xldCBPPU0ucnVuVG9IcGFyYW1zQW5kTWV0cmljc1t5LmlkXTtpZighIU8pZm9yKGxldCBiIG9mIE8ubWV0cmljcyl7bGV0IFI9cy5nZXQoYi50YWcpO3Muc2V0KGIudGFnLHttaW46Uj9NYXRoLm1pbihSLm1pbixiLnZhbHVlKTpiLnZhbHVlLG1heDpSP01hdGgubWF4KFIubWF4LGIudmFsdWUpOmIudmFsdWV9KX19Zm9yKGxldHtuYW1lOnksZG9tYWluOk99b2YgTS5ocGFyYW1TcGVjcylpZihPLnR5cGU9PT1laS5ESVNDUkVURSl7bGV0IGI9cC5nZXQoeSl8fG5ldyBTZXQ7Zm9yKGxldCBSIG9mIE8udmFsdWVzKWIuYWRkKFIpO3Auc2V0KHksYil9ZWxzZXtsZXQgYj1nLmdldCh5KTtnLnNldCh5LHttaW5WYWx1ZTpiP01hdGgubWluKE8ubWluVmFsdWUsYi5taW5WYWx1ZSk6Ty5taW5WYWx1ZSxtYXhWYWx1ZTpiP01hdGgubWF4KE8ubWF4VmFsdWUsYi5tYXhWYWx1ZSk6Ty5tYXhWYWx1ZX0pfWZvcihsZXQgeSBvZiBNLm1ldHJpY1NwZWNzKWwuYWRkKHkudGFnKTtmb3IobGV0W3ksT11vZiBwKW0uc2V0KHkse3R5cGU6ZWkuRElTQ1JFVEUsaW5jbHVkZVVuZGVmaW5lZDohMCxwb3NzaWJsZVZhbHVlczpbLi4uT10sZmlsdGVyVmFsdWVzOlsuLi5PXX0pO2ZvcihsZXRbeSx7bWluVmFsdWU6TyxtYXhWYWx1ZTpifV1vZiBnKW0uc2V0KHkse3R5cGU6ZWkuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDohMCxtaW5WYWx1ZTpPLG1heFZhbHVlOmIsZmlsdGVyTG93ZXJWYWx1ZTpPLGZpbHRlclVwcGVyVmFsdWU6Yn0pO2ZvcihsZXQgeSBvZiBsKXtsZXQgTz1zLmdldCh5KSxiPShlPU89PW51bGw/dm9pZCAwOk8ubWluKSE9PW51bGwmJmUhPT12b2lkIDA/ZTowLFI9KG89Tz09bnVsbD92b2lkIDA6Ty5tYXgpIT09bnVsbCYmbyE9PXZvaWQgMD9vOjA7Zi5zZXQoeSx7dHlwZTplaS5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOmIsbWF4VmFsdWU6UixmaWx0ZXJMb3dlclZhbHVlOmIsZmlsdGVyVXBwZXJWYWx1ZTpSfSl9cltjXT17aHBhcmFtOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwoaT1yW2NdKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkuaHBhcmFtKSx7c3BlY3M6TS5ocGFyYW1TcGVjcyxkZWZhdWx0RmlsdGVyczptfSksbWV0cmljOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwoYT1yW2NdKT09PW51bGx8fGE9PT12b2lkIDA/dm9pZCAwOmEubWV0cmljKSx7c3BlY3M6TS5tZXRyaWNTcGVjcyxkZWZhdWx0RmlsdGVyczpmfSl9fXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NwZWNzOnJ9KX0pKTtmdW5jdGlvbiBZaihuLHQpe3JldHVybiBYU3Qobix0KX12YXIga0U9ImhwYXJhbXMiO3ZhciBMZz1jbGFzc3t9O0xnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fExnKX07TGcuXHUwMjc1bW9kPXEoe3R5cGU6TGd9KTtMZy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW2NvLmZvckZlYXR1cmUoa0UsWWopXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTGcsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W2NvLmZvckZlYXR1cmUoa0UsWWopXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChMZyx7aW1wb3J0czpbTm9dfSl9KSgpO3ZhciBVbD1jbGFzc3t9O1VsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFVsKX07VWwuXHUwMjc1bW9kPXEoe3R5cGU6VWx9KTtVbC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW0xnXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVWwsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0xnXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChVbCx7aW1wb3J0czpbTGddfSl9KSgpO2Z1bmN0aW9uIFFTdChuLHQpe3JldHVybmAke3R9LyR7bn1gfXZhciBiTT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dH1mZXRjaFJ1bnModCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoImRhdGEvcnVucyIpLnBpcGUoRyhlPT5lLm1hcChvPT4oe2lkOlFTdChvLHQpLG5hbWU6byxzdGFydFRpbWU6MH0pKSkpfWZldGNoSHBhcmFtc01ldGFkYXRhKHQpe3JldHVybiBkbih7aHBhcmFtU3BlY3M6W10sbWV0cmljU3BlY3M6W10scnVuVG9IcGFyYW1zQW5kTWV0cmljczp7fX0pfX07Yk0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Yk0pKEkoYWEpKX07Yk0uXHUwMjc1cHJvdj1QdCh7dG9rZW46Yk0sZmFjdG9yeTpiTS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYk0sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YWF9XX0sbnVsbCl9KSgpO3ZhciB2Xz1jbGFzc3t9O3ZfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHZfKX07dl8uXHUwMjc1bW9kPXEoe3R5cGU6dl99KTt2Xy5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlt7cHJvdmlkZTpmcCx1c2VDbGFzczpiTX1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHZfLFt7dHlwZTpaLGFyZ3M6W3twcm92aWRlcnM6W3twcm92aWRlOmZwLHVzZUNsYXNzOmJNfV19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBORT0iYWxlcnRzIjt2YXIgS1N0PUJhKE5FKSxQaXQ9Y3QoS1N0LG49Pm4ubGF0ZXN0QWxlcnQpO3ZhciBURT0iZXhwZXJpbWVudHMiO3ZhciBKU3Q9QmEoVEUpLCRTdD1jdChKU3Qsbj0+bi5kYXRhKSxrRD1jdCgkU3QsKG4sdCk9PntsZXR7ZXhwZXJpbWVudElkOmV9PXQ7cmV0dXJuIG4uZXhwZXJpbWVudE1hcFtlXXx8bnVsbH0pO3ZhciBMbzsoZnVuY3Rpb24obil7bi5TQ0FMQVJTPSJzY2FsYXJzIixuLkhJU1RPR1JBTVM9Imhpc3RvZ3JhbXMiLG4uSU1BR0VTPSJpbWFnZXMifSkoTG98fChMbz17fSkpO3ZhciBRYTsoZnVuY3Rpb24obil7bi5ERUZBVUxUPSJkZWZhdWx0IixuLkFMUEhBQkVUSUNBTD0iYWxwaGFiZXRpY2FsIixuLkFTQ0VORElORz0iYXNjZW5kaW5nIixuLkRFU0NFTkRJTkc9ImRlc2NlbmRpbmciLG4uTkVBUkVTVD0ibmVhcmVzdCJ9KShRYXx8KFFhPXt9KSk7dmFyIFppOyhmdW5jdGlvbihuKXtuW24uU1RFUD0wXT0iU1RFUCIsbltuLlJFTEFUSVZFPTFdPSJSRUxBVElWRSIsbltuLldBTExfVElNRT0yXT0iV0FMTF9USU1FIn0pKFppfHwoWmk9e30pKTt2YXIgeWl0PTAsTkQ9Ljk5OTt2YXIgQzM9InRpbWVzZXJpZXMiO2Z1bmN0aW9uIHhpdChuKXtyZXR1cm4gbj09PUxvLlNDQUxBUlN8fG49PT1Mby5ISVNUT0dSQU1TfHxuPT09TG8uSU1BR0VTfXZhciB0UnQ9W0xvLklNQUdFU107ZnVuY3Rpb24gQmcobil7cmV0dXJuIHRSdC5pbmNsdWRlcyhuKX12YXIgZVJ0PVtMby5ISVNUT0dSQU1TLExvLklNQUdFU107ZnVuY3Rpb24gVmcobil7cmV0dXJuIGVSdC5pbmNsdWRlcyhuKX1mdW5jdGlvbiBHaihuKXtyZXR1cm4gVmcobi5wbHVnaW4pfXZhciBwcD1jbGFzc3t9O2Z1bmN0aW9uIFREKG4pe3JldHVybiBuLmhhc093blByb3BlcnR5KCJlcnJvciIpfXZhciBXaj0iZGF0YS9wbHVnaW4vdGltZXNlcmllcyI7ZnVuY3Rpb24gdml0KG4pe2xldCB0PW4uaW5kZXhPZigiLyIpO3JldHVybntydW46bi5zdWJzdHJpbmcodCsxKSxleHBlcmltZW50SWQ6bi5zdWJzdHJpbmcoMCx0KX19ZnVuY3Rpb24gU2l0KG4sdCl7cmV0dXJuYCR7dH0vJHtufWB9ZnVuY3Rpb24gd2l0KG4sdCl7bGV0e3J1blRvU2VyaWVzOmUscnVuOm99PW4saT1lXyhuLFsicnVuVG9TZXJpZXMiLCJydW4iXSksYT1PYmplY3QuYXNzaWduKHt9LGkpO3JldHVybiBlJiYoYS5ydW5Ub1Nlcmllcz1xaihlLHQpKSxvJiYoYS5ydW5JZD1TaXQobyx0KSksYX1mdW5jdGlvbiBxaihuLHQpe2xldCBlPXt9O2ZvcihsZXQgbyBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkobykpe2xldCBpPVNpdChvLHQpO2VbaV09bltvXX1yZXR1cm4gZX1mdW5jdGlvbiBvUnQobix0KXtsZXQgZT17fTtmb3IobGV0IG8gb2YgT2JqZWN0LmtleXMobikpe2xldCBpPW87aWYoQmcoaSkpe2xldCBhPW5baV0se3RhZ1J1blNhbXBsZWRJbmZvOnJ9PWEscz1lXyhhLFsidGFnUnVuU2FtcGxlZEluZm8iXSksbD17fTtmb3IobGV0IGMgaW4gcilyLmhhc093blByb3BlcnR5KGMpJiYobFtjXT1xaihyW2NdLHQpKTtlW2ldPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSx7dGFnUnVuU2FtcGxlZEluZm86bH0pfWVsc2V7bGV0IGE9bltpXSx7cnVuVGFnSW5mbzpyfT1hLHM9ZV8oYSxbInJ1blRhZ0luZm8iXSk7ZVtpXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse3J1blRhZ0luZm86cWoocix0KX0pfX1yZXR1cm4gZX1mdW5jdGlvbiBpUnQobil7bGV0IHQ9e307Zm9yKGxldCBlIG9mIG4pZm9yKGxldCBvIG9mIE9iamVjdC52YWx1ZXMoTG8pKWlmKEJnKG8pKXt0W29dPXRbb118fHt0YWdEZXNjcmlwdGlvbnM6e30sdGFnUnVuU2FtcGxlZEluZm86e319O2xldHt0YWdEZXNjcmlwdGlvbnM6aSx0YWdSdW5TYW1wbGVkSW5mbzphfT1lW29dO3Rbb10udGFnRGVzY3JpcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0W29dLnRhZ0Rlc2NyaXB0aW9ucyksaSk7bGV0IHI9dFtvXS50YWdSdW5TYW1wbGVkSW5mbztmb3IobGV0IHMgb2YgT2JqZWN0LmtleXMoYSkpe3Jbc109cltzXXx8e307Zm9yKGxldCBsIG9mIE9iamVjdC5rZXlzKGFbc10pKXJbc11bbF09YVtzXVtsXX19ZWxzZXt0W29dPXRbb118fHt0YWdEZXNjcmlwdGlvbnM6e30scnVuVGFnSW5mbzp7fX07bGV0e3RhZ0Rlc2NyaXB0aW9uczppLHJ1blRhZ0luZm86YX09ZVtvXTt0W29dLnRhZ0Rlc2NyaXB0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdFtvXS50YWdEZXNjcmlwdGlvbnMpLGkpLHRbb10ucnVuVGFnSW5mbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdFtvXS5ydW5UYWdJbmZvKSxhKX1yZXR1cm4gdH12YXIgT009Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLmh0dHA9dCx0aGlzLnN0b3JlPWV9ZmV0Y2hUYWdNZXRhZGF0YSh0KXtsZXQgZT10Lm1hcChpPT57bGV0IGE9YC9leHBlcmltZW50LyR7aX0vJHtXan0vdGFnc2A7cmV0dXJuIHRoaXMuaHR0cC5nZXQoYSkucGlwZShHKHI9Pm9SdChyLGkpKSl9KSxvPXRoaXMuc3RvcmUuc2VsZWN0KER5KS5waXBlKHVlKEJvb2xlYW4pLENuKDEpLE9uKHRoaXMuc3RvcmUuc2VsZWN0KGNEKSksRygoWyxpXSk9PmkpKTtyZXR1cm4gZ2EoZSkucGlwZShPbihvKSxHKChbaSxhXSk9PntsZXQgcj1pUnQoaSk7cmV0dXJuIGF8fChyW0xvLklNQUdFU109e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdSdW5TYW1wbGVkSW5mbzp7fX0pLHJ9KSl9ZmV0Y2hUaW1lU2VyaWVzKHQpe2xldCBlPXQubWFwKG89PntpZihWZyhvLnBsdWdpbikpe2xldCBsPW8se3J1bklkOmN9PWwsbT1lXyhsLFsicnVuSWQiXSkse3J1bjpmLGV4cGVyaW1lbnRJZDpwfT12aXQoYyksZz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbSkse3J1bjpmfSk7cmV0dXJuIHRoaXMuZmV0Y2hUaW1lU2VyaWVzQmFja2VuZFJlcXVlc3QoZyxwKS5waXBlKEcoKHtyZXNwb25zZTpfLGV4cGVyaW1lbnRJZDpNfSk9PndpdChfLE0pKSl9bGV0IGk9byx7ZXhwZXJpbWVudElkczphfT1pLHI9ZV8oaSxbImV4cGVyaW1lbnRJZHMiXSkscz1hLm1hcChsPT50aGlzLmZldGNoVGltZVNlcmllc0JhY2tlbmRSZXF1ZXN0KHIsbCkpO3JldHVybiBnYShzKS5waXBlKEcobD0+e2xldCBjPWxbMF0ucmVzcG9uc2Use3J1blRvU2VyaWVzOm0sZXJyb3I6Zn09YyxnPWVfKGMsWyJydW5Ub1NlcmllcyIsImVycm9yIl0pO2ZvcihsZXR7cmVzcG9uc2U6XyxleHBlcmltZW50SWQ6TX1vZiBsKXtsZXQgeT13aXQoXyxNKTtpZihnLmVycm9yKWNvbnRpbnVlO2xldHtydW5Ub1NlcmllczpPLGVycm9yOmJ9PXk7aWYoYilnLmVycm9yPWIsZy5ydW5Ub1Nlcmllcz12b2lkIDA7ZWxzZXtnLnJ1blRvU2VyaWVzPWcucnVuVG9TZXJpZXN8fHt9O2ZvcihsZXQgUiBvZiBPYmplY3Qua2V5cyhPKSlnLnJ1blRvU2VyaWVzW1JdPU9bUl19fXJldHVybiBnfSkpfSk7cmV0dXJuIGdhKGUpfWZldGNoVGltZVNlcmllc0JhY2tlbmRSZXF1ZXN0KHQsZSl7bGV0IG89bmV3IEZvcm1EYXRhO3JldHVybiBvLmFwcGVuZCgicmVxdWVzdHMiLEpTT04uc3RyaW5naWZ5KFt0XSkpLHRoaXMuaHR0cC5wb3N0KGAvZXhwZXJpbWVudC8ke2V9LyR7V2p9L3RpbWVTZXJpZXNgLG8pLnBpcGUoRyhpPT4oe3Jlc3BvbnNlOmlbMF0sZXhwZXJpbWVudElkOmV9KSkpfWltYWdlVXJsKHQpe3JldHVybmAke1dqfS9pbWFnZURhdGE/aW1hZ2VJZD0ke3R9YH1kb3dubG9hZFVybCh0LGUsbyxpKXtsZXR7cnVuOmEsZXhwZXJpbWVudElkOnJ9PXZpdChvKSxzO3N3aXRjaCh0KXtjYXNlIExvLlNDQUxBUlM6cz0ic2NhbGFycy9zY2FsYXJzIjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgTm90IGltcGxlbWVudGVkOiBkb3dubG9hZFVybCBmb3IgJHt0fSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0YCl9aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJleHBlcmltZW50SWQgaXMgZW1wdHk7IGl0IGlzIHJlcXVpcmVkIHRvIGZvcm0gZG93bmxvYWRVcmwuIik7bGV0IGw9bmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmUscnVuOmEsZm9ybWF0Oml9KTtyZXR1cm5gL2V4cGVyaW1lbnQvJHtyfS9kYXRhL3BsdWdpbi8ke3N9PyR7bH1gfX07T00uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8T00pKEkoYWEpLEkoc3QpKX07T00uXHUwMjc1cHJvdj1QdCh7dG9rZW46T00sZmFjdG9yeTpPTS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoT00sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YWF9LHt0eXBlOnN0fV19LG51bGwpfSkoKTt2YXIgYVJ0PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCksZHA9Y2xhc3N7Z2V0UGFyYW1zKCl7cmV0dXJuIGFSdH19O2RwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGRwKX07ZHAuXHUwMjc1cHJvdj1QdCh7dG9rZW46ZHAsZmFjdG9yeTpkcC5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZHAsW3t0eXBlOlN0fV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gUml0KG4sdCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKG4pLm1hcCgoW2Usb10pPT57dmFyIGk7aWYobz09PXZvaWQgMClyZXR1cm57fTtsZXQgYT10W2VdO3JldHVybiFhfHwhYS5xdWVyeVBhcmFtT3ZlcnJpZGU/e306e2tleTphLnF1ZXJ5UGFyYW1PdmVycmlkZSx2YWx1ZTooaT1vKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkudG9TdHJpbmcoKX19KS5maWx0ZXIoKHtrZXk6ZSx2YWx1ZTpvfSk9PmUmJm8hPT12b2lkIDApfWZ1bmN0aW9uIHNSdChuLHQpe2xldCBlPW4ucXVlcnlQYXJhbU92ZXJyaWRlO2lmKCFlfHwhdC5oYXMoZSkpcmV0dXJuIG51bGw7bGV0IG89dC5nZXQoZSk7cmV0dXJuIG89PW51bGw/bnVsbDpuLnBhcnNlVmFsdWUobyl9ZnVuY3Rpb24gRWl0KG4sdCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgoZSxbbyxpXSk9PntsZXQgYT1zUnQoaSx0KTtpZihhIT09bnVsbCl7bGV0IHI9bztlW3JdPWF9cmV0dXJuIGV9LHt9KX12YXIgbFJ0PSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIixBRT0idGJfZmVhdHVyZV9mbGFnX3N0b3JhZ2Vfa2V5IixqZz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnF1ZXJ5UGFyYW1zPXR9Z2V0RmVhdHVyZXModCxlKXtsZXQgbz10P3RoaXMuZ2V0UGFydGlhbEZlYXR1cmVzRnJvbU1lZGlhUXVlcnkoKTp7fSxpPUVpdChlLHRoaXMucXVlcnlQYXJhbXMuZ2V0UGFyYW1zKCkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx0aGlzLmdldFBlcnNpc3RlbnRGZWF0dXJlRmxhZ3MoKSksaSl9cGVyc2lzdEZlYXR1cmVGbGFncyh0KXtsZXQgZT10aGlzLmdldFBlcnNpc3RlbnRGZWF0dXJlRmxhZ3MoKSxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx0KTtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShBRSxKU09OLnN0cmluZ2lmeShvKSl9cmVzZXRQZXJzaXN0ZWRGZWF0dXJlRmxhZyh0KXtsZXQgZT10aGlzLmdldFBlcnNpc3RlbnRGZWF0dXJlRmxhZ3MoKTtpZihlW3RdIT1udWxsKXtpZihkZWxldGUgZVt0XSxPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wKXtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShBRSk7cmV0dXJufWxvY2FsU3RvcmFnZS5zZXRJdGVtKEFFLEpTT04uc3RyaW5naWZ5KGUpKX19cmVzZXRBbGxQZXJzaXN0ZWRGZWF0dXJlRmxhZ3MoKXtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShBRSl9Z2V0UGVyc2lzdGVudEZlYXR1cmVGbGFncygpe2xldCB0PWxvY2FsU3RvcmFnZS5nZXRJdGVtKEFFKTtyZXR1cm4gdD09bnVsbD97fTpKU09OLnBhcnNlKHQpfWdldFBhcnRpYWxGZWF0dXJlc0Zyb21NZWRpYVF1ZXJ5KCl7bGV0IHQ9e307cmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKGxSdCkubWF0Y2hlcyYmKHQuZGVmYXVsdEVuYWJsZURhcmtNb2RlPSEwKSx0fX07amcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8amcpKEkoZHApKX07amcuXHUwMjc1cHJvdj1QdCh7dG9rZW46amcsZmFjdG9yeTpqZy5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoamcsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ZHB9XX0sbnVsbCl9KSgpO3ZhciBncD1jbGFzc3t9O2dwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGdwKX07Z3AuXHUwMjc1cHJvdj1QdCh7dG9rZW46Z3AsZmFjdG9yeTpncC5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZ3AsW3t0eXBlOlN0fV0sbnVsbCxudWxsKX0pKCk7dmFyIHdfPWNsYXNze307d18uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8d18pfTt3Xy5cdTAyNzVtb2Q9cSh7dHlwZTp3X30pO3dfLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W2pnLGRwLHtwcm92aWRlOmdwLHVzZUNsYXNzOmpnfV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMod18sW3t0eXBlOlosYXJnczpbe3Byb3ZpZGVyczpbamcsZHAse3Byb3ZpZGU6Z3AsdXNlQ2xhc3M6amd9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIERFPU50KCJbRkVBVFVSRSBGTEFHXSBQYXJ0aWFsIEZlYXR1cmUgRmxhZ3MgTG9hZGVkIixiZSgpKSxBRD1OdCgiW0ZFQVRVUkUgRkxBR10gRW5hYmxlIERhcmsgTW9kZSBPdmVycmlkZSBDaGFuZ2VkIixiZSgpKSxMdj1OdCgiW0ZFQVRVUkUgRkxBR10gU3RvcmUgdGhlIGZlYXR1cmUgZmxhZ3MgaW4gcGVyc2lzdGVudCBsb2NhbFN0b3JhZ2UiLGJlKCkpLEZ5PU50KCJbRkVBVFVSRSBGTEFHXSBSZXNldCBmZWF0dXJlIGZsYWcgb3ZlcnJpZGVzIixiZSgpKSxNMz1OdCgiW0ZFQVRVUkUgRkxBR10gUmVzZXQgYWxsIGZlYXR1cmUgZmxhZyBvdmVycmlkZXMiKTt2YXIgWmo9Il90Yl9mb3JjZV9zdmciLHVwPWNsYXNze2NvbnN0cnVjdG9yKCl7fWdldEZvcmNlU3ZnRmxhZygpe3JldHVybiEhbG9jYWxTdG9yYWdlLmdldEl0ZW0oWmopfXVwZGF0ZUZvcmNlU3ZnRmxhZyh0KXt0P2xvY2FsU3RvcmFnZS5zZXRJdGVtKFpqLCJwcmVzZW50Iik6bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oWmopfX07dXAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dXApfTt1cC5cdTAyNzVwcm92PVB0KHt0b2tlbjp1cCxmYWN0b3J5OnVwLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh1cCxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVybltdfSxudWxsKX0pKCk7dmFyIGtpdD1OdCgiW0ZFQVRVUkUgRkxBR10gRWZmZWN0cyBJbml0IiksUE09Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmRhdGFTb3VyY2U9byx0aGlzLmZvcmNlU3ZnRGF0YVNvdXJjZT1pLHRoaXMudGZGZWF0dXJlRmxhZ3M9e3JlZjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1mZWF0dXJlLWZsYWdzIikudGZfZmVhdHVyZV9mbGFnc30sdGhpcy5nZXRGZWF0dXJlRmxhZ3MkPU1hKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoRm8oa2l0KSxQYSh0aGlzLnN0b3JlLnNlbGVjdChpaXQpLHRoaXMuc3RvcmUuc2VsZWN0KHJEKSksRygoWyxhLHJdKT0+e2xldCBzPXRoaXMuZGF0YVNvdXJjZS5nZXRGZWF0dXJlcyhhLHIpO3JldHVybiBzLmZvcmNlU3ZnIT1udWxsP3RoaXMuZm9yY2VTdmdEYXRhU291cmNlLnVwZGF0ZUZvcmNlU3ZnRmxhZyhzLmZvcmNlU3ZnKTp0aGlzLmZvcmNlU3ZnRGF0YVNvdXJjZS5nZXRGb3JjZVN2Z0ZsYWcoKSYmKHMuZm9yY2VTdmc9ITApLERFKHtmZWF0dXJlczpzfSl9KSkpLHRoaXMudXBkYXRlUG9seW1lckZlYXR1cmVGbGFncyQ9TWEoKCk9PnRoaXMuYWN0aW9ucyQucGlwZShGbyhERSksT24odGhpcy5zdG9yZS5zZWxlY3QodG0pLHRoaXMuc3RvcmUuc2VsZWN0KHNEKSksYW4oKFssYSxyXSk9Pnt0aGlzLnRmRmVhdHVyZUZsYWdzLnJlZi5zZXRGZWF0dXJlRmxhZ3MoYSxyKX0pKSx7ZGlzcGF0Y2g6ITF9KSx0aGlzLnN0b3JlRmVhdHVyZUZsYWckPU1hKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoRm8oTHYpLGFuKCh7ZmxhZ3M6YX0pPT57dGhpcy5kYXRhU291cmNlLnBlcnNpc3RGZWF0dXJlRmxhZ3MoYSl9KSkse2Rpc3BhdGNoOiExfSksdGhpcy5yZXNldEZlYXR1cmVGbGFnT3ZlcnJpZGVzJD1NYSgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKEZvKEZ5KSxhbigoe2ZsYWdzOmF9KT0+e2EuZm9yRWFjaChyPT57dGhpcy5kYXRhU291cmNlLnJlc2V0UGVyc2lzdGVkRmVhdHVyZUZsYWcocil9KX0pKSx7ZGlzcGF0Y2g6ITF9KSx0aGlzLnJlc2V0QWxsRmVhdHVyZUZsYWdPdmVycmlkZXMkPU1hKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoRm8oTTMpLGFuKCgpPT57dGhpcy5kYXRhU291cmNlLnJlc2V0QWxsUGVyc2lzdGVkRmVhdHVyZUZsYWdzKCl9KSkse2Rpc3BhdGNoOiExfSl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4ga2l0KCl9fTtQTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxQTSkoSShUbyksSShzdCksSShncCksSSh1cCkpfTtQTS5cdTAyNzVwcm92PVB0KHt0b2tlbjpQTSxmYWN0b3J5OlBNLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhQTSxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUb30se3R5cGU6c3R9LHt0eXBlOmdwfSx7dHlwZTp1cH1dfSxudWxsKX0pKCk7dmFyIFNfPWNsYXNze307U18uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8U18pfTtTXy5cdTAyNzVtb2Q9cSh7dHlwZTpTX30pO1NfLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3VwXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhTXyxbe3R5cGU6WixhcmdzOlt7cHJvdmlkZXJzOlt1cF19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBOaXQ9IlgtVGVuc29yQm9hcmQtRmVhdHVyZS1GbGFncyI7dmFyIHlNPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH1pbnRlcmNlcHQodCxlKXtyZXR1cm4gdGhpcy5zdG9yZS5waXBlKHplKHNEKSxVNygpLHRpKG89Pih0PXQuY2xvbmUoe2hlYWRlcnM6dC5oZWFkZXJzLnNldChOaXQsSlNPTi5zdHJpbmdpZnkobykpfSksZS5oYW5kbGUodCkpKSl9fTt5TS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx5TSkoSShzdCkpfTt5TS5cdTAyNzVwcm92PVB0KHt0b2tlbjp5TSxmYWN0b3J5OnlNLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh5TSxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gTHkobil7cmV0dXJuIG4hPT0iZmFsc2UifWZ1bmN0aW9uIHBSdChuKXtyZXR1cm4gbj9uLnNwbGl0KCIsIik6W119dmFyIFhqPXtzY2FsYXJzQmF0Y2hTaXplOntkZWZhdWx0VmFsdWU6dm9pZCAwLHF1ZXJ5UGFyYW1PdmVycmlkZToic2NhbGFyc0JhdGNoU2l6ZSIscGFyc2VWYWx1ZTpwYXJzZUludH0sZW5hYmxlZEV4cGVyaW1lbnRhbFBsdWdpbnM6e2RlZmF1bHRWYWx1ZTpbXSxxdWVyeVBhcmFtT3ZlcnJpZGU6ImV4cGVyaW1lbnRhbFBsdWdpbiIscGFyc2VWYWx1ZTpwUnR9LGVuYWJsZWRMaW5rZWRUaW1lOntkZWZhdWx0VmFsdWU6ITEscXVlcnlQYXJhbU92ZXJyaWRlOiJlbmFibGVMaW5rZWRUaW1lIixwYXJzZVZhbHVlOkx5fSxlbmFibGVkU2NhbGFyRGF0YVRhYmxlOntkZWZhdWx0VmFsdWU6ITEscXVlcnlQYXJhbU92ZXJyaWRlOiJlbmFibGVEYXRhVGFibGUiLHBhcnNlVmFsdWU6THl9LGZvcmNlU3ZnOntkZWZhdWx0VmFsdWU6ITEscXVlcnlQYXJhbU92ZXJyaWRlOiJmb3JjZVNWRyIscGFyc2VWYWx1ZTpMeX0sZW5hYmxlRGFya01vZGVPdmVycmlkZTp7ZGVmYXVsdFZhbHVlOm51bGwscXVlcnlQYXJhbU92ZXJyaWRlOm51bGx9LGRlZmF1bHRFbmFibGVEYXJrTW9kZTp7ZGVmYXVsdFZhbHVlOiExLHF1ZXJ5UGFyYW1PdmVycmlkZToiZGFya01vZGUiLHBhcnNlVmFsdWU6THl9LGlzQXV0b0RhcmtNb2RlQWxsb3dlZDp7ZGVmYXVsdFZhbHVlOiEwLHF1ZXJ5UGFyYW1PdmVycmlkZTpudWxsfSxpbkNvbGFiOntkZWZhdWx0VmFsdWU6ITEscXVlcnlQYXJhbU92ZXJyaWRlOiJ0ZW5zb3Jib2FyZENvbGFiIixwYXJzZVZhbHVlOkx5fSxtZXRyaWNzSW1hZ2VTdXBwb3J0RW5hYmxlZDp7ZGVmYXVsdFZhbHVlOiEwLHF1ZXJ5UGFyYW1PdmVycmlkZTpudWxsfSxlbmFibGVTaG93RmxhZ3M6e2RlZmF1bHRWYWx1ZTohMSxxdWVyeVBhcmFtT3ZlcnJpZGU6InNob3dGbGFncyIscGFyc2VWYWx1ZTpMeX0sYWxsb3dSYW5nZVNlbGVjdGlvbjp7ZGVmYXVsdFZhbHVlOiExLHF1ZXJ5UGFyYW1PdmVycmlkZToiYWxsb3dSYW5nZVNlbGVjdGlvbiIscGFyc2VWYWx1ZTpMeX0sZW5hYmxlZFByb3NwZWN0aXZlRm9iOntkZWZhdWx0VmFsdWU6ITEscXVlcnlQYXJhbU92ZXJyaWRlOiJlbmFibGVQcm9zcGVjdGl2ZUZvYiIscGFyc2VWYWx1ZTpMeX19O2Z1bmN0aW9uIFRpdChuKXtyZXR1cm4gT2JqZWN0LmVudHJpZXMobikucmVkdWNlKCh0LFtlLG9dKT0+KHRbZV09by5kZWZhdWx0VmFsdWUsdCkse30pfXZhciBRaj17aXNGZWF0dXJlRmxhZ3NMb2FkZWQ6ITEsZGVmYXVsdEZsYWdzOlRpdChYaiksbWV0YWRhdGE6WGosZmxhZ092ZXJyaWRlczp7fX0sSUU9bmV3IHl0KCJbRmVhdHVyZSBGbGFnXSBTdG9yZSBDb25maWciKTtmdW5jdGlvbiBLaigpe3JldHVybntpbml0aWFsU3RhdGU6UWp9fXZhciBkUnQ9eGEoUWosWXQoREUsKG4se2ZlYXR1cmVzOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtpc0ZlYXR1cmVGbGFnc0xvYWRlZDohMCxmbGFnT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZsYWdPdmVycmlkZXMpLHQpfSkpLFl0KEFELChuLHtlbmFibGVEYXJrTW9kZTp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZmxhZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5mbGFnT3ZlcnJpZGVzKSx7ZW5hYmxlRGFya01vZGVPdmVycmlkZTp0fSl9KSksWXQoTHYsKG4sdCk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZmxhZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5mbGFnT3ZlcnJpZGVzKSx0LmZsYWdzKX0pKSxZdChGeSwobix0KT0+e2lmKCF0fHwhdC5mbGFnc3x8IXQuZmxhZ3MubGVuZ3RoKXJldHVybiBuO2xldCBlPU9iamVjdC5hc3NpZ24oe30sbi5mbGFnT3ZlcnJpZGVzKTtyZXR1cm4gdC5mbGFncy5mb3JFYWNoKG89PntkZWxldGUgZVtvXX0pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZmxhZ092ZXJyaWRlczplfSl9KSxZdChNMyxuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2ZsYWdPdmVycmlkZXM6e319KSksWXQocE0sKG4se3BhcnRpYWxTZXR0aW5nczp0fSk9PntpZighdC50aGVtZU92ZXJyaWRlKXJldHVybiBuO2xldCBlO3N3aXRjaCh0LnRoZW1lT3ZlcnJpZGUpe2Nhc2UgRGcuQlJPV1NFUl9ERUZBVUxUOmU9bnVsbDticmVhaztjYXNlIERnLkRBUks6ZT0hMDticmVhaztjYXNlIERnLkxJR0hUOmU9ITE7YnJlYWt9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZmxhZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5mbGFnT3ZlcnJpZGVzKSx7ZW5hYmxlRGFya01vZGVPdmVycmlkZTplfSl9KX0pKTtmdW5jdGlvbiBKaihuLHQpe3JldHVybiBkUnQobix0KX1mdW5jdGlvbiBBaXQoKXtyZXR1cm4gY3QobEQsbj0+bj09PW51bGw/e3RoZW1lT3ZlcnJpZGU6RGcuQlJPV1NFUl9ERUZBVUxUfTp7dGhlbWVPdmVycmlkZTpuP0RnLkRBUks6RGcuTElHSFR9KX12YXIgbHM9Y2xhc3N7fTtscy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxscyl9O2xzLlx1MDI3NW1vZD1xKHt0eXBlOmxzfSk7bHMuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbe3Byb3ZpZGU6SUUsdXNlRmFjdG9yeTpLan0se3Byb3ZpZGU6QXksdXNlQ2xhc3M6eU0sbXVsdGk6ITB9XSxpbXBvcnRzOltbU18sd18sY28uZm9yRmVhdHVyZShQRSxKaixJRSksSG8uZm9yRmVhdHVyZShbUE1dKSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKEFpdCldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhscyxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbU18sd18sY28uZm9yRmVhdHVyZShQRSxKaixJRSksSG8uZm9yRmVhdHVyZShbUE1dKSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKEFpdCldLHByb3ZpZGVyczpbe3Byb3ZpZGU6SUUsdXNlRmFjdG9yeTpLan0se3Byb3ZpZGU6QXksdXNlQ2xhc3M6eU0sbXVsdGk6ITB9XX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChscyx7aW1wb3J0czpbU18sd18sTm8scWksTm5dfSl9KSgpO3ZhciBZbD1jbGFzc3t9O1lsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFlsKX07WWwuXHUwMjc1bW9kPXEoe3R5cGU6WWx9KTtZbC5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlt7cHJvdmlkZTpwcCx1c2VDbGFzczpPTX1dLGltcG9ydHM6W1tscyxyYV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFlsLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltscyxyYV0scHJvdmlkZXJzOlt7cHJvdmlkZTpwcCx1c2VDbGFzczpPTX1dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFlsLHtpbXBvcnRzOltscyxyYV19KX0pKCk7dmFyIGdSdD0uMTtmdW5jdGlvbiBwUChuLHQsZSxvKXtyZXR1cm4gblt0XS5oYXNPd25Qcm9wZXJ0eShlKT9CZyh0KT9uW3RdW2VdLmhhc093blByb3BlcnR5KG8pP25bdF1bZV1bb106bnVsbDpuW3RdW2VdOm51bGx9ZnVuY3Rpb24gREQobix0LGUsbyl7aWYoQmcodCkpe2xldCByPU9iamVjdC5hc3NpZ24oe30sblt0XSkscz11UnQocixlLG8pO3JldHVybiByW2VdPXMscn1sZXQgaT1PYmplY3QuYXNzaWduKHt9LG5bdF0pLGE9aS5oYXNPd25Qcm9wZXJ0eShlKTtyZXR1cm4gaVtlXT1hP09iamVjdC5hc3NpZ24oe30saVtlXSk6SWl0KCksaX1mdW5jdGlvbiB1UnQobix0LGUpe2xldCBpPW4uaGFzT3duUHJvcGVydHkodCk/T2JqZWN0LmFzc2lnbih7fSxuW3RdKTp7fSxhPWkuaGFzT3duUHJvcGVydHkoZSk7cmV0dXJuIGlbZV09YT9PYmplY3QuYXNzaWduKHt9LGlbZV0pOklpdCgpLGl9ZnVuY3Rpb24gSWl0KCl7cmV0dXJue3J1blRvU2VyaWVzOnt9LHJ1blRvTG9hZFN0YXRlOnt9fX1mdW5jdGlvbiB6aXQobil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG4pfWZ1bmN0aW9uIGhSdChuKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe2Jhc2VDYXJkSWQ6bn0pfWZ1bmN0aW9uIElEKG4sdCxlKXtsZXQgbz1PYmplY3QuYXNzaWduKHt9LGUpO2ZvcihsZXQgaSBvZiB0KW9baV09bjtyZXR1cm4gb31mdW5jdGlvbiBiMyhuLHQsZSxvKXtpZihCZyh0KSl7bGV0IGE9blt0XS50YWdSdW5TYW1wbGVkSW5mbztyZXR1cm4gYS5oYXNPd25Qcm9wZXJ0eShlKT9PYmplY3Qua2V5cyhhW2VdKS5maWx0ZXIocz0+bzxhW2VdW3NdLm1heFNhbXBsZXNQZXJTdGVwKTpbXX1sZXQgaT1uW3RdLnRhZ1RvUnVucztyZXR1cm4gaS5oYXNPd25Qcm9wZXJ0eShlKT9pW2VdOltdfWZ1bmN0aW9uIF9SdChuLHQpe2xldCBlPSFuLnJ1bklkJiYhdC5ydW5JZDtyZXR1cm4gbi5wbHVnaW49PT10LnBsdWdpbiYmbi50YWc9PT10LnRhZyYmbi5zYW1wbGU9PT10LnNhbXBsZSYmKG4ucnVuSWQ9PT10LnJ1bklkfHxlKX1mdW5jdGlvbiAkaihuLHQsZSxvLGksYSxyKXtsZXQgcz1uZXcgU2V0KG4pLGw9W107Zm9yKGxldCBtIG9mIG4pZm9yKGxldCBmIG9mIHQpe2xldCBwPWVbZl07aWYoX1J0KHAsbSkpe2wucHVzaChmKSxzLmRlbGV0ZShtKTticmVha319aWYoIWwubGVuZ3RoKXJldHVybnt1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczpuLGNhcmRNZXRhZGF0YU1hcDplLGNhcmRUb1Bpbm5lZENvcHk6byxjYXJkVG9QaW5uZWRDb3B5Q2FjaGU6aSxwaW5uZWRDYXJkVG9PcmlnaW5hbDphLGNhcmRTdGVwSW5kZXg6cn07bGV0IGM9e2NhcmRUb1Bpbm5lZENvcHk6byxjYXJkVG9QaW5uZWRDb3B5Q2FjaGU6aSxwaW5uZWRDYXJkVG9PcmlnaW5hbDphLGNhcmRTdGVwSW5kZXg6cixjYXJkTWV0YWRhdGFNYXA6ZX07Zm9yKGxldCBtIG9mIGwpYz10VShtLGMuY2FyZFRvUGlubmVkQ29weSxjLmNhcmRUb1Bpbm5lZENvcHlDYWNoZSxjLnBpbm5lZENhcmRUb09yaWdpbmFsLGMuY2FyZFN0ZXBJbmRleCxjLmNhcmRNZXRhZGF0YU1hcCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7dW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHM6Wy4uLnNdfSl9ZnVuY3Rpb24gdFUobix0LGUsbyxpLGEpe2lmKHQuaGFzKG4pKXJldHVybntjYXJkVG9QaW5uZWRDb3B5OnQsY2FyZFRvUGlubmVkQ29weUNhY2hlOmUscGlubmVkQ2FyZFRvT3JpZ2luYWw6byxjYXJkU3RlcEluZGV4OmksY2FyZE1ldGFkYXRhTWFwOmF9O2xldCByPW5ldyBNYXAodCkscz1uZXcgTWFwKGUpLGw9bmV3IE1hcChvKSxjPU9iamVjdC5hc3NpZ24oe30saSksbT1PYmplY3QuYXNzaWduKHt9LGEpLGY9aFJ0KG4pO3Iuc2V0KG4sZikscy5zZXQobixmKSxsLnNldChmLG4pLGkuaGFzT3duUHJvcGVydHkobikmJihjW2ZdPWlbbl0pO2xldCBwPWFbbl07aWYoIXApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcGluIGEgY2FyZCB3aXRob3V0IG1ldGFkYXRhIik7cmV0dXJuIG1bZl09cCx7Y2FyZFRvUGlubmVkQ29weTpyLGNhcmRUb1Bpbm5lZENvcHlDYWNoZTpzLHBpbm5lZENhcmRUb09yaWdpbmFsOmwsY2FyZFN0ZXBJbmRleDpjLGNhcmRNZXRhZGF0YU1hcDptfX1mdW5jdGlvbiBIaXQobix0LGUpe2xldCBvPW5ldyBNYXAsaT1uZXcgTWFwLGE9e307cmV0dXJuIG4uZm9yRWFjaCgocixzKT0+e2UuaW5kZXhPZihzKSE9PS0xJiYoby5zZXQocyxyKSxpLnNldChyLHMpLGFbcl09dFtzXSl9KSx7bmV4dENhcmRUb1Bpbm5lZENvcHk6byxuZXh0UGlubmVkQ2FyZFRvT3JpZ2luYWw6aSxwaW5uZWRDYXJkTWV0YWRhdGFNYXA6YX19ZnVuY3Rpb24gRml0KG4sdCl7bGV0IGU9e307cmV0dXJuIE9iamVjdC5lbnRyaWVzKG4pLmZvckVhY2goKFtvLGldKT0+e3Rbb10mJihlW29dPWkpfSksZX12YXIgQ1J0PXtNQVhfUElOX0NPVU5UOjEwfTtmdW5jdGlvbiB6RChuKXtyZXR1cm4gbi5waW5uZWRDYXJkVG9PcmlnaW5hbC5zaXplK24udW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHMubGVuZ3RoPENSdC5NQVhfUElOX0NPVU5UfWZ1bmN0aW9uIGVVKG4sdCxlLG8pe2xldCBpPU9iamVjdC5hc3NpZ24oe30sbik7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goYT0+e2lmKCFhLmluY2x1ZGVzKCcicGx1Z2luIjoiaW1hZ2VzIicpKXJldHVybjtsZXQgcj1uVShhLHQsZSkscz1udWxsO2lmKG8uZW5kPT09bnVsbClzPWJSdChvLnN0YXJ0LnN0ZXAscik7ZWxzZXtsZXQgbD1uW2FdLmluZGV4LGM9cltsXSxtPU1SdChvLHIpO3M9T1J0KG0scixjKX1zIT09bnVsbCYmKGlbYV09cyl9KSxpfWZ1bmN0aW9uIG5VKG4sdCxlKXtpZighdC5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm5bXTtsZXR7cGx1Z2luOm8sdGFnOmksc2FtcGxlOmEscnVuSWQ6cn09dFtuXTtpZihyPT09bnVsbClyZXR1cm5bXTtsZXQgcz1wUChlLG8saSxhKTtyZXR1cm4gcz09PW51bGx8fCFzLnJ1blRvU2VyaWVzLmhhc093blByb3BlcnR5KHIpP1tdOnMucnVuVG9TZXJpZXNbcl0ubWFwKGw9Pmwuc3RlcCl9ZnVuY3Rpb24gTVJ0KG4sdCl7aWYoIW4pcmV0dXJuW107aWYobi5lbmQ9PT1udWxsKXJldHVybiB0LmluZGV4T2Yobi5zdGFydC5zdGVwKSE9PS0xP1tuLnN0YXJ0LnN0ZXBdOltdO2xldCBlPVtdO2ZvcihsZXQgbyBvZiB0KW8+PW4uc3RhcnQuc3RlcCYmbzw9bi5lbmQuc3RlcCYmZS5wdXNoKG8pO3JldHVybiBlfWZ1bmN0aW9uIGJSdChuLHQpe2xldCBlPXQuaW5kZXhPZihuKTtpZihlIT09LTEpcmV0dXJue2luZGV4OmUsaXNDbG9zZXN0OiExfTtmb3IobGV0IG89MDtvPHQubGVuZ3RoLTE7bysrKXtsZXQgaT10W29dLGE9dFtvKzFdLHI9KGEtaSkqZ1J0O2lmKG48aSlyZXR1cm4gbnVsbDtpZighKG4+YSkpe2lmKG4taTw9cilyZXR1cm57aW5kZXg6byxpc0Nsb3Nlc3Q6ITB9O2lmKGEtbjw9cilyZXR1cm57aW5kZXg6bysxLGlzQ2xvc2VzdDohMH19fXJldHVybiBudWxsfWZ1bmN0aW9uIE9SdChuLHQsZSl7aWYobi5sZW5ndGg9PT0wKXJldHVybiBudWxsO2xldCBvPW5bMF0saT1uW24ubGVuZ3RoLTFdO3JldHVybiBlPmk/e2luZGV4OnQuaW5kZXhPZihpKSxpc0Nsb3Nlc3Q6ITF9OmU8bz97aW5kZXg6dC5pbmRleE9mKG8pLGlzQ2xvc2VzdDohMX06bnVsbH12YXIgekU9Im1ldHJpY3MiLEhFPXtjYXJkTWluV2lkdGg6bnVsbCx0b29sdGlwU29ydDpRYS5BTFBIQUJFVElDQUwsaWdub3JlT3V0bGllcnM6ITAseEF4aXNUeXBlOlppLlNURVAsc2NhbGFyU21vb3RoaW5nOi42LHNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1g6ITEsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaToxZTMsaW1hZ2VDb250cmFzdEluTWlsbGk6MWUzLGltYWdlU2hvd0FjdHVhbFNpemU6ITEsaGlzdG9ncmFtTW9kZTp3ci5PRkZTRVR9O3ZhciBLYT1CYSh6RSksRkU9Y3QoS2Esbj0+bi50YWdNZXRhZGF0YUxvYWRTdGF0ZSksVHVlPWN0KEthLG49Pm4udGFnTWV0YWRhdGEpLHlSdD1jdChLYSxuPT5uLmNhcmRMaXN0KSxCeT1jdChLYSwobix0KT0+e2lmKCFuLmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gS3QuTk9UX0xPQURFRDtsZXR7cGx1Z2luOmUsdGFnOm8scnVuSWQ6aSxzYW1wbGU6YX09bi5jYXJkTWV0YWRhdGFNYXBbdF0scj1wUChuLnRpbWVTZXJpZXNEYXRhLGUsbyxhKTtpZighcilyZXR1cm4gS3QuTk9UX0xPQURFRDtsZXQgcz1yLnJ1blRvTG9hZFN0YXRlO2lmKGkpcmV0dXJuIHMuaGFzT3duUHJvcGVydHkoaSk/c1tpXTpLdC5OT1RfTE9BREVEO2xldCBsPWIzKG4udGFnTWV0YWRhdGEsZSxvLGEpO2lmKCFsLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIGEgY2FyZCB3aG9zZSB0YWcgaGFzIG5vIHJ1bnMiKTtyZXR1cm4gbC5ldmVyeShjPT5zW2NdPT09S3QuTE9BREVEKT9LdC5MT0FERUQ6bC5zb21lKGM9PnNbY109PT1LdC5MT0FESU5HKT9LdC5MT0FESU5HOkt0Lk5PVF9MT0FERUR9KSxWeT1jdChLYSwobix0KT0+e2lmKCFuLmNhcmRNZXRhZGF0YU1hcC5oYXNPd25Qcm9wZXJ0eSh0KSlyZXR1cm4gbnVsbDtsZXR7cGx1Z2luOmUsdGFnOm8sc2FtcGxlOml9PW4uY2FyZE1ldGFkYXRhTWFwW3RdLGE9cFAobi50aW1lU2VyaWVzRGF0YSxlLG8saSk7cmV0dXJuIGE/YS5ydW5Ub1NlcmllczpudWxsfSksb1U9Y3QoS2Esbj0+bi5jYXJkTWV0YWRhdGFNYXApLFJfPWN0KG9VLChuLHQpPT5uLmhhc093blByb3BlcnR5KHQpP25bdF06bnVsbCkseFJ0PWN0KEthLG49Pm4udmlzaWJsZUNhcmRNYXApLExpdD1jdCh4UnQsbj0+bmV3IFNldChuLnZhbHVlcygpKSksSEQ9Y3QoeVJ0LG9VLChuLHQpPT5uLmZpbHRlcihlPT50Lmhhc093blByb3BlcnR5KGUpKS5tYXAoZT0+T2JqZWN0LmFzc2lnbih7Y2FyZElkOmV9LHRbZV0pKSksaVU9Y3QoS2EsKG4sdCk9Pm4uY2FyZFN0ZXBJbmRleC5oYXNPd25Qcm9wZXJ0eSh0KT9uLmNhcmRTdGVwSW5kZXhbdF06bnVsbCksQml0PWN0KEthLChuLHQpPT5uVSh0LG4uY2FyZE1ldGFkYXRhTWFwLG4udGltZVNlcmllc0RhdGEpKSxWaXQ9Y3QoS2Esbj0+bi5jYXJkVG9QaW5uZWRDb3B5KSx2UnQ9Y3QoS2Esbj0+bi5waW5uZWRDYXJkVG9PcmlnaW5hbCksTEU9Y3QoVml0LG9VLChuLHQpPT5bLi4ubi52YWx1ZXMoKV0uZmlsdGVyKGU9PnQuaGFzT3duUHJvcGVydHkoZSkpLm1hcChlPT5PYmplY3QuYXNzaWduKHtjYXJkSWQ6ZX0sdFtlXSkpKSxqeT1jdChWaXQsdlJ0LChuLHQsZSk9Pm4uaGFzKGUpfHx0LmhhcyhlKSksaml0PWN0KEthLG49Pm4udW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHMpLFVpdD1jdChLYSxuPT56RChuKSksSmI9Y3QoS2Esbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc2V0dGluZ3MpLG4uc2V0dGluZ092ZXJyaWRlcykpLFlpdD1jdChLYSxuPT5uLnNldHRpbmdPdmVycmlkZXMpLE8zPWN0KEpiLG49Pm4uY2FyZE1pbldpZHRoKSxQMz1jdChKYixuPT5uLnRvb2x0aXBTb3J0KSx5Mz1jdChKYixuPT5uLmlnbm9yZU91dGxpZXJzKSxFXz1jdChKYixuPT5uLnhBeGlzVHlwZSksRkQ9Y3QoSmIsbj0+bi5oaXN0b2dyYW1Nb2RlKSxkUD1jdChKYixuPT5uLnNjYWxhclNtb290aGluZyksTEQ9Y3QoSmIsbj0+bi5zY2FsYXJQYXJ0aXRpb25Ob25Nb25vdG9uaWNYKSxCRD1jdChKYixuPT5uLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkpLFZEPWN0KEpiLG49Pm4uaW1hZ2VDb250cmFzdEluTWlsbGkpLGpEPWN0KEpiLG49Pm4uaW1hZ2VTaG93QWN0dWFsU2l6ZSkseE09Y3QoS2Esbj0+bi50YWdGaWx0ZXIpLFVEPWN0KEthLChuLHQpPT5Cb29sZWFuKG4udGFnR3JvdXBFeHBhbmRlZC5nZXQodCkpKSxCdj1jdChLYSxuPT5uLmxpbmtlZFRpbWVFbmFibGVkKSxVeT1jdChLYSxuPT5uLnN0ZXBTZWxlY3RvckVuYWJsZWQpLFZ2PWN0KEthLG49Pm4ucmFuZ2VTZWxlY3Rpb25FbmFibGVkKSxhVT1jdChLYSxuPT57bGV0e21pbjp0LG1heDplfT1uLnN0ZXBNaW5NYXg7cmV0dXJue21pbjp0PT09MS8wPzA6dCxtYXg6ZT09PS0xLzA/MWUzOmV9fSksclU9Y3QoS2EsYVUsKG4sdCk9Pm4ubGlua2VkVGltZVNlbGVjdGlvbj9uLmxpbmtlZFRpbWVTZWxlY3Rpb246e3N0YXJ0OntzdGVwOnQubWlufSxlbmQ6bnVsbH0pLGp2PWN0KEthLHJVLChuLHQpPT5uLmxpbmtlZFRpbWVFbmFibGVkP24ucmFuZ2VTZWxlY3Rpb25FbmFibGVkP3Q6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtlbmQ6bnVsbH0pOm51bGwpLCRiPWN0KEthLG49Pm4uZmlsdGVyZWRQbHVnaW5UeXBlcyksWUQ9Y3QoS2Esbj0+bi5pc1NldHRpbmdzUGFuZU9wZW4pO3ZhciBHaXQ7KGZ1bmN0aW9uKG4pe25bbi5OT05FPTBdPSJOT05FIixuW24uV0hBVFNfTkVXPTFdPSJXSEFUU19ORVcifSkoR2l0fHwoR2l0PXt9KSk7dmFyIFdpdD0ibm90aWZpY2F0aW9uIjt2YXIgcWl0PUJhKFdpdCksSHVlPWN0KHFpdCxuPT5uLm5vdGlmaWNhdGlvbnMpLEZ1ZT1jdChxaXQsbj0+e3ZhciB0O3JldHVybih0PW4ubGFzdFJlYWRUaW1lc3RhbXBJbk1zKSE9PW51bGwmJnQhPT12b2lkIDA/dDotMX0pO3ZhciBCRT0icnVucyIsVkU9NTAwO3ZhciBnUDsoZnVuY3Rpb24obil7bltuLkVYUEVSSU1FTlRfTkFNRT0wXT0iRVhQRVJJTUVOVF9OQU1FIixuW24uSFBBUkFNPTFdPSJIUEFSQU0iLG5bbi5NRVRSSUM9Ml09Ik1FVFJJQyIsbltuLlJVTl9OQU1FPTNdPSJSVU5fTkFNRSJ9KShnUHx8KGdQPXt9KSk7dmFyIGJhOyhmdW5jdGlvbihuKXtuW24uUlVOPTBdPSJSVU4iLG5bbi5FWFBFUklNRU5UPTFdPSJFWFBFUklNRU5UIixuW24uUkVHRVg9Ml09IlJFR0VYIn0pKGJhfHwoYmE9e30pKTtmdW5jdGlvbiBqRShuLHQsZSl7bGV0IG89e30saT1bXSxhPXttYXRjaGVzOm8sbm9uTWF0Y2hlczppfTtzd2l0Y2gobi5rZXkpe2Nhc2UgYmEuUlVOOmZvcihsZXQgcyBvZiB0KW9bcy5pZF09W3NdO2JyZWFrO2Nhc2UgYmEuRVhQRVJJTUVOVDpmb3IobGV0IHMgb2YgdCl7bGV0IGw9ZVtzLmlkXSxjPW9bbF18fFtdO2MucHVzaChzKSxvW2xdPWN9YnJlYWs7Y2FzZSBiYS5SRUdFWDppZighbi5yZWdleFN0cmluZylicmVhaztsZXQgcjt0cnl7cj1uZXcgUmVnRXhwKG4ucmVnZXhTdHJpbmcpfWNhdGNoKHMpe2JyZWFrfWZvcihsZXQgcyBvZiB0KXtsZXQgbD1zLm5hbWUubWF0Y2gocik7aWYobCl7bGV0IG09bC5sZW5ndGg+MT9KU09OLnN0cmluZ2lmeShsLnNsaWNlKDEpKToicHNldWRvX2dyb3VwIixmPW9bbV18fFtdO2YucHVzaChzKSxvW21dPWZ9ZWxzZSBpLnB1c2gocyl9YnJlYWs7ZGVmYXVsdDp9cmV0dXJuIGF9ZnVuY3Rpb24gR0Qobix0KXtzd2l0Y2gobil7Y2FzZSBiYS5SRUdFWDpyZXR1cm57a2V5Om4scmVnZXhTdHJpbmc6dCE9bnVsbD90OiIifTtjYXNlIGJhLlJVTjpjYXNlIGJhLkVYUEVSSU1FTlQ6ZGVmYXVsdDpyZXR1cm57a2V5Om59fX12YXIgWml0PUJhKEJFKSxVZz1jdChaaXQsbj0+bi5kYXRhKSxYaXQ9Y3QoVWcsbj0+bi5ydW5JZFRvRXhwSWQpLFdEPWN0KFVnLChuLHQpPT57dmFyIGU7cmV0dXJuKGU9bi5ydW5JZFRvRXhwSWRbdC5ydW5JZF0pIT09bnVsbCYmZSE9PXZvaWQgMD9lOm51bGx9KSxxRD1jdChVZywobix0KT0+e3ZhciBlO3JldHVybihlPW4ucnVuTWV0YWRhdGFbdC5ydW5JZF0pIT09bnVsbCYmZSE9PXZvaWQgMD9lOm51bGx9KSx0Tz1jdChVZywobix0KT0+KG4ucnVuSWRzW3QuZXhwZXJpbWVudElkXXx8W10pLmZpbHRlcihvPT5Cb29sZWFuKG4ucnVuTWV0YWRhdGFbb10pKS5tYXAobz0+bi5ydW5NZXRhZGF0YVtvXSkpLFFpdD1jdChVZywobix0KT0+e3ZhciBlO3JldHVybihlPW4ucnVuSWRzW3QuZXhwZXJpbWVudElkXSkhPT1udWxsJiZlIT09dm9pZCAwP2U6W119KSxaRD1jdChVZyxuPT5uZXcgTWFwKE9iamVjdC5lbnRyaWVzKG4ucnVuTWV0YWRhdGEpKSksVUU9Y3QoVWcsKG4sdCk9Pm4ucnVuc0xvYWRTdGF0ZVt0LmV4cGVyaW1lbnRJZF18fHtsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTpLdC5OT1RfTE9BREVEfSksc1U9Y3QoVWcsbj0+bi51c2VyU2V0R3JvdXBCeUtleSE9PW51bGw/R0Qobi51c2VyU2V0R3JvdXBCeUtleSxuLmNvbG9yR3JvdXBSZWdleFN0cmluZyk6bnVsbCksS2l0PWN0KHNVLFVnLChuLHQpPT5uIT1udWxsP246dC5pbml0aWFsR3JvdXBCeSksVXY9Y3QoVWcsbj0+bi5yZWdleEZpbHRlciksbFU9Y3QoWml0LG49Pm4udWkpLGNVPWN0KGxVLG49Pm4ucGFnaW5hdGlvbk9wdGlvbiksbVU9Y3QobFUsbj0+bi5zb3J0KSxKaXQ9Y3QobFUsbj0+bi5zZWxlY3Rpb25TdGF0ZSksJGl0PWN0KFVnLG49Pm4ucnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnkpLHRhdD1jdChVZyxuPT5uLmRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeSksWEQ9Y3QoVWcsbj0+bi5jb2xvckdyb3VwUmVnZXhTdHJpbmcpO3ZhciBRRD17fTtZUyhRRCx7Y2hhbmdlUGFnZVNpemU6KCk9PldFLGNoYW5nZVJlbG9hZFBlcmlvZDooKT0+R0UsdG9nZ2xlUmVsb2FkRW5hYmxlZDooKT0+WUV9KTt2YXIgWUU9TnQoIltTZXR0aW5nc10gUmVsb2FkIEVuYWJsZSBUb2dnbGVkIiksR0U9TnQoIltTZXR0aW5nc10gUmVsb2FkIFBlcmlvZCBDaGFuZ2UiLGJlKCkpLFdFPU50KCJbU2V0dGluZ3NdIFBhZ2UgU2l6ZSBDaGFuZ2UiLGJlKCkpO3ZhciBKbT17fTtZUyhKbSx7Z2V0Q29sb3JQYWxldHRlOigpPT53UnQsZ2V0UGFnZVNpemU6KCk9Pll2LGdldFJlbG9hZEVuYWJsZWQ6KCk9PlhFLGdldFJlbG9hZFBlcmlvZEluTXM6KCk9PlFFLGdldFNldHRpbmdzTG9hZFN0YXRlOigpPT5mVX0pO3ZhciBlYXQ9e2lkOiJkZWZhdWx0IixuYW1lOiJEZWZhbHQiLGNvbG9yczpbe25hbWU6IlNsYXRlIixsaWdodEhleDoiIzQyNTA2NiIsZGFya0hleDoiIzhlOThhMyJ9LHtuYW1lOiJDeWFuIixsaWdodEhleDoiIzEyYjVjYiIsZGFya0hleDoiIzEyYjVjYiJ9LHtuYW1lOiJQaW5rIixsaWdodEhleDoiI2U1MjU5MiIsZGFya0hleDoiI2U1MjU5MiJ9LHtuYW1lOiJZZWxsb3ciLGxpZ2h0SGV4OiIjZjlhYjAwIixkYXJrSGV4OiIjZjlhYjAwIn0se25hbWU6IlB1cnBsZSIsbGlnaHRIZXg6IiM5MzM0ZTYiLGRhcmtIZXg6IiM5MzM0ZTYifSx7bmFtZToiTGlnaHQgR3JlZW4iLGxpZ2h0SGV4OiIjN2NiMzQyIixkYXJrSGV4OiIjN2NiMzQyIn0se25hbWU6Ik9yYW5nZSIsbGlnaHRIZXg6IiNlODcxMGEiLGRhcmtIZXg6IiNlODcxMGEifV0saW5hY3RpdmU6e25hbWU6IkdyYXkiLGxpZ2h0SGV4OiIjZTBlMGUwIixkYXJrSGV4OiIjM2IzYjNiIn19O3ZhciBxRT0ic2V0dGluZ3MiLG5hdD17c3RhdGU6S3QuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpLHNldHRpbmdzOntyZWxvYWRQZXJpb2RJbk1zOjNlNCxyZWxvYWRFbmFibGVkOiExLHBhZ2VTaXplOjEyLGNvbG9yUGFsZXR0ZTplYXR9fTt2YXIgWkU9QmEocUUpLGZVPWN0KFpFLG49Pm4uc3RhdGUpLFhFPWN0KFpFLG49Pm4uc2V0dGluZ3MucmVsb2FkRW5hYmxlZCksUUU9Y3QoWkUsbj0+bi5zZXR0aW5ncy5yZWxvYWRQZXJpb2RJbk1zKSxZdj1jdChaRSxuPT5uLnNldHRpbmdzLnBhZ2VTaXplKSx3UnQ9Y3QoWkUsbj0+bi5zZXR0aW5ncy5jb2xvclBhbGV0dGUpO2Z1bmN0aW9uIEtEKG4sdCxlKXtpZighdClyZXR1cm4hMDtsZXQgbzt0cnl7bz1uZXcgUmVnRXhwKHQsImkiKX1jYXRjaChhKXtyZXR1cm4hMX1sZXQgaT1bbi5ydW5OYW1lXTtyZXR1cm4gZSYmaS5wdXNoKG4uZXhwZXJpbWVudEFsaWFzLmFsaWFzVGV4dCxgJHtuLmV4cGVyaW1lbnRBbGlhcy5hbGlhc1RleHR9LyR7bi5ydW5OYW1lfWApLGkuc29tZShhPT5vLnRlc3QoYSkpfXZhciBTUnQ9Y3QoSnMsSml0LFhpdCwobix0LGUpPT57aWYoIW4pcmV0dXJuIG5ldyBNYXA7bGV0IG89bmV3IE1hcDtmb3IobGV0W2ksYV1vZiB0LmVudHJpZXMoKSl7bGV0IHI9ZVtpXTtyJiZuLmluZGV4T2Yocik+PTAmJm8uc2V0KGksYSl9cmV0dXJuIG99KSxMcj1jdChKcyxTUnQsVXYsbj0+e3ZhciB0O2xldCBlPSh0PUpzKG4pKSE9PW51bGwmJnQhPT12b2lkIDA/dDpbXSxvPVpiKG4pLGk9bmV3IE1hcDtmb3IobGV0IGEgb2YgZSl7bGV0IHI9dE8obix7ZXhwZXJpbWVudElkOmF9KTtmb3IobGV0IHMgb2YgcilpLnNldChzLmlkLHtydW5OYW1lOnMubmFtZSxleHBlcmltZW50QWxpYXM6b1thXX0pfXJldHVybiBpfSxxYiwobix0LGUsbyxpKT0+e2lmKCFuKXJldHVybiBudWxsO2xldCBhPWk9PT1Xby5DT01QQVJFX0VYUEVSSU1FTlQscj1uZXcgTWFwO2ZvcihsZXRbcyxsXW9mIHQuZW50cmllcygpKXtsZXQgYz1vLmdldChzKTtyLnNldChzLEtEKGMsZSxhKSYmbCl9cmV0dXJuIHJ9KSxrXz1jdChKbS5nZXRDb2xvclBhbGV0dGUsdGF0LCRpdCxRYiwobix0LGUsbyk9PntsZXQgaT17fTtyZXR1cm4gdC5mb3JFYWNoKChhLHIpPT57bGV0IHM9bz9uLmluYWN0aXZlLmRhcmtIZXg6bi5pbmFjdGl2ZS5saWdodEhleDtpZihlLmhhcyhyKSlzPWUuZ2V0KHIpO2Vsc2UgaWYoYT49MCl7bGV0IGw9bi5jb2xvcnNbYSVuLmNvbG9ycy5sZW5ndGhdO3M9bz9sLmRhcmtIZXg6bC5saWdodEhleH1pW3JdPXN9KSxpfSk7dmFyIHZNPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMucnVuc0RhdGFTb3VyY2U9byx0aGlzLmxvYWRSdW5zT25SdW5UYWJsZVNob3duJD1NYSgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKEZvKHdEKSxVbigoe2V4cGVyaW1lbnRJZHM6aX0pPT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZShpLHI9PnI9PT1LdC5GQUlMRUR8fHI9PT1LdC5OT1RfTE9BREVEKS5waXBlKHVlKHI9PiEhci5sZW5ndGgpLFVuKHI9PnRoaXMuZmV0Y2hBbGxSdW5zTGlzdChpLHIpKSkpKSx7ZGlzcGF0Y2g6ITF9KSx0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUm91dGVDaGFuZ2UkPXRoaXMuYWN0aW9ucyQucGlwZShGbyh5XyksT24odGhpcy5zdG9yZS5zZWxlY3QodHApKSxYbygoWyxpXSxbLGFdKT0+S2MoaSxhKSksT24odGhpcy5zdG9yZS5zZWxlY3QoSnMpKSx1ZSgoWyxpXSk9PiEhaSksRygoWyxpXSk9PmkpLFVuKGk9PnRoaXMuZ2V0RXhwZXJpbWVudHNXaXRoTG9hZFN0YXRlKGksYT0+YT09PUt0LkZBSUxFRHx8YT09PUt0Lk5PVF9MT0FERUQpLnBpcGUoRyhhPT4oe2V4cGVyaW1lbnRJZHM6aSxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6YX0pKSkpKSx0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUmVsb2FkJD10aGlzLmFjdGlvbnMkLnBpcGUoRm8oS20sbXApLE9uKHRoaXMuc3RvcmUuc2VsZWN0KEpzKSksdWUoKFssaV0pPT4hIWkpLEcoKFssaV0pPT5pKSxVbihpPT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZShpLGE9PmEhPT1LdC5MT0FESU5HKS5waXBlKEcoYT0+KHtleHBlcmltZW50SWRzOmksZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmF9KSkpKSksdGhpcy5sb2FkUnVuc09uTmF2aWdhdGlvbk9yUmVsb2FkJD1NYSgoKT0+eW4odGhpcy5leHBlcmltZW50c1dpdGhTdGFsZVJ1bnNPblJvdXRlQ2hhbmdlJCx0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUmVsb2FkJCkucGlwZShVbigoe2V4cGVyaW1lbnRJZHM6aSxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6YX0pPT50aGlzLmZldGNoQWxsUnVuc0xpc3QoaSxhKSkpLHtkaXNwYXRjaDohMX0pfWdldFJ1bnNMaXN0TG9hZFN0YXRlKHQpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChVRSx7ZXhwZXJpbWVudElkOnR9KS5waXBlKENuKDEpKX1nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCxlKXtyZXR1cm4gZ2EodC5tYXAobz0+dGhpcy5nZXRSdW5zTGlzdExvYWRTdGF0ZShvKSkpLnBpcGUoRyhvPT50LmZpbHRlcigoaSxhKT0+ZShvW2FdLnN0YXRlKSkpKX1mZXRjaEFsbFJ1bnNMaXN0KHQsZSl7cmV0dXJuIGRuKHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOmV9KS5waXBlKGFuKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChNRCh7ZXhwZXJpbWVudElkczp0LHJlcXVlc3RlZEV4cGVyaW1lbnRJZHM6ZX0pKX0pLFVuKCgpPT57bGV0IG89bmV3IFNldChlKSxpPXQubWFwKGE9Pm8uaGFzKGEpP3RoaXMuZmV0Y2hSdW5zRm9yRXhwZXJpbWVudChhKTp0aGlzLm1heWJlV2FpdEZvclJ1bnNBbmRHZXRSdW5zKGEpKTtyZXR1cm4gZ2EoaSl9KSxHKG89PntsZXQgaT17fSxhPVtdO2ZvcihsZXQgciBvZiBvKWEucHVzaCguLi5yLnJ1bnMpLHIuZnJvbVJlbW90ZSYmKGlbci5leHBlcmltZW50SWRdPXtydW5zOnIucnVucyxtZXRhZGF0YTpyLm1ldGFkYXRhfSk7cmV0dXJue25ld1J1bnNBbmRNZXRhZGF0YTppLHJ1bnNGb3JBbGxFeHBlcmltZW50czphfX0pLGFuKCh7bmV3UnVuc0FuZE1ldGFkYXRhOm8scnVuc0ZvckFsbEV4cGVyaW1lbnRzOml9KT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goenkoe2V4cGVyaW1lbnRJZHM6dCxuZXdSdW5zQW5kTWV0YWRhdGE6byxydW5zRm9yQWxsRXhwZXJpbWVudHM6aX0pKX0pLG5zKG89Pih0aGlzLnN0b3JlLmRpc3BhdGNoKGgzKHtleHBlcmltZW50SWRzOnQscmVxdWVzdGVkRXhwZXJpbWVudElkczplfSkpLGRuKG51bGwpKSksRygoKT0+bnVsbCkpfW1heWJlV2FpdEZvclJ1bnNBbmRHZXRSdW5zKHQpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChVRSx7ZXhwZXJpbWVudElkOnR9KS5waXBlKHVlKGU9PmUuc3RhdGUhPT1LdC5MT0FESU5HKSxDbigxKSxVbihlPT5lLnN0YXRlPT09S3QuRkFJTEVEP0xDKG5ldyBFcnJvcigiUGVuZGluZyByZXF1ZXN0IGZhaWxlZCIpKTpkbihlKSksT24odGhpcy5zdG9yZS5zZWxlY3QodE8se2V4cGVyaW1lbnRJZDp0fSkpLEcoKFssZV0pPT4oe2Zyb21SZW1vdGU6ITEsZXhwZXJpbWVudElkOnQscnVuczplfSkpKX1mZXRjaFJ1bnNGb3JFeHBlcmltZW50KHQpe3JldHVybiBnYShbdGhpcy5ydW5zRGF0YVNvdXJjZS5mZXRjaFJ1bnModCksdGhpcy5ydW5zRGF0YVNvdXJjZS5mZXRjaEhwYXJhbXNNZXRhZGF0YSh0KV0pLnBpcGUoRygoW2Usb10pPT4oe2Zyb21SZW1vdGU6ITAsZXhwZXJpbWVudElkOnQscnVuczplLG1ldGFkYXRhOm99KSkpfX07dk0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dk0pKEkoVG8pLEkoc3QpLEkoZnApKX07dk0uXHUwMjc1cHJvdj1QdCh7dG9rZW46dk0sZmFjdG9yeTp2TS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModk0sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VG99LHt0eXBlOnN0fSx7dHlwZTpmcH1dfSxudWxsKX0pKCk7dmFyIHdNOyhmdW5jdGlvbihuKXtuLkFTQz0iYXNjIixuLkRFU0M9ImRlc2MiLG4uVU5TRVQ9IiJ9KSh3TXx8KHdNPXt9KSk7dmFyIG9hdDsoZnVuY3Rpb24obil7bi5FWFBFUklNRU5UX0lEPSJpZCIsbi5VU0VSPSJ1c2VyIixuLkJFRk9SRT0iYmVmb3JlIixuLkFGVEVSPSJhZnRlciIsbi5SRUdFWD0icmVnZXgifSkob2F0fHwob2F0PXt9KSk7dmFye2luaXRpYWxTdGF0ZTpSUnQscmVkdWNlcnM6RVJ0fT16dih7cnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6bmV3IE1hcCxkZWZhdWx0UnVuQ29sb3JJZEZvckdyb3VwQnk6bmV3IE1hcCxncm91cEtleVRvQ29sb3JJZDpuZXcgTWFwLGluaXRpYWxHcm91cEJ5OntrZXk6YmEuUlVOfSx1c2VyU2V0R3JvdXBCeUtleTpudWxsLGNvbG9yR3JvdXBSZWdleFN0cmluZzoiIixyZWdleEZpbHRlcjoiIn0se3J1bklkczp7fSxydW5JZFRvRXhwSWQ6e30scnVuTWV0YWRhdGE6e30scnVuc0xvYWRTdGF0ZTp7fX0sKG4sdCxlKT0+S2ModCxlKT9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aW5pdGlhbEdyb3VwQnk6e2tleTplLnJvdXRlS2luZD09PVdvLkNPTVBBUkVfRVhQRVJJTUVOVD9iYS5FWFBFUklNRU5UOmJhLlJVTn19KSksa1J0PXhhKFJSdCxZdChyMywobix7cm91dGVLaW5kOnQscGFydGlhbFN0YXRlOmV9KT0+e3ZhciBvLGk7aWYodCE9PVdvLkNPTVBBUkVfRVhQRVJJTUVOVCYmdCE9PVdvLkVYUEVSSU1FTlQpcmV0dXJuIG47bGV0IGE9ZSxyPWEucnVucy5ncm91cEJ5LHM9KG89YS5ydW5zLnJlZ2V4RmlsdGVyKSE9PW51bGwmJm8hPT12b2lkIDA/bzoiIjtpZighciYmIXMpcmV0dXJuIG47bGV0e2NvbG9yR3JvdXBSZWdleFN0cmluZzpsLHVzZXJTZXRHcm91cEJ5S2V5OmN9PW47cmV0dXJuIHImJihsPXIua2V5PT09YmEuUkVHRVg/ci5yZWdleFN0cmluZzpuLmNvbG9yR3JvdXBSZWdleFN0cmluZyxjPShpPXIua2V5KSE9PW51bGwmJmkhPT12b2lkIDA/aTpudWxsKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2NvbG9yR3JvdXBSZWdleFN0cmluZzpsLHJlZ2V4RmlsdGVyOnMsdXNlclNldEdyb3VwQnlLZXk6Y30pfSksWXQoTUQsKG4sdCk9PntsZXQgZT1PYmplY3QuYXNzaWduKHt9LG4ucnVuc0xvYWRTdGF0ZSk7Zm9yKGxldCBvIG9mIHQucmVxdWVzdGVkRXhwZXJpbWVudElkcyllW29dP2Vbb109T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGVbb10pLHtzdGF0ZTpLdC5MT0FESU5HfSk6ZVtvXT17bGFzdExvYWRlZFRpbWVJbk1zOm51bGwsc3RhdGU6S3QuTE9BRElOR307cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7cnVuc0xvYWRTdGF0ZTplfSl9KSxZdCh6eSwobix0KT0+e2xldCBlPU9iamVjdC5hc3NpZ24oe30sbi5ydW5JZHMpLG89T2JqZWN0LmFzc2lnbih7fSxuLnJ1bk1ldGFkYXRhKSxpPU9iamVjdC5hc3NpZ24oe30sbi5ydW5JZFRvRXhwSWQpLGE9T2JqZWN0LmFzc2lnbih7fSxuLnJ1bnNMb2FkU3RhdGUpO2ZvcihsZXQgciBvZiBPYmplY3Qua2V5cyh0Lm5ld1J1bnNBbmRNZXRhZGF0YSkpe2xldHtydW5zOnMsbWV0YWRhdGE6bH09dC5uZXdSdW5zQW5kTWV0YWRhdGFbcl07ZVtyXT1zLm1hcCgoe2lkOmN9KT0+YyksYVtyXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYVtyXSkse2xhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpLHN0YXRlOkt0LkxPQURFRH0pO2ZvcihsZXQgYyBvZiBzKXtsZXQgbT1sLnJ1blRvSHBhcmFtc0FuZE1ldHJpY3NbYy5pZF07b1tjLmlkXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYykse2hwYXJhbXM6bT9tLmhwYXJhbXM6bnVsbCxtZXRyaWNzOm0/bS5tZXRyaWNzOm51bGx9KSxpW2MuaWRdPXJ9fXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3J1bklkczplLHJ1bklkVG9FeHBJZDppLHJ1bk1ldGFkYXRhOm8scnVuc0xvYWRTdGF0ZTphfSl9KSxZdChoMywobix0KT0+e2xldCBlPU9iamVjdC5hc3NpZ24oe30sbi5ydW5zTG9hZFN0YXRlKTtmb3IobGV0IG8gb2YgdC5yZXF1ZXN0ZWRFeHBlcmltZW50SWRzKWVbb10/ZVtvXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZVtvXSkse3N0YXRlOkt0LkZBSUxFRH0pOmVbb109e2xhc3RMb2FkZWRUaW1lSW5NczpudWxsLHN0YXRlOkt0LkZBSUxFRH07cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7cnVuc0xvYWRTdGF0ZTplfSl9KSxZdCh6eSwobix7cnVuc0ZvckFsbEV4cGVyaW1lbnRzOnR9KT0+e2xldCBlPW5ldyBNYXAobi5ncm91cEtleVRvQ29sb3JJZCksbz1uZXcgTWFwKG4uZGVmYXVsdFJ1bkNvbG9ySWRGb3JHcm91cEJ5KSxpPW4uaW5pdGlhbEdyb3VwQnk7bi51c2VyU2V0R3JvdXBCeUtleSE9PW51bGwmJihpPUdEKG4udXNlclNldEdyb3VwQnlLZXksbi5jb2xvckdyb3VwUmVnZXhTdHJpbmcpKTtsZXQgYT1qRShpLHQsbi5ydW5JZFRvRXhwSWQpO09iamVjdC5lbnRyaWVzKGEubWF0Y2hlcykuZm9yRWFjaCgoW3Isc10pPT57dmFyIGw7bGV0IGM9KGw9ZS5nZXQocikpIT09bnVsbCYmbCE9PXZvaWQgMD9sOmUuc2l6ZTtlLnNldChyLGMpO2ZvcihsZXQgbSBvZiBzKW8uc2V0KG0uaWQsYyl9KTtmb3IobGV0IHIgb2YgYS5ub25NYXRjaGVzKW8uc2V0KHIuaWQsLTEpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2RlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeTpvLGdyb3VwS2V5VG9Db2xvcklkOmV9KX0pLFl0KF8zLChuLHtleHBlcmltZW50SWRzOnQsZ3JvdXBCeTplfSk9PntsZXQgbz1uZXcgTWFwLGk9bmV3IE1hcChuLmRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeSksYT10LmZsYXRNYXAobD0+bi5ydW5JZHNbbF0pLm1hcChsPT5uLnJ1bk1ldGFkYXRhW2xdKSxyPWpFKGUsYSxuLnJ1bklkVG9FeHBJZCk7T2JqZWN0LmVudHJpZXMoci5tYXRjaGVzKS5mb3JFYWNoKChbbCxjXSk9Pnt2YXIgbTtsZXQgZj0obT1vLmdldChsKSkhPT1udWxsJiZtIT09dm9pZCAwP206by5zaXplO28uc2V0KGwsZik7Zm9yKGxldCBwIG9mIGMpaS5zZXQocC5pZCxmKX0pO2ZvcihsZXQgbCBvZiByLm5vbk1hdGNoZXMpaS5zZXQobC5pZCwtMSk7bGV0IHM9ZS5rZXk9PT1iYS5SRUdFWD9lLnJlZ2V4U3RyaW5nOm4uY29sb3JHcm91cFJlZ2V4U3RyaW5nO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2NvbG9yR3JvdXBSZWdleFN0cmluZzpzLHVzZXJTZXRHcm91cEJ5S2V5OmUua2V5LGRlZmF1bHRSdW5Db2xvcklkRm9yR3JvdXBCeTppLGdyb3VwS2V5VG9Db2xvcklkOm8scnVuQ29sb3JPdmVycmlkZUZvckdyb3VwQnk6bmV3IE1hcH0pfSksWXQodkQsKG4se3J1bklkOnQsbmV3Q29sb3I6ZX0pPT57bGV0IG89bmV3IE1hcChuLnJ1bkNvbG9yT3ZlcnJpZGVGb3JHcm91cEJ5KTtyZXR1cm4gby5zZXQodCxlKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3J1bkNvbG9yT3ZlcnJpZGVGb3JHcm91cEJ5Om99KX0pLFl0KFJFLChuLHQpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3JlZ2V4RmlsdGVyOnQucmVnZXhTdHJpbmd9KSkpLE5SdD1IdihrUnQsRVJ0KSxUUnQ9e2tleTpudWxsLGRpcmVjdGlvbjp3TS5VTlNFVH0se2luaXRpYWxTdGF0ZTpBUnQscmVkdWNlcnM6RFJ0fT16dih7cGFnaW5hdGlvbk9wdGlvbjp7cGFnZUluZGV4OjAscGFnZVNpemU6MTB9LHNvcnQ6VFJ0LHNlbGVjdGlvblN0YXRlOm5ldyBNYXB9LHt9KSxJUnQ9eGEoQVJ0LFl0KHlELChuLHtwYWdlU2l6ZTp0LHBhZ2VJbmRleDplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7cGFnaW5hdGlvbk9wdGlvbjp7cGFnZVNpemU6dCxwYWdlSW5kZXg6ZX19KSksWXQoUkUsKG4sdCk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7cGFnaW5hdGlvbk9wdGlvbjpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5wYWdpbmF0aW9uT3B0aW9uKSx7cGFnZUluZGV4OjB9KX0pKSxZdCh4RCwobix0KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzb3J0OntrZXk6dC5rZXksZGlyZWN0aW9uOnQuZGlyZWN0aW9ufX0pKSxZdCh6eSwobix0KT0+e2xldCBlPW5ldyBNYXAobi5zZWxlY3Rpb25TdGF0ZSksbz10LnJ1bnNGb3JBbGxFeHBlcmltZW50cy5sZW5ndGg8PVZFO2ZvcihsZXQgaSBvZiB0LnJ1bnNGb3JBbGxFeHBlcmltZW50cyllLmhhcyhpLmlkKXx8ZS5zZXQoaS5pZCxvKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzZWxlY3Rpb25TdGF0ZTplfSl9KSxZdChiRCwobix7cnVuSWQ6dH0pPT57bGV0IGU9bmV3IE1hcChuLnNlbGVjdGlvblN0YXRlKTtyZXR1cm4gZS5zZXQodCwhQm9vbGVhbihlLmdldCh0KSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2VsZWN0aW9uU3RhdGU6ZX0pfSksWXQoT0QsKG4se3J1bklkOnR9KT0+e2xldCBlPW5ldyBNYXA7Zm9yKGxldCBvIG9mIG4uc2VsZWN0aW9uU3RhdGUua2V5cygpKWUuc2V0KG8sdD09PW8pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NlbGVjdGlvblN0YXRlOmV9KX0pLFl0KFBELChuLHtydW5JZHM6dH0pPT57bGV0IGU9bmV3IE1hcChuLnNlbGVjdGlvblN0YXRlKSxvPSF0LmV2ZXJ5KGk9PkJvb2xlYW4oZS5nZXQoaSkpKTtmb3IobGV0IGkgb2YgdCllLnNldChpLG8pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NlbGVjdGlvblN0YXRlOmV9KX0pKSx6UnQ9SHYoSVJ0LERSdCk7ZnVuY3Rpb24gcFUobix0KXtyZXR1cm4gd3Yoe2RhdGE6TlJ0LHVpOnpSdH0pKG4sdCl9ZnVuY3Rpb24gaWF0KCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOmgzLGFsZXJ0RnJvbUFjdGlvbjooKT0+KHtsb2NhbGl6ZWRNZXNzYWdlOiJGYWlsZWQgdG8gZmV0Y2ggcnVucyJ9KX1dfXZhciBHbD1jbGFzc3t9O0dsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEdsKX07R2wuXHUwMjc1bW9kPXEoe3R5cGU6R2x9KTtHbC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW2NvLmZvckZlYXR1cmUoQkUscFUpLEhvLmZvckZlYXR1cmUoW3ZNXSksdl8sdmEucmVnaXN0ZXJBbGVydEFjdGlvbnMoaWF0KSxVbF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEdsLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltjby5mb3JGZWF0dXJlKEJFLHBVKSxIby5mb3JGZWF0dXJlKFt2TV0pLHZfLHZhLnJlZ2lzdGVyQWxlcnRBY3Rpb25zKGlhdCksVWxdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEdsLHtpbXBvcnRzOltObyxxaSx2Xyx2YSxVbF19KX0pKCk7dmFyIEd5OyhmdW5jdGlvbihuKXtuLlJVTlNfQ0hBTkdFRD0iZXhwZXJpbWVudGFsLlJ1bnNDaGFuZ2VkIixuLkdFVF9SVU5TPSJleHBlcmltZW50YWwuR2V0UnVucyIsbi5HRVRfVVJMX0RBVEE9ImV4cGVyaW1lbnRhbC5HZXRVUkxQbHVnaW5EYXRhIixuLkRBVEFfUkVMT0FERUQ9ImV4cGVyaW1lbnRhbC5EYXRhUmVsb2FkZWQifSkoR3l8fChHeT17fSkpO3ZhciBKRD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnBvcnQ9dCx0aGlzLmlkPTAsdGhpcy5yZXNwb25zZVdhaXRzPW5ldyBNYXAsdGhpcy5saXN0ZW5lcnM9bmV3IE1hcCx0aGlzLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZT0+dGhpcy5vbk1lc3NhZ2UoZSkpfWxpc3Rlbih0LGUpe3RoaXMubGlzdGVuZXJzLnNldCh0LGUpfXVubGlzdGVuKHQpe3RoaXMubGlzdGVuZXJzLmRlbGV0ZSh0KX1vbk1lc3NhZ2UodCl7cmV0dXJuIHpDKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtsZXQgZT1KU09OLnBhcnNlKHQuZGF0YSksbz1lLnR5cGUsaT1lLmlkLGE9ZS5wYXlsb2FkLHI9ZS5lcnJvcjtpZihlLmlzUmVwbHkpe2lmKCF0aGlzLnJlc3BvbnNlV2FpdHMuaGFzKGkpKXJldHVybjtsZXR7cmVzb2x2ZTpmLHJlamVjdDpwfT10aGlzLnJlc3BvbnNlV2FpdHMuZ2V0KGkpO3RoaXMucmVzcG9uc2VXYWl0cy5kZWxldGUoaSkscj9wKG5ldyBFcnJvcihyKSk6ZihhKTtyZXR1cm59bGV0IGw9bnVsbCxjPW51bGw7aWYodGhpcy5saXN0ZW5lcnMuaGFzKG8pKXtsZXQgZj10aGlzLmxpc3RlbmVycy5nZXQobyk7dHJ5e2w9eWllbGQgZihhKX1jYXRjaChwKXtjPXB9fWxldCBtPXt0eXBlOm8saWQ6aSxwYXlsb2FkOmwsZXJyb3I6Yyxpc1JlcGx5OiEwfTt0aGlzLnBvc3RNZXNzYWdlKG0pfSl9cG9zdE1lc3NhZ2UodCl7dGhpcy5wb3J0LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHQpKX1zZW5kTWVzc2FnZSh0LGUpe2xldCBvPXRoaXMuaWQrKyxpPXt0eXBlOnQsaWQ6byxwYXlsb2FkOmUsZXJyb3I6bnVsbCxpc1JlcGx5OiExfTtyZXR1cm4gdGhpcy5wb3N0TWVzc2FnZShpKSxuZXcgUHJvbWlzZSgoYSxyKT0+e3RoaXMucmVzcG9uc2VXYWl0cy5zZXQobyx7cmVzb2x2ZTphLHJlamVjdDpyfSl9KX19O2Z1bmN0aW9uIGFhdChuLHQpe3JhdC5zZXQobix7cGx1Z2luTmFtZTp0fSl9dmFyIHJhdD1uZXcgV2Vha01hcCx4Mz1uZXcgU2V0LEhSdD0iZXhwZXJpbWVudGFsIixkVT1uZXcgTWFwLCREPW5ldyBNYXA7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG49PntpZihuLmRhdGEhPT1gJHtIUnR9LmJvb3RzdHJhcGApcmV0dXJuO2xldCB0PW4ucG9ydHNbMF07aWYoIXQpcmV0dXJuO2xldCBlPW4uc291cmNlP24uc291cmNlLmZyYW1lRWxlbWVudDpudWxsOyFlfHxGUnQodCxlKX0pO2Z1bmN0aW9uIEZSdChuLHQpe2xldCBlPW5ldyBKRChuKTt4My5hZGQoZSksJEQuc2V0KGUsdCksbi5zdGFydCgpO2ZvcihsZXRbbyxpXW9mIGRVKXtsZXQgYT1zYXQoaSxlKTtlLmxpc3RlbihvLGEpfX1mdW5jdGlvbiBzYXQobix0KXtyZXR1cm4gZT0+e2xldCBvPSRELmdldCh0KSxpPXJhdC5nZXQobyl8fG51bGw7cmV0dXJuIG4oaSxlKX19ZnVuY3Rpb24gTFJ0KG4sdCl7Zm9yKGxldCBvIG9mIHgzKSRELmdldChvKS5pc0Nvbm5lY3RlZHx8KHgzLmRlbGV0ZShvKSwkRC5kZWxldGUobykpO2xldCBlPVsuLi54M10ubWFwKG89Pm8uc2VuZE1lc3NhZ2Uobix0KSk7cmV0dXJuIFByb21pc2UuYWxsKGUpfWZ1bmN0aW9uIEJSdChuLHQpe2RVLnNldChuLHQpO2ZvcihsZXQgZSBvZiB4Myl7bGV0IG89c2F0KHQsZSk7ZS5saXN0ZW4obixvKX19ZnVuY3Rpb24gVlJ0KG4pe2RVLmRlbGV0ZShuKTtmb3IobGV0IHQgb2YgeDMpdC51bmxpc3RlbihuKX12YXIgV2w9Y2xhc3N7YnJvYWRjYXN0KHQsZSl7cmV0dXJuIExSdCh0LGUpfWxpc3Rlbih0LGUpe0JSdCh0LGUpfXVubGlzdGVuKHQpe1ZSdCh0KX19O1dsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFdsKX07V2wuXHUwMjc1cHJvdj1QdCh7dG9rZW46V2wsZmFjdG9yeTpXbC5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoV2wsW3t0eXBlOlN0fV0sbnVsbCxudWxsKX0pKCk7dmFyIGhwPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5pcGM9dCx0aGlzLnN0b3JlPWV9aW5pdCgpe2xldCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXN0b3JhZ2UiKTt0aGlzLmlwYy5saXN0ZW4oR3kuR0VUX1VSTF9EQVRBLGU9PntpZighZSlyZXR1cm47bGV0IG89YHAuJHtlLnBsdWdpbk5hbWV9LmAsaT17fSxhPXQudGZfc3RvcmFnZS5nZXRVcmxIYXNoRGljdCgpO2ZvcihsZXQgciBpbiBhKWlmKHIuc3RhcnRzV2l0aChvKSl7bGV0IHM9ci5zdWJzdHJpbmcoby5sZW5ndGgpO2lbc109YVtyXX1yZXR1cm4gaX0pLHRoaXMuc3RvcmUuc2VsZWN0KGQzKS5waXBlKHVlKGU9PmUhPT1udWxsKSxYbygpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmlwYy5icm9hZGNhc3QoR3kuREFUQV9SRUxPQURFRCx2b2lkIDApfSl9fTtocC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxocCkoSShXbCksSShzdCkpfTtocC5cdTAyNzVwcm92PVB0KHt0b2tlbjpocCxmYWN0b3J5OmhwLlx1MDI3NWZhYyxwcm92aWRlZEluOiJyb290In0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhocCxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpXbH0se3R5cGU6c3R9XX0sbnVsbCl9KSgpO3ZhciBfcD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaXBjPXQsdGhpcy5zdG9yZT1lfWluaXQoKXtsZXQgdD10aGlzLnN0b3JlLnNlbGVjdChKcykucGlwZShVbihlPT57aWYoIWUpcmV0dXJuIGRuKFtdKTtsZXQgbz1lLm1hcChpPT50aGlzLnN0b3JlLnNlbGVjdCh0Tyx7ZXhwZXJpbWVudElkOml9KSk7cmV0dXJuIG9uKG8pLnBpcGUoRyhpPT5pLmZsYXQoKSksWG8oKGksYSk9PmkubGVuZ3RoPT09YS5sZW5ndGgmJmkuZXZlcnkoKHIscyk9PmFbc10uaWQ9PT1yLmlkKSksRyhpPT5pLm1hcCgoe25hbWU6YX0pPT5hKSkpfSkpO3Quc3Vic2NyaWJlKGU9Pnt0aGlzLmlwYy5icm9hZGNhc3QoR3kuUlVOU19DSEFOR0VELGUpfSksdGhpcy5pcGMubGlzdGVuKEd5LkdFVF9SVU5TLCgpPT50LnBpcGUoQ24oMSkpLnRvUHJvbWlzZSgpKX19O19wLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF9wKShJKFdsKSxJKHN0KSl9O19wLlx1MDI3NXByb3Y9UHQoe3Rva2VuOl9wLGZhY3Rvcnk6X3AuXHUwMjc1ZmFjLHByb3ZpZGVkSW46InJvb3QifSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9wLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOldsfSx7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIG5tPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7ZS5pbml0KCksdC5pbml0KCl9cmVnaXN0ZXJQbHVnaW5JZnJhbWUodCxlKXthYXQodCxlKX19O25tLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG5tKShJKF9wKSxJKGhwKSl9O25tLlx1MDI3NW1vZD1xKHt0eXBlOm5tfSk7bm0uXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbV2wsaHAsX3BdLGltcG9ydHM6W1tzcyxTaSxHbF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5tLFt7dHlwZTpaLGFyZ3M6W3twcm92aWRlcnM6W1dsLGhwLF9wXSxpbXBvcnRzOltzcyxTaSxHbF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9wfSx7dHlwZTpocH1dfSxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChubSx7aW1wb3J0czpbc3MsU2ksR2xdfSl9KSgpO3ZhciB2Mz1OdCgiW0FsZXJ0XSBBbGVydCBSZXBvcnRlZCIsYmUoKSk7dmFyIFNNPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuYWxlcnRBY3Rpb25Nb2R1bGU9byx0aGlzLnJlcG9ydFJlZ2lzdGVyZWRBY3Rpb25BbGVydHMkPU1hKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUoYW4oaT0+e2xldCBhPXRoaXMuYWxlcnRBY3Rpb25Nb2R1bGUuZ2V0QWxlcnRGcm9tQWN0aW9uKGkpO2EmJnRoaXMuc3RvcmUuZGlzcGF0Y2godjMoYSkpfSkpLHtkaXNwYXRjaDohMX0pfX07U00uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8U00pKEkoVG8pLEkoc3QpLEkodmEpKX07U00uXHUwMjc1cHJvdj1QdCh7dG9rZW46U00sZmFjdG9yeTpTTS5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU00sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VG99LHt0eXBlOnN0fSx7dHlwZTp2YX1dfSxudWxsKX0pKCk7dmFyIEdSdD17bGF0ZXN0QWxlcnQ6bnVsbH0sV1J0PXhhKEdSdCxZdCh2Mywobix7bG9jYWxpemVkTWVzc2FnZTp0LGZvbGxvd3VwQWN0aW9uOmV9KT0+e2xldCBvPXtsb2NhbGl6ZWRNZXNzYWdlOnQsY3JlYXRlZDpEYXRlLm5vdygpfTtyZXR1cm4gZSYmKG8uZm9sbG93dXBBY3Rpb249ZSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtsYXRlc3RBbGVydDpvfSl9KSk7ZnVuY3Rpb24gZ1Uobix0KXtyZXR1cm4gV1J0KG4sdCl9ZnVuY3Rpb24gVmEobiwuLi50KXtyZXR1cm4gdC5sZW5ndGg/dC5zb21lKGU9Pm5bZV0pOm4uYWx0S2V5fHxuLnNoaWZ0S2V5fHxuLmN0cmxLZXl8fG4ubWV0YUtleX1mdW5jdGlvbiBaZShuKXtyZXR1cm4gbiE9bnVsbCYmYCR7bn1gIT0iZmFsc2UifWZ1bmN0aW9uIFJpKG4sdD0wKXtyZXR1cm4gdVUobik/TnVtYmVyKG4pOnR9ZnVuY3Rpb24gdVUobil7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQobikpJiYhaXNOYU4oTnVtYmVyKG4pKX1mdW5jdGlvbiB3MyhuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uOltuXX1mdW5jdGlvbiBjcyhuKXtyZXR1cm4gbj09bnVsbD8iIjp0eXBlb2Ygbj09InN0cmluZyI/bjpgJHtufXB4YH1mdW5jdGlvbiBDcChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEw/bi5uYXRpdmVFbGVtZW50Om59ZnVuY3Rpb24gbWF0KG4sdD0vXHMrLyl7bGV0IGU9W107aWYobiE9bnVsbCl7bGV0IG89QXJyYXkuaXNBcnJheShuKT9uOmAke259YC5zcGxpdCh0KTtmb3IobGV0IGkgb2Ygbyl7bGV0IGE9YCR7aX1gLnRyaW0oKTthJiZlLnB1c2goYSl9fXJldHVybiBlfXZhciBfVTt0cnl7X1U9dHlwZW9mIEludGwhPSJ1bmRlZmluZWQiJiZJbnRsLnY4QnJlYWtJdGVyYXRvcn1jYXRjaChuKXtfVT0hMX12YXIgVnQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fcGxhdGZvcm1JZD10LHRoaXMuaXNCcm93c2VyPXRoaXMuX3BsYXRmb3JtSWQ/WmV0KHRoaXMuX3BsYXRmb3JtSWQpOnR5cGVvZiBkb2N1bWVudD09Im9iamVjdCImJiEhZG9jdW1lbnQsdGhpcy5FREdFPXRoaXMuaXNCcm93c2VyJiYvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLlRSSURFTlQ9dGhpcy5pc0Jyb3dzZXImJi8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5CTElOSz10aGlzLmlzQnJvd3NlciYmISEod2luZG93LmNocm9tZXx8X1UpJiZ0eXBlb2YgQ1NTIT0idW5kZWZpbmVkIiYmIXRoaXMuRURHRSYmIXRoaXMuVFJJREVOVCx0aGlzLldFQktJVD10aGlzLmlzQnJvd3NlciYmL0FwcGxlV2ViS2l0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuQkxJTksmJiF0aGlzLkVER0UmJiF0aGlzLlRSSURFTlQsdGhpcy5JT1M9dGhpcy5pc0Jyb3dzZXImJi9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhKCJNU1N0cmVhbSJpbiB3aW5kb3cpLHRoaXMuRklSRUZPWD10aGlzLmlzQnJvd3NlciYmLyhmaXJlZm94fG1pbmVmaWVsZCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHRoaXMuQU5EUk9JRD10aGlzLmlzQnJvd3NlciYmL2FuZHJvaWQvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhdGhpcy5UUklERU5ULHRoaXMuU0FGQVJJPXRoaXMuaXNCcm93c2VyJiYvc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmdGhpcy5XRUJLSVR9fTtWdC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxWdCkoSShYZikpfTtWdC5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBWdChJKFhmKSl9LHRva2VuOlZ0LHByb3ZpZGVkSW46InJvb3QifSk7VnQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltYZl19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhWdCxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPYmplY3QsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltYZl19XX1dfSxudWxsKX0pKCk7dmFyIHdhPWNsYXNze307d2EuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8d2EpfTt3YS5cdTAyNzVtb2Q9cSh7dHlwZTp3YX0pO3dhLlx1MDI3NWluaj1XKHt9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMod2EsW3t0eXBlOlosYXJnczpbe31dfV0sbnVsbCxudWxsKX0pKCk7dmFyIFMzLGZhdD1bImNvbG9yIiwiYnV0dG9uIiwiY2hlY2tib3giLCJkYXRlIiwiZGF0ZXRpbWUtbG9jYWwiLCJlbWFpbCIsImZpbGUiLCJoaWRkZW4iLCJpbWFnZSIsIm1vbnRoIiwibnVtYmVyIiwicGFzc3dvcmQiLCJyYWRpbyIsInJhbmdlIiwicmVzZXQiLCJzZWFyY2giLCJzdWJtaXQiLCJ0ZWwiLCJ0ZXh0IiwidGltZSIsInVybCIsIndlZWsiXTtmdW5jdGlvbiBDVSgpe2lmKFMzKXJldHVybiBTMztpZih0eXBlb2YgZG9jdW1lbnQhPSJvYmplY3QifHwhZG9jdW1lbnQpcmV0dXJuIFMzPW5ldyBTZXQoZmF0KSxTMztsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiBTMz1uZXcgU2V0KGZhdC5maWx0ZXIodD0+KG4uc2V0QXR0cmlidXRlKCJ0eXBlIix0KSxuLnR5cGU9PT10KSkpLFMzfXZhciBLRTtmdW5jdGlvbiBxUnQoKXtpZihLRT09bnVsbCYmdHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCIpdHJ5e3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDooKT0+S0U9ITB9KSl9ZmluYWxseXtLRT1LRXx8ITF9cmV0dXJuIEtFfWZ1bmN0aW9uICRtKG4pe3JldHVybiBxUnQoKT9uOiEhbi5jYXB0dXJlfXZhciB0SSxHdjtmdW5jdGlvbiBlSSgpe2lmKEd2PT1udWxsKXtpZih0eXBlb2YgZG9jdW1lbnQhPSJvYmplY3QifHwhZG9jdW1lbnR8fHR5cGVvZiBFbGVtZW50IT0iZnVuY3Rpb24ifHwhRWxlbWVudClyZXR1cm4gR3Y9ITEsR3Y7aWYoInNjcm9sbEJlaGF2aW9yImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSlHdj0hMDtlbHNle2xldCBuPUVsZW1lbnQucHJvdG90eXBlLnNjcm9sbFRvO24/R3Y9IS9ce1xzKlxbbmF0aXZlIGNvZGVcXVxzKlx9Ly50ZXN0KG4udG9TdHJpbmcoKSk6R3Y9ITF9fXJldHVybiBHdn1mdW5jdGlvbiBSMygpe2lmKHR5cGVvZiBkb2N1bWVudCE9Im9iamVjdCJ8fCFkb2N1bWVudClyZXR1cm4gMDtpZih0ST09bnVsbCl7bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdD1uLnN0eWxlO24uZGlyPSJydGwiLHQud2lkdGg9IjFweCIsdC5vdmVyZmxvdz0iYXV0byIsdC52aXNpYmlsaXR5PSJoaWRkZW4iLHQucG9pbnRlckV2ZW50cz0ibm9uZSIsdC5wb3NpdGlvbj0iYWJzb2x1dGUiO2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG89ZS5zdHlsZTtvLndpZHRoPSIycHgiLG8uaGVpZ2h0PSIxcHgiLG4uYXBwZW5kQ2hpbGQoZSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKSx0ST0wLG4uc2Nyb2xsTGVmdD09PTAmJihuLnNjcm9sbExlZnQ9MSx0ST1uLnNjcm9sbExlZnQ9PT0wPzE6Miksbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pfXJldHVybiB0SX12YXIgaFU7ZnVuY3Rpb24gWlJ0KCl7aWYoaFU9PW51bGwpe2xldCBuPXR5cGVvZiBkb2N1bWVudCE9InVuZGVmaW5lZCI/ZG9jdW1lbnQuaGVhZDpudWxsO2hVPSEhKG4mJihuLmNyZWF0ZVNoYWRvd1Jvb3R8fG4uYXR0YWNoU2hhZG93KSl9cmV0dXJuIGhVfWZ1bmN0aW9uIG5JKG4pe2lmKFpSdCgpKXtsZXQgdD1uLmdldFJvb3ROb2RlP24uZ2V0Um9vdE5vZGUoKTpudWxsO2lmKHR5cGVvZiBTaGFkb3dSb290IT0idW5kZWZpbmVkIiYmU2hhZG93Um9vdCYmdCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpcmV0dXJuIHR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gRTMoKXtsZXQgbj10eXBlb2YgZG9jdW1lbnQhPSJ1bmRlZmluZWQiJiZkb2N1bWVudD9kb2N1bWVudC5hY3RpdmVFbGVtZW50Om51bGw7Zm9yKDtuJiZuLnNoYWRvd1Jvb3Q7KXtsZXQgdD1uLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtpZih0PT09bilicmVhaztuPXR9cmV0dXJuIG59ZnVuY3Rpb24gUk0obil7cmV0dXJuIG4uY29tcG9zZWRQYXRoP24uY29tcG9zZWRQYXRoKClbMF06bi50YXJnZXR9ZnVuY3Rpb24gSkUoKXtyZXR1cm4gdHlwZW9mIF9fa2FybWFfXyE9InVuZGVmaW5lZCImJiEhX19rYXJtYV9ffHx0eXBlb2YgamFzbWluZSE9InVuZGVmaW5lZCImJiEhamFzbWluZXx8dHlwZW9mIGplc3QhPSJ1bmRlZmluZWQiJiYhIWplc3R8fHR5cGVvZiBNb2NoYSE9InVuZGVmaW5lZCImJiEhTW9jaGF9dmFyIE1wPWNsYXNze2NyZWF0ZSh0KXtyZXR1cm4gdHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXI9PSJ1bmRlZmluZWQiP251bGw6bmV3IE11dGF0aW9uT2JzZXJ2ZXIodCl9fTtNcC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxNcCl9O01wLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1wfSx0b2tlbjpNcCxwcm92aWRlZEluOiJyb290In0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhNcCxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxudWxsLG51bGwpfSkoKTt2YXIgcWw9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fbXV0YXRpb25PYnNlcnZlckZhY3Rvcnk9dCx0aGlzLl9vYnNlcnZlZEVsZW1lbnRzPW5ldyBNYXB9bmdPbkRlc3Ryb3koKXt0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmZvckVhY2goKHQsZSk9PnRoaXMuX2NsZWFudXBPYnNlcnZlcihlKSl9b2JzZXJ2ZSh0KXtsZXQgZT1DcCh0KTtyZXR1cm4gbmV3IERuKG89PntsZXQgYT10aGlzLl9vYnNlcnZlRWxlbWVudChlKS5zdWJzY3JpYmUobyk7cmV0dXJuKCk9PnthLnVuc3Vic2NyaWJlKCksdGhpcy5fdW5vYnNlcnZlRWxlbWVudChlKX19KX1fb2JzZXJ2ZUVsZW1lbnQodCl7aWYodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXModCkpdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnQrKztlbHNle2xldCBlPW5ldyBKdCxvPXRoaXMuX211dGF0aW9uT2JzZXJ2ZXJGYWN0b3J5LmNyZWF0ZShpPT5lLm5leHQoaSkpO28mJm8ub2JzZXJ2ZSh0LHtjaGFyYWN0ZXJEYXRhOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5zZXQodCx7b2JzZXJ2ZXI6byxzdHJlYW06ZSxjb3VudDoxfSl9cmV0dXJuIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLnN0cmVhbX1fdW5vYnNlcnZlRWxlbWVudCh0KXt0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSYmKHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLmNvdW50LS0sdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnR8fHRoaXMuX2NsZWFudXBPYnNlcnZlcih0KSl9X2NsZWFudXBPYnNlcnZlcih0KXtpZih0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSl7bGV0e29ic2VydmVyOmUsc3RyZWFtOm99PXRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpO2UmJmUuZGlzY29ubmVjdCgpLG8uY29tcGxldGUoKSx0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmRlbGV0ZSh0KX19fTtxbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxxbCkoSShNcCkpfTtxbC5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBxbChJKE1wKSl9LHRva2VuOnFsLHByb3ZpZGVkSW46InJvb3QifSk7cWwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpNcH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhxbCxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpNcH1dfSxudWxsKX0pKCk7dmFyIEJyPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLl9jb250ZW50T2JzZXJ2ZXI9dCx0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fbmdab25lPW8sdGhpcy5ldmVudD1uZXcgJCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPW51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1aZSh0KSx0aGlzLl9kaXNhYmxlZD90aGlzLl91bnN1YnNjcmliZSgpOnRoaXMuX3N1YnNjcmliZSgpfWdldCBkZWJvdW5jZSgpe3JldHVybiB0aGlzLl9kZWJvdW5jZX1zZXQgZGVib3VuY2UodCl7dGhpcy5fZGVib3VuY2U9UmkodCksdGhpcy5fc3Vic2NyaWJlKCl9bmdBZnRlckNvbnRlbnRJbml0KCl7IXRoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb24mJiF0aGlzLmRpc2FibGVkJiZ0aGlzLl9zdWJzY3JpYmUoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3Vuc3Vic2NyaWJlKCl9X3N1YnNjcmliZSgpe3RoaXMuX3Vuc3Vic2NyaWJlKCk7bGV0IHQ9dGhpcy5fY29udGVudE9ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZik7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbj0odGhpcy5kZWJvdW5jZT90LnBpcGUobHIodGhpcy5kZWJvdW5jZSkpOnQpLnN1YnNjcmliZSh0aGlzLmV2ZW50KX0pfV91bnN1YnNjcmliZSgpe3ZhciB0Oyh0PXRoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb24pPT09bnVsbHx8dD09PXZvaWQgMHx8dC51bnN1YnNjcmliZSgpfX07QnIuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8QnIpKHYocWwpLHYoTCksdihDdCkpfTtCci5cdTAyNzVkaXI9dnQoe3R5cGU6QnIsc2VsZWN0b3JzOltbIiIsImNka09ic2VydmVDb250ZW50IiwiIl1dLGlucHV0czp7ZGlzYWJsZWQ6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiZGlzYWJsZWQiXSxkZWJvdW5jZToiZGVib3VuY2UifSxvdXRwdXRzOntldmVudDoiY2RrT2JzZXJ2ZUNvbnRlbnQifSxleHBvcnRBczpbImNka09ic2VydmVDb250ZW50Il19KTtCci5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnFsfSx7dHlwZTpMfSx7dHlwZTpDdH1dO0JyLnByb3BEZWNvcmF0b3JzPXtldmVudDpbe3R5cGU6QixhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnQiXX1dLGRpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIl19XSxkZWJvdW5jZTpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQnIsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka09ic2VydmVDb250ZW50XSIsZXhwb3J0QXM6ImNka09ic2VydmVDb250ZW50In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cWx9LHt0eXBlOkx9LHt0eXBlOkN0fV19LHtldmVudDpbe3R5cGU6QixhcmdzOlsiY2RrT2JzZXJ2ZUNvbnRlbnQiXX1dLGRpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIl19XSxkZWJvdW5jZTpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBzYT1jbGFzc3t9O3NhLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHNhKX07c2EuXHUwMjc1bW9kPXEoe3R5cGU6c2F9KTtzYS5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltNcF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoc2EsW3t0eXBlOlosYXJnczpbe2V4cG9ydHM6W0JyXSxkZWNsYXJhdGlvbnM6W0JyXSxwcm92aWRlcnM6W01wXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChzYSx7ZGVjbGFyYXRpb25zOltCcl0sZXhwb3J0czpbQnJdfSl9KSgpO3ZhciBfYXQ9IiAiO2Z1bmN0aW9uIG9FdChuLHQsZSl7bGV0IG89YUkobix0KTtvLnNvbWUoaT0+aS50cmltKCk9PWUudHJpbSgpKXx8KG8ucHVzaChlLnRyaW0oKSksbi5zZXRBdHRyaWJ1dGUodCxvLmpvaW4oX2F0KSkpfWZ1bmN0aW9uIGlFdChuLHQsZSl7bGV0IGk9YUkobix0KS5maWx0ZXIoYT0+YSE9ZS50cmltKCkpO2kubGVuZ3RoP24uc2V0QXR0cmlidXRlKHQsaS5qb2luKF9hdCkpOm4ucmVtb3ZlQXR0cmlidXRlKHQpfWZ1bmN0aW9uIGFJKG4sdCl7cmV0dXJuKG4uZ2V0QXR0cmlidXRlKHQpfHwiIikubWF0Y2goL1xTKy9nKXx8W119dmFyIHBhdD0iY2RrLWRlc2NyaWJlZGJ5LW1lc3NhZ2UtY29udGFpbmVyIixDYXQ9ImNkay1kZXNjcmliZWRieS1tZXNzYWdlIixvST0iY2RrLWRlc2NyaWJlZGJ5LWhvc3QiLGFFdD0wLGVPPW5ldyBNYXAsWmw9bnVsbCxmcj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2N1bWVudD10fWRlc2NyaWJlKHQsZSxvKXtpZighdGhpcy5fY2FuQmVEZXNjcmliZWQodCxlKSlyZXR1cm47bGV0IGk9TVUoZSxvKTt0eXBlb2YgZSE9InN0cmluZyI/KGRhdChlKSxlTy5zZXQoaSx7bWVzc2FnZUVsZW1lbnQ6ZSxyZWZlcmVuY2VDb3VudDowfSkpOmVPLmhhcyhpKXx8dGhpcy5fY3JlYXRlTWVzc2FnZUVsZW1lbnQoZSxvKSx0aGlzLl9pc0VsZW1lbnREZXNjcmliZWRCeU1lc3NhZ2UodCxpKXx8dGhpcy5fYWRkTWVzc2FnZVJlZmVyZW5jZSh0LGkpfXJlbW92ZURlc2NyaXB0aW9uKHQsZSxvKXtpZighZXx8IXRoaXMuX2lzRWxlbWVudE5vZGUodCkpcmV0dXJuO2xldCBpPU1VKGUsbyk7aWYodGhpcy5faXNFbGVtZW50RGVzY3JpYmVkQnlNZXNzYWdlKHQsaSkmJnRoaXMuX3JlbW92ZU1lc3NhZ2VSZWZlcmVuY2UodCxpKSx0eXBlb2YgZT09InN0cmluZyIpe2xldCBhPWVPLmdldChpKTthJiZhLnJlZmVyZW5jZUNvdW50PT09MCYmdGhpcy5fZGVsZXRlTWVzc2FnZUVsZW1lbnQoaSl9WmwmJlpsLmNoaWxkTm9kZXMubGVuZ3RoPT09MCYmdGhpcy5fZGVsZXRlTWVzc2FnZXNDb250YWluZXIoKX1uZ09uRGVzdHJveSgpe2xldCB0PXRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFske29JfV1gKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl0aGlzLl9yZW1vdmVDZGtEZXNjcmliZWRCeVJlZmVyZW5jZUlkcyh0W2VdKSx0W2VdLnJlbW92ZUF0dHJpYnV0ZShvSSk7WmwmJnRoaXMuX2RlbGV0ZU1lc3NhZ2VzQ29udGFpbmVyKCksZU8uY2xlYXIoKX1fY3JlYXRlTWVzc2FnZUVsZW1lbnQodCxlKXtsZXQgbz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkYXQobyksby50ZXh0Q29udGVudD10LGUmJm8uc2V0QXR0cmlidXRlKCJyb2xlIixlKSx0aGlzLl9jcmVhdGVNZXNzYWdlc0NvbnRhaW5lcigpLFpsLmFwcGVuZENoaWxkKG8pLGVPLnNldChNVSh0LGUpLHttZXNzYWdlRWxlbWVudDpvLHJlZmVyZW5jZUNvdW50OjB9KX1fZGVsZXRlTWVzc2FnZUVsZW1lbnQodCl7bGV0IGU9ZU8uZ2V0KHQpLG89ZSYmZS5tZXNzYWdlRWxlbWVudDtabCYmbyYmWmwucmVtb3ZlQ2hpbGQobyksZU8uZGVsZXRlKHQpfV9jcmVhdGVNZXNzYWdlc0NvbnRhaW5lcigpe2lmKCFabCl7bGV0IHQ9dGhpcy5fZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGF0KTt0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSxabD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxabC5pZD1wYXQsWmwuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixabC5jbGFzc0xpc3QuYWRkKCJjZGstdmlzdWFsbHktaGlkZGVuIiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChabCl9fV9kZWxldGVNZXNzYWdlc0NvbnRhaW5lcigpe1psJiZabC5wYXJlbnROb2RlJiYoWmwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChabCksWmw9bnVsbCl9X3JlbW92ZUNka0Rlc2NyaWJlZEJ5UmVmZXJlbmNlSWRzKHQpe2xldCBlPWFJKHQsImFyaWEtZGVzY3JpYmVkYnkiKS5maWx0ZXIobz0+by5pbmRleE9mKENhdCkhPTApO3Quc2V0QXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5IixlLmpvaW4oIiAiKSl9X2FkZE1lc3NhZ2VSZWZlcmVuY2UodCxlKXtsZXQgbz1lTy5nZXQoZSk7b0V0KHQsImFyaWEtZGVzY3JpYmVkYnkiLG8ubWVzc2FnZUVsZW1lbnQuaWQpLHQuc2V0QXR0cmlidXRlKG9JLCIiKSxvLnJlZmVyZW5jZUNvdW50Kyt9X3JlbW92ZU1lc3NhZ2VSZWZlcmVuY2UodCxlKXtsZXQgbz1lTy5nZXQoZSk7by5yZWZlcmVuY2VDb3VudC0tLGlFdCh0LCJhcmlhLWRlc2NyaWJlZGJ5IixvLm1lc3NhZ2VFbGVtZW50LmlkKSx0LnJlbW92ZUF0dHJpYnV0ZShvSSl9X2lzRWxlbWVudERlc2NyaWJlZEJ5TWVzc2FnZSh0LGUpe2xldCBvPWFJKHQsImFyaWEtZGVzY3JpYmVkYnkiKSxpPWVPLmdldChlKSxhPWkmJmkubWVzc2FnZUVsZW1lbnQuaWQ7cmV0dXJuISFhJiZvLmluZGV4T2YoYSkhPS0xfV9jYW5CZURlc2NyaWJlZCh0LGUpe2lmKCF0aGlzLl9pc0VsZW1lbnROb2RlKHQpKXJldHVybiExO2lmKGUmJnR5cGVvZiBlPT0ib2JqZWN0IilyZXR1cm4hMDtsZXQgbz1lPT1udWxsPyIiOmAke2V9YC50cmltKCksaT10LmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpO3JldHVybiBvPyFpfHxpLnRyaW0oKSE9PW86ITF9X2lzRWxlbWVudE5vZGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREV9fTtmci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxmcikoSShfdCkpfTtmci5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBmcihJKF90KSl9LHRva2VuOmZyLHByb3ZpZGVkSW46InJvb3QifSk7ZnIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhmcixbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gTVUobix0KXtyZXR1cm4gdHlwZW9mIG49PSJzdHJpbmciP2Ake3R8fCIifS8ke259YDpufWZ1bmN0aW9uIGRhdChuKXtuLmlkfHwobi5pZD1gJHtDYXR9LSR7YUV0Kyt9YCl9dmFyIHJJPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2l0ZW1zPXQsdGhpcy5fYWN0aXZlSXRlbUluZGV4PS0xLHRoaXMuX2FjdGl2ZUl0ZW09bnVsbCx0aGlzLl93cmFwPSExLHRoaXMuX2xldHRlcktleVN0cmVhbT1uZXcgSnQsdGhpcy5fdHlwZWFoZWFkU3Vic2NyaXB0aW9uPUVvLkVNUFRZLHRoaXMuX3ZlcnRpY2FsPSEwLHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXM9W10sdGhpcy5faG9tZUFuZEVuZD0hMSx0aGlzLl9za2lwUHJlZGljYXRlRm49ZT0+ZS5kaXNhYmxlZCx0aGlzLl9wcmVzc2VkTGV0dGVycz1bXSx0aGlzLnRhYk91dD1uZXcgSnQsdGhpcy5jaGFuZ2U9bmV3IEp0LHQgaW5zdGFuY2VvZiBmXyYmdC5jaGFuZ2VzLnN1YnNjcmliZShlPT57aWYodGhpcy5fYWN0aXZlSXRlbSl7bGV0IGk9ZS50b0FycmF5KCkuaW5kZXhPZih0aGlzLl9hY3RpdmVJdGVtKTtpPi0xJiZpIT09dGhpcy5fYWN0aXZlSXRlbUluZGV4JiYodGhpcy5fYWN0aXZlSXRlbUluZGV4PWkpfX0pfXNraXBQcmVkaWNhdGUodCl7cmV0dXJuIHRoaXMuX3NraXBQcmVkaWNhdGVGbj10LHRoaXN9d2l0aFdyYXAodD0hMCl7cmV0dXJuIHRoaXMuX3dyYXA9dCx0aGlzfXdpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKHQ9ITApe3JldHVybiB0aGlzLl92ZXJ0aWNhbD10LHRoaXN9d2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0KXtyZXR1cm4gdGhpcy5faG9yaXpvbnRhbD10LHRoaXN9d2l0aEFsbG93ZWRNb2RpZmllcktleXModCl7cmV0dXJuIHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXM9dCx0aGlzfXdpdGhUeXBlQWhlYWQodD0yMDApe2lmKCh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmdGhpcy5faXRlbXMubGVuZ3RoJiZ0aGlzLl9pdGVtcy5zb21lKGU9PnR5cGVvZiBlLmdldExhYmVsIT0iZnVuY3Rpb24iKSl0aHJvdyBFcnJvcigiTGlzdEtleU1hbmFnZXIgaXRlbXMgaW4gdHlwZWFoZWFkIG1vZGUgbXVzdCBpbXBsZW1lbnQgdGhlIGBnZXRMYWJlbGAgbWV0aG9kLiIpO3JldHVybiB0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90eXBlYWhlYWRTdWJzY3JpcHRpb249dGhpcy5fbGV0dGVyS2V5U3RyZWFtLnBpcGUoYW4oZT0+dGhpcy5fcHJlc3NlZExldHRlcnMucHVzaChlKSksbHIodCksdWUoKCk9PnRoaXMuX3ByZXNzZWRMZXR0ZXJzLmxlbmd0aD4wKSxHKCgpPT50aGlzLl9wcmVzc2VkTGV0dGVycy5qb2luKCIiKSkpLnN1YnNjcmliZShlPT57bGV0IG89dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2ZvcihsZXQgaT0xO2k8by5sZW5ndGgrMTtpKyspe2xldCBhPSh0aGlzLl9hY3RpdmVJdGVtSW5kZXgraSklby5sZW5ndGgscj1vW2FdO2lmKCF0aGlzLl9za2lwUHJlZGljYXRlRm4ocikmJnIuZ2V0TGFiZWwoKS50b1VwcGVyQ2FzZSgpLnRyaW0oKS5pbmRleE9mKGUpPT09MCl7dGhpcy5zZXRBY3RpdmVJdGVtKGEpO2JyZWFrfX10aGlzLl9wcmVzc2VkTGV0dGVycz1bXX0pLHRoaXN9d2l0aEhvbWVBbmRFbmQodD0hMCl7cmV0dXJuIHRoaXMuX2hvbWVBbmRFbmQ9dCx0aGlzfXNldEFjdGl2ZUl0ZW0odCl7bGV0IGU9dGhpcy5fYWN0aXZlSXRlbTt0aGlzLnVwZGF0ZUFjdGl2ZUl0ZW0odCksdGhpcy5fYWN0aXZlSXRlbSE9PWUmJnRoaXMuY2hhbmdlLm5leHQodGhpcy5fYWN0aXZlSXRlbUluZGV4KX1vbktleWRvd24odCl7bGV0IGU9dC5rZXlDb2RlLGk9WyJhbHRLZXkiLCJjdHJsS2V5IiwibWV0YUtleSIsInNoaWZ0S2V5Il0uZXZlcnkoYT0+IXRbYV18fHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXMuaW5kZXhPZihhKT4tMSk7c3dpdGNoKGUpe2Nhc2UgOTp0aGlzLnRhYk91dC5uZXh0KCk7cmV0dXJuO2Nhc2UgNDA6aWYodGhpcy5fdmVydGljYWwmJmkpe3RoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTticmVha31lbHNlIHJldHVybjtjYXNlIDM4OmlmKHRoaXMuX3ZlcnRpY2FsJiZpKXt0aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO2JyZWFrfWVsc2UgcmV0dXJuO2Nhc2UgMzk6aWYodGhpcy5faG9yaXpvbnRhbCYmaSl7dGhpcy5faG9yaXpvbnRhbD09PSJydGwiP3RoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk6dGhpcy5zZXROZXh0SXRlbUFjdGl2ZSgpO2JyZWFrfWVsc2UgcmV0dXJuO2Nhc2UgMzc6aWYodGhpcy5faG9yaXpvbnRhbCYmaSl7dGhpcy5faG9yaXpvbnRhbD09PSJydGwiP3RoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTp0aGlzLnNldFByZXZpb3VzSXRlbUFjdGl2ZSgpO2JyZWFrfWVsc2UgcmV0dXJuO2Nhc2UgMzY6aWYodGhpcy5faG9tZUFuZEVuZCYmaSl7dGhpcy5zZXRGaXJzdEl0ZW1BY3RpdmUoKTticmVha31lbHNlIHJldHVybjtjYXNlIDM1OmlmKHRoaXMuX2hvbWVBbmRFbmQmJmkpe3RoaXMuc2V0TGFzdEl0ZW1BY3RpdmUoKTticmVha31lbHNlIHJldHVybjtkZWZhdWx0OihpfHxWYSh0LCJzaGlmdEtleSIpKSYmKHQua2V5JiZ0LmtleS5sZW5ndGg9PT0xP3RoaXMuX2xldHRlcktleVN0cmVhbS5uZXh0KHQua2V5LnRvTG9jYWxlVXBwZXJDYXNlKCkpOihlPj02NSYmZTw9OTB8fGU+PTQ4JiZlPD01NykmJnRoaXMuX2xldHRlcktleVN0cmVhbS5uZXh0KFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpKTtyZXR1cm59dGhpcy5fcHJlc3NlZExldHRlcnM9W10sdC5wcmV2ZW50RGVmYXVsdCgpfWdldCBhY3RpdmVJdGVtSW5kZXgoKXtyZXR1cm4gdGhpcy5fYWN0aXZlSXRlbUluZGV4fWdldCBhY3RpdmVJdGVtKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW19aXNUeXBpbmcoKXtyZXR1cm4gdGhpcy5fcHJlc3NlZExldHRlcnMubGVuZ3RoPjB9c2V0Rmlyc3RJdGVtQWN0aXZlKCl7dGhpcy5fc2V0QWN0aXZlSXRlbUJ5SW5kZXgoMCwxKX1zZXRMYXN0SXRlbUFjdGl2ZSgpe3RoaXMuX3NldEFjdGl2ZUl0ZW1CeUluZGV4KHRoaXMuX2l0ZW1zLmxlbmd0aC0xLC0xKX1zZXROZXh0SXRlbUFjdGl2ZSgpe3RoaXMuX2FjdGl2ZUl0ZW1JbmRleDwwP3RoaXMuc2V0Rmlyc3RJdGVtQWN0aXZlKCk6dGhpcy5fc2V0QWN0aXZlSXRlbUJ5RGVsdGEoMSl9c2V0UHJldmlvdXNJdGVtQWN0aXZlKCl7dGhpcy5fYWN0aXZlSXRlbUluZGV4PDAmJnRoaXMuX3dyYXA/dGhpcy5zZXRMYXN0SXRlbUFjdGl2ZSgpOnRoaXMuX3NldEFjdGl2ZUl0ZW1CeURlbHRhKC0xKX11cGRhdGVBY3RpdmVJdGVtKHQpe2xldCBlPXRoaXMuX2dldEl0ZW1zQXJyYXkoKSxvPXR5cGVvZiB0PT0ibnVtYmVyIj90OmUuaW5kZXhPZih0KSxpPWVbb107dGhpcy5fYWN0aXZlSXRlbT1pPT1udWxsP251bGw6aSx0aGlzLl9hY3RpdmVJdGVtSW5kZXg9b31fc2V0QWN0aXZlSXRlbUJ5RGVsdGEodCl7dGhpcy5fd3JhcD90aGlzLl9zZXRBY3RpdmVJbldyYXBNb2RlKHQpOnRoaXMuX3NldEFjdGl2ZUluRGVmYXVsdE1vZGUodCl9X3NldEFjdGl2ZUluV3JhcE1vZGUodCl7bGV0IGU9dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2ZvcihsZXQgbz0xO288PWUubGVuZ3RoO28rKyl7bGV0IGk9KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCt0Km8rZS5sZW5ndGgpJWUubGVuZ3RoLGE9ZVtpXTtpZighdGhpcy5fc2tpcFByZWRpY2F0ZUZuKGEpKXt0aGlzLnNldEFjdGl2ZUl0ZW0oaSk7cmV0dXJufX19X3NldEFjdGl2ZUluRGVmYXVsdE1vZGUodCl7dGhpcy5fc2V0QWN0aXZlSXRlbUJ5SW5kZXgodGhpcy5fYWN0aXZlSXRlbUluZGV4K3QsdCl9X3NldEFjdGl2ZUl0ZW1CeUluZGV4KHQsZSl7bGV0IG89dGhpcy5fZ2V0SXRlbXNBcnJheSgpO2lmKCEhb1t0XSl7Zm9yKDt0aGlzLl9za2lwUHJlZGljYXRlRm4ob1t0XSk7KWlmKHQrPWUsIW9bdF0pcmV0dXJuO3RoaXMuc2V0QWN0aXZlSXRlbSh0KX19X2dldEl0ZW1zQXJyYXkoKXtyZXR1cm4gdGhpcy5faXRlbXMgaW5zdGFuY2VvZiBmXz90aGlzLl9pdGVtcy50b0FycmF5KCk6dGhpcy5faXRlbXN9fTt2YXIgTjM9Y2xhc3MgZXh0ZW5kcyBySXtzZXRBY3RpdmVJdGVtKHQpe3RoaXMuYWN0aXZlSXRlbSYmdGhpcy5hY3RpdmVJdGVtLnNldEluYWN0aXZlU3R5bGVzKCksc3VwZXIuc2V0QWN0aXZlSXRlbSh0KSx0aGlzLmFjdGl2ZUl0ZW0mJnRoaXMuYWN0aXZlSXRlbS5zZXRBY3RpdmVTdHlsZXMoKX19O3ZhciBXeT1jbGFzcyBleHRlbmRzIHJJe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcmlnaW49InByb2dyYW0ifXNldEZvY3VzT3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW49dCx0aGlzfXNldEFjdGl2ZUl0ZW0odCl7c3VwZXIuc2V0QWN0aXZlSXRlbSh0KSx0aGlzLmFjdGl2ZUl0ZW0mJnRoaXMuYWN0aXZlSXRlbS5mb2N1cyh0aGlzLl9vcmlnaW4pfX07dmFyIFhsPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3BsYXRmb3JtPXR9aXNEaXNhYmxlZCh0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil9aXNWaXNpYmxlKHQpe3JldHVybiBzRXQodCkmJmdldENvbXB1dGVkU3R5bGUodCkudmlzaWJpbGl0eT09PSJ2aXNpYmxlIn1pc1RhYmJhYmxlKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuITE7bGV0IGU9ckV0KHVFdCh0KSk7aWYoZSYmKGdhdChlKT09PS0xfHwhdGhpcy5pc1Zpc2libGUoZSkpKXJldHVybiExO2xldCBvPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxpPWdhdCh0KTtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpP2khPT0tMTpvPT09ImlmcmFtZSJ8fG89PT0ib2JqZWN0Inx8dGhpcy5fcGxhdGZvcm0uV0VCS0lUJiZ0aGlzLl9wbGF0Zm9ybS5JT1MmJiFkRXQodCk/ITE6bz09PSJhdWRpbyI/dC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIik/aSE9PS0xOiExOm89PT0idmlkZW8iP2k9PT0tMT8hMTppIT09bnVsbD8hMDp0aGlzLl9wbGF0Zm9ybS5GSVJFRk9YfHx0Lmhhc0F0dHJpYnV0ZSgiY29udHJvbHMiKTp0LnRhYkluZGV4Pj0wfWlzRm9jdXNhYmxlKHQsZSl7cmV0dXJuIGdFdCh0KSYmIXRoaXMuaXNEaXNhYmxlZCh0KSYmKChlPT1udWxsP3ZvaWQgMDplLmlnbm9yZVZpc2liaWxpdHkpfHx0aGlzLmlzVmlzaWJsZSh0KSl9fTtYbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxYbCkoSShWdCkpfTtYbC5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBYbChJKFZ0KSl9LHRva2VuOlhsLHByb3ZpZGVkSW46InJvb3QifSk7WGwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWdH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhYbCxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpWdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gckV0KG4pe3RyeXtyZXR1cm4gbi5mcmFtZUVsZW1lbnR9Y2F0Y2godCl7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHNFdChuKXtyZXR1cm4hIShuLm9mZnNldFdpZHRofHxuLm9mZnNldEhlaWdodHx8dHlwZW9mIG4uZ2V0Q2xpZW50UmVjdHM9PSJmdW5jdGlvbiImJm4uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfWZ1bmN0aW9uIGxFdChuKXtsZXQgdD1uLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT0iaW5wdXQifHx0PT09InNlbGVjdCJ8fHQ9PT0iYnV0dG9uInx8dD09PSJ0ZXh0YXJlYSJ9ZnVuY3Rpb24gY0V0KG4pe3JldHVybiBmRXQobikmJm4udHlwZT09ImhpZGRlbiJ9ZnVuY3Rpb24gbUV0KG4pe3JldHVybiBwRXQobikmJm4uaGFzQXR0cmlidXRlKCJocmVmIil9ZnVuY3Rpb24gZkV0KG4pe3JldHVybiBuLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PSJpbnB1dCJ9ZnVuY3Rpb24gcEV0KG4pe3JldHVybiBuLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PSJhIn1mdW5jdGlvbiBNYXQobil7aWYoIW4uaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpfHxuLnRhYkluZGV4PT09dm9pZCAwKXJldHVybiExO2xldCB0PW4uZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO3JldHVybiB0PT0iLTMyNzY4Ij8hMTohISh0JiYhaXNOYU4ocGFyc2VJbnQodCwxMCkpKX1mdW5jdGlvbiBnYXQobil7aWYoIU1hdChuKSlyZXR1cm4gbnVsbDtsZXQgdD1wYXJzZUludChuLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKXx8IiIsMTApO3JldHVybiBpc05hTih0KT8tMTp0fWZ1bmN0aW9uIGRFdChuKXtsZXQgdD1uLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksZT10PT09ImlucHV0IiYmbi50eXBlO3JldHVybiBlPT09InRleHQifHxlPT09InBhc3N3b3JkInx8dD09PSJzZWxlY3QifHx0PT09InRleHRhcmVhIn1mdW5jdGlvbiBnRXQobil7cmV0dXJuIGNFdChuKT8hMTpsRXQobil8fG1FdChuKXx8bi5oYXNBdHRyaWJ1dGUoImNvbnRlbnRlZGl0YWJsZSIpfHxNYXQobil9ZnVuY3Rpb24gdUV0KG4pe3JldHVybiBuLm93bmVyRG9jdW1lbnQmJm4ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93fXZhciBzST1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGE9ITEpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9jaGVja2VyPWUsdGhpcy5fbmdab25lPW8sdGhpcy5fZG9jdW1lbnQ9aSx0aGlzLl9oYXNBdHRhY2hlZD0hMSx0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXI9KCk9PnRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5lbmRBbmNob3JMaXN0ZW5lcj0oKT0+dGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5fZW5hYmxlZD0hMCxhfHx0aGlzLmF0dGFjaEFuY2hvcnMoKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuX2VuYWJsZWQ9dCx0aGlzLl9zdGFydEFuY2hvciYmdGhpcy5fZW5kQW5jaG9yJiYodGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9zdGFydEFuY2hvciksdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9lbmRBbmNob3IpKX1kZXN0cm95KCl7bGV0IHQ9dGhpcy5fc3RhcnRBbmNob3IsZT10aGlzLl9lbmRBbmNob3I7dCYmKHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuc3RhcnRBbmNob3JMaXN0ZW5lciksdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCkpLGUmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLmVuZEFuY2hvckxpc3RlbmVyKSxlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSksdGhpcy5fc3RhcnRBbmNob3I9dGhpcy5fZW5kQW5jaG9yPW51bGwsdGhpcy5faGFzQXR0YWNoZWQ9ITF9YXR0YWNoQW5jaG9ycygpe3JldHVybiB0aGlzLl9oYXNBdHRhY2hlZD8hMDoodGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dGhpcy5fc3RhcnRBbmNob3J8fCh0aGlzLl9zdGFydEFuY2hvcj10aGlzLl9jcmVhdGVBbmNob3IoKSx0aGlzLl9zdGFydEFuY2hvci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyKSksdGhpcy5fZW5kQW5jaG9yfHwodGhpcy5fZW5kQW5jaG9yPXRoaXMuX2NyZWF0ZUFuY2hvcigpLHRoaXMuX2VuZEFuY2hvci5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5lbmRBbmNob3JMaXN0ZW5lcikpfSksdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9zdGFydEFuY2hvcix0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2VuZEFuY2hvcix0aGlzLl9lbGVtZW50Lm5leHRTaWJsaW5nKSx0aGlzLl9oYXNBdHRhY2hlZD0hMCksdGhpcy5faGFzQXR0YWNoZWQpfWZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkodCl7cmV0dXJuIG5ldyBQcm9taXNlKGU9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCk9PmUodGhpcy5mb2N1c0luaXRpYWxFbGVtZW50KHQpKSl9KX1mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50V2hlblJlYWR5KHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgpPT5lKHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCh0KSkpfSl9Zm9jdXNMYXN0VGFiYmFibGVFbGVtZW50V2hlblJlYWR5KHQpe3JldHVybiBuZXcgUHJvbWlzZShlPT57dGhpcy5fZXhlY3V0ZU9uU3RhYmxlKCgpPT5lKHRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KHQpKSl9KX1fZ2V0UmVnaW9uQm91bmRhcnkodCl7bGV0IGU9dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbY2RrLWZvY3VzLXJlZ2lvbi0ke3R9XSwgW2Nka0ZvY3VzUmVnaW9uJHt0fV0sIFtjZGstZm9jdXMtJHt0fV1gKTtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyllW29dLmhhc0F0dHJpYnV0ZShgY2RrLWZvY3VzLSR7dH1gKT9jb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLSR7dH0nLCB1c2UgJ2Nka0ZvY3VzUmVnaW9uJHt0fScgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMC5gLGVbb10pOmVbb10uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtcmVnaW9uLSR7dH1gKSYmY29uc29sZS53YXJuKGBGb3VuZCB1c2Ugb2YgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgJ2Nkay1mb2N1cy1yZWdpb24tJHt0fScsIHVzZSAnY2RrRm9jdXNSZWdpb24ke3R9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wLmAsZVtvXSk7cmV0dXJuIHQ9PSJzdGFydCI/ZS5sZW5ndGg/ZVswXTp0aGlzLl9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbGVtZW50KTplLmxlbmd0aD9lW2UubGVuZ3RoLTFdOnRoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5fZWxlbWVudCl9Zm9jdXNJbml0aWFsRWxlbWVudCh0KXtsZXQgZT10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIltjZGstZm9jdXMtaW5pdGlhbF0sIFtjZGtGb2N1c0luaXRpYWxdIik7aWYoZSl7aWYoZS5oYXNBdHRyaWJ1dGUoImNkay1mb2N1cy1pbml0aWFsIikmJmNvbnNvbGUud2FybigiRm91bmQgdXNlIG9mIGRlcHJlY2F0ZWQgYXR0cmlidXRlICdjZGstZm9jdXMtaW5pdGlhbCcsIHVzZSAnY2RrRm9jdXNJbml0aWFsJyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wIixlKSwodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJiF0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKGUpJiZjb25zb2xlLndhcm4oIkVsZW1lbnQgbWF0Y2hpbmcgJ1tjZGtGb2N1c0luaXRpYWxdJyBpcyBub3QgZm9jdXNhYmxlLiIsZSksIXRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUoZSkpe2xldCBvPXRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KGUpO3JldHVybiBvPT1udWxsfHxvLmZvY3VzKHQpLCEhb31yZXR1cm4gZS5mb2N1cyh0KSwhMH1yZXR1cm4gdGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KHQpfWZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQodCl7bGV0IGU9dGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoInN0YXJ0Iik7cmV0dXJuIGUmJmUuZm9jdXModCksISFlfWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudCh0KXtsZXQgZT10aGlzLl9nZXRSZWdpb25Cb3VuZGFyeSgiZW5kIik7cmV0dXJuIGUmJmUuZm9jdXModCksISFlfWhhc0F0dGFjaGVkKCl7cmV0dXJuIHRoaXMuX2hhc0F0dGFjaGVkfV9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudCh0KXtpZih0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKHQpJiZ0aGlzLl9jaGVja2VyLmlzVGFiYmFibGUodCkpcmV0dXJuIHQ7bGV0IGU9dC5jaGlsZHJlbnx8dC5jaGlsZE5vZGVzO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKXtsZXQgaT1lW29dLm5vZGVUeXBlPT09dGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFP3RoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KGVbb10pOm51bGw7aWYoaSlyZXR1cm4gaX1yZXR1cm4gbnVsbH1fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0KXtpZih0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKHQpJiZ0aGlzLl9jaGVja2VyLmlzVGFiYmFibGUodCkpcmV0dXJuIHQ7bGV0IGU9dC5jaGlsZHJlbnx8dC5jaGlsZE5vZGVzO2ZvcihsZXQgbz1lLmxlbmd0aC0xO28+PTA7by0tKXtsZXQgaT1lW29dLm5vZGVUeXBlPT09dGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFP3RoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQoZVtvXSk6bnVsbDtpZihpKXJldHVybiBpfXJldHVybiBudWxsfV9jcmVhdGVBbmNob3IoKXtsZXQgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodGhpcy5fZW5hYmxlZCx0KSx0LmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSx0LmNsYXNzTGlzdC5hZGQoImNkay1mb2N1cy10cmFwLWFuY2hvciIpLHQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0fV90b2dnbGVBbmNob3JUYWJJbmRleCh0LGUpe3Q/ZS5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpOmUucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpfXRvZ2dsZUFuY2hvcnModCl7dGhpcy5fc3RhcnRBbmNob3ImJnRoaXMuX2VuZEFuY2hvciYmKHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHQsdGhpcy5fc3RhcnRBbmNob3IpLHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHQsdGhpcy5fZW5kQW5jaG9yKSl9X2V4ZWN1dGVPblN0YWJsZSh0KXt0aGlzLl9uZ1pvbmUuaXNTdGFibGU/dCgpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKENuKDEpKS5zdWJzY3JpYmUodCl9fSxRbD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5fY2hlY2tlcj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2RvY3VtZW50PW99Y3JlYXRlKHQsZT0hMSl7cmV0dXJuIG5ldyBzSSh0LHRoaXMuX2NoZWNrZXIsdGhpcy5fbmdab25lLHRoaXMuX2RvY3VtZW50LGUpfX07UWwuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UWwpKEkoWGwpLEkoQ3QpLEkoX3QpKX07UWwuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgUWwoSShYbCksSShDdCksSShfdCkpfSx0b2tlbjpRbCxwcm92aWRlZEluOiJyb290In0pO1FsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6WGx9LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhRbCxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpYbH0se3R5cGU6Q3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTt2YXIgR2c9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c1RyYXBGYWN0b3J5PWUsdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PW51bGwsdGhpcy5mb2N1c1RyYXA9dGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCEwKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmZvY3VzVHJhcC5lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuZm9jdXNUcmFwLmVuYWJsZWQ9WmUodCl9Z2V0IGF1dG9DYXB0dXJlKCl7cmV0dXJuIHRoaXMuX2F1dG9DYXB0dXJlfXNldCBhdXRvQ2FwdHVyZSh0KXt0aGlzLl9hdXRvQ2FwdHVyZT1aZSh0KX1uZ09uRGVzdHJveSgpe3RoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQmJih0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9bnVsbCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb2N1c1RyYXAuYXR0YWNoQW5jaG9ycygpLHRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuX2NhcHR1cmVGb2N1cygpfW5nRG9DaGVjaygpe3RoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCl8fHRoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKX1uZ09uQ2hhbmdlcyh0KXtsZXQgZT10LmF1dG9DYXB0dXJlO2UmJiFlLmZpcnN0Q2hhbmdlJiZ0aGlzLmF1dG9DYXB0dXJlJiZ0aGlzLmZvY3VzVHJhcC5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9jYXB0dXJlRm9jdXMoKX1fY2FwdHVyZUZvY3VzKCl7dGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50PUUzKCksdGhpcy5mb2N1c1RyYXAuZm9jdXNJbml0aWFsRWxlbWVudFdoZW5SZWFkeSgpfX07R2cuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8R2cpKHYoTCksdihRbCksdihfdCkpfTtHZy5cdTAyNzVkaXI9dnQoe3R5cGU6R2csc2VsZWN0b3JzOltbIiIsImNka1RyYXBGb2N1cyIsIiJdXSxpbnB1dHM6e2VuYWJsZWQ6WyJjZGtUcmFwRm9jdXMiLCJlbmFibGVkIl0sYXV0b0NhcHR1cmU6WyJjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSIsImF1dG9DYXB0dXJlIl19LGV4cG9ydEFzOlsiY2RrVHJhcEZvY3VzIl0sZmVhdHVyZXM6W1dlXX0pO0dnLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6UWx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07R2cucHJvcERlY29yYXRvcnM9e2VuYWJsZWQ6W3t0eXBlOmQsYXJnczpbImNka1RyYXBGb2N1cyJdfV0sYXV0b0NhcHR1cmU6W3t0eXBlOmQsYXJnczpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEdnLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltjZGtUcmFwRm9jdXNdIixleHBvcnRBczoiY2RrVHJhcEZvY3VzIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6UWx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LHtlbmFibGVkOlt7dHlwZTpkLGFyZ3M6WyJjZGtUcmFwRm9jdXMiXX1dLGF1dG9DYXB0dXJlOlt7dHlwZTpkLGFyZ3M6WyJjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZSJdfV19KX0pKCk7dmFyIE9VPWNsYXNzIGV4dGVuZHMgc0l7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyl7c3VwZXIodCxlLG8saSxzLmRlZmVyKSx0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyPWEsdGhpcy5faW5lcnRTdHJhdGVneT1yLHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXIucmVnaXN0ZXIodGhpcyl9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5fZW5hYmxlZH1zZXQgZW5hYmxlZCh0KXt0aGlzLl9lbmFibGVkPXQsdGhpcy5fZW5hYmxlZD90aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLnJlZ2lzdGVyKHRoaXMpOnRoaXMuX2ZvY3VzVHJhcE1hbmFnZXIuZGVyZWdpc3Rlcih0aGlzKX1kZXN0cm95KCl7dGhpcy5fZm9jdXNUcmFwTWFuYWdlci5kZXJlZ2lzdGVyKHRoaXMpLHN1cGVyLmRlc3Ryb3koKX1fZW5hYmxlKCl7dGhpcy5faW5lcnRTdHJhdGVneS5wcmV2ZW50Rm9jdXModGhpcyksdGhpcy50b2dnbGVBbmNob3JzKCEwKX1fZGlzYWJsZSgpe3RoaXMuX2luZXJ0U3RyYXRlZ3kuYWxsb3dGb2N1cyh0aGlzKSx0aGlzLnRvZ2dsZUFuY2hvcnMoITEpfX07dmFyIGxJPW5ldyB5dCgiRk9DVVNfVFJBUF9JTkVSVF9TVFJBVEVHWSIpO2Z1bmN0aW9uIGhFdChuLHQpe2lmKCEobiBpbnN0YW5jZW9mIE5vZGUpKXJldHVybiBudWxsO2xldCBlPW47Zm9yKDtlIT1udWxsJiYhKGUgaW5zdGFuY2VvZiBFbGVtZW50KTspZT1lLnBhcmVudE5vZGU7cmV0dXJuIGUmJihDRXQ/ZS5jbG9zZXN0KHQpOl9FdChlLHQpKX1mdW5jdGlvbiBfRXQobix0KXtsZXQgZT1uO2Zvcig7ZSE9bnVsbCYmIShlIGluc3RhbmNlb2YgRWxlbWVudCYmTUV0KGUsdCkpOyllPWUucGFyZW50Tm9kZTtyZXR1cm4gZXx8bnVsbH12YXIgQ0V0PXR5cGVvZiBFbGVtZW50IT0idW5kZWZpbmVkIiYmISFFbGVtZW50LnByb3RvdHlwZS5jbG9zZXN0O2Z1bmN0aW9uIE1FdChuLHQpe3JldHVybiBuLm1hdGNoZXM/bi5tYXRjaGVzKHQpOm4ubXNNYXRjaGVzU2VsZWN0b3IodCl9dmFyIFBVPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbGlzdGVuZXI9bnVsbH1wcmV2ZW50Rm9jdXModCl7dGhpcy5fbGlzdGVuZXImJnQuX2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9saXN0ZW5lciwhMCksdGhpcy5fbGlzdGVuZXI9ZT0+dGhpcy5fdHJhcEZvY3VzKHQsZSksdC5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dC5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKX0pfWFsbG93Rm9jdXModCl7IXRoaXMuX2xpc3RlbmVyfHwodC5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKSx0aGlzLl9saXN0ZW5lcj1udWxsKX1fdHJhcEZvY3VzKHQsZSl7bGV0IG89ZS50YXJnZXQsaT10Ll9lbGVtZW50OyFpLmNvbnRhaW5zKG8pJiZoRXQobywiZGl2LmNkay1vdmVybGF5LXBhbmUiKT09PW51bGwmJnNldFRpbWVvdXQoKCk9Pnt0LmVuYWJsZWQmJiFpLmNvbnRhaW5zKHQuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQpJiZ0LmZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKX0pfX07dmFyIE5fPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fZm9jdXNUcmFwU3RhY2s9W119cmVnaXN0ZXIodCl7dGhpcy5fZm9jdXNUcmFwU3RhY2s9dGhpcy5fZm9jdXNUcmFwU3RhY2suZmlsdGVyKG89Pm8hPT10KTtsZXQgZT10aGlzLl9mb2N1c1RyYXBTdGFjaztlLmxlbmd0aCYmZVtlLmxlbmd0aC0xXS5fZGlzYWJsZSgpLGUucHVzaCh0KSx0Ll9lbmFibGUoKX1kZXJlZ2lzdGVyKHQpe3QuX2Rpc2FibGUoKTtsZXQgZT10aGlzLl9mb2N1c1RyYXBTdGFjayxvPWUuaW5kZXhPZih0KTtvIT09LTEmJihlLnNwbGljZShvLDEpLGUubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLl9lbmFibGUoKSl9fTtOXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxOXyl9O05fLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE5ffSx0b2tlbjpOXyxwcm92aWRlZEluOiJyb290In0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhOXyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVybltdfSxudWxsKX0pKCk7dmFyIHVQPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7dGhpcy5fY2hlY2tlcj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXI9byx0aGlzLl9kb2N1bWVudD1pLHRoaXMuX2luZXJ0U3RyYXRlZ3k9YXx8bmV3IFBVfWNyZWF0ZSh0LGU9e2RlZmVyOiExfSl7bGV0IG87cmV0dXJuIHR5cGVvZiBlPT0iYm9vbGVhbiI/bz17ZGVmZXI6ZX06bz1lLG5ldyBPVSh0LHRoaXMuX2NoZWNrZXIsdGhpcy5fbmdab25lLHRoaXMuX2RvY3VtZW50LHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXIsdGhpcy5faW5lcnRTdHJhdGVneSxvKX19O3VQLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHVQKShJKFhsKSxJKEN0KSxJKE5fKSxJKF90KSxJKGxJLDgpKX07dVAuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgdVAoSShYbCksSShDdCksSShOXyksSShfdCksSShsSSw4KSl9LHRva2VuOnVQLHByb3ZpZGVkSW46InJvb3QifSk7dVAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpYbH0se3R5cGU6Q3R9LHt0eXBlOk5ffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbbEldfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModVAsW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6WGx9LHt0eXBlOkN0fSx7dHlwZTpOX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W2xJXX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBlayhuKXtyZXR1cm4gbi5vZmZzZXRYPT09MCYmbi5vZmZzZXRZPT09MH1mdW5jdGlvbiBuayhuKXtsZXQgdD1uLnRvdWNoZXMmJm4udG91Y2hlc1swXXx8bi5jaGFuZ2VkVG91Y2hlcyYmbi5jaGFuZ2VkVG91Y2hlc1swXTtyZXR1cm4hIXQmJnQuaWRlbnRpZmllcj09PS0xJiYodC5yYWRpdXNYPT1udWxsfHx0LnJhZGl1c1g9PT0xKSYmKHQucmFkaXVzWT09bnVsbHx8dC5yYWRpdXNZPT09MSl9dmFyIGNJPW5ldyB5dCgiY2RrLWlucHV0LW1vZGFsaXR5LWRldGVjdG9yLW9wdGlvbnMiKSxiRXQ9e2lnbm9yZUtleXM6WzE4LDE3LDIyNCw5MSwxNl19LGJhdD02NTAsazM9JG0oe3Bhc3NpdmU6ITAsY2FwdHVyZTohMH0pLFlnPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fbW9zdFJlY2VudFRhcmdldD1udWxsLHRoaXMuX21vZGFsaXR5PW5ldyBHYShudWxsKSx0aGlzLl9sYXN0VG91Y2hNcz0wLHRoaXMuX29uS2V5ZG93bj1hPT57dmFyIHIsczshKChzPShyPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8cj09PXZvaWQgMD92b2lkIDA6ci5pZ25vcmVLZXlzKT09PW51bGx8fHM9PT12b2lkIDApJiZzLnNvbWUobD0+bD09PWEua2V5Q29kZSl8fCh0aGlzLl9tb2RhbGl0eS5uZXh0KCJrZXlib2FyZCIpLHRoaXMuX21vc3RSZWNlbnRUYXJnZXQ9Uk0oYSkpfSx0aGlzLl9vbk1vdXNlZG93bj1hPT57RGF0ZS5ub3coKS10aGlzLl9sYXN0VG91Y2hNczxiYXR8fCh0aGlzLl9tb2RhbGl0eS5uZXh0KGVrKGEpPyJrZXlib2FyZCI6Im1vdXNlIiksdGhpcy5fbW9zdFJlY2VudFRhcmdldD1STShhKSl9LHRoaXMuX29uVG91Y2hzdGFydD1hPT57aWYobmsoYSkpe3RoaXMuX21vZGFsaXR5Lm5leHQoImtleWJvYXJkIik7cmV0dXJufXRoaXMuX2xhc3RUb3VjaE1zPURhdGUubm93KCksdGhpcy5fbW9kYWxpdHkubmV4dCgidG91Y2giKSx0aGlzLl9tb3N0UmVjZW50VGFyZ2V0PVJNKGEpfSx0aGlzLl9vcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxiRXQpLGkpLHRoaXMubW9kYWxpdHlEZXRlY3RlZD10aGlzLl9tb2RhbGl0eS5waXBlKFZDKDEpKSx0aGlzLm1vZGFsaXR5Q2hhbmdlZD10aGlzLm1vZGFsaXR5RGV0ZWN0ZWQucGlwZShYbygpKSx0LmlzQnJvd3NlciYmZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e28uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fb25LZXlkb3duLGszKSxvLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fb25Nb3VzZWRvd24sazMpLG8uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fb25Ub3VjaHN0YXJ0LGszKX0pfWdldCBtb3N0UmVjZW50TW9kYWxpdHkoKXtyZXR1cm4gdGhpcy5fbW9kYWxpdHkudmFsdWV9bmdPbkRlc3Ryb3koKXt0aGlzLl9tb2RhbGl0eS5jb21wbGV0ZSgpLHRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmKGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uS2V5ZG93bixrMyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9vbk1vdXNlZG93bixrMyksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fb25Ub3VjaHN0YXJ0LGszKSl9fTtZZy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxZZykoSShWdCksSShDdCksSShfdCksSShjSSw4KSl9O1lnLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFlnKEkoVnQpLEkoQ3QpLEkoX3QpLEkoY0ksOCkpfSx0b2tlbjpZZyxwcm92aWRlZEluOiJyb290In0pO1lnLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VnR9LHt0eXBlOkN0fSx7dHlwZTpEb2N1bWVudCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltjSV19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhZZyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpWdH0se3R5cGU6Q3R9LHt0eXBlOkRvY3VtZW50LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W2NJXX1dfV19LG51bGwpfSkoKTt2YXIgbUk9bmV3IHl0KCJsaXZlQW5ub3VuY2VyRWxlbWVudCIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6T0V0fSk7ZnVuY3Rpb24gT0V0KCl7cmV0dXJuIG51bGx9dmFyIGZJPW5ldyB5dCgiTElWRV9BTk5PVU5DRVJfREVGQVVMVF9PUFRJT05TIik7dmFyIHByPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuX25nWm9uZT1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPWksdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9saXZlRWxlbWVudD10fHx0aGlzLl9jcmVhdGVMaXZlRWxlbWVudCgpfWFubm91bmNlKHQsLi4uZSl7bGV0IG89dGhpcy5fZGVmYXVsdE9wdGlvbnMsaSxhO3JldHVybiBlLmxlbmd0aD09PTEmJnR5cGVvZiBlWzBdPT0ibnVtYmVyIj9hPWVbMF06W2ksYV09ZSx0aGlzLmNsZWFyKCksY2xlYXJUaW1lb3V0KHRoaXMuX3ByZXZpb3VzVGltZW91dCksaXx8KGk9byYmby5wb2xpdGVuZXNzP28ucG9saXRlbmVzczoicG9saXRlIiksYT09bnVsbCYmbyYmKGE9by5kdXJhdGlvbiksdGhpcy5fbGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxpdmUiLGkpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+bmV3IFByb21pc2Uocj0+e2NsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLHRoaXMuX3ByZXZpb3VzVGltZW91dD1zZXRUaW1lb3V0KCgpPT57dGhpcy5fbGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ9dCxyKCksdHlwZW9mIGE9PSJudW1iZXIiJiYodGhpcy5fcHJldmlvdXNUaW1lb3V0PXNldFRpbWVvdXQoKCk9PnRoaXMuY2xlYXIoKSxhKSl9LDEwMCl9KSl9Y2xlYXIoKXt0aGlzLl9saXZlRWxlbWVudCYmKHRoaXMuX2xpdmVFbGVtZW50LnRleHRDb250ZW50PSIiKX1uZ09uRGVzdHJveSgpe2NsZWFyVGltZW91dCh0aGlzLl9wcmV2aW91c1RpbWVvdXQpLHRoaXMuX2xpdmVFbGVtZW50JiZ0aGlzLl9saXZlRWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fbGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXZlRWxlbWVudCksdGhpcy5fbGl2ZUVsZW1lbnQ9bnVsbCl9X2NyZWF0ZUxpdmVFbGVtZW50KCl7bGV0IHQ9ImNkay1saXZlLWFubm91bmNlci1lbGVtZW50IixlPXRoaXMuX2RvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUodCksbz10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyllW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZVtpXSk7cmV0dXJuIG8uY2xhc3NMaXN0LmFkZCh0KSxvLmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSxvLnNldEF0dHJpYnV0ZSgiYXJpYS1hdG9taWMiLCJ0cnVlIiksby5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyksb319O3ByLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHByKShJKG1JLDgpLEkoQ3QpLEkoX3QpLEkoZkksOCkpfTtwci5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwcihJKG1JLDgpLEkoQ3QpLEkoX3QpLEkoZkksOCkpfSx0b2tlbjpwcixwcm92aWRlZEluOiJyb290In0pO3ByLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbbUldfV19LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbZkldfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocHIsW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbbUldfV19LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbZkldfV19XX0sbnVsbCl9KSgpO3ZhciBXZz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fbGl2ZUFubm91bmNlcj1lLHRoaXMuX2NvbnRlbnRPYnNlcnZlcj1vLHRoaXMuX25nWm9uZT1pLHRoaXMuX3BvbGl0ZW5lc3M9InBvbGl0ZSJ9Z2V0IHBvbGl0ZW5lc3MoKXtyZXR1cm4gdGhpcy5fcG9saXRlbmVzc31zZXQgcG9saXRlbmVzcyh0KXt0aGlzLl9wb2xpdGVuZXNzPXQ9PT0ib2ZmInx8dD09PSJhc3NlcnRpdmUiP3Q6InBvbGl0ZSIsdGhpcy5fcG9saXRlbmVzcz09PSJvZmYiP3RoaXMuX3N1YnNjcmlwdGlvbiYmKHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3N1YnNjcmlwdGlvbj1udWxsKTp0aGlzLl9zdWJzY3JpcHRpb258fCh0aGlzLl9zdWJzY3JpcHRpb249dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT50aGlzLl9jb250ZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmKS5zdWJzY3JpYmUoKCk9PntsZXQgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7ZSE9PXRoaXMuX3ByZXZpb3VzQW5ub3VuY2VkVGV4dCYmKHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UoZSx0aGlzLl9wb2xpdGVuZXNzKSx0aGlzLl9wcmV2aW91c0Fubm91bmNlZFRleHQ9ZSl9KSkpfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uJiZ0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19O1dnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFdnKSh2KEwpLHYocHIpLHYocWwpLHYoQ3QpKX07V2cuXHUwMjc1ZGlyPXZ0KHt0eXBlOldnLHNlbGVjdG9yczpbWyIiLCJjZGtBcmlhTGl2ZSIsIiJdXSxpbnB1dHM6e3BvbGl0ZW5lc3M6WyJjZGtBcmlhTGl2ZSIsInBvbGl0ZW5lc3MiXX0sZXhwb3J0QXM6WyJjZGtBcmlhTGl2ZSJdfSk7V2cuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpwcn0se3R5cGU6cWx9LHt0eXBlOkN0fV07V2cucHJvcERlY29yYXRvcnM9e3BvbGl0ZW5lc3M6W3t0eXBlOmQsYXJnczpbImNka0FyaWFMaXZlIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFdnLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltjZGtBcmlhTGl2ZV0iLGV4cG9ydEFzOiJjZGtBcmlhTGl2ZSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOnByfSx7dHlwZTpxbH0se3R5cGU6Q3R9XX0se3BvbGl0ZW5lc3M6W3t0eXBlOmQsYXJnczpbImNka0FyaWFMaXZlIl19XX0pfSkoKTt2YXIgcEk9bmV3IHl0KCJjZGstZm9jdXMtbW9uaXRvci1kZWZhdWx0LW9wdGlvbnMiKSxpST0kbSh7cGFzc2l2ZTohMCxjYXB0dXJlOiEwfSksbG49Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhKXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX2lucHV0TW9kYWxpdHlEZXRlY3Rvcj1vLHRoaXMuX29yaWdpbj1udWxsLHRoaXMuX3dpbmRvd0ZvY3VzZWQ9ITEsdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb249ITEsdGhpcy5fZWxlbWVudEluZm89bmV3IE1hcCx0aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnQ9MCx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudD1uZXcgTWFwLHRoaXMuX3dpbmRvd0ZvY3VzTGlzdGVuZXI9KCk9Pnt0aGlzLl93aW5kb3dGb2N1c2VkPSEwLHRoaXMuX3dpbmRvd0ZvY3VzVGltZW91dElkPXNldFRpbWVvdXQoKCk9PnRoaXMuX3dpbmRvd0ZvY3VzZWQ9ITEpfSx0aGlzLl9zdG9wSW5wdXRNb2RhbGl0eURldGVjdG9yPW5ldyBKdCx0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyPXI9PntsZXQgcz1STShyKSxsPXIudHlwZT09PSJmb2N1cyI/dGhpcy5fb25Gb2N1czp0aGlzLl9vbkJsdXI7Zm9yKGxldCBjPXM7YztjPWMucGFyZW50RWxlbWVudClsLmNhbGwodGhpcyxyLGMpfSx0aGlzLl9kb2N1bWVudD1pLHRoaXMuX2RldGVjdGlvbk1vZGU9KGE9PW51bGw/dm9pZCAwOmEuZGV0ZWN0aW9uTW9kZSl8fDB9bW9uaXRvcih0LGU9ITEpe2xldCBvPUNwKHQpO2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fG8ubm9kZVR5cGUhPT0xKXJldHVybiBkbihudWxsKTtsZXQgaT1uSShvKXx8dGhpcy5fZ2V0RG9jdW1lbnQoKSxhPXRoaXMuX2VsZW1lbnRJbmZvLmdldChvKTtpZihhKXJldHVybiBlJiYoYS5jaGVja0NoaWxkcmVuPSEwKSxhLnN1YmplY3Q7bGV0IHI9e2NoZWNrQ2hpbGRyZW46ZSxzdWJqZWN0Om5ldyBKdCxyb290Tm9kZTppfTtyZXR1cm4gdGhpcy5fZWxlbWVudEluZm8uc2V0KG8sciksdGhpcy5fcmVnaXN0ZXJHbG9iYWxMaXN0ZW5lcnMociksci5zdWJqZWN0fXN0b3BNb25pdG9yaW5nKHQpe2xldCBlPUNwKHQpLG89dGhpcy5fZWxlbWVudEluZm8uZ2V0KGUpO28mJihvLnN1YmplY3QuY29tcGxldGUoKSx0aGlzLl9zZXRDbGFzc2VzKGUpLHRoaXMuX2VsZW1lbnRJbmZvLmRlbGV0ZShlKSx0aGlzLl9yZW1vdmVHbG9iYWxMaXN0ZW5lcnMobykpfWZvY3VzVmlhKHQsZSxvKXtsZXQgaT1DcCh0KSxhPXRoaXMuX2dldERvY3VtZW50KCkuYWN0aXZlRWxlbWVudDtpPT09YT90aGlzLl9nZXRDbG9zZXN0RWxlbWVudHNJbmZvKGkpLmZvckVhY2goKFtyLHNdKT0+dGhpcy5fb3JpZ2luQ2hhbmdlZChyLGUscykpOih0aGlzLl9zZXRPcmlnaW4oZSksdHlwZW9mIGkuZm9jdXM9PSJmdW5jdGlvbiImJmkuZm9jdXMobykpfW5nT25EZXN0cm95KCl7dGhpcy5fZWxlbWVudEluZm8uZm9yRWFjaCgodCxlKT0+dGhpcy5zdG9wTW9uaXRvcmluZyhlKSl9X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fdG9nZ2xlQ2xhc3ModCxlLG8pe28/dC5jbGFzc0xpc3QuYWRkKGUpOnQuY2xhc3NMaXN0LnJlbW92ZShlKX1fZ2V0Rm9jdXNPcmlnaW4odCl7cmV0dXJuIHRoaXMuX29yaWdpbj90aGlzLl9vcmlnaW5Gcm9tVG91Y2hJbnRlcmFjdGlvbj90aGlzLl9zaG91bGRCZUF0dHJpYnV0ZWRUb1RvdWNoKHQpPyJ0b3VjaCI6InByb2dyYW0iOnRoaXMuX29yaWdpbjp0aGlzLl93aW5kb3dGb2N1c2VkJiZ0aGlzLl9sYXN0Rm9jdXNPcmlnaW4/dGhpcy5fbGFzdEZvY3VzT3JpZ2luOiJwcm9ncmFtIn1fc2hvdWxkQmVBdHRyaWJ1dGVkVG9Ub3VjaCh0KXtyZXR1cm4gdGhpcy5fZGV0ZWN0aW9uTW9kZT09PTF8fCEhKHQhPW51bGwmJnQuY29udGFpbnModGhpcy5faW5wdXRNb2RhbGl0eURldGVjdG9yLl9tb3N0UmVjZW50VGFyZ2V0KSl9X3NldENsYXNzZXModCxlKXt0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstZm9jdXNlZCIsISFlKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstdG91Y2gtZm9jdXNlZCIsZT09PSJ0b3VjaCIpLHRoaXMuX3RvZ2dsZUNsYXNzKHQsImNkay1rZXlib2FyZC1mb2N1c2VkIixlPT09ImtleWJvYXJkIiksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLW1vdXNlLWZvY3VzZWQiLGU9PT0ibW91c2UiKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGstcHJvZ3JhbS1mb2N1c2VkIixlPT09InByb2dyYW0iKX1fc2V0T3JpZ2luKHQsZT0hMSl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57aWYodGhpcy5fb3JpZ2luPXQsdGhpcy5fb3JpZ2luRnJvbVRvdWNoSW50ZXJhY3Rpb249dD09PSJ0b3VjaCImJmUsdGhpcy5fZGV0ZWN0aW9uTW9kZT09PTApe2NsZWFyVGltZW91dCh0aGlzLl9vcmlnaW5UaW1lb3V0SWQpO2xldCBvPXRoaXMuX29yaWdpbkZyb21Ub3VjaEludGVyYWN0aW9uP2JhdDoxO3RoaXMuX29yaWdpblRpbWVvdXRJZD1zZXRUaW1lb3V0KCgpPT50aGlzLl9vcmlnaW49bnVsbCxvKX19KX1fb25Gb2N1cyh0LGUpe2xldCBvPXRoaXMuX2VsZW1lbnRJbmZvLmdldChlKSxpPVJNKHQpOyFvfHwhby5jaGVja0NoaWxkcmVuJiZlIT09aXx8dGhpcy5fb3JpZ2luQ2hhbmdlZChlLHRoaXMuX2dldEZvY3VzT3JpZ2luKGkpLG8pfV9vbkJsdXIodCxlKXtsZXQgbz10aGlzLl9lbGVtZW50SW5mby5nZXQoZSk7IW98fG8uY2hlY2tDaGlsZHJlbiYmdC5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgTm9kZSYmZS5jb250YWlucyh0LnJlbGF0ZWRUYXJnZXQpfHwodGhpcy5fc2V0Q2xhc3NlcyhlKSx0aGlzLl9lbWl0T3JpZ2luKG8uc3ViamVjdCxudWxsKSl9X2VtaXRPcmlnaW4odCxlKXt0aGlzLl9uZ1pvbmUucnVuKCgpPT50Lm5leHQoZSkpfV9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyh0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybjtsZXQgZT10LnJvb3ROb2RlLG89dGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuZ2V0KGUpfHwwO298fHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2UuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsaUkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcixpSSl9KSx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5zZXQoZSxvKzEpLCsrdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50PT09MSYmKHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX2dldFdpbmRvdygpLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl93aW5kb3dGb2N1c0xpc3RlbmVyKX0pLHRoaXMuX2lucHV0TW9kYWxpdHlEZXRlY3Rvci5tb2RhbGl0eURldGVjdGVkLnBpcGUoUGUodGhpcy5fc3RvcElucHV0TW9kYWxpdHlEZXRlY3RvcikpLnN1YnNjcmliZShpPT57dGhpcy5fc2V0T3JpZ2luKGksITApfSkpfV9yZW1vdmVHbG9iYWxMaXN0ZW5lcnModCl7bGV0IGU9dC5yb290Tm9kZTtpZih0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5oYXMoZSkpe2xldCBvPXRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmdldChlKTtvPjE/dGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuc2V0KGUsby0xKTooZS5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcixpSSksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLGlJKSx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5kZWxldGUoZSkpfS0tdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50fHwodGhpcy5fZ2V0V2luZG93KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3dpbmRvd0ZvY3VzTGlzdGVuZXIpLHRoaXMuX3N0b3BJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubmV4dCgpLGNsZWFyVGltZW91dCh0aGlzLl93aW5kb3dGb2N1c1RpbWVvdXRJZCksY2xlYXJUaW1lb3V0KHRoaXMuX29yaWdpblRpbWVvdXRJZCkpfV9vcmlnaW5DaGFuZ2VkKHQsZSxvKXt0aGlzLl9zZXRDbGFzc2VzKHQsZSksdGhpcy5fZW1pdE9yaWdpbihvLnN1YmplY3QsZSksdGhpcy5fbGFzdEZvY3VzT3JpZ2luPWV9X2dldENsb3Nlc3RFbGVtZW50c0luZm8odCl7bGV0IGU9W107cmV0dXJuIHRoaXMuX2VsZW1lbnRJbmZvLmZvckVhY2goKG8saSk9PnsoaT09PXR8fG8uY2hlY2tDaGlsZHJlbiYmaS5jb250YWlucyh0KSkmJmUucHVzaChbaSxvXSl9KSxlfX07bG4uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bG4pKEkoQ3QpLEkoVnQpLEkoWWcpLEkoX3QsOCksSShwSSw4KSl9O2xuLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxuKEkoQ3QpLEkoVnQpLEkoWWcpLEkoX3QsOCksSShwSSw4KSl9LHRva2VuOmxuLHByb3ZpZGVkSW46InJvb3QifSk7bG4uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpDdH0se3R5cGU6VnR9LHt0eXBlOllnfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbcEldfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobG4sW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q3R9LHt0eXBlOlZ0fSx7dHlwZTpZZ30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3BJXX1dfV19LG51bGwpfSkoKTt2YXIgdGY9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNNb25pdG9yPWUsdGhpcy5jZGtGb2N1c0NoYW5nZT1uZXcgJH1uZ0FmdGVyVmlld0luaXQoKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbj10aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0LHQubm9kZVR5cGU9PT0xJiZ0Lmhhc0F0dHJpYnV0ZSgiY2RrTW9uaXRvclN1YnRyZWVGb2N1cyIpKS5zdWJzY3JpYmUoZT0+dGhpcy5jZGtGb2N1c0NoYW5nZS5lbWl0KGUpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uJiZ0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fTt0Zi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx0ZikodihMKSx2KGxuKSl9O3RmLlx1MDI3NWRpcj12dCh7dHlwZTp0ZixzZWxlY3RvcnM6W1siIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiJdLFsiIiwiY2RrTW9uaXRvclN1YnRyZWVGb2N1cyIsIiJdXSxvdXRwdXRzOntjZGtGb2N1c0NoYW5nZToiY2RrRm9jdXNDaGFuZ2UifX0pO3RmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6bG59XTt0Zi5wcm9wRGVjb3JhdG9ycz17Y2RrRm9jdXNDaGFuZ2U6W3t0eXBlOkJ9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHRmLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltjZGtNb25pdG9yRWxlbWVudEZvY3VzXSwgW2Nka01vbml0b3JTdWJ0cmVlRm9jdXNdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6bG59XX0se2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpCfV19KX0pKCk7dmFyIHVhdD0iY2RrLWhpZ2gtY29udHJhc3QtYmxhY2stb24td2hpdGUiLGhhdD0iY2RrLWhpZ2gtY29udHJhc3Qtd2hpdGUtb24tYmxhY2siLGJVPSJjZGstaGlnaC1jb250cmFzdC1hY3RpdmUiLEtsPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9kb2N1bWVudD1lfWdldEhpZ2hDb250cmFzdE1vZGUoKXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiAwO2xldCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPSJyZ2IoMSwyLDMpIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtsZXQgZT10aGlzLl9kb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93LG89ZSYmZS5nZXRDb21wdXRlZFN0eWxlP2UuZ2V0Q29tcHV0ZWRTdHlsZSh0KTpudWxsLGk9KG8mJm8uYmFja2dyb3VuZENvbG9yfHwiIikucmVwbGFjZSgvIC9nLCIiKTtzd2l0Y2godGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxpKXtjYXNlInJnYigwLDAsMCkiOnJldHVybiAyO2Nhc2UicmdiKDI1NSwyNTUsMjU1KSI6cmV0dXJuIDF9cmV0dXJuIDB9X2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCl7aWYoIXRoaXMuX2hhc0NoZWNrZWRIaWdoQ29udHJhc3RNb2RlJiZ0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2RvY3VtZW50LmJvZHkpe2xldCB0PXRoaXMuX2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0O3QucmVtb3ZlKGJVKSx0LnJlbW92ZSh1YXQpLHQucmVtb3ZlKGhhdCksdGhpcy5faGFzQ2hlY2tlZEhpZ2hDb250cmFzdE1vZGU9ITA7bGV0IGU9dGhpcy5nZXRIaWdoQ29udHJhc3RNb2RlKCk7ZT09PTE/KHQuYWRkKGJVKSx0LmFkZCh1YXQpKTplPT09MiYmKHQuYWRkKGJVKSx0LmFkZChoYXQpKX19fTtLbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxLbCkoSShWdCksSShfdCkpfTtLbC5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBLbChJKFZ0KSxJKF90KSl9LHRva2VuOktsLHByb3ZpZGVkSW46InJvb3QifSk7S2wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoS2wsW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTt2YXIgX2w9Y2xhc3N7Y29uc3RydWN0b3IodCl7dC5fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKX19O19sLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF9sKShJKEtsKSl9O19sLlx1MDI3NW1vZD1xKHt0eXBlOl9sfSk7X2wuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1t3YSxzYV1dfSk7X2wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpLbH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhfbCxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbd2Esc2FdLGRlY2xhcmF0aW9uczpbV2csR2csdGZdLGV4cG9ydHM6W1dnLEdnLHRmXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2x9XX0sbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoX2wse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltXZyxHZyx0Zl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bd2Esc2FdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1dnLEdnLHRmXX19KX0pKCk7dmFyIGRJPW5ldyB5dCgiY2RrLWRpci1kb2MiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OlBFdH0pO2Z1bmN0aW9uIFBFdCgpe3JldHVybiB6dyhfdCl9dmFyIE5lPWNsYXNze2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMudmFsdWU9Imx0ciIsdGhpcy5jaGFuZ2U9bmV3ICQsdCl7bGV0IGU9dC5ib2R5P3QuYm9keS5kaXI6bnVsbCxvPXQuZG9jdW1lbnRFbGVtZW50P3QuZG9jdW1lbnRFbGVtZW50LmRpcjpudWxsLGk9ZXx8bzt0aGlzLnZhbHVlPWk9PT0ibHRyInx8aT09PSJydGwiP2k6Imx0ciJ9fW5nT25EZXN0cm95KCl7dGhpcy5jaGFuZ2UuY29tcGxldGUoKX19O05lLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE5lKShJKGRJLDgpKX07TmUuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgTmUoSShkSSw4KSl9LHRva2VuOk5lLHByb3ZpZGVkSW46InJvb3QifSk7TmUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltkSV19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhOZSxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltkSV19XX1dfSxudWxsKX0pKCk7dmFyIE9wPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fZGlyPSJsdHIiLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5jaGFuZ2U9bmV3ICR9Z2V0IGRpcigpe3JldHVybiB0aGlzLl9kaXJ9c2V0IGRpcih0KXtsZXQgZT10aGlzLl9kaXIsbz10JiZ0LnRvTG93ZXJDYXNlKCk7dGhpcy5fcmF3RGlyPXQsdGhpcy5fZGlyPW89PT0ibHRyInx8bz09PSJydGwiP286Imx0ciIsZSE9PXRoaXMuX2RpciYmdGhpcy5faXNJbml0aWFsaXplZCYmdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLl9kaXIpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLmRpcn1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwfW5nT25EZXN0cm95KCl7dGhpcy5jaGFuZ2UuY29tcGxldGUoKX19O09wLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE9wKX07T3AuXHUwMjc1ZGlyPXZ0KHt0eXBlOk9wLHNlbGVjdG9yczpbWyIiLCJkaXIiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJnJlKCJkaXIiLGUuX3Jhd0Rpcil9LGlucHV0czp7ZGlyOiJkaXIifSxvdXRwdXRzOntjaGFuZ2U6ImRpckNoYW5nZSJ9LGV4cG9ydEFzOlsiZGlyIl0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpOZSx1c2VFeGlzdGluZzpPcH1dKV19KTtPcC5wcm9wRGVjb3JhdG9ycz17Y2hhbmdlOlt7dHlwZTpCLGFyZ3M6WyJkaXJDaGFuZ2UiXX1dLGRpcjpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoT3AsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Rpcl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6TmUsdXNlRXhpc3Rpbmc6T3B9XSxob3N0OnsiW2F0dHIuZGlyXSI6Il9yYXdEaXIifSxleHBvcnRBczoiZGlyIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0se2NoYW5nZTpbe3R5cGU6QixhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOmR9XX0pfSkoKTt2YXIgU2E9Y2xhc3N7fTtTYS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxTYSl9O1NhLlx1MDI3NW1vZD1xKHt0eXBlOlNhfSk7U2EuXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhTYSxbe3R5cGU6WixhcmdzOlt7ZXhwb3J0czpbT3BdLGRlY2xhcmF0aW9uczpbT3BdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFNhLHtkZWNsYXJhdGlvbnM6W09wXSxleHBvcnRzOltPcF19KX0pKCk7dmFyIHdVPW5ldyBZZigiMTIuMi4xMyIpO3ZhciB5RXQ9WyIqIixbWyJtYXQtb3B0aW9uIl0sWyJuZy1jb250YWluZXIiXV1dLHhFdD1bIioiLCJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiXTtmdW5jdGlvbiB2RXQobix0KXtpZihuJjEmJkQoMCwibWF0LXBzZXVkby1jaGVja2JveCIsNCksbiYyKXtsZXQgZT1TKCk7UCgic3RhdGUiLGUuc2VsZWN0ZWQ/ImNoZWNrZWQiOiJ1bmNoZWNrZWQiKSgiZGlzYWJsZWQiLGUuZGlzYWJsZWQpfX1mdW5jdGlvbiB3RXQobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDUpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLGxlKCIoIixlLmdyb3VwLmxhYmVsLCIpIil9fXZhciBTRXQ9WyIqIl0seTBlPW5ldyBZZigiMTIuMi4xMyIpO3ZhciBReT1jbGFzc3t9O1F5LlNUQU5EQVJEX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSkiO1F5LkRFQ0VMRVJBVElPTl9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpIjtReS5BQ0NFTEVSQVRJT05fQ1VSVkU9ImN1YmljLWJlemllcigwLjQsMC4wLDEsMSkiO1F5LlNIQVJQX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwwLjYsMSkiO3ZhciBxdj1jbGFzc3t9O3F2LkNPTVBMRVg9IjM3NW1zIjtxdi5FTlRFUklORz0iMjI1bXMiO3F2LkVYSVRJTkc9IjE5NW1zIjt2YXIgT2F0PW5ldyBZZigiMTIuMi4xMyIpO2Z1bmN0aW9uIFJFdCgpe3JldHVybiEwfXZhciBFVT1uZXcgeXQoIm1hdC1zYW5pdHktY2hlY2tzIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpSRXR9KSxEdD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5faGFzRG9uZUdsb2JhbENoZWNrcz0hMSx0aGlzLl9kb2N1bWVudD1vLHQuX2FwcGx5Qm9keUhpZ2hDb250cmFzdE1vZGVDc3NDbGFzc2VzKCksdGhpcy5fc2FuaXR5Q2hlY2tzPWUsdGhpcy5faGFzRG9uZUdsb2JhbENoZWNrc3x8KHRoaXMuX2NoZWNrRG9jdHlwZUlzRGVmaW5lZCgpLHRoaXMuX2NoZWNrVGhlbWVJc1ByZXNlbnQoKSx0aGlzLl9jaGVja0Nka1ZlcnNpb25NYXRjaCgpLHRoaXMuX2hhc0RvbmVHbG9iYWxDaGVja3M9ITApfV9jaGVja0lzRW5hYmxlZCh0KXtyZXR1cm4hd2IoKXx8SkUoKT8hMTp0eXBlb2YgdGhpcy5fc2FuaXR5Q2hlY2tzPT0iYm9vbGVhbiI/dGhpcy5fc2FuaXR5Q2hlY2tzOiEhdGhpcy5fc2FuaXR5Q2hlY2tzW3RdfV9jaGVja0RvY3R5cGVJc0RlZmluZWQoKXt0aGlzLl9jaGVja0lzRW5hYmxlZCgiZG9jdHlwZSIpJiYhdGhpcy5fZG9jdW1lbnQuZG9jdHlwZSYmY29uc29sZS53YXJuKCJDdXJyZW50IGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYSBkb2N0eXBlLiBUaGlzIG1heSBjYXVzZSBzb21lIEFuZ3VsYXIgTWF0ZXJpYWwgY29tcG9uZW50cyBub3QgdG8gYmVoYXZlIGFzIGV4cGVjdGVkLiIpfV9jaGVja1RoZW1lSXNQcmVzZW50KCl7aWYoIXRoaXMuX2NoZWNrSXNFbmFibGVkKCJ0aGVtZSIpfHwhdGhpcy5fZG9jdW1lbnQuYm9keXx8dHlwZW9mIGdldENvbXB1dGVkU3R5bGUhPSJmdW5jdGlvbiIpcmV0dXJuO2xldCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NMaXN0LmFkZCgibWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIiKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO2xldCBlPWdldENvbXB1dGVkU3R5bGUodCk7ZSYmZS5kaXNwbGF5IT09Im5vbmUiJiZjb25zb2xlLndhcm4oIkNvdWxkIG5vdCBmaW5kIEFuZ3VsYXIgTWF0ZXJpYWwgY29yZSB0aGVtZS4gTW9zdCBNYXRlcmlhbCBjb21wb25lbnRzIG1heSBub3Qgd29yayBhcyBleHBlY3RlZC4gRm9yIG1vcmUgaW5mbyByZWZlciB0byB0aGUgdGhlbWluZyBndWlkZTogaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2d1aWRlL3RoZW1pbmciKSx0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpfV9jaGVja0Nka1ZlcnNpb25NYXRjaCgpe3RoaXMuX2NoZWNrSXNFbmFibGVkKCJ2ZXJzaW9uIikmJk9hdC5mdWxsIT09d1UuZnVsbCYmY29uc29sZS53YXJuKCJUaGUgQW5ndWxhciBNYXRlcmlhbCB2ZXJzaW9uICgiK09hdC5mdWxsKyIpIGRvZXMgbm90IG1hdGNoIHRoZSBBbmd1bGFyIENESyB2ZXJzaW9uICgiK3dVLmZ1bGwrYCkuClBsZWFzZSBlbnN1cmUgdGhlIHZlcnNpb25zIG9mIHRoZXNlIHR3byBwYWNrYWdlcyBleGFjdGx5IG1hdGNoLmApfX07RHQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RHQpKEkoS2wpLEkoRVUsOCksSShfdCkpfTtEdC5cdTAyNzVtb2Q9cSh7dHlwZTpEdH0pO0R0Llx1MDI3NWluaj1XKHtpbXBvcnRzOltbU2FdLFNhXX0pO0R0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6S2x9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W0VVXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhEdCxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbU2FdLGV4cG9ydHM6W1NhXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S2x9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W0VVXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dfSxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChEdCx7aW1wb3J0czpmdW5jdGlvbigpe3JldHVybltTYV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bU2FdfX0pfSkoKTtmdW5jdGlvbiBWcihuKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX2Rpc2FibGVkPSExfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9WmUodCl9fX1mdW5jdGlvbiBGcyhuLHQpe3JldHVybiBjbGFzcyBleHRlbmRzIG57Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksdGhpcy5kZWZhdWx0Q29sb3I9dCx0aGlzLmNvbG9yPXR9Z2V0IGNvbG9yKCl7cmV0dXJuIHRoaXMuX2NvbG9yfXNldCBjb2xvcihlKXtsZXQgbz1lfHx0aGlzLmRlZmF1bHRDb2xvcjtvIT09dGhpcy5fY29sb3ImJih0aGlzLl9jb2xvciYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoYG1hdC0ke3RoaXMuX2NvbG9yfWApLG8mJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGBtYXQtJHtvfWApLHRoaXMuX2NvbG9yPW8pfX19ZnVuY3Rpb24gdGwobil7cmV0dXJuIGNsYXNzIGV4dGVuZHMgbntjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT1aZSh0KX19fWZ1bmN0aW9uIERfKG4sdD0wKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLHRoaXMuX3RhYkluZGV4PXQsdGhpcy5kZWZhdWx0VGFiSW5kZXg9dH1nZXQgdGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD8tMTp0aGlzLl90YWJJbmRleH1zZXQgdGFiSW5kZXgoZSl7dGhpcy5fdGFiSW5kZXg9ZSE9bnVsbD9SaShlKTp0aGlzLmRlZmF1bHRUYWJJbmRleH19fWZ1bmN0aW9uIFQzKG4pe3JldHVybiBjbGFzcyBleHRlbmRzIG57Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5zdGF0ZUNoYW5nZXM9bmV3IEp0LHRoaXMuZXJyb3JTdGF0ZT0hMX11cGRhdGVFcnJvclN0YXRlKCl7bGV0IHQ9dGhpcy5lcnJvclN0YXRlLGU9dGhpcy5fcGFyZW50Rm9ybUdyb3VwfHx0aGlzLl9wYXJlbnRGb3JtLG89dGhpcy5lcnJvclN0YXRlTWF0Y2hlcnx8dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLGk9dGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wuY29udHJvbDpudWxsLGE9by5pc0Vycm9yU3RhdGUoaSxlKTthIT09dCYmKHRoaXMuZXJyb3JTdGF0ZT1hLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9fX1mdW5jdGlvbiB1SShuKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBue2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzPVtdLHRoaXMuaW5pdGlhbGl6ZWQ9bmV3IERuKGU9Pnt0aGlzLl9pc0luaXRpYWxpemVkP3RoaXMuX25vdGlmeVN1YnNjcmliZXIoZSk6dGhpcy5fcGVuZGluZ1N1YnNjcmliZXJzLnB1c2goZSl9KX1fbWFya0luaXRpYWxpemVkKCl7aWYodGhpcy5faXNJbml0aWFsaXplZCYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJUaGlzIGRpcmVjdGl2ZSBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCBhcyBpbml0aWFsaXplZCBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdHdpY2UuIik7dGhpcy5faXNJbml0aWFsaXplZD0hMCx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnMuZm9yRWFjaCh0aGlzLl9ub3RpZnlTdWJzY3JpYmVyKSx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnM9bnVsbH1fbm90aWZ5U3Vic2NyaWJlcih0KXt0Lm5leHQoKSx0LmNvbXBsZXRlKCl9fX12YXIga1U9bmV3IHl0KCJNQVRfREFURV9MT0NBTEUiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OkVFdH0pO2Z1bmN0aW9uIEVFdCgpe3JldHVybiB6dyhjcil9dmFyIG9rPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fbG9jYWxlQ2hhbmdlcz1uZXcgSnQsdGhpcy5sb2NhbGVDaGFuZ2VzPXRoaXMuX2xvY2FsZUNoYW5nZXN9Z2V0VmFsaWREYXRlT3JOdWxsKHQpe3JldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHQpJiZ0aGlzLmlzVmFsaWQodCk/dDpudWxsfWRlc2VyaWFsaXplKHQpe3JldHVybiB0PT1udWxsfHx0aGlzLmlzRGF0ZUluc3RhbmNlKHQpJiZ0aGlzLmlzVmFsaWQodCk/dDp0aGlzLmludmFsaWQoKX1zZXRMb2NhbGUodCl7dGhpcy5sb2NhbGU9dCx0aGlzLl9sb2NhbGVDaGFuZ2VzLm5leHQoKX1jb21wYXJlRGF0ZSh0LGUpe3JldHVybiB0aGlzLmdldFllYXIodCktdGhpcy5nZXRZZWFyKGUpfHx0aGlzLmdldE1vbnRoKHQpLXRoaXMuZ2V0TW9udGgoZSl8fHRoaXMuZ2V0RGF0ZSh0KS10aGlzLmdldERhdGUoZSl9c2FtZURhdGUodCxlKXtpZih0JiZlKXtsZXQgbz10aGlzLmlzVmFsaWQodCksaT10aGlzLmlzVmFsaWQoZSk7cmV0dXJuIG8mJmk/IXRoaXMuY29tcGFyZURhdGUodCxlKTpvPT1pfXJldHVybiB0PT1lfWNsYW1wRGF0ZSh0LGUsbyl7cmV0dXJuIGUmJnRoaXMuY29tcGFyZURhdGUodCxlKTwwP2U6byYmdGhpcy5jb21wYXJlRGF0ZSh0LG8pPjA/bzp0fX07dmFyIHZhdD1uZXcgeXQoIm1hdC1kYXRlLWZvcm1hdHMiKTt2YXIgV3Y7dHJ5e1d2PXR5cGVvZiBJbnRsIT0idW5kZWZpbmVkIn1jYXRjaChuKXtXdj0hMX12YXIga0V0PXtsb25nOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLG5hcnJvdzpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdfSxORXQ9bj0+U3RyaW5nKG4rMSksVEV0PWdJKDMxLE5FdCksQUV0PXtsb25nOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxzaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG5hcnJvdzpbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXX0sREV0PS9eXGR7NH0tXGR7Mn0tXGR7Mn0oPzpUXGR7Mn06XGR7Mn06XGR7Mn0oPzpcLlxkKyk/KD86WnwoPzooPzpcK3wtKVxkezJ9OlxkezJ9KSk/KT8kLztmdW5jdGlvbiBnSShuLHQpe2xldCBlPUFycmF5KG4pO2ZvcihsZXQgbz0wO288bjtvKyspZVtvXT10KG8pO3JldHVybiBlfXZhciBOTT1jbGFzcyBleHRlbmRzIG9re2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnVzZVV0Y0ZvckRpc3BsYXk9ITAsc3VwZXIuc2V0TG9jYWxlKHQpLHRoaXMudXNlVXRjRm9yRGlzcGxheT0hZS5UUklERU5ULHRoaXMuX2NsYW1wRGF0ZT1lLlRSSURFTlR8fGUuRURHRX1nZXRZZWFyKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9Z2V0TW9udGgodCl7cmV0dXJuIHQuZ2V0TW9udGgoKX1nZXREYXRlKHQpe3JldHVybiB0LmdldERhdGUoKX1nZXREYXlPZldlZWsodCl7cmV0dXJuIHQuZ2V0RGF5KCl9Z2V0TW9udGhOYW1lcyh0KXtpZihXdil7bGV0IGU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUse21vbnRoOnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gZ0koMTIsbz0+dGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsbmV3IERhdGUoMjAxNyxvLDEpKSkpfXJldHVybiBrRXRbdF19Z2V0RGF0ZU5hbWVzKCl7aWYoV3Ype2xldCB0PW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHtkYXk6Im51bWVyaWMiLHRpbWVab25lOiJ1dGMifSk7cmV0dXJuIGdJKDMxLGU9PnRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdCh0LG5ldyBEYXRlKDIwMTcsMCxlKzEpKSkpfXJldHVybiBURXR9Z2V0RGF5T2ZXZWVrTmFtZXModCl7aWYoV3Ype2xldCBlPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHt3ZWVrZGF5OnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gZ0koNyxvPT50aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQoZSxuZXcgRGF0ZSgyMDE3LDAsbysxKSkpKX1yZXR1cm4gQUV0W3RdfWdldFllYXJOYW1lKHQpe2lmKFd2KXtsZXQgZT1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSx7eWVhcjoibnVtZXJpYyIsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KGUsdCkpfXJldHVybiBTdHJpbmcodGhpcy5nZXRZZWFyKHQpKX1nZXRGaXJzdERheU9mV2Vlaygpe3JldHVybiAwfWdldE51bURheXNJbk1vbnRoKHQpe3JldHVybiB0aGlzLmdldERhdGUodGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSsxLDApKX1jbG9uZSh0KXtyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpfWNyZWF0ZURhdGUodCxlLG8pe2lmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpe2lmKGU8MHx8ZT4xMSl0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCAiJHtlfSIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDExLmApO2lmKG88MSl0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlICIke299Ii4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCl9bGV0IGk9dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LGUsbyk7aWYoaS5nZXRNb250aCgpIT1lJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSAiJHtvfSIgZm9yIG1vbnRoIHdpdGggaW5kZXggIiR7ZX0iLmApO3JldHVybiBpfXRvZGF5KCl7cmV0dXJuIG5ldyBEYXRlfXBhcnNlKHQpe3JldHVybiB0eXBlb2YgdD09Im51bWJlciI/bmV3IERhdGUodCk6dD9uZXcgRGF0ZShEYXRlLnBhcnNlKHQpKTpudWxsfWZvcm1hdCh0LGUpe2lmKCF0aGlzLmlzVmFsaWQodCkpdGhyb3cgRXJyb3IoIk5hdGl2ZURhdGVBZGFwdGVyOiBDYW5ub3QgZm9ybWF0IGludmFsaWQgZGF0ZS4iKTtpZihXdil7dGhpcy5fY2xhbXBEYXRlJiYodC5nZXRGdWxsWWVhcigpPDF8fHQuZ2V0RnVsbFllYXIoKT45OTk5KSYmKHQ9dGhpcy5jbG9uZSh0KSx0LnNldEZ1bGxZZWFyKE1hdGgubWF4KDEsTWF0aC5taW4oOTk5OSx0LmdldEZ1bGxZZWFyKCkpKSkpLGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHt0aW1lWm9uZToidXRjIn0pO2xldCBvPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLGUpO3JldHVybiB0aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQobyx0KSl9cmV0dXJuIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHQudG9EYXRlU3RyaW5nKCkpfWFkZENhbGVuZGFyWWVhcnModCxlKXtyZXR1cm4gdGhpcy5hZGRDYWxlbmRhck1vbnRocyh0LGUqMTIpfWFkZENhbGVuZGFyTW9udGhzKHQsZSl7bGV0IG89dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KStlLHRoaXMuZ2V0RGF0ZSh0KSk7cmV0dXJuIHRoaXMuZ2V0TW9udGgobykhPSgodGhpcy5nZXRNb250aCh0KStlKSUxMisxMiklMTImJihvPXRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKG8pLHRoaXMuZ2V0TW9udGgobyksMCkpLG99YWRkQ2FsZW5kYXJEYXlzKHQsZSl7cmV0dXJuIHRoaXMuX2NyZWF0ZURhdGVXaXRoT3ZlcmZsb3codGhpcy5nZXRZZWFyKHQpLHRoaXMuZ2V0TW9udGgodCksdGhpcy5nZXREYXRlKHQpK2UpfXRvSXNvODYwMSh0KXtyZXR1cm5bdC5nZXRVVENGdWxsWWVhcigpLHRoaXMuXzJkaWdpdCh0LmdldFVUQ01vbnRoKCkrMSksdGhpcy5fMmRpZ2l0KHQuZ2V0VVRDRGF0ZSgpKV0uam9pbigiLSIpfWRlc2VyaWFsaXplKHQpe2lmKHR5cGVvZiB0PT0ic3RyaW5nIil7aWYoIXQpcmV0dXJuIG51bGw7aWYoREV0LnRlc3QodCkpe2xldCBlPW5ldyBEYXRlKHQpO2lmKHRoaXMuaXNWYWxpZChlKSlyZXR1cm4gZX19cmV0dXJuIHN1cGVyLmRlc2VyaWFsaXplKHQpfWlzRGF0ZUluc3RhbmNlKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZX1pc1ZhbGlkKHQpe3JldHVybiFpc05hTih0LmdldFRpbWUoKSl9aW52YWxpZCgpe3JldHVybiBuZXcgRGF0ZShOYU4pfV9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHQsZSxvKXtsZXQgaT1uZXcgRGF0ZTtyZXR1cm4gaS5zZXRGdWxsWWVhcih0LGUsbyksaS5zZXRIb3VycygwLDAsMCwwKSxpfV8yZGlnaXQodCl7cmV0dXJuKCIwMCIrdCkuc2xpY2UoLTIpfV9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXHUyMDBlXHUyMDBmXS9nLCIiKX1fZm9ybWF0KHQsZSl7bGV0IG89bmV3IERhdGU7cmV0dXJuIG8uc2V0VVRDRnVsbFllYXIoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSxlLmdldERhdGUoKSksby5zZXRVVENIb3VycyhlLmdldEhvdXJzKCksZS5nZXRNaW51dGVzKCksZS5nZXRTZWNvbmRzKCksZS5nZXRNaWxsaXNlY29uZHMoKSksdC5mb3JtYXQobyl9fTtOTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxOTSkoSShrVSw4KSxJKFZ0KSl9O05NLlx1MDI3NXByb3Y9UHQoe3Rva2VuOk5NLGZhY3Rvcnk6Tk0uXHUwMjc1ZmFjfSk7Tk0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltrVV19XX0se3R5cGU6VnR9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTk0sW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpba1VdfV19LHt0eXBlOlZ0fV19LG51bGwpfSkoKTt2YXIgSUV0PXtwYXJzZTp7ZGF0ZUlucHV0Om51bGx9LGRpc3BsYXk6e2RhdGVJbnB1dDp7eWVhcjoibnVtZXJpYyIsbW9udGg6Im51bWVyaWMiLGRheToibnVtZXJpYyJ9LG1vbnRoWWVhckxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQifSxkYXRlQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyIsZGF5OiJudW1lcmljIn0sbW9udGhZZWFyQTExeUxhYmVsOnt5ZWFyOiJudW1lcmljIixtb250aDoibG9uZyJ9fX07dmFyIFRfPWNsYXNze307VF8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8VF8pfTtUXy5cdTAyNzVtb2Q9cSh7dHlwZTpUX30pO1RfLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3twcm92aWRlOm9rLHVzZUNsYXNzOk5NfV0saW1wb3J0czpbW3dhXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVF8sW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W3dhXSxwcm92aWRlcnM6W3twcm92aWRlOm9rLHVzZUNsYXNzOk5NfV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoVF8se2ltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bd2FdfX0pfSkoKTt2YXIgd2F0PUlFdCxoUD1jbGFzc3t9O2hQLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGhQKX07aFAuXHUwMjc1bW9kPXEoe3R5cGU6aFB9KTtoUC5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlt7cHJvdmlkZTp2YXQsdXNlVmFsdWU6d2F0fV0saW1wb3J0czpbW1RfXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaFAsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1RfXSxwcm92aWRlcnM6W3twcm92aWRlOnZhdCx1c2VWYWx1ZTp3YXR9XX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChoUCx7aW1wb3J0czpbVF9dfSl9KSgpO3ZhciBYeT1jbGFzc3tpc0Vycm9yU3RhdGUodCxlKXtyZXR1cm4hISh0JiZ0LmludmFsaWQmJih0LmRpcnR5fHxlJiZlLnN1Ym1pdHRlZCkpfX07WHkuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WHkpfTtYeS5cdTAyNzVwcm92PVB0KHt0b2tlbjpYeSxmYWN0b3J5Olh5Llx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhYeSxbe3R5cGU6U3R9XSxudWxsLG51bGwpfSkoKTt2YXIgUmE9Y2xhc3N7aXNFcnJvclN0YXRlKHQsZSl7cmV0dXJuISEodCYmdC5pbnZhbGlkJiYodC50b3VjaGVkfHxlJiZlLnN1Ym1pdHRlZCkpfX07UmEuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UmEpfTtSYS5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBSYX0sdG9rZW46UmEscHJvdmlkZWRJbjoicm9vdCJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUmEsW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIFRNPWNsYXNze307VE0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8VE0pfTtUTS5cdTAyNzVkaXI9dnQoe3R5cGU6VE0sc2VsZWN0b3JzOltbIiIsIm1hdC1saW5lIiwiIl0sWyIiLCJtYXRMaW5lIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWxpbmUiXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhUTSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0LWxpbmVdLCBbbWF0TGluZV0iLGhvc3Q6e2NsYXNzOiJtYXQtbGluZSJ9fV19XSxudWxsLG51bGwpfSkoKTt2YXIgX1A9Y2xhc3N7fTtfUC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxfUCl9O19QLlx1MDI3NW1vZD1xKHt0eXBlOl9QfSk7X1AuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tEdF0sRHRdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9QLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltEdF0sZXhwb3J0czpbVE0sRHRdLGRlY2xhcmF0aW9uczpbVE1dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KF9QLHtkZWNsYXJhdGlvbnM6W1RNXSxpbXBvcnRzOltEdF0sZXhwb3J0czpbVE0sRHRdfSl9KSgpO3ZhciBSVT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLmVsZW1lbnQ9ZSx0aGlzLmNvbmZpZz1vLHRoaXMuc3RhdGU9M31mYWRlT3V0KCl7dGhpcy5fcmVuZGVyZXIuZmFkZU91dFJpcHBsZSh0aGlzKX19LFBhdD17ZW50ZXJEdXJhdGlvbjoyMjUsZXhpdER1cmF0aW9uOjE1MH0sekV0PTgwMCxTVT0kbSh7cGFzc2l2ZTohMH0pLHlhdD1bIm1vdXNlZG93biIsInRvdWNoc3RhcnQiXSx4YXQ9WyJtb3VzZXVwIiwibW91c2VsZWF2ZSIsInRvdWNoZW5kIiwidG91Y2hjYW5jZWwiXSxadj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLl90YXJnZXQ9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9pc1BvaW50ZXJEb3duPSExLHRoaXMuX2FjdGl2ZVJpcHBsZXM9bmV3IFNldCx0aGlzLl9wb2ludGVyVXBFdmVudHNSZWdpc3RlcmVkPSExLGkuaXNCcm93c2VyJiYodGhpcy5fY29udGFpbmVyRWxlbWVudD1DcChvKSl9ZmFkZUluUmlwcGxlKHQsZSxvPXt9KXtsZXQgaT10aGlzLl9jb250YWluZXJSZWN0PXRoaXMuX2NvbnRhaW5lclJlY3R8fHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sUGF0KSxvLmFuaW1hdGlvbik7by5jZW50ZXJlZCYmKHQ9aS5sZWZ0K2kud2lkdGgvMixlPWkudG9wK2kuaGVpZ2h0LzIpO2xldCByPW8ucmFkaXVzfHxGRXQodCxlLGkpLHM9dC1pLmxlZnQsbD1lLWkudG9wLGM9YS5lbnRlckR1cmF0aW9uLG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bS5jbGFzc0xpc3QuYWRkKCJtYXQtcmlwcGxlLWVsZW1lbnQiKSxtLnN0eWxlLmxlZnQ9YCR7cy1yfXB4YCxtLnN0eWxlLnRvcD1gJHtsLXJ9cHhgLG0uc3R5bGUuaGVpZ2h0PWAke3IqMn1weGAsbS5zdHlsZS53aWR0aD1gJHtyKjJ9cHhgLG8uY29sb3IhPW51bGwmJihtLnN0eWxlLmJhY2tncm91bmRDb2xvcj1vLmNvbG9yKSxtLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1gJHtjfW1zYCx0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKG0pLEhFdChtKSxtLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUoMSkiO2xldCBmPW5ldyBSVSh0aGlzLG0sbyk7cmV0dXJuIGYuc3RhdGU9MCx0aGlzLl9hY3RpdmVSaXBwbGVzLmFkZChmKSxvLnBlcnNpc3RlbnR8fCh0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPWYpLHRoaXMuX3J1blRpbWVvdXRPdXRzaWRlWm9uZSgoKT0+e2xldCBwPWY9PT10aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlO2Yuc3RhdGU9MSwhby5wZXJzaXN0ZW50JiYoIXB8fCF0aGlzLl9pc1BvaW50ZXJEb3duKSYmZi5mYWRlT3V0KCl9LGMpLGZ9ZmFkZU91dFJpcHBsZSh0KXtsZXQgZT10aGlzLl9hY3RpdmVSaXBwbGVzLmRlbGV0ZSh0KTtpZih0PT09dGhpcy5fbW9zdFJlY2VudFRyYW5zaWVudFJpcHBsZSYmKHRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGU9bnVsbCksdGhpcy5fYWN0aXZlUmlwcGxlcy5zaXplfHwodGhpcy5fY29udGFpbmVyUmVjdD1udWxsKSwhZSlyZXR1cm47bGV0IG89dC5lbGVtZW50LGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LFBhdCksdC5jb25maWcuYW5pbWF0aW9uKTtvLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1gJHtpLmV4aXREdXJhdGlvbn1tc2Asby5zdHlsZS5vcGFjaXR5PSIwIix0LnN0YXRlPTIsdGhpcy5fcnVuVGltZW91dE91dHNpZGVab25lKCgpPT57dC5zdGF0ZT0zLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX0saS5leGl0RHVyYXRpb24pfWZhZGVPdXRBbGwoKXt0aGlzLl9hY3RpdmVSaXBwbGVzLmZvckVhY2godD0+dC5mYWRlT3V0KCkpfWZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKHQ9Pnt0LmNvbmZpZy5wZXJzaXN0ZW50fHx0LmZhZGVPdXQoKX0pfXNldHVwVHJpZ2dlckV2ZW50cyh0KXtsZXQgZT1DcCh0KTshZXx8ZT09PXRoaXMuX3RyaWdnZXJFbGVtZW50fHwodGhpcy5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpLHRoaXMuX3RyaWdnZXJFbGVtZW50PWUsdGhpcy5fcmVnaXN0ZXJFdmVudHMoeWF0KSl9aGFuZGxlRXZlbnQodCl7dC50eXBlPT09Im1vdXNlZG93biI/dGhpcy5fb25Nb3VzZWRvd24odCk6dC50eXBlPT09InRvdWNoc3RhcnQiP3RoaXMuX29uVG91Y2hTdGFydCh0KTp0aGlzLl9vblBvaW50ZXJVcCgpLHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWR8fCh0aGlzLl9yZWdpc3RlckV2ZW50cyh4YXQpLHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQ9ITApfV9vbk1vdXNlZG93bih0KXtsZXQgZT1layh0KSxvPXRoaXMuX2xhc3RUb3VjaFN0YXJ0RXZlbnQmJkRhdGUubm93KCk8dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudCt6RXQ7IXRoaXMuX3RhcmdldC5yaXBwbGVEaXNhYmxlZCYmIWUmJiFvJiYodGhpcy5faXNQb2ludGVyRG93bj0hMCx0aGlzLmZhZGVJblJpcHBsZSh0LmNsaWVudFgsdC5jbGllbnRZLHRoaXMuX3RhcmdldC5yaXBwbGVDb25maWcpKX1fb25Ub3VjaFN0YXJ0KHQpe2lmKCF0aGlzLl90YXJnZXQucmlwcGxlRGlzYWJsZWQmJiFuayh0KSl7dGhpcy5fbGFzdFRvdWNoU3RhcnRFdmVudD1EYXRlLm5vdygpLHRoaXMuX2lzUG9pbnRlckRvd249ITA7bGV0IGU9dC5jaGFuZ2VkVG91Y2hlcztmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rKyl0aGlzLmZhZGVJblJpcHBsZShlW29dLmNsaWVudFgsZVtvXS5jbGllbnRZLHRoaXMuX3RhcmdldC5yaXBwbGVDb25maWcpfX1fb25Qb2ludGVyVXAoKXshdGhpcy5faXNQb2ludGVyRG93bnx8KHRoaXMuX2lzUG9pbnRlckRvd249ITEsdGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKHQ9PntsZXQgZT10LnN0YXRlPT09MXx8dC5jb25maWcudGVybWluYXRlT25Qb2ludGVyVXAmJnQuc3RhdGU9PT0wOyF0LmNvbmZpZy5wZXJzaXN0ZW50JiZlJiZ0LmZhZGVPdXQoKX0pKX1fcnVuVGltZW91dE91dHNpZGVab25lKHQsZT0wKXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PnNldFRpbWVvdXQodCxlKSl9X3JlZ2lzdGVyRXZlbnRzKHQpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3QuZm9yRWFjaChlPT57dGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihlLHRoaXMsU1UpfSl9KX1fcmVtb3ZlVHJpZ2dlckV2ZW50cygpe3RoaXMuX3RyaWdnZXJFbGVtZW50JiYoeWF0LmZvckVhY2godD0+e3RoaXMuX3RyaWdnZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIodCx0aGlzLFNVKX0pLHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQmJnhhdC5mb3JFYWNoKHQ9Pnt0aGlzLl90cmlnZ2VyRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHQsdGhpcyxTVSl9KSl9fTtmdW5jdGlvbiBIRXQobil7d2luZG93LmdldENvbXB1dGVkU3R5bGUobikuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpfWZ1bmN0aW9uIEZFdChuLHQsZSl7bGV0IG89TWF0aC5tYXgoTWF0aC5hYnMobi1lLmxlZnQpLE1hdGguYWJzKG4tZS5yaWdodCkpLGk9TWF0aC5tYXgoTWF0aC5hYnModC1lLnRvcCksTWF0aC5hYnModC1lLmJvdHRvbSkpO3JldHVybiBNYXRoLnNxcnQobypvK2kqaSl9dmFyIHlwPW5ldyB5dCgibWF0LXJpcHBsZS1nbG9iYWwtb3B0aW9ucyIpLG5pPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2FuaW1hdGlvbk1vZGU9YSx0aGlzLnJhZGl1cz0wLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5fZ2xvYmFsT3B0aW9ucz1pfHx7fSx0aGlzLl9yaXBwbGVSZW5kZXJlcj1uZXcgWnYodGhpcyxlLHQsbyl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0JiZ0aGlzLmZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCksdGhpcy5fZGlzYWJsZWQ9dCx0aGlzLl9zZXR1cFRyaWdnZXJFdmVudHNJZkVuYWJsZWQoKX1nZXQgdHJpZ2dlcigpe3JldHVybiB0aGlzLl90cmlnZ2VyfHx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9c2V0IHRyaWdnZXIodCl7dGhpcy5fdHJpZ2dlcj10LHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfW5nT25Jbml0KCl7dGhpcy5faXNJbml0aWFsaXplZD0hMCx0aGlzLl9zZXR1cFRyaWdnZXJFdmVudHNJZkVuYWJsZWQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JpcHBsZVJlbmRlcmVyLl9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl9ZmFkZU91dEFsbCgpe3RoaXMuX3JpcHBsZVJlbmRlcmVyLmZhZGVPdXRBbGwoKX1mYWRlT3V0QWxsTm9uUGVyc2lzdGVudCgpe3RoaXMuX3JpcHBsZVJlbmRlcmVyLmZhZGVPdXRBbGxOb25QZXJzaXN0ZW50KCl9Z2V0IHJpcHBsZUNvbmZpZygpe3JldHVybntjZW50ZXJlZDp0aGlzLmNlbnRlcmVkLHJhZGl1czp0aGlzLnJhZGl1cyxjb2xvcjp0aGlzLmNvbG9yLGFuaW1hdGlvbjpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9nbG9iYWxPcHRpb25zLmFuaW1hdGlvbiksdGhpcy5fYW5pbWF0aW9uTW9kZT09PSJOb29wQW5pbWF0aW9ucyI/e2VudGVyRHVyYXRpb246MCxleGl0RHVyYXRpb246MH06e30pLHRoaXMuYW5pbWF0aW9uKSx0ZXJtaW5hdGVPblBvaW50ZXJVcDp0aGlzLl9nbG9iYWxPcHRpb25zLnRlcm1pbmF0ZU9uUG9pbnRlclVwfX1nZXQgcmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8ISF0aGlzLl9nbG9iYWxPcHRpb25zLmRpc2FibGVkfV9zZXR1cFRyaWdnZXJFdmVudHNJZkVuYWJsZWQoKXshdGhpcy5kaXNhYmxlZCYmdGhpcy5faXNJbml0aWFsaXplZCYmdGhpcy5fcmlwcGxlUmVuZGVyZXIuc2V0dXBUcmlnZ2VyRXZlbnRzKHRoaXMudHJpZ2dlcil9bGF1bmNoKHQsZT0wLG8pe3JldHVybiB0eXBlb2YgdD09Im51bWJlciI/dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZUluUmlwcGxlKHQsZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yaXBwbGVDb25maWcpLG8pKTp0aGlzLl9yaXBwbGVSZW5kZXJlci5mYWRlSW5SaXBwbGUoMCwwLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnJpcHBsZUNvbmZpZyksdCkpfX07bmkuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bmkpKHYoTCksdihDdCksdihWdCksdih5cCw4KSx2KHNuLDgpKX07bmkuXHUwMjc1ZGlyPXZ0KHt0eXBlOm5pLHNlbGVjdG9yczpbWyIiLCJtYXQtcmlwcGxlIiwiIl0sWyIiLCJtYXRSaXBwbGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtcmlwcGxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJtYXQtcmlwcGxlLXVuYm91bmRlZCIsZS51bmJvdW5kZWQpfSxpbnB1dHM6e3JhZGl1czpbIm1hdFJpcHBsZVJhZGl1cyIsInJhZGl1cyJdLGRpc2FibGVkOlsibWF0UmlwcGxlRGlzYWJsZWQiLCJkaXNhYmxlZCJdLHRyaWdnZXI6WyJtYXRSaXBwbGVUcmlnZ2VyIiwidHJpZ2dlciJdLGNvbG9yOlsibWF0UmlwcGxlQ29sb3IiLCJjb2xvciJdLHVuYm91bmRlZDpbIm1hdFJpcHBsZVVuYm91bmRlZCIsInVuYm91bmRlZCJdLGNlbnRlcmVkOlsibWF0UmlwcGxlQ2VudGVyZWQiLCJjZW50ZXJlZCJdLGFuaW1hdGlvbjpbIm1hdFJpcHBsZUFuaW1hdGlvbiIsImFuaW1hdGlvbiJdfSxleHBvcnRBczpbIm1hdFJpcHBsZSJdfSk7bmkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpDdH0se3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3lwXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dO25pLnByb3BEZWNvcmF0b3JzPXtjb2xvcjpbe3R5cGU6ZCxhcmdzOlsibWF0UmlwcGxlQ29sb3IiXX1dLHVuYm91bmRlZDpbe3R5cGU6ZCxhcmdzOlsibWF0UmlwcGxlVW5ib3VuZGVkIl19XSxjZW50ZXJlZDpbe3R5cGU6ZCxhcmdzOlsibWF0UmlwcGxlQ2VudGVyZWQiXX1dLHJhZGl1czpbe3R5cGU6ZCxhcmdzOlsibWF0UmlwcGxlUmFkaXVzIl19XSxhbmltYXRpb246W3t0eXBlOmQsYXJnczpbIm1hdFJpcHBsZUFuaW1hdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOmQsYXJnczpbIm1hdFJpcHBsZURpc2FibGVkIl19XSx0cmlnZ2VyOlt7dHlwZTpkLGFyZ3M6WyJtYXRSaXBwbGVUcmlnZ2VyIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5pLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttYXQtcmlwcGxlXSwgW21hdFJpcHBsZV0iLGV4cG9ydEFzOiJtYXRSaXBwbGUiLGhvc3Q6e2NsYXNzOiJtYXQtcmlwcGxlIiwiW2NsYXNzLm1hdC1yaXBwbGUtdW5ib3VuZGVkXSI6InVuYm91bmRlZCJ9fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpDdH0se3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3lwXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7cmFkaXVzOlt7dHlwZTpkLGFyZ3M6WyJtYXRSaXBwbGVSYWRpdXMiXX1dLGRpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6ZCxhcmdzOlsibWF0UmlwcGxlVHJpZ2dlciJdfV0sY29sb3I6W3t0eXBlOmQsYXJnczpbIm1hdFJpcHBsZUNvbG9yIl19XSx1bmJvdW5kZWQ6W3t0eXBlOmQsYXJnczpbIm1hdFJpcHBsZVVuYm91bmRlZCJdfV0sY2VudGVyZWQ6W3t0eXBlOmQsYXJnczpbIm1hdFJpcHBsZUNlbnRlcmVkIl19XSxhbmltYXRpb246W3t0eXBlOmQsYXJnczpbIm1hdFJpcHBsZUFuaW1hdGlvbiJdfV19KX0pKCk7dmFyIGNpPWNsYXNze307Y2kuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Y2kpfTtjaS5cdTAyNzVtb2Q9cSh7dHlwZTpjaX0pO2NpLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbRHQsd2FdLER0XX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhjaSxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbRHQsd2FdLGV4cG9ydHM6W25pLER0XSxkZWNsYXJhdGlvbnM6W25pXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChjaSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW25pXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltEdCx3YV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bbmksRHRdfX0pfSkoKTt2YXIgUHA9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fYW5pbWF0aW9uTW9kZT10LHRoaXMuc3RhdGU9InVuY2hlY2tlZCIsdGhpcy5kaXNhYmxlZD0hMX19O1BwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFBwKSh2KHNuLDgpKX07UHAuXHUwMjc1Y21wPXooe3R5cGU6UHAsc2VsZWN0b3JzOltbIm1hdC1wc2V1ZG8tY2hlY2tib3giXV0saG9zdEF0dHJzOlsxLCJtYXQtcHNldWRvLWNoZWNrYm94Il0saG9zdFZhcnM6OCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJtYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUiLGUuc3RhdGU9PT0iaW5kZXRlcm1pbmF0ZSIpKCJtYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQiLGUuc3RhdGU9PT0iY2hlY2tlZCIpKCJtYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIixlLmRpc2FibGVkKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLGUuX2FuaW1hdGlvbk1vZGU9PT0iTm9vcEFuaW1hdGlvbnMiKX0saW5wdXRzOntzdGF0ZToic3RhdGUiLGRpc2FibGVkOiJkaXNhYmxlZCJ9LGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7fSxzdHlsZXM6W2AubWF0LXBzZXVkby1jaGVja2JveHt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2JvcmRlcjoycHggc29saWQ7Ym9yZGVyLXJhZGl1czoycHg7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKSxiYWNrZ3JvdW5kLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0ubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7cG9zaXRpb246YWJzb2x1dGU7b3BhY2l0eTowO2NvbnRlbnQ6IiI7Ym9yZGVyLWJvdHRvbToycHggc29saWQgY3VycmVudENvbG9yO3RyYW5zaXRpb246b3BhY2l0eSA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9Lm1hdC1wc2V1ZG8tY2hlY2tib3gubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtcHNldWRvLWNoZWNrYm94Lm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wc2V1ZG8tY2hlY2tib3h7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcnt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZTo6YWZ0ZXJ7dG9wOjVweDtsZWZ0OjFweDt3aWR0aDoxMHB4O29wYWNpdHk6MTtib3JkZXItcmFkaXVzOjJweH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkOjphZnRlcnt0b3A6Mi40cHg7bGVmdDoxcHg7d2lkdGg6OHB4O2hlaWdodDozcHg7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkIGN1cnJlbnRDb2xvcjt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7b3BhY2l0eToxO2JveC1zaXppbmc6Y29udGVudC1ib3h9CmBdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO1BwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XTtQcC5wcm9wRGVjb3JhdG9ycz17c3RhdGU6W3t0eXBlOmR9XSxkaXNhYmxlZDpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUHAsW3t0eXBlOkYsYXJnczpbe2VuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHNlbGVjdG9yOiJtYXQtcHNldWRvLWNoZWNrYm94Iix0ZW1wbGF0ZToiIixob3N0OntjbGFzczoibWF0LXBzZXVkby1jaGVja2JveCIsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdIjonc3RhdGUgPT09ICJpbmRldGVybWluYXRlIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRdIjonc3RhdGUgPT09ICJjaGVja2VkIicsIltjbGFzcy5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJ30sc3R5bGVzOltgLm1hdC1wc2V1ZG8tY2hlY2tib3h7d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtib3JkZXI6MnB4IHNvbGlkO2JvcmRlci1yYWRpdXM6MnB4O2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7ZmxleC1zaHJpbms6MDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksYmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9Lm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtjb250ZW50OiIiO2JvcmRlci1ib3R0b206MnB4IHNvbGlkIGN1cnJlbnRDb2xvcjt0cmFuc2l0aW9uOm9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZCwubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHNldWRvLWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveDo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGU6OmFmdGVye3RvcDo1cHg7bGVmdDoxcHg7d2lkdGg6MTBweDtvcGFjaXR5OjE7Ym9yZGVyLXJhZGl1czoycHh9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZDo6YWZ0ZXJ7dG9wOjIuNHB4O2xlZnQ6MXB4O3dpZHRoOjhweDtoZWlnaHQ6M3B4O2JvcmRlci1sZWZ0OjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MTtib3gtc2l6aW5nOmNvbnRlbnQtYm94fQpgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XX0se3N0YXRlOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XX0pfSkoKTt2YXIgQV89Y2xhc3N7fTtBXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxBXyl9O0FfLlx1MDI3NW1vZD1xKHt0eXBlOkFffSk7QV8uXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tEdF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEFfLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltEdF0sZXhwb3J0czpbUHBdLGRlY2xhcmF0aW9uczpbUHBdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEFfLHtkZWNsYXJhdGlvbnM6W1BwXSxpbXBvcnRzOltEdF0sZXhwb3J0czpbUHBdfSl9KSgpO3ZhciBJXz1uZXcgeXQoIk1BVF9PUFRJT05fUEFSRU5UX0NPTVBPTkVOVCIpO3ZhciBMRXQ9VnIoY2xhc3N7fSksQkV0PTAscWc9Y2xhc3MgZXh0ZW5kcyBMRXR7Y29uc3RydWN0b3IodCl7dmFyIGU7c3VwZXIoKSx0aGlzLl9sYWJlbElkPWBtYXQtb3B0Z3JvdXAtbGFiZWwtJHtCRXQrK31gLHRoaXMuX2luZXJ0PShlPXQ9PW51bGw/dm9pZCAwOnQuaW5lcnRHcm91cHMpIT09bnVsbCYmZSE9PXZvaWQgMD9lOiExfX07cWcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cWcpKHYoSV8sOCkpfTtxZy5cdTAyNzVkaXI9dnQoe3R5cGU6cWcsaW5wdXRzOntsYWJlbDoibGFiZWwifSxmZWF0dXJlczpbYWVdfSk7cWcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltJX119LHt0eXBlOkh9XX1dO3FnLnByb3BEZWNvcmF0b3JzPXtsYWJlbDpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocWcsW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbSV9dfSx7dHlwZTpIfV19XX0se2xhYmVsOlt7dHlwZTpkfV19KX0pKCk7dmFyIFhnPW5ldyB5dCgiTWF0T3B0Z3JvdXAiKSxvbT1jbGFzcyBleHRlbmRzIHFne307b20uXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihvbSkpKShlfHxvbSl9fSgpO29tLlx1MDI3NWNtcD16KHt0eXBlOm9tLHNlbGVjdG9yczpbWyJtYXQtb3B0Z3JvdXAiXV0saG9zdEF0dHJzOlsxLCJtYXQtb3B0Z3JvdXAiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmKHJlKCJyb2xlIixlLl9pbmVydD9udWxsOiJncm91cCIpKCJhcmlhLWRpc2FibGVkIixlLl9pbmVydD9udWxsOmUuZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtbGFiZWxsZWRieSIsZS5faW5lcnQ/bnVsbDplLl9sYWJlbElkKSxtZSgibWF0LW9wdGdyb3VwLWRpc2FibGVkIixlLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIn0sZXhwb3J0QXM6WyJtYXRPcHRncm91cCJdLGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6WGcsdXNlRXhpc3Rpbmc6b219XSksYWVdLG5nQ29udGVudFNlbGVjdG9yczp4RXQsZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWF0LW9wdGdyb3VwLWxhYmVsIiwzLCJpZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKHlFdCksdSgwLCJzcGFuIiwwKSxUKDEpLFluKDIpLGgoKSxZbigzLDEpKSx0JjImJihQKCJpZCIsZS5fbGFiZWxJZCkseCgxKSxsZSgiIixlLmxhYmVsLCIgIikpfSxzdHlsZXM6W2AubWF0LW9wdGdyb3VwLWxhYmVse3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwLWxhYmVsW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRncm91cC1sYWJlbHt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVsIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfQpgXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob20sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtb3B0Z3JvdXAiLGV4cG9ydEFzOiJtYXRPcHRncm91cCIsdGVtcGxhdGU6YDxzcGFuIGNsYXNzPSJtYXQtb3B0Z3JvdXAtbGFiZWwiIGFyaWEtaGlkZGVuPSJ0cnVlIiBbaWRdPSJfbGFiZWxJZCI+e3sgbGFiZWwgfX0gPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj4KPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtb3B0aW9uLCBuZy1jb250YWluZXIiPjwvbmctY29udGVudD4KYCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxpbnB1dHM6WyJkaXNhYmxlZCJdLGhvc3Q6e2NsYXNzOiJtYXQtb3B0Z3JvdXAiLCJbYXR0ci5yb2xlXSI6J19pbmVydCA/IG51bGwgOiAiZ3JvdXAiJywiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJfaW5lcnQgPyBudWxsIDogZGlzYWJsZWQudG9TdHJpbmcoKSIsIlthdHRyLmFyaWEtbGFiZWxsZWRieV0iOiJfaW5lcnQgPyBudWxsIDogX2xhYmVsSWQiLCJbY2xhc3MubWF0LW9wdGdyb3VwLWRpc2FibGVkXSI6ImRpc2FibGVkIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpYZyx1c2VFeGlzdGluZzpvbX1dLHN0eWxlczpbYC5tYXQtb3B0Z3JvdXAtbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAtbGFiZWxbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9CmBdfV19XSxudWxsLG51bGwpfSkoKTt2YXIgVkV0PTAsaWs9Y2xhc3N7Y29uc3RydWN0b3IodCxlPSExKXt0aGlzLnNvdXJjZT10LHRoaXMuaXNVc2VySW5wdXQ9ZX19LG9PPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3BhcmVudD1vLHRoaXMuZ3JvdXA9aSx0aGlzLl9zZWxlY3RlZD0hMSx0aGlzLl9hY3RpdmU9ITEsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fbW9zdFJlY2VudFZpZXdWYWx1ZT0iIix0aGlzLmlkPWBtYXQtb3B0aW9uLSR7VkV0Kyt9YCx0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlPW5ldyAkLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgSnR9Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Lm11bHRpcGxlfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5ncm91cCYmdGhpcy5ncm91cC5kaXNhYmxlZHx8dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPVplKHQpfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50LmRpc2FibGVSaXBwbGV9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9Z2V0IHZpZXdWYWx1ZSgpe3JldHVybih0aGlzLl9nZXRIb3N0RWxlbWVudCgpLnRleHRDb250ZW50fHwiIikudHJpbSgpfXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkfHwodGhpcy5fc2VsZWN0ZWQ9ITAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCkpfWRlc2VsZWN0KCl7dGhpcy5fc2VsZWN0ZWQmJih0aGlzLl9zZWxlY3RlZD0hMSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoKSl9Zm9jdXModCxlKXtsZXQgbz10aGlzLl9nZXRIb3N0RWxlbWVudCgpO3R5cGVvZiBvLmZvY3VzPT0iZnVuY3Rpb24iJiZvLmZvY3VzKGUpfXNldEFjdGl2ZVN0eWxlcygpe3RoaXMuX2FjdGl2ZXx8KHRoaXMuX2FjdGl2ZT0hMCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9c2V0SW5hY3RpdmVTdHlsZXMoKXt0aGlzLl9hY3RpdmUmJih0aGlzLl9hY3RpdmU9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldExhYmVsKCl7cmV0dXJuIHRoaXMudmlld1ZhbHVlfV9oYW5kbGVLZXlkb3duKHQpeyh0LmtleUNvZGU9PT0xM3x8dC5rZXlDb2RlPT09MzIpJiYhVmEodCkmJih0aGlzLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpLHQucHJldmVudERlZmF1bHQoKSl9X3NlbGVjdFZpYUludGVyYWN0aW9uKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX3NlbGVjdGVkPXRoaXMubXVsdGlwbGU/IXRoaXMuX3NlbGVjdGVkOiEwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCghMCkpfV9nZXRBcmlhU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5zZWxlY3RlZHx8KHRoaXMubXVsdGlwbGU/ITE6bnVsbCl9X2dldFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudH1uZ0FmdGVyVmlld0NoZWNrZWQoKXtpZih0aGlzLl9zZWxlY3RlZCl7bGV0IHQ9dGhpcy52aWV3VmFsdWU7dCE9PXRoaXMuX21vc3RSZWNlbnRWaWV3VmFsdWUmJih0aGlzLl9tb3N0UmVjZW50Vmlld1ZhbHVlPXQsdGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKSl9fW5nT25EZXN0cm95KCl7dGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9X2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCh0PSExKXt0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQobmV3IGlrKHRoaXMsdCkpfX07b08uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8b08pKHYoTCksdihUdCksdih2b2lkIDApLHYocWcpKX07b08uXHUwMjc1ZGlyPXZ0KHt0eXBlOm9PLGlucHV0czp7aWQ6ImlkIixkaXNhYmxlZDoiZGlzYWJsZWQiLHZhbHVlOiJ2YWx1ZSJ9LG91dHB1dHM6e29uU2VsZWN0aW9uQ2hhbmdlOiJvblNlbGVjdGlvbkNoYW5nZSJ9fSk7b08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6dm9pZCAwfSx7dHlwZTpxZ31dO29PLnByb3BEZWNvcmF0b3JzPXt2YWx1ZTpbe3R5cGU6ZH1dLGlkOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XSxvblNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6Qn1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob08sW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOnZvaWQgMH0se3R5cGU6cWd9XX0se2lkOlt7dHlwZTpkfV0sb25TZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkJ9XSxkaXNhYmxlZDpbe3R5cGU6ZH1dLHZhbHVlOlt7dHlwZTpkfV19KX0pKCk7dmFyIElpPWNsYXNzIGV4dGVuZHMgb097Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIodCxlLG8saSl9fTtJaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxJaSkodihMKSx2KFR0KSx2KElfLDgpLHYoWGcsOCkpfTtJaS5cdTAyNzVjbXA9eih7dHlwZTpJaSxzZWxlY3RvcnM6W1sibWF0LW9wdGlvbiJdXSxob3N0QXR0cnM6WyJyb2xlIiwib3B0aW9uIiwxLCJtYXQtb3B0aW9uIiwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjEyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3NlbGVjdFZpYUludGVyYWN0aW9uKCl9KSgia2V5ZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2hhbmRsZUtleWRvd24oaSl9KSx0JjImJih1bCgiaWQiLGUuaWQpLHJlKCJ0YWJpbmRleCIsZS5fZ2V0VGFiSW5kZXgoKSkoImFyaWEtc2VsZWN0ZWQiLGUuX2dldEFyaWFTZWxlY3RlZCgpKSgiYXJpYS1kaXNhYmxlZCIsZS5kaXNhYmxlZC50b1N0cmluZygpKSxtZSgibWF0LXNlbGVjdGVkIixlLnNlbGVjdGVkKSgibWF0LW9wdGlvbi1tdWx0aXBsZSIsZS5tdWx0aXBsZSkoIm1hdC1hY3RpdmUiLGUuYWN0aXZlKSgibWF0LW9wdGlvbi1kaXNhYmxlZCIsZS5kaXNhYmxlZCkpfSxleHBvcnRBczpbIm1hdE9wdGlvbiJdLGZlYXR1cmVzOlthZV0sbmdDb250ZW50U2VsZWN0b3JzOlNFdCxkZWNsczo1LHZhcnM6NCxjb25zdHM6W1siY2xhc3MiLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCIsNCwibmdJZiJdLFsxLCJtYXQtb3B0aW9uLXRleHQiXSxbImNsYXNzIiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsNCwibmdJZiJdLFsibWF0LXJpcHBsZSIsIiIsMSwibWF0LW9wdGlvbi1yaXBwbGUiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCJdLFsxLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCJdLFsxLCJjZGstdmlzdWFsbHktaGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoeW8oKSxrKDAsdkV0LDEsMiwibWF0LXBzZXVkby1jaGVja2JveCIsMCksdSgxLCJzcGFuIiwxKSxZbigyKSxoKCksaygzLHdFdCwyLDEsInNwYW4iLDIpLEQoNCwiZGl2IiwzKSksdCYyJiYoUCgibmdJZiIsZS5tdWx0aXBsZSkseCgzKSxQKCJuZ0lmIixlLmdyb3VwJiZlLmdyb3VwLl9pbmVydCkseCgxKSxQKCJtYXRSaXBwbGVUcmlnZ2VyIixlLl9nZXRIb3N0RWxlbWVudCgpKSgibWF0UmlwcGxlRGlzYWJsZWQiLGUuZGlzYWJsZWR8fGUuZGlzYWJsZVJpcHBsZSkpfSxkaXJlY3RpdmVzOltYdCxuaSxQcF0sc3R5bGVzOltgLm1hdC1vcHRpb257d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7bWF4LXdpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O2FsaWduLWl0ZW1zOmNlbnRlcjstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1vcHRpb25bZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGlvbnt0ZXh0LWFsaWduOnJpZ2h0fS5tYXQtb3B0aW9uIC5tYXQtaWNvbnttYXJnaW4tcmlnaHQ6MTZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1vcHRpb24gLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uIC5tYXQtaWNvbnttYXJnaW4tbGVmdDoxNnB4O21hcmdpbi1yaWdodDowfS5tYXQtb3B0aW9uW2FyaWEtZGlzYWJsZWQ9dHJ1ZV17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAgLm1hdC1vcHRpb246bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtwYWRkaW5nLWxlZnQ6MzJweH1bZGlyPXJ0bF0gLm1hdC1vcHRncm91cCAubWF0LW9wdGlvbjpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctcmlnaHQ6MzJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtb3B0aW9ue21hcmdpbjowIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtb3B0aW9uLm1hdC1hY3RpdmV7Ym9yZGVyOnNvbGlkIDFweCBjdXJyZW50Q29sb3I7bWFyZ2luOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvblthcmlhLWRpc2FibGVkPXRydWVde29wYWNpdHk6LjV9Lm1hdC1vcHRpb24tdGV4dHtkaXNwbGF5OmlubGluZS1ibG9jaztmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LW9wdGlvbiAubWF0LW9wdGlvbi1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LW9wdGlvbi1wc2V1ZG8tY2hlY2tib3h7bWFyZ2luLXJpZ2h0OjhweH1bZGlyPXJ0bF0gLm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH0KYF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7SWkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbSV9dfV19LHt0eXBlOm9tLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbWGddfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSWksW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtb3B0aW9uIixleHBvcnRBczoibWF0T3B0aW9uIixob3N0Ontyb2xlOiJvcHRpb24iLCJbYXR0ci50YWJpbmRleF0iOiJfZ2V0VGFiSW5kZXgoKSIsIltjbGFzcy5tYXQtc2VsZWN0ZWRdIjoic2VsZWN0ZWQiLCJbY2xhc3MubWF0LW9wdGlvbi1tdWx0aXBsZV0iOiJtdWx0aXBsZSIsIltjbGFzcy5tYXQtYWN0aXZlXSI6ImFjdGl2ZSIsIltpZF0iOiJpZCIsIlthdHRyLmFyaWEtc2VsZWN0ZWRdIjoiX2dldEFyaWFTZWxlY3RlZCgpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2NsYXNzLm1hdC1vcHRpb24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCIoY2xpY2spIjoiX3NlbGVjdFZpYUludGVyYWN0aW9uKCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIixjbGFzczoibWF0LW9wdGlvbiBtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6YDxtYXQtcHNldWRvLWNoZWNrYm94ICpuZ0lmPSJtdWx0aXBsZSIgY2xhc3M9Im1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94IgogICAgW3N0YXRlXT0ic2VsZWN0ZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJyIgW2Rpc2FibGVkXT0iZGlzYWJsZWQiPjwvbWF0LXBzZXVkby1jaGVja2JveD4KCjxzcGFuIGNsYXNzPSJtYXQtb3B0aW9uLXRleHQiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+Cgo8IS0tIFNlZSBhMTF5IG5vdGVzIGluc2lkZSBvcHRncm91cC50cyBmb3IgY29udGV4dCBiZWhpbmQgdGhpcyBlbGVtZW50LiAtLT4KPHNwYW4gY2xhc3M9ImNkay12aXN1YWxseS1oaWRkZW4iICpuZ0lmPSJncm91cCAmJiBncm91cC5faW5lcnQiPih7eyBncm91cC5sYWJlbCB9fSk8L3NwYW4+Cgo8ZGl2IGNsYXNzPSJtYXQtb3B0aW9uLXJpcHBsZSIgbWF0LXJpcHBsZQogICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iX2dldEhvc3RFbGVtZW50KCkiCiAgICAgW21hdFJpcHBsZURpc2FibGVkXT0iZGlzYWJsZWQgfHwgZGlzYWJsZVJpcHBsZSI+CjwvZGl2PgpgLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHN0eWxlczpbYC5tYXQtb3B0aW9ue3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O21heC13aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveDthbGlnbi1pdGVtczpjZW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtb3B0aW9uW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1vcHRpb257dGV4dC1hbGlnbjpyaWdodH0ubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0aW9uIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW9wdGlvbiAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW9wdGlvblthcmlhLWRpc2FibGVkPXRydWVdey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjMycHh9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAgLm1hdC1vcHRpb246bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjMycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbnttYXJnaW46MCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW9wdGlvbi5tYXQtYWN0aXZle2JvcmRlcjpzb2xpZCAxcHggY3VycmVudENvbG9yO21hcmdpbjowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXtvcGFjaXR5Oi41fS5tYXQtb3B0aW9uLXRleHR7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1vcHRpb24gLm1hdC1vcHRpb24tcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbSV9dfV19LHt0eXBlOm9tLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbWGddfV19XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIGFrKG4sdCxlKXtpZihlLmxlbmd0aCl7bGV0IG89dC50b0FycmF5KCksaT1lLnRvQXJyYXkoKSxhPTA7Zm9yKGxldCByPTA7cjxuKzE7cisrKW9bcl0uZ3JvdXAmJm9bcl0uZ3JvdXA9PT1pW2FdJiZhKys7cmV0dXJuIGF9cmV0dXJuIDB9ZnVuY3Rpb24gaEkobix0LGUsbyl7cmV0dXJuIG48ZT9uOm4rdD5lK28/TWF0aC5tYXgoMCxuLW8rdCk6ZX12YXIgU3I9Y2xhc3N7fTtTci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxTcil9O1NyLlx1MDI3NW1vZD1xKHt0eXBlOlNyfSk7U3IuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tjaSxZLER0LEFfXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU3IsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W2NpLFksRHQsQV9dLGV4cG9ydHM6W0lpLG9tXSxkZWNsYXJhdGlvbnM6W0lpLG9tXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChTcix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0lpLG9tXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltjaSxZLER0LEFfXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltJaSxvbV19fSl9KSgpO3ZhciBTYXQ9WyJtYXQtYnV0dG9uIiwiIl0sUmF0PVsiKiJdLEVhdD1gLm1hdC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfS5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4wNH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9fS5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXJhaXNlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXJhaXNlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXJhaXNlZC1idXR0b257dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3Ryb2tlZC1idXR0b257Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7cGFkZGluZzowIDE1cHg7bGluZS1oZWlnaHQ6MzRweH0ubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6LTFweDtsZWZ0Oi0xcHg7cmlnaHQ6LTFweDtib3R0b206LTFweH0ubWF0LWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo1NnB4O2hlaWdodDo1NnB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzoxNnB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LW1pbmktZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1taW5pLWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtbWluaS1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1taW5pLWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6OHB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LWljb24tYnV0dG9ue3BhZGRpbmc6MDttaW4td2lkdGg6MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2ZsZXgtc2hyaW5rOjA7bGluZS1oZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJX0ubWF0LWljb24tYnV0dG9uIGksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bGluZS1oZWlnaHQ6MjRweH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czppbmhlcml0fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dHJhbnNpdGlvbjpub25lfS5tYXQtYnV0dG9uLXJpcHBsZS1yb3VuZHtib3JkZXItcmFkaXVzOjUwJTt6LWluZGV4OjF9Lm1hdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmxhdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtcmFpc2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6aW5oZXJpdDt3aWR0aDoyLjVlbTtoZWlnaHQ6Mi41ZW19LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmxhdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXJhaXNlZC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWljb24tYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mYWIsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1pbmktZmFie291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLXByb2dyYW0tZm9jdXNlZHtvdXRsaW5lOnNvbGlkIDNweH0KYCxqRXQ9ImFjY2VudCIsVUV0PVsibWF0LWJ1dHRvbiIsIm1hdC1mbGF0LWJ1dHRvbiIsIm1hdC1pY29uLWJ1dHRvbiIsIm1hdC1yYWlzZWQtYnV0dG9uIiwibWF0LXN0cm9rZWQtYnV0dG9uIiwibWF0LW1pbmktZmFiIiwibWF0LWZhYiJdLFlFdD1GcyhWcih0bChjbGFzc3tjb25zdHJ1Y3RvcihuKXt0aGlzLl9lbGVtZW50UmVmPW59fSkpKSxmbj1jbGFzcyBleHRlbmRzIFlFdHtjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIodCksdGhpcy5fZm9jdXNNb25pdG9yPWUsdGhpcy5fYW5pbWF0aW9uTW9kZT1vLHRoaXMuaXNSb3VuZEJ1dHRvbj10aGlzLl9oYXNIb3N0QXR0cmlidXRlcygibWF0LWZhYiIsIm1hdC1taW5pLWZhYiIpLHRoaXMuaXNJY29uQnV0dG9uPXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKCJtYXQtaWNvbi1idXR0b24iKTtmb3IobGV0IGkgb2YgVUV0KXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKGkpJiZ0aGlzLl9nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5hZGQoaSk7dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hdC1idXR0b24tYmFzZSIpLHRoaXMuaXNSb3VuZEJ1dHRvbiYmKHRoaXMuY29sb3I9akV0KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKX1mb2N1cyh0LGUpe3Q/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2dldEhvc3RFbGVtZW50KCksdCxlKTp0aGlzLl9nZXRIb3N0RWxlbWVudCgpLmZvY3VzKGUpfV9nZXRIb3N0RWxlbWVudCgpe3JldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9X2lzUmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLmRpc2FibGVkfV9oYXNIb3N0QXR0cmlidXRlcyguLi50KXtyZXR1cm4gdC5zb21lKGU9PnRoaXMuX2dldEhvc3RFbGVtZW50KCkuaGFzQXR0cmlidXRlKGUpKX19O2ZuLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGZuKSh2KEwpLHYobG4pLHYoc24sOCkpfTtmbi5cdTAyNzVjbXA9eih7dHlwZTpmbixzZWxlY3RvcnM6W1siYnV0dG9uIiwibWF0LWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LXJhaXNlZC1idXR0b24iLCIiXSxbImJ1dHRvbiIsIm1hdC1pY29uLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWZhYiIsIiJdLFsiYnV0dG9uIiwibWF0LW1pbmktZmFiIiwiIl0sWyJidXR0b24iLCJtYXQtc3Ryb2tlZC1idXR0b24iLCIiXSxbImJ1dHRvbiIsIm1hdC1mbGF0LWJ1dHRvbiIsIiJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJnBlKG5pLDUpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUucmlwcGxlPW8uZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJihyZSgiZGlzYWJsZWQiLGUuZGlzYWJsZWR8fG51bGwpLG1lKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsZS5fYW5pbWF0aW9uTW9kZT09PSJOb29wQW5pbWF0aW9ucyIpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixlLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IifSxleHBvcnRBczpbIm1hdEJ1dHRvbiJdLGZlYXR1cmVzOlthZV0sYXR0cnM6U2F0LG5nQ29udGVudFNlbGVjdG9yczpSYXQsZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwibWF0LWJ1dHRvbi13cmFwcGVyIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tcmlwcGxlIiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsxLCJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih5bygpLHUoMCwic3BhbiIsMCksWW4oMSksaCgpLEQoMiwic3BhbiIsMSksRCgzLCJzcGFuIiwyKSksdCYyJiYoeCgyKSxtZSgibWF0LWJ1dHRvbi1yaXBwbGUtcm91bmQiLGUuaXNSb3VuZEJ1dHRvbnx8ZS5pc0ljb25CdXR0b24pLFAoIm1hdFJpcHBsZURpc2FibGVkIixlLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVDZW50ZXJlZCIsZS5pc0ljb25CdXR0b24pKCJtYXRSaXBwbGVUcmlnZ2VyIixlLl9nZXRIb3N0RWxlbWVudCgpKSl9LGRpcmVjdGl2ZXM6W25pXSxzdHlsZXM6W0VhdF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Zm4uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpsbn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XTtmbi5wcm9wRGVjb3JhdG9ycz17cmlwcGxlOlt7dHlwZTpJdCxhcmdzOltuaV19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGZuLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjpgYnV0dG9uW21hdC1idXR0b25dLCBidXR0b25bbWF0LXJhaXNlZC1idXR0b25dLCBidXR0b25bbWF0LWljb24tYnV0dG9uXSwKICAgICAgICAgICAgIGJ1dHRvblttYXQtZmFiXSwgYnV0dG9uW21hdC1taW5pLWZhYl0sIGJ1dHRvblttYXQtc3Ryb2tlZC1idXR0b25dLAogICAgICAgICAgICAgYnV0dG9uW21hdC1mbGF0LWJ1dHRvbl1gLGV4cG9ydEFzOiJtYXRCdXR0b24iLGhvc3Q6eyJbYXR0ci5kaXNhYmxlZF0iOiJkaXNhYmxlZCB8fCBudWxsIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJywiW2NsYXNzLm1hdC1idXR0b24tZGlzYWJsZWRdIjoiZGlzYWJsZWQiLGNsYXNzOiJtYXQtZm9jdXMtaW5kaWNhdG9yIn0sdGVtcGxhdGU6YDxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLXdyYXBwZXIiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+CjxzcGFuIG1hdFJpcHBsZSBjbGFzcz0ibWF0LWJ1dHRvbi1yaXBwbGUiCiAgICAgIFtjbGFzcy5tYXQtYnV0dG9uLXJpcHBsZS1yb3VuZF09ImlzUm91bmRCdXR0b24gfHwgaXNJY29uQnV0dG9uIgogICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJfaXNSaXBwbGVEaXNhYmxlZCgpIgogICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJpc0ljb25CdXR0b24iCiAgICAgIFttYXRSaXBwbGVUcmlnZ2VyXT0iX2dldEhvc3RFbGVtZW50KCkiPjwvc3Bhbj4KPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSI+PC9zcGFuPgpgLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSIsImNvbG9yIl0sZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gsc3R5bGVzOltgLm1hdC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowfS5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4wNH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uOmhvdmVyOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9fS5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtaWNvbi1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1zdHJva2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWZsYXQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1mbGF0LWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1yYWlzZWQtYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXJhaXNlZC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXJhaXNlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtcmFpc2VkLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXJhaXNlZC1idXR0b257dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3Ryb2tlZC1idXR0b257Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7cGFkZGluZzowIDE1cHg7bGluZS1oZWlnaHQ6MzRweH0ubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0b3A6LTFweDtsZWZ0Oi0xcHg7cmlnaHQ6LTFweDtib3R0b206LTFweH0ubWF0LWZhYntib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9zaXRpb246cmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpwb2ludGVyO291dGxpbmU6bm9uZTtib3JkZXI6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowO21pbi13aWR0aDo2NHB4O2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyLXJhZGl1czo0cHg7b3ZlcmZsb3c6dmlzaWJsZTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTttaW4td2lkdGg6MDtib3JkZXItcmFkaXVzOjUwJTt3aWR0aDo1NnB4O2hlaWdodDo1NnB4O3BhZGRpbmc6MDtmbGV4LXNocmluazowfS5tYXQtZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1mYWIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mYWJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzoxNnB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LW1pbmktZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1taW5pLWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtbWluaS1mYWIuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5tYXQtbWluaS1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1taW5pLWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVye3BhZGRpbmc6OHB4IDA7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MjRweH0ubWF0LWljb24tYnV0dG9ue3BhZGRpbmc6MDttaW4td2lkdGg6MDt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2ZsZXgtc2hyaW5rOjA7bGluZS1oZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJX0ubWF0LWljb24tYnV0dG9uIGksLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bGluZS1oZWlnaHQ6MjRweH0ubWF0LWJ1dHRvbi1yaXBwbGUubWF0LXJpcHBsZSwubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czppbmhlcml0fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dHJhbnNpdGlvbjpub25lfS5tYXQtYnV0dG9uLXJpcHBsZS1yb3VuZHtib3JkZXItcmFkaXVzOjUwJTt6LWluZGV4OjF9Lm1hdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtZmxhdC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtcmFpc2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1pY29uLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qLC5tYXQtbWluaS1mYWIgLm1hdC1idXR0b24td3JhcHBlcj4qe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6aW5oZXJpdDt3aWR0aDoyLjVlbTtoZWlnaHQ6Mi41ZW19LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZmxhdC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXJhaXNlZC1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWljb24tYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mYWIsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1pbmktZmFie291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLWJhc2UuY2RrLXByb2dyYW0tZm9jdXNlZHtvdXRsaW5lOnNvbGlkIDNweH0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOmxufSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7cmlwcGxlOlt7dHlwZTpJdCxhcmdzOltuaV19XX0pfSkoKTt2YXIgZWw9Y2xhc3MgZXh0ZW5kcyBmbntjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIoZSx0LG8pfV9oYWx0RGlzYWJsZWRFdmVudHModCl7dGhpcy5kaXNhYmxlZCYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX19O2VsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGVsKSh2KGxuKSx2KEwpLHYoc24sOCkpfTtlbC5cdTAyNzVjbXA9eih7dHlwZTplbCxzZWxlY3RvcnM6W1siYSIsIm1hdC1idXR0b24iLCIiXSxbImEiLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1pY29uLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1mYWIiLCIiXSxbImEiLCJtYXQtbWluaS1mYWIiLCIiXSxbImEiLCJtYXQtc3Ryb2tlZC1idXR0b24iLCIiXSxbImEiLCJtYXQtZmxhdC1idXR0b24iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFsdERpc2FibGVkRXZlbnRzKGkpfSksdCYyJiYocmUoInRhYmluZGV4IixlLmRpc2FibGVkPy0xOmUudGFiSW5kZXh8fDApKCJkaXNhYmxlZCIsZS5kaXNhYmxlZHx8bnVsbCkoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQudG9TdHJpbmcoKSksbWUoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixlLl9hbmltYXRpb25Nb2RlPT09Ik5vb3BBbmltYXRpb25zIikoIm1hdC1idXR0b24tZGlzYWJsZWQiLGUuZGlzYWJsZWQpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGRpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4In0sZXhwb3J0QXM6WyJtYXRCdXR0b24iLCJtYXRBbmNob3IiXSxmZWF0dXJlczpbYWVdLGF0dHJzOlNhdCxuZ0NvbnRlbnRTZWxlY3RvcnM6UmF0LGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWzEsIm1hdC1idXR0b24td3JhcHBlciJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtYnV0dG9uLXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZVRyaWdnZXIiXSxbMSwibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoeW8oKSx1KDAsInNwYW4iLDApLFluKDEpLGgoKSxEKDIsInNwYW4iLDEpLEQoMywic3BhbiIsMikpLHQmMiYmKHgoMiksbWUoIm1hdC1idXR0b24tcmlwcGxlLXJvdW5kIixlLmlzUm91bmRCdXR0b258fGUuaXNJY29uQnV0dG9uKSxQKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5faXNSaXBwbGVEaXNhYmxlZCgpKSgibWF0UmlwcGxlQ2VudGVyZWQiLGUuaXNJY29uQnV0dG9uKSgibWF0UmlwcGxlVHJpZ2dlciIsZS5fZ2V0SG9zdEVsZW1lbnQoKSkpfSxkaXJlY3RpdmVzOltuaV0sc3R5bGVzOltFYXRdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2VsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bG59LHt0eXBlOkx9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3NuXX1dfV07ZWwucHJvcERlY29yYXRvcnM9e3RhYkluZGV4Olt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhlbCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6YGFbbWF0LWJ1dHRvbl0sIGFbbWF0LXJhaXNlZC1idXR0b25dLCBhW21hdC1pY29uLWJ1dHRvbl0sIGFbbWF0LWZhYl0sCiAgICAgICAgICAgICBhW21hdC1taW5pLWZhYl0sIGFbbWF0LXN0cm9rZWQtYnV0dG9uXSwgYVttYXQtZmxhdC1idXR0b25dYCxleHBvcnRBczoibWF0QnV0dG9uLCBtYXRBbmNob3IiLGhvc3Q6eyJbYXR0ci50YWJpbmRleF0iOiJkaXNhYmxlZCA/IC0xIDogKHRhYkluZGV4IHx8IDApIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQudG9TdHJpbmcoKSIsIihjbGljaykiOiJfaGFsdERpc2FibGVkRXZlbnRzKCRldmVudCkiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjonX2FuaW1hdGlvbk1vZGUgPT09ICJOb29wQW5pbWF0aW9ucyInLCJbY2xhc3MubWF0LWJ1dHRvbi1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsY2xhc3M6Im1hdC1mb2N1cy1pbmRpY2F0b3IifSxpbnB1dHM6WyJkaXNhYmxlZCIsImRpc2FibGVSaXBwbGUiLCJjb2xvciJdLHRlbXBsYXRlOmA8c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi13cmFwcGVyIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9zcGFuPgo8c3BhbiBtYXRSaXBwbGUgY2xhc3M9Im1hdC1idXR0b24tcmlwcGxlIgogICAgICBbY2xhc3MubWF0LWJ1dHRvbi1yaXBwbGUtcm91bmRdPSJpc1JvdW5kQnV0dG9uIHx8IGlzSWNvbkJ1dHRvbiIKICAgICAgW21hdFJpcHBsZURpc2FibGVkXT0iX2lzUmlwcGxlRGlzYWJsZWQoKSIKICAgICAgW21hdFJpcHBsZUNlbnRlcmVkXT0iaXNJY29uQnV0dG9uIgogICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09Il9nZXRIb3N0RWxlbWVudCgpIj48L3NwYW4+CjxzcGFuIGNsYXNzPSJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiPjwvc3Bhbj4KYCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxzdHlsZXM6W2AubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH19Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9uLC5tYXQtZmxhdC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGV9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSl9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcmFpc2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtcmFpc2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcmFpc2VkLWJ1dHRvbnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdHJva2VkLWJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtwYWRkaW5nOjAgMTVweDtsaW5lLWhlaWdodDozNHB4fS5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDotMXB4O2xlZnQ6LTFweDtyaWdodDotMXB4O2JvdHRvbTotMXB4fS5tYXQtZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjU2cHg7aGVpZ2h0OjU2cHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjE2cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtbWluaS1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LW1pbmktZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1taW5pLWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LW1pbmktZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzo4cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtaWNvbi1idXR0b257cGFkZGluZzowO21pbi13aWR0aDowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7ZmxleC1zaHJpbms6MDtsaW5lLWhlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6NTAlfS5tYXQtaWNvbi1idXR0b24gaSwubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntsaW5lLWhlaWdodDoyNHB4fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXR9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1idXR0b24tcmlwcGxlLXJvdW5ke2JvcmRlci1yYWRpdXM6NTAlO3otaW5kZXg6MX0ubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mbGF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1yYWlzZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPip7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZTppbmhlcml0O3dpZHRoOjIuNWVtO2hlaWdodDoyLjVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mbGF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmFpc2VkLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaWNvbi1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZhYiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWluaS1mYWJ7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGstcHJvZ3JhbS1mb2N1c2Vke291dGxpbmU6c29saWQgM3B4fQpgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6bG59LHt0eXBlOkx9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3NuXX1dfV19LHt0YWJJbmRleDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBNZT1jbGFzc3t9O01lLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE1lKX07TWUuXHUwMjc1bW9kPXEoe3R5cGU6TWV9KTtNZS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW2NpLER0XSxEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTWUsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W2NpLER0XSxleHBvcnRzOltmbixlbCxEdF0sZGVjbGFyYXRpb25zOltmbixlbF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoTWUse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltmbixlbF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bY2ksRHRdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2ZuLGVsLER0XX19KX0pKCk7dmFyIEEzPWNsYXNze307ZnVuY3Rpb24gRDMobil7cmV0dXJuIG4mJnR5cGVvZiBuLmNvbm5lY3Q9PSJmdW5jdGlvbiJ9dmFyIF9JPWNsYXNzIGV4dGVuZHMgQTN7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9kYXRhPXR9Y29ubmVjdCgpe3JldHVybiBudih0aGlzLl9kYXRhKT90aGlzLl9kYXRhOmRuKHRoaXMuX2RhdGEpfWRpc2Nvbm5lY3QoKXt9fTt2YXIgSnk9Y2xhc3N7YXBwbHlDaGFuZ2VzKHQsZSxvLGksYSl7dC5mb3JFYWNoT3BlcmF0aW9uKChyLHMsbCk9PntsZXQgYyxtO2lmKHIucHJldmlvdXNJbmRleD09bnVsbCl7bGV0IGY9byhyLHMsbCk7Yz1lLmNyZWF0ZUVtYmVkZGVkVmlldyhmLnRlbXBsYXRlUmVmLGYuY29udGV4dCxmLmluZGV4KSxtPTF9ZWxzZSBsPT1udWxsPyhlLnJlbW92ZShzKSxtPTMpOihjPWUuZ2V0KHMpLGUubW92ZShjLGwpLG09Mik7YSYmYSh7Y29udGV4dDpjPT1udWxsP3ZvaWQgMDpjLmNvbnRleHQsb3BlcmF0aW9uOm0scmVjb3JkOnJ9KX0pfWRldGFjaCgpe319O3ZhciB4cD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudmlld0NhY2hlU2l6ZT0yMCx0aGlzLl92aWV3Q2FjaGU9W119YXBwbHlDaGFuZ2VzKHQsZSxvLGksYSl7dC5mb3JFYWNoT3BlcmF0aW9uKChyLHMsbCk9PntsZXQgYyxtO2lmKHIucHJldmlvdXNJbmRleD09bnVsbCl7bGV0IGY9KCk9Pm8ocixzLGwpO2M9dGhpcy5faW5zZXJ0VmlldyhmLGwsZSxpKHIpKSxtPWM/MTowfWVsc2UgbD09bnVsbD8odGhpcy5fZGV0YWNoQW5kQ2FjaGVWaWV3KHMsZSksbT0zKTooYz10aGlzLl9tb3ZlVmlldyhzLGwsZSxpKHIpKSxtPTIpO2EmJmEoe2NvbnRleHQ6Yz09bnVsbD92b2lkIDA6Yy5jb250ZXh0LG9wZXJhdGlvbjptLHJlY29yZDpyfSl9KX1kZXRhY2goKXtmb3IobGV0IHQgb2YgdGhpcy5fdmlld0NhY2hlKXQuZGVzdHJveSgpO3RoaXMuX3ZpZXdDYWNoZT1bXX1faW5zZXJ0Vmlldyh0LGUsbyxpKXtsZXQgYT10aGlzLl9pbnNlcnRWaWV3RnJvbUNhY2hlKGUsbyk7aWYoYSl7YS5jb250ZXh0LiRpbXBsaWNpdD1pO3JldHVybn1sZXQgcj10KCk7cmV0dXJuIG8uY3JlYXRlRW1iZWRkZWRWaWV3KHIudGVtcGxhdGVSZWYsci5jb250ZXh0LHIuaW5kZXgpfV9kZXRhY2hBbmRDYWNoZVZpZXcodCxlKXtsZXQgbz1lLmRldGFjaCh0KTt0aGlzLl9tYXliZUNhY2hlVmlldyhvLGUpfV9tb3ZlVmlldyh0LGUsbyxpKXtsZXQgYT1vLmdldCh0KTtyZXR1cm4gby5tb3ZlKGEsZSksYS5jb250ZXh0LiRpbXBsaWNpdD1pLGF9X21heWJlQ2FjaGVWaWV3KHQsZSl7aWYodGhpcy5fdmlld0NhY2hlLmxlbmd0aDx0aGlzLnZpZXdDYWNoZVNpemUpdGhpcy5fdmlld0NhY2hlLnB1c2godCk7ZWxzZXtsZXQgbz1lLmluZGV4T2YodCk7bz09PS0xP3QuZGVzdHJveSgpOmUucmVtb3ZlKG8pfX1faW5zZXJ0Vmlld0Zyb21DYWNoZSh0LGUpe2xldCBvPXRoaXMuX3ZpZXdDYWNoZS5wb3AoKTtyZXR1cm4gbyYmZS5pbnNlcnQobyx0KSxvfHxudWxsfX07dmFyICR5PWNsYXNze2NvbnN0cnVjdG9yKHQ9ITEsZSxvPSEwKXt0aGlzLl9tdWx0aXBsZT10LHRoaXMuX2VtaXRDaGFuZ2VzPW8sdGhpcy5fc2VsZWN0aW9uPW5ldyBTZXQsdGhpcy5fZGVzZWxlY3RlZFRvRW1pdD1bXSx0aGlzLl9zZWxlY3RlZFRvRW1pdD1bXSx0aGlzLmNoYW5nZWQ9bmV3IEp0LGUmJmUubGVuZ3RoJiYodD9lLmZvckVhY2goaT0+dGhpcy5fbWFya1NlbGVjdGVkKGkpKTp0aGlzLl9tYXJrU2VsZWN0ZWQoZVswXSksdGhpcy5fc2VsZWN0ZWRUb0VtaXQubGVuZ3RoPTApfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPUFycmF5LmZyb20odGhpcy5fc2VsZWN0aW9uLnZhbHVlcygpKSksdGhpcy5fc2VsZWN0ZWR9c2VsZWN0KC4uLnQpe3RoaXMuX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KSx0LmZvckVhY2goZT0+dGhpcy5fbWFya1NlbGVjdGVkKGUpKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKX1kZXNlbGVjdCguLi50KXt0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCksdC5mb3JFYWNoKGU9PnRoaXMuX3VubWFya1NlbGVjdGVkKGUpKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKX10b2dnbGUodCl7dGhpcy5pc1NlbGVjdGVkKHQpP3RoaXMuZGVzZWxlY3QodCk6dGhpcy5zZWxlY3QodCl9Y2xlYXIoKXt0aGlzLl91bm1hcmtBbGwoKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKX1pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLl9zZWxlY3Rpb24uaGFzKHQpfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fc2VsZWN0aW9uLnNpemU9PT0wfWhhc1ZhbHVlKCl7cmV0dXJuIXRoaXMuaXNFbXB0eSgpfXNvcnQodCl7dGhpcy5fbXVsdGlwbGUmJnRoaXMuc2VsZWN0ZWQmJnRoaXMuX3NlbGVjdGVkLnNvcnQodCl9aXNNdWx0aXBsZVNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1fZW1pdENoYW5nZUV2ZW50KCl7dGhpcy5fc2VsZWN0ZWQ9bnVsbCwodGhpcy5fc2VsZWN0ZWRUb0VtaXQubGVuZ3RofHx0aGlzLl9kZXNlbGVjdGVkVG9FbWl0Lmxlbmd0aCkmJih0aGlzLmNoYW5nZWQubmV4dCh7c291cmNlOnRoaXMsYWRkZWQ6dGhpcy5fc2VsZWN0ZWRUb0VtaXQscmVtb3ZlZDp0aGlzLl9kZXNlbGVjdGVkVG9FbWl0fSksdGhpcy5fZGVzZWxlY3RlZFRvRW1pdD1bXSx0aGlzLl9zZWxlY3RlZFRvRW1pdD1bXSl9X21hcmtTZWxlY3RlZCh0KXt0aGlzLmlzU2VsZWN0ZWQodCl8fCh0aGlzLl9tdWx0aXBsZXx8dGhpcy5fdW5tYXJrQWxsKCksdGhpcy5fc2VsZWN0aW9uLmFkZCh0KSx0aGlzLl9lbWl0Q2hhbmdlcyYmdGhpcy5fc2VsZWN0ZWRUb0VtaXQucHVzaCh0KSl9X3VubWFya1NlbGVjdGVkKHQpe3RoaXMuaXNTZWxlY3RlZCh0KSYmKHRoaXMuX3NlbGVjdGlvbi5kZWxldGUodCksdGhpcy5fZW1pdENoYW5nZXMmJnRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXQucHVzaCh0KSl9X3VubWFya0FsbCgpe3RoaXMuaXNFbXB0eSgpfHx0aGlzLl9zZWxlY3Rpb24uZm9yRWFjaCh0PT50aGlzLl91bm1hcmtTZWxlY3RlZCh0KSl9X3ZlcmlmeVZhbHVlQXNzaWdubWVudCh0KXtpZih0Lmxlbmd0aD4xJiYhdGhpcy5fbXVsdGlwbGUmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBHRXQoKX19O2Z1bmN0aW9uIEdFdCgpe3JldHVybiBFcnJvcigiQ2Fubm90IHBhc3MgbXVsdGlwbGUgdmFsdWVzIGludG8gU2VsZWN0aW9uTW9kZWwgd2l0aCBzaW5nbGUtdmFsdWUgbW9kZS4iKX12YXIgS3k9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9saXN0ZW5lcnM9W119bm90aWZ5KHQsZSl7Zm9yKGxldCBvIG9mIHRoaXMuX2xpc3RlbmVycylvKHQsZSl9bGlzdGVuKHQpe3JldHVybiB0aGlzLl9saXN0ZW5lcnMucHVzaCh0KSwoKT0+e3RoaXMuX2xpc3RlbmVycz10aGlzLl9saXN0ZW5lcnMuZmlsdGVyKGU9PnQhPT1lKX19bmdPbkRlc3Ryb3koKXt0aGlzLl9saXN0ZW5lcnM9W119fTtLeS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxLeSl9O0t5Llx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEt5fSx0b2tlbjpLeSxwcm92aWRlZEluOiJyb290In0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhLeSxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVybltdfSxudWxsKX0pKCk7dmFyIG5sPW5ldyB5dCgiX1ZpZXdSZXBlYXRlciIpO3ZhciBxRXQ9WyJjb250ZW50V3JhcHBlciJdLFpFdD1bIioiXSxyaz1uZXcgeXQoIlZJUlRVQUxfU0NST0xMX1NUUkFURUdZIik7dmFyIE5VPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyBKdCx0aGlzLnNjcm9sbGVkSW5kZXhDaGFuZ2U9dGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZS5waXBlKFhvKCkpLHRoaXMuX3ZpZXdwb3J0PW51bGwsdGhpcy5faXRlbVNpemU9dCx0aGlzLl9taW5CdWZmZXJQeD1lLHRoaXMuX21heEJ1ZmZlclB4PW99YXR0YWNoKHQpe3RoaXMuX3ZpZXdwb3J0PXQsdGhpcy5fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpLHRoaXMuX3VwZGF0ZVJlbmRlcmVkUmFuZ2UoKX1kZXRhY2goKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLmNvbXBsZXRlKCksdGhpcy5fdmlld3BvcnQ9bnVsbH11cGRhdGVJdGVtQW5kQnVmZmVyU2l6ZSh0LGUsbyl7aWYobzxlJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNESyB2aXJ0dWFsIHNjcm9sbDogbWF4QnVmZmVyUHggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gbWluQnVmZmVyUHgiKTt0aGlzLl9pdGVtU2l6ZT10LHRoaXMuX21pbkJ1ZmZlclB4PWUsdGhpcy5fbWF4QnVmZmVyUHg9byx0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uQ29udGVudFNjcm9sbGVkKCl7dGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uRGF0YUxlbmd0aENoYW5nZWQoKXt0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfW9uQ29udGVudFJlbmRlcmVkKCl7fW9uUmVuZGVyZWRPZmZzZXRDaGFuZ2VkKCl7fXNjcm9sbFRvSW5kZXgodCxlKXt0aGlzLl92aWV3cG9ydCYmdGhpcy5fdmlld3BvcnQuc2Nyb2xsVG9PZmZzZXQodCp0aGlzLl9pdGVtU2l6ZSxlKX1fdXBkYXRlVG90YWxDb250ZW50U2l6ZSgpeyF0aGlzLl92aWV3cG9ydHx8dGhpcy5fdmlld3BvcnQuc2V0VG90YWxDb250ZW50U2l6ZSh0aGlzLl92aWV3cG9ydC5nZXREYXRhTGVuZ3RoKCkqdGhpcy5faXRlbVNpemUpfV91cGRhdGVSZW5kZXJlZFJhbmdlKCl7aWYoIXRoaXMuX3ZpZXdwb3J0KXJldHVybjtsZXQgdD10aGlzLl92aWV3cG9ydC5nZXRSZW5kZXJlZFJhbmdlKCksZT17c3RhcnQ6dC5zdGFydCxlbmQ6dC5lbmR9LG89dGhpcy5fdmlld3BvcnQuZ2V0Vmlld3BvcnRTaXplKCksaT10aGlzLl92aWV3cG9ydC5nZXREYXRhTGVuZ3RoKCksYT10aGlzLl92aWV3cG9ydC5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCkscj10aGlzLl9pdGVtU2l6ZT4wP2EvdGhpcy5faXRlbVNpemU6MDtpZihlLmVuZD5pKXtsZXQgbD1NYXRoLmNlaWwoby90aGlzLl9pdGVtU2l6ZSksYz1NYXRoLm1heCgwLE1hdGgubWluKHIsaS1sKSk7ciE9YyYmKHI9YyxhPWMqdGhpcy5faXRlbVNpemUsZS5zdGFydD1NYXRoLmZsb29yKHIpKSxlLmVuZD1NYXRoLm1heCgwLE1hdGgubWluKGksZS5zdGFydCtsKSl9bGV0IHM9YS1lLnN0YXJ0KnRoaXMuX2l0ZW1TaXplO2lmKHM8dGhpcy5fbWluQnVmZmVyUHgmJmUuc3RhcnQhPTApe2xldCBsPU1hdGguY2VpbCgodGhpcy5fbWF4QnVmZmVyUHgtcykvdGhpcy5faXRlbVNpemUpO2Uuc3RhcnQ9TWF0aC5tYXgoMCxlLnN0YXJ0LWwpLGUuZW5kPU1hdGgubWluKGksTWF0aC5jZWlsKHIrKG8rdGhpcy5fbWluQnVmZmVyUHgpL3RoaXMuX2l0ZW1TaXplKSl9ZWxzZXtsZXQgbD1lLmVuZCp0aGlzLl9pdGVtU2l6ZS0oYStvKTtpZihsPHRoaXMuX21pbkJ1ZmZlclB4JiZlLmVuZCE9aSl7bGV0IGM9TWF0aC5jZWlsKCh0aGlzLl9tYXhCdWZmZXJQeC1sKS90aGlzLl9pdGVtU2l6ZSk7Yz4wJiYoZS5lbmQ9TWF0aC5taW4oaSxlLmVuZCtjKSxlLnN0YXJ0PU1hdGgubWF4KDAsTWF0aC5mbG9vcihyLXRoaXMuX21pbkJ1ZmZlclB4L3RoaXMuX2l0ZW1TaXplKSkpfX10aGlzLl92aWV3cG9ydC5zZXRSZW5kZXJlZFJhbmdlKGUpLHRoaXMuX3ZpZXdwb3J0LnNldFJlbmRlcmVkQ29udGVudE9mZnNldCh0aGlzLl9pdGVtU2l6ZSplLnN0YXJ0KSx0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLm5leHQoTWF0aC5mbG9vcihyKSl9fTtmdW5jdGlvbiBOYXQobil7cmV0dXJuIG4uX3Njcm9sbFN0cmF0ZWd5fXZhciBDbD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2l0ZW1TaXplPTIwLHRoaXMuX21pbkJ1ZmZlclB4PTEwMCx0aGlzLl9tYXhCdWZmZXJQeD0yMDAsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9bmV3IE5VKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX1nZXQgaXRlbVNpemUoKXtyZXR1cm4gdGhpcy5faXRlbVNpemV9c2V0IGl0ZW1TaXplKHQpe3RoaXMuX2l0ZW1TaXplPVJpKHQpfWdldCBtaW5CdWZmZXJQeCgpe3JldHVybiB0aGlzLl9taW5CdWZmZXJQeH1zZXQgbWluQnVmZmVyUHgodCl7dGhpcy5fbWluQnVmZmVyUHg9UmkodCl9Z2V0IG1heEJ1ZmZlclB4KCl7cmV0dXJuIHRoaXMuX21heEJ1ZmZlclB4fXNldCBtYXhCdWZmZXJQeCh0KXt0aGlzLl9tYXhCdWZmZXJQeD1SaSh0KX1uZ09uQ2hhbmdlcygpe3RoaXMuX3Njcm9sbFN0cmF0ZWd5LnVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX19O0NsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fENsKX07Q2wuXHUwMjc1ZGlyPXZ0KHt0eXBlOkNsLHNlbGVjdG9yczpbWyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLCJpdGVtU2l6ZSIsIiJdXSxpbnB1dHM6e2l0ZW1TaXplOiJpdGVtU2l6ZSIsbWluQnVmZmVyUHg6Im1pbkJ1ZmZlclB4IixtYXhCdWZmZXJQeDoibWF4QnVmZmVyUHgifSxmZWF0dXJlczpbVGUoW3twcm92aWRlOnJrLHVzZUZhY3Rvcnk6TmF0LGRlcHM6W3RvKCgpPT5DbCldfV0pLFdlXX0pO0NsLnByb3BEZWNvcmF0b3JzPXtpdGVtU2l6ZTpbe3R5cGU6ZH1dLG1pbkJ1ZmZlclB4Olt7dHlwZTpkfV0sbWF4QnVmZmVyUHg6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKENsLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFtpdGVtU2l6ZV0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6cmssdXNlRmFjdG9yeTpOYXQsZGVwczpbdG8oKCk9PkNsKV19XX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0se2l0ZW1TaXplOlt7dHlwZTpkfV0sbWluQnVmZmVyUHg6W3t0eXBlOmR9XSxtYXhCdWZmZXJQeDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBYRXQ9MjAsUWk9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX25nWm9uZT10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fc2Nyb2xsZWQ9bmV3IEp0LHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX3Njcm9sbGVkQ291bnQ9MCx0aGlzLnNjcm9sbENvbnRhaW5lcnM9bmV3IE1hcCx0aGlzLl9kb2N1bWVudD1vfXJlZ2lzdGVyKHQpe3RoaXMuc2Nyb2xsQ29udGFpbmVycy5oYXModCl8fHRoaXMuc2Nyb2xsQ29udGFpbmVycy5zZXQodCx0LmVsZW1lbnRTY3JvbGxlZCgpLnN1YnNjcmliZSgoKT0+dGhpcy5fc2Nyb2xsZWQubmV4dCh0KSkpfWRlcmVnaXN0ZXIodCl7bGV0IGU9dGhpcy5zY3JvbGxDb250YWluZXJzLmdldCh0KTtlJiYoZS51bnN1YnNjcmliZSgpLHRoaXMuc2Nyb2xsQ29udGFpbmVycy5kZWxldGUodCkpfXNjcm9sbGVkKHQ9WEV0KXtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyP25ldyBEbihlPT57dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9ufHx0aGlzLl9hZGRHbG9iYWxMaXN0ZW5lcigpO2xldCBvPXQ+MD90aGlzLl9zY3JvbGxlZC5waXBlKG5fKHQpKS5zdWJzY3JpYmUoZSk6dGhpcy5fc2Nyb2xsZWQuc3Vic2NyaWJlKGUpO3JldHVybiB0aGlzLl9zY3JvbGxlZENvdW50KyssKCk9PntvLnVuc3Vic2NyaWJlKCksdGhpcy5fc2Nyb2xsZWRDb3VudC0tLHRoaXMuX3Njcm9sbGVkQ291bnR8fHRoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVyKCl9fSk6ZG4oKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVyKCksdGhpcy5zY3JvbGxDb250YWluZXJzLmZvckVhY2goKHQsZSk9PnRoaXMuZGVyZWdpc3RlcihlKSksdGhpcy5fc2Nyb2xsZWQuY29tcGxldGUoKX1hbmNlc3RvclNjcm9sbGVkKHQsZSl7bGV0IG89dGhpcy5nZXRBbmNlc3RvclNjcm9sbENvbnRhaW5lcnModCk7cmV0dXJuIHRoaXMuc2Nyb2xsZWQoZSkucGlwZSh1ZShpPT4haXx8by5pbmRleE9mKGkpPi0xKSl9Z2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpe2xldCBlPVtdO3JldHVybiB0aGlzLnNjcm9sbENvbnRhaW5lcnMuZm9yRWFjaCgobyxpKT0+e3RoaXMuX3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQoaSx0KSYmZS5wdXNoKGkpfSksZX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQodCxlKXtsZXQgbz1DcChlKSxpPXQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7ZG8gaWYobz09aSlyZXR1cm4hMDt3aGlsZShvPW8ucGFyZW50RWxlbWVudCk7cmV0dXJuITF9X2FkZEdsb2JhbExpc3RlbmVyKCl7dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2xldCB0PXRoaXMuX2dldFdpbmRvdygpO3JldHVybiBqbyh0LmRvY3VtZW50LCJzY3JvbGwiKS5zdWJzY3JpYmUoKCk9PnRoaXMuX3Njcm9sbGVkLm5leHQoKSl9KX1fcmVtb3ZlR2xvYmFsTGlzdGVuZXIoKXt0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24mJih0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb249bnVsbCl9fTtRaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxRaSkoSShDdCksSShWdCksSShfdCw4KSl9O1FpLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFFpKEkoQ3QpLEkoVnQpLEkoX3QsOCkpfSx0b2tlbjpRaSxwcm92aWRlZEluOiJyb290In0pO1FpLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Q3R9LHt0eXBlOlZ0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhRaSxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpDdH0se3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTt2YXIgUnI9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5lbGVtZW50UmVmPXQsdGhpcy5zY3JvbGxEaXNwYXRjaGVyPWUsdGhpcy5uZ1pvbmU9byx0aGlzLmRpcj1pLHRoaXMuX2Rlc3Ryb3llZD1uZXcgSnQsdGhpcy5fZWxlbWVudFNjcm9sbGVkPW5ldyBEbihhPT50aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+am8odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInNjcm9sbCIpLnBpcGUoUGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKGEpKSl9bmdPbkluaXQoKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIucmVnaXN0ZXIodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIuZGVyZWdpc3Rlcih0aGlzKSx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfWVsZW1lbnRTY3JvbGxlZCgpe3JldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsZWR9Z2V0RWxlbWVudFJlZigpe3JldHVybiB0aGlzLmVsZW1lbnRSZWZ9c2Nyb2xsVG8odCl7bGV0IGU9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbz10aGlzLmRpciYmdGhpcy5kaXIudmFsdWU9PSJydGwiO3QubGVmdD09bnVsbCYmKHQubGVmdD1vP3QuZW5kOnQuc3RhcnQpLHQucmlnaHQ9PW51bGwmJih0LnJpZ2h0PW8/dC5zdGFydDp0LmVuZCksdC5ib3R0b20hPW51bGwmJih0LnRvcD1lLnNjcm9sbEhlaWdodC1lLmNsaWVudEhlaWdodC10LmJvdHRvbSksbyYmUjMoKSE9MD8odC5sZWZ0IT1udWxsJiYodC5yaWdodD1lLnNjcm9sbFdpZHRoLWUuY2xpZW50V2lkdGgtdC5sZWZ0KSxSMygpPT0yP3QubGVmdD10LnJpZ2h0OlIzKCk9PTEmJih0LmxlZnQ9dC5yaWdodD8tdC5yaWdodDp0LnJpZ2h0KSk6dC5yaWdodCE9bnVsbCYmKHQubGVmdD1lLnNjcm9sbFdpZHRoLWUuY2xpZW50V2lkdGgtdC5yaWdodCksdGhpcy5fYXBwbHlTY3JvbGxUb09wdGlvbnModCl9X2FwcGx5U2Nyb2xsVG9PcHRpb25zKHQpe2xldCBlPXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2VJKCk/ZS5zY3JvbGxUbyh0KToodC50b3AhPW51bGwmJihlLnNjcm9sbFRvcD10LnRvcCksdC5sZWZ0IT1udWxsJiYoZS5zY3JvbGxMZWZ0PXQubGVmdCkpfW1lYXN1cmVTY3JvbGxPZmZzZXQodCl7bGV0IGU9ImxlZnQiLG89InJpZ2h0IixpPXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKHQ9PSJ0b3AiKXJldHVybiBpLnNjcm9sbFRvcDtpZih0PT0iYm90dG9tIilyZXR1cm4gaS5zY3JvbGxIZWlnaHQtaS5jbGllbnRIZWlnaHQtaS5zY3JvbGxUb3A7bGV0IGE9dGhpcy5kaXImJnRoaXMuZGlyLnZhbHVlPT0icnRsIjtyZXR1cm4gdD09InN0YXJ0Ij90PWE/bzplOnQ9PSJlbmQiJiYodD1hP2U6byksYSYmUjMoKT09Mj90PT1lP2kuc2Nyb2xsV2lkdGgtaS5jbGllbnRXaWR0aC1pLnNjcm9sbExlZnQ6aS5zY3JvbGxMZWZ0OmEmJlIzKCk9PTE/dD09ZT9pLnNjcm9sbExlZnQraS5zY3JvbGxXaWR0aC1pLmNsaWVudFdpZHRoOi1pLnNjcm9sbExlZnQ6dD09ZT9pLnNjcm9sbExlZnQ6aS5zY3JvbGxXaWR0aC1pLmNsaWVudFdpZHRoLWkuc2Nyb2xsTGVmdH19O1JyLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFJyKSh2KEwpLHYoUWkpLHYoQ3QpLHYoTmUsOCkpfTtSci5cdTAyNzVkaXI9dnQoe3R5cGU6UnIsc2VsZWN0b3JzOltbIiIsImNkay1zY3JvbGxhYmxlIiwiIl0sWyIiLCJjZGtTY3JvbGxhYmxlIiwiIl1dfSk7UnIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpRaX0se3R5cGU6Q3R9LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhScixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY2RrLXNjcm9sbGFibGVdLCBbY2RrU2Nyb2xsYWJsZV0ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpRaX0se3R5cGU6Q3R9LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX1dfSxudWxsKX0pKCk7dmFyIFFFdD0yMCxabj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9jaGFuZ2U9bmV3IEp0LHRoaXMuX2NoYW5nZUxpc3RlbmVyPWk9Pnt0aGlzLl9jaGFuZ2UubmV4dChpKX0sdGhpcy5fZG9jdW1lbnQ9byxlLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57aWYodC5pc0Jyb3dzZXIpe2xldCBpPXRoaXMuX2dldFdpbmRvdygpO2kuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksaS5hZGRFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuY2hhbmdlKCkuc3Vic2NyaWJlKCgpPT50aGlzLl92aWV3cG9ydFNpemU9bnVsbCl9KX1uZ09uRGVzdHJveSgpe2lmKHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcil7bGV0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2NoYW5nZUxpc3RlbmVyKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIix0aGlzLl9jaGFuZ2VMaXN0ZW5lcil9dGhpcy5fY2hhbmdlLmNvbXBsZXRlKCl9Z2V0Vmlld3BvcnRTaXplKCl7dGhpcy5fdmlld3BvcnRTaXplfHx0aGlzLl91cGRhdGVWaWV3cG9ydFNpemUoKTtsZXQgdD17d2lkdGg6dGhpcy5fdmlld3BvcnRTaXplLndpZHRoLGhlaWdodDp0aGlzLl92aWV3cG9ydFNpemUuaGVpZ2h0fTtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHwodGhpcy5fdmlld3BvcnRTaXplPW51bGwpLHR9Z2V0Vmlld3BvcnRSZWN0KCl7bGV0IHQ9dGhpcy5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkse3dpZHRoOmUsaGVpZ2h0Om99PXRoaXMuZ2V0Vmlld3BvcnRTaXplKCk7cmV0dXJue3RvcDp0LnRvcCxsZWZ0OnQubGVmdCxib3R0b206dC50b3ArbyxyaWdodDp0LmxlZnQrZSxoZWlnaHQ6byx3aWR0aDplfX1nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCl7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm57dG9wOjAsbGVmdDowfTtsZXQgdD10aGlzLl9kb2N1bWVudCxlPXRoaXMuX2dldFdpbmRvdygpLG89dC5kb2N1bWVudEVsZW1lbnQsaT1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9LWkudG9wfHx0LmJvZHkuc2Nyb2xsVG9wfHxlLnNjcm9sbFl8fG8uc2Nyb2xsVG9wfHwwLHI9LWkubGVmdHx8dC5ib2R5LnNjcm9sbExlZnR8fGUuc2Nyb2xsWHx8by5zY3JvbGxMZWZ0fHwwO3JldHVybnt0b3A6YSxsZWZ0OnJ9fWNoYW5nZSh0PVFFdCl7cmV0dXJuIHQ+MD90aGlzLl9jaGFuZ2UucGlwZShuXyh0KSk6dGhpcy5fY2hhbmdlfV9nZXRXaW5kb3coKXtyZXR1cm4gdGhpcy5fZG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvd31fdXBkYXRlVmlld3BvcnRTaXplKCl7bGV0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dGhpcy5fdmlld3BvcnRTaXplPXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcj97d2lkdGg6dC5pbm5lcldpZHRoLGhlaWdodDp0LmlubmVySGVpZ2h0fTp7d2lkdGg6MCxoZWlnaHQ6MH19fTtabi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxabikoSShWdCksSShDdCksSShfdCw4KSl9O1puLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFpuKEkoVnQpLEkoQ3QpLEkoX3QsOCkpfSx0b2tlbjpabixwcm92aWRlZEluOiJyb290In0pO1puLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VnR9LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhabixbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpWdH0se3R5cGU6Q3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBLRXQobix0KXtyZXR1cm4gbi5zdGFydD09dC5zdGFydCYmbi5lbmQ9PXQuZW5kfXZhciBKRXQ9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSE9InVuZGVmaW5lZCI/STc6b3csSmE9Y2xhc3MgZXh0ZW5kcyBScntjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzKXtpZihzdXBlcih0LHIsbyxhKSx0aGlzLmVsZW1lbnRSZWY9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PWksdGhpcy5fZGV0YWNoZWRTdWJqZWN0PW5ldyBKdCx0aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdD1uZXcgSnQsdGhpcy5fb3JpZW50YXRpb249InZlcnRpY2FsIix0aGlzLl9hcHBlbmRPbmx5PSExLHRoaXMuc2Nyb2xsZWRJbmRleENoYW5nZT1uZXcgRG4obD0+dGhpcy5fc2Nyb2xsU3RyYXRlZ3kuc2Nyb2xsZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoYz0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+dGhpcy5uZ1pvbmUucnVuKCgpPT5sLm5leHQoYykpKSkpLHRoaXMucmVuZGVyZWRSYW5nZVN0cmVhbT10aGlzLl9yZW5kZXJlZFJhbmdlU3ViamVjdCx0aGlzLl90b3RhbENvbnRlbnRTaXplPTAsdGhpcy5fdG90YWxDb250ZW50V2lkdGg9IiIsdGhpcy5fdG90YWxDb250ZW50SGVpZ2h0PSIiLHRoaXMuX3JlbmRlcmVkUmFuZ2U9e3N0YXJ0OjAsZW5kOjB9LHRoaXMuX2RhdGFMZW5ndGg9MCx0aGlzLl92aWV3cG9ydFNpemU9MCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQ9MCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITEsdGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSExLHRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uPVtdLHRoaXMuX3ZpZXdwb3J0Q2hhbmdlcz1Fby5FTVBUWSwhaSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCdFcnJvcjogY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IHJlcXVpcmVzIHRoZSAiaXRlbVNpemUiIHByb3BlcnR5IHRvIGJlIHNldC4nKTt0aGlzLl92aWV3cG9ydENoYW5nZXM9cy5jaGFuZ2UoKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmNoZWNrVmlld3BvcnRTaXplKCl9KX1nZXQgb3JpZW50YXRpb24oKXtyZXR1cm4gdGhpcy5fb3JpZW50YXRpb259c2V0IG9yaWVudGF0aW9uKHQpe3RoaXMuX29yaWVudGF0aW9uIT09dCYmKHRoaXMuX29yaWVudGF0aW9uPXQsdGhpcy5fY2FsY3VsYXRlU3BhY2VyU2l6ZSgpKX1nZXQgYXBwZW5kT25seSgpe3JldHVybiB0aGlzLl9hcHBlbmRPbmx5fXNldCBhcHBlbmRPbmx5KHQpe3RoaXMuX2FwcGVuZE9ubHk9WmUodCl9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57dGhpcy5fbWVhc3VyZVZpZXdwb3J0U2l6ZSgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmF0dGFjaCh0aGlzKSx0aGlzLmVsZW1lbnRTY3JvbGxlZCgpLnBpcGUoU28obnVsbCksbl8oMCxKRXQpKS5zdWJzY3JpYmUoKCk9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uQ29udGVudFNjcm9sbGVkKCkpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuZGV0YWNoKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuZGV0YWNoKCksdGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3QuY29tcGxldGUoKSx0aGlzLl9kZXRhY2hlZFN1YmplY3QuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydENoYW5nZXMudW5zdWJzY3JpYmUoKSxzdXBlci5uZ09uRGVzdHJveSgpfWF0dGFjaCh0KXtpZih0aGlzLl9mb3JPZiYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgaXMgYWxyZWFkeSBhdHRhY2hlZC4iKTt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX2Zvck9mPXQsdGhpcy5fZm9yT2YuZGF0YVN0cmVhbS5waXBlKFBlKHRoaXMuX2RldGFjaGVkU3ViamVjdCkpLnN1YnNjcmliZShlPT57bGV0IG89ZS5sZW5ndGg7byE9PXRoaXMuX2RhdGFMZW5ndGgmJih0aGlzLl9kYXRhTGVuZ3RoPW8sdGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25EYXRhTGVuZ3RoQ2hhbmdlZCgpKSx0aGlzLl9kb0NoYW5nZURldGVjdGlvbigpfSl9KX1kZXRhY2goKXt0aGlzLl9mb3JPZj1udWxsLHRoaXMuX2RldGFjaGVkU3ViamVjdC5uZXh0KCl9Z2V0RGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9kYXRhTGVuZ3RofWdldFZpZXdwb3J0U2l6ZSgpe3JldHVybiB0aGlzLl92aWV3cG9ydFNpemV9Z2V0UmVuZGVyZWRSYW5nZSgpe3JldHVybiB0aGlzLl9yZW5kZXJlZFJhbmdlfXNldFRvdGFsQ29udGVudFNpemUodCl7dGhpcy5fdG90YWxDb250ZW50U2l6ZSE9PXQmJih0aGlzLl90b3RhbENvbnRlbnRTaXplPXQsdGhpcy5fY2FsY3VsYXRlU3BhY2VyU2l6ZSgpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKSl9c2V0UmVuZGVyZWRSYW5nZSh0KXtLRXQodGhpcy5fcmVuZGVyZWRSYW5nZSx0KXx8KHRoaXMuYXBwZW5kT25seSYmKHQ9e3N0YXJ0OjAsZW5kOk1hdGgubWF4KHRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kLHQuZW5kKX0pLHRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0Lm5leHQodGhpcy5fcmVuZGVyZWRSYW5nZT10KSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCgpPT50aGlzLl9zY3JvbGxTdHJhdGVneS5vbkNvbnRlbnRSZW5kZXJlZCgpKSl9Z2V0T2Zmc2V0VG9SZW5kZXJlZENvbnRlbnRTdGFydCgpe3JldHVybiB0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU/bnVsbDp0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXR9c2V0UmVuZGVyZWRDb250ZW50T2Zmc2V0KHQsZT0idG8tc3RhcnQiKXtsZXQgbz10aGlzLmRpciYmdGhpcy5kaXIudmFsdWU9PSJydGwiLGk9dGhpcy5vcmllbnRhdGlvbj09Imhvcml6b250YWwiLGE9aT8iWCI6IlkiLHM9YHRyYW5zbGF0ZSR7YX0oJHtOdW1iZXIoKGkmJm8/LTE6MSkqdCl9cHgpYDt0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQ9dCxlPT09InRvLWVuZCImJihzKz1gIHRyYW5zbGF0ZSR7YX0oLTEwMCUpYCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITApLHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSE9cyYmKHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybT1zLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKCk9Pnt0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU/KHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldC09dGhpcy5tZWFzdXJlUmVuZGVyZWRDb250ZW50U2l6ZSgpLHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT0hMSx0aGlzLnNldFJlbmRlcmVkQ29udGVudE9mZnNldCh0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQpKTp0aGlzLl9zY3JvbGxTdHJhdGVneS5vblJlbmRlcmVkT2Zmc2V0Q2hhbmdlZCgpfSkpfXNjcm9sbFRvT2Zmc2V0KHQsZT0iYXV0byIpe2xldCBvPXtiZWhhdmlvcjplfTt0aGlzLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiP28uc3RhcnQ9dDpvLnRvcD10LHRoaXMuc2Nyb2xsVG8obyl9c2Nyb2xsVG9JbmRleCh0LGU9ImF1dG8iKXt0aGlzLl9zY3JvbGxTdHJhdGVneS5zY3JvbGxUb0luZGV4KHQsZSl9bWVhc3VyZVNjcm9sbE9mZnNldCh0KXtyZXR1cm4gdD9zdXBlci5tZWFzdXJlU2Nyb2xsT2Zmc2V0KHQpOnN1cGVyLm1lYXN1cmVTY3JvbGxPZmZzZXQodGhpcy5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj8ic3RhcnQiOiJ0b3AiKX1tZWFzdXJlUmVuZGVyZWRDb250ZW50U2l6ZSgpe2xldCB0PXRoaXMuX2NvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7cmV0dXJuIHRoaXMub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCI/dC5vZmZzZXRXaWR0aDp0Lm9mZnNldEhlaWdodH1tZWFzdXJlUmFuZ2VTaXplKHQpe3JldHVybiB0aGlzLl9mb3JPZj90aGlzLl9mb3JPZi5tZWFzdXJlUmFuZ2VTaXplKHQsdGhpcy5vcmllbnRhdGlvbik6MH1jaGVja1ZpZXdwb3J0U2l6ZSgpe3RoaXMuX21lYXN1cmVWaWV3cG9ydFNpemUoKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5vbkRhdGFMZW5ndGhDaGFuZ2VkKCl9X21lYXN1cmVWaWV3cG9ydFNpemUoKXtsZXQgdD10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl92aWV3cG9ydFNpemU9dGhpcy5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj90LmNsaWVudFdpZHRoOnQuY2xpZW50SGVpZ2h0fV9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKHQpe3QmJnRoaXMuX3J1bkFmdGVyQ2hhbmdlRGV0ZWN0aW9uLnB1c2godCksdGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nfHwodGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSEwLHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57dGhpcy5fZG9DaGFuZ2VEZXRlY3Rpb24oKX0pKSl9X2RvQ2hhbmdlRGV0ZWN0aW9uKCl7dGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSExLHRoaXMuX2NvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPXRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSx0aGlzLm5nWm9uZS5ydW4oKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKTtsZXQgdD10aGlzLl9ydW5BZnRlckNoYW5nZURldGVjdGlvbjt0aGlzLl9ydW5BZnRlckNoYW5nZURldGVjdGlvbj1bXTtmb3IobGV0IGUgb2YgdCllKCl9X2NhbGN1bGF0ZVNwYWNlclNpemUoKXt0aGlzLl90b3RhbENvbnRlbnRIZWlnaHQ9dGhpcy5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIj8iIjpgJHt0aGlzLl90b3RhbENvbnRlbnRTaXplfXB4YCx0aGlzLl90b3RhbENvbnRlbnRXaWR0aD10aGlzLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiP2Ake3RoaXMuX3RvdGFsQ29udGVudFNpemV9cHhgOiIifX07SmEuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SmEpKHYoTCksdihUdCksdihDdCksdihyayw4KSx2KE5lLDgpLHYoUWkpLHYoWm4pKX07SmEuXHUwMjc1Y21wPXooe3R5cGU6SmEsc2VsZWN0b3JzOltbImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJnBlKHFFdCw3KSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLl9jb250ZW50V3JhcHBlcj1vLmZpcnN0KX19LGhvc3RBdHRyczpbMSwiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0Il0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJjZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCIsZS5vcmllbnRhdGlvbj09PSJob3Jpem9udGFsIikoImNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsZS5vcmllbnRhdGlvbiE9PSJob3Jpem9udGFsIil9LGlucHV0czp7b3JpZW50YXRpb246Im9yaWVudGF0aW9uIixhcHBlbmRPbmx5OiJhcHBlbmRPbmx5In0sb3V0cHV0czp7c2Nyb2xsZWRJbmRleENoYW5nZToic2Nyb2xsZWRJbmRleENoYW5nZSJ9LGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6UnIsdXNlRXhpc3Rpbmc6SmF9XSksYWVdLG5nQ29udGVudFNlbGVjdG9yczpaRXQsZGVjbHM6NCx2YXJzOjQsY29uc3RzOltbMSwiY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlciJdLFsiY29udGVudFdyYXBwZXIiLCIiXSxbMSwiY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKCksdSgwLCJkaXYiLDAsMSksWW4oMiksaCgpLEQoMywiZGl2IiwyKSksdCYyJiYoeCgzKSxxZSgid2lkdGgiLGUuX3RvdGFsQ29udGVudFdpZHRoKSgiaGVpZ2h0IixlLl90b3RhbENvbnRlbnRIZWlnaHQpKX0sc3R5bGVzOltgY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0e2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6YXV0bztjb250YWluOnN0cmljdDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt3aWxsLWNoYW5nZTpzY3JvbGwtcG9zaXRpb247LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2NvbnRhaW46Y29udGVudH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7cmlnaHQ6MDtsZWZ0OmF1dG99LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi1oZWlnaHQ6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPm9sOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowO21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjA7Ym9yZGVyLWxlZnQtd2lkdGg6MDtib3JkZXItcmlnaHQtd2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcnttaW4td2lkdGg6MTAwJX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPmRsOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj50YWJsZTpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnVsOm5vdChbY2RrVmlydHVhbEZvcl0pe3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO2JvcmRlci10b3Atd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjA7b3V0bGluZTpub25lfS5jZGstdmlydHVhbC1zY3JvbGwtc3BhY2Vye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MXB4O3dpZHRoOjFweDt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cmlnaHQ6MDtsZWZ0OmF1dG87dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDB9CmBdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO0phLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltya119XX0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpRaX0se3R5cGU6Wm59XTtKYS5wcm9wRGVjb3JhdG9ycz17b3JpZW50YXRpb246W3t0eXBlOmR9XSxhcHBlbmRPbmx5Olt7dHlwZTpkfV0sc2Nyb2xsZWRJbmRleENoYW5nZTpbe3R5cGU6Qn1dLF9jb250ZW50V3JhcHBlcjpbe3R5cGU6SXQsYXJnczpbImNvbnRlbnRXcmFwcGVyIix7c3RhdGljOiEwfV19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEphLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0Iix0ZW1wbGF0ZTpgPCEtLQogIFdyYXAgdGhlIHJlbmRlcmVkIGNvbnRlbnQgaW4gYW4gZWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCB0byBvZmZzZXQgaXQgYmFzZWQgb24gdGhlIHNjcm9sbAogIHBvc2l0aW9uLgotLT4KPGRpdiAjY29udGVudFdyYXBwZXIgY2xhc3M9ImNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXIiPgogIDxuZy1jb250ZW50PjwvbmctY29udGVudD4KPC9kaXY+CjwhLS0KICBTcGFjZXIgdXNlZCB0byBmb3JjZSB0aGUgc2Nyb2xsaW5nIGNvbnRhaW5lciB0byB0aGUgY29ycmVjdCBzaXplIGZvciB0aGUgKnRvdGFsKiBudW1iZXIgb2YgaXRlbXMKICBzbyB0aGF0IHRoZSBzY3JvbGxiYXIgY2FwdHVyZXMgdGhlIHNpemUgb2YgdGhlIGVudGlyZSBkYXRhIHNldC4KLS0+CjxkaXYgY2xhc3M9ImNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXIiCiAgICAgW3N0eWxlLndpZHRoXT0iX3RvdGFsQ29udGVudFdpZHRoIiBbc3R5bGUuaGVpZ2h0XT0iX3RvdGFsQ29udGVudEhlaWdodCI+PC9kaXY+CmAsaG9zdDp7Y2xhc3M6ImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsIltjbGFzcy5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbF0iOidvcmllbnRhdGlvbiA9PT0gImhvcml6b250YWwiJywiW2NsYXNzLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbF0iOidvcmllbnRhdGlvbiAhPT0gImhvcml6b250YWwiJ30sZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gscHJvdmlkZXJzOlt7cHJvdmlkZTpScix1c2VFeGlzdGluZzpKYX1dLHN0eWxlczpbYGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmF1dG87Y29udGFpbjpzdHJpY3Q7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7d2lsbC1jaGFuZ2U6c2Nyb2xsLXBvc2l0aW9uOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNofS5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtjb250YWluOmNvbnRlbnR9W2Rpcj1ydGxdIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye3JpZ2h0OjA7bGVmdDphdXRvfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcnttaW4taGVpZ2h0OjEwMCV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPmRsOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5vbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dGFibGU6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnVsOm5vdChbY2RrVmlydHVhbEZvcl0pe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MDttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowO2JvcmRlci1sZWZ0LXdpZHRoOjA7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7b3V0bGluZTpub25lfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7bWluLXdpZHRoOjEwMCV9LmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5kbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPm9sOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dGFibGU6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj51bDpub3QoW2Nka1ZpcnR1YWxGb3JdKXtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MDtib3JkZXItdG9wLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDowO291dGxpbmU6bm9uZX0uY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjFweDt3aWR0aDoxcHg7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5jZGstdmlydHVhbC1zY3JvbGwtc3BhY2Vye3JpZ2h0OjA7bGVmdDphdXRvO3RyYW5zZm9ybS1vcmlnaW46MTAwJSAwfQpgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltya119XX0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpRaX0se3R5cGU6Wm59XX0se3Njcm9sbGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkJ9XSxvcmllbnRhdGlvbjpbe3R5cGU6ZH1dLGFwcGVuZE9ubHk6W3t0eXBlOmR9XSxfY29udGVudFdyYXBwZXI6W3t0eXBlOkl0LGFyZ3M6WyJjb250ZW50V3JhcHBlciIse3N0YXRpYzohMH1dfV19KX0pKCk7ZnVuY3Rpb24ga2F0KG4sdCxlKXtsZXQgbz1lO2lmKCFvLmdldEJvdW5kaW5nQ2xpZW50UmVjdClyZXR1cm4gMDtsZXQgaT1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBuPT09Imhvcml6b250YWwiP3Q9PT0ic3RhcnQiP2kubGVmdDppLnJpZ2h0OnQ9PT0ic3RhcnQiP2kudG9wOmkuYm90dG9tfXZhciBKbD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscil7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBsYXRlPWUsdGhpcy5fZGlmZmVycz1vLHRoaXMuX3ZpZXdSZXBlYXRlcj1pLHRoaXMuX3ZpZXdwb3J0PWEsdGhpcy52aWV3Q2hhbmdlPW5ldyBKdCx0aGlzLl9kYXRhU291cmNlQ2hhbmdlcz1uZXcgSnQsdGhpcy5kYXRhU3RyZWFtPXRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLnBpcGUoU28obnVsbCksc3coKSx0aSgoW3MsbF0pPT50aGlzLl9jaGFuZ2VEYXRhU291cmNlKHMsbCkpLEJmKDEpKSx0aGlzLl9kaWZmZXI9bnVsbCx0aGlzLl9uZWVkc1VwZGF0ZT0hMSx0aGlzLl9kZXN0cm95ZWQ9bmV3IEp0LHRoaXMuZGF0YVN0cmVhbS5zdWJzY3JpYmUocz0+e3RoaXMuX2RhdGE9cyx0aGlzLl9vblJlbmRlcmVkRGF0YUNoYW5nZSgpfSksdGhpcy5fdmlld3BvcnQucmVuZGVyZWRSYW5nZVN0cmVhbS5waXBlKFBlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZShzPT57dGhpcy5fcmVuZGVyZWRSYW5nZT1zLHIucnVuKCgpPT50aGlzLnZpZXdDaGFuZ2UubmV4dCh0aGlzLl9yZW5kZXJlZFJhbmdlKSksdGhpcy5fb25SZW5kZXJlZERhdGFDaGFuZ2UoKX0pLHRoaXMuX3ZpZXdwb3J0LmF0dGFjaCh0aGlzKX1nZXQgY2RrVmlydHVhbEZvck9mKCl7cmV0dXJuIHRoaXMuX2Nka1ZpcnR1YWxGb3JPZn1zZXQgY2RrVmlydHVhbEZvck9mKHQpe3RoaXMuX2Nka1ZpcnR1YWxGb3JPZj10LEQzKHQpP3RoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQodCk6dGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dChuZXcgX0kobnYodCk/dDpBcnJheS5mcm9tKHR8fFtdKSkpfWdldCBjZGtWaXJ0dWFsRm9yVHJhY2tCeSgpe3JldHVybiB0aGlzLl9jZGtWaXJ0dWFsRm9yVHJhY2tCeX1zZXQgY2RrVmlydHVhbEZvclRyYWNrQnkodCl7dGhpcy5fbmVlZHNVcGRhdGU9ITAsdGhpcy5fY2RrVmlydHVhbEZvclRyYWNrQnk9dD8oZSxvKT0+dChlKyh0aGlzLl9yZW5kZXJlZFJhbmdlP3RoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQ6MCksbyk6dm9pZCAwfXNldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGUodCl7dCYmKHRoaXMuX25lZWRzVXBkYXRlPSEwLHRoaXMuX3RlbXBsYXRlPXQpfWdldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUoKXtyZXR1cm4gdGhpcy5fdmlld1JlcGVhdGVyLnZpZXdDYWNoZVNpemV9c2V0IGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSh0KXt0aGlzLl92aWV3UmVwZWF0ZXIudmlld0NhY2hlU2l6ZT1SaSh0KX1tZWFzdXJlUmFuZ2VTaXplKHQsZSl7aWYodC5zdGFydD49dC5lbmQpcmV0dXJuIDA7aWYoKHQuc3RhcnQ8dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydHx8dC5lbmQ+dGhpcy5fcmVuZGVyZWRSYW5nZS5lbmQpJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkVycm9yOiBhdHRlbXB0ZWQgdG8gbWVhc3VyZSBhbiBpdGVtIHRoYXQgaXNuJ3QgcmVuZGVyZWQuIik7bGV0IG89dC5zdGFydC10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LGk9dC5lbmQtdC5zdGFydCxhLHI7Zm9yKGxldCBzPTA7czxpO3MrKyl7bGV0IGw9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQocytvKTtpZihsJiZsLnJvb3ROb2Rlcy5sZW5ndGgpe2E9cj1sLnJvb3ROb2Rlc1swXTticmVha319Zm9yKGxldCBzPWktMTtzPi0xO3MtLSl7bGV0IGw9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQocytvKTtpZihsJiZsLnJvb3ROb2Rlcy5sZW5ndGgpe3I9bC5yb290Tm9kZXNbbC5yb290Tm9kZXMubGVuZ3RoLTFdO2JyZWFrfX1yZXR1cm4gYSYmcj9rYXQoZSwiZW5kIixyKS1rYXQoZSwic3RhcnQiLGEpOjB9bmdEb0NoZWNrKCl7aWYodGhpcy5fZGlmZmVyJiZ0aGlzLl9uZWVkc1VwZGF0ZSl7bGV0IHQ9dGhpcy5fZGlmZmVyLmRpZmYodGhpcy5fcmVuZGVyZWRJdGVtcyk7dD90aGlzLl9hcHBseUNoYW5nZXModCk6dGhpcy5fdXBkYXRlQ29udGV4dCgpLHRoaXMuX25lZWRzVXBkYXRlPSExfX1uZ09uRGVzdHJveSgpe3RoaXMuX3ZpZXdwb3J0LmRldGFjaCgpLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQodm9pZCAwKSx0aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMudmlld0NoYW5nZS5jb21wbGV0ZSgpLHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5fdmlld1JlcGVhdGVyLmRldGFjaCgpfV9vblJlbmRlcmVkRGF0YUNoYW5nZSgpeyF0aGlzLl9yZW5kZXJlZFJhbmdlfHwodGhpcy5fcmVuZGVyZWRJdGVtcz10aGlzLl9kYXRhLnNsaWNlKHRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQsdGhpcy5fcmVuZGVyZWRSYW5nZS5lbmQpLHRoaXMuX2RpZmZlcnx8KHRoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQodGhpcy5fcmVuZGVyZWRJdGVtcykuY3JlYXRlKCh0LGUpPT50aGlzLmNka1ZpcnR1YWxGb3JUcmFja0J5P3RoaXMuY2RrVmlydHVhbEZvclRyYWNrQnkodCxlKTplKSksdGhpcy5fbmVlZHNVcGRhdGU9ITApfV9jaGFuZ2VEYXRhU291cmNlKHQsZSl7cmV0dXJuIHQmJnQuZGlzY29ubmVjdCh0aGlzKSx0aGlzLl9uZWVkc1VwZGF0ZT0hMCxlP2UuY29ubmVjdCh0aGlzKTpkbigpfV91cGRhdGVDb250ZXh0KCl7bGV0IHQ9dGhpcy5fZGF0YS5sZW5ndGgsZT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmxlbmd0aDtmb3IoO2UtLTspe2xldCBvPXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZ2V0KGUpO28uY29udGV4dC5pbmRleD10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0K2Usby5jb250ZXh0LmNvdW50PXQsdGhpcy5fdXBkYXRlQ29tcHV0ZWRDb250ZXh0UHJvcGVydGllcyhvLmNvbnRleHQpLG8uZGV0ZWN0Q2hhbmdlcygpfX1fYXBwbHlDaGFuZ2VzKHQpe3RoaXMuX3ZpZXdSZXBlYXRlci5hcHBseUNoYW5nZXModCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLChpLGEscik9PnRoaXMuX2dldEVtYmVkZGVkVmlld0FyZ3MoaSxyKSxpPT5pLml0ZW0pLHQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKGk9PntsZXQgYT10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldChpLmN1cnJlbnRJbmRleCk7YS5jb250ZXh0LiRpbXBsaWNpdD1pLml0ZW19KTtsZXQgZT10aGlzLl9kYXRhLmxlbmd0aCxvPXRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoO2Zvcig7by0tOyl7bGV0IGk9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQobyk7aS5jb250ZXh0LmluZGV4PXRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQrbyxpLmNvbnRleHQuY291bnQ9ZSx0aGlzLl91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKGkuY29udGV4dCl9fV91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKHQpe3QuZmlyc3Q9dC5pbmRleD09PTAsdC5sYXN0PXQuaW5kZXg9PT10LmNvdW50LTEsdC5ldmVuPXQuaW5kZXglMj09PTAsdC5vZGQ9IXQuZXZlbn1fZ2V0RW1iZWRkZWRWaWV3QXJncyh0LGUpe3JldHVybnt0ZW1wbGF0ZVJlZjp0aGlzLl90ZW1wbGF0ZSxjb250ZXh0OnskaW1wbGljaXQ6dC5pdGVtLGNka1ZpcnR1YWxGb3JPZjp0aGlzLl9jZGtWaXJ0dWFsRm9yT2YsaW5kZXg6LTEsY291bnQ6LTEsZmlyc3Q6ITEsbGFzdDohMSxvZGQ6ITEsZXZlbjohMX0saW5kZXg6ZX19fTtKbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxKbCkodihfZSksdihrZSksdihrbyksdihubCksdihKYSw0KSx2KEN0KSl9O0psLlx1MDI3NWRpcj12dCh7dHlwZTpKbCxzZWxlY3RvcnM6W1siIiwiY2RrVmlydHVhbEZvciIsIiIsImNka1ZpcnR1YWxGb3JPZiIsIiJdXSxpbnB1dHM6e2Nka1ZpcnR1YWxGb3JPZjoiY2RrVmlydHVhbEZvck9mIixjZGtWaXJ0dWFsRm9yVHJhY2tCeToiY2RrVmlydHVhbEZvclRyYWNrQnkiLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZToiY2RrVmlydHVhbEZvclRlbXBsYXRlIixjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemU6ImNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSJ9LGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6bmwsdXNlQ2xhc3M6eHB9XSldfSk7SmwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfZX0se3R5cGU6a2V9LHt0eXBlOmtvfSx7dHlwZTp4cCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W25sXX1dfSx7dHlwZTpKYSxkZWNvcmF0b3JzOlt7dHlwZTpZb31dfSx7dHlwZTpDdH1dO0psLnByb3BEZWNvcmF0b3JzPXtjZGtWaXJ0dWFsRm9yT2Y6W3t0eXBlOmR9XSxjZGtWaXJ0dWFsRm9yVHJhY2tCeTpbe3R5cGU6ZH1dLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZTpbe3R5cGU6ZH1dLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZTpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSmwsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1ZpcnR1YWxGb3JdW2Nka1ZpcnR1YWxGb3JPZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6bmwsdXNlQ2xhc3M6eHB9XX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9LHt0eXBlOmtlfSx7dHlwZTprb30se3R5cGU6eHAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltubF19XX0se3R5cGU6SmEsZGVjb3JhdG9yczpbe3R5cGU6WW99XX0se3R5cGU6Q3R9XX0se2Nka1ZpcnR1YWxGb3JPZjpbe3R5cGU6ZH1dLGNka1ZpcnR1YWxGb3JUcmFja0J5Olt7dHlwZTpkfV0sY2RrVmlydHVhbEZvclRlbXBsYXRlOlt7dHlwZTpkfV0sY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplOlt7dHlwZTpkfV19KX0pKCk7dmFyIEJpPWNsYXNze307QmkuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8QmkpfTtCaS5cdTAyNzVtb2Q9cSh7dHlwZTpCaX0pO0JpLlx1MDI3NWluaj1XKHt9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQmksW3t0eXBlOlosYXJnczpbe2V4cG9ydHM6W1JyXSxkZWNsYXJhdGlvbnM6W1JyXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChCaSx7ZGVjbGFyYXRpb25zOltScl0sZXhwb3J0czpbUnJdfSl9KSgpO3ZhciB6aT1jbGFzc3t9O3ppLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHppKX07emkuXHUwMjc1bW9kPXEoe3R5cGU6eml9KTt6aS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1NhLHdhLEJpXSxTYSxCaV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoemksW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1NhLHdhLEJpXSxleHBvcnRzOltTYSxCaSxDbCxKbCxKYV0sZGVjbGFyYXRpb25zOltDbCxKbCxKYV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoemkse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltDbCxKbCxKYV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bU2Esd2EsQmldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1NhLEJpLENsLEpsLEphXX19KX0pKCk7ZnVuY3Rpb24gJEV0KCl7dGhyb3cgRXJyb3IoIk11c3QgcHJvdmlkZSBhIHBvcnRhbCB0byBhdHRhY2giKX1mdW5jdGlvbiBUYXQoKXt0aHJvdyBFcnJvcigiSG9zdCBhbHJlYWR5IGhhcyBhIHBvcnRhbCBhdHRhY2hlZCIpfWZ1bmN0aW9uIHRrdCgpe3Rocm93IEVycm9yKCJUaGlzIFBvcnRhbE91dGxldCBoYXMgYWxyZWFkeSBiZWVuIGRpc3Bvc2VkIil9ZnVuY3Rpb24gZWt0KCl7dGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXR0YWNoIGFuIHVua25vd24gUG9ydGFsIHR5cGUuIEJhc2VQb3J0YWxPdXRsZXQgYWNjZXB0cyBlaXRoZXIgYSBDb21wb25lbnRQb3J0YWwgb3IgYSBUZW1wbGF0ZVBvcnRhbC4iKX1mdW5jdGlvbiBua3QoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggYSBwb3J0YWwgdG8gYSBudWxsIFBvcnRhbE91dGxldCIpfWZ1bmN0aW9uIG9rdCgpe3Rocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGRldGFjaCBhIHBvcnRhbCB0aGF0IGlzIG5vdCBhdHRhY2hlZCB0byBhIGhvc3QiKX12YXIgc2s9Y2xhc3N7YXR0YWNoKHQpe3JldHVybih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmKHQ9PW51bGwmJm5rdCgpLHQuaGFzQXR0YWNoZWQoKSYmVGF0KCkpLHRoaXMuX2F0dGFjaGVkSG9zdD10LHQuYXR0YWNoKHRoaXMpfWRldGFjaCgpe2xldCB0PXRoaXMuX2F0dGFjaGVkSG9zdDt0IT1udWxsPyh0aGlzLl9hdHRhY2hlZEhvc3Q9bnVsbCx0LmRldGFjaCgpKToodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJm9rdCgpfWdldCBpc0F0dGFjaGVkKCl7cmV0dXJuIHRoaXMuX2F0dGFjaGVkSG9zdCE9bnVsbH1zZXRBdHRhY2hlZEhvc3QodCl7dGhpcy5fYXR0YWNoZWRIb3N0PXR9fSxETT1jbGFzcyBleHRlbmRzIHNre2NvbnN0cnVjdG9yKHQsZSxvLGkpe3N1cGVyKCksdGhpcy5jb21wb25lbnQ9dCx0aGlzLnZpZXdDb250YWluZXJSZWY9ZSx0aGlzLmluamVjdG9yPW8sdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9aX19LCRsPWNsYXNzIGV4dGVuZHMgc2t7Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKCksdGhpcy50ZW1wbGF0ZVJlZj10LHRoaXMudmlld0NvbnRhaW5lclJlZj1lLHRoaXMuY29udGV4dD1vfWdldCBvcmlnaW4oKXtyZXR1cm4gdGhpcy50ZW1wbGF0ZVJlZi5lbGVtZW50UmVmfWF0dGFjaCh0LGU9dGhpcy5jb250ZXh0KXtyZXR1cm4gdGhpcy5jb250ZXh0PWUsc3VwZXIuYXR0YWNoKHQpfWRldGFjaCgpe3JldHVybiB0aGlzLmNvbnRleHQ9dm9pZCAwLHN1cGVyLmRldGFjaCgpfX0sVFU9Y2xhc3MgZXh0ZW5kcyBza3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZWxlbWVudD10IGluc3RhbmNlb2YgTD90Lm5hdGl2ZUVsZW1lbnQ6dH19LHR4PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLmF0dGFjaERvbVBvcnRhbD1udWxsfWhhc0F0dGFjaGVkKCl7cmV0dXJuISF0aGlzLl9hdHRhY2hlZFBvcnRhbH1hdHRhY2godCl7aWYoKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiYodHx8JEV0KCksdGhpcy5oYXNBdHRhY2hlZCgpJiZUYXQoKSx0aGlzLl9pc0Rpc3Bvc2VkJiZ0a3QoKSksdCBpbnN0YW5jZW9mIERNKXJldHVybiB0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpO2lmKHQgaW5zdGFuY2VvZiAkbClyZXR1cm4gdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpO2lmKHRoaXMuYXR0YWNoRG9tUG9ydGFsJiZ0IGluc3RhbmNlb2YgVFUpcmV0dXJuIHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5hdHRhY2hEb21Qb3J0YWwodCk7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZla3QoKX1kZXRhY2goKXt0aGlzLl9hdHRhY2hlZFBvcnRhbCYmKHRoaXMuX2F0dGFjaGVkUG9ydGFsLnNldEF0dGFjaGVkSG9zdChudWxsKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD1udWxsKSx0aGlzLl9pbnZva2VEaXNwb3NlRm4oKX1kaXNwb3NlKCl7dGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLmRldGFjaCgpLHRoaXMuX2ludm9rZURpc3Bvc2VGbigpLHRoaXMuX2lzRGlzcG9zZWQ9ITB9c2V0RGlzcG9zZUZuKHQpe3RoaXMuX2Rpc3Bvc2VGbj10fV9pbnZva2VEaXNwb3NlRm4oKXt0aGlzLl9kaXNwb3NlRm4mJih0aGlzLl9kaXNwb3NlRm4oKSx0aGlzLl9kaXNwb3NlRm49bnVsbCl9fTt2YXIgSTM9Y2xhc3MgZXh0ZW5kcyB0eHtjb25zdHJ1Y3Rvcih0LGUsbyxpLGEpe3N1cGVyKCksdGhpcy5vdXRsZXRFbGVtZW50PXQsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPWUsdGhpcy5fYXBwUmVmPW8sdGhpcy5fZGVmYXVsdEluamVjdG9yPWksdGhpcy5hdHRhY2hEb21Qb3J0YWw9cj0+e2lmKCF0aGlzLl9kb2N1bWVudCYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDYW5ub3QgYXR0YWNoIERPTSBwb3J0YWwgd2l0aG91dCBfZG9jdW1lbnQgY29uc3RydWN0b3IgcGFyYW1ldGVyIik7bGV0IHM9ci5lbGVtZW50O2lmKCFzLnBhcmVudE5vZGUmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiRE9NIHBvcnRhbCBjb250ZW50IG11c3QgYmUgYXR0YWNoZWQgdG8gYSBwYXJlbnQgbm9kZS4iKTtsZXQgbD10aGlzLl9kb2N1bWVudC5jcmVhdGVDb21tZW50KCJkb20tcG9ydGFsIik7cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsLHMpLHRoaXMub3V0bGV0RWxlbWVudC5hcHBlbmRDaGlsZChzKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD1yLHN1cGVyLnNldERpc3Bvc2VGbigoKT0+e2wucGFyZW50Tm9kZSYmbC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChzLGwpfSl9LHRoaXMuX2RvY3VtZW50PWF9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe2xldCBvPSh0LmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcnx8dGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0LmNvbXBvbmVudCksaTtyZXR1cm4gdC52aWV3Q29udGFpbmVyUmVmPyhpPXQudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQobyx0LnZpZXdDb250YWluZXJSZWYubGVuZ3RoLHQuaW5qZWN0b3J8fHQudmlld0NvbnRhaW5lclJlZi5pbmplY3RvciksdGhpcy5zZXREaXNwb3NlRm4oKCk9PmkuZGVzdHJveSgpKSk6KGk9by5jcmVhdGUodC5pbmplY3Rvcnx8dGhpcy5fZGVmYXVsdEluamVjdG9yKSx0aGlzLl9hcHBSZWYuYXR0YWNoVmlldyhpLmhvc3RWaWV3KSx0aGlzLnNldERpc3Bvc2VGbigoKT0+e3RoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KGkuaG9zdFZpZXcpLGkuZGVzdHJveSgpfSkpLHRoaXMub3V0bGV0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9nZXRDb21wb25lbnRSb290Tm9kZShpKSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCxpfWF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpe2xldCBlPXQudmlld0NvbnRhaW5lclJlZixvPWUuY3JlYXRlRW1iZWRkZWRWaWV3KHQudGVtcGxhdGVSZWYsdC5jb250ZXh0KTtyZXR1cm4gby5yb290Tm9kZXMuZm9yRWFjaChpPT50aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQoaSkpLG8uZGV0ZWN0Q2hhbmdlcygpLHRoaXMuc2V0RGlzcG9zZUZuKCgpPT57bGV0IGk9ZS5pbmRleE9mKG8pO2khPT0tMSYmZS5yZW1vdmUoaSl9KSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LG99ZGlzcG9zZSgpe3N1cGVyLmRpc3Bvc2UoKSx0aGlzLm91dGxldEVsZW1lbnQucGFyZW50Tm9kZSE9bnVsbCYmdGhpcy5vdXRsZXRFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5vdXRsZXRFbGVtZW50KX1fZ2V0Q29tcG9uZW50Um9vdE5vZGUodCl7cmV0dXJuIHQuaG9zdFZpZXcucm9vdE5vZGVzWzBdfX07dmFyIHRjPWNsYXNzIGV4dGVuZHMgJGx7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpfX07dGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dGMpKHYoa2UpLHYoX2UpKX07dGMuXHUwMjc1ZGlyPXZ0KHt0eXBlOnRjLHNlbGVjdG9yczpbWyIiLCJjZGtQb3J0YWwiLCIiXV0sZXhwb3J0QXM6WyJjZGtQb3J0YWwiXSxmZWF0dXJlczpbYWVdfSk7dGMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprZX0se3R5cGU6X2V9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModGMsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbF0iLGV4cG9ydEFzOiJjZGtQb3J0YWwifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTprZX0se3R5cGU6X2V9XX0sbnVsbCl9KSgpO3ZhciB2cD1jbGFzcyBleHRlbmRzIHRje307dnAuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1Gbih2cCkpKShlfHx2cCl9fSgpO3ZwLlx1MDI3NWRpcj12dCh7dHlwZTp2cCxzZWxlY3RvcnM6W1siIiwiY2RrLXBvcnRhbCIsIiJdLFsiIiwicG9ydGFsIiwiIl1dLGV4cG9ydEFzOlsiY2RrUG9ydGFsIl0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTp0Yyx1c2VFeGlzdGluZzp2cH1dKSxhZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModnAsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nkay1wb3J0YWxdLCBbcG9ydGFsXSIsZXhwb3J0QXM6ImNka1BvcnRhbCIscHJvdmlkZXJzOlt7cHJvdmlkZTp0Yyx1c2VFeGlzdGluZzp2cH1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgX2k9Y2xhc3MgZXh0ZW5kcyB0eHtjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIoKSx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9dCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPWUsdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLmF0dGFjaGVkPW5ldyAkLHRoaXMuYXR0YWNoRG9tUG9ydGFsPWk9PntpZighdGhpcy5fZG9jdW1lbnQmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQ2Fubm90IGF0dGFjaCBET00gcG9ydGFsIHdpdGhvdXQgX2RvY3VtZW50IGNvbnN0cnVjdG9yIHBhcmFtZXRlciIpO2xldCBhPWkuZWxlbWVudDtpZighYS5wYXJlbnROb2RlJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkRPTSBwb3J0YWwgY29udGVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgcGFyZW50IG5vZGUuIik7bGV0IHI9dGhpcy5fZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiZG9tLXBvcnRhbCIpO2kuc2V0QXR0YWNoZWRIb3N0KHRoaXMpLGEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixhKSx0aGlzLl9nZXRSb290Tm9kZSgpLmFwcGVuZENoaWxkKGEpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPWksc3VwZXIuc2V0RGlzcG9zZUZuKCgpPT57ci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGEscil9KX0sdGhpcy5fZG9jdW1lbnQ9b31nZXQgcG9ydGFsKCl7cmV0dXJuIHRoaXMuX2F0dGFjaGVkUG9ydGFsfXNldCBwb3J0YWwodCl7dGhpcy5oYXNBdHRhY2hlZCgpJiYhdCYmIXRoaXMuX2lzSW5pdGlhbGl6ZWR8fCh0aGlzLmhhc0F0dGFjaGVkKCkmJnN1cGVyLmRldGFjaCgpLHQmJnN1cGVyLmF0dGFjaCh0KSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10KX1nZXQgYXR0YWNoZWRSZWYoKXtyZXR1cm4gdGhpcy5fYXR0YWNoZWRSZWZ9bmdPbkluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwfW5nT25EZXN0cm95KCl7c3VwZXIuZGlzcG9zZSgpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPW51bGwsdGhpcy5fYXR0YWNoZWRSZWY9bnVsbH1hdHRhY2hDb21wb25lbnRQb3J0YWwodCl7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyk7bGV0IGU9dC52aWV3Q29udGFpbmVyUmVmIT1udWxsP3Qudmlld0NvbnRhaW5lclJlZjp0aGlzLl92aWV3Q29udGFpbmVyUmVmLGk9KHQuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfHx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQuY29tcG9uZW50KSxhPWUuY3JlYXRlQ29tcG9uZW50KGksZS5sZW5ndGgsdC5pbmplY3Rvcnx8ZS5pbmplY3Rvcik7cmV0dXJuIGUhPT10aGlzLl92aWV3Q29udGFpbmVyUmVmJiZ0aGlzLl9nZXRSb290Tm9kZSgpLmFwcGVuZENoaWxkKGEuaG9zdFZpZXcucm9vdE5vZGVzWzBdKSxzdXBlci5zZXREaXNwb3NlRm4oKCk9PmEuZGVzdHJveSgpKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuX2F0dGFjaGVkUmVmPWEsdGhpcy5hdHRhY2hlZC5lbWl0KGEpLGF9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyk7bGV0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodC50ZW1wbGF0ZVJlZix0LmNvbnRleHQpO3JldHVybiBzdXBlci5zZXREaXNwb3NlRm4oKCk9PnRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLl9hdHRhY2hlZFJlZj1lLHRoaXMuYXR0YWNoZWQuZW1pdChlKSxlfV9nZXRSb290Tm9kZSgpe2xldCB0PXRoaXMuX3ZpZXdDb250YWluZXJSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50O3JldHVybiB0Lm5vZGVUeXBlPT09dC5FTEVNRU5UX05PREU/dDp0LnBhcmVudE5vZGV9fTtfaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxfaSkodihfbyksdihfZSksdihfdCkpfTtfaS5cdTAyNzVkaXI9dnQoe3R5cGU6X2ksc2VsZWN0b3JzOltbIiIsImNka1BvcnRhbE91dGxldCIsIiJdXSxpbnB1dHM6e3BvcnRhbDpbImNka1BvcnRhbE91dGxldCIsInBvcnRhbCJdfSxvdXRwdXRzOnthdHRhY2hlZDoiYXR0YWNoZWQifSxleHBvcnRBczpbImNka1BvcnRhbE91dGxldCJdLGZlYXR1cmVzOlthZV19KTtfaS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOl9vfSx7dHlwZTpfZX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XTtfaS5wcm9wRGVjb3JhdG9ycz17YXR0YWNoZWQ6W3t0eXBlOkJ9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9pLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltjZGtQb3J0YWxPdXRsZXRdIixleHBvcnRBczoiY2RrUG9ydGFsT3V0bGV0IixpbnB1dHM6WyJwb3J0YWw6IGNka1BvcnRhbE91dGxldCJdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpfb30se3R5cGU6X2V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LHthdHRhY2hlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciB3cD1jbGFzcyBleHRlbmRzIF9pe307d3AuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1Gbih3cCkpKShlfHx3cCl9fSgpO3dwLlx1MDI3NWRpcj12dCh7dHlwZTp3cCxzZWxlY3RvcnM6W1siIiwiY2RrUG9ydGFsSG9zdCIsIiJdLFsiIiwicG9ydGFsSG9zdCIsIiJdXSxpbnB1dHM6e3BvcnRhbDpbImNka1BvcnRhbEhvc3QiLCJwb3J0YWwiXX0sZXhwb3J0QXM6WyJjZGtQb3J0YWxIb3N0Il0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpfaSx1c2VFeGlzdGluZzp3cH1dKSxhZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMod3AsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka1BvcnRhbEhvc3RdLCBbcG9ydGFsSG9zdF0iLGV4cG9ydEFzOiJjZGtQb3J0YWxIb3N0IixpbnB1dHM6WyJwb3J0YWw6IGNka1BvcnRhbEhvc3QiXSxwcm92aWRlcnM6W3twcm92aWRlOl9pLHVzZUV4aXN0aW5nOndwfV19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciAkYT1jbGFzc3t9OyRhLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fCRhKX07JGEuXHUwMjc1bW9kPXEoe3R5cGU6JGF9KTskYS5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKCRhLFt7dHlwZTpaLGFyZ3M6W3tleHBvcnRzOlt0YyxfaSx2cCx3cF0sZGVjbGFyYXRpb25zOlt0YyxfaSx2cCx3cF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoJGEse2RlY2xhcmF0aW9uczpbdGMsX2ksdnAsd3BdLGV4cG9ydHM6W3RjLF9pLHZwLHdwXX0pfSkoKTt2YXIgQWF0PWVJKCksRFU9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl92aWV3cG9ydFJ1bGVyPXQsdGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzPXt0b3A6IiIsbGVmdDoiIn0sdGhpcy5faXNFbmFibGVkPSExLHRoaXMuX2RvY3VtZW50PWV9YXR0YWNoKCl7fWVuYWJsZSgpe2lmKHRoaXMuX2NhbkJlRW5hYmxlZCgpKXtsZXQgdD10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMubGVmdD10LnN0eWxlLmxlZnR8fCIiLHRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy50b3A9dC5zdHlsZS50b3B8fCIiLHQuc3R5bGUubGVmdD1jcygtdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi5sZWZ0KSx0LnN0eWxlLnRvcD1jcygtdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi50b3ApLHQuY2xhc3NMaXN0LmFkZCgiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpLHRoaXMuX2lzRW5hYmxlZD0hMH19ZGlzYWJsZSgpe2lmKHRoaXMuX2lzRW5hYmxlZCl7bGV0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9dGhpcy5fZG9jdW1lbnQuYm9keSxvPXQuc3R5bGUsaT1lLnN0eWxlLGE9by5zY3JvbGxCZWhhdmlvcnx8IiIscj1pLnNjcm9sbEJlaGF2aW9yfHwiIjt0aGlzLl9pc0VuYWJsZWQ9ITEsby5sZWZ0PXRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy5sZWZ0LG8udG9wPXRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy50b3AsdC5jbGFzc0xpc3QucmVtb3ZlKCJjZGstZ2xvYmFsLXNjcm9sbGJsb2NrIiksQWF0JiYoby5zY3JvbGxCZWhhdmlvcj1pLnNjcm9sbEJlaGF2aW9yPSJhdXRvIiksd2luZG93LnNjcm9sbCh0aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uLmxlZnQsdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbi50b3ApLEFhdCYmKG8uc2Nyb2xsQmVoYXZpb3I9YSxpLnNjcm9sbEJlaGF2aW9yPXIpfX1fY2FuQmVFbmFibGVkKCl7aWYodGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiY2RrLWdsb2JhbC1zY3JvbGxibG9jayIpfHx0aGlzLl9pc0VuYWJsZWQpcmV0dXJuITE7bGV0IGU9dGhpcy5fZG9jdW1lbnQuYm9keSxvPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTaXplKCk7cmV0dXJuIGUuc2Nyb2xsSGVpZ2h0Pm8uaGVpZ2h0fHxlLnNjcm9sbFdpZHRoPm8ud2lkdGh9fTtmdW5jdGlvbiBWYXQoKXtyZXR1cm4gRXJyb3IoIlNjcm9sbCBzdHJhdGVneSBoYXMgYWxyZWFkeSBiZWVuIGF0dGFjaGVkLiIpfXZhciBJVT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fdmlld3BvcnRSdWxlcj1vLHRoaXMuX2NvbmZpZz1pLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsLHRoaXMuX2RldGFjaD0oKT0+e3RoaXMuZGlzYWJsZSgpLHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSYmdGhpcy5fbmdab25lLnJ1bigoKT0+dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSl9fWF0dGFjaCh0KXtpZih0aGlzLl9vdmVybGF5UmVmJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgVmF0KCk7dGhpcy5fb3ZlcmxheVJlZj10fWVuYWJsZSgpe2lmKHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbilyZXR1cm47bGV0IHQ9dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5zY3JvbGxlZCgwKTt0aGlzLl9jb25maWcmJnRoaXMuX2NvbmZpZy50aHJlc2hvbGQmJnRoaXMuX2NvbmZpZy50aHJlc2hvbGQ+MT8odGhpcy5faW5pdGlhbFNjcm9sbFBvc2l0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLnRvcCx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dC5zdWJzY3JpYmUoKCk9PntsZXQgZT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKS50b3A7TWF0aC5hYnMoZS10aGlzLl9pbml0aWFsU2Nyb2xsUG9zaXRpb24pPnRoaXMuX2NvbmZpZy50aHJlc2hvbGQ/dGhpcy5fZGV0YWNoKCk6dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfSkpOnRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj10LnN1YnNjcmliZSh0aGlzLl9kZXRhY2gpfWRpc2FibGUoKXt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24mJih0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbCl9ZGV0YWNoKCl7dGhpcy5kaXNhYmxlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsfX07dmFyIENJPWNsYXNze2VuYWJsZSgpe31kaXNhYmxlKCl7fWF0dGFjaCgpe319O2Z1bmN0aW9uIHpVKG4sdCl7cmV0dXJuIHQuc29tZShlPT57bGV0IG89bi5ib3R0b208ZS50b3AsaT1uLnRvcD5lLmJvdHRvbSxhPW4ucmlnaHQ8ZS5sZWZ0LHI9bi5sZWZ0PmUucmlnaHQ7cmV0dXJuIG98fGl8fGF8fHJ9KX1mdW5jdGlvbiBEYXQobix0KXtyZXR1cm4gdC5zb21lKGU9PntsZXQgbz1uLnRvcDxlLnRvcCxpPW4uYm90dG9tPmUuYm90dG9tLGE9bi5sZWZ0PGUubGVmdCxyPW4ucmlnaHQ+ZS5yaWdodDtyZXR1cm4gb3x8aXx8YXx8cn0pfXZhciBNUD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fdmlld3BvcnRSdWxlcj1lLHRoaXMuX25nWm9uZT1vLHRoaXMuX2NvbmZpZz1pLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsfWF0dGFjaCh0KXtpZih0aGlzLl9vdmVybGF5UmVmJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgVmF0KCk7dGhpcy5fb3ZlcmxheVJlZj10fWVuYWJsZSgpe2lmKCF0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb24pe2xldCB0PXRoaXMuX2NvbmZpZz90aGlzLl9jb25maWcuc2Nyb2xsVGhyb3R0bGU6MDt0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlci5zY3JvbGxlZCh0KS5zdWJzY3JpYmUoKCk9PntpZih0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5fY29uZmlnJiZ0aGlzLl9jb25maWcuYXV0b0Nsb3NlKXtsZXQgZT10aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt3aWR0aDpvLGhlaWdodDppfT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpO3pVKGUsW3t3aWR0aDpvLGhlaWdodDppLGJvdHRvbTppLHJpZ2h0Om8sdG9wOjAsbGVmdDowfV0pJiYodGhpcy5kaXNhYmxlKCksdGhpcy5fbmdab25lLnJ1bigoKT0+dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSkpfX0pfX1kaXNhYmxlKCl7dGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uJiYodGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGwpfWRldGFjaCgpe3RoaXMuZGlzYWJsZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbH19O3ZhciBIXz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fdmlld3BvcnRSdWxlcj1lLHRoaXMuX25nWm9uZT1vLHRoaXMubm9vcD0oKT0+bmV3IENJLHRoaXMuY2xvc2U9YT0+bmV3IElVKHRoaXMuX3Njcm9sbERpc3BhdGNoZXIsdGhpcy5fbmdab25lLHRoaXMuX3ZpZXdwb3J0UnVsZXIsYSksdGhpcy5ibG9jaz0oKT0+bmV3IERVKHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZG9jdW1lbnQpLHRoaXMucmVwb3NpdGlvbj1hPT5uZXcgTVAodGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcix0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX25nWm9uZSxhKSx0aGlzLl9kb2N1bWVudD1pfX07SF8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SF8pKEkoUWkpLEkoWm4pLEkoQ3QpLEkoX3QpKX07SF8uXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgSF8oSShRaSksSShabiksSShDdCksSShfdCkpfSx0b2tlbjpIXyxwcm92aWRlZEluOiJyb290In0pO0hfLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UWl9LHt0eXBlOlpufSx7dHlwZTpDdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSF8sW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UWl9LHt0eXBlOlpufSx7dHlwZTpDdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO3ZhciBWXz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnNjcm9sbFN0cmF0ZWd5PW5ldyBDSSx0aGlzLnBhbmVsQ2xhc3M9IiIsdGhpcy5oYXNCYWNrZHJvcD0hMSx0aGlzLmJhY2tkcm9wQ2xhc3M9ImNkay1vdmVybGF5LWRhcmstYmFja2Ryb3AiLHRoaXMuZGlzcG9zZU9uTmF2aWdhdGlvbj0hMSx0KXtsZXQgZT1PYmplY3Qua2V5cyh0KTtmb3IobGV0IG8gb2YgZSl0W29dIT09dm9pZCAwJiYodGhpc1tvXT10W29dKX19fTt2YXIgTUk9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhKXt0aGlzLm9mZnNldFg9byx0aGlzLm9mZnNldFk9aSx0aGlzLnBhbmVsQ2xhc3M9YSx0aGlzLm9yaWdpblg9dC5vcmlnaW5YLHRoaXMub3JpZ2luWT10Lm9yaWdpblksdGhpcy5vdmVybGF5WD1lLm92ZXJsYXlYLHRoaXMub3ZlcmxheVk9ZS5vdmVybGF5WX19LEhVPWNsYXNze30sYkk9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNvbm5lY3Rpb25QYWlyPXQsdGhpcy5zY3JvbGxhYmxlVmlld1Byb3BlcnRpZXM9ZX19O2JJLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TUl9LHt0eXBlOkhVLGRlY29yYXRvcnM6W3t0eXBlOkh9XX1dO2Z1bmN0aW9uIElhdChuLHQpe2lmKHQhPT0idG9wIiYmdCE9PSJib3R0b20iJiZ0IT09ImNlbnRlciIpdGhyb3cgRXJyb3IoYENvbm5lY3RlZFBvc2l0aW9uOiBJbnZhbGlkICR7bn0gIiR7dH0iLiBFeHBlY3RlZCAidG9wIiwgImJvdHRvbSIgb3IgImNlbnRlciIuYCl9ZnVuY3Rpb24gemF0KG4sdCl7aWYodCE9PSJzdGFydCImJnQhPT0iZW5kIiYmdCE9PSJjZW50ZXIiKXRocm93IEVycm9yKGBDb25uZWN0ZWRQb3NpdGlvbjogSW52YWxpZCAke259ICIke3R9Ii4gRXhwZWN0ZWQgInN0YXJ0IiwgImVuZCIgb3IgImNlbnRlciIuYCl9dmFyIElNPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2F0dGFjaGVkT3ZlcmxheXM9W10sdGhpcy5fZG9jdW1lbnQ9dH1uZ09uRGVzdHJveSgpe3RoaXMuZGV0YWNoKCl9YWRkKHQpe3RoaXMucmVtb3ZlKHQpLHRoaXMuX2F0dGFjaGVkT3ZlcmxheXMucHVzaCh0KX1yZW1vdmUodCl7bGV0IGU9dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5pbmRleE9mKHQpO2U+LTEmJnRoaXMuX2F0dGFjaGVkT3ZlcmxheXMuc3BsaWNlKGUsMSksdGhpcy5fYXR0YWNoZWRPdmVybGF5cy5sZW5ndGg9PT0wJiZ0aGlzLmRldGFjaCgpfX07SU0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SU0pKEkoX3QpKX07SU0uXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgSU0oSShfdCkpfSx0b2tlbjpJTSxwcm92aWRlZEluOiJyb290In0pO0lNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSU0sW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO3ZhciBGXz1jbGFzcyBleHRlbmRzIElNe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX2tleWRvd25MaXN0ZW5lcj1lPT57bGV0IG89dGhpcy5fYXR0YWNoZWRPdmVybGF5cztmb3IobGV0IGk9by5sZW5ndGgtMTtpPi0xO2ktLSlpZihvW2ldLl9rZXlkb3duRXZlbnRzLm9ic2VydmVycy5sZW5ndGg+MCl7b1tpXS5fa2V5ZG93bkV2ZW50cy5uZXh0KGUpO2JyZWFrfX19YWRkKHQpe3N1cGVyLmFkZCh0KSx0aGlzLl9pc0F0dGFjaGVkfHwodGhpcy5fZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9rZXlkb3duTGlzdGVuZXIpLHRoaXMuX2lzQXR0YWNoZWQ9ITApfWRldGFjaCgpe3RoaXMuX2lzQXR0YWNoZWQmJih0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX2tleWRvd25MaXN0ZW5lciksdGhpcy5faXNBdHRhY2hlZD0hMSl9fTtGXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxGXykoSShfdCkpfTtGXy5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBGXyhJKF90KSl9LHRva2VuOkZfLHByb3ZpZGVkSW46InJvb3QifSk7Rl8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhGXyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dfSxudWxsKX0pKCk7dmFyIExfPWNsYXNzIGV4dGVuZHMgSU17Y29uc3RydWN0b3IodCxlKXtzdXBlcih0KSx0aGlzLl9wbGF0Zm9ybT1lLHRoaXMuX2N1cnNvclN0eWxlSXNTZXQ9ITEsdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lcj1vPT57dGhpcy5fcG9pbnRlckRvd25FdmVudFRhcmdldD1STShvKX0sdGhpcy5fY2xpY2tMaXN0ZW5lcj1vPT57bGV0IGk9Uk0obyksYT1vLnR5cGU9PT0iY2xpY2siJiZ0aGlzLl9wb2ludGVyRG93bkV2ZW50VGFyZ2V0P3RoaXMuX3BvaW50ZXJEb3duRXZlbnRUYXJnZXQ6aTt0aGlzLl9wb2ludGVyRG93bkV2ZW50VGFyZ2V0PW51bGw7bGV0IHI9dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5zbGljZSgpO2ZvcihsZXQgcz1yLmxlbmd0aC0xO3M+LTE7cy0tKXtsZXQgbD1yW3NdO2lmKCEobC5fb3V0c2lkZVBvaW50ZXJFdmVudHMub2JzZXJ2ZXJzLmxlbmd0aDwxfHwhbC5oYXNBdHRhY2hlZCgpKSl7aWYobC5vdmVybGF5RWxlbWVudC5jb250YWlucyhpKXx8bC5vdmVybGF5RWxlbWVudC5jb250YWlucyhhKSlicmVhaztsLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5uZXh0KG8pfX19fWFkZCh0KXtpZihzdXBlci5hZGQodCksIXRoaXMuX2lzQXR0YWNoZWQpe2xldCBlPXRoaXMuX2RvY3VtZW50LmJvZHk7ZS5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lciwhMCksZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksZS5hZGRFdmVudExpc3RlbmVyKCJhdXhjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksZS5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdGhpcy5fcGxhdGZvcm0uSU9TJiYhdGhpcy5fY3Vyc29yU3R5bGVJc1NldCYmKHRoaXMuX2N1cnNvck9yaWdpbmFsVmFsdWU9ZS5zdHlsZS5jdXJzb3IsZS5zdHlsZS5jdXJzb3I9InBvaW50ZXIiLHRoaXMuX2N1cnNvclN0eWxlSXNTZXQ9ITApLHRoaXMuX2lzQXR0YWNoZWQ9ITB9fWRldGFjaCgpe2lmKHRoaXMuX2lzQXR0YWNoZWQpe2xldCB0PXRoaXMuX2RvY3VtZW50LmJvZHk7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsdGhpcy5fcG9pbnRlckRvd25MaXN0ZW5lciwhMCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJhdXhjbGljayIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsdGhpcy5fY2xpY2tMaXN0ZW5lciwhMCksdGhpcy5fcGxhdGZvcm0uSU9TJiZ0aGlzLl9jdXJzb3JTdHlsZUlzU2V0JiYodC5zdHlsZS5jdXJzb3I9dGhpcy5fY3Vyc29yT3JpZ2luYWxWYWx1ZSx0aGlzLl9jdXJzb3JTdHlsZUlzU2V0PSExKSx0aGlzLl9pc0F0dGFjaGVkPSExfX19O0xfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fExfKShJKF90KSxJKFZ0KSl9O0xfLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IExfKEkoX3QpLEkoVnQpKX0sdG9rZW46TF8scHJvdmlkZWRJbjoicm9vdCJ9KTtMXy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpWdH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhMXyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6VnR9XX0sbnVsbCl9KSgpO3ZhciB0cj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BsYXRmb3JtPWUsdGhpcy5fZG9jdW1lbnQ9dH1uZ09uRGVzdHJveSgpe2xldCB0PXRoaXMuX2NvbnRhaW5lckVsZW1lbnQ7dCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9Z2V0Q29udGFpbmVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9jb250YWluZXJFbGVtZW50fHx0aGlzLl9jcmVhdGVDb250YWluZXIoKSx0aGlzLl9jb250YWluZXJFbGVtZW50fV9jcmVhdGVDb250YWluZXIoKXtsZXQgdD0iY2RrLW92ZXJsYXktY29udGFpbmVyIjtpZih0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fEpFKCkpe2xldCBvPXRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3R9W3BsYXRmb3JtPSJzZXJ2ZXIiXSwgLiR7dH1bcGxhdGZvcm09InRlc3QiXWApO2ZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKW9baV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvW2ldKX1sZXQgZT10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTGlzdC5hZGQodCksSkUoKT9lLnNldEF0dHJpYnV0ZSgicGxhdGZvcm0iLCJ0ZXN0Iik6dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHxlLnNldEF0dHJpYnV0ZSgicGxhdGZvcm0iLCJzZXJ2ZXIiKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpLHRoaXMuX2NvbnRhaW5lckVsZW1lbnQ9ZX19O3RyLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHRyKShJKF90KSxJKFZ0KSl9O3RyLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRyKEkoX3QpLEkoVnQpKX0sdG9rZW46dHIscHJvdmlkZWRJbjoicm9vdCJ9KTt0ci5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpWdH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh0cixbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6VnR9XX0sbnVsbCl9KSgpO3ZhciBGVT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzLGwsYyl7dGhpcy5fcG9ydGFsT3V0bGV0PXQsdGhpcy5faG9zdD1lLHRoaXMuX3BhbmU9byx0aGlzLl9jb25maWc9aSx0aGlzLl9uZ1pvbmU9YSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXI9cix0aGlzLl9kb2N1bWVudD1zLHRoaXMuX2xvY2F0aW9uPWwsdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcj1jLHRoaXMuX2JhY2tkcm9wRWxlbWVudD1udWxsLHRoaXMuX2JhY2tkcm9wQ2xpY2s9bmV3IEp0LHRoaXMuX2F0dGFjaG1lbnRzPW5ldyBKdCx0aGlzLl9kZXRhY2htZW50cz1uZXcgSnQsdGhpcy5fbG9jYXRpb25DaGFuZ2VzPUVvLkVNUFRZLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyPW09PnRoaXMuX2JhY2tkcm9wQ2xpY2submV4dChtKSx0aGlzLl9rZXlkb3duRXZlbnRzPW5ldyBKdCx0aGlzLl9vdXRzaWRlUG9pbnRlckV2ZW50cz1uZXcgSnQsaS5zY3JvbGxTdHJhdGVneSYmKHRoaXMuX3Njcm9sbFN0cmF0ZWd5PWkuc2Nyb2xsU3RyYXRlZ3ksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuYXR0YWNoKHRoaXMpKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5PWkucG9zaXRpb25TdHJhdGVneX1nZXQgb3ZlcmxheUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fcGFuZX1nZXQgYmFja2Ryb3BFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2JhY2tkcm9wRWxlbWVudH1nZXQgaG9zdEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5faG9zdH1hdHRhY2godCl7bGV0IGU9dGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaCh0KTtyZXR1cm4hdGhpcy5faG9zdC5wYXJlbnRFbGVtZW50JiZ0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQmJnRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLl9ob3N0KSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmF0dGFjaCh0aGlzKSx0aGlzLl91cGRhdGVTdGFja2luZ09yZGVyKCksdGhpcy5fdXBkYXRlRWxlbWVudFNpemUoKSx0aGlzLl91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kmJnRoaXMuX3Njcm9sbFN0cmF0ZWd5LmVuYWJsZSgpLHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKENuKDEpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmhhc0F0dGFjaGVkKCkmJnRoaXMudXBkYXRlUG9zaXRpb24oKX0pLHRoaXMuX3RvZ2dsZVBvaW50ZXJFdmVudHMoITApLHRoaXMuX2NvbmZpZy5oYXNCYWNrZHJvcCYmdGhpcy5fYXR0YWNoQmFja2Ryb3AoKSx0aGlzLl9jb25maWcucGFuZWxDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzLCEwKSx0aGlzLl9hdHRhY2htZW50cy5uZXh0KCksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLmFkZCh0aGlzKSx0aGlzLl9jb25maWcuZGlzcG9zZU9uTmF2aWdhdGlvbiYmKHRoaXMuX2xvY2F0aW9uQ2hhbmdlcz10aGlzLl9sb2NhdGlvbi5zdWJzY3JpYmUoKCk9PnRoaXMuZGlzcG9zZSgpKSksdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5hZGQodGhpcyksZX1kZXRhY2goKXtpZighdGhpcy5oYXNBdHRhY2hlZCgpKXJldHVybjt0aGlzLmRldGFjaEJhY2tkcm9wKCksdGhpcy5fdG9nZ2xlUG9pbnRlckV2ZW50cyghMSksdGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kZXRhY2gmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGV0YWNoKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kmJnRoaXMuX3Njcm9sbFN0cmF0ZWd5LmRpc2FibGUoKTtsZXQgdD10aGlzLl9wb3J0YWxPdXRsZXQuZGV0YWNoKCk7cmV0dXJuIHRoaXMuX2RldGFjaG1lbnRzLm5leHQoKSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHRoaXMuX2RldGFjaENvbnRlbnRXaGVuU3RhYmxlKCksdGhpcy5fbG9jYXRpb25DaGFuZ2VzLnVuc3Vic2NyaWJlKCksdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdH1kaXNwb3NlKCl7bGV0IHQ9dGhpcy5oYXNBdHRhY2hlZCgpO3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpLHRoaXMuX2Rpc3Bvc2VTY3JvbGxTdHJhdGVneSgpLHRoaXMuX2Rpc3Bvc2VCYWNrZHJvcCh0aGlzLl9iYWNrZHJvcEVsZW1lbnQpLHRoaXMuX2xvY2F0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdGhpcy5fcG9ydGFsT3V0bGV0LmRpc3Bvc2UoKSx0aGlzLl9hdHRhY2htZW50cy5jb21wbGV0ZSgpLHRoaXMuX2JhY2tkcm9wQ2xpY2suY29tcGxldGUoKSx0aGlzLl9rZXlkb3duRXZlbnRzLmNvbXBsZXRlKCksdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHMuY29tcGxldGUoKSx0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLnJlbW92ZSh0aGlzKSx0aGlzLl9ob3N0JiZ0aGlzLl9ob3N0LnBhcmVudE5vZGUmJih0aGlzLl9ob3N0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5faG9zdCksdGhpcy5faG9zdD1udWxsKSx0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQ9dGhpcy5fcGFuZT1udWxsLHQmJnRoaXMuX2RldGFjaG1lbnRzLm5leHQoKSx0aGlzLl9kZXRhY2htZW50cy5jb21wbGV0ZSgpfWhhc0F0dGFjaGVkKCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpfWJhY2tkcm9wQ2xpY2soKXtyZXR1cm4gdGhpcy5fYmFja2Ryb3BDbGlja31hdHRhY2htZW50cygpe3JldHVybiB0aGlzLl9hdHRhY2htZW50c31kZXRhY2htZW50cygpe3JldHVybiB0aGlzLl9kZXRhY2htZW50c31rZXlkb3duRXZlbnRzKCl7cmV0dXJuIHRoaXMuX2tleWRvd25FdmVudHN9b3V0c2lkZVBvaW50ZXJFdmVudHMoKXtyZXR1cm4gdGhpcy5fb3V0c2lkZVBvaW50ZXJFdmVudHN9Z2V0Q29uZmlnKCl7cmV0dXJuIHRoaXMuX2NvbmZpZ311cGRhdGVQb3NpdGlvbigpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuYXBwbHkoKX11cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHQpe3QhPT10aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiYodGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kaXNwb3NlKCksdGhpcy5fcG9zaXRpb25TdHJhdGVneT10LHRoaXMuaGFzQXR0YWNoZWQoKSYmKHQuYXR0YWNoKHRoaXMpLHRoaXMudXBkYXRlUG9zaXRpb24oKSkpfXVwZGF0ZVNpemUodCl7dGhpcy5fY29uZmlnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9jb25maWcpLHQpLHRoaXMuX3VwZGF0ZUVsZW1lbnRTaXplKCl9c2V0RGlyZWN0aW9uKHQpe3RoaXMuX2NvbmZpZz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fY29uZmlnKSx7ZGlyZWN0aW9uOnR9KSx0aGlzLl91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCl9YWRkUGFuZWxDbGFzcyh0KXt0aGlzLl9wYW5lJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdCwhMCl9cmVtb3ZlUGFuZWxDbGFzcyh0KXt0aGlzLl9wYW5lJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdCwhMSl9Z2V0RGlyZWN0aW9uKCl7bGV0IHQ9dGhpcy5fY29uZmlnLmRpcmVjdGlvbjtyZXR1cm4gdD90eXBlb2YgdD09InN0cmluZyI/dDp0LnZhbHVlOiJsdHIifXVwZGF0ZVNjcm9sbFN0cmF0ZWd5KHQpe3QhPT10aGlzLl9zY3JvbGxTdHJhdGVneSYmKHRoaXMuX2Rpc3Bvc2VTY3JvbGxTdHJhdGVneSgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXQsdGhpcy5oYXNBdHRhY2hlZCgpJiYodC5hdHRhY2godGhpcyksdC5lbmFibGUoKSkpfV91cGRhdGVFbGVtZW50RGlyZWN0aW9uKCl7dGhpcy5faG9zdC5zZXRBdHRyaWJ1dGUoImRpciIsdGhpcy5nZXREaXJlY3Rpb24oKSl9X3VwZGF0ZUVsZW1lbnRTaXplKCl7aWYoIXRoaXMuX3BhbmUpcmV0dXJuO2xldCB0PXRoaXMuX3BhbmUuc3R5bGU7dC53aWR0aD1jcyh0aGlzLl9jb25maWcud2lkdGgpLHQuaGVpZ2h0PWNzKHRoaXMuX2NvbmZpZy5oZWlnaHQpLHQubWluV2lkdGg9Y3ModGhpcy5fY29uZmlnLm1pbldpZHRoKSx0Lm1pbkhlaWdodD1jcyh0aGlzLl9jb25maWcubWluSGVpZ2h0KSx0Lm1heFdpZHRoPWNzKHRoaXMuX2NvbmZpZy5tYXhXaWR0aCksdC5tYXhIZWlnaHQ9Y3ModGhpcy5fY29uZmlnLm1heEhlaWdodCl9X3RvZ2dsZVBvaW50ZXJFdmVudHModCl7dGhpcy5fcGFuZS5zdHlsZS5wb2ludGVyRXZlbnRzPXQ/IiI6Im5vbmUifV9hdHRhY2hCYWNrZHJvcCgpe2xldCB0PSJjZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIjt0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNkay1vdmVybGF5LWJhY2tkcm9wIiksdGhpcy5fY29uZmlnLmJhY2tkcm9wQ2xhc3MmJnRoaXMuX3RvZ2dsZUNsYXNzZXModGhpcy5fYmFja2Ryb3BFbGVtZW50LHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzLCEwKSx0aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2JhY2tkcm9wRWxlbWVudCx0aGlzLl9ob3N0KSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyKSx0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIT0idW5kZWZpbmVkIj90aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLl9iYWNrZHJvcEVsZW1lbnQmJnRoaXMuX2JhY2tkcm9wRWxlbWVudC5jbGFzc0xpc3QuYWRkKHQpfSl9KTp0aGlzLl9iYWNrZHJvcEVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0KX1fdXBkYXRlU3RhY2tpbmdPcmRlcigpe3RoaXMuX2hvc3QubmV4dFNpYmxpbmcmJnRoaXMuX2hvc3QucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzLl9ob3N0KX1kZXRhY2hCYWNrZHJvcCgpe2xldCB0PXRoaXMuX2JhY2tkcm9wRWxlbWVudDtpZighdClyZXR1cm47bGV0IGUsbz0oKT0+e3QmJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9iYWNrZHJvcENsaWNrSGFuZGxlciksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixvKSx0aGlzLl9kaXNwb3NlQmFja2Ryb3AodCkpLHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHQsdGhpcy5fY29uZmlnLmJhY2tkcm9wQ2xhc3MsITEpLGNsZWFyVGltZW91dChlKX07dC5jbGFzc0xpc3QucmVtb3ZlKCJjZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIiksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIixvKX0pLHQuc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsZT10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PnNldFRpbWVvdXQobyw1MDApKX1fdG9nZ2xlQ2xhc3Nlcyh0LGUsbyl7bGV0IGk9dC5jbGFzc0xpc3Q7dzMoZSkuZm9yRWFjaChhPT57YSYmKG8/aS5hZGQoYSk6aS5yZW1vdmUoYSkpfSl9X2RldGFjaENvbnRlbnRXaGVuU3RhYmxlKCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57bGV0IHQ9dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoUGUoeW4odGhpcy5fYXR0YWNobWVudHMsdGhpcy5fZGV0YWNobWVudHMpKSkuc3Vic2NyaWJlKCgpPT57KCF0aGlzLl9wYW5lfHwhdGhpcy5faG9zdHx8dGhpcy5fcGFuZS5jaGlsZHJlbi5sZW5ndGg9PT0wKSYmKHRoaXMuX3BhbmUmJnRoaXMuX2NvbmZpZy5wYW5lbENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdGhpcy5fY29uZmlnLnBhbmVsQ2xhc3MsITEpLHRoaXMuX2hvc3QmJnRoaXMuX2hvc3QucGFyZW50RWxlbWVudCYmKHRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudD10aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQsdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuX2hvc3QpKSx0LnVuc3Vic2NyaWJlKCkpfSl9KX1fZGlzcG9zZVNjcm9sbFN0cmF0ZWd5KCl7bGV0IHQ9dGhpcy5fc2Nyb2xsU3RyYXRlZ3k7dCYmKHQuZGlzYWJsZSgpLHQuZGV0YWNoJiZ0LmRldGFjaCgpKX1fZGlzcG9zZUJhY2tkcm9wKHQpe3QmJih0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9PT10JiYodGhpcy5fYmFja2Ryb3BFbGVtZW50PW51bGwpKX19O3ZhciBIYXQ9ImNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3giLGlrdD0vKFtBLVphLXolXSspJC8sT0k9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhKXt0aGlzLl92aWV3cG9ydFJ1bGVyPWUsdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9wbGF0Zm9ybT1pLHRoaXMuX292ZXJsYXlDb250YWluZXI9YSx0aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplPXt3aWR0aDowLGhlaWdodDowfSx0aGlzLl9pc1B1c2hlZD0hMSx0aGlzLl9jYW5QdXNoPSEwLHRoaXMuX2dyb3dBZnRlck9wZW49ITEsdGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zPSEwLHRoaXMuX3Bvc2l0aW9uTG9ja2VkPSExLHRoaXMuX3ZpZXdwb3J0TWFyZ2luPTAsdGhpcy5fc2Nyb2xsYWJsZXM9W10sdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zPVtdLHRoaXMuX3Bvc2l0aW9uQ2hhbmdlcz1uZXcgSnQsdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPUVvLkVNUFRZLHRoaXMuX29mZnNldFg9MCx0aGlzLl9vZmZzZXRZPTAsdGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcz1bXSx0aGlzLnBvc2l0aW9uQ2hhbmdlcz10aGlzLl9wb3NpdGlvbkNoYW5nZXMsdGhpcy5zZXRPcmlnaW4odCl9Z2V0IHBvc2l0aW9ucygpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnN9YXR0YWNoKHQpe2lmKHRoaXMuX292ZXJsYXlSZWYmJnQhPT10aGlzLl9vdmVybGF5UmVmJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIlRoaXMgcG9zaXRpb24gc3RyYXRlZ3kgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhbiBvdmVybGF5Iik7dGhpcy5fdmFsaWRhdGVQb3NpdGlvbnMoKSx0Lmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoSGF0KSx0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fYm91bmRpbmdCb3g9dC5ob3N0RWxlbWVudCx0aGlzLl9wYW5lPXQub3ZlcmxheUVsZW1lbnQsdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9pc0luaXRpYWxSZW5kZXI9ITAsdGhpcy5fbGFzdFBvc2l0aW9uPW51bGwsdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkuc3Vic2NyaWJlKCgpPT57dGhpcy5faXNJbml0aWFsUmVuZGVyPSEwLHRoaXMuYXBwbHkoKX0pfWFwcGx5KCl7aWYodGhpcy5faXNEaXNwb3NlZHx8IXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm47aWYoIXRoaXMuX2lzSW5pdGlhbFJlbmRlciYmdGhpcy5fcG9zaXRpb25Mb2NrZWQmJnRoaXMuX2xhc3RQb3NpdGlvbil7dGhpcy5yZWFwcGx5TGFzdFBvc2l0aW9uKCk7cmV0dXJufXRoaXMuX2NsZWFyUGFuZWxDbGFzc2VzKCksdGhpcy5fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpLHRoaXMuX3Jlc2V0Qm91bmRpbmdCb3hTdHlsZXMoKSx0aGlzLl92aWV3cG9ydFJlY3Q9dGhpcy5fZ2V0TmFycm93ZWRWaWV3cG9ydFJlY3QoKSx0aGlzLl9vcmlnaW5SZWN0PXRoaXMuX2dldE9yaWdpblJlY3QoKSx0aGlzLl9vdmVybGF5UmVjdD10aGlzLl9wYW5lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCB0PXRoaXMuX29yaWdpblJlY3QsZT10aGlzLl9vdmVybGF5UmVjdCxvPXRoaXMuX3ZpZXdwb3J0UmVjdCxpPVtdLGE7Zm9yKGxldCByIG9mIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucyl7bGV0IHM9dGhpcy5fZ2V0T3JpZ2luUG9pbnQodCxyKSxsPXRoaXMuX2dldE92ZXJsYXlQb2ludChzLGUsciksYz10aGlzLl9nZXRPdmVybGF5Rml0KGwsZSxvLHIpO2lmKGMuaXNDb21wbGV0ZWx5V2l0aGluVmlld3BvcnQpe3RoaXMuX2lzUHVzaGVkPSExLHRoaXMuX2FwcGx5UG9zaXRpb24ocixzKTtyZXR1cm59aWYodGhpcy5fY2FuRml0V2l0aEZsZXhpYmxlRGltZW5zaW9ucyhjLGwsbykpe2kucHVzaCh7cG9zaXRpb246cixvcmlnaW46cyxvdmVybGF5UmVjdDplLGJvdW5kaW5nQm94UmVjdDp0aGlzLl9jYWxjdWxhdGVCb3VuZGluZ0JveFJlY3QocyxyKX0pO2NvbnRpbnVlfSghYXx8YS5vdmVybGF5Rml0LnZpc2libGVBcmVhPGMudmlzaWJsZUFyZWEpJiYoYT17b3ZlcmxheUZpdDpjLG92ZXJsYXlQb2ludDpsLG9yaWdpblBvaW50OnMscG9zaXRpb246cixvdmVybGF5UmVjdDplfSl9aWYoaS5sZW5ndGgpe2xldCByPW51bGwscz0tMTtmb3IobGV0IGwgb2YgaSl7bGV0IGM9bC5ib3VuZGluZ0JveFJlY3Qud2lkdGgqbC5ib3VuZGluZ0JveFJlY3QuaGVpZ2h0KihsLnBvc2l0aW9uLndlaWdodHx8MSk7Yz5zJiYocz1jLHI9bCl9dGhpcy5faXNQdXNoZWQ9ITEsdGhpcy5fYXBwbHlQb3NpdGlvbihyLnBvc2l0aW9uLHIub3JpZ2luKTtyZXR1cm59aWYodGhpcy5fY2FuUHVzaCl7dGhpcy5faXNQdXNoZWQ9ITAsdGhpcy5fYXBwbHlQb3NpdGlvbihhLnBvc2l0aW9uLGEub3JpZ2luUG9pbnQpO3JldHVybn10aGlzLl9hcHBseVBvc2l0aW9uKGEucG9zaXRpb24sYS5vcmlnaW5Qb2ludCl9ZGV0YWNoKCl7dGhpcy5fY2xlYXJQYW5lbENsYXNzZXMoKSx0aGlzLl9sYXN0UG9zaXRpb249bnVsbCx0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQ9bnVsbCx0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1kaXNwb3NlKCl7dGhpcy5faXNEaXNwb3NlZHx8KHRoaXMuX2JvdW5kaW5nQm94JiZYdih0aGlzLl9ib3VuZGluZ0JveC5zdHlsZSx7dG9wOiIiLGxlZnQ6IiIscmlnaHQ6IiIsYm90dG9tOiIiLGhlaWdodDoiIix3aWR0aDoiIixhbGlnbkl0ZW1zOiIiLGp1c3RpZnlDb250ZW50OiIifSksdGhpcy5fcGFuZSYmdGhpcy5fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpLHRoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShIYXQpLHRoaXMuZGV0YWNoKCksdGhpcy5fcG9zaXRpb25DaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5fb3ZlcmxheVJlZj10aGlzLl9ib3VuZGluZ0JveD1udWxsLHRoaXMuX2lzRGlzcG9zZWQ9ITApfXJlYXBwbHlMYXN0UG9zaXRpb24oKXtpZighdGhpcy5faXNEaXNwb3NlZCYmKCF0aGlzLl9wbGF0Zm9ybXx8dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKSl7dGhpcy5fb3JpZ2luUmVjdD10aGlzLl9nZXRPcmlnaW5SZWN0KCksdGhpcy5fb3ZlcmxheVJlY3Q9dGhpcy5fcGFuZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl92aWV3cG9ydFJlY3Q9dGhpcy5fZ2V0TmFycm93ZWRWaWV3cG9ydFJlY3QoKTtsZXQgdD10aGlzLl9sYXN0UG9zaXRpb258fHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc1swXSxlPXRoaXMuX2dldE9yaWdpblBvaW50KHRoaXMuX29yaWdpblJlY3QsdCk7dGhpcy5fYXBwbHlQb3NpdGlvbih0LGUpfX13aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl7cmV0dXJuIHRoaXMuX3Njcm9sbGFibGVzPXQsdGhpc313aXRoUG9zaXRpb25zKHQpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9dCx0LmluZGV4T2YodGhpcy5fbGFzdFBvc2l0aW9uKT09PS0xJiYodGhpcy5fbGFzdFBvc2l0aW9uPW51bGwpLHRoaXMuX3ZhbGlkYXRlUG9zaXRpb25zKCksdGhpc313aXRoVmlld3BvcnRNYXJnaW4odCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0TWFyZ2luPXQsdGhpc313aXRoRmxleGlibGVEaW1lbnNpb25zKHQ9ITApe3JldHVybiB0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnM9dCx0aGlzfXdpdGhHcm93QWZ0ZXJPcGVuKHQ9ITApe3JldHVybiB0aGlzLl9ncm93QWZ0ZXJPcGVuPXQsdGhpc313aXRoUHVzaCh0PSEwKXtyZXR1cm4gdGhpcy5fY2FuUHVzaD10LHRoaXN9d2l0aExvY2tlZFBvc2l0aW9uKHQ9ITApe3JldHVybiB0aGlzLl9wb3NpdGlvbkxvY2tlZD10LHRoaXN9c2V0T3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW49dCx0aGlzfXdpdGhEZWZhdWx0T2Zmc2V0WCh0KXtyZXR1cm4gdGhpcy5fb2Zmc2V0WD10LHRoaXN9d2l0aERlZmF1bHRPZmZzZXRZKHQpe3JldHVybiB0aGlzLl9vZmZzZXRZPXQsdGhpc313aXRoVHJhbnNmb3JtT3JpZ2luT24odCl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yPXQsdGhpc31fZ2V0T3JpZ2luUG9pbnQodCxlKXtsZXQgbztpZihlLm9yaWdpblg9PSJjZW50ZXIiKW89dC5sZWZ0K3Qud2lkdGgvMjtlbHNle2xldCBhPXRoaXMuX2lzUnRsKCk/dC5yaWdodDp0LmxlZnQscj10aGlzLl9pc1J0bCgpP3QubGVmdDp0LnJpZ2h0O289ZS5vcmlnaW5YPT0ic3RhcnQiP2E6cn1sZXQgaTtyZXR1cm4gZS5vcmlnaW5ZPT0iY2VudGVyIj9pPXQudG9wK3QuaGVpZ2h0LzI6aT1lLm9yaWdpblk9PSJ0b3AiP3QudG9wOnQuYm90dG9tLHt4Om8seTppfX1fZ2V0T3ZlcmxheVBvaW50KHQsZSxvKXtsZXQgaTtvLm92ZXJsYXlYPT0iY2VudGVyIj9pPS1lLndpZHRoLzI6by5vdmVybGF5WD09PSJzdGFydCI/aT10aGlzLl9pc1J0bCgpPy1lLndpZHRoOjA6aT10aGlzLl9pc1J0bCgpPzA6LWUud2lkdGg7bGV0IGE7cmV0dXJuIG8ub3ZlcmxheVk9PSJjZW50ZXIiP2E9LWUuaGVpZ2h0LzI6YT1vLm92ZXJsYXlZPT0idG9wIj8wOi1lLmhlaWdodCx7eDp0LngraSx5OnQueSthfX1fZ2V0T3ZlcmxheUZpdCh0LGUsbyxpKXtsZXQgYT1MYXQoZSkse3g6cix5OnN9PXQsbD10aGlzLl9nZXRPZmZzZXQoaSwieCIpLGM9dGhpcy5fZ2V0T2Zmc2V0KGksInkiKTtsJiYocis9bCksYyYmKHMrPWMpO2xldCBtPTAtcixmPXIrYS53aWR0aC1vLndpZHRoLHA9MC1zLGc9cythLmhlaWdodC1vLmhlaWdodCxfPXRoaXMuX3N1YnRyYWN0T3ZlcmZsb3dzKGEud2lkdGgsbSxmKSxNPXRoaXMuX3N1YnRyYWN0T3ZlcmZsb3dzKGEuaGVpZ2h0LHAsZykseT1fKk07cmV0dXJue3Zpc2libGVBcmVhOnksaXNDb21wbGV0ZWx5V2l0aGluVmlld3BvcnQ6YS53aWR0aCphLmhlaWdodD09PXksZml0c0luVmlld3BvcnRWZXJ0aWNhbGx5Ok09PT1hLmhlaWdodCxmaXRzSW5WaWV3cG9ydEhvcml6b250YWxseTpfPT1hLndpZHRofX1fY2FuRml0V2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0LGUsbyl7aWYodGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zKXtsZXQgaT1vLmJvdHRvbS1lLnksYT1vLnJpZ2h0LWUueCxyPUZhdCh0aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLm1pbkhlaWdodCkscz1GYXQodGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5taW5XaWR0aCksbD10LmZpdHNJblZpZXdwb3J0VmVydGljYWxseXx8ciE9bnVsbCYmcjw9aSxjPXQuZml0c0luVmlld3BvcnRIb3Jpem9udGFsbHl8fHMhPW51bGwmJnM8PWE7cmV0dXJuIGwmJmN9cmV0dXJuITF9X3B1c2hPdmVybGF5T25TY3JlZW4odCxlLG8pe2lmKHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudCYmdGhpcy5fcG9zaXRpb25Mb2NrZWQpcmV0dXJue3g6dC54K3RoaXMuX3ByZXZpb3VzUHVzaEFtb3VudC54LHk6dC55K3RoaXMuX3ByZXZpb3VzUHVzaEFtb3VudC55fTtsZXQgaT1MYXQoZSksYT10aGlzLl92aWV3cG9ydFJlY3Qscj1NYXRoLm1heCh0LngraS53aWR0aC1hLndpZHRoLDApLHM9TWF0aC5tYXgodC55K2kuaGVpZ2h0LWEuaGVpZ2h0LDApLGw9TWF0aC5tYXgoYS50b3Atby50b3AtdC55LDApLGM9TWF0aC5tYXgoYS5sZWZ0LW8ubGVmdC10LngsMCksbT0wLGY9MDtyZXR1cm4gaS53aWR0aDw9YS53aWR0aD9tPWN8fC1yOm09dC54PHRoaXMuX3ZpZXdwb3J0TWFyZ2luP2EubGVmdC1vLmxlZnQtdC54OjAsaS5oZWlnaHQ8PWEuaGVpZ2h0P2Y9bHx8LXM6Zj10Lnk8dGhpcy5fdmlld3BvcnRNYXJnaW4/YS50b3Atby50b3AtdC55OjAsdGhpcy5fcHJldmlvdXNQdXNoQW1vdW50PXt4Om0seTpmfSx7eDp0LngrbSx5OnQueStmfX1fYXBwbHlQb3NpdGlvbih0LGUpe2lmKHRoaXMuX3NldFRyYW5zZm9ybU9yaWdpbih0KSx0aGlzLl9zZXRPdmVybGF5RWxlbWVudFN0eWxlcyhlLHQpLHRoaXMuX3NldEJvdW5kaW5nQm94U3R5bGVzKGUsdCksdC5wYW5lbENsYXNzJiZ0aGlzLl9hZGRQYW5lbENsYXNzZXModC5wYW5lbENsYXNzKSx0aGlzLl9sYXN0UG9zaXRpb249dCx0aGlzLl9wb3NpdGlvbkNoYW5nZXMub2JzZXJ2ZXJzLmxlbmd0aCl7bGV0IG89dGhpcy5fZ2V0U2Nyb2xsVmlzaWJpbGl0eSgpLGk9bmV3IGJJKHQsbyk7dGhpcy5fcG9zaXRpb25DaGFuZ2VzLm5leHQoaSl9dGhpcy5faXNJbml0aWFsUmVuZGVyPSExfV9zZXRUcmFuc2Zvcm1PcmlnaW4odCl7aWYoIXRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yKXJldHVybjtsZXQgZT10aGlzLl9ib3VuZGluZ0JveC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yKSxvLGk9dC5vdmVybGF5WTt0Lm92ZXJsYXlYPT09ImNlbnRlciI/bz0iY2VudGVyIjp0aGlzLl9pc1J0bCgpP289dC5vdmVybGF5WD09PSJzdGFydCI/InJpZ2h0IjoibGVmdCI6bz10Lm92ZXJsYXlYPT09InN0YXJ0Ij8ibGVmdCI6InJpZ2h0Ijtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyllW2FdLnN0eWxlLnRyYW5zZm9ybU9yaWdpbj1gJHtvfSAke2l9YH1fY2FsY3VsYXRlQm91bmRpbmdCb3hSZWN0KHQsZSl7bGV0IG89dGhpcy5fdmlld3BvcnRSZWN0LGk9dGhpcy5faXNSdGwoKSxhLHIscztpZihlLm92ZXJsYXlZPT09InRvcCIpcj10LnksYT1vLmhlaWdodC1yK3RoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2UgaWYoZS5vdmVybGF5WT09PSJib3R0b20iKXM9by5oZWlnaHQtdC55K3RoaXMuX3ZpZXdwb3J0TWFyZ2luKjIsYT1vLmhlaWdodC1zK3RoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2V7bGV0IGc9TWF0aC5taW4oby5ib3R0b20tdC55K28udG9wLHQueSksXz10aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLmhlaWdodDthPWcqMixyPXQueS1nLGE+XyYmIXRoaXMuX2lzSW5pdGlhbFJlbmRlciYmIXRoaXMuX2dyb3dBZnRlck9wZW4mJihyPXQueS1fLzIpfWxldCBsPWUub3ZlcmxheVg9PT0ic3RhcnQiJiYhaXx8ZS5vdmVybGF5WD09PSJlbmQiJiZpLGM9ZS5vdmVybGF5WD09PSJlbmQiJiYhaXx8ZS5vdmVybGF5WD09PSJzdGFydCImJmksbSxmLHA7aWYoYylwPW8ud2lkdGgtdC54K3RoaXMuX3ZpZXdwb3J0TWFyZ2luLG09dC54LXRoaXMuX3ZpZXdwb3J0TWFyZ2luO2Vsc2UgaWYobClmPXQueCxtPW8ucmlnaHQtdC54O2Vsc2V7bGV0IGc9TWF0aC5taW4oby5yaWdodC10Lngrby5sZWZ0LHQueCksXz10aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLndpZHRoO209ZyoyLGY9dC54LWcsbT5fJiYhdGhpcy5faXNJbml0aWFsUmVuZGVyJiYhdGhpcy5fZ3Jvd0FmdGVyT3BlbiYmKGY9dC54LV8vMil9cmV0dXJue3RvcDpyLGxlZnQ6Zixib3R0b206cyxyaWdodDpwLHdpZHRoOm0saGVpZ2h0OmF9fV9zZXRCb3VuZGluZ0JveFN0eWxlcyh0LGUpe2xldCBvPXRoaXMuX2NhbGN1bGF0ZUJvdW5kaW5nQm94UmVjdCh0LGUpOyF0aGlzLl9pc0luaXRpYWxSZW5kZXImJiF0aGlzLl9ncm93QWZ0ZXJPcGVuJiYoby5oZWlnaHQ9TWF0aC5taW4oby5oZWlnaHQsdGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZS5oZWlnaHQpLG8ud2lkdGg9TWF0aC5taW4oby53aWR0aCx0aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLndpZHRoKSk7bGV0IGk9e307aWYodGhpcy5faGFzRXhhY3RQb3NpdGlvbigpKWkudG9wPWkubGVmdD0iMCIsaS5ib3R0b209aS5yaWdodD1pLm1heEhlaWdodD1pLm1heFdpZHRoPSIiLGkud2lkdGg9aS5oZWlnaHQ9IjEwMCUiO2Vsc2V7bGV0IGE9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5tYXhIZWlnaHQscj10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLm1heFdpZHRoO2kuaGVpZ2h0PWNzKG8uaGVpZ2h0KSxpLnRvcD1jcyhvLnRvcCksaS5ib3R0b209Y3Moby5ib3R0b20pLGkud2lkdGg9Y3Moby53aWR0aCksaS5sZWZ0PWNzKG8ubGVmdCksaS5yaWdodD1jcyhvLnJpZ2h0KSxlLm92ZXJsYXlYPT09ImNlbnRlciI/aS5hbGlnbkl0ZW1zPSJjZW50ZXIiOmkuYWxpZ25JdGVtcz1lLm92ZXJsYXlYPT09ImVuZCI/ImZsZXgtZW5kIjoiZmxleC1zdGFydCIsZS5vdmVybGF5WT09PSJjZW50ZXIiP2kuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciI6aS5qdXN0aWZ5Q29udGVudD1lLm92ZXJsYXlZPT09ImJvdHRvbSI/ImZsZXgtZW5kIjoiZmxleC1zdGFydCIsYSYmKGkubWF4SGVpZ2h0PWNzKGEpKSxyJiYoaS5tYXhXaWR0aD1jcyhyKSl9dGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZT1vLFh2KHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLGkpfV9yZXNldEJvdW5kaW5nQm94U3R5bGVzKCl7WHYodGhpcy5fYm91bmRpbmdCb3guc3R5bGUse3RvcDoiMCIsbGVmdDoiMCIscmlnaHQ6IjAiLGJvdHRvbToiMCIsaGVpZ2h0OiIiLHdpZHRoOiIiLGFsaWduSXRlbXM6IiIsanVzdGlmeUNvbnRlbnQ6IiJ9KX1fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpe1h2KHRoaXMuX3BhbmUuc3R5bGUse3RvcDoiIixsZWZ0OiIiLGJvdHRvbToiIixyaWdodDoiIixwb3NpdGlvbjoiIix0cmFuc2Zvcm06IiJ9KX1fc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXModCxlKXtsZXQgbz17fSxpPXRoaXMuX2hhc0V4YWN0UG9zaXRpb24oKSxhPXRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucyxyPXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCk7aWYoaSl7bGV0IG09dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCk7WHYobyx0aGlzLl9nZXRFeGFjdE92ZXJsYXlZKGUsdCxtKSksWHYobyx0aGlzLl9nZXRFeGFjdE92ZXJsYXlYKGUsdCxtKSl9ZWxzZSBvLnBvc2l0aW9uPSJzdGF0aWMiO2xldCBzPSIiLGw9dGhpcy5fZ2V0T2Zmc2V0KGUsIngiKSxjPXRoaXMuX2dldE9mZnNldChlLCJ5Iik7bCYmKHMrPWB0cmFuc2xhdGVYKCR7bH1weCkgYCksYyYmKHMrPWB0cmFuc2xhdGVZKCR7Y31weClgKSxvLnRyYW5zZm9ybT1zLnRyaW0oKSxyLm1heEhlaWdodCYmKGk/by5tYXhIZWlnaHQ9Y3Moci5tYXhIZWlnaHQpOmEmJihvLm1heEhlaWdodD0iIikpLHIubWF4V2lkdGgmJihpP28ubWF4V2lkdGg9Y3Moci5tYXhXaWR0aCk6YSYmKG8ubWF4V2lkdGg9IiIpKSxYdih0aGlzLl9wYW5lLnN0eWxlLG8pfV9nZXRFeGFjdE92ZXJsYXlZKHQsZSxvKXtsZXQgaT17dG9wOiIiLGJvdHRvbToiIn0sYT10aGlzLl9nZXRPdmVybGF5UG9pbnQoZSx0aGlzLl9vdmVybGF5UmVjdCx0KTt0aGlzLl9pc1B1c2hlZCYmKGE9dGhpcy5fcHVzaE92ZXJsYXlPblNjcmVlbihhLHRoaXMuX292ZXJsYXlSZWN0LG8pKTtsZXQgcj10aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7aWYoYS55LT1yLHQub3ZlcmxheVk9PT0iYm90dG9tIil7bGV0IHM9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtpLmJvdHRvbT1gJHtzLShhLnkrdGhpcy5fb3ZlcmxheVJlY3QuaGVpZ2h0KX1weGB9ZWxzZSBpLnRvcD1jcyhhLnkpO3JldHVybiBpfV9nZXRFeGFjdE92ZXJsYXlYKHQsZSxvKXtsZXQgaT17bGVmdDoiIixyaWdodDoiIn0sYT10aGlzLl9nZXRPdmVybGF5UG9pbnQoZSx0aGlzLl9vdmVybGF5UmVjdCx0KTt0aGlzLl9pc1B1c2hlZCYmKGE9dGhpcy5fcHVzaE92ZXJsYXlPblNjcmVlbihhLHRoaXMuX292ZXJsYXlSZWN0LG8pKTtsZXQgcjtpZih0aGlzLl9pc1J0bCgpP3I9dC5vdmVybGF5WD09PSJlbmQiPyJsZWZ0IjoicmlnaHQiOnI9dC5vdmVybGF5WD09PSJlbmQiPyJyaWdodCI6ImxlZnQiLHI9PT0icmlnaHQiKXtsZXQgcz10aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7aS5yaWdodD1gJHtzLShhLngrdGhpcy5fb3ZlcmxheVJlY3Qud2lkdGgpfXB4YH1lbHNlIGkubGVmdD1jcyhhLngpO3JldHVybiBpfV9nZXRTY3JvbGxWaXNpYmlsaXR5KCl7bGV0IHQ9dGhpcy5fZ2V0T3JpZ2luUmVjdCgpLGU9dGhpcy5fcGFuZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXRoaXMuX3Njcm9sbGFibGVzLm1hcChpPT5pLmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtyZXR1cm57aXNPcmlnaW5DbGlwcGVkOkRhdCh0LG8pLGlzT3JpZ2luT3V0c2lkZVZpZXc6elUodCxvKSxpc092ZXJsYXlDbGlwcGVkOkRhdChlLG8pLGlzT3ZlcmxheU91dHNpZGVWaWV3OnpVKGUsbyl9fV9zdWJ0cmFjdE92ZXJmbG93cyh0LC4uLmUpe3JldHVybiBlLnJlZHVjZSgobyxpKT0+by1NYXRoLm1heChpLDApLHQpfV9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpe2xldCB0PXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCxlPXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsbz10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtyZXR1cm57dG9wOm8udG9wK3RoaXMuX3ZpZXdwb3J0TWFyZ2luLGxlZnQ6by5sZWZ0K3RoaXMuX3ZpZXdwb3J0TWFyZ2luLHJpZ2h0Om8ubGVmdCt0LXRoaXMuX3ZpZXdwb3J0TWFyZ2luLGJvdHRvbTpvLnRvcCtlLXRoaXMuX3ZpZXdwb3J0TWFyZ2luLHdpZHRoOnQtMip0aGlzLl92aWV3cG9ydE1hcmdpbixoZWlnaHQ6ZS0yKnRoaXMuX3ZpZXdwb3J0TWFyZ2lufX1faXNSdGwoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXREaXJlY3Rpb24oKT09PSJydGwifV9oYXNFeGFjdFBvc2l0aW9uKCl7cmV0dXJuIXRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9uc3x8dGhpcy5faXNQdXNoZWR9X2dldE9mZnNldCh0LGUpe3JldHVybiBlPT09IngiP3Qub2Zmc2V0WD09bnVsbD90aGlzLl9vZmZzZXRYOnQub2Zmc2V0WDp0Lm9mZnNldFk9PW51bGw/dGhpcy5fb2Zmc2V0WTp0Lm9mZnNldFl9X3ZhbGlkYXRlUG9zaXRpb25zKCl7aWYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSl7aWYoIXRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5sZW5ndGgpdGhyb3cgRXJyb3IoIkZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTogQXQgbGVhc3Qgb25lIHBvc2l0aW9uIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5mb3JFYWNoKHQ9Pnt6YXQoIm9yaWdpblgiLHQub3JpZ2luWCksSWF0KCJvcmlnaW5ZIix0Lm9yaWdpblkpLHphdCgib3ZlcmxheVgiLHQub3ZlcmxheVgpLElhdCgib3ZlcmxheVkiLHQub3ZlcmxheVkpfSl9fV9hZGRQYW5lbENsYXNzZXModCl7dGhpcy5fcGFuZSYmdzModCkuZm9yRWFjaChlPT57ZSE9PSIiJiZ0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzLmluZGV4T2YoZSk9PT0tMSYmKHRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXMucHVzaChlKSx0aGlzLl9wYW5lLmNsYXNzTGlzdC5hZGQoZSkpfSl9X2NsZWFyUGFuZWxDbGFzc2VzKCl7dGhpcy5fcGFuZSYmKHRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXMuZm9yRWFjaCh0PT57dGhpcy5fcGFuZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSksdGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcz1bXSl9X2dldE9yaWdpblJlY3QoKXtsZXQgdD10aGlzLl9vcmlnaW47aWYodCBpbnN0YW5jZW9mIEwpcmV0dXJuIHQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZih0IGluc3RhbmNlb2YgRWxlbWVudClyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtsZXQgZT10LndpZHRofHwwLG89dC5oZWlnaHR8fDA7cmV0dXJue3RvcDp0LnksYm90dG9tOnQueStvLGxlZnQ6dC54LHJpZ2h0OnQueCtlLGhlaWdodDpvLHdpZHRoOmV9fX07ZnVuY3Rpb24gWHYobix0KXtmb3IobGV0IGUgaW4gdCl0Lmhhc093blByb3BlcnR5KGUpJiYobltlXT10W2VdKTtyZXR1cm4gbn1mdW5jdGlvbiBGYXQobil7aWYodHlwZW9mIG4hPSJudW1iZXIiJiZuIT1udWxsKXtsZXRbdCxlXT1uLnNwbGl0KGlrdCk7cmV0dXJuIWV8fGU9PT0icHgiP3BhcnNlRmxvYXQodCk6bnVsbH1yZXR1cm4gbnx8bnVsbH1mdW5jdGlvbiBMYXQobil7cmV0dXJue3RvcDpNYXRoLmZsb29yKG4udG9wKSxyaWdodDpNYXRoLmZsb29yKG4ucmlnaHQpLGJvdHRvbTpNYXRoLmZsb29yKG4uYm90dG9tKSxsZWZ0Ok1hdGguZmxvb3Iobi5sZWZ0KSx3aWR0aDpNYXRoLmZsb29yKG4ud2lkdGgpLGhlaWdodDpNYXRoLmZsb29yKG4uaGVpZ2h0KX19dmFyIExVPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMpe3RoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucz1bXSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5PW5ldyBPSShvLGksYSxyLHMpLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoITEpLndpdGhQdXNoKCExKS53aXRoVmlld3BvcnRNYXJnaW4oMCksdGhpcy53aXRoRmFsbGJhY2tQb3NpdGlvbih0LGUpLHRoaXMub25Qb3NpdGlvbkNoYW5nZT10aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnBvc2l0aW9uQ2hhbmdlc31nZXQgcG9zaXRpb25zKCl7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc31hdHRhY2godCl7dGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuYXR0YWNoKHQpLHRoaXMuX2RpcmVjdGlvbiYmKHQuc2V0RGlyZWN0aW9uKHRoaXMuX2RpcmVjdGlvbiksdGhpcy5fZGlyZWN0aW9uPW51bGwpfWRpc3Bvc2UoKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRpc3Bvc2UoKX1kZXRhY2goKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRldGFjaCgpfWFwcGx5KCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS5hcHBseSgpfXJlY2FsY3VsYXRlTGFzdFBvc2l0aW9uKCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS5yZWFwcGx5TGFzdFBvc2l0aW9uKCl9d2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFNjcm9sbGFibGVDb250YWluZXJzKHQpfXdpdGhGYWxsYmFja1Bvc2l0aW9uKHQsZSxvLGkpe2xldCBhPW5ldyBNSSh0LGUsbyxpKTtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zLnB1c2goYSksdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucyksdGhpc313aXRoRGlyZWN0aW9uKHQpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYuc2V0RGlyZWN0aW9uKHQpOnRoaXMuX2RpcmVjdGlvbj10LHRoaXN9d2l0aE9mZnNldFgodCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aERlZmF1bHRPZmZzZXRYKHQpLHRoaXN9d2l0aE9mZnNldFkodCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aERlZmF1bHRPZmZzZXRZKHQpLHRoaXN9d2l0aExvY2tlZFBvc2l0aW9uKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhMb2NrZWRQb3NpdGlvbih0KSx0aGlzfXdpdGhQb3NpdGlvbnModCl7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucz10LnNsaWNlKCksdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoUG9zaXRpb25zKHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucyksdGhpc31zZXRPcmlnaW4odCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuc2V0T3JpZ2luKHQpLHRoaXN9fTt2YXIgQmF0PSJjZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlciIsQlU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9jc3NQb3NpdGlvbj0ic3RhdGljIix0aGlzLl90b3BPZmZzZXQ9IiIsdGhpcy5fYm90dG9tT2Zmc2V0PSIiLHRoaXMuX2xlZnRPZmZzZXQ9IiIsdGhpcy5fcmlnaHRPZmZzZXQ9IiIsdGhpcy5fYWxpZ25JdGVtcz0iIix0aGlzLl9qdXN0aWZ5Q29udGVudD0iIix0aGlzLl93aWR0aD0iIix0aGlzLl9oZWlnaHQ9IiJ9YXR0YWNoKHQpe2xldCBlPXQuZ2V0Q29uZmlnKCk7dGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX3dpZHRoJiYhZS53aWR0aCYmdC51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl93aWR0aH0pLHRoaXMuX2hlaWdodCYmIWUuaGVpZ2h0JiZ0LnVwZGF0ZVNpemUoe2hlaWdodDp0aGlzLl9oZWlnaHR9KSx0Lmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoQmF0KSx0aGlzLl9pc0Rpc3Bvc2VkPSExfXRvcCh0PSIiKXtyZXR1cm4gdGhpcy5fYm90dG9tT2Zmc2V0PSIiLHRoaXMuX3RvcE9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtc3RhcnQiLHRoaXN9bGVmdCh0PSIiKXtyZXR1cm4gdGhpcy5fcmlnaHRPZmZzZXQ9IiIsdGhpcy5fbGVmdE9mZnNldD10LHRoaXMuX2p1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0Iix0aGlzfWJvdHRvbSh0PSIiKXtyZXR1cm4gdGhpcy5fdG9wT2Zmc2V0PSIiLHRoaXMuX2JvdHRvbU9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtZW5kIix0aGlzfXJpZ2h0KHQ9IiIpe3JldHVybiB0aGlzLl9sZWZ0T2Zmc2V0PSIiLHRoaXMuX3JpZ2h0T2Zmc2V0PXQsdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIix0aGlzfXdpZHRoKHQ9IiIpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dH0pOnRoaXMuX3dpZHRoPXQsdGhpc31oZWlnaHQodD0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHtoZWlnaHQ6dH0pOnRoaXMuX2hlaWdodD10LHRoaXN9Y2VudGVySG9yaXpvbnRhbGx5KHQ9IiIpe3JldHVybiB0aGlzLmxlZnQodCksdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImNlbnRlciIsdGhpc31jZW50ZXJWZXJ0aWNhbGx5KHQ9IiIpe3JldHVybiB0aGlzLnRvcCh0KSx0aGlzLl9hbGlnbkl0ZW1zPSJjZW50ZXIiLHRoaXN9YXBwbHkoKXtpZighdGhpcy5fb3ZlcmxheVJlZnx8IXRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSlyZXR1cm47bGV0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZSxlPXRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQuc3R5bGUsbz10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLHt3aWR0aDppLGhlaWdodDphLG1heFdpZHRoOnIsbWF4SGVpZ2h0OnN9PW8sbD0oaT09PSIxMDAlInx8aT09PSIxMDB2dyIpJiYoIXJ8fHI9PT0iMTAwJSJ8fHI9PT0iMTAwdnciKSxjPShhPT09IjEwMCUifHxhPT09IjEwMHZoIikmJighc3x8cz09PSIxMDAlInx8cz09PSIxMDB2aCIpO3QucG9zaXRpb249dGhpcy5fY3NzUG9zaXRpb24sdC5tYXJnaW5MZWZ0PWw/IjAiOnRoaXMuX2xlZnRPZmZzZXQsdC5tYXJnaW5Ub3A9Yz8iMCI6dGhpcy5fdG9wT2Zmc2V0LHQubWFyZ2luQm90dG9tPXRoaXMuX2JvdHRvbU9mZnNldCx0Lm1hcmdpblJpZ2h0PXRoaXMuX3JpZ2h0T2Zmc2V0LGw/ZS5qdXN0aWZ5Q29udGVudD0iZmxleC1zdGFydCI6dGhpcy5fanVzdGlmeUNvbnRlbnQ9PT0iY2VudGVyIj9lLmp1c3RpZnlDb250ZW50PSJjZW50ZXIiOnRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkuZGlyZWN0aW9uPT09InJ0bCI/dGhpcy5fanVzdGlmeUNvbnRlbnQ9PT0iZmxleC1zdGFydCI/ZS5qdXN0aWZ5Q29udGVudD0iZmxleC1lbmQiOnRoaXMuX2p1c3RpZnlDb250ZW50PT09ImZsZXgtZW5kIiYmKGUuanVzdGlmeUNvbnRlbnQ9ImZsZXgtc3RhcnQiKTplLmp1c3RpZnlDb250ZW50PXRoaXMuX2p1c3RpZnlDb250ZW50LGUuYWxpZ25JdGVtcz1jPyJmbGV4LXN0YXJ0Ijp0aGlzLl9hbGlnbkl0ZW1zfWRpc3Bvc2UoKXtpZih0aGlzLl9pc0Rpc3Bvc2VkfHwhdGhpcy5fb3ZlcmxheVJlZilyZXR1cm47bGV0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZSxlPXRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQsbz1lLnN0eWxlO2UuY2xhc3NMaXN0LnJlbW92ZShCYXQpLG8uanVzdGlmeUNvbnRlbnQ9by5hbGlnbkl0ZW1zPXQubWFyZ2luVG9wPXQubWFyZ2luQm90dG9tPXQubWFyZ2luTGVmdD10Lm1hcmdpblJpZ2h0PXQucG9zaXRpb249IiIsdGhpcy5fb3ZlcmxheVJlZj1udWxsLHRoaXMuX2lzRGlzcG9zZWQ9ITB9fTt2YXIgQl89Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX2RvY3VtZW50PWUsdGhpcy5fcGxhdGZvcm09byx0aGlzLl9vdmVybGF5Q29udGFpbmVyPWl9Z2xvYmFsKCl7cmV0dXJuIG5ldyBCVX1jb25uZWN0ZWRUbyh0LGUsbyl7cmV0dXJuIG5ldyBMVShlLG8sdCx0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX2RvY3VtZW50LHRoaXMuX3BsYXRmb3JtLHRoaXMuX292ZXJsYXlDb250YWluZXIpfWZsZXhpYmxlQ29ubmVjdGVkVG8odCl7cmV0dXJuIG5ldyBPSSh0LHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fZG9jdW1lbnQsdGhpcy5fcGxhdGZvcm0sdGhpcy5fb3ZlcmxheUNvbnRhaW5lcil9fTtCXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxCXykoSShabiksSShfdCksSShWdCksSSh0cikpfTtCXy5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBCXyhJKFpuKSxJKF90KSxJKFZ0KSxJKHRyKSl9LHRva2VuOkJfLHByb3ZpZGVkSW46InJvb3QifSk7Ql8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpabn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOlZ0fSx7dHlwZTp0cn1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhCXyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpabn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOlZ0fSx7dHlwZTp0cn1dfSxudWxsKX0pKCk7dmFyIGFrdD0wLEduPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCxjLG0sZil7dGhpcy5zY3JvbGxTdHJhdGVnaWVzPXQsdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1lLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1vLHRoaXMuX3Bvc2l0aW9uQnVpbGRlcj1pLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlcj1hLHRoaXMuX2luamVjdG9yPXIsdGhpcy5fbmdab25lPXMsdGhpcy5fZG9jdW1lbnQ9bCx0aGlzLl9kaXJlY3Rpb25hbGl0eT1jLHRoaXMuX2xvY2F0aW9uPW0sdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcj1mfWNyZWF0ZSh0KXtsZXQgZT10aGlzLl9jcmVhdGVIb3N0RWxlbWVudCgpLG89dGhpcy5fY3JlYXRlUGFuZUVsZW1lbnQoZSksaT10aGlzLl9jcmVhdGVQb3J0YWxPdXRsZXQobyksYT1uZXcgVl8odCk7cmV0dXJuIGEuZGlyZWN0aW9uPWEuZGlyZWN0aW9ufHx0aGlzLl9kaXJlY3Rpb25hbGl0eS52YWx1ZSxuZXcgRlUoaSxlLG8sYSx0aGlzLl9uZ1pvbmUsdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLHRoaXMuX2RvY3VtZW50LHRoaXMuX2xvY2F0aW9uLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIpfXBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9uQnVpbGRlcn1fY3JlYXRlUGFuZUVsZW1lbnQodCl7bGV0IGU9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuaWQ9YGNkay1vdmVybGF5LSR7YWt0Kyt9YCxlLmNsYXNzTGlzdC5hZGQoImNkay1vdmVybGF5LXBhbmUiKSx0LmFwcGVuZENoaWxkKGUpLGV9X2NyZWF0ZUhvc3RFbGVtZW50KCl7bGV0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHRoaXMuX292ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpLmFwcGVuZENoaWxkKHQpLHR9X2NyZWF0ZVBvcnRhbE91dGxldCh0KXtyZXR1cm4gdGhpcy5fYXBwUmVmfHwodGhpcy5fYXBwUmVmPXRoaXMuX2luamVjdG9yLmdldChuYSkpLG5ldyBJMyh0LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcix0aGlzLl9hcHBSZWYsdGhpcy5faW5qZWN0b3IsdGhpcy5fZG9jdW1lbnQpfX07R24uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8R24pKEkoSF8pLEkodHIpLEkoX28pLEkoQl8pLEkoRl8pLEkoJGUpLEkoQ3QpLEkoX3QpLEkoTmUpLEkobXIpLEkoTF8pKX07R24uXHUwMjc1cHJvdj1QdCh7dG9rZW46R24sZmFjdG9yeTpHbi5cdTAyNzVmYWN9KTtHbi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkhffSx7dHlwZTp0cn0se3R5cGU6X299LHt0eXBlOkJffSx7dHlwZTpGX30se3R5cGU6JGV9LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6TmV9LHt0eXBlOm1yfSx7dHlwZTpMX31dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhHbixbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpIX30se3R5cGU6dHJ9LHt0eXBlOl9vfSx7dHlwZTpCX30se3R5cGU6Rl99LHt0eXBlOiRlfSx7dHlwZTpDdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOk5lfSx7dHlwZTptcn0se3R5cGU6TF99XX0sbnVsbCl9KSgpO3ZhciBya3Q9W3tvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJ0b3AifSx7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiYm90dG9tIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToiYm90dG9tIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToidG9wIn1dLFBJPW5ldyB5dCgiY2RrLWNvbm5lY3RlZC1vdmVybGF5LXNjcm9sbC1zdHJhdGVneSIpLE1sPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuZWxlbWVudFJlZj10fX07TWwuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TWwpKHYoTCkpfTtNbC5cdTAyNzVkaXI9dnQoe3R5cGU6TWwsc2VsZWN0b3JzOltbIiIsImNkay1vdmVybGF5LW9yaWdpbiIsIiJdLFsiIiwib3ZlcmxheS1vcmlnaW4iLCIiXSxbIiIsImNka092ZXJsYXlPcmlnaW4iLCIiXV0sZXhwb3J0QXM6WyJjZGtPdmVybGF5T3JpZ2luIl19KTtNbC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTWwsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nkay1vdmVybGF5LW9yaWdpbl0sIFtvdmVybGF5LW9yaWdpbl0sIFtjZGtPdmVybGF5T3JpZ2luXSIsZXhwb3J0QXM6ImNka092ZXJsYXlPcmlnaW4ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfV19LG51bGwpfSkoKTt2YXIgZHI9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhKXt0aGlzLl9vdmVybGF5PXQsdGhpcy5fZGlyPWEsdGhpcy5faGFzQmFja2Ryb3A9ITEsdGhpcy5fbG9ja1Bvc2l0aW9uPSExLHRoaXMuX2dyb3dBZnRlck9wZW49ITEsdGhpcy5fZmxleGlibGVEaW1lbnNpb25zPSExLHRoaXMuX3B1c2g9ITEsdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb249RW8uRU1QVFksdGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uPUVvLkVNUFRZLHRoaXMuX2RldGFjaFN1YnNjcmlwdGlvbj1Fby5FTVBUWSx0aGlzLl9wb3NpdGlvblN1YnNjcmlwdGlvbj1Fby5FTVBUWSx0aGlzLnZpZXdwb3J0TWFyZ2luPTAsdGhpcy5vcGVuPSExLHRoaXMuZGlzYWJsZUNsb3NlPSExLHRoaXMuYmFja2Ryb3BDbGljaz1uZXcgJCx0aGlzLnBvc2l0aW9uQ2hhbmdlPW5ldyAkLHRoaXMuYXR0YWNoPW5ldyAkLHRoaXMuZGV0YWNoPW5ldyAkLHRoaXMub3ZlcmxheUtleWRvd249bmV3ICQsdGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrPW5ldyAkLHRoaXMuX3RlbXBsYXRlUG9ydGFsPW5ldyAkbChlLG8pLHRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeT1pLHRoaXMuc2Nyb2xsU3RyYXRlZ3k9dGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KCl9Z2V0IG9mZnNldFgoKXtyZXR1cm4gdGhpcy5fb2Zmc2V0WH1zZXQgb2Zmc2V0WCh0KXt0aGlzLl9vZmZzZXRYPXQsdGhpcy5fcG9zaXRpb24mJnRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb24pfWdldCBvZmZzZXRZKCl7cmV0dXJuIHRoaXMuX29mZnNldFl9c2V0IG9mZnNldFkodCl7dGhpcy5fb2Zmc2V0WT10LHRoaXMuX3Bvc2l0aW9uJiZ0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKX1nZXQgaGFzQmFja2Ryb3AoKXtyZXR1cm4gdGhpcy5faGFzQmFja2Ryb3B9c2V0IGhhc0JhY2tkcm9wKHQpe3RoaXMuX2hhc0JhY2tkcm9wPVplKHQpfWdldCBsb2NrUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fbG9ja1Bvc2l0aW9ufXNldCBsb2NrUG9zaXRpb24odCl7dGhpcy5fbG9ja1Bvc2l0aW9uPVplKHQpfWdldCBmbGV4aWJsZURpbWVuc2lvbnMoKXtyZXR1cm4gdGhpcy5fZmxleGlibGVEaW1lbnNpb25zfXNldCBmbGV4aWJsZURpbWVuc2lvbnModCl7dGhpcy5fZmxleGlibGVEaW1lbnNpb25zPVplKHQpfWdldCBncm93QWZ0ZXJPcGVuKCl7cmV0dXJuIHRoaXMuX2dyb3dBZnRlck9wZW59c2V0IGdyb3dBZnRlck9wZW4odCl7dGhpcy5fZ3Jvd0FmdGVyT3Blbj1aZSh0KX1nZXQgcHVzaCgpe3JldHVybiB0aGlzLl9wdXNofXNldCBwdXNoKHQpe3RoaXMuX3B1c2g9WmUodCl9Z2V0IG92ZXJsYXlSZWYoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZn1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciJ9bmdPbkRlc3Ryb3koKXt0aGlzLl9hdHRhY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9kZXRhY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9bmdPbkNoYW5nZXModCl7dGhpcy5fcG9zaXRpb24mJih0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKSx0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoe3dpZHRoOnRoaXMud2lkdGgsbWluV2lkdGg6dGhpcy5taW5XaWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsbWluSGVpZ2h0OnRoaXMubWluSGVpZ2h0fSksdC5vcmlnaW4mJnRoaXMub3BlbiYmdGhpcy5fcG9zaXRpb24uYXBwbHkoKSksdC5vcGVuJiYodGhpcy5vcGVuP3RoaXMuX2F0dGFjaE92ZXJsYXkoKTp0aGlzLl9kZXRhY2hPdmVybGF5KCkpfV9jcmVhdGVPdmVybGF5KCl7KCF0aGlzLnBvc2l0aW9uc3x8IXRoaXMucG9zaXRpb25zLmxlbmd0aCkmJih0aGlzLnBvc2l0aW9ucz1ya3QpO2xldCB0PXRoaXMuX292ZXJsYXlSZWY9dGhpcy5fb3ZlcmxheS5jcmVhdGUodGhpcy5fYnVpbGRDb25maWcoKSk7dGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uPXQuYXR0YWNobWVudHMoKS5zdWJzY3JpYmUoKCk9PnRoaXMuYXR0YWNoLmVtaXQoKSksdGhpcy5fZGV0YWNoU3Vic2NyaXB0aW9uPXQuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCk9PnRoaXMuZGV0YWNoLmVtaXQoKSksdC5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKGU9Pnt0aGlzLm92ZXJsYXlLZXlkb3duLm5leHQoZSksZS5rZXlDb2RlPT09MjcmJiF0aGlzLmRpc2FibGVDbG9zZSYmIVZhKGUpJiYoZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2RldGFjaE92ZXJsYXkoKSl9KSx0aGlzLl9vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkuc3Vic2NyaWJlKGU9Pnt0aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2submV4dChlKX0pfV9idWlsZENvbmZpZygpe2xldCB0PXRoaXMuX3Bvc2l0aW9uPXRoaXMucG9zaXRpb25TdHJhdGVneXx8dGhpcy5fY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpLGU9bmV3IFZfKHtkaXJlY3Rpb246dGhpcy5fZGlyLHBvc2l0aW9uU3RyYXRlZ3k6dCxzY3JvbGxTdHJhdGVneTp0aGlzLnNjcm9sbFN0cmF0ZWd5LGhhc0JhY2tkcm9wOnRoaXMuaGFzQmFja2Ryb3B9KTtyZXR1cm4odGhpcy53aWR0aHx8dGhpcy53aWR0aD09PTApJiYoZS53aWR0aD10aGlzLndpZHRoKSwodGhpcy5oZWlnaHR8fHRoaXMuaGVpZ2h0PT09MCkmJihlLmhlaWdodD10aGlzLmhlaWdodCksKHRoaXMubWluV2lkdGh8fHRoaXMubWluV2lkdGg9PT0wKSYmKGUubWluV2lkdGg9dGhpcy5taW5XaWR0aCksKHRoaXMubWluSGVpZ2h0fHx0aGlzLm1pbkhlaWdodD09PTApJiYoZS5taW5IZWlnaHQ9dGhpcy5taW5IZWlnaHQpLHRoaXMuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10aGlzLmJhY2tkcm9wQ2xhc3MpLHRoaXMucGFuZWxDbGFzcyYmKGUucGFuZWxDbGFzcz10aGlzLnBhbmVsQ2xhc3MpLGV9X3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodCl7bGV0IGU9dGhpcy5wb3NpdGlvbnMubWFwKG89Pih7b3JpZ2luWDpvLm9yaWdpblgsb3JpZ2luWTpvLm9yaWdpblksb3ZlcmxheVg6by5vdmVybGF5WCxvdmVybGF5WTpvLm92ZXJsYXlZLG9mZnNldFg6by5vZmZzZXRYfHx0aGlzLm9mZnNldFgsb2Zmc2V0WTpvLm9mZnNldFl8fHRoaXMub2Zmc2V0WSxwYW5lbENsYXNzOm8ucGFuZWxDbGFzc3x8dm9pZCAwfSkpO3JldHVybiB0LnNldE9yaWdpbih0aGlzLm9yaWdpbi5lbGVtZW50UmVmKS53aXRoUG9zaXRpb25zKGUpLndpdGhGbGV4aWJsZURpbWVuc2lvbnModGhpcy5mbGV4aWJsZURpbWVuc2lvbnMpLndpdGhQdXNoKHRoaXMucHVzaCkud2l0aEdyb3dBZnRlck9wZW4odGhpcy5ncm93QWZ0ZXJPcGVuKS53aXRoVmlld3BvcnRNYXJnaW4odGhpcy52aWV3cG9ydE1hcmdpbikud2l0aExvY2tlZFBvc2l0aW9uKHRoaXMubG9ja1Bvc2l0aW9uKS53aXRoVHJhbnNmb3JtT3JpZ2luT24odGhpcy50cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcil9X2NyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKXtsZXQgdD10aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLm9yaWdpbi5lbGVtZW50UmVmKTtyZXR1cm4gdGhpcy5fdXBkYXRlUG9zaXRpb25TdHJhdGVneSh0KSx0fV9hdHRhY2hPdmVybGF5KCl7dGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLmhhc0JhY2tkcm9wPXRoaXMuaGFzQmFja2Ryb3A6dGhpcy5fY3JlYXRlT3ZlcmxheSgpLHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKXx8dGhpcy5fb3ZlcmxheVJlZi5hdHRhY2godGhpcy5fdGVtcGxhdGVQb3J0YWwpLHRoaXMuaGFzQmFja2Ryb3A/dGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb249dGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKHQ9Pnt0aGlzLmJhY2tkcm9wQ2xpY2suZW1pdCh0KX0pOnRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGg+MCYmKHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uPXRoaXMuX3Bvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5waXBlKEpTKCgpPT50aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGg+MCkpLnN1YnNjcmliZSh0PT57dGhpcy5wb3NpdGlvbkNoYW5nZS5lbWl0KHQpLHRoaXMucG9zaXRpb25DaGFuZ2Uub2JzZXJ2ZXJzLmxlbmd0aD09PTAmJnRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9KSl9X2RldGFjaE92ZXJsYXkoKXt0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX19O2RyLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGRyKSh2KEduKSx2KGtlKSx2KF9lKSx2KFBJKSx2KE5lLDgpKX07ZHIuXHUwMjc1ZGlyPXZ0KHt0eXBlOmRyLHNlbGVjdG9yczpbWyIiLCJjZGstY29ubmVjdGVkLW92ZXJsYXkiLCIiXSxbIiIsImNvbm5lY3RlZC1vdmVybGF5IiwiIl0sWyIiLCJjZGtDb25uZWN0ZWRPdmVybGF5IiwiIl1dLGlucHV0czp7dmlld3BvcnRNYXJnaW46WyJjZGtDb25uZWN0ZWRPdmVybGF5Vmlld3BvcnRNYXJnaW4iLCJ2aWV3cG9ydE1hcmdpbiJdLG9wZW46WyJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsIm9wZW4iXSxkaXNhYmxlQ2xvc2U6WyJjZGtDb25uZWN0ZWRPdmVybGF5RGlzYWJsZUNsb3NlIiwiZGlzYWJsZUNsb3NlIl0sc2Nyb2xsU3RyYXRlZ3k6WyJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLCJzY3JvbGxTdHJhdGVneSJdLG9mZnNldFg6WyJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WCIsIm9mZnNldFgiXSxvZmZzZXRZOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiLCJvZmZzZXRZIl0saGFzQmFja2Ryb3A6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiLCJoYXNCYWNrZHJvcCJdLGxvY2tQb3NpdGlvbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCJsb2NrUG9zaXRpb24iXSxmbGV4aWJsZURpbWVuc2lvbnM6WyJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIiwiZmxleGlibGVEaW1lbnNpb25zIl0sZ3Jvd0FmdGVyT3BlbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlHcm93QWZ0ZXJPcGVuIiwiZ3Jvd0FmdGVyT3BlbiJdLHB1c2g6WyJjZGtDb25uZWN0ZWRPdmVybGF5UHVzaCIsInB1c2giXSxwb3NpdGlvbnM6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIiwicG9zaXRpb25zIl0sb3JpZ2luOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsIm9yaWdpbiJdLHBvc2l0aW9uU3RyYXRlZ3k6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25TdHJhdGVneSIsInBvc2l0aW9uU3RyYXRlZ3kiXSx3aWR0aDpbImNka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aCIsIndpZHRoIl0saGVpZ2h0OlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhlaWdodCIsImhlaWdodCJdLG1pbldpZHRoOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoIiwibWluV2lkdGgiXSxtaW5IZWlnaHQ6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluSGVpZ2h0IiwibWluSGVpZ2h0Il0sYmFja2Ryb3BDbGFzczpbImNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzIiwiYmFja2Ryb3BDbGFzcyJdLHBhbmVsQ2xhc3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsInBhbmVsQ2xhc3MiXSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3RvcjpbImNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5PbiIsInRyYW5zZm9ybU9yaWdpblNlbGVjdG9yIl19LG91dHB1dHM6e2JhY2tkcm9wQ2xpY2s6ImJhY2tkcm9wQ2xpY2siLHBvc2l0aW9uQ2hhbmdlOiJwb3NpdGlvbkNoYW5nZSIsYXR0YWNoOiJhdHRhY2giLGRldGFjaDoiZGV0YWNoIixvdmVybGF5S2V5ZG93bjoib3ZlcmxheUtleWRvd24iLG92ZXJsYXlPdXRzaWRlQ2xpY2s6Im92ZXJsYXlPdXRzaWRlQ2xpY2sifSxleHBvcnRBczpbImNka0Nvbm5lY3RlZE92ZXJsYXkiXSxmZWF0dXJlczpbV2VdfSk7ZHIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpHbn0se3R5cGU6a2V9LHt0eXBlOl9lfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltQSV19XX0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfV07ZHIucHJvcERlY29yYXRvcnM9e29yaWdpbjpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiJdfV0scG9zaXRpb25zOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIl19XSxwb3NpdGlvblN0cmF0ZWd5Olt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25TdHJhdGVneSJdfV0sb2Zmc2V0WDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFgiXX1dLG9mZnNldFk6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIl19XSx3aWR0aDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoIl19XSxoZWlnaHQ6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHQiXX1dLG1pbldpZHRoOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiXX1dLG1pbkhlaWdodDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCJdfV0sYmFja2Ryb3BDbGFzczpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3MiXX1dLHBhbmVsQ2xhc3M6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQYW5lbENsYXNzIl19XSx2aWV3cG9ydE1hcmdpbjpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luIl19XSxzY3JvbGxTdHJhdGVneTpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5Il19XSxvcGVuOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiJdfV0sZGlzYWJsZUNsb3NlOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5RGlzYWJsZUNsb3NlIl19XSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcjpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVRyYW5zZm9ybU9yaWdpbk9uIl19XSxoYXNCYWNrZHJvcDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIl19XSxsb2NrUG9zaXRpb246W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iXX1dLGZsZXhpYmxlRGltZW5zaW9uczpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyJdfV0sZ3Jvd0FmdGVyT3Blbjpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iXX1dLHB1c2g6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoIl19XSxiYWNrZHJvcENsaWNrOlt7dHlwZTpCfV0scG9zaXRpb25DaGFuZ2U6W3t0eXBlOkJ9XSxhdHRhY2g6W3t0eXBlOkJ9XSxkZXRhY2g6W3t0eXBlOkJ9XSxvdmVybGF5S2V5ZG93bjpbe3R5cGU6Qn1dLG92ZXJsYXlPdXRzaWRlQ2xpY2s6W3t0eXBlOkJ9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGRyLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltjZGstY29ubmVjdGVkLW92ZXJsYXldLCBbY29ubmVjdGVkLW92ZXJsYXldLCBbY2RrQ29ubmVjdGVkT3ZlcmxheV0iLGV4cG9ydEFzOiJjZGtDb25uZWN0ZWRPdmVybGF5In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6R259LHt0eXBlOmtlfSx7dHlwZTpfZX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbUEldfV19LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX1dfSx7dmlld3BvcnRNYXJnaW46W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlWaWV3cG9ydE1hcmdpbiJdfV0sb3Blbjpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iXX1dLGRpc2FibGVDbG9zZTpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheURpc2FibGVDbG9zZSJdfV0sYmFja2Ryb3BDbGljazpbe3R5cGU6Qn1dLHBvc2l0aW9uQ2hhbmdlOlt7dHlwZTpCfV0sYXR0YWNoOlt7dHlwZTpCfV0sZGV0YWNoOlt7dHlwZTpCfV0sb3ZlcmxheUtleWRvd246W3t0eXBlOkJ9XSxvdmVybGF5T3V0c2lkZUNsaWNrOlt7dHlwZTpCfV0sc2Nyb2xsU3RyYXRlZ3k6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSJdfV0sb2Zmc2V0WDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFgiXX1dLG9mZnNldFk6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIl19XSxoYXNCYWNrZHJvcDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIl19XSxsb2NrUG9zaXRpb246W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iXX1dLGZsZXhpYmxlRGltZW5zaW9uczpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyJdfV0sZ3Jvd0FmdGVyT3Blbjpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iXX1dLHB1c2g6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoIl19XSxwb3NpdGlvbnM6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiXX1dLG9yaWdpbjpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiJdfV0scG9zaXRpb25TdHJhdGVneTpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kiXX1dLHdpZHRoOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGgiXX1dLGhlaWdodDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhlaWdodCJdfV0sbWluV2lkdGg6W3t0eXBlOmQsYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCJdfV0sbWluSGVpZ2h0Olt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5TWluSGVpZ2h0Il19XSxiYWNrZHJvcENsYXNzOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyJdfV0scGFuZWxDbGFzczpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiXX1dLHRyYW5zZm9ybU9yaWdpblNlbGVjdG9yOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT24iXX1dfSl9KSgpO2Z1bmN0aW9uIHNrdChuKXtyZXR1cm4oKT0+bi5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX12YXIgamF0PXtwcm92aWRlOlBJLGRlcHM6W0duXSx1c2VGYWN0b3J5OnNrdH07dmFyIEJvPWNsYXNze307Qm8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Qm8pfTtCby5cdTAyNzVtb2Q9cSh7dHlwZTpCb30pO0JvLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W0duLGphdF0saW1wb3J0czpbW1NhLCRhLHppXSx6aV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQm8sW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1NhLCRhLHppXSxleHBvcnRzOltkcixNbCx6aV0sZGVjbGFyYXRpb25zOltkcixNbF0scHJvdmlkZXJzOltHbixqYXRdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEJvLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bZHIsTWxdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1NhLCRhLHppXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltkcixNbCx6aV19fSl9KSgpO3ZhciBDUD1jbGFzcyBleHRlbmRzIHRye2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZSYmdGhpcy5fZnVsbFNjcmVlbkxpc3RlbmVyJiZ0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWUsdGhpcy5fZnVsbFNjcmVlbkxpc3RlbmVyKX1fY3JlYXRlQ29udGFpbmVyKCl7c3VwZXIuX2NyZWF0ZUNvbnRhaW5lcigpLHRoaXMuX2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKSx0aGlzLl9hZGRGdWxsc2NyZWVuQ2hhbmdlTGlzdGVuZXIoKCk9PnRoaXMuX2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKSl9X2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKXtpZighdGhpcy5fY29udGFpbmVyRWxlbWVudClyZXR1cm47KHRoaXMuZ2V0RnVsbHNjcmVlbkVsZW1lbnQoKXx8dGhpcy5fZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyRWxlbWVudCl9X2FkZEZ1bGxzY3JlZW5DaGFuZ2VMaXN0ZW5lcih0KXtsZXQgZT10aGlzLl9nZXRFdmVudE5hbWUoKTtlJiYodGhpcy5fZnVsbFNjcmVlbkxpc3RlbmVyJiZ0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGUsdGhpcy5fZnVsbFNjcmVlbkxpc3RlbmVyKSx0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGUsdCksdGhpcy5fZnVsbFNjcmVlbkxpc3RlbmVyPXQpfV9nZXRFdmVudE5hbWUoKXtpZighdGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZSl7bGV0IHQ9dGhpcy5fZG9jdW1lbnQ7dC5mdWxsc2NyZWVuRW5hYmxlZD90aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lPSJmdWxsc2NyZWVuY2hhbmdlIjp0LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkP3RoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9IndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiOnQubW96RnVsbFNjcmVlbkVuYWJsZWQ/dGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0ibW96ZnVsbHNjcmVlbmNoYW5nZSI6dC5tc0Z1bGxzY3JlZW5FbmFibGVkJiYodGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0iTVNGdWxsc2NyZWVuQ2hhbmdlIil9cmV0dXJuIHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWV9Z2V0RnVsbHNjcmVlbkVsZW1lbnQoKXtsZXQgdD10aGlzLl9kb2N1bWVudDtyZXR1cm4gdC5mdWxsc2NyZWVuRWxlbWVudHx8dC53ZWJraXRGdWxsc2NyZWVuRWxlbWVudHx8dC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8dC5tc0Z1bGxzY3JlZW5FbGVtZW50fHxudWxsfX07Q1AuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Q1ApKEkoX3QpLEkoVnQpKX07Q1AuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgQ1AoSShfdCksSShWdCkpfSx0b2tlbjpDUCxwcm92aWRlZEluOiJyb290In0pO0NQLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOlZ0fV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKENQLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpWdH1dfSxudWxsKX0pKCk7dmFyIGV4PWNsYXNze307ZXguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZXgpfTtleC5cdTAyNzVtb2Q9cSh7dHlwZTpleH0pO2V4Llx1MDI3NWluaj1XKHt9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZXgsW3t0eXBlOlosYXJnczpbe31dfV0sbnVsbCxudWxsKX0pKCk7dmFyIFVhdD1uZXcgU2V0LHozLFFnPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fbWF0Y2hNZWRpYT10aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJndpbmRvdy5tYXRjaE1lZGlhP3dpbmRvdy5tYXRjaE1lZGlhLmJpbmQod2luZG93KTpja3R9bWF0Y2hNZWRpYSh0KXtyZXR1cm4odGhpcy5fcGxhdGZvcm0uV0VCS0lUfHx0aGlzLl9wbGF0Zm9ybS5CTElOSykmJmxrdCh0KSx0aGlzLl9tYXRjaE1lZGlhKHQpfX07UWcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UWcpKEkoVnQpKX07UWcuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgUWcoSShWdCkpfSx0b2tlbjpRZyxwcm92aWRlZEluOiJyb290In0pO1FnLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VnR9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUWcsW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VnR9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIGxrdChuKXtpZighVWF0LmhhcyhuKSl0cnl7ejN8fCh6Mz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLHozLnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh6MykpLHozLnNoZWV0JiYoejMuc2hlZXQuaW5zZXJ0UnVsZShgQG1lZGlhICR7bn0ge2JvZHl7IH19YCwwKSxVYXQuYWRkKG4pKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQpfX1mdW5jdGlvbiBja3Qobil7cmV0dXJue21hdGNoZXM6bj09PSJhbGwifHxuPT09IiIsbWVkaWE6bixhZGRMaXN0ZW5lcjooKT0+e30scmVtb3ZlTGlzdGVuZXI6KCk9Pnt9fX12YXIgZnM9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9tZWRpYU1hdGNoZXI9dCx0aGlzLl96b25lPWUsdGhpcy5fcXVlcmllcz1uZXcgTWFwLHRoaXMuX2Rlc3Ryb3lTdWJqZWN0PW5ldyBKdH1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3lTdWJqZWN0Lm5leHQoKSx0aGlzLl9kZXN0cm95U3ViamVjdC5jb21wbGV0ZSgpfWlzTWF0Y2hlZCh0KXtyZXR1cm4gWWF0KHczKHQpKS5zb21lKG89PnRoaXMuX3JlZ2lzdGVyUXVlcnkobykubXFsLm1hdGNoZXMpfW9ic2VydmUodCl7bGV0IG89WWF0KHczKHQpKS5tYXAoYT0+dGhpcy5fcmVnaXN0ZXJRdWVyeShhKS5vYnNlcnZhYmxlKSxpPW9uKG8pO3JldHVybiBpPWF5KGkucGlwZShDbigxKSksaS5waXBlKFZDKDEpLGxyKDApKSksaS5waXBlKEcoYT0+e2xldCByPXttYXRjaGVzOiExLGJyZWFrcG9pbnRzOnt9fTtyZXR1cm4gYS5mb3JFYWNoKCh7bWF0Y2hlczpzLHF1ZXJ5Omx9KT0+e3IubWF0Y2hlcz1yLm1hdGNoZXN8fHMsci5icmVha3BvaW50c1tsXT1zfSkscn0pKX1fcmVnaXN0ZXJRdWVyeSh0KXtpZih0aGlzLl9xdWVyaWVzLmhhcyh0KSlyZXR1cm4gdGhpcy5fcXVlcmllcy5nZXQodCk7bGV0IGU9dGhpcy5fbWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEodCksaT17b2JzZXJ2YWJsZTpuZXcgRG4oYT0+e2xldCByPXM9PnRoaXMuX3pvbmUucnVuKCgpPT5hLm5leHQocykpO3JldHVybiBlLmFkZExpc3RlbmVyKHIpLCgpPT57ZS5yZW1vdmVMaXN0ZW5lcihyKX19KS5waXBlKFNvKGUpLEcoKHttYXRjaGVzOmF9KT0+KHtxdWVyeTp0LG1hdGNoZXM6YX0pKSxQZSh0aGlzLl9kZXN0cm95U3ViamVjdCkpLG1xbDplfTtyZXR1cm4gdGhpcy5fcXVlcmllcy5zZXQodCxpKSxpfX07ZnMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZnMpKEkoUWcpLEkoQ3QpKX07ZnMuXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgZnMoSShRZyksSShDdCkpfSx0b2tlbjpmcyxwcm92aWRlZEluOiJyb290In0pO2ZzLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UWd9LHt0eXBlOkN0fV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGZzLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlFnfSx7dHlwZTpDdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gWWF0KG4pe3JldHVybiBuLm1hcCh0PT50LnNwbGl0KCIsIikpLnJlZHVjZSgodCxlKT0+dC5jb25jYXQoZSkpLm1hcCh0PT50LnRyaW0oKSl9dmFyIHlJPXtYU21hbGw6IihtYXgtd2lkdGg6IDU5OS45OHB4KSIsU21hbGw6IihtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogOTU5Ljk4cHgpIixNZWRpdW06IihtaW4td2lkdGg6IDk2MHB4KSBhbmQgKG1heC13aWR0aDogMTI3OS45OHB4KSIsTGFyZ2U6IihtaW4td2lkdGg6IDEyODBweCkgYW5kIChtYXgtd2lkdGg6IDE5MTkuOThweCkiLFhMYXJnZToiKG1pbi13aWR0aDogMTkyMHB4KSIsSGFuZHNldDoiKG1heC13aWR0aDogNTk5Ljk4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSwgKG1heC13aWR0aDogOTU5Ljk4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkiLFRhYmxldDoiKG1pbi13aWR0aDogNjAwcHgpIGFuZCAobWF4LXdpZHRoOiA4MzkuOThweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpLCAobWluLXdpZHRoOiA5NjBweCkgYW5kIChtYXgtd2lkdGg6IDEyNzkuOThweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSIsV2ViOiIobWluLXdpZHRoOiA4NDBweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpLCAobWluLXdpZHRoOiAxMjgwcHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSkiLEhhbmRzZXRQb3J0cmFpdDoiKG1heC13aWR0aDogNTk5Ljk4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSIsVGFibGV0UG9ydHJhaXQ6IihtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogODM5Ljk4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSIsV2ViUG9ydHJhaXQ6IihtaW4td2lkdGg6IDg0MHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkiLEhhbmRzZXRMYW5kc2NhcGU6IihtYXgtd2lkdGg6IDk1OS45OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIixUYWJsZXRMYW5kc2NhcGU6IihtaW4td2lkdGg6IDk2MHB4KSBhbmQgKG1heC13aWR0aDogMTI3OS45OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpIixXZWJMYW5kc2NhcGU6IihtaW4td2lkdGg6IDEyODBweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSJ9O2Z1bmN0aW9uIG1rdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMSksdSgxLCJidXR0b24iLDIpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKCkuYWN0aW9uKCl9KSxUKDIpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7eCgyKSxJZShlLmRhdGEuYWN0aW9uKX19ZnVuY3Rpb24gZmt0KG4sdCl7fXZhciBRdj1uZXcgeXQoIk1hdFNuYWNrQmFyRGF0YSIpLGFPPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5wb2xpdGVuZXNzPSJhc3NlcnRpdmUiLHRoaXMuYW5ub3VuY2VtZW50TWVzc2FnZT0iIix0aGlzLmR1cmF0aW9uPTAsdGhpcy5kYXRhPW51bGwsdGhpcy5ob3Jpem9udGFsUG9zaXRpb249ImNlbnRlciIsdGhpcy52ZXJ0aWNhbFBvc2l0aW9uPSJib3R0b20ifX07dmFyIHBrdD1NYXRoLnBvdygyLDMxKS0xLHJPPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fb3ZlcmxheVJlZj1lLHRoaXMuX2FmdGVyRGlzbWlzc2VkPW5ldyBKdCx0aGlzLl9hZnRlck9wZW5lZD1uZXcgSnQsdGhpcy5fb25BY3Rpb249bmV3IEp0LHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSExLHRoaXMuY29udGFpbmVySW5zdGFuY2U9dCx0aGlzLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgpPT50aGlzLmRpc21pc3MoKSksdC5fb25FeGl0LnN1YnNjcmliZSgoKT0+dGhpcy5fZmluaXNoRGlzbWlzcygpKX1kaXNtaXNzKCl7dGhpcy5fYWZ0ZXJEaXNtaXNzZWQuY2xvc2VkfHx0aGlzLmNvbnRhaW5lckluc3RhbmNlLmV4aXQoKSxjbGVhclRpbWVvdXQodGhpcy5fZHVyYXRpb25UaW1lb3V0SWQpfWRpc21pc3NXaXRoQWN0aW9uKCl7dGhpcy5fb25BY3Rpb24uY2xvc2VkfHwodGhpcy5fZGlzbWlzc2VkQnlBY3Rpb249ITAsdGhpcy5fb25BY3Rpb24ubmV4dCgpLHRoaXMuX29uQWN0aW9uLmNvbXBsZXRlKCkpLGNsZWFyVGltZW91dCh0aGlzLl9kdXJhdGlvblRpbWVvdXRJZCl9Y2xvc2VXaXRoQWN0aW9uKCl7dGhpcy5kaXNtaXNzV2l0aEFjdGlvbigpfV9kaXNtaXNzQWZ0ZXIodCl7dGhpcy5fZHVyYXRpb25UaW1lb3V0SWQ9c2V0VGltZW91dCgoKT0+dGhpcy5kaXNtaXNzKCksTWF0aC5taW4odCxwa3QpKX1fb3Blbigpe3RoaXMuX2FmdGVyT3BlbmVkLmNsb3NlZHx8KHRoaXMuX2FmdGVyT3BlbmVkLm5leHQoKSx0aGlzLl9hZnRlck9wZW5lZC5jb21wbGV0ZSgpKX1fZmluaXNoRGlzbWlzcygpe3RoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpLHRoaXMuX29uQWN0aW9uLmNsb3NlZHx8dGhpcy5fb25BY3Rpb24uY29tcGxldGUoKSx0aGlzLl9hZnRlckRpc21pc3NlZC5uZXh0KHtkaXNtaXNzZWRCeUFjdGlvbjp0aGlzLl9kaXNtaXNzZWRCeUFjdGlvbn0pLHRoaXMuX2FmdGVyRGlzbWlzc2VkLmNvbXBsZXRlKCksdGhpcy5fZGlzbWlzc2VkQnlBY3Rpb249ITF9YWZ0ZXJEaXNtaXNzZWQoKXtyZXR1cm4gdGhpcy5fYWZ0ZXJEaXNtaXNzZWR9YWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5jb250YWluZXJJbnN0YW5jZS5fb25FbnRlcn1vbkFjdGlvbigpe3JldHVybiB0aGlzLl9vbkFjdGlvbn19O3ZhciBqXz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc25hY2tCYXJSZWY9dCx0aGlzLmRhdGE9ZX1hY3Rpb24oKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3NXaXRoQWN0aW9uKCl9Z2V0IGhhc0FjdGlvbigpe3JldHVybiEhdGhpcy5kYXRhLmFjdGlvbn19O2pfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGpfKSh2KHJPKSx2KFF2KSl9O2pfLlx1MDI3NWNtcD16KHt0eXBlOmpfLHNlbGVjdG9yczpbWyJzaW1wbGUtc25hY2stYmFyIl1dLGhvc3RBdHRyczpbMSwibWF0LXNpbXBsZS1zbmFja2JhciJdLGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIiw0LCJuZ0lmIl0sWzEsIm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIl0sWyJtYXQtYnV0dG9uIiwiIiwzLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwic3BhbiIpLFQoMSksaCgpLGsoMixta3QsMywxLCJkaXYiLDApKSx0JjImJih4KDEpLEllKGUuZGF0YS5tZXNzYWdlKSx4KDEpLFAoIm5nSWYiLGUuaGFzQWN0aW9uKSl9LGRpcmVjdGl2ZXM6W1h0LGZuXSxzdHlsZXM6W2AubWF0LXNpbXBsZS1zbmFja2JhcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2xpbmUtaGVpZ2h0OjIwcHg7b3BhY2l0eToxfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntmbGV4LXNocmluazowO21hcmdpbjotOHB4IC04cHggLThweCA4cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIGJ1dHRvbnttYXgtaGVpZ2h0OjM2cHg7bWluLXdpZHRoOjB9W2Rpcj1ydGxdIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbnttYXJnaW4tbGVmdDotOHB4O21hcmdpbi1yaWdodDo4cHh9CmBdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2pfLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6ck99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1F2XX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGpfLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic2ltcGxlLXNuYWNrLWJhciIsdGVtcGxhdGU6YDxzcGFuPnt7ZGF0YS5tZXNzYWdlfX08L3NwYW4+CjxkaXYgY2xhc3M9Im1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIiAgKm5nSWY9Imhhc0FjdGlvbiI+CiAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9ImFjdGlvbigpIj57e2RhdGEuYWN0aW9ufX08L2J1dHRvbj4KPC9kaXY+CmAsZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gsaG9zdDp7Y2xhc3M6Im1hdC1zaW1wbGUtc25hY2tiYXIifSxzdHlsZXM6W2AubWF0LXNpbXBsZS1zbmFja2JhcntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2xpbmUtaGVpZ2h0OjIwcHg7b3BhY2l0eToxfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntmbGV4LXNocmluazowO21hcmdpbjotOHB4IC04cHggLThweCA4cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uIGJ1dHRvbnttYXgtaGVpZ2h0OjM2cHg7bWluLXdpZHRoOjB9W2Rpcj1ydGxdIC5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbnttYXJnaW4tbGVmdDotOHB4O21hcmdpbi1yaWdodDo4cHh9CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpyT30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbUXZdfV19XX0sbnVsbCl9KSgpO3ZhciBHYXQ9e3NuYWNrQmFyU3RhdGU6eHIoInN0YXRlIixbaGkoInZvaWQsIGhpZGRlbiIsTG4oe3RyYW5zZm9ybToic2NhbGUoMC44KSIsb3BhY2l0eTowfSkpLGhpKCJ2aXNpYmxlIixMbih7dHJhbnNmb3JtOiJzY2FsZSgxKSIsb3BhY2l0eToxfSkpLGJpKCIqID0+IHZpc2libGUiLERpKCIxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIpKSxiaSgiKiA9PiB2b2lkLCAqID0+IGhpZGRlbiIsRGkoIjc1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKSIsTG4oe29wYWNpdHk6MH0pKSldKX07dmFyIG5mPWNsYXNzIGV4dGVuZHMgdHh7Y29uc3RydWN0b3IodCxlLG8saSxhKXtzdXBlcigpLHRoaXMuX25nWm9uZT10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1vLHRoaXMuX3BsYXRmb3JtPWksdGhpcy5zbmFja0JhckNvbmZpZz1hLHRoaXMuX2Fubm91bmNlRGVsYXk9MTUwLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkFubm91bmNlPW5ldyBKdCx0aGlzLl9vbkV4aXQ9bmV3IEp0LHRoaXMuX29uRW50ZXI9bmV3IEp0LHRoaXMuX2FuaW1hdGlvblN0YXRlPSJ2b2lkIix0aGlzLmF0dGFjaERvbVBvcnRhbD1yPT4odGhpcy5fYXNzZXJ0Tm90QXR0YWNoZWQoKSx0aGlzLl9hcHBseVNuYWNrQmFyQ2xhc3NlcygpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hEb21Qb3J0YWwocikpLGEucG9saXRlbmVzcz09PSJhc3NlcnRpdmUiJiYhYS5hbm5vdW5jZW1lbnRNZXNzYWdlP3RoaXMuX2xpdmU9ImFzc2VydGl2ZSI6YS5wb2xpdGVuZXNzPT09Im9mZiI/dGhpcy5fbGl2ZT0ib2ZmIjp0aGlzLl9saXZlPSJwb2xpdGUiLHRoaXMuX3BsYXRmb3JtLkZJUkVGT1gmJih0aGlzLl9saXZlPT09InBvbGl0ZSImJih0aGlzLl9yb2xlPSJzdGF0dXMiKSx0aGlzLl9saXZlPT09ImFzc2VydGl2ZSImJih0aGlzLl9yb2xlPSJhbGVydCIpKX1hdHRhY2hDb21wb25lbnRQb3J0YWwodCl7cmV0dXJuIHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpfWF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpe3JldHVybiB0aGlzLl9hc3NlcnROb3RBdHRhY2hlZCgpLHRoaXMuX2FwcGx5U25hY2tCYXJDbGFzc2VzKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpfW9uQW5pbWF0aW9uRW5kKHQpe2xldHtmcm9tU3RhdGU6ZSx0b1N0YXRlOm99PXQ7aWYoKG89PT0idm9pZCImJmUhPT0idm9pZCJ8fG89PT0iaGlkZGVuIikmJnRoaXMuX2NvbXBsZXRlRXhpdCgpLG89PT0idmlzaWJsZSIpe2xldCBpPXRoaXMuX29uRW50ZXI7dGhpcy5fbmdab25lLnJ1bigoKT0+e2kubmV4dCgpLGkuY29tcGxldGUoKX0pfX1lbnRlcigpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2FuaW1hdGlvblN0YXRlPSJ2aXNpYmxlIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCksdGhpcy5fc2NyZWVuUmVhZGVyQW5ub3VuY2UoKSl9ZXhpdCgpe3JldHVybiB0aGlzLl9hbmltYXRpb25TdGF0ZT0iaGlkZGVuIix0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXQtZXhpdCIsIiIpLGNsZWFyVGltZW91dCh0aGlzLl9hbm5vdW5jZVRpbWVvdXRJZCksdGhpcy5fb25FeGl0fW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuX2NvbXBsZXRlRXhpdCgpfV9jb21wbGV0ZUV4aXQoKXt0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKENuKDEpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9vbkV4aXQubmV4dCgpLHRoaXMuX29uRXhpdC5jb21wbGV0ZSgpfSl9X2FwcGx5U25hY2tCYXJDbGFzc2VzKCl7bGV0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5zbmFja0JhckNvbmZpZy5wYW5lbENsYXNzO2UmJihBcnJheS5pc0FycmF5KGUpP2UuZm9yRWFjaChvPT50LmNsYXNzTGlzdC5hZGQobykpOnQuY2xhc3NMaXN0LmFkZChlKSksdGhpcy5zbmFja0JhckNvbmZpZy5ob3Jpem9udGFsUG9zaXRpb249PT0iY2VudGVyIiYmdC5jbGFzc0xpc3QuYWRkKCJtYXQtc25hY2stYmFyLWNlbnRlciIpLHRoaXMuc25hY2tCYXJDb25maWcudmVydGljYWxQb3NpdGlvbj09PSJ0b3AiJiZ0LmNsYXNzTGlzdC5hZGQoIm1hdC1zbmFjay1iYXItdG9wIil9X2Fzc2VydE5vdEF0dGFjaGVkKCl7aWYodGhpcy5fcG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCkmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggc25hY2sgYmFyIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkIil9X3NjcmVlblJlYWRlckFubm91bmNlKCl7dGhpcy5fYW5ub3VuY2VUaW1lb3V0SWR8fHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3RoaXMuX2Fubm91bmNlVGltZW91dElkPXNldFRpbWVvdXQoKCk9PntsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigiW2FyaWEtaGlkZGVuXSIpLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIlthcmlhLWxpdmVdIik7aWYodCYmZSl7bGV0IG89bnVsbDt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCYmdC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmKG89ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksdC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KSxvPT1udWxsfHxvLmZvY3VzKCksdGhpcy5fb25Bbm5vdW5jZS5uZXh0KCksdGhpcy5fb25Bbm5vdW5jZS5jb21wbGV0ZSgpfX0sdGhpcy5fYW5ub3VuY2VEZWxheSl9KX19O25mLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG5mKSh2KEN0KSx2KEwpLHYoVHQpLHYoVnQpLHYoYU8pKX07bmYuXHUwMjc1Y21wPXooe3R5cGU6bmYsc2VsZWN0b3JzOltbInNuYWNrLWJhci1jb250YWluZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShfaSw3KSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLl9wb3J0YWxPdXRsZXQ9by5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC1zbmFjay1iYXItY29udGFpbmVyIl0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJlF3KCJAc3RhdGUuZG9uZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25BbmltYXRpb25FbmQoaSl9KSx0JjImJkt3KCJAc3RhdGUiLGUuX2FuaW1hdGlvblN0YXRlKX0sZmVhdHVyZXM6W2FlXSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIl0sWyJjZGtQb3J0YWxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksaygxLGZrdCwwLDAsIm5nLXRlbXBsYXRlIiwxKSxoKCksRCgyLCJkaXYiKSksdCYyJiYoeCgyKSxyZSgiYXJpYS1saXZlIixlLl9saXZlKSgicm9sZSIsZS5fcm9sZSkpfSxkaXJlY3RpdmVzOltfaV0sc3R5bGVzOltgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2JvcmRlci1yYWRpdXM6NHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjoyNHB4O21heC13aWR0aDozM3Z3O21pbi13aWR0aDozNDRweDtwYWRkaW5nOjE0cHggMTZweDttaW4taGVpZ2h0OjQ4cHg7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNuYWNrLWJhci1jb250YWluZXJ7Ym9yZGVyOnNvbGlkIDFweH0ubWF0LXNuYWNrLWJhci1oYW5kc2V0e3dpZHRoOjEwMCV9Lm1hdC1zbmFjay1iYXItaGFuZHNldCAubWF0LXNuYWNrLWJhci1jb250YWluZXJ7bWFyZ2luOjhweDttYXgtd2lkdGg6MTAwJTttaW4td2lkdGg6MDt3aWR0aDoxMDAlfQpgXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltHYXQuc25hY2tCYXJTdGF0ZV19fSk7bmYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpDdH0se3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOlZ0fSx7dHlwZTphT31dO25mLnByb3BEZWNvcmF0b3JzPXtfcG9ydGFsT3V0bGV0Olt7dHlwZTpJdCxhcmdzOltfaSx7c3RhdGljOiEwfV19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5mLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic25hY2stYmFyLWNvbnRhaW5lciIsdGVtcGxhdGU6YDwhLS0gSW5pdGlhbGx5IGhvbGRzIHRoZSBzbmFjayBiYXIgY29udGVudCwgd2lsbCBiZSBlbXB0eSBhZnRlciBhbm5vdW5jaW5nIHRvIHNjcmVlbiByZWFkZXJzLiAtLT4KPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPgo8L2Rpdj4KCjwhLS0gV2lsbCByZWNlaXZlIHRoZSBzbmFjayBiYXIgY29udGVudCBmcm9tIHRoZSBub24tbGl2ZSBkaXYsIG1vdmUgd2lsbCBoYXBwZW4gYSBzaG9ydCBkZWxheSBhZnRlciBvcGVuaW5nIC0tPgo8ZGl2IFthdHRyLmFyaWEtbGl2ZV09Il9saXZlIiBbYXR0ci5yb2xlXT0iX3JvbGUiPjwvZGl2PgpgLGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SmUuTm9uZSxhbmltYXRpb25zOltHYXQuc25hY2tCYXJTdGF0ZV0saG9zdDp7Y2xhc3M6Im1hdC1zbmFjay1iYXItY29udGFpbmVyIiwiW0BzdGF0ZV0iOiJfYW5pbWF0aW9uU3RhdGUiLCIoQHN0YXRlLmRvbmUpIjoib25BbmltYXRpb25FbmQoJGV2ZW50KSJ9LHN0eWxlczpbYC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXItcmFkaXVzOjRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MjRweDttYXgtd2lkdGg6MzN2dzttaW4td2lkdGg6MzQ0cHg7cGFkZGluZzoxNHB4IDE2cHg7bWluLWhlaWdodDo0OHB4O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbmFjay1iYXItY29udGFpbmVye2JvcmRlcjpzb2xpZCAxcHh9Lm1hdC1zbmFjay1iYXItaGFuZHNldHt3aWR0aDoxMDAlfS5tYXQtc25hY2stYmFyLWhhbmRzZXQgLm1hdC1zbmFjay1iYXItY29udGFpbmVye21hcmdpbjo4cHg7bWF4LXdpZHRoOjEwMCU7bWluLXdpZHRoOjA7d2lkdGg6MTAwJX0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkN0fSx7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6VnR9LHt0eXBlOmFPfV19LHtfcG9ydGFsT3V0bGV0Olt7dHlwZTpJdCxhcmdzOltfaSx7c3RhdGljOiEwfV19XX0pfSkoKTt2YXIgb2Y9Y2xhc3N7fTtvZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxvZil9O29mLlx1MDI3NW1vZD1xKHt0eXBlOm9mfSk7b2YuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tCbywkYSxZLE1lLER0XSxEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob2YsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0JvLCRhLFksTWUsRHRdLGV4cG9ydHM6W25mLER0XSxkZWNsYXJhdGlvbnM6W25mLGpfXSxlbnRyeUNvbXBvbmVudHM6W25mLGpfXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChvZix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW25mLGpfXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltCbywkYSxZLE1lLER0XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltuZixEdF19fSl9KSgpO3ZhciB4ST1uZXcgeXQoIm1hdC1zbmFjay1iYXItZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpka3R9KTtmdW5jdGlvbiBka3QoKXtyZXR1cm4gbmV3IGFPfXZhciBpbT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscil7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2xpdmU9ZSx0aGlzLl9pbmplY3Rvcj1vLHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlcj1pLHRoaXMuX3BhcmVudFNuYWNrQmFyPWEsdGhpcy5fZGVmYXVsdENvbmZpZz1yLHRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWw9bnVsbCx0aGlzLnNpbXBsZVNuYWNrQmFyQ29tcG9uZW50PWpfLHRoaXMuc25hY2tCYXJDb250YWluZXJDb21wb25lbnQ9bmYsdGhpcy5oYW5kc2V0Q3NzQ2xhc3M9Im1hdC1zbmFjay1iYXItaGFuZHNldCJ9Z2V0IF9vcGVuZWRTbmFja0JhclJlZigpe2xldCB0PXRoaXMuX3BhcmVudFNuYWNrQmFyO3JldHVybiB0P3QuX29wZW5lZFNuYWNrQmFyUmVmOnRoaXMuX3NuYWNrQmFyUmVmQXRUaGlzTGV2ZWx9c2V0IF9vcGVuZWRTbmFja0JhclJlZih0KXt0aGlzLl9wYXJlbnRTbmFja0Jhcj90aGlzLl9wYXJlbnRTbmFja0Jhci5fb3BlbmVkU25hY2tCYXJSZWY9dDp0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsPXR9b3BlbkZyb21Db21wb25lbnQodCxlKXtyZXR1cm4gdGhpcy5fYXR0YWNoKHQsZSl9b3BlbkZyb21UZW1wbGF0ZSh0LGUpe3JldHVybiB0aGlzLl9hdHRhY2godCxlKX1vcGVuKHQsZT0iIixvKXtsZXQgaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fZGVmYXVsdENvbmZpZyksbyk7cmV0dXJuIGkuZGF0YT17bWVzc2FnZTp0LGFjdGlvbjplfSxpLmFubm91bmNlbWVudE1lc3NhZ2U9PT10JiYoaS5hbm5vdW5jZW1lbnRNZXNzYWdlPXZvaWQgMCksdGhpcy5vcGVuRnJvbUNvbXBvbmVudCh0aGlzLnNpbXBsZVNuYWNrQmFyQ29tcG9uZW50LGkpfWRpc21pc3MoKXt0aGlzLl9vcGVuZWRTbmFja0JhclJlZiYmdGhpcy5fb3BlbmVkU25hY2tCYXJSZWYuZGlzbWlzcygpfW5nT25EZXN0cm95KCl7dGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbCYmdGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbC5kaXNtaXNzKCl9X2F0dGFjaFNuYWNrQmFyQ29udGFpbmVyKHQsZSl7bGV0IG89ZSYmZS52aWV3Q29udGFpbmVyUmVmJiZlLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IsaT0kZS5jcmVhdGUoe3BhcmVudDpvfHx0aGlzLl9pbmplY3Rvcixwcm92aWRlcnM6W3twcm92aWRlOmFPLHVzZVZhbHVlOmV9XX0pLGE9bmV3IERNKHRoaXMuc25hY2tCYXJDb250YWluZXJDb21wb25lbnQsZS52aWV3Q29udGFpbmVyUmVmLGkpLHI9dC5hdHRhY2goYSk7cmV0dXJuIHIuaW5zdGFuY2Uuc25hY2tCYXJDb25maWc9ZSxyLmluc3RhbmNlfV9hdHRhY2godCxlKXtsZXQgbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuZXcgYU8pLHRoaXMuX2RlZmF1bHRDb25maWcpLGUpLGk9dGhpcy5fY3JlYXRlT3ZlcmxheShvKSxhPXRoaXMuX2F0dGFjaFNuYWNrQmFyQ29udGFpbmVyKGksbykscj1uZXcgck8oYSxpKTtpZih0IGluc3RhbmNlb2Yga2Upe2xldCBzPW5ldyAkbCh0LG51bGwseyRpbXBsaWNpdDpvLmRhdGEsc25hY2tCYXJSZWY6cn0pO3IuaW5zdGFuY2U9YS5hdHRhY2hUZW1wbGF0ZVBvcnRhbChzKX1lbHNle2xldCBzPXRoaXMuX2NyZWF0ZUluamVjdG9yKG8sciksbD1uZXcgRE0odCx2b2lkIDAscyksYz1hLmF0dGFjaENvbXBvbmVudFBvcnRhbChsKTtyLmluc3RhbmNlPWMuaW5zdGFuY2V9cmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKHlJLkhhbmRzZXRQb3J0cmFpdCkucGlwZShQZShpLmRldGFjaG1lbnRzKCkpKS5zdWJzY3JpYmUocz0+e2xldCBsPWkub3ZlcmxheUVsZW1lbnQuY2xhc3NMaXN0O3MubWF0Y2hlcz9sLmFkZCh0aGlzLmhhbmRzZXRDc3NDbGFzcyk6bC5yZW1vdmUodGhpcy5oYW5kc2V0Q3NzQ2xhc3MpfSksby5hbm5vdW5jZW1lbnRNZXNzYWdlJiZhLl9vbkFubm91bmNlLnN1YnNjcmliZSgoKT0+e3RoaXMuX2xpdmUuYW5ub3VuY2Uoby5hbm5vdW5jZW1lbnRNZXNzYWdlLG8ucG9saXRlbmVzcyl9KSx0aGlzLl9hbmltYXRlU25hY2tCYXIocixvKSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZj1yLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmfV9hbmltYXRlU25hY2tCYXIodCxlKXt0LmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgpPT57dGhpcy5fb3BlbmVkU25hY2tCYXJSZWY9PXQmJih0aGlzLl9vcGVuZWRTbmFja0JhclJlZj1udWxsKSxlLmFubm91bmNlbWVudE1lc3NhZ2UmJnRoaXMuX2xpdmUuY2xlYXIoKX0pLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmPyh0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSgoKT0+e3QuY29udGFpbmVySW5zdGFuY2UuZW50ZXIoKX0pLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmLmRpc21pc3MoKSk6dC5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpLGUuZHVyYXRpb24mJmUuZHVyYXRpb24+MCYmdC5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKT0+dC5fZGlzbWlzc0FmdGVyKGUuZHVyYXRpb24pKX1fY3JlYXRlT3ZlcmxheSh0KXtsZXQgZT1uZXcgVl87ZS5kaXJlY3Rpb249dC5kaXJlY3Rpb247bGV0IG89dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLGk9dC5kaXJlY3Rpb249PT0icnRsIixhPXQuaG9yaXpvbnRhbFBvc2l0aW9uPT09ImxlZnQifHx0Lmhvcml6b250YWxQb3NpdGlvbj09PSJzdGFydCImJiFpfHx0Lmhvcml6b250YWxQb3NpdGlvbj09PSJlbmQiJiZpLHI9IWEmJnQuaG9yaXpvbnRhbFBvc2l0aW9uIT09ImNlbnRlciI7cmV0dXJuIGE/by5sZWZ0KCIwIik6cj9vLnJpZ2h0KCIwIik6by5jZW50ZXJIb3Jpem9udGFsbHkoKSx0LnZlcnRpY2FsUG9zaXRpb249PT0idG9wIj9vLnRvcCgiMCIpOm8uYm90dG9tKCIwIiksZS5wb3NpdGlvblN0cmF0ZWd5PW8sdGhpcy5fb3ZlcmxheS5jcmVhdGUoZSl9X2NyZWF0ZUluamVjdG9yKHQsZSl7bGV0IG89dCYmdC52aWV3Q29udGFpbmVyUmVmJiZ0LnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3I7cmV0dXJuICRlLmNyZWF0ZSh7cGFyZW50Om98fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6ck8sdXNlVmFsdWU6ZX0se3Byb3ZpZGU6UXYsdXNlVmFsdWU6dC5kYXRhfV19KX19O2ltLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGltKShJKEduKSxJKHByKSxJKCRlKSxJKGZzKSxJKGltLDEyKSxJKHhJKSl9O2ltLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGltKEkoR24pLEkocHIpLEkoSk8pLEkoZnMpLEkoaW0sMTIpLEkoeEkpKX0sdG9rZW46aW0scHJvdmlkZWRJbjpvZn0pO2ltLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6R259LHt0eXBlOnByfSx7dHlwZTokZX0se3R5cGU6ZnN9LHt0eXBlOmltLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOllvfV19LHt0eXBlOmFPLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbeEldfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaW0sW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOm9mfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHbn0se3R5cGU6cHJ9LHt0eXBlOiRlfSx7dHlwZTpmc30se3R5cGU6aW0sZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6WW99XX0se3R5cGU6YU8sZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOlt4SV19XX1dfSxudWxsKX0pKCk7dmFyIGdrdD0vW1xcXiQuKis/KClbXF17fXxdL2c7ZnVuY3Rpb24gWmF0KG4pe3JldHVybiBuLnJlcGxhY2UoZ2t0LCJcXCQmIil9ZnVuY3Rpb24gdWt0KG4sdCl7dC5mbGFncy5pbmNsdWRlcygiZyIpfHwodD1uZXcgUmVnRXhwKHQsdC5mbGFncysiZyIpKTtsZXQgZT1bXSxvPTA7Zm9yKGxldCBpIG9mIG4ubWF0Y2hBbGwodCkpe2xldCBhPWkuaW5kZXgscj1pWzBdO2E+byYmZS5wdXNoKHtpbmRleDpvLHRleHQ6bi5zdWJzdHJpbmcobyxhKSxtYXRjaGVzUmVnZXg6ITF9KSxlLnB1c2goe2luZGV4OmEsdGV4dDpyLG1hdGNoZXNSZWdleDohMH0pLG89YStyLmxlbmd0aH1yZXR1cm4gbi5sZW5ndGg+byYmZS5wdXNoKHtpbmRleDpvLHRleHQ6bi5zdWJzdHJpbmcobyxuLmxlbmd0aCksbWF0Y2hlc1JlZ2V4OiExfSksZX12YXIgcWF0PSJcXHUwMDAwLVxcdTAwMjBcXHUwMDdmLVxcdTAwOWYiLGhrdD1uZXcgUmVnRXhwKCIoPzpbYS16QS1aXVthLXpBLVowLTkrLi1dezIsfTpcXC9cXC98ZGF0YTp8d3d3XFwuKVteXFxzIitxYXQrJyJdezIsfVteXFxzJytxYXQrYCInKX1cXF0sOjsuIT9dYCwiZ3UiKTtmdW5jdGlvbiBYYXQobil7cmV0dXJuIHVrdChuLGhrdCkubWFwKCh7bWF0Y2hlc1JlZ2V4OnQsdGV4dDplfSk9Pih7aXNVUkw6dCx0ZXh0OmV9KSl9ZnVuY3Rpb24gX2t0KG4sdCl7aWYobiYxJiYoRW4oMCksVCgxKSxrbigpKSxuJjIpe2xldCBlPVMoKS4kaW1wbGljaXQ7eCgxKSxsZSgiICIsZS50ZXh0LCIgIil9fWZ1bmN0aW9uIENrdChuLHQpe2lmKG4mMSYmKHUoMCwiYSIsNyksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygpLiRpbXBsaWNpdDtXaSgiaHJlZiIsZS50ZXh0LFdmKSx4KDEpLEllKGUudGV4dCl9fWZ1bmN0aW9uIE1rdChuLHQpe2lmKG4mMSYmKEVuKDApLGsoMSxfa3QsMiwxLCJuZy1jb250YWluZXIiLDUpLGsoMixDa3QsMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LHhuKSxrbigpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89d2UoMyk7eCgxKSxQKCJuZ0lmIiwhZS5pc1VSTCkoIm5nSWZFbHNlIixvKX19ZnVuY3Rpb24gYmt0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiYnV0dG9uIiw4KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLm9uQWN0aW9uQnV0dG9uQ2xpY2tlZCgpfSksVCgxKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7eCgxKSxsZSgiICIsZS5hbGVydC5mb2xsb3d1cEFjdGlvbi5sb2NhbGl6ZWRMYWJlbCwiICIpfX12YXIgS2c9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuc25hY2tCYXJSZWY9dCx0aGlzLnVua25vd25EYXRhPWUsdGhpcy5zdG9yZT1vLHRoaXMuc3BsaXRCeVVSTD1YYXQsdGhpcy5hbGVydD1lfW9uQWN0aW9uQnV0dG9uQ2xpY2tlZCgpe3JldHVybiB6Qyh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7dGhpcy5zbmFja0JhclJlZi5kaXNtaXNzKCk7bGV0IHQ9eWllbGQgdGhpcy5hbGVydC5mb2xsb3d1cEFjdGlvbi5nZXRGb2xsb3d1cEFjdGlvbih0aGlzLnN0b3JlKTt0aGlzLnN0b3JlLmRpc3BhdGNoKHQpfSl9b25DbG9zZUJ1dHRvbkNsaWNrZWQoKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3MoKX19O0tnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEtnKSh2KHJPKSx2KFF2KSx2KHN0KSl9O0tnLlx1MDI3NWNtcD16KHt0eXBlOktnLHNlbGVjdG9yczpbWyJhbGVydC1kaXNwbGF5LXNuYWNrYmFyIl1dLGRlY2xzOjYsdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCBuO3JldHVybiB0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9uPWdvb2cuZ2V0TXNnKCJEaXNtaXNzIik6bj0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIGNsb3NlIHRoZSBzbmFja2JhciBtZXNzYWdl4pCfZWE0ZDlmZTYxNDIwYTNmY2U4MWNmNTRjNGM2MTVlM2MxOWM2NDZhNuKQnzE1MzYwODc1MTk3NDM3MDczNjI6RGlzbWlzc2AsW1sxLCJtZXNzYWdlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb250cm9scyJdLFsibWF0LWJ1dHRvbiIsIiIsImNsYXNzIiwiZm9sbG93dXAtYnV0dG9uIiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sMSwiZGlzbWlzcy1idXR0b24iLDMsImNsaWNrIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibGlua1BpZWNlIiwiIl0sWyJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIiwidGFyZ2V0IiwiX2JsYW5rIiwzLCJocmVmIl0sWyJtYXQtYnV0dG9uIiwiIiwxLCJmb2xsb3d1cC1idXR0b24iLDMsImNsaWNrIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwKSxrKDEsTWt0LDQsMiwibmctY29udGFpbmVyIiwxKSxoKCksdSgyLCJkaXYiLDIpLGsoMyxia3QsMiwxLCJidXR0b24iLDMpLHUoNCwiYnV0dG9uIiw0KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkNsb3NlQnV0dG9uQ2xpY2tlZCgpfSksVCg1LCIgRGlzbWlzcyAiKSxoKCksaCgpKSx0JjImJih4KDEpLFAoIm5nRm9yT2YiLGUuc3BsaXRCeVVSTChlLmFsZXJ0LmxvY2FsaXplZE1lc3NhZ2UpKSx4KDIpLFAoIm5nSWYiLGUuYWxlcnQuZm9sbG93dXBBY3Rpb24pKX0sZGlyZWN0aXZlczpbbW4sWHQsZm5dLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwfS5tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDthbGlnbi1zZWxmOmNlbnRlcjttYXJnaW46NXB4IDA7d29yZC1icmVhazpicmVhay13b3JkfS5tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGFbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWxlZnQ6YXV0b31idXR0b25bX25nY29udGVudC0lQ09NUCVde3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhLZyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImFsZXJ0LWRpc3BsYXktc25hY2tiYXIiLHRlbXBsYXRlVXJsOiIuL2FsZXJ0X2Rpc3BsYXlfc25hY2tiYXJfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYWxlcnRfZGlzcGxheV9zbmFja2Jhcl9jb250YWluZXIuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6ck99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1F2XX1dfSx7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIFNwPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuc25hY2tCYXI9ZSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEp0fW5nT25Jbml0KCl7dGhpcy5zdG9yZS5zZWxlY3QoUGl0KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksdWUodD0+Qm9vbGVhbih0KSkpLnN1YnNjcmliZSh0PT57dGhpcy5zaG93QWxlcnQodCl9KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9c2hvd0FsZXJ0KHQpe3RoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoS2cse2R1cmF0aW9uOjVlMyxob3Jpem9udGFsUG9zaXRpb246InN0YXJ0Iix2ZXJ0aWNhbFBvc2l0aW9uOiJib3R0b20iLGRhdGE6dH0pfX07U3AuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8U3ApKHYoc3QpLHYoaW0pKX07U3AuXHUwMjc1Y21wPXooe3R5cGU6U3Asc2VsZWN0b3JzOltbImFsZXJ0LXNuYWNrYmFyIl1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU3AsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJhbGVydC1zbmFja2JhciIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9LHt0eXBlOmltfV19LG51bGwpfSkoKTt2YXIgZWM9Y2xhc3N7fTtlYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxlYyl9O2VjLlx1MDI3NW1vZD1xKHt0eXBlOmVjfSk7ZWMuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLE1lLG9mXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZWMsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbU3AsS2ddLGV4cG9ydHM6W1NwXSxpbXBvcnRzOltZLE1lLG9mXSxlbnRyeUNvbXBvbmVudHM6W0tnXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChlYyx7ZGVjbGFyYXRpb25zOltTcCxLZ10saW1wb3J0czpbWSxNZSxvZl0sZXhwb3J0czpbU3BdfSl9KSgpO3ZhciBuYz1jbGFzc3t9O25jLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG5jKX07bmMuXHUwMjc1bW9kPXEoe3R5cGU6bmN9KTtuYy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW3ZhLGVjLGNvLmZvckZlYXR1cmUoTkUsZ1UpLEhvLmZvckZlYXR1cmUoW1NNXSldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhuYyxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbdmEsZWMsY28uZm9yRmVhdHVyZShORSxnVSksSG8uZm9yRmVhdHVyZShbU01dKV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQobmMse2ltcG9ydHM6W3ZhLGVjLE5vLHFpXX0pfSkoKTt2YXIgUGt0PVsiKiIsW1sibWF0LXRvb2xiYXItcm93Il1dXSx5a3Q9WyIqIiwibWF0LXRvb2xiYXItcm93Il0seGt0PUZzKGNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuX2VsZW1lbnRSZWY9bn19KSxScD1jbGFzc3t9O1JwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFJwKX07UnAuXHUwMjc1ZGlyPXZ0KHt0eXBlOlJwLHNlbGVjdG9yczpbWyJtYXQtdG9vbGJhci1yb3ciXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhci1yb3ciXSxleHBvcnRBczpbIm1hdFRvb2xiYXJSb3ciXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhScCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJtYXQtdG9vbGJhci1yb3ciLGV4cG9ydEFzOiJtYXRUb29sYmFyUm93Iixob3N0OntjbGFzczoibWF0LXRvb2xiYXItcm93In19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBhZj1jbGFzcyBleHRlbmRzIHhrdHtjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIodCksdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9kb2N1bWVudD1vfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmKHRoaXMuX2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKSx0aGlzLl90b29sYmFyUm93cy5jaGFuZ2VzLnN1YnNjcmliZSgoKT0+dGhpcy5fY2hlY2tUb29sYmFyTWl4ZWRNb2RlcygpKSl9X2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKXt0aGlzLl90b29sYmFyUm93cy5sZW5ndGgmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQXJyYXkuZnJvbSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2RlcykuZmlsdGVyKGU9PiEoZS5jbGFzc0xpc3QmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKCJtYXQtdG9vbGJhci1yb3ciKSkpLmZpbHRlcihlPT5lLm5vZGVUeXBlIT09KHRoaXMuX2RvY3VtZW50P3RoaXMuX2RvY3VtZW50LkNPTU1FTlRfTk9ERTo4KSkuc29tZShlPT4hIShlLnRleHRDb250ZW50JiZlLnRleHRDb250ZW50LnRyaW0oKSkpJiZ2a3QoKX19O2FmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGFmKSh2KEwpLHYoVnQpLHYoX3QpKX07YWYuXHUwMjc1Y21wPXooe3R5cGU6YWYsc2VsZWN0b3JzOltbIm1hdC10b29sYmFyIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQsZSxvKXtpZih0JjEmJmdvKG8sUnAsNSksdCYyKXtsZXQgaTtIdChpPUZ0KCkpJiYoZS5fdG9vbGJhclJvd3M9aSl9fSxob3N0QXR0cnM6WzEsIm1hdC10b29sYmFyIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJtYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzIixlLl90b29sYmFyUm93cy5sZW5ndGg+MCkoIm1hdC10b29sYmFyLXNpbmdsZS1yb3ciLGUuX3Rvb2xiYXJSb3dzLmxlbmd0aD09PTApfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VG9vbGJhciJdLGZlYXR1cmVzOlthZV0sbmdDb250ZW50U2VsZWN0b3JzOnlrdCxkZWNsczoyLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKFBrdCksWW4oMCksWW4oMSwxKSl9LHN0eWxlczpbYC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sYmFye291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7ZGlzcGxheTpmbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCV9CmBdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2FmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07YWYucHJvcERlY29yYXRvcnM9e190b29sYmFyUm93czpbe3R5cGU6bG8sYXJnczpbUnAse2Rlc2NlbmRhbnRzOiEwfV19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGFmLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRvb2xiYXIiLGV4cG9ydEFzOiJtYXRUb29sYmFyIix0ZW1wbGF0ZTpgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pgo8bmctY29udGVudCBzZWxlY3Q9Im1hdC10b29sYmFyLXJvdyI+PC9uZy1jb250ZW50PgpgLGlucHV0czpbImNvbG9yIl0saG9zdDp7Y2xhc3M6Im1hdC10b29sYmFyIiwiW2NsYXNzLm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NdIjoiX3Rvb2xiYXJSb3dzLmxlbmd0aCA+IDAiLCJbY2xhc3MubWF0LXRvb2xiYXItc2luZ2xlLXJvd10iOiJfdG9vbGJhclJvd3MubGVuZ3RoID09PSAwIn0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsc3R5bGVzOltgLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRvb2xiYXJ7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3tkaXNwbGF5OmZsZXg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MCAxNnB4O3dpZHRoOjEwMCU7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3N7ZGlzcGxheTpmbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47d2lkdGg6MTAwJX0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOlZ0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dfSx7X3Rvb2xiYXJSb3dzOlt7dHlwZTpsbyxhcmdzOltScCx7ZGVzY2VuZGFudHM6ITB9XX1dfSl9KSgpO2Z1bmN0aW9uIHZrdCgpe3Rocm93IEVycm9yKCJNYXRUb29sYmFyOiBBdHRlbXB0aW5nIHRvIGNvbWJpbmUgZGlmZmVyZW50IHRvb2xiYXIgbW9kZXMuIEVpdGhlciBzcGVjaWZ5IG11bHRpcGxlIGA8bWF0LXRvb2xiYXItcm93PmAgZWxlbWVudHMgZXhwbGljaXRseSBvciBqdXN0IHBsYWNlIGNvbnRlbnQgaW5zaWRlIG9mIGEgYDxtYXQtdG9vbGJhcj5gIGZvciBhIHNpbmdsZSByb3cuIil9dmFyIEpnPWNsYXNze307SmcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SmcpfTtKZy5cdTAyNzVtb2Q9cSh7dHlwZTpKZ30pO0pnLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbRHRdLER0XX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhKZyxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbRHRdLGV4cG9ydHM6W2FmLFJwLER0XSxkZWNsYXJhdGlvbnM6W2FmLFJwXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChKZyx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2FmLFJwXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltEdF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bYWYsUnAsRHRdfX0pfSkoKTtmdW5jdGlvbiBTa3Qobix0KXtuJjEmJlluKDApfXZhciBVVT1bIioiXTtmdW5jdGlvbiBSa3Qobix0KXt9dmFyIEVrdD1mdW5jdGlvbihuKXtyZXR1cm57YW5pbWF0aW9uRHVyYXRpb246bn19LGtrdD1mdW5jdGlvbihuLHQpe3JldHVybnt2YWx1ZTpuLHBhcmFtczp0fX0sTmt0PVsidGFiQm9keVdyYXBwZXIiXSxUa3Q9WyJ0YWJIZWFkZXIiXTtmdW5jdGlvbiBBa3Qobix0KXt9ZnVuY3Rpb24gRGt0KG4sdCl7aWYobiYxJiZrKDAsQWt0LDAsMCwibmctdGVtcGxhdGUiLDkpLG4mMil7bGV0IGU9UygpLiRpbXBsaWNpdDtQKCJjZGtQb3J0YWxPdXRsZXQiLGUudGVtcGxhdGVMYWJlbCl9fWZ1bmN0aW9uIElrdChuLHQpe2lmKG4mMSYmVCgwKSxuJjIpe2xldCBlPVMoKS4kaW1wbGljaXQ7SWUoZS50ZXh0TGFiZWwpfX1mdW5jdGlvbiB6a3Qobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDYpLEEoImNsaWNrIixmdW5jdGlvbigpe2xldCBpPU90KGUpLGE9aS4kaW1wbGljaXQscj1pLmluZGV4LHM9UygpLGw9d2UoMSk7cmV0dXJuIHMuX2hhbmRsZUNsaWNrKGEsbCxyKX0pKCJjZGtGb2N1c0NoYW5nZSIsZnVuY3Rpb24oaSl7bGV0IHI9T3QoZSkuaW5kZXg7cmV0dXJuIFMoKS5fdGFiRm9jdXNDaGFuZ2VkKGkscil9KSx1KDEsImRpdiIsNyksaygyLERrdCwxLDEsIm5nLXRlbXBsYXRlIiw4KSxrKDMsSWt0LDEsMSwibmctdGVtcGxhdGUiLDgpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPXQuaW5kZXgsaT1TKCk7bWUoIm1hdC10YWItbGFiZWwtYWN0aXZlIixpLnNlbGVjdGVkSW5kZXg9PW8pLFAoImlkIixpLl9nZXRUYWJMYWJlbElkKG8pKSgiZGlzYWJsZWQiLGUuZGlzYWJsZWQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5kaXNhYmxlZHx8aS5kaXNhYmxlUmlwcGxlKSxyZSgidGFiSW5kZXgiLGkuX2dldFRhYkluZGV4KGUsbykpKCJhcmlhLXBvc2luc2V0IixvKzEpKCJhcmlhLXNldHNpemUiLGkuX3RhYnMubGVuZ3RoKSgiYXJpYS1jb250cm9scyIsaS5fZ2V0VGFiQ29udGVudElkKG8pKSgiYXJpYS1zZWxlY3RlZCIsaS5zZWxlY3RlZEluZGV4PT1vKSgiYXJpYS1sYWJlbCIsZS5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLCFlLmFyaWFMYWJlbCYmZS5hcmlhTGFiZWxsZWRieT9lLmFyaWFMYWJlbGxlZGJ5Om51bGwpLHgoMiksUCgibmdJZiIsZS50ZW1wbGF0ZUxhYmVsKSx4KDEpLFAoIm5nSWYiLCFlLnRlbXBsYXRlTGFiZWwpfX1mdW5jdGlvbiBIa3Qobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJtYXQtdGFiLWJvZHkiLDEwKSxBKCJfb25DZW50ZXJlZCIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLl9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpfSkoIl9vbkNlbnRlcmluZyIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5fc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQoaSl9KSxoKCl9aWYobiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPXQuaW5kZXgsaT1TKCk7bWUoIm1hdC10YWItYm9keS1hY3RpdmUiLGkuc2VsZWN0ZWRJbmRleD09PW8pLFAoImlkIixpLl9nZXRUYWJDb250ZW50SWQobykpKCJjb250ZW50IixlLmNvbnRlbnQpKCJwb3NpdGlvbiIsZS5wb3NpdGlvbikoIm9yaWdpbiIsZS5vcmlnaW4pKCJhbmltYXRpb25EdXJhdGlvbiIsaS5hbmltYXRpb25EdXJhdGlvbikscmUoInRhYmluZGV4IixpLmNvbnRlbnRUYWJJbmRleCE9bnVsbCYmaS5zZWxlY3RlZEluZGV4PT09bz9pLmNvbnRlbnRUYWJJbmRleDpudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IixpLl9nZXRUYWJMYWJlbElkKG8pKX19dmFyIEphdD1bInRhYkxpc3RDb250YWluZXIiXSwkYXQ9WyJ0YWJMaXN0Il0sdHJ0PVsibmV4dFBhZ2luYXRvciJdLGVydD1bInByZXZpb3VzUGFnaW5hdG9yIl0sRmt0PVsibWF0LXRhYi1uYXYtYmFyIiwiIl0sWVU9bmV3IHl0KCJNYXRJbmtCYXJQb3NpdGlvbmVyIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpMa3R9KTtmdW5jdGlvbiBMa3QoKXtyZXR1cm4gdD0+KHtsZWZ0OnQ/KHQub2Zmc2V0TGVmdHx8MCkrInB4IjoiMCIsd2lkdGg6dD8odC5vZmZzZXRXaWR0aHx8MCkrInB4IjoiMCJ9KX12YXIgYmw9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX25nWm9uZT1lLHRoaXMuX2lua0JhclBvc2l0aW9uZXI9byx0aGlzLl9hbmltYXRpb25Nb2RlPWl9YWxpZ25Ub0VsZW1lbnQodCl7dGhpcy5zaG93KCksdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSE9InVuZGVmaW5lZCI/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT50aGlzLl9zZXRTdHlsZXModCkpfSk6dGhpcy5fc2V0U3R5bGVzKHQpfXNob3coKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSJ9aGlkZSgpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4ifV9zZXRTdHlsZXModCl7bGV0IGU9dGhpcy5faW5rQmFyUG9zaXRpb25lcih0KSxvPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtvLnN0eWxlLmxlZnQ9ZS5sZWZ0LG8uc3R5bGUud2lkdGg9ZS53aWR0aH19O2JsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGJsKSh2KEwpLHYoQ3QpLHYoWVUpLHYoc24sOCkpfTtibC5cdTAyNzVkaXI9dnQoe3R5cGU6Ymwsc2VsZWN0b3JzOltbIm1hdC1pbmstYmFyIl1dLGhvc3RBdHRyczpbMSwibWF0LWluay1iYXIiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmbWUoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixlLl9hbmltYXRpb25Nb2RlPT09Ik5vb3BBbmltYXRpb25zIil9fSk7YmwuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpDdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbWVVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3NuXX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGJsLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Im1hdC1pbmstYmFyIixob3N0OntjbGFzczoibWF0LWluay1iYXIiLCJbY2xhc3MuX21hdC1hbmltYXRpb24tbm9vcGFibGVdIjoiX2FuaW1hdGlvbk1vZGUgPT09ICdOb29wQW5pbWF0aW9ucycifX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6Q3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1lVXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSxudWxsKX0pKCk7dmFyIGxrPW5ldyB5dCgiTWF0VGFiQ29udGVudCIpLEVwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19O0VwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEVwKSh2KGtlKSl9O0VwLlx1MDI3NWRpcj12dCh7dHlwZTpFcCxzZWxlY3RvcnM6W1siIiwibWF0VGFiQ29udGVudCIsIiJdXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOmxrLHVzZUV4aXN0aW5nOkVwfV0pXX0pO0VwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a2V9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRXAsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRhYkNvbnRlbnRdIixwcm92aWRlcnM6W3twcm92aWRlOmxrLHVzZUV4aXN0aW5nOkVwfV19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmtlfV19LG51bGwpfSkoKTt2YXIgY2s9bmV3IHl0KCJNYXRUYWJMYWJlbCIpLG1rPW5ldyB5dCgiTUFUX1RBQiIpLGFtPWNsYXNzIGV4dGVuZHMgdGN7Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKHQsZSksdGhpcy5fY2xvc2VzdFRhYj1vfX07YW0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8YW0pKHYoa2UpLHYoX2UpLHYobWssOCkpfTthbS5cdTAyNzVkaXI9dnQoe3R5cGU6YW0sc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbGFiZWwiLCIiXSxbIiIsIm1hdFRhYkxhYmVsIiwiIl1dLGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6Y2ssdXNlRXhpc3Rpbmc6YW19XSksYWVdfSk7YW0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprZX0se3R5cGU6X2V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W21rXX0se3R5cGU6SH1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGFtLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttYXQtdGFiLWxhYmVsXSwgW21hdFRhYkxhYmVsXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpjayx1c2VFeGlzdGluZzphbX1dfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTprZX0se3R5cGU6X2V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W21rXX0se3R5cGU6SH1dfV19LG51bGwpfSkoKTt2YXIgQmt0PVZyKGNsYXNze30pLGZrPW5ldyB5dCgiTUFUX1RBQl9HUk9VUCIpLExzPWNsYXNzIGV4dGVuZHMgQmt0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fY2xvc2VzdFRhYkdyb3VwPWUsdGhpcy50ZXh0TGFiZWw9IiIsdGhpcy5fY29udGVudFBvcnRhbD1udWxsLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgSnQsdGhpcy5wb3NpdGlvbj1udWxsLHRoaXMub3JpZ2luPW51bGwsdGhpcy5pc0FjdGl2ZT0hMX1nZXQgdGVtcGxhdGVMYWJlbCgpe3JldHVybiB0aGlzLl90ZW1wbGF0ZUxhYmVsfXNldCB0ZW1wbGF0ZUxhYmVsKHQpe3RoaXMuX3NldFRlbXBsYXRlTGFiZWxJbnB1dCh0KX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLl9jb250ZW50UG9ydGFsfW5nT25DaGFuZ2VzKHQpeyh0Lmhhc093blByb3BlcnR5KCJ0ZXh0TGFiZWwiKXx8dC5oYXNPd25Qcm9wZXJ0eSgiZGlzYWJsZWQiKSkmJnRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX1uZ09uSW5pdCgpe3RoaXMuX2NvbnRlbnRQb3J0YWw9bmV3ICRsKHRoaXMuX2V4cGxpY2l0Q29udGVudHx8dGhpcy5faW1wbGljaXRDb250ZW50LHRoaXMuX3ZpZXdDb250YWluZXJSZWYpfV9zZXRUZW1wbGF0ZUxhYmVsSW5wdXQodCl7dCYmdC5fY2xvc2VzdFRhYj09PXRoaXMmJih0aGlzLl90ZW1wbGF0ZUxhYmVsPXQpfX07THMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8THMpKHYoX2UpLHYoZmssOCkpfTtMcy5cdTAyNzVjbXA9eih7dHlwZTpMcyxzZWxlY3RvcnM6W1sibWF0LXRhYiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LGUsbyl7aWYodCYxJiYoZ28obyxjayw1KSxnbyhvLGxrLDcsa2UpKSx0JjIpe2xldCBpO0h0KGk9RnQoKSkmJihlLnRlbXBsYXRlTGFiZWw9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUuX2V4cGxpY2l0Q29udGVudD1pLmZpcnN0KX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmcGUoa2UsNyksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5faW1wbGljaXRDb250ZW50PW8uZmlyc3QpfX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLHRleHRMYWJlbDpbImxhYmVsIiwidGV4dExhYmVsIl0sYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXX0sZXhwb3J0QXM6WyJtYXRUYWIiXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOm1rLHVzZUV4aXN0aW5nOkxzfV0pLGFlLFdlXSxuZ0NvbnRlbnRTZWxlY3RvcnM6VVUsZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih5bygpLGsoMCxTa3QsMSwwLCJuZy10ZW1wbGF0ZSIpKX0sZW5jYXBzdWxhdGlvbjoyfSk7THMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfZX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbZmtdfSx7dHlwZTpIfV19XTtMcy5wcm9wRGVjb3JhdG9ycz17dGVtcGxhdGVMYWJlbDpbe3R5cGU6S28sYXJnczpbY2tdfV0sX2V4cGxpY2l0Q29udGVudDpbe3R5cGU6S28sYXJnczpbbGsse3JlYWQ6a2Usc3RhdGljOiEwfV19XSxfaW1wbGljaXRDb250ZW50Olt7dHlwZTpJdCxhcmdzOltrZSx7c3RhdGljOiEwfV19XSx0ZXh0TGFiZWw6W3t0eXBlOmQsYXJnczpbImxhYmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTHMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFiIix0ZW1wbGF0ZTpgPCEtLSBDcmVhdGUgYSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIDxtYXQtdGFiPiBzbyB0aGF0IHdlIGNhbiBncmFiIGEgcmVmZXJlbmNlIHRvIHRoaXMKICAgIFRlbXBsYXRlUmVmIGFuZCB1c2UgaXQgaW4gYSBQb3J0YWwgdG8gcmVuZGVyIHRoZSB0YWIgY29udGVudCBpbiB0aGUgYXBwcm9wcmlhdGUgcGxhY2UgaW4gdGhlCiAgICB0YWItZ3JvdXAuIC0tPgo8bmctdGVtcGxhdGU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+CmAsaW5wdXRzOlsiZGlzYWJsZWQiXSxjaGFuZ2VEZXRlY3Rpb246dHQuRGVmYXVsdCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsZXhwb3J0QXM6Im1hdFRhYiIscHJvdmlkZXJzOlt7cHJvdmlkZTptayx1c2VFeGlzdGluZzpMc31dfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpfZX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbZmtdfSx7dHlwZTpIfV19XX0se3RleHRMYWJlbDpbe3R5cGU6ZCxhcmdzOlsibGFiZWwiXX1dLHRlbXBsYXRlTGFiZWw6W3t0eXBlOktvLGFyZ3M6W2NrXX1dLF9leHBsaWNpdENvbnRlbnQ6W3t0eXBlOktvLGFyZ3M6W2xrLHtyZWFkOmtlLHN0YXRpYzohMH1dfV0sX2ltcGxpY2l0Q29udGVudDpbe3R5cGU6SXQsYXJnczpba2Use3N0YXRpYzohMH1dfV0sYXJpYUxhYmVsOlt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XX0pfSkoKTt2YXIgbnJ0PXt0cmFuc2xhdGVUYWI6eHIoInRyYW5zbGF0ZVRhYiIsW2hpKCJjZW50ZXIsIHZvaWQsIGxlZnQtb3JpZ2luLWNlbnRlciwgcmlnaHQtb3JpZ2luLWNlbnRlciIsTG4oe3RyYW5zZm9ybToibm9uZSJ9KSksaGkoImxlZnQiLExuKHt0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKSIsbWluSGVpZ2h0OiIxcHgifSkpLGhpKCJyaWdodCIsTG4oe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkiLG1pbkhlaWdodDoiMXB4In0pKSxiaSgiKiA9PiBsZWZ0LCAqID0+IHJpZ2h0LCBsZWZ0ID0+IGNlbnRlciwgcmlnaHQgPT4gY2VudGVyIixEaSgie3thbmltYXRpb25EdXJhdGlvbn19IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSIpKSxiaSgidm9pZCA9PiBsZWZ0LW9yaWdpbi1jZW50ZXIiLFtMbih7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkifSksRGkoInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKV0pLGJpKCJ2b2lkID0+IHJpZ2h0LW9yaWdpbi1jZW50ZXIiLFtMbih7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSJ9KSxEaSgie3thbmltYXRpb25EdXJhdGlvbn19IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSIpXSldKX07dmFyIHpNPWNsYXNzIGV4dGVuZHMgX2l7Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIodCxlLGkpLHRoaXMuX2hvc3Q9byx0aGlzLl9jZW50ZXJpbmdTdWI9RW8uRU1QVFksdGhpcy5fbGVhdmluZ1N1Yj1Fby5FTVBUWX1uZ09uSW5pdCgpe3N1cGVyLm5nT25Jbml0KCksdGhpcy5fY2VudGVyaW5nU3ViPXRoaXMuX2hvc3QuX2JlZm9yZUNlbnRlcmluZy5waXBlKFNvKHRoaXMuX2hvc3QuX2lzQ2VudGVyUG9zaXRpb24odGhpcy5faG9zdC5fcG9zaXRpb24pKSkuc3Vic2NyaWJlKHQ9Pnt0JiYhdGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLmF0dGFjaCh0aGlzLl9ob3N0Ll9jb250ZW50KX0pLHRoaXMuX2xlYXZpbmdTdWI9dGhpcy5faG9zdC5fYWZ0ZXJMZWF2aW5nQ2VudGVyLnN1YnNjcmliZSgoKT0+e3RoaXMuZGV0YWNoKCl9KX1uZ09uRGVzdHJveSgpe3N1cGVyLm5nT25EZXN0cm95KCksdGhpcy5fY2VudGVyaW5nU3ViLnVuc3Vic2NyaWJlKCksdGhpcy5fbGVhdmluZ1N1Yi51bnN1YnNjcmliZSgpfX07ek0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ek0pKHYoX28pLHYoX2UpLHYodG8oKCk9PmljKSksdihfdCkpfTt6TS5cdTAyNzVkaXI9dnQoe3R5cGU6ek0sc2VsZWN0b3JzOltbIiIsIm1hdFRhYkJvZHlIb3N0IiwiIl1dLGZlYXR1cmVzOlthZV19KTt6TS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOl9vfSx7dHlwZTpfZX0se3R5cGU6aWMsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOlt0bygoKT0+aWMpXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh6TSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0VGFiQm9keUhvc3RdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X299LHt0eXBlOl9lfSx7dHlwZTppYyxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3RvKCgpPT5pYyldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV19LG51bGwpfSkoKTt2YXIgc089Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9kaXI9ZSx0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249RW8uRU1QVFksdGhpcy5fdHJhbnNsYXRlVGFiQ29tcGxldGU9bmV3IEp0LHRoaXMuX29uQ2VudGVyaW5nPW5ldyAkLHRoaXMuX2JlZm9yZUNlbnRlcmluZz1uZXcgJCx0aGlzLl9hZnRlckxlYXZpbmdDZW50ZXI9bmV3ICQsdGhpcy5fb25DZW50ZXJlZD1uZXcgJCghMCksdGhpcy5hbmltYXRpb25EdXJhdGlvbj0iNTAwbXMiLGUmJih0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249ZS5jaGFuZ2Uuc3Vic2NyaWJlKGk9Pnt0aGlzLl9jb21wdXRlUG9zaXRpb25BbmltYXRpb25TdGF0ZShpKSxvLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLnBpcGUoWG8oKGksYSk9PmkuZnJvbVN0YXRlPT09YS5mcm9tU3RhdGUmJmkudG9TdGF0ZT09PWEudG9TdGF0ZSkpLnN1YnNjcmliZShpPT57dGhpcy5faXNDZW50ZXJQb3NpdGlvbihpLnRvU3RhdGUpJiZ0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fb25DZW50ZXJlZC5lbWl0KCksdGhpcy5faXNDZW50ZXJQb3NpdGlvbihpLmZyb21TdGF0ZSkmJiF0aGlzLl9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX3Bvc2l0aW9uKSYmdGhpcy5fYWZ0ZXJMZWF2aW5nQ2VudGVyLmVtaXQoKX0pfXNldCBwb3NpdGlvbih0KXt0aGlzLl9wb3NpdGlvbkluZGV4PXQsdGhpcy5fY29tcHV0ZVBvc2l0aW9uQW5pbWF0aW9uU3RhdGUoKX1uZ09uSW5pdCgpe3RoaXMuX3Bvc2l0aW9uPT0iY2VudGVyIiYmdGhpcy5vcmlnaW4hPW51bGwmJih0aGlzLl9wb3NpdGlvbj10aGlzLl9jb21wdXRlUG9zaXRpb25Gcm9tT3JpZ2luKHRoaXMub3JpZ2luKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90cmFuc2xhdGVUYWJDb21wbGV0ZS5jb21wbGV0ZSgpfV9vblRyYW5zbGF0ZVRhYlN0YXJ0ZWQodCl7bGV0IGU9dGhpcy5faXNDZW50ZXJQb3NpdGlvbih0LnRvU3RhdGUpO3RoaXMuX2JlZm9yZUNlbnRlcmluZy5lbWl0KGUpLGUmJnRoaXMuX29uQ2VudGVyaW5nLmVtaXQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCl9X2dldExheW91dERpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXImJnRoaXMuX2Rpci52YWx1ZT09PSJydGwiPyJydGwiOiJsdHIifV9pc0NlbnRlclBvc2l0aW9uKHQpe3JldHVybiB0PT0iY2VudGVyInx8dD09ImxlZnQtb3JpZ2luLWNlbnRlciJ8fHQ9PSJyaWdodC1vcmlnaW4tY2VudGVyIn1fY29tcHV0ZVBvc2l0aW9uQW5pbWF0aW9uU3RhdGUodD10aGlzLl9nZXRMYXlvdXREaXJlY3Rpb24oKSl7dGhpcy5fcG9zaXRpb25JbmRleDwwP3RoaXMuX3Bvc2l0aW9uPXQ9PSJsdHIiPyJsZWZ0IjoicmlnaHQiOnRoaXMuX3Bvc2l0aW9uSW5kZXg+MD90aGlzLl9wb3NpdGlvbj10PT0ibHRyIj8icmlnaHQiOiJsZWZ0Ijp0aGlzLl9wb3NpdGlvbj0iY2VudGVyIn1fY29tcHV0ZVBvc2l0aW9uRnJvbU9yaWdpbih0KXtsZXQgZT10aGlzLl9nZXRMYXlvdXREaXJlY3Rpb24oKTtyZXR1cm4gZT09Imx0ciImJnQ8PTB8fGU9PSJydGwiJiZ0PjA/ImxlZnQtb3JpZ2luLWNlbnRlciI6InJpZ2h0LW9yaWdpbi1jZW50ZXIifX07c08uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8c08pKHYoTCksdihOZSw4KSx2KFR0KSl9O3NPLlx1MDI3NWRpcj12dCh7dHlwZTpzTyxpbnB1dHM6e2FuaW1hdGlvbkR1cmF0aW9uOiJhbmltYXRpb25EdXJhdGlvbiIscG9zaXRpb246InBvc2l0aW9uIixfY29udGVudDpbImNvbnRlbnQiLCJfY29udGVudCJdLG9yaWdpbjoib3JpZ2luIn0sb3V0cHV0czp7X29uQ2VudGVyaW5nOiJfb25DZW50ZXJpbmciLF9iZWZvcmVDZW50ZXJpbmc6Il9iZWZvcmVDZW50ZXJpbmciLF9hZnRlckxlYXZpbmdDZW50ZXI6Il9hZnRlckxlYXZpbmdDZW50ZXIiLF9vbkNlbnRlcmVkOiJfb25DZW50ZXJlZCJ9fSk7c08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOlR0fV07c08ucHJvcERlY29yYXRvcnM9e19vbkNlbnRlcmluZzpbe3R5cGU6Qn1dLF9iZWZvcmVDZW50ZXJpbmc6W3t0eXBlOkJ9XSxfYWZ0ZXJMZWF2aW5nQ2VudGVyOlt7dHlwZTpCfV0sX29uQ2VudGVyZWQ6W3t0eXBlOkJ9XSxfY29udGVudDpbe3R5cGU6ZCxhcmdzOlsiY29udGVudCJdfV0sb3JpZ2luOlt7dHlwZTpkfV0sYW5pbWF0aW9uRHVyYXRpb246W3t0eXBlOmR9XSxwb3NpdGlvbjpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoc08sW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpUdH1dfSx7X29uQ2VudGVyaW5nOlt7dHlwZTpCfV0sX2JlZm9yZUNlbnRlcmluZzpbe3R5cGU6Qn1dLF9hZnRlckxlYXZpbmdDZW50ZXI6W3t0eXBlOkJ9XSxfb25DZW50ZXJlZDpbe3R5cGU6Qn1dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTpkfV0scG9zaXRpb246W3t0eXBlOmR9XSxfY29udGVudDpbe3R5cGU6ZCxhcmdzOlsiY29udGVudCJdfV0sb3JpZ2luOlt7dHlwZTpkfV19KX0pKCk7dmFyIGljPWNsYXNzIGV4dGVuZHMgc097Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKHQsZSxvKX19O2ljLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGljKSh2KEwpLHYoTmUsOCksdihUdCkpfTtpYy5cdTAyNzVjbXA9eih7dHlwZTppYyxzZWxlY3RvcnM6W1sibWF0LXRhYi1ib2R5Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmcGUoX2ksNSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5fcG9ydGFsSG9zdD1vLmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LXRhYi1ib2R5Il0sZmVhdHVyZXM6W2FlXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1siY2RrU2Nyb2xsYWJsZSIsIiIsMSwibWF0LXRhYi1ib2R5LWNvbnRlbnQiXSxbImNvbnRlbnQiLCIiXSxbIm1hdFRhYkJvZHlIb3N0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDAsMSksQSgiQHRyYW5zbGF0ZVRhYi5zdGFydCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX29uVHJhbnNsYXRlVGFiU3RhcnRlZChpKX0pKCJAdHJhbnNsYXRlVGFiLmRvbmUiLGZ1bmN0aW9uKGkpe3JldHVybiBlLl90cmFuc2xhdGVUYWJDb21wbGV0ZS5uZXh0KGkpfSksaygyLFJrdCwwLDAsIm5nLXRlbXBsYXRlIiwyKSxoKCkpLHQmMiYmUCgiQHRyYW5zbGF0ZVRhYiIsaGwoMyxra3QsZS5fcG9zaXRpb24sYW8oMSxFa3QsZS5hbmltYXRpb25EdXJhdGlvbikpKX0sZGlyZWN0aXZlczpbek1dLHN0eWxlczpbYC5tYXQtdGFiLWJvZHktY29udGVudHtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvfS5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHktY29udGVudHtvdmVyZmxvdzpoaWRkZW59CmBdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W25ydC50cmFuc2xhdGVUYWJdfX0pO2ljLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpUdH1dO2ljLnByb3BEZWNvcmF0b3JzPXtfcG9ydGFsSG9zdDpbe3R5cGU6SXQsYXJnczpbX2ldfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhpYyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1hdC10YWItYm9keSIsdGVtcGxhdGU6YDxkaXYgY2xhc3M9Im1hdC10YWItYm9keS1jb250ZW50IiAjY29udGVudAogICAgIFtAdHJhbnNsYXRlVGFiXT0iewogICAgICAgIHZhbHVlOiBfcG9zaXRpb24sCiAgICAgICAgcGFyYW1zOiB7YW5pbWF0aW9uRHVyYXRpb246IGFuaW1hdGlvbkR1cmF0aW9ufQogICAgIH0iCiAgICAgKEB0cmFuc2xhdGVUYWIuc3RhcnQpPSJfb25UcmFuc2xhdGVUYWJTdGFydGVkKCRldmVudCkiCiAgICAgKEB0cmFuc2xhdGVUYWIuZG9uZSk9Il90cmFuc2xhdGVUYWJDb21wbGV0ZS5uZXh0KCRldmVudCkiCiAgICAgY2RrU2Nyb2xsYWJsZT4KICA8bmctdGVtcGxhdGUgbWF0VGFiQm9keUhvc3Q+PC9uZy10ZW1wbGF0ZT4KPC9kaXY+CmAsZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LGFuaW1hdGlvbnM6W25ydC50cmFuc2xhdGVUYWJdLGhvc3Q6e2NsYXNzOiJtYXQtdGFiLWJvZHkifSxzdHlsZXM6W2AubWF0LXRhYi1ib2R5LWNvbnRlbnR7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0b30ubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodCAubWF0LXRhYi1ib2R5LWNvbnRlbnR7b3ZlcmZsb3c6aGlkZGVufQpgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpUdH1dfSx7X3BvcnRhbEhvc3Q6W3t0eXBlOkl0LGFyZ3M6W19pXX1dfSl9KSgpO3ZhciBIMz1uZXcgeXQoIk1BVF9UQUJTX0NPTkZJRyIpO3ZhciBWa3Q9MCxqVT1jbGFzc3t9LGprdD1Gcyh0bChjbGFzc3tjb25zdHJ1Y3RvcihuKXt0aGlzLl9lbGVtZW50UmVmPW59fSksInByaW1hcnkiKSxsTz1jbGFzcyBleHRlbmRzIGprdHtjb25zdHJ1Y3Rvcih0LGUsbyxpKXt2YXIgYTtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2FuaW1hdGlvbk1vZGU9aSx0aGlzLl90YWJzPW5ldyBmXyx0aGlzLl9pbmRleFRvU2VsZWN0PTAsdGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQ9MCx0aGlzLl90YWJzU3Vic2NyaXB0aW9uPUVvLkVNUFRZLHRoaXMuX3RhYkxhYmVsU3Vic2NyaXB0aW9uPUVvLkVNUFRZLHRoaXMuX3NlbGVjdGVkSW5kZXg9bnVsbCx0aGlzLmhlYWRlclBvc2l0aW9uPSJhYm92ZSIsdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlPW5ldyAkLHRoaXMuZm9jdXNDaGFuZ2U9bmV3ICQsdGhpcy5hbmltYXRpb25Eb25lPW5ldyAkLHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2U9bmV3ICQoITApLHRoaXMuX2dyb3VwSWQ9Vmt0KyssdGhpcy5hbmltYXRpb25EdXJhdGlvbj1vJiZvLmFuaW1hdGlvbkR1cmF0aW9uP28uYW5pbWF0aW9uRHVyYXRpb246IjUwMG1zIix0aGlzLmRpc2FibGVQYWdpbmF0aW9uPW8mJm8uZGlzYWJsZVBhZ2luYXRpb24hPW51bGw/by5kaXNhYmxlUGFnaW5hdGlvbjohMSx0aGlzLmR5bmFtaWNIZWlnaHQ9byYmby5keW5hbWljSGVpZ2h0IT1udWxsP28uZHluYW1pY0hlaWdodDohMSx0aGlzLmNvbnRlbnRUYWJJbmRleD0oYT1vPT1udWxsP3ZvaWQgMDpvLmNvbnRlbnRUYWJJbmRleCkhPT1udWxsJiZhIT09dm9pZCAwP2E6bnVsbH1nZXQgZHluYW1pY0hlaWdodCgpe3JldHVybiB0aGlzLl9keW5hbWljSGVpZ2h0fXNldCBkeW5hbWljSGVpZ2h0KHQpe3RoaXMuX2R5bmFtaWNIZWlnaHQ9WmUodCl9Z2V0IHNlbGVjdGVkSW5kZXgoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleH1zZXQgc2VsZWN0ZWRJbmRleCh0KXt0aGlzLl9pbmRleFRvU2VsZWN0PVJpKHQsbnVsbCl9Z2V0IGFuaW1hdGlvbkR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbkR1cmF0aW9ufXNldCBhbmltYXRpb25EdXJhdGlvbih0KXt0aGlzLl9hbmltYXRpb25EdXJhdGlvbj0vXlxkKyQvLnRlc3QodCk/dCsibXMiOnR9Z2V0IGNvbnRlbnRUYWJJbmRleCgpe3JldHVybiB0aGlzLl9jb250ZW50VGFiSW5kZXh9c2V0IGNvbnRlbnRUYWJJbmRleCh0KXt0aGlzLl9jb250ZW50VGFiSW5kZXg9UmkodCxudWxsKX1nZXQgYmFja2dyb3VuZENvbG9yKCl7cmV0dXJuIHRoaXMuX2JhY2tncm91bmRDb2xvcn1zZXQgYmFja2dyb3VuZENvbG9yKHQpe2xldCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLmNsYXNzTGlzdC5yZW1vdmUoYG1hdC1iYWNrZ3JvdW5kLSR7dGhpcy5iYWNrZ3JvdW5kQ29sb3J9YCksdCYmZS5jbGFzc0xpc3QuYWRkKGBtYXQtYmFja2dyb3VuZC0ke3R9YCksdGhpcy5fYmFja2dyb3VuZENvbG9yPXR9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7bGV0IHQ9dGhpcy5faW5kZXhUb1NlbGVjdD10aGlzLl9jbGFtcFRhYkluZGV4KHRoaXMuX2luZGV4VG9TZWxlY3QpO2lmKHRoaXMuX3NlbGVjdGVkSW5kZXghPXQpe2xldCBlPXRoaXMuX3NlbGVjdGVkSW5kZXg9PW51bGw7aWYoIWUpe3RoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudCh0KSk7bGV0IG89dGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudDtvLnN0eWxlLm1pbkhlaWdodD1vLmNsaWVudEhlaWdodCsicHgifVByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pnt0aGlzLl90YWJzLmZvckVhY2goKG8saSk9Pm8uaXNBY3RpdmU9aT09PXQpLGV8fCh0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdCh0KSx0aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodD0iIil9KX10aGlzLl90YWJzLmZvckVhY2goKGUsbyk9PntlLnBvc2l0aW9uPW8tdCx0aGlzLl9zZWxlY3RlZEluZGV4IT1udWxsJiZlLnBvc2l0aW9uPT0wJiYhZS5vcmlnaW4mJihlLm9yaWdpbj10LXRoaXMuX3NlbGVjdGVkSW5kZXgpfSksdGhpcy5fc2VsZWN0ZWRJbmRleCE9PXQmJih0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3N1YnNjcmliZVRvQWxsVGFiQ2hhbmdlcygpLHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCksdGhpcy5fdGFic1N1YnNjcmlwdGlvbj10aGlzLl90YWJzLmNoYW5nZXMuc3Vic2NyaWJlKCgpPT57aWYodGhpcy5fY2xhbXBUYWJJbmRleCh0aGlzLl9pbmRleFRvU2VsZWN0KT09PXRoaXMuX3NlbGVjdGVkSW5kZXgpe2xldCBlPXRoaXMuX3RhYnMudG9BcnJheSgpO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKWlmKGVbb10uaXNBY3RpdmUpe3RoaXMuX2luZGV4VG9TZWxlY3Q9dGhpcy5fc2VsZWN0ZWRJbmRleD1vO2JyZWFrfX10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pfV9zdWJzY3JpYmVUb0FsbFRhYkNoYW5nZXMoKXt0aGlzLl9hbGxUYWJzLmNoYW5nZXMucGlwZShTbyh0aGlzLl9hbGxUYWJzKSkuc3Vic2NyaWJlKHQ9Pnt0aGlzLl90YWJzLnJlc2V0KHQuZmlsdGVyKGU9PmUuX2Nsb3Nlc3RUYWJHcm91cD09PXRoaXN8fCFlLl9jbG9zZXN0VGFiR3JvdXApKSx0aGlzLl90YWJzLm5vdGlmeU9uQ2hhbmdlcygpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLl90YWJzLmRlc3Ryb3koKSx0aGlzLl90YWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1yZWFsaWduSW5rQmFyKCl7dGhpcy5fdGFiSGVhZGVyJiZ0aGlzLl90YWJIZWFkZXIuX2FsaWduSW5rQmFyVG9TZWxlY3RlZFRhYigpfWZvY3VzVGFiKHQpe2xldCBlPXRoaXMuX3RhYkhlYWRlcjtlJiYoZS5mb2N1c0luZGV4PXQpfV9mb2N1c0NoYW5nZWQodCl7dGhpcy5mb2N1c0NoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KHQpKX1fY3JlYXRlQ2hhbmdlRXZlbnQodCl7bGV0IGU9bmV3IGpVO3JldHVybiBlLmluZGV4PXQsdGhpcy5fdGFicyYmdGhpcy5fdGFicy5sZW5ndGgmJihlLnRhYj10aGlzLl90YWJzLnRvQXJyYXkoKVt0XSksZX1fc3Vic2NyaWJlVG9UYWJMYWJlbHMoKXt0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbiYmdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbj15biguLi50aGlzLl90YWJzLm1hcCh0PT50Ll9zdGF0ZUNoYW5nZXMpKS5zdWJzY3JpYmUoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1fY2xhbXBUYWJJbmRleCh0KXtyZXR1cm4gTWF0aC5taW4odGhpcy5fdGFicy5sZW5ndGgtMSxNYXRoLm1heCh0fHwwLDApKX1fZ2V0VGFiTGFiZWxJZCh0KXtyZXR1cm5gbWF0LXRhYi1sYWJlbC0ke3RoaXMuX2dyb3VwSWR9LSR7dH1gfV9nZXRUYWJDb250ZW50SWQodCl7cmV0dXJuYG1hdC10YWItY29udGVudC0ke3RoaXMuX2dyb3VwSWR9LSR7dH1gfV9zZXRUYWJCb2R5V3JhcHBlckhlaWdodCh0KXtpZighdGhpcy5fZHluYW1pY0hlaWdodHx8IXRoaXMuX3RhYkJvZHlXcmFwcGVySGVpZ2h0KXJldHVybjtsZXQgZT10aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50O2Uuc3R5bGUuaGVpZ2h0PXRoaXMuX3RhYkJvZHlXcmFwcGVySGVpZ2h0KyJweCIsdGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQmJihlLnN0eWxlLmhlaWdodD10KyJweCIpfV9yZW1vdmVUYWJCb2R5V3JhcHBlckhlaWdodCgpe2xldCB0PXRoaXMuX3RhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQ9dC5jbGllbnRIZWlnaHQsdC5zdHlsZS5oZWlnaHQ9IiIsdGhpcy5hbmltYXRpb25Eb25lLmVtaXQoKX1faGFuZGxlQ2xpY2sodCxlLG8pe3QuZGlzYWJsZWR8fCh0aGlzLnNlbGVjdGVkSW5kZXg9ZS5mb2N1c0luZGV4PW8pfV9nZXRUYWJJbmRleCh0LGUpe3JldHVybiB0LmRpc2FibGVkP251bGw6dGhpcy5zZWxlY3RlZEluZGV4PT09ZT8wOi0xfV90YWJGb2N1c0NoYW5nZWQodCxlKXt0JiZ0IT09Im1vdXNlIiYmdCE9PSJ0b3VjaCImJih0aGlzLl90YWJIZWFkZXIuZm9jdXNJbmRleD1lKX19O2xPLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGxPKSh2KEwpLHYoVHQpLHYoSDMsOCksdihzbiw4KSl9O2xPLlx1MDI3NWRpcj12dCh7dHlwZTpsTyxpbnB1dHM6e2hlYWRlclBvc2l0aW9uOiJoZWFkZXJQb3NpdGlvbiIsYW5pbWF0aW9uRHVyYXRpb246ImFuaW1hdGlvbkR1cmF0aW9uIixkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24iLGR5bmFtaWNIZWlnaHQ6ImR5bmFtaWNIZWlnaHQiLGNvbnRlbnRUYWJJbmRleDoiY29udGVudFRhYkluZGV4IixzZWxlY3RlZEluZGV4OiJzZWxlY3RlZEluZGV4IixiYWNrZ3JvdW5kQ29sb3I6ImJhY2tncm91bmRDb2xvciJ9LG91dHB1dHM6e3NlbGVjdGVkSW5kZXhDaGFuZ2U6InNlbGVjdGVkSW5kZXhDaGFuZ2UiLGZvY3VzQ2hhbmdlOiJmb2N1c0NoYW5nZSIsYW5pbWF0aW9uRG9uZToiYW5pbWF0aW9uRG9uZSIsc2VsZWN0ZWRUYWJDaGFuZ2U6InNlbGVjdGVkVGFiQ2hhbmdlIn0sZmVhdHVyZXM6W2FlXX0pO2xPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W0gzXX0se3R5cGU6SH1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dO2xPLnByb3BEZWNvcmF0b3JzPXtkeW5hbWljSGVpZ2h0Olt7dHlwZTpkfV0sc2VsZWN0ZWRJbmRleDpbe3R5cGU6ZH1dLGhlYWRlclBvc2l0aW9uOlt7dHlwZTpkfV0sYW5pbWF0aW9uRHVyYXRpb246W3t0eXBlOmR9XSxjb250ZW50VGFiSW5kZXg6W3t0eXBlOmR9XSxkaXNhYmxlUGFnaW5hdGlvbjpbe3R5cGU6ZH1dLGJhY2tncm91bmRDb2xvcjpbe3R5cGU6ZH1dLHNlbGVjdGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkJ9XSxmb2N1c0NoYW5nZTpbe3R5cGU6Qn1dLGFuaW1hdGlvbkRvbmU6W3t0eXBlOkJ9XSxzZWxlY3RlZFRhYkNoYW5nZTpbe3R5cGU6Qn1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobE8sW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W0gzXX0se3R5cGU6SH1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7aGVhZGVyUG9zaXRpb246W3t0eXBlOmR9XSxzZWxlY3RlZEluZGV4Q2hhbmdlOlt7dHlwZTpCfV0sZm9jdXNDaGFuZ2U6W3t0eXBlOkJ9XSxhbmltYXRpb25Eb25lOlt7dHlwZTpCfV0sc2VsZWN0ZWRUYWJDaGFuZ2U6W3t0eXBlOkJ9XSxhbmltYXRpb25EdXJhdGlvbjpbe3R5cGU6ZH1dLGRpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpkfV0sZHluYW1pY0hlaWdodDpbe3R5cGU6ZH1dLGNvbnRlbnRUYWJJbmRleDpbe3R5cGU6ZH1dLHNlbGVjdGVkSW5kZXg6W3t0eXBlOmR9XSxiYWNrZ3JvdW5kQ29sb3I6W3t0eXBlOmR9XX0pfSkoKTt2YXIgb2M9Y2xhc3MgZXh0ZW5kcyBsT3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXtzdXBlcih0LGUsbyxpKX19O29jLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9jKSh2KEwpLHYoVHQpLHYoSDMsOCksdihzbiw4KSl9O29jLlx1MDI3NWNtcD16KHt0eXBlOm9jLHNlbGVjdG9yczpbWyJtYXQtdGFiLWdyb3VwIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQsZSxvKXtpZih0JjEmJmdvKG8sTHMsNSksdCYyKXtsZXQgaTtIdChpPUZ0KCkpJiYoZS5fYWxsVGFicz1pKX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHBlKE5rdCw1KSxwZShUa3QsNSkpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuX3RhYkJvZHlXcmFwcGVyPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLl90YWJIZWFkZXI9by5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC10YWItZ3JvdXAiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmbWUoIm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQiLGUuZHluYW1pY0hlaWdodCkoIm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIixlLmhlYWRlclBvc2l0aW9uPT09ImJlbG93Iil9LGlucHV0czp7Y29sb3I6ImNvbG9yIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZXhwb3J0QXM6WyJtYXRUYWJHcm91cCJdLGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6ZmssdXNlRXhpc3Rpbmc6b2N9XSksYWVdLGRlY2xzOjYsdmFyczo3LGNvbnN0czpbWzMsInNlbGVjdGVkSW5kZXgiLCJkaXNhYmxlUmlwcGxlIiwiZGlzYWJsZVBhZ2luYXRpb24iLCJpbmRleEZvY3VzZWQiLCJzZWxlY3RGb2N1c2VkSW5kZXgiXSxbInRhYkhlYWRlciIsIiJdLFsiY2xhc3MiLCJtYXQtdGFiLWxhYmVsIG1hdC1mb2N1cy1pbmRpY2F0b3IiLCJyb2xlIiwidGFiIiwibWF0VGFiTGFiZWxXcmFwcGVyIiwiIiwibWF0LXJpcHBsZSIsIiIsImNka01vbml0b3JFbGVtZW50Rm9jdXMiLCIiLDMsImlkIiwibWF0LXRhYi1sYWJlbC1hY3RpdmUiLCJkaXNhYmxlZCIsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJjZGtGb2N1c0NoYW5nZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm1hdC10YWItYm9keS13cmFwcGVyIl0sWyJ0YWJCb2R5V3JhcHBlciIsIiJdLFsicm9sZSIsInRhYnBhbmVsIiwzLCJpZCIsIm1hdC10YWItYm9keS1hY3RpdmUiLCJjb250ZW50IiwicG9zaXRpb24iLCJvcmlnaW4iLCJhbmltYXRpb25EdXJhdGlvbiIsIl9vbkNlbnRlcmVkIiwiX29uQ2VudGVyaW5nIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJ0YWIiLCJtYXRUYWJMYWJlbFdyYXBwZXIiLCIiLCJtYXQtcmlwcGxlIiwiIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiIsMSwibWF0LXRhYi1sYWJlbCIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsImlkIiwiZGlzYWJsZWQiLCJtYXRSaXBwbGVEaXNhYmxlZCIsImNsaWNrIiwiY2RrRm9jdXNDaGFuZ2UiXSxbMSwibWF0LXRhYi1sYWJlbC1jb250ZW50Il0sWzMsIm5nSWYiXSxbMywiY2RrUG9ydGFsT3V0bGV0Il0sWyJyb2xlIiwidGFicGFuZWwiLDMsImlkIiwiY29udGVudCIsInBvc2l0aW9uIiwib3JpZ2luIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJfb25DZW50ZXJlZCIsIl9vbkNlbnRlcmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwibWF0LXRhYi1oZWFkZXIiLDAsMSksQSgiaW5kZXhGb2N1c2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5fZm9jdXNDaGFuZ2VkKGkpfSkoInNlbGVjdEZvY3VzZWRJbmRleCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuc2VsZWN0ZWRJbmRleD1pfSksaygyLHprdCw0LDE0LCJkaXYiLDIpLGgoKSx1KDMsImRpdiIsMyw0KSxrKDUsSGt0LDEsOSwibWF0LXRhYi1ib2R5Iiw1KSxoKCkpLHQmMiYmKFAoInNlbGVjdGVkSW5kZXgiLGUuc2VsZWN0ZWRJbmRleHx8MCkoImRpc2FibGVSaXBwbGUiLGUuZGlzYWJsZVJpcHBsZSkoImRpc2FibGVQYWdpbmF0aW9uIixlLmRpc2FibGVQYWdpbmF0aW9uKSx4KDIpLFAoIm5nRm9yT2YiLGUuX3RhYnMpLHgoMSksbWUoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixlLl9hbmltYXRpb25Nb2RlPT09Ik5vb3BBbmltYXRpb25zIikseCgyKSxQKCJuZ0Zvck9mIixlLl90YWJzKSl9LGRpcmVjdGl2ZXM6ZnVuY3Rpb24oKXtyZXR1cm5bVV8sbW4sa3AsbmksdGYsWHQsX2ksaWNdfSxzdHlsZXM6W2AubWF0LXRhYi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21heC13aWR0aDoxMDAlfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX1AbWVkaWEobWF4LXdpZHRoOiA5NTlweCl7Lm1hdC10YWItbGFiZWx7cGFkZGluZzowIDEycHh9fS5tYXQtdGFiLWdyb3VwW21hdC1zdHJldGNoLXRhYnNdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItYm9keS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7dHJhbnNpdGlvbjpoZWlnaHQgNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWJvZHktd3JhcHBlcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItYm9keXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtvdXRsaW5lOjA7ZmxleC1iYXNpczoxMDAlfS5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87ei1pbmRleDoxO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS5tYXQtdGFiLWJvZHktYWN0aXZle292ZXJmbG93LXk6aGlkZGVufQpgXSxlbmNhcHN1bGF0aW9uOjJ9KTtvYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOlR0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltIM119LHt0eXBlOkh9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XTtvYy5wcm9wRGVjb3JhdG9ycz17X2FsbFRhYnM6W3t0eXBlOmxvLGFyZ3M6W0xzLHtkZXNjZW5kYW50czohMH1dfV0sX3RhYkJvZHlXcmFwcGVyOlt7dHlwZTpJdCxhcmdzOlsidGFiQm9keVdyYXBwZXIiXX1dLF90YWJIZWFkZXI6W3t0eXBlOkl0LGFyZ3M6WyJ0YWJIZWFkZXIiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob2MsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFiLWdyb3VwIixleHBvcnRBczoibWF0VGFiR3JvdXAiLHRlbXBsYXRlOmA8bWF0LXRhYi1oZWFkZXIgI3RhYkhlYWRlcgogICAgICAgICAgICAgICBbc2VsZWN0ZWRJbmRleF09InNlbGVjdGVkSW5kZXggfHwgMCIKICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPSJkaXNhYmxlUmlwcGxlIgogICAgICAgICAgICAgICBbZGlzYWJsZVBhZ2luYXRpb25dPSJkaXNhYmxlUGFnaW5hdGlvbiIKICAgICAgICAgICAgICAgKGluZGV4Rm9jdXNlZCk9Il9mb2N1c0NoYW5nZWQoJGV2ZW50KSIKICAgICAgICAgICAgICAgKHNlbGVjdEZvY3VzZWRJbmRleCk9InNlbGVjdGVkSW5kZXggPSAkZXZlbnQiPgogIDxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWwgbWF0LWZvY3VzLWluZGljYXRvciIgcm9sZT0idGFiIiBtYXRUYWJMYWJlbFdyYXBwZXIgbWF0LXJpcHBsZSBjZGtNb25pdG9yRWxlbWVudEZvY3VzCiAgICAgICAqbmdGb3I9ImxldCB0YWIgb2YgX3RhYnM7IGxldCBpID0gaW5kZXgiCiAgICAgICBbaWRdPSJfZ2V0VGFiTGFiZWxJZChpKSIKICAgICAgIFthdHRyLnRhYkluZGV4XT0iX2dldFRhYkluZGV4KHRhYiwgaSkiCiAgICAgICBbYXR0ci5hcmlhLXBvc2luc2V0XT0iaSArIDEiCiAgICAgICBbYXR0ci5hcmlhLXNldHNpemVdPSJfdGFicy5sZW5ndGgiCiAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT0iX2dldFRhYkNvbnRlbnRJZChpKSIKICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPSJzZWxlY3RlZEluZGV4ID09IGkiCiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0idGFiLmFyaWFMYWJlbCB8fCBudWxsIgogICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iKCF0YWIuYXJpYUxhYmVsICYmIHRhYi5hcmlhTGFiZWxsZWRieSkgPyB0YWIuYXJpYUxhYmVsbGVkYnkgOiBudWxsIgogICAgICAgW2NsYXNzLm1hdC10YWItbGFiZWwtYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PSBpIgogICAgICAgW2Rpc2FibGVkXT0idGFiLmRpc2FibGVkIgogICAgICAgW21hdFJpcHBsZURpc2FibGVkXT0idGFiLmRpc2FibGVkIHx8IGRpc2FibGVSaXBwbGUiCiAgICAgICAoY2xpY2spPSJfaGFuZGxlQ2xpY2sodGFiLCB0YWJIZWFkZXIsIGkpIgogICAgICAgKGNka0ZvY3VzQ2hhbmdlKT0iX3RhYkZvY3VzQ2hhbmdlZCgkZXZlbnQsIGkpIj4KCgogICAgPGRpdiBjbGFzcz0ibWF0LXRhYi1sYWJlbC1jb250ZW50Ij4KICAgICAgPCEtLSBJZiB0aGVyZSBpcyBhIGxhYmVsIHRlbXBsYXRlLCB1c2UgaXQuIC0tPgogICAgICA8bmctdGVtcGxhdGUgW25nSWZdPSJ0YWIudGVtcGxhdGVMYWJlbCI+CiAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPSJ0YWIudGVtcGxhdGVMYWJlbCI+PC9uZy10ZW1wbGF0ZT4KICAgICAgPC9uZy10ZW1wbGF0ZT4KCiAgICAgIDwhLS0gSWYgdGhlcmUgaXMgbm90IGEgbGFiZWwgdGVtcGxhdGUsIGZhbGwgYmFjayB0byB0aGUgdGV4dCBsYWJlbC4gLS0+CiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09IiF0YWIudGVtcGxhdGVMYWJlbCI+e3t0YWIudGV4dExhYmVsfX08L25nLXRlbXBsYXRlPgogICAgPC9kaXY+CiAgPC9kaXY+CjwvbWF0LXRhYi1oZWFkZXI+Cgo8ZGl2CiAgY2xhc3M9Im1hdC10YWItYm9keS13cmFwcGVyIgogIFtjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV09Il9hbmltYXRpb25Nb2RlID09PSAnTm9vcEFuaW1hdGlvbnMnIgogICN0YWJCb2R5V3JhcHBlcj4KICA8bWF0LXRhYi1ib2R5IHJvbGU9InRhYnBhbmVsIgogICAgICAgICAgICAgICAqbmdGb3I9ImxldCB0YWIgb2YgX3RhYnM7IGxldCBpID0gaW5kZXgiCiAgICAgICAgICAgICAgIFtpZF09Il9nZXRUYWJDb250ZW50SWQoaSkiCiAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT0iKGNvbnRlbnRUYWJJbmRleCAhPSBudWxsICYmIHNlbGVjdGVkSW5kZXggPT09IGkpID8gY29udGVudFRhYkluZGV4IDogbnVsbCIKICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iX2dldFRhYkxhYmVsSWQoaSkiCiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtdGFiLWJvZHktYWN0aXZlXT0ic2VsZWN0ZWRJbmRleCA9PT0gaSIKICAgICAgICAgICAgICAgW2NvbnRlbnRdPSJ0YWIuY29udGVudCEiCiAgICAgICAgICAgICAgIFtwb3NpdGlvbl09InRhYi5wb3NpdGlvbiEiCiAgICAgICAgICAgICAgIFtvcmlnaW5dPSJ0YWIub3JpZ2luIgogICAgICAgICAgICAgICBbYW5pbWF0aW9uRHVyYXRpb25dPSJhbmltYXRpb25EdXJhdGlvbiIKICAgICAgICAgICAgICAgKF9vbkNlbnRlcmVkKT0iX3JlbW92ZVRhYkJvZHlXcmFwcGVySGVpZ2h0KCkiCiAgICAgICAgICAgICAgIChfb25DZW50ZXJpbmcpPSJfc2V0VGFiQm9keVdyYXBwZXJIZWlnaHQoJGV2ZW50KSI+CiAgPC9tYXQtdGFiLWJvZHk+CjwvZGl2PgpgLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuRGVmYXVsdCxpbnB1dHM6WyJjb2xvciIsImRpc2FibGVSaXBwbGUiXSxwcm92aWRlcnM6W3twcm92aWRlOmZrLHVzZUV4aXN0aW5nOm9jfV0saG9zdDp7Y2xhc3M6Im1hdC10YWItZ3JvdXAiLCJbY2xhc3MubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodF0iOiJkeW5hbWljSGVpZ2h0IiwiW2NsYXNzLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyXSI6J2hlYWRlclBvc2l0aW9uID09PSAiYmVsb3ciJ30sc3R5bGVzOltgLm1hdC10YWItZ3JvdXB7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttYXgtd2lkdGg6MTAwJX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX0ubWF0LXRhYi1sYWJlbHtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweDtjdXJzb3I6cG9pbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTouNjttaW4td2lkdGg6MTYwcHg7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXA7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxhYmVsOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWw6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4O291dGxpbmUtb2Zmc2V0Oi0ycHh9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1sYWJlbCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWx7b3BhY2l0eToxfUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRhYi1sYWJlbHtwYWRkaW5nOjAgMTJweH19QG1lZGlhKG1heC13aWR0aDogOTU5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX0ubWF0LXRhYi1ncm91cFttYXQtc3RyZXRjaC10YWJzXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWx7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxfS5tYXQtdGFiLWJvZHktd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47ZGlzcGxheTpmbGV4O3RyYW5zaXRpb246aGVpZ2h0IDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXRhYi1ib2R5LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWJvZHl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztvdmVyZmxvdzpoaWRkZW47b3V0bGluZTowO2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXRhYi1ib2R5Lm1hdC10YWItYm9keS1hY3RpdmV7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvO3otaW5kZXg6MTtmbGV4LWdyb3c6MX0ubWF0LXRhYi1ncm91cC5tYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IC5tYXQtdGFiLWJvZHkubWF0LXRhYi1ib2R5LWFjdGl2ZXtvdmVyZmxvdy15OmhpZGRlbn0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOlR0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltIM119LHt0eXBlOkh9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XX0se19hbGxUYWJzOlt7dHlwZTpsbyxhcmdzOltMcyx7ZGVzY2VuZGFudHM6ITB9XX1dLF90YWJCb2R5V3JhcHBlcjpbe3R5cGU6SXQsYXJnczpbInRhYkJvZHlXcmFwcGVyIl19XSxfdGFiSGVhZGVyOlt7dHlwZTpJdCxhcmdzOlsidGFiSGVhZGVyIl19XX0pfSkoKTt2YXIgVWt0PVZyKGNsYXNze30pLGtwPWNsYXNzIGV4dGVuZHMgVWt0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5lbGVtZW50UmVmPXR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfWdldE9mZnNldExlZnQoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdH1nZXRPZmZzZXRXaWR0aCgpe3JldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH19O2twLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGtwKSh2KEwpKX07a3AuXHUwMjc1ZGlyPXZ0KHt0eXBlOmtwLHNlbGVjdG9yczpbWyIiLCJtYXRUYWJMYWJlbFdyYXBwZXIiLCIiXV0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJihyZSgiYXJpYS1kaXNhYmxlZCIsISFlLmRpc2FibGVkKSxtZSgibWF0LXRhYi1kaXNhYmxlZCIsZS5kaXNhYmxlZCkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCJ9LGZlYXR1cmVzOlthZV19KTtrcC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoa3AsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdFRhYkxhYmVsV3JhcHBlcl0iLGlucHV0czpbImRpc2FibGVkIl0saG9zdDp7IltjbGFzcy5tYXQtdGFiLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiIhIWRpc2FibGVkIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9XX0sbnVsbCl9KSgpO3ZhciBRYXQ9JG0oe3Bhc3NpdmU6ITB9KSxLYXQ9NjAsWWt0PTY1MCxHa3Q9MTAwLEhNPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3ZpZXdwb3J0UnVsZXI9byx0aGlzLl9kaXI9aSx0aGlzLl9uZ1pvbmU9YSx0aGlzLl9wbGF0Zm9ybT1yLHRoaXMuX2FuaW1hdGlvbk1vZGU9cyx0aGlzLl9zY3JvbGxEaXN0YW5jZT0wLHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkPSExLHRoaXMuX2Rlc3Ryb3llZD1uZXcgSnQsdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scz0hMSx0aGlzLl9kaXNhYmxlU2Nyb2xsQWZ0ZXI9ITAsdGhpcy5fZGlzYWJsZVNjcm9sbEJlZm9yZT0hMCx0aGlzLl9zdG9wU2Nyb2xsaW5nPW5ldyBKdCx0aGlzLmRpc2FibGVQYWdpbmF0aW9uPSExLHRoaXMuX3NlbGVjdGVkSW5kZXg9MCx0aGlzLnNlbGVjdEZvY3VzZWRJbmRleD1uZXcgJCx0aGlzLmluZGV4Rm9jdXNlZD1uZXcgJCxhLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57am8odC5uYXRpdmVFbGVtZW50LCJtb3VzZWxlYXZlIikucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9zdG9wSW50ZXJ2YWwoKX0pfSl9Z2V0IHNlbGVjdGVkSW5kZXgoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleH1zZXQgc2VsZWN0ZWRJbmRleCh0KXt0PVJpKHQpLHRoaXMuX3NlbGVjdGVkSW5kZXghPXQmJih0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMCx0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKHQpKX1uZ0FmdGVyVmlld0luaXQoKXtqbyh0aGlzLl9wcmV2aW91c1BhZ2luYXRvci5uYXRpdmVFbGVtZW50LCJ0b3VjaHN0YXJ0IixRYXQpLnBpcGUoUGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImJlZm9yZSIpfSksam8odGhpcy5fbmV4dFBhZ2luYXRvci5uYXRpdmVFbGVtZW50LCJ0b3VjaHN0YXJ0IixRYXQpLnBpcGUoUGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImFmdGVyIil9KX1uZ0FmdGVyQ29udGVudEluaXQoKXtsZXQgdD10aGlzLl9kaXI/dGhpcy5fZGlyLmNoYW5nZTpkbigibHRyIiksZT10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgxNTApLG89KCk9Pnt0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKX07dGhpcy5fa2V5TWFuYWdlcj1uZXcgV3kodGhpcy5faXRlbXMpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpLndpdGhIb21lQW5kRW5kKCkud2l0aFdyYXAoKSx0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odGhpcy5fc2VsZWN0ZWRJbmRleCksdHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSE9InVuZGVmaW5lZCI/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG8pOm8oKSx5bih0LGUsdGhpcy5faXRlbXMuY2hhbmdlcykucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9uZ1pvbmUucnVuKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKG8pKSx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpfSksdGhpcy5fa2V5TWFuYWdlci5jaGFuZ2UucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoaT0+e3RoaXMuaW5kZXhGb2N1c2VkLmVtaXQoaSksdGhpcy5fc2V0VGFiRm9jdXMoaSl9KX1uZ0FmdGVyQ29udGVudENoZWNrZWQoKXt0aGlzLl90YWJMYWJlbENvdW50IT10aGlzLl9pdGVtcy5sZW5ndGgmJih0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl90YWJMYWJlbENvdW50PXRoaXMuX2l0ZW1zLmxlbmd0aCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQmJih0aGlzLl9zY3JvbGxUb0xhYmVsKHRoaXMuX3NlbGVjdGVkSW5kZXgpLHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKSx0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkJiYodGhpcy5fdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKSx0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl9zdG9wU2Nyb2xsaW5nLmNvbXBsZXRlKCl9X2hhbmRsZUtleWRvd24odCl7aWYoIVZhKHQpKXN3aXRjaCh0LmtleUNvZGUpe2Nhc2UgMTM6Y2FzZSAzMjp0aGlzLmZvY3VzSW5kZXghPT10aGlzLnNlbGVjdGVkSW5kZXgmJih0aGlzLnNlbGVjdEZvY3VzZWRJbmRleC5lbWl0KHRoaXMuZm9jdXNJbmRleCksdGhpcy5faXRlbVNlbGVjdGVkKHQpKTticmVhaztkZWZhdWx0OnRoaXMuX2tleU1hbmFnZXIub25LZXlkb3duKHQpfX1fb25Db250ZW50Q2hhbmdlcygpe2xldCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDt0IT09dGhpcy5fY3VycmVudFRleHRDb250ZW50JiYodGhpcy5fY3VycmVudFRleHRDb250ZW50PXR8fCIiLHRoaXMuX25nWm9uZS5ydW4oKCk9Pnt0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX11cGRhdGVQYWdpbmF0aW9uKCl7dGhpcy5fY2hlY2tQYWdpbmF0aW9uRW5hYmxlZCgpLHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKSx0aGlzLl91cGRhdGVUYWJTY3JvbGxQb3NpdGlvbigpfWdldCBmb2N1c0luZGV4KCl7cmV0dXJuIHRoaXMuX2tleU1hbmFnZXI/dGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXg6MH1zZXQgZm9jdXNJbmRleCh0KXshdGhpcy5faXNWYWxpZEluZGV4KHQpfHx0aGlzLmZvY3VzSW5kZXg9PT10fHwhdGhpcy5fa2V5TWFuYWdlcnx8dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpfV9pc1ZhbGlkSW5kZXgodCl7aWYoIXRoaXMuX2l0ZW1zKXJldHVybiEwO2xldCBlPXRoaXMuX2l0ZW1zP3RoaXMuX2l0ZW1zLnRvQXJyYXkoKVt0XTpudWxsO3JldHVybiEhZSYmIWUuZGlzYWJsZWR9X3NldFRhYkZvY3VzKHQpe2lmKHRoaXMuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMmJnRoaXMuX3Njcm9sbFRvTGFiZWwodCksdGhpcy5faXRlbXMmJnRoaXMuX2l0ZW1zLmxlbmd0aCl7dGhpcy5faXRlbXMudG9BcnJheSgpW3RdLmZvY3VzKCk7bGV0IGU9dGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50O3RoaXMuX2dldExheW91dERpcmVjdGlvbigpPT0ibHRyIj9lLnNjcm9sbExlZnQ9MDplLnNjcm9sbExlZnQ9ZS5zY3JvbGxXaWR0aC1lLm9mZnNldFdpZHRofX1fZ2V0TGF5b3V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpciYmdGhpcy5fZGlyLnZhbHVlPT09InJ0bCI/InJ0bCI6Imx0ciJ9X3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCl7aWYodGhpcy5kaXNhYmxlUGFnaW5hdGlvbilyZXR1cm47bGV0IHQ9dGhpcy5zY3JvbGxEaXN0YW5jZSxlPXRoaXMuX2dldExheW91dERpcmVjdGlvbigpPT09Imx0ciI/LXQ6dDt0aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVYKCR7TWF0aC5yb3VuZChlKX1weClgLCh0aGlzLl9wbGF0Zm9ybS5UUklERU5UfHx0aGlzLl9wbGF0Zm9ybS5FREdFKSYmKHRoaXMuX3RhYkxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0PTApfWdldCBzY3JvbGxEaXN0YW5jZSgpe3JldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZX1zZXQgc2Nyb2xsRGlzdGFuY2UodCl7dGhpcy5fc2Nyb2xsVG8odCl9X3Njcm9sbEhlYWRlcih0KXtsZXQgZT10aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgsbz0odD09ImJlZm9yZSI/LTE6MSkqZS8zO3JldHVybiB0aGlzLl9zY3JvbGxUbyh0aGlzLl9zY3JvbGxEaXN0YW5jZStvKX1faGFuZGxlUGFnaW5hdG9yQ2xpY2sodCl7dGhpcy5fc3RvcEludGVydmFsKCksdGhpcy5fc2Nyb2xsSGVhZGVyKHQpfV9zY3JvbGxUb0xhYmVsKHQpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJuO2xldCBlPXRoaXMuX2l0ZW1zP3RoaXMuX2l0ZW1zLnRvQXJyYXkoKVt0XTpudWxsO2lmKCFlKXJldHVybjtsZXQgbz10aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgse29mZnNldExlZnQ6aSxvZmZzZXRXaWR0aDphfT1lLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxyLHM7dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk9PSJsdHIiPyhyPWkscz1yK2EpOihzPXRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aC1pLHI9cy1hKTtsZXQgbD10aGlzLnNjcm9sbERpc3RhbmNlLGM9dGhpcy5zY3JvbGxEaXN0YW5jZStvO3I8bD90aGlzLnNjcm9sbERpc3RhbmNlLT1sLXIrS2F0OnM+YyYmKHRoaXMuc2Nyb2xsRGlzdGFuY2UrPXMtYytLYXQpfV9jaGVja1BhZ2luYXRpb25FbmFibGVkKCl7aWYodGhpcy5kaXNhYmxlUGFnaW5hdGlvbil0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzPSExO2Vsc2V7bGV0IHQ9dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoPnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDt0fHwodGhpcy5zY3JvbGxEaXN0YW5jZT0wKSx0IT09dGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scyYmdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scz10fX1fY2hlY2tTY3JvbGxpbmdDb250cm9scygpe3RoaXMuZGlzYWJsZVBhZ2luYXRpb24/dGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPXRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9ITA6KHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9dGhpcy5zY3JvbGxEaXN0YW5jZT09MCx0aGlzLl9kaXNhYmxlU2Nyb2xsQWZ0ZXI9dGhpcy5zY3JvbGxEaXN0YW5jZT09dGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X2dldE1heFNjcm9sbERpc3RhbmNlKCl7bGV0IHQ9dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoLGU9dGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO3JldHVybiB0LWV8fDB9X2FsaWduSW5rQmFyVG9TZWxlY3RlZFRhYigpe2xldCB0PXRoaXMuX2l0ZW1zJiZ0aGlzLl9pdGVtcy5sZW5ndGg/dGhpcy5faXRlbXMudG9BcnJheSgpW3RoaXMuc2VsZWN0ZWRJbmRleF06bnVsbCxlPXQ/dC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ6bnVsbDtlP3RoaXMuX2lua0Jhci5hbGlnblRvRWxlbWVudChlKTp0aGlzLl9pbmtCYXIuaGlkZSgpfV9zdG9wSW50ZXJ2YWwoKXt0aGlzLl9zdG9wU2Nyb2xsaW5nLm5leHQoKX1faGFuZGxlUGFnaW5hdG9yUHJlc3ModCxlKXtlJiZlLmJ1dHRvbiE9bnVsbCYmZS5idXR0b24hPT0wfHwodGhpcy5fc3RvcEludGVydmFsKCksdWcoWWt0LEdrdCkucGlwZShQZSh5bih0aGlzLl9zdG9wU2Nyb2xsaW5nLHRoaXMuX2Rlc3Ryb3llZCkpKS5zdWJzY3JpYmUoKCk9PntsZXR7bWF4U2Nyb2xsRGlzdGFuY2U6byxkaXN0YW5jZTppfT10aGlzLl9zY3JvbGxIZWFkZXIodCk7KGk9PT0wfHxpPj1vKSYmdGhpcy5fc3RvcEludGVydmFsKCl9KSl9X3Njcm9sbFRvKHQpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJue21heFNjcm9sbERpc3RhbmNlOjAsZGlzdGFuY2U6MH07bGV0IGU9dGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKTtyZXR1cm4gdGhpcy5fc2Nyb2xsRGlzdGFuY2U9TWF0aC5tYXgoMCxNYXRoLm1pbihlLHQpKSx0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ9ITAsdGhpcy5fY2hlY2tTY3JvbGxpbmdDb250cm9scygpLHttYXhTY3JvbGxEaXN0YW5jZTplLGRpc3RhbmNlOnRoaXMuX3Njcm9sbERpc3RhbmNlfX19O0hNLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEhNKSh2KEwpLHYoVHQpLHYoWm4pLHYoTmUsOCksdihDdCksdihWdCksdihzbiw4KSl9O0hNLlx1MDI3NWRpcj12dCh7dHlwZTpITSxpbnB1dHM6e2Rpc2FibGVQYWdpbmF0aW9uOiJkaXNhYmxlUGFnaW5hdGlvbiJ9fSk7SE0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6Wm59LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6Q3R9LHt0eXBlOlZ0fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dO0hNLnByb3BEZWNvcmF0b3JzPXtkaXNhYmxlUGFnaW5hdGlvbjpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSE0sW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOlpufSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XX0se2Rpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpkfV19KX0pKCk7dmFyIGNPPWNsYXNzIGV4dGVuZHMgSE17Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyl7c3VwZXIodCxlLG8saSxhLHIscyksdGhpcy5fZGlzYWJsZVJpcHBsZT0hMX1nZXQgZGlzYWJsZVJpcHBsZSgpe3JldHVybiB0aGlzLl9kaXNhYmxlUmlwcGxlfXNldCBkaXNhYmxlUmlwcGxlKHQpe3RoaXMuX2Rpc2FibGVSaXBwbGU9WmUodCl9X2l0ZW1TZWxlY3RlZCh0KXt0LnByZXZlbnREZWZhdWx0KCl9fTtjTy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxjTykodihMKSx2KFR0KSx2KFpuKSx2KE5lLDgpLHYoQ3QpLHYoVnQpLHYoc24sOCkpfTtjTy5cdTAyNzVkaXI9dnQoe3R5cGU6Y08saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZmVhdHVyZXM6W2FlXX0pO2NPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOlpufSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XTtjTy5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZVJpcHBsZTpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoY08sW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOlpufSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XX0se2Rpc2FibGVSaXBwbGU6W3t0eXBlOmR9XX0pfSkoKTt2YXIgVV89Y2xhc3MgZXh0ZW5kcyBjT3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzKXtzdXBlcih0LGUsbyxpLGEscixzKX19O1VfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFVfKSh2KEwpLHYoVHQpLHYoWm4pLHYoTmUsOCksdihDdCksdihWdCksdihzbiw4KSl9O1VfLlx1MDI3NWNtcD16KHt0eXBlOlVfLHNlbGVjdG9yczpbWyJtYXQtdGFiLWhlYWRlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LGUsbyl7aWYodCYxJiZnbyhvLGtwLDQpLHQmMil7bGV0IGk7SHQoaT1GdCgpKSYmKGUuX2l0ZW1zPWkpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYocGUoYmwsNykscGUoSmF0LDcpLHBlKCRhdCw3KSxwZSh0cnQsNSkscGUoZXJ0LDUpKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLl9pbmtCYXI9by5maXJzdCksSHQobz1GdCgpKSYmKGUuX3RhYkxpc3RDb250YWluZXI9by5maXJzdCksSHQobz1GdCgpKSYmKGUuX3RhYkxpc3Q9by5maXJzdCksSHQobz1GdCgpKSYmKGUuX25leHRQYWdpbmF0b3I9by5maXJzdCksSHQobz1GdCgpKSYmKGUuX3ByZXZpb3VzUGFnaW5hdG9yPW8uZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWhlYWRlciJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZtZSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixlLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIixlLl9nZXRMYXlvdXREaXJlY3Rpb24oKT09InJ0bCIpfSxpbnB1dHM6e3NlbGVjdGVkSW5kZXg6InNlbGVjdGVkSW5kZXgifSxvdXRwdXRzOntzZWxlY3RGb2N1c2VkSW5kZXg6InNlbGVjdEZvY3VzZWRJbmRleCIsaW5kZXhGb2N1c2VkOiJpbmRleEZvY3VzZWQifSxmZWF0dXJlczpbYWVdLG5nQ29udGVudFNlbGVjdG9yczpVVSxkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGFiZWwtY29udGFpbmVyIiwzLCJrZXlkb3duIl0sWyJ0YWJMaXN0Q29udGFpbmVyIiwiIl0sWyJyb2xlIiwidGFibGlzdCIsMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxhYmVscyJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIiLCJtYXQtZWxldmF0aW9uLXo0IiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1vdXNlZG93biIsImNsaWNrIiwidG91Y2hlbmQiXSxbIm5leHRQYWdpbmF0b3IiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih5bygpLHUoMCwiZGl2IiwwLDEpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYmVmb3JlIil9KSgibW91c2Vkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImJlZm9yZSIsaSl9KSgidG91Y2hlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3N0b3BJbnRlcnZhbCgpfSksRCgyLCJkaXYiLDIpLGgoKSx1KDMsImRpdiIsMyw0KSxBKCJrZXlkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihpKX0pLHUoNSwiZGl2Iiw1LDYpLEEoImNka09ic2VydmVDb250ZW50IixmdW5jdGlvbigpe3JldHVybiBlLl9vbkNvbnRlbnRDaGFuZ2VzKCl9KSx1KDcsImRpdiIsNyksWW4oOCksaCgpLEQoOSwibWF0LWluay1iYXIiKSxoKCksaCgpLHUoMTAsImRpdiIsOCw5KSxBKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGkpe3JldHVybiBlLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiLGkpfSkoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYWZ0ZXIiKX0pKCJ0b3VjaGVuZCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fc3RvcEludGVydmFsKCl9KSxEKDEyLCJkaXYiLDIpLGgoKSksdCYyJiYobWUoIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQiLGUuX2Rpc2FibGVTY3JvbGxCZWZvcmUpLFAoIm1hdFJpcHBsZURpc2FibGVkIixlLl9kaXNhYmxlU2Nyb2xsQmVmb3JlfHxlLmRpc2FibGVSaXBwbGUpLHgoNSksbWUoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixlLl9hbmltYXRpb25Nb2RlPT09Ik5vb3BBbmltYXRpb25zIikseCg1KSxtZSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsZS5fZGlzYWJsZVNjcm9sbEFmdGVyKSxQKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5fZGlzYWJsZVNjcm9sbEFmdGVyfHxlLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbbmksQnIsYmxdLHN0eWxlczpbYC5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LWluay1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjJweDt0cmFuc2l0aW9uOjUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWluay1iYXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LWluay1iYXJ7Ym90dG9tOmF1dG87dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWluay1iYXJ7b3V0bGluZTpzb2xpZCAycHg7aGVpZ2h0OjB9Lm1hdC10YWItbGFiZWxze2Rpc3BsYXk6ZmxleH1bbWF0LWFsaWduLXRhYnM9Y2VudGVyXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWxze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC10YWItbGFiZWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWxpc3R7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse21pbi13aWR0aDo3MnB4fX0KYF0sZW5jYXBzdWxhdGlvbjoyfSk7VV8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6Wm59LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6Q3R9LHt0eXBlOlZ0fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dO1VfLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOmxvLGFyZ3M6W2twLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6SXQsYXJnczpbYmwse3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOkl0LGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6SXQsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTpJdCxhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTpJdCxhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVV8sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFiLWhlYWRlciIsdGVtcGxhdGU6YDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24gbWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgbWF0LWVsZXZhdGlvbi16NCIKICAgICAjcHJldmlvdXNQYWdpbmF0b3IKICAgICBhcmlhLWhpZGRlbj0idHJ1ZSIKICAgICBtYXQtcmlwcGxlIFttYXRSaXBwbGVEaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQmVmb3JlIHx8IGRpc2FibGVSaXBwbGUiCiAgICAgW2NsYXNzLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRdPSJfZGlzYWJsZVNjcm9sbEJlZm9yZSIKICAgICAoY2xpY2spPSJfaGFuZGxlUGFnaW5hdG9yQ2xpY2soJ2JlZm9yZScpIgogICAgIChtb3VzZWRvd24pPSJfaGFuZGxlUGFnaW5hdG9yUHJlc3MoJ2JlZm9yZScsICRldmVudCkiCiAgICAgKHRvdWNoZW5kKT0iX3N0b3BJbnRlcnZhbCgpIj4KICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iPjwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9Im1hdC10YWItbGFiZWwtY29udGFpbmVyIiAjdGFiTGlzdENvbnRhaW5lciAoa2V5ZG93bik9Il9oYW5kbGVLZXlkb3duKCRldmVudCkiPgogIDxkaXYKICAgICN0YWJMaXN0CiAgICBjbGFzcz0ibWF0LXRhYi1saXN0IgogICAgW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXT0iX2FuaW1hdGlvbk1vZGUgPT09ICdOb29wQW5pbWF0aW9ucyciCiAgICByb2xlPSJ0YWJsaXN0IgogICAgKGNka09ic2VydmVDb250ZW50KT0iX29uQ29udGVudENoYW5nZXMoKSI+CiAgICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWxhYmVscyI+CiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4KICAgIDwvZGl2PgogICAgPG1hdC1pbmstYmFyPjwvbWF0LWluay1iYXI+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIG1hdC1lbGV2YXRpb24tejQiCiAgICAgI25leHRQYWdpbmF0b3IKICAgICBhcmlhLWhpZGRlbj0idHJ1ZSIKICAgICBtYXQtcmlwcGxlIFttYXRSaXBwbGVEaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQWZ0ZXIgfHwgZGlzYWJsZVJpcHBsZSIKICAgICBbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQWZ0ZXIiCiAgICAgKG1vdXNlZG93bik9Il9oYW5kbGVQYWdpbmF0b3JQcmVzcygnYWZ0ZXInLCAkZXZlbnQpIgogICAgIChjbGljayk9Il9oYW5kbGVQYWdpbmF0b3JDbGljaygnYWZ0ZXInKSIKICAgICAodG91Y2hlbmQpPSJfc3RvcEludGVydmFsKCkiPgogIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+CjwvZGl2PgpgLGlucHV0czpbInNlbGVjdGVkSW5kZXgiXSxvdXRwdXRzOlsic2VsZWN0Rm9jdXNlZEluZGV4IiwiaW5kZXhGb2N1c2VkIl0sZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LGhvc3Q6e2NsYXNzOiJtYXQtdGFiLWhlYWRlciIsIltjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWRdIjoiX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJbY2xhc3MubWF0LXRhYi1oZWFkZXItcnRsXSI6Il9nZXRMYXlvdXREaXJlY3Rpb24oKSA9PSAncnRsJyJ9LHN0eWxlczpbYC5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LWluay1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjJweDt0cmFuc2l0aW9uOjUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWluay1iYXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LWluay1iYXJ7Ym90dG9tOmF1dG87dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWluay1iYXJ7b3V0bGluZTpzb2xpZCAycHg7aGVpZ2h0OjB9Lm1hdC10YWItbGFiZWxze2Rpc3BsYXk6ZmxleH1bbWF0LWFsaWduLXRhYnM9Y2VudGVyXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWxze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC10YWItbGFiZWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWxpc3R7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse21pbi13aWR0aDo3MnB4fX0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOlR0fSx7dHlwZTpabn0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpDdH0se3R5cGU6VnR9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3NuXX1dfV19LHtfaXRlbXM6W3t0eXBlOmxvLGFyZ3M6W2twLHtkZXNjZW5kYW50czohMX1dfV0sX2lua0Jhcjpbe3R5cGU6SXQsYXJnczpbYmwse3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOkl0LGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6SXQsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTpJdCxhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTpJdCxhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSl9KSgpO3ZhciAkZz1jbGFzcyBleHRlbmRzIEhNe2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMpe3N1cGVyKHQsaSxhLGUsbyxyLHMpLHRoaXMuX2Rpc2FibGVSaXBwbGU9ITEsdGhpcy5jb2xvcj0icHJpbWFyeSJ9Z2V0IGJhY2tncm91bmRDb2xvcigpe3JldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29sb3J9c2V0IGJhY2tncm91bmRDb2xvcih0KXtsZXQgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O2UucmVtb3ZlKGBtYXQtYmFja2dyb3VuZC0ke3RoaXMuYmFja2dyb3VuZENvbG9yfWApLHQmJmUuYWRkKGBtYXQtYmFja2dyb3VuZC0ke3R9YCksdGhpcy5fYmFja2dyb3VuZENvbG9yPXR9Z2V0IGRpc2FibGVSaXBwbGUoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZVJpcHBsZX1zZXQgZGlzYWJsZVJpcHBsZSh0KXt0aGlzLl9kaXNhYmxlUmlwcGxlPVplKHQpfV9pdGVtU2VsZWN0ZWQoKXt9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5faXRlbXMuY2hhbmdlcy5waXBlKFNvKG51bGwpLFBlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKT0+e3RoaXMudXBkYXRlQWN0aXZlTGluaygpfSksc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCl9dXBkYXRlQWN0aXZlTGluaygpe2lmKCF0aGlzLl9pdGVtcylyZXR1cm47bGV0IHQ9dGhpcy5faXRlbXMudG9BcnJheSgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0uYWN0aXZlKXt0aGlzLnNlbGVjdGVkSW5kZXg9ZSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtyZXR1cm59dGhpcy5zZWxlY3RlZEluZGV4PS0xLHRoaXMuX2lua0Jhci5oaWRlKCl9fTskZy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHwkZykodihMKSx2KE5lLDgpLHYoQ3QpLHYoVHQpLHYoWm4pLHYoVnQpLHYoc24sOCkpfTskZy5cdTAyNzVkaXI9dnQoe3R5cGU6JGcsaW5wdXRzOntjb2xvcjoiY29sb3IiLGJhY2tncm91bmRDb2xvcjoiYmFja2dyb3VuZENvbG9yIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZmVhdHVyZXM6W2FlXX0pOyRnLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpDdH0se3R5cGU6VHR9LHt0eXBlOlpufSx7dHlwZTpWdH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XTskZy5wcm9wRGVjb3JhdG9ycz17YmFja2dyb3VuZENvbG9yOlt7dHlwZTpkfV0sZGlzYWJsZVJpcHBsZTpbe3R5cGU6ZH1dLGNvbG9yOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQygkZyxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkN0fSx7dHlwZTpUdH0se3R5cGU6Wm59LHt0eXBlOlZ0fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7Y29sb3I6W3t0eXBlOmR9XSxiYWNrZ3JvdW5kQ29sb3I6W3t0eXBlOmR9XSxkaXNhYmxlUmlwcGxlOlt7dHlwZTpkfV19KX0pKCk7dmFyIHJtPWNsYXNzIGV4dGVuZHMgJGd7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyl7c3VwZXIodCxlLG8saSxhLHIscyl9fTtybS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxybSkodihMKSx2KE5lLDgpLHYoQ3QpLHYoVHQpLHYoWm4pLHYoVnQpLHYoc24sOCkpfTtybS5cdTAyNzVjbXA9eih7dHlwZTpybSxzZWxlY3RvcnM6W1siIiwibWF0LXRhYi1uYXYtYmFyIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQsZSxvKXtpZih0JjEmJmdvKG8scmYsNSksdCYyKXtsZXQgaTtIdChpPUZ0KCkpJiYoZS5faXRlbXM9aSl9fSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJihwZShibCw3KSxwZShKYXQsNykscGUoJGF0LDcpLHBlKHRydCw1KSxwZShlcnQsNSkpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuX2lua0Jhcj1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5fdGFiTGlzdENvbnRhaW5lcj1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5fdGFiTGlzdD1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5fbmV4dFBhZ2luYXRvcj1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5fcHJldmlvdXNQYWdpbmF0b3I9by5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC10YWItbmF2LWJhciIsIm1hdC10YWItaGVhZGVyIl0saG9zdFZhcnM6MTAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZtZSgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixlLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIixlLl9nZXRMYXlvdXREaXJlY3Rpb24oKT09InJ0bCIpKCJtYXQtcHJpbWFyeSIsZS5jb2xvciE9PSJ3YXJuIiYmZS5jb2xvciE9PSJhY2NlbnQiKSgibWF0LWFjY2VudCIsZS5jb2xvcj09PSJhY2NlbnQiKSgibWF0LXdhcm4iLGUuY29sb3I9PT0id2FybiIpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VGFiTmF2QmFyIiwibWF0VGFiTmF2Il0sZmVhdHVyZXM6W2FlXSxhdHRyczpGa3QsbmdDb250ZW50U2VsZWN0b3JzOlVVLGRlY2xzOjEzLHZhcnM6OCxjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIiwibWF0LWVsZXZhdGlvbi16NCIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJjbGljayIsIm1vdXNlZG93biIsInRvdWNoZW5kIl0sWyJwcmV2aW91c1BhZ2luYXRvciIsIiJdLFsxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iXSxbMSwibWF0LXRhYi1saW5rLWNvbnRhaW5lciIsMywia2V5ZG93biJdLFsidGFiTGlzdENvbnRhaW5lciIsIiJdLFsxLCJtYXQtdGFiLWxpc3QiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJ0YWJMaXN0IiwiIl0sWzEsIm1hdC10YWItbGlua3MiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVyIiwibWF0LWVsZXZhdGlvbi16NCIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtb3VzZWRvd24iLCJjbGljayIsInRvdWNoZW5kIl0sWyJuZXh0UGFnaW5hdG9yIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoeW8oKSx1KDAsImRpdiIsMCwxKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImJlZm9yZSIpfSkoIm1vdXNlZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiLGkpfSkoInRvdWNoZW5kIixmdW5jdGlvbigpe3JldHVybiBlLl9zdG9wSW50ZXJ2YWwoKX0pLEQoMiwiZGl2IiwyKSxoKCksdSgzLCJkaXYiLDMsNCksQSgia2V5ZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2hhbmRsZUtleWRvd24oaSl9KSx1KDUsImRpdiIsNSw2KSxBKCJjZGtPYnNlcnZlQ29udGVudCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fb25Db250ZW50Q2hhbmdlcygpfSksdSg3LCJkaXYiLDcpLFluKDgpLGgoKSxEKDksIm1hdC1pbmstYmFyIiksaCgpLGgoKSx1KDEwLCJkaXYiLDgsOSksQSgibW91c2Vkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlUGFnaW5hdG9yUHJlc3MoImFmdGVyIixpKX0pKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImFmdGVyIil9KSgidG91Y2hlbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3N0b3BJbnRlcnZhbCgpfSksRCgxMiwiZGl2IiwyKSxoKCkpLHQmMiYmKG1lKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixlLl9kaXNhYmxlU2Nyb2xsQmVmb3JlKSxQKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5fZGlzYWJsZVNjcm9sbEJlZm9yZXx8ZS5kaXNhYmxlUmlwcGxlKSx4KDUpLG1lKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsZS5fYW5pbWF0aW9uTW9kZT09PSJOb29wQW5pbWF0aW9ucyIpLHgoNSksbWUoIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQiLGUuX2Rpc2FibGVTY3JvbGxBZnRlciksUCgibWF0UmlwcGxlRGlzYWJsZWQiLGUuX2Rpc2FibGVTY3JvbGxBZnRlcnx8ZS5kaXNhYmxlUmlwcGxlKSl9LGRpcmVjdGl2ZXM6W25pLEJyLGJsXSxzdHlsZXM6W2AubWF0LXRhYi1oZWFkZXJ7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4LXNocmluazowfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5Om5vbmU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bWluLXdpZHRoOjMycHg7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0b3VjaC1hY3Rpb246bm9uZX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2Rpc3BsYXk6ZmxleH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlcntwYWRkaW5nLWxlZnQ6NHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlLC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctcmlnaHQ6NHB4fS5tYXQtdGFiLWhlYWRlci1ydGwgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbnt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MnB4IDJweCAwIDA7Y29udGVudDoiIjtoZWlnaHQ6OHB4O3dpZHRoOjhweH0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHtib3gtc2hhZG93Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC10YWItbGlzdHtmbGV4LWdyb3c6MTtwb3NpdGlvbjpyZWxhdGl2ZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC10YWItbGlua3N7ZGlzcGxheTpmbGV4fVttYXQtYWxpZ24tdGFicz1jZW50ZXJdPi5tYXQtdGFiLWxpbmstY29udGFpbmVyIC5tYXQtdGFiLWxpbmtze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtaW5rLWJhcntwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MnB4O3RyYW5zaXRpb246NTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtaW5rLWJhcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtaW5rLWJhcntib3R0b206YXV0bzt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaW5rLWJhcntvdXRsaW5lOnNvbGlkIDJweDtoZWlnaHQ6MH0ubWF0LXRhYi1saW5rLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7b3ZlcmZsb3c6aGlkZGVuO3otaW5kZXg6MX0ubWF0LXRhYi1saW5re2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDt2ZXJ0aWNhbC1hbGlnbjp0b3A7dGV4dC1kZWNvcmF0aW9uOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXRhYi1saW5rOmZvY3VzOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGluazpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LXRhYi1saW5rIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5re29wYWNpdHk6MX1bbWF0LXN0cmV0Y2gtdGFic10gLm1hdC10YWItbGlua3tmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmV9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxpbmt7bWluLXdpZHRoOjcycHh9fQpgXSxlbmNhcHN1bGF0aW9uOjJ9KTtybS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6Q3R9LHt0eXBlOlR0fSx7dHlwZTpabn0se3R5cGU6VnR9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3NuXX1dfV07cm0ucHJvcERlY29yYXRvcnM9e19pdGVtczpbe3R5cGU6bG8sYXJnczpbdG8oKCk9PnJmKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOkl0LGFyZ3M6W2JsLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTpJdCxhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOkl0LGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6SXQsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6SXQsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHJtLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC10YWItbmF2LWJhcl0iLGV4cG9ydEFzOiJtYXRUYWJOYXZCYXIsIG1hdFRhYk5hdiIsaW5wdXRzOlsiY29sb3IiXSx0ZW1wbGF0ZTpgPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiBtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSBtYXQtZWxldmF0aW9uLXo0IgogICAgICNwcmV2aW91c1BhZ2luYXRvcgogICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgIG1hdC1yaXBwbGUgW21hdFJpcHBsZURpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxCZWZvcmUgfHwgZGlzYWJsZVJpcHBsZSIKICAgICBbY2xhc3MubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZF09Il9kaXNhYmxlU2Nyb2xsQmVmb3JlIgogICAgIChjbGljayk9Il9oYW5kbGVQYWdpbmF0b3JDbGljaygnYmVmb3JlJykiCiAgICAgKG1vdXNlZG93bik9Il9oYW5kbGVQYWdpbmF0b3JQcmVzcygnYmVmb3JlJywgJGV2ZW50KSIKICAgICAodG91Y2hlbmQpPSJfc3RvcEludGVydmFsKCkiPgogIDxkaXYgY2xhc3M9Im1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiI+PC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0ibWF0LXRhYi1saW5rLWNvbnRhaW5lciIgI3RhYkxpc3RDb250YWluZXIgKGtleWRvd24pPSJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIj4KICA8ZGl2CiAgICBjbGFzcz0ibWF0LXRhYi1saXN0IgogICAgW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXT0iX2FuaW1hdGlvbk1vZGUgPT09ICdOb29wQW5pbWF0aW9ucyciCiAgICAjdGFiTGlzdAogICAgKGNka09ic2VydmVDb250ZW50KT0iX29uQ29udGVudENoYW5nZXMoKSI+CiAgICA8ZGl2IGNsYXNzPSJtYXQtdGFiLWxpbmtzIj4KICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PgogICAgPC9kaXY+CiAgICA8bWF0LWluay1iYXI+PC9tYXQtaW5rLWJhcj4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIG1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXIgbWF0LWVsZXZhdGlvbi16NCIKICAgICAjbmV4dFBhZ2luYXRvcgogICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgIG1hdC1yaXBwbGUgW21hdFJpcHBsZURpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxBZnRlciB8fCBkaXNhYmxlUmlwcGxlIgogICAgIFtjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkXT0iX2Rpc2FibGVTY3JvbGxBZnRlciIKICAgICAobW91c2Vkb3duKT0iX2hhbmRsZVBhZ2luYXRvclByZXNzKCdhZnRlcicsICRldmVudCkiCiAgICAgKGNsaWNrKT0iX2hhbmRsZVBhZ2luYXRvckNsaWNrKCdhZnRlcicpIgogICAgICh0b3VjaGVuZCk9Il9zdG9wSW50ZXJ2YWwoKSI+CiAgPGRpdiBjbGFzcz0ibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIj48L2Rpdj4KPC9kaXY+CmAsaG9zdDp7Y2xhc3M6Im1hdC10YWItbmF2LWJhciBtYXQtdGFiLWhlYWRlciIsIltjbGFzcy5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWRdIjoiX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJbY2xhc3MubWF0LXRhYi1oZWFkZXItcnRsXSI6Il9nZXRMYXlvdXREaXJlY3Rpb24oKSA9PSAncnRsJyIsIltjbGFzcy5tYXQtcHJpbWFyeV0iOidjb2xvciAhPT0gIndhcm4iICYmIGNvbG9yICE9PSAiYWNjZW50IicsIltjbGFzcy5tYXQtYWNjZW50XSI6J2NvbG9yID09PSAiYWNjZW50IicsIltjbGFzcy5tYXQtd2Fybl0iOidjb2xvciA9PT0gIndhcm4iJ30sZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LHN0eWxlczpbYC5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXRhYi1saW5rc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxpbmstY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5tYXQtdGFiLWxpbmt7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOnRvcDt0ZXh0LWRlY29yYXRpb246bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtdGFiLWxpbms6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxpbms6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxpbmsgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmt7b3BhY2l0eToxfVttYXQtc3RyZXRjaC10YWJzXSAubWF0LXRhYi1saW5re2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MX0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGlua3ttaW4td2lkdGg6NzJweH19CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkN0fSx7dHlwZTpUdH0se3R5cGU6Wm59LHt0eXBlOlZ0fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7X2l0ZW1zOlt7dHlwZTpsbyxhcmdzOlt0bygoKT0+cmYpLHtkZXNjZW5kYW50czohMH1dfV0sX2lua0Jhcjpbe3R5cGU6SXQsYXJnczpbYmwse3N0YXRpYzohMH1dfV0sX3RhYkxpc3RDb250YWluZXI6W3t0eXBlOkl0LGFyZ3M6WyJ0YWJMaXN0Q29udGFpbmVyIix7c3RhdGljOiEwfV19XSxfdGFiTGlzdDpbe3R5cGU6SXQsYXJnczpbInRhYkxpc3QiLHtzdGF0aWM6ITB9XX1dLF9uZXh0UGFnaW5hdG9yOlt7dHlwZTpJdCxhcmdzOlsibmV4dFBhZ2luYXRvciJdfV0sX3ByZXZpb3VzUGFnaW5hdG9yOlt7dHlwZTpJdCxhcmdzOlsicHJldmlvdXNQYWdpbmF0b3IiXX1dfSl9KSgpO3ZhciBXa3Q9RF8odGwoVnIoY2xhc3N7fSkpKSxtTz1jbGFzcyBleHRlbmRzIFdrdHtjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscil7c3VwZXIoKSx0aGlzLl90YWJOYXZCYXI9dCx0aGlzLmVsZW1lbnRSZWY9ZSx0aGlzLl9mb2N1c01vbml0b3I9YSx0aGlzLl9pc0FjdGl2ZT0hMSx0aGlzLnJpcHBsZUNvbmZpZz1vfHx7fSx0aGlzLnRhYkluZGV4PXBhcnNlSW50KGkpfHwwLHI9PT0iTm9vcEFuaW1hdGlvbnMiJiYodGhpcy5yaXBwbGVDb25maWcuYW5pbWF0aW9uPXtlbnRlckR1cmF0aW9uOjAsZXhpdER1cmF0aW9uOjB9KX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuX2lzQWN0aXZlfXNldCBhY3RpdmUodCl7WmUodCkhPT10aGlzLl9pc0FjdGl2ZSYmKHRoaXMuX2lzQWN0aXZlPXQsdGhpcy5fdGFiTmF2QmFyLnVwZGF0ZUFjdGl2ZUxpbmsoKSl9Z2V0IHJpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5fdGFiTmF2QmFyLmRpc2FibGVSaXBwbGV8fCEhdGhpcy5yaXBwbGVDb25maWcuZGlzYWJsZWR9Zm9jdXMoKXt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZil9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKX1faGFuZGxlRm9jdXMoKXt0aGlzLl90YWJOYXZCYXIuZm9jdXNJbmRleD10aGlzLl90YWJOYXZCYXIuX2l0ZW1zLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMpfX07bU8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bU8pKHYoJGcpLHYoTCksdih5cCw4KSxaYSgidGFiaW5kZXgiKSx2KGxuKSx2KHNuLDgpKX07bU8uXHUwMjc1ZGlyPXZ0KHt0eXBlOm1PLGlucHV0czp7YWN0aXZlOiJhY3RpdmUifSxmZWF0dXJlczpbYWVdfSk7bU8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTokZ30se3R5cGU6TH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbeXBdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpsbn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XTttTy5wcm9wRGVjb3JhdG9ycz17YWN0aXZlOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhtTyxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTokZ30se3R5cGU6TH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbeXBdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpsbn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XX0se2FjdGl2ZTpbe3R5cGU6ZH1dfSl9KSgpO3ZhciByZj1jbGFzcyBleHRlbmRzIG1Pe2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCl7c3VwZXIodCxlLGEscixzLGwpLHRoaXMuX3RhYkxpbmtSaXBwbGU9bmV3IFp2KHRoaXMsbyxlLGkpLHRoaXMuX3RhYkxpbmtSaXBwbGUuc2V0dXBUcmlnZ2VyRXZlbnRzKGUubmF0aXZlRWxlbWVudCl9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuX3RhYkxpbmtSaXBwbGUuX3JlbW92ZVRyaWdnZXJFdmVudHMoKX19O3JmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHJmKSh2KHJtKSx2KEwpLHYoQ3QpLHYoVnQpLHYoeXAsOCksWmEoInRhYmluZGV4Iiksdihsbiksdihzbiw4KSl9O3JmLlx1MDI3NWRpcj12dCh7dHlwZTpyZixzZWxlY3RvcnM6W1siIiwibWF0LXRhYi1saW5rIiwiIl0sWyIiLCJtYXRUYWJMaW5rIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRhYi1saW5rIiwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gZS5faGFuZGxlRm9jdXMoKX0pLHQmMiYmKHJlKCJhcmlhLWN1cnJlbnQiLGUuYWN0aXZlPyJwYWdlIjpudWxsKSgiYXJpYS1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoInRhYkluZGV4IixlLnRhYkluZGV4KSxtZSgibWF0LXRhYi1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoIm1hdC10YWItbGFiZWwtYWN0aXZlIixlLmFjdGl2ZSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsdGFiSW5kZXg6InRhYkluZGV4In0sZXhwb3J0QXM6WyJtYXRUYWJMaW5rIl0sZmVhdHVyZXM6W2FlXX0pO3JmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6cm19LHt0eXBlOkx9LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbeXBdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpsbn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocmYsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdC10YWItbGlua10sIFttYXRUYWJMaW5rXSIsZXhwb3J0QXM6Im1hdFRhYkxpbmsiLGlucHV0czpbImRpc2FibGVkIiwiZGlzYWJsZVJpcHBsZSIsInRhYkluZGV4Il0saG9zdDp7Y2xhc3M6Im1hdC10YWItbGluayBtYXQtZm9jdXMtaW5kaWNhdG9yIiwiW2F0dHIuYXJpYS1jdXJyZW50XSI6J2FjdGl2ZSA/ICJwYWdlIiA6IG51bGwnLCJbYXR0ci5hcmlhLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2F0dHIudGFiSW5kZXhdIjoidGFiSW5kZXgiLCJbY2xhc3MubWF0LXRhYi1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtdGFiLWxhYmVsLWFjdGl2ZV0iOiJhY3RpdmUiLCIoZm9jdXMpIjoiX2hhbmRsZUZvY3VzKCkifX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6cm19LHt0eXBlOkx9LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbeXBdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpsbn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19XX0sbnVsbCl9KSgpO3ZhciB0dT1jbGFzc3t9O3R1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHR1KX07dHUuXHUwMjc1bW9kPXEoe3R5cGU6dHV9KTt0dS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksRHQsJGEsY2ksc2EsX2xdLER0XX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh0dSxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbWSxEdCwkYSxjaSxzYSxfbF0sZXhwb3J0czpbRHQsb2MsYW0sTHMscm0scmYsRXBdLGRlY2xhcmF0aW9uczpbb2MsYW0sTHMsYmwsa3Ascm0scmYsaWMsek0sVV8sRXBdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHR1LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bb2MsYW0sTHMsYmwsa3Ascm0scmYsaWMsek0sVV8sRXBdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1ksRHQsJGEsY2ksc2EsX2xdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0R0LG9jLGFtLExzLHJtLHJmLEVwXX19KX0pKCk7dmFyIFprdD1bInVuZGVybGluZSJdLFhrdD1bImNvbm5lY3Rpb25Db250YWluZXIiXSxRa3Q9WyJpbnB1dENvbnRhaW5lciJdLEtrdD1bImxhYmVsIl07ZnVuY3Rpb24gSmt0KG4sdCl7biYxJiYoRW4oMCksdSgxLCJkaXYiLDE0KSxEKDIsImRpdiIsMTUpLEQoMywiZGl2IiwxNiksRCg0LCJkaXYiLDE3KSxoKCksdSg1LCJkaXYiLDE4KSxEKDYsImRpdiIsMTUpLEQoNywiZGl2IiwxNiksRCg4LCJkaXYiLDE3KSxoKCksa24oKSl9ZnVuY3Rpb24gJGt0KG4sdCl7biYxJiYodSgwLCJkaXYiLDE5KSxZbigxLDEpLGgoKSl9ZnVuY3Rpb24gdDV0KG4sdCl7aWYobiYxJiYoRW4oMCksWW4oMSwyKSx1KDIsInNwYW4iKSxUKDMpLGgoKSxrbigpKSxuJjIpe2xldCBlPVMoMik7eCgzKSxJZShlLl9jb250cm9sLnBsYWNlaG9sZGVyKX19ZnVuY3Rpb24gZTV0KG4sdCl7biYxJiZZbigwLDMsWyIqbmdTd2l0Y2hDYXNlIiwidHJ1ZSJdKX1mdW5jdGlvbiBuNXQobix0KXtuJjEmJih1KDAsInNwYW4iLDIzKSxUKDEsIiAqIiksaCgpKX1mdW5jdGlvbiBvNXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJsYWJlbCIsMjAsMjEpLEEoImNka09ic2VydmVDb250ZW50IixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKCkudXBkYXRlT3V0bGluZUdhcCgpfSksaygyLHQ1dCw0LDEsIm5nLWNvbnRhaW5lciIsMTIpLGsoMyxlNXQsMSwwLCJuZy1jb250ZW50IiwxMiksayg0LG41dCwyLDAsInNwYW4iLDIyKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7bWUoIm1hdC1lbXB0eSIsZS5fY29udHJvbC5lbXB0eSYmIWUuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtZm9ybS1maWVsZC1lbXB0eSIsZS5fY29udHJvbC5lbXB0eSYmIWUuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpKCJtYXQtYWNjZW50IixlLmNvbG9yPT0iYWNjZW50IikoIm1hdC13YXJuIixlLmNvbG9yPT0id2FybiIpLFAoImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLGUuYXBwZWFyYW5jZSE9Im91dGxpbmUiKSgiaWQiLGUuX2xhYmVsSWQpKCJuZ1N3aXRjaCIsZS5faGFzTGFiZWwoKSkscmUoImZvciIsZS5fY29udHJvbC5pZCkoImFyaWEtb3ducyIsZS5fY29udHJvbC5pZCkseCgyKSxQKCJuZ1N3aXRjaENhc2UiLCExKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsITApLHgoMSksUCgibmdJZiIsIWUuaGlkZVJlcXVpcmVkTWFya2VyJiZlLl9jb250cm9sLnJlcXVpcmVkJiYhZS5fY29udHJvbC5kaXNhYmxlZCl9fWZ1bmN0aW9uIGk1dChuLHQpe24mMSYmKHUoMCwiZGl2IiwyNCksWW4oMSw0KSxoKCkpfWZ1bmN0aW9uIGE1dChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwyNSwyNiksRCgyLCJzcGFuIiwyNyksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDIpLG1lKCJtYXQtYWNjZW50IixlLmNvbG9yPT0iYWNjZW50IikoIm1hdC13YXJuIixlLmNvbG9yPT0id2FybiIpfX1mdW5jdGlvbiByNXQobix0KXtpZihuJjEmJih1KDAsImRpdiIpLFluKDEsNSksaCgpKSxuJjIpe2xldCBlPVMoKTtQKCJAdHJhbnNpdGlvbk1lc3NhZ2VzIixlLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSl9fWZ1bmN0aW9uIHM1dChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwzMSksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygyKTtQKCJpZCIsZS5faGludExhYmVsSWQpLHgoMSksSWUoZS5oaW50TGFiZWwpfX1mdW5jdGlvbiBsNXQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMjgpLGsoMSxzNXQsMiwyLCJkaXYiLDI5KSxZbigyLDYpLEQoMywiZGl2IiwzMCksWW4oNCw3KSxoKCkpLG4mMil7bGV0IGU9UygpO1AoIkB0cmFuc2l0aW9uTWVzc2FnZXMiLGUuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlKSx4KDEpLFAoIm5nSWYiLGUuaGludExhYmVsKX19dmFyIGM1dD1bIioiLFtbIiIsIm1hdFByZWZpeCIsIiJdXSxbWyJtYXQtcGxhY2Vob2xkZXIiXV0sW1sibWF0LWxhYmVsIl1dLFtbIiIsIm1hdFN1ZmZpeCIsIiJdXSxbWyJtYXQtZXJyb3IiXV0sW1sibWF0LWhpbnQiLDMsImFsaWduIiwiZW5kIl1dLFtbIm1hdC1oaW50IiwiYWxpZ24iLCJlbmQiXV1dLG01dD1bIioiLCJbbWF0UHJlZml4XSIsIm1hdC1wbGFjZWhvbGRlciIsIm1hdC1sYWJlbCIsIlttYXRTdWZmaXhdIiwibWF0LWVycm9yIiwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pIiwibWF0LWhpbnRbYWxpZ249J2VuZCddIl0sZjV0PTAscGs9bmV3IHl0KCJNYXRFcnJvciIpLGFjPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5pZD1gbWF0LWVycm9yLSR7ZjV0Kyt9YCx0fHxlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxpdmUiLCJwb2xpdGUiKX19O2FjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGFjKShaYSgiYXJpYS1saXZlIiksdihMKSl9O2FjLlx1MDI3NWRpcj12dCh7dHlwZTphYyxzZWxlY3RvcnM6W1sibWF0LWVycm9yIl1dLGhvc3RBdHRyczpbImFyaWEtYXRvbWljIiwidHJ1ZSIsMSwibWF0LWVycm9yIl0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJnJlKCJpZCIsZS5pZCl9LGlucHV0czp7aWQ6ImlkIn0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpwayx1c2VFeGlzdGluZzphY31dKV19KTthYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsiYXJpYS1saXZlIl19XX0se3R5cGU6TH1dO2FjLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYWMsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWVycm9yIixob3N0OntjbGFzczoibWF0LWVycm9yIiwiW2F0dHIuaWRdIjoiaWQiLCJhcmlhLWF0b21pYyI6InRydWUifSxwcm92aWRlcnM6W3twcm92aWRlOnBrLHVzZUV4aXN0aW5nOmFjfV19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsiYXJpYS1saXZlIl19XX0se3R5cGU6TH1dfSx7aWQ6W3t0eXBlOmR9XX0pfSkoKTt2YXIgcnJ0PXt0cmFuc2l0aW9uTWVzc2FnZXM6eHIoInRyYW5zaXRpb25NZXNzYWdlcyIsW2hpKCJlbnRlciIsTG4oe29wYWNpdHk6MSx0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCUpIn0pKSxiaSgidm9pZCA9PiBlbnRlciIsW0xuKHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC01cHgpIn0pLERpKCIzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSIpXSldKX07dmFyIGpyPWNsYXNze307anIuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8anIpfTtqci5cdTAyNzVkaXI9dnQoe3R5cGU6anJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoanIsW3t0eXBlOnd0fV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gcDV0KCl7cmV0dXJuIEVycm9yKCJQbGFjZWhvbGRlciBhdHRyaWJ1dGUgYW5kIGNoaWxkIGVsZW1lbnQgd2VyZSBib3RoIHNwZWNpZmllZC4iKX1mdW5jdGlvbiBvcnQobil7cmV0dXJuIEVycm9yKGBBIGhpbnQgd2FzIGFscmVhZHkgZGVjbGFyZWQgZm9yICdhbGlnbj0iJHtufSInLmApfWZ1bmN0aW9uIGQ1dCgpe3JldHVybiBFcnJvcigibWF0LWZvcm0tZmllbGQgbXVzdCBjb250YWluIGEgTWF0Rm9ybUZpZWxkQ29udHJvbC4iKX12YXIgZzV0PTAsZGs9bmV3IHl0KCJNYXRIaW50IiksTnA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmFsaWduPSJzdGFydCIsdGhpcy5pZD1gbWF0LWhpbnQtJHtnNXQrK31gfX07TnAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TnApfTtOcC5cdTAyNzVkaXI9dnQoe3R5cGU6TnAsc2VsZWN0b3JzOltbIm1hdC1oaW50Il1dLGhvc3RBdHRyczpbMSwibWF0LWhpbnQiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmKHJlKCJpZCIsZS5pZCkoImFsaWduIixudWxsKSxtZSgibWF0LWZvcm0tZmllbGQtaGludC1lbmQiLGUuYWxpZ249PT0iZW5kIikpfSxpbnB1dHM6e2FsaWduOiJhbGlnbiIsaWQ6ImlkIn0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpkayx1c2VFeGlzdGluZzpOcH1dKV19KTtOcC5wcm9wRGVjb3JhdG9ycz17YWxpZ246W3t0eXBlOmR9XSxpZDpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTnAsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWhpbnQiLGhvc3Q6e2NsYXNzOiJtYXQtaGludCIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1oaW50LWVuZF0iOidhbGlnbiA9PT0gImVuZCInLCJbYXR0ci5pZF0iOiJpZCIsIlthdHRyLmFsaWduXSI6Im51bGwifSxwcm92aWRlcnM6W3twcm92aWRlOmRrLHVzZUV4aXN0aW5nOk5wfV19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW119LHthbGlnbjpbe3R5cGU6ZH1dLGlkOlt7dHlwZTpkfV19KX0pKCk7dmFyIHBzPWNsYXNze307cHMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cHMpfTtwcy5cdTAyNzVkaXI9dnQoe3R5cGU6cHMsc2VsZWN0b3JzOltbIm1hdC1sYWJlbCJdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhwcyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJtYXQtbGFiZWwifV19XSxudWxsLG51bGwpfSkoKTt2YXIgVHA9Y2xhc3N7fTtUcC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxUcCl9O1RwLlx1MDI3NWRpcj12dCh7dHlwZTpUcCxzZWxlY3RvcnM6W1sibWF0LXBsYWNlaG9sZGVyIl1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFRwLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Im1hdC1wbGFjZWhvbGRlciJ9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBnaz1uZXcgeXQoIk1hdFByZWZpeCIpLGV1PWNsYXNze307ZXUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZXUpfTtldS5cdTAyNzVkaXI9dnQoe3R5cGU6ZXUsc2VsZWN0b3JzOltbIiIsIm1hdFByZWZpeCIsIiJdXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOmdrLHVzZUV4aXN0aW5nOmV1fV0pXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhldSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0UHJlZml4XSIscHJvdmlkZXJzOlt7cHJvdmlkZTpnayx1c2VFeGlzdGluZzpldX1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgdWs9bmV3IHl0KCJNYXRTdWZmaXgiKSxudT1jbGFzc3t9O251Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG51KX07bnUuXHUwMjc1ZGlyPXZ0KHt0eXBlOm51LHNlbGVjdG9yczpbWyIiLCJtYXRTdWZmaXgiLCIiXV0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTp1ayx1c2VFeGlzdGluZzpudX1dKV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobnUsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdFN1ZmZpeF0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6dWssdXNlRXhpc3Rpbmc6bnV9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIGlydD0wLHU1dD0uNzUsYXJ0PTUsaDV0PUZzKGNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuX2VsZW1lbnRSZWY9bn19LCJwcmltYXJ5IiksR1U9bmV3IHl0KCJNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMiKSxBcD1uZXcgeXQoIk1hdEZvcm1GaWVsZCIpLG9pPWNsYXNzIGV4dGVuZHMgaDV0e2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCl7c3VwZXIodCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9kaXI9aSx0aGlzLl9kZWZhdWx0cz1hLHRoaXMuX3BsYXRmb3JtPXIsdGhpcy5fbmdab25lPXMsdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITEsdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITEsdGhpcy5fZGVzdHJveWVkPW5ldyBKdCx0aGlzLl9zaG93QWx3YXlzQW5pbWF0ZT0hMSx0aGlzLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZT0iIix0aGlzLl9oaW50TGFiZWw9IiIsdGhpcy5faGludExhYmVsSWQ9YG1hdC1oaW50LSR7aXJ0Kyt9YCx0aGlzLl9sYWJlbElkPWBtYXQtZm9ybS1maWVsZC1sYWJlbC0ke2lydCsrfWAsdGhpcy5mbG9hdExhYmVsPXRoaXMuX2dldERlZmF1bHRGbG9hdExhYmVsU3RhdGUoKSx0aGlzLl9hbmltYXRpb25zRW5hYmxlZD1sIT09Ik5vb3BBbmltYXRpb25zIix0aGlzLmFwcGVhcmFuY2U9YSYmYS5hcHBlYXJhbmNlP2EuYXBwZWFyYW5jZToibGVnYWN5Iix0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI9YSYmYS5oaWRlUmVxdWlyZWRNYXJrZXIhPW51bGw/YS5oaWRlUmVxdWlyZWRNYXJrZXI6ITF9Z2V0IGFwcGVhcmFuY2UoKXtyZXR1cm4gdGhpcy5fYXBwZWFyYW5jZX1zZXQgYXBwZWFyYW5jZSh0KXtsZXQgZT10aGlzLl9hcHBlYXJhbmNlO3RoaXMuX2FwcGVhcmFuY2U9dHx8dGhpcy5fZGVmYXVsdHMmJnRoaXMuX2RlZmF1bHRzLmFwcGVhcmFuY2V8fCJsZWdhY3kiLHRoaXMuX2FwcGVhcmFuY2U9PT0ib3V0bGluZSImJmUhPT10JiYodGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITApfWdldCBoaWRlUmVxdWlyZWRNYXJrZXIoKXtyZXR1cm4gdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyfXNldCBoaWRlUmVxdWlyZWRNYXJrZXIodCl7dGhpcy5faGlkZVJlcXVpcmVkTWFya2VyPVplKHQpfV9zaG91bGRBbHdheXNGbG9hdCgpe3JldHVybiB0aGlzLmZsb2F0TGFiZWw9PT0iYWx3YXlzIiYmIXRoaXMuX3Nob3dBbHdheXNBbmltYXRlfV9jYW5MYWJlbEZsb2F0KCl7cmV0dXJuIHRoaXMuZmxvYXRMYWJlbCE9PSJuZXZlciJ9Z2V0IGhpbnRMYWJlbCgpe3JldHVybiB0aGlzLl9oaW50TGFiZWx9c2V0IGhpbnRMYWJlbCh0KXt0aGlzLl9oaW50TGFiZWw9dCx0aGlzLl9wcm9jZXNzSGludHMoKX1nZXQgZmxvYXRMYWJlbCgpe3JldHVybiB0aGlzLmFwcGVhcmFuY2UhPT0ibGVnYWN5IiYmdGhpcy5fZmxvYXRMYWJlbD09PSJuZXZlciI/ImF1dG8iOnRoaXMuX2Zsb2F0TGFiZWx9c2V0IGZsb2F0TGFiZWwodCl7dCE9PXRoaXMuX2Zsb2F0TGFiZWwmJih0aGlzLl9mbG9hdExhYmVsPXR8fHRoaXMuX2dldERlZmF1bHRGbG9hdExhYmVsU3RhdGUoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Z2V0IF9jb250cm9sKCl7cmV0dXJuIHRoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbHx8dGhpcy5fY29udHJvbE5vblN0YXRpY3x8dGhpcy5fY29udHJvbFN0YXRpY31zZXQgX2NvbnRyb2wodCl7dGhpcy5fZXhwbGljaXRGb3JtRmllbGRDb250cm9sPXR9Z2V0TGFiZWxJZCgpe3JldHVybiB0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCk/dGhpcy5fbGFiZWxJZDpudWxsfWdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKXtyZXR1cm4gdGhpcy5fY29ubmVjdGlvbkNvbnRhaW5lclJlZnx8dGhpcy5fZWxlbWVudFJlZn1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl92YWxpZGF0ZUNvbnRyb2xDaGlsZCgpO2xldCB0PXRoaXMuX2NvbnRyb2w7dC5jb250cm9sVHlwZSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYG1hdC1mb3JtLWZpZWxkLXR5cGUtJHt0LmNvbnRyb2xUeXBlfWApLHQuc3RhdGVDaGFuZ2VzLnBpcGUoU28obnVsbCkpLnN1YnNjcmliZSgoKT0+e3RoaXMuX3ZhbGlkYXRlUGxhY2Vob2xkZXJzKCksdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSx0Lm5nQ29udHJvbCYmdC5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzJiZ0Lm5nQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZSYmdGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9KX0pLHluKHRoaXMuX3ByZWZpeENoaWxkcmVuLmNoYW5nZXMsdGhpcy5fc3VmZml4Q2hpbGRyZW4uY2hhbmdlcykuc3Vic2NyaWJlKCgpPT57dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSx0aGlzLl9oaW50Q2hpbGRyZW4uY2hhbmdlcy5waXBlKFNvKG51bGwpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9wcm9jZXNzSGludHMoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pLHRoaXMuX2Vycm9yQ2hpbGRyZW4uY2hhbmdlcy5waXBlKFNvKG51bGwpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9zeW5jRGVzY3JpYmVkQnlJZHMoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pLHRoaXMuX2RpciYmdGhpcy5fZGlyLmNoYW5nZS5waXBlKFBlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKT0+e3R5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU9PSJmdW5jdGlvbiI/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT50aGlzLnVwZGF0ZU91dGxpbmVHYXAoKSl9KTp0aGlzLnVwZGF0ZU91dGxpbmVHYXAoKX0pfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe3RoaXMuX3ZhbGlkYXRlQ29udHJvbENoaWxkKCksdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHkmJnRoaXMudXBkYXRlT3V0bGluZUdhcCgpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlPSJlbnRlciIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fc2hvdWxkRm9yd2FyZCh0KXtsZXQgZT10aGlzLl9jb250cm9sP3RoaXMuX2NvbnRyb2wubmdDb250cm9sOm51bGw7cmV0dXJuIGUmJmVbdF19X2hhc1BsYWNlaG9sZGVyKCl7cmV0dXJuISEodGhpcy5fY29udHJvbCYmdGhpcy5fY29udHJvbC5wbGFjZWhvbGRlcnx8dGhpcy5fcGxhY2Vob2xkZXJDaGlsZCl9X2hhc0xhYmVsKCl7cmV0dXJuISEodGhpcy5fbGFiZWxDaGlsZE5vblN0YXRpY3x8dGhpcy5fbGFiZWxDaGlsZFN0YXRpYyl9X3Nob3VsZExhYmVsRmxvYXQoKXtyZXR1cm4gdGhpcy5fY2FuTGFiZWxGbG9hdCgpJiYodGhpcy5fY29udHJvbCYmdGhpcy5fY29udHJvbC5zaG91bGRMYWJlbEZsb2F0fHx0aGlzLl9zaG91bGRBbHdheXNGbG9hdCgpKX1faGlkZUNvbnRyb2xQbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLmFwcGVhcmFuY2U9PT0ibGVnYWN5IiYmIXRoaXMuX2hhc0xhYmVsKCl8fHRoaXMuX2hhc0xhYmVsKCkmJiF0aGlzLl9zaG91bGRMYWJlbEZsb2F0KCl9X2hhc0Zsb2F0aW5nTGFiZWwoKXtyZXR1cm4gdGhpcy5faGFzTGFiZWwoKXx8dGhpcy5hcHBlYXJhbmNlPT09ImxlZ2FjeSImJnRoaXMuX2hhc1BsYWNlaG9sZGVyKCl9X2dldERpc3BsYXllZE1lc3NhZ2VzKCl7cmV0dXJuIHRoaXMuX2Vycm9yQ2hpbGRyZW4mJnRoaXMuX2Vycm9yQ2hpbGRyZW4ubGVuZ3RoPjAmJnRoaXMuX2NvbnRyb2wuZXJyb3JTdGF0ZT8iZXJyb3IiOiJoaW50In1fYW5pbWF0ZUFuZExvY2tMYWJlbCgpe3RoaXMuX2hhc0Zsb2F0aW5nTGFiZWwoKSYmdGhpcy5fY2FuTGFiZWxGbG9hdCgpJiYodGhpcy5fYW5pbWF0aW9uc0VuYWJsZWQmJnRoaXMuX2xhYmVsJiYodGhpcy5fc2hvd0Fsd2F5c0FuaW1hdGU9ITAsam8odGhpcy5fbGFiZWwubmF0aXZlRWxlbWVudCwidHJhbnNpdGlvbmVuZCIpLnBpcGUoQ24oMSkpLnN1YnNjcmliZSgoKT0+e3RoaXMuX3Nob3dBbHdheXNBbmltYXRlPSExfSkpLHRoaXMuZmxvYXRMYWJlbD0iYWx3YXlzIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X3ZhbGlkYXRlUGxhY2Vob2xkZXJzKCl7aWYodGhpcy5fY29udHJvbC5wbGFjZWhvbGRlciYmdGhpcy5fcGxhY2Vob2xkZXJDaGlsZCYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IHA1dCgpfV9wcm9jZXNzSGludHMoKXt0aGlzLl92YWxpZGF0ZUhpbnRzKCksdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCl9X3ZhbGlkYXRlSGludHMoKXtpZih0aGlzLl9oaW50Q2hpbGRyZW4mJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl7bGV0IHQsZTt0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaChvPT57aWYoby5hbGlnbj09PSJzdGFydCIpe2lmKHR8fHRoaXMuaGludExhYmVsKXRocm93IG9ydCgic3RhcnQiKTt0PW99ZWxzZSBpZihvLmFsaWduPT09ImVuZCIpe2lmKGUpdGhyb3cgb3J0KCJlbmQiKTtlPW99fSl9fV9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRzJiZ0aGlzLl9kZWZhdWx0cy5mbG9hdExhYmVsfHwiYXV0byJ9X3N5bmNEZXNjcmliZWRCeUlkcygpe2lmKHRoaXMuX2NvbnRyb2wpe2xldCB0PVtdO2lmKHRoaXMuX2NvbnRyb2wudXNlckFyaWFEZXNjcmliZWRCeSYmdHlwZW9mIHRoaXMuX2NvbnRyb2wudXNlckFyaWFEZXNjcmliZWRCeT09InN0cmluZyImJnQucHVzaCguLi50aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkuc3BsaXQoIiAiKSksdGhpcy5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKT09PSJoaW50Iil7bGV0IGU9dGhpcy5faGludENoaWxkcmVuP3RoaXMuX2hpbnRDaGlsZHJlbi5maW5kKGk9PmkuYWxpZ249PT0ic3RhcnQiKTpudWxsLG89dGhpcy5faGludENoaWxkcmVuP3RoaXMuX2hpbnRDaGlsZHJlbi5maW5kKGk9PmkuYWxpZ249PT0iZW5kIik6bnVsbDtlP3QucHVzaChlLmlkKTp0aGlzLl9oaW50TGFiZWwmJnQucHVzaCh0aGlzLl9oaW50TGFiZWxJZCksbyYmdC5wdXNoKG8uaWQpfWVsc2UgdGhpcy5fZXJyb3JDaGlsZHJlbiYmdC5wdXNoKC4uLnRoaXMuX2Vycm9yQ2hpbGRyZW4ubWFwKGU9PmUuaWQpKTt0aGlzLl9jb250cm9sLnNldERlc2NyaWJlZEJ5SWRzKHQpfX1fdmFsaWRhdGVDb250cm9sQ2hpbGQoKXtpZighdGhpcy5fY29udHJvbCYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IGQ1dCgpfXVwZGF0ZU91dGxpbmVHYXAoKXtsZXQgdD10aGlzLl9sYWJlbD90aGlzLl9sYWJlbC5uYXRpdmVFbGVtZW50Om51bGw7aWYodGhpcy5hcHBlYXJhbmNlIT09Im91dGxpbmUifHwhdHx8IXQuY2hpbGRyZW4ubGVuZ3RofHwhdC50ZXh0Q29udGVudC50cmltKCl8fCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuO2lmKCF0aGlzLl9pc0F0dGFjaGVkVG9ET00oKSl7dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITA7cmV0dXJufWxldCBlPTAsbz0wLGk9dGhpcy5fY29ubmVjdGlvbkNvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LGE9aS5xdWVyeVNlbGVjdG9yQWxsKCIubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCIpLHI9aS5xdWVyeVNlbGVjdG9yQWxsKCIubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXAiKTtpZih0aGlzLl9sYWJlbCYmdGhpcy5fbGFiZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpe2xldCBzPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYocy53aWR0aD09PTAmJnMuaGVpZ2h0PT09MCl7dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITAsdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITE7cmV0dXJufWxldCBsPXRoaXMuX2dldFN0YXJ0RW5kKHMpLGM9dC5jaGlsZHJlbixtPXRoaXMuX2dldFN0YXJ0RW5kKGNbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGY9MDtmb3IobGV0IHA9MDtwPGMubGVuZ3RoO3ArKylmKz1jW3BdLm9mZnNldFdpZHRoO2U9TWF0aC5hYnMobS1sKS1hcnQsbz1mPjA/Zip1NXQrYXJ0KjI6MH1mb3IobGV0IHM9MDtzPGEubGVuZ3RoO3MrKylhW3NdLnN0eWxlLndpZHRoPWAke2V9cHhgO2ZvcihsZXQgcz0wO3M8ci5sZW5ndGg7cysrKXJbc10uc3R5bGUud2lkdGg9YCR7b31weGA7dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITF9X2dldFN0YXJ0RW5kKHQpe3JldHVybiB0aGlzLl9kaXImJnRoaXMuX2Rpci52YWx1ZT09PSJydGwiP3QucmlnaHQ6dC5sZWZ0fV9pc0F0dGFjaGVkVG9ET00oKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7aWYodC5nZXRSb290Tm9kZSl7bGV0IGU9dC5nZXRSb290Tm9kZSgpO3JldHVybiBlJiZlIT09dH1yZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHQpfX07b2kuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8b2kpKHYoTCksdihUdCksdihMKSx2KE5lLDgpLHYoR1UsOCksdihWdCksdihDdCksdihzbiw4KSl9O29pLlx1MDI3NWNtcD16KHt0eXBlOm9pLHNlbGVjdG9yczpbWyJtYXQtZm9ybS1maWVsZCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LGUsbyl7aWYodCYxJiYoZ28obyxqciw1KSxnbyhvLGpyLDcpLGdvKG8scHMsNSksZ28obyxwcyw3KSxnbyhvLFRwLDUpLGdvKG8scGssNSksZ28obyxkayw1KSxnbyhvLGdrLDUpLGdvKG8sdWssNSkpLHQmMil7bGV0IGk7SHQoaT1GdCgpKSYmKGUuX2NvbnRyb2xOb25TdGF0aWM9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUuX2NvbnRyb2xTdGF0aWM9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUuX2xhYmVsQ2hpbGROb25TdGF0aWM9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUuX2xhYmVsQ2hpbGRTdGF0aWM9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUuX3BsYWNlaG9sZGVyQ2hpbGQ9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUuX2Vycm9yQ2hpbGRyZW49aSksSHQoaT1GdCgpKSYmKGUuX2hpbnRDaGlsZHJlbj1pKSxIdChpPUZ0KCkpJiYoZS5fcHJlZml4Q2hpbGRyZW49aSksSHQoaT1GdCgpKSYmKGUuX3N1ZmZpeENoaWxkcmVuPWkpfX0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYocGUoWmt0LDUpLHBlKFhrdCw3KSxwZShRa3QsNSkscGUoS2t0LDUpKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLnVuZGVybGluZVJlZj1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5fY29ubmVjdGlvbkNvbnRhaW5lclJlZj1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5faW5wdXRDb250YWluZXJSZWY9by5maXJzdCksSHQobz1GdCgpKSYmKGUuX2xhYmVsPW8uZmlyc3QpfX0saG9zdEF0dHJzOlsxLCJtYXQtZm9ybS1maWVsZCJdLGhvc3RWYXJzOjQwLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmbWUoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQiLGUuYXBwZWFyYW5jZT09InN0YW5kYXJkIikoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCIsZS5hcHBlYXJhbmNlPT0iZmlsbCIpKCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUiLGUuYXBwZWFyYW5jZT09Im91dGxpbmUiKSgibWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kiLGUuYXBwZWFyYW5jZT09ImxlZ2FjeSIpKCJtYXQtZm9ybS1maWVsZC1pbnZhbGlkIixlLl9jb250cm9sLmVycm9yU3RhdGUpKCJtYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQiLGUuX2NhbkxhYmVsRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCIsZS5fc2hvdWxkTGFiZWxGbG9hdCgpKSgibWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIixlLl9oYXNGbG9hdGluZ0xhYmVsKCkpKCJtYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIixlLl9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCkpKCJtYXQtZm9ybS1maWVsZC1kaXNhYmxlZCIsZS5fY29udHJvbC5kaXNhYmxlZCkoIm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsZWQiLGUuX2NvbnRyb2wuYXV0b2ZpbGxlZCkoIm1hdC1mb2N1c2VkIixlLl9jb250cm9sLmZvY3VzZWQpKCJuZy11bnRvdWNoZWQiLGUuX3Nob3VsZEZvcndhcmQoInVudG91Y2hlZCIpKSgibmctdG91Y2hlZCIsZS5fc2hvdWxkRm9yd2FyZCgidG91Y2hlZCIpKSgibmctcHJpc3RpbmUiLGUuX3Nob3VsZEZvcndhcmQoInByaXN0aW5lIikpKCJuZy1kaXJ0eSIsZS5fc2hvdWxkRm9yd2FyZCgiZGlydHkiKSkoIm5nLXZhbGlkIixlLl9zaG91bGRGb3J3YXJkKCJ2YWxpZCIpKSgibmctaW52YWxpZCIsZS5fc2hvdWxkRm9yd2FyZCgiaW52YWxpZCIpKSgibmctcGVuZGluZyIsZS5fc2hvdWxkRm9yd2FyZCgicGVuZGluZyIpKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCFlLl9hbmltYXRpb25zRW5hYmxlZCl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixmbG9hdExhYmVsOiJmbG9hdExhYmVsIixhcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixoaWRlUmVxdWlyZWRNYXJrZXI6ImhpZGVSZXF1aXJlZE1hcmtlciIsaGludExhYmVsOiJoaW50TGFiZWwifSxleHBvcnRBczpbIm1hdEZvcm1GaWVsZCJdLGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6QXAsdXNlRXhpc3Rpbmc6b2l9XSksYWVdLG5nQ29udGVudFNlbGVjdG9yczptNXQsZGVjbHM6MTUsdmFyczo4LGNvbnN0czpbWzEsIm1hdC1mb3JtLWZpZWxkLXdyYXBwZXIiXSxbMSwibWF0LWZvcm0tZmllbGQtZmxleCIsMywiY2xpY2siXSxbImNvbm5lY3Rpb25Db250YWluZXIiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtZm9ybS1maWVsZC1wcmVmaXgiLDQsIm5nSWYiXSxbMSwibWF0LWZvcm0tZmllbGQtaW5maXgiXSxbImlucHV0Q29udGFpbmVyIiwiIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJpZCIsIm1hdC1lbXB0eSIsIm1hdC1mb3JtLWZpZWxkLWVtcHR5IiwibWF0LWFjY2VudCIsIm1hdC13YXJuIiwibmdTd2l0Y2giLCJjZGtPYnNlcnZlQ29udGVudCIsNCwibmdJZiJdLFsiY2xhc3MiLCJtYXQtZm9ybS1maWVsZC1zdWZmaXgiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIiwzLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LWZvcm0tZmllbGQtb3V0bGluZSJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0Il0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2FwIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUiLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXByZWZpeCJdLFsxLCJtYXQtZm9ybS1maWVsZC1sYWJlbCIsMywiY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZCIsImlkIiwibmdTd2l0Y2giLCJjZGtPYnNlcnZlQ29udGVudCJdLFsibGFiZWwiLCIiXSxbImNsYXNzIiwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIG1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsNCwibmdJZiJdLFsiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWQiLCJtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiXSxbMSwibWF0LWZvcm0tZmllbGQtc3VmZml4Il0sWzEsIm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSJdLFsidW5kZXJsaW5lIiwiIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXJpcHBsZSJdLFsxLCJtYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXIiXSxbImNsYXNzIiwibWF0LWhpbnQiLDMsImlkIiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWhpbnQtc3BhY2VyIl0sWzEsIm1hdC1oaW50IiwzLCJpZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKGM1dCksdSgwLCJkaXYiLDApLHUoMSwiZGl2IiwxLDIpLEEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gZS5fY29udHJvbC5vbkNvbnRhaW5lckNsaWNrJiZlLl9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2soaSl9KSxrKDMsSmt0LDksMCwibmctY29udGFpbmVyIiwzKSxrKDQsJGt0LDIsMCwiZGl2Iiw0KSx1KDUsImRpdiIsNSw2KSxZbig3KSx1KDgsInNwYW4iLDcpLGsoOSxvNXQsNSwxNiwibGFiZWwiLDgpLGgoKSxoKCksaygxMCxpNXQsMiwwLCJkaXYiLDkpLGgoKSxrKDExLGE1dCwzLDQsImRpdiIsMTApLHUoMTIsImRpdiIsMTEpLGsoMTMscjV0LDIsMSwiZGl2IiwxMiksaygxNCxsNXQsNSwyLCJkaXYiLDEzKSxoKCksaCgpKSx0JjImJih4KDMpLFAoIm5nSWYiLGUuYXBwZWFyYW5jZT09Im91dGxpbmUiKSx4KDEpLFAoIm5nSWYiLGUuX3ByZWZpeENoaWxkcmVuLmxlbmd0aCkseCg1KSxQKCJuZ0lmIixlLl9oYXNGbG9hdGluZ0xhYmVsKCkpLHgoMSksUCgibmdJZiIsZS5fc3VmZml4Q2hpbGRyZW4ubGVuZ3RoKSx4KDEpLFAoIm5nSWYiLGUuYXBwZWFyYW5jZSE9Im91dGxpbmUiKSx4KDEpLFAoIm5nU3dpdGNoIixlLl9nZXREaXNwbGF5ZWRNZXNzYWdlcygpKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsImVycm9yIikseCgxKSxQKCJuZ1N3aXRjaENhc2UiLCJoaW50IikpfSxkaXJlY3RpdmVzOltYdCxHbyx1aSxCcl0sc3R5bGVzOltgLm1hdC1mb3JtLWZpZWxke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxke3RleHQtYWxpZ246cmlnaHR9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0ubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXg6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtaW5maXh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OmF1dG87bWluLXdpZHRoOjA7d2lkdGg6MTgwcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaW5maXh7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtZm9ybS1maWVsZC1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Zm9udDppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksd2lkdGggNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDA7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWVtcHR5Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbjpub25lfS5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWlucHV0LXNlcnZlcltwbGFjZWhvbGRlcl06bm90KDpwbGFjZWhvbGRlci1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtbGFiZWw6bm90KC5tYXQtZm9ybS1maWVsZC1lbXB0eSl7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zZm9ybTpzY2FsZTNkKDEsIDEuMDAwMSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJTt0cmFuc2Zvcm06c2NhbGVYKDAuNSk7b3BhY2l0eTowO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxvcGFjaXR5IDEwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgMzAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbn0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXIgLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtaWNvbnt3aWR0aDoxZW07aGVpZ2h0OjFlbTtmb250LXNpemU6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX0ubWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVye2Rpc3BsYXk6ZmxleH0ubWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXJ7ZmxleDoxIDAgMWVtfS5tYXQtZXJyb3J7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtY29udHJvbC13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1oaW50LWVuZHtvcmRlcjoxfS5tYXQtZm9ybS1maWVsZC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfQpgLGAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7cGFkZGluZzouNzVlbSAuNzVlbSAwIC43NWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7b3V0bGluZTpkYXNoZWQgM3B4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2NvbnRlbnQ6IiI7ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtoZWlnaHQ6MXB4O3dpZHRoOjEwMCV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbDpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246b3BhY2l0eSA2MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX0KYCxgLm1hdC1pbnB1dC1lbGVtZW50e2ZvbnQ6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOmN1cnJlbnRDb2xvcjtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7cGFkZGluZzowO21hcmdpbjowO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7dmVydGljYWwtYWxpZ246Ym90dG9tO3RleHQtYWxpZ246aW5oZXJpdDtib3gtc2l6aW5nOmNvbnRlbnQtYm94fS5tYXQtaW5wdXQtZWxlbWVudDotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLWNsZWFyLC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXJldmVhbHtkaXNwbGF5Om5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY29udGFjdHMtYXV0by1maWxsLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2Fwcy1sb2NrLWluZGljYXRvciwubWF0LWlucHV0LWVsZW1lbnQ6bm90KFt0eXBlPXBhc3N3b3JkXSk6Oi13ZWJraXQtY3JlZGVudGlhbHMtYXV0by1maWxsLWJ1dHRvbnt2aXNpYmlsaXR5OmhpZGRlbn0ubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRlXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZV0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPW1vbnRoXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT13ZWVrXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT10aW1lXXtsaW5lLWhlaWdodDoxfS5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGVdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZV06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lLWxvY2FsXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9bW9udGhdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT13ZWVrXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9dGltZV06OmFmdGVye2NvbnRlbnQ6IiAiO3doaXRlLXNwYWNlOnByZTt3aWR0aDoxcHh9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jbGVhci1idXR0b257Zm9udC1zaXplOi43NWVtfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7b3BhY2l0eTowfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50e3Jlc2l6ZTp2ZXJ0aWNhbDtvdmVyZmxvdzphdXRvfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50LmNkay10ZXh0YXJlYS1hdXRvc2l6ZXtyZXNpemU6bm9uZX10ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nOjJweCAwO21hcmdpbjotMnB4IDB9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50ey1tb3otYXBwZWFyYW5jZTpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZy10b3A6MWVtO3RvcDotMWVtO21hcmdpbi1ib3R0b206LTFlbX1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1leHBhbmR7ZGlzcGxheTpub25lfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6bm90KDpkaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtdmFsdWV7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOm5vbmV9Lm1hdC1mb2N1c2VkIC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgc2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtdmFsdWV7Y29sb3I6aW5oZXJpdH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOjVweCBzb2xpZDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjA7bWFyZ2luLXRvcDotMi41cHg7cG9pbnRlci1ldmVudHM6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntyaWdodDphdXRvO2xlZnQ6MH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZy1yaWdodDoxNXB4fVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoxNXB4fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye21heC13aWR0aDpjYWxjKDEwMCUgLSAxMHB4KX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcnttYXJnaW4tdG9wOi01cHh9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7bWFyZ2luLXRvcDotMTBweH0KYCxgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoMTAwcHgpOy1tcy10cmFuc2Zvcm06bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue3dpZHRoOjFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257Zm9udDppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue2ZvbnQtc2l6ZTppbmhlcml0fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDoxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0b3A6MDtoZWlnaHQ6MnB4O292ZXJmbG93OmhpZGRlbn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtcG9zaXRpb246MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym9yZGVyLXRvcC1zdHlsZTpkb3R0ZWQ7Ym9yZGVyLXRvcC13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWludmFsaWQ6bm90KC5tYXQtZm9jdXNlZCkgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MXB4fQpgLGAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC13cmFwcGVye21hcmdpbjouMjVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZzowIC43NWVtIDAgLjc1ZW07bWFyZ2luLXRvcDotMC4yNWVtO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7dG9wOi4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMjVlbTtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7bWluLXdpZHRoOjVweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0e2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHg7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnR7Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7Ym9yZGVyLXJhZGl1czowIDVweCA1cHggMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwO2JvcmRlci1sZWZ0LXN0eWxlOm5vbmU7ZmxleC1ncm93OjF9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci1yaWdodC1zdHlsZTpub25lO2JvcmRlci1yYWRpdXM6NXB4IDAgMCA1cHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXJhZGl1czouMDAwMDAxcHg7Ym9yZGVyOjFweCBzb2xpZCBjdXJyZW50Q29sb3I7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci10b3AtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljaywubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tib3JkZXI6M3B4IGRhc2hlZH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5le29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cGFkZGluZzowIDFlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHt0cmFuc2l0aW9uOm5vbmV9CmAsYC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC1mbGV4e3BhZGRpbmctdG9wOi43NWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAxcHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtib3R0b206MDtoZWlnaHQ6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtcG9zaXRpb246MDtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3JkZXItdG9wLXN0eWxlOmRvdHRlZDtib3JkZXItdG9wLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZDpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246b3BhY2l0eSA2MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfQpgXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltycnQudHJhbnNpdGlvbk1lc3NhZ2VzXX0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtvaS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOlR0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltMXX1dfSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W0dVXX1dfSx7dHlwZTpWdH0se3R5cGU6Q3R9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3NuXX1dfV07b2kucHJvcERlY29yYXRvcnM9e2FwcGVhcmFuY2U6W3t0eXBlOmR9XSxoaWRlUmVxdWlyZWRNYXJrZXI6W3t0eXBlOmR9XSxoaW50TGFiZWw6W3t0eXBlOmR9XSxmbG9hdExhYmVsOlt7dHlwZTpkfV0sdW5kZXJsaW5lUmVmOlt7dHlwZTpJdCxhcmdzOlsidW5kZXJsaW5lIl19XSxfY29ubmVjdGlvbkNvbnRhaW5lclJlZjpbe3R5cGU6SXQsYXJnczpbImNvbm5lY3Rpb25Db250YWluZXIiLHtzdGF0aWM6ITB9XX1dLF9pbnB1dENvbnRhaW5lclJlZjpbe3R5cGU6SXQsYXJnczpbImlucHV0Q29udGFpbmVyIl19XSxfbGFiZWw6W3t0eXBlOkl0LGFyZ3M6WyJsYWJlbCJdfV0sX2NvbnRyb2xOb25TdGF0aWM6W3t0eXBlOktvLGFyZ3M6W2pyXX1dLF9jb250cm9sU3RhdGljOlt7dHlwZTpLbyxhcmdzOltqcix7c3RhdGljOiEwfV19XSxfbGFiZWxDaGlsZE5vblN0YXRpYzpbe3R5cGU6S28sYXJnczpbcHNdfV0sX2xhYmVsQ2hpbGRTdGF0aWM6W3t0eXBlOktvLGFyZ3M6W3BzLHtzdGF0aWM6ITB9XX1dLF9wbGFjZWhvbGRlckNoaWxkOlt7dHlwZTpLbyxhcmdzOltUcF19XSxfZXJyb3JDaGlsZHJlbjpbe3R5cGU6bG8sYXJnczpbcGsse2Rlc2NlbmRhbnRzOiEwfV19XSxfaGludENoaWxkcmVuOlt7dHlwZTpsbyxhcmdzOltkayx7ZGVzY2VuZGFudHM6ITB9XX1dLF9wcmVmaXhDaGlsZHJlbjpbe3R5cGU6bG8sYXJnczpbZ2sse2Rlc2NlbmRhbnRzOiEwfV19XSxfc3VmZml4Q2hpbGRyZW46W3t0eXBlOmxvLGFyZ3M6W3VrLHtkZXNjZW5kYW50czohMH1dfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhvaSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1hdC1mb3JtLWZpZWxkIixleHBvcnRBczoibWF0Rm9ybUZpZWxkIix0ZW1wbGF0ZTpgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtd3JhcHBlciI+CiAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtZmxleCIgI2Nvbm5lY3Rpb25Db250YWluZXIKICAgICAgIChjbGljayk9Il9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2sgJiYgX2NvbnRyb2wub25Db250YWluZXJDbGljaygkZXZlbnQpIj4KCiAgICA8IS0tIE91dGxpbmUgdXNlZCBmb3Igb3V0bGluZSBhcHBlYXJhbmNlLiAtLT4KICAgIDxuZy1jb250YWluZXIgKm5nSWY9ImFwcGVhcmFuY2UgPT0gJ291dGxpbmUnIj4KICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUgbWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L25nLWNvbnRhaW5lcj4KCiAgICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1wcmVmaXgiICpuZ0lmPSJfcHJlZml4Q2hpbGRyZW4ubGVuZ3RoIj4KICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJbbWF0UHJlZml4XSI+PC9uZy1jb250ZW50PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaW5maXgiICNpbnB1dENvbnRhaW5lcj4KICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PgoKICAgICAgPHNwYW4gY2xhc3M9Im1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIiPgogICAgICAgIDwhLS0gV2UgYWRkIGFyaWEtb3ducyBhcyBhIHdvcmthcm91bmQgZm9yIGFuIGlzc3VlIGluIEpBV1MgJiBOVkRBIHdoZXJlIHRoZSBsYWJlbCBpc24ndAogICAgICAgICAgICAgcmVhZCBpZiBpdCBjb21lcyBiZWZvcmUgdGhlIGNvbnRyb2wgaW4gdGhlIERPTS4gLS0+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJtYXQtZm9ybS1maWVsZC1sYWJlbCIKICAgICAgICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT0idXBkYXRlT3V0bGluZUdhcCgpIgogICAgICAgICAgICAgICBbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09ImFwcGVhcmFuY2UgIT0gJ291dGxpbmUnIgogICAgICAgICAgICAgICBbaWRdPSJfbGFiZWxJZCIKICAgICAgICAgICAgICAgW2F0dHIuZm9yXT0iX2NvbnRyb2wuaWQiCiAgICAgICAgICAgICAgIFthdHRyLmFyaWEtb3duc109Il9jb250cm9sLmlkIgogICAgICAgICAgICAgICBbY2xhc3MubWF0LWVtcHR5XT0iX2NvbnRyb2wuZW1wdHkgJiYgIV9zaG91bGRBbHdheXNGbG9hdCgpIgogICAgICAgICAgICAgICBbY2xhc3MubWF0LWZvcm0tZmllbGQtZW1wdHldPSJfY29udHJvbC5lbXB0eSAmJiAhX3Nob3VsZEFsd2F5c0Zsb2F0KCkiCiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtYWNjZW50XT0iY29sb3IgPT0gJ2FjY2VudCciCiAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtd2Fybl09ImNvbG9yID09ICd3YXJuJyIKICAgICAgICAgICAgICAgI2xhYmVsCiAgICAgICAgICAgICAgICpuZ0lmPSJfaGFzRmxvYXRpbmdMYWJlbCgpIgogICAgICAgICAgICAgICBbbmdTd2l0Y2hdPSJfaGFzTGFiZWwoKSI+CgogICAgICAgICAgPCEtLSBAYnJlYWtpbmctY2hhbmdlIDguMC4wIHJlbW92ZSBpbiBmYXZvciBvZiBtYXQtbGFiZWwgZWxlbWVudCBhbiBwbGFjZWhvbGRlciBhdHRyLiAtLT4KICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT0iZmFsc2UiPgogICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1wbGFjZWhvbGRlciI+PC9uZy1jb250ZW50PgogICAgICAgICAgICA8c3Bhbj57e19jb250cm9sLnBsYWNlaG9sZGVyfX08L3NwYW4+CiAgICAgICAgICA8L25nLWNvbnRhaW5lcj4KCiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1sYWJlbCIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+PC9uZy1jb250ZW50PgoKICAgICAgICAgIDwhLS0gQGJyZWFraW5nLWNoYW5nZSA4LjAuMCByZW1vdmUgXGBtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWRcYCBjbGFzcyAtLT4KICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgIGNsYXNzPSJtYXQtcGxhY2Vob2xkZXItcmVxdWlyZWQgbWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIgogICAgICAgICAgICBhcmlhLWhpZGRlbj0idHJ1ZSIKICAgICAgICAgICAgKm5nSWY9IiFoaWRlUmVxdWlyZWRNYXJrZXIgJiYgX2NvbnRyb2wucmVxdWlyZWQgJiYgIV9jb250cm9sLmRpc2FibGVkIj4mIzMyOyo8L3NwYW4+CiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtc3VmZml4IiAqbmdJZj0iX3N1ZmZpeENoaWxkcmVuLmxlbmd0aCI+CiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0iW21hdFN1ZmZpeF0iPjwvbmctY29udGVudD4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8IS0tIFVuZGVybGluZSB1c2VkIGZvciBsZWdhY3ksIHN0YW5kYXJkLCBhbmQgYm94IGFwcGVhcmFuY2VzLiAtLT4KICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC11bmRlcmxpbmUiICN1bmRlcmxpbmUKICAgICAgICpuZ0lmPSJhcHBlYXJhbmNlICE9ICdvdXRsaW5lJyI+CiAgICA8c3BhbiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtcmlwcGxlIgogICAgICAgICAgW2NsYXNzLm1hdC1hY2NlbnRdPSJjb2xvciA9PSAnYWNjZW50JyIKICAgICAgICAgIFtjbGFzcy5tYXQtd2Fybl09ImNvbG9yID09ICd3YXJuJyI+PC9zcGFuPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJtYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciIKICAgICAgIFtuZ1N3aXRjaF09Il9nZXREaXNwbGF5ZWRNZXNzYWdlcygpIj4KICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT0iJ2Vycm9yJyIgW0B0cmFuc2l0aW9uTWVzc2FnZXNdPSJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUiPgogICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1lcnJvciI+PC9uZy1jb250ZW50PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIiAqbmdTd2l0Y2hDYXNlPSInaGludCciCiAgICAgIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT0iX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlIj4KICAgICAgPCEtLSBUT0RPKG1tYWxlcmJhKTogdXNlIGFuIGFjdHVhbCA8bWF0LWhpbnQ+IG9uY2UgYWxsIHNlbGVjdG9ycyBhcmUgc3dpdGNoZWQgdG8gbWF0LSogLS0+CiAgICAgIDxkaXYgKm5nSWY9ImhpbnRMYWJlbCIgW2lkXT0iX2hpbnRMYWJlbElkIiBjbGFzcz0ibWF0LWhpbnQiPnt7aGludExhYmVsfX08L2Rpdj4KICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PSJtYXQtaGludDpub3QoW2FsaWduPSdlbmQnXSkiPjwvbmctY29udGVudD4KICAgICAgPGRpdiBjbGFzcz0ibWF0LWZvcm0tZmllbGQtaGludC1zcGFjZXIiPjwvZGl2PgogICAgICA8bmctY29udGVudCBzZWxlY3Q9Im1hdC1oaW50W2FsaWduPSdlbmQnXSI+PC9uZy1jb250ZW50PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgpgLGFuaW1hdGlvbnM6W3JydC50cmFuc2l0aW9uTWVzc2FnZXNdLGhvc3Q6e2NsYXNzOiJtYXQtZm9ybS1maWVsZCIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT0gInN0YW5kYXJkIicsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxdIjonYXBwZWFyYW5jZSA9PSAiZmlsbCInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lXSI6J2FwcGVhcmFuY2UgPT0gIm91dGxpbmUiJywiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5XSI6J2FwcGVhcmFuY2UgPT0gImxlZ2FjeSInLCJbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF0iOiJfY29udHJvbC5lcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdF0iOiJfY2FuTGFiZWxGbG9hdCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdF0iOiJfc2hvdWxkTGFiZWxGbG9hdCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhhcy1sYWJlbF0iOiJfaGFzRmxvYXRpbmdMYWJlbCgpIiwiW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXJdIjoiX2hpZGVDb250cm9sUGxhY2Vob2xkZXIoKSIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZF0iOiJfY29udHJvbC5kaXNhYmxlZCIsIltjbGFzcy5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkXSI6Il9jb250cm9sLmF1dG9maWxsZWQiLCJbY2xhc3MubWF0LWZvY3VzZWRdIjoiX2NvbnRyb2wuZm9jdXNlZCIsIltjbGFzcy5uZy11bnRvdWNoZWRdIjonX3Nob3VsZEZvcndhcmQoInVudG91Y2hlZCIpJywiW2NsYXNzLm5nLXRvdWNoZWRdIjonX3Nob3VsZEZvcndhcmQoInRvdWNoZWQiKScsIltjbGFzcy5uZy1wcmlzdGluZV0iOidfc2hvdWxkRm9yd2FyZCgicHJpc3RpbmUiKScsIltjbGFzcy5uZy1kaXJ0eV0iOidfc2hvdWxkRm9yd2FyZCgiZGlydHkiKScsIltjbGFzcy5uZy12YWxpZF0iOidfc2hvdWxkRm9yd2FyZCgidmFsaWQiKScsIltjbGFzcy5uZy1pbnZhbGlkXSI6J19zaG91bGRGb3J3YXJkKCJpbnZhbGlkIiknLCJbY2xhc3MubmctcGVuZGluZ10iOidfc2hvdWxkRm9yd2FyZCgicGVuZGluZyIpJywiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6IiFfYW5pbWF0aW9uc0VuYWJsZWQifSxpbnB1dHM6WyJjb2xvciJdLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHByb3ZpZGVyczpbe3Byb3ZpZGU6QXAsdXNlRXhpc3Rpbmc6b2l9XSxzdHlsZXM6W2AubWF0LWZvcm0tZmllbGR7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7dGV4dC1hbGlnbjpsZWZ0fVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGR7dGV4dC1hbGlnbjpyaWdodH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1wcmVmaXgsLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeHt3aGl0ZS1zcGFjZTpub3dyYXA7ZmxleDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtZm9ybS1maWVsZC1pbmZpeHtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6YXV0bzttaW4td2lkdGg6MDt3aWR0aDoxODBweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtib3JkZXItaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCB0cmFuc3BhcmVudCl9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO2JveC1zaXppbmc6Y29udGVudC1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47cG9pbnRlci1ldmVudHM6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtmb250OmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTt3aWR0aDoxMDAlO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO292ZXJmbG93OmhpZGRlbjt0cmFuc2Zvcm0tb3JpZ2luOjAgMDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxjb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSx3aWR0aCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtkaXNwbGF5Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMDtsZWZ0OmF1dG87cmlnaHQ6MH0ubWF0LWZvcm0tZmllbGQtZW1wdHkubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9jazt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbcGxhY2Vob2xkZXJdOm5vdCg6cGxhY2Vob2xkZXItc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1sYWJlbDpub3QoLm1hdC1mb3JtLWZpZWxkLWVtcHR5KXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNmb3JtOnNjYWxlM2QoMSwgMS4wMDAxLCAxKX0ubWF0LWZvcm0tZmllbGQtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt3aWR0aDoxMDAlO3RyYW5zZm9ybS1vcmlnaW46NTAlO3RyYW5zZm9ybTpzY2FsZVgoMC41KTtvcGFjaXR5OjA7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDMwMG1zIGN1YmljLWJlemllcigwLjU1LCAwLCAwLjU1LCAwLjIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7b3BhY2l0eToxO3RyYW5zZm9ybTpub25lO3RyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1pY29ue3dpZHRoOjFlbTtoZWlnaHQ6MWVtO2ZvbnQtc2l6ZTppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5tYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlcntmbGV4OjEgMCAxZW19Lm1hdC1lcnJvcntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1jb250cm9sLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5ke29yZGVyOjF9Lm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9CmAsYC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7Ym9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDtwYWRkaW5nOi43NWVtIC43NWVtIDAgLjc1ZW19LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4e291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtZmxleHtvdXRsaW5lOmRhc2hlZCAzcHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lOjpiZWZvcmV7Y29udGVudDoiIjtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoxcHg7d2lkdGg6MTAwJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7Ym90dG9tOjA7aGVpZ2h0OjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwuX21hdC1hbmltYXRpb24tbm9vcGFibGU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RyYW5zaXRpb246bm9uZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntwYWRkaW5nOjAgMWVtfQpgLGAubWF0LWlucHV0LWVsZW1lbnR7Zm9udDppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6Y3VycmVudENvbG9yO2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207dGV4dC1hbGlnbjppbmhlcml0O2JveC1zaXppbmc6Y29udGVudC1ib3h9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtY2xlYXIsLm1hdC1pbnB1dC1lbGVtZW50OjotbXMtcmV2ZWFse2Rpc3BsYXk6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jb250YWN0cy1hdXRvLWZpbGwtYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jYXBzLWxvY2staW5kaWNhdG9yLC5tYXQtaW5wdXQtZWxlbWVudDpub3QoW3R5cGU9cGFzc3dvcmRdKTo6LXdlYmtpdC1jcmVkZW50aWFscy1hdXRvLWZpbGwtYnV0dG9ue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGVdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZS1sb2NhbF0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9bW9udGhdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXRpbWVde2xpbmUtaGVpZ2h0OjF9Lm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZV06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1tb250aF06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPXdlZWtdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT10aW1lXTo6YWZ0ZXJ7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IsLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWNsZWFyLWJ1dHRvbntmb250LXNpemU6Ljc1ZW19Lm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjpwbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7b3BhY2l0eTowfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjB9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntvcGFjaXR5OjB9dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnR7cmVzaXplOnZlcnRpY2FsO292ZXJmbG93OmF1dG99dGV4dGFyZWEubWF0LWlucHV0LWVsZW1lbnQuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50e3BhZGRpbmc6MnB4IDA7bWFyZ2luOi0ycHggMH1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnR7LW1vei1hcHBlYXJhbmNlOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7cG9zaXRpb246cmVsYXRpdmU7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1mbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nLXRvcDoxZW07dG9wOi0xZW07bWFyZ2luLWJvdHRvbTotMWVtfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLWV4cGFuZHtkaXNwbGF5Om5vbmV9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDpub3QoOmRpc2FibGVkKXtjdXJzb3I6cG9pbnRlcn1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6bm9uZX0ubWF0LWZvY3VzZWQgLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSBzZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy12YWx1ZXtjb2xvcjppbmhlcml0fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29udGVudDoiIjt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MDttYXJnaW4tdG9wOi0yLjVweDtwb2ludGVyLWV2ZW50czpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye3JpZ2h0OmF1dG87bGVmdDowfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjE1cHh9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjE1cHh9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDEwcHgpfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye21hcmdpbi10b3A6LTVweH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcnttYXJnaW4tdG9wOi0xMHB4fQpgLGAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSgxMDBweCk7LW1zLXRyYW5zZm9ybTpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257d2lkdGg6MWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntmb250OmluaGVyaXQ7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257Zm9udC1zaXplOmluaGVyaXR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtcmlwcGxle3RvcDowO2hlaWdodDoycHg7b3ZlcmZsb3c6aGlkZGVufS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3JkZXItdG9wLXN0eWxlOmRvdHRlZDtib3JkZXItdG9wLXdpZHRoOjJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtaW52YWxpZDpub3QoLm1hdC1mb2N1c2VkKSAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDoxcHh9CmAsYC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7bWFyZ2luOi4yNWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtZmxleHtwYWRkaW5nOjAgLjc1ZW0gMCAuNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW07cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeHt0b3A6LjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi4yNWVtO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjttaW4td2lkdGg6NXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnR7Ym9yZGVyLXJhZGl1czo1cHggMCAwIDVweDtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydHtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlci1yYWRpdXM6MCA1cHggNXB4IDA7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtmbGV4LWdyb3c6MX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyLWxlZnQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmU7Ym9yZGVyLXJhZGl1czo1cHggMCAwIDVweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItcmFkaXVzOi4wMDAwMDFweDtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtib3JkZXItbGVmdC1zdHlsZTpub25lO2JvcmRlci1yaWdodC1zdHlsZTpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAxMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre2JvcmRlcjozcHggZGFzaGVkfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXIgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA2MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre29wYWNpdHk6MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntwYWRkaW5nOjAgMWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLW91dGxpbmUsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe3RyYW5zaXRpb246bm9uZX0KYCxgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZy10b3A6Ljc1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvcmRlci10b3Atc3R5bGU6ZG90dGVkO2JvcmRlci10b3Atd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbTF19XX0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltHVV19XX0se3R5cGU6VnR9LHt0eXBlOkN0fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7ZmxvYXRMYWJlbDpbe3R5cGU6ZH1dLGFwcGVhcmFuY2U6W3t0eXBlOmR9XSxoaWRlUmVxdWlyZWRNYXJrZXI6W3t0eXBlOmR9XSxoaW50TGFiZWw6W3t0eXBlOmR9XSx1bmRlcmxpbmVSZWY6W3t0eXBlOkl0LGFyZ3M6WyJ1bmRlcmxpbmUiXX1dLF9jb25uZWN0aW9uQ29udGFpbmVyUmVmOlt7dHlwZTpJdCxhcmdzOlsiY29ubmVjdGlvbkNvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX2lucHV0Q29udGFpbmVyUmVmOlt7dHlwZTpJdCxhcmdzOlsiaW5wdXRDb250YWluZXIiXX1dLF9sYWJlbDpbe3R5cGU6SXQsYXJnczpbImxhYmVsIl19XSxfY29udHJvbE5vblN0YXRpYzpbe3R5cGU6S28sYXJnczpbanJdfV0sX2NvbnRyb2xTdGF0aWM6W3t0eXBlOktvLGFyZ3M6W2pyLHtzdGF0aWM6ITB9XX1dLF9sYWJlbENoaWxkTm9uU3RhdGljOlt7dHlwZTpLbyxhcmdzOltwc119XSxfbGFiZWxDaGlsZFN0YXRpYzpbe3R5cGU6S28sYXJnczpbcHMse3N0YXRpYzohMH1dfV0sX3BsYWNlaG9sZGVyQ2hpbGQ6W3t0eXBlOktvLGFyZ3M6W1RwXX1dLF9lcnJvckNoaWxkcmVuOlt7dHlwZTpsbyxhcmdzOltwayx7ZGVzY2VuZGFudHM6ITB9XX1dLF9oaW50Q2hpbGRyZW46W3t0eXBlOmxvLGFyZ3M6W2RrLHtkZXNjZW5kYW50czohMH1dfV0sX3ByZWZpeENoaWxkcmVuOlt7dHlwZTpsbyxhcmdzOltnayx7ZGVzY2VuZGFudHM6ITB9XX1dLF9zdWZmaXhDaGlsZHJlbjpbe3R5cGU6bG8sYXJnczpbdWsse2Rlc2NlbmRhbnRzOiEwfV19XX0pfSkoKTt2YXIgZ3I9Y2xhc3N7fTtnci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxncil9O2dyLlx1MDI3NW1vZD1xKHt0eXBlOmdyfSk7Z3IuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLER0LHNhXSxEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZ3IsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbYWMsb2ksTnAscHMsVHAsZXUsbnVdLGltcG9ydHM6W1ksRHQsc2FdLGV4cG9ydHM6W0R0LGFjLG9pLE5wLHBzLFRwLGV1LG51XX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChncix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2FjLG9pLE5wLHBzLFRwLGV1LG51XX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltZLER0LHNhXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltEdCxhYyxvaSxOcCxwcyxUcCxldSxudV19fSl9KSgpO3ZhciBmTz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMub25DaGFuZ2U9bz0+e30sdGhpcy5vblRvdWNoZWQ9KCk9Pnt9fXNldFByb3BlcnR5KHQsZSl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQsZSl9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5vblRvdWNoZWQ9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMub25DaGFuZ2U9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuc2V0UHJvcGVydHkoImRpc2FibGVkIix0KX19O2ZPLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGZPKSh2KG9hKSx2KEwpKX07Zk8uXHUwMjc1ZGlyPXZ0KHt0eXBlOmZPfSk7Zk8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpvYX0se3R5cGU6TH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhmTyxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpvYX0se3R5cGU6TH1dfSxudWxsKX0pKCk7dmFyIHNmPWNsYXNzIGV4dGVuZHMgZk97fTtzZi5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKHNmKSkpKGV8fHNmKX19KCk7c2YuXHUwMjc1ZGlyPXZ0KHt0eXBlOnNmLGZlYXR1cmVzOlthZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoc2YsW3t0eXBlOnd0fV0sbnVsbCxudWxsKX0pKCk7dmFyIGphPW5ldyB5dCgiTmdWYWx1ZUFjY2Vzc29yIik7dmFyIF9ydD17cHJvdmlkZTpqYSx1c2VFeGlzdGluZzp0bygoKT0+WV8pLG11bHRpOiEwfSxZXz1jbGFzcyBleHRlbmRzIHNme3dyaXRlVmFsdWUodCl7dGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsdCl9fTtZXy5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKFlfKSkpKGV8fFlfKX19KCk7WV8uXHUwMjc1ZGlyPXZ0KHt0eXBlOllfLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgiY2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkNoYW5nZShpLnRhcmdldC5jaGVja2VkKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBlLm9uVG91Y2hlZCgpfSl9LGZlYXR1cmVzOltUZShbX3J0XSksYWVdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFlfLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W3R5cGU9Y2hlY2tib3hdW2Zvcm1Db250cm9sTmFtZV0saW5wdXRbdHlwZT1jaGVja2JveF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W19ydF19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBDcnQ9e3Byb3ZpZGU6amEsdXNlRXhpc3Rpbmc6dG8oKCk9PnJjKSxtdWx0aTohMH07ZnVuY3Rpb24gXzV0KCl7bGV0IG49d2coKT93ZygpLmdldFVzZXJBZ2VudCgpOiIiO3JldHVybi9hbmRyb2lkIChcZCspLy50ZXN0KG4udG9Mb3dlckNhc2UoKSl9dmFyIHFVPW5ldyB5dCgiQ29tcG9zaXRpb25FdmVudE1vZGUiKSxyYz1jbGFzcyBleHRlbmRzIGZPe2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LGUpLHRoaXMuX2NvbXBvc2l0aW9uTW9kZT1vLHRoaXMuX2NvbXBvc2luZz0hMSx0aGlzLl9jb21wb3NpdGlvbk1vZGU9PW51bGwmJih0aGlzLl9jb21wb3NpdGlvbk1vZGU9IV81dCgpKX13cml0ZVZhbHVlKHQpe2xldCBlPXQ9PW51bGw/IiI6dDt0aGlzLnNldFByb3BlcnR5KCJ2YWx1ZSIsZSl9X2hhbmRsZUlucHV0KHQpeyghdGhpcy5fY29tcG9zaXRpb25Nb2RlfHx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJiF0aGlzLl9jb21wb3NpbmcpJiZ0aGlzLm9uQ2hhbmdlKHQpfV9jb21wb3NpdGlvblN0YXJ0KCl7dGhpcy5fY29tcG9zaW5nPSEwfV9jb21wb3NpdGlvbkVuZCh0KXt0aGlzLl9jb21wb3Npbmc9ITEsdGhpcy5fY29tcG9zaXRpb25Nb2RlJiZ0aGlzLm9uQ2hhbmdlKHQpfX07cmMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cmMpKHYob2EpLHYoTCksdihxVSw4KSl9O3JjLlx1MDI3NWRpcj12dCh7dHlwZTpyYyxzZWxlY3RvcnM6W1siaW5wdXQiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwiZm9ybUNvbnRyb2wiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJuZ01vZGVsIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbInRleHRhcmVhIiwibmdNb2RlbCIsIiJdLFsiIiwibmdEZWZhdWx0Q29udHJvbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImlucHV0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlSW5wdXQoaS50YXJnZXQudmFsdWUpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub3VjaGVkKCl9KSgiY29tcG9zaXRpb25zdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fY29tcG9zaXRpb25TdGFydCgpfSkoImNvbXBvc2l0aW9uZW5kIixmdW5jdGlvbihpKXtyZXR1cm4gZS5fY29tcG9zaXRpb25FbmQoaS50YXJnZXQudmFsdWUpfSl9LGZlYXR1cmVzOltUZShbQ3J0XSksYWVdfSk7cmMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpvYX0se3R5cGU6TH0se3R5cGU6Qm9vbGVhbixkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3FVXX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHJjLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW2Zvcm1Db250cm9sTmFtZV0sdGV4dGFyZWFbZm9ybUNvbnRyb2xOYW1lXSxpbnB1dDpub3QoW3R5cGU9Y2hlY2tib3hdKVtmb3JtQ29udHJvbF0sdGV4dGFyZWFbZm9ybUNvbnRyb2xdLGlucHV0Om5vdChbdHlwZT1jaGVja2JveF0pW25nTW9kZWxdLHRleHRhcmVhW25nTW9kZWxdLFtuZ0RlZmF1bHRDb250cm9sXSIsaG9zdDp7IihpbnB1dCkiOiIkYW55KHRoaXMpLl9oYW5kbGVJbnB1dCgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIiwiKGNvbXBvc2l0aW9uc3RhcnQpIjoiJGFueSh0aGlzKS5fY29tcG9zaXRpb25TdGFydCgpIiwiKGNvbXBvc2l0aW9uZW5kKSI6IiRhbnkodGhpcykuX2NvbXBvc2l0aW9uRW5kKCRldmVudC50YXJnZXQudmFsdWUpIn0scHJvdmlkZXJzOltDcnRdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpvYX0se3R5cGU6TH0se3R5cGU6Qm9vbGVhbixkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3FVXX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBheChuKXtyZXR1cm4gbj09bnVsbHx8bi5sZW5ndGg9PT0wfWZ1bmN0aW9uIE1ydChuKXtyZXR1cm4gbiE9bnVsbCYmdHlwZW9mIG4ubGVuZ3RoPT0ibnVtYmVyIn12YXIgbWk9bmV3IHl0KCJOZ1ZhbGlkYXRvcnMiKSx1cj1uZXcgeXQoIk5nQXN5bmNWYWxpZGF0b3JzIiksQzV0PS9eKD89LnsxLDI1NH0kKSg/PS57MSw2NH1AKVthLXpBLVowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcLlthLXpBLVowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkBbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC8sSXA9Y2xhc3N7c3RhdGljIG1pbih0KXtyZXR1cm4gYnJ0KHQpfXN0YXRpYyBtYXgodCl7cmV0dXJuIE9ydCh0KX1zdGF0aWMgcmVxdWlyZWQodCl7cmV0dXJuIFBydCh0KX1zdGF0aWMgcmVxdWlyZWRUcnVlKHQpe3JldHVybiB5cnQodCl9c3RhdGljIGVtYWlsKHQpe3JldHVybiB4cnQodCl9c3RhdGljIG1pbkxlbmd0aCh0KXtyZXR1cm4gdnJ0KHQpfXN0YXRpYyBtYXhMZW5ndGgodCl7cmV0dXJuIHdydCh0KX1zdGF0aWMgcGF0dGVybih0KXtyZXR1cm4gU3J0KHQpfXN0YXRpYyBudWxsVmFsaWRhdG9yKHQpe3JldHVybiByeCh0KX1zdGF0aWMgY29tcG9zZSh0KXtyZXR1cm4gQXJ0KHQpfXN0YXRpYyBjb21wb3NlQXN5bmModCl7cmV0dXJuIERydCh0KX19O2Z1bmN0aW9uIGJydChuKXtyZXR1cm4gdD0+e2lmKGF4KHQudmFsdWUpfHxheChuKSlyZXR1cm4gbnVsbDtsZXQgZT1wYXJzZUZsb2F0KHQudmFsdWUpO3JldHVybiFpc05hTihlKSYmZTxuP3ttaW46e21pbjpuLGFjdHVhbDp0LnZhbHVlfX06bnVsbH19ZnVuY3Rpb24gT3J0KG4pe3JldHVybiB0PT57aWYoYXgodC52YWx1ZSl8fGF4KG4pKXJldHVybiBudWxsO2xldCBlPXBhcnNlRmxvYXQodC52YWx1ZSk7cmV0dXJuIWlzTmFOKGUpJiZlPm4/e21heDp7bWF4Om4sYWN0dWFsOnQudmFsdWV9fTpudWxsfX1mdW5jdGlvbiBQcnQobil7cmV0dXJuIGF4KG4udmFsdWUpP3tyZXF1aXJlZDohMH06bnVsbH1mdW5jdGlvbiB5cnQobil7cmV0dXJuIG4udmFsdWU9PT0hMD9udWxsOntyZXF1aXJlZDohMH19ZnVuY3Rpb24geHJ0KG4pe3JldHVybiBheChuLnZhbHVlKXx8QzV0LnRlc3Qobi52YWx1ZSk/bnVsbDp7ZW1haWw6ITB9fWZ1bmN0aW9uIHZydChuKXtyZXR1cm4gdD0+YXgodC52YWx1ZSl8fCFNcnQodC52YWx1ZSk/bnVsbDp0LnZhbHVlLmxlbmd0aDxuP3ttaW5sZW5ndGg6e3JlcXVpcmVkTGVuZ3RoOm4sYWN0dWFsTGVuZ3RoOnQudmFsdWUubGVuZ3RofX06bnVsbH1mdW5jdGlvbiB3cnQobil7cmV0dXJuIHQ9Pk1ydCh0LnZhbHVlKSYmdC52YWx1ZS5sZW5ndGg+bj97bWF4bGVuZ3RoOntyZXF1aXJlZExlbmd0aDpuLGFjdHVhbExlbmd0aDp0LnZhbHVlLmxlbmd0aH19Om51bGx9ZnVuY3Rpb24gU3J0KG4pe2lmKCFuKXJldHVybiByeDtsZXQgdCxlO3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/KGU9IiIsbi5jaGFyQXQoMCkhPT0iXiImJihlKz0iXiIpLGUrPW4sbi5jaGFyQXQobi5sZW5ndGgtMSkhPT0iJCImJihlKz0iJCIpLHQ9bmV3IFJlZ0V4cChlKSk6KGU9bi50b1N0cmluZygpLHQ9biksbz0+e2lmKGF4KG8udmFsdWUpKXJldHVybiBudWxsO2xldCBpPW8udmFsdWU7cmV0dXJuIHQudGVzdChpKT9udWxsOntwYXR0ZXJuOntyZXF1aXJlZFBhdHRlcm46ZSxhY3R1YWxWYWx1ZTppfX19fWZ1bmN0aW9uIHJ4KG4pe3JldHVybiBudWxsfWZ1bmN0aW9uIFJydChuKXtyZXR1cm4gbiE9bnVsbH1mdW5jdGlvbiBFcnQobil7bGV0IHQ9WHcobik/RGEobik6bjtpZighTFQodCkmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHZhbGlkYXRvciB0byByZXR1cm4gUHJvbWlzZSBvciBPYnNlcnZhYmxlLiIpO3JldHVybiB0fWZ1bmN0aW9uIGtydChuKXtsZXQgdD17fTtyZXR1cm4gbi5mb3JFYWNoKGU9Pnt0PWUhPW51bGw/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLGUpOnR9KSxPYmplY3Qua2V5cyh0KS5sZW5ndGg9PT0wP251bGw6dH1mdW5jdGlvbiBOcnQobix0KXtyZXR1cm4gdC5tYXAoZT0+ZShuKSl9ZnVuY3Rpb24gTTV0KG4pe3JldHVybiFuLnZhbGlkYXRlfWZ1bmN0aW9uIFRydChuKXtyZXR1cm4gbi5tYXAodD0+TTV0KHQpP3Q6ZT0+dC52YWxpZGF0ZShlKSl9ZnVuY3Rpb24gQXJ0KG4pe2lmKCFuKXJldHVybiBudWxsO2xldCB0PW4uZmlsdGVyKFJydCk7cmV0dXJuIHQubGVuZ3RoPT0wP251bGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGtydChOcnQoZSx0KSl9fWZ1bmN0aW9uIFpVKG4pe3JldHVybiBuIT1udWxsP0FydChUcnQobikpOm51bGx9ZnVuY3Rpb24gRHJ0KG4pe2lmKCFuKXJldHVybiBudWxsO2xldCB0PW4uZmlsdGVyKFJydCk7cmV0dXJuIHQubGVuZ3RoPT0wP251bGw6ZnVuY3Rpb24oZSl7bGV0IG89TnJ0KGUsdCkubWFwKEVydCk7cmV0dXJuIGdhKG8pLnBpcGUoRyhrcnQpKX19ZnVuY3Rpb24gWFUobil7cmV0dXJuIG4hPW51bGw/RHJ0KFRydChuKSk6bnVsbH1mdW5jdGlvbiBzcnQobix0KXtyZXR1cm4gbj09PW51bGw/W3RdOkFycmF5LmlzQXJyYXkobik/Wy4uLm4sdF06W24sdF19ZnVuY3Rpb24gSXJ0KG4pe3JldHVybiBuLl9yYXdWYWxpZGF0b3JzfWZ1bmN0aW9uIHpydChuKXtyZXR1cm4gbi5fcmF3QXN5bmNWYWxpZGF0b3JzfWZ1bmN0aW9uIFdVKG4pe3JldHVybiBuP0FycmF5LmlzQXJyYXkobik/bjpbbl06W119ZnVuY3Rpb24gd0kobix0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLmluY2x1ZGVzKHQpOm49PT10fWZ1bmN0aW9uIGxydChuLHQpe2xldCBlPVdVKHQpO3JldHVybiBXVShuKS5mb3JFYWNoKGk9Pnt3SShlLGkpfHxlLnB1c2goaSl9KSxlfWZ1bmN0aW9uIGNydChuLHQpe3JldHVybiBXVSh0KS5maWx0ZXIoZT0+IXdJKG4sZSkpfXZhciBzeD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9W10sdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPVtdLHRoaXMuX29uRGVzdHJveUNhbGxiYWNrcz1bXX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZTpudWxsfWdldCB2YWxpZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbGlkOm51bGx9Z2V0IGludmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5pbnZhbGlkOm51bGx9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5wZW5kaW5nOm51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlzYWJsZWQ6bnVsbH1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVuYWJsZWQ6bnVsbH1nZXQgZXJyb3JzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZXJyb3JzOm51bGx9Z2V0IHByaXN0aW5lKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucHJpc3RpbmU6bnVsbH1nZXQgZGlydHkoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5kaXJ0eTpudWxsfWdldCB0b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudG91Y2hlZDpudWxsfWdldCBzdGF0dXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXM6bnVsbH1nZXQgdW50b3VjaGVkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudW50b3VjaGVkOm51bGx9Z2V0IHN0YXR1c0NoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzOm51bGx9Z2V0IHZhbHVlQ2hhbmdlcygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlczpudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9X3NldFZhbGlkYXRvcnModCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10fHxbXSx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPVpVKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpfV9zZXRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXR8fFtdLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1YVSh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbnx8bnVsbH1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRBc3luY1ZhbGlkYXRvckZufHxudWxsfV9yZWdpc3Rlck9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3MucHVzaCh0KX1faW52b2tlT25EZXN0cm95Q2FsbGJhY2tzKCl7dGhpcy5fb25EZXN0cm95Q2FsbGJhY2tzLmZvckVhY2godD0+dCgpKSx0aGlzLl9vbkRlc3Ryb3lDYWxsYmFja3M9W119cmVzZXQodD12b2lkIDApe3RoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLnJlc2V0KHQpfWhhc0Vycm9yKHQsZSl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuaGFzRXJyb3IodCxlKTohMX1nZXRFcnJvcih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmdldEVycm9yKHQsZSk6bnVsbH19O3N4Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHN4KX07c3guXHUwMjc1ZGlyPXZ0KHt0eXBlOnN4fSk7dmFyIE9pPWNsYXNzIGV4dGVuZHMgc3h7Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gbnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfX07T2kuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihPaSkpKShlfHxPaSl9fSgpO09pLlx1MDI3NWRpcj12dCh7dHlwZTpPaSxmZWF0dXJlczpbYWVdfSk7dmFyIEVhPWNsYXNzIGV4dGVuZHMgc3h7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3BhcmVudD1udWxsLHRoaXMubmFtZT1udWxsLHRoaXMudmFsdWVBY2Nlc3Nvcj1udWxsfX07dmFyIFNJPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NkPXR9aXModCl7dmFyIGUsbyxpO3JldHVybiB0PT09InN1Ym1pdHRlZCI/ISEoISgoZT10aGlzLl9jZCk9PT1udWxsfHxlPT09dm9pZCAwKSYmZS5zdWJtaXR0ZWQpOiEhKCEoKGk9KG89dGhpcy5fY2QpPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5jb250cm9sKT09PW51bGx8fGk9PT12b2lkIDApJiZpW3RdKX19LGI1dD17IltjbGFzcy5uZy11bnRvdWNoZWRdIjonaXMoInVudG91Y2hlZCIpJywiW2NsYXNzLm5nLXRvdWNoZWRdIjonaXMoInRvdWNoZWQiKScsIltjbGFzcy5uZy1wcmlzdGluZV0iOidpcygicHJpc3RpbmUiKScsIltjbGFzcy5uZy1kaXJ0eV0iOidpcygiZGlydHkiKScsIltjbGFzcy5uZy12YWxpZF0iOidpcygidmFsaWQiKScsIltjbGFzcy5uZy1pbnZhbGlkXSI6J2lzKCJpbnZhbGlkIiknLCJbY2xhc3MubmctcGVuZGluZ10iOidpcygicGVuZGluZyIpJ30sTzV0PXsiW2NsYXNzLm5nLXVudG91Y2hlZF0iOidpcygidW50b3VjaGVkIiknLCJbY2xhc3MubmctdG91Y2hlZF0iOidpcygidG91Y2hlZCIpJywiW2NsYXNzLm5nLXByaXN0aW5lXSI6J2lzKCJwcmlzdGluZSIpJywiW2NsYXNzLm5nLWRpcnR5XSI6J2lzKCJkaXJ0eSIpJywiW2NsYXNzLm5nLXZhbGlkXSI6J2lzKCJ2YWxpZCIpJywiW2NsYXNzLm5nLWludmFsaWRdIjonaXMoImludmFsaWQiKScsIltjbGFzcy5uZy1wZW5kaW5nXSI6J2lzKCJwZW5kaW5nIiknLCJbY2xhc3Mubmctc3VibWl0dGVkXSI6J2lzKCJzdWJtaXR0ZWQiKSd9LGxmPWNsYXNzIGV4dGVuZHMgU0l7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fTtsZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxsZikodihFYSwyKSl9O2xmLlx1MDI3NWRpcj12dCh7dHlwZTpsZixzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJuZ01vZGVsIiwiIl0sWyIiLCJmb3JtQ29udHJvbCIsIiJdXSxob3N0VmFyczoxNCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJuZy11bnRvdWNoZWQiLGUuaXMoInVudG91Y2hlZCIpKSgibmctdG91Y2hlZCIsZS5pcygidG91Y2hlZCIpKSgibmctcHJpc3RpbmUiLGUuaXMoInByaXN0aW5lIikpKCJuZy1kaXJ0eSIsZS5pcygiZGlydHkiKSkoIm5nLXZhbGlkIixlLmlzKCJ2YWxpZCIpKSgibmctaW52YWxpZCIsZS5pcygiaW52YWxpZCIpKSgibmctcGVuZGluZyIsZS5pcygicGVuZGluZyIpKX0sZmVhdHVyZXM6W2FlXX0pO2xmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RWEsZGVjb3JhdG9yczpbe3R5cGU6SW59XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhsZixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUNvbnRyb2xOYW1lXSxbbmdNb2RlbF0sW2Zvcm1Db250cm9sXSIsaG9zdDpiNXR9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkVhLGRlY29yYXRvcnM6W3t0eXBlOklufV19XX0sbnVsbCl9KSgpO3ZhciBMTT1jbGFzcyBleHRlbmRzIFNJe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX07TE0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TE0pKHYoT2ksMTApKX07TE0uXHUwMjc1ZGlyPXZ0KHt0eXBlOkxNLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl0sWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl0sWyIiLCJuZ01vZGVsR3JvdXAiLCIiXSxbIiIsImZvcm1Hcm91cCIsIiJdLFsiZm9ybSIsMywibmdOb0Zvcm0iLCIiXSxbIiIsIm5nRm9ybSIsIiJdXSxob3N0VmFyczoxNixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJuZy11bnRvdWNoZWQiLGUuaXMoInVudG91Y2hlZCIpKSgibmctdG91Y2hlZCIsZS5pcygidG91Y2hlZCIpKSgibmctcHJpc3RpbmUiLGUuaXMoInByaXN0aW5lIikpKCJuZy1kaXJ0eSIsZS5pcygiZGlydHkiKSkoIm5nLXZhbGlkIixlLmlzKCJ2YWxpZCIpKSgibmctaW52YWxpZCIsZS5pcygiaW52YWxpZCIpKSgibmctcGVuZGluZyIsZS5pcygicGVuZGluZyIpKSgibmctc3VibWl0dGVkIixlLmlzKCJzdWJtaXR0ZWQiKSl9LGZlYXR1cmVzOlthZV19KTtMTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTE0sW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdLFtmb3JtQXJyYXlOYW1lXSxbbmdNb2RlbEdyb3VwXSxbZm9ybUdyb3VwXSxmb3JtOm5vdChbbmdOb0Zvcm1dKSxbbmdGb3JtXSIsaG9zdDpPNXR9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufV19XX0sbnVsbCl9KSgpO3ZhciBRVT1gCiAgPGRpdiBbZm9ybUdyb3VwXT0ibXlHcm91cCI+CiAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPgogIDwvZGl2PgoKICBJbiB5b3VyIGNsYXNzOgoKICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHsKICAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKQogIH0pO2AsVEk9YAogIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPgogICAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9InBlcnNvbiI+CiAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT0iZmlyc3ROYW1lIj4KICAgICAgPC9kaXY+CiAgPC9kaXY+CgogIEluIHlvdXIgY2xhc3M6CgogIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoewogICAgICBwZXJzb246IG5ldyBGb3JtR3JvdXAoeyBmaXJzdE5hbWU6IG5ldyBGb3JtQ29udHJvbCgpIH0pCiAgfSk7YCxQNXQ9YAogIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPgogICAgPGRpdiBmb3JtQXJyYXlOYW1lPSJjaXRpZXMiPgogICAgICA8ZGl2ICpuZ0Zvcj0ibGV0IGNpdHkgb2YgY2l0eUFycmF5LmNvbnRyb2xzOyBpbmRleCBhcyBpIj4KICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09ImkiPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICBJbiB5b3VyIGNsYXNzOgoKICB0aGlzLmNpdHlBcnJheSA9IG5ldyBGb3JtQXJyYXkoW25ldyBGb3JtQ29udHJvbCgnU0YnKV0pOwogIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoewogICAgY2l0aWVzOiB0aGlzLmNpdHlBcnJheQogIH0pO2AsS1U9YAogIDxmb3JtPgogICAgICA8ZGl2IG5nTW9kZWxHcm91cD0icGVyc29uIj4KICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5uYW1lIiBuYW1lPSJmaXJzdE5hbWUiPgogICAgICA8L2Rpdj4KICA8L2Zvcm0+YCx5NXQ9YAogIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPgogICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPgogICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InNob3dNb3JlQ29udHJvbHMiIFtuZ01vZGVsT3B0aW9uc109IntzdGFuZGFsb25lOiB0cnVlfSI+CiAgPC9kaXY+CmA7ZnVuY3Rpb24geDV0KCl7cmV0dXJuIG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXAKICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLgoKICAgIEV4YW1wbGU6CgogICAgJHtRVX1gKX1mdW5jdGlvbiB2NXQoKXtyZXR1cm4gbmV3IEVycm9yKGBmb3JtQ29udHJvbE5hbWUgY2Fubm90IGJlIHVzZWQgd2l0aCBhbiBuZ01vZGVsR3JvdXAgcGFyZW50LiBJdCBpcyBvbmx5IGNvbXBhdGlibGUgd2l0aCBwYXJlbnRzCiAgICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9ybUdyb3VwTmFtZSwgZm9ybUFycmF5TmFtZSwgb3IgZm9ybUdyb3VwLgoKICAgICAgT3B0aW9uIDE6ICBVcGRhdGUgdGhlIHBhcmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3JtIHN0cmF0ZWd5KQoKICAgICAgJHtUSX0KCiAgICAgIE9wdGlvbiAyOiBVc2UgbmdNb2RlbCBpbnN0ZWFkIG9mIGZvcm1Db250cm9sTmFtZSAodGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5KQoKICAgICAgJHtLVX1gKX1mdW5jdGlvbiB3NXQoKXtyZXR1cm4gbmV3IEVycm9yKGBmb3JtR3JvdXAgZXhwZWN0cyBhIEZvcm1Hcm91cCBpbnN0YW5jZS4gUGxlYXNlIHBhc3Mgb25lIGluLgoKICAgICAgRXhhbXBsZToKCiAgICAgICR7UVV9YCl9ZnVuY3Rpb24gUzV0KCl7cmV0dXJuIG5ldyBFcnJvcihgZm9ybUdyb3VwTmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91J2xsIHdhbnQgdG8gYWRkIGEgZm9ybUdyb3VwCiAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuCgogICAgRXhhbXBsZToKCiAgICAke1RJfWApfWZ1bmN0aW9uIFI1dCgpe3JldHVybiBuZXcgRXJyb3IoYGZvcm1BcnJheU5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cAogICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuCgogICAgICBFeGFtcGxlOgoKICAgICAgJHtQNXR9YCl9dmFyIEhydD1gCiAgSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGRpc2FibGVkIGF0dHJpYnV0ZSB3aXRoIGEgcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmUuIElmIHlvdSBzZXQgZGlzYWJsZWQgdG8gdHJ1ZQogIHdoZW4geW91IHNldCB1cCB0aGlzIGNvbnRyb2wgaW4geW91ciBjb21wb25lbnQgY2xhc3MsIHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgd2lsbCBhY3R1YWxseSBiZSBzZXQgaW4gdGhlIERPTSBmb3IKICB5b3UuIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2VkIGFmdGVyIGNoZWNrZWQnIGVycm9ycy4KCiAgRXhhbXBsZToKICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7CiAgICBmaXJzdDogbmV3IEZvcm1Db250cm9sKHt2YWx1ZTogJ05hbmN5JywgZGlzYWJsZWQ6IHRydWV9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSwKICAgIGxhc3Q6IG5ldyBGb3JtQ29udHJvbCgnRHJldycsIFZhbGlkYXRvcnMucmVxdWlyZWQpCiAgfSk7CmA7ZnVuY3Rpb24gRTV0KG4pe3JldHVybmAKICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBuZ01vZGVsIG9uIHRoZSBzYW1lIGZvcm0gZmllbGQgYXMgJHtufS4KICBTdXBwb3J0IGZvciB1c2luZyB0aGUgbmdNb2RlbCBpbnB1dCBwcm9wZXJ0eSBhbmQgbmdNb2RlbENoYW5nZSBldmVudCB3aXRoCiAgcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gQW5ndWxhciB2NiBhbmQgd2lsbCBiZSByZW1vdmVkCiAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBBbmd1bGFyLgoKICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBzZWUgb3VyIEFQSSBkb2NzIGhlcmU6CiAgaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9mb3Jtcy8ke249PT0iZm9ybUNvbnRyb2wiPyJGb3JtQ29udHJvbERpcmVjdGl2ZSI6IkZvcm1Db250cm9sTmFtZSJ9I3VzZS13aXRoLW5nbW9kZWwKICBgfWZ1bmN0aW9uIEFJKG4sdCl7cmV0dXJuWy4uLnQucGF0aCxuXX1mdW5jdGlvbiBNayhuLHQpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmKG58fG94KHQsIkNhbm5vdCBmaW5kIGNvbnRyb2wgd2l0aCIpLHQudmFsdWVBY2Nlc3Nvcnx8b3godCwiTm8gdmFsdWUgYWNjZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3aXRoIikpLEpVKG4sdCksdC52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUobi52YWx1ZSksTjV0KG4sdCksQTV0KG4sdCksVDV0KG4sdCksazV0KG4sdCl9ZnVuY3Rpb24gUkkobix0LGU9ITApe2xldCBvPSgpPT57ZSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZJNXQodCl9O3QudmFsdWVBY2Nlc3NvciYmKHQudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKG8pLHQudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uVG91Y2hlZChvKSksa0kobix0KSxuJiYodC5faW52b2tlT25EZXN0cm95Q2FsbGJhY2tzKCksbi5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCk9Pnt9KSl9ZnVuY3Rpb24gRUkobix0KXtuLmZvckVhY2goZT0+e2UucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSYmZS5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpfSl9ZnVuY3Rpb24gazV0KG4sdCl7aWYodC52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUpe2xldCBlPW89Pnt0LnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZShvKX07bi5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoZSksdC5fcmVnaXN0ZXJPbkRlc3Ryb3koKCk9PntuLl91bnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZShlKX0pfX1mdW5jdGlvbiBKVShuLHQpe2xldCBlPUlydChuKTt0LnZhbGlkYXRvciE9PW51bGw/bi5zZXRWYWxpZGF0b3JzKHNydChlLHQudmFsaWRhdG9yKSk6dHlwZW9mIGU9PSJmdW5jdGlvbiImJm4uc2V0VmFsaWRhdG9ycyhbZV0pO2xldCBvPXpydChuKTt0LmFzeW5jVmFsaWRhdG9yIT09bnVsbD9uLnNldEFzeW5jVmFsaWRhdG9ycyhzcnQobyx0LmFzeW5jVmFsaWRhdG9yKSk6dHlwZW9mIG89PSJmdW5jdGlvbiImJm4uc2V0QXN5bmNWYWxpZGF0b3JzKFtvXSk7bGV0IGk9KCk9Pm4udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO0VJKHQuX3Jhd1ZhbGlkYXRvcnMsaSksRUkodC5fcmF3QXN5bmNWYWxpZGF0b3JzLGkpfWZ1bmN0aW9uIGtJKG4sdCl7bGV0IGU9ITE7aWYobiE9PW51bGwpe2lmKHQudmFsaWRhdG9yIT09bnVsbCl7bGV0IGk9SXJ0KG4pO2lmKEFycmF5LmlzQXJyYXkoaSkmJmkubGVuZ3RoPjApe2xldCBhPWkuZmlsdGVyKHI9PnIhPT10LnZhbGlkYXRvcik7YS5sZW5ndGghPT1pLmxlbmd0aCYmKGU9ITAsbi5zZXRWYWxpZGF0b3JzKGEpKX19aWYodC5hc3luY1ZhbGlkYXRvciE9PW51bGwpe2xldCBpPXpydChuKTtpZihBcnJheS5pc0FycmF5KGkpJiZpLmxlbmd0aD4wKXtsZXQgYT1pLmZpbHRlcihyPT5yIT09dC5hc3luY1ZhbGlkYXRvcik7YS5sZW5ndGghPT1pLmxlbmd0aCYmKGU9ITAsbi5zZXRBc3luY1ZhbGlkYXRvcnMoYSkpfX19bGV0IG89KCk9Pnt9O3JldHVybiBFSSh0Ll9yYXdWYWxpZGF0b3JzLG8pLEVJKHQuX3Jhd0FzeW5jVmFsaWRhdG9ycyxvKSxlfWZ1bmN0aW9uIE41dChuLHQpe3QudmFsdWVBY2Nlc3Nvci5yZWdpc3Rlck9uQ2hhbmdlKGU9PntuLl9wZW5kaW5nVmFsdWU9ZSxuLl9wZW5kaW5nQ2hhbmdlPSEwLG4uX3BlbmRpbmdEaXJ0eT0hMCxuLnVwZGF0ZU9uPT09ImNoYW5nZSImJkZydChuLHQpfSl9ZnVuY3Rpb24gVDV0KG4sdCl7dC52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKCgpPT57bi5fcGVuZGluZ1RvdWNoZWQ9ITAsbi51cGRhdGVPbj09PSJibHVyIiYmbi5fcGVuZGluZ0NoYW5nZSYmRnJ0KG4sdCksbi51cGRhdGVPbiE9PSJzdWJtaXQiJiZuLm1hcmtBc1RvdWNoZWQoKX0pfWZ1bmN0aW9uIEZydChuLHQpe24uX3BlbmRpbmdEaXJ0eSYmbi5tYXJrQXNEaXJ0eSgpLG4uc2V0VmFsdWUobi5fcGVuZGluZ1ZhbHVlLHtlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U6ITF9KSx0LnZpZXdUb01vZGVsVXBkYXRlKG4uX3BlbmRpbmdWYWx1ZSksbi5fcGVuZGluZ0NoYW5nZT0hMX1mdW5jdGlvbiBBNXQobix0KXtsZXQgZT0obyxpKT0+e3QudmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlKG8pLGkmJnQudmlld1RvTW9kZWxVcGRhdGUobyl9O24ucmVnaXN0ZXJPbkNoYW5nZShlKSx0Ll9yZWdpc3Rlck9uRGVzdHJveSgoKT0+e24uX3VucmVnaXN0ZXJPbkNoYW5nZShlKX0pfWZ1bmN0aW9uIExydChuLHQpe249PW51bGwmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmb3godCwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksSlUobix0KX1mdW5jdGlvbiBENXQobix0KXtyZXR1cm4ga0kobix0KX1mdW5jdGlvbiBJNXQobil7cmV0dXJuIG94KG4sIlRoZXJlIGlzIG5vIEZvcm1Db250cm9sIGluc3RhbmNlIGF0dGFjaGVkIHRvIGZvcm0gY29udHJvbCBlbGVtZW50IHdpdGgiKX1mdW5jdGlvbiBveChuLHQpe2xldCBlO3Rocm93IG4ucGF0aC5sZW5ndGg+MT9lPWBwYXRoOiAnJHtuLnBhdGguam9pbigiIC0+ICIpfSdgOm4ucGF0aFswXT9lPWBuYW1lOiAnJHtuLnBhdGh9J2A6ZT0idW5zcGVjaWZpZWQgbmFtZSBhdHRyaWJ1dGUiLG5ldyBFcnJvcihgJHt0fSAke2V9YCl9ZnVuY3Rpb24gJFUobix0KXtpZighbi5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTtsZXQgZT1uLm1vZGVsO3JldHVybiBlLmlzRmlyc3RDaGFuZ2UoKT8hMDohT2JqZWN0LmlzKHQsZS5jdXJyZW50VmFsdWUpfWZ1bmN0aW9uIHo1dChuKXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG4uY29uc3RydWN0b3IpPT09c2Z9ZnVuY3Rpb24gQnJ0KG4sdCl7bi5fc3luY1BlbmRpbmdDb250cm9scygpLHQuZm9yRWFjaChlPT57bGV0IG89ZS5jb250cm9sO28udXBkYXRlT249PT0ic3VibWl0IiYmby5fcGVuZGluZ0NoYW5nZSYmKGUudmlld1RvTW9kZWxVcGRhdGUoby5fcGVuZGluZ1ZhbHVlKSxvLl9wZW5kaW5nQ2hhbmdlPSExKX0pfWZ1bmN0aW9uIHRZKG4sdCl7aWYoIXQpcmV0dXJuIG51bGw7IUFycmF5LmlzQXJyYXkodCkmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmb3gobiwiVmFsdWUgYWNjZXNzb3Igd2FzIG5vdCBwcm92aWRlZCBhcyBhbiBhcnJheSBmb3IgZm9ybSBjb250cm9sIHdpdGgiKTtsZXQgZSxvLGk7cmV0dXJuIHQuZm9yRWFjaChhPT57YS5jb25zdHJ1Y3Rvcj09PXJjP2U9YTp6NXQoYSk/KG8mJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmb3gobiwiTW9yZSB0aGFuIG9uZSBidWlsdC1pbiB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzIGZvcm0gY29udHJvbCB3aXRoIiksbz1hKTooaSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZveChuLCJNb3JlIHRoYW4gb25lIGN1c3RvbSB2YWx1ZSBhY2Nlc3NvciBtYXRjaGVzIGZvcm0gY29udHJvbCB3aXRoIiksaT1hKX0pLGl8fG98fGV8fCgodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJm94KG4sIk5vIHZhbGlkIHZhbHVlIGFjY2Vzc29yIGZvciBmb3JtIGNvbnRyb2wgd2l0aCIpLG51bGwpfWZ1bmN0aW9uIE5JKG4sdCl7bGV0IGU9bi5pbmRleE9mKHQpO2U+LTEmJm4uc3BsaWNlKGUsMSl9ZnVuY3Rpb24gVnJ0KG4sdCxlLG8pe28hPT0ibmV2ZXIiJiYoKG89PT1udWxsfHxvPT09Im9uY2UiKSYmIXQuX25nTW9kZWxXYXJuaW5nU2VudE9uY2V8fG89PT0iYWx3YXlzIiYmIWUuX25nTW9kZWxXYXJuaW5nU2VudCkmJihjb25zb2xlLndhcm4oRTV0KG4pKSx0Ll9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSEwLGUuX25nTW9kZWxXYXJuaW5nU2VudD0hMCl9dmFyIGhrPSJWQUxJRCIsdkk9IklOVkFMSUQiLEYzPSJQRU5ESU5HIixfaz0iRElTQUJMRUQiO2Z1bmN0aW9uIEg1dChuLHQsZSl7aWYodD09bnVsbHx8KEFycmF5LmlzQXJyYXkodCl8fCh0PXQuc3BsaXQoZSkpLEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPT09MCkpcmV0dXJuIG51bGw7bGV0IG89bjtyZXR1cm4gdC5mb3JFYWNoKGk9PntvIGluc3RhbmNlb2YgS3Y/bz1vLmNvbnRyb2xzLmhhc093blByb3BlcnR5KGkpP28uY29udHJvbHNbaV06bnVsbDpvIGluc3RhbmNlb2YgT2s/bz1vLmF0KGkpfHxudWxsOm89bnVsbH0pLG99ZnVuY3Rpb24gZVkobil7cmV0dXJuKG9ZKG4pP24udmFsaWRhdG9yczpuKXx8bnVsbH1mdW5jdGlvbiBtcnQobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/WlUobik6bnx8bnVsbH1mdW5jdGlvbiBuWShuLHQpe3JldHVybihvWSh0KT90LmFzeW5jVmFsaWRhdG9yczpuKXx8bnVsbH1mdW5jdGlvbiBmcnQobil7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/WFUobik6bnx8bnVsbH1mdW5jdGlvbiBvWShuKXtyZXR1cm4gbiE9bnVsbCYmIUFycmF5LmlzQXJyYXkobikmJnR5cGVvZiBuPT0ib2JqZWN0In12YXIgYms9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEsdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPSgpPT57fSx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLnByaXN0aW5lPSEwLHRoaXMudG91Y2hlZD0hMSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlPVtdLHRoaXMuX3Jhd1ZhbGlkYXRvcnM9dCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9ZSx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPW1ydCh0aGlzLl9yYXdWYWxpZGF0b3JzKSx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49ZnJ0KHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9Z2V0IHZhbGlkYXRvcigpe3JldHVybiB0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZufXNldCB2YWxpZGF0b3IodCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPXR9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbn1zZXQgYXN5bmNWYWxpZGF0b3IodCl7dGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPXRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj10fWdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fWdldCB2YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PWhrfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT09dkl9Z2V0IHBlbmRpbmcoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PUYzfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PV9rfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuc3RhdHVzIT09X2t9Z2V0IGRpcnR5KCl7cmV0dXJuIXRoaXMucHJpc3RpbmV9Z2V0IHVudG91Y2hlZCgpe3JldHVybiF0aGlzLnRvdWNoZWR9Z2V0IHVwZGF0ZU9uKCl7cmV0dXJuIHRoaXMuX3VwZGF0ZU9uP3RoaXMuX3VwZGF0ZU9uOnRoaXMucGFyZW50P3RoaXMucGFyZW50LnVwZGF0ZU9uOiJjaGFuZ2UifXNldFZhbGlkYXRvcnModCl7dGhpcy5fcmF3VmFsaWRhdG9ycz10LHRoaXMuX2NvbXBvc2VkVmFsaWRhdG9yRm49bXJ0KHQpfXNldEFzeW5jVmFsaWRhdG9ycyh0KXt0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9dCx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49ZnJ0KHQpfWFkZFZhbGlkYXRvcnModCl7dGhpcy5zZXRWYWxpZGF0b3JzKGxydCh0LHRoaXMuX3Jhd1ZhbGlkYXRvcnMpKX1hZGRBc3luY1ZhbGlkYXRvcnModCl7dGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMobHJ0KHQsdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKSl9cmVtb3ZlVmFsaWRhdG9ycyh0KXt0aGlzLnNldFZhbGlkYXRvcnMoY3J0KHQsdGhpcy5fcmF3VmFsaWRhdG9ycykpfXJlbW92ZUFzeW5jVmFsaWRhdG9ycyh0KXt0aGlzLnNldEFzeW5jVmFsaWRhdG9ycyhjcnQodCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpKX1oYXNWYWxpZGF0b3IodCl7cmV0dXJuIHdJKHRoaXMuX3Jhd1ZhbGlkYXRvcnMsdCl9aGFzQXN5bmNWYWxpZGF0b3IodCl7cmV0dXJuIHdJKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyx0KX1jbGVhclZhbGlkYXRvcnMoKXt0aGlzLnZhbGlkYXRvcj1udWxsfWNsZWFyQXN5bmNWYWxpZGF0b3JzKCl7dGhpcy5hc3luY1ZhbGlkYXRvcj1udWxsfW1hcmtBc1RvdWNoZWQodD17fSl7dGhpcy50b3VjaGVkPSEwLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNUb3VjaGVkKHQpfW1hcmtBbGxBc1RvdWNoZWQoKXt0aGlzLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiEwfSksdGhpcy5fZm9yRWFjaENoaWxkKHQ9PnQubWFya0FsbEFzVG91Y2hlZCgpKX1tYXJrQXNVbnRvdWNoZWQodD17fSl7dGhpcy50b3VjaGVkPSExLHRoaXMuX3BlbmRpbmdUb3VjaGVkPSExLHRoaXMuX2ZvckVhY2hDaGlsZChlPT57ZS5tYXJrQXNVbnRvdWNoZWQoe29ubHlTZWxmOiEwfSl9KSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQodCl9bWFya0FzRGlydHkodD17fSl7dGhpcy5wcmlzdGluZT0hMSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzRGlydHkodCl9bWFya0FzUHJpc3RpbmUodD17fSl7dGhpcy5wcmlzdGluZT0hMCx0aGlzLl9wZW5kaW5nRGlydHk9ITEsdGhpcy5fZm9yRWFjaENoaWxkKGU9PntlLm1hcmtBc1ByaXN0aW5lKHtvbmx5U2VsZjohMH0pfSksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh0KX1tYXJrQXNQZW5kaW5nKHQ9e30pe3RoaXMuc3RhdHVzPUYzLHQuZW1pdEV2ZW50IT09ITEmJnRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzUGVuZGluZyh0KX1kaXNhYmxlKHQ9e30pe2xldCBlPXRoaXMuX3BhcmVudE1hcmtlZERpcnR5KHQub25seVNlbGYpO3RoaXMuc3RhdHVzPV9rLHRoaXMuZXJyb3JzPW51bGwsdGhpcy5fZm9yRWFjaENoaWxkKG89PntvLmRpc2FibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pLHRoaXMuX3VwZGF0ZVZhbHVlKCksdC5lbWl0RXZlbnQhPT0hMSYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl91cGRhdGVBbmNlc3RvcnMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtza2lwUHJpc3RpbmVDaGVjazplfSkpLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaChvPT5vKCEwKSl9ZW5hYmxlKHQ9e30pe2xldCBlPXRoaXMuX3BhcmVudE1hcmtlZERpcnR5KHQub25seVNlbGYpO3RoaXMuc3RhdHVzPWhrLHRoaXMuX2ZvckVhY2hDaGlsZChvPT57by5lbmFibGUoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtvbmx5U2VsZjohMH0pKX0pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSksdGhpcy5fdXBkYXRlQW5jZXN0b3JzKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2tpcFByaXN0aW5lQ2hlY2s6ZX0pKSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLmZvckVhY2gobz0+byghMSkpfV91cGRhdGVBbmNlc3RvcnModCl7dGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmKHRoaXMuX3BhcmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQpLHQuc2tpcFByaXN0aW5lQ2hlY2t8fHRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUoKSx0aGlzLl9wYXJlbnQuX3VwZGF0ZVRvdWNoZWQoKSl9c2V0UGFyZW50KHQpe3RoaXMuX3BhcmVudD10fXVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkodD17fSl7dGhpcy5fc2V0SW5pdGlhbFN0YXR1cygpLHRoaXMuX3VwZGF0ZVZhbHVlKCksdGhpcy5lbmFibGVkJiYodGhpcy5fY2FuY2VsRXhpc3RpbmdTdWJzY3JpcHRpb24oKSx0aGlzLmVycm9ycz10aGlzLl9ydW5WYWxpZGF0b3IoKSx0aGlzLnN0YXR1cz10aGlzLl9jYWxjdWxhdGVTdGF0dXMoKSwodGhpcy5zdGF0dXM9PT1oa3x8dGhpcy5zdGF0dXM9PT1GMykmJnRoaXMuX3J1bkFzeW5jVmFsaWRhdG9yKHQuZW1pdEV2ZW50KSksdC5lbWl0RXZlbnQhPT0hMSYmKHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy52YWx1ZSksdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpKSx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0KX1fdXBkYXRlVHJlZVZhbGlkaXR5KHQ9e2VtaXRFdmVudDohMH0pe3RoaXMuX2ZvckVhY2hDaGlsZChlPT5lLl91cGRhdGVUcmVlVmFsaWRpdHkodCkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OnQuZW1pdEV2ZW50fSl9X3NldEluaXRpYWxTdGF0dXMoKXt0aGlzLnN0YXR1cz10aGlzLl9hbGxDb250cm9sc0Rpc2FibGVkKCk/X2s6aGt9X3J1blZhbGlkYXRvcigpe3JldHVybiB0aGlzLnZhbGlkYXRvcj90aGlzLnZhbGlkYXRvcih0aGlzKTpudWxsfV9ydW5Bc3luY1ZhbGlkYXRvcih0KXtpZih0aGlzLmFzeW5jVmFsaWRhdG9yKXt0aGlzLnN0YXR1cz1GMyx0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITA7bGV0IGU9RXJ0KHRoaXMuYXN5bmNWYWxpZGF0b3IodGhpcykpO3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbj1lLnN1YnNjcmliZShvPT57dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExLHRoaXMuc2V0RXJyb3JzKG8se2VtaXRFdmVudDp0fSl9KX19X2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCl7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExKX1zZXRFcnJvcnModCxlPXt9KXt0aGlzLmVycm9ycz10LHRoaXMuX3VwZGF0ZUNvbnRyb2xzRXJyb3JzKGUuZW1pdEV2ZW50IT09ITEpfWdldCh0KXtyZXR1cm4gSDV0KHRoaXMsdCwiLiIpfWdldEVycm9yKHQsZSl7bGV0IG89ZT90aGlzLmdldChlKTp0aGlzO3JldHVybiBvJiZvLmVycm9ycz9vLmVycm9yc1t0XTpudWxsfWhhc0Vycm9yKHQsZSl7cmV0dXJuISF0aGlzLmdldEVycm9yKHQsZSl9Z2V0IHJvb3QoKXtsZXQgdD10aGlzO2Zvcig7dC5fcGFyZW50Oyl0PXQuX3BhcmVudDtyZXR1cm4gdH1fdXBkYXRlQ29udHJvbHNFcnJvcnModCl7dGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksdCYmdGhpcy5zdGF0dXNDaGFuZ2VzLmVtaXQodGhpcy5zdGF0dXMpLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll91cGRhdGVDb250cm9sc0Vycm9ycyh0KX1faW5pdE9ic2VydmFibGVzKCl7dGhpcy52YWx1ZUNoYW5nZXM9bmV3ICQsdGhpcy5zdGF0dXNDaGFuZ2VzPW5ldyAkfV9jYWxjdWxhdGVTdGF0dXMoKXtyZXR1cm4gdGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP19rOnRoaXMuZXJyb3JzP3ZJOnRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcnx8dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKEYzKT9GMzp0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXModkkpP3ZJOmhrfV9hbnlDb250cm9sc0hhdmVTdGF0dXModCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKGU9PmUuc3RhdHVzPT09dCl9X2FueUNvbnRyb2xzRGlydHkoKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHModD0+dC5kaXJ0eSl9X2FueUNvbnRyb2xzVG91Y2hlZCgpe3JldHVybiB0aGlzLl9hbnlDb250cm9scyh0PT50LnRvdWNoZWQpfV91cGRhdGVQcmlzdGluZSh0PXt9KXt0aGlzLnByaXN0aW5lPSF0aGlzLl9hbnlDb250cm9sc0RpcnR5KCksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh0KX1fdXBkYXRlVG91Y2hlZCh0PXt9KXt0aGlzLnRvdWNoZWQ9dGhpcy5fYW55Q29udHJvbHNUb3VjaGVkKCksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKHQpfV9pc0JveGVkVmFsdWUodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwmJk9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTImJiJ2YWx1ZSJpbiB0JiYiZGlzYWJsZWQiaW4gdH1fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodCl7dGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPXR9X3NldFVwZGF0ZVN0cmF0ZWd5KHQpe29ZKHQpJiZ0LnVwZGF0ZU9uIT1udWxsJiYodGhpcy5fdXBkYXRlT249dC51cGRhdGVPbil9X3BhcmVudE1hcmtlZERpcnR5KHQpe2xldCBlPXRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50LmRpcnR5O3JldHVybiF0JiYhIWUmJiF0aGlzLl9wYXJlbnQuX2FueUNvbnRyb2xzRGlydHkoKX19LHpwPWNsYXNzIGV4dGVuZHMgYmt7Y29uc3RydWN0b3IodD1udWxsLGUsbyl7c3VwZXIoZVkoZSksblkobyxlKSksdGhpcy5fb25DaGFuZ2U9W10sdGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koZSksdGhpcy5faW5pdE9ic2VydmFibGVzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9c2V0VmFsdWUodCxlPXt9KXt0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LHRoaXMuX29uQ2hhbmdlLmxlbmd0aCYmZS5lbWl0TW9kZWxUb1ZpZXdDaGFuZ2UhPT0hMSYmdGhpcy5fb25DaGFuZ2UuZm9yRWFjaChvPT5vKHRoaXMudmFsdWUsZS5lbWl0Vmlld1RvTW9kZWxDaGFuZ2UhPT0hMSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX1wYXRjaFZhbHVlKHQsZT17fSl7dGhpcy5zZXRWYWx1ZSh0LGUpfXJlc2V0KHQ9bnVsbCxlPXt9KXt0aGlzLl9hcHBseUZvcm1TdGF0ZSh0KSx0aGlzLm1hcmtBc1ByaXN0aW5lKGUpLHRoaXMubWFya0FzVW50b3VjaGVkKGUpLHRoaXMuc2V0VmFsdWUodGhpcy52YWx1ZSxlKSx0aGlzLl9wZW5kaW5nQ2hhbmdlPSExfV91cGRhdGVWYWx1ZSgpe31fYW55Q29udHJvbHModCl7cmV0dXJuITF9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlLnB1c2godCl9X3VucmVnaXN0ZXJPbkNoYW5nZSh0KXtOSSh0aGlzLl9vbkNoYW5nZSx0KX1yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodCl7dGhpcy5fb25EaXNhYmxlZENoYW5nZS5wdXNoKHQpfV91bnJlZ2lzdGVyT25EaXNhYmxlZENoYW5nZSh0KXtOSSh0aGlzLl9vbkRpc2FibGVkQ2hhbmdlLHQpfV9mb3JFYWNoQ2hpbGQodCl7fV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7cmV0dXJuIHRoaXMudXBkYXRlT249PT0ic3VibWl0IiYmKHRoaXMuX3BlbmRpbmdEaXJ0eSYmdGhpcy5tYXJrQXNEaXJ0eSgpLHRoaXMuX3BlbmRpbmdUb3VjaGVkJiZ0aGlzLm1hcmtBc1RvdWNoZWQoKSx0aGlzLl9wZW5kaW5nQ2hhbmdlKT8odGhpcy5zZXRWYWx1ZSh0aGlzLl9wZW5kaW5nVmFsdWUse29ubHlTZWxmOiEwLGVtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLCEwKTohMX1fYXBwbHlGb3JtU3RhdGUodCl7dGhpcy5faXNCb3hlZFZhbHVlKHQpPyh0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LnZhbHVlLHQuZGlzYWJsZWQ/dGhpcy5kaXNhYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KTp0aGlzLmVuYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSkpOnRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXR9fSxLdj1jbGFzcyBleHRlbmRzIGJre2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcihlWShlKSxuWShvLGUpKSx0aGlzLmNvbnRyb2xzPXQsdGhpcy5faW5pdE9ic2VydmFibGVzKCksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3koZSksdGhpcy5fc2V0VXBDb250cm9scygpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiEhdGhpcy5hc3luY1ZhbGlkYXRvcn0pfXJlZ2lzdGVyQ29udHJvbCh0LGUpe3JldHVybiB0aGlzLmNvbnRyb2xzW3RdP3RoaXMuY29udHJvbHNbdF06KHRoaXMuY29udHJvbHNbdF09ZSxlLnNldFBhcmVudCh0aGlzKSxlLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpLGUpfWFkZENvbnRyb2wodCxlLG89e30pe3RoaXMucmVnaXN0ZXJDb250cm9sKHQsZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6by5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1yZW1vdmVDb250cm9sKHQsZT17fSl7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCk9Pnt9KSxkZWxldGUgdGhpcy5jb250cm9sc1t0XSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDplLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfXNldENvbnRyb2wodCxlLG89e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSksZGVsZXRlIHRoaXMuY29udHJvbHNbdF0sZSYmdGhpcy5yZWdpc3RlckNvbnRyb2wodCxlKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDpvLmVtaXRFdmVudH0pLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfWNvbnRhaW5zKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLmhhc093blByb3BlcnR5KHQpJiZ0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWR9c2V0VmFsdWUodCxlPXt9KXt0aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCksT2JqZWN0LmtleXModCkuZm9yRWFjaChvPT57dGhpcy5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKG8pLHRoaXMuY29udHJvbHNbb10uc2V0VmFsdWUodFtvXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSl9cGF0Y2hWYWx1ZSh0LGU9e30pe3QhPW51bGwmJihPYmplY3Qua2V5cyh0KS5mb3JFYWNoKG89Pnt0aGlzLmNvbnRyb2xzW29dJiZ0aGlzLmNvbnRyb2xzW29dLnBhdGNoVmFsdWUodFtvXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoZSkpfXJlc2V0KHQ9e30sZT17fSl7dGhpcy5fZm9yRWFjaENoaWxkKChvLGkpPT57by5yZXNldCh0W2ldLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KX0pLHRoaXMuX3VwZGF0ZVByaXN0aW5lKGUpLHRoaXMuX3VwZGF0ZVRvdWNoZWQoZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfWdldFJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LCh0LGUsbyk9Pih0W29dPWUgaW5zdGFuY2VvZiB6cD9lLnZhbHVlOmUuZ2V0UmF3VmFsdWUoKSx0KSl9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtsZXQgdD10aGlzLl9yZWR1Y2VDaGlsZHJlbighMSwoZSxvKT0+by5fc3luY1BlbmRpbmdDb250cm9scygpPyEwOmUpO3JldHVybiB0JiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksdH1fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKHQpe2lmKCFPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGAKICAgICAgICBUaGVyZSBhcmUgbm8gZm9ybSBjb250cm9scyByZWdpc3RlcmVkIHdpdGggdGhpcyBncm91cCB5ZXQuIElmIHlvdSdyZSB1c2luZyBuZ01vZGVsLAogICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLgogICAgICBgKTtpZighdGhpcy5jb250cm9sc1t0XSl0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGZvcm0gY29udHJvbCB3aXRoIG5hbWU6ICR7dH0uYCl9X2ZvckVhY2hDaGlsZCh0KXtPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5mb3JFYWNoKGU9PntsZXQgbz10aGlzLmNvbnRyb2xzW2VdO28mJnQobyxlKX0pfV9zZXRVcENvbnRyb2xzKCl7dGhpcy5fZm9yRWFjaENoaWxkKHQ9Pnt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSl9X3VwZGF0ZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLl9yZWR1Y2VWYWx1ZSgpfV9hbnlDb250cm9scyh0KXtmb3IobGV0IGUgb2YgT2JqZWN0LmtleXModGhpcy5jb250cm9scykpe2xldCBvPXRoaXMuY29udHJvbHNbZV07aWYodGhpcy5jb250YWlucyhlKSYmdChvKSlyZXR1cm4hMH1yZXR1cm4hMX1fcmVkdWNlVmFsdWUoKXtyZXR1cm4gdGhpcy5fcmVkdWNlQ2hpbGRyZW4oe30sKHQsZSxvKT0+KChlLmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpJiYodFtvXT1lLnZhbHVlKSx0KSl9X3JlZHVjZUNoaWxkcmVuKHQsZSl7bGV0IG89dDtyZXR1cm4gdGhpcy5fZm9yRWFjaENoaWxkKChpLGEpPT57bz1lKG8saSxhKX0pLG99X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IobGV0IHQgb2YgT2JqZWN0LmtleXModGhpcy5jb250cm9scykpaWYodGhpcy5jb250cm9sc1t0XS5lbmFibGVkKXJldHVybiExO3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKS5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH1fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpe3RoaXMuX2ZvckVhY2hDaGlsZCgoZSxvKT0+e2lmKHRbb109PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAnJHtvfScuYCl9KX19LE9rPWNsYXNzIGV4dGVuZHMgYmt7Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKGVZKGUpLG5ZKG8sZSkpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShlKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ISF0aGlzLmFzeW5jVmFsaWRhdG9yfSl9YXQodCl7cmV0dXJuIHRoaXMuY29udHJvbHNbdF19cHVzaCh0LGU9e30pe3RoaXMuY29udHJvbHMucHVzaCh0KSx0aGlzLl9yZWdpc3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ZS5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1pbnNlcnQodCxlLG89e30pe3RoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxlKSx0aGlzLl9yZWdpc3RlckNvbnRyb2woZSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6by5lbWl0RXZlbnR9KX1yZW1vdmVBdCh0LGU9e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDplLmVtaXRFdmVudH0pfXNldENvbnRyb2wodCxlLG89e30pe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSxlJiYodGhpcy5jb250cm9scy5zcGxpY2UodCwwLGUpLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChlKSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6by5lbWl0RXZlbnR9KSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuY29udHJvbHMubGVuZ3RofXNldFZhbHVlKHQsZT17fSl7dGhpcy5fY2hlY2tBbGxWYWx1ZXNQcmVzZW50KHQpLHQuZm9yRWFjaCgobyxpKT0+e3RoaXMuX3Rocm93SWZDb250cm9sTWlzc2luZyhpKSx0aGlzLmF0KGkpLnNldFZhbHVlKG8se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpfXBhdGNoVmFsdWUodCxlPXt9KXt0IT1udWxsJiYodC5mb3JFYWNoKChvLGkpPT57dGhpcy5hdChpKSYmdGhpcy5hdChpKS5wYXRjaFZhbHVlKG8se29ubHlTZWxmOiEwLGVtaXRFdmVudDplLmVtaXRFdmVudH0pfSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KGUpKX1yZXNldCh0PVtdLGU9e30pe3RoaXMuX2ZvckVhY2hDaGlsZCgobyxpKT0+e28ucmVzZXQodFtpXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50OmUuZW1pdEV2ZW50fSl9KSx0aGlzLl91cGRhdGVQcmlzdGluZShlKSx0aGlzLl91cGRhdGVUb3VjaGVkKGUpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShlKX1nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLmNvbnRyb2xzLm1hcCh0PT50IGluc3RhbmNlb2YgenA/dC52YWx1ZTp0LmdldFJhd1ZhbHVlKCkpfWNsZWFyKHQ9e30pe3RoaXMuY29udHJvbHMubGVuZ3RoPDF8fCh0aGlzLl9mb3JFYWNoQ2hpbGQoZT0+ZS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCk9Pnt9KSksdGhpcy5jb250cm9scy5zcGxpY2UoMCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KSl9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtsZXQgdD10aGlzLmNvbnRyb2xzLnJlZHVjZSgoZSxvKT0+by5fc3luY1BlbmRpbmdDb250cm9scygpPyEwOmUsITEpO3JldHVybiB0JiZ0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwfSksdH1fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKHQpe2lmKCF0aGlzLmNvbnRyb2xzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYAogICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGFycmF5IHlldC4gSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsCiAgICAgICAgeW91IG1heSB3YW50IHRvIGNoZWNrIG5leHQgdGljayAoZS5nLiB1c2Ugc2V0VGltZW91dCkuCiAgICAgIGApO2lmKCF0aGlzLmF0KHQpKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgZm9ybSBjb250cm9sIGF0IGluZGV4ICR7dH1gKX1fZm9yRWFjaENoaWxkKHQpe3RoaXMuY29udHJvbHMuZm9yRWFjaCgoZSxvKT0+e3QoZSxvKX0pfV91cGRhdGVWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5jb250cm9scy5maWx0ZXIodD0+dC5lbmFibGVkfHx0aGlzLmRpc2FibGVkKS5tYXAodD0+dC52YWx1ZSl9X2FueUNvbnRyb2xzKHQpe3JldHVybiB0aGlzLmNvbnRyb2xzLnNvbWUoZT0+ZS5lbmFibGVkJiZ0KGUpKX1fc2V0VXBDb250cm9scygpe3RoaXMuX2ZvckVhY2hDaGlsZCh0PT50aGlzLl9yZWdpc3RlckNvbnRyb2wodCkpfV9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCl7dGhpcy5fZm9yRWFjaENoaWxkKChlLG8pPT57aWYodFtvXT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYE11c3Qgc3VwcGx5IGEgdmFsdWUgZm9yIGZvcm0gY29udHJvbCBhdCBpbmRleDogJHtvfS5gKX0pfV9hbGxDb250cm9sc0Rpc2FibGVkKCl7Zm9yKGxldCB0IG9mIHRoaXMuY29udHJvbHMpaWYodC5lbmFibGVkKXJldHVybiExO3JldHVybiB0aGlzLmNvbnRyb2xzLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfV9yZWdpc3RlckNvbnRyb2wodCl7dC5zZXRQYXJlbnQodGhpcyksdC5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKX19O3ZhciBqcnQ9e3Byb3ZpZGU6T2ksdXNlRXhpc3Rpbmc6dG8oKCk9PktpKX0sRjV0PSgpPT5Qcm9taXNlLnJlc29sdmUobnVsbCksQ2s9RjV0KCksS2k9Y2xhc3MgZXh0ZW5kcyBPaXtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5zdWJtaXR0ZWQ9ITEsdGhpcy5fZGlyZWN0aXZlcz1bXSx0aGlzLm5nU3VibWl0PW5ldyAkLHRoaXMuZm9ybT1uZXcgS3Yoe30sWlUodCksWFUoZSkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KCl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpc31nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19Z2V0IHBhdGgoKXtyZXR1cm5bXX1nZXQgY29udHJvbHMoKXtyZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzfWFkZENvbnRyb2wodCl7Q2sudGhlbigoKT0+e2xldCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTt0LmNvbnRyb2w9ZS5yZWdpc3RlckNvbnRyb2wodC5uYW1lLHQuY29udHJvbCksTWsodC5jb250cm9sLHQpLHQuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLl9kaXJlY3RpdmVzLnB1c2godCl9KX1nZXRDb250cm9sKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9cmVtb3ZlQ29udHJvbCh0KXtDay50aGVuKCgpPT57bGV0IGU9dGhpcy5fZmluZENvbnRhaW5lcih0LnBhdGgpO2UmJmUucmVtb3ZlQ29udHJvbCh0Lm5hbWUpLE5JKHRoaXMuX2RpcmVjdGl2ZXMsdCl9KX1hZGRGb3JtR3JvdXAodCl7Q2sudGhlbigoKT0+e2xldCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKSxvPW5ldyBLdih7fSk7THJ0KG8sdCksZS5yZWdpc3RlckNvbnRyb2wodC5uYW1lLG8pLG8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9KX1yZW1vdmVGb3JtR3JvdXAodCl7Q2sudGhlbigoKT0+e2xldCBlPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTtlJiZlLnJlbW92ZUNvbnRyb2wodC5uYW1lKX0pfWdldEZvcm1Hcm91cCh0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfXVwZGF0ZU1vZGVsKHQsZSl7Q2sudGhlbigoKT0+e3RoaXMuZm9ybS5nZXQodC5wYXRoKS5zZXRWYWx1ZShlKX0pfXNldFZhbHVlKHQpe3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0KX1vblN1Ym1pdCh0KXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWQ9ITAsQnJ0KHRoaXMuZm9ybSx0aGlzLl9kaXJlY3RpdmVzKSx0aGlzLm5nU3VibWl0LmVtaXQodCksITF9b25SZXNldCgpe3RoaXMucmVzZXRGb3JtKCl9cmVzZXRGb3JtKHQ9dm9pZCAwKXt0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5zdWJtaXR0ZWQ9ITF9X3NldFVwZGF0ZVN0cmF0ZWd5KCl7dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMudXBkYXRlT24hPW51bGwmJih0aGlzLmZvcm0uX3VwZGF0ZU9uPXRoaXMub3B0aW9ucy51cGRhdGVPbil9X2ZpbmRDb250YWluZXIodCl7cmV0dXJuIHQucG9wKCksdC5sZW5ndGg/dGhpcy5mb3JtLmdldCh0KTp0aGlzLmZvcm19fTtLaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxLaSkodihtaSwxMCksdih1ciwxMCkpfTtLaS5cdTAyNzVkaXI9dnQoe3R5cGU6S2ksc2VsZWN0b3JzOltbImZvcm0iLDMsIm5nTm9Gb3JtIiwiIiwzLCJmb3JtR3JvdXAiLCIiXSxbIm5nLWZvcm0iXSxbIiIsIm5nRm9ybSIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoInN1Ym1pdCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25TdWJtaXQoaSl9KSgicmVzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZXNldCgpfSl9LGlucHV0czp7b3B0aW9uczpbIm5nRm9ybU9wdGlvbnMiLCJvcHRpb25zIl19LG91dHB1dHM6e25nU3VibWl0OiJuZ1N1Ym1pdCJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W1RlKFtqcnRdKSxhZV19KTtLaS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W21pXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlt1cl19XX1dO0tpLnByb3BEZWNvcmF0b3JzPXtvcHRpb25zOlt7dHlwZTpkLGFyZ3M6WyJuZ0Zvcm1PcHRpb25zIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEtpLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImZvcm06bm90KFtuZ05vRm9ybV0pOm5vdChbZm9ybUdyb3VwXSksbmctZm9ybSxbbmdGb3JtXSIscHJvdmlkZXJzOltqcnRdLGhvc3Q6eyIoc3VibWl0KSI6Im9uU3VibWl0KCRldmVudCkiLCIocmVzZXQpIjoib25SZXNldCgpIn0sb3V0cHV0czpbIm5nU3VibWl0Il0sZXhwb3J0QXM6Im5nRm9ybSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W21pXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlt1cl19XX1dfSx7b3B0aW9uczpbe3R5cGU6ZCxhcmdzOlsibmdGb3JtT3B0aW9ucyJdfV19KX0pKCk7dmFyIEdfPWNsYXNzIGV4dGVuZHMgT2l7bmdPbkluaXQoKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9ybUdyb3VwKHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlRm9ybUdyb3VwKHRoaXMpfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtR3JvdXAodGhpcyl9Z2V0IHBhdGgoKXtyZXR1cm4gQUkodGhpcy5uYW1lPT1udWxsP3RoaXMubmFtZTp0aGlzLm5hbWUudG9TdHJpbmcoKSx0aGlzLl9wYXJlbnQpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfV9jaGVja1BhcmVudFR5cGUoKXt9fTtHXy5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKEdfKSkpKGV8fEdfKX19KCk7R18uXHUwMjc1ZGlyPXZ0KHt0eXBlOkdfLGZlYXR1cmVzOlthZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoR18sW3t0eXBlOnd0fV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gTDV0KCl7cmV0dXJuIG5ldyBFcnJvcihgCiAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGZvcm0gY29udHJvbHMgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgVHJ5IHVzaW5nCiAgICBmb3JtR3JvdXAncyBwYXJ0bmVyIGRpcmVjdGl2ZSAiZm9ybUNvbnRyb2xOYW1lIiBpbnN0ZWFkLiAgRXhhbXBsZToKCiAgICAke1FVfQoKICAgIE9yLCBpZiB5b3UnZCBsaWtlIHRvIGF2b2lkIHJlZ2lzdGVyaW5nIHRoaXMgZm9ybSBjb250cm9sLCBpbmRpY2F0ZSB0aGF0IGl0J3Mgc3RhbmRhbG9uZSBpbiBuZ01vZGVsT3B0aW9uczoKCiAgICBFeGFtcGxlOgoKICAgICR7eTV0fWApfWZ1bmN0aW9uIEI1dCgpe3JldHVybiBuZXcgRXJyb3IoYAogICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwTmFtZSBvciBmb3JtQXJyYXlOYW1lIGRpcmVjdGl2ZS4KCiAgICBPcHRpb24gMTogVXNlIGZvcm1Db250cm9sTmFtZSBpbnN0ZWFkIG9mIG5nTW9kZWwgKHJlYWN0aXZlIHN0cmF0ZWd5KToKCiAgICAke1RJfQoKICAgIE9wdGlvbiAyOiAgVXBkYXRlIG5nTW9kZWwncyBwYXJlbnQgYmUgbmdNb2RlbEdyb3VwICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOgoKICAgICR7S1V9YCl9ZnVuY3Rpb24gVjV0KCl7cmV0dXJuIG5ldyBFcnJvcihgSWYgbmdNb2RlbCBpcyB1c2VkIHdpdGhpbiBhIGZvcm0gdGFnLCBlaXRoZXIgdGhlIG5hbWUgYXR0cmlidXRlIG11c3QgYmUgc2V0IG9yIHRoZSBmb3JtCiAgICBjb250cm9sIG11c3QgYmUgZGVmaW5lZCBhcyAnc3RhbmRhbG9uZScgaW4gbmdNb2RlbE9wdGlvbnMuCgogICAgRXhhbXBsZSAxOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIG5hbWU9ImZpcnN0Ij4KICAgIEV4YW1wbGUgMjogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24uZmlyc3ROYW1lIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPmApfWZ1bmN0aW9uIGo1dCgpe3JldHVybiBuZXcgRXJyb3IoYAogICAgbmdNb2RlbEdyb3VwIGNhbm5vdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4KCiAgICBPcHRpb24gMTogVXNlIGZvcm1Hcm91cE5hbWUgaW5zdGVhZCBvZiBuZ01vZGVsR3JvdXAgKHJlYWN0aXZlIHN0cmF0ZWd5KToKCiAgICAke1RJfQoKICAgIE9wdGlvbiAyOiAgVXNlIGEgcmVndWxhciBmb3JtIHRhZyBpbnN0ZWFkIG9mIHRoZSBmb3JtR3JvdXAgZGlyZWN0aXZlICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOgoKICAgICR7S1V9YCl9dmFyIFVydD17cHJvdmlkZTpPaSx1c2VFeGlzdGluZzp0bygoKT0+c2MpfSxzYz1jbGFzcyBleHRlbmRzIEdfe2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcigpLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG8pfV9jaGVja1BhcmVudFR5cGUoKXtpZighKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIHNjKSYmISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBLaSkmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBqNXQoKX19O3NjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHNjKSh2KE9pLDUpLHYobWksMTApLHYodXIsMTApKX07c2MuXHUwMjc1ZGlyPXZ0KHt0eXBlOnNjLHNlbGVjdG9yczpbWyIiLCJuZ01vZGVsR3JvdXAiLCIiXV0saW5wdXRzOntuYW1lOlsibmdNb2RlbEdyb3VwIiwibmFtZSJdfSxleHBvcnRBczpbIm5nTW9kZWxHcm91cCJdLGZlYXR1cmVzOltUZShbVXJ0XSksYWVdfSk7c2MuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPaSxkZWNvcmF0b3JzOlt7dHlwZTp6YX0se3R5cGU6WW99XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbbWldfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W3VyXX1dfV07c2MucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmQsYXJnczpbIm5nTW9kZWxHcm91cCJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhzYyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbmdNb2RlbEdyb3VwXSIscHJvdmlkZXJzOltVcnRdLGV4cG9ydEFzOiJuZ01vZGVsR3JvdXAifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPaSxkZWNvcmF0b3JzOlt7dHlwZTp6YX0se3R5cGU6WW99XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbbWldfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W3VyXX1dfV19LHtuYW1lOlt7dHlwZTpkLGFyZ3M6WyJuZ01vZGVsR3JvdXAiXX1dfSl9KSgpO3ZhciBZcnQ9e3Byb3ZpZGU6RWEsdXNlRXhpc3Rpbmc6dG8oKCk9PmF1KX0sVTV0PSgpPT5Qcm9taXNlLnJlc29sdmUobnVsbCkscHJ0PVU1dCgpLGF1PWNsYXNzIGV4dGVuZHMgRWF7Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIoKSx0aGlzLmNvbnRyb2w9bmV3IHpwLHRoaXMuX3JlZ2lzdGVyZWQ9ITEsdGhpcy51cGRhdGU9bmV3ICQsdGhpcy5fcGFyZW50PXQsdGhpcy5fc2V0VmFsaWRhdG9ycyhlKSx0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMobyksdGhpcy52YWx1ZUFjY2Vzc29yPXRZKHRoaXMsaSl9bmdPbkNoYW5nZXModCl7dGhpcy5fY2hlY2tGb3JFcnJvcnMoKSx0aGlzLl9yZWdpc3RlcmVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSwiaXNEaXNhYmxlZCJpbiB0JiZ0aGlzLl91cGRhdGVEaXNhYmxlZCh0KSwkVSh0LHRoaXMudmlld01vZGVsKSYmKHRoaXMuX3VwZGF0ZVZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKX1nZXQgcGF0aCgpe3JldHVybiB0aGlzLl9wYXJlbnQ/QUkodGhpcy5uYW1lLHRoaXMuX3BhcmVudCk6W3RoaXMubmFtZV19Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9dmlld1RvTW9kZWxVcGRhdGUodCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfV9zZXRVcENvbnRyb2woKXt0aGlzLl9zZXRVcGRhdGVTdHJhdGVneSgpLHRoaXMuX2lzU3RhbmRhbG9uZSgpP3RoaXMuX3NldFVwU3RhbmRhbG9uZSgpOnRoaXMuZm9ybURpcmVjdGl2ZS5hZGRDb250cm9sKHRoaXMpLHRoaXMuX3JlZ2lzdGVyZWQ9ITB9X3NldFVwZGF0ZVN0cmF0ZWd5KCl7dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMudXBkYXRlT24hPW51bGwmJih0aGlzLmNvbnRyb2wuX3VwZGF0ZU9uPXRoaXMub3B0aW9ucy51cGRhdGVPbil9X2lzU3RhbmRhbG9uZSgpe3JldHVybiF0aGlzLl9wYXJlbnR8fCEhKHRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLnN0YW5kYWxvbmUpfV9zZXRVcFN0YW5kYWxvbmUoKXtNayh0aGlzLmNvbnRyb2wsdGhpcyksdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfV9jaGVja0ZvckVycm9ycygpe3RoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jaGVja05hbWUoKX1fY2hlY2tQYXJlbnRUeXBlKCl7aWYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSl7aWYoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBzYykmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEdfKXRocm93IEI1dCgpO2lmKCEodGhpcy5fcGFyZW50IGluc3RhbmNlb2Ygc2MpJiYhKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEtpKSl0aHJvdyBMNXQoKX19X2NoZWNrTmFtZSgpe2lmKHRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm5hbWUmJih0aGlzLm5hbWU9dGhpcy5vcHRpb25zLm5hbWUpLCF0aGlzLl9pc1N0YW5kYWxvbmUoKSYmIXRoaXMubmFtZSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IFY1dCgpfV91cGRhdGVWYWx1ZSh0KXtwcnQudGhlbigoKT0+e3RoaXMuY29udHJvbC5zZXRWYWx1ZSh0LHtlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6ITF9KX0pfV91cGRhdGVEaXNhYmxlZCh0KXtsZXQgZT10LmlzRGlzYWJsZWQuY3VycmVudFZhbHVlLG89ZT09PSIifHxlJiZlIT09ImZhbHNlIjtwcnQudGhlbigoKT0+e28mJiF0aGlzLmNvbnRyb2wuZGlzYWJsZWQ/dGhpcy5jb250cm9sLmRpc2FibGUoKTohbyYmdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLmNvbnRyb2wuZW5hYmxlKCl9KX19O2F1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGF1KSh2KE9pLDkpLHYobWksMTApLHYodXIsMTApLHYoamEsMTApKX07YXUuXHUwMjc1ZGlyPXZ0KHt0eXBlOmF1LHNlbGVjdG9yczpbWyIiLCJuZ01vZGVsIiwiIiwzLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsImZvcm1Db250cm9sIiwiIl1dLGlucHV0czp7bmFtZToibmFtZSIsaXNEaXNhYmxlZDpbImRpc2FibGVkIiwiaXNEaXNhYmxlZCJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl0sb3B0aW9uczpbIm5nTW9kZWxPcHRpb25zIiwib3B0aW9ucyJdfSxvdXRwdXRzOnt1cGRhdGU6Im5nTW9kZWxDaGFuZ2UifSxleHBvcnRBczpbIm5nTW9kZWwiXSxmZWF0dXJlczpbVGUoW1lydF0pLGFlLFdlXX0pO2F1LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2ksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6emF9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbbWldfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W3VyXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOltqYV19XX1dO2F1LnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpkfV0saXNEaXNhYmxlZDpbe3R5cGU6ZCxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpkLGFyZ3M6WyJuZ01vZGVsIl19XSxvcHRpb25zOlt7dHlwZTpkLGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV0sdXBkYXRlOlt7dHlwZTpCLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGF1LFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltuZ01vZGVsXTpub3QoW2Zvcm1Db250cm9sTmFtZV0pOm5vdChbZm9ybUNvbnRyb2xdKSIscHJvdmlkZXJzOltZcnRdLGV4cG9ydEFzOiJuZ01vZGVsIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2ksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6emF9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbbWldfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W3VyXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOltqYV19XX1dfSx7dXBkYXRlOlt7dHlwZTpCLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxuYW1lOlt7dHlwZTpkfV0saXNEaXNhYmxlZDpbe3R5cGU6ZCxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpkLGFyZ3M6WyJuZ01vZGVsIl19XSxvcHRpb25zOlt7dHlwZTpkLGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV19KX0pKCk7dmFyIHBPPWNsYXNze307cE8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cE8pfTtwTy5cdTAyNzVkaXI9dnQoe3R5cGU6cE8sc2VsZWN0b3JzOltbImZvcm0iLDMsIm5nTm9Gb3JtIiwiIiwzLCJuZ05hdGl2ZVZhbGlkYXRlIiwiIl1dLGhvc3RBdHRyczpbIm5vdmFsaWRhdGUiLCIiXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhwTyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJmb3JtOm5vdChbbmdOb0Zvcm1dKTpub3QoW25nTmF0aXZlVmFsaWRhdGVdKSIsaG9zdDp7bm92YWxpZGF0ZToiIn19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBHcnQ9e3Byb3ZpZGU6amEsdXNlRXhpc3Rpbmc6dG8oKCk9PkRwKSxtdWx0aTohMH0sRHA9Y2xhc3MgZXh0ZW5kcyBzZnt3cml0ZVZhbHVlKHQpe2xldCBlPXQ9PW51bGw/IiI6dDt0aGlzLnNldFByb3BlcnR5KCJ2YWx1ZSIsZSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLm9uQ2hhbmdlPWU9Pnt0KGU9PSIiP251bGw6cGFyc2VGbG9hdChlKSl9fX07RHAuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihEcCkpKShlfHxEcCl9fSgpO0RwLlx1MDI3NWRpcj12dCh7dHlwZTpEcCxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImlucHV0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkNoYW5nZShpLnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblRvdWNoZWQoKX0pfSxmZWF0dXJlczpbVGUoW0dydF0pLGFlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhEcCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPW51bWJlcl1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPW51bWJlcl1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9bnVtYmVyXVtuZ01vZGVsXSIsaG9zdDp7IihpbnB1dCkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltHcnRdfV19XSxudWxsLG51bGwpfSkoKTt2YXIgV3J0PXtwcm92aWRlOmphLHVzZUV4aXN0aW5nOnRvKCgpPT5zdSksbXVsdGk6ITB9O2Z1bmN0aW9uIFk1dCgpe3Rocm93IG5ldyBFcnJvcihgCiAgICAgIElmIHlvdSBkZWZpbmUgYm90aCBhIG5hbWUgYW5kIGEgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJhZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVzCiAgICAgIG11c3QgbWF0Y2guIEV4OiA8aW5wdXQgdHlwZT0icmFkaW8iIGZvcm1Db250cm9sTmFtZT0iZm9vZCIgbmFtZT0iZm9vZCI+CiAgICBgKX12YXIgcnU9Y2xhc3N7fTtydS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxydSl9O3J1Llx1MDI3NW1vZD1xKHt0eXBlOnJ1fSk7cnUuXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhydSxbe3R5cGU6Wn1dLG51bGwsbnVsbCl9KSgpO3ZhciBGTT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FjY2Vzc29ycz1bXX1hZGQodCxlKXt0aGlzLl9hY2Nlc3NvcnMucHVzaChbdCxlXSl9cmVtb3ZlKHQpe2ZvcihsZXQgZT10aGlzLl9hY2Nlc3NvcnMubGVuZ3RoLTE7ZT49MDstLWUpaWYodGhpcy5fYWNjZXNzb3JzW2VdWzFdPT09dCl7dGhpcy5fYWNjZXNzb3JzLnNwbGljZShlLDEpO3JldHVybn19c2VsZWN0KHQpe3RoaXMuX2FjY2Vzc29ycy5mb3JFYWNoKGU9Pnt0aGlzLl9pc1NhbWVHcm91cChlLHQpJiZlWzFdIT09dCYmZVsxXS5maXJlVW5jaGVjayh0LnZhbHVlKX0pfV9pc1NhbWVHcm91cCh0LGUpe3JldHVybiB0WzBdLmNvbnRyb2w/dFswXS5fcGFyZW50PT09ZS5fY29udHJvbC5fcGFyZW50JiZ0WzFdLm5hbWU9PT1lLm5hbWU6ITF9fTtGTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxGTSl9O0ZNLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEZNfSx0b2tlbjpGTSxwcm92aWRlZEluOnJ1fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEZNLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjpydX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0sbnVsbCl9KSgpO3ZhciBzdT1jbGFzcyBleHRlbmRzIHNme2NvbnN0cnVjdG9yKHQsZSxvLGkpe3N1cGVyKHQsZSksdGhpcy5fcmVnaXN0cnk9byx0aGlzLl9pbmplY3Rvcj1pLHRoaXMub25DaGFuZ2U9KCk9Pnt9fW5nT25Jbml0KCl7dGhpcy5fY29udHJvbD10aGlzLl9pbmplY3Rvci5nZXQoRWEpLHRoaXMuX2NoZWNrTmFtZSgpLHRoaXMuX3JlZ2lzdHJ5LmFkZCh0aGlzLl9jb250cm9sLHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5fcmVnaXN0cnkucmVtb3ZlKHRoaXMpfXdyaXRlVmFsdWUodCl7dGhpcy5fc3RhdGU9dD09PXRoaXMudmFsdWUsdGhpcy5zZXRQcm9wZXJ0eSgiY2hlY2tlZCIsdGhpcy5fc3RhdGUpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fZm49dCx0aGlzLm9uQ2hhbmdlPSgpPT57dCh0aGlzLnZhbHVlKSx0aGlzLl9yZWdpc3RyeS5zZWxlY3QodGhpcyl9fWZpcmVVbmNoZWNrKHQpe3RoaXMud3JpdGVWYWx1ZSh0KX1fY2hlY2tOYW1lKCl7dGhpcy5uYW1lJiZ0aGlzLmZvcm1Db250cm9sTmFtZSYmdGhpcy5uYW1lIT09dGhpcy5mb3JtQ29udHJvbE5hbWUmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmWTV0KCksIXRoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJih0aGlzLm5hbWU9dGhpcy5mb3JtQ29udHJvbE5hbWUpfX07c3UuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8c3UpKHYob2EpLHYoTCksdihGTSksdigkZSkpfTtzdS5cdTAyNzVkaXI9dnQoe3R5cGU6c3Usc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsInJhZGlvIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25DaGFuZ2UoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBlLm9uVG91Y2hlZCgpfSl9LGlucHV0czp7bmFtZToibmFtZSIsZm9ybUNvbnRyb2xOYW1lOiJmb3JtQ29udHJvbE5hbWUiLHZhbHVlOiJ2YWx1ZSJ9LGZlYXR1cmVzOltUZShbV3J0XSksYWVdfSk7c3UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpvYX0se3R5cGU6TH0se3R5cGU6Rk19LHt0eXBlOiRlfV07c3UucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmR9XSxmb3JtQ29udHJvbE5hbWU6W3t0eXBlOmR9XSx2YWx1ZTpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoc3UsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPXJhZGlvXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1yYWRpb11bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbV3J0XX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6b2F9LHt0eXBlOkx9LHt0eXBlOkZNfSx7dHlwZTokZX1dfSx7bmFtZTpbe3R5cGU6ZH1dLGZvcm1Db250cm9sTmFtZTpbe3R5cGU6ZH1dLHZhbHVlOlt7dHlwZTpkfV19KX0pKCk7dmFyIHFydD17cHJvdmlkZTpqYSx1c2VFeGlzdGluZzp0bygoKT0+V18pLG11bHRpOiEwfSxXXz1jbGFzcyBleHRlbmRzIHNme3dyaXRlVmFsdWUodCl7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLHBhcnNlRmxvYXQodCkpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57dChlPT0iIj9udWxsOnBhcnNlRmxvYXQoZSkpfX19O1dfLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4oV18pKSkoZXx8V18pfX0oKTtXXy5cdTAyNzVkaXI9dnQoe3R5cGU6V18sc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsInJhbmdlIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYW5nZSIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYW5nZSIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uQ2hhbmdlKGkudGFyZ2V0LnZhbHVlKX0pKCJpbnB1dCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25DaGFuZ2UoaS50YXJnZXQudmFsdWUpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub3VjaGVkKCl9KX0sZmVhdHVyZXM6W1RlKFtxcnRdKSxhZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoV18sW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1yYW5nZV1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPXJhbmdlXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1yYW5nZV1bbmdNb2RlbF0iLGhvc3Q6eyIoY2hhbmdlKSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGlucHV0KSI6Im9uQ2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpIiwiKGJsdXIpIjoib25Ub3VjaGVkKCkifSxwcm92aWRlcnM6W3FydF19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBKdj1uZXcgeXQoIk5nTW9kZWxXaXRoRm9ybUNvbnRyb2xXYXJuaW5nIiksWnJ0PXtwcm92aWRlOkVhLHVzZUV4aXN0aW5nOnRvKCgpPT5Ccyl9LEJzPWNsYXNzIGV4dGVuZHMgRWF7Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIoKSx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZz1pLHRoaXMudXBkYXRlPW5ldyAkLHRoaXMuX25nTW9kZWxXYXJuaW5nU2VudD0hMSx0aGlzLl9zZXRWYWxpZGF0b3JzKHQpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhlKSx0aGlzLnZhbHVlQWNjZXNzb3I9dFkodGhpcyxvKX1zZXQgaXNEaXNhYmxlZCh0KXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJmNvbnNvbGUud2FybihIcnQpfW5nT25DaGFuZ2VzKHQpe2lmKHRoaXMuX2lzQ29udHJvbENoYW5nZWQodCkpe2xldCBlPXQuZm9ybS5wcmV2aW91c1ZhbHVlO2UmJlJJKGUsdGhpcywhMSksTWsodGhpcy5mb3JtLHRoaXMpLHRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlKCEwKSx0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9JFUodCx0aGlzLnZpZXdNb2RlbCkmJigodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJlZydCgiZm9ybUNvbnRyb2wiLEJzLHRoaXMsdGhpcy5fbmdNb2RlbFdhcm5pbmdDb25maWcpLHRoaXMuZm9ybS5zZXRWYWx1ZSh0aGlzLm1vZGVsKSx0aGlzLnZpZXdNb2RlbD10aGlzLm1vZGVsKX1uZ09uRGVzdHJveSgpe3RoaXMuZm9ybSYmUkkodGhpcy5mb3JtLHRoaXMsITEpfWdldCBwYXRoKCl7cmV0dXJuW119Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtfXZpZXdUb01vZGVsVXBkYXRlKHQpe3RoaXMudmlld01vZGVsPXQsdGhpcy51cGRhdGUuZW1pdCh0KX1faXNDb250cm9sQ2hhbmdlZCh0KXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eSgiZm9ybSIpfX07QnMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8QnMpKHYobWksMTApLHYodXIsMTApLHYoamEsMTApLHYoSnYsOCkpfTtCcy5cdTAyNzVkaXI9dnQoe3R5cGU6QnMsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sIiwiIl1dLGlucHV0czp7aXNEaXNhYmxlZDpbImRpc2FibGVkIiwiaXNEaXNhYmxlZCJdLGZvcm06WyJmb3JtQ29udHJvbCIsImZvcm0iXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdfSxvdXRwdXRzOnt1cGRhdGU6Im5nTW9kZWxDaGFuZ2UifSxleHBvcnRBczpbIm5nRm9ybSJdLGZlYXR1cmVzOltUZShbWnJ0XSksYWUsV2VdfSk7QnMuX25nTW9kZWxXYXJuaW5nU2VudE9uY2U9ITE7QnMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlttaV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbdXJdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W2phXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltKdl19XX1dO0JzLnByb3BEZWNvcmF0b3JzPXtmb3JtOlt7dHlwZTpkLGFyZ3M6WyJmb3JtQ29udHJvbCJdfV0saXNEaXNhYmxlZDpbe3R5cGU6ZCxhcmdzOlsiZGlzYWJsZWQiXX1dLG1vZGVsOlt7dHlwZTpkLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0eXBlOkIsYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQnMsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Db250cm9sXSIscHJvdmlkZXJzOltacnRdLGV4cG9ydEFzOiJuZ0Zvcm0ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlttaV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbdXJdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W2phXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltKdl19XX1dfSx7dXBkYXRlOlt7dHlwZTpCLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJkaXNhYmxlZCJdfV0sZm9ybTpbe3R5cGU6ZCxhcmdzOlsiZm9ybUNvbnRyb2wiXX1dLG1vZGVsOlt7dHlwZTpkLGFyZ3M6WyJuZ01vZGVsIl19XX0pfSkoKTt2YXIgWHJ0PXtwcm92aWRlOk9pLHVzZUV4aXN0aW5nOnRvKCgpPT5KaSl9LEppPWNsYXNzIGV4dGVuZHMgT2l7Y29uc3RydWN0b3IodCxlKXtzdXBlcigpLHRoaXMudmFsaWRhdG9ycz10LHRoaXMuYXN5bmNWYWxpZGF0b3JzPWUsdGhpcy5zdWJtaXR0ZWQ9ITEsdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPSgpPT50aGlzLl91cGRhdGVEb21WYWx1ZSgpLHRoaXMuZGlyZWN0aXZlcz1bXSx0aGlzLmZvcm09bnVsbCx0aGlzLm5nU3VibWl0PW5ldyAkLHRoaXMuX3NldFZhbGlkYXRvcnModCksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKGUpfW5nT25DaGFuZ2VzKHQpe3RoaXMuX2NoZWNrRm9ybVByZXNlbnQoKSx0Lmhhc093blByb3BlcnR5KCJmb3JtIikmJih0aGlzLl91cGRhdGVWYWxpZGF0b3JzKCksdGhpcy5fdXBkYXRlRG9tVmFsdWUoKSx0aGlzLl91cGRhdGVSZWdpc3RyYXRpb25zKCksdGhpcy5fb2xkRm9ybT10aGlzLmZvcm0pfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtJiYoa0kodGhpcy5mb3JtLHRoaXMpLHRoaXMuZm9ybS5fb25Db2xsZWN0aW9uQ2hhbmdlPT09dGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlJiZ0aGlzLmZvcm0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgpPT57fSkpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXN9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtfWdldCBwYXRoKCl7cmV0dXJuW119YWRkQ29udHJvbCh0KXtsZXQgZT10aGlzLmZvcm0uZ2V0KHQucGF0aCk7cmV0dXJuIE1rKGUsdCksZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLmRpcmVjdGl2ZXMucHVzaCh0KSxlfWdldENvbnRyb2wodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX1yZW1vdmVDb250cm9sKHQpe1JJKHQuY29udHJvbHx8bnVsbCx0LCExKSxOSSh0aGlzLmRpcmVjdGl2ZXMsdCl9YWRkRm9ybUdyb3VwKHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtR3JvdXAodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUdyb3VwKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9YWRkRm9ybUFycmF5KHQpe3RoaXMuX3NldFVwRm9ybUNvbnRhaW5lcih0KX1yZW1vdmVGb3JtQXJyYXkodCl7dGhpcy5fY2xlYW5VcEZvcm1Db250YWluZXIodCl9Z2V0Rm9ybUFycmF5KHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9dXBkYXRlTW9kZWwodCxlKXt0aGlzLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUoZSl9b25TdWJtaXQodCl7cmV0dXJuIHRoaXMuc3VibWl0dGVkPSEwLEJydCh0aGlzLmZvcm0sdGhpcy5kaXJlY3RpdmVzKSx0aGlzLm5nU3VibWl0LmVtaXQodCksITF9b25SZXNldCgpe3RoaXMucmVzZXRGb3JtKCl9cmVzZXRGb3JtKHQ9dm9pZCAwKXt0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5zdWJtaXR0ZWQ9ITF9X3VwZGF0ZURvbVZhbHVlKCl7dGhpcy5kaXJlY3RpdmVzLmZvckVhY2godD0+e2xldCBlPXQuY29udHJvbCxvPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtlIT09byYmKFJJKGV8fG51bGwsdCksbyBpbnN0YW5jZW9mIHpwJiYoTWsobyx0KSx0LmNvbnRyb2w9bykpfSksdGhpcy5mb3JtLl91cGRhdGVUcmVlVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfV9zZXRVcEZvcm1Db250YWluZXIodCl7bGV0IGU9dGhpcy5mb3JtLmdldCh0LnBhdGgpO0xydChlLHQpLGUudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X2NsZWFuVXBGb3JtQ29udGFpbmVyKHQpe2lmKHRoaXMuZm9ybSl7bGV0IGU9dGhpcy5mb3JtLmdldCh0LnBhdGgpO2UmJkQ1dChlLHQpJiZlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfX1fdXBkYXRlUmVnaXN0cmF0aW9ucygpe3RoaXMuZm9ybS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSx0aGlzLl9vbGRGb3JtJiZ0aGlzLl9vbGRGb3JtLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKT0+e30pfV91cGRhdGVWYWxpZGF0b3JzKCl7SlUodGhpcy5mb3JtLHRoaXMpLHRoaXMuX29sZEZvcm0mJmtJKHRoaXMuX29sZEZvcm0sdGhpcyl9X2NoZWNrRm9ybVByZXNlbnQoKXtpZighdGhpcy5mb3JtJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgdzV0KCl9fTtKaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxKaSkodihtaSwxMCksdih1ciwxMCkpfTtKaS5cdTAyNzVkaXI9dnQoe3R5cGU6Smksc2VsZWN0b3JzOltbIiIsImZvcm1Hcm91cCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoInN1Ym1pdCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25TdWJtaXQoaSl9KSgicmVzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZXNldCgpfSl9LGlucHV0czp7Zm9ybTpbImZvcm1Hcm91cCIsImZvcm0iXX0sb3V0cHV0czp7bmdTdWJtaXQ6Im5nU3VibWl0In0sZXhwb3J0QXM6WyJuZ0Zvcm0iXSxmZWF0dXJlczpbVGUoW1hydF0pLGFlLFdlXX0pO0ppLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbbWldfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W3VyXX1dfV07SmkucHJvcERlY29yYXRvcnM9e2Zvcm06W3t0eXBlOmQsYXJnczpbImZvcm1Hcm91cCJdfV0sbmdTdWJtaXQ6W3t0eXBlOkJ9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEppLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtR3JvdXBdIixwcm92aWRlcnM6W1hydF0saG9zdDp7IihzdWJtaXQpIjoib25TdWJtaXQoJGV2ZW50KSIsIihyZXNldCkiOiJvblJlc2V0KCkifSxleHBvcnRBczoibmdGb3JtIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbbWldfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W3VyXX1dfV19LHtmb3JtOlt7dHlwZTpkLGFyZ3M6WyJmb3JtR3JvdXAiXX1dLG5nU3VibWl0Olt7dHlwZTpCfV19KX0pKCk7dmFyIFFydD17cHJvdmlkZTpPaSx1c2VFeGlzdGluZzp0bygoKT0+bW0pfSxtbT1jbGFzcyBleHRlbmRzIEdfe2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcigpLHRoaXMuX3BhcmVudD10LHRoaXMuX3NldFZhbGlkYXRvcnMoZSksdGhpcy5fc2V0QXN5bmNWYWxpZGF0b3JzKG8pfV9jaGVja1BhcmVudFR5cGUoKXtpZihKcnQodGhpcy5fcGFyZW50KSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IFM1dCgpfX07bW0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bW0pKHYoT2ksMTMpLHYobWksMTApLHYodXIsMTApKX07bW0uXHUwMjc1ZGlyPXZ0KHt0eXBlOm1tLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl1dLGlucHV0czp7bmFtZTpbImZvcm1Hcm91cE5hbWUiLCJuYW1lIl19LGZlYXR1cmVzOltUZShbUXJ0XSksYWVdfSk7bW0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPaSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTp6YX0se3R5cGU6WW99XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbbWldfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W3VyXX1dfV07bW0ucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmQsYXJnczpbImZvcm1Hcm91cE5hbWUiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobW0sW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Zvcm1Hcm91cE5hbWVdIixwcm92aWRlcnM6W1FydF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOnphfSx7dHlwZTpZb31dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlttaV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbdXJdfV19XX0se25hbWU6W3t0eXBlOmQsYXJnczpbImZvcm1Hcm91cE5hbWUiXX1dfSl9KSgpO3ZhciBLcnQ9e3Byb3ZpZGU6T2ksdXNlRXhpc3Rpbmc6dG8oKCk9PmNmKX0sY2Y9Y2xhc3MgZXh0ZW5kcyBPaXtjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhvKX1uZ09uSW5pdCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRGb3JtQXJyYXkodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3JtQXJyYXkodGhpcyl9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldEZvcm1BcnJheSh0aGlzKX1nZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiB0aGlzLl9wYXJlbnQ/dGhpcy5fcGFyZW50LmZvcm1EaXJlY3RpdmU6bnVsbH1nZXQgcGF0aCgpe3JldHVybiBBSSh0aGlzLm5hbWU9PW51bGw/dGhpcy5uYW1lOnRoaXMubmFtZS50b1N0cmluZygpLHRoaXMuX3BhcmVudCl9X2NoZWNrUGFyZW50VHlwZSgpe2lmKEpydCh0aGlzLl9wYXJlbnQpJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgUjV0KCl9fTtjZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxjZikodihPaSwxMyksdihtaSwxMCksdih1ciwxMCkpfTtjZi5cdTAyNzVkaXI9dnQoe3R5cGU6Y2Ysc2VsZWN0b3JzOltbIiIsImZvcm1BcnJheU5hbWUiLCIiXV0saW5wdXRzOntuYW1lOlsiZm9ybUFycmF5TmFtZSIsIm5hbWUiXX0sZmVhdHVyZXM6W1RlKFtLcnRdKSxhZV19KTtjZi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOnphfSx7dHlwZTpZb31dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlttaV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbdXJdfV19XTtjZi5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6ZCxhcmdzOlsiZm9ybUFycmF5TmFtZSJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhjZixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbZm9ybUFycmF5TmFtZV0iLHByb3ZpZGVyczpbS3J0XX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2ksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6emF9LHt0eXBlOllvfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W21pXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlt1cl19XX1dfSx7bmFtZTpbe3R5cGU6ZCxhcmdzOlsiZm9ybUFycmF5TmFtZSJdfV19KX0pKCk7ZnVuY3Rpb24gSnJ0KG4pe3JldHVybiEobiBpbnN0YW5jZW9mIG1tKSYmIShuIGluc3RhbmNlb2YgSmkpJiYhKG4gaW5zdGFuY2VvZiBjZil9dmFyICRydD17cHJvdmlkZTpFYSx1c2VFeGlzdGluZzp0bygoKT0+Zm0pfSxmbT1jbGFzcyBleHRlbmRzIEVhe2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7c3VwZXIoKSx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZz1hLHRoaXMuX2FkZGVkPSExLHRoaXMudXBkYXRlPW5ldyAkLHRoaXMuX25nTW9kZWxXYXJuaW5nU2VudD0hMSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9zZXRWYWxpZGF0b3JzKGUpLHRoaXMuX3NldEFzeW5jVmFsaWRhdG9ycyhvKSx0aGlzLnZhbHVlQWNjZXNzb3I9dFkodGhpcyxpKX1zZXQgaXNEaXNhYmxlZCh0KXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJmNvbnNvbGUud2FybihIcnQpfW5nT25DaGFuZ2VzKHQpe3RoaXMuX2FkZGVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSwkVSh0LHRoaXMudmlld01vZGVsKSYmKCh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmVnJ0KCJmb3JtQ29udHJvbE5hbWUiLGZtLHRoaXMsdGhpcy5fbmdNb2RlbFdhcm5pbmdDb25maWcpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwsdGhpcy5mb3JtRGlyZWN0aXZlLnVwZGF0ZU1vZGVsKHRoaXMsdGhpcy5tb2RlbCkpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKX12aWV3VG9Nb2RlbFVwZGF0ZSh0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9Z2V0IHBhdGgoKXtyZXR1cm4gQUkodGhpcy5uYW1lPT1udWxsP3RoaXMubmFtZTp0aGlzLm5hbWUudG9TdHJpbmcoKSx0aGlzLl9wYXJlbnQpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfV9jaGVja1BhcmVudFR5cGUoKXtpZih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKXtpZighKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIG1tKSYmdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgR18pdGhyb3cgdjV0KCk7aWYoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBtbSkmJiEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgSmkpJiYhKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGNmKSl0aHJvdyB4NXQoKX19X3NldFVwQ29udHJvbCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuY29udHJvbD10aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5fYWRkZWQ9ITB9fTtmbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxmbSkodihPaSwxMyksdihtaSwxMCksdih1ciwxMCksdihqYSwxMCksdihKdiw4KSl9O2ZtLlx1MDI3NWRpcj12dCh7dHlwZTpmbSxzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl1dLGlucHV0czp7aXNEaXNhYmxlZDpbImRpc2FibGVkIiwiaXNEaXNhYmxlZCJdLG5hbWU6WyJmb3JtQ29udHJvbE5hbWUiLCJuYW1lIl0sbW9kZWw6WyJuZ01vZGVsIiwibW9kZWwiXX0sb3V0cHV0czp7dXBkYXRlOiJuZ01vZGVsQ2hhbmdlIn0sZmVhdHVyZXM6W1RlKFskcnRdKSxhZSxXZV19KTtmbS5fbmdNb2RlbFdhcm5pbmdTZW50T25jZT0hMTtmbS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOnphfSx7dHlwZTpZb31dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlttaV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbdXJdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W2phXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltKdl19XX1dO2ZtLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpkLGFyZ3M6WyJmb3JtQ29udHJvbE5hbWUiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOmQsYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6ZCxhcmdzOlsibmdNb2RlbCJdfV0sdXBkYXRlOlt7dHlwZTpCLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGZtLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Iltmb3JtQ29udHJvbE5hbWVdIixwcm92aWRlcnM6WyRydF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOnphfSx7dHlwZTpZb31dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOlttaV19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59LHt0eXBlOk4sYXJnczpbdXJdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W2phXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltKdl19XX1dfSx7dXBkYXRlOlt7dHlwZTpCLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XSxpc0Rpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbmFtZTpbe3R5cGU6ZCxhcmdzOlsiZm9ybUNvbnRyb2xOYW1lIl19XSxtb2RlbDpbe3R5cGU6ZCxhcmdzOlsibmdNb2RlbCJdfV19KX0pKCk7dmFyIHRzdD17cHJvdmlkZTpqYSx1c2VFeGlzdGluZzp0bygoKT0+c20pLG11bHRpOiEwfTtmdW5jdGlvbiBlc3Qobix0KXtyZXR1cm4gbj09bnVsbD9gJHt0fWA6KHQmJnR5cGVvZiB0PT0ib2JqZWN0IiYmKHQ9Ik9iamVjdCIpLGAke259OiAke3R9YC5zbGljZSgwLDUwKSl9ZnVuY3Rpb24gRzV0KG4pe3JldHVybiBuLnNwbGl0KCI6IilbMF19dmFyIHNtPWNsYXNzIGV4dGVuZHMgc2Z7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMuX2NvbXBhcmVXaXRoPU9iamVjdC5pc31zZXQgY29tcGFyZVdpdGgodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiImJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBuZXcgRXJyb3IoYGNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7dGhpcy5fY29tcGFyZVdpdGg9dH13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dDtsZXQgZT10aGlzLl9nZXRPcHRpb25JZCh0KTtlPT1udWxsJiZ0aGlzLnNldFByb3BlcnR5KCJzZWxlY3RlZEluZGV4IiwtMSk7bGV0IG89ZXN0KGUsdCk7dGhpcy5zZXRQcm9wZXJ0eSgidmFsdWUiLG8pfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1lPT57dGhpcy52YWx1ZT10aGlzLl9nZXRPcHRpb25WYWx1ZShlKSx0KHRoaXMudmFsdWUpfX1fcmVnaXN0ZXJPcHRpb24oKXtyZXR1cm4odGhpcy5faWRDb3VudGVyKyspLnRvU3RyaW5nKCl9X2dldE9wdGlvbklkKHQpe2ZvcihsZXQgZSBvZiBBcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoZSksdCkpcmV0dXJuIGU7cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKHQpe2xldCBlPUc1dCh0KTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLmhhcyhlKT90aGlzLl9vcHRpb25NYXAuZ2V0KGUpOnR9fTtzbS5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKHNtKSkpKGV8fHNtKX19KCk7c20uXHUwMjc1ZGlyPXZ0KHt0eXBlOnNtLHNlbGVjdG9yczpbWyJzZWxlY3QiLCJmb3JtQ29udHJvbE5hbWUiLCIiLDMsIm11bHRpcGxlIiwiIl0sWyJzZWxlY3QiLCJmb3JtQ29udHJvbCIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsIm5nTW9kZWwiLCIiLDMsIm11bHRpcGxlIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgiY2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkNoYW5nZShpLnRhcmdldC52YWx1ZSl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblRvdWNoZWQoKX0pfSxpbnB1dHM6e2NvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCJ9LGZlYXR1cmVzOltUZShbdHN0XSksYWVdfSk7c20ucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhzbSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJzZWxlY3Q6bm90KFttdWx0aXBsZV0pW2Zvcm1Db250cm9sTmFtZV0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtmb3JtQ29udHJvbF0sc2VsZWN0Om5vdChbbXVsdGlwbGVdKVtuZ01vZGVsXSIsaG9zdDp7IihjaGFuZ2UpIjoib25DaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSkiLCIoYmx1cikiOiJvblRvdWNoZWQoKSJ9LHByb3ZpZGVyczpbdHN0XX1dfV0sbnVsbCx7Y29tcGFyZVdpdGg6W3t0eXBlOmR9XX0pfSkoKTt2YXIgSHA9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX3NlbGVjdD1vLHRoaXMuX3NlbGVjdCYmKHRoaXMuaWQ9dGhpcy5fc2VsZWN0Ll9yZWdpc3Rlck9wdGlvbigpKX1zZXQgbmdWYWx1ZSh0KXt0aGlzLl9zZWxlY3QhPW51bGwmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5zZXQodGhpcy5pZCx0KSx0aGlzLl9zZXRFbGVtZW50VmFsdWUoZXN0KHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXNldCB2YWx1ZSh0KXt0aGlzLl9zZXRFbGVtZW50VmFsdWUodCksdGhpcy5fc2VsZWN0JiZ0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fTtIcC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxIcCkodihMKSx2KG9hKSx2KHNtLDkpKX07SHAuXHUwMjc1ZGlyPXZ0KHt0eXBlOkhwLHNlbGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pO0hwLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6b2F9LHt0eXBlOnNtLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOnphfV19XTtIcC5wcm9wRGVjb3JhdG9ycz17bmdWYWx1ZTpbe3R5cGU6ZCxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOmQsYXJnczpbInZhbHVlIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEhwLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Im9wdGlvbiJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOm9hfSx7dHlwZTpzbSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTp6YX1dfV19LHtuZ1ZhbHVlOlt7dHlwZTpkLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6ZCxhcmdzOlsidmFsdWUiXX1dfSl9KSgpO3ZhciBuc3Q9e3Byb3ZpZGU6amEsdXNlRXhpc3Rpbmc6dG8oKCk9PmxtKSxtdWx0aTohMH07ZnVuY3Rpb24gZHJ0KG4sdCl7cmV0dXJuIG49PW51bGw/YCR7dH1gOih0eXBlb2YgdD09InN0cmluZyImJih0PWAnJHt0fSdgKSx0JiZ0eXBlb2YgdD09Im9iamVjdCImJih0PSJPYmplY3QiKSxgJHtufTogJHt0fWAuc2xpY2UoMCw1MCkpfWZ1bmN0aW9uIFc1dChuKXtyZXR1cm4gbi5zcGxpdCgiOiIpWzBdfXZhciBsbT1jbGFzcyBleHRlbmRzIHNme2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9vcHRpb25NYXA9bmV3IE1hcCx0aGlzLl9pZENvdW50ZXI9MCx0aGlzLl9jb21wYXJlV2l0aD1PYmplY3QuaXN9c2V0IGNvbXBhcmVXaXRoKHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKGBjb21wYXJlV2l0aCBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfWApO3RoaXMuX2NvbXBhcmVXaXRoPXR9d3JpdGVWYWx1ZSh0KXt0aGlzLnZhbHVlPXQ7bGV0IGU7aWYoQXJyYXkuaXNBcnJheSh0KSl7bGV0IG89dC5tYXAoaT0+dGhpcy5fZ2V0T3B0aW9uSWQoaSkpO2U9KGksYSk9PntpLl9zZXRTZWxlY3RlZChvLmluZGV4T2YoYS50b1N0cmluZygpKT4tMSl9fWVsc2UgZT0obyxpKT0+e28uX3NldFNlbGVjdGVkKCExKX07dGhpcy5fb3B0aW9uTWFwLmZvckVhY2goZSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLm9uQ2hhbmdlPWU9PntsZXQgbz1bXTtpZihlLnNlbGVjdGVkT3B0aW9ucyE9PXZvaWQgMCl7bGV0IGk9ZS5zZWxlY3RlZE9wdGlvbnM7Zm9yKGxldCBhPTA7YTxpLmxlbmd0aDthKyspe2xldCByPWkuaXRlbShhKSxzPXRoaXMuX2dldE9wdGlvblZhbHVlKHIudmFsdWUpO28ucHVzaChzKX19ZWxzZXtsZXQgaT1lLm9wdGlvbnM7Zm9yKGxldCBhPTA7YTxpLmxlbmd0aDthKyspe2xldCByPWkuaXRlbShhKTtpZihyLnNlbGVjdGVkKXtsZXQgcz10aGlzLl9nZXRPcHRpb25WYWx1ZShyLnZhbHVlKTtvLnB1c2gocyl9fX10aGlzLnZhbHVlPW8sdChvKX19X3JlZ2lzdGVyT3B0aW9uKHQpe2xldCBlPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLnNldChlLHQpLGV9X2dldE9wdGlvbklkKHQpe2ZvcihsZXQgZSBvZiBBcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQoZSkuX3ZhbHVlLHQpKXJldHVybiBlO3JldHVybiBudWxsfV9nZXRPcHRpb25WYWx1ZSh0KXtsZXQgZT1XNXQodCk7cmV0dXJuIHRoaXMuX29wdGlvbk1hcC5oYXMoZSk/dGhpcy5fb3B0aW9uTWFwLmdldChlKS5fdmFsdWU6dH19O2xtLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4obG0pKSkoZXx8bG0pfX0oKTtsbS5cdTAyNzVkaXI9dnQoe3R5cGU6bG0sc2VsZWN0b3JzOltbInNlbGVjdCIsIm11bHRpcGxlIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uQ2hhbmdlKGkudGFyZ2V0KX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBlLm9uVG91Y2hlZCgpfSl9LGlucHV0czp7Y29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIn0sZmVhdHVyZXM6W1RlKFtuc3RdKSxhZV19KTtsbS5wcm9wRGVjb3JhdG9ycz17Y29tcGFyZVdpdGg6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGxtLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6InNlbGVjdFttdWx0aXBsZV1bZm9ybUNvbnRyb2xOYW1lXSxzZWxlY3RbbXVsdGlwbGVdW2Zvcm1Db250cm9sXSxzZWxlY3RbbXVsdGlwbGVdW25nTW9kZWxdIixob3N0OnsiKGNoYW5nZSkiOiJvbkNoYW5nZSgkZXZlbnQudGFyZ2V0KSIsIihibHVyKSI6Im9uVG91Y2hlZCgpIn0scHJvdmlkZXJzOltuc3RdfV19XSxudWxsLHtjb21wYXJlV2l0aDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBGcD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5fZWxlbWVudD10LHRoaXMuX3JlbmRlcmVyPWUsdGhpcy5fc2VsZWN0PW8sdGhpcy5fc2VsZWN0JiYodGhpcy5pZD10aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKHRoaXMpKX1zZXQgbmdWYWx1ZSh0KXt0aGlzLl9zZWxlY3QhPW51bGwmJih0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShkcnQodGhpcy5pZCx0KSksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9c2V0IHZhbHVlKHQpe3RoaXMuX3NlbGVjdD8odGhpcy5fdmFsdWU9dCx0aGlzLl9zZXRFbGVtZW50VmFsdWUoZHJ0KHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpOnRoaXMuX3NldEVsZW1lbnRWYWx1ZSh0KX1fc2V0RWxlbWVudFZhbHVlKHQpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwidmFsdWUiLHQpfV9zZXRTZWxlY3RlZCh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInNlbGVjdGVkIix0KX1uZ09uRGVzdHJveSgpe3RoaXMuX3NlbGVjdCYmKHRoaXMuX3NlbGVjdC5fb3B0aW9uTWFwLmRlbGV0ZSh0aGlzLmlkKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX19O0ZwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEZwKSh2KEwpLHYob2EpLHYobG0sOSkpfTtGcC5cdTAyNzVkaXI9dnQoe3R5cGU6RnAsc2VsZWN0b3JzOltbIm9wdGlvbiJdXSxpbnB1dHM6e25nVmFsdWU6Im5nVmFsdWUiLHZhbHVlOiJ2YWx1ZSJ9fSk7RnAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpvYX0se3R5cGU6bG0sZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6emF9XX1dO0ZwLnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlwZTpkLGFyZ3M6WyJuZ1ZhbHVlIl19XSx2YWx1ZTpbe3R5cGU6ZCxhcmdzOlsidmFsdWUiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRnAsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3Rvcjoib3B0aW9uIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6b2F9LHt0eXBlOmxtLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOnphfV19XX0se25nVmFsdWU6W3t0eXBlOmQsYXJnczpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpkLGFyZ3M6WyJ2YWx1ZSJdfV19KX0pKCk7ZnVuY3Rpb24gb3N0KG4pe3JldHVybiB0eXBlb2Ygbj09Im51bWJlciI/bjpwYXJzZUludChuLDEwKX12YXIgT1A9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl92YWxpZGF0b3I9cnh9aGFuZGxlQ2hhbmdlcyh0KXtpZih0aGlzLmlucHV0TmFtZSBpbiB0KXtsZXQgZT10aGlzLm5vcm1hbGl6ZUlucHV0KHRbdGhpcy5pbnB1dE5hbWVdLmN1cnJlbnRWYWx1ZSk7dGhpcy5fdmFsaWRhdG9yPXRoaXMuY3JlYXRlVmFsaWRhdG9yKGUpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdG9yKHQpfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH19O09QLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE9QKX07T1AuXHUwMjc1ZGlyPXZ0KHt0eXBlOk9QfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE9QLFt7dHlwZTp3dH1dLGZ1bmN0aW9uKCl7cmV0dXJuW119LG51bGwpfSkoKTt2YXIgaXN0PXtwcm92aWRlOm1pLHVzZUV4aXN0aW5nOnRvKCgpPT5vdSksbXVsdGk6ITB9LG91PWNsYXNzIGV4dGVuZHMgT1B7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaW5wdXROYW1lPSJtYXgiLHRoaXMubm9ybWFsaXplSW5wdXQ9dD0+cGFyc2VGbG9hdCh0KSx0aGlzLmNyZWF0ZVZhbGlkYXRvcj10PT5PcnQodCl9bmdPbkNoYW5nZXModCl7dGhpcy5oYW5kbGVDaGFuZ2VzKHQpfX07b3UuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihvdSkpKShlfHxvdSl9fSgpO291Llx1MDI3NWRpcj12dCh7dHlwZTpvdSxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWF4IiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtYXgiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwibnVtYmVyIiwibWF4IiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe2lmKHQmMil7bGV0IG87cmUoIm1heCIsKG89ZS5tYXgpIT09bnVsbCYmbyE9PXZvaWQgMD9vOm51bGwpfX0saW5wdXRzOnttYXg6Im1heCJ9LGZlYXR1cmVzOltUZShbaXN0XSksYWUsV2VdfSk7b3UucHJvcERlY29yYXRvcnM9e21heDpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob3UsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiaW5wdXRbdHlwZT1udW1iZXJdW21heF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPW51bWJlcl1bbWF4XVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1udW1iZXJdW21heF1bbmdNb2RlbF0iLHByb3ZpZGVyczpbaXN0XSxob3N0OnsiW2F0dHIubWF4XSI6Im1heCA/PyBudWxsIn19XX1dLG51bGwse21heDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBhc3Q9e3Byb3ZpZGU6bWksdXNlRXhpc3Rpbmc6dG8oKCk9Pml1KSxtdWx0aTohMH0saXU9Y2xhc3MgZXh0ZW5kcyBPUHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5pbnB1dE5hbWU9Im1pbiIsdGhpcy5ub3JtYWxpemVJbnB1dD10PT5wYXJzZUZsb2F0KHQpLHRoaXMuY3JlYXRlVmFsaWRhdG9yPXQ9PmJydCh0KX1uZ09uQ2hhbmdlcyh0KXt0aGlzLmhhbmRsZUNoYW5nZXModCl9fTtpdS5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKGl1KSkpKGV8fGl1KX19KCk7aXUuXHUwMjc1ZGlyPXZ0KHt0eXBlOml1LHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsIm1pbiIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJtaW4iLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7aWYodCYyKXtsZXQgbztyZSgibWluIiwobz1lLm1pbikhPT1udWxsJiZvIT09dm9pZCAwP286bnVsbCl9fSxpbnB1dHM6e21pbjoibWluIn0sZmVhdHVyZXM6W1RlKFthc3RdKSxhZSxXZV19KTtpdS5wcm9wRGVjb3JhdG9ycz17bWluOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhpdSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtmb3JtQ29udHJvbE5hbWVdLGlucHV0W3R5cGU9bnVtYmVyXVttaW5dW2Zvcm1Db250cm9sXSxpbnB1dFt0eXBlPW51bWJlcl1bbWluXVtuZ01vZGVsXSIscHJvdmlkZXJzOlthc3RdLGhvc3Q6eyJbYXR0ci5taW5dIjoibWluID8/IG51bGwifX1dfV0sbnVsbCx7bWluOlt7dHlwZTpkfV19KX0pKCk7dmFyIHJzdD17cHJvdmlkZTptaSx1c2VFeGlzdGluZzp0bygoKT0+bHUpLG11bHRpOiEwfSxzc3Q9e3Byb3ZpZGU6bWksdXNlRXhpc3Rpbmc6dG8oKCk9PmNtKSxtdWx0aTohMH0sbHU9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9yZXF1aXJlZD0hMX1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPXQhPW51bGwmJnQhPT0hMSYmYCR7dH1gIT0iZmFsc2UiLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpfXZhbGlkYXRlKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP1BydCh0KTpudWxsfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH19O2x1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGx1KX07bHUuXHUwMjc1ZGlyPXZ0KHt0eXBlOmx1LHNlbGVjdG9yczpbWyIiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyIiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbIiIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZyZSgicmVxdWlyZWQiLGUucmVxdWlyZWQ/IiI6bnVsbCl9LGlucHV0czp7cmVxdWlyZWQ6InJlcXVpcmVkIn0sZmVhdHVyZXM6W1RlKFtyc3RdKV19KTtsdS5wcm9wRGVjb3JhdG9ycz17cmVxdWlyZWQ6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGx1LFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Ijpub3QoW3R5cGU9Y2hlY2tib3hdKVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSw6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRdW2Zvcm1Db250cm9sXSw6bm90KFt0eXBlPWNoZWNrYm94XSlbcmVxdWlyZWRdW25nTW9kZWxdIixwcm92aWRlcnM6W3JzdF0saG9zdDp7IlthdHRyLnJlcXVpcmVkXSI6J3JlcXVpcmVkID8gIiIgOiBudWxsJ319XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW119LHtyZXF1aXJlZDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBjbT1jbGFzcyBleHRlbmRzIGx1e3ZhbGlkYXRlKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP3lydCh0KTpudWxsfX07Y20uXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihjbSkpKShlfHxjbSl9fSgpO2NtLlx1MDI3NWRpcj12dCh7dHlwZTpjbSxzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmcmUoInJlcXVpcmVkIixlLnJlcXVpcmVkPyIiOm51bGwpfSxmZWF0dXJlczpbVGUoW3NzdF0pLGFlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhjbSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPWNoZWNrYm94XVtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLGlucHV0W3R5cGU9Y2hlY2tib3hdW3JlcXVpcmVkXVtuZ01vZGVsXSIscHJvdmlkZXJzOltzc3RdLGhvc3Q6eyJbYXR0ci5yZXF1aXJlZF0iOidyZXF1aXJlZCA/ICIiIDogbnVsbCd9fV19XSxudWxsLG51bGwpfSkoKTt2YXIgbHN0PXtwcm92aWRlOm1pLHVzZUV4aXN0aW5nOnRvKCgpPT5xXyksbXVsdGk6ITB9LHFfPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fZW5hYmxlZD0hMX1zZXQgZW1haWwodCl7dGhpcy5fZW5hYmxlZD10PT09IiJ8fHQ9PT0hMHx8dD09PSJ0cnVlIix0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5fZW5hYmxlZD94cnQodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9fTtxXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxxXyl9O3FfLlx1MDI3NWRpcj12dCh7dHlwZTpxXyxzZWxlY3RvcnM6W1siIiwiZW1haWwiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsImVtYWlsIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIiIsImVtYWlsIiwiIiwibmdNb2RlbCIsIiJdXSxpbnB1dHM6e2VtYWlsOiJlbWFpbCJ9LGZlYXR1cmVzOltUZShbbHN0XSldfSk7cV8ucHJvcERlY29yYXRvcnM9e2VtYWlsOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhxXyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbZW1haWxdW2Zvcm1Db250cm9sTmFtZV0sW2VtYWlsXVtmb3JtQ29udHJvbF0sW2VtYWlsXVtuZ01vZGVsXSIscHJvdmlkZXJzOltsc3RdfV19XSxmdW5jdGlvbigpe3JldHVybltdfSx7ZW1haWw6W3t0eXBlOmR9XX0pfSkoKTt2YXIgY3N0PXtwcm92aWRlOm1pLHVzZUV4aXN0aW5nOnRvKCgpPT5aXyksbXVsdGk6ITB9LFpfPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPXJ4fW5nT25DaGFuZ2VzKHQpeyJtaW5sZW5ndGgiaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5lbmFibGVkKCk/dGhpcy5fdmFsaWRhdG9yKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fV9jcmVhdGVWYWxpZGF0b3IoKXt0aGlzLl92YWxpZGF0b3I9dGhpcy5lbmFibGVkKCk/dnJ0KG9zdCh0aGlzLm1pbmxlbmd0aCkpOnJ4fWVuYWJsZWQoKXtyZXR1cm4gdGhpcy5taW5sZW5ndGghPW51bGx9fTtaXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxaXyl9O1pfLlx1MDI3NWRpcj12dCh7dHlwZTpaXyxzZWxlY3RvcnM6W1siIiwibWlubGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJtaW5sZW5ndGgiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwibWlubGVuZ3RoIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmcmUoIm1pbmxlbmd0aCIsZS5lbmFibGVkKCk/ZS5taW5sZW5ndGg6bnVsbCl9LGlucHV0czp7bWlubGVuZ3RoOiJtaW5sZW5ndGgifSxmZWF0dXJlczpbVGUoW2NzdF0pLFdlXX0pO1pfLnByb3BEZWNvcmF0b3JzPXttaW5sZW5ndGg6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFpfLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttaW5sZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21pbmxlbmd0aF1bZm9ybUNvbnRyb2xdLFttaW5sZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6W2NzdF0saG9zdDp7IlthdHRyLm1pbmxlbmd0aF0iOiJlbmFibGVkKCkgPyBtaW5sZW5ndGggOiBudWxsIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW119LHttaW5sZW5ndGg6W3t0eXBlOmR9XX0pfSkoKTt2YXIgbXN0PXtwcm92aWRlOm1pLHVzZUV4aXN0aW5nOnRvKCgpPT5YXyksbXVsdGk6ITB9LFhfPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPXJ4fW5nT25DaGFuZ2VzKHQpeyJtYXhsZW5ndGgiaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5lbmFibGVkKCk/dGhpcy5fdmFsaWRhdG9yKHQpOm51bGx9cmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fV9jcmVhdGVWYWxpZGF0b3IoKXt0aGlzLl92YWxpZGF0b3I9dGhpcy5lbmFibGVkKCk/d3J0KG9zdCh0aGlzLm1heGxlbmd0aCkpOnJ4fWVuYWJsZWQoKXtyZXR1cm4gdGhpcy5tYXhsZW5ndGghPW51bGx9fTtYXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxYXyl9O1hfLlx1MDI3NWRpcj12dCh7dHlwZTpYXyxzZWxlY3RvcnM6W1siIiwibWF4bGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJtYXhsZW5ndGgiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwibWF4bGVuZ3RoIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmcmUoIm1heGxlbmd0aCIsZS5lbmFibGVkKCk/ZS5tYXhsZW5ndGg6bnVsbCl9LGlucHV0czp7bWF4bGVuZ3RoOiJtYXhsZW5ndGgifSxmZWF0dXJlczpbVGUoW21zdF0pLFdlXX0pO1hfLnByb3BEZWNvcmF0b3JzPXttYXhsZW5ndGg6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFhfLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttYXhsZW5ndGhdW2Zvcm1Db250cm9sTmFtZV0sW21heGxlbmd0aF1bZm9ybUNvbnRyb2xdLFttYXhsZW5ndGhdW25nTW9kZWxdIixwcm92aWRlcnM6W21zdF0saG9zdDp7IlthdHRyLm1heGxlbmd0aF0iOiJlbmFibGVkKCkgPyBtYXhsZW5ndGggOiBudWxsIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW119LHttYXhsZW5ndGg6W3t0eXBlOmR9XX0pfSkoKTt2YXIgZnN0PXtwcm92aWRlOm1pLHVzZUV4aXN0aW5nOnRvKCgpPT5RXyksbXVsdGk6ITB9LFFfPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPXJ4fW5nT25DaGFuZ2VzKHQpeyJwYXR0ZXJuImluIHQmJih0aGlzLl9jcmVhdGVWYWxpZGF0b3IoKSx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKSl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRvcih0KX1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj1TcnQodGhpcy5wYXR0ZXJuKX19O1FfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFFfKX07UV8uXHUwMjc1ZGlyPXZ0KHt0eXBlOlFfLHNlbGVjdG9yczpbWyIiLCJwYXR0ZXJuIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJwYXR0ZXJuIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIiIsInBhdHRlcm4iLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZyZSgicGF0dGVybiIsZS5wYXR0ZXJuP2UucGF0dGVybjpudWxsKX0saW5wdXRzOntwYXR0ZXJuOiJwYXR0ZXJuIn0sZmVhdHVyZXM6W1RlKFtmc3RdKSxXZV19KTtRXy5wcm9wRGVjb3JhdG9ycz17cGF0dGVybjpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUV8sW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW3BhdHRlcm5dW2Zvcm1Db250cm9sTmFtZV0sW3BhdHRlcm5dW2Zvcm1Db250cm9sXSxbcGF0dGVybl1bbmdNb2RlbF0iLHByb3ZpZGVyczpbZnN0XSxob3N0OnsiW2F0dHIucGF0dGVybl0iOiJwYXR0ZXJuID8gcGF0dGVybiA6IG51bGwifX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0se3BhdHRlcm46W3t0eXBlOmR9XX0pfSkoKTt2YXIgZ3J0PVtwTyxIcCxGcCxyYyxEcCxXXyxZXyxzbSxsbSxzdSxsZixMTSxsdSxaXyxYXyxRXyxjbSxxXyxpdSxvdV0sdXJ0PVthdSxzYyxLaV0saHJ0PVtCcyxKaSxmbSxtbSxjZl0sbWY9Y2xhc3N7fTttZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxtZil9O21mLlx1MDI3NW1vZD1xKHt0eXBlOm1mfSk7bWYuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tydV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG1mLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6Z3J0LGltcG9ydHM6W3J1XSxleHBvcnRzOmdydH1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChtZix7ZGVjbGFyYXRpb25zOltwTyxIcCxGcCxyYyxEcCxXXyxZXyxzbSxsbSxzdSxsZixMTSxsdSxaXyxYXyxRXyxjbSxxXyxpdSxvdV0saW1wb3J0czpbcnVdLGV4cG9ydHM6W3BPLEhwLEZwLHJjLERwLFdfLFlfLHNtLGxtLHN1LGxmLExNLGx1LFpfLFhfLFFfLGNtLHFfLGl1LG91XX0pfSkoKTt2YXIgV249Y2xhc3N7fTtXbi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxXbil9O1duLlx1MDI3NW1vZD1xKHt0eXBlOldufSk7V24uXHUwMjc1aW5qPVcoe2ltcG9ydHM6W21mXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhXbixbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOnVydCxleHBvcnRzOlttZix1cnRdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFduLHtkZWNsYXJhdGlvbnM6W2F1LHNjLEtpXSxleHBvcnRzOlttZixhdSxzYyxLaV19KX0pKCk7dmFyIGRzPWNsYXNze3N0YXRpYyB3aXRoQ29uZmlnKHQpe3JldHVybntuZ01vZHVsZTpkcyxwcm92aWRlcnM6W3twcm92aWRlOkp2LHVzZVZhbHVlOnQud2Fybk9uTmdNb2RlbFdpdGhGb3JtQ29udHJvbH1dfX19O2RzLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGRzKX07ZHMuXHUwMjc1bW9kPXEoe3R5cGU6ZHN9KTtkcy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbbWZdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGRzLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2hydF0sZXhwb3J0czpbbWYsaHJ0XX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChkcyx7ZGVjbGFyYXRpb25zOltCcyxKaSxmbSxtbSxjZl0sZXhwb3J0czpbbWYsQnMsSmksZm0sbW0sY2ZdfSl9KSgpO2Z1bmN0aW9uIHE1dChuKXtyZXR1cm4gbi5hc3luY1ZhbGlkYXRvcnMhPT12b2lkIDB8fG4udmFsaWRhdG9ycyE9PXZvaWQgMHx8bi51cGRhdGVPbiE9PXZvaWQgMH12YXIgaXg9Y2xhc3N7Z3JvdXAodCxlPW51bGwpe2xldCBvPXRoaXMuX3JlZHVjZUNvbnRyb2xzKHQpLGk9bnVsbCxhPW51bGwscjtyZXR1cm4gZSE9bnVsbCYmKHE1dChlKT8oaT1lLnZhbGlkYXRvcnMhPW51bGw/ZS52YWxpZGF0b3JzOm51bGwsYT1lLmFzeW5jVmFsaWRhdG9ycyE9bnVsbD9lLmFzeW5jVmFsaWRhdG9yczpudWxsLHI9ZS51cGRhdGVPbiE9bnVsbD9lLnVwZGF0ZU9uOnZvaWQgMCk6KGk9ZS52YWxpZGF0b3IhPW51bGw/ZS52YWxpZGF0b3I6bnVsbCxhPWUuYXN5bmNWYWxpZGF0b3IhPW51bGw/ZS5hc3luY1ZhbGlkYXRvcjpudWxsKSksbmV3IEt2KG8se2FzeW5jVmFsaWRhdG9yczphLHVwZGF0ZU9uOnIsdmFsaWRhdG9yczppfSl9Y29udHJvbCh0LGUsbyl7cmV0dXJuIG5ldyB6cCh0LGUsbyl9YXJyYXkodCxlLG8pe2xldCBpPXQubWFwKGE9PnRoaXMuX2NyZWF0ZUNvbnRyb2woYSkpO3JldHVybiBuZXcgT2soaSxlLG8pfV9yZWR1Y2VDb250cm9scyh0KXtsZXQgZT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaChvPT57ZVtvXT10aGlzLl9jcmVhdGVDb250cm9sKHRbb10pfSksZX1fY3JlYXRlQ29udHJvbCh0KXtpZih0IGluc3RhbmNlb2YgenB8fHQgaW5zdGFuY2VvZiBLdnx8dCBpbnN0YW5jZW9mIE9rKXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpe2xldCBlPXRbMF0sbz10Lmxlbmd0aD4xP3RbMV06bnVsbCxpPXQubGVuZ3RoPjI/dFsyXTpudWxsO3JldHVybiB0aGlzLmNvbnRyb2woZSxvLGkpfWVsc2UgcmV0dXJuIHRoaXMuY29udHJvbCh0KX19O2l4Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGl4KX07aXguXHUwMjc1cHJvdj1QdCh7ZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgaXh9LHRva2VuOml4LHByb3ZpZGVkSW46ZHN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaXgsW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOmRzfV19XSxudWxsLG51bGwpfSkoKTt2YXIgSU1lPW5ldyBZZigiMTIuMi4xNiIpO3ZhciBaNXQ9WyJ0cmlnZ2VyIl0sWDV0PVsicGFuZWwiXTtmdW5jdGlvbiBRNXQobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDgpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLEllKGUucGxhY2Vob2xkZXIpfX1mdW5jdGlvbiBLNXQobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDEyKSxUKDEpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goMSksSWUoZS50cmlnZ2VyVmFsdWUpfX1mdW5jdGlvbiBKNXQobix0KXtuJjEmJlluKDAsMCxbIipuZ1N3aXRjaENhc2UiLCJ0cnVlIl0pfWZ1bmN0aW9uICQ1dChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsOSksaygxLEs1dCwyLDEsInNwYW4iLDEwKSxrKDIsSjV0LDEsMCwibmctY29udGVudCIsMTEpLGgoKSksbiYyKXtsZXQgZT1TKCk7UCgibmdTd2l0Y2giLCEhZS5jdXN0b21UcmlnZ2VyKSx4KDIpLFAoIm5nU3dpdGNoQ2FzZSIsITApfX1mdW5jdGlvbiB0NHQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDEzKSx1KDEsImRpdiIsMTQsMTUpLEEoIkB0cmFuc2Zvcm1QYW5lbC5kb25lIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLl9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW0ubmV4dChpLnRvU3RhdGUpfSkoImtleWRvd24iLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkuX2hhbmRsZUtleWRvd24oaSl9KSxZbigzLDEpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7UCgiQHRyYW5zZm9ybVBhbmVsV3JhcCIsdm9pZCAwKSx4KDEpLExSKCJtYXQtc2VsZWN0LXBhbmVsICIsZS5fZ2V0UGFuZWxUaGVtZSgpLCIiKSxxZSgidHJhbnNmb3JtLW9yaWdpbiIsZS5fdHJhbnNmb3JtT3JpZ2luKSgiZm9udC1zaXplIixlLl90cmlnZ2VyRm9udFNpemUsInB4IiksUCgibmdDbGFzcyIsZS5wYW5lbENsYXNzKSgiQHRyYW5zZm9ybVBhbmVsIixlLm11bHRpcGxlPyJzaG93aW5nLW11bHRpcGxlIjoic2hvd2luZyIpLHJlKCJpZCIsZS5pZCsiLXBhbmVsIikoImFyaWEtbXVsdGlzZWxlY3RhYmxlIixlLm11bHRpcGxlKSgiYXJpYS1sYWJlbCIsZS5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLGUuX2dldFBhbmVsQXJpYUxhYmVsbGVkYnkoKSl9fXZhciBlNHQ9W1tbIm1hdC1zZWxlY3QtdHJpZ2dlciJdXSwiKiJdLG40dD1bIm1hdC1zZWxlY3QtdHJpZ2dlciIsIioiXSxJST17dHJhbnNmb3JtUGFuZWxXcmFwOnhyKCJ0cmFuc2Zvcm1QYW5lbFdyYXAiLFtiaSgiKiA9PiB2b2lkIixfQSgiQHRyYW5zZm9ybVBhbmVsIixbaEEoKV0se29wdGlvbmFsOiEwfSkpXSksdHJhbnNmb3JtUGFuZWw6eHIoInRyYW5zZm9ybVBhbmVsIixbaGkoInZvaWQiLExuKHt0cmFuc2Zvcm06InNjYWxlWSgwLjgpIixtaW5XaWR0aDoiMTAwJSIsb3BhY2l0eTowfSkpLGhpKCJzaG93aW5nIixMbih7b3BhY2l0eToxLG1pbldpZHRoOiJjYWxjKDEwMCUgKyAzMnB4KSIsdHJhbnNmb3JtOiJzY2FsZVkoMSkifSkpLGhpKCJzaG93aW5nLW11bHRpcGxlIixMbih7b3BhY2l0eToxLG1pbldpZHRoOiJjYWxjKDEwMCUgKyA2NHB4KSIsdHJhbnNmb3JtOiJzY2FsZVkoMSkifSkpLGJpKCJ2b2lkID0+ICoiLERpKCIxMjBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIpKSxiaSgiKiA9PiB2b2lkIixEaSgiMTAwbXMgMjVtcyBsaW5lYXIiLExuKHtvcGFjaXR5OjB9KSkpXSl9O2Z1bmN0aW9uIG80dCgpe3JldHVybiBFcnJvcigiQ2Fubm90IGNoYW5nZSBgbXVsdGlwbGVgIG1vZGUgb2Ygc2VsZWN0IGFmdGVyIGluaXRpYWxpemF0aW9uLiIpfWZ1bmN0aW9uIGk0dCgpe3JldHVybiBFcnJvcigiVmFsdWUgbXVzdCBiZSBhbiBhcnJheSBpbiBtdWx0aXBsZS1zZWxlY3Rpb24gbW9kZS4iKX1mdW5jdGlvbiBhNHQoKXtyZXR1cm4gRXJyb3IoImBjb21wYXJlV2l0aGAgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpfXZhciBwc3Q9MCxQaz0yNTYsQjM9MTYscjR0PUIzKjIsczR0PTMsZHN0PUIzKjEuNSsxNixEST04LHpJPW5ldyB5dCgibWF0LXNlbGVjdC1zY3JvbGwtc3RyYXRlZ3kiKTtmdW5jdGlvbiBsNHQobil7cmV0dXJuKCk9Pm4uc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9dmFyIGFZPW5ldyB5dCgiTUFUX1NFTEVDVF9DT05GSUciKSxnc3Q9e3Byb3ZpZGU6ekksZGVwczpbR25dLHVzZUZhY3Rvcnk6bDR0fSxpWT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc291cmNlPXQsdGhpcy52YWx1ZT1lfX0sYzR0PXRsKERfKFZyKFQzKGNsYXNze2NvbnN0cnVjdG9yKG4sdCxlLG8saSl7dGhpcy5fZWxlbWVudFJlZj1uLHRoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcj10LHRoaXMuX3BhcmVudEZvcm09ZSx0aGlzLl9wYXJlbnRGb3JtR3JvdXA9byx0aGlzLm5nQ29udHJvbD1pfX0pKSkpLHlrPW5ldyB5dCgiTWF0U2VsZWN0VHJpZ2dlciIpLGN1PWNsYXNze307Y3UuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Y3UpfTtjdS5cdTAyNzVkaXI9dnQoe3R5cGU6Y3Usc2VsZWN0b3JzOltbIm1hdC1zZWxlY3QtdHJpZ2dlciJdXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOnlrLHVzZUV4aXN0aW5nOmN1fV0pXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhjdSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJtYXQtc2VsZWN0LXRyaWdnZXIiLHByb3ZpZGVyczpbe3Byb3ZpZGU6eWssdXNlRXhpc3Rpbmc6Y3V9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIGRPPWNsYXNzIGV4dGVuZHMgYzR0e2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCxjLG0sZixwLGcsXyl7dmFyIE0seSxPO3N1cGVyKGEsaSxzLGwsbSksdGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fbmdab25lPW8sdGhpcy5fZGlyPXIsdGhpcy5fcGFyZW50Rm9ybUZpZWxkPWMsdGhpcy5fbGl2ZUFubm91bmNlcj1nLHRoaXMuX2RlZmF1bHRPcHRpb25zPV8sdGhpcy5fcGFuZWxPcGVuPSExLHRoaXMuX2NvbXBhcmVXaXRoPShiLFIpPT5iPT09Uix0aGlzLl91aWQ9YG1hdC1zZWxlY3QtJHtwc3QrK31gLHRoaXMuX3RyaWdnZXJBcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuX2Rlc3Ryb3k9bmV3IEp0LHRoaXMuX29uQ2hhbmdlPSgpPT57fSx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX3ZhbHVlSWQ9YG1hdC1zZWxlY3QtdmFsdWUtJHtwc3QrK31gLHRoaXMuX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbT1uZXcgSnQsdGhpcy5fb3ZlcmxheVBhbmVsQ2xhc3M9KChNPXRoaXMuX2RlZmF1bHRPcHRpb25zKT09PW51bGx8fE09PT12b2lkIDA/dm9pZCAwOk0ub3ZlcmxheVBhbmVsQ2xhc3MpfHwiIix0aGlzLl9mb2N1c2VkPSExLHRoaXMuY29udHJvbFR5cGU9Im1hdC1zZWxlY3QiLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2Rpc2FibGVPcHRpb25DZW50ZXJpbmc9KE89KHk9dGhpcy5fZGVmYXVsdE9wdGlvbnMpPT09bnVsbHx8eT09PXZvaWQgMD92b2lkIDA6eS5kaXNhYmxlT3B0aW9uQ2VudGVyaW5nKSE9PW51bGwmJk8hPT12b2lkIDA/TzohMSx0aGlzLmFyaWFMYWJlbD0iIix0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXM9QkMoKCk9PntsZXQgYj10aGlzLm9wdGlvbnM7cmV0dXJuIGI/Yi5jaGFuZ2VzLnBpcGUoU28oYiksdGkoKCk9PnluKC4uLmIubWFwKFI9PlIub25TZWxlY3Rpb25DaGFuZ2UpKSkpOnRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKENuKDEpLHRpKCgpPT50aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMpKX0pLHRoaXMub3BlbmVkQ2hhbmdlPW5ldyAkLHRoaXMuX29wZW5lZFN0cmVhbT10aGlzLm9wZW5lZENoYW5nZS5waXBlKHVlKGI9PmIpLEcoKCk9Pnt9KSksdGhpcy5fY2xvc2VkU3RyZWFtPXRoaXMub3BlbmVkQ2hhbmdlLnBpcGUodWUoYj0+IWIpLEcoKCk9Pnt9KSksdGhpcy5zZWxlY3Rpb25DaGFuZ2U9bmV3ICQsdGhpcy52YWx1ZUNoYW5nZT1uZXcgJCx0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I9dGhpcyksKF89PW51bGw/dm9pZCAwOl8udHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkhPW51bGwmJih0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsPV8udHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5PXAsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9dGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KCksdGhpcy50YWJJbmRleD1wYXJzZUludChmKXx8MCx0aGlzLmlkPXRoaXMuaWR9Z2V0IGZvY3VzZWQoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZHx8dGhpcy5fcGFuZWxPcGVufWdldCBwbGFjZWhvbGRlcigpe3JldHVybiB0aGlzLl9wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fcGxhY2Vob2xkZXI9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1aZSh0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfXNldCBtdWx0aXBsZSh0KXtpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IG80dCgpO3RoaXMuX211bHRpcGxlPVplKHQpfWdldCBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVPcHRpb25DZW50ZXJpbmd9c2V0IGRpc2FibGVPcHRpb25DZW50ZXJpbmcodCl7dGhpcy5fZGlzYWJsZU9wdGlvbkNlbnRlcmluZz1aZSh0KX1nZXQgY29tcGFyZVdpdGgoKXtyZXR1cm4gdGhpcy5fY29tcGFyZVdpdGh9c2V0IGNvbXBhcmVXaXRoKHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgYTR0KCk7dGhpcy5fY29tcGFyZVdpdGg9dCx0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX1zZXQgdmFsdWUodCl7KHQhPT10aGlzLl92YWx1ZXx8dGhpcy5fbXVsdGlwbGUmJkFycmF5LmlzQXJyYXkodCkpJiYodGhpcy5vcHRpb25zJiZ0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHQpLHRoaXMuX3ZhbHVlPXQpfWdldCB0eXBlYWhlYWREZWJvdW5jZUludGVydmFsKCl7cmV0dXJuIHRoaXMuX3R5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWx9c2V0IHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwodCl7dGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbD1SaSh0KX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKHQpe3RoaXMuX2lkPXR8fHRoaXMuX3VpZCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgJHkodGhpcy5tdWx0aXBsZSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpLHRoaXMuX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbS5waXBlKFhvKCksUGUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSgoKT0+dGhpcy5fcGFuZWxEb25lQW5pbWF0aW5nKHRoaXMucGFuZWxPcGVuKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5faW5pdEtleU1hbmFnZXIoKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jaGFuZ2VkLnBpcGUoUGUodGhpcy5fZGVzdHJveSkpLnN1YnNjcmliZSh0PT57dC5hZGRlZC5mb3JFYWNoKGU9PmUuc2VsZWN0KCkpLHQucmVtb3ZlZC5mb3JFYWNoKGU9PmUuZGVzZWxlY3QoKSl9KSx0aGlzLm9wdGlvbnMuY2hhbmdlcy5waXBlKFNvKG51bGwpLFBlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9yZXNldE9wdGlvbnMoKSx0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCl9KX1uZ0RvQ2hlY2soKXtsZXQgdD10aGlzLl9nZXRUcmlnZ2VyQXJpYUxhYmVsbGVkYnkoKTtpZih0IT09dGhpcy5fdHJpZ2dlckFyaWFMYWJlbGxlZEJ5KXtsZXQgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fdHJpZ2dlckFyaWFMYWJlbGxlZEJ5PXQsdD9lLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iix0KTplLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iil9dGhpcy5uZ0NvbnRyb2wmJnRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpfW5nT25DaGFuZ2VzKHQpe3QuZGlzYWJsZWQmJnRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSx0LnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwmJnRoaXMuX2tleU1hbmFnZXImJnRoaXMuX2tleU1hbmFnZXIud2l0aFR5cGVBaGVhZCh0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3kubmV4dCgpLHRoaXMuX2Rlc3Ryb3kuY29tcGxldGUoKSx0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpfXRvZ2dsZSgpe3RoaXMucGFuZWxPcGVuP3RoaXMuY2xvc2UoKTp0aGlzLm9wZW4oKX1vcGVuKCl7dGhpcy5fY2FuT3BlbigpJiYodGhpcy5fcGFuZWxPcGVuPSEwLHRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbihudWxsKSx0aGlzLl9oaWdobGlnaHRDb3JyZWN0T3B0aW9uKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWNsb3NlKCl7dGhpcy5fcGFuZWxPcGVuJiYodGhpcy5fcGFuZWxPcGVuPSExLHRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLl9pc1J0bCgpPyJydGwiOiJsdHIiKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9vblRvdWNoZWQoKSl9d3JpdGVWYWx1ZSh0KXt0aGlzLnZhbHVlPXR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1nZXQgcGFuZWxPcGVuKCl7cmV0dXJuIHRoaXMuX3BhbmVsT3Blbn1nZXQgc2VsZWN0ZWQoKXt2YXIgdCxlO3JldHVybiB0aGlzLm11bHRpcGxlPygodD10aGlzLl9zZWxlY3Rpb25Nb2RlbCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnNlbGVjdGVkKXx8W106KGU9dGhpcy5fc2VsZWN0aW9uTW9kZWwpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5zZWxlY3RlZFswXX1nZXQgdHJpZ2dlclZhbHVlKCl7aWYodGhpcy5lbXB0eSlyZXR1cm4iIjtpZih0aGlzLl9tdWx0aXBsZSl7bGV0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubWFwKGU9PmUudmlld1ZhbHVlKTtyZXR1cm4gdGhpcy5faXNSdGwoKSYmdC5yZXZlcnNlKCksdC5qb2luKCIsICIpfXJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZFswXS52aWV3VmFsdWV9X2lzUnRsKCl7cmV0dXJuIHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU9PT0icnRsIjohMX1faGFuZGxlS2V5ZG93bih0KXt0aGlzLmRpc2FibGVkfHwodGhpcy5wYW5lbE9wZW4/dGhpcy5faGFuZGxlT3BlbktleWRvd24odCk6dGhpcy5faGFuZGxlQ2xvc2VkS2V5ZG93bih0KSl9X2hhbmRsZUNsb3NlZEtleWRvd24odCl7bGV0IGU9dC5rZXlDb2RlLG89ZT09PTQwfHxlPT09Mzh8fGU9PT0zN3x8ZT09PTM5LGk9ZT09PTEzfHxlPT09MzIsYT10aGlzLl9rZXlNYW5hZ2VyO2lmKCFhLmlzVHlwaW5nKCkmJmkmJiFWYSh0KXx8KHRoaXMubXVsdGlwbGV8fHQuYWx0S2V5KSYmbyl0LnByZXZlbnREZWZhdWx0KCksdGhpcy5vcGVuKCk7ZWxzZSBpZighdGhpcy5tdWx0aXBsZSl7bGV0IHI9dGhpcy5zZWxlY3RlZDthLm9uS2V5ZG93bih0KTtsZXQgcz10aGlzLnNlbGVjdGVkO3MmJnIhPT1zJiZ0aGlzLl9saXZlQW5ub3VuY2VyLmFubm91bmNlKHMudmlld1ZhbHVlLDFlNCl9fV9oYW5kbGVPcGVuS2V5ZG93bih0KXtsZXQgZT10aGlzLl9rZXlNYW5hZ2VyLG89dC5rZXlDb2RlLGk9bz09PTQwfHxvPT09MzgsYT1lLmlzVHlwaW5nKCk7aWYoaSYmdC5hbHRLZXkpdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2UoKTtlbHNlIGlmKCFhJiYobz09PTEzfHxvPT09MzIpJiZlLmFjdGl2ZUl0ZW0mJiFWYSh0KSl0LnByZXZlbnREZWZhdWx0KCksZS5hY3RpdmVJdGVtLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpO2Vsc2UgaWYoIWEmJnRoaXMuX211bHRpcGxlJiZvPT09NjUmJnQuY3RybEtleSl7dC5wcmV2ZW50RGVmYXVsdCgpO2xldCByPXRoaXMub3B0aW9ucy5zb21lKHM9PiFzLmRpc2FibGVkJiYhcy5zZWxlY3RlZCk7dGhpcy5vcHRpb25zLmZvckVhY2gocz0+e3MuZGlzYWJsZWR8fChyP3Muc2VsZWN0KCk6cy5kZXNlbGVjdCgpKX0pfWVsc2V7bGV0IHI9ZS5hY3RpdmVJdGVtSW5kZXg7ZS5vbktleWRvd24odCksdGhpcy5fbXVsdGlwbGUmJmkmJnQuc2hpZnRLZXkmJmUuYWN0aXZlSXRlbSYmZS5hY3RpdmVJdGVtSW5kZXghPT1yJiZlLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCl9fV9vbkZvY3VzKCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMuX2ZvY3VzZWQ9ITAsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fb25CbHVyKCl7dGhpcy5fZm9jdXNlZD0hMSwhdGhpcy5kaXNhYmxlZCYmIXRoaXMucGFuZWxPcGVuJiYodGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fb25BdHRhY2hlZCgpe3RoaXMuX292ZXJsYXlEaXIucG9zaXRpb25DaGFuZ2UucGlwZShDbigxKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpLHRoaXMuX3Bvc2l0aW9uaW5nU2V0dGxlZCgpfSl9X2dldFBhbmVsVGhlbWUoKXtyZXR1cm4gdGhpcy5fcGFyZW50Rm9ybUZpZWxkP2BtYXQtJHt0aGlzLl9wYXJlbnRGb3JtRmllbGQuY29sb3J9YDoiIn1nZXQgZW1wdHkoKXtyZXR1cm4hdGhpcy5fc2VsZWN0aW9uTW9kZWx8fHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzRW1wdHkoKX1faW5pdGlhbGl6ZVNlbGVjdGlvbigpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pnt0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLnZhbHVlOnRoaXMuX3ZhbHVlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KX1fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KXtpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5mb3JFYWNoKGU9PmUuc2V0SW5hY3RpdmVTdHlsZXMoKSksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLm11bHRpcGxlJiZ0KXtpZighQXJyYXkuaXNBcnJheSh0KSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IGk0dCgpO3QuZm9yRWFjaChlPT50aGlzLl9zZWxlY3RWYWx1ZShlKSksdGhpcy5fc29ydFZhbHVlcygpfWVsc2V7bGV0IGU9dGhpcy5fc2VsZWN0VmFsdWUodCk7ZT90aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZSk6dGhpcy5wYW5lbE9wZW58fHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSgtMSl9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X3NlbGVjdFZhbHVlKHQpe2xldCBlPXRoaXMub3B0aW9ucy5maW5kKG89PntpZih0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKG8pKXJldHVybiExO3RyeXtyZXR1cm4gby52YWx1ZSE9bnVsbCYmdGhpcy5fY29tcGFyZVdpdGgoby52YWx1ZSx0KX1jYXRjaChpKXtyZXR1cm4odHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJmNvbnNvbGUud2FybihpKSwhMX19KTtyZXR1cm4gZSYmdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KGUpLGV9X2luaXRLZXlNYW5hZ2VyKCl7dGhpcy5fa2V5TWFuYWdlcj1uZXcgTjModGhpcy5vcHRpb25zKS53aXRoVHlwZUFoZWFkKHRoaXMuX3R5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpLndpdGhWZXJ0aWNhbE9yaWVudGF0aW9uKCkud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLl9pc1J0bCgpPyJydGwiOiJsdHIiKS53aXRoSG9tZUFuZEVuZCgpLndpdGhBbGxvd2VkTW9kaWZpZXJLZXlzKFsic2hpZnRLZXkiXSksdGhpcy5fa2V5TWFuYWdlci50YWJPdXQucGlwZShQZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpPT57dGhpcy5wYW5lbE9wZW4mJighdGhpcy5tdWx0aXBsZSYmdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdGhpcy5mb2N1cygpLHRoaXMuY2xvc2UoKSl9KSx0aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZS5waXBlKFBlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9wYW5lbE9wZW4mJnRoaXMucGFuZWw/dGhpcy5fc2Nyb2xsT3B0aW9uSW50b1ZpZXcodGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXh8fDApOiF0aGlzLl9wYW5lbE9wZW4mJiF0aGlzLm11bHRpcGxlJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0mJnRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX0pfV9yZXNldE9wdGlvbnMoKXtsZXQgdD15bih0aGlzLm9wdGlvbnMuY2hhbmdlcyx0aGlzLl9kZXN0cm95KTt0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMucGlwZShQZSh0KSkuc3Vic2NyaWJlKGU9Pnt0aGlzLl9vblNlbGVjdChlLnNvdXJjZSxlLmlzVXNlcklucHV0KSxlLmlzVXNlcklucHV0JiYhdGhpcy5tdWx0aXBsZSYmdGhpcy5fcGFuZWxPcGVuJiYodGhpcy5jbG9zZSgpLHRoaXMuZm9jdXMoKSl9KSx5biguLi50aGlzLm9wdGlvbnMubWFwKGU9PmUuX3N0YXRlQ2hhbmdlcykpLnBpcGUoUGUodCkpLnN1YnNjcmliZSgoKT0+e3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pfV9vblNlbGVjdCh0LGUpe2xldCBvPXRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCk7dC52YWx1ZT09bnVsbCYmIXRoaXMuX211bHRpcGxlPyh0LmRlc2VsZWN0KCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLnZhbHVlIT1udWxsJiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKHQudmFsdWUpKToobyE9PXQuc2VsZWN0ZWQmJih0LnNlbGVjdGVkP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0KTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0KSksZSYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpLHRoaXMubXVsdGlwbGUmJih0aGlzLl9zb3J0VmFsdWVzKCksZSYmdGhpcy5mb2N1cygpKSksbyE9PXRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCkmJnRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMoKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9X3NvcnRWYWx1ZXMoKXtpZih0aGlzLm11bHRpcGxlKXtsZXQgdD10aGlzLm9wdGlvbnMudG9BcnJheSgpO3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNvcnQoKGUsbyk9PnRoaXMuc29ydENvbXBhcmF0b3I/dGhpcy5zb3J0Q29tcGFyYXRvcihlLG8sdCk6dC5pbmRleE9mKGUpLXQuaW5kZXhPZihvKSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfX1fcHJvcGFnYXRlQ2hhbmdlcyh0KXtsZXQgZT1udWxsO3RoaXMubXVsdGlwbGU/ZT10aGlzLnNlbGVjdGVkLm1hcChvPT5vLnZhbHVlKTplPXRoaXMuc2VsZWN0ZWQ/dGhpcy5zZWxlY3RlZC52YWx1ZTp0LHRoaXMuX3ZhbHVlPWUsdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGUpLHRoaXMuX29uQ2hhbmdlKGUpLHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5fZ2V0Q2hhbmdlRXZlbnQoZSkpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9oaWdobGlnaHRDb3JyZWN0T3B0aW9uKCl7dGhpcy5fa2V5TWFuYWdlciYmKHRoaXMuZW1wdHk/dGhpcy5fa2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTp0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF0pKX1fY2FuT3Blbigpe3ZhciB0O3JldHVybiF0aGlzLl9wYW5lbE9wZW4mJiF0aGlzLmRpc2FibGVkJiYoKHQ9dGhpcy5vcHRpb25zKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQubGVuZ3RoKT4wfWZvY3VzKHQpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSgpe3ZhciB0O2lmKHRoaXMuYXJpYUxhYmVsKXJldHVybiBudWxsO2xldCBlPSh0PXRoaXMuX3BhcmVudEZvcm1GaWVsZCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LmdldExhYmVsSWQoKSxvPWU/ZSsiICI6IiI7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnk/byt0aGlzLmFyaWFMYWJlbGxlZGJ5OmV9X2dldEFyaWFBY3RpdmVEZXNjZW5kYW50KCl7cmV0dXJuIHRoaXMucGFuZWxPcGVuJiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0/dGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLmlkOm51bGx9X2dldFRyaWdnZXJBcmlhTGFiZWxsZWRieSgpe3ZhciB0O2lmKHRoaXMuYXJpYUxhYmVsKXJldHVybiBudWxsO2xldCBlPSh0PXRoaXMuX3BhcmVudEZvcm1GaWVsZCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LmdldExhYmVsSWQoKSxvPShlP2UrIiAiOiIiKSt0aGlzLl92YWx1ZUlkO3JldHVybiB0aGlzLmFyaWFMYWJlbGxlZGJ5JiYobys9IiAiK3RoaXMuYXJpYUxhYmVsbGVkYnkpLG99X3BhbmVsRG9uZUFuaW1hdGluZyh0KXt0aGlzLm9wZW5lZENoYW5nZS5lbWl0KHQpfXNldERlc2NyaWJlZEJ5SWRzKHQpe3RoaXMuX2FyaWFEZXNjcmliZWRieT10LmpvaW4oIiAiKX1vbkNvbnRhaW5lckNsaWNrKCl7dGhpcy5mb2N1cygpLHRoaXMub3BlbigpfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7cmV0dXJuIHRoaXMuX3BhbmVsT3Blbnx8IXRoaXMuZW1wdHl8fHRoaXMuX2ZvY3VzZWQmJiEhdGhpcy5fcGxhY2Vob2xkZXJ9fTtkTy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxkTykodihabiksdihUdCksdihDdCksdihSYSksdihMKSx2KE5lLDgpLHYoS2ksOCksdihKaSw4KSx2KEFwLDgpLHYoRWEsMTApLFphKCJ0YWJpbmRleCIpLHYoekkpLHYocHIpLHYoYVksOCkpfTtkTy5cdTAyNzVkaXI9dnQoe3R5cGU6ZE8sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYocGUoWjV0LDUpLHBlKFg1dCw1KSxwZShkciw1KSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS50cmlnZ2VyPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLnBhbmVsPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLl9vdmVybGF5RGlyPW8uZmlyc3QpfX0saW5wdXRzOnthcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0saWQ6ImlkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHJlcXVpcmVkOiJyZXF1aXJlZCIsbXVsdGlwbGU6Im11bHRpcGxlIixkaXNhYmxlT3B0aW9uQ2VudGVyaW5nOiJkaXNhYmxlT3B0aW9uQ2VudGVyaW5nIixjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgiLHZhbHVlOiJ2YWx1ZSIsdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbDoidHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCIscGFuZWxDbGFzczoicGFuZWxDbGFzcyIsYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciIsc29ydENvbXBhcmF0b3I6InNvcnRDb21wYXJhdG9yIn0sb3V0cHV0czp7b3BlbmVkQ2hhbmdlOiJvcGVuZWRDaGFuZ2UiLF9vcGVuZWRTdHJlYW06Im9wZW5lZCIsX2Nsb3NlZFN0cmVhbToiY2xvc2VkIixzZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbkNoYW5nZSIsdmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W2FlLFdlXX0pO2RPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Wm59LHt0eXBlOlR0fSx7dHlwZTpDdH0se3R5cGU6UmF9LHt0eXBlOkx9LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6S2ksZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpKaSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOm9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbQXBdfV19LHt0eXBlOkVhLGRlY29yYXRvcnM6W3t0eXBlOklufSx7dHlwZTpIfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOlt6SV19XX0se3R5cGU6cHJ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W2FZXX1dfV07ZE8ucHJvcERlY29yYXRvcnM9e3RyaWdnZXI6W3t0eXBlOkl0LGFyZ3M6WyJ0cmlnZ2VyIl19XSxwYW5lbDpbe3R5cGU6SXQsYXJnczpbInBhbmVsIl19XSxfb3ZlcmxheURpcjpbe3R5cGU6SXQsYXJnczpbZHJdfV0scGFuZWxDbGFzczpbe3R5cGU6ZH1dLHBsYWNlaG9sZGVyOlt7dHlwZTpkfV0scmVxdWlyZWQ6W3t0eXBlOmR9XSxtdWx0aXBsZTpbe3R5cGU6ZH1dLGRpc2FibGVPcHRpb25DZW50ZXJpbmc6W3t0eXBlOmR9XSxjb21wYXJlV2l0aDpbe3R5cGU6ZH1dLHZhbHVlOlt7dHlwZTpkfV0sYXJpYUxhYmVsOlt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6ZH1dLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6W3t0eXBlOmR9XSxzb3J0Q29tcGFyYXRvcjpbe3R5cGU6ZH1dLGlkOlt7dHlwZTpkfV0sb3BlbmVkQ2hhbmdlOlt7dHlwZTpCfV0sX29wZW5lZFN0cmVhbTpbe3R5cGU6QixhcmdzOlsib3BlbmVkIl19XSxfY2xvc2VkU3RyZWFtOlt7dHlwZTpCLGFyZ3M6WyJjbG9zZWQiXX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6Qn1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpCfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhkTyxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpabn0se3R5cGU6VHR9LHt0eXBlOkN0fSx7dHlwZTpSYX0se3R5cGU6TH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpLaSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkppLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6b2ksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltBcF19XX0se3R5cGU6RWEsZGVjb3JhdG9yczpbe3R5cGU6SW59LHt0eXBlOkh9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmxpLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3pJXX1dfSx7dHlwZTpwcn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbYVldfV19XX0se2FyaWFMYWJlbDpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sb3BlbmVkQ2hhbmdlOlt7dHlwZTpCfV0sX29wZW5lZFN0cmVhbTpbe3R5cGU6QixhcmdzOlsib3BlbmVkIl19XSxfY2xvc2VkU3RyZWFtOlt7dHlwZTpCLGFyZ3M6WyJjbG9zZWQiXX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6Qn1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpCfV0saWQ6W3t0eXBlOmR9XSxwbGFjZWhvbGRlcjpbe3R5cGU6ZH1dLHJlcXVpcmVkOlt7dHlwZTpkfV0sbXVsdGlwbGU6W3t0eXBlOmR9XSxkaXNhYmxlT3B0aW9uQ2VudGVyaW5nOlt7dHlwZTpkfV0sY29tcGFyZVdpdGg6W3t0eXBlOmR9XSx2YWx1ZTpbe3R5cGU6ZH1dLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6W3t0eXBlOmR9XSx0cmlnZ2VyOlt7dHlwZTpJdCxhcmdzOlsidHJpZ2dlciJdfV0scGFuZWw6W3t0eXBlOkl0LGFyZ3M6WyJwYW5lbCJdfV0sX292ZXJsYXlEaXI6W3t0eXBlOkl0LGFyZ3M6W2RyXX1dLHBhbmVsQ2xhc3M6W3t0eXBlOmR9XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6ZH1dLHNvcnRDb21wYXJhdG9yOlt7dHlwZTpkfV19KX0pKCk7dmFyIGVyPWNsYXNzIGV4dGVuZHMgZE97Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3Njcm9sbFRvcD0wLHRoaXMuX3RyaWdnZXJGb250U2l6ZT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0idG9wIix0aGlzLl9vZmZzZXRZPTAsdGhpcy5fcG9zaXRpb25zPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6ImJvdHRvbSJ9XX1fY2FsY3VsYXRlT3ZlcmxheVNjcm9sbCh0LGUsbyl7bGV0IGk9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGE9aSp0LHI9aS8yLHM9YS1lK3I7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KDAscyksbyl9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkucGlwZShQZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgpPT57dGhpcy5wYW5lbE9wZW4mJih0aGlzLl90cmlnZ2VyUmVjdD10aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9KX1vcGVuKCl7c3VwZXIuX2Nhbk9wZW4oKSYmKHN1cGVyLm9wZW4oKSx0aGlzLl90cmlnZ2VyUmVjdD10aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl90cmlnZ2VyRm9udFNpemU9cGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCkuZm9udFNpemV8fCIwIiksdGhpcy5fY2FsY3VsYXRlT3ZlcmxheVBvc2l0aW9uKCksdGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoQ24oMSkpLnN1YnNjcmliZSgoKT0+e3RoaXMuX3RyaWdnZXJGb250U2l6ZSYmdGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmJiZ0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQmJih0aGlzLl9vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuc3R5bGUuZm9udFNpemU9YCR7dGhpcy5fdHJpZ2dlckZvbnRTaXplfXB4YCl9KSl9X3Njcm9sbE9wdGlvbkludG9WaWV3KHQpe2xldCBlPWFrKHQsdGhpcy5vcHRpb25zLHRoaXMub3B0aW9uR3JvdXBzKSxvPXRoaXMuX2dldEl0ZW1IZWlnaHQoKTt0PT09MCYmZT09PTE/dGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcD0wOnRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9aEkoKHQrZSkqbyxvLHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AsUGspfV9wb3NpdGlvbmluZ1NldHRsZWQoKXt0aGlzLl9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WCgpLHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9dGhpcy5fc2Nyb2xsVG9wfV9wYW5lbERvbmVBbmltYXRpbmcodCl7dGhpcy5wYW5lbE9wZW4/dGhpcy5fc2Nyb2xsVG9wPTA6KHRoaXMuX292ZXJsYXlEaXIub2Zmc2V0WD0wLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSxzdXBlci5fcGFuZWxEb25lQW5pbWF0aW5nKHQpfV9nZXRDaGFuZ2VFdmVudCh0KXtyZXR1cm4gbmV3IGlZKHRoaXMsdCl9X2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRYKCl7bGV0IHQ9dGhpcy5fb3ZlcmxheURpci5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxvPXRoaXMuX2lzUnRsKCksaT10aGlzLm11bHRpcGxlP2RzdCtCMzpCMyoyLGE7aWYodGhpcy5tdWx0aXBsZSlhPWRzdDtlbHNlIGlmKHRoaXMuZGlzYWJsZU9wdGlvbkNlbnRlcmluZylhPUIzO2Vsc2V7bGV0IGw9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF18fHRoaXMub3B0aW9ucy5maXJzdDthPWwmJmwuZ3JvdXA/cjR0OkIzfW98fChhKj0tMSk7bGV0IHI9MC0odC5sZWZ0K2EtKG8/aTowKSkscz10LnJpZ2h0K2EtZS53aWR0aCsobz8wOmkpO3I+MD9hKz1yK0RJOnM+MCYmKGEtPXMrREkpLHRoaXMuX292ZXJsYXlEaXIub2Zmc2V0WD1NYXRoLnJvdW5kKGEpLHRoaXMuX292ZXJsYXlEaXIub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfV9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WSh0LGUsbyl7bGV0IGk9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGE9KGktdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0KS8yLHI9TWF0aC5mbG9vcihQay9pKSxzO2lmKHRoaXMuZGlzYWJsZU9wdGlvbkNlbnRlcmluZylyZXR1cm4gMDtpZih0aGlzLl9zY3JvbGxUb3A9PT0wKXM9dCppO2Vsc2UgaWYodGhpcy5fc2Nyb2xsVG9wPT09byl7bGV0IGw9dGhpcy5fZ2V0SXRlbUNvdW50KCktcixjPXQtbCxtPWktKHRoaXMuX2dldEl0ZW1Db3VudCgpKmktUGspJWk7cz1jKmkrbX1lbHNlIHM9ZS1pLzI7cmV0dXJuIE1hdGgucm91bmQocyotMS1hKX1fY2hlY2tPdmVybGF5V2l0aGluVmlld3BvcnQodCl7bGV0IGU9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLG89dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxpPXRoaXMuX3RyaWdnZXJSZWN0LnRvcC1ESSxhPW8uaGVpZ2h0LXRoaXMuX3RyaWdnZXJSZWN0LmJvdHRvbS1ESSxyPU1hdGguYWJzKHRoaXMuX29mZnNldFkpLGw9TWF0aC5taW4odGhpcy5fZ2V0SXRlbUNvdW50KCkqZSxQayktci10aGlzLl90cmlnZ2VyUmVjdC5oZWlnaHQ7bD5hP3RoaXMuX2FkanVzdFBhbmVsVXAobCxhKTpyPmk/dGhpcy5fYWRqdXN0UGFuZWxEb3duKHIsaSx0KTp0aGlzLl90cmFuc2Zvcm1PcmlnaW49dGhpcy5fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpfV9hZGp1c3RQYW5lbFVwKHQsZSl7bGV0IG89TWF0aC5yb3VuZCh0LWUpO3RoaXMuX3Njcm9sbFRvcC09byx0aGlzLl9vZmZzZXRZLT1vLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj10aGlzLl9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCksdGhpcy5fc2Nyb2xsVG9wPD0wJiYodGhpcy5fc2Nyb2xsVG9wPTAsdGhpcy5fb2Zmc2V0WT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0iNTAlIGJvdHRvbSAwcHgiKX1fYWRqdXN0UGFuZWxEb3duKHQsZSxvKXtsZXQgaT1NYXRoLnJvdW5kKHQtZSk7aWYodGhpcy5fc2Nyb2xsVG9wKz1pLHRoaXMuX29mZnNldFkrPWksdGhpcy5fdHJhbnNmb3JtT3JpZ2luPXRoaXMuX2dldE9yaWdpbkJhc2VkT25PcHRpb24oKSx0aGlzLl9zY3JvbGxUb3A+PW8pe3RoaXMuX3Njcm9sbFRvcD1vLHRoaXMuX29mZnNldFk9MCx0aGlzLl90cmFuc2Zvcm1PcmlnaW49IjUwJSB0b3AgMHB4IjtyZXR1cm59fV9jYWxjdWxhdGVPdmVybGF5UG9zaXRpb24oKXtsZXQgdD10aGlzLl9nZXRJdGVtSGVpZ2h0KCksZT10aGlzLl9nZXRJdGVtQ291bnQoKSxvPU1hdGgubWluKGUqdCxQayksYT1lKnQtbyxyO3RoaXMuZW1wdHk/cj0wOnI9TWF0aC5tYXgodGhpcy5vcHRpb25zLnRvQXJyYXkoKS5pbmRleE9mKHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdKSwwKSxyKz1hayhyLHRoaXMub3B0aW9ucyx0aGlzLm9wdGlvbkdyb3Vwcyk7bGV0IHM9by8yO3RoaXMuX3Njcm9sbFRvcD10aGlzLl9jYWxjdWxhdGVPdmVybGF5U2Nyb2xsKHIscyxhKSx0aGlzLl9vZmZzZXRZPXRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlPZmZzZXRZKHIscyxhKSx0aGlzLl9jaGVja092ZXJsYXlXaXRoaW5WaWV3cG9ydChhKX1fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpe2xldCB0PXRoaXMuX2dldEl0ZW1IZWlnaHQoKSxlPSh0LXRoaXMuX3RyaWdnZXJSZWN0LmhlaWdodCkvMjtyZXR1cm5gNTAlICR7TWF0aC5hYnModGhpcy5fb2Zmc2V0WSktZSt0LzJ9cHggMHB4YH1fZ2V0SXRlbUhlaWdodCgpe3JldHVybiB0aGlzLl90cmlnZ2VyRm9udFNpemUqczR0fV9nZXRJdGVtQ291bnQoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmxlbmd0aCt0aGlzLm9wdGlvbkdyb3Vwcy5sZW5ndGh9fTtlci5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKGVyKSkpKGV8fGVyKX19KCk7ZXIuXHUwMjc1Y21wPXooe3R5cGU6ZXIsc2VsZWN0b3JzOltbIm1hdC1zZWxlY3QiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxlLG8pe2lmKHQmMSYmKGdvKG8seWssNSksZ28obyxJaSw1KSxnbyhvLFhnLDUpKSx0JjIpe2xldCBpO0h0KGk9RnQoKSkmJihlLmN1c3RvbVRyaWdnZXI9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUub3B0aW9ucz1pKSxIdChpPUZ0KCkpJiYoZS5vcHRpb25Hcm91cHM9aSl9fSxob3N0QXR0cnM6WyJyb2xlIiwiY29tYm9ib3giLCJhcmlhLWF1dG9jb21wbGV0ZSIsIm5vbmUiLCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIsMSwibWF0LXNlbGVjdCJdLGhvc3RWYXJzOjIwLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgia2V5ZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2hhbmRsZUtleWRvd24oaSl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX29uRm9jdXMoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBlLl9vbkJsdXIoKX0pLHQmMiYmKHJlKCJpZCIsZS5pZCkoInRhYmluZGV4IixlLnRhYkluZGV4KSgiYXJpYS1jb250cm9scyIsZS5wYW5lbE9wZW4/ZS5pZCsiLXBhbmVsIjpudWxsKSgiYXJpYS1leHBhbmRlZCIsZS5wYW5lbE9wZW4pKCJhcmlhLWxhYmVsIixlLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtcmVxdWlyZWQiLGUucmVxdWlyZWQudG9TdHJpbmcoKSkoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtaW52YWxpZCIsZS5lcnJvclN0YXRlKSgiYXJpYS1kZXNjcmliZWRieSIsZS5fYXJpYURlc2NyaWJlZGJ5fHxudWxsKSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixlLl9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpKSxtZSgibWF0LXNlbGVjdC1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoIm1hdC1zZWxlY3QtaW52YWxpZCIsZS5lcnJvclN0YXRlKSgibWF0LXNlbGVjdC1yZXF1aXJlZCIsZS5yZXF1aXJlZCkoIm1hdC1zZWxlY3QtZW1wdHkiLGUuZW1wdHkpKCJtYXQtc2VsZWN0LW11bHRpcGxlIixlLm11bHRpcGxlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgifSxleHBvcnRBczpbIm1hdFNlbGVjdCJdLGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6anIsdXNlRXhpc3Rpbmc6ZXJ9LHtwcm92aWRlOklfLHVzZUV4aXN0aW5nOmVyfV0pLGFlXSxuZ0NvbnRlbnRTZWxlY3RvcnM6bjR0LGRlY2xzOjksdmFyczoxMixjb25zdHM6W1siY2RrLW92ZXJsYXktb3JpZ2luIiwiIiwxLCJtYXQtc2VsZWN0LXRyaWdnZXIiLDMsImNsaWNrIl0sWyJvcmlnaW4iLCJjZGtPdmVybGF5T3JpZ2luIiwidHJpZ2dlciIsIiJdLFsxLCJtYXQtc2VsZWN0LXZhbHVlIiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXBsYWNlaG9sZGVyIG1hdC1zZWxlY3QtbWluLWxpbmUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXZhbHVlLXRleHQiLDMsIm5nU3dpdGNoIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIl0sWzEsIm1hdC1zZWxlY3QtYXJyb3ciXSxbImNkay1jb25uZWN0ZWQtb3ZlcmxheSIsIiIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIiwzLCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5T3BlbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLCJjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGgiLCJjZGtDb25uZWN0ZWRPdmVybGF5T2Zmc2V0WSIsImJhY2tkcm9wQ2xpY2siLCJhdHRhY2giLCJkZXRhY2giXSxbMSwibWF0LXNlbGVjdC1wbGFjZWhvbGRlciIsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiwzLCJuZ1N3aXRjaCJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LW1pbi1saW5lIiw0LCJuZ1N3aXRjaERlZmF1bHQiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1zZWxlY3QtbWluLWxpbmUiXSxbMSwibWF0LXNlbGVjdC1wYW5lbC13cmFwIl0sWyJyb2xlIiwibGlzdGJveCIsInRhYmluZGV4IiwiLTEiLDMsIm5nQ2xhc3MiLCJrZXlkb3duIl0sWyJwYW5lbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHlvKGU0dCksdSgwLCJkaXYiLDAsMSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUudG9nZ2xlKCl9KSx1KDMsImRpdiIsMiksayg0LFE1dCwyLDEsInNwYW4iLDMpLGsoNSwkNXQsMywyLCJzcGFuIiw0KSxoKCksdSg2LCJkaXYiLDUpLEQoNywiZGl2Iiw2KSxoKCksaCgpLGsoOCx0NHQsNCwxNCwibmctdGVtcGxhdGUiLDcpLEEoImJhY2tkcm9wQ2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUuY2xvc2UoKX0pKCJhdHRhY2giLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX29uQXR0YWNoZWQoKX0pKCJkZXRhY2giLGZ1bmN0aW9uKCl7cmV0dXJuIGUuY2xvc2UoKX0pKSx0JjIpe2xldCBvPXdlKDEpO3JlKCJhcmlhLW93bnMiLGUucGFuZWxPcGVuP2UuaWQrIi1wYW5lbCI6bnVsbCkseCgzKSxQKCJuZ1N3aXRjaCIsZS5lbXB0eSkscmUoImlkIixlLl92YWx1ZUlkKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsITApLHgoMSksUCgibmdTd2l0Y2hDYXNlIiwhMSkseCgzKSxQKCJjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzcyIsZS5fb3ZlcmxheVBhbmVsQ2xhc3MpKCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLGUuX3Njcm9sbFN0cmF0ZWd5KSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsbykoImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIixlLnBhbmVsT3BlbikoImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLGUuX3Bvc2l0aW9ucykoImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsZS5fdHJpZ2dlclJlY3Q9PW51bGw/bnVsbDplLl90cmlnZ2VyUmVjdC53aWR0aCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIixlLl9vZmZzZXRZKX19LGRpcmVjdGl2ZXM6W01sLEdvLHVpLGRyLFZsLGpuXSxzdHlsZXM6W2AubWF0LXNlbGVjdHtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxMDAlO291dGxpbmU6bm9uZX0ubWF0LXNlbGVjdC10cmlnZ2Vye2Rpc3BsYXk6aW5saW5lLXRhYmxlO2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC10cmlnZ2Vyey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXNlbGVjdC12YWx1ZXtkaXNwbGF5OnRhYmxlLWNlbGw7bWF4LXdpZHRoOjA7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1zZWxlY3QtdmFsdWUtdGV4dHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcntkaXNwbGF5OnRhYmxlLWNlbGw7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTI1JSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtaGFzLWxhYmVsIC5tYXQtc2VsZWN0Om5vdCgubWF0LXNlbGVjdC1lbXB0eSkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1lbXB0eSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXNlbGVjdC1hcnJvd3t3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6NXB4IHNvbGlkO21hcmdpbjowIDRweH0ubWF0LXNlbGVjdC1wYW5lbC13cmFwe2ZsZXgtYmFzaXM6MTAwJX0ubWF0LXNlbGVjdC1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21heC1oZWlnaHQ6MjU2cHg7bWluLXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zZWxlY3QtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRncm91cC1sYWJlbCwubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGlvbntmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDozZW07aGVpZ2h0OjNlbX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0Om5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4e2N1cnNvcjpwb2ludGVyfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3dpZHRoOmNhbGMoMTAwJSAtIDE4cHgpfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZTtkaXNwbGF5OmJsb2NrfS5tYXQtc2VsZWN0LW1pbi1saW5lOmVtcHR5OjpiZWZvcmV7Y29udGVudDoiICI7d2hpdGUtc3BhY2U6cHJlO3dpZHRoOjFweDtkaXNwbGF5OmlubGluZS1ibG9jaztvcGFjaXR5OjB9CmBdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W0lJLnRyYW5zZm9ybVBhbmVsV3JhcCxJSS50cmFuc2Zvcm1QYW5lbF19LGNoYW5nZURldGVjdGlvbjowfSk7ZXIucHJvcERlY29yYXRvcnM9e29wdGlvbnM6W3t0eXBlOmxvLGFyZ3M6W0lpLHtkZXNjZW5kYW50czohMH1dfV0sb3B0aW9uR3JvdXBzOlt7dHlwZTpsbyxhcmdzOltYZyx7ZGVzY2VuZGFudHM6ITB9XX1dLGN1c3RvbVRyaWdnZXI6W3t0eXBlOktvLGFyZ3M6W3lrXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZXIsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtc2VsZWN0IixleHBvcnRBczoibWF0U2VsZWN0Iix0ZW1wbGF0ZTpgPCEtLQogTm90ZSB0aGF0IHRoZSBzZWxlY3QgdHJpZ2dlciBlbGVtZW50IHNwZWNpZmllcyBcYGFyaWEtb3duc1xgIHBvaW50aW5nIHRvIHRoZSBsaXN0Ym94IG92ZXJsYXkuCiBXaGlsZSBhcmlhLW93bnMgaXMgbm90IHJlcXVpcmVkIGZvciB0aGUgQVJJQSAxLjIgXGByb2xlPSJjb21ib2JveCJcYCBpbnRlcmFjdGlvbiBwYXR0ZXJuLAogaXQgZml4ZXMgYW4gaXNzdWUgd2l0aCBWb2ljZU92ZXIgd2hlbiB0aGUgc2VsZWN0IGFwcGVhcnMgaW5zaWRlIG9mIGFuIFxgYXJpYS1tb2RlbD0idHJ1ZSJcYAogZWxlbWVudCAoZS5nLiBhIGRpYWxvZykuIFdpdGhvdXQgdGhpcyBcYGFyaWEtb3duc1xgLCB0aGUgXGBhcmlhLW1vZGFsXGAgb24gYSBkaWFsb2cgcHJldmVudHMKIFZvaWNlT3ZlciBmcm9tICJzZWVpbmciIHRoZSBzZWxlY3QncyBsaXN0Ym94IG92ZXJsYXkgZm9yIGFyaWEtYWN0aXZlZGVzY2VuZGFudC4KIFVzaW5nIFxgYXJpYS1vd25zXGAgcmUtcGFyZW50cyB0aGUgc2VsZWN0IG92ZXJsYXkgc28gdGhhdCBpdCB3b3JrcyBhZ2Fpbi4KIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy8yMDY5NAotLT4KPGRpdiBjZGstb3ZlcmxheS1vcmlnaW4KICAgICBbYXR0ci5hcmlhLW93bnNdPSJwYW5lbE9wZW4gPyBpZCArICctcGFuZWwnIDogbnVsbCIKICAgICBjbGFzcz0ibWF0LXNlbGVjdC10cmlnZ2VyIgogICAgIChjbGljayk9InRvZ2dsZSgpIgogICAgICNvcmlnaW49ImNka092ZXJsYXlPcmlnaW4iCiAgICAgI3RyaWdnZXI+CiAgPGRpdiBjbGFzcz0ibWF0LXNlbGVjdC12YWx1ZSIgW25nU3dpdGNoXT0iZW1wdHkiIFthdHRyLmlkXT0iX3ZhbHVlSWQiPgogICAgPHNwYW4gY2xhc3M9Im1hdC1zZWxlY3QtcGxhY2Vob2xkZXIgbWF0LXNlbGVjdC1taW4tbGluZSIgKm5nU3dpdGNoQ2FzZT0idHJ1ZSI+e3twbGFjZWhvbGRlcn19PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9Im1hdC1zZWxlY3QtdmFsdWUtdGV4dCIgKm5nU3dpdGNoQ2FzZT0iZmFsc2UiIFtuZ1N3aXRjaF09IiEhY3VzdG9tVHJpZ2dlciI+CiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtc2VsZWN0LW1pbi1saW5lIiAqbmdTd2l0Y2hEZWZhdWx0Pnt7dHJpZ2dlclZhbHVlfX08L3NwYW4+CiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0ibWF0LXNlbGVjdC10cmlnZ2VyIiAqbmdTd2l0Y2hDYXNlPSJ0cnVlIj48L25nLWNvbnRlbnQ+CiAgICA8L3NwYW4+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9Im1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlciI+PGRpdiBjbGFzcz0ibWF0LXNlbGVjdC1hcnJvdyI+PC9kaXY+PC9kaXY+CjwvZGl2PgoKPG5nLXRlbXBsYXRlCiAgY2RrLWNvbm5lY3RlZC1vdmVybGF5CiAgY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbgogIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcAogIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPSJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCIKICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3NdPSJfb3ZlcmxheVBhbmVsQ2xhc3MiCiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneV09Il9zY3JvbGxTdHJhdGVneSIKICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09Im9yaWdpbiIKICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPSJwYW5lbE9wZW4iCiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPSJfcG9zaXRpb25zIgogIFtjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGhdPSJfdHJpZ2dlclJlY3Q/LndpZHRoISIKICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFldPSJfb2Zmc2V0WSIKICAoYmFja2Ryb3BDbGljayk9ImNsb3NlKCkiCiAgKGF0dGFjaCk9Il9vbkF0dGFjaGVkKCkiCiAgKGRldGFjaCk9ImNsb3NlKCkiPgogIDxkaXYgY2xhc3M9Im1hdC1zZWxlY3QtcGFuZWwtd3JhcCIgW0B0cmFuc2Zvcm1QYW5lbFdyYXBdPgogICAgPGRpdgogICAgICAjcGFuZWwKICAgICAgcm9sZT0ibGlzdGJveCIKICAgICAgdGFiaW5kZXg9Ii0xIgogICAgICBjbGFzcz0ibWF0LXNlbGVjdC1wYW5lbCB7eyBfZ2V0UGFuZWxUaGVtZSgpIH19IgogICAgICBbYXR0ci5pZF09ImlkICsgJy1wYW5lbCciCiAgICAgIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT0ibXVsdGlwbGUiCiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwgfHwgbnVsbCIKICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iX2dldFBhbmVsQXJpYUxhYmVsbGVkYnkoKSIKICAgICAgW25nQ2xhc3NdPSJwYW5lbENsYXNzIgogICAgICBbQHRyYW5zZm9ybVBhbmVsXT0ibXVsdGlwbGUgPyAnc2hvd2luZy1tdWx0aXBsZScgOiAnc2hvd2luZyciCiAgICAgIChAdHJhbnNmb3JtUGFuZWwuZG9uZSk9Il9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW0ubmV4dCgkZXZlbnQudG9TdGF0ZSkiCiAgICAgIFtzdHlsZS50cmFuc2Zvcm1PcmlnaW5dPSJfdHJhbnNmb3JtT3JpZ2luIgogICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT0iX3RyaWdnZXJGb250U2l6ZSIKICAgICAgKGtleWRvd24pPSJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIj4KICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvbmctdGVtcGxhdGU+CmAsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwidGFiSW5kZXgiXSxlbmNhcHN1bGF0aW9uOkplLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxob3N0Ontyb2xlOiJjb21ib2JveCIsImFyaWEtYXV0b2NvbXBsZXRlIjoibm9uZSIsImFyaWEtaGFzcG9wdXAiOiJ0cnVlIixjbGFzczoibWF0LXNlbGVjdCIsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIudGFiaW5kZXhdIjoidGFiSW5kZXgiLCJbYXR0ci5hcmlhLWNvbnRyb2xzXSI6J3BhbmVsT3BlbiA/IGlkICsgIi1wYW5lbCIgOiBudWxsJywiW2F0dHIuYXJpYS1leHBhbmRlZF0iOiJwYW5lbE9wZW4iLCJbYXR0ci5hcmlhLWxhYmVsXSI6ImFyaWFMYWJlbCB8fCBudWxsIiwiW2F0dHIuYXJpYS1yZXF1aXJlZF0iOiJyZXF1aXJlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6ImVycm9yU3RhdGUiLCJbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSI6Il9hcmlhRGVzY3JpYmVkYnkgfHwgbnVsbCIsIlthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF0iOiJfZ2V0QXJpYUFjdGl2ZURlc2NlbmRhbnQoKSIsIltjbGFzcy5tYXQtc2VsZWN0LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1zZWxlY3QtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1zZWxlY3QtcmVxdWlyZWRdIjoicmVxdWlyZWQiLCJbY2xhc3MubWF0LXNlbGVjdC1lbXB0eV0iOiJlbXB0eSIsIltjbGFzcy5tYXQtc2VsZWN0LW11bHRpcGxlXSI6Im11bHRpcGxlIiwiKGtleWRvd24pIjoiX2hhbmRsZUtleWRvd24oJGV2ZW50KSIsIihmb2N1cykiOiJfb25Gb2N1cygpIiwiKGJsdXIpIjoiX29uQmx1cigpIn0sYW5pbWF0aW9uczpbSUkudHJhbnNmb3JtUGFuZWxXcmFwLElJLnRyYW5zZm9ybVBhbmVsXSxwcm92aWRlcnM6W3twcm92aWRlOmpyLHVzZUV4aXN0aW5nOmVyfSx7cHJvdmlkZTpJXyx1c2VFeGlzdGluZzplcn1dLHN0eWxlczpbYC5tYXQtc2VsZWN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7b3V0bGluZTpub25lfS5tYXQtc2VsZWN0LXRyaWdnZXJ7ZGlzcGxheTppbmxpbmUtdGFibGU7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXRyaWdnZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtc2VsZWN0LXZhbHVle2Rpc3BsYXk6dGFibGUtY2VsbDttYXgtd2lkdGg6MDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXNlbGVjdC12YWx1ZS10ZXh0e3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjUlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1oYXMtbGFiZWwgLm1hdC1zZWxlY3Q6bm90KC5tYXQtc2VsZWN0LWVtcHR5KSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZW1wdHkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtc2VsZWN0LWFycm93e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7bWFyZ2luOjAgNHB4fS5tYXQtc2VsZWN0LXBhbmVsLXdyYXB7ZmxleC1iYXNpczoxMDAlfS5tYXQtc2VsZWN0LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bWF4LWhlaWdodDoyNTZweDttaW4td2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjRweDtvdXRsaW5lOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNlbGVjdC1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXNlbGVjdC1wYW5lbCAubWF0LW9wdGdyb3VwLWxhYmVsLC5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9ue2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjNlbTtoZWlnaHQ6M2VtfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1zZWxlY3Q6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXh7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LXNlbGVjdCAubWF0LWZvcm0tZmllbGQtbGFiZWx7d2lkdGg6Y2FsYygxMDAlIC0gMThweCl9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNlbGVjdC1wbGFjZWhvbGRlcnt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lO2Rpc3BsYXk6YmxvY2t9Lm1hdC1zZWxlY3QtbWluLWxpbmU6ZW1wdHk6OmJlZm9yZXtjb250ZW50OiIgIjt3aGl0ZS1zcGFjZTpwcmU7d2lkdGg6MXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO29wYWNpdHk6MH0KYF19XX1dLG51bGwse29wdGlvbnM6W3t0eXBlOmxvLGFyZ3M6W0lpLHtkZXNjZW5kYW50czohMH1dfV0sb3B0aW9uR3JvdXBzOlt7dHlwZTpsbyxhcmdzOltYZyx7ZGVzY2VuZGFudHM6ITB9XX1dLGN1c3RvbVRyaWdnZXI6W3t0eXBlOktvLGFyZ3M6W3lrXX1dfSl9KSgpO3ZhciBFaT1jbGFzc3t9O0VpLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEVpKX07RWkuXHUwMjc1bW9kPXEoe3R5cGU6RWl9KTtFaS5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltnc3RdLGltcG9ydHM6W1tZLEJvLFNyLER0XSxCaSxncixTcixEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRWksW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1ksQm8sU3IsRHRdLGV4cG9ydHM6W0JpLGdyLGVyLGN1LFNyLER0XSxkZWNsYXJhdGlvbnM6W2VyLGN1XSxwcm92aWRlcnM6W2dzdF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoRWkse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltlcixjdV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWSxCbyxTcixEdF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bQmksZ3IsZXIsY3UsU3IsRHRdfX0pfSkoKTtmdW5jdGlvbiBtNHQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJzcGFuIiw1KSxBKCJjbGljayIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygpLiRpbXBsaWNpdDtyZXR1cm4gUygpLm9uQWN0aXZlUGx1Z2luU2VsZWN0aW9uKGksYS5pZCl9KSxUKDEpLGgoKX1pZihuJjIpe2xldCBlPVMoKS4kaW1wbGljaXQ7cmUoImRhdGEtcGx1Z2luLWlkIixlLmlkKSx4KDEpLGxlKCIgIixlLnRhYl9uYW1lLCIgIil9fWZ1bmN0aW9uIGY0dChuLHQpe2lmKG4mMSYmKHUoMCwibWF0LXRhYiIsMyksaygxLG00dCwyLDIsIm5nLXRlbXBsYXRlIiw0KSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQ7UCgiZGlzYWJsZWQiLCFlLmVuYWJsZWQpfX1mdW5jdGlvbiBwNHQobix0KXtpZihuJjEmJih1KDAsIm1hdC1vcHRpb24iLDkpLFQoMSksaCgpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0O1AoInZhbHVlIixlLmlkKSxyZSgiZGF0YS1wbHVnaW4taWQiLGUuaWQpLHgoMSksbGUoIiAiLGUudGFiX25hbWUsIiAiKX19ZnVuY3Rpb24gZDR0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwibWF0LWZvcm0tZmllbGQiLDYpLHUoMSwibWF0LWxhYmVsIiksVCgyLCJJbmFjdGl2ZSIpLGgoKSx1KDMsIm1hdC1zZWxlY3QiLDcpLEEoInNlbGVjdGlvbkNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkRpc2FibGVkUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZChpKX0pLGsoNCxwNHQsMiwzLCJtYXQtb3B0aW9uIiw4KSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO3goMyksUCgidmFsdWUiLGUuc2VsZWN0ZWRQbHVnaW4pLHgoMSksUCgibmdGb3JPZiIsZS5kaXNhYmxlZFBsdWdpbnMpfX12YXIgS189Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZD1uZXcgJH1nZXRBY3RpdmVQbHVnaW5JbmRleCgpe3JldHVybiB0aGlzLmFjdGl2ZVBsdWdpbnMuZmluZEluZGV4KCh7aWQ6dH0pPT50PT09dGhpcy5zZWxlY3RlZFBsdWdpbil9b25BY3RpdmVQbHVnaW5TZWxlY3Rpb24odCxlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkLmVtaXQoZSl9b25EaXNhYmxlZFBsdWdpblNlbGVjdGlvbkNoYW5nZWQodCl7dGhpcy5vblBsdWdpblNlbGVjdGlvbkNoYW5nZWQuZW1pdCh0LnZhbHVlKX19O0tfLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEtfKX07S18uXHUwMjc1Y21wPXooe3R5cGU6S18sc2VsZWN0b3JzOltbInBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5zOiJhY3RpdmVQbHVnaW5zIixkaXNhYmxlZFBsdWdpbnM6ImRpc2FibGVkUGx1Z2lucyIsc2VsZWN0ZWRQbHVnaW46InNlbGVjdGVkUGx1Z2luIn0sb3V0cHV0czp7b25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkOiJvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQifSxkZWNsczozLHZhcnM6Myxjb25zdHM6W1siYW5pbWF0aW9uRHVyYXRpb24iLCIxMDBtcyIsMSwiYWN0aXZlLXBsdWdpbi1saXN0IiwzLCJzZWxlY3RlZEluZGV4Il0sWzMsImRpc2FibGVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImZsb2F0TGFiZWwiLCJuZXZlciIsNCwibmdJZiJdLFszLCJkaXNhYmxlZCJdLFsibWF0LXRhYi1sYWJlbCIsIiJdLFsxLCJwbHVnaW4tbmFtZSIsMywiY2xpY2siXSxbImZsb2F0TGFiZWwiLCJuZXZlciJdLFszLCJ2YWx1ZSIsInNlbGVjdGlvbkNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJtYXQtdGFiLWdyb3VwIiwwKSxrKDEsZjR0LDIsMSwibWF0LXRhYiIsMSksaCgpLGsoMixkNHQsNSwyLCJtYXQtZm9ybS1maWVsZCIsMikpLHQmMiYmKFAoInNlbGVjdGVkSW5kZXgiLGUuZ2V0QWN0aXZlUGx1Z2luSW5kZXgoKSkseCgxKSxQKCJuZ0Zvck9mIixlLmFjdGl2ZVBsdWdpbnMpLHgoMSksUCgibmdJZiIsZS5kaXNhYmxlZFBsdWdpbnMubGVuZ3RoPjApKX0sZGlyZWN0aXZlczpbb2MsbW4sWHQsTHMsYW0sb2kscHMsZXIsSWldLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXg6MSAxIGF1dG87Zm9udC1zaXplOjE0cHg7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVufW1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjAgMDttYXJnaW4tdG9wOjVweDt3aWR0aDoxMzBweH1tYXQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCBtYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NTAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uYWN0aXZlLXBsdWdpbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1zZWxmOnN0cmV0Y2g7ZmxleDoxIDEgYXV0bztvdmVyZmxvdzpoaWRkZW59LnBsdWdpbi1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MCAxMnB4O3dpZHRoOjEwMCV9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saXN0IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVsLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxpbmt7Y29sb3I6aW5oZXJpdDtvcGFjaXR5Oi43fVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwubWF0LXRhYi1sYWJlbC1hY3RpdmUsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGluay5tYXQtdGFiLWxhYmVsLWFjdGl2ZXtvcGFjaXR5OjF9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjpjdXJyZW50Q29sb3J9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZHt2aXNpYmlsaXR5OmhpZGRlbn1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWRpc2FibGVke2Rpc3BsYXk6bm9uZX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItbGlzdCwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1oZWFkZXIsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWxzLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVse2hlaWdodDoxMDAlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWx7bWluLXdpZHRoOjQ4cHg7cGFkZGluZzowO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7aGVpZ2h0OjEwMCV9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlciAubWF0LXRhYi1saXN0e3BhZGRpbmc6MCAzNnB4fVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+OmZpcnN0LWNoaWxkLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWxhYmVsLWNvbnRhaW5lciwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj46bGFzdC1jaGlsZHtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPjpmaXJzdC1jaGlsZCwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj4ubWF0LXRhYi1sYWJlbC1jb250YWluZXJ7bGVmdDowfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Omxhc3QtY2hpbGQsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI+Lm1hdC10YWItbGFiZWwtY29udGFpbmVye3JpZ2h0OjB9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCBtYXQtdGFiLWhlYWRlcj4ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IG1hdC10YWItaGVhZGVyPi5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9ue2JhY2tncm91bmQtY29sb3I6I2VmNmMwMH0nXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhLXyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3BsdWdpbl9zZWxlY3Rvcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9wbHVnaW5fc2VsZWN0b3JfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHthY3RpdmVQbHVnaW5zOlt7dHlwZTpkfV0sZGlzYWJsZWRQbHVnaW5zOlt7dHlwZTpkfV0sc2VsZWN0ZWRQbHVnaW46W3t0eXBlOmR9XSxvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgdXN0PWN0KGczLG49Pk9iamVjdC5rZXlzKG4pLm1hcCh0PT5PYmplY3QuYXNzaWduKHt9LHtpZDp0fSxuW3RdKSkpLHU0dD1jdCh1c3Qsbj0+bi5maWx0ZXIodD0+IXQuZW5hYmxlZCkpLExwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVBsdWdpbiQ9dGhpcy5zdG9yZS5waXBlKHplKGVtKSksdGhpcy5wbHVnaW5zJD10aGlzLnN0b3JlLnBpcGUoemUodXN0KSksdGhpcy5kaXNhYmxlZFBsdWdpbnMkPXRoaXMuc3RvcmUucGlwZSh6ZSh1NHQpKX1vblBsdWdpblNlbGVjdGlvbkNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEtiKHtwbHVnaW46dH0pKX19O0xwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fExwKSh2KHN0KSl9O0xwLlx1MDI3NWNtcD16KHt0eXBlOkxwLHNlbGVjdG9yczpbWyJwbHVnaW4tc2VsZWN0b3IiXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywiYWN0aXZlUGx1Z2lucyIsImRpc2FibGVkUGx1Z2lucyIsInNlbGVjdGVkUGx1Z2luIiwib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50IiwwKSxBKCJvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksaCgpKSx0JjImJlAoImFjdGl2ZVBsdWdpbnMiLFEoMSwzLGUucGx1Z2lucyQpKSgiZGlzYWJsZWRQbHVnaW5zIixRKDIsNSxlLmRpc2FibGVkUGx1Z2lucyQpKSgic2VsZWN0ZWRQbHVnaW4iLFEoMyw3LGUuYWN0aXZlUGx1Z2luJCkpfSxkaXJlY3RpdmVzOltLX10scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTHAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJwbHVnaW4tc2VsZWN0b3IiLHRlbXBsYXRlOmAKICAgIDxwbHVnaW4tc2VsZWN0b3ItY29tcG9uZW50CiAgICAgIFthY3RpdmVQbHVnaW5zXT0icGx1Z2lucyQgfCBhc3luYyIKICAgICAgW2Rpc2FibGVkUGx1Z2luc109ImRpc2FibGVkUGx1Z2lucyQgfCBhc3luYyIKICAgICAgW3NlbGVjdGVkUGx1Z2luXT0iYWN0aXZlUGx1Z2luJCB8IGFzeW5jIgogICAgICAob25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkKT0ib25QbHVnaW5TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KSIKICAgID48L3BsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQ+CiAgYH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIF80dChuLHQpe312YXIgUFA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnJvbGU9ImRpYWxvZyIsdGhpcy5wYW5lbENsYXNzPSIiLHRoaXMuaGFzQmFja2Ryb3A9ITAsdGhpcy5iYWNrZHJvcENsYXNzPSIiLHRoaXMuZGlzYWJsZUNsb3NlPSExLHRoaXMud2lkdGg9IiIsdGhpcy5oZWlnaHQ9IiIsdGhpcy5tYXhXaWR0aD0iODB2dyIsdGhpcy5kYXRhPW51bGwsdGhpcy5hcmlhRGVzY3JpYmVkQnk9bnVsbCx0aGlzLmFyaWFMYWJlbGxlZEJ5PW51bGwsdGhpcy5hcmlhTGFiZWw9bnVsbCx0aGlzLmF1dG9Gb2N1cz0hMCx0aGlzLnJlc3RvcmVGb2N1cz0hMCx0aGlzLmNsb3NlT25OYXZpZ2F0aW9uPSEwfX07dmFyIGhzdD17ZGlhbG9nQ29udGFpbmVyOnhyKCJkaWFsb2dDb250YWluZXIiLFtoaSgidm9pZCwgZXhpdCIsTG4oe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDAuNykifSkpLGhpKCJlbnRlciIsTG4oe3RyYW5zZm9ybToibm9uZSJ9KSksYmkoIiogPT4gZW50ZXIiLERpKCIxNTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIsTG4oe3RyYW5zZm9ybToibm9uZSIsb3BhY2l0eToxfSkpKSxiaSgiKiA9PiB2b2lkLCAqID0+IGV4aXQiLERpKCI3NW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKSIsTG4oe29wYWNpdHk6MH0pKSldKX07ZnVuY3Rpb24gclkoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkIil9dmFyIGdPPWNsYXNzIGV4dGVuZHMgdHh7Y29uc3RydWN0b3IodCxlLG8saSxhLHIpe3N1cGVyKCksdGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2ZvY3VzVHJhcEZhY3Rvcnk9ZSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1vLHRoaXMuX2NvbmZpZz1hLHRoaXMuX2ZvY3VzTW9uaXRvcj1yLHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZD1uZXcgJCx0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1udWxsLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwsdGhpcy5hdHRhY2hEb21Qb3J0YWw9cz0+KHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJnJZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaERvbVBvcnRhbChzKSksdGhpcy5fYXJpYUxhYmVsbGVkQnk9YS5hcmlhTGFiZWxsZWRCeXx8bnVsbCx0aGlzLl9kb2N1bWVudD1pfV9pbml0aWFsaXplV2l0aEF0dGFjaGVkQ29udGVudCgpe3RoaXMuX3NldHVwRm9jdXNUcmFwKCksdGhpcy5fY2FwdHVyZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpLHRoaXMuX2ZvY3VzRGlhbG9nQ29udGFpbmVyKCl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe3JldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZyWSgpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJnJZKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpfV9yZWNhcHR1cmVGb2N1cygpe3RoaXMuX2NvbnRhaW5zRm9jdXMoKXx8KCF0aGlzLl9jb25maWcuYXV0b0ZvY3VzfHwhdGhpcy5fZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnQoKSkmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV90cmFwRm9jdXMoKXt0aGlzLl9jb25maWcuYXV0b0ZvY3VzP3RoaXMuX2ZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk6dGhpcy5fY29udGFpbnNGb2N1cygpfHx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1fcmVzdG9yZUZvY3VzKCl7bGV0IHQ9dGhpcy5fZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ7aWYodGhpcy5fY29uZmlnLnJlc3RvcmVGb2N1cyYmdCYmdHlwZW9mIHQuZm9jdXM9PSJmdW5jdGlvbiIpe2xldCBlPUUzKCksbz10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7KCFlfHxlPT09dGhpcy5fZG9jdW1lbnQuYm9keXx8ZT09PW98fG8uY29udGFpbnMoZSkpJiYodGhpcy5fZm9jdXNNb25pdG9yPyh0aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodCx0aGlzLl9jbG9zZUludGVyYWN0aW9uVHlwZSksdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGU9bnVsbCk6dC5mb2N1cygpKX10aGlzLl9mb2N1c1RyYXAmJnRoaXMuX2ZvY3VzVHJhcC5kZXN0cm95KCl9X3NldHVwRm9jdXNUcmFwKCl7dGhpcy5fZm9jdXNUcmFwPXRoaXMuX2ZvY3VzVHJhcEZhY3RvcnkuY3JlYXRlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCl9X2NhcHR1cmVQcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQoKXt0aGlzLl9kb2N1bWVudCYmKHRoaXMuX2VsZW1lbnRGb2N1c2VkQmVmb3JlRGlhbG9nV2FzT3BlbmVkPUUzKCkpfV9mb2N1c0RpYWxvZ0NvbnRhaW5lcigpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9X2NvbnRhaW5zRm9jdXMoKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT1FMygpO3JldHVybiB0PT09ZXx8dC5jb250YWlucyhlKX19O2dPLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGdPKSh2KEwpLHYoUWwpLHYoVHQpLHYoX3QsOCksdihQUCksdihsbikpfTtnTy5cdTAyNzVkaXI9dnQoe3R5cGU6Z08sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShfaSw3KSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLl9wb3J0YWxPdXRsZXQ9by5maXJzdCl9fSxmZWF0dXJlczpbYWVdfSk7Z08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpRbH0se3R5cGU6VHR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpQUH0se3R5cGU6bG59XTtnTy5wcm9wRGVjb3JhdG9ycz17X3BvcnRhbE91dGxldDpbe3R5cGU6SXQsYXJnczpbX2kse3N0YXRpYzohMH1dfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhnTyxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpRbH0se3R5cGU6VHR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpQUH0se3R5cGU6bG59XX0se19wb3J0YWxPdXRsZXQ6W3t0eXBlOkl0LGFyZ3M6W19pLHtzdGF0aWM6ITB9XX1dfSl9KSgpO3ZhciBCcD1jbGFzcyBleHRlbmRzIGdPe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zdGF0ZT0iZW50ZXIifV9vbkFuaW1hdGlvbkRvbmUoe3RvU3RhdGU6dCx0b3RhbFRpbWU6ZX0pe3Q9PT0iZW50ZXIiPyh0aGlzLl90cmFwRm9jdXMoKSx0aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7c3RhdGU6Im9wZW5lZCIsdG90YWxUaW1lOmV9KSk6dD09PSJleGl0IiYmKHRoaXMuX3Jlc3RvcmVGb2N1cygpLHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToiY2xvc2VkIix0b3RhbFRpbWU6ZX0pKX1fb25BbmltYXRpb25TdGFydCh7dG9TdGF0ZTp0LHRvdGFsVGltZTplfSl7dD09PSJlbnRlciI/dGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJvcGVuaW5nIix0b3RhbFRpbWU6ZX0pOih0PT09ImV4aXQifHx0PT09InZvaWQiKSYmdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJjbG9zaW5nIix0b3RhbFRpbWU6ZX0pfV9zdGFydEV4aXRBbmltYXRpb24oKXt0aGlzLl9zdGF0ZT0iZXhpdCIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9fTtCcC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKEJwKSkpKGV8fEJwKX19KCk7QnAuXHUwMjc1Y21wPXooe3R5cGU6QnAsc2VsZWN0b3JzOltbIm1hdC1kaWFsb2ctY29udGFpbmVyIl1dLGhvc3RBdHRyczpbInRhYmluZGV4IiwiLTEiLCJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwibWF0LWRpYWxvZy1jb250YWluZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmUXcoIkBkaWFsb2dDb250YWluZXIuc3RhcnQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLl9vbkFuaW1hdGlvblN0YXJ0KGkpfSkoIkBkaWFsb2dDb250YWluZXIuZG9uZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX29uQW5pbWF0aW9uRG9uZShpKX0pLHQmMiYmKHVsKCJpZCIsZS5faWQpLHJlKCJyb2xlIixlLl9jb25maWcucm9sZSkoImFyaWEtbGFiZWxsZWRieSIsZS5fY29uZmlnLmFyaWFMYWJlbD9udWxsOmUuX2FyaWFMYWJlbGxlZEJ5KSgiYXJpYS1sYWJlbCIsZS5fY29uZmlnLmFyaWFMYWJlbCkoImFyaWEtZGVzY3JpYmVkYnkiLGUuX2NvbmZpZy5hcmlhRGVzY3JpYmVkQnl8fG51bGwpLEt3KCJAZGlhbG9nQ29udGFpbmVyIixlLl9zdGF0ZSkpfSxmZWF0dXJlczpbYWVdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtQb3J0YWxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJmsoMCxfNHQsMCwwLCJuZy10ZW1wbGF0ZSIsMCl9LGRpcmVjdGl2ZXM6W19pXSxzdHlsZXM6W2AubWF0LWRpYWxvZy1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjI0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmF1dG87b3V0bGluZTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWRpYWxvZy1jb250ZW50e2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgLTI0cHg7cGFkZGluZzowIDI0cHg7bWF4LWhlaWdodDo2NXZoO292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Lm1hdC1kaWFsb2ctdGl0bGV7bWFyZ2luOjAgMCAyMHB4O2Rpc3BsYXk6YmxvY2t9Lm1hdC1kaWFsb2ctYWN0aW9uc3twYWRkaW5nOjhweCAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttaW4taGVpZ2h0OjUycHg7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Y29udGVudC1ib3g7bWFyZ2luLWJvdHRvbTotMjRweH0ubWF0LWRpYWxvZy1hY3Rpb25zW2FsaWduPWVuZF17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249Y2VudGVyXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1tZGMtYnV0dG9uLWJhc2UrLm1hdC1tZGMtYnV0dG9uLWJhc2V7bWFyZ2luLWxlZnQ6OHB4fVtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtYnV0dG9uLWJhc2UrLm1hdC1idXR0b24tYmFzZSxbZGlyPXJ0bF0gLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDo4cHh9CmBdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W2hzdC5kaWFsb2dDb250YWluZXJdfX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhCcCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1hdC1kaWFsb2ctY29udGFpbmVyIix0ZW1wbGF0ZTpgPG5nLXRlbXBsYXRlIGNka1BvcnRhbE91dGxldD48L25nLXRlbXBsYXRlPgpgLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuRGVmYXVsdCxhbmltYXRpb25zOltoc3QuZGlhbG9nQ29udGFpbmVyXSxob3N0OntjbGFzczoibWF0LWRpYWxvZy1jb250YWluZXIiLHRhYmluZGV4OiItMSIsImFyaWEtbW9kYWwiOiJ0cnVlIiwiW2lkXSI6Il9pZCIsIlthdHRyLnJvbGVdIjoiX2NvbmZpZy5yb2xlIiwiW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSI6Il9jb25maWcuYXJpYUxhYmVsID8gbnVsbCA6IF9hcmlhTGFiZWxsZWRCeSIsIlthdHRyLmFyaWEtbGFiZWxdIjoiX2NvbmZpZy5hcmlhTGFiZWwiLCJbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSI6Il9jb25maWcuYXJpYURlc2NyaWJlZEJ5IHx8IG51bGwiLCJbQGRpYWxvZ0NvbnRhaW5lcl0iOiJfc3RhdGUiLCIoQGRpYWxvZ0NvbnRhaW5lci5zdGFydCkiOiJfb25BbmltYXRpb25TdGFydCgkZXZlbnQpIiwiKEBkaWFsb2dDb250YWluZXIuZG9uZSkiOiJfb25BbmltYXRpb25Eb25lKCRldmVudCkifSxzdHlsZXM6W2AubWF0LWRpYWxvZy1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjI0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmF1dG87b3V0bGluZTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWRpYWxvZy1jb250ZW50e2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgLTI0cHg7cGFkZGluZzowIDI0cHg7bWF4LWhlaWdodDo2NXZoO292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Lm1hdC1kaWFsb2ctdGl0bGV7bWFyZ2luOjAgMCAyMHB4O2Rpc3BsYXk6YmxvY2t9Lm1hdC1kaWFsb2ctYWN0aW9uc3twYWRkaW5nOjhweCAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttaW4taGVpZ2h0OjUycHg7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Y29udGVudC1ib3g7bWFyZ2luLWJvdHRvbTotMjRweH0ubWF0LWRpYWxvZy1hY3Rpb25zW2FsaWduPWVuZF17anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5tYXQtZGlhbG9nLWFjdGlvbnNbYWxpZ249Y2VudGVyXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1idXR0b24tYmFzZSsubWF0LWJ1dHRvbi1iYXNlLC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1tZGMtYnV0dG9uLWJhc2UrLm1hdC1tZGMtYnV0dG9uLWJhc2V7bWFyZ2luLWxlZnQ6OHB4fVtkaXI9cnRsXSAubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtYnV0dG9uLWJhc2UrLm1hdC1idXR0b24tYmFzZSxbZGlyPXJ0bF0gLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LW1kYy1idXR0b24tYmFzZSsubWF0LW1kYy1idXR0b24tYmFzZXttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDo4cHh9CmBdfV19XSxudWxsLG51bGwpfSkoKTt2YXIgQzR0PTAsT2w9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG89YG1hdC1kaWFsb2ctJHtDNHQrK31gKXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fY29udGFpbmVySW5zdGFuY2U9ZSx0aGlzLmlkPW8sdGhpcy5kaXNhYmxlQ2xvc2U9dGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2NvbmZpZy5kaXNhYmxlQ2xvc2UsdGhpcy5fYWZ0ZXJPcGVuZWQ9bmV3IEp0LHRoaXMuX2FmdGVyQ2xvc2VkPW5ldyBKdCx0aGlzLl9iZWZvcmVDbG9zZWQ9bmV3IEp0LHRoaXMuX3N0YXRlPTAsZS5faWQ9byxlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZSh1ZShpPT5pLnN0YXRlPT09Im9wZW5lZCIpLENuKDEpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCksdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKX0pLGUuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5waXBlKHVlKGk9Pmkuc3RhdGU9PT0iY2xvc2VkIiksQ24oMSkpLnN1YnNjcmliZSgoKT0+e2NsZWFyVGltZW91dCh0aGlzLl9jbG9zZUZhbGxiYWNrVGltZW91dCksdGhpcy5fZmluaXNoRGlhbG9nQ2xvc2UoKX0pLHQuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9iZWZvcmVDbG9zZWQubmV4dCh0aGlzLl9yZXN1bHQpLHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KSx0aGlzLl9hZnRlckNsb3NlZC5jb21wbGV0ZSgpLHRoaXMuY29tcG9uZW50SW5zdGFuY2U9bnVsbCx0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKX0pLHQua2V5ZG93bkV2ZW50cygpLnBpcGUodWUoaT0+aS5rZXlDb2RlPT09MjcmJiF0aGlzLmRpc2FibGVDbG9zZSYmIVZhKGkpKSkuc3Vic2NyaWJlKGk9PntpLnByZXZlbnREZWZhdWx0KCksc1kodGhpcywia2V5Ym9hcmQiKX0pLHQuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKT0+e3RoaXMuZGlzYWJsZUNsb3NlP3RoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9yZWNhcHR1cmVGb2N1cygpOnNZKHRoaXMsIm1vdXNlIil9KX1jbG9zZSh0KXt0aGlzLl9yZXN1bHQ9dCx0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLnBpcGUodWUoZT0+ZS5zdGF0ZT09PSJjbG9zaW5nIiksQ24oMSkpLnN1YnNjcmliZShlPT57dGhpcy5fYmVmb3JlQ2xvc2VkLm5leHQodCksdGhpcy5fYmVmb3JlQ2xvc2VkLmNvbXBsZXRlKCksdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2hCYWNrZHJvcCgpLHRoaXMuX2Nsb3NlRmFsbGJhY2tUaW1lb3V0PXNldFRpbWVvdXQoKCk9PnRoaXMuX2ZpbmlzaERpYWxvZ0Nsb3NlKCksZS50b3RhbFRpbWUrMTAwKX0pLHRoaXMuX3N0YXRlPTEsdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX3N0YXJ0RXhpdEFuaW1hdGlvbigpfWFmdGVyT3BlbmVkKCl7cmV0dXJuIHRoaXMuX2FmdGVyT3BlbmVkfWFmdGVyQ2xvc2VkKCl7cmV0dXJuIHRoaXMuX2FmdGVyQ2xvc2VkfWJlZm9yZUNsb3NlZCgpe3JldHVybiB0aGlzLl9iZWZvcmVDbG9zZWR9YmFja2Ryb3BDbGljaygpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKX1rZXlkb3duRXZlbnRzKCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpfXVwZGF0ZVBvc2l0aW9uKHQpe2xldCBlPXRoaXMuX2dldFBvc2l0aW9uU3RyYXRlZ3koKTtyZXR1cm4gdCYmKHQubGVmdHx8dC5yaWdodCk/dC5sZWZ0P2UubGVmdCh0LmxlZnQpOmUucmlnaHQodC5yaWdodCk6ZS5jZW50ZXJIb3Jpem9udGFsbHkoKSx0JiYodC50b3B8fHQuYm90dG9tKT90LnRvcD9lLnRvcCh0LnRvcCk6ZS5ib3R0b20odC5ib3R0b20pOmUuY2VudGVyVmVydGljYWxseSgpLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzfXVwZGF0ZVNpemUodD0iIixlPSIiKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHt3aWR0aDp0LGhlaWdodDplfSksdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpLHRoaXN9YWRkUGFuZWxDbGFzcyh0KXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5hZGRQYW5lbENsYXNzKHQpLHRoaXN9cmVtb3ZlUGFuZWxDbGFzcyh0KXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5yZW1vdmVQYW5lbENsYXNzKHQpLHRoaXN9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fc3RhdGV9X2ZpbmlzaERpYWxvZ0Nsb3NlKCl7dGhpcy5fc3RhdGU9Mix0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKX1fZ2V0UG9zaXRpb25TdHJhdGVneSgpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLnBvc2l0aW9uU3RyYXRlZ3l9fTtmdW5jdGlvbiBzWShuLHQsZSl7cmV0dXJuIG4uX2NvbnRhaW5lckluc3RhbmNlIT09dm9pZCAwJiYobi5fY29udGFpbmVySW5zdGFuY2UuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPXQpLG4uY2xvc2UoZSl9dmFyICR2PW5ldyB5dCgiTWF0RGlhbG9nRGF0YSIpLGxZPW5ldyB5dCgibWF0LWRpYWxvZy1kZWZhdWx0LW9wdGlvbnMiKSxGST1uZXcgeXQoIm1hdC1kaWFsb2ctc2Nyb2xsLXN0cmF0ZWd5Iik7ZnVuY3Rpb24gTTR0KG4pe3JldHVybigpPT5uLnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKX12YXIgX3N0PXtwcm92aWRlOkZJLGRlcHM6W0duXSx1c2VGYWN0b3J5Ok00dH0seVA9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyxsLGMpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2RlZmF1bHRPcHRpb25zPW8sdGhpcy5fcGFyZW50RGlhbG9nPWksdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1hLHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yPXMsdGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZT1sLHRoaXMuX2RpYWxvZ0RhdGFUb2tlbj1jLHRoaXMuX29wZW5EaWFsb2dzQXRUaGlzTGV2ZWw9W10sdGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbD1uZXcgSnQsdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbD1uZXcgSnQsdGhpcy5fYXJpYUhpZGRlbkVsZW1lbnRzPW5ldyBNYXAsdGhpcy5hZnRlckFsbENsb3NlZD1CQygoKT0+dGhpcy5vcGVuRGlhbG9ncy5sZW5ndGg/dGhpcy5fZ2V0QWZ0ZXJBbGxDbG9zZWQoKTp0aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpLnBpcGUoU28odm9pZCAwKSkpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXJ9Z2V0IG9wZW5EaWFsb2dzKCl7cmV0dXJuIHRoaXMuX3BhcmVudERpYWxvZz90aGlzLl9wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3M6dGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbH1nZXQgYWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5fcGFyZW50RGlhbG9nP3RoaXMuX3BhcmVudERpYWxvZy5hZnRlck9wZW5lZDp0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsfV9nZXRBZnRlckFsbENsb3NlZCgpe2xldCB0PXRoaXMuX3BhcmVudERpYWxvZztyZXR1cm4gdD90Ll9nZXRBZnRlckFsbENsb3NlZCgpOnRoaXMuX2FmdGVyQWxsQ2xvc2VkQXRUaGlzTGV2ZWx9b3Blbih0LGUpe2lmKGU9YjR0KGUsdGhpcy5fZGVmYXVsdE9wdGlvbnN8fG5ldyBQUCksZS5pZCYmdGhpcy5nZXREaWFsb2dCeUlkKGUuaWQpJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoYERpYWxvZyB3aXRoIGlkICIke2UuaWR9IiBleGlzdHMgYWxyZWFkeS4gVGhlIGRpYWxvZyBpZCBtdXN0IGJlIHVuaXF1ZS5gKTtsZXQgbz10aGlzLl9jcmVhdGVPdmVybGF5KGUpLGk9dGhpcy5fYXR0YWNoRGlhbG9nQ29udGFpbmVyKG8sZSksYT10aGlzLl9hdHRhY2hEaWFsb2dDb250ZW50KHQsaSxvLGUpO3JldHVybiB0aGlzLm9wZW5EaWFsb2dzLmxlbmd0aHx8dGhpcy5faGlkZU5vbkRpYWxvZ0NvbnRlbnRGcm9tQXNzaXN0aXZlVGVjaG5vbG9neSgpLHRoaXMub3BlbkRpYWxvZ3MucHVzaChhKSxhLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpPT50aGlzLl9yZW1vdmVPcGVuRGlhbG9nKGEpKSx0aGlzLmFmdGVyT3BlbmVkLm5leHQoYSksaS5faW5pdGlhbGl6ZVdpdGhBdHRhY2hlZENvbnRlbnQoKSxhfWNsb3NlQWxsKCl7dGhpcy5fY2xvc2VEaWFsb2dzKHRoaXMub3BlbkRpYWxvZ3MpfWdldERpYWxvZ0J5SWQodCl7cmV0dXJuIHRoaXMub3BlbkRpYWxvZ3MuZmluZChlPT5lLmlkPT09dCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9jbG9zZURpYWxvZ3ModGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbCksdGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpLHRoaXMuX2FmdGVyT3BlbmVkQXRUaGlzTGV2ZWwuY29tcGxldGUoKX1fY3JlYXRlT3ZlcmxheSh0KXtsZXQgZT10aGlzLl9nZXRPdmVybGF5Q29uZmlnKHQpO3JldHVybiB0aGlzLl9vdmVybGF5LmNyZWF0ZShlKX1fZ2V0T3ZlcmxheUNvbmZpZyh0KXtsZXQgZT1uZXcgVl8oe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLHNjcm9sbFN0cmF0ZWd5OnQuc2Nyb2xsU3RyYXRlZ3l8fHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3MsaGFzQmFja2Ryb3A6dC5oYXNCYWNrZHJvcCxkaXJlY3Rpb246dC5kaXJlY3Rpb24sbWluV2lkdGg6dC5taW5XaWR0aCxtaW5IZWlnaHQ6dC5taW5IZWlnaHQsbWF4V2lkdGg6dC5tYXhXaWR0aCxtYXhIZWlnaHQ6dC5tYXhIZWlnaHQsZGlzcG9zZU9uTmF2aWdhdGlvbjp0LmNsb3NlT25OYXZpZ2F0aW9ufSk7cmV0dXJuIHQuYmFja2Ryb3BDbGFzcyYmKGUuYmFja2Ryb3BDbGFzcz10LmJhY2tkcm9wQ2xhc3MpLGV9X2F0dGFjaERpYWxvZ0NvbnRhaW5lcih0LGUpe2xldCBvPWUmJmUudmlld0NvbnRhaW5lclJlZiYmZS52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLGk9JGUuY3JlYXRlKHtwYXJlbnQ6b3x8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOlt7cHJvdmlkZTpQUCx1c2VWYWx1ZTplfV19KSxhPW5ldyBETSh0aGlzLl9kaWFsb2dDb250YWluZXJUeXBlLGUudmlld0NvbnRhaW5lclJlZixpLGUuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtyZXR1cm4gdC5hdHRhY2goYSkuaW5zdGFuY2V9X2F0dGFjaERpYWxvZ0NvbnRlbnQodCxlLG8saSl7bGV0IGE9bmV3IHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yKG8sZSxpLmlkKTtpZih0IGluc3RhbmNlb2Yga2UpZS5hdHRhY2hUZW1wbGF0ZVBvcnRhbChuZXcgJGwodCxudWxsLHskaW1wbGljaXQ6aS5kYXRhLGRpYWxvZ1JlZjphfSkpO2Vsc2V7bGV0IHI9dGhpcy5fY3JlYXRlSW5qZWN0b3IoaSxhLGUpLHM9ZS5hdHRhY2hDb21wb25lbnRQb3J0YWwobmV3IERNKHQsaS52aWV3Q29udGFpbmVyUmVmLHIpKTthLmNvbXBvbmVudEluc3RhbmNlPXMuaW5zdGFuY2V9cmV0dXJuIGEudXBkYXRlU2l6ZShpLndpZHRoLGkuaGVpZ2h0KS51cGRhdGVQb3NpdGlvbihpLnBvc2l0aW9uKSxhfV9jcmVhdGVJbmplY3Rvcih0LGUsbyl7bGV0IGk9dCYmdC52aWV3Q29udGFpbmVyUmVmJiZ0LnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3IsYT1be3Byb3ZpZGU6dGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZSx1c2VWYWx1ZTpvfSx7cHJvdmlkZTp0aGlzLl9kaWFsb2dEYXRhVG9rZW4sdXNlVmFsdWU6dC5kYXRhfSx7cHJvdmlkZTp0aGlzLl9kaWFsb2dSZWZDb25zdHJ1Y3Rvcix1c2VWYWx1ZTplfV07cmV0dXJuIHQuZGlyZWN0aW9uJiYoIWl8fCFpLmdldChOZSxudWxsLE5pLk9wdGlvbmFsKSkmJmEucHVzaCh7cHJvdmlkZTpOZSx1c2VWYWx1ZTp7dmFsdWU6dC5kaXJlY3Rpb24sY2hhbmdlOmRuKCl9fSksJGUuY3JlYXRlKHtwYXJlbnQ6aXx8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOmF9KX1fcmVtb3ZlT3BlbkRpYWxvZyh0KXtsZXQgZT10aGlzLm9wZW5EaWFsb2dzLmluZGV4T2YodCk7ZT4tMSYmKHRoaXMub3BlbkRpYWxvZ3Muc3BsaWNlKGUsMSksdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGh8fCh0aGlzLl9hcmlhSGlkZGVuRWxlbWVudHMuZm9yRWFjaCgobyxpKT0+e28/aS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIixvKTppLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKX0pLHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5jbGVhcigpLHRoaXMuX2dldEFmdGVyQWxsQ2xvc2VkKCkubmV4dCgpKSl9X2hpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKXtsZXQgdD10aGlzLl9vdmVybGF5Q29udGFpbmVyLmdldENvbnRhaW5lckVsZW1lbnQoKTtpZih0LnBhcmVudEVsZW1lbnQpe2xldCBlPXQucGFyZW50RWxlbWVudC5jaGlsZHJlbjtmb3IobGV0IG89ZS5sZW5ndGgtMTtvPi0xO28tLSl7bGV0IGk9ZVtvXTtpIT09dCYmaS5ub2RlTmFtZSE9PSJTQ1JJUFQiJiZpLm5vZGVOYW1lIT09IlNUWUxFIiYmIWkuaGFzQXR0cmlidXRlKCJhcmlhLWxpdmUiKSYmKHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5zZXQoaSxpLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSksaS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpKX19fV9jbG9zZURpYWxvZ3ModCl7bGV0IGU9dC5sZW5ndGg7Zm9yKDtlLS07KXRbZV0uY2xvc2UoKX19O3lQLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHlQKSh2KEduKSx2KCRlKSx2KHZvaWQgMCksdih2b2lkIDApLHYodHIpLHYodm9pZCAwKSx2KFhDKSx2KFhDKSx2KHl0KSl9O3lQLlx1MDI3NWRpcj12dCh7dHlwZTp5UH0pO3lQLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6R259LHt0eXBlOiRlfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnZvaWQgMH0se3R5cGU6dHJ9LHt0eXBlOnZvaWQgMH0se3R5cGU6WEN9LHt0eXBlOlhDfSx7dHlwZTp5dH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh5UCxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpHbn0se3R5cGU6JGV9LHt0eXBlOnZvaWQgMH0se3R5cGU6dm9pZCAwfSx7dHlwZTp0cn0se3R5cGU6dm9pZCAwfSx7dHlwZTpYQ30se3R5cGU6WEN9LHt0eXBlOnl0fV19LG51bGwpfSkoKTt2YXIgQ2k9Y2xhc3MgZXh0ZW5kcyB5UHtjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzKXtzdXBlcih0LGUsaSxyLHMsYSxPbCxCcCwkdil9fTtDaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxDaSkoSShHbiksSSgkZSksSShtciw4KSxJKGxZLDgpLEkoRkkpLEkoQ2ksMTIpLEkodHIpKX07Q2kuXHUwMjc1cHJvdj1QdCh7dG9rZW46Q2ksZmFjdG9yeTpDaS5cdTAyNzVmYWN9KTtDaS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkdufSx7dHlwZTokZX0se3R5cGU6bXIsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpQUCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W2xZXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltGSV19XX0se3R5cGU6Q2ksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6WW99XX0se3R5cGU6dHJ9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQ2ksW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6R259LHt0eXBlOiRlfSx7dHlwZTptcixkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOlBQLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbbFldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W0ZJXX1dfSx7dHlwZTpDaSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpZb31dfSx7dHlwZTp0cn1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gYjR0KG4sdCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSxuKX12YXIgTzR0PTAsbGM9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1vLHRoaXMudHlwZT0iYnV0dG9uIn1uZ09uSW5pdCgpe3RoaXMuZGlhbG9nUmVmfHwodGhpcy5kaWFsb2dSZWY9Q3N0KHRoaXMuX2VsZW1lbnRSZWYsdGhpcy5fZGlhbG9nLm9wZW5EaWFsb2dzKSl9bmdPbkNoYW5nZXModCl7bGV0IGU9dC5fbWF0RGlhbG9nQ2xvc2V8fHQuX21hdERpYWxvZ0Nsb3NlUmVzdWx0O2UmJih0aGlzLmRpYWxvZ1Jlc3VsdD1lLmN1cnJlbnRWYWx1ZSl9X29uQnV0dG9uQ2xpY2sodCl7c1kodGhpcy5kaWFsb2dSZWYsdC5zY3JlZW5YPT09MCYmdC5zY3JlZW5ZPT09MD8ia2V5Ym9hcmQiOiJtb3VzZSIsdGhpcy5kaWFsb2dSZXN1bHQpfX07bGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bGMpKHYoT2wsOCksdihMKSx2KENpKSl9O2xjLlx1MDI3NWRpcj12dCh7dHlwZTpsYyxzZWxlY3RvcnM6W1siIiwibWF0LWRpYWxvZy1jbG9zZSIsIiJdLFsiIiwibWF0RGlhbG9nQ2xvc2UiLCIiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gZS5fb25CdXR0b25DbGljayhpKX0pLHQmMiYmcmUoImFyaWEtbGFiZWwiLGUuYXJpYUxhYmVsfHxudWxsKSgidHlwZSIsZS50eXBlKX0saW5wdXRzOnt0eXBlOiJ0eXBlIixkaWFsb2dSZXN1bHQ6WyJtYXQtZGlhbG9nLWNsb3NlIiwiZGlhbG9nUmVzdWx0Il0sYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLF9tYXREaWFsb2dDbG9zZTpbIm1hdERpYWxvZ0Nsb3NlIiwiX21hdERpYWxvZ0Nsb3NlIl19LGV4cG9ydEFzOlsibWF0RGlhbG9nQ2xvc2UiXSxmZWF0dXJlczpbV2VdfSk7bGMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpPbCxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkx9LHt0eXBlOkNpfV07bGMucHJvcERlY29yYXRvcnM9e2FyaWFMYWJlbDpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sdHlwZTpbe3R5cGU6ZH1dLGRpYWxvZ1Jlc3VsdDpbe3R5cGU6ZCxhcmdzOlsibWF0LWRpYWxvZy1jbG9zZSJdfV0sX21hdERpYWxvZ0Nsb3NlOlt7dHlwZTpkLGFyZ3M6WyJtYXREaWFsb2dDbG9zZSJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhsYyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0LWRpYWxvZy1jbG9zZV0sIFttYXREaWFsb2dDbG9zZV0iLGV4cG9ydEFzOiJtYXREaWFsb2dDbG9zZSIsaG9zdDp7IihjbGljaykiOiJfb25CdXR0b25DbGljaygkZXZlbnQpIiwiW2F0dHIuYXJpYS1sYWJlbF0iOiJhcmlhTGFiZWwgfHwgbnVsbCIsIlthdHRyLnR5cGVdIjoidHlwZSJ9fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPbCxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkx9LHt0eXBlOkNpfV19LHt0eXBlOlt7dHlwZTpkfV0sZGlhbG9nUmVzdWx0Olt7dHlwZTpkLGFyZ3M6WyJtYXQtZGlhbG9nLWNsb3NlIl19XSxhcmlhTGFiZWw6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWwiXX1dLF9tYXREaWFsb2dDbG9zZTpbe3R5cGU6ZCxhcmdzOlsibWF0RGlhbG9nQ2xvc2UiXX1dfSl9KSgpO3ZhciBmZj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5fZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2RpYWxvZz1vLHRoaXMuaWQ9YG1hdC1kaWFsb2ctdGl0bGUtJHtPNHQrK31gfW5nT25Jbml0KCl7dGhpcy5fZGlhbG9nUmVmfHwodGhpcy5fZGlhbG9nUmVmPUNzdCh0aGlzLl9lbGVtZW50UmVmLHRoaXMuX2RpYWxvZy5vcGVuRGlhbG9ncykpLHRoaXMuX2RpYWxvZ1JlZiYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2xldCB0PXRoaXMuX2RpYWxvZ1JlZi5fY29udGFpbmVySW5zdGFuY2U7dCYmIXQuX2FyaWFMYWJlbGxlZEJ5JiYodC5fYXJpYUxhYmVsbGVkQnk9dGhpcy5pZCl9KX19O2ZmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGZmKSh2KE9sLDgpLHYoTCksdihDaSkpfTtmZi5cdTAyNzVkaXI9dnQoe3R5cGU6ZmYsc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIiIsIm1hdERpYWxvZ1RpdGxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWRpYWxvZy10aXRsZSJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZ1bCgiaWQiLGUuaWQpfSxpbnB1dHM6e2lkOiJpZCJ9LGV4cG9ydEFzOlsibWF0RGlhbG9nVGl0bGUiXX0pO2ZmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2wsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpMfSx7dHlwZTpDaX1dO2ZmLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZmYsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctdGl0bGVdLCBbbWF0RGlhbG9nVGl0bGVdIixleHBvcnRBczoibWF0RGlhbG9nVGl0bGUiLGhvc3Q6e2NsYXNzOiJtYXQtZGlhbG9nLXRpdGxlIiwiW2lkXSI6ImlkIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOk9sLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6TH0se3R5cGU6Q2l9XX0se2lkOlt7dHlwZTpkfV19KX0pKCk7dmFyIHBmPWNsYXNze307cGYuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cGYpfTtwZi5cdTAyNzVkaXI9dnQoe3R5cGU6cGYsc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctY29udGVudCIsIiJdLFsibWF0LWRpYWxvZy1jb250ZW50Il0sWyIiLCJtYXREaWFsb2dDb250ZW50IiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWRpYWxvZy1jb250ZW50Il19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocGYsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1kaWFsb2ctY29udGVudF0sIG1hdC1kaWFsb2ctY29udGVudCwgW21hdERpYWxvZ0NvbnRlbnRdIixob3N0OntjbGFzczoibWF0LWRpYWxvZy1jb250ZW50In19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBkZj1jbGFzc3t9O2RmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGRmKX07ZGYuXHUwMjc1ZGlyPXZ0KHt0eXBlOmRmLHNlbGVjdG9yczpbWyIiLCJtYXQtZGlhbG9nLWFjdGlvbnMiLCIiXSxbIm1hdC1kaWFsb2ctYWN0aW9ucyJdLFsiIiwibWF0RGlhbG9nQWN0aW9ucyIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1kaWFsb2ctYWN0aW9ucyJdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGRmLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttYXQtZGlhbG9nLWFjdGlvbnNdLCBtYXQtZGlhbG9nLWFjdGlvbnMsIFttYXREaWFsb2dBY3Rpb25zXSIsaG9zdDp7Y2xhc3M6Im1hdC1kaWFsb2ctYWN0aW9ucyJ9fV19XSxudWxsLG51bGwpfSkoKTtmdW5jdGlvbiBDc3Qobix0KXtsZXQgZT1uLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtmb3IoO2UmJiFlLmNsYXNzTGlzdC5jb250YWlucygibWF0LWRpYWxvZy1jb250YWluZXIiKTspZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGU/dC5maW5kKG89Pm8uaWQ9PT1lLmlkKTpudWxsfXZhciBucj1jbGFzc3t9O25yLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG5yKX07bnIuXHUwMjc1bW9kPXEoe3R5cGU6bnJ9KTtuci5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltDaSxfc3RdLGltcG9ydHM6W1tCbywkYSxEdF0sRHRdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5yLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltCbywkYSxEdF0sZXhwb3J0czpbQnAsbGMsZmYscGYsZGYsRHRdLGRlY2xhcmF0aW9uczpbQnAsbGMsZmYsZGYscGZdLHByb3ZpZGVyczpbQ2ksX3N0XSxlbnRyeUNvbXBvbmVudHM6W0JwXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChucix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0JwLGxjLGZmLGRmLHBmXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltCbywkYSxEdF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bQnAsbGMsZmYscGYsZGYsRHRdfX0pfSkoKTt2YXIgY1k9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9kb2N1bWVudD1lO2xldCBvPXRoaXMuX3RleHRhcmVhPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIiksaT1vLnN0eWxlO2kucG9zaXRpb249ImZpeGVkIixpLnRvcD1pLm9wYWNpdHk9IjAiLGkubGVmdD0iLTk5OWVtIixvLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksby52YWx1ZT10LHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyl9Y29weSgpe2xldCB0PXRoaXMuX3RleHRhcmVhLGU9ITE7dHJ5e2lmKHQpe2xldCBvPXRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7dC5zZWxlY3QoKSx0LnNldFNlbGVjdGlvblJhbmdlKDAsdC52YWx1ZS5sZW5ndGgpLGU9dGhpcy5fZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKSxvJiZvLmZvY3VzKCl9fWNhdGNoKG8pe31yZXR1cm4gZX1kZXN0cm95KCl7bGV0IHQ9dGhpcy5fdGV4dGFyZWE7dCYmKHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHRoaXMuX3RleHRhcmVhPXZvaWQgMCl9fTt2YXIgSl89Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jdW1lbnQ9dH1jb3B5KHQpe2xldCBlPXRoaXMuYmVnaW5Db3B5KHQpLG89ZS5jb3B5KCk7cmV0dXJuIGUuZGVzdHJveSgpLG99YmVnaW5Db3B5KHQpe3JldHVybiBuZXcgY1kodCx0aGlzLl9kb2N1bWVudCl9fTtKXy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxKXykoSShfdCkpfTtKXy5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBKXyhJKF90KSl9LHRva2VuOkpfLHByb3ZpZGVkSW46InJvb3QifSk7Sl8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhKXyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX1dfSxudWxsKX0pKCk7dmFyIFA0dD1uZXcgeXQoIkNES19DT1BZX1RPX0NMSVBCT0FSRF9DT05GSUciKSxtWT1QNHQsZ2Y9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX2NsaXBib2FyZD10LHRoaXMuX25nWm9uZT1lLHRoaXMudGV4dD0iIix0aGlzLmF0dGVtcHRzPTEsdGhpcy5jb3BpZWQ9bmV3ICQsdGhpcy5fcGVuZGluZz1uZXcgU2V0LG8mJm8uYXR0ZW1wdHMhPW51bGwmJih0aGlzLmF0dGVtcHRzPW8uYXR0ZW1wdHMpfWNvcHkodD10aGlzLmF0dGVtcHRzKXtpZih0PjEpe2xldCBlPXQsbz10aGlzLl9jbGlwYm9hcmQuYmVnaW5Db3B5KHRoaXMudGV4dCk7dGhpcy5fcGVuZGluZy5hZGQobyk7bGV0IGk9KCk9PntsZXQgYT1vLmNvcHkoKTshYSYmLS1lJiYhdGhpcy5fZGVzdHJveWVkP3RoaXMuX2N1cnJlbnRUaW1lb3V0PXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+c2V0VGltZW91dChpLDEpKToodGhpcy5fY3VycmVudFRpbWVvdXQ9bnVsbCx0aGlzLl9wZW5kaW5nLmRlbGV0ZShvKSxvLmRlc3Ryb3koKSx0aGlzLmNvcGllZC5lbWl0KGEpKX07aSgpfWVsc2UgdGhpcy5jb3BpZWQuZW1pdCh0aGlzLl9jbGlwYm9hcmQuY29weSh0aGlzLnRleHQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2N1cnJlbnRUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy5fY3VycmVudFRpbWVvdXQpLHRoaXMuX3BlbmRpbmcuZm9yRWFjaCh0PT50LmRlc3Ryb3koKSksdGhpcy5fcGVuZGluZy5jbGVhcigpLHRoaXMuX2Rlc3Ryb3llZD0hMH19O2dmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGdmKSh2KEpfKSx2KEN0KSx2KG1ZLDgpKX07Z2YuXHUwMjc1ZGlyPXZ0KHt0eXBlOmdmLHNlbGVjdG9yczpbWyIiLCJjZGtDb3B5VG9DbGlwYm9hcmQiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5jb3B5KCl9KX0saW5wdXRzOnt0ZXh0OlsiY2RrQ29weVRvQ2xpcGJvYXJkIiwidGV4dCJdLGF0dGVtcHRzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQXR0ZW1wdHMiLCJhdHRlbXB0cyJdfSxvdXRwdXRzOntjb3BpZWQ6ImNka0NvcHlUb0NsaXBib2FyZENvcGllZCJ9fSk7Z2YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpKX30se3R5cGU6Q3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W21ZXX1dfV07Z2YucHJvcERlY29yYXRvcnM9e3RleHQ6W3t0eXBlOmQsYXJnczpbImNka0NvcHlUb0NsaXBib2FyZCJdfV0sYXR0ZW1wdHM6W3t0eXBlOmQsYXJnczpbImNka0NvcHlUb0NsaXBib2FyZEF0dGVtcHRzIl19XSxjb3BpZWQ6W3t0eXBlOkIsYXJnczpbImNka0NvcHlUb0NsaXBib2FyZENvcGllZCJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhnZixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY2RrQ29weVRvQ2xpcGJvYXJkXSIsaG9zdDp7IihjbGljaykiOiJjb3B5KCkifX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Sl99LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOlttWV19XX1dfSx7dGV4dDpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkIl19XSxhdHRlbXB0czpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQXR0ZW1wdHMiXX1dLGNvcGllZDpbe3R5cGU6QixhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQ29waWVkIl19XX0pfSkoKTt2YXIgbXU9Y2xhc3N7fTttdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxtdSl9O211Llx1MDI3NW1vZD1xKHt0eXBlOm11fSk7bXUuXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhtdSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltnZl0sZXhwb3J0czpbZ2ZdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KG11LHtkZWNsYXJhdGlvbnM6W2dmXSxleHBvcnRzOltnZl19KX0pKCk7dmFyIHg0dD1bIioiXTtmdW5jdGlvbiBNc3Qobil7cmV0dXJuIEVycm9yKGBVbmFibGUgdG8gZmluZCBpY29uIHdpdGggdGhlIG5hbWUgIiR7bn0iYCl9ZnVuY3Rpb24gdjR0KCl7cmV0dXJuIEVycm9yKCJDb3VsZCBub3QgZmluZCBIdHRwQ2xpZW50IHByb3ZpZGVyIGZvciB1c2Ugd2l0aCBBbmd1bGFyIE1hdGVyaWFsIGljb25zLiBQbGVhc2UgaW5jbHVkZSB0aGUgSHR0cENsaWVudE1vZHVsZSBmcm9tIEBhbmd1bGFyL2NvbW1vbi9odHRwIGluIHlvdXIgYXBwIGltcG9ydHMuIil9ZnVuY3Rpb24gYnN0KG4pe3JldHVybiBFcnJvcihgVGhlIFVSTCBwcm92aWRlZCB0byBNYXRJY29uUmVnaXN0cnkgd2FzIG5vdCB0cnVzdGVkIGFzIGEgcmVzb3VyY2UgVVJMIHZpYSBBbmd1bGFyJ3MgRG9tU2FuaXRpemVyLiBBdHRlbXB0ZWQgVVJMIHdhcyAiJHtufSIuYCl9ZnVuY3Rpb24gT3N0KG4pe3JldHVybiBFcnJvcihgVGhlIGxpdGVyYWwgcHJvdmlkZWQgdG8gTWF0SWNvblJlZ2lzdHJ5IHdhcyBub3QgdHJ1c3RlZCBhcyBzYWZlIEhUTUwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplci4gQXR0ZW1wdGVkIGxpdGVyYWwgd2FzICIke259Ii5gKX12YXIgdlA9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMudXJsPXQsdGhpcy5zdmdUZXh0PWUsdGhpcy5vcHRpb25zPW99fSxQbD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLl9odHRwQ2xpZW50PXQsdGhpcy5fc2FuaXRpemVyPWUsdGhpcy5fZXJyb3JIYW5kbGVyPWksdGhpcy5fc3ZnSWNvbkNvbmZpZ3M9bmV3IE1hcCx0aGlzLl9pY29uU2V0Q29uZmlncz1uZXcgTWFwLHRoaXMuX2NhY2hlZEljb25zQnlVcmw9bmV3IE1hcCx0aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcz1uZXcgTWFwLHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcz1uZXcgTWFwLHRoaXMuX3Jlc29sdmVycz1bXSx0aGlzLl9kZWZhdWx0Rm9udFNldENsYXNzPSJtYXRlcmlhbC1pY29ucyIsdGhpcy5fZG9jdW1lbnQ9b31hZGRTdmdJY29uKHQsZSxvKXtyZXR1cm4gdGhpcy5hZGRTdmdJY29uSW5OYW1lc3BhY2UoIiIsdCxlLG8pfWFkZFN2Z0ljb25MaXRlcmFsKHQsZSxvKXtyZXR1cm4gdGhpcy5hZGRTdmdJY29uTGl0ZXJhbEluTmFtZXNwYWNlKCIiLHQsZSxvKX1hZGRTdmdJY29uSW5OYW1lc3BhY2UodCxlLG8saSl7cmV0dXJuIHRoaXMuX2FkZFN2Z0ljb25Db25maWcodCxlLG5ldyB2UChvLG51bGwsaSkpfWFkZFN2Z0ljb25SZXNvbHZlcih0KXtyZXR1cm4gdGhpcy5fcmVzb2x2ZXJzLnB1c2godCksdGhpc31hZGRTdmdJY29uTGl0ZXJhbEluTmFtZXNwYWNlKHQsZSxvLGkpe2xldCBhPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5IVE1MLG8pO2lmKCFhKXRocm93IE9zdChvKTtyZXR1cm4gdGhpcy5fYWRkU3ZnSWNvbkNvbmZpZyh0LGUsbmV3IHZQKCIiLGEsaSkpfWFkZFN2Z0ljb25TZXQodCxlKXtyZXR1cm4gdGhpcy5hZGRTdmdJY29uU2V0SW5OYW1lc3BhY2UoIiIsdCxlKX1hZGRTdmdJY29uU2V0TGl0ZXJhbCh0LGUpe3JldHVybiB0aGlzLmFkZFN2Z0ljb25TZXRMaXRlcmFsSW5OYW1lc3BhY2UoIiIsdCxlKX1hZGRTdmdJY29uU2V0SW5OYW1lc3BhY2UodCxlLG8pe3JldHVybiB0aGlzLl9hZGRTdmdJY29uU2V0Q29uZmlnKHQsbmV3IHZQKGUsbnVsbCxvKSl9YWRkU3ZnSWNvblNldExpdGVyYWxJbk5hbWVzcGFjZSh0LGUsbyl7bGV0IGk9dGhpcy5fc2FuaXRpemVyLnNhbml0aXplKEFzLkhUTUwsZSk7aWYoIWkpdGhyb3cgT3N0KGUpO3JldHVybiB0aGlzLl9hZGRTdmdJY29uU2V0Q29uZmlnKHQsbmV3IHZQKCIiLGksbykpfXJlZ2lzdGVyRm9udENsYXNzQWxpYXModCxlPXQpe3JldHVybiB0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXMuc2V0KHQsZSksdGhpc31jbGFzc05hbWVGb3JGb250QWxpYXModCl7cmV0dXJuIHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcy5nZXQodCl8fHR9c2V0RGVmYXVsdEZvbnRTZXRDbGFzcyh0KXtyZXR1cm4gdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz10LHRoaXN9Z2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpe3JldHVybiB0aGlzLl9kZWZhdWx0Rm9udFNldENsYXNzfWdldFN2Z0ljb25Gcm9tVXJsKHQpe2xldCBlPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5SRVNPVVJDRV9VUkwsdCk7aWYoIWUpdGhyb3cgYnN0KHQpO2xldCBvPXRoaXMuX2NhY2hlZEljb25zQnlVcmwuZ2V0KGUpO3JldHVybiBvP2RuKExJKG8pKTp0aGlzLl9sb2FkU3ZnSWNvbkZyb21Db25maWcobmV3IHZQKHQsbnVsbCkpLnBpcGUoYW4oaT0+dGhpcy5fY2FjaGVkSWNvbnNCeVVybC5zZXQoZSxpKSksRyhpPT5MSShpKSkpfWdldE5hbWVkU3ZnSWNvbih0LGU9IiIpe2xldCBvPVBzdChlLHQpLGk9dGhpcy5fc3ZnSWNvbkNvbmZpZ3MuZ2V0KG8pO2lmKGkpcmV0dXJuIHRoaXMuX2dldFN2Z0Zyb21Db25maWcoaSk7aWYoaT10aGlzLl9nZXRJY29uQ29uZmlnRnJvbVJlc29sdmVycyhlLHQpLGkpcmV0dXJuIHRoaXMuX3N2Z0ljb25Db25maWdzLnNldChvLGkpLHRoaXMuX2dldFN2Z0Zyb21Db25maWcoaSk7bGV0IGE9dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KGUpO3JldHVybiBhP3RoaXMuX2dldFN2Z0Zyb21JY29uU2V0Q29uZmlncyh0LGEpOkxDKE1zdChvKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9yZXNvbHZlcnM9W10sdGhpcy5fc3ZnSWNvbkNvbmZpZ3MuY2xlYXIoKSx0aGlzLl9pY29uU2V0Q29uZmlncy5jbGVhcigpLHRoaXMuX2NhY2hlZEljb25zQnlVcmwuY2xlYXIoKX1fZ2V0U3ZnRnJvbUNvbmZpZyh0KXtyZXR1cm4gdC5zdmdUZXh0P2RuKExJKHRoaXMuX3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpKSk6dGhpcy5fbG9hZFN2Z0ljb25Gcm9tQ29uZmlnKHQpLnBpcGUoRyhlPT5MSShlKSkpfV9nZXRTdmdGcm9tSWNvblNldENvbmZpZ3ModCxlKXtsZXQgbz10aGlzLl9leHRyYWN0SWNvbldpdGhOYW1lRnJvbUFueVNldCh0LGUpO2lmKG8pcmV0dXJuIGRuKG8pO2xldCBpPWUuZmlsdGVyKGE9PiFhLnN2Z1RleHQpLm1hcChhPT50aGlzLl9sb2FkU3ZnSWNvblNldEZyb21Db25maWcoYSkucGlwZShucyhyPT57bGV0IGw9YExvYWRpbmcgaWNvbiBzZXQgVVJMOiAke3RoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5SRVNPVVJDRV9VUkwsYS51cmwpfSBmYWlsZWQ6ICR7ci5tZXNzYWdlfWA7cmV0dXJuIHRoaXMuX2Vycm9ySGFuZGxlci5oYW5kbGVFcnJvcihuZXcgRXJyb3IobCkpLGRuKG51bGwpfSkpKTtyZXR1cm4gZ2EoaSkucGlwZShHKCgpPT57bGV0IGE9dGhpcy5fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxlKTtpZighYSl0aHJvdyBNc3QodCk7cmV0dXJuIGF9KSl9X2V4dHJhY3RJY29uV2l0aE5hbWVGcm9tQW55U2V0KHQsZSl7Zm9yKGxldCBvPWUubGVuZ3RoLTE7bz49MDtvLS0pe2xldCBpPWVbb107aWYoaS5zdmdUZXh0JiZpLnN2Z1RleHQuaW5kZXhPZih0KT4tMSl7bGV0IGE9dGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcoaSkscj10aGlzLl9leHRyYWN0U3ZnSWNvbkZyb21TZXQoYSx0LGkub3B0aW9ucyk7aWYocilyZXR1cm4gcn19cmV0dXJuIG51bGx9X2xvYWRTdmdJY29uRnJvbUNvbmZpZyh0KXtyZXR1cm4gdGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoYW4oZT0+dC5zdmdUZXh0PWUpLEcoKCk9PnRoaXMuX3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpKSl9X2xvYWRTdmdJY29uU2V0RnJvbUNvbmZpZyh0KXtyZXR1cm4gdC5zdmdUZXh0P2RuKG51bGwpOnRoaXMuX2ZldGNoSWNvbih0KS5waXBlKGFuKGU9PnQuc3ZnVGV4dD1lKSl9X2V4dHJhY3RTdmdJY29uRnJvbVNldCh0LGUsbyl7bGV0IGk9dC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7ZX0iXWApO2lmKCFpKXJldHVybiBudWxsO2xldCBhPWkuY2xvbmVOb2RlKCEwKTtpZihhLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKSxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0ic3ZnIilyZXR1cm4gdGhpcy5fc2V0U3ZnQXR0cmlidXRlcyhhLG8pO2lmKGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJzeW1ib2wiKXJldHVybiB0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKHRoaXMuX3RvU3ZnRWxlbWVudChhKSxvKTtsZXQgcj10aGlzLl9zdmdFbGVtZW50RnJvbVN0cmluZygiPHN2Zz48L3N2Zz4iKTtyZXR1cm4gci5hcHBlbmRDaGlsZChhKSx0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKHIsbyl9X3N2Z0VsZW1lbnRGcm9tU3RyaW5nKHQpe2xldCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO2UuaW5uZXJIVE1MPXQ7bGV0IG89ZS5xdWVyeVNlbGVjdG9yKCJzdmciKTtpZighbyl0aHJvdyBFcnJvcigiPHN2Zz4gdGFnIG5vdCBmb3VuZCIpO3JldHVybiBvfV90b1N2Z0VsZW1lbnQodCl7bGV0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcoIjxzdmc+PC9zdmc+Iiksbz10LmF0dHJpYnV0ZXM7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspe2xldHtuYW1lOmEsdmFsdWU6cn09b1tpXTthIT09ImlkIiYmZS5zZXRBdHRyaWJ1dGUoYSxyKX1mb3IobGV0IGk9MDtpPHQuY2hpbGROb2Rlcy5sZW5ndGg7aSsrKXQuY2hpbGROb2Rlc1tpXS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERSYmZS5hcHBlbmRDaGlsZCh0LmNoaWxkTm9kZXNbaV0uY2xvbmVOb2RlKCEwKSk7cmV0dXJuIGV9X3NldFN2Z0F0dHJpYnV0ZXModCxlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImZpdCIsIiIpLHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCIxMDAlIiksdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMTAwJSIpLHQuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIpLHQuc2V0QXR0cmlidXRlKCJmb2N1c2FibGUiLCJmYWxzZSIpLGUmJmUudmlld0JveCYmdC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLGUudmlld0JveCksdH1fZmV0Y2hJY29uKHQpe3ZhciBlO2xldHt1cmw6byxvcHRpb25zOml9PXQsYT0oZT1pPT1udWxsP3ZvaWQgMDppLndpdGhDcmVkZW50aWFscykhPT1udWxsJiZlIT09dm9pZCAwP2U6ITE7aWYoIXRoaXMuX2h0dHBDbGllbnQpdGhyb3cgdjR0KCk7aWYobz09bnVsbCl0aHJvdyBFcnJvcihgQ2Fubm90IGZldGNoIGljb24gZnJvbSBVUkwgIiR7b30iLmApO2xldCByPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShBcy5SRVNPVVJDRV9VUkwsbyk7aWYoIXIpdGhyb3cgYnN0KG8pO2xldCBzPXRoaXMuX2luUHJvZ3Jlc3NVcmxGZXRjaGVzLmdldChyKTtpZihzKXJldHVybiBzO2xldCBsPXRoaXMuX2h0dHBDbGllbnQuZ2V0KHIse3Jlc3BvbnNlVHlwZToidGV4dCIsd2l0aENyZWRlbnRpYWxzOmF9KS5waXBlKFJOKCgpPT50aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcy5kZWxldGUocikpLEJjKCkpO3JldHVybiB0aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcy5zZXQocixsKSxsfV9hZGRTdmdJY29uQ29uZmlnKHQsZSxvKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbkNvbmZpZ3Muc2V0KFBzdCh0LGUpLG8pLHRoaXN9X2FkZFN2Z0ljb25TZXRDb25maWcodCxlKXtsZXQgbz10aGlzLl9pY29uU2V0Q29uZmlncy5nZXQodCk7cmV0dXJuIG8/by5wdXNoKGUpOnRoaXMuX2ljb25TZXRDb25maWdzLnNldCh0LFtlXSksdGhpc31fc3ZnRWxlbWVudEZyb21Db25maWcodCl7aWYoIXQuc3ZnRWxlbWVudCl7bGV0IGU9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcodC5zdmdUZXh0KTt0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKGUsdC5vcHRpb25zKSx0LnN2Z0VsZW1lbnQ9ZX1yZXR1cm4gdC5zdmdFbGVtZW50fV9nZXRJY29uQ29uZmlnRnJvbVJlc29sdmVycyh0LGUpe2ZvcihsZXQgbz0wO288dGhpcy5fcmVzb2x2ZXJzLmxlbmd0aDtvKyspe2xldCBpPXRoaXMuX3Jlc29sdmVyc1tvXShlLHQpO2lmKGkpcmV0dXJuIFM0dChpKT9uZXcgdlAoaS51cmwsbnVsbCxpLm9wdGlvbnMpOm5ldyB2UChpLG51bGwpfX19O1BsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFBsKShJKEZyLDgpLEkoS3MpLEkoX3QsOCksSSh5YSkpfTtQbC5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBQbChJKEZyLDgpLEkoS3MpLEkoX3QsOCksSSh5YSkpfSx0b2tlbjpQbCxwcm92aWRlZEluOiJyb290In0pO1BsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6RnIsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpLc30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOnlhfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFBsLFt7dHlwZTpTdCxhcmdzOlt7cHJvdmlkZWRJbjoicm9vdCJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkZyLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6S3N9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTp5YX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gdzR0KG4sdCxlLG8saSl7cmV0dXJuIG58fG5ldyBQbCh0LGUsaSxvKX12YXIgd2JlPXtwcm92aWRlOlBsLGRlcHM6W1tuZXcgSCxuZXcgWW8sUGxdLFtuZXcgSCxGcl0sS3MseWEsW25ldyBILF90XV0sdXNlRmFjdG9yeTp3NHR9O2Z1bmN0aW9uIExJKG4pe3JldHVybiBuLmNsb25lTm9kZSghMCl9ZnVuY3Rpb24gUHN0KG4sdCl7cmV0dXJuIG4rIjoiK3R9ZnVuY3Rpb24gUzR0KG4pe3JldHVybiEhKG4udXJsJiZuLm9wdGlvbnMpfXZhciBSNHQ9RnMoY2xhc3N7Y29uc3RydWN0b3Iobil7dGhpcy5fZWxlbWVudFJlZj1ufX0pLGZZPW5ldyB5dCgibWF0LWljb24tbG9jYXRpb24iLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OkU0dH0pO2Z1bmN0aW9uIEU0dCgpe2xldCBuPXp3KF90KSx0PW4/bi5sb2NhdGlvbjpudWxsO3JldHVybntnZXRQYXRobmFtZTooKT0+dD90LnBhdGhuYW1lK3Quc2VhcmNoOiIifX12YXIgeXN0PVsiY2xpcC1wYXRoIiwiY29sb3ItcHJvZmlsZSIsInNyYyIsImN1cnNvciIsImZpbGwiLCJmaWx0ZXIiLCJtYXJrZXIiLCJtYXJrZXItc3RhcnQiLCJtYXJrZXItbWlkIiwibWFya2VyLWVuZCIsIm1hc2siLCJzdHJva2UiXSxrNHQ9bj0+YFske259XWAsTjR0PXlzdC5tYXAoazR0KS5qb2luKCIsICIpLFQ0dD0vXnVybFwoWyciXT8jKC4qPylbJyJdP1wpJC8sWGU9Y2xhc3MgZXh0ZW5kcyBSNHR7Y29uc3RydWN0b3IodCxlLG8saSxhKXtzdXBlcih0KSx0aGlzLl9pY29uUmVnaXN0cnk9ZSx0aGlzLl9sb2NhdGlvbj1pLHRoaXMuX2Vycm9ySGFuZGxlcj1hLHRoaXMuX2lubGluZT0hMSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPUVvLkVNUFRZLG98fHQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpfWdldCBpbmxpbmUoKXtyZXR1cm4gdGhpcy5faW5saW5lfXNldCBpbmxpbmUodCl7dGhpcy5faW5saW5lPVplKHQpfWdldCBzdmdJY29uKCl7cmV0dXJuIHRoaXMuX3N2Z0ljb259c2V0IHN2Z0ljb24odCl7dCE9PXRoaXMuX3N2Z0ljb24mJih0P3RoaXMuX3VwZGF0ZVN2Z0ljb24odCk6dGhpcy5fc3ZnSWNvbiYmdGhpcy5fY2xlYXJTdmdFbGVtZW50KCksdGhpcy5fc3ZnSWNvbj10KX1nZXQgZm9udFNldCgpe3JldHVybiB0aGlzLl9mb250U2V0fXNldCBmb250U2V0KHQpe2xldCBlPXRoaXMuX2NsZWFudXBGb250VmFsdWUodCk7ZSE9PXRoaXMuX2ZvbnRTZXQmJih0aGlzLl9mb250U2V0PWUsdGhpcy5fdXBkYXRlRm9udEljb25DbGFzc2VzKCkpfWdldCBmb250SWNvbigpe3JldHVybiB0aGlzLl9mb250SWNvbn1zZXQgZm9udEljb24odCl7bGV0IGU9dGhpcy5fY2xlYW51cEZvbnRWYWx1ZSh0KTtlIT09dGhpcy5fZm9udEljb24mJih0aGlzLl9mb250SWNvbj1lLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1fc3BsaXRJY29uTmFtZSh0KXtpZighdClyZXR1cm5bIiIsIiJdO2xldCBlPXQuc3BsaXQoIjoiKTtzd2l0Y2goZS5sZW5ndGgpe2Nhc2UgMTpyZXR1cm5bIiIsZVswXV07Y2FzZSAyOnJldHVybiBlO2RlZmF1bHQ6dGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiAiJHt0fSJgKX19bmdPbkluaXQoKXt0aGlzLl91cGRhdGVGb250SWNvbkNsYXNzZXMoKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXtsZXQgdD10aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXM7aWYodCYmdC5zaXplKXtsZXQgZT10aGlzLl9sb2NhdGlvbi5nZXRQYXRobmFtZSgpO2UhPT10aGlzLl9wcmV2aW91c1BhdGgmJih0aGlzLl9wcmV2aW91c1BhdGg9ZSx0aGlzLl9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyhlKSl9fW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpLHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyYmdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCl9X3VzaW5nRm9udEljb24oKXtyZXR1cm4hdGhpcy5zdmdJY29ufV9zZXRTdmdFbGVtZW50KHQpe3RoaXMuX2NsZWFyU3ZnRWxlbWVudCgpO2xldCBlPXQucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyllW2ldLnRleHRDb250ZW50Kz0iICI7bGV0IG89dGhpcy5fbG9jYXRpb24uZ2V0UGF0aG5hbWUoKTt0aGlzLl9wcmV2aW91c1BhdGg9byx0aGlzLl9jYWNoZUNoaWxkcmVuV2l0aEV4dGVybmFsUmVmZXJlbmNlcyh0KSx0aGlzLl9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyhvKSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodCl9X2NsZWFyU3ZnRWxlbWVudCgpe2xldCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxlPXQuY2hpbGROb2Rlcy5sZW5ndGg7Zm9yKHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyYmdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCk7ZS0tOyl7bGV0IG89dC5jaGlsZE5vZGVzW2VdOyhvLm5vZGVUeXBlIT09MXx8by5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09InN2ZyIpJiZ0LnJlbW92ZUNoaWxkKG8pfX1fdXBkYXRlRm9udEljb25DbGFzc2VzKCl7aWYoIXRoaXMuX3VzaW5nRm9udEljb24oKSlyZXR1cm47bGV0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5mb250U2V0P3RoaXMuX2ljb25SZWdpc3RyeS5jbGFzc05hbWVGb3JGb250QWxpYXModGhpcy5mb250U2V0KTp0aGlzLl9pY29uUmVnaXN0cnkuZ2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpO2UhPXRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzJiYodGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3MmJnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9wcmV2aW91c0ZvbnRTZXRDbGFzcyksZSYmdC5jbGFzc0xpc3QuYWRkKGUpLHRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzPWUpLHRoaXMuZm9udEljb24hPXRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyksdGhpcy5mb250SWNvbiYmdC5jbGFzc0xpc3QuYWRkKHRoaXMuZm9udEljb24pLHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcz10aGlzLmZvbnRJY29uKX1fY2xlYW51cEZvbnRWYWx1ZSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3QudHJpbSgpLnNwbGl0KCIgIilbMF06dH1fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXModCl7bGV0IGU9dGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzO2UmJmUuZm9yRWFjaCgobyxpKT0+e28uZm9yRWFjaChhPT57aS5zZXRBdHRyaWJ1dGUoYS5uYW1lLGB1cmwoJyR7dH0jJHthLnZhbHVlfScpYCl9KX0pfV9jYWNoZUNoaWxkcmVuV2l0aEV4dGVybmFsUmVmZXJlbmNlcyh0KXtsZXQgZT10LnF1ZXJ5U2VsZWN0b3JBbGwoTjR0KSxvPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcz10aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXN8fG5ldyBNYXA7Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspeXN0LmZvckVhY2goYT0+e2xldCByPWVbaV0scz1yLmdldEF0dHJpYnV0ZShhKSxsPXM/cy5tYXRjaChUNHQpOm51bGw7aWYobCl7bGV0IGM9by5nZXQocik7Y3x8KGM9W10sby5zZXQocixjKSksYy5wdXNoKHtuYW1lOmEsdmFsdWU6bFsxXX0pfX0pfV91cGRhdGVTdmdJY29uKHQpe2lmKHRoaXMuX3N2Z05hbWVzcGFjZT1udWxsLHRoaXMuX3N2Z05hbWU9bnVsbCx0aGlzLl9jdXJyZW50SWNvbkZldGNoLnVuc3Vic2NyaWJlKCksdCl7bGV0W2Usb109dGhpcy5fc3BsaXRJY29uTmFtZSh0KTtlJiYodGhpcy5fc3ZnTmFtZXNwYWNlPWUpLG8mJih0aGlzLl9zdmdOYW1lPW8pLHRoaXMuX2N1cnJlbnRJY29uRmV0Y2g9dGhpcy5faWNvblJlZ2lzdHJ5LmdldE5hbWVkU3ZnSWNvbihvLGUpLnBpcGUoQ24oMSkpLnN1YnNjcmliZShpPT50aGlzLl9zZXRTdmdFbGVtZW50KGkpLGk9PntsZXQgYT1gRXJyb3IgcmV0cmlldmluZyBpY29uICR7ZX06JHtvfSEgJHtpLm1lc3NhZ2V9YDt0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IobmV3IEVycm9yKGEpKX0pfX19O1hlLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFhlKSh2KEwpLHYoUGwpLFphKCJhcmlhLWhpZGRlbiIpLHYoZlkpLHYoeWEpKX07WGUuXHUwMjc1Y21wPXooe3R5cGU6WGUsc2VsZWN0b3JzOltbIm1hdC1pY29uIl1dLGhvc3RBdHRyczpbInJvbGUiLCJpbWciLDEsIm1hdC1pY29uIiwibm90cmFuc2xhdGUiXSxob3N0VmFyczo3LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmKHJlKCJkYXRhLW1hdC1pY29uLXR5cGUiLGUuX3VzaW5nRm9udEljb24oKT8iZm9udCI6InN2ZyIpKCJkYXRhLW1hdC1pY29uLW5hbWUiLGUuX3N2Z05hbWV8fGUuZm9udEljb24pKCJkYXRhLW1hdC1pY29uLW5hbWVzcGFjZSIsZS5fc3ZnTmFtZXNwYWNlfHxlLmZvbnRTZXQpLG1lKCJtYXQtaWNvbi1pbmxpbmUiLGUuaW5saW5lKSgibWF0LWljb24tbm8tY29sb3IiLGUuY29sb3IhPT0icHJpbWFyeSImJmUuY29sb3IhPT0iYWNjZW50IiYmZS5jb2xvciE9PSJ3YXJuIikpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsaW5saW5lOiJpbmxpbmUiLHN2Z0ljb246InN2Z0ljb24iLGZvbnRTZXQ6ImZvbnRTZXQiLGZvbnRJY29uOiJmb250SWNvbiJ9LGV4cG9ydEFzOlsibWF0SWNvbiJdLGZlYXR1cmVzOlthZV0sbmdDb250ZW50U2VsZWN0b3JzOng0dCxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKCksWW4oMCkpfSxzdHlsZXM6W2AubWF0LWljb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtkaXNwbGF5OmlubGluZS1ibG9jaztmaWxsOmN1cnJlbnRDb2xvcjtoZWlnaHQ6MjRweDt3aWR0aDoyNHB4fS5tYXQtaWNvbi5tYXQtaWNvbi1pbmxpbmV7Zm9udC1zaXplOmluaGVyaXQ7aGVpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDt3aWR0aDppbmhlcml0fVtkaXI9cnRsXSAubWF0LWljb24tcnRsLW1pcnJvcnt0cmFuc2Zvcm06c2NhbGUoLTEsIDEpfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb257ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbnttYXJnaW46YXV0b30KYF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7WGUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpQbH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmxpLGFyZ3M6WyJhcmlhLWhpZGRlbiJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2ZZXX1dfSx7dHlwZTp5YX1dO1hlLnByb3BEZWNvcmF0b3JzPXtpbmxpbmU6W3t0eXBlOmR9XSxzdmdJY29uOlt7dHlwZTpkfV0sZm9udFNldDpbe3R5cGU6ZH1dLGZvbnRJY29uOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhYZSxbe3R5cGU6RixhcmdzOlt7dGVtcGxhdGU6IjxuZy1jb250ZW50PjwvbmctY29udGVudD4iLHNlbGVjdG9yOiJtYXQtaWNvbiIsZXhwb3J0QXM6Im1hdEljb24iLGlucHV0czpbImNvbG9yIl0saG9zdDp7cm9sZToiaW1nIixjbGFzczoibWF0LWljb24gbm90cmFuc2xhdGUiLCJbYXR0ci5kYXRhLW1hdC1pY29uLXR5cGVdIjonX3VzaW5nRm9udEljb24oKSA/ICJmb250IiA6ICJzdmciJywiW2F0dHIuZGF0YS1tYXQtaWNvbi1uYW1lXSI6Il9zdmdOYW1lIHx8IGZvbnRJY29uIiwiW2F0dHIuZGF0YS1tYXQtaWNvbi1uYW1lc3BhY2VdIjoiX3N2Z05hbWVzcGFjZSB8fCBmb250U2V0IiwiW2NsYXNzLm1hdC1pY29uLWlubGluZV0iOiJpbmxpbmUiLCJbY2xhc3MubWF0LWljb24tbm8tY29sb3JdIjonY29sb3IgIT09ICJwcmltYXJ5IiAmJiBjb2xvciAhPT0gImFjY2VudCIgJiYgY29sb3IgIT09ICJ3YXJuIid9LGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHN0eWxlczpbYC5tYXQtaWNvbnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZpbGw6Y3VycmVudENvbG9yO2hlaWdodDoyNHB4O3dpZHRoOjI0cHh9Lm1hdC1pY29uLm1hdC1pY29uLWlubGluZXtmb250LXNpemU6aW5oZXJpdDtoZWlnaHQ6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0O3dpZHRoOmluaGVyaXR9W2Rpcj1ydGxdIC5tYXQtaWNvbi1ydGwtbWlycm9ye3RyYW5zZm9ybTpzY2FsZSgtMSwgMSl9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b24gLm1hdC1pY29ue21hcmdpbjphdXRvfQpgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6UGx9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsiYXJpYS1oaWRkZW4iXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltmWV19XX0se3R5cGU6eWF9XX0se2lubGluZTpbe3R5cGU6ZH1dLHN2Z0ljb246W3t0eXBlOmR9XSxmb250U2V0Olt7dHlwZTpkfV0sZm9udEljb246W3t0eXBlOmR9XX0pfSkoKTt2YXIgc2U9Y2xhc3N7fTtzZS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxzZSl9O3NlLlx1MDI3NW1vZD1xKHt0eXBlOnNlfSk7c2UuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tEdF0sRHRdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHNlLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltEdF0sZXhwb3J0czpbWGUsRHRdLGRlY2xhcmF0aW9uczpbWGVdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHNlLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bWGVdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0R0XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltYZSxEdF19fSl9KSgpO3ZhciAkXz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZ1JlZj10LHRoaXMudGVuc29yYm9hcmREb3REZXZVcmw9Imh0dHBzOi8vdGVuc29yYm9hcmQuZGV2Lz91dG1fc291cmNlPXRlbnNvcmJvYXJkIn1vbkNsb3NlKCl7dGhpcy5kaWFsb2dSZWYuY2xvc2UoKX1nZXRDb21tYW5kVGV4dCgpe2lmKHRoaXMubG9nZGlyKXtsZXQgdD10aGlzLmxvZ2Rpci5yZXBsYWNlKC8nL2csIidcXCcnIik7cmV0dXJuYHRlbnNvcmJvYXJkIGRldiB1cGxvYWQgLS1sb2dkaXIgXFwKICAgICdgK3QrIicifWVsc2UgcmV0dXJuInRlbnNvcmJvYXJkIGRldiB1cGxvYWQgLS1sb2dkaXIge2xvZ2Rpcn0ifX07JF8uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8JF8pKHYoT2wpKX07JF8uXHUwMjc1Y21wPXooe3R5cGU6JF8sc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50Il1dLGlucHV0czp7bG9nZGlyOiJsb2dkaXIifSxkZWNsczoyMSx2YXJzOjQsY29uc3RzOltbInRhcmdldCIsIl9ibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiLDEsImFuY2hvci10ZXh0IiwzLCJocmVmIl0sWzEsImNvbW1hbmQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiQ2xpY2sgdG8gY29weSB0aGUgY29tbWFuZCIsMSwiY29tbWFuZC1jb3B5IiwzLCJjZGtDb3B5VG9DbGlwYm9hcmQiXSxbInN2Z0ljb24iLCJjb250ZW50X2NvcHlfMjRweCJdLFsxLCJib3R0b20tYnV0dG9ucyJdLFsibWF0LWZsYXQtYnV0dG9uIiwiIiwxLCJjbG9zZS1idXR0b24iLDMsImNsaWNrIl0sWyJtYXQtZmxhdC1idXR0b24iLCIiLCJ0YXJnZXQiLCJfYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIiwxLCJsZWFybi1tb3JlLWJ1dHRvbiIsMywiaHJlZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiaDMiKSxUKDEsIlVwbG9hZCB0byBUZW5zb3JCb2FyZC5kZXYiKSxoKCksdSgyLCJwIiksdSgzLCJhIiwwKSxUKDQsIiBUZW5zb3JCb2FyZC5kZXYiKSxoKCksVCg1LGAgZW5hYmxlcyB5b3UgdG8gZWFzaWx5IGhvc3QsIHRyYWNrLCBhbmQgc2hhcmUgeW91ciBNTCBleHBlcmltZW50cyB3aXRoIGV2ZXJ5b25lLiBZb3UgY2FuIHNoYXJlIGEgbGluayB0byB0aGUgdXBsb2FkZWQgVGVuc29yQm9hcmQgaW4gcGFwZXJzLCBibG9nIHBvc3RzLCBhbmQgc29jaWFsIG1lZGlhLiBUaGlzIGNhbiBzaG93Y2FzZSB0aGUgcmVzdWx0cyBtb3JlIGVmZmVjdGl2ZWx5IGFuZCBoZWxwcyByZXByb2R1Y2liaWxpdHkuCmApLGgoKSx1KDYsInAiKSxUKDcsIlRvIHVwbG9hZCBhIGxvZ2RpciB0byBUZW5zb3JCb2FyZC5kZXYsIHJ1biB0aGUgY29tbWFuZDoiKSxoKCksdSg4LCJkaXYiLDEpLHUoOSwicHJlIiksdSgxMCwiY29kZSIpLFQoMTEpLGgoKSxoKCksdSgxMiwiYnV0dG9uIiwyKSxEKDEzLCJtYXQtaWNvbiIsMyksaCgpLGgoKSx1KDE0LCJwIiksVCgxNSxgIE9ubHkgY2VydGFpbiBwbHVnaW5zIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBVcGxvYWRlZCBUZW5zb3JCb2FyZHMgYXJlIHB1YmxpYyBhbmQgdmlzaWJsZSB0byBldmVyeW9uZTsgZG8gbm90IHVwbG9hZCBzZW5zaXRpdmUgZGF0YS4KYCksaCgpLHUoMTYsImRpdiIsNCksdSgxNywiYnV0dG9uIiw1KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkNsb3NlKCl9KSxUKDE4LCIgQ2xvc2UgIiksaCgpLHUoMTksImEiLDYpLFQoMjAsIiBMZWFybiBtb3JlICIpLGgoKSxoKCkpLHQmMiYmKHgoMyksV2koImhyZWYiLGUudGVuc29yYm9hcmREb3REZXZVcmwsV2YpLHgoOCksSWUoZS5nZXRDb21tYW5kVGV4dCgpKSx4KDEpLFAoImNka0NvcHlUb0NsaXBib2FyZCIsZS5nZXRDb21tYW5kVGV4dCgpKSx4KDcpLFdpKCJocmVmIixlLnRlbnNvcmJvYXJkRG90RGV2VXJsLFdmKSl9LGRpcmVjdGl2ZXM6W2ZuLGdmLFhlLGVsXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfWRpdltfbmdjb250ZW50LSVDT01QJV0sIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjoxNnB4IDB9W19uZ2hvc3QtJUNPTVAlXSA+IFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDowfVtfbmdob3N0LSVDT01QJV0gPiBbX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTowfWgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7bGluZS1oZWlnaHQ6MS41fXBbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Zm9udC1zaXplOjEycHg7bGluZS1oZWlnaHQ6MS41fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5hbmNob3ItdGV4dFtfbmdjb250ZW50LSVDT01QJV17dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiNmNWY2Zjc7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MnB4IDEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY29tbWFuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxfXByZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3cteDphdXRvfWNvZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNX0uYm90dG9tLWJ1dHRvbnNbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5jbG9zZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO21hcmdpbi1yaWdodDo4cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNsb3NlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jbG9zZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfVtfbmdob3N0LSVDT01QJV0gICAubGVhcm4tbW9yZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMxOTc2ZDI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5sZWFybi1tb3JlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzQyYTVmNX0nXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQygkXyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi90YmRldl91cGxvYWRfZGlhbG9nX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3RiZGV2X3VwbG9hZF9kaWFsb2dfY29tcG9uZW50LmNzcyJdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpPbH1dfSx7bG9nZGlyOlt7dHlwZTpkfV19KX0pKCk7dmFyIEQ0dD1jdCh1MyxuPT5uLmRhdGFfbG9jYXRpb24pLGZ1PWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmxvZ2RpciQ9dGhpcy5zdG9yZS5waXBlKHplKEQ0dCkpfX07ZnUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZnUpKHYoc3QpKX07ZnUuXHUwMjc1Y21wPXooe3R5cGU6ZnUsc2VsZWN0b3JzOltbInRiZGV2LXVwbG9hZC1kaWFsb2ciXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywibG9nZGlyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJ0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudCIsMCksWCgxLCJhc3luYyIpKSx0JjImJlAoImxvZ2RpciIsUSgxLDEsZS5sb2dkaXIkKSl9LGRpcmVjdGl2ZXM6WyRfXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246Mn0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhmdSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRiZGV2LXVwbG9hZC1kaWFsb2ciLHRlbXBsYXRlOmAKICAgIDx0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudAogICAgICBbbG9nZGlyXT0ibG9nZGlyJCB8IGFzeW5jIgogICAgPjwvdGJkZXYtdXBsb2FkLWRpYWxvZy1jb21wb25lbnQ+CiAgYH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIEk0dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImJ1dHRvbiIsMSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5vcGVuRGlhbG9nKCl9KSx1KDEsInNwYW4iLDIpLEQoMiwibWF0LWljb24iLDMpLFQoMywiIFVwbG9hZCAiKSxoKCksaCgpfX12YXIgejR0PVsibG9jYWxob3N0IiwiMTI3LjAuMC4xIl0sVnA9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLndpbmRvdz10LHRoaXMuZGlhbG9nPWUsdGhpcy5zaG93bj16NHQuaW5jbHVkZXModC5sb2NhdGlvbi5ob3N0bmFtZSl9b3BlbkRpYWxvZygpe3RoaXMuZGlhbG9nLm9wZW4oZnUse3dpZHRoOiI1NjBweCJ9KX19O1ZwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFZwKSh2KCJ3aW5kb3ciKSx2KENpKSl9O1ZwLlx1MDI3NWNtcD16KHt0eXBlOlZwLHNlbGVjdG9yczpbWyJ0YmRldi11cGxvYWQtYnV0dG9uIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZtZSgic2hvd24iLGUuc2hvd24pfSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1sibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwzLCJjbGljayIsNCwibmdJZiJdLFsibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwzLCJjbGljayJdLFsxLCJidXR0b24tY29udGVudHMiXSxbInN2Z0ljb24iLCJpbmZvX291dGxpbmVfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmaygwLEk0dCw0LDAsImJ1dHRvbiIsMCksdCYyJiZQKCJuZ0lmIixlLnNob3duKX0sZGlyZWN0aXZlczpbWHQsZm4sWGVdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXSAgIGJ1dHRvbi5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWJ9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgYnV0dG9uLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWY2YzAwfS5idXR0b24tY29udGVudHNbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6NnB4fSddfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFZwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGJkZXYtdXBsb2FkLWJ1dHRvbiIsdGVtcGxhdGVVcmw6Ii4vdGJkZXZfdXBsb2FkX2J1dHRvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi90YmRldl91cGxvYWRfYnV0dG9uX2NvbXBvbmVudC5jc3MiXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6V2luZG93LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbIndpbmRvdyJdfV19LHt0eXBlOkNpfV19LHtzaG93bjpbe3R5cGU6SGEsYXJnczpbImNsYXNzLnNob3duIl19XX0pfSkoKTt2YXIgRjR0PVsibWF0LW1lbnUtaXRlbSIsIiJdO2Z1bmN0aW9uIEw0dChuLHQpe24mMSYmKEtuKCksdSgwLCJzdmciLDIpLEQoMSwicG9seWdvbiIsMyksaCgpKX12YXIgd3N0PVsiKiJdO2Z1bmN0aW9uIEI0dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMCksQSgia2V5ZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5faGFuZGxlS2V5ZG93bihpKX0pKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLmNsb3NlZC5lbWl0KCJjbGljayIpfSkoIkB0cmFuc2Zvcm1NZW51LnN0YXJ0IixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLl9vbkFuaW1hdGlvblN0YXJ0KGkpfSkoIkB0cmFuc2Zvcm1NZW51LmRvbmUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkuX29uQW5pbWF0aW9uRG9uZShpKX0pLHUoMSwiZGl2IiwxKSxZbigyKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO1AoImlkIixlLnBhbmVsSWQpKCJuZ0NsYXNzIixlLl9jbGFzc0xpc3QpKCJAdHJhbnNmb3JtTWVudSIsZS5fcGFuZWxBbmltYXRpb25TdGF0ZSkscmUoImFyaWEtbGFiZWwiLGUuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IixlLmFyaWFMYWJlbGxlZGJ5fHxudWxsKSgiYXJpYS1kZXNjcmliZWRieSIsZS5hcmlhRGVzY3JpYmVkYnl8fG51bGwpfX12YXIgVjM9e3RyYW5zZm9ybU1lbnU6eHIoInRyYW5zZm9ybU1lbnUiLFtoaSgidm9pZCIsTG4oe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDAuOCkifSkpLGJpKCJ2b2lkID0+IGVudGVyIixEaSgiMTIwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiLExuKHtvcGFjaXR5OjEsdHJhbnNmb3JtOiJzY2FsZSgxKSJ9KSkpLGJpKCIqID0+IHZvaWQiLERpKCIxMDBtcyAyNW1zIGxpbmVhciIsTG4oe29wYWNpdHk6MH0pKSldKSxmYWRlSW5JdGVtczp4cigiZmFkZUluSXRlbXMiLFtoaSgic2hvd2luZyIsTG4oe29wYWNpdHk6MX0pKSxiaSgidm9pZCA9PiAqIixbTG4oe29wYWNpdHk6MH0pLERpKCI0MDBtcyAxMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSIpXSldKX0sUWJlPVYzLmZhZGVJbkl0ZW1zLEtiZT1WMy50cmFuc2Zvcm1NZW51O3ZhciB4az1uZXcgeXQoIk1hdE1lbnVDb250ZW50Iiksd1A9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyl7dGhpcy5fdGVtcGxhdGU9dCx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9ZSx0aGlzLl9hcHBSZWY9byx0aGlzLl9pbmplY3Rvcj1pLHRoaXMuX3ZpZXdDb250YWluZXJSZWY9YSx0aGlzLl9kb2N1bWVudD1yLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPXMsdGhpcy5fYXR0YWNoZWQ9bmV3IEp0fWF0dGFjaCh0PXt9KXt0aGlzLl9wb3J0YWx8fCh0aGlzLl9wb3J0YWw9bmV3ICRsKHRoaXMuX3RlbXBsYXRlLHRoaXMuX3ZpZXdDb250YWluZXJSZWYpKSx0aGlzLmRldGFjaCgpLHRoaXMuX291dGxldHx8KHRoaXMuX291dGxldD1uZXcgSTModGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLHRoaXMuX2FwcFJlZix0aGlzLl9pbmplY3RvcikpO2xldCBlPXRoaXMuX3RlbXBsYXRlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX291dGxldC5vdXRsZXRFbGVtZW50LGUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmJiZ0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9wb3J0YWwuYXR0YWNoKHRoaXMuX291dGxldCx0KSx0aGlzLl9hdHRhY2hlZC5uZXh0KCl9ZGV0YWNoKCl7dGhpcy5fcG9ydGFsLmlzQXR0YWNoZWQmJnRoaXMuX3BvcnRhbC5kZXRhY2goKX1uZ09uRGVzdHJveSgpe3RoaXMuX291dGxldCYmdGhpcy5fb3V0bGV0LmRpc3Bvc2UoKX19O3dQLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHdQKSh2KGtlKSx2KF9vKSx2KG5hKSx2KCRlKSx2KF9lKSx2KF90KSx2KFR0KSl9O3dQLlx1MDI3NWRpcj12dCh7dHlwZTp3UH0pO3dQLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a2V9LHt0eXBlOl9vfSx7dHlwZTpuYX0se3R5cGU6JGV9LHt0eXBlOl9lfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6VHR9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMod1AsW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a2V9LHt0eXBlOl9vfSx7dHlwZTpuYX0se3R5cGU6JGV9LHt0eXBlOl9lfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6VHR9XX0sbnVsbCl9KSgpO3ZhciBVcD1jbGFzcyBleHRlbmRzIHdQe307VXAuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihVcCkpKShlfHxVcCl9fSgpO1VwLlx1MDI3NWRpcj12dCh7dHlwZTpVcCxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXRNZW51Q29udGVudCIsIiJdXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOnhrLHVzZUV4aXN0aW5nOlVwfV0pLGFlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhVcCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJuZy10ZW1wbGF0ZVttYXRNZW51Q29udGVudF0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6eGssdXNlRXhpc3Rpbmc6VXB9XX1dfV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gVjR0KCl7dGhyb3cgRXJyb3IoYG1hdE1lbnVUcmlnZ2VyRm9yOiBtdXN0IHBhc3MgaW4gYW4gbWF0LW1lbnUgaW5zdGFuY2UuCgogICAgRXhhbXBsZToKICAgICAgPG1hdC1tZW51ICNtZW51PSJtYXRNZW51Ij48L21hdC1tZW51PgogICAgICA8YnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09Im1lbnUiPjwvYnV0dG9uPmApfWZ1bmN0aW9uIGo0dCgpe3Rocm93IEVycm9yKGB4UG9zaXRpb24gdmFsdWUgbXVzdCBiZSBlaXRoZXIgJ2JlZm9yZScgb3IgYWZ0ZXInLgogICAgICBFeGFtcGxlOiA8bWF0LW1lbnUgeFBvc2l0aW9uPSJiZWZvcmUiICNtZW51PSJtYXRNZW51Ij48L21hdC1tZW51PmApfWZ1bmN0aW9uIFU0dCgpe3Rocm93IEVycm9yKGB5UG9zaXRpb24gdmFsdWUgbXVzdCBiZSBlaXRoZXIgJ2Fib3ZlJyBvciBiZWxvdycuCiAgICAgIEV4YW1wbGU6IDxtYXQtbWVudSB5UG9zaXRpb249ImFib3ZlIiAjbWVudT0ibWF0TWVudSI+PC9tYXQtbWVudT5gKX1mdW5jdGlvbiBZNHQoKXt0aHJvdyBFcnJvcigibWF0TWVudVRyaWdnZXJGb3I6IG1lbnUgY2Fubm90IGNvbnRhaW4gaXRzIG93biB0cmlnZ2VyLiBBc3NpZ24gYSBtZW51IHRoYXQgaXMgbm90IGEgcGFyZW50IG9mIHRoZSB0cmlnZ2VyIG9yIG1vdmUgdGhlIHRyaWdnZXIgb3V0c2lkZSBvZiB0aGUgbWVudS4iKX12YXIgbHg9bmV3IHl0KCJNQVRfTUVOVV9QQU5FTCIpO3ZhciBHNHQ9dGwoVnIoY2xhc3N7fSkpLCRpPWNsYXNzIGV4dGVuZHMgRzR0e2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNNb25pdG9yPW8sdGhpcy5fcGFyZW50TWVudT1pLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWEsdGhpcy5yb2xlPSJtZW51aXRlbSIsdGhpcy5faG92ZXJlZD1uZXcgSnQsdGhpcy5fZm9jdXNlZD1uZXcgSnQsdGhpcy5faGlnaGxpZ2h0ZWQ9ITEsdGhpcy5fdHJpZ2dlcnNTdWJtZW51PSExLGkmJmkuYWRkSXRlbSYmaS5hZGRJdGVtKHRoaXMpfWZvY3VzKHQsZSl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0P3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9nZXRIb3N0RWxlbWVudCgpLHQsZSk6dGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cyhlKSx0aGlzLl9mb2N1c2VkLm5leHQodGhpcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCExKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX3BhcmVudE1lbnUmJnRoaXMuX3BhcmVudE1lbnUucmVtb3ZlSXRlbSYmdGhpcy5fcGFyZW50TWVudS5yZW1vdmVJdGVtKHRoaXMpLHRoaXMuX2hvdmVyZWQuY29tcGxldGUoKSx0aGlzLl9mb2N1c2VkLmNvbXBsZXRlKCl9X2dldFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1fY2hlY2tEaXNhYmxlZCh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfV9oYW5kbGVNb3VzZUVudGVyKCl7dGhpcy5faG92ZXJlZC5uZXh0KHRoaXMpfWdldExhYmVsKCl7dmFyIHQsZTtsZXQgbz10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvbmVOb2RlKCEwKSxpPW8ucXVlcnlTZWxlY3RvckFsbCgibWF0LWljb24sIC5tYXRlcmlhbC1pY29ucyIpO2ZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSsrKXtsZXQgcj1pW2FdOyh0PXIucGFyZW50Tm9kZSk9PT1udWxsfHx0PT09dm9pZCAwfHx0LnJlbW92ZUNoaWxkKHIpfXJldHVybigoZT1vLnRleHRDb250ZW50KT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUudHJpbSgpKXx8IiJ9X3NldEhpZ2hsaWdodGVkKHQpe3ZhciBlO3RoaXMuX2hpZ2hsaWdodGVkPXQsKGU9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYpPT09bnVsbHx8ZT09PXZvaWQgMHx8ZS5tYXJrRm9yQ2hlY2soKX19OyRpLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fCRpKSh2KEwpLHYoX3QpLHYobG4pLHYobHgsOCksdihUdCkpfTskaS5cdTAyNzVjbXA9eih7dHlwZTokaSxzZWxlY3RvcnM6W1siIiwibWF0LW1lbnUtaXRlbSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gZS5fY2hlY2tEaXNhYmxlZChpKX0pKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe3JldHVybiBlLl9oYW5kbGVNb3VzZUVudGVyKCl9KSx0JjImJihyZSgicm9sZSIsZS5yb2xlKSgidGFiaW5kZXgiLGUuX2dldFRhYkluZGV4KCkpKCJhcmlhLWRpc2FibGVkIixlLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJkaXNhYmxlZCIsZS5kaXNhYmxlZHx8bnVsbCksbWUoIm1hdC1tZW51LWl0ZW0iLCEwKSgibWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZCIsZS5faGlnaGxpZ2h0ZWQpKCJtYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlciIsZS5fdHJpZ2dlcnNTdWJtZW51KSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixyb2xlOiJyb2xlIn0sZXhwb3J0QXM6WyJtYXRNZW51SXRlbSJdLGZlYXR1cmVzOlthZV0sYXR0cnM6RjR0LG5nQ29udGVudFNlbGVjdG9yczp3c3QsZGVjbHM6Myx2YXJzOjMsY29uc3RzOltbIm1hdFJpcHBsZSIsIiIsMSwibWF0LW1lbnUtcmlwcGxlIiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZVRyaWdnZXIiXSxbImNsYXNzIiwibWF0LW1lbnUtc3VibWVudS1pY29uIiwidmlld0JveCIsIjAgMCA1IDEwIiwiZm9jdXNhYmxlIiwiZmFsc2UiLDQsIm5nSWYiXSxbInZpZXdCb3giLCIwIDAgNSAxMCIsImZvY3VzYWJsZSIsImZhbHNlIiwxLCJtYXQtbWVudS1zdWJtZW51LWljb24iXSxbInBvaW50cyIsIjAsMCA1LDUgMCwxMCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKCksWW4oMCksRCgxLCJkaXYiLDApLGsoMixMNHQsMiwwLCJzdmciLDEpKSx0JjImJih4KDEpLFAoIm1hdFJpcHBsZURpc2FibGVkIixlLmRpc2FibGVSaXBwbGV8fGUuZGlzYWJsZWQpKCJtYXRSaXBwbGVUcmlnZ2VyIixlLl9nZXRIb3N0RWxlbWVudCgpKSx4KDEpLFAoIm5nSWYiLGUuX3RyaWdnZXJzU3VibWVudSkpfSxkaXJlY3RpdmVzOltuaSxYdF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7JGkuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6bG59LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2x4XX0se3R5cGU6SH1dfSx7dHlwZTpUdH1dOyRpLnByb3BEZWNvcmF0b3JzPXtyb2xlOlt7dHlwZTpkfV0sX2NoZWNrRGlzYWJsZWQ6W3t0eXBlOnhvLGFyZ3M6WyJjbGljayIsWyIkZXZlbnQiXV19XSxfaGFuZGxlTW91c2VFbnRlcjpbe3R5cGU6eG8sYXJnczpbIm1vdXNlZW50ZXIiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoJGksW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJbbWF0LW1lbnUtaXRlbV0iLGV4cG9ydEFzOiJtYXRNZW51SXRlbSIsaW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIl0saG9zdDp7IlthdHRyLnJvbGVdIjoicm9sZSIsIltjbGFzcy5tYXQtbWVudS1pdGVtXSI6InRydWUiLCJbY2xhc3MubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZF0iOiJfaGlnaGxpZ2h0ZWQiLCJbY2xhc3MubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJdIjoiX3RyaWdnZXJzU3VibWVudSIsIlthdHRyLnRhYmluZGV4XSI6Il9nZXRUYWJJbmRleCgpIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuZGlzYWJsZWRdIjoiZGlzYWJsZWQgfHwgbnVsbCIsY2xhc3M6Im1hdC1mb2N1cy1pbmRpY2F0b3IifSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLGVuY2Fwc3VsYXRpb246SmUuTm9uZSx0ZW1wbGF0ZTpgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pgo8ZGl2IGNsYXNzPSJtYXQtbWVudS1yaXBwbGUiIG1hdFJpcHBsZQogICAgIFttYXRSaXBwbGVEaXNhYmxlZF09ImRpc2FibGVSaXBwbGUgfHwgZGlzYWJsZWQiCiAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJfZ2V0SG9zdEVsZW1lbnQoKSI+CjwvZGl2PgoKPHN2ZwogICpuZ0lmPSJfdHJpZ2dlcnNTdWJtZW51IgogIGNsYXNzPSJtYXQtbWVudS1zdWJtZW51LWljb24iCiAgdmlld0JveD0iMCAwIDUgMTAiCiAgZm9jdXNhYmxlPSJmYWxzZSI+PHBvbHlnb24gcG9pbnRzPSIwLDAgNSw1IDAsMTAiLz48L3N2Zz4KYH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOmxufSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltseF19LHt0eXBlOkh9XX0se3R5cGU6VHR9XX0se3JvbGU6W3t0eXBlOmR9XSxfY2hlY2tEaXNhYmxlZDpbe3R5cGU6eG8sYXJnczpbImNsaWNrIixbIiRldmVudCJdXX1dLF9oYW5kbGVNb3VzZUVudGVyOlt7dHlwZTp4byxhcmdzOlsibW91c2VlbnRlciJdfV19KX0pKCk7dmFyIGozPW5ldyB5dCgibWF0LW1lbnUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpXNHR9KTtmdW5jdGlvbiBXNHQoKXtyZXR1cm57b3ZlcmxhcFRyaWdnZXI6ITEseFBvc2l0aW9uOiJhZnRlciIseVBvc2l0aW9uOiJiZWxvdyIsYmFja2Ryb3BDbGFzczoiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AifX12YXIgcTR0PTAsanA9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9uZ1pvbmU9ZSx0aGlzLl9kZWZhdWx0T3B0aW9ucz1vLHRoaXMuX3hQb3NpdGlvbj10aGlzLl9kZWZhdWx0T3B0aW9ucy54UG9zaXRpb24sdGhpcy5feVBvc2l0aW9uPXRoaXMuX2RlZmF1bHRPcHRpb25zLnlQb3NpdGlvbix0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXM9bmV3IGZfLHRoaXMuX3RhYlN1YnNjcmlwdGlvbj1Fby5FTVBUWSx0aGlzLl9jbGFzc0xpc3Q9e30sdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZT0idm9pZCIsdGhpcy5fYW5pbWF0aW9uRG9uZT1uZXcgSnQsdGhpcy5vdmVybGF5UGFuZWxDbGFzcz10aGlzLl9kZWZhdWx0T3B0aW9ucy5vdmVybGF5UGFuZWxDbGFzc3x8IiIsdGhpcy5iYWNrZHJvcENsYXNzPXRoaXMuX2RlZmF1bHRPcHRpb25zLmJhY2tkcm9wQ2xhc3MsdGhpcy5fb3ZlcmxhcFRyaWdnZXI9dGhpcy5fZGVmYXVsdE9wdGlvbnMub3ZlcmxhcFRyaWdnZXIsdGhpcy5faGFzQmFja2Ryb3A9dGhpcy5fZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3AsdGhpcy5jbG9zZWQ9bmV3ICQsdGhpcy5jbG9zZT10aGlzLmNsb3NlZCx0aGlzLnBhbmVsSWQ9YG1hdC1tZW51LXBhbmVsLSR7cTR0Kyt9YH1nZXQgeFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3hQb3NpdGlvbn1zZXQgeFBvc2l0aW9uKHQpe3QhPT0iYmVmb3JlIiYmdCE9PSJhZnRlciImJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmajR0KCksdGhpcy5feFBvc2l0aW9uPXQsdGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKX1nZXQgeVBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3lQb3NpdGlvbn1zZXQgeVBvc2l0aW9uKHQpe3QhPT0iYWJvdmUiJiZ0IT09ImJlbG93IiYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZVNHQoKSx0aGlzLl95UG9zaXRpb249dCx0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpfWdldCBvdmVybGFwVHJpZ2dlcigpe3JldHVybiB0aGlzLl9vdmVybGFwVHJpZ2dlcn1zZXQgb3ZlcmxhcFRyaWdnZXIodCl7dGhpcy5fb3ZlcmxhcFRyaWdnZXI9WmUodCl9Z2V0IGhhc0JhY2tkcm9wKCl7cmV0dXJuIHRoaXMuX2hhc0JhY2tkcm9wfXNldCBoYXNCYWNrZHJvcCh0KXt0aGlzLl9oYXNCYWNrZHJvcD1aZSh0KX1zZXQgcGFuZWxDbGFzcyh0KXtsZXQgZT10aGlzLl9wcmV2aW91c1BhbmVsQ2xhc3M7ZSYmZS5sZW5ndGgmJmUuc3BsaXQoIiAiKS5mb3JFYWNoKG89Pnt0aGlzLl9jbGFzc0xpc3Rbb109ITF9KSx0aGlzLl9wcmV2aW91c1BhbmVsQ2xhc3M9dCx0JiZ0Lmxlbmd0aCYmKHQuc3BsaXQoIiAiKS5mb3JFYWNoKG89Pnt0aGlzLl9jbGFzc0xpc3Rbb109ITB9KSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lPSIiKX1nZXQgY2xhc3NMaXN0KCl7cmV0dXJuIHRoaXMucGFuZWxDbGFzc31zZXQgY2xhc3NMaXN0KHQpe3RoaXMucGFuZWxDbGFzcz10fW5nT25Jbml0KCl7dGhpcy5zZXRQb3NpdGlvbkNsYXNzZXMoKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl91cGRhdGVEaXJlY3REZXNjZW5kYW50cygpLHRoaXMuX2tleU1hbmFnZXI9bmV3IFd5KHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcykud2l0aFdyYXAoKS53aXRoVHlwZUFoZWFkKCkud2l0aEhvbWVBbmRFbmQoKSx0aGlzLl90YWJTdWJzY3JpcHRpb249dGhpcy5fa2V5TWFuYWdlci50YWJPdXQuc3Vic2NyaWJlKCgpPT50aGlzLmNsb3NlZC5lbWl0KCJ0YWIiKSksdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXMucGlwZShTbyh0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMpLHRpKHQ9PnluKC4uLnQubWFwKGU9PmUuX2ZvY3VzZWQpKSkpLnN1YnNjcmliZSh0PT50aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odCkpfW5nT25EZXN0cm95KCl7dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmRlc3Ryb3koKSx0aGlzLl90YWJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZC5jb21wbGV0ZSgpfV9ob3ZlcmVkKCl7cmV0dXJuIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzLnBpcGUoU28odGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSx0aShlPT55biguLi5lLm1hcChvPT5vLl9ob3ZlcmVkKSkpKX1hZGRJdGVtKHQpe31yZW1vdmVJdGVtKHQpe31faGFuZGxlS2V5ZG93bih0KXtsZXQgZT10LmtleUNvZGUsbz10aGlzLl9rZXlNYW5hZ2VyO3N3aXRjaChlKXtjYXNlIDI3OlZhKHQpfHwodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLnBhcmVudE1lbnUmJnRoaXMuZGlyZWN0aW9uPT09Imx0ciImJnRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKTticmVhaztjYXNlIDM5OnRoaXMucGFyZW50TWVudSYmdGhpcy5kaXJlY3Rpb249PT0icnRsIiYmdGhpcy5jbG9zZWQuZW1pdCgia2V5ZG93biIpO2JyZWFrO2RlZmF1bHQ6KGU9PT0zOHx8ZT09PTQwKSYmby5zZXRGb2N1c09yaWdpbigia2V5Ym9hcmQiKSxvLm9uS2V5ZG93bih0KX19Zm9jdXNGaXJzdEl0ZW0odD0icHJvZ3JhbSIpe3RoaXMubGF6eUNvbnRlbnQ/dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoQ24oMSkpLnN1YnNjcmliZSgoKT0+dGhpcy5fZm9jdXNGaXJzdEl0ZW0odCkpOnRoaXMuX2ZvY3VzRmlyc3RJdGVtKHQpfV9mb2N1c0ZpcnN0SXRlbSh0KXtsZXQgZT10aGlzLl9rZXlNYW5hZ2VyO2lmKGUuc2V0Rm9jdXNPcmlnaW4odCkuc2V0Rmlyc3RJdGVtQWN0aXZlKCksIWUuYWN0aXZlSXRlbSYmdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmxlbmd0aCl7bGV0IG89dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmZpcnN0Ll9nZXRIb3N0RWxlbWVudCgpLnBhcmVudEVsZW1lbnQ7Zm9yKDtvOylpZihvLmdldEF0dHJpYnV0ZSgicm9sZSIpPT09Im1lbnUiKXtvLmZvY3VzKCk7YnJlYWt9ZWxzZSBvPW8ucGFyZW50RWxlbWVudH19cmVzZXRBY3RpdmVJdGVtKCl7dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKX1zZXRFbGV2YXRpb24odCl7bGV0IGU9TWF0aC5taW4odGhpcy5fYmFzZUVsZXZhdGlvbit0LDI0KSxvPWAke3RoaXMuX2VsZXZhdGlvblByZWZpeH0ke2V9YCxpPU9iamVjdC5rZXlzKHRoaXMuX2NsYXNzTGlzdCkuZmluZChhPT5hLnN0YXJ0c1dpdGgodGhpcy5fZWxldmF0aW9uUHJlZml4KSk7KCFpfHxpPT09dGhpcy5fcHJldmlvdXNFbGV2YXRpb24pJiYodGhpcy5fcHJldmlvdXNFbGV2YXRpb24mJih0aGlzLl9jbGFzc0xpc3RbdGhpcy5fcHJldmlvdXNFbGV2YXRpb25dPSExKSx0aGlzLl9jbGFzc0xpc3Rbb109ITAsdGhpcy5fcHJldmlvdXNFbGV2YXRpb249byl9c2V0UG9zaXRpb25DbGFzc2VzKHQ9dGhpcy54UG9zaXRpb24sZT10aGlzLnlQb3NpdGlvbil7bGV0IG89dGhpcy5fY2xhc3NMaXN0O29bIm1hdC1tZW51LWJlZm9yZSJdPXQ9PT0iYmVmb3JlIixvWyJtYXQtbWVudS1hZnRlciJdPXQ9PT0iYWZ0ZXIiLG9bIm1hdC1tZW51LWFib3ZlIl09ZT09PSJhYm92ZSIsb1sibWF0LW1lbnUtYmVsb3ciXT1lPT09ImJlbG93In1fc3RhcnRBbmltYXRpb24oKXt0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlPSJlbnRlciJ9X3Jlc2V0QW5pbWF0aW9uKCl7dGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZT0idm9pZCJ9X29uQW5pbWF0aW9uRG9uZSh0KXt0aGlzLl9hbmltYXRpb25Eb25lLm5leHQodCksdGhpcy5faXNBbmltYXRpbmc9ITF9X29uQW5pbWF0aW9uU3RhcnQodCl7dGhpcy5faXNBbmltYXRpbmc9ITAsdC50b1N0YXRlPT09ImVudGVyIiYmdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXg9PT0wJiYodC5lbGVtZW50LnNjcm9sbFRvcD0wKX1fdXBkYXRlRGlyZWN0RGVzY2VuZGFudHMoKXt0aGlzLl9hbGxJdGVtcy5jaGFuZ2VzLnBpcGUoU28odGhpcy5fYWxsSXRlbXMpKS5zdWJzY3JpYmUodD0+e3RoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5yZXNldCh0LmZpbHRlcihlPT5lLl9wYXJlbnRNZW51PT09dGhpcykpLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5ub3RpZnlPbkNoYW5nZXMoKX0pfX07anAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8anApKHYoTCksdihDdCksdihqMykpfTtqcC5cdTAyNzVkaXI9dnQoe3R5cGU6anAsY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxlLG8pe2lmKHQmMSYmKGdvKG8seGssNSksZ28obywkaSw1KSxnbyhvLCRpLDQpKSx0JjIpe2xldCBpO0h0KGk9RnQoKSkmJihlLmxhenlDb250ZW50PWkuZmlyc3QpLEh0KGk9RnQoKSkmJihlLl9hbGxJdGVtcz1pKSxIdChpPUZ0KCkpJiYoZS5pdGVtcz1pKX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmcGUoa2UsNSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS50ZW1wbGF0ZVJlZj1vLmZpcnN0KX19LGlucHV0czp7YmFja2Ryb3BDbGFzczoiYmFja2Ryb3BDbGFzcyIseFBvc2l0aW9uOiJ4UG9zaXRpb24iLHlQb3NpdGlvbjoieVBvc2l0aW9uIixvdmVybGFwVHJpZ2dlcjoib3ZlcmxhcFRyaWdnZXIiLGhhc0JhY2tkcm9wOiJoYXNCYWNrZHJvcCIscGFuZWxDbGFzczpbImNsYXNzIiwicGFuZWxDbGFzcyJdLGNsYXNzTGlzdDoiY2xhc3NMaXN0IixhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLGFyaWFEZXNjcmliZWRieTpbImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhRGVzY3JpYmVkYnkiXX0sb3V0cHV0czp7Y2xvc2VkOiJjbG9zZWQiLGNsb3NlOiJjbG9zZSJ9fSk7anAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpDdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbajNdfV19XTtqcC5wcm9wRGVjb3JhdG9ycz17X2FsbEl0ZW1zOlt7dHlwZTpsbyxhcmdzOlskaSx7ZGVzY2VuZGFudHM6ITB9XX1dLGJhY2tkcm9wQ2xhc3M6W3t0eXBlOmR9XSxhcmlhTGFiZWw6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0seFBvc2l0aW9uOlt7dHlwZTpkfV0seVBvc2l0aW9uOlt7dHlwZTpkfV0sdGVtcGxhdGVSZWY6W3t0eXBlOkl0LGFyZ3M6W2tlXX1dLGl0ZW1zOlt7dHlwZTpsbyxhcmdzOlskaSx7ZGVzY2VuZGFudHM6ITF9XX1dLGxhenlDb250ZW50Olt7dHlwZTpLbyxhcmdzOlt4a119XSxvdmVybGFwVHJpZ2dlcjpbe3R5cGU6ZH1dLGhhc0JhY2tkcm9wOlt7dHlwZTpkfV0scGFuZWxDbGFzczpbe3R5cGU6ZCxhcmdzOlsiY2xhc3MiXX1dLGNsYXNzTGlzdDpbe3R5cGU6ZH1dLGNsb3NlZDpbe3R5cGU6Qn1dLGNsb3NlOlt7dHlwZTpCfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhqcCxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpDdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbajNdfV19XX0se2JhY2tkcm9wQ2xhc3M6W3t0eXBlOmR9XSxjbG9zZWQ6W3t0eXBlOkJ9XSxjbG9zZTpbe3R5cGU6Qn1dLHhQb3NpdGlvbjpbe3R5cGU6ZH1dLHlQb3NpdGlvbjpbe3R5cGU6ZH1dLG92ZXJsYXBUcmlnZ2VyOlt7dHlwZTpkfV0saGFzQmFja2Ryb3A6W3t0eXBlOmR9XSxwYW5lbENsYXNzOlt7dHlwZTpkLGFyZ3M6WyJjbGFzcyJdfV0sY2xhc3NMaXN0Olt7dHlwZTpkfV0sX2FsbEl0ZW1zOlt7dHlwZTpsbyxhcmdzOlskaSx7ZGVzY2VuZGFudHM6ITB9XX1dLGFyaWFMYWJlbDpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx0ZW1wbGF0ZVJlZjpbe3R5cGU6SXQsYXJnczpba2VdfV0saXRlbXM6W3t0eXBlOmxvLGFyZ3M6WyRpLHtkZXNjZW5kYW50czohMX1dfV0sbGF6eUNvbnRlbnQ6W3t0eXBlOktvLGFyZ3M6W3hrXX1dfSl9KSgpO3ZhciBocj1jbGFzcyBleHRlbmRzIGpwe2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LGUsbyksdGhpcy5fZWxldmF0aW9uUHJlZml4PSJtYXQtZWxldmF0aW9uLXoiLHRoaXMuX2Jhc2VFbGV2YXRpb249NH19O2hyLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGhyKSh2KEwpLHYoQ3QpLHYoajMpKX07aHIuXHUwMjc1Y21wPXooe3R5cGU6aHIsc2VsZWN0b3JzOltbIm1hdC1tZW51Il1dLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZyZSgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCkoImFyaWEtZGVzY3JpYmVkYnkiLG51bGwpfSxleHBvcnRBczpbIm1hdE1lbnUiXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOmx4LHVzZUV4aXN0aW5nOmhyfV0pLGFlXSxuZ0NvbnRlbnRTZWxlY3RvcnM6d3N0LGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJ0YWJpbmRleCIsIi0xIiwicm9sZSIsIm1lbnUiLDEsIm1hdC1tZW51LXBhbmVsIiwzLCJpZCIsIm5nQ2xhc3MiLCJrZXlkb3duIiwiY2xpY2siXSxbMSwibWF0LW1lbnUtY29udGVudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKCksaygwLEI0dCwzLDYsIm5nLXRlbXBsYXRlIikpfSxkaXJlY3RpdmVzOltqbl0sc3R5bGVzOltgbWF0LW1lbnV7ZGlzcGxheTpub25lfS5tYXQtbWVudS1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7bWF4LWhlaWdodDpjYWxjKDEwMHZoIC0gNDhweCk7Ym9yZGVyLXJhZGl1czo0cHg7b3V0bGluZTowO21pbi1oZWlnaHQ6NjRweH0ubWF0LW1lbnUtcGFuZWwubmctYW5pbWF0aW5ne3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1tZW51LWNvbnRlbnQ6bm90KDplbXB0eSl7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LW1lbnUtaXRlbXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1lbnUtaXRlbTo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVte3RleHQtYWxpZ246cmlnaHR9Lm1hdC1tZW51LWl0ZW0gLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW1lbnUtaXRlbSAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0gLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRde3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbXttYXJnaW4tdG9wOjFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVke291dGxpbmU6ZG90dGVkIDFweH0ubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJ7cGFkZGluZy1yaWdodDozMnB4fVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJ7cGFkZGluZy1yaWdodDoxNnB4O3BhZGRpbmctbGVmdDozMnB4fS5tYXQtbWVudS1zdWJtZW51LWljb257cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtyaWdodDoxNnB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO3dpZHRoOjVweDtoZWlnaHQ6MTBweDtmaWxsOmN1cnJlbnRDb2xvcn1bZGlyPXJ0bF0gLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntyaWdodDphdXRvO2xlZnQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKSBzY2FsZVgoLTEpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LXN1Ym1lbnUtaWNvbntmaWxsOkNhbnZhc1RleHR9YnV0dG9uLm1hdC1tZW51LWl0ZW17d2lkdGg6MTAwJX0ubWF0LW1lbnUtaXRlbSAubWF0LW1lbnUtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9CmBdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W1YzLnRyYW5zZm9ybU1lbnUsVjMuZmFkZUluSXRlbXNdfSxjaGFuZ2VEZXRlY3Rpb246MH0pO2hyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6Q3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2ozXX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGhyLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWF0LW1lbnUiLHRlbXBsYXRlOmA8bmctdGVtcGxhdGU+CiAgPGRpdgogICAgY2xhc3M9Im1hdC1tZW51LXBhbmVsIgogICAgW2lkXT0icGFuZWxJZCIKICAgIFtuZ0NsYXNzXT0iX2NsYXNzTGlzdCIKICAgIChrZXlkb3duKT0iX2hhbmRsZUtleWRvd24oJGV2ZW50KSIKICAgIChjbGljayk9ImNsb3NlZC5lbWl0KCdjbGljaycpIgogICAgW0B0cmFuc2Zvcm1NZW51XT0iX3BhbmVsQW5pbWF0aW9uU3RhdGUiCiAgICAoQHRyYW5zZm9ybU1lbnUuc3RhcnQpPSJfb25BbmltYXRpb25TdGFydCgkZXZlbnQpIgogICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPSJfb25BbmltYXRpb25Eb25lKCRldmVudCkiCiAgICB0YWJpbmRleD0iLTEiCiAgICByb2xlPSJtZW51IgogICAgW2F0dHIuYXJpYS1sYWJlbF09ImFyaWFMYWJlbCB8fCBudWxsIgogICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkgfHwgbnVsbCIKICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPSJhcmlhRGVzY3JpYmVkYnkgfHwgbnVsbCI+CiAgICA8ZGl2IGNsYXNzPSJtYXQtbWVudS1jb250ZW50Ij4KICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PgogICAgPC9kaXY+CiAgPC9kaXY+CjwvbmctdGVtcGxhdGU+CmAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsZXhwb3J0QXM6Im1hdE1lbnUiLGhvc3Q6eyJbYXR0ci5hcmlhLWxhYmVsXSI6Im51bGwiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoibnVsbCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoibnVsbCJ9LGFuaW1hdGlvbnM6W1YzLnRyYW5zZm9ybU1lbnUsVjMuZmFkZUluSXRlbXNdLHByb3ZpZGVyczpbe3Byb3ZpZGU6bHgsdXNlRXhpc3Rpbmc6aHJ9XSxzdHlsZXM6W2BtYXQtbWVudXtkaXNwbGF5Om5vbmV9Lm1hdC1tZW51LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA0OHB4KTtib3JkZXItcmFkaXVzOjRweDtvdXRsaW5lOjA7bWluLWhlaWdodDo2NHB4fS5tYXQtbWVudS1wYW5lbC5uZy1hbmltYXRpbmd7cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LW1lbnUtY29udGVudDpub3QoOmVtcHR5KXtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbWVudS1pdGVtey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWVudS1pdGVtOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW17dGV4dC1hbGlnbjpyaWdodH0ubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF17cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVte21hcmdpbi10b3A6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWR7b3V0bGluZTpkb3R0ZWQgMXB4fS5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcntwYWRkaW5nLXJpZ2h0OjMycHh9W2Rpcj1ydGxdIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcntwYWRkaW5nLXJpZ2h0OjE2cHg7cGFkZGluZy1sZWZ0OjMycHh9Lm1hdC1tZW51LXN1Ym1lbnUtaWNvbntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjE2cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSk7d2lkdGg6NXB4O2hlaWdodDoxMHB4O2ZpbGw6Y3VycmVudENvbG9yfVtkaXI9cnRsXSAubWF0LW1lbnUtc3VibWVudS1pY29ue3JpZ2h0OmF1dG87bGVmdDoxNnB4O3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpIHNjYWxlWCgtMSl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtc3VibWVudS1pY29ue2ZpbGw6Q2FudmFzVGV4dH1idXR0b24ubWF0LW1lbnUtaXRlbXt3aWR0aDoxMDAlfS5tYXQtbWVudS1pdGVtIC5tYXQtbWVudS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltqM119XX1dfSxudWxsKX0pKCk7dmFyIEJJPW5ldyB5dCgibWF0LW1lbnUtc2Nyb2xsLXN0cmF0ZWd5Iik7ZnVuY3Rpb24gWjR0KG4pe3JldHVybigpPT5uLnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfXZhciBTc3Q9e3Byb3ZpZGU6QkksZGVwczpbR25dLHVzZUZhY3Rvcnk6WjR0fSx4c3Q9OCx2c3Q9JG0oe3Bhc3NpdmU6ITB9KSx1Tz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzLGwpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9lbGVtZW50PWUsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1vLHRoaXMuX21lbnVJdGVtSW5zdGFuY2U9cix0aGlzLl9kaXI9cyx0aGlzLl9mb2N1c01vbml0b3I9bCx0aGlzLl9vdmVybGF5UmVmPW51bGwsdGhpcy5fbWVudU9wZW49ITEsdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249RW8uRU1QVFksdGhpcy5faG92ZXJTdWJzY3JpcHRpb249RW8uRU1QVFksdGhpcy5fbWVudUNsb3NlU3Vic2NyaXB0aW9uPUVvLkVNUFRZLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQ9Yz0+e25rKGMpfHwodGhpcy5fb3BlbmVkQnk9InRvdWNoIil9LHRoaXMuX29wZW5lZEJ5PXZvaWQgMCx0aGlzLl9hcmlhSGFzcG9wdXA9ITAsdGhpcy5yZXN0b3JlRm9jdXM9ITAsdGhpcy5tZW51T3BlbmVkPW5ldyAkLHRoaXMub25NZW51T3Blbj10aGlzLm1lbnVPcGVuZWQsdGhpcy5tZW51Q2xvc2VkPW5ldyAkLHRoaXMub25NZW51Q2xvc2U9dGhpcy5tZW51Q2xvc2VkLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PWksdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51PWEgaW5zdGFuY2VvZiBqcD9hOnZvaWQgMCxlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlVG91Y2hTdGFydCx2c3QpLHImJihyLl90cmlnZ2Vyc1N1Ym1lbnU9dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSl9Z2V0IF9hcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5tZW51T3Blbnx8bnVsbH1nZXQgX2FyaWFDb250cm9sKCl7cmV0dXJuIHRoaXMubWVudU9wZW4/dGhpcy5tZW51LnBhbmVsSWQ6bnVsbH1nZXQgX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcigpe3JldHVybiB0aGlzLm1lbnV9c2V0IF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IodCl7dGhpcy5tZW51PXR9Z2V0IG1lbnUoKXtyZXR1cm4gdGhpcy5fbWVudX1zZXQgbWVudSh0KXt0IT09dGhpcy5fbWVudSYmKHRoaXMuX21lbnU9dCx0aGlzLl9tZW51Q2xvc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0JiYodD09PXRoaXMuX3BhcmVudE1hdGVyaWFsTWVudSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZZNHQoKSx0aGlzLl9tZW51Q2xvc2VTdWJzY3JpcHRpb249dC5jbG9zZS5zdWJzY3JpYmUoZT0+e3RoaXMuX2Rlc3Ryb3lNZW51KGUpLChlPT09ImNsaWNrInx8ZT09PSJ0YWIiKSYmdGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51JiZ0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuY2xvc2VkLmVtaXQoZSl9KSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2NoZWNrTWVudSgpLHRoaXMuX2hhbmRsZUhvdmVyKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCksdGhpcy5fb3ZlcmxheVJlZj1udWxsKSx0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlVG91Y2hTdGFydCx2c3QpLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faG92ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1nZXQgbWVudU9wZW4oKXtyZXR1cm4gdGhpcy5fbWVudU9wZW59Z2V0IGRpcigpe3JldHVybiB0aGlzLl9kaXImJnRoaXMuX2Rpci52YWx1ZT09PSJydGwiPyJydGwiOiJsdHIifXRyaWdnZXJzU3VibWVudSgpe3JldHVybiEhKHRoaXMuX21lbnVJdGVtSW5zdGFuY2UmJnRoaXMuX3BhcmVudE1hdGVyaWFsTWVudSl9dG9nZ2xlTWVudSgpe3JldHVybiB0aGlzLl9tZW51T3Blbj90aGlzLmNsb3NlTWVudSgpOnRoaXMub3Blbk1lbnUoKX1vcGVuTWVudSgpe2lmKHRoaXMuX21lbnVPcGVuKXJldHVybjt0aGlzLl9jaGVja01lbnUoKTtsZXQgdD10aGlzLl9jcmVhdGVPdmVybGF5KCksZT10LmdldENvbmZpZygpO3RoaXMuX3NldFBvc2l0aW9uKGUucG9zaXRpb25TdHJhdGVneSksZS5oYXNCYWNrZHJvcD10aGlzLm1lbnUuaGFzQmFja2Ryb3A9PW51bGw/IXRoaXMudHJpZ2dlcnNTdWJtZW51KCk6dGhpcy5tZW51Lmhhc0JhY2tkcm9wLHQuYXR0YWNoKHRoaXMuX2dldFBvcnRhbCgpKSx0aGlzLm1lbnUubGF6eUNvbnRlbnQmJnRoaXMubWVudS5sYXp5Q29udGVudC5hdHRhY2godGhpcy5tZW51RGF0YSksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249dGhpcy5fbWVudUNsb3NpbmdBY3Rpb25zKCkuc3Vic2NyaWJlKCgpPT50aGlzLmNsb3NlTWVudSgpKSx0aGlzLl9pbml0TWVudSgpLHRoaXMubWVudSBpbnN0YW5jZW9mIGpwJiZ0aGlzLm1lbnUuX3N0YXJ0QW5pbWF0aW9uKCl9Y2xvc2VNZW51KCl7dGhpcy5tZW51LmNsb3NlLmVtaXQoKX1mb2N1cyh0LGUpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdD90aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5fZWxlbWVudCx0LGUpOnRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyhlKX11cGRhdGVQb3NpdGlvbigpe3ZhciB0Oyh0PXRoaXMuX292ZXJsYXlSZWYpPT09bnVsbHx8dD09PXZvaWQgMHx8dC51cGRhdGVQb3NpdGlvbigpfV9kZXN0cm95TWVudSh0KXtpZighdGhpcy5fb3ZlcmxheVJlZnx8IXRoaXMubWVudU9wZW4pcmV0dXJuO2xldCBlPXRoaXMubWVudTt0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksdGhpcy5yZXN0b3JlRm9jdXMmJih0PT09ImtleWRvd24ifHwhdGhpcy5fb3BlbmVkQnl8fCF0aGlzLnRyaWdnZXJzU3VibWVudSgpKSYmdGhpcy5mb2N1cyh0aGlzLl9vcGVuZWRCeSksdGhpcy5fb3BlbmVkQnk9dm9pZCAwLGUgaW5zdGFuY2VvZiBqcD8oZS5fcmVzZXRBbmltYXRpb24oKSxlLmxhenlDb250ZW50P2UuX2FuaW1hdGlvbkRvbmUucGlwZSh1ZShvPT5vLnRvU3RhdGU9PT0idm9pZCIpLENuKDEpLFBlKGUubGF6eUNvbnRlbnQuX2F0dGFjaGVkKSkuc3Vic2NyaWJlKHtuZXh0OigpPT5lLmxhenlDb250ZW50LmRldGFjaCgpLGNvbXBsZXRlOigpPT50aGlzLl9zZXRJc01lbnVPcGVuKCExKX0pOnRoaXMuX3NldElzTWVudU9wZW4oITEpKToodGhpcy5fc2V0SXNNZW51T3BlbighMSksZS5sYXp5Q29udGVudCYmZS5sYXp5Q29udGVudC5kZXRhY2goKSl9X2luaXRNZW51KCl7dGhpcy5tZW51LnBhcmVudE1lbnU9dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnU6dm9pZCAwLHRoaXMubWVudS5kaXJlY3Rpb249dGhpcy5kaXIsdGhpcy5fc2V0TWVudUVsZXZhdGlvbigpLHRoaXMubWVudS5mb2N1c0ZpcnN0SXRlbSh0aGlzLl9vcGVuZWRCeXx8InByb2dyYW0iKSx0aGlzLl9zZXRJc01lbnVPcGVuKCEwKX1fc2V0TWVudUVsZXZhdGlvbigpe2lmKHRoaXMubWVudS5zZXRFbGV2YXRpb24pe2xldCB0PTAsZT10aGlzLm1lbnUucGFyZW50TWVudTtmb3IoO2U7KXQrKyxlPWUucGFyZW50TWVudTt0aGlzLm1lbnUuc2V0RWxldmF0aW9uKHQpfX1fc2V0SXNNZW51T3Blbih0KXt0aGlzLl9tZW51T3Blbj10LHRoaXMuX21lbnVPcGVuP3RoaXMubWVudU9wZW5lZC5lbWl0KCk6dGhpcy5tZW51Q2xvc2VkLmVtaXQoKSx0aGlzLnRyaWdnZXJzU3VibWVudSgpJiZ0aGlzLl9tZW51SXRlbUluc3RhbmNlLl9zZXRIaWdobGlnaHRlZCh0KX1fY2hlY2tNZW51KCl7IXRoaXMubWVudSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZWNHQoKX1fY3JlYXRlT3ZlcmxheSgpe2lmKCF0aGlzLl9vdmVybGF5UmVmKXtsZXQgdD10aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7dGhpcy5fc3Vic2NyaWJlVG9Qb3NpdGlvbnModC5wb3NpdGlvblN0cmF0ZWd5KSx0aGlzLl9vdmVybGF5UmVmPXRoaXMuX292ZXJsYXkuY3JlYXRlKHQpLHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgpfXJldHVybiB0aGlzLl9vdmVybGF5UmVmfV9nZXRPdmVybGF5Q29uZmlnKCl7cmV0dXJuIG5ldyBWXyh7cG9zaXRpb25TdHJhdGVneTp0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50KS53aXRoTG9ja2VkUG9zaXRpb24oKS53aXRoR3Jvd0FmdGVyT3BlbigpLndpdGhUcmFuc2Zvcm1PcmlnaW5PbigiLm1hdC1tZW51LXBhbmVsLCAubWF0LW1kYy1tZW51LXBhbmVsIiksYmFja2Ryb3BDbGFzczp0aGlzLm1lbnUuYmFja2Ryb3BDbGFzc3x8ImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIixwYW5lbENsYXNzOnRoaXMubWVudS5vdmVybGF5UGFuZWxDbGFzcyxzY3JvbGxTdHJhdGVneTp0aGlzLl9zY3JvbGxTdHJhdGVneSgpLGRpcmVjdGlvbjp0aGlzLl9kaXJ9KX1fc3Vic2NyaWJlVG9Qb3NpdGlvbnModCl7dGhpcy5tZW51LnNldFBvc2l0aW9uQ2xhc3NlcyYmdC5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKGU9PntsZXQgbz1lLmNvbm5lY3Rpb25QYWlyLm92ZXJsYXlYPT09InN0YXJ0Ij8iYWZ0ZXIiOiJiZWZvcmUiLGk9ZS5jb25uZWN0aW9uUGFpci5vdmVybGF5WT09PSJ0b3AiPyJiZWxvdyI6ImFib3ZlIjt0aGlzLm1lbnUuc2V0UG9zaXRpb25DbGFzc2VzKG8saSl9KX1fc2V0UG9zaXRpb24odCl7bGV0W2Usb109dGhpcy5tZW51LnhQb3NpdGlvbj09PSJiZWZvcmUiP1siZW5kIiwic3RhcnQiXTpbInN0YXJ0IiwiZW5kIl0sW2ksYV09dGhpcy5tZW51LnlQb3NpdGlvbj09PSJhYm92ZSI/WyJib3R0b20iLCJ0b3AiXTpbInRvcCIsImJvdHRvbSJdLFtyLHNdPVtpLGFdLFtsLGNdPVtlLG9dLG09MDt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyhjPWU9dGhpcy5tZW51LnhQb3NpdGlvbj09PSJiZWZvcmUiPyJzdGFydCI6ImVuZCIsbz1sPWU9PT0iZW5kIj8ic3RhcnQiOiJlbmQiLG09aT09PSJib3R0b20iP3hzdDoteHN0KTp0aGlzLm1lbnUub3ZlcmxhcFRyaWdnZXJ8fChyPWk9PT0idG9wIj8iYm90dG9tIjoidG9wIixzPWE9PT0idG9wIj8iYm90dG9tIjoidG9wIiksdC53aXRoUG9zaXRpb25zKFt7b3JpZ2luWDplLG9yaWdpblk6cixvdmVybGF5WDpsLG92ZXJsYXlZOmksb2Zmc2V0WTptfSx7b3JpZ2luWDpvLG9yaWdpblk6cixvdmVybGF5WDpjLG92ZXJsYXlZOmksb2Zmc2V0WTptfSx7b3JpZ2luWDplLG9yaWdpblk6cyxvdmVybGF5WDpsLG92ZXJsYXlZOmEsb2Zmc2V0WTotbX0se29yaWdpblg6byxvcmlnaW5ZOnMsb3ZlcmxheVg6YyxvdmVybGF5WTphLG9mZnNldFk6LW19XSl9X21lbnVDbG9zaW5nQWN0aW9ucygpe2xldCB0PXRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLGU9dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLG89dGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51P3RoaXMuX3BhcmVudE1hdGVyaWFsTWVudS5jbG9zZWQ6ZG4oKSxpPXRoaXMuX3BhcmVudE1hdGVyaWFsTWVudT90aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuX2hvdmVyZWQoKS5waXBlKHVlKGE9PmEhPT10aGlzLl9tZW51SXRlbUluc3RhbmNlKSx1ZSgoKT0+dGhpcy5fbWVudU9wZW4pKTpkbigpO3JldHVybiB5bih0LG8saSxlKX1faGFuZGxlTW91c2Vkb3duKHQpe2VrKHQpfHwodGhpcy5fb3BlbmVkQnk9dC5idXR0b249PT0wPyJtb3VzZSI6dm9pZCAwLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJnQucHJldmVudERlZmF1bHQoKSl9X2hhbmRsZUtleWRvd24odCl7bGV0IGU9dC5rZXlDb2RlOyhlPT09MTN8fGU9PT0zMikmJih0aGlzLl9vcGVuZWRCeT0ia2V5Ym9hcmQiKSx0aGlzLnRyaWdnZXJzU3VibWVudSgpJiYoZT09PTM5JiZ0aGlzLmRpcj09PSJsdHIifHxlPT09MzcmJnRoaXMuZGlyPT09InJ0bCIpJiYodGhpcy5fb3BlbmVkQnk9ImtleWJvYXJkIix0aGlzLm9wZW5NZW51KCkpfV9oYW5kbGVDbGljayh0KXt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyh0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3Blbk1lbnUoKSk6dGhpcy50b2dnbGVNZW51KCl9X2hhbmRsZUhvdmVyKCl7IXRoaXMudHJpZ2dlcnNTdWJtZW51KCl8fCF0aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnV8fCh0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbj10aGlzLl9wYXJlbnRNYXRlcmlhbE1lbnUuX2hvdmVyZWQoKS5waXBlKHVlKHQ9PnQ9PT10aGlzLl9tZW51SXRlbUluc3RhbmNlJiYhdC5kaXNhYmxlZCksb18oMCxvdykpLnN1YnNjcmliZSgoKT0+e3RoaXMuX29wZW5lZEJ5PSJtb3VzZSIsdGhpcy5tZW51IGluc3RhbmNlb2YganAmJnRoaXMubWVudS5faXNBbmltYXRpbmc/dGhpcy5tZW51Ll9hbmltYXRpb25Eb25lLnBpcGUoQ24oMSksb18oMCxvdyksUGUodGhpcy5fcGFyZW50TWF0ZXJpYWxNZW51Ll9ob3ZlcmVkKCkpKS5zdWJzY3JpYmUoKCk9PnRoaXMub3Blbk1lbnUoKSk6dGhpcy5vcGVuTWVudSgpfSkpfV9nZXRQb3J0YWwoKXtyZXR1cm4oIXRoaXMuX3BvcnRhbHx8dGhpcy5fcG9ydGFsLnRlbXBsYXRlUmVmIT09dGhpcy5tZW51LnRlbXBsYXRlUmVmKSYmKHRoaXMuX3BvcnRhbD1uZXcgJGwodGhpcy5tZW51LnRlbXBsYXRlUmVmLHRoaXMuX3ZpZXdDb250YWluZXJSZWYpKSx0aGlzLl9wb3J0YWx9fTt1Ty5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx1TykodihHbiksdihMKSx2KF9lKSx2KEJJKSx2KGx4LDgpLHYoJGksMTApLHYoTmUsOCksdihsbikpfTt1Ty5cdTAyNzVkaXI9dnQoe3R5cGU6dU8saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoIm1vdXNlZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2hhbmRsZU1vdXNlZG93bihpKX0pKCJrZXlkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihpKX0pKCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2hhbmRsZUNsaWNrKGkpfSksdCYyJiZyZSgiYXJpYS1oYXNwb3B1cCIsZS5fYXJpYUhhc3BvcHVwKSgiYXJpYS1leHBhbmRlZCIsZS5fYXJpYUV4cGFuZGVkKSgiYXJpYS1jb250cm9scyIsZS5fYXJpYUNvbnRyb2wpfSxpbnB1dHM6e3Jlc3RvcmVGb2N1czpbIm1hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzIiwicmVzdG9yZUZvY3VzIl0sX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcjpbIm1hdC1tZW51LXRyaWdnZXItZm9yIiwiX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvciJdLG1lbnU6WyJtYXRNZW51VHJpZ2dlckZvciIsIm1lbnUiXSxtZW51RGF0YTpbIm1hdE1lbnVUcmlnZ2VyRGF0YSIsIm1lbnVEYXRhIl19LG91dHB1dHM6e21lbnVPcGVuZWQ6Im1lbnVPcGVuZWQiLG9uTWVudU9wZW46Im9uTWVudU9wZW4iLG1lbnVDbG9zZWQ6Im1lbnVDbG9zZWQiLG9uTWVudUNsb3NlOiJvbk1lbnVDbG9zZSJ9fSk7dU8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpHbn0se3R5cGU6TH0se3R5cGU6X2V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W0JJXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltseF19LHt0eXBlOkh9XX0se3R5cGU6JGksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6SW59XX0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpsbn1dO3VPLnByb3BEZWNvcmF0b3JzPXtfYXJpYUV4cGFuZGVkOlt7dHlwZTpIYSxhcmdzOlsiYXR0ci5hcmlhLWV4cGFuZGVkIl19XSxfYXJpYUNvbnRyb2w6W3t0eXBlOkhhLGFyZ3M6WyJhdHRyLmFyaWEtY29udHJvbHMiXX1dLF9hcmlhSGFzcG9wdXA6W3t0eXBlOkhhLGFyZ3M6WyJhdHRyLmFyaWEtaGFzcG9wdXAiXX1dLF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6W3t0eXBlOmQsYXJnczpbIm1hdC1tZW51LXRyaWdnZXItZm9yIl19XSxtZW51Olt7dHlwZTpkLGFyZ3M6WyJtYXRNZW51VHJpZ2dlckZvciJdfV0sbWVudURhdGE6W3t0eXBlOmQsYXJnczpbIm1hdE1lbnVUcmlnZ2VyRGF0YSJdfV0scmVzdG9yZUZvY3VzOlt7dHlwZTpkLGFyZ3M6WyJtYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1cyJdfV0sbWVudU9wZW5lZDpbe3R5cGU6Qn1dLG9uTWVudU9wZW46W3t0eXBlOkJ9XSxtZW51Q2xvc2VkOlt7dHlwZTpCfV0sb25NZW51Q2xvc2U6W3t0eXBlOkJ9XSxfaGFuZGxlTW91c2Vkb3duOlt7dHlwZTp4byxhcmdzOlsibW91c2Vkb3duIixbIiRldmVudCJdXX1dLF9oYW5kbGVLZXlkb3duOlt7dHlwZTp4byxhcmdzOlsia2V5ZG93biIsWyIkZXZlbnQiXV19XSxfaGFuZGxlQ2xpY2s6W3t0eXBlOnhvLGFyZ3M6WyJjbGljayIsWyIkZXZlbnQiXV19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHVPLFt7dHlwZTp3dH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkdufSx7dHlwZTpMfSx7dHlwZTpfZX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbQkldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2x4XX0se3R5cGU6SH1dfSx7dHlwZTokaSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn1dfSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOmxufV19LHtfYXJpYUhhc3BvcHVwOlt7dHlwZTpIYSxhcmdzOlsiYXR0ci5hcmlhLWhhc3BvcHVwIl19XSxyZXN0b3JlRm9jdXM6W3t0eXBlOmQsYXJnczpbIm1hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzIl19XSxtZW51T3BlbmVkOlt7dHlwZTpCfV0sb25NZW51T3Blbjpbe3R5cGU6Qn1dLG1lbnVDbG9zZWQ6W3t0eXBlOkJ9XSxvbk1lbnVDbG9zZTpbe3R5cGU6Qn1dLF9hcmlhRXhwYW5kZWQ6W3t0eXBlOkhhLGFyZ3M6WyJhdHRyLmFyaWEtZXhwYW5kZWQiXX1dLF9hcmlhQ29udHJvbDpbe3R5cGU6SGEsYXJnczpbImF0dHIuYXJpYS1jb250cm9scyJdfV0sX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcjpbe3R5cGU6ZCxhcmdzOlsibWF0LW1lbnUtdHJpZ2dlci1mb3IiXX1dLG1lbnU6W3t0eXBlOmQsYXJnczpbIm1hdE1lbnVUcmlnZ2VyRm9yIl19XSxfaGFuZGxlTW91c2Vkb3duOlt7dHlwZTp4byxhcmdzOlsibW91c2Vkb3duIixbIiRldmVudCJdXX1dLF9oYW5kbGVLZXlkb3duOlt7dHlwZTp4byxhcmdzOlsia2V5ZG93biIsWyIkZXZlbnQiXV19XSxfaGFuZGxlQ2xpY2s6W3t0eXBlOnhvLGFyZ3M6WyJjbGljayIsWyIkZXZlbnQiXV19XSxtZW51RGF0YTpbe3R5cGU6ZCxhcmdzOlsibWF0TWVudVRyaWdnZXJEYXRhIl19XX0pfSkoKTt2YXIgVXI9Y2xhc3MgZXh0ZW5kcyB1T3t9O1VyLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4oVXIpKSkoZXx8VXIpfX0oKTtVci5cdTAyNzVkaXI9dnQoe3R5cGU6VXIsc2VsZWN0b3JzOltbIiIsIm1hdC1tZW51LXRyaWdnZXItZm9yIiwiIl0sWyIiLCJtYXRNZW51VHJpZ2dlckZvciIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1tZW51LXRyaWdnZXIiXSxleHBvcnRBczpbIm1hdE1lbnVUcmlnZ2VyIl0sZmVhdHVyZXM6W2FlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhVcixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0LW1lbnUtdHJpZ2dlci1mb3JdLCBbbWF0TWVudVRyaWdnZXJGb3JdIixob3N0OntjbGFzczoibWF0LW1lbnUtdHJpZ2dlciJ9LGV4cG9ydEFzOiJtYXRNZW51VHJpZ2dlciJ9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBvcj1jbGFzc3t9O29yLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9yKX07b3IuXHUwMjc1bW9kPXEoe3R5cGU6b3J9KTtvci5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltTc3RdLGltcG9ydHM6W1tZLER0LGNpLEJvXSxCaSxEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMob3IsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1ksRHQsY2ksQm9dLGV4cG9ydHM6W0JpLER0LGhyLCRpLFVyLFVwXSxkZWNsYXJhdGlvbnM6W2hyLCRpLFVyLFVwXSxwcm92aWRlcnM6W1NzdF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQob3Ise2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltociwkaSxVcixVcF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWSxEdCxjaSxCb119LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bQmksRHQsaHIsJGksVXIsVXBdfX0pfSkoKTtmdW5jdGlvbiBYNHQobix0KXtuJjEmJkQoMCwibWF0LWljb24iLDgpfWZ1bmN0aW9uIFE0dChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsOSl9ZnVuY3Rpb24gSzR0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxMCl9dmFyIHB1OyhmdW5jdGlvbihuKXtuW24uREVGQVVMVD0wXT0iREVGQVVMVCIsbltuLkRBUktfTU9ERV9PTj0xXT0iREFSS19NT0RFX09OIixuW24uREFSS19NT0RFX09GRj0yXT0iREFSS19NT0RFX09GRiJ9KShwdXx8KHB1PXt9KSk7dmFyIHQwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5EYXJrTW9kZU92ZXJyaWRlPXB1LHRoaXMub25PdmVycmlkZUNoYW5nZWQ9bmV3ICR9Z2V0QnV0dG9uVGl0bGUoKXtsZXQgdDtzd2l0Y2godGhpcy5kYXJrTW9kZU92ZXJyaWRlKXtjYXNlIHB1LkRFRkFVTFQ6dD0iQnJvd3NlciBkZWZhdWx0IjticmVhaztjYXNlIHB1LkRBUktfTU9ERV9PTjp0PSJEYXJrIG1vZGUiO2JyZWFrO2Nhc2UgcHUuREFSS19NT0RFX09GRjp0PSJMaWdodCBtb2RlIjticmVha31yZXR1cm5gQ3VycmVudCBtb2RlOiBbJHt0fV0uIFN3aXRjaCBiZXR3ZWVuIGJyb3dzZXIgZGVmYXVsdCwgbGlnaHQsIG9yIGRhcmsgdGhlbWUuYH19O3QwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHQwKX07dDAuXHUwMjc1Y21wPXooe3R5cGU6dDAsc2VsZWN0b3JzOltbImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnQiXV0saW5wdXRzOntkYXJrTW9kZU92ZXJyaWRlOiJkYXJrTW9kZU92ZXJyaWRlIn0sb3V0cHV0czp7b25PdmVycmlkZUNoYW5nZWQ6Im9uT3ZlcnJpZGVDaGFuZ2VkIn0sZGVjbHM6MTUsdmFyczo2LGNvbnN0czpbWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIiwiTWVudSBmb3IgY2hhbmdpbmcgbGlnaHQgb3IgZGFyayB0aGVtZSIsMywibWF0TWVudVRyaWdnZXJGb3IiLCJuZ1N3aXRjaCIsInRpdGxlIl0sWyJzdmdJY29uIiwiYnJpZ2h0bmVzc182XzI0cHgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsic3ZnSWNvbiIsImxpZ2h0X21vZGVfMjRweCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJzdmdJY29uIiwiZGFya19tb2RlXzI0cHgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsibWVudSIsIm1hdE1lbnUiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJ0aXRsZSIsIlNldCB0aGUgdGhlbWUgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgbW9kZSBpbiB0aGUgYnJvd3Nlci4iLDMsImNsaWNrIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwidGl0bGUiLCJGb3JjZSBsaWdodCBUZW5zb3JCb2FyZCB0aGVtZS4iLDMsImNsaWNrIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwidGl0bGUiLCJGb3JjZSBkYXJrIFRlbnNvckJvYXJkIHRoZW1lLiIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJicmlnaHRuZXNzXzZfMjRweCJdLFsic3ZnSWNvbiIsImxpZ2h0X21vZGVfMjRweCJdLFsic3ZnSWNvbiIsImRhcmtfbW9kZV8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYodSgwLCJidXR0b24iLDApLGsoMSxYNHQsMSwwLCJtYXQtaWNvbiIsMSksaygyLFE0dCwxLDAsIm1hdC1pY29uIiwyKSxrKDMsSzR0LDEsMCwibWF0LWljb24iLDMpLGgoKSx1KDQsIm1hdC1tZW51IixudWxsLDQpLHUoNiwiYnV0dG9uIiw1KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KGUuRGFya01vZGVPdmVycmlkZS5ERUZBVUxUKX0pLHUoNywibGFiZWwiKSxUKDgsIkJyb3dzZXIgZGVmYXVsdCIpLGgoKSxoKCksdSg5LCJidXR0b24iLDYpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLm9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoZS5EYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYpfSksdSgxMCwibGFiZWwiKSxUKDExLCJMaWdodCIpLGgoKSxoKCksdSgxMiwiYnV0dG9uIiw3KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KGUuRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT04pfSksdSgxMywibGFiZWwiKSxUKDE0LCJEYXJrIiksaCgpLGgoKSxoKCkpLHQmMil7bGV0IG89d2UoNSk7UCgibWF0TWVudVRyaWdnZXJGb3IiLG8pKCJuZ1N3aXRjaCIsZS5kYXJrTW9kZU92ZXJyaWRlKSgidGl0bGUiLGUuZ2V0QnV0dG9uVGl0bGUoKSkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLGUuRGFya01vZGVPdmVycmlkZS5ERUZBVUxUKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsZS5EYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYpLHgoMSksUCgibmdTd2l0Y2hDYXNlIixlLkRhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKX19LGRpcmVjdGl2ZXM6W2ZuLFVyLEdvLHVpLGhyLCRpLFhlXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModDAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50Iix0ZW1wbGF0ZTpgCiAgICA8YnV0dG9uCiAgICAgIG1hdC1pY29uLWJ1dHRvbgogICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPSJtZW51IgogICAgICBhcmlhLWxhYmVsPSJNZW51IGZvciBjaGFuZ2luZyBsaWdodCBvciBkYXJrIHRoZW1lIgogICAgICBbbmdTd2l0Y2hdPSJkYXJrTW9kZU92ZXJyaWRlIgogICAgICBbdGl0bGVdPSJnZXRCdXR0b25UaXRsZSgpIgogICAgPgogICAgICA8bWF0LWljb24KICAgICAgICAqbmdTd2l0Y2hDYXNlPSJEYXJrTW9kZU92ZXJyaWRlLkRFRkFVTFQiCiAgICAgICAgc3ZnSWNvbj0iYnJpZ2h0bmVzc182XzI0cHgiCiAgICAgID48L21hdC1pY29uPgogICAgICA8bWF0LWljb24KICAgICAgICAqbmdTd2l0Y2hDYXNlPSJEYXJrTW9kZU92ZXJyaWRlLkRBUktfTU9ERV9PRkYiCiAgICAgICAgc3ZnSWNvbj0ibGlnaHRfbW9kZV8yNHB4IgogICAgICA+PC9tYXQtaWNvbj4KICAgICAgPG1hdC1pY29uCiAgICAgICAgKm5nU3dpdGNoQ2FzZT0iRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT04iCiAgICAgICAgc3ZnSWNvbj0iZGFya19tb2RlXzI0cHgiCiAgICAgID48L21hdC1pY29uPgogICAgPC9idXR0b24+CiAgICA8bWF0LW1lbnUgI21lbnU9Im1hdE1lbnUiPgogICAgICA8YnV0dG9uCiAgICAgICAgbWF0LW1lbnUtaXRlbQogICAgICAgIHRpdGxlPSJTZXQgdGhlIHRoZW1lIHRvIG1hdGNoIHRoZSBkZWZhdWx0IG1vZGUgaW4gdGhlIGJyb3dzZXIuIgogICAgICAgIChjbGljayk9Im9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoRGFya01vZGVPdmVycmlkZS5ERUZBVUxUKSIKICAgICAgPgogICAgICAgIDxsYWJlbD5Ccm93c2VyIGRlZmF1bHQ8L2xhYmVsPgogICAgICA8L2J1dHRvbj4KICAgICAgPGJ1dHRvbgogICAgICAgIG1hdC1tZW51LWl0ZW0KICAgICAgICB0aXRsZT0iRm9yY2UgbGlnaHQgVGVuc29yQm9hcmQgdGhlbWUuIgogICAgICAgIChjbGljayk9Im9uT3ZlcnJpZGVDaGFuZ2VkLmVtaXQoRGFya01vZGVPdmVycmlkZS5EQVJLX01PREVfT0ZGKSIKICAgICAgPgogICAgICAgIDxsYWJlbD5MaWdodDwvbGFiZWw+CiAgICAgIDwvYnV0dG9uPgogICAgICA8YnV0dG9uCiAgICAgICAgbWF0LW1lbnUtaXRlbQogICAgICAgIHRpdGxlPSJGb3JjZSBkYXJrIFRlbnNvckJvYXJkIHRoZW1lLiIKICAgICAgICAoY2xpY2spPSJvbk92ZXJyaWRlQ2hhbmdlZC5lbWl0KERhcmtNb2RlT3ZlcnJpZGUuREFSS19NT0RFX09OKSIKICAgICAgPgogICAgICAgIDxsYWJlbD5EYXJrPC9sYWJlbD4KICAgICAgPC9idXR0b24+CiAgICA8L21hdC1tZW51PgogIGB9XX1dLG51bGwse2RhcmtNb2RlT3ZlcnJpZGU6W3t0eXBlOmR9XSxvbk92ZXJyaWRlQ2hhbmdlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBZcD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5kYXJrTW9kZU92ZXJyaWRlJD10aGlzLnN0b3JlLnNlbGVjdChsRCkucGlwZShHKGU9PmU9PT1udWxsP3B1LkRFRkFVTFQ6ZT9wdS5EQVJLX01PREVfT046cHUuREFSS19NT0RFX09GRikpfWNoYW5nZURhcmtNb2RlKHQpe2xldCBlPW51bGw7c3dpdGNoKHQpe2Nhc2UgcHUuREVGQVVMVDplPW51bGw7YnJlYWs7Y2FzZSBwdS5EQVJLX01PREVfT0ZGOmU9ITE7YnJlYWs7Y2FzZSBwdS5EQVJLX01PREVfT046ZT0hMDticmVha310aGlzLnN0b3JlLmRpc3BhdGNoKEFEKHtlbmFibGVEYXJrTW9kZTplfSkpfX07WXAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WXApKHYoc3QpKX07WXAuXHUwMjc1Y21wPXooe3R5cGU6WXAsc2VsZWN0b3JzOltbImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJkYXJrTW9kZU92ZXJyaWRlIiwib25PdmVycmlkZUNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZS1jb21wb25lbnQiLDApLEEoIm9uT3ZlcnJpZGVDaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5jaGFuZ2VEYXJrTW9kZShpKX0pLFgoMSwiYXN5bmMiKSxoKCkpLHQmMiYmUCgiZGFya01vZGVPdmVycmlkZSIsUSgxLDEsZS5kYXJrTW9kZU92ZXJyaWRlJCkpfSxkaXJlY3RpdmVzOlt0MF0scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWXAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUiLHRlbXBsYXRlOmAKICAgIDxhcHAtaGVhZGVyLWRhcmstbW9kZS10b2dnbGUtY29tcG9uZW50CiAgICAgIFtkYXJrTW9kZU92ZXJyaWRlXT0iZGFya01vZGVPdmVycmlkZSQgfCBhc3luYyIKICAgICAgKG9uT3ZlcnJpZGVDaGFuZ2VkKT0iY2hhbmdlRGFya01vZGUoJGV2ZW50KSIKICAgID4KICAgIDwvYXBwLWhlYWRlci1kYXJrLW1vZGUtdG9nZ2xlLWNvbXBvbmVudD4KICBgfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIHROdD1jdChnMyxlbSwobix0KT0+IXR8fCFuW3RdPyExOm5bdF0uZGlzYWJsZV9yZWxvYWQpLEdwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJlbG9hZERpc2FibGVkJD10aGlzLnN0b3JlLnNlbGVjdCh0TnQpLHRoaXMuaXNSZWxvYWRpbmckPXRoaXMuc3RvcmUuc2VsZWN0KENpdCkucGlwZShQYSh0aGlzLnJlbG9hZERpc2FibGVkJCksRygoW2Usb10pPT4hbyYmZT09PUt0LkxPQURJTkcpKSx0aGlzLmxhc3RMb2FkZWRUaW1lSW5NcyQ9dGhpcy5zdG9yZS5zZWxlY3QoZDMpfXRyaWdnZXJSZWxvYWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKG1wKCkpfWdldFJlbG9hZFRpdGxlKHQpe3JldHVybiB0P2BMYXN0IFVwZGF0ZWQ6ICR7dH1gOiJMb2FkaW5nLi4uIn19O0dwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEdwKSh2KHN0KSl9O0dwLlx1MDI3NWNtcD16KHt0eXBlOkdwLHNlbGVjdG9yczpbWyJhcHAtaGVhZGVyLXJlbG9hZCJdXSxkZWNsczo2LHZhcnM6MTMsY29uc3RzOltbIm1hdC1pY29uLWJ1dHRvbiIsIiIsMSwicmVsb2FkLWJ1dHRvbiIsMywidGl0bGUiLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwicmVmcmVzaF8yNHB4IiwxLCJyZWZyZXNoLWljb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImJ1dHRvbiIsMCksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUudHJpZ2dlclJlbG9hZCgpfSksWCgxLCJhc3luYyIpLFgoMiwiZGF0ZSIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksRCg1LCJtYXQtaWNvbiIsMSksaCgpKSx0JjImJihtZSgibG9hZGluZyIsUSgxLDQsZS5pc1JlbG9hZGluZyQpKSxQKCJ0aXRsZSIsZS5nZXRSZWxvYWRUaXRsZShodigyLDYsUSgzLDksZS5sYXN0TG9hZGVkVGltZUluTXMkKSwibWVkaXVtIikpKSgiZGlzYWJsZWQiLFEoNCwxMSxlLnJlbG9hZERpc2FibGVkJCkpKX0sZGlyZWN0aXZlczpbZm4sWGVdLHBpcGVzOltvZSxRc10sc3R5bGVzOltgLnJlbG9hZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAucmVmcmVzaC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAucmVsb2FkLWJ1dHRvbi5sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgYW5pbWF0aW9uOiByb3RhdGUgMnMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIHJvdGF0ZSB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgfQogICAgICAgIDUwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICAgICAgfQogICAgICB9YF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoR3AsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJhcHAtaGVhZGVyLXJlbG9hZCIsdGVtcGxhdGU6YAogICAgPGJ1dHRvbgogICAgICBjbGFzcz0icmVsb2FkLWJ1dHRvbiIKICAgICAgW2NsYXNzLmxvYWRpbmddPSJpc1JlbG9hZGluZyQgfCBhc3luYyIKICAgICAgbWF0LWljb24tYnV0dG9uCiAgICAgIChjbGljayk9InRyaWdnZXJSZWxvYWQoKSIKICAgICAgW3RpdGxlXT0iZ2V0UmVsb2FkVGl0bGUobGFzdExvYWRlZFRpbWVJbk1zJCB8IGFzeW5jIHwgZGF0ZTogJ21lZGl1bScpIgogICAgICBbZGlzYWJsZWRdPSJyZWxvYWREaXNhYmxlZCQgfCBhc3luYyIKICAgID4KICAgICAgPG1hdC1pY29uIGNsYXNzPSJyZWZyZXNoLWljb24iIHN2Z0ljb249InJlZnJlc2hfMjRweCI+PC9tYXQtaWNvbj4KICAgIDwvYnV0dG9uPgogIGAsc3R5bGVzOltgCiAgICAgIC5yZWxvYWQtYnV0dG9uLAogICAgICAucmVmcmVzaC1pY29uIHsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5yZWxvYWQtYnV0dG9uLmxvYWRpbmcgewogICAgICAgIGFuaW1hdGlvbjogcm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyByb3RhdGUgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgICAgIH0KICAgICAgICA1MCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIH0KICAgICAgfQogICAgYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTtmdW5jdGlvbiBwWShuKXtyZXR1cm4gbi5zdGF0ZSE9PUt0Lk5PVF9MT0FERUQmJm4uc3RhdGUhPT1LdC5MT0FESU5HfXZhciBWST0zZTQsbk50PXhhKG5hdCxZdChZRSxuPT5wWShuKT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnNldHRpbmdzKSx7cmVsb2FkRW5hYmxlZDohbi5zZXR0aW5ncy5yZWxvYWRFbmFibGVkfSl9KTpuKSxZdChHRSwobix7cGVyaW9kSW5Nczp0fSk9PntpZighcFkobikpcmV0dXJuIG47bGV0IGU9dD49Vkk/dDpuLnNldHRpbmdzLnJlbG9hZFBlcmlvZEluTXM7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc2V0dGluZ3MpLHtyZWxvYWRQZXJpb2RJbk1zOmV9KX0pfSksWXQoV0UsKG4se3NpemU6dH0pPT57aWYoIXBZKG4pKXJldHVybiBuO2xldCBlPXQ+MD90Om4uc2V0dGluZ3MucGFnZVNpemU7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc2V0dGluZ3MpLHtwYWdlU2l6ZTplfSl9KX0pLFl0KHBNLChuLHtwYXJ0aWFsU2V0dGluZ3M6dH0pPT57bGV0IGU9e307cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0LnBhZ2VTaXplKSYmdC5wYWdlU2l6ZT4wJiYoZS5wYWdlU2l6ZT1OdW1iZXIodC5wYWdlU2l6ZSkpLHR5cGVvZiB0LmF1dG9SZWxvYWQ9PSJib29sZWFuIiYmKGUucmVsb2FkRW5hYmxlZD10LmF1dG9SZWxvYWQpLE51bWJlci5pc0Zpbml0ZSh0LmF1dG9SZWxvYWRQZXJpb2RJbk1zKSYmdC5hdXRvUmVsb2FkUGVyaW9kSW5Ncz5WSSYmKGUucmVsb2FkUGVyaW9kSW5Ncz1OdW1iZXIodC5hdXRvUmVsb2FkUGVyaW9kSW5NcykpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc2V0dGluZ3MpLGUpfSl9KSk7ZnVuY3Rpb24gZFkobix0KXtyZXR1cm4gbk50KG4sdCl9dmFyIG9OdD1bImlucHV0Il0saU50PWZ1bmN0aW9uKG4pe3JldHVybntlbnRlckR1cmF0aW9uOm59fSxhTnQ9WyIqIl0sdVk9bmV3IHl0KCJtYXQtY2hlY2tib3gtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpFc3R9KTtmdW5jdGlvbiBFc3QoKXtyZXR1cm57Y29sb3I6ImFjY2VudCIsY2xpY2tBY3Rpb246ImNoZWNrLWluZGV0ZXJtaW5hdGUifX12YXIgck50PTAsUnN0PUVzdCgpLGtzdD17cHJvdmlkZTpqYSx1c2VFeGlzdGluZzp0bygoKT0+X3IpLG11bHRpOiEwfSxnWT1jbGFzc3t9LHNOdD1EXyhGcyh0bChWcihjbGFzc3tjb25zdHJ1Y3RvcihuKXt0aGlzLl9lbGVtZW50UmVmPW59fSkpKSksX3I9Y2xhc3MgZXh0ZW5kcyBzTnR7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyl7c3VwZXIodCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9mb2N1c01vbml0b3I9byx0aGlzLl9uZ1pvbmU9aSx0aGlzLl9hbmltYXRpb25Nb2RlPXIsdGhpcy5fb3B0aW9ucz1zLHRoaXMuYXJpYUxhYmVsPSIiLHRoaXMuYXJpYUxhYmVsbGVkYnk9bnVsbCx0aGlzLl91bmlxdWVJZD1gbWF0LWNoZWNrYm94LSR7KytyTnR9YCx0aGlzLmlkPXRoaXMuX3VuaXF1ZUlkLHRoaXMubGFiZWxQb3NpdGlvbj0iYWZ0ZXIiLHRoaXMubmFtZT1udWxsLHRoaXMuY2hhbmdlPW5ldyAkLHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZT1uZXcgJCx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzcz0iIix0aGlzLl9jdXJyZW50Q2hlY2tTdGF0ZT0wLHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49KCk9Pnt9LHRoaXMuX2NoZWNrZWQ9ITEsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5faW5kZXRlcm1pbmF0ZT0hMSx0aGlzLl9vcHRpb25zPXRoaXMuX29wdGlvbnN8fFJzdCx0aGlzLmNvbG9yPXRoaXMuZGVmYXVsdENvbG9yPXRoaXMuX29wdGlvbnMuY29sb3J8fFJzdC5jb2xvcix0aGlzLnRhYkluZGV4PXBhcnNlSW50KGEpfHwwfWdldCBpbnB1dElkKCl7cmV0dXJuYCR7dGhpcy5pZHx8dGhpcy5fdW5pcXVlSWR9LWlucHV0YH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPVplKHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSh0PT57dHx8UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e3RoaXMuX29uVG91Y2hlZCgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSl9KSx0aGlzLl9zeW5jSW5kZXRlcm1pbmF0ZSh0aGlzLl9pbmRldGVybWluYXRlKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9Z2V0IGNoZWNrZWQoKXtyZXR1cm4gdGhpcy5fY2hlY2tlZH1zZXQgY2hlY2tlZCh0KXt0IT10aGlzLmNoZWNrZWQmJih0aGlzLl9jaGVja2VkPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7bGV0IGU9WmUodCk7ZSE9PXRoaXMuZGlzYWJsZWQmJih0aGlzLl9kaXNhYmxlZD1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgaW5kZXRlcm1pbmF0ZSgpe3JldHVybiB0aGlzLl9pbmRldGVybWluYXRlfXNldCBpbmRldGVybWluYXRlKHQpe2xldCBlPXQhPXRoaXMuX2luZGV0ZXJtaW5hdGU7dGhpcy5faW5kZXRlcm1pbmF0ZT1aZSh0KSxlJiYodGhpcy5faW5kZXRlcm1pbmF0ZT90aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSgzKTp0aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSh0aGlzLmNoZWNrZWQ/MToyKSx0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKSksdGhpcy5fc3luY0luZGV0ZXJtaW5hdGUodGhpcy5faW5kZXRlcm1pbmF0ZSl9X2lzUmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLmRpc2FibGVkfV9vbkxhYmVsVGV4dENoYW5nZSgpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX13cml0ZVZhbHVlKHQpe3RoaXMuY2hlY2tlZD0hIXR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXR9X2dldEFyaWFDaGVja2VkKCl7cmV0dXJuIHRoaXMuY2hlY2tlZD8idHJ1ZSI6dGhpcy5pbmRldGVybWluYXRlPyJtaXhlZCI6ImZhbHNlIn1fdHJhbnNpdGlvbkNoZWNrU3RhdGUodCl7bGV0IGU9dGhpcy5fY3VycmVudENoZWNrU3RhdGUsbz10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7aWYoZSE9PXQmJih0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoPjAmJm8uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MpLHRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzcz10aGlzLl9nZXRBbmltYXRpb25DbGFzc0ZvckNoZWNrU3RhdGVUcmFuc2l0aW9uKGUsdCksdGhpcy5fY3VycmVudENoZWNrU3RhdGU9dCx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3MubGVuZ3RoPjApKXtvLmNsYXNzTGlzdC5hZGQodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzKTtsZXQgaT10aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57c2V0VGltZW91dCgoKT0+e28uY2xhc3NMaXN0LnJlbW92ZShpKX0sMWUzKX0pfX1fZW1pdENoYW5nZUV2ZW50KCl7bGV0IHQ9bmV3IGdZO3Quc291cmNlPXRoaXMsdC5jaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKHRoaXMuY2hlY2tlZCksdGhpcy5jaGFuZ2UuZW1pdCh0KSx0aGlzLl9pbnB1dEVsZW1lbnQmJih0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkPXRoaXMuY2hlY2tlZCl9dG9nZ2xlKCl7dGhpcy5jaGVja2VkPSF0aGlzLmNoZWNrZWR9X29uSW5wdXRDbGljayh0KXt2YXIgZTtsZXQgbz0oZT10aGlzLl9vcHRpb25zKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUuY2xpY2tBY3Rpb247dC5zdG9wUHJvcGFnYXRpb24oKSwhdGhpcy5kaXNhYmxlZCYmbyE9PSJub29wIj8odGhpcy5pbmRldGVybWluYXRlJiZvIT09ImNoZWNrIiYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e3RoaXMuX2luZGV0ZXJtaW5hdGU9ITEsdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSl9KSx0aGlzLnRvZ2dsZSgpLHRoaXMuX3RyYW5zaXRpb25DaGVja1N0YXRlKHRoaXMuX2NoZWNrZWQ/MToyKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSk6IXRoaXMuZGlzYWJsZWQmJm89PT0ibm9vcCImJih0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlPXRoaXMuaW5kZXRlcm1pbmF0ZSl9Zm9jdXModCxlKXt0P3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9pbnB1dEVsZW1lbnQsdCxlKTp0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyhlKX1fb25JbnRlcmFjdGlvbkV2ZW50KHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9X2dldEFuaW1hdGlvbkNsYXNzRm9yQ2hlY2tTdGF0ZVRyYW5zaXRpb24odCxlKXtpZih0aGlzLl9hbmltYXRpb25Nb2RlPT09Ik5vb3BBbmltYXRpb25zIilyZXR1cm4iIjtsZXQgbz0iIjtzd2l0Y2godCl7Y2FzZSAwOmlmKGU9PT0xKW89InVuY2hlY2tlZC1jaGVja2VkIjtlbHNlIGlmKGU9PTMpbz0idW5jaGVja2VkLWluZGV0ZXJtaW5hdGUiO2Vsc2UgcmV0dXJuIiI7YnJlYWs7Y2FzZSAyOm89ZT09PTE/InVuY2hlY2tlZC1jaGVja2VkIjoidW5jaGVja2VkLWluZGV0ZXJtaW5hdGUiO2JyZWFrO2Nhc2UgMTpvPWU9PT0yPyJjaGVja2VkLXVuY2hlY2tlZCI6ImNoZWNrZWQtaW5kZXRlcm1pbmF0ZSI7YnJlYWs7Y2FzZSAzOm89ZT09PTE/ImluZGV0ZXJtaW5hdGUtY2hlY2tlZCI6ImluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIjticmVha31yZXR1cm5gbWF0LWNoZWNrYm94LWFuaW0tJHtvfWB9X3N5bmNJbmRldGVybWluYXRlKHQpe2xldCBlPXRoaXMuX2lucHV0RWxlbWVudDtlJiYoZS5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGU9dCl9fTtfci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxfcikodihMKSx2KFR0KSx2KGxuKSx2KEN0KSxaYSgidGFiaW5kZXgiKSx2KHNuLDgpLHYodVksOCkpfTtfci5cdTAyNzVjbXA9eih7dHlwZTpfcixzZWxlY3RvcnM6W1sibWF0LWNoZWNrYm94Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHBlKG9OdCw1KSxwZShuaSw1KSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5faW5wdXRFbGVtZW50PW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLnJpcHBsZT1vLmZpcnN0KX19LGhvc3RBdHRyczpbMSwibWF0LWNoZWNrYm94Il0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiYodWwoImlkIixlLmlkKSxyZSgidGFiaW5kZXgiLG51bGwpLG1lKCJtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSIsZS5pbmRldGVybWluYXRlKSgibWF0LWNoZWNrYm94LWNoZWNrZWQiLGUuY2hlY2tlZCkoIm1hdC1jaGVja2JveC1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoIm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUiLGUubGFiZWxQb3NpdGlvbj09ImJlZm9yZSIpKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsZS5fYW5pbWF0aW9uTW9kZT09PSJOb29wQW5pbWF0aW9ucyIpKX0saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxpZDoiaWQiLGxhYmVsUG9zaXRpb246ImxhYmVsUG9zaXRpb24iLG5hbWU6Im5hbWUiLHJlcXVpcmVkOiJyZXF1aXJlZCIsY2hlY2tlZDoiY2hlY2tlZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixpbmRldGVybWluYXRlOiJpbmRldGVybWluYXRlIixhcmlhRGVzY3JpYmVkYnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYURlc2NyaWJlZGJ5Il0sdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLGluZGV0ZXJtaW5hdGVDaGFuZ2U6ImluZGV0ZXJtaW5hdGVDaGFuZ2UifSxleHBvcnRBczpbIm1hdENoZWNrYm94Il0sZmVhdHVyZXM6W1RlKFtrc3RdKSxhZV0sbmdDb250ZW50U2VsZWN0b3JzOmFOdCxkZWNsczoxNyx2YXJzOjIxLGNvbnN0czpbWzEsIm1hdC1jaGVja2JveC1sYXlvdXQiXSxbImxhYmVsIiwiIl0sWzEsIm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXIiXSxbInR5cGUiLCJjaGVja2JveCIsMSwibWF0LWNoZWNrYm94LWlucHV0IiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsMywiaWQiLCJyZXF1aXJlZCIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInRhYkluZGV4IiwiY2hhbmdlIiwiY2xpY2siXSxbImlucHV0IiwiIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1jaGVja2JveC1yaXBwbGUiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIiwzLCJtYXRSaXBwbGVUcmlnZ2VyIiwibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVSYWRpdXMiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZUFuaW1hdGlvbiJdLFsxLCJtYXQtcmlwcGxlLWVsZW1lbnQiLCJtYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUiXSxbMSwibWF0LWNoZWNrYm94LWZyYW1lIl0sWzEsIm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIl0sWyJ2ZXJzaW9uIiwiMS4xIiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJ2aWV3Qm94IiwiMCAwIDI0IDI0IiwwLCJ4bWwiLCJzcGFjZSIsInByZXNlcnZlIiwiYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtYXQtY2hlY2tib3gtY2hlY2ttYXJrIl0sWyJmaWxsIiwibm9uZSIsInN0cm9rZSIsIndoaXRlIiwiZCIsIk00LjEsMTIuNyA5LDE3LjYgMjAuMyw2LjMiLDEsIm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCJdLFsxLCJtYXQtY2hlY2tib3gtbWl4ZWRtYXJrIl0sWzEsIm1hdC1jaGVja2JveC1sYWJlbCIsMywiY2RrT2JzZXJ2ZUNvbnRlbnQiXSxbImNoZWNrYm94TGFiZWwiLCIiXSxbMiwiZGlzcGxheSIsIm5vbmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih5bygpLHUoMCwibGFiZWwiLDAsMSksdSgyLCJzcGFuIiwyKSx1KDMsImlucHV0IiwzLDQpLEEoImNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX29uSW50ZXJhY3Rpb25FdmVudChpKX0pKCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX29uSW5wdXRDbGljayhpKX0pLGgoKSx1KDUsInNwYW4iLDUpLEQoNiwic3BhbiIsNiksaCgpLEQoNywic3BhbiIsNyksdSg4LCJzcGFuIiw4KSxLbigpLHUoOSwic3ZnIiw5KSxEKDEwLCJwYXRoIiwxMCksaCgpLEdtKCksRCgxMSwic3BhbiIsMTEpLGgoKSxoKCksdSgxMiwic3BhbiIsMTIsMTMpLEEoImNka09ic2VydmVDb250ZW50IixmdW5jdGlvbigpe3JldHVybiBlLl9vbkxhYmVsVGV4dENoYW5nZSgpfSksdSgxNCwic3BhbiIsMTQpLFQoMTUsIlx4QTAiKSxoKCksWW4oMTYpLGgoKSxoKCkpLHQmMil7bGV0IG89d2UoMSksaT13ZSgxMyk7cmUoImZvciIsZS5pbnB1dElkKSx4KDIpLG1lKCJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2luIiwhaS50ZXh0Q29udGVudHx8IWkudGV4dENvbnRlbnQudHJpbSgpKSx4KDEpLFAoImlkIixlLmlucHV0SWQpKCJyZXF1aXJlZCIsZS5yZXF1aXJlZCkoImNoZWNrZWQiLGUuY2hlY2tlZCkoImRpc2FibGVkIixlLmRpc2FibGVkKSgidGFiSW5kZXgiLGUudGFiSW5kZXgpLHJlKCJ2YWx1ZSIsZS52YWx1ZSkoIm5hbWUiLGUubmFtZSkoImFyaWEtbGFiZWwiLGUuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IixlLmFyaWFMYWJlbGxlZGJ5KSgiYXJpYS1jaGVja2VkIixlLl9nZXRBcmlhQ2hlY2tlZCgpKSgiYXJpYS1kZXNjcmliZWRieSIsZS5hcmlhRGVzY3JpYmVkYnkpLHgoMiksUCgibWF0UmlwcGxlVHJpZ2dlciIsbykoIm1hdFJpcHBsZURpc2FibGVkIixlLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVSYWRpdXMiLDIwKSgibWF0UmlwcGxlQ2VudGVyZWQiLCEwKSgibWF0UmlwcGxlQW5pbWF0aW9uIixhbygxOSxpTnQsZS5fYW5pbWF0aW9uTW9kZT09PSJOb29wQW5pbWF0aW9ucyI/MDoxNTApKX19LGRpcmVjdGl2ZXM6W25pLEJyXSxzdHlsZXM6W2BAa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR7MCV7b3BhY2l0eTowfTUwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR7MCUsNTAle29wYWNpdHk6MX0xMDAle29wYWNpdHk6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh7MCUsNTAle3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OX01MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MH19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrezAlLDY4LjIle3RyYW5zZm9ybTpzY2FsZVgoMCl9NjguMiV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMCwgMSl9MTAwJXt0cmFuc2Zvcm06c2NhbGVYKDEpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aHtmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7c3Ryb2tlLWRhc2hvZmZzZXQ6MH10b3tzdHJva2UtZGFzaG9mZnNldDotMjIuOTEwMjU5fX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpO29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjE0LCAwLCAwLCAxKTtvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX10b3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSgzMTVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt7MCV7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXI7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSl9MzIuOCUsMTAwJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKX19Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZnJhbWV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1jaGVja2JveHtkaXNwbGF5OmlubGluZS1ibG9jazt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWNoZWNrYm94e3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LWNoZWNrYm94IC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjE2fS5tYXQtY2hlY2tib3ggLm1hdC1jaGVja2JveC1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO3RvcDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcmlwcGxle291dGxpbmU6c29saWQgM3B4fS5tYXQtY2hlY2tib3gtbGF5b3V0ey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6aW5oZXJpdDthbGlnbi1pdGVtczpiYXNlbGluZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9Lm1hdC1jaGVja2JveC1sYWJlbHstd2Via2l0LXVzZXItc2VsZWN0OmF1dG87LW1vei11c2VyLXNlbGVjdDphdXRvOy1tcy11c2VyLXNlbGVjdDphdXRvO3VzZXItc2VsZWN0OmF1dG99Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MDttYXJnaW46YXV0bzttYXJnaW4tcmlnaHQ6OHB4O29yZGVyOjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246bWlkZGxlO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxNnB4O2ZsZXgtc2hyaW5rOjB9W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtY2hlY2tib3gtZnJhbWV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7Ym9yZGVyLXdpZHRoOjJweDtib3JkZXItc3R5bGU6c29saWR9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtZnJhbWV7dHJhbnNpdGlvbjpub25lfS5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSksb3BhY2l0eSA5MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZDpub25lfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMDR9Lm1hdC1jaGVja2JveC5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjEyfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1jaGVja2JveC5tYXQtY2hlY2tib3gtZGlzYWJsZWQgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6bm9uZX19Lm1hdC1jaGVja2JveC1jaGVja21hcmt7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjIyLjkxMDI1OTtzdHJva2UtZGFzaGFycmF5OjIyLjkxMDI1OTtzdHJva2Utd2lkdGg6Mi4xMzMzMzMzMzMzcHh9LmNkay1oaWdoLWNvbnRyYXN0LWJsYWNrLW9uLXdoaXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiMwMDAgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3t3aWR0aDpjYWxjKDEwMCUgLSA2cHgpO2hlaWdodDoycHg7b3BhY2l0eTowO3RyYW5zZm9ybTpzY2FsZVgoMCkgcm90YXRlKDBkZWcpO2JvcmRlci1yYWRpdXM6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7bWFyZ2luLXRvcDoycHh9Lm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7b3JkZXI6MTttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OmF1dG99W2Rpcj1ydGxdIC5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye21hcmdpbi1sZWZ0OmF1dG87bWFyZ2luLXJpZ2h0OjhweH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eToxfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3tvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoMGRlZyl9Lm1hdC1jaGVja2JveC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtZGlzYWJsZWR7b3BhY2l0eTouNX0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC11bmNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7YW5pbWF0aW9uOjMwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWlucHV0e2JvdHRvbTowO2xlZnQ6NTAlfQpgXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtfci5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOlR0fSx7dHlwZTpsbn0se3R5cGU6Q3R9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbdVldfV19XTtfci5wcm9wRGVjb3JhdG9ycz17YXJpYUxhYmVsOlt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxhcmlhRGVzY3JpYmVkYnk6W3t0eXBlOmQsYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLGlkOlt7dHlwZTpkfV0scmVxdWlyZWQ6W3t0eXBlOmR9XSxsYWJlbFBvc2l0aW9uOlt7dHlwZTpkfV0sbmFtZTpbe3R5cGU6ZH1dLGNoYW5nZTpbe3R5cGU6Qn1dLGluZGV0ZXJtaW5hdGVDaGFuZ2U6W3t0eXBlOkJ9XSx2YWx1ZTpbe3R5cGU6ZH1dLF9pbnB1dEVsZW1lbnQ6W3t0eXBlOkl0LGFyZ3M6WyJpbnB1dCJdfV0scmlwcGxlOlt7dHlwZTpJdCxhcmdzOltuaV19XSxjaGVja2VkOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XSxpbmRldGVybWluYXRlOlt7dHlwZTpkfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhfcixbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGVja2JveCIsdGVtcGxhdGU6YDxsYWJlbCBbYXR0ci5mb3JdPSJpbnB1dElkIiBjbGFzcz0ibWF0LWNoZWNrYm94LWxheW91dCIgI2xhYmVsPgogIDxzcGFuIGNsYXNzPSJtYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyIgogICAgICAgW2NsYXNzLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXItbm8tc2lkZS1tYXJnaW5dPSIhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudCB8fCAhY2hlY2tib3hMYWJlbC50ZXh0Q29udGVudC50cmltKCkiPgogICAgPGlucHV0ICNpbnB1dAogICAgICAgICAgIGNsYXNzPSJtYXQtY2hlY2tib3gtaW5wdXQgY2RrLXZpc3VhbGx5LWhpZGRlbiIgdHlwZT0iY2hlY2tib3giCiAgICAgICAgICAgW2lkXT0iaW5wdXRJZCIKICAgICAgICAgICBbcmVxdWlyZWRdPSJyZXF1aXJlZCIKICAgICAgICAgICBbY2hlY2tlZF09ImNoZWNrZWQiCiAgICAgICAgICAgW2F0dHIudmFsdWVdPSJ2YWx1ZSIKICAgICAgICAgICBbZGlzYWJsZWRdPSJkaXNhYmxlZCIKICAgICAgICAgICBbYXR0ci5uYW1lXT0ibmFtZSIKICAgICAgICAgICBbdGFiSW5kZXhdPSJ0YWJJbmRleCIKICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIHx8IG51bGwiCiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiCiAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT0iX2dldEFyaWFDaGVja2VkKCkiCiAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09ImFyaWFEZXNjcmliZWRieSIKICAgICAgICAgICAoY2hhbmdlKT0iX29uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpIgogICAgICAgICAgIChjbGljayk9Il9vbklucHV0Q2xpY2soJGV2ZW50KSI+CiAgICA8c3BhbiBtYXRSaXBwbGUgY2xhc3M9Im1hdC1jaGVja2JveC1yaXBwbGUgbWF0LWZvY3VzLWluZGljYXRvciIKICAgICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJsYWJlbCIKICAgICAgICAgW21hdFJpcHBsZURpc2FibGVkXT0iX2lzUmlwcGxlRGlzYWJsZWQoKSIKICAgICAgICAgW21hdFJpcHBsZVJhZGl1c109IjIwIgogICAgICAgICBbbWF0UmlwcGxlQ2VudGVyZWRdPSJ0cnVlIgogICAgICAgICBbbWF0UmlwcGxlQW5pbWF0aW9uXT0ie2VudGVyRHVyYXRpb246IF9hbmltYXRpb25Nb2RlID09PSAnTm9vcEFuaW1hdGlvbnMnID8gMCA6IDE1MH0iPgogICAgICA8c3BhbiBjbGFzcz0ibWF0LXJpcHBsZS1lbGVtZW50IG1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSI+PC9zcGFuPgogICAgPC9zcGFuPgogICAgPHNwYW4gY2xhc3M9Im1hdC1jaGVja2JveC1mcmFtZSI+PC9zcGFuPgogICAgPHNwYW4gY2xhc3M9Im1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIj4KICAgICAgPHN2ZyB2ZXJzaW9uPSIxLjEiCiAgICAgICAgICAgZm9jdXNhYmxlPSJmYWxzZSIKICAgICAgICAgICBjbGFzcz0ibWF0LWNoZWNrYm94LWNoZWNrbWFyayIKICAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgICAgICBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPHBhdGggY2xhc3M9Im1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCIKICAgICAgICAgICAgICBmaWxsPSJub25lIgogICAgICAgICAgICAgIHN0cm9rZT0id2hpdGUiCiAgICAgICAgICAgICAgZD0iTTQuMSwxMi43IDksMTcuNiAyMC4zLDYuMyIvPgogICAgICA8L3N2Zz4KICAgICAgPCEtLSBFbGVtZW50IGZvciByZW5kZXJpbmcgdGhlIGluZGV0ZXJtaW5hdGUgc3RhdGUgY2hlY2tib3guIC0tPgogICAgICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LW1peGVkbWFyayI+PC9zcGFuPgogICAgPC9zcGFuPgogIDwvc3Bhbj4KICA8c3BhbiBjbGFzcz0ibWF0LWNoZWNrYm94LWxhYmVsIiAjY2hlY2tib3hMYWJlbCAoY2RrT2JzZXJ2ZUNvbnRlbnQpPSJfb25MYWJlbFRleHRDaGFuZ2UoKSI+CiAgICA8IS0tIEFkZCBhbiBpbnZpc2libGUgc3BhbiBzbyBKQVdTIGNhbiByZWFkIHRoZSBsYWJlbCAtLT4KICAgIDxzcGFuIHN0eWxlPSJkaXNwbGF5Om5vbmUiPiZuYnNwOzwvc3Bhbj4KICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4KICA8L3NwYW4+CjwvbGFiZWw+CmAsZXhwb3J0QXM6Im1hdENoZWNrYm94Iixob3N0OntjbGFzczoibWF0LWNoZWNrYm94IiwiW2lkXSI6ImlkIiwiW2F0dHIudGFiaW5kZXhdIjoibnVsbCIsIltjbGFzcy5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZV0iOiJpbmRldGVybWluYXRlIiwiW2NsYXNzLm1hdC1jaGVja2JveC1jaGVja2VkXSI6ImNoZWNrZWQiLCJbY2xhc3MubWF0LWNoZWNrYm94LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmVdIjonbGFiZWxQb3NpdGlvbiA9PSAiYmVmb3JlIicsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfYW5pbWF0aW9uTW9kZSA9PT0gJ05vb3BBbmltYXRpb25zJyJ9LHByb3ZpZGVyczpba3N0XSxpbnB1dHM6WyJkaXNhYmxlUmlwcGxlIiwiY29sb3IiLCJ0YWJJbmRleCJdLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHN0eWxlczpbYEBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZHswJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZHswJSw1MCV7b3BhY2l0eToxfTEwMCV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aHswJSw1MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjIuOTEwMjU5fTUwJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7MCUsNjguMiV7dHJhbnNmb3JtOnNjYWxlWCgwKX02OC4yJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLCAxKX0xMDAle3RyYW5zZm9ybTpzY2FsZVgoMSl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRoe2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtzdHJva2UtZGFzaG9mZnNldDowfXRve3N0cm9rZS1kYXNob2Zmc2V0Oi0yMi45MTAyNTl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4xNCwgMCwgMCwgMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDMxNWRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya3swJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKX0zMi44JSwxMDAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVYKDApfX0ubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1mcmFtZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWNoZWNrYm94e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtY2hlY2tib3h7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSl7b3BhY2l0eTouMTZ9Lm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7dG9wOmNhbGMoNTAlIC0gMjBweCk7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3guY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jaGVja2JveC1yaXBwbGV7b3V0bGluZTpzb2xpZCAzcHh9Lm1hdC1jaGVja2JveC1sYXlvdXR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjppbmhlcml0O2FsaWduLWl0ZW1zOmJhc2VsaW5lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1mbGV4O3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LWNoZWNrYm94LWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6YXV0bzstbW96LXVzZXItc2VsZWN0OmF1dG87LW1zLXVzZXItc2VsZWN0OmF1dG87dXNlci1zZWxlY3Q6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDowO21hcmdpbjphdXRvO21hcmdpbi1yaWdodDo4cHg7b3JkZXI6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjE2cHg7ZmxleC1zaHJpbms6MH1bZGlyPXJ0bF0gLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDphdXRvfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2lue21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1jaGVja2JveC1mcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtib3JkZXItd2lkdGg6MnB4O2JvcmRlci1zdHlsZTpzb2xpZH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1jaGVja2JveC1mcmFtZXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKSxvcGFjaXR5IDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtjb2xvci1hZGp1c3Q6ZXhhY3R9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kOm5vbmV9Lm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dHJhbnNmb3JtOm5vbmV9Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4wNH0ubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMTJ9Lm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LWNoZWNrYm94Lm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6MH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpub25lfX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya3t0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxMDAlfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MjIuOTEwMjU5O3N0cm9rZS1kYXNoYXJyYXk6MjIuOTEwMjU5O3N0cm9rZS13aWR0aDoyLjEzMzMzMzMzMzNweH0uY2RrLWhpZ2gtY29udHJhc3QtYmxhY2stb24td2hpdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2U6IzAwMCAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre3dpZHRoOmNhbGMoMTAwJSAtIDZweCk7aGVpZ2h0OjJweDtvcGFjaXR5OjA7dHJhbnNmb3JtOnNjYWxlWCgwKSByb3RhdGUoMGRlZyk7Ym9yZGVyLXJhZGl1czoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3toZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDJweDttYXJnaW4tdG9wOjJweH0ubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcntvcmRlcjoxO21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6YXV0b31bZGlyPXJ0bF0gLm1hdC1jaGVja2JveC1sYWJlbC1iZWZvcmUgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6OHB4fS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tvcGFjaXR5OjF9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MH0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7dHJhbnNmb3JtOnNjYWxlWCgxKSByb3RhdGUoLTQ1ZGVnKX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmt7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZS1kYXNob2Zmc2V0OjB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVYKDEpIHJvdGF0ZSgwZGVnKX0ubWF0LWNoZWNrYm94LXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNoZWNrYm94LWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveC1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtdW5jaGVja2VkLWNoZWNrZWQtY2hlY2ttYXJrLXBhdGh9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZH0ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHthbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLXVuY2hlY2tlZC1jaGVja21hcmstcGF0aH0ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmt9Lm1hdC1jaGVja2JveC1hbmltLWNoZWNrZWQtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246OTBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1jaGVja2VkLWluZGV0ZXJtaW5hdGUtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmt7YW5pbWF0aW9uOjUwMG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtY2hlY2tlZC1jaGVja21hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246NTAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3thbmltYXRpb246MzAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtaW5wdXR7Ym90dG9tOjA7bGVmdDo1MCV9CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6bG59LHt0eXBlOkN0fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6bGksYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3VZXX1dfV19LHthcmlhTGFiZWw6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGlkOlt7dHlwZTpkfV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6ZH1dLG5hbWU6W3t0eXBlOmR9XSxjaGFuZ2U6W3t0eXBlOkJ9XSxpbmRldGVybWluYXRlQ2hhbmdlOlt7dHlwZTpCfV0scmVxdWlyZWQ6W3t0eXBlOmR9XSxjaGVja2VkOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XSxpbmRldGVybWluYXRlOlt7dHlwZTpkfV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx2YWx1ZTpbe3R5cGU6ZH1dLF9pbnB1dEVsZW1lbnQ6W3t0eXBlOkl0LGFyZ3M6WyJpbnB1dCJdfV0scmlwcGxlOlt7dHlwZTpJdCxhcmdzOltuaV19XX0pfSkoKTt2YXIgTnN0PXtwcm92aWRlOm1pLHVzZUV4aXN0aW5nOnRvKCgpPT5kdSksbXVsdGk6ITB9LGR1PWNsYXNzIGV4dGVuZHMgY217fTtkdS5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKGR1KSkpKGV8fGR1KX19KCk7ZHUuXHUwMjc1ZGlyPXZ0KHt0eXBlOmR1LHNlbGVjdG9yczpbWyJtYXQtY2hlY2tib3giLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGZlYXR1cmVzOltUZShbTnN0XSksYWVdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGR1LFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6YG1hdC1jaGVja2JveFtyZXF1aXJlZF1bZm9ybUNvbnRyb2xOYW1lXSwKICAgICAgICAgICAgIG1hdC1jaGVja2JveFtyZXF1aXJlZF1bZm9ybUNvbnRyb2xdLCBtYXQtY2hlY2tib3hbcmVxdWlyZWRdW25nTW9kZWxdYCxwcm92aWRlcnM6W05zdF19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciB1Zj1jbGFzc3t9O3VmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHVmKX07dWYuXHUwMjc1bW9kPXEoe3R5cGU6dWZ9KTt1Zi5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHVmLFt7dHlwZTpaLGFyZ3M6W3tleHBvcnRzOltkdV0sZGVjbGFyYXRpb25zOltkdV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQodWYse2RlY2xhcmF0aW9uczpbZHVdLGV4cG9ydHM6W2R1XX0pfSkoKTt2YXIgaWk9Y2xhc3N7fTtpaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxpaSl9O2lpLlx1MDI3NW1vZD1xKHt0eXBlOmlpfSk7aWkuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tjaSxEdCxzYSx1Zl0sRHQsdWZdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGlpLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltjaSxEdCxzYSx1Zl0sZXhwb3J0czpbX3IsRHQsdWZdLGRlY2xhcmF0aW9uczpbX3JdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGlpLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bX3JdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2NpLER0LHNhLHVmXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltfcixEdCx1Zl19fSl9KSgpO3ZhciBUc3Q9JG0oe3Bhc3NpdmU6ITB9KSxjYz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fbmdab25lPWUsdGhpcy5fbW9uaXRvcmVkRWxlbWVudHM9bmV3IE1hcH1tb25pdG9yKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuIE5zO2xldCBlPUNwKHQpLG89dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZ2V0KGUpO2lmKG8pcmV0dXJuIG8uc3ViamVjdDtsZXQgaT1uZXcgSnQsYT0iY2RrLXRleHQtZmllbGQtYXV0b2ZpbGxlZCIscj1zPT57cy5hbmltYXRpb25OYW1lPT09ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IiYmIWUuY2xhc3NMaXN0LmNvbnRhaW5zKGEpPyhlLmNsYXNzTGlzdC5hZGQoYSksdGhpcy5fbmdab25lLnJ1bigoKT0+aS5uZXh0KHt0YXJnZXQ6cy50YXJnZXQsaXNBdXRvZmlsbGVkOiEwfSkpKTpzLmFuaW1hdGlvbk5hbWU9PT0iY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIiYmZS5jbGFzc0xpc3QuY29udGFpbnMoYSkmJihlLmNsYXNzTGlzdC5yZW1vdmUoYSksdGhpcy5fbmdab25lLnJ1bigoKT0+aS5uZXh0KHt0YXJnZXQ6cy50YXJnZXQsaXNBdXRvZmlsbGVkOiExfSkpKX07cmV0dXJuIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2UuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uc3RhcnQiLHIsVHN0KSxlLmNsYXNzTGlzdC5hZGQoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZCIpfSksdGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuc2V0KGUse3N1YmplY3Q6aSx1bmxpc3RlbjooKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uc3RhcnQiLHIsVHN0KX19KSxpfXN0b3BNb25pdG9yaW5nKHQpe2xldCBlPUNwKHQpLG89dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZ2V0KGUpO28mJihvLnVubGlzdGVuKCksby5zdWJqZWN0LmNvbXBsZXRlKCksZS5jbGFzc0xpc3QucmVtb3ZlKCJjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWQiKSxlLmNsYXNzTGlzdC5yZW1vdmUoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsZWQiKSx0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5kZWxldGUoZSkpfW5nT25EZXN0cm95KCl7dGhpcy5fbW9uaXRvcmVkRWxlbWVudHMuZm9yRWFjaCgodCxlKT0+dGhpcy5zdG9wTW9uaXRvcmluZyhlKSl9fTtjYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxjYykoSShWdCksSShDdCkpfTtjYy5cdTAyNzVwcm92PVB0KHtmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjYyhJKFZ0KSxJKEN0KSl9LHRva2VuOmNjLHByb3ZpZGVkSW46InJvb3QifSk7Y2MuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWdH0se3R5cGU6Q3R9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoY2MsW3t0eXBlOlN0LGFyZ3M6W3twcm92aWRlZEluOiJyb290In1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VnR9LHt0eXBlOkN0fV19LG51bGwpfSkoKTt2YXIgZ3U9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fYXV0b2ZpbGxNb25pdG9yPWUsdGhpcy5jZGtBdXRvZmlsbD1uZXcgJH1uZ09uSW5pdCgpe3RoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYpLnN1YnNjcmliZSh0PT50aGlzLmNka0F1dG9maWxsLmVtaXQodCkpfW5nT25EZXN0cm95KCl7dGhpcy5fYXV0b2ZpbGxNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfX07Z3UuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Z3UpKHYoTCksdihjYykpfTtndS5cdTAyNzVkaXI9dnQoe3R5cGU6Z3Usc2VsZWN0b3JzOltbIiIsImNka0F1dG9maWxsIiwiIl1dLG91dHB1dHM6e2Nka0F1dG9maWxsOiJjZGtBdXRvZmlsbCJ9fSk7Z3UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpjY31dO2d1LnByb3BEZWNvcmF0b3JzPXtjZGtBdXRvZmlsbDpbe3R5cGU6Qn1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZ3UsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0F1dG9maWxsXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOmNjfV19LHtjZGtBdXRvZmlsbDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBoZj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fcGxhdGZvcm09ZSx0aGlzLl9uZ1pvbmU9byx0aGlzLl9kZXN0cm95ZWQ9bmV3IEp0LHRoaXMuX2VuYWJsZWQ9ITAsdGhpcy5fcHJldmlvdXNNaW5Sb3dzPS0xLHRoaXMuX2lzVmlld0luaXRlZD0hMSx0aGlzLl9oYW5kbGVGb2N1c0V2ZW50PWE9Pnt0aGlzLl9oYXNGb2N1cz1hLnR5cGU9PT0iZm9jdXMifSx0aGlzLl9kb2N1bWVudD1pLHRoaXMuX3RleHRhcmVhRWxlbWVudD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9Z2V0IG1pblJvd3MoKXtyZXR1cm4gdGhpcy5fbWluUm93c31zZXQgbWluUm93cyh0KXt0aGlzLl9taW5Sb3dzPVJpKHQpLHRoaXMuX3NldE1pbkhlaWdodCgpfWdldCBtYXhSb3dzKCl7cmV0dXJuIHRoaXMuX21heFJvd3N9c2V0IG1heFJvd3ModCl7dGhpcy5fbWF4Um93cz1SaSh0KSx0aGlzLl9zZXRNYXhIZWlnaHQoKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3Q9WmUodCksdGhpcy5fZW5hYmxlZCE9PXQmJigodGhpcy5fZW5hYmxlZD10KT90aGlzLnJlc2l6ZVRvRml0Q29udGVudCghMCk6dGhpcy5yZXNldCgpKX1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyfXNldCBwbGFjZWhvbGRlcih0KXt0aGlzLl9jYWNoZWRQbGFjZWhvbGRlckhlaWdodD12b2lkIDAsdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBsYWNlaG9sZGVyPXQsdGhpcy5fY2FjaGVUZXh0YXJlYVBsYWNlaG9sZGVySGVpZ2h0KCl9X3NldE1pbkhlaWdodCgpe2xldCB0PXRoaXMubWluUm93cyYmdGhpcy5fY2FjaGVkTGluZUhlaWdodD9gJHt0aGlzLm1pblJvd3MqdGhpcy5fY2FjaGVkTGluZUhlaWdodH1weGA6bnVsbDt0JiYodGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLm1pbkhlaWdodD10KX1fc2V0TWF4SGVpZ2h0KCl7bGV0IHQ9dGhpcy5tYXhSb3dzJiZ0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0P2Ake3RoaXMubWF4Um93cyp0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0fXB4YDpudWxsO3QmJih0aGlzLl90ZXh0YXJlYUVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0PXQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmKHRoaXMuX2luaXRpYWxIZWlnaHQ9dGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLmhlaWdodCx0aGlzLnJlc2l6ZVRvRml0Q29udGVudCgpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e2xldCB0PXRoaXMuX2dldFdpbmRvdygpO2pvKHQsInJlc2l6ZSIpLnBpcGUobl8oMTYpLFBlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKT0+dGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoITApKSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2hhbmRsZUZvY3VzRXZlbnQpLHRoaXMuX3RleHRhcmVhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KX0pLHRoaXMuX2lzVmlld0luaXRlZD0hMCx0aGlzLnJlc2l6ZVRvRml0Q29udGVudCghMCkpfW5nT25EZXN0cm95KCl7dGhpcy5fdGV4dGFyZWFFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9oYW5kbGVGb2N1c0V2ZW50KSx0aGlzLl90ZXh0YXJlYUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5faGFuZGxlRm9jdXNFdmVudCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKX1fY2FjaGVUZXh0YXJlYUxpbmVIZWlnaHQoKXtpZih0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KXJldHVybjtsZXQgdD10aGlzLl90ZXh0YXJlYUVsZW1lbnQuY2xvbmVOb2RlKCExKTt0LnJvd3M9MSx0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHQuc3R5bGUuYm9yZGVyPSJub25lIix0LnN0eWxlLnBhZGRpbmc9IjAiLHQuc3R5bGUuaGVpZ2h0PSIiLHQuc3R5bGUubWluSGVpZ2h0PSIiLHQuc3R5bGUubWF4SGVpZ2h0PSIiLHQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodCksdGhpcy5fY2FjaGVkTGluZUhlaWdodD10LmNsaWVudEhlaWdodCx0aGlzLl90ZXh0YXJlYUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLl9zZXRNaW5IZWlnaHQoKSx0aGlzLl9zZXRNYXhIZWlnaHQoKX1fbWVhc3VyZVNjcm9sbEhlaWdodCgpe2xldCB0PXRoaXMuX3RleHRhcmVhRWxlbWVudCxlPXQuc3R5bGUubWFyZ2luQm90dG9tfHwiIixvPXRoaXMuX3BsYXRmb3JtLkZJUkVGT1gsaT1vJiZ0aGlzLl9oYXNGb2N1cyxhPW8/ImNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveCI6ImNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmciO2kmJih0LnN0eWxlLm1hcmdpbkJvdHRvbT1gJHt0LmNsaWVudEhlaWdodH1weGApLHQuY2xhc3NMaXN0LmFkZChhKTtsZXQgcj10LnNjcm9sbEhlaWdodC00O3JldHVybiB0LmNsYXNzTGlzdC5yZW1vdmUoYSksaSYmKHQuc3R5bGUubWFyZ2luQm90dG9tPWUpLHJ9X2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpe2lmKCF0aGlzLl9pc1ZpZXdJbml0ZWR8fHRoaXMuX2NhY2hlZFBsYWNlaG9sZGVySGVpZ2h0IT1udWxsKXJldHVybjtpZighdGhpcy5wbGFjZWhvbGRlcil7dGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHQ9MDtyZXR1cm59bGV0IHQ9dGhpcy5fdGV4dGFyZWFFbGVtZW50LnZhbHVlO3RoaXMuX3RleHRhcmVhRWxlbWVudC52YWx1ZT10aGlzLl90ZXh0YXJlYUVsZW1lbnQucGxhY2Vob2xkZXIsdGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHQ9dGhpcy5fbWVhc3VyZVNjcm9sbEhlaWdodCgpLHRoaXMuX3RleHRhcmVhRWxlbWVudC52YWx1ZT10fW5nRG9DaGVjaygpe3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmdGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoKX1yZXNpemVUb0ZpdENvbnRlbnQodD0hMSl7aWYoIXRoaXMuX2VuYWJsZWR8fCh0aGlzLl9jYWNoZVRleHRhcmVhTGluZUhlaWdodCgpLHRoaXMuX2NhY2hlVGV4dGFyZWFQbGFjZWhvbGRlckhlaWdodCgpLCF0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KSlyZXR1cm47bGV0IGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LG89ZS52YWx1ZTtpZighdCYmdGhpcy5fbWluUm93cz09PXRoaXMuX3ByZXZpb3VzTWluUm93cyYmbz09PXRoaXMuX3ByZXZpb3VzVmFsdWUpcmV0dXJuO2xldCBpPXRoaXMuX21lYXN1cmVTY3JvbGxIZWlnaHQoKSxhPU1hdGgubWF4KGksdGhpcy5fY2FjaGVkUGxhY2Vob2xkZXJIZWlnaHR8fDApO2Uuc3R5bGUuaGVpZ2h0PWAke2F9cHhgLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+e3R5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUhPSJ1bmRlZmluZWQiP3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+dGhpcy5fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKGUpKTpzZXRUaW1lb3V0KCgpPT50aGlzLl9zY3JvbGxUb0NhcmV0UG9zaXRpb24oZSkpfSksdGhpcy5fcHJldmlvdXNWYWx1ZT1vLHRoaXMuX3ByZXZpb3VzTWluUm93cz10aGlzLl9taW5Sb3dzfXJlc2V0KCl7dGhpcy5faW5pdGlhbEhlaWdodCE9PXZvaWQgMCYmKHRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5oZWlnaHQ9dGhpcy5faW5pdGlhbEhlaWdodCl9X25vb3BJbnB1dEhhbmRsZXIoKXt9X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fc2Nyb2xsVG9DYXJldFBvc2l0aW9uKHQpe2xldHtzZWxlY3Rpb25TdGFydDplLHNlbGVjdGlvbkVuZDpvfT10OyF0aGlzLl9kZXN0cm95ZWQuaXNTdG9wcGVkJiZ0aGlzLl9oYXNGb2N1cyYmdC5zZXRTZWxlY3Rpb25SYW5nZShlLG8pfX07aGYuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8aGYpKHYoTCksdihWdCksdihDdCksdihfdCw4KSl9O2hmLlx1MDI3NWRpcj12dCh7dHlwZTpoZixzZWxlY3RvcnM6W1sidGV4dGFyZWEiLCJjZGtUZXh0YXJlYUF1dG9zaXplIiwiIl1dLGhvc3RBdHRyczpbInJvd3MiLCIxIiwxLCJjZGstdGV4dGFyZWEtYXV0b3NpemUiXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImlucHV0IixmdW5jdGlvbigpe3JldHVybiBlLl9ub29wSW5wdXRIYW5kbGVyKCl9KX0saW5wdXRzOnttaW5Sb3dzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIiwibWluUm93cyJdLG1heFJvd3M6WyJjZGtBdXRvc2l6ZU1heFJvd3MiLCJtYXhSb3dzIl0sZW5hYmxlZDpbImNka1RleHRhcmVhQXV0b3NpemUiLCJlbmFibGVkIl0scGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIn0sZXhwb3J0QXM6WyJjZGtUZXh0YXJlYUF1dG9zaXplIl19KTtoZi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOlZ0fSx7dHlwZTpDdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbX3RdfV19XTtoZi5wcm9wRGVjb3JhdG9ycz17bWluUm93czpbe3R5cGU6ZCxhcmdzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIl19XSxtYXhSb3dzOlt7dHlwZTpkLGFyZ3M6WyJjZGtBdXRvc2l6ZU1heFJvd3MiXX1dLGVuYWJsZWQ6W3t0eXBlOmQsYXJnczpbImNka1RleHRhcmVhQXV0b3NpemUiXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTpkfV0sX25vb3BJbnB1dEhhbmRsZXI6W3t0eXBlOnhvLGFyZ3M6WyJpbnB1dCJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhoZixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJ0ZXh0YXJlYVtjZGtUZXh0YXJlYUF1dG9zaXplXSIsZXhwb3J0QXM6ImNka1RleHRhcmVhQXV0b3NpemUiLGhvc3Q6e2NsYXNzOiJjZGstdGV4dGFyZWEtYXV0b3NpemUiLHJvd3M6IjEifX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VnR9LHt0eXBlOkN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltfdF19XX1dfSx7bWluUm93czpbe3R5cGU6ZCxhcmdzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIl19XSxtYXhSb3dzOlt7dHlwZTpkLGFyZ3M6WyJjZGtBdXRvc2l6ZU1heFJvd3MiXX1dLGVuYWJsZWQ6W3t0eXBlOmQsYXJnczpbImNka1RleHRhcmVhQXV0b3NpemUiXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTpkfV0sX25vb3BJbnB1dEhhbmRsZXI6W3t0eXBlOnhvLGFyZ3M6WyJpbnB1dCJdfV19KX0pKCk7dmFyIHBtPWNsYXNze307cG0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cG0pfTtwbS5cdTAyNzVtb2Q9cSh7dHlwZTpwbX0pO3BtLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbd2FdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhwbSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltndSxoZl0saW1wb3J0czpbd2FdLGV4cG9ydHM6W2d1LGhmXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChwbSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2d1LGhmXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt3YV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZ3UsaGZdfX0pfSkoKTt2YXIgdXU9Y2xhc3MgZXh0ZW5kcyBoZntnZXQgbWF0QXV0b3NpemVNaW5Sb3dzKCl7cmV0dXJuIHRoaXMubWluUm93c31zZXQgbWF0QXV0b3NpemVNaW5Sb3dzKHQpe3RoaXMubWluUm93cz10fWdldCBtYXRBdXRvc2l6ZU1heFJvd3MoKXtyZXR1cm4gdGhpcy5tYXhSb3dzfXNldCBtYXRBdXRvc2l6ZU1heFJvd3ModCl7dGhpcy5tYXhSb3dzPXR9Z2V0IG1hdEF1dG9zaXplKCl7cmV0dXJuIHRoaXMuZW5hYmxlZH1zZXQgbWF0QXV0b3NpemUodCl7dGhpcy5lbmFibGVkPXR9Z2V0IG1hdFRleHRhcmVhQXV0b3NpemUoKXtyZXR1cm4gdGhpcy5lbmFibGVkfXNldCBtYXRUZXh0YXJlYUF1dG9zaXplKHQpe3RoaXMuZW5hYmxlZD10fX07dXUuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1Gbih1dSkpKShlfHx1dSl9fSgpO3V1Llx1MDI3NWRpcj12dCh7dHlwZTp1dSxzZWxlY3RvcnM6W1sidGV4dGFyZWEiLCJtYXQtYXV0b3NpemUiLCIiXSxbInRleHRhcmVhIiwibWF0VGV4dGFyZWFBdXRvc2l6ZSIsIiJdXSxob3N0QXR0cnM6WyJyb3dzIiwiMSIsMSwiY2RrLXRleHRhcmVhLWF1dG9zaXplIiwibWF0LWF1dG9zaXplIl0saW5wdXRzOntjZGtBdXRvc2l6ZU1pblJvd3M6ImNka0F1dG9zaXplTWluUm93cyIsY2RrQXV0b3NpemVNYXhSb3dzOiJjZGtBdXRvc2l6ZU1heFJvd3MiLG1hdEF1dG9zaXplTWluUm93czoibWF0QXV0b3NpemVNaW5Sb3dzIixtYXRBdXRvc2l6ZU1heFJvd3M6Im1hdEF1dG9zaXplTWF4Um93cyIsbWF0QXV0b3NpemU6WyJtYXQtYXV0b3NpemUiLCJtYXRBdXRvc2l6ZSJdLG1hdFRleHRhcmVhQXV0b3NpemU6Im1hdFRleHRhcmVhQXV0b3NpemUifSxleHBvcnRBczpbIm1hdFRleHRhcmVhQXV0b3NpemUiXSxmZWF0dXJlczpbYWVdfSk7dXUucHJvcERlY29yYXRvcnM9e21hdEF1dG9zaXplTWluUm93czpbe3R5cGU6ZH1dLG1hdEF1dG9zaXplTWF4Um93czpbe3R5cGU6ZH1dLG1hdEF1dG9zaXplOlt7dHlwZTpkLGFyZ3M6WyJtYXQtYXV0b3NpemUiXX1dLG1hdFRleHRhcmVhQXV0b3NpemU6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHV1LFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6InRleHRhcmVhW21hdC1hdXRvc2l6ZV0sIHRleHRhcmVhW21hdFRleHRhcmVhQXV0b3NpemVdIixleHBvcnRBczoibWF0VGV4dGFyZWFBdXRvc2l6ZSIsaW5wdXRzOlsiY2RrQXV0b3NpemVNaW5Sb3dzIiwiY2RrQXV0b3NpemVNYXhSb3dzIl0saG9zdDp7Y2xhc3M6ImNkay10ZXh0YXJlYS1hdXRvc2l6ZSBtYXQtYXV0b3NpemUiLHJvd3M6IjEifX1dfV0sbnVsbCx7bWF0QXV0b3NpemVNaW5Sb3dzOlt7dHlwZTpkfV0sbWF0QXV0b3NpemVNYXhSb3dzOlt7dHlwZTpkfV0sbWF0QXV0b3NpemU6W3t0eXBlOmQsYXJnczpbIm1hdC1hdXRvc2l6ZSJdfV0sbWF0VGV4dGFyZWFBdXRvc2l6ZTpbe3R5cGU6ZH1dfSl9KSgpO2Z1bmN0aW9uIGNOdChuKXtyZXR1cm4gRXJyb3IoYElucHV0IHR5cGUgIiR7bn0iIGlzbid0IHN1cHBvcnRlZCBieSBtYXRJbnB1dC5gKX12YXIgaFk9bmV3IHl0KCJNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IiKTt2YXIgbU50PVsiYnV0dG9uIiwiY2hlY2tib3giLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJyYWRpbyIsInJhbmdlIiwicmVzZXQiLCJzdWJtaXQiXSxmTnQ9MCxwTnQ9VDMoY2xhc3N7Y29uc3RydWN0b3Iobix0LGUsbyl7dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPW4sdGhpcy5fcGFyZW50Rm9ybT10LHRoaXMuX3BhcmVudEZvcm1Hcm91cD1lLHRoaXMubmdDb250cm9sPW99fSksRXI9Y2xhc3MgZXh0ZW5kcyBwTnR7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyxsLGMsbSl7c3VwZXIocixpLGEsbyksdGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fYXV0b2ZpbGxNb25pdG9yPWwsdGhpcy5fZm9ybUZpZWxkPW0sdGhpcy5fdWlkPWBtYXQtaW5wdXQtJHtmTnQrK31gLHRoaXMuZm9jdXNlZD0hMSx0aGlzLnN0YXRlQ2hhbmdlcz1uZXcgSnQsdGhpcy5jb250cm9sVHlwZT0ibWF0LWlucHV0Iix0aGlzLmF1dG9maWxsZWQ9ITEsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fcmVxdWlyZWQ9ITEsdGhpcy5fdHlwZT0idGV4dCIsdGhpcy5fcmVhZG9ubHk9ITEsdGhpcy5fbmV2ZXJFbXB0eUlucHV0VHlwZXM9WyJkYXRlIiwiZGF0ZXRpbWUiLCJkYXRldGltZS1sb2NhbCIsIm1vbnRoIiwidGltZSIsIndlZWsiXS5maWx0ZXIoZz0+Q1UoKS5oYXMoZykpO2xldCBmPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxwPWYubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3I9c3x8Zix0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlPXRoaXMudmFsdWUsdGhpcy5pZD10aGlzLmlkLGUuSU9TJiZjLnJ1bk91dHNpZGVBbmd1bGFyKCgpPT57dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixnPT57bGV0IF89Zy50YXJnZXQ7IV8udmFsdWUmJl8uc2VsZWN0aW9uU3RhcnQ9PT0wJiZfLnNlbGVjdGlvbkVuZD09PTAmJihfLnNldFNlbGVjdGlvblJhbmdlKDEsMSksXy5zZXRTZWxlY3Rpb25SYW5nZSgwLDApKX0pfSksdGhpcy5faXNTZXJ2ZXI9IXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcix0aGlzLl9pc05hdGl2ZVNlbGVjdD1wPT09InNlbGVjdCIsdGhpcy5faXNUZXh0YXJlYT1wPT09InRleHRhcmVhIix0aGlzLl9pc0luRm9ybUZpZWxkPSEhbSx0aGlzLl9pc05hdGl2ZVNlbGVjdCYmKHRoaXMuY29udHJvbFR5cGU9Zi5tdWx0aXBsZT8ibWF0LW5hdGl2ZS1zZWxlY3QtbXVsdGlwbGUiOiJtYXQtbmF0aXZlLXNlbGVjdCIpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLm5nQ29udHJvbCYmdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQhPT1udWxsP3RoaXMubmdDb250cm9sLmRpc2FibGVkOnRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1aZSh0KSx0aGlzLmZvY3VzZWQmJih0aGlzLmZvY3VzZWQ9ITEsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1nZXQgaWQoKXtyZXR1cm4gdGhpcy5faWR9c2V0IGlkKHQpe3RoaXMuX2lkPXR8fHRoaXMuX3VpZH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPVplKHQpfWdldCB0eXBlKCl7cmV0dXJuIHRoaXMuX3R5cGV9c2V0IHR5cGUodCl7dGhpcy5fdHlwZT10fHwidGV4dCIsdGhpcy5fdmFsaWRhdGVUeXBlKCksIXRoaXMuX2lzVGV4dGFyZWEmJkNVKCkuaGFzKHRoaXMuX3R5cGUpJiYodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnR5cGU9dGhpcy5fdHlwZSl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZX1zZXQgdmFsdWUodCl7dCE9PXRoaXMudmFsdWUmJih0aGlzLl9pbnB1dFZhbHVlQWNjZXNzb3IudmFsdWU9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfWdldCByZWFkb25seSgpe3JldHVybiB0aGlzLl9yZWFkb25seX1zZXQgcmVhZG9ubHkodCl7dGhpcy5fcmVhZG9ubHk9WmUodCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ0aGlzLl9hdXRvZmlsbE1vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpLnN1YnNjcmliZSh0PT57dGhpcy5hdXRvZmlsbGVkPXQuaXNBdXRvZmlsbGVkLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pfW5nT25DaGFuZ2VzKCl7dGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2F1dG9maWxsTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpfW5nRG9DaGVjaygpe3RoaXMubmdDb250cm9sJiZ0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKSx0aGlzLl9kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKSx0aGlzLl9kaXJ0eUNoZWNrUGxhY2Vob2xkZXIoKX1mb2N1cyh0KXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X2ZvY3VzQ2hhbmdlZCh0KXt0IT09dGhpcy5mb2N1c2VkJiYodGhpcy5mb2N1c2VkPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fb25JbnB1dCgpe31fZGlydHlDaGVja1BsYWNlaG9sZGVyKCl7dmFyIHQsZTtsZXQgbz0hKChlPSh0PXRoaXMuX2Zvcm1GaWVsZCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0Ll9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKT09PW51bGx8fGU9PT12b2lkIDApJiZlLmNhbGwodCk/bnVsbDp0aGlzLnBsYWNlaG9sZGVyO2lmKG8hPT10aGlzLl9wcmV2aW91c1BsYWNlaG9sZGVyKXtsZXQgaT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fcHJldmlvdXNQbGFjZWhvbGRlcj1vLG8/aS5zZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIixvKTppLnJlbW92ZUF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiKX19X2RpcnR5Q2hlY2tOYXRpdmVWYWx1ZSgpe2xldCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTt0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlIT09dCYmKHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWU9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV92YWxpZGF0ZVR5cGUoKXtpZihtTnQuaW5kZXhPZih0aGlzLl90eXBlKT4tMSYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IGNOdCh0aGlzLl90eXBlKX1faXNOZXZlckVtcHR5KCl7cmV0dXJuIHRoaXMuX25ldmVyRW1wdHlJbnB1dFR5cGVzLmluZGV4T2YodGhpcy5fdHlwZSk+LTF9X2lzQmFkSW5wdXQoKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsaWRpdHk7cmV0dXJuIHQmJnQuYmFkSW5wdXR9Z2V0IGVtcHR5KCl7cmV0dXJuIXRoaXMuX2lzTmV2ZXJFbXB0eSgpJiYhdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlJiYhdGhpcy5faXNCYWRJbnB1dCgpJiYhdGhpcy5hdXRvZmlsbGVkfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7aWYodGhpcy5faXNOYXRpdmVTZWxlY3Qpe2xldCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxlPXQub3B0aW9uc1swXTtyZXR1cm4gdGhpcy5mb2N1c2VkfHx0Lm11bHRpcGxlfHwhdGhpcy5lbXB0eXx8ISEodC5zZWxlY3RlZEluZGV4Pi0xJiZlJiZlLmxhYmVsKX1lbHNlIHJldHVybiB0aGlzLmZvY3VzZWR8fCF0aGlzLmVtcHR5fXNldERlc2NyaWJlZEJ5SWRzKHQpe3QubGVuZ3RoP3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLHQuam9pbigiICIpKTp0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iil9b25Db250YWluZXJDbGljaygpe3RoaXMuZm9jdXNlZHx8dGhpcy5mb2N1cygpfV9pc0lubGluZVNlbGVjdCgpe2xldCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtyZXR1cm4gdGhpcy5faXNOYXRpdmVTZWxlY3QmJih0Lm11bHRpcGxlfHx0LnNpemU+MSl9fTtFci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxFcikodihMKSx2KFZ0KSx2KEVhLDEwKSx2KEtpLDgpLHYoSmksOCksdihSYSksdihoWSwxMCksdihjYyksdihDdCksdihBcCw4KSl9O0VyLlx1MDI3NWRpcj12dCh7dHlwZTpFcixzZWxlY3RvcnM6W1siaW5wdXQiLCJtYXRJbnB1dCIsIiJdLFsidGV4dGFyZWEiLCJtYXRJbnB1dCIsIiJdLFsic2VsZWN0IiwibWF0TmF0aXZlQ29udHJvbCIsIiJdLFsiaW5wdXQiLCJtYXROYXRpdmVDb250cm9sIiwiIl0sWyJ0ZXh0YXJlYSIsIm1hdE5hdGl2ZUNvbnRyb2wiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtaW5wdXQtZWxlbWVudCIsIm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2wiXSxob3N0VmFyczoxMSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBlLl9mb2N1c0NoYW5nZWQoITApfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZvY3VzQ2hhbmdlZCghMSl9KSgiaW5wdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX29uSW5wdXQoKX0pLHQmMiYmKHVsKCJkaXNhYmxlZCIsZS5kaXNhYmxlZCkoInJlcXVpcmVkIixlLnJlcXVpcmVkKSxyZSgiaWQiLGUuaWQpKCJkYXRhLXBsYWNlaG9sZGVyIixlLnBsYWNlaG9sZGVyKSgicmVhZG9ubHkiLGUucmVhZG9ubHkmJiFlLl9pc05hdGl2ZVNlbGVjdHx8bnVsbCkoImFyaWEtaW52YWxpZCIsZS5lbXB0eSYmZS5yZXF1aXJlZD9udWxsOmUuZXJyb3JTdGF0ZSkoImFyaWEtcmVxdWlyZWQiLGUucmVxdWlyZWQpLG1lKCJtYXQtaW5wdXQtc2VydmVyIixlLl9pc1NlcnZlcikoIm1hdC1uYXRpdmUtc2VsZWN0LWlubGluZSIsZS5faXNJbmxpbmVTZWxlY3QoKSkpfSxpbnB1dHM6e2lkOiJpZCIsZGlzYWJsZWQ6ImRpc2FibGVkIixyZXF1aXJlZDoicmVxdWlyZWQiLHR5cGU6InR5cGUiLHZhbHVlOiJ2YWx1ZSIscmVhZG9ubHk6InJlYWRvbmx5IixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciIsdXNlckFyaWFEZXNjcmliZWRCeTpbImFyaWEtZGVzY3JpYmVkYnkiLCJ1c2VyQXJpYURlc2NyaWJlZEJ5Il19LGV4cG9ydEFzOlsibWF0SW5wdXQiXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOmpyLHVzZUV4aXN0aW5nOkVyfV0pLGFlLFdlXX0pO0VyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VnR9LHt0eXBlOkVhLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufV19LHt0eXBlOktpLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6SmksZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpSYX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufSx7dHlwZTpOLGFyZ3M6W2hZXX1dfSx7dHlwZTpjY30se3R5cGU6Q3R9LHt0eXBlOm9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbQXBdfV19XTtFci5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZWQ6W3t0eXBlOmR9XSxpZDpbe3R5cGU6ZH1dLHBsYWNlaG9sZGVyOlt7dHlwZTpkfV0scmVxdWlyZWQ6W3t0eXBlOmR9XSx0eXBlOlt7dHlwZTpkfV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOmR9XSx1c2VyQXJpYURlc2NyaWJlZEJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSx2YWx1ZTpbe3R5cGU6ZH1dLHJlYWRvbmx5Olt7dHlwZTpkfV0sX2ZvY3VzQ2hhbmdlZDpbe3R5cGU6eG8sYXJnczpbImZvY3VzIixbInRydWUiXV19LHt0eXBlOnhvLGFyZ3M6WyJibHVyIixbImZhbHNlIl1dfV0sX29uSW5wdXQ6W3t0eXBlOnhvLGFyZ3M6WyJpbnB1dCJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhFcixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOmBpbnB1dFttYXRJbnB1dF0sIHRleHRhcmVhW21hdElucHV0XSwgc2VsZWN0W21hdE5hdGl2ZUNvbnRyb2xdLAogICAgICBpbnB1dFttYXROYXRpdmVDb250cm9sXSwgdGV4dGFyZWFbbWF0TmF0aXZlQ29udHJvbF1gLGV4cG9ydEFzOiJtYXRJbnB1dCIsaG9zdDp7Y2xhc3M6Im1hdC1pbnB1dC1lbGVtZW50IG1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2wiLCJbY2xhc3MubWF0LWlucHV0LXNlcnZlcl0iOiJfaXNTZXJ2ZXIiLCJbYXR0ci5pZF0iOiJpZCIsIlthdHRyLmRhdGEtcGxhY2Vob2xkZXJdIjoicGxhY2Vob2xkZXIiLCJbZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbcmVxdWlyZWRdIjoicmVxdWlyZWQiLCJbYXR0ci5yZWFkb25seV0iOiJyZWFkb25seSAmJiAhX2lzTmF0aXZlU2VsZWN0IHx8IG51bGwiLCJbY2xhc3MubWF0LW5hdGl2ZS1zZWxlY3QtaW5saW5lXSI6Il9pc0lubGluZVNlbGVjdCgpIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6IihlbXB0eSAmJiByZXF1aXJlZCkgPyBudWxsIDogZXJyb3JTdGF0ZSIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoicmVxdWlyZWQifSxwcm92aWRlcnM6W3twcm92aWRlOmpyLHVzZUV4aXN0aW5nOkVyfV19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOlZ0fSx7dHlwZTpFYSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn1dfSx7dHlwZTpLaSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkppLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6UmF9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpJbn0se3R5cGU6TixhcmdzOltoWV19XX0se3R5cGU6Y2N9LHt0eXBlOkN0fSx7dHlwZTpvaSxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W0FwXX1dfV19LHtpZDpbe3R5cGU6ZH1dLGRpc2FibGVkOlt7dHlwZTpkfV0scmVxdWlyZWQ6W3t0eXBlOmR9XSx0eXBlOlt7dHlwZTpkfV0sdmFsdWU6W3t0eXBlOmR9XSxyZWFkb25seTpbe3R5cGU6ZH1dLF9mb2N1c0NoYW5nZWQ6W3t0eXBlOnhvLGFyZ3M6WyJmb2N1cyIsWyJ0cnVlIl1dfSx7dHlwZTp4byxhcmdzOlsiYmx1ciIsWyJmYWxzZSJdXX1dLF9vbklucHV0Olt7dHlwZTp4byxhcmdzOlsiaW5wdXQiXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTpkfV0sZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOmR9XSx1c2VyQXJpYURlc2NyaWJlZEJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XX0pfSkoKTt2YXIgYWk9Y2xhc3N7fTthaS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxhaSl9O2FpLlx1MDI3NW1vZD1xKHt0eXBlOmFpfSk7YWkuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbUmFdLGltcG9ydHM6W1twbSxncixEdF0scG0sZ3JdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGFpLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0VyLHV1XSxpbXBvcnRzOltwbSxncixEdF0sZXhwb3J0czpbcG0sZ3IsRXIsdXVdLHByb3ZpZGVyczpbUmFdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGFpLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bRXIsdXVdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3BtLGdyLER0XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltwbSxncixFcix1dV19fSl9KSgpO2Z1bmN0aW9uIGROdChuLHQpe2lmKG4mMSYmKHUoMCwibWF0LWVycm9yIiksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMSksbGUoIiBSZWxvYWQgcGVyaW9kIGhhcyB0byBiZSBtaW5pbXVtIG9mICIsZS5NSU5fUkVMT0FEX1BFUklPRF9JTl9TLCIgc2Vjb25kcy4gIil9fWZ1bmN0aW9uIGdOdChuLHQpe24mMSYmKHUoMCwibWF0LWVycm9yIiksVCgxLCIgUGFnZSBzaXplIGhhcyB0byBiZSBhIHBvc2l0aXZlIGludGVnZXIuICIpLGgoKSl9ZnVuY3Rpb24gdU50KCl7cmV0dXJuIG49PntsZXQgdD1OdW1iZXIobi52YWx1ZSk7cmV0dXJuIE1hdGgucm91bmQodCk9PT1uLnZhbHVlP251bGw6e2ludGVnZXI6e3ZhbHVlOm4udmFsdWV9fX19dmFyIGUwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5yZWxvYWRUb2dnbGVkPW5ldyAkLHRoaXMucmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQ9bmV3ICQsdGhpcy5wYWdlU2l6ZUNoYW5nZWQ9bmV3ICQsdGhpcy5NSU5fUkVMT0FEX1BFUklPRF9JTl9TPVZJLzFlMyx0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2w9bmV3IHpwKHRoaXMuTUlOX1JFTE9BRF9QRVJJT0RfSU5fUyxbSXAucmVxdWlyZWQsSXAubWluKHRoaXMuTUlOX1JFTE9BRF9QRVJJT0RfSU5fUyldKSx0aGlzLnBhZ2luYXRpb25Db250cm9sPW5ldyB6cCgxLFtJcC5yZXF1aXJlZCxJcC5taW4oMSksdU50KCldKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEp0fW5nT25Jbml0KCl7dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksbHIoNTAwKSx1ZSgoKT0+dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbGlkKSkuc3Vic2NyaWJlKCgpPT57aWYoIXRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWxpZClyZXR1cm47bGV0IHQ9dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbHVlKjFlMzt0aGlzLnJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkLmVtaXQodCl9KSx0aGlzLnBhZ2luYXRpb25Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksbHIoNTAwKSx1ZSgoKT0+dGhpcy5wYWdpbmF0aW9uQ29udHJvbC52YWxpZCkpLnN1YnNjcmliZSgoKT0+e3RoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQodGhpcy5wYWdpbmF0aW9uQ29udHJvbC52YWx1ZSl9KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkNoYW5nZXModCl7aWYodC5yZWxvYWRQZXJpb2RJbk1zKXtsZXQgZT10LnJlbG9hZFBlcmlvZEluTXM7ZS5wcmV2aW91c1ZhbHVlIT09ZS5jdXJyZW50VmFsdWUmJnRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC5zZXRWYWx1ZShlLmN1cnJlbnRWYWx1ZS8xZTMpfWlmKHQucmVsb2FkRW5hYmxlZCYmKHQucmVsb2FkRW5hYmxlZC5jdXJyZW50VmFsdWU/dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLmVuYWJsZSgpOnRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC5kaXNhYmxlKCkpLHQucGFnZVNpemUpe2xldCBlPXQucGFnZVNpemU7ZS5wcmV2aW91c1ZhbHVlIT09ZS5jdXJyZW50VmFsdWUmJnRoaXMucGFnaW5hdGlvbkNvbnRyb2wuc2V0VmFsdWUoZS5jdXJyZW50VmFsdWUpfX1vblJlbG9hZFRvZ2dsZSgpe3RoaXMucmVsb2FkVG9nZ2xlZC5lbWl0KCl9fTtlMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxlMCl9O2UwLlx1MDI3NWNtcD16KHt0eXBlOmUwLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50Il1dLGlucHV0czp7cmVsb2FkRW5hYmxlZDoicmVsb2FkRW5hYmxlZCIscmVsb2FkUGVyaW9kSW5NczoicmVsb2FkUGVyaW9kSW5NcyIscGFnZVNpemU6InBhZ2VTaXplIn0sb3V0cHV0czp7cmVsb2FkVG9nZ2xlZDoicmVsb2FkVG9nZ2xlZCIscmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQ6InJlbG9hZFBlcmlvZEluTXNDaGFuZ2VkIixwYWdlU2l6ZUNoYW5nZWQ6InBhZ2VTaXplQ2hhbmdlZCJ9LGZlYXR1cmVzOltXZV0sZGVjbHM6MTQsdmFyczo1LGNvbnN0czpbWzEsInJlbG9hZC10b2dnbGUiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsibWF0SW5wdXQiLCIiLCJ0eXBlIiwibnVtYmVyIiwicGxhY2Vob2xkZXIiLCJSZWxvYWQgUGVyaW9kIChzZWNvbmRzKSIsMSwicmVsb2FkLXBlcmlvZCIsMywiZm9ybUNvbnRyb2wiXSxbNCwibmdJZiJdLFsibWF0SW5wdXQiLCIiLCJ0eXBlIiwibnVtYmVyIiwicGxhY2Vob2xkZXIiLCJQYWdpbmF0aW9uIExpbWl0IiwxLCJwYWdlLXNpemUiLDMsImZvcm1Db250cm9sIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJoMyIpLFQoMSwiU2V0dGluZ3MiKSxoKCksdSgyLCJkaXYiKSx1KDMsImRpdiIsMCksdSg0LCJtYXQtY2hlY2tib3giLDEpLEEoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblJlbG9hZFRvZ2dsZSgpfSksVCg1LCJSZWxvYWQgZGF0YSIpLGgoKSxoKCksdSg2LCJkaXYiKSx1KDcsIm1hdC1mb3JtLWZpZWxkIiksRCg4LCJpbnB1dCIsMiksaCgpLGsoOSxkTnQsMiwxLCJtYXQtZXJyb3IiLDMpLGgoKSxoKCksdSgxMCwiZGl2IiksdSgxMSwibWF0LWZvcm0tZmllbGQiKSxEKDEyLCJpbnB1dCIsNCksaCgpLGsoMTMsZ050LDIsMCwibWF0LWVycm9yIiwzKSxoKCkpLHQmMiYmKHgoNCksUCgiY2hlY2tlZCIsZS5yZWxvYWRFbmFibGVkKSx4KDQpLFAoImZvcm1Db250cm9sIixlLnJlbG9hZFBlcmlvZENvbnRyb2wpLHgoMSksUCgibmdJZiIsZS5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJtaW4iKXx8ZS5yZWxvYWRQZXJpb2RDb250cm9sLmhhc0Vycm9yKCJyZXF1aXJlZCIpKSx4KDMpLFAoImZvcm1Db250cm9sIixlLnBhZ2luYXRpb25Db250cm9sKSx4KDEpLFAoIm5nSWYiLGUucGFnaW5hdGlvbkNvbnRyb2wuaW52YWxpZCkpfSxkaXJlY3RpdmVzOltfcixvaSxFcixEcCxyYyxsZixCcyxYdCxhY10sc3R5bGVzOltgW19uZ2hvc3QtJUNPTVAlXSB7CiAgZm9udC1zaXplOiAxNXB4Owp9CgpbX25naG9zdC0lQ09NUCVdICAgID4gZGl2W19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgbWFyZ2luOiAxMHB4IDA7Cn0KCltfbmdob3N0LSVDT01QJV0gICAgPiBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tdG9wOiAwOwp9CgpbX25naG9zdC0lQ09NUCVdICAgID4gW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LWNoaWxkIHsKICBtYXJnaW4tYm90dG9tOiAwOwp9CgpoM1tfbmdjb250ZW50LSVDT01QJV0gewogIGZvbnQtc2l6ZTogMjBweDsKfQoKLnJlbG9hZC10b2dnbGVbX25nY29udGVudC0lQ09NUCVdIHsKICBtYXJnaW4tYm90dG9tOiAxMHB4Owp9YF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZTAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoic2V0dGluZ3NfZGlhbG9nX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3NldHRpbmdzX2RpYWxvZ19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse3JlbG9hZEVuYWJsZWQ6W3t0eXBlOmR9XSxyZWxvYWRQZXJpb2RJbk1zOlt7dHlwZTpkfV0scGFnZVNpemU6W3t0eXBlOmR9XSxyZWxvYWRUb2dnbGVkOlt7dHlwZTpCfV0scmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQ6W3t0eXBlOkJ9XSxwYWdlU2l6ZUNoYW5nZWQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgX2Y9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucmVsb2FkRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoWEUpLHRoaXMucmVsb2FkUGVyaW9kSW5NcyQ9dGhpcy5zdG9yZS5zZWxlY3QoUUUpLHRoaXMucGFnZVNpemUkPXRoaXMuc3RvcmUuc2VsZWN0KFl2KX1vblJlbG9hZFRvZ2dsZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFlFKCkpfW9uUmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChHRSh7cGVyaW9kSW5Nczp0fSkpfW9uUGFnZVNpemVDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goV0Uoe3NpemU6dH0pKX19O19mLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF9mKSh2KHN0KSl9O19mLlx1MDI3NWNtcD16KHt0eXBlOl9mLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1kaWFsb2ciXV0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywicmVsb2FkRW5hYmxlZCIsInJlbG9hZFBlcmlvZEluTXMiLCJwYWdlU2l6ZSIsInJlbG9hZFRvZ2dsZWQiLCJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIsInBhZ2VTaXplQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwic2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudCIsMCksQSgicmVsb2FkVG9nZ2xlZCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblJlbG9hZFRvZ2dsZWQoKX0pKCJyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25SZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZChpKX0pKCJwYWdlU2l6ZUNoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uUGFnZVNpemVDaGFuZ2VkKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksaCgpKSx0JjImJlAoInJlbG9hZEVuYWJsZWQiLFEoMSwzLGUucmVsb2FkRW5hYmxlZCQpKSgicmVsb2FkUGVyaW9kSW5NcyIsUSgyLDUsZS5yZWxvYWRQZXJpb2RJbk1zJCkpKCJwYWdlU2l6ZSIsUSgzLDcsZS5wYWdlU2l6ZSQpKX0sZGlyZWN0aXZlczpbZTBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9mLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic2V0dGluZ3MtZGlhbG9nIix0ZW1wbGF0ZTpgCiAgICA8c2V0dGluZ3MtZGlhbG9nLWNvbXBvbmVudAogICAgICBbcmVsb2FkRW5hYmxlZF09InJlbG9hZEVuYWJsZWQkIHwgYXN5bmMiCiAgICAgIFtyZWxvYWRQZXJpb2RJbk1zXT0icmVsb2FkUGVyaW9kSW5NcyQgfCBhc3luYyIKICAgICAgW3BhZ2VTaXplXT0icGFnZVNpemUkIHwgYXN5bmMiCiAgICAgIChyZWxvYWRUb2dnbGVkKT0ib25SZWxvYWRUb2dnbGVkKCkiCiAgICAgIChyZWxvYWRQZXJpb2RJbk1zQ2hhbmdlZCk9Im9uUmVsb2FkUGVyaW9kSW5Nc0NoYW5nZWQoJGV2ZW50KSIKICAgICAgKHBhZ2VTaXplQ2hhbmdlZCk9Im9uUGFnZVNpemVDaGFuZ2VkKCRldmVudCkiCiAgICA+PC9zZXR0aW5ncy1kaWFsb2ctY29tcG9uZW50PgogIGB9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTt2YXIgV3A9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5kaWFsb2c9dH1pc0J1dHRvbkRpc2FibGVkKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT1LdC5OT1RfTE9BREVEfHx0aGlzLnNldHRpbmdzTG9hZFN0YXRlPT09S3QuTE9BRElOR31vcGVuRGlhbG9nKCl7dGhpcy5kaWFsb2cub3BlbihfZix7d2lkdGg6IjQwMHB4In0pfX07V3AuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8V3ApKHYoQ2kpKX07V3AuXHUwMjc1Y21wPXooe3R5cGU6V3Asc2VsZWN0b3JzOltbInNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQiXV0saW5wdXRzOntzZXR0aW5nc0xvYWRTdGF0ZToic2V0dGluZ3NMb2FkU3RhdGUifSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiYnV0dG9uIiwwKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vcGVuRGlhbG9nKCl9KSxEKDEsIm1hdC1pY29uIiwxKSxoKCkpLHQmMiYmUCgiZGlzYWJsZWQiLGUuaXNCdXR0b25EaXNhYmxlZCgpKX0sZGlyZWN0aXZlczpbZm4sWGVdLGVuY2Fwc3VsYXRpb246Mn0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhXcCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InNldHRpbmdzLWJ1dHRvbi1jb21wb25lbnQiLHRlbXBsYXRlOmAKICAgIDxidXR0b24KICAgICAgbWF0LWljb24tYnV0dG9uCiAgICAgIFtkaXNhYmxlZF09ImlzQnV0dG9uRGlzYWJsZWQoKSIKICAgICAgKGNsaWNrKT0ib3BlbkRpYWxvZygpIgogICAgPgogICAgICA8bWF0LWljb24gc3ZnSWNvbj0ic2V0dGluZ3NfMjRweCI+PC9tYXQtaWNvbj4KICAgIDwvYnV0dG9uPgogIGB9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkNpfV19LHtzZXR0aW5nc0xvYWRTdGF0ZTpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBxcD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zZXR0aW5nc0xvYWRTdGF0ZSQ9dGhpcy5zdG9yZS5zZWxlY3QoZlUpfX07cXAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cXApKHYoc3QpKX07cXAuXHUwMjc1Y21wPXooe3R5cGU6cXAsc2VsZWN0b3JzOltbInNldHRpbmdzLWJ1dHRvbiJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJzZXR0aW5nc0xvYWRTdGF0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwic2V0dGluZ3MtYnV0dG9uLWNvbXBvbmVudCIsMCksWCgxLCJhc3luYyIpKSx0JjImJlAoInNldHRpbmdzTG9hZFN0YXRlIixRKDEsMSxlLnNldHRpbmdzTG9hZFN0YXRlJCkpfSxkaXJlY3RpdmVzOltXcF0scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocXAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJzZXR0aW5ncy1idXR0b24iLHRlbXBsYXRlOmAKICAgIDxzZXR0aW5ncy1idXR0b24tY29tcG9uZW50CiAgICAgIFtzZXR0aW5nc0xvYWRTdGF0ZV09InNldHRpbmdzTG9hZFN0YXRlJCB8IGFzeW5jIgogICAgPjwvc2V0dGluZ3MtYnV0dG9uLWNvbXBvbmVudD4KICBgfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIFpwPWNsYXNze307WnAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WnApfTtacC5cdTAyNzVjbXA9eih7dHlwZTpacCxzZWxlY3RvcnM6W1siYXBwLWhlYWRlciJdXSxkZWNsczoxMCx2YXJzOjAsY29uc3RzOltbMSwiYnJhbmQiXSxbMSwicGx1Z2lucyJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIsInJlbCIsIm5vb3BlbmVyIG5vcmVmZXJyZXIiLCJ0YXJnZXQiLCJfYmxhbmsiLCJhcmlhLWxhYmVsIiwiSGVscCIsMSwicmVhZG1lIl0sWyJzdmdJY29uIiwiaGVscF9vdXRsaW5lXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsIm1hdC10b29sYmFyIiksdSgxLCJzcGFuIiwwKSxUKDIsIlRlbnNvckJvYXJkIiksaCgpLEQoMywicGx1Z2luLXNlbGVjdG9yIiwxKSxEKDQsInRiZGV2LXVwbG9hZC1idXR0b24iKSxEKDUsImFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZSIpLEQoNiwiYXBwLWhlYWRlci1yZWxvYWQiKSxEKDcsInNldHRpbmdzLWJ1dHRvbiIpLHUoOCwiYSIsMiksRCg5LCJtYXQtaWNvbiIsMyksaCgpLGgoKSl9LGRpcmVjdGl2ZXM6W2FmLExwLFZwLFlwLEdwLHFwLGVsLFhlXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjY0cHg7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9dGJkZXYtdXBsb2FkLWJ1dHRvbi5zaG93bltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgOHB4IDAgMTZweH0uYnJhbmRbX25nY29udGVudC0lQ09NUCVdLCAucmVhZG1lW19uZ2NvbnRlbnQtJUNPTVAlXSwgYXBwLWhlYWRlci1yZWxvYWRbX25nY29udGVudC0lQ09NUCVdLCBzZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwIGF1dG99LmJyYW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtsZXR0ZXItc3BhY2luZzotMC4wMjVlbTttYXJnaW4tbGVmdDoxMHB4O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0ucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0nXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhacCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImFwcC1oZWFkZXIiLHRlbXBsYXRlOmAKICAgIDxtYXQtdG9vbGJhcj4KICAgICAgPHNwYW4gY2xhc3M9ImJyYW5kIj5UZW5zb3JCb2FyZDwvc3Bhbj4KICAgICAgPHBsdWdpbi1zZWxlY3RvciBjbGFzcz0icGx1Z2lucyI+PC9wbHVnaW4tc2VsZWN0b3I+CiAgICAgIDx0YmRldi11cGxvYWQtYnV0dG9uPjwvdGJkZXYtdXBsb2FkLWJ1dHRvbj4KICAgICAgPGFwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZT48L2FwcC1oZWFkZXItZGFyay1tb2RlLXRvZ2dsZT4KICAgICAgPGFwcC1oZWFkZXItcmVsb2FkPjwvYXBwLWhlYWRlci1yZWxvYWQ+CiAgICAgIDxzZXR0aW5ncy1idXR0b24+PC9zZXR0aW5ncy1idXR0b24+CiAgICAgIDxhCiAgICAgICAgY2xhc3M9InJlYWRtZSIKICAgICAgICBtYXQtaWNvbi1idXR0b24KICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgcmVsPSJub29wZW5lciBub3JlZmVycmVyIgogICAgICAgIHRhcmdldD0iX2JsYW5rIgogICAgICAgIGFyaWEtbGFiZWw9IkhlbHAiCiAgICAgID4KICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj0iaGVscF9vdXRsaW5lXzI0cHgiPjwvbWF0LWljb24+CiAgICAgIDwvYT4KICAgIDwvbWF0LXRvb2xiYXI+CiAgYCxzdHlsZVVybHM6WyJoZWFkZXJfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpfSkoKTt2YXIgYk50PVsicm91dGVDb250YWluZXIiXSxuMD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj10fW5nT25DaGFuZ2VzKHQpe2xldCBlPXQuYWN0aXZlTmdDb21wb25lbnQ7aWYoZSYmKHRoaXMucm91dGVDb250YWluZXIuY2xlYXIoKSxlLmN1cnJlbnRWYWx1ZSkpe2xldCBvPXRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGUuY3VycmVudFZhbHVlKTt0aGlzLnJvdXRlQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChvKX19fTtuMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuMCkodihfbykpfTtuMC5cdTAyNzVjbXA9eih7dHlwZTpuMCxzZWxlY3RvcnM6W1sicm91dGVyLW91dGxldC1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShiTnQsNyxfZSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5yb3V0ZUNvbnRhaW5lcj1vLmZpcnN0KX19LGlucHV0czp7YWN0aXZlTmdDb21wb25lbnQ6ImFjdGl2ZU5nQ29tcG9uZW50In0sZmVhdHVyZXM6W1dlXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sicm91dGVDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJk1vKDAsbnVsbCwwKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG4wLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoicm91dGVyLW91dGxldC1jb21wb25lbnQiLHRlbXBsYXRlOiIgPG5nLWNvbnRhaW5lciAjcm91dGVDb250YWluZXI+PC9uZy1jb250YWluZXI+ICIsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X299XX0se3JvdXRlQ29udGFpbmVyOlt7dHlwZTpJdCxhcmdzOlsicm91dGVDb250YWluZXIiLHtzdGF0aWM6ITAscmVhZDpfZX1dfV0sYWN0aXZlTmdDb21wb25lbnQ6W3t0eXBlOmR9XX0pfSkoKTt2YXIgWHA9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnN0b3JlPXQsdGhpcy5yZWdpc3RyeT1lLHRoaXMuYWN0aXZlTmdDb21wb25lbnQkPW9uKFt0aGlzLnN0b3JlLnNlbGVjdCh0cCksdGhpcy5zdG9yZS5zZWxlY3Qoam90KV0pLnBpcGUoRygoW28saV0pPT5vP2khPT1udWxsJiYhS2MobyxpKT9udWxsOnRoaXMucmVnaXN0cnkuZ2V0TmdDb21wb25lbnRCeVJvdXRlS2luZChvLnJvdXRlS2luZCk6bnVsbCkpfX07WHAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WHApKHYoc3QpLHYoaWEpKX07WHAuXHUwMjc1Y21wPXooe3R5cGU6WHAsc2VsZWN0b3JzOltbInJvdXRlci1vdXRsZXQiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywiYWN0aXZlTmdDb21wb25lbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsInJvdXRlci1vdXRsZXQtY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIikpLHQmMiYmUCgiYWN0aXZlTmdDb21wb25lbnQiLFEoMSwxLGUuYWN0aXZlTmdDb21wb25lbnQkKSl9LGRpcmVjdGl2ZXM6W24wXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhYcCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InJvdXRlci1vdXRsZXQiLHRlbXBsYXRlOmAKICAgIDxyb3V0ZXItb3V0bGV0LWNvbXBvbmVudAogICAgICBbYWN0aXZlTmdDb21wb25lbnRdPSJhY3RpdmVOZ0NvbXBvbmVudCQgfCBhc3luYyIKICAgID48L3JvdXRlci1vdXRsZXQtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9LHt0eXBlOmlhfV19LG51bGwpfSkoKTt2YXIgU2s7KGZ1bmN0aW9uKG4pe25bbi5BQ1RJVkVfUExVR0lOPTBdPSJBQ1RJVkVfUExVR0lOIn0pKFNrfHwoU2s9e30pKTt2YXIgbzA9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5kZWVwTGlua2VyPXQsdGhpcy5vblZhbHVlQ2hhbmdlPW5ldyAkLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSnQsdGhpcy5vbkhhc2hDaGFuZ2U9am8od2luZG93LCJwb3BzdGF0ZSIse3Bhc3NpdmU6ITB9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSkpfW5nT25Jbml0KCl7dGhpcy5vbkhhc2hDaGFuZ2Uuc3Vic2NyaWJlKCgpPT57bGV0IHQ9dGhpcy5kZWVwTGlua2VyLmdldFBsdWdpbklkKCk7dCE9PXRoaXMuYWN0aXZlUGx1Z2luSWQmJnRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KHtwcm9wOlNrLkFDVElWRV9QTFVHSU4sdmFsdWU6dH0pfSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nT25DaGFuZ2VzKHQpe2lmKHQuYWN0aXZlUGx1Z2luSWQpe2xldCBlPXQuYWN0aXZlUGx1Z2luSWQsbz17ZGVmYXVsdFZhbHVlOiIiLHVzZUxvY2F0aW9uUmVwbGFjZTplLnByZXZpb3VzVmFsdWU9PT1udWxsfHxlLmZpcnN0Q2hhbmdlfSxpPWUuY3VycmVudFZhbHVlPT09bnVsbD8iIjplLmN1cnJlbnRWYWx1ZTt0aGlzLmRlZXBMaW5rZXIuc2V0UGx1Z2luSWQoaSxvKX19fTtvMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxvMCkodihtTSkpfTtvMC5cdTAyNzVjbXA9eih7dHlwZTpvMCxzZWxlY3RvcnM6W1siaGFzaC1zdG9yYWdlLWNvbXBvbmVudCJdXSxpbnB1dHM6e2FjdGl2ZVBsdWdpbklkOiJhY3RpdmVQbHVnaW5JZCJ9LG91dHB1dHM6e29uVmFsdWVDaGFuZ2U6Im9uVmFsdWVDaGFuZ2UifSxmZWF0dXJlczpbV2VdLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobzAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJoYXNoLXN0b3JhZ2UtY29tcG9uZW50Iix0ZW1wbGF0ZToiIixjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTptTX1dfSx7YWN0aXZlUGx1Z2luSWQ6W3t0eXBlOmR9XSxvblZhbHVlQ2hhbmdlOlt7dHlwZTpCfV19KX0pKCk7dmFyIFFwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVBsdWdpbklkJD10aGlzLnN0b3JlLnBpcGUoemUoZW0pKX1vblZhbHVlQ2hhbmdlZCh0KXtzd2l0Y2godC5wcm9wKXtjYXNlIFNrLkFDVElWRV9QTFVHSU46dGhpcy5zdG9yZS5kaXNwYXRjaChtRCh7cGx1Z2luOnQudmFsdWV9KSk7YnJlYWt9fX07UXAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UXApKHYoc3QpKX07UXAuXHUwMjc1Y21wPXooe3R5cGU6UXAsc2VsZWN0b3JzOltbImhhc2gtc3RvcmFnZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJhY3RpdmVQbHVnaW5JZCIsIm9uVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImhhc2gtc3RvcmFnZS1jb21wb25lbnQiLDApLEEoIm9uVmFsdWVDaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uVmFsdWVDaGFuZ2VkKGkpfSksWCgxLCJhc3luYyIpLGgoKSksdCYyJiZQKCJhY3RpdmVQbHVnaW5JZCIsUSgxLDEsZS5hY3RpdmVQbHVnaW5JZCQpKX0sZGlyZWN0aXZlczpbbzBdLHBpcGVzOltvZV0sc3R5bGVzOltgW19uZ2hvc3QtJUNPTVAlXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfWBdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFFwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiaGFzaC1zdG9yYWdlIix0ZW1wbGF0ZTpgCiAgICA8aGFzaC1zdG9yYWdlLWNvbXBvbmVudAogICAgICBbYWN0aXZlUGx1Z2luSWRdPSJhY3RpdmVQbHVnaW5JZCQgfCBhc3luYyIKICAgICAgKG9uVmFsdWVDaGFuZ2UpPSJvblZhbHVlQ2hhbmdlZCgkZXZlbnQpIgogICAgPgogICAgPC9oYXNoLXN0b3JhZ2UtY29tcG9uZW50PgogIGAsc3R5bGVzOltgCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICBgXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gdk50KG4pe2RvY3VtZW50LnRpdGxlPW59dmFyIHdOdD17c2V0RG9jdW1lbnRUaXRsZTp2TnR9LGkwPWNsYXNze25nT25DaGFuZ2VzKHQpe3QudGl0bGUmJndOdC5zZXREb2N1bWVudFRpdGxlKHQudGl0bGUuY3VycmVudFZhbHVlKX19O2kwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGkwKX07aTAuXHUwMjc1Y21wPXooe3R5cGU6aTAsc2VsZWN0b3JzOltbInBhZ2UtdGl0bGUtY29tcG9uZW50Il1dLGlucHV0czp7dGl0bGU6InRpdGxlIn0sZmVhdHVyZXM6W1dlXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGkwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoicGFnZS10aXRsZS1jb21wb25lbnQiLHRlbXBsYXRlOiIiLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse3RpdGxlOlt7dHlwZTpkfV19KX0pKCk7dmFyIEFzdD0iVGVuc29yQm9hcmQiLEtwPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuY3VzdG9tQnJhbmROYW1lPWUsdGhpcy5nZXRFeHBlcmltZW50SWQkPXRoaXMuc3RvcmUuc2VsZWN0KEpzKS5waXBlKEcobz0+bz09bnVsbD92b2lkIDA6b1swXSkpLHRoaXMuZXhwZXJpbWVudE5hbWUkPXRoaXMuZ2V0RXhwZXJpbWVudElkJC5waXBlKHVlKEJvb2xlYW4pLFVuKG89PnRoaXMuc3RvcmUuc2VsZWN0KGtELHtleHBlcmltZW50SWQ6b30pKSxHKG89Pm8/by5uYW1lOm51bGwpKSx0aGlzLnRpdGxlJD10aGlzLnN0b3JlLnNlbGVjdCh1MykucGlwZShQYSh0aGlzLnN0b3JlLnNlbGVjdChxYiksdGhpcy5leHBlcmltZW50TmFtZSQpLEcoKFtvLGksYV0pPT57bGV0IHI9dGhpcy5jdXN0b21CcmFuZE5hbWV8fEFzdDtyZXR1cm4gby53aW5kb3dfdGl0bGU/by53aW5kb3dfdGl0bGU6aT09PVdvLkVYUEVSSU1FTlQmJmE/YCR7YX0gLSAke3J9YDpyfSksU28odGhpcy5jdXN0b21CcmFuZE5hbWV8fEFzdCksWG8oKSl9fTtLcC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxLcCkodihzdCksdihJaiw4KSl9O0twLlx1MDI3NWNtcD16KHt0eXBlOktwLHNlbGVjdG9yczpbWyJwYWdlLXRpdGxlIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsInRpdGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJwYWdlLXRpdGxlLWNvbXBvbmVudCIsMCksWCgxLCJhc3luYyIpKSx0JjImJlAoInRpdGxlIixRKDEsMSxlLnRpdGxlJCkpfSxkaXJlY3RpdmVzOltpMF0scGlwZXM6W29lXSxzdHlsZXM6W2BbX25naG9zdC0lQ09NUCVdIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9YF0sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoS3AsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJwYWdlLXRpdGxlIix0ZW1wbGF0ZTpgCiAgICA8cGFnZS10aXRsZS1jb21wb25lbnQgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiPjwvcGFnZS10aXRsZS1jb21wb25lbnQ+CiAgYCxzdHlsZXM6W2AKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIGBdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltJal19XX1dfSxudWxsKX0pKCk7dmFyIEpwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEp0LHRoaXMuZ2V0UGFnZVNpemUkPXRoaXMuc3RvcmUucGlwZSh6ZShZdikpLHRoaXMucGFnaW5hdGVkVmlld1N0b3JlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXBhZ2luYXRlZC12aWV3LXN0b3JlIikudGZfcGFnaW5hdGVkX3ZpZXd9bmdPbkluaXQoKXt0aGlzLmdldFBhZ2VTaXplJC5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksWG8oKSkuc3Vic2NyaWJlKHQ9Pnt0aGlzLnBhZ2luYXRlZFZpZXdTdG9yZS5zZXRMaW1pdCh0KX0pfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX19O0pwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEpwKSh2KHN0KSl9O0pwLlx1MDI3NWNtcD16KHt0eXBlOkpwLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhKcCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InNldHRpbmdzLXBvbHltZXItaW50ZXJvcCIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO3ZhciAkcD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0LnNlbGVjdChRYikuc3Vic2NyaWJlKGU9Pntkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoImRhcmstbW9kZSIsZSl9KX19OyRwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fCRwKSh2KHN0KSl9OyRwLlx1MDI3NWNtcD16KHt0eXBlOiRwLHNlbGVjdG9yczpbWyJkYXJrLW1vZGUtc3VwcG9ydGVyIl1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7fSxzdHlsZXM6W2BbX25naG9zdC0lQ09NUCVdIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9YF0sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoJHAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJkYXJrLW1vZGUtc3VwcG9ydGVyIix0ZW1wbGF0ZToiIixzdHlsZXM6W2AKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIGBdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTtmdW5jdGlvbiBOTnQobix0KXtuJjEmJk1vKDApfWZ1bmN0aW9uIFROdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsIm1hdC1zZWxlY3QiLDkpLEEoInNlbGVjdGlvbkNoYW5nZSIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygpLiRpbXBsaWNpdDtyZXR1cm4gUygpLmZsYWdDaGFuZ2VkLmVtaXQoe2ZsYWc6YS5mbGFnLHN0YXR1czppLnZhbHVlfSl9KSx1KDEsIm1hdC1vcHRpb24iLDEwKSxUKDIpLGgoKSx1KDMsIm1hdC1vcHRpb24iLDExKSxUKDQsIkVuYWJsZWQiKSxoKCksdSg1LCJtYXQtb3B0aW9uIiwxMiksVCg2LCJEaXNhYmxlZCIpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0LG89UygpO1AoInZhbHVlIixlLnN0YXR1cykseCgyKSxsZSgiIERlZmF1bHQgIixvLmZvcm1hdEZsYWdWYWx1ZShlLmRlZmF1bHRWYWx1ZSksIiAiKX19ZnVuY3Rpb24gQU50KG4sdCl7aWYobiYxJiYodSgwLCJ0ZCIpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoKS4kaW1wbGljaXQsbz1TKCk7eCgxKSxsZSgiVW5zdXBwb3J0ZWQgQnkgVUkgIixvLmZvcm1hdEZsYWdWYWx1ZShlLnZhbHVlKSwiIil9fWZ1bmN0aW9uIEROdChuLHQpe2lmKG4mMSYmKEVuKDApLHUoMSwidHIiKSx1KDIsInRkIiksdSgzLCJkaXYiKSxUKDQpLGgoKSxoKCksayg1LE5OdCwxLDAsIm5nLWNvbnRhaW5lciIsNiksayg2LFROdCw3LDIsIm5nLXRlbXBsYXRlIixudWxsLDcseG4pLGsoOCxBTnQsMiwxLCJuZy10ZW1wbGF0ZSIsbnVsbCw4LHhuKSxoKCksa24oKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPXdlKDcpLGk9d2UoOSksYT1TKCk7eCg0KSxJZShlLmZsYWcpLHgoMSksUCgibmdJZiIsYS5pc0VkaXRhYmxlKGUpKSgibmdJZlRoZW4iLG8pKCJuZ0lmRWxzZSIsaSl9fXZhciBhMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZmxhZ0NoYW5nZWQ9bmV3ICQsdGhpcy5hbGxGbGFnc1Jlc2V0PW5ldyAkfXNlcmlhbGl6ZUZsYWdWYWx1ZSh0KXtyZXR1cm4gdD09PSEwPyJFbmFibGVkIjp0PT09ITE/IkRpc2FibGVkIjp0PT1udWxsPyJudWxsIjpBcnJheS5pc0FycmF5KHQpP0pTT04uc3RyaW5naWZ5KHQpOnQudG9TdHJpbmcoKX1pc0VkaXRhYmxlKHQpe3JldHVybiB0eXBlb2YgdC5kZWZhdWx0VmFsdWU9PSJib29sZWFuIn1mb3JtYXRGbGFnVmFsdWUodCl7bGV0IGU9dGhpcy5zZXJpYWxpemVGbGFnVmFsdWUodCk7cmV0dXJuIGUubGVuZ3RoPT09MD8iIjpgLSAke2V9YH19O2EwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGEwKX07YTAuXHUwMjc1Y21wPXooe3R5cGU6YTAsc2VsZWN0b3JzOltbImZlYXR1cmUtZmxhZy1wYWdlLWNvbXBvbmVudCJdXSxpbnB1dHM6e2ZlYXR1cmVGbGFnU3RhdHVzZXM6ImZlYXR1cmVGbGFnU3RhdHVzZXMifSxvdXRwdXRzOntmbGFnQ2hhbmdlZDoiZmxhZ0NoYW5nZWQiLGFsbEZsYWdzUmVzZXQ6ImFsbEZsYWdzUmVzZXQifSxkZWNsczo5LHZhcnM6MSxjb25zdHM6W1sxLCJzY3JvbGxpbmctcGFnZSJdLFsxLCJtZXNzYWdlIl0sWzEsIndhcm5pbmciXSxbMSwiZmVhdHVyZS1mbGFnLXRhYmxlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsibWF0LWJ1dHRvbiIsIiIsMywiY2xpY2siXSxbNCwibmdJZiIsIm5nSWZUaGVuIiwibmdJZkVsc2UiXSxbInNlbGVjdEJsb2NrIiwiIl0sWyJ1bnN1cHBvcnRlZEJsb2NrIiwiIl0sWzMsInZhbHVlIiwic2VsZWN0aW9uQ2hhbmdlIl0sWyJ2YWx1ZSIsImRlZmF1bHQiXSxbInZhbHVlIiwiZW5hYmxlZCJdLFsidmFsdWUiLCJkaXNhYmxlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwKSx1KDEsImRpdiIsMSksdSgyLCJoMiIsMiksVCgzLCJXQVJOSU5HOiBFWFBFUklNRU5UQUwgRkVBVFVSRVMgQUhFQUQhIiksaCgpLFQoNCwiIEJ5IGVuYWJsaW5nIHRoZXNlIGZlYXR1cmVzLCB5b3UgY291bGQgcHV0IHRoZSBhcHBsaWNhdGlvbiBpbiBhbiB1bnVzYWJsZSBzdGF0ZSBvciBleHBvc2UgeW91cnNlbGYgdG8gdW50ZXN0ZWQgZmVhdHVyZXMgb3IgcG90ZW50aWFsIGJ1Z3MuICIpLGgoKSx1KDUsInRhYmxlIiwzKSxrKDYsRE50LDEwLDQsIm5nLWNvbnRhaW5lciIsNCksdSg3LCJidXR0b24iLDUpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLmFsbEZsYWdzUmVzZXQuZW1pdCgpfSksVCg4LCJSZXNldCBBbGwiKSxoKCksaCgpLGgoKSksdCYyJiYoeCg2KSxQKCJuZ0Zvck9mIixlLmZlYXR1cmVGbGFnU3RhdHVzZXMpKX0sZGlyZWN0aXZlczpbbW4sZm4sWHQsZXIsSWldLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206MTZweH0ubWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV0gICAud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0uc2NvbGxpbmctcGFnZVtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0Ojkwdmg7b3ZlcmZsb3cteTpzY3JvbGx9LmZlYXR1cmUtZmxhZy10YWJsZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0nXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhhMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImZlYXR1cmUtZmxhZy1wYWdlLWNvbXBvbmVudCIsc3R5bGVVcmxzOlsiZmVhdHVyZV9mbGFnX3BhZ2VfY29tcG9uZW50LmNzcyJdLHRlbXBsYXRlVXJsOiJmZWF0dXJlX2ZsYWdfcGFnZV9jb21wb25lbnQubmcuaHRtbCJ9XX1dLG51bGwse2ZlYXR1cmVGbGFnU3RhdHVzZXM6W3t0eXBlOmR9XSxmbGFnQ2hhbmdlZDpbe3R5cGU6Qn1dLGFsbEZsYWdzUmVzZXQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgbWM9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZmVhdHVyZUZsYWdzJD10aGlzLnN0b3JlLnNlbGVjdChvaXQpLnBpcGUoT24odGhpcy5zdG9yZS5zZWxlY3QoYUQpKSxHKChbZSxvXSk9Pk9iamVjdC5lbnRyaWVzKGUpLm1hcCgoW2ksYV0pPT57bGV0IHI9ek50KGksbyk7cmV0dXJue2ZsYWc6aSxkZWZhdWx0VmFsdWU6YSxzdGF0dXM6cn19KSkpfW9uRmxhZ0NoYW5nZWQoe2ZsYWc6dCxzdGF0dXM6ZX0pe3N3aXRjaChlKXtjYXNlImRlZmF1bHQiOnRoaXMuc3RvcmUuZGlzcGF0Y2goRnkoe2ZsYWdzOlt0XX0pKTticmVhaztjYXNlImVuYWJsZWQiOnRoaXMuc3RvcmUuZGlzcGF0Y2goTHYoe2ZsYWdzOntbdF06ITB9fSkpO2JyZWFrO2Nhc2UiZGlzYWJsZWQiOnRoaXMuc3RvcmUuZGlzcGF0Y2goTHYoe2ZsYWdzOntbdF06ITF9fSkpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJGbGFnIGNoYW5nZWQgdG8gaW52YWxpZCBzdGF0dXMiKX19b25BbGxGbGFnc1Jlc2V0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChNMygpKX19O21jLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG1jKSh2KHN0KSl9O21jLlx1MDI3NWNtcD16KHt0eXBlOm1jLHNlbGVjdG9yczpbWyJmZWF0dXJlLWZsYWctcGFnZSJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJmZWF0dXJlRmxhZ1N0YXR1c2VzIiwiZmxhZ0NoYW5nZWQiLCJhbGxGbGFnc1Jlc2V0Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJmZWF0dXJlLWZsYWctcGFnZS1jb21wb25lbnQiLDApLEEoImZsYWdDaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkZsYWdDaGFuZ2VkKGkpfSkoImFsbEZsYWdzUmVzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25BbGxGbGFnc1Jlc2V0KCl9KSxYKDEsImFzeW5jIiksaCgpKSx0JjImJlAoImZlYXR1cmVGbGFnU3RhdHVzZXMiLFEoMSwxLGUuZmVhdHVyZUZsYWdzJCkpfSxkaXJlY3RpdmVzOlthMF0scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobWMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJmZWF0dXJlLWZsYWctcGFnZSIsdGVtcGxhdGU6YDxmZWF0dXJlLWZsYWctcGFnZS1jb21wb25lbnQKICAgIFtmZWF0dXJlRmxhZ1N0YXR1c2VzXT0iZmVhdHVyZUZsYWdzJCB8IGFzeW5jIgogICAgKGZsYWdDaGFuZ2VkKT0ib25GbGFnQ2hhbmdlZCgkZXZlbnQpIgogICAgKGFsbEZsYWdzUmVzZXQpPSJvbkFsbEZsYWdzUmVzZXQoKSIKICA+PC9mZWF0dXJlLWZsYWctcGFnZS1jb21wb25lbnQ+YH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIHpOdChuLHQpe3JldHVybiB0W25dPT09dm9pZCAwPyJkZWZhdWx0Ijp0W25dPyJlbmFibGVkIjoiZGlzYWJsZWQifXZhciBDZj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLmRpYWxvZz1lLHRoaXMuc2hvd0ZlYXR1cmVGbGFncyQ9dGhpcy5zdG9yZS5zZWxlY3QobWl0KX1uZ09uSW5pdCgpe3RoaXMuc2hvd0ZlYXR1cmVGbGFncyQuc3Vic2NyaWJlKHQ9PntpZih0KXt0aGlzLmZlYXR1cmVGbGFnc0RpYWxvZz10aGlzLmRpYWxvZy5vcGVuKG1jKSx0aGlzLmZlYXR1cmVGbGFnc0RpYWxvZy5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goRnkoe2ZsYWdzOlsiZW5hYmxlU2hvd0ZsYWdzIl19KSksc2V0VGltZW91dCgoKT0+e3dpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX0sMSl9KTtyZXR1cm59fSl9fTtDZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxDZikodihzdCksdihDaSkpfTtDZi5cdTAyNzVjbXA9eih7dHlwZTpDZixzZWxlY3RvcnM6W1siZmVhdHVyZS1mbGFnLW1vZGFsLXRyaWdnZXIiXV0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt9LGVuY2Fwc3VsYXRpb246Mn0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhDZixbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImZlYXR1cmUtZmxhZy1tb2RhbC10cmlnZ2VyIix0ZW1wbGF0ZToiIixzdHlsZXM6W119XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fSx7dHlwZTpDaX1dfSxudWxsKX0pKCk7dmFyIHIwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMudmNSZWY9dH19O3IwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHIwKSh2KF9lKSl9O3IwLlx1MDI3NWNtcD16KHt0eXBlOnIwLHNlbGVjdG9yczpbWyJ0Yi13ZWJhcHAiXV0sZGVjbHM6OSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsImFwcC1oZWFkZXIiKSx1KDEsIm1haW4iKSxEKDIsInJvdXRlci1vdXRsZXQiKSxoKCksRCgzLCJhbGVydC1zbmFja2JhciIpLEQoNCwiaGFzaC1zdG9yYWdlIiksRCg1LCJwYWdlLXRpdGxlIiksRCg2LCJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiKSxEKDcsImRhcmstbW9kZS1zdXBwb3J0ZXIiKSxEKDgsImZlYXR1cmUtZmxhZy1tb2RhbC10cmlnZ2VyIikpfSxkaXJlY3RpdmVzOltacCxYcCxTcCxRcCxLcCxKcCwkcCxDZl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1odG1sW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLHNhbnMtc2VyaWY7aGVpZ2h0OjEwMCU7bWFyZ2luOjA7cGFkZGluZzowfVtfbmdob3N0LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9YXBwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowIDFweCAzcHggM3B4IHJnYmEoMCwwLDAsLjI1KTtmbGV4OjAgMDt6LWluZGV4OjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgYXBwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIGFwcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MCAxcHggM3B4IDNweCByZ2JhKDI1NSwyNTUsMjU1LC4xKX1tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MTtvdmVyZmxvdzphdXRvfSddfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHIwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGItd2ViYXBwIix0ZW1wbGF0ZVVybDoiLi9hcHBfY29udGFpbmVyLm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYXBwX2NvbnRhaW5lci5jc3MiXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9XX0sbnVsbCl9KSgpO3ZhciBzMD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5zdG9yZT10LHRoaXMubG9jYXRpb249ZSx0aGlzLmFwcFJvb3RQcm92aWRlcj1vLHRoaXMucGF0aG5hbWU9bnVsbCx0aGlzLnJlc2V0TmFtZXNwYWNlZFN0YXRlPSExfWhhbmRsZUNsaWNrKHQpeyF0aGlzLnBhdGhuYW1lfHx0LmN0cmxLZXl8fHQubWV0YUtleXx8KHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuc3RvcmUuZGlzcGF0Y2godEQoe3BhdGhuYW1lOnRoaXMucGF0aG5hbWUscmVzZXROYW1lc3BhY2VkU3RhdGU6dGhpcy5yZXNldE5hbWVzcGFjZWRTdGF0ZX0pKSl9Z2V0IGhyZWYoKXtyZXR1cm4gdGhpcy5wYXRobmFtZT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0UmVzb2x2ZWRQYXRoKHRoaXMucGF0aG5hbWUpKTpudWxsfXNldCByb3V0ZXJMaW5rKHQpe2lmKHR5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9W3RdKSx0Lmxlbmd0aD09PTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJvdXRlTGluayBzaG91bGQgaGF2ZSBwcm9wZXIgcGF0aC4gR290IG5vdGhpbmcuIik7bGV0IGU9Wy4uLnRdLmpvaW4oIi8iKTt0aGlzLnBhdGhuYW1lPWUuZW5kc1dpdGgoIi8iKT9lOmUrIi8ifX07czAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8czApKHYoc3QpLHYoenMpLHYoYXMpKX07czAuXHUwMjc1ZGlyPXZ0KHt0eXBlOnMwLHNlbGVjdG9yczpbWyJhIiwicm91dGVyTGluayIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBlLmhhbmRsZUNsaWNrKGkpfSksdCYyJiZyZSgiaHJlZiIsZS5ocmVmLFdmKX0saW5wdXRzOntyb3V0ZXJMaW5rOiJyb3V0ZXJMaW5rIixyZXNldE5hbWVzcGFjZWRTdGF0ZToicmVzZXROYW1lc3BhY2VkU3RhdGUifX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhzMCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJhW3JvdXRlckxpbmtdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9LHt0eXBlOnpzfSx7dHlwZTphc31dfSx7aGFuZGxlQ2xpY2s6W3t0eXBlOnhvLGFyZ3M6WyJjbGljayIsWyIkZXZlbnQiXV19XSxocmVmOlt7dHlwZTpIYSxhcmdzOlsiYXR0ci5ocmVmIl19XSxyb3V0ZXJMaW5rOlt7dHlwZTpkfV0scmVzZXROYW1lc3BhY2VkU3RhdGU6W3t0eXBlOmR9XX0pfSkoKTt2YXIgaHU9Y2xhc3N7fTtodS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxodSl9O2h1Llx1MDI3NW1vZD1xKHt0eXBlOmh1fSk7aHUuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLHJzLEhzLGlhXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaHUsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1kscnMsSHMsaWFdLGV4cG9ydHM6W1hwLHMwXSxkZWNsYXJhdGlvbnM6W1hwLG4wLHMwXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChodSx7ZGVjbGFyYXRpb25zOltYcCxuMCxzMF0saW1wb3J0czpbWSxycyxIcyxpYV0sZXhwb3J0czpbWHAsczBdfSl9KSgpO3ZhciBfdT1jbGFzc3t9O191Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF91KX07X3UuXHUwMjc1bW9kPXEoe3R5cGU6X3V9KTtfdS5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF91LFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6WyRwXSxleHBvcnRzOlskcF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoX3Use2RlY2xhcmF0aW9uczpbJHBdLGV4cG9ydHM6WyRwXX0pfSkoKTt2YXIgbDA9Y2xhc3N7fTtsMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxsMCl9O2wwLlx1MDI3NW1vZD1xKHt0eXBlOmwwfSk7bDAuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbe3Byb3ZpZGU6bU0sdXNlQ2xhc3M6Y019XX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhsMCxbe3R5cGU6WixhcmdzOlt7cHJvdmlkZXJzOlt7cHJvdmlkZTptTSx1c2VDbGFzczpjTX1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgQ3U9Y2xhc3N7fTtDdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxDdSl9O0N1Llx1MDI3NW1vZD1xKHt0eXBlOkN1fSk7Q3UuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLGwwXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQ3UsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbUXAsbzBdLGV4cG9ydHM6W1FwXSxpbXBvcnRzOltZLGwwXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChDdSx7ZGVjbGFyYXRpb25zOltRcCxvMF0saW1wb3J0czpbWSxsMF0sZXhwb3J0czpbUXBdfSl9KSgpO3ZhciBNdT1jbGFzc3t9O011Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE11KX07TXUuXHUwMjc1bW9kPXEoe3R5cGU6TXV9KTtNdS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhNdSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltLcCxpMF0sZXhwb3J0czpbS3BdLGltcG9ydHM6W1ldfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KE11LHtkZWNsYXJhdGlvbnM6W0twLGkwXSxpbXBvcnRzOltZXSxleHBvcnRzOltLcF19KX0pKCk7dmFyIERzdD17aWQ6UUEsbmFtZToiIixzdGFydF90aW1lOjB9LEZOdD17ZXhwZXJpbWVudE1hcDp7W0RzdC5pZF06RHN0fX0sTE50PXhhKEZOdCk7ZnVuY3Rpb24gX1kobix0KXtyZXR1cm4gd3Yoe2RhdGE6TE50fSkobix0KX12YXIgYnU9Y2xhc3N7fTtidS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxidSl9O2J1Llx1MDI3NW1vZD1xKHt0eXBlOmJ1fSk7YnUuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tjby5mb3JGZWF0dXJlKFRFLF9ZKV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGJ1LFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltjby5mb3JGZWF0dXJlKFRFLF9ZKV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoYnUse2ltcG9ydHM6W05vXX0pfSkoKTt2YXIgT3U9Y2xhc3N7fTtPdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxPdSl9O091Llx1MDI3NW1vZD1xKHt0eXBlOk91fSk7T3UuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLE1lLEVpXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoT3UsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbYTAsbWNdLGltcG9ydHM6W1ksTWUsRWldLGV4cG9ydHM6W21jXSxlbnRyeUNvbXBvbmVudHM6W21jXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChPdSx7ZGVjbGFyYXRpb25zOlthMCxtY10saW1wb3J0czpbWSxNZSxFaV0sZXhwb3J0czpbbWNdfSl9KSgpO3ZhciBQdT1jbGFzc3t9O1B1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFB1KX07UHUuXHUwMjc1bW9kPXEoe3R5cGU6UHV9KTtQdS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksT3VdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhQdSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltDZl0saW1wb3J0czpbWSxPdV0sZXhwb3J0czpbQ2ZdLGVudHJ5Q29tcG9uZW50czpbQ2ZdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFB1LHtkZWNsYXJhdGlvbnM6W0NmXSxpbXBvcnRzOltZLE91XSxleHBvcnRzOltDZl19KX0pKCk7dmFyIHl1PWNsYXNze307eXUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8eXUpfTt5dS5cdTAyNzVtb2Q9cSh7dHlwZTp5dX0pO3l1Llx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxXbixkcyxNZSxpaSxucixzZSxhaV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHl1LFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1dwLHFwLGUwLF9mLEpwXSxleHBvcnRzOltXcCxxcCxfZixKcF0sZW50cnlDb21wb25lbnRzOltfZl0saW1wb3J0czpbWSxXbixkcyxNZSxpaSxucixzZSxhaV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoeXUse2RlY2xhcmF0aW9uczpbV3AscXAsZTAsX2YsSnBdLGltcG9ydHM6W1ksV24sZHMsTWUsaWksbnIsc2UsYWldLGV4cG9ydHM6W1dwLHFwLF9mLEpwXX0pfSkoKTtmdW5jdGlvbiBJc3QoKXtyZXR1cm4gY3QoWEUsbj0+KHthdXRvUmVsb2FkOm59KSl9ZnVuY3Rpb24genN0KCl7cmV0dXJuIGN0KFFFLG49Pih7YXV0b1JlbG9hZFBlcmlvZEluTXM6bn0pKX1mdW5jdGlvbiBIc3QoKXtyZXR1cm4gY3QoWXYsbj0+KHtwYWdlU2l6ZTpufSkpfXZhciBmYz1jbGFzc3t9O2ZjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGZjKX07ZmMuXHUwMjc1bW9kPXEoe3R5cGU6ZmN9KTtmYy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW2NvLmZvckZlYXR1cmUocUUsZFkpLE5uLmRlZmluZUdsb2JhbFNldHRpbmcoSXN0KSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKHpzdCksTm4uZGVmaW5lR2xvYmFsU2V0dGluZyhIc3QpXSx5dV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZmMsW3t0eXBlOlosYXJnczpbe2V4cG9ydHM6W3l1XSxpbXBvcnRzOltjby5mb3JGZWF0dXJlKHFFLGRZKSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKElzdCksTm4uZGVmaW5lR2xvYmFsU2V0dGluZyh6c3QpLE5uLmRlZmluZUdsb2JhbFNldHRpbmcoSHN0KV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoZmMse2ltcG9ydHM6W05vLE5uLE5uLE5uXSxleHBvcnRzOlt5dV19KX0pKCk7dmFyIHh1PWNsYXNze307eHUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8eHUpfTt4dS5cdTAyNzVtb2Q9cSh7dHlwZTp4dX0pO3h1Llx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3twcm92aWRlOiJ3aW5kb3ciLHVzZVZhbHVlOndpbmRvd31dLGltcG9ydHM6W1ttdSxZLE1lLG5yLHNlXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeHUsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbVnAsJF8sZnVdLGV4cG9ydHM6W1ZwXSxlbnRyeUNvbXBvbmVudHM6W2Z1XSxpbXBvcnRzOlttdSxZLE1lLG5yLHNlXSxwcm92aWRlcnM6W3twcm92aWRlOiJ3aW5kb3ciLHVzZVZhbHVlOndpbmRvd31dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHh1LHtkZWNsYXJhdGlvbnM6W1ZwLCRfLGZ1XSxpbXBvcnRzOlttdSxZLE1lLG5yLHNlXSxleHBvcnRzOltWcF19KX0pKCk7dmFyIHZ1PWNsYXNze307dnUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dnUpfTt2dS5cdTAyNzVtb2Q9cSh7dHlwZTp2dX0pO3Z1Llx1MDI3NWluaj1XKHtwcm92aWRlcnM6W10saW1wb3J0czpbW01lLHNlLHR1LEpnLEVpLG9yLFksU2ksZmMseHVdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh2dSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOlt0MCxZcCxacCxLXyxMcCxHcF0sZXhwb3J0czpbWXAsWnAsTHAsR3BdLHByb3ZpZGVyczpbXSxpbXBvcnRzOltNZSxzZSx0dSxKZyxFaSxvcixZLFNpLGZjLHh1XX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldCh2dSx7ZGVjbGFyYXRpb25zOlt0MCxZcCxacCxLXyxMcCxHcF0saW1wb3J0czpbTWUsc2UsdHUsSmcsRWksb3IsWSxTaSxmYyx4dV0sZXhwb3J0czpbWXAsWnAsTHAsR3BdfSl9KSgpO3ZhciBCTnQ9Ii4vaWNvbl9idW5kbGUuc3ZnIix3dT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe2xldCBvPXQuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKEJOdCk7ZS5hZGRTdmdJY29uU2V0KG8pfX07d3UuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8d3UpKEkoS3MpLEkoUGwpKX07d3UuXHUwMjc1bW9kPXEoe3R5cGU6d3V9KTt3dS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW3NlXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMod3UsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W3NlXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6S3N9LHt0eXBlOlBsfV19LG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHd1LHtpbXBvcnRzOltzZV19KX0pKCk7dmFyIFVJPW5ldyB5dCgiW3BsdWdpbnNdIFBsdWdpbiByZWdpc3RyeSBjb25maWciKTt2YXIgRnN0PW5ldyBNYXAscmk9Y2xhc3N7Y29uc3RydWN0b3IodCl7aWYoIXQpcmV0dXJuO2xldCBlPW5ldyBTZXQodC5tYXAobz0+by5wbHVnaW5OYW1lKSk7Y29uc29sZS5hc3NlcnQoZS5zaXplPT09dC5sZW5ndGgsIkNhbm5vdCByZWdpc3RlciB0aGUgc2FtZSBwbHVnaW4gbXVsdGlwbGUgdGltZXMuIik7Zm9yKGxldCBvIG9mIHQpe2xldHtwbHVnaW5OYW1lOmksY29tcG9uZW50Q2xhc3M6YX09bztGc3Quc2V0KGksYSl9fXN0YXRpYyBmb3JQbHVnaW4odCxlKXtyZXR1cm57bmdNb2R1bGU6cmkscHJvdmlkZXJzOlt7cHJvdmlkZTpVSSxtdWx0aTohMCx1c2VWYWx1ZTp7cGx1Z2luTmFtZTp0LGNvbXBvbmVudENsYXNzOmV9fV19fWdldENvbXBvbmVudCh0KXtyZXR1cm4gRnN0LmdldCh0KXx8bnVsbH19O3JpLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHJpKShJKFVJLDgpKX07cmkuXHUwMjc1bW9kPXEoe3R5cGU6cml9KTtyaS5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHJpLFt7dHlwZTpaLGFyZ3M6W3t9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W1VJXX1dfV19LG51bGwpfSkoKTtmdW5jdGlvbiBWTnQobil7cmV0dXJue2hvc3RfbmFtZTpuWzBdLGZpbGVfcGF0aDpuWzFdLGxpbmVubzpuWzJdLGZ1bmN0aW9uX25hbWU6blszXX19dmFyIHRkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMuaHR0cFBhdGhQcmVmaXg9ImRhdGEvcGx1Z2luL2RlYnVnZ2VyLXYyIn1mZXRjaFJ1bnMoKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvcnVucyIpfWZldGNoRXhlY3V0aW9uRGlnZXN0cyh0LGUsbyl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2V4ZWN1dGlvbi9kaWdlc3RzIix7cGFyYW1zOntydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhvKX19KX1mZXRjaEV4ZWN1dGlvbkRhdGEodCxlLG8pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9leGVjdXRpb24vZGF0YSIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKGUpLGVuZDpTdHJpbmcobyl9fSl9ZmV0Y2hHcmFwaEV4ZWN1dGlvbkRpZ2VzdHModCxlLG8saSl7aWYoaSE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoInRyYWNlX2lkIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgZmV0Y2hHcmFwaEV4ZWN1dGlvbkRpZ2VzdHMoKSB5ZXQiKTtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZ3JhcGhfZXhlY3V0aW9uL2RpZ2VzdHMiLHtwYXJhbXM6e3J1bjp0LGJlZ2luOlN0cmluZyhlKSxlbmQ6U3RyaW5nKG8pfX0pfWZldGNoR3JhcGhFeGVjdXRpb25EYXRhKHQsZSxvLGkpe2lmKGkhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ0cmFjZV9pZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIGZldGNoR3JhcGhFeGVjdXRpb25EYXRhKCkgeWV0Iik7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBoX2V4ZWN1dGlvbi9kYXRhIix7cGFyYW1zOntydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhvKX19KX1mZXRjaEdyYXBoT3BJbmZvKHQsZSxvKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZ3JhcGhzL29wX2luZm8iLHtwYXJhbXM6e3J1bjp0LGdyYXBoX2lkOmUsb3BfbmFtZTpvfX0pfWZldGNoU291cmNlRmlsZUxpc3QodCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3NvdXJjZV9maWxlcy9saXN0Iix7cGFyYW1zOntydW46dH19KX1mZXRjaFNvdXJjZUZpbGUodCxlKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvc291cmNlX2ZpbGVzL2ZpbGUiLHtwYXJhbXM6e3J1bjp0LGluZGV4OlN0cmluZyhlKX19KX1mZXRjaFN0YWNrRnJhbWVzKHQsZSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3N0YWNrX2ZyYW1lcy9zdGFja19mcmFtZXMiLHtwYXJhbXM6e3J1bjp0LHN0YWNrX2ZyYW1lX2lkczplLmpvaW4oIiwiKX19KS5waXBlKEcobz0+KHtzdGFja19mcmFtZXM6by5zdGFja19mcmFtZXMubWFwKGk9PlZOdChpKSl9KSkpfWZldGNoQWxlcnRzKHQsZSxvLGkpe2xldCBhPXtydW46dCxiZWdpbjpTdHJpbmcoZSksZW5kOlN0cmluZyhvKX07cmV0dXJuIGkhPT12b2lkIDAmJihhLmFsZXJ0X3R5cGU9aSksdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvYWxlcnRzIix7cGFyYW1zOmF9KX19O3RkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHRkKShJKGFhKSl9O3RkLlx1MDI3NXByb3Y9UHQoe3Rva2VuOnRkLGZhY3Rvcnk6dGQuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHRkLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmFhfV19LG51bGwpfSkoKTt2YXIgU3U9Y2xhc3N7fTtTdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxTdSl9O1N1Llx1MDI3NW1vZD1xKHt0eXBlOlN1fSk7U3UuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbdGRdLGltcG9ydHM6W1tyYV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFN1LFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltyYV0scHJvdmlkZXJzOlt0ZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoU3Use2ltcG9ydHM6W3JhXX0pfSkoKTt2YXIgYzA9Y2xhc3N7fTtjMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxjMCl9O2MwLlx1MDI3NWNtcD16KHt0eXBlOmMwLHNlbGVjdG9yczpbWyJpbmFjdGl2ZS1jb21wb25lbnQiXV0sZGVjbHM6NTQsdmFyczowLGNvbnN0czpbWzEsImNvbnRhaW5lciJdLFsxLCJ0aXRsZSJdLFsxLCJjb2RlIl0sWzEsImFyZyJdLFsxLCJleGhpYml0cy1jb250YWluZXIiXSxbMSwiZXhoaWJpdCJdLFsxLCJzY3JlZW5zaG90Il0sWyJzcmMiLCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRZQUFBRTJDQVlBQUFEcnZMNnBBQUFveUhwVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXJaeHBkaHk1Y29YL1l4VmVBdVpoT1JnQzUzZ0hYcjYvaTJKcmVtcXJuKzFXaTZTS3hVd2tFSEdIUUlETy91cy9yL3NQL2h1dFpaZEw2M1hVNnZrdmp6emk1SXZ1UC8rTjl6SDQvRDYrLzFMOStpcjgvTHI3OW8zSTU2UjNmcjdSNXVkem1MeGV2di9BWC9jSTYrZlhYZi82VHV4ZkYvcjZCaGYrakVCMzF0Zm54MEh5ZXZ5OEh2TFhoWVo5dnFpanR4K0h1cjR1dEwvZStJYnk5VGQvRzlibmsvN3RmbnFoTVV1bmNLTVVvNldRL1B1WVB5TkluNytUdisxOWpMd3Y4TnBNS1FYMytmUjFNU2JrcDhmNzY3UDNQMDdRVDVQODExZnUxOW4vOXRVdmt4L24xK3ZwbDdtc1gzUGs2KysvRWNvdnI2ZHZ0NGsvaGNPM0VjV2Z2M0Y3elAveU9GOS83ejM5WHZzODNjeVZHYTFmRWZVbSs2OFowaHNYVTU3ZWoxWCtOUDRXdm03dnorQlA5OU52bHZ6NDdSZC9kaGdoc2lyWGhSeE9tT0VHZTU5MzJBd3hSNHVOenpIdW1ONXJQYlU0NGs1YXA2dy80Y2FXUmpxcHMyNDdtbVBOY29yZnhoTGVmY2U3M3c2ZE81L0FXMlBnWWxycXYvM2ovcWR2L2p0LzNMMWJVeFI4L3paWGpDc3FyaG1HVms0ZmVSZExFTzdYdXBVM3dYLzkrVnArLzBQOEVLcXNZSG5UM0huQTZkZm5FcXVFNzdHVjNqb24zbGY0L0ZuajROcjV1Z0JUeEwwTGd3bUpGZkExcEJKcThDM0dGZ0x6MkZtZ3ljaGp5bkd4QXFHVWVCaGt6Q25WNkZyc1VmZm1aMXA0NzQwbDFxaVh3U1lXb3FSS2JuVldhTEpZT1JmaXArVk9ETTJTU2k2bDFOSktkMldVV1ZQTnRkUmFXeFhJelpaYWJxWFYxbHB2bzgyZWV1NmwxOTU2NzZQUEVVY0NBOHVvbzQwK3hwZ3p1c21OSnRlYXZIL3l5b29ycmJ6S3FxdXR2c2FhbS9EWmVaZGRkOXQ5anoxUFBPa0FFNmVlZHZvWloxcHdCbEpZdG1MVm1uVWJOaSt4ZHRQTnQ5eDYyKzEzM1BsdDFiNVc5Vi8rL0J1ckZyNVdMYjZWMHZ2YXQxWGpWZGZhWDVjSWdwT2lOV1BGWWc2c2VOTUtFTkJSYStaN3lEbHE1YlJtZmtTU29rUUdXYlEyN2dTdEdFdVlMY1J5dzdlMSs3NXkvMmpkWE9uL2FOM2luMWJPYWVuK1AxYk9zWFQvdW02L1diVWpudHR2eFQ1WnFEbjFpZXk3Wlp5NDNJNXgxVExudEpsYVMyWHVGWE1MYVplUVd6MjFybnFCazl2UEx0M0h4cmU2WjVZUG5NTWtITDl5UGFIb1FyMm1mT1B4RTNoZnBkMDEwMkZwazU2eU00NjlUcjY1MzFVWUxaY0cvODQ4TzdSajNMU3N1RmRZNXRvMG5pdWxmWG5rbHZJK25xUXNCd0JkZlc4bWRkOFdvbStzWk9vOTU1Nys0b1lrS0w5bG5qWmpKeUQ1T0hWem02V3VXYzVjWlplVEp5bnZ6Zk80MlljNlJvOFJyU0dTUG5sTVMyM25jUW0xZkkvQ3hhVWVUaTN3ZGRzZ3d0cDM3YnB1eU1YYVliSnJ2MVlBN3VYVGFjYlQ1ZERhM0t6RENtMHlmNVV4TTMzYjVRazloRjFuNGFaM1NSU0VzMjhmeldJNlZtZUl5V3hzNDFxK3JoN1dPQzBhVnpEaXVLL0dQQkVRd1NtSkNPbit4RVJhWTk3TTBFYmJ2aHppdG5heW9MR0VQTUpzdTFwaWtRZmdOY3RsNlhzSTF0Zk5saDF6M0c4b2RwS0Z3Y01odXk2UDRsRVRRT0h1TTQyeTdCN05TQ0lPVDdwOVh5WS9IT1gyUWlLMWZSWnoxSFlFT1hpWWZrck4rYVJsdS9oVmZSK1JtR1J0eVRJN25abW9pY2c3L3VaeUQ4RzlEems2RW9Ob3NhR1BhZ3g1WlJLTmNZWjhXem43aUF2UDliUFpLR1lrSnZjTlBORDFuWWMrUENSd1BZMVF5SER0YXRYYzZyWEN4SmRKYlpPUk1oZVZkTEIrYTB1Um14SVJoY2xrMk9lMGJvY3c3aXlFSitaelZNRHlnZitkeE4yWWVzcnJyL1hUeU5pOVdwbjU5TTAwM1dPTkJTWVZFdmRWNkJhdUhQWktERE5XR3hWWUtiZTRXRWNTY0d3K0U2RWt4c25KMEJNOXRCS1l0NkFiVnoxT0dndWdJZmZ2SEVUNkpGb0w0d1Fjem1DeUs4eldTS01haHdmSHlHR0drcVlHRU5ZQlRuT0RqTXRjWnhGWTJiWVZjQU9RSTJJaHQ3dU5wU1JGOWtSQ2RDWVlQT1RyR3lBL1ZyY3VZbUhjWGErRm5SbHlPWW5adFZEUzNqd09vZHB0U2ZBa3dVOHlOeTZaMVhqQUthQll1Wit3aGJVa0ZBaGFBL1JKRnZvK1FRVmJBekN1YlNjRm95ZGtKcE4vYmlIbUhJSE90d3VodG5kT2UwbUV3UWZMRzhoUjB3Z2xLeFJKMjJKeEUxQ0RmTjRUZXJkYndFREd5UFZXZERzdEFHTzJDOExiNkMvbVJnUExtSmg0Z0tyV3p5U21nZjRGRmxmd2o1Y0pVRkRrS2t3T2tYUG5jWTFaSmdLUEVWYWdHNm5Rb0pTSWRrc3hkOFZRTzFteStTNGttUzJGeEJZRVZOWXVseVFrWTVGUS9pRU1iNmNRanVPc2t4SmlsRmdETW96dzhLWUJHVkU2UmhpeDFoSTl0MjlrWHlkS1lqeXpMbFloSTJ1WXlwR0NnZU0xQVhmZUd5QTA4OU9rcUp0TWVtZjBpMXdITUY2K2YyNGtKTWhGaEVYUWlqZ0NIYkVPNUJ2OHVDLzVJbUlsQmdPTUNtb0NnMlA3VGFpQjNBRUFCVnRSbUpNRkppU3pxR0hBS2E3dUFVT1BCcHAwQm1TUTRnVU5JUk5mWVAxRlZOemMvRDRBZDBHZW9vMHJVdTBDWVJBQlR5cVd1Mms0VUJUdHRYaFdJd1JOckFzeERqSjNyZDFYN2NJS2hXdVRLU0FTZVNCbUgwaVl5dFdOc0FhaGhybWpsU1dWV0NMejJ6SkVPc1k5RlE2cnd2YmViVjhpa0V1a3NsbHlMTkNOc3phQTZLWUozeTJMQWN5MnVSZzB5WmhXbXVpVXhoVUVBTFZaSWxRUGNNVFZHelJQc3ZMb214Q2NGeEFhcldSQ3d0YTFDRW02VFBnUXV4aS9qYTZ2K0FBZUdzUWlxdzE4SXRwWVIwSmVPQ3dXQVVsTFl1cjJLc01JMG80bklOWE41VFNZK2h4WjlYUDVGcGRjQ2xlZ3NFUEhZR0poNFVqMlVsWWcvTnJsR25Nc0ptTWpWTGhaWUVYVGxtSURGVm1XeEpTam96QU94QmNxMllQbFVVNDNONUhVL1lhRnYvL3M5RVVHdGtzbWFyb0FkTzhMQlpFRVp5SWxka0pROVRCclJSOGNVcmJJWG9NUE1rM01TZ096Wm9GRjdCSVhGekZZR3FOWnJCeDZ5TE5lZ0VzaW4vcUd1SUt1amh6UEhUbXlSSENFQnJsbUVqUjhlOVRsa09kbmxhdFpQYXVud3dmam5kdzhJMW9XZEFiN295TWs0OUJlcVhIUEdNbGxFbU9VUnNBTU5FdzM1cWhBbndCeU9jZzhrRE9UbTJ2NFl3VWhnS0hJQktVRnBDRFBDL3F4dFA1NlVHUnNZTDhGQ1E4Z0xUbUlucDh4S1pBdWRNQ0k4c09YZkFPb0FMazhEZytWemphV3AwcEhuQWVSNkNsbTVhVFppNVhURjltL3oxN0VKMW1NY29sNUF4MU1KZUFPd2NxOTRCMlJQUWdKUWhqVUh1Z1ZwQnlNZEFXNEFHV1VPSFB0amdJOC8vS3lYbTNLQXd4dzJRTlFRaHFRTjhGU1gvbm9FYkdXNVdBOTBhN01yWGNMVzJWb1NpSXlDZWt2ckgrVHhLb0V6ZzFpMTBaVzJEcEc4Z3pZZDNkNEkyOG1nWFVoY3FSZGowTmlpWGVRQm1RK1M1b0JxMVNRQ1BQRnZNSUV6RzVGb3JTUitJaEc1QndpT3l0bUU3Q0FySjg3T1RpSU5ZUmx4Szl6MzVtWTk3b1dJZ2ZvWmthZ01TN000SUFKY0M0ZG5wbUJjb3VMNllkSHR0ZWt1Q0JzcXVlQUpPUTJxeW54REhzc3pBRFlUSERCQndobkhwVXZDSWNObVBZSjgyRUlnaEl6U053dmg2Mi9xRnN3aGFlVGtDSTBZQ3hTSFd5WCtyOURUbUtCVGowYjhFQTRzKzRzQ3graGM1K1JhWHZESW9oaFk3cTE1SHhqNEpwS1lXYUd5VUVVeURxc1JreDE2NTNGdU1JV3hYVkZ6RUdaQ0kyVEpYaGRRaHpBVzRDcHVBSHlaUlJvTkFZTC9SZ1AyNUVSZ1hrbzhHZmVpbStVUTBmQUxjS1NqT0NCUWJMdDluN2dhdkNUc2ZEY25qUzE5QVpWaUhuTUZvTWY4eFJCR3FnNUdCRGZnK2w2dzAxSndtNzB1MXRnV0ZXZ1hDUnpKdjJSTlEyR0o5WW5pTG13NTBSckpraU15UVZwMG9KS2tUUXFzczBuSm9ZbTNCVUYvRUM5Nk1ZRVNVTkc4MHp4elJEQWpHdG9PTHVxZFYrRTJFbGQ2b0g1S0tyVGxmRDEyWVZmWHZqMU04OEJrWnNuQ2xqeXhtSXlVRkszeXRvTkxROHFzVStFMXNCNElGZzJ1aDgrUkJJaEQ4a2VSRGh2d1MwdUZBVDJVK2FwaXE4Tm8xZ0RWZ1hycGVVRE0yRkljMENleDlDMHArUEJMNklSVGE0TStkMnJLeWRFeW54Z2pSMENia0VhTUFkVnl3dUpyTHhkczQ3c3hYemlVZ2xtRm40bHdCazdBZEhqYUpzUGJTMnV3R0FOeG9CZTBhR1FGN0JHSEhrVW9pY3hUd2ZSVkVFQkFJb2l2NHBGaWZEdEt3NG40UzBHRTl3SmRWZ1JiRHRuczhCNGlhVEtRSE1YSllJVzZ2SXNUSzdoaXVEQ25RRkpKZ3k5aDdjR1MwRzV4RnZKdnFhRWgzSW1TYmRJbWFxVWFNMXgzNHJjUVBmaUk5Q0h2VWFGanczbXNoS0FneGhINXNIT0FEazBFRlBBcVI1VmhkZlgwdkp4WmdlTUVpNmJxU01mRVM5ZHc3RWI1Q01sUjdrZDdEUElWN0lCRzd0RUNaZndHZzBGSEFjVGZnakE3YkErdDZKTUk0eHRrK25FVGx5L0lJMkRsMDFaTXIwVTRuVURuU2o5UFVIOUtqa1A5VndFSmk1aGdHK090NkFZS3ZpQmJDRE1NdFFtZHN6a3V5b3RkK0V2c1g1UU1JbVA2aVg0V1pLTzlRZWxPMkFaOFR1NU9HdzVVQXloK1FaUmpndVhiaUJOZEVsK0d3NktDNDFFa205aU9aQTgxYTlSMFp5NExpaEFoVzFXRm9Ja3NSdkUreWkxd1Zrek4yUmpCdCt3dGdTU0tndTZHM0d5QWVPN2hDbEhWb2hib1lhaWJKQk5Sd0EyNW83Y1JsZVN1MWMyaGNWbFpnRmcxcDB4bU9TMm5ad05hZ0dJV0JYUUVpV0ZZNjdnc0RMWlRUQzhOVlZCeUg5dUxXRjN5SHdNZlZSZDEwZklsREJEQmFhUzVsQlEvZTdtempRMndMWkMxNzhaMnovK3J2c2Z2bzNnSFppM3lkUlVLTHMyU1JDTWpPRkV2Q3BEeU1rNFR3RHplblRvNEh0NXRCVjVOdWdhVE45OFo0bTI4WWZwQ1dKc2Y4OGtmU2pJNmdUK0lrVENTSUF5dXJic0J0ZzVlRE5sL0dWdHdXcTFEWlYxZ2crZGpoQ3p3enlwTm9OMFFiNStnTFhVdnZRVjJnWDJSVmt0ZVV5RVZwbXFRbnZCSjgrR2ljZCs0VHdidW5RVDJ3RDVCV3R5UkE4TlZCdlBReURqSTlBYXI4YUFSV0FzanR4dkNFVjRFRy9qc1JGSFFrUUNFK2VoMFYvQktrbERYQlhRTU9GWFVWcGdGbVNuWWtadnFtNzhia1NBZEVTbkk2VEp4YmhOUG5ManBnMnNCSmNiTW1nOU0wOWlOenkyN2NCRkhYWlU4Z1I5eDNTcmFzRWlCbGJ3eFNYNEpXMFhrQ25rZUltSXhiTEZIK1RFNUNtWktXVkZHc2NqajNFdTRBZ0RJWUxSMkNVT3BBL0tESzJMWXVZOWV5cXVxeTM0NEY1TEI4T2xTN3lQY1dMSTdpMUVkZ0cxZmxWck9LbUdqTzhwUVdtdjJuaUlOeGd4NDdUUVF3dnpYUHd3SDZKUWlvczQzQis0K0Q3Z0JQQkk2WE5Scm9DSUdmS29xUkljaEVnNGlRQmgvWUpsblBUS0VCbFNDSFlES2h4a2tvVEdqM2hPd1d5UlN3Z3ozbTg1U0JrZkNGQWVoVnMycG9tWHFrejlRRUExK0FJS0Jmek5YY2djalRraE1xOEtDbjRra2hoQVJwWHJEUEM4eUJ5OHhBRk1aQmJPWkpjcWY0ZHd3NWloQ3RFaEpDM3hDUVpQUm92YjUyYUFPdmZuN2ZCSzBWY0JqVkZ3UEoybkl3NXNWN1FYREVKQUVFRW92Z2h5NG1tTk1iSlM0YXJZU3JxcS9uc21TNFg1Z3g4TGVuNkFIN3RNQldiZ3NmZFc5UlBraHNrTmtMdzVZdGNCSmN5MmFxd05UMEd1SGRZRHBUVnhtc3dmQUZRQitva3hJUUx3NDdWMjhKTTF4REdlY0ZGM0dlck95Y1dBQk9NdWlHZ0VFS3BxeUptUWF3Tks2VU9LR21JakVyYVBlRTlHdmJoQ1hUbDNNcEoxTkluZmlvaEEyeTFrUEs0UitZSU00NTFRVHVYZkNIT1ZFWkprUEpQVVdkSUxNR1JCckh5cjdBVjZIVTY0clRwWkttd3ZWSE1TYkhleGVndWJuVU92U09uRXh6RVFZeXQ2OFpMSENTQUxpVytDQkFWTWpzWVpuczZXamJ2SUFVTVdjR015cXdrSGtRZ2VFaXFxdmZDb3dQaVJlY0pUZGVVYmdnTGlPb1FJeVMzVFZGM1FzN0FpdmpPZnM5L1NvbTI0QzBzYUlZZUxvbXpuVlVISEVEa3o1cXg2K2V4NUF4ZXFRL2haZ1pGd3ROa2grY2c2VEdOdFRTVmY4TnkvRWgyb2craERQYitxSnZZblFNdkdjckVFUTdWNEx5ZTl0aHU0YnB4RHdBMmdWVkJCWHBWbk12L2pKMVhyQjgyRFp5RklYaS9CZUJMdUJUV0hZcS9JZWlRVW93TDh4ZGpucUp5QWRBdEYrUUZRc2taalNDVkRyVWkzaEhLekRJRmdzanpDbzhyd2t6M2pxdFRIdUYzRGlXT0U4YXhZSHV5b1NJSlVWSFg1N3JWQVE2MzlVQjFzVE92b1NEakdCazcrNjR2TnRVODBnSTJIR3VoQXhOclZac0VKMG1QTUlCR0tDR3h5cGZkZ0xTN1B0VU9kcWdocHg4WmpvVlIzTjJUaHJLNUNZK09CQ0xvMXZ5LzFSU0V5RGNrVytEZmpCKzlJamZqQWxTOUJ1bDRFbmJ4aTVTR1lReGVHOTdXK3FDeVc5dmFFa3IrOStFOC8vZTFIQmJ2dTY2ZGJUS28rQkZSeHJkdHZaQkI4cHZJTU1ZazZSR2FHcSsyZEZqc3FUb1Zuckkrc1hSZlYxNGlGR0JGenF0MGU2ZE5LbHRqV3JvQkM4RXJOR1FCenVEczBiM0QwMWc1RU9wWHBxcXJONExRclYzZmlDb0tpbzN1Z1JrZ1UwVG9BYzlJclJCRlpzaXpQZ3pNVzh4VFZLckEya0k1OEhzYTZFNWtXcjBzSnNBaHJxQm9DdjBraEpIU1dhb20vRzFsNFN2UG9WY1VKV1h1RkpnRVlHZkJVeE1aZmtoK2ZtOFl6MG9oNExBaGNva0pKUFdtVEVQQ3oxMjZxYW8zWmd5YUVRQnl3ekNJRW5mYTJ0MHBSOEF5YVBMM1NrWFF5Y3JxWG15S1lseU93d3Bmb1k3NUdPYUpBbURFWXZnRmRMeVN1dzk1RldFRlZ0Z3lLeGF6QkxQVDhsbWJFNlNIclMwaGVWWFNnSFltZXNRWXJJYWpKNXZGWVZzYkwvWTZFWVpwNHh1YUtlUkVtYUNaQm55bDg4R2FrWXpEdWM4Nkk4UENBWEJHVmJuaG1LaWc5cXh5em5CbUFQQkhqcUZrVG1zQjVWc2lKMXlReVpjWmhPU2dURUlBV3lIUVZmeG93d2t3RFdFQTBzdTRtd0lYVVRIUENtb0N0cXJSa2tyZ0tMREk1R1dBVHhzdFBocU9YVlpCQzdUaXNRWUIrTjZrRVpSdExLaFJFUnFPL0ZvTWxnUUU4bnBYd3cvc3hOaWdROXE0cXl1d2xtRVltWm5tUkhzbDlNa2RDUytVVnhMMzJFdTYrTUNMM2JDUUhJUWoxUWFYNGhBNXVwSkx4VUVIaUY0YXV6SzAyNmd4RnpqS0RnN1djakRNbjQ3UlpodHNrK3ZGM0NQMkw1Z0NwNFoybG5RazBIaUZmTVREY3E0b3FYY1owcXV3bnZRSTlWTmdYbGtsaHk2RmNaRE9HK3c2YnB5RC9zTHBIbXcvWXlDQ3IyN1kyK0haUCt5TFlJME1IdUNkaWhBdGdFd25aQ1Y1V3hBaEJLS09YQ3BGYVlvRmlYM0tRaXVRL09ZS2VaUVdRUE9wQVdOeDg1WXZiM3VvNVdOSVRnMEY2bVpJd2lxbzFoUWdKU3htTnQwSldGdEV2Y2hUV2tyUHlpMXdEMUhlOGVtTkVSblZ0MjE3cHE0a01aaDRZRXJvZmhCeWw5NlpLVmRjbU1oSUk1UTBxSTV6OHdXQTRlVjYwQzdPWjRNb3J6VVRLemp1Snk1MmFzT1lFN1J3aVJyVEZGQUxFS0psZVZVeU9qY1dmUkNaTVN3NlNNUVBnREYrN2NtSFBYM2NjL3Z6Wi9jMDNYbUhTRTV3L1NOMnZjdVV2cjZwSGpDZHlxa3lrbExDV2MyenNYY0tHSTduZ1FwQURhM0VhR05xVGdsSklBcC9Bc1FOTlVtUFR0cit4Rmp3Kzh2Z1FGUjFRZ05HeTdHWUNRbFJneTB3U3JwKzhnZUlJRER5c29UcDIyRThjVzBmanNjNE5FRzU0ZlRmbFdyVm5KamRWdER0ZEQ3SkxHYWlFdmQ2eWpKc0I3Smloc0hidkdkT2pLaG1rc3lDVEtOVStISFN2NG1Rd3dHbStUWCt5dFdFak5obUpvb0Z4MWdzMWZGR1Q3dUhua05mSnczS2RJR1ZjbUQwdWhNYmNJaWhNaUJuV2E4bUtTcVdOeXVPQm1WZktIQjJETnNaVHR6V0lrUnJYMVA0S3VLeFNMZmVPcmszeUdXbU8zMVB4a2ZqUk5oekQ1ejRCTHdwbUl6dTFWY2ZQQUgycURRTkhRTmxSdXd4UWMzS0pIcWdGY2VHbHF0MlUzaGx3V0RGQmZIaEcxSWdLOXlTanRPd2JBZ21PaDJNMlVMc2tMRlFKaUYvRk9ibDJtVlRVSVl6Ynh1RXlUTE5YcHFQRlZKQVBTdTVXNE9CbHFwS1JGZHJTYWRwSkNVYzRnaWk3M1NuQU1NQ0d4c0dPNTFLODRhb1hEOGZ6NTNhczdQSElTRnhZVkZCU0ZXaEZuaHRHeFpCbU1nVzhkK2lKZ1UwR0I0SGF1ckZmQUFQTXBuSWZRczJQaVhzYVVBYlVyRktBcWNoVWJ4bDNlaFUzVkF3MWRMc2pFTXRaU0VVaUorTVN4emI4T2pQVUNJUEpkR093eXArS2xYeDJmM3JEKzV6YlUwRS9FVno4K1ZYM2VUbXJDd0UxTE13SFNHUzNlVms4OHNjODQvTWJFZHIwZEw1b2llQWVpSm5iU1pwVG1TQkFpSHlwUS9VbVZvMmxlYzBPc29tZ2N1U3hRUzRpdmlnVUhTcS9Cay9VUnVJWkE4Q2l3UUdtYlpFSWhWbzVvbHl1dDBsc0VCQlhTSlRXeVcwcnQ4UWNUZlN6YmFmUzFsRlR5V2lWY0ZSUkNXN1dQdWtjUWxHWWtyUVA1RXdJNlBrQkFJajE0R21HaGp4QVNFT3VDekVLd2o1ZmpRcktoUWtpNmswYmhUdy9kQTZwUUp2RWc5NVRDVDZVTk0rTFdVcnlIS2ovaGhRblRSekFqT0pDWkdRWWE2bUtmREdKQUJONmZXdFBFZk84a3UyQ0xrRTlNT2NnUTVCcFNWUGtXREVMclk2dHpRT3k1THlaNTVIOXY0L1duOC91LzRyV24ralFoVjZBSU41ZWlCRDd2NG1tRGZlZUViQnYyQlkrYS9EYUdwb3p2NjRlZEs1MzBoandONFltTE1nV2FZcHJrTy9ydUpWVSt1enBaSytleWJtOGR1bXk5aENLWkRvNm5pa2g1VHI2d3FuSkROZ1p1QlQxVFhqVjdHQVhkV0FZd3Z1bzFZREFBeW40dVlsbkRiMUwzbFFWWVZHQy9hSWJOeFlDMkxQWCtZQXhSS1BhUmUwbGhMbEt2OU1EUmg2VTJFVzlVb0FBeHV5cWsyR3MwaHUyWjlaU0ZwTlIwVWNzT0pNV3NXVEF3bGpNUUZON0JSSitxV21reTZXaUFmak9QZ1Q0eEFWbStCb0l4b2JoNDlDVENQdnV3QmNHcHgzcUhMc3VMcS9aMVFnSm10WE5jc0ZhRFh2S2FuQVhWUlhVMHptMVNkQlU1c1hUSTBtU3d6S2poMC90WGIwNm5WREV0dkxvVU1aUkZZaEhyMWVsdmZESzR2QnZVTCtOak93Wmw4bEVBNnBMeG1ISTc5dTJld1Z4K2JKanIzcXZIV3ZFSWFsTDhpQjlHMUJ2dGNicFZRZGZvQUorQWZyN0NrRDN2dzdsbnlOWVl2UTNJZnhMeGUySEVQNFI0SWdUTUxJaFhtdFJpMTZPK0dQOGVDeUw5Y1pLVjVRdkQ0OVZxN2FySERpQzBCUEJYcVVjbkVCQ0E3SUEwRm1NV0FodGwzT2hzMnRsUFZ2SGZLcFhFZ0VhdWpvc0pyb1kwdUUyUFZlVlptQk5FQWpFUzB1WFpBV1hDaHNwNVJyVU10eng5QW9kbUNoT1JPWUdhSTh3Vjl4VlFHQitKRGVwL0ppdmpGaHFUTUNEZlJ6SDNSSVdNejJDSEtnWVRRVzhoVGhPRlFXMHNHVG9Eeit4eWwwTmZhQmNVaytiL2k0UURuN1Vaa2RoTlJIU1l6Z1ZHRGZ6K3ZiYTBVZmhVNlhFREJiKzc5cHpqM0hYcmRSVnFWY0RrTFNlNGg2aUdyRXd3SURBWk1QUFVIcDdaU3A4UllqU1hnSmw4bE43bnR5bG81SDBzNEM4dXFud2ZKZ1dGYXR0cVAyTlZHcGdkbjZkWXZBeXdrcjlrdHEzU3lKbmlBT1JvSjJEQTkxalFmRVRKS1J5UXJZOVk3MTRYbEQ0WXAzZFpMVm11bjZwbFEybHN4VHoxWU1HNnJVaXNDN1NYcDE3dnF1dmkxRUFhVW5tVUFvR3hjNlRzL0xaZVF6SzNsUGNienEzRUNmbUZPL2VGay96UXdyOEtjTGRQMDJCUDJXQSs2NjVKekZBa0JiMWRCZ3FHWGFDdHZkRDlMWXdITkFpR01lSG91YlZYNkRkL1F1MkEzU1laZ1QweHVnRm1lMEE2azBZTDJybkhpU0RIOHBTR0dzbi9WV2RtV1duTWlnc2dEZ3ZTZDJDVzVvV1RReG9FdnBGRUJkR1pPSDUzMlFFTW9EZlZIb2xKcXdrTlZXbjFZZER6a0VwRXYvMXFwemVFWUpqYWRkaEVwblZ0NkZPeTJxM1JJWGNBUm1uOW82STJ5RXNaOXl2NThnVmJRL2tHbGxwaG5ZelNaS2x1NWNoR2dyM0s0WG5BUno1Qm1HNk10azJjTll3aVhaUXlBaThPQ0RndUFwRVB0Uk9jTkRPZlRMUlJPQmMrTHJJRFhpQ0pIMGFkSExnempDWmFyQy9nOHIxWEJnc1pneGpQbTVuOWZpTk96TGVEOEhEaTY5ZlM1VkV5R0U4ejRwMXFRbkIzOVh3ZVJQTElRSFA4aFhiMEoxNk5Sd2pWL0Z0bWtwcGlIMVNLbDMxY1FIdnh5Y216QWg0RldiZzRueW55ZzdFK1ZCaGJEUVB3aStHYjhBSXBrZm9yaklENlExV29heUREaFBjWHRSQWhzSTI2V3Z0cDVkWkEwNFZGY2VqcVg5cGtDcHEwNTdOWmRidTlsZnh2cjNKREtzWGlKd3BhZ0dNMmlWSTJrSks1b1dRaDRmMDhBNW9CYVdwQ1dQQzZBQ25xd2hUVm8vcGhtTUJ3U1VkcGRNMVVUdmNYZlg2Qm9ZdmhDU2VBb1NlYzN6MjNIdFZuWFIxdENwcjRuRDBtRFVjRUVhNzR0WEIxalQ3dDQzNGYvelovYzAzL25FSFFQY1JWUkVXVEt1ZThDSExrclNCMVpCQlZhVWlnSzBBS09SNCtvV2hnRHJkOExGSjdFeGZxQU5abzIvcWNBbkN5cXVpRnIyYWtoSEtSSEx5YWlsUjQycEdqZUZhTUhkb0tCd2RZbDRkSE9GRDdUZ3RKKzljQitIaXRWbU85OFIydC9xcVZNZ1BOV3pPOWJ4OFhnZ1J3Y0x4T0RiQUNwOS9rQ0E0Y2lJNTRpQ3pmLzRZZUpycUF0N0k0bDdVMXhZeUQ2ditYM2dMZ3RLbXFUUUxrU28ySlpFSjhTNjZ6a3daNWxpbm4xajhya000TllsUWg3WWxWaW5pKzVxMzZwMktmdlNhUWZiaHFLcll5SjVkeTJjWElkZmt1RW1CVVB2Q2VNdktYVzNZc0JMWWZ1WTlJSGFPT3V5Z0FqWExRWmx4bjAvSEYzQ0djaWQvOFR6WnUyenc1Rm95SityZ1hjMTRaMVE1d1I2cDZGaktWSXNoZHA4MVNETENaS0dGdlhielF5MXorRXVmbkh5a1IvaDkrcjlSV2xtTjhpZ09pMVBaUnFaM2JhdFVCYzRlTEtpNkwwRTFra0FkTzlBWkNCdTNrOUtOeld0N3E2azNsOHhnbXRXbEhkUXVodU80QVdTOEltSXNqcW0rRGtIa3JGdWdUQmVhMHplYnp2ZlhMWEswY3VvTnEvOVdZbnovN1A1dmlmRTlMOXkzeEFqNFJPUS9EaW1EbUFpVEVWNERJbDYzditSSW1ESDVaZE9STWVTWnJuZWUxOU0vbklEQU5yNERhUUw5cTF1TURBdEw0cWwrZGhqZVA4UnJCbkkyWENDejFpUUxwdHBNa0NERWZuTmVMZXNJeXNKdE85eDJjWXhSTzlITWNvM3F0Y2NxNDM0YWNZUGdZbUlEWkJRR0xNRmRXU2h0ditDRUFUWjdIZW5ZR3BCZDUxOUFhUlI4S3dqRFlRdUZBZmJtZ2xHRzc1TzBxMDQ4cU85eXFYWUdHdXN3eVhSWHgwUkl1NkJHV2ZqYkFxRjhjTVFXa0FUcTQ5ZXVkb1pCc1RQY1BodnVOSlBVR1YrN3RXSHBwemIrSGU3RTk1bmdPU1FEbzJ3cjk3NTBLSVhvUWRkbEZVUmlid2ZrM1dCcHFxcVdvVWt3TUJOWXpVR2xpTkljendCckFNdWdNemxOdEFMUzZwRDFLdVlhMU5KS1VISjViTlpONEQ1S051eXRYc1FiTXBPZzB4K1ltbWllYWI3dnVDVDJwVEl6NEdNSm1HM0U0dFgyUE10NVh1OHpDU2lOaHNyME9nVDBObnZGRVVnQTVzaFVwQjNxMG93YTU2dmlxdlZsRjUzQ1BGc05TaVRNK25ESFVDRXJWSlJuSndxekN1cisxVjJjSGV0b2cvMTZDWm9rbXRxcjBpei9xSXp6L2JQN1RYM25kOVdkSDE5N3BSM01KZGF1N3BYUmFZQUp5NytCWGlrVk1tZnNqQWkxUWZ3VXNtWm9uOWxPUUhHb0tGaTBwM0xRWUhWNFNlM1MxQmFyblhmc3RBdnF3a2YvcWxxcFhpL2tJZFpheHVZTXNTYlhCeDVtMGVHS2lVQUNKa2tVUUZ6MVEzQk9MWk9xL2pnU3BXbi9ITnFXSkF2aUFMUlVsWmtZYW1RRi9kV29SRmpoUEdUUjFMYWhSbGtOSFRXRlpqanpIQWNUbFk1R3JWanBScENDbStSNG03ZTkwdzdWSnh6Rzk5RWtaUTlzRlkvQ3BOU21QV2xaQkxkaGtLcnhvUDM5OEFkaXFub1dLN3laWVBIYW53c0pWT0hIZEJmMUl2WWdad3VuUWEyRC9LMUhVSnZVMjV2R2F5bC9iYnhEWGJoN2FZY1F5RmlZa0tGMk9nRldyWEpqVENOY3E2M1JxdGFuVHZRV1p3dzhvcURtNitEUjlnU3U0U0o4SG1UaG9kWU5RV1lvUGRqR0NaWUxDSUpBb2FreVRTWkttM3FuYlUwVWRtWkE2dEFONmo1ZytSRVFHUk5ISE1VK0lDcG1UNzN0aUdxenRxTzJOOW9wVVhLUFVJYWVkWDR0cVdXOWRaOWY0eDNxS2VyZkNaeVE3MEZnQ0MzUm1GeEN4NFZXLzV5cDFsRndTVWhzSS9iV1NTWWpudFhwaSt5ZGIrV205bTZVekZXVlZSd0xNaG5RanhrL2dISlhHeXlwT3UvQ0hFSklrdS9kYVk4TFRZR3Mxb2JLN0MzcXpKdHdqMXpndmUwbEs1NG5nUVU2bVljVzZ0bFhuU3dkUElmT2tMRnNIdTQvRnpPb0dySk93T21JVTFFTDY2aEs0NlBqQmR0UVFIVVAxTTNTeHVMcm4rU0Jub0VJa2xUQWlzc3FIazAxUFlNVzB1T01DUU9wcG5VZ25vakJZQ05tb1QzZXBmWHNDN0JjRzVWbXpCNzRDQUNHRnB3S3BkeWZod3JhMmxISkM4R0U2bFZqdjQ1WVJwRDFuUmxwMGtvdzNJcnFRZHdxTVBTa1l6WHZvSTVMQkRyV2cyQUdqRFRRRmRXc2lZd2p1M2xzeFdzaUtGRitoYlFoanordG5CZVYzbEVRMjdUcGhSVmRxYXRCd1ZUb2dqMks5aUIxK28vazA2bXlyaGFjUHh3NmVKL2RyeS9NOUx1ZDIvRTNyN09lcUp1R2wzT2Vod0dzVklaWXRoSWNxYk5ocFl5a1V3RkVYSzVxR0F5cWRNRTNwaU5qcUZCN3UvTnFNRGJaQnZ4YThOTkQxN3ZML2NrNk1qajFPRWlCYmpWb1Mrc09uWTlVcElXRzZEMUZpS0IrVkFsRXdwcC9kS2Q4SldZai9PRUpMa2xUbmVuRDBsaW9SM1pKdlcxQkZxK1Qvd0ZLVTZwbGpCanlCQnRFN3N2dnVsV0lhL1JwbThBTllVRld2Z1hkRXBrWjhFQzhJZ2ttNHBVTVc4R3Zyak9NWWFzckNBRFEwU0FBRDMyRWJoektwbDVRUUtBbmowMEVHR014OVZ1eTZPcjF3SGxsSFd1OXdONlZLdTlsSUtYcWErVU53SlJqUGRTVHJ6Nm5yYTBTMVVFS1FPVjVaNS9vUkJEUWdwN2d5Tm9pT1dXbHBvUzJwV2hiSllzT1FqdThicWhkbG5PaFg4dFdSN2pzdkZ3N3M2eno2SVMyQ0Z3MUFlZ3ZxV2FUWDZkUndCS2kwT2ZyaVloWnZmbEpoakF4djFxMk9zTE1WODNtcjlPQ3BBUW1jdG9kSlVUZWJSMW5KS202am5Rd3o2Qld5dWJVZHJpbkFxZG1nSHJ4K0pNbEJac2dWL1dBNExxM2ZQeGxGQ1NjZW9KN2YzUUVaL0tkcWpPWEl6cENVNms2bmdwcmFqU0trbjJXZGZvTDJwaXZzcTVOZzJaYkFnejNQSnBrcStxRkVhUWw2ZFVQU1U0djlVbGovT1BWNFF4Ri9sVGZvamI4MEh1R3hvTVRab1NwSjIrcFlIbDhqV0ZMVFdiYzhiVUVPZkpiSjE2QUVTT0psMXBJY0FaM0UwWGExenFmUWo1Q093ZVVLZ1lwTTljWHM0eGVyVkREVmVFZWduTEk2bGRxMGpHZjVGK1BPZ0NLd1BDQVRYenQxOGhLS09rZFNuMEhVT01lQ1JmZVdOS3dKWkZMeGZmUHRIR0lVZTcwQzBPSEhnS0ZyT09IT29YeHJpbTJBTE5ST0dyM1VSZE1mbTM3T2dCVU00YlBmVzdac0RzNmpEdDFJclBLUG8xSU1uRDV3NHJzcWUwcklwMjViNm8ydk9PLytNMnJmakVHaXZTQSs2K09oYkdzQ3l0d0dmUmdEVUdKRmdPR0xSbDhBSGV5M01qdHc4K2xGMXM2andscDQ0YUlhbFhRM0swNkpzUFVraUo4NUp1SFJBT1BqeDZvaXpNQkh5RzJPb1M5UEF5V3NHdlZwODRuSWFnUU5iNDZqM01rK0hCcnlFMUNmYXB3eTlCRXQ0eFlQUVY0a0lKT1B5cFFGQjBQMVc3VGh2a0JabFI4RWxjV0xvUjlrbGJEcWYwQmxuOUNZMzdpZzd0Q1hiQ1l5SmF0VmxsaEU2RkJKNGVaRXgzekcyQUd5eiswVjJJZW9GMEJrVTB1QnpLQW4yTHdPcGFtazNoNFN2RG82S3duWVkyaFZJT0tnRTBLdEttQVhWdFc2VGNEc1dTY2prc09uaHBKb1VLampvUyt2Z2ZVU0hKRUFoNTZYdlZuRDBDMzZWaWdOSXlLRnNBcXJub2RuUmJzNnRYSTFscUdKMGFYekh0T1NzZVhSeWx1dmhNREtlb2FnVlU2NzhqTXVrWG5VTFlSRXNnaXVKajV5Zm1kazlGT1RJMDR5cXN5czdxeHRSUHNKSlNoQXJWU1YwbUZoZVBXcjYyNTZ0N1BxaG52WkUrYkEvdzFxYnRLblNpaUpwQWN5T2tnSXVIdFZEY0pSeWM1TXNHVG1ZWnlGRTl4RERXdUVRb290S1E2ZGJpdlpmTXBiVlRHOFRyWXIrbzFkSnltVytDbEt2UEFIZ1kwSmprcTRMRXVkVTJUcm9yNU9Lc2lWaHlLZXJEUGZuWldSNHlCUk9LQ3Q4SFMxRlErOVFzSU1objhkajlWcWlQUloxQ0h0YW9YcUFVSlQ5UHZxQ0RSZ0hOV2k0VFNyMkpJNnFFRWFoa2RXVlJQMmEveUErOWNEV1FPN2ZITHZwTzRCRS9TTWJzZG1lV1Z0QnNjTUpVSFlhMFRJLzZDMlZPSFgvRHN3T1c0YjRjQk80bzhOa25RcTlOR05wTmEzbC9mS05tZ00yTUExd0Y4VlZLeExBUnRGYWJGZUNQQkNrK1BMMG1LM3U1ZitYNnQxNE5DV0h5MEI2UnFxUHJ4ZFY5MTNNMm54blh2dDhIeTYrM1Y0TVlBanJReW5LL0RqSkx3RVJ0UTYrZjRxOXJpd05KZnk0ZHBaS1VaTVlYMXRUN0dVY3k4WlZXaGEwb0pCcEFrTGNHaXVnNjVERzhJK3QwTkRFdktmK24zVkRTMTM2b1NFZ1JOYllYUCtUNGNIY2dUMWRHaVhzSlFsQmZJM1hjbTBkVE9OUHgrSGNVNlRuM2Vob3JZcHg2TmlTVGYydWtETUp2T1Ztb2ZVSUN2WDdZQlpWYnBWY0VPVWU2MUo0NEN1TXl4bTE3dE9QaHM5QmI2QkFwODlJT0thV3JDMFdaUGwzZ0YxOEE0Uk5kYThCS282MGRQSFMrTjZBRWxzdE8yVndPeldhRFh1UXR2WDIvSTBVU0dLTlBpaWpvQkgxR0VvS0VlR1E4RThSSHhhcVdhUkJqTGtWd1JQTC9xQmE1Tk94dzRmLzArRFpWMmVsRWxBUmFFRW9QTVU5cFBoT0ZkdVYvZlg3VUEyVDBCVzNqOUppaFNMRTFDRjl1dU9xK2wzeFFROUJ0KzV0YXZwakFVMzJnNkUzdWZMNzBIVWJrTVMwVjB4Szcrby9kVHI1Nm9JOWY4R3hSbFRoRStUUzVTcGU4aFFZcHE0T25SdlYzU1FEMC9yRVpRWHd4eGFnN3VuSW9RSkNwZnFLWDY4N3Nmam42ekNXOWE4QXNvZFpkeUdyUWg5WEVkVytjS2NsVGJzazRHQWE2T1dmU01ZdWhYNmFoelg0cDFmQjBnSU1hQUNJdVNuVG1yWkJySGZNejcyVmZsV2RSdnRJd25kWDNqaWZEcWFtTnFLTUFJVE90d0lpS1ZtTitXL1k2Q2ZHZ3ZhZzk2cFBTTTRINlNGeXlEd05VMDUvQ0NBZERXV1pDc0xkd3VjYUhmemhXQ1RxcW9rNlFoTVZqOGhiaEMrcGFqWHlLaEJoQjFXT2diMkxnVm5Gd3E0azZUcXM0dHBuYXRYWlorcFljNjUvVmRzYTVPQzZKbG1PaGNsVWdyYWFjQ2tHbytlVDJqQXhLMzJzOVgwTG1OZEZqTmdSTm5wcHJ5UThkdzFTeWNWQ01zUERKSmtMWEZxWk54T2pMejE2L01jZ2lFOWZlVklSd2o1dFQ5TjlDdXRoamc2dDE0QUFBQmcybERRMUJKUTBNZ2NISnZabWxzWlFBQWVKeDlrVDFJdzBBY3hWOVRwYUlWQlR1SU9HU29UaFpFUlJ5MUNrV29FR3FGVmgxTUx2MkNKZzFKaW91ajRGcHc4R094NnVEaXJLdURxeUFJZm9BNE9Ub3B1a2lKLzBzS0xXSThPTzdIdTN1UHUzZUFVQzh6emVvWUJ6VGRObE9KdUpqSnJvcWhWNFFnb0I4OUNNak1NdVlrS1FuZjhYV1BBRi92WWp6TC85eWZvMWZOV1F3SWlNU3p6REJ0NGczaTZVM2I0THhQSEdGRldTVStKeDR6NllMRWoxeFhQSDdqWEhCWjRKa1JNNTJhSjQ0UWk0VTJWdHFZRlUyTmVJbzRxbW82NVFzWmoxWE9XNXkxY3BVMTc4bGZHTTdwSzh0Y3B6bU1CQmF4QkFraUZGUlJRaGsyWXJUcXBGaEkwWDdjeHovaytpVnlLZVFxZ1pGakFSVm9rRjAvK0IvODd0YktUMDU0U2VFNDBQbmlPQjhqUUdnWGFOUWM1L3ZZY1JvblFQQVp1TkpiL2tvZG1Qa2t2ZGJTb2tkQTN6WndjZDNTbEQzZ2NnY1lmREprVTNhbElFMGhud2ZleitpYnNzREFMZEM5NXZYVzNNZnBBNUNtcnBJM3dNRWhNRnFnN0hXZmQzZTE5L2J2bVdaL1A4YTdjbUx3MFh4dkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg1QWNDRUI4ZkJWeEh0QUFBSUFCSlJFRlVlTnJzblhsOFZPVzkvOS9QbVMwN2tJV3doTVVFQVJFRXBBVzBJbW9ScFlxMWlGV3cva1RGdXJTaVhjQzYwTnFDWGJEMXV0d3FXbXF4cmREMklyZFhzYlRJOVlwTEN5aWlVdGtERVJJZ2V6S1RXYytjOC96K21ITW1KNU1KaXlJazhMeGZyL01LWkNZemt6Tm5Qdm51WC9IOXIxM0FtcTFWUkgxOUdUYnhadVpkK0FHM3oxdEYwUjJyV0R0dkdGRExpaG5qbUxkaEhJcytXTTcwUEtEOEdhNjQ5RkhLTDEzTTltY24wNHFmRmJQR011L04wU3pZc0p3Yml1enZSeWxmc1lDSEZyL0M1ajBCZklWbk1mN21lN2ltYmdGMy9DN0t6R1ViV1RpZUxrazRIT2JBZ1FQVTFOUlFWMWRIWTJNalRVMU5CQUlCV2xwYUNBYURoTU5od3VFdzBXaVVhRFJLTEJZakZvdWg2enE2cmhPUHg1T0hZUmpKcjRaaFlKcW04OS9DTkUyY2g1VFMvaXFrbE5nSElGSy9Ba2dwaGZYU2sxOVR2aWQyN2RwVlhGQlEwTnZuOHhXN1hLNWlUZE9LTkUwckVFTGtBejJBUENGRUhwQU5aQUdaZ05jNlhJQm1QWjRKR0VETU9zSkFDQWhLS2YyQVgwclpKS1Zza0ZMV0c0WlJwK3Q2ZFNRU3FUbDQ4T0RCa1NOSDFsaVBJeDFIdS84TElWSnZzNzhISUlVUTdiNDZEcWxwR2tJSU5FMUxQYVRMNWNMbGNxRnBHdmEvM1c1MzhxdDllRHdlM0c0M2htSFF2WHQzZkQ0ZlBwK1B6TXhNTWpNenljN09KaWNuaDl6Y1hMcDM3MDZQSGowb0xDeWtaOCtlOU9uVGg4ek16R080NnZ5c216dUptemRQWmRYYStReERrWXA5MGJlZXNoV3pHRHZ2VFVZdjJNRHlWbVg2SElpeWJzNVlibDVWeEIycjFqS3ZpNzA3c1ZpTUF3Y09jT2pRSWVycTZtaG9hS0NwcVFtLzM1OFV0RkFvUkNRU0lSS0pIRkhRbkdMbVBFelRGTGJBcFloWkd5R3p4Y2twVXFtQzVmeC9UVTNONEp5Y25FRnV0N3RNMDdSU0ljUkFJY1FBWUFDUTBVbE9jd1RZSjZYOHhEVE5Dc013OXNaaXNUMk5qWTNsQXdZTTJKMGljUEl3Z3RkT0FHM2hFMEswRVRwTjAyU3F5Rm5DbGhRNTUrRVVONWZMaFdFWTVPWGw0ZlY2OFhxOStIdytNakl5eU1qSUlDc3JLeWx3ZVhsNWRPL2VuZno4ZkFvTEMrblZxeGQ5K3ZUQjYvVWVWdEMycm5pUmw5NWN4WXBWbFF4YjhDckxieWhSS3BZR2R5M1FhbGh0WmZIdjFoUGpMQzRjWDNUY0JHenJNM05aVmpLUCtWTkw4Tm5mTFYvQjRuVUI2RHVWUzd1WXFPM2Z2NTlEaHc1UlcxdExmWDA5alkyTitQMStBb0ZBVXREQzRmQmhCVTNYOWFSMWxpcHE2Y1RNdHNwc1liUC9LS1VSc2piLzM3VnJWODgrZmZxTThIZzhJMXd1MTlsQ2lMT0JzeUQ1Vm5SbU1vREJRb2pCdHBCNHZWNXljbkl3VFRNS2JETk5jMnM4SHQ4YURvYy8zcmx6NThmanhvMnJzeXhGS1JNblN0ci9kNHFjbEZJS0llejdKQVhPTUl5azlXWmJjOVloT2hJNXA3Q1pwb21tYVhnOEhqd2VEMTZ2bDNBNGpNL25JeFFLRVF3R2FXbHBJUkFJNFBmN2FXcHFvckd4a1lhR0JtcHJhK25WcXhmOSt2WHIrTE8wNmdsK3Q3NkljVGMveVpOSzFEcTIySVpjY0QyVEp3NmppRm8ycjF2REIxVlFldk5TVnM0ZlQ5NXhlWXBLVnN5YXhydzMvZlFkTlpHSm8wdkF2NVgxcjJ4Z1Q2d3ZWeTVleVpPVGk3ckV5YXF1cm03bmRqWTNOeWZkVHFlZ1JTS1Jkb0oyQkN0TjJHNW5pcUNKRHF5eWRoYlp0ZGRlNjFxeVpNa1hNekl5dnVCeXVjWUlJYzRGQnA5bTEvUXUwelRmMTNWOXM5L3ZmLy9yWC8vNisrdldyVE1kNHBZVU9TR0VtYzZpUzJmTmFab20wMWh4dUZ5dU5pSW5wU1FyS3l2cG5qb0Z6dXYxSnEyM3pNeE1zckt5a3U1cHQyN2Qycm1ueGNYRlNxRStyYkI5LzZhdnNHNzlOdXJJcGJCc05GTnZuc2M5MDRjZEoxR3pxV1g5aTArd2VOazZOcGRYRWFDUTB2R1R1Zm1lZTdoaGRPY1h0ZWJtWnFxcXFwSldXanEzTTEwY1RkZDFZckZZMGtKTEUwY1R6amhhR3N0TXBJbVgyVmFaK043M3Z1ZDYrT0dITC9ENWZPZHBtbmErRU9JOElFZGQxbTFva1ZLdWo4Zmo2d09Cd01hNzdycHIvVi8rOHBkNEdxRXpuYTZyUStTY2NUbVphc21seE4ra2xKS01qSXgyc1RldjE1c1V1STdpYjA3M3RLaW9pRjY5ZXRHM2IxKzZkZXVtM3NYUEdtTlR0S0xyT3Z2MzcyOWpwVFUxTlNXdHRLT0pvNlZMRHRpQ2xtS2RKZDFNaDBXR1U4aWtsRnBEUThPd25KeWNpMXd1MTRWQ2lJbUF1dXFQOGUrVWFacHY2YnIrZG5WMTlkc0RCdzdjYm9sYk82dk9hZEhaMXB2ejMzYUN3U2x5VWtwOFBwOU1sMXhJdGQ3U3hkOXM2NjE3OSs1dHJMZCsvZnJoOFhqVXU2ZUU3Yk54Nk5BaEtpc3IyeVVIbkc2bkxXcTJsV1piYUVjcmFJWmhKTjFNMHpRN0ZMTlFLSFN4MSt1ZHBHbmFKR0NFZW5lT0svK094K092Ky8zK053b0xDOThta2NVMVU4V3VJNUd6a3cyMnV3cmc5WHFURmx4SEFtZGJjTGIxWm91YjB6MU5UUzZVbEpUUXExY3Y5WTRwWVR0MmdzRWcrL2J0NDhDQkExUlhWNmRORGh5cGZDUEY3UlFwaVFHbmRTWlNMTFNrbUlYRDRTbGVyM2VLRUdJSzBGZTlNeWVFS3NNdy9oRUlCTmJtNStldnBiVmNKYTNJT1dOeXRxc0s0SGE3cGJNOHhCYTVJMWx2cWU1cGJtNHVlWGw1OU9qUmc0S0NBb3FMaStuVHB3LzkrL2NuT3p0YnZWdEsySTZPL2Z2M0o2MDBaeXd0WFhJZ05aYVd4a283a3FDSjFKaFpNQmk4eE9melhTV0V1RktKV2FjUXVkVk5UVTJyaTRxS2JFdXVqY2lsV25IMnZ4M3VhVHVCYzd2ZEhRcWMwM3BMVFM2a3h0NUtTa29Pa3oxVktHRURBb0VBbjN6eUNWVlZWVzJzdE9ibTVqWTFhVWRaWkN0czE5TjJOdzlqbldtTmpZM0RjM0p5dnFacDJ0V2dhaTA3S2R0aXNkZ3JCdzRjK0Z0cGFlbFdoOEFaRHBGenh1YmFXSEYyOXRRV09VdllaRHIzTk5WNmM5YSsyWmxUMjNycjI3Y3ZBd1lNSURjM1Y3MURTdGphVzJsMmdpQmR4ck9qRWc1YjFOSUptck5Md0Nsb3RwaXRXclVxWTlLa1NkZTYzZTdwUW9qTDFHWFlkVEJOYzAwb0ZIcjVxYWVlZXVYQkJ4OE1BL0dPUkM2ZHdEbHI0TklKbkMxdUhaV0dwR1pPN2NTQ3N0NlVzQUVRQ29YWXUzZHZ1d1NCYmFXMXRMUWtZMmxINkJ3NG5LQUpwOXZaMU5RMElqczcrenBOMDY0RDFKWFl4ZjhtNnJyKzB2NzkrLzg2YU5DZ2JRNVgxVWgxVlIwQ0o0OGtjQjFsVHUzWVcwNU9UdEo2UzAwc25ISEdHV1JsWmFsMzVuUVZ0b01IRHlaZHo1cWFtallKZ2lQVnBUbEVMYTJnV1FXMWJkek5VQ2cweGV2MXpoQkNYS3N1dVZQU2lsdloxTlQwVW1GaDRldFN5cmdRd2lsd2h0T0NzNFhPR1lkTEZiaU9ZbS9wNnQ1czE3Um56NTVKMTdSMzc5Nm4vWHZpUHAxK1djTXdLQzh2WjkrK2ZSdzhlRERaRXRYYzNJemY3eWNZRENaRkxScU5wdTBlc0FYTkVVZExLMmczM25pamE4bVNKVGU2M2U0YmdRdlV4Ly9VUmRPMGFmbjUrZE5pc2RnN08zZnUvUE10dDl6eTBzYU5HK09XbTJwSUtkdGxWZzNEa0tacFNrM1Q3RmlzZEpZRXhlTng2U3dYc2owRVp5akUvcU5yL3hFT2hVTEpkcTJ5c2pKY0xwY1N0bE9kcHFZbTl1eloweWJyNld5Sk9sS3hiUnEzVXppNkJKS0N0bW5UcHR3UkkwYk1jcmxjTjZGcXprNHY5MGVJTDJWblozL3BYLy82MXpjamtjanlaY3VXL2VXMjIyN3pXOVpidkNPQmsxSktSNkcyVStCa2FndWVzOWY0U0FKWFdscEs5KzdkbFN0NnFsSlpXVWxGUlFXVmxaVnBhOVBTRmRzZXhrcExHMFBidG0xYmo3S3lzbHRjTHRjdHdDRDFNVC85TUF5RHlzcEtCZ3dZWUgrclBCS0ovT0dWVjE3NTgzWFhYZGRvVzNEMlljWGd6SFF4T0dmZG05TTlUUzBMc1l0NjA5VzhsWlNVTUhEZ1FFcEtTcFN3blVwSUtkbTVjeWVmZlBKSnN1RDJjRm5QMUE2Q0R0eE9POHVwU1NuRmh4OSttSGZXV1dmTmRybGNzNEV5OWZGV3d1WVFOcHM5NFhENDkzLzYwNStXMzNycnJjMUhFRGpUMFhTZjJya2cwM1VzZEpRMXRRdDZCd3dZd09EQmc3RzZKWlN3ZFdVQ2dRQzdkKzlPeHROcWFtcVNXVTlud1cwSHJxZEliWVZLc2RLMCtmUG51K2JQbi85Tmw4djFUVlQ5MlFsOFl3OUI5UTVvcUlCd1UrSUF5T3llT1BJSFF2RVF5TzNWbVlUTi9rTzdMUlFLdmZEMXIzOTkyZXJWcTJPV3dOa2laem9Femt5MTNwd0M1L0Y0WkVmOXBzNXBJZm41K2ZUczJaUGV2WHZUdjM5L0JnMGFkTnJVdkoyU3dsWmRYVTE1ZVRuNzkrL240TUdEN1VvNVV1TnB6b0JzT3JmVFRnellXYzVJSkhLOXgrTzVFeGlubE9ZRTBWQUJ1OWNsdmg0TitRTmgwTVRFMTA0aWJBNkIyK2ozKzVkMjc5NzlGU0dFbmlKdzdWeFVSd2VEVExYZVVtdmVVZ3Q2N1pLUTNyMTcwNjlmUDhyS3lrNkxjVWluWFBLZ29xS2lUWkxBbnB2V1VUek5hYVhaZ1ZtbjIrbElER2loVU9nU3I5ZDdsOVh5cERoUmJQa3JWSDE0N0VLNHNRTDZqb0lSWCsxYzFvUVFZN3QxNnpiV01Jd3JhMnBxbHZidTNmdWZUb0ZMVFRMWUNRWnJXSUpNbWQ5bi8vK29rZ3lSU0lSd09NekFnUU9Wc0hXVmVOcU9IVHZZczJkUHNqWEtIalBVVVR5dEE5ZXpuZHZaME5Bd09DOHY3MXRDaUR1VXlweEE0aEhZOEVMQy9meTBWSDJRY0ZmUHZRN2NHWjNxMTlNMDdTdTlldlg2U2l3V1cvTHh4eC8vZnZUbzBlVU9nYlBMUkF6QU5FM1R0UGRiMk5sVHUyWFBLVzZwSW1jbndGTEZMUktKTUdUSWtGTTI3blpLQ0ZzNEhHYkhqaDFVVkZTMDZmZTA2OU02aXFlbFdtbVdxQ1hkemxtelpybWVlKzY1dTEwdTF4eEF6V0UrMFd4WUNvSHE0K1BHdnY5bkdIdFRwL3cxUFI3UDdGR2pSazBKQm9QUFRwZ3c0ZmViTjIrT0FicGx2V20yaXlxbE5PMXg1bFlDU3pxSEs2UUtYTHBTRVdmWXhSYTNZMXNrbzRUdGhORFkyTWpPblR1cHFLaElEb1IwVHVWSVY1OW0vUlZ6aXByVFN0T2tsQ0lVQ2szMitYejNBbDlXQ25PUzNNL2pJV3BPY2R2eVA1M09MWFhRTnlzcjZ5ZnZ2dnZ1eFRVMU5VdDY5Kzc5bGhBaTVuQlBCYTA5cVRMRmduTUtuRXkzRkNpZGUycFhBUXdlUEpnZVBYcWNZc0xtWDhHTVVmUFlrSHNOdi92d1VTWjJvUmRmWFYzZHBwekRibUpQVjNUcktPVVF0bm1leGtyVEtpc3JleFVYRjkrcmFkcDNsTHFjSkJvcWpqMm1kclJ1YWQrUkp6U2g4Q25jMDR0NzllcDFjVFFhL2ZYcnI3Lyt1eWxUcGh5eTNGUE5LWENKWFRUQzdNaDZjN2lxSEkyYk9uanc0Rk1xcWRCbExiYjkrL2V6YTljdVB2bmtrMlE1aDdPVElGMlNJTlZLTXd6RGFhVnBrVWhrdXNmaitRNHdScW5MU1dUWEc2My8xZy94MEkvL3diSUdHRGZqNnl5ZmtBa1lWSDY0aVlkZTNjdjZ5Z2hrWmpONjVBam1UUi9DYUtzSFBMcC9Od3RXYk9HVnZYNENaRkE2dUQ5M1RCL0w5TjNyWU96QVRuOEt2Rjd2dHk2NzdMTHo2K3Zybnkwb0tGZ3RoSEJaN3FudWlMMEpaL3d0amNCMUdIdEx0ZUJzZ2V2eVUwTDg1YXg3WlJudVNhUG1zUWNnOEJJM2w2NWo1a3NiV1ZpMmxSY1hQTVRpTlZ1cGl2cm9PMndpTjg5ZnlDMmo4enJGYXk4dkwyZjM3dDFKVWJQTE9WS2IyRHNTTldmR1UwcXBWVmRYOXlzb0tQaXVFT0l1cFNvbm1jQWhhUHdrK2QrdHIyOWtSVVBLdGZ2eHY1anhiRGxWZUNnZFdJeXZvWllONjljem94N1dmbWNJSmMxN21mUDRPN3dXaHNMaVlvYlJ6SWF0TzVuM2VJeThIN3FZZk5haGsxTG5kcXdJSVVibjUrY3Zqc1ZpdjNubm5YZWV2L2ppaXl1RkVKckRQWTFqdGZMWmswVHN6S2xUM0p4Yno1ekxnK3pZc25PNFF5d1dvNnlzSzlhWmw3Tml6aHdXcmRtRzM1ZUxlK2JNQy9uZHNqZXA4cFp5NlEzWGNHbVJuM1VQeldMK0tqOTlMNXpPSFNYbHZMSnNGUXRuK2NsYnU1VHBKM21wMVBidDI1T0Z0ODZlejhOa1BvV3oxOU5SbDZaSktVVWtFcG5tOFhpK0IzeEJxVXBuaUM5c2IvMTMvUTRXdk5wSUxPVXVXN2ZXRXMzTDVzSXJMbWZwaEJ3STdXYldEOTdoemIzN1dCOGF3dVNLZld6MVpOQjMyRmhXM25vR1JiVHcvS0tYV0ZoUnhhcTlNTG0rb2tzSW00M0g0N2x0NHNTSlkycHJheGNYRlJXdHNXSnZtaVZxdHZWR3duQ1RxZGFiU0luRGtlcWlPamVuMlFJM2RPalFMbmJoUktIb0d1WXZuOHJrdkJXNGI1bDNKYTh0ZTVNcTMyaG16citUaVpUelRIa2RVTXJVZWZPWk55ektwV2N0WnRXZVhQTDhPTFlybjFpa2xIejg4Y2ZzM3IyN3pjSmllMnVVUFprakpVbVFLbXJKZU5yMjdkdTdsNVdWZlYvVHRIbEtUVG9SOVJYV1AyS3MrZXNIYktBSDR3YTJzS0ZDVDk1bC9MVmZZMk82QVZBZUwza2V5QnM1a2JkR3BudHdGM2tlU3p3SGp1OVNwMFVJY1c1aFllRnprVWpraVQvKzhZKy9uVDE3ZHFObHZlbTBqc2d5YkVGenh0N3NRYWRPY1V0ZCs1Z1F1U2hORmUveTV5ZjJVampyUDNsczV0bGRxQnhrR05QbkQ3T050M1F4dGpJbVhqbUtKN1o5d09Jcng3Sm0xSGpHWDNvTk0rK1p6TENUNUlucXVzN0hIMytjN0NaSUxieE5MZWV3MHRtcFdjOWtnaUFZREY3bzgvbm1DaUVtS3lYcFpGZ3RVdEc5bTFpd0tVTGZDeVp5YzN4ZEcyR3pxZjF3RXd2ZWE2WjJieFViNGhsY2VPMG9KanMzMUIzYXpVT3ZWbEZaZjRqMUZScDl4NHpsanNGQVBOcGxUNC9QNTd2bjVwdHZQbnZTcEVuUERodzQ4RjByOWhhelhGTWhoREFTaGxwcjNNM3BtcVpNRWtrSVd6eEMzZDR0dkw1L1B3ZjhKdTZNWGt5ZHZJTVBQNHh6OXRsbmQ4bTFmMm1UQjhQdVhNN2EwU3RZdHV3MTFxMWZ4N0pIWDJQWjc2NWs4ZG9ubVh5Q3hTMFNpYVFWTmJ2d050MCtBb2VsbHVwNmFyRlk3SGFYeTNVZjBFZXBTQ2NrMGd3MDgvenkzVlJsOXVPSnEzdVJ0eUw5WGYxNzk3RnFrei94bjd4dURDdE9xY2Z5MTdKbVV3VjFBTzVzaHAzUkxiRUkvTE1VL0hZQ05FMmJOR0RBZ0dGK3YvOC84L0x5L2d4b2xudWF0Tnh3SkJac2o4ZXkzb1Rsc21LYVVScXJ5cWx0Q3FPajRjM3J5YUJ6aHpQMjNITTRTNnRnNTg2RXEzcjIyV2VUa1pIUnRjNFJnTS95VWFOUndMK2VaK2JNWmRGcmVjeDhjaW12Ymx6TFE2T0F1bldzMm54aVgxd3dHT1Nqano0NmJKMWFTbHhOeEdJeFlmZDhXbWEyWnBxbVZsVlYxU2NlanovbWNybWVVS0xXdWFuOTEwWVdWOEs0cThjeTlUQ1Ryc3V1L2hwN252NEdHKzQ5aTdOQzFTeCs5bCtzQ1RudU1QZzhOajU5RTlzV1hNdzFCVUZlVy9FNmkvWWFwOHBwNnBPYm0vdlRhRFI2LzZwVnEwcWtsQm5XUjlrTGVLU1VMaW1sWmwvL1ZneE4yTjVNSkJJUjRXQXoxUTBob3FZZ28rZ01SbzRZekJrRkdlak5OUnc0Y0lDS2lncDI3dHpKUng5OVJEQVk3R0lXbTYrSXZGd2dzSVlGMDJaUnZuQWhlYlZyV0xWcUhWc3JQMkJ5U1MzcnlnRnZHYU5PWUxJa0VBaTBzZFNjTFZLMm9EbkhkOXV1cDFXZjFpYnJHUXdHSi9oOHZ2dUVFSmNxMmVqa1pCaXMrTDhEQklBTnkxK2lkSG5yVFJ1Vy80VUorNy9DcTVkNXFkVmQ1QlhrVU9SeFVUUjRHTmVVYkdOaFJTMGJxbUZpZmd1VllRTmZYamRLc3NCWDBKK1p3N0o1cVRySTVwMHRjTTdnVStaMGViM2UyVk9tVENuZHUzZnZNMmVjY2NaN1Z0ek5UaXdJSVlSaG1xWnBMM2h1RzNkemlXN2RNbVZMTUVLNGVqY2JhejhodDdBdlpXY09ZcWpEWGJXUHM4OCt1OHRNQjNIam04Zzk4NjlrNjRJMTdDa3ZweXBhd3AxUExzWC8wQUordCs1M0xJNTVLVHpyVXU2WXQ1QmJUbEJUVVhOemMxTFU3R2IyK3ZyNmR1N25ZVEtmeVhoYU5CcjlodHZ0dmg4MS9MRnJrTm1Uc2pQN2NLRWo1RkZiZVlodGZwUGM0bUxHbnlGWXMveGw1bTJGY1RPK3h2SUpPUkJxNElNR0FDK0ZtVkM1L25VdS9aOUdjc2RjekZ1MzlpZVBNT1hWWVVBakw4L2I2WHBHajROcmVzbUFBUU1HTkRRMFBKV2ZuLytLNVpxS0ZOY1VaOXpORmptUEoxTjBMK3dtUGVnRUEzNmFhei9oZzlvcWF1T1hjcUhWMmVEc1VUMzc3TFBwMXExYjE0aXhsVTEva3JYVG5kOGV6NTNQdnNxZEorRUZOVFUxZldwUmN5UUp0RnR1dWNXMWVQSGlIMmlhOWlDbjJXNkhMazNCY0NaZmV5bk9yTTc2My8rWm1lc2pETHRrSW8rZWwwbXRweStGVy9lellmbkxUSG92SDE5MUxkdjhrSHZtRUtiMmdoTFBFTWF0V2MrR1RldVlWRjFFbWQ3TWhtb1Q4dm94YzFnbUZBODk1VTZiRUtLc1I0OGV2d3lGUW4zR2p4Ky81S09QUHRJYzFwdHVpVmt5N2hhUHg5dGtUS1hYSzNNS2VsUFlHMkxCSU81b000Mk55YktSTnNmWlo1L2Q2VWVPZDZvUGZHTmo0eEZGTFozN21ab2tPSFRvVUwrQ2dvTDdoUkN6bFZKME1ZcUhKdWF1SFlhaUwweGtPWnRZc0dZdjYzZFZRMlllNHk0WXdmeXJCeVVtRlJRTTRkbDdYU3hhc1lVMWU2dlpRQVpuRFR1TE82YVBZV28zb0dEZ3FYcjIzSm1abWZQZWUrKzk0dGRmZi8wM2wxOStlYVZ0dVZuV1c5eStZN3FrUXVLTGo4emNBakpsQzgzTjZZWE5GcmZPM0YvYWFRWk5Pa1hOem43YW91YU1xYVd4MU96V0tNMDBUUkVJQkw2UW1abjVnSnFaMW9YWnNMUk45OEZ4cGNjQUdEZnJjM25vb3gwMGVTSXdER1AxenAwN0Z3OGJObXdMRUxXeXBqcVFYQStvYVpvVVFwaldkRjVwN1ZTUXpwSGo5a1RlN3QyN1UxQlFRSzlldlpJREt6dXp1SFVLaTgzcGZxYUsydUhjVDZ2Zk0rbCtoc1BoeTd4ZTc0T295YlpkbXpNdmdvMHZmSDZQZlJyZ2NybW1EQjA2dEtDeXN2THBrcEtTdDZ4RWdtMjVJWVRBbVZTd2cyNnRsbHN5RnNmaGpKL2h3NGQzU3JmMHBBdWJNMUhnRkxYR3hzYTBFenBTM00ra3FFV2owUmx1dC90QjRFeWxERjJjL0lHSktSekhlOEpISjUvczhUbkUzY2IyNmRNbnY2NnU3cW5Dd3NLL1NTbWRTUVVkUjFMQklXRFNjbDNicVZrNmdSTkNNSHo0OEU2WFVEaXB3dVlzNlhERzFHeFJPNXo3NlJTMVdDeDJoOHZsZW9pVDF2Q2xPTzZNdUJyOGg0N2ZUTFllQXhLUGVab2hoQmhVVUZEd1VGTlRVMDczN3QzL3kyRzV0UWxGMmVJV2o4ZlRpbHRIb21ZZkkwYU02RlNsSUNkTjJJTEJZSWVKZ2pSMWFzSzU0OU1wYXJxdXo5VTA3U0VnUTZuQktjYTRXY2RuaW02UEFURG0rdFA1VEJaMTY5WnRma3RMUzNaT1RzN3ZuVzZwVTdUU2ladWRYRWdWdEZSaDB6U05FU05Ha0oyZDNTbCtZZTFrUEttelRlb29zcC9DdVVIS2pxazkvZlRUSGwzWGY2aHAya0lsYXFjbzdnejQwaDBKRi9LenVKL2pacDF5dFd1ZmdvenM3T3dIUXFIUTdWZGVlV1cybzFQQkE3aXRUZ1dYYVpyQ01Bemg2RklnR28wSysvTVlEQWJ4Ky8wME5UVlJYMS9Qb1VPSHFLeXNwTHk4bkk4Ly9waElKTklwZmxuWHd3OC9mRUtmVU5kMS92M3ZmN2NaUGVTMDFGSmlhc0xleUc0bkNxU1U0dDEzMzgzNXlsZSs4aU5OMDM2Z1B2Mm5BY1ZERTdHeFVKUFZTM3FVVnRvNVY1L1FLUjVTU3Z4K2Y2ZXU4Zko0UE9kTm16WU5sOHUxZGQyNmRmRU9wbmZJTklrRGtlcVNPcHJzMnh4RlJVVzRYSzdUUjlpa2xHelpzcVdOcUtYYkpKVTZkc2dwYWp0MjdPZ3hkT2pRSDJxYTlsMzFpVCtOeU93T0phTVNJdWZMU1RoS25neUlXVDJNdWNXUVhaZ1FzaUdUb1BTQ3hNK2NRTHFDc0FHNDNlNng1NTkvdmlndUx0Nyt0Ny85VFhkbVJqc1NONmNBT3V2WlVnWE8vbHBjWEh4U1J4NmQwQmhiUjcyZlR2ZXpvNUlPS2FVb0x5OHY2TisvLzROQ2lMdlZKLzAwSmJkWDRsQU5jcDhKbjg5MysyMjMzYVo1dmQ0bHQ5OStleTIweHM0Y1ZwbGhHSWJ0YWJWSktEamphODQ0bTh2bHd0NWFQM3o0OEZOZjJPekp0eDJOSGpwTThXM1NVbE9pcGxBY1YzRzc3YWFiYmlJYWpUNDNaODZjQnFkbGxrN2NjR1JMT3hLMlZIRTdXWk40VDRncldsNWVudHdtZGZEZ3dRN0hlYWNyNmJCamFwYjdPVWRkam9yT1NsZHhSVlBjMGpFalI0NlVRb2gvdi9ubW00WmxqYlZ6UzFQRXJsMjh6WGtPbk82cHkrVWlQei8vMUxQWTl1L2ZmOVF4dFhSMWFrOC8vYlJuNU1pUkQycWFkby82NkNnVXg1K01qSXpiSDNqZ2dmaW1UWnVlWGIxNk5la3NOOU0wRFdndEJiSEtSZVRoM0ZHWHk0WFZwblhDdDE5OXJzSldYVjJkWEpHWHVuamxjREUxWjUzYTdObXpIOVEwN2Z2cThsTW9Qajh5TXpPL3RXTEZpbGgyZHZadmJVRnppSnZFV3RKcythYkptSnNRUWpyZFVPZGh1Nk8ydUozSXZhV2ZtN0RaRzlxZDdtZEg0N3hUWTJvcHhiY1Bxc3RPb2ZqOHljcksrazRnRUlqazV1YitrYlpaVXBsYXhHdC9YeVNRSGNYWmJLdk5GcmNUMVRUL3VRaGJPQnh1STJyMjRwWG01dWJEdXAvV0tPOWttNVRWVWFCUUtFNFFPVGs1MzJsc2JBejE2TkZqcFdXMVNWSmliSmE0T1MwMklZU1F0cWc1QmM2MjJHeGhPK2VjYzhqTXpPeDZ3aWFsWk1lT0hlMTJGS1JhYXRZMktlY1NZK3lGSzlGb2RJYlYrNms2Q2hTS0UwdEc5KzdkNTFSWFZ3ZUxpNHYvTGhQOVYyMCszL1pYZTJDbFphMjFzZHljRnB2VEpmWDVmSXdjT2ZKenIzRTc3c0xtRkxYVTdLZTk5N09qeWJlbWFZcHdPSHlaTmFWRE5iUXJGQ2VIb3FLaW9ydjI3dDNyUCtPTU0vNlpZcm5aOFRhNzlBT0hvQWxOMDJSSGNUWmIyREl5TWo3M01wRGpLbXdWRlJYczJiT0hxcXFxcEtXVzZuNDZ1Z3BJS2V2UUFvSEFGNng1YW1yMGtFSnhFaEZDRE9yZnYvL3RtemR2YmhvOWV2VEhsdVdXbk5zbWhHaGp0WkdTSVUyTnM3bmRidHh1TjE2dkY2L1hTMFpHQmdNSER1ejh3bFpkWFowVXRlcnE2cVNvMmYyZkR2ZXpUYXVVYzV4M1ptYm1BNmdoa1FwRnAwRFR0QytPR0RGaTlzcVZLeCtkTm0xYWxVUGNwR04yRzZacG1uYW1OSjNWWnNmYW5CbFNlMEx2NTVVcFBTN0NGZ2dFa3BNNnFxdXIyelMxTzJOcTZjbzZwSlRpbGx0dWNWazdDdFE0YjRXaUUrRnl1UzYvNG9vcmFvY09IZnJZOXUzYnpSUnhzek9uMHQ0cWI0dWJNNWxnVzJ6MlY2L1htM1JKczdLeVBwYzVicDlaMktTVTdWcWxuSlphdXFiMjFBem80c1dMZjZBV3J5Z1VuUk92MTN2anUrKytXNU9ibS90N1M5RE1GSEdUcVpsU1RkUGFXRzdwU2o5OFBoK1ptWm1NR2pYcXVDY1RQck93N2R5NWszMzc5aVhMT281bVRWNUtCdlFicWxaTm9lamM1T1RrM0ZOZFhYMm91TGo0NzRDWnhpMXRFM096eWo2UzRuYTRXRnRXVmhaRGhnenBQTUpXV1ZuWnJsYXRnMVlwMG1WQWc4SGdCR3Vac2RyN3FWQjBidHhGUlVWM2JOMjY5ZEN3WWNQZXQ2d3oyMHBybHltTngrT3lvNExkZExHMjdPeHNTa3FPMzBiMlR5MG9UVTFOYVd2Vk9oQTFrYktsWFR0dzRFQWZuODkzSDJvQWpVTFJKUkJDbEEwZVBQaVdGMTk4OGNBTk45eHd3T0dTSmkyNGxQcTJwRXVhVHRpYzRwYVZsVVZPVHM1eEd5RGcvalQ3R3czVFpNKy90MUs1ZXcvVis2dG9PRlJEYzMwOWdhWm1RdjRBa1dDSVNDaEVOQkpCajhTRXJzZUk2M0ZoR3FhUU1pRnNQVDNoZWFKcDM2WHFjbEdjbkUrcEJpNFBhSjdFd0VwdnRqb25SNEhMNWJwNDJyUnBGY0JUdE1iYlROSWtFMUxGelpsSWNMcWt6a1RDeUpFamo4djAzVTlsc1pYdi9ZVEtxb05VMTlUUjBOQklzOTlQUzB1UVVDaE1PQkloRW8wU2pjWFFZN3JRNDNIaWNTTXhObGhLSVNWYXJIcjM3VUtJdTlSbG9qaHBTQlBpVVNBS3NSWUlOVUpHTG1UazJkNlVvZ015TWpKdXJxK3ZyeWdvS1BncllIU1VUQkJDU0R2ZWxtcTVPZDFScDdEbDVPUXdlUERnRXk5c0I2dHIyRmRaeGFIcVd1b2JHbWxxOWhNSXRCQU1oUWlGSTBRaVVhTFJHSHBNSnlGcWNSSXhOU21rbENKWXRlMUNsOHQxbjdvOEZKMUw2QXdJTjRFZWhweWVDWXRPMFNINStmbDNiTjI2dGNLS3Q1a3BoNVJTeW9TMkNlTHhlREk3R28xRzZVamNNak16aytVZnZYdjNQbkhDRmdxRitXUi9KUWNQMVZCYlgwOWpVek1vTWpJQkFBQWdBRWxFUVZUK1FBc3RTVkdMRUkzRmlPa3g5SGhjNlBFNGh0RTZnbWo3aHYvdDd2UDU1Z0o5MUtXaDZKVEVvK0EvbUJBM2wrZHpmN3AxNjlaMW1sLzlvb3N1T3BhNzl3WnVBdmFTaUxHMUVUWkFXaVZkcG1FWXhPTnhHWXZGUkRRYWxmYTJxNWFXbHVTMnErcnFhcXFxcXFpb3FHRG56cDJVbFpXUmtmSHBXOFdQU2RqMjd0dFAxY0ZxYXV0c1VRdlFFblJZYXJFWXNaaU9yc2VGcnNjeERCTkRXaTRvaUxJekJueGZ3R1QxNlZGMGFzdzRoT29UdXhWT0FHVm5mcmEreWZKZDJ3SHc5ZjNpcDM2TWFOVzdBRlNkK2VTeC9OZ2xZVE8yYlZENTkzOUxZcXU4Z1oxSUFDa1FVa2dwTUUxSlhFTFVnR0JjYUNJbU5XSm9Jb0pMaEhDSklHNlhIN2VyQ1krbkRvLzNFQWNYWlhIR0dXZHc1bTBmZmFyZjU2anQ3ZjFWQjZpc09raE5iUjMxalUwMCt3TUVXb0tFd21FaTRVUmNMUmFMRWROMWREMU8zREF3REZOSU14RlhpeHpjT1UzVHRIbnFVNlBvTXBiYjBhNzZPNDNKMUx6ZmVuZmdqeWVRbU1UakE3eVd3ZVNTU0pjRVRTS0ZpUlFHa2pnbU9nWXg0a1JsbklqVUNjc29RVE5Ld0F6VGFBU3BpL3VwcmEybHBxYm1VNyt1b3hLMlFFc0wreXNQY0tpbWx2cjZScHFiL1FSYVdoTEpBcWVvV2RaYXNsN055b0JXNzNpdm44ZmovcDY2REJSZGluQnpJc21nT0x4UDZ1ays2OW1pV2IwN0VEZE5nbVk2eEUyWHBraUtHem9ScVJPU1VWck1DSDRqVEdNOG1IUlBXNHhQdDRENXFGelJUL1pWY2FDNmhycjZCaHFiRTNHMVlEQk15SkVCalNXU0JiYW9ZWm9TS2FXUVNLMGd2OGQzZ1Mrb1MrQVU4dGFhWXdTZTIwSGtYOVVZVmFFdThacGRmYlBKT0s4bnVkOGNndGJOZXhRL0lSTjdTMzI1SiswMWYvTFhKM21HYS9uNTFiMVA5dG5EOS9PYktMaWlqc1l4THhPT3RkNGlFS012elJ2eGRXcjV0ZTJTU2pDRU01a0Ewa1JLQXhNQmFOSVFMaUdrUzJxNGhZWmJ1dkNZVWJ6Q2pjOXdvelUzazVtWlNhVWVZYWpyMkVQeVI3VFk5bGNkcE9yZ0lXcnI2bW13a2dXSkRLaXpzVjF2NjRKYUdkQ0VDN3BydWlydE9QWHdQL0V4d1JWN3U0eW9BUmhWUVlJcjl1Si80dU9qL3lFOXJON3NvOENuZVc1K2IrQlBKamdzTmkvZ0Fkd1NxUUdhQkdGQ1dwYzBLblhDVXJkYzBnaCt2NSttcGlZTzZVMGMwQnVQcjhVV0RJYW9QSENRNnRvNkdocWFrdlZxd1pBdGFqR2lscWpGNDNFUk42d3NxT1dDVm42OHZwZkg0LzZPZXR0UFBTTC9xdW15cnoyNnFmN283eHlQZHNuZnNmb2ZqL0RTM21JSzNINWFHZ080aDAxa2NHQUxlNXI4TkllTEdmK05temkzNlBobWZYdDV1dDBFZkp6T2FwTklDVUthU0ZNQUJsTEdwU2swWVVnM2NhSm91SEVSbGk2OHBoc1JETkxjM0V5dEhpVkh5NkM3SzRzc3pYZDhMTFpFdlZwTnNsN05GclZFRVc0c1VZU2JHQmhwdWFBbXBqUnRGMVFVRnhYZEM0eFJNbkJxSVFNNlprTzB5NzUrb3phTUdkQ1A4cGZ0dWpHMmVPR1grT3JzNzNMcnR5OG5ZK05hNnMrOWd4dnVlSkNaWS8yOHZhN2l1RCtmUUl3Q3BsdFdtdy93U2l2V1ptbU5JR0cxWVZ0dGNXbUlHQVl4YVJDVk9oRVpJeVNqaEVJaFdscGFhSXdIcVkzN3FZbzFIQjlYOUZCMUxRY09WVk5iMTVBbzdXaHBvU1VZSWh3SkU3V0tjR05KYTgyd3V3dnNMS2dJSGRneFdkT0VzdFpPUVVTdXAydi9Bb1pFNitxL3d4SHhrSjJibTFnYWtwbFBkazR4L2ZzbGZ1ZWMzRXppa2MvTnhmN21ILy80eDNQVHVLUjJsbFNrWmtuakdPakVpVWtyVTJycVJDSVJRcUVRVFVhSStuaUFRM296TmJyL3N3bWJIbzliTG1nOURWWnB4eWZ2ck9LdmY5L0EzdVlva1ZnMFVZU3I2OFNqQWRIVTdDZXN0M1lYekpweGpjdm45ZDZiN3JFMy8vUjZTcys3bHhjUHBOeFE5ekl6enB2R1ErK2xjUjMrN3llTXZXa1o1VXBUVGlPeXlQajFMZlRaK1RXeUN4MFg3SVR6eUY5OUM3MTMzazN2ZDY2bnh6Zjd0N21JajNTNzR2T25UNTgrTXdlSTdoa09xODFqaGIwMGFjWGFaRUxZRXVMV0prc2FKMEpDMk1MaGNLSUVKQjZpTGg3Z29ONUlYQnFmWHRpU3BSME5qVFQ1L2JRRWcwUjBBMHcvRmVYVmhHSzZuUVVsYmlSTWRkbGFpS3M5OS9qUDd3YSszT0d6eGo1azBhOWVwL2FvWG1JTGExWjlRTW5VU3loVDE4enBZeFZPbWtDM1MxTWEwMHZIa1AvMENGd2IvMG45VlgrazdwZDF1Tysrbk81Znl6cTYyeFVuQkUzVEpxNCs0d2RUSFZhYnAxWGNwSXVrdUxXNnBEcEc0cEJ4WWxJbkdvMFNpVVFJR2hIOFJvakdlSXZsa2paK09tRnI5Z2M0Y0tnNlVkclIxSnpvQXcyR2lNUk5wQURaY3BDcXhvamRCeXJpaGt5NDExSUtwQlFONVI4TWRybGNjdzc3ckRuWjhNWi9zdWlmTFVkK2hYVnY4OUo3ZzVoNVVTOTF4Wnd1NVBZbjc0RUJHSzlWWWpwQ2VlNUpaK0twM1Vuekk5dUpiVzlFLys4M2Fkbmd3amVwNzFIZHJqaHhkSE5sM2ZUSDR0djdPY1dOdHJWdHdsbmI1clRhWXNTSnhXSkVvMUZDTWthTEdhSFpDRkVmYjZFNjNrVEFDQis3c0ZVZFNIUVhORFEyT1ZxbXdzVGlKcmk3a1o4aENkZlhFZFRqMXVESTVLUVNJWkZhWHA3NDF1WmxQeW1aTm5reXBXTW1NL2FhZVN6Nlo5dkFuM2ZnVmR3ekdWNzY2WE5zUGtJTXV2YU52N1A1QzVjenVmQnc0cmVQelZ2MjRWZlhVeWNUcUI1NEovVEY3U3dERzNzUlJlL2RRTjdZamtiVHVQRGNQWUhNdWswMC8zZmJVcEw0MHYvaTBPVnZFWXVsL0lqUGRWUzNkMFVHWEQzblU5V3dGVjgyajFzdnN3YzNuc21WYysvbUhHdFBzZnVjTy9udU44NDV4a2MwaVA3Z2VRNk1hRnZEZGhqNm5wOHorR3BTRXdsQ3VLeERReE5KcTgxSUpCS0lXNGtFWGRlSnhXS0VaWXlRR1NWZ1JHaUtCNms3b3kvaDMxeEV6OWR2U2g1Ri8zRm11M2tzYmNvOXFtdnJPRlJUUzUwOXRjTnFtUXBIb3NUaUVreEJabEUzWEFlYThEZTdSSmEzdFE4VWlRZ2YySDVKM2FyNWQ4eDZOc1lOUDF2Q3M0Tmg2L0tmTStmK3h6aHIxVUttSmkvd2ZDWi83OXRzdU9iblBQVGNWYng2ZDBlekpnL3h5aXY3R0Q5ckxIbjJ0dzY4ellLZkxtTnpyRC9YM1AxdEpnZWVZODdTRnNwNnQ3RDVxVkU4K3RSTWh2bVVwcHh3dklWay9lSmlza3ZqeEZmK2srWU5SWFQ3eVptd0o0cnJnYkZFdnZNeUxkc05xTnBINU5VbytwNE9ZaVZEeDlKOUdvUnUvUUM5YUZKS0NNTkFPZ1RRTldFY09lT2lSTzdiZDNTM255WWMyRmZCQzgvK3h4SHZOK21Lci9IRjh5ODZxc2YwWFRTUWd1ZW1BaEJhdVkybUg2dzk4czlvbnB2ZTZQZkFPeGZ0LytrbUlHNGRpWDVTcEFuQ05FR0F4QUJwSUlXT0lWM0VFWmF3UldTY2tCbkRKeUprR2w2YW0zYlF3QmVvOTRTVEc2NWlkYU9RN09wWTJBNGNUR1JCbTVxYUNiUWtDbkhEWWFzSTE1QklhYURMREhKOVFqUkd3a1EwajlCTUtVaThPTTNyOWQ2VmQ5NjNXYms4bjdJK09RQk1uSEU1dzVZdDQ0TUttRHJDOFdTRmx6RC83cGVaOUt2SGVQNmFwN2tsWFNINDN0ZDU2ZUFvNXAyZmsvelcrcVhMNFBiSFdkbDdLNHNldUlzWnVkTjU5cm1yS0FQVy8vUmVYdG81azJFamxNNmM4TGpLdFBQSnFuMlQydnRpWlB6aU1vcXU5K1AvMW44VDNnUGlhMWRSY0VVUFdyYlhRZFVlQWovYTA4R2o5Q0Q3SnlNUXIvNmR3SWNHVE9yQW9udmdlZ3BuNUNOOGNlSXIvMEh6MzBMSGNQdXBUNS8rQTduL2tTZU82Mk5HMzZqZ3dPQ25qdm5uU24wOXJ3SCtEZWlBTHFXTUM3dk9UYUtSNkVyQUJPS1lVcE5DeElVaFJUeWVzTnBrbkFodVFtYkNKVzJvckdISGRTOFF6eWhtZUdhL0k3dWkrNnRhWGRCbWY4SUZUZlNCSmtZUjZZWUVhUkNQeDhIbnd5VWtoaDdIcXZMUjd2L2JydXVGRUZmNkNuT28vY2RqVEx2eVNvYWVONW5TeS82RERiRVk2VHpPa3VuZjVwNkJ1M25pcDMrbk1zM3RXMWY5SGY5RlZ6SGVZWUg1dkZDNVl4OWJkKzZtUE9vbEw3Q1B5Z0JBQy81QTRuYkZpVWY2NDRpaUhuaEhGZVByQzJiTWg2Y3c4V1pvZVM1azRNalpMTmYxRThqdCt3bitYKzV6V0Y3dFhTTDl1YjlSZSsxZmFQamhMdVNrU2ZTNHFjY3gzSzQ0a2JpRWR0bW1nVCs1d09HU2VscHIyNUlkQ1poT2w1VEU5RjFkMTVOZENSRVpTM1FsR0dHYWpDQjFldUN3SFFsdWdKaXVjNmk2cHRVRkRiWk93N1hyMWVKbVF0aU1lRnpFRFlISEpZUVJONFZoQ20xb1hxRkxjN252QkNoZjloQ3pYdXJGd2wvOW5xbEQ4dkVGL3M2TXljOTE4UFNEdU9XQnEzaHAxbk1zZW1ONnFxeXg3Qjh4SnY5c0ZFN1BjdlRkUCtESzU1Ynh1NHBCM1B5ckpZeXVmNW01Mzc2THhiUVFIVGlMSjRlb2krbWtDTnZmM3NCZmREN1pNK0xFbm5xVjVtMDl5UHVQYVJUbHVZQnFBbmNkSVp2bExTYjdtd1BRaXFESFAwdXR2Mkp1Qk5EdC8rNGthK2wvVWZ1ck9pdW0ya2k4RHVMYjZ6RFA2a3ZCdEtHNFgvZ1g4V1RNOVFpM0swNG9QVDNkcmgyaDlmN1hGdk9nYmxsdVRwZFVncEFTYVZyaUp1UFNGQ0llbHk2WEN4MHpVUUlpZGNKbWpCWWpRck1XcHNGb29VWnZwc2lkaDBlNDBndmJBYXNYdExHcHlXcHdUOHhZaTlvTjdycE8zQUNrYVk4andoUXVOQkVYcHBUQ2s5L3ZtOEE0YUdIelAzZVROK2FiVEIrU24zaUdRQXVIeXcvNFJzeGkvcFd2Yy9OVHk4aU5lWk1sSGRIM1htYU43eEtXcHJxVnZ2NU12ZnNIVEUyNnRGZng1QXRYRVkyQ1Q4WFdUaUlob2krc0pmcUMvZjhBL2h2M2dkY0ZzYU9vUFlyVjBUSjdPU0dueFQzcWZBcC9ra1h3MXJXRTkvanhQbkE5M1V1MzBURDd3NlJJeVNpSm5Cc3V2QTljZTVqYkZTY3RUSUg0NHJJQmQwOGVzZmVCVlVtWEZHeVgxR3E1UWlSTXAwVDVoNVlZVG9rdVRYUmNSTkVKeXhnKzAwT0xFYkVLZDFzNHBEZlJ6MXZRL2puRGtRaUhhbHBuckxVRWc0bkJrZEZXYTAzWGRlSlNJakdGRVU4dU9oWkNDSEZOV2UrOEZpRyttWGk0SE1vRzVsUDNyMlU4LzgvZGJIM3Y3engwLzFJK2lFRzBRM1hMWWVMZDMrWlNnZ1JhcjNMV3ZiU1JvaXN2WjloUm5qd2xhcDJVVkZIclcwcnV6OC9EVjlqZXhUVDMxQkhmN2pqcW9oQ05KcjVmRjBQZldJY1lONGE4YjViaUx1MkJaOUpZOHE3SUl2N1dua1QxK21GdlY1eE1lcml6cjcwNzU4dTVwRFRJSjF4UnFhVjJKQmlHSVF6RHdGa0NrbWlVanhFMEl3U3M4VWExdXArSTJiNDlUbXRYczVaY25kY3Fhcm9leDdDR2o1aW1hUzFtUVVpRWVHenUyTmxlV3ZWbjlPMC81S0VSaDNqaWU3Y3g3WUVWK0MrYnhjemhPVVRyRDFPelZuZ0o4KzhlMmZxSE5mQTJMLzJ6RjlkYzFsOWRFYWNhZmZ1VE9ha1VYOTlqTDhHUWEvK1AraC91UVh4dEVrVi8vd2FGUHk1RnZycVd4bDlXSDlYdGlwT0hRQXk5cytlbGw5SzJhTGROSDZsZHRHc21oQTNEU0pSLzZOTHVKVTJJVzhoMlNZMFE5VVlMMVhwVCsrZjc1ejllWWxkNVJic0ZMZjRXeXlWdDNUd2xvdEhFTG9PNFlRaHBTbTNyaHYvTkgxeDJ4anR3bkpzQ0Ryek44Ly9NWWVyMFVSU3BhNkpUY21EY3kxMzY5ZmZaY05VeG1Cc0RqdXB1aG1GUVdWbkpnQUVEanZxaHUvRE9ndzU1NDQwMzB2OWhrbkxQSC83d2h6dWVmLzc1T2lBSWhJQ3dFQ0ptdWFpR0VNSzB0bGxKYTlHTHRMZFkyY3RlY25KeTZOYXRHL241K1JRWEYxTlNVc0tnUVlQYTdFaHcxOVczcjFtelZ1Y2xyRFZyMDFROGJtQlkxcHFVQ1hVdEd6amdsdU11YWdCOUx1Q1c2VW84RktjK0V5ZE83RFN2cFhVdDZPZEc2YWhSb3lZOS8venpLKzFZbXhCQ3h5ci9FRUtZUW9qa21qN24zbEY3VzN4T1RnNTVlWG5rNStkVFZGUkU3OTY5NmQrL1A0TUdEYUtzckZXS05Ic3BTekRvcUZtemR4ZllvbWI1dTZacEN0TnFuZHIwZjZ0eVhTN3RGblZwS2hTS282VmJ0MjdYekowN056ZnBqa3Jwc2R6UnBFdWFXTmRwQ211N2xiQkxQeExyQnhLdFZ2YW1LNy9mVDJOakl6VTFOWVJDcmZXS21qMW5MUlFPdDQ3NXR1SnF1cDRVdG5iVzJvaGhRMllCZzlSYmRYcmk2cFYxZXJ4MnphWGU3T09JRUtMc3Z2dnV1NWoyU1FTWGxGSkxUTjZXd2pSTkxHRkwxclRaNG1ZM3lOc3oyK3dWZm9jT0hXcDkyeElkQmdrWE5HS04rVTY0b0RweG82MjFKaTFyN2NhdlgrMXl1VnczcWJmcDlNVTNwcURydnZZdkZCNkRDcXBha2VOTmZuNytWMHRMUzcxcHJEYk50dG9zY1d0bnRkbmlabzgxQ2dhREJBSUJHaHNicWEydEpSSkpMSC9Sbk5hYU13dHFENDgwREFQVE1LM2xMQWxyYmNtVGkyNEVWT1BTYVV6ZVBXZVRkWFYvWEgyenU0NmwxamVMN09sbmtEZG4yTkgva0NkVHZkbkgzMm83KysyMzM1NXdORmJiNFN3M3A5WFczTnpjeG1wekovWVhSTlBHMWhLMUpDYUdaYTFaRnB2bWRydHZWRy9QNlkzV3pVdjMrMGVkNHA5QURidzU2czMrSENndUxyNENlTk1TdHBpVTBpMkVjSk5JSkdneWdiREtQcVJoR0NJZWo4dlVXRnNrRW1sanRkWFYxVkZTVW9MYkt1V3dkNEltbFRGdTFaRVlwb0VwSlZKS0pJalF3UjFUZ0F2VVc2TTQ1Y25zQmtKOC9zOWpHbkJvSzdUVW5EWmJzVFE0YitlcmkwY052dUtPalpiRjVrRktIWUZMU2d3U2hoU21OREdrZ1NGMTRtYVV1QkVtSGcraXh3UEVZazFFb2cyRUl6VzBoQS9RSFB5RStwYmRIUEwvT3lGc3lXTGN1RzJ0R1JpMkcycEtwSmxZemdKU2VEMmVHZXFLVjV6eXVIM2d5L3Y4bnlmVUNKV2JRUStkZHFkNFlOL2lTY0FIU2FzTlBFSVNSMGdYQ0ZNaWhaUmdTaWtOdzhRd1RPS0dpVzRZNkxwQlRJOFQxWFhDa1NqQmNKUkFNRXhUb0lXNnhtYTBhQ1RoZ3VweHZXMFcxSEpEcmFRQlVpS2E5bTRaSVlTNFZsMzFpbFBibkhCQlRzOFQ4MXd0TmFlbHFBRjQzTzZyL3ZlM0Mvc2xMYlpFbkMxbE53S1lVZ29qRVdzVGNTTVIrOWVOT0hvOFRpeW1FNDFaNGhZSzB4d0kwZEFVUUhPV2R5UUxjVzBYMURRVGJtakNXdE95czdPdVUxZTk0cFMzMVBKNkorSnJKNExtQTZmMTZSNDdZc2lGcEd5elFsb1pVb2ttcFJTbWxKaW14TEFUQ2JhNHhRMWk4VGpSbUU0a0dpTVlpUklJaG1nTUJOR1NUZTVPVVV0YWEzYkNBTEhxVDcvTDBEUk5DWnZpMUVTNHdKc051YjBTL3o1Um5PYWI1bk95TXE2WU9XVkNobTIxU1Z2Y0VyUGFCSW1aUmlKaHRVa013eFFKbDlTYS9xSEhpZWx4SXBiVjFoS080QThFMGV3c3FHNjVvSGJTSUdtdFdTVWVreTY2NEZxZ24vb0VLRTROSWRNUzFwazNCN0lMb1hzSmJmYjhuU2k2OEVMbTQwVEpvM052SFpmR0hYVkowS1MwaFkyazFSWTNUT0p4RTkyMjJ2UldxeTBVamhJSWhYSHJ1SW5qeHNCRlhBb01LWVFoQllZbGFKWnFhdTdDMHVrbkpFT2tVQ2hPSzNvV2RMOEVlTnRodGJtRnhJV1FXdUl2a0pSU0lnd3BNVXdwRGRNUWNjT1F0dVdteDFPc3RsQUVyZFVOalNkSGhTUmFwNlI5aU1iR3h1RkNpTXZVVzZCUWREMmliLzZHb1hlOHpOWk8rdnJjTHRjbGE1Y3NTRTBpdUN5ckxUbk9TSnJTS3RnMUxjdXROZFptSnhJU1Zsc0VkN0p1elJJMk05a1RtaEExUU9UazVIeE5YUjRLeFFtazhqV3V1UE1WdHJWKy9NbnRPWkRKMDZjeGYwb0poeTFFYWR6RmkvL3JaL3owTVNkd3lmZ3VIcnJ4S1phbGprYnpuTXZpbGJPWWZJU2YvdUx3d2VPQVQxS3NOaDJCaGlSUitpR1FwbWtsRXF6U0R6dDgxamJXRm1zVnR0YWtnVFhGd3pSdE4xUm9tbmExdXRJVWloT01aeEFMZmp1SEczb0E2RlJ1V3MyY1I1OWlidmFQZVBiQ3d6VHlOMjdqZDh1cXlMdDhER1VudEhIQ3phVVBQc2F6NDQvOUozT3pNeWNCLzAzYk9Kc2JaTnlxa2hhbUZXc3pURk1haVQ1U21ZaTNHZWhHYTZ3dEhJMmhwYnFnOW9IVmlCb01CaThCaHFtclRLRTRxU3BIeVpncDNEeEVaL09XR2lyLzUxZHQzY3ZxTjVnMjdSZjg4citlWWV3RGI3QkgzOFhjMlE4emQ1TjF1MTdOUzQvL2lnblQ1akQwK29YTVdWdWQzRVVTcmR6RVEvYy96TWhwMzJYb2piL2c5aFc3cUxWdVcvLzRnNHo5MForWmUvOHZtSFRqZll5ODR4bWUzMzZNZFhleFNwNlo4MTJ1V0ZxWmVNN0dUZHgrL1lQYy9xYTE0cno2SXhZKzhNalFRZjM2RGJVRXJkVWRsYmhNS1RYRGxDSnVtQ0pxbUJpbXhOUWpIS3p6VXgrenl6L0M3UDd3Mzd5NVA4VHVEVytoMmFLV0xyNEdDSi9QZDVXNnFCU0trNDFPN2ZaM1dMYkR3N0FoK1pSY09JN1JOUit4eWxyUld2ditSMnd0T1pldlhYc25HMzk2RWFXZU0zbDB5Y004T3NiNjhab3Fhb2QvZzFkWC9vcTFzNHRaditSbDFyUUFzUW9XTGZ3TFc0ZmN3TnFWai9IaHp5YmhXNzJFT2F2cms4OWNWeG5tMG52dlkrMGZGckowVEQyTFhuZy9LWHhIaGJlRVcrNjlDUDcrWjE2czlMUHVOeXZaUFB3cUZsNllCN0VLRnZ6b1JUWVB1WTdYLy9yNGVjNDRtN1F5bzRDbUNTRmNBakJOSW9iRU1FRkNNdWFXR0swR3BtSFM4K3h6RTY2b3cvM0VibmEzRGswSWNhVzZxQlNLazZGbHU1bi8vK1l3UHhsajY4dkU2Yk9aUHlrUE9JZHJocXhrOFp1VnpDdk5aOTM2S3NvdXZLN2ptRnJmYzdsalVqRjVRTjZZY3loNytnMXFneERkOFRZcmdpTjRkdWFaaVRIOEpXT1lQLzBkSnF4K24vSXBsd0pRT09KTFRDNU9XSTJqUjVUQSttb3FJYzNZL2ppdlBUS0hVc2QzTHJ6bjV5eWRsSVd2ZEFxUFhyNk5HUXVmSkM5WXdyd254MUVFUkxlOHdZcmdDSjZjZVNiOXZGd0NMRTIxMm9SSWRDSWdoS21CUUVyTWhQVWxUTU9VaVRpYmhpSEJ0RnhTZDZxMVpydWhnQWlIdzFPQXZ1b0tVeWhPZG93dGxUd21mdmxNRnJ5OGpmTHArYnkySTU4cmJ5cytXcTgyNFlMcUVHME1FQzAraXhMSDJMbWludm40R3FzN3RNcDhueXJHNW1IWVZ5OWk5TXN2VXY3bDY1aHUvVTdSUmorQnBncHV2LzU5Z0Q0REJ2UWY4Y2tuKzk1ckcyZERCd1FTSVlRUW1rQ2ExaFJ6MHpTdGpnUXdwVXdLbTVZcWFwYWxCaUM4WHU4VWRYVXBGSjJUb3ZGakdWM3pQc3Yrdm9YTkplT1lXbkxzaitIcmtZbXZ1cHJLV092M2Ftc2FpUFlvUHM2TGxFS3NYN2FhelNVRDhMMjFtaGV0eFdHK25EeHllMzZKNVNzZlkvdkt4OWkrOGorK21HcXhTZG5haVdCS2lTR2xNR1dxSzJvbUZwU2FpZElQelJJMGU2aWJzTXM4TERkVUNadEMwVm5KT1l0cmhqZnc0cktQS0prd2dxU3VlVFB4RWFLeTZjaEJmdCtJaTVqdWZaOUZ5eXFvQmFMVm0xaXdvb3JSVTg0OXJxVWkwUzJ2TVBldGZPWTlPSWRIdit4bjBlTnZVd240aG85bE1odFp0S0lDUDVDaE4xNlVZcTBsVi9SSnBHWmFvbWFDRUVpaUVWM29ScHh3d0U5ZEhLU1pxR3R6cHlZTmJEYzBGQXBkck54UWhhSXprOFhFU1lQd2JmQno1WGpIcVBhU2M3ajUzSGQ0Nk00ZnMrM0JoVHg2dUlmd0RtVGVqNy9PZ2w4dlpkSTBQOUhzZkNaK2RUWlBUdmswbzkvYng5amdMQmE5TUlrUGZyMkJvaG4zY1VPeEIyWk1ZL0k5THpCMzlWa3NuektNaFQrZXhvSmZMMlhDTWo5UmIxNmZ5MlorZThnL2x2M25oeVQ3Um5GSm1SZ1pqaEJDQXlHbGtGNlhJS3BIT1ZnZncrVnk0OU1rcGxYK0lYcjI3RWswR2hXeFdJeDRQQzVNMDlTa2xDNWQxMyttYWRwMzFNV2pVQndkbjJhdktCK3YrbXlXMEtZL01tbDVDY3QvZVJFbHA4aDVESVlpUzNMR1h2c2kwQUlFZ0tDQU1JS29RT2hDWUdoQ21HNlhKcjBlRno2dlIyYjZ2R1Q2ZkdSbCtzak96RUJMellhU3FGL1RORTJicEM1VmhhTHpFbTJzNFBrVjJ5ajU4cm1uaktnQlpHWDZ6a3ZuaW1MTmFjTnVzNUpTSkRvUlRHdUZnWkhzUk5CU2luS1JVb3FHaG9aaHFHVXRDa1huWmMvTFhISHJNN3pVNHlvV1RzazdwWDQxSWNUWnE1LzVVZThPeEUxSWlVQ0NLYTFNcUxPSDFEcmNxUTN2SkhwREwxSlhqa0xSaVNtOWlyVXJUOTNhK1RGbm56a00yRzhMbXdTWGtHZ0kyMktUUW9LVWR1K29kZGhiclpKWlVWcEhGQW1YeTNXaHVuSVVDc1hKb250ZXppakxTa3RPK2tnY3NsV3JwTjAvS3BPVkhZWjFhS2tXMi9lKzl6MlhFR0tpT3JVS2hlSms0WEc3emh0NVpyK1VodmhrbksxMWxCR1dLeXJidXFOYWlodkt3dzgvZkFIUVRaMWFoVUp4RXVuMi9DUGZMWFZhYlRMUkZKL1lGaS9CbXE2THRFUXRPZExJYWJGWkNKL1BkNTQ2cHdxRjRtUlRXdEpyU0h0WEZLM1ZIVTBZWmFaMUdMSTFFYW81eXp4SXpGNDdYNTFTaFVKeHNzbkp6anpIWWJHMUtmdXc5VXBhV1ZKcDdUODJaR0tza1daYmExSktjZTIxMTdxRUVNcGlVeWdVSngyM3kvV0ZBYjN5WFNrV204c1NORTFLQkZoeHRqYnVhR3VNVFFCaXlaSWxYd1J5MUNsVktCU2R3V2hiOXVoOS9aMmlKcTE5b3poVzh5WGliTTZhTm9mRkJwQ1JrZkVGZFM0VkNrVm40Y3dCZmRza0VHZ2JaeU0xemlhbGlTbk5WdVVqVWI4MlJwMUtoVUxSV2VpV216V0Vkc21EdG5FMkhIRTIwMHkwV2JrZFk0cUVFT0pjZFNvVkNrVm53ZU4yRDZkOWpDM1pMNHF6bmkzcGpyWmFiT3phdGFzbk1GaWRTb1ZDMFZrUVFnejY1ZmRtNVhRa2JpUlVMVm5QWnJ1bGRveE45T25UUnpXOUt4U0tUc2VsNTUvYnh4SXlhK0FrR2hKaFQ5V1ZXSlVkVmhlQ2xJN3Nnc2ZqVWNLbVVDZzZIWDJMQy9vN3JMUjJ0V3hZSTR4YXV4QVN3b2FVVXJoY3JyUFZLVlFvRkoyTm5Lek1NeHlpMWtiWXJEaGJ3aU9WQ01zVkZacmRJeXFFVU1LbVVDZzZIUjZQZTFDS3FMa2NGaHV0NHBaSUlOaXVLTllkemxLblVLRlFkRFkwSVlZNHJMVDJKUjlwRWdnYUlHcHFhZ1p6dUhXQkNvVkNjU1NxTnpGM3pvTU1uWG9mYzlicngvT1JmU3NmdjcvUUtXalNtc2RHc3VURFRpQTRMTGFjbkp4QjZsMVJLRTVYL0x4NC95OVlWQWxVdjhHMDc3OUI1VEUvaHM2YUYvN0N1cDVYc2ZhbFgvRGtlRS9ibTdlL3hJUWJsN0ltOXVsZTRkRFNma1drTGRLMU94QVNncWJyQnVHNFpiRzUzZTR5OWVZcUZLY3BMYnQ0czNFZ0Y1WkE3Wlp0UkljUCtoVExZY0xVTnVxVWpCalVacXQ4a3RLTGVITGVGTVo3UDkxTExPeVJWNXpHSFJWdER5a00weFM2QVc0cHBkQTByVlM5dXdyRjZjWlc1dDc2SXV1Q1llcGlIamJmK0JIUllJQ290NUlKTmRleGR0NDViZU5Uc1VwZWZQclBMRjVmUlMyWkREdDNDZ3Z2dW9CaE9aVTg4LzFuZUdKSG5OaU9SWXhkUFpabkYxL0RhT2ZQN2xqTDdZL29QUHFuYnpEK3pkOHdjaG5jVUJwbTNZNXFhbU9aVEx6cE5oNmRWSXl2OFcxbTNQb09lUmRtVXJtOWdkb21LUHZ5TkJiY09LUlBXMHN0R1Y4VEpsSm9nRzdheG1NMDRZb0tJUWFxTjFtaE9OMFl4cU8vZllTVk0vb3lhdVozMmZpSE9keFJNb2o1enp6Q1c2bWlSb2cxanovREU0MWplSGJKWTJ4ZmNpZlhCRmN6Ni9GTjFGTENuYis4ai9uRDNZeTZhUjRiVTBVdEhUVU5NR1VXYTMvN0NHL2RPNUQxUzE1bVRVdXJhOHp3RzFpNStHRTJQak9Ob3ZVdjhwTTNRNzB0eTZ5OXVBRlNDT0YyaWNRZDNON0VEVUtJQWVwTlZpaE9SM1MyN2doUWRrWXh0RlR5UWF3dnczcWtjMWUzc0d4OUp0TnZ1b2hoT1VCT0NUZmNObzY4OTk5aFhlT25lTnFlWjNITmlNVGF3THpTTXltTE5WQWJ0RzhzNXNJeEJRbGg3WEVPZDB6SVplTTdPMG82RURWN3NRc2tCeFZKM05ZTlN0Z1VpdE9NeXRYUE1HTlpKZjZtTUd4NWtIV0VxUXQ2Mkh4ckJUYy8rRDN1ZEFhb212elVVa0JwVDZjNDlhV0VqOWpUQ1BUNERDL0V5ak5FZFNCTkRLNm9PQS8rSGVtWFlyRUpDWnBJbWFacnk1dTJhOWV1WWlCRHZjMEt4ZWxGeVpRN2VldVphWXp2K3lXVy91RVJYcDE1Sm1kZGRUY2JmNXNpYWdEZDh5aWluajAxYmQzSld2SW83Zkg1dnM3S3lnYkl6czM0MmJ4YmNqcTAyRkxRQ2dvS2VxdTNXS0U0VGFtcG9Ka3ZCcUFBQUNBQVNVUkJWTHk0aERLZ2ZFODlKYVhGNmUrWE00S1o0OE9zZU9GdHRyWUFMWlc4dVBRTmFzLzlFaE9QdTdCVnNlcC9LL0FEMGNxM2VlTE5NT01ubk1rWEI1K1I1eEN5MW5xMkZLUnA0dmI1Zk1YcTNWVW9Uay84bFExUU1vWTgvSlJYZWlpYjR1bmdubGxNdnZkT2FwLytNN05tcjhRZnk2UnMvQlNldldzTVJjZjlWZVdTVjdtYWFkZnZvaktXeCtncE4vRG9wRHlhZC9mSTY4QmFhMTFHSlJDR2FVZ1JqVWJ2OUhxOVQ2dTNXS0g0YkJpR1FXVmxKUU1HSEVQSSt1TlY2c1E1YVh5YkdiZSt6NVcvbmNNTktaWmdaWFhkZ241ZnZ2a2RJR0FmQWtJSUlnSVJFd0pERThKMGFacDBhNXBXcE02bVFxSG83R1JsK1BJY2JtZ2JTODA1NVFNa21xWnBCZXFVS1JTS3pvN1g0MjRYWXlOZGpBMXdDeUh5MVNsVEtCU2RnaDRYc0h6bEJXbHZjcnZiQ0Z2N1F5SnNtZFA0YkJVb0NvVkNjVUp3YVZvNlY1UTJWcHRWcUtzQmVlcVVLUlNLem82bWlSelN4ZFprRzNFVEV0Q0VFRXJZRkFwRnAwZUk5c0tXYXJuWlhWVWFrSzFPbVVLaDZQVENsdEFxcC91WnB1dEFKb1V0UzUweWhVTFJCU3kyekJSUmMyaWViQ053R3BDcFRwbENvZWdDWkJ6R0RXMWp0V21rN2FkWEtCU0tUb2UzdlhlYVR0WlF3cVpRS0k2R0VKdFhQTU9FNjcvTDBPKy9Sdm5KRTdaMkNZTjJBaWRiNTRjckZJcFRsUzEvWnRMQ2o0aWlzMjdSUXVadStoUWJwQ3JmNGFGbGZpWS92SkR0djd5VTQ3Y2twWjUxLy9NR2E2cVA2czZ1dzFoczFrWjRNR2x0UzFBb0ZLY29XemRWVURSbUlENnFlRzFQTVJjTzhSejdnelEyVUp2ZGx3dUhIdTljWXdPdnJWak5hMGUzRmt2cjBFcXpUTFhFSm5nUVVrcXAzbnFGNHJQVDJhWjdsUC9Qazh4WVVZVy9TY2ZYUFJPZm5samFVcGpkazV0LzNINllaTzJtbDVuN20zZFlYNlBqNjNrbTAyZDluZm5qQzRpdVg4cUV4eitpTGdpNTJabU1uMzBmejA1cVcvNGFyZHpFZ2wrL3dpczcvRVN6aTVuNDFXa3NuSDRtUmNDNlJmY3hOM3MyRzc5MVp1TE82My9EME4va3MvekhlU3k0ZnkxYm04S1FuVXZaNWJmeDZsY3IweTV6ZWZTMmN5Z0J4UENwMDRBZ2lla2VmcUFGQ0FxSVN0Q0JPQ0ExRXBhYlFxRTR4U2o3Nmh3Mi92WW1wdlk4aDBkLyt3aHYzWHNPZlMrY3pjWS9wSm1RVy9rYXN4NzlpSkpaOC9odzVTOVllMXMrNng1ZndxSTk0QnMvaTQwUGpxT3crN2s4K2FkSDJva2FzUW9XTGZ3TFc0ZmN3TnFWai9IaHp5YmhXNzJFT2F2ckQvOENTeTVsNVI5bU03MTdKbFBuUHNLcnN3WmFON1JmNXZMUVdqK0gxU3FSbUJPZUdNcW1vUUdHdWdRVWlsT1VtaXJLZXc1aW1CZkt0MWRUTnJ4djJydHRYdjBPbGNPbk1HOThBVDQ4RkkyWnlyemhEYXhZWFhIRXA0aHVlWnNWd1JITW01bXcwSHdsWTVnL3ZTK2JWNy8vS1pNTTdaZTVySDlyRy83Mld0VytWOVRDRGNSSXJsTlFLQlNuQmx0NTZJNi9zS2JKVDEwc2syazNyazdzRE0xK2hBbnZUK1BWZVdQYU5JblhOb2JKS3k1d2ZDK0xrcEpjL0pYMVJCbVlzb292UmRnYUEwU0x6MnF6S0xtb1p6Nit4bXBxajhOdmtsam1Fc2FmMEtxalF1TVk3cXhRS0xvS3cxaTQrR0dXZmptZkMrOTZrSTEvbU1YVW5pTVNMbW1LcUFFVTljakVYMTJQUC9rZG5jcWFBSGs5Q2c0cmFnQytIcG40cXF1cGRDaEpiVTBEMFI3RmliSGhuN0dnekZybVFsNTdyWklwWDlzSVcxaGRCQXJGcVVpSThtb29LOG1DeG1yS3ZjV1VkU0F5bzZkOGlaSi9yMlhSSmo5UkVvbUVKOTdQWi9xVWdVZDhGdCtJaTVqdWZaOUZ5eXFvQmFMVm0xaXdvb3JSVTg2bERDZ3B5Y2UvNVNQV04rcEVHeXQ0Zm5XRlE2RTgrTHc2dFRYMVJKUGZTNy9NSlE4aVIvVnJ5NFFyR2xJWGdFSnhLdExBQjVVRm5GVUM3SzJpdHVlZ2p1dlBTaTVsNmR3d2MzL3pDQ01mc2JLaTk4NW1YdWxSUEkxM0lQTisvSFVXL0hvcGs2YjVpV2JuTS9HcnMzbHlTbUk0ZDlubDEzSFBscVhjL3YvV0VlMCtnS2tqOHNsTi9uQmZycGt5a0ZtL2VZUkplKzdrclpuUTBUSVhLV1U0alhYbStMOUFDSWtwVFNta2xCOEFJOVZGb0ZCOE50UXlsK1BBWVphNW1GSnVjWTI0Nm9lMGxuczRGN3BFQlVJWGdyZ21oS2xKS2YzcWJDb1VpczZPbExLbFkydk5ucDJiUUFPVXNDa1VpazZQYWNvV2g0REpkSUptZWFTNHBaUk5RZ2gxMWhRS3hjbm5NTXRjRE1NSUhNWmljK29hbXBTeVFaMU5oVUxSMllrYmhqL0ZZcFBweFUyZ1NTbnIxU2xUS0JTZG5XaE05M2ZnZmtySHVnTUFOTU13NnRRcFV5Z1VuWjFRSkJxZ2ZXeE50bmRFUWROMXZWcWRNb1ZDMGRscDhnYzdja1dUWW1kbkM5eVJTS1FtSnlkSG5UV0ZvaFB4eVlFYWRSSlMrR0Q3bmtESG9pYXRGYU9KUVd6dWd3Y1BIaXdzTEZSblRhSG9SQXpvMDFPZGhCU3E2eHZ0Y2cvVEZqV1I4RDZsN1lJS0lkQTBnVFp5NU1nYWpyWUhTNkZRS0U0T2tibS9XaG82akN2Ni85dDc4L2lvNm52Ly8vVTUyK3hMbHNrZUVoS1dFRVJBSytEdmlsaC82TldxYlM5WVdyUzlTbHUrYVB1cjFHOEwxUXE5dHFCdG9jdEZieXRXcjFoYnNGcWdWV3BSUkJUVUZsY1VOU3lhUkNBUVFzakN6R1NabVhQTzUvZkhuSFB5bVpNelNiQnN3dWYxZUJ3VEFtYVpNL1BNNjcxOTN0VGFDWSsrbzNiMzg4ZU5pNHZyVEJXbDlJQU5aRHJqM0RKRURMQlJTdWsrL3RCeGNYR2RxZEowL2FBTmFobHV6ZHlZYkFTa2FiRHB1djR4ZitpNHVMak9WQ1dUYXJPRFkzTnMrU0FrdmZPQWFwcld5Qjg2TGk2dU0xWHg3cDVtaHhBMGErdUhsS1poc2tGUitONWtMaTZ1TTBFcGJGajZBOHgvVFUzL3NXQWFmbjdIWjFveGhCd2JJU1JkR1FWQU96bzY2dm1EeWNWMVppblI5QllXM1hrM3hsOTNHMnErOWtzczJOekVuREk3TkVEVWJYNGVhM2VmckxOa1c3QnA3U3ZZM25HaVA2K002eGI5Q3J2Vy9STHZMQmdIQlVCRC9iNDJCbVkyMTJhT1V4SHJ2d0lBV2xGUjhSRnduSThaRnhmWHlWUHlReXhaK2lSMlZNM0Erc2QvaHMwTHowZlR3dzlnd2ZiamdWUVBkcnl3RVd2Mm5LelQvMXV3YnMxTDJOWnhjajY3UzVFUlRBZVNpVHUrdjd6RDd0UUlvSU5rOUxTbEN3Z2tIWXFhMW00WGdBbjhHY1hGZGZvVjNmNFNObUFTSHAxN2Z2bzQ3M0ZYWU9uMWIrT2FwOTVENjVUSmlEaWNOTHRwNmYvRmtzTGI4UExjU3V4NDlPZVk5Mnc3b2wwcWtudVdZZnpqQU9RUldIemZYRnlmQTBRM1A0QkpheVZjVjlpT0hRM3RhRlZLY2YzY0c3RjRTdm80NzhTMmh6QitUU0hXci93OGFnRUFIMkxSMXg1RzlMcy94MzBYdHVDUk8rL0Rpa1lWaVZRUHR2N3dCMWdOd0RYOGFqeiswOHV5SHorZW9XNXNYN3NhUzU3YWhmb3VJRmcyQm5QbWZobTNqZ3M2L0Z1Nnh3WTFIWUJPQVFvS0NxUzN2aE5pTEJhbGVqckhoblJsdEU0UUJBNDJMcTR6UUUwTkxVRFZaQU1xYVZXUHJrVHdxUTlSajhucDdVOERhT0xOUDhEck4wZXgrczY3c1c3S1Fxei9RbDcvZjlTcFlzS2kvNHZsWlRKYXR6K0tHZis5R2xVcmJzT05oWU45ZDRYNCtrL3Z3ZGV4RS9ObVBJM3FleGNOYlRjQ0cyYS90UjYzUFFVcy9PblBjWDFaQ25VYmY0K2I3MW1QNm9kdnhwVzJDVTlkMSt2UlA3ZW1BOUNKMlpSTFFUVktJWUdBQ0NJRVFnZ0ZRRlZWcmVOUEp5NnVNME9KTGhVdVJjcGNmZWVUNEVxcEp5NW5WREFDVThyU0s0VWpVNjdHRFFVZjQyL3ZuYUlEdFJVWnJsUVBXanVpaU1LTDJxdS9pYzBQek1JMGg3RjFYVXZ1US8vOEdoT0NFaW9RQUpSQ0ExTThBRUI3ZW5vKzRFOG5McTR6UXk2ZmhFVFNCckV1RlFsWkduVFA1eWRUQUdVNVFMVHoxR3pqZEkyYmdjZS9Pd2E3MWp5QTZWKzVDOVAvYXowMnRLaU9QMXV5TjM3UUJqUU45cFlQUWloSlQ4SlRRdnBHcXVqZXZYczUyTGk0emhCVjF4UUNlejVFWFVaNDJvUm8yVWdqaHlVRFNDRnh3dGFkeDlEVUFnVERualI0RkJtdVZPcWtWUlFUTFMxSWpMNE05LzEwRVY3LzAxMjRiMm9QVnQ2OUdtc2RDaEhSOWdNdEJzQTBCbXJHWlZSRUtRVUZJQkNTdmt6aVRaNDgrU2lBRC9sVGlvdnJESEJzRjF5QjYrWFhzZVNoT3RUSHU5RzYreVVzV051T0s3OHdMcDFmeXlsRmJjRkIvTzNsSmtTUlF1dnU1N0hxZmRYMldUd295NUZSLy9ZdTFDZUJSRHlLS0F2Q0l6dXhhWGMzZ0JUcU56K05WVWNxY2EyWnZCOWVpZXFPWGZqYmU5MEF1bEczK1NWczZyUi9sMEdVNWJSais5dE5pQUtJZG5RUEdZU3QyNS9BTlhjK2dVMHRLUUJlUkFvRGNDWDdnN1EzZ1krT0hkN1pnNnl0SHVsTHB3Q0lBSm1raXdoVzhRQ0FydXY2MjRJZ2pPUlBLeTZ1MHl5bEVnc1h6Y0tTM3p5SmEyYTNBK0ZTWEhuRHJWZyt4V3Y4Z3pMTS8vWmxtUGZmdjhLRTM4c29QZThDWEhsZUFFMFpuMFRHdEp0bTRNcDduc1kxTTU4RXdoV1lmOWYzY0d1TjhkYytMM1k5L2l0TWVxOGQwWnhLWEwvd3hyN0NRZUcvWWVsTkgrSzJleFpoVmRLRENaZGVnQ21sOW0reUVyZk1uWXg1di9rVkp2d2VDSlQrRys2N2J5YW1EYUhYdit3TE4rUEJqdlZZOXYwZjRMWXV3RlZRaWV1L2U2TlI0ZTFyMEtXVWZ1QVVocEowVlZTbjZlUFhBRUtvTEtiZEdpRUVSQlJGV2RkMUNZRGMwOU56cTh2bCtobC9WbkZ4SGI4K1RRdVRvNXNmd0tTblIrQ1orNjRZWW52RzZkSGhveDIvTEw3c1AxOUZla2x5SEpsTGtuc0JraElJVkVLSUxna0NWU1NCS29xY3pyR1psZEZvTlBvMmYzcHljWEdkS2RyZGNHQ2Z6YTJ4T1RaS2pKRXFvekdYa25TT2pRcHNuRHByMXF5M0RTcHljWEZ4blc3RnYvYUQ1UzNJcklSbWdNMjhDQ0dVa0w0VGRDVkNpSEZLT1BTdFc3ZnFsTkx0aEpEcC9ESGw0anA3Rlp4K0szYWY0YTl5VmRQZWFtcnQ3QWMxWTVTS0FzUndiZWFNYUJwcWJCOGJqTGU2cXFyYitXM240dUk2M1lyR3U5OTNDRVBaY0pTbVkxQllibzJZN1I3R0g2aVpaNHZGWXEvemg1U0xpK3QwYSsvSEJ4c0dnaHJKT0RtWFFDQkdINXNnSUNQSEJrRC8xcmUrdFIzQU1mNndjbkZ4blVZZCs4YWlYemRsZ1pwRGpnMlVDQVNDUUtnZ0dJNk5FWDN5eVNkVlhkZGY1bzhyRnhlWGt5ZzkrVjhqcGFxdjFUVWVZc05RTlJOdWZXZXdNZUVuQ0JFZ0VDRmRQQ0NFbUgxdUZJQ2VTcVZlY2JsYzEvSmJ5TVhGQmFTN1lRK25QRGlTVUtDQklKN1FUdXJYYTJ0cjI1a3RES1hwQWdLbDV0UUJDRktVQUZRRXFBaXFpMm13QVZZdm0wNHBwUzB0TGE4TUd6YU0zMDB1TGk3b0ZOZ1JDd0t1QVB4NVFmaDhmaFNlNUsvNTRVZC9yM2VBbWdaQU0xbEZDS0ZFRUNBSUFtUlpocUs0NEhLNTRIYTcwOGNXbVlVRDA3RlZWbGJ1QnZBK3Y2VmNYRnlIVTI3QUZVQmhVUWw4UHY4cENIVnAzZHh2ZnIzTkZvYXFCdFJzUnhhWlBXeUNrVjlMZzA0UUJBRk1uczJDbTZxcVcvZ3Q1ZUxpT3BKUTRBOEVUOW5YNitycWVnM091YlcraW1qYWtCa3RIZ0lFZ2NDQ21paFk3UjVtS0FyamY5U2owZWhML0paeWNaM2JvaFRRcUpEZHFiVnR4OHJ2ZlFXZnUveGlUTC9xUC9ERHZ6Y0RBSnFmL0NZdXZlUmk0L29tL3R3ODlLOVpYLzlSSFRMemE3YkNBWFRMaUJtVEJvSWdnQmhRRXdVUmt1bllHTGhSU3FtZW41Ly9pcDdldmx6S2J5OFgxN2twUW9CNFVzdVNVNHZoNWZzVzQxbDhDeXVlK2crTVZHS0lJUUFBS0o3MU1MWjlJWUZFKzkreDRNWm5qdWRMSHJyMmMxZnR0NFdneG1VUFF5azBWWWNrcDZFbXNvN05zRzlPUzBjMVRkT2U0N2VXaTR2TFdjMzQ0TU1rYXEvK0hFWUdBTGdDQ0xCSDRMcGNjQjNudXVLZW5wNXQyZHdhSWRDUXNYS1BVbDNYcUo1MmJGUVFSSWlDQ0ZIdjdPL1l6TGxSQUhvc0Z0c2NEb2Uvem04Z0Z4Y1hFMzlpNDUzL2lmdDNKSkdNSjRGZlhJdlAvUUtBTWdWMy9ua0pwcnFHOWpsZSsrTXlQUGprZHV5UEt5aWFlQTNtZmYrN3lPOXNmTmNHTmF0d1lMUjU2QVJJQTgzNFRNbDRITzN4T0FSUEJGVmxQb2pFblFhYmVlbTZuZ0czM056Y3pUd2M1ZUxpeWxRZXJ2N3BNN2dhZTdIeWhyblkvL1cvNGQ3cHg3ZUpZZCtUUDhDUC8xNkJPeC9jaEttNWNieTI4bmI4K0h1L1BmVGUxcDgwR3NaS3RZTU5sT29naElJUUtnb2lSS0locVJKNHdpRUVqVFlQVVJRZ2VuSWdwQzJja0RFdnlwUlVkVTNUTnZJYnljWEZkZUswRnh2LytpRnF2L3BkVEMxMkFhNDhUTDdsRzVoNDlPbVg0SmhiNno5S1JVaDZPeFVoQURIQ1VFRVVJWW9pUkVtQ0lJcWk1ZGpNa0JSOSsvdTB6czVPRGpZdUxxNFRxSGEwdC90UlZCem8rNUNyQWdGdjI0NXNZYWdGdDR3MkR3QWdTRU10WFEwVlJSR1NLS2JCWnNLTmdaclZ6eGFKUkY1QmVrczhGeGNYMXdsUUxuSno0empjRnJNK1FudWI5L3ptalFQMmFtaktoQnJKUERIWE9DazMvZit5VUJORkNaSVc2NnVLbW0rWlk0eXNBZFJrTXJtQjN3d3VMcTVQckl3MWdhTnc5UmRIb3U2UjMrTGw1Z1NBTnJ6eTJ3ZGVRdjlKZzR6Q2dYV3dwTUVvUVJSQW9OTkVra0lVQ1hRS1NKSUlpY1lnc1k2TnliVVJwanFxSFRwMDZPK1ZsWlVMK2QzaDR1SWFpcHFmL0NhK2ZGL2ZxdUozYnJ3WTl3T1k5TU5OK01YbkFxaVk5WFA4VjlzUzNEL3ZTdnc0cmtBTGpYalh3YTNaRzNNcFRPTWxDQkJrQlg2dEcvR09JMmpzSkpEOVpSaVhtd001TUJKa3hJZ1I2TzN0Ulc5dkwwa2tFa2lsVWtSVlZhTHJ1a0FwbFpEZXpPcFNWZldQZ2lCY3lXOFpGNWV6UGsxYnFvWXFTb0czWTJFVVZweThyWnlxcXI0NHZLSnNKWUJlOUcyak1xOXVRa2dDUUlvUW9oSkNkRkVVcVNUSlZGRVV1Tnd1Nm5hNzRYRjc0UFY2NGZQN0VRd0VJRWlTWkRxMmpPcW9QUnp0N3U1K21qOTF1YmpPTFJFQ1NFUkhWOWZKMi9IVTNIem9WWWNRTkFWQUpZUmticVV5MkNRSUFrUlJvRlp1VFJJaFNSSmtTWUtzS0gzRkEzc1J3VllkMWUrLy8vNE5BQTd3VzgzRmRXNnBRRW1nSzNaeUR0V21sRGI5MTQ4VzcyTEFscktGb1RyTUk0ck1uUWJXMkZRZnR5UlJTb05ObHFFb1NwOWpZL05zZ2lDQW9hTU9RTHZycnJ0NlVxblVPbjZidWJqT0xSVXBDZEJFSEVlYW0wNjRjNHZINDg4OXYrbTVsSk5iQTRnOXY1YUdtekVYYW9lYUpNdVFGUVV1bHd1U0pLVS9hUHdqS29vaTBUU05Db0lBVGRNbzQ5clVBd2NPL0xXcXF1cTcvRlp6Y1oxYjRlZ0ZnU2lPSkxweHVDMk8yRkVSWGNrVGM0THVLNis4OG5ZV3Q2WUMxQng4VDNPSUd0SjFhSnBHTlUyRnFxYVFTb2xJSmtWSXZTSjZaUWs5THFVUGJFeXVqUTFITTJaSFI0d1lzVXRWMWZXQ0lNemd0NXVMNjl5Q1c2RmJSYUU3QmtxQnpGVXBuMHlKWk9wdmx5MWFkTlRtMUZJQVVnUlFRY3d3RkZRZ29DSUJaQkZRSk1DdEVIZ1V3T3NDdkc0ZzRBVkNmaUEzQ0JUa0FJSXN5N0M1TnRnSDQ0MVJLdzNwU1FRZWpuSnhuZU9RT3hIYTNYamdWUWUzbHRIbWtiRml6emgzVFJUVG9hZ2tpcEFrRWJJa1FwWWtLSW9NdDB1QjErUHVBNXNvaXVaYmFvYWx6SkhoVm5VMFB6OS9DNlgwVlg1N3ViaTRQcWswVGQ4K1llYjh4Z0hjbXRaMy9scmFYSW1FVUZFZ0VBV1JTcUlJVVV6RFRaWWtLTElFdHlMRDQzYkI3M1ZEVUJRRnNpekQ3dHhzRGJ0V0VRR0EydFhWOVFTL05WeGNYSjlVQnc2M3ZqQ0FXMU1OdDZhVDlKWjNLaEJBRUlqaDFBUklrbUE0TlJHS0xNRmx1VFVYQWw1UEg5Z2NpZ2ptaUZYRzdDZ0FiZnIwNmVzb3BYelpDeGNYMTNGTHA3UnU2bGUvLzM0V3QyYk1oL1lWRGRKZ005eWFLRkRUcWFYYk8yeHV6ZU5HTU9DRDRISzVrQVZ1R2E2TkRVZGZmLzExdGJlMzkzRitpN2k0dUk1WFI5bzZuMjFxN1dTaGxqU3VOTlNJZVpKSHVuOU5NUFlhbUMwZWJHNU5rZnJjbXMvdFFzRG5SWTRkYkRhNHNhN05QaGl2cmxtejVra0E5ZncyY1hGeERWV1Uwb1lmM2YrSEhZT0VvZFpKdVFSQTJxMEpFTVYwYmsyU1JNaWlaQlVNWElaYjgzazlDQVc4eUEwSElIZzhIampCelZZaFpVTlNEWUEyZCs3Y2FHOXY3eC80cmVMaTRocXFXanVpR3g1YTkzekN5YTBSSUdVVURUVEFQRWd5N2RoRVVUQ0tCUUprVVlRc0c3azEyWUNheDRXQXo0Tnd3SS84bkZBYWJHNjN1MTg0bXFYOUk2UDFZOE9HRFU4QWFPQzNpNHVMYXdodXJYSFp3MCsrWllNYTY5ajZXanpTUlFNSWhFQzBpZ1pwdDJiT2hDcXlETGRMaHNlbHdPLzFJQlR3SVM4Y1FGRmVEZ1NmendlMzIyMjVOaFp3OXRZUFc2NU4vZktYdjl6UjA5UHpHTDlsWEZ4Y2c3cTE5bU5QLy9LeHAzdHRJYWpwMWxTUXZoVjdwbHNUQlVMVGJpMGRocWFCbGxrSjlYbmNDUGc4eUFtbTNab2tpUkQ4ZmorOFhtK0dhenVlMW84Ly9lbFBqMU5LK1FtN1hGeGNBN20xUFhmLzVvOXZPa0ROZEcwT0xSNUcwVUFValJZUGV6T3VESy9iQmIvUGNHdWhBSXJ5Y3dBQVFpQVFnTS9uZ3owa1plRG0xUHBoVlVpLzhZMXZIT3Z1N3Y0OXYzVmNYRnpaMU56YS92UURUejQzV0c0dG95RlhNTnlhSkFxMEg5UVVHUjZYSzhPdFJYSkRjQnVMVElWd09Beld0UTFRSmMzcTJtYk5tcldHVXZvNnYzMWNYRngyNmJyKzV2UnYvSENIQTlRR2NHdUFLQkJJZ2psZDBEZGg0SkpsdUpWME02N2Y1MEU0NEVOZU9JaWkvRnpyYXdvNU9Ua0lCb09XYTNQS3RiR3VqZGthYjIxcjNyaHhZeklhalQ3S2J5RVhGNWRkRFUySG45blZlRWpGNEpWUUhTQlVTQjhrU1VWQmdDU0pobHRMUTAyUm1mWU9qeHRCbnhjNXdRQUtjc1B3ZXZwMm13cjUrZmtJaDhNSUJBTHdlcjBXM0V6SE5sVFhGZzZITitpNi9uZCtHN200dUV5bFZQWDVrWitidDh2QnFRM3Uxc1JNdHlZYkJRT1AyeGlkOG5rUUR2cVFueE5FVVNRbjQrc0tCUVVGeU0zTlJUQVloTi92dDNKdERoTUpBN2sybFJDU09uTGtDSGR0WEZ4Y2xuYnNxdCtFekdaY0MyeUdXMU9INnRaY1ZudUhNVHJsOXlJM0ZFQkJYaGcranpzVGJDVWxKY2pQejBkT1RnN01Rc0pRY20xbU1ZRjFiY1hGeGY5SXBWSVA4OXZKeGNYVjFkTzdadkxzN3grd1FTMlJ6YTBKUmlYVXlhMHBzZ1NYeTJ6dmNDSGc5MXJ0SFNXUnZINWZXL0I0UENncUtrSmVYaDVDb1ZEV1FvSlRoZFRlMTBZSVNYM3d3UWVQQVRqSWJ5c1gxN2tyQ2h6ODYrWi9ib056d1lCMWF4bDlhMVlsMU83V0ZLTmc0SGFuMnp2OFh1U0ZnaWpLejRISHJmUUhHd0NVbEpRZ0VvbUFMU1I0dlY2NFhDNWtHNUxQbG11Yk9IRmlmWGQzOTRQODFuSnhuYnM2Y3JUanlhL2UrYXNPbTFQTDZ0WklobHNUTTg1WmN5a3lYSW9DcjF1Qnoyc1VERUlCUkhKREtDbkljL3o2QWdBb2lvS2lvaUprS3lUWXFxVFVuRXF3citnelhkdlVxVk1mMDNYOVJYNTd1YmdHa2VJNzYzNGtWZE5lL3N5WGJudGpDRzVOTTl5YWJrNFpTRWJmV3I4cXFIRXlic0NiYnUvSUR3ZFJGTW1GSWt2WndRWUE1ZVhsTUFzSlpranFWRWhnaCtTWkdWS2RkVzA3ZHV4SUhqbHloT2ZhdUxnR1U2amtyUHVSZHU1cGZLYXB0ZE0rWFpBQWtDRE1CaXJEcmVuRU9rU1NXRTVOdG8xTmVUenBrM0hOMHpzSzhzSW9MOHJQK2owSTdCL01rTlIwYlFQMHRsbXVqWmxJWUoxYnFyaTQrT1ZrTXZrYi9zemw0aHBBa1pGbmxXdUx4cnNmdlhEVzdSOGJibzJGV3QvQWUvL3oxcWhJQ0UwUHVJczBmU3F1bk9IVzBoTUdYb1NEZmtSeXNvZWdqbUFyTEN6TUdwSTZqRnRSU1pJeUNnbXNheU9FSkxkczJiS0tVcnFEUDN1NXVMS0lDRUQxcFVCT0JTQjdQdFUvaXE3VGR4LzQwelAyZ29HVld5TkEwZ3hCbWZQV3FHQ0ZvR21vWlp5SzZ4U0M1dWVpTUM4ODRQZlNMMEF0TFMxRmUzczdvdEVvNHZFNGVucDZrRWdra0V3bWtVd21rVXFsb0tvcVZGV0ZwbW5RTkEyNnJvTlowNmRSU2dVQTZ0VlhYMzI0cmEzdHdkemMzSlg4R2N6RmxjMWVpRURKdUUvOWovSGhuajNyNy9qdngrSU9VRXM3TmtMU0JRTkNOQ045UlFWUmhDakxrRnd1U0M0WFpJOEhpdGNMbDk4UGR6QUliemdNZjE0ZWdvV0Z5QjAyREFValJxQjAzRGdnRkJxNll3T0FVQ2dFcDk2MkxJMjdHU0VwSEpwMjgvTHlOcVpTcVlmNHM1ZUw2K3hWUEI1ZlhWTlRzNGNKUVRPZ1JnaGgxK3JwQU5LTnVLSkl6Vll5V1phaEdKdmMzVzQzUEI0UGZENGZBb0VBY25KeWtKK2ZqNUtTRW9RR2dab2oySUIwSWNIc2JXT0g1TFBOa3RxYWRuVkNpTlZwVEFoSnZmcnFxNDlRU3QvbXQ1K0w2K3lUcnV2dlBQcm9veStpZjE2TmhWcktNRHNhSVVRM0pwaXN0WjhtMUV5d2VUd2VlTDFlK1AxK2hNTmg1T1hsb2Fpb0NPWGw1VU16d1U0ZmxHVVpaV1ZsS0N3czdGY2xkVGh4ZDZCQ2dnb2c5ZG5QZnJhcHJhMk5oNk5jWEdlaDl1elpzLzQ3My9sT05Hc0kydGUzWm14MkoxbmRtdW5VUEI0UC9INC9RcUVRY25OelVWaFlpTEt5TXNpeVBLVHZTY3IyRjBWRlJlam82RUEwR2tWWFYxZldYQnViWjlOMW5lcTZibTYxMGlpbHhIQnRRaVFTMmRUYjI3dkM1WExONTA4RkxxNnpROGVPSFh1NHRyWjI3d0J1emRvK1piZzFhb0xOYlBobm5acnAxdngrUDRMQklISnljaENKUkZCU1VvS2lvcUloZjEvU1FIODViTmd3ZEhaMkloYUxvYnU3T3dOdVpnSEJ1S2l1NjhSV1NLQUFkRXFwVlNYOTR4Ly8rTDl6NXN3Wkt3akNkUDZVNE9JQzl1M2I5Nm45M2xWVmZlbWVlKzU1MlFhMVhwdGJ5OGlyQWFDRUVPdHpHQ1lJQUpER1J2cXR3UkhyWThmN1dBMElOcC9QaDdLeU1zdTFkWGQzVzJCTHBWSjIxMFkxVFNPNnJsUGpHOU1OeDJibTI0UnZmdk9iSGRPblQzK3dvcUtpRmtBSmYxcHpuZXVxcUtqNHRIN3J6YSsrK3VxR1ZhdFc5VGlFb0wyd0ZReU12SnB1T0RWcU9EUnE1dExNSWtFNEhFWnViaTRLQ2dwUVZsYUdxcW9xMU5iV0RqbTNOaVN3QWVsQ3dyRmp4eXpYMXR2Ym13RTN0dlhEQ0VkQjA0TFIxMFlvcFdvYXprU29yS3g4SXhxTi9rOGdFTGlYUDYyNXVENmRPbmp3NEI4dnVlU1NKZ05xTE5Ec0lhaHFUaVlSUXF5OG1yMVk0SGE3TGNBRmcwSGs1dVlpRW9tZ3RMVDB1S0VHWkNrZU9QMVdZVnRBMkVGNVd3c0lkUmlTWjhldFVvU1FaREFZZkNLWlRQS1JLeTZ1TTFSMVM2YWlxdXBtckkzMi83dDRQTDY2ckt6c2JXUzJkbGdocUMydlprSE5WZ1dsMmFER3RuWjhVa2M3SkxBRkFvR01GcEJRS09RNGxXQ0RtMWtselJpU054K0k1NTkvL21GZDE3ZndweEFYVjFyUnVyVllNdThhVEIxZmc2cXFHb3lmTkIyekZ6eUNyYTFuenZlb3F1cldsU3RYYm9GekJkU0FHMDFTU2xWS3FhYnJ1cTVwbXE1cE90Vmh1VFdxS0FwRXRRdnQ3VEVrNVhRNEdnZ0VFQXFGTWxvN0FvSEFKL28rcGFIK3cvTHljc2RwQklkY1c3YVFGRWJPVFNXRUpLKzk5dHBEalkyTkQxUlVWRlFRUXFyNTA1cnJYRmJyMWdXWVBXOGRHb0lUY08zMTgzRkRLUkRidFEwYk5pekZuSzJ2WWNVekQrSzZ5T245SGltbERkdTNiMzk2d1lJRk1ZY1F0QmZwSWZja3BXYkJnR2lFcEVlbktOVnBLdEdEaE1lSGdHR0N4R2d6bW84b0NOZWNsd0UxTTcvMlNVTFE0d1liQUF3ZlB0eXhRdW93WmtWMVhTZG1aUU1BMVhXZGJRRWhoQkJoK1BEaGI3YTN0OStmazVQemkrUDlYcmk0emg2cnRoWExGcXhEUTJRbVZxMWZqbWtXd0c3RkxUY3N3WXlacTdCazJWWmN1WHdhWEtmUnJEVTJOcTZaT25WcWs4MnRaWWFnbEtZTEJrVFFSTUhxVjRNa2FPanVTYUUzbnFCQ1hoQXVsd3VpTElBUUVXNXZabXRIYVdrcGhnOGYvaTk5czhMeC9HT3YxNHVLaWdvVUZ4ZG5IRXlaNWRSZEtzdHl2NURVTnBXUXlNM04zZERUMC9Nci91em1PbmU1dGdZYmppcTRkUDVDMFNBeHNnQUFJQUJKUkVGVUJtcHBCU2ZlZ3NVTGJzQ1ZrUVJhYmZtdlphc1hZTWJVR2xTTlg0Q3RhZCtIclEvY2hobFR4Nk9tcWdvMWs2N0J6VXMyb1NuQmZNS3R0MkY4MVhRc1dyc2FpMlpQeC9pYUt0U01uNG9aQzlhaXppR2ZscWpmZ0VXenAyUHNpSXFIcXF1cjMyZWNXaTk3RVVJU1lBK1FUSi9jb1p1TnVMTExCNzhrVUlIcUlIbzc5bjd3QWQ0N2xBUWhjYnkvNlM5NDVLL3ZJeFdKb1BqSVU1Z3phdzV1Ly8yZmNOczFrMUJUTlJWTDZnQnNtb2VhcWtsWXNEM3orOXU2WUR5cWF1WmhFL3ZCcHEzSDc1S0tpNHNIZEcxbU9NcUdwR1lMaUJHYXN2azJBWUF3WmNxVWg5OTg4ODFDV1padjRrOXpybk5OZGEvdFFCSzF1R0tLVTZ3WndiUmJsMkphdjQ5dnc4cGxWYmppK3ZsWVZGV0xha1N4ZGRFTXpGbVR3T1FiNW1QcEJCZGFYMXVIbGF0dXdlem9LbXpPY0hzTldMTm9GYTZkUHgvM3pROGl1bTBWbHExY2lObFJGelkvZUIzNnZvdnRXSFp6SFNvKysva245cmY4ZysxWDZ4ZUNzbEFEb0ZNS1NvekZUK204bWdKL1VTbUt2Vjc0UEJKeXhwWUJ4eHJ3d1dFM3hsNHhIUmVQSG9OeFJVVVk1ZzFCa1JKNGZ2a0tqTG4yUnN5ZldZV0pFUUJOUTNlL0MyYlArV1RoWDNWMU5lTHhlTmIyRHdac0dTRXBwWlRxdW01dkFTRTdkKzRVdG16Wjh0RDA2ZE1MUkZHOG1qL1Z1YzRkSmREYUdnV1VDQ0lzMTZLdGFHV2RGbHdJUm9JTW5Fb3g4NzcxV0Q0dGFQejdUVml4SFpod3k0TjRkT0hFOUwrNy9qcEVXaWRoNGFhL1lmdnlhUXdjRlV4ZS9EanV1OUg0Z2xPbW9Dd3hIVE5YcmNDcXV1dXdzTGJ2YTQ2Lzg0bk5uem15NGZrTjhSNm5YalY3RlZRbEF0R2hVNTFTbmFaU0tWQUlVRVFac2l4VGE3amRsdzQ5SmJrWnU0NTRVVGx1SWk0NXZ3TER5OHBRZlN5OVJxL3Fsc2V4Zm1IdGNZZmVkU3VYWU4zQnFrOEdObEVVVVZWVjFROXM3RFNDYmN5S21JVUVJK2ZHRmhNSUlVUzQ2cXFybXVycTZsYlcxTlRrRVVJbThTYzgxN2tDdGtRaURSRVg4eXJldnVRYTNMRHVhTjhIQWpPeDZ0M2xESnlxTVhsaWtJbFpyOFR5elZmYVBuY1ExV1VSWUhzcm9nbWdqeEl1Uk1vaUdkQ2NPUE02VksxYWllMDdXb0ZhOCs4bXZGV3U3SDE2L3Z6NVVWdE9yY2U0ZW0zOWF1bEdYSWxRVUoxcXVrN1ZaQytPdFNkbzNPVkhVWGtJZVVaclJ5QVFnQlNWSVlvdUJQTUxyV1pjOFYwQ0lJRGF5YldmSUo5WWo2MWJHNEF4Q3o1NXdqNGNEcU95c3RLQ1c3WUtLZXZjVExnWlV3a2doSmpGQklFUVFtcHJhOTlyYW1yNmJVbEpTUzRoWkFSLzBuT2QvVEtCWmdET2VEWFgzbklmVmwyYkFCREZ0bVh6c1dvb29WaTBEbXRYck1DYVRkdFJkekNHcEdYUXF0TklHb2dVWlZVb0ExRGYwQVFnQWtwUjM5UFQ5dWQ3WjE3VllvTmFYd1dVeWFzWnVYTXJyeWJMTGlyTE1tUkJwMnFpRi9HZU9Kb2JQZ0wxVGNia2tyUmprenNVU0pJTDRjSVNWRlpXSWh3Ty80dVBaU3NhV2dGbFl2Vy9Wb2tzS3l1ekJ1Ulp1R1hMdFJsUU00ZS96TEJVTXg0Y0FrQW9LeXQ3K2VqUm8vZm41ZVV0QWhEaFQzeXVzeDFza1VnUVNEYWhxUlZBbWVHMXFxZGdXalVBUk5HNlNobENqcWtPRDh5ZWdlV3RFekZuNFhJc3JDNUQwQVhVcmJ3WkN6Y04xVHRhT25xZ3ZYdjE0Y092TkNKenNMM1hJYStXTXZOcTVqSjFkcnJBN1hiRGsxK0VTaVdGcHIzN2NLVGhNRENoQ2prNU9WRGFYWkFrRC9MTEtsQldWblpDSDlWL3VjVmkxS2hSR2E2TkRVbnRKMzlRU3RsOG0yNE93eHJoS1NHRUVFb3B5Yy9QLzN0blo2Yy9GQW90QnVEbVQzNnVzMW0xbDA1RVlNMVcvRzFURTc3KzlVLzRBdCt4Qm10MkFaZXVlQkNMcitzTFVSUEJJUVowOWUrZ0NVQ2txcXozNE1HRHE2NWU4WFlkK3RvNnpQQ1RkV3Y5UWxCQ3FLNG1rMGlKTG5oOU1oUkZzZkpxM2tBZXl2TVBvTE10aVZRZ2pQejhmTGlPdXFFb1BoUlZqUnJTTHdBZ2tVSGYvb3FnS2dJa201cU9yOTNEU1lRUWpCZ3h3cHBNeU0vUHR5WVQ3R05YWmd1SWJmR3lPWEpsdG9Ba0FTVEM0ZkNmdTdxNmVCc0kxMW12NExSYmNIMXBFdStzV0lCSDZoTDl3cXZXMXVRUTdGWUNVUUNKS1BQL0orcncvSTVXdXhzREVFTjlYVDBidzJMVHFrMDRpREdZTWdvUEdlTlNMTlI2R2JobG5MRm12bjdOZmpXQmdGSTloU1RwS3haNHZWNzRQQ25FNGdTQ1B3OWxoZmtvS2lwQ1JXRUlpcUlnbVNTRC8zeVJDQ0tJb2I2K0tlUG5lNjB1eHZ5amFreWJWZ1hzV25OaW1tSURnUUNxcTZ2N0ZSSTBUY3MySUQ5WU1ZRlFTb25mNzMrc3U3dmI0L0Y0YnVkUGY2NnpOeHFkaUlVUExrTGQ3S1ZZT21NNm5yL3VTbHc2cGhRNDJvRFhObTNBdG9ZQUp0d3lFeE1IdEgzWDRzcjhkVmkzWkRibU5WeUphclJpeDZZTjJIRXdDU0NLUkJRQVUydll0WHcyWmpSY2oyc241T1BvYTJ1dyttOUhFYjcwOWdkL01LbmdIdzZoWnc4eWp5T3lPVFd6RVZlaWJoOFE2MHJTK05FV0pMdUR5QW1uMEJOcnc3NzJOclFuWGFpZVBoVVhHSWRHam5TTlF1aUpMVml6WkFsd3hhVzQ3c1pwS0J2bzV5dGRoVlhMYnNhOGd6TXh3WFVRNzJ6YWdPY2JBRENMNEd0dldZeVpHK2FjdUc3L3dzSkN4MXlicXFwc1AxdEdXTW9XRTR4UG85bkQwbG16WmozODV6Ly9XWEc3M2QvbXJ3Q3VzNVp0dFYvSDQ1dHI4Y2l5RlZpemRTMVdySXNocWVTanFuWWFibGs1SC9PdnJCNjRTaGljaHFXUEw0TnIwUXBzV0wwU1cxMVZtSEw5ZlhoOHd2Tll0TElKQjVuOEhSREFGWXNXbzJ6YkNxeGMwb0NvcXhRanI3MzdrZnBYZjdrVi9hY0tyQkNVRUNRb05WZm9XVkRyYThLVlpTaUtqNWFHS0hxaWNjUjdZMmc5SE1OUlFVRzRzQXBUcDE2T2EvOXRKRXBMUzFGVlZZWHl5Ky9FNGplYnNXekRLcXhvemNlMEc2Y05EUDlIbHlHNllBVTJyVnFPcllFcVRMeHVNWlpOWElHRkd6SWZoK1dQcndSaEQzSTdFZHE5ZXpkMjc5Nk54c1pHSERwMENFZU9IRUY3ZTN2RzBVY0dBQWtEUUdMMHV3a0FSRXFwQkVBRzRLS1V1bi8wb3grRmYvakRIOTdpY3JubThaY0ExNWtxVGRQUTFOUjBacCt4dHZVMmpKK3pGZE5Xdll2N0RJN0VZckhmZi92YjM5Nzhoei84b1lkeFpUMEF1bzIzUFlRUXEyQkFqRzFUN1BscXpOSGUxaGxyNXZ5bmViNWFTVWtKaGc4ZmpwcWFHdFRVMUp6VUgvT0V6MmVPSGozYUNrbnQ3UjlaWEp0NTRpNlFXU20xd3RLZi9PUW5uWkZJNU9HNWMrY0tMcGRyTG44SmNYR2RHTVZpc1Q4c1hyeDRpd0cxSkFPMUhnWnEvVTdEZGFxQXNzVUNuOC9uZUx4M1pXVWxSbzhlZmRKL3JoTU9Oa0lJUm84ZWJZSE4zdnFoYVpwMTVDK1RiOHRXS2JVKzUzZSs4NTAyUlZFZXZ1bW1tOERoeHNWMVlxQzJkT25TelN0V3JPaENacUdBYmNETmxsZlRCVUZnTjB4UmN4R0wvY0JJMDYyWlVHT1BCdi9VZ0EwQVBCNFBSbzBhMWE5cDE5YlAxcStZWUxnMDA3V3hjQ09FRURKdjNyeldSQ0x4dTdsejUrcHV0NXVIcFZ4Y24xREo3dGp2Rnk5ZXZHVUFxTEZPcmQvcVBPUEFTR3AzYXViS3ZGQW9aQjBZV1Z4Y2pJcUtDb3dhTlFvZXo2blpkaS9lZmZmZEorVVRtd2RRbW5Beks2UXMzR3pYWUJpbkFMQng0OFlVSWVUOWl5KytXSlZsbVk5ZWNaMHhvcFFpR28yZWdBNzZrNmpLcTNIRHpUYzg4dlN5LzIvTDczNzN1KzVzVGcwT2t3VnNvY0NFbXN2bG91d0p1UGFWZVdhaFlNeVlNY2pQeno5bFArWkpQUU90c0xDdzN6U0NRNFVVVEo3TnFwUUNnRzFnSG9RUVVFcXhkT2xTdlBYV1d3K3VYYnMyNmZWNmVTc0lGOWNRMWRIUjhlQVZWMXl4OWEyMzNrcG1jMnF3SFVQRVZqOHpLNkI5VHMzYzJzN20xSXFLaWxCUlVZR1JJMGVpc0xEd2xQNmNKLzF3eC9MeThnelh4azRqMkYxYitwY2VKUUNvcXFvbTNEUTJMRFhodG5IalJ2aDh2ditOeFdLOWZyLy9kdkFKQlM2dWdkVGIydHI2VUVGQndUL1EvL1RiZ2FDbUVVSTBvZThJb3F6aFp6QVlSRGljbmlvb0tpckNzR0hEck9iOVU2MVRjbXB0ZFhWMTF1UERtVk4yVFR0djVkcFVWVFgvemhGdUFCQUlCUDdZMGRIUkhRNkhid09mTGVYaWN0TFJnd2NQcmpJbUN0alp6eDViK09rSU5XYkJjUWJVbkZibm1WQXJMeS9IaUJFalVGMTllazc5UDJYSGNkZlUxR1RiaStEbzNFeTRBZW4rb0FIZ1JuTnljdGEzdExSMFJTS1JiL0ZUUWJpNHdCcUYrdnI2K3RValI0NnNHOFNwSmJKQmpjMnBaUXMvbmFCMnNudlZ6Z2l3QWNEWXNXUDd3UzBMMkN5NG1RbTNiSEF6LzF4WVdQaHNZMk5qZE5pd1lmTUVRYmlJUDZXNXpuVnBtdmJXdSsrKysrY0xMN3l3RWYxblB3ZHI2YkNnTmxoT3pZUmFZV0VoeXN2TFVWMWRqYkZqeDU3V24vMlVnbzBRZ3JGangyWjFiUTYvYlZnSDV3ZzM0L05TU2lrZFBuejRQM2JzMk5FNWJ0eTRiNHFpZUJWL2FuT2Q4VHIydTVQeWFWTXBiZk9XYmJ1ZXZtcm0vUzFNK0dtZi9ld2h4cnE4VEtoUmpSQktSWUZRVWFCVWxuVElvZzZYcE1JdHEvQXFLZmpkU1FROUNZUzlQY2p6ZDZFd0ZFZDVYaFRWaFowWVc5NEdFbjM5M0FFYkFNaXliTUZ0RU1mRzV0dXl3WTBhSDZkbWFEcHg0c1FQMXE5ZnYveWFhNjVwVlJUbGEveVZ3M1d1cWJzNytjVERqMjE3ZnY0ZGY0NE9BTFZlQWlSQVlLdCtRaU1FYWFpSmhNcXlBRVVXNFhKSjFPMlc0ZlVvOFBsY0NQamRDSWU4eU12MW82Z3doUExTWEZRUEw4RFltbExJa25qYUg0UFRzdkxPN1haajdOaXhqbmsyMXEyeElTa2hCS2xVS24wVVNQci8wL3JZbHVuY1pzeVljYkNtcHVaWGI3enh4aEcvM3o4ZmZMVWYxN2todGEwOS90RDRmL3V2bHc4MngrMDdDdGp6MUV5bzJad2FkSUdBQ2dLaGtnRTFXUmFRNkV6UXpxQUxZM0xTVUFzR0dLZ1ZoRkJXbW92cTRSR01IVk1DdDFzK0l4NkkwL2FDOS9sOEZ0enNZTE9IcFlRUWF1VFQ3SzBnOWdrRmFzSnQ5KzdkZWlBUWVLeWxwZVZ3SkJLNWhTOWw1anBUdGYyZSszSHowZjhYNy82NjloUHZEYVdVTmpUdU83cW1lc0tpOTVHNVRhcmZlV29NMU5TQm9LWW9JblVwSXFpUVJGS1I0ZmU1RVRDaGx1ZEhVVUd3RDJvMXBmQjVYYWgvOXAvWW5qOE9OMzdHNy9CZHhySDF2bWV3NU9uOWFJcEppSXdiaDhVL21ZNHJTODRpc0FIcGM5ekdqaDNyNk5qWXZCeDcvd2FCRzJXZEd3QmFXRmo0YkYxZDNlRlJvMFo5WFJURnovS1hFZGRaWjlOVWJldjJOeHFlbm5yMUw1eVdHZHVQODA2QTlCM3AzUWMxUWdVQlZKSUVLa3ZFZ0pvTXQxdUFKaEtJTGhjQ0FUZHlXS2RXMWdlMVFNQU5RRVhkYzY5Z1pVbVZJOWhhbjMwR3R6MHRZZWxqdCtPNmtsNXMvZEVhekx2akRXeCs3Q0tVblUxZ0E0QlFLR1RCYlJDbzlZT2JrVzlqejNPemdHYkFUUWVnMTliV3ZyMTY5ZXBETTJiTStOanRkcy9oTHdXdU0xV0paOWRoL0lQQWphTVQyTHF6RGExSkY2YmROaFBMUDU4SEYxcXc3RC9XWVB2b0tyajJ0S0FwbG9CWU5XYjFlU1BWTGIrNTV5OHhaTFp6Mk1OUGErNlRVcVFFUWpRUTZDYlVSQUZVVGVrMG1kUUJRcWdnRTVTVnl2QjZSR2dTME8xMkdWRHpRRHUwSDM5NkxvWk8zWXZ5Qzhmamh6OGVqdXVDKzdIa1A1N0Mya01hWWxpRFNYc3V3ZU1QWDRTK01FbkZqdWNPSWZqdnMzQmRpUVRBajJsenhxSDZLeDlpZSt3aVhKK293N3l2YkVYa1o3ZGk2V2ZPQXJBQjZZMVhBNVdIVGNBUlFzeUxFa0tJbVhNemMyMjZybE8ydjQxMWJqZmVlT01oQVBlM3RiVjluSnViZXd1QVl2NHk0am9qZGVnWWNOY3NiUDZaSDlGWG44SDBPMTdDcHMvT3hIVUJBRWlnVlJtRDlYLzVRblB5NC8xL0xKdHd6OXRiKzVhcUpCbUlzVWQ1SndoQmtsS2tRS0FLSUJvSU5JR0FFb0hvb2tCQVV4clZpSUNjUEJmMVN4VHRyUW0wZElzb0szQkJsUVVvM25UNDZUbjZNVmJ2Q3VLMkg4L0F2TXR6OGZGanorTG1iMjlHNUM5WFlmRmZic1dFMjMrTlpTVTM0T1VGOWhHcVhyVEdWRVJLR0NlWDcwY0V2V2c5Q21ENE1OeHkxNzhqT080c2NXeW1jbkp5TXVER1FLd2YyT3pPRFFCaDVrcjdPVGNBdXVIZWFGNWUzbC9yNnVvK0hqVnExRTJpS0Y3T1gwVmNaNXhLcWpEVENPV0NvNGVoT3ZrR1dtTUFBZ0Fnb21aeXhVdDd0Mys0NFpLcmZ0R0VnYmV6OTlwQ1R4VkloNTZFUUJjRVFnV0JRSklJSlJwQlVnY2xnZ2lYMzRVUnVVRW9YaStDQVFrcFJVRFU3ME54Z1F2MXIzV2gra3VmeDd6TGh5RW43RVhPYlpmaHVxZlhZYzAvcG1QS1lJbWVmcXNiUkFBcVlra0E4R1BpWi8xblR5aHFoOXQ1NTUzWEQyb0RRSTZTdFBybDNDd2IxOWNPWW9hbVdtMXQ3ZHMvKzluUEdyL3puZS9zOG5xOS9NaHhyak5YUmpVaFlXeGo2VWxwRDcveTJOcVhIMzV1VzQ4dG45Wi83eWVRcEVDS1dGQ0REdlJCVFJRSmxTUUNXUktnZUNYcTdra2gydDZOenJZZUJDSzVPTC9Zalp5d2dxUmJSR2NvaVBJeU54cFVMMm92SElHY3NOZE1KcUdxUk1YelIzc3g2TGkyWXYrQUJrQkNRRG54RDlzWjF3WVJEb2VIQkRkN1dHcStieHlOcEp0QVk0b0tPaUhFZEc3NkhYZmNvZDl4eHgzL2UrREFnYjJscGFVM0UwSW04bGNSMTVrcXF0TjNkdTA1c3Y3dVZ4cjNBbzJxUXo0dHc2VVJnaVNvQlRTTkVHaWcwRUZBQlpGUVNTQlVrdEx0SElvaVVna0V2a0kveXYwS2ZMS081bytPNHQybWZFd1k0VWZTSTZFdE53Y2pxdk1RclhnZnIwWjE1anVMbytHb2hFaitZR2RRdUJISmw5QjZLQTRnbFA3UTBUaGE0VVBrSkp4bUpKeUpOekVVQ21IY3VIRVlPWElraGcwYmh1TGlZa1FpRWVUazVHUmI3VWNWUlFHejJvOHlxLzAwNDR6MkZJQWtJU1JCQ0RIUGMrOHVMeS9mdW03ZHVoLzI5dmF1NGk4ZnJqTlJxcTZ0ZnZHSkxmOVRPL2wvZGlOeno2ZjFQR1l1YTBVZU5aMmFjWlphK2hjODI4NGhHSTIzSWxMSGVyQy9UWVhzZFNPVTQwZStYNExpODZHNEtJaDhuNEpBUVQ3R2phbkJGMmNQUjkycUY3RGhrQXFnRnpzZTJZb05HSU1iL2g4SmdBU1hTMEtpN1JoYUUvMDkxSlRMaGlINjNIYXNiVlNCeERGc1d2VU82c2VOd3BSQUdwQTdYbXhBZmVJc2RXeW1Bb0VBeG8wYkIwRVFIQzlDaVAydDVkeFNxWlJaTVdXTENwUUpUVTMzcGdIUXZ2U2xMelVCK0UxVFU5UE9rcEtTbXdnaEUvakxpZXQwUzlmcHV4L1d0NjlmKytHYmU3RHNUWlVKUFpPT0xvMkJHYVY5K3dsSXVqOU5GeWhGU3RkcFQxS0V6eXRDVVNUcWRrbHd1MlhrajFDZ0hJemhuVGZqb0tLTWdvcGhtSDFWR1NyS3ZVZ0VYRGhZV29KQXdJM0E1NytBQjQ4K2d5WC8rV3NzaUVtSWpCNkR4YitaamlsR3lEemwrbkVvdStNcFRQM1BTL0RNRXhlRGJSNE5Ydlh2ZVBEUWMxZzA5OWRZWlBTeDNmZVRpZWxXajZQN3NmSkhXMUgybTF1eCtQeC8vYkU3NFZ1cVRyUjZlM3Z4d1FjZm9MNitIZ2NPSE1EaHc0ZHg5T2hSZEhaMklocU5vcXVyeTlwOGxVZ2t6RjBMaE5sK0JWM1hDYVZVTUM4amF5a0JrQ21saXBISmNBRndyVnExS2pKcjFxenJ2Vjd2LytFdkxhN2owU2ZhVXBWbFZqUWE2M24wZ2Y5OWNkc2RkejhWUjErQmdCMlBZc1BRZE9nSk52UWtPa0gvSW9Fc0NaQmxrYnFVdEx2eXVHVjR2YTZNaVlMOHZBQ0tDa0lvTDh1eHhxVE9sSW1DVDcxanN5Snp0eHZubjM4K1JGSHNkN0h1emViZ3NoVVZLSk43TTRzS090SlZVdzJBT21mT0hHM09uRGtQN2QyNzk2MnFxcW9iUkZHY3hsK3lYS2NzN0ZUMWwzZStmK0NaQ3krNzkyTURVbmFYeHViVWtnUklaa3dSb0s4L3pYQnFWQlNZSW9FaVVrV1I0SGJKY0J0UTgvdGNDQVk4eUFsNWtaL0h6SDVXRldEc21ETmo5dk9zQXh1UUhwd2ZQMzQ4SkVucUJ6YjdXd1oyVkJBRUlnZ0NWRldsekw2RjlONi92dERVcUJRUnpReE5BYWlqUm8xNmZjU0lFVHRmZi8zMTYzSnljbTRDVU1wZmRsd25TNVRpNEpIV1kwOStadHBQM21oS3ozbXlVRXM0WEVrSGw5WVhlcHFUQkdKZmtTRHQxR1M0M1JMY2JnVStiM3IyTXhUd0lCejJJV0pDclN3WEk0WVhZdXlZVXB5Q2hWTG5MdGlBZEh2SGVlZWRCMG1Tamdkdy9TcW1oQkJxaEtaZ25adVpkME42RzcwR1FQM29vNC9VM056YzlSczNibnpqc3NzdSs2TGI3YjZKdndTNVRxaEMvd2RkWFYxci92clh2Mjc3NmxmbmRRemkwZ3lnRVJOb0tlTVhzWFYrR3JPYkFKSWtPZTc4TkUrK3RlLzlaSS96UHAySFJKNVRZRE5WVTFNRFdaYk5DaWlNTldDT0lhb0pOK010WWVBR1BTM3JTQ1N6Z2RmSnZWMTk5ZFdOQUg1YlYxZjM2c2lSSTJkS2t2VHYvQlhKOWE4cWxVbzl2MlBIamsyVEowOCt3QUF0RzlTU0ROUlU5QTJ3bXhHSHRXekZPTWJiZkoxUVJWRmdQeURTaEZwdWJtN0dpcnpUZVp6M09RMDJJTDFEd1d6dk1DOFdjRTZocVhIRHJkQ1VxWnBhcm8wSlRUWEd2VmxQb3RyYTJyY0F2Ti9VMVBSQ2NYSHhsL2hKdlZ5ZlJMcXV2OW5RMFBETXlKRWpkNW0vUEcxQVN6cTR0SlNEUzlPWml4cS8yTE5DemV2MXd1djFJaEFJV0hzL0N3b0tMS2lOSERueXRDeGU0V0JqVkY1ZW5nRTM4MmFhb2FyZHhSbWdzK0NXU3FVb0ljUTg4TkplV05BWndHVzROd0Nwc3JLeUZ5Kzg4TUovUHZ2c3MxZm01ZVY5aVJCU3cxK3VYSVBuMGVpZTV1Ym1wNmRQbjc1ajE2NWRLcE1mWTNOcDdOdWtEV29xODB2WEFwcTVFazhVUmZhWFBYVzVYQmxRTTVldW1Icy9JNUVJU2twS3JHWEdwM3BGM3NuVVNWdVlmQ3BrMm1tbmZKejVkb0J4TEh0YTFKd3JoUUU0R0hDekduMU4yQUhRbTV1YnRlWExsemVrVXFrWExyamdnbWEzMjExQ0NNbmhMOTl6R2x5T0M1TXBwWTJ0cmEyUExWeTQ4RSt6WjgvZWYvVG9VYnNyNjNka045TExWWHJ0K1RSbWNiSFRSbllvaWtJVlJlbVhTMk9CeGk1ZHFhNnVQdVhMakxsakc0Snljbkp3L3ZubncvenR4RXdnWk9UaDJDdVJTRGlHcG94N000ZnJCVnQ0cWdGUWpmQTBCU0IxNzczM0p1Kzk5OTYvTEYyNjlJVnZmL3ZiMDBPaDBFeCtxQ1dYQWJTRzF0YldEY3VXTFh2cmw3LzhaUytURzNQS3BiRmhhQXJwNDRWVVFtQkdDeHBBK2tZRkFVcEFhUHFwU2tCQlFDbW9UZ0ZLQ1hRS2FEcUZwZ09xUnBIU2dKUUdKRldLaEFva1VrQnZpcUFuUmJEN293TUFEcHhWai8ybjJyR1prbVVaaFlXRmpxZUFESEhlMUc3Z3pCTjcyUk5DN05WVHk3MEIwTFpzMlpMNCtjOS92cmU3dS92NUN5NjRvTW5qOGVRU1FncjR5L3ZjYzJ6QllMQ3VwYVhsRDkvNzN2Y2VuejE3ZHVNLy8vblBYZ2VIMW0rbnB5Mm5waEppZ2RESXA2V2ZpNFFJRUFXUmlwSUlTVEp5YWJJTVJVbi9jbmU1M1hDN1BmQjZmZkQ1L0FnRUF3aUZ3c2pKeVVWK3BBREZ4U1VvSHpZTVZkVWpJRW55V1hrdnp2akpnK1BWeHg5L2pJYUdCalExTlZsVENoMGRIWWhHbzRqRll1anU3a1ozZHpkNmUzdVJTQ1NRVENiTlRmV0VYZXFzNnpveEwrTnhNcWNXMk1rRmlWSXFBNUNSUHJ2QXVxcXFxcFJYWG5sbGFtRmg0VFdDSUZ6TVgvWm52NUxKNVBZMzNuampoYTk4NVN2dk56VTFtU05OckVPekZ3Z3lISm94MDh5TVFoSHpseWhsSzU1bW9Zd3RFR1FyRXBqdEhHYjRXVlpXaHFxcUtsUldWcDdWOStLc1czSlNXVmtKajhkakRzZWJlWWVoRkJpb1VVMGxxcXBhNGFuWjkyYTZOU004MVFjSVQ1TUFsSWFHQnFXa3BPUUZBTnYyN3QwN29iS3ljcm9zeTUvbkwvK3pUNGxFNG0rN2QrOStkY0tFQ1kwTXpOaXdNK2tBTlJaMnFnRTFxOXBwZ0kyYXhRSGp1VW1aNTY0Rk5ET254aFlKL0g1L1JrNnR1TGpZeXFtZFRVV0Njd1pzQUZCWVdBaXYxMnNCenUxMmczMFMyT0hXMjl0ckFTNlpUR2JMdlZGS0tXSFBlRFBQZDJPZW1DbkR3Vm1BQTZDTUdqWHFkUUR2dlBEQ0MwOU1talRwVXIvZmZ3MXd3bzk1NXpxMVlXZFRMQlo3N3NVWFgzejdpMS84NHRFc1FIT0NtdW5PckdGMUk0K20yNnVkQnRSZ1Zqek41NnVUU3pPaFppOFVtTzBjWnVOdElCQTRKKzdQV1JlSzJuTWVlL2Z1eGI1OSszRG8wQ0cwdExTZ3ZiM2RHcUNQeCtQV0FMMFptaHBEOUVnbWsxQlYxWFJ2R2VHcHNYaEdvSlFTdzhHWjRhbDVzU0VxRzZyS0FKUWJicmpCdlh6NThza0ZCUVdYUzVMRVQvSDlGRWxWMVJjUEhEanc2dTIzMzc3cnFhZWVTZzBSYUNrNzBBQzJLSkFCTTkyY2QyYkRUdGFseWJJTXRwWERQa2tRRG9lUm01dUx3c0xDakhZTzhtbWRqK0pnYzFaVFV4TSsvdmhqTkRVMW9hV2xCVzF0YlFQbTNjemNXeXFWZ25sS0NBTTRZcXdNSk93MUFPQ2tMSUNUQWNpYk4yOHV2K2lpaXlZSEFvSHB2Qi91alAwRnVhZXpzL09sYmR1MnZmdkZMMzZ4alFHU0U5QlNXWUNtMm9GbUhueHFocHQybDhZQ3pleFBNMTNhUVBtMHZMdzhGQllXb3F5c0RKV1ZsU2dyTy9lQ2czTUNiQURRMmRtWlVWUm9iVzFGUjBjSGpoMDdobGdzWmgxLzFOdmI2MVJZZ0FFMllybzNGbkJNZ1lFRkhGdGtFQTBIWjRkY3h2WGVlKy9WVkZkWFgrenhlQzRIVU1LUmNscGhkcWk3dS91bHVycTZIWk1tVGRxUHZpcjRZRUN6NTg1WVYyY1BPYWw1SUFPVDQyVmRHanZyNlJoNnNrMjM3TXluV1NTdzk5UnhzSjJGMGpRTjlmWDEyTDkvUDVxYm05SGEyb3EydGpZY08zYk1PdHV0cTZ2TE90dXR0N2MzQTI0TzdzME1UODB6M3dZQzNGQWdaMzVNMnIxNzk3aUtpb3FMM0c3M1pSeHlwdzVtUFQwOTJ6NzY2S04zeDQ4ZjMyZ0xGNTJBcGc0Ulp2MkFCbXNQQnlnUkNCUlo3aGQyc2k3TkxCQzRYQzVyM3RQbjh5RVlEQ0lVQ2lFdkx3K1JTTVRLcDFWWFYwTVV4WFAyWHA1VFlEUFYzTnlNZmZ2MjRlREJnemh5NUVoR2FCcVB4eTI0c1lkWHNuQmpBY2NVRndZQ0hESEFKamlFcVpJTmFyTHRZOUxPblR0SFYxVlZUZkI2dlJjVFFzWnlCSjA0NmJwZTE5WFY5ZHFlUFh2cUxycm9JdGFaNlF5WUJnS2F5Z0JOcFpTcVJxWGM2bkUwTjZXeFFETXJuYnF1VTBFUTRYYTcrZ0hOSG5wNlBKNStRK3htNkZsUVVJRFMwbEpVVkZTZ3VKaHZsandud1FZQTNkM2RhR3hzek9oM2EyOXZ4N0ZqeHhDUHh4R1B4eTI0T1lXbVdjSlRDM0FPT1RqQ09MaU1YQndET0NmUVpmemR4bzBiaXkrODhNTGFjRGc4UVpibGkyRnR4dUFhb282bFVxblgydHJhZHY3em4vK3NuekZqUnBzQklIMEFkK1lFTmZhRWpYN0ZBTWFoV2Jrek5vZG1GZ1kwVFljb2l2RDV2T3p3ZXIvUTA0U2EzKy92MThwaGhwN0RodytIMSt2bGQvaGNCcHVwQXdjTzRNQ0JBemgwNkJCYVcxc0hySnF5b2FrdDl6WVk0TUFXR1d5UU01MmNHYWFLZHBnNUFRNkFPSDc4ZVBtUlJ4NnBxcXFxR3UzMys4K1hKT2t6QVB6OGFaMmh1S3FxYjBXajBmZjM3dDNiOEkxdmZLT3BycTZ1MytTSUxYVE1CalFXWnV6L285dUFaamswNDRJZGFHYllxYW9hRlNVSkFiOHZBMmhzYjFxMnFxYzV4RjVlWG43V25NckJ3WFlDRll2RnJOQ1VyWnFhN3MxcHIwSVc5NVlCT0YzWDdWVlVaQWxUN1pBelExVXJMK2NBTnNuMmQySkZSWVc0WnMyYVlTTkhqcXdLaFVLalpWaytqeEF5NGh6TGszMlVUQ1kvNk9qbytHajM3dDM3dnZhMXI3VTBOVFhwTmxmbTVNNnl1VFRyNzh4bWJOdm55SUNaemFHQnJYS2F4Mm14aFlGa1NvVWtTUWlIZ2hrdXpRdzk3UTIzYk5YVEREM1BsZDQwRHJaL3diMnhWVlBUdmNWaXNhdzlidzY1Tnd0d3Buc3pJV2NQVXhuQU9ZV3E5bkJWdEFITzZYM1JmdjNpRjcvd1gzSEZGU1dscGFYRC9INy9jRm1XUndpQ01CcldLdDVQclJLNnJ1OUpKcFAxc1ZoczMvNzkrdzgrOTl4ekxYZmRkVmVQQ1poQllKWU5haG52TTg0c0k4eGtRMDNZNW9tWncwMklwUWlYQUFBR0dVbEVRVlF0bURFdWpUS050a2drVTVBa0dYbTU0YXk5YVlGQUlNT2xtYUVuZDJrY2JFTldWMWNYOXUvZmJ6WDAybnZlc2hVV3NnRk8wN1RCQUdkM2NTYmdpQVBrQkFmSURmYSs2T0FHaGZYcjErZlgxTlJFOHZQekMvMStmNGtzeThXaUtKWVJRc294NkVydlU2WmVTdWtCVGRNT0pwUEo1bmc4M256a3lKSFd1cnE2dGk5Lytjc2RZQTRtR0FSbTJSeWE0L3YyNUQ4TE0vUXRBS0pzTWNCMFp3QWdTVkkvb0xGOWFXeHhvS2MzbVQ3RW9TQy9YNEhBcVRldHBLUUV3NFlOZzgvbjR5OVdEcmJqMStIRGgvc1ZGdXp1emQ3VWEwNHNPTGczcS9lTkJaeW1hU2JZd1BUQ3djSEYyU0ZuQVlxQjNHQ1hZSHRmc0wxdjVmOSsvZXRmKzhlTkd4Y3NLaW9LaGtLaG9OZnJEU3FLRXBRa0tTaUtZbEFRQkQ4aHhFOEk4UkZDUEFZSXpRTUF6TThKQmd6VzJqaEthUStsdEl0U0d0ZDFQYTVwV2t4VjFXZ2lrWWgyZDNmSE9qczdvODNOemJHZE8zZkdGeXhZME0zQWk5cEFSZ2VBbVc1eldOcGdsLzI4dld3d1kwRm11ak5tU3hvRkFFVlJMSmpaV2pneWlnT3lMS083SndsRlVWQlNYR0ExMjlwZEdsc2dLQ29xNGk5T0RyWi9UYWxVeWlvc0hEbHl4TnBuT3RTbTNxRUN6dWJpV0FjM0VPUWNZY2RNUHdnRFFFMTBBSnY5WXIvT1FCY2MzdHJmejBpRE9ielB2aDNvc29QTWZtVnphZjNlTjQ5K2Q0TFlZREF6MzdmdDFJQW9pcUNVd3VWeVpRV2F2ZUlaNytxRnkrVkN4YkRTakdiYmNEaU0vUHg4RkJRVVdBVUNXWmI1aTVLRDdjVHAyTEZqT0hqd1lML2MyMUQ2M295WlUzdDRtaEdtR3U3Tmdwd3h6V0NGcXN4OXN1ZmtpQU9Fc3NGT3lBSXpjUWhnWXdFbk9FQnRJTUFOQkRjNzBPQUFzWUVjbXA3RnJka1QrNE5DakNrQVVGdVlhY0xNS2dRd0ZjNk1IUnVpS0ZKS0tkeHVkd2JRSkVteUhKcTlPQkNOZGNQdDhXRFVpT0g5S3A1RlJVVW9MUzFGS01RN2VqallUcUphV2xveTNCczdralZRYTBnMjk4YTJoNWpWVTV1TEF6TjBiN28zZTA0T0RvNXVVT0RacXJGT1FCc0lic2ZqM0k0SGJNY1Rkam9DanFsT1pnVVlBeThXbm1Celp1YWYyVENUWFE3RUFJMnl1VFJLS2J4ZWIxYVhabS9oNkl4MndldjE0Znp6YXF4ejAweVhkaTRjTDhUQmRnYnB3SUVEbG50ektpN1lxNmRPclNHcFZNcHliamJBUWRkMTRnQTQxc25CRnFyYTNaejl6M1lvWlhWaUR1RXVHUVJzMlZ5YlBTU2xBOEJ0SU1EcFRuOW1vRFNRczdQL1B4bGZpLzJ6TGRTRTNablpnRVp0bFU3cmJEOWQxK0h6K1Fac3RHVm5QTnM2WWdnRWdwZ3lhYUxsMG5pMWs0UHR0Q21aVE9MUW9VUDlpZ3RzZURwWS9tMEE5ellnNU14aUErUGs3RzRPV1J5ZEhVUk8xNkRPakEySFQwYU96YlpVaHc0UmVQWUx0aVBkWVFlWjNaV1p6b3pKbjJXRm1SMXFKdGcwVFVNd0dCeHdhSjF0dEcwNWVnemhjQTZ1dVB3U2xKU1VRRkVVL3VMaVlEdjk2dW5wNlJlZXN0WFRvYlNIMk9GbW0yQndta2UxUTQ1dEhZRkRYZzQyS01IQjJXRUFKemJVZkpvVHpMSTV0cUVXRXV5QXd3QUFneDFjOWp3Wmt5K0RMVzltMzBPYkFUTzJmWU5kMUczUHBXbWFobkE0bkhXKzA2eDJtbUhud2NQdHlJOFU0TEpMK0lyYUV5bUpQd1QvbWp3ZUQ2cXJxMUZVVklURGh3OW5ETld6K1RjVGNIWUhOMUQxMUFGd2xNbkRFUnZncUExMDVrVk5vRkZLemNNRzJWOW9nNExLQ1lZRHdHeW9weG5Tb1VMT1lTMGliQ0VsKzI4ejNtZWNtU1BJSElCRzdVdTNCd01hZTJtYWhweWNuSDViMTltamhjeWg5YUtpSWtDcTV5OGlEcll6Vno2ZkQ5WFYxU2d1THU2WGYyUGJRK3lBczgrZVpta1BjUXBScVFrMVRkT3MvSnNUNkV6QU1hN09oRjAvMTg1QWJEQm9aUVBZSndWYlZzQXhKNy8yMGJnUGRyQTVzZ3lJMmNMTWZpQXpONmpiUTgvQndrNTdEczI4VkZWRmZuNitkYXlRSFdobUhvMFBxM093ZmFyazlYcFJWVldGa3BJU0svL1cxdGFXMGYvbVZFRTlIZ2RuQzA4ejNCeWJnM053Y0hiWW1YQmozMlpBai8yN1U1SENZQjJYN1dQOTRHVjc2d2d4QjZCbDVOQllxTm5EenNFY21qMkg1bmE3a1VxbFVGSlNrdEdQbHBlWFp6WFp1dDF1L2lMaFlQdjB5dTEyVzhjeXN3VUd0b0xLQXU1NGNuQU83czJwVGNRT3VuNEZCOVBaMlFISC9Ka3lSUW5XMWZXam1oUDhodUxVbk03aFp6L0dnc3ZteHV6dUxBTm1iSXRHbHZ5Wlk3ZzVWSWRtejZHWlV3T3BWQXFWbFpYSXljbkptQnFRSlA1U081WDYvd0hGMUZuWjhqMWl4d0FBQUFCSlJVNUVya0pnZ2c9PSJdLFsxLCJkZXNjcmlwdGlvbiJdLFsic3JjIiwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFUWUFBQUUyQ0FZQUFBRHJ2TDZwQUFCTUMzcFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFyZjFadGlXNWxXVUwva3Nyb2draXFBUm9EaW9aNC9VZ201OXo0aWlOUnRJOUl2eGxtbElMM251dUZNQXUxdG9WcnYzLytYKys2My85ci8vMXZLbWtLK1czbGxiS3pYK3BwUlk2LzZqMzc3OTIvbnp1ZFA0OC84WHk1MS9QdjM3OSt1c2JnYitqbi94OTQrMi92NS9PMS9NL2YrQWY5M2pHdjM3OXFuKytFK3FmQy8zNUJoZitQWUYzOXQvcjd3L0oxOFB2NjAvNmM2RzJmLzhvcmI1L2Y5VHg1MEx6endmUG8vejVuZjU2ck45Zi92L3JYNzd3c2tvcmM2TVl3bzVQdk0rZjZmY0U4ZmU3OC9zOWZ3WSs5L0MxSG1Nc0YzODk4ZjF6TVJia1gxN3ZIMy9mOTk4WDZGOFcrUi8vdXY1OTlmLzYxNzh0ZnVoL3ZoNy9iUzNMbnpXNnkzLzlqU2YvMjlmalg3Y0oveUlPZnoxUitOZHYzQ0hGLzNpZFA3Ky9iOVh2MjcrMzYwaGhTK1dQUkozRmZ2NXhHVDQ0V1BKNGZxenc2K1YzNXQvditkWDRWZTkrVDdaODNmTWUvSnBQZXdLNzhsMVBldGJUbisvWjUrLzVUQjR4aFIxZS9nNWhobmkrVnVNYldwalJmVXIrZXI3d3hoWlhyT3piRFB0aTYxSU1mejNMYys3Ynp2M21VN256ZXZob2VMaVlXLzNmL3JyK2Q5LzhuL3k2dm0rNlJNOWQvMW9ybmlzbzF6eUdPK2VmZklvTmViNC8rNWJQQXYvajE1L3R2LzhtUDRncU81alBNbGRlc04vamQ0bVJuMy9LVmp6N0hQbGM1dStmQ2ozWHUvNWNnQ1hpM3BtSGVTSTdjSmNuNXFjODl4dkMrenlzWTJXRE9rOGVZZ3FESFhoeURvdUhSRjVpQ2RjYmF2RGUvTXo3bk0rR0hFcnd5OWdtTmlMSGdtNVZkcWl6V1NsbDVPZE5GUm5xT2VhVWN5NzV6ZlhLTGZjU1N5cTVsUElXalZ4LzQ1dmUvSmIzZmV2YjNsNWpUVFhYVXQ5YWE2dTloUmF4Z2JtVjlyYmFXdXM5WEowYmRhN1YrWHpuS3lPTU9OTElvNHgzMU5GR240alBURFBQTXQ5Wlo1dDloUlVYWm1LVjlhNjYydXI3dVRhV1lxZWRkOW52cnJ2dC9pRnJYL3pTbDcveXZWLzkydGYvMnJVL3Uvb2Z2LzRIdS9iODJiVndkc3JQdlgvdEdsKzkzdmNmbDNnMEo5azlZOGRDZXRqeDF4MUFvSU43ZHRjbnBlRE91V2QzQ3loRkRqeGtkbSt1OWJoamJHSGFUOGpmODlmZS9YUG4vcS8yN2NyMS8ycmZ3djlwNXk2Mzd2OGZPM2V4ZGYrNWIvL0ZyaTM5M0R3Nzl0TkMxL1NPYUIrZjZhRmUvTDV2L3ZqcmJ4NnA3cDdMNkhuMWtXZGVxYU1pOTc3ZkY0ZnljTm1aWW45M3YxTllPNlV2aHBUZUs5YlFhOFpPNWErTnNkNTdiTmM4c0Radit1cFQ4RnJQZHFuaXpwVTFybjIrYlkvNjFMN2pPOHZIaDNkdVY0bTR5QkV3WllWbHIyRnpFNHhmLzdob1N5ekJ5Ty9xZmMzMDNqUHcxbndYYnh2WTBkeGEvWW8rT283N1lzTy9Pbm1aK0w1ZnFXekQyaG1mSHNZSXZleU1Sd1FJUEx4bG5hT3R0Tk5ZTGZPY3VZWE1wbjdJRXdKVXI0RVJYcFhuQ3FuMVBWL2V1ZWIxZm04cjlldTFqUFkrWDBFb0lxKzVXMThkTzlNeisvSHVaM0NoTjIwOHdYczk3QjR1b3ZZdjU0OHYxUHlsOGQxblQvSGdkY2U2MlUvMnJxZUVvSTVVU3docnR2ZkZ3MVJXWkIzZHVjbzdubDE0elZsSGlqek5ZQWsvMUFJZHdINDlwYWtNbjFMNTdmemwrWlhKbzhWbnQ3ejJxdStlSDF0Y1VKRjVmMzN0d2Q1K01kWTc5ekJTdXRtZDk1bDF6YVVYV3QvZGVjYjhEbDV2ZlVoUFdPTmIrL2xtcnl1OSs3dDRpcXg0N1BjcDczZHZmTUhMejh4UjJteFl5UGQ5NHNhdnpwQnY5Z3VkRDNmSmRhUHJHNmYyN0luRVBTdGNJMDFla2o4aXQrbys5aGZualpjYjNyT2xYZGt5ZGk2dSs5c2pvVm85OFlnN3NJTVlsekpDclNHeC9ST1JhQ24wdlZXbnVUN1dsbHVQK2IwbzNVNEZ1WWozN3JQaWRYZGdDOUM1d2M2OUxoMVh3L1lnRi9uQ1BvVGt4U3BxRm5meC9kdHV3Yi9YTjgvL2YzcGhzNTZuWlRTNzNURTJmWGdZYjNpLzJIZGVJNjFyTEY0bTNQVkxyR0ZpRHpzT0tiY1JlL3RRY09CdVcyTmdtQ2Jid2Y4d1ZteFRiL0Vib1dDcGtLblUzdHd2Zk5OQ013YzdIVkpCcWdlR0I3QUFzcHZJRnpadWJZVGpyZXZMQTJVWmUvS1lOeS9sRFNKcjIrWm10NitOVGoxekZVeGJRMWI3eWx2ZGY3Rkk5K0JSRUtHMVFJeHo4ckUzSEQwc1dJK2V4aHorYnF2MDlhQzAyaWJjNTQ1ZUxjekdNOTJycHJLUnI0YXRpYngxZjduTGcwenNqcWxhcTdRV01GQXBsZHJ2dkxnT3lMOWl4UFljRHlZWlJOWEJWeEdiSWk1ZTZkdFAvbGhXVmd2SlNia2lNYTN4a2JYcUxPbDdFTlFYRlUxeFFpRSszalJyVEJIVittSXdzQVgrTDhUQjVzNCtaOFFmb0x4M1RoZ2w5QmdsMzl3OUxwVDNld0Y2b1E5c2RydmRZdlFUK01YYjgrK1krMTJ3emJIM3Q5NWpZaGZpM2RvM0s0dkNVOTI1WVUxNGhUbEIvckVzbHZ2Q3pNWE5qc3hjbnBSN1RSanE4S1EzSUlNZExxQ0h1d3VMZ3lmSWc0MGFoZWNjdXdGV3h1eGxsWVNIQUVUVW1QSjRja1RVSjJwWHNPOFQzTHJiZk4rdU1MSDNyT1BEc2lEc3ZQbHVHQTNXMFYzRXA3RWsvVVl2THBhNXBNRExEMjFMNHNWUUlDNTJmLzU0WGl4ZndnRU5SR1cvMk4rTVNxTDBmSzQyYm82d2g4MEY5dFc0WTR0NXJyY08xQnpuc0hCeXVES0VEdS9WMGZmWTU1MUtLTS9IdjJ2NVVGOU1PVDh4UDl4RjNEdmp4YUZaRzV1WEU1L0FBS1krc0U2OGJ1VXZURDVlQXVGOGU2cWozQk9GQm1VRE5qRnhlWHdGYlVZaU16N2p3V1d2aFJ0cFhoOW5tOTdhZW1aVjBRaFdGdkhINm1LR2ZlZkJNeU5ocjVMeGZJTW5hL1Y0M3ZXMVdhOUhDeUt3NXhuUkZzeDVMd0ZCd0k2Ni9BOCtHeWVSdElqTlZlVGJCYkRQVzdEUzdGaFQwbDRacEZ1TVVRTktZSGtqdHBSWHkxaFJWaWEvNkQrQ1dWckdrQ00rK0dGMHJRcW52N2xiU1lEUmtqdk9aVnpTZ3c5RzhJWVJac1VBeVZYQzl1SWRtVUpsa0o1VVBrREtoaXYwZ1lnakgwWFA5V0hNY1loTGEzMDlxT1VScFhYano5YUgycmR2K1lIN1F4S2hFQVVRa0dDbUxDYnl4WThoQTdtaU5COHJ6UjgzOXZZdDExc25GMGNKVndlODdiZXlJd3JkTXhZdTgxYmVzTjVUd0lBdmpCcTJyMmM4MkF4NHh3OVIrZmIrOENLOEsrZ0E0SUlSd29oajhZQmxqMjZkN1d2N2d4ME5FTTlDS0VGQktDNkM4RzBXUDdKNkg3NEJ4OUFSaHV2R0NvUjNERnowRER6ajNXTlJGVmtzU0FLUDJwQ0QyWW9jV0JQelljQUJPRHdTOThhVllranc3UkhqdjNqWmpkRkp3Q1ZZSVRkYWVPMWo5TWVHWlAzOUp4ckt6YnAvNzVHZmtBdTdnWVpYRFBlRjdlVWlEU2d4cEVUbFJWdEJGRzk5WE5WYnhlZEdQQ3U3RVNhZVQwY0xhdnhhamdwT3hnMWkwRjhBT3lZVUJYdWZVUEFLZUErMGxnc0F5OUJaeEhoL2d4WExHS0Rlbm5leStxazhENWduZ1RoNUlsWlFnM2E5RS9QTE9wWlBVK2xLN2FjQ0gwWmw2M3NyZWJUMEZxQVcwb2lmSGpqeStRRFlwakdDcXJpaTNUd1hRR3ZQOXVFQUZld0Y2c0dsY0dIVUZDZVBpUk01Z3Qyd1QwL0hGVWo5VURwc1ZQdHV0dkVEZk1PTm5uSTFuQVlxZzNIWkJiREY1b0Fmc1ZxWmpYM0FPTTEzNTJZVmc4NC84WDJRWGN3bC9qR093aWJqYVJIQWRDSHRTRmxjUVVNT21uL1RnaUVDVnNRNG9VQXFjb0JLbEl4anVKVnRkQWlaUDhnRE5BRXVMMkhnbGE1Ym1JTm9LWk1ReDNHV0hoZFhnYVlvOVlPdkJnSytHR04rUEpTV2xueVMxd3NaZ2NYL0ljWjNuZW1hRlRPMVZlOG13Y2REeC91TjBGWFdUY1NSMFV6RUhTL09Wb05YY3BoekF3cnhpWUhMM0N3N05xaVZLN0lIV0xnRy9BTTdJNzFvT1N2MXZLN3lnNTZIaGcvRCtBWXdOZ1FQdVBzaGVlS3Rtcms1cXBVZ1RQdnE2QlF3SVJlY1dBSXpJQWdvUHE4Rk9ZWWFKWWdIZDBIeUoyQ1ZIWi9JRlpqMXczTnZ2QUhmT1Z4K1hWaW14OGpKQ3lYNXg5ZVB2eTUxUFRLRzlmc0FGdVR2SDVuSHB2M3RKNi8vOXovNnJ6OTVuUi9kbytTN1lneDdhdGllQ0pxY1kySk9ZU21JNklQUmhaYUM5TERmQ0duTEVJQ1hIU3Fpa2QvYlh2TklLOWJoeGUyLzgrQUFkTFQrWXlWKzM0QkYrQzJWOTBBWlRORE56YUthenkzblRoY0NPUEZ5b0wrQUhtRnRYaUFyNm9PNkh1VEhQa0prOGdzZDJGMkhrekh1N0tDNEhVQlgvZlBETTErTDdVRzczeFVFZGcvTUFNVU9NczhjdlRXa1plRG1jVzk0dXcrdkpFNkxnTVEzZGpqMERSQWZSam91Y0hEQkdXT0JzWnNOZ2NHQWh4ZTRDS1ptS2JnbmRtMEFjZ0diUEdwTWNXZ1RFcWgxcEx1QmFoTnkzT04xYnk0RnFjR1BiUlpub0Myc0JPYVBqd1RKSUs0K1JGd1lWb2xIR2JBanJMRFJUNGhqYjN1UHZkYW8zMlhvQ3VBcW9GTFAwU3pVRFo0Y1dCQVlOWnRiRW1hdnMvME5HWjA0cHBtZk1NU243RFBVRzJOMGYvbXFjR3VBSmRDZ3ZrcEppaG4zQlB2NEtwNDVENXgrcnR4emRoRllTVktNaENHYSttN3Mwb0kyTDY1OVRUUVNTbGpmSVRwaWpYQ1djVHpwRzlEL1BsZzFlUDZIek1DU3gxZnhkanNISEJaaTFXU1JEMjYrclBGZzJManpCK3dBamVCRElBanZtNTk4S0FSK0FsU0dDUFhDWXQwaS9UZE05TDY5QVY1UVJTSnc2d1JrWHhlcUhmUlVCYnVCdEgxZis0UEhBTzl4WTVqYUVWaGdJZFlzd25nL1hOUDg4RHZvaUJ5eEF0VFp6eXRqL1Jxd0g2eitwTUJ0NWVMbmgxR0tHL3pBNCtYSTNtTjdlQzNlbjMxbmxaOE1Gb3BBOFk0RkRlMEZzYkVmUUUyZUExb0IyVUtxTm9SaXB3UjVZVWVDekF1VThvQ2NNSjZZeEFnOXd0bWh1Q3pYRGVTU29sekZYY2ZEQVhSMW5CbW1KYm8zcGlnd0xlZ2ZzQUdVenU0ME9JQXNtcC9sSGJZdWFjSjlNV1BodVg3OHJPTHRvSmE3djJ3VG9wQjVkNVQxWmxWdVREdTIxVEFHREI2ekNaaUxPTUNobjAyOFhrcW83cnc2SUJ0RWhrNFViUytPQ0hqVFdVejhDWTVCem9Ub1llamhNeDFFQ0JPRlRraTIyTTRIYUFYa2ZEUnNDVDNvN3g0c1BSc3k4S3FHSDlDV0RQRERjMkVuQk1NM2tPY2IyQUJzVHhBbmVqMGVMMkRNV2IzeVhtVWplOXNjQXpDczMreFN5ZTlCaDIvR3Y3RkVPTlpWV1JMamJzOExUT2tiRzdMd2RMT0FqaHJFbW5XL1FOWllpaUJaS3ZuQmlSbzFBYWJBMk8rV0gzWHpoTUxFdkRqWXdyTzNGY01xQUZ4NENlanZaUTN2Y3EzcUhtU2xjSFRNUm9YaUpMNElCSTJTWXZBTnNHM2hqWWFTQXR5SWlnV2k5T29IMVFud3o0MktIQ1lQbU1KVThTQnJ2U0I2bEIvaDRMNmJWY0tKWWM0Q0NpMFpHNVdOQmNITlc3Vzkzd0VoaEc3c0M0SUw5a0hVd2RmNS9NdWRnK096WXBDcWdJMUdZUGtTV05lUTR0d3ZPQmVibnNFdWhpUlFYQVM4WDRDWWdGL0FDNWFOUE9DS3RWdFRtTUR5dWV5b1RsOEdDbUtvYnc0cWNwZTJzbTRMRVF5VkZ3UDZzVGdZRFVRTXRVUmN1VGV5RVJxTUhNd0dhaENsVkd3OEhrcXZpejFselpDTXpUYm1nVEhSaE9QYnI1TTZBYUF2c1JXd0JtejVIU2dkY0NEZjIzSHVyQ0c2L0FFT2NKT2Y0ZllYSEtrQ0FYNDJjdUsvVFVKcEVNYnhaNE5iSWZwWWZvQldRTDVxeU8rRUxYVzhEbDRJSzQyZGwra0JHUGs4SkFLV2lWSzl6NVZnK1RqYXR1N2RxNnJBTnFJRHJHTElJampNYnJtQkt3TmV0OW5ISlAyR29mN2pTZjd4SU5lZkowRVArckdLQm4wRTFYeUszVUZJdjd4T2ZKZTFoZzBYU0RQWUM4VmlkZUpkTko2M0R2M0tNRmRNcnM1QUV0MVFiWDZnMUlKQVk3WmhjNGpBZzZiZmZjbFp2dkxuMW5qeDlQM3o5dGZmN3g4L3dLMW9BeUxLQXAwRjdTdmowZ0c2Qmxta1FjM29tTkUvQmJQSDUydVl0Tnd2VEZxU2loYklmeE5BZzhGYmRERmxzQzhNRFBuK2pPZ202YUN4SUpnanRwVXROY1I5Rm4yMGNDVThVT0N4ZkRmTU5xQVYvd2FpRHMrSVFPSUFqMVJtY2FiNU9TTHpZc1doVk1PYzROL0NHcGR4amRZYm5nSGZjb1JnSEpBbHNQMER0LzV0Zi83cjdibisyaDh0L3dDQjRDenlnLytGMytCWkY2UUhHd2JzeUxWZ09sSTRVY1VicExEbjBVOGo2U2pMdGJDUWErYktDMHpEQmdIbFlkTWIyc2MyYnJ4VWxGc2NvTDZtaUF0K05uQjc2QUFQeHhhRFRGaFlMT1MrSHlEOTB6b3ZLTTNMRTNzNDBFeU1iTkRIdzBsNTZnZUs2MTdpWTkvenFvL3g4cjM3VDFtdXU1UTc3cXJGRXhndnZQdEVHeUcxa3E0VEU0T1h5UnJZdXhPZFRudUFPejVzekY1VjVvOENsSHBOSENIS1hUTHdwd0NURUlRM3duTkJxQkFVS0hkZlQzQnRCMTZONi9POVZRV3VmQ0x5VE93cnVyazBJNGp5UFdEQUtCUm1tTFhwRVNLTW0wd1JVSUhsdUNWYXNtRGVIeXVFMVFVbFNZQ2VWZUhLRzNmMGpBdUVOd3dhR04xSFpoZHFKTlY4eDJkOEdCUU1iT25Rd2hoaVVka05XQS9qOEs5QmxLWHhiNnVFZFNITk1HbURuRHdqa2cxZGdLYU9iMlljN2FOWjZCV3lnS3hsS01xZTBxR3lzWlBHcGtQU25pSlZJMTFHemxwbmxYNTdXeHRPUUFnSHFtaFFkN09yckNFL3paZWtweGhoUStuaXVzREZjWlRnSy9qS1ZSc1cyRFQzL2FwTG9yeHZGMFhZVEFSTXNxT0NPSXFWMnNid3N6TkEwNjVTM0ZCbHZEclBpbndZUUtoNGlucmpiaXJVcU9ua2hpUUtSSSszaVJNVUE3UDdNc3VDZ1kzekI3d2dlUkdva21ZQThFTW82aFZFUWhEdWxjRlArMkExNE92M2JpUWFVaXdJM3puaTh5Rm5IMXF3OGJudkI1VGhKaCtXSEpOVDhKaFR4SmJCSCtyc1BPcTRqUzBYVmcyOE9TZTBjK0FqakFGRFFuR3ZZR040eHNkRmNlR1l6RlpyaWREUUMxNzhMcGRkMGEwNERmZ1JxMmlBazRWUE9HV2VGdyt3WWg5cjUyV0F3NDFQT3JPR0VKaW94dDVmNEp4dDNDRTBicmhrTDNsVTBFMHlBWUFUTytJWFBud3NXbmlYYjZQYUtUem9mdFhuelRkV2dOS2FWOTI0YjFEWWwydENzY0RNQ084TjhYMWdOaXR4dTdxQk94RHUvRDdnSDVNbmNEVXcyTTF0QUF0RDNXbnhNalEwWmNjUTZvQ3R3RHdsdFJpU2dHRCtJM1Jmc1UxUGh0aSswRWgwYmpYRVJ3ZVFWb3NnalNkZkFTMXlZVGRlZUVpbTk2dDEyNWlDRERLK083Z1Vmd3J2aTBhMFFMSWJDM2hYY3pHRkpmcCswUDdrUlpCZ28vT1BJZTBuSmFBekFzVStCaDB5MGczTzNkS0NSemRsNG43TTlRQkpjVk8vbkJKTG5LOGhHRExrZ1JGcGlCdmFiakR4UkkrQkpWSllFRll2RXBrUVVTSGVENUhGdGNNenRMcFFYNlNxWHhpVWtSQUVWZ0YvTnZQaHIxdG5BTGlJUXJXRkhHSjNzUmNMODhicnc5SVN1QWlmZVpzNGVCYVVhRis2U3p3SDJ3U0hob2EycDBZQVBDSnlnMC95RVhiSUw2enc0NEZmU0NBZlFHSzViMGJ1UWY1Z1JSelpCWHBjYnlxRGI0MEoveDc4UmpXNWhLSG5BcW9FUnhqL3VMR3p3TWNuTCtINC9WdmlweHFnV3l3NCtLaWF0OWVjaVhNTnYyaDBxa2JKYndCeG50dWcyOTExeVlhbDBINVkybTV4UFhsR0pRSGx1TVNNWUtLTjBVUldPaEJxcGkrRWJuWE4xcDFydCthU0dneUpBUGlVWmNOaGNTK01jWWpCakVvR1JGU3daUDhQNFJQbi8yM2RNQWg4TUdPckkvQWhvb1daLzk3WGVQYWRKMCtLOFc4bXBkQ3hKZG15eENlYkpHV2ZEVEZoRmZjRzYwTVBCQ2IvZmpzRThzY0Q0NlU0eG4vZS9jRlRZQ25yTUkya1NKdHJTeWNxQWorQmRNU1RoR0xYYTgreFIvTityWWZ4WHArRkxiVmpQMUhSMjlnMVJPTUYvSmYrejl1ZHUwMkRBRnQ0T3V1QkVEd1EzblBodXdCUEY4SmZFM2dmNElRNXg4c1VBd0o0RDN3cWZ0TjBYNnlZaDErdUQ3TVprczh3Ti9LQlFnQlZ4dERXWFB6YlQ2WXZZaWkzQWZ6dlpBbDkxN01nZnkwSCtKZ0hpVGR3UE9DQ3NXMjQxbFp4MVhEaysyS0h4ejNodXJqenJhaUJOYld2a28xK3RoNDhoZGxyLzRlYlhQKzRTejRTQVVqbTNZRUdhTFVMRDhaRDRUQ1l1THNPVDhubjhWL0EvTXQyQUE3bXlmTGhmQzdnYlJ6WTU0eHZlajRVR292c21zNlRqZjNYQi9qYnR2L0xlOFlhUVA0c0RSd0RJd0Zpd29Wa1RmR0o2V0F5Rzl1Q0RVSFpRWmRHa2JxazVlKzdoL1hDK3ZTeEwwZzZXb2xVeXRBTk9PS1hJMllWTVpic2pDZEM1TkZGN0RHODUzMkJ2K0E1SktkWDVDL3F2a3p4S1pENGJ6WUFJaVNNemxXYU5xdUd6amlDRkJGWUJyb3FYOUVHaFpueFJEanc5eTlRV2lhUThTckN1ZkVIbXFPVkU0cUxQOFVsUTVBYjJnUVZLQytXYlV2L2JwT0Z6MUdDWm1Ka1A5aFJkSGMrMTVCY0dNcUJ3dHp4WHVqbU1NOEsxb1RObWh6QmhKWjNjOUc4endhQVJUNHp0WkFoUDMxalBMQW9sejV2bU9tWStJTjlJaERjajJYR3g2ZjY0VzR4bFNiSndDYU5ad1E1cmNMeXN1S3NuUVZsR2FUUjkyWEFjbjBtYmtydlhBVm5oSWlNZW1kWkZUdUM2WjlvMEsvS1pmTHEyMWdZUGphelFkVTh2a1lTdXI0VHhpUHdYaWJSWCtPZDRQUnBUZGtUUGpOVThvcmVzWlhiSUJ2ODMyalpTUVVhNkNycmFld1BxTFlCOGg4MGZ4ZzlqLzBCRUxHemNuMWNTR2RqSnFaa2pDUFNWVUloaURBU3pjcnZZT1k0aHE4SHZFZzc5WWx3dTBNbFByamxoTHNWVEdRR3BVV3I2ZmdaWkMwcktWUEpSNlp3YTl6K1M1Z1NydjJZemxBNFRUVkhscDFWZ1N4Ymh2Q0xhWUg3dTVVajNEc05nQjU3MkxEeUw4eFJQd2hnQnRVQ0xaNTlSZUFsWkNHRHhPUjRvdDIzSVhsSlpJaHZMU3ZEcTFxWTZRU24yRXlBQyt5RE5UUytYdlBKNUQybTZSdDBMQlhUR2NhbzhTMWNURXR1dllOMFZTeXMrY1BIckVPVllJTmdqdlFrQkozNzQyMnhrZGZ6bUhTb2t4M0FXSXhqVzhQUCs4S2p1T01iNElNTGhJQ0lBSEJSYU1UcnRXZ21mZ0F6QUFudkhQY0ZSdkJicUpOcXcrc2hqTE4zSkI4b0JsK3RlTFp2UWVHV2dZNzhHTEpTLy8rNjQ3bWZ5VXo5MHhEaW95VG9kY1R4NExBZy9qSGhic1ZoaVYyREdDQkgrSFNUZ1BuRlU2TUJqOThQeGt1K2ZqWDhOTjVuQW5YYSs1ajZCQ1dDOFhBMlFxQlFqQUx4TGxDV3VGR2tsdkJYSjlsZEFRK2d5WkdLTU9yaVVZQndBNHVERHQ1WVU4Z0NOR3FEQVNyWU8rWDRZTGFRLzJjTjlxMGNIZ2JLUVluQjRQNjVFSmlKUGZwYmprSGNEMEJLdDRub1g4YnZ4eFVqeXB6TDRZcVlHZmpSQi9RQjVKZ2tTKzhEd1MvWDF3Y1lLaTFlQ1NrQ0lnTFNwN2J6T1lrSHhkbTZvQnVqbXcweWd6a3hqM2xqSncycjhQd1krcm9uaGkza29aNXVNVzB5Vjd0TXUzZkxPVUNDU0dRVXRMZWw3UlJuTHdQMzNTRGhTVXpHWDhyKzB2RkhqT1VIdU0zbHBEUitiUDdCdWU0SEJNYjN2NmFSK3IyTTBveHd2TG9CTVRSZUEvcU8wbGFVSE4rYklTbld2U0NrQmk3eGlUeC9SeXl5dFV5Z0YvQkJyZ0NodWs0Qk5VQ0xyNERoNGE1Sk5OSk1la1JVSlBWWFR6ZU56Z0ZhVTQ5dndpSWlnWVloZVN1VXZjUmtyQTV2UFlCSTBiRGNZeFlSUW54Rjg1UHNUckJLUmNxS2pWWU54aGkraDdSQnJ4S0xzVldjU01YWlltQ3hMamk3Y3E5ZkRLQ1VDd3NDclRnTEZrbytQNFFSZ09nQi9qQy9yQStBQTV1QmFPd0Y4QWNDQXFFbUdqYXdKcGdTN2h0R1hTQi9mS0pKQU5sTlJSUld4NkVaTitEZGJqbENONGpCYnFIWFZvcHh6d1MrRW02TXY3MzRCVStIR0ZtT3R3WXc0c0ZPZk1IYUZUZ2pNbTRsandnSm0rM1dtOUVBcXlRZ0dPNFl1Q2hlaEszZDIwcmZ1QUFGdFI1QjRQZFNIN0g0SCtnUEFHN3FxOFBsQSt4cmpNNGlsY3o2V0R0aTZWRzBYTUQ4MmdjdWhHdyt4Z0EvOXVYQnFQUEtyR1JzUTBXQ2txTmd3TEp5RnEyZTlRUFFtenFmM0lScllSTHExYUFQa0lNYmpXOHc5bkxTb3g5V0VYT0g4K0wzeHA0TWpIOTlUZm52Q21mbGZnS2MyMFRXOGI0alh0RVExWG1YOFA2V01Cc1Z3SFpCM1c1ajdvQXRrQ01vQkVTVWdobEJTQkdjVzUveUd2WitrSjU4SVphM0YwTGVZRHdzVUxvYmo5alI3bmJDRWptZnRCYTBJcUI3Vml4aWt0a0xzYWpKVXZQRk9OZXoySlhMNUhkRGk0ZWxBWWNWUVNCQUVhd0t5RzV1RUlxQVFiTEFYbUFMY0I1SXNNVlNaUm85bVplUlFaWnMrZDdvMVJyc2NEUXl0QXllNlRtMm1RYzRvNlYvb28vN00wc3hBYXQ4MFlvanIvZGRNSVdlcmVFU01vZGFjSW8zMXMyeWh3U0EyUEdZaVJ0bkF4UGNsdjRCQ252ZERVOENXTTBJR0VSdHRnc0xiRVJHZUpoN05RK0ZQcUxuR0xaNlNtMEF5dFdFTkkrWFlzWjZBL0JBaFZDajlWaFNjR1B1TUFpQUNKOEg2R0RXTFpyYlJ3YnFRaGJCVCtVK0pka1pzajF3MmhiSVk3QU53QUQ4ZFVZYkZ5M2d5ZU9hV0llTkIvOHNtUUpVMTJyQVFiMk0zQ0lYZ3pIZklSR3N0ZWw2MWpkWG8vaW13WkRxVkpHNE5pK3pmNXQ3ZjRESzl2Wmk2R3MrSUR1WEdBNkFJTnpCTU9YOWpmR3IzTDkzSEpZVkNzbk52N0pxTDA4VTc3UlByU0VnaDBldHByY00yUXdsUE9DZE1LVUdpM0FjaWJWOW1xVU14Z2kzVmVnQXNYNXFReStzTXBUS3pFMHlDbWxwT2xEQVNnWXhpTGNIWW1SRXorb0I2M2JBUVIwRWpzMTdFM0kxdW5VWEQ3dFdVVDBNTURmTTJ6SXpYdTNSam4yOFBqQ2hXU2RvY0EydjBMUmRZTDNCVHNPVmxjTlZlWGJBTjdxMnQ2VVZKb1lBWTcva1BNU2VhL28rMExkREE1QmtOQmMvaEhETEJMSjU3MkpRTm9ZVHVWMnNrZmdJZVFZbnZCVlFQakpFSkJqRGZEQWd3TE0raDZXVEZlakc2a0lGKzR1QUZ4WVpFemI3QXlEdWI3bjJDeFJGYmdBMlpyUmEzTk0wbXBVdmdCM2pJZCswd0hFYWNEdjUwUlBiVDM1NUxHUXhId1Qyb0d0VEo0MU83b3h0NFhkU3JqVjhlS1lFZThDVzNNZ2lXeFdNVnRZcFNlYUtBbDNRNjdRY05nZnJJUTNNNVhJL2tCWldoRXZpK3BOT2FvZk92ckFYdDRXbDc3REt3Mnp1bER1ZWNIczNqSmhlRU9GbE5lU2ZyRVBWMWticlJmamlMMWVMMFRTQ3pKZWc1Y215YWF0VzFBUjVpNldlKzBNSmNEd2cvd2NFQlMvTzJZdjF0bkdNT00vM1JhK240UktUWkR3UVdBQUQyd3pqcjJneGdMVmpTaVZNakFXODB2cnZIdmJmbjFWVGJURHpWeU1SYmhaQzd3d1Faei9EWlpoTGFUeDFtS2c5R0tDbmtLQiswRFEwS1dDWnBneWw1MU8rMEdSQlZqSk5YQWRtQmtJRkE0L3BDbXdDZ0FoUTllaXF6QkFhMWVhbnZ2L3FxZjQ4L2wvSmpUOHZNUEpsMGZ3NjN3SXBIQnVGbUJSYzZZa0NoY090Y3pzeDNtQ1VFb3FibW9GMUhPRDNFekxqd2ZsNjFYZDBQSXJIa1RFQXlkeDhTc2dLbEh0MTAxMnNncnk5N01NTjExcXYrQldvQi9NR0I3TW9zS09xMllQOFQ0dnFCQ2pWTkhJQy9tSnU4c2xnSitTdlllc0FRQmF2SlBQcWtOTU1HSmxZK0c0Y0IzZGtPMEQ2NlViNGZrcFFmbFZzdWs2QW5SVTFyN3NhVHpYYjhhemI2a0U0TEYrWURTZFo4Z1VCWU45Z1Jld1l6bUhqQW5selhIRUN5R1BaNTB3Z25oTVJXc2FlSDJzNWdSMUFWWmJtdzcreGF2bGIxMGtQUUZ4dXFIVGJKdE9NaFVBc3NIK1B4WkxoRzJKOG5xNzhJeG4xMTZNZDBqUk9VOG1GaEV0dVQyejlzMEpsR1Fsby9yaVAwSG8wdjZJMUh2aE1zem01emlBVlV2ajVzMDQ4NHVxWEZ1akd3VGF3dXVXazFZTGxWWGhOaUF0MkJjNkVId1pTbHB3TkNja09BaTRpVy9CejNoSE9CQWErREE3TWYrVEpYT1h4eTZEOWM1WC84MlYrVU9iRm9ZbHNva2I1UVk0TzI4REVBNkJTTU16eXp2SExWb20vaENtd2hwRlp4VkJ1dThRQzY4MWFuQ1JDQXdGalB0RTF5eDRFSVZDYisxZXZMdWRGc3dMTUJpY2ZzUnd3Q0FBbFFCUDZBdmNNbWxhV2gxZEQ5TEZhc29NcktYUTRuQWRFaUlnaWlqQ0EvUDVhZlY1REVjMUE4bmRhWnJDUzJ0d2hmWWJ5QjFDcFRQd0dGMTVHT0lOTzA0UUZhTjVtay8vcHFvME9wLzFMT05QM1d6WVliSTUySnlUUS9ZaWpiTE5rSnBmU3RKUUJTMk1kdnVXeWVSb2RLbTFqOFZ6c21HNWdXTU5Dc2tEdVBXYVMyeHNQQTMwWGlHckcvWElSL0FPWW9nUE4rdUVXMW9WRDdFTGdCYTluOU9lblljdFdqR0tjZy9VVnJVMDQ5ck9hL252SE8xY3ZPMFVQK0RhY0w1UVhzSG4vOUhPZnBIZy9KRk5qbXVJdjRHMkoySEcxL1RVektUVjNEZkNNWnBQWTViYnVDZWUwMUh4dUNDTzZGcXJkVmNiT2NVQzJKSmczZTFtd1pZa01vQjFFamd1d2pCbWtpZ0JhWUdZMDV6SHJmVVJUdjNFcE9YSFczMTU4M0JVZVBPMkNZVDErWDdQa2hGZEFoSThYeFVqaVFuaDNOZ0x6aUVPMi9tRmVGcjd4cWhYa3I3NDl1TTBPb1FRdnNWN0xORW5aQTlxQ0ZiRWFjejFtSGl4bWZNeStWZVB0N09vRE9ZNDYwUEVmcXdNcXYzK3loR0Z3RWJYOCtRQ1crQXZhd2FqdjM0TFpPSEJOMnpVUnUzdExhUkF2WkJiTWhLbXd6Y3NhSThqRGpqZ1JDMTk3ZldmOFFJL3NLeXhDWHZ2bFltejcrbGp4YWkyTHpTUlpQcHZ4MGJmdExpL09BZS8xOXZzRVZYMnVCM0tOMjJ0WW0xMnRBVUhGMFRzd01KNjJ3dzNSUlY1OFdjOWtqdVpUcG1JcGtDNEJTWVRnUG5pYWlkbUwyQ2pRSzFiaUJHYW14ZDVBTHhOMTJpejhlUW1nSk1OS3BsVHZhbTBBVUxzQVk0Vll0aHhabXdKSSs3Uis0S3p2VDVMbHQ3c1hMdFEwbVo0bnZQQlBsaG1iejJaSStBTXJLVjZEWnJIaEZ2MUkwb0hLbVBRblZ3dGo3dGZpL3oydXpEZmJOb0FjNWcrVHZVYXhPa2haSkFBVENMWWx4WHh5V2ZpVytreklyRVZRQWZyYmpCNWFvSDh0Z0FVZ0lTQmQxZVI5WVhkbkxUd0ZHUFMyNThzVldKWUpnaktMSllvNFh3MFZWaFhBL2hwVmczZGNyOTBYY2dKMHFoaVJoOEUrV2lwVExqT0NTTmVvZHhzTmlkZ2JXOGxxdjhaaW80MFZwV05TeG9Qc1h0azZCSHpkKzJCeWdsSEIrU3ZBUWJhQkc0LzEzVWpUOUFYWmQ1TUlzQm1yZE5rSGJIaGtiOENiejlYTVZHMW94eW0zaHNzK1ZtakRDa0I3b0hNd0dyVGlmbm5CdDUzL2krdzh3SWZDNDViN3k4K28ySlFKWXB0MlBVQnFqb3ZFZmlFcTdDbklOdkNEdkFiOGkzMS9DZ3dNZW12NTB3T2hneXNBdm5KRzBBT1lMZDZYajJ6amo3bE1rTmpIbTFkYlFsbExrVjB4RG40YmRoa25tbytrdG1iZUZJbDVQb3NXUkM2UER2SlRFYzQyY21md0Q0N05xc010UjlTc3haUFh0MFVMRk5qRWZiTmFVTUlMNTlNajh1d0tvN3V5clhRRHkxL3lDQ2dTNWl6ZktRMWZCMGJBUTJiYzkyTXMwdG9STTFSdno2ZTFDZE01Z0ZMUnlxcjdtaWhOQXF3SGlTRDJOT09hMGk4M2FtcmY2a28wNTlsTnltUmVmcFpmZFZjQ2MzMExXd2tsK3VVZ3NVVS9hMU9zOVVrblBXbjlaWVQ5M3ljNkZOLy92TmpmN25udWVFd3R5QlpJYWNFdmxvVmRlTEhSb1QvNCtSZjhCYUtHdFJnTkJNdklDYnNCOTlmb2lJbVJiMDZVTlYvdC8vS08vN3doK0FZVHZpeERyU2E4N2M1RmFhM3dTUkhQZ0RCMnVHY0hmZXlvODdyeEF5Y2E5Vm9oZ2FuVXVvU1RQWkFnblNJQ0VZTmVDUVpaUUhsOU5hNlAvN1Q3ZzBjMjNSbGhzUkRmb1Z0S0VkeHhlajh3VWJOWUpJV2hSeWNCZUJsa2JSRXR2aDlZeDdYYy9JQjFRMjNSVjlRT21kUDZOdDhEMHArUi8yVTdGcCtIcEUxNDVFSmI4WkpjRzhaeHdTV1RLZGhmSzlRR1hxSHBGdjFtU0dEaFNzc01NcFNZeDBCaGgybmJVWERMQlhNd1poNEdjUVVSenpCbmNXQkxzWENubVRwLzBVVThjTGF3RDNpQzhEM1JjdGJiTFBSdG4yTlBhTGloU2pRUnFsV1E3RlFiNzl2U25aR3pkMWx6Y292M09oOWZGVUthdHZWNUNSTm5NTXhrcXNFRzY5Z0NYc1VPVHZ2UHJyc2dIYmErbnh3UC95NHo3TzNEQVdYUVFuMHBXNGJjL09xUnBVNTRsOVBSQ3I4d0F3ZW51TnNWMEF0cnVOS2pKNzRQVG40Vm9iRU1BVUV0OGY0YlJKT2ZKNzBXTDVyQXd5aEFLdXZkclptNWJYaTVMTU14N1dyNDlIUGJySHVaM1M1bGlMaXRvV1lkei8vazgzN0JVaGFrSURaQVZsdDgrRUVxTDcwa3pnR2lqVk5ESG4rVVpaMllDczlYc2wwMXRzVzgyVTZ3Yjk4TDY0NzgzZ2FRUm9tb1ZOaXhBOWduYmdtaWd4ZXZ2QnlHTmR2THRhejdlNUM5TzdZS2xGNkdUU2ZTMUsxdVpHdGhNdWltVlhPM3paR1h3QUF0T0cwNDNTNDRXSWkxNEFhQXkraEpUbWlqZGJVTlZGekhmbzdHU3hhOEdnYUNTL0V5a0pwcVlVZTBUdGdRTldzSGVPa2Qzd3FCdzQzVjlySkpBM0UwaEhvSGJQbTh4UXNadHJwdk9TenZrMmE2VUtNeHVqS0FZMEVpWUpCV0JrUGp6SzJjZXBLVkxLQkI4SzFyUU1wQ01kVS9iQi9iL3VCbnc5WUZ2M2hhdEpuRnNva0F4YzNCZVJmM3I5YnVSbmZ0ZHNhaVBuYmRCUXRSY284OEtMeDJRcE10dE9FUnJsb3dYSmFMNWZJcjRsdFc0Q2Y0S3lzUUJGYlR3dlZ4K200TlAwQWZaaEozUkIvSmZvbnRGNjVwRUN5Q1BBTTd5UTZkdklVSklkdU9yZGhXdUc4YlhvNCtkb2pIaVowbGJESTA2WlVUQUNjYWlDM2JDWVVrQTljQUN2TUdsL0pjR0tiSFFrVCtGeUhaRTJDTGJ6c1hodUdoU0o5MXBza2NCdVFlTVBxOXk0NkJ2WmVGRVR4dzA2SGp2TEIrRTdlUXdwa2ZnM0pHYXhYU3hEODZvY01ucVZDYys3SExPZDBYVEhQcVI1TEpLdllIRHhQMTB5Q0dZWUh6S29hZzVBKzFZUVVlcDhkZ1RCMytZZXZHTjdYSTczZGZ0amxBNmNxSk0wRlU2N0JLcDM1cjFldzYxYzhNdnNoNC9ZQ0JxTWxzQUNEbEVXQUF3dTQwODFWOW0ydzduOTcwcy9lMS9Cclg1bTZHbFJxTGdLMnA1b3dlK00zYVVsTkpGTFNhMVlEZUcrd0crVnZHWTc3SDNtQTBrS2Q1Z0ZWZml2WU1Uc3VFT3lLMW95M2hGUU9hZGZqVzJlM2JKQjZvZHdQSnJtSlZTbU9EYjZYUnZjQm5yYkNiblpYdzNXN1ZrQkdLN053STY3UUZvdEUxSzlBZElPTEhOaFY4L3pUaWpFMThiUEpIeUhsKzhET1NadmtiM3FUWitYQnF0WUJHcHcvOE5aN1AweGtIMlhrL0wxaDNYdzZqRU5OKzA1N0pOblFreFlnNkdCblFBWTQzYTJmYStiMTF4VUYyRFhZQVVOcDUzcExWOTNkZjF0V2VkdDFoVzREeFk3NE5Pc01OSUl3ZmJubldoQldQQmdRUWVBUG9GZFpSbXBqelRTa09uU2xVMU5nc1A1QUE2MWd0SzhiSE5FbHJWcGVsL3pCaFJuZHIwaDU4QU5wbldYbC85L1pLWEhqWWVLb1ZyeFd0SVFpMXNCZWdZNmc3b29BT2dUZGZkTk91Tml6OWFjUTlsQjFVYlR2TEJ6RUFoMkM1WHl2VjU3N2ErQldaRG1zUGRidG14Z1BtdHFBWjdaOEJqMTlWOG10MUNBb2dvOXNGMnJibWE2UTVQMTRJMGJqejA0Q2N2Ryt5cHZnQnRYOEZEV1Q1Z0w0MW9HR1ByL3VZcWJxdFM3N05lZWRXT2c3SWZQbjEvcXJ4aDROYzhEbFBISVlEcG9Ib3ozUURLc0pxdXRSZ2pNZUluVld0cHBRTmt0aGlubm41K1Z3NEJUdVJXQXVjckNKcXRCTjErVTVoRW00Y0IyQVBMTjZtM0tnQ3FMNHFVN2NGNFNpSVVVQnpubGUyNnY3cmpyVndwdE92SWp0dXlmZzdzWGpnZURBR3VHM2g2N0NqdU9SaU5RTzBZdXNaMDM3N2hqZGNXQ0tNMU1RczdSYTRLL2NGYUNHYmdxS1RHTFRVWWJGSTlRYkZma2lWN1BDSm9DTkVyL0ZKZk1LS0Y1YWRsMElKMlV0Y29ETkxPbStLYWk1ejZhY0ZIWHNOOWJlYnhYak10T01DOGNMNTdkSHQ5V1Ezd29VVHNjcGpXZXNJVzJQdlFPb0wwN1ZNY3RwbWpwRzBmQVQrRDdSZldlVXdpWUFYZWh4SzBGS0hKdGNMa05tcWVTcXc5djFBbEY0N3lScXV4a2hOTjR4Z2Vid3NPZWlYK05mRFVxNVRwZXRiUGpaajNlV3lsZWt0UDZsRmdzSEh4aExpOXhPMkJVbi9KckxQQXd3aityb0txQjV1R1JkbW5oUjBoSDNvOTRWZi9MYWp2bmdBMXRlNU5tOUplaUpNdC9sSWEvVlEvZmJXZFR1TUJ2Q1Y5T1dnTUVRdWI5dGcrOGJUc3N2UnhnUXc5T24vS0Z6RGZIMDJ3anpzdHVrbnM1cXNYeEJrOFg3N0FQb053WjRpZzQxRHY5QWZxNHJpWmx0ZkVISkkzRGo1aW1aaldEU2d4Wk5QQjhrN2VVd2I2TjVrODNFQzlKN1lKdGJpVGxjMXhMYmpFY1RYQ29ieUxITjJtelY1T3VUT01sSjlYNXoyR0pRVDI0aEFBV01rQ2JMQ0RvQVp0aW9DSm0wMjRRRnZsMk5xRElhRlU0c01qZ2Nvd21aVjkzVXlOTHhVc0RTam4vQTlnTkVlUno1eC9SOCtNalY0amhWd0JFMjI5UWw2SElUUHVRZ1RtdlNnN1RFdWx1T0VrdW9uQUQ1WUhQL1FyVjV6aEF2Q2JEdytBVHhaN2k3RXdqd0NjREFlZWw1bk5mUU9sNzJXTlZ2TEhuVzIzampqNTVRU1NERG1OcGlLcktlNjZnUjBiTGxCK09FcUJnaDVKSk42RTlNQTZkYXdMV014V0ZjZ0JzWTgzRmErTjF3K1pBYmJOTHVXNmJOQ0xDNThWYlpRcWpxSkI1Y0hBZ0syaHcxZ3R5WWt1Z3Y1c1pxa1Q4RU1PajA2U0F5aTRKZ05pOWJnUXhubEFrbkFOQkNMRzFBdjl1aklHUkR4dXdMaS9xSHp4K1kxYVIwUGorMHpQbFVuMnc2a1FPb1RwdlBESkp0WTBYMXR5eGZnbmNYQ09FenRnSXNBSzlIM2ZxclJDN29oY1IvVituNThiTWFCUUwrZUlGbllwMjhyYXdzNkFHb0xxNDhWQW9kZldscjlFdExIUzFoNitKMUY1Z2J2djRpRGRERGJBUzl6U0hZeXNrN29BQkFIckFBVnhjOXo5UkhOSzRNVnl3dHdHTUVVQjI0ZkszU2Z5VWgvWFZONmJ6RDJ4NVhHTDBMQUNseG4ySkpWYTVoYXMwcnJWM1J6NmwzLzdjdkcwSEw5Ynk1NS9mT2EvNzlkOHZxdkh2UC96U1d2Ly8yYnM3eW9JaVEwWUc1dmErS0UwaWY2a0g0TGVUY2NuM0ZJSno4c2crejMrSS9ML0N5SGN4Qit0c01zcGUyK01QZWdudmZmNElCVHUzejkrOWNOSHYwWEwydWRKT1lGTmQ2SW81MVV1ZjFvMTdMTTlBdVhRMXVnWkpnaWZDZFcwTUxuUGord0lod3BoMm84aEhXd1pPOVRGRzFtMUNUb2gwUVR1RFdyTnN2VjNtMFBLZmJ3WE4rK0tCenhySzRab0daVnNEVWVEN3V3d3B3T3ZVR1o0SkhMa25qMFJraHM2T2I2Yk9iN3JIVUdXNVNCWmRoV2d6Vjc5RHNlYXhzVS9PSXgzVlp5Ykl0aGI5dUJIUDBSc0RtZkk1UXNxMzd0K2Zxd3pSbHNpRU5FeFpKOWF2MTVMSVFBRGZNMVRNb0NobXJQN0NmQUFuNkdtZGpFNmJTRDFDOHNhSWZEdEZRQ2pPMFdqanREN3hqT043ekxyakhML1lKeE5TY2c3UURnZHZyTTUydzE1MDdBQ1pwZ0ZPV0hDc091b2cycmVPelA4SDg1MVpyUkJ1cGttZlZuZGFMZjFDZERPNUZLeUkzSjB1L2t0aTRXQzRNSjd0cXdTQ2lDcHNkd2RMRjB5ZGk1ZnZmT1Bwd3pZWkJBOFFrSXlDNGwyeUFDSGlHWXA1MW45bHEzbFg3Y0VrTXB4YlFxeGdkN1RxT0ZKWHF1ejBrZm1kR0VBZHoxY01ySG1Ed3NITjZQaXVUdTlwOUNXTVR4dzJWRDdTUEdaanl1WlJVR0Z5aXAyYXcxOEFNQnAxS0JSMUJFeGZDYlZpQTQ2ME1PdFV3YWhWT2ZHNXpmeGc0bm96YVc0UzRuN1NRTEd1eFVqK0FzYlBOdFJRcStyRDN3NHl2Y2dvcVN3UWE4VGNUeDV6OFZvM3NzaWRadFlNT3hwSC85emZPNkc5WEpmQUJyS09kNisyazZaWXNGS2pmN0J2QzBWdWl6TXNRYVZZQThrRWFpMUUrdi95ZmEzV0JPbU9TTFR6eTdDRS84ZURVVGRJb2pxTW5tODQ0b2djNWliYUJCNXlYc2FmOEZQZ1hRQjVKdXhyVGdDcEs3NUx5T2poOWErOHJZb3duS2YvS3AxRWdXUHljdUVSMWpneHFuV0V5ekJPZENEV3ZZY1U3ZzlUd2gzUlUrTEZWMlROYUZsQ2MyNjh1SHFZSWRkRitESFoyK0g4QUdqSlljdW1tRkRSNThkaE9pZmhWRDRyZ1pOSW1kWEpkUkloTVFvSmlOWEgydnBEbmV6cjU2NFg0cVYwOGpBNmFkV2NXK3JGU2NGS2dERFk1WG04NDhLdG1vMzlkT0k5ZDJMZyt5REw4UW0yMk1VMWI5VDIydGc1ekEzTnpsRG1YUDArQTJzSm1RS0d1ODlycDBxOUFqT09aR0pleTdHTUFnZUpEQk1yRzNSb0RYV2M2RjNmT2t1azl4Mk5yUG1UbGtyUkZZNW5MU2hma3RMckRoZjFnaVVLdzlybzRjYWxoRzdNOHdDZ1FZU2grNkQyMWgvZXhiQ2ZZSll0Yy9jeUFYYUJMLzBFOVMxcENWTHNGYXRXTE96NVJEd1ZhY1VZZjlPZldkSWc2elFRc0FyN2tyZ0lRU3gzVmluTEZZQ2RydlZjbzlmRzNjdUhNRTZzTVhpZ0d0WkFWQWZENlFyejBzNjdTUGFLakdyOVF6WFRhclpYWUJPOEp0UnNDMmQyZmcyYTE4UTFidGVVZ2RDV2RKNFZDQWJYOFkyeGttcnFaTjJQWTBUMlMveUJtN0J1RjdEeDU2TjRza1E4NmlWTVN1MktqRm4vZG9MTEp4TmlObnA2TXBuNVNNYzBDUWJKaHFzTGJ2a043cWFLVDFhODBGOVpuWVBKTTVXalZkbWlIaG5aOXZNZVBud2xNYmlNYlpjbjJQeXdRZTc0a3ZOblE1MnNuK081M1FjVnRZQXNjRWFwNHNjajJ6dzZ4emN6aUYweGpPYXcvUktkQVA5SjZqeXBOWTUyVTMxUWpsUWNTeFRyRWt5M3B1NzIrRjZQUHNXakQ4VHJsN0xTWnJ0eE4ySHJqdGRhZmpEOHcvcnoyanRWSGR5SEoyaGw5dXpuY0tSVUxmVDVrOWhuangyZnV4YlBpWmhnNmM2d1ZkLy9uWGVpcWJIY1ZoNGVkbi93WDZvYklIKytiTFk1UHhkNHZwSFhoMWhpZ2FIclZjMDBMQ25pOVhKbUVMTS90dWJMTGJPM1Izakk4aW5aNitrbk95N3V4a3BGaDRHMkFKQmlvNGQrcEdxODZPTDltUlBkWTJDWmNQVUFwc3hySWo3TkRLWUVrR1BoZGJiVkhyTklyOXZwRnJwdllhY3NDbFlBWlJaQnplWllrUUpwZGZ4dGp3NmdnWHBEU2JjSXhBR2tHV3lRTWNFMGJXR1VkTGlldDJMeUsvcVpyRFIvaXZIdDlqZDRXRGVWdkNzaHl5ZGhlbkZqcVdZdHNEOENDMkdhWTc3YWVQMGJHTUZpZmFBWXh3d0huMjlTVEZ5akkyUXpTdlJhWld0Rm5aQ1dNNENWVWJIeHpYTi9NTkkzMnpOWHhzMVQ0ekcvakJidW5tbGM0d1A3dVRMYUZ3N2hsTDU1N2ozblNNZkF0RFllVXNpejgveTU5NTlPZU1UMFRScTJsQVRFbTRGbzZuSTF5aE8yL3FQVW1KOVN3c216MkdUa2VDN1V3c05zNGpXcnlhTFVhU3o4Q0Y3REdjSnJYTGQ3R3BBZEVjZkJpY0JTYkFlN0NyOTJtQmdKRGd6c3prRE16WXNsckRNa3pZQ2lKdWxHd1lZYWpXS0Y3UjhaTnZTaE5ZWkRML054Y3lzcW42S0EwbHBGdWRuZlo4bmdHZ2IzUk9TdnVnYXhqak1IckFGa0pGNFd1MzAvdk1pZ0tnSDZqcVowc00ybXdyOEdPc3pDNzFZVkwyc2ZZcjVJN1cyNVhpNEZvTWZKLzlzby9Ib1c3UStmS2NXQUsySG5nRkZIbzZjbXJMUzNSaURBYnZVRFU4OEl2QnNzRFRFR2VWUXUvMlh2OSsxNmM1akxLT3YvYzhmWWJtWS95WGovNzZzdjc2OEh1dDk5ZFcvMTkrMm9vMm0yWWNzMkUyMFhtOHVNOTlPOVJnUkl4TGV4elhZbkVGRmc4bnNqNGhweVhiKzFFTllBc1pmeUJCZk1kVXV2bGpPa3V0bWpVQnlpS214Y0ZmcjlXYVZlTDMzZFZxSmRDUVBQcUhqZUtmUk1GcGRCSENHN2RhemFoc01xQUVORWgvbWltNjRjaHBFZ29keHVVMWg4bzR0Z3RiYXhjTUxtVmJ4QnJBUnN2ZWRXY1VtVmQwMUlkd3pFbHNnRmZuV1h3dmJKZzFTaFp4T25vRFZjZHZPNW5GMnVRSFk1ZjRGNVE0ZEllMTJnem5GSVc3Q2cyUkhUNnpiS2kzY3ZlN09tNmt4dGpkVkV3Rk5sYWh0b1J4Vmt5aXFmZmRINU5od0JVd3kwUUhUdkI0MkMyQnA4cjJaMktQQnR1R0dSeU90SUx5eDlNeVBIL1ZNL3V6RUZLSkY5Q2VOdlAzaHkvdE1NZ3NPOHNhdXBQYS9vemsrWDNpei9lZnZ5N1gvMzQ1bkVMOTE3djU3Yi91ZGYxdTl1OFgrM096WVp2Nys0QTV3Vm80R0lDNWZ0WUpldXUwQUpuUVFjRGJudGVmQldubHY3amQvKzNMT1hYcE1tZ0pLbUdsTFRIRkJtbGZJVWFmVW9WWGhoWENYOTd6OWRhSHhjdERhaGxQL05GUkRUZ3QwL1NuZytZM1hYU1YrMDlsSms5d2lza1EwMU95akhNM0R2NENjRWM2VVQ0SDU1bjNodUZhSHhGUTJwRk8yV2h6dUZKQ21VQjNUbHZxanJMVTRSekFQN3M1cVpNTWdQMCsvVFBiWnJldmRSdzM4RHBldTZYdHVCSHMyRDZyMCtkWmZOdEsvenpzNzFGdDFYUFNiOVJsT2k4UWQvUmFaZmZZZkYydVV1dVlaM3pVdkUrelROb0NNajAyUy9Ic3JrNTd5QU5vQlB5NW5hV0tBWWRBUk4xVy9jZmNFNUQvZno0SnBOc2hLZEVaK2RCdWEzdUxJZG9jMFhWbllCUTBKRm4zWkozS1owOTV1OEJMdnF3ZUlyNGlIaTlvbThuRWJ5WlRKM3pNTmlWOFcwTmc3RVpYZEVhTXpaejN3Tm9Laks1b2JNRkptTmIrUCtBU3A1YzBwMDNNRklVV2svZm9qNjIxMVhHNElRR1FNVEh4VkduZzI0ZTlmV1ZjajhQRUJ0cGxGQmlvYU9VOGZqOWhrbk1GYTRyTnkraHloZDEyY1p6U0ZCa2tFQjdvdEk2WXVnMjBsNjFWM1NZQ1BuMU0xWTBuZXV4bTQ0a2l2aWZ3b25EMTNjTnJ0UGdkQ2JyanF0NE9jVmI2TUV0ZnZZenpucTZ6eHlwSFVLajFuZWNnQ2V4S2tIL2IwZFFCR2RaSlllMTRUSStYZURCM0Q4NFhSODRTTFZURWRBQU95RWpseDRJRGNhM3NjOXpGc24rVEpjTTNkU0hDVmdhMHo4dVNRRzdzU0lSL3pDZkhIVG1rQ2NDNUNqemV3WWZnRjRVa0d2QTNiZUhJamZBNndoaDhVUjF1QnIyMFFMSTFnS1V6WCsxcnR1M00rbDdBbzUxcnhyMlg0UkNibzFhUmtiWHhxNlJ3dHgzZmhDMVpqcmJzTnQwNm1yVFpKaDB1eHgrRWhIOEZJSUlDYjhlNkdNazRKWW94T3hrSE1IVWI0clJyYWN2R3JCaDZQV2pEZ24wVERFajhoWVlYNmJNSldyTVlDM0wxOEdKcERJY0JZYmQvTTZET2ZJL2JRVnBPWWdOUVNIWVY3d2VaMzIxZGRhK1RSbmVrS3B3ak8vZDFPRVlrdm80RGRoaitHY0UwbnJ1eXVHYzJGb0RTc3JFNzlacWxXT1djd3ZEdW5PWTRNeXV6Zy9HQmF3cmk0OXptTTRoa2xGL2hub2JVbUlVc0h3UGd6Q3pUU2hpQ0JkRy8wRWhRSE5UVnVUWkNuTGFQVmV2NnVYUTdadjZNZVYrMnpmSVNvaGRyWVZ0M0lJS2xhckJLUU9qRjdqZHNlL0pKSC9reDkrbmpjZHpjdG9LRjFUZVNid0dVbHNpQUZBcjhtQ09icG9ZN3RBY29FQzZQNG5BNmh1VU1wMVJTWkF1MS9aVk12R2N5N2VucmQ5YVZPZW5sK1EvUVFoN3RwSHM2M2hZNVlkZnMzT2UvWmJNaVVtU2dXQzREL012Um1qaUhYNkQzMzRrcjZWSk1YclpTTEZnSzFpc2lzN2tEajQwN09rd2hPQml1UUh2Q3llTTVvVUxzYW5IYVlndWRGdkJ0M1FKN0trVnZUdGlTK0ZsMnM2NWRtMDAxd1JqUDVIbWR2TXVsM3BNYmcwQTUzVzdBT0RxSVk5b0xFZ3pXTEh2Y3NqSzZNekFBOGJvOHJXR2lYc1ZoUGdrRWJsMHdHSUdmZXUzOUErdEg1MjFpRHI1cDgyTXBnaEVicE8xU2JiYVBhZ0l1UHBIbk5LWGNuUC8rQXZkWlVaT1EyUTU5RkhhaDNFdTM3YnlRVkxjUTBLNEpHTnhmWTZzUXlQYzR4WDhiWFNVN05nQjVCOGRRMkJ6Q2wxOVgzY3dvUHRFQ0IxOCtRVTIzU1piM1FsOHcrc1d1SjI5bkhhd1RtQ3Mrb1RrWTM5Nlphbitla1JoZHExMzlheGd5ZlMzeVAyVk1kN292MFZabDI1MjZaZ3NORXE4WXY2ZmRhVGszeHZPRndxL0JIcVlFN0YvUm1oU25POTlHZmZjSm4xeG85d2VOK0R5eUJXenMzTXR6cHNpWG5taVJxWjBrMlJkeXRONi9KSU50NFBubjlLcnJIK09yVEtEQ0dUTmNaN0c1RGljMC9HWHp0T2MxRkN2MStNNjJKZ1pQd1FaOFR0UnhJalFPTWJXckJBczZZTVBmVi9LMFlRN1NaOVExc3owUTRyVTEzcGJPSWsvd1hTRVFLMnByRXR1S3ltcEUwYXpMbWNlbWltNk1xSFBRVVN4Vzg4WHJZYXUxTmRHT3U1NHpNb0IyczhBc1ZySGJHR3hnLy9oSTR3TTJYL3pFYmdXS2R1YnpXbklML3d3NHJYTEdMNy9Bc0FhWUZacGhvOGF0TU5ZRFpYRzJSbEVRUGxCTHV4eTFaVzh5WkhwYlhWeFEvU0JjeXBhL3MvK3NpaTBzRStWenFJbmlzazlTeldCeGMyZzRPajQzMEs4dHkrbnRHSnlXN3o3T3VMVHpGbEtDSlBkamRyR1k4ajBFRmtwNFc4Z1c3UzB2ZGpWYTd2YU9LNVpzbDUvbGx1WmJMVnBIc09wdnN1RnRkR0hnWXZDZEd2Y1puWmRUbkl5UTYzSTlUd0pOWUFpbi9aTzZPeGxkMFVOVU1SMGE0dWtWUnRxR0V3YWhxb2diemdRRDVLRHc0V3d4NEpLalZEd201REswLzFpdENUTTFodWY4VjR3R3JBVHFZRDdFNmdOKzJxa2dIbjZ3OW01TlAyREdIblZQSXpqTE9WOUdjd1ZheGM0c1h1ak1WaXlDWVhTV2wxL09tNjFPbHd6bU1UM0lZMkp0YnE0TWppcFlhUnM3Vzd5U0pjd1dlM2dTVDdkZHhxNlp6d0pCNTc4NzJEZWx6MktVN3FCb1c1Ujl3QVlROFpBSmpicnp2TDdMN3A3SE1qOXIvZTFZemM1dEJrTHdBamR3eEc1ZTRLVGRjZmZuREJSNzI3TnMxK2trZ0tsbEZ0U29INUxvZEhlWVBVNDBPZXI2WG83ZDRvR3FJNVFNNnpsVnhsWk9BRldRaGo5dnFnNmpBc0tNQVo1QkNLOGNxMVdqeDhyWkxmSXRwL0tpQU9PTWREemFuZnA2MGpUZ21BcVFvempVeXFiRktEY280NFRqcjdnZE5aUkFqc2FoOENHYU5SdjM3UFczMHZhY0t1QUV5Uks1UGU4ZUhndlBEWE8vNGJSNG5ua1dGMGlNYStOYnk0QjB6MTJ0ck5tMm56c2tKWmorQjNJNXU5NmhQOWlNZGlZdUE4R3JVME9BQVRycVdmQnI0Y25HK2ZjNlJYK2FmRmJsekFGd2hEbDY1VVNvOGZvc3phbGMxZW5IajUyY0Uvdm5SdkNDa0pyUFNhTGRDYjIydy9NR3dlZ2g3QmRXL3N5RkZZcVpKV3ZsMXJ3NnRON0RFU0FhcUtiOXBJK1R0dU80VGtsalBpTnRlWFVIRVJTN2tzNEc4TXI5eklYVVRPOVR5K0dFdDJLMytQSzRCWUJJZXZGdjBJUExlcGQ1NnRpc3BrQUZzeGwyRzNpVDRjVjB5cDFCeUtjMXJoZWJHQjlyMkVHK2lBWXdydDVuY1AzRmF0ZzZjc1RaZXEwajBGYk1taWRxdi9USmc1Zi9qWjArRVlwZEJ5YkMzcHUvNmNBRk5NaE9ybkFvTzk4WTlVRnA1Nit0KyszaHN4MzgzeTU1M01XLy9CVDdmdjFUcUo3M0RoV2M4WnRmWXJGci8vZEw1cDlYL3R2UDhQUU94NTdyT20yVCswYWRzUnRTYXRERnVqMW1BU2NkMituelg4dEoxckZnWHUvOHBqUE80SFpHbmJPajJqaHZlUDF6WFg3dktFUDlQZS8vN1BtdWYzM0FmenhmQkF5MVZSeW0rOEFUKzJ0YWJqdkl5bXJoUTF5emhXVDNoSGdIZSs4dkovYWw5MCtiMTlFV0RHaG9XSC9rZStVemdqd0Fkb0tSR25iOUhJanpyQytmU2pxTGFDTlE5SmtYWnFaRkIvc3VvOVZuTXZqNDRFZXh2dG5vZkxVa3NaME9pZ2VOeEZuRFJEeTJCMzY2ZktMNkZ1Ti9PTWh6Um9VejFWeWFOTmc3UU8vZVRwNWo5ZTFYckxhaW53cHBpRVVEbmo4TldqcjBmYzE0Q2N2M1hhdlZYNXYwOTF0SUNhN3pVREl3ZHd0T1FBZ1RrUWQvWVdxRFhadllrOWNSQm1VN1IvZ0k2YzBhbVd0NURFenY0VFN6d0NxaXN0WWJCdE4vTm9FTmNVWFZ2d1duckdFZnYzNDdGTlFSY0o0MDhhNXdkWTg2K3V4ZjhBWE9tRnZMVm5mdytKM3Q2ejZPdkhNMmNYVjJKWllFWUx1YUNuZU9IOWluRmlWZmxxUGFUSHhPZkxOMUlOakNid0lFUGJmMGZ2eDY1K0IybUNzc2tvWFJ4ZXBRNCsxR3c5S1JLL3Y3djl1aEl5ZmJ5czlaQldqZm9xTVpyQzJ3V1QyZlV5YUgxWFZPLy84emF1V2NKWlp4cGUwdDhiSVl4a2s1M1FtNU5pVG96VjRqTTdnQThlOVg4Ni95b1FBcU1xK0Rld0wwSlBzRXVBTmMrbkd3OThVS2VKbHQ3UUUzUDRPeHN6ZCtrNGVzeE40aG1DRjNZenJkb3NqOGNadnhXRnp1WEliang1RDBxenZHY3o4bmlLSHZyVGJtWkxQaWJNd1pNbXF6VGdkYW9uUUJSdW5vM2Y0NlhkSnVtbkRuQ2NWdFRxdCt6VkRKSGVNYWhqeUJkZmFtT0VqUUdDOEtnVm0rMjdiY2FscUNPVTVlRURmYThSUEd3aGNvK0tyMXpJYVlRcVRtQ0lPMnh1TkpLZklLbTVReEl1MWRIdGpscVZGRzBJeS9BL0tjTXhWQ2RneUVzUkdXWVkxaUF5dEs0OFFBNTQyYkM3WUxZTnRKNkltWXpkUFdLamltQzEwZGlyZXNLM0RlM2tuSXdXblptTmRZemF0QnhzRkJHQjE5WlFlM2pYek9Gc1dGaFhQZ21BSFdSekRrbE9wcS80NVRCVjdJU2djZTR6bFhPeHJ5Wi9TdXAydkFkeE9BRU40SWJ1RkMvT2NjRFFkY1BMMm1hdU5wSHBaUVlRWHFQblgrc05nejZXZTlEalRCdkw0T0VKbFEvV1dCOTdaSFBEbnUxUW1tQTlLUDZRQUNkdFlEYWNKcHJRZXBnRUpnOUFLSUpUc1haTThITjdsZ0pVOWU2RFk0eTVZK2JMVEhVRFJQV3pLR0hIakd4M0pwUWZaMndCaWtKanRFYm4zT3piYkg3QTdiNEpQUkZkVFc3cmxselpxSnc1RnN0RHZiOThEWlBCT3c1V2p5MzlOVjJEVTczTGVueGxodzRpR3NPem56RnZBeUVCM256TmdEYzN1Y1hDLy9NZ3Zid3FZeS92VFRycitaczV6Ly9xMS8vYzRabW1uYTBJSFl3K0Y0UzlTUXpubHNGakpWcURrZ3k1NDlKMzRqMS9FYzFWTnRRUnVucmdZaFRzbngwSmJjSUFqYjNyTFZGcDdmOGV6RGFjVDFnajBEOG5KMElNWXBiYkpMNVQwWmlQa2pkdUNrLys3ckczUUtDYXM5Tm9jcHNKbzVRSjZxYzJaYXNNRTZ6M040MFd0SU5XRzduajRkNjNwbVROczBkUXBJbXhYL0FHOGUrWWtYRnN5dzhUWTFmbHNOOWo5OHBtS2ZmQndEbXJXT3EwcTFTcThmRUplZUZ4S0FaUTZ2aFl5ZkI5dkJBWmI3MW9LVkFsOHpjT3RKVFhaNVBFNFp4b1JYNnlLQTBtMUQwVzB5ZDZiU2lTTFhYMlRZczI0TVVuaTRubU1oNDVsWWdwTjBydkNKdStWd3JZVjdtVmJvTzlvUjhaaXY0WVBxcUJjd045dDRuai8vNmEvL0RRYTNtZXNjOTJVbTZNaEx2STY0SEdGaDFmNHBTUEhmdmk1OTNicXFmQkQvYTBHRFZZdFdtc0FFZXJ5SzNTZ0E4d3E3M3NYSTJGcWVCd0J5SEE3L2RDWXpiTTA1ZG5Za3hOcUNuaU9ZK1JlZFA1S2hDSVc0TmRyc1dMSVlmOGsxazNOajJWL0RpY01tdkEvVzBJMktuS21yd1ZybjRyRmNGbEk0SWVXazFhLy9OcS91bVhiMllldTRVWWN6a0FvRzRsUVV5UFAwRUtVQldoU000OFB5SmZDK25VeGdCYmZSUUtlZ3JlbjhTNk9aZzgxM3FMZVZMdnM5YzZzdDA5SmFhRS9EbTlGOVF3WVhNS01EVENRUWNMSnVJSEtoaFBtdVRsVi9uQ051QjJIOW5ML0V6MGhMMGpuQXprSG9BLzU5ZzRiZ0ltd2hPM1huQXVwbzVuMC9SMTZCTlp3VU5rMEdkU25lNjd3TFJKQTEzQVpyc0VpR3J6M2lZSUFzYzRjYzgzT21ML3M5U21HM3BtY3VuQnBtMkxWSUJhdmxxWmlJUEk2U0hmSGNTS2crVHN5bXJWR0h1WWpud29BQmNZemRMTlNnVFV3OHJnL28rUzRMOFo3SHR1bmkzTnhzTyszbm9CZ2I3eXdaYm5mQlRCZWpwL0IrVEthbkFWVHJoTE4xRS9HYzNnT2d2SGZGY0g5R0hFQmlXRldMV0lZRDQ3ZERNTG4xNjdsTnNFN2VCRjJ6dkIrSGV0Y0tCbkcwZVA4OHhJN25OR2NUbjJkWVovZm55Q3VQd29IUy9zN0lhcmdvdytYaEhKeUVxN0gvKzNNTXR1ZXdObWUwNEM3UllLUm9mUlVid1NXZFUrUVl6SEp5TGE5aHlBekJCZTE0RWtPdWwzUEhXN1dYd25sdHJPOEh0a2FlbllrbGxQdHpHaU9nRVE3eDA3eFBMTzNRaG5lZHpqbFk1MFQ3YjRQbU94NmxnZi85YjM3VW9IWTk4WVRxSkpYaWFXZkJUbmRXMU1DNFUrNnNuSmJtZTlBZGd2NzhBTldOdEpuZ0c4bE1DVnpkbXdIdEhBRXp6bEdScTZEWW9ER25ERGY3MHhNd3FZS1FuRFg3SENMdHlOSzdmZFhUT3owNTljeDNRZnJyY0R5RGRyTEFMSUQ3RGxENUtydW14SnlJaVpUSHMxODhaUS9rN2FHNHcrSCt3U0ZMOFQ3Qmxwb2R2Z2VLVjU1UGR2QnJUcXF6VzB4bzRQUzY0Y1JGRDBldFFLSzZQQ1BTOFN4ZHN1eXI4azlBaFZVL3ozMGFBVHlmMDdwNGJFbnY3VHFKRjlDbGcyYVZpZWloNVpDOVIrb3ZCN0RCQW9kUTdIQW8vVlFhMjBKbDFROG0wSEdKU04xYkFLTnJuek1ub0dCQi9adU8vQm92YkJzRGFrMmRaNTNZbG92aVBBR2kxUDNCZGViVm9qT2V3NGJKYTVmcC9qcks0MFFLWE16ekxEM2RFZ2tKMnUzYVQvWXpkclBsWUdnd0ZKL0pmNTEzV3IrVCsyK1hkWUgzT2RySEJLNVJUTXUxcW9uaVlEdExZVjJBTnBESUkySi9CQXhrekZZYmN3ZGwyaUNZRWNoVHNXODk4ZkFvd0hsS1psNm5IamhRRTJWemlwNTl5UkNkZld1dHYyakY3ajZObk5PQmRaQ3Zqb1hzdjRraHk5RVA2VitWd29nL01CYnoyNm9IbW9KYVdjRURuVzE1bFgwWDV6eDdDb01UYjA2eDJZdXVCeVVWTTJ3MHhWTnVZckFGclZycDQ2a3RrQWZyR2YvMmlrZUhqZ1pkOXpsQ3B0V0Q2SXNUS29LWml2dmJ4VGtZY1hoZ0FZVFVIdXZYOGRlNWVBNFpodFVVK3R4V2lHREIzOHVXQkNkdzJXdDc2di96TDBiQzR0WlFmMlhwMzUvM3p2aVArRHBrT0dJYllybmxaZjEwSHEvTGcyWFFWQ2ZRVEg0WXhGcXNUNDIvbmhZYzFmcmZYZnJrcllLRDA2OGwrTFp0QVJpTU9GcmRoam1ZeDQ5NTJOQTU2UTYvRmZSWDVvdXR6RVB6RFZ4Q0FZUHRPaWJBTDMyQ2dTZURqWTZiRHg0UGdHTENjczdad0k3QWZEenBHTFY1MDFoMnVLZmJ3ZmJ2OGEzZ1c2aFdIRmM5N1dhbWRPWHlSVnhjelMzb2Y3Y1ZFY09od0NhMUM0N0trNUE5Wm1NYmdCcWVWWHNMdWt5d09ISVhMQ243aTZiY1BxY3RHdE1zUVVwMFRpbHFKNmQ1bzMybUl4OG5WNWFENWhIK2FJTnptUFA2cFNvRmFzSDB0Tk9mMDJEOWxxTjNuZEViNHpyVG1jMnN0VE9ZelVEZjQ0bW96aDdwSnkzem9tdmpOdDFqcVdKeGlxT2xNL3lZODFNcUsvVUFwUjJtV1crUHV3UkhGRHRjQUJrdGdmZGU1eUszUC9OcWVVaVk4TW5Rek5TZEMyU2UrSDR3QUx1ZVNQR011OGJrTWI3WkRCZU91bnFlRk16UU10MTRDbUcrQ3dkV0grY0N2bVUxc0E5NDJuNWJ6MzUxdk1BNlkxdzgwZXh4TGsvK2RWTThmODdWd3NCdFQ2NEJkRjFXVE51UTcvR0FyTE9UL2ZjNUhPWjh0QjYzUEpvbm9Kd0lUc0M3cjRvcmk1NTYrcDFScXg3TW1PRDlWckZBUUowWGpiZXlpTC84VFMwOS8vdUZCTWZtYVFwT2RUUUVacU9EU2Z1VEVUeERVQzlNakdiWmVRZkl5RzBGblFPbUhIYTBUenF0NU44NVB0WmRGYWVzMjBING4vcC82VUtkby9DZHZQM2ZLODNmWnZBV1JITGFCVDNsN1UzNHhWb2RURkE4M3ZKek9Qbjc0ZyszWi9ud285cEtlSWhkM2s2VUN3NTl5MGlRMjQzOFZLTXIwMk5Wc0g4blR2U2UwN1doQ2oxWURjb25ybmhxVFpEa1UzblRuWjU0c3lMb3dMelBJUU9qMlc2SkVFOG5LTnA4YjNHeUliYnlPRGtaaGdEb1NKY05MdGFQV1RtMmh2UGhrc2ZrZ2FFZmg4TUhKNWEvbmdyNjJnemRuTzJwTDNMNnFSV1lucldCdkVIWDM5Zmp3OFR4ai9OOCtSbW5PK0NJZGFaVzdLN29zTTl1L1E0Tyt3WjJPM3I4T2NWeWVBQjJhRHBNNERvaEZBQzUrR1U2MmdGZzViQWdnOVBSVThLRHh4RTUvTXpEVDZ5dGhPeDc4dDN5YURsSWhBS1M4UDAvMG9LY04xTmlnR1pEMTJFNnJjYUoycStORGluODh0SDJiaWZVOFBXY0tTdXRjZVhKUXVkUTdzdGNkUXdaMW0rZWR6aXVZdDNDUWp2UkRldWJLNUl4enhPVHczMldPVEFsb3g4azBldUlLRE9vMXJNU2tXWGRUSUZJMktsUkRKbitDaXcxVE02ZTN0RkRmSzN4N1JhRWJ1TUwyR0hrZFR2MHNUblo2ODlrMDduUElYTWUwcERGYUd4ckd5ZlZoS2tmMjlsbUVtalBTMHltZjh6ai84NDdBdXI5WnJLOEMxT0JlUzJlK1B4cmdiUW1wSjRobmtYRzZRR04xVm5pRmlaaDRxMW1mbXgxeEtmYmpIUTZXS1pudnp6YndWTzRqVGVlZkIydjNlOXdzdWFPbnJSb3pCU1Z3NXo1VEE3QWh2cjFnOWJ2RHlYRHRYbTJXSmFZcHRrU0Fvem1PdEhmRTZsTjRRR2x6cEZHTnBRQTh5d0xIUjYxM2gyaTNKNXFzNEg5V002cmxXQTg1dDNSeXhoMlFHTU1uajJtRHgzUVVCMmNXeXllbHVadExIZ3pjZUV1TzVEV0pDT3N0bDFud2l3MjIvTy95K2U1Z3ZhTlRKZGx0R001a2NQbjlJMDZDT0oyQm9PRFloVE5aRnZyT1FzbExZOXlhaWY1eDI0YVhiSHhxV25lVHZyT1pKd3pSdFhZN1duQVZreGdFdUgxL3RqZGpWTGpBNnRERkpNQmJxOS9oMk1oRHBIU1hFSGVsdG45bU01Uld4N0F4TDdaRzh1NzJyaWhxelljdWJIMmw5VWVyem56Y3pTOURHZW5NN2FwV2ZOd0NsZFc1elhmOTNSOFk1RndtZG5HRzZPQW52c1R6N0hmRitUTmdqVkxTNXI4SXVPNTd6dzhkQ0pqNlJaYllDVkZFaDA2K1EwM2pYM1RJWGd2K1pCZHA5YXd2eDdlaWcyd0VNYUtKcnc2VDJYMGRGcDMrbVhyWVQ4dUNNSEN1WmZsb1IzWXg5SU5aVDN1Z01uVHkwMVlaOTc5NE1udTVaRVlDSUJ6Um9Ta0ZtK0pvTGZGM0dkbTFobG83UkN3dXM4QjMxYTdsUFpkQVMvWjdNMEtUdHdkOXpuc09WblR0RHpCUWpWOXpDdWJFblM0UFBhZWIyZUh3bGI3MTdPbkZmZStMOXVqSFQrRjNtVlAzK3JPQnZEY1AvdFh3bk1PVlBMUUdBOXhxaWJnMkYvSlp2ZkllZyt0d2F6cGY2NXpMQ3JJNWZyL0FwWVRxQThhSmVyWUFBQUJnMmxEUTFCSlEwTWdjSEp2Wm1sc1pRQUFlSng5a1QxSXcwQWN4VjlUcGFJVkJUdUlPR1NvVGhaRVJSeTFDa1dvRUdxRlZoMU1MdjJDSmcxSmlvdWo0RnB3OEdPeDZ1RGlyS3VEcXlBSWZvQTRPVG9wdWtpSi8wc0tMV0k4T083SHUzdVB1M2VBVUM4enplb1lCelRkTmxPSnVKakpyb3FoVjRRZ29CODlDTWpNTXVZa0tRbmY4WFdQQUYvdllqekwvOXlmbzFmTldRd0lpTVN6ekRCdDRnM2k2VTNiNEx4UEhHRkZXU1UrSng0ejZZTEVqMXhYUEg3alhIQlo0SmtSTTUyYUo0NFFpNFUyVnRxWUZVMk5lSW80cW1vNjVRc1pqMVhPVzV5MWNwVTE3OGxmR003cEs4dGNwem1NQkJheEJBa2lGRlJSUWhrMllyVHFwRmhJMFg3Y3h6L2sraVZ5S2VRcWdaRmpBUlZva0YwLytCLzg3dGJLVDA1NFNlRTQwUG5pT0I4alFHZ1hhTlFjNS92WWNSb25RUEFadU5KYi9rb2RtUGtrdmRiU29rZEEzelp3Y2QzU2xEM2djZ2NZZkRKa1UzYWxJRTBobndmZXoraWJzc0RBTGRDOTV2WFczTWZwQTVDbXJwSTN3TUVoTUZxZzdIV2ZkM2UxOS9idm1XWi9QOGE3Y21MdzBYeHZBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINUFjQ0VDUVNSMS9VTVFBQUlBQkpSRUZVZU5yc1hXZDRGRlhidnMvTTFuVFNFd0pKcUVLb1NxK0NTRkVzS0tKK29vQ2dpSXJTdXdndnZTZ2RRU2tXUkgxRlJJb0ZDL0tDZ0NDQ1FpQzBrSkMydThsdXl2YWRjcjRmT3pOc0dvWVNpdXh6WFhOdHNqdTdNM1Btbkh1ZWVqK0VVb3E3VmY3ODgwK01HREVDZi8vOU44TER3OUd6WjAvRXhzYmlxNisrd3Rtelp3RUFHemR1eE96WnM1R2JtNHRISDMwVUxNc2lKQ1FFYTlhc0FRRHMzYnNYSTBlT3hPblRwNUdZbUloR2pScmh0OTkrdzlpeFkyR3oyYkI1ODJZVUZoYmkwVWNmaGR2dGhzUGh3TkdqUjJFeW1RQUFvYUdoU0U1T2hpaUs0SGtlZ2lBb3I0SWdRQlJGMzcrSktJcnczU2lsOGl1aGxFTGVBSkN5cndCQUtTWFM1U3V2WmQ0ajU4NmRpNG1JaUlqVGFyVXhMTXZHTUF3VHhUQk1CQ0VrSEVBTkFDR0VrQkFBZ1FBQ0FPZ0JhS1NOQmNCSXZ5Y0NFQUI0cE0wSndBSEFUaWt0QVZCQ0tTMmlsRm9vcFdaQkVBbzRqak82WEM1VFhsNWVYdlBtelUzUzcxQ2ZyZHovaEpDeW44bnZBUUFsaEpSNzlka293ekFnaElCaG1MSWJaVmtXTE11Q1lSaklmNnRVS3VWVjN0UnFOZFJxTlRRYURUUWFEYlJhTGJSYUxmUjZQZlI2UFFJREF4RVVGSVRnNEdDRWhZV2hSbzBhaUl5TVJIUjBOT0xqNDNINDhHSFVyWDhQL0hKamhOek53SFk5NHZGNGtKdWJDNFBCZ0lLQ0FsZ3NGaFFWRmFHa3BBUTJtdzEydXgwT2h3TXVsd3N1bHd0dXR4c2Vqd2NlandjY3g0SGpPUEE4WDJxVEFjeDNFMFdSeUFCWEJzeEtBWm44ZnhrQUt3Vll2djl2MjdhdGdWNnZyOGV5YkYyR1llb0FTQ0tFSkFKSUJLQzdUWWJaQmVBU3BUU1RVcG9oaXVKRmp1UFNyVmJyaFFFREJweVh3YzBIMkNvRHZISUFTQWloMG5oUkVISjVZQWdwQlh5K0lPY0xlbVhCemhmMGZNRk9wOWREcDlVaU5EUVVNVEV4Q3NDRmhJUWdMQ3dNNGVIaGlJeU1SRVpHQnRxMjd3UzFXdTFmWEg1Z3UzWVpPWElrVnE1Y2VWdWRVM1IwdEZmTnFRRE1aSzFNQmpiNTNzbWFtaTk0K2Y2L2IvL0I2SmpZMktacXRib3B3ekFwaEpBVUFJMEFhTy93VytnR2NGb1V4Vk9DSUp4eXVaeXA2UmZTVXgvcDI2ZEEwaFI5UVUwc0E0Q2dsQ3IvWDBHam80Umh3QkFHREVQQU1ES1lNWlJoMkFwQmpWV3hVS25VVUt0VVVLblYwS2pWRWhnU3FEVWExRXBJUUVCQUFBSURBeEVjSEl5UWtCRFVxRkVET1RrNWFOcXNKUVJCUUV4TWpCK1ovTUIyODhSb05DSTNOeGNta3drRkJRVW9MQ3hFY1hFeHJGWXJiRFliSEE0SG5FNm5vcVdWMWREK1FVc2pzdGxaQnRCOE5iTlMybGhaVUh1NDd5UHM0bmVXdE5icGRLMFlocm1QRUhJdmdBWjMyVzA2SjRyaW43azVXY2MwR3ZXZlk4ZU0rWFB2M3IyaUQ5aUpsUUNlWk1ZU1NnZ29RRUJJWlNESGdHRVpzQXdEaG1GcEtZQlRzVkN4bDdVMmxXeWlxdFVRUlJIQndVR0lpSWlBWHE5SFFFQ0FZcDRhalViVWIzQVBha2dhWEd4TUxDS2pvdnlMemc5czFTZkZ4Y1hJeWNtQndXQkFmbjUraFdhbjArbUUwK21FMisxV3pFNk80K0R4ZU1EemZDbFE4L0dqRVY4L1dnV2FHYW5BWDZab1ptUEhqbVVmZSt6eFR1R1JVZTJEZ29JN0VFTGFBd2p5M3pIQWJyZkJXbEtNVnZmZGE2T1VIdUo1L3BEVmFqMzg2cXV2SHZyaWl5OTRRa2hab0JNck1tM0xhSEcwbEYrT1VjQU5MTXVBWWIwZ3AySlpzTDdnSmdFY3d6QmdpRmN6TCt0L001dk5xRlU3Q2FHaG9WNFROU0lDMGRIUmlJdUxRM0J3aVArRytvSHR4Z25IY2NqS3lpcWxwUlVWRlNsYVdsWDhhR1cxTkZrNzh3ME95SnFaYkdiNmFHUyt2akpDS1dVc0ZrdmpvS0NnKzFtVzdRS1Fya2VPSEFtTlQ2anR2MWtWU0c3T0piUnAzYnJjYytyUTc0ZjNSVVhIN2k4b3lOL2Z2bTNyTkFuVUt0THF4RXBBN3JJbXh6Q1VJVDRhSE11Q2xiVzRjdHFiQ3FJZ0lqSXlRZ2t3NkhRNjZIUTZGQlVWSVM2dUpnS0RBaEVjSElMUTBGQkZlNHVKaVVWd1VCQ3lzekpodDlzcXZkN0F3Q0FrSmRkRlNHam9MUnZ6a3VKaVpGeThjTXZQVTNXM1RYWktLUXdHQTB3bUUzaEJnTTFxclhBL2k4VUNrOGxVU2p1ejIrMktkdVlMWlA4QVloVkdOV1dIdjJUL2dQajR4OHFDbWNQaDZLYlJhSG93RE5NRFFGUGY4M1E2SFg0RXEwU2NqZ3JISnRUdGN2YlZhclY5YTlaTXdLWHN2Sk04ei85aXM5bCtiWnJTYUQ4aEVIeUJqbEphVHFPVC9ITUFJWlNJSWtSQ3dJZ01CTUpRaGhIQXNneGhHQllzejFLZTVhRlNTUm9jcDRJZzhMRFp0TkJvTklwMjczSzVVRkpTQXExT0Q2ZkxxL2s3SE42NVpyTmFVVkpTZ2lKTEFRSURBeEVXRm5aRkxUWGo0Z1UwYTNIdkxSdnppK25uNFhEWS8xR2JydTd6Vk4xdG9IYnMyREdBTUFnTUNrWmdZQkJpWWt2djQzQTRrSk9URGJlSEI4ZUw0QVFSZ2tnaFVpaXZGS1QwUmxGbW82QVVFQ21GS0ZJaUtwRkw3MWJXeEtTVUVpcVptY1Ficm1PY1RtY2ZqVWJUaHhEU0IwRE5hNzNtSDNmL2dJMGIxc05rTWlJK1BoNGZiL29NNTg2ZHhkQWhnNVI5SmsyWmhvY2Vldmh1eGI4bUtwV3FTVmhZMkJ0Wk9YazVnaUQ4WUxmYmYwcHAxT0FueVZ3VktnVTVTaWtGb2Q0QUt3VWhJa1NSUUJCOEFJNWx3Zk1zV0JWUFZid0tvaWpBNFhDQTR6aW8xV3JGWFdHMzI2RXBMbGFBVG5adE9CeDIyT3cyRkppTUNBME5oYzFtUTJSa0pIUTZYYVdnY1N2bG4wRHRacDNuWFFWc0JvTUJJQXlpWStJcU5sMXljNUdYbXd0VHZnbG1zeGxGaFlXS0g4M2hzTU1wbTUxdU56eHVOenljQjV4SDB0WjRIeDhhTDBBUWVNbmNGQ0dLc3NsSkNhVWlLQVVCS0xsc2Nuci8vKzIzQTkwVEUycy9HaDhmMy9kNndNejNlaGJNbjR1WnMrYWdkZXMyS0NrcEFRRFVxMWNmUC83OEt3RGdwYUdEcTIyOE42eGZoOGNlNzRlSWlJaHk1N1ZzeVRzNGNlSnZhRFFhOUhpd0YwYTgraHBZbGdVQVpHZG5ZOFd5SlRoeDhnUzBXaTE2OXV5Rmw0ZVBVRDZ2RHBHT1dmUEV5Uk12YXJYYUY2ZE1uWll6ZE5qTDM5bnQ5dSthTldtMFh3STRvWXpaV2xhTGs0SVBJa1NSZ1NnU3lnZ0NCSVlGS3pCRVlIbUlva2lkVG1jNVlITTRIRkNyTlY1WGhqUy8zRzQzbkU0WEhBNG5DaTBGRXRBNVlMZmJFUkVSZ2NqSVNMOWE3Z2Myd0dUS1IyQlFjTG4zYlRZYnNyT3p2RGxwK2Ztd0ZGcFFYQ1Q3MFM1SE85MHVGOXdlTnp4dWp4ZlVPQTQ4eDRGVEFJMEhMd2NFRkZBVEpUQ1RFMmk5SUNhYm1hZE9uMjBTRUJqWWoyR1l4KzEyVytQOC9IekV4OGZma09zOWszWWFrWkdSNk5peEV3QW9DNEVRQXExV3EveGRYZkxoeHZYbzNLVkxPV0NiOGZZME5HblNGUCtaUFJmRlJVVVlNL3BOMUV5b2lYNzlub1FvaXBnMFlSeTZkWDhBcytiTWc4bG94TGl4b3hBVkZZMytUdzJvbHZPczVKZzFvNktpaC9WL2FzQ3dyQnpENmM0ZDIrMzR6K3k1Mzc0dzhQOU9BUkFrN1UwZ3hLdVlYOWJrS0tXVVVFSUVTaWtob2loU1FrUUlBa05aMXV1T2NMbGNVS2xVVkE0cXFkVnF1Rnd1cU5SMnlhWGg5ZE82UFI3SlhIV2h1S2hRMGVaY0xoY2NEZ2NjRGdlaW9xS2cxK3V2NmJxLzJ2SWwzbHU5RWovOXNoY0E4TXJMdzJDeFdFcTVZeVpObm9JZUQvWUVBSncrZlFxN2R1NUE4K1l0OEdEUFh0VytYaGZNbjR0dmQrMVU1dWpySTk5RS82Y0dJRDA5SFV2ZVhZeVM0aUlFaDRSaTRxVEpxRlhMNjJjK2VPQTNyRm16K3U0Q05sN2dFUmdZVkVaN3lFRnVUaTZNUmlQTVptOEtoMWRMczE3MnA4blJUby9rVS9QSS9qUXZxQWs4RDU3M0RRZ0l2bWthcEhSQUFNeEhIMytpNjl5bDYxTXN5L1luaFBUeWRhcmFTb3F1K3pxUEh6K0dHZE9uS1pyQTQ0OTZ6Y3grVC9USG9NRkRxdlFiaHc0ZXdNb1Z5MkV3NUNFeE1RbGp4bzVIU3BNbXl1ZDdmOTJERFJ2V0lkOWtRa3hzTElZUEg0RjI3VHNBQUVhKy9pcXlMbVVDQUVhLytRWlVLaFlKQ2JXd2N2VWFpS0tJcmwyNzRlRytmYUhWYWhFZEU0TldyVnZqN0prenltS3FFUjZPNXdZT2hFYWpRVUt0V3VqWXFUUFMwazVYMjd5b3dqRWJFVUlheGNiR1RyaVVuYmZiNlhSc256SDlyUjJmZmJiWkNZQ1hORGNaN0JTUWszMXhoRkJRNmpWVEthWFU3WGFENTNraUJSVW96L053dTkxZ1dSVjROUStPdit5ejVhUmdsTFdrUkFsTWVUeWVVZ0FYR1JsWm9mWW1paUlZaGluM053RGs1ZVhoMjEwN1MrMi81djExeXQ5dWx3dERCcitBanAwNkF3QldyMXFKOVBRTGNOanRxRmV2L3RYWitrMmFLSW5zVnpySHN2OWJ6R2E4dCtZRE5FNUpLZldkV2Y5NUc2TkdqVUh6RmkyeGErY09MRisyRklzV3Z3dVh5NG1GQytaaDVlcTFZTzRtWVBNTkZEaWRUcHc1Y3dabno1N0Z4WXZweU03T1FsNWVIdkx6VFFyQUZSY1h3eXFab2phN0hRNjdBMDZIMHlkWHpRMjMyMDNjYmcveEJoRTg0SG1PU0RscFJCUkZSaFJGaGxMS1VrcloxTk5ubTJkY3lwN2RyZnNESjFRcTFRZStvT2FyUFY2dnRHalJFdHUyNzhLYm84YWdaczBFYk51K0M5dTI3Nm95cUYwNGZ4NXZUWnVDRWErOWpsM2Y3Y1pUQTU3R21ORnZ3R1EwQWdBeU16TXdlOVpNVEp3NEJUdS8vUUdQUFBJWXBrNmRESWZrckYreGNqVzJiZDhGQUZpeWJEbTJiZCtGbGF1OUpXZ013K0M1Z2M4akxLeUcxOWw4TVIwSGZ2c05iZHUyVTdUS0ZTdFhRNmZUS3hQOStMRmphTmFzZWJYTmk2czVKaUdrWjBCQTRNb0ZpOTdaWDc5Qmd5bHIzMS9YakZLcWhUZmhXUU5BRFZBVnBWUWwzM2Q1SGtoemduQWNSenlTTnVaeXVZakw1U0l5V0RtZFRqZ2RUampzRHRqc2R0aHNObGlsd0pYTlprTnhjVEVLQ3d0aE5wdGhNcG1RbDVlSHJLd3NYTHAwQ1c2M1d6blBJMGNPWStya2llQTREaGFMQlM4TkhWSktHMXUwY0Q1R3Z2Rm1wV1B5M1hmZm9sUG5Mb28yT095bGw3SDRuU1dvVTdmdVZZOXZTRWdJTkJwTmhaK3RYL2MrTm4rNkNRQnc0c1RmZVBPTjE4czljTXI2eVI5OTdIRTBiOUVTQUhEUFBZMWdsZ0F6THk4UFlXRTFVTE5temJzdkt1bzFTWTNJenNxV25pTDVLQ3kwNE1LRkM5ajl3L2ZvMXUwQnVGeE9PRjJ1eTZhbnBLVmxabVlnckVZTkVFSWc4RHpoZWErRzV2RzRJUWdDWVZVcThCeEhaSkhOemQ2OSsvUlorOEg2Wi9mOWIrOVRIMjdjQUk3alVMZGVQVXlhUEVWWlRMZVQ3Tnk1SFYzdjc2YVlzTDM3UElUdnZ0dUYzYnQvd01EblgwQkVSQ1EyYlB3WXRXcDcxZjlISG4wTVM1ZThnNnlzUzJqWXNHcjFqcWtuVDJMMHFKRnd1Vnk0djF0M2RPbDZmNFg3clhsdkZmUUJBWGpvNGI0MzdmcXJja3hDU0sySThJaFJRY0hCb3pLemNyZVdsQlIvMVRTbDBTOEE0YVhJcWlCcGJZS3ZCZ2VBOGp4UEdZYVI4eGVwbE5kSUdJWUJMNmdvTC9nbWNYdjl0MDZIbzFRK3BLelJlUlJ6MVd1bVJrbEp2YTFhdGNhdmUzN0J6Qm5Ua1pPVGpTZWZmQXJoRWtocy8yWWI2dGF0aDBhTlV5bzF6YmQrOVNVV0xuNVhlYTh5WUxwZWVmYi9CbUwwcURkZ05oZGczLy8raDFsejVpcWZtUzFtVEo4MkJXYUxHVzNhdE1Yb01lT2cxV3JScjkrVHlqNWZmUDRaZXZidURRQ0lqWTJEeFdKR2VucjYzYVd4aWFLSTlQUUxPSFBtaktTbFhVSmVYaDVNSmhQT3BLV0I1M2xjeXJxa1ZCTEllV3BPaHhOT2x4T1VVbmpjSHVKeHUwdHBhRkxhQnFHaXlCQkNHRW9wMCsrSkoxVVhMbDRhUEc3OGhCKzdkTDEvcTlsc2ZtckY4bVY0ZCtreWZQTHBaMUNyMU5qNjFWZTNiWkFsTHE2MG42OTI3U1FZREhrQWdLQ2dJQnc5K2dlR3Z6d1V6ejM3TkFhL01GQVozNnBLU3BNbTJQM1RIbnp4NVZiazVlVmh3L3AxNWZiNStLTVA4ZnZ2aHpCMzdueW9WRGZuR1Z6VlkxSktZU20wSUNnd0NBekRQQkVXVnVQVFM5bDVXOUxPbm4rMmVmTVdla3FwRHBlSkFYdzFPSVpTeWdpQ3dQQThUM2llSnh6SEVaN241Y0FCY2J2Y3hPVnllVk0vSEU0bFYxSU9IdkE4cjFRc2hJYUdRcS9YdzJReUlUYzNGMWxaV1VoUHZ3QktLWVlQSDRFL2ovNEJyVWFyZ0xUUmFNQ083ZDlnMkxDWEtyMjIzL2J2UTFKeUhjVEd4bDNYV1BidTNSdjkrL2RIZkh3OE9uVG9nUDc5KzZOeDQ4YWw5Z2tLQ3NJcnI3eUtMLy83QmJwMTcxN3F3VGgrL0VTODgrNVNiUHIwYzVqTlpueTlkVXVwNzI3NThyOG9NQmZncWFlZUJnRG85WHBNbmpJTjgrZk52bnMwdHFLaUlwdy9meDZzU2d0VHZoRVdzemMveldyMW1wcFpXWmNRR3hlSDNOd2N4TVRFS0U5Q1ExNGVPSTRESVFTVVVzSnhIZ0FFSE1jUlFlQ0IwaldhWlBOblh3UXZXamgvOEpLbHl3Y1JRcG9lUEhnQTgrWXZCQlZGdkRGcXRHS0NOYnpuSHVUbDVkNldZeFVURXdORFhsNnA5M0p5c3RHeXBUZnZhTi8vOXVMVFRaOWd5ZExsU0toVkN3RFFwVlA3aXJTYWNtRG5kcm53M1hmZm9rK2ZoNkRWNlJBWEY0Y2VQUjdFL3YzN3lrM2FIM2YvZ0dVclZ0MjBoTk9yT2VhUkk0ZWhVYXZSb0dGRDMrdnRHQmdZMkhIN3ptOWZkcnZkbjMzOTlWZi9uVEJ1YkFraFJKQjhjYklXcC9qaUJFR2dsRklxaWlJNGpvTWdpSlJsUlFpaVFBUkJvSUpLZ0NCNFFjODNKOUp1dDBPajBVQ24weW5sV2JMLzdmeTU4eWpJTDhDYU5hc3c4UGxCT0hzbURRdm16OFdreVZPeGM4Y09XRzFXdkRMOEpZQjR5UnlHREhvZWE5WitBSzJVUXZMRjU1L2g1VmRHWFBkNGZ2Lzk5d0NBRGgwNklDTWpBN201NWVmN2hRc1hNSC9lSFB4bjFoeHMzTEFPdFJPVDhQRERmU0VJQWxxMHZGY3hoWHYyN0lYRHYvK3VmTy9YUGIvZ3h4OS93THRMbHBlS2xyZHIzd0h0Mm5lNE96UzI3T3hzbkR4NUVsbFpXY2pLdW9TODNEeVlUSmVEQlVhREFZSWdJaWd3Q0VXRmhZb2ZyU0EvSDRJZ0lDUWtsR2kxT2tJcGhTQUloQmQ0SWdnOFlTUUJ3RHo1WlAvd2k1blpZenQxN25Jb0pqWjJjZHJwVTAyenNpNEJBSktTa2hFVkhZM09uYnNvaTN2SGptL1FvOGVEdHk2UUlwazZBRUFseWlRWmhCN3Urd2oyN3QyRHc0ZC9COC96K09XWG41RjY4Z1I2OXZLNkJNMW1Nd2dCR0paRmNYR1I0aU9oWXVrcWxyajRlQnc2ZUJBY3h5RmZvbW5TYUxYNDVPT1A4UG5ubThGeEhJcUtDckZ2My8vUXJGbXp5NmJ3anUzWTl2VldMRjIrVWpHZnF0MzhydUl4M1c0M2ZqOTBFUFBuemNId1YxNUZZR0JnUllEZVJLZlR6WG4yMmVlK1AzOGhZOFRxOTlaR1NScWNsbEtxb1pTcWZUVTR5US9MZU1rUGVNTHhIUEVHRGR6RTdYWVRsOHNOSDU5Y0tlM05icmZES2lYeHlyNjNyS3hMT0hUb0FPclVxWXR1M1IvQXRPa3pvTkZvWWJGWU1IVFlTL2o4aXkzWStORW5XTE4ySFRRYURUWis5SWtDYXFkUG5ZTGI0NmxXbjZhdkhQM2pDQ1pObm9yN3UzWEh1MHRYNEZUcVNWQktVVnhjakJjRy9wK1NvblQ4K0RFa0pTY3JmMy8wNFViTVg3Q293dkVIL3VYcEhwUlNuRDE3RnBtWm1RckZFS3RTbzZTNEJGYWJGUTY3SFE2bkU5azUyUWdJMEV2T1Y0TGk0bUlRaHNEbGNoTzFXZ1VQNTRFb0NnQkFmT2lCR0FEa2h4OS9DYmwwS1hQWWdmMzdoakVNVXhjQU9uYnNqSU1IRHlJd01CQ2RPM2N0Wnc3UG1UTUxEenpRbzFJZlIzVkwyUVRkQmZQbllzSDh1WGl3WnkrOE5YMEc2dGR2Z0xkbnpzSjdxMWZDa0plSDJvbUpXTGo0WGNSSTJjeDlIbm9ZSjArZXdOQWhMNEJsVlhqczhYNm9YNzhCTElXV1VzY1pNMlljRmk5YTZIMFMxNjZOZFJzK2drYWp3WUtGaTdGeXhUSjg4ZmxuVUt2VjZIcC9Od3dhL0NJQVFCQUVMRnJvTlFPZmZicC9hVE54MCtick5vOHFrcW9lYytScnI0SVFJREV4Q1dQSFRWQjhrRmVRdWxxZGJrYmZSeDU5b2NlRFBULytadHZYbjQwYk83cFkxdDRrLzV1aXhYbFRRNGhJS0FYMVZxaFFRUlFoaWdMaGVSNHN5MUs1Y3FVaWlpdjVZV1V3NUtGR2pYQTBhTkFRWjgrZWdjUGh3Sml4NDZxVTJ2UDVaNS9pcVJ1Y1ZuUGd3SUZLUHh2dzlEUEszeEVSRVJnL1lSSUFJRHc4SEM4T0c0YlhYeDBPU29Ia09uWFE3d212YjIzK3ZEbHd1OTBZNVJOb21QclcyMmpRb0NFS0N5MTRlZGpRZjIrdHFOVnF4Zm56NTNIcDBtVS8ybDkvL1FXR1ZjRnVzOEh1azV1V2xuYjZzdlpDS2RScU5kSHBkTEJhclRMdkZwR0lJQW5ETUlSU3lpUWxKYkY3OXU1L21XWFpsMy82NmNmRysvKzNGelArTXhzQWtKNmVqbmx6WnlNb01CQ0RYeHlLNXMxYktPZTFiT203NERnTzQ4WlByRGdpZVM0TlhidDJyZkoxN3QyNzEwOVFXSWxVTnBhM2NNeE9wNTQ0L3RIeTVjczNmL2ZkZHg0SjRCUVRGZDdhVlBtVnlzWDJETU5RUVJBVS9qZVZTa1ZabG9WYXJZWktwVkxJTFdYVE5DbTVqc1QzSnBGWnhzU2daczBFSkNjbmxVdDN1dEZ5OExmL1ZYbmY5aDI3Vk50NS9DczFOcVBSaUFzWExpQXJ5NXZDNFVzRXliQXFyelBXNllUTDdZTGRiZ2ZQODRpT2lRSFBjWEM2WE1SaHQ0TmhXUkJDaUNBSWNpNmFFdVU4ZmViOE15OE0vTDhSUnFPeGJYeDhQUExLK0E3cTFLa0R1ODJHZ29KOE5HMTYyY1RhL09rbW1NMW16Smc1NjRaZHExNGY0RWV3cXh5Yld6aG1qV3JVQ0orL2MrZk9KMHBLU2o0TUN3dmJRUWpoZkFGTzB1S0lWNHNEcFZTZ29sU3JKL25qSUlvaVVhbFUxSmNWUnRiYUFJS2lvaUx3SEs4ays3cmRicmhkTHJoY1RpUWxKbFVySFZKQVFHQ1Z5cW9DQWdLcmRhRC9kY0NXa1pHQjlQUjBaR2RuSzBtQmN0S3QxV29GdzdCS0tvZkg0NEhGYklGS3BZTGI1U1k4ejROS0JlcmV0QTJHaUNKUEJFRWdBSmcyYmRwMmYyZkowbGNEQXdQN1Rwb3lGVk1uVDBTTjhIQ29WQ3dDeWl5V2pwMDZvNlM0U0VrMk5Cb05XUFBlS2lRazFNS1FRZDRvSXNPdzJQalJKOWQxdlN6THdtNjNWZnVUK0U0VHU4MWFhUWtXYzR2R3pHNnpnbFdwUUFocEV4b2Eya1lRaEw0bWsrbkR1TGk0QTRRUWpsTEtFMEprZ0JOQklJSkNoQ2dxQkptaTZNMGFrYW10UkZGVXpGTUEwT24wc0phVWVGTkNlRGtsaEx0Y3llQnl3K2x5b1pZVTlMblJrbHluM2o4V3dnY0VCQ0s1VHIxcUhldC9qU2xLS2NXWk0yZVFucDZPbkp3Y0dJMUdoV1pJcnZmTXlja0JZUmd2SzBlcHNpaWVlTms0ZUYvNklGbExZMDZrcGpVSURnNStqUkR5eXEweW55b0g4a3lZTFJiRXhNYjcwY3hYYXpma0lqSXlBb20xeTFNNlpXUm13bXkrK1dObU5PUWlJaUlDU1ltbHo0bmp1SFdwcWFrZnQyelo4Z0lBRGdBdlJWSVZINXpNSCtmTENlZERjRW5MbXFVeUpaSWNNWlZUUThMRHd4RVZGWVc0dURqVXJsMjdXa3ZxYnFYOEt6UTJ1WW9nSXlOREFUV3oyWXppNG1LZkluWUgzRzQzUkVwOXk2SUl6L1BnQlI2aVFpdEVDUVVsb0pUMGYyb0F1M0RST3lOWmxuMERRTUxOdUphZzRPQ3Iyajh4c1RieTgwMHdHbklSRkJ4eTEydHVkcHNWTnBzVkFzOVhDR29Ba0pTWUNKUHA1bzJaZkU2aUlKUUROUUJRcTlYRFdyUm8wY2R1dDYvdDNMbnp4OGVPSGZQSUFBZHZrTXEzQUYvaGhwTkJqbUVZSXZuZnFFeFI3dHRjUmdZNFg5WmV1ZWRDdzRZTnI3blc5SGFXTzE1akt5d3N4Tm16WjVVOEdWOE90Ykpra0lXRmhmQldDL0RnS3RmU0dBRGszSVdNbmhxTlpoU0FCMjdtb25TN25Xald0T2xWYTZzWE16SmhzWmdoOENKY3JydVRvMDJ2RHdERHNvaU1pRVJpWXExLzFFWXlNeThodjZBQUFpOVUyNWpwOVFGZ1Zhb0tOYldLUkJURlBTYVRhVjFjWE53K1FvaHZnSUdYTkRkQkFqUlJEaTZ3TEV0OXdJeXExZXBTSkphK1BSYmtCakp5ZDZ5a3BDUTBhTkFBTldyVThBUGJiV051R0kybDBqbGsydTZLR0c3ZGJqZnNkanRjTGhjUktZVWdFVUVxV2hxbEJLRE1rYVBIWXFPaW9rY1JRa2JmN09zeEdmTVFGeHVEdUxnNCtPWHVGby9IcytxWFgzN1oyS2RQSDRNVVlKQTFPTUVuY2lxREc1VzFOVmxUVTZ2VlZHNEJXQmJjZkUzUytQaDRKQ1ltb2tHREJ2K3FKakozckNtYWxaV0ZjK2ZPSVRNelUwbm44RzJ1SXRPNitETGRDb0pBUEI2dUl2WU5CZ0J6NGVLbC9pcVZhalNBKzI3bXRUanNOdGlzSlFDb0g5VDhBZ0RRYURTdjllclZxNFBaYkY0YkVSSHhIU0dFbGNDTjg4bC9JMTRsVHhSOUd2NVFINnA1V2xtdVcyVjFwOVVWVlBBRFd4WGt3b1VMT0gvK3ZBSnFjanBIMmVZcVplaTdDY2R4QUtoODArVXVUOHkyYmR0cWhZU0VqTW04ZVA3Vm0zMHR3Y0hCVUtsVWlJK1BRMnhzckg5RisrV3lPVVZJeS9EdzhEVWVqK2VEMzM3N2JVTzNidDJ5Q1NHTWJKcFNTbmxjWmw0V3ZWNEo2aHNwSmI1UjA3THBJVEo5dlMrMXZjZmpRZDFyWVBEd0E5dDFTbHBhbXBKNEszZU5LaXpGZE9zb0MyckVweGVCNGt1RFZEbmdkcnVmVUt2Vll3RzA4aThsdjl5T29sYXJYK3JhdGV0OStmbjVhNktpb25aTHZqZEdBalZaZTVOVFFjcHFiK1hTUXNwV0x2aDJUcE1CN3A1Nzd1eWtiNUtSa1hGSG5LaGNIaVVIQ1h6OWFXVzFOSjlPVWNSYldPenREQ1duY0ZCS3ljOC8veHlXbUpnNGptR1lDZjZsNDVjN3lQZTJiT3ZXcmVzblRacFVDTURqaytBcnlQNDN1V3BCU2dueDliMVIzd29GdWZWZlVGQlFPYitiSEZTNFU5TkJWSW1KaWJmOVNYSWNoOVRVVk1WM1ZsR0hxQXE2UXZsMlUvY0ZOY1p1dDNmUmFyWGpDU0U5L1V2RkwzZVl2RGwrL1BpVVo1NTVabTFTVXRJUkFDd0FPWHBLVUpySkY2SW9naEFpbDJRUm1mK3RySWJtVzJUdmNEaGd0VnBSVkZTRWxKUVVxTlZxdnlsNm84WGxjaUUxTlZVcGtaS3JDWHhiNGlrOUNTVENQVmxUazAxUENkZ1lTaW5qOFhpR3N5dzdFWUEvbzlVdmQ2UXdETk1qTVRHeGNVbEp5Y3FRa0pBdkFEQ1NlU29ubFpjS0xNZ1dEL1VLa2FzWGZQclk0a3JGOVNrcEtaVjJ4YnB0VGRIYk9kM0RicmVYQXJXeTFRUmxHeGJML2pUSi9KVHJQQmxSRkVsdWJtNThkSFQwQkVMSXEvNmw0WmZiMWQxaU1CaGdOSm9nQ0FKc051cy9mb2ZuK1hWSGpoeFpOM255NUZ4SmM1TXJGNVRpZXArOE4waXBJWElTcjVMekpuZW1MMXVsRUIwZGpabzFheUk1T2ZtMkFMZmc0QkN3TElQbzZPZ3JaaERjdGhxYjFXcXRGTlJraGx1NTk2SnZrRUFHTlovSUoyTzMyenRydGRxSmhKQUgvY3ZITDdjcnFCMDdkZ3dVUkttR3FHSlcyYkQ2RFJ2WDZkcnRnZmM2dEd2ekJ3QUczc2lwVElEcXBVWHkva09sdnJkZWpZMVNMME9TMUFkWDN1UWV1b0pJd1FzVUhDL0M3UkdRbUp5QW9LQmJYOWxpdDl1UW0yZEFibDRlN3J2MzNqc0gySXFMaXhWUWs0dlp6V1p6aFpwYUpaRlB4Wi9tZHJzSHFsU3F5UURxK1plUFgyNVhNUmdNb0NEWFZML0tNRXozV3JWcUo1NU1UVnZSSk9XZUhhQ1VvWUJ2M3cxQm9nc1J2YkVBQ3NrQ0JienJoQ29tcVJ4UmxjeFVVYVFRcVJSTnBTSWFObWlJNEpDUVd6cFdnWUZCQ0F3TWdzbVlCNFBCVUdHYTFHM0ZvUHZERHorZ2ZmdjJpSW1KUWRldVhURmh3Z1RzMmJOSFllaW9LQUxxVnZvUGVIMXEwc2FJb3FpYVAzLytsUFQwOUxYZmYvLzliUU5xUE05ajFLaFJpSTZPUm1ob0tJWVBINjUwZC9MTDNTc21VejZDZ3E4TE1PcUdob1V0UG5mKzR2Q0c5elFLQUtDVHVtZkpQUmRZU3NGU0tuZkxFZ2pQYy9Cd25KZXAxK1dXZWl4NHUyTlpyVllVRnhYQllqSERaRFFoSnljSEdSY3ZJdTFNR2txS2kyK0xNUXNNQ29aUjZweFdWdGdaTTJiY0ZpZTVkKzllOU96WkV5a3BLWGpnZ1FlUWxKU0VvcUlpSEQ1OFdJN3NLSUJXMXZ5VXRUUXZ0YkxBcEtTazFQcjg4OC9uZHUzYWRjeUFBUU9Za0pBUWRPblM1YmE0em9rVEoyTGJ0bTM0OU5OUDhleXp6MkxwMHFVNGRlb1VIbnZzTWYvcXZvc2xOemNYTmNJanJ2cDdwMCtsWXQ1VTdNZUhBQUFnQUVsRVFWU2MyZWpWdXc4QU1DcTF1dU96Ly9kY1NLdldiUzU4dmZVckIrQlYzU296ZnlsQWNMbVJ0MlNPMHN1YnBLa1ZGT1RqME1HREtDd3NSRVJFQklLQ2dxSFQ2ZkQxMTE5aC90eloyTFp0S3dvdGhXZ3BtWWI1K2ZsNGE5b1ViTjY4Q1QvLzlCT2FORzJLME5Bd0FNQmZmeDNIdENtVHNIWHJGaHcvOWlkYXQybDdUVjJ3TkJvTnJOWml4RmZnYTd0dFRORzFhOWVpYWRPbWVPYVpaNUNWbFFWQ0NGcTJiSW1DZ2dLY09YTUdLU2twbFNYZWxnb1NQUGpnZzYwYU5XbzBwVnUzYm4zbG0zZTdpTjF1eDZwVnE3QnAweWFGbXVqOTk5OUh6NTQ5c1dEQmdncWIzdnJsN2hDcnRRVFIxMkNHTnJ5bkVkNmUrWjlTNzZuVjZrRmR1blNKL3VYWC82M3BmbitYRTVSU1JrSTN4VFNWc1UwVUJKR1hmRzJBOTlVTGVCS3dnZUpDK2dWd0hBZVdZUkVSRVlHTWpBeFFBSUdCZ2RpNlpRdldmckFlR28wR1k4ZThpU05IRHFOMTZ6Wll2V29GdW5kL0FIMGZlUlIvL0hFRUMrYk54YXIzMW9MbmVjeWJNd3Z6Rnk1R1VsSXkxbjNnN1N2NjBzdkRyMm5jZkhzRjMzYW1hRkZSRWV4Mk8zSnljbkRod29WU1ByWEV4RVFrSmlZcUtSMTJ1eDM1K2Zta3NMQVFOcHVOdUZ3dUlnZ0NJNG9pazVTVTFQdkhIMzljc256NThyNkVFSFRwMGdWSGp4N0ZXMis5aFhidHZBMTUyN1ZyaDltelo2Tjc5KzRJQ0FoQXZYcjE4UDMzMzJQWnNtVklTRWhBYUdnb2hnMGJwaEQzVVVveGI5NDgxSzlmSHhxTkJoRVJFUmcwYUJEc2RqczhIZythTm0yS0J4KzhISlBZdEdrVHRGb3RqaDgvRGdEbzM3OC9Xclh5RmpVY08zWU1UcWV6Rk45YTU4N2VUdHNIRHg3MHIyNi9sQk96Mll5eFkwWmgwUFAvaDhHREJ1TDNROTU1a3AyZGpRSDluOENUL1I3RnFEZEdsdnJPNUluak1XVFE4MzFtLzJmRzFKU1VsQzRBZEtEVXQ1RU1LNG9pSzY4YnBZa014NkdrcEpnWURIbGVRa3FudDNGelpHUWtHalpvQ0kxV2c1S1NFdVRtNWlBekl3TzdmL2dCS1UyYUlDREFTN0phSTZ3Ry9wTG0vVjkvSFVlWEx0NTVIaG9haXJTMDAvQjRQRERrNVVHbjF5TXB5ZHVZSlR3OEhIOGRQM2JEeCsyV2EyeHlvS0JkdTNiNDl0dHZNWGZ1WE1URnhTRWtKQVI2dlI0eTE3dWMwbUUybXdrQXFGUXFRaW1WdTY0elZxdjFXWTFHTTdWdjM3NzFHelpzaUVXTEZvRmhHTFJ2M3g2UFBQSUlwa3lab2h4ei92ejUyTEZqQnpwMTZvUlhYbmtGL2ZyMXcrT1BQNDdUcDAvajFLbFQ2TmF0R3g1NjZDRTg4Y1FUV0xWcUZSWXVYSWpObXplamNlUEdPSDc4T0FZT0hJam16WnRqekpneCtQREREOUd1WFR0ODhza242TjY5TzBhT0hJbVpNMmVpUllzV0NyQVZGaFlDQUhKeWNoUnc5SG02SWlJaUF0bloyZjVWN0pkeThzWG5tOUdzV1RNTUd2d2kwdFBUc1hyVkNyUnQxeDRKQ1FuNDc1YXRPSGZ1TE9iT0xrMDFQMi9CSW1sdEZiVVovdExROEE4LyttVEY0RUhQZnlzcE1rU3lUamtLQ040SE9CR2xmRjRRUXFoS3BTSnV0OXVyeEFHZ29DQ0VnZHZsZ3MxbVE3NHBId0JCWm1ZR0FnSUNjUEZpT2xZc1d3cEJGQkFzK1FtTGk0dWgxZW13WS9zMytPbW4zZEJvTkxEWmJDZ3BLWUZXcTRYSDQ4SEtGY3VRbTV1TG9xS2lHejV1dDFSajgwM3BFRVVSQXdjT1JOMjZkV0V5bVhEcTFDa2NQWG9VcWFtcEtDa3BnZHZ0UmtsSkNaSEFRSW40TUF6REJBY0h2L0xsbDE4dTBtZzA5ZVdHRnpxZERocU5Cb1FRaFZsVWxuNzkrcUZidDI1UXE5VjQ0b2tuNEhLNU1IZnVYQVFIQjZOdDI3Wm8wcVFKVWxOVEFRQkpTVWxZdjM0OSt2VHBnOFRFUkR6MjJHUG8ycldyOHZsOTk5MkhTWk1tWWZ6NDhSZ3laQWlhTkdtQ0NSTXVWMms5ODh3ekdESEMyNlBSNFhCVW1BdWsxV3FsRGxsKzhVdHBhZDJtTFg3KzZVZDg5T0ZHdUYwdUxINW5TWlcrSjRvaVpzNTRHdy8zZmJUZUF6MGVuSFlxN2R3QUFEcHAwMUJLMWFCVUJZQUZLS09rUndHRVpWWGdPQS94dUQwK3JmN3NjSHM4Y0RnY3NCUmFrSjl2UWxGUkVVNzgvUmZHanh1RDU1NS9BZDI2bGFZdW5EZG5Gakl5TG1MeE8wdWgxV3BMS1ROalJyK0p4bzFUTVBLTk42dGwzRzRac1BrbTM4b3BIUzZYQzNYcTFFR3JWcTNRdUhGalJFUkVRQkFFR0kxRzRuYTdKWFlPN3hOSHpsSGpPRzU4U2tyS2d0VFUxQ3AzcVBBdEk1TUhQQ0Vob1pSVFVnYWF2bjM3b25idDJwZzVjeWFlZSs0NXRHalJBdDk5OTUzVU9NTXIwNmRQUjBSRUJQYnMyWU9QUC81WTZYTlFWdlI2UFR3ZVQ3bjMzVzUzcGYwUi9YS1hBMXZyTmxpNWFnMXFKaVRnNDQ4MjR1MjNwbGJwZSt2WHZRK2RUb2VCejc4QUFGSEJ3Y0Z2ZmYzTjlzRUE5Qks0YVFraGFrS0lpbExLQW1COEFuQ0U0M2g0T0E5UklxWk9KemlQRitoS2lvdGhzVmpnY2J0UlhGS0N4eDkvQWdRRUpkWVNoSWFGS2Vabmg0NmRNUEtOVVZDcjFmQjRQQXB6YjBseE1VYVBHWWZlZlI2Q3krVkNtUFNkT3g3WWZNdWtzck96a1pPVGd5MWJ0dURpeFl0S25ockhjZERyOVFnSkNTR0FsLzdiRjlSV3IxNnQ1amh1T3NNd3MwVlIxSlh0T0g1RisxdFYzZ0t2ck5oM3laSWw2TkNoQXpJek05R2hRd2VzWGJzV3ZYdjNMcldQMFdoRVRrNE9LS1g0OWRkZkt6MXVRa0lDWEM1WEtkV2I0emlZeldiVXJGblR2NHI5VWs3bXpaMk53MGNPbzBlUEJ6RjV5alFjT25RUS96VFg5Ky9maDcyLy9vb3BVOS95bmRlNkprMmFUcm4zM251SE4ydldQQkJTT2dpbFZBMHBIUVFBUzBXUjhEeEhCSUVuUEZjNkhZVG5lYmpkYnNXa1ZHczBjRGdjS0NqSXg4V0w2ZGo5dy9kbzFMZ3hBS0JGaTViS2VmNTU5Q2lTa3BLaDBXZ1FHeGVIMExBd2FDVUxhdisrZldqZW9zV2Q3Mk9UQzlwOWF6K0xpb3FRbjU4UGg4T0I1T1JrMytSYkltczRjdnM3QUdUbnpwMUJQWHYybk1vd3pMaWlvaUtjT25VS1E0Y09yZkI0MTh0T3NHVEpFa3llUEJrelo4NVUzc3ZJeUNnVndYenBwWmZRb2tVTDlPdlhENk5IajBiUG5qMHJCS3FXTFZ0Q3I5ZGozNzU5ZU9TUlI2Ukp1QjhNd3lqQkRiLzR4VmNHRG53Qml4Y3Z3T2ViUDRVb2loZ3pkandZaGtGMmRqYkdqSG9ESE9kQmNYRXhCdlIvQXZmZWR4OG1UWjZLbGN1WHd1Vnk0YlVSTHl1L3MzTDFXZ1FIQjJQQm9uZEd2N05vb2FhZ0lIOWRibTZ1L0lTVm82Vzh0TllFYjJNc3dldGlrL2JoZVlGNk9LODVDZ0lFQndVakxpNGVuMjd5ZHBLLzk5NzdFQndjREo3bjhlcHJJekYvM2h4OCtkOHZvTmZyTVhIeUZFV3BtREwxTGN5YU5RT2NoME90V3JVd1lkS1VPeHZZS0tYbHlxVGs2R2R5Y2pMT256K1AxTlJVQkFRRVFCQUV1TjNlcHdRaFJDYlRJeWtwS1RWbXo1NDlOU0lpNGsyMVdvMHBVNllnSkNRRUF3WlUzTDA2S0NnSUJ3OGV4S0ZEaDY0SlBNTER3M0hnd0FIazV1WkNFQVFzWExnUXAwNmRRbE9wTDhINjlldXhaODhlL1AzMzM2aFhyeDQyYmRxRWwxNTZDZDkrK3kwQTRQUFBQMGRoWVNGR2pCaUJ3TUJBREIwNkZLKy8vanFDZzRPaDBXZ3dmUGh3REJreUJPSGg0ZjVWN0pkeVVxdDJiU3hidnFwQzdmKy9XN1pXK0ozUC8vdFZwYjkzenoyTjhNSDZqYSs1M1c3VjVrODNyWnYrMWxTenRMWjhsQUVHbElxQ0tES2x3QzBvS0FnYXJVYTJua0JBVUNNc0RFbEpTWWlJaUVCTVRDd3lNekxBc2l3YU4wNnAxQi9ZdEdrenJIMS9mYldPMjAwMVJhOVUwQjRVRklUWTJGaUlvaWlibzBRR05aWmxDYVdVWExod0llTDc3NzkvS3k0dTdzMEhIbmdBWGJwMGdWYXJ4Zjc5K3l1MTAxOTc3VFVjT0hBQWd3Y1B2cVp6M3JCaEEwcEtTbEMzYmwyMGE5Y09OcHNOa3laTndwOS8vb21zckN5TUdUTUdVNmRPUllNR0RjQXdERDc0NEFQOCtPT1AyTEJoQXdCZ3k1WXRXTC8rOGsxY3ZIZ3hIbnJvSVR6KytPUG8yN2N2N3IvL2ZpeGJ0c3kvZ3YxeVUwV3IxUTUvYnVEQWwrY3RXQlFGUUN0VkthaTl5bzVTcFVCRTBadDU0RzNBN0Ewb3VOM2VLZ1dIdytFMVN5V2ZtOGxrUW01dUxqSXlNbkQyekpsYmVuMDNqZDBqTFMwTmFXbHBTb3M4dVp1VVhDYmx5M3hiSnZtV1VFckptVE5uYXRTcFUrY3RRc2hJLzdRc0xhSW9JaVB6RWl3V0N3UkJnTXQ1ZDVabzZmUjZzQ3lMOEJvUlNFcXFYV2tRUjdZZXZHTm1CczlYMzVqcDlIcW9WQ3BFaEVjZ0thbHk3c085ZS9laWJ2MmJ6MXJyY2JzLzJMVHBrL2Zmbmo3TkFzQkZDSEZEYVJ4REJFSWdFTUlvRFdQVWFoWFVHZzNWYXFTK3BRRUJDQW9NUkxEVXppOGlJaEt4c2JHb1hiczI2dGFyajNyMXFyZWFzYkkrdkRmRkZKVjdGSlRsVTVNN1NSMC9mdHkzUW9ENDJ2M1NGbFN2WHIycEFQN1ZvR1l3R0s2NlU1RGI3Y0ZmZi8wRlZxVkNjRWlvdjYrbzNZYkNva0lVSE0xSGkrWXRvTkdvS3dTMVAvNDRDb1psRVJSYy9XTm10OXRndGxpUVg1Q1AxcTJ1ekVDZmMvUHpHVi9xMXEyN2VISElpMnMvM0xoQldZZGUwOVJiWWdXSWdpaFNVRzh4UEJVRWtRaThRSlZ1OHo0a2xVNkhBM2E3RFZackNZb0tpMkF1S0NpVmNYQWpwZVlWZnJmYWdTMHJLNnRVajRLeTNka2REZ2RxMTY2dGFHb2VqNmRVN2VmcTFhdlZ3NFlObThvd3pKdndTem5KTStTQlZhbjhuZUFsa1prZmpJWmM1T2JsSXFrQ2h1aUxHWmxnV1BhbWpabnZPV1ZtWGtMaUZmcUwxa3hJdUJYRE5uenF0T2w4UmtiRzJsLzMvRktaaGl0Y0JqdVJVaW9TU3N2M1VlQWxabDZQaDRQTDQ4MkJJNFFnL2laSC9hc1YySXhHbzlJaXIyempsUW82U1pHS3VOUWtVQnZuWDdJVmk3bkFqS0NRVVA5QWxKR2c0QkFVRkpnckJEYUx4WUxnV3pCbVFjRWhLREFYWEJIWWJwa1pyOU85OXY0SDZ6ME42aVd2bDdWYU9hQkF2ZEVGS3BiS015RVVJQVFnY2xkNkVFTEFlTWtzd1RBc1dKYUZpbFZCNVRWZkVSVVZkZWNEbTl5aFhXNlJsNStmWHltZGQxbWZtbS95TGNNd1UvM0x0REkvRVNBSXdsMXZmbGFtSlJVWFdTcjg3RmFOV1dCZ0VJb0xMZGYwM1pMaVltUmN2QUM3M1hiRjMwOUtyb3VRMEdzRGJiMWVQenJ0N0FYWFBRM3FicEx3VEpscVBtTW5YbTdmeDFHTzh4QUorRUFZQXNJd0VyQXhZRmtHS3BYQzFndU5Sb1BRME5BN0Y5aWNUbWNwVUN2THAxWUpTYVRjZklWSXZRbGVZUmhtMnBVWDl0VlRLZDl1VWxXcTQ0cUVFTURwOUhPNVZUb1BLK0c1dTVYQmxXdTlYeGZUejhQaHNGOXhIN3ZkaG95TEY5Q3N4YjNYQWI2Qm8wK2VPdU5vMHJqaFZoOVFvMlUwT0JFQUZVV1I4RHhQblU0SFlWbVdNb1NBRUFZTVF5Q1hObm8zRlZScU5UUnFEUm8xYm54VEtNWnZPTEJSU25IbXpCbWxUWjRjL1N5cnFaV0pmc3FOSlJpSjlmWlpsbVdud1Z2NlVlbHhycEZLK2JhVHFsQWRYNnY4dVBzSGJOeXdIaWFURWZIeDhmaDQwMmM0ZCs0c2hnNFpwT3d6YWNvMFBQVFF3MzRrdkkzbG4wRE5keTVkcjFVYUdocjZ4ckcvVHRwYk5tL3l2YSsyVmdiY0FFQ2tsSHA5YXB5SGVIc3JYQVkyaG1YQk1oS3d5VnFiVm9QR2pWT3F2YTNmRFFjMlgxQXIyOHpZYnJkWFNPZnQ2MWR6T3AyOVZDclZWQUJYTk1pdmgwcjVkalNiL29ucStGb2tOemNYQytiUHhjeFpjOUM2ZFJ1VWxKUUFBT3JWcTQ4ZmYvNFZBUERTME1IVmRsMGIxcS9EWTQvM0s4Vm1JcC9Yc2lYdjRNU0p2NkhSYU5EandWNFk4ZXByWUZrV2dKZVNaOFd5SlRoeDhnUzBXaTE2OXV5Rmw0ZVBVRDZ2RHZtblkzYnAxQjVxdFJxRU1FaEtTc0tRb2NQUXNXT25meXVPUmtWRVJMeTZjdVhLa3RkZmYvMUFHYzJORWtLbzlEK1JtMkR4SE9mbEltY0lKUXdCUXlRL202UzVLY0NtMWtDcjBhSmUvZnJWZWdFM05FRTNJeU1ENmVucGxlYXB5ZFJEVW9zOCtMTGZVa29acTlYYVNxUFJUQVh3ajFkOUE2aVVieitBdXdMVjhUVTlaTkpPSXpJeUVoMDdkb0pHbzFIS3dBZ2hTbWVpNm54eWZyaHhQU3dXYzduM1o3dzlEVFVURXZEMU56dngvZ2NiY09qZ0FXemZ2ZzJBTnlkdjBvUnhhTkR3SG16N1ppZFdyRmlOdmIvdXdkZGJ2NnEyODZ6cU1WZXVYb01kdTc3RGtLSERzSGpoZkd6OWFzc3RtU2VFRU54Nzc3M28yYk1uZXZUb2dmajRxM3U0QzRLQTMzN2JqOGtUeHlNN0s2dXlZOVNMaW9vYXZtREJnc2FTNVNUVGpLdVZ1bEpLNVc3MGhPZDU4SnczOWNOVEt2WERqc0tpUXZ6MDQyNnNYZk1lNXMrZmcvMzc5eUZMT203V3BVc1krZnFyZVBhWnB6Qm0xQnNvS2lwVXp1R2pEemZpdVdlZnhqTlA5OGV1blR0dWpjWm1OQm9WVURNYWpRcW95YmxxdmwzYWZUcTBLNkJtTUJocTZmWDZLUURhVnZYbS9OdWM1b0dCUWJCWnI1OVAvdmp4WTVneGZSbzhFczNNNDQ5NnpjeCtUL1RIb01GRHF2UWJodzRld01vVnkyRXc1Q0V4TVFsanhvNUhTcE1teXVkN2Y5MkREUnZXSWQ5a1FreHNMSVlQSDRGMjdUc0FBRWErL2lxeUxtVUNBRWEvK1FaVUtoWUpDYld3Y3ZVYWlLS0lybDI3NGVHK2ZhSFZhaEVkRTROV3JWc3JtZW9XaXdVMXdzUHgzTUNCMEdnMFNLaFZDeDA3ZFVaYTJ1bHFHL2VyT2FaZXIwZkhqcDJnbmpJTmIwK2ZobDY5Kzl4MFpwYms1R1N3TEl2ZHUzZERxOVdpZS9mdXlNL1BoOFIrVXdxdzVTUmwzNy9mZk9OMTFLeFpFNmRQbjRJZ0NsY0MwTmFKaVluRHhvNGR1K2lkZDk3SmtiVTJINStiSEdBUUJVRUVJYnkzN3BFd2xEQU1DRVBBc0F4eWMzTkJDTUVEUFhvQWxHTEQrbldvVjc4KzlEb2RsaTU1QjQ4OTNnODllanlJTHo3L0RPK3RYb1hKVTZiaHhJbS92WE5zNDBkd3U5MFlQbndZV3Q1N1g1VkIvSVpvYkZhclZXSHE4SzMvbER1M1h5bXRnMUpLWG56eFJUWWlJbUl5SWFSdjFZOVpja01uaTlsc3h1UkpFL0RjczA5ajN0elp0d3pjS3FNNnZocHAwYUlsdG0zZmhUZEhqVUhObWduWXRuMFh0bTNmVldWUXUzRCtQTjZhTmdValhuc2R1NzdiamFjR1BJMHhvOStBU2RJbU16TXpNSHZXVEV5Y09BVTd2LzBCanp6eUdLWk9uYXcwcFZteGNqVzJiZDhGQUZpeWJEbTJiZCtGbGF2WGVDY2N3K0M1Z2M4akxLeUcxeWwrTVIwSGZ2c05iZHQ2NjNnakl5T3hZdVZxNkhSNlpVRWVQM1lNelpvMXI3WXh2NVpqdG03VEZoNk91eVdsUTVHUmtjak56VlY4WGFJb29rYU5HcVgyT1hMa01LWk9uZ2lPNDJDeFdQRFMwQ0d3V0x3UjJYZVhMTVBrS2RPcXBCZ3dETlA3dnZ2dUd4d1RFNk9YdERhZjBpdXdBQmh2UnppUnVGd3U0bks1d0hFZVlqR2JrWmViQzVmVGhlTGlJZ1FHQnFLa3BBUXF0UnFDSUNEMTVBbGtaR1lnTGUyMGN1OGZlcmd2RHY5K0NBQncvdHhadEdqWkVscWREaUdob1dqZnZnUCtPSEw0NXBtaWxOSnlWUVcrbXBwdkJOUzNRN3R2QkhUTm1qV1RDQ0hEYnNSTi8yckxsM2p1MmFmeDdETlBZZjY4T1hDN1hGWDYzdnRyMzhNOTl6VENwNTk5Z2JIakxoTkZtb3hHN055eC9hNXlWTy9jdVIxZDcrK0dqaDA3UWF2Vm9uZWZoM0JQbzBiWXZmc0hBRUJFUkNRMmJQd1lqVk5Td0RBTUhubjBNWEFlRDdLeUxsWDVHS2tuVDZKbmoyNFk5UHh6dUtkUkkzVHBlbitGKzYxNWJ4WDBBUUY0Nk9HK04rMzZxM0pNUWdqQ2E0VERkdjNPK3FzV2pVWURRUkFRRVJHQlRwMDZRUlRGVWtTT0FOQ3FWV3VFUjBSZzVvenBHRHZtVGZSNzRrbUZhT0ZxRzZlb1ZLcm5GeTFhTkJCZUxqZGZrMVFsWVFnalVrb1lob0hINHlFMm13MHVsNHNFQmdiQzdYWkRwVkxCWU1pRDFXcEZkblkyQ2dzdHlNM05SVzVPRGlJam95QW5CUjg2ZUFCV3EzYzg2OVN0aDZOL0hGRW9rbEpUVDhKbXM5MDhZRHQ3OWl3dVhicWtwSFZVcGZkbm1Ram93QnVWcTNiaXhOL1lzdVcvV1B2QmVueTYrUXN3RElQMTY5ZFY2YnZuejUxRGg0NGR5OTM0L1B4ODdOanh6VjBGYkFhREFYRnhwVlgrMnJXVFlERGtBZkN5UEJ3OStnZUd2endVenozN05BYS9NRkRSZEtvcUtVMmFZUGRQZS9ERmwxdVJsNWVIRFJYY3A0OC8raEMvLzM0SWMrZk9yNUJEcnpxa3FzZWtsTUpTYUVIUUxYS0hKQ2NubzFHalJ2anR0OStVb0ZCWjRCMCtmQVQrUFBvSHRCcnRkVDBZOUhvOUJnNGMrS2JCWU9oWmdiL05xN2w1L1cwTUlRU0NJRUN0MWtBUUJPTHh1QkVVRkF4ZUVIRDQ5ME00ZlNvVkRNUEE0WERBWkRLaFY2L2UrT2FicnpGazhQTklUVDJKd0VCdi80VG16VnVnWjY4K0dQbjZDRXlmTmdVQitnRG9BL1EzeDhlV25aMWRMbGZOdDFUS0I5UlFVUVRVYnJkM2xwb1ozNUJaYTdOYUVSUVVqSUNBQURBTWd4ZUh2b1NMRjlPbHhacUhSUXNYSU45a1JHaFlEWXdiUHdHSmlVbjQrZWVmOE44dlBrTm1aaWJtenBrRmpVYUQ1NTU3SGwyNjNvK2xTOTdCc1QrUHdtQXdZUGpMWHI2M3RlK3Z4NGIxNi9Ebm4wZGhOQmlRMHFRSkxxWmZRR1JVTk41NWR5a29wVmk5YWlYKytPTXdPQStIOWgwNjRyWFhSNEpTaW5GalJ1SCtidDN4eUtPUDRjU0p2ekZuOW4rd2J2Mkh0MFYzYlYrSmlZbUJJUyt2MUhzNU9kbG8yZEtiaXJMdmYzdng2YVpQc0dUcGNpVFVxZ1hBR3pXc2FIR1ZCVHUzeTRYdnZ2c1dmZm84QksxT2g3aTRPUFRvOFNEMjc5OVhhcjh0WC80WFArNytBY3RXckxybWhOT3JsYXM1NXBFamg2RlJxOUdnWWNPYmZuK2tza1A4K2VlZkFBQ1daY3RSeTl0c05vd2ZQd1lEbngrRXMyZlNzR0QrWEV5YVBQV2Fna1ZPcHhOYnRteFJBWGpscjcvK01qUnYzdnhQeWRjbVN2NDJKV0pLS1NVTXc4TGpjVk9uMDl1VW5qQU1vcUtpRUJBUUFKMU9oNy8vK2d1aUlNSmlNVU1iRjQvblh4aU1CZzBhNG1KNk9pNWxaaXJIZlc3ZzgzaHU0UE1BZ0plR3ZZaTZkYXRlVUgvTkdsdFJVVkdGdVdxVmdCb3AwNldkeWMzTmpkZHF0Uk54QXp1MHQyN1RGalZyMXNUTHcxN0UxMXUzUUtmVG9YWHJOZ0NBT2JObm9XZlBYdmg0MDJkNC9vVkJtQzVSTEQvd1FBK3NmWDg5YXRhTXg3UzNabUR0KytzVnMyalU2TEdZTUhFS2twS1RzZmI5OWFVNHBOcTJiWWNaTTJjaE16TURIMzJ5R1pjeU0yR3hXR0EwR2hBWUdJQU5Hei9HeDVzMkkvWGtDUncvZmd5RUVFeVpOaDJmYnZvWWFXbW5NWGZPTEV4NzYrMWJCbXJTL2ZCcUg2S29hTklBOEhEZlI3QjM3eDRjUHZ3N2VKN0hMNy84ak5TVEo5Q3pWeS9GSDBrSXdMQXNpb3VMc1BuVFRkTHZsR2FLaVl1UHg2R0RCOEZ4SFBKTkpxODJyTlhpazQ4L3d1ZWZid2JIY1NncUtzUytmZjlEczJiTkxwdkNPN1pqMjlkYnNYVDV5cHZHVTFmVlk3cmRidngrNkNEbXo1dUQ0YSs4ZWtzbzNmUHo4eFdBMG1nMENBc0xLOWNRNWNLRjgramF0UnYrNzdtQm1EWjlCalFhcmVKanV3NnBXNzkrL1JkSGpSb1ZXNUcvalZMS01BekR5RlJqSG84SEhNOFJ6c1BCNDNiRFlYZmd6Smt6aUlxS2d0MWhSMUZSRVFvS0NtQTBHUERISDBld2ZOa1NQUGxVYVY1Rmp1T3c2Wk9QUVlpWHg2MWFOVFpCRUpDZW5xNEVDM3dqb0JXa2RaQXlhUjJFVXNwRVIwZFBJSVE4ZUNOdnVFcWx3b3laczNENlZDcSsvZlpiREg1aElHYk5ub3M2ZGV2aTdKazA5RnpoSmV4cjA2WXQzblc1WURJYUVSMXpiV205V3EwV09yMWVNVnNEQXZUZ09RNnhzWEdJakl6Q3hBbGp3VElzREVhdjM5SHJtNHJBNkRIajhQcXJyK0Q1RndhalNaT210d1RVeWlib0xwZy9Gd3ZtejhXRFBYdmhyZWt6VUw5K0E3dzljeGJlVzcwU2hydzgxRTVNeE1MRjd5SW14cHRmMStlaGgzSHk1QWtNSGZJQ1dGYUZ4eDd2aC9yMUc4QlNwbHhvekpoeFdMeG9JVFp1V0lmYXRXdGozWWFQb05Gb3NHRGhZcXhjc1F4ZmZQNFoxR28xdXQ3ZkRZTUd2NmpNclVVTHZXYmdzMC8zTDIwbWJ0cU0yTmk0R3o0ZVZUM215TmRlQlNGQVltSVN4bzZiY0VQejJJS0RnNnU4YjBaR0JzTEN3dENqUnc4QXdQSGp4OHYxMG1qZXZBV2FOMitockl1eDQ4YmZJUC9yem02dFc3Zk9BTERDUjJzVEFWQkNpRGRHU2tVcTE0dnlQRThad3BBU2F3bmxPUTZob1dHSWpvbUYzVzZIV3FXR1dxM0dybDA3d0RJc25ucjZhYlNYSXV1QWwrSjgrZEozMGJ4NVM4eGZzTGhDYmJPeWNic21ZUE9OZ0ZiR3FWWUcxR1FHQUxsY2FqZ2g1TlViUFVGUG56NEZuVTZIUm8xVDBLaHhDcjc5dGpFKytHQXQ1czFib0poR2lwbkVNS0M0OFZ4MGYvMTFITHQyN3NEU1pTdWcxZWt3WTNycHFqQ0h3d0cxV2cyWHkxbnRBTmFyZHgrNVEzZ3BxVisvQWY2My84cDlURHQyN0ZUcHd0VnF0WmoyMXR1bDNxdW80VzJidHUwcVpIbXRWNzgrbGk1ZldlRnZzeXlMdmZzTzNGU2dyOG94LzJtOGJzUTUyTzIyS2tVcTVhcWI2NVZQUC92aW1yNm5WcXVIYk5pd0llUEZGMS9jQmkvRnJrZ0JLcldTcC9DbWdZaWlLRktCRjhBVERvRUJBVVNyMVZHZFhnZTMyd1dudzF1Tm9GS3IwSzFiZDhUR3hxRldyZHJJeUxpSU9uWHFBZ0E2ZGVxTVRwMDZWM29lZHB1MVVqL29WWnVpZVhsNUNnV1JiMXBIQlJGUStJQ2FvcTNaN2ZZdUxNdE9ySTdKa1hYcEVoYk9ud2U3M1Z0K1lpNG9RR2hvS0xRNkhlbzNhSWdmcGFqZUgzOGNnVnFsUW5UMFAydHJvYUdoS01ndnFMQzdWRVZpTnB1aDErdWgxbWlRbjUvdnpZV1Npb2tOaGp5OHQzb2wzdjlnQXc3Ly9qdU9YRVg0dW5MSGJnRDhjblZqY3l2SHJMSmpSMGRIdzNHRld1ZUFnS3FadkZYZDczcC9LeWdvNkpWMzMzMjNoUkpNa0pyQ3lDYXBuQUlpaWdMaGVRRWN6NFBqUFBCNFpBWmVGeHdPQit3MkcwcUtTN3dNdlBsR0tibS9ha25xZHBzVjBkSFIxdzlzRG9lakZGdkhQd1FMeWlYaHBxV2xoV20xMnZFQXFxVU9xbWV2M3VqY3BTdGVIdllpbm4zbUthU2VQSUhYUjNwcDNLWk9tNDV2ZCszRTRFRURzWEg5T3N6NHo1d3FPVklUYXRWQzIzYnQ4UFNBSi9IQ3dHZGhOQnF1dUgrblRwMmgwK3Z4MUpQOU1IM2FGTlN0Vng5MnV4MDh6MlBtMjlQeDBzdXZvRmJ0MnBqNjF0dFl2SEQrZGZzOTVDZTlYOHBQK3NwS3NKaGJOR1oybXhWc0pScEdYRndjS0JXUmI4eXI4TnlTNjlUN1I5QUtDQWhFY3AwYngxajdEOGVNaTQrUEgvVENDNE5xeU9CR3k0TWJReWtsb2lnUWdlZkJjYnprYi9QQTdYTEI1WFRDN25EQWFyT2l1TGdJRnJNRkpxTVIyVm5aU2wrRnlzYlJaTWdGQ0NvdFA3d3FhdkRVMUZTa3BhVWhNek5UcVFYMU5VVjlLZ3lJckxWSnZqVkdvaUdheFRETWhCc3g2TGVLU3JtNnBUS3E0OHI5TFprd1d5eCtvc2t5WWpUa0lqSXlBb20xeTNPZlpXUm13bXkrK1dObU5PUWlJaUlDU1ZmZ1l6T1pUREFZRE9CNUhsYnI3YzlXNDNLNVZ2WHUzWHM5QUllMHVRQjRDQ0VjQUo0UUloSkNSSWxhWEtZdm9scXRsMW84SUNBQWdZR0JDQTRPUm8wYU5SQVJFWUc0dURqVXJsMGJ5Y25KNVRYRjRHQ29WU3JFeHNaV3FxMWRsWTh0S3lzTDJkblpNSmxNTUp2TkZRWUxQQjVQdWRRT09Wamdjcm1ldUZHZ2RyWE8xanRKcnZhNkVoTnJJei9mQktNaFYyRTV1ZHMxTlp2TkNvSG5Ld1ExQUVoS1RJVEpkUFBHVEQ0blVSQ3VDR3F5U1hxbEJYc2J5bXRaV1ZsbmE5V3F0VmYydHhGQ2xJQUNBSGhaUHdoa2NGT3BWTkJvTk5CcXRkRHI5UXF3aFlhR0lqdzhIRkZSVVlpTGkwT2RPblZRUzBvbnVscXBFckJaclZhbHNxQXNxUG5XZ1BxbWR2aWFvRWFqc1paYXJSNTdxNXl0ZDlLaXZOcEVWRUlJV3JWcWhZc1ptYkJZekNpeVdPQnkzWjBjYlhwOUFCaVdSV1JFSkJJVHI3d2cyclJ1amN6TVM4Z3ZLS2pXTWRQckE4Q3FWUCtvcWQzSlVyTm16Y0ZmZnZubDJhZWVlaW9ibDZPa01yQlJPWkxnSmFma0tjTXdoR1ZaeXJJc1hDNVhLU0pLR2V3Q0FnSVFISnRnME53QUFDQUFTVVJCVkJ5TXNMQ3dhMUppcXJTS1pOUFROd20zZ3NvQ1gxQ1Rxd3NJcFpTSmlJZ1lBNkRWalJ6TTZPaG9HQXpHZngyd3hjZGZmVG9ESVFSMWtwTlFKem5KYjROZXBiYWIrQzhGbTVzcGhKQ1dmZnYySFFCZ0ZRQkI2by9nalpaS3BKVHdFbE5TQ2R6QWNad0NiaXFWcWtKd0N3d01SRWhJQ0pyNGtDOVVWZjR4ZUpDVmxZV2NuQnpGbjFZWnFGM0JCTzFmSGFrZGlyUFZaSURqRG5lZU8rdzJyek1VOUlaeHNmbkZMemRUZERyZGtPenM3TTZReXEwb3BScEl5YnUrZ1FSQkVJZ0ViQXB1eUIydUhCTE5VVW1KTjBxYW41K1BuSndjaGVMb2htbHNkcnU5d253MVg4SklHZGg0bmk5bmdtWm5aOGVxMWVyUjFUV1k5OTU3TDR4R0k0d21FNndseFhja05ianNERTFJcUhtbitWYjg0cGRTRWg4ZlAyamp4bzJwUTRZTUVTUi9tK0JybHBZMVNhWHFCT3BMUkdtMzJ4V3RUUTRzaElTRUlEdzgvS3FxUEs0SWJHWHoxY3BFUG4zejFTb3lRVWxNVE13b0FQZFY1MkRHeE1SY2RTOU92L2pGTDlWaWtyWVlNR0JBL3lGRGhud0FnUGN4U1FYSkpCWGhaZDFWVEZLR1lZaEtwYUl5QzRodllLR29xS2lVcjYxUm8wWlZCN1pNbjZKVFg4blB6OGVaTTJkS01YZVU5YStWRFJ6NGNxeWxwYVgxek1yS0d1Mi8zWDd4eTEwbEwrL1pzK2RvdDI3ZERzdmdCaWxTS2hmTFMwMWc1S3A1aFZQdWN2ZXJ5NlpxV1RPMXFpMzhWSWxoUDVSN2srTUY1Ri9NQW5FYVFOeG1FRTh4Q0djREk5aEJCQmNndUFEQjQ5MUVqbEJSQUNnbDhqYjQvOXF3OWFQM2pQTGZZNy80NWU2VGhHYmkvOVZMcnZIMytZdUZQQUNCQUFKQVpiT1VnUmZOQUNxQ2lqeUY2Q1lRWEJTQ0F4Q3NJSUlPakdBQjRmSkJQTGtnN2t3UTV6bkFsb3I0NUZwUXEvNjU5MFdGd1lPc2JBc01wbUtZTFRZVUZUdGhzN25nY0xyaGRISnd1emw0UER3OEhBK09GOER6SWdTQlFoUXBSRW9KQlpqM2x3MGVDZUFCL3kzMmkxK3VUU2k5YzgrZFpabXVoL2RNZndSeUlNRWJSSkFEQ1N5VmlDbEZrVUlRS0hoZUJNY0w4SEE4UEI0ZWJqY0hwNU9EdyttR3plWkNVYkVUWm9zTkJsTXhMbVZWclZLbm5JK3R1TVNKM0x3aUZCUllVVmprZ05YcWhOM2hCVFdYbTRQYnc4UGpFY0J4QW5oZUpMeEFJUWlVaUpRU1VCREx4WGNic0N6emhuOXErc1V2VnljaUJReVdTSmdLd3lDSUxHeDNkanJpb0FVTEZoeVpPSEhpUmE5SjZnMG1lRTFTaUpJRlNrUkt3QXVFY2dKRFBEeEwzWndLVG84YU5wY2FKVTR0Q20wNkZGajFNQllGSXRzY0JFTnhDUEpLNGxBbmdVTmNlQUVxcTRvc0IydzV1WVV3NVpmQVVtaEhpZFVKbTkwTmg5TURsOHNqZ1JvUGp1UEIrMnByRktBVWhBSk1TSWorTlFBSi9tbnFGNzljSGFnZE8xY2ZZTU1RRkhKbjk4bVZwR1pDN2VUSEowNmN1Qm9BRDIrRVZINFZRUWdGdkczOENDRWdVck5sSXRFZHNTbzFWQ28xVkdvTjFCb3RORm9kdExvQWlDUVF4VFkxOG9vU2tHY093NzMxejFjSWJxVk1VV04rQ1F6R1loUlliQ2dxZHNCcWM4SGg4TURwNHVCeXk2QW15Q1lvNGIwbUtLRWlKWlNDT1BKV2RDZUV2UEp2bW5EanBtM0IvWDNmdVdHL3gvTUNSazMrQXRIMXhpRzA5cHNZUG1vVEhBNlBmMlhmNVdJb2pBVFlNTVRFeHY5cmtzNjFXdTJnUGIvdWE0N0xWT0lhU3VGREplN05uaEJGa1FpQ0FGN2dDYzk1QXdlYzUvL1pPKy93S0tvMml2OW10bVZUSUUxNkNVaEhhVkpFMEFBZlVrUkJCQ3NsSUFncUxZTFNsZDZEOU41RXBTZ0lpaUJLRVpBZWxDSUlVZ1VFRXRKN3NtVm12ajltZDVKTkl5Qk4yZk04KzBCMlpuYnUzcDE1NTIzM0hDc1dxd1dMUThaUDFUNUlKRDR1anVTVUZIUTZBK2dLY3pQZUw5ZHp1eGkyR3hFSlJNY21rNUNnR3JYVU5BdnBHZGJNdkpyRHNObnRzbUMzTzBKUUdVRUJBUkNOUnNQNzdrczBmd3diczVGTlAvek91czk2c1dsMUgzYnUrWk4rZzllNkorWVJSMVI4b2YrY1RpNUF1ZkxsTzJReGJBWlFER1NxVzRuTzFqQkpsZ1hKTG1HMzJ3V2IzWlpaRmJWbVZrVlRVbEpJVEV3a0xqYVd5SnVSZVB2NDN0cXcvWDA5VGcxQjQxSkpURW9qSmRWQ2VwcVZqQXdiRm91aldKRHByU0ZKTXJLc09Bc2NZa2JVdkRjRWdSZmRsMmplU0UyMU1HL3Bic0xHZHlDNGNTV0NHMWRpOGF6T3JGeHprSmhZTi9YUW93cEZBVW5TMzVHbmR1YjBId3dNdmZjcDdUTm5UaE0yYllyR2FlakV4bzNmRU5MbExVSzZkbklSNUltT2ptYmdCd040dTN2WGxpMWF0bXBNRmlweFJWSFVJb0tpaUE3bUh4UkhxNGNrMmJWMkR5ZkZVWWFqNVNNMU5aWGs1Q1NOVWp3eE1RbTdyTSsxMENJQ1dHMTJOUVNOVFNFaEtZM2tGQXRwYVJiU25VYk5XVEN3UzlqdGttQ1haQ1FaeDdJcHhJOC9hcTB6NkhYdlBlZ0w1T25ta3drZDloWEJiY0lJcWpHY0p4cU80ZnV0SjdUdGRadE1aUGpZalZTdFA0cmlsVC9pN1BsSUxCWWJZeVp2cG56TkVYZ1U3VU85cGhQWnNkdFZLTmRtaytnZCtpWGVKZnRUdlBKSGZEcHZlK1lQR0pQTUs1MFg0bGYyQTd4TDl1ZUZWK2R3NFZLVXRyMWoxMFhVYlRJUmdHTy8vMDE2dW8zZ1JwVzA3YzgyVkVYdkQ0WmZkTi9oanlnRUFWTFNoRHM2dG5LVnFvd2FNL2Flam0vK3ZMa3NXN3FFU3hjdmFpU3VBRmV2WG1IRCt2VXNXTFNVWmN0WGN1TEVNWTA4ZGY2OE9UUnI5ajlXZnI2S2Q5OTcvMVVQRDdPSE14ekZVU0VWQkVFSE9JMmJ5dHNtU1VpT1ZVdzJtdzJyTFl1eWZIbzZxU21wSkNhcUlXbDBWQlFKaVZLdU9UWTl3STBiQ1VUSEpCT2ZrRXBTa2xvRlRYTzBkbGlzZHF5YXB5YmhxSUk2dkRVMURQMTQ4RXU5S0tDQys3M0dnbVcvc0hWOVA1bzlWNFhOUC83T0sxMFdjbmpuVUdyWFVCYzd6NWkvazVVTHVtRXk2cWxVb1NnOSszM0JqenYvWU9HbmIxR3BRbEdXZnI2UEYxNmR3L0c5STZsV1JlWHJPbkQ0SXVYS0JuQjB6d2lPbnJoS2ozNmZVOGpIVE0rdWpRa2Q5alVXcTQzd240Y0MwRy93VjRTODl4bjdmMUlabWpxMnEwTjhnbHJldWg2UmdOR29KOEEvODhsc01PZ0k4UGZpMm8wRTl4M3VSZzdFeHNZeWNjSTRZcUtqRUVTUjk5N3JRNE9uRzNMdDJqVUdodmJIWnJQaTYrdkhpcFZmWktZN2huekVqUnZYQVZWMHlkUExpelZyMXdFcXJmK2NXVE5JVEVyRTM4K2Z3VU9IYVZvV0FPdSsvb29ORzlacit3UDBmS2NYUnFPUnNHbFRYTWIyKzRrVFBGVzNMcDZlbnRqdGR2eDgvVGh4L0RqMTZ0WG54SW5qZlBDQlN1amo2K3RicjBTSjRpMHVYYnEwR2JBNVhsb2hRVkVVMlJHU09sWWtTT2gwZHV4Mkd6YWJIcXZOMGFpYm5rNmFTUTFKRXhJU2lJbU53V1RJdmFkTm41NXUxWHJXRXBPeVZFRTFvK2JJcXpseWE0NFExT210Q1NmMmZWeElweE43UFN3WHdsc2Q2OUhzT1pXQThzVldOV2plcENvTGwvL0NvcG1xOW1XYkZrL3lXbnVWYUNRdVBwWFBWaDlnMVpJZXZOUmFWZjJlTnE0amgzNzlpeW16Zm1MbEFsVTV2VmpSUWl5YjB4V1R5VUNsQ2tYNTdmZ1Y1aXplUmMrdWpibDhOWmJTSmYwb1dkd1BUMDhqeStkMjVkcU5lRzA4YjNTb3AvMC9MZDJLaDRjK2x5U3JIb3ZWN3I2TDNjaUJyOWF1cGthTkdvUjBlNXRMbHk0eGY5NGNHanpka0ZLbFN2SDErZzJjUDMrT2llUEh1Und6YWNvMEFCSVRFK2o5VGc4K0dQZ2hvTXIyVFJ3L2x2RVRKMU84ZUhGKytuRXJDK2JQWS9TWXpPTnIxcXFWZzNrNEw0SGx4TVJFUER3OGlJNk9adEtFY1VpeWhJOGpUNWlZbUlqSnc0UHZOMzNIamgzYjhQVDBmTFZIejNmMkxGdTZ4T28wYkk1VkNaSWozNmJJaWlJSWFraXEyQ1c3WUxQckZMMHpKRFdvSVdsNmVqcXBxU2xxU0JvZmowRXZrcDR1WXphN2psRzhFYW1Hb1BHSm1UMXJHZW1aQlFPYnpkbXpsdFZiQTluaHJWV3RYTHduVU8xaHVSRHExSFNsb2FsZXBUaW56dHpRL3E3NGVPWkM4ek5uSTVCbGhZYjF5cnNjMC9qcEN2eHhKbE5YczI3dElFd21nL1ozL2FmSzhlZTVTR1JaWnNpQWxuei80KzhFUGo2UU5xL040YnNmVGxDOVN1N01yR1lQQTFhcmxPTjlpOFdPbDZmUmZSZTdrUVAxNmpkZzU0N3RyUHhzQlphTURNS216eWpRY2JJc00yYjBLTnE4MkpiNjlkVmc2cSsvTG5IdDJ0OE1IenFZN2lGZFdMMzZTNkp1dXVvTFZLcFVtVmM2ZEN6dytFNmYvb09SSTRieVR1OTNhZHJVdFNkLzBvUnhYTDc4RjJIVFoySXltYXAwNjk3amVWd0tDWTRLcVpvU0UxQzlObVJaUXJKTFNIYTdReXRCclpKYUxSWXlMQm1rcDZWcmhZVEV4RVJ1UkNibTlOalVuclVVa2h6ZVdyclRXN000UWxCbno1b2tDNUpkOWRhY3piaG53c2Y0NlhSaXo0ZnBRcEN6YVZ0bVdPem9kSm5GMzZ3R0pMdVZ6L29aV1lWK2pkbmNYYjFlUks4WEVVV1J0aS9VNVBxWktYeS85WGQrM1BrSHc4ZCt5L3hsdXptOFl4aWUyWXhWcVJKK1pHVFlTRWhNdzdld3A1YS9pNDFMcFdSeFgvZGQ3RVpPdzFhdlBuUG5MU1Q4U0RpZnIxeUIwV2hrekxnSnR6eHUyZExGZUhoNDBMbEwxeXk1WWh2RmloVnpDVnYvQ1FvWExreEdSZ1poMDJkU3FGQWhUcHc0VG1GZlgyM2JNNDBhMDZKbEs4MWJMRjY4K0t1OWVyMjdjL0hpaGRZczRhaWRMTHh0TGw2YlhSSjBkcnZpVWlXMVdFalBTQ2MxTlkzazVHVDBPb0dvYUpsaVJRdmg1V25LOU5oaVlwTkpTRXhYZTliU3JWckJ3S1pWUWVWTWIwMVd2VFZuYnUzeGNvKzlEVHorTUYwSTRVY3Z1L3g5Nk1nbGF0ZkluVTIxWXZraTZQVWlCNDljY25uL1FQaEZxbFRLekR1Y3ZlRDZWRHQrOG0rcVZWWUpJWWVNMnNENWkxRjBlZU5wVmkzcHdmNmZQdUxVNlJzY1A1bVRRNnAyamRLWXpRYjJIaml2dmJmdjBBVkVVZURwYkY2akcyNEFUSm80bnZBajRUUnYvanpEaG8vazBLR0RMZy9kM0xCdjMxNzI3TjdOOEJFZnV3Z1dWYWhRZ2FTa0pIN1pzMXZMdDMyLzZUdVhZOCtmUDhmR2pkOFVhR3hQMXFpQjFXckZaREloU1JJSEQreW5aaTFWeTdSV3JkcmFPSS8rOWh0QlFlVXdtVXpsKy9UdDE1eHNSWVRzWHB2czlOclVRa0ptbGRTbUNpOWJNakpJVDFkemJTa3BLY1RFSmhONTA5VnIwOGNucUNzTVVoM2Vtc1ZpVTlkc09VTlFtOE5iazF5OXRkLzJEUGZSNmNTM0g3cWN4SVpmZWFiKzR6emZ0Q29yVmgzZzVPbnJyRnJTSTlkOWZYdzg2TmVyR1lOR3JzZmJ5MFNsQ2tWWi91VitEb1pmWXVyV0Q3WDkvamh6ZzRYTDkvRHUyOEVjL3ZVdjVpemF4ZEk1WFJ4R0w1SStINjVoWHRpYkJQaDdzV0xWQWJ5OVRacGhYUHZORWVJVDBuaXZSekJlWGlaNmRHbE0zOEZyOGZIeHdHalEwenYwUzdwM2VnWi9QeS8zWGV4R0RuVHUzSld3c0Ntc1hiMEtXWllaT09nalJGRjBLUjRrSmlieVdzZFhxUFBVVXd3ZE5vSzVzMmVTa1pGQm4vY3lVOTl6NXkvQ3g4ZUhTVk9tTWZQVDZTeGF1QUJQVDA4R1poTlNQbmIwS0JzMnJLZDkrdzYzSEZ2WnNrRzBiOStCZDN2MVJFSGgyV2VEcVZldlBnRHY5K25INUVrVFdQZjFWNWpOWm9ZTUd3NkFuNzkvaC9hdmROaStjY00zTnNEcU1HNTJWR1VybFcxWGJkcDE1TnBVcnkxcmxkUml0V3E5YlRvUjRoTWtvcUtUS1Y3VVY0dVNoRm1UWCtWR1JEeFJNY25FeDZlU21Ld3VlazlOczJwTHFUSXNrbUMxU3RqdGlpREppcWdvaU5ibytmMTBPakhzWWJvSW5tNCttU2VxbHVEQ1g5RWNPbktKR3RWTE1YMThSNTU5Um0ycHFOdGtJaSszcWNuSWo5cG94MWl0ZGthTy80NHZ2anBFUW1JNnRaNHN6ZmlSYmZsZnNNcjk5T0hJOVp3NUY0R2ZyeWMvLzNJV25VNWthR2dyK3J6VEJGRGJQUVlNL1lydHU4NlFuSkpCblpwbG1EYTJBNDJlVm1YUU9uWmR4T1dyc2Z5NmU3Z2puMllqZE5qWHJQbm1DS0lnMExGZEhXWlBlUU1QRDRQN0xuNkVzZWQ0NWYrazZscHVpSStQbjFqamlhcmZBeWxBS3BBbUNJSUZWZDNLN2xDMWtuVTZuV0l3R2pFWlRZcUhod2tQc3hsUHN5ZGUzbDc0K0JUQ3Q3QXZvZ2dOYTBtVUQzcU1hbFZLVUQ1SXBUVVN4bzk4eVhVWmxjTjdTMDJ6a3A1aEpTUERKbGlzRWphYklraVNMTWd5WXVmWDYray9XOURqTVBEa3cyYllXald2enVpaEx6MnlONGlpZ0NDNHYvdkRNbWNGL2V4SHliQXBpdkpIbzRZTjN2Lzc3NnNwRHVPV0pnaENPbUJCbGV5VFJGR1VSVkZVREFhRG9oSlBlaWdlSGg2WVBjMTRlbnJoN2UxTjRVS0ZFUVNGZWsvS2xDbmxUNlVLeGFqNVJHazhQQXpvVXh5NXRZd01HMVpMMXRVRldSYTVaK3RiV3pxblc1ZUh6YWhsaCtEYisxLzNnMGVlbTBiUklyZS9yRVpTOUZ5T3FreDhraDVKRnNsSWZ6UlZxanpNWm5TaWduOGhPMEZGemlJS2ViZlF5QXBjaWFsTWJJSUpTZGJkc3psVHh5UVRXTmhDMmNmTzN0TElYYjkyN1ZINHFhb3ZXTGo0MlJmYnROcnB5TFhaRkVXeGdXQVhCTFdRSU11eUFDZzJteTNUSU9KWTZTU3JLeFU4VENhMXVUbEZJakVwazlvb3FFd2crdFEwaTRPNUkxdHVUWktSSkZtUUpNV3h5a0I5b1NEcTlib3VELzFUSVdIUkkzRXpwOXY5K1AxQ0tmUUdEM3dLdTNWRlUxTlRpRTlPSWlhaEtqVWZ2NHBKbjVpclVmdjEzQlBvOU9iN01tZXBxU25FSmljUkZmOEU5U3FkeXRlNGxTejFhQkRqRkM5Um9nM3dpOE93V1FHOUlLREgwZGVHcW13bHFNdlFCUVVFUVJRRVJSVFZiZ1JScDhOaXRTS2drSm9ta1p5Y1FYeENHakV4eVpRcTRZZVlubTVUdlRXclN5TXVkcnVFSk1scUpkUkJucVNBa0haemJtdWc4Y000V1lkMkRIM2t3dERJdUNMb0RSNy9LVmFJZndJdkwyK0tGaXVCVHU5QlJGenVpbCtYbzZ1aDA1dnYyNXhsanNuTWxaakt1QUdpS0RiY3MvZEFMVEpKS0EyS291aFFLNlNxTlZNVUZFVldLNlN5TTRyTXVwWlVsU1JJVDdlUmtwcEJZbElhc2ZHcFJFWWxJYVpyUEd0cXo1ck5MbUdYSEViTkdZSm1NbmdJUm9QdVRmZlA4dkFnTnRIMG4yU0YrS2Z3OWlsRVRLSXAxMjF4aWZvSE1tZmVQb1dJU1RDNWZ4d0hTcGN1bmIzMXc4bjhvWE95Zmpob2paQWx0ZjNEN2xna2I3ZlpzRHBhUU5JenJLU21XVWxPeVNBaElZMlkyR1QwRmtzbWVhVFdzNmJtMWdTMWIwMXhXRTZFaENzem54UUU0ZFhiQ2drZjRXVDJ2WjRmU2RZaHlUcTNwNWFIbDVRWUg0c3NneWk2enZlRG1qTjFUSEYzOUpzbkpTWnkrYStMcE9ham9ldmw1VTFRdWNjcFZMandYUm52dlQ2bndXQm91L2FyOVYrOThYckhDMlJTaCtzRlFiQTd3bEZabGV4VEJFbVNGVW1TQk1rdUtVNnZ6VzZ6QVFvV2kweDZ1cFhVVkF1SnllbkV4YVdpVjNOcldaZE55UTV2VFZhTEJnbzQrZGE4dkV5dkYyVEEvekdLNDN2N0ZQY0VuVTZpaUc5Q3ZsVEh1VUVuU285c29hQWdTRTlQZHpGcW9CcVVCemxuNmVscGQvUWcrK3ZTQmRMU1V2UGRKelUxaGN0L1hhUkdyVHAzWmF6MzQ1eTE2OVIrRHJpYUpkZG1kWGh0a3FLb3VUWkZrUlZWeFVweXBUYXkyeEZRc0ZnbE1pdzIxV3RMemlBK01RMTlGdjBDTmE5bXp5d2F5QTVYRUFWaDgxZDlQRVJSZUwwZ1J1MC9SbkY4ejVHYW1rSkVnbCsrVk1kM2l1M2JmbUxGOG1WRVJkMmtSSWtTZlA3bEdzNmZQMGVQN2lIYVBrT0hqK1NGRjlxNGY0aUhHTGN5TUZtdnBYL1RPVDA5dmRxMGU3bjkrdSsrM1dqSnpMVmhFd1JFVUJ5NU5rRlFGQmxKa2hWSmxnUzd1a2dldTkyR0FGaXRNaGtXRytucFZsSlNNMGhLU2tlZm5VRFNuaVczbG5YNVZQT20xVjRGU3Q5cW9Ga3BqdDBvZUlqaTVlWE56VWlabS9GK0ZQT1B2eXVmZStQR0RhWk1uc2lZY1JPb1Y2OCtTVWxKQUZTb1VKSHRPM2NEOEU2UGJ2ZnNleTFmdHBSMkw3Y25JQ0FneDdobXpaak95Wk8vWXpRYWFmNThTOTU3djQvR0tuSHQyalhtekpyQnlWTW5NWmxNdEdqUmtsNjkzOHZCT25FM2NhdHpQdGU0SVFhREFVRVFDUW9Lb251UG5qUnExTmg5OGY1emxCcjU4YWdHMzMyN2NSZmFFaXRGRDBLbVBvSktJYTVremJXcGkrUWxRTUZxazdGWTdHUlliS1NscTdrMjBSbUNTcEtjMmVJaFo3WjQ0R3p4ME9rS3RPVC92MHB4ZkYvQzBueW9qdThFWi84OFEyQmdJSTBhTmNab05CSVlHT2dJeHdSTUpoTW1rOGxsTGVIZHhtY3JsaEVYRjV2ai9kR2pSbEt5VkNrMmZyZVp4VXVXYytqZ0FUWnQrbGIxK0dXWm9ZTS9wRkxsS256NzNXYm16Sm5QbnQyNzJMamhtM3Myem9LZWMrNzhoWHkvWlN2ZGUvUWtiT3BrTm55ei9vRmNKNElnVUtkT0hWcTBhRUh6NXMwcFVlTDJuQWhKa3RpL2Z4L0RobnpFdGIvL3ZpOHBnYkZqUnZIV0c2L1J2VnNYenB3K3JXMzcrK3BWeG84YjA0d3MxVkVjNjBlZERMdVNKQW1TSkFtS0lndVNhdHdFcDdDeUpLa1JwOVZxZC9IYU5NUG0wdDRoT1NtLzFSYVArS3N6bmhBRVd0N3FDL3dUaW1NM1ZNOHRMNnJqMjhIeDQ4ZDR1VzBicGsyZFRHUmtKQyszYmNQTGJkdXc4ck1WQmY2TVF3Y1AwUG10TjJqZUxKZ2UzVVA0NDlRcGwrMTdkdThpcEdzblhtajFQTjI3ZGVIUXdRUGF0bjU5MytmbHRtcG8rOEdBL3J6Y3RnMTkzMzlYTXlMQndVM3BHdElOazhsRWthSkZxVnV2SHVmT25nVWdMaTRPUDM5L09uWHVqTkZvcEZUcDBqUnEvQ3gvL25ubW5zMzc3WnpUYkRiVHFGRmpoZzBmeVpMRkMxMFlaZThYeXBVcmgwNm5ZOXUyYmV6ZHU1ZWFOV3RpTUJoeU5kaTUvWDlBLzc3OHNtYzNaODZjUnBLbDJ6cDM0OGFOMGV2MWVUNGdjdnQ3M2RkZjRlbnB5ZXExWHpONDhGREdqeHVENHJqSVo4Nll6c3Z0WDJtMlp1MjYwbVRUSHdWMGdpQUlvaWc2MTQ0aWF6VUFTWHM1cWRXc0Zqc1pHVGJTMHF5SXpvS0JYU3NZT0xVTXRLS0I0TzNsMGI1Z1Q1STdwemgyUTBWS3F2Q1BjMnkxYXRYbTIwMWJHQkE2a0pJbFMvSHRwaTE4dTJrTElkMjZGK2o0aXhjdThQSEk0YnpYcHk5YnRtN2oxZGRlWitBSC9UWHVyaXRYTGpOKzNCaUdEQm5PNWg5KzRxV1gyakZpeEREUzB0U2svSnk1OC9sMjB4WUFac3lhemJlYnRqQjMva0lBUkZHa1UrY3UrUHFxbnVsZmYxM2l3UDc5Tkdqd05BQ0JnWUhNbVRzZkR3K3pkbk1jUDNhTUdqVnEzck01djVOejFxdmZBS3ZOcGhuays0bkF3RUJ1M0xqaGNDWlVpaTAvUDFkUC84aVJjRVlNRzRMTlppTXVMbzUzZW5RbkxrNFZHLzUweGl5R0RSOTVSdzVJUUVCQW5sNytod05ET1g3c3FHYk1Gc3lmNTdpZXptdS9iOVZxMVRFYWpWeTdwbnFLNTgrZm8wR0RwNmxWdTFhRFhMdzJFUkFWQlVFUUJMWHRROGxhUkhDMGdOaXplbTEyMGpPc2lIWkoxc1JabkdHb3JHU3llS0FvZ2lnS0wvK1RIMkxRd0ZCZTY5aWVrQzV2MGJYem0yelovTDJXMTNpdDR5dTBiL2NpM1VQdTdXS0c3aUZkdUhqeDluUUZ0djMwSTY5MWZJVVhXcmRnOXF5OENmNTI3TmpPNkU5Ry9tZU02K2JObXdodTBwUkdqUnBqTXBsbzFmb0ZxbFN0eWphSGtFZEFRQ0RMVjN4T3RlclZFVVdSbDlxMncyYTE4dmZmVnd0OGpqOU9uYUpGODZhRWRPbEVsYXBWZVM2NFNhNzdMVnd3RDdPbkp5KzB1WDg2UVFVNXB5QUkrUHY1azVKNi8wVjRqRVlqa2lRUkVCQkE0OGFOa1dVWms4bTFQNjV1M1hyNEJ3UXdadlFuREJvNGdQYXZkTURmMzE4Ny9sNmdUOS8rVEp3d25ybHpaclAxaHkxMDZhb1dxQjZ2VUlGZjl1eEJsbVV1WGJyRXpadVJwQ1NyOC9iNDR4WFlzM3NYWGw3ZXpiTVpOWDJtY2N2c2FWTmtSempxMUVlUVZNZE1WWktYc0ZodHBHZllFTE1ZTmExZ0lDdUFvMmlRR2pHM0dYZUJJZmVqSWNOWStjVnE1c3hid09jclYzRHAwaVdOM25ocTJLY1A1UTNlb21VcnZsNi9nVzdkM3VaUlFtUmtKTVdMdStadHlwUUpJakpTWlJYMjl2Ym10OTkrcFhldkhuUjY4M1c2ZGUyY2F5aVNINm8vOFFUYmR1emlxM1ViaUlpSWNGRTRjdUx6bFo5eCtQQWhKazZjbkdmNGM3ZFIwSE1xaWtKY2ZCemVEeWp0VXE1Y09hcFdyY3IrL2Z1MW9sQjJ3OXU3OTNzYy9lMVhURWJUUDNvd21NMW1PbmJzU01lT0hURVlETFJyMTQ2T0hUdnkyR09QdWV6M2VJVUs2ajN6MVJwNjlYNlhRb1hVWFB1cnI3MkJUcStqZTdjdWZQSDVaM2g3ZTJQMlZMM2pRUjhPNXVlZmQvSjI5NjVWdW9hRVZIRVlzNng1TnAyaUtDcFhtM00xZ2l3ak9VTlRXZFk2T2xTdlRjSmlzYUdYc3F3eWNEVGtPc05RQU1GazByZTltejlJNGNLK1BQRmtEUzVlT0UvNThubVRLeVltSmpCNTRnU2lvcUt3MjIxMDZ0eFZZK004YytZME0yZE1KejB0alNKRml6RjAyQWd0TWI1NzE4K3NYdjBsbG93TXFqL3hKQjhNL0ZETFArejZlU2RqUjM5TWVub0dmZnYxMTd5RWI5YXZVNVBYaWtMVFp2K2pXL2NldC93ZVI0NkU4K24wYVlpQ1NNbFNKZkUwZTJyYjhodEQ4MmJCOUIvd0FVdVhMRUpSNFBzdFd4ODZ3MWEwYUZFaUl5SmMzcnQrL1JxMWE2dTlTbnQvMmNPcUw3OWd4c3pabENxdEZzcWZhOXd3MTVzcnU3R3paR1N3ZGVzUHRHNzlBaVlQRDRvWEwwN3o1cyt6Yjk5ZWwvM1dyL3VhN2R0K1l0YWNlWGV0NGZSV3VKMXpIamtTanRGZ29GTGwrNzlFeW1xMVlyZmJPWHBVRGZ0ME9oMFdpOFUxcFpHU3drY2ZEYVJ6bHhET25mMlRLWk1uTW5UWWlEc3FGcVducDdOK3ZWb29hZGV1SFQvODhBTlpGNmRualhCMjcvcVo4Uk1tTVQxc0doTW1UYVpTcGNxWXpXYUdEaHNCUUZKU0VtKzgxb0VTSlVvQ1VLcDBhVDZkTWN0eDMreHErUG5LbFg5a05XeUNJRGpDVVVYSUducXJLVE1KUlJHUUpBVzdYZlhhYkRZN0ZvdGREVVZWYjAwV0hFVURUYWhGVVJSUkVJUzdHZ05FUjBWeDZ1VHZWS2xTTmQvOXpwMDd4LythUDgreUZTdVpNM2NCczJiT3dPcFlHemJxNHhHRWhnN2s4eS9YOE13empWaXlhSUdXcjFtL2ZoMXo1c3huNVJlckFmaGh5MmJ0TTMxOGZGajV4V3BHanhuSC9QbHpBWlZZYi9QbVRTeGN0SlFseXo3anQ5OStZOWZQTy9NZG04VmlZY0s0TVl3YVBaWXZWNitsVE9teTJyWmJqY0Z1dHhNVkZjVzZiNzVsL1RjYkg1anhjblp2QXlpeWpOMXUxNHhRbXhkZllzK2VYWVNISDhadXQvUHp6enY1NDlSSldyUlU2MGV4c2JFSUFvZzZIWW1KQ2F4ZTlhWGpjMXlySHNWTGxPRFF3WVBZYkRhaW8xUkpRcVBKeEJlZnIyVHQydFhZYkRZU0V1TFp1L2NYYXRTb2tSa0tmNytKYnpkdVlPYnN1VnI0ZE0vRDd3S2UwMkt4Y1BqUVFTWlBta0R2ZDkvSHkrditFNFJHUjBkckJzcG9OT0xyNjB0Q2dxdksyY1dMRndnT2JzcGJuVG96OHBQUkdJMG1MY2QycjNEeTVFaytuVEdMNTRLYk1PTGpUL2p0MXlNdTI1T1NrcGcyZFRJdnZ0UTJSemo4OTk5WFdiWjBjYk1zSWFoV1JIQjRiS0lnQ0M3THJGUWFOZGxSSTNETnRlblZTcWlzZVd1eXltRXBBRUo2NUx6V1FNbTc4YVduaDAzRjdHSEdhRExTcDI5L1NwY3BrKy8rTld2V1l2bXlKV3piOWlNNm5SNkxKWVBrNUdRUzR1UHg5dmFoYXJYcUFMelV0aDFObXpVRDRQRGhRMXo3K3lydjluNUhlN0o1ZS90azVoMGM3SjVWcTFYVEV1SGg0WWQ0L3ZtV21NMnFhL3ppaXk4UkhuNllwczMrbCtmWXJsNjl3bU9QRmRHTWM1VnExZGozeTU0Q2pRR2dhMGkzZTVibktBaXlOK2hPbVR5UktaTW44bnlMbG56OHlXZ3FWcXpFcURIaldEQi9McEVSRVpRcFc1YXBZWjlxTW0ydFgyakRxVk1uNmRHOUt6cWRubll2dDZkaXhVckV4YnZlT0FNSGZrall0S21zV0w2VU1tWEtzSFQ1U294R0kxT21oakYzeml5K1dyc0dnOEZBY0pPbWhEakNmVW1TbURaVkRRUGZmTjIxdytqekwxZFRyRmp4dXo0ZkJUMW52ejd2SXdncWMreWdEd2ZmdFQ0MlJRRnZ6NEtYd2k5ZnZveXZyeS9ObXpjSDRQang0MWl0MWh6M3c2MkF1UUFBSUFCSlJFRlVUODJhS2syM1hxOW5VRGFtM0R2RmQ5OTlsM2N1UGNzNWF0V3FUYTFhdGJXL0Z5OWF3TzVkdS9oZjgrZHpGTEg2OTN1ZmxPUVVRcnEvWFdMMDJQRlBObm11MGEvWjhtdzJRYlhrem5CVVVZc0lNb0tnZW15U28xYmd6TFhwSmFmeWxIUDVsSnBiQXhDTVJsM3J1M1h4RFBwd3NFWWJYQkNzWGJNS3U4M09sS25URVFSQmF4OXdoamhPR0F3Ry9QelVKNnpOYWlPNFNWTk5iaXkveEcvV0VDbXJkeTRJZ2xhS3ppKy9rbGV6YUVIR0lHWmY1M09QMExKVmExcTJ5dmtUVnF4WWlWLzJIY3ozMkVhTkd1ZDU0NXBNSmtaK1BNcmx2WGQ2NWVTL3E5L2dhYjVldnlISCt4VXFWbVRtN0xtNWZyWk9wMlBQM2dQMzFkQVg1SnkzbXE5L0FrRUF2YzVPYW1wS2dTcVZpcUp3N05peGYzemVWV3UrdW05ejNLdjNlL1RxbmJ1bSt1dzU4N09tS3VvQng3T0ZvN3BzNGFpZ3lMSWlTWFpFUVVTU0JNZmlna3l2VFpTZFlhaWpHcXFTdVdsaGFHc2VFS0tqWS9EMjhVWVFCSTRmUDBaU1VoS0tvbEM2VEJtU2s1TTVmLzRjQUQvOXVGVVRjcTFYdno0Lzc5eko5ZXVxV096T25UczRlZkwzZk05VHQyNTl0bS9iUm5wNk9qYWJqUisyYkthK296U2RGOHFXRFNJNk9sb3J1VWZjeUpUM3U1TXgvSk1udlRsTGJzK043RWx2enh3OWdROTZ6bkliRTBBUjN3UlNrL01XemZiMExGaklXOUQ5N3VabjNjMXptanc4bW1UejFwdzliYUxqNVNEbFVBUkpraEFFdXlBN284NHNYcHRlQzBNVkJTVkxHSm9XTWJmcDNRcEQ4MEorZ2hTdnZmWTZZOGVNNG9jdFc2aGNwUW9WS2xZa01TR0J3TUJBeG93Yno2ZGgwN0JZTEFRK0ZzaVFvV3Bpc2txVnF2VHJQNENoZ3ovRVpyZFJMcWdjZzRjT3kzY01UOVd0Uzh0V3JYbTNsMW93ZVBhNUpqUnQya3hMaGk1ZHNwaVUxQlJrU1dMZjNyMTA2UnJDUzIzYk1YVDRDRVlNRzRLZnZ6OTZ2VTRySHR6SkdQN0prMTRVNVFJLzZSOGxwS1lrSTRweWpwNUFkYzZrQnpKbnFTbko2RVFwMXo3Rll2NXgzSWoxSnlwU3djdkhMOGZZeXBXdmNNdEY2WjZlWHBRclgrR3VqZmRCbkJNb3NYM0hyc3JQTjI5NmdpdzBSazZqcGhvMkJGbVdIZTRiU0xLZ2RYWTRLNlJDa1VBekZxdGRzRnBsN0pJaXlLcFlpODRXczJDU0tBb2YzTzZvSGlYdTludUJpK2YvSkxoV3dacytMMGRWSmphNWtIdHRiamJjakx4QlFLRWtnaDdMT1plWG95c1RtM1QvNXl5L01UbTl5YWo0UWtUR0IyQ1RqS1Erb3NRdDZlbnBTMXUzYnIwS1ZROGhHVlh3SmQwaCtHSVRCQ1JSRkdTRFhsQ01SaEdUVWErWVBReVl6UVk4elNhOHZFem9uV0dva29YSlExRVVVUlNGNXZjNkNlcEdUbmg3S3JmRjExVW04RHhSOGRXNUdYa0RieDgzTlhocVNqSXBLY25ZYlJtVUNUaVhleW9oOEN4UmNVL2V0emx6amtteXAxTTI4R3krSG5oUi95U0sraWM5NHFJOFNrUGdxeXpocU03QjlxRldSeEVjQytOQmxoVkZWcHQyRlVsUzFBcXBYVUtmclNrWEJZUzR5ek9xY1FkaUxiZWJCSFVqNXcyZzE5bHY2NElXUlptNmxjNXdPYm95Y1lsV0V1TGl5TWg0TkIvMVpyTW5vaWdUVU5oRzJjZk9JUXBLbnRkcHZVb251UkpUbVpnRXl6MmRNN1BaRTUwb0VlQnJvV3pnMlFML3RvOHlPYXNnQ05XM3J1OWJ2SFhIdVg5cHhrMUJoK0RJc1lFZ0tLck5rbVhVYmc1SFpkVDUwcXZVMzluV2hucDdOTG5UUVJYeFRTQWlJY0Z0Mk80QUtTbUpsUFM3ZmNvaVViQlR2c2dmbEMvaWx0KzdIY01SOU5oWmdoNTdPT1QzM0hERlU3V0NxZ0YvT3cyYkFqb2hhd0ZCemJVcGlxTk5UWEtzUm5EMHR5RTZ2RFVCYlcwb2drNFVuN3ZUQVJYemowT1JFb2k2ZVkyMEI3Q083dCtJdE5RVW9pS3VncFJJVWI5L3hzWDJhRC9wSDc0NWN4dTFPNE92cjJjdDFLS0Juc3dDZ2lyMG90R3BLWUtzSURpOE5rR1dsU3dlbTVPZXlPR3hEZXJYVENjSUJQK1RIL0twU3BlNEdlL0R6ZmdBa2hPTnBLUzZmNmk4NE8wRkJwMlZVb0Z4RlBGTmNrK0lHMjRBQnIydVljM3F4UXduL29qVVp3bEhSUVJFQlVVQVFWQVV4eElyeGJHNHdFRzdKc2t5Z3BkWko5anNpaUNwMVZBeCtmcnNwcDVtNDQvdXFYWEREVGNlSkk2ZXVOTG5xZUNKcDhoU0hSVUUwZ0dySUFnMlFVRFdhZFZSSFI0bXZlTGhZY0JzTnFLM1Mxa1d2aXVLY0RNcXNlSDk2b3gzd3cwMzNNalRhelBvS2dOL1pnMUZGUVZSRUZBN09CQ1FaUVc3QklKTlJoRHNhc2dvZ09EaDRTSGE3WFpCVVJSUlVSU2QzVzdmSkFqQzgrNXBkY01OTng0azdIYjdib1BCTURHTHg1WWlDRUlxWUJFRXdTb0lnaVFJZ3F6WDZ4V2owYWc0Nk80VnM5bU02RndYcVNpSzhPcXJyK29FUVdqb25sSTMzSERqUVVPdjE5Y3RXN1pzMXNLQlZrQndPR0t1VkVaWlhvTFJhQlFsU1JJVlJkRWxKaVkyOVBiMjN1V2VVamZjdVA5UUZJWEl5RWh1M294Q2tpUlNVcElmK1RrNWRlcFU3NzU5KzU1MWVteU9WN29nQ0ZiQTd2VGFkRHFkb3Rmck1SZ01pc2xrUXArVnljTER3Nk91Ky9KeXc0MEhZOVNPSFR1R2dxQ3RobkRyOFlLdi8yUGxnUXRrYWZ0d2tFOXFqVFNDSUNBSUFxS29RNi9YbzljYk1oZVdBb0pPcDN2cTMvamxRME5EYWRXcVZZSDJUVWxKUVJBRWR1L2VmY2ZucTFXckZwTW5UNzdUdkFHaG9hRVVLVktFd29VTDA3dDNiMDBFeFkxSEY1R1JrU2dJRkMxV3d0M2NuZ1UrUGo2VnM0V2hvcE40TXF2dFVobUpaTFdmVFpIVkhKdHpuYWdnQ0hYY1UzbHZNV3pZTURadDJzUzZkZXZZdEdrVE8zZnVwRisvZnU2SmVjUVJGUlh0MXVQTkJRYUQ0UWx5NXRpeUdUVUZsVzVOUVZGa0ZGbldkdUQ4K2ZORmdFcnVxYngzU0UxTlpkNjhlWVNGaFJFY0hFeHdjRENMRnk5bTVjcVZ4TVRFdUNmb0VZWWtTWGZrcVowNS9RY0RRL3ZmOC9HZE9YT2FzR2xUMk81UUtuTmk0OFp2Q09ueUZpRmRPN2tJOGtSSFJ6UHdnd0dFZE8xRTN6N3ZjZlhxRlczYmlSUEg2ZmwyTjdxRmRHYjBKeVB6MVdZVkJLSEN5STlIZWVkajNBQUVIQXNObk0yNnpxcW9VS0pFaVNmL0t4ZkpkOTk5Ui8zNjlUR2J6WGg1ZWRHOGVYUE9uWE5sZXZqbGwxK29WcTBhSGg0ZU5HdldqTC8rK2t2Ykpzc3lZOGVPcFhUcDBuaDdlOU9vVVNQMjc5K2Y2N21pbzZONTVaVlg4UFB6dzl2Ym14ZGVlSUVMRnk1bzJ3TURBL253UTVWTjk5aXhZNlNucHhNY25MbXc0OWxubndYZzRNR0Q3cnY3RVVaeThwMnRPcWxjcFNxanhveTlwMk9iUDI4dXk1WXU0ZExGaXk1RzZPclZLMnhZdjU0Rmk1YXliUGxLVHB3NHhwRWo0WTVqNXRDczJmOVkrZmtxdW5WL215bVRKbXFwbUVrVHhqSHlrMUY4dHZKTFNwVXVvMmxtNUlWbm53c3U0VEJrTG9TVGpyQlVXNEdnS2xpcFhwdm0waGtNaHYrRVlmdjk5OTk1NVpWWDZOeTVNMmZPbkdISGpoM2N2SGxUTXk1T3pKbzFpMG1USm5IOCtIRzh2YjFwMXF5WnByd3pjZUpFbGl4WndwSWxTemg1OGlRZE9uU2dlZlBtbk0xRkhEYzBOQlNMeFVKNGVEakhqaDFEbG1WQ1FqTDFCQVlOR3FSeDAxKy9maDJqMFVoQVFFQldWNXVBZ0FDdVhidm12cnZkeUlIWTJGZ0dEUXdscE10YmRBdnB6T0ZENmdQUXFjbmJvWDFiUXZ1N3BqS0dEZmxJOWFLNnZFVzdsMTdnelRkZTFiWmR2SGlSMFA1OTZkNnRDNE0rR01ETm01RXV4Njc3K2l1WC9RRjZ2dE9Mc09rektQLzQ0NjczMm9rVFBGVzNMcDZlS3NtcW42OGZKNDRmMTd5eTU1NVRIK0NGQ3hmbXp6L1BZTFZhaVl5SXdNTnNKaWlvSEFEKy92NmNPSjQvelhueFlzWEtaREZxamp4YjFuQlV5UXhKMVR3YmVsQjcySFE2WGZYL3dvV2dLQXFmZnZvcC9mdXI3bmxRVUJBaElTRXNXTERBWmI5UFB2bUVkdTNhQWJCaXhRcEtsU3JGNXMyYmVlbWxsNWc4ZVRMTGx5L1hDaElEQnc1azE2NWR6Snc1TThmblhMNThtZEtsUzFPeVpFazhQVDFadm55NWk1RWFOaXlUUFRjdExRMFBENDhjWXphWlREbmswOXh3QStDcnRhdXBVYU1HSWQzZTV0S2xTOHlmTjRjR1R6ZlVOSG5QbnovSHhQSGpYSTZaTkdVYW9FcFk5bjZuaDZhL1liVmFtVGgrTE9NblRxWjQ4ZUw4OU9OV0ZzeWZ4K2d4bWNmWHJGVXJoNTVIWHNKRGlZbUplSGg0RUIwZHphUUo0NUJrQ1I5SG5qQXhNUkdUaHdmZmIvcU9IVHUyWVRRYVNVbEpJU2twQ1pQSmhOVnFaZTZjV2R5NGNTT0h3bFoyZUhsN2w4dGkxQndHVGhFZEZBT09YamFjdFFKRlVSUkI3Mnh5RXdUaFAySFlhdGFzU1VCQUFOT25UK2ZNbVRPY1BYdVdYMy85bGFKRlhZdm5qUnRuQ3BVRUJBUlF2bng1L3ZqakQ1NTg4a2xTVTFQcDFxMGJiNytkS1pSc3RWcGRqbkZpeUpBaHZQbm1td1FHQnRLMGFWTmVmUEZGdW5idG11dll6R1p6RGpVaFVDWGRIb1NNbXhzUFArclZiOENjV1RNQWdmcjFHeEEyZlVhQmpwTmxtVEdqUjlIbXhiYlVyOThBVUtVaHIxMzdtK0ZEQjZ2N0tESmUyZlFLS2xXcVRLVktCZGRLUFgzNkQ0Nk5HRXJvQjRNNCsrZWZYTXlTaHBrMFlSd0JnWUdFVFovSnF4MWVkakdJQXo4WXdJc3Z2a1NIanE4eVl0alFmTTloTUJncVpNdXQ1Y3l4b2FDQVZrRFFaMjZnNm4vaFFqaDQ4Q0RObWpXalNaTW1ORzNhbE5kZWU0M3c4SENXTGwyYTcxTklyOWRqTkJvMXJjMDFhOVpRdmJxcnJjL04yMnJidGkzWHIxL24rKysvNThjZmYyVDQ4T0hNbnorZnc0Y1BheTY2RTZWS2xTSWpJNE9FaEFSOGZYMEJzTmxzeE1iR1VySmtTZmRkN0VaT3cxYXZQblBuTFNUOFNEaWZyMXlCMFdoa3pMZ0p0enh1MmRMRmVIaDQwTGxMNWtQV1pyTlJyRmd4VnF6ODRxNk1yWERod21Sa1pCQTJmU2FGQ2hYaXhJbmpGSFpjMTRVTEYrYVpSbzAxa1hOVmh0S2JRb1VLa1pTWXlJU0pVM2o4OGNjNWUvWlA3VjdJQzRJZ1ZNNlNXOHVhWjh0ZVFGQ2NCUVFSRUtLaW9pb0Jwdi9DaGJCZ3dRTHExNi9QMXExYkdUeDRNQzFhdE9ER2pSczVKUFd5NXN1U2s1TzVlUEVpMWF0WHAzejU4cGhNSmk1Y3VFQ0ZDaFcwMTZKRmk5aXlaVXV1SHR2NTgrZnAwcVVMcTFhdFl2LysvWnc2ZFlyampseERWdFN1WFJ1ejJjemV2Wm1xNS92MjdVTVVSWjUrK21uM1hleEdEa3lhT0o3d0krRTBiLzQ4dzRhUDVOQ2hneTdTa2JsaDM3Njk3Tm05bStFalBuYVJxcXhRb1FKSlNVbjhzbWUzbG0vN2ZwT3JUdWo1OCtmWXVQR2JBbzN0eVJvMXNGcXRtRXdtSkVuaTRJSDkxS3lsYXBuV3FsVmJHK2ZSMzM0aktLZ2NScU9SWXNXTFU5alhGNVBEc2RpM2Q2OTJURDR3TFY2NlBEQVhnNmIxc0FGWlBEWkhqczNiMjd2Q2YrVkM4UGYzWitmT25adzhlWktTSlV1eWJ0MDZsaTFiaHArZm44dCs0OGVQcDNIanh2ajYraElhR2tyRmloVnAzYm8xb2lneWNPQkF4bzRkUzdGaXhXallzQ0hyMTY5bnhvd1piTisrUGNmNXpwNDlTNTgrZlpnM2J4NEJBUUdzV0xFQ2IyOXZxbFJSQlcwbVRacEU3ZHExYWRXcUZWNWVYdlRvMFlPK2Zmdmk0K09EMFdpa2QrL2VkTy9lL2I0cG5ydng3MExuemwwSkM1dkMydFdya0dXWmdZTStRaFRGZkJYZTVzNmVTVVpHQm4zZTY2Vjl6dHo1aS9EeDhXSFNsR25NL0hRNml4WXV3TlBUazRIWmhKU1BIVDNLaGczcmFkKyt3eTNIVnJac0VPM2JkK0RkWGoxUlVIajIyV0JOTy9qOVB2MllQR2tDNjc3K0NyUFp6SkJodzdYSWFQaUlqeGszYmpRMnE0M1NwVXN6ZU9qd1c1NnJRb1dLandIWGMvZllIRG9oR3Jla2dpQ0tvb2ZGWWhtZzErc24vMXQvL05EUVVQNzg4MDkrL1BGSFltTmo2ZG16Snp0MzdzUmdNUERVVTAveHhodHYwTE5uVDY1ZXZZcXZyeTgrUGo1TW5UcVZsU3RYOHZmZmY5T29VU01XTGx4SUdZYzZ2YzFtWTh5WU1YejIyV2ZFeE1SUXVYSmxQdm5rRXpwMDZPQjRHdFhpalRmZVlPalFvVVJIUnpOZ3dBQzJiOTlPY25JeWRlclVZZHEwYVRScTFBaFEyejI2ZGV0R1dGaVlsazhMRFExbHpabzFpS0pJeDQ0ZG1UMTdkcTVocmh1UER2YnMyZU5XZDhzSGNiR3hZVFZyVk4rT3VtYlUrVW9UQkNFRFZTbGVFa1ZSWFROcU1DaUNJQWhtdTkwK1V4VEZYdTdwYzhNTnQyRjdHSkdSbnI2NllvVnlYMlF6YktsWkRKdGRFRVJacHhNVnZjR2c2QjNKdWFCLzZ4ZWVOMjhlZmZ2Mi9VLzhlSkdSa1RtcXR3V0JMTXRjdm5LVnVMZzRKRWtpSS8zUlhIdnFZVGFqMCtudzl3c2dLS2dNK1JHbUtvcmltTE5ZN1BaN04yY2Vaak42dlo0QS93Q0Nnc3JlY3YvcjduN0dYQ0ZKVW5FY1RibFpYNHFpcGhIVjdnNFpXUWJKTGlFSWd1QXB5L0pSb0xKNyt2NTlzRmlzbkRoeEFwMWU3OVlWQlZKVFUwaEpUa0tTN05TcVdRdWowWkNyVWZ2MTE5OFFkYnI3b3l2cUdKTXNTOVNyVzlmdHNkMEJGRVU1WDZaVThRL0lKSjEwRWs4NnFjTHRqbkJVMGV2MWlyTzZVTlk5ZGY5T1JFUkdvTlByM2F3UURuaDVlVk8wV0FsME9qMDNJbTdrdXM5Zmw2OGc2blQzYmM2Y1l4SkZIVmV1WEhWZnRIY0FRUkJLWi9QWXN2L2ZwVmxYUEgvK2ZGSEFuYm4rbHlJMkp0Yk5DcEVMdkgwS0VSTVRtK3UydUxpNEJ6Sm4zajZGaUlsMWt4M2NhVlQveWVneDN1VFo4dUhVYlFGUTBBY0VCQlIzejltLzFUMi9jMWFJUjhGelMweUl5M1hiZzVvekx5OXZFdVBqN3VqWXBNUkVMdjkxa2RSOHRIcTl2THdKS3ZjNGhRb1hmbUR6ZmkvSFdiVkt0VUpBVEM3ZW12T093Tm42b1RlWlRFWHYvZzNucGpndUtIeDhDcUhUaVJRcFVvVGl4Vy92R1NNSWtKN3VKcW5NQytsNUVIZyt5T0xLbmY1ZWYxMjZRRnBhL2dLOXFha3BYUDdySWpWcVBUaGF4WHM1enNlS0ZDbVUzVnR6RkE4RTEzQlVVZlE2bmU2dUdqWTN4Zkh0SXpVMWhSc1JrZHlJaU9DcE9uZjNvdHkrN1NkV0xGOUdWTlJOU3BRb3dlZGZydUg4K1hQMDZKN0pRREowK0VoZWVLR04rNGQ0aUhFclk1SDFXdnF2anJOUW9VS0ZzaGd3WjNPdTRGZ01ueldTRWZTaUtENTJONzlZVm9wak53b2Vvbmg1ZVJOMU00TEl5RWlLRlN0MlZ6NzN4bzBiVEprOGtUSGpKbEN2WG4yU2tsVE9yd29WS3JKOTUyNEEzdW5SN1o1OXIrWExsdEx1NWZZdU5FM09jYzJhTVoyVEozL0hhRFRTL1BtV3ZQZCtINDFWNHRxMWE4eVpOWU9UcDA1aU1wbG8wYUlsdlhxL2w0TjE0bTdpVnVkOHJuRkREQVlEZ2lBU0ZCUkU5eDQ5YWRTb3Nmdml2WTh3bXowS3VScTFIQy9IMGtrRlVSVEZnTHQ1Y2pmRjhUOHdjTjQrM0x4NTg2NTkzdGsvenhBWUdFaWpSbzB4R28wRUJnWTZRbGdCaHdhankxckN1NDNQVml3akxpNW5Bbi8wcUpHVUxGV0tqZDl0WnZHUzVSdzZlSUJObTc0RjFKNjhvWU0vcEZMbEtuejczV2JtekpuUG50MjcyTGpobTNzMnpvS2VjKzc4aFh5L1pTdmRlL1FrYk9wa05ueXovb0ZjSjRJZ1VLZE9IVnEwYUVIejVzMHBVZUwybklpREIvWVQwclVUcjcvNkNqTStEZFBXZE5wc05zS21UU0dreTF0MEQrbkN2bjJaYTVyelk4UzlkNUZNS3B1Kys1YWhnMVhhSllQQm1OMWpFM0VVRHJKR2pGYXJGVkVRaEx1NlNOR2R6UDVubnB0ZGt2N3g1eHcvZm95WDI3WmgydFRKUkVaRzhuTGJOcnpjdGcwclAxdFI0TTg0ZFBBQW5kOTZnK2JOZ3VuUlBZUS9UcDF5MmI1bjl5NUN1bmJpaFZiUDA3MWJGdzRkUEtCdDY5ZjNmVjV1cTRhMkh3em96OHR0MjlEMy9YYzFJeEljM0pTdUlkMHdtVXdVS1ZxVXV2WHFjYzVCU2hBWEY0ZWZ2eitkT25mR2FEUlNxblJwR2pWK2xqLy9QSFBQNXYxMnptazJtMm5VcURIRGhvOWt5ZUtGK2RKYTN5dVVLMWNPblU3SHRtM2IyTHQzTHpWcjFzUmdNT1Jxc0xQL1B5TWpuYWxUSmpGeDBsUldyMTFIVEV3TTIzNzZFWUN0UDJ3aEl5T0RsVitzWnZxTVdjeWUrYW5tNWVmRmlGc1FQUEhFRTlwRE5iOHhadjA3SmlhR2QzcDA1OEtGODlydm9OZnJDK1hocVdrdldaYlI2L1dJZ04vZG5QUTdwVGgyUTBWSzhqOHZ0TlNxVlp0dk4yMWhRT2hBU3BZc3hiZWJ0dkR0cGkyRWRPdGVvT012WHJqQXh5T0g4MTZmdm16WnVvMVhYM3VkZ1IvMEo4cmhUVjY1Y3BueDQ4WXdaTWh3TnYvd0V5KzkxSTRSSTRacGFsdHo1czduMjAwcUU4cU1XYlA1ZHRNVzVzNWZDSUFvaW5UcTNBVmZYL1d5Kyt1dlN4ell2NThHRFZSMms4REFRT2JNblkrSGgxbTcwSThmTzBhTkdqWHYyWnpmeVRucjFXK0ExV2JURFBMOVJHQmdJRGR1M05BOEZGbVdjNUE4SERrU3pvaGhRN0RaYk1URnhmRk9qKzdFeGNVUkVSR0JyNjhmSlV1V1JLZlQwYXBWYXc0ZlBnU29yTGZQUHZ1YzQzY1NNQmlNbkR0M1Z0dVdHeU51QVhOamVaSlZMbHU2V0tNR1Azbnlkd2IwVjFjUitmcjY4c1dxTllSMHkrUkUxT2wwdVlXaXVJYWhxa2NyQXZjOGJodzBNSlRYT3JZbnBNdGJkTzM4SmxzMmY2L2xOVjdyK0FydDI3MUk5NUF1OTNRTTNVTzZjUEhpeGRzNlp0dFBQL0pheDFkNG9YVUxacy9LbStCdng0N3RqUDVrNUgvR3VHN2V2SW5nSmsxcDFLZ3hKcE9KVnExZm9FclZxbXh6Q0hrRUJBU3lmTVhuVkt0ZUhWRVVlYWx0TzJ4V0szLy9YZkRtMHo5T25hSkY4NmFFZE9sRWxhcFZlUzY0U2E3N0xWd3dEN09uSnkrMGVmRytmZitDbkZNUUJQejkvRWw1QU1sNm85R0lKRWtFQkFUUXVIRmpaRm5HWkhKbEhhdGJ0eDcrQVFHTUdmMEpnd1lPb1AwckhmRDM5NmRZc2VMRXhjVnk2ZElsN0hZNzRlSGhwS1NvMzhISmlIdnExRW1HRFA0UW84bElZbUtpdHMzSmlEdDN6aXlORWZlZjRzMjNPck5yMTgvTW1UMlRjV05HMDdkZmY2ZDNsaU9uS2dpQ2R6NjVOUmNqcHhjRTRiNGt4RDRhTW94NjllcVRtSmhBcjU1dlU3V2F5bjJXRjczeHc0QVdMVnZSb21VcnZ2NXFMWkdSRVkrTTF4Z1pHVW1GQ2hWZDNpdFRKa2liQTI5dmIzWnMzOGI0OFdOSVNVN0pNNnpJRDlXZmVJSnRPM1lSRVJIQkp4K1BZUG15cGZSOHg1V0g0Zk9WbjNINDhDSG16Sm1QWHErL0w5KzlvT2RVRklXNCtEaThIMURheFJtTzd0Ky9uMXE1OEprSmdrRHYzdS94eHVzZEtWT21yR2FreldZenc0YVBaUEtrOFk3ZnRTeWVack4yM1BmZmJ5STlQWjFKazZjeGUrYW5McCtaRnlOdVhtalZxaFhlM3VyOE9QT0FwMCtmNXZUcDA5byszdDdldlB2dSszd1EybzgzMytwRTVjcDVMeXNUUmRFN256QlVNMm8ybXcwOWNGODVxUXNYOXVXSkoydHc4Y0o1eXBjdm4rZCtpWWtKVEo0NGdhaW9LT3gyRzUwNmQ5WFlPTStjT2MzTUdkTkpUMHVqU05GaURCMDJRb3ZoZCsvNm1kV3J2OFNTa1VIMUo1N2tnNEVmYXZtSFhUL3ZaT3pvajBsUHo2QnZ2LzZhbC9ETituVnE4bHBSYU5yc2YzVHIzdU9XMytQSWtYQStuVDROVVJBcFdhb2tudVpNdHR6OHh0QzhXVEQ5QjN6QTBpV0xVQlQ0ZnN2V2g4NndGUzFhbE1nSVYwTisvZm8xYXRkV1cxSDIvcktIVlY5K3dZeVpzeWxWdWpTZ1ZnMXp1N215R3p0TFJnWmJ0LzVBNjlZdllQTHdvSGp4NGpSdi9yeExvaHBnL2JxdjJiN3RKMmJObVhmZkdrNXY1NXhIam9Sak5CaW9WUG4rTDdHMldxM1k3WGFPSGozcURORnlhR2FrcEtUdzBVY0Q2ZHdsaEhObi8yVEs1SWtNSFRZQ1FSQjR1dUV6UE4zd0dVZnViSzVHUzErNGNHSE1aak5qeDAxQUZFVXNGZ3VGSGZPUUZ5TnVmdmp4UnpWMzk4d3p6M0Q1OG1VdGZIWkplMXk4eU9SSkV4ZzdiZ0lybGkrbFROa2cydVR0S1h0bE0ySlpqSnFRTldSRkJEenY1NDhTSFJYRnFaTy9VNlZLL2t6azU4NmQ0My9ObjJmWmlwWE1tYnVBV1RObllMVmFzVnF0alBwNEJLR2hBL244eXpVODgwd2psaXhhb09WcjFxOWZ4NXc1ODFuNXhXb0FmdGl5V2Z0TUh4OGZWbjZ4bXRGanhqRi8vbHhBSmRiYnZIa1RDeGN0WmNteXovanR0OS9ZOWZQT2ZNZG1zVmlZTUc0TW8wYVA1Y3ZWYXlsVE9uT3A3YTNHWUxmYmlZcUtZdDAzMzdMK200MFB6SGpaN1hhTkJsMlJaZXgydTJhRTJyejRFbnYyN0NJOC9EQjJ1NTJmZjk3Skg2ZE8wcUpsUzBCVlRoSUVFSFU2RWhNVHRCeUpJcnV5RkJjdlVZSkRCdzlpczltSWpvcFN3eWlUaVM4K1g4bmF0YXV4Mld3a0pNU3pkKzh2MUtoUkl6TVUvbjRUMzI3Y3dNelpjKzhiQVdkQnoybXhXRGg4NkNDVEowMmc5N3Z2UHhDdGl1am9hSzJhYlRRYThmWDF6U0dJY3ZIaUJZS0RtL0pXcDg2TS9HUTBScU9KdURqWFZRK0hEeDFreDQ1dFdnOWpyVnExc2R2dGlLSklRa0k4Rnk5ZXBGTEZTdHEyM0JoeC95bCsrL1VJUTRlTm9FblRabnc2Y3c2bi96aVZnKzA2eTRQU25NMm9aWDJHdXBUMzlZRDVmdndZMDhPbVl2WXdZelFaNmRPM1A2VWRwSTU1b1diTldpeGZ0b1J0MjM1RXA5TmpzV1NRbkp4TVFudzgzdDQrVksybTZoRzgxTFlkVFpzMVUzK293NGU0OXZkVjN1MzlUcGFuaWs5bTNzSEI3bG0xV2pVdEVSNGVmb2pubjIrSjJlR092L2ppUzRTSEg2WnBzLy9sT2JhclY2L3cyR05GTk9OY3BWbzE5djJ5cDBCakFPZ2EwdTJ1WEJSM2l1d051bE1tVDJUSzVJazgzNklsSDM4eW1vb1ZLekZxekRnV3pKOUxaRVFFWmNxV1pXcllweFF0cXZiWHRYNmhEYWRPbmFSSDk2N29kSHJhdmR5ZWloVXJFWmR0dWREQWdSOFNObTJxK2lRdVU0YWx5MWRpTkJxWk1qV011WE5tOGRYYU5SZ01Cb0tiTk5XU3hKSWtNVzNxWlBSNlBXKyszdEUxVFB4eU5jV0szZjBWZ0FVOVo3OCs3eU1JS25Qc29BOEgzOVUrTmg4Zm53THZlL255Wlh4OWZUVlp4K1BIaitkSTVOZXNXWXVhTld0cCthcEJXWmh5NCtQajZOV3pCNlZMbDJiaXBDazhWcVNJOXJ1ZU8zZE95M2YzR3hDcWVhNTVNZUlXQkFjT0hNaHoyMnV2djZIOVB5QWdnSThHNXl2czRwRlBHT3F3Y0NLU0pLRUg3c3NkTnVqRHdScHRjRUd3ZHMwcTdEWTdVNlpPUnhBRXJYM0FhWjZkTUJnTStQbXBUMWliMVVad2s2YWEzRmgraWQrc0lWTFdWaTVCRVBKOFltVE5yK1RWTEZxUU1lVEhFM1kzMGJKVmExcTJhcDNqL1lvVksvSEx2dndGbWhzMWFwem5qV3N5bVJqNThTaVg5OTdwMVR2SGZ2VWJQTTNYNnpma2VMOUN4WXJNbkQwMzE4L1c2WFRzMlh2Z3ZocjZncHp6VnZOMU44YVFtcHBTb0ZZcDUrcWVPNFdmbnovcmNva1dzaHZBckFnTURDeXdRdGJkUkVCQWdGWmh6OFZXQ2RudGdTQ0FUcWUyZXp3NDF5RmZkenNHYng5dkJFSGcrUEZqSkNVbG9TZ0twY3VVSVRrNW1mUG5WV1gzbjM3Y1N0aTBLUURVcTErZm4zZnU1UHIxNndEczNMbURreWQvei9jOGRldldaL3UyYmFTbnAyT3oyZmhoeTJicU44aGZXS1ZzMlNDaW82TzFuRUZFbHR6Qm5ZemhuOEJzOXNTTjI1dWJCemxuZVoyN1NKRWlwT1d6cHRyVHMyQWhiMEgzdTFlNHgrTTA1dUtwQ1VvMnI4MFppdW9lMUNUa0owangybXV2TTNiTUtIN1lzb1hLVmFwUW9XSkZFaE1TQ0F3TVpNeTQ4WHdhTmcyTHhVTGdZNEVNR1RwQ0RRbXJWS1ZmL3dFTUhmd2hOcnVOY2tIbEdEeDBXTDVqZUtwdVhWcTJhczI3dmRTQ3diUFBOYUZwVXpXMDNmYlRqeXhkc3BpVTFCUmtTV0xmM3IxMDZSckNTMjNiTVhUNENFWU1HNEtmdno5NnZVNHJIdHpKR083WGsvNVJRbXBLY3A1ZXRmaUE1aXcxSlJsZEhwWFc0c1dMRXhFUlFmVE5DRHk5ZlhLTXJWejVDcmRjWU83cDZVVzU4ZzlXbCtrZWoxT1htOGVXVzk1TlVHNFZkOTBtamg0OVNwRmlibzNNTzBWVTVIWHEzTVpDK011WHJ4QWJGK2RlbTVzTk55TnZFQmdZUU5sY2NybVhyMXdoTnZiK3o5bk55QnNFQkFRUVZEYnYvSEpVVkJTUmtaSFk3WGFTazkyc09OblJwRW1UOWtBYUtvTnVFcG1pTGhZMDdRTkJ2dXZOUVc0UDRwODkwVyszWDZ0czJUSkVSMGNqbnRxUEFBQWdBRWxFUVZSeE0vS0dteHJjTVljcEtjbElkbnV1UmcwZ3FHeFpvcUx1MzV3NXh5UkxVcjVHelJtU0ZuRWs4OTNJRmRuRFRzR1pZeE1FUVYxMUlJcUNvQ2lLaExwRTRhNGdJaUtDeU1pYlBGYlV6Vjk1Kzk3YURVcVVLSDdiN0I2S292RFg1U3ZFeGNVaTJXVXlNaDVOamphejJSTlJweU13SUpDeVpVdmZjb0gvbFN0WGlZNkpRYkpMOTJ6T3pHWlBkSHI5TFQwMU53b0VXUkNFamtCcUZvOHRSUkNFVk1BaUNJSk5FQVM3S0lxS29DaUtGVERjN1hCVUVIVjRlWG5qNmZiY2JvazBoOWdIS0xjVmhycmh4aU1HbXlBSXIyY3hiTWxBc2lBSWFVQkdWc09tQis2NllhdFRwdzQzYjk3a1psUVV5VW1KYmdiZGZPRHQ0NE5CcjZkVXFaTHVFTVFOTi9LSHRhQTdPZzNiWGE4UkZ5MWE5STQwTXQxd3d3MDNDbWpZbEd6L2FoQ0JkUGQ4dWVHR0cvOENaQlRZWTd0eTVZcGJEY1FOTjl4NDZLRW9Tbm91M3BtaU9CUmRuSjFyaXFJbytySmx5NmE2cDh3Tk45eDQyQ0hMY21xVzBGTXpjTm5iUFFSQlFGUVV4VTE1NjRZYmJ2d2JQTGJzekpaS3R2OXJmK3RSZTBIY2NNT05CMy9qdXZWNDg0SGRiay9KWXNDVUxLR29ralVVbFdVWnZhSW9DZmRTcWNnTk45d29tRkZ6Ni9IbUQ0dkZrcHlieCtacXZ6SkQwYmhIYllKS2xTcEZ0V3JWY2hXajhQYjI1clBQUHJ1WFR4MUNRME1wVXFRSWhRc1hwbmZ2M3BvSWlodVBMckxxOGJxWEkrWjU3eVJsODlnVWNtbjFBTld3eFQ2S2szVG16QmttVFpwMDM4ODdiTmd3Tm0zYXhMcDE2OWkwYVJNN2QrNmtYNzkrN3F2MkVZZGJqL2ZXc0ZxdFNWazh0Vnp5YTRMS3JTaUFLRWxTektNNFNlWEtsV1BpeEltY09YUG12cDB6TlRXVmVmUG1FUllXUm5Cd01NSEJ3U3hldkppVksxY1NFeFBqdm5JZllkeXBIdStaMDM4d01MVC9mWEFFVGhNMmJRcmJIVXBsVG16YytBMGhYZDRpcEdzbmxpOWJxcjJmbjhEeWlSUEg2ZmwyTjdxRmRHYjBKeU1Mck0yYW5wNldqR3RUYnJicXFOTmZBOUZtczkxOEZDK2szcjE3VTcxNmRkNTU1NTE4R1hQWHIxL1BrMDgraWRsc3BucjE2aXhkdXRSbCs4OC8vMHlkT25Vd204M1VxMWVQc0xBd0YzSFl3TUJBUHZ4UVpkTTlkdXdZNmVucEJBY0hhOXVmZmZaWkFBNGVQT2krdXg5aDNLa2ViK1VxVlJrMVp1dzlIZHY4ZVhOWnRuUUpseTVlZERGQ1Y2OWVZY1A2OVN4WXRKUmx5MWR5NHNReGpod0pkeHlUdThDeTNXNW4wb1J4alB4a0ZKK3QvSkpTcGN0b21obTNRbEppVWw2aGFJNFZDUHFNakl5b1c2bk4vQmVoMCtsWXNtUUpEUm8wWU5HaVJiejc3cnM1OXRtN2R5K2RPblZpOXV6WnRHclZpcU5IajlLN2QyOTBPaDNkdTNmbjRzV0x0R25UaHI1OSs3Sm16UnArK2VVWCt2ZnY3eUx3TVdqUUlHclhyZzNBOWV2WE1ScU5CQVFFYU5zTkJnTUJBUUZjdTNiTmZYZTdrUU94c2JGTW5EQ09tT2dvQkZIa3ZmZjYwT0RwaGk0a3JiNitmcXhZK1VWbXVtUElSOXk0b1RJNEp5UWs0T25seFpxMTZ3QlZGV3JPckJra0ppWGk3K2ZQNEtIRE5DMExnSFZmZjhXR0RldTEvUUY2dnRNTG85R29NVlU3OGZ1SkV6eFZ0eTZlbnA3WTdYYjhmUDA0Y2Z3NDllclY1OFNKNDN6d3dTREFWV0E1NnVaTlBNeG1nb0xLQWVEdjc4L1BPM2NVYUM1dVJ0MU1Mb0JSVXdEMEVSRVJFWG5Kei8vWDhkUlRUeEVhR3NxUUlVTm8yN2F0cG4zb3hJUUpFK2pSb3dlOWU2dDgvbVhMbHVYU3BVdE1uVHFWN3QyN3MzRGhRcXBVcWNLMGFkUFVwMmZseXB3OGVaTFZxMWU3NU5TY1NFdEx3OFBESThjNFRDWlREdmswTjl3QStHcnRhbXJVcUVGSXQ3ZTVkT2tTOCtmTm9jSFREU2xWcWxTZW1yeVRwcWpYWTJKaUFyM2Y2YUhwYjFpdFZpYU9IOHY0aVpNcFhydzRQLzI0bFFYejV6RjZUT2J4Tld2VnlzRThuSmZ3a0ZOZ09UbzZta2tUeGlISkVqNk9QR0ZXZ2VVZE83WnBBc3RKU1VtWVRDYXNWaXR6NTh6aXhvMGJPUlMyOGc2N1R6dmJQZVM4UERWbk1DcldyRmt6aXR0WWcvVmZ3OWl4WXdrSUNLQnYzNzQ1dHAwNmRZcGx5NWJoN2UydHZVYU9ITW1GQ3hlUUpJbmp4NDlUdjc2clFFMmpSbzN5UEpmWmJNNjFFbXV4V0I2SWpKc2JEei9xMVcvQXpoM2JXZm5aQ2l3WkdRVVdWSkZsbVRHalI5SG14YmJVcjk4QVVLVWhyMTM3bStGREI5TTlwQXVyVjMrcHFiVTVVYWxTWlY3cDBMSEE0enQ5K2c5R2poaktPNzNmcFdsVFYyVzNTUlBHY2ZueVg0Uk5uK21pVkorWW1NakFEd1pRclZwMSt2VWZVTkJUWlV3WVB6WXRuMUJVTTNTQ29EYm9BbHdGS2oyS0Y0Nm5weWNMRnk2a1pjdVdiTnpvcXR4anQ5c1pOR2dRYjcvOWRvN2pSRkZFcjlmbkVBVE9MMTlYcWxRcE1qSXlTRWhJd05mWEYxQlZxMk5qWXlsWjBrMm43a1l1aHExZWZlYk9XMGo0a1hBK1g3a0NvOUhJbUhFVGJubmNzcVdMOGZEd29IT1hydHA3TnB1TllzV0t1WVN0L3dTRkN4Y21JeU9Ec09rektWU29FQ2RPSEtldzQ3ck9TMkM1VUtGQ0pDVW1NbUhpRkI1Ly9ISE9udjFUdXhmeWc2SW9mMmN6WUhJV3p5M24vYWtlbzF4NWxDK2VGaTFhMExselovcjI3YXVKQ0FOVXExYU5reWRQVXFGQ0JlMTE0TUFCWnMyYWhTQUlQUG5ra3h3NWNzVGxzN0wvblJXMWE5ZkdiRGF6ZDIrbTZ2bStmZnNRUlpHbm4zN2FmUmU3a1FPVEpvNG4vRWc0elpzL3o3RGhJemwwNkdDT2gybDI3TnUzbHoyN2R6Tjh4TWN1emFzVktsUWdLU21KWC9iczF2SnQzMi82enVYWTgrZlBzWEhqTndVYTI1TTFhbUMxV2pHWlRFaVN4TUVEKzZsWlM5VXl6VXRndVZqeDRoVDI5Y1hrQ0cvMzdkMnJIWk1mSkVtNm5zMm81ZUd0cWYwZWVrQ1JaZmx5WG9vK2p3cG16SmhCMWFwVlhYSmRRNFlNb1ZXclZvd2VQWnBPblRweCt2UnArdmZ2ejhDQkF3SG8yN2N2czJmUFp1alFvYno5OXRzY09uU0lCUXNXdUlTVmt5Wk5vbmJ0MnJScTFRb3ZMeTk2OU9oQjM3NTk4Zkh4d1dnMDBydDNiN3AzNzM3ZkZNL2QrSGVoYytldWhJVk5ZZTNxVmNpeXpNQkJIeUdLWXI0S2IzTm56eVFqSTRNKzcvWFNQbWZ1L0VYNCtQZ3dhY28wWm40Nm5VVUxGK0RwNmNuQWJEcWl4NDRlWmNPRzliUnYzK0dXWXl0Yk5vajI3VHZ3YnErZUtDZzgrMnl3cGgyY2w4Q3lYcTluK0lpUEdUZHVORGFyamRLbFN6TjQ2SzNGbDIwMlcwUXVIcHVpcXUrNWVtMkNnQ0lJZ3VDZGtaSFJ6MmcwVG54VUxwWlNwVW9SR2hxcXRXRTQ4Y1VYWDlDMWExZFdyRmhCdDI3ZEFGaTFhaFVUSjA3a3dvVUxGQ3RXako0OWV6Snk1RWp0U2ZqVFR6OHhjT0JBTGx5NFFPM2F0V25Rb0FIcjE2L1hkRVVEQXdQcDFxMGJZV0ZoV2o0dE5EU1VOV3ZXSUlvaUhUdDJaUGJzMmJrV0ZkeDRkTEJueng0ZXIxakZQUkY1SUNZbTV0UGFOWi80QlZkYThCUW5MVGdxYmJna2lxS3MwK2xWdzVhVWxOVEcyOXQ3clh2NmJnOG5UNTRrTFMyTkJnMGFhTytOSGoyYUgzNzRnZkR3OFBzMkRsbVd1WHpsS25GeGNVaVNSRWI2bzdsRXk4TnNScWZUNGU4WFFGQlFHVVJSekM5bjQ1aXpXT3oyZXpkbkhtWXplcjJlQVA4QWdvTEt1ZzNiSGVMc24zOE9hLzYvSnFmSktlU1NEamlrOTBSSkZFVlpyOWNwZWtDSmo0Ky8rQ2owc2ttU2ROdnlkdm5kR0JjdVhLQkxseTZzV3JXS1dyVnFjZkxrU2ViTm04Znc0Y1BKalBjTGpzakl5TnVtVTdkWXJKdzRjUUtkWG85UG9jSnUrYjNVRk9JVDRvbjVMWnBhTld0aE5CcHkvZTErL2ZVM1JKME9iNTk3UDJlcHFTbkV4c1VSSFJOTnZicDE4OTMzdXJ1Zk1WY2NPbmdnbHN5Q2dWWTRjREI3T0VKUkJRVUZXWllSQkVId0JJei9aKys3NDV1by8vK2ZkNWRjZHZlbXBZVzJERkdnU0FFL0ZCRi9iQnpnRjBVRlJDeFlrQ0VnSWhRVUZHUXJRZ3NpVTVDbElHSlpBckpreWlwWWhteVEwcWJwYnRPUmNYZS9QMjQwU2ROU29HWG05WGhFYWRaZDNuZjN2TmQ4UGxtVzFRTlF1SmJ3N216cTFLbFl2SGd4MHRMU0VCd2NqTGk0T0l3ZVBicFNiNkU2N1dHSi96N3F4b3NUZXlFc3RMeVhkTzM2RGVUbTVqNFV3V1FmYjIrRU9wSGhjM2xzbGQrL1Eyb0Y5QUV2WTJCMENFVkxBSmdGb1dTR0pFbE9KcE54Sk1xU2NSZGM2M2YzRmg4ZmordlhyOE5rTXVIcTFhc1lNMmJNQXdNMUFNak95bllOVHpzeHJjNE5XVm5PK1IxeWNuSWV5cHBwZFc3SXluYk5CTjlEcXVVaTdGczhiRnM5N0lzSElvT3U2SjJ6TEh2ZXRZU1BsM0hjdlE5UFArbW0wV2pCc2t5RktZbUhzV1lhalJhTWxYRWRuTHMwaThWeUZlWDcxeHo3MkhoMkR3SGNaQVJCY0J6SGNWYXI5WHhGb3hNdWV6U05JSUNTRWhlWFcwVldVZ0hQM2NNc3J0enI4U3JJejhlTjYxZFJWR1NzRkRqRDZvVER6ZDM5b2YyK210aFBvN0h3cGhOQUsrZXhFVVNaN29GTWZLR2twT1NjQzlncTg0NTQybWFEd1FBcnc4QllXRDIwelZxdERqSzVESDYrdmdnTURLejIvZDYxY3dlV0wxc0tneUVEUVVGQldMbHFMUzVmdm9UWS92Mms5NHlObjRDdVhidTVEdklqYk5ldlhVRnhjZVgwUGtWRlJ0eTRmaFdObXpaN292Yno5dTIwMnc2QXhnQmdoYUpCdVljSWJBREFYYnAwNlZ4MGRMVHJES29BMUpLVGt3R0NoRWFyNDJtYkE2cnYrNHVLakVqWFp5QTlQUjNObWxYZlNabVdsb1laMDZmaXk4bGZJenE2QlFvS2VHcWNpSWhJN05xOUR3QXdNUGI5R2x1M1pVdVg0UFh1UGV6WVRNVDltanZuRzZTay9BT2FwdEcrUXljTS9taUlOSHlkbXBxS2hMbHprSEkyQlFxRkFoMDdkc0tIY1lOUmswM2tkOXJtaXpFdlFDNlhneUJJaElXRm9YL3NBTFJ1SGZQQXpzRTdnWVh0dWZRd3JTYjJjLysrdlJrQ2FERWlxTmw3YmJ5WEJsdVZLaEhsV3Jac21RWGdzZ3ZHeXB0ZXJ3Y0lFbjcrZ1RXU205Rm90UER6RHdSQUlEMDl2ZHErOStLL0YrRGo0NFBXcldOQTA3VEVFMGNRQkJRS0JSUUtCV3BTNytMSDVVdVJrMU0rZ1Q5cDRnVFVDZzdHYjc5dndhTEZ5M0QweUdFa0pXMEN3UGZralIwekd2WHFOOENtMzdjZ0lXRUI5dS9iaTk4Mi9scGorMW5WYlNZdVdJak5XN2VqZit3QXpKNDVIUnQvM2VDNk9HcmVxYmd5YzhhMGtzckNVSUlRUWxIWWg2SVEzc0N5TEh1S0pNbEkxM0xhbThHUUNZMVdWK1BiMGVqY1lEQVk3anNrUFgwNkdaTyttQUN6Mll6aTRtSjBmNDBQTTN1ODBSUDkzdTlmcGU4NGV1UXdFaFBtUWE5UFIyaG9HRVo5OGlrYVBmdXM3VjBVeTVZdFFhYkJBUCtBQU1URkRVYXJGLzRIQUJnMjlDUGNFaGhUUjM0OEhESVpoZURnRUNRdVdBaVdaZEcyYlR0MGUrVVZLQlFLK1BuN28zbDBOQzVkdkFpQXIxaDZlbm1oZDU4K29Ha2F3U0VoYUIzVEJ2LytXM05GKzd2WnBrcWxRdXZXTVpESFQ4REVMeWFnVStjdWp4MHpDOE13T0hyMENMWWsvWTRoUTRjak9DUUVBRDhrUC9lN2I1SHl6eG1RSklYWWdSOGlKb1luUXMzTXpNUzBxVk9RblowRm5jNE5ZejRiaTlxMVF5dmREa0VRaUlxS2dvK1BEMWlXeGZuejU1R1dsbGJsL1Z6eDQzTDhzWDNiT1dkaEtBQ1c0emkyTEw5R2NDQUl2a0c5b0VBcUhnQUFaN0ZZa2hVS1JTOFhsTm1ibGJFK2tDcWFScU9Gc1NEdnZyK25hZE1vYkVyYWloMS9iTWZLRlQ5aTlkcWY3K3J6VjY5Y3dlY1Q0akhwcXlsbzNqd2FlL2ZzeHFpUncvSFRxclh3OC9mSHpaczNNR1h5bDVnN2J6NGFOR3lJVGI5dHhQang0N0I1eTNhbzFXb2tKQzZRd3JjNWMrY2hNcktNT0lZa1NmVHUwN2NzSjNQOUdnNGZPb1NQaHZDMFVUNCtQdExuUlcvcWRISXlYdS9lbzhiVy9WNjJHZDJpSmN3V0N5NWR2SWlvWnMwZXlmT1daVm1wOWNqMjN4OFBINHBhdFdyaHdvWHpZR3dxeDl1M2JVVnBhU2xXL0xRR09UazVHUFJoTEJvM2JnSTNOemVKRWZlVlYxL0RpUlBITVdQYVZNei8vb2RLdDErblRoMVFGSVdkTzNkQ29WRGc1WmRmUm1abUppd1dpOU45dFAwN0plVWY3TiszRjdObWYzdmxoVmJSam1Hb2JZNE5Jb0FSQWpocnRWcSszVU5Nd2hVVUZKeHl3Vmg1cTY1Q1FaVzJaVFErOU4rN1pVc1MycjdVRHExYngwQ2hVS0J6bDY1bzBMQWhkZ3A4OTk3ZVBsaTJmQ1dlYWRRSUpFbmkxZGRlaDhWc3hxMWIvMVY1RytmT25rWEg5dTNRcjI5dk5HallFQysyZmNucCt4WitQeDhxdFJwZHU3M3l3SDUvVmJaSkVBUzhQTDFnTERJK2t1ZnM4ZVBITUg3Y1o3QllMTWpKeWNIQTJQN0l5ZUVGNmI2ZE14Zmo0aWVVdTFtZk9YTWFiZHE4S055QUNNamxOQzVkdWlpOTl1S0xQS1c5TFNQdW5XNFlvb2ZHY2Z4RWdLZW5wOTE3bGk1WkpGR0RwNlQ4ZzQrSDh6ZTRLNWN2b1dsVUZHN3hycit0dDhZNENVZkJjWndFY0hJNWJkZWd5NzMxMWx1bndIZjJ1cXdTTzNQbU5EcDFlQmw1ZWJtU2g5T3Y3N3RQVkU0eE1OQytLNzkyN1REbzlYeitUNnZWNHVUSkU0ajdNQmE5MyttRjk5L3JJOTF0cTJxTm5uMFdPLy9jaTUvWGIwUjZlcnFkRUlob0sxZjhpTC8vUG9xcFU2ZFgyeWpjbmF5cTIrUTREam01T2RBK29qMkV6WnRIdzh2YkcxOU8rZ0tmalBvWVBkNzRQNGxCNWs2TXVHZlBwdUN6TWFOQksyams1K2RMcjRtTXVJa0pjeVZHM01xTXBta3dEQU52YjIvRXhNU0FaVms3d2trQWVPZmRQdGk3ZHc4UzVuMkh5VjlPd3RCaHZEQk4zZkFJbkR4eDNEaDB5RWNaRGlHb0hiQUpZRlpPMUlVVWtzY2NBSGIvL3Ywc3gzRkhYZEIxWnlzcEtjR2ExYXVmeU4vbTcrOFB2VU1SNC9idFZJa2IvOEJmKzdGNjFVLzQvUE5KV0wzMjV3cERYWUlneW9HZHFiUVVtMzdiQ0ZNcFQ5b2NHQmlJOXUwNzRNeVowM2J2MjdEK0YremF1UU56dmt0NFlIMVpkN1BONDhlUGdaYkxVYTkrL1lkeWZEcDI3Q2c5SEZtY3hiV1BpeHVNVXlkUFFFRXJxdXp4YnQ2Y2hPWExsbUxhOUZrSWRjaWhWY1NJZTZkd3RHSERoamgwNkpCVWxiYzFyVmFMUVlNK3d2cGZma2E3bDE5Ry9mcjhXRm1USmszUnZrT25rd1pEUm1XZ3hwYk5pWXJCS0svelFNS2VONXkxV3EwdVlLdmlBZHU3WjdmazN0dmF2cjE3OE9IQUQ5Q3Y3N3VZT1dPYWxGTklTMHZEb0E4SG9QYzd2VEJyNW5RcHFmOVE4b1pXcTBTcXliRXNyRmFyQkVMZFhua1YrL2Z2eGJGamY4TnF0V0xQbnQwNGR6WUZIVHQxQXNBTGpCQUVRRklVOHZQenBGQ0NZKzNKVEFPRGduRDB5QkZZTEJaa0dnejhYVnlod0U4clYyRGR1ald3V0N6SXk4dkZnUU4vb1hIanhtV2g4T1lrYlBwdEk3NmJsL2pBZU9xcXVrMlR5WVMvang3QjlHbGZJMjdRUncrbGNKQ1JrWUdkTzNkS0QyZE1Na2FqRVo5K09ncDkrdlpEUUVBQVpreWZXaW03c3hoaWVuaDRZTmJzYitIbDVRV1R5UVIzQWVCRlJ0eGh3MGRBTHBkTGpMaVZtZGxzaHNsa3dzR0RCMkV5bVVCUlZEbHRqNnRYcjJMNnRLL3gxZVN2Y2ZUSVlXemR1a1Y2N2RWWFh6dnJKQXhsYkhOc29tTkdFSVNVcTNOemQ0ZE1LSTl5b2x0WFdGaDR6RVY2ZUdkVHF6WG8yS2tMVnE5YWlTNWR5Z0RxK3ZWcjJMQmhQUklTRmtDaFZHTG1qR25ZdG5VTFh1L2VBM1BuZklQMkhUcWk1NXR2NGRqZlIzSG80SUdIc3UrT0Rib3pway9Gak9sVDBhRmpKM3oreFNSRVJ0YkR4QzhuNC9zRmlkQ25wNk4yYUNobXp2NVc4dGk2ZE8yR3MyZFRFTnYvUFZDVURLOTM3NEhJeUhySXliVUgrVkdqUm1QMnJKbFl2bXdKYXRldWpTWExWb0NtYWN5WU9SdUpDWFB4ODdxMWtNdmxhUHRTTy9SN242ZGZaeGdHczJieVllQTd2ZXk1OTFldVdvT0FnT3B2WXE3cU5vY04rUWdFd1JNc2ZqSjZ6QVB0WTd0YnUzcjFDdHEyYllkM2UvZUIxV3JGM08vbUlDY25wMXhQb2EwMWJScUZjK2ZPZ2lSSjVPWGw0dXJWcTZnbkZINHFZc1N0ekRJek0rM0NYdzhQajNMQ0xTZFBITWZZY2VQeGZQUG1lSzV4RXl4YnVoaGR1M1lEUVJDNGR2M2F0WXBBRFE1VEJ5UkpRU2FqWURZREZFbVZUUjZJSHR0SEgzMTBkTjI2ZGZrQTNGM3dWYm05OFg4OTBhOXZiNGsxRkFEKy92c29VbS85aDBGeEE2VzdsbFpvRlVsSitRY1RCVVdnOElpYTc2cnAxTGtMT25YdVV1NzV5TWg2K090ZzVUcW1yVnZIVkhqaEtoUUtUUGg4b3QxekF6K01LL2UrRmkxYjRaY05HOHM5SHhFWmllL21KVHI5Ym9xaXNQL0E0UWQ2SEt1eXpUdXQxLzJhVGxlOTdVUk5talJGa3lZODViWk1Kc01uRGt5NXpxeEwxMjY0ZE9rUyt2ZmpxOWJEUGg0aGhlUVZNZUpXWmpkdTNJQ0hod2ZhdDI4UEFEaDkrblM1Z3NOYnZkNlcvdTN0N1kxUHg0eVZVbjV4QTJOVG5ZSWFRYkRnT0pZVGpDUkpqaVFKamlCSWFMVmFMamMzaC9mWWJIT2l2L3p5aTNYTm1qVUhTSko4eFFWZEZSdEJFRkNwVkhpalowK3NXbFVtam1FeFc5RDJwWGFTNUpsandya21HMkpkOXZnYVJWRW9LakkrME9GOHg5eG9aUURvNCtOVFpZVXMyL005T1RuNW52Yk5Zckg4cmRmcmJjTlFxd2h1QkE5dW5EUmxRSklnQ0JJa1NZQldLT0R1N3NFWER4eG1ybGlMeFhMUWRhcmRHZGdBb0VmM04zQTc5WmIwZkhTTEZ0aXplN2RFRGI1Nzk1OUlTZmxIY3VlM2I5dktoNE5DR2YxK1RhVlN1dzdHWGE3TncxeXppcmJ0NStlSFltTmhwYW1QcXFaSUhuYUtwanJlbDV1YiswOGxZYWhES0NxTVVwRWtTSUlFU1pKU1ZSUkNJbzRGd0dWa1pMaUFyWXFtVUNyUnAyOVp2cXBCZzRZWU52eGpqQjB6R20vMzZvay9kKzVBY0hBd0FHRDRpRkhZdWVNUDlINm5GN1p0MndxeUdtWWZ4VHU5eSt5dHlGaFk0V3dwK1pEV3JNaFlDS3FDRnBMQXdFQndISXZNakhTbisxYW5ic1Fkd1VDdDFxQk8zWWlIdXU3VnRaK25UcDY0NmdUVXhFZVptQXRCOElVc2tpZ0ROWklFb1ZLcENLdlZTckFzUzNJY1IzRWNKd2VnWUZsMkg0Qm5YWmNJY1BMVUtmZ0gzTC91NTRVTDUxR3JWakRjM055d1o4OXViTisyRmJObWYydjNuZ3o5YlR4L0Y1M3NOMjdjUkhhT2kwSFgwVEwwYWZEeDhVWm83ZkpzdFErTGRaaG45ZlZHbUJNR1hkRU1CZ1AwZWoyc1Zpc0tIMkJqK0tOa0hNZWRiOWV1M1NUd0lpMjI0aTFGQUlvSmdoQTBEZ2lHSUFpV0pFbU9vaWpRTk0zUk5BMkZRZ0VaSDU5S2VSOHBITFZhclh0a01wa0wyQURJcWluL1VWcFNpakdqUi9ISzcxb3RQaHM3cnR3ZFhTNlgzOVYzaG9iV1JtYW1BUm42TkdoMWJpN05BMk1oak1aQ01GYXJVMUFEZ0xEUVVCZ01EMjdOeEgxaUdhWlNVQk5EVWo4L3Y2ZjZHQllXRnY0Tko3azFBSXdZVllxdEhoUkZRUzZYZzZacEtKVktLSlZLcUZRcUVGcXRsckJZTEFURE1BVExzaFRIY1JRQU9pc3I2MlV2TDYrTkxsZ0QwdFBUa2E3UEVCZzRhczRNR2VrSURQQy82eUY0anVOdy9jWk41T1JrZzdHeUtDMTlPc2tuVlNvMVNJcUNqN2NQUWtORDdsaW91WG56UDJSbVpZR3hNalcyWmlxVkdwUk1ka2RQeldWbGR1TEVpVStqbzZPdkFpaEdtY2FCa1NDSUlzR0xNd3Y2Qmd4RlVaeGNMdWNVQ2dXVVNpV25WQ3FoVnF0QnVMbTVFV2F6V1FRMjIzQlV5YkpzTW9CYXJxVUdUcDFLQmtFUTBHaDFVRmZ6SGI2NHlBaGpZUUVBcmxyNTJGem1zc2N3REUwalNYS2tUUmhxQzJ3bEFFb0pnckRSRUtVNG1xWWxZRk9wVkZDcjFYd29TcElreHpDTWJTaktBV0FZaHRsQlVkUUhydVVHbWpXTFFucDZPZ3lHVEJRVzVGWGJzTHBPcDROTUprTlFVQ0FDQWdKY0MrMnlwOXBLU2tyK2duMDExQzRVZGNBb29ZZU54ekNTSkVGUkZDaUtLc3V4aVcwZndsQXBDNEF0TEN6ODA4UER3d1ZzZ2dVR0J0WUlmYmZMWE9ZeTNxNWN1WExHQWRTc0FLd0VRZGkxZWhBT2ZXd2lvSW4vSnNYeXFEaG5aZFBUeG5wNWVmMEo0TFpydVYzbU1wYzlpREMwU1pNbTF3WHdzam84R0Z0UUF3QmI3TElGTjRxaUlHTlpsdU00cm94dDBzWmpBOEJldTNadE8wVlJBMXpMN2pLWHVheUd3OUI5anA2YUE2aUp6TG1jR0YwS1BHOGN3ekJnR0FaV3F4VVdpd1V5aFVJaGtyUkowLzhDMkxFQUdIZDM5KzNlM3Q0dVlIT1p5MXhXbzNiOCtQSGtTc0pRaWRGRDlOQmtNaG5rY2ptRXdnSEV3b0ZXcXdWcEc1dmFjTE5KNGFpdnIrOUJ1RlRpWGVZeWw5VnNHSHF4UllzVy96bUFtZ1VWTUhvNDV0YWtFRlFtNHg4MkZRV0NKRW1PWlZsQ2lHRkZzUVRHYkRadnBtbTZvV3Y1WGVheUdyMjRvZGZya1pGaEFNTXdNQnFmbnNtRHdzTENmYkJ2eXBVZUhNZUpqYmtpd1NSWWx1VXNGZ3RzZEEvQWNad1Vqc3BzUFRiQmErT0lNb1VYRmdDVGxwYTJMU3dzYkl6cjFIT1p5Mm9PMUpLVGs4R0JrS1loL0oraTM3OXp4eDlubkhoclZ2RFRCbmJFa2lSSmNwUk1CbHBPUTZHZ29WQXFvVktxb0ZLcm9GRnJvTlBweWtKUlczQnpERWZyMXExN25tWFpuVS9hWWlZbUprS3BWRDdRYlZxdFZvd1lNUUorZm41d2QzZEhYRndjaW91TFhWZjJVMjU2dlI0Y0NQZ0hCRDExWTNGV3EzVnY3QWZ2WjlzQW04WEJheXNmaG9vRDc3WmhLQ1dEVEM2SFhDNEhLWlBKUkZEamJEdzJ6b2J0Z3dYQUZCY1hKN2xPdi91M2NlUEdJU2twQ2V2WHIwZFNVaEoyNzk2TlljT0d1UmJtS1RlRElSTmFuZHRUK2R2VDA5TU9PUWxCTGFpNGYwMW94aVU1aWhTQVRjYm4xK1F5R2VRMFhSYUtPaFlSQ0lLd2EvMUlTRWpZUEc3Y3VNOEFoTGhPdzN1em9xSWl6SjgvSDZ0V3JVTGJ0cnlVMmFKRmk5Q3hZMGZNbURGRFVtcDMyZE5uRE1QY2s2ZDI0Znc1TEY3MEE3NzlibDZON3QrRkMrZXhkY3RtTkduU0ZCMDZkcEtlLysyM1g3RnA0NjhBUWFCdDIzYjRJSlp2b0toTVlQbk1tZE5JbVBzZHJJd1ZZYUZocWRldVg3L2c0SzFKWWFpSVA0NE51U1JGZ2lRZHZEV2hTa3JUZEpuSFpodUtpdUdvamRmR2pCOC92c1Jpc2Z6NnRKMXdhOWV1UlpNbVRhQlNxVkMzYmwzTW0yZC9BdTNac3dmTm1qV0RTcVZDZEhRMFpzK2ViUWRRUFh2MlJQUG16UUVBeWNuSktDa3BrVUFOQU5xMDRaVzJqeHc1NHJxNm4ySXJMQ3k0cDgvVmI5QVFFNy84cWtiM2JjSDhSQ3hkc2hqWHJsNUZVVkdSOVB4Ly85M0V4ZzBiOFAwUFM3QjAyUXFjT1pPTTQ4ZVBDWi9oQlpaWHJGeU45L3QvZ0JuVHBrcXBtR2xmVDhhRUx5Yml4eFdyNE9QcnQyUHZudDBXWjk0YVFOaFhSRVZ3STBsUXR1TlRBcWpKNUhMSVJkb2lzVHdxdkltaktJcGdHSVlqU1JJTXcwaDVOZ0RXVzdkdWJhcGJ0KzZJcCtWaysrbW5ueEFiRzR0dnZ2a0duVHQzeGw5Ly9ZWGh3NGREclZaandJQUJ1SHIxS3JwMTY0YWhRNGRpN2RxMTB1dTJ5a1U5ZS9aRWJpNnZQM3I3OW0zUU5HMG5xQ0dYeStIdDdZM1UxRlRYMWUyeWNwYWRuWTJwWDA5R1ZxWUJCRWxpOE9BaGFObnFCYVNtcG1MVWlPR3dXTXp3OFBERThoVmw5UFRqUHZzVWFXbjh3RkJlWGg3VUdnM1dybHNQZ0ZlRlNwZzdCL2tGK2ZEeTlNS1lzZU1ra1I0QVdQL0x6OWk0Y1lQMGZnQVlNUEJEMERTTjJiTm0yTzNiUDJmTzRQbm16YUZXcTJHMVd1SHA0WWt6cDA4ak9yb0Z6cHc1alpFalB3RmdMN0JzeU1pQVVxVkNXRmdkMGJNN1ZZRzNaaVVJTWI5R2NBREJFUUJIa0NSSGtTUklrdUtrU0ZNTVF3VnZUYUZRbGdHYlRhN05OaHkxbXgyTmlJaTRZTFZhTjVJaytjYlRjRko5ODgwMytPQ0RENlFjV0dSa0pHN2N1SUhKa3lkandJQUJXTGh3SVJvMGFJQlpzMmJ4ZDgvNjlaR1Nrb0kxYTlaSTMvSDIyMlZpRmNYRnhVNkxGUXFGb3B3c21jdGNCZ0EvcjF1RHhvMGJvOS83SCtEYXRXdFlNRDhCTFZ1OWdPRGdZUHl5WVNNdVg3NkVxVk1tMjMxbTJneitmTXpQejBQY3dGaEpmOE5zTm1QcWxLOHdaZXAwQkFZR1lzY2YyL0g5Z3ZtWTlQak83clFBQUNBQVNVUkJWR1haNTVzMGJWcU9lZmhPQXN1Wm1abVk5dlZrTUN3RG5aQW50QlZZL3ZQUG5aTEFja0ZCQVJRS0JjeG1NK1orOSsyV1pVc1haemw0YXJiZ0pvU2g0UGlIV0RTd1NaL0p5cncxV21qV1ZhbVVJT1Z5T1J5OE5qZ094Z3U5SWd3QUppOHY3NmtKUjgrZlA0OFhYbmpCN3JtWW1Cajg5OTkvTUJxTk9IMzZkRG14MnRhdFcxZjRmU3FWcXB4S0Q4QnJWVDRNZlVxWFBmb1czYUlsZHYrNUN5dCtYQTVUYVdtVkJWVllsc1dYa3lhaTJ5dXZvVVdMbGdCNGFjalUxRnVJSHpzRy9mdjF4Wm8xcTJESXlMRDdYTDE2OWZIRy8vVzhpMnZrSENhTUg0dUJjWVBRcnQzL3N3ZllDZ1NXOC9Qek1Xcmt4L0J3OXpqa3hGdXpMUnBJYkI2MnVUV0tzZ2xEWlJSa01ybU50NmFBU3FXR1RBUTJzV3RYREVjcGl1SUVIVUhiMlZIR3g4ZG5EOE13aHdpQ2FQMmtuMVFxbGNycENTUCtYeWFUbFZNNnIweVVOamc0R0tXbHBjakx5NE9IaHdjQXdHS3hJRHM3RzdWcXVXanZYT1lFMktKYklISCtRaHc3Zmd3clZ5d0hUZFA0Y3ZMWGQvemMwaVdMb0ZRcTBhZnZlOUp6Rm9zRkFRRUJkbUhyL1ppN3V6dEtTMHN4KzV2djRPYm1oak5uVHNOZE9LOUZnZVdPblRwTDNxSldxNFdibXhzSzh2TXhlY3Ewb3krLzFPWjZKZDZhMkx2R2xuVnBDR0VvajFHU1F5YVh5VURMNWFBVkNpaVZLcWcxYXBBMFRVTXU5SDVVRUpMYUZSRUFXSXVLaW41K0drNnFoZzBibGt2cUh6NThHSUdCZ1hCemM4Tnp6ejJINDhlUDI3M3UrTGV0UlVWRlFhVlM0Y0NCTXFIa2d3Y1BnaVJKdEdyVnluVVZ1NnljVFpzNkJjZU9IMFA3OWgwd0xuNENqaDQ5VXU1bTZtZ0hEeDdBL24zN0VELytjenNXNFlpSUNCUVVGT0N2L2Z1a2ZOdm1wTi90UG52NThpWDg5bHZWZ3JMbkdqZUcyV3lHUXFFQXd6QTRjdmdRbWpUbHRVd3JFbGdPQ0F5RXU0Y0g4bkp6ZDFma3JRR0VIWnNIUU5oNGJHVjVOY3JPVzFOQXFWQkNyVlpCcTlGQ0pnSmJSVVVFbTdZUGFSS2hmZnYydng0NWN1UkRnaUFlZTAwRWxtWHh4eDkvbEh1K2JkdTJpSStQUjgrZVBmSHNzOCtpYytmT09IandJT2JNbVlPSkUzbXg0S0ZEaDJMZXZIa1lPM1lzUHZqZ0F4dzllaFRmZi8rOVhWaTVidDA2NU9ibVl2RGd3ZEJvTklpTmpjWFFvVU9oMCtsQTB6VGk0dUxRdjM5L1NUSGJaUzZ6dFQ1OTNzUHMyVE93YnMxcXNDeUxVWjk4Q3BJazdZb0grZm41ZUt2bkcyajIvUE1ZTzI0OEV1ZDloOUxTVWd3Wi9LSDBQWWtMZm9CT3A4TzBHYlB3M2JmZjRJZUYzME90Vm1PVWc0NW84cWxUMkxoeEEzcjArTDg3N2x0b2FCaDY5UGcvRFBwd0FEaHdhTk9tclNRZVhwSEFza3dtdzdqNENlZGZlNlhyMlFxOE5RdEJpS0FtRkEwSThONGFSWUlpS1U0bVZVTGxVdDhhcmFDaFZDbWhGaVlQaUo0OWV5SS9QeCtGaFlVb0tpcENjWEV4U2twS1lES1pDSlBKQkJzOUJKTGpPQmtBT1FCbFVWSFJBSlZLOWZYamZOSWtKaVpXMkJ4Ny9mcDFoSVdGWWRteVpaZ3hZd1p1M0xpQnNMQXdEQjgrSEVPR0RKSGV0MlBIRG93YU5RcFhybHhCVkZRVVdyWnNpUTBiTmtpNm9qMTc5c1NOR3pkdzRzUUpLWjgyWXNRSXJGMjdGaVJKb21mUG5wZzNiOTREbjRCdzJhTmwrL2Z2UjNoa2c2Zml0eG9NaG0rZmoycDhCRHo5dDZocllBUlBCVjVDRUVRcEQzQ0VsVmVob2ppWlRDWXFVSEcyVEI0YXJSWTZuUTZlbnA3dzhmRkZVRkFRd3NMQ1FQVHUzUnQ1ZVhrb0tDaEFVVkVSaW9xS1VGSlNndExTVXBoTUpzSnNOc05xdFpJc3l4STJlZ2owNHNXTHZXSmpZLzhBRVA2MG5vd3BLU2tvTGk1R3k1WXRwZWNtVFpxRWJkdTI0ZGl4WXcvVTY3eHg4ei9rNU9TQVlSaVVsanlkSTFwS2xRb1VSY0hMMHh0aFliVWw4bFJueG5HY3NHYlpzRnByYnMyVUtoVmtNaG04dmJ3UkZoYjYxQU1ieDNIWFBoc3pldUxhTmF1TEFKU2dUTmZBQ0Y1YXJ3U0FXUUEyUnBEV1k0VndrMU1vRmZ4Y3FFb0Z0VVlEblZZTE4zZDNlSGw1dzkvZkQ4SEJJUWlQaUlCTXBWS2hwS1FFTkUzRGJEWkRMcGZEWXJFNFZraHRRMUlHQUROdzRNQ0MzcjE3LzZSVUtpYzlqZ3M4Yk5nd0pDWW0zczhCd3BVclY5QzNiMStzWHIwYVRaczJSVXBLQ3ViUG40LzRlTjd0dnBOS2txUHA5WHI0KzkvZDZMUEpaTWFaTTJkQXlXVFF1Ym03NVBlS2pNak55MFhXeVV3MGJkSVVOQzEzZXV4T25EZ0prcUtnMWRYOG1oVVZHWkdkazRQTXJFeEVDODNhRmRudEo3eWZNVGMzZC9QYU5hdE5OaUdvV1FReUFCWU9ZQWdIYlFQeFB4ekhnV001c0N3TGxtVjVKZytCemNOcXRjQmlzY0JpTnNOc012UEFwbFFxVVZKU1lwZHJrOGxrc0ZxdG9DZ0tETU9BNHppSk5wempPQVlBczNuejVwL2ZmUFBOOXdEVWZkd1dPQ0VoQVFrSkNmZjFIVDE2OUVCOGZEeEdqQmlCdExRMEJBY0g0OU5QUDhYSEgzOHNYVUExYmVuNmRGQXltVXN3V1RDTlJndU5Sb3NNZlJyUzB0TVFGbHJlUzdwKzR5WklpbnBnYTJhN1R6ZHYvb2ZRU21UNGFnVUhQOG5lMnZXbFM1ZWNkQUExbTl4YVdZdEhHYUVrQmJsTTFBM2xxNTZpdDZiVmF1SHU3ZzVQVHkvNCtma2hPRGdZZGNQRDBhalJzeUExR2cyVVNpVVVDZ1ZvbW9adE1VRW9Jb0NpS002bW4wMXMvYkQyNnRVcnQ2U2taT1hUZkNIRng4ZmordlhyTUpsTXVIcjFLc2FNR1ZOcENGVGRscDJWL2RRT1QxZG1XcDBic3JLeW5iNldrNVB6VU5aTXEzTkRWbmJXVTN0TXNyT3preFl2V2xnSys0S0JDRzRTazRkdGl3Y2ZpcEtnWkJSSFVRN051TUtVZ1ZxdGtrRE8yOHNiTXBrTXBGYXJoVnF0aGxLcHhMMjBmcXhidDI0dHgzRXVodDJIY2dlODkrSHBwOEZ6WTFuRzZXc1BhODAwR2kwWUsvT1VucXZjeFc5bXp6cmhCTlRFZkZvNXdSWmU2WjEwbUFmbFI2ZmtBcWlwVkVwb05CcTR1Ym5CdzlNVHZuNitBQUNaVHFlVEtxSkN3Y0F1MXlhVHlUaXIxVW93RE9PMFlUYzJOamIvcmJmZVdxSFJhS1kvNFFjR2VyMGVCb01CVm9hQnNiQjYyRTIxV2gxa2NobjhmSDN2V3RxUElJQ1NFaGVYVzBWV1VnSFAzY01zcnR6cjhTS1NNMEhNVHdhdTVOM2JoaU04d0EySkFoZmxXeTIvb3lBL0h6ZXVYMFZSa2JGU0lBK3JFdzQzZDNka1pHUWtyZnBwUllXNU5UaHB5Q1ZKa3VQNzFtU2NURWJ4b0NhVGc2YkxkQTU0alFNZDc2MTUrMENoNExzTFpCNGVIaWdvS0lEUmFKU3FvV2F6V1FJM3E5VUttVXdHaG1IRXBKM1UweWJrMnF4dnZmWFdtaTFidHJ4QkVFU0xKeFhVa3BPVEFZS0VScXZqMlUyclVkdTRxTWlJZEgwRzB0UFRxMTBKZnRmT0hWaStiQ2tNaGd3RUJRVmg1YXExdUh6NUVtTDc5NVBlTXpaK0FycDI3ZVpDd2tmWkVwT0JxM24zL3ZrcmVTRG1KNE5iMHJGYWR1ZjZ0U3NvTGk2NjQzbDk0L3BWUE51NDZZbDNlcjJaN0FUVW5IcHJrSmh5YllmYzVaREw1SkRUZkRPdVFxR0FVcVdDUnNOUE0zaDY4WGsyMFdTZW5wN0l5OHREWVdHaGJROGJhSnJtcXd3T1hwc042NGVrMXJ4OSszWnpRVUhCais3dTdrOGtzT24xZW9BZzRlZGZNMkxKWW5MWm9FOURlbnA2dFlreXA2V2xZY2IwcWZoeTh0ZUlqbTZCZ2dLZUdpY2lJaEs3ZHU4REFBeU1mYi9HMW0zWjBpVjR2WHNQT3pZVGNiL216dmtHS1NuL2dLWnB0Ty9RQ1lNL0dpSU5YNmVtcGlKaDdoeWtuRTJCUXFGQXg0NmQ4R0hjNEhMRDJkVnBkOXJtaXpFdlFDNlhneUJJaElXRm9YL3NBTFJ1SGZQQXprSGlma0ROQnR5cXkrNEVhcmJnOXQvTm0xdXZYTGxzdllPM3hwVFByVkdRVVJRbmpVN0o1VHdkT0UyWGVXczZMZHc5UE9EdDdXTTNBa242K1BqQXc4TURPcDBPYXJVYUtwVUtDb1ZDeXJVNXk3YzV5N1Y1ZUhoc1psbDIyNU1JYkFaREpqUmFYYzNuWUhSdU1CZ00xZlo5Ri8rOUFCOGZIN1J1SFFPYXBpV2VPSUlnb0ZEd2Q3MjdiVW01Ry90eCtWTGs1SlJQNEUrYU9BRzFnb1B4Mis5YnNHanhNaHc5Y2hoSlNac0E4RDE1WThlTVJyMzZEYkRwOXkxSVNGaUEvZnYyNHJlTk5jZTlVTlZ0Smk1WWlNMWJ0Nk4vN0FETW5qa2RHMy9kNFBJazcyQldxM1ZYbTVnWExqangxQ3IwMWtnN2I2ME0xT1RDUEtoQ3FZUkt4Y3ZzdWJ1NXc4dlRDLzQyM2hvQWtINStmdkR5OG9LYm14dTBXaTNFOWcreFNtb0RiSndOaGJqZGlCWDRhWHlMd1dENDhZazhPSXoxZ1NTYk5Sb3RyRmJyZlgvUDZkUEo2UDVhTjh5YU9SMTZ2UjdkWCt1RzdxOTF3NG9mbDFmNU80NGVPWXcrNzc2TjlpKzNSV3ovZmpoMzlxemQ2L3YzN1VXLzkzcWphK2NPNlA5K1h4dzljbGg2YmRqUWo5RDlOVDYwSGZueGNIUi9yUnVHZmpSSUFwRzJiZHZodlg3dlE2RlF3TS9mSDgyam8zSHA0a1VBZk1YUzA4c0x2ZnYwQVUzVENBNEpRZXVZTnZqMzM1cXJUOTNOTmxVcUZWcTNqc0c0K0FsWXZHaWhIZkhpazJCRlJVVkkrbjBUeG80WlhUMGg2L1hyTzJFL0Uyb0hiQnpIV1RtT1l6aU9ZMW1XNVFoQTh0WktTb3E1VElNQnFiZHVvYUNnb0l5OVE2bUNScU9HUXFIQWd2bUpPSGp3TDZqVWFudGdDd29LZ28rUER6dzlQYUhUNmVEWS9sRkpsYlNjMXhZWUdIallZckVzZWRLQXJib0tCVlhhbHRGNDM5L1J0R2tVTmlWdHhjY2pScUZXcldCc1N0cUtUVWxiMGUvOS9sWDYvTlVyVi9ENWhIZ01IaklVVzdmdnhKdHY5Y0tva2NNbGlwdWJOMjlneXVRdjhkbG44ZGl5YlFkZWZmVjFqQjgvVGhLbFNVaGNnRTFKV3dFQWMrYk93NmFrclVoY3NKQS80VWdTdmZ2MGhZZUhwM0RpWDhQaFE0ZlFzaVZQQXVEajQ0T0V4QVZRS2xVU0VKNU9Ua2JqeGsxcWJNM3ZaWnZSTFZyQ2JMRklnUHc0bWVNUXZmaDNWbFlXQnNiMng1VXJsNnZsUmxKYVdycG0vUGp4dHh4QXplVG9yZkZqVXp5ZU1Bd0RrcVRBc2d3c0Zncy9TUkFlanN5c1RMQWNCNlZDQ1pYUTNuSHMyRkVvbFVxNHVibVgyemFwVXFrUUVCQUFiMjl2dUx1N3c3Yjlvekt2elZsZkcwRVFsblBuenEwRWNOdmxoRCsrdG1WTEV0cSsxQTZ0VzhkQW9WQ2djNWV1YU5Dd0lYYnUzQUVBOFBiMndiTGxLL0ZNbzBZZ1NSS3Z2dlk2TEdZemJ0MzZyOHJiT0hmMkxEcTJiNGQrZlh1alFjT0dlTEh0UzA3ZnQvRDcrVkNwMWVqYTdaVUg5dnVyc2syQ0lPRGw2UVZqa2ZIUk9YQUVvUDBnQ202ai93ZENLWVBxdGZwd0c5Y0doSnZDN20yalI0M0E2ZVJUQUhqRzNPOFh6QWNBZUhoNDRLZlZhOUh2L1ErcVkyOXVIenQyN0s4S1BEWGIzalVXNEhOckZFVnhITWR4RkVXQlpWbE9vVkFJdyswcWVIdDV3V2dzaEVvb0dPVGw1Y0ZzTXVIRkYxK0VYRjUrdW9RRWdLQ2dJUGo2K3NMVDB4TnVibTdRYURSUXE5VlNIc1laQTBoRnViYW9xS2lyeGNYRlB6enBGMy9YemgxUVdQaGtDdHJxOVhvRUJ0cDM1ZGV1SFFhOVBoMEFvTlZxY2ZMa0NjUjlHSXZlNy9UQysrLzFjZW9KVkdhTm5uMFdPLy9jaTUvWGIwUjZlanFXTFMzdjZLOWM4U1ArL3Zzb3BrNmREcGxNOWtCK2UxVzN5WEVjY25Kem9IMkVlZ2lWSFNOQXFPUmdjMHJndmZRMXFOOW9pTkkvcjhMOVUzdnF4Q0ZEaDJQcTExT1FtREFQMjdkdFJkLzMrQXE1ZUcxWGgrWGw1ZjJTbUppWTYrQ3BtWnpuMWppdVRNb1lrTWtvS0pSS21NMW1VQ1NQTmNYRnhTQUlRbkM2RkRoODZCQUdESWlEenMxNW83VU00S2wvQXdJQ2tKT1RVMkhyaDhWaUVXYXlySnpBOXNHeExBdUNJRmlPNHdqYlhGdWJObTFXSGo5K3ZCMUprdTFjL3MvalovNysvdENucDl2ZmZtK25JaXFLYjBVNThOZCtyRjcxRStaOE53L0JJYnhvMllzeEx6ajFhaHpCemxSYWl1M2J0NkZMbDY1UUtKVUlEQXhFKy9ZZGNQRGdBYnYzYlZqL0MzYnQzSUc1Q2ZQaDV1NytRSDczM1d6eitQRmpvT1Z5MUt0Zi80RWZIMFhyRUxqSHZ5ajliZmszRTdtZjdJUzhuamRLdGwyRzlYb3VkTU5iSW5ma0RwaVBwMEg3Z1gwTFVYaEVCRHAyNm95Vks1Wmo1cXh2NE9aMjcxTVljcmtjN2RyWlgrWTdkdXc0TUhyMDZPTlY4TllZQVQ5WXE5WEtDWkVnS0ptTVV5cVVJQWtDTjI1Y2w0WUhlRFlQRFU2ZlRzWkw3VjVHdlFZTjhPL0ZDeFVER3dDRWhJUWdLeXZMYWV1SENHd2l1REVNSXoyRUdWSVdBQ0gydFNVbko1c05Cc09TZ0lDQXB4TFlmdDJ3bnEveWNSemF2ZnovOEg3L1dBQjhtOE5Yazc1QVlXRWhta1pGNGREQkExSXU2a0diYlpHQ1kxbFlyVlpwd3FUYks2OWl5T0E0ZE9qVUNjMmFQWSsvL3RxUGMyZFQ4Tm5ZY1FCNGdSR0NBRWlLUW41K0hyWnUyU0o4ai8xc2JHQlFFSTRlT1lLNmRjT1JsNXNMWHo4LzBBb0ZmbHE1QXZuNWVYaTNkMThVRlJseDRNQmZhTktrTEorMVpYTVNOdjIyRVhNVDVqOHducnFxYnROa011RjA4aW5NbURFTmNZTStlaWlVN3FaRHQyRG90cnI4TWIyZUM3cUpQK1RQK2NGNk13K3FWK3ZCY2prYmNEZ3VPM2Y4Z1gxNzkyREsxOVB3emV4WitIcmFkTlNyZDI4QWJiRllzSE9udlpiNnRXdlh0aFlVRkRoT0Y0Z2VXem1HWElxaVFGSVV3SEZTMzZ4Y0xrZEFZQ0EwR2cxMFdoMysrZWNNL1AwRFFOTUtYTDF5QllVRmhiajQ3d1hrNUdTREpFbkk1WEwwZXZ1ZDhzQW1ocVM1dWJuSXo4K0gwV2hFY1hFeFRDYVRIYmpaZW0wTXczQWN4MEY0U05NSUFDeUJnWUVIVENiVGZKcW1oenhOb0paODZoUzJiRW5Dd2grV2dLSW9mREpxQkVKRHc5RHU1ZitIdVhPK1Fmc09IZEh6emJkdzdPK2pPT1RncFR3b2MyelFuVEY5S21aTW40b09IVHZoOHk4bUlUS3lIaVorT1JuZkwwaUVQajBkdFVORE1YUDJ0NUthVVpldTNYRDJiQXBpKzc4SGlwTGg5ZTQ5RUJsWkR6bTVPWGJiR1RWcU5HYlBtb25seTVhZ2R1M2FXTEpzQldpYXhveVpzNUdZTUJjL3Ixc0x1VnlPdGkrMWsvSTZETU5nMWt3K0RIeW5sejMzL3NwVmF4QVFVUDI5aEZYZDVyQWhINEVnZUlMRlQwYVBlYUI5YkZXeGt1Mlg0ZmJKLzBENXFKSFZleU0wYno0RDk4OWlrRC9qb04zN1VsSlM4TzJjdWZEejk0ZWJ1enRPbmpoK3o4QldiaDlLU240Y04yN2NEUUc4ekk0RkExUXdaUUNBczFnczBHaTFuTnhHdzBBdXA1R1duZ2FaVElZNmRlckN6ODhQMDJmT1JvUDZEZURqNjR1RjM4K0hWcXV6QTdWeXdPYnY3NC9zN0d6azVlVkp3Q2FPV1lrZW00M1g1aGlTMmswakVBUmgzck5uei9KT25UcjlqeUNJcUtjRjJJNGRPNG9PSFRwSnpZS3Z2UElxamgzN0crMWUvbjlJU2ZrSEV3VkZvUENJeUJyZmwwNmR1NkJUNXk3bG5vK01ySWUvRGxhdVk5cTZkVXlGRjY1Q29jQ0V6eWZhUFRmd3c3aHk3MnZSc2hWKzJiQ3gzUE1Sa1pINGJwNXp5aWlLb3JEL3dPRUhlc3lxc3MwN3JkZjltazVYRFgyU0RJZUNtWWVrUDQzTFR3UExUNWQ3MnljMnJMbE5tMGFoYWRQcXVUdzVqanZ6eHg5L09CWU1iSE5yWmltM1JoQ3NRUG5OV2ExV0RnQ1VTaVduMCtta1dkQ2lvbUpjdW5nUi92NEI2TkN4RTgva0lVd1krUGhXUGhwV0xqdGFxMWF0Y3JrMjBXTno4TnFrY0pSbFdWdlZlSWJqT0JLQXRVdVhMdnJzN093ZnZMeThGajVOWHB0dHo2dkFZeWNsbkd1eUlkWmxqNjlSRklXaUl1TWpRV2pnN2UxOVR5bVN0TFMwald2WHJqVTZBVFdUSGFqeG5Hc3NRWUFqU1pLbjlwYnpQV3JpMkpTQ3B1SHQ1WVg2OWVzTHRFUys4UER3Z0krUGo5MWt6cURCemdQQ2N2dzY3dTd1Y05iYlZrSGpMaWZTRzFYVXRPdnQ3YjNkWXJFc2ZscE8wT2JOVzJEWHpwMG9LU21CeFdMQnRxMWIwRUxvMFdyYU5BcmJ0L0Vuek9WTDFkUC9wRktwWGFod2wydnpNTmVzb20zNytmbWgyRmh4bFowTDk3aC9qNm9hdmtNMHRkbyt0MWhhV3JwNjVNaVJGMjFDVUpPRHQyWlhNQ0FJZ2lPRVpuOFpyempGeWVVeVlSYVVsbVpCK1NGM2dTWFgyeHYrL2dHU2R1bGRlV3dBWDBnUXZUWmJxbkJIcjgyMmlDQjZiU3hmQm1PRVNpbEpFQVIxNk5DaFpXM2J0bjJlSUlobVQ5S0ZNK0NEZmlBRTdqVmZYejhrSkM3QTg4MmJvMVBuTGhqMElWOHdhUFBpUzJqWDdtVUF3UEFSby9EbHhNL3g2NGIxQ0krSTRCT21UOUNkL2xHeUltTmhoYTBMNUVOYXN5SmpJYWdLV2tnQ0F3T1JucDZPekl4MHFBV2lCVHNiR2dVdU1mbWVaMGE1Y0E5Z2FQVmxoT3JValpBRzRUbU9PNzFuejU2OVR2SnF0dTBkamtVRGZuUktISnVTeXlDWEM1NGJMWTVObFEyNWUzbDZ3Yy9YcjhveWxVNVhXUzZYSXpnNDJLNklZRXRwSklhaWp1MGZUZ29KVmdDV2R1M2FwV1ptWmk3MDhmRlo5RGhlSkZvbitZOXRmK3lxOFAyOTNuNm5YRElUQVBMeWNqRno5cmR3YzNQRG5qMjdVVkpTVXFWdDNTbHN5TTdKY1FHYmd4bU5oZkR4OVhINm1vK1BON0t6SC95YUdZMkY1UWdCYksxWnMyWXdHQXpRNi9Vb0tzeTM3NVBVQWhoYkcwRHQrOWlEYk9CeWR2VmRGMW9OdEZvTmJ0Njh1ZkhISDM4c3FDZ0VoWU95TzUrVkVaVHZPQTRjeTNJY3k0SmxHVENNbFg5WUxiQmF6TENZUzJFeGw4SlVXZ3hUYVJGdVhyOXk3OEFHQUFFQkFjak56Ylh6MnB6bDJtdzlOb2RDZ3VpMVdRaUNJSDE5ZlhlV2xwYk9WU2dVSHo5dUY0bXNtdTd3cFNXbEdETjZGSy84cnRWSzdSTzJkM1JuWGRTVldXaG9iV1JtR3BDaFQ0Tlc1K2JTUERBV3dtZ3NCR08xSXJTMmN4QUlDdzJGd2ZEZzFremNKNVpoRUJaYU9URDUrZm5aMGU4ODZwYWZuNy9rcFpkZXVsU1J0MFlRaEFoc0RFRVFqTWpjSWFwTzBUUU5sVW9sZUdkbGROOWVYbDd3OVMxVG5XclFvQUVhTm14WTlXdTJzaGRyMTY1ZFlWK2JvOWZHc2l6aFVFZ29WeVZkdFdyVjB2NzkremNpU2JMOTQzU3grUG41SVYyZmNkOFhRRlN6WmxpNHFPSlIycUlpSXdJRDdrN01oU0FJTkcvZUhOZHYzRVJPVGpieWNuSlFXdnAwa2srcVZHcVFGQVVmYngrRWhvWlUrdDRXMGRHNGVmTS9aR1psMWVpYXFWUnFVREladkwyOTd3aHFqNXRacmRaOUV5ZE9QT0FBYXFVaXNBbWdacDlYRTdRTVJDVjN1VnpPeWVWbHhKRzJBT2ZoNFFGdmIyOEVCQVNnZHUyN1d6dmlUb0lqdDI3ZHd2bno1M0h0MmpXa3BxYkNZREFnSnlkSEFqeEhMVklCOUFpV1pRbVdaU21PNHlqd1dxUTB4M0hLR3pkdXRBb05EWjBMNExGU0h6bDFLaGtFUVVDajFVRmR6WGY0NGlJampJVUZBTGhxSjVwMG1jdHF5TklQSFRvME95WW01cFlBWkNYZ05VS0xZSzhQYWl1bHg5aDZhd3FGZ3BQMFFUVzgwTEdIaHdlOHZHekVXZXJXeFRQUFBJT1FrSkM3aTdMdTlJYVFrQkJKVU5reDErYlkraUhLWW5HODJVNGtXSG5uZ2lERHdzS09GeFFVSk9wMHVxbVAwMUZzMWl3SzZlbnBNQmd5VVZpUVZ5MHNIQURmdnlTVHlSQVVGSWlBZ0FEWDVlS3l4OEp1Mzc2OUtpWW1KbFVJTThYUXM5UkpDR29WdkRWcDBGMGlqUlJDVVZ1YWIxRy9RQXhGYTlXcWRkZWdWaVZnNC9NNG9VNXpiVTU2MnNSQ2dtTnZtemh1WlNFSWduSnpjL3ZaWkRMVnBXbDZ3T04wTUFNREE2dU4zZFpsTG50Y3pXZzByZzRPRGo0Ris5WU94eERVWWhPQ3NzNUMwSXBBalZkMTkwRlFVQkJDUTBQdmFSK3JwQk9uMCtrUUVoSmlSMjlreTdnckRxa0svVzEydlcyQzF5YjF0b2tMc1d2WHJpVXN5KzV4blNZdWM5bGpsVmZidjNEaHdqMXdYZ0dWUERZNHpJTUs1SkdjTGFqUkFzVzNHSTdxZEtJb0M1OVhDd2tKdWVlSkRObk5temVyam9JOFZaSFQ3bm54T2ZGMTRTRW04RmloQTU4UXdlMlZWMTVKTzNEZ3dQY2hJU0doQU1KZHA0ekxYUFpvRzhkeDEwNmNPSkgwNmFlZkZqb0pRY3VCbWlDQWJDZW5aNHNmRmVFSUwrUkNnbVZaM0EwKzJRSGIzYmg2dnI2K1RpY1JiQVNXWVVNZlRwaE1KaEFFQVVHNlQyb0JJZmhmUkxacDArWkVUazVPZ3FlbjUreXFoc1V1YzVuTEhvNnpkdTNhdFRWdnZ2bG1xb08zNWl3RXRkcTJkb2pocDhEdktCVU10RnF0WGVncFZqOGpJeVBSdUhGanFOWDNQaUZ5VjJDaVZxc1JHaHBhYm9hMGd2bFJqbVZaUWl3a2NCekhDZ1VGMjZrRTBzdkxhM054Y1hHUVNxVWE0enAzWE9heVI5T3lzN01YaDRlSG43WHgxRXB0SHdSQm1HeEJ6VEVFRlNRR3l1WFZiTUhOVjlEV0RRME52UzlRdTJ0Z0EvZ0Vla1Y4YmM3R3JNVEdYUUhjT0dFcVFjeTNrUURJVnExYUxUbHg0b1MvWEM3djV6cUZYUFlVaDNyUTYvWEl5RENBWVJnWWpZOEdRM05wYWVuUDc3NzdybTIvV3JrUWxPTTRDZFE0am1NRlJseU9aVm1PWVJnN3ZqOHhzaE1mWXBWVW9WQkFyVlpETHBmajBxVkxEeGJZQUNBOFBOenBxSldUYVFSTzZHY1RSNjNFV1ZMYkZoRGluMy8rSWZmczJiTzRmZnYyZmhSRmRYR2Q0aTU3R2tFdE9Ua1pIQWhwR3NML0VkZ3ZpOFh5NTA4clYrekt5Y214T0FFMTJ3a0RmbXlLSUZnQ1lQbDBGSy9lTGpCM2NFb2xMOFNpMFdqNW5qVjNEM2g1ZThIZlB3QzFnb01SWGpkYzB0RzRYN3VuYjZBb0NuWHIxa1Z3Y0REOC9mM2g1ZVZsVnlsVktwVzIrVGRPWkFLeFZiWVMzRlVyK0JZUWMrZk9uVk12WGJxMGtPTzRZNC96Q2JwcDB5WW9sY3FLRXhWV0swYU1HQUUvUHorNHU3c2pMaTVPVW5keTJkTnJlcjBlSEFqNEJ3UTlNbU54TE11ZVBIVHdZTkxFTHlZVU9PVFVTb1JIcVIyb1NYUkVKRmUrQ2xwK3VrRG5wb09IaDZkRVJWUTdOTFJhUU8yZWdRM2dGVzNDd3NJUUZCUUVSMjFTSnlwWG9wcXpYUXVJQTdpWm5ubm1tWlMwdExRRkhNZGRlVkpQNEhIanhpRXBLUW5yMTY5SFVsSVNkdS9laldIRGhybXU3S2ZjRElaTWFIVnVqOHorY0J4MzlkeTVjK3Y3OW5rbnd3SFViQ3VnSmp0UUUzcldTRkthQjRWY0p1Zmt0Q2gwcklCS1pUOWw0T1BqQS8rQUFJU0UxTDR2N1lWcUF6WUFDQTRPUm1ob0tBSURBeVgrdGtyQURiYjliUUovbTBRbExqeE13Y0hCQjNKeWNoSUFaRDVwSjI5UlVSSG16NStQMmJObm8yM2J0bWpidGkwV0xWcUVGU3RXSUNzcnkzVjFQOFhHTU13OWVXb1h6cC9EcUJIRHEzdDNzbTdldkxtNmErY08xMkUvMkc0SGJBUkJXRGlPczRpQ3h4ekhDUnhyRkVlUUpJcUtqTWpOelVHbXdRQUN2TmkwUnEyRzJXVENnYi8rd3BZdG0vSG5ycDN3OXZhdTlzYjMrL2I3NnRXcmg5cTFhMHZnNXVIaFlTZmhad051WWtncTlzT3h6a0pTQUNZZkg1OXQrZm41M3drTFdLUFdxbFVyVEpreUJTKy8vRExVYWpVaUlpTHd4eDkvWU83Y3VRZ09Eb2E3dXpzR0RCZ2dxUzJOR0RFQ25UdDN0dnVPN3QyN1k5Q2dRVTYvdjJmUG5tamV2RGtBSURrNUdTVWxKV2pidHEzMGVwczJiUUFBUjQ0Y2NWM2RUN0VWRmhiYzArZnFOMmlJaVY5K1ZaMjdVcXJYcHk5djA3clZlWlMxZFpUYWhKNjh0MmJYMmtFeUpFbXhITWV4NERqSVpCVE1KaE5VS2pVWEVsSWIvZ0VCU0U5UGgxcXRnVnFqUVVyS1AzamwxVmN4ZXZRWVJFUkU0dkNoUTlXK252ZmRPMFlRQkNJaUlwd3FXam1yam9vdElBQUlBRTZMQ1J6SGtSNGVIdXVOUnFOR285SEUxL1JKTlgzNmRHemV2Qmt4TVRFWU5HZ1FldlRvZ2U3ZHUrUENoUXM0Zi80ODJyVnJoNjVkdStLTk45NjQ2Ky91MmJNbmNuTnpBUUMzYjk4R1RkTjJuRnh5dVJ6ZTN0NUlUVTExWGQwdUsyZloyZG1ZK3ZWa1pHVWFRSkFrQmc4ZWdwYXRYa0JxYWlwR2pSZ09pOFVNRHc5UExGL3hVMW02NDdOUGtaYkdhNWJuNWVWQnJkRmc3YnIxQUlDclY2OGlZZTRjNUJma3c4dlRDMlBHanBORWVnQmcrYktsaTcvNGZQd3BCMUFydFFFM3ZsZ0FXSVJybGlVSXNBUkpjQVJIZ09NNFRpYVRnV1ZaenQzREhRcUZBZ1JCUUorZURyVktEWXFpb0ZhclViOUJRd1RWcW9XaUlpTU9IVHo0TXJuRXdBQUFJQUJKUkVGVTZBRWJ3STljaFllSGx5T2pGTXU4VGdia2JmdmJJSVNrNG1TQ0NHNkVWcXRkV1Z4Y3JGS3BWQ05yOHVUcDBhT0hwSTM0eGh0dllObXlaWmc2ZFNwME9oMWF0bXlKWjU5OUZ1Zk9uYnNuWUh2NzdiZWxmeGNYRnpzdExDZ1VDcGhNSnRkVjdMSnk5dk82TldqY3VESDZ2ZjhCcmwyN2hnWHpFOUN5MVFzSURnN0dMeHMyNHZMbFM1ZzZaYkxkWjZiTm1BVUF5TS9QUTl6QVdJd2NOUm9BWURhYk1YWEtWNWd5ZFRvQ0F3T3g0NC90K0g3QmZFd1NCSWJ5OC9OKytPTHo4WWVkaEo0bGQ4aXJjU3pEaUZSbGtNdHBVWndGUlVWRk1BcHN4a29WSDcxcHRGcjQrdnBpKzdhdHlNL1BSMTVlM3FNSmJBQ3ZjR1ZMSVc3YnRHdmpzZG4ydFVuZ3hwYXA2aklDMEVuZzl0WmJieTFadjM0OXJWUXFhMHpHejNiNlFxRlFTUGxEMFdpYXJoYmdVYWxVTUp2TjVaNDNtVXdQUlovU1pZKytSYmRvaVlTNWN3QVFhTkdpSldaL002ZEtuMk5aRmw5T21vaHVyN3lHRmkxYUFnQ3VYNytHMU5SYmlCL0w5OEt6SEF1Tm9GMVFXRmk0N0oxZWIrMUgrYWtDK3hEVVJrSlBGRHRtR0lhVHkrVWM3NXlBbzJtZUxEWFRZSUJHbzBWMGRBdjgvZmRSdUx0N1FLVlVnbVZaclBoeE9YcjFlaHNObjNrRzQ4ZU5mWFNCRFFEQ3dzTHN0QkVjcHhGc2lDaGg0NjF4QXZpSmt3a1FtdjFBRUFTeFpjc1dZdHEwYVV2aTQrTmxDb1VpcmlaT0hwa1RIdnFLMUtTY1BXK3hXS3EwbmVEZ1lKU1dsaUl2THc4ZUhoN1NaN096czZ2TTVlNnlwd3pZb2xzZ2NmNUNIRHQrREN0WExBZE4wL2h5OHRkMy9OelNKWXVnVkNyUnArOTdkdWRwUUVDQVhkZ0tBRWFqY2NXRStIRjdVMUwrY2V4VGN3UTFPelpjb2RtZW94VUtqcGJMWWJaWVFKRWthSVVDRkVYQjE5Y1hkZXJVaGJ1N0J3aUNRR0JRSUhSYUhSaXJGUk0rbjRqdzhIQmN2UGl2ZEMwOHNzQUdBUFhyMXkrblJlb1lqanA0YlNLOUVXeHlib3lRZ3lNSWdpQysrdXFyUEY5ZjN5VURCdzRrRlFyRndJZDVvdEUwWGM1MXZuVHBVcFU0bzZLaW9xQlNxWERnd0FHOCt1cXJBSUNEQncrQ0pFbTBhdFhLZFJXN3JKeE5tem9GMFMxYW9uMzdEbWdSM1FKdjl1d0JsbVVyN2ZjNmVQQUE5dS9iaDRXTGx0amRpQ01pSWxCUVVJQy85dS9EaTIxZnd0V3JWM0hxNUltZnpwNDl1MmZqeGcwbE5wNWFpY1BEUkJDRVdjaXAyYkhoTWl6THlTZ1paREk1U2twS09IY3ZieWlWU3VoMGJsQW8rUCtYbWtyNUp0eGF3UWdMRFVOQVlDQVVOTTN2NjRFRGFOSzA2YU1QYkFSQm9INzkraEt3T1hwc0RNUFllbXkyNEFaaEZBTkN2czN1TzRjTkc1Wk4wL1NTZnYzNjRXR0NXOHVXTFRGNzltd3NXN1lNelpzM3g2SkZpNUNlbmw3aCs5ZXRXNGZjM0Z3TUhqd1lHbzBHc2JHeEdEcDBLSFE2SFdpYVJseGNIUHIzN3c4dkx5L1hWZXl5Y3RhbnozdVlQWHNHMXExWkRaWmxNZXFUVDBHU3BGM3hJRDgvSDIvMWZBUE5ubjhlWThlTlIrSzg3MUJhV29vaGd6K1V2aWR4d1EvUTZYU1lObU1XdnZ2MkcveXc4SHZRTlAyVGg2Zm5ueHZXLzFJRSswS0JiUU91eVhFT1ZPcFhveWdRRElPU2ttS1VscFp3YXJVYW5sNWVVS2xVcUZlL1BtN2V1SUdqUnc5RHA5T2gxOXZ2SWlRNEJQWHExMGY4K004eGVmSWtXTXdXaElTRVlNelkrRWNmMk1SY1VyMTY5ZXdxcExhNU5pR3ZWcTZZQVB0S3FTMjRFUVJCRUhGeGNaa21rMm5Sd0lFRFdhVlNHZmN3VHJUWFgzOGRJMGVPeE9qUm84R3lMUHIxNjRjQkF3YWd0TlI1WjhxR0RSdHc0OFlOREI0OEdBQXdlL1pzV0sxV2RPL2VIU1JKb21mUG5wZzdkNjdyQ25hWlV3dXBYUnR6NTgxM210YjRaY05HNXpmVFgzNnQ4UHNhTkdpSWhZdVd3R2cwcnBnMWM4YWVaVXNYVndScWtxY21naHBKa2d4UVJob3BveWhPcmxTQ3BoVWMzM3dyaUxLb05YQnpkMGRrWkNUOC9Qd1FGRlFMWVhYcW9HNTRPSlJLSlo1N3JqRitXTFMwUnRmdGpwb0g5Mk1aR1JrNGQrNGNybHk1Z3RUVVZPajFlbVJuWjVmVFN4QkNWMElBUUVKZzRTVTRqaU50TkJQa0hNY3BBQ2duVEpqZ0hoOGZINnRTcVlhNFRuMCtVWHpqNW4vSXlja0J3ekFvTFhrNlI3U1VLaFVvaW9LWHB6ZkN3bXBYR3E1eEhDZXNXVGFzMXBwYk02VktCWmxNQm04dmI0U0ZWVXdSdG4vL2ZvUkhObmdnNjFSWVdMaHNRdnk0dlRiaHB6TlFzMlhzc0lpTUhXSnpQVVhKT0lIZW13YzFwYjI0c2Fkbm1jcFVhRmdZNnRkdkFGOWYzd2QyTHRRb0I1cS92Mys1NFhnbkZWTFk1Tm1rU3Fsd3dkcjJ1SW1GQlV5Wk1nVW5UNTc4WWNPR0RXYTFXbjNQclNBZE9uVEFuMy8rK2NoY21IcTlIdjcrZHpmNmJES1pjZWJNR1ZBeUdYUnU3aTc1dlNJamN2TnlrWFV5RTAyYk5JVllvWE1FdFJNblRvS2tLR2gxTmI5bVJVVkdaT2ZrSURNckU5RkNzM1pGZHJ1Ryt4a0xDZ3ArR0RwazhQNUxseTZhS3dNMWxGVkFKVDFRZ1RoV1VKb2lJSXhPU2F3ZEpDVlFmMU1VNURJWnhQbFF0VklGczhsVTQ3L3RnUUVid0l2QmlPQldXWFZVckpBS3ZXeWMxV29Wd1kyeERVdEZjTnUrZlRzMEdzM1N3c0xDVXExV094S0E4bTczYmRldVhZLzloWnl1VHdjbGs4RS9JQWd1QXpRYUxUUWFMVEwwYVVoTFQwT1lFeUxWNnpkdWdxU29CN1ptdHZ0MDgrWi9DSzFFaHErV1RadFJOVnRwZG5iMjRsWXRteDlHZWZiYmlqdzFLd2lDSVFDR0VEdzFHVVZ4TXBuZ3FZbEQ3V28xdEJvTmRIYWtrWUdvWFRzVWtaR1JDQTBMZStEbndRTmhyUTBQRDY5SVlGa0NPSnU3cVpScnMxcXQ0bXRPd1EwQWREcmRxdHpjM0dJUEQ0L2hBSHlmdGdzNU95c2JXamQzRjZJNW1GYm5ocXlzYktmQWxwT1RBOTFEV0RPdHpnMVoyVm1WQWxzTldaWmVuNzQ4K3Ztb1U3Q2YvWFQwMHV4QkRRS29FU1JIRWlSSGtRSmJCMjFER0NuTWYyb0Z2UUkrQlBWRHJWcDhYdTFoZ05vREF6WSthZG5BS2JBNWVtMmk1eWFDRzhBUENGY0NicHlucCtmR2pJeU1JbDlmMzQ4SWdvaDRXaTVlanJ2MzRlbW53WFBMejh0eCt0ckRXak9OUm92ODNKeDcraXlSbkFsaWZqSnc1ZTY2OURsd1YyK2FzbGEzL20veStUdDRhcVp5b0VZSW9FWVNBZ3V1REhJNXpTbG9rYWxEQURXSkJkY0xiam9kTE9aUzVPVm1Jek5EZzh5TU5LZnJFRlluSEc3dTdvOC9zQUZBbzBhTnlvRmJCY0FtZ1p1WWNLc0kzTVMvL2YzOS83aCsvWHBCN2RxMTQwaVNqSzUrRU9IWlRRMEdBNndNQTJOaDliQ2JhclU2eU9ReStBbTB5SGQxc2hOQVNZbUx5NjBpSzZtQTUrNWhGbGZ1K1hnbEpnTlg3dzdVV0hBbno1WGNXdDg1ZGZaMWxKLzl0Ry9wc011cGxRYzFtUUJxdElMMzFCeUxCYUxJc2RWaWdvZUhSNlhLN1VWRlJ0eTRmaFdObXpaN01vQ05JQWcwYXRTb1FxL05HWmpZZUhCT3dVMzRYbzdqT0s1T25UcUhrNU9UODU1Nzdya0JGRVYxcms1UVMwNU9CZ2dTR3EyT1p6ZXRSbTNqb2lJajB2VVpTRTlQcjNZbCtGMDdkMkQ1c3FVd0dESVFGQlNFbGF2VzR2TGxTNGp0WDhiQ1BqWitBcnAyN2VaQ3drZllpTHNFTlF2SC9IbXc4R0pTbjR5RkdUYmhwK1BzWjRrQWF1WnlPVFU3VUpPREZnU09sUXBCTGsvaldBSDFRMkJRRUl3RmVaV0NtdTA1LzBTRW9xTEo1WElKM083Z3Nkbm0yeW9DTjNId2xoTkQwNmlvcUhNYk4yNmMxYTFidDB5YXB2dFd4ejdyOVhxQUlPSG5Yek5peVdKeTJhQlBRM3A2ZXJWeFU2V2xwV0hHOUtuNGN2TFhpSTV1Z1lJQ25ob25JaUlTdTNidkF3QU1qSDIveG83MXNxVkw4SHIzSG5ac0p1Sit6WjN6RFZKUy9nRk4wMmpmb1JNR2Z6UUVGRVVCQUZKVFU1RXdkdzVTenFaQW9WQ2dZOGRPK0RCdXNQUjZUZGlkdHZsaXpBdVF5K1VnQ0JKaFlXSG9IenNBclZ2SFBKcWVLbXYrZVUzMm9WMWY1UDFXVUFtb2xmUFVCQUxZQ2tDTjcxVlRxa1FSRmwwWnFQbnhiUjFob1dISXo4dXUwZU5VVlNNZnhrYVZTaVVhTldxRThQQndCQWNIUzBMTXRseHVZck9mUXFHUXhGVmxNaGxuSThUTTJISzVDVG1DVWdBbGI3enh4dTBtVFpwOGF6UWF2eEZldnk4ekdES2gwZXBxZkYwME9qY1lESVpxKzc2TC8xNkFqNDhQV3JlT0FVM1Q4UEh4a1R4blFRcXR3cG5ZNnJBZmx5OUZUazUydWVjblRaeUFXc0hCK08zM0xWaTBlQm1PSGptTXBLUk5mUGpFc2hnN1pqVHExVytBVGI5dlFVTENBdXpmdHhlL2JmeTF4dmF6cXR0TVhMQVFtN2R1Ui8vWUFaZzljem8yL3JyaG9WeTAzajkyaDl2by8wbC9leVYwaGJKVEJBQlljNjFGMzdlK052SDNML0oreTNmSXBSVUxqN0xxcHkyb2dXQmdVLzJrS0ZrNVVBTUhaR1ptb3JpNFdNcXArZnI2SWlnd0NLR2hZYWhYdno1b1lWUktQTSthTld1R2poMDdvbjM3OWdnS3Vyc3E5SW9mbDZQM083M3dkcStlMkxwbGM1azNhckZnOXF3WjZOZjNYZlR2MXhjSER4NTQrQjVibVplaVFhTkdqWndOeFpjTFMwV3hWZGhVUzRVVDBuRkNnUlBEMG4vLy9aZlY2WFFyTXpJeTlMNit2b01JZ3JoblVXWXJZMzBneVdhTlJndGp3ZjFUdUp3K25ZeEpYMHlBMld4R2NYRXh1ci9HaDVrOTN1aUpmdS8zcjlKM0hEMXlHSWtKODZEWHB5TTBOQXlqUHZrVWpaNTlWbnA5Lzc2OVdMWnNDVElOQnZnSEJDQXViakJhdmNCZmJNT0dmb1JiLy9GQ3R5TS9IZzZaakVKd2NBZ1NGeXdFeTdKbzI3WWR1cjN5Q2hRS0JmejgvZEU4T2hxWExsNEV3RmNzUGIyODBMdFBIOUEwamVDUUVMU09hWU4vLzcxUVkrdCtOOXRVcVZSbzNUb0c4dmdKbVBqRkJIVHEzT1doTUxObytqU0djVmt5Mkp3U0laemhydjFuemxyendzMnZ6c0plVGNvWm41b1FmaEpXZ0JOQmplVWRCdEttVUNEbmFLRlFrSitmRDBaUW1xSnBHbDVlWlo1YWFCZ1BhbzZTZVhYcTFBRkZVZGk1Y3ljVUNnVmVmdmxsWkdabTJwRkdPTTY5aW4rbnBQekRuMlBMVjhCa01pRXViZ0NpbWoyUG9LQWdiTisyRmFXbHBWangweHJrNU9SZzBJZXhhTnk0aVVRdG5wNmUvbkE4TnRGME9wMVR6ODNUMHhNNm5jNFp4YmlkTUl5b24rRGd1WmtGejYwVVFMRy92LzhmLy83Nzd5U0dZZmJlNjM1V1Y2R2dTdHN5M24vdW9XblRLR3hLMm9xUFI0eENyVnJCMkpTMEZadVN0bFlaMUs1ZXVZTFBKOFJqOEpDaDJMcDlKOTU4cXhkR2pSd09RMFlHQU9EbXpSdVlNdmxMZlBaWlBMWnMyNEZYWDMwZDQ4ZVBrMFJwRWhJWFlGUFNWZ0RBbkxuenNDbHBLeElYTE9SREJKSkU3ejU5NGVIaENZQ24wamw4NkJCYXR1UkpBSHg4ZkpDUXVBQktwVW82MFU4bko2Tng0eVkxdHViM3NzM29GaTFodGxna1FIN1FaamxyZ1BiRDUva2JMMnZkLy9mdGMvTmZ1UGxWQ3V3WmI0c2RIcVVFL3pBRGhBVUV5a0NOeit4d1ZxdUZrOGw1Q3YrOHZIekk1REtvVkNyVUNhdURxR2JQdzh2YkcxcXRGcjYrZnJ5bkZoYUcrdlhxUTZ2Vk9sM1h0TFEweVZsaFdSYWVucDUyNzFtNlpCSFdyRjRGQUVoSitRY2ZEeDhLQUxoeStSS2FSa1ZCb1ZUQ3pkMGRMN3p3UDV3NHp1czhuVGx6R20zYXZDaWNUd1RrY2hxWExwVWRoMWt6cHo5Y1lBTUFkM2QzQ2R4Q1FrTHN3TzBPRk9PMllTa3JoS2JpblVvRXR4SUF4Yzg4ODh5cG4zLytlVXBwYWVseVZ4cjZ6clpsU3hMYXZ0UU9yVnZIUUtGUW9IT1hybWpRc0NGMjd0ekJoMExlUGxpMmZLVWtsZmJxYTYvRFlqYmoxcTMvcXJ5TmMyZlBvbVA3ZHVqWHR6Y2FOR3lJRjl1KzVQUjlDNytmRDVWYWphN2RYbmxndjc4cTJ5UUlBbDZlWGpEV2NCSzh3aHZneWpOUWRZNUFpU2UxT3VIWDVTdTcvVGJtbGdPb09RSmJDUUdVQW9TWmY4QktDS3BTSk1DUklEaWFwam1TSkZGU1hNd1ZGQlRBM2NNZE9xMk9uLzEwYzRPN3V6dFVLaFhjM056NG5Kb0Fhcm9LUkZob21nYkRNUEQyOWtaTVRBeFlscFg0RGtWNzU5MCsyTHQzRHhMbWZZZkpYMDdDMEdHOGZrUGQ4QWljUEhFY1JxTVJCUVVGT0hmdXJIVFR6OC9QaDFLcHhObXpLZmhzekdqUUNocjUrZmtBZ0tUZk55RThQT0xoaGFLMjV1SGhnVWFOR2xWNkVvbi9GeDRjUVJDRXhXTGhiT3NNTE10eXR2MXRZbGdLZ092ZHUzY2FnSVRzN093YlhsNWVnd0RjYzRiK3dvWHppQnNZaTJYTFZ5SWlNaEpMbHl6RzVxUk5rcGRTa1gwMzV4c2NQblFJT1RrNW1EanBTN1I1c2UwakNXeDZ2UjRSRVpGMno5V3VIUWE5bm1jeDBXcTErSFBYVGt5WjhpV01oVWE3TUtLcTF1alpaN0h6ejcxSVQwL0hGNStQeDdLbFN6Qmc0SWQyNzFtNTRrZjgvZmRSSkNRc2NNcVpWeE5XMVcxeUhJZWMzQnhvSDFJUElWZGtTYjg4Zi9lcWhzZUduTUl4aWZ4UkJEWlRCYUduQmVCRXBYYUdBTUVKd0FZS0JDZVh5NkZVcXJpOHZGeFFsQXdCL2dGQzlWTUhOemMzZUhsNVFhL1h3TlBMU3dnL0c5eXhGMDBNUnc4ZE9vU21UdWlKdEZvdEJnMzZDQ05IRE1NNzcvWkcvZnI4dkd5VEprM1JzVk1YREJzNkdPNXU3bENyMUZDcFZkTG5ObTlPUWtsSkNhWk5uNFY1MzMwTEFNakkwR056MHU5SW5QLzlvd0ZzQU9EcDZXa0hiallnVmc3WXhHT0xzaVpld21hdVZBUTZhYTROQUN1UzRubDdlMjg2Zi83OGpYcjE2dldqS09ybGU5MWZ1VnlPdi83YWo0aklTQncrVkRYTzloRWpQOEdJa1o5Z25NQmcrcWlhdjc4LzlBNVVUTGR2cHlJcWltOUZPZkRYZnF4ZTlSUG1mRGNQd1FJUDNZc3hMemk5SVRtQ25hbTBGTnUzYjBPWExsMmhVQ29SR0JpSTl1MDdsRXNBYjFqL0MzYnQzSUc1Q2ZOcnRKSHpYcmQ1L1BneDBISTU2dFd2LzhDUGo1V3g3dnRiZjM1enR4L2pVMUdKT3J0OWdZQ1FldFFBZ2lVSmdpVkFjQ1RIZ2dMSnlVQkNKcE56K2ZsNWNITjNCMk8xd21ESXdMUFBOUzZiS1BEemhWdnFMZmo2K3FGKy9mL2YzcG5IUjFYZSsvL3puR1gyeWI0TXlZU0VrSVJjdHVDbHdyVmlYUzR1VkZzcHVLK1hxcTAvL2ZXNklsYTlyYlYxQlpjcXlxMTZSYXUxZXVVVmJkVWY5ZDY2d3IwZ29sR0pDWVFrSkNRa0lTR1FaU2FabWJNOHZ6L09lVTZlT1psSlFBRkp6UE42SGVaa01wTVp6cHg1bjg5M0wwZnFLTWVJTlp2OTdMUFBBQmp6aU8yZHFCc2FHdkRBL2ZmaW50L2VpN1hQUFl2SmhVVTQyMVRLbDE1Mk9TNjl6RWhzdU9icW4yTHExQkxMeW5PNzNiam50L2RDRUFSRW8xR2twcWJpclRmZlJIK29IOWYrL0pwdjN4UzF3MjNtekprb0tTbEJRVUZCM0ZpLzFOUlV5K2ZtZHJ1WmFVclozRktiV2NyOGJvck5OQjFncHVtcVZhdnVIaGdZZVBMcnZ0ZC9tRDRESDMrOENYVjFPeERnMGpNKzNyd0pLNWJmWXYzODZDT3J2clhvMlloZkRyTzdNUUJRWGJmYVNnSEEyZWY4Q0I5KytENjJiUGtZcXFyaXZmZmV4VmZWMjNER21XY0NNQWFNRUFJSW9vamUzaDdMUjBMMStLRFBwTHc4Yk42MENZcWlvTXVNOWpxY1RyejR4eGZ3eWlzdlExRVU5UFFjd0lZTkgySDI3TmxEcHZDYmY4VWJyMWZpc2NkWEg3VStkUWY3bXRGb0ZCOXYzb1FIN3I4WFA3LzJ1cU1lT09qVEJwKzkvZkhmclQzN2IzZU1abm9PQUlpWTA2UmlBQlJDeklIR0ZMb2dpVlFrQXBVZ1VCa0NIRVNraEFCK2Z3cnk4NE9ZVnY0UGNMbmNjTHZjeU1qSVJFNU9Edkx6OHBHZWxvNjh2THhSb1FZWUVWUW1SQndPQjlMUzBvWTFhZjEwNnllNC9aZDM0cFJUVDhNamp6MkJtcStxNDRLSGlxTGdwUmYvQ0VLQVdiTm1XejVrMVF4azlQUWNRRU5EQThwS3kzRFYxZGZnbFZmWFllMExMeDQ3aW8wM1MyZk9uRGxNc1kyd1VXSXNFRUtzTnVPbWtxTmNncS9PZXJRRDBHKy8vWGI5OXR0di80K1dscGE2L1B6OGZ5R0VISGNvNzlNaHkvQjZQSGp4ank5Z3dVa240YXZxYldQR2gyWlAwSDN3Z2Z2dzRBUDM0ZlF6enNTLy9lcHVsSmFXNGRlLytTM1dQTFVhSGUzdG1GeFlpSWRXUFdKTk0xcjB3N05SWGIwTlZ5MjdBcUlvNGR6RlAwRnBhUm4yMjhxRmJyNzVWcXhhK1pCeEpaNDhHYzgrOXdJY0RnY2VmR2dWVmoveGU3ejZ5cDhoeXpKT1B1VlVYUGt2UHdWZzVDbXVmT2dCU0pLRWl5ODhMOTVNZk9sbEJBS0hQNWZ3WUYvekY5ZGZCMEtBd3NJaTNITHJiVWMxajAwSC9id2hzcmZ5bEpiNzZ0QTRsT0prVTJyV0xjRlFIelVBUmlVQmlBNVFLZ0JVcElSS2dnQlJBMlFpVWlja09OUFNoMm8vZlQ0VUZCUU01YW1aZ1lJZE83WVBpMzRtVzAxTlRVaExTOFBDaFFzQkFKOS8vdm13bVI4WFhEZzA3Q2d6TXhQTGJ4dWFmN0J4NHdZOC90Z2pxS2c0RGc4OHVNcUM1S0lmbm8yNnVqb3N1OUpRYzcrNDRjWmhDbHM2RnI5NHFhbXBtRFZybHRVT2hSQmkzZkw3M0gwVzNBQlFycXBCNTN4d2lVeFRyYUNnNE1QWFhudXQ3cHh6enJuQTVYSXRPOWozcUtncVR2dm5oZmo5WTQvZ2hodHZ4aC9XUEhYTUhjY3p6MXFFTTg5YU5PeiswdEl5ZkxSeDVEbW1KNTY0SU9rWDErbDA0cTUvKzNYY2ZkZjhiSGpmejNuei95bGhNOFNTMGxJODl2anFoSDliRkVWOHVPRi9qK3B4T3BqWEhPMTRmZFBsOXlmUGt4d0loLy8wMnI0UDM3L3JRR1VmWjNyR0VnSE45S2NwQURXZ1JnMmdFUXFkZ0ZJQ1FrVVFLaW9hSkFBeWtReW9RWWJiNHpHU2IvMURQclhzN0J3anBjUE1VL3ZlOXc2K1d0R3EyUG1hYThHQ2s3Qmd3VW5EN3Bja0NiZmN1bnpFNXg2VFlHTWZOQTgzKzVZQWNCYmNGRVdoWm9VQ0gxU2dYS1VDVTI4YUFPMzg4ODl2QmZCa2EydnJsM2w1ZVZjU1FrWnR3cTVyR3I1LzRnSTBOVFhGUlhvRVVZUitCSnQzVHF6eHVVUlJSRGdjaXN1WDFIWDlpMTI3ZGxXZThvTVRkNEJMWnhvQmFqRXlwTkpZZHc2ZEFHYVFnRUFFb1JJRXlCQXNxTGtndytYMHdPUHp3ZWZ6V1Q2MW5CeWpUS3FvTUhHZVdxTGw4WGd4TUJBK3FNY2R5U1VkeXgrMjErdkY3Tm16SVlxaXRZMENPbW9xT0JZeHRRY1ZtRzJxMjAxVEFGb3dHUHhnN2RxMVgxMXd3UVhuZVR5ZW40MzIvakl5TXZCL2YvR3Y2T2Z5M1BMemc5amQzSVJZTEFhcTY2aXRyVUZoWWRFUk8wWnV0MmVDQ29kNGJMN05ZNWJzdFhOeWN0RFJzZGNDV3lqVS8vd2ZYM2orby92dnV6ZGtVMmw4NUpQZmVLaVpaaWQwRTJqVWlId0tWQUtCVEVUcWdBZ0haTGlJRExmREEwOUpEbnhtU2dlREd0LzkxcDZta1d4TktTN0Jyc2I2RWVIbThYZ3hwYmprdXdzMndDaS9zc1BORHJrRUppcFRiL1lxQmNyNTNwaHBxcHVtcVFaQVhiWnNtYlpzMmJKbjZ1cnFQaTB1THI1RUZNVkR5c25JeTh2RHFhZjlNeTYvOUNLa3BLUmFaVXhBZkxySFY5WGI4TVRqdjhmOUR6eUVxU1ZmLzBOT2RLV2ZXRURZSE5LYmFBbmYwakVMaC9vaEpra2htVFJwRXRyYjI5SFIxcnBoZDB2cjIwdVhMRzVLb3RKNG54b0xqTVdHVkpveFJjcTRjQnMxbjRJZ1Vra1NJVWxtaHc2SERBZHJFbW5PS0dEOTFDenpNei9meUZPYlZuNUlxVFlwcWFtb09HN3V0Lzc1SDlHWkI0ZHpVVXF0K1FrdExTM282T2hBVjFjWGVucDYwTnZiaTNBNGpIQTRqRWdrd28vL0k5emdacUxyT3B1bFFBQ3dlUXFpQ1hpWlV1b0E0QURnQk9Bc0tTbHhiZG15NVVlTnUzWmRtUnM0T29NLzkzYnN3ZHhENlBEUjFOU003djM3Snpyb0RqdU9iY2pLeWtSaGdrNFRUYzNONk80KytzZHNiMGNiTWpNelVaU2cwU1NsZEU5blorZC96cGt6NTVPT2pnN0ZCclZvSW9VR0s5cEpWQmlOSVRUVEVxRnNNeXQwSUVrU0pNbWFVd0FuQnphUHh3Ty8zNCswdERSa1pHUWdOemNYK2ZuNW1ESmx5aEd0SmY1T0t6YUx3SVJnNXN5WjdBTWFwdHpzdCtZMkxHSktDS0VtM01Bck4yYWF3cGhHcndGUTYrdnIxWXlNak1vbm4zenlrd1UvT0dWeFJrYm1sVWY2aWk3TDhpRTlwN0J3TXJxNk9yRzNvdzArZjhyRXpJTlFQMEtoZm1pcW1oQnFBRkJVV0lqT3pxTjN6Tmg3MGpVdElkVEM0ZkRMYjd6eHhrZVhYWGJaZ1ZGVVdwUlRhTlpFZGxPbGFTYk1kQTVtUnNkYjJkYksyODMxVWpQYmVXZG5aeU1RQ0dEeTVNa29LU2xCZVhuNW1ENFB4b3hpNDFkRFF3UHE2K3ZSM055TTl2WjI3TnUzRC92MzcwZGZYeDlDb1JEQzRUQUdCd2N0NVdiT1hDRGNHRUJldlFtbWVoTk0wRXNBSkU2OVdRcnUvUTgyVkV3cExsNHFpdUtaUitMLzFibTNIWk1DdVlmY3RvaFNpbDFOemRpL3Z4dWFxaU1TK1c0Mm4zUzdQUkJFRVZtWldTZ3NMQmhWYlRRMzcwYlh2bjNRVk8ySUhUTzMyd05Sa2hJcU5VVlIvcnVxcXVxLzVzK2YzOElCTFJuVUVwbWQ2cERaYVFITm1FMWdBczBvWkk5WGFGNnYxNEphUmtZR3NyS3lNR25TSkJRV0ZxS2twQVJUcDA0ZDgrZkNtQVFiQUxTMHRHRG56cDBXM0RvN08zSGd3QUgwOXZhaXY3OGZBd01EL0dpL1lYRFROSTJZdzV2Wm1EOEdOMmFlc3BGL01nODNBTTVQUHExYWtKT1RlLzdoNnRRN0VBNGgxTjhIZ0I3MlJwTVQ2OWhidXE1dmJXeHNmTHUwdExUV1ZGeDJsUlpMb05LVUJDcE41elpxV2pCSm9lWXgwem44MW55Q2RDUHlhVUt0dExRVUJXWWx5VmhmMGxoOTR3VUZCVENyRG1BV3hWdTNpY3hWMDBTbGdpQVFRUkNnS0FvbGhMQ0dsL2JBZ2hVcEpZUXcwOVE2QVkrZmU5ejdKU1VsbXg1KytPRXpVbEpTemllRWZHM2Q3dmY3SVVrUzh2SW1JUkFJVEh6cngvR2lsTzVvYjIvLzY4S0ZDNnRxYTJzWnpPeSt0SmpOaDhaRHpSWWNzSVlYVTFFVXFTaUsxdmRCbG1YS2V1NHhxSG05WGd0cVJwREFiRHRVV0lpeXNySkRIdjA0QWJZanRISnpjOEdhVVBLQVN3UTF6dmZHWmlFU1JWRkFDR0VKdlpRT0RUWFZiV2toR2dEVm5HK3FtUDQzNWR4enozM3JqanZ1K1BEV1cyODlQUzB0N1h4Q1NQSEUxM2RpSlFEYXJxNnVyci9lZmZmZFc5ZXNXUlBsVE1sWUF0T1QzU3AyczVPZGk4eVh4aWF5MjFXYUxNc1cwT3hRWXdFQ2xzNVJWRlNFc3JLeVllMkV4cndwMnRUVU5PYi9FNUZJQkkyTmpWYTBkTisrZlZhME5CUUtZV0JnQUlPRGc0aEdvNVpaYWhib0VsWXp5Y3hTTG1wS2JLYXBTQ21WbUluSytkOGNBSnkzM0hKTHloVlhYTEV3SlNWbDZUZHBham14eGhYUUd2ZnYzLy9tbWpWclBuMzIyV2NqSEtDVUpFQ0xjYkN6Unp1WlVyT2luY3o4NUt3VXE5czBVMnQ4b0NBMU5SVnBhV25tM004QUNnb0tVRnhjREpmTE5lNk8vWmoxc1NVNGliQmp4dzQwTmpaaXo1NDkyTHQzcndVNEZsUmdnT1A5YnN6M3hnR09tRjE5Q2ZPL0lUNDFSSVFSWEVnRU9NZnk1Y3Y5SzFhc09EVWpJK05jUXNpTWlhLzNkOUtIVnRQWjJmbTNYLzNxVjFYUFBQTk1kQVNnMlRmRk5EdFZEbVlhYjNiYVZacXAxT0tBbGlqeXlZREdVam1LaTRzeGJkcTBNWnZPOFowQkcxdE5UVTFvYkd4RWEydXJwZDRPSERpQXZyNitwRUdGQklHRnVNZ3BVMjhNY2hqS2ZVc0t1T0xpWXNmR2pSdFB5czNOUFZzUWhCTW12dTdqZjJtYXRybWxwZVhkazA0NnFicTF0WlhCaVFlYWNoQkFZOCt6QWdNQUtCL3haQ3FORHhBa0N4S2t4RTFuRHlBWURLSzR1QmhGMzlJZzR3a2YyOWRjUlVWRmZGdWpPQi9jS0FFR2RpVms2bzFxbW1ibHZjSE1kVFBWVzF4d3dlWi9pd0Z3TkRZMk92THk4dDRGOEZGZFhkMmNvcUtpaGJJcy8zamk2ei8rVmpRYWZXdjc5dTMvTTJmT25GMGN6SGlWRmtzQU5TVUowUGpnUUZ5U0xhL1NlTFBUNFhBTTg2Y3gwNU5QNXlnb0tNRFVxVlBIVlpEZ093TTJ3QWdxOEgzYlhDNFgrSlBBRHJkSUpHSUJMaGFMV1pGVEJqY3V1RUQ0a1grc1F3aU1mQ0lWZ0dJcU9BdHdBQnhsWldWYkFIeis3cnZ2dmpwdjNyd2YrSHkrc3dFRUo1QXdwbDBmcmYzOS9lKzgvLzc3bnkxZXZIaGZFcUFsZ3BveWtrSXpMNWg4bEI0c3BzV3RrSlR5QUFBVFRrbEVRVlRtQnVpNlRuVmRoNlpwVmw4eVJWR3NCSFdtNkJ3T0I4TGhNTnh1Ti9yNys5SGIyNHZ0MjdkaisvYnRoK1VZK1AwcEVFWEJTaG1aTUVXUG90K3RycTRPemMzTmFHdHJ3OTY5ZTdGLy8vNFIvVzVtS1ZiQzRBS1gxQXZUTkdXbFdYRkJCcHVKeXB1cU1nREhKWmRjNGxxNWN1WDhuSnljMHlSSk9tMENFMk5ucWFyNmZrdEx5Ly9jZE5OTnRYLzV5MStVZ3dTYWtnQm85cUFBZzVsT2lBQ2p4bE9nZ2loQ0VrV0lyQ1JLa2lFN1pEaGtCNHlwN0taU2M3dmg4WHJoOS9tUmttcU14c3ZLeWtKdUlJQmcwQWdTSEFsL1dwakx3Wng3RE9WZ2ppdXdYWFRSUlhqMTFWZHgvZlhYWS9YcW9YNWZyYTJ0YUdwcXdnMDMzSURQUHZzTTU1NTdMZ29LQ3BMNjNiaUVYcGgrdDVHQ0MyUVV3RWxKQUNjRGtCY3RXbFN3ZHUzYStUazVPUXUvU1Q3Y3hEcWlGOGdkUFQwOUgzejAwVWRmTEY2OHVKdURVaUtnS1VtQXBpWURtdGtqa0RKZkdoRUVpS1l2VFJRTm9FbXlXUm9sT3lBN0hIQ2FVSE83WEhESDVhZ1o2UnhaMmRtbStUbjVxS2lwenIzdHlKc1VPR1p5TWNlZEtTckxNdDU0NHcwODhjUVQxaFVxR0F4Q0VBUlVWMWNETURwMUJnS0JZVDQ0ZXk1Y0xCYURLSXBRRklWbGRaTkU1cW5OQjhjNmhRaW1pU3B4SnFwa252QVcyTmF2WDE4ZkNBU2FBYnkrYmR1MjhxbFRwNTdnZHJ0UEF6QlIxZjd0d3F4dFlHRGdnNXFhbXFwNTgrYnRaajdWZ3dBYXY2bW1RdE1TbVp3TWFJSWdVRXFwbVY5cEpOcUtrZ2hKWkxXZUVtVFpZU2cxRmlSd0dwRlB0eG41OVB1TnlHZEdaZ1p5c25PUmw1ZUh5WVdGMXF6Tkk3MjhQai8yN3QwN0FiWWp0UllzV0lBTkd6Wmd5NVl0bUQ5L3ZuWC94bzBiTVdmT0hHemR1dFVxOWpVbnpjY0JMaHdPVzBHR1NDUmlBYzVVYjlRZVhOQjFuUTh3SkFveWFBQkU4NG90VVVvWjJPeEtUcDQxYTlibkFMNEM4UHoyN2R0bkZSWVdIdTl5dVU2WmdOelJnOW5nNE9CSDlmWDFYMVJVVk96aTFWVVNvS2tIQ2JPRVFPTURBN3F1VTFtV01VeWx4Wm1lVHJqNGRBNnZGN0ZvRkZzLytRUVhYM0lKTWpPemtHT21jeFFWVFlrYlJQeE5WMjF0RGQ1KzYwMVVWTXpCNldjTUw1WDJlbjBJOWZjZU01L2x1QU5iUmtZR1RqMzFWRlJXVnNhQmJkMjZkYmpnZ2d2dzZhZWZJaGdNb3JTMEZCNlBCelUxTmFpc3JFUlBUdy9jYmpmS3k4dVJuNStQd2NGQlNKS0VuVHQzWXQrK2ZkYWdFMG1TYUdabUprUlJKS0ZRQ0pGSWhJcWlDTmF4RndBUlJkRUNuSzdyZ21sMmlHYmtWRFJQZkdhbVNnbEFKNVdYbDI4RjhEbUF0VjkrK2VXMDR1TGlPUjZQNTRTSjNMakR1M1JkcndtSHd4L3YyTEdqNXZqamorZVZtYzZCYVNTZ3FSelE3T1ltaTV6VFpFQmo2UnVxcXNMaGNFQmtIVGtrMDRKZ0tzM2hoTk0xM1BUMHA2Umd6bkhISVJpY2JLUnpGQVNSazNONG81NVBQYmthalkwTkdBaUhoNDFsNU5mUkhDeituUU1iQUN4ZHVoUVBQL3d3SG56d1FRREE0T0FnMXE5Zmo1VXJWMkxGaWhWSVQwL0g3Tm16VVZkWGgrZWZmeDZYWEhJSkNnb0tVRnRiaXpmZmZCT3lMQ01ZREdMMzd0M282dXBDYVdrcFpGbEdUMDhQOXV6Wmc0R0JBYVNtcHRKWUxJWklKRUowWFlmWDY2V2FwaUVTaVVEWGRTcEpFdUdpcU1TOFdnczJNNVd2YU9BM0huVFM3Tm16dnpDVjNLdnIxNitmTkhmdTNPbHBhV2x6WkZrK0FVRHFCSjRPYWZVcWl2SnhkM2YzbDVzMmJXcFlzbVJKTjRZaWtjblVXU0tvOFIwMlZOdHpkVTZoVWI0L0drdXdGU3dmbWhIQkZBU0JPcDB1UGo4TnNzTUJnUkRzM3IwYm1xcENsQ1RNbmpVYitjRWdLQVgrMzl0dlFSQUVwS2RuNEpISEhyZXNrRit1V0k2MnRqMEFnSjZlSG5pOFh2ejVsZGNBR0oxeG52ajlvK2p0NjBWR2VnWnV1LzJYMXBBZUFIanRQMTlGWmVVNjYvRUFjUFUxUDRQRDRjQ3FsUStPbVE5NVhJSnQ4ZUxGdU82NjYxQmRYWTJaTTJkaS9mcjFtRDU5T2dvTEM2M0hlRHdldlB6eXk3ajQ0b3R4N2JYWG9xMnREY0ZnRUtGUUNKczJiVUpGUlFWeWMzUGg5L3VSbFpXRlNDUUNuOCtIZmZ2MlFkTTB1TjF1UkNJUkFLRHA2ZWtRQk1FeVVWVlZoU2lLYk5ZQ2k2SVMwelFWelBzWTRFVHppeUtacWs2MFFZNEhuYlJvMGFKZEFGb0EvTDJpb2tKKzdybm5pb3VMaTZmNWZMN1praVI5RDhCRUsxMmJrRkJWOWRPK3ZyN3F1cnE2eHF1dXVxcTFwcVpHdHlrenpXWTZKZ01hRHpQK09ick4zTFFVbXJraEdkQll6elJDQ0Z3dTF6Q1Z0cWR0RDNLeWN6Qjl4Z3lvcW9ydHRiV1kvMDhuSUQwOUhkLy8vb21JeGFKNDlaVS9ZeG8zMy9UK0IxY2FCTy90d2MrdnVRbzMzWHdyQUdQTzUzMi91d2UvdSs4QlRKbzBDZS84YlQzV1BQVWs3djdOYjYzblZzeVpNNnp6c01QaEdITWYrcmpOWTF1d1lBRmVmLzExekp3NUUrdldyY041NTUwMzdISFYxZFhvNnVwQ1pXVWx1TWxXMEhVZDJkblpjTGxjYUd4c3hNNmRPNjAwRVVWUmtKS1NBcS9YaTRFQm80ZVgzKytIcG1sVVZWVU1EZzRTVlZVaHk3S1ZhMlJHVVZrK0VqWEhhUTFUY0thWmFsVTJjSkJMQkR2cGl5KytrT2JPblZzTllEdUF0d29MQzhXWFgzNTVjbWxwYVhGcWF1bzBXWlpuRWtKS3Zrc1VvNVRXeDJLeHJ3NGNPRkMvZmZ2MjVzc3Z2M3h2YTJ1cmJsTmxpZFJaTXBWbS9ZNGxZOXYrQnU4M2l6TTNlYUJ4Q2VCeFFHTUtqUkFDdDhjOWxNWmhtcDdCWUFGMjF1MUFXMXNiU2twS2NNbGxseUVqM1loNkJnSUJSS05SdU4zdVJDWTJmblAzcjNIMk9UL0d2SG1HUzJiWHJrYTB0cmJnRG5OZ3QwNTFlRzFEVmNyS3BxR3NiTnFZUHcrazhYcUNMMTI2Rkd2WHJzVnR0OTJHdDk5K0cvZmVlKyt3eDZpcWlsdHV1UVUvL2FreDA3Szl2ZDFxT1M2S0l0NTQ0dzI4ODg0N0tDNHV4dVRKa3pGanhneFVWVlZCa2lUNGZENXJpSXZYNjdWU1EyUlpwdEZvRkU2bms1alJVMnFMb0RLd1dWUHNLYVc2ZVIrRG5BQWpSWUF2d0JkdGdCdTIzOXpjTEo1NDRvazdBTlFEZUJlQXVHclZLdC9wcDUrZWw1K2ZQOW5uODAyUlpibEVFSVJwTUhyTGplVVYxWFY5Unl3V2EranY3Mi9ldlh2M25uZmVlV2Z2blhmZU9RZ3VKMndFbUNXRFd0dytwOHppekV5Yk9xTTJvRkcra3d6ZlljWU9OTFlCZ05mampROFFlRHpJeTh2SGpPblRjYUNuQnp2cmRxQzlyUTAzM25RTEp1WGxJUzh2RHp0MzFpVThPUC94N05Od3VWeTQ3UElyclBzVVJVRWdFTURhRjE0Yzl4ZTRjUXUySlV1VzRNWWJiOFRUVHorTnNySXlUSmt5WmRoanBrK2ZqbTNidHFIRUhLWlNVbEtDWjU1NUJoczNic1JWVjEyRlRaczJZZUhDaFZpd1lJR1Y4N1o1ODJhNDNXNzQvWDVycXJYWDY3VWlwdzZIZzVrVmxHOW9xV2thQkVHZ3FxcUNVZ3BSRkNtbGxKaEJCOEtwT0ZaNFR6aklDU2JraEFTUUczSC8xbHR2SFFUUURhQ0dNMzJGeXNyS3JQTHk4dXlzckt4Y244K1hKOHZ5SkZFVWc0U1FBZ0RIU3J1SENLVzBSZE8wUGJGWXJEMFVDclYzZG5aMjFkVFVkRjk0NFlVSE1KU2RyNDhDczJRS0xlRStCelBkRGpNTURRQ2l5ZFJaSXFEWml0YXRqVVhqQWNEbjk4ZVZSdmw4UG16ZCtnbW1UU3ZIcWFlZUJyZmJqWHQvZHcrbWxaZkQ1MHZ1Y2RpNGNRTSsvT0FEL1B2VHo4WWw1WmFVbEtDdnJ3OGZmZmdCZm5EeUtXaG9hRUROVjlYNDBZL1B0UjZ6YzJjZHFxdTM0U2MvV1RvQnRtTnhCWU5CekpzM0QzZmRkUmZ1dlBQT2hJOVpzV0lGempyckxOeDk5OTI0OU5KTFVWTlRnK1hMbCtQbW0yL0dqQmt6a0pXVmhZNk9Edmo5ZmlpS2d2ZmVldytSU0FTeUxDTTlQUjM3OXh1VHozMCtuMVd4d0U1U3Q5c05WVld4Zi85K3FpZ0tmRDRmSkVraWc0T0QwRFNOTWo4R1N4Y1JCSUVWMjRNQmJnVElXWUN5ZFIwWmFlT1RoNFVsUzVZTUFOakQvVjMyR3VUUlJ4LzF6Wm8xS3lVUUNLU2twcWFtZUR5ZUZJZkRrU0pKVW9vb2lpbUNJUGdJSVQ1Q2lKY1E0alpCeUJvQXNOY0NCd1pyYkJ5bGRKQlNHcWFVaG5SZEQybWExcStxYWw4MEd1MGJHQmpvNytucDZXdHZiKy8vOHNzdlE4dVhMeC9nNEVWdElLTWp3RXkzS1N4dHRJMTEwVWdBc2ppWThTQURTNmcxcDZUeDVpYURtYTJ0VUJ6UVdOODBwOU1KU2lsU1UxTnRyYnRUY2RaWlA4Uzc3LzQzR2h2cTRYUTZjZWRkdjRMUDUwTnJheXR1dnZGZm9TZ3g5UGIyNG9Memx1QWY1ODdGN2IrOEU2c2Zmd3lSU0FUWC81K2hDWktybi9vRC9INC83bjl3SlI1NzVHSDg0ZC9Yd09QeDRHYmI0T0dxeno1RFplVzZNUSsyY1ZkNW9Lb3ExcTFiQndCWXVYSWxicnZ0TmpRME5LQzQyT2dCS1VrU1hucnBKVngwMFVVQWdELzk2VSs0Nzc3N1VGOWZqMEFnZ0t1dnZocDMzWFVYQ0NIWXNtVUxycjc2YXRUVzFzTGo4YUM4M0ppdldGVlZoV1hMbHFHMnRoWi8vL3Zmc1hqeFlxdHFZZGV1WFdodWJrWkZSUVVVUmNIT25UdWhxaXFDd1NDYmxvWHU3bTZtMUNBSUFqdXhDZWVMc3lESDloTkFMZzUybkpvVEVvRXN3VDUvbTJqalgyZWtEUWx1N2Z0eGJyQUUrL3p0U0pzZFpQWXRtVW9idHM4Rzl5U0MyR2d3WS91MnhxVUhCVFJlcGZITklIdDZlakJwVWo2OFBpLzhmbk8rcDFuQW5wc2JRSDUrL2lHTndmczJWc1BPN1RqNTVKTW53RFpXVm05dkwvYnMyV1A1Myt6MXBteDRqTDJaSlZkekNtNE1vRlc4ek14VVBzakF5clc0c2kzK2N5STIwTVZCamxJUWdBNkQzU0grbkFoc1BPQ0VCRkFiQ1hBandjME9OQ1NBMkVnS1RVK2kxdXlPL1ZFaFpuczkzbS9HWUdiZGNxYW5mWEEzdFhkdFpqQnp1ZHhJU2ZFUGF3TEpGRnAzZHpjS0poZFp6U0F6TWpPdDRuSy9QMlZNZkUrT0piQ05HMVAwaEJOT3dPYk5tOGRjRUkrL3lLU21wakx6bEhKZEhBalgzWUVRUXVKVUhJeHhnY1R3MDBFQUNFa0VKVW9oMktCSFJnSGFTSEE3Rk9WMktHQTdGTE16R2VDb0RXZ2pBVXkzQXd3Z2xCQlFnSUFRQzJRR3pBUUJBakVoSmdvUStSSW90aG1sVUVOcVRaWWhDQVFDSVZBMURkbXBxY01hUWZyOWZoQkNFQXdHb1drYWZENC9VbE5TNGZWNDBkZmJoNzdldm1QK1JNNFBIbHZOYXNZTjJEWnQyblRVWG9zZjJOemQzUjNYeURJY0RvL1VxZGRTYm9xaVdNck5WRzk4RFNyaEZCemxsQnk3cFRaVGxjRkU1OVVkcjdJSUFVa0VQUTZTbzRGTUdBVm95YUJHRWtCOE5MVkdreWkzWktCamNOSkhlZzV6OXJPWnNwenpQNUVxczhHTVFCRFk3RnFCQ3NMd21ScVNKQmxnazJUSUp0UWNacUt0MCtHQXJ1dVFKQm1abVpsVzVRQnJCQ21LSW9xTHB5TGJuRVV3c1NiQWR0UlhRVUVCY25OejBkYldablhwVFdTZXNvNGhJd0dPM3hqWVJvTWNCemhvbWtZSmt4aERRSXVEalUzaHhVR1BTejBaQmpEVHRCMEpaRWZTeDJiN21TbXBwTUNqaVo3UGRjN0FzSDJEOWdiUUNBRUJBUkVJRlFoQm5Eb3pGQm9WQlFHQ0tFSzBRMDJTSUVuTXAyWkFUWFk0NEpCbE9FeXowNmdxRUNHS0FnS0JnTld1bXpXQ2xHVVowMmZNT09TQjJSTnJBbXlIZFRrY0RoUVZGVm1BNit6c3ROcVE5L1Qwb0wrL2YwVC9XekxBY2Y0M3E0TUlEemt1aWRpQ25HbWVJbjY0UGEvY0NFeEFZUWgySU93N25neFlOcFUzcWorTnNuMDZpbUlqMXMzQlFHNFU0UEUvRytZai8zZHNUbjhBb0xwT0lRZ0NESjRSYXZZL0E3R1VtY0FGQmtUVDdEUnZlWVVtTW9YR0FjMVVhUEhCQVRjOEhzT1hwaW9LSmsrZWJMWHJadE9pb3RIb2lGQWpWVjBnVDFZQjlUMkgvMlF1U1FPOS9qalE0N0lud0RZZUY2VVVIUjBkNk96c2hLcHBoMVRVRzRsRTBOL2ZiNW1qYkV2V3lKSnRsQUk2cFpBa0NVNm5jeVRBUWRNMHZwckJncHdnaUtCVXA3cE9UY0Rwb0JTZ29LejlLZ0JDVFBDWjMzZVlJQndPS2k2Z1JFYTVqZHUzZUhWdy9RenBJU3E1K0RlZjRIZGN6aFpsK2MraUtGclBZZWFscG1rUVJXa1l6QWlmZzJiNHp5eW9qZVpIazAyejArRnd3dUYweEFITjR4bWF2RDRRN2tkcGFTbHljbklRQ0FUZzlYb1A3Z1JiWFFVMDlCeVpFNysrQitUSkt0Qm56NWdBMjNpRVdsVlZGVUFFZUgxK2VMMCs1SDZOMWxLRGc0UG83T3hFZC9jKzlKaVQ2ZnY2K3hBT2hSQU9EMkJ3Y0FDUndRZ2kwUWhpcG5vYkdCeEVKRElJVlZHTXEzcGk4elJ1WTRwTlZWVklrZ1JkcDBTbk9xaXV3d0NjTVJxVlJXVk5BQkRaNFlCdW1ycU1SeXk2TjhRbkFrN05JWWw1eVlNU0IyR0NqZ0kyQWtLU0FpNE9XUEdQNDM0bWhKZWFvSlJhZFpqcy8wZ0lNU3BFSEE3bU82TU1haGJNREQvYWNMTnpSS0N4dGtJdXVOd3V1TjBlZUwwZWVIMCtwSmpwRzJucDZRajM5Nktpb2dJZWorZVF6aXR5cEtER3dXM0NGQjJIcTZPakF5QUNjbksvV2JkUnQ5dU53c0pDQkFLNTZPcnNRdmQrTTdqUTIydVpwd01EWVF3TUdEQ0xScU53ZXp5SXhXTG83K3VGSkVsd3U5MGptcWhNdFdtYUJrVlJJRW55VUpCaENHNUVWWTIvNFhRNnpjZVkvamhSaEs0YjFsczBHaldVaWloaXlKWkZITmdTcEFReGZtQW9ka0VUWGl5U3RhTm1iYURpMVpUMVBHci92Wm5ReklQTkFsZ0NwejhJSWRBMERRNkh3d0lhTXk4QndPbHd4cWRxaUlMMUdWRks0VExyTkYxdUYwUlJ3aGVmVjFsLzErUHhvS1MwRkhtWm1YSHBHM2FGNXZmN2taS2FpdlQwZEdSbVpDSTdKeHV0dTVzT0dXb1Rhd0pzWDN0MWRuYkI2L01mdHIvbmRMb1FMQ2hBWU5Ja00vZXQyMUp3L2YzOUNJVkRHREFWM09CZ0JORm9CQTVaeHVEZ0FIdyszNGcrT0g2THhXS1FaVWRjQWI4Sk9LcUdGQkJDNFBmN1RSVkhDYVU2ZE1wTVZtb01yeUVDWkVuaS9YU2N2MjdJRmNZQnovcUhETzBOZ3g4Yk5HS0RHMVZWMVlJVnBZQ21xU0NFUWhDTWFneEZVVUFFQVpKb3ZDZFZWYURybEJyRjRrTXF6WEw2MnphQkdDYW1wcW5VNVhJTnl6ZGo0T0toRmdxRkVBcUZVRnc4RlM2M0czczdPdERXdGdlelpzMEdVMzNmTzM0ZTB0TFMwTmZYaCtwdFg4THBjR0xHekZsd213ck40L1hBNS9XWkxib05oWmFSa1luczdPekRtbHliK2Z4aUtOV2Q2RnYxdndDQWpDZCtpSUczNmhCNXB6N3BjL3pYSFEvbktVWFlkNEhSanNoNytXeElVOUxSZTgrSEIvMjZveldiUEpiVy93Y2FMdGJ3dU9MVHF3QUFBQUJKUlU1RXJrSmdnZz09Il0sWyJzcmMiLCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQVRZQUFBRTJDQVlBQUFEcnZMNnBBQUJLb25wVVdIUlNZWGNnY0hKdlptbHNaU0IwZVhCbElHVjRhV1lBQUhqYXJaMXRsdVc0cldYL2F4UnZDQksvT1J6eFEydjFESHI0dlRjanMxeFZ0bC83clc2WHF5SXo0c2E5RWdrY25BTUMwTFgvOS8vNnJ2LzZyLzk2U212aFNybTIwa3U1K1YvcXFZZVhQN1Q3NTMvOS9QZTUwL252K1Y4c3YvNzAvUFg3MXg4L0NIeU52dkxuQi9YOStmcThmRC8vNHhkK2Y4WXovdnI5cS8zNlNXaS8zdWpYRDNqam55dndrLzN6K3ZORjh2M3c4LzBuL1hxanZuLytVSHFyZjc3VThldU41cThYbmt2NTlXLzY0N0ordnZqMzZ5L2ZxS3pTeW54UURHSEhKOTduditubkN1TFB2eS8vMXZQZndPdWVHUG56RTl0MXZ2eStKUmJrTDdmMysrdDkvM21CL3JMSXYvOTAvWDMxLy9qVDN4WS92TCsrSC8rMmx1WFhHdDNsWC8vZ3lYLzdmdnpqWThKZnpPR1BLd3AvL2NFWTZaOXY1OWUvMzdmYTkrMmZ1M3RUWVVYTEw0czZpLzM4Zmh0ZU9GanllSDZ0OEUvbDM4eWY2L21uODArNzMzdXk1ZXVlOStDZitmUW5zQ3ZmOWFSblBlL3pQZnQ4bmMva0VsUFlvZkkxaEJuaStWNkxOZlF3by91VS9PZjVRbzA5cnRqWXl4bjJ4ZmFsR1A2NGx1ZDhiaitmTjUvR0o2K0hsNGFITjN2NGxYLzd6L1hmL2ZCLzhzLzFmZE1sZXU3MngxcHhYVUc3NWpMY09mL0xxOWlENS91MWIva3M4TzkvZm0zLy9TZjd3VlRad1h5V3VYR0Q3ejErM21MazV4KzJGYzgrUjE2WCtmcXp5YzlWMTY4M1lJbjQ3TXpGUEpFZHVNc1Q4MU9ldTRaUW40ZDFiR3pReTVXSG1NSmdCNTZjdytJaVE0cXhoS3VHRnZ4c2ZxYys1N1VoaHhMOE50akVSdVJZOEszR0RyMXNWa29aKzZtcFlVTnZqam5sbkV1dXVWMjU1N2ZFa2tvdXBkUWl5TDAxMWxSekxiWFdWbnQ5VzJ5cDVWWmFiYTMxOXZiUUl4aVllK20xdDk3Nys0YnI1WU5lM3V2bDlTL2ZHV0hFa1VZZVpkVFJSaC92eEh4bW1ubVdXV2ViZmI0cnJMaUFpVlZXWFczMTllN24yaURGVGp2dnN1dHV1Ky8zdzlhKytLVXZmK1dyWC92NjkvNnhhNzkyOVovKytSL3Mydk5yMThMWktWOVgvOWcxdm52Vit2c3RIdUVrdTJmc1dFZ1BPMTdkQVF3NnVHZDNlMUlLN3B4N2R2ZUFVK1RBUldiMzVscVBPOFlXcHYyRS9EMS83TjAvZHU0LzJyY3J0LzlvMzhML2JlY3V0KzcveDg1ZGJOMC83OXUvMkxWbG5KdG54MzY4MERXOUk5N0hhOTdBRlgxamZmeTF4QysvOGF2ajI3TnVZZElmLytjL3ZWN3ZaNy8xNFY3THUrcFRjMGlsdld4dUhKM0xHSFBpVjJsRUwyVy9pWmVNSGRMWFdueTVnOW5XTSs4OXJqQm5ITHUySis4NmRzeGZlNEc2Yit5MVY1NEplOXFUejFxMTMydnQ4WEFmTSs5M2pUVkNHbnp1RS9vTXFWNVA0NjBtNjRYMTNYdlhtUVkyc0wrWTcvNThOZTM2OExPWTU3M21IcDN0SFBVZVQ4cGpzMk9BLzhzdVlsVFhUS0xWcythcUw4UWt4MDE0ZmRmTE9uUXVNZVRCbmxiV0o0elNBZlkzei9xTlZOL3dMU3hyZmlYT1hFZTZJRFYxM2l4R2JRbUQ3a1NaM3N2M3NNRmYzU3pHSFB4eHhhL05MOXhjbnY0em9DRjE4cTZ4em9CenpxOWRiZVdTMG1LZFpyNUh1VnNQN1BzY1FIN2ZxNFUxUzF4aHJQdEwrVnNZMEZ6NFFZOTVyeHBxM3lXd0VTbVhxN1NIUGZscTV1YU1OK3U3Mll6TzY5ellmN1A1ejh5cmNUSEFRU3o5dTBjcTF6RGd4YnVVdFFhd3dxMkZ1UEVqREJPempXc1V0amx5S1hQRS9QSUpCY2QvQjUrODQ2aGN5b01oOEd2WEdNZXEvanVMK3hjL202V01XUGFZOGNPcDkyemZGZFlxSGZlT2liRE9QV01iS1V4WHBzYzJWL2JXMWo2MytYd3ZZUC9IVzJNdEliQWhSUHIyZkJlaC9RRjlGbUNDS2ZXNXVjZit4bEF4NG1lWHdYS1g4UlUrdlJSODh5UENZeWZ0VGZlYldudDVUOHg5cm5XMTh1VUppSDNIbk1xTERYNy83Z3ErZnZQaXI2VnZ4L3B4UVRHTnNIdGJvT1Axc29QOHRYd1JBTUs3dVVwUUROOEhGVWJuZm5NQVNjU3MyT1YrNzdOZWJDQWFCUmYvNW85WDc2OWVVaDR1dnRmdmlkL1ovZjAxWGVGbGkyckJXcDVaZ3VheTg0UW1ManhrOC82c0lleUdUMzIwbFRCaHRZU1R4SWNrUFF4My9QYWo1dzVzYW9SbnZQVmpLN2orWTVjZE1LNndCUmN1MWRiZkwvTGhrWGU0TmxHNmw4YU9EdWdTSzFSVCtiQmpYamxITDl0N1h2eWhGWmFraDZmbkcyc0xLUWZ1YjcvUzc3ckc4MTZwakZXZWQvSXBnR3R2QkFLd0dPTi84bHZ6UitCdk5VN3dsTC9PQXo0enB4YjN5Q3pNZmpUSGNXTlUxOE05Vlp6MFRiTTI3aDVIZTlkUkVKbTlsSTdKTGxMQTEwSmdKZitkeVY3L3VUMC9YdkhLR3c0WEpqZk5CUmNpVCtjZXBEVTN4amVCVlR4YU9scER3VEtKcnZVdEd5TnM3eTdsRzREQWdwRGxjdmZSaW12RVJZOUtHSjFWVEhvSFY5UXpWREVCcHBPUXBya1dQclR6eWcxdXdubjQvL2V5aXJFTllKS1Y0cDc1MHpEMkFUdnN5VnBQdjhyVGRMV09OUUpRZk9KdThkQ3V6WHM5aEM4Q1lreEV4TWRQR1J1OGlnUlZJbWtwc2QwRTgvUmlHdnRhL1U0NWdvK2RuY2VuUzhaUUhseXJQeDE4WUo5bTVCY3FjY1pQV3FXK1h3dDdFakluL3NSdmJhSUFjWTM3d0ZyWjVrQkVYdW5leE0vK2VOc3ZpQU95RGRCMTE0Sm9Xa0REQTBaaE1jL2dkMGRxL1Q3c0crKzVRT0ZrVkRXQ0RZSmMyMVhreGVpK0F0QmtRaFBvY0UrQy9pRCtzN0oxUGp2aTl4M0dVeDlEenE0NVhXUGk3dkVSRU1EWXhrSnkrYnpsbkFUK0dybWlNY3F6dU0zYjBBUVJnT2g4SFN3Qi9pTitHU0FyZk85SzhTVThjaHY4elNVaHFtQzY1ZGtwRzhiQUpWWi84NHRuOFRHTGxnRnJJeFcvanprbHNBRXlFYStSRm9zT1FJNmF4U2hvRlB6cS9uYUFPc0MyOW9kWUxRTkNSZFFqWG96QUhjQWlxbWphMGlJY2Y1TjF1elpPQ0laRlNFZXF3RDZVWTBsQ3B0WURqRVNRc1M4aVRTRzRWakNzTkw2dXZaOEpmTVNWaGJFdnZWZEphOThnd2Q3M093aTNrV0NlWHV3OEF5OGY3L0h0WXBDNVUyRWxaOXZJY2JBSy8wT0xzVnZZUHB6dEprQytoT1FidXBkMHB6dXZ0VUltM0w3YkN3VUVTc3o1V2JsQkhPdUhTM1BSbU1LUUpSTFNZREVmc0JIWU5SeStsd3gyOWxzdEJiemlRUnZDeHdkamZkQVVHQ0F4elVXRnhMVmFDT0ZqQTlEZ3hRZmRaSE1KSlJlNnpIQ0N6UlBlSVVoNE41ZlA0c1AxUUhaNDNzME5zVTRwRGFJbWRuQUxCaktuL3Y1Y0ZqZVc0eFV5UkdpK0hYTFlDLzZDeEFLVmNDUDhqaHNocU9abnZ3VG1zRGIybkVEVmlUTVFaZS9haVg3WUtKYXY4SXZReGc1bTk0RjVZRXozQjlvQUc0bUw3OEF3OUtqZzNVUjBkaDRFWjNYZW5OaFozcGRieFdUNzNudGRTMzVCTkFvWWQ0c0R6M2c3THZwSkEvQWFLQlp2Z0JNWDFuMjlXTW1jSGRiUmN5Q1lKU1ZXNVhkNnZmU2VSUGdJOEJ0QzlhdWR3Q2dtdUE2bEkvN2NCL1dRQmtBTVpCSytXTjVRRndxaDVBRlkxYzZQQm0vVWVQbHMzblhpVnJFTXBDQjBubzFEWDFlTUl4dm5lb05KZ2dFTHJjNmFha3ViVlhsWWw0VmxCUUlrYk1yTlRjMGRSY2VrR2dob3FJYzJjK3Q1NG9rVE13QXVRQWJlZTJFMWkxRDZRTVlDMGdDcVNlUllGOHl1bVNLQWpxVXFIaUJJY0E1NUdWRXdzWlJRcERrL3NHK3hJWVNyQ1UwQlIzWnVXZ3BzWWNMNTJEWEF2R3ZLUFVhaUF3SUtsd1dwV0hQelBmd1dWQk5ranRBd1RDT1diNzVnbm90K1FoV3Z3S25ydm5yQ205WUwyelR5UFRVQXpJUUw0REprZEFXWERncWhQa0NZWjIzZUhSd0JhTnhxMkdycU9BZzdlb1BaZ0FoNER1SnFodmRUalROcXNCY0pYVERDUkhSOTJNRHBad2dPTjJFN3c4cEJhd0l6RGxvRDRIb0I1SENMVURKNDlRYldDeFRpQW9uK3lBRHM1ZTJ3aS9LQ25FUVhqSGIzNXg0dkN4ekJVb0lJVzhyV29VV2dyMFFiL0hPTnBCV2ovMWl4VHVCaFkrK3B6NTUwR3lzRVJ0eHc1cDRqSVRkT0loaVVBRUo4QS9JUXJTZVZoWVlKUWpzNzdIMitjQ1F1R1g4a0hCQzhPemlGSEcwaEpjSXNZVk1nTHRndlVxVVNQOVVNRjBRcGp1OHVIeDZzV2duell6SG5VOEhrcitjS3h6ZFNBVHlURFlJa1RyYnVnVEFDUEJXVGZyR3JoRzllTDlIS1A2Sk0rUk5HVUpQKzZ5OTFiaVhCczdpcWdKNEMxQUhMaFFSQ1ZnU2tUSlE5WWtlNExOUVB2SWtkSm9DT2lsSTVDZEdBazlVWGhJNEVLWng4KzhHR090OFhxcGJDeTlvRFU1Q0t5cEsxV2NlRmZVd1l3cmNDb2hYOTNSTXNFSDdvVHNBRTBibThBUWd3Q01QcFViUkIwSTNGTDZRRW5JYTBzTXQzdmRBazMwTmNoS0d5cEhEYUpqWGV0MUliVStxVGk5azlaSmdmOVBnMWpIa0ZFektHRzZLRjc3SWgxd25oUjZqMXBpRGpqU1VPb05JTkZCcHJCeUdPLytCWmVzejc1YzUxRlJUbEJvbGJJT0psL0JwSngxWmVFY3YrakkxM2w0K0N3b0VZOUxLMlJFVmV5SjB2VE4wUFlWTUpGeDJUYXdneGdqT1lpeEh0UElDa0M3Y1lIKzhQNG4xTFRmNjlOMDZ2amdUbVVtaGdDNHVIdzRFbzJDVE9BZ0VENmlCVm53dUdSWS84dGdzMGpIc2hCRkFGRGZjTm1FcjJjeEM0aStCdUtxeXo2Z01uN3FBUXdaTm9qbmMxMVN2bUdIQzh1SEVSWGdrTWJzeEc1TWlHWVFKUWZrdDZBTmUzNFZITm5XY05EaUQxazFaRTQzNXZPekZwNGpBRDRjZkhzaE1Kd2hKZzVUQUZGdWY4MWdBOE1DZURVZHNHSWx5NUp4T2FJeExwMkRzd0Nza01uc0I4THZnQWZKeDlOd29Nd1ByZUlOM052UkM3TWVNWE80YkVUcFlmUHY2Q2cxd0ZpOFYxMXdUcmVnc2IyVWE0WkhNZ0Jhb2VpV3N1RmFOSlhMTThwQk5wOXRFb21NZUlDZUQ3eXJHemw2VmxLVEUvU0RaTFA1RVFnQXZrK05YamwyWkc0QWRsb0JPNFNDVlN3ZmlJSVpWL3YvNUVNelJJaVVlWEptcE9CZDRJWTh6clRSZzhrUVcrelc5WFdHRTBSVEpDeDRlSkVnQWdkd0h5ZkZONVh6RVMxUDQ5c0Z6bzMzb0VRWllsWHkwWjdER0w3M083SWpJY1RjbDZ2UUNJdjA0VWJrWm9maVdQRDFJK0V5U0JlQVBIYmZ6cFhRaUpIUzUwWU02OXcydkwvZ3k2QlBQS1Z2eGFEaGNqRVloUWliMmJnSUFDc3poUFRUZFJxYkcxeUFRV3RKbGhmL2c3M3hYSFM1QUJiS1FzMW82akNPeUFVaW96ZWJBd0VUVmZSZzM2U1lnM0tHM0pOK3ZORzdYd0JOamQ0SEtJK01BUGNha2k1SEJ0RERlais5Z3pqR0tZTU1USmlBQWcyNTM0WEZrTi9DR0doY1ZkRTB2ZUNrNms1YmNpSy8xelFkeUVseVRxSGE3MjVVR1lRREh6dVpHL29ucEI1WXJTZlJDVGZVTkdZZFkzbkhQSVpBSnlELzZjWHp3S0JvblBjU1BBRlpyUGU0WlZ3ampHcU1Yd1NpUjhOUERPeFNDenF2RDVyNWFWZ0lpWVJKTVVSRDVlOGI0cVB2aTdGNU1DNzBjb2J4Z3BrcEFyWWkraEtZcUxwZDhrNGlOMyttSHBrS3FnWnNtNWhIUGtsWGx2K0lxWnRJNDc4VDJFMjI5YnYvN3BRaEFlS1BCekpnRlNZWTZzQ094dEMzaDNBS0lEMmlqZVJsbFcrOEdMSGlSUnV2aGw2VHVjSytKVmhJWU1PVUlPUURVS1pQOExMTWhtbFhCc3lEQWh5andtbDcvK3Rqdlg5M3R6Y05FY0Rqdm1EYmloblJPT2ovYVJma2MyQ3laMUNHRGJrREZ3RnhTcUs1dlVLMTlaRi9ybUlSd1Q3THhUajJaTUZXZjJGaWIvblpNNUtCd29RSGpkM0JaczlnOXovY2RGc1ViYks2OFpLL2x1MUU4d3pPK2g2MEs4d0d6OERWblJlSzhscjBWYXhOZE1MNlJ1OTNHYjZVV1dobmpCZkZPcnBzclVaVmtVaFhHRW9mMzlxMDhtWmtpMVRYK2lMWUFhK1hKOXVLSjltOXRtSFdDRkhicXlaaURXb0xpQWZDekhDQWRZWXFjbXZCRlFEMytEdDJic0dWNEhxUWFuMEtrUTlnNFRPNG1udHlKQ1MvdzNWOElLNkxHeHdqaFlyRkFOZjhwK0lCVXllUkd1Q3RFVE1ZVkE4SlIybTBNQzg5K0IvWDUxdythZ0tPd09rZmRPNXVLV3ltaWdCQXZxTEdnSzRNNTFuOHY0L3V5b2Y3NlFqejBHOXBDeGpTaEM3TVlQd1IrMkZPV05yL0QrY1BUU0c4Q0dWbWdOSlh0L0JWWUcrMFBCaHlHaEJOdzdJVFBCQUdXcVJQL3hxbzBnYVpnWTRQN2VBRGlrQVRWeTdlZUZ0dTZ0OW9KT1FjNEZGUmc2dlByRjFNR2VYVC9FK2dQcXBnOVdodFNGZ0FPK0NJZVozSXNLeEY3UVFlTDFjendqbTNzc0NNaUNlcXZUbzVTNGh6a24yUTF2bkRvNkhWb2tocXNMd1RUQzJBTUQyUmVobnNXQU0zU28yd2Z0aHlaQUdENTM1WG41VmFRbHdtdW13bTBRTk1DRkNEM0NOY3Z1N0RNZURVeU9aajc3aHg3aDVOZ0hVdElzMkRzVmlJYktiQ29hVnAwQ01haDVqQVAzZlRGTGVCVUVsaWdIUCtTU0wvVXVsa3pRM3JmSEhKQU9VQ3g2cXR5MGN5a0FlcnNYa3lVVEdCei9HZ2F2aEdRK1p3UGxIRmluUS8vUU8vREJWL2tIY0dXY0FkblU0RzRnYXpEQjRRN3lsakJicmpkci8zZy9QMkwxa1c5bXNCQVNZNkZZUk0xMzRaS1lEZnNpQVFFdkNTZDhDanNQaTNpZjIwVElSR3M4eE96cmcvM2locUJQV0RDTFlXb01BTnZiN0JiTFNweUcxU0NRUUY1QUdDZHBHeWYvekxtaVRKLzJGYyt1SUZxL1R2bUZyTWRmT0JueHlXVkxXN0R2aVZFaWtlRHhBMVdGbTBYc2hIVUI1ekJyTk1HRTFtNlBNd2hSWUUwenc1blFIZXphRFZqZUlCTnZqQTc1N3A4VTc0UmpMUE9rM1BkNGJ1K2ZVQlJaK3ZUR2N2a2x2OG85SW5CUDZBK3BKSnZoa1ZoQkl4ZFRoQkRlZ3hCUU5xSmtJQWlHai8vNG5UdGo4TisrVkxyZkNiWHc1NFZCQlJPaUd3R0E1Yk5sdkMxdlRPQUpDaXpUY1laMG9nSUI3bU5sWlE0dnRnOGVnWVZRUVM0K2VLYk5kaURjQ2FzREJ6Uk41QkY5TitXSlZ1bUhQUlYrQk1pOFQvbU1mcWw1MUMwYmVmZEVXdyt3cm5rd0F5MEU0d2xoRHh3VGkwRFRXSDR3M0V2b1l6L1pIUlYyQjd3emVJMndOK25yWWtUUHI1UTlpcFhGL3pLTWluai9JZ01CWFd4cHRpWnY3M2pqby9HQ2FXeWZLUUsyYzBFVEw2d05JYm9udXhYREFKbU8zR2tSaHRGdWRyaWFha1ZKODVZMzhTU1pSTWRBdUZ6SVUzeHVYbStlWjE0bWFqMEJ3eWFBL2N3T3NzcW1HRUJTTG4xZ0diZUhtaE5HVVFNQkNVYkt5N2lVMFJWak5jQ1NBbmdFYXJrc21kWEFJVmozQ25TakRKSS94Y3lCVEdRek82SThCNTJSMWR5NGFHZ3VLM2RBR2tCby9XTFZva2Vxc3M5c0R1NHhWeUFQVUdXK3o4UitzZlIxa3NFcG4zT3VBRkEwejRWMGpxbVNlK0tCRWFpLzBvVjFZRmZMQitlRFBZTVd3NlFGd1FkMmpJd2JnTnMzNEZxTEhZTUlSWVR2czhka2orSFIxNEtOTmMyZFQ5Q2JIOHdvOUM5NDZOV00vK0lzc2NuckpLQkRMd0xYTkY1b25tZUJoSVpCbk9ySnpPaVJ6Z002UmhEazM5aUpjMGhvRXgxM3JIQzhXYWJXdlcrY0JUaDdNaVRaL0RyeElSSEtzRGRDZG9OWThSVkhLQUR6OXF6UVE4ZTVJQU5RL08rY2xqNEJHWUI4Ukk0OEFSVG5nckVuM0J5RmpSRGJyUGlGcStVWUFXaENUWmxkb3d3djhjak0yRjQzbDJDKytiNkp0ODFjWHM5bmZZZ29BMFlJUGdMc1FOcDNlZnp0U1RCRzBIQ2I2YUhXTEo1d3VraTdScys4QWJTSFQ0V0RaVVRwalNjWGVZZnBYVDRjV0N4Z05wdTFjNFFWRXNDNWE2eWRwUnY2Z2pvd1BtcThrbkVKTkFEZzRubkJCMU9RcWQwSW5JRFlBc20vcTU4ak1OZzBQZ2pId084OHFuampTK3dKVUI4d0NnN1hJSlZRSFVEUU9MbDJuaDBIbmF6Zm5IeGE3ZFpFK0tYaVpNRWNqd29jM3Y2a0trWDZDQkFMRmgxTXNXV3VBbFQ5OW92cDRBYmZJcFJnMjFnWDZIdmwwbk5KcllzQkgveCttVWd6NW54b0hvZ1ZMR3NTM3lzd2hneGhkU3FMRkU1MGNrc3NCWUJBMStmaU0vT1RRQ1RJRFBqSmRYc1lpRDI5dGIxY1VvUWJ3dVhQZ2NPUXk2QUZjeXRtZzdjbnVSOVdoNnlMdkJHOENSYWJNcEg5UFd3SE81ZFFCNVQ5RjVJNkttTWRreGcvQ1p1WUhhdkpIc043MExZWW82eG1zbXZmbmMwOFlLRnBIQVQ0SUxFc0ZSL1ZOdkVQcy85a2g2d0tPck9oUHpQVzRXRkRmV0R4ZURuc2s4Vk83Z1g2RXdhU1lXYStjVWxSOFh0elNXQXFYQTRYR2NyZXdkM2s3bkVRNzdtUTBPOTNrdCtzL2NWR0pwT2trZjgwMWhhVlFjU0lyaUVPeko1aXhDdzh6R01jZGM3bUJ2VlN2TkVMajlpTkMvTXAyTkVEUzlrZllRTFcwSUVtTkllcUhsNFVqS1Ric3liUXROMTRXSXRZSzM4RHFUSWJXR2NrSm1Rek9KYzZlbnE0YlYxVHpQTGlEalJYN053RVRVb0pPMExhY2htSWZGbkZrcUZHa3dPdHN4ejNTb1VQdmdqZGNBc1V5a2xEd1RBd055N1ZFMCtXTUo2REcrSnNndzF6ZjZzUXVzZk45ZCtmbXNManpHektmbHpLUWNCL1F5OWdKN0QzaWVhMmtxWUFjdUZRQWh6M3k2WW9QMDljZjMwbDNEZUxUMjdZeWd0M3ZvSk9uWTM5aEk1VWdwOEZ5dVFQNnM3N3dpTHhCNEgrZVZqb2dvL2liM3cxaUp1UEJMT0pWMWgyOEl2NVd5STdzYWl1VHJBK0JSaXl2bWF4Z1d5V1dJYlFSZ2doemw1cDVWZ1FtbVhVQXNzaGlWZlBwcG90WnlqejNtYjVaR0t5Z1FRL0FoTUFYMFNlL3M1dFRFSUhFV2NyTldHUE9XMDBIMEhyQzlmSHZXWWlEQmJ2TVhEN3pWbHVTNDkrY1JZczhKQVd2LzZtTFloNS9JemwvMzRZME9WNUVKZHJqVXpHVnEyQXlJcVFMbkZxUDVVUjZCemUzK05wZkFVNCsvV0RYOTltTy9qQlpkVnFPblVHZUVvM2tmZXd5Y1NqWUtrU3pySlkwWURkQU9sdzVLVlQreFBqblp3NlFRdVEzT2tDUWFMUms5am1BY05NMlhJbHdqWVV0djJjU1NTREF6SDhzVzRsK2RvSm5udnVGc3Q0VDZWSnd0ZWdUU1ZzWHEyY1l5OE5SZHdmRjIvUVFnZG1lQWd1bU0zOFJlakpoS1ZIVndsNys5UXBpQWJ6a0lzWUlPaEVNL3RhRXVvR1NNRTlWT3NlcDdMTmc0MElyQVhoWG00RmtySHFucXh0REJ6OUJCNmg5RUhDNEFuSVVqMTlvU1ZqR3dvQ3ZHaWV0ZDBWcnVqQjdDczMwRS9lZkZzVGdUNUNUOFl4UFlMdVVHYmM0Z1Z5SStvdi9OYjZaaXdKWjRNWVdjdzR4V2FWSWp3aG4rTndaQ2ZpbDBqYlFYWW85N3BZZmdnazVBblVKdUtCRG9WWUFIc1lhZ3Jlc0hsK0RpeVc1c2NCZUZod1NhalRHM09GRTh3UDB2YXVhOTFjRWlJZGNLNHB2cWFNTVlMQ0JzQ1gyUDNqSkFETDEwWG1BTWdSQ0RjUmdzdUhmU1dKMmdJdUxndDdJS2UzQ0pDZTEzd2p2amJVQ3A0YXFoTFp5anBaSmpZZVFOTWV1MGtFendxNGR6WjFMZXdJNFpWYmdvUllWUWJQM2RDVzVmMmdRUmNYa3p5SUF3ZHhWL1FNMU1sVVRBZ25TbmJQa3ZCc0REeGN4SWx1THVnRy9rQ05lSkxqcnlJL0lCcFp2VmNqbU0zZ2dreVRJNFZ6TnZteWJjQ0ZyS1N5SU5mUmQ2ZzFCRkVxVDBxWXg0Q2RtM2oxdkJ5dVpDR0psSGF0RHdHUmNGSHJiS1pWWE5HalFleUp2MThlRk03aWdmWExDeXVZZzU1ODJGd1FGdmtMdVRXQmcwSXBhWEovY0l0OHZ4NjBiajB6RzlPN1NkZnJ1U1hqYUU5TTcrM3FjR1Q5bm50Q0xLelZZZzhDYnhQdVVhZmxZMDByR3BpQUZSZ0VCVGdnYWk3QWo1VENWaVgyNTJZOURTWEU3SVp5NUJmaEo1NHhFbTJJMU5FMWg3RUhhd0x3akFJcCtGN3ZCdjVhTGphUHhTZEFoNmN2ck1ManVWODZ6MlJwUmV0OGVnOE1EUGE4Q0hDc0FSalNJQTR4bnRTaFpTUHpNdGV3UGxRQ1dEZ3RsVWlzTWs2VndaTlFMQytCdVJQQThwczhJd0NOUjNyaTF1ZzlvMEp5ZTJ5ZCsyWFZtalU3MENQSVFtRmhrWGd4d20xYUxPN0lQT1ZSckR1OEZESzRnckMwNWI3OGc2UzIvcUwxNzFJWm5tejZ0S3BrZWtxSENzRWlzUGJhTWlDRDd4S1Q4V29ZMEloR0dTTCtZelVSVElSVmc0dncyOWZEajZBczBORUd1MStvOUtQOVB6eVl5M3lRYzMxN3dLV2ROZVFUc29kSUlpTVIxM0YvbENvV3ZLOHlkcnZOYVlFR1hQQ0cwelpQWDk2QXAyWXIxbUJtV0JwMHlsTW1naVp1aXNRR0t3WjMrcDFqUG13Y3FJV0FGQ0JuNERTU0sxSFpQSVduYVEraDRVUHlXVTdTTVAvazBXZ2xkT0h1T3hkVUIzdC9kMGpBdkU0MkIvZlM0TURaTHhENEpscHllN0tOOFdZZ2s0aUFtdjN3S0lncjhkd0NDZllpVzUxMUV6b2VOTnBGOEo0UFNKSFEwRjVreEtQakI4NWpEQW5SQXVONTljSkRZMTVQZ1hCOWhNczg1WUhFR2VCQzJMaHFoZm1EK096N1Nxd3ZoSlQxakUrYzM3MDhXdWU5RWFkVnM0SmhHZEMrVTFoMWt0eTlLT3gxOUN0Q01WWEVwWnRpeWRZMkE0Z20xdnNBN1ZvYXQvazI0ZXpUeGh2RzNpeFh3aThKWk1OeU8yNG5YRVFmMUw1SEwrWWZlVnQ4SW5ETkNPZlFCdXVaVlNqZDAraVp3azhkMnd4QXlNTzJ6NGdmSFpIYk1FaENDdHpIWWdGWVRGdk4wbU5DMVNMMlZpVU91TElIak5yaWt3MWZTd1ppWXQwSDBDb3d1WUhBclJHd1lCRUJzbnZ5bGVhTXVaekhjbDlXZWxxSVN4eXR3MHpIbnJuLzhKWmthWUZISU9NN29zakRUSEQ1WkVSWTBmTVZEdjJOTUhJQTJZaU1oMjE4WUQ1czYyUm5XTW56dGNKMzRLMlE1R0RSSGVybzV3MmFxdnB3RVdJRkhDVDgvT0RQMzRaWEV3d2VaRGkwTENORkUydzdBZWczV0VhQUJQSUkrK2lYQjlDS3lZTktYTnlUU2NpSnVSVEVaeGp3Tll2WmlaWkViaUJabzBrL25DbXozNTk1U0ZQWFZ1QVRZcUVERU1nVzhROHp3NUQvdUFpWTRaWDVWaWdUZG1vUlQ4QWlwYjJnS3k0NFp1YUtDSE1BNml1ZkgwYjdZdkVPWWU5RnoyR2NnTUhPbGlud1RsQ0E1ZDRRYzlOWDNsMDkrUVZEQ1FEeGFyQ29oazVBN3ZLR2ozbUtsdy9IZU9EbG5rOStmZ3B5NXowVjNIQzlZZ1VNdUJXaExWa2pCQmdHZUlRTlY5QURVV1BKaVE1SCtNeFEwVVdjL3p3bmhQZGdIY1hjUlJFQ2lURnJZWGdFcVJ1SFJ2UGl4bGNObmpLaEJJZ3pzbUlRR0p3d2M1Z3N2SHpoaU1QMWdMdjRaWjM4QlRjMzkvWkk1eVJIYWx3VzZHWk1IT1d3TW5hREdPSnRsZnlZSmg2STU0bHJubTlrczFjMUhjazdYMTVpRWFISjNMNFRGMzZ4bXl4a3kzQjdBSld3VjRDUURNK3pCbzhRb0ZLS0NDSVA4cjlkejJrNm9paFpNb3RWZ0ZHdlJSbnpRcDY0NzVtd2xqYU1vaWduUGR2NHV2S2RMUUhLU3VjalVyZjIwdnFTR3kzQWxRSGpBNXBrenVaTk9HMzBIVitQZWpldVQzVHl5Sjd3MDBNRm8yQWNqVTFtLy9rS0FwdjNCZFM5S1N0VkxKZjBpQ0JmK1NsV1Z1TFZaaEN4NTNtRHFBVS9nWWRiUVc3ZWZwdE9XTlhhTTZ2MlRmNHMrU3JVQ21xUWlJRHpncFdXYlhFWnNTeUtEcDJWRzN3R1lUNlpqSzlmNWRWZGhXTnR3Y1pNMFNLb2JuaHZEQjRBd3BGRHZONUgvNEdlSSt6RlNVOTBYV2dnVFNwSGVBa2g1QnQwNWgxZG9tcWxGdHdVaUVQM1lhSHFqVlF2MHlMRm5wVXZlb1pyd2hodisxREI4T3dNc0M1N2l4RHEzMnVsZGl0NGJKRm9LVEZteThTSU9VMnllT3BjTFJ4SjFveXFXWkRWcWtaVzYzM01vaXJkY09CczBjQmp3a09yVDUvdERueUc5U29RalhoSmFWKzJXZThDbUZzM3RYQmJWMmR4aHBXUGVMRjVTbk1ZMVZESGRxTk1zYUY5SjZRSkVoZVhiTmpSU2JobU9OdFU3cko1c0RyaTQvUWtaWGxZaGZoQTVRSDl3M3dWb3ZTekZTRjhDdmxxUW9kWGpNczZsVFpPcTQ4eDFDby9VTTZLR3FUd3ViL05sWE9EeTJhZ1JCaHY1aTNSL2phTlFGYk9yNWQySFVqcjFzVDA5L0VNL3hSWG5hUWpNUkQrMVFqZ1hIQUxudS9Cc09SdHVCRHJWNnltenljZmNwZEwveURHNFpWSmJjL1ZFQ3A5TzI0MlpRRmc1SWRkc1I2TU9JZUVZWWt3NkJpeXJvUXZoSk1ydWp5d3hnQzJ4NlpGYVpVczlrVitjdUdiV0JIYjl5YlB1b3E4VzhlNzdaUkJFY0pFVk9vQ0FKZDAzZDlKOUFLRUhsd1BQMVZGQ0tTK1pnSmhhVUhMdDNqNHNXMXYyd0JSb0pIWVA0dUJ1WG0rL3F6TEUxbDNpazBCdkRwbzEwek5RRFJ2NnljYVBOYVR3R0xoSGdTWVNNYS9DRE5vMlhyVmNZWDNnbmRkRFo1UElNU0lYdXZoZXo1SDB1aG5xSENzeXp3dkp2d04zclBld1NLZjIxUkVWa2Zla0g2Qy8zb0F1d3N6MmdWQ1lTOEVpd3JxWUFMWkpQTzR0MWsyY0JNMWlId0hZUzFYOXpUMTIxQlkxbVkvSGtTdEZ5ZStibXpodGxwMnZlVldiNGIyZVVMd0pRdFE5b3NVakI5ZUNHVUtjQUNiSDlnUWM0YW5JTW5jYUpTbFhBdDIrTHpRR21FeVd2RUhrUFlPVnlFU1k0OUpOZnhwQnpBVzVUQjZoTHZDVVY4RW5Ha3NwR1NEUkp5NEQ3OUZCSlU1VWVJc3R2bWJFdUFlamIydnB1cE5NbHFUWEMxM3h6cWdVNFFGbHZRSjFkT1N1Uy9MSkluRm1FVWxESUFVY0h2VFczVnd6N24zV2xnc2tOZ2lENklmRWV5OVR4VXpxcXRZM3lZdmhBWmNpTitmYmt3cmVURW44UUV3ZUhzd28zTWJnTGNGbWhtaVRnUkFzWUJuQTE1azlBRmZYR253WlZsV2JVa1o4ZnRVOHlLNENXa0txU2V0VTNlQUlJSFFzakFUMVEySjhLZ2pEZlJNaDUyNzUyd3lDQWpQUHRYMGxpVGVOeG9kYWRWM3R0aWhEbzNOSXVtMGpESzVTbmVGSlZ1ODJ0OHlUZGQvbm1yNnQ1a21JREtuQytQSXA0cCszaDdZV2M1YTJvMC9QMmh1di9IYWoveC8vM3I5SnkvRVFMK210QTY3Ym9zM1FkeDQ5aGVzY3VObWV5L3VENldQQ2xEMGdSSTVxcTRKWmNHTXdla0hHcXZVbzFaUHFScEVRK2gzajFIdnRxZnM1ME5Dd0p5elo5K1F6V2w1L3BRMDIrRlFvUmtWL1BNd2JzM1h1a0VMT09wOWloeU4xN0NRNUZudWE4ZldaU21lYUZ0dEFTbFRrWVlyUlE4MUtzSWh2eFdxQVNFQWcxQmRIZ2lpa3BEV3VHRERYd2xoZnJ1bmkvaGI5eWxRdEdUV2c3bnlVMWFSMEt3Wk5nMHJUczAybXZzaFVCREZUTzVhOEUrNEdxajV0TzI3YVZmZjJnb3N0N0hwUzRLMVFaNkE1eHhiaDhwQ1BzeC9WR0xQVDBaNWVraHlqcmI1VUpRbVNpYy9Wd2Fsckx0NnJGSURBUDVoUE5qVUwvT0JtbWxBZnRXQU5KLzhWd0h4cE92ZkNBaDhiMkhmNEF1SVpHRkVCbER1Y3p4dWt5QStyRUo4Z2tTbVRValJ4WTVpNXg1OTI3a1FaQ1d0ZXlqWElFVUd6bXJZR3paL2VmQitFMnFJdy8zZTdHdTBIK1d6eWFMZTE0Wnp4ZUdoMnB1aDV6Z3M0ZDNERDVzN29oMWdGamExSWlHQzBzTDR0Z2JJVXNJVUlWaUp1d2R3N2N5MHpoRG1tS3hsSnd4b1JlalZJeElNVHkva2lJVjh2bUw4QWs2Z1Z3YUZkSCtJWmhEcjUvU1hYY3ZhRHNETGlvSTc5b0ZIR1p0Wkh5dHhOaHdFaklKQzh0YmJWdU8xTEgzOGlvTUtDT0xwTmFWKzNlZDArZzc0UXJUTzlBVW91V1VUR1BhQ1RJdE5pOGVHcTRHSDJLYmNGUEhvWWVoTGtMREpHMVZhTDh1OHh2c2huVHo1Tm1jYTMzZGFTNVROaXNyZ3A4MUxyTU93MkMxNlY0UUxuRGQ1L3RlbkRSbHBYajhWNTZsbXk3clk3aDFnQ2NOT0VINFgvNFFVUGZPd0phOE05dmphSE9SWlNOVk83WlBPL0hoZC9JZHR2S3NubnVGV0FWYjd2NExudERKY1hCbXc5dWhWQ1JjOHJiZlhnTUF5OGVVTXNGdXFrUE1GdFZYekFyQ3NkN0UwSXdSNzFCSVh4TW9qUVNlL3h0dmk0ekRMNTYwUWlJNXJOdTBoeGc5OXdFYU5xMmNDdWNLNW40NkIvbXBBbzJXUEttN2RLVTU3NWxGQkg0VC9GVmMyRnUwcGVid0pvcWVXRlpwRDdFZXRRQnJTWTQzeDZmK0ltQ0NLRnA1dlRZMG81WGtYdkxvcHFnRHp6MnBLWWpNcVMxVUgyTXVQaExwdm5Qd290OUh3b3Bvd0R1TGFPWjE0QlNDMkZLS0JheXhnRFM0TUg4TStKV0ZRb0tkQjV1QkhaWjV5U21KOFptTThYbUxGWUx4c09wb2p0UEhlZk1jUURrTGNMZzlBY1h1bUltU28yYzVYU3oybmFZRmxVU01CQmFPVFFXZXIwRUdLMFdYbnFYK2IrOTVvd3pzRTlia2xKRE1haDh4YzR5YlhTZ1JsN2czZWJEa2FabFRhNXc1UHUwN1pPS1Q2ZDV2d1hhYU5NRDNDT1lyZlBqVStQZFNmdkZIeFhNUVNHc25wdGxMSFhNMnJYbjR0bkVSNm9HbWU2bkV4R3RPYVlEU054VmJ2dW9uWFlOd2dTQUl5MTJONVZMUmFQeE4xWUd4UUxTd3J2S2I0UFFjMXRJMTRUcWZrNzJBR0xtOURIMjZDcVZpWTVwbkNsYy9Gd3NwdjAwZUJOVWZjTi9qelkrRHhYSkxiUW1UWTl4VFBlZGZja0duclR0R1pZRHgwejJrQ2w2bWRuUTZQTU50ZFQ0S25tT0Y1ZjUxTS9TWEQ4NTNXUWZINUI1MFBOanNMNVBwVGZ1Y0h0WC95T3ovWm5aUGJzVFRuait6Tzd4d09RZWVQMUk3aUQ2ZVZldUlVaXhWNWJabi9VTGpJN1owbHFGOExsbUVaaWROdForWXRzd2tTU01XN1p3TEVQSkhoUXVoN0JJQTJ0d1NBblFzbXczTUZ5bTBraVd6VEdzQkdQTjNGTWwzN2tpcnhMUk1JOGJUYVBXMGNGNVFMWHFYWVJ6Qit0cC9jTXRENTN0WTZ2VGF2SXBKWlB4UW9Rb1lyZ0NsN09wV0c0aUtBcmEwQzhkZDBaVTk5aUYwNHQ1b1Vyd2hXTHRoc0FEWVFFb3FkTFEyWmMwL3pSVnRUV3F6YThPQXBZTG9RZGhRdUpOYWdnZ3lHbzRTSWlKNmpIV21CVVBQVXN5VEJSQ1FoWkVHMVY4UkQ4ZnJjVDgrL2ZUTDFnc21pWXZDM2srTWlpbVdQZGowSUZWQ3Q5YTBiMzM4TGdzUHVyV0hSSENyVkUrL2JPSEFUaXI4WGNkeE5UcktpcUlhQVp4ZTQ5bGRxQnBHNWVKajFNbjlJckd1djlTUGRjb0EycmZDeVJXVW9YYjZSRzZMR1BsTFA4MGFCNlZ0RGxpd3YrT2J0TVJxK3ZPUkNhT0ZUSXptOVpYNktyTWRhb0tFMjFCR2hRcjdRclVSaU9EaExFazl1R0NRWWQ3WVJGQ1RCWWZrUUMvUTlzN01TaUFWOThWYTRHTGFFVVd6YnFFdTkyR0hvVTdjWUhDSCtKcWpFQXFxRVpweVl6NUFzKzJud2VqUGFiM0RLUWlKWVJ6MHhQdVZVYnJGclg3YWREU25XTFVmRk5ZajJwZHNsQUpzd2hyTVJIbXMwZWN5Sy9MRDVTUzM5MnBEbmxYUkZ0MzloazhtU0htU01LUU03Wksxb2JUYnAzZ2RKOC8zSFY2ejZCcDBoTC9qZUhaNW9EY0c4TDNZY2k5ejM5NHkxSVQ1clE3Rnd0aU9DV1V5VEpKV0wrQ3lOZUg0VDRtQ2JTRHQwZUthdjhXYW9JL2ozcDBES0pzak1aU1E0aGIyK21DcEFzQ3d6Nm05VloyNURWSnZXWFpzVnJlRXpiTVVQTG5EWjE3MzZHQ1lJaHF6TlhtWVlMM3paeXRMa29ZS3RGWHFTTGMzRUNBREhtbHhya2pDM3VMbEpGcnVzWlU5TExCa1Z1b3NGQjdqU3lXNkNqZlp6ZG9oVndlL3RCT3I3SHRhd294SWVLN1pDTG1ZUGlPNFhxMk11MUtSSzlqaUdUY1BDaDBtZmFvYlpUblhMMTZFTnhmUTkvQW9EWVhmaE5YZzBHL1ZZOGRpdTAvcVMyVHY3cDlFcVdCQzNaWGRWdUFmRXhXS3RHTjdxK1pMdWE5ZWJkUytJYk1pa1djcWtwb1dON09VcGFEU2hTNHo3cWZnYjBOT0QyS1BHTzNRcDQyTjNwb1k5MmRGcENqUUNzTW1aUzhEK3dQdC91aVRadTA2MFlDOVllVnVINFBPKzJ0QkRsQVBXUTdlbm9FTzNoaVg3RzU1cmRGSDFFMWI3WlFVYzNnV3U0b2dmOE5YdHRRbjJDT0duWUljamE5Z1JaUHV3OVJWN3dGQWtsaWVLejljR2VSaWgzYXZJYUhTMDRhaENNaGJhTjMwZVM4Y0JWVHA1TEh2T2lCZ0lMV0xHd0JwcXEvQ2NpWTl3a1o4V2Y5bVhoN01EYjhxTGhCb0haanhWdEQwWkFuamJCbzBDWnhzQXhtRTVDbFNIQmJ1ZisvVG9SR000bHAxaHVCcU44MEZLdHVFQURkUis4bytMcUlxb1FGbmNsa3gzeFY1MlJzckNQdGlqVTZac1VlNVQ5bVVoWlRSeGl5blhFK3kzOHJ6MjArS0VXME5qMlZqQ1l2WThzdjM1TDhOaFdaK0NhNlhMR2trTERnUEIxSnplYlNWMGhSdHZEekdzRWJUdlBpZVBGay9ONHVuUnQrM0pVc3N4d3k0MiswQkdvY292c1k4b0JMQ2RzL0liem1FbnlOTDJ1RWVXMDhraGhWVTNFZnR1QUFUL3RrZXZ5dUVRd2QweXh1SEJJdllSN3R3cUJNQ1QrZmdrRzNyczVnLzhQeEZZSFAwd2pWZVlTekxwOVVYQUF1amo5M0R5QzVyT2o5d0FTRlA3d0M5aVJNSTR0K1ZYSFhPMzhPSjk3alFWaXZLd2MrQ0RMVGxPQVdNMHk5SFdoU0xISmducG5wdDlOdDIyRXU3WEkyZy8yS0pwMnhVZ0pYYXFDcVNQUjdwMk9DZG9LVktqZ2FYaHVleUd4NWt4bnVlcmc3ajN2ZCtwb3cwVFViQjRqeVNCSk9TalpaK2JBTHZNUFVIb2dLSjVpdlB4NzRid2UvTnlIbGg3ZmlaNWdLckE2WUF3blRhZGFwVTJ2NFZmUHhqdVJKVEEzKzBwT3QyMzdOeHA0QnJqOGlJZEpXRWRRbjZJWWc0bXdSNzV0SURXQTY3aStvemNJTnhJN0NKWElBbTBzdkJVb1RtOEFLTzZUbFVRSC9DNlN0MzBwYk5pR2l5RGhaWC9lbFpoSlRHTHg0SUU1eDZ3VTU1VzVSdjVaK21hSnlLWGZUQUJMT3RXY01HUzBaM29Qa1NneFJpd1RsUTNEREU2MWFNTjk2aDZoQVBnajJkcFFEWTFRZGpDRlp1Tlk4bDQ1a2duR2FDREpyVGNSd1ZhVDY0UjQ4Y2tyU3o3ODEvazNHQXpwdkxXQ3dJOVpSdFFaRHpnQmtBZ3I3WVhZNk5Xd1V2bU16cEcxcCtUMVEvTkE3SEhSb0RhUkpMR25nV0gzL0ZEYTN1SkhzUktMVEJDbjVOZHNzOFAzcXpibmd5TDRJSVZBWVh3THNPeHB3bWVPZzBjL2J2K2pJNVFTR1RKemJKTUEycXlOQUR1OUowZ2w4NVFnNXV0dWdXMmZXYUFDRld2UndIOVVoUjhBV0Z6R3IvNkdnUmRDOW1pWjMyWWRTSzhZVURJVTNQRkpwV3dRYnVCVG5FeGZ0UTJUbUJmOXNPcU9CcmtDTU0vcmFPSlJyUEdPSnBGMWcrMDNlSmVHRlN4emhJejhLd2V2NnhIa1RsS0pVbGtVZlZuSjRkNTNna3p0MTdIQXp4RXNIMlF4VjVjYXdxM0tOSWVSOGw0b0FKRkErZ2ZNTHUrWjRvSTRHTEhiTFJwMXJpWVBWRzZrNDVzaWYrZmNiSHg0Mlh6cjRITlFtVHM4YnNpVUptc2wrSDZvWWpkZFBTUmNwWWQzd0xuUG9UY1psSkxtOTMvWllWcnFuek95MVhhWWJiamhiREcrc1luZ09wSm5uK3JpdGYzVEJNcnNJM0hEbm1FWUJxblpVaUNONUVoajdLbndLQjdobXBlcktBelpqN0xXdUFjeDVCZW0wbXNqMEFXbFFwVzIyR1Rta0l5VFp0bFRwRTBETnVLWG10UFUzTmtJV3lneVZOMW8zcWEwN0lDZ0t0c1o1NE9RSUVrS0Zicm1LdDBsazB3ako0cFFoRm90VDIrWGl6RytPeGJyUXRVWURYc3JWbXdobURiTzl1MWdhVnFqU25mWEJHR1V4M1kwckZSOEc4NUVNVlZUUkN0YVNyeWpPcXhoT05NQWJxamZjb2Y5TDNaUmJPa3lZMUxnL1RCcVc3TGZ4OWwxeW5ZdTYwT09ydG05U3Fhbkh1MWRyVlZtMktSWG9udklUdG1iNmNmRkpiU05yR0lxM2pYVDY2d251RWhwcER1ZFlId2Q3WUI5a1c5dHBvSk85dTVRc1BYZUw2dUJJSTlJSW9lak55aEFNc1VFT3diRnNIVzN2ZEpaZUVpUDZNVnVHdFVpQVhNZHpJbkFtZHA0NGRheDcvWFAveXI4b2ZyZjF6L0FINWFPR1FaTzNiTnhSSWRINXVYblJBVFBVaTlaVFhiaW1yekRjc1RkL1RkQWhKcXNsRVhNL0ZrRG5jaGRqdkt4c2s1WVo1RTAvMWM1L1RhT3N6dVNKTFFHc1E3R3kvNTNHM2xhbkR3VGJXSEFsY2ZpdTlSRnBiWmk1MHQzU2lCV0E1WHNFbGFpWlEvSEx5YUVpY1FJL0JPU01iVmI0OVJrdFZRTnNlY21UNUlaTStKYW0rWUp5TFdaTmlGZ1dCaXUzNGQ0N0pjblRBU1RkM09CVlhEVnp4Q2hwSlZodzBzUHFObkM4blBJRkQ5K0g1c25yTjdGU1QyWW9aVk90Z3pyM0pZeHkwbGRCcEI5OERaUVRoSHZZUDFFVjNMZFJNWitLa2R5ZG1FU0xtS3N6WGdudWd4akRvSGxGK0hlRUdRdWhNdWNMc1Z6L1REMTBXcVQ3SlBNSHVBd0d1czVqd2RpUytXalVxcjR5SGFGUFNEMVJCMjRYeTFJZ2tzY0pxMlh6dThJSnlZK2swLzFjbC8wcDZSY2VRNjJBVkx6d0YreTd5SmNud2lXOUJ0V1B5UURPcStBQ0V5dFczOTFqUUxqWm1Bdml4aWtsOU5XN1pzSDBDdVY4ZC9uZUZVTDFqK1RSdTkyTndQN28wOW1SMDdkYmIzWjR0MlJCU2pNNHZWWmMrWlJRRGxSZnpOY2RtUkJiV3hsZk8wUXJXZndYTklXZDRndnV4Y0VqRyszRVU5SkoxQzJ1enB0SEpLUWhTVkNNM2hkNkROdUtYWFp1ZkFBVnN1QUJUZTN4NU9JZ25zZGxxeGx4emdZRjFCMWJXSnhPYVZJYlUyQUYxbDhPbGNtMlVhSlhKOWRiUC83SDdDMEx1cEM5TU5UN2NzaE5XcDlzODlGZzRvS3IvS2ZnQ29oUGlyRVhtYkxkNG11clZpR3llZGFUbzlSYkpQZmZ3YTdtSDdEUEFNUzdGRVhyRTB6c2dSMU5NNE0xbGd5cmVqUkNwNFI2Z3dHV0hWeHZUOHVoTFdxaTJINkJ0SDNqaUpZbHJuaVpzY29wZ3l3WUtZTTYvMzdyemFnUWhPYXVHdXNQZXE4czltdys2MVNpVW8xUVFkdDN2ZW5HTWh5R0tVNFpFbWhBZmsrM0s0Ymt2ZExJalowYWJLOTV5THoyN3dOWXNMKy9QWURrRkRPUE8wOGxTZ2NrZlZSWWQ1UnV2ZFVLU1hjNGxRbEl1QWczaUFONXhDY1NzK1grZ0FTaGpMNmw0SktBcGZmNVRYd1lLakttM3kzRjloTmVQRk84Tzc3R3gweW9WRE5NdkhoVUFBOFBYRng4RW5wMk9BeW50UzhDd2lhMmRGcnlQdkhOWEczMUFUNE5GVzRrRHpsN3lPRURYVWsrYWtBdTV6NmhFOU1Oc3F5WTI2c3lpMXY5MGpWL3piN2hkRTJrM3NQKzJ1TmRtejIyNHo1T0tNS1FHUDZpMFFLa1E0TzBLU3M4S1NVeXpEWitIRU16ZEUxYXBTL2VWYWV6bXZBQ09Id3J5WkMyNFFFSEFBMTEyVzZlSmRrSEE3V2VQNEdYbGtTWHl3NnJiYUFFdVlRenNML2s0SkdTdHN4elFndm14UHNGdDYyV0J1M1M1MFZjaXFHeXJ3Z1diTjJYNndnZDR0Y1dCWDRCYjdKbVFEc0RkeDhTeHNzMTRkVS9DdU1GdVluSzNlanZjc3paWXZRTE56ZzQ3VU8zVWgraHdxRTdlRFo3OW5kcW1kL2JBdnErbXhISlFYL28vTG9wbzduMkZuZkpsSXMxak9YTFBJV3c1Mk5tK2gwcGxlbDFQZ0xJaCtvWUp3QXhUeCtJZ2NMd3AxT2F2RmdHRnl4aFBtWXBSNGkzWEphYU5seDVrMFo0Rlh5cGMrbWV4YWFTZFh4MzVVczNaYXA2TXlXOVdobG1uS2RVWUlXdEQ3aE0rSVlTUDQ4dEFjNVFIUHRuOG1CaWVEZkI2Nm5vNk1XdzZKcUYzT25IM3N4YzI0REI1cDNReU1aellIWGtBOVV3SVI3Wi90RjlxMm01NG1hbitDbG5xMk9tdm1sTTUwQndRa1N3Tk5SVzVIWGpvRXhnaEpSTEpSSFJvL2xhUTRMU1F4ZXJwUjdKREVlKzZHZkhxSks4RWFXT2szTjNSN0taOTlScWZrdnBqZnhEYlE1Tnk4UXordUZ1L3RkSmRLR0Z6TzdKQ2tUWWZ1ZVlScDI4YzBMWHlmWXR5SzJPR05xL09Nbks0UVBUNjR0ekhnc2dFU0lac3dZdFRnYTYvNXM3bVp5bkkwUy9VZEhRc1lzQkhUdVRTZEtCUk12endxRFhDVWlPSTBwR3RHdTBZdE9CMjNnOExFSFlkUnNNVU9RYW04dS9sS0xPekdnWkZLRUtCb0Nna0ttS0VoZXFIb2NGazhiTCtVZmdOTG05dEdNa2RMd1I2eGs5NnpoY05lUjdmdTB4NDVaeGpsSkRzQnUwUitzMmpYLzFOTHpvWml6MWZ6Y2hKejlBRGp6T09ESFNFRDBpTXZ6V001R2NCMlFQZ3UyNGNtNmhrYkNlZEllZGxsazA4K3RTY2tyWE8wVmhOQmJYOTcwVTdKWnY5eldvOGF2SlhOQmFBQ1g5N1hZaVNyZG8xVnRzVkFkWHJOWitvQUxrSkljbTdIZXJJdDdjWFpRZXhOaSt1endSQVBGbVd5bEE1Y2w5ZVpzTEFTZXdEZmdKazdiVGZFdFZuMU90NW8rbEl5dHZkalVmM0tZSUIxNVJDRmJuY0xoS2ZwMlVvRWk1blNpelZsdDZKeC93RmdLOUJuaTlqNE83SEtvKy9IVXZWNmNxM0JvY3IyY3hTMFBJamk0QmF1Nkp3cW9BR2l1ZE83bThxemhwMGRkdzRlRE14QlkzZzhrWStZMXEzT01qdG4vcWZIYzJGZVJETjk3L0RJTVRNaDBQbDR0ZmJyY2ZJSThxemVWZ0RjUVBISjg1ZzVLSTREYWY5aE1jdjErdzk4Tkc3MlJhVU9YQkRUN3k5YWg4dmJyUGVZYUhQSEI1VXpWVE9ZMzNRalVDL3d4TTlCQWFkZS91NE9oU1ZzT2hIcjZVNjdPK2RXMkFvQjFTUEhJeVN5d3dDeXJqZi9paTBKNW0vYkNRUmludkdvZTZ4cGV0S3FlWlRXWjh1djlBWEZEbE5BSEhZMWlEM3M5cHVBQ2ZsTTVRWHg2dVhzOGVkTU1ZQ1BEWUpSc2UrMW5sRTNkczF1YUY2QWtpVG5OY0JpYmlkeHZhNy9HYk5pbHNmeDErMUNONFRUQVdEblViUTljL3ZCWGd4Ym83ME5KMSt6U084dzdXTHhiSGV3WGlldW51b2FYQmYvMWZ1M3ZZZ09vYjJuazRzYzZmWFp4SXc5Z09kRmVFTXhES0NzT1JqcU0xTGIvUDBSOXdoNmpyN3plTFdqOHNxcEt0NzJvaUNXbkxsY0ZZTmdWbWdlVEZoYXRNNkFyaGJ3cCtic1EydUtBSURQQ3Z6KzFNdm84anFIcFhvVjFxSVVELzF3TmNjZGpYYkt5MkVPQ1lXeFBmTW1KaUFycHNXTm52VGZaN3ozR3k2bzJEK2hVUnBLMEw5cXloY3pRNzZKMEt6aEdXN1dYWW9KTzMzeDVzdUZjd1RWNC9nak8ybUtReVQzR1ZudC9Ebkl2UFV6VXVaaHZhUGRPWksvZ2JkT3EvOFFSUTV5UVdVVGw5MmtaZThFYTJuQ0RTOThBWExIMkVYVnBTMTA0VFF2VFJPYk1DTUgrVTVGcDNsNHEyYXV0d0hKQVd0SURyUkdGaGFiUkFoNnpsb3RIbHR1aHdFNHdvYVZjemoyN3pxVnc4WEJEbFByQldCRGRBMUZhUFNReWZxUUdSeU1MUTVYdU4xWURqRXVqb1NkaWRkdDFwUGRXNlp4UDVEVzUzYVk1cjZjRTF5Y2grYzBSTXpaMDVwd0wyQVNvcy9scERNdmRZR2Y2UnlSOGdjNCtUSU56bWRtUzdrSjdjOWp5YkNlYUhjcksycWdzcmtQaWNqMmVOdjhCSm9CQndubTlqd3VjSlpvNmRHUkhpd2dsTVVzdUk4RldaYW5lSTU2MHJ1WmJ6ZzFCRHEwQ3JSdFdwandPcGpOL0M0WEhkd1NJT1d4TkdRNjQ4R3BWK3VLRURJZnJZRzJRcEJPT3gybUpUdk5VWUxXdTZPM3krZVBjTUNpdUwyZCtDQWtMK2lDclVNRURKaC8rZGdrRHhDY3pTQmIzUGxSdkZzREFYME85WlNpT3NuNjdiY25xdG54VkIydVBaSmptMEdiWlkzeGhkcy9zMlFrcTdNV0ljVDNHZU5iWWNoNWIvbVBPMlcxbG1lUFZnN2REaE1KMDJFYmM4cDZJUmJsdVR3MmkwN0E0ejRyZk5SQmprR1ZINTB6YjlZZ3JRN3ZNVlVNdDBKRUo4aEY2aUNiOVNLSVRXaGJTZW1hTHAxSGRwQUt6emlxaCtqQkk4eHp5YnhOVWc0N1RNMlRkV3hFUGh5TXZnN1pjZFpuWEpDOWl3WE1HWDcwZHNmdG9UNlJNdWhhaDdvNUUrQUk0dGN5V0JhRG41bUpQS1YxRG5xNVh5c0VpcjBGblN1S1o3NEhSTFBZclUwZzlzaFhkK08zKzR5Q3c3SWtKd2NmNDJFcTB0TDBQVEUvYk9IQjJlWit5M1ZzYnVPMGh6SHg0YTNacnV4Z09FemJUbTNyNW0rVmRiS3MzK0lsNXpUQ1ZJN3NhTTdObm5uWndmSjVFalJPOWlLQVF3VFpEV0t4V2w5M3d1RmcvNGFkNWNGYXhETzQ3TU9PaWhWd3pzZzhSKy96cWkzcmp6Yk5nZFhSbW1SRWFZMm42UHVGU2pnblNmWVF6b21PZmVRWUJLTE1ydmt6d2M3Tzhad3Z4KzZmNGZZUEJFbmNlQ1ZLejZsV1RhWXJtMjJwY1RSTEVkQTkycXYxTWM1VXVDSGEyLzcyQlJzQkxCMTJBSzZJSHBQTHhyUGY1QnhjQjBiWmVCZnRGTEdVekVjQjVGZGV0VTMyRUJmTDNSeGZpYnE2QVBJVXJiNjAyVDZmS2RLUXZBQXZZNDN0NXEwMnljVjVZT3FnWFB1c0REV3I5VnFOOEpYOTYva2kySVRWVUQ3VVlWb1hvUFRuc2ozL2J0eUNqY1lqK1JxY3l6cU54eTRiZWVYam1NbmJVMldnNHhxS3Ivc2RVWDJLUUswMnJzZXlwN3gzRUorUkNDOWZRS3ZsNUIrUmZHM0huZHNSbEFhM1F3QUltVjFMSnZlZTR1aGxRa1JHNzd3SktaZnNDSzN6T1FmVVp5cW13ekJ0VjBxRU5MWVd1RnltZHFxalZzRHN3ajNzRXV3dE5sbm90Q0t6L1U2ZkhVc21ET2RlR29menMzZWQ1czZuZGFyN0RHUU1XMGxlaUxRK2djTlIyRnhvSFIwQWUrQ0lRTDZIU2NWNER4K1lFMlpla2FrWUZySUtzaWNMYkFaZ0c3VHRSTDdPSTRHc0JIcFEwUTZpOWpFUm5VaDRTbWxOOWNWZnFmeDdRdWVRRGk5NFZRbkVEb29NVHRYYWxTRERHdG5QQ29JUTBWbHNBN1dILzI4OVk1d3M0ZmxyNkhZaWMydFNBS0R3VEh6R0E5QXMxeW51dENvcCtjd0lUL0JSYmF1ZTJSWk9Jbko4cVZ4UG1udE9XSnhKamlKYkJWVnhqdUNRWnFpQ3k3WnJaMCtZUFlsT1JBeUVZUFNpRkx0MS9nVmN4emwzc1RYa09aTzRuTTFvbC9RWkxzUnJQTSsvd25RdUhJRENJanB1Ymx1SnZ6NUJ6Sjc2aEI2M05OS1pYTzhyNnh2ZFk0SmtkNUJKcStLMGJydDh0bU0vU25Xb3NNT0RNREUwNEhKaTNGMkR4NFhQOHJFdjV1OGR3dU5RTHRNUDNUNituS3hiQ2NOK2hpdkRiL09aaWV1QUdRZE9aUDJJRzk1bzFmYzhwTXFTcHRQYnJmSlRnQVlmS0dOdmt2T1J0MDhibVJmMjBXMXRzTFR5UytFcDQzYWM0bk82L1oxSXZ1MHdSN1hFNnV4aS9ObVNhZjYrN1FKODdHaVM1VGl1R0pia2RVckhpcE8yVGpzaFB0dXp0VTFXUEVWa3htc2prR2NzSHRhNHpLOWpwR0F4WERraFpWOVdoTFBRWTBoQ1FmWlluQzl2bnNsR0QwZW5UbzhOTFNzMmVMQ2d0aUVMRmtRUE1CcS9RazNFZEtFU0I5eDNPR0cvT3F6YmMrVTdPL1FNRW1wOW96TTVZWFZPN1FrZTNUa3NJVTRmSXdNOVpJTlptekhxWlJkZXQzNFpXVVUwSFFTYXgwSUFFQjFPakhrUjhmRkMzT1huK1ZVek5iT3dUbk0yZ2VUSTdHWGRuTlBQVnRXajkrMUo4bm1FVHNzZTFUVHNPWW1pcVp6Snp0MUNVamJFa2xsSWdoSnJubWRiRlFkTFhlTThtQ0crQ0NzNzNWczhQVTU5bnRIMEhpd0ZqKzNudVQwck42MkVocWNpcU9lcHNiRlhRV1JDaXd5dTNjZFZDSVBnekhTS2w5VVZoQS83alh5YUZWeDNueUZ4enVjYkV1RkRhZ2VDRWZScHhyS0xHTWNHMWVjOHhvVkZDNVpNcnMvMlVnTEhaOE5kUHNPYXNzWS9IT0FTcEp5OXJRY2RoYy9zY3hoNVdSVDlBbGtlakJJQzJGckhyZkxTUmNDUDh1VVd3bWtuVEU2T1YyRFk0Rk9ySmc2ZHJhZEg4Q3ZYcXhjL25nd0F6TTJuWFpTTnBHdnloR2FDZ3FCS1dKNHdsQk1VWHJNYVBsZkRNOTA1TGJua1hVdTVIQnkxYnQ0aG9JbWNRL1FZbWp4ckg1QWRic1daeUNVNUJzNEhqSG1VTzgvTWhtenJ1TWhrdytBTGh3VG1wSnJyZzFUcEgxODFUTE55TVNBZklZVHJObitFSllSMENvbzl3Zkt3YTV4blJ0Z3dOQ3FSRm5yaTBIbUhQVXJoY3YyaVUxb2NnMi9lSHZObiszQmNaektrZFVveFhnTGtaaGNNbE9xNE0wejc0azFaTTBjcVA3YUdtdlpYZ0htNHBFTngwMzA1VGVGaytlNHpzdlI5YlNnYlUvVk9qRWRzRnd3eTN6YTJuMmVaZk9ZWjRKdXc1bUJ2RzA3eFJNZjdRMnhZUkNkZVdwd1JnOGZqenVEMEVTTFRtOE1qcndvdGRFaGxRK1pEZjE1UFU2RWh6WW5oMzJtRWRjS01GZDNiaWdVbnA4WDcxTkYvdGpsTE0xZ09wQ2pVYUp1SFJIUi9aMDQzR0dDM3lMZjluOG5RblJFTUhpNmZLdjc5eVVCQXRNVUYzMWE0cWJxTGJJUzFVN3R2SE1YaVYrZE9PdExENmhOWUtpRS96dURKT0QrTk1qWjdQczlQMTgvSUgyd0VzTCtjWWdTWHh0aWpFOEVzTlR3dHpxOEEvZDIyeHovMkNIVDJ4T1lXSkNPT0MyRUdYKzQvcXNhSi9RN2JRUUJab1ljR3VsV3UxZW92ck5FNXJ0c3BSNThZYk1VTDdLQTZvL2g5NjVscnVUQk0xTllHTjg4QW5EdGdBOEZobVFqTjZTRG9CZVpEQkxPUEJiRGpIRUx3VmQ1Y2ZZbU90cFVDVFFJMzJtZEkwaGZTWlcxdlA0L1ZJYXBEeGw2azludkxBQk9vS2ZLdU03TkNQTENqdnlLMVJPcWViYzk0N0FoU3Q5L1h1TzJVS0krak1ud0NEalF1Mis0RVBLbFdOTnRuMnZJeXZFa3ZkcVRFcFE0Tmp0MDd6LzBnNE5qQ01CMitEblREbUJEMFRzZjNJVkJ6Z052UTYvWXpobE5hcnJwU2xVR2Z1K2ZGelFIRjg4VWc0OGV0b1dBOGdCL3dNenZNYXpuVi9BN3d0cXJxN3M2VWVuMTJoRjFRdk5kdElWcFlCTWtKMDZzRlRNUlJMN080bGhVMnM4Q0IySFlHYUVxd1QvWGZhWUh5Y01peCtYMzRrTUpNSkIwT25MYzQwclpyS2ZnSHJYRldnNmpOKy91NEhNVDY0Yy9iS0dlV0RRSmpnWXhqNzUwNmhpZ2tERm5GQTRLbWVWdDVERmU4UUJZWTlMZDZJTTVqOEhiVHpQRU4wNjBkOHdVb1BYRWtmaTBQUFFpa1FQN3kyUWpzMm16Qi9GVktsbnZZSHg1OE9BOXMzUHlTVFVmdVI4RjFMQTgzQ1ZpNE13ZEwzMjl3WXBXeDNqNituL0tvYXVNcHJOYnVzbjZlOFRNT2hYWFdQUXI5Y1FkOUxCRHMwVWtuWnBudDA0QTlxS3pZNG9uYThhelRxZGQ1WHM0dzdhYXpRSXdrRkNEcEFCQWd3cm1jcitjMHNwWFp6SXRtdUJzUm9Eb1VHZzJmNURhbllkRTVFZEZJTG1xZGd2Qm1kdER4ZE1OWDFXb052UTl1RVFpYmRhREpQRFhyTFVMYi9EREhlU2JhZXcxand1TmtmdmppeWF0YnRHZEJ1UFhEeU5IN1Y1bmM1OEQrNFBTMUJ3TDVGb2poNlpFNVU3UXh5TjVmSDVQblU4aFlUWjhRVWN5ckJ5S29UZFlCSCs0UHdZbkk1cU1lc3pPeWJTYTFOc3BzTVNDVG5NZCtmVUt5VTM1OElwVVBFd2lPa3JXYi9OVGhZMUNGTlZiazJGUHNPQjNFckpWcWIvSTVLcGFQeUt6TE5aMUFjMG9kbzQ5dXlFRlF4cThRQ2ZlWnhEekVUWjlUMXFXekRuVGNIcUM5ZkZyMGpNMG42T3dGclFsT0RTdjJmU1ZyVnNycGhNVkpVTmRueUNDWTBJRk1JOTZRMkp3ODNqN1BsNHlPV0s4UmVmTEJJWi93dFh4U0hqYVVtK29aNzdRckpXUHhYRTV4VUN3SzFBZXNiS09TVGZHT2ZQbTZSUG5NZ2NWNnpOVVN3eTJzSGlYYU8wdjRTSU1YT2VRU05EeEowdFA0ZmFiYXFmRmgvc3RhSkFJQ3YvWTRienQ5VnhZcEpGVU8wWFl1VHpxNS9ua291L0hBMU94SkxIdjJ2SjIwQjdOcDVyUEdNdkJ4WHl4Rmd2b3REdzZYQitqRmJzKzUrbGlPM0xmUUdlZElwK3Jlc3JHNTd1amMzWTNkT3NZZlkrL2V2b08xNzh2QkVuZXlCQU1pNUVBUjliUWRMdU8wY3ltOXp6UlZyTXNEVHNOZ1JtNTZHL2JRbUNZN1FZUEZ2c0VXM3B3TEpGWjlUa2FXSWpoenhFZnZRV0tjQXUvNGNYalZOZ2ZwV1NGclhXZEJxdnVBaDRvZFh3ZzZmb1hQNVBxd0creG9Cbno2dElSYnRNOGlPYVNwT2ZmVXNibU9rbmpPdUl6cHVmQWN5cmZ3NXNzUnJ5eUpGUFBYczlNd3lHa1R1TTg2ZVRFK1lOYjV6NDRyOGZ6RWRvVFB5QXY0UFU1WG1WMTI0T2dDcTNkdU1MbkliQ3RvKzhnRkFGbWsxRHF6bzN6b25PeUxCZVJtcGFNZVJjRkp6VDZaUHZ1ZWk0MW5TNTdYR3UzZ3VZL1RXUUJUS0hlRlY2OXRUWmtIK3lvbWkyek9jOXVlSGNiblF4LzBGeCtPMWEvM1RDaTExTWhPWUdJSHJMSDdiQ2Vyc3RsREo4ZFZKK2g2ek9mRFBSd2xrcDA1V253S1RQSXVUZDFjSTdwWHp6UHlUNWxlTmx3NjNnSkc5cUFDbEhDUExmdFFpczhDaGpQUHp3NDU2MUVjVnBsZlIvWmUySWxQbllPYXhBd244M2daY0lnb0MvVDZ5VnFEYlBZOG5LZGR6V292K3NOS0I0UFI4L2o0Rnk1cytyQTdhM0Y4b3BaMW15bWNaRngwM051cHQvWXhkUDB0VUg2ODlSMW5XcFdITnV3S011V1IwUU1ITTY3cnUwLzVLZnZ6aFZWT1Z0L1NONURVSjhRNVVNYUhQVmhxTk15VW1PcUx4QitXbVkvM3NZY0llN2EyWFk2WGRpaWliVzQ0Njg5TVpHd2F4dnU1SnlPY3h6anNiZi9UWTE3Zk1qdWJDeUNiem1tNG13ZWI0enFSTy9sWVllaHc4ckdQeTlRdzZINnlzZHNIMStLMjU3QTIyaFpqaDJVeGt4TjloQThNRVplRStEcHJiTmtza2FNUDgrMCtvYzdSVEVmd0xpdkdpSVJlQ25iaDhZSHN2cHN5Y0p3NkVJc2Y1VlBTYzVsV1VMZjZZTHZuSEdEWWVLMGNSSjdBVHg3aUJjeUwzZlJKSXc0L3hQTTlLWDBqN2xyc3V6bG5sbGREeXZpSWhlYzJMWTI1ZlBGTUJ3L0xUcjVnZllSVGh3ZzJ4QWUyMnRrRTZPemhVK0hXY3Y2NG8rUzBvMjFmb01tamU1eEhlNWJ3Rkorck1RRmx4MWg5QkhNZit1UmpIR0JSK2Rlb3FmdjB6NWlZUFg0TUhqa1N4L05xV0dVajJHMkhERHJnS3hOcFlYSGRacFhpUTVrTHVPQ2NzbWJ3UlFJYVh5eXo4RFBmZW9tODZWYy9JNHJxdGF3Zk5lcTBVajJBM2JJNHgwYzMyYm5zUTE3c1FEMVB1YktwR05zdzd6ejJSYlNZUmhXSG5wcXQ0cmN0bXlaOEVvQW14QmI1WnJxYmtCM25NeDViYVh3aXhPY2pIaDNEaVRwc0Z1Z0NsczJ1TXF0d3k3YlNCRG4zc0RoOEVnQlB3UGhUVHlQQjVQbmRuVjdGRXZ2L2VaOHhoN045N0NLTVNDR2ZBRnNKUmg2Ym5UR3JZenE1UFh1c1daMkNHSWZQZDRJRi9yM2hrZFc0dGtkNFBuN3JrWUdicUhMZUVPOEM2ekJZRTJuRVRaT2dUanFSUVRzSUNYZUsyZWVjZHNjNnhMYXVVMVdyQlppdE9nUGJhMjFPRi9TUXp2RzNWa3hndVh0R0I1V2RweUNkVnY3dVdDWVRVeUxzZUM0SFdGcnRZTXRLZEFvUWlzUUo2K056TkN2WThaeVJLdzQ4eFFDaGE4Z2NPS05aVkN1S2drOHBmWHpDUUZYS3J2QTVFOThPMmV6akI2cjl2aWpmNVROL0crSzFPUHk2TzhvU1VuSTdHcjlEZTdGOEkrRHNubVdqOVQyZnh5aUxISW9GZ0krNjhKNTc0U3hPM2E3TDU4UDRiSjBBL3IzcXBTUkIvRXp4ZVJxUmZRSVR4aGlBVnBqRm1EN2NiSnUyOVJqZmt2MHpYdTA3QngrTzV4QytmVzVXUHVtb2Vjb1lFVjhBY3J2MlBMTk1rR2Z3UlZaS1VNU0pzeVVpSGpIRzE5bUhxVHUrM3g2VEhzNnpTYUJld0lmRCtvb1BkQTcySEgrVnV4eldKOW1wQnV0M2pIeTJyUXpGM0Nyb2FtSWZtTHVkTU1DTlFkUnNyL0E1ajVzM3cyQlp2ZXZNQVNrL2xjU09MRHpQSjRXT0wrTkdzUmx5cUR6ZlhqMjFEejQyT1B0b2ljZmtjYlNtZkoyejI0dWxIbzdFNWlxUWloYWtUeCtUR3BEZU16MUMyVWY0ekIzMTVmTlVMUFc1MitOanFaOTcrMXluWUJIVTR5TlRuVFJ6cGplaWMzMEdlZmw1eHRncEgvTEpBc1FZNDd3ZGFXQ1ZBNEpXY1RUcE1OM3R3VFQvc211N1Y4KysrQzdyQURrRTl4N0hDVmh3OG5wZzdJT3BIWFhvOHhwOXFPT3AvdkZoeUw0WWszN1UwOUZCa3piSDNhZ0RCeHV3V3QyNE9rYTFOV0FsajBJUkZENnphWllHZVhyaU9jQzNXSi9scmN1V3UrODg3YXlmcnY3aGdhWGo4cHkrVnlKbWQ1cUhJYzJXcmpqTXdHTWdLQmZVMk5vOHkrVXIwdmkrY1Z1ajgrVjRnMjBCazArc3c0WTlodVhDaVVHT1RYZnFHcFRaSnlGNStqNWZuN3NtZjl2MjR6cXgvd1Q0dXVwVlBISWdOSGdXNUlGdVA3TTl2b1JMZmRWSEQ4R0lBZmZzQWNSOUd2ZVREMEFiQmRtSEEzeVBlZUVYTGRLR200cjdvWjdQWEVmOEJDSnZuUnF2OXhtTlZ0MUdIdzU5aHAxakg4UnRLMVVzaTJGbGZZYnRERDZwd256N3poSEVjNXp6cnFkUURCYW1oU3pwNTVuelphc1p2b0U1TGduazRaVEpzMXZsZkVuVGNYenoxSmRFSDV4bWtpRHlCcTlEOHJGamJJY0ZsL0xPeGZXYmc3UW15aEhXRHdTQno3NC9icWY3bkdPczZ2VTB3UWZOQVJuT3JMdHQ1YWhxNi9jOHhXUGVPVG5jczBXVGZGWXIzUjRwcHpPZ1R6ekJSeTZybkFDRTg4eTBKdzJXTXFtbmkrTjliYWF4ZThDR2ZvbUN3d0xzL2ZnOGV6WVZQQnhrcml0YWdXQ1RnZ2N6UFR2RTM0ZHVKcCtpbUIyd2RTcjFYMnZaQUVGajZEZUF6V0theElkd1B6QTN1M2tpb3VNNkQxSktYNXFlZk10S3VkSmxocHRvMkgxTXdadWR0d1hFcXVlYzh3dWFzV09BckdPKzY3UWppK1crUGg5Lys0cVRGaVcwRGlCNlNOS0cwL2h0ejBXNHdwaTJSbDgzdTVFUzhnUGR5Zlo0UG9pUkdidmlaYm1sTllhV2ZGb2xpTEJZcGpTZmQzWUY0T3VFRkx1WDF2REp1MnZZOHUyRDZ0LzJaV1FJZHU1VW0zd1ZDOVc2YytSdDhiUFpHbWRqeVozWXhCcmJNWHRiN3ZuNkNIRWN3L1A1NnBBVmJLbFpPa0M0NUlyUzlWa01kZHVVWjhORXNOM2t0a04zd2JibDdHQnBRd0MybmcwK25vbzQ4amlhcjhkajdMVUFadjhQUFBmdkVhNk8wVTRBQUFHRGFVTkRVRWxEUXlCd2NtOW1hV3hsQUFCNG5IMlJQVWpEUUJ6RlgxT2xvaFVGTzRnNFpLaE9Ga1JGSExVS1JhZ1Fhb1ZXSFV3dS9ZSW1EVW1LaTZQZ1duRHdZN0hxNE9Lc3E0T3JJQWgrZ0RnNU9pbTZTSW4vU3dvdFlqdzQ3c2U3ZTQrN2Q0QlFMelBONmhnSE5OMDJVNG00bU1tdWlxRlhoQ0NnSHowSXlNd3k1aVFwQ2QveGRZOEFYKzlpUE12LzNKK2pWODFaREFpSXhMUE1NRzNpRGVMcFRkdmd2RThjWVVWWkpUNG5IalBwZ3NTUFhGYzhmdU5jY0ZuZ21SRXpuWm9uamhDTGhUWlcycGdWVFkxNGlqaXFhanJsQ3htUFZjNWJuTFZ5bFRYdnlWOFl6dWtyeTF5bk9Zd0VGckVFQ1NJVVZGRkNHVFppdE9xa1dFalJmdHpIUCtUNkpYSXA1Q3FCa1dNQkZXaVFYVC80SC96dTFzcFBUbmhKNFRqUStlSTRIeU5BYUJkbzFCem4rOWh4R2lkQThCbTQwbHYrU2gyWStTUzkxdEtpUjBEZk5uQngzZEtVUGVCeUJ4aDhNbVJUZHFVZ1RTR2ZCOTdQNkp1eXdNQXQwTDNtOWRiY3gra0RrS2F1a2pmQXdTRXdXcURzZFo5M2Q3WDM5dStaWm44L3hydHlZdkRSZkc4QUFBQUdZa3RIUkFEL0FQOEEvNkM5cDVNQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUFIZEVsTlJRZmtCd0lSRWcrc2gwT3FBQUFnQUVsRVFWUjQydXhkZDNnVTFkNSt6MnpMcHZlRWtJUmlDQzBRYWdoZE9xR0lOQkZFVWNFR0lvSUZwUGhodVY3QWNtM1gzcEFyS2dvaUlDQWl2WWwwRWtwQ1NPOWxlNXZabWZQOXNUdkQ3R1pEVVVUVS9UM1BQSnZkemN5ZU9YUG1uZmZYQ2FVVWZ2bnRZclBaVUY1ZWp1cnFhdFRXMWtLbjAwR3YxOE5rTXNGc05zTmlzY0JtczhGbXM4SGhjTURoY0lCbFdiQXNDNDdqd0hFY25FNm50UEU4TDczeVBBOUJFT1IvRTBFUUlOOG9wZUlyb1pSQzNBQVE3MWNBb0pRUzk5Q2xWNi9QU0Y1ZVhseFVWRlFUalVZVHAxQW80aGlHaVdFWUpvb1FFZ2tnQWtBb0lTUVVRQkNBUUFCYUFHcjNwZ0RBdUk4bkFPQUJzTzdOQnNBS3dFSXBOUUl3VWtyMWxOSjZTbWtkei9PMUhNZFYyZTMyNm9xS2lvcjA5UFJxOTNHb2JHdnduaERpL1ozNEdRQlFRa2lEVjlsR0dZWUJJUVFNdzBBUUJLalZhakFNQTRaaHFFS2hnRUtoQU1Nd0VQOVdLcFhTcTdpcFZDcW9WQ3FvMVdxbzFXcG9OQnBvTkJwb3RWcG90Vm9FQlFVaE9EZ1lJU0VoQ0E4UFIwUkVCS0tqb3hFYkc0dUVoQVJvdFZyL3pYUWRoZmlCN2JjSnk3SW9MeTlIWldVbGFtdHJVVjlmRDcxZUQ2UFJLQUdhMVdxRjNXNkgzVzYvSXFESndVeStDWUpBUklEekFqTVBJQlBCU1E1UzNvQWxmMTlkWFowYUhCeWNvbFFxYjJFWXBpVWhwRGtocEJtQVpnQUNicEpwdGdNb3BwUVdDWUpReVBOOEFjdXlGM1U2WFg2elpzMHVlQUVjdlF6Z05RQkFFZmdJSVI1QVJ5bWxTcVZTQkRZSjBPUWdKOS9rNE5ZWXdBVUVCQ0FnSUFDQmdZRVN3SVdHaGlJOFBCeVJrWkdJam81R2ZIdzhFaElTb0Zhci9UZVhIOWorSENrcEtVRmxaU1ZxYW1wUVYxY0huVTRIbzlFSWs4a2tBWnJOWnJzc29IRWNKN0V6YjFEekJXWWlLeE9CVGJ4MlBvRE00MzFlWGw1c1FrSkNCNVZLMVVHaFVMUW5oTFFIMEJhQTVxOThEWGllZDVTV2xwNU5Ta282NDNRNno5aHN0cHpjM055Y0hqMTYxTHFab2h6VUJEZFQ4MkIyM2tBbkFwc0lhQ0tidXhMSWlhQ21VQ2lnVXFrdUMzQmFyVllDdUpDUUVJU0doaUlpSWdKUlVWR0lpWWxCZkh3OGtwS1MvRGVaSDlodW5GUlZWVFZRT3cwR2c2UjJ5Z0hOYnJjM0FMUXJzRFFpcXAxZWdFWWFZV1VOR05uRWlSTVZIMzMwVWZlQWdJQnVDb1dpS3lHa0M0RFV2K08xNEhrZXBhV2xhTmFzbWZkWGVZSWdIT000N3JqUmFEeDJ4eDEzSE51OWU3Y2dBenNKOUFnaGdqZWpjd05iQXpiSE1BejFBWEJRS0JUMFN1eE5EbkFpZXhNQlRsUlB3OExDR3FpbmNYRngvcHZPRDJ4L25CZ01CcFNWbFVrc3paZmE2Y3VPeG5FY1dKYVZHSm9QT3hxUjI5RjhNRFBpdzE0bXNqTHl4Qk5QS0pZdVhkcEhvOUgwWkJpbUZ5R2tKNERnZjhJMXVReXdlWXVaVW5ySTZYUWVNcGxNaDJmT25IbG96Wm8xVGg5QUo0akE1Z1kwNnNNdVI3MlpuSmY5alhyYjMwUUdwMWFySllCcnpQNG1WMDlGOXRhMGFWT0VoWVg1YjBJL3NGMC80VGdPSlNVbEhpeE5yOWRMTE8xcTdHaStuQU1pb0hteE0wbk5sREV5eUlHTVVzclUxOWUzQ3c0T3ZsV2hVUFFqaFBRSDhJOWM5ZGNBYkEyZVU0SWc3T1U0Ymw5VlZkVys1czJibjNPRFd3TldKMmQwSW51VC95MDZHT1FnSndKY1k4NkZLOW5mUlBZV0hoN3V3ZDZTa3BLZ1VxbjhONlVmMkg2ZlZGWldvclMwdElGelFLNTJpcUFtc2pTUm9WMHRvUEU4TDZtWmdpQTBDbVpXcTNXQVdxMGV6RERNWUFBZC9GZm5kd0didDJRN25jNGRScU54VjNSMDlENjR2TGlDTjlnMUJuSU13MGpxcWtLaG9GY0xjQ0tERTltYkNHNXk5ZFRidVpDWW1JajQrSGoveGZjRDI3V0x4V0pCY1hFeHlzdkxVVlZWNWRNNWNLWHdEUysxazNnNUJ1VHNqSGd4TkFuTWJEWmJsbHF0emlLRVpBRm82cjh5TjBUS2VKNy8wV1F5YlkrTWpOeU9TK0VxUGtGT3BxNTZxS29paS9QeW9OSXJzVGR2OWRUYnVSQVhGNGVFaEFRa0p5Y2pLQ2pJZjdYOHdIWjFVbEpTSXJFMHVTM05sM1BBMjVibWc2VmRDZENJdDgzTVlyRU0xR2cwdHhGQ1J2bkI3S1lBdVMxNnZYNUxURXlNeU9ROFFNNmJ4Y2xBcmxHQVV5cVZqUUtjbkwxNU94ZThiVytKaVlsKzc2a2YyQzR2SnBNSlJVVkZLQ3NyODJCcEJvUEJJeWJ0S29Oc2lhaDZpdXJtWmRnWm85UHAwb0tEZzhjeURITTdnSGIrSlhsVHlsbVdaVGVXbDVkdmJ0bXk1Umtad1BFeWtLT3kxd1lzVHE2bXVvR05YazF3cnp6MlRmU2NpdXl0YWRPbWFOYXNHVUpDUXZ4WHlBOXNEVm1hNkNEdzVmRnNMSVJEQkRWZmdDYlBFcEFEbWdobW16WnRDaGc4ZVBCRXBWSTVnUkF5ekw4TS96b2lDTUkycTlXNjRhMjMzdHE0YU5FaUd3Q25IT1JrTEU0UTJadTNtdW9WSHVJQmNDSzROUllhNHUwNUZSMExmdmJtQnpZQWdOVnFSVUZCUVFNSGdjalN6R2F6WkV1N1F1YkE1UUNOeU5WT3ZWN2ZJU2dvYUJMRE1KTUErRmZpWC95WnlISGMycEtTa3ZVcEtTbG5aYW9xNzYycXlnQ09YZ25nTGhmWXE5VnFFUndjTExFM2I4ZENpeFl0RUJnWTZMOHkvMVJncTZpb2tGVFA2dXBxRHdmQmxlTFNaS0RtRTlEY0FiVWU2cWJWYXMxU3E5V1RDU0VUL1V2dWI4bmkxdW4xK3JYUjBkRTczQXhPRG5DOEx6VlZGaWJTQU9BYXM3MzVpbnNUVmRQWTJGaEpOVzNTcE1rLy9wb28vMGtueS9NODh2UHpVVnhjaklxS0Npa2x5bUF3d0dnMHdtS3hTS0RtY0RoOFpnK0lnQ2F6by9rRXRMdnZ2bHZ4MFVjZjNhMVVLdThHME1kLysvOTloV0dZY1pHUmtlTjRudDl2c1ZpK0hqeDQ4TnJEaHc4N1JaQ2psRGJ3clBJOFR3VkJvR0xpUGMvelZCNFM1SFE2cVR4Y1NOUVE1S1lROGFFclBvU3RWaXZNWmpOTUpoTnV1ZVVXS0JTS2Z5NWpLeXdzL0VlY3FORm85QWxvb3NkVHJuWmV6bzdtUytXVXNUT3lhZE9ta05hdFc5K3JVQ2ltd1I5ejlvOFVTbW0ydytINGN2MzY5V3NXTEZoZ0pJVHdNaWJYUUUyVnNUaHZCbmRaKzV0Y1BSVURlOFdjMHlaTm1pQTVPUm1ob2FIL1RHRGpPTzV2ZjVKbFpXVW9MQ3lVdko1aUJvRzM2dGxZR0llWDJrbGthVThTcUdWblowZTBiTm55Zm9WQ2NUK0FGUC90N1JjQStYYTdmZFdtVFp1K25qSmxpczVMVGVYZDRDYXBxTzVnWHlyUFFmVldUMzJGaFhpblpFVkhSMHRlMCtiTm02TnAwMzllNU5EZjJzWkdLVVZ1Ymk2S2lvcWtnTnZMZVQyOU13Z2FVVHRGTHlkREtTVW5UNTRNYmR1MjdReUZRakVEd0MzK2U5a3ZQdVNpeldiNy9LdXZ2dnB5K3ZUcGhzc0JIQ0ZFa0NYZGUyY3VVRjhaQzQxNVRjV0EzbWJObWlFMU5SWHViQWsvc1AyVnhXUXk0Y0tGQzVMNldWMWRMWGs5NVFHM2plUjVFdTlVS0M5UEo3Tmt5UkxGa2lWTEhsUW9GQS9DSDMvbWw2dDcwSjYxV3Ewcjc3ampqdFZidG14aDNRQW5xYWd5Z0JQa0hsVHYxQ3lWU2tVYnl6ZVZxNldSa1pHSWpZMlYxTktVbEpSL1RNemIzeExZcXFxcWtKK2ZqNUtTRWxSVVZEUUk1ZkJPWHBmYjFMeFltb2RqUVBSeTJ1MzJPMVVxMVNNQWV2aHZWNy84Qm9BN2JEUWFQd3NQRDk5SUNPRzhBTTZid1ZGWkJnUDFabS9lTVcvZUFiMWlTRWlUSmsyUWxKU0VXMjY1NVI5UkR1bHY1eFV0TEN6RXhZc1hQZUxUNUxtZTNzbnJjcFltT2dya2FxZk1qc1pZcmRhQmFyVjZwanZseVM5KytXMXNncENNc0xDd0RKN25SMVZYVjMvV3BFbVRBM0tBOC9haThqeFAzUUpCRUtoWC9UN3hQWHg1VVVXeml1aEZ0ZHZ0c05sc2FONjh1Ui9ZL2lyMnRQUG56K1BpeFl1Tk9na3VVOW0yQVV1VHE1MzE5Zldwb2FHaHN3Z2hEL3R2Uzc5Y0wyRVlaa1I4ZlB3SWxtVS95c25KK2J4ejU4NzVNb0FUdzBSNEFJSWdDSUxZMzhLOVVURmxUdzV1M2lBbk9zQzh3YzF1dDZOMTY5Wi9XN3ZiM3dMWWJEWWJ6cDgvNytINWxNZW5OV1pQODJacGJsQ1QxTTU3NzcxWDhjRUhIOHhXS0JTUEFVajAzNHArK1NORXBWTE42TlNwVTViRllubS9iOSsrbng4L2Zwd0Z3TG5aR3lPcXFKUlNxUmltMjRGRjVjVVZ2QUhPdTFxekhPQllscFhBN2UvWVNPWXZEMnc2blE2NXVia29MQ3lVQ2tMS3EzTDRLZ2JwZm9ySlFVM08waGhLS2JGYXJVTTFHczNqQUFiNWJ6Mi8zQUJwR2hnWStQeXZ2LzQ2b0xxNitxTW1UWnJzSllTd012V1U0RkpPS3ZWaWNIS0FvNzZhQXZsU1Q4VW9nTlRVVkVSRVJQaUI3V2FScXFvcWozQU9NWW5kVjRWYldTZ0hFZW01RDViR2xKYVd4c2ZGeFQzT01NeGMvNzNtbHo5QlBSMFFIeDgvd09Gdy9IZkhqaDJmWm1WbFZiclZVMFlPY0s0SzVrUm9qTDNKVkZWY2pacWFtcHI2dDNJcS9HV0JyYVNrQkhsNWVTZ3FLcExDT2VUTlZYdzVDYnhaR3MvemNwYkcyTzMyQ1NxVmFtN3B1ZU5keXgzQnlFaHZkVk9kYzMxOVBXcHJhNUdhbXVwSGdMK0E2UFY2Yk5xMENRNkhBNE1HRGJvbWc3MWFyWjQxYk5pd1huVjFkZTlIUlVWdElZUW8zT29wSjdPOUVibjlUUTV3TE1zU2xtVWJ0YjE1TXppTzQxQlRVd096MlF3QWlJaUlRT3ZXclg4MzhTZ29LQUFBeE1mSFg5WDVWMVJVd09Gdy9HN25CdFBvTjZ3ZW55eDdFb1A3WnlJanN6OGVXZmdxeWt6T20yTEI1T2ZuNDh5Wk14NXhhcGZZbWc3RkY4N2cySkZma1oyZGc4TGlNbGhzZGpnY0RpSUNuRHMxaWdpQ3dBaUNvS2lzckV4Mk9wMnZxVlNxL3dIb3V2by84M0RQd25kdWluTTlmUGd3M256elRRREFrU05IOE5wcnIvMnBZL2c5d25FY0JnMGFCSVBCOEtlTjRYckwyYk5uWWJmYkczenVkRG94WWNJRUZCVVZJVEF3RUZhcjlacVBUUWpwSEJrWitSN0xzb3QzN05qUmpGSWFRQ25Wd05XWVdrVXBWVkJLRllJZ0tBUkJZSGllSjA2bms3QXNDNVBKQktQUlNFUXZxRHlQMUdBd1NGV2lLeW9xVUZ4Y2pBc1hMdURRb1VQNCtPT1A4ZmJiYi8vbWRmYlNTeS9oekprekFJQ0NnZ0tzVzdjT0sxYXN3S3BWcTY1cVBXelpzc1huLzE3cmVtZ1UyTFo5OEN4ZS9IUTNSazUvQnYrMzREN2svZmdlSG5uMjR6OTlJWjA3ZHc1bno1NUZmbjYrUjdWYmthMVZGZWNodjZRYXlzQlFoQVFIZ0hOWVNIMjlub2lNemMzVWlDQUlJa3NiRngwZC9SVWhaT2JOK05ULzhzc3ZrWkdSOGJjWWcwcWx3dnZ2di8rYnVpN2REUFBnUytiTW1ZT1NrcElHbitmbDVZRVFna1dMRm1IeTVNbG8xNjdkNzVtM0IvcjM3Ly9mRXlkT1pBSFF3dFVUVmdRM3BSdmdHQkhjM0wwMENNL3pjRGdjeEc2M0V4SGNMQllMVENZVFRwNDhpWUtDQXRUVTFFajlQVmlXeFpneFl6Qnc0TURmTkU2VHlZVGR1M2VqVFpzMkFJRE16RXlzV0xFQ3Q5MTIydzFmRDQwQ1cxRlJFVWhFYzB5Wk5BWWpiNzhYTHk5L0VjTzZKTUVKUUY5NEZIUHZuNENNakV6Y052a2g3RDVYQlFBNHV2NU5ETSs2RjNrMkFIRGl4WWRHNHVGbFg3cDUrVWxNeWhxT2Q3L1lpRGxUYjBkbVJpWSsyMTNvWW1DSHZzYzk0NFlpSTZNWHBqNzZIUEpySFNKdHhOWlBsbVAwZ0w3STdEc1lEeTU0QmFmUG5VTkJRWUhVRHMrN0owRkZlVFhBcUJBYUZBQ1ZXa3ZVU2dXbzRIU0JtdE5KT0k1bG5FNG4wMlBBaVBCdjlwMTVRYVZTZlFtZzI0RnYzOFR3L3IwdzhMWjdjTGpRSktldUhtTlk4dVlhT0c3UVRXTTBHbkgyN0ZuMDZIRXBEdGhxdFdMZXZIbm8zNzgvSG52c01UZ2NydEdZeldZODlkUlRHRHAwS0NaTm1vUlRwMDRCQUw3NDRnczgrdWlqR0RCZ0FCWXZYb3lzckN6TW1UTkhiTHFNdFd2WFl1VElrY2pLeXZMNXBQUTFobDkrK1FYang0L0g0TUdEc1dUSkV0aHNOZ0JBYlcwdFpzK2VqYXlzTEl3ZlB4Ni8vUEtMdE05ZGQ5MkZrU05IWXM2Y09aSzZJOHFubjM2SzRjT0hZOGlRSVhqdHRkZmdIVFR1UFlidnYvOGU3NzMzbnZUOTZkT25zV0RCQW9rcExWdTJERU9IRHNYWXNXT2xNWmpOWmt5ZlBoMnZ2LzQ2aGd3Wmdva1RKNktvcUFnQThNSUxMMkQvL3YzUzhWYXZYbzNWcTFkZjl0cnMyYk1IRXlkT1JHbHBLZWJPbll1SkV5ZGk1ODZkQUlDbm4zNGFUenp4QkNvcUtqQng0a1JNbkRnUkxNdGU5bmpyMTYvSDY2Ky9qaGt6WnFCZnYzNVl1blNwTkEvTGx5L0hxRkdqdWl4Y3VQQ0RYYnQyemYzd3d3K2pLYVVCQURTVVVoV2xWQ2tJZ3BMbmVVYmMzTUJHREFZRGFtdHJVVnRiUzJ3MkczUTZIVTZmUGcyajBZanM3R3hzMjdZTlI0OGVSV1ZsSmNyS3lsQlFVSURpNG1MVTFkVkp2NStYbDRkNzdya0hnaUJJNDUwOWV6YU9IajNxY1E0Yk4yN0VxRkdqd0RETUZkZjI1ZGJEdVhQbk1HSENCQXdZTUFDZmZ2cnBGZGZraFFzWE1IUG1URHp3d0FQbzM3OC9GaTVjQ01oMGM0K3Q4c1FHOUdqZkVwMTZqY0RTVjk3QjZSTFhpVkxlZ0Zrak9xSDdzR240YnRONnpKcHdLMXIzbUlBU084V3VqK2VqUllzK09HbW1vSlRESTROU01HejJXNjc5cXZlaFM0c1dhTm02RTJiTW00OUY4NS9FM253eitMb1RHTkMrSlVZLytDdzJyRitOMFQzYll0VGpybjFPckZ1R2xpM2FZdjdySy9ISzBqbElpb2xDMXJRbk1ILytmRXlmUGgzanhvM0Q0TUdEa1ptWmlZNGRPeUkxTlJVYUJRRlJhaEFaR1VsQ1FrS0lWcXNsYXJXYVVTcVZDdUt5S2FwWHJmbDI4T0lIUi8vWXNtMGZlcXlhbzQ3U1BiUnJTZ3M2OXFHbGRQM2FsWFJZdDFUYWVzVGpsRkpLVDZ4YlJsdTJhRXVmZWV0L2RPMm5LMmlubEpaMDJib1Q5RWJJcWxXcjZOdHZ2eTI5Ly9ISEgybi8vdjFwV1ZrWmRUZ2M5TTQ3NzZScjE2NmxsRks2WU1FQytxOS8vWXNLZ2tBUEh6NU1lL1RvUWExV0szMzk5ZGZwZi83ekgzcmt5QkU2ZE9oUXluRWM3ZFdyRjYydHJhVUhEeDZrSTBlT3BIcTludXIxZWpwa3lCQjY4dVRKeTQ1QnA5UFI3dDI3MDdObnoxS2U1K25DaFF2cEcyKzhRU21sOVAzMzM2ZWZmLzQ1cFpUU1E0Y08wWDc5K2tuN21Vd21halFhYVhwNk9qVVlETkxuNTgrZnAvMzY5YU1XaTRWYUxCWTZaY29VK3NzdnYxeDJERFUxTmJSMzc5NlU0emhLS2FWTGxpeWhhOWFzb1pSUyt2cnJyOU9ubjM2YU9wMU9ldmJzV1pxWm1VbnRkanMxR0F3MEpTV0ZIamh3Z0ZKSzZZb1ZLK2o4K2ZPbGVaMDVjNlowL0dIRGh0SEN3c0tydWtaRGhneWh1Ym01RFQ0L2NlSUVIVE5tekZWZjY0OC8vcGplZHR0dFZLZlRVYlBaVEFjT0hFaC8vZlZYU2ltbE5wdU5HbzFHT21QR0RQcmpqejlTbnVkL0tpd3NuQUNnR1lBbUFLSUlJV0VBZ2dBRU1BeWpKb1FvQ1NFS3RWck5CQVFFRUFBa0xDeU14TWZISXprNUdRRUJBV2pldkRreU16TXhlUEJnakJzM0R0T25UOGY4K2ZQeDBFTVBZZURBZ1RoKy9EaFlsZ1dsRkdQR2pNSE9uVHRCS2NXNWMrZlF0MjlmT0oxT0Q4d1lOMjRjeXNyS0dtREpwNTkraXVlZmY5N2pNN2VxalBUMGRCZ01CdW56anovK0dHUEhqb1haYkVaVlZSVXlNek9SblozdHNlK3FWYXZ3OXR0dlMrOVBuejZOcmwyN29xeXNERmFyRlJNblRteWNzY1dsajhiV3JkL2p2cXdPMlAvTmV4Z3plQWcrK2ZrY2hPSUQySEhXZ0lrUFBvM2JSNDdCb3NmdUJsdDlGTHRQMWw4VkN4bjE2SEo4K09veXZManNaZlJwR1lTQ2c3dFJhR1V3ZmQ0aWpCNHpHVys4K3dGbWp1dnRlZ0o4dndFMExBRjh4Um5rRkJrUW9IRGk5UEdqVXB5YWQwaUh6V1lEVHlrZzhCNnFwOHZyS1RBVVVNeCtZOVBEVXllT1g3bGsvc3loR25zWnR1M09SZjZ2aDFEUEIrREJwNS9CbUhIM1lHQ1hoRXRQb2U4M0FCRkpTRkFZVVdVTFJHSUVnMTI3OXQwUXhyWjI3VnFNR3pmTzQ3TTJiZG9nSVNFQmFyVWEzYnAxUTBWRkJRRGdwNTkrd293Wk0wQUlRZmZ1M1pHY25Jd1RKMDRBZ0ZSMU5TUWtCRXFsRWtGQlFXQlpGcHMzYjBhVEprMndkdTFhckYyN0ZqRXhNVGgwNk5CbHgzRDQ4R0YwNk5BQmJkcTBBY013V0xCZ0FjYVBIdzhBbURGakJoSVNFdkQyMjI5ajU4NmRxS21wa2ZZVGY5ODdJRFF1TGc0cWxRcnZ2UE1PVHA4K2paVXJWelpRTWJ6SEVCMGRqUzVkdW1EMzd0MWdXUmE3ZCsvR3FGR3VaSkFmZnZnQklTRWhXTGx5SlE0Y09BQ0dZWEQrL0hscEREMTc5Z1FBWkdSa29LcktwV2tNSERnUU9UazUwT2wwT0hueUpPTGk0cTVIVzc5cmx1N2R1eU04UEJ4QlFVRm8zNzQ5S2lzckFRQUJBUUVJQ1FtUjZxc3hERE80V2JObWIzenp6VGRUM0twcGdLaWFBaEJWVXdVQVJzeWVJWVFRdHlPTjJPMTI4RHdQdTkwdXFhWjZ2UjUxZFhWU1lMdlJhRVJ1Ymk1T25Ub0Z1OTJPR1RObTRQUFBQd2NBZlBYVlY3am5ubnM4NnIzbDV1WWlKQ1FFQ1FrSlYzV3VqYTBIQU9qY3VUT0Nnb0lRR3h1TFljT0dlVEQveHU2TGhJUUVKQ1FrUUt2VjRxNjc3bW9NMkZoc1cvTVo5aGN5ZUd6eE1temJzeGUzZDFEaGxkZmVkM2xRQUdnMHJ1YXRLdmNyeC9MdWZRWElHR3NEQ2ZlS2wyRTVCd0FGTkJxWGc3WkZlaDlrOWUzc29wd21DemliSGhmT24wZGhZUkhDazFJUkc2SzhYUGNvUWtFSXBZSlVPODNwNUJpZTU1bml2TzBKdlZxMmVDMUFxMzBEUUlKU280WUNBTWV6NEp3OEFBV1Vtb1pPWXJ2TkRpWERvNmF5RXBXVjFlaVNOUVZadmRyZUVGdGllSGo0WmF1aE1nd2pxUXNjeDBHajBVamZhYlhhSzZvL05wc05vYUdoMGpaMjdGajA2ZFBuc21QZ09BNXF0VnA2SHhJU0lwWEZlZTIxMTdCKy9YcjA2TkVESTBhTXVLcnpEQXNMdzhhTkc1R2Ftb3B2dnZrR3c0WU5RMWxaMlJYblllclVxZmoyMjIreGZmdDJEQm8wU0FveXRkbHNpSXlNbE01cDd0eTVQdWRRUG5kS3BSTGp4NC9IOTk5L2ozWHIxdUd1dSs3NjAyMTNoQkJjSVk4N1FhMVd2elJ6NXN4bk5tM2FsQ2lxcGpLQUU0R05jZHVUSVFnQ2NRZm5Fa0VRaU1QaDhIQXE2UFY2NmQ2eVdDd29MQ3lVd0sxdjM3N0l6OC9IdVhQbnNHM2JOa3lhTk1sak1HdldyTUdFQ1JPdSt6eW8xV3JJUzZ0ZHpYMmgwV2dhQXpZbGp2KzRFazh0ZUJaN1QrYWp0TFFRZXJQcnhsRTA2NFpPMFNyOHNPNS9LQ3d0eGFvdk53Q0JMZEd0WXd6aVkrSUExT0dYZzluSVA3a0xGNnI1S3c2OFpaY01SQ2hZYlBwbUhjcEs4L0RZdUV6MHZ1ZEZtRXdtTkVtK0JaYmFLZ2loOGJpbFpUTW9CUllCYWtXRE9EVjN4VnZDc2l3VWhBQlVJQ3pMRVo3bkdVR2d6TkNIWCszWHBIbm1oNW50dzJidTJyZ0c1NHBMOGUycU5iQ1FFR1IwYVkxYk9uUkVJQ3hZdjJvZENzOGZ4Y204T21sOGZYcjNCS2ZYSVNFakN3OC9PQTF0NHNPUWtkSGxEMS9ZYTlhc3dSMTMzSEZOVC9zdFc3WklidmJzN0d4MDdOanhpdnRVVlZWaHpKZ3htREJoQWxxM2J1MnhZSHlOb1hQbnpqaDY5Q2owZXIzMFB4OTg4SUhrdFIwM2JoeTZkKzh1cVFsWGtsMjdkdUhsbDEvR2JiZmRobGRlZVFWdDI3YkZ3WU1IcnpnUDNidDNSMmxwS1ZhdVhJa3BVNlpJbjJka1pJQmxXVXlZTUFFVEpreEFRa0xDVlFXZlRwbzBDZXZYcjhmaHc0ZXZ5WGl1MVdwUlYxZjNwNEJmZW5vNmpoNDlPcU5YcjE0dkZSUVU5UERsV0FDZ0VBU0JFZG1iNkRXbGxNS1hVMEhNMXJIWmJGSUovYnk4UEp3OWV4YVRKazNDbzQ4K2lxRkRoM3BVQ2VFNERydDI3Y0xRb1VPdnkza1ZGaGFDVWdxSHc0SGR1M2VqUTRjT1Yxd1BPcDFPc2pmLzlOTlBqY1d4TVhqc3BmK2lldjVDekJnM0JCd0ZvbHQyd2Nzdno0RlMzUVRMWHY4WFpzNTdIZ1A3cllJNnJDbWVlZVZ0cElVQ0dId25ScVY5ZytVUDM0WlBXL2REaTZaaDBGM2hKRFRKL2ZISzBnZngxTDhYb2UrN0hLS2FkOFZ6QzZmZzlPblRpTzQ0QkptdEwrRG5iejRENitTaDBJYWdaWW9HQVhCNng2aEo4V2xRS0FnUkJDSUlQQUhBREo3NHlOVFgvKy9oWndqUnBpeDQrWFVVUFRJUEkyN3RCMFZBQk81YitocUd0dElDR0lvbER3N0JzeDgralI5WHg2Sjl3cVdxbzhNZmZoNlBsejZCTng2Zmd1VThFTjJxSzE3cVB4bEErQisyWUZtV3haNDlleVNEK05YSTBxVkxNWFBtVEd6YXRBa1ZGUlZZdW5UcEZXL284ZVBINC9UcDA4akt5a0pNVEF3VUNvWGs1bTlzREFrSkNaZzdkeTRtVEppQW1KZ1lBSkRjN2pObXpNRENoUXNSR3h1TDJOaFlDSUlBZzhHQXNMQXdqQnMzRHZYMTlUQ1pUQmcxYWhTQ2dvS3daY3NXWkdabVl2WHExUmd6Wm96cndhbFFTRGZJNWVhQkVJS0pFeWRpeTVZdFNFbTVWTmR6NGNLRmVQVFJSekYyN0ZoUVN0R3VYYnVyOHFhS1BRTmF0V29GcGZMcXd6dW5UcDJLT1hQbW9Ibno1aGc5ZWpTbVRwMTYzZGZEODg4L2p4MDdkcUMydGhiSGpoM0RTeSs5aFBmZmZ4K3RXN2ZHMUtsVE1XclVxSUZ4Y1hITkJnMGE5TmJQUC8rODBaMkdKYS9zekFNQXBWUnd4MjVDb1ZCUWtSQ28xV29hSHg4UHM5bU1VNmRPU1d6eHM4OCtRL3YyN1RGeTVFZ0lnb0EyYmRxZ3VMZ1k5OTU3cjhmNGZ2NzVaL1R0MjllRHlRUEFoZzBiOE5wcnI4RmtNc0hwZE9Mbm4zL0dJNDg4Z2ttVEpqVzZIa1NRR2p0MkxQUjZQWHIwNkNHWkR5NjNIaHdPQis2OTkxNHA5T2FLWll0WWh3bFdCNFB3VUsvTzA0SVQ5WG85Z2tPam9mWllCd0wwOVhvRVIwWmVVL1N2d0RxZ045c0FCamliaytNUnpsRmRYWVhhZWgwY05sdURiQUk1cU1teUNKaHBkMDlWTFAvUGZ4ZEVod2N0Z2tjZ3NtdDgydUJ3YU5TZWhOVm0wUVBLWUdoOXFLU3N3d0tqalVkMCtCOWZhdm5zMmJNNGN1UUk3cjc3N212ZXQ2NnVEcUdob1ZDcFZGZTlqODFtQThkeEhtV2tyelFHbG1WaE5wc1JHUm5aWUlIWmJEYUVoMThiOEp0TUpoQkNFQndjZkYzbXdXQXdRSzFXLys0OHlDbFRwalNJdTl1NGNhT0g1MC9za1hHbGN5NHVMc1lqanp6aThWbjc5dTJ4WXNXSzN6eSttcG9hYUxWYU1BeURmLzNyWDg3RXhNVFgzbnZ2dlk5T25UcGxkNmRrY2U3TjZhN3pKaEJDQkhraFM0MUdBN1ZhVGNYYWJtTHBJN0ZvWlZSVUZPTGo0MkUwR3BHVGs0TlZxMVo1bk91bm4zNktQbjM2b0ZXcjZ4ZlFMaWJyeTBOQkdsc1AyZG5aV0xod0liNzc3anZvOVhwRVJrYmVYUFhZZERvZGNyeEFUWFFTaU0xVzVOMmpaS0FtcjV2R1ZGWldKa1ZGUlQxRENKa0J2L2psYnlxQ0lPRHV1KzlHMDZaTndmTThUcDA2aGErLy9ob2hJU0VyZCt6WThlSHc0Y05MQ1NFT0wzRGp2Y0JOS2owdWdwdThHNVlJYnFXbHBTZ29LTUNzV2JQUXAwOGZ0Ry9mL3FiSkx4V0JiY09HRFpjWS9jMENiSEpRS3lrcDhRQTFlY01WSDB4TlRJMWlCRUVnSnBPcG0xYXJYZWl2bWVhWGZ3cTRaV2RudzI2M0l6MDlYWElnOFR5L0pUYzM5NzEyN2RxZEJ1Q1FzVGVudTdrTTcrNnhJSWlOWStUZ0pwWWNGNzJYWWcyM2xKUVVxV0RselFKdVZxc1ZoWVdGSGtIUU53V3c2ZlY2Wkdkbit3UTFrYW41VWo5bFdRU0VVc3JZYkxaaGFyVjZFZnlWYmYzaUYxQktENWVYbDcrVG1KaTQxd3ZjT0RlNFNjek5YWDY4QWJnMXBwYUs0SmFXbG5iTlpvY2JJWDk2RXJ6QllQREoxSFE2bmM4S0hWN3Fwd1JxRG9kanNsS3BYQVNnbFg5Sis4VXZya3E5Q1FrSmtiVzF0VzlGUjBkdnBwUXl4QlU0UmlpbEhOeE9CY0dkVXVBbU9SUXV4d1AxQVpTK2ZnTnBhV20vS1MzcWJ3dHNKcFBKcDAxTkJMWExxWjl5VUdOWjltR0ZRckVZUUl4L09mdkZMeDdBa3hJVkZiVllyOWNIaDRlSGYrTXVkMFM4TlRZUjNKeE9wMDl3YXd6VXhLMURodzQzVmFNWTVzLzZZWXZGMHFpandFY1RZOUlZcUhFYzk1UkNvVmp1QjdYRzdRLzMzWGZmVFRXbXdzSkMvTlVhZGIvODhzdm8zYnMzaGc0ZEtxVWFUWjQ4R1pNblQ4YjA2ZE92KysvdDM3OGYxN0huYjB4WVdOZ1NzOWw4THdDdExKaFhucWtnWlNrNG5VN2lybHBKUjdRQUFDQUFTVVJCVk5NbUpkRGJiRGFQUU42NnVqb3BlVDQvUHg4NU9UbXdXQ3c0ZS9hc2xOSGhMZlBtelpNeVpScVR6WnMzU3hrT2Z6bGdzOXZ0MStMOUpQSU9VcUpON1oxMzNsRnhIUGNzd3pBdndwVlM0aGNmd3ZNOGpodzVjbE9ONmNVWFg0VEZZcEhlRzQxR3pKNDkrNmFkdzVNblQyTExsaTM0NmFlZnNHM2JOblRxMUFrcWxRcXZ2UElLbm52dXVlcyt2elUxTlZpK2ZQazFoZXo0a29zWEwrSzU1NTRUM3dZRUJRVXRyS3lzZkVpajBRUTFBbTRLUVJDSXZQeVJ1OUt1Qkc0V2l3VkdvN0ZSY0h2aWlTYzhVcTNrY3VyVUthbGdRbU5TV1ZrcEZTZjRTNm1pSE1kZDF2dnBaVk1UY3o0aEw4Znk2NisvQnFlbnB5OWlHT2JKdnlNWUhUaHdBTTJiTjhmKy9mc1JGeGVIdm4zN1NqbDFack1aMjdkdkJ3RDA2ZE1IMGRIUjBuN2w1ZVhZdDI4ZklpTWpNWERnUUo5VkZrNmRPZ1dOUmlNVkVheXRyY1hPblRzUkdCaUlmdjM2ZWFnVFI0OGVSVjVlSHZyMTY0ZmMzRnpjZXV1dGtscXliOTgrbEplWG8zZnYza2hNdk5RT29xeXNEUHYyN1VOb2FDZ0dEaHpva2VZRnVMSWlhbXBxMEw1OWV3QkFUazRPenA0OWk5MjdkMlBidG0wQWdMNTkrMHJ4WjhYRnhUaHc0QUNTazVQUnExY3ZDUWd2WExpQW1KZ1k3TisvSDZtcHFlalNwY3NWeDBBcHhkNjllMUZSVVlHZVBYc2lPVGxaMmljbkp3ZFJVVkVvTFMxRmJtNHUrdlhyaDhURVJPemN1Uk9IRGgxQ1JFUUU5dTNiQjdWYUxjMUQwNlpOWVRLWkdtV2xodzRkUWxKU0VucjE2Z1ZDQ0k0ZE80YlUxRlJvdFZxY1BuMGFuVHAxd29VTEZ4QVlHT2lSWTdsdTNUcU1IVHYyaXV2aCtQSGppSTZPUmxKU0VnQkllYk9EQmczQ3NXUEhjUFRvVWV6YXRVc0tjQjA2ZENpMFd1M2MxcTFicTRjTkcvYlJ5eSsvckhlcmxLTGR6ZWxXUzNsM3FYeFJMWVhENFNDQ0lGQ2owUWkxV28zRXhFUVBWWlFRZ3BLU0VnUUVCSGpZMjhUcjU2dHMwOUdqUjVHYm00dHUzYnA1eE1BSmdvQWRPM2FndnI0ZVE0WU1rWTczeXkrL29FMmJOZ2dMQ3dQTHNqaHc0SUIwTGV4Mk83WnQyd2FsVW9sMjdkcmRXTVpHS2ZVQU5Ya3l1M2ZURlZsdkFnOVFPMy8rZkVSNmV2clN2eXVvQWE0eU9rOCsrU1QwZWoyV0xWc21aUVBvZERyY2R0dHRLQzB0UldGaElVYVBIbzNhMmxvQXdMRmp4ekJwMGlUbzlYcHMzcndaRHp6d1FJUGpidG15QmZQbno1ZkE4T0xGaTVnNGNhS1UvRDFtekJncExXWDE2dFY0K3VtbllUUWFzV2pSSWp6OTlOTWVLc1hYWDM4Tm85R0lLVk9tSURzN0d3QncvUGh4M0gzMzNUQWFqZGk1Y3ljbVQ1N2N3RGF6YnQwNmp3VG11cm82bEphV1FoQUVGQlVWb2Fpb1NMVHpZT2ZPblhqZ2dRZGdzVmp3N3J2dlNvR3NwYVdsbURWckZ0NTQ0dzNvZERyTW1qVUx1M2J0dXVJWTVzMmJoeSsrK0FJbWt3bFRwMDcxS0ZXMGF0VXFUSjgrSGUrKyt5NXljbkpRWCs4cTZsQlNVb0thbWhyWWJEWVVGUldodExUMGl0ZHY1ODZkdU8rKysyQ3hXUERSUng5SmtmSWJOMjdFa1NOSGNQYnNXVHp4eEJNQWdQZmZmOTlEUGFPVTR2dnZ2OGZ0dDk5K3hmVncvdng1UFAvODg5TC9iZDI2Rlo5Ly9qa1loa0YxZFRVcUt5dkJzcXcwcjZLd0xEdkw0WEE4UEhIaXhHZ0FZdkZLRlFDbElBZ0tBQXBLS1dGWlZsSkxUU1lUcXFxcVlMRllVRjFkalp5Y0hBL21WbFZWaGExYnQ2SmR1M2JJeWNrQnBSUm56cHpCK1BIalVWMWRqYzgvLzl4ajdsNTk5Vlc4L3ZycnNGcXRlT1NSUjdCanh3N3B1dzBiTnVEbzBhTTRmZm8weG93Wkk3SDc1Y3VYU3lZTW85R0lKNTk4VWdMQ3FWT25ZdnYyN2NqUHozZGxmelJXdHVpUDJFNmZQbzF2di8wV3I3enlDdWJObTRlcFU2ZGk1TWlSNk5PbkR6cDE2b1RVMUZRa0pTVWhOallXNGVIaEpDZ29pR2cwR2thcFZDb1VDb1d5c0xBd1RoQ0VOK25mWElZUEgwNnpzN01wcFpTV2xwYlNEaDA2VUtmVFNXdHJhK214WThjb3BaU3lMRXRuekpoQnQyelpRaW1sOVA3Nzc2ZWJObTJpN3RMUWRNR0NCVlNuMDFHajBValQwdExvMXExYjZaQWhRMmhWVlpYME82V2xwZlRNbVRQUzhiS3lzdWpwMDZjcHBaVDI3OTlmR2tONWVUbnQzcjA3cFpUUzQ4ZVAweEVqUmxCWE5XcEt2L25tRy9yVVUwOVJTaW45OU5OUDZlelpzNm5UNlpTK3M5bHMwdThKZ2tDenNyS29UcWZ6T04rYW1ocmF0V3ZYQnZNd2VQQmdhUXdXaTRWMjd0eVpPaHdPbXBPVFF3Y05HaVNONFlNUFBxRFBQZmZjWmNkdzVzd1pldXV0dDFLeFIrZXVYYnZvK1BIanBkK2FQMzgrZmY3NTUzMWVqMDJiTnRGWnMyYjUvTTVvTk5LT0hUdDZmRFpxMUNoNitQQmhTaW1sSE1mUm5qMTcwdno4ZlByZGQ5L1JkOTU1aDM3NDRZZDA0TUNCdExLeWtvNGRPOVpqam80Y09kTGd0eHBiRDNhN25XWmtaTkRpNG1KS0thVjMzbmtuM2JGangyVkxKeGtNQnBxV2xrWTVqcU4ydS8yRDJiTm5ad0JvQVNBQlFCU0FVRUpJSU1Nd0dnQktobUVVR28yR0lZU1F3TUJBRWhzYmk0U0VCREFNZzA2ZE9xRlBuejRZT1hJa0prK2VqQ1pObW1ERmloWDQ5dHR2cFJwNUgzLzhzWFQvOSt2WEQvbjUrYWlzckVSR1JnYnNkanNvcFRoNDhDQ21USmtpbFMxYXRHaVJ0TS8wNmRPeGZ2MTZVRW94ZHV4WW5EaHhBcFJTMU5UVW9HdlhycUNVNHBkZmZzR0lFU01nc3N5MzNucnJ4cW1pNTg2ZHc0VUxGeVQxVTk3elU3U3BOUko4S3pHMTVPVGtSWVNRMmZnSGlKaXYyTFJwVXpBTUE2UFJpSkNRRUt4ZXZSb3JWcXhBYUdnb2NuSnlwQ2Q3WVdHaHBGNFNRdkR2Zi84YmdNdnpiTGZiTVgvK2ZQVHMyVlBLN3dSY3BXT2VmLzU1V0N3V0JBY0hvNktpQWp6UFM2eElQSjdjMXBPYm00dnk4bktNSERsU3N1RzFiZXVxZGpKNThtUVVGUlZoMkxCaFNFMU54YlJwMHhBUWNNbjhlZVRJRWFTa3BGeFYzQlBQODhqUHo4ZFRUejNsTVY0eCtWNnIxVXJxZVhCd3NGVEpwTEV4RkJRVW9HM2J0cEo2bnBhV0p0WGpGK1Y2cFFSZHZIaFJVcjJVU2lYYXRHbUR3c0pDcEtlblkrZk9uWEE0SEpnNmRTb09IandJcFZMcE1VZU5KWG43V2c4UkVSR1lPblVxVnExYWhjbVRKNk9tcGdiOSsvZS9xclhsM2g0WU4yNGM5dTdkKzhHSkV5ZnF2YlVyZDg0b0wrYVg4anhQV1pZVisvL0Jack5KYW1oNWVUbGlZMk5SWFYwTmxVb0ZoVUtCMDZkUFMrV2s1T3NvUHo4ZkZvdEZVcmNGUWZCWUUzTHpSV3BxcWtlMUYxOVNWbGJtMFNOVnBWTGRHR0RMejgvM0NXbytLblEwQ09rUWJXb3RXclQ0eDRDYVhJeEdJMWlXUlhCd01MWnMyUUtqMFlndnYzUlZKWDcwMFVlbC80dU9qa1pGUllXVUVMNW56eDUwNzk3ZDVTRmlHR3pldkJuejVzM0RlKys5SitVcnJsNjlHb21KaVZpeVpBa0FlS2cvVVZGUnFLeXM5TENmaVorM2JkdldaNFhadkx3OFBQend3M2oyMldkeDdOZ3hQUGpnZzlpMmJSdWlvcUl1ZTlNU1FqeXFzd0tBUXFGQWVIZzRQdnp3UTZrc2tpaWkrdTFMR2h0RFRFeU14dzFTVmxibUFmTFhVOFRmRXB2dWlML1Z2SGx6VkZaV0lqQXdFSU1HRGNMaXhZczlHcVpZTEJZY1AzNWNlaWhkYVQwQXJpVDhFU05HZ0dWWlRKczJ6Y091Nm10ZXZVV3RWai9RcGswYllkU29VZSsvK09LTGFBemNSQURpT0U0S0JSRWRBWVFRWEx4NEVkMjZkVU50YlMwVUNvWGtRRGgrL0RoNjkrNHRIVTljUTlIUjBkaTBhWk5QTzdCOHpPWGw1Y2pNekJUSEtqM0E1Q2FPcUtpb0J1cjhIdzVzSlNVbFV0TVZiNmJtYlZQekZkTHh6anZ2cU55T2dqbi9KRUI3NzczM01HWEtGS3hhdFFvalJveUFTcVZDYkd5c1ZBK3J1TGdZdTNidGtrcnNUSnMyVGZLazVlYm00cXV2dnNLR0RSdmdkRHFoVnF1UmtKQ0F0OTU2QzdmZmZqdmF0V3VIL3YzN0l5WW1CbHUzYnNXT0hUdHc0c1FKbkRselJyS3hUWm8wQ1FzWExzU0REejdva1lQWHQyOWZ2UExLSzNqMTFWZlJ2MzkvN05peEEwbEpTWmc4ZVRLT0hEbUNiZHUyWWM2Y09haXBxWUZhclphZXZtTGxpT1hMbHpjNDEvRHdjQ2dVQ256MTFWZG8wcVFKMnJWcmg1aVlHRHp3d0FPWU0yY081czJiaDdxNk9telpzZ1gvL2U5L0x6dHZqWTJoYTlldUlJVGc3YmZmUmtaR0JwWXRXOWFnU3NXMWVwczNiTmdBdTkwT2p1UHczWGZmSVRRMEZJTUdEY0w5OTkrUEpVdVc0TWtubjhUZXZYc1JGaGFHdExRMEVFSVFHQmlJdG0zYklqazVHVVZGUlI3OUFEWnYzb3podzRmN3ZObDlyUWZBMVUxcThPREIyTEJoQS9idDh5eUFtcFNVaE9MaVl2end3dzhJQ0FpUUFNSmJGQXJGUXdzWExuVHUzTG56L2YzNzl6ZXdpN3JmODRJZ1NIRnVsRkxpY0Rnb0lRVHlwdU42dlY0Q3R0VFVWTHo3N3J1SWpJeUV6V1pEY1hFeEFLQjE2OVpvM3J3NUZpMWFoUEhqeCtQWXNXT3dXQ3lZTzNldU5BOWR1M2FGeVdUQy92MzdzWGp4WWdCQTE2NWQ4Zm5ubjhQaGNPQ0hIMzZReHBlWm1Zbi8rNy8vdzN2dnZZZFdyVnBoelpvMVVDeGR1dlFQdXptcnFxcHd6dDJqUU43TTJHQXdlQlNJOUU2VGtzZXByVisvZmduRE1BditTYUQyeFJkZllOU29VVGg0OENCYXRHaUJ1WFBuUXFWU0lURXhFWW1KaWRpM2J4L2k0K014WWNJRVJFVkZJVEV4RWExYXRVSlNVcEtyRnBWU2lSZGVlRUh5TENvVUNuVHYzaDFCUVVIbzBhTUh6cHc1Zy9UMGRMUnIxdzRxbFFxSERoMUNXbG9haGc0ZGlvU0VCTVRFeENBakl3TldxeFZIamh4QnQyN2RjT2pRSVV5ZlBoMEtoUUszM1hZYmNuTnpjZlRvVWJScDB3WVRKa3dBd3pCSVQwOUhVRkFRZHU3Y0NZdkZnc1dMRjB1OUt0ZXRXNGNtVFpwSUhqcTVNQXlEWHIxNllkKytmYWlvcUVCYVdocENRME9saXJLaStqWnIxaXlKcVFRR0JuclU2WXFMaTBPTEZpMGFIUU1oQkNOSGprUjJkamFPSHorT2lSTW5ObWd5MHJKbFM4VEd4dnE4SmxGUlVRMDhkOXUzYjRmRllrRzNidDFnTUJqZ2REcVJucDZPOVBSMGhJV0ZZZnYyN1lpS2lzS3p6ejRybGZTSmlJaEF0MjdkRUIwZGplam9hR1JtWmtxZTZPZWVldzZQUC81NGd5ait4dGFEbkR3MGI5NGNBd1lNOE5oUHE5V2lZOGVPMkxObkQzUTZIVHAxNm9TQWdBQW9GQXAwNjlaTityK3dzREIwN05neDQ4NDc3N1MvOU5KTHAyV01UMFE0S3FxY2NpYW5WQ3FKNk5RS0NRbnhxS1JDS1VWa1pDU2FOV3VHRXlkT0lDa3BDVmxaV1VoTFM0TldxMFZXVmhhcXE2dHg4T0JCeE1iRzR0NTc3NVhVN2Q2OWV5TXZMdzlsWldWNDl0bG5KZTkxdDI3ZFVGcGFpcHljSEV5YU5BbXhzYkhvMnJXclZPcnE4T0hEcUtxcVFueDgvQitYSzZyVDZaQ2RuZTNCMXJ5ekNyekRPdVJ4YW1Md3JUdE96UzkrOGNzTkVMUFovTytRa0pEL0FiQzVLNE00QUxDUVZRWVJjMHVWU2lWMU0ySXE1cFdLU2ZNUkVSRlNYbWx5Y2pKU1VsS1FscFoydzVMbS94QlYxR2F6U1IzYUt5b3FVRnRiSzdYSHU1ejZ5Zk04NUdsU0RNTXM5aTgxdi9qbHhrbHdjUEJjblU1bmpZaUlXT2RtWmhUdVdEYXY5Q3ZxSW5YRWxhTkZDR1VZQmd6RGdCQUM4VytsVWdtVlNnVjNjajA2ZHV6NHUydmsvU25BUmluRitmUG5VVmhZNktGK3lxdDBpQjVRZVpGSXQ2dVdFUlBhM2JtZi9vd0N2L2pseGtwQWVIajRZMVZWVlphNHVMaXQxSlZjNm0xdmc3dUhndUIwT2tYUHFBaHlJSVJJZGpaeEV3Rk9vOUVnUFQzZFp4T1hteHJZNUtBbU5qSVdIUVVXaStXeWxXOEZRU0EybTIyWXUwcUhQL2ZUTDM3NWN5UW1KaVptWmtGQmdiRkZpeFlIdkpnYkJVQUZRUkM5bzVBQkdoR0xWNHFiSE5SRVlBc0lDSkNhS3Y4bGdLMndzQkFYTDE1RVdWbVpUMGVCM1c1dmtGVWdDK3RnVENaVE4zYzlOWC9wSWIvNDVVOFVRa2hLY25MeVE4ZVBIOWQzN3R3NXg4M2NSSldVaW4wUlJOWUdtWU5CVkVXOUdadFNxWVJhcllaYXJaYjZtdjVSY3QyOG9sVlZWWkpkcmJ5ODNLZGRyVEVQcUZqT096UTA5Q1ZDeUVEL3N2S0xYMjRLY0dzYUV4TVQycWxUcDlOZmYvMjF6UTFla3FjVVBtcTJ1VlZTOFcvNTU1Qi9Mb2EreUh0Y1hGZkdkajFhaDVuTlpwdzVjMFppYTJJT3FIZWJQSWZENGVFQkZkWFB1KzY2U3dIZ21mcjZlbjg1YjcvNDVlYVM0Wm1abVRVcEtTbXZYYmh3UVpBeE4xZjZnZnNQOXl2Y1dRbkVuVUlIK2VaME9xWE5YVFVFN2RxMSswUEFUZmw3YXo1UlNwR1hsNGZpNG1KVVZGUTBzS3MxVnRMYjdTd2dBSmhseTVZdGNEcWRONlR4aXRoVDBidnF4SlhFWXJFZ01GQUxRaGovVXZmTFA0MjUzYjExNjlicWxKU1V6OTA0SnNqQmpSQVJ4d1RLOHp6aE9JNjZhUnNWdmFSeUZkWGJZOXErZmZ2cjdreFFCZ1VGL3E0RDVPWGxvYmEyQm5xOURtYXpDVmFyQlhhN3BITEtLblE0aVJpZExQZUExdGJXVEhVN0MyNkk4THdUVGllUGF6MXZuVTZIeU1pSWErbzVhVEFZRVJJUzdET1MzQzkrK1N0SlVGRGduUHo4QzVXMzNKS3lGWUEzYzVQK1R4QUVnZWQ1T0oxT0tCUU00VGlPS3BWS2lhSFo3VFpZclJhWXpTYm85VHJVMXRhZ29xTDh1cmJ1QXdEbHRkeW8zbEpXVm9heXNuSlVWOWVndmw0SGc4RUlzN2xCandJM3VFbWdSdHhVbGRUVzF2UU5DQWg0Qmpld0xwenJhU0hndDV5M2FBQzlXakdaVEFnTEM4WHZtV08vK09VbUVXVjhmUHpEeDQ4ZnEremN1Y3N4WDh6Ti9Vb0VRUURQODVUam5HQVl6aXZrUXdtVlNnMjFXZ09OSmdCYWJTQ0Nnb0lSR2hyYUlDZjRkdzIyc1dxWFY1TFM4akljUDNzQk9uZEdnY0Z3S2FuZGJMYkFiTFdCdlFSc0lsc2p2Q0FRS2xDbXFLZ3dJU2dvYUQ2QWxCdExxeGtwenVaYVZXNTVjdThmdGM4ZklmcGplNkJvbG9HUXFCc1RGa2c1TzZ3MTlWQkdSRU9qVlFOd29tTHJKdGhzZ0twcEd5Umx0UGxiM09tL1pWNXRoVG13T0tNUm5STFh5SC9ZVWJYak1DSnY3UWVWbStnN2lrNmo3RmcrQUlMWVFhTVJITXBjeDdGRUlEb2w0V3AzdWFWMTY5YjNyMXk1c256YXRHbmxBTVJBWGZHVmlwNVNudWZoRHRxVlFrQXVlVWN0N3RBUHRic1RsaGJCd1VFSUN3dTdwcVl3anRKY0dJeGF4TFpMYW5CT3ltdFdrNmdWaXo3WWdQMUY1U0IxWlNpdnFVZlh1RkFvTFNaWUxHYVVsSldoc040TXd0a2dDRUNJRXNUcGRNTEpjY1RCT1FuZ3NxdTlrMnQrK3JuNCtDSGtUMWlRbE9LYTFVTXhQKzVhOXZzdCsvd1JVdkxaY2dSTi9neGh2UVAvOE4rcTIvWVpEci95SmJUTldzQlJWb0JtODk5Rm0vNUpVQVVFd25KdU44NGRxRUt6ekhaL0MyRDdMZk5xT0xBR2hmcE14S2FPYkl6bkkvKzl6eERZOTFabzNFU2ZVV3FnMWdiZzR0c3ZRSjErRzBMREc2Nm55dTgvUnNEdGFRaUw4UnhMd2Z0TG9lejFHSkk2UkRiWXgzemlSNVFZT2lNMk5mRmFOSjRCNDhhTks1dzJiZHBiTXRZbXlGZ2I0SXB6ZzFzbHBRekRFSVdDb1E2SEFrcWxheE16RWRUcVMyMytnb09EMGJGang2c21BcGJqbTNIMlZCTGkwNW8xT0tkckJ6YW8wVCt0RFhvMkRVRmhvUnE3OXBaaTd6a2R1a2NvWU5iWDRXS2RGWW5oZ2VEdFFFVjFIVEVybFZBSVRuQ3VDR1ZDQU1aU20vL1F5RGYyek16SlRFWEhHNXhiSURkaS9qWTFsdm5EOXdFRVVEQnc2cXZBMFNBRVJuaDZqU2dFRURDd1Y1VkQwSVFqTVB6U1lyWlhsWUpYaGlJb0t2VFNEcXdkb0FUT3Vtb0ltakFFaEhxbXREaU5kYkFaSFFpTWk0ZEM5ZHRCbUMvZGovMkxWNkxIMm8xbzBpd1VFR3l3MW5OZ0dBM2lCNDlBTUZPTy9BS0xqL2tRNEtpcEJzY3BFSlFRQTgrSEhROWJlUVVFVlRBQ1k4STl2cU1PSzh4VnRkREV4RUd0MWR4azgrcjduQWpQZ1RvRlVLc0JOZ3NRSEJmaE9UNW5EUHArK3htSWJJNjB6ZHFoZWJOMnFQeG9DWUNHYTVjNm5Xai8zQ29RWmNQUHphY09RTmxxT29nUURpaVYwamlvNEVUODdmTVFML3ZzMGpBNFdNc3J3RVRHSVNCUTAyQ3Q4RWJIZlZVVlZZVnhUZUxXQStCOXFhU0NJQWlFRU9wME9zRXdCQTRiSllRdzFLWEJLS0ZVdXRPc1ZHb0VhTlJRT096UUtMVUlEUTExMjlzRTJDckxRUU1pUGE0REFIQzZLbkFrQkVUZ1FKMjhOQi95YzFKZXF6ZWlvcUllYWs2UGtxcEsxTlhWZ3poWjJNd21XTlFxMU9vTUlBb0NjQzY3bW9KUWNDd0xFRXFvcTZZNnNWaE0vWlRPdXZrY28wU3drb0NRR3cxc2x3RHV0ekMyYTludnQrd0RBT2VmbVlpTHVTb3dTaVdFeW9zSXZuMGgrczRkN2ZyU2VBcnIreitEcEdFeHFEeWxBOHc2ZFBqa0p6UkxNdUxRZlZOUlo0MkV5bElHa2pZUnQ3NDZHeW9Hb0U0T2hXL05SN0ZLQVh2QkdjVFBYb0h1ZDdrS0VoYis1MUdjM0ZTQ2lPWVJNRjZvUThaM0d4RXJQZHdkT1Bua1RLZ0d6VUs3ckM1WFhocy9ySWVxK3dRa05IZXJFNHBBQk1ueVJ3Z1ZRSG5CYXo2cXNYUHdlTEF4TGFHQ0FTWmRLUHF1K2hDUk1ScFFVekgyVExrSDl0Q1dVQXM2MkJNR0l1dFZWMGsrL2U3UHNXZlJKd2h0bXdKNzJVVWtQL2tKMmcxc2ZwUE1hK1BuQklHSDhlZVYySDdnS3pDV01xRDFuUmo0eGl3b0FWU3UreTlPZmJrRCttTjFHSHhtTHlLOXNacmpBSGl1Si9ic3o5ajkvRWV3blA0VnJkL2VpN2EzTm5HcFpNYzJZZC9MWDhDU1V3SlM4RGpLUDlFaStyWkgwR1Z5UHdCbE9IRDNrOUFWbmtmSTdZdlIvK2xMcGRydHVYdXdlOVlpTUUxYWdTM01ROXhETDZIYlhYMTlyWldIOXh6SUx1elhLKzJZU3hXbEFrQUVVUzExdTBrSno3SncydTFVU1Fqc09oMzQ2SGczYTFPQzZNdFE5UXVMV3BVZFFlcGdYRlQraUlCM1hrQ2d2UXg1enp3SE5yUVpVSDhSUVVQbm92Y1Q0MEFnNE9KcnMzRnlZeUhDWWpYZ1dBZEltMlQzZkhpZTB6VUJtOVZxbGNJNmFtdnJvSyt2eHZIQ1NzUUZoN3JhYzluc0lMd0FvOUVHbzhOSkZGUUFGU2loREFoRHdJeGJzaUw4a1RVN242cXYweWRNR3o4WUtlby9ReEg5YmNEMmUvYTdaaERsblhCRzlzS29qNTRDTWVYaGg4enhxSmd5QWdueFNoZXZxRGtGUmVabWpGN2VFUUFMSjZ0RTFlbzNVYVhxaDlIZkw0YkNhY0N1SVpuSTJ6TU83UWNrQXJ3VHlyUXNESDV1Q3B6bGU3Rit3QkswR3JjTEVZSFZPUGZoWG1Uc09vV0VPQUJPRmp3amY5Z0lNSnc2QWsxNzNWV2RnK1hDQlFRbjkyejhmNmtBd2VrTmJCSG9zMzQ3MUNFdTZwNzN3aFNjK1dvWCtqNDJIT1lEUDZBK2JEREdmZUVxaE1tenJMUnY0ZWNmb05uVG42SFRHTmZUbldlRks0N3h4czFyNCtjRWdZY1Z5Umo3N1p0UUN3YnNITlFEK1lmdVFKdWVzV2d5Zmc2YWpCK0xIOXBNZEFPWTEvaWRIRUE5Z1UzVGJqQ0dmalVZUis3cUJ0QkxheTJ3NjJnTS9XbzBqdC9mRzZvNzMwTGEwR1Raa1JMUjU4dXZVUEwrWTdoUVQyWEhzK0xJWTNPUXNPQnJkQnpjR29McFBEYjNtNEg2TVhzUkZkSmdyVFJocVdMYXNtWC9MbGl3NEJtQlVnaUVRSURNWTBvcEJRVUV5aWlnMEFaUUZaekVYRnREdGFHQlVDanNJQ3dMYzEwMTRvZVBSR3lMSm9pTGprWnRSUVYyL3VkVkpJMThHY05uRFFHY091d1lPQUNsNDBhaXFmb1FqbjV5QVVNUGIwVjRrSURqOXc5R2xmU2c5RHluYTNMWEZSUVVvS3pNblFOYVg0dURKODdBb1FwQ3NzSUpzOWtPam1VaGNBS2MxRW5BUzRudEVBUVFRYURFa2R6cHlibjkydzJ0THptUFY3Y2Z3YWpVRVloVHdTOCtKTFpQTDFlbm5aQldpR2tEMUo4cVIwSzhlM0ZxVW5ITDZJNlNhVUNwQm5RblR5S3U3NU5RQUlBeURFMTZ0MGYxNmRQQUFKZjlKSzZucTRxcE1xRTdvcUl1b2o3ZmpvZ09rWWp2R1lrakQweEQ4cEIraUI4NERQSHQ1ZmFXUVBULzZkUWZmS1lNcWplK2c5enZkc05tdG9PdExrS0l1NXkwTnEwcm1GTVBZTmNjQitKNmRFWHl5SkVJVXJ2bnAyY3ZIUGpYTERqUGprQlVqMzVJSHREbEpwcFhaYVBuQkFCUm1abFFNd0NZTU1SM2I0WDY3R3lnNTAyUWNHUEtSWFcyRFlxOTMrRFlRWmRxVHAybDBCV1lFZFhSNTFvWk9IdjI3TE1MRmp6enNWc2w1YjNzYmRTTjBKVG5lVEFxQmdMbGljM09VcVZDQWNKeWNBWkdRQ0FzakVZak5Cb05BbXNLVUgrc0NIejBlaHlyL3dVVUFPdDBvRDZuQkJHcU0yRFNNaEFleEFCZ0VOKzNKNnJPTkxhcXJ0WlFXbEtDMHRKU1ZGZFhvYTZ1RmtkT25FS0pRNEhXb1VyWTdhNXFIVlFRSUhBY0dNSkF6UUM4UUFsQUNhV1VtZmI4ZjhaTkhkcm42WjdONHpHeWJ4KzA1d3F4cmREaVI3Qkc2Y1ZsdnRNRzRmZEZrQkQzbFZlaTgwZmIwSHZ4ZEtpNU11d2ZQeFI1eDJwKzgxR0RXamFIc2FENG12YXg3RitKZ3grZlJKZDMvb2VSVzdhZzYvMUQzZG9Nb0V6c2dkSDdma0xLa0U0dzdWcUZIMjUvREt4N3Y2WVB2SXdSWDY1QWVId0F6aSs1QjRmZTMzSFR6T3ZsenNublhvemlKbGwwQXFDS1JQeklMQ1JtWlNFcGF5UjZmTG9XVFc4SmJIU3RCQVlHemlvcEtlNExWeVVlRGFWVURWZjRsb0pTcXFBQVF5bDE5eXJsd1FQZ09CWXM2NENENDhCQmdOVnFoY2xraHNGZ1FGMmREanFPQWR1cUxVaVhMa2pLeWtLWE4vK0hsRjdYRmdweVZjQm1NcGs4ZW9BZVAzVUtaNHdVSGFJMFlPMDIyTzBPc0t3RENnQ1V0Uk9ISzJhTlVFRWdCR0NxcWtxVFFnUFZUeFRWR2x6VFp6ZWd4RUlRSE9DUDcycE1xdmNlY0JrclRIbW9PUWRFZHJ5OFN6NGl2UU9xOXU0RkR3Qk9BeXIyNXlCU1ZtRzI2dUJlbC9HMy9GZlU2Vm9ocWtVQUFCYXNSVUJVUmorMG0vY3NVdnJGd3BndjcrTE5JdWYvNXVEODlxdGpiUW1qeDRIZHR4cGxCUWIzZldLRnBkcHd5ZTBVR1FtMnJBUk91WG1qckF3QnJkSVJIaE1FQ0JhVS9iVDNrcUhhWkFMQzRwQTRhZ0s2djdZVXlwSnpzTHAzWmswbUJOM1NDU24zUG94T0Q5NEcvYm04bTJaZUwzZE9BRkMzYng5WXdYVzh5bC96RU5raDdlcmNkcEhoc0Z5aHNZbTNLRFVhc0hYMVYvZlBJVzBRMjlvR3F5a2NzZDI2SXJaYlY0UzNhQVpWRUhQWnRkSzBhZE43di9sbVRSTVIzQUJJNEFhQW9RTFB1T3h0VHNJVFFIQnloR1U1T0RnbldONEptODBWdE9zQ053NjBhU0RLQ3F0Z2l3aUh0blVxb2xxM2hEb2tFRUdkT29CbUg0YmVJZ0J3b25MdndjYlArMnJPMTVYWTdpNFlXVk9LQTNtVnNMRjI3Q20zUVdEdGdBQWtCQ25ocENBcXh0VzlCdFJWaDQ0Qm1LaW91SG1QanV6ZDdZRnZOK0xva1Jqb2EydVIwTEVuUmlScC9BaldpQ2hxRCtMSGNYZUFyNzZJMEFkZWNOdUJHcGY0T3g5SDNBOTM0b2NSSjZDeWxZR2tQWVJXL1MrcGxkekpMZGc2Y1N2c0JXZlFmTWxiY0RtYXFyRnIyRmp3Q2FsUW94NUc4eTBZT0ZRZWlzR2hjdE0zVU1jT1IrdkJIYTk4RXlYM1I3OS9UOEgrMi9zam9FVUxPRXFMa2ZMU2FuUVk2bkltYUxxTVJLdVdYMkY5dDk3UWRCbUIwUjhzUXRTZ1NWQy9kUmUyVER3S3hsYVBnT2hMRGdEendmL2g1OFZmSXFKTkM5Z0t6aUI2NWdLRXVhZmg3SUk3VUhSUmk1QVlOWFM1MWVqNndlTTN6YndLbHprbkFOQXF5dkhUN2VQQVdNckFkSG9NdDJSRUFkRGg0RDMzUUZmdmdORlFnUVBqUmtPcGJZRSthOStFMk1LNjlkejUyUG5ZT09RdkRVYjdsNzlFcTU0SnlGdnhLUEwyRk1HYVd3MVNjaThLWDlNaWJmbi9rTnpldFZmeVBROWoxeE9Qb095VEVNVGQrVFF5cGc5RzdkWjNjUGp0TFdBckw4TEIvWXJOKzFlaXlYMEwwWGw4VDNSNzgzWHNmbkFxU3Q1TGdaS3JoZG1TZ0NFL2ZZemd5NndWUWtqblVhTkczUUhndnpLVmxIZlRWSUZTU2dXbmt3b0FWU3JWY0RxZDREaU9FSjZubkVCaHQ5dmR3YnV1eWg5UlBRZWdhdnRLYkR6K0UzSWlBeEJsRFVQZkRkOGpKcjR2dWo3UUVqOFBHNDdRV0MxNHFuRTFEQVFhbkJPaEdtblFnUUFBSUFCSlJFRlVWTGlpQ2lvbXVKZVdpdVdJNnFEWEczeDFtWEludUhPRTV3VkNLVlhZN2JhSktwWHFmeTdyTDRkeWd3VWFiUkNpdEgrT2NhMjZ1aG9zeXlFeDhkcW9iWFoyRGxKVFcwbTE2LytvZlFEZzdGT2pZZW02RkIySEpZSVRnaEVVRlhUVis3ckNFa0lRRk5VdzBORlJVd2toSUJUYWtFQVA5Y05XV1FrblZBaU9qOEgxY09kUTFncHplVFZVTWZFSUNMcUtlQjZCaGFtNEV1cllCR2dDbFY1ZldXR3BySVVxSWhZQklaN0hZZzAxY0JnY0NFeEloRUo1azgzclpjNEpBSGhMSFd4bXhpdmM0MllSQWRieVVsQk5CSUtpUXE1NnJaU1ZsYzFOVEV6YUJjQUNWMmx4TzZXVUpZUnc3ckxpdkhkSmNhMVdpOERBUUFRRkJTRWtKQVRoNFdHSWpJeENiR3dzNGtJRDBheFpLM1R1bllua3BFdEJ1R3hkRlp4TU1BSWpnbjRiWTdOWUxDZ3RMVVZWbGJ5Mm1na1dpOVdkRDNvcGJjcnBsSEpCaVNDNGduQkxTMHZpVlNyVjNFdVBTeFVTSXNQaGw2c1RkVVFjMU5lNFQwQmM0OEdXbXBoNG45WUliWHpDZFIwM1VRY2k1RnBxYlRGcWhEUlBidVNyUUlRaysvNU9IUllEZGRoTk9xK1hPU2NBVUFSRklUam9abDE1REFJVGtxOTVyU1FrSkV6NzlOTlBjdTY3NzM0ZUFBOVFpYlhoVW9GS01aZVVLaFFLd3JJc2RXVWtLS0JTS1dHeHFLVE9Zb0dCV2hoWU84cEtTeEVWR1ltZ0lOZUVxYU91ZlAwdWEyTzcxSVRGMVRKUEJEVlhhVzhISEE0V0hPZVJNaVY2UWdtbGxNVEZ4VDBPb0tzZm9xNU5FbWY4SDFKdVRmRlBoSDllLzFKQ0NPbDB4eDEzVEhEYjJUU1VRdTVJWUVSY2tHVWxnT000d25Fc0hBNFdkcnNETnBzTkZvdlZuU1N2UjExZExTb3JLNlhXZlZkdFcyenNpOHJLU3EveTNpYVl6UmJZYkZZUHBzYXluRlJqU1JCNEtjSGRhclVNWlJobXJ2OXlYN3VFdE83bW53VC92UDRsSlRBdzhNSGMzUE5IVTFOYkh3YmdkREczUzdZMlNJbnlVcm9WV0phRFFzRktTZkkybXdwbXM5cWRKSzlEVUZBUVFrTkRFUkVSZ2ZqNCtLdmtuRDZFNHpndkZkUlZXODFtczhKbXM3dTlvS3hVMmx1dWdsSkt5YjMzVGxOb05KckgvWmZaTDM3NTUwbkxsaTJucEtTa3lEMmtLamVKWXVBTy94QUVNUVRFQ2FmVFNUaU9BOHVLck0wT204MEtzOWtNZzhHSSt2cDZWRlZWbzdTMEZGZGJQOUluc0xsQ082cmNLcWhCcXJObXM4bVpHdXZSQWRwZEpaTlFTcGtQUHZoZ05vQkIva3Q4N1ZKZFhZM1MwakwvUlBqbEx5c0toYUwvNGNPL2pCYUJqVktxRXNHTlVxcWdsREx1NnRseWxWVENGWWZEQlc2WDZyWVozQ3BwRlVwS1NuNGJzQmtNQm5mUGdocm9kSHFZVEs2MmVXTExQSG1OTmFlVEkvSXVVd0JJZlgxZHFrS2hlTXgvZWYzaWwzK3VSRVJFVE51eVpYT1NGN2hKc1cwQWlDQUlNdGJHU2F6TlZaRFM3cmEzV1dBeUdhSFQ2VkZiVzRQeThuSVlESVpyQnpaNWh5bFhlVzhMckZaUFVET2F6S2cxbUtBM1dXRmpPYm5EZ0JFNDY2eFhOdXhNWExCdUwvYVdtUzRkMkduSE43c1A0Y212dHVIZjIwK2d5a0g5Vi85Nmk5T0MydFBuWGNHa3YxTXFWcitBZys5dnUrNUQ1Q3QveFk3Wnl6M0dhRGkySGNlV3pNZSsyWE54NXJ1OUVIN1hMd2pRbjlpUDh4KytneE52cm9URDY3dXFyU3R4Y1Baak9QTEtoN0JhWmIva3JNTysrMmZDNUUrR3VWN1M5TlpiYjczZERXd2VRYnNpYS9OMEpIZ3lOeEhjckZZYnpHWUxqRWFYU2xwZFhZMnlxd2hTOWdDMnFxb3FWRlpXdWhMYzNYRnFMaFhVSnJPcjJXR3cyTUVRVnlFUHdja1JweXRtalZnTkZRTm5mN1Q1WVM0cUVTTmIvajk3NXgwZlJaMy8vK2ZNbHV4bTAzczJnU1FraEJZZ0dDRFNJUUtDb0tBQ0l2WUduT1c4czVldkRVODV6M0xxejNZcWxrTlJFYkZncEJjRlJLUUhDTTJRaFBSZU45dG5mbi9zSnRrVVVoQ1UwM2s5ekFPem01bjV6T2Z6bWZlODYrdHQ0S0gzdnVGQXZXc0xmNVQrSFV0emJNd2RNWWpnMmp4dVh2SHpyOXpBQ3RyQWRKUXQxejdhVkhiMHEyUmtYUm1XeXRxelBzVGpMejFMOE1VejhTd2l5dmxpSlg3REp4RTNZeFRaajk5TTVvYmNYM0dGS2pKZmVJWHF6RDFrdnZweGk3bW8zdncyUC96amE2TG5Yb2UyYUNPYjdudTF1Y0pLSFV6TUVDMEgzdCtnN0tPekJKMU9kME5tNXVIQkhscmI2YUtrTGJTMmx2NjJ4cW9FbDBsYVhsNUJjWEV4SlNVbFhSZHNoWVd1Wml6VjFWVXRURkNyMVlMTjFpallKUHk5dFlKV0ZCQUZCTkZWeGk4QVl1SEo3TnVQK01WeS82amVqRW0rZ0xrSkFpdjJGd0JXTmh3dTRkWkpJeGthRThIOFMwZGdQM2FVZzJabDhjOFdpcjVld3Y2WGx1S29POG5oeFl2WnYvaDVxaXFrUmlsRjFwdlBzLzJPTzluNzhoSWFURjE3cGNoMWhSeGEvQWpiNzMyRWdveDhUNmxIOWpzdnNmMk9POW45MHBLV21rK0hndmNJeDlhYWlKdmNwOFhIZzU5NWc0UkxKeEkxY1JhUktTR1lDb3QveFV3RU0vS2o1YVRlZncydEt6Q3pQMXhLN01LSDZURnFHSU1XUFlMOXUvOVM1bUhWUk0yK25PTC92b2RGZWVPZU5mVHUzZnRLV2dZUk5CN21hS1BXMWxSTDZobElzTm1zV0swdFRkTHE2aXJLeXNvb0xDenFtbURMeTNNVnVMZU9ncnBNVUZkYWgwZVQ0K2FBZ1N1Q0sxb3M1cm5IeTZ1bkowU0U0R3lvNTFTZGxjU0lFSTZYVmdGT0hKS01TdVcrbktoQ0pkZHpzdEt1clB4WmdrLy9ZWVNOR1lLb0NTSTRMWTJ3dExIbzlhNzVQdkgwQW83dXFTSCt0bHZSNUc5a3c5MHZka2xiTGxyeEdlb2gwNGlkRU1kUDE4eWp2TUlCT01pNGV3Ni9aRHBKV0RBZkgvTWVOdjcxMzEwNlg5M1BQMkJQSEk3ZmFiSXJpNWN0SWp1M0YvMHVIM1lPWnNoQzlkRTgvUHNuVW4veUdEYXZSQUlpeXFuSmFuYVhpQkVwQklsN0tjNnlLUnZxTEVHdFZsK2NuNTgzbXFiY3RtWmZXMk5ESnplZGVJdEFna3U0MmQzNWJXMmpwS1dsSmVUbDVYY3MyR3cyRzhYRnJsclE2dXBxdHduYTRCRUZQVTE2aDlNcHlMSXMzdkhRWXlxTlJ2TVhzODJHdDFiRnAydldjczJLbjlGcjFOVGFIWUEzSStLRFdQRmpCbVgxRGF6ZHVvOWNXY0JzZFNncmY1YmcyM3NReG1GSmlMb0FJbEpUTWFhbW92TUdLQ043NVM2U0huMmNpT1JrQmk1NkZPZTY1VlRVZDM1Ty82bFgwM2ZLS0tLbTMwYjhNQ2M1R3pLUVMzZHliS09Ub1l2dUlpZ3hrZmk3NzBYY3NZS3FoczdQVjN2eUpJYm9tSGEvYTlpL2dtMnY3U050K1JMOGZNOEZsYm9KbXhsVW1tSzJUQnhMWm5vdWFqMDQ2anpOQmg5OFluVFVaUlVyRytvc0lqSXljblpLU29yT3JiVzFDU1EwbXFYdHBYKzR0TGJHS0dtRDJ5U3Rwcnk4bk9MaUlteTI5bDlDYXBjSld0aWlINmlyL3JPeFpLcFpXMnRNeEhVNm5hNDJkcElrQ0lJZ3ZQTDBZL09CVkwxV1M0UEp5ZFhUTCtFU3A1cTlPemZqcDNIVmhONDJZd3JXdFR1NWZXa1dBL3YwWlh6UUNid1Zkbzl6RDBjMURkWCtlSWU1MVNUdlVQUysxVmdxZ1U3NjFCbzhraUgxeGtqS0s4dHhsTlppdFJTeTY5WWJtOVI5cjZRa3NBS2RVUC9MT09BME5Pa1ZPN1lSY1BGc0FrUFBGVmU4QWEwZW5QWUlKdjYwRDAxSUVEOHNCcld2dnUyZlNrNWwzNXhGaUtJNGJNMmExWk5EUThPK0JlenVId2R1V25GY3lidUN1eTlwazV6eDFOcTBXbGNnUWFkekJSS3FxaHBOMGtKaTJ5bmZVNXZONWlZNklsY3RxR2VUNDViNWFnNkhRM0FMTmNIdWNBbTFqQVA3L1ZRcTFYeUFQcUdCL0hLMEhORnJNS0hBOGVKeUVudTRPaEpwdlFPNDUvS0wzUzZhUWlaczgrWCtVSVZsOHV6dUlBRkJjcmFrSEZNSDRCMVFRME9wRGVLMFlDckRYQmVBTHFnTE9vNkhyOHRjV0lSK3NCRjFtQUV2UXp5alB2NFVRemZmUzM2UmNaZzN0SitIRkRUeFdwSnNvZTBia1NYNTRCMkl6dmZYRkZmcUNPamZnNXJNNCtndUdBYW1ES3BMd3hnUTc5dkNYRzBvTUJFU0Y5bnVHSnhhZnd5QnZzbytPeFBQWjNEdzdFY2VlZmo3WjU5ZGJBUHNzaXc3M0F3Z1RyZlcxcUoxbjlzeWxKdWpwRFozbExUUkpLMmhvc0lWU0FnUEQwZXZiL21DRXB2b2lLb2EyK2MxZURROHRqYldndUp3TlByV0hOaHNEZ0FCV1JiMjFEaHVYYmIvVkgrQTJMNTk2VmVidy9QYlQ3QmwvMTQrelpLWmxld3FIaTQ2bGN0SGUwNnc2ZUF4L3I1MEU0TXVIRXFjSXRmT3NsSVNnNi82QkpudmZVSGV1ZzAwbUFCQ2liMWlHSWVlK1FmRkdmczUrTVJpVkpQbkVPelQrZWxxMW43TTBUWGJLZmoySGJMMmFPZzVzVDlDV0NwOXh0cjQ4ZjduS2Q2ZlFkSG1OZXgrNFowdXBaajRqUmlKa0xrSFV6c2VpTXBOS3ptK2VuZTd4KzI1ZGd6YlgxN1Y1V2tvK3ZZampueStBYWU5bkt3UFBpUjcreUVBZWwxM1BUbHZQRVB1OXpzNThQaXphS1pjUzZoSEViMWNjWUJ5MHlBaStyVFZHZy9jTVlYdm4xMnU3TEV6aENBSWZlKzc3NzVKdEsxRzhFejlhSkcwNjNBMCt2V2JUVktMeFZWTFdsZFg1ODV0SzI4M2tLQ2FPL2Nxajl5MUttcHJhOXBwZW16RlpuT0ZZcDBPUnhON3h5UHZmUmFrOXZaNTNTcHFnNFpIQjRIS2k3UitVUnc0bGtWR3BaTTdMeDNITUhlZlE2Zk53cGJNYlBhWDFESXdhVEFQaklubjkrQU5OWmxNT0owU2ZuNSszVHF1dExTTTRPRGdidlVJUFpOanpuUjhydDNqalhIU2haaU9IcVFodndqRHdBdlJld3NFajVtTXF1d3dlYXUzSU1hT1pQaWpmMEhiaFg0VHdlTW1ZenV3bHBMTVdnWSsvVS9DWS93QWtmQXBNMUNWSGlRdmZRTzFoYlVFanh4TFVGeGs1NVJIK2tqc0dVdXA4UjVEV0srV0xDK1N0UUYxV0N4QmNhMXFBYVZpRHYvemJZeDNQRVpZYk5lWVlhcCsya1JEclphdzRRTVJHa3lJZmowSjdtMUVGM2NCSVZGMlRxV3ZSWWdlemZCSEZxRFZOSSs2NkpQWGFPZzFuY1F4N2ZjOTlSc3dqT0Q0U0VWS25hbk9yTk1aTlJyTitrMmJObHR4MTQ4MlVva0xndERZV2Q2ems1d2dpZ0tpcUhML2lPNE9WeXAzbHlzMVdxMFduYzZMb0tDZ0Z2Umd3amZmZk8zUnk2QlJ1Tlc2bVR3YWszUE5XQ3lOWEdzT3dlbDBpcklzaXphYjlWNlZTdlhzLzlMa251OThiR2M2dnY4VjJMSTJzUEhwSDVuOHdlTmRlckhaTXI1ZzFTTS9NK1BiNXppbkhsbEhCVnV1K0F1RFB2eVVvRUJSa1VMbkNOWFYxZjhLREF4YWlZdXp6U1FJUWdNdUQ2MU5FQVNISUFpU1NxV1NHam5iZERvdldhZlQ0KzJ0eDJBdzRPUGppNStmSDBGQmdZU0doaEVWWlNRdUxvNysvZnNUSHgvZmJJcDZCZ3pjWkpHTkdocDJ1OE90RWpvRmQzcEhVK25VbmoyN2ZWVXExYzNLVWlub0RyVHhFNW5hUmFFR29FMmF3ZVZmTGVhY2g1blV3WXovWnJraTFNNHgvUDM5cjd6Ly92dDhHODFSZDRSVVJhdFNLM2R1R3c2SEsxSnF0enV3MmV3ZVVWSlhibHRqSUtHMHRKU0dodWJRdk9ncWNxOXZaWHEyekZscmoydHQ0TUNCTndJS3VaV0Njd3RSamFoV2hNMGZ5TmNXLytDREQwNXdDN1oyZlcydE9kdmE1clpaV3dRU1hFWHlya0JDMDdacFdlVGVtSy9XTmhMcVp1NFFBT0c2NjY1VnFWU3FHNVJsVXFCQVFYY1JGQlEwbzFldlh0cDJ0RGF4VVd2enFFaG95cDF0RGlSNGtsSTJGc203MGo4c0ZvdExzTG0wTlZlUmV6dEN6Wk9TcUVsYmUvZmRkNjhEQmlwTGRQYmhJdFZUVWdvVS9LRzF0Z0hidG0wZDB4V3RyWDNOclZHNE5SYkp0MHovQUJCYnBuZllXdmpXbkU2bk8yK3RtUmtYRU5WcTlYWEs4cHhMd2VhblRJU0NQelRDdzhPbnVRVmFvOWFtcGhVWlpXTTFRcU1NYXVscnM1MDIvY1BoY0tCdXJBZHQxTllhODlXYUt3eWFmR3U0S2IrbkFxT3JhMnVwc1l0RUJmclFyZ3ZFS1lPcWRRS0FrNktxT2d6ZXZ2aDVxWlRWUFEySzEzeEtWYkVWTWFRWGZhYVA2ZEl4dHZ3amxCU0s5QmplcDh2WHNSY2ZJV3ZOejhoQStNUXJDSW8rVjVxaWhPUm9XMDBxcU5WbnBTdFdpeXRWNVpLenQ0eGVGM1dEQnJ3dW4yTmZiRVFDQWxNdkpxSmYxK2luSzdhdlJ0VjdIQUZoM2wyK1ZNWFdkRXF6eWhGMDRjVFBuY0xaU3VXVUdpb28zTElOcTBuRWVPbWw2SFcvM1g0MW5kaE5yVFdVeUtTWUxoOGppdUtJNDhlUEpic3B4QnVMNCsxdXJjM3BOa2ViTkRhbjA0bkRac0ZVWDQ5VHE0WFFTTHk4dkZyVmtUWnFiU1dJcm5yUTVnb0REMjJ0VGNBQUVMUnEyOVYzL2ZzRHByMzFMWC8vNkV0R3Y3U0NIYVdOOVhaV252dm9DMFkrOVI4U0ZpM0hzMFRWWWFwZy9pc2ZzZUN6elZ6NjRsSStQRkttU0xEVFFPVmxRRk56aEQydmZON2xZeHIyZmN1K0Q5WjJ6eVFRdFdnTUJvby9lWkhDektwemRqK24zbm1ZbFNsRFdabVN6Q2ZHYUQ0Zk1wU1ZLVVBaK01SSHYrcTgrUjh0NXNpR0l5MWZuUVc3K1BtRi8zYnZSS0lhamNGQTVkb1B5Zjd4ZUpjUHkzN2pNWW9PVlhmdlVsNTZ0R0k1KzU5Nm5iTlhhdTlnOTAyWDhNdW1RNWhMeTVIT0lUdkp3WWR1b3JpdzVRVXFOeTBqODh0ZDNUNVhiR3pzUkU5enRGV0VWR2dkU0hBNm5UaGxHV3QxT2ZXVmRVMFZDV2F6cFVscmM5V1JsaUUyVWhKNUNqVjNoWUZuMEFCWmxvWHE2cXFCZ2tvN2U4R3NtV3gvWUI0cjc3Nk9CL3A3c1dqRHdjWkhrc2tqTDJUVmdvdG8vZTVmOWYyUDFQVWN6RGNMTDJmbE5VTjUrYXZ0VkNqME1PMGlkTUtsOUpxY2VucnRyS0tFMmxPRk9OdVpQMmRESFhYNXBiU2g4WlJzbUU3bFlERlptajVTaDhVVFAzc1dnVkcrcDMxZ0d2SlBVVjlTeGEraEJlMTUyM1BNT3JDZldRZFc0ZWNkeUtpMSs1bDFZRDhUbjdxMmVYaVNTN016NWVkZ3FiTjBycUU0SEppT0hhRG1WRG1TdzBHYjlyaVNqYnFjZk95Mkxtd3lRd1M5WnM4aU5QRTByZVVjTmt6NXB6QlZ0TS9jYWkwdHhGelQwTTVhMUZDYms5OWluUUtIcHhFLzR5Sk9GK2lWTENacWMzS3dObGk2T0xzU2tpT2ZzbjBpU1lzZXBQOWZic0Rnb1VBNlRSWFVuY3B2ZDYvSUFBNExkVGs1WFpvbnllR2dldWNXVERVMjE1eTN1L2VLMnpLOXVLOWhiV2haY3FMUmFDN2J1SEZERHcrTnJja2NiZksxdVZzT3VJUWFndWp0RFJvVkRtZGpMYWtIdFZGZERhVTUyUlJrNTZIMlRPOW9McHR5NG5SS1NGS3p4Z2FJQm9QaEtoQko4dWpnM2pQSUgwdEpJLzJRbWlHOW9xQW1wODBVN3NncVpNSkZZd0VJanVsRlA4ZFdkcFk1dVNSY01VbTdZOUx0dkdvTVplWkl2SDBscXJNYlNIMy9FNkw2dUpydTJnNnZaczJzeldpb3dxd2Z4dVJQbmtldkJmT3hMV3llL3lBcVl5TFc3T05FM1A0dmhsOC9yc01yeVhXNWJKazlENHR2TDdSeUpaYW9TVXg3cGJrL2orM1lKcll1V2s3eUcyOFI3UDhyNytySWwzeXk0SE1TZXRWUlZpUmhyM0l3ZXYxYUxKL2V3L0hTa1Z6MDJDekF3cGFSL1lqOU9Kc1l6UTdXL2UxRkxDY09ZamM4UmZWM0FSaEd6bUhNUFhQYzVtZ1dXNjZiaTYydW51cFNQeWF2WDBIQUdWclo5aFByV0hYTjAvajI3b1ZVZmhJcGJqb1h2ZkVnV3JkZ3luNzFYbkxWS2l6Wm1VVGUvUktwMTQ4SEpFNjk4d2k3bC95RWYzd1F0ZmwyUm42NGpQRFlqZ2RSdmZsOU5qLzRMdjc5RTdBVVpCSHo0RklHVEl6cjhKaTg5LzdCNFc5MlVsdFR4RS96NXFKV0J6RHMvWGNKOW9XQzl4N2hwemUyRVJBWFNIV3VqWkdmZlVwa25HdXhDcGZjejRHZEVtTDJMcHdhYjZ6K3ljejg1SituZFEyVXIvc1B1OTllUTEyMm1ZcDdydWFFUVVYUCtVL1JmL0lBQU16N3ZtYjl0Y3VSS241QjZuTU5VOSsrRnhWUXZXTTVQOXo5UFBvK2ZURWQrNFhFZjd6YmRBekE4T0dwWTRGVGJxM05CcklOQkJXeTdKUmxXWlJBbHB4T1dSQkUxR3FYNWlaTE1vTGtiSkgrMFZCeWdyMHJ2aVF5MmtpSjFJQzZ0Vyt0MFZIbjB0YWFUZEJ2di8xV0o0cmlWUzFYM2NSN083T1lNK215VHJhSGxiSTZCeVA4UkY3NGJBM0pvMGNSN2dObHRXWUk5MUhrVmRjTkdZYTh1d2F0citzQktmcmdFZmEvczVLb0YyNXh6WEsxbHFscnY4U2dzN0g3cWxGa2ZyMmZsTm1KN1A3cjM0aCs3RE1HVGV5RFZIZU03OGJlU3NYbFd3bnU0RG1yMzU1T1ZmQVVydmo0TWRmYnVCVTlqTE91bElyOWg3Q2RKWHRLUHJHSHdCYzJrenJjQ0E0TFRxRHdkQ1owOUFpbXJGakI4U2ZtVWhYM2QxSnZiS25kU3FVbUJxNzltbUIva2QxWERTZjMreXdDcHNlZm1Wc2dhZ1NYL3JnVmpSckF3cllwUThuZFBaL2V3MTB2RSszZ1M1bjQxRHdjaFZ2NWFzSmpKTTdhZ2lGN05Udi9jNHlMTjIvQ3oxZWsvSXRuK09uNTk1bitlc2V0UUxLWHZrdmNveCtRUEtNM0lPSHNnaGJWNCtiSDZYSHpLVllsWE0zSUZTc0lhc3hrcnN2ZzUzK3VaL1MycllTSDZjaC8vVzUyUGZjK2w3M1YvSEtxMm5tVVN6YXRJeUJZaDlOaTZkRGZHVEo1QVZNbUwyRHJoRGlpWHYyY1hyMWJwa3liSFVZdS8rWTUxSlljMGdmTnBLemlYaUo4QzlsNSt6OUlXcnFSWGttaDJQTzM4UFhNcDRpYnVCdzNWU0ErUG9acDgrYk5XN0ZzMlRLcnl4eEZJeURiWlJBRndmV2Y0Q0t6eGVsMHlrNm5VNUFsV1JhY1RuY3RxYnNCakNHQTZObXppSXdNcDJmUENOU05VVkNYR2VyMFNQRm82VitiT0hIaWJLQzV6N3hrNS9VdlZ1TklTR1ZCLytDdWVuVXc2RFJvUkVHUlVXZUltdTByeWZ3NEhWTkZIWTdxRXFTK3plOGFROHBvRERvQUxTR2poM0g4d0NHWUFxV0h6S2kyZnM3ZUhTQWpJVHZ5cWNxdUozalE2VjhxK3FRVXhJemIySEszbGZEVUZIcE9tNGJCb3pKTVAzUXVjdzdQUFhzM0ZuTWh2WWE3VFVHMTdsZlZFYXZpa3dqMmR6MTRodWhJNnFxcnovaGNnbWpoeFBPTHlkOTVBTHRWd3B4VFMwQmxEZUFTYk9FalJybUdiQnhHY1BCSktyTXNtSGR2QTIvSWV2bFpWd3YweWhQVUhQVEM2WFllblE1aEkwYnk0ek4zNERoeUNjR3BZK2s1NFlJekhyZmxXQWJtcUdHRWhibWlDQkZqeDFDN05MM0ZHQUltemlUQVhjdXQwdjI2YUVOZ3loQlhkWWd1QWtOSURaWmFjSmJ2b3J6R2k2QXYvMFBWbDRCa1Jxek1wS1lLOU0waUkvcjU1LytWdW16WnNzMk41cWpzTWtjZElEdGxHY25sYjVOa1NYSzIwdGc4b3FSYU04VS9iYUdpcHA0Q2pSZnFSaFBVNld5ZDR0R2NrQXVJYXJWcWxzZjdtazlYcldhckdNZjdVL3ZUZVY2NEY2Rythc3BxbmZ4bHhrVkFBLytwaDFBL3ZTS3BPclk4VzdvcVRxNWp5NlBMR2ZmRmZ3bUxEYWJxNnhmWjhyV3RJd1hQZFJKTkVCSFRwdUxqWHFnZVU2ZmpHKy9kNGJYVTBhbGN1bTA5UlZ1M1V2ak5VdExmV2N2TXpXK2hQVWUzS3VvTnA5bEhVdE8vY2hkNVNRVlBCMVkzaWhiYWU5MW12L29RK2FVcGpGMjJDSjIzbXQzWERVT1c1Tk9md1gwOXI1akJSRTJkNnY1OEtqMXZEbWd4bFBhdUZYWGI4MXlTdHAraXJUOXg3TEhyS2J6dVZVWXRTRHRuMjB2cmMvYWVQMEU4VGRHYmZ6UlJVNmMybGNUMW1EYTdqVnNnTEN3c0Rkald5dGZtbWJBcnUxSS9YSlJHc293Z09KMnlTMmE1M0doVm1ZZEJOakpnU2hyUlBZeUl6Y200enZiU081QmxXYWlxcWt3U0JPSGlSbjlaK3ZyMWZGWVh3anRYcGpTcGxKMXRtWkdKUmpZZnl3YWdMUGNreDlTUnBJWXEvclhUemxod0NPcnlYRXdlY3N0ZVZJUWMyWmZnMkdEQVFkNjZsbzFIVEh1MlVXOEJzRkcrYlJlaEF3ZUJiMS9DK3BocHFBc2diR2dLWVVOVENJaUxRV05vWGpodFNBaDFCUzBicURqcTZzQS9uT2pwc3hqMjBwT284NDdpNmZ1MVpXMWwrMTBQVTFsMzd1YkFLeUNBQmpmOXM3UDRBSlZGTGNtUjFIb0Rsc3J5cy9lZ2h3UmhPdFdTYnJxaG9JQ0FJY1BRZWF0eFZoeWlhR2RMUHJtU0hWdGQ4MVc0aTRxcTNnVEg2UWdaUGhwcjFpSDAvWVkwemJtZk1haFptQm1DMERxS01WVzFsTlMydWpvTThja2szTGlRNVBtWFVYMzB4Qm5maTY3UElIUUZ1eWd0ZFFVaGluL1lpbC95NEYvTnFLUDIxV01yNzFvRVhSVTNqQkJ5c1JwaW0rY2hMZ3BOcTdlaldxMU8yN0JoZlk5MkJKdXEwV0pzbEVlU0pDRUw0TERaV25TMnNwZ2FFUHo5Y1RpdDFKZG5vMjRVYW0yckRKcUNCb0tQajgvbHpjWjBDWXMzWlZHcjh5THRXVmVvWFJ2YWkrMExKd0R3NU5zZmtGNXNvODdtWU1haUpTUU5Ic2FITXdZeGZjd292bnRuRlplOWVaS2FxbHIrZXZrMGdwVVN3Tk1MdHJBUkRKNFp3dW9MUjZBMnBuRHh0NitoSHpZVkkyK3pldVpjdEdJZHVxQ1Fsb0lnU09LSFdaZWpwZ3FMNzBRbXp4Z0V3TkJYWCtiNytkZVM5MVlDYW5zNTlTWWprOVl2YVNMUTdYWExQV3k2K1Q2K2ZGOUgzTjlmSlBuS29kVHYrSWlOLy9jSmdYM2pNR2RuRW5MN1EvaDd2SlNkNVNmSi91d3JZaDViVE5BNVNuOExtWGdGcW4vT0lYM21UNmo5SXRHRnROUnpqSmRmejlGYkgrS2IxYS9nTi81NnhqOTY3YSs2WHZUY0JaeVlONStWSTk4azRwcUhHSG5ITkdLdXVaWDFDeFpRdDNFZ2xoclFKN1JrWGJFZldNMmEyV3V3WkdjUys5ai9JOEFiR0RDVjFKdTJzMzdDT1B6N3hXSStsWTNmcFE4eTlwNUwzVTl5VHdiZmR4RmIwMGFnOG90aFRQb0tnbjNneUVOenlEMnB4emRVUzlYeFVsTGUvdHVaMzR6dklGSWZ1cGp0MHlmakh4OU1kYmFOa1o4cyt0VnJrbkRUUXJiZlBaTmYvQTNFM1AwU0E2Y25kZkNtTUpMNjJrTnN2V2tLSitMN0lsZVZZZ2xLWmZwSGk5b0kyR0hEaHFVQ3VaN0NUWlpsdStDS2tFcXlJTGpOVVFtVmx3N0pWRTlWdGdsYllEamFXQzkwNFVacU0zOGlxL3drSllJT1lmRGd3ZTcrQm1Zc0ZvdGd0VnF4MisyQ3crRVEzQ0ZYbGRQcDJBUDBQeHUyVlVsVlBYcURBVC90NzZPdG5lKzBSWjNEZ1NrL0gxVmdCRHBEVzcrSXM2R09obG9MUGhHaHJjd2RpWWJDZkdTdlFBekJYWk5Fa3EwQlUzRTVtc0F3ZEw2NjMyVzlaSnVKK3RJNnZLTWorTDMwZTJkREhRMmxOWGozakViVnpzdllXbGFNcFBORDc5dlN2SmNzSmt5bEZYaUZSYURWZFcwUDJHcktzTlpZOFRaR296b0xsQ1pPVXcwTkZTYThvNDN0anYyM2NhbllNT1VYSS9xSG9QZHZQNWxabHVXam9xaTZBNmdINm5CUkdwa0JpNEJnRjBUQktRaUNwRmFyWlkxR0kzdDVlYUhUNldTOVhvKzN0N2VMMHNoYmo0OVdUMWpQSGk2TnJka0ViZGJZY0NmSW1VejFhV2RIcUxrY0h1R0JTcm5RcnpRR01FVEhubDc5OS9iRjE5dTMzYm4zTnZiczNtcHB2Zkh0MmZOM3ZWdEJhOEEzMnZDN2prSGw3WXR2QjZrYVhxSHRWeXFJT2dPK1BiczNkcTEvS0ZyL3N6aDJneisrQnYvZmQ4dUtXZ3lkN0NOQkVQb2VQSmpSZCtEQVFmdmJtS1BJVG1Ra1FSQUVTWEpwYlkyQkJNODZVb2NrSTJuVjJHd1d4TWJHTE0yNWE4MytOVUR3OHZLNlRCRW1DaFFvT05lSWo0OGYwY29VYmMzNFFYT1psWVNuN1BJc2tMZGFiWWdldmpYQjdWc1RQQngyb2lBSTA1VXBWNkJBd2JtR1hxOVBvN242b04wV2ZhNGZxWkg1UTJpaHNUVjF0ckkxYW15U1IrREFwYWtCZ3RuY01CV0lVcVpjZ1FJRnZ3R01SNDhlR1VqTDhxcEd4by9HMUROQmtqeUw0NXMxdDJiMmp5YkIxb1p6emVYZTBHcW5LblA5MjZLMHRKVDgvQUpsSWhUOEtSRVRFelBNVTJOem02T3FWdVpvQzY0Mk40VjRDNjFOZEFjTW1sUzd4Z1BkWnFnaTJCUW9VUENiUWFmVGpXK2xyYlZuanJhUVdhMERDWGE3SGRIVERHM1UxQUNob2NFMG9YMHoxTW5Pak1Nc1dybUJlNWR2NHYxOXVSNzBLekpaZVhsOHVtMHZyMjQ4U0szSFVRNXJBOXNQSGVldGpUdFpubG1pck9CdmlFUDNYY0dKSGNYbndVZ2tmcjU2UEFXbi9qaHpheXZOcGJxdzRneVBybVBiWlpkUzJxWERiVlJsSE1KK0ZoaHhhamN0WWNNVFM4L3FQTWdORlpRZXlXM3orYy9YakNVdnAzdm1hRWJHZ1Q0ZVdsc0xqYTN4cHlWWG05UW1RaXEyTWtQeE1FTW50cjgzNi9ocWJ5RjlZbVBFelJLVUFBQWdBRWxFUVZTNHRIOFVtN2RzNFBFZkdrZHU1cjMxZXpoU1hNSmJQMlMyRUd5bGVUbThzemViL2IrYzVJdGppbUQ3TFdFdEs4QnV0cDBISXhHSm5yY1F2OEEva090ZzFTdnNXYkwrakFXOXBTQVBSMWU2VFZQT2pxdHZwTnA4Rmw0dnBrb2F5czR1LzU2VSt3TWIvdnBpbTg4dGVUblk3ZDA3VjY5ZXZaSTlOYmJUbUtONG1xUE5XcHRMc0ttYm82R05UQjR1TTFRVXhmWUZteGpBNGhzbk5mMGEyRkRHWC9ibnd0aFl3SnRuYnA0Sk5UbDhjM0JuU3pHYzBKOFBFdnF6ZXNOYVBxaFRoTTI1UVBYT2RJNHZYNDhkRFFFanA5SC95dkZOU2JxMjRxUHNlK3gxekZaZkV2OTJOeUZHWDhCQzNySVBLZHA3Rkx0ZFRmQ2tXZlNabm9vQVZQK2NUbVdsbm9ZOUc2aXBGSW03NlhhTVNlNGlkVWNkMmUrL1ErSCtrM2pGRDZIL3dwdnc5dTQ0KzlOMDZBZE9yTm9Pb2hidjBhMEViODUrTXBkOGdxbmFpaUYrQ0gwWDN0QTVBK3hweGxDemR3MUZCZjcwdlhRRUFKV2JWMUlsSlJKL1VSSmw2ejZpUVcya2NuTTZGbWN3Q2ZQdklEVFczLzJ3bDNMOG5YZW95Q3JCa0RTTy9yZGNpVmJkcUkyVWNlSzk5eWc3VW9CWHowUVNicjZWQVA5cU1sOStuNG85R2RUVmxiRi9jVFpDWkRLRGIzUjVieHdWV1J4OTkwT3FUOVVTTVBZeStsMlY1azR3dHBIMzBWdWMybm1TZ0xUSmRFVUJxL3grQmFkKzNJL1pWTU9KRnhaVG9CV0puTE9ROEhoLzEvbVd2VXZlanFPb2pRa2t6cC9mVk5qZXNRSll6YkdYbjZVOHU0cklXVGZUYTB5L0pzMHcvL1AzeVB2aEVLcUlSQklYZG42KzNBOWVvdkxnQWVUaVhQWXRYb3lnQ3FUMzN4WTJrU2FZVCt4azk1SlBzWHRGTStDZXUvRnpsN0JZOGpNNDlzN0gxRlU3Q0oxNk5ZbFRoaUlBM3Q3ZUk0RFBXcHVpamVZb3NpUTVKVW5BNlVRbHFtVkpJd2xPdTAwMjFkUmdreVFzWHQ2SWpWTFBuWlNMTENOVVZsYjBwNHZOV282VWxwTm9ERkdreXU4TXVXUW5HK1kvVCtqTWErbHozUlVJNXBvV1JJQW5sMzlGNkNXekNkQmxzL1hCMTVwTW9acENPMUd6cjZQM3ZHa1V2WEk3QjljY0E2Qm1Wem83L3ZZNG1wUnB4RTdvd1k2cnI2V2lSZ0ljWk53OWgxOHluU1FzbUkrUGVROGIvL3J2VGg5UVRYZ3NZV21qS2ZuOFZWcVNiVFN3ODZicmNmYTVtSDd6YjhRL1FNTGE2UnYrOUdQdzZ6dUl3bGZ2NDhUdVFteFpXL25oNGY4UU1DalJwZk9zLzR3ZEQ3eEk0T1M1R0JNZGJMbjJUc3dPbHhXeTg1b1psSm1NSk41Mkl4ejlqQitlVzk1a29mdzA3eklLQ24xSnVHMCs0YjI4cU0ydEJMVXZ3ZVBTOEU4TVF4dmRsN0MwTk1LSEpycHZLWjh0TStmUUVKQkNuOXV1b3Y3Ylo5bjl3WFlBU2o1OWxsMmZIaUx1cGhzUjlxMmtyTER6eW41ZDNFREMwbEpSYTcwSUhKTkdXTnA0ZklKY25JaUZTeDVqMTZjWnhONTBNd0dhazZ5ZmQxK1htSG5yMW4xS1ErU0Z4TThjeWFFN3J5TDNtSXRFTSt1NXY3Qi9WVGF4Tjgwbk5LeVV6ZGM5MU9uNS9JZU9JV1JZRXZoR0VKNldSdGk0QzkwMFR5NnROR2RGT3NaWjE2QXQzY0pQenk5ek9iUks5N051NWkySWd5YlJaOTVsRkw1OEI0YzNaUUd1WmkrclYzOFgyWjZmRFZrV1pBUkJFQVFRYUhLak9lMVduS2pSQkllaURkQ2hibDN3anFzMmRIeFhIcVpUMllkNTg3Q1RkKzdzcDBpVzM5dDcxVkNKdzZGSGI0d21KRDZDa09TVzM4ZGRkeWZSSS9valIxMU54dVVmWUFPMGhETGdyemRSc1g4LzVtb2Ivb1BpS045MUVLYTQraVlFWEh3TmZhYU1Ba1lSdCtJOWNqY2RJMmhVSmNjMk9wbTQ2eTU4TkJCMDk3MWtwVjVMVmNPOUJIZEEvYThON1lreDFNZ3ZiVFE3SzVacUs0RmhZUVFNU0NKNFlITG5RcngwWndkak1ETHl0YWRaYzh0dDVCaHE2ZnZpUndTSE5wY3pSYzViU095WVlUQm1NTGtmRGlCL2J4VXg2dlhrbHZkbjVyMVhvd0w4NzcyRHIyZThqdVhST1lnWnE4a3BUdURLcjI1M01ac2tOOWRHaHFlbVlqOFVRWmsySG1OcU15ZGMxZnJsMUJpbk1mNkdpNUdCUVhmZHlLcEZYekg4eGxIa3JsaEo3NzkramZHQ09Jejk3K2ZFaDFkMmVyL2VQZnZnM2RNWGpVWkhTR29xb1labW9aRzk0aXY2UHZROXhnc2lJUGtKY3BaZVFNR0psNGpyM1hFSmwrYUNTMG0rS2cwQjZEZnpNM0xUZnlBbWZqQkhsdXdpZWRPUGhJYW9rZnZmVCs3U0VSUmxPWWlKUDMxOVYwRFNNSHhWK1FpR3ZCYnowSWplQy8rT2NXZ2dnZlpackhyT1ZWOWU4UG43YU1iZlN2OXBvNUdBZ1F1dVlNZnlkSkxTWEp4MUtTa3AvWUU4VDNOVUVJU21aRjBFUVVBVVpVSEVwWmhwdk5ENWFuQTZyTmdGTDVkZ2ErenUzdmlqVXFuR2RqYlpGVVU1TFBqOEFJdHVtRW1pUWFsbS83MmhpcHZFeUhzeU9IRG5ISDRvdEdLODV1K01lR0J1VTMybFY2Q3I1RjNRYVJFY0RpVEFXWkhKK2hrMzRUMXlLZ0VSL2pRVTF5UDVORk5TZTBlRU52Mi9QalNNNnNvU0hLWGxXQzJGN0xyMXhpWWFIcStrSkxBQzNtY3k4a0NHdmZvTSsxOTltQy8rbmtmQWlNc1k4Y3FUK0hhd3B4eWxSUjJPUWRkblBER0ppemhlTUpqeG8xbzJHTkdITmRKL2EvRTIrdE5RWGsyRHN4aXBNb050Tjl6WVBLb0I4VWlBdGJBWVRVeDh0K2lhNm92emNSemR3NVlibXZzbkJQY2U3anBmYVIxQllXRnVWU3dDUThDdktRZzFZeWsxbzJ1MG1NUkFER0ZncTZ3RE91WkkxSVZGTmJrcGRNWXdHcklxb2FZSXM5bk1vWHR2NVdqVG0rQUNWTmpjOHVYTS9LcnFRSmRUVmFWUklWdXRycEVYRldENjhRaWJiOWpjclBrTmFTNXlDZ2dJU0FZMmVHaHJyaDhCQVZrV0pLZFRrSjJTSUlvcUpFbVNIZVphb2FiVUtodDhmQkYwdHJZYTI3MzMzcXNTQktGRDN1aTZpZ0p1K1dnYmQ4NmR3YmdJYjBXcW5CZFEwL09XQitsNXk0UFlTak5ZTjI0MlJkZk9KZHJZZ2U5bTR3b2NRMjVnN0w5dUIrRDRFN3Z3REZnMkZEYzMzREdYbGVKMVlUanFNQTFlaG5oR2Zmd3BCdlhaR1huZ21GbE1HRE1MMlZMRmpubVRPZjdkSEZKbW41NDFRaDBXMmVFWXlyOTVrZHpxSWNUMytvV2ZYOS9BcUR1YTNjWG00a0lnQmJEUlVGaERaRWdBM3VvSVZKR3BUUGpzdFRhRjlqWmpCUGJjbmRna211akFQU0VJQW5LcjdpaytFZEY0cFlReThiMkgyd3FVY0gvTXBhVkFIRmlLTVZVN3Vpd2dCRkZxMWR0Qmp5NU1qNld3SEhwSGdGU0ZxUlNNWGFCYnNaUVdJTHMxR1V0aEtkNFJRZUFmanQ3Z3o1QzNsaEVlZUFiS1NqZTZ5T2dqamZoZk5KT0pUN2ZQeUtMUmFFWU1IanhJYytCQVJxdEVYVUYwNld1Q2dDemh0TnVSTkdyc1pnc2FuMkIwWWY3b3ZIV29XNW1oUFBua0U2T0IwMWZOMnV1NGMwazZ1dWcrVkJaa3M3UUFWUG9BNWlXN2lseTNIempFeVlweXJFNHpYMjdQSUNFOGtxa0pvVWdOMVN3N2NJckRwNm9wdFVrczNRR3BBL3FSNktkUlpOSlpnQzFyTzBjMkZSQ1pPZ0JIL2s2czJoaDhBam94Y2FKNjBMQW5uWUtmUjBQeExvNTl1dy85OUV1YWd4RnJQK2JvbWtINE9nNlJ2Yy9BK0ZmNklQaEw5QmxyNDhmN24yZmdEUmNqVnhWU3NDZVBJZmZkMWlIN1J0WCs3WmhxckpoTlRpcDNia0Y5eW91UTFCSG9kS1VjL05jS2dzYU5SRXNsOWFWMmdtUENPeHkzRUpaNjJqRTRzN2F6N1I5ckdmWE5ONFQ0bHJGK3loeE9wUGFuOTFDWGhDLzY1QzF5VWlNUXNsZFRZcitRWVJjRW9oV24wdFAzUmJZL3M0UStsNmJpS0R4R1NiYkVCWCtaalhiUVZHSWovczMyLzN1RC9uUEhZc3ZkZ3h3NWlaN3U4L25IOTZYcWc2ODRPVFFJYldnTTBjUDdFVGhwRGo0dlhNN1BiL1ltYmt3aTVxeERWSnZDR0RSdklqRnpybVRicTRzSkNibWRxcS9lb0w2cmNvMFFBbUljbkhoektkYmtTQUpTUnVNYnJDTnUxa3grZXZGSkFud1hVci9wQTJvaXBoSFZ1M1A5MHI0M25YMmZYWXd4b29ZajN4eGx5S2ZqUWUxTHY1c0dzdnV1aDBuKzZ6V283ZVVVYmRwUHdtUDMwQm1CdnlvNkhuM0JNeHo2ZkJYK2dVR0VqeC9WRkh4cEQxR3piK1RBSlg4aG8zOEl4Z0ZHNm83dXhPcVRUTjlMaGpVcGNPKzk5MzZ2bEpTVVF6UTNVMVlKSUNJSUlyTHNSRVpBRkdSWmxwRkZBYnU1Rmx1REJybTZGSlZhclJiY2lia0NJRDcxMUpOWGk2SjRlaCtiWktmS3BpTGNvTUZpZDJDeE83Q0tXb1pIQndGd0xQY1VlVlkxUTJORHdlRkFyZmNsS2N3WDJWclBEOWxsK1BnSDBpL0lHNHZkUVZSNEJCSDYzNWFNeG1ReTRYUkszVzVLWEZwYVJuQndNQ3FWNnB3ZWM2YmpRM0JTdFdzN1JaczJVMXNxTUhEUjA0UWFtN2VqYjc4VURJSHU2SlltZ0xCaC9kSDFIRXhnVUEwNVg2N0JqSkdrMjJaajZKRkFZRnc0TmJ2U2NjUmNoTDVzRDZYSFRReDgrcCtFOS9BRlJNS256RUJWZXBDODlBM1VGdFlTUEhJc1FYR1JIWExtbDYxYlNkWHhmSHlUVWhGckN6RVhsT0J6UVNvNkx6Qm5IYUJvMHliS0R1Y1FmY3VqSkk1TjZGUjdPZDBZeXJkdkpuVDJYekQyalVEUUJoQTVvaThWaHdzSkdSaFB4ZnBQMEkyZGkrUGdKcXJLZkVoNTdnbjhBM1FnZUJGMTJVeHNSN2VUdis0SFRGVjJ3c2FPd3o4cUJBUXZvaStiZ1QxN0ovbHJmOERxQ01BNFlRUTZiOWRUcTQwZFRFaVVRUFhoNDFqTVdzSUg5d2FOSHoxblRLTHU1ODBVYk55SzFhb2xZdXg0Zk1OOE1Rd1lnYStZVCs0M205R05tVTFNU2krQ2hnN0ZxMU5aSkJJK01RMWIxaUhxOC9MUnhTVmpDTkxoZThFNGZPUUNUcTFhajgwUXovQm5IOGJnM2JrcWJSaWVobGZCeitUL25FWEMvYzhTayt3UzFFR2pMOEZIS0NJdi9UdXFzb3J4dTJBMFlmMWlPaWNpOWdvbmFtdy9haklPWVM2c3huOTRDbzNNWkFISkk5QzdEVHZCTjV5d1FRbUloa2hpTHhsQnhaWTFGRzc3Q1ljWVRPVFkwWGdITkZ1QWVyMCs2N25ubmp1QnE5K29IWEFJNEFDY2dDUUlvaXlxUkZrUUJOUmVPbFNTRTZuQmd0b1FpS0RUNlVSUDdqV0h3LzZOSUFpVC9xaWF6Zm5PeDNhbTR6dmJ5SDM5ZHJKTmt4ai93T1YvbUxVL2N2K2xtRktlWk9qY0ZFWEYveCtBdytIWW90Rm9uNldabzYxZUVBUVRZQlVFd1NZSXpSeHRXcTJMbzgzTHk4WFJKcm9UY3BGbFdaZzllNVpLRUlRUnlwUXE4QXFMd3ljaTZBOTFUN3FZUkx4REZKL3cvNHpYV0swZUdoTVQweHc0YU5sTVdXeDBuN21TZFJ0L1hLbHJhczgwajNmZmZYY1lvUFREVTBERTdQdUorSVBkVTl5ZEx5b0wrNzhGbjJYTFB1NDVhdFRvWXpUM1FCRGRhUitOcFZXQ0xNdXlMRGZuNDBxUzFLeXhBZWgwdXFIS1hDcFFvT0I4UWUvZXZYdTVoWnBuMmtlallLT2x4dWJxMVNKSlVzdkNVcFZLcFRnZnppTEN3a0s3RlRnQU1CZ00rUG41S3BPblFBSGc3Ky9mcDVVWktucjhDSzAwTnlUSlJXbWs5cUFwRWdSQnVFQ1p5ck1wMk1LNmZZekJZRkFtVG9FQ056UWFUUkp0Zld5TnhmQk5UQitlUmZHZUdoc25UaHdQQXhLN2VzSHEybHB5SytweG5DNG56OW0ycWF6VmJDYTNyQnF6UTFaV1RJRUNCWjFDRUlTRUYxNTQzcWVsWUpOYm02TkNjejZ1Ui9BQUVJeEdZNWVLM3BIcXVldVZGZXkxYXduM2NsSm8xL1B2NjZjeElrd1BXSG51bzIvNU9xdWNVaW1BTFU5ZFJiVDdzUGRYcnVTTnpEcDZCSGlSVjJWaHdSV1hjT3VBTUdYbEZDaFEwQ0VtVFpwa0JDcG9JcHhFRkFRRUQ4ME5hUGExeWJLRXV0RkcxV2kwWFJOc29vWUZzMmFTMU1PVjFyN3l1MVVzMm5DUTFmT0dBeW9tajd5UVd5ZWFtZmptbmhhSGpVZ2R4VFV6dzlHS2tIOTBENU5YYk9QeUFWZDBVdEdtUUlHQ1B6dWlvcUo2QXBsdVFkYWljeFZ0b3FNdTRTYTZKWjJnVW9rRHVuWVpyeWFoQnRBenlCOUxFOCtNbWlHOW9nald0ODE4N2hzVjNsUnJGeGJraCtpd1k1V1VSVk9nUUVISDhQSHhpZk1RYXExYjhqWGxzcms3V0NGSmt0Q1U1Q1lJd29CdVg5RnU0cjJkV2N4SjdkdU5nMlErMlhxUVljT1RNQ3FrSUFvVUtPZ0VHbzBtb1pWUWErRmphNTJvSzh0eVV3bVlBSFNQVkUyeTgvb1hxM0VrcExLZ2Y5Y055aDAvYitYamNqOWVtRFJBV1RFRkNoUjBDbEVVKzNob2FXNmhKbnVhbzlBaWdPQVNiRUpwYVVraTROWDFTem41ZE5WcXRvcHh2REsxUDExVnZBNW03T0t4bjJwNTU3bzBnaFZTRHdVS0ZIUU5YaXRYZmhIaUlkeEVXYVlGaDZSbkFFR1dYZWtlK1BqNEpIVDlHakxwNjlmeldWMEk3MXlaZ3I2TFV1M0U4UVA4ZlZNQmI5dzBoUmh2eFFaVm9FQkIxOUczYjk5UVRwK2s2eUhVWE9hb0doRFVhblY4bDY5Z0xtSHhwaXhxZFY2a1BldWkrZFdHOW1MN3dna0FQUG4yQjZRWDI2aXpPWml4YUFsSmc0Zng0WXhCL0dmMURnb3JSYTU1K1VQM2lmUzhkOTg4QnVxVlJWT2dRRUhIQ0FrSkRXOXJqcmJVMmp6TVVWa1FCRUh2Y05oZkZrVngvcDloZ241TDJpSUZDaFNjSFpqTjVtWGUzb2FsdU9pTDZvQTZONFdSQmJBTGd1QVFSVkZTcTlXeVJxT1JSUUJCRUdLVnFWT2dRTUg1Q28xR0Urbld5c1RUbUtLZWFSK3VMd1JCaUZHbVRvRUNCZWNyVkNwVjlHbUVtdUFoM0FBWmtKdStWQVNiQWdVS3psc0lndENqbGNZbXlIS0xsQTkzOVFISU1vZ25UaHdQQjNUSzFDbFFvT0E4aHU3Zi8zN0pwM09OeldXT2lzSEJ3WkhLbkNsUW9PQjh4OENCQS8wOEJGbWJkSTlHb1NiTE1xS1hsMWY0bVZ6a1RHaUx6T1lHY3N1cU1kbi9QTFJGc3VSQWtwU2lXQVVLZmkwaUlpTDhUcU90dGY1QnJWS3B1aWZZenBDMjZLT3ZWdkxtVVJQaHZsb0tLMDNjT0dNcUN3Zjl3WlhGd2swc1Q3NGVWWThJWkpzRnI3Z1Voci80RWhHOU95OUJNKzMrbWdQYkhZeTgrMHBsUnl0UUFQajcrN2ZXMkU1bmlncWlLSXFoM1RxN203Wm8rd1B6V0huM2RUelEzNHRGR3c2NnYzVFJGcTFhY0JHdHlhMnZuRHFkN1E5ZHg4bzdyaUw5MnFHOCtzMVBWUHdaVnNNcmtVbDdkalA3NEg3NkRuR3cvZi8rWDR1dkhUVmwxT1lYSTdYUThpVHN4ZG1VSHZ3RnlkRTlqVThHY0Zpb3k4bkJicFBjNTNOOVo2c3FvNzYwcHMweDlwb3lhay9sNDdBcG1xV0M4eGZlM3Q1K3B4RnFUZFRnamFWVmFsRVV1MG1KNWtWU2orYXkwcDVCL2xoS1d0SVdVWlBUNWlpOVIwZFlDVkNyeEE0YjdQN3hvQ1pzZUFxV3pVZHhBaW9zSEh2NkxnNXZ5TU0vVkVOdGJSQVRQbHRDUUdBZE8rZmZSc1dKSEJyS0pOYk4zUVVCU1V4NDkwbThLQ1M5NytVTTM3T1RVQU5VZnJtWWJlc05YUGJHWDEwSzRwTDdPYkJUUXN6ZWhWUGpqZFUvbVptZi9KTzlONlZTSVF4Qk5sWFRjRFNEaUwrL3hZaWJ4d0tRL2NKQzluMlRTMkJzRUxXL2xIUGhxcldFTiswSUMvdi92Z0QxUlhlUk5GM3A4NlBnOTRWV3ErM1V4K2JXMkZBTGduRG16U01iYVlzbVhkYWxQLzlwenk1ZTNaWE55UW9yLzVoM0tVRi9odFdRNmlqZXRJbHFTdzBuWC91Q3VHdWVRZ1ZVYjNpUGpCMGFMdHU0Qmk4MTVMdzhuMzF2cldMQ3c1ZHo0YnNycVBudVZUWi9aV1hLMi9kMzYzSlZPNDl5eWFaMUJBVHJjRm9zVGF1dTZUZVZDUS9Pd0xKN0dWL2V1NHpoTjQ5RlJTbEhsL3pJaFZzeU1JWUREaHZPRm1XOEVqV0g5dUUxc0ZwNXFoVDgvcXFCV3UxSHg3NDFvVm1OZ01BemUyQzdUMXMwc0c4L25qTEdzRzN2SGw3ZHVKK0xiaDNQSDc1MWlWUkw4YXB2RVlxUFVhTWZ5dVFiSmdKUXRuMDdHa1F5Ri84RENiRG5WbEJsUFFUOHVzN3JBUk5uRWhEc3l0NVI2WnF6ZU1LR0RBWkFGeDJOV0YyTkhWQVJSTVNJSUhiZmRnTTlKNDBsSXUxaUlnWkVleXIvakZ1Zm9UeFJDczRMcUZTcWRreFJHUkNFMWc0WkVmRHIvaVhPakxiSVlQQ2hkMlFZTjAwZGpWLytNWDZzK0JORVI5VlJKUC83SmNaK3NvcGVrY2ZZOVZwNjArUWJrbEtKbWpxVkhsT24wbXZoSTR4OS9KYXVTTXJtNVdzbkpLMzFhWjlWUUZDN1YwbHNhUjRQZVhjZG8vN3ZGclQyQXJaZk9aa1RlOHVVSjBqQmVRbFJGSDFvNDF0cldWTGwvZ3hSRUlSdUNyWXpvUzJTS0tveE5mMVdXVnBNbmtOTG9PN1A1R1VUNlhmL0E1UXNlWjdLR29uUVVTT3B6VHlCZjNJS1lVTlRDQnM2R0VOUXMvNnE5alZnTDYra3Blanl4Y3VubG9iQ0JwZld0Mi9Qcnh5VERadEpJbmo0V1ByZjh6Z0pZOE9velNwcDhmM2hKKzdtMkFaRmExUHcrME1RQko5T1ROQW1YalkxZE5NYVBDUGFvcjY4c3ZRenRwdDFoT3BGY2l0TXpKbCtFVVAvWkMwME5iRnA5QjMvTEFmL2s4NjRCMjRsYWNmZHBJK2JURUN2Y09wemZ5SHFqcGRJdVdxRVM3dE5tVW9rTi9MTnVJbG9JbEs0NkxQbjBPRkw3K3Nuc1hQV3hSeExDRWRyRU1IbjE0eW9sQzBYWDQ3VG1JaVdTbXJyNDBtYjNOL2plenZGMzM2T05td0tmU1lPVXA0c0JiKzNZRFBRc3VpOVRhb0h6UkpPS2dDTXY4WEFUQTBtS2l3T2duMTlNV2grSDdMSjg0MjJ5R21xb2FHcURuMllFYlcyYTNOaUxTdEUwZ1dnOS9VK0N5T1FNQmNYNDBDRFQwVG9ueXhTcmVCL0RFV0NJQzRFVExpb2kycUJla0VReklCVkVBUzdJQWhPbFVvbHFZSGZqT3JSNEczQTRLMnNqaWRVQm45OERmN2RPc1lyOUd5K2gwVDBFVVpsSVJUOEwwRFhnUm5xQVZmd1FHRk9WS0JBd2Y4Q1dzdXFkZzBNV1VZUmJBb1VLUGlmRW14dEFnYnRDYmhHL25BRkNoUW9PTitoNmtCamF5SGdHc3NTRkp3REhEcDBHSnZOcGt5RUFnVm5CMkpIV2xwN2Y2aEFnUUlGL3dzUU92a2RRQkNCYmxJNk9ObVpjWmhGS3pkdzcvSk52TDh2bDJhZFJDWXJMNDlQdCszbDFZMEhxVzN2Y0llSjl6Zit4SmI4R21XSk9vS3RtTXgvUFVmZS90emY1ZksvdkhRdjZaZE1Zdm5vRzJnNGg5Y3haNlNUUHYxU1ZnNGZ3dEh2ODMvWEthL1BPb1NwUnRHd3oyTjBXVmFKZ0xON3A2N2pxNzJGOUltTjRkTCtVV3plc29ISGY4aHAzS2E4dDM0UFI0cExlT3VIekhZRjIrb3QyM2pqeHd5MkZOUXF5OVRSUTdiamF3NTlzSlQ5Ly9ueWQ3bCt3ajB2TXUyVDV4R3JLam1YaFcvNlFkT1k5dTBxZWlWNTQ3RCt2clJKSjU1WlFQYk9ZbVh6bmI5d25rWmJhNk8xcVFFYm9PbTZsUnZBNGhzbk5mMGEyRkRHWC9ibnd0aFl3SnRuYnA0Sk5UbDhjM0JubTBOcmk3TlpXdWpEN0RqdmM2b0YvQkdRdDNvTnZlNTlpUHlYUDZiVzlqZjh1aEM3cnQ2Wnp2SGw2N0dqSVdEa05QcGZPYjVweFUxSHRuTnMyVGVZYXlYOEw3eVlmbGRQUklXRnZHVWZVclQzS0hhN211QkpzK2d6UGJYVEpOMks3YXZJWGYwakRWVW1mQWVOb2U5TnMybGtwYXJidTQ3U21pQzhTbjRpZCt0UmZNWmN3ZUM1YVdmOGdpNzViaW5aYTNlQlh4VHh0eXdrTk5iRjJTQTNsSExzN1hjb1AxR0VsekdHWGpjc0pEamF4UUpvT3J5Vkl4K3V4R29WOFJrMGx2NjN6T2h3ZzF1emRuRmsrUVpLanBZanJuZ1R4eDQvL0VaZVNxOXhTVTNuTzdiMEs4eFdMVkZ6YnlRMnRROEFoVis4ZzJ3Y1JPbDNLekZiZlVuODI5MkVHRjFqc09ic0ozUEpKNWlxclJqaWg5QjM0UTNvZFIzZkU1ZzQ4ZnBTZ3FkY1NNNlNwVmdjdnZUNTIvMEVHdzNLQStHMlk3cWpzZjBxM2Z0SWFUbUp4cEF1N0ZFYnozMzdNd3VuRHNOTFNXL3ZaSzZxeUYrWFRlVFVPVVFtbHBEZkJTMUNMdG5KaHZuUEV6cnpXdnBjZHdXQ3VhWkowN0ljV2NPYWVRK2dHM294Zlc2YWcxRFc2RDZvbzZiUVR0VHM2K2c5YnhwRnI5ek93VFhIT3IxV1hWWXVnV25UNmJmZ2VxVE16L2pobVkrYXY5dTNucjMzL1kxVDJWN0V6SnFKMmxGM3hocGY5WWJYK09IWmRLTG0za3hrbkpNdFY5NUVyZnVOZVB6WjI4a3ZES1R2N1F1SkhOSURTNlc3RnRtV3ovZno3c0k3YlE1OWI1bUxIaE9PVHE2akRvb2lMQzBON3hBRFBvTXVKQ3d0RGYrNDhPYTV1LzVSZk5KbWtuREZPSTdlZXozWkI2c0FLUHJtWFhZKzl5R2hsOHdtUUpmTjFnZGZjNSt4Z1owM1hZK3p6OFgwbTM4ai9nRVNWbnZuOXdRbXNsNTdrUi8vN3pYOFIxNU05S2dFTE9WMXl2Tndlc0VtdC9xM2hjWm01Z3lwaTA1bEgrYk53MDdldWJOZnAzLzc4ODRkVlBkSVpteW9sbjNLQW5VSWE4WkdLbnhTQ1RkcWtkTEdjR1R0T3ZxUHViNWpXZGhRaWNPaFIyK01KaVErZ3BEazV1OXlscjVONkhXUDBuK0dTM01LU1I3bS9pYVVBWCs5aVlyOSt6RlgyL0FmRkVmNXJvTXdwVStIMTRxOS9uWnFqK3lucHFBYy82VCtIRnV4RzdpMitXMlprTWFJaDI5REFLSi94VHprTGw5QjNPMHYwV1BFQlRCaUVJVXJCNUgzVXo0RDBxS3hWbGFpaVFyQkw3NHZJUU9TUExaK05WYVRDbDFZQklHRDRnZ2VOS3pUNjZnQ2pSaFRqWlNFNk5Fa0RzR1kyck41N3Q3L0QyRTNQRVN2c2NPUWdiNnpoNUdkdm9tNGdTN0s5cmpyN2lSNlJIL2txS3ZKdVB3RGJJQVdLNVpxSzRGaFlRUU1TQ0o0WUhLWDdzbjFpSnJwYys5enhBOE5WaDZFdHJCMFIyTTdJNnV3b2lpSEJaOGZZTkVOVTBrMGRCSmN0Vlh3ajQzWkRBM1hzUDd3U1U3VzJNa3JMT1pRaFVsWnFuWlF1RzR0R3IyRm82Ky9RVVZlUFdWcjEyTHQ3T0dNbThUSWU4Wno0TTQ1TEIrY3lyWi9mZHJra0RBWEZPQWJGOWZXWVZHUnlkcTBOREpYcktmcTBHRWFpdXVSSEozdEhSTzdyNytZSDUvOUw1WDdEMU9YWFlSa3M3VjRaZm9tSnA2Vm1sTkxaU1hlSVdGTjcyQjlXQ0NXMG5JQStqendBbDU1WC9QdGlLRjhmY20xRko1d0U4MzdKREh5cGRzNCtlUUN2aGlRektZSFhzYnFPUE14bUVvS0tmdnlUYmJjY0NQZjMzQWp2L3hZams5d3Mybm9GZWhpSVJCMFdnU0h3KzNkRG1UWXE4OVEvczdEZkRFd21YVzNQazZkU2VyMG5sd0xHWUp2dkNMVTJyVktaTm5jam5iV25rRWdxM0VWbEhZTGRSVUYzUExSTnU2Y080TnhFVjBvL3BSVmpCMFlTMjd1S1hLQjdIbzc5dEpTVGxURWtoU3MrQTlhdjVUeTEyOGxmTUs5cUF4YVZIMUhFcEQrVHdvT211ZzFzS081VXRQemxnZnBlY3VEMkVveldEZHVOa1hYemlYYUNQb2VVWlJrWndNdE5ldktqU3R3RExtQnNmKzYzV1hlUGJHTFV5MmtwUnJSNFdpeGMrVDhIWnc0SE1HVmUxNUdDOVJ1ZUkzRE96SmRkSCtOYjhzelNDSVMxQ3FrUm52TkRWMVFFQTNscFVCUHdJRzV0QXEvTUpmYnd5djJBaTU4NjJQQVFkYmlCZXgvYXdYR0Z4Y0FFSDdaUXNJdlc0aXpKcDh0MHlhUXMvY0crZ3p2b2xIU3FyK0VJZHhJNU9oN0dISGJtRzdkVCtDWVdVd1lNd3ZaVXNXT2VaTTUvdDBjVW1ZbmRYaFBkREovdG9waWJBNHZmTUlELzZ5Q3plUWh6RHIwY0tobFdhNFZoRzY4WCsxMTNMa2tIVjEwSHlvTHNsbGFBQ3A5QVBPU1hlcjc5Z09IT0ZsUmp0VnA1c3Z0R1NTRVJ6STFJWlQ3Wm94dk9zVXJIK2RUbFRDSXl4TkRGVG5XV292Sy81SEMzSjVNdmUrMnBvQ0JmUEFyOGpkK1Q2K0JsNXhlS2M3YXpwRk5CVVNtRHNDUnZ4T3JOZ2FmQUxmcGVNMThEczk3aXN4NEhXRnh2cFIrbjBIY1hiZmdIZFdEaGozcEZQdzhHb3AzY2V6YmZlaW5lMXpEcHhlaHNVVmt2UEFoRVgwaU1VNmRqQzR3Q20velFiTFc3U0RZWU9Md3F4OERRMzcxZlllbWptRFhmMS9CSUUzQ2Y5Q0ZoTVNGMG5QT0xEWTgrUy9DNHg1Q3lscE5mbEVpRjEvb010bXlQM2dWb2Vjd2ZFTTFWSnpJd3lmNUtyY3BjWWdEeS9ZUVBpWUZvU2FMQnBNdnZsMTB2dnYxVHVEWThuZnhGY2ZpSFRlSTBONFJ4TjZ3Z01NM1BNYlJ5Q2NKNmVsSDlkNGZFSHZQb05lb3VBN09WTXJCZjYwZ2FOeEl0RlJTWDJvbk9NYmxzK3ZvbmpyREwwOWVUMmJwU0daOTl1U2ZWYkRWZDZDdHRSQjJxaWVlZU9KS1FSQVN1KzdZdGxObFV4RnUwR0N4TzdEWUhWaEZMY09qWFIwTWp1V2VJcytxWm1oc0tEZ2NxUFcrSklYNXRqbE5kSGc0c1g2L2ZiY09zaXdBQUNBQVNVUkJWQU42azhtRTB5bmg1OWM5ZnMzUzBqS0NnNE5ScVZUbjlCaHJRU0hxdnNQb2tSemY5SmwzbEJHSFhVTm8vOWdPVkI0blZidTJVN1JwTTdXbEFnTVhQVTJvMFdVbXFVTVRpQmszZ0pLMTZSVC9mQWg5NzFUQ0I4YmkxWE13Z1VFMTVIeTVCak5Ha202YmphRkhBb0Z4alIwWk5SZ3Z2Z2p6c1F3c0pTWUNocWFnOVE3Rm1CcEx3Y292cWNxdHA5OWR0K01kSGtWNGNyUDU2UlVaNzNHT3JzRTNlUXcrWWlXMVdibW9JeFB4and4QTMyc1lvVVlicDc1S3gxUWZ4SkIvTGlJbzFFVkc0NmpNcFdqVFprcCszSWNoZFM3SnQxNkNTZ1JFZ2RxTUhSUnQyVVRsTDFVa1B2ZzAwZjNDdXFabERSdVAybHhNM1M4NTRCZEZZR3dZNnJBRVlzYjBwbmhOT3NVL0hVRHdqY1U0YmpnNmd5dk82dHN2QlVPZ2V4OXJBZ2diNW1LVU5tY2RvR2pUSnNvTzV4Qjl5Nk1ramswQTZQQ2VYTkFTTkd3b1duWDdZelQwSGt6b2dOZy81MHZmNlR6NjlOUC8rQmxYRU1IYStLOGdDSGJBS1FpQ0pBaUNMQWlDTERpZGpvOUVVYnptenpJNXZ5VWYyN25pY0ZPZzRFL3BwTEZZVnVyMTN2K2xMUjliQXkzNDJFUkpsR1c1VXBreUJRb1VuTzl3T0J5MUhpYW5mSHBmbTRBb3kzS0ZNbVVLRkNnNDMyRzFXaHZMbFZvTHREWUNUblE2bmVYS2xDbFFvT0I4UjBORFF4MHRrM0pQR3gwVjdYWjdpVEpsNXdaaFlhSGRDaHdvVUtEZzlLaXVyajZkS2RvazdCb3pQRVNMeFZLcVRObTVFbXhoaW1CVG9PQXNvYWlvcUs2MVFCT0VObVZWc2lDQVdGUlVYSFJHMHJPMmx0eUtlaHluSTJSd3R0SVFKUm1IVTJyNmthUS96NExJN254MHVSM1dsZE1WdXpWOUxpa2JXb0VDZ0l5TWcvWHVSME5xRm01Q080K1BnSHJ3NE1HbGt1UzA0T29BMHpta2V1NTZaUVY3N1ZyQ3Zad1Uydlg4Ky9wcGpBalRBMWFlKytoYnZzNHFwMVFLWU10VFZ6WFZDbjYxYmpXUDdDakF6NTJnTS9yQ1VieHdVZUlmZnpWcTl2REZwSDh6NCtjblNCOXdENU1PcjJwcTVKcS81QjVPMWt5Z24vRUFCNDRrTVBHcHVVMkhiWnVRUk95SGh5aThKNW5RcDNmVHE1OWEyZGtLL3N5dzNILy8vUTBkbUtJdC9HMk5UOHNwb0d0U1J0U3dZTlpNa25xNDB0cFhmcmVLUlJzT3NucmVjRURGNUpFWGN1dEVNeFBmYk51bGZPcUVDYnc0UGtGWklnVUtGSFRQNnBIbHZGWUNUUExRM0ZycWE0S0E2RHBHN2daTnExZVRVQVBvR2VTUHBhbkdUODJRWGxFRTY5dlhMcXFycTloeUpJZnNHc3VmYUVrRVZGNWVnSWhLcjI5UkhDNnF2QkMxSW9KS2hkZ3ExVnpVNjBFRTBVdnY0amxXb09CUERLZlRXZEJLcUxYeXRRbXlJQWcwQmcvVWdDeEpVczRaT2JudEp0N2JtY1djU1pkMStxY2FMeDMya25KVzdTOWg2L0oxVEo4eWhjYzk2R0grc1BDL2dNdTNMZ0hnMHQzTFczeGx2SEV4cmxiRjAyaE54VGpxdTEwQTlQaDRoN0tyRmZ6cFliUFppdHJSMk5wTitSQUVRVllEc3RQcHpPNjJZSlBzdlA3RmFod0pxU3pvM3puTnlyUUphVXh6LzM5WjdtRW12TGVkNnkvb1NheEdXVFFGQ2hSMGpQcjYrcUoyVE5EVCt0bEV0elE4MlUzRmtFOVhyV2FyR01jclUvdDN1OVZWYUhRa1VZNTZUaW44NEFvVUtPZ0NTa3RMeStpQ2o2M1JIQlVCdWFxcUtxdnJsNUJKWDcrZXorcENlT2ZLRlBSaTE0NnByRGMzL1paMTdDUUYrbUQ2K0NnTHBrQ0JnczZSbVpsWjRTSE1wRTVNVVFSQkVMd0JyU1E1aXdHdlRxOWdMbWIwb2krbzFYbmhKYm9jZGRyUVhteGZPQUdBSjkvK2dQUmlHMVZtQi81Nkw1SUdEK1BER1FPNDc1WDMyT1B3d1Y4amtWY3JjZS9zcWN6ckUvS2JUOUJ2eWU2aFFJR0Nzd0tySUlqWDRtcGpVSStMMmFOT0VJUjY5MmMyUVJBY29pZzZWU3BSMW1nMHNpQUlndDR0MkxZQXllZHViQkpsMWZXWW5RTGhBYjU0L1U0SitZcGdVNkRnZnd1U0pHV29WT3BGdU5vWWVBbzJrNGRnYzdvRW0wcldhRFJ5WTQ2QkxFbFNwaWlLNTFDd2lZUUcrQ21ycEVDQmdtN0Jack5sMGRhMzF0ckhKbnVZb1lpQ0lNaUE3SEE0TXBVcFZLQkF3Zm1HdXJxNjNIWUVXcE9QclhVT1cxUHdBSkROWnZOaFpRb1ZLRkJ3dnVIVXFWTUZyUVNhazlPa2ZEUUt1Y2FZcG56OCtBbEZzQ2xRb09DOHc5cTE2MHJjZ3N2cElkVGFwSHMwbWFHaTRLbzhBT1RVMU5SeVNYS2VBSHIvcHFOKzU5SzJuMTF3TmFUTVUxWlVnWUkvT1dSWi91WFJSeDgxdHpaRDNYUkZucHFhaDNBVG00cmdaVUNTSkdtdktJcTkvOGdUNVZXVGk2b3dFNnE3MTVUVzc5UXBSTWNKVUNzc0d3b1UvRmF3MmV5SDJ6VkRaU1FFV1FKQlJwWkJsbVJCbGhHY0lEamtwdUFCZ0d5MzIvZDFmaWtuT3pNT3MyamxCdTVkdm9uMzkrVmlhNWF2Wk9YbDhlbTJ2Ynk2OFNDMXJXM2wvQnllK1hJajk2M1l6RWVaaFgrNlJTcmZ0NW14VDM3UjRyT1QyNzVsK3I5V3QvdjNQNjVad2VqWmQ1RTg2MUgyMW5oODRhaGwwWlAvWU5BVmQzUEo0cTkvMjV0d0ZIUHRUUTh5OUlxRlhQdkdEMTArN0lVbkgrRy9lNnU2ZGFsbC8zbU4wZGYrbmVnWnozQTIyVkMvVzduNi83TjM3bkZSMWZuL2Y1NHpGNFpoR0VZWVlFUkVSRkpEUkVNeUpEVXpjODNNekZ4enk4eTFzakl6MTNWYmExMXovZlUxdDIyN21HdG1kak16MTh6TVRNMVlORFBYeXN6SUM1a1JJUklpSWd6RE1NemxmSDUveklVWndHdnFWczc3OFRnUFpjN2w4em5uOHptdjg3NitQcHpSN0hNM3NLdW9sQk10S0wvbWpaZkpHVFdabm1QL1NjVjVlL0F1OXUwcnh0YU1uMi81aTA4ejUvMXZ6K2hLQmF0ZnArKzQ2YVJkK3dkMjI4NWhGeFViVTZiUDQ0RDkzSkVJSHJmYURyWmloZ2I3MlBDVFRVcEl5RkpUOEFCL1pOUnF0ZTQ2ZGVmcldMT3JuQzZwSGJnaG94MmJ0K1F6YTJ1SmIyY0RMMy80QmZzcmpyQm82NzRRWUR0V2RvRGZ2YnFOdUxiSkRMMDBHZG5sdnVpQXplMm9wL1JvYmNodnNSMHl1T3ZxTHEwY1hjZnNmNzdIelBsUHNudlYvNUVkMDdTbi9MT1BlTGs4Z1oycm4yWDl3emRlMkp0UVcxajJ5dCtaTnlxTEdydnI5RUg5YUNWV3UrZU1tcnIxbnNsc1d6Z0pkYTJWYy9HcTVHOTRqNElEeHppdzV4dXE3Y2VaLy9KYXFrNW5HdHBMR1g3L2k3UzZPSWk5bUJrdkZySnM2YlBzWHZaSExPZnR3ZGN5Y2RKY2lwb1I0MWlycTZtdWQ1M1JsUWFPdkoxdFMvOUNrcXZ1eEVTeFp5R0ZtOWF5cjAwV25mWG5qbzZtcVBqUUQ4MjB0V0FmbTVEODRPWURPRitxaDFBSDI2bWpSOSt5YS9QbUFodHc0bUluMmNUajQ2OE4vTm5HZnBUN2R2OEEvVk1CUGY4M1lRVFVsckQyNjA5RFRsdXhiUmZYRFJySXZibEpGeFdZT1k0ZjVzbVgxMUpjcjJWb3VpN2tDN3pzdGJjb3NpcFlMczBPT1dmbnR2K3c1c3R2S2F4MnMzcmxXMnhUUlRMeHpwdEppYlN6K01WMzJMWDNheHhWR3VZOHQ0ellqcGxNRzlielozR3ZibHNWaTFmbXMvdjdDaFNka2RFMzNjRGdqUGdtY0N2OWhvZm12SWxObjhDVTM0K2dhNXkzME1WKy9EQUwzdGpJbm5JYm1ibDltVHE4RjZkS2cxWWFqck5vMlh2cytQNFlzWW1KakJzOWd1eTIrcE8vMEFPdVl0bkt0Yno4U1NGYmxEVThOUDRtektmd0xHejVZQjM1WHhkanJUL01FODh0UTQvTXJXUEhrTkZHSnYvOXRXelo4eTFsamdhV3ZQUW1lbDBjMCs2K0R0TUpyOWJJMHRjM1VlT3E1cUE5Z2FHZG5LejgvQmpUNzcrZGpEZ051ei8vaEJVRmV5aXZiU0R0MGg1TUhYTTFKZzNzL3U5bVZ1MDhTSW05bmtXTGxtSFJTQXk5NFVieVVnMCtCYjZLSnhjc1pzOVJHRC8ydHd5NHBNMVBHRVE3eTk5WXc2WnZqbURwZUFsVGJ4dUt4UWRVWlVXN2VXTEZSeWh0a2htZUZZOGp0aFBEZTdRTFdIS0wvbDNBclZPZkRySHVWaXgvQjJOcWU5Wi84Q202eEk1TS8vMzFXSHgxbURVbCsxbTIzMG1POWtlV0ZCU1IwT2t5Wms2NENqMHUxcTlleDZvdmZyQzlzV0hya1daYW1nZFFoTmNjOVZPREMwbENLSXFDcmNHRHJkR0Y3SE82Q1VENTZLT1BGQ0hFampONUR2c3JxK2ljZEtyU0tCZDdTMnVKRWNlNWMvRmIzUHJ5Qmo3NG9lWmk4QkF3ZmRwc0R1cTdNR2xZTnN2ZXlRL2FweUk3cHlkZHRVZFpsQithUXBqY0laMGh1ZDB3U1JIazVXWXpKSzg3UmcyQWh0NjlMeU92Y3lJR2N5SkRyc3ltLzZWdFQ5b0Q2NkVEekZuNEpyT2JiWnVLenYzaVpNN3FDcXExQ1l5L1pUaGorN1ZuNm9OL1lYdFZrNWEyNUowdERCbzJoTnlvSHhueWh4ZXhBelFjWmRTRVI2bU02Y3lVVzYraFpOUHJUUC8zMTZkc2E4bjhwMWgvSkpwcGQ5ekkwTzRKVkIxdk9PVTV4UWYycytPSE9wTGo0MG5RT2RqMHlkNFdwbDF6U2V0OEtVTjZYNEpPWTZUL2xka011YkluQ1Rydmk1bmU5VktHNUtTajB4a1llR1UyZ3kvdmNnb2E2a2FXdnZJbWNxZmVsSCs4bk1WN3RlUkdWZkRFdTE4QmNMQ2tncHdyODVnMmRnZ2NLR0RNczVzQVNFcnB4SkFyTTRqVmFPamRPNXNoVjE1R1Nwc202Ris5N2orazllckxzSTZDMFg5NWlaL0NMZkhxTS85Z2ZtRTlFMjhkUnV5UFh6RDRyeXU4NmxGdE1VTW56U2NsOXlwRzl6SXliZlo4Vm44WlpORGJmbURUZ1NqNmRvc09BYlpWYjc3QmpOYy9aL1NvNjRpdDNNbkl1VTJ1azVvZmlwajk1SFBNLzI4Tkk2Ky9pbFNkQ3dkUXNId0pVOTc5anR0K2U5MFhUcGRiYWNVRTladWhpaUtFa1BEcWJZMXVCWTFHVFl4ZUc0aUtCc0RON1hidjBHZzBnMDduSVpSK3Y1Zm45M3A0Y2ZLbHAvb01ZSE81V2IvdkNNK1BHWWF0L0JzbXZMYVJqZytONGRkTURxNVU3R1hGOTNIc2VXa2dGaGxtM3Q2ZlVSLzRIN2RNUnJjTTVNTzc0ZnZROHl6dE8yQnByOE9naVNDblZ3YVpBYTFDUTg4ZUdhakxkMk1vajZSdmRzYXBMVWVObGdSelN4M0NvRG4zTlczNmxFeW1ENi9oczIrK3d5Wk1aQ1E0K0d4Zk5Ybjl2VnJibU50K3krRHNTNkRuSGJ6ODFuMXNPVHlKMUQwRjdFdnN3NnJSVnlBRGMrNGNTc2JUVzVsL1MvZVR0bFY5M0lxK2JReHBxUjNvMlNYdHRQb25HeXpNZStRK1hwNzdERU5tM0FkRjN5T2Z3bXBLNmRpSmxEZzNXbTAwdWRrWklhWm1hcWRMU0kycFJ4Y1JUVjUyeGtrMHRlRHZXUnlEK2wySzgwTXpTcS9MR09DcFo5VVgzby9NcU4vZVJQRzNCeW42c1piTXJxbk1YMWNFRENhaFhRb0o3ZlFZTlZxeXN6UElhYWFZRGh4MkhTUDdaTURsMGN4ZU9JOFNKMlNjVmVWZkRVdlg3MmZtcTQrUWw2SWhyOU00bHZTZnkyNzdyY2dmZjRJemF4RFRoM2l0Z3dsWGYwaGg4RWZ0eHpMS1l4SklhVVVEdnZmTzIrbmZQWWIrS1dOWStKdEZGRDk2RTJtKzQreUdOQmJQSE9NMUVmTUFGSmEvL3pGVEpqL0haUjIxZTFveFF6MkFSNUs4NENZRUlDSDhhN3FvMVNvaUl5SlErM0kvaFBjZ0llcnE2ajZMalkwOTVTTTQ5bU1KOTd6MUZYUHVHRUhucUZQWjFHcjBhaGpXK3pKU2paRmd6S0pQMUhZK0s3Zi9xb0hOV1ZPTHJVMGNadC9qc2NUR0F4ZDJVVEE1UW9mRjNOSTBNZXBQSGQxZHR1QkpacTdkRDhnODhkeDhSbmVKUFBtSGJsYytnMmEreTVCQnVTUkVxYW15ZTNDNG0vdy95V2JmdkpLTldHSmNWTlkwSWxkV1lqMzREU01mUEJRNHJuZkhTMUhncEhSWTk5NS9QNDhzV0VIMnNOZlJKWFprL3YrYnlzQ09KeS9aUyt2VUFZQWhOMTlQRW1EczJ2SENUd3BaalZvR1dhVkMxa2hvWlJYMlJnRTBNSFBLSTJ3UnFRenFab0hqVlRoY3B4ZUJOeHQ5OTYxV29WYTVVY1JaK3hLb3JEVmdNZnRJRWlOTkpFVFpLRDhPNnRvYUxPWW1XditFMkpqUWp6aWd5RklyRjlXUWxPQTdOaWFXQk1sS3BSM1NmRjFPN3BqY3pPL1ZTRVZWSTBNc0pnNlVmRnZjR3FnRis5ZUVkME9TWmJRbzFEYzRzTmtkaFBqWUFHWFNwUHQzckZqeFppMFFjNkw3cnp0Mm1EdVhiV1B5bUJ1NXlxSS9qU2Vtb1dPaUFaZmJIWGdNTG8rRVJ2NTFMMDJualRWaFBINk1LZ1VzTWxSVUhiM3dQcjdxbzZ6LzZQTVd6dmNocGxReTIwYWY5Tnl4azZjemR2SUo3azJqeHVFS0RRYXNlbWNESXlkT1pkNklUb0NMNGkzdmhPd3ZxNm9DektCWXFhalZrUlFiUVhKQ0FnbFpiZGo0MU5nVGFEZ3FaTGVuUlVUUzFMNHpDLzgrQy9Dd2JQNC9tUG5hRnJiUEhuNWF6NlJydHpQTWFKSWxaTVZ6eGdFTW03V1dLcnNnMVhJYXV0eVBlMW40VFJ5bEh6eUlBU2paK2paUGZGRVNkSUFFMHBtdjd1YTAyeWcvM2toeXV6aWFrYytqVlNrNGdvZFFiU0FoeGtaRmxRdFNOR0N2b2JMZVFGSWIwSm5qS2QzV0ZQTXRxemdLUWQ4UlhXSThDY2NyS1ZjZ1RRNTFRNVVmcVlFVUU5UldVeW1NbUlNZ1EyNEJoaEZZekJHVVY5VFVQdnI0TTJVbkFMV1FraXJaVjNFUXFkUFNScXNSR2hWZWpTMUl4TXFWSzkzTGw3L3hzU3pMdzFwM2w5VXgrYVgzMFNWM29mcnc5N3grR0ZTUkptN3Q2YVg1L3VTclBSUWZxNkxSMDhBN254U1NudGlXNjlManViSFhwVXdvK0M4OWpUblVIejdJNTRxRnY3YUwrRlVEbTV5UXdhM3B4NWp4d21ZbVgySGlzVGMraG9TK1hzQ3BQY3EyZlljcFBmQWo5cU5xOHYrN0cxTkNNam1kemkyVms2bFRkeGIvcmZzNXY3ZXM3dDBvZXVrZEZtZnBTVTF1eitBZUhVaHBsOENLclZ2WTJWVmkzOGNmc1A0SEpVUWpYL25HMnd4T0dVM2xwKzlUMnFFZmZkdks2RTBEU1Z2MENOTmVhOGV0VjZSUVdWTE1IbnNiSGhxWjR6MHBxaDBEMmg5anp2TWJHTnpKek1DQmx4T3JobFgvWGdYdHV0TFpyR2JuOTVXa1oxNXovZ1pTbjBoWGRSa0xWbnhFWHRzb2NpN1A0WFMrNXh2ZlhNeVlkUjVzNzgwNDlSSndNZkVrT2I1ajJVZDd5TkU3ZU9LbER3bk5sVGVSMGQ3RG9xVWJxZXhtSmlNcmk3UTJwN1kzQ3plOXplVnpkL0h0Wjg4U3VveFNEUDE3UlBIVW9yY3A3MlVoTDY4UHlRWVQ0NFpleW1QUExpWDJ6djVzVy9VbXV2NVgwMU1QY3I5K0pEODlrK212cFpBVFdjV3JueDRoTjNod2pla003bGpMOXFJRzBqSkNOZnRGTHk4ak0vSTNiRisxa3VSckI1QitVa1ZVNXRiciszSFA4eTk5ZXZENzhtQXoxQjBDYnNLL01xV3ZSbFFvMURzRWtpU2p1RDJvMUdxMUpJUkFDQ0g1dEgvNTRZY2ZUbENyMWEzNzJSUVh4NTBxRXFNME9GeHVIQzQzamJLVzNzbGVNK09iSDBvNTFLZ21KelVlM0c3VWtkRmtKa1JqVGt5aW03NlJEVi8vd0k5S0pBK1A2RWNuZ3hwMnZkbXlqYmJkSWFuN2VabWpqZFhsS0hWSDBldjFaM1JlYlcwdDBkSFJ5UEtaaExKVkRPaVh3NEdkTy9qUC9xUGNjY3N3T3FVa2tkdTVMYmFLVWxaK3ZJZGFLWm9lU1ZHVVZsUmgxNXJJN2hnTWJGcDZaWGNtcWhVTlB5b3VnWnlPOGY4ejBOYVpVeGpjMWNnWFJUOVFyNG1oZDNvaUdkMnpFT1VIZVB1alFxSXU3Y3U5MTNTa1UzcG5VdHA0UDJEWFgzVTUvOG5mekE5U0lnditmQ3VKa1NyUVJISHpiM0w0OXNzdldmZkpWMVE2dFF6c2N4a2Q0dlFCTjhZMUEzTDQ4YnRpU3FvYTZOR2pDOUZxc05kVXNPbVRYZVIvZm9DVTdFSE12aldYaVBPMTZJMms0emY5dTFGOHNKamk4bU9rWFpwQmZHVFFvR2dNOU9tUlNtdnZhM3hTQ2xkMVR3a3lxMVgwNkpGT0pKRGNzUlBKTVZwMEpqT1hYWkxHNE95MnJGdS9sYy9MR25oZ3drMjBpemZUcjF2N3dBdC9WYjllVkpWOHo3ZUhqNUtZa2s1N2s5WVhYT2hJZWtKVVlNN2taSGNoMkRzVWJiWXdvTmNsTkhjazlMM3lDdW9yU3ZqdXgrT2tkZTFHZ2w2aVorL2U2S3UvWitYbUw5RWtaN0xnd1p1STFraWdNWExUb0N3T2ZGMUVqYjQ5L1JJYU9HcnF5ZzNkTFlIN1NoQlZMTmhWejIxOU9nYUNCeXZmZkk4YnhvNWllLzRXR2kwWkxIamdCcUkwVGM5T1p6TFRPejAwU2Faajk1N0VXZys5ODg3MnZZY0FKOUFJT0h6L09nR1hIK0JVc3F5b0pBbTFTa1pSQkU2M0I2Y2lJZWwwT3RudGRrdENDRmtJb1JKQ2FFdEt2dStla3BLeTdZSzhJUmU0cEtyMjI4OXhsKzhqTHU3TUtnOUtTMHRKU2twQ0hhNDhDTXRGS2tYZmZFZHFwMDZvbmNlNTlmZC9aT2pNcHhuZlBjaGo1YXBoMUwxUE1lZloyV1FZWk1ESnFCdkdNWGJSQ2thY0dmMGg3K1J2djIva0grYjlTQ2dIbTAyQ2VpUWFKU1NuSk9HUkpFbFJ5N0xRcW1VUm9kVVFFYUVSL3VDQmtDUUo0WTB2Q0VCSlRlMVlwQ2llUFVCbWVEakRFcGF3QUd6OWNBM2pacGVoU0pFTUhUV0pjZDJidWVFMUpsYTlOQ2ZFTDVqZXRST3haN2hna3lMRXZwRi9tSGVzbVJucXBtVzZoNUI4T1d6K0lLaEtrbEhKRW1wWmxnbnlzd1hBemUxMkY2alY2bDhkc0xralluREhwa0ZDNHBtWnNMVVNJajRWTk9GbHRjSnljY3JFT1M4dzhRelBtZmZhVzJmY1RyMnQvdE1UK05ZOFNKSVgxQ1FFa29Ra3k5NElzMXFMU3FORjFrWWdSK2dDNlI1SWt1UlQycnlJYUxWYXQ4VEd4azc1dFEyT1IyZkNKVWRCd3BucHhvMlZMa1Q4SlJDbUJnOUxXTTZyZkZPNmN4K2hhUjV1d0NOSlVwREdKaUZKc3BCa0ZaSktnNnpSSW10MXlGb2RxZ2g5azhiV0xKOU5NWnZqdHltSzV6RFE3cnplUmZidld2N1d0bnQ0ZE1NU2xvdFFoQkRsbDEvZXU3U1pDZXJmZkpSRlVnaHJyaXpMZ1UybFVxRlN5VjVnazJWWmVEeWVZRk5VQUI2UHgvT0JTcVdhY0Y3dkpNeTdGcGF3aE1VbkRRME5XMXZUMW9LMkVCNDJXWmFGSDhPOHdPWUZON2sxamMyUGpIVjF0dndUZGFER2F1V0hZN1lUc3dONFF0T2ZGVVhCN1FuZGZ2V2lWTE5pOFNJV0xWckUrdTFGdjdyYnF5a3ZZdldLNVN4ZmR5RUM2RTRLVnErbTBuRVJ2TjJPS3RibmYzYkMzZnUyYjZTd05MVFdldmVXTlJSVnRGNGxXbG04azVYTGw3Tm15KzVtODlQSlp3VnJXYjVzR1h0S203aDRQaXRZVDVYemYzUHJCdzkrOTFVelVITUQ3bEF6bEJZYVd4T2dxVkNwMUY1ZzgyOFE0RFlTZ0JJYkc1c1BIQTU5R0RZZWVQcFZybCswamo4c2U0ZStUNjNpdjVYK0F1UkcvcjdzYmZMKzlnTHBjMVpTRmpqSnhVUC9lbzIrODN6YjR5OXo2Y3dsZkZRamZ1VXpWTVpnTUZDNjR5MFdydDd4aSt1OXUyUUxvNmM4MWZwTzZ4NEc1VjNQOXFKU0tpcHJPUCtmS1R0UFRIdVF3b3VBTzJIZE0zOWkvYjRURTZXdFgvd3dxN2VYaGZ5MjhkVy9zKzJBdFNWR2xtd2lkK0NkN0NrdG83STY5T0d0bmZkNzduM2liY3JLSzdEYW0ybzdiSHZXTUgzK3h2K0pHZHFqUjQvdmZlRFYzQXh0S3FYeUZZWUdZNWNYMEpvMnRVK0ZrNXJTUGlRaFNTaENDQVZRUEI3UEJwVktkVmZUdTZyaG5sRWp5R3p2TFJOWnZmNDk1dVIvellaYmV3TXFCdWZsY3RlZ0JnWTkvMFZRbHpVOCtjRHZBMytWRjMzSnlNM0g2V09TZnVXNFptTFlyV1BSVlg5Q1lja0p0SjdLTW1yY09sS2JNNlFvVHNwS3k1QU5acExNb1RXUURsczE1WlZXekVuSkdIWG5LYTlPVVhEVWxMRnArMWU0M1c2UVpkVCs1R1JGd1ZxMGsxTExRT2JObk82ZFdLZDFUVUFHZTAwVmxUWklUVzY2WjZlOWhySUtLMG1wS2VpQ0wrWjJVRkpXaVNYbERKZHVWSnlVbFphamo3VVFhOVNGZEtLeXJCUzMza3hTck9IMEFONWhwY29HbGxndFplVTFKQ1ZibXU3WE4wNDZjeEptUTJnNzFSWGxXSjFxVWxJc0ljOUhBUlM3bGJJcUc4a3BTYUdKdmM1UzVpM1p5Y0xkcjdSNGVCV2xwZWpNTFdtL0ZMZWI2VXMrUWEyV1cxaEp4VHQyWU9oN0M3T21UME9XMVNIbmJOKytnM0ZUTmpONWNHaCs1c0R4azVpYS9RQ2xVNGFRY2dGalpYYTdmY3NKZkd1ZUlQK2FBZ0VmVzhBTTlXdHNhclVLdFZxTjJtZVBFbXlTK3NLakN1Q3BxYW5aRUJjWDF3UnNSSkRadnFrVUtpVTJCc2NSZjZHem1zdlMya0Z0eVVsdjRLMmRleG1XZlRVWGRYeFJzVEYzL0EyOFd1Z21SVjlEbGJFdkc5YzhqMFVIOXJJZERCNTBHN3IwbnNqV01tTDczOCtLeDhZQnNPWFZ2M0RYM1BWa1phWlFldUFBTTVaL3pxZ3N3em52M2hPVGg3Tis1dy9ZRGxReGFNaDFxT1ZFRnE1ZFJtY2RQRFp4Q0p0Mkg2Ym1ZQTFEaGx5SG5Ib1ZHNWZNUENXNGplL2RCbjMvQ1d6TjM0SmVkakJneWdzOE1TR1B0Zk1mWk9xQ3JXUjBObE5VMnNpcmE5YlROODJJclhRN2d3YjlEbDE2Rmc2SGk1b2dqcUV4bVpHTVd0WEFxSzVRczJNSlhhZCtTc1dPRndFNHNHMHBvOGMvU216bkxKeFZKUXlhOWlLengvVEdYcjZMMFNOdW84cVlCbFVIU0IzeEtNdG5qejFwdjhmbnRxWEVuRXZwcnMvb210c0hhL0ZYOUp6NEFnc21EYVJ5M3laR2pya2ZiWElHTlFmM01YRDY4enc1Y1JCUXdjaXNmbFFtZENhV0dnNVVtMWk1L20yeUxEbzJQbk0zajZ3OVFpeU4yS3VLY0diY3lmWVZzd0x2UWtuQktpbzYvNGFRSVhWV01XbkVOV3lyU2NDRUE3ZXRtc0ZEZklwejRUcEdUbnVXb2wzYm1MNzhXNllPU2ZhZFZNV1VrYjlqNThFREZGZktEQm15R1V2dUxTeDc3QzVLdHk1andwelhLTnBWanFIOE50WTlwV1BjckpjWTE5OWJGb214SjRNN2w3T3FvSVJwUTFJdjJDdXhiOS8rTDA5aWhnWnBiS0ZCZ3lZVDFHdUdxdFZxU0U1dWg5bHNscUtqbzZXSWlBaFpyVmFyWkZuV1NKSVVLVW1TVVpLa0JDR1VmVUlvb3NYbXJCUDNQZk9TV0xqM2FPanZOY1dpNTZ3M3hhRld6bkhWSFJKNXM1ZUsvUTJ0WE84Q2JFZU9WSWhEaHc2ZDhYbGZmLzIxYUd4MG5GV2JIejUzajdqK2p5K0gvUGJEQjArS3hGNjNpRnFQSW9Sd2lEOWZmNmw0OElXdFFnaEYvT2U1ZThYVjl5ME1IQnZjN3UyWHhZaFhQcmY2L25hS3hrYjNTZHYrOGFQRm9tMWlva2hzdGozNnhtZW43SGZEMTh0RlRLODdXdDEzL1BPWFJlS1Y5NXpSYzdpalY1UzQ1cjVuaE10Ly9RYTdxUDFxbFVqc2VKWDR2dFo3SDErOE1VUDB1bjJ1RUVJUno5N2RSL3p1OFRYZTlyNWFJV0trUlBIaGo5NXpiK2tXSWQ3YTcrdkxmeGVMeEN2dTlMYmpLaE5YdDQ4WHIzeFM1bXZYTFk0ZHJ4RkNLT0xSbTd1TCs1N045eDFYSlc3czFrNjgrNjM5NUgyK0lsRzh0ZDhwWHZ2ejllTDJmNndSeHo1WklycjlkbzRRd2laK2Yzazc4ZmYzOXdnaEZPR3AzU042dGI5VWZGSHJIYy9hMnFicnZ2Ym42OFR0dnZ2WThQU2RvbDIvZTBXOVVJUm9PQ2g2dFdrblBqN2ExTjViZjd0RjNQancwcEErZlBIR0k2TGp0ZE5FbzFDRWFDZ1ZWN1hUaUVmZkxBdzU1cy9YZHhCUGJ5aHRPVy9mbkNWNjNQRkVxL2YyeCtzN2lPYytMRzkxMytzUDN5aHUrZHZLQy9aZUtvcW5DQmdOREFjR0FibEFOeUJWa3FRRUh4WkZ5cktzVWF2VnFvaUlDRGs2T2xveW04MVNjbkk3MHRQVHljcktvaytmUGx4NzdiV29aVm5sanloSXNpd0xSVkVrWHhEQmI0NTZuRTduZTFxdE5wUjBUWEh4cjdjMzRFNi9nbnN5VHI4OGFkdk8vY1JmMnBXdU9pNXEyYlhyUzNyMnZRYWpES0Jsd09BOEh0dTVHeWIySmJOM2Z3N00vVFBqNVJMNjV2Vmw1TWloK0lta0JnenN5NXk3YnVUQXlPdm9PMmdvUS9OT3pzbG02WDhYNVJWMy9XeDhqbVBHamcyWVhqcWRqaDNiQ2xEMHNHanVYN3pUcXFxSVBidDBLTUN1blhzWU9NRkxHbURLR2tCUDg2a05YdmVCYlh3bTkyWnRYbEtnelZpVEVhaGt5OVlEeEpvL1lNYU1ENzA2amR0QjRlNFNocWQzUGNrVjlSZ01hakFhTUJsaU1SanRPT3cyc081ankyNDdjc0hyek5qcU5SV2Q3bEwySExTUm5hMWp4Nm9uV2JqaVF5cXREbW9xaWtrZGRYUGdpajF6ZTZNSDBDV1JtbEJEVlEzZ3M4cXJxNnN3SllleWdSVHUvcEs4QVhkNnRUcGRNZ1B6MHMrN1Q5TVlhNktxN01JNU5HdHFhcmJRc3RJZ3hCU1ZKRWtKckJzYUVnME44cTJwMVdnMEdxOHAyc3djRlZKVHRxNENlTXJMeTllbnBxWStGQlR5Wk1WN0cvaFk3c2dyMTJWdzJyWEhTaU1yc1NPZ3BBQUFJQUJKUkVGVWR4WXpjc1JGbHVKeGhzWFpDYjNIc0c5M0xnWDVCYXhlK2plZVhMR2RmV3ZuSWdNVG5ueVgvcnUyVWJCbEN6Tkc5V1Azd285NFpNU0pDMFFxZDZ4ZzhMMS9iL0g3dU5tdk1XMUUxb1VQcGhoYmtnOVkwbm94WW9SLzdZWWJHVFU1OXBTUHpPdlY4enJ0RkVWcGV0RlBlcUtlQVVOdm9uZUM5NjhSSTI0a0pUM2w5QVpQOWpGRWVPRVRVRkMwWmdhUHZKRVUyWCs5bTBucnJLZDh5MEltTFBpQy9JM3YwVFhCd1BvbjcyUitSUk1VcWVVVCswV05KaE5XcTdXVlBzZ1hkS1JzVmlzbWsrR0N0YmQxNjhkZk5RTTExMG5NVUJHYXR4YmtXL01CbSt4UGFHc0N0d0JWZUNBNm1wYldhWitpS0p0OHNRdmUvL0JEL2wxbjVzV2JleEY1QnMvNzZBL2Y4SW1uTGNQVERCY1ZybGxpMjFKY1hCTHlsYzNPdm96ZDIvNkRWUUZ3c21YamRuSnllZ1ltbFNFaGxSRzNUbUR4TXc5VHNXOC9EcDhEMldxMWs1N2RuNG5UWnZIUStMN3MyWGZncEcyYnM0ZXpmdDE3ckd1MjNUVzQ2eW43cmRYcFVLcXJmSDA4ZlZuMnhCVG1MczAvcldPeit3Nms2c0JYSkdYMkpqYzNsOXpjWE5KOFFZWHMzSjRVYlBHbWt0UVVibUZYVlZOSFlzMUdTa3U4a2NFZDIzWUVucTA2dlMrOWxjOVlHWWdhS3RUVVdJRUVCdlJQNW1DRk05Qk9ka2JuVm9IMjlGU2FUQVptMkNtMXhnYXVsNW1laHRFZ1UxRmFTa0xYWG5STk1JQmlZKzI2Z3RPK2JFNTJML2J0Q2FXS3o4NitqTzFidG5sWGczT1VrYi85NFBuM2QrM1pRMDUyemdWNVA5eHU5K1lSSTBZY0N3STJGeTBUYzROeTE2U1FaTnhnMzVwR28wYXIxYUpXcTlWK1VQTkZSMlVoU1FyTnpWRzd2V0d0d1JBMW1JWWpQRjd3SFZaZEJBUG43dmUrQVBGcGZITHYxUURNWHZ3cTcxYzRxWE82dVhIT1MyVDJ1SnpYYnZScUJtOS92cDkrdlhwaGtpOHFYQ056K0FUeVhyNkp0SzV2a1RYMFB0WStOWm1VUVJPWnN2eDljbkt1SWtWbnBjclluNDNqdkdiWFp5dG1NL0daajhuc21rSng0VzRtUGZLUzEzVEJ6VVBEZTdCTFNTZko2S1N3eE0zeTlZTlBybTlvOVNRbG45M0xLNmNQWkdydlo4bkp1Z3lqSVpWbEJlL1E5VFF1dFdQVFcreE83OHdqNDA3Tk1HL01Hc0hpU1I4eHNHZDN1bWFtVTFWeWtLNmovc2FyTTBkeDF5Ti9aK1hnM3pGZzY0czQzWUxrSUZOMDNNUzdHVHErSDV1eU9tTXhSeURqVy90Qm5jU2k1ZjlnekxpcldOWTFFNldxakVGVG4yZm1tTjQ4TlA4VnhvNjhuWnpseVZpMERnNldDWlp0M1VyT1dWSGc2Wm4zNmt1TUhuTURhNS9xaXM1WlNhbXRIZms3VjVFMWREem1KNjRuYi9DbjZPeFZXQkxTVHZ1cTZZTkdZcGgyR3djZGorRmYreWRyMUJTR0xiMkduTHhyaVpWZEtPWW1tcCtYWjkvQnkvbkZGTytyUUZkeUU2c2Uwek5qNFhzTXl6S2UvWVMxSDJEakxpUExsNlZma1BmajBLR3lUMW94UVYwbk1FT0ZKTWxCMGRBbVRjMnZyV20xV3FSdTNiclIwTkJBUTBNRGpZME9xYkhSaWN2bGtoUkZrUlZGa1lVUWFrRDdmLy8zbVBIaGh4L2VCclQvSllOTVpXVWxUcWVMNU9RenF4VGJzMmN2blR0Zmd2WWMxNHJXVkpWamRXdEpzWVMrWFU2N2xmTEtha3dKU1pqMDJoYm5WTnRsVXBJdHFIOGxId20zdzBaNVJSV3hsaVFNT20zd0Rzcktxa2hJU1ViYjdGNXRWZVhZTUdJeHQySUJLRTdLUzh2Um1TM0VHa0lkdXRVVnBUalFZN0dZejRHQnAxQlJWZ3E2V0N6QmFUbUtrOUtTY295V1pFejZNMHZKV1Q3ckpuYW5QY3dUNDN1SHRGTlpYb2JPbEhSYXRPNC9SYll2bWNhVHBUbXNublArWFVaQ2lMS2JiaHI1NTNmZmZkZE9FMFdSRGJCSmttVEh5OFBtbENUSkxjdXlJc3V5b3RGb1JFU0Vsb2dJbllpTWpDUXlNcEtvcUNnTUJnTkdvNUhZMkRaSVBYcjB3RzYzMDlEUWdNUGhrQm9iRzNHNVhGSXpqallOb0d0c2REeWkwV2ltaG9FdExHRTVmNkpZaTFtNnFZVHhvd2IrVDlvdldQVXE2VVBHa1dJNC8xOU5xOVg2VWt5TTZRT2dnVkR1dFhwSmtob0FoeVJKTGttU3ZOeHJhclh3QWxzRU9wMFgyUFI2UFZGUlVVUkhSeE1URTBOY1hKelhGUFdib3lxVlNxaFVLc25qOFFoWmx2QjRSSENKbGZ2UW9VTnIwdExTcG9hblhsaCtQVkxEOG9YTHFHN0ZqMmpKN011b0FSZCt6VmJabU1iNFVXbi9zeWN5Y05UNEM5Ylc1czFiZGpYenJaM1F2eWJMa3ZDYm56NnNDakpCMVdpMUdpSWlJb2lNMVBtQlRVV1FyODBYSFpYeHhrWUQwVkVsUGYyUy9XNjNhN1VzeXlQREwwUllmaDFpNHRaSms4T1A0WDhnalkyTjYwYU1HRkZGcUYvTkJiZ2tTUXF3ZVJDb0RRMWw4UWpHTHI5dlRhZUxJREpTajZ6UmFBSUhCS2QrQkJmRyt3SUpIcnlWQ0crSGh5UXNZUW5MVDVXaW9xSlBXdEhXZ29NR250WW9pcHFuZUdnMEdqUWFMVnB0QkRxZERyMCtBR3lhUUxqVXIrS3BWTEpvenZZQmVNem0rQUloeENmaFlRbExXTUp5dHVMeGVIYjA3SG5aOXlmUjFscXdlYWhVVFdhb0Y2dlVxTldhRnRxYXdSQ0ZXcXZWb05GNGJWU1h5NHVBYnJjYmIwV0NncUlvQVhBVFFuZ0FkMzE5L2IvZGluSmxyVXVtWFJ0RDY1RTVqd0JWc3lKM2o0dnk0ellpb2d6RVJZWXB0bi9Pc3J0Z05Uc09WSUl1aVhIamg2TVBQNUt3bkVNNWRLanNQeWZSMXZ5TXVVcG9zYnNxeEFUMTQ1YmZ0NmJUZVFNSjBkSFJxTFZhTFJxTkZyWGEyVW9Rd2QxaW9SZkFrOUlsOCsxTEg1dzdNVEhDazFudWl1VHBjZGZUSnlFU0wyM1JPdDc5cm9wS3hjU1d2OTJDdnlUM3lLRnZHYjlzRzNHV2VJNVhIcVZ6cnp6K09hZ0xjbmlNVzVYeUhUQm5DeXlhOGI5cFg2dlRZNUFybWZyUUc0d0lBMXRZenFFb2lyS3ZYNysrZTFyWDFwcVcxc08vWUlza0NWbVdXZ2thK0UxUXY3WVdpY0VRaGRFWWd4d1JFWUZYYS9PYXBFM2dKdnUwTmptUXJPc0h0dVBsaDl6NUQ5ejA1dW9IYitlaGpBam01SC90NjdLWHR1aTllNjZoK1JyamIyejlsTzU1VjdQczk4TjRkOUsxZkxwNU8xODFYQ1FENmZ2WFdnVmxGYUg3N0RWUVhFcklTdWVLQXJaeTJMb0wzRzdPYVBWdkJlOVVLU2tHdXpPMEE3YnFsdTJmU0RMeWhqQjI5RkJPRlBGM082d1VGNWRnZDdic1hFMWxHU1dsNWJUWXBUZ3BLeW1tdk1vYWZyc3ZZcW1zck54WVZuWTRHTlNjQk5ZTERTbWhVa0sxdGVDZ2dkOEViZExXb3FLODJscWJOaWJraUFnZFdtMkV6d0hYbE1HclVxbUZ2eUloS0lqZ2F3ejM4dVhMVndMZnBjVEc0R2dNcFMyS2kyeVpRR2pRYWxINWw3T1hBTFVXZytyaUdNaitGcGoyRU9RTmd1R0RZSUd2T0czeERPalpINlpNZ0t6ZVVGVHQvZjJoTVRCdU5wUnNnU0ZEWVBBWThPMGkxd3k3ZlJ5RWUxWkF6N0ZON2VRdmdBRmpZSEF1akJrTDJTTzh2ODhZQ1VOR3dzZ3hNQ2diSmkvOGlXYnEybWZvM0xrWFU2YmNROWZPUFZpNW85UzN4OG1URTYraDc5QTdtRHI1OS9UTUhvNS9qNzFzQjMwekxtWDg1RDh4ZnVTMWpKbTVOUHlHWDRRaWhDaWVOZXZSTDA5aGhyWW9lUGVWVFluZzlBNHZzRVVRRWFIekpla2FpSW1KSVRZMkZuVmtwSTZHQnE4NjUzUnFmTDQyZGZNSWFiQko2Z0U4ZDk4OTBYcmI2Qkd2di96cGQ3TkhYenY4bERkMHgzWFg4TURybXhoZnZKZnFZelhjT2ZwYUxybFljbDNkRXRXeGdqMCtabWFIQTRyWHcyTmJvWEFYbU5Td2RpNDg5QlNzZlF5ZVhBa0gxOENJRlpDLzRzeWEycmtOZHU2R0RMTzNuY0NISlJOV3pZR2FIWkE2RVo2WkJHZVZ2NjVVTW0zUy8rT3h0ZDl3YTdhWmZhdG1NMkRhWTR6WXZoaHR6VzRXckxLeXBlcHpVbVZRbk02QXRycGp6VkswQS85RS9zSjd2UkRvZEliZjhvdFFqaDQ5K3Q2TEw3N1kySnEySmttUzN3ejEwRVQvTFVJam9jR2dwaVVpUWt0a3BDNmdyWmxNSnN6bWVPVElTRDA2blk0bVg1dUdaa203d2VrZklha2ZrMmIrMzcvZDZWY1VudzV0MFpiUHZxQlNaK0dlcTdLNTUvSjJ2Skcva3dBLzVhOWRaTUd0UVpxVlRnZmJ0b0FlbURjVFpzeUFqYnRoVCtGUGI2cm5VQytvK2R2eFM1NnZPc2VVQXJwcWIzcjMyVG4vQ2ltMFp6QWcyOXRJeHNCQnFBcy9wMVFCak9uMFQ2OWt6TERibWZ2TUluYVgxUVRBTTdOM2Z3NnNlWnp4azJld1pQazZiSW82L0paZmZOcmE5MDg4OGNRWHpVQXRXR05ya2VMUkhOUmErdFowdmtpb0lWQjFZTEVrSWtkRjZkSHBJdkg2MnJUNG82U2hxUjhxRVFScUN0NElxZnVWK2M4Yy8vdUFqa3RQSFFCb1pPV24zM0xidFZmU0o5WEM5ZjM2MHMxVndxYVMrb3NFMk1Cb2FPa0xTK2tKSTBaNHQzSFRZTlVUWithelU5d3Q5eGxQVVBzY1lNbzVuOUVhT1phbDIvY3lmL290eUJXN0dOejdjcmFXZVRVekx4WFRSNHpJNjh6V3BYOGpiL1JNbFBDN2ZyRnBhMnYvK2MrbkhNMU1VTCsyMXVvU2U4RVlGRnhoNE5YV1d2cld6R1l6YXJVYTJXQXdvTmRIaG1odFRVbTc2dGE0Mm56Z0pua2tTWEt2V2JuaVRTSEUvcFBma2dwRGhJb2ZxbXE5TDZTamxrUDFFZ2JkeGZ2VjdqOEFEaFJDMXh6SXpmVnVLVUYxOEhvaldDdERnd29BQ1VZbzlUSHliUHZzUEhmU1lNYnNMcWVrT3FnWFNabGs2ZmV4WlZjVkFQc0s4bkZuWGU3bEpIUGFzTHIxOUI0NGpCbnpGaklpM1VGUmlWYzNQREVWVTFndUVtM3RtOW16Wis5c0JkU2NRZjYxVmxJOFpFSkxwMEsxTmIwK3NwbTI1bVUrVVVkSEc2bXJxNk8rM283RDBVQmpZeU5PcHhhTnhvWEw1VUt0Vmd1MzJ5MTVQQjZoZU1OelFnZ1VFSW9RZUNaTXVMUDJoVHJMYXp1bVhEY1BUa3hiTlBuNks3bDcxWHQ4c1RPZW1xb3Frckw2TURSbzdZU0xUZEtHd3N5dGtKTUZtZW5lS09iUWgyRHVPQjkrNUhyNWtiT3l3SkFFR3pkQ0xEQmhJdHcxQ0JaMkJiTUJPSi9VZHVwVVpzOGF5cTA5dTZBM3BiRmkrNGRrR2l3OHRlQ3ZqQnJaaCtXWmFlelpWODZDNWU5NzJWMXJDdW1mZXp2bWpDemttaEpxRXNZd0w5ZkwvWHRpS3Fhd1hBenk0NDgvcm4zKytVV244cTJGSk9RRzBSS0pscUFXRVdEMWlJNDIwcVpORytMajQ5SDUvQy9TYTYrOVNtbHBLUlVWUnpoMnJJcWFtbHJxNnF6WWJQV255L3FodmU2NklmcDE2OWF0a2lTcDkwbnZ6dU9pdkxhZWlNaW8vMW1DN3MrTjNjTmhnNHBxc0ZoQWQ1cVhycTRFUlFkbTQvOXVvcm9kTnNvcXFraElUa0VmbktHdE9LbW9LTWV0TnBHY0VFcHhmVElxcHJEOGVrVlJsSjJabWQyZjJyOS92d012aTBlOWI3TUJkaCtMaC9OMFdEd01CaStRbVV3eHhNV1pzVmdTU1VsSjRaSkxMcUZIang3bzlkN1BwYnBObXpiVTFOUlFWMmZEYnErbm9jRkJZMk1FV3EwVGw4c2JJVldyVmNMdDlyTit5SGc4bmtDeUx1RFpzR0dqMDJxMXZob1RFM055WUZOcFNJbzFoVWM2U0hRR1NEMURyU3MyNFgvZmI3WE9RR3BySFplMVdKSlNXejFIcXplU21tb01EL3BGSnNYRnhlL3YzNy9memFram9RcE5xN3Y3dExYbXZyVUlINE9IVjFzekdyM2FXa0pDUWdEVUFHU3oyWXpKWkNJNjJvQmVIMFZrcEk2SWlBaWZyNjExZjF0UTFDS3crSUxKMU9ZOVJWSFdoNGN4TEdFSmkxOWNMdGVIbDF6U2VYOHpRRHVsYjYwMXY1cEdvdzNRRXVuMVVVUkhHM3pwSGVhQWJ5MEFiQWtKaWNUR3htSTB4bUF3Uk9GTi80aWdxU0pCN1VzQlVZa2dDdkdRRWl1OGl5NjRLaXNyWHcwUFpWakNFaGEvZlBubGw1c0lUY1lOQUp0UFczT2ZYRnZUTktzSGJTcDBOeHE5eWJnSkNZbEVSVVdGQWx0U1Vsdk1aak50MnBpSWpvNG1OUDBqSWtocjB6U1BrcmJRMnRxMlRkcnVjcm1XaEljekxHRUpTMzE5L2ZJcnJzZzkxQXpVR2sra3JmbVgxR3RlTnVXbkpEcFJla2RTVXR1V0hwSEl5RWdzRmd0eGNYSEV4TVRnVGYvd0p1MUdSR2g5S1NBQmN6UzR6RW8wcXlGMVM1TGsycnQzNzFMZzhLOXRrREl6dTRWcHdjTVNsdE1VSWNUaE5XdldiRzFOVTJ1bXJZWGtyYlVXQ2ZWWEdQaTUxcHFuZDBSR1JyWUVOb0NrcENUaTQrTnAwNllOUnFPUnFLZ285UHBJSWlMODRLWTViVi9iWlpkbGYyZTMyMThJRDIxWXduTHhTbVZsNWNxeFkyOC8za3hUTzZHMmRpTGZtdGNFMVJJUjRjMVpDdzRZeE1mSGs1U1UxR3I3M25YSXRWb3NGcTlKNmcwa1JLUFg2d09CQkswMklsaHpFNG9RT04wZTRmWW9RaEZOckI5K2RPN2FJM3Zwcy9tRm0wTTRITndPM3Zwb0I5TlhiT0x4L04wY2FSVGgwUTlMV0g2RjRuYTdQODdKeWZuOE5MUzFrS1gxL05VRnZsUVBYeVZVUkZEQUlMZ2UxSXpGMHZhRVZsUWdBYWw5KzJUOGdZU1lHQ01HZ3dGL0hXbXcxcWJSeURqZG9OWm9VS2xVSUFUQzF6ay91QjA2ZU1DNVlNTi9sd1FEMjdMMzEvTjZpWk14ZmJLSXN4NWl3cXJQd2lVMVlRbkxyMUFLQ3d2Zkx5czczTHk2b0JGb0RBWTFINkFwd1RXaFRWSFFKbTB0dEI3VUdBZ1l0RytmZk1JK2hGUU9KaVcxSlQ0K0hwT3BEZEhSWHBNME10SnJralpwYlRyTWJhS0ZJVEtDQ0sxR3FGU3k4R0pid0ZiMlNCS3VnMC9kOTdITDZmeVg5OHFONU84OXdsM1g1cEhUd2NMRUcvcmcrcWFJcnh2Q2t5QXNZZmsxaWRWcWZiVlhyNXdTSDNnRmcxcHd3WHR6dmpXZnRxWnFSVnZUaFZRWW1FeCtFN1R0U2ZzUkFteUppWWxZTEJiTTVqaE1waGlmU2VvRk41MnV5UnoxUlVtRldxMUdCTkdMTkdsdGtodHdiaXNvZUVVSThTVjRjQ3NDbGNyWG5LeENKV3dVVjd2Q015RXNZZm1WaUtJb1h6My8vS0xtQVlPQWIwMlNKQ2V0KzlaOEpxaEdOR2xyVFdWVDNweTFhRXltR014bWI4QWdNVEh4OUlFTm9GMjdkaVFrSlBoeTI0d1lERkdCSW5rL0E0Zy9rQUFLaXBCUWE5UUJJa3BKQ2pCZ3VzZGRON1RpK1BIakw0Q2VQcDFpV2JXOWtLTTJPeDk4L0NVL0NJbUdSbmQ0Tm9RbExMOFMrZmJiYjFmUG1ESEQxZ3FvK1RVMlA2Z0ZwM2kwV0hHcWlibkRYK1FlNVZ2aFBaYUVoQVRhdFR0MU9XUUxZSXVKaVNFcEtRbXpPZDZYMjlaa2tnYURteXhCbmNNamRIbzlHcFdxMWFSZEpNa1ZGMmZlNEhLNVhyejd4aUYwNXdpVFh0L0FwMG9pQTJKVjZIVmhUcTZ3aE9YWElEYWI3WTJ1WFMvOUpzZ0ViV3ltcmJXYWpOc1VNTkNJNXFBV1d1VHVKWkJNU2tvaUppYm1sUDFwRlZuYXQyOVBkWFUxVnF1Vit2cDZYeUY4STA2bkU2ZlRpYU9obmlPMlJvd21FMnFQazhaR0JVVlJFRUlJUlZFVUVCNGhrQ1NRa1NUVko1OTg4dkpWVjEzVmE5cE52OGtHY05lVmMvVzJhUDRVSDE2cEtpeGgrUldZb0x0ZmZmVzF6YTM0MVlKQnpZVTMxOVVqU1pMU1BCbTN5YThXV2pabE1FU0hGTHkzYjkvK3RQclVLckJwTkJxU2s1T3ByYTNGWnF2RGJyZmpjRGk4bEVhT0JyNCtWb2NxTWdwSnVHaHdLOEl0SkVtdFVna2hGRHdlOE5JYVNZb0FOd0xYMVZjUExOdno1YTVGWDNxaUZpZHBGZDc1K0hPeWNudlRNWXhyWVFuTEwxNisrZWFiMVE4ODhJRDFKQ1pvaTJSYzM2cFRMZEk3dkg2MWxsSFF4TVFFa3BPVDBXaE9EelJPeUtkcXNWaWFKZTVHKzJwSkk0bVBpOE9randDVkNrbWxRcEs5cUN2TEtpRkpDQ1JKU0pLdllsL0NKVW1TTS9PeTdFMmxKU1hQcmk4NlRNL2VmWGw2Y09md2pBaExXSDdoVWx0YnV5UWpvOXVCazJocmZtRHorOVo4QVlNQXFJVXc0bnFqb1A1YTBPaVFSTnptaGU1bnJMSDVKU1VsSllqU3lPNmpOR29rUFZueGNiYlpxSyszMDlEUUlCb2JHeVdQeDROYXJjYmo4UWlmQkJaWmxpVEptVmhUK3RLTTMvKytteXpMZzhKVElpeGgrV1dMMiszZTh1aWpzejl1Qm1vT21uTFdUaFFGRFRaQmhaZTFJNWc4VXU4elFVMCtFOVJDU2tyS0dmWHRwQXo0VVZGUkpDY25rNWlZNEV2Y2pjRmdDQzZVYndvbStHdTdWTDVBZ24rcFBvSXFFdTY2Nis3amh3NGRlZ0VvRDArTHNJVGxGeTAvZnZycHArODkrK3l6RGEyWW9JNW1KbWlnd2lBMFlLQVd3WnFhdjhEZFlJZ09MS1BuTjBHYnMzZjhKSTBOdklHRTJ0cmFnTllXOExVNXZkVGhicmNidDl1TngrTkJVWnFDQ0VJSWZPQW1DU0hjZ0NSSmtweWEydkZ6cTdWMlFYUjA5Tnp3M0FoTFdINlpjdmp3NFdWOSsvWXI4NEZYTUtBMU4wSGRRUlVHb21sUmx0QmdnYi9BUFNySzRFdnRhRU44dkRlMTQzUURCbWNFYkFBZE9uVHdSVWh0TkRRMDBOam93T2wwNG5JNWc0RE5qY2ZqRVI2UFJ3b0dPSi9XSnZsTVVwY2tTU3FqTWViZmpZMk9OSzFXZTFkNGlvUWxMTDhzc2Rsc2J5UW50OTlGYUdwSGN4UFVSV2paVkFzVHRJbGpMYmpBUFpTT3FFT0hEbWZWeDlOYWpDMDZPcHIyN2RzSDBSc0ZNKzc2cXhMOHhKU2FVNW1rVHFEeHd3L3pseWlLVWhDZUptRUp5eTlIM0c3M1I0c1dMU3FnOVFob1FHTTdtUW5xQnpXdE5xSlpkWUdCbUJoVGdJNm9mZnYyUkVkSG4xVS9UenREdG4zNzlsaXQza1ZlUXJVMnYwbnF3ZVB4NFBFb0p6SkpFVUpJUHRYVU9XellzUEx2dnk5K3ZrT0gxQTZTUktmd2xBbExXSDdlSW9RbzNyRmp4OW8vL2VtaHVsWk1VQWN0QXdhZUU1dWdYazFOcDR2MHNYYjRPZGE4QmU3SnljbG5aWUtla2NibWw0NGRPOUt1blRjRkpGS3ZCMDBrK3Fpb0lHTEtDTFFhRFpJc0MxbmxYMGsraEcwM0VFaVFKTW5ac1dQYXpwcWE0OC9SY3ZuTWkwYXNwWHRZdjIzUHVibk85bjBYcE0vYjFxK2d6UHB6ZjY2d2Z0dUZhczFPd2ZvdE9IOGhjNlc1ZkxacE5RZXJUL2tLdW91Ly91L3lmdjM2bHpYVDFsb3pRZjJKdUw3cUFxOEpxdEg0dGJWUXY1cS9aS3BObTFqaTQrTnAxeTZKamgwNy9xUjdPaU5nMCt2MWRHaHY1cTFQQ25uOTZ6SStLU2xuMDNlVk5LaTlOcklrUEpSVTEzSE03c1JxZHdpN1MwRldxWVVzUzBLU1VCVGhYWXRVQ09FV0FwY2tTWTJ4c1hIdk5UUTBQUFZMQWFJbkpvOWtXOW01STF5cUxNem5tWlZiZnZKMXlqOWJ4U01MMTE2UWUxcncwTy9aOFRPUGExY1d3ak1yVzNsT08rRGVlZWUycmQwcjUvRmt3VUcwdjVDNTBseGVubk0vMjRwdEp6M20yTEhxRjlONzlOMFRwS2s1Z2pkSmtocURRYTNKQkpXRVNxVVdYbERUaWhQVmdYcnoxY3kwYlp0RWh3NGRRbGFjT3UvQUJ0QzJYWHNtL200TTgzOC9nZ2R1R0VTLzlrYjIxemlKaW9yQ0VCM0RwUjNha1o2VVFMdUVOa2hDd1lXTUxLdUVJb1FBU2NpeXYxQmUrQmtBR25OemM1ZTRYSzdYZmdIK0JRcTNmVWhaalRkb0VpcmVDYXc0YkJRWGwrSU1tcy8ybWlxS2kwdXd1ME1udWFJb3BBNlp6TWI1azF1OWxzTldSVWxaMVpuMTBXNmxwTFNpQmRlZHcxWkRTWEV4Tm9mN0RPN0p1MzVvY1VrcGRtZkxGN1Ntc295SzZwWXZoSzJxdk5WK0swNDdKY1hGVkZudDUzV2NGQVZTaDhERytTMS90NVhEMWwzZ2Rudi9EdG52Z0pJU3NMZWllaWw0N1lxUzR1Yjc3VHo1eEJ0TW1qVDJselZYRkNkbEpTWFlXaG5YNXVOa3Q5di8zYU5IaitCOHRSWW1LQzFUTzN4ckdLaEVNTWRhODJDQm56aXlLVit0UFczYnR2M0pjK0FzcXRBanVLNXZUNzc2U3NadWJ5REZrc0NudGRVWURCRzRYRzRrV2NhR2dzZmpRYTFSQzZGU1Myb1pISTFPWkZrU0VpS1FBaUs4S1NCU1llSFhja0ZCd1l1REJnMUtVS2xVMS8wY1FhMXczVE5NZStaZENnL2EyWDNYZFN3eHFCazI5WjlNSFpZRndLdlRiMlIxVFVjcVA5c01laDNxekp2WnRtUUdUOXc3aUdXN1BhUWw2Tml6cjV6WnI3N04yTDdwZ0lOWjQ0YVRYL2dOdHF6NzJMTnNScUN0UlZOL3c0b0RjYWpkeDZrNldFaks2TWRaTzIvOEtmdFlYYmlHQVlNK1FFYzFGZm84Q3RZL1Q0SVdWczRaeTZ6VjM5TTUxY3pCd2lMR1AvRUdENDNLT2VVOXJWdndJRk9lMmtSR1ZtZktEeFF6ZCswWERFbjM2aVhMWm85bnNmVUkrM2J1WXVyTC8ySDZzRXh3VnpOci9NMnNMRkpJMGR1cE52Um0zZXAvWWRGQnhlNDFEQjcxSjFJeXM3QlZIaVI3L05NOE5YSGdlUm1yV2VNZ3Z4QnNXYkJuV2RQdkQ0MkJiVVZRVWdGRGhnQ3hzSElseEFJN1ZzTDRHWkNlQ1FlS1lPNXlHSlhqUFM5L0FjelpCcnFEWU5WQ2pRbUtmQXROT29yV1UyRFBZVW1hN2hjelY1U2FnNHdjL0JzcURGMlI3UTA0S3Azayt2WTFINmVldC84alA4MzF6WWVIRHg5dUxWZXROUk5VQ2E0RjlhOEpxdEZvUmRNcVU1R0JPdENZR0JPeHNYRWtKaWFTbk55ZVRwM09rYnRkQ09Xc3R1UEhxL2w0OHdmMHYyVTgxOTMvWis2Nzd6NUdqLzR0MTE1N0xWZGNjUVdkTDBsRE5zUVJiMmxMYkd3YlNWS3BKSlZXSzB1eXJKSmtXUU5TQkpJVUpVbVNTWktrUktERHZuMTdoeXVLNTFOdndjTDUyWTRjcVJDSERoMDY2L052NnhFbDN0cnZiUEg3SzMrOFhzVDNHaVYrckhjTElSVFIwR2dYUWlpaXRyWW1jTXozRzU0UUhhNmRHbkxlL3JkbWlXNjN6UTM1N2ZrSHJ4R1gzelpYZUlRaVhJY0xSTHU0SzhRUG5wUDNhLzliczRTbVhUOXhxRUVSUWpqRUgzL1RVZnpwOWM5YTlLRnUveW9SMytWbVVYK0tlNnI5YXBXSWEzZUYySC9NNGYydHNVWWNyL1BlMnkzZFZPS1BMMjRYUWloaTc3OW5pazQzekJCQ0tHTHpjNU5FajVzZkVZMUNFVUs0eGROM1h5bis4T0kyMy9PNVR0enhqN1dCNnpjMk9rNytyQnYzaVQ1dEUwVmlZdWgyOWYzelQydWM5citsaUc2M3RmejkyM2NVMGUyVzBOODhSeFhSS1ZFUm54ejIvdjNqeDRwbzMwOFJMdC8rRDU5VFJHUTdSZXc5NnYyN29hSHAzQzllbXlHNi8rNnhYOVJjZWZmeHNhTGZmZDduMkhoa2grZ1VxUkt2ZkY3ZFlwemNidGZPOTk1Yit3RHdXMkE0TUJqb0MyUURYWUVPa2lRbCt0N2hLRm1XSTFRcWxVYXRWcXNpSWlKa2c4RWd4Y2JHU20zYnRpVXRyU09abWQyNDRvb3J1UGJhYXhrOStyZmNkOTk5L08xdmYrT1ZWMTdtNDQrM2N2eDQ5Vm5qVWZQdHJIbURUTVlvdHV3dEpySmJINGJGZXlndksvTkZTTjAwTnRSenlPckNraGlIeHQySVEzaUVKTW1TSkt1RTEveVdGQ0Y1a0x4cXF3VElraVJKR1JuZHZpNHJPN1F3S1NrcFZwS2s5RjlhSUdEd3lGdXg2TDNXdlU3ci9ZSlhGRzVpOGpPdmNLQ3NHc1ZSUmFXY2Qxclg2cDJYaXd6SVNjbVluZFZZbllEdTVPZWs1VjVOc2c1QVMvK0JlU3pjdVJ2RzVtQXIzY21NZWY5aTk4RUtGTGVObW1valZ1QmtYb3hkT3dwSUhYUXpYV045bmlPdEVaTzJTZEh2bmVkVlo1SlNVckJWZlE3QTFxMmIwZHB6bURYallRQktTK3hVNkFxQlBMTDc5bVBHNUQ5eGI4Vm41UFh0ejZoaGd6anBtbC9hcm13di8vR0NqRnZKZGloWHc1cjVzTlpycFdIZDR5MlA4UmZ5OUJ3S0dXYnYvM1ZCNDFCWmZSU2pNZmtYTlZkMjdmeWMvaU9uZXg5elFnNTlNNHlCZlUzajlPbDNTVzJUM25wMCt2MUhtZ1VLZ2lPZ0ovQ3J5YUpwQlhkL3NLQXBBbW93R0h4cmdyWWhJY0ZiQjVxYW1vckpaRHBuWTNxV3dPWmh4WHNiMkJPZnd4UFhHUGorbXlLY1Bsb2poNzJPVDQ3VzBTNDVtV2pGUVgyOTF6OGdxMVJJc3BvSUxjTGpjZU5VRUVpU2dpOXgxdzl3eWNudFA2NnFPdnBjWEZ6Y1RDRCtsd1JzT3FPaG1iT3BrRkdqL3NwajZ6OWdXSFlLOWwxTHNVejQ4UFFHUmc0YUd2bk1IZENLMzRPcVZERmgrRzBNVy9RaDh3ZG5vcTdjZ2lYenJ6ODVEQzBIOTgvbnJGS0FyTnhyR1RIWTkwMGFjU1BHaEZRQXNrYk1ZRi9PY1BJM0ZiQjAzbjBzM2ZKSDhwKzU5OFFOT0E4eUl1KzNsRFRyYU5kaEQ3RGlzUW5uZk95TXlUQnlSTlBmSThkQVF2QitZK3ZubVkzUjJPeldYOVpja2VYVzNIVEI0MVMxN1BWL3YvSGc5UHUvSjdTdzNkR0tYeTFBOVIyMDJMSHdyd25hTWdKcThBVUx2UHhxYmR0NmszQ1RrNVBQNlhpZUJiQUozdi93US81ZFoyYnA3M3Boa0FXZWhnWWNEZ2NPV3czcmRod2pPUzJkUkJ4WXJiVjR6Rk5pQUFBZ0FFbEVRVlNCVXF1b3lBaFI1eFNTVHExRzhiZ0JTWkVsQ1FGNEN4UzgvalloaEdRMng2K3ZxVGx1aUltSitldXA5WlFMS3dham5xckthdWlhY09xRHE4c29WYWZRdDJjS01yQit6YnU0MForM3ZoWHYyRXlaWXpiSk9pZmJDcmFUTS9ZUDRLNmt0TnBJLzd4TTFNQ085ZXVwVkU1OVQ5bTVBeW1aOHcrS3FxZDR0VGEzbFJxSEFaUGh4UEdtQWYydjVxRnR4V1RQR3V2VnhoUTdWVFhleHF4V0s3SEpHWXlla0VGdWtwdThKNHRPZmpQYVZCYXZmWS9tdm0ydDRhZDkxZlZHc0ZaNnZkeit5WithQjRaU2tGT2h0NDlBb3FycTlDWmUxNTQ1bEQrekFTZTAwRUIvcm5PbGQwNHY1bTNiQ3JkbTRhemN5YllpS3dOOCs2eFdxNk5CaW5ubHdVZiszejZhMGpvY1FFTUlxTFZNN2ZCcmE4SDhhcUsxeWdML0tsTnQyMXBJU2VsQTU4N25udW5ueklHdDRRaVBGM3lIVlJmQndMbjdBVkJGVzNpcWR3cUZoVjl5U05HaVBuS01iK3gxdUJ2c3RORkhZdGJwaURYRlVIL2ttS2h2OUVqQ0k0UktyWlprL01TVUlmV2traEJDTnBuYXZHV3oxVVZGUlVVOThuTUN0Z21UL3NENENWZXgyR1JnekNNdjh0REluaWMrT0dVQVUvSWVwVy91TmFRWkZNd3A4WUVIWHJGakJhT20vd3Q3VlFrbFZUSjkrNzVQNXJBSFdUUmoxRm4zeldMMk1IYlExYWlwcHRJNGxJTFIyYUJWbUQ2aE04TnorOUF6V1krYzFCNkxmT3A3TW1hTjROVVpIekUwcHdjWldaMnBMQzNsc1pXZk1qajl4QWJrZ0lsekdQclpiOG5zZVNVWktTWU9IaWhtOG9MM3VYZVFnYlZQak9leDlVZkpTSTFsWDJFUmp5eDgrNVJUTXlIcHpML2lGVHRnMUhTd1YwRkpGZlR0QzVuRFlKSFAzNTZVQzRPQXJDd3dKTUhHalJCcmh1WHpZVnllTjNoZ0xRZHREdVF2T28wUFhjK2g1TGtmWld1WmswSEoybC9FWEJseTd5eGVIblE5dVFNL1FPMTBZYlEwcWFQTEh2M2RpL2MvczJGWE0xQnpCSUdidHhhMGxXQ0JmNkZqWHdSVXRCWUJqWWt4QmRZdGFOOCtoZlQwVGtpU2RNN2ZVMG1JYzVObmMrVElFZmJ1M2N0MzMzM0hvVU5sSERsU3diRmp4emgrdklhNnVqcnE2NzFGOVBYMURUaGRUc250TGFDWFBCNlBKSVNRZlpzYTBBQmFJWVFPaUxUYjYrK0pqSXo4dzdtNjRjcktTcHhPRjhuSjdTNFlHRmFWbGVEV203SEVHczU3VzI2N2xmSWFCOGxKQ1NHNVBEV1ZaZGd3a0p4d1pocVAyMkdqdkxJYXN5VVp2ZmIwc29Qc05aVlVXZDFZa3BMUUJuMDZIYllxeXF0c1dKSlNUdnRhRjFJVU41U1ZnZEVNcGpNWXFtMUxwaksvTkkrVmMwYi9ndWFLbS9MU2NreEI0M3I4K1BFWFltUGp0alF6UFJzQXUrOWZyOVltU1U3Sm0yUWZBRFpmWllFL1QwMDBBWnFCNkdodi9XZGNYQnlKaVJiYXQwK21VNmRPZE92VzdaU0xzcHl0cUdiUGZ2VGNtR2dHQTVJazBkam9MWTUzdWZ5RjhRcUs0dkdYV1BsRHNUNVFGVTIvQmR1NlhzME5nSysrK21yUHlKRWpVYXZWdmM5RlArdnI2L0Y0Rkl3bmNwcWNCOUViVFJnaXRSZWtMVmtUUVV4MEZNMi9nYm9vSThhb003ZnFaYldXbUpnWU5LclQvNnBxZEZIRXhFU2phb1pkYXEyZU5pYlRHVjNyUW9va1E0d0pkR2M0VkNsWnZXazhYRWJYSGwxUi9XTG1pa3gwMExqVzF0YStQR2pRdFp0Ly9QRkhWeXZBNWszQzlmblZKRWx5TlRNL0E2RG1Oei85Q3h6N0F3VnQyclR4clZuUU5tQitubXUvMmprSUhyUXVxYW1wT0J3T25FNHZyWkhiN1FwUUduazhpZy9rdkdEV0JHcENlSk1sRmNWWFY0b1F3dVYzdXExYjk3NzArT1B6bGp6eXlNUHFpSWlJZTdob3BZYmxDNWRSM1lxQ2JjbnN5NmdCUFFuTC8walVzWXdkTitJWE8xZnE2dXBlZStDQkJ6Wi84Y1VYemZQVW1rRE5Hd0gxYTJvZWZNd2QvZ2hvOHdSY2J3VFVuNnNXdXNKVVdscEhVbE5UeisrUW5Pc0xkdW5TeGNmWjVneWtmL2dMNVAyYW0yOFRRZ2lmMWtaQWxWTVU0V2NDa2Z3K3R6bHo1dFRFeDV1WDNIMzMzWEpFUk1UZEYrZmJZK0xXU1pQRElCS1djenBYNnVycVh2L3JYMmNWdlA3NnNvWWdUYTBoZVBPREdrR1ZCYklzdFJZQkRmalZ2SVNSaHFBYTBJUkFXa2VYTGwzTy83Zm1uS3Z6a2tTWExsMW9iR3owOGJXNS9GeHRBYzJ0S1pGT0JJR2JRQWloK0loQVFreFVTWko0NElFcHg3UmE3Wkk3N3JpRGl4ZmN3aEtXY3lkMWRYV3ZQL2JZWS9uUFB2dHNQYUdCZ29BL3pRZHFJZmxxWGhOVWJoRUI5Uy9FMHB3dzBwdXIxcGJVMUE1MDZkTGx2QVFMemp1d0FVUkdSdEs1YytjZ1dpT3YxdGJrYS9PYXBENnoxQTl1d3FlbCtTT2x3ZUFtU1JMU1BmZmNlN1N4c1hIeDNYZmZyZWgwdW52Q1V6TXNZVGxyVUh2dHIzK2RWWEFTVUd1UXBOQlZwb0tYemd1T2dEWnBhazBKdURFeHhvQmZ6WityMXJselp5SWpJeS9JL1oyejRFRnI0S2JUNlFMZzV2SDR3UzNBMWViWDJ2eWJEOGJGaVhSQkFiQmh3MGFYSkVsNyt2VEpkV3MwbWpNT0tQd3ZnZ2RoQ2N2UFNXcHJhMStlUEhseXdlTEZMOXBQcEtuUlNtVkJFNmpKd3IvQWNXZ0VOS3JGZWdWK245cWxsMTZLMld5K1lQZDRGakYzRDU4VzdtWE82bnordUxLQVY3NzhJY0JEMVZoZncvS1BQbVhHdnpmeGwzZTNVNnhFY2NrbGw5Q2hRd29KNWpnYUZJbkQ5WTNVQ0sxdmRYbDk4T3J5UXFQUm9GS3BoVCtEMlI5MW9ZbkRyUkZ3UFBiWVk3VTMzenpxQmJ2ZC92U0ZuaFFIOSt5azJuR3VydVprMzY3ZDJFNDc0NmFja1RtLzRjQlpFSDlaSzRvcE9nUDJoMjJ2UHNLOVQ2NzUyYitrSTNPZ3FKWG5zVzhYWi9CY1QwZmN6THRyTkZ0SzdEL3B1WjVLS2t1TEtLazhTN0k3OXdHR1pOOU0yVWtPT1g3OCtBdlhYRE1vUDhpbjFrSlRveVVOVVhCaHU0K0dLTlNuRmhtcDl5WGdlcXNLNHVQTldDeHQ2ZEFoaFVzdXVlUzhwWFdjTzJCVDZsaXpxNXd1cVIyNElhTWRtN2ZrTTJ0ckNRQS9GSmZ3ZGIzTTFkMDdreDByZU9DRlZSdzJ0Q1U5UFoxb25ZYjlEUkwxSHNFUlJZUFJhTVJnYUVaUzZRTTN0ZG9QYmw1eXltWUVsWTJBWThPR0RmVlJVWWFYYkRiYjQ3NkJ1U0F5ZSt6VkZKU2NLMTdNU2lZT3ZZa2krK2tEWVdsSk1jNnplR0UvVy9VNDB4ZXNPKzNqYlRWSHFhaXkvZXlCYmZ4VVNHaGxGazhjeWhrODE5TVlxUjFMV1ZHUlJ2OVUvVTk2cnFlU3RmUC93THpWaFdmOW9Td3BMajFSdVp6ajZOR2p6OFhHeG0wSmluNmVEcWg1SkVueStJTUZMYzNQVUxKSWYxV0JuNElvUFQzOUp6SGhYamdmbTJ6aThmSFhCdjVzWXovS2ZidC9nUDZwZE83ZWs4ZTcrL2Vrc212dmZyWitYODFEMloxd3VRWVNrOUNPOXpldXA2RGNnY2trK2N6U1FOb0hQcjlhd05mbWR1TXJKY1VUN0hQenBZUUFFQjF0WEhiOGVMWGRaREpONFR6V2xwYnVYTWZpTlo5U1dPSEUvc3lqN0RiTDVJNjRtMkU1M2pMcGZWdFhzMlQ1KzFqbE5veTVkeXFEc3J3NU9vcTlna1hQekdkSDBXRmlrenN5N3Q1cFpLY1kyWjIvakZWYnZxREVWc09pT1gvRm9wVVpPdTRQNUhVK2RRTHQ3dnlsekYrMW1ZU01xNWcrYlR3bU5iaXRaU3hlOURLN2k3NUgwY2N4ZXNJVUJtZW5nTE9jcCtZK3o4NGR1emhncldUbXpPL1FKZmRpNXIwakFpOUQvc3JGck5yNEJSamFNbXJDSkFiMTlQWGRXYzJTdVkrdzdlQXhoazM0STZQNitrcGYzRlpXTEp6UHBwM2ZrdEQ1Y3FaT214UW82TjYzYlRXTGxyNlBEUzBaQTI1aTJxMkRPUitwdVB1Mnd2Sk4zaG5jTytUWndLb3RVR0tEUlhQQW9vV2g0eURQMS9YdDYyRFpHbkFiWU9JMHlQRlh1VHZnbVFVd1pEQXNYZ0IyQTB5ZkJlbSs0WGgxOFFzTUgvdEMwNzJjNHJuYXF3NndZUDRpOXBUVWtqbm90MHdkTnlSUWNyVmozV0plWGYxZm5Gb2plY052NDY2aHZWR3E5akhuLzdkMzd1RlJsSGY3Lzh6c0ladk5ack1zSVFraGlURmdpQ0hFaUJnUkl5SWlJbEpFUktTSWlKUWlXcXJXb3JWS0tTOHZQenpVSXFVVXJWSThJWjRRRVJFcElxVVVFUkFSTVVhTU1jUVFZZ2doaEdXejJlek96dlA3WS9Zd3V6bUFlS0srUHRjMTE1NW5abWVldWVmK251N3Z3aGZZdGJXQ3VySy9NNnZtbjZRVlhzYU1jWU5Qd05KY0xGLzRDQnRMdjJMSTJJdWprYXloZ29VTEYxTldmYXdoUGpuOXFTY2VmV0EzMGJXZkxUSG1aN3VncG10d0hBVnFrVUJCQW9tSjBhQ21WUlgwK3Zaa2lMNXpZSXNabjlZM2tKdCtWdHNQL01lcE9LSXlLVFVKZ0x5OFBCUkZvVnRLTitKYldraE9SdWRyQ3kxaDhBcURHMEFnMENtNGlTNWRuS3NPSGFwcjd0YXQyMjNmbFNxSVBTT1A0Y050YkgveEVZcEtMbU5JdHBtMERNMVBWNzVoRVNQdWZJMEZpLzZYWkY4bE04WmN4ZEp0NzFPY1ltYnBmVGV5em5jRjgyYU9vNzV5RHcwTmJzaXlrOTZySDhNdEZ0WXNlWkhpSVZlUWI0T3M1Sk5Jb0ZXcVdQWnlPUS9lL2t0V3pMK0R5WE1zcko0M0hsOTlKWTJXYkNiZk5ncGYvVzV1RzMwWlMzZCt5c0FVTzRPR1hvSHMyazFsYlIrR0Q3OEMyUmFwWFh4eDlnM00yMlpud1p4YnNYcHFLTjFYSGdhMkxTOC94OGdsRHpFaGV4c1R4dDVNY2ZXN1pKa1ZIcHh5Qlp2TlZ6RDd6anNvWGZrb0l5WTNzdXZsMlZDM2xSSGovNGNGei82ZGJMdVBiWHMwd2N2T2dHM2Jxc2Zac1BkUXpNMnpLN2ZkTjRPVVRtWm5TallNSHdwVFI4UFlleUV0K04zMFhqRGNBbXVXUVBFUWdzYzFhRjR2ZzZsUHdNSkhnRm9ZUHd3MjdZRXNTeERZNXNHNjdUQjFNdEFJalM3QUFkREErdldWM0RldlVIZmxkSEpjUGRXTUhYd0YrVk1mNHZaUmFTeWIreHRtZWl3c21qNll4dDByR0QzekZaWXZld2lIMnNEdWFzMk1sYTBwREIxK0JkN3lEY2haRnpCOGVCSFc1Qk0zQ1Y0NTd4Y3MzSnZCb3Z0K3licEY5MUtobzJ0enB2Nk0rbk5uZlhIOTliYm5SNDY4SmxUN0dadW5GbHBhT3dLMVVGVkJaK2FuQm1wZFNVdExKVE16azE2OWVwS1hsL2VETWZsdkJHelYrei9oc1U4Q1BEbmo3Rmg3bFdmV2JDVHU3QUZjMlNNdS9HNmZQbjFJVDA4bm9ibVoxRlE2Q2lJRXZ5MEVoS09sSFlJYmFJQ1ltcHEyZnYvKy9hNnNyTXhiWkZrKy85cytVSTYwWHBTazlTTE5aaVMvL3lCSzhpS0hidW5DdnpCeDFxdU1LTWtEK2pOMTZGT3NXTHVMNGlrRGFXeG93SnFWUWs1dUFVV0ZSYm9MTTUrVWJEdDJzNFYrSlNYMFA5a0tHdG5LekxsektNNDJVamozdDZTTWVnN1h2UEhZZXcxaTVxUThkdTdaalZ0TklUL2R6YzdkdFF3Y2tVWC9raEthOXFTVGJNNmxwS1JFQjVMVkxGeThsUVY3dm1SWWxoa29SdmNwQlNOdlpOcW9JVUF4QTJmOW1iMjFrR1haeXNKMUNwc3I3eVhiRFAzdSt3TlA5UG9acFo3WjVMc2JhRktzcEdSazBTODNuWDc5VC94M0xBNG5hV2x0YmlNWVQwRHprck9nSkF0c3hyYUFsNUlOZGpQMEt5SHF1QzU2Qk81NkFnWUg5MnYwMDdCNks5dytOUGdGRDl5N0NJYWt4MnlzcVpKS1Z3YloraUpiMmRiaGNTMWIreXhsR2Rld2N2b29aR0R1dmJlU2Y4K0xMSm8rR0c5REk2ckZSbHBHTmdWWi9RZ2ZJbXN5SlNVbDdGdnRwS2xYVWZSNTZ0aGh3UElWRzVtNTZpQURDNndVejcySEphdi9FUEduSFdyOG9MWFYvY3JJa1RmdXAyM3RwNjVFaWxhSmprSE5ZREFJazhtSTJXelNnVnBzVVh1b1hDb3pYQzcxUTQ1VEJyWWpYMVZ4eXlzZk1mZW0wZVFtNkdlaFlNT21qYng2UEpubE54WkczYTBsU1NJN081dkU0eTR5TTlDWm9tcVVPUnBhajhiZ29EUG1CaElhZVJQaXpEUFAzUGJoaDd1Yit2YnRPOVZnTUF6L3ZnNWlkWFV0Wll0L3g2NW5RLy9Xd3RDaDJ2UHBjLy9PZmJQK2wzNjU5MlBKS0dMUnNxY1lrdmNOb2tOeUN1bEJlbUpKeThEYVZFOGowTFQxYVlaT2ZwVGhZNjRteFc2bXdhM2c5WjBneXVDdXBVWk5JeWVyL1JLZVpJY3pQRTNNWmdWRkFXOWREWTNlR3U0Y2QwM2tlMFhub0hyQjJHc2t6ODdhemF4SlYxQmU0Mlg0MVB0NWZNN2tUblhYYkk0VTB0Sml2aUhidjVNOHBPcGFXRG9MVnVtSWNULzloaHlRbTk2dVl4bEYvanJiK1JKWDZYYkdqUDQwL0Y1eDNrV29RUHJReVR3NHBvS3BJeStrMmlVeitkNUhtVC85VktkcUUzWDFGaktTTmIrZk1TME5aM0EvL1g3L3hvc24zcjdteGhtM0h0S1puM3BRQ3hlMVM3UlI2b2dCTlJNbVUzc05XRUt5M20xQjdmdklWZnZXZ2UzNGtZUDhZdmxXWm95L21rdlNvcDJwNzc3M0gvN3l1Y3pUTjErTXZaM0NPWVBSZ0NPckp6M1BGS2hxSUlhdGhZQXM1RzhMbTZRZGdWc0lEVVhJTkQzMzNINmZyRnIxNnArdXV1cXF3MmF6K2NadlBkb2l5Nmd4WXZsWldSa1VUZjhiOTQ1cWF3VTdjb3Bac3VJTlFHSDVySjh6YThGeXRqMXhaeVIySTZ0dHRQYzdEOTdVVTFPclVKUmp4RnRYZzhlWlFUTHd4TExIR0RQcktSNmMzQS93VWJubXo3RTczbWEvc2FXVElkZFJXZTJqVjliSjFTZWEwekp3Mm5KNWV1MWJZZk5QUDUxR3paakxxQmx6Y2RYdFpuRGg1V3llT3BsaG5aUUVWdTdad3RwdEIySldrMHJ4aUNIWXY0bHpUbTdiMHlBckhjWXNodkVGWHpPVTVzZ214MUpIVFFQMFN1R0V4elVyL1F4U0JxU3lmdVc4ZHJaaFk4cnNoVXladlpENjBsVVVEZnc5VTZZT3A1ZFJQNzlPTmpqbElEM0ZTMDJEQjlLc0tIVjFOS3JRNHZHODlOalNmN3g5eHgxL2NIVUNhbDZkV2FxUGZyWUJ0VWhoZTd4T3FjT3U2MVdRR2l4c3o2RlBuejZZVEtZZlBLajA5WUhOZjV3Wi8zZ1RTMFp2R2cvdTU3bURZSWgzTUtFb2kvM2xlN2oxcmMrNTRkTCtyUDlBaSt5Y2RjYVpERWhQUlBVMHNlS2phajZwYnVLSVQyVnZOeWYydERQSVVLTjliRHBRQ3owWElhdlQ3OWR5MmJSRVh3SVJiQXN6UWlHRUVHUEdYSHN3THk5dndmdnY3NnkzMld4MzhDMG1JdWZuOTJMNW9nVllSaGJRcTNBZytWbE9wdDc1SzRiZjlVdHl6UDlEcmxObTU2YjE1SXk2aDZINWRsWSsvaUJrRHlRM3pjeXVmVlgwNm4rVDNuQWlQMGZoOFFWUFVOOC9nL3dCUThnNWtaOU45Ykpneml4U2JoL0ZpdmwvWnRqRTMyRURzckt6ZVhIdDgrd3FraWxiOXdUcnloWDBLbGU1dVgzWXZlUWxYaHlRakNNdGgrRURDOENZeFowelNyaHJ5cTBzbVBNcnJONGE5alhhbURxdTQxNEVjbG9KZHc3MU1YbjZIR1pOSHdXTk5hemRYc1hjMmJmaks5L01vdlhWRENrcHdsTzlsUVp6RHRuT3p2L084Q216R1g0S3VwRzd0MEtqRjF3KzJMNEpHcXd3Y0hCRUZUZy9CeDVmQVBYOUlYOEE1Q1REN1ROaDZqU3d6ZGVDQ2x2V3crRGJvZDhKQ1hRYXc0YW1zRzE3T1lOSFJXdUh0WGRjODBkT0ltZnVwZHkxSUk4SlEvS3BMOTlEcVR1TmU2YU1vR3JyYWxhVit4amNMNWZhM2J1UXM3SkoxczNPdkY1bjgrQ0tmN0FxdzAxeVJoNkQrblhtTXJZeGNlSnc1cysrbjZ6N2ZzNmFSWThveHhYbHlVdHplLy9uVU5zZUJYcEE4MHFTMUNxRWFDZjVWaDhvTUlhWW1vaVBENW1mTmgxVDAwQXQxS3VnVDU4K1dDeW5oM3ppMTAvUVZmMGM5UmxJVFREaDlTdDQvUXF0c3BuaURDZkhtMXV3Mm15WVJDRDhXVklYSnpsSkZrU3JteTM3RDJOTDZzTFpUaXQrSVpHWG00dlRLRkFVQlZXTmxGdXBxZ2lib2pxeVJvaTlDZEhoM2dsSmtnUWdHaG9hMUFjZWVLRHN0dHR1cmJKYXJUMGxTWExDTjAvUUxSNXlGVXJkUGo2dHFDSytSeDl5MDVQbzJuTUFWeFk1V2ZQcXEyeCt2d3hyWmwrR1hud2VpWEV5bm9aS05xei9KeHMzN3lTclpESnpmajJhT0RsQ0VTNFpjU1VONVh2NGZIODFxYjM2azluMUJCTkRUbVhVc0RONC9wbVZPTS85T1EvZE01NDRHZkl2dUJSUnRZTlgzL2dYQ2YzR01YMTBFVDM3RkpPVnJHVjZKK1djeDRBc2lkMGZmVXFkeDh6RjUybU8zWUpMUjVOcnFlTzFWMS9uNDJvWEZ3KzlndXhVN2RnNE0zcFRrSk1hM3RjK3hSZVRIQzlUTW1vY2xyb1BXYlZxSFo4ZU9FYS9TNFp5VHE4ZUdDU0ZEN2Y5aXczci8wblpWeEovV1BBbzUvVkkvRTRtN3RzdncwY1YwUGRDY0IrRTZobzRkMUFFMkM0WkFRM2w4UGwrU08wRm1WMGg2MXdZMEIxV3ZRbzdQb0swUGpENGZMQVlJcmY1QVFNaHJwM3RaWGZ4TStmcFhVd2JlMG5VKyswZVYxTVMxNDY3aXMvZlhjL2F0elpSM3hySGtLSERPQ1BWam95WDdadmY1cTMxNy9CbFN6Y2Uvc3NEbkprVU9lZVo1NVp3VnR3eFBpd3J4MjEwY241K2RxZkg0ZXlMaG1FLzlBRXZyWHUzTW1mdzFZK3RYL25ZKzgzSGozZWswS0ZQNS9BRkFTMHErVFkyK2hscXZoSWZyNW1maVluMm9BU1JKaFNwQlFwNlVWQlFnTTFtNDNRWjM1b2UyNm1PWThlT1VWcGFTa1hGRnh3NGNJQzZ1anFPSEdtSTBYRnJDUmJXdCtMeitTUi9VTXROVlZWSlZkV1FucHNCTUtEcHVabUVFSEZvYzlSU1Z2WkpVVzV1N2hTRHdYRHBENkhIOXRQNE1Rd1BkNDYra2xFTDMySkl0dlcwMmpORlVmNjlmZnYyTlIwME0rNmdUNEh3QzBGQWx1V0FQdm0yL1R5MVdGMjFVRXFIRnYwc0tDZ2dLU25wdERvbXhoOTZCNUtTa3VqVHA0L085TlNibGxGRVRVL2ZKTkI2SjJpbWFkakpJVUordDZCWnFnSnFmbjZmM2M4Ly8zenRtREhYVkFFM244NlhUL211VGV5dGFtem5FenZEeGc3anAwS3dIMnBZV2JqNjM5LzdWbjBORmF6WnZLZmR6M0tMaDVMak5ENy8rT09QYjdyNzdudU9FNTNPRVd0KzZ0dmsrU1ZKRGtnU3FyNU1xcjJLZ2xDZVdxejVxUmVMUE4xQTdiUUFOZ0NIdzBHZlB2azZVSk4wajFJWTRDUkpDaTFDa2lSSjg3a3BRVUJUVVZVaDlQbHRJWjhiSUc2NDRZWmE0SytmZmJhdnltcE5tQTUwUHgwdm40eThJdXdaN1VRelpTTzJuOURsLzl3dzJqTVlWR0tqSGJ2cUs3Zkh0VHd4TVRzazQ2MVA1OUNib08zMS9nd0FBYTJ5UjFiYkwyalhmR29oOHpNVS9kU1lXZ2pVOHIvVnpsSS9PbUFENk5LbFN6RDNKUUptR29pRm1Kc1VmaDNMM0FCSlZTVVZWQ2tFYW5ybUJxaEI5aVo2OTg1YnZXblRwcXJ1M2ROdU1oZ01RMDYzRTJLMU9iSCtoR0EvamREOXpHd2hKU2JSVDFHVXpUdDI3SGlqcE9UaUdqcnZ6cTZ2SkdpdjhVcW9xWEdiaW9KSThtMUhnWUo4dW5UcGN0b2V0KzlNM2VOVVJueDhQSGE3UGF6ZkZnb2toTEk2T2dnYWRKWXdFN1p0UXdBSGlHZWVlZWF3MVdyZDBhOWZQOCtwS0lUOE5INGFQOVE0ZHV6WTB2dnV1Ly8xVzI2NTVZak85RHhSeldkVU1idE9laWdtbmNPaTY5SWVLejJrOTZuMU9hMUJEVTZENEVFSEo0OVBQaW5qaXkrK29LYm1BSFYxaHpoeTVBaE5UVTI0WEM2YW01dnhlRHp0QkJUOEtFb2dGRkNJRFNvWTBZSUtab0pCQlNEdXdJSHFpM3YwNkRGWmtxUnpmN3BzZmhxbjYxQlZkYzlubjMyMktqKy9UM21RcGNYNjAvUW1hSlRwaVNiakhXSnFJdExRMkVUSFBqVzkrUm5OMUU1SG45cTN4dGlhWEM0T3VmM1lMR1prUFdjS0tOUTJIc01qRE5qTTBSbTZyUzB0SEd4cUppNHVEcFBjTWRHeVdDdzRISTV3VDlMbzZnVEN2cmlZNUdhcEkvSVdTZ0hSbTZhaDE0OCsrdWpCZ29LQ25UazVPWDZqMGZpOWc1dXJ1cFIzUHE3bnJLeVVrLytSdDU1VmEzYlE4K3d6djNIemtOTnBWTzNkeXZwM3RsRFhZaUduUjlmdmZ3ZE84Ymh1WGZzaWNsb0I5cmp2WnJmY2J2ZnpUejY1OU9XUkkwY2VwUDE2VDMwcWgxZnF1T2VucnU3VEhHWnFRdkZodGptdzJ4SklUSXcwWHdsSkQ0VlVPZ29LQ2s2WUpyVjN5em9DWFh1U2FKWkFiZVRGSjU5aDYvdTdxUGZaT0N2eis5TmorL28rTnRYTnIvK3lrdDErTTZseEFXcjk4VHc2NlNvdVRJbW41dk9QdWU3RkhUZ2Rkanl1NDNUdjFaZS9YMWRNb2d4UHJWckZrckxqWkRyaU9IRFV5eTFqUmpDMVQ4Y1hjMkppSW4zNzlrV1daV1RaRUh5TUxKS2tmNHdFRkNSSnd1LzNpMkNGZ2hCQ29LcHFWQ0FocVBHbUNrMDZKSERkZGVOcWdML1YxQnpZbTU2ZWZwTWtTZDlxWjVUMVMyZFJrVDZlR1NQYXByelg3OTNJd2cxR1JwUVVuUHdLUFZYTWYzQXBnOGNNd2ZsZkJGeDcxaXhrVldNQmN5Y1BiZk5aM2JZbkdEVGxPYVpQL2hseWl1YzcyNGZhN1M4emQ3UEM0L2RPK0phT3E4cUtCWDlrVk1GNE1yN2xrTFdxcWg5OS92bm5xL0x5enY1TXg5SmlPN04zeE5JVVNaSUNRcWlxRUFqWmFGSU5CZ09SRXFsSW5scmRvYTh3ZGMwaU1URXhxcUE5VWlhbFZSUWtKQ1IwZmwrbzNzemtXUyt3WmN1SWtJY1FtODNHM2cxUHNiYkN3b2lCZWFjeHNNa21iaGs3bW9KTUxScXlhdDBiek4zNE1XOU5LTWJxVE9mVjM5NUV1dFdFNm5NemFjRnp2RlNleDlROE94ZGVjQkUzakU3RkxFUE52ZzhZdG5JcjEvUVpRMmYzNVlTRUJBb0xDOUZPaUl6QjBCN0lTVUZna3dtS1U2SkZUUDNCb0VLNElUTmhwTk1ZbXlwSlVpaW9vQUtCakl6TXpVODl0ZXlUY2VQR2piVmFyZFBhdlhzMjFWUHZVc25LU29zNmVDcmdkVFhRNEpiSlNvOWNGcXFpVUYzMkFhVytJU2lLZ2l3YmtlWHd4Q1Y3K0F6V2p6UzJ1VmpjamZYNHpFN3Nzb2M2dDB4R2lqMzhtV0x2eDg3dHk5dFVBQ2xLZENtT2JEUkd2cVA2cUttdXdaS2NUckxORXJzNWtGWHFxcXN3T3RKSnRuLzcyZU9xcWxCWDlRbTdhK3p0SEFlRm5kdmVvOS9ZVzdobjVuaGs0OGxOUzhYcm9ycTJrYlNNbUQ2bEtxaUttK3JhSnRLek04SzFxcXFxNHE2dFlNdHViM0FmdERsMHd1UHFkZEhnaGpTbm1acmFKdEl6MHNMZlVSU1ZSUnMvYlZPMHJ5cEtWQ1JULzM4Qm11cXFjY3YyTm4xZVEyb29CL2VYUC8yM2Y2elk4c0QvbStzbUVpRFFsMGZwemREMlRFOVZraVJWVlRYclJLZ2l1cG14Mll3c3k4UlpySmhraUUrdzRYQTR0TVZ1dzJLT0l5MDlnOXpjczRJVkJXWnREdFUya3A2UlJrTk5OYmEwTEt5NlUvWHN3Z2NZTXZsL0l0RjcyY0hJQ1JPeE5MN0wzcW9PN3RGTjlkUzVGTEt5MHFPdUo4WHJwcWEySGtkS09vN1krUm84U28yMTFmZ3N6cWdlcktyUFEzVnR3NmxFUmVNb3lJeHc3aXhuRXQ1RGZnQ2NYU013SlpzVHlMQWJhZkZwRjF0ZWo0aUNab3JUanF6NGFUMlJwazNRTEkyQW15RUc1Q0tzTGNMZ3BCREFTWklraWRERkhnUTRnUzVpMmc1N1UyNitlVXJnNXB1blBGbGUvdGtIT1RrNUV3d0d3eVdoZy9uMGZUOW56dXBLOHROa0t0enByRjczRXZuSlpsWS9jaU96Vmg3QWJqUWdlNm94RjkzQ3VtVXpNVmR2WWZpVS82Vm0zMjZhYkhkVHNjcEo5dUFiV1RwckV1Qmw5cVJSYk56N0dlN0NXeWxkSG14Vjd0NURidGJQS0NqSlkvdmVSZ2IwUzJQZjdyM01XLzB4WTRvY3JIeDRCbyt2MmNHMktpZlZOVzhUSnZjMVd4ZysvdjZnNHFhUDBwMjdXYlQ5S0pQNjJhZ3YyOENZOGIvQ25KRlBVMFVaUTJZK3hpUFROTmFrbEw2SVkveHpUTWs5eHRZYWdhZFJZY1d1SGZUN05xUDQzbkltamZvVlpkV2xWTG0zTVh6M0MxaHlMMmZ0a252QVZjcjRzYitodkx5VUduVVh3N2MvUTlIb08zaGt4c2dUc3I4eE0vNUdmbUVPZTB0cmVlVEZOeGszSUl1bTdVdkptZkFZUlNsV0xGYUZmZTUwTm14OGhWNzJKdTRaZnoxYjkxVlFWYWN5ZlBoNzREeUhsMTkrQkNkMGVGd25EK2hPVmZJQXFuZnZKRy9BaGJncVA2Sm8ydDlaZk5zUXlqY3M1YmFIbjJmdjl1MHMyZFBDMkhEMWs0dTd4djJNWGZVYXRGWHYyODNRV2ErdzdNNFJxSzVLcG8yOWp0MGVKdzVmUFJUOG5MWEw3ZzFXVE5SeGNXci8vNXd4ck9qTkY1YXZxK3FBcGVuTlVGOFEwSHg2bGhhNmFVdGF1RTNFbVF5aVZWRUo5ZjAwRytHcjJvT29CaFB5VjRlUVZMQW1KdEcxcTVORG4veUgxeXM5WkdlazhQd3p5N25sMFpjNTd6d0x5Kys5aHZtYm1yRzdQOFdZY1I0MjVTdnFrNjlrOTh0emdwZEhQUysrWE1ic2UwODJGdWZsaWFjeHZEZ0FBQ0FBU1VSQlZIdHY0cEYxVmVTbW1LbDBKYk5xL1N2a09ZMXNmZm8rSmovOE5nVzU2VlNYbFRMd3RyK3crTTdnZkdqYVJYYmVyWXdkbmNxR1hVZFFYSTNNVy9NUithV1BNUHpoTFJRNUJFMU50ZWc2UnAzQzRqdk9yUXYvd1pKUERyZjVySFovS1JmT2Y0VUQzdGpmQlhoNjVVb212L254MTlxV3FnYjQrT085dlBiYWF5eGE5QmZ1dSsvMy9QS1h2K1M2NjhZeWJOZ3dMcnBvSUVWRlJlVGw5U1k3TzV2dTNidVRuSndzSlNVbFNRa0pWaWt1TGs0Mm1Vd0dnOEZnbEdYWkpNdHluQ1JKVmttU0VpVko2aUpKVWdxUUFlUUFad05GdlhyMUd0RFllT1QvQ2FIV05IKzZTblR0ZnFIWTM2d0lJVlR4dDE5ZEtuNTIvN05DQ0ZXODlxY2JSTGNMSm92akFWVUlmNE80K3V5dTRxa2REVUlJVlFpaGlpZC9lNFc0NWJFdDRkZjY1ZE5YWm9zK044eVB2SGQ4dHppcng2WGlzRkRFemVjbGlYKzgzeWhlZStBRzhhdkhOa1crYzNpTDZOSGpNbkc0bmZVSm9ZcDNIdnUxT1BmcWU3VDlFVzV4OC9rOXhFTnZsZ29oVkJFNFZpck95enhiZkhCTSs2Ny80eFhDWU9naW5ucTNXdnU5M3lOYS9PMnZWd2hWdlAvOGJKR2FtaHF6ZEJkUC9ydTJ3OStFbHJmLytndHgxZStXdGZ2WkczKzZTVno3eHhVblhJY1FxaENCT25GcGp5N2krUS9xaFJDcStPU1YyYUxiaFZORnExREYwZmVlRUliNHM4U093MTRoaENyKy9NdUx4RTBQclEzLzl2UFg1b3MrMTg5dWY3M3RITmViTGtnVnIzenFFOC84N2lweDQ1OVdpeVB2TGhWOXJwdXIrNTFQWE44blFienllZnY3K3RXSEswWHYzaVhpNCtEK1BIWDNWZUxLM3k0VEFhRUtJVHppanN2T0VuOTVwMXFvYXFDbXJ1NmpCVEw4SEJnTGpBYXVBaTRIQmdFWEFFWEJ1WmtEWkVpU2xCS2N1NG1TSkZsbFdZNlRaZGxrTUJpTUpwUEpZSlFsR2NrZ0pka1RKQWtrWjJwM3NyT3pTWFBFWWJLbmN0RkZBN2w4OFBtWUpDaTVlaEwzM2ZkN0hucm9JVjU3N1RVKy9uZ3ZycktWZE90OUxjMUM1Ym5mWGMydkg5dk1sMjg4VE9aVmR5SUM1Wng3NWlVY0NsNmZnZjNyNk5MOU1nNjNjKzIrL2RkYnVPcTN5NkxlKytMTmg4bTg4QWFPK3JYWHIvKy82L25aL1NzUVF1WDRzU1lDb2ZVZTNVN1BydWZ5UmZCNzR1aE96akNaK01NTHU0THI4dExTcXZEcEszT0pQL01LRHJXcUNPSDZCbmxzcXArL3Zmb1dTcThMdUNVLzJxQnNidnlLVzEvK2dQdHZ1SWFNR0lmcWV6di93L01OZGw2WTh2WDBtaVJKb3FDZ0FLUFJpTkZvd0dBd2hobWNMT3NmbzN4eFliK2JKQ2toOWlaVVZRMHJodWpZVzZpL1FpREUzaW9xS2hTbnMrdXF0OTVhOTM3WFE5dEhPd2RjZWxOMlVDbDI2SkRMbVAvRWJtQWlBTVdEQm1HVEFkbko0SUU1N05wZHl1VGlRYWQwYUdXYkhSc3lkb2NkdTgyT3pXYkQ3VGs1bWU3cXJjOHlmVWs1NjdhOG9lMlBxNHpOZXp6SW01N2ozaTBhOC9RcDFaUld1T25YVDZQdzVweEJqQjhZbE9Bd1d1ak1FTzAvWVE1MUUrYjhzTTY2MnIzczllUXpPRmk5bmo5a0tNYkp2NlphaFdUQW5qK1Evc21hQVRwazBNVXNXN3NMR0hHS0c3TmlzeG5CYnNOaGMyS3plL0NlNUxud05aUXlidno5ekgveFh4UUU5MmZUeGkzNGNyTzU3OTdQQUNoM3F4eDVmL3VLRlYrMWJwazQ4Y2FqSjJCcG9ScFBueVJKb1RTT2dDN3FLZlQ1YVQ3Rkw0eHg4WmpqNGpFYlBLTFZEOWF1OGJnUCtlbmFvenQyZXhKMmV5S1o5dDBrZFUyaFI0OE1Fa1FqTHk1ZFRIV0RCMVZ4MDlSb0o5U0J3VzZ6WTNYWWNkbzhJTnV3NGlia0RmVTJOZUN4T3poWm9yOTE4Nyt4SXZQZ3JOOXJITGV5bmxMdkhtQThhbE1GOTk3MUozYVdWZUZWZmRTN0cyaHdRMDVvNVpaOEpvM3RGM3hoeGhMME5XVDN2NEFVTTREdFZJRXR3SXR2dk1WLzVETjU2c3I4S0d1eTFkM0FyYzl1NU5xcnIrS3FyT2hNMDQvM3ZzOGZ0cnY0eDlRUmREMUZaWk84dkR4Q3prK2owWWpCRUFLNmlKbXErZUhDdmpnUmZKU0NFVkdkYnpZSzRGUWR3SVhBTFFBb1YxNDVZait3SlBPeVg3NnJLTXExUnFQeGlwTnhLbi96SVVkczlaTlluYWQyTitPbi9KbkZxLzlGTDRjeHZCK3FPWmxoWTY0bUs3aXEwYU92SlNjM1V1OG9XMjJjckZkdDcrb0ZUSnJ6WEp2MzczMzhuNHdma01LUGI4amhoOGpaT0FsWklhV0oyOGZmUU1uc3B4aFRsQmExdmdGRHIyWmtnUTFGVWQ0KzY2eGVHNlpPSFhkZ2VRVFFPZ0kxdlk5TjBabWVZWDl4cUUrSUxCdUUwU0R3ZWtIMXVrVkRhek1JZ2IvRlMwS0NqVGl6ak1scW8wdVhMamlkRHF4R2lhNnBQZWg1WmxmbS9mSVBYTDlzTTlPSEZXQ3MzMHhhd1I5aS9tMzdjOUppdDJQMnVIQkIyOENMM043Vm9aSlZkREdqUjRkdS9sY3oxWkVCS053MzZXb3NrNTVud3hPRE1GTk5jZkpGMGRQZmFzUFNEbkxKc3ZFYkJBOFF2UG4yMjd4MFBKbG5mMzRlOGJxZFZqeE4zUEhVZWdZT0djYU52YVAvM3VmbEgvR2JUUWRaOG91Um5HSDlaaXI0UFh2MnhHdzJCd0hPaU1rVURYRHRNTGNnd0VsU1JIbzhVcUVRWW0yNndFSkF4OTdDaytqQU8wOStZREk5V1ZwVGMrQ2R0OS9aZUYyLy9sUENTcjA3dDJ6QnJVN0dwamF5ZVZzbG82WkdaS1J0Vmh1TkRmWGY3ZlhucTJmNnVCc1krZUFMRE12WEhYdDdBVVB5UFZTN25Jd2Jya251dUJzYU1OcE83UnprRFp2SzJ2N2oyc3hjWjhxSlEvbFdheUlORFYrM281T1BoVE9uWXgweWcya2pnbmZwOUFJS3JXVnMzdDNBaEg3SmxHM2FpRko0UGxreWVBQlgyVloyTmZnb1RqYXphY3QvNk4vdjk1RjlzTnR3MWRlZzhGMlczYWdzdmVkR2FncC96WklKQTZJK0dUSjBJSzkrWHJOcjB1Q1NOM3VmbGZ0cDZPWVpBMmp0Z0pya2x5UU4rSVFRQVFFQk9aeHdpeG9JcUFMSmdObG9Fa2FqRWVGckJ0a2t6c2hNMXdRaVpTOGZmL1lWUmxzaTZhbGQrZHp0b1Z1M2JqaXRYZzQyQlJpZWNTYjV1UWtjY1hkbDBNQUNqTUQyZGV1b1A4bjdzNXpkajBMZlBzb2FvU1FHMmRLYzNhbmNXQlVsRXo5bzhDWE1tZjhaZWYzdlFic0hLNXBzUGg2cXF6MU1MU25HTEVQVnBqWHNQWVdtWFYvLzNMWWM0b0ZOWCtDeXhERmt2cVlRYXU2V3c3dlRMMlhIaHgreXNlNDRIN3krbG4rOEhtUUhsdy9qL2dHWi9QMnQ5Nmh0bExsaDRUUEJGY1d6Yk9ZRStwNWkvOVRNekV3ZHVKblFrZzJOWVZNMW1zV0ZnVTRJSWFSZ1BhbVFwRUFvVnk0Y1dOQ3h0eERBUmJFM3dKK1JrZmt2MlJqLzNyOC9lWDZZRU9JNklDK0ZTb1lOdWd5anB3Wnp5ZStaTUNCeWRvZU52NFZGNDM1RjBlb0h5QnQyQ3kvT24wcmQ5aGNaTy9OdmVCcXFxR3FRS1NsNWs0S1JkL0Q0akU3MHQ3ejdHRGZzbDlSNlhkVFhWek95NUdMTUdSZXo4Y1g1MUc5NmtlVzc2aWljZXpNdno5Vk83YndWLzJaa3ZwVUhuLzRINDhiL2pEVUw4ckQ0NnFsMjkyRGpycFZrbk1KeE4xdnRaRmhQTGEraC84aEpPQjYvZ1lLaUYzQVdYY09XcDJlZEZMQnRYUGtjanJSUkVXQ1QwMWl3K0ErTUhYTWhLd3B5S0MyclpmR0tOekdqQVpzOXpjNjlJeS9GYWxVcGQyZXc3cEdJUW0zNmdORU01Um9LQzgvRGxuNEI2OWN2d2RuSmNlMXN6SjkyQmV2SzNPeXI5TEIzM0VVc3REcFlzT3BOaXUxN2VYRFJlc2lyb1YvUjM3VHJZT1pmK2VNTkYzMDI5QmV6MXZ5cTc2QVBlejhjVUhSUlRMMGloeStXb1VuZ0Y1b2FoeEtjaDJvRTFDUWh5d2hGRVVKSU1tYXpkajBjYjNZSmMwSnl1QXVjMWVyRVlUeUFxeldPNHVLTGFGajNUMTUrelVXODBZU3phendaUGZQSTdObUxtVk55R1RYZ1Fvb3lyTWpwbWFTZDdQMVB6bURjNkN6V2I5aER5ZmpvYkttQ1VWTVl1T3dhY3ZKZW9YREVyYXhaTUlPY0ViY3phOHZOOUM4OG40SmU2VlJWN21QRVBVOHlmOUlnYnJ0ekFsT0hYOEN5Z2pTODF1NzBPb1djcHRPeTh1RHJqS05IajFKZVhrNVYxWmZVMXRaU1gxOVBZK01SbXBxT0JXV1BRbFVLTFhpOXJYZzhIbncrSDBLb2t0YWhYaUVRQ0VqQi9ndWhhZ1VwV0xFZ0I4SGZDQmlEVlFzbXRNb0ZNeEIzMzMyL1R6emJVbkg1NnNBMTF5Mi9hMmhPZzFjbUkrVjB6QzVUcWF1cEJvdVR0T1FmaDBhSTRuVlRVOWRBU2tZVzFtQytSZFAycGVUTi9JRGFUWCtpcHM1RmVrd2F3UTh4aEJEN0R4OCt2R2JPbkRtN0hudnM4VmFkS2VscngvUU1QZnFERVU5RnQ2aDZYMXF3aW9CZzBtM1FlakdIR2hsanNVUzZzMnVxdDRrNEhFazRuVjFKU2VsS3ZObkMyZWVjUjJHZjNsRWxVazMxTmJpeHRVbEZPZEZ3bGEyaFpNWUdkbTVhZk5LdURhKzdpYnBHRjJscEdWaDBLVHZ1eG5vYVBESlpHY21uMU9YTStOOCt1YnQwNlVKaFlTRnhjWEhFeFpuRGR5dzlnOU16TnlIVVVJY3JJY3QrU1pabEZFVVJnVUFVZXdzVjE4c3g1bWtBVUlMbXFSL3d6NS8vZ0E5NHJmY2c4WTczenVGRGUzUkx1aGJvZWZvZEtabTBqT3dmbGZmTGFMR1JuZDIrWW9Cc3RwR1ZaZnVoQWEzeThPSERieno4OE1NZi9QblBDN3c2Z1BKM0FHaXhnUUZGSHh3SUFwc0lsVVVGNWJ2UlFFM0xUd3RXRTBTQm1zMm1xZDRtSllYNkUyZ2Qyck96cytuZHV6Zng4ZEZta3lNbGcxUEo5ckhuajJMaGpFWnFYU281SjZucmJyRTV5TGExM1pyTm1ZTHRHL0NELzNyR3BwdEVmUGJaWjFSVzd1Zmd3Um9PSFRwRVEwT2t2dFR0ZHVQeGVIQzVqdEhTNGtVSWdjL253K2Z6NGZmN0pVVnBsNzFKUWdnNUNIQ2htbE5Ea0wyWmd1ek5yRi91dm50bTR1OSs5N3RMblU3bjFaSWs5ZUduOGYyeXVLWWF0dXh6TVdSQS9nL0hqVlcxckw2K2Z2M3MyWC84OE1rbm4yenRCTkJpRjM4UTFOb0RORDJvaFZsYUVOUkVNRWNOdmVSUUJOVDAxUVNwOU9pUlFVN09tZlR1M2ZzSGI3cnlYWTBmRGJDRlJsVlZGWldWbGRUVTFGQlhWMGREZzZiRzYzSWQ0L2h4TjBlUEhzWGo4U0NFQ0JiUXQrTHorZkg3L1NGbDNpQnpDMGlxS3FSZzVEUmtvb1pDUWdhZGVkb3V3T1hrNUppM2J2M1B4YW1wcVZmSnNuemhUNUR6NHgrQlFHRDdnUU0xNzF4OGNVbHBUYzFCSlNZdzBCbW82UUV0N0VjTFZROEFRaC94Yk12U1RKak5jZWdWYjYxV2ZkMW5wSkZ4UmtZR09UazVaR2RuLzZqUGhmSEg5b2V5czdPSmo0L0hZb2tuTGk0T3N6a3VIR1F3R2swRUFnRmtXVVlJb1ROVFd6RVlES0U3WVlpOWlVQWdnQ1JKb2J5M2tFa3F4d1lYWXN4VEgyQ3VyS3cwcDZmM2VBZllVbDcrV1ZGMmR2WlFrOGswNnFmTC84YzNXbHRiMSs3YnQrL2RvcUp6OSt2QVRNL1NmTzJBbXI4RFFBdm9VampDWm1jc1N6TWFqVUdXcG9HYXhXTFJ5WGduWUxNbGtwU1VoTk9wbHgzS29tZlBIRkpUVTMvMDU4VDRZL3hUcWFtcFdLM1dJTUJac0ZnaUFCY0lLQmdNQmxSVkRVZFF2VjVqQ056dytYeENsdVgyZkc4aWFKckdSazhEQkp0aW9JWGlUWHFBQTh5NXViMTNBbnZlZVdmalM4WEZGd3l5MlJLdWdsTUtTdjQwVGgvWFI4M3g0OGYvK2E5L2JkNDlldlRvaGc0QXJUMVE4M2ZHMERveU8wTXNyWDNUVSs5UDA0SUVTVWtPbkU0bktTbmQ2TjY5TzFsWlo5Q3JWMDhTRXhQL1Q1eWZVelpGbTF3dWp2bGxlblN4UlJjQUJ4UnFqeDdIRUo5QWFrSjByOHFXRmcvMWJoL0pqaVFTVE5MM01ma29MeS9ueXkrMWlPbWhRL1VjT0ZETjBhTk5xR29BdDF1TG1MYTBSSnJGdExhMjR2Zjc4UG0waGpFNjN4dWg1akZxUUtBS0lRZmJtWVpNMUk1OGNIcFQxUVNZSjB5WVlQblRueDYrSUNVbFpZalJhT3hReFhmUDV0Vlk4b2FSbDNieXpVTnF5NkJDZ1VHRlA2NkpXckZyTTJwR01ibmhZNkdpS0ZGbDVoaURFL0ZFSmNpcXF1cUszNk0rb2I2bUdwL1owU1lpMk5SUVE2TWIwdExUL25Yb1lNMjd2L25OYno1OS9mWFgvU2NKYVA1MkFDM1FBVU5UUS9YT3dRQUIwU3d0MHJ5NHJUOHRvcVBtZEdwQmd2VDBkTTQ0NHd4eWMzTy9VMzlhOWQ2dHVKMkY1R2VjSGhIMzcwMjJhUG5xVlR5MnI1blVSRE8xamMxTXZ2cEtwaGQrdDIwSEpFbWlkKy9lSkNRa0JQTjU0dkg3L1JnTVJsUTFFSlhrRzVrOEJscGJqUmdNUHZ4K3Y5QytMMHVLRWtCUkZLSDRBdmhWRlVrU0t0cE5OYXdXRXN4M013UW5hNGpCR1lPQTVnc0IyNG9WSzFwWHJGanhMMkRyeG8xdlAzWCsrZWRma0ppWU9GU1NwQ2hkbC9WUFAwVHlsQUZmQzlqMmJZTVZqVDh1WUZOZDVVeVordjlZc2YzdDhIc3I1OTNBeEFmWGsreXdoYWZ5STJzK1lueS9Sb3B0NXpKdjMxR0d0OGVKUFdVVXBCVmdIL2N3MjVmT2pBQlh4VmJHamJ1SldtTUdkcVVldWZCbXRqNTlEM2pydVdQQzFaK3Qvc1MzT2NuUS9OSEhuNVlmMFlGU2U0RG03d0RRbEJNQW1tZy9PR0RBYURUcHBZYUlpek1URjJkcHg1K21LZDUyN1pwTWFtb3FHUms5MlAzNll0elhMYUwzZHh3a3NDazFqSm0rbG0xckg4UjhHc3laVTJCc3JaUWVhSW1TTFhxeUtaVzNKaFRUZU9RSTNuaDdsR3pSNE5FM01EWFBUa3Vyai9nNDdTOGYyYitYaTUvL2d2L011b2J2UzA2d3FhbUp5c3I5bEphV1VsdGJTeUFRNE9qUlJvNGQwNElLc2ZsdVFXWGVVTlFVUlZIdysvMVM4L0VBZmpWQW5Ea1NQZFVGR0NRaGtLRk5rTUVRWkhER0dCWVh0WHo4OGQ2OG5qMTdYaGdmSHo5RVZaUjBWY2RDVGdvQVZHMlJqVEdNSlVoaDNJM1E1SU9NdEs4SkxGNm9xb1dNYkFpbEdubWFvSzRSMHJLSWtxNEoxYjVVVjBGeUJsaDFzMXp4UW5VZFpHVzN2YU9xd2M5UzBxTi9BN0J4MFRTV05BNWgxWnp4T21EN09RdHJMbUhyNDlOajFsUkYvMDZBclhMdGc0eGRzZ3QzMldFMlYveWJkQ09BbTBuOWUyS2Y5aEtMcHcwR29MUzByUGJNTTgvWS9OSkQwejc4eGYrK1VCM3lxWjRFb09rWEpjalFBdTJabkFTRlQ0TTF6VEZtcHdHRHdSUnNXbXlpSTlNeklTR0JSSnNWQ1lrdUtlbjB6TTRJQmdreXljN0s0cEZwQTNGTWZwTzdSbVJIeTFnQjdvWmFHcnhtc2pPUzI4eVZ4cnBxRkdzeUtmYm9tNnFucVo2NkppOXA2Um5SVWxING1ENm9ENE1YdnMvNGZqOThnNWZ2VGJZb0JHcWhZMmMweUh5ZmdXYUh3OEU1NXhUUzJ1ckZaREtoS0g3aTR5M0V4Vm1DUVFiTkVkdmNiTUpvYk1Ga011TDFhaXpPNS9QaGIvVnpwTUVnVkZXUkJBcXRyWXFRNUFCbWs0cUVKSHgrRGR4Q1FRWlpEZ2NaQWtKZ0FDbFl4U05DekswTnlQWHRXN2dIK0FSNCtvSUxMdWg3NExNUHo3LzdoWXJCZHc3UFNEK1ovemh0T095cWdPd0pzSHBlNVAxN3g4QWVHVlEzVkpmQzBGbXcrTFlUcisvcG1iQ3FDZXAzQWxZd0ZzRFdwZkR3ZEZpK0IzSlNvTFFNNWp3TkUwdkF2UWN5eHNISVhHaHd3WjQ2MkxJTGN1MVF0eHNHajRhTVF1MmY3OXNNVzVzZ0c5aitNa3krRjNvVlFQayttTDhDeHZZUHd5RXJWcnpPNkVVUGZ5dnpZTTNxTnhnNjRWRzhTNjlsN2ZZR3BwVWs0OTIzbnRVVldleVpmRW10eCtQWlVsSHh4VWZubkhQT2ZqMjc2Z0RRMmdPMjBIdWhvRklnREdpeXJFcENxR3FvSXpnSUpFa1lUU1lNc2lTOExTM0k1Z1M2V09QQTN5d2FqcnJJek03R2F0RkF6V0tKSXk0dTFKSGRTa0tDalhqSnplc3Z2NEUxN1F6aTFHWlNpc2Z4NUp6QjJCcDJNMjc4UFpUdnFjRlllUk1iRmxrWk1QNXU1azBkQmtvanN5ZGZ5OHY3VkxLc0hocHR4YXhkOVRmU0xEQnpSQ2JiUEgweG1nM1VWKzVsOU96bmVIQ3lWcy81NHR3Ym1QVnlKWVc5a3FuWVY4OFRXM2N3SUl5SlprYU51b2dsTDY5bGZMK0pVY2ZjVmJhZUNmYzh5N3psS3loeW5MYkFwaHYrWnBidCtJSnhsN2NOOW4xVjlTbGJqamw1V1ZjenV2MkQ5MW4wL240cWo3UXliOExQdm5mMVY0UEJRTStlUFltTHMrRHp0V0sxSmdTN1hNY0NuSm1XRmkySzJ0cmFxb0diMGNjWjJVYU8xdm1GSytDblM2SVdQUTBFQXFMRkZ3Qkp4V3hTaGFxcWtxSWdDUkNTRkk2aUJnQ0RKS0dBWkFoT2ZHUFFURFcyQTNUR0hUdDI3QUwyL09iS3JLY3UyL3RSNzV5Y25DS3IxWHBoWjdseFN6ZkEyb1d3dEoxeVRGc0JySndMVGRzaGV4b3N2TzNrVHY3MlBiQjNPNlJad1J2c0NqajlZYmduNkVxcFdnK0Q1OExFRGNFN2VoM2NzeE1LSFhEUGNGaTVFZTRiQXcvZkMyTWZoSGtUb0dvRDlOb1l2TWsxd01UYjRkbmRNREFkNnJaQzhWMHdla3R3LzN3VjdDeTFjM3RCMnl1aWRNMWZHRnJ4cWphUjB5NWc5Zko1bldlOHEzV3NYbGZGN0huOThkUmV5dU5yMXpGMTRNU3k4Zy8zN2ZCMGNaVDFqRFBvbVptcVkxbWRBWnFpWTJlS0hzd2tDVFhZbEZob2lndVNrR1JKR01PUlRvbFdiNnRRaFlGNHM0bjRPQk9OVGNkRmdIaU9IV3NoTGFzblNiYjRzRDh0MGozS2lzMm1xZDBlK2JTVWhMNGplZml1Y2ZUb2tVNTZlanBaV1ZtUW04dkdqZU9aTmZac0hKT2ZaK2JJN1BCaDJQejRiTlo0TDJMdnJubVlVVms0N1JJZVhyNk5CVk1IYWlSZ3dEaldQVHdaVC9WR2V2Vy9tMm5qZDVCanFXUEo0czBzMjN1UVFXbUE0c01YWTB3VUZoYXg2OEdkaEJSdndyY21WeDI3ZG4yRTIvZmZFQlU5QmRtaXZubG44ei9wWjdCMTl3Y3NlbWNQbDAwZFRNSVBRRk5UVWxKd09ydVFtSmlJelpZUUZVSFZKdEZ4M0c0elpyT0hsaGFONFlWTTAyYXpEOGx2eEdMeGkyQmdRZks0RlF5bWdEQWF0UjROQVVVVklDUlpEa2RSSlEza2hCeThVT1RnaFdBSW1xbmhzcTEyZ001WVdIak9SMEVtOTlKYmI2M3JmdDU1NStVN0hJNGlrOGwwSVhCU25UVUdCdlgvSEZsZ2FRUTNuRlIyK2JBeEdxZ0JZWG1ZdXIwd1l5R1UxMmdtWkwxdWd0dHlOVkFEeU1xQ1VPL25YYnRoOXRQYTgreUJrQkdjZVZYYm9OWUlxeGZCR2tEMWdhc1Vhb0VzQUZjRGpVWUhqbmJjakRtRHJtUHhuS0RFdDlGMlF0OU80L2ExbEtaZGR1ejhyb0VkOVVYRmU5K1o5TmN2REE5TlBoTHlrWGJDenRvRE5iM0NSclR2REZTQnBHcVBRb1I3YnNpeU1NZ0k3WWFvQ0pDMDNwRUdJeGFMUlJpTlJ0S05jUEJ3QS9iVWJMcDN0ZXNDQkJxbzJXelJxUnpaQ2VmeitxS1ZQTHN5Z1dIRFJwQmJkR0toeHkxYi9vWFowNS9aOS80KzZEYndVR2ZaQzJqQU5tU1FabzVic3daU2JDOWxkNVZDVGw0eVF3WWxjOXU0YXhnMzhqSUdEeC9Gb01Lc3FQWGFuUTVjOVVmYWJNODVZREoxZFpOUGQxTVVUbFcyS0NIQnhsa0pOczY2c29RMzVxNWcyNUZMdUx6ckQ1UDViTFZhNmRPbkQzYTduY1RFUkJJU2JGaXRWcXpXZUpxYU5BYm5kc2RoTmpkak5wdndlazE0dmEwY054c3g0Q2MrUHV4N0U3TGtCMk5BTXBzMUJ1ZHIxUmljTEdzcElvR0FRSktGaEFnSDdLVGdYVjNXbUp6azEvbmlEREVncHdjNlkxQkM2UUN3OFp4ekNrM0xsajJWazVOelptK2J6VlpvTkJyN1EvdDlsY09LTGwrejhNNFNHK1J5dzlpeE1HOGRqT3dIbnQyUU5xV2Q3Y1JzU3phQ1Q0bjRJdlNlWFhzR2pCa2RlVDFtUElRRmtPd083SW9MbHhkaTZaalZrVTVlM2dsMTlOMktvbnpnY3JsS0Z6NytWT1dSRDdmWDJNM0wxUmhtRm9qeGczVUVhSG93MC85RzFmdlBnbzBpVlVsQ0lCQ3lMS01HQWtLV0RhaEtxeERJSk5vVE1adU1IR3RzRUFhVEJsNG1rd21QNXdpeUxPSHpLOWdTYmNUSHRNUUw5ZmwwT3AxMDY1WkNldnFGYkx2bUpqNzc5Rk5XUGZzZ2YzM3RBOHJXek84OEtnd1VEcmljMGNPQ2dndWpyOGFla24xQ3FKano4dnVNM3I2RkxaczJNSEhJK1R5NDdtTW1GRWVrcXR4Tkxtek8wNk9EMWZja1c2VHkxYkVXdWlkcC9LeXh2bzREaXBrdWxoKytuQ016TXhPSHd4RUVPRnNZNE9MamoyS3hhT0NtQlJaYU1KbGFPQlpud29DUGhBUmpxR0tCaERnakxzVXZMSFlEaWk4Z3VZV0N5UndRSmxrbEVBamc5NnRJa2lEWVR5YlU2Rmx2cHNyQkM4UWdTVkk0NktBRHVmYkF6dmpSUjN1TjU1MTNYaW13RDFoN3hobG5HRzRiOVh4V3ErR3NISjh2cWJmSlpDcVFKS25YdDNyQUdxSGFDQ1ZGMms2dlczMVM2bVFNR2dqcjE4Q0lHYkIzUGRRb0VmWm1xd1k1RzRxRFFZMkdCaDJHbVhNcHptMmt0TnhEWWVHSm84TkNpQXBWaUUrT0hxNnIyRnl4NzhzYmI1eDBxS2FtUm8xaFplMnhzNDVZV3Zpem9OS0xFck1PVlFpaFQ5VVFXZ3RjU2NneUJGU0V3V0JBOGZ1RndXUkNWVm94bU9LeHhzY0pneFJBVVNFK1RtdDdKN3hOZkhWTTBLKzRtT3E5SDFEanl1YjhOSWN1NFZZZjlkVHFQYnQyNlVKcWp4NmNmZTZGRE8vbklHM2tjM2cxbDZqR29DMFc2aHNhMEx5WjJoZzg2Rkx1MlZwSnY5a1ROWmFyZW1ob2l0eHFObTNaeE15UlUvQlViMk9ucTRBRjJVYkFoOHV0VWpSd0tFVURoOUpVK2svS3ltdEJCMnhsWmFVVTlXL0xHTjNsbTVneGZ4WDNMRnBNdnYxMEJiWlRraTFLNVMvUHZjUzdMUmE2eGN0OGVhU1pjU012bzMvQ2FRSHVKQ1ltVWxCUVFGSlNrZzdnRXJCYUcybHFpc2RpY1JFWDEweGNuSm5HT0RNbTRjVm1NOUhhcWtWTjB6Sjl1Q3RNMUIvMkkxUkZ5R1lGZTRJaUJaTjdoZGNiUURhcVFoYXFGRXIwMVFVYVFpQVhabkhCdkRnLzBibHhoaGlBYS9QOHl5Ky9OUHp1cnlXZkFSVnhDM2tITUR6eXlKOXNoNW91VDA5MDljaHFiYldkYVJLbVhpRDNSbE1vK2ZvakMyNGZDQ1VESU1jR3lWa25ONG51ZWhoR2o0SDhwWkRiSDdLQ2RxT2NEQ3NXd2FTQld2REFWUXZtL3JEeDhZaFRldXk0SzFpNWZpTVRDa2RGaCtlRitNenI5WDV4L1BqeEw2dXJxdy8rODU4YkR0MS8vLzB0Z0RxaFg3bzRBWmgxQkdxeHo4Tkw4UHhFSmRJRzJ3TUppS1JySUVsQ1FzSm9rSVJmMGRLS2ZLMWVUT1k0TENaVkhHbHljN2pCQzBMQ2FKQXd4OFZqTmNQZWZYWGs5UnRJYWxjN0dZTXY0dTJOTy9Iazl5YTdXM0pRbGNOSnQyN2R3cVZSbVptWmJIcmlMaTVlK0I4SzhyS28zTHVIMis3N0IzcjRIenZ0TjR5ZGRnTWJGOXNaUFBsL1dEQmpCSU9ueldYRXp1c29LTHFJL0N3SEZlV1Z6Rmo4SnRPSGFtUy9hZnZMREJyNkdrMlZwVXg2K0JseUxBQjFqQysrRkhkR1BuWWFxSFRuc21aa1lSUjVXYnZtMzR5ZE82L051ZmZXbC9QTU15OHg4Y0h2RDlpKzExclJaazh6Ujd3S1hSTVRTVERKUHdpSTFkZlg0L1A1eWNqbzBmNCtOamRUWFYwZFR1ZzljaVJVYStvS3l5QzF0R2krdDlaV2J4RGN0SHBUajl1SEloU0VxcVdIaElycVE5VUx3UnBVZ2pXb29VSjdRa0NuZTVTRGdDZnJscENNa2lHbUNmU0puaHRpZncvSXExYTltcHlYbDljdE9ibGJxczJXa0c0eW1ib2JESVlNU1pJeTJ4cDliVWRERFNoV1NQdWFFU0JGQVdvaGF5aVVsMGZzWmxXQm1ocXdKNE1qWWt4N2hSQUhXZy92T2podytCKy9XckgyNmErVXh2ckRaV1ZsUjY2L2Z2eFJJaHA2NGZTSkRzQ3NJNGJXNGZOUThibnU5L29ValhDcVJ1Z3gyQjB0cU5Zc2laQmN2VzZKbEVNWlpBUVMxZ1FibHJoUW5hYzVHUEVNQlFnU3d1M3d1blJ4aEZsYUtEaWdiNFhuODdpb3JXL1VPanBaVHo2THpOTlVUNE5MSVMwOUhYUHc3alJ6ZUNiWk05OW5ZcUdDWW5HU0hKWHVvZEpRVzRzYk0xbnBLZEdwSS92V01uRDZPclp2WG9MMU5DQXJQN29pK0c4S2JLRlJWMWNYTEtRL1JFUERZUm9iRzRNYWJ4R2xFSStuL1lvRnY5OGZ6bjNUVnk0RUFvb1VDS2hoZ0FzRTFDQ3dxYWhxR05UUU1icU9RQzRNVURHcUk1MHRjc3h6T2VaNWFCdlNvNDh1c1BYdDI5ZWVscFptVDBwS3NsdXRWcnZaYkxZYmpVYTd3V0N3eTdKc2t5VEpKa2xTZ2lSSjhVRWdEQWtBR0hUZXRSQXcrR3EzNHB2NUxONXplNHVXYmErSjV2UUp3cjN3bDZvN0VBZ2NWeFRGMWRyYTZ2SjRQTWVibXBwY1gzMzExZkc5ZXo5MjMzMzMzUjRkZUlrWUlCT2RiKy8wNGdBQUM4eEpSRUZVZ0prZXlEcGlhbEZMSjBBV0JXWjZJQU9FTEV0QzY1SW1ZVERJT2tDVE1SaU1zWlVEUkJKdDIxWVFhTW0ybWlKSFlxSTl6TktTazdzRnU3RnJPV3JmNVFnQjI0eWhYMjg3KzdhdHBjRlJURW4rNlNFUC94T3dkWmJONHZkejRNQ0JzSUNsSm9OMGxHUEhYTzJLV0VhcmhmaUNBS2UwQTNBUkZxZDF1bGRENVZyRU1Mak9RSzVkc05PVmQ4bWRnSnFoSFdDTFhmVGI2V3lobmNmWTU5Rk8ycmJQOVkrZExiRkFGcnQweE5MYVBBOUp2N2NIWWljQ3M5RHptSjRhVWV5c0xhQ0ZRQzFTdU42UkdHUlNraDJIb3d2SnlWMXh5RzcrODJFbERtY1hESWJvL3ZUOWg0MW5RTzYzMjExOTM4N05XSHNOSk10cC9xKyt6bjhDdHBNWXg0NGQ0K0RCZzlUVjFYSDRjSWk5UlhUZW1wczlPdk0wVXJVUXFUbU5CcmhBSUJCbHBxcXFHZ1Z5UXFpU3FvcXdxVXE0NGJPUWhFQVBkRkk3SUJRRFVNS2dWVU8weTlJNkF6ZXBBNENUMndHMXpnQ3VNM0NMQlRUYUFiSE9HSnJhQVZ1TGVxMmwya2lkZ2xqUVo2YnJOeHYybTRYQUxHaHFTa2hTTkpqcFFFMkVGR1AwZ0dZMFJoaGFxSHFnYlY2YVRWZm5HZkdsOWVqUmc2U2tKSDRhMzNsVTlQL2VTRXBLSWlrcGlhNWR1MUpiK3hYMTlZZUNPbTlIZ3lWWng0TUY5YzNoZ25xdlYxK1NwV2R2SVJNMUVLVWVvZ2xjQmdnRVZGUlZGVUdRRTZxcVNxRitNMXEvQnFKWVhQQUNqbVYwT2dDU1pFbUtCVHdoQndHeU0wRHJETnkrRG5QN09zRDJkY3pPZGdFdUNFaWRBaGpSemJMRG9LcjNtWVZlQndFdGlwbHBRQ2FIMmo2S0VGT0wxSFlhd3dyT0VaWVdxUjZ3UktWd2hGaGFFbDI2ZENFNU9abVVsRlRTMDd2L241QVgrZ25ZZnVCUld2b0p1Ymxua1pxYXlvRUROZFRWZmNYaHc0YzVjdVJJbEpCbHlEelZLNGJvYTA0MTM1c0djb0ZBR09BSUJBSjZpU1JKeCtCRWhNbUowS09JTVZYUlIxY2piRnhJN1lOU0ZOaEZmYWNkYzFjNkFiQjF4TnBpVFZMUkNiaDFCbkJxZTY5MW9OUVpzNHY5VGRTMjlLOWpURTFrV2RZRkEvU0FaaUNrdWhFTGFBWkRoS0hwaTliYlU3YlZ6TTZJRUdUWHJsMkRMSzA3bVprL0tWcjlCR3cvd01qTXpDQTFOWVhhMnRxd1NtOWI4N1E1R0Z3SUFad3Z4di9XaHIyRkFneEJrRk03QkRrZHdCSE41cVJZb0l0NjNzNW5iWlpnSGwwbnpFeEwwdm91Zld4QjFuV3lUSzZqQmIxcEdmT2E5bGhaaUpucC9HZnRnRm5JN0RSMnd0TDBmalJ6VUJNd1hpY0NHVzEyaHRSdDA5UFRNWnZOUDExZ1B3eXdCZGl4ZHgvL3JQaUtZNHBNd1ZrOXVlSGNNekFEcmMxTnZMcnJNL2JXSGNOZ3NUR3l1SkFMdThja3dpdk5QUFh2anptejk5a016dmp2OVIyWXpXYXlzN05KVFUxdFk1N3FvNmZSL2pjOWcrczRlcW9vQ29xL2xaWldDWXRaaWdJNVhiQ2hQWkFqMGlZVktmWlJWVlVrV1E0SjJNUXlPenBoWXJyWFVralc2MlRCckNQR0Z2V2VDTm5aSjJaeWRBSmdrZDhMSVZSVllERElVVXhNNXk5RG42SVJDMmFod0lDK0NiZWVvWFVXN1l6NDBTeHQvR2loYUdlczJSbmJVS1c5VWJZYnNvcWczWmF3N2lvbVRIbVl4U3VXNE5SZDFiWGxlNUJUOGtsemZEdUE2U2xkeGVDNXU5ajU4dnh2dko0aGMzZXgvUlRXY3pMLzZSVDAySTZ6ZW5jdFJZWFpwSnBWbHIyOWtjK09YOGFEZzdMNXNyS0tqNXRsTHUyYmkvdklRWDc5OTVVc3ZtTWlBN3BFTnZQVzVxMHNlZTlMcnJMMStLOEd0dENJajQrblo4OGMwdEpTcWF1cm83NitQbWllNnYxdklZQnJhU09MMUZIMHRMbmhDSWNiQStSa3BlalRRNFRPRDZjSE9ZUlFoUlp3VUFrR0hzSkFGN3pPSlNFRWtpd2pSY0NPazJGZE1jQjNJakE3MlhLU05xYXBpUHc0Q3FSQzdLb2p0cWNIeFBEejRQOHpHQXpoOTJNQ0FFUWVZOEZNMWpYZDFnT2FJZGlZdTZOb1o3U3NVRWlGUXdPMGlCK3RhOWV1cEtTa2tKYVdGcFdQZHFJeGJRUXNySUQrN1JUTnJWc3lCOHVBOFZHZ0JyRGt2cC9qbVB4V1ZCSDhON3FocHhWdys2UnZudEtoZWwxVVZSOCtwZCtlekgvNitzQW1PM2hnOHVYaGwxMDhoN2wxejVjd0tKdmN2a1U4MERmMFNUYTdQL21VTGZzYkdkQkZPeEN1dXYwOFYydmp1ak90ZUg1azFEY2hJWUdlUFh2U3ZYdjNjUFQwU08xblBQL0NlL1F0S2NIZWNoelhvVW8yZlZKTG43NjVKTFMyQkFNTXNRek95NEV2dnFEcFdETkNFUnc1Y2dSVk1wR1M0b1JBZ0lEaTVmRGhZMWl0Um5ITTVVSkZ4cDdrUUJaK3llVnlvd1MwV0lJcHppSk1SZ2toQkFHL0QxOGdJQUJKbGcxSWhNQk9SVkZVTFNDaHFxQ3hscE1GclRZQXBrWFlwVENsQzZia0k3Y3ZjaWpDM3dtQnJQYjlZRjRZWVlBSzdtMlExV21BSklRcWhOQitMMGt5UnFNaEJIQUVGRDhDQ1VuV29wUWhVQXY0VzFFeG9yUzJFaEJndGRteHhwbkNRTlpPMmdadGZXbnRNelN0NzBBUTBJeng3UG5FU3U0Wk5uWnNTNlJiVGhJM1QzU1EzazN6b3gydFNPTnZ6MWh4eVRCK09nd3RCRHl3Y0JHTXZ4UFNMT0NyaDBlZWhSbDNRZVVtV0xrWnF0encrRnhJTThPSVNUQXdONFFTalN4KzRsL2N0V1ZwK09BMmxXOWp3Yk52c2JtMEhzdnlQOU8wM1VIZTRHdVpPRlJyWmx5NWN5MWJtNUpKcWQzQ2k1cytJWGZJejdsdjhuQXFkMjNnNlpmZm9ycXVrZlRjODVseCszVFM3UnBNckh2NlliWlZITWVhZFg3VWlhell2b2J0alhhOGV6YXd0ZUlJSTZmOGxyRWx1U2R4MWZoWXZXUWVhM1orU2IrUk4zSGIyQkprb0w1OE8wdWZYVVY1OVNHY0diMlpkdnVkNUtWWlQvaWZWRTg5eXhZdlptdnBBYjV4K3YrbjlRM2twcmVUUytNL1RzVVJsVDZwUVZhbStuaG83VTZtWDNrK2NUL09qbCtBVmx5Zms1UERPZWVjUS82NWd6akgwY0NMRzh2SXlrcGp4L28xbURQeXlVeExwVnUzRkpLVHUrSjBPbkU0dW9UTHVleDJPNms5TWtoMUppS1pFMGhMU3lNMXBTc0pWbzBCeE1jWmNMdVBjK1JvTTNhSEU3dk5ndEVjUjV4UkZySXBUdGlUa29RdHdTeDhMYzFnREdhMFd6UTVKczAyTXdtVHlTU01ScU13R2lRUkJBaGhNQnFFMXNSQlVnMEdneXJMY250TElMaUVHdmRHTDVyMm5DSkprcVo0b2RWVmhsL0hMQUZKa2dLeUpBVmtXUTRteVdycmxtVXB2QjJCVUlXR3VtcHd1NnJCWUZBbHRJNU5KcE5SU0toQ0NhakNhRFFLazhra1RDYXpNRWlJZ0NwMGlyTnhpSUJDYTJ1cnNDUWtDcHRaRm03WGNSRVhyL20vSW83OTRIR09qOGRxdFhDOHNaNURodzVSVjFkSGJXMHRCdzhlNUtzamJ1eDJPMGxKU1RnY1hZSitzcTUwNjVaQ2Ftb3E2Y25kZVc5TEJtVU5aM0Q5OVRrMDdzeGxXMTArNTV4ekRrcEZEdGZlYWFWa0xFd2FDWGVOZ1ozMWdCV3lmRERwSGswc2ROWVVjS1dCWFliMFhqQjhPRGpOVUR4RWU1Nmx1K1I4NVp2WUtmZG5RSHFFcDFpU3N4ZzIvQXF5VTJ6MDZuY3h3NGRmUWI5ZUVWbS95cDF2Y3QrMFg3Q3F3c0w0aWRkalZWd0FWRldVMDJ2QWxkeCsxeDFrdWQ5ajJKUjVZY0dDdkg2REtja0s4TWl5TjJLQTdRMW1UTHNidFdBb0U0Wm1NbjNzelZTZmhFUlIwKzVWYkhEMVl2cVVhMWs5K3pvV2I2Z0VvS2F5QW1kK0NYZmVkUWNsS1ljWU51SVczQ2Y2VDZxTEdTTXVabDJObldtMzMvSE5nZ2ZWK3ovaHNVOENQRG5qN0ZpaXlUTnJOaEozOWdDdTdLR1ZKTzdjOFI1Tm1VVU02bWJtdy84RHprdUx4VUoyZGpaM0xYNkJUeSsvbU1jZi80REd6SkhNdnU0UzNDNTlpb2luVFltVzFacUlUYmlvOVBqSnlNaUk5c0VadFJtVGNWWnZFZzFDWjZaYU1NZjdhUFkwbzBqeHlIS0xVREVRRjJkR21NM0VXVlFhV3IyUzBSeEhuQ0Zvc2lxQ0ZxOWZ4TnNTa0lXZ3RhVVpSWURSYUNSaXdZcVFPUm9tV2tFaUZrVytoTkRpcHFvL0FMS01qQ29GQW1Bd0dKR2xqazFRaldSSitIMCtKSU1Sb3h4NUQwQUVBZ1FrQ1lzbExzcWtOSnROQkJTRmdDb3dHbVI4QVVGY25CbEprcEVzRnBRV0Y2NVdTVmdzY1dGenMvVzRoQ2t1aVdTbkExbEs0SGhsTFhKY1BQRkdmYldBUGpBZzAycExKSTVvYzlTYzJBV25zMHVVRDAzZlNNVk9FaWFqZzkvKzBVbS8xRzUwUDU3S3F6VkdMQlpZdWhBbXpvSVJKZHIvbnpvVVZxeUY0aWt3Wmhac0hnRmp4a0JUQ213TXlwcWxaR3VMM1F6OVN0cWFvclhsVlZoeU1xTmtYU3pPREVwS01saWZZc1dSWDB4SlNWdXp6WmgzQlkvUHV4MFpHQjU4YjhqNEdkUlc3R1Z2ZVEwWmhlZFM5K3hiTkFMSlFFNWhNU20rTXVSbGJVM0lncEUzTW0zVUVLQ1lnYlArek41YVRTbTUwNUUraVBuM2pzY0J6SnB4RGZlOHVJcmJoODJrMy9DSlpGZnZZMDlaSmVaZTUyQ3BmSUFLTnhSMThwOWN1MWV6dkRhUG1zMHpzUVAvSDNpeGdKbVFPNXd1QUFBQUFFbEZUa1N1UW1DQyJdLFsxLCJkZXRhaWxzLWNvbnRhaW5lciJdLFsxLCJkZXRhaWxzIl0sWyJocmVmIiwiaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvYXBpX2RvY3MvcHl0aG9uL3RmL2RlYnVnZ2luZy9leHBlcmltZW50YWwvZW5hYmxlX2R1bXBfZGVidWdfaW5mbyIsInRhcmdldCIsImJsYW5rIiwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciJdLFsiaHJlZiIsImh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2FwaV9kb2NzL3B5dGhvbi90Zi9kZWJ1Z2dpbmciLCJ0YXJnZXQiLCJibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksdSgxLCJkaXYiLDEpLFQoMiwiRGVidWdnZXIgVjIgaXMgaW5hY3RpdmUgYmVjYXVzZSBubyBkYXRhIGlzIGF2YWlsYWJsZS4iKSxoKCksdSgzLCJkaXYiKSxUKDQsIlRvIHVzZSB0aGUgZGVidWdnZXIsIiksaCgpLHUoNSwiZGl2IiksdSg2LCJvbCIpLHUoNywibGkiKSxUKDgsIiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHRoZSBiZWdpbm5pbmcgb2YgeW91ciBwcm9ncmFtOiAiKSx1KDksImRpdiIsMiksdSgxMCwic3BhbiIpLFQoMTEsInRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygiKSxoKCksdSgxMiwic3BhbiIsMyksVCgxMywibG9nZGlyIiksaCgpLFQoMTQsIiwgIiksdSgxNSwic3BhbiIsMyksVCgxNiwndGVuc29yX2RlYnVnX21vZGU9IkZVTExfSEVBTFRIIicpLGgoKSxUKDE3LCIsICIpLHUoMTgsInNwYW4iLDMpLFQoMTksImNpcmN1bGFyX2J1ZmZlcl9zaXplPS0xIiksaCgpLHUoMjAsInNwYW4iKSxUKDIxLCIpIiksaCgpLGgoKSxoKCksdSgyMiwibGkiKSxUKDIzLCJSZS1ydW4gdGhlIHByb2dyYW0uIiksaCgpLGgoKSxoKCksdSgyNCwiZGl2Iiw0KSx1KDI1LCJkaXYiLDUpLHUoMjYsImRpdiIsNiksRCgyNywiaW1nIiw3KSxoKCksdSgyOCwiZGl2Iiw4KSxUKDI5LCJBdXRvLWFsZXJ0cyBmb3IgcHJvYmxlbXMgZm91bmQiKSxoKCksaCgpLHUoMzAsImRpdiIsNSksdSgzMSwiZGl2Iiw2KSxEKDMyLCJpbWciLDkpLGgoKSx1KDMzLCJkaXYiLDgpLFQoMzQsIiBJbnRlZ3JhdGVkIGRlYnVnZ2luZyB0byB0cmFjZSBwcm9ibGVtcyB0byB0aGVpciBjYXVzZXMgIiksaCgpLGgoKSx1KDM1LCJkaXYiLDUpLHUoMzYsImRpdiIsNiksRCgzNywiaW1nIiwxMCksaCgpLHUoMzgsImRpdiIsOCksVCgzOSwiTGluayBsb2cgdG8gY29kZSIpLGgoKSxoKCksaCgpLHUoNDAsImRpdiIsMTEpLHUoNDEsImRpdiIsMTIpLFQoNDIsIiBUaGUgbG9nIGRpcmVjdG9yeSBtdXN0IGNvbnRhaW4gVGVuc29yRmxvdyBEZWJ1Z2dlciAoVjIpIGRhdGEuIHRmLmRlYnVnZ2luZy5leHBlcmltZW50YWwuZW5hYmxlX2R1bXBfZGVidWdfaW5mbygpIHdpbGwgY29sbGVjdCB0ZW5zb3IgZGF0YSwgZ3JhcGggc3RydWN0dXJlcywgdGhlIGFzc29jaWF0ZWQgc3RhY2sgdHJhY2VzLCBhbmQgc291cmNlIGNvZGUgdG8gdGhlIHNwZWNpZmljZWQgZGlyZWN0b3J5IGxvZ2RpciBhcyB0aGUgaW5zdHJ1bWVudGVkIFRlbnNvckZsb3cgcHJvZ3JhbSBleGVjdXRlcy4gIiksaCgpLHUoNDMsImRpdiIsMTIpLHUoNDQsImRpdiIpLFQoNDUsIiBTZWUgIiksdSg0NiwiYSIsMTMpLFQoNDcsIiBkb2N1bWVudGF0aW9uICIpLGgoKSxUKDQ4LCIgb2YgdGhlIFB5dGhvbiBBUEkgb2YgRGVidWdnZXIgVjIuICIpLGgoKSx1KDQ5LCJkaXYiKSxUKDUwLCIgU2VlICIpLHUoNTEsImEiLDE0KSxUKDUyLCIgaGVyZSAiKSxoKCksVCg1MywiIGZvciBvdGhlciBUZW5zb3JGbG93IGRlYnVnZ2luZyBBUElzLiAiKSxoKCksaCgpLGgoKSxoKCkpfSxzdHlsZXM6W2AuYXJnW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgY29sb3I6IGxpZ2h0Ymx1ZTsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgbWFyZ2luOiAycHg7Cn0KCi5jb2RlW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTsKICBtYXJnaW46IDEwcHg7Cn0KCi5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHsKICBoZWlnaHQ6IDEwMCU7CiAgZm9udC1mYW1pbHk6IFJvYm90bzsKICBmb250LXNpemU6IDE1cHg7CiAgb3ZlcmZsb3cteTogYXV0bzsKICBwYWRkaW5nOiA1MHB4Owp9CgouZGV0YWlscy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIHdpZHRoOiAxMDAlOwp9CgouZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW46IDEwcHggNjBweDsKICB3aWR0aDogNTAlOwp9CgouZXhoaWJpdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHdpZHRoOiAxMDAlOwp9CgouZXhoaWJpdFtfbmdjb250ZW50LSVDT01QJV0gewogIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luOiAxMHB4IDYwcHg7CiAgdmVydGljYWwtYWxpZ246IHRvcDsKICB3aWR0aDogMzEwcHg7Cn0KCi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0gewogIGZvbnQtd2VpZ2h0OiBib2xkOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aWR0aDogMzEwcHg7Cn0KCi5leGhpYml0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zY3JlZW5zaG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNhbnZhc1tfbmdjb250ZW50LSVDT01QJV0gewogIGhlaWdodDogMjAwcHg7CiAgd2lkdGg6IDEwMCU7Cn0KCi50aXRsZVtfbmdjb250ZW50LSVDT01QJV0gewogIGZvbnQtc2l6ZTogMTM1JTsKICBmb250LXdlaWdodDogYm9sZDsKICBtYXJnaW4tYm90dG9tOiAyNXB4Owp9YF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYzAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJpbmFjdGl2ZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2luYWN0aXZlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2luYWN0aXZlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIGVkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH19O2VkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGVkKSh2KHN0KSl9O2VkLlx1MDI3NWNtcD16KHt0eXBlOmVkLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmRCgwLCJpbmFjdGl2ZS1jb21wb25lbnQiKX0sZGlyZWN0aXZlczpbYzBdLGVuY2Fwc3VsYXRpb246Mn0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhlZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLWluYWN0aXZlIix0ZW1wbGF0ZToiIDxpbmFjdGl2ZS1jb21wb25lbnQ+PC9pbmFjdGl2ZS1jb21wb25lbnQ+ICJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTt2YXIgWUk9TnQoIltEZWJ1Z2dlcl0gRGVidWdnZXIgTG9hZGVkIiksR0k9TnQoIltEZWJ1Z2dlcl0gRGVidWdnZXIgVW5sb2FkZWQiKSxFaz1OdCgiW0RlYnVnZ2VyXSBBIE5ldyBEZWJ1Z2dlciBEYXRhIFBvbGxpbmcgRXZlbnQgQmVnaW5zIiksV0k9TnQoIltEZWJ1Z2dlcl0gRGVidWdnZXIgUnVucyBSZXF1ZXN0ZWQiKSxxST1OdCgiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBSdW5zIExvYWRlZCIsYmUoKSksTHN0PU50KCJbRGVidWdnZXJdIERlYnVnZ2VyIFJ1bnMgUmVxdWVzdCBGYWlsZWQiKSxraz1OdCgiW0RlYnVnZ2VyXSBOdW1iZXIgYW5kIEJyZWFrZG93biBvZiBBbGVydHMgUmVxdWVzdGVkIiksWkk9TnQoIltEZWJ1Z2dlcl0gTnVtYmVyIGFuZCBCcmVha2Rvd24gb2YgQWxlcnRzIExvYWRlZCIsYmUoKSksWEk9TnQoIltEZWJ1Z2dlcl0gQWxlcnRzIERhdGEgb2YgYW4gQWxlcnRUeXBlIElzIExvYWRlZCIsYmUoKSksVTM9TnQoIltEZWJ1Z2dlcl0gQWxlcnQgVHlwZSBGb2N1cyBUb2dnbGVkIixiZSgpKSxRST1OdCgiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgVG9wLUxldmVsIEV4ZWN1dGlvbnMgUmVxdWVzdGVkIiksS0k9TnQoIltEZWJ1Z2dlcl0gTnVtYmVyIG9mIFRvcC1MZXZlbCBFeGVjdXRpb25zIExvYWRlZCIsYmUoKSksSkk9TnQoIltEZWJ1Z2dlcl0gRXhlY3V0aW9uRGlnZXN0cyBSZXF1ZXN0ZWQiLGJlKCkpLCRJPU50KCJbRGVidWdnZXJdIEV4ZWN1dGlvbkRpZ2VzdHMgTG9hZGVkIixiZSgpKSxZMz1OdCgiW0RlYnVnZ2VyXSBTY3JvbGwgTGVmdHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLEczPU50KCJbRGVidWdnZXJdIFNjcm9sbCBSaWdodHdhcmQgb24gdGhlIEV4ZWN1dGlvbiBUaW1lbGluZSIpLFczPU50KCJbRGVidWdnZXJdIFNjcm9sbCB0aGUgRXhlY3V0aW9uIFRpbWVsaW5lIHRvIEdpdmVuIEluZGV4IixiZSgpKSxxMz1OdCgiW0RlYnVnZ2VyXSBFeGVjdXRpb24gRGF0YSBPYmplY3RzIEJlaW5nIEZvY3VzZWQgT24iLGJlKCkpLHR6PU50KCJbRGVidWdnZXJdIEV4ZWN1dGlvbiBEYXRhIE9iamVjdHMgTG9hZGVkIixiZSgpKSxlej1OdCgiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBSZXF1ZXN0ZWQiKSxuej1OdCgiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgSW50cmEtR3JhcGggRXhlY3V0aW9ucyBMb2FkZWQiLGJlKCkpLG96PU50KCJbRGVidWdnZXJdIEludHJhLUdyYXBoIEV4ZWN1dGlvbiBEYXRhIFJlcXVlc3RlZCIsYmUoKSksaXo9TnQoIltEZWJ1Z2dlcl0gSW50cmEtR3JhcGggRXhlY3V0aW9uIERhdGEgTG9hZGVkIixiZSgpKSxaMz1OdCgiW0RlYnVnZ2VyXSBTY3JvbGwgSW50cmEtR3JhcGggRXhlY3V0aW9uIExpc3QgdG8gR2l2ZW4gSW5kZXgiLGJlKCkpLFgzPU50KCJbRGVidWdnZXJdIEdyYXBoIEV4ZWN1dGlvbiBpcyBGb2N1c2VkIE9uIixiZSgpKSxRMz1OdCgiW0RlYnVnZ2VyXSBHcmFwaCBPcCBJcyBGb2N1c2VkIE9uIixiZSgpKSxhej1OdCgiW0RlYnVnZ2VyXSBHcmFwaCBPcCBJbmZvIFJlcXVlc3RlZCIsYmUoKSkscno9TnQoIltEZWJ1Z2dlcl0gR3JhcGggT3AgSW5mbyBMb2FkZWQiLGJlKCkpLHN6PU50KCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIExpc3QgUmVxdWVzdGVkLiIpLGx6PU50KCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIExpc3QgTG9hZGVkIixiZSgpKSxLMz1OdCgiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMaW5lIElzIEZvY3VzZWQgb24iLGJlKCkpLGN6PU50KCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIFJlcXVlc3RlZCIsYmUoKSksbXo9TnQoIltEZWJ1Z2dlcl0gU291cmNlIEZpbGUgTG9hZGVkIixiZSgpKSxOaz1OdCgiW0RlYnVnZ2VyXSBBIFNldCBvZiBTdGFjayBGcmFtZXMgSGF2ZSBCZWVuIExvYWRlZCIsYmUoKSk7dmFyIEozPSJkZWJ1Z2dlciIscGM7KGZ1bmN0aW9uKG4pe25bbi5VTlNQRUNJRklFRD0wXT0iVU5TUEVDSUZJRUQiLG5bbi5OT19URU5TT1I9MV09Ik5PX1RFTlNPUiIsbltuLkNVUlRfSEVBTFRIPTJdPSJDVVJUX0hFQUxUSCIsbltuLkNPTkNJU0VfSEVBTFRIPTNdPSJDT05DSVNFX0hFQUxUSCIsbltuLkZVTExfSEVBTFRIPTRdPSJGVUxMX0hFQUxUSCIsbltuLlNIQVBFPTVdPSJTSEFQRSIsbltuLkZVTExfTlVNRVJJQ1M9Nl09IkZVTExfTlVNRVJJQ1MiLG5bbi5GVUxMX1RFTlNPUj03XT0iRlVMTF9URU5TT1IiLG5bbi5SRURVQ0VfSU5GX05BTl9USFJFRV9TTE9UUz04XT0iUkVEVUNFX0lORl9OQU5fVEhSRUVfU0xPVFMifSkocGN8fChwYz17fSkpO3ZhciBTUDsoZnVuY3Rpb24obil7bi5GVU5DVElPTl9SRUNPTVBJTEVfQUxFUlQ9IkZ1bmN0aW9uUmVjb21waWxlc0FsZXJ0IixuLklORl9OQU5fQUxFUlQ9IkluZk5hbkFsZXJ0IixuLlRFTlNPUl9TSEFQRV9BTEVSVD0iVGVuc29yU2hhcGVBbGVydCJ9KShTUHx8KFNQPXt9KSk7dmFyIGRtOyhmdW5jdGlvbihuKXtuW24uRVhFQ1VUSU9OPTBdPSJFWEVDVVRJT04iLG5bbi5HUkFQSF9PUF9DUkVBVElPTj0xXT0iR1JBUEhfT1BfQ1JFQVRJT04ifSkoZG18fChkbT17fSkpO2Z1bmN0aW9uICQzKG4pe2lmKG4uY29kZUxvY2F0aW9uRm9jdXNUeXBlPT09bnVsbClyZXR1cm4gbnVsbDtsZXQgdD1bXTtpZihuLmNvZGVMb2NhdGlvbkZvY3VzVHlwZT09PWRtLkVYRUNVVElPTil7bGV0e2ZvY3VzSW5kZXg6byxleGVjdXRpb25EYXRhOml9PW4uZXhlY3V0aW9ucztpZihvPT09bnVsbHx8aVtvXT09PXZvaWQgMClyZXR1cm4gbnVsbDt0PWlbb10uc3RhY2tfZnJhbWVfaWRzfWVsc2V7aWYobi5ncmFwaHMuZm9jdXNlZE9wPT09bnVsbClyZXR1cm4gbnVsbDtsZXR7Z3JhcGhJZDpvLG9wTmFtZTppfT1uLmdyYXBocy5mb2N1c2VkT3A7aWYobi5ncmFwaHMub3BzW29dPT09dm9pZCAwfHwhbi5ncmFwaHMub3BzW29dLmhhcyhpKSlyZXR1cm4gbnVsbDt0PW4uZ3JhcGhzLm9wc1tvXS5nZXQoaSkuc3RhY2tfZnJhbWVfaWRzfWxldCBlPVtdO2ZvcihsZXQgbyBvZiB0KWlmKG4uc3RhY2tGcmFtZXNbb10hPW51bGwpZS5wdXNoKG4uc3RhY2tGcmFtZXNbb10pO2Vsc2UgcmV0dXJuIG51bGw7cmV0dXJuIGV9ZnVuY3Rpb24gVGsobix0KXtyZXR1cm4gbi5maW5kSW5kZXgoZT0+ZS5ob3N0X25hbWU9PT10Lmhvc3RfbmFtZSYmZS5maWxlX3BhdGg9PT10LmZpbGVfcGF0aCl9ZnVuY3Rpb24gQnN0KG4sdCl7bGV0IGU9LTEsbz0tMTtpZihuLmZvckVhY2goKHtmaWxlX3BhdGg6aSxsaW5lbm86YX0scik9PntpPT09dC5maWxlX3BhdGgmJihvPXIsYT09PXQubGluZW5vJiYoZT1yKSl9KSxlPT09LTEpdGhyb3cgbmV3IEVycm9yKGBTdGFjayBmcmFtZSAke0pTT04uc3RyaW5naWZ5KHQpfSBpcyBub3QgZm91bmQuYCk7cmV0dXJuIGU9PT1vfWZ1bmN0aW9uIFdOdChuLHQpe2lmKHQ9PT1udWxsKXJldHVybiBudWxsO2ZvcihsZXQgZT1uLmxlbmd0aC0xO2U+PTA7LS1lKXtsZXQgbz1uW2VdLHtob3N0X25hbWU6aSxmaWxlX3BhdGg6YX09bztpZihpPT09dC5ob3N0X25hbWUmJmE9PT10LmZpbGVfcGF0aClyZXR1cm4gb31yZXR1cm4gbnVsbH1mdW5jdGlvbiBDWShuLHQsZSl7aWYodD49ZSl0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJlZ2luIHRvIGJlIGxlc3MgdGhhbiBlbmQsIGJ1dCBnb3QgYmVnaW49JHt0fSwgZW5kPSR7ZX1gKTtyZXR1cm4gbi5maW5kSW5kZXgobz0+by5iZWdpbj09PXQmJm8uZW5kPT09ZSl9ZnVuY3Rpb24gVnN0KG4sdCxlKXtpZih0Pj1lKXRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYmVnaW4gdG8gYmUgbGVzcyB0aGFuIGVuZCwgYnV0IGdvdCBiZWdpbj0ke3R9LCBlbmQ9JHtlfWApO3JldHVybiBuLmZpbmRJbmRleChvPT5vLmJlZ2luPj10JiZvLmVuZDw9ZSkhPT0tMX1mdW5jdGlvbiBmeihuKXtsZXQgdD1uLnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYztpZighbi5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSlyZXR1cm4gdDtsZXQgZT0kMyhuKTtpZihlPT09bnVsbClyZXR1cm4gdDtsZXQgbz1XTnQoZSx0KTtyZXR1cm4gbz09PW51bGw/dDpvfXZhciBxTnQ9MTAwLFpOdD0yMDA7ZnVuY3Rpb24gWE50KCl7cmV0dXJue251bUV4ZWN1dGlvbnNMb2FkZWQ6e3N0YXRlOkt0Lk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6e2xvYWRpbmdSYW5nZXM6W10sbnVtRXhlY3V0aW9uczowLHBhZ2VMb2FkZWRTaXplczp7fX0sZGlzcGxheUNvdW50OjUwLHBhZ2VTaXplOnFOdCxzY3JvbGxCZWdpbkluZGV4OjAsZm9jdXNJbmRleDpudWxsLGV4ZWN1dGlvbkRpZ2VzdHM6e30sZXhlY3V0aW9uRGF0YTp7fX19ZnVuY3Rpb24gUU50KCl7cmV0dXJue251bUV4ZWN1dGlvbnNMb2FkZWQ6e3N0YXRlOkt0Lk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6e2xvYWRpbmdSYW5nZXM6W10sbnVtRXhlY3V0aW9uczowLHBhZ2VMb2FkZWRTaXplczp7fX0sZGlzcGxheUNvdW50OjEwMCxwYWdlU2l6ZTpaTnQsc2Nyb2xsQmVnaW5JbmRleDowLGZvY3VzSW5kZXg6bnVsbCxncmFwaEV4ZWN1dGlvbkRpZ2VzdHM6e30sZ3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzOltdLGdyYXBoRXhlY3V0aW9uRGF0YVBhZ2VMb2FkZWRTaXplczp7fSxncmFwaEV4ZWN1dGlvbkRhdGE6e319fWZ1bmN0aW9uIEtOdCgpe3JldHVybntvcHM6e30sbG9hZGluZ09wczp7fSxmb2N1c2VkT3A6bnVsbH19dmFyIEpOdD17cnVuczp7fSxydW5zTG9hZGVkOntzdGF0ZTpLdC5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxhY3RpdmVSdW5JZDpudWxsLGxhc3REYXRhUG9sbE9uc2V0VGltZU1zOi0xLGxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOjEsYWxlcnRzOnthbGVydHNMb2FkZWQ6e3N0YXRlOkt0Lk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LG51bUFsZXJ0czowLGFsZXJ0c0JyZWFrZG93bjp7fSxhbGVydHM6e30sZXhlY3V0aW9uSW5kaWNlczp7fSxncmFwaEV4ZWN1dGlvbkluZGljZXM6e30sZm9jdXNUeXBlOm51bGx9LGV4ZWN1dGlvbnM6WE50KCksZ3JhcGhFeGVjdXRpb25zOlFOdCgpLGdyYXBoczpLTnQoKSxzdGFja0ZyYW1lczp7fSxjb2RlTG9jYXRpb25Gb2N1c1R5cGU6bnVsbCxzdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZTohMSxzb3VyY2VDb2RlOntzb3VyY2VGaWxlTGlzdExvYWRlZDp7c3RhdGU6S3QuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sc291cmNlRmlsZUxpc3Q6W10sZmlsZUNvbnRlbnRzOltdLGZvY3VzTGluZVNwZWM6bnVsbH19LCROdD14YShKTnQsWXQoV0ksbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtydW5zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnJ1bnNMb2FkZWQpLHtzdGF0ZTpLdC5MT0FESU5HfSl9KSksWXQoTHN0LG49Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7cnVuc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5ydW5zTG9hZGVkKSx7c3RhdGU6S3QuRkFJTEVEfSl9KSksWXQocUksKG4se3J1bnM6dH0pPT57bGV0IGU9T2JqZWN0LmtleXModCksbz1lLmxlbmd0aD4wJiZuLmFjdGl2ZVJ1bklkPT09bnVsbDtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczpvP0RhdGUubm93KCk6bi5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxydW5zOnQscnVuc0xvYWRlZDp7c3RhdGU6S3QuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSxhY3RpdmVSdW5JZDplLmxlbmd0aD4wP2VbMF06bnVsbH0pfSksWXQoRWssbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtsYXN0RGF0YVBvbGxPbnNldFRpbWVNczpEYXRlLm5vdygpfSkpLFl0KGtrLG49Pm4uYWN0aXZlUnVuSWQ9PT1udWxsP246T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHthbGVydHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uYWxlcnRzKSx7YWxlcnRzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmFsZXJ0cy5hbGVydHNMb2FkZWQpLHtzdGF0ZTpLdC5MT0FESU5HfSl9KX0pKSxZdChaSSwobix7bnVtQWxlcnRzOnQsYWxlcnRzQnJlYWtkb3duOmV9KT0+e2lmKG4uYWN0aXZlUnVuSWQ9PT1udWxsKXJldHVybiBuO2xldCBpPXQ+bi5hbGVydHMubnVtQWxlcnRzO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2xhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOmk/RGF0ZS5ub3coKTpuLmxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zLGFsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5hbGVydHMpLHthbGVydHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uYWxlcnRzLmFsZXJ0c0xvYWRlZCkse3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLG51bUFsZXJ0czp0LGFsZXJ0c0JyZWFrZG93bjplfSl9KX0pLFl0KFhJLChuLHtudW1BbGVydHM6dCxhbGVydHNCcmVha2Rvd246ZSxhbGVydFR5cGU6byxiZWdpbjppLGFsZXJ0czphfSk9PntpZihuLmFjdGl2ZVJ1bklkPT09bnVsbClyZXR1cm4gbjtsZXQgcz17fSxsPW4uYWxlcnRzLmV4ZWN1dGlvbkluZGljZXNbb10/bi5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdLGM9bi5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzW29dP24uYWxlcnRzLmdyYXBoRXhlY3V0aW9uSW5kaWNlc1tvXS5zbGljZSgpOltdO2ZvcihsZXQgcD0wO3A8YS5sZW5ndGg7KytwKXtsZXQgZz1pK3AsXz1hW3BdO2lmKHNbZ109XyxfLmFsZXJ0X3R5cGU9PT1TUC5JTkZfTkFOX0FMRVJUKXtsZXQgTT1fO2xbZ109TS5leGVjdXRpb25faW5kZXgsTS5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXghPT1udWxsJiYoY1tnXT1NLmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCl9fW4uYWxlcnRzLmFsZXJ0c1tvXSE9PXZvaWQgMCYmT2JqZWN0LmFzc2lnbihzLG4uYWxlcnRzLmFsZXJ0c1tvXSk7bGV0IG09bi5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgsZj1uLmdyYXBoRXhlY3V0aW9ucy5mb2N1c0luZGV4O2lmKG89PT1TUC5JTkZfTkFOX0FMRVJUJiZpPT09MCl7bGV0IHA9YVswXSxnPXAuZXhlY3V0aW9uX2luZGV4O209TWF0aC5tYXgoMCxnLU1hdGguZmxvb3Iobi5leGVjdXRpb25zLmRpc3BsYXlDb3VudC8yKSkscC5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXghPT1udWxsJiYoZj1wLmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5leGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDptfSksZ3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmdyYXBoRXhlY3V0aW9ucykse2ZvY3VzSW5kZXg6Zn0pLGFsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5hbGVydHMpLHthbGVydHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uYWxlcnRzLmFsZXJ0c0xvYWRlZCkse3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLG51bUFsZXJ0czp0LGFsZXJ0c0JyZWFrZG93bjplLGFsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5hbGVydHMuYWxlcnRzKSx7W29dOnN9KSxleGVjdXRpb25JbmRpY2VzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzKSx7W29dOmx9KSxncmFwaEV4ZWN1dGlvbkluZGljZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uYWxlcnRzLmdyYXBoRXhlY3V0aW9uSW5kaWNlcykse1tvXTpjfSl9KX0pfSksWXQoVTMsKG4se2FsZXJ0VHlwZTp0fSk9PntsZXQgZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2FsZXJ0czpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5hbGVydHMpLHtmb2N1c1R5cGU6bi5hbGVydHMuZm9jdXNUeXBlPT09dD9udWxsOnR9KX0pLG89ZS5hbGVydHMuZm9jdXNUeXBlO2lmKG8hPT1udWxsKXtsZXQgaT1lLmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzW29dfHxbXTtpWzBdIT09dm9pZCAwJiYoZS5leGVjdXRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlLmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4Ok1hdGgubWF4KDAsTnVtYmVyKGlbMF0pLU1hdGguZmxvb3IoZS5leGVjdXRpb25zLmRpc3BsYXlDb3VudC8yKSl9KSl9cmV0dXJuIGV9KSxZdChRSSxuPT5uLmFjdGl2ZVJ1bklkPT09bnVsbD9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5leGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5leGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpLdC5MT0FESU5HfSl9KX0pKSxZdChLSSwobix7bnVtRXhlY3V0aW9uczp0fSk9PntpZihuLmFjdGl2ZVJ1bklkPT09bnVsbClyZXR1cm4gbjtsZXQgbz10Pm4uZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMsaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2xhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOm8/RGF0ZS5ub3coKTpuLmxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zLGV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucy5udW1FeGVjdXRpb25zTG9hZGVkKSx7c3RhdGU6S3QuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpfSksZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLHtudW1FeGVjdXRpb25zOnR9KX0pfSk7cmV0dXJuIHQ+MCYmbi5leGVjdXRpb25zLmZvY3VzSW5kZXg9PT1udWxsJiYoaS5leGVjdXRpb25zLmZvY3VzSW5kZXg9MCksaX0pLFl0KEpJLChuLHQpPT57aWYobi5hY3RpdmVSdW5JZD09PW51bGwpcmV0dXJuIG47bGV0IG89Wy4uLm4uZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLmxvYWRpbmdSYW5nZXNdO3JldHVybiBDWShvLHQuYmVnaW4sdC5lbmQpPT09LTEmJm8ucHVzaCh7YmVnaW46dC5iZWdpbixlbmQ6dC5lbmR9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bG9hZGluZ1JhbmdlczpvfSl9KX0pfSksWXQoJEksKG4sdCk9PntpZihuLmFjdGl2ZVJ1bklkPT09bnVsbClyZXR1cm4gbjtsZXQgbz1bLi4ubi5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubG9hZGluZ1Jhbmdlc10saT1DWShvLHQuYmVnaW4sdC5lbmQpO2khPT0tMSYmby5zcGxpY2UoaSwxKTtsZXQgYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bnVtRXhlY3V0aW9uczp0Lm51bV9kaWdlc3RzLGxvYWRpbmdSYW5nZXM6b30pLGV4ZWN1dGlvbkRpZ2VzdHM6T2JqZWN0LmFzc2lnbih7fSxuLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0cyl9KX0pO2ZvcihsZXQgcj10LmJlZ2luO3I8dC5lbmQ7KytyKWEuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzW3JdPXQuZXhlY3V0aW9uX2RpZ2VzdHNbci10LmJlZ2luXTtpZih0LmVuZD50LmJlZ2luKXtsZXQgcj10LmJlZ2luL24uZXhlY3V0aW9ucy5wYWdlU2l6ZTthLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5wYWdlTG9hZGVkU2l6ZXM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLnBhZ2VMb2FkZWRTaXplcykse1tyXTp0LmVuZC10LmJlZ2lufSl9cmV0dXJuIGF9KSxZdChZMyxuPT57aWYobi5hY3RpdmVSdW5JZD09PW51bGwpcmV0dXJuIG47bGV0IGU9bi5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXg7cmV0dXJuIGU+MCYmZS0tLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5leGVjdXRpb25zKSx7c2Nyb2xsQmVnaW5JbmRleDplfSl9KX0pLFl0KEczLG49PntpZihuLmFjdGl2ZVJ1bklkPT09bnVsbClyZXR1cm4gbjtsZXQgZT1uLmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleDtyZXR1cm4gZStuLmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50KzE8PW4uZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMmJmUrKyxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6ZX0pfSl9KSxZdChXMywobix0KT0+e2lmKHQuaW5kZXg8MHx8IU51bWJlci5pc0ludGVnZXIodC5pbmRleCkpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBuZWdhdGl2ZSBvciBub24taW50ZWdlciBleGVjdXRpb24gaW5kZXggKCR7dC5pbmRleH0pYCk7bGV0e2Rpc3BsYXlDb3VudDplfT1uLmV4ZWN1dGlvbnMse251bUV4ZWN1dGlvbnM6b309bi5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ7aWYodC5pbmRleD5NYXRoLm1heCgwLG8tZSkpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBleGVjdXRpb24gaW5kZXggKCR7dC5pbmRleH0pLCB3aGljaCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBpbmRleCAobnVtRXhlY3V0aW9ucz0ke299OyBkaXNwbGF5Q291bnQ9JHtlfSlgKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4OnQuaW5kZXh9KX0pfSksWXQocTMsKG4sdCk9PntsZXQgZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucykse2ZvY3VzSW5kZXg6bi5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgrdC5kaXNwbGF5SW5kZXh9KSxjb2RlTG9jYXRpb25Gb2N1c1R5cGU6ZG0uRVhFQ1VUSU9OLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSxuLnNvdXJjZUNvZGUpfSk7cmV0dXJuIGUuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPWZ6KGUpLGV9KSxZdCh0eiwobix0KT0+e2lmKG4uYWN0aXZlUnVuSWQ9PT1udWxsKXJldHVybiBuO2xldCBvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5leGVjdXRpb25zKSx7ZXhlY3V0aW9uRGF0YTpPYmplY3QuYXNzaWduKHt9LG4uZXhlY3V0aW9ucy5leGVjdXRpb25EYXRhKX0pfSk7Zm9yKGxldCBpPXQuYmVnaW47aTx0LmVuZDsrK2kpby5leGVjdXRpb25zLmV4ZWN1dGlvbkRhdGFbaV09dC5leGVjdXRpb25zW2ktdC5iZWdpbl07cmV0dXJuIG99KSxZdChleixuPT5uLmFjdGl2ZVJ1bklkPT09bnVsbD9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmdyYXBoRXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhFeGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpLdC5MT0FESU5HfSl9KX0pKSxZdChueiwobix7bnVtR3JhcGhFeGVjdXRpb25zOnR9KT0+e2lmKG4uYWN0aXZlUnVuSWQ9PT1udWxsKXJldHVybiBuO2xldCBlPXQ+bi5ncmFwaEV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zLG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczplP0RhdGUubm93KCk6bi5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhFeGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5ncmFwaEV4ZWN1dGlvbnMubnVtRXhlY3V0aW9uc0xvYWRlZCkse3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhFeGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLHtudW1FeGVjdXRpb25zOnR9KX0pfSk7cmV0dXJuIHQ+MCYmbi5ncmFwaEV4ZWN1dGlvbnMuZm9jdXNJbmRleD09PW51bGwmJihvLmdyYXBoRXhlY3V0aW9ucy5mb2N1c0luZGV4PTApLG99KSxZdChveiwobix7cGFnZUluZGV4OnR9KT0+e2lmKG4uYWN0aXZlUnVuSWQ9PT1udWxsKXJldHVybiBuO2xldCBlPW4uZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlcy5zbGljZSgpO3JldHVybiBlLmluZGV4T2YodCk9PT0tMSYmZS5wdXNoKHQpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmdyYXBoRXhlY3V0aW9ucykse2dyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlczplfSl9KX0pLFl0KGl6LChuLHQpPT57aWYobi5hY3RpdmVSdW5JZD09PW51bGwpcmV0dXJuIG47bGV0e3BhZ2VTaXplOmV9PW4uZ3JhcGhFeGVjdXRpb25zLG89bi5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzLnNsaWNlKCksaT1PYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YVBhZ2VMb2FkZWRTaXplcyksYT1PYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhFeGVjdXRpb25zLmdyYXBoRXhlY3V0aW9uRGF0YSk7Zm9yKGxldCByPXQuYmVnaW47cjx0LmVuZDsrK3Ipe2xldCBzPU1hdGguZmxvb3Ioci9lKTtvLmluZGV4T2YocykhPT0tMSYmby5zcGxpY2Uoby5pbmRleE9mKHMpLDEpLGlbc109PT12b2lkIDAmJihpW3NdPTApLGFbcl09PT12b2lkIDAmJmlbc10rKyxhW3JdPXQuZ3JhcGhfZXhlY3V0aW9uc1tyLXQuYmVnaW5dfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2dyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5ncmFwaEV4ZWN1dGlvbnMpLHtncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6byxncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXM6aSxncmFwaEV4ZWN1dGlvbkRhdGE6YX0pfSl9KSxZdChaMywobix0KT0+e2lmKHQuaW5kZXg8MHx8IU51bWJlci5pc0ludGVnZXIodC5pbmRleCkpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBuZWdhdGl2ZSBvciBub24taW50ZWdlciBncmFwaC1leGVjdXRpb24gaW5kZXggKCR7dC5pbmRleH0pYCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmdyYXBoRXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6dC5pbmRleH0pfSl9KSxZdChYMywobix0KT0+anN0KG4sdC5ncmFwaF9pZCx0Lm9wX25hbWUsdC5pbmRleCkpLFl0KFEzLChuLHQpPT5qc3Qobix0LmdyYXBoX2lkLHQub3BfbmFtZSkpLFl0KGF6LChuLHQpPT57bGV0e2dyYXBoX2lkOmUsb3BfbmFtZTpvfT10LGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhzKSx7bG9hZGluZ09wczpPYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhzLmxvYWRpbmdPcHMpfSl9KTtyZXR1cm4gaS5ncmFwaHMubG9hZGluZ09wc1tlXT09PXZvaWQgMCYmKGkuZ3JhcGhzLmxvYWRpbmdPcHNbZV09bmV3IE1hcCksaS5ncmFwaHMubG9hZGluZ09wc1tlXS5oYXMobyl8fGkuZ3JhcGhzLmxvYWRpbmdPcHNbZV0uc2V0KG8sS3QuTE9BRElORyksaX0pLFl0KHJ6LChuLHQpPT57bGV0e2dyYXBoT3BJbmZvUmVzcG9uc2U6ZX09dCx7Z3JhcGhfaWRzOm99PWUsaT1vW28ubGVuZ3RoLTFdLGE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uZ3JhcGhzKSx7b3BzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmdyYXBocy5vcHMpLHtbaV06bmV3IE1hcChuLmdyYXBocy5vcHNbaV0pfSksbG9hZGluZ09wczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5ncmFwaHMubG9hZGluZ09wcykse1tpXTpuZXcgTWFwKG4uZ3JhcGhzLmxvYWRpbmdPcHNbaV0pfSl9KX0pO2ZvcihsZXQgciBvZiBlLmlucHV0cykhci5kYXRhfHxhLmdyYXBocy5vcHNbaV0uc2V0KHIub3BfbmFtZSxyLmRhdGEpO2ZvcihsZXQgcj0wO3I8ZS5jb25zdW1lcnMubGVuZ3RoOysrcilmb3IobGV0IHMgb2YgZS5jb25zdW1lcnNbcl0pIXMuZGF0YXx8YS5ncmFwaHMub3BzW2ldLnNldChzLm9wX25hbWUscy5kYXRhKTtyZXR1cm4gYS5ncmFwaHMub3BzW2ldLnNldChlLm9wX25hbWUsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtpbnB1dHM6ZS5pbnB1dHMubWFwKHI9Pih7b3BfbmFtZTpyLm9wX25hbWUsb3V0cHV0X3Nsb3Q6ci5vdXRwdXRfc2xvdH0pKSxjb25zdW1lcnM6ZS5jb25zdW1lcnMubWFwKHI9PnIubWFwKHM9Pih7b3BfbmFtZTpzLm9wX25hbWUsaW5wdXRfc2xvdDpzLmlucHV0X3Nsb3R9KSkpfSkpLGEuZ3JhcGhzLmxvYWRpbmdPcHNbaV0uc2V0KGUub3BfbmFtZSxLdC5MT0FERUQpLGF9KSxZdChzeixuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc291cmNlQ29kZSkse3NvdXJjZUZpbGVMaXN0TG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnNvdXJjZUNvZGUuc291cmNlRmlsZUxpc3RMb2FkZWQpLHtzdGF0ZTpLdC5MT0FESU5HfSl9KX0pKSxZdChseiwobix0KT0+e3ZhciBlO2xldCBvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zb3VyY2VDb2RlKSx7c291cmNlRmlsZUxpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdExvYWRlZCkse3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLHNvdXJjZUZpbGVMaXN0OnQuc291cmNlRmlsZXMsZmlsZUNvbnRlbnRzOm4uc291cmNlQ29kZS5maWxlQ29udGVudHMuc2xpY2UoKX0pfSksaT10LnNvdXJjZUZpbGVzLmxlbmd0aCx7ZmlsZUNvbnRlbnRzOmF9PW8uc291cmNlQ29kZTtmb3IobGV0IHI9MDtyPGk7KytyKWFbcl09KGU9bi5zb3VyY2VDb2RlLmZpbGVDb250ZW50c1tyXSkhPT1udWxsJiZlIT09dm9pZCAwP2U6e2xvYWRTdGF0ZTpLdC5OT1RfTE9BREVELGxpbmVzOm51bGx9O3JldHVybiBvfSksWXQoSzMsKG4sdCk9PntsZXQgZT0kMyhuKSxvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zb3VyY2VDb2RlKSx7Zm9jdXNMaW5lU3BlYzp0LnN0YWNrRnJhbWV9KX0pO3JldHVybiBlIT09bnVsbCYmKG8uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU9QnN0KGUsdC5zdGFja0ZyYW1lKSksb30pLFl0KGN6LChuLHQpPT57bGV0IGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnNvdXJjZUNvZGUpLHtmaWxlQ29udGVudHM6bi5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxvPVRrKGUuc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdCx0KTtpZihvPj0wKWUuc291cmNlQ29kZS5maWxlQ29udGVudHMuc3BsaWNlKG8sMSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZS5zb3VyY2VDb2RlLmZpbGVDb250ZW50c1tvXSkse2xvYWRTdGF0ZTpLdC5MT0FESU5HfSkpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0aGUgZm9sbG93aW5nIGZpbGUgaW4gZmlsZSBsaXN0OiBob3N0X25hbWU9IiR7dC5ob3N0X25hbWV9IiwgZmlsZV9wYXRoPSIke3QuZmlsZV9wYXRofSJgKTtyZXR1cm4gZX0pLFl0KG16LChuLHQpPT57bGV0IGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnNvdXJjZUNvZGUpLHtmaWxlQ29udGVudHM6bi5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxvPVRrKGUuc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdCx0KTtpZihvPj0wKWUuc291cmNlQ29kZS5maWxlQ29udGVudHMuc3BsaWNlKG8sMSx7bG9hZFN0YXRlOkt0LkxPQURFRCxsaW5lczp0LmxpbmVzfSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHRoZSBmb2xsb3dpbmcgZmlsZSBpbiBmaWxlIGxpc3Q6IGhvc3RfbmFtZT0iJHt0Lmhvc3RfbmFtZX0iLCBmaWxlX3BhdGg9IiR7dC5maWxlX3BhdGh9ImApO3JldHVybiBlfSksWXQoTmssKG4sdCk9PntpZihuLmFjdGl2ZVJ1bklkPT09bnVsbClyZXR1cm4gbjtsZXQgbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3N0YWNrRnJhbWVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnN0YWNrRnJhbWVzKSx0LnN0YWNrRnJhbWVzKSxzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oe30sbi5zb3VyY2VDb2RlKX0pO3JldHVybiBvLnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYz1meihvKSxvfSkpO2Z1bmN0aW9uIGpzdChuLHQsZSxvKXtsZXQgaT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2dyYXBoczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5ncmFwaHMpLHtmb2N1c2VkT3A6e2dyYXBoSWQ6dCxvcE5hbWU6ZX19KSxjb2RlTG9jYXRpb25Gb2N1c1R5cGU6ZG0uR1JBUEhfT1BfQ1JFQVRJT04sc291cmNlQ29kZTpPYmplY3QuYXNzaWduKHt9LG4uc291cmNlQ29kZSl9KTtyZXR1cm4gaS5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWM9ZnooaSksbyE9PXZvaWQgMCYmKGkuZ3JhcGhFeGVjdXRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmdyYXBoRXhlY3V0aW9ucykse2ZvY3VzSW5kZXg6b30pKSxpfWZ1bmN0aW9uIE1ZKG4sdCl7cmV0dXJuICROdChuLHQpfXZhciB5bD1CYShKMyksdDE9Y3QoeWwsbj0+bi5ydW5zKSxiWT1jdCh5bCxuPT5uLnJ1bnNMb2FkZWQpLGdtPWN0KHlsLG49Pm4uYWN0aXZlUnVuSWQpLFVzdD1jdCh5bCxuPT5uLmxhc3REYXRhUG9sbE9uc2V0VGltZU1zLW4ubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMpLHQyPWN0KHlsLG49Pm4uYWxlcnRzKSxPWT1jdCh0MixuPT5uLmFsZXJ0c0xvYWRlZCksWXN0PWN0KHQyLG49Pm4ubnVtQWxlcnRzKSxwej1jdCh0MixuPT5uLmZvY3VzVHlwZSksR3N0PWN0KHQyLG49Pm4uZm9jdXNUeXBlPT09bnVsbD8wOm4uYWxlcnRzQnJlYWtkb3duW24uZm9jdXNUeXBlXXx8MCksV3N0PWN0KHQyLG49Pm4uZm9jdXNUeXBlPT09bnVsbHx8bi5hbGVydHNbbi5mb2N1c1R5cGVdPT09dm9pZCAwP251bGw6bi5hbGVydHNbbi5mb2N1c1R5cGVdKSxxc3Q9Y3QodDIsbj0+bi5hbGVydHNCcmVha2Rvd24pLGUxPWN0KHlsLG49Pm4uZXhlY3V0aW9ucyksZHo9Y3QoZTEsbj0+bi5udW1FeGVjdXRpb25zTG9hZGVkKSxBaz1jdChlMSxuPT5uLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQpLGN4PWN0KGUxLG49Pm4uZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zKSxEaz1jdChlMSxuPT5uLnNjcm9sbEJlZ2luSW5kZXgpLGUyPWN0KGUxLG49Pm4ucGFnZVNpemUpLG4yPWN0KGUxLG49Pm4uZGlzcGxheUNvdW50KSxac3Q9Y3QoZTEsbj0+e2xldCB0PVtdO2ZvcihsZXQgZT1uLnNjcm9sbEJlZ2luSW5kZXg7ZTxuLnNjcm9sbEJlZ2luSW5kZXgrbi5kaXNwbGF5Q291bnQ7KytlKWUgaW4gbi5leGVjdXRpb25EaWdlc3RzP3QucHVzaChuLmV4ZWN1dGlvbkRpZ2VzdHNbZV0pOnQucHVzaChudWxsKTtyZXR1cm4gdH0pLG14PWN0KHlsLG49Pm4uZ3JhcGhFeGVjdXRpb25zKSxYc3Q9Y3QobXgsbj0+bi5udW1FeGVjdXRpb25zTG9hZGVkKSxJaz1jdCh5bCxuPT5uLmdyYXBoRXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMpLFFzdD1jdChteCxuPT5uLnNjcm9sbEJlZ2luSW5kZXgpLEtzdD1jdChteCxuPT5uLmRpc3BsYXlDb3VudCksSnN0PWN0KG14LG49Pm4ucGFnZVNpemUpLCRzdD1jdChteCxuPT5uLmdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlcyksdGx0PWN0KG14LG49Pm4uZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzKSxQWT1jdChteCxuPT5uLmdyYXBoRXhlY3V0aW9uRGF0YSkseVk9Y3QobXgsbj0+bi5mb2N1c0luZGV4KSx4WT1jdCh5bCxuPT5uLmdyYXBocyksdlk9Y3QoeFksbj0+e2xldHtmb2N1c2VkT3A6dCxvcHM6ZX09bjtyZXR1cm4gdD09PW51bGx8fGVbdC5ncmFwaElkXT09PXZvaWQgMD9udWxsOmVbdC5ncmFwaElkXS5nZXQodC5vcE5hbWUpfHxudWxsfSksd1k9Y3QoeFksbj0+e2xldHtmb2N1c2VkT3A6dCxvcHM6ZX09bjtpZih0PT09bnVsbHx8ZVt0LmdyYXBoSWRdPT09dm9pZCAwfHwhZVt0LmdyYXBoSWRdLmhhcyh0Lm9wTmFtZSkpcmV0dXJuIG51bGw7e2xldCBvPWVbdC5ncmFwaElkXSx7aW5wdXRzOml9PW8uZ2V0KHQub3BOYW1lKTtyZXR1cm4gaS5tYXAoYT0+e2xldCByPU9iamVjdC5hc3NpZ24oe30sYSk7cmV0dXJuIG8uaGFzKGEub3BfbmFtZSkmJihyLmRhdGE9by5nZXQoYS5vcF9uYW1lKSkscn0pfX0pLHRUdD0yMDAsZWx0PWN0KHlZLFBZLHdZLChuLHQsZSk9PntpZihuPT09bnVsbHx8ZT09PW51bGwpcmV0dXJuIG51bGw7bGV0IG89ZS5tYXAocz0+ITEpLGk9W107aWYoZS5sZW5ndGg9PT0wKXJldHVybiBpO2xldCBhPXRbbl0uZ3JhcGhfaWQscj1NYXRoLm1heCgwLG4tdFR0KTtmb3IobGV0IHM9bi0xO3M+PXI7LS1zKWlmKHRbc10hPT12b2lkIDApZm9yKGxldCBsPTA7bDxlLmxlbmd0aCYmISghb1tsXSYmdFtzXS5ncmFwaF9pZD09PWEmJnRbc10ub3BfbmFtZT09PWVbbF0ub3BfbmFtZSYmdFtzXS5vdXRwdXRfc2xvdD09PWVbbF0ub3V0cHV0X3Nsb3QmJihpLnB1c2gocyksb1tsXT0hMCxpLmxlbmd0aD09PWUubGVuZ3RoKSk7KytsKTtyZXR1cm4gaX0pLG5sdD1jdCh4WSxuPT57bGV0e2ZvY3VzZWRPcDp0LG9wczplfT1uO2lmKHQ9PT1udWxsfHxlW3QuZ3JhcGhJZF09PT12b2lkIDB8fCFlW3QuZ3JhcGhJZF0uaGFzKHQub3BOYW1lKSlyZXR1cm4gbnVsbDt7bGV0IG89ZVt0LmdyYXBoSWRdLHtjb25zdW1lcnM6aX09by5nZXQodC5vcE5hbWUpO3JldHVybiBpLm1hcChhPT5hLm1hcChyPT57bGV0IHM9T2JqZWN0LmFzc2lnbih7fSxyKTtyZXR1cm4gby5oYXMoci5vcF9uYW1lKSYmKHMuZGF0YT1vLmdldChyLm9wX25hbWUpKSxzfSkpfX0pLG9sdD1jdCh5bCxuPT57bGV0IHQ9bi5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgsZT1uLmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleCtuLmV4ZWN1dGlvbnMuZGlzcGxheUNvdW50LG89bmV3IEFycmF5KGUtdCkuZmlsbChudWxsKSxpPW4uYWxlcnRzLmZvY3VzVHlwZTtpZihpPT09bnVsbClyZXR1cm4gbztsZXQgYT1uLmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzW2ldO2lmKGE9PT12b2lkIDApcmV0dXJuIG87Zm9yKGxldCByPXQ7cjxlOysrcilhLmluY2x1ZGVzKHIpJiYob1tyLXRdPW4uYWxlcnRzLmZvY3VzVHlwZSk7cmV0dXJuIG99KSxnej1jdCh5bCxuPT5uLmV4ZWN1dGlvbnMpLFNZPWN0KGd6LG49Pm4uZm9jdXNJbmRleCksaWx0PWN0KGd6LG49PntpZihuLmZvY3VzSW5kZXg9PT1udWxsKXJldHVybiBudWxsO2xldHtmb2N1c0luZGV4OnQsc2Nyb2xsQmVnaW5JbmRleDplLGRpc3BsYXlDb3VudDpvfT1uO3JldHVybiB0PGV8fHQ+PWUrbz9udWxsOnQtZX0pLFJZPWN0KGd6LG49Pm4uZXhlY3V0aW9uRGF0YSksYWx0PWN0KHlsLG49Pm4uZ3JhcGhzLmxvYWRpbmdPcHMpLEVZPWN0KHlsLG49Pm4uc3RhY2tGcmFtZXMpLG4xPWN0KGd6LG49PntsZXR7Zm9jdXNJbmRleDp0LGV4ZWN1dGlvbkRhdGE6ZX09bjtyZXR1cm4gdD09PW51bGx8fGVbdF09PT12b2lkIDA/bnVsbDplW3RdfSksems9Y3QoeWwsU1ksbjEsdlksKG4sdCxlLG8pPT57bGV0e2NvZGVMb2NhdGlvbkZvY3VzVHlwZTppfT1uO3JldHVybiBpPT09bnVsbD9udWxsOmk9PT1kbS5FWEVDVVRJT04/dD09PW51bGx8fGU9PT1udWxsP251bGw6e2NvZGVMb2NhdGlvblR5cGU6ZG0uRVhFQ1VUSU9OLG9wVHlwZTplLm9wX3R5cGUsZXhlY3V0aW9uSW5kZXg6dH06bz09PW51bGw/bnVsbDp7Y29kZUxvY2F0aW9uVHlwZTpkbS5HUkFQSF9PUF9DUkVBVElPTixvcFR5cGU6by5vcF90eXBlLG9wTmFtZTpvLm9wX25hbWV9fSkscmx0PWN0KHlsLCQzKSx1ej1jdCh5bCxuPT5uLnNvdXJjZUNvZGUpLHNsdD1jdCh1eixuPT5uLnNvdXJjZUZpbGVMaXN0TG9hZGVkKSxrdmU9Y3QodXosbj0+bi5zb3VyY2VGaWxlTGlzdCksa1k9Y3QodXosbj0+e2xldHtzb3VyY2VGaWxlTGlzdDp0LGZvY3VzTGluZVNwZWM6ZX09bjtyZXR1cm4gZT09PW51bGw/LTE6VGsodCxlKX0pLGh6PWN0KHV6LGtZLChuLHQpPT50PT09LTE/bnVsbDpuLmZpbGVDb250ZW50c1t0XXx8bnVsbCksX3o9Y3QoeWwsbj0+bi5zb3VyY2VDb2RlLmZvY3VzTGluZVNwZWMpLGxsdD1jdCh5bCxuPT5uLnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlKTt2YXIgY2x0PWZ1bmN0aW9uKG4pe3JldHVybltuXX07ZnVuY3Rpb24gZVR0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2Iiw3KSxBKCJjbGljayIsZnVuY3Rpb24oKXtsZXQgYT1PdChlKS4kaW1wbGljaXQ7cmV0dXJuIFMoKS5vblRvZ2dsZUZvY3VzVHlwZS5lbWl0KGEudHlwZSl9KSx1KDEsImRpdiIsOCksVCgyKSxoKCksdSgzLCJkaXYiLDkpLFQoNCksaCgpLEQoNSwiZGl2IiksaCgpfWlmKG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKCk7UCgibmdDbGFzcyIsYW8oNCxjbHQsZS50eXBlPT09by5mb2N1c1R5cGU/ImZvY3VzIjoiIikpLHgoMiksSWUoZS5kaXNwbGF5TmFtZSkseCgyKSx2eSgiICIsZS5kaXNwbGF5U3ltYm9sLCI6ICIsZS5jb3VudCwiICIpfX12YXIgbTA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm51bUFsZXJ0cz0wLHRoaXMuYWxlcnRzQnJlYWtkb3duPVtdLHRoaXMuZm9jdXNUeXBlPW51bGwsdGhpcy5vblRvZ2dsZUZvY3VzVHlwZT1uZXcgJH19O20wLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG0wKX07bTAuXHUwMjc1Y21wPXooe3R5cGU6bTAsc2VsZWN0b3JzOltbImFsZXJ0cy1jb21wb25lbnQiXV0saW5wdXRzOntudW1BbGVydHM6Im51bUFsZXJ0cyIsYWxlcnRzQnJlYWtkb3duOiJhbGVydHNCcmVha2Rvd24iLGZvY3VzVHlwZToiZm9jdXNUeXBlIn0sb3V0cHV0czp7b25Ub2dnbGVGb2N1c1R5cGU6Im9uVG9nZ2xlRm9jdXNUeXBlIn0sZGVjbHM6MTAsdmFyczo1LGNvbnN0czpbWzEsImFsZXJ0cy1jb250YWluZXIiXSxbMSwiZGVidWdnaW5nLXRpdGxlIl0sWzEsIm51bS1hbGVydHMtY29udGFpbmVyIl0sWzEsIm51bS1hbGVydHMtbGFiZWwiXSxbMSwibnVtLWFsZXJ0cy12YWx1ZSIsMywibmdDbGFzcyJdLFsxLCJhbGVydHMtYnJlYWtkb3duLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJhbGVydHMtYnJlYWtkb3duLXR5cGUiLDMsIm5nQ2xhc3MiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImFsZXJ0cy1icmVha2Rvd24tdHlwZSIsMywibmdDbGFzcyIsImNsaWNrIl0sWzEsImFsZXJ0LXR5cGUtbmFtZSJdLFsxLCJhbGVydC10eXBlLWNvdW50Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDApLHUoMSwiZGl2IiwxKSxUKDIsIkRlYnVnZ2luZyIpLGgoKSx1KDMsImRpdiIsMiksdSg0LCJkaXYiLDMpLFQoNSwiQWxlcnRzIiksaCgpLHUoNiwiZGl2Iiw0KSxUKDcpLGgoKSxoKCksdSg4LCJkaXYiLDUpLGsoOSxlVHQsNiw2LCJkaXYiLDYpLGgoKSxoKCkpLHQmMiYmKHgoNiksUCgibmdDbGFzcyIsYW8oMyxjbHQsZS5udW1BbGVydHM+MD8ibm9uLXplcm8iOiIiKSkseCgxKSxsZSgiICIsZS5udW1BbGVydHMsIiAiKSx4KDIpLFAoIm5nRm9yT2YiLGUuYWxlcnRzQnJlYWtkb3duKSl9LGRpcmVjdGl2ZXM6W2puLG1uXSxzdHlsZXM6W2AuYWxlcnRzLWJyZWFrZG93bi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHsKICBmb250LXNpemU6IDEzcHg7CiAgcGFkZGluZzogMTBweCAxMHB4IDEwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYWxlcnRzLWJyZWFrZG93bi10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgYm9yZGVyLXJhZGl1czogMCAxMHB4IDEwcHggMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZGlzcGxheTogZmxleDsKICBwYWRkaW5nOiA2cHggMCA2cHggNTBweDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgouYWxlcnRzLWJyZWFrZG93bi10eXBlLmZvY3VzW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWVlMDsKfQoKLmFsZXJ0cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHsKICBmb250LWZhbWlseTogJ1JvYm90bycsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Cn0KCi5hbGVydC10eXBlLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgCiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgY29sb3I6ICNmZmY7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBhZGRpbmc6IDNweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDIwcHg7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLmFsZXJ0LXR5cGUtbmFtZVtfbmdjb250ZW50LSVDT01QJV0gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwYWRkaW5nOiAzcHg7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLmRlYnVnZ2luZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV0gewogIGZvbnQtc2l6ZTogMThweDsKfQoKLm51bS1hbGVydHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMzBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5udW0tYWxlcnRzLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMTNweDsKfQoKLm51bS1hbGVydHMtdmFsdWVbX25nY29udGVudC0lQ09NUCVdIHsKICBib3JkZXItcmFkaXVzOiAxMnB4OwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDEzcHg7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICBsaW5lLWhlaWdodDogMjRweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgcmlnaHQ6IDIwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgd2lkdGg6IDI0cHg7Cn0KCi5udW0tYWxlcnRzLXZhbHVlLm5vbi16ZXJvW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYjc4MDsKICBmb250LXdlaWdodDogYm9sZDsKfWBdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG0wLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiYWxlcnRzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vYWxlcnRzX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2FsZXJ0c19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse251bUFsZXJ0czpbe3R5cGU6ZH1dLGFsZXJ0c0JyZWFrZG93bjpbe3R5cGU6ZH1dLGZvY3VzVHlwZTpbe3R5cGU6ZH1dLG9uVG9nZ2xlRm9jdXNUeXBlOlt7dHlwZTpCfV19KX0pKCk7dmFyIG9UdD17W1NQLkZVTkNUSU9OX1JFQ09NUElMRV9BTEVSVF06e2Rpc3BsYXlOYW1lOiJGdW5jdGlvbiByZWNvbXBpbGVzIixkaXNwbGF5U3ltYm9sOiJDIn0sW1NQLklORl9OQU5fQUxFUlRdOntkaXNwbGF5TmFtZToiTmFOL1x1MjIxRSIsZGlzcGxheVN5bWJvbDoiXHUyMjFFIn0sW1NQLlRFTlNPUl9TSEFQRV9BTEVSVF06e2Rpc3BsYXlOYW1lOiJUZW5zb3Igc2hhcGUiLGRpc3BsYXlTeW1ib2w6Ilx1MjVBMCJ9fSxuZD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5udW1BbGVydHMkPXRoaXMuc3RvcmUucGlwZSh6ZShZc3QpKSx0aGlzLmFsZXJ0c0JyZWFrZG93biQ9dGhpcy5zdG9yZS5waXBlKHplKGN0KHFzdCxlPT57bGV0IG89T2JqZWN0LmtleXMoZSk7cmV0dXJuIG8uc29ydCgpLG8ubWFwKGk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7dHlwZTppfSxvVHRbaV0pLHtjb3VudDplW2ldfSkpfSkpKSx0aGlzLmZvY3VzVHlwZSQ9dGhpcy5zdG9yZS5waXBlKHplKHB6KSl9b25Ub2dnbGVGb2N1c1R5cGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChVMyh7YWxlcnRUeXBlOnR9KSl9fTtuZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuZCkodihzdCkpfTtuZC5cdTAyNzVjbXA9eih7dHlwZTpuZCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItYWxlcnRzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm51bUFsZXJ0cyIsImFsZXJ0c0JyZWFrZG93biIsImZvY3VzVHlwZSIsIm9uVG9nZ2xlRm9jdXNUeXBlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJhbGVydHMtY29tcG9uZW50IiwwKSxBKCJvblRvZ2dsZUZvY3VzVHlwZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25Ub2dnbGVGb2N1c1R5cGUoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxoKCkpLHQmMiYmUCgibnVtQWxlcnRzIixRKDEsMyxlLm51bUFsZXJ0cyQpKSgiYWxlcnRzQnJlYWtkb3duIixRKDIsNSxlLmFsZXJ0c0JyZWFrZG93biQpKSgiZm9jdXNUeXBlIixRKDMsNyxlLmZvY3VzVHlwZSQpKX0sZGlyZWN0aXZlczpbbTBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5kLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItYWxlcnRzIix0ZW1wbGF0ZTpgCiAgICA8YWxlcnRzLWNvbXBvbmVudAogICAgICBbbnVtQWxlcnRzXT0ibnVtQWxlcnRzJCB8IGFzeW5jIgogICAgICBbYWxlcnRzQnJlYWtkb3duXT0iYWxlcnRzQnJlYWtkb3duJCB8IGFzeW5jIgogICAgICBbZm9jdXNUeXBlXT0iZm9jdXNUeXBlJCB8IGFzeW5jIgogICAgICAob25Ub2dnbGVGb2N1c1R5cGUpPSJvblRvZ2dsZUZvY3VzVHlwZSgkZXZlbnQpIgogICAgPgogICAgPC9hbGVydHMtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO3ZhciBzVHQ9WyJzbGlkZXJXcmFwcGVyIl0sZjA9JG0oe3Bhc3NpdmU6ITF9KSxsVHQ9MzAsY1R0PTcsbVR0PTcsZlR0PTEwLGZsdD17cHJvdmlkZTpqYSx1c2VFeGlzdGluZzp0bygoKT0+WXIpLG11bHRpOiEwfSxOWT1jbGFzc3t9LHBUdD1EXyhGcyhWcihjbGFzc3tjb25zdHJ1Y3RvcihuKXt0aGlzLl9lbGVtZW50UmVmPW59fSksImFjY2VudCIpKSxZcj1jbGFzcyBleHRlbmRzIHBUdHtjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzLGwpe3N1cGVyKHQpLHRoaXMuX2ZvY3VzTW9uaXRvcj1lLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW8sdGhpcy5fZGlyPWksdGhpcy5fbmdab25lPXIsdGhpcy5fYW5pbWF0aW9uTW9kZT1sLHRoaXMuX2ludmVydD0hMSx0aGlzLl9tYXg9MTAwLHRoaXMuX21pbj0wLHRoaXMuX3N0ZXA9MSx0aGlzLl90aHVtYkxhYmVsPSExLHRoaXMuX3RpY2tJbnRlcnZhbD0wLHRoaXMuX3ZhbHVlPW51bGwsdGhpcy5fdmVydGljYWw9ITEsdGhpcy5jaGFuZ2U9bmV3ICQsdGhpcy5pbnB1dD1uZXcgJCx0aGlzLnZhbHVlQ2hhbmdlPW5ldyAkLHRoaXMub25Ub3VjaGVkPSgpPT57fSx0aGlzLl9wZXJjZW50PTAsdGhpcy5faXNTbGlkaW5nPW51bGwsdGhpcy5faXNBY3RpdmU9ITEsdGhpcy5fdGlja0ludGVydmFsUGVyY2VudD0wLHRoaXMuX3NsaWRlckRpbWVuc2lvbnM9bnVsbCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249RW8uRU1QVFksdGhpcy5fcG9pbnRlckRvd249Yz0+e3RoaXMuZGlzYWJsZWR8fHRoaXMuX2lzU2xpZGluZ3x8IUhrKGMpJiZjLmJ1dHRvbiE9PTB8fHRoaXMuX25nWm9uZS5ydW4oKCk9Pnt0aGlzLl90b3VjaElkPUhrKGMpP2RUdChjLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk6dm9pZCAwO2xldCBtPW1sdChjLHRoaXMuX3RvdWNoSWQpO2lmKG0pe2xldCBmPXRoaXMudmFsdWU7dGhpcy5faXNTbGlkaW5nPSJwb2ludGVyIix0aGlzLl9sYXN0UG9pbnRlckV2ZW50PWMsYy5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzSG9zdEVsZW1lbnQoKSx0aGlzLl9vbk1vdXNlZW50ZXIoKSx0aGlzLl9iaW5kR2xvYmFsRXZlbnRzKGMpLHRoaXMuX2ZvY3VzSG9zdEVsZW1lbnQoKSx0aGlzLl91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbihtKSx0aGlzLl92YWx1ZU9uU2xpZGVTdGFydD1mLGYhPXRoaXMudmFsdWUmJnRoaXMuX2VtaXRJbnB1dEV2ZW50KCl9fSl9LHRoaXMuX3BvaW50ZXJNb3ZlPWM9PntpZih0aGlzLl9pc1NsaWRpbmc9PT0icG9pbnRlciIpe2xldCBtPW1sdChjLHRoaXMuX3RvdWNoSWQpO2lmKG0pe2MucHJldmVudERlZmF1bHQoKTtsZXQgZj10aGlzLnZhbHVlO3RoaXMuX2xhc3RQb2ludGVyRXZlbnQ9Yyx0aGlzLl91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbihtKSxmIT10aGlzLnZhbHVlJiZ0aGlzLl9lbWl0SW5wdXRFdmVudCgpfX19LHRoaXMuX3BvaW50ZXJVcD1jPT57dGhpcy5faXNTbGlkaW5nPT09InBvaW50ZXIiJiYoIUhrKGMpfHx0eXBlb2YgdGhpcy5fdG91Y2hJZCE9Im51bWJlciJ8fFRZKGMuY2hhbmdlZFRvdWNoZXMsdGhpcy5fdG91Y2hJZCkpJiYoYy5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3JlbW92ZUdsb2JhbEV2ZW50cygpLHRoaXMuX2lzU2xpZGluZz1udWxsLHRoaXMuX3RvdWNoSWQ9dm9pZCAwLHRoaXMuX3ZhbHVlT25TbGlkZVN0YXJ0IT10aGlzLnZhbHVlJiYhdGhpcy5kaXNhYmxlZCYmdGhpcy5fZW1pdENoYW5nZUV2ZW50KCksdGhpcy5fdmFsdWVPblNsaWRlU3RhcnQ9dGhpcy5fbGFzdFBvaW50ZXJFdmVudD1udWxsKX0sdGhpcy5fd2luZG93Qmx1cj0oKT0+e3RoaXMuX2xhc3RQb2ludGVyRXZlbnQmJnRoaXMuX3BvaW50ZXJVcCh0aGlzLl9sYXN0UG9pbnRlckV2ZW50KX0sdGhpcy5fZG9jdW1lbnQ9cyx0aGlzLnRhYkluZGV4PXBhcnNlSW50KGEpfHwwLHIucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntsZXQgYz10Lm5hdGl2ZUVsZW1lbnQ7Yy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLGYwKSxjLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3duLGYwKX0pfWdldCBpbnZlcnQoKXtyZXR1cm4gdGhpcy5faW52ZXJ0fXNldCBpbnZlcnQodCl7dGhpcy5faW52ZXJ0PVplKHQpfWdldCBtYXgoKXtyZXR1cm4gdGhpcy5fbWF4fXNldCBtYXgodCl7dGhpcy5fbWF4PVJpKHQsdGhpcy5fbWF4KSx0aGlzLl9wZXJjZW50PXRoaXMuX2NhbGN1bGF0ZVBlcmNlbnRhZ2UodGhpcy5fdmFsdWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBtaW4oKXtyZXR1cm4gdGhpcy5fbWlufXNldCBtaW4odCl7dGhpcy5fbWluPVJpKHQsdGhpcy5fbWluKSx0aGlzLl9wZXJjZW50PXRoaXMuX2NhbGN1bGF0ZVBlcmNlbnRhZ2UodGhpcy5fdmFsdWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBzdGVwKCl7cmV0dXJuIHRoaXMuX3N0ZXB9c2V0IHN0ZXAodCl7dGhpcy5fc3RlcD1SaSh0LHRoaXMuX3N0ZXApLHRoaXMuX3N0ZXAlMSE9PTAmJih0aGlzLl9yb3VuZFRvRGVjaW1hbD10aGlzLl9zdGVwLnRvU3RyaW5nKCkuc3BsaXQoIi4iKS5wb3AoKS5sZW5ndGgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCB0aHVtYkxhYmVsKCl7cmV0dXJuIHRoaXMuX3RodW1iTGFiZWx9c2V0IHRodW1iTGFiZWwodCl7dGhpcy5fdGh1bWJMYWJlbD1aZSh0KX1nZXQgdGlja0ludGVydmFsKCl7cmV0dXJuIHRoaXMuX3RpY2tJbnRlcnZhbH1zZXQgdGlja0ludGVydmFsKHQpe3Q9PT0iYXV0byI/dGhpcy5fdGlja0ludGVydmFsPSJhdXRvIjp0eXBlb2YgdD09Im51bWJlciJ8fHR5cGVvZiB0PT0ic3RyaW5nIj90aGlzLl90aWNrSW50ZXJ2YWw9UmkodCx0aGlzLl90aWNrSW50ZXJ2YWwpOnRoaXMuX3RpY2tJbnRlcnZhbD0wfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT09PW51bGwmJih0aGlzLnZhbHVlPXRoaXMuX21pbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe2lmKHQhPT10aGlzLl92YWx1ZSl7bGV0IGU9UmkodCwwKTt0aGlzLl9yb3VuZFRvRGVjaW1hbCYmZSE9PXRoaXMubWluJiZlIT09dGhpcy5tYXgmJihlPXBhcnNlRmxvYXQoZS50b0ZpeGVkKHRoaXMuX3JvdW5kVG9EZWNpbWFsKSkpLHRoaXMuX3ZhbHVlPWUsdGhpcy5fcGVyY2VudD10aGlzLl9jYWxjdWxhdGVQZXJjZW50YWdlKHRoaXMuX3ZhbHVlKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX19Z2V0IHZlcnRpY2FsKCl7cmV0dXJuIHRoaXMuX3ZlcnRpY2FsfXNldCB2ZXJ0aWNhbCh0KXt0aGlzLl92ZXJ0aWNhbD1aZSh0KX1nZXQgZGlzcGxheVZhbHVlKCl7cmV0dXJuIHRoaXMuZGlzcGxheVdpdGg/dGhpcy5kaXNwbGF5V2l0aCh0aGlzLnZhbHVlKTp0aGlzLl9yb3VuZFRvRGVjaW1hbCYmdGhpcy52YWx1ZSYmdGhpcy52YWx1ZSUxIT09MD90aGlzLnZhbHVlLnRvRml4ZWQodGhpcy5fcm91bmRUb0RlY2ltYWwpOnRoaXMudmFsdWV8fDB9Zm9jdXModCl7dGhpcy5fZm9jdXNIb3N0RWxlbWVudCh0KX1ibHVyKCl7dGhpcy5fYmx1ckhvc3RFbGVtZW50KCl9Z2V0IHBlcmNlbnQoKXtyZXR1cm4gdGhpcy5fY2xhbXAodGhpcy5fcGVyY2VudCl9X3Nob3VsZEludmVydEF4aXMoKXtyZXR1cm4gdGhpcy52ZXJ0aWNhbD8hdGhpcy5pbnZlcnQ6dGhpcy5pbnZlcnR9X2lzTWluVmFsdWUoKXtyZXR1cm4gdGhpcy5wZXJjZW50PT09MH1fZ2V0VGh1bWJHYXAoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD9jVHQ6dGhpcy5faXNNaW5WYWx1ZSgpJiYhdGhpcy50aHVtYkxhYmVsP3RoaXMuX2lzQWN0aXZlP2ZUdDptVHQ6MH1fZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCl7bGV0IHQ9dGhpcy52ZXJ0aWNhbD8iWSI6IlgiLGU9dGhpcy52ZXJ0aWNhbD9gMSwgJHsxLXRoaXMucGVyY2VudH0sIDFgOmAkezEtdGhpcy5wZXJjZW50fSwgMSwgMWAsbz10aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpPyItIjoiIjtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3R9KCR7b30ke3RoaXMuX2dldFRodW1iR2FwKCl9cHgpIHNjYWxlM2QoJHtlfSlgfX1fZ2V0VHJhY2tGaWxsU3R5bGVzKCl7bGV0IHQ9dGhpcy5wZXJjZW50LGU9dGhpcy52ZXJ0aWNhbD8iWSI6IlgiLG89dGhpcy52ZXJ0aWNhbD9gMSwgJHt0fSwgMWA6YCR7dH0sIDEsIDFgLGk9dGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKT8iIjoiLSI7cmV0dXJue3RyYW5zZm9ybTpgdHJhbnNsYXRlJHtlfSgke2l9JHt0aGlzLl9nZXRUaHVtYkdhcCgpfXB4KSBzY2FsZTNkKCR7b30pYCxkaXNwbGF5OnQ9PT0wPyJub25lIjoiIn19X2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCl7bGV0IHQ9dGhpcy52ZXJ0aWNhbD8iWSI6IlgiLGU9IXRoaXMudmVydGljYWwmJnRoaXMuX2dldERpcmVjdGlvbigpPT0icnRsIj8iIjoiLSIsbz10aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50LzIqMTAwO3JldHVybnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSR7dH0oJHtlfSR7b30lKWB9fV9nZXRUaWNrc1N0eWxlcygpe2xldCB0PXRoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQqMTAwLGU9dGhpcy52ZXJ0aWNhbD9gMnB4ICR7dH0lYDpgJHt0fSUgMnB4YCxvPXRoaXMudmVydGljYWw/IlkiOiJYIixpPSF0aGlzLnZlcnRpY2FsJiZ0aGlzLl9nZXREaXJlY3Rpb24oKT09InJ0bCI/Ii0iOiIiLGE9IXRoaXMudmVydGljYWwmJnRoaXMuX2dldERpcmVjdGlvbigpPT0icnRsIj8iIHJvdGF0ZSgxODBkZWcpIjoiIixyPXtiYWNrZ3JvdW5kU2l6ZTplLHRyYW5zZm9ybTpgdHJhbnNsYXRlWigwKSB0cmFuc2xhdGUke299KCR7aX0ke3QvMn0lKSR7YX1gfTtpZih0aGlzLl9pc01pblZhbHVlKCkmJnRoaXMuX2dldFRodW1iR2FwKCkpe2xldCBzPXRoaXMuX3Nob3VsZEludmVydEF4aXMoKSxsO3RoaXMudmVydGljYWw/bD1zPyJCb3R0b20iOiJUb3AiOmw9cz8iUmlnaHQiOiJMZWZ0IixyW2BwYWRkaW5nJHtsfWBdPWAke3RoaXMuX2dldFRodW1iR2FwKCl9cHhgfXJldHVybiByfV9nZXRUaHVtYkNvbnRhaW5lclN0eWxlcygpe2xldCB0PXRoaXMuX3Nob3VsZEludmVydEF4aXMoKSxlPXRoaXMudmVydGljYWw/IlkiOiJYIixpPSgodGhpcy5fZ2V0RGlyZWN0aW9uKCk9PSJydGwiJiYhdGhpcy52ZXJ0aWNhbD8hdDp0KT90aGlzLnBlcmNlbnQ6MS10aGlzLnBlcmNlbnQpKjEwMDtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke2V9KC0ke2l9JSlgfX1fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKXtsZXQgdD10aGlzLl9zaG91bGRJbnZlcnRBeGlzKCk7cmV0dXJuIHRoaXMuX2dldERpcmVjdGlvbigpPT0icnRsIiYmIXRoaXMudmVydGljYWw/IXQ6dH1fZ2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpciYmdGhpcy5fZGlyLnZhbHVlPT0icnRsIj8icnRsIjoibHRyIn1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKS5zdWJzY3JpYmUodD0+e3RoaXMuX2lzQWN0aXZlPSEhdCYmdCE9PSJrZXlib2FyZCIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfSksdGhpcy5fZGlyJiYodGhpcy5fZGlyQ2hhbmdlU3Vic2NyaXB0aW9uPXRoaXMuX2Rpci5jaGFuZ2Uuc3Vic2NyaWJlKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSl9bmdPbkRlc3Ryb3koKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLGYwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3duLGYwKSx0aGlzLl9sYXN0UG9pbnRlckV2ZW50PW51bGwsdGhpcy5fcmVtb3ZlR2xvYmFsRXZlbnRzKCksdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfV9vbk1vdXNlZW50ZXIoKXt0aGlzLmRpc2FibGVkfHwodGhpcy5fc2xpZGVyRGltZW5zaW9ucz10aGlzLl9nZXRTbGlkZXJEaW1lbnNpb25zKCksdGhpcy5fdXBkYXRlVGlja0ludGVydmFsUGVyY2VudCgpKX1fb25Gb2N1cygpe3RoaXMuX3NsaWRlckRpbWVuc2lvbnM9dGhpcy5fZ2V0U2xpZGVyRGltZW5zaW9ucygpLHRoaXMuX3VwZGF0ZVRpY2tJbnRlcnZhbFBlcmNlbnQoKX1fb25CbHVyKCl7dGhpcy5vblRvdWNoZWQoKX1fb25LZXlkb3duKHQpe2lmKHRoaXMuZGlzYWJsZWR8fFZhKHQpfHx0aGlzLl9pc1NsaWRpbmcmJnRoaXMuX2lzU2xpZGluZyE9PSJrZXlib2FyZCIpcmV0dXJuO2xldCBlPXRoaXMudmFsdWU7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSAzMzp0aGlzLl9pbmNyZW1lbnQoMTApO2JyZWFrO2Nhc2UgMzQ6dGhpcy5faW5jcmVtZW50KC0xMCk7YnJlYWs7Y2FzZSAzNTp0aGlzLnZhbHVlPXRoaXMubWF4O2JyZWFrO2Nhc2UgMzY6dGhpcy52YWx1ZT10aGlzLm1pbjticmVhaztjYXNlIDM3OnRoaXMuX2luY3JlbWVudCh0aGlzLl9nZXREaXJlY3Rpb24oKT09InJ0bCI/MTotMSk7YnJlYWs7Y2FzZSAzODp0aGlzLl9pbmNyZW1lbnQoMSk7YnJlYWs7Y2FzZSAzOTp0aGlzLl9pbmNyZW1lbnQodGhpcy5fZ2V0RGlyZWN0aW9uKCk9PSJydGwiPy0xOjEpO2JyZWFrO2Nhc2UgNDA6dGhpcy5faW5jcmVtZW50KC0xKTticmVhaztkZWZhdWx0OnJldHVybn1lIT10aGlzLnZhbHVlJiYodGhpcy5fZW1pdElucHV0RXZlbnQoKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSksdGhpcy5faXNTbGlkaW5nPSJrZXlib2FyZCIsdC5wcmV2ZW50RGVmYXVsdCgpfV9vbktleXVwKCl7dGhpcy5faXNTbGlkaW5nPT09ImtleWJvYXJkIiYmKHRoaXMuX2lzU2xpZGluZz1udWxsKX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X2JpbmRHbG9iYWxFdmVudHModCl7bGV0IGU9dGhpcy5fZG9jdW1lbnQsbz1Iayh0KSxpPW8/InRvdWNobW92ZSI6Im1vdXNlbW92ZSIsYT1vPyJ0b3VjaGVuZCI6Im1vdXNldXAiO2UuYWRkRXZlbnRMaXN0ZW5lcihpLHRoaXMuX3BvaW50ZXJNb3ZlLGYwKSxlLmFkZEV2ZW50TGlzdGVuZXIoYSx0aGlzLl9wb2ludGVyVXAsZjApLG8mJmUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hjYW5jZWwiLHRoaXMuX3BvaW50ZXJVcCxmMCk7bGV0IHI9dGhpcy5fZ2V0V2luZG93KCk7dHlwZW9mIHIhPSJ1bmRlZmluZWQiJiZyJiZyLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3dpbmRvd0JsdXIpfV9yZW1vdmVHbG9iYWxFdmVudHMoKXtsZXQgdD10aGlzLl9kb2N1bWVudDt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsZjApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fcG9pbnRlclVwLGYwKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsZjApLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX3BvaW50ZXJVcCxmMCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsdGhpcy5fcG9pbnRlclVwLGYwKTtsZXQgZT10aGlzLl9nZXRXaW5kb3coKTt0eXBlb2YgZSE9InVuZGVmaW5lZCImJmUmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1cil9X2luY3JlbWVudCh0KXt0aGlzLnZhbHVlPXRoaXMuX2NsYW1wKCh0aGlzLnZhbHVlfHwwKSt0aGlzLnN0ZXAqdCx0aGlzLm1pbix0aGlzLm1heCl9X3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKHQpe2lmKCF0aGlzLl9zbGlkZXJEaW1lbnNpb25zKXJldHVybjtsZXQgZT10aGlzLnZlcnRpY2FsP3RoaXMuX3NsaWRlckRpbWVuc2lvbnMudG9wOnRoaXMuX3NsaWRlckRpbWVuc2lvbnMubGVmdCxvPXRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5oZWlnaHQ6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy53aWR0aCxpPXRoaXMudmVydGljYWw/dC55OnQueCxhPXRoaXMuX2NsYW1wKChpLWUpL28pO2lmKHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkmJihhPTEtYSksYT09PTApdGhpcy52YWx1ZT10aGlzLm1pbjtlbHNlIGlmKGE9PT0xKXRoaXMudmFsdWU9dGhpcy5tYXg7ZWxzZXtsZXQgcj10aGlzLl9jYWxjdWxhdGVWYWx1ZShhKSxzPU1hdGgucm91bmQoKHItdGhpcy5taW4pL3RoaXMuc3RlcCkqdGhpcy5zdGVwK3RoaXMubWluO3RoaXMudmFsdWU9dGhpcy5fY2xhbXAocyx0aGlzLm1pbix0aGlzLm1heCl9fV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKHRoaXMudmFsdWUpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKSx0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KCkpfV9lbWl0SW5wdXRFdmVudCgpe3RoaXMuaW5wdXQuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudCgpKX1fdXBkYXRlVGlja0ludGVydmFsUGVyY2VudCgpe2lmKCEoIXRoaXMudGlja0ludGVydmFsfHwhdGhpcy5fc2xpZGVyRGltZW5zaW9ucykpaWYodGhpcy50aWNrSW50ZXJ2YWw9PSJhdXRvIil7bGV0IHQ9dGhpcy52ZXJ0aWNhbD90aGlzLl9zbGlkZXJEaW1lbnNpb25zLmhlaWdodDp0aGlzLl9zbGlkZXJEaW1lbnNpb25zLndpZHRoLGU9dCp0aGlzLnN0ZXAvKHRoaXMubWF4LXRoaXMubWluKSxpPU1hdGguY2VpbChsVHQvZSkqdGhpcy5zdGVwO3RoaXMuX3RpY2tJbnRlcnZhbFBlcmNlbnQ9aS90fWVsc2UgdGhpcy5fdGlja0ludGVydmFsUGVyY2VudD10aGlzLnRpY2tJbnRlcnZhbCp0aGlzLnN0ZXAvKHRoaXMubWF4LXRoaXMubWluKX1fY3JlYXRlQ2hhbmdlRXZlbnQodD10aGlzLnZhbHVlKXtsZXQgZT1uZXcgTlk7cmV0dXJuIGUuc291cmNlPXRoaXMsZS52YWx1ZT10LGV9X2NhbGN1bGF0ZVBlcmNlbnRhZ2UodCl7cmV0dXJuKCh0fHwwKS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKX1fY2FsY3VsYXRlVmFsdWUodCl7cmV0dXJuIHRoaXMubWluK3QqKHRoaXMubWF4LXRoaXMubWluKX1fY2xhbXAodCxlPTAsbz0xKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbih0LG8pKX1fZ2V0U2xpZGVyRGltZW5zaW9ucygpe3JldHVybiB0aGlzLl9zbGlkZXJXcmFwcGVyP3RoaXMuX3NsaWRlcldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTpudWxsfV9mb2N1c0hvc3RFbGVtZW50KHQpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fYmx1ckhvc3RFbGVtZW50KCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fX07WXIuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WXIpKHYoTCksdihsbiksdihUdCksdihOZSw4KSxaYSgidGFiaW5kZXgiKSx2KEN0KSx2KF90KSx2KHNuLDgpKX07WXIuXHUwMjc1Y21wPXooe3R5cGU6WXIsc2VsZWN0b3JzOltbIm1hdC1zbGlkZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShzVHQsNSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5fc2xpZGVyV3JhcHBlcj1vLmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJzbGlkZXIiLDEsIm1hdC1zbGlkZXIiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MjksaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fb25Gb2N1cygpfSkoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX29uQmx1cigpfSkoImtleWRvd24iLGZ1bmN0aW9uKGkpe3JldHVybiBlLl9vbktleWRvd24oaSl9KSgia2V5dXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX29uS2V5dXAoKX0pKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe3JldHVybiBlLl9vbk1vdXNlZW50ZXIoKX0pKCJzZWxlY3RzdGFydCIsZnVuY3Rpb24oaSl7cmV0dXJuIGkucHJldmVudERlZmF1bHQoKX0pLHQmMiYmKHVsKCJ0YWJJbmRleCIsZS50YWJJbmRleCkscmUoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQpKCJhcmlhLXZhbHVlbWF4IixlLm1heCkoImFyaWEtdmFsdWVtaW4iLGUubWluKSgiYXJpYS12YWx1ZW5vdyIsZS52YWx1ZSkoImFyaWEtdmFsdWV0ZXh0IixlLnZhbHVlVGV4dD09bnVsbD9lLmRpc3BsYXlWYWx1ZTplLnZhbHVlVGV4dCkoImFyaWEtb3JpZW50YXRpb24iLGUudmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCIpLG1lKCJtYXQtc2xpZGVyLWRpc2FibGVkIixlLmRpc2FibGVkKSgibWF0LXNsaWRlci1oYXMtdGlja3MiLGUudGlja0ludGVydmFsKSgibWF0LXNsaWRlci1ob3Jpem9udGFsIiwhZS52ZXJ0aWNhbCkoIm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCIsZS5fc2hvdWxkSW52ZXJ0QXhpcygpKSgibWF0LXNsaWRlci1pbnZlcnQtbW91c2UtY29vcmRzIixlLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpKSgibWF0LXNsaWRlci1zbGlkaW5nIixlLl9pc1NsaWRpbmcpKCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmciLGUudGh1bWJMYWJlbCkoIm1hdC1zbGlkZXItdmVydGljYWwiLGUudmVydGljYWwpKCJtYXQtc2xpZGVyLW1pbi12YWx1ZSIsZS5faXNNaW5WYWx1ZSgpKSgibWF0LXNsaWRlci1oaWRlLWxhc3QtdGljayIsZS5kaXNhYmxlZHx8ZS5faXNNaW5WYWx1ZSgpJiZlLl9nZXRUaHVtYkdhcCgpJiZlLl9zaG91bGRJbnZlcnRBeGlzKCkpKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsZS5fYW5pbWF0aW9uTW9kZT09PSJOb29wQW5pbWF0aW9ucyIpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4IixpbnZlcnQ6ImludmVydCIsbWF4OiJtYXgiLG1pbjoibWluIixzdGVwOiJzdGVwIix0aHVtYkxhYmVsOiJ0aHVtYkxhYmVsIix0aWNrSW50ZXJ2YWw6InRpY2tJbnRlcnZhbCIsdmFsdWU6InZhbHVlIix2ZXJ0aWNhbDoidmVydGljYWwiLGRpc3BsYXlXaXRoOiJkaXNwbGF5V2l0aCIsdmFsdWVUZXh0OiJ2YWx1ZVRleHQifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSIsaW5wdXQ6ImlucHV0Iix2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UifSxleHBvcnRBczpbIm1hdFNsaWRlciJdLGZlYXR1cmVzOltUZShbZmx0XSksYWVdLGRlY2xzOjEzLHZhcnM6Nixjb25zdHM6W1sxLCJtYXQtc2xpZGVyLXdyYXBwZXIiXSxbInNsaWRlcldyYXBwZXIiLCIiXSxbMSwibWF0LXNsaWRlci10cmFjay13cmFwcGVyIl0sWzEsIm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLXRyYWNrLWZpbGwiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10aWNrcy1jb250YWluZXIiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10aWNrcyIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lciIsMywibmdTdHlsZSJdLFsxLCJtYXQtc2xpZGVyLWZvY3VzLXJpbmciXSxbMSwibWF0LXNsaWRlci10aHVtYiJdLFsxLCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsIl0sWzEsIm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwLDEpLHUoMiwiZGl2IiwyKSxEKDMsImRpdiIsMyksRCg0LCJkaXYiLDQpLGgoKSx1KDUsImRpdiIsNSksRCg2LCJkaXYiLDYpLGgoKSx1KDcsImRpdiIsNyksRCg4LCJkaXYiLDgpLEQoOSwiZGl2Iiw5KSx1KDEwLCJkaXYiLDEwKSx1KDExLCJzcGFuIiwxMSksVCgxMiksaCgpLGgoKSxoKCksaCgpKSx0JjImJih4KDMpLFAoIm5nU3R5bGUiLGUuX2dldFRyYWNrQmFja2dyb3VuZFN0eWxlcygpKSx4KDEpLFAoIm5nU3R5bGUiLGUuX2dldFRyYWNrRmlsbFN0eWxlcygpKSx4KDEpLFAoIm5nU3R5bGUiLGUuX2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCkpLHgoMSksUCgibmdTdHlsZSIsZS5fZ2V0VGlja3NTdHlsZXMoKSkseCgxKSxQKCJuZ1N0eWxlIixlLl9nZXRUaHVtYkNvbnRhaW5lclN0eWxlcygpKSx4KDUpLEllKGUuZGlzcGxheVZhbHVlKSl9LGRpcmVjdGl2ZXM6W0hyXSxzdHlsZXM6W2AubWF0LXNsaWRlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzo4cHg7b3V0bGluZTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOmFjdGl2ZSwubWF0LXNsaWRlci5tYXQtc2xpZGVyLXNsaWRpbmc6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKXtjdXJzb3I6LXdlYmtpdC1ncmFiYmluZztjdXJzb3I6Z3JhYmJpbmd9Lm1hdC1zbGlkZXItd3JhcHBlcnstd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDpleGFjdDtjb2xvci1hZGp1c3Q6ZXhhY3Q7cG9zaXRpb246YWJzb2x1dGV9Lm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1zbGlkZXItdGlja3N7LXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7YmFja2dyb3VuZC1jbGlwOmNvbnRlbnQtYm94O2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtib3gtc2l6aW5nOmJvcmRlci1ib3g7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtib3JkZXItcmFkaXVzOjUwJTt0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksb3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMSk7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6bm90KC5tYXQtc2xpZGVyLXNsaWRpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2N1cnNvcjotd2Via2l0LWdyYWI7Y3Vyc29yOmdyYWJ9Lm1hdC1zbGlkZXItdGh1bWJ7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTEwcHg7Ym90dG9tOi0xMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O2JvcmRlcjozcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDAuNyk7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3JkZXItY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLXJhZGl1cyA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt6LWluZGV4OjE7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3RyYW5zaXRpb24tZHVyYXRpb246MG1zfS5tYXQtc2xpZGVyLWhhcy10aWNrcyAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci13aWR0aDowO2JvcmRlci1zdHlsZTpzb2xpZDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLWhhcy10aWNrcy5jZGstZm9jdXNlZDpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVyLC5tYXQtc2xpZGVyLWhhcy10aWNrczpob3Zlcjpub3QoLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2spIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye29wYWNpdHk6MX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrcywubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKSAubWF0LXNsaWRlci10aWNrc3tvcGFjaXR5OjF9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2Rpc3BsYXk6bm9uZX0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6ZmxleH0ubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke3RyYW5zZm9ybS1vcmlnaW46MCAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1ie3RyYW5zZm9ybTpzY2FsZSgwKX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvcmRlci1yYWRpdXM6NTAlIDUwJSAwfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtvcGFjaXR5OjF9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstbW91c2UtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay10b3VjaC1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYntib3JkZXItd2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZSgxKX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RyYW5zZm9ybTpzY2FsZSgwKTtvcGFjaXR5OjB9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjRweDt0cmFuc2Zvcm06c2NhbGUoMC41KX0ubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6NDhweDttaW4td2lkdGg6MTI4cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci13cmFwcGVye2hlaWdodDoycHg7dG9wOjIzcHg7bGVmdDo4cHg7cmlnaHQ6OHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7aGVpZ2h0OjJweDtib3JkZXItbGVmdC13aWR0aDoycHg7cmlnaHQ6MDt0b3A6MH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MnB4O3dpZHRoOjEwMCU7dHJhbnNmb3JtOnNjYWxlWCgwKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMSl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7aGVpZ2h0OjA7b3V0bGluZTpzb2xpZCAycHg7dG9wOjFweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt3aWR0aDoxMDAlO2hlaWdodDowO3RvcDo1MCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne3RvcDotMTVweDtyaWdodDotMTVweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse3JpZ2h0Oi0xNHB4O3RvcDotNDBweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgyNnB4KSBzY2FsZSgwLjAxKSByb3RhdGUoNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOm5vbmV9Lm1hdC1zbGlkZXItdmVydGljYWx7d2lkdGg6NDhweDttaW4taGVpZ2h0OjEyOHB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXJ7d2lkdGg6MnB4O3RvcDo4cHg7Ym90dG9tOjhweDtsZWZ0OjIzcHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7d2lkdGg6MnB4O2JvcmRlci10b3Atd2lkdGg6MnB4O2JvdHRvbTowO2xlZnQ6MH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoxMDAlO3dpZHRoOjJweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1maWxse2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDApfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7aGVpZ2h0OjEwMCU7d2lkdGg6MnB4O3RyYW5zZm9ybTpzY2FsZVkoMSl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDowO291dGxpbmU6c29saWQgMnB4O2xlZnQ6MXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7Ym90dG9tOi0xNXB4O2xlZnQ6LTE1cHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGlja3N7d2lkdGg6MnB4O2hlaWdodDoxMDAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcntoZWlnaHQ6MTAwJTt3aWR0aDowO2xlZnQ6NTAlfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iey13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW47YmFja2ZhY2UtdmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7Ym90dG9tOi0xNHB4O2xlZnQ6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKC00NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci12ZXJ0aWNhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2xlZnQ6MDtyaWdodDphdXRvfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stZmlsbHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH1bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJX0ubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVyLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmcsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7dHJhbnNpdGlvbjpub25lfQpgXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtZci5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOmxufSx7dHlwZTpUdH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6bGksYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6Q3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dO1lyLnByb3BEZWNvcmF0b3JzPXtpbnZlcnQ6W3t0eXBlOmR9XSxtYXg6W3t0eXBlOmR9XSxtaW46W3t0eXBlOmR9XSxzdGVwOlt7dHlwZTpkfV0sdGh1bWJMYWJlbDpbe3R5cGU6ZH1dLHRpY2tJbnRlcnZhbDpbe3R5cGU6ZH1dLHZhbHVlOlt7dHlwZTpkfV0sZGlzcGxheVdpdGg6W3t0eXBlOmR9XSx2YWx1ZVRleHQ6W3t0eXBlOmR9XSx2ZXJ0aWNhbDpbe3R5cGU6ZH1dLGNoYW5nZTpbe3R5cGU6Qn1dLGlucHV0Olt7dHlwZTpCfV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkJ9XSxfc2xpZGVyV3JhcHBlcjpbe3R5cGU6SXQsYXJnczpbInNsaWRlcldyYXBwZXIiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWXIsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtc2xpZGVyIixleHBvcnRBczoibWF0U2xpZGVyIixwcm92aWRlcnM6W2ZsdF0saG9zdDp7Iihmb2N1cykiOiJfb25Gb2N1cygpIiwiKGJsdXIpIjoiX29uQmx1cigpIiwiKGtleWRvd24pIjoiX29uS2V5ZG93bigkZXZlbnQpIiwiKGtleXVwKSI6Il9vbktleXVwKCkiLCIobW91c2VlbnRlcikiOiJfb25Nb3VzZWVudGVyKCkiLCIoc2VsZWN0c3RhcnQpIjoiJGV2ZW50LnByZXZlbnREZWZhdWx0KCkiLGNsYXNzOiJtYXQtc2xpZGVyIG1hdC1mb2N1cy1pbmRpY2F0b3IiLHJvbGU6InNsaWRlciIsIlt0YWJJbmRleF0iOiJ0YWJJbmRleCIsIlthdHRyLmFyaWEtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbYXR0ci5hcmlhLXZhbHVlbWF4XSI6Im1heCIsIlthdHRyLmFyaWEtdmFsdWVtaW5dIjoibWluIiwiW2F0dHIuYXJpYS12YWx1ZW5vd10iOiJ2YWx1ZSIsIlthdHRyLmFyaWEtdmFsdWV0ZXh0XSI6InZhbHVlVGV4dCA9PSBudWxsID8gZGlzcGxheVZhbHVlIDogdmFsdWVUZXh0IiwiW2F0dHIuYXJpYS1vcmllbnRhdGlvbl0iOid2ZXJ0aWNhbCA/ICJ2ZXJ0aWNhbCIgOiAiaG9yaXpvbnRhbCInLCJbY2xhc3MubWF0LXNsaWRlci1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtc2xpZGVyLWhhcy10aWNrc10iOiJ0aWNrSW50ZXJ2YWwiLCJbY2xhc3MubWF0LXNsaWRlci1ob3Jpem9udGFsXSI6IiF2ZXJ0aWNhbCIsIltjbGFzcy5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWRdIjoiX3Nob3VsZEludmVydEF4aXMoKSIsIltjbGFzcy5tYXQtc2xpZGVyLWludmVydC1tb3VzZS1jb29yZHNdIjoiX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkiLCJbY2xhc3MubWF0LXNsaWRlci1zbGlkaW5nXSI6Il9pc1NsaWRpbmciLCJbY2xhc3MubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nXSI6InRodW1iTGFiZWwiLCJbY2xhc3MubWF0LXNsaWRlci12ZXJ0aWNhbF0iOiJ2ZXJ0aWNhbCIsIltjbGFzcy5tYXQtc2xpZGVyLW1pbi12YWx1ZV0iOiJfaXNNaW5WYWx1ZSgpIiwiW2NsYXNzLm1hdC1zbGlkZXItaGlkZS1sYXN0LXRpY2tdIjoiZGlzYWJsZWQgfHwgX2lzTWluVmFsdWUoKSAmJiBfZ2V0VGh1bWJHYXAoKSAmJiBfc2hvdWxkSW52ZXJ0QXhpcygpIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6J19hbmltYXRpb25Nb2RlID09PSAiTm9vcEFuaW1hdGlvbnMiJ30sdGVtcGxhdGU6YDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItd3JhcHBlciIgI3NsaWRlcldyYXBwZXI+CiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10cmFjay13cmFwcGVyIj4KICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCIgW25nU3R5bGVdPSJfZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCkiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10cmFjay1maWxsIiBbbmdTdHlsZV09Il9nZXRUcmFja0ZpbGxTdHlsZXMoKSI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aWNrcy1jb250YWluZXIiIFtuZ1N0eWxlXT0iX2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCkiPgogICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aWNrcyIgW25nU3R5bGVdPSJfZ2V0VGlja3NTdHlsZXMoKSI+PC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1jb250YWluZXIiIFtuZ1N0eWxlXT0iX2dldFRodW1iQ29udGFpbmVyU3R5bGVzKCkiPgogICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci1mb2N1cy1yaW5nIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZXItdGh1bWIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ibWF0LXNsaWRlci10aHVtYi1sYWJlbCI+CiAgICAgIDxzcGFuIGNsYXNzPSJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQiPnt7ZGlzcGxheVZhbHVlfX08L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CmAsaW5wdXRzOlsiZGlzYWJsZWQiLCJjb2xvciIsInRhYkluZGV4Il0sZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gsc3R5bGVzOltgLm1hdC1zbGlkZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6OHB4O291dGxpbmU6bm9uZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKTphY3RpdmUsLm1hdC1zbGlkZXIubWF0LXNsaWRlci1zbGlkaW5nOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCl7Y3Vyc29yOi13ZWJraXQtZ3JhYmJpbmc7Y3Vyc29yOmdyYWJiaW5nfS5tYXQtc2xpZGVyLXdyYXBwZXJ7LXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6ZXhhY3Q7Y29sb3ItYWRqdXN0OmV4YWN0O3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93OmhpZGRlbn0ubWF0LXNsaWRlci10cmFjay1maWxse3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRpY2tzey13ZWJraXQtYmFja2dyb3VuZC1jbGlwOmNvbnRlbnQtYm94O2JhY2tncm91bmQtY2xpcDpjb250ZW50LWJveDtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQ7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1mb2N1cy1yaW5ne3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDApO29wYWNpdHk6MDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZywubWF0LXNsaWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYntjdXJzb3I6LXdlYmtpdC1ncmFiO2N1cnNvcjpncmFifS5tYXQtc2xpZGVyLXRodW1ie3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0xMHB4O2JvdHRvbTotMTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXI6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTpzY2FsZSgwLjcpO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJvcmRlci1yYWRpdXMgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7ei1pbmRleDoxO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt0cmFuc2l0aW9uLWR1cmF0aW9uOjBtc30ubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlciwubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntvcGFjaXR5OjF9Lm1hdC1zbGlkZXItaGFzLXRpY2tzLmNkay1mb2N1c2VkOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXItaGFzLXRpY2tzOmhvdmVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3N7b3BhY2l0eToxfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5OmZsZXh9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYnt0cmFuc2Zvcm06c2NhbGUoMCl9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtib3JkZXItcmFkaXVzOjUwJSA1MCUgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLW1vdXNlLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstdG91Y2gtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGUoMSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci13aWR0aDo0cHg7dHJhbnNmb3JtOnNjYWxlKDAuNSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtc2xpZGVyLWhvcml6b250YWx7aGVpZ2h0OjQ4cHg7bWluLXdpZHRoOjEyOHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcntoZWlnaHQ6MnB4O3RvcDoyM3B4O2xlZnQ6OHB4O3JpZ2h0OjhweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2hlaWdodDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MnB4O3JpZ2h0OjA7dG9wOjB9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMCl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoycHg7d2lkdGg6MTAwJTt0cmFuc2Zvcm06c2NhbGVYKDEpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDowO291dGxpbmU6c29saWQgMnB4O3RvcDoxcHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3toZWlnaHQ6MnB4O3dpZHRoOjEwMCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MDt0b3A6NTAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0b3A6LTE1cHg7cmlnaHQ6LTE1cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtyaWdodDotMTRweDt0b3A6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGVyLXZlcnRpY2Fse3dpZHRoOjQ4cHg7bWluLWhlaWdodDoxMjhweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci13cmFwcGVye3dpZHRoOjJweDt0b3A6OHB4O2JvdHRvbTo4cHg7bGVmdDoyM3B4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3dpZHRoOjJweDtib3JkZXItdG9wLXdpZHRoOjJweDtib3R0b206MDtsZWZ0OjB9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MTAwJTt3aWR0aDoycHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MTAwJTt3aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlWSgwKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDEpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDoycHg7aGVpZ2h0OjEwMCV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7d2lkdGg6MDtvdXRsaW5lOnNvbGlkIDJweDtsZWZ0OjFweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JvdHRvbTotMTVweDtsZWZ0Oi0xNXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tze3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtsZWZ0OjUwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYnstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvdHRvbTotMTRweDtsZWZ0Oi00MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVYKDI2cHgpIHNjYWxlKDAuMDEpIHJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfVtkaXI9cnRsXSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntsZWZ0OjA7cmlnaHQ6YXV0b31bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRpY2tzLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lciwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3RyYW5zaXRpb246bm9uZX0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOmxufSx7dHlwZTpUdH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6bGksYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6Q3R9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7Y2hhbmdlOlt7dHlwZTpCfV0saW5wdXQ6W3t0eXBlOkJ9XSx2YWx1ZUNoYW5nZTpbe3R5cGU6Qn1dLGludmVydDpbe3R5cGU6ZH1dLG1heDpbe3R5cGU6ZH1dLG1pbjpbe3R5cGU6ZH1dLHN0ZXA6W3t0eXBlOmR9XSx0aHVtYkxhYmVsOlt7dHlwZTpkfV0sdGlja0ludGVydmFsOlt7dHlwZTpkfV0sdmFsdWU6W3t0eXBlOmR9XSx2ZXJ0aWNhbDpbe3R5cGU6ZH1dLGRpc3BsYXlXaXRoOlt7dHlwZTpkfV0sdmFsdWVUZXh0Olt7dHlwZTpkfV0sX3NsaWRlcldyYXBwZXI6W3t0eXBlOkl0LGFyZ3M6WyJzbGlkZXJXcmFwcGVyIl19XX0pfSkoKTtmdW5jdGlvbiBIayhuKXtyZXR1cm4gbi50eXBlWzBdPT09InQifWZ1bmN0aW9uIG1sdChuLHQpe2xldCBlO3JldHVybiBIayhuKT90eXBlb2YgdD09Im51bWJlciI/ZT1UWShuLnRvdWNoZXMsdCl8fFRZKG4uY2hhbmdlZFRvdWNoZXMsdCk6ZT1uLnRvdWNoZXNbMF18fG4uY2hhbmdlZFRvdWNoZXNbMF06ZT1uLGU/e3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZfTp2b2lkIDB9ZnVuY3Rpb24gVFkobix0KXtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylpZihuW2VdLmlkZW50aWZpZXI9PT10KXJldHVybiBuW2VdfWZ1bmN0aW9uIGRUdChuLHQpe2ZvcihsZXQgZT0wO2U8bi50b3VjaGVzLmxlbmd0aDtlKyspe2xldCBvPW4udG91Y2hlc1tlXS50YXJnZXQ7aWYodD09PW98fHQuY29udGFpbnMobykpcmV0dXJuIG4udG91Y2hlc1tlXS5pZGVudGlmaWVyfX12YXIgaXI9Y2xhc3N7fTtpci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxpcil9O2lyLlx1MDI3NW1vZD1xKHt0eXBlOmlyfSk7aXIuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLER0XSxEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaXIsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1ksRHRdLGV4cG9ydHM6W1lyLER0XSxkZWNsYXJhdGlvbnM6W1lyXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChpcix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1lyXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltZLER0XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltZcixEdF19fSl9KSgpO3ZhciBGaz17MTk6ImZsb2F0MTYiLDE6ImZsb2F0MzIiLDI6ImZsb2F0NjQiLDM6ImludDMyIiw0OiJ1aW50OCIsMTc6InVpbnQxNiIsMjI6InVpbnQzMiIsMjM6InVpbnQ2NCIsNToiaW50MTYiLDY6ImludDgiLDc6InN0cmluZyIsODoiY29tcGxleDY0IiwxODoiY29tcGxleDEyOCIsOToiaW50NjQiLDEwOiJib29sIiwxMToicWludDgiLDEyOiJxdWludDgiLDE1OiJxaW50MTYiLDE2OiJxdWludDE2IiwxMzoicWludDMyIiwxNDoiYmZsb2F0MTYiLDIwOiJyZXNvdXJjZSIsMjE6InZhcmlhbnQiLDExOToiZmxvYXQxNl9yZWYiLDEwMToiZmxvYXQzMl9yZWYiLDEwMjoiZmxvYXQ2NF9yZWYiLDEwMzoiaW50MzJfcmVmIiwxMjI6InVpbnQzMl9yZWYiLDEwNDoidWludDhfcmVmIiwxMTc6InVpbnQxNl9yZWYiLDEwNToiaW50MTZfcmVmIiwxMDY6ImludDhfcmVmIiwxMDc6InN0cmluZ19yZWYiLDEwODoiY29tcGxleDY0X3JlZiIsMTE4OiJjb21wbGV4MTI4X3JlZiIsMTA5OiJpbnQ2NF9yZWYiLDEyMzoidWludDY0X3JlZiIsMTEwOiJib29sX3JlZiIsMTExOiJxaW50OF9yZWYiLDExMjoicXVpbnQ4X3JlZiIsMTE1OiJxaW50MTZfcmVmIiwxMTY6InF1aW50MTZfcmVmIiwxMTM6InFpbnQzMl9yZWYiLDExNDoiYmZsb2F0MTZfcmVmIiwxMjA6InJlc291cmNlX3JlZiIsMTIxOiJ2YXJpYW50X3JlZiJ9O2Z1bmN0aW9uIE16KG4pe2xldHt0ZW5zb3JEZWJ1Z01vZGU6dCxhcnJheTplfT1uO3N3aXRjaCh0KXtjYXNlIHBjLk5PX1RFTlNPUjp7aWYoZSE9PW51bGwpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkbHkgcmVjZWl2ZWQgbm9uLW51bGwgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHVuZGVyIE5PX1RFTlNPUiBtb2RlIik7cmV0dXJue319Y2FzZSBwYy5DVVJUX0hFQUxUSDp7aWYoZT09PW51bGx8fGUubGVuZ3RoIT09Mil0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIENVUlRfSEVBTFRIIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCAyLCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7cmV0dXJue2hhc0luZk9yTmFOOkJvb2xlYW4oZVsxXSl9fWNhc2UgcGMuQ09OQ0lTRV9IRUFMVEg6e2lmKGU9PT1udWxsfHxlLmxlbmd0aCE9PTUpdGhyb3cgbmV3IEVycm9yKGBVbmRlciBDT05DSVNFX0hFQUxUSCBtb2RlLCBleHBlY3RlZCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdG8gaGF2ZSBsZW5ndGggNSwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KGUpfWApO2xldCBvPXtzaXplOmVbMV19O3JldHVybiBlWzJdPjAmJihvLm51bU5lZ2F0aXZlSW5mcz1lWzJdKSxlWzNdPjAmJihvLm51bVBvc2l0aXZlSW5mcz1lWzNdKSxlWzRdPjAmJihvLm51bU5hTnM9ZVs0XSksb31jYXNlIHBjLlNIQVBFOntpZihlPT09bnVsbHx8ZS5sZW5ndGghPT0xMCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIFNIQVBFIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCAxMCwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KGUpfWApO2xldCBvPWVbMl0saT1lLnNsaWNlKDQsTWF0aC5taW4oNCtvLGUubGVuZ3RoKSk7cmV0dXJuIGkubGVuZ3RoPG8mJihpPW5ldyBBcnJheShvLWkubGVuZ3RoKS5jb25jYXQoaSkpLHtkdHlwZTpGa1tlWzFdXSxyYW5rOm8sc2l6ZTplWzNdLHNoYXBlOml9fWNhc2UgcGMuRlVMTF9IRUFMVEg6e2lmKGU9PT1udWxsfHxlLmxlbmd0aCE9PTExKXRocm93IG5ldyBFcnJvcihgVW5kZXIgRlVMTF9IRUFMVEggbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDExLCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7bGV0IG89ZVszXSxpPXtkdHlwZTpGa1tlWzJdXSxyYW5rOm8sc2l6ZTplWzRdfTtyZXR1cm4gZVs1XT4wJiYoaS5udW1OZWdhdGl2ZUluZnM9ZVs1XSksZVs2XT4wJiYoaS5udW1Qb3NpdGl2ZUluZnM9ZVs2XSksZVs3XT4wJiYoaS5udW1OYU5zPWVbN10pLGVbOF0+MCYmKGkubnVtTmVnYXRpdmVGaW5pdGVzPWVbOF0pLGVbOV0+MCYmKGkubnVtWmVyb3M9ZVs5XSksZVsxMF0+MCYmKGkubnVtUG9zaXRpdmVGaW5pdGVzPWVbMTBdKSxpfWNhc2UgcGMuRlVMTF9URU5TT1I6e2lmKGUhPT1udWxsKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZGx5IHJlY2VpdmVkIG5vbi1udWxsIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB1bmRlciBGVUxMX1RFTlNPUiBtb2RlIik7cmV0dXJue319ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCB0ZW5zb3JEZWJ1Z01vZGU6ICR7dH1gKX19dmFyIEFZPWBbX25naG9zdC0lQ09NUCVdIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwOwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTsKICAgIGhlaWdodDogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxNHB4OwogICAgbWFyZ2luOiAwIDJweDsKICAgIHBhZGRpbmc6IDFweCAzcHg7CiAgICB3aWR0aDogbWF4LWNvbnRlbnQ7CiAgfWA7ZnVuY3Rpb24gZ1R0KG4sdCl7biYxJiZEKDAsImRpdiIsNCl9ZnVuY3Rpb24gdVR0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDcpLHUoMSwic3BhbiIsOCksVCgyLCJOYU4iKSxoKCksdSgzLCJzcGFuIiw5KSxUKDQpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygyKTt4KDQpLGxlKCJceEQ3IixlLm51bU5hTnMsIiIpfX1mdW5jdGlvbiBoVHQobix0KXtpZihuJjEmJih1KDAsImRpdiIsNyksdSgxLCJzcGFuIiw4KSxUKDIsIi1cdTIyMUUiKSxoKCksdSgzLCJzcGFuIiw5KSxUKDQpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygyKTt4KDQpLGxlKCJceEQ3IixlLm51bU5lZ2F0aXZlSW5mcywiIil9fWZ1bmN0aW9uIF9UdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2Iiw3KSx1KDEsInNwYW4iLDgpLFQoMiwiK1x1MjIxRSIpLGgoKSx1KDMsInNwYW4iLDkpLFQoNCksaCgpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goNCksbGUoIlx4RDciLGUubnVtUG9zaXRpdmVJbmZzLCIiKX19ZnVuY3Rpb24gQ1R0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDcpLHUoMSwic3BhbiIsMTApLFQoMiwiLSIpLGgoKSx1KDMsInNwYW4iLDkpLFQoNCksaCgpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goNCksbGUoIlx4RDciLGUubnVtTmVnYXRpdmVGaW5pdGVzLCIiKX19ZnVuY3Rpb24gTVR0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDcpLHUoMSwic3BhbiIsMTApLFQoMiwiMCIpLGgoKSx1KDMsInNwYW4iLDkpLFQoNCksaCgpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goNCksbGUoIlx4RDciLGUubnVtWmVyb3MsIiIpfX1mdW5jdGlvbiBiVHQobix0KXtpZihuJjEmJih1KDAsImRpdiIsNyksdSgxLCJzcGFuIiwxMCksVCgyLCIrIiksaCgpLHUoMywic3BhbiIsOSksVCg0KSxoKCksaCgpKSxuJjIpe2xldCBlPVMoMik7eCg0KSxsZSgiXHhENyIsZS5udW1Qb3NpdGl2ZUZpbml0ZXMsIiIpfX1mdW5jdGlvbiBPVHQobix0KXtpZihuJjEmJih1KDAsImRpdiIsNSksaygxLHVUdCw1LDEsImRpdiIsNiksaygyLGhUdCw1LDEsImRpdiIsNiksaygzLF9UdCw1LDEsImRpdiIsNiksayg0LENUdCw1LDEsImRpdiIsNiksayg1LE1UdCw1LDEsImRpdiIsNiksayg2LGJUdCw1LDEsImRpdiIsNiksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLFAoIm5nSWYiLGUubnVtTmFOcyE9PXZvaWQgMCYmZS5udW1OYU5zPjApLHgoMSksUCgibmdJZiIsZS5udW1OZWdhdGl2ZUluZnMhPT12b2lkIDAmJmUubnVtTmVnYXRpdmVJbmZzPjApLHgoMSksUCgibmdJZiIsZS5udW1Qb3NpdGl2ZUluZnMhPT12b2lkIDAmJmUubnVtUG9zaXRpdmVJbmZzPjApLHgoMSksUCgibmdJZiIsZS5udW1OZWdhdGl2ZUZpbml0ZXMhPT12b2lkIDAmJmUubnVtTmVnYXRpdmVGaW5pdGVzPjApLHgoMSksUCgibmdJZiIsZS5udW1aZXJvcyE9PXZvaWQgMCYmZS5udW1aZXJvcz4wKSx4KDEpLFAoIm5nSWYiLGUubnVtUG9zaXRpdmVGaW5pdGVzIT09dm9pZCAwJiZlLm51bVBvc2l0aXZlRmluaXRlcz4wKX19dmFyIFBUdD1mdW5jdGlvbihuKXtyZXR1cm5bImNvbnRhaW5lciIsbl19O2Z1bmN0aW9uIHlUdChuLHQpe2lmKG4mMSYmRCgwLCJkZWJ1Zy10ZW5zb3ItZHR5cGUiLDUpLG4mMil7bGV0IGU9UygpO1AoImR0eXBlIixlLmRlYnVnVGVuc29yVmFsdWUuZHR5cGUpfX1mdW5jdGlvbiB4VHQobix0KXtpZihuJjEmJkQoMCwiZGVidWctdGVuc29yLXJhbmsiLDYpLG4mMil7bGV0IGU9UygpO1AoInJhbmsiLGUuZGVidWdUZW5zb3JWYWx1ZS5yYW5rKX19ZnVuY3Rpb24gdlR0KG4sdCl7aWYobiYxJiZEKDAsImRlYnVnLXRlbnNvci1zaGFwZSIsNyksbiYyKXtsZXQgZT1TKCk7UCgic2hhcGUiLGUuZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSl9fWZ1bmN0aW9uIHdUdChuLHQpe2lmKG4mMSYmRCgwLCJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLDgpLG4mMil7bGV0IGU9UygpO1AoImhhc0luZk9yTmFOIixlLmRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4pfX1mdW5jdGlvbiBTVHQobix0KXtpZihuJjEmJkQoMCwiZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIiw5KSxuJjIpe2xldCBlPVMoKTtXaSgic2l6ZSIsZS5kZWJ1Z1RlbnNvclZhbHVlLnNpemUpLFAoIm51bU5lZ2F0aXZlSW5mcyIsZS5kZWJ1Z1RlbnNvclZhbHVlLm51bU5lZ2F0aXZlSW5mcykoIm51bVBvc2l0aXZlSW5mcyIsZS5kZWJ1Z1RlbnNvclZhbHVlLm51bVBvc2l0aXZlSW5mcykoIm51bU5hTnMiLGUuZGVidWdUZW5zb3JWYWx1ZS5udW1OYU5zKSgibnVtTmVnYXRpdmVGaW5pdGVzIixlLmRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVGaW5pdGVzKSgibnVtWmVyb3MiLGUuZGVidWdUZW5zb3JWYWx1ZS5udW1aZXJvcykoIm51bVBvc2l0aXZlRmluaXRlcyIsZS5kZWJ1Z1RlbnNvclZhbHVlLm51bVBvc2l0aXZlRmluaXRlcyl9fXZhciBEWT1gCiAgOmhvc3QgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlOwogICAgaGVpZ2h0OiAxNHB4OwogICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICBtYXJnaW46IDAgMnB4OwogICAgcGFkZGluZzogMXB4IDNweDsKICAgIHdpZHRoOiBtYXgtY29udGVudDsKICB9CmAsQk09Y2xhc3N7fTtCTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxCTSl9O0JNLlx1MDI3NWNtcD16KHt0eXBlOkJNLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItZHR5cGUiXV0saW5wdXRzOntkdHlwZToiZHR5cGUifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmVCgwKSx0JjImJmxlKCIgIixlLmR0eXBlLCIgIil9LHN0eWxlczpbQVldfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEJNLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiZGVidWctdGVuc29yLWR0eXBlIix0ZW1wbGF0ZToiIHt7IGR0eXBlIH19ICIsc3R5bGVzOltEWV19XX1dLG51bGwse2R0eXBlOlt7dHlwZTpkfV19KX0pKCk7dmFyIFZNPWNsYXNze307Vk0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Vk0pfTtWTS5cdTAyNzVjbXA9eih7dHlwZTpWTSxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLXJhbmsiXV0saW5wdXRzOntyYW5rOiJyYW5rIn0sZGVjbHM6MSx2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJlQoMCksdCYyJiZsZSgiICIsZS5yYW5rLCJEICIpfSxzdHlsZXM6W0FZXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhWTSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImRlYnVnLXRlbnNvci1yYW5rIix0ZW1wbGF0ZToiIHt7IHJhbmsgfX1EICIsc3R5bGVzOltEWV19XX1dLG51bGwse3Jhbms6W3t0eXBlOmR9XX0pfSkoKTt2YXIgak09Y2xhc3N7Z2V0IHNoYXBlU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2hhcGUubWFwKHQ9PnQ9PT12b2lkIDA/Ij8iOlN0cmluZyh0KSkuam9pbigiLCIpKyJdIn19O2pNLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGpNKX07ak0uXHUwMjc1Y21wPXooe3R5cGU6ak0sc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci1zaGFwZSJdXSxpbnB1dHM6e3NoYXBlOiJzaGFwZSJ9LGRlY2xzOjEsdmFyczoxLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiZUKDApLHQmMiYmbGUoIiBzaGFwZToiLGUuc2hhcGVTdHJpbmcsIiAiKX0sc3R5bGVzOltBWV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoak0sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3Itc2hhcGUiLHRlbXBsYXRlOiIgc2hhcGU6e3sgc2hhcGVTdHJpbmcgfX0gIixzdHlsZXM6W0RZXX1dfV0sbnVsbCx7c2hhcGU6W3t0eXBlOmR9XX0pfSkoKTt2YXIgVU09Y2xhc3N7Z2V0IGJyZWFrZG93bkV4aXN0cygpe3JldHVybiB0aGlzLm51bU5hTnMhPT12b2lkIDB8fHRoaXMubnVtTmVnYXRpdmVJbmZzIT09dm9pZCAwfHx0aGlzLm51bVBvc2l0aXZlSW5mcyE9PXZvaWQgMHx8dGhpcy5udW1OZWdhdGl2ZUZpbml0ZXMhPT12b2lkIDB8fHRoaXMubnVtWmVyb3MhPT12b2lkIDB8fHRoaXMubnVtUG9zaXRpdmVGaW5pdGVzIT09dm9pZCAwfX07VU0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8VU0pfTtVTS5cdTAyNzVjbXA9eih7dHlwZTpVTSxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIl1dLGlucHV0czp7c2l6ZToic2l6ZSIsbnVtTmFOczoibnVtTmFOcyIsbnVtTmVnYXRpdmVJbmZzOiJudW1OZWdhdGl2ZUluZnMiLG51bVBvc2l0aXZlSW5mczoibnVtUG9zaXRpdmVJbmZzIixudW1OZWdhdGl2ZUZpbml0ZXM6Im51bU5lZ2F0aXZlRmluaXRlcyIsbnVtWmVyb3M6Im51bVplcm9zIixudW1Qb3NpdGl2ZUZpbml0ZXM6Im51bVBvc2l0aXZlRmluaXRlcyJ9LGRlY2xzOjcsdmFyczozLGNvbnN0czpbWzEsInNpemUiXSxbMSwic2l6ZS12YWx1ZSJdLFsiY2xhc3MiLCJicmVhayIsNCwibmdJZiJdLFsiY2xhc3MiLCJicmVha2Rvd24iLDQsIm5nSWYiXSxbMSwiYnJlYWsiXSxbMSwiYnJlYWtkb3duIl0sWyJjbGFzcyIsImNhdGVnb3J5Iiw0LCJuZ0lmIl0sWzEsImNhdGVnb3J5Il0sWzEsImNhdGVnb3J5LXRhZyIsImluZmluaXRlIl0sWzEsImNhdGVnb3J5LWNvdW50Il0sWzEsImNhdGVnb3J5LXRhZyIsImZpbml0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwKSx1KDEsInNwYW4iKSxUKDIsInNpemU6IiksaCgpLHUoMywic3BhbiIsMSksVCg0KSxoKCksaCgpLGsoNSxnVHQsMSwwLCJkaXYiLDIpLGsoNixPVHQsNyw2LCJkaXYiLDMpKSx0JjImJih4KDQpLEllKGUuc2l6ZSkseCgxKSxQKCJuZ0lmIixlLmJyZWFrZG93bkV4aXN0cykseCgxKSxQKCJuZ0lmIixlLmJyZWFrZG93bkV4aXN0cykpfSxkaXJlY3RpdmVzOltYdF0sc3R5bGVzOltgW19uZ2hvc3QtJUNPTVAlXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBtYXJnaW46IDAgMnB4OwogICAgICAgIHBhZGRpbmc6IDFweDsKICAgICAgfQogICAgICAuYnJlYWtbX25nY29udGVudC0lQ09NUCVdIHsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlOwogICAgICAgIHdpZHRoOiAwOwogICAgICB9CiAgICAgIC5zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwogICAgICAgIG1hcmdpbjogMCAzcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQogICAgICAuYnJlYWtkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDExcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7CiAgICAgICAgcGFkZGluZzogMnB4OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KICAgICAgLmNhdGVnb3J5W19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICAgIGhlaWd0aDogMTAwJTsKICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgLmNhdGVnb3J5LXRhZ1tfbmdjb250ZW50LSVDT01QJV0gewogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBwYWRkaW5nOiAwIDJweDsKICAgICAgfQogICAgICAuZmluaXRlW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2FhYTsKICAgICAgICBjb2xvcjogI2ZlZmVmZTsKICAgICAgfQogICAgICAuaW5maW5pdGVbX25nY29udGVudC0lQ09NUCVdIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICB9YF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVU0sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24iLHRlbXBsYXRlOmAKICAgIDxkaXYgY2xhc3M9InNpemUiPgogICAgICA8c3Bhbj5zaXplOjwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InNpemUtdmFsdWUiPnt7IHNpemUgfX08L3NwYW4+CiAgICA8L2Rpdj4KICAgIDxkaXYgKm5nSWY9ImJyZWFrZG93bkV4aXN0cyIgY2xhc3M9ImJyZWFrIj48L2Rpdj4KICAgIDxkaXYgKm5nSWY9ImJyZWFrZG93bkV4aXN0cyIgY2xhc3M9ImJyZWFrZG93biI+CiAgICAgIDxkaXYgKm5nSWY9Im51bU5hTnMgIT09IHVuZGVmaW5lZCAmJiBudW1OYU5zID4gMCIgY2xhc3M9ImNhdGVnb3J5Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGluZmluaXRlIj5OYU48L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LWNvdW50Ij5ceEQ3e3sgbnVtTmFOcyB9fTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYKICAgICAgICAqbmdJZj0ibnVtTmVnYXRpdmVJbmZzICE9PSB1bmRlZmluZWQgJiYgbnVtTmVnYXRpdmVJbmZzID4gMCIKICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiCiAgICAgID4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGluZmluaXRlIj4tXHUyMjFFPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+XHhEN3t7IG51bU5lZ2F0aXZlSW5mcyB9fTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYKICAgICAgICAqbmdJZj0ibnVtUG9zaXRpdmVJbmZzICE9PSB1bmRlZmluZWQgJiYgbnVtUG9zaXRpdmVJbmZzID4gMCIKICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiCiAgICAgID4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGluZmluaXRlIj4rXHUyMjFFPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1jb3VudCI+XHhEN3t7IG51bVBvc2l0aXZlSW5mcyB9fTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYKICAgICAgICAqbmdJZj0ibnVtTmVnYXRpdmVGaW5pdGVzICE9PSB1bmRlZmluZWQgJiYgbnVtTmVnYXRpdmVGaW5pdGVzID4gMCIKICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiCiAgICAgID4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGZpbml0ZSI+LTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPlx4RDd7eyBudW1OZWdhdGl2ZUZpbml0ZXMgfX08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2ICpuZ0lmPSJudW1aZXJvcyAhPT0gdW5kZWZpbmVkICYmIG51bVplcm9zID4gMCIgY2xhc3M9ImNhdGVnb3J5Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGZpbml0ZSI+MDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPlx4RDd7eyBudW1aZXJvcyB9fTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYKICAgICAgICAqbmdJZj0ibnVtUG9zaXRpdmVGaW5pdGVzICE9PSB1bmRlZmluZWQgJiYgbnVtUG9zaXRpdmVGaW5pdGVzID4gMCIKICAgICAgICBjbGFzcz0iY2F0ZWdvcnkiCiAgICAgID4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktdGFnIGZpbml0ZSI+Kzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktY291bnQiPlx4RDd7eyBudW1Qb3NpdGl2ZUZpbml0ZXMgfX08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCxzdHlsZXM6W2AKICAgICAgOmhvc3QgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAwIDJweDsKICAgICAgICBwYWRkaW5nOiAxcHg7CiAgICAgIH0KICAgICAgLmJyZWFrIHsKICAgICAgICBmbGV4LWJhc2lzOiAxMDAlOwogICAgICAgIHdpZHRoOiAwOwogICAgICB9CiAgICAgIC5zaXplIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDExcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7CiAgICAgICAgbWFyZ2luOiAwIDNweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CiAgICAgIC5icmVha2Rvd24gewogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAxMXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CiAgICAgIC5jYXRlZ29yeSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMnB4OwogICAgICAgIGhlaWd0aDogMTAwJTsKICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgLmNhdGVnb3J5LXRhZyB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIHBhZGRpbmc6IDAgMnB4OwogICAgICB9CiAgICAgIC5maW5pdGUgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNhYWE7CiAgICAgICAgY29sb3I6ICNmZWZlZmU7CiAgICAgIH0KICAgICAgLmluZmluaXRlIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICB9CiAgICBgXX1dfV0sbnVsbCx7c2l6ZTpbe3R5cGU6ZH1dLG51bU5hTnM6W3t0eXBlOmR9XSxudW1OZWdhdGl2ZUluZnM6W3t0eXBlOmR9XSxudW1Qb3NpdGl2ZUluZnM6W3t0eXBlOmR9XSxudW1OZWdhdGl2ZUZpbml0ZXM6W3t0eXBlOmR9XSxudW1aZXJvczpbe3R5cGU6ZH1dLG51bVBvc2l0aXZlRmluaXRlczpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBZTT1jbGFzc3tnZXQgaW5mb1N0cmluZygpe3JldHVybiB0aGlzLmhhc0luZk9yTmFOPyJIYXMgXHUyMjFFL05hTiI6Ik5vIFx1MjIxRS9OYU4ifX07WU0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WU0pfTtZTS5cdTAyNzVjbXA9eih7dHlwZTpZTSxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuIl1dLGlucHV0czp7aGFzSW5mT3JOYU46Imhhc0luZk9yTmFOIn0sZGVjbHM6Mix2YXJzOjQsY29uc3RzOltbMywibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwKSxUKDEpLGgoKSksdCYyJiYoUCgibmdDbGFzcyIsYW8oMixQVHQsZS5oYXNJbmZPck5hTj8iaGFzLWluZi1vci1uYW4iOiIiKSkseCgxKSxsZSgiICIsZS5pbmZvU3RyaW5nLCIgIikpfSxkaXJlY3RpdmVzOltqbl0sc3R5bGVzOltgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICM2NjY2NjY7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICAgICAgbWFyZ2luOiAwIDJweDsKICAgICAgICBwYWRkaW5nOiAxcHggM3B4OwogICAgICAgIHdpZHRoOiBtYXgtY29udGVudDsKICAgICAgfQogICAgICAuaGFzLWluZi1vci1uYW5bX25nY29udGVudC0lQ09NUCVdIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICB9YF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWU0sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iLHRlbXBsYXRlOmAKICAgIDxkaXYgW25nQ2xhc3NdPSJbJ2NvbnRhaW5lcicsIGhhc0luZk9yTmFOID8gJ2hhcy1pbmYtb3ItbmFuJyA6ICcnXSI+CiAgICAgIHt7IGluZm9TdHJpbmcgfX0KICAgIDwvZGl2PgogIGAsc3R5bGVzOltgCiAgICAgIC5jb250YWluZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICM2NjY2NjY7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICAgICAgbWFyZ2luOiAwIDJweDsKICAgICAgICBwYWRkaW5nOiAxcHggM3B4OwogICAgICAgIHdpZHRoOiBtYXgtY29udGVudDsKICAgICAgfQogICAgICAuaGFzLWluZi1vci1uYW4gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgIH0KICAgIGBdfV19XSxudWxsLHtoYXNJbmZPck5hTjpbe3R5cGU6ZH1dfSl9KSgpO3ZhciB1bT1jbGFzc3t9O3VtLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHVtKX07dW0uXHUwMjc1Y21wPXooe3R5cGU6dW0sc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci12YWx1ZSJdXSxpbnB1dHM6e2RlYnVnVGVuc29yVmFsdWU6ImRlYnVnVGVuc29yVmFsdWUifSxkZWNsczo1LHZhcnM6NSxjb25zdHM6W1szLCJkdHlwZSIsNCwibmdJZiJdLFszLCJyYW5rIiw0LCJuZ0lmIl0sWzMsInNoYXBlIiw0LCJuZ0lmIl0sWzMsImhhc0luZk9yTmFOIiw0LCJuZ0lmIl0sWzMsInNpemUiLCJudW1OZWdhdGl2ZUluZnMiLCJudW1Qb3NpdGl2ZUluZnMiLCJudW1OYU5zIiwibnVtTmVnYXRpdmVGaW5pdGVzIiwibnVtWmVyb3MiLCJudW1Qb3NpdGl2ZUZpbml0ZXMiLDQsIm5nSWYiXSxbMywiZHR5cGUiXSxbMywicmFuayJdLFszLCJzaGFwZSJdLFszLCJoYXNJbmZPck5hTiJdLFszLCJzaXplIiwibnVtTmVnYXRpdmVJbmZzIiwibnVtUG9zaXRpdmVJbmZzIiwibnVtTmFOcyIsIm51bU5lZ2F0aXZlRmluaXRlcyIsIm51bVplcm9zIiwibnVtUG9zaXRpdmVGaW5pdGVzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoaygwLHlUdCwxLDEsImRlYnVnLXRlbnNvci1kdHlwZSIsMCksaygxLHhUdCwxLDEsImRlYnVnLXRlbnNvci1yYW5rIiwxKSxrKDIsdlR0LDEsMSwiZGVidWctdGVuc29yLXNoYXBlIiwyKSxrKDMsd1R0LDEsMSwiZGVidWctdGVuc29yLWhhcy1pbmYtb3ItbmFuIiwzKSxrKDQsU1R0LDEsNywiZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duIiw0KSksdCYyJiYoUCgibmdJZiIsZS5kZWJ1Z1RlbnNvclZhbHVlLmR0eXBlIT09dm9pZCAwKSx4KDEpLFAoIm5nSWYiLGUuZGVidWdUZW5zb3JWYWx1ZS5yYW5rIT09dm9pZCAwKSx4KDEpLFAoIm5nSWYiLGUuZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSE9PXZvaWQgMCkseCgxKSxQKCJuZ0lmIixlLmRlYnVnVGVuc29yVmFsdWUuaGFzSW5mT3JOYU4hPT12b2lkIDApLHgoMSksUCgibmdJZiIsZS5kZWJ1Z1RlbnNvclZhbHVlLnNpemUhPT12b2lkIDApKX0sZGlyZWN0aXZlczpbWHQsQk0sVk0sak0sWU0sVU1dLHN0eWxlczpbYFtfbmdob3N0LSVDT01QJV0gewogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CiAgICAgIGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93bltfbmdjb250ZW50LSVDT01QJV0gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfWBdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHVtLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiZGVidWctdGVuc29yLXZhbHVlIix0ZW1wbGF0ZTpgCiAgICA8ZGVidWctdGVuc29yLWR0eXBlCiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLmR0eXBlICE9PSB1bmRlZmluZWQiCiAgICAgIFtkdHlwZV09ImRlYnVnVGVuc29yVmFsdWUuZHR5cGUiCiAgICA+CiAgICA8L2RlYnVnLXRlbnNvci1kdHlwZT4KICAgIDxkZWJ1Zy10ZW5zb3ItcmFuawogICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5yYW5rICE9PSB1bmRlZmluZWQiCiAgICAgIFtyYW5rXT0iZGVidWdUZW5zb3JWYWx1ZS5yYW5rIgogICAgPgogICAgPC9kZWJ1Zy10ZW5zb3ItcmFuaz4KICAgIDxkZWJ1Zy10ZW5zb3Itc2hhcGUKICAgICAgKm5nSWY9ImRlYnVnVGVuc29yVmFsdWUuc2hhcGUgIT09IHVuZGVmaW5lZCIKICAgICAgW3NoYXBlXT0iZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSIKICAgID4KICAgIDwvZGVidWctdGVuc29yLXNoYXBlPgogICAgPGRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbgogICAgICAqbmdJZj0iZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTiAhPT0gdW5kZWZpbmVkIgogICAgICBbaGFzSW5mT3JOYU5dPSJkZWJ1Z1RlbnNvclZhbHVlLmhhc0luZk9yTmFOIgogICAgPgogICAgPC9kZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4+CiAgICA8ZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duCiAgICAgICpuZ0lmPSJkZWJ1Z1RlbnNvclZhbHVlLnNpemUgIT09IHVuZGVmaW5lZCIKICAgICAgc2l6ZT0ie3sgZGVidWdUZW5zb3JWYWx1ZS5zaXplIH19IgogICAgICBbbnVtTmVnYXRpdmVJbmZzXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUluZnMiCiAgICAgIFtudW1Qb3NpdGl2ZUluZnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bVBvc2l0aXZlSW5mcyIKICAgICAgW251bU5hTnNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bU5hTnMiCiAgICAgIFtudW1OZWdhdGl2ZUZpbml0ZXNdPSJkZWJ1Z1RlbnNvclZhbHVlLm51bU5lZ2F0aXZlRmluaXRlcyIKICAgICAgW251bVplcm9zXT0iZGVidWdUZW5zb3JWYWx1ZS5udW1aZXJvcyIKICAgICAgW251bVBvc2l0aXZlRmluaXRlc109ImRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVGaW5pdGVzIgogICAgPgogICAgPC9kZWJ1Zy10ZW5zb3ItbnVtZXJpYy1icmVha2Rvd24+CiAgYCxzdHlsZXM6W2AKICAgICAgOmhvc3QgewogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CiAgICAgIGRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICBgXX1dfV0sbnVsbCx7ZGVidWdUZW5zb3JWYWx1ZTpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBSVHQ9ZnVuY3Rpb24obix0KXtyZXR1cm57dGVuc29yRGVidWdNb2RlOm4sYXJyYXk6dH19O2Z1bmN0aW9uIEVUdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwxMiksdSgxLCJkaXYiLDEzKSxUKDIpLGgoKSx1KDMsImRpdiIsMTQpLEQoNCwiZGVidWctdGVuc29yLXZhbHVlIiwxNSksaCgpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPXQuaW5kZXgsaT1TKDMpO3goMiksbGUoIk91dHB1dCBzbG90ICIsbywiOiIpLHgoMiksUCgiZGVidWdUZW5zb3JWYWx1ZSIsaS5wYXJzZURlYnVnVGVuc29yVmFsdWUoaGwoMixSVHQsaS50ZW5zb3JEZWJ1Z01vZGUsZSkpKX19ZnVuY3Rpb24ga1R0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDEwKSxrKDEsRVR0LDUsNSwiZGl2IiwxMSksaCgpKSxuJjIpe2xldCBlPVMoMik7eCgxKSxQKCJuZ0Zvck9mIixlLmRlYnVnVGVuc29yVmFsdWVzKX19ZnVuY3Rpb24gTlR0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiKSx1KDEsImRpdiIpLHUoMiwiZGl2IiwzKSx1KDMsInNwYW4iLDQpLFQoNCwiIE9wOiAiKSxoKCksdSg1LCJzcGFuIiw1KSxUKDYpLGgoKSxoKCksdSg3LCJkaXYiLDMpLHUoOCwic3BhbiIsNCksVCg5LCIgIyBvZiBpbnB1dCB0ZW5zb3JzOiAiKSxoKCksdSgxMCwic3BhbiIsNiksVCgxMSksaCgpLGgoKSx1KDEyLCJkaXYiLDMpLHUoMTMsInNwYW4iLDQpLFQoMTQsIiAjIG9mIG91dHB1dCB0ZW5zb3JzOiAiKSxoKCksdSgxNSwic3BhbiIsNyksVCgxNiksaCgpLHUoMTcsInNwYW4iLDgpLFQoMTgpLGgoKSxoKCksaygxOSxrVHQsMiwxLCJkaXYiLDkpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO3goNiksbGUoIiAiLGUuZm9jdXNlZEV4ZWN1dGlvbkRhdGEub3BfdHlwZSwiICIpLHgoNSksbGUoIiAiLGUuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcz09bnVsbD8wOmUuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcy5sZW5ndGgsIiAiKSx4KDUpLGxlKCIgIixlLmZvY3VzZWRFeGVjdXRpb25EYXRhLm91dHB1dF90ZW5zb3JfaWRzPT1udWxsPzA6ZS5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vdXRwdXRfdGVuc29yX2lkcy5sZW5ndGgsIiAiKSx4KDIpLGxlKCIgKGRlYnVnIG1vZGU6ICIsZS5UZW5zb3JEZWJ1Z01vZGVbZS50ZW5zb3JEZWJ1Z01vZGVdLCIpICIpLHgoMSksUCgibmdJZiIsZS5oYXNEZWJ1Z1RlbnNvclZhbHVlcyl9fWZ1bmN0aW9uIFRUdChuLHQpe312YXIgcDA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnRlbnNvckRlYnVnTW9kZT1wYy5VTlNQRUNJRklFRCx0aGlzLmhhc0RlYnVnVGVuc29yVmFsdWVzPSExLHRoaXMuZGVidWdUZW5zb3JWYWx1ZXM9bnVsbCx0aGlzLmRlYnVnVGVuc29yRHR5cGVzPW51bGwsdGhpcy5UZW5zb3JEZWJ1Z01vZGU9cGMsdGhpcy5wYXJzZURlYnVnVGVuc29yVmFsdWU9TXp9fTtwMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxwMCl9O3AwLlx1MDI3NWNtcD16KHt0eXBlOnAwLHNlbGVjdG9yczpbWyJleGVjdXRpb24tZGF0YS1jb21wb25lbnQiXV0saW5wdXRzOntmb2N1c2VkRXhlY3V0aW9uSW5kZXg6ImZvY3VzZWRFeGVjdXRpb25JbmRleCIsZm9jdXNlZEV4ZWN1dGlvbkRhdGE6ImZvY3VzZWRFeGVjdXRpb25EYXRhIix0ZW5zb3JEZWJ1Z01vZGU6InRlbnNvckRlYnVnTW9kZSIsaGFzRGVidWdUZW5zb3JWYWx1ZXM6Imhhc0RlYnVnVGVuc29yVmFsdWVzIixkZWJ1Z1RlbnNvclZhbHVlczoiZGVidWdUZW5zb3JWYWx1ZXMiLGRlYnVnVGVuc29yRHR5cGVzOiJkZWJ1Z1RlbnNvckR0eXBlcyJ9LGRlY2xzOjcsdmFyczozLGNvbnN0czpbWzEsImZvY3VzLWV4ZWN1dGlvbi1jb250YWluZXIiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJsb2FkaW5nX3NlY3Rpb24iLCIiXSxbMSwiZXhlY3V0aW9uLWRhdGEtZmllbGQiXSxbMSwiZXhlY3V0aW9uLWRhdGEta2V5Il0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIiwib3AtdHlwZSJdLFsxLCJleGVjdXRpb24tZGF0YS12YWx1ZSIsImlucHV0LXRlbnNvcnMiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiLCJvdXRwdXQtdGVuc29ycyJdLFsxLCJleGVjdXRpb24tZGF0YS12YWx1ZSJdLFsiY2xhc3MiLCJvdXRwdXQtc2xvdHMiLDQsIm5nSWYiXSxbMSwib3V0cHV0LXNsb3RzIl0sWyJjbGFzcyIsIm91dHB1dC1zbG90LWNvbnRhaW5lciIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsIm91dHB1dC1zbG90LWNvbnRhaW5lciJdLFsxLCJvdXRwdXQtc2xvdC1udW1iZXIiXSxbMSwib3V0cHV0LXNsb3QtZGVidWctdGVuc29yLXZhbHVlIl0sWzMsImRlYnVnVGVuc29yVmFsdWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImRpdiIsMCksdSgxLCJkaXYiKSx1KDIsInNwYW4iKSxUKDMpLGgoKSxoKCksayg0LE5UdCwyMCw1LCJkaXYiLDEpLGsoNSxUVHQsMCwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHhuKSxoKCkpLHQmMil7bGV0IG89d2UoNik7eCgzKSxsZSgiIFB5dGhvbiBFeGVjdXRpb24gIyIsZS5mb2N1c2VkRXhlY3V0aW9uSW5kZXgsIiAiKSx4KDEpLFAoIm5nSWYiLGUuZm9jdXNlZEV4ZWN1dGlvbkRhdGEhPT1udWxsKSgibmdJZkVsc2UiLG8pfX0sZGlyZWN0aXZlczpbWHQsbW4sdW1dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmRlYnVnLXRlbnNvci12YWx1ZXMtdGFibGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCV9LmRlYnVnLXRlbnNvci12YWx1ZXMtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICMwMDA7dGV4dC1hbGlnbjpsZWZ0fS5kZWJ1Zy10ZW5zb3ItdmFsdWVzLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmxlZnR9LmV4ZWN1dGlvbi1kYXRhLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9LmV4ZWN1dGlvbi1kYXRhLWtleVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjEyMHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MTIwcHh9LmV4ZWN1dGlvbi1kYXRhLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tbGVmdDoxMHB4fS5mb2N1cy1leGVjdXRpb24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNjODA7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1zaXplOjEycHg7aGVpZ2h0OjEyMHB4O3BhZGRpbmc6NXB4O3dpZHRoOjM2MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5mb2N1cy1leGVjdXRpb24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZvY3VzLWV4ZWN1dGlvbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2U2NTEwMH0ub3V0cHV0LXNsb3RzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjBweDtvdmVyZmxvdy14OmF1dG87b3ZlcmZsb3cteTphdXRvfS5vdXRwdXQtc2xvdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7bWFyZ2luLXRvcDo1cHg7cGFkZGluZzoycHggMDt2ZXJ0aWNhbC1hbGlnbjp0b3B9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm91dHB1dC1zbG90LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vdXRwdXQtc2xvdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9Lm91dHB1dC1zbG90LW51bWJlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jaztmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZX0ub3V0cHV0LXNsb3QtZGVidWctdGVuc29yLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO21hcmdpbjozcHggMCAzcHggMzBweH0ub3V0cHV0LXRlbnNvcnNbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6NXB4fSddfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHAwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9leGVjdXRpb25fZGF0YV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9leGVjdXRpb25fZGF0YV9jb21wb25lbnQuY3NzIl19XX1dLG51bGwse2ZvY3VzZWRFeGVjdXRpb25JbmRleDpbe3R5cGU6ZH1dLGZvY3VzZWRFeGVjdXRpb25EYXRhOlt7dHlwZTpkfV0sdGVuc29yRGVidWdNb2RlOlt7dHlwZTpkfV0saGFzRGVidWdUZW5zb3JWYWx1ZXM6W3t0eXBlOmR9XSxkZWJ1Z1RlbnNvclZhbHVlczpbe3R5cGU6ZH1dLGRlYnVnVGVuc29yRHR5cGVzOlt7dHlwZTpkfV19KX0pKCk7dmFyIGRsdD0iVW5rbm93biBkdHlwZSIsb2Q9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGEkPXRoaXMuc3RvcmUucGlwZSh6ZShuMSkpLHRoaXMudGVuc29yRGVidWdNb2RlJD10aGlzLnN0b3JlLnBpcGUoemUoY3QobjEsZT0+ZT09PW51bGw/cGMuVU5TUEVDSUZJRUQ6ZS50ZW5zb3JfZGVidWdfbW9kZSkpKSx0aGlzLmhhc0RlYnVnVGVuc29yVmFsdWVzJD10aGlzLnN0b3JlLnBpcGUoemUoY3QobjEsZT0+e2lmKGU9PT1udWxsfHxlLmRlYnVnX3RlbnNvcl92YWx1ZXM9PT1udWxsKXJldHVybiExO2ZvcihsZXQgbyBvZiBlLmRlYnVnX3RlbnNvcl92YWx1ZXMpaWYobyE9PW51bGwmJm8ubGVuZ3RoPjApcmV0dXJuITA7cmV0dXJuITF9KSkpLHRoaXMuZGVidWdUZW5zb3JWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZSh6ZShjdChuMSxlPT5lPT09bnVsbD9udWxsOmUuZGVidWdfdGVuc29yX3ZhbHVlcykpKSx0aGlzLmRlYnVnVGVuc29yRHR5cGVzJD10aGlzLnN0b3JlLnBpcGUoemUoY3QobjEsZT0+e2lmKGU9PT1udWxsfHxlLmRlYnVnX3RlbnNvcl92YWx1ZXM9PT1udWxsfHxlLnRlbnNvcl9kZWJ1Z19tb2RlIT09cGMuRlVMTF9IRUFMVEgmJmUudGVuc29yX2RlYnVnX21vZGUhPT1wYy5TSEFQRSlyZXR1cm4gbnVsbDtsZXQgbz1bXTtmb3IobGV0IGkgb2YgZS5kZWJ1Z190ZW5zb3JfdmFsdWVzKWlmKGk9PT1udWxsKW8ucHVzaChkbHQpO2Vsc2V7bGV0IGE9U3RyaW5nKGUudGVuc29yX2RlYnVnX21vZGU9PT1wYy5GVUxMX0hFQUxUSD9pWzJdOmlbMV0pO28ucHVzaChGa1thXXx8ZGx0KX1yZXR1cm4gb30pKSl9fTtvZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxvZCkodihzdCkpfTtvZC5cdTAyNzVjbXA9eih7dHlwZTpvZCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItZXhlY3V0aW9uLWRhdGEiXV0saW5wdXRzOntmb2N1c2VkRXhlY3V0aW9uSW5kZXg6ImZvY3VzZWRFeGVjdXRpb25JbmRleCJ9LGRlY2xzOjYsdmFyczoxNixjb25zdHM6W1szLCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLCJmb2N1c2VkRXhlY3V0aW9uRGF0YSIsInRlbnNvckRlYnVnTW9kZSIsImhhc0RlYnVnVGVuc29yVmFsdWVzIiwiZGVidWdUZW5zb3JWYWx1ZXMiLCJkZWJ1Z1RlbnNvckR0eXBlcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwiZXhlY3V0aW9uLWRhdGEtY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksWCg1LCJhc3luYyIpKSx0JjImJlAoImZvY3VzZWRFeGVjdXRpb25JbmRleCIsZS5mb2N1c2VkRXhlY3V0aW9uSW5kZXgpKCJmb2N1c2VkRXhlY3V0aW9uRGF0YSIsUSgxLDYsZS5mb2N1c2VkRXhlY3V0aW9uRGF0YSQpKSgidGVuc29yRGVidWdNb2RlIixRKDIsOCxlLnRlbnNvckRlYnVnTW9kZSQpKSgiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLFEoMywxMCxlLmhhc0RlYnVnVGVuc29yVmFsdWVzJCkpKCJkZWJ1Z1RlbnNvclZhbHVlcyIsUSg0LDEyLGUuZGVidWdUZW5zb3JWYWx1ZXMkKSkoImRlYnVnVGVuc29yRHR5cGVzIixRKDUsMTQsZS5kZWJ1Z1RlbnNvckR0eXBlcyQpKX0sZGlyZWN0aXZlczpbcDBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG9kLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItZXhlY3V0aW9uLWRhdGEiLHRlbXBsYXRlOmAKICAgIDxleGVjdXRpb24tZGF0YS1jb21wb25lbnQKICAgICAgW2ZvY3VzZWRFeGVjdXRpb25JbmRleF09ImZvY3VzZWRFeGVjdXRpb25JbmRleCIKICAgICAgW2ZvY3VzZWRFeGVjdXRpb25EYXRhXT0iZm9jdXNlZEV4ZWN1dGlvbkRhdGEkIHwgYXN5bmMiCiAgICAgIFt0ZW5zb3JEZWJ1Z01vZGVdPSJ0ZW5zb3JEZWJ1Z01vZGUkIHwgYXN5bmMiCiAgICAgIFtoYXNEZWJ1Z1RlbnNvclZhbHVlc109Imhhc0RlYnVnVGVuc29yVmFsdWVzJCB8IGFzeW5jIgogICAgICBbZGVidWdUZW5zb3JWYWx1ZXNdPSJkZWJ1Z1RlbnNvclZhbHVlcyQgfCBhc3luYyIKICAgICAgW2RlYnVnVGVuc29yRHR5cGVzXT0iZGVidWdUZW5zb3JEdHlwZXMkIHwgYXN5bmMiCiAgICA+PC9leGVjdXRpb24tZGF0YS1jb21wb25lbnQ+CiAgYH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se2ZvY3VzZWRFeGVjdXRpb25JbmRleDpbe3R5cGU6ZH1dfSl9KSgpO2Z1bmN0aW9uIElUdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsIm1hdC1zbGlkZXIiLDExKSxBKCJpbnB1dCIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25TbGlkZXJDaGFuZ2UuZW1pdChpLnZhbHVlKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoMik7UCgibWluIiwwKSgibWF4IixlLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0KSgidmFsdWUiLGUuc2Nyb2xsQmVnaW5JbmRleCl9fWZ1bmN0aW9uIHpUdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsNiksdSgxLCJidXR0b24iLDcpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKCkub25OYXZpZ2F0ZUxlZnQuZW1pdCgpfSksVCgyLCIgPCAiKSxoKCksdSgzLCJkaXYiLDgpLFQoNCksaCgpLHUoNSwiYnV0dG9uIiw5KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLm9uTmF2aWdhdGVSaWdodC5lbWl0KCl9KSxUKDYsIiA+ICIpLGgoKSxrKDcsSVR0LDEsMywibWF0LXNsaWRlciIsMTApLGgoKX1pZihuJjIpe2xldCBlPVMoKTt4KDQpLFZUKCIgIixlLnNjcm9sbEJlZ2luSW5kZXgsIiB+ICIsZS5zY3JvbGxCZWdpbkluZGV4K2UuZGlzcGxheUNvdW50LTEsIiBvZiAiLGUubnVtRXhlY3V0aW9ucywiICIpLHgoMyksUCgibmdJZiIsZS5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdD4wKX19dmFyIEhUdD1mdW5jdGlvbihuLHQsZSl7cmV0dXJuW24sdCxlXX07ZnVuY3Rpb24gRlR0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2IiwxNCksQSgiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGE9T3QoZSkuaW5kZXg7cmV0dXJuIFMoMikub25FeGVjdXRpb25EaWdlc3RDbGlja2VkLmVtaXQoYSl9KSx1KDEsImRpdiIsMTUpLFQoMiksaCgpLGgoKX1pZihuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89dC5pbmRleCxpPVMoMik7eCgxKSxXaSgidGl0bGUiLGUub3BfdHlwZSksUCgibmdDbGFzcyIsakIoMyxIVHQsZS5pc19ncmFwaD8iZnVuYy1ncmFwaC1leGVjdXRpb24iOiIiLG89PT1pLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXg/ImZvY3VzZWQiOiIiLGkuZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzW29dfHwiIikpLHgoMSksbGUoIiAiLGUuc2hvcnRfb3BfdHlwZSwiICIpfX1mdW5jdGlvbiBMVHQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMTIpLGsoMSxGVHQsMyw3LCJkaXYiLDEzKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMSksUCgibmdGb3JPZiIsZS5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyl9fWZ1bmN0aW9uIEJUdChuLHQpe2lmKG4mMSYmKEVuKDApLEQoMSwidGYtZGVidWdnZXItdjItZXhlY3V0aW9uLWRhdGEiLDE2KSxrbigpKSxuJjIpe2xldCBlPVMoKTt4KDEpLFAoImZvY3VzZWRFeGVjdXRpb25JbmRleCIsZS5mb2N1c2VkRXhlY3V0aW9uSW5kZXgpfX12YXIgZDA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmFjdGl2ZVJ1bklkPW51bGwsdGhpcy5sb2FkaW5nTnVtRXhlY3V0aW9ucz0hMSx0aGlzLm51bUV4ZWN1dGlvbnM9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXg9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0PTAsdGhpcy5wYWdlU2l6ZT0wLHRoaXMuZGlzcGxheUNvdW50PTAsdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cz1bXSx0aGlzLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcz1bXSx0aGlzLmZvY3VzZWRFeGVjdXRpb25JbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGE9bnVsbCx0aGlzLm9uTmF2aWdhdGVMZWZ0PW5ldyAkLHRoaXMub25OYXZpZ2F0ZVJpZ2h0PW5ldyAkLHRoaXMub25FeGVjdXRpb25EaWdlc3RDbGlja2VkPW5ldyAkLHRoaXMub25TbGlkZXJDaGFuZ2U9bmV3ICR9fTtkMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxkMCl9O2QwLlx1MDI3NWNtcD16KHt0eXBlOmQwLHNlbGVjdG9yczpbWyJ0aW1lbGluZS1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVSdW5JZDoiYWN0aXZlUnVuSWQiLGxvYWRpbmdOdW1FeGVjdXRpb25zOiJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsbnVtRXhlY3V0aW9uczoibnVtRXhlY3V0aW9ucyIsc2Nyb2xsQmVnaW5JbmRleDoic2Nyb2xsQmVnaW5JbmRleCIsc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQ6InNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0IixwYWdlU2l6ZToicGFnZVNpemUiLGRpc3BsYXlDb3VudDoiZGlzcGxheUNvdW50IixkaXNwbGF5RXhlY3V0aW9uRGlnZXN0czoiZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMiLGRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlczoiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIixmb2N1c2VkRXhlY3V0aW9uSW5kZXg6ImZvY3VzZWRFeGVjdXRpb25JbmRleCIsZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCIsZm9jdXNlZEV4ZWN1dGlvbkRhdGE6ImZvY3VzZWRFeGVjdXRpb25EYXRhIn0sb3V0cHV0czp7b25OYXZpZ2F0ZUxlZnQ6Im9uTmF2aWdhdGVMZWZ0Iixvbk5hdmlnYXRlUmlnaHQ6Im9uTmF2aWdhdGVSaWdodCIsb25FeGVjdXRpb25EaWdlc3RDbGlja2VkOiJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQiLG9uU2xpZGVyQ2hhbmdlOiJvblNsaWRlckNoYW5nZSJ9LGRlY2xzOjksdmFyczo0LGNvbnN0czpbWzEsInRpbWVsaW5lLXRpdGxlIl0sWzEsImV4ZWN1dGlvbi1jb3VudCJdLFsxLCJ0b3AtbGV2ZWwtZXhlY3V0aW9ucyJdLFsiY2xhc3MiLCJuYXZpZ2F0aW9uLXNlY3Rpb24iLDQsIm5nSWYiXSxbImNsYXNzIiwiZXhlY3V0aW9uLXRpbWVsaW5lIiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbMSwibmF2aWdhdGlvbi1zZWN0aW9uIl0sWyJtYXQtYnV0dG9uIiwiIiwxLCJuYXZpZ2F0aW9uLWJ1dHRvbi1sZWZ0IiwzLCJjbGljayJdLFsxLCJuYXZpZ2F0aW9uLXBvc2l0aW9uLWluZm8iXSxbIm1hdC1idXR0b24iLCIiLDEsIm5hdmlnYXRpb24tYnV0dG9uLXJpZ2h0IiwzLCJjbGljayJdLFsiY2xhc3MiLCJ0aW1lbGluZS1zbGlkZXIiLCJzdGVwIiwiMSIsMywibWluIiwibWF4IiwidmFsdWUiLCJpbnB1dCIsNCwibmdJZiJdLFsic3RlcCIsIjEiLDEsInRpbWVsaW5lLXNsaWRlciIsMywibWluIiwibWF4IiwidmFsdWUiLCJpbnB1dCJdLFsxLCJleGVjdXRpb24tdGltZWxpbmUiXSxbMywiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJjbGljayJdLFsxLCJleGVjdXRpb24tZGlnZXN0IiwzLCJuZ0NsYXNzIiwidGl0bGUiXSxbMywiZm9jdXNlZEV4ZWN1dGlvbkluZGV4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiKSx1KDEsImRpdiIsMCksVCgyLCIgUHl0aG9uIEV4ZWN1dGlvbiBUaW1lbGluZSAiKSx1KDMsInNwYW4iLDEpLFQoNCksaCgpLGgoKSx1KDUsImRpdiIsMiksayg2LHpUdCw4LDQsImRpdiIsMyksayg3LExUdCwyLDEsImRpdiIsNCksayg4LEJUdCwyLDEsIm5nLWNvbnRhaW5lciIsNSksaCgpLGgoKSksdCYyJiYoeCg0KSxsZSgiICgiLGUubnVtRXhlY3V0aW9ucywiKSAiKSx4KDIpLFAoIm5nSWYiLGUubnVtRXhlY3V0aW9ucykseCgxKSxQKCJuZ0lmIixlLm51bUV4ZWN1dGlvbnMpLHgoMSksUCgibmdJZiIsZS5hY3RpdmVSdW5JZCE9PW51bGwmJmUuZm9jdXNlZEV4ZWN1dGlvbkluZGV4IT09bnVsbCkpfSxkaXJlY3RpdmVzOltYdCxmbixZcixtbixqbixvZF0sc3R5bGVzOltgLmV4ZWN1dGlvbi1kaWdlc3RbX25nY29udGVudC0lQ09NUCVdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4OwogIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7CiAgY29sb3I6ICM0MjUwNjY7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMTBweDsKICBoZWlnaHQ6IDE1cHg7CiAgcGFkZGluZzogMXB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIHdpZHRoOiAxMnB4Owp9CgouZXhlY3V0aW9uLWRpZ2VzdC5mdW5jLWdyYXBoLWV4ZWN1dGlvbltfbmdjb250ZW50LSVDT01QJV0gewogIGJhY2tncm91bmQtY29sb3I6ICNjN2RiZjU7CiAgY29sb3I6ICM0ZTU2NjQ7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi5leGVjdXRpb24tZGlnZXN0LmZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZkNGIzOwogIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5leGVjdXRpb24tZGlnZXN0LkluZk5hbkFsZXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjsKICBjb2xvcjogI2ZmZjsKfQoKCi5leGVjdXRpb24tZGlnZXN0W19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7CiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLmV4ZWN1dGlvbi10aW1lbGluZVtfbmdjb250ZW50LSVDT01QJV0gewogIGRpc3BsYXk6IGZsZXg7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgd2lkdGg6IDEwMCU7CiAgbWFyZ2luLXRvcDogNXB4OwogIG1hcmdpbi1ib3R0b206IDVweDsKfQoKLnRpbWVsaW5lLXNsaWRlcltfbmdjb250ZW50LSVDT01QJV0gewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDQ4cHg7CiAgbGVmdDogMzQwcHg7IAogIHBhZGRpbmc6IDA7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHJpZ2h0OiA0MHB4Owp9CgogIC50aW1lbGluZS1zbGlkZXIgLm1hdC1zbGlkZXItdGh1bWIgewogIGJvcmRlci1yYWRpdXM6IDVweDsKICByaWdodDogLTQwcHg7CiAgd2lkdGg6IDgwcHg7Cn0KCgoubmF2aWdhdGlvbi1wb3NpdGlvbi1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgZm9udC1zaXplOiAxNHB4OwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgbWF4LXdpZHRoOiAyMDBweDsKICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLm5hdmlnYXRpb24tc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0gewogIGhlaWdodDogNDhweDsKICBsaW5lLWhlaWdodDogNDhweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogMTAwJTsKfWBdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGQwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGltZWxpbmUtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi90aW1lbGluZV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi90aW1lbGluZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7YWN0aXZlUnVuSWQ6W3t0eXBlOmR9XSxsb2FkaW5nTnVtRXhlY3V0aW9uczpbe3R5cGU6ZH1dLG51bUV4ZWN1dGlvbnM6W3t0eXBlOmR9XSxzY3JvbGxCZWdpbkluZGV4Olt7dHlwZTpkfV0sc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQ6W3t0eXBlOmR9XSxwYWdlU2l6ZTpbe3R5cGU6ZH1dLGRpc3BsYXlDb3VudDpbe3R5cGU6ZH1dLGRpc3BsYXlFeGVjdXRpb25EaWdlc3RzOlt7dHlwZTpkfV0sZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzOlt7dHlwZTpkfV0sZm9jdXNlZEV4ZWN1dGlvbkluZGV4Olt7dHlwZTpkfV0sZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleDpbe3R5cGU6ZH1dLGZvY3VzZWRFeGVjdXRpb25EYXRhOlt7dHlwZTpkfV0sb25OYXZpZ2F0ZUxlZnQ6W3t0eXBlOkJ9XSxvbk5hdmlnYXRlUmlnaHQ6W3t0eXBlOkJ9XSxvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQ6W3t0eXBlOkJ9XSxvblNsaWRlckNoYW5nZTpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBqVHQ9WyJfX2ZvcndhcmRfIiwiX19iYWNrd2FyZF8iLCJfX2luZmVyZW5jZV8iXTtmdW5jdGlvbiBVVHQobix0PTEpe2lmKCFuKXJldHVybntvcF90eXBlOiIoTi9BKSIsc2hvcnRfb3BfdHlwZToiLi4iLGlzX2dyYXBoOiExfTtsZXQgZT1qVHQuZmlsdGVyKG89Pm4ub3BfdHlwZS5zdGFydHNXaXRoKG8pKTtpZihlLmxlbmd0aCl7bGV0IG89bi5vcF90eXBlLnNsaWNlKGVbMF0ubGVuZ3RoKTtyZXR1cm57b3BfdHlwZTpuLm9wX3R5cGUsc2hvcnRfb3BfdHlwZTpvLnNsaWNlKDAsdCksaXNfZ3JhcGg6ITB9fWVsc2UgcmV0dXJue29wX3R5cGU6bi5vcF90eXBlLHNob3J0X29wX3R5cGU6bi5vcF90eXBlLnNsaWNlKDAsdCksaXNfZ3JhcGg6ITF9fXZhciBpZD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVSdW5JZCQ9dGhpcy5zdG9yZS5waXBlKHplKGdtKSksdGhpcy5sb2FkaW5nTnVtRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKHplKGN0KGR6LGU9PmUuc3RhdGU9PUt0LkxPQURJTkcpKSksdGhpcy5zY3JvbGxCZWdpbkluZGV4JD10aGlzLnN0b3JlLnBpcGUoemUoRGspKSx0aGlzLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0JD10aGlzLnN0b3JlLnBpcGUoemUoY3QoY3gsbjIsKGUsbyk9Pk1hdGgubWF4KDAsZS1vKSkpKSx0aGlzLnBhZ2VTaXplJD10aGlzLnN0b3JlLnBpcGUoemUoZTIpKSx0aGlzLmRpc3BsYXlDb3VudCQ9dGhpcy5zdG9yZS5waXBlKHplKG4yKSksdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQ9dGhpcy5zdG9yZS5waXBlKHplKGN0KFpzdCxlPT5lLm1hcChvPT5VVHQobykpKSkpLHRoaXMuZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzJD10aGlzLnN0b3JlLnBpcGUoemUob2x0KSksdGhpcy5mb2N1c2VkRXhlY3V0aW9uSW5kZXgkPXRoaXMuc3RvcmUucGlwZSh6ZShTWSkpLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCQ9dGhpcy5zdG9yZS5waXBlKHplKGlsdCkpLHRoaXMubnVtRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKHplKGN4KSl9b25OYXZpZ2F0ZUxlZnQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFkzKCkpfW9uTmF2aWdhdGVSaWdodCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goRzMoKSl9b25FeGVjdXRpb25EaWdlc3RDbGlja2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocTMoe2Rpc3BsYXlJbmRleDp0fSkpfW9uU2xpZGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVzMoe2luZGV4OnR9KSl9fTtpZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxpZCkodihzdCkpfTtpZC5cdTAyNzVjbXA9eih7dHlwZTppZCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItdGltZWxpbmUiXV0sZGVjbHM6MTIsdmFyczozMyxjb25zdHM6W1szLCJhY3RpdmVSdW5JZCIsImxvYWRpbmdOdW1FeGVjdXRpb25zIiwibnVtRXhlY3V0aW9ucyIsInNjcm9sbEJlZ2luSW5kZXgiLCJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCIsInBhZ2VTaXplIiwiZGlzcGxheUNvdW50IiwiZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMiLCJkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMiLCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLCJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4Iiwib25OYXZpZ2F0ZUxlZnQiLCJvbk5hdmlnYXRlUmlnaHQiLCJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQiLCJvblNsaWRlckNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwidGltZWxpbmUtY29tcG9uZW50IiwwKSxBKCJvbk5hdmlnYXRlTGVmdCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbk5hdmlnYXRlTGVmdCgpfSkoIm9uTmF2aWdhdGVSaWdodCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbk5hdmlnYXRlUmlnaHQoKX0pKCJvbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZChpKX0pKCJvblNsaWRlckNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25TbGlkZXJDaGFuZ2UoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksWCg1LCJhc3luYyIpLFgoNiwiYXN5bmMiKSxYKDcsImFzeW5jIiksWCg4LCJhc3luYyIpLFgoOSwiYXN5bmMiKSxYKDEwLCJhc3luYyIpLFgoMTEsImFzeW5jIiksaCgpKSx0JjImJlAoImFjdGl2ZVJ1bklkIixRKDEsMTEsZS5hY3RpdmVSdW5JZCQpKSgibG9hZGluZ051bUV4ZWN1dGlvbnMiLFEoMiwxMyxlLmxvYWRpbmdOdW1FeGVjdXRpb25zJCkpKCJudW1FeGVjdXRpb25zIixRKDMsMTUsZS5udW1FeGVjdXRpb25zJCkpKCJzY3JvbGxCZWdpbkluZGV4IixRKDQsMTcsZS5zY3JvbGxCZWdpbkluZGV4JCkpKCJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCIsUSg1LDE5LGUuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQkKSkoInBhZ2VTaXplIixRKDYsMjEsZS5wYWdlU2l6ZSQpKSgiZGlzcGxheUNvdW50IixRKDcsMjMsZS5kaXNwbGF5Q291bnQkKSkoImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIixRKDgsMjUsZS5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQpKSgiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIixRKDksMjcsZS5kaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkKSkoImZvY3VzZWRFeGVjdXRpb25JbmRleCIsUSgxMCwyOSxlLmZvY3VzZWRFeGVjdXRpb25JbmRleCQpKSgiZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCIsUSgxMSwzMSxlLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkKSl9LGRpcmVjdGl2ZXM6W2QwXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhpZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIix0ZW1wbGF0ZTpgCiAgICA8dGltZWxpbmUtY29tcG9uZW50CiAgICAgIFthY3RpdmVSdW5JZF09ImFjdGl2ZVJ1bklkJCB8IGFzeW5jIgogICAgICBbbG9hZGluZ051bUV4ZWN1dGlvbnNdPSJsb2FkaW5nTnVtRXhlY3V0aW9ucyQgfCBhc3luYyIKICAgICAgW251bUV4ZWN1dGlvbnNdPSJudW1FeGVjdXRpb25zJCB8IGFzeW5jIgogICAgICBbc2Nyb2xsQmVnaW5JbmRleF09InNjcm9sbEJlZ2luSW5kZXgkIHwgYXN5bmMiCiAgICAgIFtzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdF09InNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0JCB8IGFzeW5jIgogICAgICBbcGFnZVNpemVdPSJwYWdlU2l6ZSQgfCBhc3luYyIKICAgICAgW2Rpc3BsYXlDb3VudF09ImRpc3BsYXlDb3VudCQgfCBhc3luYyIKICAgICAgW2Rpc3BsYXlFeGVjdXRpb25EaWdlc3RzXT0iZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMkIHwgYXN5bmMiCiAgICAgIFtkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXNdPSJkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkIHwgYXN5bmMiCiAgICAgIFtmb2N1c2VkRXhlY3V0aW9uSW5kZXhdPSJmb2N1c2VkRXhlY3V0aW9uSW5kZXgkIHwgYXN5bmMiCiAgICAgIFtmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4XT0iZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCQgfCBhc3luYyIKICAgICAgKG9uTmF2aWdhdGVMZWZ0KT0ib25OYXZpZ2F0ZUxlZnQoKSIKICAgICAgKG9uTmF2aWdhdGVSaWdodCk9Im9uTmF2aWdhdGVSaWdodCgpIgogICAgICAob25FeGVjdXRpb25EaWdlc3RDbGlja2VkKT0ib25FeGVjdXRpb25EaWdlc3RDbGlja2VkKCRldmVudCkiCiAgICAgIChvblNsaWRlckNoYW5nZSk9Im9uU2xpZGVyQ2hhbmdlKCRldmVudCkiCiAgICA+PC90aW1lbGluZS1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gR1R0KG4sdCl7biYxJiYodSgwLCJzcGFuIiksVCgxLCIgT3V0cHV0ICIpLGgoKSl9ZnVuY3Rpb24gV1R0KG4sdCl7biYxJiYodSgwLCJzcGFuIiksVCgxLCIgSW5wdXQgIiksaCgpKX1mdW5jdGlvbiBxVHQobix0KXtpZihuJjEmJih1KDAsImRpdiIsNiksdSgxLCJzcGFuIiw3KSxrKDIsR1R0LDIsMCwic3BhbiIsOCksaygzLFdUdCwyLDAsInNwYW4iLDgpLGgoKSxUKDQpLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgxKSxQKCJuZ1N3aXRjaCIsZS5raW5kKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsImlucHV0IikseCgxKSxQKCJuZ1N3aXRjaENhc2UiLCJjb25zdW1lciIpLHgoMSksbGUoIiBzbG90OiAiLGUuc2xvdCwiICIpfX1mdW5jdGlvbiBaVHQobix0KXtpZihuJjEmJih1KDAsImRpdiIsOSksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMSksbGUoIiAiLGUub3BEYXRhLm9wX3R5cGUsIiAiKX19ZnVuY3Rpb24gWFR0KG4sdCl7biYxJiYodSgwLCJzcGFuIiwxMCksVCgxLCIgKE9wIGluZm8gdW5hdmFpbGFibGUuKSAiKSxoKCkpfXZhciBRVHQ9ZnVuY3Rpb24obil7cmV0dXJuW25dfSxnMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub25PcE5hbWVDbGljaz1uZXcgJH19O2cwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGcwKX07ZzAuXHUwMjc1Y21wPXooe3R5cGU6ZzAsc2VsZWN0b3JzOltbImdyYXBoLW9wIl1dLGlucHV0czp7a2luZDoia2luZCIsb3BOYW1lOiJvcE5hbWUiLHNsb3Q6InNsb3QiLG9wRGF0YToib3BEYXRhIn0sb3V0cHV0czp7b25PcE5hbWVDbGljazoib25PcE5hbWVDbGljayJ9LGRlY2xzOjksdmFyczo3LGNvbnN0czpbWzEsIm9wLWNvbnRhaW5lciJdLFsxLCJpbnB1dC10ZW5zb3ItbmFtZSJdLFsxLCJvcC1uYW1lIiwzLCJuZ0NsYXNzIiwiY2xpY2siXSxbImNsYXNzIiwic2xvdCIsNCwibmdJZiJdLFsiY2xhc3MiLCJvcC10eXBlIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm9wSW5mb01pc3NpbmciLCIiXSxbMSwic2xvdCJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMSwib3AtdHlwZSJdLFsxLCJvcC1pbmZvLW1pc3NpbmciXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImJ1dHRvbiIsMCksdSgxLCJkaXYiLDEpLHUoMiwiYnV0dG9uIiwyKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbk9wTmFtZUNsaWNrLmVtaXQoe29wX25hbWU6ZS5vcE5hbWV9KX0pLHUoMywic3BhbiIpLFQoNCksaCgpLGgoKSxrKDUscVR0LDUsNCwiZGl2IiwzKSxoKCksayg2LFpUdCwyLDEsImRpdiIsNCksayg3LFhUdCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDUseG4pLGgoKSksdCYyKXtsZXQgbz13ZSg4KTt4KDIpLFAoIm5nQ2xhc3MiLGFvKDUsUVR0LGUua2luZD09PSJzZWxmIj8ic2VsZi1vcC1uYW1lIjoiIikpLHgoMiksSWUoZS5vcE5hbWUpLHgoMSksUCgibmdJZiIsZS5raW5kIT09InNlbGYiKSx4KDEpLFAoIm5nSWYiLGUub3BEYXRhIT09dm9pZCAwKSgibmdJZkVsc2UiLG8pfX0sZGlyZWN0aXZlczpbam4sWHQsR28sdWldLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdH0ub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MnB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNoYWRvdzoxcHggM3B4ICNlZWU7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOjAgNXB4IDAgMDtwYWRkaW5nOjJweCA2cHg7dGV4dC1hbGlnbjpyaWdodDt3aWR0aDoyMDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjJweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjFweCAzcHggIzc1NzU3NX0ub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tvdXRsaW5lOjB9Lm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Ym9yZGVyOjJweCBzb2xpZCAjZmZkM2IyfS5vcC1pbmZvLW1pc3NpbmdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmdyYXl9Lm9wLW5hbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93LXdyYXA6YW55d2hlcmU7cGFkZGluZzowO3RleHQtYWxpZ246cmlnaHQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt3aGl0ZS1zcGFjZTpwcmUtd3JhcH0ub3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZTowfS5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VmZjE7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxMHB4O2hlaWdodDoxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7cGFkZGluZzoxcHggM3B4O3dpZHRoOm1heC1jb250ZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6M3B4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM0NTVhNjR9LnNlbGYtb3AtbmFtZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6Ym9sZDt0ZXh0LWRlY29yYXRpb246bm9uZX0uc2xvdFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2xvdFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbG90W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0nXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhnMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImdyYXBoLW9wIix0ZW1wbGF0ZVVybDoiZ3JhcGhfb3BfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZ3JhcGhfb3BfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHtraW5kOlt7dHlwZTpkfV0sb3BOYW1lOlt7dHlwZTpkfV0sc2xvdDpbe3R5cGU6ZH1dLG9wRGF0YTpbe3R5cGU6ZH1dLG9uT3BOYW1lQ2xpY2s6W3t0eXBlOkJ9XX0pfSkoKTtmdW5jdGlvbiBKVHQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDEzKSx1KDEsImRpdiIsMTQpLFQoMiksaCgpLHUoMywiZ3JhcGgtb3AiLDE1KSxBKCJvbk9wTmFtZUNsaWNrIixmdW5jdGlvbihpKXtPdChlKTtsZXQgYT1TKDMpO3JldHVybiBhLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6aS5vcF9uYW1lLGdyYXBoX2lkOmEuZ3JhcGhJZH0pfSksaCgpLGgoKX1pZihuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89dC5pbmRleDt4KDIpLGxlKCJJbnB1dCBzbG90ICIsbywiOiIpLHgoMSksUCgia2luZCIsImlucHV0IikoIm9wTmFtZSIsZS5vcF9uYW1lKSgic2xvdCIsZS5vdXRwdXRfc2xvdCkoIm9wRGF0YSIsZS5kYXRhKX19ZnVuY3Rpb24gJFR0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDExKSx1KDEsImRpdiIpLGsoMixKVHQsNCw1LCJkaXYiLDEyKSxoKCksaCgpKSxuJjIpe2xldCBlPVMoMik7eCgyKSxQKCJuZ0Zvck9mIixlLmlucHV0T3BzKX19ZnVuY3Rpb24gdEF0KG4sdCl7biYxJiYodSgwLCJkaXYiLDE2KSxUKDEsIiAoVGhpcyBvcCBoYXMgbm8gaW5wdXQgdGVuc29yLikgIiksaCgpKX1mdW5jdGlvbiBlQXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDIzKSx1KDEsImdyYXBoLW9wIiwxNSksQSgib25PcE5hbWVDbGljayIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9Uyg0KTtyZXR1cm4gYS5vbkdyYXBoT3BOYXZpZ2F0ZS5lbWl0KHtvcF9uYW1lOmkub3BfbmFtZSxncmFwaF9pZDphLmdyYXBoSWR9KX0pLGgoKSxoKCl9aWYobiYyKXtsZXQgZT10LiRpbXBsaWNpdDt4KDEpLFAoImtpbmQiLCJjb25zdW1lciIpKCJvcE5hbWUiLGUub3BfbmFtZSkoInNsb3QiLGUuaW5wdXRfc2xvdCkoIm9wRGF0YSIsZS5kYXRhKX19ZnVuY3Rpb24gbkF0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDE5KSx1KDEsImRpdiIsMjApLFQoMiksdSgzLCJzcGFuIiksV1QoNCwyMSksaCgpLFQoNSwiKSAiKSxoKCksayg2LGVBdCwyLDQsImRpdiIsMjIpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPXQuaW5kZXg7eCgyKSx2eSgiIE91dHB1dCBzbG90ICIsbywiOiAoIixlLmxlbmd0aCwiICIpLHgoMiksQlIoZS5sZW5ndGgpLHFUKDQpLHgoMiksUCgibmdGb3JPZiIsZSl9fWZ1bmN0aW9uIG9BdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwxNyksdSgxLCJkaXYiKSxrKDIsbkF0LDcsNCwiZGl2IiwxOCksaCgpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goMiksUCgibmdGb3JPZiIsZS5jb25zdW1lck9wcyl9fWZ1bmN0aW9uIGlBdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwyNCksVCgxKSx1KDIsInNwYW4iKSxXVCgzLDI1KSxoKCksVCg0LCIgYW5kIG5vIGNvbnN1bWVyLikgIiksaCgpKSxuJjIpe2xldCBlPVMoMik7eCgxKSxsZSgiIChUaGlzIG9wIGhhcyAiLGUub3BJbmZvLmNvbnN1bWVycy5sZW5ndGgsIiBvdXRwdXQgIikseCgyKSxCUihlLm9wSW5mby5jb25zdW1lcnMubGVuZ3RoKSxxVCgzKX19ZnVuY3Rpb24gYUF0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2IiksaygxLCRUdCwzLDEsImRpdiIsNCksaygyLHRBdCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDUseG4pLHUoNCwiZGl2Iiw2KSx1KDUsImRpdiIsNyksVCg2LCJPcDoiKSxoKCksdSg3LCJncmFwaC1vcCIsOCksQSgib25PcE5hbWVDbGljayIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygpO3JldHVybiBhLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6aS5vcF9uYW1lLGdyYXBoX2lkOmEuZ3JhcGhJZH0pfSksaCgpLGgoKSxrKDgsb0F0LDMsMSwiZGl2Iiw5KSxrKDksaUF0LDUsMiwibmctdGVtcGxhdGUiLG51bGwsMTAseG4pLGgoKX1pZihuJjIpe2xldCBlPXdlKDMpLG89d2UoMTApLGk9UygpO3goMSksUCgibmdJZiIsaS5pbnB1dE9wcy5sZW5ndGg+MCkoIm5nSWZFbHNlIixlKSx4KDYpLFAoImtpbmQiLCJzZWxmIikoIm9wTmFtZSIsaS5vcEluZm8ub3BfbmFtZSkoIm9wRGF0YSIsaS5vcEluZm8pLHgoMSksUCgibmdJZiIsaS50b3RhbE51bUNvbnN1bWVycz4wKSgibmdJZkVsc2UiLG8pfX1mdW5jdGlvbiByQXQobix0KXtuJjEmJih1KDAsInNwYW4iLDI2KSxUKDEsIiAoT3AgaW5mbyB1bmF2YWlsYWJsZS4pICIpLGgoKSl9ZnVuY3Rpb24gc0F0KG4sdCl7biYxJiYodSgwLCJkaXYiLDI3KSxUKDEsIiBObyBncmFwaCBvcCBzZWxlY3RlZC4gQ2xpY2sgYSB0ZW5zb3IgbmFtZSBpbiB0aGUgR3JhcGggRXhlY3V0aW9ucyB0YWJsZSB0byB2aWV3IHRoZSBuZWlnaGJvcmhvb2Qgb2YgdGhlIHRlbnNvcidzIG9wIGluIGl0cyBncmFwaC4gIiksaCgpKX12YXIgdTA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9uR3JhcGhPcE5hdmlnYXRlPW5ldyAkfWdldCBncmFwaElkKCl7cmV0dXJuIHRoaXMub3BJbmZvLmdyYXBoX2lkc1t0aGlzLm9wSW5mby5ncmFwaF9pZHMubGVuZ3RoLTFdfWdldCB0b3RhbE51bUNvbnN1bWVycygpe3JldHVybiB0aGlzLmNvbnN1bWVyT3BzLnJlZHVjZSgodCxlKT0+dCtlLmxlbmd0aCwwKX19O3UwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHUwKX07dTAuXHUwMjc1Y21wPXooe3R5cGU6dTAsc2VsZWN0b3JzOltbImdyYXBoLWNvbXBvbmVudCJdXSxpbnB1dHM6e29wSW5mbzoib3BJbmZvIixpbnB1dE9wczoiaW5wdXRPcHMiLGNvbnN1bWVyT3BzOiJjb25zdW1lck9wcyJ9LG91dHB1dHM6e29uR3JhcGhPcE5hdmlnYXRlOiJvbkdyYXBoT3BOYXZpZ2F0ZSJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCBuO3R5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP249Z29vZy5nZXRNc2coIntWQVJfUExVUkFMLCBwbHVyYWwsID0wIHtjb25zdW1lcn0gPTEge2NvbnN1bWVyfSBvdGhlciB7Y29uc3VtZXJzfX0iKTpuPSRsb2NhbGl6ZWA64pCfZmU1NWY5YjE5M2VhMjBhYWU1YjU2MzVlNjhkOTM4NjUwMzg0Nzc0NuKQnzQ5NTUxMzM3NDA4NDEyOTk4NTE6e1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge2NvbnN1bWVyfSA9MSB7Y29uc3VtZXJ9IG90aGVyIHtjb25zdW1lcnN9fWAsbj1aVChuLHtWQVJfUExVUkFMOiJcdUZGRkQwXHVGRkZEIn0pO2xldCB0O3R5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP3Q9Z29vZy5nZXRNc2coIiB7JGljdX0iLHtpY3U6bn0pOnQ9JGxvY2FsaXplYDrikJ9iYWE0NjBlMmYyYjg1N2UyNjI5MmIyNDZmYzE4YWUwZWE5YjVlNTM34pCfNTU1NjM0MDM0Mzg1MDE2NTUxNjogJHtufTpJQ1U6YDtsZXQgZTt0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9lPWdvb2cuZ2V0TXNnKCJ7VkFSX1BMVVJBTCwgcGx1cmFsLCA9MCB7dGVuc29yfSA9MSB7dGVuc29yfSBvdGhlciB7dGVuc29yc319Iik6ZT0kbG9jYWxpemVgOuKQnzZhYTc1ZjYyN2UwZGMxNjE1MGVmNDQ4NDY0ZTBjODU3YWFhMGRjMTjikJ81MTU2NzEyOTM1MTUwNTg2ODc4OntWQVJfUExVUkFMLCBwbHVyYWwsID0wIHt0ZW5zb3J9ID0xIHt0ZW5zb3J9IG90aGVyIHt0ZW5zb3JzfX1gLGU9WlQoZSx7VkFSX1BMVVJBTDoiXHVGRkZEMFx1RkZGRCJ9KTtsZXQgbztyZXR1cm4gdHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/bz1nb29nLmdldE1zZygiIHskaWN1fSIse2ljdTplfSk6bz0kbG9jYWxpemVgOuKQnzg5MzQ3NmMyYzQyMWNlZTQ3NjYzYzk3MzJmYTQxYTc1MGQzYTczZGbikJ8yNDYwNjcwNTM3MzUxNjI2MzQ6ICR7ZX06SUNVOmAsW1sxLCJncmFwaC1zdHJ1Y3R1cmUtY29udGFpbmVyIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsib3BJbmZvTWlzc2luZyIsIiJdLFsibm9PcEZvY3VzZWQiLCIiXSxbImNsYXNzIiwiaW5wdXRzLWNvbnRhaW5lciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0lucHV0cyIsIiJdLFsxLCJzZWxmLW9wLWNvbnRhaW5lciJdLFsxLCJzZWxmLW9wLWhlYWRlciJdLFszLCJraW5kIiwib3BOYW1lIiwib3BEYXRhIiwib25PcE5hbWVDbGljayJdLFsiY2xhc3MiLCJjb25zdW1lcnMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vQ29uc3VtZXJzIiwiIl0sWzEsImlucHV0cy1jb250YWluZXIiXSxbImNsYXNzIiwiaW5wdXQtb3Atc2VjdGlvbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImlucHV0LW9wLXNlY3Rpb24iXSxbMSwiaW5wdXQtc2xvdC1oZWFkZXIiXSxbMywia2luZCIsIm9wTmFtZSIsInNsb3QiLCJvcERhdGEiLCJvbk9wTmFtZUNsaWNrIl0sWzEsImlucHV0cy1jb250YWluZXIiLCJuby1pbnB1dHMtaW5kaWNhdG9yIl0sWzEsImNvbnN1bWVycy1jb250YWluZXIiXSxbImNsYXNzIiwic2xvdC1jb25zdW1lcnMtY29udGFpbmVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwic2xvdC1jb25zdW1lcnMtY29udGFpbmVyIl0sWzEsInNsb3QtY29uc3VtZXJzLWhlYWRlciJdLHQsWyJjbGFzcyIsImNvbnN1bWVyLXNlY3Rpb24iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb25zdW1lci1zZWN0aW9uIl0sWzEsIm9wLWNvbnN1bWVycy1jb250YWluZXIiXSxvLFsxLCJvcC1pbmZvLW1pc3NpbmciXSxbMSwibm8tb3AtZm9jdXNlZCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImRpdiIpLHUoMSwiZGl2IiksVCgyLCJHcmFwaCBTdHJ1Y3R1cmUiKSxoKCksdSgzLCJkaXYiLDApLGsoNCxhQXQsMTEsNywiZGl2IiwxKSxoKCksayg1LHJBdCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDIseG4pLGsoNyxzQXQsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwzLHhuKSxoKCkpLHQmMil7bGV0IG89d2UoOCk7eCg0KSxQKCJuZ0lmIixlLm9wSW5mbyE9PXZvaWQgMCYmZS5vcEluZm8hPT1udWxsKSgibmdJZkVsc2UiLG8pfX0sZGlyZWN0aXZlczpbWHQsZzAsbW5dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtvdmVyZmxvdy15OmF1dG99LmNvbnN1bWVycy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjVweDtvdmVyZmxvdy14OmF1dG87d2hpdGUtc3BhY2U6bm93cmFwfS5jb25zdW1lci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO21hcmdpbjo1cHggMH0uZ3JhcGgtc3RydWN0dXJlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7b3ZlcmZsb3cteTphdXRvO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5wdXRzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO21hcmdpbi10b3A6NXB4O292ZXJmbG93LXg6YXV0bztwYWRkaW5nLWJvdHRvbTowO3doaXRlLXNwYWNlOm5vd3JhcH0uaW5wdXQtb3Atc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXJpZ2h0OjVweDtwYWRkaW5nLWJvdHRvbTo1cHh9LmlucHV0LXNsb3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYwOTk7bWFyZ2luLWJvdHRvbTo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LXNsb3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmlucHV0LXNsb3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlNjUxMDB9LmlucHV0LXRlbnNvci1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcH0ubm8tb3AtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Z3JheTtmb250LWZhbWlseToiUm9ib3RvIixBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZjtmb250LXNpemU6MTNweDt3aGl0ZS1zcGFjZTpub3JtYWx9LnNlbGYtb3AtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpib2xkO21hcmdpbi1ib3R0b206NXB4fS5zZWxmLW9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO3BhZGRpbmctYm90dG9tOjVweH0uc2xvdC1jb25zdW1lcnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tcmlnaHQ6NXB4O3BhZGRpbmctdG9wOjVweDt2ZXJ0aWNhbC1hbGlnbjp0b3B9LnNsb3QtY29uc3VtZXJzLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHUwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiZ3JhcGgtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9ncmFwaF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9ncmFwaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7b3BJbmZvOlt7dHlwZTpkfV0saW5wdXRPcHM6W3t0eXBlOmR9XSxjb25zdW1lck9wczpbe3R5cGU6ZH1dLG9uR3JhcGhPcE5hdmlnYXRlOlt7dHlwZTpCfV19KX0pKCk7dmFyIGFkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm9wSW5mbyQ9dGhpcy5zdG9yZS5waXBlKHplKHZZKSksdGhpcy5pbnB1dE9wcyQ9dGhpcy5zdG9yZS5waXBlKHplKHdZKSksdGhpcy5jb25zdW1lck9wcyQ9dGhpcy5zdG9yZS5waXBlKHplKG5sdCkpfW9uR3JhcGhPcE5hdmlnYXRlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUTModCkpfX07YWQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8YWQpKHYoc3QpKX07YWQuXHUwMjc1Y21wPXooe3R5cGU6YWQsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWdyYXBoIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm9wSW5mbyIsImlucHV0T3BzIiwiY29uc3VtZXJPcHMiLCJvbkdyYXBoT3BOYXZpZ2F0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZ3JhcGgtY29tcG9uZW50IiwwKSxBKCJvbkdyYXBoT3BOYXZpZ2F0ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25HcmFwaE9wTmF2aWdhdGUoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxoKCkpLHQmMiYmUCgib3BJbmZvIixRKDEsMyxlLm9wSW5mbyQpKSgiaW5wdXRPcHMiLFEoMiw1LGUuaW5wdXRPcHMkKSkoImNvbnN1bWVyT3BzIixRKDMsNyxlLmNvbnN1bWVyT3BzJCkpfSxkaXJlY3RpdmVzOlt1MF0scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYWQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12Mi1ncmFwaCIsdGVtcGxhdGU6YAogICAgPGdyYXBoLWNvbXBvbmVudAogICAgICBbb3BJbmZvXT0ib3BJbmZvJCB8IGFzeW5jIgogICAgICBbaW5wdXRPcHNdPSJpbnB1dE9wcyQgfCBhc3luYyIKICAgICAgW2NvbnN1bWVyT3BzXT0iY29uc3VtZXJPcHMkIHwgYXN5bmMiCiAgICAgIChvbkdyYXBoT3BOYXZpZ2F0ZSk9Im9uR3JhcGhPcE5hdmlnYXRlKCRldmVudCkiCiAgICA+PC9ncmFwaC1jb21wb25lbnQ+CiAgYH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIG1BdChuLHQpe24mMSYmKHUoMCwiZGl2IiwxMiksVCgxLCJcdTI1QjYiKSxoKCkpfXZhciBmQXQ9ZnVuY3Rpb24obix0KXtyZXR1cm57dGVuc29yRGVidWdNb2RlOm4sYXJyYXk6dH19O2Z1bmN0aW9uIHBBdChuLHQpe2lmKG4mMSYmRCgwLCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE3KSxuJjIpe2xldCBlPVMoMikuJGltcGxpY2l0LG89UygyKTtQKCJkZWJ1Z1RlbnNvclZhbHVlIixvLnBhcnNlRGVidWdUZW5zb3JWYWx1ZShobCgxLGZBdCxvLmdyYXBoRXhlY3V0aW9uRGF0YVtlXS50ZW5zb3JfZGVidWdfbW9kZSxvLmdyYXBoRXhlY3V0aW9uRGF0YVtlXS5kZWJ1Z190ZW5zb3JfdmFsdWUpKSl9fWZ1bmN0aW9uIGRBdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIpLHUoMSwiZGl2IiwxMyksdSgyLCJidXR0b24iLDE0KSxBKCJjbGljayIsZnVuY3Rpb24oKXtPdChlKTtsZXQgaT1TKCkuJGltcGxpY2l0LGE9UygyKTtyZXR1cm4gYS5vblRlbnNvck5hbWVDbGljay5lbWl0KHtpbmRleDppLGdyYXBoX2lkOmEuZ3JhcGhFeGVjdXRpb25EYXRhW2ldLmdyYXBoX2lkLG9wX25hbWU6YS5ncmFwaEV4ZWN1dGlvbkRhdGFbaV0ub3BfbmFtZX0pfSksVCgzKSxoKCksdSg0LCJkaXYiLDE1KSxUKDUpLGgoKSxoKCksayg2LHBBdCwxLDQsImRlYnVnLXRlbnNvci12YWx1ZSIsMTYpLGgoKX1pZihuJjIpe2xldCBlPVMoKS4kaW1wbGljaXQsbz1TKDIpO3goMiksV2koInRpdGxlIixvLmdldFRlbnNvck5hbWUoZSkpLHgoMSksbGUoIiAiLG8uZ2V0VGVuc29yTmFtZShlKSwiICIpLHgoMiksSWUoby5ncmFwaEV4ZWN1dGlvbkRhdGFbZV0ub3BfdHlwZSkseCgxKSxQKCJuZ0lmIixvLmdyYXBoRXhlY3V0aW9uRGF0YVtlXS5kZWJ1Z190ZW5zb3JfdmFsdWUhPT1udWxsKX19ZnVuY3Rpb24gZ0F0KG4sdCl7biYxJiYodSgwLCJkaXYiLDE4KSxUKDEsIiBMb2FkaW5nLi4uICIpLGgoKSl9dmFyIHVBdD1mdW5jdGlvbihuKXtyZXR1cm57ImlucHV0LW9mLWZvY3VzIjpufX07ZnVuY3Rpb24gaEF0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDUpLHUoMSwiZGl2Iiw2KSx1KDIsImRpdiIsNyksaygzLG1BdCwyLDAsImRpdiIsOCksVCg0KSxoKCksayg1LGRBdCw3LDQsImRpdiIsOSksayg2LGdBdCwyLDAsIm5nLXRlbXBsYXRlIiwxMCwxMSx4biksaCgpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPXdlKDcpLGk9UygyKTt4KDEpLFAoIm5nQ2xhc3MiLGFvKDUsdUF0LGkuaXNJbnB1dE9mRm9jdXMoZSkpKSx4KDIpLFAoIm5nSWYiLGU9PT1pLmZvY3VzSW5kZXgpLHgoMSksbGUoIiAiLGUsIiAiKSx4KDEpLFAoIm5nSWYiLGkuZ3JhcGhFeGVjdXRpb25EYXRhW2VdKSgibmdJZkVsc2UiLG8pfX1mdW5jdGlvbiBfQXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLDMpLEEoInNjcm9sbGVkSW5kZXhDaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25TY3JvbGxlZEluZGV4Q2hhbmdlLmVtaXQoaSl9KSxrKDEsaEF0LDgsNywiZGl2Iiw0KSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7eCgxKSxQKCJjZGtWaXJ0dWFsRm9yT2YiLGUuZ3JhcGhFeGVjdXRpb25JbmRpY2VzKX19dmFyIGgwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vblNjcm9sbGVkSW5kZXhDaGFuZ2U9bmV3ICQsdGhpcy5vblRlbnNvck5hbWVDbGljaz1uZXcgJCx0aGlzLnBhcnNlRGVidWdUZW5zb3JWYWx1ZT1Neix0aGlzLlRFU1RfT05MWT17Z2V0Vmlld1BvcnQ6KCk9PnRoaXMudmlld1BvcnR9fW5nT25DaGFuZ2VzKHQpe2lmKHRoaXMudmlld1BvcnQmJnQuZm9jdXNJbmRleCYmdC5mb2N1c0luZGV4LmN1cnJlbnRWYWx1ZSE9PW51bGwpe2xldCBlPXRoaXMudmlld1BvcnQuZ2V0UmVuZGVyZWRSYW5nZSgpLG89dC5mb2N1c0luZGV4LmN1cnJlbnRWYWx1ZSxpPU1hdGgucm91bmQoKGUuZW5kLWUuc3RhcnQpLzMpLGE9TWF0aC5tYXgoby1pLDApLHI9bz49ZS5zdGFydCYmbzxlLmVuZDt0aGlzLnZpZXdQb3J0LnNjcm9sbFRvSW5kZXgoYSxyPyJzbW9vdGgiOnZvaWQgMCl9fWdldFRlbnNvck5hbWUodCl7cmV0dXJuYCR7dGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3BfbmFtZX06JHt0aGlzLmdyYXBoRXhlY3V0aW9uRGF0YVt0XS5vdXRwdXRfc2xvdH1gfWlzSW5wdXRPZkZvY3VzKHQpe3JldHVybiB0aGlzLmZvY3VzSW5wdXRJbmRpY2VzPT09bnVsbD8hMTp0aGlzLmZvY3VzSW5wdXRJbmRpY2VzLmluY2x1ZGVzKHQpfX07aDAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8aDApfTtoMC5cdTAyNzVjbXA9eih7dHlwZTpoMCxzZWxlY3RvcnM6W1siZ3JhcGgtZXhlY3V0aW9ucy1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShKYSw1KSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLnZpZXdQb3J0PW8uZmlyc3QpfX0saW5wdXRzOntudW1HcmFwaEV4ZWN1dGlvbnM6Im51bUdyYXBoRXhlY3V0aW9ucyIsZ3JhcGhFeGVjdXRpb25EYXRhOiJncmFwaEV4ZWN1dGlvbkRhdGEiLGdyYXBoRXhlY3V0aW9uSW5kaWNlczoiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIixmb2N1c0luZGV4OiJmb2N1c0luZGV4Iixmb2N1c0lucHV0SW5kaWNlczoiZm9jdXNJbnB1dEluZGljZXMifSxvdXRwdXRzOntvblNjcm9sbGVkSW5kZXhDaGFuZ2U6Im9uU2Nyb2xsZWRJbmRleENoYW5nZSIsb25UZW5zb3JOYW1lQ2xpY2s6Im9uVGVuc29yTmFtZUNsaWNrIn0sZmVhdHVyZXM6W1dlXSxkZWNsczo0LHZhcnM6Mixjb25zdHM6W1sxLCJncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lciJdLFsxLCJncmFwaC1leGVjdXRpb25zLXRpdGxlIl0sWyJpdGVtU2l6ZSIsIjM4IiwiY2xhc3MiLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIiw0LCJuZ0lmIl0sWyJpdGVtU2l6ZSIsIjM4IiwxLCJncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0IiwzLCJzY3JvbGxlZEluZGV4Q2hhbmdlIl0sWyJjbGFzcyIsInRlbnNvci1jb250YWluZXIiLDQsImNka1ZpcnR1YWxGb3IiLCJjZGtWaXJ0dWFsRm9yT2YiXSxbMSwidGVuc29yLWNvbnRhaW5lciJdLFsxLCJ0ZW5zb3ItaXRlbSIsMywibmdDbGFzcyJdLFsxLCJncmFwaC1leGVjdXRpb24taW5kZXgiXSxbImNsYXNzIiwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIiw0LCJuZ0lmIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiY2xhc3MiLCJ0ZW5zb3ItaXRlbSJdLFsiZGF0YUxvYWRpbmciLCIiXSxbMSwiZ3JhcGgtZXhlY3V0aW9uLWZvY3VzIl0sWzEsInRlbnNvci1uYW1lLWFuZC1vcC10eXBlIl0sWzEsInRlbnNvci1uYW1lIiwzLCJ0aXRsZSIsImNsaWNrIl0sWzEsIm9wLXR5cGUiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSIsNCwibmdJZiJdLFszLCJkZWJ1Z1RlbnNvclZhbHVlIl0sWzEsImxvYWRpbmctc3Bpbm5lciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwKSx1KDEsImRpdiIsMSksVCgyKSxoKCksaygzLF9BdCwyLDEsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMiksaCgpKSx0JjImJih4KDIpLGxlKCIgR3JhcGggRXhlY3V0aW9ucyAoIixlLm51bUdyYXBoRXhlY3V0aW9ucywiKSAiKSx4KDEpLFAoIm5nSWYiLGUubnVtR3JhcGhFeGVjdXRpb25zIT09bnVsbCYmZS5udW1HcmFwaEV4ZWN1dGlvbnM+MCkpfSxkaXJlY3RpdmVzOltYdCxKYSxDbCxKbCxqbix1bV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uZ3JhcGgtZXhlY3V0aW9ucy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7bWFyZ2luLWxlZnQ6OHB4O3BhZGRpbmctbGVmdDoxMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncmFwaC1leGVjdXRpb25zLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1NTV9LmdyYXBoLWV4ZWN1dGlvbi1mb2N1c1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2t9LmdyYXBoLWV4ZWN1dGlvbi1pbmRleFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXJpZ2h0OjRweDt0ZXh0LWFsaWduOnJpZ2h0O3dpZHRoOjQwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyYXBoLWV4ZWN1dGlvbi1pbmRleFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncmFwaC1leGVjdXRpb24taW5kZXhbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5ncmFwaC1leGVjdXRpb25zLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjAgNXB4IDNweCAtM3B4ICNjY2M7cGFkZGluZy1ib3R0b206NXB4fS5ncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MTtmb250LXNpemU6MTJweDt3aWR0aDoxMDAlO292ZXJmbG93LXg6aGlkZGVufS5pbnB1dC1vZi1mb2N1c1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmMDk5fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5pbnB1dC1vZi1mb2N1c1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5pbnB1dC1vZi1mb2N1c1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTY1MTAwfS5sb2FkaW5nLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlY2VmZjE7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6NHB4O2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlO2ZvbnQtc2l6ZToxMHB4O2hlaWdodDoxNHB4O2xpbmUtaGVpZ2h0OjE0cHg7cGFkZGluZzoxcHggM3B4O3dpZHRoOm1heC1jb250ZW50O2RpcmVjdGlvbjpydGw7ZGlzcGxheTpibG9ja31ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNDU1YTY0fS50ZW5zb3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS50ZW5zb3ItaXRlbVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOm5vd3JhcDtoZWlnaHQ6MzhweDtsaW5lLWhlaWdodDozOHB4O3RleHQtYWxpZ246bGVmdDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRlbnNvci1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnRlbnNvci1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS50ZW5zb3ItbmFtZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLDApO2JvcmRlcjpub25lO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjppbmhlcml0O2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpydGw7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4O21hcmdpbjoycHggMCAxcHg7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDJweCk7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MCAycHg7dGV4dC1hbGlnbjpyaWdodDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS50ZW5zb3ItbmFtZVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7b3V0bGluZToxcHggc29saWQgI2M2Y2FkMX0udGVuc29yLW5hbWUtYW5kLW9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2RpcmVjdGlvbjpydGw7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmctcmlnaHQ6OHB4O3RleHQtYWxpZ246cmlnaHQ7d2lkdGg6MjQwcHh9ZGVidWctdGVuc29yLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MnB4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaDAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZ3JhcGhfZXhlY3V0aW9uc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9ncmFwaF9leGVjdXRpb25zX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtudW1HcmFwaEV4ZWN1dGlvbnM6W3t0eXBlOmR9XSxncmFwaEV4ZWN1dGlvbkRhdGE6W3t0eXBlOmR9XSxncmFwaEV4ZWN1dGlvbkluZGljZXM6W3t0eXBlOmR9XSxmb2N1c0luZGV4Olt7dHlwZTpkfV0sZm9jdXNJbnB1dEluZGljZXM6W3t0eXBlOmR9XSxvblNjcm9sbGVkSW5kZXhDaGFuZ2U6W3t0eXBlOkJ9XSxvblRlbnNvck5hbWVDbGljazpbe3R5cGU6Qn1dLHZpZXdQb3J0Olt7dHlwZTpJdCxhcmdzOltKYSx7c3RhdGljOiExfV19XX0pfSkoKTt2YXIgcmQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMubnVtR3JhcGhFeGVjdXRpb25zJD10aGlzLnN0b3JlLnBpcGUoemUoSWspKSx0aGlzLmdyYXBoRXhlY3V0aW9uRGF0YSQ9dGhpcy5zdG9yZS5waXBlKHplKFBZKSksdGhpcy5ncmFwaEV4ZWN1dGlvbkluZGljZXMkPXRoaXMuc3RvcmUucGlwZSh6ZShjdChJayxlPT5lPT09MD9udWxsOkFycmF5LmZyb20oe2xlbmd0aDplfSkubWFwKChvLGkpPT5pKSkpKSx0aGlzLmZvY3VzSW5kZXgkPXRoaXMuc3RvcmUucGlwZSh6ZSh5WSkpLHRoaXMuZm9jdXNJbnB1dEluZGljZXMkPXRoaXMuc3RvcmUucGlwZSh6ZShlbHQpKX1vblNjcm9sbGVkSW5kZXhDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChaMyh7aW5kZXg6dH0pKX1vblRlbnNvck5hbWVDbGljayh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFgzKHQpKX19O3JkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHJkKSh2KHN0KSl9O3JkLlx1MDI3NWNtcD16KHt0eXBlOnJkLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1ncmFwaC1leGVjdXRpb25zIl1dLGRlY2xzOjYsdmFyczoxNSxjb25zdHM6W1szLCJudW1HcmFwaEV4ZWN1dGlvbnMiLCJncmFwaEV4ZWN1dGlvbkRhdGEiLCJncmFwaEV4ZWN1dGlvbkluZGljZXMiLCJmb2N1c0luZGV4IiwiZm9jdXNJbnB1dEluZGljZXMiLCJvblNjcm9sbGVkSW5kZXhDaGFuZ2UiLCJvblRlbnNvck5hbWVDbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZ3JhcGgtZXhlY3V0aW9ucy1jb21wb25lbnQiLDApLEEoIm9uU2Nyb2xsZWRJbmRleENoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25TY3JvbGxlZEluZGV4Q2hhbmdlKGkpfSkoIm9uVGVuc29yTmFtZUNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblRlbnNvck5hbWVDbGljayhpKX0pLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpLFgoNCwiYXN5bmMiKSxYKDUsImFzeW5jIiksaCgpKSx0JjImJlAoIm51bUdyYXBoRXhlY3V0aW9ucyIsUSgxLDUsZS5udW1HcmFwaEV4ZWN1dGlvbnMkKSkoImdyYXBoRXhlY3V0aW9uRGF0YSIsUSgyLDcsZS5ncmFwaEV4ZWN1dGlvbkRhdGEkKSkoImdyYXBoRXhlY3V0aW9uSW5kaWNlcyIsUSgzLDksZS5ncmFwaEV4ZWN1dGlvbkluZGljZXMkKSkoImZvY3VzSW5kZXgiLFEoNCwxMSxlLmZvY3VzSW5kZXgkKSkoImZvY3VzSW5wdXRJbmRpY2VzIixRKDUsMTMsZS5mb2N1c0lucHV0SW5kaWNlcyQpKX0sZGlyZWN0aXZlczpbaDBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHJkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItZ3JhcGgtZXhlY3V0aW9ucyIsdGVtcGxhdGU6YAogICAgPGdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50CiAgICAgIFtudW1HcmFwaEV4ZWN1dGlvbnNdPSJudW1HcmFwaEV4ZWN1dGlvbnMkIHwgYXN5bmMiCiAgICAgIFtncmFwaEV4ZWN1dGlvbkRhdGFdPSJncmFwaEV4ZWN1dGlvbkRhdGEkIHwgYXN5bmMiCiAgICAgIFtncmFwaEV4ZWN1dGlvbkluZGljZXNdPSJncmFwaEV4ZWN1dGlvbkluZGljZXMkIHwgYXN5bmMiCiAgICAgIFtmb2N1c0luZGV4XT0iZm9jdXNJbmRleCQgfCBhc3luYyIKICAgICAgW2ZvY3VzSW5wdXRJbmRpY2VzXT0iZm9jdXNJbnB1dEluZGljZXMkIHwgYXN5bmMiCiAgICAgIChvblNjcm9sbGVkSW5kZXhDaGFuZ2UpPSJvblNjcm9sbGVkSW5kZXhDaGFuZ2UoJGV2ZW50KSIKICAgICAgKG9uVGVuc29yTmFtZUNsaWNrKT0ib25UZW5zb3JOYW1lQ2xpY2soJGV2ZW50KSIKICAgID48L2dyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50PgogIGB9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTtmdW5jdGlvbiBiQXQoKXtyZXR1cm4gd2luZG93fXZhciB1bHQ9e2dldFdpbmRvdzpiQXR9LElZPSJ2cyIsT0F0PSIvdGYtaW1wb3J0cy92cyI7ZnVuY3Rpb24gZ2x0KG4pe2xldCB0PXVsdC5nZXRXaW5kb3coKS5yZXF1aXJlO3JldHVybiBuZXcgUHJvbWlzZShlPT57dChuLGUpfSl9ZnVuY3Rpb24gYnooKXtyZXR1cm4gekModGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe2xldCBuPXVsdC5nZXRXaW5kb3coKTtpZihuLm1vbmFjbz09PXZvaWQgMClpZihuLnJlcXVpcmUpbi5yZXF1aXJlLmNvbmZpZyh7cGF0aHM6e1tJWV06T0F0fX0pLHlpZWxkIGdsdChbYCR7SVl9L2VkaXRvci9lZGl0b3IubWFpbmBdKSx5aWVsZCBnbHQoW2Ake0lZfS9weXRob24vcHl0aG9uLmNvbnRyaWJ1dGlvbmBdKTtlbHNlIHRocm93IG5ldyBFcnJvcigibG9hZE1vbmFjbygpIGZhaWxlZCBiZWNhdXNlIGZ1bmN0aW9uIHJlcXVpcmUoKSBpcyB1bmF2YWlsYWJsZSIpfSl9dmFyIGhsdD0icHl0aG9uIjtmdW5jdGlvbiBvMihuKXtyZXR1cm4gbj8idnMtZGFyayI6InZzIn12YXIgVnM9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5yZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5Ncz0xMDAsdGhpcy5vblJlc2l6ZT1uZXcgJCx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBKdCx0aGlzLm9uUmVzaXplJD1uZXcgSnQ7bGV0IGU9bmV3IFJlc2l6ZU9ic2VydmVyKCgpPT57dGhpcy5vblJlc2l6ZSQubmV4dCgpfSk7ZS5vYnNlcnZlKHQubmF0aXZlRWxlbWVudCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5zdWJzY3JpYmUoKCk9PntlLnVub2JzZXJ2ZSh0Lm5hdGl2ZUVsZW1lbnQpfSl9bmdPbkluaXQoKXt0aGlzLm9uUmVzaXplJC5waXBlKFZDKDEpLGxyKHRoaXMucmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMpLFBlKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLm9uUmVzaXplLmVtaXQoKX0pfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpfX07VnMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8VnMpKHYoTCkpfTtWcy5cdTAyNzVkaXI9dnQoe3R5cGU6VnMsc2VsZWN0b3JzOltbIiIsImRldGVjdFJlc2l6ZSIsIiJdXSxpbnB1dHM6e3Jlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zOiJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyJ9LG91dHB1dHM6e29uUmVzaXplOiJvblJlc2l6ZSJ9fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFZzLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltkZXRlY3RSZXNpemVdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH1dfSx7cmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXM6W3t0eXBlOmR9XSxvblJlc2l6ZTpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBQQXQ9WyJjb2RlVmlld2VyQ29udGFpbmVyIl0sXzA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpbmVzPW51bGwsdGhpcy5mb2N1c2VkTGluZW5vPW51bGwsdGhpcy5tb25hY289bnVsbCx0aGlzLmVkaXRvcj1udWxsLHRoaXMuZGVjb3JhdGlvbnM9W10sdGhpcy5SRVNJWkVfREVCT1VOQ0VfSU5URVJWQUxfTVM9NTB9b25SZXNpemUoKXt0aGlzLmVkaXRvciYmdGhpcy5lZGl0b3IubGF5b3V0KCl9bmdPbkNoYW5nZXModCl7dmFyIGU7aWYodGhpcy5tb25hY289PT1udWxsKXJldHVybjtsZXQgbz10Lm1vbmFjbyYmdGhpcy5lZGl0b3I9PT1udWxsO3RoaXMuZWRpdG9yPT09bnVsbCYmKHRoaXMuZWRpdG9yPXRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGUodGhpcy5jb2RlVmlld2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQse3ZhbHVlOigoZT10aGlzLmxpbmVzKSE9PW51bGwmJmUhPT12b2lkIDA/ZTpbXSkuam9pbihgCmApLGxhbmd1YWdlOmhsdCxyZWFkT25seTohMCxmb250U2l6ZToxMCxtaW5pbWFwOntlbmFibGVkOiEwfSx0aGVtZTpvMih0aGlzLnVzZURhcmtNb2RlKX0pKSx0LmxpbmVzJiZ0aGlzLmxpbmVzJiZ0aGlzLmVkaXRvci5zZXRWYWx1ZSh0aGlzLmxpbmVzLmpvaW4oYApgKSk7bGV0IGk9b3x8dC5mb2N1c2VkTGluZW5vP3RoaXMuZm9jdXNlZExpbmVubzpudWxsO2lmKGkmJnRoaXMubGluZXMpe3RoaXMuZWRpdG9yLnJldmVhbExpbmVJbkNlbnRlcihpLHRoaXMubW9uYWNvLmVkaXRvci5TY3JvbGxUeXBlLlNtb290aCk7bGV0IGE9dGhpcy5saW5lc1tpLTFdLmxlbmd0aDt0aGlzLmRlY29yYXRpb25zPXRoaXMuZWRpdG9yLmRlbHRhRGVjb3JhdGlvbnModGhpcy5kZWNvcmF0aW9ucyxbe3JhbmdlOm5ldyB0aGlzLm1vbmFjby5SYW5nZShpLDEsaSwxKSxvcHRpb25zOntpc1dob2xlTGluZTohMCxsaW5lc0RlY29yYXRpb25zQ2xhc3NOYW1lOiJoaWdobGlnaHQtZ3V0dGVyIn19LHtyYW5nZTpuZXcgdGhpcy5tb25hY28uUmFuZ2UoaSwxLGksYSsxKSxvcHRpb25zOntpbmxpbmVDbGFzc05hbWU6ImhpZ2hsaWdodC1saW5lIn19XSl9dC51c2VEYXJrTW9kZSYmdGhpcy5tb25hY28uZWRpdG9yLnNldFRoZW1lKG8yKHRoaXMudXNlRGFya01vZGUpKX19O18wLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF8wKX07XzAuXHUwMjc1Y21wPXooe3R5cGU6XzAsc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJnBlKFBBdCw3LEwpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuY29kZVZpZXdlckNvbnRhaW5lcj1vLmZpcnN0KX19LGlucHV0czp7bGluZXM6ImxpbmVzIixmb2N1c2VkTGluZW5vOiJmb2N1c2VkTGluZW5vIixtb25hY286Im1vbmFjbyIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIn0sZmVhdHVyZXM6W1dlXSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1siZGV0ZWN0UmVzaXplIiwiIiwxLCJjb2RlLXZpZXdlci1jb250YWluZXIiLDMsInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIiwib25SZXNpemUiXSxbImNvZGVWaWV3ZXJDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCwxKSxBKCJvblJlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblJlc2l6ZSgpfSksaCgpKSx0JjImJlAoInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIixlLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUyl9LGRpcmVjdGl2ZXM6W1ZzXSxzdHlsZXM6W2AuY29kZS12aWV3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgaGVpZ2h0OiAxMDAlOwp9CgpbX25naG9zdC0lQ09NUCVdICAgICAuaGlnaGxpZ2h0LWd1dHRlciB7CiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDExMSwgMCwgMC43KTsKICB3aWR0aDogNXB4ICFpbXBvcnRhbnQ7Cn0KCltfbmdob3N0LSVDT01QJV0gICAgIC5oaWdobGlnaHQtbGluZSB7CiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDExMSwgMCwgMC4zKTsKfWBdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF8wLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9zb3VyY2VfY29kZV9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zb3VyY2VfY29kZV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7bGluZXM6W3t0eXBlOmR9XSxmb2N1c2VkTGluZW5vOlt7dHlwZTpkfV0sbW9uYWNvOlt7dHlwZTpkfV0sdXNlRGFya01vZGU6W3t0eXBlOmR9XSxjb2RlVmlld2VyQ29udGFpbmVyOlt7dHlwZTpJdCxhcmdzOlsiY29kZVZpZXdlckNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOkx9XX1dfSl9KSgpO3ZhciBzZD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMubGluZXM9bnVsbCx0aGlzLmZvY3VzZWRMaW5lbm89bnVsbCx0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMubW9uYWNvJD1udWxsfW5nT25Jbml0KCl7dGhpcy5tb25hY28kPURhKGJ6KCkpLnBpcGUoRygoKT0+d2luZG93Lm1vbmFjbykpfX07c2QuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8c2QpfTtzZC5cdTAyNzVjbXA9eih7dHlwZTpzZCxzZWxlY3RvcnM6W1sic291cmNlLWNvZGUiXV0saW5wdXRzOntsaW5lczoibGluZXMiLGZvY3VzZWRMaW5lbm86ImZvY3VzZWRMaW5lbm8iLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGRlY2xzOjIsdmFyczo2LGNvbnN0czpbWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsIm1vbmFjbyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJzb3VyY2UtY29kZS1jb21wb25lbnQiLDApLFgoMSwiYXN5bmMiKSksdCYyJiZQKCJsaW5lcyIsZS5saW5lcykoImZvY3VzZWRMaW5lbm8iLGUuZm9jdXNlZExpbmVubykoIm1vbmFjbyIsUSgxLDQsZS5tb25hY28kKSkoInVzZURhcmtNb2RlIixlLnVzZURhcmtNb2RlKX0sZGlyZWN0aXZlczpbXzBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHNkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUiLHRlbXBsYXRlOmAKICAgIDxzb3VyY2UtY29kZS1jb21wb25lbnQKICAgICAgW2xpbmVzXT0ibGluZXMiCiAgICAgIFtmb2N1c2VkTGluZW5vXT0iZm9jdXNlZExpbmVubyIKICAgICAgW21vbmFjb109Im1vbmFjbyQgfCBhc3luYyIKICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUiCiAgICA+PC9zb3VyY2UtY29kZS1jb21wb25lbnQ+CiAgYH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0se2xpbmVzOlt7dHlwZTpkfV0sZm9jdXNlZExpbmVubzpbe3R5cGU6ZH1dLHVzZURhcmtNb2RlOlt7dHlwZTpkfV19KX0pKCk7ZnVuY3Rpb24gdkF0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDYpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLGxlKCIgIixlLmZvY3VzZWRTb3VyY2VMaW5lU3BlYy5maWxlX3BhdGgsIiAiKX19ZnVuY3Rpb24gd0F0KG4sdCl7biYxJiYodSgwLCJkaXYiLDcpLFQoMSwiIE5vIGZpbGUgc2VsZWN0ZWQuIENsaWNrIGEgbGluZSBudW1iZXIgaW4gdGhlIFN0YWNrIFRyYWNlIHNlY3Rpb24gdG8gc2hvdyB0aGUgc291cmNlIGNvZGUuICIpLGgoKSl9ZnVuY3Rpb24gU0F0KG4sdCl7aWYobiYxJiZEKDAsInNvdXJjZS1jb2RlIiw4KSxuJjIpe2xldCBlPVMoKTtQKCJsaW5lcyIsZS5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQubGluZXMpKCJmb2N1c2VkTGluZW5vIixlLmZvY3VzZWRTb3VyY2VMaW5lU3BlYy5saW5lbm8pKCJ1c2VEYXJrTW9kZSIsZS51c2VEYXJrTW9kZSl9fXZhciBDMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50PW51bGwsdGhpcy5mb2N1c2VkU291cmNlTGluZVNwZWM9bnVsbH19O0MwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEMwKX07QzAuXHUwMjc1Y21wPXooe3R5cGU6QzAsc2VsZWN0b3JzOltbInNvdXJjZS1maWxlcy1jb21wb25lbnQiXV0saW5wdXRzOntmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQ6ImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsZm9jdXNlZFNvdXJjZUxpbmVTcGVjOiJmb2N1c2VkU291cmNlTGluZVNwZWMiLHVzZURhcmtNb2RlOiJ1c2VEYXJrTW9kZSJ9LGRlY2xzOjgsdmFyczozLGNvbnN0czpbWzEsInNvdXJjZS1maWxlcy1jb250YWluZXIiXSxbMSwiaGVhZGVyLXNlY3Rpb24iXSxbMSwidGl0bGUtdGFnIl0sWyJjbGFzcyIsImZpbGUtbGFiZWwiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9GaWxlU2VsZWN0ZWQiLCIiXSxbMywibGluZXMiLCJmb2N1c2VkTGluZW5vIiwidXNlRGFya01vZGUiLDQsIm5nSWYiXSxbMSwiZmlsZS1sYWJlbCJdLFsxLCJuby1maWxlLXNlbGVjdGVkIl0sWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsInVzZURhcmtNb2RlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYodSgwLCJkaXYiLDApLHUoMSwiZGl2IiwxKSx1KDIsImRpdiIsMiksVCgzLCJTb3VyY2UgQ29kZSIpLGgoKSxrKDQsdkF0LDIsMSwiZGl2IiwzKSxrKDUsd0F0LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNCx4biksaCgpLGsoNyxTQXQsMSwzLCJzb3VyY2UtY29kZSIsNSksaCgpKSx0JjIpe2xldCBvPXdlKDYpO3goNCksUCgibmdJZiIsZS5mb2N1c2VkU291cmNlTGluZVNwZWMhPT1udWxsKSgibmdJZkVsc2UiLG8pLHgoMyksUCgibmdJZiIsZS5mb2N1c2VkU291cmNlRmlsZUNvbnRlbnQhPT1udWxsJiZlLmZvY3VzZWRTb3VyY2VMaW5lU3BlYyE9PW51bGwmJmUuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50LmxpbmVzIT09bnVsbCl9fSxkaXJlY3RpdmVzOltYdCxzZF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGVhZGVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDoyNHB4O3BhZGRpbmctYm90dG9tOjZweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5maWxlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpub3JtYWw7d2hpdGUtc3BhY2U6bm9ybWFsO292ZXJmbG93LXdyYXA6YW55d2hlcmU7b3ZlcmZsb3cteTphdXRvO3BhZGRpbmc6MCAyMHB4fS5uby1maWxlLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztjb2xvcjojNjY2O3BhZGRpbmc6MCAyMHB4O3doaXRlLXNwYWNlOm5vcm1hbH0uc291cmNlLWZpbGVzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseToiUm9ib3RvIE1vbm8iLG1vbm9zcGFjZTtmb250LXNpemU6MTBweDtoZWlnaHQ6MTAwJX0udGl0bGUtdGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXdlaWdodDpib2xkO2hlaWdodDoxMDAlO3BhZGRpbmctbGVmdDo2cHg7dmVydGljYWwtYWxpZ246dG9wfXNvdXJjZS1jb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MTt3aWR0aDoxMDAlfSddfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEMwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWZpbGVzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vc291cmNlX2ZpbGVzX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3NvdXJjZV9maWxlc19jb21wb25lbnQuY3NzIl19XX1dLG51bGwse2ZvY3VzZWRTb3VyY2VGaWxlQ29udGVudDpbe3R5cGU6ZH1dLGZvY3VzZWRTb3VyY2VMaW5lU3BlYzpbe3R5cGU6ZH1dLHVzZURhcmtNb2RlOlt7dHlwZTpkfV19KX0pKCk7dmFyIGxkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCQ9dGhpcy5zdG9yZS5zZWxlY3QoaHopLHRoaXMuZm9jdXNlZFNvdXJjZUxpbmVTcGVjJD10aGlzLnN0b3JlLnNlbGVjdChfeiksdGhpcy51c2VEYXJrTW9kZSQ9dGhpcy5zdG9yZS5zZWxlY3QoUWIpfX07bGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bGQpKHYoc3QpKX07bGQuXHUwMjc1Y21wPXooe3R5cGU6bGQsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLXNvdXJjZS1maWxlcyJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQiLCJmb2N1c2VkU291cmNlTGluZVNwZWMiLCJ1c2VEYXJrTW9kZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwic291cmNlLWZpbGVzLWNvbXBvbmVudCIsMCksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIikpLHQmMiYmUCgiZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50IixRKDEsMyxlLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCQpKSgiZm9jdXNlZFNvdXJjZUxpbmVTcGVjIixRKDIsNSxlLmZvY3VzZWRTb3VyY2VMaW5lU3BlYyQpKSgidXNlRGFya01vZGUiLFEoMyw3LGUudXNlRGFya01vZGUkKSl9LGRpcmVjdGl2ZXM6W0MwXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246Mn0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhsZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRmLWRlYnVnZ2VyLXYyLXNvdXJjZS1maWxlcyIsdGVtcGxhdGU6YAogICAgPHNvdXJjZS1maWxlcy1jb21wb25lbnQKICAgICAgW2ZvY3VzZWRTb3VyY2VGaWxlQ29udGVudF09ImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCQgfCBhc3luYyIKICAgICAgW2ZvY3VzZWRTb3VyY2VMaW5lU3BlY109ImZvY3VzZWRTb3VyY2VMaW5lU3BlYyQgfCBhc3luYyIKICAgICAgW3VzZURhcmtNb2RlXT0idXNlRGFya01vZGUkIHwgYXN5bmMiCiAgICA+PC9zb3VyY2UtZmlsZXMtY29tcG9uZW50PgogIGB9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTt2YXIga0F0PVsic3RhY2tGcmFtZUFycmF5Il07ZnVuY3Rpb24gTkF0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwxMyksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygzKTt4KDEpLGxlKCIgIyIsZS5leGVjdXRpb25JbmRleCwiOiAiKX19ZnVuY3Rpb24gVEF0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwxNCksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygzKTt4KDEpLGxlKCIgIixlLm9wVHlwZSwiICIpfX1mdW5jdGlvbiBBQXQobix0KXtpZihuJjEmJih1KDAsImRpdiIpLFQoMSwiIEVhZ2VyIGV4ZWN1dGlvbiAiKSxrKDIsTkF0LDIsMSwic3BhbiIsMTEpLGsoMyxUQXQsMiwxLCJzcGFuIiwxMiksaCgpKSxuJjIpe2xldCBlPVMoMik7eCgyKSxQKCJuZ0lmIixlLm9wVHlwZSE9PW51bGwpLHgoMSksUCgibmdJZiIsZS5vcFR5cGUhPT1udWxsKX19ZnVuY3Rpb24gREF0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwxNiksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygzKTt4KDEpLGxlKCcgIicsZS5vcE5hbWUsJyIgJyl9fWZ1bmN0aW9uIElBdChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsMTQpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoMyk7eCgxKSxsZSgiICIsZS5vcFR5cGUsIiAiKX19ZnVuY3Rpb24gekF0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiKSxUKDEsIiBDcmVhdGlvbiBvZiBncmFwaCBvcCAiKSxrKDIsREF0LDIsMSwic3BhbiIsMTUpLGsoMyxJQXQsMiwxLCJzcGFuIiwxMiksaCgpKSxuJjIpe2xldCBlPVMoMik7eCgyKSxQKCJuZ0lmIixlLm9wTmFtZSE9PW51bGwpLHgoMSksUCgibmdJZiIsZS5vcFR5cGUhPT1udWxsKX19ZnVuY3Rpb24gSEF0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwxNyksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygyKTt4KDEpLGxlKCIgKEhvc3QgbmFtZTogIixlLnN0YWNrRnJhbWVzRm9yRGlzcGxheVswXS5ob3N0X25hbWUsIikgIil9fWZ1bmN0aW9uIEZBdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2Iiw3KSx1KDEsInNwYW4iKSx1KDIsInNwYW4iLDgpLGsoMyxBQXQsNCwyLCJkaXYiLDkpLGsoNCx6QXQsNCwyLCJkaXYiLDkpLGgoKSxoKCksdSg1LCJkaXYiKSxrKDYsSEF0LDIsMSwic3BhbiIsMTApLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMiksUCgibmdTd2l0Y2giLGUuY29kZUxvY2F0aW9uVHlwZSkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLGUuQ29kZUxvY2F0aW9uVHlwZS5FWEVDVVRJT04pLHgoMSksUCgibmdTd2l0Y2hDYXNlIixlLkNvZGVMb2NhdGlvblR5cGUuR1JBUEhfT1BfQ1JFQVRJT04pLHgoMiksUCgibmdJZiIsZS5zdGFja0ZyYW1lc0ZvckRpc3BsYXkhPT1udWxsJiZlLnN0YWNrRnJhbWVzRm9yRGlzcGxheS5sZW5ndGg+MCl9fWZ1bmN0aW9uIExBdChuLHQpe24mMSYmKHUoMCwiZGl2IiwxOCksVCgxLCIgQ2xpY2sgYW4gZWFnZXIgZXhlY3V0aW9uIG9yIGdyYXBoIG9wIHRvIHNob3cgaXRzIG9yaWdpbmFsIHN0YWNrIHRyYWNlLiAiKSxoKCkpfWZ1bmN0aW9uIEJBdChuLHQpe24mMSYmKHUoMCwiZGl2IiwyOCksVCgxLCIgXHUyOTEzICIpLGgoKSl9dmFyIFZBdD1mdW5jdGlvbihuLHQpe3JldHVybltuLHRdfTtmdW5jdGlvbiBqQXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDIyKSx1KDEsImRpdiIsMjMpLFQoMiksaCgpLHUoMywiZGl2IiwyNCksayg0LEJBdCwyLDAsImRpdiIsMjUpLHUoNSwiZGl2IiwyNiksQSgiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGE9T3QoZSkuJGltcGxpY2l0O3JldHVybiBTKDIpLm9uU291cmNlTGluZUNsaWNrZWQuZW1pdChhKX0pLFQoNiksaCgpLHUoNywiZGl2IiwyNyksVCg4KSxoKCksaCgpLGgoKX1pZihuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygyKTtQKCJuZ0NsYXNzIixobCg2LFZBdCxlLmJlbG9uZ3NUb0ZvY3VzZWRGaWxlPyJmb2N1c2VkLWZpbGUiOiIiLGUuZm9jdXNlZD8iZm9jdXNlZC1zdGFjay1mcmFtZSI6IiIpKSx4KDEpLFdpKCJ0aXRsZSIsZS5maWxlX3BhdGgpLHgoMSksbGUoIiAiLGUuY29uY2lzZV9maWxlX3BhdGgsIiAiKSx4KDIpLFAoIm5nSWYiLG8uc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUmJmUuZm9jdXNlZCkseCgyKSxsZSgiIExpbmUgIixlLmxpbmVubywiICIpLHgoMiksbGUoIiAiLGUuZnVuY3Rpb25fbmFtZSwiICIpfX1mdW5jdGlvbiBVQXQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMTksMjApLGsoMixqQXQsOSw5LCJkaXYiLDIxKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMiksUCgibmdGb3JPZiIsZS5zdGFja0ZyYW1lc0ZvckRpc3BsYXkpfX1mdW5jdGlvbiBZQXQobix0KXt9dmFyIE0wPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zdGFja0ZyYW1lc0ZvckRpc3BsYXk9bnVsbCx0aGlzLm9uU291cmNlTGluZUNsaWNrZWQ9bmV3ICQsdGhpcy5Db2RlTG9jYXRpb25UeXBlPWRtfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHRoaXMuc3RhY2tGcmFtZUFycmF5PT09dm9pZCAwKXJldHVybjtsZXQgdD10aGlzLnN0YWNrRnJhbWVBcnJheS5uYXRpdmVFbGVtZW50LGU9dC5xdWVyeVNlbGVjdG9yKCIuZm9jdXNlZC1zdGFjay1mcmFtZSIpO2lmKGUhPT1udWxsKXt0aGlzLnNjcm9sbFRvRWxlbWVudCh0LGUpO3JldHVybn1sZXQgbz10LnF1ZXJ5U2VsZWN0b3IoIi5zdGFjay1mcmFtZS1jb250YWluZXI6bGFzdC1jaGlsZCIpO28hPT1udWxsJiZ0aGlzLnNjcm9sbFRvRWxlbWVudCh0LG8pfXNjcm9sbFRvRWxlbWVudCh0LGUpe3Quc2Nyb2xsVG9wPWUub2Zmc2V0VG9wfX07TTAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TTApfTtNMC5cdTAyNzVjbXA9eih7dHlwZTpNMCxzZWxlY3RvcnM6W1sic3RhY2stdHJhY2UtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmcGUoa0F0LDUpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuc3RhY2tGcmFtZUFycmF5PW8uZmlyc3QpfX0saW5wdXRzOntjb2RlTG9jYXRpb25UeXBlOiJjb2RlTG9jYXRpb25UeXBlIixvcFR5cGU6Im9wVHlwZSIsb3BOYW1lOiJvcE5hbWUiLGV4ZWN1dGlvbkluZGV4OiJleGVjdXRpb25JbmRleCIsc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU6InN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixzdGFja0ZyYW1lc0ZvckRpc3BsYXk6InN0YWNrRnJhbWVzRm9yRGlzcGxheSJ9LG91dHB1dHM6e29uU291cmNlTGluZUNsaWNrZWQ6Im9uU291cmNlTGluZUNsaWNrZWQifSxkZWNsczoxMCx2YXJzOjQsY29uc3RzOltbMSwic3RhY2stdHJhY2UtY29udGFpbmVyIl0sWzEsInN0YWNrLXRyYWNlLWhlYWRlciJdLFsxLCJzdGFjay10cmFjZS10aXRsZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1N0YWNrVHJhY2UiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtYXJyYXkiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibG9hZGluZ1NlY3Rpb24iLCIiXSxbMSwic3RhY2stdHJhY2UtYXV4LWluZm8iXSxbMSwiY29kZS1sb2NhdGlvbi1vcmlnaW4iLDMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1ob3N0LW5hbWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiZWFnZXItZXhlY3V0aW9uLWluZGV4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm9wLXR5cGUiLDQsIm5nSWYiXSxbMSwiZWFnZXItZXhlY3V0aW9uLWluZGV4Il0sWzEsIm9wLXR5cGUiXSxbImNsYXNzIiwib3AtbmFtZSIsNCwibmdJZiJdLFsxLCJvcC1uYW1lIl0sWzEsInN0YWNrLXRyYWNlLWhvc3QtbmFtZSJdLFsxLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsIm5vLXN0YWNrLXRyYWNlIl0sWzEsInN0YWNrLWZyYW1lLWFycmF5Il0sWyJzdGFja0ZyYW1lQXJyYXkiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEsInN0YWNrLWZyYW1lLWZpbGUtcGF0aCIsMywidGl0bGUiXSxbMSwic3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uIl0sWyJjbGFzcyIsInN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yIiwidGl0bGUiLCJTdGlja2luZyB0byB0aGUgYm90dG9tbW9zdCBmcmFtZSBpbiB0aGUgY3VycmVudCBzb3VyY2UgZmlsZSB3aGVuIG5hdmlnYXRpbmcgZXhlY3V0aW9ucyBhbmQgZ3JhcGggb3BzLiBUbyByZW1vdmUgdGhpcyBzdGlja2luZywgY2xpY2sgYW55IG5vbi1ib3R0b21tb3N0IHN0YWNrIGZyYW1lLiIsNCwibmdJZiJdLFsxLCJzdGFjay1mcmFtZS1saW5lbm8iLDMsImNsaWNrIl0sWzEsInN0YWNrLWZyYW1lLWZ1bmN0aW9uIl0sWyJ0aXRsZSIsIlN0aWNraW5nIHRvIHRoZSBib3R0b21tb3N0IGZyYW1lIGluIHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlIHdoZW4gbmF2aWdhdGluZyBleGVjdXRpb25zIGFuZCBncmFwaCBvcHMuIFRvIHJlbW92ZSB0aGlzIHN0aWNraW5nLCBjbGljayBhbnkgbm9uLWJvdHRvbW1vc3Qgc3RhY2sgZnJhbWUuIiwxLCJzdGljay10by1ib3R0b21tb3N0LWluZGljYXRvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHUoMCwiZGl2IiwwKSx1KDEsImRpdiIsMSksdSgyLCJzcGFuIiwyKSxUKDMsIiBTdGFjayBUcmFjZSAiKSxoKCksayg0LEZBdCw3LDQsImRpdiIsMyksayg1LExBdCwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQseG4pLGgoKSxrKDcsVUF0LDMsMSwiZGl2Iiw1KSxrKDgsWUF0LDAsMCwibmctdGVtcGxhdGUiLG51bGwsNix4biksaCgpKSx0JjIpe2xldCBvPXdlKDYpLGk9d2UoOSk7eCg0KSxQKCJuZ0lmIixlLmNvZGVMb2NhdGlvblR5cGUhPT1udWxsKSgibmdJZkVsc2UiLG8pLHgoMyksUCgibmdJZiIsZS5zdGFja0ZyYW1lc0ZvckRpc3BsYXkhPT1udWxsKSgibmdJZkVsc2UiLGkpfX0sZGlyZWN0aXZlczpbWHQsR28sdWksbW4sam5dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmZvY3VzZWQtZmlsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6Ym9sZH0uZm9jdXNlZC1zdGFjay1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxMTEsMCwuMyl9Lm5vLXN0YWNrLXRyYWNlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5fS5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXt3b3JkLXdyYXA6YW55d2hlcmV9Lm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VjZWZmMTtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC1mYW1pbHk6IlJvYm90byBNb25vIixtb25vc3BhY2U7Zm9udC1zaXplOjEwcHg7aGVpZ2h0OjE0cHg7bGluZS1oZWlnaHQ6MTRweDtwYWRkaW5nOjFweCAzcHg7d2lkdGg6bWF4LWNvbnRlbnR9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzQ1NWE2NH0uc3RhY2stZnJhbWUtYXJyYXlbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0bzt3aWR0aDpjYWxjKDEwMCUgLSA4cHgpfS5zdGFjay1mcmFtZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNhMGEwYTB9LnN0YWNrLWZyYW1lLWZpbGUtcGF0aFtfbmdjb250ZW50LSVDT01QJV17bWF4LXdpZHRoOjE4MHB4O3dpZHRoOjE4MHB4fS5zdGFjay1mcmFtZS1saW5lbm8tZnVuY3Rpb25bX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246cmlnaHQ7d2hpdGUtc3BhY2U6bm93cmFwfS5zdGFjay1mcmFtZS1mdW5jdGlvbltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmctbGVmdDoxMHB4O3RleHQtYWxpZ246bGVmdDt3aGl0ZS1zcGFjZTpub3JtYWw7d2lkdGg6MjAwcHg7d29yZC13cmFwOmFueXdoZXJlfS5zdGFjay1mcmFtZS1saW5lbm9bX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21heC13aWR0aDo4MHB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO3dpZHRoOjgwcHh9LnN0YWNrLXRyYWNlLWF1eC1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOjE1cHg7cGFkZGluZy1sZWZ0OjI0cHh9LnN0YWNrLXRyYWNlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlYmViZWI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWZsb3c6Y29sdW1uO2ZvbnQtc2l6ZToxMHB4O2ZvbnQtZmFtaWx5OiJSb2JvdG8gTW9ubyIsbW9ub3NwYWNlO2hlaWdodDoxMDAlO21hcmdpbi1sZWZ0OjhweDttYXgtaGVpZ2h0OjM2MHB4O292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6aGlkZGVuO3BhZGRpbmctbGVmdDo4cHg7d2lkdGg6MTAwJX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc3RhY2stdHJhY2UtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnN0YWNrLXRyYWNlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1NTV9LnN0YWNrLXRyYWNlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowIDVweCAzcHggLTNweCAjY2NjO3BhZGRpbmctYm90dG9tOjNweH0uc3RhY2stdHJhY2UtaG9zdC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpncmF5fS5zdGFjay10cmFjZS10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6Ym9sZH0uc3RpY2stdG8tYm90dG9tbW9zdC1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjEycHg7cGFkZGluZy1yaWdodDozcHh9J119KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTTAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJzdGFjay10cmFjZS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3N0YWNrX3RyYWNlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7Y29kZUxvY2F0aW9uVHlwZTpbe3R5cGU6ZH1dLG9wVHlwZTpbe3R5cGU6ZH1dLG9wTmFtZTpbe3R5cGU6ZH1dLGV4ZWN1dGlvbkluZGV4Olt7dHlwZTpkfV0sc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU6W3t0eXBlOmR9XSxzdGFja0ZyYW1lc0ZvckRpc3BsYXk6W3t0eXBlOmR9XSxvblNvdXJjZUxpbmVDbGlja2VkOlt7dHlwZTpCfV0sc3RhY2tGcmFtZUFycmF5Olt7dHlwZTpJdCxhcmdzOlsic3RhY2tGcmFtZUFycmF5Il19XX0pfSkoKTt2YXIgY2Q9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY29kZUxvY2F0aW9uVHlwZSQ9dGhpcy5zdG9yZS5waXBlKHplKGN0KHprLGU9PmU9PT1udWxsP251bGw6ZS5jb2RlTG9jYXRpb25UeXBlKSkpLHRoaXMub3BUeXBlJD10aGlzLnN0b3JlLnBpcGUoemUoY3QoemssZT0+ZT09PW51bGw/bnVsbDplLm9wVHlwZSkpKSx0aGlzLm9wTmFtZSQ9dGhpcy5zdG9yZS5waXBlKHplKGN0KHprLGU9PmU9PT1udWxsfHxlLmNvZGVMb2NhdGlvblR5cGUhPT1kbS5HUkFQSF9PUF9DUkVBVElPTj9udWxsOmUub3BOYW1lKSkpLHRoaXMuZXhlY3V0aW9uSW5kZXgkPXRoaXMuc3RvcmUucGlwZSh6ZShjdCh6ayxlPT5lPT09bnVsbHx8ZS5jb2RlTG9jYXRpb25UeXBlIT09ZG0uRVhFQ1VUSU9OP251bGw6ZS5leGVjdXRpb25JbmRleCkpKSx0aGlzLnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlJD10aGlzLnN0b3JlLnBpcGUoemUobGx0KSksdGhpcy5zdGFja0ZyYW1lc0ZvckRpc3BsYXkkPXRoaXMuc3RvcmUucGlwZSh6ZShjdChybHQsX3osKGUsbyk9PntpZihlPT09bnVsbClyZXR1cm4gbnVsbDtsZXQgaT1bXTtmb3IobGV0IGEgb2YgZSl7bGV0e2hvc3RfbmFtZTpyLGZpbGVfcGF0aDpzLGxpbmVubzpsLGZ1bmN0aW9uX25hbWU6Y309YSxtPXMuc3BsaXQoIi8iKSxmPW1bbS5sZW5ndGgtMV0scD1vIT09bnVsbCYmcj09PW8uaG9zdF9uYW1lJiZzPT09by5maWxlX3BhdGgsZz1wJiZsPT09by5saW5lbm87aS5wdXNoKHtob3N0X25hbWU6cixmaWxlX3BhdGg6cyxjb25jaXNlX2ZpbGVfcGF0aDpmLGxpbmVubzpsLGZ1bmN0aW9uX25hbWU6YyxiZWxvbmdzVG9Gb2N1c2VkRmlsZTpwLGZvY3VzZWQ6Z30pfXJldHVybiBpfSkpKX1vblNvdXJjZUxpbmVDbGlja2VkKHQpe2xldHtob3N0X25hbWU6ZSxmaWxlX3BhdGg6byxsaW5lbm86aSxmdW5jdGlvbl9uYW1lOmF9PXQscj17aG9zdF9uYW1lOmUsZmlsZV9wYXRoOm8sbGluZW5vOmksZnVuY3Rpb25fbmFtZTphfTt0aGlzLnN0b3JlLmRpc3BhdGNoKEszKHtzdGFja0ZyYW1lOnJ9KSl9fTtjZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxjZCkodihzdCkpfTtjZC5cdTAyNzVjbXA9eih7dHlwZTpjZCxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItc3RhY2stdHJhY2UiXV0sZGVjbHM6Nyx2YXJzOjE4LGNvbnN0czpbWzMsImNvZGVMb2NhdGlvblR5cGUiLCJvcFR5cGUiLCJvcE5hbWUiLCJleGVjdXRpb25JbmRleCIsInN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIiwic3RhY2tGcmFtZXNGb3JEaXNwbGF5Iiwib25Tb3VyY2VMaW5lQ2xpY2tlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwic3RhY2stdHJhY2UtY29tcG9uZW50IiwwKSxBKCJvblNvdXJjZUxpbmVDbGlja2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblNvdXJjZUxpbmVDbGlja2VkKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksWCg0LCJhc3luYyIpLFgoNSwiYXN5bmMiKSxYKDYsImFzeW5jIiksaCgpKSx0JjImJlAoImNvZGVMb2NhdGlvblR5cGUiLFEoMSw2LGUuY29kZUxvY2F0aW9uVHlwZSQpKSgib3BUeXBlIixRKDIsOCxlLm9wVHlwZSQpKSgib3BOYW1lIixRKDMsMTAsZS5vcE5hbWUkKSkoImV4ZWN1dGlvbkluZGV4IixRKDQsMTIsZS5leGVjdXRpb25JbmRleCQpKSgic3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUiLFEoNSwxNCxlLnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlJCkpKCJzdGFja0ZyYW1lc0ZvckRpc3BsYXkiLFEoNiwxNixlLnN0YWNrRnJhbWVzRm9yRGlzcGxheSQpKX0sZGlyZWN0aXZlczpbTTBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGNkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGYtZGVidWdnZXItdjItc3RhY2stdHJhY2UiLHRlbXBsYXRlOmAKICAgIDxzdGFjay10cmFjZS1jb21wb25lbnQKICAgICAgW2NvZGVMb2NhdGlvblR5cGVdPSJjb2RlTG9jYXRpb25UeXBlJCB8IGFzeW5jIgogICAgICBbb3BUeXBlXT0ib3BUeXBlJCB8IGFzeW5jIgogICAgICBbb3BOYW1lXT0ib3BOYW1lJCB8IGFzeW5jIgogICAgICBbZXhlY3V0aW9uSW5kZXhdPSJleGVjdXRpb25JbmRleCQgfCBhc3luYyIKICAgICAgW3N0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlXT0iCiAgICAgICAgc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkIHwgYXN5bmMKICAgICAgIgogICAgICBbc3RhY2tGcmFtZXNGb3JEaXNwbGF5XT0ic3RhY2tGcmFtZXNGb3JEaXNwbGF5JCB8IGFzeW5jIgogICAgICAob25Tb3VyY2VMaW5lQ2xpY2tlZCk9Im9uU291cmNlTGluZUNsaWNrZWQoJGV2ZW50KSIKICAgID48L3N0YWNrLXRyYWNlLWNvbXBvbmVudD4KICBgfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gcUF0KG4sdCl7biYxJiZEKDAsInRmLWRlYnVnZ2VyLXYyLWluYWN0aXZlIil9ZnVuY3Rpb24gWkF0KG4sdCl7biYxJiYodSgwLCJkaXYiLDMpLEQoMSwidGYtZGVidWdnZXItdjItYWxlcnRzIiksdSgyLCJkaXYiLDQpLEQoMywidGYtZGVidWdnZXItdjItdGltZWxpbmUiKSxEKDQsInRmLWRlYnVnZ2VyLXYyLWdyYXBoIiksaCgpLEQoNSwidGYtZGVidWdnZXItdjItZ3JhcGgtZXhlY3V0aW9ucyIpLGgoKSx1KDYsImRpdiIsNSksRCg3LCJ0Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXMiKSxEKDgsInRmLWRlYnVnZ2VyLXYyLXN0YWNrLXRyYWNlIiksaCgpKX12YXIgYjA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnJ1bnM9e30sdGhpcy5ydW5JZHM9W10sdGhpcy5hY3RpdmVSdW5JZD1udWxsfX07YjAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8YjApfTtiMC5cdTAyNzVjbXA9eih7dHlwZTpiMCxzZWxlY3RvcnM6W1siZGVidWdnZXItY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIscnVuSWRzOiJydW5JZHMiLGFjdGl2ZVJ1bklkOiJhY3RpdmVSdW5JZCJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImRlYnVnZ2VyLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbMSwidG9wLXNlY3Rpb24iXSxbMSwidG9wLWNlbnRlci1zZWN0aW9uIl0sWzEsImJvdHRvbS1zZWN0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYodSgwLCJkaXYiLDApLGsoMSxxQXQsMSwwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIsMSksaygyLFpBdCw5LDAsIm5nLXRlbXBsYXRlIixudWxsLDIseG4pLGgoKSksdCYyKXtsZXQgbz13ZSgzKTt4KDEpLFAoIm5nSWYiLGUucnVuSWRzLmxlbmd0aD09PTApKCJuZ0lmRWxzZSIsbyl9fSxkaXJlY3RpdmVzOltYdCxlZCxuZCxpZCxhZCxyZCxsZCxjZF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtoZWlnaHQ6MzQlO3BhZGRpbmctdG9wOjZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9LmRlYnVnZ2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0udG9wLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmZsZXg7ZmxleC1ncm93OjE7aGVpZ2h0OjY2JTtwYWRkaW5nOjZweCAwfXRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDoxMHB4O21pbi13aWR0aDoxNjBweDt3aWR0aDpjYWxjKDE1JSAtIDExcHgpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIHRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjNTU1fXRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO21pbi13aWR0aDo1NDBweDt3aWR0aDo1NDBweH10Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMDAlO3dpZHRoOjcwJX10Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxleC1ncm93OjE7aGVpZ2h0OjEwMCU7bWluLXdpZHRoOjU0MHB4O3dpZHRoOjU0MHB4fS50b3AtY2VudGVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmF1dG87d2lkdGg6NTUlfXRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfXRmLWRlYnVnZ2VyLXYyLWdyYXBoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgdGYtZGVidWdnZXItdjItZ3JhcGhbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICB0Zi1kZWJ1Z2dlci12Mi1ncmFwaFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzU1NX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhiMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImRlYnVnZ2VyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZGVidWdnZXJfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vZGVidWdnZXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse3J1bnM6W3t0eXBlOmR9XSxydW5JZHM6W3t0eXBlOmR9XSxhY3RpdmVSdW5JZDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBNZj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ydW5zJD10aGlzLnN0b3JlLnBpcGUoemUodDEpKSx0aGlzLnJ1bnNJZHMkPXRoaXMuc3RvcmUucGlwZSh6ZShjdCh0MSxlPT5PYmplY3Qua2V5cyhlKSkpKSx0aGlzLmFjdGl2ZVJ1bklkJD10aGlzLnN0b3JlLnBpcGUoemUoZ20pKX1uZ09uSW5pdCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goWUkoKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEdJKCkpfX07TWYuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TWYpKHYoc3QpKX07TWYuXHUwMjc1Y21wPXooe3R5cGU6TWYsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bnMiLCJydW5JZHMiLCJhY3RpdmVSdW5JZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwiZGVidWdnZXItY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSksdCYyJiZQKCJydW5zIixRKDEsMyxlLnJ1bnMkKSkoInJ1bklkcyIsUSgyLDUsZS5ydW5zSWRzJCkpKCJhY3RpdmVSdW5JZCIsUSgzLDcsZS5hY3RpdmVSdW5JZCQpKX0sZGlyZWN0aXZlczpbYjBdLHBpcGVzOltvZV0sc3R5bGVzOltgW19uZ2hvc3QtJUNPTVAlXSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9YF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTWYsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJ0Zi1kZWJ1Z2dlci12MiIsdGVtcGxhdGU6YAogICAgPGRlYnVnZ2VyLWNvbXBvbmVudAogICAgICBbcnVuc109InJ1bnMkIHwgYXN5bmMiCiAgICAgIFtydW5JZHNdPSJydW5zSWRzJCB8IGFzeW5jIgogICAgICBbYWN0aXZlUnVuSWRdPSJhY3RpdmVSdW5JZCQgfCBhc3luYyIKICAgID48L2RlYnVnZ2VyLWNvbXBvbmVudD4KICBgLHN0eWxlczpbYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICBgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO3ZhciBMaz0iZGVidWdnZXItdjIiO3ZhciBfbHQ9MmUzLENsdD02ZTQsUUF0PTI7ZnVuY3Rpb24gS0F0KG4pe3JldHVybiBuPkNsdD9DbHQ6bj5fbHQqUUF0P246X2x0fWZ1bmN0aW9uIEZZKG4sdCxlLG8saSl7aWYoZTw9MHx8IU51bWJlci5pc0ludGVnZXIoZSkpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBhZ2VTaXplOiAke2V9YCk7aWYodD5vKXRocm93IG5ldyBFcnJvcihgZW5kIGluZGV4ICgke3R9KSBleGNlZWRzIHRvdGFsIG51bWJlciBvZiBpdGVtcyAoJHtvfSlgKTtpZih0LW4+ZSl0aHJvdyBuZXcgRXJyb3IoImJlZ2luLWVuZCBzcGFuIGV4Y2VlZHMgcGFnZSBzaXplLCB3aGljaCBpcyBub3QgYWxsb3dlZCIpO2xldCBhPVtdLHI9TWF0aC5mbG9vcihuL2UpOyghKHIgaW4gaSl8fGlbcl08ZSYmciplK2lbcl08bykmJmEucHVzaChyKTtsZXQgcz1NYXRoLmZsb29yKCh0LTEpL2UpO3JldHVybiBzIT09ciYmKCEocyBpbiBpKXx8cyplK2lbc108dCYmdDxvKSYmYS5wdXNoKHMpLGF9ZnVuY3Rpb24gSkF0KG4sdCxlKXtyZXR1cm4gbi5waXBlKHE3KG89Pm8ucGlwZShPbih0KSxydygoWyxpXSk9PnVnKGkpKSkpLFBlKGUpLEcoKCk9Pnt9KSl9dmFyIEdNPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1lLHRoaXMuZGF0YVNvdXJjZT1vLHRoaXMubG9hZERhdGEkPU1hKCgpPT57bGV0IGk9dGhpcy5sb2FkRGVidWdnZXJSdW5zKHluKHRoaXMub25EZWJ1Z2dlckRhdGFQb2xsKCksdGhpcy5vbkNvcmVSZWxvYWQoKSkpLnBpcGUoQmMoKSksYT10aGlzLmxvYWRTb3VyY2VGaWxlTGlzdChpKSxyPXRoaXMuY3JlYXRlTnVtRXhlY3V0aW9uTG9hZGVyKGkpLHM9dGhpcy5jcmVhdGVOdW1BbGVydHNBbmRCcmVha2Rvd25Mb2FkZXIoaSksbD10aGlzLm9uQWxlcnRUeXBlRm9jdXNlZCgpLGM9dGhpcy5mZXRjaEV4ZWN1dGlvbkRpZ2VzdHNGb3JBbGVydFR5cGVGb2N1cyhsKSxtPXRoaXMuY3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRldGVjdG9yKHIpLnBpcGUoQmMoKSksZj10aGlzLmNyZWF0ZUV4ZWN1dGlvbkRpZ2VzdExvYWRlcih5bih0aGlzLm9uRXhlY3V0aW9uU2Nyb2xsKCksdGhpcy5jcmVhdGVJbml0aWFsRXhlY3V0aW9uRGlnZXN0KG0pLGMpKSxwPXRoaXMuY3JlYXRlRXhlY3V0aW9uRGF0YUFuZFN0YWNrRnJhbWVzTG9hZGVyKHluKHRoaXMub25FeGVjdXRpb25EaWdlc3RGb2N1c2VkKCksbS5waXBlKE9uKHRoaXMuc3RvcmUuc2VsZWN0KGdtKSx0aGlzLnN0b3JlLnNlbGVjdChSWSkpLEcoKFssTyxiXSk9Pih7YWN0aXZlUnVuSWQ6Tyxsb2FkZWRFeGVjdXRpb25EYXRhOmIsZm9jdXNJbmRleDowfSkpKSkpLGc9dGhpcy5jcmVhdGVOdW1HcmFwaEV4ZWN1dGlvbkxvYWRlcihpKSxfPXRoaXMub25Tb3VyY2VGaWxlRm9jdXNlZCgpLE09dGhpcy5sb2FkR3JhcGhFeGVjdXRpb25QYWdlcyh0aGlzLm9uR3JhcGhFeGVjdXRpb25TY3JvbGwoKSkseT10aGlzLmxvYWRHcmFwaE9wU3RhY2tGcmFtZXModGhpcy5sb2FkR3JhcGhPcEluZm8oKSk7cmV0dXJuIHluKHMsZixwLGcsYSxfLE0seSkucGlwZShHKCgpPT4oe30pKSl9LHtkaXNwYXRjaDohMX0pfW9uRGVidWdnZXJEYXRhUG9sbCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoRm8oWUkpLHRpKHQ9PkpBdChkbih0KSx0aGlzLnN0b3JlLnNlbGVjdChVc3QpLnBpcGUoRyhlPT5LQXQoZSkpKSx0aGlzLmFjdGlvbnMkLnBpcGUoRm8oR0kpKSkpLGFuKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKEVrKCkpKSxHKCgpPT57fSkpfW9uQ29yZVJlbG9hZCgpe3JldHVybiB5bih0aGlzLmFjdGlvbnMkLnBpcGUoRm8obXAsS20pKSx0aGlzLmFjdGlvbnMkLnBpcGUoRm8oS2IpKS5waXBlKE9uKHRoaXMuc3RvcmUuc2VsZWN0KGJZKSksdWUoKFssdF0pPT50LnN0YXRlPT09S3QuTk9UX0xPQURFRHx8dC5zdGF0ZT09PUt0LkZBSUxFRCYmdC5sYXN0TG9hZGVkVGltZUluTXM9PT1udWxsKSkpLnBpcGUoT24odGhpcy5zdG9yZS5zZWxlY3QoZW0pKSx1ZSgoWyx0XSk9PnQ9PT1MayksYW4oKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goRWsoKSkpLEcoKCk9Pnt9KSl9bG9hZERlYnVnZ2VyUnVucyh0KXtyZXR1cm4gdC5waXBlKE9uKHRoaXMuc3RvcmUuc2VsZWN0KGJZKSksdWUoKFsse3N0YXRlOmV9XSk9PmUhPT1LdC5MT0FESU5HKSxhbigoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChXSSgpKSksVW4oKCk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFJ1bnMoKS5waXBlKGFuKGU9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHFJKHtydW5zOmV9KSl9KSxHKCgpPT57fSkpKSl9Y3JlYXRlTnVtRXhlY3V0aW9uTG9hZGVyKHQpe3JldHVybiB0LnBpcGUoT24odGhpcy5zdG9yZS5zZWxlY3QodDEpLHRoaXMuc3RvcmUuc2VsZWN0KGR6KSksdWUoKFssZSxvXSk9Pk9iamVjdC5rZXlzKGUpLmxlbmd0aD4wJiZvLnN0YXRlIT09S3QuTE9BRElORyksYW4oKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goUUkoKSkpLFVuKChbLGVdKT0+e2xldCBvPU9iamVjdC5rZXlzKGUpWzBdLGk9MCxhPTA7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRpZ2VzdHMobyxpLGEpLnBpcGUoYW4ocj0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goS0koe251bUV4ZWN1dGlvbnM6ci5udW1fZGlnZXN0c30pKX0pLEcoKCk9Pnt9KSl9KSl9Y3JlYXRlTnVtR3JhcGhFeGVjdXRpb25Mb2FkZXIodCl7cmV0dXJuIHQucGlwZShPbih0aGlzLnN0b3JlLnNlbGVjdCh0MSksdGhpcy5zdG9yZS5zZWxlY3QoWHN0KSksdWUoKFssZSxvXSk9Pk9iamVjdC5rZXlzKGUpLmxlbmd0aD4wJiZvLnN0YXRlIT09S3QuTE9BRElORyksYW4oKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goZXooKSkpLFVuKChbLGVdKT0+e2xldCBvPU9iamVjdC5rZXlzKGUpWzBdLGk9MCxhPTA7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEdyYXBoRXhlY3V0aW9uRGlnZXN0cyhvLGksYSkucGlwZShhbihyPT57dGhpcy5zdG9yZS5kaXNwYXRjaChueih7bnVtR3JhcGhFeGVjdXRpb25zOnIubnVtX2RpZ2VzdHN9KSl9KSxHKCgpPT57fSkpfSkpfWNyZWF0ZU51bUFsZXJ0c0FuZEJyZWFrZG93bkxvYWRlcih0KXtyZXR1cm4gdC5waXBlKE9uKHRoaXMuc3RvcmUuc2VsZWN0KHQxKSx0aGlzLnN0b3JlLnNlbGVjdChPWSkpLHVlKChbLGUsb10pPT5PYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmby5zdGF0ZSE9PUt0LkxPQURJTkcpLGFuKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKGtrKCkpKSxVbigoWyxlXSk9PntsZXQgbz1PYmplY3Qua2V5cyhlKVswXSxpPTAsYT0wO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hBbGVydHMobyxpLGEpLnBpcGUoYW4ocj0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goWkkoe251bUFsZXJ0czpyLm51bV9hbGVydHMsYWxlcnRzQnJlYWtkb3duOnIuYWxlcnRzX2JyZWFrZG93bn0pKX0pLEcoKCk9Pnt9KSl9KSl9Y3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRldGVjdG9yKHQpe3JldHVybiB0LnBpcGUoT24odGhpcy5zdG9yZS5zZWxlY3QoY3gpLHRoaXMuc3RvcmUuc2VsZWN0KEFrKSksdWUoKFssZSxvXSk9PmU+MCYmT2JqZWN0LmtleXMoby5wYWdlTG9hZGVkU2l6ZXMpLmxlbmd0aD09PTApLEcoKCk9Pnt9KSl9Y3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRpZ2VzdCh0KXtyZXR1cm4gdC5waXBlKE9uKHRoaXMuc3RvcmUuc2VsZWN0KGN4KSx0aGlzLnN0b3JlLnNlbGVjdChnbSksdGhpcy5zdG9yZS5zZWxlY3QoZTIpKSx1ZSgoWywsZV0pPT5lIT09bnVsbCksRygoWyxlLG8saV0pPT57bGV0IHI9TWF0aC5taW4oZSxpKTtyZXR1cm57YmVnaW46MCxlbmQ6cixydW5JZDpvfX0pKX1vbkV4ZWN1dGlvblNjcm9sbCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoRm8oWTMsRzMsVzMpLE9uKHRoaXMuc3RvcmUuc2VsZWN0KGdtKSx0aGlzLnN0b3JlLnNlbGVjdChEayksdGhpcy5zdG9yZS5zZWxlY3QoY3gpLHRoaXMuc3RvcmUuc2VsZWN0KG4yKSx0aGlzLnN0b3JlLnNlbGVjdChlMikpLHVlKChbdF0pPT50IT09bnVsbCksRygoWyx0LGUsbyxpLGFdKT0+e2xldCByPWUscz1NYXRoLm1pbihvLHIraSk7cmV0dXJue3J1bklkOnQsYmVnaW46cixlbmQ6cyxwYWdlU2l6ZTphfX0pLE9uKHRoaXMuc3RvcmUuc2VsZWN0KEFrKSksRygoW3QsZV0pPT4oe3Byb3BzOnQsbG9hZGVkOmUsbWlzc2luZ1BhZ2VzOkZZKHQuYmVnaW4sdC5lbmQsdC5wYWdlU2l6ZSxlLm51bUV4ZWN1dGlvbnMsZS5wYWdlTG9hZGVkU2l6ZXMpfSkpLHVlKCh7bWlzc2luZ1BhZ2VzOnR9KT0+dC5sZW5ndGg+MCksRygoe3Byb3BzOnQsbG9hZGVkOmUsbWlzc2luZ1BhZ2VzOm99KT0+e2xldHtydW5JZDppLHBhZ2VTaXplOmF9PXQscj1vWzBdKmEscz1NYXRoLm1pbihlLm51bUV4ZWN1dGlvbnMsKG9bby5sZW5ndGgtMV0rMSkqYSk7cmV0dXJue2JlZ2luOnIsZW5kOnMscnVuSWQ6aX19KSl9Y3JlYXRlRXhlY3V0aW9uRGlnZXN0TG9hZGVyKHQpe3JldHVybiB0LnBpcGUoT24odGhpcy5zdG9yZS5zZWxlY3QoQWspKSx1ZSgoW3tiZWdpbjplLGVuZDpvfSxpXSk9Pm8+ZSYmIVZzdChpLmxvYWRpbmdSYW5nZXMsZSxvKSksYW4oKFt7YmVnaW46ZSxlbmQ6b31dKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goSkkoe2JlZ2luOmUsZW5kOm99KSl9KSxVbigoW3tydW5JZDplLGJlZ2luOm8sZW5kOml9XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRpZ2VzdHMoZSxvLGkpLnBpcGUoYW4oYT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goJEkoYSkpfSksRygoKT0+e30pKSkpfW9uRXhlY3V0aW9uRGlnZXN0Rm9jdXNlZCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoRm8ocTMpLE9uKHRoaXMuc3RvcmUuc2VsZWN0KGdtKSx0aGlzLnN0b3JlLnNlbGVjdChSWSksdGhpcy5zdG9yZS5zZWxlY3QoRGspKSxHKChbdCxlLG8saV0pPT57bGV0IGE9aSt0LmRpc3BsYXlJbmRleDtyZXR1cm57YWN0aXZlUnVuSWQ6ZSxsb2FkZWRFeGVjdXRpb25EYXRhOm8sZm9jdXNJbmRleDphfX0pKX1jcmVhdGVFeGVjdXRpb25EYXRhQW5kU3RhY2tGcmFtZXNMb2FkZXIodCl7cmV0dXJuIHQucGlwZSh1ZSgoe2FjdGl2ZVJ1bklkOmUsbG9hZGVkRXhlY3V0aW9uRGF0YTpvLGZvY3VzSW5kZXg6aX0pPT5lIT09bnVsbCYmaSE9PW51bGwmJm9baV09PT12b2lkIDApLFVuKCh7YWN0aXZlUnVuSWQ6ZSxmb2N1c0luZGV4Om99KT0+e2xldCBpPW8sYT1pKzE7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRhdGEoZSxpLGEpLnBpcGUoYW4ocj0+e3RoaXMuc3RvcmUuZGlzcGF0Y2godHoocikpfSksRyhyPT4oe2V4ZWN1dGlvbkRhdGE6cixiZWdpbjppLGVuZDphfSkpKX0pLEcoKHtleGVjdXRpb25EYXRhOmV9KT0+ZS5leGVjdXRpb25zWzBdKSxPbih0aGlzLnN0b3JlLnNlbGVjdChnbSksdGhpcy5zdG9yZS5zZWxlY3QoRVkpKSx1ZSgoW2UsbyxpXSk9PntpZihvPT09bnVsbClyZXR1cm4hMTtmb3IobGV0IGEgb2YgZS5zdGFja19mcmFtZV9pZHMpaWYoaVthXT09PXZvaWQgMClyZXR1cm4hMDtyZXR1cm4hMX0pLFVuKChbZSxvXSk9PntsZXQgaT1lLnN0YWNrX2ZyYW1lX2lkcztyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoU3RhY2tGcmFtZXMobyxpKS5waXBlKGFuKGE9PntsZXQgcj17fTtmb3IobGV0IHM9MDtzPGkubGVuZ3RoOysrcylyW2lbc11dPWEuc3RhY2tfZnJhbWVzW3NdO3RoaXMuc3RvcmUuZGlzcGF0Y2goTmsoe3N0YWNrRnJhbWVzOnJ9KSl9KSxHKCgpPT57fSkpfSkpfW9uR3JhcGhFeGVjdXRpb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKEZvKFozKSxscigxMDApLE9uKHRoaXMuc3RvcmUuc2VsZWN0KGdtKSx0aGlzLnN0b3JlLnNlbGVjdChJayksdGhpcy5zdG9yZS5zZWxlY3QoUXN0KSksdWUoKFssdCxlXSk9PnQhPT1udWxsJiZlPjApLEcoKFssdCxlLG9dKT0+KHtydW5JZDp0LG51bUdyYXBoRXhlY3V0aW9uczplLHNjcm9sbEJlZ2luSW5kZXg6b30pKSxPbih0aGlzLnN0b3JlLnNlbGVjdChKc3QpLHRoaXMuc3RvcmUuc2VsZWN0KEtzdCksdGhpcy5zdG9yZS5zZWxlY3QoJHN0KSx0aGlzLnN0b3JlLnNlbGVjdCh0bHQpKSxHKChbe3J1bklkOnQsbnVtR3JhcGhFeGVjdXRpb25zOmUsc2Nyb2xsQmVnaW5JbmRleDpvfSxpLGEscixzXSk9PntsZXQgbD1GWShvLE1hdGgubWluKG8rYSxlKSxpLGUscyk7cmV0dXJuIGw9bC5maWx0ZXIoYz0+ci5pbmRleE9mKGMpPT09LTEpLHtydW5JZDp0LG1pc3NpbmdQYWdlczpsLHBhZ2VTaXplOmksbnVtR3JhcGhFeGVjdXRpb25zOmV9fSkpfWxvYWRHcmFwaEV4ZWN1dGlvblBhZ2VzKHQpe3JldHVybiB0LnBpcGUodWUoKHttaXNzaW5nUGFnZXM6ZX0pPT5lLmxlbmd0aD4wKSxhbigoe21pc3NpbmdQYWdlczplfSk9PntlLmZvckVhY2gobz0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gob3ooe3BhZ2VJbmRleDpvfSkpfSl9KSxVbigoe3J1bklkOmUsbWlzc2luZ1BhZ2VzOm8scGFnZVNpemU6aSxudW1HcmFwaEV4ZWN1dGlvbnM6YX0pPT57bGV0IHI9b1swXSppLHM9TWF0aC5taW4oKG9bby5sZW5ndGgtMV0rMSkqaSxhKTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoR3JhcGhFeGVjdXRpb25EYXRhKGUscixzKS5waXBlKGFuKGw9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGl6KGwpKX0pLEcoKCk9Pnt9KSl9KSl9bG9hZEdyYXBoT3BJbmZvKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShGbyhRMyxYMyksT24odGhpcy5zdG9yZS5zZWxlY3QoZ20pLHRoaXMuc3RvcmUuc2VsZWN0KGFsdCkpLHVlKChbdCxlLG9dKT0+e2xldHtncmFwaF9pZDppLG9wX25hbWU6YX09dDtyZXR1cm4gZSE9PW51bGwmJihvW2ldPT09dm9pZCAwfHwhb1tpXS5oYXMoYSl8fCEob1tpXS5nZXQoYSk9PT1LdC5MT0FESU5HfHxvW2ldLmdldChhKT09PUt0LkxPQURFRCkpfSksYW4oKFt7Z3JhcGhfaWQ6dCxvcF9uYW1lOmV9XSk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goYXooe2dyYXBoX2lkOnQsb3BfbmFtZTplfSkpKSxVbigoW3QsZV0pPT57bGV0e2dyYXBoX2lkOm8sb3BfbmFtZTppfT10O3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hHcmFwaE9wSW5mbyhlLG8saSkucGlwZShhbihhPT50aGlzLnN0b3JlLmRpc3BhdGNoKHJ6KHtncmFwaE9wSW5mb1Jlc3BvbnNlOmF9KSkpLEcoYT0+KHtydW5JZDplLHN0YWNrRnJhbWVJZHM6YS5zdGFja19mcmFtZV9pZHN9KSkpfSkpfWxvYWRHcmFwaE9wU3RhY2tGcmFtZXModCl7cmV0dXJuIHQucGlwZShPbih0aGlzLnN0b3JlLnNlbGVjdChFWSkpLEcoKFt7cnVuSWQ6ZSxzdGFja0ZyYW1lSWRzOm99LGldKT0+e2xldCBhPW8uZmlsdGVyKHI9Pmlbcl09PT12b2lkIDApO3JldHVybntydW5JZDplLG1pc3NpbmdTdGFja0ZyYW1lSWRzOmF9fSksdWUoKHtydW5JZDplLG1pc3NpbmdTdGFja0ZyYW1lSWRzOm99KT0+ZSE9PW51bGwmJm8ubGVuZ3RoPjApLFVuKCh7cnVuSWQ6ZSxtaXNzaW5nU3RhY2tGcmFtZUlkczpvfSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFN0YWNrRnJhbWVzKGUsbykucGlwZShhbihpPT57bGV0IGE9e307Zm9yKGxldCByPTA7cjxvLmxlbmd0aDsrK3IpYVtvW3JdXT1pLnN0YWNrX2ZyYW1lc1tyXTt0aGlzLnN0b3JlLmRpc3BhdGNoKE5rKHtzdGFja0ZyYW1lczphfSkpfSksRygoKT0+e30pKSkpfW9uQWxlcnRUeXBlRm9jdXNlZCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUoRm8oVTMpLE9uKHRoaXMuc3RvcmUuc2VsZWN0KGdtKSx0aGlzLnN0b3JlLnNlbGVjdChweiksdGhpcy5zdG9yZS5zZWxlY3QoR3N0KSx0aGlzLnN0b3JlLnNlbGVjdChXc3QpLHRoaXMuc3RvcmUuc2VsZWN0KE9ZKSksdWUoKFssdCxlLG8saSxhXSk9PnQhPT1udWxsJiZlIT09bnVsbCYmbz4wJiYoaT09PW51bGx8fE9iamVjdC5rZXlzKGkpLmxlbmd0aDxvKSYmYS5zdGF0ZSE9PUt0LkxPQURJTkcpLGFuKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKGtrKCkpKSxVbigoWyx0LGVdKT0+dGhpcy5kYXRhU291cmNlLmZldGNoQWxlcnRzKHQsMCwtMSxlKSksYW4oKHtudW1fYWxlcnRzOnQsYWxlcnRzX2JyZWFrZG93bjplLGFsZXJ0X3R5cGU6byxiZWdpbjppLGVuZDphLGFsZXJ0czpyfSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFhJKHtudW1BbGVydHM6dCxhbGVydHNCcmVha2Rvd246ZSxhbGVydFR5cGU6byxiZWdpbjppLGVuZDphLGFsZXJ0czpyfSkpfSkpfWZldGNoRXhlY3V0aW9uRGlnZXN0c0ZvckFsZXJ0VHlwZUZvY3VzKHQpe3JldHVybiB0LnBpcGUoT24odGhpcy5zdG9yZS5zZWxlY3QoZTIpLHRoaXMuc3RvcmUuc2VsZWN0KG4yKSx0aGlzLnN0b3JlLnNlbGVjdChjeCksdGhpcy5zdG9yZS5zZWxlY3QoQWspLHRoaXMuc3RvcmUuc2VsZWN0KGdtKSksRygoW2UsbyxpLGEscixzXSk9PntsZXQgYz1lLmFsZXJ0c1swXS5leGVjdXRpb25faW5kZXgsbT1GWShNYXRoLm1heCgwLGMtTWF0aC5mbG9vcihpLzIpKSxNYXRoLm1pbihjK01hdGguZmxvb3IoaS8yKSxhKSxvLGEsci5wYWdlTG9hZGVkU2l6ZXMpO2lmKG0ubGVuZ3RoPT09MClyZXR1cm57cnVuSWQ6cyxiZWdpbjowLGVuZDowfTt7bGV0IGY9bVswXSpvLHA9TWF0aC5taW4oci5udW1FeGVjdXRpb25zLChtW20ubGVuZ3RoLTFdKzEpKm8pO3JldHVybntydW5JZDpzLGJlZ2luOmYsZW5kOnB9fX0pKX1sb2FkU291cmNlRmlsZUxpc3QodCl7cmV0dXJuIHQucGlwZShPbih0aGlzLnN0b3JlLnNlbGVjdChnbSksdGhpcy5zdG9yZS5zZWxlY3Qoc2x0KSksdWUoKFssZSxvXSk9PmUhPT1udWxsJiZvLnN0YXRlIT09S3QuTE9BRElORyksYW4oKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goc3ooKSkpLFVuKChbLGVdKT0+dGhpcy5kYXRhU291cmNlLmZldGNoU291cmNlRmlsZUxpc3QoZSkucGlwZShhbihvPT57bGV0IGk9W107by5mb3JFYWNoKChbYSxyXSk9PntpLnB1c2goe2hvc3RfbmFtZTphLGZpbGVfcGF0aDpyfSl9KSx0aGlzLnN0b3JlLmRpc3BhdGNoKGx6KHtzb3VyY2VGaWxlczppfSkpfSksRygoKT0+e30pKSkpfW9uU291cmNlRmlsZUZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKEZvKEszKSxPbih0aGlzLnN0b3JlLnNlbGVjdChnbSksdGhpcy5zdG9yZS5zZWxlY3Qoa1kpLHRoaXMuc3RvcmUuc2VsZWN0KGh6KSksRygoW3QsZSxvLGldKT0+KHtydW5JZDplLHN0YWNrRnJhbWU6dC5zdGFja0ZyYW1lLGZpbGVJbmRleDpvLGZpbGVDb250ZW50Oml9KSksdWUoKHtydW5JZDp0LGZpbGVDb250ZW50OmV9KT0+dCE9PW51bGwmJmUhPT1udWxsJiZlLmxvYWRTdGF0ZT09PUt0Lk5PVF9MT0FERUQpLGFuKCh7c3RhY2tGcmFtZTp0fSk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goY3ooe2hvc3RfbmFtZTp0Lmhvc3RfbmFtZSxmaWxlX3BhdGg6dC5maWxlX3BhdGh9KSkpLFVuKCh7ZmlsZUluZGV4OnQscnVuSWQ6ZX0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hTb3VyY2VGaWxlKGUsdCkucGlwZShhbihvPT57dGhpcy5zdG9yZS5kaXNwYXRjaChteihvKSl9KSxHKCgpPT57fSkpKSl9fTtHTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxHTSkoSShUbyksSShzdCksSSh0ZCkpfTtHTS5cdTAyNzVwcm92PVB0KHt0b2tlbjpHTSxmYWN0b3J5OkdNLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhHTSxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUb30se3R5cGU6c3R9LHt0eXBlOnRkfV19LG51bGwpfSkoKTt2YXIgUnU9Y2xhc3N7fTtSdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxSdSl9O1J1Llx1MDI3NW1vZD1xKHt0eXBlOlJ1fSk7UnUuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUnUsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbbTAsbmRdLGltcG9ydHM6W1ldLGV4cG9ydHM6W25kXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChSdSx7ZGVjbGFyYXRpb25zOlttMCxuZF0saW1wb3J0czpbWV0sZXhwb3J0czpbbmRdfSl9KSgpO3ZhciBFdT1jbGFzc3t9O0V1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEV1KX07RXUuXHUwMjc1bW9kPXEoe3R5cGU6RXV9KTtFdS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhFdSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOlt1MCxnMCxhZF0saW1wb3J0czpbWV0sZXhwb3J0czpbYWRdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEV1LHtkZWNsYXJhdGlvbnM6W3UwLGcwLGFkXSxpbXBvcnRzOltZXSxleHBvcnRzOlthZF19KX0pKCk7dmFyIGRjPWNsYXNze307ZGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZGMpfTtkYy5cdTAyNzVtb2Q9cSh7dHlwZTpkY30pO2RjLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGRjLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0JNLFlNLFVNLFZNLGpNLHVtXSxpbXBvcnRzOltZXSxleHBvcnRzOlt1bV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoZGMse2RlY2xhcmF0aW9uczpbQk0sWU0sVU0sVk0sak0sdW1dLGltcG9ydHM6W1ldLGV4cG9ydHM6W3VtXX0pfSkoKTt2YXIga3U9Y2xhc3N7fTtrdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxrdSl9O2t1Llx1MDI3NW1vZD1xKHt0eXBlOmt1fSk7a3UuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLGRjLHppXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoa3UsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbaDAscmRdLGltcG9ydHM6W1ksZGMsemldLGV4cG9ydHM6W3JkXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChrdSx7ZGVjbGFyYXRpb25zOltoMCxyZF0saW1wb3J0czpbWSxkYyx6aV0sZXhwb3J0czpbcmRdfSl9KSgpO3ZhciBOdT1jbGFzc3t9O051Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE51KX07TnUuXHUwMjc1bW9kPXEoe3R5cGU6TnV9KTtOdS5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE51LFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2MwLGVkXSxleHBvcnRzOltlZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoTnUse2RlY2xhcmF0aW9uczpbYzAsZWRdLGV4cG9ydHM6W2VkXX0pfSkoKTt2YXIgYXI9Y2xhc3N7fTthci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxhcil9O2FyLlx1MDI3NW1vZD1xKHt0eXBlOmFyfSk7YXIuXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhhcixbe3R5cGU6WixhcmdzOlt7ZXhwb3J0czpbVnNdLGRlY2xhcmF0aW9uczpbVnNdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGFyLHtkZWNsYXJhdGlvbnM6W1ZzXSxleHBvcnRzOltWc119KX0pKCk7dmFyICRBdD1bImNvZGVWaWV3ZXJDb250YWluZXIiXSxPMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZmlyc3RUZXh0PW51bGwsdGhpcy5zZWNvbmRUZXh0PW51bGwsdGhpcy5yZW5kZXJTaWRlQnlTaWRlPSEwLHRoaXMubW9uYWNvPW51bGwsdGhpcy5lZGl0b3I9bnVsbCx0aGlzLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUz01MH1vblJlc2l6ZSgpe3RoaXMuZWRpdG9yJiZ0aGlzLmVkaXRvci5sYXlvdXQoKX1uZ09uQ2hhbmdlcyh0KXtpZighdGhpcy5tb25hY28pcmV0dXJuO2xldCBlPSF0aGlzLmVkaXRvcjtlJiYodGhpcy5lZGl0b3I9dGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZURpZmZFZGl0b3IodGhpcy5jb2RlVmlld2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQse3JlYWRPbmx5OiEwLGZvbnRTaXplOjEwLG1pbmltYXA6e2VuYWJsZWQ6ITB9LHJlbmRlclNpZGVCeVNpZGU6dGhpcy5yZW5kZXJTaWRlQnlTaWRlLHRoZW1lOm8yKHRoaXMudXNlRGFya01vZGUpfSkpLChlfHx0LmZpcnN0VGV4dHx8dC5zZWNvbmRUZXh0KSYmdGhpcy5lZGl0b3Iuc2V0TW9kZWwoe29yaWdpbmFsOnRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLmZpcnN0VGV4dHx8IiIpLG1vZGlmaWVkOnRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLnNlY29uZFRleHR8fCIiKX0pLHQucmVuZGVyU2lkZUJ5U2lkZSYmdGhpcy5lZGl0b3IudXBkYXRlT3B0aW9ucyh7cmVuZGVyU2lkZUJ5U2lkZTp0aGlzLnJlbmRlclNpZGVCeVNpZGV9KSx0LnVzZURhcmtNb2RlJiZ0aGlzLm1vbmFjby5lZGl0b3Iuc2V0VGhlbWUobzIodGhpcy51c2VEYXJrTW9kZSkpfX07TzAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TzApfTtPMC5cdTAyNzVjbXA9eih7dHlwZTpPMCxzZWxlY3RvcnM6W1sic291cmNlLWNvZGUtZGlmZi1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZSgkQXQsNyxMKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLmNvZGVWaWV3ZXJDb250YWluZXI9by5maXJzdCl9fSxpbnB1dHM6e2ZpcnN0VGV4dDoiZmlyc3RUZXh0IixzZWNvbmRUZXh0OiJzZWNvbmRUZXh0IixyZW5kZXJTaWRlQnlTaWRlOiJyZW5kZXJTaWRlQnlTaWRlIixtb25hY286Im1vbmFjbyIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIn0sZmVhdHVyZXM6W1dlXSxkZWNsczoyLHZhcnM6MSxjb25zdHM6W1siZGV0ZWN0UmVzaXplIiwiIiwxLCJjb2RlLXZpZXdlci1jb250YWluZXIiLDMsInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIiwib25SZXNpemUiXSxbImNvZGVWaWV3ZXJDb250YWluZXIiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCwxKSxBKCJvblJlc2l6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblJlc2l6ZSgpfSksaCgpKSx0JjImJlAoInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIixlLlJFU0laRV9ERUJPVU5DRV9JTlRFUlZBTF9NUyl9LGRpcmVjdGl2ZXM6W1ZzXSxzdHlsZXM6W2AuY29kZS12aWV3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9YF0sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTzAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCIsdGVtcGxhdGU6YAogICAgPGRpdgogICAgICAjY29kZVZpZXdlckNvbnRhaW5lcgogICAgICBjbGFzcz0iY29kZS12aWV3ZXItY29udGFpbmVyIgogICAgICBkZXRlY3RSZXNpemUKICAgICAgW3Jlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zXT0iUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TIgogICAgICAob25SZXNpemUpPSJvblJlc2l6ZSgpIgogICAgPjwvZGl2PgogIGAsc3R5bGVzOltgCiAgICAgIC5jb2RlLXZpZXdlci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgYF0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7Zmlyc3RUZXh0Olt7dHlwZTpkfV0sc2Vjb25kVGV4dDpbe3R5cGU6ZH1dLHJlbmRlclNpZGVCeVNpZGU6W3t0eXBlOmR9XSxtb25hY286W3t0eXBlOmR9XSx1c2VEYXJrTW9kZTpbe3R5cGU6ZH1dLGNvZGVWaWV3ZXJDb250YWluZXI6W3t0eXBlOkl0LGFyZ3M6WyJjb2RlVmlld2VyQ29udGFpbmVyIix7c3RhdGljOiEwLHJlYWQ6TH1dfV19KX0pKCk7dmFyIFAwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5maXJzdFRleHQ9bnVsbCx0aGlzLnNlY29uZFRleHQ9bnVsbCx0aGlzLnJlbmRlclNpZGVCeVNpZGU9ITAsdGhpcy51c2VEYXJrTW9kZT0hMSx0aGlzLm1vbmFjbyQ9bnVsbH1uZ09uSW5pdCgpe3RoaXMubW9uYWNvJD1EYShieigpKS5waXBlKEcoKCk9PndpbmRvdy5tb25hY28pKX19O1AwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFAwKX07UDAuXHUwMjc1Y21wPXooe3R5cGU6UDAsc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlLWRpZmYiXV0saW5wdXRzOntmaXJzdFRleHQ6ImZpcnN0VGV4dCIsc2Vjb25kVGV4dDoic2Vjb25kVGV4dCIscmVuZGVyU2lkZUJ5U2lkZToicmVuZGVyU2lkZUJ5U2lkZSIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIn0sZGVjbHM6Mix2YXJzOjcsY29uc3RzOltbMywiZmlyc3RUZXh0Iiwic2Vjb25kVGV4dCIsInJlbmRlclNpZGVCeVNpZGUiLCJtb25hY28iLCJ1c2VEYXJrTW9kZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwic291cmNlLWNvZGUtZGlmZi1jb21wb25lbnQiLDApLFgoMSwiYXN5bmMiKSksdCYyJiZQKCJmaXJzdFRleHQiLGUuZmlyc3RUZXh0KSgic2Vjb25kVGV4dCIsZS5zZWNvbmRUZXh0KSgicmVuZGVyU2lkZUJ5U2lkZSIsZS5yZW5kZXJTaWRlQnlTaWRlKSgibW9uYWNvIixRKDEsNSxlLm1vbmFjbyQpKSgidXNlRGFya01vZGUiLGUudXNlRGFya01vZGUpfSxkaXJlY3RpdmVzOltPMF0scGlwZXM6W29lXSxzdHlsZXM6W2Bzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfWBdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFAwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic291cmNlLWNvZGUtZGlmZiIsdGVtcGxhdGU6YAogICAgPHNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50CiAgICAgIFtmaXJzdFRleHRdPSJmaXJzdFRleHQiCiAgICAgIFtzZWNvbmRUZXh0XT0ic2Vjb25kVGV4dCIKICAgICAgW3JlbmRlclNpZGVCeVNpZGVdPSJyZW5kZXJTaWRlQnlTaWRlIgogICAgICBbbW9uYWNvXT0ibW9uYWNvJCB8IGFzeW5jIgogICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSIKICAgID48L3NvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50PgogIGAsc3R5bGVzOltgCiAgICAgIHNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIGBdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2ZpcnN0VGV4dDpbe3R5cGU6ZH1dLHNlY29uZFRleHQ6W3t0eXBlOmR9XSxyZW5kZXJTaWRlQnlTaWRlOlt7dHlwZTpkfV0sdXNlRGFya01vZGU6W3t0eXBlOmR9XX0pfSkoKTt2YXIgZ2M9Y2xhc3N7fTtnYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxnYyl9O2djLlx1MDI3NW1vZD1xKHt0eXBlOmdjfSk7Z2MuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLGFyXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZ2MsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbXzAsc2QsTzAsUDBdLGltcG9ydHM6W1ksYXJdLGV4cG9ydHM6W3NkLFAwXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChnYyx7ZGVjbGFyYXRpb25zOltfMCxzZCxPMCxQMF0saW1wb3J0czpbWSxhcl0sZXhwb3J0czpbc2QsUDBdfSl9KSgpO3ZhciBUdT1jbGFzc3t9O1R1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFR1KX07VHUuXHUwMjc1bW9kPXEoe3R5cGU6VHV9KTtUdS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksZ2NdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhUdSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltDMCxsZF0saW1wb3J0czpbWSxnY10sZXhwb3J0czpbbGRdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFR1LHtkZWNsYXJhdGlvbnM6W0MwLGxkXSxpbXBvcnRzOltZLGdjXSxleHBvcnRzOltsZF19KX0pKCk7dmFyIEF1PWNsYXNze307QXUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8QXUpfTtBdS5cdTAyNzVtb2Q9cSh7dHlwZTpBdX0pO0F1Llx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxnY11dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEF1LFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W00wLGNkXSxpbXBvcnRzOltZLGdjXSxleHBvcnRzOltjZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoQXUse2RlY2xhcmF0aW9uczpbTTAsY2RdLGltcG9ydHM6W1ksZ2NdLGV4cG9ydHM6W2NkXX0pfSkoKTt2YXIgRHU9Y2xhc3N7fTtEdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxEdSl9O0R1Llx1MDI3NW1vZD1xKHt0eXBlOkR1fSk7RHUuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLGRjXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRHUsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbcDAsb2RdLGltcG9ydHM6W1ksZGNdLGV4cG9ydHM6W29kXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChEdSx7ZGVjbGFyYXRpb25zOltwMCxvZF0saW1wb3J0czpbWSxkY10sZXhwb3J0czpbb2RdfSl9KSgpO3ZhciBJdT1jbGFzc3t9O0l1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEl1KX07SXUuXHUwMjc1bW9kPXEoe3R5cGU6SXV9KTtJdS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksRHUsTWUsaXJdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJdSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltkMCxpZF0saW1wb3J0czpbWSxEdSxNZSxpcl0sZXhwb3J0czpbaWRdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEl1LHtkZWNsYXJhdGlvbnM6W2QwLGlkXSxpbXBvcnRzOltZLER1LE1lLGlyXSxleHBvcnRzOltpZF19KX0pKCk7dmFyIHp1PWNsYXNze307enUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8enUpfTt6dS5cdTAyNzVtb2Q9cSh7dHlwZTp6dX0pO3p1Llx1MDI3NWluaj1XKHtpbXBvcnRzOltbUnUsWSxTaSxrdSxFdSxOdSxUdSxBdSxTdSxJdSxjby5mb3JGZWF0dXJlKEozLE1ZKSxIby5mb3JGZWF0dXJlKFtHTV0pLHJpLmZvclBsdWdpbihMayxNZildXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh6dSxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltiMCxNZl0saW1wb3J0czpbUnUsWSxTaSxrdSxFdSxOdSxUdSxBdSxTdSxJdSxjby5mb3JGZWF0dXJlKEozLE1ZKSxIby5mb3JGZWF0dXJlKFtHTV0pLHJpLmZvclBsdWdpbihMayxNZildLGV4cG9ydHM6W01mXSxlbnRyeUNvbXBvbmVudHM6W01mXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldCh6dSx7ZGVjbGFyYXRpb25zOltiMCxNZl0saW1wb3J0czpbUnUsWSxTaSxrdSxFdSxOdSxUdSxBdSxTdSxJdSxObyxxaSxyaV0sZXhwb3J0czpbTWZdfSl9KSgpO3ZhciBQej1OdCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBDbG9zZWQiKSx5ej1OdCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgUGFuZSBUb2dnbGVkIikseHo9TnQoIltNZXRyaWNzXSBNZXRyaWNzIFRhZyBNZXRhZGF0YSBSZXF1ZXN0ZWQiKSx2ej1OdCgiW01ldHJpY3NdIE1ldHJpY3MgVGFnIE1ldGFkYXRhIExvYWRlZCIsYmUoKSksd3o9TnQoIltNZXRyaWNzXSBNZXRyaWNzIFRhZyBNZXRhZGF0YSBGYWlsZWQiKSxTej1OdCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgQ2hhbmdlIFRvb2x0aXAiLGJlKCkpLEMyZT1OdCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgVG9nZ2xlIFNob3cgRGF0YSBEb3dubG9hZCIpLFJ6PU50KCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFRvZ2dsZSBJZ25vcmUgT3V0bGllciIpLEV6PU50KCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBYIEF4aXMgVHlwZSIsYmUoKSksa3o9TnQoIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIENhcmQgV2lkdGgiLGJlKCkpLE56PU50KCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFJlc2V0IENhcmQgV2lkdGgiKSxUej1OdCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgU2NhbGFyIFNtb290aGluZyIsYmUoKSksQXo9TnQoIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgUGFydGl0aW9uIE5vbiBNb25vdG9uaWMgWCBUb2dnbGVkIiksRHo9TnQoIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEltYWdlIEJyaWdodG5lc3MiLGJlKCkpLEl6PU50KCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBJbWFnZSBDb250cmFzdCIsYmUoKSkseno9TnQoIltNZXRyaWNzXSBJbWFnZSBCcmlnaHRuZXNzIFNldHRpbmcgUmVzZXQiKSxIej1OdCgiW01ldHJpY3NdIEltYWdlIENvbnRyYXN0IFNldHRpbmcgUmVzZXQiKSxGej1OdCgiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBUb2dnbGUgSW1hZ2UgU2hvdyBBY3R1YWwgU2l6ZSIpLEx6PU50KCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBIaXN0b2dyYW0gTW9kZSIsYmUoKSksQno9TnQoIltNZXRyaWNzXSBNdWx0aXBsZSBUaW1lIFNlcmllcyBSZXF1ZXN0ZWQiLGJlKCkpLFZ6PU50KCJbTWV0cmljc10gRmV0Y2ggVGltZSBTZXJpZXMgUmVxdWVzdCBGYWlsZWQiLGJlKCkpLGp6PU50KCJbTWV0cmljc10gRmV0Y2ggVGltZSBTZXJpZXMgUmVzcG9uc2UgTG9hZGVkIixiZSgpKSxpMj1OdCgiW01ldHJpY3NdIENhcmQgVmlzaWJpbGl0eSBDaGFuZ2VkIixiZSgpKSxVej1OdCgiW01ldHJpY3NdIENhcmQgU3RlcCBTbGlkZXIgQ2hhbmdlZCIsYmUoKSksWXo9TnQoIltNZXRyaWNzXSBUYWcgRmlsdGVyIENoYW5nZWQiLGJlKCkpLEd6PU50KCJbTWV0cmljc10gTWV0cmljcyBUYWcgR3JvdXAgRXhwYW5zaW9uIENoYW5nZWQiLGJlKCkpLGEyPU50KCJbTWV0cmljc10gQ2FyZCBQaW4gU3RhdGUgVG9nZ2xlZCIsYmUoKSksV3o9TnQoIltNZXRyaWNzXSBUb2dnbGUgVmlzaWJsZSBQbHVnaW4iLGJlKCkpLHF6PU50KCJbTWV0cmljc10gVG9nZ2xlIFNob3cgQWxsIFBsdWdpbnMiKSxmeD1OdCgiW01ldHJpY3NdIFRpbWUgU2VsZWN0aW9uIENoYW5nZWQiLGJlKCkpLE1sdD1OdCgiW01ldHJpY3NdIExpbmtlZCBUaW1lIFNlbGVjdGlvbiBDbGVhcmVkIiksWno9TnQoIltNZXRyaWNzXSBMaW5rZWQgVGltZSBFbmFibGUgVG9nZ2xlIixiZSgpKSxibHQ9TnQoIltNZXRyaWNzXSBTb3J0aW5nIERhdGEgVGFibGUgQnkgSGVhZGVyIixiZSgpKSxweD1OdCgiW01ldHJpY3NdIFRpbWUgU2VsZWN0b3IgRW5hYmxlIFRvZ2dsZSIsYmUoKSksWHo9TnQoIltNZXRyaWNzXSBSYW5nZSBTZWxlY3Rpb24gVG9nZ2xlZCIsYmUoKSk7ZnVuY3Rpb24gQmsobix0KXtsZXQgZT17fTtmb3IobGV0IG8gb2YgT2JqZWN0LmtleXMobikpe2xldCBpPW87ZVtpXT10KG5baV0sbyl9cmV0dXJuIGV9ZnVuY3Rpb24gUXoobil7bGV0IHQ9bmV3IE1hcCxlPW4uc2xpY2UoKS5zb3J0KChvLGkpPT5WayhvLnRhZyxpLnRhZykpO2ZvcihsZXQgbyBvZiBlKXtsZXQgaT1lRHQoby50YWcpO3QuaGFzKGkpfHx0LnNldChpLHtncm91cE5hbWU6aSxpdGVtczpbXX0pLHQuZ2V0KGkpLml0ZW1zLnB1c2gobyl9cmV0dXJuWy4uLnQudmFsdWVzKCldfWZ1bmN0aW9uIGVEdChuKXtyZXR1cm4gbi5zcGxpdCgiLyIsMSlbMF19ZnVuY3Rpb24gVmsobix0KXtsZXQgZT0wLG89MDtmb3IoOzspe2lmKGU9PT1uLmxlbmd0aClyZXR1cm4gbz09PXQubGVuZ3RoPzA6LTE7aWYobz09PXQubGVuZ3RoKXJldHVybiAxO2lmKG8xKG5bZV0pJiZvMSh0W29dKSl7bGV0IGk9ZSxhPW87ZT1PbHQobixlKzEpLG89T2x0KHQsbysxKTtsZXQgcj1OdW1iZXIobi5zbGljZShpLGUpKSxzPU51bWJlcih0LnNsaWNlKGEsbykpO2lmKHI8cylyZXR1cm4tMTtpZihyPnMpcmV0dXJuIDE7Y29udGludWV9aWYoTFkobltlXSkpe2lmKCFMWSh0W29dKSlyZXR1cm4tMX1lbHNle2lmKExZKHRbb10pKXJldHVybiAxO2lmKG5bZV08dFtvXSlyZXR1cm4tMTtpZihuW2VdPnRbb10pcmV0dXJuIDF9ZSsrLG8rK319ZnVuY3Rpb24gT2x0KG4sdCl7bGV0IGU7KGZ1bmN0aW9uKGEpe2FbYS5OQVRVUkFMPTBdPSJOQVRVUkFMIixhW2EuUkVBTD0xXT0iUkVBTCIsYVthLkVYUE9ORU5UX1NJR049Ml09IkVYUE9ORU5UX1NJR04iLGFbYS5FWFBPTkVOVD0zXT0iRVhQT05FTlQifSkoZXx8KGU9e30pKTtsZXQgbz1lLk5BVFVSQUwsaT10O2Zvcig7aTxuLmxlbmd0aDtpKyspaWYobz09PWUuTkFUVVJBTCl7aWYobltpXT09PSIuIilvPWUuUkVBTDtlbHNlIGlmKG5baV09PT0iZSJ8fG5baV09PT0iRSIpbz1lLkVYUE9ORU5UX1NJR047ZWxzZSBpZighbzEobltpXSkpYnJlYWt9ZWxzZSBpZihvPT09ZS5SRUFMKXtpZihuW2ldPT09ImUifHxuW2ldPT09IkUiKW89ZS5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIW8xKG5baV0pKWJyZWFrfWVsc2UgaWYobz09PWUuRVhQT05FTlRfU0lHTilpZihvMShuW2ldKXx8bltpXT09PSIrInx8bltpXT09PSItIilvPWUuRVhQT05FTlQ7ZWxzZSBicmVhaztlbHNlIGlmKG89PT1lLkVYUE9ORU5UJiYhbzEobltpXSkpYnJlYWs7cmV0dXJuIGl9ZnVuY3Rpb24gbzEobil7cmV0dXJuIjAiPD1uJiZuPD0iOSJ9ZnVuY3Rpb24gTFkobil7cmV0dXJuIG49PT0iLyJ8fG8xKG4pfWZ1bmN0aW9uIG5EdChuKXtsZXQgdD1bXTtmb3IobGV0IGUgb2YgT2JqZWN0LmtleXMobikpe2xldCBvPWUsaTtpZihCZyhvKSlpZihWZyhvKSl7bGV0IGE9bltvXS50YWdSdW5TYW1wbGVkSW5mbztmb3IobGV0IHIgb2YgT2JqZWN0LmtleXMoYSkpZm9yKGxldCBzIG9mIE9iamVjdC5rZXlzKGFbcl0pKXtsZXR7bWF4U2FtcGxlc1BlclN0ZXA6bH09YVtyXVtzXTtmb3IobGV0IGM9MDtjPGw7YysrKXQucHVzaCh7cGx1Z2luOm8sdGFnOnIscnVuSWQ6cyxzYW1wbGU6YyxudW1TYW1wbGU6bH0pfX1lbHNlIHRocm93IG5ldyBFcnJvcigiTXVsdGktcnVuLCBzYW1wbGVkIHBsdWdpbiBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQiKTtlbHNlIGlmKFZnKG8pKXtpPW5bb10udGFnVG9SdW5zO2ZvcihsZXQgYSBvZiBPYmplY3Qua2V5cyhpKSlmb3IobGV0IHIgb2YgaVthXSl0LnB1c2goe3BsdWdpbjpvLHRhZzphLHJ1bklkOnJ9KX1lbHNle2k9bltvXS50YWdUb1J1bnM7Zm9yKGxldCBhIG9mIE9iamVjdC5rZXlzKGkpKXQucHVzaCh7cGx1Z2luOm8sdGFnOmEscnVuSWQ6bnVsbH0pfX1yZXR1cm4gdH1mdW5jdGlvbiBCWShuLHQsZSl7bGV0e3BsdWdpbjpvLHRhZzppLHJ1bklkOmEsc2FtcGxlOnJ9PXRbbl0scz1wUChlLG8saSxyKTtpZihzKXtpZihhIT09bnVsbCYmcy5ydW5Ub1Nlcmllcy5oYXNPd25Qcm9wZXJ0eShhKSl7bGV0IGM9cy5ydW5Ub1Nlcmllc1thXS5sZW5ndGg7cmV0dXJuIGM+MD9jLTE6bnVsbH1sZXQgbD1PYmplY3QudmFsdWVzKHMucnVuVG9TZXJpZXMpLm1hcChjPT5jLmxlbmd0aCk7aWYobC5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KC4uLmwpLTF9cmV0dXJuIG51bGx9ZnVuY3Rpb24gb0R0KG4sdCxlLG8pe2xldCBpPU9iamVjdC5hc3NpZ24oe30sdCk7Zm9yKGxldCBhIGluIG4pe2lmKCFuLmhhc093blByb3BlcnR5KGEpKWNvbnRpbnVlO2xldCByPUJZKGEsbixlKTtpZihyPT09bnVsbCl7dC5oYXNPd25Qcm9wZXJ0eShhKSYmKGlbYV09bnVsbCk7Y29udGludWV9bGV0IHM9dC5oYXNPd25Qcm9wZXJ0eShhKT90W2FdLmluZGV4Om51bGwsbD1CWShhLG4sbyksYz1zIT09bnVsbCYmcz09PWw7KHMhPT1udWxsJiZzPnJ8fChzPT09bnVsbHx8YykpJiYoaVthXT17aW5kZXg6cixpc0Nsb3Nlc3Q6ITF9KX1yZXR1cm4gaX1mdW5jdGlvbiBQbHQobil7bGV0IHQ9Qmsobi5ydW5Ub0xvYWRTdGF0ZSxlPT5lPT09S3QuTE9BRElORz9LdC5MT0FESU5HOkt0Lk5PVF9MT0FERUQpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3J1blRvTG9hZFN0YXRlOnR9KX1mdW5jdGlvbiB5bHQobix0LGUsbyl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFtuLHQsZXx8IiIsb10pfXZhcntpbml0aWFsU3RhdGU6dmx0LHJlZHVjZXJzOmlEdH09enYoe3RhZ01ldGFkYXRhTG9hZFN0YXRlOntzdGF0ZTpLdC5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSx0YWdNZXRhZGF0YTp7c2NhbGFyczp7dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1RvUnVuczp7fX0saGlzdG9ncmFtczp7dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1RvUnVuczp7fX0saW1hZ2VzOnt0YWdEZXNjcmlwdGlvbnM6e30sdGFnUnVuU2FtcGxlZEluZm86e319fSxjYXJkTGlzdDpbXSxjYXJkVG9QaW5uZWRDb3B5Om5ldyBNYXAsY2FyZFRvUGlubmVkQ29weUNhY2hlOm5ldyBNYXAscGlubmVkQ2FyZFRvT3JpZ2luYWw6bmV3IE1hcCx1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczpbXSxjYXJkTWV0YWRhdGFNYXA6e30sY2FyZFN0ZXBJbmRleDp7fSx0YWdGaWx0ZXI6IiIsdGFnR3JvdXBFeHBhbmRlZDpuZXcgTWFwLGxpbmtlZFRpbWVTZWxlY3Rpb246bnVsbCxsaW5rZWRUaW1lRW5hYmxlZDohMSxzdGVwU2VsZWN0b3JFbmFibGVkOiExLHJhbmdlU2VsZWN0aW9uRW5hYmxlZDohMSxmaWx0ZXJlZFBsdWdpblR5cGVzOm5ldyBTZXQsc3RlcE1pbk1heDp7bWluOjEvMCxtYXg6LTEvMH19LHtpc1NldHRpbmdzUGFuZU9wZW46ITAsdGltZVNlcmllc0RhdGE6e3NjYWxhcnM6e30saGlzdG9ncmFtczp7fSxpbWFnZXM6e319LHNldHRpbmdzOkhFLHNldHRpbmdPdmVycmlkZXM6e30sdmlzaWJsZUNhcmRNYXA6bmV3IE1hcH0sKG4sdCxlKT0+S2ModCxlKT9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7dGFnTWV0YWRhdGFMb2FkU3RhdGU6e3N0YXRlOkt0Lk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LHRhZ01ldGFkYXRhOntzY2FsYXJzOnt0YWdEZXNjcmlwdGlvbnM6e30sdGFnVG9SdW5zOnt9fSxoaXN0b2dyYW1zOnt0YWdEZXNjcmlwdGlvbnM6e30sdGFnVG9SdW5zOnt9fSxpbWFnZXM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdSdW5TYW1wbGVkSW5mbzp7fX19LGNhcmRMaXN0OltdLGNhcmRNZXRhZGF0YU1hcDp7fSx2aXNpYmxlQ2FyZE1hcDpuZXcgTWFwfSkpLFZZPXZsdCxhRHQ9eGEodmx0LFl0KHIzLChuLHtyb3V0ZUtpbmQ6dCxwYXJ0aWFsU3RhdGU6ZX0pPT57aWYodCE9PVdvLkVYUEVSSU1FTlQmJnQhPT1Xby5DT01QQVJFX0VYUEVSSU1FTlQpcmV0dXJuIG47bGV0IG89bmV3IFNldDtmb3IobGV0IG0gb2Ygbi5waW5uZWRDYXJkVG9PcmlnaW5hbC5rZXlzKCkpe2xldHtwbHVnaW46Zix0YWc6cCxydW5JZDpnLHNhbXBsZTpffT1uLmNhcmRNZXRhZGF0YU1hcFttXTtvLmFkZCh5bHQoZixwLGcsXykpfWxldCBpPWUsYT1bXTtmb3IobGV0IG0gb2ZbLi4ubi51bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkcywuLi5pLm1ldHJpY3MucGlubmVkQ2FyZHNdKXtsZXQgZj15bHQobS5wbHVnaW4sbS50YWcsbS5ydW5JZCxtLnNhbXBsZSk7by5oYXMoZil8fChvLmFkZChmKSxhLnB1c2gobSkpfWxldCByPSRqKGEsbi5jYXJkTGlzdCxuLmNhcmRNZXRhZGF0YU1hcCxuLmNhcmRUb1Bpbm5lZENvcHksbi5jYXJkVG9QaW5uZWRDb3B5Q2FjaGUsbi5waW5uZWRDYXJkVG9PcmlnaW5hbCxuLmNhcmRTdGVwSW5kZXgpLHM9aS5tZXRyaWNzLnNtb290aGluZyxsPW4uc2V0dGluZ092ZXJyaWRlcztpZihOdW1iZXIuaXNGaW5pdGUocykmJnMhPT1udWxsKXtsZXQgbT1NYXRoLm1heCh5aXQsTWF0aC5taW4oTkQsTnVtYmVyKHMudG9QcmVjaXNpb24oMykpKSk7bD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7c2NhbGFyU21vb3RoaW5nOm19KX1sZXQgYz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSxyKSx7c2V0dGluZ092ZXJyaWRlczpsfSk7cmV0dXJuIGkubWV0cmljcy50YWdGaWx0ZXIhPT1udWxsJiYoYy50YWdGaWx0ZXI9aS5tZXRyaWNzLnRhZ0ZpbHRlciksY30pLFl0KHBNLChuLHtwYXJ0aWFsU2V0dGluZ3M6dH0pPT57dmFyIGUsbyxpLGE7bGV0IHI9e307aWYodC50b29sdGlwU29ydFN0cmluZylzd2l0Y2godC50b29sdGlwU29ydFN0cmluZyl7Y2FzZSBRYS5ERUZBVUxUOmNhc2UgUWEuQUxQSEFCRVRJQ0FMOnIudG9vbHRpcFNvcnQ9UWEuQUxQSEFCRVRJQ0FMO2JyZWFrO2Nhc2UgUWEuQVNDRU5ESU5HOnIudG9vbHRpcFNvcnQ9UWEuQVNDRU5ESU5HO2JyZWFrO2Nhc2UgUWEuREVTQ0VORElORzpyLnRvb2x0aXBTb3J0PVFhLkRFU0NFTkRJTkc7YnJlYWs7Y2FzZSBRYS5ORUFSRVNUOnIudG9vbHRpcFNvcnQ9UWEuTkVBUkVTVDticmVhaztkZWZhdWx0On10eXBlb2YgdC50aW1lU2VyaWVzQ2FyZE1pbldpZHRoPT0ibnVtYmVyIiYmKHIuY2FyZE1pbldpZHRoPXQudGltZVNlcmllc0NhcmRNaW5XaWR0aCksdHlwZW9mIHQuaWdub3JlT3V0bGllcnM9PSJib29sZWFuIiYmKHIuaWdub3JlT3V0bGllcnM9dC5pZ25vcmVPdXRsaWVycyksdHlwZW9mIHQuc2NhbGFyU21vb3RoaW5nPT0ibnVtYmVyIiYmKHIuc2NhbGFyU21vb3RoaW5nPXQuc2NhbGFyU21vb3RoaW5nKTtsZXQgcz0oZT10LnRpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQpIT09bnVsbCYmZSE9PXZvaWQgMD9lOm4uaXNTZXR0aW5nc1BhbmVPcGVuLGw9KG89dC5zdGVwU2VsZWN0b3JFbmFibGVkKSE9PW51bGwmJm8hPT12b2lkIDA/bzpuLnN0ZXBTZWxlY3RvckVuYWJsZWQsYz0oaT10LnJhbmdlU2VsZWN0aW9uRW5hYmxlZCkhPT1udWxsJiZpIT09dm9pZCAwP2k6bi5yYW5nZVNlbGVjdGlvbkVuYWJsZWQsbT0oYT10LmxpbmtlZFRpbWVFbmFibGVkKSE9PW51bGwmJmEhPT12b2lkIDA/YTpuLmxpbmtlZFRpbWVFbmFibGVkO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2lzU2V0dGluZ3NQYW5lT3BlbjpzLHN0ZXBTZWxlY3RvckVuYWJsZWQ6bCxyYW5nZVNlbGVjdGlvbkVuYWJsZWQ6YyxsaW5rZWRUaW1lRW5hYmxlZDptLHNldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnNldHRpbmdzKSxyKX0pfSksWXQoS20sbXAsbj0+e2xldCB0PW4udGFnTWV0YWRhdGFMb2FkU3RhdGUuc3RhdGU9PT1LdC5MT0FESU5HP0t0LkxPQURJTkc6S3QuTk9UX0xPQURFRCxlPUJrKG4udGltZVNlcmllc0RhdGEsKG8saSk9PkJrKG8sYT0+QmcoaSk/QmsoYSxyPT5QbHQocikpOlBsdChhKSkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3RhZ01ldGFkYXRhTG9hZFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnRhZ01ldGFkYXRhTG9hZFN0YXRlKSx7c3RhdGU6dH0pLHRpbWVTZXJpZXNEYXRhOmV9KX0pLFl0KHh6LG49Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7dGFnTWV0YWRhdGFMb2FkU3RhdGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4udGFnTWV0YWRhdGFMb2FkU3RhdGUpLHtzdGF0ZTpLdC5MT0FESU5HfSl9KSksWXQod3osbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHt0YWdNZXRhZGF0YUxvYWRTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi50YWdNZXRhZGF0YUxvYWRTdGF0ZSkse3N0YXRlOkt0LkZBSUxFRH0pfSkpLFl0KHZ6LChuLHt0YWdNZXRhZGF0YTp0fSk9PntsZXQgZT17c2NhbGFyczp4bHQodCxMby5TQ0FMQVJTKSxoaXN0b2dyYW1zOnhsdCh0LExvLkhJU1RPR1JBTVMpLGltYWdlczp0W0xvLklNQUdFU119LG89e30saT1uRHQoZSksYT1bXTtmb3IobGV0IGcgb2YgaSl7bGV0IF89eml0KGcpO29bX109ZyxhLnB1c2goXyl9bGV0IHI9bi50YWdHcm91cEV4cGFuZGVkO2lmKG4udGFnR3JvdXBFeHBhbmRlZC5zaXplPT09MCl7bGV0IGc9YS5tYXAoTT0+e3ZhciB5O3JldHVybih5PU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvW01dKSx7Y2FyZElkOk19KSkhPT1udWxsJiZ5IT09dm9pZCAwP3k6bnVsbH0pLmZpbHRlcihCb29sZWFuKSxfPVF6KGcpO3I9bmV3IE1hcChuLnRhZ0dyb3VwRXhwYW5kZWQpO2ZvcihsZXQgTSBvZiBfLnNsaWNlKDAsMikpci5zZXQoTS5ncm91cE5hbWUsITApfWxldHtuZXh0Q2FyZFRvUGlubmVkQ29weTpzLG5leHRQaW5uZWRDYXJkVG9PcmlnaW5hbDpsLHBpbm5lZENhcmRNZXRhZGF0YU1hcDpjfT1IaXQobi5jYXJkVG9QaW5uZWRDb3B5Q2FjaGUsbyxhKSxtPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSxjKSxmPUZpdChuLmNhcmRTdGVwSW5kZXgsbSkscD0kaihuLnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLGEsbSxzLG4uY2FyZFRvUGlubmVkQ29weUNhY2hlLGwsZik7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHApLHt0YWdHcm91cEV4cGFuZGVkOnIsdGFnTWV0YWRhdGFMb2FkU3RhdGU6e3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0sdGFnTWV0YWRhdGE6ZSxjYXJkTGlzdDphfSl9KSxZdChZeiwobix7dGFnRmlsdGVyOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHt0YWdGaWx0ZXI6dH0pKSxZdChTeiwobix7c29ydDp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7dG9vbHRpcFNvcnQ6dH0pfSkpLFl0KFJ6LG49Pnt2YXIgdDtsZXQgZT0hKCh0PW4uc2V0dGluZ092ZXJyaWRlcy5pZ25vcmVPdXRsaWVycykhPT1udWxsJiZ0IT09dm9pZCAwP3Q6bi5zZXR0aW5ncy5pZ25vcmVPdXRsaWVycyk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7aWdub3JlT3V0bGllcnM6ZX0pfSl9KSxZdChFeiwobix7eEF4aXNUeXBlOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzZXR0aW5nT3ZlcnJpZGVzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnNldHRpbmdPdmVycmlkZXMpLHt4QXhpc1R5cGU6dH0pfSkpLFl0KFR6LChuLHtzbW9vdGhpbmc6dH0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc2V0dGluZ092ZXJyaWRlcykse3NjYWxhclNtb290aGluZzp0fSl9KSksWXQoQXosbj0+e3ZhciB0O2xldCBlPSEoKHQ9bi5zZXR0aW5nT3ZlcnJpZGVzLnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpIT09bnVsbCYmdCE9PXZvaWQgMD90Om4uc2V0dGluZ3Muc2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7c2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWDplfSl9KX0pLFl0KER6LChuLHticmlnaHRuZXNzSW5NaWxsaTp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7aW1hZ2VCcmlnaHRuZXNzSW5NaWxsaTp0fSl9KSksWXQoSXosKG4se2NvbnRyYXN0SW5NaWxsaTp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7aW1hZ2VDb250cmFzdEluTWlsbGk6dH0pfSkpLFl0KHp6LG49PntsZXQgdD1uLnNldHRpbmdPdmVycmlkZXMse2ltYWdlQnJpZ2h0bmVzc0luTWlsbGk6ZX09dCxvPWVfKHQsWyJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIl0pO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NldHRpbmdPdmVycmlkZXM6b30pfSksWXQoSHosbj0+e2xldCB0PW4uc2V0dGluZ092ZXJyaWRlcyx7aW1hZ2VDb250cmFzdEluTWlsbGk6ZX09dCxvPWVfKHQsWyJpbWFnZUNvbnRyYXN0SW5NaWxsaSJdKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzZXR0aW5nT3ZlcnJpZGVzOm99KX0pLFl0KEZ6LG49Pnt2YXIgdDtsZXQgZT0hKCh0PW4uc2V0dGluZ092ZXJyaWRlcy5pbWFnZVNob3dBY3R1YWxTaXplKSE9PW51bGwmJnQhPT12b2lkIDA/dDpuLnNldHRpbmdzLmltYWdlU2hvd0FjdHVhbFNpemUpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc2V0dGluZ092ZXJyaWRlcykse2ltYWdlU2hvd0FjdHVhbFNpemU6ZX0pfSl9KSxZdChMeiwobix7aGlzdG9ncmFtTW9kZTp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7aGlzdG9ncmFtTW9kZTp0fSl9KSksWXQoa3osKG4se2NhcmRNaW5XaWR0aDp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2V0dGluZ092ZXJyaWRlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5zZXR0aW5nT3ZlcnJpZGVzKSx7Y2FyZE1pbldpZHRoOnR9KX0pKSxZdChOeixuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NldHRpbmdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4uc2V0dGluZ092ZXJyaWRlcykse2NhcmRNaW5XaWR0aDpudWxsfSl9KSksWXQoQnosKG4se3JlcXVlc3RzOnR9KT0+e2lmKCF0Lmxlbmd0aClyZXR1cm4gbjtsZXQgZT1PYmplY3QuYXNzaWduKHt9LG4udGltZVNlcmllc0RhdGEpO2ZvcihsZXQgbyBvZiB0KXtsZXR7cGx1Z2luOmksdGFnOmEsc2FtcGxlOnJ9PW87ZVtpXT1ERChlLGksYSxyKTtsZXQgcz1wUChlLGksYSxyKSxsPUdqKG8pP1tvLnJ1bklkXTpiMyhuLnRhZ01ldGFkYXRhLGksYSxyKTtzLnJ1blRvTG9hZFN0YXRlPUlEKEt0LkxPQURJTkcsbCxzLnJ1blRvTG9hZFN0YXRlKX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHt0aW1lU2VyaWVzRGF0YTplfSl9KSxZdChWeiwobix7cmVxdWVzdDp0fSk9PntsZXQgZT1PYmplY3QuYXNzaWduKHt9LG4udGltZVNlcmllc0RhdGEpLHtwbHVnaW46byx0YWc6aSxzYW1wbGU6YX09dDtlW29dPUREKGUsbyxpLGEpO2xldCByPXBQKGUsbyxpLGEpLHM9R2oodCk/W3QucnVuSWRdOmIzKG4udGFnTWV0YWRhdGEsbyxpLGEpO3JldHVybiByLnJ1blRvTG9hZFN0YXRlPUlEKEt0LkZBSUxFRCxzLHIucnVuVG9Mb2FkU3RhdGUpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7dGltZVNlcmllc0RhdGE6ZX0pfSksWXQoanosKG4se3Jlc3BvbnNlOnR9KT0+e2xldCBlPU9iamVjdC5hc3NpZ24oe30sbi5zdGVwTWluTWF4KSxvPU9iamVjdC5hc3NpZ24oe30sbi50aW1lU2VyaWVzRGF0YSkse3BsdWdpbjppLHRhZzphLHJ1bklkOnIsc2FtcGxlOnN9PXQ7b1tpXT1ERChvLGksYSxzKTtsZXQgbD1wUChvLGksYSxzKTtpZihURCh0KSl7bGV0IG09cj9bcl06YjMobi50YWdNZXRhZGF0YSxpLGEscyk7bC5ydW5Ub0xvYWRTdGF0ZT1JRChLdC5GQUlMRUQsbSxsLnJ1blRvTG9hZFN0YXRlKX1lbHNle2xldCBtPXQucnVuVG9TZXJpZXM7bC5ydW5Ub1Nlcmllcz1PYmplY3QuYXNzaWduKHt9LGwucnVuVG9TZXJpZXMpLGwucnVuVG9Mb2FkU3RhdGU9T2JqZWN0LmFzc2lnbih7fSxsLnJ1blRvTG9hZFN0YXRlKTtmb3IobGV0IGYgaW4gbSlpZihtLmhhc093blByb3BlcnR5KGYpKXtsLnJ1blRvU2VyaWVzW2ZdPW1bZl0sbC5ydW5Ub0xvYWRTdGF0ZVtmXT1LdC5MT0FERUQ7Zm9yKGxldCBwIG9mIG1bZl0pZS5taW49TWF0aC5taW4oZS5taW4scC5zdGVwKSxlLm1heD1NYXRoLm1heChlLm1heCxwLnN0ZXApfX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHt0aW1lU2VyaWVzRGF0YTpvLGNhcmRTdGVwSW5kZXg6b0R0KG4uY2FyZE1ldGFkYXRhTWFwLG4uY2FyZFN0ZXBJbmRleCxvLG4udGltZVNlcmllc0RhdGEpLHN0ZXBNaW5NYXg6ZX0pfSksWXQoVXosKG4se2NhcmRJZDp0LHN0ZXBJbmRleDplfSk9PntsZXQgbz1CWSh0LG4uY2FyZE1ldGFkYXRhTWFwLG4udGltZVNlcmllc0RhdGEpLGk9ZTtyZXR1cm4gbz09PW51bGw/aT1udWxsOmU+byYmKGk9byksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtjYXJkU3RlcEluZGV4Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmNhcmRTdGVwSW5kZXgpLHtbdF06e2luZGV4OmksaXNDbG9zZXN0OiExfX0pfSl9KSxZdChHeiwobix7dGFnR3JvdXA6dH0pPT57bGV0IGU9bmV3IE1hcChuLnRhZ0dyb3VwRXhwYW5kZWQpO3JldHVybiBlLnNldCh0LCFlLmdldCh0KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHt0YWdHcm91cEV4cGFuZGVkOmV9KX0pLFl0KGkyLChuLHtlbnRlcmVkQ2FyZHM6dCxleGl0ZWRDYXJkczplfSk9PntpZighdC5sZW5ndGgmJiFlLmxlbmd0aClyZXR1cm4gbjtsZXQgbz1uZXcgTWFwKG4udmlzaWJsZUNhcmRNYXApO3JldHVybiB0LmZvckVhY2goKHtlbGVtZW50SWQ6aSxjYXJkSWQ6YX0pPT57dmFyIHI7bGV0IHM9KHI9by5nZXQoaSkpIT09bnVsbCYmciE9PXZvaWQgMD9yOm51bGw7aWYocyE9PW51bGwmJnMhPT1hKXRocm93IG5ldyBFcnJvcigiQSBET00gZWxlbWVudCBjYW5ub3QgYmUgcmV1c2VkIGZvciBtb3JlIHRoYW4gMSB1bmlxdWUgY2FyZCBtZXRhZGF0YSIpO28uc2V0KGksYSl9KSxlLmZvckVhY2goKHtlbGVtZW50SWQ6aX0pPT57by5kZWxldGUoaSl9KSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3Zpc2libGVDYXJkTWFwOm99KX0pLFl0KGEyLChuLHtjYXJkSWQ6dH0pPT57bGV0IGU9bi5waW5uZWRDYXJkVG9PcmlnaW5hbC5oYXModCksbz1lPyExOiFuLmNhcmRUb1Bpbm5lZENvcHkuaGFzKHQpO2lmKG8mJiF6RChuKSlyZXR1cm4gbjtsZXQgaT1uZXcgTWFwKG4uY2FyZFRvUGlubmVkQ29weSksYT1uZXcgTWFwKG4uY2FyZFRvUGlubmVkQ29weUNhY2hlKSxyPW5ldyBNYXAobi5waW5uZWRDYXJkVG9PcmlnaW5hbCkscz1PYmplY3QuYXNzaWduKHt9LG4uY2FyZE1ldGFkYXRhTWFwKSxsPU9iamVjdC5hc3NpZ24oe30sbi5jYXJkU3RlcEluZGV4KTtpZihlKXtsZXQgYz1uLnBpbm5lZENhcmRUb09yaWdpbmFsLmdldCh0KTtpLmRlbGV0ZShjKSxhLmRlbGV0ZShjKSxyLmRlbGV0ZSh0KSxkZWxldGUgc1t0XSxkZWxldGUgbFt0XX1lbHNlIGlmKG8pe2xldCBjPXRVKHQsaSxhLHIsbCxzKTtpPWMuY2FyZFRvUGlubmVkQ29weSxhPWMuY2FyZFRvUGlubmVkQ29weUNhY2hlLHI9Yy5waW5uZWRDYXJkVG9PcmlnaW5hbCxzPWMuY2FyZE1ldGFkYXRhTWFwLGw9Yy5jYXJkU3RlcEluZGV4fWVsc2V7bGV0IGM9bi5jYXJkVG9QaW5uZWRDb3B5LmdldCh0KTtpLmRlbGV0ZSh0KSxhLmRlbGV0ZSh0KSxyLmRlbGV0ZShjKSxkZWxldGUgc1tjXSxkZWxldGUgbFtjXX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtjYXJkTWV0YWRhdGFNYXA6cyxjYXJkU3RlcEluZGV4OmwsY2FyZFRvUGlubmVkQ29weTppLGNhcmRUb1Bpbm5lZENvcHlDYWNoZTphLHBpbm5lZENhcmRUb09yaWdpbmFsOnJ9KX0pLFl0KFp6LG49Pnt2YXIgdDtsZXQgZT0hbi5saW5rZWRUaW1lRW5hYmxlZCxvPU9iamVjdC5hc3NpZ24oe30sbi5jYXJkU3RlcEluZGV4KSxpPW4ubGlua2VkVGltZVNlbGVjdGlvbixhPW4uc3RlcFNlbGVjdG9yRW5hYmxlZDtpZihlKXtsZXR7bWluOnJ9PW4uc3RlcE1pbk1heCxzPXI9PT0xLzA/MDpyO2k9KHQ9bi5saW5rZWRUaW1lU2VsZWN0aW9uKSE9PW51bGwmJnQhPT12b2lkIDA/dDp7c3RhcnQ6e3N0ZXA6c30sZW5kOm51bGx9LG89ZVUobi5jYXJkU3RlcEluZGV4LG4uY2FyZE1ldGFkYXRhTWFwLG4udGltZVNlcmllc0RhdGEsaSksYT1lfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2NhcmRTdGVwSW5kZXg6byxsaW5rZWRUaW1lRW5hYmxlZDplLGxpbmtlZFRpbWVTZWxlY3Rpb246aSxzdGVwU2VsZWN0b3JFbmFibGVkOmF9KX0pLFl0KFh6LG49PntsZXQgdD0hbi5yYW5nZVNlbGVjdGlvbkVuYWJsZWQsZT1uLnN0ZXBTZWxlY3RvckVuYWJsZWQsbz1uLmxpbmtlZFRpbWVTZWxlY3Rpb247cmV0dXJuIHQmJihlPXQsb3x8KG89e3N0YXJ0OntzdGVwOm4uc3RlcE1pbk1heC5taW59LGVuZDp7c3RlcDpuLnN0ZXBNaW5NYXgubWF4fX0pLG8uZW5kfHwobz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2VuZDp7c3RlcDpuLnN0ZXBNaW5NYXgubWF4fX0pKSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzdGVwU2VsZWN0b3JFbmFibGVkOmUscmFuZ2VTZWxlY3Rpb25FbmFibGVkOnQsbGlua2VkVGltZVNlbGVjdGlvbjpvfSl9KSxZdChmeCwobix0KT0+e3ZhciBlO2xldHt0aW1lU2VsZWN0aW9uOm99PXQsaT1vLnN0YXJ0LnN0ZXAsYT0oZT1vLmVuZCk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLnN0ZXAscj1hPT09dm9pZCAwP251bGw6e3N0ZXA6aT5hP2k6YX0scz1hIT09dm9pZCAwLGw9e3N0YXJ0OntzdGVwOml9LGVuZDpyfSxjPWVVKG4uY2FyZFN0ZXBJbmRleCxuLmNhcmRNZXRhZGF0YU1hcCxuLnRpbWVTZXJpZXNEYXRhLGwpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2xpbmtlZFRpbWVTZWxlY3Rpb246bCxjYXJkU3RlcEluZGV4OmMscmFuZ2VTZWxlY3Rpb25FbmFibGVkOnN9KX0pLFl0KHB4LG49PntsZXQgdD0hbi5zdGVwU2VsZWN0b3JFbmFibGVkLGU9dCYmbi5saW5rZWRUaW1lRW5hYmxlZCxvPXQmJm4ucmFuZ2VTZWxlY3Rpb25FbmFibGVkO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2xpbmtlZFRpbWVFbmFibGVkOmUsc3RlcFNlbGVjdG9yRW5hYmxlZDp0LHJhbmdlU2VsZWN0aW9uRW5hYmxlZDpvfSl9KSxZdChNbHQsbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtsaW5rZWRUaW1lU2VsZWN0aW9uOm51bGx9KSksWXQoV3osKG4se3BsdWdpbjp0fSk9PntsZXQgZT1uZXcgU2V0KG4uZmlsdGVyZWRQbHVnaW5UeXBlcyk7cmV0dXJuIGUuaGFzKHQpP2UuZGVsZXRlKHQpOmUuYWRkKHQpLE9iamVjdC52YWx1ZXMoTG8pLmV2ZXJ5KG89PmUuaGFzKG8pKSYmKGU9bmV3IFNldCksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtmaWx0ZXJlZFBsdWdpblR5cGVzOmV9KX0pLFl0KHF6LG49Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZmlsdGVyZWRQbHVnaW5UeXBlczpuZXcgU2V0fSkpLFl0KHl6LG49Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aXNTZXR0aW5nc1BhbmVPcGVuOiFuLmlzU2V0dGluZ3NQYW5lT3Blbn0pKSxZdChQeixuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2lzU2V0dGluZ3NQYW5lT3BlbjohMX0pKSk7ZnVuY3Rpb24galkobix0KXtyZXR1cm4gSHYoYUR0LGlEdCkobix0KX1mdW5jdGlvbiB4bHQobix0KXtyZXR1cm57dGFnRGVzY3JpcHRpb25zOm5bdF0udGFnRGVzY3JpcHRpb25zLHRhZ1RvUnVuczpyRHQoblt0XS5ydW5UYWdJbmZvKX19ZnVuY3Rpb24gckR0KG4pe2xldCB0PXt9O2ZvcihsZXQgZSBpbiBuKWZvcihsZXQgbyBvZiBuW2VdKXRbb109Wy4uLnRbb118fFtdLGVdO3JldHVybiB0fXZhciBzRHQ9Y3QoQnksUl8sKG4sdCxlKT0+dD9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xvYWRTdGF0ZTpuLGlkOmV9KTpudWxsKSx3bHQ9TnQoIltNZXRyaWNzIEVmZmVjdHNdIEluaXQiKSxXTT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmRhdGFTb3VyY2U9byx0aGlzLmRhc2hib2FyZFNob3duV2l0aG91dERhdGEkPXRoaXMuYWN0aW9ucyQucGlwZShGbyh3bHQsS2IsSXYseV8pLE9uKHRoaXMuc3RvcmUuc2VsZWN0KGVtKSx0aGlzLnN0b3JlLnNlbGVjdChGRSkpLHVlKChbLGksYV0pPT5pPT09QzMmJmEuc3RhdGU9PT1LdC5OT1RfTE9BREVEKSksdGhpcy5yZWxvYWRSZXF1ZXN0ZWRXaGlsZVNob3duJD10aGlzLmFjdGlvbnMkLnBpcGUoRm8oS20sbXApLE9uKHRoaXMuc3RvcmUuc2VsZWN0KGVtKSksdWUoKFssaV0pPT5pPT09QzMpKSx0aGlzLmxvYWRUYWdNZXRhZGF0YSQ9eW4odGhpcy5kYXNoYm9hcmRTaG93bldpdGhvdXREYXRhJCx0aGlzLnJlbG9hZFJlcXVlc3RlZFdoaWxlU2hvd24kKS5waXBlKE9uKHRoaXMuc3RvcmUuc2VsZWN0KEZFKSx0aGlzLnN0b3JlLnNlbGVjdChKcykpLHVlKChbLGksYV0pPT5pLnN0YXRlIT09S3QuTE9BRElORyYmYSE9PW51bGwpLGFuKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaCh4eigpKX0pLHRpKChbLCxpXSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFRhZ01ldGFkYXRhKGkpLnBpcGUoYW4oYT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2godnooe3RhZ01ldGFkYXRhOmF9KSl9KSxucygoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2god3ooKSksZG4obnVsbCkpKSkpKSx0aGlzLnZpc2libGVDYXJkc1dpdGhvdXREYXRhQ2hhbmdlZCQ9dGhpcy5hY3Rpb25zJC5waXBlKEZvKGkyKSxPbih0aGlzLmdldFZpc2libGVDYXJkRmV0Y2hJbmZvcygpKSxHKChbLGldKT0+aS5maWx0ZXIoYT0+YS5sb2FkU3RhdGU9PT1LdC5OT1RfTE9BREVEKSkpLHRoaXMudmlzaWJsZUNhcmRzUmVsb2FkZWQkPXRoaXMucmVsb2FkUmVxdWVzdGVkV2hpbGVTaG93biQucGlwZShPbih0aGlzLmdldFZpc2libGVDYXJkRmV0Y2hJbmZvcygpKSxHKChbLGldKT0+aS5maWx0ZXIoYT0+YS5sb2FkU3RhdGUhPT1LdC5MT0FESU5HKSkpLHRoaXMubG9hZFRpbWVTZXJpZXMkPXluKHRoaXMudmlzaWJsZUNhcmRzV2l0aG91dERhdGFDaGFuZ2VkJCx0aGlzLnZpc2libGVDYXJkc1JlbG9hZGVkJCkucGlwZSh1ZShpPT5pLmxlbmd0aD4wKSxPbih0aGlzLnN0b3JlLnNlbGVjdChKcykucGlwZSh1ZShpPT5pIT09bnVsbCkpKSxVbigoW2ksYV0pPT50aGlzLmZldGNoVGltZVNlcmllc0ZvckNhcmRzKGksYSkpKSx0aGlzLmRhdGFFZmZlY3RzJD1NYSgoKT0+eW4odGhpcy5sb2FkVGFnTWV0YWRhdGEkLHRoaXMubG9hZFRpbWVTZXJpZXMkKSx7ZGlzcGF0Y2g6ITF9KX1uZ3J4T25Jbml0RWZmZWN0cygpe3JldHVybiB3bHQoKX1nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKXtyZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoTGl0KS5waXBlKHRpKGU9PntpZighZS5zaXplKXJldHVybiBkbihbXSk7bGV0IG89Wy4uLmVdLm1hcChpPT50aGlzLnN0b3JlLnNlbGVjdChzRHQsaSkucGlwZShDbigxKSkpO3JldHVybiBnYShvKX0pLEcoZT0+ZS5maWx0ZXIoQm9vbGVhbikpKX1mZXRjaFRpbWVTZXJpZXModCl7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFRpbWVTZXJpZXMoW3RdKS5waXBlKGFuKGU9PntsZXQgbz1lLmZpbHRlcihURCk7by5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRpbWUgc2VyaWVzIHJlc3BvbnNlIGNvbnRhaW5lZCBlcnJvcnM6IixvKSx0aGlzLnN0b3JlLmRpc3BhdGNoKGp6KHtyZXNwb25zZTplWzBdfSkpfSksbnMoKCk9Pih0aGlzLnN0b3JlLmRpc3BhdGNoKFZ6KHtyZXF1ZXN0OnR9KSksZG4obnVsbCkpKSl9ZmV0Y2hUaW1lU2VyaWVzRm9yQ2FyZHModCxlKXtsZXQgbz10Lm1hcChpPT57bGV0e3BsdWdpbjphLHRhZzpyLHJ1bklkOnMsc2FtcGxlOmx9PWksYz1WZyhhKT97cGx1Z2luOmEsdGFnOnIscnVuSWQ6c306e3BsdWdpbjphLHRhZzpyLGV4cGVyaW1lbnRJZHM6ZX07cmV0dXJuIGwhPT12b2lkIDAmJihjLnNhbXBsZT1sKSxjfSk7cmV0dXJuIGRuKG8pLnBpcGUoYW4oaT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goQnooe3JlcXVlc3RzOml9KSl9KSxVbihpPT57bGV0IGE9aS5tYXAocj0+dGhpcy5mZXRjaFRpbWVTZXJpZXMocikpO3JldHVybiB5biguLi5hKX0pKX19O1dNLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFdNKShJKFRvKSxJKHN0KSxJKHBwKSl9O1dNLlx1MDI3NXByb3Y9UHQoe3Rva2VuOldNLGZhY3Rvcnk6V00uXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFdNLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlRvfSx7dHlwZTpzdH0se3R5cGU6cHB9XX0sbnVsbCl9KSgpO3ZhciBqaz1uZXcgeXQoIk1ldHJpY3MgU3RvcmUgQ29uZmlnIiksVWs9bmV3IHl0KCJNZXRyaWNzIEluaXRpYWwgU2V0dGluZ3MgQ29uZmlnIik7ZnVuY3Rpb24gVVkobil7cmV0dXJuIG4/e2luaXRpYWxTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sVlkpLHtzZXR0aW5nczpufSl9Ontpbml0aWFsU3RhdGU6Vll9fXZhciB5MDsoZnVuY3Rpb24obil7bltuLkxFRlQ9MV09IkxFRlQiLG5bbi5SSUdIVD0yXT0iUklHSFQiLG5bbi5NSURETEU9NF09Ik1JRERMRSIsbltuLkZPVVJUSD04XT0iRk9VUlRIIixuW24uRklGVEg9MzJdPSJGSUZUSCJ9KSh5MHx8KHkwPXt9KSk7dmFyIFNsdD0wO2Z1bmN0aW9uIFJsdCgpe3JldHVybiBTbHQrKyxTeW1ib2woU2x0KX1mdW5jdGlvbiBsRHQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJidXR0b24iLDMpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKCkuZXhwYW5kU2lkZWJhcigpfSksRCgxLCJtYXQtaWNvbiIsNCksaCgpfX1mdW5jdGlvbiBjRHQobix0KXtpZihuJjEmJih1KDAsIm5hdiIsNSksWCgxLCJhc3luYyIpLFluKDIsMSksaCgpKSxuJjIpe2xldCBlPVMoKTtxZSgid2lkdGgiLFEoMSw0LGUud2lkdGgkKSwiJSIpKCJtaW4td2lkdGgiLGUuTUlOSU1VTV9TSURFQkFSX1dJRFRIX0lOX1BYLCJweCIpfX1mdW5jdGlvbiBtRHQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDYpLEEoIm1vdXNlZG93biIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLnJlc2l6ZUdyYWJiZWQoKX0pLGgoKX19dmFyIGZEdD1bW1siIiwibWFpbiIsIiJdXSxbWyIiLCJzaWRlYmFyIiwiIl1dXSxwRHQ9WyJbbWFpbl0iLCJbc2lkZWJhcl0iXSxtZD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLndpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChDRCksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBKdCx0aGlzLnJlc2l6aW5nPSExLHRoaXMuTUlOSU1VTV9TSURFQkFSX1dJRFRIX0lOX1BYPTc1LGpvKGUubmF0aXZlRWxlbWVudCwibW91c2Vtb3ZlIikucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHVlKCgpPT50aGlzLnJlc2l6aW5nKSkuc3Vic2NyaWJlKG89PntpZigoby5idXR0b25zJnkwLkxFRlQpIT09eTAuTEVGVCl7dGhpcy5yZXNpemluZz0hMTtyZXR1cm59by5wcmV2ZW50RGVmYXVsdCgpO2xldHt3aWR0aDppfT1lLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT1vLmNsaWVudFg8PXRoaXMuTUlOSU1VTV9TSURFQkFSX1dJRFRIX0lOX1BYPzA6by5jbGllbnRYL2kqMTAwO3RoaXMuc3RvcmUuZGlzcGF0Y2gocDMoe3dpZHRoSW5QZXJjZW50OmF9KSl9KSxqbyhlLm5hdGl2ZUVsZW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnJlc2l6aW5nPSExfSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfXJlc2l6ZUdyYWJiZWQoKXt0aGlzLnJlc2l6aW5nPSEwfWV4cGFuZFNpZGViYXIoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKHAzKHt3aWR0aEluUGVyY2VudDoyMH0pKX19O21kLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG1kKSh2KHN0KSx2KEwpKX07bWQuXHUwMjc1Y21wPXooe3R5cGU6bWQsc2VsZWN0b3JzOltbInRiLWRhc2hib2FyZC1sYXlvdXQiXV0sbmdDb250ZW50U2VsZWN0b3JzOnBEdCxkZWNsczo3LHZhcnM6OSxjb25zdHM6W1siY2xhc3MiLCJleHBhbmQiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNpZGViYXIiLDMsIndpZHRoIiwibWluV2lkdGgiLDQsIm5nSWYiXSxbImNsYXNzIiwicmVzaXplciIsMywibW91c2Vkb3duIiw0LCJuZ0lmIl0sWzEsImV4cGFuZCIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJleHBhbmRfbW9yZV8yNHB4Il0sWzEsInNpZGViYXIiXSxbMSwicmVzaXplciIsMywibW91c2Vkb3duIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoeW8oZkR0KSxrKDAsbER0LDIsMCwiYnV0dG9uIiwwKSxYKDEsImFzeW5jIiksaygyLGNEdCwzLDYsIm5hdiIsMSksWCgzLCJhc3luYyIpLGsoNCxtRHQsMSwwLCJkaXYiLDIpLFgoNSwiYXN5bmMiKSxZbig2KSksdCYyJiYoUCgibmdJZiIsUSgxLDMsZS53aWR0aCQpPT09MCkseCgyKSxQKCJuZ0lmIixRKDMsNSxlLndpZHRoJCk+MCkseCgyKSxQKCJuZ0lmIixRKDUsNyxlLndpZHRoJCk+MCkpfSxkaXJlY3RpdmVzOltYdCxYZV0scGlwZXM6W29lXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtd2lkdGg6ODB2d30ucmVzaXplcltfbmdjb250ZW50LSVDT01QJV0sIC5leHBhbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZWJlYmViO2JveC1zaXppbmc6Ym9yZGVyLWJveDtmbGV4OjAgMDtqdXN0aWZ5LXNlbGY6c3RyZXRjaH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAucmVzaXplcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhwYW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4cGFuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM1NTV9LmV4cGFuZFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjBweH0ucmVzaXplcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MCAycHg7Y3Vyc29yOmV3LXJlc2l6ZTtjb250YWluOnN0cmljdDtkaXNwbGF5OmZsZXg7anVzdGlmeS1zZWxmOnN0cmV0Y2h9LnJlc2l6ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlfS5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcntib3JkZXItY29sb3I6I2NjYztvdXRsaW5lOjNweCBzb2xpZCAjY2NjO3otaW5kZXg6MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAucmVzaXplcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5yZXNpemVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvdXRsaW5lLWNvbG9yOiM3Nzc7Ym9yZGVyLWNvbG9yOiM3Nzd9LmV4cGFuZFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwwKTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAgMXB4IDAgMDtjb2xvcjppbmhlcml0O2NvbnRhaW46Y29udGVudDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1zZWxmOnN0cmV0Y2g7cGFkZGluZzowfS5leHBhbmRbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhtZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRiLWRhc2hib2FyZC1sYXlvdXQiLHRlbXBsYXRlOmAKICAgIDxidXR0b24KICAgICAgKm5nSWY9Iih3aWR0aCQgfCBhc3luYykgPT09IDAiCiAgICAgIGNsYXNzPSJleHBhbmQiCiAgICAgIChjbGljayk9ImV4cGFuZFNpZGViYXIoKSIKICAgID4KICAgICAgPG1hdC1pY29uIHN2Z0ljb249ImV4cGFuZF9tb3JlXzI0cHgiPjwvbWF0LWljb24+CiAgICA8L2J1dHRvbj4KICAgIDxuYXYKICAgICAgKm5nSWY9Iih3aWR0aCQgfCBhc3luYykgPiAwIgogICAgICBjbGFzcz0ic2lkZWJhciIKICAgICAgW3N0eWxlLndpZHRoLiVdPSJ3aWR0aCQgfCBhc3luYyIKICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT0iTUlOSU1VTV9TSURFQkFSX1dJRFRIX0lOX1BYIgogICAgPgogICAgICA8bmctY29udGVudCBzZWxlY3Q9IltzaWRlYmFyXSI+PC9uZy1jb250ZW50PgogICAgPC9uYXY+CiAgICA8ZGl2CiAgICAgICpuZ0lmPSIod2lkdGgkIHwgYXN5bmMpID4gMCIKICAgICAgY2xhc3M9InJlc2l6ZXIiCiAgICAgIChtb3VzZWRvd24pPSJyZXNpemVHcmFiYmVkKCkiCiAgICA+PC9kaXY+CiAgICA8bmctY29udGVudCBzZWxlY3Q9IlttYWluXSI+PC9uZy1jb250ZW50PgogIGAsc3R5bGVVcmxzOlsibGF5b3V0X2NvbnRhaW5lci5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH0se3R5cGU6TH1dfSxudWxsKX0pKCk7dmFyIGZkOyhmdW5jdGlvbihuKXtuLkNIRUNLQk9YPSJjaGVja2JveCIsbi5SVU5fTkFNRT0icnVuX25hbWUiLG4uRVhQRVJJTUVOVF9OQU1FPSJleHBlcmltZW50X25hbWUiLG4uUlVOX0NPTE9SPSJydW5fY29sb3IifSkoZmR8fChmZD17fSkpO3ZhciBSUD17fTtZUyhSUCx7Z2V0RXhwZXJpbWVudHNIcGFyYW1zQW5kTWV0cmljc1NwZWNzOigpPT5DRHQsZ2V0SHBhcmFtRmlsdGVyTWFwOigpPT51RHQsZ2V0TWV0cmljRmlsdGVyTWFwOigpPT5fRHR9KTtmdW5jdGlvbiBFbHQoLi4ubil7bGV0IHQ9bmV3IE1hcCxlPW5ldyBNYXAsbz1uZXcgTWFwLGk9bmV3IE1hcCxhPVtdO2ZvcihsZXQgciBvZiBuKXtmb3IobGV0IHMgb2Ygci5ocGFyYW1zKWlmKGUuaGFzKHMubmFtZSl8fGUuc2V0KHMubmFtZSxuZXcgU2V0KSxlLmdldChzLm5hbWUpLmFkZChzLmRpc3BsYXlOYW1lKSwhdC5oYXMocy5uYW1lKSl0LnNldChzLm5hbWUsT2JqZWN0LmFzc2lnbih7fSxzKSk7ZWxzZXtsZXQgbD10LmdldChzLm5hbWUpLGM9cztpZihsLnR5cGUhPT1jLnR5cGUmJmEucHVzaChgSHBhcmFtLCAke2MubmFtZX0sIHR5cGVzIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtsLnR5cGV9IHZzLiAke2MudHlwZX1gKSxsLmRvbWFpbi50eXBlPT09ZWkuSU5URVJWQUwmJmMuZG9tYWluLnR5cGU9PT1laS5JTlRFUlZBTCkobC5kb21haW4ubWluVmFsdWUhPT1jLmRvbWFpbi5taW5WYWx1ZXx8bC5kb21haW4ubWF4VmFsdWUhPT1jLmRvbWFpbi5tYXhWYWx1ZSkmJmEucHVzaChgSHBhcmFtLCAke2MubmFtZX0sIGRvbWFpbnMgaGF2ZSB0byBtYXRjaC4gR290OiAke2wuZG9tYWlufSB2cy4gJHtjLmRvbWFpbn1gKTtlbHNlIGlmKGwuZG9tYWluLnR5cGU9PT1laS5ESVNDUkVURSYmYy5kb21haW4udHlwZT09PWVpLkRJU0NSRVRFKXtsZXQgbT1uZXcgU2V0KFsuLi5sLmRvbWFpbi52YWx1ZXMsLi4uYy5kb21haW4udmFsdWVzXSk7KGwuZG9tYWluLnZhbHVlcy5sZW5ndGghPT1jLmRvbWFpbi52YWx1ZXMubGVuZ3RofHxsLmRvbWFpbi52YWx1ZXMubGVuZ3RoIT09bS5zaXplKSYmYS5wdXNoKGBIcGFyYW0sICR7Yy5uYW1lfSwgZG9tYWlucyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bC5kb21haW59IHZzLiAke2MuZG9tYWlufWApfWVsc2UgYS5wdXNoKGBIcGFyYW0sICR7Yy5uYW1lfSwgZG9tYWlucyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bC5kb21haW59IHZzLiAke2MuZG9tYWlufWApfWZvcihsZXQgcyBvZiByLm1ldHJpY3MpaWYoaS5oYXMocy50YWcpfHxpLnNldChzLnRhZyxuZXcgU2V0KSxpLmdldChzLnRhZykuYWRkKHMuZGlzcGxheU5hbWUpLCFvLmhhcyhzLnRhZykpby5zZXQocy50YWcsT2JqZWN0LmFzc2lnbih7fSxzKSk7ZWxzZXtsZXQgbD1vLmdldChzLnRhZyksYz1zO2wuZGF0YXNldFR5cGUhPT1jLmRhdGFzZXRUeXBlJiZhLnB1c2goYE1ldHJpYywgJHtjLnRhZ30sIGRhdGFzZXRUeXBlcyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bC5kYXRhc2V0VHlwZX0gdnMuICR7Yy5kYXRhc2V0VHlwZX1gKX19aWYoYS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBWYWxpZGF0aW9uIGVycm9yOgoke2Euam9pbihgCmApfWApO3JldHVybntocGFyYW1zOlsuLi50XS5tYXAoKFtyLHNdKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtkaXNwbGF5TmFtZTpbLi4uZS5nZXQocildLmpvaW4oIiBvciAiKX0pKSxtZXRyaWNzOlsuLi5vXS5tYXAoKFtyLHNdKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtkaXNwbGF5TmFtZTpbLi4uaS5nZXQocildLmpvaW4oIiBvciAiKX0pKX19dmFyIFlrPUJhKGtFKSxnRHQ9Y3QoWWssKG4sdCk9PntsZXQgZT1bXTtmb3IobGV0IG8gb2YgdCkhbi5zcGVjc1tvXXx8ZS5wdXNoKG4uc3BlY3Nbb10uaHBhcmFtLmRlZmF1bHRGaWx0ZXJzKTtyZXR1cm4gRUUoZSl9KSx1RHQ9Y3QoZ0R0LFlrLChuLHQsZSk9Pnt2YXIgbztsZXQgaT1GdihlKSxhPXQuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4ubiwuLi4obz1hPT1udWxsP3ZvaWQgMDphLmhwYXJhbXMpIT09bnVsbCYmbyE9PXZvaWQgMD9vOltdXSl9KSxoRHQ9Y3QoWWssKG4sdCk9PntsZXQgZT1bXTtmb3IobGV0IG8gb2YgdCkhbi5zcGVjc1tvXXx8ZS5wdXNoKG4uc3BlY3Nbb10ubWV0cmljLmRlZmF1bHRGaWx0ZXJzKTtyZXR1cm4gRUQoZSl9KSxfRHQ9Y3QoaER0LFlrLChuLHQsZSk9Pnt2YXIgbztsZXQgaT1GdihlKSxhPXQuZmlsdGVyc1tpXTtyZXR1cm4gbmV3IE1hcChbLi4ubiwuLi4obz1hPT1udWxsP3ZvaWQgMDphLm1ldHJpY3MpIT09bnVsbCYmbyE9PXZvaWQgMD9vOltdXSl9KSxDRHQ9Y3QoWWssKG4sdCk9PkVsdCguLi50LmV4cGVyaW1lbnRJZHMubWFwKGU9PntsZXQgbz1uLnNwZWNzW2VdO3JldHVybiBvP3tocGFyYW1zOm8uaHBhcmFtLnNwZWNzLG1ldHJpY3M6by5tZXRyaWMuc3BlY3N9Om51bGx9KS5maWx0ZXIoQm9vbGVhbikpKTt2YXIgQWx0PXt0b29sdGlwU3RhdGU6eHIoInN0YXRlIixbaGkoImluaXRpYWwsIHZvaWQsIGhpZGRlbiIsTG4oe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDApIn0pKSxoaSgidmlzaWJsZSIsTG4oe3RyYW5zZm9ybToic2NhbGUoMSkifSkpLGJpKCIqID0+IHZpc2libGUiLERpKCIyMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIsYnYoW0xuKHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJzY2FsZSgwKSIsb2Zmc2V0OjB9KSxMbih7b3BhY2l0eTouNSx0cmFuc2Zvcm06InNjYWxlKDAuOTkpIixvZmZzZXQ6LjV9KSxMbih7b3BhY2l0eToxLHRyYW5zZm9ybToic2NhbGUoMSkiLG9mZnNldDoxfSldKSkpLGJpKCIqID0+IGhpZGRlbiIsRGkoIjEwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIixMbih7b3BhY2l0eTowfSkpKV0pfSxNRHQ9MjA7dmFyIGtsdD0idG9vbHRpcC1wYW5lbCIsTmx0PSRtKHtwYXNzaXZlOiEwfSksYkR0PTUwMDtmdW5jdGlvbiBUbHQobil7cmV0dXJuIEVycm9yKGBUb29sdGlwIHBvc2l0aW9uICIke259IiBpcyBpbnZhbGlkLmApfXZhciBLej1uZXcgeXQoIm1hdC10b29sdGlwLXNjcm9sbC1zdHJhdGVneSIpO2Z1bmN0aW9uIE9EdChuKXtyZXR1cm4oKT0+bi5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oe3Njcm9sbFRocm90dGxlOk1EdH0pfXZhciBEbHQ9e3Byb3ZpZGU6S3osZGVwczpbR25dLHVzZUZhY3Rvcnk6T0R0fSxZWT1uZXcgeXQoIm1hdC10b29sdGlwLWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6UER0fSk7ZnVuY3Rpb24gUER0KCl7cmV0dXJue3Nob3dEZWxheTowLGhpZGVEZWxheTowLHRvdWNoZW5kSGlkZURlbGF5OjE1MDB9fXZhciBoTz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzLGwsYyxtLGYscCl7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPW8sdGhpcy5fdmlld0NvbnRhaW5lclJlZj1pLHRoaXMuX25nWm9uZT1hLHRoaXMuX3BsYXRmb3JtPXIsdGhpcy5fYXJpYURlc2NyaWJlcj1zLHRoaXMuX2ZvY3VzTW9uaXRvcj1sLHRoaXMuX2Rpcj1tLHRoaXMuX2RlZmF1bHRPcHRpb25zPWYsdGhpcy5fcG9zaXRpb249ImJlbG93Iix0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl92aWV3SW5pdGlhbGl6ZWQ9ITEsdGhpcy5fcG9pbnRlckV4aXRFdmVudHNJbml0aWFsaXplZD0hMSx0aGlzLl92aWV3cG9ydE1hcmdpbj04LHRoaXMuX2Nzc0NsYXNzUHJlZml4PSJtYXQiLHRoaXMuc2hvd0RlbGF5PXRoaXMuX2RlZmF1bHRPcHRpb25zLnNob3dEZWxheSx0aGlzLmhpZGVEZWxheT10aGlzLl9kZWZhdWx0T3B0aW9ucy5oaWRlRGVsYXksdGhpcy50b3VjaEdlc3R1cmVzPSJhdXRvIix0aGlzLl9tZXNzYWdlPSIiLHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPW5ldyBKdCx0aGlzLl9oYW5kbGVLZXlkb3duPWc9Pnt0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkmJmcua2V5Q29kZT09PTI3JiYhVmEoZykmJihnLnByZXZlbnREZWZhdWx0KCksZy5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl9uZ1pvbmUucnVuKCgpPT50aGlzLmhpZGUoMCkpKX0sdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9Yyx0aGlzLl9kb2N1bWVudD1wLGYmJihmLnBvc2l0aW9uJiYodGhpcy5wb3NpdGlvbj1mLnBvc2l0aW9uKSxmLnRvdWNoR2VzdHVyZXMmJih0aGlzLnRvdWNoR2VzdHVyZXM9Zi50b3VjaEdlc3R1cmVzKSksbS5jaGFuZ2UucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9vdmVybGF5UmVmJiZ0aGlzLl91cGRhdGVQb3NpdGlvbih0aGlzLl9vdmVybGF5UmVmKX0pLGEucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntlLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5faGFuZGxlS2V5ZG93bil9KX1nZXQgcG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb259c2V0IHBvc2l0aW9uKHQpe3ZhciBlO3QhPT10aGlzLl9wb3NpdGlvbiYmKHRoaXMuX3Bvc2l0aW9uPXQsdGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuX3VwZGF0ZVBvc2l0aW9uKHRoaXMuX292ZXJsYXlSZWYpLChlPXRoaXMuX3Rvb2x0aXBJbnN0YW5jZSk9PT1udWxsfHxlPT09dm9pZCAwfHxlLnNob3coMCksdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpKSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1aZSh0KSx0aGlzLl9kaXNhYmxlZD90aGlzLmhpZGUoMCk6dGhpcy5fc2V0dXBQb2ludGVyRW50ZXJFdmVudHNJZk5lZWRlZCgpfWdldCBtZXNzYWdlKCl7cmV0dXJuIHRoaXMuX21lc3NhZ2V9c2V0IG1lc3NhZ2UodCl7dGhpcy5fYXJpYURlc2NyaWJlci5yZW1vdmVEZXNjcmlwdGlvbih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdGhpcy5fbWVzc2FnZSwidG9vbHRpcCIpLHRoaXMuX21lc3NhZ2U9dCE9bnVsbD9TdHJpbmcodCkudHJpbSgpOiIiLCF0aGlzLl9tZXNzYWdlJiZ0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCk/dGhpcy5oaWRlKDApOih0aGlzLl9zZXR1cFBvaW50ZXJFbnRlckV2ZW50c0lmTmVlZGVkKCksdGhpcy5fdXBkYXRlVG9vbHRpcE1lc3NhZ2UoKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCk9PntQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57dGhpcy5fYXJpYURlc2NyaWJlci5kZXNjcmliZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdGhpcy5tZXNzYWdlLCJ0b29sdGlwIil9KX0pKX1nZXQgdG9vbHRpcENsYXNzKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXBDbGFzc31zZXQgdG9vbHRpcENsYXNzKHQpe3RoaXMuX3Rvb2x0aXBDbGFzcz10LHRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fc2V0VG9vbHRpcENsYXNzKHRoaXMuX3Rvb2x0aXBDbGFzcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fdmlld0luaXRpYWxpemVkPSEwLHRoaXMuX3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKSx0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmKS5waXBlKFBlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSh0PT57dD90PT09ImtleWJvYXJkIiYmdGhpcy5fbmdab25lLnJ1bigoKT0+dGhpcy5zaG93KCkpOnRoaXMuX25nWm9uZS5ydW4oKCk9PnRoaXMuaGlkZSgwKSl9KX1uZ09uRGVzdHJveSgpe2xldCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtjbGVhclRpbWVvdXQodGhpcy5fdG91Y2hzdGFydFRpbWVvdXQpLHRoaXMuX292ZXJsYXlSZWYmJih0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKSx0aGlzLl90b29sdGlwSW5zdGFuY2U9bnVsbCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9oYW5kbGVLZXlkb3duKSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLmZvckVhY2goKFtlLG9dKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG8sTmx0KX0pLHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMubGVuZ3RoPTAsdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl9hcmlhRGVzY3JpYmVyLnJlbW92ZURlc2NyaXB0aW9uKHQsdGhpcy5tZXNzYWdlLCJ0b29sdGlwIiksdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHQpfXNob3codD10aGlzLnNob3dEZWxheSl7aWYodGhpcy5kaXNhYmxlZHx8IXRoaXMubWVzc2FnZXx8dGhpcy5faXNUb29sdGlwVmlzaWJsZSgpJiYhdGhpcy5fdG9vbHRpcEluc3RhbmNlLl9zaG93VGltZW91dElkJiYhdGhpcy5fdG9vbHRpcEluc3RhbmNlLl9oaWRlVGltZW91dElkKXJldHVybjtsZXQgZT10aGlzLl9jcmVhdGVPdmVybGF5KCk7dGhpcy5fZGV0YWNoKCksdGhpcy5fcG9ydGFsPXRoaXMuX3BvcnRhbHx8bmV3IERNKHRoaXMuX3Rvb2x0aXBDb21wb25lbnQsdGhpcy5fdmlld0NvbnRhaW5lclJlZiksdGhpcy5fdG9vbHRpcEluc3RhbmNlPWUuYXR0YWNoKHRoaXMuX3BvcnRhbCkuaW5zdGFuY2UsdGhpcy5fdG9vbHRpcEluc3RhbmNlLmFmdGVySGlkZGVuKCkucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9PnRoaXMuX2RldGFjaCgpKSx0aGlzLl9zZXRUb29sdGlwQ2xhc3ModGhpcy5fdG9vbHRpcENsYXNzKSx0aGlzLl91cGRhdGVUb29sdGlwTWVzc2FnZSgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5zaG93KHQpfWhpZGUodD10aGlzLmhpZGVEZWxheSl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl90b29sdGlwSW5zdGFuY2UuaGlkZSh0KX10b2dnbGUoKXt0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCk/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9X2lzVG9vbHRpcFZpc2libGUoKXtyZXR1cm4hIXRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpfV9jcmVhdGVPdmVybGF5KCl7aWYodGhpcy5fb3ZlcmxheVJlZilyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZjtsZXQgdD10aGlzLl9zY3JvbGxEaXNwYXRjaGVyLmdldEFuY2VzdG9yU2Nyb2xsQ29udGFpbmVycyh0aGlzLl9lbGVtZW50UmVmKSxlPXRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuX2VsZW1lbnRSZWYpLndpdGhUcmFuc2Zvcm1PcmlnaW5PbihgLiR7dGhpcy5fY3NzQ2xhc3NQcmVmaXh9LXRvb2x0aXBgKS53aXRoRmxleGlibGVEaW1lbnNpb25zKCExKS53aXRoVmlld3BvcnRNYXJnaW4odGhpcy5fdmlld3BvcnRNYXJnaW4pLndpdGhTY3JvbGxhYmxlQ29udGFpbmVycyh0KTtyZXR1cm4gZS5wb3NpdGlvbkNoYW5nZXMucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUobz0+e3RoaXMuX3VwZGF0ZUN1cnJlbnRQb3NpdGlvbkNsYXNzKG8uY29ubmVjdGlvblBhaXIpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmby5zY3JvbGxhYmxlVmlld1Byb3BlcnRpZXMuaXNPdmVybGF5Q2xpcHBlZCYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmlzVmlzaWJsZSgpJiZ0aGlzLl9uZ1pvbmUucnVuKCgpPT50aGlzLmhpZGUoMCkpfSksdGhpcy5fb3ZlcmxheVJlZj10aGlzLl9vdmVybGF5LmNyZWF0ZSh7ZGlyZWN0aW9uOnRoaXMuX2Rpcixwb3NpdGlvblN0cmF0ZWd5OmUscGFuZWxDbGFzczpgJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tJHtrbHR9YCxzY3JvbGxTdHJhdGVneTp0aGlzLl9zY3JvbGxTdHJhdGVneSgpfSksdGhpcy5fdXBkYXRlUG9zaXRpb24odGhpcy5fb3ZlcmxheVJlZiksdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnBpcGUoUGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpPT50aGlzLl9kZXRhY2goKSksdGhpcy5fb3ZlcmxheVJlZi5vdXRzaWRlUG9pbnRlckV2ZW50cygpLnBpcGUoUGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpPT57dmFyIG87cmV0dXJuKG89dGhpcy5fdG9vbHRpcEluc3RhbmNlKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8uX2hhbmRsZUJvZHlJbnRlcmFjdGlvbigpfSksdGhpcy5fb3ZlcmxheVJlZn1fZGV0YWNoKCl7dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5oYXNBdHRhY2hlZCgpJiZ0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1udWxsfV91cGRhdGVQb3NpdGlvbih0KXtsZXQgZT10LmdldENvbmZpZygpLnBvc2l0aW9uU3RyYXRlZ3ksbz10aGlzLl9nZXRPcmlnaW4oKSxpPXRoaXMuX2dldE92ZXJsYXlQb3NpdGlvbigpO2Uud2l0aFBvc2l0aW9ucyhbdGhpcy5fYWRkT2Zmc2V0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvLm1haW4pLGkubWFpbikpLHRoaXMuX2FkZE9mZnNldChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sby5mYWxsYmFjayksaS5mYWxsYmFjaykpXSl9X2FkZE9mZnNldCh0KXtyZXR1cm4gdH1fZ2V0T3JpZ2luKCl7bGV0IHQ9IXRoaXMuX2Rpcnx8dGhpcy5fZGlyLnZhbHVlPT0ibHRyIixlPXRoaXMucG9zaXRpb24sbztpZihlPT0iYWJvdmUifHxlPT0iYmVsb3ciKW89e29yaWdpblg6ImNlbnRlciIsb3JpZ2luWTplPT0iYWJvdmUiPyJ0b3AiOiJib3R0b20ifTtlbHNlIGlmKGU9PSJiZWZvcmUifHxlPT0ibGVmdCImJnR8fGU9PSJyaWdodCImJiF0KW89e29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJjZW50ZXIifTtlbHNlIGlmKGU9PSJhZnRlciJ8fGU9PSJyaWdodCImJnR8fGU9PSJsZWZ0IiYmIXQpbz17b3JpZ2luWDoiZW5kIixvcmlnaW5ZOiJjZW50ZXIifTtlbHNlIGlmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpdGhyb3cgVGx0KGUpO2xldHt4OmkseTphfT10aGlzLl9pbnZlcnRQb3NpdGlvbihvLm9yaWdpblgsby5vcmlnaW5ZKTtyZXR1cm57bWFpbjpvLGZhbGxiYWNrOntvcmlnaW5YOmksb3JpZ2luWTphfX19X2dldE92ZXJsYXlQb3NpdGlvbigpe2xldCB0PSF0aGlzLl9kaXJ8fHRoaXMuX2Rpci52YWx1ZT09Imx0ciIsZT10aGlzLnBvc2l0aW9uLG87aWYoZT09ImFib3ZlIilvPXtvdmVybGF5WDoiY2VudGVyIixvdmVybGF5WToiYm90dG9tIn07ZWxzZSBpZihlPT0iYmVsb3ciKW89e292ZXJsYXlYOiJjZW50ZXIiLG92ZXJsYXlZOiJ0b3AifTtlbHNlIGlmKGU9PSJiZWZvcmUifHxlPT0ibGVmdCImJnR8fGU9PSJyaWdodCImJiF0KW89e292ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJjZW50ZXIifTtlbHNlIGlmKGU9PSJhZnRlciJ8fGU9PSJyaWdodCImJnR8fGU9PSJsZWZ0IiYmIXQpbz17b3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiY2VudGVyIn07ZWxzZSBpZih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKXRocm93IFRsdChlKTtsZXR7eDppLHk6YX09dGhpcy5faW52ZXJ0UG9zaXRpb24oby5vdmVybGF5WCxvLm92ZXJsYXlZKTtyZXR1cm57bWFpbjpvLGZhbGxiYWNrOntvdmVybGF5WDppLG92ZXJsYXlZOmF9fX1fdXBkYXRlVG9vbHRpcE1lc3NhZ2UoKXt0aGlzLl90b29sdGlwSW5zdGFuY2UmJih0aGlzLl90b29sdGlwSW5zdGFuY2UubWVzc2FnZT10aGlzLm1lc3NhZ2UsdGhpcy5fdG9vbHRpcEluc3RhbmNlLl9tYXJrRm9yQ2hlY2soKSx0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKENuKDEpLFBlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKT0+e3RoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfSkpfV9zZXRUb29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLnRvb2x0aXBDbGFzcz10LHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCkpfV9pbnZlcnRQb3NpdGlvbih0LGUpe3JldHVybiB0aGlzLnBvc2l0aW9uPT09ImFib3ZlInx8dGhpcy5wb3NpdGlvbj09PSJiZWxvdyI/ZT09PSJ0b3AiP2U9ImJvdHRvbSI6ZT09PSJib3R0b20iJiYoZT0idG9wIik6dD09PSJlbmQiP3Q9InN0YXJ0Ijp0PT09InN0YXJ0IiYmKHQ9ImVuZCIpLHt4OnQseTplfX1fdXBkYXRlQ3VycmVudFBvc2l0aW9uQ2xhc3ModCl7bGV0e292ZXJsYXlZOmUsb3JpZ2luWDpvLG9yaWdpblk6aX09dCxhO2lmKGU9PT0iY2VudGVyIj90aGlzLl9kaXImJnRoaXMuX2Rpci52YWx1ZT09PSJydGwiP2E9bz09PSJlbmQiPyJsZWZ0IjoicmlnaHQiOmE9bz09PSJzdGFydCI/ImxlZnQiOiJyaWdodCI6YT1lPT09ImJvdHRvbSImJmk9PT0idG9wIj8iYWJvdmUiOiJiZWxvdyIsYSE9PXRoaXMuX2N1cnJlbnRQb3NpdGlvbil7bGV0IHI9dGhpcy5fb3ZlcmxheVJlZjtpZihyKXtsZXQgcz1gJHt0aGlzLl9jc3NDbGFzc1ByZWZpeH0tJHtrbHR9LWA7ci5yZW1vdmVQYW5lbENsYXNzKHMrdGhpcy5fY3VycmVudFBvc2l0aW9uKSxyLmFkZFBhbmVsQ2xhc3MocythKX10aGlzLl9jdXJyZW50UG9zaXRpb249YX19X3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKXt0aGlzLl9kaXNhYmxlZHx8IXRoaXMubWVzc2FnZXx8IXRoaXMuX3ZpZXdJbml0aWFsaXplZHx8dGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5sZW5ndGh8fCh0aGlzLl9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKT90aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJtb3VzZWVudGVyIiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLHRoaXMuc2hvdygpfV0pOnRoaXMudG91Y2hHZXN0dXJlcyE9PSJvZmYiJiYodGhpcy5fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goWyJ0b3VjaHN0YXJ0IiwoKT0+e3RoaXMuX3NldHVwUG9pbnRlckV4aXRFdmVudHNJZk5lZWRlZCgpLGNsZWFyVGltZW91dCh0aGlzLl90b3VjaHN0YXJ0VGltZW91dCksdGhpcy5fdG91Y2hzdGFydFRpbWVvdXQ9c2V0VGltZW91dCgoKT0+dGhpcy5zaG93KCksYkR0KX1dKSksdGhpcy5fYWRkTGlzdGVuZXJzKHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMpKX1fc2V0dXBQb2ludGVyRXhpdEV2ZW50c0lmTmVlZGVkKCl7aWYodGhpcy5fcG9pbnRlckV4aXRFdmVudHNJbml0aWFsaXplZClyZXR1cm47dGhpcy5fcG9pbnRlckV4aXRFdmVudHNJbml0aWFsaXplZD0hMDtsZXQgdD1bXTtpZih0aGlzLl9wbGF0Zm9ybVN1cHBvcnRzTW91c2VFdmVudHMoKSl0LnB1c2goWyJtb3VzZWxlYXZlIiwoKT0+dGhpcy5oaWRlKCldLFsid2hlZWwiLGU9PnRoaXMuX3doZWVsTGlzdGVuZXIoZSldKTtlbHNlIGlmKHRoaXMudG91Y2hHZXN0dXJlcyE9PSJvZmYiKXt0aGlzLl9kaXNhYmxlTmF0aXZlR2VzdHVyZXNJZk5lY2Vzc2FyeSgpO2xldCBlPSgpPT57Y2xlYXJUaW1lb3V0KHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0KSx0aGlzLmhpZGUodGhpcy5fZGVmYXVsdE9wdGlvbnMudG91Y2hlbmRIaWRlRGVsYXkpfTt0LnB1c2goWyJ0b3VjaGVuZCIsZV0sWyJ0b3VjaGNhbmNlbCIsZV0pfXRoaXMuX2FkZExpc3RlbmVycyh0KSx0aGlzLl9wYXNzaXZlTGlzdGVuZXJzLnB1c2goLi4udCl9X2FkZExpc3RlbmVycyh0KXt0LmZvckVhY2goKFtlLG9dKT0+e3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGUsbyxObHQpfSl9X3BsYXRmb3JtU3VwcG9ydHNNb3VzZUV2ZW50cygpe3JldHVybiF0aGlzLl9wbGF0Zm9ybS5JT1MmJiF0aGlzLl9wbGF0Zm9ybS5BTkRST0lEfV93aGVlbExpc3RlbmVyKHQpe2lmKHRoaXMuX2lzVG9vbHRpcFZpc2libGUoKSl7bGV0IGU9dGhpcy5fZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0LmNsaWVudFgsdC5jbGllbnRZKSxvPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlIT09byYmIW8uY29udGFpbnMoZSkmJnRoaXMuaGlkZSgpfX1fZGlzYWJsZU5hdGl2ZUdlc3R1cmVzSWZOZWNlc3NhcnkoKXtsZXQgdD10aGlzLnRvdWNoR2VzdHVyZXM7aWYodCE9PSJvZmYiKXtsZXQgZT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbz1lLnN0eWxlOyh0PT09Im9uInx8ZS5ub2RlTmFtZSE9PSJJTlBVVCImJmUubm9kZU5hbWUhPT0iVEVYVEFSRUEiKSYmKG8udXNlclNlbGVjdD1vLm1zVXNlclNlbGVjdD1vLndlYmtpdFVzZXJTZWxlY3Q9by5Nb3pVc2VyU2VsZWN0PSJub25lIiksKHQ9PT0ib24ifHwhZS5kcmFnZ2FibGUpJiYoby53ZWJraXRVc2VyRHJhZz0ibm9uZSIpLG8udG91Y2hBY3Rpb249Im5vbmUiLG8ud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I9InRyYW5zcGFyZW50In19fTtoTy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxoTykodihHbiksdihMKSx2KFFpKSx2KF9lKSx2KEN0KSx2KFZ0KSx2KGZyKSx2KGxuKSx2KHZvaWQgMCksdihOZSksdih2b2lkIDApLHYoX3QpKX07aE8uXHUwMjc1ZGlyPXZ0KHt0eXBlOmhPLGlucHV0czp7c2hvd0RlbGF5OlsibWF0VG9vbHRpcFNob3dEZWxheSIsInNob3dEZWxheSJdLGhpZGVEZWxheTpbIm1hdFRvb2x0aXBIaWRlRGVsYXkiLCJoaWRlRGVsYXkiXSx0b3VjaEdlc3R1cmVzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiLCJ0b3VjaEdlc3R1cmVzIl0scG9zaXRpb246WyJtYXRUb29sdGlwUG9zaXRpb24iLCJwb3NpdGlvbiJdLGRpc2FibGVkOlsibWF0VG9vbHRpcERpc2FibGVkIiwiZGlzYWJsZWQiXSxtZXNzYWdlOlsibWF0VG9vbHRpcCIsIm1lc3NhZ2UiXSx0b29sdGlwQ2xhc3M6WyJtYXRUb29sdGlwQ2xhc3MiLCJ0b29sdGlwQ2xhc3MiXX19KTtoTy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkdufSx7dHlwZTpMfSx7dHlwZTpRaX0se3R5cGU6X2V9LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6ZnJ9LHt0eXBlOmxufSx7dHlwZTp2b2lkIDB9LHt0eXBlOk5lfSx7dHlwZTp2b2lkIDB9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07aE8ucHJvcERlY29yYXRvcnM9e3Bvc2l0aW9uOlt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwUG9zaXRpb24iXX1dLGRpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwRGlzYWJsZWQiXX1dLHNob3dEZWxheTpbe3R5cGU6ZCxhcmdzOlsibWF0VG9vbHRpcFNob3dEZWxheSJdfV0saGlkZURlbGF5Olt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwSGlkZURlbGF5Il19XSx0b3VjaEdlc3R1cmVzOlt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwVG91Y2hHZXN0dXJlcyJdfV0sbWVzc2FnZTpbe3R5cGU6ZCxhcmdzOlsibWF0VG9vbHRpcCJdfV0sdG9vbHRpcENsYXNzOlt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaE8sW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6R259LHt0eXBlOkx9LHt0eXBlOlFpfSx7dHlwZTpfZX0se3R5cGU6Q3R9LHt0eXBlOlZ0fSx7dHlwZTpmcn0se3R5cGU6bG59LHt0eXBlOnZvaWQgMH0se3R5cGU6TmV9LHt0eXBlOnZvaWQgMH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0se3Nob3dEZWxheTpbe3R5cGU6ZCxhcmdzOlsibWF0VG9vbHRpcFNob3dEZWxheSJdfV0saGlkZURlbGF5Olt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwSGlkZURlbGF5Il19XSx0b3VjaEdlc3R1cmVzOlt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwVG91Y2hHZXN0dXJlcyJdfV0scG9zaXRpb246W3t0eXBlOmQsYXJnczpbIm1hdFRvb2x0aXBQb3NpdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOmQsYXJnczpbIm1hdFRvb2x0aXBEaXNhYmxlZCJdfV0sbWVzc2FnZTpbe3R5cGU6ZCxhcmdzOlsibWF0VG9vbHRpcCJdfV0sdG9vbHRpcENsYXNzOlt7dHlwZTpkLGFyZ3M6WyJtYXRUb29sdGlwQ2xhc3MiXX1dfSl9KSgpO3ZhciBobT1jbGFzcyBleHRlbmRzIGhPe2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCxjLG0sZixwKXtzdXBlcih0LGUsbyxpLGEscixzLGwsYyxtLGYscCksdGhpcy5fdG9vbHRpcENvbXBvbmVudD1wZH19O2htLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGhtKSh2KEduKSx2KEwpLHYoUWkpLHYoX2UpLHYoQ3QpLHYoVnQpLHYoZnIpLHYobG4pLHYoS3opLHYoTmUsOCksdihZWSw4KSx2KF90KSl9O2htLlx1MDI3NWRpcj12dCh7dHlwZTpobSxzZWxlY3RvcnM6W1siIiwibWF0VG9vbHRpcCIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC10b29sdGlwLXRyaWdnZXIiXSxleHBvcnRBczpbIm1hdFRvb2x0aXAiXSxmZWF0dXJlczpbYWVdfSk7aG0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpHbn0se3R5cGU6TH0se3R5cGU6UWl9LHt0eXBlOl9lfSx7dHlwZTpDdH0se3R5cGU6VnR9LHt0eXBlOmZyfSx7dHlwZTpsbn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbS3pdfV19LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbWVldfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGhtLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttYXRUb29sdGlwXSIsZXhwb3J0QXM6Im1hdFRvb2x0aXAiLGhvc3Q6e2NsYXNzOiJtYXQtdG9vbHRpcC10cmlnZ2VyIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkdufSx7dHlwZTpMfSx7dHlwZTpRaX0se3R5cGU6X2V9LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6ZnJ9LHt0eXBlOmxufSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltLel19XX0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltZWV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO3ZhciBFUD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj10LHRoaXMuX3Zpc2liaWxpdHk9ImluaXRpYWwiLHRoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbj0hMSx0aGlzLl9vbkhpZGU9bmV3IEp0fXNob3codCl7Y2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVUaW1lb3V0SWQpLHRoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbj0hMCx0aGlzLl9zaG93VGltZW91dElkPXNldFRpbWVvdXQoKCk9Pnt0aGlzLl92aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLl9zaG93VGltZW91dElkPXZvaWQgMCx0aGlzLl9vblNob3coKSx0aGlzLl9tYXJrRm9yQ2hlY2soKX0sdCl9aGlkZSh0KXtjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXRJZCksdGhpcy5faGlkZVRpbWVvdXRJZD1zZXRUaW1lb3V0KCgpPT57dGhpcy5fdmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLl9oaWRlVGltZW91dElkPXZvaWQgMCx0aGlzLl9tYXJrRm9yQ2hlY2soKX0sdCl9YWZ0ZXJIaWRkZW4oKXtyZXR1cm4gdGhpcy5fb25IaWRlfWlzVmlzaWJsZSgpe3JldHVybiB0aGlzLl92aXNpYmlsaXR5PT09InZpc2libGUifW5nT25EZXN0cm95KCl7Y2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0SWQpLGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKSx0aGlzLl9vbkhpZGUuY29tcGxldGUoKX1fYW5pbWF0aW9uU3RhcnQoKXt0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITF9X2FuaW1hdGlvbkRvbmUodCl7bGV0IGU9dC50b1N0YXRlO2U9PT0iaGlkZGVuIiYmIXRoaXMuaXNWaXNpYmxlKCkmJnRoaXMuX29uSGlkZS5uZXh0KCksKGU9PT0idmlzaWJsZSJ8fGU9PT0iaGlkZGVuIikmJih0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITApfV9oYW5kbGVCb2R5SW50ZXJhY3Rpb24oKXt0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb24mJnRoaXMuaGlkZSgwKX1fbWFya0ZvckNoZWNrKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X29uU2hvdygpe319O0VQLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEVQKSh2KFR0KSl9O0VQLlx1MDI3NWRpcj12dCh7dHlwZTpFUH0pO0VQLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VHR9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRVAsW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VHR9XX0sbnVsbCl9KSgpO3ZhciBwZD1jbGFzcyBleHRlbmRzIEVQe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCksdGhpcy5fYnJlYWtwb2ludE9ic2VydmVyPWUsdGhpcy5faXNIYW5kc2V0PXRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKHlJLkhhbmRzZXQpfX07cGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cGQpKHYoVHQpLHYoZnMpKX07cGQuXHUwMjc1Y21wPXooe3R5cGU6cGQsc2VsZWN0b3JzOltbIm1hdC10b29sdGlwLWNvbXBvbmVudCJdXSxob3N0QXR0cnM6WyJhcmlhLWhpZGRlbiIsInRydWUiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmcWUoInpvb20iLGUuX3Zpc2liaWxpdHk9PT0idmlzaWJsZSI/MTpudWxsKX0sZmVhdHVyZXM6W2FlXSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1sxLCJtYXQtdG9vbHRpcCIsMywibmdDbGFzcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHUoMCwiZGl2IiwwKSxBKCJAc3RhdGUuc3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2FuaW1hdGlvblN0YXJ0KCl9KSgiQHN0YXRlLmRvbmUiLGZ1bmN0aW9uKGkpe3JldHVybiBlLl9hbmltYXRpb25Eb25lKGkpfSksWCgxLCJhc3luYyIpLFQoMiksaCgpKSx0JjIpe2xldCBvO21lKCJtYXQtdG9vbHRpcC1oYW5kc2V0Iiwobz1RKDEsNSxlLl9pc0hhbmRzZXQpKT09bnVsbD9udWxsOm8ubWF0Y2hlcyksUCgibmdDbGFzcyIsZS50b29sdGlwQ2xhc3MpKCJAc3RhdGUiLGUuX3Zpc2liaWxpdHkpLHgoMiksSWUoZS5tZXNzYWdlKX19LGRpcmVjdGl2ZXM6W2puXSxwaXBlczpbb2VdLHN0eWxlczpbYC5tYXQtdG9vbHRpcC1wYW5lbHtwb2ludGVyLWV2ZW50czpub25lICFpbXBvcnRhbnR9Lm1hdC10b29sdGlwe2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czo0cHg7bWFyZ2luOjE0cHg7bWF4LXdpZHRoOjI1MHB4O3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDo4cHg7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRvb2x0aXB7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC10b29sdGlwLWhhbmRzZXR7bWFyZ2luOjI0cHg7cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDoxNnB4fQpgXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltBbHQudG9vbHRpcFN0YXRlXX0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtwZC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlR0fSx7dHlwZTpmc31dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhwZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1hdC10b29sdGlwLWNvbXBvbmVudCIsdGVtcGxhdGU6YDxkaXYgY2xhc3M9Im1hdC10b29sdGlwIgogICAgIFtuZ0NsYXNzXT0idG9vbHRpcENsYXNzIgogICAgIFtjbGFzcy5tYXQtdG9vbHRpcC1oYW5kc2V0XT0iKF9pc0hhbmRzZXQgfCBhc3luYyk/Lm1hdGNoZXMiCiAgICAgW0BzdGF0ZV09Il92aXNpYmlsaXR5IgogICAgIChAc3RhdGUuc3RhcnQpPSJfYW5pbWF0aW9uU3RhcnQoKSIKICAgICAoQHN0YXRlLmRvbmUpPSJfYW5pbWF0aW9uRG9uZSgkZXZlbnQpIj57e21lc3NhZ2V9fTwvZGl2PgpgLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLGFuaW1hdGlvbnM6W0FsdC50b29sdGlwU3RhdGVdLGhvc3Q6eyJbc3R5bGUuem9vbV0iOidfdmlzaWJpbGl0eSA9PT0gInZpc2libGUiID8gMSA6IG51bGwnLCJhcmlhLWhpZGRlbiI6InRydWUifSxzdHlsZXM6W2AubWF0LXRvb2x0aXAtcGFuZWx7cG9pbnRlci1ldmVudHM6bm9uZSAhaW1wb3J0YW50fS5tYXQtdG9vbHRpcHtjb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6NHB4O21hcmdpbjoxNHB4O21heC13aWR0aDoyNTBweDtwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6OHB4O292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sdGlwe291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e21hcmdpbjoyNHB4O3BhZGRpbmctbGVmdDoxNnB4O3BhZGRpbmctcmlnaHQ6MTZweH0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlR0fSx7dHlwZTpmc31dfSxudWxsKX0pKCk7dmFyIHVjPWNsYXNze307dWMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dWMpfTt1Yy5cdTAyNzVtb2Q9cSh7dHlwZTp1Y30pO3VjLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W0RsdF0saW1wb3J0czpbW19sLFksQm8sRHRdLER0LEJpXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh1Yyxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbX2wsWSxCbyxEdF0sZXhwb3J0czpbaG0scGQsRHQsQmldLGRlY2xhcmF0aW9uczpbaG0scGRdLGVudHJ5Q29tcG9uZW50czpbcGRdLHByb3ZpZGVyczpbRGx0XX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldCh1Yyx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2htLHBkXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltfbCxZLEJvLER0XX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltobSxwZCxEdCxCaV19fSl9KSgpO2Z1bmN0aW9uIHlEdChuLHQpe2lmKG4mMSYmKHUoMCwibWF0LW9wdGlvbiIsMTkpLFQoMSksaCgpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0O1AoInZhbHVlIixlKSx4KDEpLGxlKCIgIixlLCIgIil9fWZ1bmN0aW9uIHhEdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsIm1hdC1mb3JtLWZpZWxkIiwxNiksdSgxLCJtYXQtc2VsZWN0IiwxNyksQSgic2VsZWN0aW9uQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygyKS5fY2hhbmdlUGFnZVNpemUoaS52YWx1ZSl9KSxrKDIseUR0LDIsMiwibWF0LW9wdGlvbiIsMTgpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKDIpO1AoImFwcGVhcmFuY2UiLGUuX2Zvcm1GaWVsZEFwcGVhcmFuY2UpKCJjb2xvciIsZS5jb2xvcikseCgxKSxQKCJ2YWx1ZSIsZS5wYWdlU2l6ZSkoImRpc2FibGVkIixlLmRpc2FibGVkKSgiYXJpYS1sYWJlbCIsZS5faW50bC5pdGVtc1BlclBhZ2VMYWJlbCkseCgxKSxQKCJuZ0Zvck9mIixlLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMpfX1mdW5jdGlvbiB2RHQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMjApLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoMik7eCgxKSxJZShlLnBhZ2VTaXplKX19ZnVuY3Rpb24gd0R0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDEyKSx1KDEsImRpdiIsMTMpLFQoMiksaCgpLGsoMyx4RHQsMyw2LCJtYXQtZm9ybS1maWVsZCIsMTQpLGsoNCx2RHQsMiwxLCJkaXYiLDE1KSxoKCkpLG4mMil7bGV0IGU9UygpO3goMiksbGUoIiAiLGUuX2ludGwuaXRlbXNQZXJQYWdlTGFiZWwsIiAiKSx4KDEpLFAoIm5nSWYiLGUuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGg+MSkseCgxKSxQKCJuZ0lmIixlLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMubGVuZ3RoPD0xKX19ZnVuY3Rpb24gU0R0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiYnV0dG9uIiwyMSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5maXJzdFBhZ2UoKX0pLEtuKCksdSgxLCJzdmciLDcpLEQoMiwicGF0aCIsMjIpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7UCgibWF0VG9vbHRpcCIsZS5faW50bC5maXJzdFBhZ2VMYWJlbCkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsZS5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIixlLl9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpKSxyZSgiYXJpYS1sYWJlbCIsZS5faW50bC5maXJzdFBhZ2VMYWJlbCl9fWZ1bmN0aW9uIFJEdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTtLbigpLEdtKCksdSgwLCJidXR0b24iLDIzKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLmxhc3RQYWdlKCl9KSxLbigpLHUoMSwic3ZnIiw3KSxEKDIsInBhdGgiLDI0KSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO1AoIm1hdFRvb2x0aXAiLGUuX2ludGwubGFzdFBhZ2VMYWJlbCkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsZS5fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpKSgibWF0VG9vbHRpcFBvc2l0aW9uIiwiYWJvdmUiKSgiZGlzYWJsZWQiLGUuX25leHRCdXR0b25zRGlzYWJsZWQoKSkscmUoImFyaWEtbGFiZWwiLGUuX2ludGwubGFzdFBhZ2VMYWJlbCl9fXZhciBncz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY2hhbmdlcz1uZXcgSnQsdGhpcy5pdGVtc1BlclBhZ2VMYWJlbD0iSXRlbXMgcGVyIHBhZ2U6Iix0aGlzLm5leHRQYWdlTGFiZWw9Ik5leHQgcGFnZSIsdGhpcy5wcmV2aW91c1BhZ2VMYWJlbD0iUHJldmlvdXMgcGFnZSIsdGhpcy5maXJzdFBhZ2VMYWJlbD0iRmlyc3QgcGFnZSIsdGhpcy5sYXN0UGFnZUxhYmVsPSJMYXN0IHBhZ2UiLHRoaXMuZ2V0UmFuZ2VMYWJlbD0odCxlLG8pPT57aWYobz09MHx8ZT09MClyZXR1cm5gMCBvZiAke299YDtvPU1hdGgubWF4KG8sMCk7bGV0IGk9dCplLGE9aTxvP01hdGgubWluKGkrZSxvKTppK2U7cmV0dXJuYCR7aSsxfSBcdTIwMTMgJHthfSBvZiAke299YH19fTtncy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxncyl9O2dzLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGdzfSx0b2tlbjpncyxwcm92aWRlZEluOiJyb290In0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhncyxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVybltdfSxudWxsKX0pKCk7ZnVuY3Rpb24gRUR0KG4pe3JldHVybiBufHxuZXcgZ3N9dmFyIHpsdD17cHJvdmlkZTpncyxkZXBzOltbbmV3IEgsbmV3IFlvLGdzXV0sdXNlRmFjdG9yeTpFRHR9O3ZhciBrRHQ9NTA7dmFyIEdZPW5ldyB5dCgiTUFUX1BBR0lOQVRPUl9ERUZBVUxUX09QVElPTlMiKSxORHQ9VnIodUkoY2xhc3N7fSkpLF9PPWNsYXNzIGV4dGVuZHMgTkR0e2NvbnN0cnVjdG9yKHQsZSxvKXtpZihzdXBlcigpLHRoaXMuX2ludGw9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX3BhZ2VJbmRleD0wLHRoaXMuX2xlbmd0aD0wLHRoaXMuX3BhZ2VTaXplT3B0aW9ucz1bXSx0aGlzLl9oaWRlUGFnZVNpemU9ITEsdGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnM9ITEsdGhpcy5wYWdlPW5ldyAkLHRoaXMuX2ludGxDaGFuZ2VzPXQuY2hhbmdlcy5zdWJzY3JpYmUoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSxvKXtsZXR7cGFnZVNpemU6aSxwYWdlU2l6ZU9wdGlvbnM6YSxoaWRlUGFnZVNpemU6cixzaG93Rmlyc3RMYXN0QnV0dG9uczpzfT1vO2khPW51bGwmJih0aGlzLl9wYWdlU2l6ZT1pKSxhIT1udWxsJiYodGhpcy5fcGFnZVNpemVPcHRpb25zPWEpLHIhPW51bGwmJih0aGlzLl9oaWRlUGFnZVNpemU9cikscyE9bnVsbCYmKHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPXMpfX1nZXQgcGFnZUluZGV4KCl7cmV0dXJuIHRoaXMuX3BhZ2VJbmRleH1zZXQgcGFnZUluZGV4KHQpe3RoaXMuX3BhZ2VJbmRleD1NYXRoLm1heChSaSh0KSwwKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH1zZXQgbGVuZ3RoKHQpe3RoaXMuX2xlbmd0aD1SaSh0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgcGFnZVNpemUoKXtyZXR1cm4gdGhpcy5fcGFnZVNpemV9c2V0IHBhZ2VTaXplKHQpe3RoaXMuX3BhZ2VTaXplPU1hdGgubWF4KFJpKHQpLDApLHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpfWdldCBwYWdlU2l6ZU9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fcGFnZVNpemVPcHRpb25zfXNldCBwYWdlU2l6ZU9wdGlvbnModCl7dGhpcy5fcGFnZVNpemVPcHRpb25zPSh0fHxbXSkubWFwKGU9PlJpKGUpKSx0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKX1nZXQgaGlkZVBhZ2VTaXplKCl7cmV0dXJuIHRoaXMuX2hpZGVQYWdlU2l6ZX1zZXQgaGlkZVBhZ2VTaXplKHQpe3RoaXMuX2hpZGVQYWdlU2l6ZT1aZSh0KX1nZXQgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMoKXtyZXR1cm4gdGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnN9c2V0IHNob3dGaXJzdExhc3RCdXR0b25zKHQpe3RoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPVplKHQpfW5nT25Jbml0KCl7dGhpcy5faW5pdGlhbGl6ZWQ9ITAsdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCksdGhpcy5fbWFya0luaXRpYWxpemVkKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9pbnRsQ2hhbmdlcy51bnN1YnNjcmliZSgpfW5leHRQYWdlKCl7aWYoIXRoaXMuaGFzTmV4dFBhZ2UoKSlyZXR1cm47bGV0IHQ9dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXgrKyx0aGlzLl9lbWl0UGFnZUV2ZW50KHQpfXByZXZpb3VzUGFnZSgpe2lmKCF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpKXJldHVybjtsZXQgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleC0tLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9Zmlyc3RQYWdlKCl7aWYoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpcmV0dXJuO2xldCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PTAsdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1sYXN0UGFnZSgpe2lmKCF0aGlzLmhhc05leHRQYWdlKCkpcmV0dXJuO2xldCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PXRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpLTEsdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1oYXNQcmV2aW91c1BhZ2UoKXtyZXR1cm4gdGhpcy5wYWdlSW5kZXg+PTEmJnRoaXMucGFnZVNpemUhPTB9aGFzTmV4dFBhZ2UoKXtsZXQgdD10aGlzLmdldE51bWJlck9mUGFnZXMoKS0xO3JldHVybiB0aGlzLnBhZ2VJbmRleDx0JiZ0aGlzLnBhZ2VTaXplIT0wfWdldE51bWJlck9mUGFnZXMoKXtyZXR1cm4gdGhpcy5wYWdlU2l6ZT9NYXRoLmNlaWwodGhpcy5sZW5ndGgvdGhpcy5wYWdlU2l6ZSk6MH1fY2hhbmdlUGFnZVNpemUodCl7bGV0IGU9dGhpcy5wYWdlSW5kZXgqdGhpcy5wYWdlU2l6ZSxvPXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PU1hdGguZmxvb3IoZS90KXx8MCx0aGlzLnBhZ2VTaXplPXQsdGhpcy5fZW1pdFBhZ2VFdmVudChvKX1fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5oYXNOZXh0UGFnZSgpfV9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5oYXNQcmV2aW91c1BhZ2UoKX1fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCl7IXRoaXMuX2luaXRpYWxpemVkfHwodGhpcy5wYWdlU2l6ZXx8KHRoaXMuX3BhZ2VTaXplPXRoaXMucGFnZVNpemVPcHRpb25zLmxlbmd0aCE9MD90aGlzLnBhZ2VTaXplT3B0aW9uc1swXTprRHQpLHRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucz10aGlzLnBhZ2VTaXplT3B0aW9ucy5zbGljZSgpLHRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5pbmRleE9mKHRoaXMucGFnZVNpemUpPT09LTEmJnRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5wdXNoKHRoaXMucGFnZVNpemUpLHRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5zb3J0KCh0LGUpPT50LWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1fZW1pdFBhZ2VFdmVudCh0KXt0aGlzLnBhZ2UuZW1pdCh7cHJldmlvdXNQYWdlSW5kZXg6dCxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgscGFnZVNpemU6dGhpcy5wYWdlU2l6ZSxsZW5ndGg6dGhpcy5sZW5ndGh9KX19O19PLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF9PKSh2KGdzKSx2KFR0KSx2KHZvaWQgMCkpfTtfTy5cdTAyNzVkaXI9dnQoe3R5cGU6X08saW5wdXRzOntwYWdlSW5kZXg6InBhZ2VJbmRleCIsbGVuZ3RoOiJsZW5ndGgiLHBhZ2VTaXplOiJwYWdlU2l6ZSIscGFnZVNpemVPcHRpb25zOiJwYWdlU2l6ZU9wdGlvbnMiLGhpZGVQYWdlU2l6ZToiaGlkZVBhZ2VTaXplIixzaG93Rmlyc3RMYXN0QnV0dG9uczoic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLGNvbG9yOiJjb2xvciJ9LG91dHB1dHM6e3BhZ2U6InBhZ2UifSxmZWF0dXJlczpbYWVdfSk7X08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpnc30se3R5cGU6VHR9LHt0eXBlOnZvaWQgMH1dO19PLnByb3BEZWNvcmF0b3JzPXtjb2xvcjpbe3R5cGU6ZH1dLHBhZ2VJbmRleDpbe3R5cGU6ZH1dLGxlbmd0aDpbe3R5cGU6ZH1dLHBhZ2VTaXplOlt7dHlwZTpkfV0scGFnZVNpemVPcHRpb25zOlt7dHlwZTpkfV0saGlkZVBhZ2VTaXplOlt7dHlwZTpkfV0sc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6W3t0eXBlOmR9XSxwYWdlOlt7dHlwZTpCfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhfTyxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpnc30se3R5cGU6VHR9LHt0eXBlOnZvaWQgMH1dfSx7cGFnZTpbe3R5cGU6Qn1dLHBhZ2VJbmRleDpbe3R5cGU6ZH1dLGxlbmd0aDpbe3R5cGU6ZH1dLHBhZ2VTaXplOlt7dHlwZTpkfV0scGFnZVNpemVPcHRpb25zOlt7dHlwZTpkfV0saGlkZVBhZ2VTaXplOlt7dHlwZTpkfV0sc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6W3t0eXBlOmR9XSxjb2xvcjpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBoYz1jbGFzcyBleHRlbmRzIF9Pe2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LGUsbyksbyYmby5mb3JtRmllbGRBcHBlYXJhbmNlIT1udWxsJiYodGhpcy5fZm9ybUZpZWxkQXBwZWFyYW5jZT1vLmZvcm1GaWVsZEFwcGVhcmFuY2UpfX07aGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8aGMpKHYoZ3MpLHYoVHQpLHYoR1ksOCkpfTtoYy5cdTAyNzVjbXA9eih7dHlwZTpoYyxzZWxlY3RvcnM6W1sibWF0LXBhZ2luYXRvciJdXSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JvdXAiLDEsIm1hdC1wYWdpbmF0b3IiXSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCJ9LGV4cG9ydEFzOlsibWF0UGFnaW5hdG9yIl0sZmVhdHVyZXM6W2FlXSxkZWNsczoxNCx2YXJzOjE0LGNvbnN0czpbWzEsIm1hdC1wYWdpbmF0b3Itb3V0ZXItY29udGFpbmVyIl0sWzEsIm1hdC1wYWdpbmF0b3ItY29udGFpbmVyIl0sWyJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIiw0LCJuZ0lmIl0sWzEsIm1hdC1wYWdpbmF0b3ItcmFuZ2UtYWN0aW9ucyJdLFsxLCJtYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVsIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tZmlyc3QiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tcHJldmlvdXMiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJ2aWV3Qm94IiwiMCAwIDI0IDI0IiwiZm9jdXNhYmxlIiwiZmFsc2UiLDEsIm1hdC1wYWdpbmF0b3ItaWNvbiJdLFsiZCIsIk0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLW5leHQiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJkIiwiTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsImNsYXNzIiwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWxhc3QiLDMsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJtYXRUb29sdGlwUG9zaXRpb24iLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIl0sWzEsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVsIl0sWyJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdCIsMywiYXBwZWFyYW5jZSIsImNvbG9yIiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXZhbHVlIiw0LCJuZ0lmIl0sWzEsIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdCIsMywiYXBwZWFyYW5jZSIsImNvbG9yIl0sWzMsInZhbHVlIiwiZGlzYWJsZWQiLCJhcmlhLWxhYmVsIiwic2VsZWN0aW9uQ2hhbmdlIl0sWzMsInZhbHVlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywidmFsdWUiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtdmFsdWUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1maXJzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbImQiLCJNMTguNDEgMTYuNTlMMTMuODIgMTJsNC41OS00LjU5TDE3IDZsLTYgNiA2IDZ6TTYgNmgydjEySDZ6Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbGFzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbImQiLCJNNS41OSA3LjQxTDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02ek0xNiA2aDJ2MTJoLTJ6Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDApLHUoMSwiZGl2IiwxKSxrKDIsd0R0LDUsMywiZGl2IiwyKSx1KDMsImRpdiIsMyksdSg0LCJkaXYiLDQpLFQoNSksaCgpLGsoNixTRHQsMyw1LCJidXR0b24iLDUpLHUoNywiYnV0dG9uIiw2KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5wcmV2aW91c1BhZ2UoKX0pLEtuKCksdSg4LCJzdmciLDcpLEQoOSwicGF0aCIsOCksaCgpLGgoKSxHbSgpLHUoMTAsImJ1dHRvbiIsOSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUubmV4dFBhZ2UoKX0pLEtuKCksdSgxMSwic3ZnIiw3KSxEKDEyLCJwYXRoIiwxMCksaCgpLGgoKSxrKDEzLFJEdCwzLDUsImJ1dHRvbiIsMTEpLGgoKSxoKCksaCgpKSx0JjImJih4KDIpLFAoIm5nSWYiLCFlLmhpZGVQYWdlU2l6ZSkseCgzKSxsZSgiICIsZS5faW50bC5nZXRSYW5nZUxhYmVsKGUucGFnZUluZGV4LGUucGFnZVNpemUsZS5sZW5ndGgpLCIgIikseCgxKSxQKCJuZ0lmIixlLnNob3dGaXJzdExhc3RCdXR0b25zKSx4KDEpLFAoIm1hdFRvb2x0aXAiLGUuX2ludGwucHJldmlvdXNQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLGUuX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsZS5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkscmUoImFyaWEtbGFiZWwiLGUuX2ludGwucHJldmlvdXNQYWdlTGFiZWwpLHgoMyksUCgibWF0VG9vbHRpcCIsZS5faW50bC5uZXh0UGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIixlLl9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsZS5fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpKSxyZSgiYXJpYS1sYWJlbCIsZS5faW50bC5uZXh0UGFnZUxhYmVsKSx4KDMpLFAoIm5nSWYiLGUuc2hvd0ZpcnN0TGFzdEJ1dHRvbnMpKX0sZGlyZWN0aXZlczpbWHQsZm4saG0sb2ksZXIsbW4sSWldLHN0eWxlczpbYC5tYXQtcGFnaW5hdG9ye2Rpc3BsYXk6YmxvY2t9Lm1hdC1wYWdpbmF0b3Itb3V0ZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleH0ubWF0LXBhZ2luYXRvci1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7cGFkZGluZzowIDhweDtmbGV4LXdyYXA6d3JhcC1yZXZlcnNlO3dpZHRoOjEwMCV9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXple2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTttYXJnaW4tcmlnaHQ6OHB4fVtkaXI9cnRsXSAubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6OHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1sYWJlbHttYXJnaW46MCA0cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdHttYXJnaW46NnB4IDRweCAwIDRweDt3aWR0aDo1NnB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5le3dpZHRoOjY0cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGx7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbHttYXJnaW46MCAzMnB4IDAgMjRweH0ubWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25ze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Lm1hdC1wYWdpbmF0b3ItaWNvbnt3aWR0aDoyOHB4O2ZpbGw6Y3VycmVudENvbG9yfVtkaXI9cnRsXSAubWF0LXBhZ2luYXRvci1pY29ue3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcGFnaW5hdG9yLWljb257ZmlsbDpDYW52YXNUZXh0fQpgXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtoYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmdzfSx7dHlwZTpUdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbR1ldfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaGMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtcGFnaW5hdG9yIixleHBvcnRBczoibWF0UGFnaW5hdG9yIix0ZW1wbGF0ZTpgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXIiPgogIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIiAqbmdJZj0iIWhpZGVQYWdlU2l6ZSI+CiAgICAgIDxkaXYgY2xhc3M9Im1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVsIj4KICAgICAgICB7e19pbnRsLml0ZW1zUGVyUGFnZUxhYmVsfX0KICAgICAgPC9kaXY+CgogICAgICA8bWF0LWZvcm0tZmllbGQKICAgICAgICAqbmdJZj0iX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGggPiAxIgogICAgICAgIFthcHBlYXJhbmNlXT0iX2Zvcm1GaWVsZEFwcGVhcmFuY2UhIgogICAgICAgIFtjb2xvcl09ImNvbG9yIgogICAgICAgIGNsYXNzPSJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QiPgogICAgICAgIDxtYXQtc2VsZWN0CiAgICAgICAgICBbdmFsdWVdPSJwYWdlU2l6ZSIKICAgICAgICAgIFtkaXNhYmxlZF09ImRpc2FibGVkIgogICAgICAgICAgW2FyaWEtbGFiZWxdPSJfaW50bC5pdGVtc1BlclBhZ2VMYWJlbCIKICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPSJfY2hhbmdlUGFnZVNpemUoJGV2ZW50LnZhbHVlKSI+CiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9ImxldCBwYWdlU2l6ZU9wdGlvbiBvZiBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zIiBbdmFsdWVdPSJwYWdlU2l6ZU9wdGlvbiI+CiAgICAgICAgICAgIHt7cGFnZVNpemVPcHRpb259fQogICAgICAgICAgPC9tYXQtb3B0aW9uPgogICAgICAgIDwvbWF0LXNlbGVjdD4KICAgICAgPC9tYXQtZm9ybS1maWVsZD4KCiAgICAgIDxkaXYKICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtdmFsdWUiCiAgICAgICAgKm5nSWY9Il9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMubGVuZ3RoIDw9IDEiPnt7cGFnZVNpemV9fTwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25zIj4KICAgICAgPGRpdiBjbGFzcz0ibWF0LXBhZ2luYXRvci1yYW5nZS1sYWJlbCI+CiAgICAgICAge3tfaW50bC5nZXRSYW5nZUxhYmVsKHBhZ2VJbmRleCwgcGFnZVNpemUsIGxlbmd0aCl9fQogICAgICA8L2Rpdj4KCiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiIKICAgICAgICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWZpcnN0IgogICAgICAgICAgICAgIChjbGljayk9ImZpcnN0UGFnZSgpIgogICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5maXJzdFBhZ2VMYWJlbCIKICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09Il9pbnRsLmZpcnN0UGFnZUxhYmVsIgogICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSIKICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iJ2Fib3ZlJyIKICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSIKICAgICAgICAgICAgICAqbmdJZj0ic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiPgogICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj4KICAgICAgICAgIDxwYXRoIGQ9Ik0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiLz4KICAgICAgICA8L3N2Zz4KICAgICAgPC9idXR0b24+CiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiIKICAgICAgICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLXByZXZpb3VzIgogICAgICAgICAgICAgIChjbGljayk9InByZXZpb3VzUGFnZSgpIgogICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJfaW50bC5wcmV2aW91c1BhZ2VMYWJlbCIKICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09Il9pbnRsLnByZXZpb3VzUGFnZUxhYmVsIgogICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSIKICAgICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT0iJ2Fib3ZlJyIKICAgICAgICAgICAgICBbZGlzYWJsZWRdPSJfcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSI+CiAgICAgICAgPHN2ZyBjbGFzcz0ibWF0LXBhZ2luYXRvci1pY29uIiB2aWV3Qm94PSIwIDAgMjQgMjQiIGZvY3VzYWJsZT0iZmFsc2UiPgogICAgICAgICAgPHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Ii8+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiB0eXBlPSJidXR0b24iCiAgICAgICAgICAgICAgY2xhc3M9Im1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1uZXh0IgogICAgICAgICAgICAgIChjbGljayk9Im5leHRQYWdlKCkiCiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09Il9pbnRsLm5leHRQYWdlTGFiZWwiCiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPSJfaW50bC5uZXh0UGFnZUxhYmVsIgogICAgICAgICAgICAgIFttYXRUb29sdGlwRGlzYWJsZWRdPSJfbmV4dEJ1dHRvbnNEaXNhYmxlZCgpIgogICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPSInYWJvdmUnIgogICAgICAgICAgICAgIFtkaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiPgogICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj4KICAgICAgICAgIDxwYXRoIGQ9Ik0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiLz4KICAgICAgICA8L3N2Zz4KICAgICAgPC9idXR0b24+CiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIHR5cGU9ImJ1dHRvbiIKICAgICAgICAgICAgICBjbGFzcz0ibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWxhc3QiCiAgICAgICAgICAgICAgKGNsaWNrKT0ibGFzdFBhZ2UoKSIKICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iX2ludGwubGFzdFBhZ2VMYWJlbCIKICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09Il9pbnRsLmxhc3RQYWdlTGFiZWwiCiAgICAgICAgICAgICAgW21hdFRvb2x0aXBEaXNhYmxlZF09Il9uZXh0QnV0dG9uc0Rpc2FibGVkKCkiCiAgICAgICAgICAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09IidhYm92ZSciCiAgICAgICAgICAgICAgW2Rpc2FibGVkXT0iX25leHRCdXR0b25zRGlzYWJsZWQoKSIKICAgICAgICAgICAgICAqbmdJZj0ic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiPgogICAgICAgIDxzdmcgY2xhc3M9Im1hdC1wYWdpbmF0b3ItaWNvbiIgdmlld0JveD0iMCAwIDI0IDI0IiBmb2N1c2FibGU9ImZhbHNlIj4KICAgICAgICAgIDxwYXRoIGQ9Ik01LjU5IDcuNDFMMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnoiLz4KICAgICAgICA8L3N2Zz4KICAgICAgPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CmAsaW5wdXRzOlsiZGlzYWJsZWQiXSxob3N0OntjbGFzczoibWF0LXBhZ2luYXRvciIscm9sZToiZ3JvdXAifSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxzdHlsZXM6W2AubWF0LXBhZ2luYXRvcntkaXNwbGF5OmJsb2NrfS5tYXQtcGFnaW5hdG9yLW91dGVyLWNvbnRhaW5lcntkaXNwbGF5OmZsZXh9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kO3BhZGRpbmc6MCA4cHg7ZmxleC13cmFwOndyYXAtcmV2ZXJzZTt3aWR0aDoxMDAlfS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7bWFyZ2luLXJpZ2h0OjhweH1bZGlyPXJ0bF0gLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXple21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjhweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtbGFiZWx7bWFyZ2luOjAgNHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3R7bWFyZ2luOjZweCA0cHggMCA0cHg7d2lkdGg6NTZweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZXt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxse3dpZHRoOjY0cHh9Lm1hdC1wYWdpbmF0b3ItcmFuZ2UtbGFiZWx7bWFyZ2luOjAgMzJweCAwIDI0cHh9Lm1hdC1wYWdpbmF0b3ItcmFuZ2UtYWN0aW9uc3tkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtcGFnaW5hdG9yLWljb257d2lkdGg6MjhweDtmaWxsOmN1cnJlbnRDb2xvcn1bZGlyPXJ0bF0gLm1hdC1wYWdpbmF0b3ItaWNvbnt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXBhZ2luYXRvci1pY29ue2ZpbGw6Q2FudmFzVGV4dH0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmdzfSx7dHlwZTpUdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbR1ldfV19XX0sbnVsbCl9KSgpO3ZhciBIdT1jbGFzc3t9O0h1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEh1KX07SHUuXHUwMjc1bW9kPXEoe3R5cGU6SHV9KTtIdS5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlt6bHRdLGltcG9ydHM6W1tZLE1lLEVpLHVjLER0XV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSHUsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1ksTWUsRWksdWMsRHRdLGV4cG9ydHM6W2hjXSxkZWNsYXJhdGlvbnM6W2hjXSxwcm92aWRlcnM6W3psdF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoSHUse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltoY119LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWSxNZSxFaSx1YyxEdF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5baGNdfX0pfSkoKTt2YXIgQUR0PVsibWF0LXNvcnQtaGVhZGVyIiwiIl07ZnVuY3Rpb24gRER0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2IiwzKSxBKCJAYXJyb3dQb3NpdGlvbi5zdGFydCIsZnVuY3Rpb24oKXtPdChlKTtsZXQgaT1TKCk7cmV0dXJuIGkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITB9KSgiQGFycm93UG9zaXRpb24uZG9uZSIsZnVuY3Rpb24oKXtPdChlKTtsZXQgaT1TKCk7cmV0dXJuIGkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITF9KSxEKDEsImRpdiIsNCksdSgyLCJkaXYiLDUpLEQoMywiZGl2Iiw2KSxEKDQsImRpdiIsNyksRCg1LCJkaXYiLDgpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7UCgiQGFycm93T3BhY2l0eSIsZS5fZ2V0QXJyb3dWaWV3U3RhdGUoKSkoIkBhcnJvd1Bvc2l0aW9uIixlLl9nZXRBcnJvd1ZpZXdTdGF0ZSgpKSgiQGFsbG93Q2hpbGRyZW4iLGUuX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSkseCgyKSxQKCJAaW5kaWNhdG9yIixlLl9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkpLHgoMSksUCgiQGxlZnRQb2ludGVyIixlLl9nZXRBcnJvd0RpcmVjdGlvblN0YXRlKCkpLHgoMSksUCgiQHJpZ2h0UG9pbnRlciIsZS5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKX19dmFyIElEdD1bIioiXTtmdW5jdGlvbiB6RHQobil7cmV0dXJuIEVycm9yKGBDYW5ub3QgaGF2ZSB0d28gTWF0U29ydGFibGVzIHdpdGggdGhlIHNhbWUgaWQgKCR7bn0pLmApfWZ1bmN0aW9uIEhEdCgpe3JldHVybiBFcnJvcigiTWF0U29ydEhlYWRlciBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gYSBwYXJlbnQgZWxlbWVudCB3aXRoIHRoZSBNYXRTb3J0IGRpcmVjdGl2ZS4iKX1mdW5jdGlvbiBGRHQoKXtyZXR1cm4gRXJyb3IoIk1hdFNvcnRIZWFkZXIgbXVzdCBiZSBwcm92aWRlZCB3aXRoIGEgdW5pcXVlIGlkLiIpfWZ1bmN0aW9uIExEdChuKXtyZXR1cm4gRXJyb3IoYCR7bn0gaXMgbm90IGEgdmFsaWQgc29ydCBkaXJlY3Rpb24gKCdhc2MnIG9yICdkZXNjJykuYCl9dmFyIFdZPW5ldyB5dCgiTUFUX1NPUlRfREVGQVVMVF9PUFRJT05TIiksQkR0PXVJKFZyKGNsYXNze30pKSx1cz1jbGFzcyBleHRlbmRzIEJEdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RlZmF1bHRPcHRpb25zPXQsdGhpcy5zb3J0YWJsZXM9bmV3IE1hcCx0aGlzLl9zdGF0ZUNoYW5nZXM9bmV3IEp0LHRoaXMuc3RhcnQ9ImFzYyIsdGhpcy5fZGlyZWN0aW9uPSIiLHRoaXMuc29ydENoYW5nZT1uZXcgJH1nZXQgZGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpcmVjdGlvbn1zZXQgZGlyZWN0aW9uKHQpe2lmKHQmJnQhPT0iYXNjIiYmdCE9PSJkZXNjIiYmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpKXRocm93IExEdCh0KTt0aGlzLl9kaXJlY3Rpb249dH1nZXQgZGlzYWJsZUNsZWFyKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVDbGVhcn1zZXQgZGlzYWJsZUNsZWFyKHQpe3RoaXMuX2Rpc2FibGVDbGVhcj1aZSh0KX1yZWdpc3Rlcih0KXtpZih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKXtpZighdC5pZCl0aHJvdyBGRHQoKTtpZih0aGlzLnNvcnRhYmxlcy5oYXModC5pZCkpdGhyb3cgekR0KHQuaWQpfXRoaXMuc29ydGFibGVzLnNldCh0LmlkLHQpfWRlcmVnaXN0ZXIodCl7dGhpcy5zb3J0YWJsZXMuZGVsZXRlKHQuaWQpfXNvcnQodCl7dGhpcy5hY3RpdmUhPXQuaWQ/KHRoaXMuYWN0aXZlPXQuaWQsdGhpcy5kaXJlY3Rpb249dC5zdGFydD90LnN0YXJ0OnRoaXMuc3RhcnQpOnRoaXMuZGlyZWN0aW9uPXRoaXMuZ2V0TmV4dFNvcnREaXJlY3Rpb24odCksdGhpcy5zb3J0Q2hhbmdlLmVtaXQoe2FjdGl2ZTp0aGlzLmFjdGl2ZSxkaXJlY3Rpb246dGhpcy5kaXJlY3Rpb259KX1nZXROZXh0U29ydERpcmVjdGlvbih0KXt2YXIgZSxvLGk7aWYoIXQpcmV0dXJuIiI7bGV0IGE9KG89KGU9dD09bnVsbD92b2lkIDA6dC5kaXNhYmxlQ2xlYXIpIT09bnVsbCYmZSE9PXZvaWQgMD9lOnRoaXMuZGlzYWJsZUNsZWFyKSE9PW51bGwmJm8hPT12b2lkIDA/bzohISghKChpPXRoaXMuX2RlZmF1bHRPcHRpb25zKT09PW51bGx8fGk9PT12b2lkIDApJiZpLmRpc2FibGVDbGVhcikscj1WRHQodC5zdGFydHx8dGhpcy5zdGFydCxhKSxzPXIuaW5kZXhPZih0aGlzLmRpcmVjdGlvbikrMTtyZXR1cm4gcz49ci5sZW5ndGgmJihzPTApLHJbc119bmdPbkluaXQoKXt0aGlzLl9tYXJrSW5pdGlhbGl6ZWQoKX1uZ09uQ2hhbmdlcygpe3RoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX19O3VzLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHVzKSh2KFdZLDgpKX07dXMuXHUwMjc1ZGlyPXZ0KHt0eXBlOnVzLHNlbGVjdG9yczpbWyIiLCJtYXRTb3J0IiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXNvcnQiXSxpbnB1dHM6e2Rpc2FibGVkOlsibWF0U29ydERpc2FibGVkIiwiZGlzYWJsZWQiXSxzdGFydDpbIm1hdFNvcnRTdGFydCIsInN0YXJ0Il0sZGlyZWN0aW9uOlsibWF0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiJdLGRpc2FibGVDbGVhcjpbIm1hdFNvcnREaXNhYmxlQ2xlYXIiLCJkaXNhYmxlQ2xlYXIiXSxhY3RpdmU6WyJtYXRTb3J0QWN0aXZlIiwiYWN0aXZlIl19LG91dHB1dHM6e3NvcnRDaGFuZ2U6Im1hdFNvcnRDaGFuZ2UifSxleHBvcnRBczpbIm1hdFNvcnQiXSxmZWF0dXJlczpbYWUsV2VdfSk7dXMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltXWV19XX1dO3VzLnByb3BEZWNvcmF0b3JzPXthY3RpdmU6W3t0eXBlOmQsYXJnczpbIm1hdFNvcnRBY3RpdmUiXX1dLHN0YXJ0Olt7dHlwZTpkLGFyZ3M6WyJtYXRTb3J0U3RhcnQiXX1dLGRpcmVjdGlvbjpbe3R5cGU6ZCxhcmdzOlsibWF0U29ydERpcmVjdGlvbiJdfV0sZGlzYWJsZUNsZWFyOlt7dHlwZTpkLGFyZ3M6WyJtYXRTb3J0RGlzYWJsZUNsZWFyIl19XSxzb3J0Q2hhbmdlOlt7dHlwZTpCLGFyZ3M6WyJtYXRTb3J0Q2hhbmdlIl19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHVzLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttYXRTb3J0XSIsZXhwb3J0QXM6Im1hdFNvcnQiLGhvc3Q6e2NsYXNzOiJtYXQtc29ydCJ9LGlucHV0czpbImRpc2FibGVkOiBtYXRTb3J0RGlzYWJsZWQiXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbV1ldfV19XX0se3N0YXJ0Olt7dHlwZTpkLGFyZ3M6WyJtYXRTb3J0U3RhcnQiXX1dLHNvcnRDaGFuZ2U6W3t0eXBlOkIsYXJnczpbIm1hdFNvcnRDaGFuZ2UiXX1dLGRpcmVjdGlvbjpbe3R5cGU6ZCxhcmdzOlsibWF0U29ydERpcmVjdGlvbiJdfV0sZGlzYWJsZUNsZWFyOlt7dHlwZTpkLGFyZ3M6WyJtYXRTb3J0RGlzYWJsZUNsZWFyIl19XSxhY3RpdmU6W3t0eXBlOmQsYXJnczpbIm1hdFNvcnRBY3RpdmUiXX1dfSl9KSgpO2Z1bmN0aW9uIFZEdChuLHQpe2xldCBlPVsiYXNjIiwiZGVzYyJdO3JldHVybiBuPT0iZGVzYyImJmUucmV2ZXJzZSgpLHR8fGUucHVzaCgiIiksZX12YXIgZHg9cXYuRU5URVJJTkcrIiAiK1F5LlNUQU5EQVJEX0NVUlZFLHgwPXtpbmRpY2F0b3I6eHIoImluZGljYXRvciIsW2hpKCJhY3RpdmUtYXNjLCBhc2MiLExuKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMHB4KSJ9KSksaGkoImFjdGl2ZS1kZXNjLCBkZXNjIixMbih7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDEwcHgpIn0pKSxiaSgiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLERpKGR4KSldKSxsZWZ0UG9pbnRlcjp4cigibGVmdFBvaW50ZXIiLFtoaSgiYWN0aXZlLWFzYywgYXNjIixMbih7dHJhbnNmb3JtOiJyb3RhdGUoLTQ1ZGVnKSJ9KSksaGkoImFjdGl2ZS1kZXNjLCBkZXNjIixMbih7dHJhbnNmb3JtOiJyb3RhdGUoNDVkZWcpIn0pKSxiaSgiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLERpKGR4KSldKSxyaWdodFBvaW50ZXI6eHIoInJpZ2h0UG9pbnRlciIsW2hpKCJhY3RpdmUtYXNjLCBhc2MiLExuKHt0cmFuc2Zvcm06InJvdGF0ZSg0NWRlZykifSkpLGhpKCJhY3RpdmUtZGVzYywgZGVzYyIsTG4oe3RyYW5zZm9ybToicm90YXRlKC00NWRlZykifSkpLGJpKCJhY3RpdmUtYXNjIDw9PiBhY3RpdmUtZGVzYyIsRGkoZHgpKV0pLGFycm93T3BhY2l0eTp4cigiYXJyb3dPcGFjaXR5IixbaGkoImRlc2MtdG8tYWN0aXZlLCBhc2MtdG8tYWN0aXZlLCBhY3RpdmUiLExuKHtvcGFjaXR5OjF9KSksaGkoImRlc2MtdG8taGludCwgYXNjLXRvLWhpbnQsIGhpbnQiLExuKHtvcGFjaXR5Oi41NH0pKSxoaSgiaGludC10by1kZXNjLCBhY3RpdmUtdG8tZGVzYywgZGVzYywgaGludC10by1hc2MsIGFjdGl2ZS10by1hc2MsIGFzYywgdm9pZCIsTG4oe29wYWNpdHk6MH0pKSxiaSgiKiA9PiBhc2MsICogPT4gZGVzYywgKiA9PiBhY3RpdmUsICogPT4gaGludCwgKiA9PiB2b2lkIixEaSgiMG1zIikpLGJpKCIqIDw9PiAqIixEaShkeCkpXSksYXJyb3dQb3NpdGlvbjp4cigiYXJyb3dQb3NpdGlvbiIsW2JpKCIqID0+IGRlc2MtdG8taGludCwgKiA9PiBkZXNjLXRvLWFjdGl2ZSIsRGkoZHgsYnYoW0xuKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTI1JSkifSksTG4oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KV0pKSksYmkoIiogPT4gaGludC10by1kZXNjLCAqID0+IGFjdGl2ZS10by1kZXNjIixEaShkeCxidihbTG4oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KSxMbih7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDI1JSkifSldKSkpLGJpKCIqID0+IGFzYy10by1oaW50LCAqID0+IGFzYy10by1hY3RpdmUiLERpKGR4LGJ2KFtMbih7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDI1JSkifSksTG4oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgwKSJ9KV0pKSksYmkoIiogPT4gaGludC10by1hc2MsICogPT4gYWN0aXZlLXRvLWFzYyIsRGkoZHgsYnYoW0xuKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSksTG4oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgtMjUlKSJ9KV0pKSksaGkoImRlc2MtdG8taGludCwgYXNjLXRvLWhpbnQsIGhpbnQsIGRlc2MtdG8tYWN0aXZlLCBhc2MtdG8tYWN0aXZlLCBhY3RpdmUiLExuKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSkpLGhpKCJoaW50LXRvLWRlc2MsIGFjdGl2ZS10by1kZXNjLCBkZXNjIixMbih7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yNSUpIn0pKSxoaSgiaGludC10by1hc2MsIGFjdGl2ZS10by1hc2MsIGFzYyIsTG4oe3RyYW5zZm9ybToidHJhbnNsYXRlWSgyNSUpIn0pKV0pLGFsbG93Q2hpbGRyZW46eHIoImFsbG93Q2hpbGRyZW4iLFtiaSgiKiA8PT4gKiIsW19BKCJAKiIsaEEoKSx7b3B0aW9uYWw6ITB9KV0pXSl9O3ZhciBkZD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY2hhbmdlcz1uZXcgSnR9fTtkZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxkZCl9O2RkLlx1MDI3NXByb3Y9UHQoe2ZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGRkfSx0b2tlbjpkZCxwcm92aWRlZEluOiJyb290In0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhkZCxbe3R5cGU6U3QsYXJnczpbe3Byb3ZpZGVkSW46InJvb3QifV19XSxmdW5jdGlvbigpe3JldHVybltdfSxudWxsKX0pKCk7ZnVuY3Rpb24gakR0KG4pe3JldHVybiBufHxuZXcgZGR9dmFyIEhsdD17cHJvdmlkZTpkZCxkZXBzOltbbmV3IEgsbmV3IFlvLGRkXV0sdXNlRmFjdG9yeTpqRHR9O3ZhciBVRHQ9VnIoY2xhc3N7fSksYmY9Y2xhc3MgZXh0ZW5kcyBVRHR7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyl7aWYoc3VwZXIoKSx0aGlzLl9pbnRsPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLl9zb3J0PW8sdGhpcy5fY29sdW1uRGVmPWksdGhpcy5fZm9jdXNNb25pdG9yPWEsdGhpcy5fZWxlbWVudFJlZj1yLHRoaXMuX2FyaWFEZXNjcmliZXI9cyx0aGlzLl9zaG93SW5kaWNhdG9ySGludD0hMSx0aGlzLl92aWV3U3RhdGU9e30sdGhpcy5fYXJyb3dEaXJlY3Rpb249IiIsdGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMSx0aGlzLmFycm93UG9zaXRpb249ImFmdGVyIix0aGlzLl9zb3J0QWN0aW9uRGVzY3JpcHRpb249IlNvcnQiLCFvJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgSER0KCk7dGhpcy5faGFuZGxlU3RhdGVDaGFuZ2VzKCl9Z2V0IHNvcnRBY3Rpb25EZXNjcmlwdGlvbigpe3JldHVybiB0aGlzLl9zb3J0QWN0aW9uRGVzY3JpcHRpb259c2V0IHNvcnRBY3Rpb25EZXNjcmlwdGlvbih0KXt0aGlzLl91cGRhdGVTb3J0QWN0aW9uRGVzY3JpcHRpb24odCl9Z2V0IGRpc2FibGVDbGVhcigpe3JldHVybiB0aGlzLl9kaXNhYmxlQ2xlYXJ9c2V0IGRpc2FibGVDbGVhcih0KXt0aGlzLl9kaXNhYmxlQ2xlYXI9WmUodCl9bmdPbkluaXQoKXshdGhpcy5pZCYmdGhpcy5fY29sdW1uRGVmJiYodGhpcy5pZD10aGlzLl9jb2x1bW5EZWYubmFtZSksdGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe3RvU3RhdGU6dGhpcy5faXNTb3J0ZWQoKT8iYWN0aXZlIjp0aGlzLl9hcnJvd0RpcmVjdGlvbn0pLHRoaXMuX3NvcnQucmVnaXN0ZXIodGhpcyksdGhpcy5fc29ydEJ1dHRvbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW3JvbGU9ImJ1dHRvbiJdJyksdGhpcy5fdXBkYXRlU29ydEFjdGlvbkRlc2NyaXB0aW9uKHRoaXMuX3NvcnRBY3Rpb25EZXNjcmlwdGlvbil9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKHQ9PntsZXQgZT0hIXQ7ZSE9PXRoaXMuX3Nob3dJbmRpY2F0b3JIaW50JiYodGhpcy5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdGhpcy5fc29ydC5kZXJlZ2lzdGVyKHRoaXMpLHRoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9X3NldEluZGljYXRvckhpbnRWaXNpYmxlKHQpe3RoaXMuX2lzRGlzYWJsZWQoKSYmdHx8KHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50PXQsdGhpcy5faXNTb3J0ZWQoKXx8KHRoaXMuX3VwZGF0ZUFycm93RGlyZWN0aW9uKCksdGhpcy5fc2hvd0luZGljYXRvckhpbnQ/dGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHtmcm9tU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb24sdG9TdGF0ZToiaGludCJ9KTp0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZToiaGludCIsdG9TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbn0pKSl9X3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh0KXt0aGlzLl92aWV3U3RhdGU9dHx8e30sdGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiYmKHRoaXMuX3ZpZXdTdGF0ZT17dG9TdGF0ZTp0LnRvU3RhdGV9KX1fdG9nZ2xlT25JbnRlcmFjdGlvbigpe3RoaXMuX3NvcnQuc29ydCh0aGlzKSwodGhpcy5fdmlld1N0YXRlLnRvU3RhdGU9PT0iaGludCJ8fHRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlPT09ImFjdGl2ZSIpJiYodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMCl9X2hhbmRsZUNsaWNrKCl7dGhpcy5faXNEaXNhYmxlZCgpfHx0aGlzLl9zb3J0LnNvcnQodGhpcyl9X2hhbmRsZUtleWRvd24odCl7IXRoaXMuX2lzRGlzYWJsZWQoKSYmKHQua2V5Q29kZT09PTMyfHx0LmtleUNvZGU9PT0xMykmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlT25JbnRlcmFjdGlvbigpKX1faXNTb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc29ydC5hY3RpdmU9PXRoaXMuaWQmJih0aGlzLl9zb3J0LmRpcmVjdGlvbj09PSJhc2MifHx0aGlzLl9zb3J0LmRpcmVjdGlvbj09PSJkZXNjIil9X2dldEFycm93RGlyZWN0aW9uU3RhdGUoKXtyZXR1cm5gJHt0aGlzLl9pc1NvcnRlZCgpPyJhY3RpdmUtIjoiIn0ke3RoaXMuX2Fycm93RGlyZWN0aW9ufWB9X2dldEFycm93Vmlld1N0YXRlKCl7bGV0IHQ9dGhpcy5fdmlld1N0YXRlLmZyb21TdGF0ZTtyZXR1cm4odD9gJHt0fS10by1gOiIiKSt0aGlzLl92aWV3U3RhdGUudG9TdGF0ZX1fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKXt0aGlzLl9hcnJvd0RpcmVjdGlvbj10aGlzLl9pc1NvcnRlZCgpP3RoaXMuX3NvcnQuZGlyZWN0aW9uOnRoaXMuc3RhcnR8fHRoaXMuX3NvcnQuc3RhcnR9X2lzRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fc29ydC5kaXNhYmxlZHx8dGhpcy5kaXNhYmxlZH1fZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKXtyZXR1cm4gdGhpcy5faXNTb3J0ZWQoKT90aGlzLl9zb3J0LmRpcmVjdGlvbj09ImFzYyI/ImFzY2VuZGluZyI6ImRlc2NlbmRpbmciOiJub25lIn1fcmVuZGVyQXJyb3coKXtyZXR1cm4hdGhpcy5faXNEaXNhYmxlZCgpfHx0aGlzLl9pc1NvcnRlZCgpfV91cGRhdGVTb3J0QWN0aW9uRGVzY3JpcHRpb24odCl7dmFyIGUsbzt0aGlzLl9zb3J0QnV0dG9uJiYoKGU9dGhpcy5fYXJpYURlc2NyaWJlcik9PT1udWxsfHxlPT09dm9pZCAwfHxlLnJlbW92ZURlc2NyaXB0aW9uKHRoaXMuX3NvcnRCdXR0b24sdGhpcy5fc29ydEFjdGlvbkRlc2NyaXB0aW9uKSwobz10aGlzLl9hcmlhRGVzY3JpYmVyKT09PW51bGx8fG89PT12b2lkIDB8fG8uZGVzY3JpYmUodGhpcy5fc29ydEJ1dHRvbix0KSksdGhpcy5fc29ydEFjdGlvbkRlc2NyaXB0aW9uPXR9X2hhbmRsZVN0YXRlQ2hhbmdlcygpe3RoaXMuX3JlcmVuZGVyU3Vic2NyaXB0aW9uPXluKHRoaXMuX3NvcnQuc29ydENoYW5nZSx0aGlzLl9zb3J0Ll9zdGF0ZUNoYW5nZXMsdGhpcy5faW50bC5jaGFuZ2VzKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9pc1NvcnRlZCgpJiYodGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSwodGhpcy5fdmlld1N0YXRlLnRvU3RhdGU9PT0iaGludCJ8fHRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlPT09ImFjdGl2ZSIpJiYodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMCksdGhpcy5fc2V0QW5pbWF0aW9uVHJhbnNpdGlvblN0YXRlKHtmcm9tU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb24sdG9TdGF0ZToiYWN0aXZlIn0pLHRoaXMuX3Nob3dJbmRpY2F0b3JIaW50PSExKSwhdGhpcy5faXNTb3J0ZWQoKSYmdGhpcy5fdmlld1N0YXRlJiZ0aGlzLl92aWV3U3RhdGUudG9TdGF0ZT09PSJhY3RpdmUiJiYodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUoe2Zyb21TdGF0ZToiYWN0aXZlIix0b1N0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9ufSkpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSl9fTtiZi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxiZikodihkZCksdihUdCksdih1cyw4KSx2KCJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsOCksdihsbiksdihMKSx2KGZyLDgpKX07YmYuXHUwMjc1Y21wPXooe3R5cGU6YmYsc2VsZWN0b3JzOltbIiIsIm1hdC1zb3J0LWhlYWRlciIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1zb3J0LWhlYWRlciJdLGhvc3RWYXJzOjMsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2soKX0pKCJrZXlkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihpKX0pKCJtb3VzZWVudGVyIixmdW5jdGlvbigpe3JldHVybiBlLl9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSghMCl9KSgibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoITEpfSksdCYyJiYocmUoImFyaWEtc29ydCIsZS5fZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKSksbWUoIm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZCIsZS5faXNEaXNhYmxlZCgpKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixhcnJvd1Bvc2l0aW9uOiJhcnJvd1Bvc2l0aW9uIixzb3J0QWN0aW9uRGVzY3JpcHRpb246InNvcnRBY3Rpb25EZXNjcmlwdGlvbiIsZGlzYWJsZUNsZWFyOiJkaXNhYmxlQ2xlYXIiLGlkOlsibWF0LXNvcnQtaGVhZGVyIiwiaWQiXSxzdGFydDoic3RhcnQifSxleHBvcnRBczpbIm1hdFNvcnRIZWFkZXIiXSxmZWF0dXJlczpbYWVdLGF0dHJzOkFEdCxuZ0NvbnRlbnRTZWxlY3RvcnM6SUR0LGRlY2xzOjQsdmFyczo2LGNvbnN0czpbWyJyb2xlIiwiYnV0dG9uIiwxLCJtYXQtc29ydC1oZWFkZXItY29udGFpbmVyIiwibWF0LWZvY3VzLWluZGljYXRvciJdLFsxLCJtYXQtc29ydC1oZWFkZXItY29udGVudCJdLFsiY2xhc3MiLCJtYXQtc29ydC1oZWFkZXItYXJyb3ciLDQsIm5nSWYiXSxbMSwibWF0LXNvcnQtaGVhZGVyLWFycm93Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1zdGVtIl0sWzEsIm1hdC1zb3J0LWhlYWRlci1pbmRpY2F0b3IiXSxbMSwibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCJdLFsxLCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodCJdLFsxLCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih5bygpLHUoMCwiZGl2IiwwKSx1KDEsImRpdiIsMSksWW4oMiksaCgpLGsoMyxERHQsNiw2LCJkaXYiLDIpLGgoKSksdCYyJiYobWUoIm1hdC1zb3J0LWhlYWRlci1zb3J0ZWQiLGUuX2lzU29ydGVkKCkpKCJtYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIixlLmFycm93UG9zaXRpb249PSJiZWZvcmUiKSxyZSgidGFiaW5kZXgiLGUuX2lzRGlzYWJsZWQoKT9udWxsOjApLHgoMyksUCgibmdJZiIsZS5fcmVuZGVyQXJyb3coKSkpfSxkaXJlY3RpdmVzOltYdF0sc3R5bGVzOltgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4O2N1cnNvcjpwb2ludGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtsZXR0ZXItc3BhY2luZzpub3JtYWw7b3V0bGluZTowfVttYXQtc29ydC1oZWFkZXJdLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVyLFttYXQtc29ydC1oZWFkZXJdLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7Ym9yZGVyLWJvdHRvbTpzb2xpZCAxcHggY3VycmVudENvbG9yfS5tYXQtc29ydC1oZWFkZXItZGlzYWJsZWQgLm1hdC1zb3J0LWhlYWRlci1jb250YWluZXJ7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zb3J0LWhlYWRlci1jb250ZW50e3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9Lm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmV7ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd3toZWlnaHQ6MTJweDt3aWR0aDoxMnB4O21pbi13aWR0aDoxMnB4O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6ZmxleDtvcGFjaXR5OjB9Lm1hdC1zb3J0LWhlYWRlci1hcnJvdyxbZGlyPXJ0bF0gLm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUgLm1hdC1zb3J0LWhlYWRlci1hcnJvd3ttYXJnaW46MCAwIDAgNnB4fS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgNnB4IDAgMH0ubWF0LXNvcnQtaGVhZGVyLXN0ZW17YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7aGVpZ2h0OjEwcHg7d2lkdGg6MnB4O21hcmdpbjphdXRvO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXN0ZW17d2lkdGg6MDtib3JkZXItbGVmdDpzb2xpZCAycHh9Lm1hdC1zb3J0LWhlYWRlci1pbmRpY2F0b3J7d2lkdGg6MTAwJTtoZWlnaHQ6MnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowfS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1taWRkbGV7bWFyZ2luOmF1dG87aGVpZ2h0OjJweDt3aWR0aDoycHg7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAycHg7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0LC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHtiYWNrZ3JvdW5kOmN1cnJlbnRDb2xvcjt3aWR0aDo2cHg7aGVpZ2h0OjJweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0LC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6c29saWQgNnB4O2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0e3RyYW5zZm9ybS1vcmlnaW46cmlnaHQ7bGVmdDowfS5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQ7cmlnaHQ6MH0KYF0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbeDAuaW5kaWNhdG9yLHgwLmxlZnRQb2ludGVyLHgwLnJpZ2h0UG9pbnRlcix4MC5hcnJvd09wYWNpdHkseDAuYXJyb3dQb3NpdGlvbix4MC5hbGxvd0NoaWxkcmVuXX0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtiZi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmRkfSx7dHlwZTpUdH0se3R5cGU6dXMsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOlsiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiXX0se3R5cGU6SH1dfSx7dHlwZTpsbn0se3R5cGU6TH0se3R5cGU6ZnIsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltmcl19LHt0eXBlOkh9XX1dO2JmLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6ZCxhcmdzOlsibWF0LXNvcnQtaGVhZGVyIl19XSxhcnJvd1Bvc2l0aW9uOlt7dHlwZTpkfV0sc3RhcnQ6W3t0eXBlOmR9XSxzb3J0QWN0aW9uRGVzY3JpcHRpb246W3t0eXBlOmR9XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGJmLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiW21hdC1zb3J0LWhlYWRlcl0iLGV4cG9ydEFzOiJtYXRTb3J0SGVhZGVyIix0ZW1wbGF0ZTpgPCEtLQogIFdlIHNldCB0aGUgXGB0YWJpbmRleFxgIG9uIGFuIGVsZW1lbnQgaW5zaWRlIHRoZSB0YWJsZSBoZWFkZXIsIHJhdGhlciB0aGFuIHRoZSBoZWFkZXIgaXRzZWxmLAogIGJlY2F1c2Ugb2YgYSBidWcgaW4gTlZEQSB3aGVyZSBoYXZpbmcgYSBcYHRhYmluZGV4XGAgb24gYSBcYHRoXGAgYnJlYWtzIGtleWJvYXJkIG5hdmlnYXRpb24gaW4gdGhlCiAgdGFibGUgKHNlZSBodHRwczovL2dpdGh1Yi5jb20vbnZhY2Nlc3MvbnZkYS9pc3N1ZXMvNzcxOCkuIFRoaXMgYWxsb3dzIGZvciB0aGUgaGVhZGVyIHRvIGJvdGgKICBiZSBmb2N1c2FibGUsIGFuZCBoYXZlIHNjcmVlbiByZWFkZXJzIHJlYWQgb3V0IGl0cyBcYGFyaWEtc29ydFxgIHN0YXRlLiBXZSBwcmVmZXIgdGhpcyBhcHByb2FjaAogIG92ZXIgaGF2aW5nIGEgYnV0dG9uIHdpdGggYW4gXGBhcmlhLWxhYmVsXGAgaW5zaWRlIHRoZSBoZWFkZXIsIGJlY2F1c2UgdGhlIGJ1dHRvbidzIFxgYXJpYS1sYWJlbFxgCiAgd2lsbCBiZSByZWFkIG91dCBhcyB0aGUgdXNlciBpcyBuYXZpZ2F0aW5nIHRoZSB0YWJsZSdzIGNlbGwgKHNlZSAjMTMwMTIpLgoKICBUaGUgYXBwcm9hY2ggaXMgYmFzZWQgb2ZmIG9mOiBodHRwczovL2RlcXVldW5pdmVyc2l0eS5jb20vbGlicmFyeS9hcmlhL3RhYmxlcy9zZi1zb3J0YWJsZS1ncmlkCi0tPgo8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItY29udGFpbmVyIG1hdC1mb2N1cy1pbmRpY2F0b3IiCiAgICAgW2NsYXNzLm1hdC1zb3J0LWhlYWRlci1zb3J0ZWRdPSJfaXNTb3J0ZWQoKSIKICAgICBbY2xhc3MubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZV09ImFycm93UG9zaXRpb24gPT0gJ2JlZm9yZSciCiAgICAgW2F0dHIudGFiaW5kZXhdPSJfaXNEaXNhYmxlZCgpID8gbnVsbCA6IDAiCiAgICAgcm9sZT0iYnV0dG9uIj4KCiAgPCEtLQogICAgVE9ETyhjcmlzYmV0byk6IHRoaXMgZGl2IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IHdlIGhhdmUgdG8ga2VlcCBpdCBkdWUgdG8gYSBsYXJnZQogICAgbnVtYmVyIG9mIHNjcmVlbnNob3QgZGlmZiBmYWlsdXJlcy4gSXQgc2hvdWxkIGJlIHJlbW92ZWQgZXZlbnR1YWxseS4gTm90ZSB0aGF0IHRoZSBkaWZmZXJlbmNlCiAgICBpc24ndCB2aXNpYmxlIHdpdGggYSBzaG9ydGVyIGhlYWRlciwgYnV0IG9uY2UgaXQgYnJlYWtzIHVwIGludG8gbXVsdGlwbGUgbGluZXMsIHRoaXMgZWxlbWVudAogICAgY2F1c2VzIGl0IHRvIGJlIGNlbnRlci1hbGlnbmVkLCB3aGVyZWFzIHJlbW92aW5nIGl0IHdpbGwga2VlcCB0aGUgdGV4dCB0byB0aGUgbGVmdC4KICAtLT4KICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItY29udGVudCI+CiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+CiAgPC9kaXY+CgogIDwhLS0gRGlzYWJsZSBhbmltYXRpb25zIHdoaWxlIGEgY3VycmVudCBhbmltYXRpb24gaXMgcnVubmluZyAtLT4KICA8ZGl2IGNsYXNzPSJtYXQtc29ydC1oZWFkZXItYXJyb3ciCiAgICAgICAqbmdJZj0iX3JlbmRlckFycm93KCkiCiAgICAgICBbQGFycm93T3BhY2l0eV09Il9nZXRBcnJvd1ZpZXdTdGF0ZSgpIgogICAgICAgW0BhcnJvd1Bvc2l0aW9uXT0iX2dldEFycm93Vmlld1N0YXRlKCkiCiAgICAgICBbQGFsbG93Q2hpbGRyZW5dPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIgogICAgICAgKEBhcnJvd1Bvc2l0aW9uLnN0YXJ0KT0iX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb24gPSB0cnVlIgogICAgICAgKEBhcnJvd1Bvc2l0aW9uLmRvbmUpPSJfZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbiA9IGZhbHNlIj4KICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1zdGVtIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1pbmRpY2F0b3IiIFtAaW5kaWNhdG9yXT0iX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSI+CiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1wb2ludGVyLWxlZnQiIFtAbGVmdFBvaW50ZXJdPSJfZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHQiIFtAcmlnaHRQb2ludGVyXT0iX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZSI+PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CmAsaG9zdDp7Y2xhc3M6Im1hdC1zb3J0LWhlYWRlciIsIihjbGljaykiOiJfaGFuZGxlQ2xpY2soKSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkiLCIobW91c2VlbnRlcikiOiJfc2V0SW5kaWNhdG9ySGludFZpc2libGUodHJ1ZSkiLCIobW91c2VsZWF2ZSkiOiJfc2V0SW5kaWNhdG9ySGludFZpc2libGUoZmFsc2UpIiwiW2F0dHIuYXJpYS1zb3J0XSI6Il9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpIiwiW2NsYXNzLm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZF0iOiJfaXNEaXNhYmxlZCgpIn0sZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gsaW5wdXRzOlsiZGlzYWJsZWQiXSxhbmltYXRpb25zOlt4MC5pbmRpY2F0b3IseDAubGVmdFBvaW50ZXIseDAucmlnaHRQb2ludGVyLHgwLmFycm93T3BhY2l0eSx4MC5hcnJvd1Bvc2l0aW9uLHgwLmFsbG93Q2hpbGRyZW5dLHN0eWxlczpbYC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO291dGxpbmU6MH1bbWF0LXNvcnQtaGVhZGVyXS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcixbbWF0LXNvcnQtaGVhZGVyXS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2JvcmRlci1ib3R0b206c29saWQgMXB4IGN1cnJlbnRDb2xvcn0ubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc29ydC1oZWFkZXItY29udGVudHt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3Jle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5tYXQtc29ydC1oZWFkZXItYXJyb3d7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDttaW4td2lkdGg6MTJweDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7b3BhY2l0eTowfS5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgMCAwIDZweH0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDZweCAwIDB9Lm1hdC1zb3J0LWhlYWRlci1zdGVte2JhY2tncm91bmQ6Y3VycmVudENvbG9yO2hlaWdodDoxMHB4O3dpZHRoOjJweDttYXJnaW46YXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1zdGVte3dpZHRoOjA7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItaW5kaWNhdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle21hcmdpbjphdXRvO2hlaWdodDoycHg7d2lkdGg6MnB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXt3aWR0aDowO2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7d2lkdGg6NnB4O2hlaWdodDoycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OnNvbGlkIDZweDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0O2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0O3JpZ2h0OjB9CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpkZH0se3R5cGU6VHR9LHt0eXBlOnVzLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbIk1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIl19LHt0eXBlOkh9XX0se3R5cGU6bG59LHt0eXBlOkx9LHt0eXBlOmZyLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbZnJdfSx7dHlwZTpIfV19XX0se2Fycm93UG9zaXRpb246W3t0eXBlOmR9XSxzb3J0QWN0aW9uRGVzY3JpcHRpb246W3t0eXBlOmR9XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOmR9XSxpZDpbe3R5cGU6ZCxhcmdzOlsibWF0LXNvcnQtaGVhZGVyIl19XSxzdGFydDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBGdT1jbGFzc3t9O0Z1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEZ1KX07RnUuXHUwMjc1bW9kPXEoe3R5cGU6RnV9KTtGdS5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltIbHRdLGltcG9ydHM6W1tZLER0XV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRnUsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1ksRHRdLGV4cG9ydHM6W3VzLGJmXSxkZWNsYXJhdGlvbnM6W3VzLGJmXSxwcm92aWRlcnM6W0hsdF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoRnUse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVyblt1cyxiZl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWSxEdF19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdXMsYmZdfX0pfSkoKTt2YXIgR0R0PVtbWyJjYXB0aW9uIl1dLFtbImNvbGdyb3VwIl0sWyJjb2wiXV1dLFdEdD1bImNhcHRpb24iLCJjb2xncm91cCwgY29sIl07ZnVuY3Rpb24gcUR0KG4sdCl7aWYobiYxJiYodSgwLCJ0aCIsMyksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygpO3FlKCJ0ZXh0LWFsaWduIixlLmp1c3RpZnkpLHgoMSksbGUoIiAiLGUuaGVhZGVyVGV4dCwiICIpfX1mdW5jdGlvbiBaRHQobix0KXtpZihuJjEmJih1KDAsInRkIiw0KSxUKDEpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoKTtxZSgidGV4dC1hbGlnbiIsby5qdXN0aWZ5KSx4KDEpLGxlKCIgIixvLmRhdGFBY2Nlc3NvcihlLG8ubmFtZSksIiAiKX19ZnVuY3Rpb24gS1kobil7cmV0dXJuIGNsYXNzIGV4dGVuZHMgbntjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9zdGlja3k9ITEsdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD0hMX1nZXQgc3RpY2t5KCl7cmV0dXJuIHRoaXMuX3N0aWNreX1zZXQgc3RpY2t5KHQpe2xldCBlPXRoaXMuX3N0aWNreTt0aGlzLl9zdGlja3k9WmUodCksdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD1lIT09dGhpcy5fc3RpY2t5fWhhc1N0aWNreUNoYW5nZWQoKXtsZXQgdD10aGlzLl9oYXNTdGlja3lDaGFuZ2VkO3JldHVybiB0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPSExLHR9cmVzZXRTdGlja3lDaGFuZ2VkKCl7dGhpcy5faGFzU3RpY2t5Q2hhbmdlZD0hMX19fXZhciBPYz1uZXcgeXQoIkNES19UQUJMRSIpLEpZPW5ldyB5dCgidGV4dC1jb2x1bW4tb3B0aW9ucyIpO3ZhciBHcj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlPXR9fTtHci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxHcikodihrZSkpfTtHci5cdTAyNzVkaXI9dnQoe3R5cGU6R3Isc2VsZWN0b3JzOltbIiIsImNka0NlbGxEZWYiLCIiXV19KTtHci5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmtlfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEdyLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltjZGtDZWxsRGVmXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmtlfV19LG51bGwpfSkoKTt2YXIgV3I9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZT10fX07V3IuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8V3IpKHYoa2UpKX07V3IuXHUwMjc1ZGlyPXZ0KHt0eXBlOldyLHNlbGVjdG9yczpbWyIiLCJjZGtIZWFkZXJDZWxsRGVmIiwiIl1dfSk7V3IuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprZX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhXcixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY2RrSGVhZGVyQ2VsbERlZl0ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTprZX1dfSxudWxsKX0pKCk7dmFyIHhsPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19O3hsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHhsKSh2KGtlKSl9O3hsLlx1MDI3NWRpcj12dCh7dHlwZTp4bCxzZWxlY3RvcnM6W1siIiwiY2RrRm9vdGVyQ2VsbERlZiIsIiJdXX0pO3hsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a2V9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeGwsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0Zvb3RlckNlbGxEZWZdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a2V9XX0sbnVsbCl9KSgpO3ZhciBxWT1jbGFzc3t9LFhEdD1LWShxWSksUGk9Y2xhc3MgZXh0ZW5kcyBYRHR7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl90YWJsZT10LHRoaXMuX3N0aWNreUVuZD0hMX1nZXQgbmFtZSgpe3JldHVybiB0aGlzLl9uYW1lfXNldCBuYW1lKHQpe3RoaXMuX3NldE5hbWVJbnB1dCh0KX1nZXQgc3RpY2t5RW5kKCl7cmV0dXJuIHRoaXMuX3N0aWNreUVuZH1zZXQgc3RpY2t5RW5kKHQpe2xldCBlPXRoaXMuX3N0aWNreUVuZDt0aGlzLl9zdGlja3lFbmQ9WmUodCksdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD1lIT09dGhpcy5fc3RpY2t5RW5kfV91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKXt0aGlzLl9jb2x1bW5Dc3NDbGFzc05hbWU9W2BjZGstY29sdW1uLSR7dGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gXX1fc2V0TmFtZUlucHV0KHQpe3QmJih0aGlzLl9uYW1lPXQsdGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZT10LnJlcGxhY2UoL1teYS16MC05Xy1dL2lnLCItIiksdGhpcy5fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCkpfX07UGkuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UGkpKHYoT2MsOCkpfTtQaS5cdTAyNzVkaXI9dnQoe3R5cGU6UGksc2VsZWN0b3JzOltbIiIsImNka0NvbHVtbkRlZiIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbih0LGUsbyl7aWYodCYxJiYoZ28obyxHciw1KSxnbyhvLFdyLDUpLGdvKG8seGwsNSkpLHQmMil7bGV0IGk7SHQoaT1GdCgpKSYmKGUuY2VsbD1pLmZpcnN0KSxIdChpPUZ0KCkpJiYoZS5oZWFkZXJDZWxsPWkuZmlyc3QpLEh0KGk9RnQoKSkmJihlLmZvb3RlckNlbGw9aS5maXJzdCl9fSxpbnB1dHM6e3N0aWNreToic3RpY2t5IixuYW1lOlsiY2RrQ29sdW1uRGVmIiwibmFtZSJdLHN0aWNreUVuZDoic3RpY2t5RW5kIn0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOlBpfV0pLGFlXX0pO1BpLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbT2NdfSx7dHlwZTpIfV19XTtQaS5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6ZCxhcmdzOlsiY2RrQ29sdW1uRGVmIl19XSxzdGlja3lFbmQ6W3t0eXBlOmQsYXJnczpbInN0aWNreUVuZCJdfV0sY2VsbDpbe3R5cGU6S28sYXJnczpbR3JdfV0saGVhZGVyQ2VsbDpbe3R5cGU6S28sYXJnczpbV3JdfV0sZm9vdGVyQ2VsbDpbe3R5cGU6S28sYXJnczpbeGxdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhQaSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY2RrQ29sdW1uRGVmXSIsaW5wdXRzOlsic3RpY2t5Il0scHJvdmlkZXJzOlt7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOlBpfV19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W09jXX0se3R5cGU6SH1dfV19LHtuYW1lOlt7dHlwZTpkLGFyZ3M6WyJjZGtDb2x1bW5EZWYiXX1dLHN0aWNreUVuZDpbe3R5cGU6ZCxhcmdzOlsic3RpY2t5RW5kIl19XSxjZWxsOlt7dHlwZTpLbyxhcmdzOltHcl19XSxoZWFkZXJDZWxsOlt7dHlwZTpLbyxhcmdzOltXcl19XSxmb290ZXJDZWxsOlt7dHlwZTpLbyxhcmdzOlt4bF19XX0pfSkoKTt2YXIgR2s9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXtsZXQgbz1lLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O2ZvcihsZXQgaSBvZiB0Ll9jb2x1bW5Dc3NDbGFzc05hbWUpby5hZGQoaSl9fSxnZD1jbGFzcyBleHRlbmRzIEdre2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKX19O2dkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGdkKSh2KFBpKSx2KEwpKX07Z2QuXHUwMjc1ZGlyPXZ0KHt0eXBlOmdkLHNlbGVjdG9yczpbWyJjZGstaGVhZGVyLWNlbGwiXSxbInRoIiwiY2RrLWhlYWRlci1jZWxsIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImNkay1oZWFkZXItY2VsbCJdLGZlYXR1cmVzOlthZV19KTtnZC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlBpfSx7dHlwZTpMfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGdkLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImNkay1oZWFkZXItY2VsbCwgdGhbY2RrLWhlYWRlci1jZWxsXSIsaG9zdDp7Y2xhc3M6ImNkay1oZWFkZXItY2VsbCIscm9sZToiY29sdW1uaGVhZGVyIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlBpfSx7dHlwZTpMfV19LG51bGwpfSkoKTt2YXIgTHU9Y2xhc3MgZXh0ZW5kcyBHa3tjb25zdHJ1Y3Rvcih0LGUpe3ZhciBvO2lmKHN1cGVyKHQsZSksKChvPXQuX3RhYmxlKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8uX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlVHlwZSk9PT0xKXtsZXQgaT10Ll90YWJsZS5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgicm9sZSIpLGE9aT09PSJncmlkInx8aT09PSJ0cmVlZ3JpZCI/ImdyaWRjZWxsIjoiY2VsbCI7ZS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsYSl9fX07THUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8THUpKHYoUGkpLHYoTCkpfTtMdS5cdTAyNzVkaXI9dnQoe3R5cGU6THUsc2VsZWN0b3JzOltbImNkay1mb290ZXItY2VsbCJdLFsidGQiLCJjZGstZm9vdGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsxLCJjZGstZm9vdGVyLWNlbGwiXSxmZWF0dXJlczpbYWVdfSk7THUuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpQaX0se3R5cGU6TH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhMdSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJjZGstZm9vdGVyLWNlbGwsIHRkW2Nkay1mb290ZXItY2VsbF0iLGhvc3Q6e2NsYXNzOiJjZGstZm9vdGVyLWNlbGwifX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6UGl9LHt0eXBlOkx9XX0sbnVsbCl9KSgpO3ZhciB1ZD1jbGFzcyBleHRlbmRzIEdre2NvbnN0cnVjdG9yKHQsZSl7dmFyIG87aWYoc3VwZXIodCxlKSwoKG89dC5fdGFibGUpPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm5vZGVUeXBlKT09PTEpe2xldCBpPXQuX3RhYmxlLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJyb2xlIiksYT1pPT09ImdyaWQifHxpPT09InRyZWVncmlkIj8iZ3JpZGNlbGwiOiJjZWxsIjtlLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIixhKX19fTt1ZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx1ZCkodihQaSksdihMKSl9O3VkLlx1MDI3NWRpcj12dCh7dHlwZTp1ZCxzZWxlY3RvcnM6W1siY2RrLWNlbGwiXSxbInRkIiwiY2RrLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsxLCJjZGstY2VsbCJdLGZlYXR1cmVzOlthZV19KTt1ZC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlBpfSx7dHlwZTpMfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHVkLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImNkay1jZWxsLCB0ZFtjZGstY2VsbF0iLGhvc3Q6e2NsYXNzOiJjZGstY2VsbCJ9fV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpQaX0se3R5cGU6TH1dfSxudWxsKX0pKCk7dmFyICR6PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy50YXNrcz1bXSx0aGlzLmVuZFRhc2tzPVtdfX0sZ3g9bmV3IHl0KCJfQ09BTEVTQ0VEX1NUWUxFX1NDSEVEVUxFUiIpLF9tPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX25nWm9uZT10LHRoaXMuX2N1cnJlbnRTY2hlZHVsZT1udWxsLHRoaXMuX2Rlc3Ryb3llZD1uZXcgSnR9c2NoZWR1bGUodCl7dGhpcy5fY3JlYXRlU2NoZWR1bGVJZk5lZWRlZCgpLHRoaXMuX2N1cnJlbnRTY2hlZHVsZS50YXNrcy5wdXNoKHQpfXNjaGVkdWxlRW5kKHQpe3RoaXMuX2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKSx0aGlzLl9jdXJyZW50U2NoZWR1bGUuZW5kVGFza3MucHVzaCh0KX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCl9X2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKXt0aGlzLl9jdXJyZW50U2NoZWR1bGV8fCh0aGlzLl9jdXJyZW50U2NoZWR1bGU9bmV3ICR6LHRoaXMuX2dldFNjaGVkdWxlT2JzZXJ2YWJsZSgpLnBpcGUoUGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgpPT57Zm9yKDt0aGlzLl9jdXJyZW50U2NoZWR1bGUudGFza3MubGVuZ3RofHx0aGlzLl9jdXJyZW50U2NoZWR1bGUuZW5kVGFza3MubGVuZ3RoOyl7bGV0IHQ9dGhpcy5fY3VycmVudFNjaGVkdWxlO3RoaXMuX2N1cnJlbnRTY2hlZHVsZT1uZXcgJHo7Zm9yKGxldCBlIG9mIHQudGFza3MpZSgpO2ZvcihsZXQgZSBvZiB0LmVuZFRhc2tzKWUoKX10aGlzLl9jdXJyZW50U2NoZWR1bGU9bnVsbH0pKX1fZ2V0U2NoZWR1bGVPYnNlcnZhYmxlKCl7cmV0dXJuIHRoaXMuX25nWm9uZS5pc1N0YWJsZT9EYShQcm9taXNlLnJlc29sdmUodm9pZCAwKSk6dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoQ24oMSkpfX07X20uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8X20pKEkoQ3QpKX07X20uXHUwMjc1cHJvdj1QdCh7dG9rZW46X20sZmFjdG9yeTpfbS5cdTAyNzVmYWN9KTtfbS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkN0fV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9tLFt7dHlwZTpTdH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkN0fV19LG51bGwpfSkoKTt2YXIgaTE9IjxuZy1jb250YWluZXIgY2RrQ2VsbE91dGxldD48L25nLWNvbnRhaW5lcj4iLHFNPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy50ZW1wbGF0ZT10LHRoaXMuX2RpZmZlcnM9ZX1uZ09uQ2hhbmdlcyh0KXtpZighdGhpcy5fY29sdW1uc0RpZmZlcil7bGV0IGU9dC5jb2x1bW5zJiZ0LmNvbHVtbnMuY3VycmVudFZhbHVlfHxbXTt0aGlzLl9jb2x1bW5zRGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZChlKS5jcmVhdGUoKSx0aGlzLl9jb2x1bW5zRGlmZmVyLmRpZmYoZSl9fWdldENvbHVtbnNEaWZmKCl7cmV0dXJuIHRoaXMuX2NvbHVtbnNEaWZmZXIuZGlmZih0aGlzLmNvbHVtbnMpfWV4dHJhY3RDZWxsVGVtcGxhdGUodCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBvbD90LmhlYWRlckNlbGwudGVtcGxhdGU6dGhpcyBpbnN0YW5jZW9mIGlsP3QuZm9vdGVyQ2VsbC50ZW1wbGF0ZTp0LmNlbGwudGVtcGxhdGV9fTtxTS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxxTSkodihrZSksdihrbykpfTtxTS5cdTAyNzVkaXI9dnQoe3R5cGU6cU0sZmVhdHVyZXM6W1dlXX0pO3FNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a2V9LHt0eXBlOmtvfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHFNLFt7dHlwZTp3dH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmtlfSx7dHlwZTprb31dfSxudWxsKX0pKCk7dmFyIFpZPWNsYXNzIGV4dGVuZHMgcU17fSxRRHQ9S1koWlkpLG9sPWNsYXNzIGV4dGVuZHMgUUR0e2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LGUpLHRoaXMuX3RhYmxlPW99bmdPbkNoYW5nZXModCl7c3VwZXIubmdPbkNoYW5nZXModCl9fTtvbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxvbCkodihrZSksdihrbyksdihPYyw4KSl9O29sLlx1MDI3NWRpcj12dCh7dHlwZTpvbCxzZWxlY3RvcnM6W1siIiwiY2RrSGVhZGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbImNka0hlYWRlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJjZGtIZWFkZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W2FlLFdlXX0pO29sLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a2V9LHt0eXBlOmtvfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltPY119LHt0eXBlOkh9XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhvbCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY2RrSGVhZGVyUm93RGVmXSIsaW5wdXRzOlsiY29sdW1uczogY2RrSGVhZGVyUm93RGVmIiwic3RpY2t5OiBjZGtIZWFkZXJSb3dEZWZTdGlja3kiXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a2V9LHt0eXBlOmtvfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltPY119LHt0eXBlOkh9XX1dfSxudWxsKX0pKCk7dmFyIFhZPWNsYXNzIGV4dGVuZHMgcU17fSxLRHQ9S1koWFkpLGlsPWNsYXNzIGV4dGVuZHMgS0R0e2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LGUpLHRoaXMuX3RhYmxlPW99bmdPbkNoYW5nZXModCl7c3VwZXIubmdPbkNoYW5nZXModCl9fTtpbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxpbCkodihrZSksdihrbyksdihPYyw4KSl9O2lsLlx1MDI3NWRpcj12dCh7dHlwZTppbCxzZWxlY3RvcnM6W1siIiwiY2RrRm9vdGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbImNka0Zvb3RlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJjZGtGb290ZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W2FlLFdlXX0pO2lsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a2V9LHt0eXBlOmtvfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltPY119LHt0eXBlOkh9XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhpbCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY2RrRm9vdGVyUm93RGVmXSIsaW5wdXRzOlsiY29sdW1uczogY2RrRm9vdGVyUm93RGVmIiwic3RpY2t5OiBjZGtGb290ZXJSb3dEZWZTdGlja3kiXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a2V9LHt0eXBlOmtvfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltPY119LHt0eXBlOkh9XX1dfSxudWxsKX0pKCk7dmFyIHZsPWNsYXNzIGV4dGVuZHMgcU17Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKHQsZSksdGhpcy5fdGFibGU9b319O3ZsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHZsKSh2KGtlKSx2KGtvKSx2KE9jLDgpKX07dmwuXHUwMjc1ZGlyPXZ0KHt0eXBlOnZsLHNlbGVjdG9yczpbWyIiLCJjZGtSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsiY2RrUm93RGVmQ29sdW1ucyIsImNvbHVtbnMiXSx3aGVuOlsiY2RrUm93RGVmV2hlbiIsIndoZW4iXX0sZmVhdHVyZXM6W2FlXX0pO3ZsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a2V9LHt0eXBlOmtvfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltPY119LHt0eXBlOkh9XX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh2bCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY2RrUm93RGVmXSIsaW5wdXRzOlsiY29sdW1uczogY2RrUm93RGVmQ29sdW1ucyIsIndoZW46IGNka1Jvd0RlZldoZW4iXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a2V9LHt0eXBlOmtvfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltPY119LHt0eXBlOkh9XX1dfSxudWxsKX0pKCk7dmFyIHJyPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3ZpZXdDb250YWluZXI9dCxyci5tb3N0UmVjZW50Q2VsbE91dGxldD10aGlzfW5nT25EZXN0cm95KCl7cnIubW9zdFJlY2VudENlbGxPdXRsZXQ9PT10aGlzJiYocnIubW9zdFJlY2VudENlbGxPdXRsZXQ9bnVsbCl9fTtyci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxycikodihfZSkpfTtyci5cdTAyNzVkaXI9dnQoe3R5cGU6cnIsc2VsZWN0b3JzOltbIiIsImNka0NlbGxPdXRsZXQiLCIiXV19KTtyci5tb3N0UmVjZW50Q2VsbE91dGxldD1udWxsO3JyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X2V9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocnIsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2Nka0NlbGxPdXRsZXRdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9XX0sbnVsbCl9KSgpO3ZhciBoZD1jbGFzc3t9O2hkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGhkKX07aGQuXHUwMjc1Y21wPXooe3R5cGU6aGQsc2VsZWN0b3JzOltbImNkay1oZWFkZXItcm93Il0sWyJ0ciIsImNkay1oZWFkZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsImNkay1oZWFkZXItcm93Il0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJk1vKDAsMCl9LGRpcmVjdGl2ZXM6W3JyXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaGQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJjZGstaGVhZGVyLXJvdywgdHJbY2RrLWhlYWRlci1yb3ddIix0ZW1wbGF0ZTppMSxob3N0OntjbGFzczoiY2RrLWhlYWRlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SmUuTm9uZX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIF9kPWNsYXNze307X2QuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8X2QpfTtfZC5cdTAyNzVjbXA9eih7dHlwZTpfZCxzZWxlY3RvcnM6W1siY2RrLWZvb3Rlci1yb3ciXSxbInRyIiwiY2RrLWZvb3Rlci1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwiY2RrLWZvb3Rlci1yb3ciXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmTW8oMCwwKX0sZGlyZWN0aXZlczpbcnJdLGVuY2Fwc3VsYXRpb246Mn0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhfZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImNkay1mb290ZXItcm93LCB0cltjZGstZm9vdGVyLXJvd10iLHRlbXBsYXRlOmkxLGhvc3Q6e2NsYXNzOiJjZGstZm9vdGVyLXJvdyIscm9sZToicm93In0sY2hhbmdlRGV0ZWN0aW9uOnR0LkRlZmF1bHQsZW5jYXBzdWxhdGlvbjpKZS5Ob25lfV19XSxudWxsLG51bGwpfSkoKTt2YXIgQ2Q9Y2xhc3N7fTtDZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxDZCl9O0NkLlx1MDI3NWNtcD16KHt0eXBlOkNkLHNlbGVjdG9yczpbWyJjZGstcm93Il0sWyJ0ciIsImNkay1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwiY2RrLXJvdyJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiZNbygwLDApfSxkaXJlY3RpdmVzOltycl0sZW5jYXBzdWxhdGlvbjoyfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKENkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXJvdywgdHJbY2RrLXJvd10iLHRlbXBsYXRlOmkxLGhvc3Q6e2NsYXNzOiJjZGstcm93Iixyb2xlOiJyb3cifSxjaGFuZ2VEZXRlY3Rpb246dHQuRGVmYXVsdCxlbmNhcHN1bGF0aW9uOkplLk5vbmV9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciB3bD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlUmVmPXR9fTt3bC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx3bCkodihrZSkpfTt3bC5cdTAyNzVkaXI9dnQoe3R5cGU6d2wsc2VsZWN0b3JzOltbIm5nLXRlbXBsYXRlIiwiY2RrTm9EYXRhUm93IiwiIl1dfSk7d2wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprZX1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh3bCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJuZy10ZW1wbGF0ZVtjZGtOb0RhdGFSb3ddIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a2V9XX0sbnVsbCl9KSgpO3ZhciBGbHQ9WyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXSxRWT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGE9ITAscj0hMCxzKXt0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZT10LHRoaXMuX3N0aWNrQ2VsbENzcz1lLHRoaXMuZGlyZWN0aW9uPW8sdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXI9aSx0aGlzLl9pc0Jyb3dzZXI9YSx0aGlzLl9uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50PXIsdGhpcy5fcG9zaXRpb25MaXN0ZW5lcj1zLHRoaXMuX2NhY2hlZENlbGxXaWR0aHM9W10sdGhpcy5fYm9yZGVyQ2VsbENzcz17dG9wOmAke2V9LWJvcmRlci1lbGVtLXRvcGAsYm90dG9tOmAke2V9LWJvcmRlci1lbGVtLWJvdHRvbWAsbGVmdDpgJHtlfS1ib3JkZXItZWxlbS1sZWZ0YCxyaWdodDpgJHtlfS1ib3JkZXItZWxlbS1yaWdodGB9fWNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxlKXtsZXQgbz1bXTtmb3IobGV0IGkgb2YgdClpZihpLm5vZGVUeXBlPT09aS5FTEVNRU5UX05PREUpe28ucHVzaChpKTtmb3IobGV0IGE9MDthPGkuY2hpbGRyZW4ubGVuZ3RoO2ErKylvLnB1c2goaS5jaGlsZHJlblthXSl9dGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIuc2NoZWR1bGUoKCk9Pntmb3IobGV0IGkgb2Ygbyl0aGlzLl9yZW1vdmVTdGlja3lTdHlsZShpLGUpfSl9dXBkYXRlU3RpY2t5Q29sdW1ucyh0LGUsbyxpPSEwKXtpZighdC5sZW5ndGh8fCF0aGlzLl9pc0Jyb3dzZXJ8fCEoZS5zb21lKHA9PnApfHxvLnNvbWUocD0+cCkpKXt0aGlzLl9wb3NpdGlvbkxpc3RlbmVyJiYodGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6W119KSx0aGlzLl9wb3NpdGlvbkxpc3RlbmVyLnN0aWNreUVuZENvbHVtbnNVcGRhdGVkKHtzaXplczpbXX0pKTtyZXR1cm59bGV0IGE9dFswXSxyPWEuY2hpbGRyZW4ubGVuZ3RoLHM9dGhpcy5fZ2V0Q2VsbFdpZHRocyhhLGkpLGw9dGhpcy5fZ2V0U3RpY2t5U3RhcnRDb2x1bW5Qb3NpdGlvbnMocyxlKSxjPXRoaXMuX2dldFN0aWNreUVuZENvbHVtblBvc2l0aW9ucyhzLG8pLG09ZS5sYXN0SW5kZXhPZighMCksZj1vLmluZGV4T2YoITApO3RoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKCgpPT57bGV0IHA9dGhpcy5kaXJlY3Rpb249PT0icnRsIixnPXA/InJpZ2h0IjoibGVmdCIsXz1wPyJsZWZ0IjoicmlnaHQiO2ZvcihsZXQgTSBvZiB0KWZvcihsZXQgeT0wO3k8cjt5Kyspe2xldCBPPU0uY2hpbGRyZW5beV07ZVt5XSYmdGhpcy5fYWRkU3RpY2t5U3R5bGUoTyxnLGxbeV0seT09PW0pLG9beV0mJnRoaXMuX2FkZFN0aWNreVN0eWxlKE8sXyxjW3ldLHk9PT1mKX10aGlzLl9wb3NpdGlvbkxpc3RlbmVyJiYodGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6bT09PS0xP1tdOnMuc2xpY2UoMCxtKzEpLm1hcCgoTSx5KT0+ZVt5XT9NOm51bGwpfSksdGhpcy5fcG9zaXRpb25MaXN0ZW5lci5zdGlja3lFbmRDb2x1bW5zVXBkYXRlZCh7c2l6ZXM6Zj09PS0xP1tdOnMuc2xpY2UoZikubWFwKChNLHkpPT5vW3krZl0/TTpudWxsKS5yZXZlcnNlKCl9KSl9KX1zdGlja1Jvd3ModCxlLG8pe2lmKCF0aGlzLl9pc0Jyb3dzZXIpcmV0dXJuO2xldCBpPW89PT0iYm90dG9tIj90LnNsaWNlKCkucmV2ZXJzZSgpOnQsYT1vPT09ImJvdHRvbSI/ZS5zbGljZSgpLnJldmVyc2UoKTplLHI9W10scz1bXSxsPVtdO2ZvcihsZXQgbT0wLGY9MDttPGkubGVuZ3RoO20rKyl7aWYoIWFbbV0pY29udGludWU7clttXT1mO2xldCBwPWlbbV07bFttXT10aGlzLl9pc05hdGl2ZUh0bWxUYWJsZT9BcnJheS5mcm9tKHAuY2hpbGRyZW4pOltwXTtsZXQgZz1wLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtmKz1nLHNbbV09Z31sZXQgYz1hLmxhc3RJbmRleE9mKCEwKTt0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKT0+e3ZhciBtLGY7Zm9yKGxldCBwPTA7cDxpLmxlbmd0aDtwKyspe2lmKCFhW3BdKWNvbnRpbnVlO2xldCBnPXJbcF0sXz1wPT09Yztmb3IobGV0IE0gb2YgbFtwXSl0aGlzLl9hZGRTdGlja3lTdHlsZShNLG8sZyxfKX1vPT09InRvcCI/KG09dGhpcy5fcG9zaXRpb25MaXN0ZW5lcik9PT1udWxsfHxtPT09dm9pZCAwfHxtLnN0aWNreUhlYWRlclJvd3NVcGRhdGVkKHtzaXplczpzLG9mZnNldHM6cixlbGVtZW50czpsfSk6KGY9dGhpcy5fcG9zaXRpb25MaXN0ZW5lcik9PT1udWxsfHxmPT09dm9pZCAwfHxmLnN0aWNreUZvb3RlclJvd3NVcGRhdGVkKHtzaXplczpzLG9mZnNldHM6cixlbGVtZW50czpsfSl9KX11cGRhdGVTdGlja3lGb290ZXJDb250YWluZXIodCxlKXtpZighdGhpcy5faXNOYXRpdmVIdG1sVGFibGUpcmV0dXJuO2xldCBvPXQucXVlcnlTZWxlY3RvcigidGZvb3QiKTt0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlci5zY2hlZHVsZSgoKT0+e2Uuc29tZShpPT4haSk/dGhpcy5fcmVtb3ZlU3RpY2t5U3R5bGUobyxbImJvdHRvbSJdKTp0aGlzLl9hZGRTdGlja3lTdHlsZShvLCJib3R0b20iLDAsITEpfSl9X3JlbW92ZVN0aWNreVN0eWxlKHQsZSl7Zm9yKGxldCBpIG9mIGUpdC5zdHlsZVtpXT0iIix0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fYm9yZGVyQ2VsbENzc1tpXSk7Rmx0LnNvbWUoaT0+ZS5pbmRleE9mKGkpPT09LTEmJnQuc3R5bGVbaV0pP3Quc3R5bGUuekluZGV4PXRoaXMuX2dldENhbGN1bGF0ZWRaSW5kZXgodCk6KHQuc3R5bGUuekluZGV4PSIiLHRoaXMuX25lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQmJih0LnN0eWxlLnBvc2l0aW9uPSIiKSx0LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc3RpY2tDZWxsQ3NzKSl9X2FkZFN0aWNreVN0eWxlKHQsZSxvLGkpe3QuY2xhc3NMaXN0LmFkZCh0aGlzLl9zdGlja0NlbGxDc3MpLGkmJnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9ib3JkZXJDZWxsQ3NzW2VdKSx0LnN0eWxlW2VdPWAke299cHhgLHQuc3R5bGUuekluZGV4PXRoaXMuX2dldENhbGN1bGF0ZWRaSW5kZXgodCksdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCYmKHQuc3R5bGUuY3NzVGV4dCs9InBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsgIil9X2dldENhbGN1bGF0ZWRaSW5kZXgodCl7bGV0IGU9e3RvcDoxMDAsYm90dG9tOjEwLGxlZnQ6MSxyaWdodDoxfSxvPTA7Zm9yKGxldCBpIG9mIEZsdCl0LnN0eWxlW2ldJiYobys9ZVtpXSk7cmV0dXJuIG8/YCR7b31gOiIifV9nZXRDZWxsV2lkdGhzKHQsZT0hMCl7aWYoIWUmJnRoaXMuX2NhY2hlZENlbGxXaWR0aHMubGVuZ3RoKXJldHVybiB0aGlzLl9jYWNoZWRDZWxsV2lkdGhzO2xldCBvPVtdLGk9dC5jaGlsZHJlbjtmb3IobGV0IGE9MDthPGkubGVuZ3RoO2ErKyl7bGV0IHI9aVthXTtvLnB1c2goci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCl9cmV0dXJuIHRoaXMuX2NhY2hlZENlbGxXaWR0aHM9byxvfV9nZXRTdGlja3lTdGFydENvbHVtblBvc2l0aW9ucyh0LGUpe2xldCBvPVtdLGk9MDtmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKyllW2FdJiYob1thXT1pLGkrPXRbYV0pO3JldHVybiBvfV9nZXRTdGlja3lFbmRDb2x1bW5Qb3NpdGlvbnModCxlKXtsZXQgbz1bXSxpPTA7Zm9yKGxldCBhPXQubGVuZ3RoO2E+MDthLS0pZVthXSYmKG9bYV09aSxpKz10W2FdKTtyZXR1cm4gb319O2Z1bmN0aW9uIExsdChuKXtyZXR1cm4gRXJyb3IoYENvdWxkIG5vdCBmaW5kIGNvbHVtbiB3aXRoIGlkICIke259Ii5gKX1mdW5jdGlvbiBKRHQobil7cmV0dXJuIEVycm9yKGBEdXBsaWNhdGUgY29sdW1uIGRlZmluaXRpb24gbmFtZSBwcm92aWRlZDogIiR7bn0iLmApfWZ1bmN0aW9uICREdCgpe3JldHVybiBFcnJvcigiVGhlcmUgY2FuIG9ubHkgYmUgb25lIGRlZmF1bHQgcm93IHdpdGhvdXQgYSB3aGVuIHByZWRpY2F0ZSBmdW5jdGlvbi4iKX1mdW5jdGlvbiB0SXQobil7cmV0dXJuIEVycm9yKGBDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIHJvdyBkZWZpbml0aW9uIGZvciB0aGVwcm92aWRlZCByb3cgZGF0YTogJHtKU09OLnN0cmluZ2lmeShuKX1gKX1mdW5jdGlvbiBlSXQoKXtyZXR1cm4gRXJyb3IoIk1pc3NpbmcgZGVmaW5pdGlvbnMgZm9yIGhlYWRlciwgZm9vdGVyLCBhbmQgcm93OyBjYW5ub3QgZGV0ZXJtaW5lIHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHJlbmRlcmVkLiIpfWZ1bmN0aW9uIG5JdCgpe3JldHVybiBFcnJvcigiUHJvdmlkZWQgZGF0YSBzb3VyY2UgZGlkIG5vdCBtYXRjaCBhbiBhcnJheSwgT2JzZXJ2YWJsZSwgb3IgRGF0YVNvdXJjZSIpfWZ1bmN0aW9uIG9JdCgpe3JldHVybiBFcnJvcigiVGV4dCBjb2x1bW4gY291bGQgbm90IGZpbmQgYSBwYXJlbnQgdGFibGUgZm9yIHJlZ2lzdHJhdGlvbi4iKX1mdW5jdGlvbiBpSXQoKXtyZXR1cm4gRXJyb3IoIlRhYmxlIHRleHQgY29sdW1uIG11c3QgaGF2ZSBhIG5hbWUuIil9dmFyIHV4PW5ldyB5dCgiQ0RLX1NQTCIpO3ZhciBDTz1jbGFzc3t9O0NPLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fENPKX07Q08uXHUwMjc1ZGlyPXZ0KHt0eXBlOkNPLHNlbGVjdG9yczpbWyJjZGstdGFibGUiLCJyZWN5Y2xlUm93cyIsIiJdLFsidGFibGUiLCJjZGstdGFibGUiLCIiLCJyZWN5Y2xlUm93cyIsIiJdXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOm5sLHVzZUNsYXNzOnhwfV0pXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhDTyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJjZGstdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVtjZGstdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpubCx1c2VDbGFzczp4cH1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgX2M9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9ZX19O19jLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF9jKSh2KF9lKSx2KEwpKX07X2MuXHUwMjc1ZGlyPXZ0KHt0eXBlOl9jLHNlbGVjdG9yczpbWyIiLCJyb3dPdXRsZXQiLCIiXV19KTtfYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOl9lfSx7dHlwZTpMfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9jLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Iltyb3dPdXRsZXRdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9LHt0eXBlOkx9XX0sbnVsbCl9KSgpO3ZhciBDYz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudmlld0NvbnRhaW5lcj10LHRoaXMuZWxlbWVudFJlZj1lfX07Q2MuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Q2MpKHYoX2UpLHYoTCkpfTtDYy5cdTAyNzVkaXI9dnQoe3R5cGU6Q2Msc2VsZWN0b3JzOltbIiIsImhlYWRlclJvd091dGxldCIsIiJdXX0pO0NjLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6X2V9LHt0eXBlOkx9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQ2MsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2hlYWRlclJvd091dGxldF0ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpfZX0se3R5cGU6TH1dfSxudWxsKX0pKCk7dmFyIE1jPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy52aWV3Q29udGFpbmVyPXQsdGhpcy5lbGVtZW50UmVmPWV9fTtNYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxNYykodihfZSksdihMKSl9O01jLlx1MDI3NWRpcj12dCh7dHlwZTpNYyxzZWxlY3RvcnM6W1siIiwiZm9vdGVyUm93T3V0bGV0IiwiIl1dfSk7TWMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfZX0se3R5cGU6TH1dOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhNYyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbZm9vdGVyUm93T3V0bGV0XSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9lfSx7dHlwZTpMfV19LG51bGwpfSkoKTt2YXIgYmM9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9ZX19O2JjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGJjKSh2KF9lKSx2KEwpKX07YmMuXHUwMjc1ZGlyPXZ0KHt0eXBlOmJjLHNlbGVjdG9yczpbWyIiLCJub0RhdGFSb3dPdXRsZXQiLCIiXV19KTtiYy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOl9lfSx7dHlwZTpMfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGJjLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Iltub0RhdGFSb3dPdXRsZXRdIn1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9LHt0eXBlOkx9XX0sbnVsbCl9KSgpO3ZhciAkWT1gCiAgPG5nLWNvbnRlbnQgc2VsZWN0PSJjYXB0aW9uIj48L25nLWNvbnRlbnQ+CiAgPG5nLWNvbnRlbnQgc2VsZWN0PSJjb2xncm91cCwgY29sIj48L25nLWNvbnRlbnQ+CiAgPG5nLWNvbnRhaW5lciBoZWFkZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+CiAgPG5nLWNvbnRhaW5lciByb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+CiAgPG5nLWNvbnRhaW5lciBub0RhdGFSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+CiAgPG5nLWNvbnRhaW5lciBmb290ZXJSb3dPdXRsZXQ+PC9uZy1jb250YWluZXI+CmA7dmFyIGhzPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCxjLG0sZil7dGhpcy5fZGlmZmVycz10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZWxlbWVudFJlZj1vLHRoaXMuX2Rpcj1hLHRoaXMuX3BsYXRmb3JtPXMsdGhpcy5fdmlld1JlcGVhdGVyPWwsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXI9Yyx0aGlzLl92aWV3cG9ydFJ1bGVyPW0sdGhpcy5fc3RpY2t5UG9zaXRpb25pbmdMaXN0ZW5lcj1mLHRoaXMuX29uRGVzdHJveT1uZXcgSnQsdGhpcy5fY29sdW1uRGVmc0J5TmFtZT1uZXcgTWFwLHRoaXMuX2N1c3RvbUNvbHVtbkRlZnM9bmV3IFNldCx0aGlzLl9jdXN0b21Sb3dEZWZzPW5ldyBTZXQsdGhpcy5fY3VzdG9tSGVhZGVyUm93RGVmcz1uZXcgU2V0LHRoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnM9bmV3IFNldCx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkPSEwLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITAsdGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PSEwLHRoaXMuX2ZvcmNlUmVjYWxjdWxhdGVDZWxsV2lkdGhzPSEwLHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA9bmV3IE1hcCx0aGlzLnN0aWNreUNzc0NsYXNzPSJjZGstdGFibGUtc3RpY2t5Iix0aGlzLm5lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQ9ITAsdGhpcy5faXNTaG93aW5nTm9EYXRhUm93PSExLHRoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93cz0hMSx0aGlzLl9maXhlZExheW91dD0hMSx0aGlzLmNvbnRlbnRDaGFuZ2VkPW5ldyAkLHRoaXMudmlld0NoYW5nZT1uZXcgR2Eoe3N0YXJ0OjAsZW5kOk51bWJlci5NQVhfVkFMVUV9KSxpfHx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwidGFibGUiKSx0aGlzLl9kb2N1bWVudD1yLHRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZT09PSJUQUJMRSJ9Z2V0IHRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fdHJhY2tCeUZufXNldCB0cmFja0J5KHQpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmdCE9bnVsbCYmdHlwZW9mIHQhPSJmdW5jdGlvbiImJmNvbnNvbGUud2FybihgdHJhY2tCeSBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfS5gKSx0aGlzLl90cmFja0J5Rm49dH1nZXQgZGF0YVNvdXJjZSgpe3JldHVybiB0aGlzLl9kYXRhU291cmNlfXNldCBkYXRhU291cmNlKHQpe3RoaXMuX2RhdGFTb3VyY2UhPT10JiZ0aGlzLl9zd2l0Y2hEYXRhU291cmNlKHQpfWdldCBtdWx0aVRlbXBsYXRlRGF0YVJvd3MoKXtyZXR1cm4gdGhpcy5fbXVsdGlUZW1wbGF0ZURhdGFSb3dzfXNldCBtdWx0aVRlbXBsYXRlRGF0YVJvd3ModCl7dGhpcy5fbXVsdGlUZW1wbGF0ZURhdGFSb3dzPVplKHQpLHRoaXMuX3Jvd091dGxldCYmdGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoJiYodGhpcy5fZm9yY2VSZW5kZXJEYXRhUm93cygpLHRoaXMudXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCkpfWdldCBmaXhlZExheW91dCgpe3JldHVybiB0aGlzLl9maXhlZExheW91dH1zZXQgZml4ZWRMYXlvdXQodCl7dGhpcy5fZml4ZWRMYXlvdXQ9WmUodCksdGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ITAsdGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PSEwfW5nT25Jbml0KCl7dGhpcy5fc2V0dXBTdGlja3lTdHlsZXIoKSx0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZSYmdGhpcy5fYXBwbHlOYXRpdmVUYWJsZVNlY3Rpb25zKCksdGhpcy5fZGF0YURpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgodCxlKT0+dGhpcy50cmFja0J5P3RoaXMudHJhY2tCeShlLmRhdGFJbmRleCxlLmRhdGEpOmUpLHRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkucGlwZShQZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9mb3JjZVJlY2FsY3VsYXRlQ2VsbFdpZHRocz0hMH0pfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe2lmKHRoaXMuX2NhY2hlUm93RGVmcygpLHRoaXMuX2NhY2hlQ29sdW1uRGVmcygpLCF0aGlzLl9oZWFkZXJSb3dEZWZzLmxlbmd0aCYmIXRoaXMuX2Zvb3RlclJvd0RlZnMubGVuZ3RoJiYhdGhpcy5fcm93RGVmcy5sZW5ndGgmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBlSXQoKTtsZXQgZT10aGlzLl9yZW5kZXJVcGRhdGVkQ29sdW1ucygpfHx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkfHx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkO3RoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldD10aGlzLl9zdGlja3lDb2x1bW5TdHlsZXNOZWVkUmVzZXR8fGUsdGhpcy5fZm9yY2VSZWNhbGN1bGF0ZUNlbGxXaWR0aHM9ZSx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkJiYodGhpcy5fZm9yY2VSZW5kZXJIZWFkZXJSb3dzKCksdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZD0hMSksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZCYmKHRoaXMuX2ZvcmNlUmVuZGVyRm9vdGVyUm93cygpLHRoaXMuX2Zvb3RlclJvd0RlZkNoYW5nZWQ9ITEpLHRoaXMuZGF0YVNvdXJjZSYmdGhpcy5fcm93RGVmcy5sZW5ndGg+MCYmIXRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbj90aGlzLl9vYnNlcnZlUmVuZGVyQ2hhbmdlcygpOnRoaXMuX3N0aWNreUNvbHVtblN0eWxlc05lZWRSZXNldCYmdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSx0aGlzLl9jaGVja1N0aWNreVN0YXRlcygpfW5nT25EZXN0cm95KCl7dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9ub0RhdGFSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2hlYWRlclJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZm9vdGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmNsZWFyKCksdGhpcy5fb25EZXN0cm95Lm5leHQoKSx0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKSxEMyh0aGlzLmRhdGFTb3VyY2UpJiZ0aGlzLmRhdGFTb3VyY2UuZGlzY29ubmVjdCh0aGlzKX1yZW5kZXJSb3dzKCl7dGhpcy5fcmVuZGVyUm93cz10aGlzLl9nZXRBbGxSZW5kZXJSb3dzKCk7bGV0IHQ9dGhpcy5fZGF0YURpZmZlci5kaWZmKHRoaXMuX3JlbmRlclJvd3MpO2lmKCF0KXt0aGlzLl91cGRhdGVOb0RhdGFSb3coKSx0aGlzLmNvbnRlbnRDaGFuZ2VkLm5leHQoKTtyZXR1cm59bGV0IGU9dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXI7dGhpcy5fdmlld1JlcGVhdGVyLmFwcGx5Q2hhbmdlcyh0LGUsKG8saSxhKT0+dGhpcy5fZ2V0RW1iZWRkZWRWaWV3QXJncyhvLml0ZW0sYSksbz0+by5pdGVtLmRhdGEsbz0+e28ub3BlcmF0aW9uPT09MSYmby5jb250ZXh0JiZ0aGlzLl9yZW5kZXJDZWxsVGVtcGxhdGVGb3JJdGVtKG8ucmVjb3JkLml0ZW0ucm93RGVmLG8uY29udGV4dCl9KSx0aGlzLl91cGRhdGVSb3dJbmRleENvbnRleHQoKSx0LmZvckVhY2hJZGVudGl0eUNoYW5nZShvPT57bGV0IGk9ZS5nZXQoby5jdXJyZW50SW5kZXgpO2kuY29udGV4dC4kaW1wbGljaXQ9by5pdGVtLmRhdGF9KSx0aGlzLl91cGRhdGVOb0RhdGFSb3coKSx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpLHRoaXMuY29udGVudENoYW5nZWQubmV4dCgpfWFkZENvbHVtbkRlZih0KXt0aGlzLl9jdXN0b21Db2x1bW5EZWZzLmFkZCh0KX1yZW1vdmVDb2x1bW5EZWYodCl7dGhpcy5fY3VzdG9tQ29sdW1uRGVmcy5kZWxldGUodCl9YWRkUm93RGVmKHQpe3RoaXMuX2N1c3RvbVJvd0RlZnMuYWRkKHQpfXJlbW92ZVJvd0RlZih0KXt0aGlzLl9jdXN0b21Sb3dEZWZzLmRlbGV0ZSh0KX1hZGRIZWFkZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tSGVhZGVyUm93RGVmcy5hZGQodCksdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZD0hMH1yZW1vdmVIZWFkZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tSGVhZGVyUm93RGVmcy5kZWxldGUodCksdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZD0hMH1hZGRGb290ZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcy5hZGQodCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMH1yZW1vdmVGb290ZXJSb3dEZWYodCl7dGhpcy5fY3VzdG9tRm9vdGVyUm93RGVmcy5kZWxldGUodCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMH1zZXROb0RhdGFSb3codCl7dGhpcy5fY3VzdG9tTm9EYXRhUm93PXR9dXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCl7bGV0IHQ9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2hlYWRlclJvd091dGxldCksbz10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigidGhlYWQiKTtvJiYoby5zdHlsZS5kaXNwbGF5PXQubGVuZ3RoPyIiOiJub25lIik7bGV0IGk9dGhpcy5faGVhZGVyUm93RGVmcy5tYXAoYT0+YS5zdGlja3kpO3RoaXMuX3N0aWNreVN0eWxlci5jbGVhclN0aWNreVBvc2l0aW9uaW5nKHQsWyJ0b3AiXSksdGhpcy5fc3RpY2t5U3R5bGVyLnN0aWNrUm93cyh0LGksInRvcCIpLHRoaXMuX2hlYWRlclJvd0RlZnMuZm9yRWFjaChhPT5hLnJlc2V0U3RpY2t5Q2hhbmdlZCgpKX11cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKXtsZXQgdD10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5fZm9vdGVyUm93T3V0bGV0KSxvPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCJ0Zm9vdCIpO28mJihvLnN0eWxlLmRpc3BsYXk9dC5sZW5ndGg/IiI6Im5vbmUiKTtsZXQgaT10aGlzLl9mb290ZXJSb3dEZWZzLm1hcChhPT5hLnN0aWNreSk7dGhpcy5fc3RpY2t5U3R5bGVyLmNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxbImJvdHRvbSJdKSx0aGlzLl9zdGlja3lTdHlsZXIuc3RpY2tSb3dzKHQsaSwiYm90dG9tIiksdGhpcy5fc3RpY2t5U3R5bGVyLnVwZGF0ZVN0aWNreUZvb3RlckNvbnRhaW5lcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsaSksdGhpcy5fZm9vdGVyUm93RGVmcy5mb3JFYWNoKGE9PmEucmVzZXRTdGlja3lDaGFuZ2VkKCkpfXVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpe2xldCB0PXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9oZWFkZXJSb3dPdXRsZXQpLGU9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX3Jvd091dGxldCksbz10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5fZm9vdGVyUm93T3V0bGV0KTsodGhpcy5faXNOYXRpdmVIdG1sVGFibGUmJiF0aGlzLl9maXhlZExheW91dHx8dGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0KSYmKHRoaXMuX3N0aWNreVN0eWxlci5jbGVhclN0aWNreVBvc2l0aW9uaW5nKFsuLi50LC4uLmUsLi4ub10sWyJsZWZ0IiwicmlnaHQiXSksdGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PSExKSx0LmZvckVhY2goKGksYSk9Pnt0aGlzLl9hZGRTdGlja3lDb2x1bW5TdHlsZXMoW2ldLHRoaXMuX2hlYWRlclJvd0RlZnNbYV0pfSksdGhpcy5fcm93RGVmcy5mb3JFYWNoKGk9PntsZXQgYT1bXTtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyl0aGlzLl9yZW5kZXJSb3dzW3JdLnJvd0RlZj09PWkmJmEucHVzaChlW3JdKTt0aGlzLl9hZGRTdGlja3lDb2x1bW5TdHlsZXMoYSxpKX0pLG8uZm9yRWFjaCgoaSxhKT0+e3RoaXMuX2FkZFN0aWNreUNvbHVtblN0eWxlcyhbaV0sdGhpcy5fZm9vdGVyUm93RGVmc1thXSl9KSxBcnJheS5mcm9tKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUudmFsdWVzKCkpLmZvckVhY2goaT0+aS5yZXNldFN0aWNreUNoYW5nZWQoKSl9X2dldEFsbFJlbmRlclJvd3MoKXtsZXQgdD1bXSxlPXRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA7dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcD1uZXcgTWFwO2ZvcihsZXQgbz0wO288dGhpcy5fZGF0YS5sZW5ndGg7bysrKXtsZXQgaT10aGlzLl9kYXRhW29dLGE9dGhpcy5fZ2V0UmVuZGVyUm93c0ZvckRhdGEoaSxvLGUuZ2V0KGkpKTt0aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmhhcyhpKXx8dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5zZXQoaSxuZXcgV2Vha01hcCk7Zm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKyspe2xldCBzPWFbcl0sbD10aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmdldChzLmRhdGEpO2wuaGFzKHMucm93RGVmKT9sLmdldChzLnJvd0RlZikucHVzaChzKTpsLnNldChzLnJvd0RlZixbc10pLHQucHVzaChzKX19cmV0dXJuIHR9X2dldFJlbmRlclJvd3NGb3JEYXRhKHQsZSxvKXtyZXR1cm4gdGhpcy5fZ2V0Um93RGVmcyh0LGUpLm1hcChhPT57bGV0IHI9byYmby5oYXMoYSk/by5nZXQoYSk6W107aWYoci5sZW5ndGgpe2xldCBzPXIuc2hpZnQoKTtyZXR1cm4gcy5kYXRhSW5kZXg9ZSxzfWVsc2UgcmV0dXJue2RhdGE6dCxyb3dEZWY6YSxkYXRhSW5kZXg6ZX19KX1fY2FjaGVDb2x1bW5EZWZzKCl7dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5jbGVhcigpLEp6KHRoaXMuX2dldE93bkRlZnModGhpcy5fY29udGVudENvbHVtbkRlZnMpLHRoaXMuX2N1c3RvbUNvbHVtbkRlZnMpLmZvckVhY2goZT0+e2lmKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUuaGFzKGUubmFtZSkmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBKRHQoZS5uYW1lKTt0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLnNldChlLm5hbWUsZSl9KX1fY2FjaGVSb3dEZWZzKCl7dGhpcy5faGVhZGVyUm93RGVmcz1Keih0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRIZWFkZXJSb3dEZWZzKSx0aGlzLl9jdXN0b21IZWFkZXJSb3dEZWZzKSx0aGlzLl9mb290ZXJSb3dEZWZzPUp6KHRoaXMuX2dldE93bkRlZnModGhpcy5fY29udGVudEZvb3RlclJvd0RlZnMpLHRoaXMuX2N1c3RvbUZvb3RlclJvd0RlZnMpLHRoaXMuX3Jvd0RlZnM9SnoodGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50Um93RGVmcyksdGhpcy5fY3VzdG9tUm93RGVmcyk7bGV0IHQ9dGhpcy5fcm93RGVmcy5maWx0ZXIoZT0+IWUud2hlbik7aWYoIXRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzJiZ0Lmxlbmd0aD4xJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgJER0KCk7dGhpcy5fZGVmYXVsdFJvd0RlZj10WzBdfV9yZW5kZXJVcGRhdGVkQ29sdW1ucygpe2xldCB0PShhLHIpPT5hfHwhIXIuZ2V0Q29sdW1uc0RpZmYoKSxlPXRoaXMuX3Jvd0RlZnMucmVkdWNlKHQsITEpO2UmJnRoaXMuX2ZvcmNlUmVuZGVyRGF0YVJvd3MoKTtsZXQgbz10aGlzLl9oZWFkZXJSb3dEZWZzLnJlZHVjZSh0LCExKTtvJiZ0aGlzLl9mb3JjZVJlbmRlckhlYWRlclJvd3MoKTtsZXQgaT10aGlzLl9mb290ZXJSb3dEZWZzLnJlZHVjZSh0LCExKTtyZXR1cm4gaSYmdGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksZXx8b3x8aX1fc3dpdGNoRGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhPVtdLEQzKHRoaXMuZGF0YVNvdXJjZSkmJnRoaXMuZGF0YVNvdXJjZS5kaXNjb25uZWN0KHRoaXMpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbiYmKHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZVN1YnNjcmlwdGlvbj1udWxsKSx0fHwodGhpcy5fZGF0YURpZmZlciYmdGhpcy5fZGF0YURpZmZlci5kaWZmKFtdKSx0aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpKSx0aGlzLl9kYXRhU291cmNlPXR9X29ic2VydmVSZW5kZXJDaGFuZ2VzKCl7aWYoIXRoaXMuZGF0YVNvdXJjZSlyZXR1cm47bGV0IHQ7aWYoRDModGhpcy5kYXRhU291cmNlKT90PXRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KHRoaXMpOm52KHRoaXMuZGF0YVNvdXJjZSk/dD10aGlzLmRhdGFTb3VyY2U6QXJyYXkuaXNBcnJheSh0aGlzLmRhdGFTb3VyY2UpJiYodD1kbih0aGlzLmRhdGFTb3VyY2UpKSx0PT09dm9pZCAwJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgbkl0KCk7dGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uPXQucGlwZShQZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoZT0+e3RoaXMuX2RhdGE9ZXx8W10sdGhpcy5yZW5kZXJSb3dzKCl9KX1fZm9yY2VSZW5kZXJIZWFkZXJSb3dzKCl7dGhpcy5faGVhZGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoPjAmJnRoaXMuX2hlYWRlclJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5faGVhZGVyUm93RGVmcy5mb3JFYWNoKCh0LGUpPT50aGlzLl9yZW5kZXJSb3codGhpcy5faGVhZGVyUm93T3V0bGV0LHQsZSkpLHRoaXMudXBkYXRlU3RpY2t5SGVhZGVyUm93U3R5bGVzKCl9X2ZvcmNlUmVuZGVyRm9vdGVyUm93cygpe3RoaXMuX2Zvb3RlclJvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aD4wJiZ0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Zvb3RlclJvd0RlZnMuZm9yRWFjaCgodCxlKT0+dGhpcy5fcmVuZGVyUm93KHRoaXMuX2Zvb3RlclJvd091dGxldCx0LGUpKSx0aGlzLnVwZGF0ZVN0aWNreUZvb3RlclJvd1N0eWxlcygpfV9hZGRTdGlja3lDb2x1bW5TdHlsZXModCxlKXtsZXQgbz1BcnJheS5mcm9tKGUuY29sdW1uc3x8W10pLm1hcChyPT57bGV0IHM9dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5nZXQocik7aWYoIXMmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBMbHQocik7cmV0dXJuIHN9KSxpPW8ubWFwKHI9PnIuc3RpY2t5KSxhPW8ubWFwKHI9PnIuc3RpY2t5RW5kKTt0aGlzLl9zdGlja3lTdHlsZXIudXBkYXRlU3RpY2t5Q29sdW1ucyh0LGksYSwhdGhpcy5fZml4ZWRMYXlvdXR8fHRoaXMuX2ZvcmNlUmVjYWxjdWxhdGVDZWxsV2lkdGhzKX1fZ2V0UmVuZGVyZWRSb3dzKHQpe2xldCBlPVtdO2ZvcihsZXQgbz0wO288dC52aWV3Q29udGFpbmVyLmxlbmd0aDtvKyspe2xldCBpPXQudmlld0NvbnRhaW5lci5nZXQobyk7ZS5wdXNoKGkucm9vdE5vZGVzWzBdKX1yZXR1cm4gZX1fZ2V0Um93RGVmcyh0LGUpe2lmKHRoaXMuX3Jvd0RlZnMubGVuZ3RoPT0xKXJldHVyblt0aGlzLl9yb3dEZWZzWzBdXTtsZXQgbz1bXTtpZih0aGlzLm11bHRpVGVtcGxhdGVEYXRhUm93cylvPXRoaXMuX3Jvd0RlZnMuZmlsdGVyKGk9PiFpLndoZW58fGkud2hlbihlLHQpKTtlbHNle2xldCBpPXRoaXMuX3Jvd0RlZnMuZmluZChhPT5hLndoZW4mJmEud2hlbihlLHQpKXx8dGhpcy5fZGVmYXVsdFJvd0RlZjtpJiZvLnB1c2goaSl9aWYoIW8ubGVuZ3RoJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgdEl0KHQpO3JldHVybiBvfV9nZXRFbWJlZGRlZFZpZXdBcmdzKHQsZSl7bGV0IG89dC5yb3dEZWYsaT17JGltcGxpY2l0OnQuZGF0YX07cmV0dXJue3RlbXBsYXRlUmVmOm8udGVtcGxhdGUsY29udGV4dDppLGluZGV4OmV9fV9yZW5kZXJSb3codCxlLG8saT17fSl7bGV0IGE9dC52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhlLnRlbXBsYXRlLGksbyk7cmV0dXJuIHRoaXMuX3JlbmRlckNlbGxUZW1wbGF0ZUZvckl0ZW0oZSxpKSxhfV9yZW5kZXJDZWxsVGVtcGxhdGVGb3JJdGVtKHQsZSl7Zm9yKGxldCBvIG9mIHRoaXMuX2dldENlbGxUZW1wbGF0ZXModCkpcnIubW9zdFJlY2VudENlbGxPdXRsZXQmJnJyLm1vc3RSZWNlbnRDZWxsT3V0bGV0Ll92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyhvLGUpO3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV91cGRhdGVSb3dJbmRleENvbnRleHQoKXtsZXQgdD10aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lcjtmb3IobGV0IGU9MCxvPXQubGVuZ3RoO2U8bztlKyspe2xldCBhPXQuZ2V0KGUpLmNvbnRleHQ7YS5jb3VudD1vLGEuZmlyc3Q9ZT09PTAsYS5sYXN0PWU9PT1vLTEsYS5ldmVuPWUlMj09PTAsYS5vZGQ9IWEuZXZlbix0aGlzLm11bHRpVGVtcGxhdGVEYXRhUm93cz8oYS5kYXRhSW5kZXg9dGhpcy5fcmVuZGVyUm93c1tlXS5kYXRhSW5kZXgsYS5yZW5kZXJJbmRleD1lKTphLmluZGV4PXRoaXMuX3JlbmRlclJvd3NbZV0uZGF0YUluZGV4fX1fZ2V0Q2VsbFRlbXBsYXRlcyh0KXtyZXR1cm4hdHx8IXQuY29sdW1ucz9bXTpBcnJheS5mcm9tKHQuY29sdW1ucyxlPT57bGV0IG89dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5nZXQoZSk7aWYoIW8mJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBMbHQoZSk7cmV0dXJuIHQuZXh0cmFjdENlbGxUZW1wbGF0ZShvKX0pfV9hcHBseU5hdGl2ZVRhYmxlU2VjdGlvbnMoKXtsZXQgdD10aGlzLl9kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZT1be3RhZzoidGhlYWQiLG91dGxldHM6W3RoaXMuX2hlYWRlclJvd091dGxldF19LHt0YWc6InRib2R5IixvdXRsZXRzOlt0aGlzLl9yb3dPdXRsZXQsdGhpcy5fbm9EYXRhUm93T3V0bGV0XX0se3RhZzoidGZvb3QiLG91dGxldHM6W3RoaXMuX2Zvb3RlclJvd091dGxldF19XTtmb3IobGV0IG8gb2YgZSl7bGV0IGk9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChvLnRhZyk7aS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3dncm91cCIpO2ZvcihsZXQgYSBvZiBvLm91dGxldHMpaS5hcHBlbmRDaGlsZChhLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7dC5hcHBlbmRDaGlsZChpKX10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodCl9X2ZvcmNlUmVuZGVyRGF0YVJvd3MoKXt0aGlzLl9kYXRhRGlmZmVyLmRpZmYoW10pLHRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5yZW5kZXJSb3dzKCl9X2NoZWNrU3RpY2t5U3RhdGVzKCl7bGV0IHQ9KGUsbyk9PmV8fG8uaGFzU3RpY2t5Q2hhbmdlZCgpO3RoaXMuX2hlYWRlclJvd0RlZnMucmVkdWNlKHQsITEpJiZ0aGlzLnVwZGF0ZVN0aWNreUhlYWRlclJvd1N0eWxlcygpLHRoaXMuX2Zvb3RlclJvd0RlZnMucmVkdWNlKHQsITEpJiZ0aGlzLnVwZGF0ZVN0aWNreUZvb3RlclJvd1N0eWxlcygpLEFycmF5LmZyb20odGhpcy5fY29sdW1uRGVmc0J5TmFtZS52YWx1ZXMoKSkucmVkdWNlKHQsITEpJiYodGhpcy5fc3RpY2t5Q29sdW1uU3R5bGVzTmVlZFJlc2V0PSEwLHRoaXMudXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCkpfV9zZXR1cFN0aWNreVN0eWxlcigpe2xldCB0PXRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciI7dGhpcy5fc3RpY2t5U3R5bGVyPW5ldyBRWSh0aGlzLl9pc05hdGl2ZUh0bWxUYWJsZSx0aGlzLnN0aWNreUNzc0NsYXNzLHQsdGhpcy5fY29hbGVzY2VkU3R5bGVTY2hlZHVsZXIsdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLHRoaXMubmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCx0aGlzLl9zdGlja3lQb3NpdGlvbmluZ0xpc3RlbmVyKSwodGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6ZG4oKSkucGlwZShQZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoZT0+e3RoaXMuX3N0aWNreVN0eWxlci5kaXJlY3Rpb249ZSx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpfSl9X2dldE93bkRlZnModCl7cmV0dXJuIHQuZmlsdGVyKGU9PiFlLl90YWJsZXx8ZS5fdGFibGU9PT10aGlzKX1fdXBkYXRlTm9EYXRhUm93KCl7bGV0IHQ9dGhpcy5fY3VzdG9tTm9EYXRhUm93fHx0aGlzLl9ub0RhdGFSb3c7aWYodCl7bGV0IGU9dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIubGVuZ3RoPT09MDtpZihlIT09dGhpcy5faXNTaG93aW5nTm9EYXRhUm93KXtsZXQgbz10aGlzLl9ub0RhdGFSb3dPdXRsZXQudmlld0NvbnRhaW5lcjtlP28uY3JlYXRlRW1iZWRkZWRWaWV3KHQudGVtcGxhdGVSZWYpOm8uY2xlYXIoKSx0aGlzLl9pc1Nob3dpbmdOb0RhdGFSb3c9ZX19fX07aHMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8aHMpKHYoa28pLHYoVHQpLHYoTCksWmEoInJvbGUiKSx2KE5lLDgpLHYoX3QpLHYoVnQpLHYobmwpLHYoZ3gpLHYoWm4pLHYodXgsMTIpKX07aHMuXHUwMjc1Y21wPXooe3R5cGU6aHMsc2VsZWN0b3JzOltbImNkay10YWJsZSJdLFsidGFibGUiLCJjZGstdGFibGUiLCIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxlLG8pe2lmKHQmMSYmKGdvKG8sd2wsNSksZ28obyxQaSw1KSxnbyhvLHZsLDUpLGdvKG8sb2wsNSksZ28obyxpbCw1KSksdCYyKXtsZXQgaTtIdChpPUZ0KCkpJiYoZS5fbm9EYXRhUm93PWkuZmlyc3QpLEh0KGk9RnQoKSkmJihlLl9jb250ZW50Q29sdW1uRGVmcz1pKSxIdChpPUZ0KCkpJiYoZS5fY29udGVudFJvd0RlZnM9aSksSHQoaT1GdCgpKSYmKGUuX2NvbnRlbnRIZWFkZXJSb3dEZWZzPWkpLEh0KGk9RnQoKSkmJihlLl9jb250ZW50Rm9vdGVyUm93RGVmcz1pKX19LHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHBlKF9jLDcpLHBlKENjLDcpLHBlKE1jLDcpLHBlKGJjLDcpKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLl9yb3dPdXRsZXQ9by5maXJzdCksSHQobz1GdCgpKSYmKGUuX2hlYWRlclJvd091dGxldD1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5fZm9vdGVyUm93T3V0bGV0PW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLl9ub0RhdGFSb3dPdXRsZXQ9by5maXJzdCl9fSxob3N0QXR0cnM6WzEsImNkay10YWJsZSJdLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZtZSgiY2RrLXRhYmxlLWZpeGVkLWxheW91dCIsZS5maXhlZExheW91dCl9LGlucHV0czp7dHJhY2tCeToidHJhY2tCeSIsZGF0YVNvdXJjZToiZGF0YVNvdXJjZSIsbXVsdGlUZW1wbGF0ZURhdGFSb3dzOiJtdWx0aVRlbXBsYXRlRGF0YVJvd3MiLGZpeGVkTGF5b3V0OiJmaXhlZExheW91dCJ9LG91dHB1dHM6e2NvbnRlbnRDaGFuZ2VkOiJjb250ZW50Q2hhbmdlZCJ9LGV4cG9ydEFzOlsiY2RrVGFibGUiXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOk9jLHVzZUV4aXN0aW5nOmhzfSx7cHJvdmlkZTpubCx1c2VDbGFzczpKeX0se3Byb3ZpZGU6Z3gsdXNlQ2xhc3M6X219LHtwcm92aWRlOnV4LHVzZVZhbHVlOm51bGx9XSldLG5nQ29udGVudFNlbGVjdG9yczpXRHQsZGVjbHM6Nix2YXJzOjAsY29uc3RzOltbImhlYWRlclJvd091dGxldCIsIiJdLFsicm93T3V0bGV0IiwiIl0sWyJub0RhdGFSb3dPdXRsZXQiLCIiXSxbImZvb3RlclJvd091dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKEdEdCksWW4oMCksWW4oMSwxKSxNbygyLDApLE1vKDMsMSksTW8oNCwyKSxNbyg1LDMpKX0sZGlyZWN0aXZlczpbQ2MsX2MsYmMsTWNdLHN0eWxlczpbYC5jZGstdGFibGUtZml4ZWQtbGF5b3V0e3RhYmxlLWxheW91dDpmaXhlZH0KYF0sZW5jYXBzdWxhdGlvbjoyfSk7aHMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTprb30se3R5cGU6VHR9LHt0eXBlOkx9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsicm9sZSJdfV19LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOlZ0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltubF19XX0se3R5cGU6X20sZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltneF19XX0se3R5cGU6Wm59LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpZb30se3R5cGU6TixhcmdzOlt1eF19XX1dO2hzLnByb3BEZWNvcmF0b3JzPXt0cmFja0J5Olt7dHlwZTpkfV0sZGF0YVNvdXJjZTpbe3R5cGU6ZH1dLG11bHRpVGVtcGxhdGVEYXRhUm93czpbe3R5cGU6ZH1dLGZpeGVkTGF5b3V0Olt7dHlwZTpkfV0sY29udGVudENoYW5nZWQ6W3t0eXBlOkJ9XSxfcm93T3V0bGV0Olt7dHlwZTpJdCxhcmdzOltfYyx7c3RhdGljOiEwfV19XSxfaGVhZGVyUm93T3V0bGV0Olt7dHlwZTpJdCxhcmdzOltDYyx7c3RhdGljOiEwfV19XSxfZm9vdGVyUm93T3V0bGV0Olt7dHlwZTpJdCxhcmdzOltNYyx7c3RhdGljOiEwfV19XSxfbm9EYXRhUm93T3V0bGV0Olt7dHlwZTpJdCxhcmdzOltiYyx7c3RhdGljOiEwfV19XSxfY29udGVudENvbHVtbkRlZnM6W3t0eXBlOmxvLGFyZ3M6W1BpLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRSb3dEZWZzOlt7dHlwZTpsbyxhcmdzOlt2bCx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50SGVhZGVyUm93RGVmczpbe3R5cGU6bG8sYXJnczpbb2wse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEZvb3RlclJvd0RlZnM6W3t0eXBlOmxvLGFyZ3M6W2lsLHtkZXNjZW5kYW50czohMH1dfV0sX25vRGF0YVJvdzpbe3R5cGU6S28sYXJnczpbd2xdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhocyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImNkay10YWJsZSwgdGFibGVbY2RrLXRhYmxlXSIsZXhwb3J0QXM6ImNka1RhYmxlIix0ZW1wbGF0ZTokWSxob3N0OntjbGFzczoiY2RrLXRhYmxlIiwiW2NsYXNzLmNkay10YWJsZS1maXhlZC1sYXlvdXRdIjoiZml4ZWRMYXlvdXQifSxlbmNhcHN1bGF0aW9uOkplLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnR0LkRlZmF1bHQscHJvdmlkZXJzOlt7cHJvdmlkZTpPYyx1c2VFeGlzdGluZzpoc30se3Byb3ZpZGU6bmwsdXNlQ2xhc3M6Snl9LHtwcm92aWRlOmd4LHVzZUNsYXNzOl9tfSx7cHJvdmlkZTp1eCx1c2VWYWx1ZTpudWxsfV0sc3R5bGVzOltgLmNkay10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfQpgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6a299LHt0eXBlOlR0fSx7dHlwZTpMfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6bGksYXJnczpbInJvbGUiXX1dfSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpWdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbbmxdfV19LHt0eXBlOl9tLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbZ3hdfV19LHt0eXBlOlpufSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6WW99LHt0eXBlOk4sYXJnczpbdXhdfV19XX0se2NvbnRlbnRDaGFuZ2VkOlt7dHlwZTpCfV0sdHJhY2tCeTpbe3R5cGU6ZH1dLGRhdGFTb3VyY2U6W3t0eXBlOmR9XSxtdWx0aVRlbXBsYXRlRGF0YVJvd3M6W3t0eXBlOmR9XSxmaXhlZExheW91dDpbe3R5cGU6ZH1dLF9yb3dPdXRsZXQ6W3t0eXBlOkl0LGFyZ3M6W19jLHtzdGF0aWM6ITB9XX1dLF9oZWFkZXJSb3dPdXRsZXQ6W3t0eXBlOkl0LGFyZ3M6W0NjLHtzdGF0aWM6ITB9XX1dLF9mb290ZXJSb3dPdXRsZXQ6W3t0eXBlOkl0LGFyZ3M6W01jLHtzdGF0aWM6ITB9XX1dLF9ub0RhdGFSb3dPdXRsZXQ6W3t0eXBlOkl0LGFyZ3M6W2JjLHtzdGF0aWM6ITB9XX1dLF9jb250ZW50Q29sdW1uRGVmczpbe3R5cGU6bG8sYXJnczpbUGkse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudFJvd0RlZnM6W3t0eXBlOmxvLGFyZ3M6W3ZsLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRIZWFkZXJSb3dEZWZzOlt7dHlwZTpsbyxhcmdzOltvbCx7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50Rm9vdGVyUm93RGVmczpbe3R5cGU6bG8sYXJnczpbaWwse2Rlc2NlbmRhbnRzOiEwfV19XSxfbm9EYXRhUm93Olt7dHlwZTpLbyxhcmdzOlt3bF19XX0pfSkoKTtmdW5jdGlvbiBKeihuLHQpe3JldHVybiBuLmNvbmNhdChBcnJheS5mcm9tKHQpKX12YXIgTWQ9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl90YWJsZT10LHRoaXMuX29wdGlvbnM9ZSx0aGlzLmp1c3RpZnk9InN0YXJ0Iix0aGlzLl9vcHRpb25zPWV8fHt9fWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fbmFtZT10LHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCl9bmdPbkluaXQoKXtpZih0aGlzLl9zeW5jQ29sdW1uRGVmTmFtZSgpLHRoaXMuaGVhZGVyVGV4dD09PXZvaWQgMCYmKHRoaXMuaGVhZGVyVGV4dD10aGlzLl9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpKSx0aGlzLmRhdGFBY2Nlc3Nvcnx8KHRoaXMuZGF0YUFjY2Vzc29yPXRoaXMuX29wdGlvbnMuZGVmYXVsdERhdGFBY2Nlc3Nvcnx8KCh0LGUpPT50W2VdKSksdGhpcy5fdGFibGUpdGhpcy5jb2x1bW5EZWYuY2VsbD10aGlzLmNlbGwsdGhpcy5jb2x1bW5EZWYuaGVhZGVyQ2VsbD10aGlzLmhlYWRlckNlbGwsdGhpcy5fdGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtlbHNlIGlmKHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpdGhyb3cgb0l0KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl90YWJsZSYmdGhpcy5fdGFibGUucmVtb3ZlQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKX1fY3JlYXRlRGVmYXVsdEhlYWRlclRleHQoKXtsZXQgdD10aGlzLm5hbWU7aWYoIXQmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBpSXQoKTtyZXR1cm4gdGhpcy5fb3B0aW9ucyYmdGhpcy5fb3B0aW9ucy5kZWZhdWx0SGVhZGVyVGV4dFRyYW5zZm9ybT90aGlzLl9vcHRpb25zLmRlZmF1bHRIZWFkZXJUZXh0VHJhbnNmb3JtKHQpOnRbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfV9zeW5jQ29sdW1uRGVmTmFtZSgpe3RoaXMuY29sdW1uRGVmJiYodGhpcy5jb2x1bW5EZWYubmFtZT10aGlzLm5hbWUpfX07TWQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TWQpKHYoaHMsOCksdihKWSw4KSl9O01kLlx1MDI3NWNtcD16KHt0eXBlOk1kLHNlbGVjdG9yczpbWyJjZGstdGV4dC1jb2x1bW4iXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYocGUoUGksNykscGUoR3IsNykscGUoV3IsNykpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuY29sdW1uRGVmPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLmNlbGw9by5maXJzdCksSHQobz1GdCgpKSYmKGUuaGVhZGVyQ2VsbD1vLmZpcnN0KX19LGlucHV0czp7anVzdGlmeToianVzdGlmeSIsbmFtZToibmFtZSIsaGVhZGVyVGV4dDoiaGVhZGVyVGV4dCIsZGF0YUFjY2Vzc29yOiJkYXRhQWNjZXNzb3IifSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1siY2RrQ29sdW1uRGVmIiwiIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsImNka0hlYWRlckNlbGxEZWYiXSxbImNkay1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJjZGtDZWxsRGVmIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiXSxbImNkay1jZWxsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRW4oMCwwKSxrKDEscUR0LDIsMywidGgiLDEpLGsoMixaRHQsMiwzLCJ0ZCIsMiksa24oKSl9LGRpcmVjdGl2ZXM6W1BpLFdyLEdyLGdkLHVkXSxlbmNhcHN1bGF0aW9uOjJ9KTtNZC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmhzLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbSlldfV19XTtNZC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6ZH1dLGhlYWRlclRleHQ6W3t0eXBlOmR9XSxkYXRhQWNjZXNzb3I6W3t0eXBlOmR9XSxqdXN0aWZ5Olt7dHlwZTpkfV0sY29sdW1uRGVmOlt7dHlwZTpJdCxhcmdzOltQaSx7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTpJdCxhcmdzOltHcix7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTpJdCxhcmdzOltXcix7c3RhdGljOiEwfV19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE1kLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiY2RrLXRleHQtY29sdW1uIix0ZW1wbGF0ZTpgCiAgICA8bmctY29udGFpbmVyIGNka0NvbHVtbkRlZj4KICAgICAgPHRoIGNkay1oZWFkZXItY2VsbCAqY2RrSGVhZGVyQ2VsbERlZiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPgogICAgICAgIHt7aGVhZGVyVGV4dH19CiAgICAgIDwvdGg+CiAgICAgIDx0ZCBjZGstY2VsbCAqY2RrQ2VsbERlZj0ibGV0IGRhdGEiIFtzdHlsZS50ZXh0LWFsaWduXT0ianVzdGlmeSI+CiAgICAgICAge3tkYXRhQWNjZXNzb3IoZGF0YSwgbmFtZSl9fQogICAgICA8L3RkPgogICAgPC9uZy1jb250YWluZXI+CiAgYCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnR0LkRlZmF1bHR9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOmhzLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbSlldfV19XX0se2p1c3RpZnk6W3t0eXBlOmR9XSxuYW1lOlt7dHlwZTpkfV0saGVhZGVyVGV4dDpbe3R5cGU6ZH1dLGRhdGFBY2Nlc3Nvcjpbe3R5cGU6ZH1dLGNvbHVtbkRlZjpbe3R5cGU6SXQsYXJnczpbUGkse3N0YXRpYzohMH1dfV0sY2VsbDpbe3R5cGU6SXQsYXJnczpbR3Ise3N0YXRpYzohMH1dfV0saGVhZGVyQ2VsbDpbe3R5cGU6SXQsYXJnczpbV3Ise3N0YXRpYzohMH1dfV19KX0pKCk7dmFyIEJsdD1baHMsdmwsR3IscnIsV3IseGwsUGksdWQsQ2QsZ2QsTHUsaGQsb2wsX2QsaWwsX2MsQ2MsTWMsTWQsd2wsQ08sYmNdLEJ1PWNsYXNze307QnUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8QnUpfTtCdS5cdTAyNzVtb2Q9cSh7dHlwZTpCdX0pO0J1Llx1MDI3NWluaj1XKHtpbXBvcnRzOltbemldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhCdSxbe3R5cGU6WixhcmdzOlt7ZXhwb3J0czpCbHQsZGVjbGFyYXRpb25zOkJsdCxpbXBvcnRzOlt6aV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoQnUse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltocyx2bCxHcixycixXcix4bCxQaSx1ZCxDZCxnZCxMdSxoZCxvbCxfZCxpbCxfYyxDYyxNYyxNZCx3bCxDTyxiY119LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bemldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2hzLHZsLEdyLHJyLFdyLHhsLFBpLHVkLENkLGdkLEx1LGhkLG9sLF9kLGlsLF9jLENjLE1jLE1kLHdsLENPLGJjXX19KX0pKCk7dmFyIHJJdD1bW1siY2FwdGlvbiJdXSxbWyJjb2xncm91cCJdLFsiY29sIl1dXSxzSXQ9WyJjYXB0aW9uIiwiY29sZ3JvdXAsIGNvbCJdO2Z1bmN0aW9uIGxJdChuLHQpe2lmKG4mMSYmKHUoMCwidGgiLDMpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoKTtxZSgidGV4dC1hbGlnbiIsZS5qdXN0aWZ5KSx4KDEpLGxlKCIgIixlLmhlYWRlclRleHQsIiAiKX19ZnVuY3Rpb24gY0l0KG4sdCl7aWYobiYxJiYodSgwLCJ0ZCIsNCksVCgxKSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKCk7cWUoInRleHQtYWxpZ24iLG8uanVzdGlmeSkseCgxKSxsZSgiICIsby5kYXRhQWNjZXNzb3IoZSxvLm5hbWUpLCIgIil9fXZhciBNTz1jbGFzc3t9O01PLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE1PKX07TU8uXHUwMjc1ZGlyPXZ0KHt0eXBlOk1PLHNlbGVjdG9yczpbWyJtYXQtdGFibGUiLCJyZWN5Y2xlUm93cyIsIiJdLFsidGFibGUiLCJtYXQtdGFibGUiLCIiLCJyZWN5Y2xlUm93cyIsIiJdXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOm5sLHVzZUNsYXNzOnhwfV0pXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhNTyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGVbcmVjeWNsZVJvd3NdLCB0YWJsZVttYXQtdGFibGVdW3JlY3ljbGVSb3dzXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpubCx1c2VDbGFzczp4cH1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgT2Y9Y2xhc3MgZXh0ZW5kcyBoc3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zdGlja3lDc3NDbGFzcz0ibWF0LXRhYmxlLXN0aWNreSIsdGhpcy5uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50PSExfX07T2YuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihPZikpKShlfHxPZil9fSgpO09mLlx1MDI3NWNtcD16KHt0eXBlOk9mLHNlbGVjdG9yczpbWyJtYXQtdGFibGUiXSxbInRhYmxlIiwibWF0LXRhYmxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRhYmxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJtYXQtdGFibGUtZml4ZWQtbGF5b3V0IixlLmZpeGVkTGF5b3V0KX0sZXhwb3J0QXM6WyJtYXRUYWJsZSJdLGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6bmwsdXNlQ2xhc3M6Snl9LHtwcm92aWRlOmhzLHVzZUV4aXN0aW5nOk9mfSx7cHJvdmlkZTpPYyx1c2VFeGlzdGluZzpPZn0se3Byb3ZpZGU6Z3gsdXNlQ2xhc3M6X219LHtwcm92aWRlOnV4LHVzZVZhbHVlOm51bGx9XSksYWVdLG5nQ29udGVudFNlbGVjdG9yczpzSXQsZGVjbHM6Nix2YXJzOjAsY29uc3RzOltbImhlYWRlclJvd091dGxldCIsIiJdLFsicm93T3V0bGV0IiwiIl0sWyJub0RhdGFSb3dPdXRsZXQiLCIiXSxbImZvb3RlclJvd091dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHlvKHJJdCksWW4oMCksWW4oMSwxKSxNbygyLDApLE1vKDMsMSksTW8oNCwyKSxNbyg1LDMpKX0sZGlyZWN0aXZlczpbQ2MsX2MsYmMsTWNdLHN0eWxlczpbYG1hdC10YWJsZXtkaXNwbGF5OmJsb2NrfW1hdC1oZWFkZXItcm93e21pbi1oZWlnaHQ6NTZweH1tYXQtcm93LG1hdC1mb290ZXItcm93e21pbi1oZWlnaHQ6NDhweH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93e2Rpc3BsYXk6ZmxleDtib3JkZXItd2lkdGg6MDtib3JkZXItYm90dG9tLXdpZHRoOjFweDtib3JkZXItc3R5bGU6c29saWQ7YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveH1tYXQtcm93OjphZnRlcixtYXQtaGVhZGVyLXJvdzo6YWZ0ZXIsbWF0LWZvb3Rlci1yb3c6OmFmdGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi1oZWlnaHQ6aW5oZXJpdDtjb250ZW50OiIifW1hdC1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGV7cGFkZGluZy1sZWZ0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjI0cHh9bWF0LWNlbGw6bGFzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLXJpZ2h0OjI0cHh9W2Rpcj1ydGxdIG1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIG1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKXtwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjI0cHh9bWF0LWNlbGwsbWF0LWhlYWRlci1jZWxsLG1hdC1mb290ZXItY2VsbHtmbGV4OjE7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW47d29yZC13cmFwOmJyZWFrLXdvcmQ7bWluLWhlaWdodDppbmhlcml0fXRhYmxlLm1hdC10YWJsZXtib3JkZXItc3BhY2luZzowfXRyLm1hdC1oZWFkZXItcm93e2hlaWdodDo1NnB4fXRyLm1hdC1yb3csdHIubWF0LWZvb3Rlci1yb3d7aGVpZ2h0OjQ4cHh9dGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxse3RleHQtYWxpZ246cmlnaHR9dGgubWF0LWhlYWRlci1jZWxsLHRkLm1hdC1jZWxsLHRkLm1hdC1mb290ZXItY2VsbHtwYWRkaW5nOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZH10aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fXRoLm1hdC1oZWFkZXItY2VsbDpsYXN0LW9mLXR5cGUsdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSB0aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fS5tYXQtdGFibGUtc3RpY2t5e3Bvc2l0aW9uOi13ZWJraXQtc3RpY2t5ICFpbXBvcnRhbnQ7cG9zaXRpb246c3RpY2t5ICFpbXBvcnRhbnR9Lm1hdC10YWJsZS1maXhlZC1sYXlvdXR7dGFibGUtbGF5b3V0OmZpeGVkfQpgXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoT2YsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtdGFibGUsIHRhYmxlW21hdC10YWJsZV0iLGV4cG9ydEFzOiJtYXRUYWJsZSIsdGVtcGxhdGU6JFksaG9zdDp7Y2xhc3M6Im1hdC10YWJsZSIsIltjbGFzcy5tYXQtdGFibGUtZml4ZWQtbGF5b3V0XSI6ImZpeGVkTGF5b3V0In0scHJvdmlkZXJzOlt7cHJvdmlkZTpubCx1c2VDbGFzczpKeX0se3Byb3ZpZGU6aHMsdXNlRXhpc3Rpbmc6T2Z9LHtwcm92aWRlOk9jLHVzZUV4aXN0aW5nOk9mfSx7cHJvdmlkZTpneCx1c2VDbGFzczpfbX0se3Byb3ZpZGU6dXgsdXNlVmFsdWU6bnVsbH1dLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuRGVmYXVsdCxzdHlsZXM6W2BtYXQtdGFibGV7ZGlzcGxheTpibG9ja31tYXQtaGVhZGVyLXJvd3ttaW4taGVpZ2h0OjU2cHh9bWF0LXJvdyxtYXQtZm9vdGVyLXJvd3ttaW4taGVpZ2h0OjQ4cHh9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvd3tkaXNwbGF5OmZsZXg7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3h9bWF0LXJvdzo6YWZ0ZXIsbWF0LWhlYWRlci1yb3c6OmFmdGVyLG1hdC1mb290ZXItcm93OjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazttaW4taGVpZ2h0OmluaGVyaXQ7Y29udGVudDoiIn1tYXQtY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fW1hdC1jZWxsOmxhc3Qtb2YtdHlwZSxtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fW1hdC1jZWxsLG1hdC1oZWFkZXItY2VsbCxtYXQtZm9vdGVyLWNlbGx7ZmxleDoxO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3dvcmQtd3JhcDpicmVhay13b3JkO21pbi1oZWlnaHQ6aW5oZXJpdH10YWJsZS5tYXQtdGFibGV7Ym9yZGVyLXNwYWNpbmc6MH10ci5tYXQtaGVhZGVyLXJvd3toZWlnaHQ6NTZweH10ci5tYXQtcm93LHRyLm1hdC1mb290ZXItcm93e2hlaWdodDo0OHB4fXRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOmxlZnR9W2Rpcj1ydGxdIHRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOnJpZ2h0fXRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7cGFkZGluZzowO2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1ib3R0b20tc3R5bGU6c29saWR9dGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsdGQubWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZXtwYWRkaW5nLWxlZnQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MjRweH10aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBle3BhZGRpbmctcmlnaHQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MjRweH0ubWF0LXRhYmxlLXN0aWNreXtwb3NpdGlvbjotd2Via2l0LXN0aWNreSAhaW1wb3J0YW50O3Bvc2l0aW9uOnN0aWNreSAhaW1wb3J0YW50fS5tYXQtdGFibGUtZml4ZWQtbGF5b3V0e3RhYmxlLWxheW91dDpmaXhlZH0KYF19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBiZD1jbGFzcyBleHRlbmRzIEdye307YmQuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihiZCkpKShlfHxiZCl9fSgpO2JkLlx1MDI3NWRpcj12dCh7dHlwZTpiZCxzZWxlY3RvcnM6W1siIiwibWF0Q2VsbERlZiIsIiJdXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOkdyLHVzZUV4aXN0aW5nOmJkfV0pLGFlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhiZCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0Q2VsbERlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6R3IsdXNlRXhpc3Rpbmc6YmR9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIE9kPWNsYXNzIGV4dGVuZHMgV3J7fTtPZC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKE9kKSkpKGV8fE9kKX19KCk7T2QuXHUwMjc1ZGlyPXZ0KHt0eXBlOk9kLHNlbGVjdG9yczpbWyIiLCJtYXRIZWFkZXJDZWxsRGVmIiwiIl1dLGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6V3IsdXNlRXhpc3Rpbmc6T2R9XSksYWVdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE9kLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IlttYXRIZWFkZXJDZWxsRGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpXcix1c2VFeGlzdGluZzpPZH1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgVnU9Y2xhc3MgZXh0ZW5kcyB4bHt9O1Z1Llx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4oVnUpKSkoZXx8VnUpfX0oKTtWdS5cdTAyNzVkaXI9dnQoe3R5cGU6VnUsc2VsZWN0b3JzOltbIiIsIm1hdEZvb3RlckNlbGxEZWYiLCIiXV0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTp4bCx1c2VFeGlzdGluZzpWdX1dKSxhZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVnUsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdEZvb3RlckNlbGxEZWZdIixwcm92aWRlcnM6W3twcm92aWRlOnhsLHVzZUV4aXN0aW5nOlZ1fV19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBQYz1jbGFzcyBleHRlbmRzIFBpe2dldCBuYW1lKCl7cmV0dXJuIHRoaXMuX25hbWV9c2V0IG5hbWUodCl7dGhpcy5fc2V0TmFtZUlucHV0KHQpfV91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKXtzdXBlci5fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCksdGhpcy5fY29sdW1uQ3NzQ2xhc3NOYW1lLnB1c2goYG1hdC1jb2x1bW4tJHt0aGlzLmNzc0NsYXNzRnJpZW5kbHlOYW1lfWApfX07UGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihQYykpKShlfHxQYyl9fSgpO1BjLlx1MDI3NWRpcj12dCh7dHlwZTpQYyxzZWxlY3RvcnM6W1siIiwibWF0Q29sdW1uRGVmIiwiIl1dLGlucHV0czp7c3RpY2t5OiJzdGlja3kiLG5hbWU6WyJtYXRDb2x1bW5EZWYiLCJuYW1lIl19LGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6UGksdXNlRXhpc3Rpbmc6UGN9LHtwcm92aWRlOiJNQVRfU09SVF9IRUFERVJfQ09MVU1OX0RFRiIsdXNlRXhpc3Rpbmc6UGN9XSksYWVdfSk7UGMucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmQsYXJnczpbIm1hdENvbHVtbkRlZiJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhQYyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0Q29sdW1uRGVmXSIsaW5wdXRzOlsic3RpY2t5Il0scHJvdmlkZXJzOlt7cHJvdmlkZTpQaSx1c2VFeGlzdGluZzpQY30se3Byb3ZpZGU6Ik1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIix1c2VFeGlzdGluZzpQY31dfV19XSxudWxsLHtuYW1lOlt7dHlwZTpkLGFyZ3M6WyJtYXRDb2x1bW5EZWYiXX1dfSl9KSgpO3ZhciB2MD1jbGFzcyBleHRlbmRzIGdke307djAuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1Gbih2MCkpKShlfHx2MCl9fSgpO3YwLlx1MDI3NWRpcj12dCh7dHlwZTp2MCxzZWxlY3RvcnM6W1sibWF0LWhlYWRlci1jZWxsIl0sWyJ0aCIsIm1hdC1oZWFkZXItY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJtYXQtaGVhZGVyLWNlbGwiXSxmZWF0dXJlczpbYWVdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHYwLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Im1hdC1oZWFkZXItY2VsbCwgdGhbbWF0LWhlYWRlci1jZWxsXSIsaG9zdDp7Y2xhc3M6Im1hdC1oZWFkZXItY2VsbCIscm9sZToiY29sdW1uaGVhZGVyIn19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBaTT1jbGFzcyBleHRlbmRzIEx1e307Wk0uXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihaTSkpKShlfHxaTSl9fSgpO1pNLlx1MDI3NWRpcj12dCh7dHlwZTpaTSxzZWxlY3RvcnM6W1sibWF0LWZvb3Rlci1jZWxsIl0sWyJ0ZCIsIm1hdC1mb290ZXItY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JpZGNlbGwiLDEsIm1hdC1mb290ZXItY2VsbCJdLGZlYXR1cmVzOlthZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWk0sW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWZvb3Rlci1jZWxsLCB0ZFttYXQtZm9vdGVyLWNlbGxdIixob3N0OntjbGFzczoibWF0LWZvb3Rlci1jZWxsIixyb2xlOiJncmlkY2VsbCJ9fV19XSxudWxsLG51bGwpfSkoKTt2YXIgdzA9Y2xhc3MgZXh0ZW5kcyB1ZHt9O3cwLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4odzApKSkoZXx8dzApfX0oKTt3MC5cdTAyNzVkaXI9dnQoe3R5cGU6dzAsc2VsZWN0b3JzOltbIm1hdC1jZWxsIl0sWyJ0ZCIsIm1hdC1jZWxsIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJncmlkY2VsbCIsMSwibWF0LWNlbGwiXSxmZWF0dXJlczpbYWVdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHcwLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6Im1hdC1jZWxsLCB0ZFttYXQtY2VsbF0iLGhvc3Q6e2NsYXNzOiJtYXQtY2VsbCIscm9sZToiZ3JpZGNlbGwifX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIGp1PWNsYXNzIGV4dGVuZHMgb2x7fTtqdS5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKGp1KSkpKGV8fGp1KX19KCk7anUuXHUwMjc1ZGlyPXZ0KHt0eXBlOmp1LHNlbGVjdG9yczpbWyIiLCJtYXRIZWFkZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsibWF0SGVhZGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbIm1hdEhlYWRlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbVGUoW3twcm92aWRlOm9sLHVzZUV4aXN0aW5nOmp1fV0pLGFlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhqdSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0SGVhZGVyUm93RGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTpvbCx1c2VFeGlzdGluZzpqdX1dLGlucHV0czpbImNvbHVtbnM6IG1hdEhlYWRlclJvd0RlZiIsInN0aWNreTogbWF0SGVhZGVyUm93RGVmU3RpY2t5Il19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBVdT1jbGFzcyBleHRlbmRzIGlse307VXUuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihVdSkpKShlfHxVdSl9fSgpO1V1Llx1MDI3NWRpcj12dCh7dHlwZTpVdSxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdEZvb3RlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJtYXRGb290ZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTppbCx1c2VFeGlzdGluZzpVdX1dKSxhZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVXUsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdEZvb3RlclJvd0RlZl0iLHByb3ZpZGVyczpbe3Byb3ZpZGU6aWwsdXNlRXhpc3Rpbmc6VXV9XSxpbnB1dHM6WyJjb2x1bW5zOiBtYXRGb290ZXJSb3dEZWYiLCJzdGlja3k6IG1hdEZvb3RlclJvd0RlZlN0aWNreSJdfV19XSxudWxsLG51bGwpfSkoKTt2YXIgWXU9Y2xhc3MgZXh0ZW5kcyB2bHt9O1l1Llx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4oWXUpKSkoZXx8WXUpfX0oKTtZdS5cdTAyNzVkaXI9dnQoe3R5cGU6WXUsc2VsZWN0b3JzOltbIiIsIm1hdFJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJtYXRSb3dEZWZDb2x1bW5zIiwiY29sdW1ucyJdLHdoZW46WyJtYXRSb3dEZWZXaGVuIiwid2hlbiJdfSxmZWF0dXJlczpbVGUoW3twcm92aWRlOnZsLHVzZUV4aXN0aW5nOll1fV0pLGFlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhZdSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0Um93RGVmXSIscHJvdmlkZXJzOlt7cHJvdmlkZTp2bCx1c2VFeGlzdGluZzpZdX1dLGlucHV0czpbImNvbHVtbnM6IG1hdFJvd0RlZkNvbHVtbnMiLCJ3aGVuOiBtYXRSb3dEZWZXaGVuIl19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBHdT1jbGFzcyBleHRlbmRzIGhke307R3UuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihHdSkpKShlfHxHdSl9fSgpO0d1Llx1MDI3NWNtcD16KHt0eXBlOkd1LHNlbGVjdG9yczpbWyJtYXQtaGVhZGVyLXJvdyJdLFsidHIiLCJtYXQtaGVhZGVyLXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJtYXQtaGVhZGVyLXJvdyJdLGV4cG9ydEFzOlsibWF0SGVhZGVyUm93Il0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpoZCx1c2VFeGlzdGluZzpHdX1dKSxhZV0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJk1vKDAsMCl9LGRpcmVjdGl2ZXM6W3JyXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoR3UsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtaGVhZGVyLXJvdywgdHJbbWF0LWhlYWRlci1yb3ddIix0ZW1wbGF0ZTppMSxob3N0OntjbGFzczoibWF0LWhlYWRlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SmUuTm9uZSxleHBvcnRBczoibWF0SGVhZGVyUm93Iixwcm92aWRlcnM6W3twcm92aWRlOmhkLHVzZUV4aXN0aW5nOkd1fV19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBXdT1jbGFzcyBleHRlbmRzIF9ke307V3UuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihXdSkpKShlfHxXdSl9fSgpO1d1Llx1MDI3NWNtcD16KHt0eXBlOld1LHNlbGVjdG9yczpbWyJtYXQtZm9vdGVyLXJvdyJdLFsidHIiLCJtYXQtZm9vdGVyLXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJtYXQtZm9vdGVyLXJvdyJdLGV4cG9ydEFzOlsibWF0Rm9vdGVyUm93Il0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpfZCx1c2VFeGlzdGluZzpXdX1dKSxhZV0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJk1vKDAsMCl9LGRpcmVjdGl2ZXM6W3JyXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoV3UsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtZm9vdGVyLXJvdywgdHJbbWF0LWZvb3Rlci1yb3ddIix0ZW1wbGF0ZTppMSxob3N0OntjbGFzczoibWF0LWZvb3Rlci1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SmUuTm9uZSxleHBvcnRBczoibWF0Rm9vdGVyUm93Iixwcm92aWRlcnM6W3twcm92aWRlOl9kLHVzZUV4aXN0aW5nOld1fV19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBxdT1jbGFzcyBleHRlbmRzIENke307cXUuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihxdSkpKShlfHxxdSl9fSgpO3F1Llx1MDI3NWNtcD16KHt0eXBlOnF1LHNlbGVjdG9yczpbWyJtYXQtcm93Il0sWyJ0ciIsIm1hdC1yb3ciLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsInJvdyIsMSwibWF0LXJvdyJdLGV4cG9ydEFzOlsibWF0Um93Il0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpDZCx1c2VFeGlzdGluZzpxdX1dKSxhZV0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJk1vKDAsMCl9LGRpcmVjdGl2ZXM6W3JyXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocXUsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtcm93LCB0clttYXQtcm93XSIsdGVtcGxhdGU6aTEsaG9zdDp7Y2xhc3M6Im1hdC1yb3ciLHJvbGU6InJvdyJ9LGNoYW5nZURldGVjdGlvbjp0dC5EZWZhdWx0LGVuY2Fwc3VsYXRpb246SmUuTm9uZSxleHBvcnRBczoibWF0Um93Iixwcm92aWRlcnM6W3twcm92aWRlOkNkLHVzZUV4aXN0aW5nOnF1fV19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBadT1jbGFzcyBleHRlbmRzIHdse307WnUuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihadSkpKShlfHxadSl9fSgpO1p1Llx1MDI3NWRpcj12dCh7dHlwZTpadSxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXROb0RhdGFSb3ciLCIiXV0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTp3bCx1c2VFeGlzdGluZzpadX1dKSxhZV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWnUsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoibmctdGVtcGxhdGVbbWF0Tm9EYXRhUm93XSIscHJvdmlkZXJzOlt7cHJvdmlkZTp3bCx1c2VFeGlzdGluZzpadX1dfV19XSxudWxsLG51bGwpfSkoKTt2YXIgWE09Y2xhc3MgZXh0ZW5kcyBNZHt9O1hNLlx1MDI3NWZhYz1mdW5jdGlvbigpe2xldCBuO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4obnx8KG49Rm4oWE0pKSkoZXx8WE0pfX0oKTtYTS5cdTAyNzVjbXA9eih7dHlwZTpYTSxzZWxlY3RvcnM6W1sibWF0LXRleHQtY29sdW1uIl1dLGZlYXR1cmVzOlthZV0sZGVjbHM6Myx2YXJzOjAsY29uc3RzOltbIm1hdENvbHVtbkRlZiIsIiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJtYXRIZWFkZXJDZWxsRGVmIl0sWyJtYXQtY2VsbCIsIiIsMywidGV4dC1hbGlnbiIsNCwibWF0Q2VsbERlZiJdLFsibWF0LWhlYWRlci1jZWxsIiwiIl0sWyJtYXQtY2VsbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEVuKDAsMCksaygxLGxJdCwyLDMsInRoIiwxKSxrKDIsY0l0LDIsMywidGQiLDIpLGtuKCkpfSxkaXJlY3RpdmVzOltQYyxPZCxiZCx2MCx3MF0sZW5jYXBzdWxhdGlvbjoyfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFhNLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWF0LXRleHQtY29sdW1uIix0ZW1wbGF0ZTpgCiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj4KICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbc3R5bGUudGV4dC1hbGlnbl09Imp1c3RpZnkiPgogICAgICAgIHt7aGVhZGVyVGV4dH19CiAgICAgIDwvdGg+CiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj0ibGV0IGRhdGEiIFtzdHlsZS50ZXh0LWFsaWduXT0ianVzdGlmeSI+CiAgICAgICAge3tkYXRhQWNjZXNzb3IoZGF0YSwgbmFtZSl9fQogICAgICA8L3RkPgogICAgPC9uZy1jb250YWluZXI+CiAgYCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsY2hhbmdlRGV0ZWN0aW9uOnR0LkRlZmF1bHR9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBWbHQ9W09mLE1PLE9kLGp1LFBjLGJkLFl1LFZ1LFV1LHYwLHcwLFpNLEd1LHF1LFd1LFp1LFhNXSxYdT1jbGFzc3t9O1h1Llx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFh1KX07WHUuXHUwMjc1bW9kPXEoe3R5cGU6WHV9KTtYdS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW0J1LER0XSxEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWHUsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0J1LER0XSxleHBvcnRzOltEdCxWbHRdLGRlY2xhcmF0aW9uczpWbHR9XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoWHUse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltPZixNTyxPZCxqdSxQYyxiZCxZdSxWdSxVdSx2MCx3MCxaTSxHdSxxdSxXdSxadSxYTV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bQnUsRHRdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0R0LE9mLE1PLE9kLGp1LFBjLGJkLFl1LFZ1LFV1LHYwLHcwLFpNLEd1LHF1LFd1LFp1LFhNXX19KX0pKCk7dmFyIG1JdD05MDA3MTk5MjU0NzQwOTkxLHRHPWNsYXNzIGV4dGVuZHMgQTN7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLl9yZW5kZXJEYXRhPW5ldyBHYShbXSksdGhpcy5fZmlsdGVyPW5ldyBHYSgiIiksdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcz1uZXcgSnQsdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbj1udWxsLHRoaXMuc29ydGluZ0RhdGFBY2Nlc3Nvcj0oZSxvKT0+e2xldCBpPWVbb107aWYodVUoaSkpe2xldCBhPU51bWJlcihpKTtyZXR1cm4gYTxtSXQ/YTppfXJldHVybiBpfSx0aGlzLnNvcnREYXRhPShlLG8pPT57bGV0IGk9by5hY3RpdmUsYT1vLmRpcmVjdGlvbjtyZXR1cm4haXx8YT09IiI/ZTplLnNvcnQoKHIscyk9PntsZXQgbD10aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IocixpKSxjPXRoaXMuc29ydGluZ0RhdGFBY2Nlc3NvcihzLGkpLG09dHlwZW9mIGwsZj10eXBlb2YgYzttIT09ZiYmKG09PT0ibnVtYmVyIiYmKGwrPSIiKSxmPT09Im51bWJlciImJihjKz0iIikpO2xldCBwPTA7cmV0dXJuIGwhPW51bGwmJmMhPW51bGw/bD5jP3A9MTpsPGMmJihwPS0xKTpsIT1udWxsP3A9MTpjIT1udWxsJiYocD0tMSkscCooYT09ImFzYyI/MTotMSl9KX0sdGhpcy5maWx0ZXJQcmVkaWNhdGU9KGUsbyk9PntsZXQgaT1PYmplY3Qua2V5cyhlKS5yZWR1Y2UoKHIscyk9PnIrZVtzXSsiXHUyNUVDIiwiIikudG9Mb3dlckNhc2UoKSxhPW8udHJpbSgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGkuaW5kZXhPZihhKSE9LTF9LHRoaXMuX2RhdGE9bmV3IEdhKHQpLHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGEudmFsdWV9c2V0IGRhdGEodCl7dGhpcy5fZGF0YS5uZXh0KHQpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb258fHRoaXMuX2ZpbHRlckRhdGEodCl9Z2V0IGZpbHRlcigpe3JldHVybiB0aGlzLl9maWx0ZXIudmFsdWV9c2V0IGZpbHRlcih0KXt0aGlzLl9maWx0ZXIubmV4dCh0KSx0aGlzLl9yZW5kZXJDaGFuZ2VzU3Vic2NyaXB0aW9ufHx0aGlzLl9maWx0ZXJEYXRhKHRoaXMuZGF0YSl9Z2V0IHNvcnQoKXtyZXR1cm4gdGhpcy5fc29ydH1zZXQgc29ydCh0KXt0aGlzLl9zb3J0PXQsdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl9Z2V0IHBhZ2luYXRvcigpe3JldHVybiB0aGlzLl9wYWdpbmF0b3J9c2V0IHBhZ2luYXRvcih0KXt0aGlzLl9wYWdpbmF0b3I9dCx0aGlzLl91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKX1fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl7dmFyIHQ7bGV0IGU9dGhpcy5fc29ydD95bih0aGlzLl9zb3J0LnNvcnRDaGFuZ2UsdGhpcy5fc29ydC5pbml0aWFsaXplZCk6ZG4obnVsbCksbz10aGlzLl9wYWdpbmF0b3I/eW4odGhpcy5fcGFnaW5hdG9yLnBhZ2UsdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcyx0aGlzLl9wYWdpbmF0b3IuaW5pdGlhbGl6ZWQpOmRuKG51bGwpLGk9dGhpcy5fZGF0YSxhPW9uKFtpLHRoaXMuX2ZpbHRlcl0pLnBpcGUoRygoW2xdKT0+dGhpcy5fZmlsdGVyRGF0YShsKSkpLHI9b24oW2EsZV0pLnBpcGUoRygoW2xdKT0+dGhpcy5fb3JkZXJEYXRhKGwpKSkscz1vbihbcixvXSkucGlwZShHKChbbF0pPT50aGlzLl9wYWdlRGF0YShsKSkpOyh0PXRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb24pPT09bnVsbHx8dD09PXZvaWQgMHx8dC51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249cy5zdWJzY3JpYmUobD0+dGhpcy5fcmVuZGVyRGF0YS5uZXh0KGwpKX1fZmlsdGVyRGF0YSh0KXtyZXR1cm4gdGhpcy5maWx0ZXJlZERhdGE9dGhpcy5maWx0ZXI9PW51bGx8fHRoaXMuZmlsdGVyPT09IiI/dDp0LmZpbHRlcihlPT50aGlzLmZpbHRlclByZWRpY2F0ZShlLHRoaXMuZmlsdGVyKSksdGhpcy5wYWdpbmF0b3ImJnRoaXMuX3VwZGF0ZVBhZ2luYXRvcih0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGgpLHRoaXMuZmlsdGVyZWREYXRhfV9vcmRlckRhdGEodCl7cmV0dXJuIHRoaXMuc29ydD90aGlzLnNvcnREYXRhKHQuc2xpY2UoKSx0aGlzLnNvcnQpOnR9X3BhZ2VEYXRhKHQpe2lmKCF0aGlzLnBhZ2luYXRvcilyZXR1cm4gdDtsZXQgZT10aGlzLnBhZ2luYXRvci5wYWdlSW5kZXgqdGhpcy5wYWdpbmF0b3IucGFnZVNpemU7cmV0dXJuIHQuc2xpY2UoZSxlK3RoaXMucGFnaW5hdG9yLnBhZ2VTaXplKX1fdXBkYXRlUGFnaW5hdG9yKHQpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntsZXQgZT10aGlzLnBhZ2luYXRvcjtpZighIWUmJihlLmxlbmd0aD10LGUucGFnZUluZGV4PjApKXtsZXQgbz1NYXRoLmNlaWwoZS5sZW5ndGgvZS5wYWdlU2l6ZSktMXx8MCxpPU1hdGgubWluKGUucGFnZUluZGV4LG8pO2khPT1lLnBhZ2VJbmRleCYmKGUucGFnZUluZGV4PWksdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcy5uZXh0KCkpfX0pfWNvbm5lY3QoKXtyZXR1cm4gdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbnx8dGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCksdGhpcy5fcmVuZGVyRGF0YX1kaXNjb25uZWN0KCl7dmFyIHQ7KHQ9dGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbik9PT1udWxsfHx0PT09dm9pZCAwfHx0LnVuc3Vic2NyaWJlKCksdGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbj1udWxsfX0sdDY9Y2xhc3MgZXh0ZW5kcyB0R3t9O3ZhciBmSXQ9WyJwYW5lbCJdO2Z1bmN0aW9uIHBJdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwwLDEpLFluKDIpLGgoKSksbiYyKXtsZXQgZT10LmlkLG89UygpO1AoImlkIixvLmlkKSgibmdDbGFzcyIsby5fY2xhc3NMaXN0KSxyZSgiYXJpYS1sYWJlbCIsby5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG8uX2dldFBhbmVsQXJpYUxhYmVsbGVkYnkoZSkpfX12YXIgZEl0PVsiKiJdLGdJdD0wLGVHPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zb3VyY2U9dCx0aGlzLm9wdGlvbj1lfX0sdUl0PXRsKGNsYXNze30pLHMyPW5ldyB5dCgibWF0LWF1dG9jb21wbGV0ZS1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmhJdH0pO2Z1bmN0aW9uIGhJdCgpe3JldHVybnthdXRvQWN0aXZlRmlyc3RPcHRpb246ITF9fXZhciBiTz1jbGFzcyBleHRlbmRzIHVJdHtjb25zdHJ1Y3Rvcih0LGUsbyxpKXtzdXBlcigpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1lLHRoaXMuX2FjdGl2ZU9wdGlvbkNoYW5nZXM9RW8uRU1QVFksdGhpcy5zaG93UGFuZWw9ITEsdGhpcy5faXNPcGVuPSExLHRoaXMuZGlzcGxheVdpdGg9bnVsbCx0aGlzLm9wdGlvblNlbGVjdGVkPW5ldyAkLHRoaXMub3BlbmVkPW5ldyAkLHRoaXMuY2xvc2VkPW5ldyAkLHRoaXMub3B0aW9uQWN0aXZhdGVkPW5ldyAkLHRoaXMuX2NsYXNzTGlzdD17fSx0aGlzLmlkPWBtYXQtYXV0b2NvbXBsZXRlLSR7Z0l0Kyt9YCx0aGlzLmluZXJ0R3JvdXBzPShpPT1udWxsP3ZvaWQgMDppLlNBRkFSSSl8fCExLHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbj0hIW8uYXV0b0FjdGl2ZUZpcnN0T3B0aW9ufWdldCBpc09wZW4oKXtyZXR1cm4gdGhpcy5faXNPcGVuJiZ0aGlzLnNob3dQYW5lbH1nZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbn1zZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKHQpe3RoaXMuX2F1dG9BY3RpdmVGaXJzdE9wdGlvbj1aZSh0KX1zZXQgY2xhc3NMaXN0KHQpe3QmJnQubGVuZ3RoP3RoaXMuX2NsYXNzTGlzdD1tYXQodCkucmVkdWNlKChlLG8pPT4oZVtvXT0hMCxlKSx7fSk6dGhpcy5fY2xhc3NMaXN0PXt9LHRoaXMuX3NldFZpc2liaWxpdHlDbGFzc2VzKHRoaXMuX2NsYXNzTGlzdCksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZT0iIn1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9rZXlNYW5hZ2VyPW5ldyBOMyh0aGlzLm9wdGlvbnMpLndpdGhXcmFwKCksdGhpcy5fYWN0aXZlT3B0aW9uQ2hhbmdlcz10aGlzLl9rZXlNYW5hZ2VyLmNoYW5nZS5zdWJzY3JpYmUodD0+e3RoaXMuaXNPcGVuJiZ0aGlzLm9wdGlvbkFjdGl2YXRlZC5lbWl0KHtzb3VyY2U6dGhpcyxvcHRpb246dGhpcy5vcHRpb25zLnRvQXJyYXkoKVt0XXx8bnVsbH0pfSksdGhpcy5fc2V0VmlzaWJpbGl0eSgpfW5nT25EZXN0cm95KCl7dGhpcy5fYWN0aXZlT3B0aW9uQ2hhbmdlcy51bnN1YnNjcmliZSgpfV9zZXRTY3JvbGxUb3AodCl7dGhpcy5wYW5lbCYmKHRoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A9dCl9X2dldFNjcm9sbFRvcCgpe3JldHVybiB0aGlzLnBhbmVsP3RoaXMucGFuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A6MH1fc2V0VmlzaWJpbGl0eSgpe3RoaXMuc2hvd1BhbmVsPSEhdGhpcy5vcHRpb25zLmxlbmd0aCx0aGlzLl9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0aGlzLl9jbGFzc0xpc3QpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfV9lbWl0U2VsZWN0RXZlbnQodCl7bGV0IGU9bmV3IGVHKHRoaXMsdCk7dGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KGUpfV9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KHQpe2lmKHRoaXMuYXJpYUxhYmVsKXJldHVybiBudWxsO2xldCBlPXQ/dCsiICI6IiI7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnk/ZSt0aGlzLmFyaWFMYWJlbGxlZGJ5OnR9X3NldFZpc2liaWxpdHlDbGFzc2VzKHQpe3RbdGhpcy5fdmlzaWJsZUNsYXNzXT10aGlzLnNob3dQYW5lbCx0W3RoaXMuX2hpZGRlbkNsYXNzXT0hdGhpcy5zaG93UGFuZWx9fTtiTy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxiTykodihUdCksdihMKSx2KHMyKSx2KFZ0KSl9O2JPLlx1MDI3NWRpcj12dCh7dHlwZTpiTyx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJihwZShrZSw3KSxwZShmSXQsNSkpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUudGVtcGxhdGU9by5maXJzdCksSHQobz1GdCgpKSYmKGUucGFuZWw9by5maXJzdCl9fSxpbnB1dHM6e2Rpc3BsYXlXaXRoOiJkaXNwbGF5V2l0aCIsYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiJhdXRvQWN0aXZlRmlyc3RPcHRpb24iLGNsYXNzTGlzdDpbImNsYXNzIiwiY2xhc3NMaXN0Il0sYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxwYW5lbFdpZHRoOiJwYW5lbFdpZHRoIn0sb3V0cHV0czp7b3B0aW9uU2VsZWN0ZWQ6Im9wdGlvblNlbGVjdGVkIixvcGVuZWQ6Im9wZW5lZCIsY2xvc2VkOiJjbG9zZWQiLG9wdGlvbkFjdGl2YXRlZDoib3B0aW9uQWN0aXZhdGVkIn0sZmVhdHVyZXM6W2FlXX0pO2JPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VHR9LHt0eXBlOkx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3MyXX1dfSx7dHlwZTpWdH1dO2JPLnByb3BEZWNvcmF0b3JzPXt0ZW1wbGF0ZTpbe3R5cGU6SXQsYXJnczpba2Use3N0YXRpYzohMH1dfV0scGFuZWw6W3t0eXBlOkl0LGFyZ3M6WyJwYW5lbCJdfV0sYXJpYUxhYmVsOlt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxkaXNwbGF5V2l0aDpbe3R5cGU6ZH1dLGF1dG9BY3RpdmVGaXJzdE9wdGlvbjpbe3R5cGU6ZH1dLHBhbmVsV2lkdGg6W3t0eXBlOmR9XSxvcHRpb25TZWxlY3RlZDpbe3R5cGU6Qn1dLG9wZW5lZDpbe3R5cGU6Qn1dLGNsb3NlZDpbe3R5cGU6Qn1dLG9wdGlvbkFjdGl2YXRlZDpbe3R5cGU6Qn1dLGNsYXNzTGlzdDpbe3R5cGU6ZCxhcmdzOlsiY2xhc3MiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYk8sW3t0eXBlOnd0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VHR9LHt0eXBlOkx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3MyXX1dfSx7dHlwZTpWdH1dfSx7ZGlzcGxheVdpdGg6W3t0eXBlOmR9XSxvcHRpb25TZWxlY3RlZDpbe3R5cGU6Qn1dLG9wZW5lZDpbe3R5cGU6Qn1dLGNsb3NlZDpbe3R5cGU6Qn1dLG9wdGlvbkFjdGl2YXRlZDpbe3R5cGU6Qn1dLGF1dG9BY3RpdmVGaXJzdE9wdGlvbjpbe3R5cGU6ZH1dLGNsYXNzTGlzdDpbe3R5cGU6ZCxhcmdzOlsiY2xhc3MiXX1dLHRlbXBsYXRlOlt7dHlwZTpJdCxhcmdzOltrZSx7c3RhdGljOiEwfV19XSxwYW5lbDpbe3R5cGU6SXQsYXJnczpbInBhbmVsIl19XSxhcmlhTGFiZWw6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLHBhbmVsV2lkdGg6W3t0eXBlOmR9XX0pfSkoKTt2YXIgYWw9Y2xhc3MgZXh0ZW5kcyBiT3tjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdmlzaWJsZUNsYXNzPSJtYXQtYXV0b2NvbXBsZXRlLXZpc2libGUiLHRoaXMuX2hpZGRlbkNsYXNzPSJtYXQtYXV0b2NvbXBsZXRlLWhpZGRlbiJ9fTthbC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKGFsKSkpKGV8fGFsKX19KCk7YWwuXHUwMjc1Y21wPXooe3R5cGU6YWwsc2VsZWN0b3JzOltbIm1hdC1hdXRvY29tcGxldGUiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxlLG8pe2lmKHQmMSYmKGdvKG8sWGcsNSksZ28obyxJaSw1KSksdCYyKXtsZXQgaTtIdChpPUZ0KCkpJiYoZS5vcHRpb25Hcm91cHM9aSksSHQoaT1GdCgpKSYmKGUub3B0aW9ucz1pKX19LGhvc3RBdHRyczpbMSwibWF0LWF1dG9jb21wbGV0ZSJdLGlucHV0czp7ZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSJ9LGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlIl0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpJXyx1c2VFeGlzdGluZzphbH1dKSxhZV0sbmdDb250ZW50U2VsZWN0b3JzOmRJdCxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1sicm9sZSIsImxpc3Rib3giLDEsIm1hdC1hdXRvY29tcGxldGUtcGFuZWwiLDMsImlkIiwibmdDbGFzcyJdLFsicGFuZWwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih5bygpLGsoMCxwSXQsMyw0LCJuZy10ZW1wbGF0ZSIpKX0sZGlyZWN0aXZlczpbam5dLHN0eWxlczpbYC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt2aXNpYmlsaXR5OmhpZGRlbjttYXgtd2lkdGg6bm9uZTttYXgtaGVpZ2h0OjI1NnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LWRpdmlkZXItaG9yaXpvbnRhbHttYXJnaW4tdG9wOi0xcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH1tYXQtYXV0b2NvbXBsZXRle2Rpc3BsYXk6bm9uZX0KYF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7YWwucHJvcERlY29yYXRvcnM9e29wdGlvbkdyb3Vwczpbe3R5cGU6bG8sYXJnczpbWGcse2Rlc2NlbmRhbnRzOiEwfV19XSxvcHRpb25zOlt7dHlwZTpsbyxhcmdzOltJaSx7ZGVzY2VuZGFudHM6ITB9XX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYWwsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtYXV0b2NvbXBsZXRlIix0ZW1wbGF0ZTpgPG5nLXRlbXBsYXRlIGxldC1mb3JtRmllbGRJZD0iaWQiPgogIDxkaXYgY2xhc3M9Im1hdC1hdXRvY29tcGxldGUtcGFuZWwiCiAgICAgICByb2xlPSJsaXN0Ym94IgogICAgICAgW2lkXT0iaWQiCiAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT0iYXJpYUxhYmVsIHx8IG51bGwiCiAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPSJfZ2V0UGFuZWxBcmlhTGFiZWxsZWRieShmb3JtRmllbGRJZCkiCiAgICAgICBbbmdDbGFzc109Il9jbGFzc0xpc3QiCiAgICAgICAjcGFuZWw+CiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+CiAgPC9kaXY+CjwvbmctdGVtcGxhdGU+CmAsZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gsZXhwb3J0QXM6Im1hdEF1dG9jb21wbGV0ZSIsaW5wdXRzOlsiZGlzYWJsZVJpcHBsZSJdLGhvc3Q6e2NsYXNzOiJtYXQtYXV0b2NvbXBsZXRlIn0scHJvdmlkZXJzOlt7cHJvdmlkZTpJXyx1c2VFeGlzdGluZzphbH1dLHN0eWxlczpbYC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDt2aXNpYmlsaXR5OmhpZGRlbjttYXgtd2lkdGg6bm9uZTttYXgtaGVpZ2h0OjI1NnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo0cHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6NHB4fS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtdmlzaWJsZXt2aXNpYmlsaXR5OnZpc2libGV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwubWF0LWF1dG9jb21wbGV0ZS1oaWRkZW57dmlzaWJpbGl0eTpoaWRkZW59Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7Ym9yZGVyLXJhZGl1czowO2JvcmRlci10b3AtbGVmdC1yYWRpdXM6NHB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LWRpdmlkZXItaG9yaXpvbnRhbHttYXJnaW4tdG9wOi0xcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH1tYXQtYXV0b2NvbXBsZXRle2Rpc3BsYXk6bm9uZX0KYF19XX1dLG51bGwse29wdGlvbkdyb3Vwczpbe3R5cGU6bG8sYXJnczpbWGcse2Rlc2NlbmRhbnRzOiEwfV19XSxvcHRpb25zOlt7dHlwZTpsbyxhcmdzOltJaSx7ZGVzY2VuZGFudHM6ITB9XX1dfSl9KSgpO3ZhciBrUD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsZW1lbnRSZWY9dH19O2tQLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGtQKSh2KEwpKX07a1AuXHUwMjc1ZGlyPXZ0KHt0eXBlOmtQfSk7a1AuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfV07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGtQLFt7dHlwZTp3dH1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9XX0sbnVsbCl9KSgpO3ZhciBTMD1jbGFzcyBleHRlbmRzIGtQe307UzAuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihTMCkpKShlfHxTMCl9fSgpO1MwLlx1MDI3NWRpcj12dCh7dHlwZTpTMCxzZWxlY3RvcnM6W1siIiwibWF0QXV0b2NvbXBsZXRlT3JpZ2luIiwiIl1dLGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlT3JpZ2luIl0sZmVhdHVyZXM6W2FlXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhTMCxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbbWF0QXV0b2NvbXBsZXRlT3JpZ2luXSIsZXhwb3J0QXM6Im1hdEF1dG9jb21wbGV0ZU9yaWdpbiJ9XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBlNj1uZXcgeXQoIm1hdC1hdXRvY29tcGxldGUtc2Nyb2xsLXN0cmF0ZWd5Iik7ZnVuY3Rpb24gX0l0KG4pe3JldHVybigpPT5uLnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfXZhciBqbHQ9e3Byb3ZpZGU6ZTYsZGVwczpbR25dLHVzZUZhY3Rvcnk6X0l0fSxVbHQ9e3Byb3ZpZGU6amEsdXNlRXhpc3Rpbmc6dG8oKCk9PmpzKSxtdWx0aTohMH07ZnVuY3Rpb24gQ0l0KCl7cmV0dXJuIEVycm9yKCJBdHRlbXB0aW5nIHRvIG9wZW4gYW4gdW5kZWZpbmVkIGluc3RhbmNlIG9mIGBtYXQtYXV0b2NvbXBsZXRlYC4gTWFrZSBzdXJlIHRoYXQgdGhlIGlkIHBhc3NlZCB0byB0aGUgYG1hdEF1dG9jb21wbGV0ZWAgaXMgY29ycmVjdCBhbmQgdGhhdCB5b3UncmUgYXR0ZW1wdGluZyB0byBvcGVuIGl0IGFmdGVyIHRoZSBuZ0FmdGVyQ29udGVudEluaXQgaG9vay4iKX12YXIgT089Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyxsLGMsbSxmKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fb3ZlcmxheT1lLHRoaXMuX3ZpZXdDb250YWluZXJSZWY9byx0aGlzLl96b25lPWksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9YSx0aGlzLl9kaXI9cyx0aGlzLl9mb3JtRmllbGQ9bCx0aGlzLl9kb2N1bWVudD1jLHRoaXMuX3ZpZXdwb3J0UnVsZXI9bSx0aGlzLl9kZWZhdWx0cz1mLHRoaXMuX2NvbXBvbmVudERlc3Ryb3llZD0hMSx0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZD0hMSx0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWw9ITEsdGhpcy5fdmlld3BvcnRTdWJzY3JpcHRpb249RW8uRU1QVFksdGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzPSEwLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW09bmV3IEp0LHRoaXMuX3dpbmRvd0JsdXJIYW5kbGVyPSgpPT57dGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzPXRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT10aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnR8fHRoaXMucGFuZWxPcGVufSx0aGlzLl9vbkNoYW5nZT0oKT0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLnBvc2l0aW9uPSJhdXRvIix0aGlzLmF1dG9jb21wbGV0ZUF0dHJpYnV0ZT0ib2ZmIix0aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITEsdGhpcy5vcHRpb25TZWxlY3Rpb25zPUJDKCgpPT50aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUub3B0aW9ucz95biguLi50aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25zLm1hcChwPT5wLm9uU2VsZWN0aW9uQ2hhbmdlKSk6dGhpcy5fem9uZS5vblN0YWJsZS5waXBlKENuKDEpLHRpKCgpPT50aGlzLm9wdGlvblNlbGVjdGlvbnMpKSksdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9cn1nZXQgYXV0b2NvbXBsZXRlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWR9c2V0IGF1dG9jb21wbGV0ZURpc2FibGVkKHQpe3RoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkPVplKHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe2xldCB0PXRoaXMuX2dldFdpbmRvdygpO3R5cGVvZiB0IT0idW5kZWZpbmVkIiYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKT0+dC5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVySGFuZGxlcikpfW5nT25DaGFuZ2VzKHQpe3QucG9zaXRpb24mJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJih0aGlzLl9zZXRTdHJhdGVneVBvc2l0aW9ucyh0aGlzLl9wb3NpdGlvblN0cmF0ZWd5KSx0aGlzLnBhbmVsT3BlbiYmdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpKX1uZ09uRGVzdHJveSgpe2xldCB0PXRoaXMuX2dldFdpbmRvdygpO3R5cGVvZiB0IT0idW5kZWZpbmVkIiYmdC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVySGFuZGxlciksdGhpcy5fdmlld3BvcnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jb21wb25lbnREZXN0cm95ZWQ9ITAsdGhpcy5fZGVzdHJveVBhbmVsKCksdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbS5jb21wbGV0ZSgpfWdldCBwYW5lbE9wZW4oKXtyZXR1cm4gdGhpcy5fb3ZlcmxheUF0dGFjaGVkJiZ0aGlzLmF1dG9jb21wbGV0ZS5zaG93UGFuZWx9b3BlblBhbmVsKCl7dGhpcy5fYXR0YWNoT3ZlcmxheSgpLHRoaXMuX2Zsb2F0TGFiZWwoKX1jbG9zZVBhbmVsKCl7dGhpcy5fcmVzZXRMYWJlbCgpLHRoaXMuX292ZXJsYXlBdHRhY2hlZCYmKHRoaXMucGFuZWxPcGVuJiZ0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZWQuZW1pdCgpLHRoaXMuYXV0b2NvbXBsZXRlLl9pc09wZW49dGhpcy5fb3ZlcmxheUF0dGFjaGVkPSExLHRoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSYmKHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSksdGhpcy5fY29tcG9uZW50RGVzdHJveWVkfHx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCkpfXVwZGF0ZVBvc2l0aW9uKCl7dGhpcy5fb3ZlcmxheUF0dGFjaGVkJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9Z2V0IHBhbmVsQ2xvc2luZ0FjdGlvbnMoKXtyZXR1cm4geW4odGhpcy5vcHRpb25TZWxlY3Rpb25zLHRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLnRhYk91dC5waXBlKHVlKCgpPT50aGlzLl9vdmVybGF5QXR0YWNoZWQpKSx0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLHRoaXMuX2dldE91dHNpZGVDbGlja1N0cmVhbSgpLHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnBpcGUodWUoKCk9PnRoaXMuX292ZXJsYXlBdHRhY2hlZCkpOmRuKCkpLnBpcGUoRyh0PT50IGluc3RhbmNlb2YgaWs/dDpudWxsKSl9Z2V0IGFjdGl2ZU9wdGlvbigpe3JldHVybiB0aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXI/dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbTpudWxsfV9nZXRPdXRzaWRlQ2xpY2tTdHJlYW0oKXtyZXR1cm4geW4oam8odGhpcy5fZG9jdW1lbnQsImNsaWNrIiksam8odGhpcy5fZG9jdW1lbnQsImF1eGNsaWNrIiksam8odGhpcy5fZG9jdW1lbnQsInRvdWNoZW5kIikpLnBpcGUodWUodD0+e2xldCBlPVJNKHQpLG89dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Om51bGwsaT10aGlzLmNvbm5lY3RlZFRvP3RoaXMuY29ubmVjdGVkVG8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Om51bGw7cmV0dXJuIHRoaXMuX292ZXJsYXlBdHRhY2hlZCYmZSE9PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCYmKCFvfHwhby5jb250YWlucyhlKSkmJighaXx8IWkuY29udGFpbnMoZSkpJiYhIXRoaXMuX292ZXJsYXlSZWYmJiF0aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmNvbnRhaW5zKGUpfSkpfXdyaXRlVmFsdWUodCl7UHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCk9PnRoaXMuX3NldFRyaWdnZXJWYWx1ZSh0KSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmRpc2FibGVkPXR9X2hhbmRsZUtleWRvd24odCl7bGV0IGU9dC5rZXlDb2RlO2lmKGU9PT0yNyYmIVZhKHQpJiZ0LnByZXZlbnREZWZhdWx0KCksdGhpcy5hY3RpdmVPcHRpb24mJmU9PT0xMyYmdGhpcy5wYW5lbE9wZW4pdGhpcy5hY3RpdmVPcHRpb24uX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdGhpcy5fcmVzZXRBY3RpdmVJdGVtKCksdC5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgaWYodGhpcy5hdXRvY29tcGxldGUpe2xldCBvPXRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0saT1lPT09Mzh8fGU9PT00MDt0aGlzLnBhbmVsT3Blbnx8ZT09PTk/dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIub25LZXlkb3duKHQpOmkmJnRoaXMuX2Nhbk9wZW4oKSYmdGhpcy5vcGVuUGFuZWwoKSwoaXx8dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSE9PW8pJiZ0aGlzLl9zY3JvbGxUb09wdGlvbih0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtSW5kZXh8fDApfX1faGFuZGxlSW5wdXQodCl7bGV0IGU9dC50YXJnZXQsbz1lLnZhbHVlO2UudHlwZT09PSJudW1iZXIiJiYobz1vPT0iIj9udWxsOnBhcnNlRmxvYXQobykpLHRoaXMuX3ByZXZpb3VzVmFsdWUhPT1vJiYodGhpcy5fcHJldmlvdXNWYWx1ZT1vLHRoaXMuX29uQ2hhbmdlKG8pLHRoaXMuX2Nhbk9wZW4oKSYmdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXQudGFyZ2V0JiZ0aGlzLm9wZW5QYW5lbCgpKX1faGFuZGxlRm9jdXMoKXt0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM/dGhpcy5fY2FuT3BlbigpJiYodGhpcy5fcHJldmlvdXNWYWx1ZT10aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUsdGhpcy5fYXR0YWNoT3ZlcmxheSgpLHRoaXMuX2Zsb2F0TGFiZWwoITApKTp0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM9ITB9X2Zsb2F0TGFiZWwodD0hMSl7dGhpcy5fZm9ybUZpZWxkJiZ0aGlzLl9mb3JtRmllbGQuZmxvYXRMYWJlbD09PSJhdXRvIiYmKHQ/dGhpcy5fZm9ybUZpZWxkLl9hbmltYXRlQW5kTG9ja0xhYmVsKCk6dGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWw9ImFsd2F5cyIsdGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsPSEwKX1fcmVzZXRMYWJlbCgpe3RoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbCYmKHRoaXMuX2Zvcm1GaWVsZC5mbG9hdExhYmVsPSJhdXRvIix0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWw9ITEpfV9zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCl7bGV0IHQ9dGhpcy5fem9uZS5vblN0YWJsZS5waXBlKENuKDEpKSxlPXRoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnMuY2hhbmdlcy5waXBlKGFuKCgpPT50aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnJlYXBwbHlMYXN0UG9zaXRpb24oKSksb18oMCkpO3JldHVybiB5bih0LGUpLnBpcGUodGkoKCk9PntsZXQgbz10aGlzLnBhbmVsT3BlbjtyZXR1cm4gdGhpcy5fcmVzZXRBY3RpdmVJdGVtKCksdGhpcy5hdXRvY29tcGxldGUuX3NldFZpc2liaWxpdHkoKSx0aGlzLnBhbmVsT3BlbiYmKHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSxvIT09dGhpcy5wYW5lbE9wZW4mJnRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZC5lbWl0KCkpLHRoaXMucGFuZWxDbG9zaW5nQWN0aW9uc30pLENuKDEpKS5zdWJzY3JpYmUobz0+dGhpcy5fc2V0VmFsdWVBbmRDbG9zZShvKSl9X2Rlc3Ryb3lQYW5lbCgpe3RoaXMuX292ZXJsYXlSZWYmJih0aGlzLmNsb3NlUGFuZWwoKSx0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKSx0aGlzLl9vdmVybGF5UmVmPW51bGwpfV9zZXRUcmlnZ2VyVmFsdWUodCl7bGV0IGU9dGhpcy5hdXRvY29tcGxldGUmJnRoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoP3RoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKHQpOnQsbz1lIT1udWxsP2U6IiI7dGhpcy5fZm9ybUZpZWxkP3RoaXMuX2Zvcm1GaWVsZC5fY29udHJvbC52YWx1ZT1vOnRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZT1vLHRoaXMuX3ByZXZpb3VzVmFsdWU9b31fc2V0VmFsdWVBbmRDbG9zZSh0KXt0JiZ0LnNvdXJjZSYmKHRoaXMuX2NsZWFyUHJldmlvdXNTZWxlY3RlZE9wdGlvbih0LnNvdXJjZSksdGhpcy5fc2V0VHJpZ2dlclZhbHVlKHQuc291cmNlLnZhbHVlKSx0aGlzLl9vbkNoYW5nZSh0LnNvdXJjZS52YWx1ZSksdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCksdGhpcy5hdXRvY29tcGxldGUuX2VtaXRTZWxlY3RFdmVudCh0LnNvdXJjZSkpLHRoaXMuY2xvc2VQYW5lbCgpfV9jbGVhclByZXZpb3VzU2VsZWN0ZWRPcHRpb24odCl7dGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5mb3JFYWNoKGU9PntlIT09dCYmZS5zZWxlY3RlZCYmZS5kZXNlbGVjdCgpfSl9X2F0dGFjaE92ZXJsYXkoKXt2YXIgdDtpZighdGhpcy5hdXRvY29tcGxldGUmJih0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSl0aHJvdyBDSXQoKTtsZXQgZT10aGlzLl9vdmVybGF5UmVmO2U/KHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuc2V0T3JpZ2luKHRoaXMuX2dldENvbm5lY3RlZEVsZW1lbnQoKSksZS51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCl9KSk6KHRoaXMuX3BvcnRhbD1uZXcgJGwodGhpcy5hdXRvY29tcGxldGUudGVtcGxhdGUsdGhpcy5fdmlld0NvbnRhaW5lclJlZix7aWQ6KHQ9dGhpcy5fZm9ybUZpZWxkKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZ2V0TGFiZWxJZCgpfSksZT10aGlzLl9vdmVybGF5LmNyZWF0ZSh0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCkpLHRoaXMuX292ZXJsYXlSZWY9ZSxlLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoaT0+eyhpLmtleUNvZGU9PT0yNyYmIVZhKGkpfHxpLmtleUNvZGU9PT0zOCYmVmEoaSwiYWx0S2V5IikpJiYodGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbS5uZXh0KCksdGhpcy5fcmVzZXRBY3RpdmVJdGVtKCksaS5zdG9wUHJvcGFnYXRpb24oKSxpLnByZXZlbnREZWZhdWx0KCkpfSksdGhpcy5fdmlld3BvcnRTdWJzY3JpcHRpb249dGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLnBhbmVsT3BlbiYmZSYmZS51cGRhdGVTaXplKHt3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCl9KX0pKSxlJiYhZS5oYXNBdHRhY2hlZCgpJiYoZS5hdHRhY2godGhpcy5fcG9ydGFsKSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj10aGlzLl9zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCkpO2xldCBvPXRoaXMucGFuZWxPcGVuO3RoaXMuYXV0b2NvbXBsZXRlLl9zZXRWaXNpYmlsaXR5KCksdGhpcy5hdXRvY29tcGxldGUuX2lzT3Blbj10aGlzLl9vdmVybGF5QXR0YWNoZWQ9ITAsdGhpcy5wYW5lbE9wZW4mJm8hPT10aGlzLnBhbmVsT3BlbiYmdGhpcy5hdXRvY29tcGxldGUub3BlbmVkLmVtaXQoKX1fZ2V0T3ZlcmxheUNvbmZpZygpe3ZhciB0O3JldHVybiBuZXcgVl8oe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCksc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSx3aWR0aDp0aGlzLl9nZXRQYW5lbFdpZHRoKCksZGlyZWN0aW9uOnRoaXMuX2RpcixwYW5lbENsYXNzOih0PXRoaXMuX2RlZmF1bHRzKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQub3ZlcmxheVBhbmVsQ2xhc3N9KX1fZ2V0T3ZlcmxheVBvc2l0aW9uKCl7bGV0IHQ9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpKS53aXRoRmxleGlibGVEaW1lbnNpb25zKCExKS53aXRoUHVzaCghMSk7cmV0dXJuIHRoaXMuX3NldFN0cmF0ZWd5UG9zaXRpb25zKHQpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9dCx0fV9zZXRTdHJhdGVneVBvc2l0aW9ucyh0KXtsZXQgZT1be29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6InRvcCJ9LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6InRvcCJ9XSxvPXRoaXMuX2Fib3ZlQ2xhc3MsaT1be29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6ImJvdHRvbSIscGFuZWxDbGFzczpvfSx7b3JpZ2luWDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJib3R0b20iLHBhbmVsQ2xhc3M6b31dLGE7dGhpcy5wb3NpdGlvbj09PSJhYm92ZSI/YT1pOnRoaXMucG9zaXRpb249PT0iYmVsb3ciP2E9ZTphPVsuLi5lLC4uLmldLHQud2l0aFBvc2l0aW9ucyhhKX1fZ2V0Q29ubmVjdGVkRWxlbWVudCgpe3JldHVybiB0aGlzLmNvbm5lY3RlZFRvP3RoaXMuY29ubmVjdGVkVG8uZWxlbWVudFJlZjp0aGlzLl9mb3JtRmllbGQ/dGhpcy5fZm9ybUZpZWxkLmdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTp0aGlzLl9lbGVtZW50fV9nZXRQYW5lbFdpZHRoKCl7cmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlLnBhbmVsV2lkdGh8fHRoaXMuX2dldEhvc3RXaWR0aCgpfV9nZXRIb3N0V2lkdGgoKXtyZXR1cm4gdGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9X3Jlc2V0QWN0aXZlSXRlbSgpe2xldCB0PXRoaXMuYXV0b2NvbXBsZXRlO3QuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uP3QuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk6dC5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKX1fY2FuT3Blbigpe2xldCB0PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtyZXR1cm4hdC5yZWFkT25seSYmIXQuZGlzYWJsZWQmJiF0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZH1fZ2V0V2luZG93KCl7dmFyIHQ7cmV0dXJuKCh0PXRoaXMuX2RvY3VtZW50KT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9X3Njcm9sbFRvT3B0aW9uKHQpe2xldCBlPXRoaXMuYXV0b2NvbXBsZXRlLG89YWsodCxlLm9wdGlvbnMsZS5vcHRpb25Hcm91cHMpO2lmKHQ9PT0wJiZvPT09MSllLl9zZXRTY3JvbGxUb3AoMCk7ZWxzZSBpZihlLnBhbmVsKXtsZXQgaT1lLm9wdGlvbnMudG9BcnJheSgpW3RdO2lmKGkpe2xldCBhPWkuX2dldEhvc3RFbGVtZW50KCkscj1oSShhLm9mZnNldFRvcCxhLm9mZnNldEhlaWdodCxlLl9nZXRTY3JvbGxUb3AoKSxlLnBhbmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtlLl9zZXRTY3JvbGxUb3Aocil9fX19O09PLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE9PKSh2KEwpLHYoR24pLHYoX2UpLHYoQ3QpLHYoVHQpLHYoZTYpLHYoTmUsOCksdihBcCw5KSx2KF90LDgpLHYoWm4pLHYoczIsOCkpfTtPTy5cdTAyNzVkaXI9dnQoe3R5cGU6T08saW5wdXRzOntwb3NpdGlvbjpbIm1hdEF1dG9jb21wbGV0ZVBvc2l0aW9uIiwicG9zaXRpb24iXSxhdXRvY29tcGxldGVBdHRyaWJ1dGU6WyJhdXRvY29tcGxldGUiLCJhdXRvY29tcGxldGVBdHRyaWJ1dGUiXSxhdXRvY29tcGxldGVEaXNhYmxlZDpbIm1hdEF1dG9jb21wbGV0ZURpc2FibGVkIiwiYXV0b2NvbXBsZXRlRGlzYWJsZWQiXSxhdXRvY29tcGxldGU6WyJtYXRBdXRvY29tcGxldGUiLCJhdXRvY29tcGxldGUiXSxjb25uZWN0ZWRUbzpbIm1hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvIiwiY29ubmVjdGVkVG8iXX0sZmVhdHVyZXM6W1dlXX0pO09PLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6R259LHt0eXBlOl9lfSx7dHlwZTpDdH0se3R5cGU6VHR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W2U2XX1dfSx7dHlwZTpOZSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOm9pLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbQXBdfSx7dHlwZTp6YX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6Wm59LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3MyXX1dfV07T08ucHJvcERlY29yYXRvcnM9e2F1dG9jb21wbGV0ZTpbe3R5cGU6ZCxhcmdzOlsibWF0QXV0b2NvbXBsZXRlIl19XSxwb3NpdGlvbjpbe3R5cGU6ZCxhcmdzOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iXX1dLGNvbm5lY3RlZFRvOlt7dHlwZTpkLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUbyJdfV0sYXV0b2NvbXBsZXRlQXR0cmlidXRlOlt7dHlwZTpkLGFyZ3M6WyJhdXRvY29tcGxldGUiXX1dLGF1dG9jb21wbGV0ZURpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCJdfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhPTyxbe3R5cGU6d3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpHbn0se3R5cGU6X2V9LHt0eXBlOkN0fSx7dHlwZTpUdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbZTZdfV19LHt0eXBlOk5lLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6b2ksZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltBcF19LHt0eXBlOnphfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpabn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbczJdfV19XX0se3Bvc2l0aW9uOlt7dHlwZTpkLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVQb3NpdGlvbiJdfV0sYXV0b2NvbXBsZXRlQXR0cmlidXRlOlt7dHlwZTpkLGFyZ3M6WyJhdXRvY29tcGxldGUiXX1dLGF1dG9jb21wbGV0ZURpc2FibGVkOlt7dHlwZTpkLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVEaXNhYmxlZCJdfV0sYXV0b2NvbXBsZXRlOlt7dHlwZTpkLGFyZ3M6WyJtYXRBdXRvY29tcGxldGUiXX1dLGNvbm5lY3RlZFRvOlt7dHlwZTpkLGFyZ3M6WyJtYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUbyJdfV19KX0pKCk7dmFyIGpzPWNsYXNzIGV4dGVuZHMgT097Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2Fib3ZlQ2xhc3M9Im1hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUifX07anMuXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbihqcykpKShlfHxqcyl9fSgpO2pzLlx1MDI3NWRpcj12dCh7dHlwZTpqcyxzZWxlY3RvcnM6W1siaW5wdXQiLCJtYXRBdXRvY29tcGxldGUiLCIiXSxbInRleHRhcmVhIiwibWF0QXV0b2NvbXBsZXRlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWF1dG9jb21wbGV0ZS10cmlnZ2VyIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImZvY3VzaW4iLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2hhbmRsZUZvY3VzKCl9KSgiYmx1ciIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fb25Ub3VjaGVkKCl9KSgiaW5wdXQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLl9oYW5kbGVJbnB1dChpKX0pKCJrZXlkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihpKX0pLHQmMiYmcmUoImF1dG9jb21wbGV0ZSIsZS5hdXRvY29tcGxldGVBdHRyaWJ1dGUpKCJyb2xlIixlLmF1dG9jb21wbGV0ZURpc2FibGVkP251bGw6ImNvbWJvYm94IikoImFyaWEtYXV0b2NvbXBsZXRlIixlLmF1dG9jb21wbGV0ZURpc2FibGVkP251bGw6Imxpc3QiKSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixlLnBhbmVsT3BlbiYmZS5hY3RpdmVPcHRpb24/ZS5hY3RpdmVPcHRpb24uaWQ6bnVsbCkoImFyaWEtZXhwYW5kZWQiLGUuYXV0b2NvbXBsZXRlRGlzYWJsZWQ/bnVsbDplLnBhbmVsT3Blbi50b1N0cmluZygpKSgiYXJpYS1vd25zIixlLmF1dG9jb21wbGV0ZURpc2FibGVkfHwhZS5wYW5lbE9wZW58fGUuYXV0b2NvbXBsZXRlPT1udWxsP251bGw6ZS5hdXRvY29tcGxldGUuaWQpKCJhcmlhLWhhc3BvcHVwIiwhZS5hdXRvY29tcGxldGVEaXNhYmxlZCl9LGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlVHJpZ2dlciJdLGZlYXR1cmVzOltUZShbVWx0XSksYWVdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGpzLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W21hdEF1dG9jb21wbGV0ZV0sIHRleHRhcmVhW21hdEF1dG9jb21wbGV0ZV0iLGhvc3Q6e2NsYXNzOiJtYXQtYXV0b2NvbXBsZXRlLXRyaWdnZXIiLCJbYXR0ci5hdXRvY29tcGxldGVdIjoiYXV0b2NvbXBsZXRlQXR0cmlidXRlIiwiW2F0dHIucm9sZV0iOidhdXRvY29tcGxldGVEaXNhYmxlZCA/IG51bGwgOiAiY29tYm9ib3giJywiW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdIjonYXV0b2NvbXBsZXRlRGlzYWJsZWQgPyBudWxsIDogImxpc3QiJywiW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XSI6IihwYW5lbE9wZW4gJiYgYWN0aXZlT3B0aW9uKSA/IGFjdGl2ZU9wdGlvbi5pZCA6IG51bGwiLCJbYXR0ci5hcmlhLWV4cGFuZGVkXSI6ImF1dG9jb21wbGV0ZURpc2FibGVkID8gbnVsbCA6IHBhbmVsT3Blbi50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1vd25zXSI6IihhdXRvY29tcGxldGVEaXNhYmxlZCB8fCAhcGFuZWxPcGVuKSA/IG51bGwgOiBhdXRvY29tcGxldGU/LmlkIiwiW2F0dHIuYXJpYS1oYXNwb3B1cF0iOiIhYXV0b2NvbXBsZXRlRGlzYWJsZWQiLCIoZm9jdXNpbikiOiJfaGFuZGxlRm9jdXMoKSIsIihibHVyKSI6Il9vblRvdWNoZWQoKSIsIihpbnB1dCkiOiJfaGFuZGxlSW5wdXQoJGV2ZW50KSIsIihrZXlkb3duKSI6Il9oYW5kbGVLZXlkb3duKCRldmVudCkifSxleHBvcnRBczoibWF0QXV0b2NvbXBsZXRlVHJpZ2dlciIscHJvdmlkZXJzOltVbHRdfV19XSxudWxsLG51bGwpfSkoKTt2YXIgX3M9Y2xhc3N7fTtfcy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxfcyl9O19zLlx1MDI3NW1vZD1xKHt0eXBlOl9zfSk7X3MuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbamx0XSxpbXBvcnRzOltbQm8sU3IsRHQsWV0sQmksU3IsRHRdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKF9zLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltCbyxTcixEdCxZXSxleHBvcnRzOlthbCxqcyxTMCxCaSxTcixEdF0sZGVjbGFyYXRpb25zOlthbCxqcyxTMF0scHJvdmlkZXJzOltqbHRdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KF9zLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bYWwsanMsUzBdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0JvLFNyLER0LFldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2FsLGpzLFMwLEJpLFNyLER0XX19KX0pKCk7dmFyIENtPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy52YWx1ZT0iIix0aGlzLnBsYWNlaG9sZGVyPSIifW9uSW5wdXRLZXlVcCh0KXt0LmtleT09PSJFbnRlciImJnRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlci5jbG9zZVBhbmVsKCl9fTtDbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxDbSl9O0NtLlx1MDI3NWNtcD16KHt0eXBlOkNtLHNlbGVjdG9yczpbWyJ0Yi1maWx0ZXItaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShqcyw1KSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLmF1dG9jb21wbGV0ZVRyaWdnZXI9by5maXJzdCl9fSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSIsbWF0QXV0b2NvbXBsZXRlOiJtYXRBdXRvY29tcGxldGUiLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbInR5cGUiLCJ0ZXh0IiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwzLCJwbGFjZWhvbGRlciIsIm1hdEF1dG9jb21wbGV0ZSIsIm1hdEF1dG9jb21wbGV0ZURpc2FibGVkIiwidmFsdWUiLCJrZXl1cCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwibWF0LWljb24iLDApLHUoMSwiaW5wdXQiLDEpLEEoImtleXVwIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbklucHV0S2V5VXAoaSl9KSxoKCkpLHQmMiYmKHgoMSksUCgicGxhY2Vob2xkZXIiLGUucGxhY2Vob2xkZXIpKCJtYXRBdXRvY29tcGxldGUiLGUubWF0QXV0b2NvbXBsZXRlKSgibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiLCFlLm1hdEF1dG9jb21wbGV0ZSkoInZhbHVlIixlLnZhbHVlKSl9LGRpcmVjdGl2ZXM6W1hlLGpzXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxM3B4fW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yO2NvbG9yOmN1cnJlbnRDb2xvcjtmb250OmluaGVyaXQ7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lO3BhZGRpbmc6MDtmbGV4LWdyb3c6MX0nXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhDbSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRiLWZpbHRlci1pbnB1dCIsdGVtcGxhdGU6YAogICAgPG1hdC1pY29uIHN2Z0ljb249InNlYXJjaF8yNHB4Ij48L21hdC1pY29uPgoKICAgIDwhLS0gTm90ZTogdG8gYWxsb3cgZmFsc3kgJ21hdEF1dG9jb21wbGV0ZScgdmFsdWVzLCB3ZSBuZWVkICdtYXRBdXRvY29tcGxldGVEaXNhYmxlZCcKICAgIHRvIHByZXZlbnQgcnVudGltZSBlcnJvcnMuIC0tPgogICAgPGlucHV0CiAgICAgIHR5cGU9InRleHQiCiAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICBbcGxhY2Vob2xkZXJdPSJwbGFjZWhvbGRlciIKICAgICAgW21hdEF1dG9jb21wbGV0ZV09Im1hdEF1dG9jb21wbGV0ZSIKICAgICAgW21hdEF1dG9jb21wbGV0ZURpc2FibGVkXT0iIW1hdEF1dG9jb21wbGV0ZSIKICAgICAgW3ZhbHVlXT0idmFsdWUiCiAgICAgIChrZXl1cCk9Im9uSW5wdXRLZXlVcCgkZXZlbnQpIgogICAgLz4KICBgLHN0eWxlVXJsczpbImZpbHRlcl9pbnB1dF9jb21wb25lbnQuY3NzIl19XX1dLG51bGwse3ZhbHVlOlt7dHlwZTpkfV0sbWF0QXV0b2NvbXBsZXRlOlt7dHlwZTpkfV0scGxhY2Vob2xkZXI6W3t0eXBlOmR9XSxhdXRvY29tcGxldGVUcmlnZ2VyOlt7dHlwZTpJdCxhcmdzOltqc119XX0pfSkoKTtmdW5jdGlvbiBNSXQobix0KXtpZihuJjEmJihLbigpLEQoMCwiY2lyY2xlIiwzKSksbiYyKXtsZXQgZT1TKCk7cWUoImFuaW1hdGlvbi1uYW1lIiwibWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0iK2UuX3NwaW5uZXJBbmltYXRpb25MYWJlbCkoInN0cm9rZS1kYXNob2Zmc2V0IixlLl9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLGUuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIixlLl9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIikscmUoInIiLGUuX2dldENpcmNsZVJhZGl1cygpKX19ZnVuY3Rpb24gYkl0KG4sdCl7aWYobiYxJiYoS24oKSxEKDAsImNpcmNsZSIsMykpLG4mMil7bGV0IGU9UygpO3FlKCJzdHJva2UtZGFzaG9mZnNldCIsZS5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5IixlLl9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsZS5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLHJlKCJyIixlLl9nZXRDaXJjbGVSYWRpdXMoKSl9fWZ1bmN0aW9uIE9JdChuLHQpe2lmKG4mMSYmKEtuKCksRCgwLCJjaXJjbGUiLDMpKSxuJjIpe2xldCBlPVMoKTtxZSgiYW5pbWF0aW9uLW5hbWUiLCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLSIrZS5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsKSgic3Ryb2tlLWRhc2hvZmZzZXQiLGUuX2dldFN0cm9rZURhc2hPZmZzZXQoKSwicHgiKSgic3Ryb2tlLWRhc2hhcnJheSIsZS5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpLCJweCIpKCJzdHJva2Utd2lkdGgiLGUuX2dldENpcmNsZVN0cm9rZVdpZHRoKCksIiUiKSxyZSgiciIsZS5fZ2V0Q2lyY2xlUmFkaXVzKCkpfX1mdW5jdGlvbiBQSXQobix0KXtpZihuJjEmJihLbigpLEQoMCwiY2lyY2xlIiwzKSksbiYyKXtsZXQgZT1TKCk7cWUoInN0cm9rZS1kYXNob2Zmc2V0IixlLl9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLGUuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIixlLl9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIikscmUoInIiLGUuX2dldENpcmNsZVJhZGl1cygpKX19dmFyIEdsdD1gLm1hdC1wcm9ncmVzcy1zcGlubmVye2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBzdmd7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RvcDowO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7ZmlsbDp0cmFuc3BhcmVudDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnN0cm9rZS1kYXNob2Zmc2V0IDIyNW1zIGxpbmVhcn0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7c3Ryb2tlOmN1cnJlbnRDb2xvcjtzdHJva2U6Q2FudmFzVGV4dH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGUgMjAwMG1zIGxpbmVhciBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZTthbmltYXRpb24tZHVyYXRpb246NDAwMG1zO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2sgMTAwMDBtcyBjdWJpYy1iZXppZXIoMC44NywgMC4wMywgMC4zMywgMSkgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2V9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGV7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLTEwMHswJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MC4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2t7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0yNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMTcwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgyMzQwZGVnKX03NSV7dHJhbnNmb3JtOnJvdGF0ZSgzNTEwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoNDY4MGRlZyl9fQpgLG9HPTEwMCx5SXQ9MTAseEl0PUZzKGNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuX2VsZW1lbnRSZWY9bn19LCJwcmltYXJ5IiksbDI9bmV3IHl0KCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OnZJdH0pO2Z1bmN0aW9uIHZJdCgpe3JldHVybntkaWFtZXRlcjpvR319dmFyIHdJdD1gCiBAa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtRElBTUVURVIgewogICAgMCUgICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlKDApOyB9CiAgICAxMi41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH0KICAgIDEyLjUwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKTsgfQogICAgMjUlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKTsgfQoKICAgIDI1LjAwMDElICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyB9CiAgICAzNy41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgfQogICAgMzcuNTAwMSUgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKTsgfQogICAgNTAlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgxNjEuNWRlZyk7IH0KCiAgICA1MC4wMDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9CiAgICA2Mi41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfQogICAgNjIuNTAwMSUgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKTsgfQogICAgNzUlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyk7IH0KCiAgICA3NS4wMDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KICAgIDg3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KICAgIDg3LjUwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyk7IH0KICAgIDEwMCUgICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpOyB9CiAgfQpgLFNsPWNsYXNzIGV4dGVuZHMgeEl0e2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7c3VwZXIodCksdGhpcy5fZG9jdW1lbnQ9byx0aGlzLl9kaWFtZXRlcj1vRyx0aGlzLl92YWx1ZT0wLHRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uPSExLHRoaXMubW9kZT0iZGV0ZXJtaW5hdGUiO2xldCByPVNsLl9kaWFtZXRlcnM7dGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLHIuaGFzKG8uaGVhZCl8fHIuc2V0KG8uaGVhZCxuZXcgU2V0KFtvR10pKSx0aGlzLl9mYWxsYmFja0FuaW1hdGlvbj1lLkVER0V8fGUuVFJJREVOVCx0aGlzLl9ub29wQW5pbWF0aW9ucz1pPT09Ik5vb3BBbmltYXRpb25zIiYmISFhJiYhYS5fZm9yY2VBbmltYXRpb25zLGEmJihhLmRpYW1ldGVyJiYodGhpcy5kaWFtZXRlcj1hLmRpYW1ldGVyKSxhLnN0cm9rZVdpZHRoJiYodGhpcy5zdHJva2VXaWR0aD1hLnN0cm9rZVdpZHRoKSl9Z2V0IGRpYW1ldGVyKCl7cmV0dXJuIHRoaXMuX2RpYW1ldGVyfXNldCBkaWFtZXRlcih0KXt0aGlzLl9kaWFtZXRlcj1SaSh0KSx0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWw9dGhpcy5fZ2V0U3Bpbm5lckFuaW1hdGlvbkxhYmVsKCksIXRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uJiZ0aGlzLl9zdHlsZVJvb3QmJnRoaXMuX2F0dGFjaFN0eWxlTm9kZSgpfWdldCBzdHJva2VXaWR0aCgpe3JldHVybiB0aGlzLl9zdHJva2VXaWR0aHx8dGhpcy5kaWFtZXRlci8xMH1zZXQgc3Ryb2tlV2lkdGgodCl7dGhpcy5fc3Ryb2tlV2lkdGg9UmkodCl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMubW9kZT09PSJkZXRlcm1pbmF0ZSI/dGhpcy5fdmFsdWU6MH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAsUmkodCkpKX1uZ09uSW5pdCgpe2xldCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl9zdHlsZVJvb3Q9bkkodCl8fHRoaXMuX2RvY3VtZW50LmhlYWQsdGhpcy5fYXR0YWNoU3R5bGVOb2RlKCk7bGV0IGU9YG1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUke3RoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uPyItZmFsbGJhY2siOiIifS1hbmltYXRpb25gO3QuY2xhc3NMaXN0LmFkZChlKX1fZ2V0Q2lyY2xlUmFkaXVzKCl7cmV0dXJuKHRoaXMuZGlhbWV0ZXIteUl0KS8yfV9nZXRWaWV3Qm94KCl7bGV0IHQ9dGhpcy5fZ2V0Q2lyY2xlUmFkaXVzKCkqMit0aGlzLnN0cm9rZVdpZHRoO3JldHVybmAwIDAgJHt0fSAke3R9YH1fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpe3JldHVybiAyKk1hdGguUEkqdGhpcy5fZ2V0Q2lyY2xlUmFkaXVzKCl9X2dldFN0cm9rZURhc2hPZmZzZXQoKXtyZXR1cm4gdGhpcy5tb2RlPT09ImRldGVybWluYXRlIj90aGlzLl9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkqKDEwMC10aGlzLl92YWx1ZSkvMTAwOnRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uJiZ0aGlzLm1vZGU9PT0iaW5kZXRlcm1pbmF0ZSI/dGhpcy5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpKi4yOm51bGx9X2dldENpcmNsZVN0cm9rZVdpZHRoKCl7cmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGgvdGhpcy5kaWFtZXRlcioxMDB9X2F0dGFjaFN0eWxlTm9kZSgpe2xldCB0PXRoaXMuX3N0eWxlUm9vdCxlPXRoaXMuX2RpYW1ldGVyLG89U2wuX2RpYW1ldGVycyxpPW8uZ2V0KHQpO2lmKCFpfHwhaS5oYXMoZSkpe2xldCBhPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7YS5zZXRBdHRyaWJ1dGUoIm1hdC1zcGlubmVyLWFuaW1hdGlvbiIsdGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsKSxhLnRleHRDb250ZW50PXRoaXMuX2dldEFuaW1hdGlvblRleHQoKSx0LmFwcGVuZENoaWxkKGEpLGl8fChpPW5ldyBTZXQsby5zZXQodCxpKSksaS5hZGQoZSl9fV9nZXRBbmltYXRpb25UZXh0KCl7bGV0IHQ9dGhpcy5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpO3JldHVybiB3SXQucmVwbGFjZSgvU1RBUlRfVkFMVUUvZyxgJHsuOTUqdH1gKS5yZXBsYWNlKC9FTkRfVkFMVUUvZyxgJHsuMip0fWApLnJlcGxhY2UoL0RJQU1FVEVSL2csYCR7dGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsfWApfV9nZXRTcGlubmVyQW5pbWF0aW9uTGFiZWwoKXtyZXR1cm4gdGhpcy5kaWFtZXRlci50b1N0cmluZygpLnJlcGxhY2UoIi4iLCJfIil9fTtTbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxTbCkodihMKSx2KFZ0KSx2KF90LDgpLHYoc24sOCksdihsMikpfTtTbC5cdTAyNzVjbXA9eih7dHlwZTpTbCxzZWxlY3RvcnM6W1sibWF0LXByb2dyZXNzLXNwaW5uZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsInByb2dyZXNzYmFyIiwidGFiaW5kZXgiLCItMSIsMSwibWF0LXByb2dyZXNzLXNwaW5uZXIiXSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJihyZSgiYXJpYS12YWx1ZW1pbiIsZS5tb2RlPT09ImRldGVybWluYXRlIj8wOm51bGwpKCJhcmlhLXZhbHVlbWF4IixlLm1vZGU9PT0iZGV0ZXJtaW5hdGUiPzEwMDpudWxsKSgiYXJpYS12YWx1ZW5vdyIsZS5tb2RlPT09ImRldGVybWluYXRlIj9lLnZhbHVlOm51bGwpKCJtb2RlIixlLm1vZGUpLHFlKCJ3aWR0aCIsZS5kaWFtZXRlciwicHgiKSgiaGVpZ2h0IixlLmRpYW1ldGVyLCJweCIpLG1lKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsZS5fbm9vcEFuaW1hdGlvbnMpKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLG1vZGU6Im1vZGUiLGRpYW1ldGVyOiJkaWFtZXRlciIsc3Ryb2tlV2lkdGg6InN0cm9rZVdpZHRoIix2YWx1ZToidmFsdWUifSxleHBvcnRBczpbIm1hdFByb2dyZXNzU3Bpbm5lciJdLGZlYXR1cmVzOlthZV0sZGVjbHM6Myx2YXJzOjgsY29uc3RzOltbInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0IiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJhcmlhLWhpZGRlbiIsInRydWUiLDMsIm5nU3dpdGNoIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJhbmltYXRpb24tbmFtZSIsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEtuKCksdSgwLCJzdmciLDApLGsoMSxNSXQsMSw5LCJjaXJjbGUiLDEpLGsoMixiSXQsMSw3LCJjaXJjbGUiLDIpLGgoKSksdCYyJiYocWUoIndpZHRoIixlLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLGUuZGlhbWV0ZXIsInB4IiksUCgibmdTd2l0Y2giLGUubW9kZT09PSJpbmRldGVybWluYXRlIikscmUoInZpZXdCb3giLGUuX2dldFZpZXdCb3goKSkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLCEwKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsITEpKX0sZGlyZWN0aXZlczpbR28sdWldLHN0eWxlczpbR2x0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtTbC5fZGlhbWV0ZXJzPW5ldyBXZWFrTWFwO1NsLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbbDJdfV19XTtTbC5wcm9wRGVjb3JhdG9ycz17ZGlhbWV0ZXI6W3t0eXBlOmR9XSxzdHJva2VXaWR0aDpbe3R5cGU6ZH1dLG1vZGU6W3t0eXBlOmR9XSx2YWx1ZTpbe3R5cGU6ZH1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU2wsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsZXhwb3J0QXM6Im1hdFByb2dyZXNzU3Bpbm5lciIsaG9zdDp7cm9sZToicHJvZ3Jlc3NiYXIiLGNsYXNzOiJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsdGFiaW5kZXg6Ii0xIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyIsIltzdHlsZS53aWR0aC5weF0iOiJkaWFtZXRlciIsIltzdHlsZS5oZWlnaHQucHhdIjoiZGlhbWV0ZXIiLCJbYXR0ci5hcmlhLXZhbHVlbWluXSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyAwIDogbnVsbCcsIlthdHRyLmFyaWEtdmFsdWVtYXhdIjonbW9kZSA9PT0gImRldGVybWluYXRlIiA/IDEwMCA6IG51bGwnLCJbYXR0ci5hcmlhLXZhbHVlbm93XSI6J21vZGUgPT09ICJkZXRlcm1pbmF0ZSIgPyB2YWx1ZSA6IG51bGwnLCJbYXR0ci5tb2RlXSI6Im1vZGUifSxpbnB1dHM6WyJjb2xvciJdLHRlbXBsYXRlOmA8IS0tCiAgcHJlc2VydmVBc3BlY3RSYXRpbyBvZiB4TWlkWU1pZCBtZWV0IGFzIHRoZSBjZW50ZXIgb2YgdGhlIHZpZXdwb3J0IGlzIHRoZSBjaXJjbGUncwogIGNlbnRlci4gVGhlIGNlbnRlciBvZiB0aGUgY2lyY2xlIHdpbGwgcmVtYWluIGF0IHRoZSBjZW50ZXIgb2YgdGhlIG1hdC1wcm9ncmVzcy1zcGlubmVyCiAgZWxlbWVudCBjb250YWluaW5nIHRoZSBTVkcuIFxgZm9jdXNhYmxlPSJmYWxzZSJcYCBwcmV2ZW50cyBJRSBmcm9tIGFsbG93aW5nIHRoZSB1c2VyIHRvCiAgdGFiIGludG8gdGhlIFNWRyBlbGVtZW50LgotLT4KPCEtLQogIEFsbCBjaGlsZHJlbiBuZWVkIHRvIGJlIGhpZGRlbiBmb3Igc2NyZWVuIHJlYWRlcnMgaW4gb3JkZXIgdG8gc3VwcG9ydCBDaHJvbWVWb3guCiAgTW9yZSBjb250ZXh0IGluIHRoZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9pc3N1ZXMvMjIxNjUuCi0tPgo8c3ZnCiAgW3N0eWxlLndpZHRoLnB4XT0iZGlhbWV0ZXIiCiAgW3N0eWxlLmhlaWdodC5weF09ImRpYW1ldGVyIgogIFthdHRyLnZpZXdCb3hdPSJfZ2V0Vmlld0JveCgpIgogIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiCiAgZm9jdXNhYmxlPSJmYWxzZSIKICBbbmdTd2l0Y2hdPSJtb2RlID09PSAnaW5kZXRlcm1pbmF0ZSciCiAgYXJpYS1oaWRkZW49InRydWUiPgoKICA8IS0tCiAgICBUZWNobmljYWxseSB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgXGBjaXJjbGVcYCBlbGVtZW50LCBob3dldmVyIFNhZmFyaSBoYXMgYW4gaXNzdWUgdGhhdCBicmVha3MKICAgIHRoZSBTVkcgcmVuZGVyaW5nIGluIGRldGVybWluYXRlIG1vZGUsIGFmdGVyIHN3aXRjaGluZyBiZXR3ZWVuIGluZGV0ZXJtaW5hdGUgYW5kIGRldGVybWluYXRlLgogICAgVXNpbmcgYSBkaWZmZXJlbnQgZWxlbWVudCBhdm9pZHMgdGhlIGlzc3VlLiBBbiBhbHRlcm5hdGl2ZSB0byB0aGlzIGlzIGFkZGluZyBcYGRpc3BsYXk6IG5vbmVcYAogICAgZm9yIGEgc3BsaXQgc2Vjb25kIGFuZCB0aGVuIHJlbW92aW5nIGl0IHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gbW9kZXMsIGJ1dCBpdCdzIGhhcmQgdG8ga25vdwogICAgZm9yIGhvdyBsb25nIHRvIGhpZGUgdGhlIGVsZW1lbnQgYW5kIGl0IGNhbiBjYXVzZSB0aGUgVUkgdG8gYmxpbmsuCiAgLS0+CiAgPGNpcmNsZQogICAgKm5nU3dpdGNoQ2FzZT0idHJ1ZSIKICAgIGN4PSI1MCUiCiAgICBjeT0iNTAlIgogICAgW2F0dHIucl09Il9nZXRDaXJjbGVSYWRpdXMoKSIKICAgIFtzdHlsZS5hbmltYXRpb24tbmFtZV09IidtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLScgKyBfc3Bpbm5lckFuaW1hdGlvbkxhYmVsIgogICAgW3N0eWxlLnN0cm9rZS1kYXNob2Zmc2V0LnB4XT0iX2dldFN0cm9rZURhc2hPZmZzZXQoKSIKICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSIKICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT4KCiAgPGNpcmNsZQogICAgKm5nU3dpdGNoQ2FzZT0iZmFsc2UiCiAgICBjeD0iNTAlIgogICAgY3k9IjUwJSIKICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiCiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hvZmZzZXQucHhdPSJfZ2V0U3Ryb2tlRGFzaE9mZnNldCgpIgogICAgW3N0eWxlLnN0cm9rZS1kYXNoYXJyYXkucHhdPSJfZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpIgogICAgW3N0eWxlLnN0cm9rZS13aWR0aC4lXT0iX2dldENpcmNsZVN0cm9rZVdpZHRoKCkiPjwvY2lyY2xlPgo8L3N2Zz4KYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxzdHlsZXM6W2AubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW59Lm1hdC1wcm9ncmVzcy1zcGlubmVyIHN2Z3twb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dG9wOjA7bGVmdDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO292ZXJmbG93OnZpc2libGV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtmaWxsOnRyYW5zcGFyZW50O3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246c3Ryb2tlLWRhc2hvZmZzZXQgMjI1bXMgbGluZWFyfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXtzdHJva2U6Y3VycmVudENvbG9yO3N0cm9rZTpDYW52YXNUZXh0fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZSAyMDAwbXMgbGluZWFyIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3t0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIHN2Z3thbmltYXRpb246bWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFjayAxMDAwMG1zIGN1YmljLWJlemllcigwLjg3LCAwLjAzLCAwLjMzLCAxKSBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItbGluZWFyLXJvdGF0ZXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSgzNjBkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtMTAwezAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDApfTEyLjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpfTI1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX0zNy41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpfTUwLjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKX02Mi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1JXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpfTc1LjAwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKX04Ny41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDM0MS41ZGVnKX0xMDAle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9fUBrZXlmcmFtZXMgbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS1mYWxsYmFja3swJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTI1JXt0cmFuc2Zvcm06cm90YXRlKDExNzBkZWcpfTUwJXt0cmFuc2Zvcm06cm90YXRlKDIzNDBkZWcpfTc1JXt0cmFuc2Zvcm06cm90YXRlKDM1MTBkZWcpfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZSg0NjgwZGVnKX19CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpWdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbX3RdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W3NuXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltsMl19XX1dfSx7bW9kZTpbe3R5cGU6ZH1dLGRpYW1ldGVyOlt7dHlwZTpkfV0sc3Ryb2tlV2lkdGg6W3t0eXBlOmR9XSx2YWx1ZTpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBxcj1jbGFzcyBleHRlbmRzIFNse2NvbnN0cnVjdG9yKHQsZSxvLGksYSl7c3VwZXIodCxlLG8saSxhKSx0aGlzLm1vZGU9ImluZGV0ZXJtaW5hdGUifX07cXIuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cXIpKHYoTCksdihWdCksdihfdCw4KSx2KHNuLDgpLHYobDIpKX07cXIuXHUwMjc1Y21wPXooe3R5cGU6cXIsc2VsZWN0b3JzOltbIm1hdC1zcGlubmVyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJwcm9ncmVzc2JhciIsIm1vZGUiLCJpbmRldGVybWluYXRlIiwxLCJtYXQtc3Bpbm5lciIsIm1hdC1wcm9ncmVzcy1zcGlubmVyIl0saG9zdFZhcnM6Nixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJihxZSgid2lkdGgiLGUuZGlhbWV0ZXIsInB4IikoImhlaWdodCIsZS5kaWFtZXRlciwicHgiKSxtZSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLGUuX25vb3BBbmltYXRpb25zKSl9LGlucHV0czp7Y29sb3I6ImNvbG9yIn0sZmVhdHVyZXM6W2FlXSxkZWNsczozLHZhcnM6OCxjb25zdHM6W1sicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaWRZTWlkIG1lZXQiLCJmb2N1c2FibGUiLCJmYWxzZSIsImFyaWEtaGlkZGVuIiwidHJ1ZSIsMywibmdTd2l0Y2giXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiLDMsImFuaW1hdGlvbi1uYW1lIiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLXdpZHRoIiw0LCJuZ1N3aXRjaENhc2UiXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiLDMsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoS24oKSx1KDAsInN2ZyIsMCksaygxLE9JdCwxLDksImNpcmNsZSIsMSksaygyLFBJdCwxLDcsImNpcmNsZSIsMiksaCgpKSx0JjImJihxZSgid2lkdGgiLGUuZGlhbWV0ZXIsInB4IikoImhlaWdodCIsZS5kaWFtZXRlciwicHgiKSxQKCJuZ1N3aXRjaCIsZS5tb2RlPT09ImluZGV0ZXJtaW5hdGUiKSxyZSgidmlld0JveCIsZS5fZ2V0Vmlld0JveCgpKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsITApLHgoMSksUCgibmdTd2l0Y2hDYXNlIiwhMSkpfSxkaXJlY3RpdmVzOltHbyx1aV0sc3R5bGVzOltHbHRdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO3FyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbbDJdfV19XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocXIsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtc3Bpbm5lciIsaG9zdDp7cm9sZToicHJvZ3Jlc3NiYXIiLG1vZGU6ImluZGV0ZXJtaW5hdGUiLGNsYXNzOiJtYXQtc3Bpbm5lciBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciIsIltjbGFzcy5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZV0iOiJfbm9vcEFuaW1hdGlvbnMiLCJbc3R5bGUud2lkdGgucHhdIjoiZGlhbWV0ZXIiLCJbc3R5bGUuaGVpZ2h0LnB4XSI6ImRpYW1ldGVyIn0saW5wdXRzOlsiY29sb3IiXSx0ZW1wbGF0ZTpgPCEtLQogIHByZXNlcnZlQXNwZWN0UmF0aW8gb2YgeE1pZFlNaWQgbWVldCBhcyB0aGUgY2VudGVyIG9mIHRoZSB2aWV3cG9ydCBpcyB0aGUgY2lyY2xlJ3MKICBjZW50ZXIuIFRoZSBjZW50ZXIgb2YgdGhlIGNpcmNsZSB3aWxsIHJlbWFpbiBhdCB0aGUgY2VudGVyIG9mIHRoZSBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lcgogIGVsZW1lbnQgY29udGFpbmluZyB0aGUgU1ZHLiBcYGZvY3VzYWJsZT0iZmFsc2UiXGAgcHJldmVudHMgSUUgZnJvbSBhbGxvd2luZyB0aGUgdXNlciB0bwogIHRhYiBpbnRvIHRoZSBTVkcgZWxlbWVudC4KLS0+CjwhLS0KICBBbGwgY2hpbGRyZW4gbmVlZCB0byBiZSBoaWRkZW4gZm9yIHNjcmVlbiByZWFkZXJzIGluIG9yZGVyIHRvIHN1cHBvcnQgQ2hyb21lVm94LgogIE1vcmUgY29udGV4dCBpbiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvaXNzdWVzLzIyMTY1LgotLT4KPHN2ZwogIFtzdHlsZS53aWR0aC5weF09ImRpYW1ldGVyIgogIFtzdHlsZS5oZWlnaHQucHhdPSJkaWFtZXRlciIKICBbYXR0ci52aWV3Qm94XT0iX2dldFZpZXdCb3goKSIKICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0IgogIGZvY3VzYWJsZT0iZmFsc2UiCiAgW25nU3dpdGNoXT0ibW9kZSA9PT0gJ2luZGV0ZXJtaW5hdGUnIgogIGFyaWEtaGlkZGVuPSJ0cnVlIj4KCiAgPCEtLQogICAgVGVjaG5pY2FsbHkgd2UgY2FuIHJldXNlIHRoZSBzYW1lIFxgY2lyY2xlXGAgZWxlbWVudCwgaG93ZXZlciBTYWZhcmkgaGFzIGFuIGlzc3VlIHRoYXQgYnJlYWtzCiAgICB0aGUgU1ZHIHJlbmRlcmluZyBpbiBkZXRlcm1pbmF0ZSBtb2RlLCBhZnRlciBzd2l0Y2hpbmcgYmV0d2VlbiBpbmRldGVybWluYXRlIGFuZCBkZXRlcm1pbmF0ZS4KICAgIFVzaW5nIGEgZGlmZmVyZW50IGVsZW1lbnQgYXZvaWRzIHRoZSBpc3N1ZS4gQW4gYWx0ZXJuYXRpdmUgdG8gdGhpcyBpcyBhZGRpbmcgXGBkaXNwbGF5OiBub25lXGAKICAgIGZvciBhIHNwbGl0IHNlY29uZCBhbmQgdGhlbiByZW1vdmluZyBpdCB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIG1vZGVzLCBidXQgaXQncyBoYXJkIHRvIGtub3cKICAgIGZvciBob3cgbG9uZyB0byBoaWRlIHRoZSBlbGVtZW50IGFuZCBpdCBjYW4gY2F1c2UgdGhlIFVJIHRvIGJsaW5rLgogIC0tPgogIDxjaXJjbGUKICAgICpuZ1N3aXRjaENhc2U9InRydWUiCiAgICBjeD0iNTAlIgogICAgY3k9IjUwJSIKICAgIFthdHRyLnJdPSJfZ2V0Q2lyY2xlUmFkaXVzKCkiCiAgICBbc3R5bGUuYW5pbWF0aW9uLW5hbWVdPSInbWF0LXByb2dyZXNzLXNwaW5uZXItc3Ryb2tlLXJvdGF0ZS0nICsgX3NwaW5uZXJBbmltYXRpb25MYWJlbCIKICAgIFtzdHlsZS5zdHJva2UtZGFzaG9mZnNldC5weF09Il9nZXRTdHJva2VEYXNoT2Zmc2V0KCkiCiAgICBbc3R5bGUuc3Ryb2tlLWRhc2hhcnJheS5weF09Il9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkiCiAgICBbc3R5bGUuc3Ryb2tlLXdpZHRoLiVdPSJfZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSI+PC9jaXJjbGU+CgogIDxjaXJjbGUKICAgICpuZ1N3aXRjaENhc2U9ImZhbHNlIgogICAgY3g9IjUwJSIKICAgIGN5PSI1MCUiCiAgICBbYXR0ci5yXT0iX2dldENpcmNsZVJhZGl1cygpIgogICAgW3N0eWxlLnN0cm9rZS1kYXNob2Zmc2V0LnB4XT0iX2dldFN0cm9rZURhc2hPZmZzZXQoKSIKICAgIFtzdHlsZS5zdHJva2UtZGFzaGFycmF5LnB4XT0iX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSIKICAgIFtzdHlsZS5zdHJva2Utd2lkdGguJV09Il9nZXRDaXJjbGVTdHJva2VXaWR0aCgpIj48L2NpcmNsZT4KPC9zdmc+CmAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsc3R5bGVzOltgLm1hdC1wcm9ncmVzcy1zcGlubmVye2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBzdmd7cG9zaXRpb246YWJzb2x1dGU7dHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpO3RvcDowO2xlZnQ6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7ZmlsbDp0cmFuc3BhcmVudDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnN0cm9rZS1kYXNob2Zmc2V0IDIyNW1zIGxpbmVhcn0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGV7c3Ryb2tlOmN1cnJlbnRDb2xvcjtzdHJva2U6Q2FudmFzVGV4dH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGUgMjAwMG1zIGxpbmVhciBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVdIGNpcmNsZXt0cmFuc2l0aW9uLXByb3BlcnR5OnN0cm9rZTthbmltYXRpb24tZHVyYXRpb246NDAwMG1zO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBzdmd7YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2sgMTAwMDBtcyBjdWJpYy1iZXppZXIoMC44NywgMC4wMywgMC4zMywgMSkgaW5maW5pdGV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gc3Zne3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2V9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGV7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLTEwMHswJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MC4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2t7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0yNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMTcwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgyMzQwZGVnKX03NSV7dHJhbnNmb3JtOnJvdGF0ZSgzNTEwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoNDY4MGRlZyl9fQpgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VnR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbbDJdfV19XX0sbnVsbCl9KSgpO3ZhciBsYT1jbGFzc3t9O2xhLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGxhKX07bGEuXHUwMjc1bW9kPXEoe3R5cGU6bGF9KTtsYS5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW0R0LFldLER0XX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhsYSxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbRHQsWV0sZXhwb3J0czpbU2wscXIsRHRdLGRlY2xhcmF0aW9uczpbU2wscXJdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGxhLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bU2wscXJdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0R0LFldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1NsLHFyLER0XX19KX0pKCk7dmFyIFNJdD1bInJlZ2V4U3RyaW5nSW5wdXQiXTtmdW5jdGlvbiBSSXQobix0KXtpZihuJjEmJihFbigwKSx1KDEsImxpIiwyMiksVCgyKSxoKCksa24oKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdDt4KDEpLFAoInRpdGxlIixlLm5hbWUpLHgoMSksSWUoZS5uYW1lKX19ZnVuY3Rpb24gRUl0KG4sdCl7aWYobiYxJiYodSgwLCJsaSIsMjMpLHUoMSwiZW0iKSxUKDIpLFgoMywibnVtYmVyIiksaCgpLGgoKSksbiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0O3goMiksbGUoImFuZCAiLFEoMywxLGUucnVucy5sZW5ndGgtNSksIiBtb3JlIil9fWZ1bmN0aW9uIGtJdChuLHQpe24mMSYmKHUoMCwibGkiLDI0KSx1KDEsImVtIiksVCgyLCJObyBydW5zIGFyZSBpbiB0aGUgZ3JvdXAiKSxoKCksaCgpKX12YXIgTkl0PWZ1bmN0aW9uKG4pe3JldHVybntib3JkZXJDb2xvcjpufX0sVEl0PWZ1bmN0aW9uKG4pe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6bn19O2Z1bmN0aW9uIEFJdChuLHQpe2lmKG4mMSYmKHUoMCwidWwiLDE2KSx1KDEsImxpIiksdSgyLCJsYWJlbCIpLEQoMywic3BhbiIsMTcpLHUoNCwiY29kZSIsMTgpLFQoNSksaCgpLGgoKSx1KDYsInVsIiksayg3LFJJdCwzLDIsIm5nLWNvbnRhaW5lciIsMTkpLFgoOCwic2xpY2UiKSxrKDksRUl0LDQsMywibGkiLDIwKSxrKDEwLGtJdCwzLDAsImxpIiwyMSksaCgpLGgoKSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQ7UCgibmdTdHlsZSIsYW8oMTEsTkl0LGUuY29sb3IpKSx4KDMpLFAoIm5nU3R5bGUiLGFvKDEzLFRJdCxlLmNvbG9yKSkseCgxKSxQKCJ0aXRsZSIsZS5ncm91cElkKSx4KDEpLEllKGUuZ3JvdXBJZCkseCgyKSxQKCJuZ0Zvck9mIixVQig4LDcsZS5ydW5zLDAsNSkpLHgoMiksUCgibmdJZiIsZS5ydW5zLmxlbmd0aD41KSx4KDEpLFAoIm5nSWYiLGUucnVucy5sZW5ndGg9PT0wKX19ZnVuY3Rpb24gREl0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDE0KSxrKDEsQUl0LDExLDE1LCJ1bCIsMTUpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goMSksUCgibmdGb3JPZiIsZS5jb2xvclJ1blBhaXJMaXN0KX19ZnVuY3Rpb24gSUl0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDI1KSxUKDEsIiBUaGVyZSBhcmUgbm8gcnVucyBtYXRjaGluZyB0aGUgcmVnZXgsICIpLHUoMiwiY29kZSIpLFQoMyksaCgpLFQoNCwiLiBQbGVhc2UgY2hlY2sgaWYgeW91ciByZWdleCBzdHJpbmcgaXMgY29ycmVjdC4gIiksaCgpKSxuJjIpe2xldCBlPVMoMik7eCgzKSxsZSgiLyIsZS5yZWdleFN0cmluZywiLyIpfX1mdW5jdGlvbiB6SXQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMTApLHUoMSwiaDQiKSxUKDIsIkNvbG9yIGdyb3VwIHByZXZpZXciKSxoKCksdSgzLCJkaXYiLDExKSxrKDQsREl0LDIsMSwiZGl2IiwxMiksayg1LElJdCw1LDEsIm5nLXRlbXBsYXRlIixudWxsLDEzLHhuKSxoKCksaCgpKSxuJjIpe2xldCBlPXdlKDYpLG89UygpO3goNCksUCgibmdJZiIsby5jb2xvclJ1blBhaXJMaXN0Lmxlbmd0aCkoIm5nSWZFbHNlIixlKX19dmFyIFIwPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5kaWFsb2dSZWY9dCx0aGlzLmhvc3RFbFJlZj1lLHRoaXMub25TYXZlPW5ldyAkLHRoaXMucmVnZXhJbnB1dE9uQ2hhbmdlPW5ldyAkLHRoaXMudGltZU91dElkPTB9cmVzZXRGb2N1cygpe3RoaXMuaG9zdEVsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl8fHRoaXMucmVnZXhTdHJpbmdJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCl9b25FbnRlcih0KXt0aGlzLm9uU2F2ZUNsaWNrKHQpLHRoaXMuZGlhbG9nUmVmLmNsb3NlKCl9b25TYXZlQ2xpY2sodCl7dGhpcy5vblNhdmUuZW1pdCh0KX1maWxsRXhhbXBsZSh0KXt0aGlzLnJlZ2V4U3RyaW5nPXQsdGhpcy5yZWdleElucHV0Q2hhbmdlKHQpfXJlZ2V4SW5wdXRDaGFuZ2UodCl7dGhpcy5yZWdleElucHV0T25DaGFuZ2UuZW1pdCh0KX1oYW5kbGVGb2N1c091dCgpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVPdXRJZCksdGhpcy50aW1lT3V0SWQ9c2V0VGltZW91dCh0aGlzLnJlc2V0Rm9jdXMuYmluZCh0aGlzKSwwKX19O1IwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFIwKSh2KE9sKSx2KEwpKX07UjAuXHUwMjc1Y21wPXooe3R5cGU6UjAsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJnBlKFNJdCw3KSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLnJlZ2V4U3RyaW5nSW5wdXQ9by5maXJzdCl9fSxpbnB1dHM6e3JlZ2V4U3RyaW5nOiJyZWdleFN0cmluZyIsY29sb3JSdW5QYWlyTGlzdDoiY29sb3JSdW5QYWlyTGlzdCJ9LG91dHB1dHM6e29uU2F2ZToib25TYXZlIixyZWdleElucHV0T25DaGFuZ2U6InJlZ2V4SW5wdXRPbkNoYW5nZSJ9LGRlY2xzOjMwLHZhcnM6Mixjb25zdHM6ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gdHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/bj1nb29nLmdldE1zZygiQ29sb3IgUnVucyBieSBSZWdleCBRdWVyeSIpOm49JGxvY2FsaXplYDpDb2xvciBSdW5zIGJ5IFJlZ2V4IFF1ZXJ54pCfMTVlZDlmNmZkMmQ0OTA2YTQ4MDNmYzEyNTVkZTNjNWRiMmM1NjUzMOKQnzkwODg5ODUxMTM5NjAzMTI4MDg6Q29sb3IgUnVucyBieSBSZWdleCBRdWVyeWAsW1sxLCJyZWdleC1lZGl0LWRpYWxvZyIsMywiZm9jdXNvdXQiXSxbIm1hdC1kaWFsb2ctdGl0bGUiLCIiXSxbIm1hdElucHV0IiwiIiwiYXJpYS1sYWJlbCIsbiwiY2RrRm9jdXNJbml0aWFsIiwiIiwzLCJ2YWx1ZSIsImtleWRvd24uZW50ZXIiLCJpbnB1dCJdLFsicmVnZXhTdHJpbmdJbnB1dCIsIiJdLFsxLCJleGFtcGxlLWRldGFpbHMiXSxbMywiY2xpY2siXSxbImNsYXNzIiwiZ3JvdXAtY29udGFpbmVyIiw0LCJuZ0lmIl0sWyJtYXQtZGlhbG9nLWFjdGlvbnMiLCIiLCJhbGlnbiIsImVuZCJdLFsibWF0LWJ1dHRvbiIsIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIm1hdC1yYWlzZWQtYnV0dG9uIiwiIiwiY29sb3IiLCJwcmltYXJ5IiwibWF0LWRpYWxvZy1jbG9zZSIsIiIsMywiY2xpY2siXSxbMSwiZ3JvdXAtY29udGFpbmVyIl0sWzEsImdyb3VwaW5nLXByZXZpZXciXSxbImNsYXNzIiwibWF0Y2gtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImVtcHR5IiwiIl0sWzEsIm1hdGNoLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJncm91cCIsMywibmdTdHlsZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImdyb3VwIiwzLCJuZ1N0eWxlIl0sWzEsImNvbG9yLXN3YXRjaCIsMywibmdTdHlsZSJdLFsxLCJncm91cC1pZCIsMywidGl0bGUiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsIm1vcmUiLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tbWF0Y2giLDQsIm5nSWYiXSxbMywidGl0bGUiXSxbMSwibW9yZSJdLFsxLCJuby1tYXRjaCJdLFsxLCJ3YXJuaW5nIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe2lmKHQmMSl7bGV0IG89JHQoKTt1KDAsImRpdiIsMCksQSgiZm9jdXNvdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuaGFuZGxlRm9jdXNPdXQoKX0pLHUoMSwiaDEiLDEpLFQoMiwiQ29sb3IgcnVucyBieSByZWdleCIpLGgoKSx1KDMsIm1hdC1kaWFsb2ctY29udGVudCIpLHUoNCwicCIpLFQoNSwiRW50ZXIgYSByZWdleCB3aXRoIGNhcHR1cmluZyBncm91cHMgdG8gbWF0Y2ggYWdhaW5zdCBydW4gbmFtZXM6IiksaCgpLHUoNiwibWF0LWZvcm0tZmllbGQiKSx1KDcsImlucHV0IiwyLDMpLEEoImtleWRvd24uZW50ZXIiLGZ1bmN0aW9uKGEpe3JldHVybiBlLm9uRW50ZXIoYS50YXJnZXQudmFsdWUpfSkoImlucHV0IixmdW5jdGlvbihhKXtyZXR1cm4gZS5yZWdleElucHV0Q2hhbmdlKGEudGFyZ2V0LnZhbHVlKX0pLGgoKSxoKCksaCgpLHUoOSwiZGl2Iiw0KSx1KDEwLCJwIiksVCgxMSwnIEVhY2ggbWF0Y2hpbmcgcnVuIHdpbGwgYmUgYXNzaWduZWQgYSBjb2xvciBiYXNlZCBvbiB0aGUgImtleSIgZm9ybWVkIGJ5IGl0cyBtYXRjaGVzIHRvIHRoZSBjYXB0dXJpbmcgZ3JvdXBzLiAnKSxEKDEyLCJiciIpLHUoMTMsImJ1dHRvbiIsNSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUuZmlsbEV4YW1wbGUoIih0cmFpbnxldmFsKSIpfSksVCgxNCwiIFRyeSAiKSx1KDE1LCJjb2RlIiksVCgxNiwiKHRyYWlufGV2YWwpIiksaCgpLGgoKSxUKDE3LCIgdG8gYXNzaWduIGFsbCBydW5zIGNvbnRhaW5pbmcgIiksdSgxOCwiY29kZSIpLFQoMTksInRyYWluIiksaCgpLFQoMjAsIiB0byBvbmUgY29sb3IgYW5kIGFsbCBydW5zIGNvbnRhaW5pbmcgIiksdSgyMSwiY29kZSIpLFQoMjIsImV2YWwiKSxoKCksVCgyMywiIHRvIGFub3RoZXIgY29sb3IuICIpLGgoKSxoKCksaygyNCx6SXQsNywyLCJkaXYiLDYpLHUoMjUsImRpdiIsNyksdSgyNiwiYnV0dG9uIiw4KSxUKDI3LCJDYW5jZWwiKSxoKCksdSgyOCwiYnV0dG9uIiw5KSxBKCJjbGljayIsZnVuY3Rpb24oKXtPdChvKTtsZXQgYT13ZSg4KTtyZXR1cm4gZS5vblNhdmVDbGljayhhLnZhbHVlKX0pLFQoMjksIiBTYXZlICIpLGgoKSxoKCksaCgpfXQmMiYmKHgoNyksV2koInZhbHVlIixlLnJlZ2V4U3RyaW5nKSx4KDE3KSxQKCJuZ0lmIixlLnJlZ2V4U3RyaW5nKSl9LGRpcmVjdGl2ZXM6W2ZmLHBmLG9pLEVyLFh0LGRmLGZuLGxjLG1uLEhyXSxwaXBlczpbS2YsWGFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwwKTtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMTk3NmQyfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leGFtcGxlLWRldGFpbHNbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM0MmE1ZjV9LmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6IzdiMWZhMn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZXhhbXBsZS1kZXRhaWxzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06dmlzaXRlZCwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmV4YW1wbGUtZGV0YWlsc1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWR7Y29sb3I6I2JhNjhjOH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MTBweCAwfS5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206MTBweH0uZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZTouOWVtfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLndhcm5pbmdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXBpbmctcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO21heC1oZWlnaHQ6NTB2aDtvdmVyZmxvdy15OmF1dG87cGFkZGluZzoyMHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cGluZy1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwaW5nLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgIzU1NX0ubWF0Y2gtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6Z3JpZDtmbGV4LXdyYXA6d3JhcDtnYXA6MTBweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsIG1pbm1heCg1MCUsIDFmcikpfS5jb2xvci1zd2F0Y2hbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NTAlO2JveC1zaGFkb3c6MCAwIDJweCAjMDAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxNXB4O3dpZHRoOjE1cHh9dWxbX25nY29udGVudC0lQ09NUCVde2xpc3Qtc3R5bGUtdHlwZTpub25lO3BhZGRpbmc6MH1tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDttYXJnaW46MDtwYWRkaW5nOjEwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z2FwOjEwcHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm1heC1jb250ZW50IGF1dG87cGFkZGluZzo1cHggMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Lmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5ncm91cC1pZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45NWVtO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgdWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICB1bFtfbmdjb250ZW50LSVDT01QJV0gICBsaVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubW9yZVtfbmdjb250ZW50LSVDT01QJV0sIC5ncm91cFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7bWFyZ2luLXRvcDo1cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tb3JlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXBbX25nY29udGVudC0lQ09NUCVdICAgLm5vLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1tYXRjaFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUjAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJyZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJyZWdleF9lZGl0X2RpYWxvZy5uZy5odG1sIixzdHlsZVVybHM6WyJyZWdleF9lZGl0X2RpYWxvZ19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6T2x9LHt0eXBlOkx9XX0se3JlZ2V4U3RyaW5nOlt7dHlwZTpkfV0sY29sb3JSdW5QYWlyTGlzdDpbe3R5cGU6ZH1dLG9uU2F2ZTpbe3R5cGU6Qn1dLHJlZ2V4SW5wdXRPbkNoYW5nZTpbe3R5cGU6Qn1dLHJlZ2V4U3RyaW5nSW5wdXQ6W3t0eXBlOkl0LGFyZ3M6WyJyZWdleFN0cmluZ0lucHV0Iix7c3RhdGljOiEwfV19XX0pfSkoKTt2YXIgRkl0PTUwMCxRdT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5zdG9yZT10LHRoaXMuZGlhbG9nUmVmPWUsdGhpcy50ZW50YXRpdmVSZWdleFN0cmluZyQ9bmV3IEp0LHRoaXMuZ3JvdXBCeVJlZ2V4U3RyaW5nJD1CQygoKT0+eW4odGhpcy5zdG9yZS5zZWxlY3QoWEQpLnBpcGUoQ24oMSkpLHRoaXMudGVudGF0aXZlUmVnZXhTdHJpbmckKSkucGlwZShTbygiIikpLHRoaXMuY29sb3JSdW5QYWlyTGlzdCQ9QkMoKCk9PnRoaXMuZ3JvdXBCeVJlZ2V4U3RyaW5nJC5waXBlKGxyKEZJdCksdWUoaT0+e3RyeXtsZXQgYT1uZXcgUmVnRXhwKGkpO3JldHVybiBCb29sZWFuKGEpfWNhdGNoKGEpe3JldHVybiExfX0pLFBhKHRoaXMuYWxsUnVucyQsdGhpcy5ydW5JZFRvRWlkJCx0aGlzLnN0b3JlLnNlbGVjdChKbS5nZXRDb2xvclBhbGV0dGUpLHRoaXMuc3RvcmUuc2VsZWN0KFFiKSksRygoW2ksYSxyLHMsbF0pPT57bGV0IGM9e2tleTpiYS5SRUdFWCxyZWdleFN0cmluZzppfSxtPWpFKGMsYSxyKSxmPW5ldyBNYXAscD1bXTtmb3IobGV0W2csX11vZiBPYmplY3QuZW50cmllcyhtLm1hdGNoZXMpKXtsZXQgTT1mLmdldChnKTtpZighTSl7bGV0IHk9cy5jb2xvcnNbZi5zaXplJXMuY29sb3JzLmxlbmd0aF07TT1sP3kuZGFya0hleDp5LmxpZ2h0SGV4LGYuc2V0KGcsTSl9cC5wdXNoKHtncm91cElkOmcsY29sb3I6TSxydW5zOl99KX1yZXR1cm4gcH0pKSkucGlwZShTbyhbXSkpLHRoaXMuZXhwZXJpbWVudElkcz1vLmV4cGVyaW1lbnRJZHMsdGhpcy5ydW5JZFRvRWlkJD1vbih0aGlzLmV4cGVyaW1lbnRJZHMubWFwKGk9PnRoaXMuc3RvcmUuc2VsZWN0KFFpdCx7ZXhwZXJpbWVudElkOml9KS5waXBlKEcoYT0+KHtleHBlcmltZW50SWQ6aSxydW5JZHM6YX0pKSkpKS5waXBlKEcoaT0+e2xldCBhPXt9O2ZvcihsZXR7cnVuSWRzOnIsZXhwZXJpbWVudElkOnN9b2YgaSlmb3IobGV0IGwgb2YgcilhW2xdPXM7cmV0dXJuIGF9KSksdGhpcy5hbGxSdW5zJD1vbih0aGlzLmV4cGVyaW1lbnRJZHMubWFwKGk9PnRoaXMuc3RvcmUuc2VsZWN0KHRPLHtleHBlcmltZW50SWQ6aX0pKSkucGlwZShHKGk9PmkuZmxhdCgpKSl9b25SZWdleElucHV0T25DaGFuZ2UodCl7dGhpcy50ZW50YXRpdmVSZWdleFN0cmluZyQubmV4dCh0KX1vblNhdmUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChfMyh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMsZ3JvdXBCeTp7a2V5OmJhLlJFR0VYLHJlZ2V4U3RyaW5nOnR9fSkpfX07UXUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UXUpKHYoc3QpLHYoT2wpLHYoJHYpKX07UXUuXHUwMjc1Y21wPXooe3R5cGU6UXUsc2VsZWN0b3JzOltbInJlZ2V4LWVkaXQtZGlhbG9nIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJlZ2V4U3RyaW5nIiwiY29sb3JSdW5QYWlyTGlzdCIsIm9uU2F2ZSIsInJlZ2V4SW5wdXRPbkNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwicmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50IiwwKSxBKCJvblNhdmUiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uU2F2ZShpKX0pKCJyZWdleElucHV0T25DaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uUmVnZXhJbnB1dE9uQ2hhbmdlKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxoKCkpLHQmMiYmUCgicmVnZXhTdHJpbmciLFEoMSwyLGUuZ3JvdXBCeVJlZ2V4U3RyaW5nJCkpKCJjb2xvclJ1blBhaXJMaXN0IixRKDIsNCxlLmNvbG9yUnVuUGFpckxpc3QkKSl9LGRpcmVjdGl2ZXM6W1IwXSxwaXBlczpbb2VdLHN0eWxlczpbYFtfbmdob3N0LSVDT01QJV0sIHJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfWBdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFF1LFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoicmVnZXgtZWRpdC1kaWFsb2ciLHRlbXBsYXRlOmA8cmVnZXgtZWRpdC1kaWFsb2ctY29tcG9uZW50CiAgICBbcmVnZXhTdHJpbmddPSJncm91cEJ5UmVnZXhTdHJpbmckIHwgYXN5bmMiCiAgICBbY29sb3JSdW5QYWlyTGlzdF09ImNvbG9yUnVuUGFpckxpc3QkIHwgYXN5bmMiCiAgICAob25TYXZlKT0ib25TYXZlKCRldmVudCkiCiAgICAocmVnZXhJbnB1dE9uQ2hhbmdlKT0ib25SZWdleElucHV0T25DaGFuZ2UoJGV2ZW50KSIKICA+PC9yZWdleC1lZGl0LWRpYWxvZy1jb21wb25lbnQ+YCxzdHlsZXM6W2AKICAgICAgOmhvc3QsCiAgICAgIHJlZ2V4LWVkaXQtZGlhbG9nLWNvbXBvbmVudCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9LHt0eXBlOk9sfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOlskdl19XX1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gTEl0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxNCl9ZnVuY3Rpb24gQkl0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiYnV0dG9uIiwxMyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7T3QoZSk7bGV0IGk9UygpO3JldHVybiBpLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6aS5Hcm91cEJ5S2V5LkVYUEVSSU1FTlR9KX0pLHUoMSwic3BhbiIpLGsoMixMSXQsMSwwLCJtYXQtaWNvbiIsNyksaCgpLHUoMywibGFiZWwiKSxUKDQsIkV4cGVyaW1lbnQiKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO3JlKCJhcmlhLWNoZWNrZWQiLGUuc2VsZWN0ZWRHcm91cEJ5LmtleT09PWUuR3JvdXBCeUtleS5FWFBFUklNRU5UKSx4KDIpLFAoIm5nSWYiLGUuc2VsZWN0ZWRHcm91cEJ5LmtleT09PWUuR3JvdXBCeUtleS5FWFBFUklNRU5UKX19ZnVuY3Rpb24gVkl0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxNCl9ZnVuY3Rpb24gakl0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxNCl9ZnVuY3Rpb24gVUl0KG4sdCl7aWYobiYxJiYodSgwLCJsYWJlbCIpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLEllKGUucmVnZXhTdHJpbmcpfX1mdW5jdGlvbiBZSXQobix0KXtuJjEmJih1KDAsImxhYmVsIiwxNSksVCgxLCIobm9uZSBzZXQpIiksaCgpKX12YXIgRTA9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5kaWFsb2c9dCx0aGlzLkdyb3VwQnlLZXk9YmEsdGhpcy5vbkdyb3VwQnlDaGFuZ2U9bmV3ICR9b25SZWdleFN0cmluZ0VkaXQoKXtsZXQgdD10aGlzLmRpYWxvZy5vcGVuKFF1LHttYXhIZWlnaHQ6Ijk1dmgiLG1heFdpZHRoOiI4MHZ3IixkYXRhOntleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc319KX1vbkdyb3VwQnlSZWdleENsaWNrKCl7dGhpcy5yZWdleFN0cmluZz90aGlzLm9uR3JvdXBCeUNoYW5nZS5lbWl0KHtrZXk6YmEuUkVHRVgscmVnZXhTdHJpbmc6dGhpcy5yZWdleFN0cmluZ30pOnRoaXMub25SZWdleFN0cmluZ0VkaXQoKX19O0UwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEUwKSh2KENpKSl9O0UwLlx1MDI3NWNtcD16KHt0eXBlOkUwLHNlbGVjdG9yczpbWyJydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudCJdXSxpbnB1dHM6e3Nob3dFeHBlcmltZW50c0dyb3VwQnk6InNob3dFeHBlcmltZW50c0dyb3VwQnkiLGV4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHJlZ2V4U3RyaW5nOiJyZWdleFN0cmluZyIsc2VsZWN0ZWRHcm91cEJ5OiJzZWxlY3RlZEdyb3VwQnkifSxvdXRwdXRzOntvbkdyb3VwQnlDaGFuZ2U6Im9uR3JvdXBCeUNoYW5nZSJ9LGRlY2xzOjIyLHZhcnM6OCxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwidGl0bGUiLCJDb2xvciBydW5zIGJ5Li4uIiwzLCJtYXRNZW51VHJpZ2dlckZvciJdLFsic3ZnSWNvbiIsInBhbGV0dGVfMjRweCJdLFsxLCJydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkiXSxbImdyb3VwQnlNZW51IiwibWF0TWVudSJdLFsxLCJsYWJlbCJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbXJhZGlvIiwiZGF0YS12YWx1ZSIsImV4cGVyaW1lbnQiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtbWVudS1pdGVtIiwiIiwicm9sZSIsIm1lbnVpdGVtcmFkaW8iLCJkYXRhLXZhbHVlIiwicnVuIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImRvbmVfMjRweCIsNCwibmdJZiJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbXJhZGlvIiwiZGF0YS12YWx1ZSIsInJlZ2V4IiwzLCJjbGljayJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbSIsImRhdGEtdmFsdWUiLCJyZWdleC1lZGl0IiwxLCJkaXNwbGF5LXJlZ2V4LXN0cmluZyIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJlZGl0XzI0cHgiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJub25lLXNldC1zdHJpbmciLDQsIm5nSWYiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1yYWRpbyIsImRhdGEtdmFsdWUiLCJleHBlcmltZW50IiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImRvbmVfMjRweCJdLFsxLCJub25lLXNldC1zdHJpbmciXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImJ1dHRvbiIsMCksRCgxLCJtYXQtaWNvbiIsMSksaCgpLHUoMiwibWF0LW1lbnUiLDIsMyksdSg0LCJkaXYiLDQpLFQoNSwiQ29sb3IgcnVucyBieSIpLGgoKSxrKDYsQkl0LDUsMiwiYnV0dG9uIiw1KSx1KDcsImJ1dHRvbiIsNiksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Hcm91cEJ5Q2hhbmdlLmVtaXQoe2tleTplLkdyb3VwQnlLZXkuUlVOfSl9KSx1KDgsInNwYW4iKSxrKDksVkl0LDEsMCwibWF0LWljb24iLDcpLGgoKSx1KDEwLCJsYWJlbCIpLFQoMTEsIlJ1biIpLGgoKSxoKCksdSgxMiwiYnV0dG9uIiw4KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkdyb3VwQnlSZWdleENsaWNrKCl9KSx1KDEzLCJzcGFuIiksaygxNCxqSXQsMSwwLCJtYXQtaWNvbiIsNyksaCgpLHUoMTUsImxhYmVsIiksVCgxNiwiUmVnZXgiKSxoKCksaCgpLHUoMTcsImJ1dHRvbiIsOSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZWdleFN0cmluZ0VkaXQoKX0pLHUoMTgsInNwYW4iKSxEKDE5LCJtYXQtaWNvbiIsMTApLGgoKSxrKDIwLFVJdCwyLDEsImxhYmVsIiwxMSksaygyMSxZSXQsMiwwLCJsYWJlbCIsMTIpLGgoKSxoKCkpLHQmMil7bGV0IG89d2UoMyk7UCgibWF0TWVudVRyaWdnZXJGb3IiLG8pLHgoNiksUCgibmdJZiIsZS5zaG93RXhwZXJpbWVudHNHcm91cEJ5KSx4KDEpLHJlKCJhcmlhLWNoZWNrZWQiLGUuc2VsZWN0ZWRHcm91cEJ5LmtleT09PWUuR3JvdXBCeUtleS5SVU4pLHgoMiksUCgibmdJZiIsZS5zZWxlY3RlZEdyb3VwQnkua2V5PT09ZS5Hcm91cEJ5S2V5LlJVTikseCgzKSxyZSgiYXJpYS1jaGVja2VkIixlLnNlbGVjdGVkR3JvdXBCeS5rZXk9PT1lLkdyb3VwQnlLZXkuUkVHRVgpLHgoMiksUCgibmdJZiIsZS5zZWxlY3RlZEdyb3VwQnkua2V5PT09ZS5Hcm91cEJ5S2V5LlJFR0VYKSx4KDYpLFAoIm5nSWYiLGUucmVnZXhTdHJpbmcpLHgoMSksUCgibmdJZiIsIWUucmVnZXhTdHJpbmcpfX0sZGlyZWN0aXZlczpbZm4sVXIsWGUsaHIsWHQsJGldLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5e2ZvbnQtc2l6ZToxNnB4fSAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAubGFiZWx7Y29sb3I6IzYxNjE2MTtmb250LXNpemU6LjllbTttYXJnaW46MTBweCAwO3BhZGRpbmc6MCAxNnB4O3BvaW50ZXItZXZlbnRzOm5vbmV9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IGJ1dHRvbntkaXNwbGF5OmdyaWQ7Z2FwOjJweCAxMHB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczoyMHB4IGF1dG99ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IG1hdC1pY29ue2hlaWdodDoyMHB4O3dpZHRoOjIwcHh9ICAucnVuLXRhYmxlLWNvbG9yLWdyb3VwLWJ5IC5kaXNwbGF5LXJlZ2V4LXN0cmluZ3twYWRkaW5nLWxlZnQ6NDBweH0gIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmRpc3BsYXktcmVnZXgtc3RyaW5nIC5ub25lLXNldC1zdHJpbmd7Y29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAgIC5ydW4tdGFibGUtY29sb3ItZ3JvdXAtYnkgLmRpc3BsYXktcmVnZXgtc3RyaW5nIC5ub25lLXNldC1zdHJpbmcsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgICAgLnJ1bi10YWJsZS1jb2xvci1ncm91cC1ieSAuZGlzcGxheS1yZWdleC1zdHJpbmcgLm5vbmUtc2V0LXN0cmluZ3tjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhFMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InJ1bnMtZ3JvdXAtbWVudS1idXR0b24tY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoicnVuc19ncm91cF9tZW51X2J1dHRvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsicnVuc19ncm91cF9tZW51X2J1dHRvbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6Q2l9XX0se3Nob3dFeHBlcmltZW50c0dyb3VwQnk6W3t0eXBlOmR9XSxleHBlcmltZW50SWRzOlt7dHlwZTpkfV0scmVnZXhTdHJpbmc6W3t0eXBlOmR9XSxzZWxlY3RlZEdyb3VwQnk6W3t0eXBlOmR9XSxvbkdyb3VwQnlDaGFuZ2U6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgazA9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2hvd0V4cGVyaW1lbnRzR3JvdXBCeSQ9dGhpcy5zdG9yZS5zZWxlY3QoR290KS5waXBlKEcoZT0+ZS5oYXMoV28uQ09NUEFSRV9FWFBFUklNRU5UKSkpLHRoaXMuc2VsZWN0ZWRHcm91cEJ5JD10aGlzLnN0b3JlLnNlbGVjdChLaXQpLHRoaXMuZ3JvdXBCeVJlZ2V4U3RyaW5nJD10aGlzLnN0b3JlLnNlbGVjdChYRCl9b25Hcm91cEJ5Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goXzMoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzLGdyb3VwQnk6dH0pKX19O2swLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGswKSh2KHN0KSl9O2swLlx1MDI3NWNtcD16KHt0eXBlOmswLHNlbGVjdG9yczpbWyJydW5zLWdyb3VwLW1lbnUtYnV0dG9uIl1dLGlucHV0czp7ZXhwZXJpbWVudElkczoiZXhwZXJpbWVudElkcyJ9LGRlY2xzOjQsdmFyczoxMCxjb25zdHM6W1szLCJyZWdleFN0cmluZyIsInNlbGVjdGVkR3JvdXBCeSIsInNob3dFeHBlcmltZW50c0dyb3VwQnkiLCJleHBlcmltZW50SWRzIiwib25Hcm91cEJ5Q2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudCIsMCksQSgib25Hcm91cEJ5Q2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkdyb3VwQnlDaGFuZ2UoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxoKCkpLHQmMiYmUCgicmVnZXhTdHJpbmciLFEoMSw0LGUuZ3JvdXBCeVJlZ2V4U3RyaW5nJCkpKCJzZWxlY3RlZEdyb3VwQnkiLFEoMiw2LGUuc2VsZWN0ZWRHcm91cEJ5JCkpKCJzaG93RXhwZXJpbWVudHNHcm91cEJ5IixRKDMsOCxlLnNob3dFeHBlcmltZW50c0dyb3VwQnkkKSkoImV4cGVyaW1lbnRJZHMiLGUuZXhwZXJpbWVudElkcyl9LGRpcmVjdGl2ZXM6W0UwXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhrMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InJ1bnMtZ3JvdXAtbWVudS1idXR0b24iLHRlbXBsYXRlOmAKICAgIDxydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudAogICAgICBbcmVnZXhTdHJpbmddPSJncm91cEJ5UmVnZXhTdHJpbmckIHwgYXN5bmMiCiAgICAgIFtzZWxlY3RlZEdyb3VwQnldPSJzZWxlY3RlZEdyb3VwQnkkIHwgYXN5bmMiCiAgICAgIFtzaG93RXhwZXJpbWVudHNHcm91cEJ5XT0ic2hvd0V4cGVyaW1lbnRzR3JvdXBCeSQgfCBhc3luYyIKICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIgogICAgICAob25Hcm91cEJ5Q2hhbmdlKT0ib25Hcm91cEJ5Q2hhbmdlKCRldmVudCkiCiAgICA+PC9ydW5zLWdyb3VwLW1lbnUtYnV0dG9uLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LHtleHBlcmltZW50SWRzOlt7dHlwZTpkfV19KX0pKCk7dmFyIHFJdD1bImNvbnRhaW5lciJdO2Z1bmN0aW9uIFpJdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsIm1hdC1zbGlkZXIiLDQpLEEoImlucHV0IixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLmhhbmRsZVNpbmdsZVNsaWRlckNoYW5nZShpLnZhbHVlKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoKTtQKCJkaXNhYmxlZCIsIWUuZW5hYmxlZCkoIm1pbiIsZS5taW4pKCJtYXgiLGUubWF4KSgic3RlcCIsMSkoInZhbHVlIixlLmxvd2VyVmFsdWUpfX1mdW5jdGlvbiBYSXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJzcGFuIiw1LDYpLEQoMiwic3BhbiIsNyksRCgzLCJzcGFuIiw4KSx1KDQsInNwYW4iLDkpLEEoIm1vdXNlZG93biIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygpO3JldHVybiBhLmhhbmRsZU1vdXNlRG93bihpLGEuUG9zaXRpb24uTEVGVCl9KSxoKCksdSg1LCJzcGFuIiw5KSxBKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGkpe090KGUpO2xldCBhPVMoKTtyZXR1cm4gYS5oYW5kbGVNb3VzZURvd24oaSxhLlBvc2l0aW9uLlJJR0hUKX0pLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7eCgzKSxxZSgibGVmdCIsZS5nZXRUaHVtYlBvc2l0aW9uKGUubG93ZXJWYWx1ZSkpKCJ3aWR0aCIsZS5nZXRUcmFja1dpZHRoKCkpLHgoMSkscWUoImxlZnQiLGUuZ2V0VGh1bWJQb3NpdGlvbihlLmxvd2VyVmFsdWUpKSxtZSgiYWN0aXZlIixlLmlzVGh1bWJBY3RpdmUoZS5Qb3NpdGlvbi5MRUZUKSkseCgxKSxxZSgibGVmdCIsZS5nZXRUaHVtYlBvc2l0aW9uKGUudXBwZXJWYWx1ZSkpLG1lKCJhY3RpdmUiLGUuaXNUaHVtYkFjdGl2ZShlLlBvc2l0aW9uLlJJR0hUKSl9fXZhciBRSXQ9MTIsUU07KGZ1bmN0aW9uKG4pe25bbi5OT05FPTBdPSJOT05FIixuW24uTEVGVD0xXT0iTEVGVCIsbltuLlJJR0hUPTJdPSJSSUdIVCJ9KShRTXx8KFFNPXt9KSk7dmFyIFBkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLnRpY2tDb3VudD0yMCx0aGlzLmVuYWJsZWQ9ITAsdGhpcy5yZXR1cm5JbnRlZ2Vycz0hMSx0aGlzLnJhbmdlVmFsdWVzQ2hhbmdlZD1uZXcgJCx0aGlzLnNpbmdsZVZhbHVlQ2hhbmdlZD1uZXcgJCx0aGlzLlBvc2l0aW9uPVFNLHRoaXMuYWN0aXZlVGh1bWI9UU0uTk9ORSx0aGlzLm9mZnNldFhGcm9tT3JpZ2luT2ZBY3RpdmVUaHVtYj0wLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSnR9Z2V0VGh1bWJQb3NpdGlvbih0KXtsZXQgZT10aGlzLmdldENsaXBwZWRWYWx1ZSh0KSxvPXRoaXMubWF4LXRoaXMubWluO3JldHVybiBvPD0wPyI1MCUiOmAkeyhlLXRoaXMubWluKS9vKjEwMH0lYH1nZXRUcmFja1dpZHRoKCl7aWYodGhpcy51cHBlclZhbHVlPT09bnVsbClyZXR1cm4iMCUiO2xldCB0PXRoaXMubWF4LXRoaXMubWluO3JldHVybiB0PD0wPyIwJSI6YCR7KHRoaXMuZ2V0Q2xpcHBlZFZhbHVlKHRoaXMudXBwZXJWYWx1ZSktdGhpcy5nZXRDbGlwcGVkVmFsdWUodGhpcy5sb3dlclZhbHVlKSkvdCoxMDB9JWB9Z2V0Q2xpcHBlZFZhbHVlKHQpe3JldHVybiBNYXRoLm1pbihNYXRoLm1heCh0LHRoaXMubWluKSx0aGlzLm1heCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW5nT25Jbml0KCl7am8oZG9jdW1lbnQsIm1vdXNlbW92ZSIse3Bhc3NpdmU6ITB9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSh0PT57dGhpcy5oYW5kbGVNb3VzZU1vdmUodCl9KSxqbyhkb2N1bWVudCwibW91c2V1cCIse3Bhc3NpdmU6ITB9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSh0PT57dGhpcy5oYW5kbGVNb3VzZU91dCh0KX0pfWhhbmRsZU1vdXNlRG93bih0LGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuYWN0aXZlVGh1bWI9ZTtsZXQgbz10Lm9mZnNldFgsaT1RSXQvMi1vO3RoaXMub2Zmc2V0WEZyb21PcmlnaW5PZkFjdGl2ZVRodW1iPWl9Y2FsY3VsYXRlVmFsdWVGcm9tTW91c2VFdmVudCh0KXtsZXR7bGVmdDplLHJpZ2h0Om99PXRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksYT10LmNsaWVudFgtZSt0aGlzLm9mZnNldFhGcm9tT3JpZ2luT2ZBY3RpdmVUaHVtYixyO2lmKHRoaXMudGlja0NvdW50IT09bnVsbCYmdGhpcy50aWNrQ291bnQ+MCl7bGV0IGw9KG8tZSkvdGhpcy50aWNrQ291bnQ7cj1NYXRoLnJvdW5kKGEvbCkqbC8oby1lKX1lbHNlIHI9YS8oby1lKTtsZXQgcz10aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLm1pbisodGhpcy5tYXgtdGhpcy5taW4pKnIpO3JldHVybiB0aGlzLnJldHVybkludGVnZXJzP01hdGgucm91bmQocyk6TnVtYmVyKHMudG9GaXhlZCgxMCkpfWhhbmRsZU1vdXNlTW92ZSh0KXtpZih0aGlzLmFjdGl2ZVRodW1iPT09UU0uTk9ORXx8dGhpcy51cHBlclZhbHVlPT09bnVsbClyZXR1cm47bGV0IGU9dGhpcy5jYWxjdWxhdGVWYWx1ZUZyb21Nb3VzZUV2ZW50KHQpLG89W3RoaXMubG93ZXJWYWx1ZSx0aGlzLnVwcGVyVmFsdWVdO3RoaXMuYWN0aXZlVGh1bWI9PT1RTS5MRUZUPyhlPnRoaXMudXBwZXJWYWx1ZSYmKHRoaXMuYWN0aXZlVGh1bWI9UU0uUklHSFQpLG89W2UsdGhpcy51cHBlclZhbHVlXSk6KGU8dGhpcy5sb3dlclZhbHVlJiYodGhpcy5hY3RpdmVUaHVtYj1RTS5MRUZUKSxvPVt0aGlzLmxvd2VyVmFsdWUsZV0pLHRoaXMubWF5YmVOb3RpZnlOZXh0UmFuZ2VWYWx1ZXMobywiU0xJREVSIiksdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX1tYXliZU5vdGlmeU5leHRSYW5nZVZhbHVlcyh0LGUpe2xldFtvLGldPXQuc29ydCgoYSxyKT0+YS1yKTsodGhpcy5sb3dlclZhbHVlIT09b3x8dGhpcy51cHBlclZhbHVlIT09aSkmJnRoaXMucmFuZ2VWYWx1ZXNDaGFuZ2VkLmVtaXQoe2xvd2VyVmFsdWU6byx1cHBlclZhbHVlOmksc291cmNlOmV9KX1oYW5kbGVNb3VzZU91dCh0KXt0aGlzLmFjdGl2ZVRodW1iIT09UU0uTk9ORSYmKHRoaXMuYWN0aXZlVGh1bWI9UU0uTk9ORSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX1oYW5kbGVTaW5nbGVTbGlkZXJDaGFuZ2UodCl7dGhpcy5zaW5nbGVWYWx1ZUNoYW5nZWQuZW1pdCh7dmFsdWU6dCxzb3VyY2U6IlNMSURFUiJ9KX1oYW5kbGVJbnB1dENoYW5nZSh0LGUpe2xldCBvPXQudGFyZ2V0LGk9dGhpcy5nZXRDbGlwcGVkVmFsdWUoTnVtYmVyKG8udmFsdWUpKTtpc05hTihpKXx8KGU9PT1RTS5MRUZUP3RoaXMudXBwZXJWYWx1ZT09PW51bGw/dGhpcy5zaW5nbGVWYWx1ZUNoYW5nZWQuZW1pdCh7dmFsdWU6aSxzb3VyY2U6IlRFWFQifSk6dGhpcy5tYXliZU5vdGlmeU5leHRSYW5nZVZhbHVlcyhbaSx0aGlzLnVwcGVyVmFsdWVdLCJURVhUIik6by52YWx1ZT09PSIiP3RoaXMuc2luZ2xlVmFsdWVDaGFuZ2VkLmVtaXQoe3ZhbHVlOnRoaXMubG93ZXJWYWx1ZSxzb3VyY2U6IlRFWFRfREVMRVRFRCJ9KTp0aGlzLm1heWJlTm90aWZ5TmV4dFJhbmdlVmFsdWVzKFt0aGlzLmxvd2VyVmFsdWUsaV0sIlRFWFQiKSl9aXNUaHVtYkFjdGl2ZSh0KXtyZXR1cm4gdGhpcy5hY3RpdmVUaHVtYj09PXR9fTtQZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxQZCkodihUdCkpfTtQZC5cdTAyNzVjbXA9eih7dHlwZTpQZCxzZWxlY3RvcnM6W1sidGItcmFuZ2UtaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShxSXQsNSxMKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLmNvbnRhaW5lcj1vLmZpcnN0KX19LGlucHV0czp7bWluOiJtaW4iLG1heDoibWF4Iixsb3dlclZhbHVlOiJsb3dlclZhbHVlIix1cHBlclZhbHVlOiJ1cHBlclZhbHVlIix0aWNrQ291bnQ6InRpY2tDb3VudCIsZW5hYmxlZDoiZW5hYmxlZCIscmV0dXJuSW50ZWdlcnM6InJldHVybkludGVnZXJzIn0sb3V0cHV0czp7cmFuZ2VWYWx1ZXNDaGFuZ2VkOiJyYW5nZVZhbHVlc0NoYW5nZWQiLHNpbmdsZVZhbHVlQ2hhbmdlZDoic2luZ2xlVmFsdWVDaGFuZ2VkIn0sZGVjbHM6NSx2YXJzOjYsY29uc3RzOltbInR5cGUiLCJudW1iZXIiLDEsImxvd2VyLWlucHV0IiwzLCJkaXNhYmxlZCIsInZhbHVlIiwiY2hhbmdlIl0sWyJ0eXBlIiwibnVtYmVyIiwxLCJ1cHBlci1pbnB1dCIsMywiZGlzYWJsZWQiLCJ2YWx1ZSIsImNoYW5nZSJdLFsiY2xhc3MiLCJzaW5nbGUtc2xpZGVyIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJkaXNhYmxlZCIsIm1pbiIsIm1heCIsInN0ZXAiLCJ2YWx1ZSIsImlucHV0Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbInJhbmdlIiwiIl0sWyJjb2xvciIsInByaW1hcnkiLDEsInNpbmdsZS1zbGlkZXIiLDMsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInZhbHVlIiwiaW5wdXQiXSxbMSwiY29udGFpbmVyIl0sWyJjb250YWluZXIiLCIiXSxbMSwic2xpZGVyLXRyYWNrIl0sWzEsInNsaWRlci10cmFjay1maWxsIl0sWzEsInRodW1iIiwzLCJtb3VzZWRvd24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImlucHV0IiwwKSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLmhhbmRsZUlucHV0Q2hhbmdlKGksZS5Qb3NpdGlvbi5MRUZUKX0pLGgoKSx1KDEsImlucHV0IiwxKSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLmhhbmRsZUlucHV0Q2hhbmdlKGksZS5Qb3NpdGlvbi5SSUdIVCl9KSxoKCksaygyLFpJdCwxLDUsIm1hdC1zbGlkZXIiLDIpLGsoMyxYSXQsNiwxMiwibmctdGVtcGxhdGUiLG51bGwsMyx4bikpLHQmMil7bGV0IG89d2UoNCk7UCgiZGlzYWJsZWQiLCFlLmVuYWJsZWQpKCJ2YWx1ZSIsZS5sb3dlclZhbHVlKSx4KDEpLFAoImRpc2FibGVkIiwhZS5lbmFibGVkKSgidmFsdWUiLGUudXBwZXJWYWx1ZSE9PW51bGw/ZS51cHBlclZhbHVlOiIiKSx4KDEpLFAoIm5nSWYiLGUudXBwZXJWYWx1ZT09PW51bGwpKCJuZ0lmRWxzZSIsbyl9fSxkaXJlY3RpdmVzOltYdCxZcl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1ncmlkO2dyaWQtZ2FwOjEwcHg7Z3JpZC10ZW1wbGF0ZS1hcmVhczoibG93ZXItaW5wdXQgdXBwZXItaW5wdXQiICJzbGlkZXIgc2xpZGVyIjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtmb250LXNpemU6MDttaW4td2lkdGg6MTAwcHg7cGFkZGluZzo2cHh9aW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItc3R5bGU6c29saWQ7Ym94LXNpemluZzpib3JkZXItYm94O2NvbG9yOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVuO3dpZHRoOjEwMCV9Lmxvd2VyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6bG93ZXItaW5wdXR9LnVwcGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6dXBwZXItaW5wdXQ7anVzdGlmeS1zZWxmOmZsZXgtZW5kfS5zaW5nbGUtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2xpZGVyO3BhZGRpbmc6MHB4fS5zaW5nbGUtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLm1hdC1zbGlkZXItd3JhcHBlcnt0b3A6NXB4O2xlZnQ6MHB4O3JpZ2h0OjBweH0gIC5zaW5nbGUtc2xpZGVyLm1hdC1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6MTJweH0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c2xpZGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCV9LnNsaWRlci10cmFja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4yNik7aGVpZ2h0OjJweDt3aWR0aDoxMDAlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjMpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjJweH0udGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMCwwLDAsLjI2KTtib3JkZXItcmFkaXVzOjEwMCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEycHg7bWFyZ2luLWxlZnQ6LTZweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3MgZWFzZTt3aWR0aDoxMnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zYWRob3c6MCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjMpfS50aHVtYltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Y3Vyc29yOmdyYWJ9LnRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmV7Y3Vyc29yOmdyYWJiaW5nfS50aHVtYi5hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpzY2FsZSgxLjIpfS5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZWY2YzAwfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFBkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGItcmFuZ2UtaW5wdXQiLHRlbXBsYXRlVXJsOiIuL3JhbmdlX2lucHV0X2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3JhbmdlX2lucHV0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUdH1dfSx7Y29udGFpbmVyOlt7dHlwZTpJdCxhcmdzOlsiY29udGFpbmVyIix7c3RhdGljOiExLHJlYWQ6TH1dfV0sbWluOlt7dHlwZTpkfV0sbWF4Olt7dHlwZTpkfV0sbG93ZXJWYWx1ZTpbe3R5cGU6ZH1dLHVwcGVyVmFsdWU6W3t0eXBlOmR9XSx0aWNrQ291bnQ6W3t0eXBlOmR9XSxlbmFibGVkOlt7dHlwZTpkfV0scmV0dXJuSW50ZWdlcnM6W3t0eXBlOmR9XSxyYW5nZVZhbHVlc0NoYW5nZWQ6W3t0eXBlOkJ9XSxzaW5nbGVWYWx1ZUNoYW5nZWQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgSkl0PVsibWVhc3VyZXIiXSwkSXQ9WyJpbnB1dCJdLHlkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLnBsYWNlaG9sZGVyPSIiLHRoaXMuc3R5bGU9ImRlZmF1bHQiLHRoaXMucGF0dGVyblJlZ2V4PW5ldyBSZWdFeHAoIi4qIiksdGhpcy5pc1ZhbGlkPSEwLHRoaXMub25WYWx1ZUNoYW5nZT1uZXcgJCx0aGlzLmJsdXI9bmV3ICQsdGhpcy5mb2N1cz1uZXcgJCx0aGlzLmtleWRvd249bmV3ICQsdGhpcy5rZXl1cD1uZXcgJCx0aGlzLmludGVybmFsVmFsdWU9IiIsdGhpcy5mb250Q2hhbmdlTGlzdGVuZXI9dGhpcy51cGRhdGVJbnB1dFdpZHRoLmJpbmQodGhpcyl9bmdPbkluaXQoKXtkb2N1bWVudC5mb250cyYmZG9jdW1lbnQuZm9udHMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGluZ2RvbmUiLHRoaXMuZm9udENoYW5nZUxpc3RlbmVyKX1uZ09uRGVzdHJveSgpe2RvY3VtZW50LmZvbnRzJiZkb2N1bWVudC5mb250cy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkaW5nZG9uZSIsdGhpcy5mb250Q2hhbmdlTGlzdGVuZXIpfW5nT25DaGFuZ2VzKHQpe3ZhciBlO3QucGF0dGVybiYmKHRoaXMucGF0dGVyblJlZ2V4PW5ldyBSZWdFeHAoKGU9dGhpcy5wYXR0ZXJuKSE9PW51bGwmJmUhPT12b2lkIDA/ZToiIikpLHQudmFsdWUmJih0aGlzLmludGVybmFsVmFsdWU9dGhpcy52YWx1ZSksdGhpcy5pc1ZhbGlkPXRoaXMucGF0dGVyblJlZ2V4LnRlc3QodGhpcy5pbnRlcm5hbFZhbHVlKX1uZ0FmdGVyVmlld0NoZWNrZWQoKXt0aGlzLnVwZGF0ZUlucHV0V2lkdGgoKX1vbklucHV0KHQpe2xldCBlPXRoaXMuaW50ZXJuYWxWYWx1ZTt0aGlzLmludGVybmFsVmFsdWU9dGhpcy5pbnB1dEVsUmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUsdGhpcy5pbnRlcm5hbFZhbHVlIT09ZSYmKHRoaXMuaXNWYWxpZD10aGlzLnBhdHRlcm5SZWdleC50ZXN0KHRoaXMuaW50ZXJuYWxWYWx1ZSksdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSksdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoe3ZhbHVlOnRoaXMuaW50ZXJuYWxWYWx1ZX0pfXVwZGF0ZUlucHV0V2lkdGgoKXtsZXR7d2lkdGg6dH09dGhpcy5tZWFzdXJlckVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5pbnB1dEVsUmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGg9YCR7dH1weGB9fTt5ZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx5ZCkodihUdCkpfTt5ZC5cdTAyNzVjbXA9eih7dHlwZTp5ZCxzZWxlY3RvcnM6W1siY29udGVudC13cmFwcGluZy1pbnB1dCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJihwZShKSXQsNyxMKSxwZSgkSXQsNyxMKSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5tZWFzdXJlckVsUmVmPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLmlucHV0RWxSZWY9by5maXJzdCl9fSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmcWYoZS5zdHlsZSl9LGlucHV0czp7dmFsdWU6InZhbHVlIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLHN0eWxlOiJzdHlsZSIscGF0dGVybjoicGF0dGVybiJ9LG91dHB1dHM6e29uVmFsdWVDaGFuZ2U6Im9uVmFsdWVDaGFuZ2UiLGJsdXI6ImJsdXIiLGZvY3VzOiJmb2N1cyIsa2V5ZG93bjoia2V5ZG93biIsa2V5dXA6ImtleXVwIn0sZmVhdHVyZXM6W1dlXSxkZWNsczo2LHZhcnM6Nyxjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwxLCJtZWFzdXJlciJdLFsibWVhc3VyZXIiLCIiXSxbImF1dG9jb21wbGV0ZSIsIm9mZiIsInNwZWxsY2hlY2siLCJmYWxzZSIsInR5cGUiLCJ0ZXh0IiwzLCJ2YWx1ZSIsInBsYWNlaG9sZGVyIiwiYmx1ciIsImZvY3VzIiwiaW5wdXQiLCJrZXlkb3duIiwia2V5dXAiXSxbImlucHV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJzcGFuIiksdSgxLCJzcGFuIiwwLDEpLFQoMyksaCgpLHUoNCwiaW5wdXQiLDIsMyksQSgiYmx1ciIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuYmx1ci5lbWl0KGkpfSkoImZvY3VzIixmdW5jdGlvbihpKXtyZXR1cm4gZS5mb2N1cy5lbWl0KGkpfSkoImlucHV0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbklucHV0KGkpfSkoImtleWRvd24iLGZ1bmN0aW9uKGkpe3JldHVybiBlLmtleWRvd24uZW1pdChpKX0pKCJrZXl1cCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUua2V5dXAuZW1pdChpKX0pLGgoKSxoKCkpLHQmMiYmKG1lKCJjb250YWluZXIiLCEwKSgiaXMtdmFsaWQiLGUuaXNWYWxpZCkseCgzKSxJZShlLmludGVybmFsVmFsdWV8fGUucGxhY2Vob2xkZXIpLHgoMSksUCgidmFsdWUiLGUudmFsdWUpKCJwbGFjZWhvbGRlciIsZS5wbGFjZWhvbGRlcikpfSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTppbmxpbmUtZmxleDt3aWR0aDptYXgtY29udGVudH1bX25naG9zdC0lQ09NUCVdOmZvY3VzLXdpdGhpbiAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5kZWZhdWx0W19uZ2hvc3QtJUNPTVAlXTpob3ZlciAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZWJlYmVifS5lcnJvcltfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCguaXMtdmFsaWQpe2JvcmRlci1jb2xvcjojZWY5YTlhfS5lcnJvcltfbmdob3N0LSVDT01QJV0gICAuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLmVycm9yW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzLXdpdGhpbiwgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCguaXMtdmFsaWQpOmhvdmVyLCBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06bm90KC5pcy12YWxpZCk6Zm9jdXMtd2l0aGlue2JvcmRlci1jb2xvcjojZWY5YTlhfS5oaWdoLWNvbnRyYXN0W19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYmRiZGJkfS5oaWdoLWNvbnRyYXN0W19uZ2hvc3QtJUNPTVAlXSAgIC5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JvcmRlci1jb2xvcjojNzU3NTc1fS5jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NHB4O2JvcmRlcjoycHggc29saWQgcmdiYSgwLDAsMCwwKTtwYWRkaW5nOjFweCAycHg7cG9zaXRpb246cmVsYXRpdmV9Lm1lYXN1cmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3Bvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVufS5tZWFzdXJlcltfbmdjb250ZW50LSVDT01QJV0sIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2xpbmUtaGVpZ2h0OjEuNDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6cHJlfS5tZWFzdXJlcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHksIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXt3aWR0aDoyY2h9aW5wdXRbX25nY29udGVudC0lQ09NUCVde2FwcGVhcmFuY2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOmluaGVyaXQ7Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LWZhbWlseTppbmhlcml0O291dGxpbmU6MH1pbnB1dFtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7cGFkZGluZy1yaWdodDoxY2h9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeWQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJjb250ZW50LXdyYXBwaW5nLWlucHV0Iix0ZW1wbGF0ZTpgCiAgICA8c3BhbiBbY2xhc3MuY29udGFpbmVyXT0idHJ1ZSIgW2NsYXNzLmlzLXZhbGlkXT0iaXNWYWxpZCI+CiAgICAgIDxzcGFuICNtZWFzdXJlciBjbGFzcz0ibWVhc3VyZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj57ewogICAgICAgIGludGVybmFsVmFsdWUgfHwgcGxhY2Vob2xkZXIKICAgICAgfX08L3NwYW4+CiAgICAgIDxpbnB1dAogICAgICAgICNpbnB1dAogICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIgogICAgICAgIHR5cGU9InRleHQiCiAgICAgICAgKGJsdXIpPSJibHVyLmVtaXQoJGV2ZW50KSIKICAgICAgICAoZm9jdXMpPSJmb2N1cy5lbWl0KCRldmVudCkiCiAgICAgICAgKGlucHV0KT0ib25JbnB1dCgkZXZlbnQpIgogICAgICAgIChrZXlkb3duKT0ia2V5ZG93bi5lbWl0KCRldmVudCkiCiAgICAgICAgKGtleXVwKT0ia2V5dXAuZW1pdCgkZXZlbnQpIgogICAgICAgIFt2YWx1ZV09InZhbHVlIgogICAgICAgIFtwbGFjZWhvbGRlcl09InBsYWNlaG9sZGVyIgogICAgICAvPgogICAgPC9zcGFuPgogIGAsc3R5bGVVcmxzOlsiLi9jb250ZW50X3dyYXBwaW5nX2lucHV0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUdH1dfSx7bWVhc3VyZXJFbFJlZjpbe3R5cGU6SXQsYXJnczpbIm1lYXN1cmVyIix7c3RhdGljOiEwLHJlYWQ6TH1dfV0saW5wdXRFbFJlZjpbe3R5cGU6SXQsYXJnczpbImlucHV0Iix7c3RhdGljOiEwLHJlYWQ6TH1dfV0sdmFsdWU6W3t0eXBlOmR9XSxwbGFjZWhvbGRlcjpbe3R5cGU6ZH1dLHN0eWxlOlt7dHlwZTpIYSxhcmdzOlsiY2xhc3MiXX0se3R5cGU6ZH1dLHBhdHRlcm46W3t0eXBlOmR9XSxvblZhbHVlQ2hhbmdlOlt7dHlwZTpCfV0sYmx1cjpbe3R5cGU6Qn1dLGZvY3VzOlt7dHlwZTpCfV0sa2V5ZG93bjpbe3R5cGU6Qn1dLGtleXVwOlt7dHlwZTpCfV19KX0pKCk7ZnVuY3Rpb24gZXp0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiY29udGVudC13cmFwcGluZy1pbnB1dCIsMyksQSgib25WYWx1ZUNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5hbGlhc0NoYW5nZWQuZW1pdChpKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoKTtwXyhlLmlzQWxpYXNOYW1lTGVnYWw/ImhpZ2gtY29udHJhc3QiOiJlcnJvciIpLFAoInZhbHVlIixlLmFsaWFzLmFsaWFzVGV4dCl9fWZ1bmN0aW9uIG56dChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIpLFQoMSksaCgpKSxuJjIpe2xldCBlPVMoKTttZSgiaWxsZWdhbCIsIWUuaXNBbGlhc05hbWVMZWdhbCkseCgxKSxJZShlLmFsaWFzLmFsaWFzVGV4dCl9fXZhciBSbD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaXNBbGlhc05hbWVMZWdhbD0hMCx0aGlzLmFsaWFzQ2hhbmdlZD1uZXcgJH19O1JsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFJsKX07UmwuXHUwMjc1Y21wPXooe3R5cGU6Umwsc2VsZWN0b3JzOltbInRiLWV4cGVyaW1lbnQtYWxpYXMiXV0saW5wdXRzOnthbGlhczoiYWxpYXMiLGFsaWFzRWRpdGFibGU6ImFsaWFzRWRpdGFibGUiLGlzQWxpYXNOYW1lTGVnYWw6ImlzQWxpYXNOYW1lTGVnYWwifSxvdXRwdXRzOnthbGlhc0NoYW5nZWQ6ImFsaWFzQ2hhbmdlZCJ9LGRlY2xzOjUsdmFyczozLGNvbnN0czpbWzEsImFsaWFzLW51bWJlciJdLFsicGxhY2Vob2xkZXIiLCJBbGlhcyBmb3IgZXhwZXJpbWVudCIsMywic3R5bGUiLCJ2YWx1ZSIsIm9uVmFsdWVDaGFuZ2UiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9FZGl0QWxpYXNOYW1lIiwiIl0sWyJwbGFjZWhvbGRlciIsIkFsaWFzIGZvciBleHBlcmltZW50IiwzLCJ2YWx1ZSIsIm9uVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsInNwYW4iLDApLFQoMSksaCgpLGsoMixlenQsMSwzLCJjb250ZW50LXdyYXBwaW5nLWlucHV0IiwxKSxrKDMsbnp0LDIsMywibmctdGVtcGxhdGUiLG51bGwsMix4bikpLHQmMil7bGV0IG89d2UoNCk7eCgxKSxJZShlLmFsaWFzLmFsaWFzTnVtYmVyKSx4KDEpLFAoIm5nSWYiLGUuYWxpYXNFZGl0YWJsZSkoIm5nSWZFbHNlIixvKX19LGRpcmVjdGl2ZXM6W1h0LHlkXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Y29sb3I6IzIxMjEyMTtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tcmlnaHQ6MnB4O3BhZGRpbmc6MCAycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmFsaWFzLW51bWJlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5hbGlhcy1udW1iZXJbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYWxpYXMtbnVtYmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZX0nXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhSbCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRiLWV4cGVyaW1lbnQtYWxpYXMiLHRlbXBsYXRlOmAKICAgIDxzcGFuIGNsYXNzPSJhbGlhcy1udW1iZXIiPnt7IGFsaWFzLmFsaWFzTnVtYmVyIH19PC9zcGFuPgogICAgPGNvbnRlbnQtd3JhcHBpbmctaW5wdXQKICAgICAgKm5nSWY9ImFsaWFzRWRpdGFibGU7IGVsc2Ugbm9FZGl0QWxpYXNOYW1lIgogICAgICBwbGFjZWhvbGRlcj0iQWxpYXMgZm9yIGV4cGVyaW1lbnQiCiAgICAgIFtzdHlsZV09ImlzQWxpYXNOYW1lTGVnYWwgPyAnaGlnaC1jb250cmFzdCcgOiAnZXJyb3InIgogICAgICBbdmFsdWVdPSJhbGlhcy5hbGlhc1RleHQiCiAgICAgIChvblZhbHVlQ2hhbmdlKT0iYWxpYXNDaGFuZ2VkLmVtaXQoJGV2ZW50KSIKICAgID48L2NvbnRlbnQtd3JhcHBpbmctaW5wdXQ+CiAgICA8bmctdGVtcGxhdGUgI25vRWRpdEFsaWFzTmFtZT4KICAgICAgPHNwYW4gW2NsYXNzLmlsbGVnYWxdPSIhaXNBbGlhc05hbWVMZWdhbCI+e3sgYWxpYXMuYWxpYXNUZXh0IH19PC9zcGFuPgogICAgPC9uZy10ZW1wbGF0ZT4KICBgLHN0eWxlVXJsczpbImV4cGVyaW1lbnRfYWxpYXNfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHthbGlhczpbe3R5cGU6ZH1dLGFsaWFzRWRpdGFibGU6W3t0eXBlOmR9XSxpc0FsaWFzTmFtZUxlZ2FsOlt7dHlwZTpkfV0sYWxpYXNDaGFuZ2VkOlt7dHlwZTpCfV19KX0pKCk7dmFyIG96dD1bImRpYWxvZ1BvcHVwIl0saXp0PVsiaHVlU2xpZGVyIl0sYXp0PVsiYWxwaGFTbGlkZXIiXTtmdW5jdGlvbiByenQobix0KXtpZihuJjEmJkQoMCwiZGl2IiksbiYyKXtsZXQgZT1TKCk7TFIoImFycm93IGFycm93LSIsZS5jcFVzZVBvc2l0aW9uLCIiKSxxZSgidG9wIixlLmFycm93VG9wLCJweCIpfX1mdW5jdGlvbiBzenQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDI2KSxBKCJuZXdWYWx1ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkNvbG9yQ2hhbmdlKGkpfSkoImRyYWdTdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLm9uRHJhZ1N0YXJ0KCJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIpfSkoImRyYWdFbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5vbkRyYWdFbmQoInNhdHVyYXRpb24tbGlnaHRuZXNzIil9KSxEKDEsImRpdiIsMTMpLGgoKX1pZihuJjIpe2xldCBlPVMoKTtxZSgiYmFja2dyb3VuZC1jb2xvciIsZS5odWVTbGlkZXJDb2xvciksUCgicmdYIiwxKSgicmdZIiwxKSx4KDEpLHFlKCJ0b3AiLGUuc2xpZGVyPT1udWxsP251bGw6ZS5zbGlkZXIudiwicHgiKSgibGVmdCIsZS5zbGlkZXI9PW51bGw/bnVsbDplLnNsaWRlci5zLCJweCIpfX1mdW5jdGlvbiBsenQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJidXR0b24iLDI3KSxBKCJjbGljayIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygpO3JldHVybiBhLm9uQWRkUHJlc2V0Q29sb3IoaSxhLnNlbGVjdGVkQ29sb3IpfSksVCgxKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7cWYoZS5jcEFkZENvbG9yQnV0dG9uQ2xhc3MpLFAoImRpc2FibGVkIixlLmNwUHJlc2V0Q29sb3JzJiZlLmNwUHJlc2V0Q29sb3JzLmxlbmd0aD49ZS5jcE1heFByZXNldENvbG9yc0xlbmd0aCkseCgxKSxsZSgiICIsZS5jcEFkZENvbG9yQnV0dG9uVGV4dCwiICIpfX1mdW5jdGlvbiBjenQobix0KXtuJjEmJkQoMCwiZGl2IiwyOCl9ZnVuY3Rpb24gbXp0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiaW5wdXQiLDM0KSxBKCJrZXl1cC5lbnRlciIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25BY2NlcHRDb2xvcihpKX0pKCJuZXdWYWx1ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25BbHBoYUlucHV0KGkpfSksaCgpfWlmKG4mMil7bGV0IGU9UygyKTtQKCJyZyIsMSkoInZhbHVlIixlLmNteWtUZXh0PT1udWxsP251bGw6ZS5jbXlrVGV4dC5hKX19ZnVuY3Rpb24gZnp0KG4sdCl7biYxJiYodSgwLCJkaXYiKSxUKDEsIkEiKSxoKCkpfWZ1bmN0aW9uIHB6dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMjkpLHUoMSwiZGl2IiwzMCksdSgyLCJpbnB1dCIsMzEpLEEoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25DeWFuSW5wdXQoaSl9KSxoKCksdSgzLCJpbnB1dCIsMzEpLEEoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25NYWdlbnRhSW5wdXQoaSl9KSxoKCksdSg0LCJpbnB1dCIsMzEpLEEoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25ZZWxsb3dJbnB1dChpKX0pLGgoKSx1KDUsImlucHV0IiwzMSksQSgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25BY2NlcHRDb2xvcihpKX0pKCJuZXdWYWx1ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkJsYWNrSW5wdXQoaSl9KSxoKCksayg2LG16dCwxLDIsImlucHV0IiwzMiksaCgpLHUoNywiZGl2IiwzMCksdSg4LCJkaXYiKSxUKDksIkMiKSxoKCksdSgxMCwiZGl2IiksVCgxMSwiTSIpLGgoKSx1KDEyLCJkaXYiKSxUKDEzLCJZIiksaCgpLHUoMTQsImRpdiIpLFQoMTUsIksiKSxoKCksaygxNixmenQsMiwwLCJkaXYiLDMzKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO3FlKCJkaXNwbGF5IixlLmZvcm1hdCE9PTM/Im5vbmUiOiJibG9jayIpLHgoMiksUCgicmciLDEwMCkoInZhbHVlIixlLmNteWtUZXh0PT1udWxsP251bGw6ZS5jbXlrVGV4dC5jKSx4KDEpLFAoInJnIiwxMDApKCJ2YWx1ZSIsZS5jbXlrVGV4dD09bnVsbD9udWxsOmUuY215a1RleHQubSkseCgxKSxQKCJyZyIsMTAwKSgidmFsdWUiLGUuY215a1RleHQ9PW51bGw/bnVsbDplLmNteWtUZXh0LnkpLHgoMSksUCgicmciLDEwMCkoInZhbHVlIixlLmNteWtUZXh0PT1udWxsP251bGw6ZS5jbXlrVGV4dC5rKSx4KDEpLFAoIm5nSWYiLGUuY3BBbHBoYUNoYW5uZWwhPT0iZGlzYWJsZWQiKSx4KDEwKSxQKCJuZ0lmIixlLmNwQWxwaGFDaGFubmVsIT09ImRpc2FibGVkIil9fWZ1bmN0aW9uIGR6dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImlucHV0IiwzNCksQSgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKDIpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKDIpLm9uQWxwaGFJbnB1dChpKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoMik7UCgicmciLDEpKCJ2YWx1ZSIsZS5oc2xhVGV4dD09bnVsbD9udWxsOmUuaHNsYVRleHQuYSl9fWZ1bmN0aW9uIGd6dChuLHQpe24mMSYmKHUoMCwiZGl2IiksVCgxLCJBIiksaCgpKX1mdW5jdGlvbiB1enQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDM1KSx1KDEsImRpdiIsMzApLHUoMiwiaW5wdXQiLDM2KSxBKCJrZXl1cC5lbnRlciIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkFjY2VwdENvbG9yKGkpfSkoIm5ld1ZhbHVlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uSHVlSW5wdXQoaSl9KSxoKCksdSgzLCJpbnB1dCIsMzEpLEEoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25TYXR1cmF0aW9uSW5wdXQoaSl9KSxoKCksdSg0LCJpbnB1dCIsMzEpLEEoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25MaWdodG5lc3NJbnB1dChpKX0pLGgoKSxrKDUsZHp0LDEsMiwiaW5wdXQiLDMyKSxoKCksdSg2LCJkaXYiLDMwKSx1KDcsImRpdiIpLFQoOCwiSCIpLGgoKSx1KDksImRpdiIpLFQoMTAsIlMiKSxoKCksdSgxMSwiZGl2IiksVCgxMiwiTCIpLGgoKSxrKDEzLGd6dCwyLDAsImRpdiIsMzMpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7cWUoImRpc3BsYXkiLGUuZm9ybWF0IT09Mj8ibm9uZSI6ImJsb2NrIikseCgyKSxQKCJyZyIsMzYwKSgidmFsdWUiLGUuaHNsYVRleHQ9PW51bGw/bnVsbDplLmhzbGFUZXh0LmgpLHgoMSksUCgicmciLDEwMCkoInZhbHVlIixlLmhzbGFUZXh0PT1udWxsP251bGw6ZS5oc2xhVGV4dC5zKSx4KDEpLFAoInJnIiwxMDApKCJ2YWx1ZSIsZS5oc2xhVGV4dD09bnVsbD9udWxsOmUuaHNsYVRleHQubCkseCgxKSxQKCJuZ0lmIixlLmNwQWxwaGFDaGFubmVsIT09ImRpc2FibGVkIikseCg4KSxQKCJuZ0lmIixlLmNwQWxwaGFDaGFubmVsIT09ImRpc2FibGVkIil9fWZ1bmN0aW9uIGh6dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImlucHV0IiwzNCksQSgia2V5dXAuZW50ZXIiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKDIpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKDIpLm9uQWxwaGFJbnB1dChpKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoMik7UCgicmciLDEpKCJ2YWx1ZSIsZS5yZ2JhVGV4dD09bnVsbD9udWxsOmUucmdiYVRleHQuYSl9fWZ1bmN0aW9uIF96dChuLHQpe24mMSYmKHUoMCwiZGl2IiksVCgxLCJBIiksaCgpKX1mdW5jdGlvbiBDenQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDM3KSx1KDEsImRpdiIsMzApLHUoMiwiaW5wdXQiLDM4KSxBKCJrZXl1cC5lbnRlciIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkFjY2VwdENvbG9yKGkpfSkoIm5ld1ZhbHVlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uUmVkSW5wdXQoaSl9KSxoKCksdSgzLCJpbnB1dCIsMzgpLEEoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25HcmVlbklucHV0KGkpfSksaCgpLHUoNCwiaW5wdXQiLDM4KSxBKCJrZXl1cC5lbnRlciIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkFjY2VwdENvbG9yKGkpfSkoIm5ld1ZhbHVlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQmx1ZUlucHV0KGkpfSksaCgpLGsoNSxoenQsMSwyLCJpbnB1dCIsMzIpLGgoKSx1KDYsImRpdiIsMzApLHUoNywiZGl2IiksVCg4LCJSIiksaCgpLHUoOSwiZGl2IiksVCgxMCwiRyIpLGgoKSx1KDExLCJkaXYiKSxUKDEyLCJCIiksaCgpLGsoMTMsX3p0LDIsMCwiZGl2IiwzMyksaCgpLGgoKX1pZihuJjIpe2xldCBlPVMoKTtxZSgiZGlzcGxheSIsZS5mb3JtYXQhPT0xPyJub25lIjoiYmxvY2siKSx4KDIpLFAoInJnIiwyNTUpKCJ2YWx1ZSIsZS5yZ2JhVGV4dD09bnVsbD9udWxsOmUucmdiYVRleHQucikseCgxKSxQKCJyZyIsMjU1KSgidmFsdWUiLGUucmdiYVRleHQ9PW51bGw/bnVsbDplLnJnYmFUZXh0LmcpLHgoMSksUCgicmciLDI1NSkoInZhbHVlIixlLnJnYmFUZXh0PT1udWxsP251bGw6ZS5yZ2JhVGV4dC5iKSx4KDEpLFAoIm5nSWYiLGUuY3BBbHBoYUNoYW5uZWwhPT0iZGlzYWJsZWQiKSx4KDgpLFAoIm5nSWYiLGUuY3BBbHBoYUNoYW5uZWwhPT0iZGlzYWJsZWQiKX19ZnVuY3Rpb24gTXp0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiaW5wdXQiLDM0KSxBKCJrZXl1cC5lbnRlciIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25BY2NlcHRDb2xvcihpKX0pKCJuZXdWYWx1ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25BbHBoYUlucHV0KGkpfSksaCgpfWlmKG4mMil7bGV0IGU9UygyKTtQKCJyZyIsMSkoInZhbHVlIixlLmhleEFscGhhKX19ZnVuY3Rpb24gYnp0KG4sdCl7biYxJiYodSgwLCJkaXYiKSxUKDEsIkEiKSxoKCkpfWZ1bmN0aW9uIE96dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMzkpLHUoMSwiZGl2IiwzMCksdSgyLCJpbnB1dCIsNDApLEEoImJsdXIiLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5vbkhleElucHV0KG51bGwpfSkoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uQWNjZXB0Q29sb3IoaSl9KSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25IZXhJbnB1dChpKX0pLGgoKSxrKDMsTXp0LDEsMiwiaW5wdXQiLDMyKSxoKCksdSg0LCJkaXYiLDMwKSx1KDUsImRpdiIpLFQoNiwiSGV4IiksaCgpLGsoNyxienQsMiwwLCJkaXYiLDMzKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO3FlKCJkaXNwbGF5IixlLmZvcm1hdCE9PTA/Im5vbmUiOiJibG9jayIpLG1lKCJoZXgtYWxwaGEiLGUuY3BBbHBoYUNoYW5uZWw9PT0iZm9yY2VkIikseCgyKSxQKCJ2YWx1ZSIsZS5oZXhUZXh0KSx4KDEpLFAoIm5nSWYiLGUuY3BBbHBoYUNoYW5uZWw9PT0iZm9yY2VkIikseCg0KSxQKCJuZ0lmIixlLmNwQWxwaGFDaGFubmVsPT09ImZvcmNlZCIpfX1mdW5jdGlvbiBQenQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJpbnB1dCIsMzQpLEEoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygyKS5vbkFjY2VwdENvbG9yKGkpfSkoIm5ld1ZhbHVlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygyKS5vbkFscGhhSW5wdXQoaSl9KSxoKCl9aWYobiYyKXtsZXQgZT1TKDIpO1AoInJnIiwxKSgidmFsdWUiLGUuaHNsYVRleHQ9PW51bGw/bnVsbDplLmhzbGFUZXh0LmEpfX1mdW5jdGlvbiB5enQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDQxKSx1KDEsImRpdiIsMzApLHUoMiwiaW5wdXQiLDMxKSxBKCJrZXl1cC5lbnRlciIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkFjY2VwdENvbG9yKGkpfSkoIm5ld1ZhbHVlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uVmFsdWVJbnB1dChpKX0pLGgoKSxrKDMsUHp0LDEsMiwiaW5wdXQiLDMyKSxoKCksdSg0LCJkaXYiLDMwKSx1KDUsImRpdiIpLFQoNiwiViIpLGgoKSx1KDcsImRpdiIpLFQoOCwiQSIpLGgoKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO3goMiksUCgicmciLDEwMCkoInZhbHVlIixlLmhzbGFUZXh0PT1udWxsP251bGw6ZS5oc2xhVGV4dC5sKSx4KDEpLFAoIm5nSWYiLGUuY3BBbHBoYUNoYW5uZWwhPT0iZGlzYWJsZWQiKX19ZnVuY3Rpb24geHp0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2Iiw0MiksdSgxLCJzcGFuIiw0MyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5vbkZvcm1hdFRvZ2dsZSgtMSl9KSxoKCksdSgyLCJzcGFuIiw0MyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5vbkZvcm1hdFRvZ2dsZSgxKX0pLGgoKSxoKCl9fWZ1bmN0aW9uIHZ6dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsInNwYW4iLDUwKSxBKCJjbGljayIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygpLiRpbXBsaWNpdDtyZXR1cm4gUygzKS5vblJlbW92ZVByZXNldENvbG9yKGksYSl9KSxoKCl9aWYobiYyKXtsZXQgZT1TKDQpO3FmKGUuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzKX19ZnVuY3Rpb24gd3p0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2Iiw0OCksQSgiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGE9T3QoZSkuJGltcGxpY2l0O3JldHVybiBTKDMpLnNldENvbG9yRnJvbVN0cmluZyhhKX0pLGsoMSx2enQsMSwzLCJzcGFuIiw0OSksaCgpfWlmKG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKDMpO3FlKCJiYWNrZ3JvdW5kLWNvbG9yIixlKSx4KDEpLFAoIm5nSWYiLG8uY3BBZGRDb2xvckJ1dHRvbil9fWZ1bmN0aW9uIFN6dChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiksaygxLHd6dCwyLDMsImRpdiIsNDcpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3FmKGUuY3BQcmVzZXRDb2xvcnNDbGFzcykseCgxKSxQKCJuZ0Zvck9mIixlLmNwUHJlc2V0Q29sb3JzKX19ZnVuY3Rpb24gUnp0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiKSxUKDEpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3FmKGUuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcykseCgxKSxJZShlLmNwUHJlc2V0RW1wdHlNZXNzYWdlKX19ZnVuY3Rpb24gRXp0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDQ0KSxEKDEsImhyIiksdSgyLCJkaXYiLDQ1KSxUKDMpLGgoKSxrKDQsU3p0LDIsNCwiZGl2Iiw0Niksayg1LFJ6dCwyLDQsImRpdiIsNDYpLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgzKSxJZShlLmNwUHJlc2V0TGFiZWwpLHgoMSksUCgibmdJZiIsZS5jcFByZXNldENvbG9ycz09bnVsbD9udWxsOmUuY3BQcmVzZXRDb2xvcnMubGVuZ3RoKSx4KDEpLFAoIm5nSWYiLCEoZS5jcFByZXNldENvbG9ycyE9bnVsbCYmZS5jcFByZXNldENvbG9ycy5sZW5ndGgpJiZlLmNwQWRkQ29sb3JCdXR0b24pfX1mdW5jdGlvbiBrenQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJidXR0b24iLDUzKSxBKCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25DYW5jZWxDb2xvcihpKX0pLFQoMSksaCgpfWlmKG4mMil7bGV0IGU9UygyKTtxZihlLmNwQ2FuY2VsQnV0dG9uQ2xhc3MpLHgoMSksSWUoZS5jcENhbmNlbEJ1dHRvblRleHQpfX1mdW5jdGlvbiBOenQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJidXR0b24iLDUzKSxBKCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25BY2NlcHRDb2xvcihpKX0pLFQoMSksaCgpfWlmKG4mMil7bGV0IGU9UygyKTtxZihlLmNwT0tCdXR0b25DbGFzcykseCgxKSxJZShlLmNwT0tCdXR0b25UZXh0KX19ZnVuY3Rpb24gVHp0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDUxKSxrKDEsa3p0LDIsNCwiYnV0dG9uIiw1MiksaygyLE56dCwyLDQsImJ1dHRvbiIsNTIpLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgxKSxQKCJuZ0lmIixlLmNwQ2FuY2VsQnV0dG9uKSx4KDEpLFAoIm5nSWYiLGUuY3BPS0J1dHRvbil9fXZhciBQZjsoZnVuY3Rpb24obil7bltuLkhFWD0wXT0iSEVYIixuW24uUkdCQT0xXT0iUkdCQSIsbltuLkhTTEE9Ml09IkhTTEEiLG5bbi5DTVlLPTNdPSJDTVlLIn0pKFBmfHwoUGY9e30pKTt2YXIgS009Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPW8sdGhpcy5hPWl9fSxjMj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLmg9dCx0aGlzLnM9ZSx0aGlzLnY9byx0aGlzLmE9aX19LE5QPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuaD10LHRoaXMucz1lLHRoaXMubD1vLHRoaXMuYT1pfX0sYTE9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSxhPTEpe3RoaXMuYz10LHRoaXMubT1lLHRoaXMueT1vLHRoaXMuaz1pLHRoaXMuYT1hfX07ZnVuY3Rpb24gQXp0KG4sdCl7bGV0IGU9InJpZ2h0IixvPSJib3R0b20iLHtoZWlnaHQ6aSx3aWR0aDphfT1uLHt0b3A6cixsZWZ0OnN9PXQsbD1yK3QuaGVpZ2h0LGM9cyt0LndpZHRoLG09ci1pPDAsZj1sK2k+KHdpbmRvdy5pbm5lckhlaWdodHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkscD1zLWE8MCxnPWMrYT4od2luZG93LmlubmVyV2lkdGh8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCksXz1tJiZmJiZwJiZnO3JldHVybiBmJiYobz0idG9wIiksbSYmKG89ImJvdHRvbSIpLHAmJihlPSJyaWdodCIpLGcmJihlPSJsZWZ0IiksXz9bImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLnJlZHVjZSgoeSxPKT0+blt5XT5uW09dP3k6Tyk6cCYmZz9tPyJib3R0b20iOmZ8fHI+bD8idG9wIjoiYm90dG9tIjptJiZmP3A/InJpZ2h0IjpnfHxzPmM/ImxlZnQiOiJyaWdodCI6YCR7b30tJHtlfWB9ZnVuY3Rpb24gRHp0KCl7bGV0IG49IiI7dHlwZW9mIG5hdmlnYXRvciE9InVuZGVmaW5lZCImJihuPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7bGV0IHQ9bi5pbmRleE9mKCJtc2llICIpO3JldHVybiB0PjA/cGFyc2VJbnQobi5zdWJzdHJpbmcodCs1LG4uaW5kZXhPZigiLiIsdCkpLDEwKTohMX12YXIgSk09Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm5ld1ZhbHVlPW5ldyAkfWlucHV0Q2hhbmdlKHQpe2xldCBlPXQudGFyZ2V0LnZhbHVlO2lmKHRoaXMucmc9PT12b2lkIDApdGhpcy5uZXdWYWx1ZS5lbWl0KGUpO2Vsc2V7bGV0IG89cGFyc2VGbG9hdChlKTt0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6byxyZzp0aGlzLnJnfSl9fX07Sk0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Sk0pfTtKTS5cdTAyNzVkaXI9dnQoe3R5cGU6Sk0sc2VsZWN0b3JzOltbIiIsInRleHQiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJpbnB1dCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuaW5wdXRDaGFuZ2UoaSl9KX0saW5wdXRzOntyZzoicmciLHRleHQ6InRleHQifSxvdXRwdXRzOntuZXdWYWx1ZToibmV3VmFsdWUifX0pO0pNLnByb3BEZWNvcmF0b3JzPXtyZzpbe3R5cGU6ZH1dLHRleHQ6W3t0eXBlOmR9XSxuZXdWYWx1ZTpbe3R5cGU6Qn1dLGlucHV0Q2hhbmdlOlt7dHlwZTp4byxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhKTSxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbdGV4dF0ifV19XSxmdW5jdGlvbigpe3JldHVybltdfSx7bmV3VmFsdWU6W3t0eXBlOkJ9XSxpbnB1dENoYW5nZTpbe3R5cGU6eG8sYXJnczpbImlucHV0IixbIiRldmVudCJdXX1dLHJnOlt7dHlwZTpkfV0sdGV4dDpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBOMD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmVsUmVmPXQsdGhpcy5kcmFnRW5kPW5ldyAkLHRoaXMuZHJhZ1N0YXJ0PW5ldyAkLHRoaXMubmV3VmFsdWU9bmV3ICQsdGhpcy5saXN0ZW5lck1vdmU9ZT0+dGhpcy5tb3ZlKGUpLHRoaXMubGlzdGVuZXJTdG9wPSgpPT50aGlzLnN0b3AoKX1tb3VzZURvd24odCl7dGhpcy5zdGFydCh0KX10b3VjaFN0YXJ0KHQpe3RoaXMuc3RhcnQodCl9bW92ZSh0KXt0LnByZXZlbnREZWZhdWx0KCksdGhpcy5zZXRDdXJzb3IodCl9c3RhcnQodCl7dGhpcy5zZXRDdXJzb3IodCksdC5zdG9wUHJvcGFnYXRpb24oKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMubGlzdGVuZXJNb3ZlKSx0aGlzLmRyYWdTdGFydC5lbWl0KCl9c3RvcCgpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5saXN0ZW5lclN0b3ApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5saXN0ZW5lck1vdmUpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5saXN0ZW5lck1vdmUpLHRoaXMuZHJhZ0VuZC5lbWl0KCl9Z2V0WCh0KXtsZXQgZT10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuKHQucGFnZVghPT12b2lkIDA/dC5wYWdlWDp0LnRvdWNoZXNbMF0ucGFnZVgpLWUubGVmdC13aW5kb3cucGFnZVhPZmZzZXR9Z2V0WSh0KXtsZXQgZT10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuKHQucGFnZVkhPT12b2lkIDA/dC5wYWdlWTp0LnRvdWNoZXNbMF0ucGFnZVkpLWUudG9wLXdpbmRvdy5wYWdlWU9mZnNldH1zZXRDdXJzb3IodCl7bGV0IGU9dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLG89dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCxpPU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5nZXRYKHQpLGUpKSxhPU1hdGgubWF4KDAsTWF0aC5taW4odGhpcy5nZXRZKHQpLG8pKTt0aGlzLnJnWCE9PXZvaWQgMCYmdGhpcy5yZ1khPT12b2lkIDA/dGhpcy5uZXdWYWx1ZS5lbWl0KHtzOmkvZSx2OjEtYS9vLHJnWDp0aGlzLnJnWCxyZ1k6dGhpcy5yZ1l9KTp0aGlzLnJnWD09PXZvaWQgMCYmdGhpcy5yZ1khPT12b2lkIDA/dGhpcy5uZXdWYWx1ZS5lbWl0KHt2OmEvbyxyZ1k6dGhpcy5yZ1l9KTp0aGlzLnJnWCE9PXZvaWQgMCYmdGhpcy5yZ1k9PT12b2lkIDAmJnRoaXMubmV3VmFsdWUuZW1pdCh7djppL2UscmdYOnRoaXMucmdYfSl9fTtOMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxOMCkodihMKSl9O04wLlx1MDI3NWRpcj12dCh7dHlwZTpOMCxzZWxlY3RvcnM6W1siIiwic2xpZGVyIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgibW91c2Vkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5tb3VzZURvd24oaSl9KSgidG91Y2hzdGFydCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUudG91Y2hTdGFydChpKX0pfSxpbnB1dHM6e3JnWDoicmdYIixyZ1k6InJnWSIsc2xpZGVyOiJzbGlkZXIifSxvdXRwdXRzOntkcmFnRW5kOiJkcmFnRW5kIixkcmFnU3RhcnQ6ImRyYWdTdGFydCIsbmV3VmFsdWU6Im5ld1ZhbHVlIn19KTtOMC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9XTtOMC5wcm9wRGVjb3JhdG9ycz17cmdYOlt7dHlwZTpkfV0scmdZOlt7dHlwZTpkfV0sc2xpZGVyOlt7dHlwZTpkfV0sZHJhZ0VuZDpbe3R5cGU6Qn1dLGRyYWdTdGFydDpbe3R5cGU6Qn1dLG5ld1ZhbHVlOlt7dHlwZTpCfV0sbW91c2VEb3duOlt7dHlwZTp4byxhcmdzOlsibW91c2Vkb3duIixbIiRldmVudCJdXX1dLHRvdWNoU3RhcnQ6W3t0eXBlOnhvLGFyZ3M6WyJ0b3VjaHN0YXJ0IixbIiRldmVudCJdXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTjAsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW3NsaWRlcl0ifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfV19LHtkcmFnRW5kOlt7dHlwZTpCfV0sZHJhZ1N0YXJ0Olt7dHlwZTpCfV0sbmV3VmFsdWU6W3t0eXBlOkJ9XSxtb3VzZURvd246W3t0eXBlOnhvLGFyZ3M6WyJtb3VzZWRvd24iLFsiJGV2ZW50Il1dfV0sdG91Y2hTdGFydDpbe3R5cGU6eG8sYXJnczpbInRvdWNoc3RhcnQiLFsiJGV2ZW50Il1dfV0scmdYOlt7dHlwZTpkfV0scmdZOlt7dHlwZTpkfV0sc2xpZGVyOlt7dHlwZTpkfV19KX0pKCk7dmFyIG42PWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGkpe3RoaXMuaD10LHRoaXMucz1lLHRoaXMudj1vLHRoaXMuYT1pfX0sbzY9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5oPXQsdGhpcy5zPWUsdGhpcy52PW8sdGhpcy5hPWl9fSx5Yz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuYWN0aXZlPW51bGx9c2V0QWN0aXZlKHQpe3RoaXMuYWN0aXZlJiZ0aGlzLmFjdGl2ZSE9PXQmJnRoaXMuYWN0aXZlLmNwRGlhbG9nRGlzcGxheSE9PSJpbmxpbmUiJiZ0aGlzLmFjdGl2ZS5jbG9zZURpYWxvZygpLHRoaXMuYWN0aXZlPXR9aHN2YTJoc2xhKHQpe2xldCBlPXQuaCxvPXQucyxpPXQudixhPXQuYTtpZihpPT09MClyZXR1cm4gbmV3IE5QKGUsMCwwLGEpO2lmKG89PT0wJiZpPT09MSlyZXR1cm4gbmV3IE5QKGUsMSwxLGEpO3tsZXQgcj1pKigyLW8pLzI7cmV0dXJuIG5ldyBOUChlLGkqby8oMS1NYXRoLmFicygyKnItMSkpLHIsYSl9fWhzbGEyaHN2YSh0KXtsZXQgZT1NYXRoLm1pbih0LmgsMSksbz1NYXRoLm1pbih0LnMsMSksaT1NYXRoLm1pbih0LmwsMSksYT1NYXRoLm1pbih0LmEsMSk7aWYoaT09PTApcmV0dXJuIG5ldyBjMihlLDAsMCxhKTt7bGV0IHI9aStvKigxLU1hdGguYWJzKDIqaS0xKSkvMjtyZXR1cm4gbmV3IGMyKGUsMiooci1pKS9yLHIsYSl9fWhzdmFUb1JnYmEodCl7bGV0IGUsbyxpLGE9dC5oLHI9dC5zLHM9dC52LGw9dC5hLGM9TWF0aC5mbG9vcihhKjYpLG09YSo2LWMsZj1zKigxLXIpLHA9cyooMS1tKnIpLGc9cyooMS0oMS1tKSpyKTtzd2l0Y2goYyU2KXtjYXNlIDA6ZT1zLG89ZyxpPWY7YnJlYWs7Y2FzZSAxOmU9cCxvPXMsaT1mO2JyZWFrO2Nhc2UgMjplPWYsbz1zLGk9ZzticmVhaztjYXNlIDM6ZT1mLG89cCxpPXM7YnJlYWs7Y2FzZSA0OmU9ZyxvPWYsaT1zO2JyZWFrO2Nhc2UgNTplPXMsbz1mLGk9cDticmVhaztkZWZhdWx0OmU9MCxvPTAsaT0wfXJldHVybiBuZXcgS00oZSxvLGksbCl9Y215a1RvUmdiKHQpe2xldCBlPSgxLXQuYykqKDEtdC5rKSxvPSgxLXQubSkqKDEtdC5rKSxpPSgxLXQueSkqKDEtdC5rKTtyZXR1cm4gbmV3IEtNKGUsbyxpLHQuYSl9cmdiYVRvQ215ayh0KXtsZXQgZT0xLU1hdGgubWF4KHQucix0LmcsdC5iKTtpZihlPT09MSlyZXR1cm4gbmV3IGExKDAsMCwwLDEsdC5hKTt7bGV0IG89KDEtdC5yLWUpLygxLWUpLGk9KDEtdC5nLWUpLygxLWUpLGE9KDEtdC5iLWUpLygxLWUpO3JldHVybiBuZXcgYTEobyxpLGEsZSx0LmEpfX1yZ2JhVG9Ic3ZhKHQpe2xldCBlLG8saT1NYXRoLm1pbih0LnIsMSksYT1NYXRoLm1pbih0LmcsMSkscj1NYXRoLm1pbih0LmIsMSkscz1NYXRoLm1pbih0LmEsMSksbD1NYXRoLm1heChpLGEsciksYz1NYXRoLm1pbihpLGEsciksbT1sLGY9bC1jO2lmKG89bD09PTA/MDpmL2wsbD09PWMpZT0wO2Vsc2V7c3dpdGNoKGwpe2Nhc2UgaTplPShhLXIpL2YrKGE8cj82OjApO2JyZWFrO2Nhc2UgYTplPShyLWkpL2YrMjticmVhaztjYXNlIHI6ZT0oaS1hKS9mKzQ7YnJlYWs7ZGVmYXVsdDplPTB9ZS89Nn1yZXR1cm4gbmV3IGMyKGUsbyxtLHMpfXJnYmFUb0hleCh0LGUpe2xldCBvPSIjIisoMTY3NzcyMTZ8dC5yPDwxNnx0Lmc8PDh8dC5iKS50b1N0cmluZygxNikuc3Vic3RyKDEpO3JldHVybiBlJiYobys9KDE8PDh8TWF0aC5yb3VuZCh0LmEqMjU1KSkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSksb31ub3JtYWxpemVDTVlLKHQpe3JldHVybiBuZXcgYTEodC5jLzEwMCx0Lm0vMTAwLHQueS8xMDAsdC5rLzEwMCx0LmEpfWRlbm9ybWFsaXplQ01ZSyh0KXtyZXR1cm4gbmV3IGExKE1hdGguZmxvb3IodC5jKjEwMCksTWF0aC5mbG9vcih0Lm0qMTAwKSxNYXRoLmZsb29yKHQueSoxMDApLE1hdGguZmxvb3IodC5rKjEwMCksdC5hKX1kZW5vcm1hbGl6ZVJHQkEodCl7cmV0dXJuIG5ldyBLTShNYXRoLnJvdW5kKHQucioyNTUpLE1hdGgucm91bmQodC5nKjI1NSksTWF0aC5yb3VuZCh0LmIqMjU1KSx0LmEpfXN0cmluZ1RvSHN2YSh0PSIiLGU9ITEpe2xldCBvPW51bGw7dD0odHx8IiIpLnRvTG93ZXJDYXNlKCk7bGV0IGk9W3tyZTovKHJnYilhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKiU/LFxzKihcZHsxLDN9KVxzKiU/KD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgS00ocGFyc2VJbnQoYVsyXSwxMCkvMjU1LHBhcnNlSW50KGFbM10sMTApLzI1NSxwYXJzZUludChhWzRdLDEwKS8yNTUsaXNOYU4ocGFyc2VGbG9hdChhWzVdKSk/MTpwYXJzZUZsb2F0KGFbNV0pKX19LHtyZTovKGhzbClhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KSVccyosXHMqKFxkezEsM30pJVxzKig/OixccyooXGQrKD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IE5QKHBhcnNlSW50KGFbMl0sMTApLzM2MCxwYXJzZUludChhWzNdLDEwKS8xMDAscGFyc2VJbnQoYVs0XSwxMCkvMTAwLGlzTmFOKHBhcnNlRmxvYXQoYVs1XSkpPzE6cGFyc2VGbG9hdChhWzVdKSl9fV07ZT9pLnB1c2goe3JlOi8jKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KT8kLyxwYXJzZTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IEtNKHBhcnNlSW50KGFbMV0sMTYpLzI1NSxwYXJzZUludChhWzJdLDE2KS8yNTUscGFyc2VJbnQoYVszXSwxNikvMjU1LHBhcnNlSW50KGFbNF18fCJGRiIsMTYpLzI1NSl9fSk6aS5wdXNoKHtyZTovIyhbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KSQvLHBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgS00ocGFyc2VJbnQoYVsxXSwxNikvMjU1LHBhcnNlSW50KGFbMl0sMTYpLzI1NSxwYXJzZUludChhWzNdLDE2KS8yNTUsMSl9fSksaS5wdXNoKHtyZTovIyhbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKSQvLHBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgS00ocGFyc2VJbnQoYVsxXSthWzFdLDE2KS8yNTUscGFyc2VJbnQoYVsyXSthWzJdLDE2KS8yNTUscGFyc2VJbnQoYVszXSthWzNdLDE2KS8yNTUsMSl9fSk7Zm9yKGxldCBhIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShhKSl7bGV0IHI9aVthXSxzPXIucmUuZXhlYyh0KSxsPXMmJnIucGFyc2Uocyk7aWYobClyZXR1cm4gbCBpbnN0YW5jZW9mIEtNP289dGhpcy5yZ2JhVG9Ic3ZhKGwpOmwgaW5zdGFuY2VvZiBOUCYmKG89dGhpcy5oc2xhMmhzdmEobCkpLG99cmV0dXJuIG99b3V0cHV0Rm9ybWF0KHQsZSxvKXtzd2l0Y2goZT09PSJhdXRvIiYmKGU9dC5hPDE/InJnYmEiOiJoZXgiKSxlKXtjYXNlImhzbGEiOmxldCBpPXRoaXMuaHN2YTJoc2xhKHQpLGE9bmV3IE5QKE1hdGgucm91bmQoaS5oKjM2MCksTWF0aC5yb3VuZChpLnMqMTAwKSxNYXRoLnJvdW5kKGkubCoxMDApLE1hdGgucm91bmQoaS5hKjEwMCkvMTAwKTtyZXR1cm4gdC5hPDF8fG89PT0iYWx3YXlzIj8iaHNsYSgiK2EuaCsiLCIrYS5zKyIlLCIrYS5sKyIlLCIrYS5hKyIpIjoiaHNsKCIrYS5oKyIsIithLnMrIiUsIithLmwrIiUpIjtjYXNlInJnYmEiOmxldCByPXRoaXMuZGVub3JtYWxpemVSR0JBKHRoaXMuaHN2YVRvUmdiYSh0KSk7cmV0dXJuIHQuYTwxfHxvPT09ImFsd2F5cyI/InJnYmEoIityLnIrIiwiK3IuZysiLCIrci5iKyIsIitNYXRoLnJvdW5kKHIuYSoxMDApLzEwMCsiKSI6InJnYigiK3IucisiLCIrci5nKyIsIityLmIrIikiO2RlZmF1bHQ6bGV0IHM9bz09PSJhbHdheXMifHxvPT09ImZvcmNlZCI7cmV0dXJuIHRoaXMucmdiYVRvSGV4KHRoaXMuZGVub3JtYWxpemVSR0JBKHRoaXMuaHN2YVRvUmdiYSh0KSkscyl9fX07eWMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8eWMpfTt5Yy5cdTAyNzVwcm92PVB0KHt0b2tlbjp5YyxmYWN0b3J5OnljLlx1MDI3NWZhY30pO3ljLmN0b3JQYXJhbWV0ZXJzPSgpPT5bXTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeWMsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5bXX0sbnVsbCl9KSgpO3ZhciBLdT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5lbFJlZj10LHRoaXMuY2RSZWY9ZSx0aGlzLnNlcnZpY2U9byx0aGlzLmlzSUUxMD0hMSx0aGlzLmRpYWxvZ0Fycm93U2l6ZT0xMCx0aGlzLmRpYWxvZ0Fycm93T2Zmc2V0PTE1LHRoaXMuZGlhbG9nSW5wdXRGaWVsZHM9W1BmLkhFWCxQZi5SR0JBLFBmLkhTTEEsUGYuQ01ZS10sdGhpcy51c2VSb290Vmlld0NvbnRhaW5lcj0hMX1oYW5kbGVFc2ModCl7dGhpcy5zaG93JiZ0aGlzLmNwRGlhbG9nRGlzcGxheT09PSJwb3B1cCImJnRoaXMub25DYW5jZWxDb2xvcih0KX1oYW5kbGVFbnRlcih0KXt0aGlzLnNob3cmJnRoaXMuY3BEaWFsb2dEaXNwbGF5PT09InBvcHVwIiYmdGhpcy5vbkFjY2VwdENvbG9yKHQpfW5nT25Jbml0KCl7dGhpcy5zbGlkZXI9bmV3IG42KDAsMCwwLDApO2xldCB0PXRoaXMuaHVlU2xpZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDE0MCxlPXRoaXMuYWxwaGFTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwO3RoaXMuc2xpZGVyRGltTWF4PW5ldyBvNih0LHRoaXMuY3BXaWR0aCwxMzAsZSksdGhpcy5jcENteWtFbmFibGVkP3RoaXMuZm9ybWF0PVBmLkNNWUs6dGhpcy5jcE91dHB1dEZvcm1hdD09PSJyZ2JhIj90aGlzLmZvcm1hdD1QZi5SR0JBOnRoaXMuY3BPdXRwdXRGb3JtYXQ9PT0iaHNsYSI/dGhpcy5mb3JtYXQ9UGYuSFNMQTp0aGlzLmZvcm1hdD1QZi5IRVgsdGhpcy5saXN0ZW5lck1vdXNlRG93bj1vPT57dGhpcy5vbk1vdXNlRG93bihvKX0sdGhpcy5saXN0ZW5lclJlc2l6ZT0oKT0+e3RoaXMub25SZXNpemUoKX0sdGhpcy5vcGVuRGlhbG9nKHRoaXMuaW5pdGlhbENvbG9yLCExKX1uZ09uRGVzdHJveSgpe3RoaXMuY2xvc2VEaWFsb2coKX1uZ0FmdGVyVmlld0luaXQoKXtpZih0aGlzLmNwV2lkdGghPT0yMzB8fHRoaXMuY3BEaWFsb2dEaXNwbGF5PT09ImlubGluZSIpe2xldCB0PXRoaXMuaHVlU2xpZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDE0MCxlPXRoaXMuYWxwaGFTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwO3RoaXMuc2xpZGVyRGltTWF4PW5ldyBvNih0LHRoaXMuY3BXaWR0aCwxMzAsZSksdGhpcy51cGRhdGVDb2xvclBpY2tlcighMSksdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCl9fW9wZW5EaWFsb2codCxlPSEwKXt0aGlzLnNlcnZpY2Uuc2V0QWN0aXZlKHRoaXMpLHRoaXMud2lkdGh8fCh0aGlzLmNwV2lkdGg9dGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpLHRoaXMuaGVpZ2h0fHwodGhpcy5oZWlnaHQ9MzIwKSx0aGlzLnNldEluaXRpYWxDb2xvcih0KSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0LGUpLHRoaXMub3BlbkNvbG9yUGlja2VyKCl9Y2xvc2VEaWFsb2coKXt0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKX1zZXR1cERpYWxvZyh0LGUsbyxpLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE8sYixSLEUsaixydCxKLEV0LGp0LGt0LHcsVSxudCxsdCxidCxvdCx1dCxndCxXdCxSdCl7dGhpcy5zZXRJbml0aWFsQ29sb3IobyksdGhpcy5zZXRDb2xvck1vZGUobCksdGhpcy5pc0lFMTA9RHp0KCk9PT0xMCx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlPXQsdGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmPWUsdGhpcy5jcERpc2FibGVJbnB1dD1wLHRoaXMuY3BDbXlrRW5hYmxlZD1jLHRoaXMuY3BBbHBoYUNoYW5uZWw9bSx0aGlzLmNwT3V0cHV0Rm9ybWF0PWYsdGhpcy5jcERpYWxvZ0Rpc3BsYXk9cix0aGlzLmNwSWdub3JlZEVsZW1lbnRzPWcsdGhpcy5jcFNhdmVDbGlja091dHNpZGU9Xyx0aGlzLmNwQ2xvc2VDbGlja091dHNpZGU9TSx0aGlzLnVzZVJvb3RWaWV3Q29udGFpbmVyPXksdGhpcy53aWR0aD10aGlzLmNwV2lkdGg9cGFyc2VJbnQoaSwxMCksdGhpcy5oZWlnaHQ9dGhpcy5jcEhlaWdodD1wYXJzZUludChhLDEwKSx0aGlzLmNwUG9zaXRpb249Tyx0aGlzLmNwUG9zaXRpb25PZmZzZXQ9cGFyc2VJbnQoYiwxMCksdGhpcy5jcE9LQnV0dG9uPWt0LHRoaXMuY3BPS0J1dHRvblRleHQ9VSx0aGlzLmNwT0tCdXR0b25DbGFzcz13LHRoaXMuY3BDYW5jZWxCdXR0b249bnQsdGhpcy5jcENhbmNlbEJ1dHRvblRleHQ9YnQsdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzPWx0LHRoaXMuZmFsbGJhY2tDb2xvcj1zfHwiI2ZmZiIsdGhpcy5zZXRQcmVzZXRDb25maWcoRSxqKSx0aGlzLmNwUHJlc2V0Q29sb3JzQ2xhc3M9cnQsdGhpcy5jcE1heFByZXNldENvbG9yc0xlbmd0aD1KLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2U9RXQsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzPWp0LHRoaXMuY3BBZGRDb2xvckJ1dHRvbj1vdCx0aGlzLmNwQWRkQ29sb3JCdXR0b25UZXh0PWd0LHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPXV0LHRoaXMuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzPVd0LHRoaXMuY3BUcmlnZ2VyRWxlbWVudD1SdCxSfHwodGhpcy5kaWFsb2dBcnJvd09mZnNldD0wKSxyPT09ImlubGluZSImJih0aGlzLmRpYWxvZ0Fycm93U2l6ZT0wLHRoaXMuZGlhbG9nQXJyb3dPZmZzZXQ9MCksZj09PSJoZXgiJiZtIT09ImFsd2F5cyImJm0hPT0iZm9yY2VkIiYmKHRoaXMuY3BBbHBoYUNoYW5uZWw9ImRpc2FibGVkIil9c2V0Q29sb3JNb2RlKHQpe3N3aXRjaCh0LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSl7Y2FzZSIxIjpjYXNlIkMiOmNhc2UiQ09MT1IiOnRoaXMuY3BDb2xvck1vZGU9MTticmVhaztjYXNlIjIiOmNhc2UiRyI6Y2FzZSJHUkFZU0NBTEUiOnRoaXMuY3BDb2xvck1vZGU9MjticmVhaztjYXNlIjMiOmNhc2UiUCI6Y2FzZSJQUkVTRVRTIjp0aGlzLmNwQ29sb3JNb2RlPTM7YnJlYWs7ZGVmYXVsdDp0aGlzLmNwQ29sb3JNb2RlPTF9fXNldEluaXRpYWxDb2xvcih0KXt0aGlzLmluaXRpYWxDb2xvcj10fXNldFByZXNldENvbmZpZyh0LGUpe3RoaXMuY3BQcmVzZXRMYWJlbD10LHRoaXMuY3BQcmVzZXRDb2xvcnM9ZX1zZXRDb2xvckZyb21TdHJpbmcodCxlPSEwLG89ITApe2xldCBpO3RoaXMuY3BBbHBoYUNoYW5uZWw9PT0iYWx3YXlzInx8dGhpcy5jcEFscGhhQ2hhbm5lbD09PSJmb3JjZWQiPyhpPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMCksIWkmJiF0aGlzLmhzdmEmJihpPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMSkpKTppPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMSksIWkmJiF0aGlzLmhzdmEmJihpPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodGhpcy5mYWxsYmFja0NvbG9yLCExKSksaSYmKHRoaXMuaHN2YT1pLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLmNwT3V0cHV0Rm9ybWF0PT09ImhleCImJnRoaXMuY3BBbHBoYUNoYW5uZWw9PT0iZGlzYWJsZWQiJiYodGhpcy5oc3ZhLmE9MSksdGhpcy51cGRhdGVDb2xvclBpY2tlcihlLG8pKX1vblJlc2l6ZSgpe3RoaXMucG9zaXRpb249PT0iZml4ZWQiP3RoaXMuc2V0RGlhbG9nUG9zaXRpb24oKTp0aGlzLmNwRGlhbG9nRGlzcGxheSE9PSJpbmxpbmUiJiZ0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKX1vbkRyYWdFbmQodCl7dGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJEcmFnRW5kKHtzbGlkZXI6dCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25EcmFnU3RhcnQodCl7dGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJEcmFnU3RhcnQoe3NsaWRlcjp0LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbk1vdXNlRG93bih0KXt0aGlzLnNob3cmJiF0aGlzLmlzSUUxMCYmdGhpcy5jcERpYWxvZ0Rpc3BsYXk9PT0icG9wdXAiJiZ0LnRhcmdldCE9PXRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50JiYhdGhpcy5pc0Rlc2NlbmRhbnQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LHQudGFyZ2V0KSYmIXRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQudGFyZ2V0KSYmdGhpcy5jcElnbm9yZWRFbGVtZW50cy5maWx0ZXIoZT0+ZT09PXQudGFyZ2V0KS5sZW5ndGg9PT0wJiYodGhpcy5jcFNhdmVDbGlja091dHNpZGU/dGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvclNlbGVjdGVkKHRoaXMub3V0cHV0Q29sb3IpOih0aGlzLmhzdmE9bnVsbCx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0aGlzLmluaXRpYWxDb2xvciwhMSksdGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLmluaXRpYWxDb2xvciksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvckNhbmNlbGVkKCkpLHRoaXMuY3BDbG9zZUNsaWNrT3V0c2lkZSYmdGhpcy5jbG9zZUNvbG9yUGlja2VyKCkpfW9uQWNjZXB0Q29sb3IodCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm91dHB1dENvbG9yJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yU2VsZWN0ZWQodGhpcy5vdXRwdXRDb2xvciksdGhpcy5jcERpYWxvZ0Rpc3BsYXk9PT0icG9wdXAiJiZ0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKX1vbkNhbmNlbENvbG9yKHQpe3RoaXMuaHN2YT1udWxsLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvckNhbmNlbGVkKCksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodGhpcy5pbml0aWFsQ29sb3IsITApLHRoaXMuY3BEaWFsb2dEaXNwbGF5PT09InBvcHVwIiYmKHRoaXMuY3BDbXlrRW5hYmxlZCYmdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jbXlrQ2hhbmdlZCh0aGlzLmNteWtDb2xvciksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvckNoYW5nZWQodGhpcy5pbml0aWFsQ29sb3IsITApLHRoaXMuY2xvc2VDb2xvclBpY2tlcigpKX1vbkZvcm1hdFRvZ2dsZSh0KXtsZXQgZT10aGlzLmRpYWxvZ0lucHV0RmllbGRzLmxlbmd0aC0odGhpcy5jcENteWtFbmFibGVkPzA6MSksbz0oKHRoaXMuZGlhbG9nSW5wdXRGaWVsZHMuaW5kZXhPZih0aGlzLmZvcm1hdCkrdCklZStlKSVlO3RoaXMuZm9ybWF0PXRoaXMuZGlhbG9nSW5wdXRGaWVsZHNbb119b25Db2xvckNoYW5nZSh0KXt0aGlzLmhzdmEucz10LnMvdC5yZ1gsdGhpcy5oc3ZhLnY9dC52L3QucmdZLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoibGlnaHRuZXNzIix2YWx1ZTp0aGlzLmhzdmEudixjb2xvcjp0aGlzLm91dHB1dENvbG9yfSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6InNhdHVyYXRpb24iLHZhbHVlOnRoaXMuaHN2YS5zLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkh1ZUNoYW5nZSh0KXt0aGlzLmhzdmEuaD10LnYvdC5yZ1gsdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoiaHVlIix2YWx1ZTp0aGlzLmhzdmEuaCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25WYWx1ZUNoYW5nZSh0KXt0aGlzLmhzdmEudj10LnYvdC5yZ1gsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyQ2hhbmdlZCh7c2xpZGVyOiJ2YWx1ZSIsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQWxwaGFDaGFuZ2UodCl7dGhpcy5oc3ZhLmE9dC52L3QucmdYLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoiYWxwaGEiLHZhbHVlOnRoaXMuaHN2YS5hLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkhleElucHV0KHQpe2lmKHQ9PT1udWxsKXRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKTtlbHNle3QmJnRbMF0hPT0iIyImJih0PSIjIit0KTtsZXQgZT0vXiMoW2EtZjAtOV17M318W2EtZjAtOV17Nn0pJC9naTt0aGlzLmNwQWxwaGFDaGFubmVsPT09ImFsd2F5cyImJihlPS9eIyhbYS1mMC05XXszfXxbYS1mMC05XXs2fXxbYS1mMC05XXs4fSkkL2dpKTtsZXQgbz1lLnRlc3QodCk7byYmKHQubGVuZ3RoPDUmJih0PSIjIit0LnN1YnN0cmluZygxKS5zcGxpdCgiIikubWFwKGk9PmkraSkuam9pbigiIikpLHRoaXMuY3BBbHBoYUNoYW5uZWw9PT0iZm9yY2VkIiYmKHQrPU1hdGgucm91bmQodGhpcy5oc3ZhLmEqMjU1KS50b1N0cmluZygxNikpLHRoaXMuc2V0Q29sb3JGcm9tU3RyaW5nKHQsITAsITEpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImhleCIsdmFsaWQ6byx2YWx1ZTp0LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX19b25SZWRJbnB1dCh0KXtsZXQgZT10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLG89IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO28mJihlLnI9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoicmVkIix2YWxpZDpvLHZhbHVlOmUucixjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25CbHVlSW5wdXQodCl7bGV0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxvPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztvJiYoZS5iPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsdWUiLHZhbGlkOm8sdmFsdWU6ZS5iLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkdyZWVuSW5wdXQodCl7bGV0IGU9dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxvPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztvJiYoZS5nPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImdyZWVuIix2YWxpZDpvLHZhbHVlOmUuZyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IdWVJbnB1dCh0KXtsZXQgZT0haXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmc7ZSYmKHRoaXMuaHN2YS5oPXQudi90LnJnLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiaHVlIix2YWxpZDplLHZhbHVlOnRoaXMuaHN2YS5oLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblZhbHVlSW5wdXQodCl7bGV0IGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJih0aGlzLmhzdmEudj10LnYvdC5yZyx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoidmFsdWUiLHZhbGlkOmUsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQWxwaGFJbnB1dCh0KXtsZXQgZT0haXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmc7ZSYmKHRoaXMuaHN2YS5hPXQudi90LnJnLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJhbHBoYSIsdmFsaWQ6ZSx2YWx1ZTp0aGlzLmhzdmEuYSxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25MaWdodG5lc3NJbnB1dCh0KXtsZXQgZT10aGlzLnNlcnZpY2UuaHN2YTJoc2xhKHRoaXMuaHN2YSksbz0haXNOYU4odC52KSYmdC52Pj0wJiZ0LnY8PXQucmc7byYmKGUubD10LnYvdC5yZyx0aGlzLmhzdmE9dGhpcy5zZXJ2aWNlLmhzbGEyaHN2YShlKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImxpZ2h0bmVzcyIsdmFsaWQ6byx2YWx1ZTplLmwsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uU2F0dXJhdGlvbklucHV0KHQpe2xldCBlPXRoaXMuc2VydmljZS5oc3ZhMmhzbGEodGhpcy5oc3ZhKSxvPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztvJiYoZS5zPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UuaHNsYTJoc3ZhKGUpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoic2F0dXJhdGlvbiIsdmFsaWQ6byx2YWx1ZTplLnMsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQ3lhbklucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay5jPXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJjeWFuIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuYyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25NYWdlbnRhSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLm09dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Im1hZ2VudGEiLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay5tLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblllbGxvd0lucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay55PXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJ5ZWxsb3ciLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay55LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkJsYWNrSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLms9dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsYWNrIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuayxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25BZGRQcmVzZXRDb2xvcih0LGUpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIobz0+bz09PWUpLmxlbmd0aHx8KHRoaXMuY3BQcmVzZXRDb2xvcnM9dGhpcy5jcFByZXNldENvbG9ycy5jb25jYXQoZSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5wcmVzZXRDb2xvcnNDaGFuZ2VkKHRoaXMuY3BQcmVzZXRDb2xvcnMpKX1vblJlbW92ZVByZXNldENvbG9yKHQsZSl7dC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmNwUHJlc2V0Q29sb3JzPXRoaXMuY3BQcmVzZXRDb2xvcnMuZmlsdGVyKG89Pm8hPT1lKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnByZXNldENvbG9yc0NoYW5nZWQodGhpcy5jcFByZXNldENvbG9ycyl9b3BlbkNvbG9yUGlja2VyKCl7dGhpcy5zaG93fHwodGhpcy5zaG93PSEwLHRoaXMuaGlkZGVuPSEwLHNldFRpbWVvdXQoKCk9Pnt0aGlzLmhpZGRlbj0hMSx0aGlzLnNldERpYWxvZ1Bvc2l0aW9uKCksdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCl9LDApLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCEwKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpKX1jbG9zZUNvbG9yUGlja2VyKCl7dGhpcy5zaG93JiYodGhpcy5zaG93PSExLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCExKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpLHRoaXMuY2RSZWYuZGVzdHJveWVkfHx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSl9dXBkYXRlQ29sb3JQaWNrZXIodD0hMCxlPSEwLG89ITEpe2lmKHRoaXMuc2xpZGVyRGltTWF4KXt0aGlzLmNwQ29sb3JNb2RlPT09MiYmKHRoaXMuaHN2YS5zPTApO2xldCBpLGEscixzPXRoaXMub3V0cHV0Q29sb3I7aWYoYT10aGlzLnNlcnZpY2UuaHN2YTJoc2xhKHRoaXMuaHN2YSksdGhpcy5jcENteWtFbmFibGVkPyhvPyhyPXRoaXMuc2VydmljZS5jbXlrVG9SZ2IodGhpcy5zZXJ2aWNlLm5vcm1hbGl6ZUNNWUsodGhpcy5jbXlrKSksdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKHIpKToocj10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLHRoaXMuY215az10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVDTVlLKHRoaXMuc2VydmljZS5yZ2JhVG9DbXlrKHIpKSkscj10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHIpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCk6cj10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKHRoaXMuaHN2YSkpLGk9dGhpcy5zZXJ2aWNlLmRlbm9ybWFsaXplUkdCQSh0aGlzLnNlcnZpY2UuaHN2YVRvUmdiYShuZXcgYzIodGhpcy5zbGlkZXJIfHx0aGlzLmhzdmEuaCwxLDEsMSkpKSxlKXt0aGlzLmhzbGFUZXh0PW5ldyBOUChNYXRoLnJvdW5kKGEuaCozNjApLE1hdGgucm91bmQoYS5zKjEwMCksTWF0aC5yb3VuZChhLmwqMTAwKSxNYXRoLnJvdW5kKGEuYSoxMDApLzEwMCksdGhpcy5yZ2JhVGV4dD1uZXcgS00oci5yLHIuZyxyLmIsTWF0aC5yb3VuZChyLmEqMTAwKS8xMDApLHRoaXMuY3BDbXlrRW5hYmxlZCYmKHRoaXMuY215a1RleHQ9bmV3IGExKHRoaXMuY215ay5jLHRoaXMuY215ay5tLHRoaXMuY215ay55LHRoaXMuY215ay5rLE1hdGgucm91bmQodGhpcy5jbXlrLmEqMTAwKS8xMDApKTtsZXQgbD10aGlzLmNwQWxwaGFDaGFubmVsPT09ImFsd2F5cyI7dGhpcy5oZXhUZXh0PXRoaXMuc2VydmljZS5yZ2JhVG9IZXgocixsKSx0aGlzLmhleEFscGhhPXRoaXMucmdiYVRleHQuYX1pZih0aGlzLmNwT3V0cHV0Rm9ybWF0PT09ImF1dG8iJiZ0aGlzLmZvcm1hdCE9PVBmLlJHQkEmJnRoaXMuZm9ybWF0IT09UGYuQ01ZSyYmdGhpcy5oc3ZhLmE8MSYmKHRoaXMuZm9ybWF0PXRoaXMuaHN2YS5hPDE/UGYuUkdCQTpQZi5IRVgpLHRoaXMuaHVlU2xpZGVyQ29sb3I9InJnYigiK2kucisiLCIraS5nKyIsIitpLmIrIikiLHRoaXMuYWxwaGFTbGlkZXJDb2xvcj0icmdiKCIrci5yKyIsIityLmcrIiwiK3IuYisiKSIsdGhpcy5vdXRwdXRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSx0aGlzLmNwT3V0cHV0Rm9ybWF0LHRoaXMuY3BBbHBoYUNoYW5uZWwpLHRoaXMuc2VsZWN0ZWRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSwicmdiYSIsbnVsbCksdGhpcy5mb3JtYXQhPT1QZi5DTVlLKXRoaXMuY215a0NvbG9yPSIiO2Vsc2UgaWYodGhpcy5jcEFscGhhQ2hhbm5lbD09PSJhbHdheXMifHx0aGlzLmNwQWxwaGFDaGFubmVsPT09ImVuYWJsZWQifHx0aGlzLmNwQWxwaGFDaGFubmVsPT09ImZvcmNlZCIpe2xldCBsPU1hdGgucm91bmQodGhpcy5jbXlrLmEqMTAwKS8xMDA7dGhpcy5jbXlrQ29sb3I9YGNteWthKCR7dGhpcy5jbXlrLmN9LCR7dGhpcy5jbXlrLm19LCR7dGhpcy5jbXlrLnl9LCR7dGhpcy5jbXlrLmt9LCR7bH0pYH1lbHNlIHRoaXMuY215a0NvbG9yPWBjbXlrKCR7dGhpcy5jbXlrLmN9LCR7dGhpcy5jbXlrLm19LCR7dGhpcy5jbXlrLnl9LCR7dGhpcy5jbXlrLmt9KWA7dGhpcy5zbGlkZXI9bmV3IG42KCh0aGlzLnNsaWRlckh8fHRoaXMuaHN2YS5oKSp0aGlzLnNsaWRlckRpbU1heC5oLTgsdGhpcy5oc3ZhLnMqdGhpcy5zbGlkZXJEaW1NYXgucy04LCgxLXRoaXMuaHN2YS52KSp0aGlzLnNsaWRlckRpbU1heC52LTgsdGhpcy5oc3ZhLmEqdGhpcy5zbGlkZXJEaW1NYXguYS04KSx0JiZzIT09dGhpcy5vdXRwdXRDb2xvciYmKHRoaXMuY3BDbXlrRW5hYmxlZCYmdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jbXlrQ2hhbmdlZCh0aGlzLmNteWtDb2xvciksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5jb2xvckNoYW5nZWQodGhpcy5vdXRwdXRDb2xvcikpfX1zZXREaWFsb2dQb3NpdGlvbigpe2lmKHRoaXMuY3BEaWFsb2dEaXNwbGF5PT09ImlubGluZSIpdGhpcy5wb3NpdGlvbj0icmVsYXRpdmUiO2Vsc2V7bGV0IHQ9InN0YXRpYyIsZT0iIixvLGk9bnVsbCxhPW51bGwscj10aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLHM9dGhpcy5kaWFsb2dFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O2Zvcig7ciE9PW51bGwmJnIudGFnTmFtZSE9PSJIVE1MIjspe2lmKG89d2luZG93LmdldENvbXB1dGVkU3R5bGUociksdD1vLmdldFByb3BlcnR5VmFsdWUoInBvc2l0aW9uIiksZT1vLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLHQhPT0ic3RhdGljIiYmaT09PW51bGwmJihpPXIpLGUmJmUhPT0ibm9uZSImJmE9PT1udWxsJiYoYT1yKSx0PT09ImZpeGVkIil7aT1hO2JyZWFrfXI9ci5wYXJlbnROb2RlfWxldCBsPXRoaXMuY3JlYXRlRGlhbG9nQm94KHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQhPT0iZml4ZWQiKTtpZih0aGlzLnVzZVJvb3RWaWV3Q29udGFpbmVyfHx0PT09ImZpeGVkIiYmKCFpfHxpIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50KSl0aGlzLnRvcD1sLnRvcCx0aGlzLmxlZnQ9bC5sZWZ0O2Vsc2V7aT09PW51bGwmJihpPXIpO2xldCBtPXRoaXMuY3JlYXRlRGlhbG9nQm94KGksdCE9PSJmaXhlZCIpO3RoaXMudG9wPWwudG9wLW0udG9wLHRoaXMubGVmdD1sLmxlZnQtbS5sZWZ0fXQ9PT0iZml4ZWQiJiYodGhpcy5wb3NpdGlvbj0iZml4ZWQiKTtsZXQgYz10aGlzLmNwUG9zaXRpb247aWYodGhpcy5jcFBvc2l0aW9uPT09ImF1dG8iKXtsZXQgbT10aGlzLmRpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPXRoaXMuY3BUcmlnZ2VyRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2M9QXp0KG0sZil9Yz09PSJ0b3AiPyh0aGlzLmFycm93VG9wPXMtMSx0aGlzLnRvcC09cyt0aGlzLmRpYWxvZ0Fycm93U2l6ZSx0aGlzLmxlZnQrPXRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAqbC53aWR0aC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KTpjPT09ImJvdHRvbSI/KHRoaXMudG9wKz1sLmhlaWdodCt0aGlzLmRpYWxvZ0Fycm93U2l6ZSx0aGlzLmxlZnQrPXRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAqbC53aWR0aC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KTpjPT09InRvcC1sZWZ0Inx8Yz09PSJsZWZ0LXRvcCI/KHRoaXMudG9wLT1zLWwuaGVpZ2h0K2wuaGVpZ2h0KnRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAsdGhpcy5sZWZ0LT10aGlzLmNwV2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMi10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KTpjPT09InRvcC1yaWdodCJ8fGM9PT0icmlnaHQtdG9wIj8odGhpcy50b3AtPXMtbC5oZWlnaHQrbC5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMCx0aGlzLmxlZnQrPWwud2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMi10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KTpjPT09ImxlZnQifHxjPT09ImJvdHRvbS1sZWZ0Inx8Yz09PSJsZWZ0LWJvdHRvbSI/KHRoaXMudG9wKz1sLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQsdGhpcy5sZWZ0LT10aGlzLmNwV2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMik6KHRoaXMudG9wKz1sLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQsdGhpcy5sZWZ0Kz1sLndpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTIpLHRoaXMuY3BVc2VQb3NpdGlvbj1jfX1pc0Rlc2NlbmRhbnQodCxlKXtsZXQgbz1lLnBhcmVudE5vZGU7Zm9yKDtvIT09bnVsbDspe2lmKG89PT10KXJldHVybiEwO289by5wYXJlbnROb2RlfXJldHVybiExfWNyZWF0ZURpYWxvZ0JveCh0LGUpe3JldHVybnt0b3A6dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArKGU/d2luZG93LnBhZ2VZT2Zmc2V0OjApLGxlZnQ6dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KyhlP3dpbmRvdy5wYWdlWE9mZnNldDowKSx3aWR0aDp0Lm9mZnNldFdpZHRoLGhlaWdodDp0Lm9mZnNldEhlaWdodH19fTtLdS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxLdSkodihMKSx2KFR0KSx2KHljKSl9O0t1Llx1MDI3NWNtcD16KHt0eXBlOkt1LHNlbGVjdG9yczpbWyJjb2xvci1waWNrZXIiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYocGUob3p0LDcpLHBlKGl6dCw3KSxwZShhenQsNykpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuZGlhbG9nRWxlbWVudD1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5odWVTbGlkZXI9by5maXJzdCksSHQobz1GdCgpKSYmKGUuYWxwaGFTbGlkZXI9by5maXJzdCl9fSxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImtleXVwLmVzYyIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGFuZGxlRXNjKGkpfSwhMSxOVCkoImtleXVwLmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gZS5oYW5kbGVFbnRlcihpKX0sITEsTlQpfSxkZWNsczoyOCx2YXJzOjQ3LGNvbnN0czpbWzEsImNvbG9yLXBpY2tlciIsMywiY2xpY2siXSxbImRpYWxvZ1BvcHVwIiwiIl0sWzMsImNsYXNzIiwidG9wIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNhdHVyYXRpb24tbGlnaHRuZXNzIiwzLCJzbGlkZXIiLCJyZ1giLCJyZ1kiLCJiYWNrZ3JvdW5kLWNvbG9yIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIiw0LCJuZ0lmIl0sWzEsImh1ZS1hbHBoYSIsImJveCJdLFsxLCJsZWZ0Il0sWzEsInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQiXSxbMSwic2VsZWN0ZWQtY29sb3IiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJyaWdodCJdLFsic3R5bGUiLCJoZWlnaHQ6IDE2cHg7Iiw0LCJuZ0lmIl0sWzEsImh1ZSIsMywic2xpZGVyIiwicmdYIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIl0sWyJodWVTbGlkZXIiLCIiXSxbMSwiY3Vyc29yIl0sWzEsInZhbHVlIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbInZhbHVlU2xpZGVyIiwiIl0sWzEsImFscGhhIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbImFscGhhU2xpZGVyIiwiIl0sWyJjbGFzcyIsImNteWstdGV4dCIsMywiZGlzcGxheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJoc2xhLXRleHQiLDMsImRpc3BsYXkiLDQsIm5nSWYiXSxbImNsYXNzIiwicmdiYS10ZXh0IiwzLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImhleC10ZXh0IiwzLCJoZXgtYWxwaGEiLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsInZhbHVlLXRleHQiLDQsIm5nSWYiXSxbImNsYXNzIiwidHlwZS1wb2xpY3kiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJlc2V0LWFyZWEiLDQsIm5nSWYiXSxbImNsYXNzIiwiYnV0dG9uLWFyZWEiLDQsIm5nSWYiXSxbMSwic2F0dXJhdGlvbi1saWdodG5lc3MiLDMsInNsaWRlciIsInJnWCIsInJnWSIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCJdLFsidHlwZSIsImJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsyLCJoZWlnaHQiLCIxNnB4Il0sWzEsImNteWstdGV4dCJdLFsxLCJib3giXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjEwMCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsxLCJoc2xhLXRleHQiXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjM2MCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWzEsInJnYmEtdGV4dCJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSoiLCJtaW4iLCIwIiwibWF4IiwiMjU1IiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwiaGV4LXRleHQiXSxbMywidGV4dCIsInZhbHVlIiwiYmx1ciIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwidmFsdWUtdGV4dCJdLFsxLCJ0eXBlLXBvbGljeSJdLFsxLCJ0eXBlLXBvbGljeS1hcnJvdyIsMywiY2xpY2siXSxbMSwicHJlc2V0LWFyZWEiXSxbMSwicHJlc2V0LWxhYmVsIl0sWzMsImNsYXNzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInByZXNldC1jb2xvciIsMywiYmFja2dyb3VuZENvbG9yIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJwcmVzZXQtY29sb3IiLDMsImNsaWNrIl0sWzMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbMywiY2xpY2siXSxbMSwiYnV0dG9uLWFyZWEiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDAsMSksQSgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBpLnN0b3BQcm9wYWdhdGlvbigpfSksaygyLHJ6dCwxLDUsImRpdiIsMiksaygzLHN6dCwyLDgsImRpdiIsMyksdSg0LCJkaXYiLDQpLHUoNSwiZGl2Iiw1KSxEKDYsImRpdiIsNiksRCg3LCJkaXYiLDcpLGsoOCxsenQsMiw1LCJidXR0b24iLDgpLGgoKSx1KDksImRpdiIsOSksaygxMCxjenQsMSwwLCJkaXYiLDEwKSx1KDExLCJkaXYiLDExLDEyKSxBKCJuZXdWYWx1ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25IdWVDaGFuZ2UoaSl9KSgiZHJhZ1N0YXJ0IixmdW5jdGlvbigpe3JldHVybiBlLm9uRHJhZ1N0YXJ0KCJodWUiKX0pKCJkcmFnRW5kIixmdW5jdGlvbigpe3JldHVybiBlLm9uRHJhZ0VuZCgiaHVlIil9KSxEKDEzLCJkaXYiLDEzKSxoKCksdSgxNCwiZGl2IiwxNCwxNSksQSgibmV3VmFsdWUiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uVmFsdWVDaGFuZ2UoaSl9KSgiZHJhZ1N0YXJ0IixmdW5jdGlvbigpe3JldHVybiBlLm9uRHJhZ1N0YXJ0KCJ2YWx1ZSIpfSkoImRyYWdFbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25EcmFnRW5kKCJ2YWx1ZSIpfSksRCgxNiwiZGl2IiwxMyksaCgpLHUoMTcsImRpdiIsMTYsMTcpLEEoIm5ld1ZhbHVlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkFscGhhQ2hhbmdlKGkpfSkoImRyYWdTdGFydCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkRyYWdTdGFydCgiYWxwaGEiKX0pKCJkcmFnRW5kIixmdW5jdGlvbigpe3JldHVybiBlLm9uRHJhZ0VuZCgiYWxwaGEiKX0pLEQoMTksImRpdiIsMTMpLGgoKSxoKCksaCgpLGsoMjAscHp0LDE3LDEyLCJkaXYiLDE4KSxrKDIxLHV6dCwxNCwxMCwiZGl2IiwxOSksaygyMixDenQsMTQsMTAsImRpdiIsMjApLGsoMjMsT3p0LDgsNywiZGl2IiwyMSksaygyNCx5enQsOSwzLCJkaXYiLDIyKSxrKDI1LHh6dCwzLDAsImRpdiIsMjMpLGsoMjYsRXp0LDYsMywiZGl2IiwyNCksaygyNyxUenQsMywyLCJkaXYiLDI1KSxoKCkpLHQmMiYmKHFlKCJkaXNwbGF5IixlLnNob3c/ImJsb2NrIjoibm9uZSIpKCJ2aXNpYmlsaXR5IixlLmhpZGRlbj8iaGlkZGVuIjoidmlzaWJsZSIpKCJ0b3AiLGUudG9wLCJweCIpKCJsZWZ0IixlLmxlZnQsInB4IikoInBvc2l0aW9uIixlLnBvc2l0aW9uKSgiaGVpZ2h0IixlLmNwSGVpZ2h0LCJweCIpKCJ3aWR0aCIsZS5jcFdpZHRoLCJweCIpLG1lKCJvcGVuIixlLnNob3cpLHgoMiksUCgibmdJZiIsZS5jcERpYWxvZ0Rpc3BsYXk9PSJwb3B1cCIpLHgoMSksUCgibmdJZiIsKGUuY3BDb2xvck1vZGV8fDEpPT09MSkseCg0KSxxZSgiYmFja2dyb3VuZC1jb2xvciIsZS5zZWxlY3RlZENvbG9yKSx4KDEpLFAoIm5nSWYiLGUuY3BBZGRDb2xvckJ1dHRvbikseCgyKSxQKCJuZ0lmIixlLmNwQWxwaGFDaGFubmVsPT09ImRpc2FibGVkIikseCgxKSxxZSgiZGlzcGxheSIsKGUuY3BDb2xvck1vZGV8fDEpPT09MT8iYmxvY2siOiJub25lIiksUCgicmdYIiwxKSx4KDIpLHFlKCJsZWZ0IixlLnNsaWRlcj09bnVsbD9udWxsOmUuc2xpZGVyLmgsInB4IikseCgxKSxxZSgiZGlzcGxheSIsKGUuY3BDb2xvck1vZGV8fDEpPT09Mj8iYmxvY2siOiJub25lIiksUCgicmdYIiwxKSx4KDIpLHFlKCJyaWdodCIsZS5zbGlkZXI9PW51bGw/bnVsbDplLnNsaWRlci52LCJweCIpLHgoMSkscWUoImRpc3BsYXkiLGUuY3BBbHBoYUNoYW5uZWw9PT0iZGlzYWJsZWQiPyJub25lIjoiYmxvY2siKSgiYmFja2dyb3VuZC1jb2xvciIsZS5hbHBoYVNsaWRlckNvbG9yKSxQKCJyZ1giLDEpLHgoMikscWUoImxlZnQiLGUuc2xpZGVyPT1udWxsP251bGw6ZS5zbGlkZXIuYSwicHgiKSx4KDEpLFAoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYoZS5jcENvbG9yTW9kZXx8MSk9PT0xKSx4KDEpLFAoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYoZS5jcENvbG9yTW9kZXx8MSk9PT0xKSx4KDEpLFAoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYoZS5jcENvbG9yTW9kZXx8MSk9PT0xKSx4KDEpLFAoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYoZS5jcENvbG9yTW9kZXx8MSk9PT0xKSx4KDEpLFAoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYoZS5jcENvbG9yTW9kZXx8MSk9PT0yKSx4KDEpLFAoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYoZS5jcENvbG9yTW9kZXx8MSk9PT0xKSx4KDEpLFAoIm5nSWYiLChlLmNwUHJlc2V0Q29sb3JzPT1udWxsP251bGw6ZS5jcFByZXNldENvbG9ycy5sZW5ndGgpfHxlLmNwQWRkQ29sb3JCdXR0b24pLHgoMSksUCgibmdJZiIsZS5jcE9LQnV0dG9ufHxlLmNwQ2FuY2VsQnV0dG9uKSl9LGRpcmVjdGl2ZXM6W1h0LE4wLEpNLG1uXSxzdHlsZXM6WycuY29sb3ItcGlja2Vyey1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzc3NztjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt1c2VyLXNlbGVjdDpub25lO3dpZHRoOjIzMHB4O3otaW5kZXg6MTAwMH0uY29sb3ItcGlja2VyICp7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtc2l6ZToxMXB4O21hcmdpbjowfS5jb2xvci1waWNrZXIgaW5wdXR7Y29sb3I6IzAwMDtmb250LXNpemU6MTNweDtoZWlnaHQ6MjZweDttaW4td2lkdGg6MDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDowfS5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei1zdWJtaXQtaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0Oi1tb3otdWktaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0OmludmFsaWR7Ym94LXNoYWRvdzpub25lfS5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0uY29sb3ItcGlja2VyIC5hcnJvd3tib3JkZXItc3R5bGU6c29saWQ7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDt6LWluZGV4Ojk5OTk5OX0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3B7Ym9yZGVyLWNvbG9yOiM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHg7dG9wOi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1sZWZ0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O3JpZ2h0Oi0yMXB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtcmlnaHR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7bGVmdDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtyaWdodDotMjFweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2xlZnQ6LTIwcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5jdXJzb3J7Ym9yZGVyOjJweCBzb2xpZCAjMjIyO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpkZWZhdWx0O2hlaWdodDoxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAuYm94e2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjRweCA4cHh9LmNvbG9yLXBpY2tlciAubGVmdHtwYWRkaW5nOjE2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5jb2xvci1waWNrZXIgLnJpZ2h0e2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxMnB4IDhweH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYXtwYWRkaW5nOjAgMTZweCAxNnB4O3RleHQtYWxpZ246cmlnaHR9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWEgYnV0dG9ue21hcmdpbi1sZWZ0OjhweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYXtwYWRkaW5nOjRweCAxNXB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtbGFiZWx7Y29sb3I6IzU1NTtmb250LXNpemU6MTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo0cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czoyNSU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE4cHg7bWFyZ2luOjRweCA2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1lbXB0eS1tZXNzYWdle2ZvbnQtc3R5bGU6aXRhbGljO21hcmdpbi1ib3R0b206OHB4O21hcmdpbi10b3A6NHB4O21pbi1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBkaXZ7Y2xlYXI6bGVmdDtjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGRpdjpmaXJzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBpbnB1dDpmaXJzdC1jaGlsZHtmbGV4LWdyb3c6MzttYXJnaW4tcmlnaHQ6OHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3h7cGFkZGluZzowIDhweCA4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdntjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87bWFyZ2luLXJpZ2h0OjhweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjE7ZmxvYXQ6bGVmdDttYXJnaW46MCA4cHggMCAwO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmh1ZS1hbHBoYXthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbTozcHh9LmNvbG9yLXBpY2tlciAuaHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a1VGV2JDQ0FBQUFGeEpSRUZVYU43dDBrRUtnMEFRQU1FMng4My9uMnF1NXFDZ0QxaURoQ29ZZHBuYlFDOWJiWTFxVk8vanZjNmszYWQ5MXM3LzdGMS9jc2dQcnVqdVExN0JEWVNGc0JBV3dnSmhJU3lFQmNKQ1dBZ0xoSVd3RUJZSWkyZjdBci8xVENnRkgyWDlBQUFBQUVsRlRrU3VRbUNDIik7ZGlyZWN0aW9uOmx0cn0uY29sb3ItcGlja2VyIC5odWUsLmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MTZweDttYXJnaW4tYm90dG9tOjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQ1RrbEVRVlI0MnUzU1lVY3JBQmhBNFUyU2ttUkpNbVdTSmtsS0ppV1pacEtVSkpza0tVbWFURkltS1pPVXpNeVNwR1JtbGlSTkppbEpTcEtTSkV0bVNwSXBtV21TZE83MzYvNkQreDdPUDNnVUNvV0N2MWNxbFNRbEpaR2NuRXhLU2dxcHFhbWtwYVdSbnA1T1JrWUdtWm1acUZRcXNyS3l5TTdPSmljbmg5emNYTlJxTlhsNWVlVG41NlBSYUNnb0tLQ3dzSkNpb2lLMFdpM0Z4Y1dVbEpSUVdscEtXVmtaNWVYbFZGUlVVRmxaaVU2bm82cXFpdXJxYW1wcWFxaXRyYVd1cmc2OVhrOTlmVDBHZ3dHajBVaERRd09OalkwME5UWFIzTnhNUzBzTHJhMnR0TFcxMGQ3ZWpzbGt3bXcyMDlIUlFXZG5KMTFkWFhSM2Q5UFQwME52Ynk5OWZYMzA5L2N6TUREQTRPQWdGb3VGb2FFaHJGWXJ3OFBEakl5TU1EbzZ5dGpZR0RhYmpmSHhjU1ltSnBpY25HUnFhZ3E3M2M3MDlEUXpNelBNenM0eU56ZkgvUHc4RG9jRHA5T0p5K1hDN1hhenNMREE0dUlpUzB0TExDOHZzN0t5d3VycUttdHJhM2c4SHJ4ZUx6NmZENy9mei9yNk9oc2JHMnh1YnJLMXRjWDI5amFCUUlDZG5SMkN3U0M3dTd2czdlMnh2Ny9Qd2NFQmg0ZUhIQjBkY1h4OHpNbkpDYWVucDV5ZG5YRitmczdGeFFXWGw1ZGNYVjF4ZlgzTnpjME50N2UzM04zZEVRcUZ1TCsvNStIaGdYQTRUQ1FTNGZIeGthZW5KNTZmbjNsNWVlSDE5WlZvTk1yYjJ4dnY3Kzk4Zkh3UWk4V0l4K044Zm42U1NDVDQrdnJpKy91Ym41OGZmbjkvK1ZjS2dTV3dCSmJBRWxnQ1MyQUpMSUVsc0FTV3dCSllBa3RnQ1N5QkpiQUVsc0FTV0FKTFlBa3NnU1d3QkpiQUVsZ0NTMkFKTElFbHNQNC9XSDhBbUo1WjZqSFM0aDhBQUFBQVNVVk9SSzVDWUlJPSIpO2RpcmVjdGlvbjpydGx9LmNvbG9yLXBpY2tlciAuYWxwaGF7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdZUWxaTWEzZ0FBQVdWSlJFRlVhTjd0bUVHTzZqQVFSQ3NPQXJIZ0JweUFKWUdqY0dvY3hBbTRBMklIcG1vV0UwZUJIK2V6bUZsTnZVMDZzaEozVzZWRWVsV01VUUFJSUY5ZjZxWnBpbXNBMUxZdFMydUY1MS91MjdZVkFGWlZSVWtFb0dIZFBWL3NJY2JJRUlJa1VkSS85WGE3bmV5djYxK1NXRlVWQVZDU2N0MDBUV24yZnY2dTMrRWNmZDN0WHp5LzArbkVVdStTUGpvL2txenJtaVFwU2NONnY5OFhld2ZBOC9sTWtpTEoyV3hHU1VvcGNUNmZNNlUwTlg5L2ZyZmJqZXYxV3RmcmxaZkxoWWZEUVFIRy9BSU9sbkd3aklObEhDeGpIQ3pqWUptL1RKV2RDd3F1SlhzZUZGekd3RE5OZWlLTU9KVE84eFFkRFFhZUIyOStLOWVmZUxhQm85Sjd2ZHZ0SmoxUmpGRmpmaXY3cXY5NXRqeC83bGVTUWdoOTNlMWZmTWVJcDZPK1lRamhvL043OTF0MVhWT1NTSTdOLy9LKzQvR294V0xCeCtQQjUvT3A1WExKKy8zT2xKSldxeFUzbTgzb3Z2NWlHZjhLallObEhDeGpIQ3pqWUJrSHk1Z2Y1Z3VzdlFVN1UzN2pUQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5e2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJJQUFBQWdDQVlBQUFBZmZDanhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUNld0FBQW5zQjAxQ08zQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFJQVNVUkJWRWlKN1pZOWF4UlJGSWFmc3hNU3RyTFFKcEFncEJGaGkrQzl3MVlTbzAwSTZSWi9nOXZacEJmL1FPcjRHeVJna1NLTlNyQWFkc1pxUUd3Q2t1QVd5UlpKc3lTd3ZoWjdOL3ZoenJnYkxIM0xkODU5N2pseno1MHpKb2t5eFhIOERxRFZhcjBxaTZ2OEJiSXRxU0dwRWNmeGRsbXNGV1hrdlg4QWZBVldnM1VLUEVuVDlHS3VqTXpzQUZnWnNWYUNOMVZUUWQ3N1hVbnJnRTFrdis2OTM1MjY4V1JwenJuSFp2WVJXQzdZdkMzcFJaWmwzd296cXRWcWl5SDlJZ2pBc3BrZDFHcTF4VUpRdFZyZEI5WktJQU90aGRnL1FjNjVMVWs3d05JTW9DVkpPODY1cllGaGtxalg2L2Q3dlY0R1BKd0JNcW9mVVJTNUpFazZGWUJlci9lZVliL01vOVd3Rm5QT3ZRYmVBdmZ1QUFLNEJONHNBSnRBRy9nSklFbG1OdWlKeWJhM0VHTm1aaVBlWnVFVm1WZWxsL1kvNk4rQ3pEbjNBWGhFT09vN0h2LzNCZUF6OEl6UWtNUG5KYnVQeDF3Qyt5WUo3LzBuWUlQNVMvMEZIS2RwK3J3Q0VFWFJTL3JmNUhsMUd0YjJNMGlTcENPcENaelBBVG1YMUV5U3BITUxBc2l5N01qTURvSHJHU0RYWm5hWVpkblJ3Qmg3SjkxdXR3bWN6QUE2Q2JHM0dnUGxlWDRqcVVIL2ExQ2t0cVJHbnVjM2hTQ0FNQjMyZ0tzcGtDdGdiM0tDUU1ta2plUDRXTkpUaHJOTlp2YWwxV3B0VElzdjdKdFE0dG1JZFJhOHFTb0VwV2w2WVdaTm9BTjB6S3haTlBlaHBMU0JadjJ0K1EwQ0o5bExuQVJRTEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjhweCAxNnB4O2hlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEycHg7dG9wOjIxOHB4O3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3kgLnR5cGUtcG9saWN5LWFycm93e2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjUwJTt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDtsZWZ0OjhweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTZweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBWUFBQUNNL3JodEFBQUFoMGxFUVZSWVIrMlcwUWxBTVFnRDYwemRmd09kcWE4VG1JL3dRTXI1SzBJNWJaTEl6TE9hMm50MzdWVlZiZCtkRHg1b2JnQ0MzS0JMd0oyZmY0UG5WaWRrZit1Y0lodzgwSFFhQ0xvM0RNSDNDUkszaUZzbUFXVmw2aFBORHd0OEV2TkU1cStZdUVYY01na29uVk02U2R5Q29FdkFuWjh2MUhqeDgxN01pbG14U1VCNXJkTEpEeWNaZ1VBWlVjaC9BQUFBQUVsRlRrU3VRbUNDIik7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zYXR1cmF0aW9uLWxpZ2h0bmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFPWUFBQUNDQ0FZQUFBQlNEN1QzQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tzUFdSNmxnQUFJQUJKUkVGVWVOcnRuVnVUNDdnUnJBSE4rUC8vT3IvNjFZNXdPTlo3bVoxdTNYQWVMTWpKWkdaVmdkS3NmYzV4UjNTMFJJSVVXK0NIekNwYzJNY1lvN1hHdjNleDdVaVpkNTdyanl6enYrdiszM1gvUi8rM3IvZjd2UjM4NlkrVHZLTmNmL3dkaFRMUGN2OXFVMndaZDc0dXRoMHQxODIxamtJWkxQY3NJLzZuV2E0WHZ1dHF1VTBaODVtbng4MFMvWnpncG5Mbk90SE50Ny9vZngxVEtYY1NOek4vN3FiTVEzanU3ck5RbU1ZWWQvNHMyajlhYStQK2dHYU1jWnJiMU0vdGRydmY3L2Qydjk5UDkvdDkzTy8zY2J2ZHh1MTJHOWZyZFZ3dWwzRStuOGMvLy9uUCsyKy8vWGI2NmFlZnhsLy8rdGZ4NXovLzJZSzVBbDJyZ3ZmNFVzYnBkR3JCNTJiQXZBclhwdXpqbWlxQVZTR3o1ZURtR1lYemhiQVptQ3JubXpkZHBVVSs4WTFkQU9ZZVhDdERVd1Z3VjdZQ0dINnVBbXlNY1o5bDV2a1VhQlBHTVVaNy9KNXcvNzkyL2Z2djlYcTkzMjYzZHIvZlR4UEVDZU1FOG5LNWpNL1B6L0hUVHovZHYzMzdkdnJsbDEvR1AvN3hqL0czdi8xdC9PVXZmd2tWc3dvbmdqZE9wOVB6SDNVM0Qzem1XR25aVlhuNGpDcXM3d0MyQktQNC84dEF6a1pzb1d4NlhycWVIWnltdnA0QUJDQkpoVFF3S2ZEVDhnenJaQ0lxaTVBaGlBQ2pCZkVCMnJQOC9YNjNNTTdmNi9WNnY5L3Y3WGE3YllDODNXN2pjcmxzVkhJcTVmZnYzMCsvL2ZiYitPV1hYOFpQUC8wMC92NzN2NCtmZi83NUpTdmJldStiTDJXTU1hRmJBbHBCTk04NVFYK2N0NnFvU3FrUEF3dVFsQlZLcUdORlNVT0FBM0JtdTdnQzVoTk9kMTVuU3d2QU9VVzdDNGdpVUNWOFNnbjVMOWhORklxVHNwMEd4STB5c2lveWpBamtZL3RHSlZFcHorZnorT1dYWCs3ZnYzOC8vZjc3NytQYnQyL2oxMTkvSFQvLy9QUDQ5ZGRmeDhmSFJ3cm1UalY3NzlFWHUycHgyeGhqd3RkSlpRY0FXUUlQTFBJU3NNSmFTd2lEOGd6SUtyd1N5QVRFNWo1bkFiUjVjMWRCVXdCbHNFV1cwaDZMcWlZc3FGUEFReEN5Ulozd09TQVJ4bWxYTVg1azY0cFFmdnYyN2Y3NStkaytQajVPSHg4ZjQvdjM3K1BidDIvanQ5OStHOSsrZlJzZkh4L2pjcm1VRkxPMzFnWURXYmx4UklzL1RxZlQ3b3VzeEpzQXhYQTJHYzdUQTlYZGdmZG9IYkZzajc2WDIrMVdBcmdJMWFnZUd3QTNxdXBxb0hzbWNiSTZGdTkzcXVnZ0ZhOWQ3TGVEdGdLZkFGSEJKK05FQnlJa2NKNUtlcnZkVG1oaEdjZ0pKU1o1dm4vL2ZqK2Z6KzE4UHA4K1B6L0g1K2ZubUdEKy92dnY0L3YzNytQajQyTjhmbjZPMisxV3M3SmpqUDZ3cmFNSTVFNFJaOHgydlY1VFN3a3F1b3RWNy9kN1R6NkhGV3NEL3FOY2R3MENRM3EvMzIxYzY4NlR3RFZJZGJ1eTczek5sZGhTSGI4STJrbFp6bm0rSW5CUzRVNm4wMzAyYUJGc0xoSERBS0pWSlZnbGZJOWpodnU1M1c1M3NMQU5ZTnhBaURBNk1DZVVIeDhmOSt2MTJpNlhTN3RjTHFjWlc1N1A1eWVZOC9mejgzT2N6K2Zuc1NtWVV5a25XRUc4NVdCc3Q5c3R6U0x5TWRmcjlRaTA4aVkxNVVaMExsREdMaFIzbzV6SzJqN09QVVREMEUrblUzdGs3WGIvMTZORmJobG9BTXVZMXpqTFVPTzNCS2VJRGUrWjhzMy9KNGdGbzRUTTVqUG11UmcyOGZvVUtLVlN3bzE2VGdBNW5weXdjV0xIZ1lsL1B6OC83My82MDUvYWI3LzkxbTYzVzd0Y0xpZTBzWmo0bWFvNWdUeWZ6ODhFMGYxK2o4RWNZendUUEVHMmNxanlmSE5GME04ZnVxRWlhT1ZuUnpaWlFOaDVmd1F5SGcvSERHZkpvODlRMXpiL3F1dTVYQzY3NzNJMlhLZlRxZC92OStkM3d1cVd2YS9ZVGRVZEVWM2ZoSXYvVml5cHM2WUUzeDNyNDNLNWJKUVM2NnpheFZHRnN2ZCsvL2o0YUYrL2ZtM2Z2Mzl2dDl1dGZmMzZ0ZjMrKysvdGRydWR2bjM3WnVOTEJhYUNNZ1V6QytyWlJpRm93eFV1Skk4WU1xY0NwOU9wcTV2YWdhWVU2bEdKQTFYUXFlamNodzZDajBHdzVuWUJyR3cwMUEyTzIwNm4wNEJHb3VOTnlUZnAvRndFbGhVZXk2blhySUt3N1FRV2RkeHVOMmxkTDVmTDgzOWdTUEY4YWh1L0p2Qk80OENQU3VxTWY4VnA5L1A1M0w1OCtkTHU5M3M3bjgvdGZyOC8zOS92OS9iNStUa2hQSjNQNTZtUTQzNi9qKy9mdisvaVNnYnplcjArQVp4LzUrODhidjZPTWRhNlM1ejZrZDIxZllDOWR4djdjSUpKMmQ5QU9TMzBmUE16eUhpVE04QjRERjZYVWxZSHA0S1FXM1crMXQ3N01OQjF2R0h4V3E3WGE3dmY3OCt5NS9ONUErSDFldDI5eHVQNWRiWXR5YVJ1NEFrc2JQcTY5MzZmalJ6WFJ4QmJQci9iK2IxOCtmS2xqVEhhQkJCZm44L24wLzErSDErK2ZCbm44em0wc0I4Zkg1dTRjcjVHdUJoTVZrMEVFbjlSc2N0Z1ZoTStpeGxKdE1BMjNSOEI2eXlzQXN0Qk9nRlhJS0tDTUlnVG9NcU5FdTJmWU1IN3p0YzczMmRRS2tDajF5dEFadFkwS3g4cElyOEdHSitBVDNWKzJIaXJobCsrZkJtWHkyV3o3M3crYjE3UDhwK2ZuOC90VXdHVmxlVmtUeVViNjhEa2ZheVdZNHp4TlJpaFU0RXBMSlBaVnJLK3U3SjQvbWdmS3FlTFc5WDJSRVdsSXRMMWRpeW5iRERiMytqWGdZalFxbjBycnhXYytOa0lMUDdGN3hJYk12eDd2VjUzeDQweG5sYldKRjEyWlNhZy9OMHBXNnQrWnptT016SGphakt3RGZvbmQ3OHpZVGRmcTE4dXA5N3pyMnE4djNJaW9CcHJSdEJsMEVaOW9nNVdCUkdPZE9IaklqWEY3VW90RmJnT1duWHpJSnl6WXZqRzVJWWdzbU1PeEhrejhPc01TclZOV2VxNVQ4RGFPY2JFdjFPZDVyYnM5YU83WXZNZXQ2M0VrRisrZk1FeHErTVJsNC9MNWJMWk4vK2V6K2ZuWjZLYXp1TXFYU1FWTzVzcEpYZmxIQUl6ZXMveEpzZWNrUkppRE1vZzlkNlZmUnJxWE1yNktwVlYyN2pSd0phY0dvdk9BTTF6TWRRTW53SzFBdWJLNjNrZENDaHZJMUM3ZzB6OW5mL0QrWHplMlZqOEg3R3g0UDlkdVFsc1lDcnF5TjhYcUczSG0vMTBPajNqdy9uK2NybHN0dU0ralBtbXhUMmRUdVB6ODNQenQycG4xWHNFSFgvYm5QYVZxVm1oMHh3T3QwbzZYTExBSGVQVVUyMDN3SGZjcnNwQ3dtVjNUcnlCNXMwTXNlZWc5N3gvQnd6Q2pCbGJCK3BSQVBsYTBCVlF1VDZWNlFIZEJsajNkMEtHMTQ3YitEcXhRZVV5bURPNDNXNGRRYXIrVElqd21BZDB6OC9oNjV2ZjAveUx2M1BiNVhMcHJ1L3lkRG85czdFVDBJK1BqNmRLSzlWVUVJZUtXUVdQQU9ySjhMS2Q0dkUrdDkxWTNlN1VGbFdhdGcyVndKbmIrSFBtdHZtL3NmSzU5L09hV0YzeC9lUDFVUEh2QTVERFlEcFlYZmIwZHJ2MVYyRGtCa3h0dy90RVdWVmxYV2RDOXBGWXM1L2pmaDlkUy8xNnZXN3M2bFRHK1RmcXN4U0pIeGtYWHEvWGRyMWV1NExzZkQ2UDN2c1QzTjc3RGtMK3pQbTVqU2RLTDR6UjNBeFFkNnJIa0xrWWxTb3dzcnE3em56dTZ3U3dkc01KT1htQTVmQmNqeHRnTUdCWUhscjV6b2todHNNQ1RnWExRT1c0WEM2ZEV5RU1wckw4bUFRelhSZ2R1aXgyeVp6b3J4a1lzRG4zaEIxVmVNTEdzWHNWdGdsMnBXOFMzc3ZrMHZ3N1I0aE5hSHZ2NGNBQ2w1SEZ6d0lIMEtjNnp1NFhqRFBSL2pwQVZ4V3pPMVhrMkREYjN2VGN4ZUdVMWlXWkhrbUlEV3ppV0t2aXJDSjREcmF2czZJSi9HRzZjVHFXZFhEeStmQXJRRFZWa0xxa1ZqQW9aSUlUZG1tSXFYd3FhOTVOMytNR1lvWlFkUlZOTzUzWTF4UmtoTzE2dlk3ZXU1MDdDYTlsSm5iR3B4T2VtUWhTdy9BUXNtbXA1elU5QmlVOEc2d3ZYNzZNNi9VNlBqNCtkbzBCejRDcGdpa25UVWVEcXdsS0JtZzN1NE9WanJaMUErckFjZ2FlaldxNmVKQ3ZDWUZET05Td09nSFg0RVFSdzhseGJ6RE9kRUs2Z1ozSGsxYis4ZzJvMUpGdEtYeXYvZkVkVFh1V2pXWGRBWmlCcDZBRGVEckNGaWltN0I2WkZuZWVJN0d2bS9QTWtVRFg2N1c3eEk4YjBENy92OGRBOXFmTjVvYUNmNzRXWmpIMG1mMWNtZlkxWTBKVUZtVnJUV3U4dXprTmNMdEVqN3U1RlhCVGtmQzZHT0E1cThZTXhPOEtWdkY2c0FWR2RjclVic0tPRGNRS2tMTU9NZG1seHVtNjQyWXJQbTI2QWxoWlcxWUIxUityckdzd0U4VGFZQVdlVU14ZGYrV2p3U3ZaMkVmM3l0T3lmbjUrUHBWUEFhcU9uNDNNdE5CcXZtamp4YmpNNGxaalpZNGdxTk1JNWt0YVcvc1lLTndTKzlsRlF6R2lobU1DS1BhNytaMFY2RWIwR1Jtb2J0cFg4SmxqV3U1Rk1MTjVqYTZoRzlrd1FnWnFmNSsxTkg1VXh6a0ZSZUNkV2hKOFhkbEdVa3hPN0hSbFlSbTRtVk80M1c3dGVyMTJUUEpFdy9ybUVOM0w1U0tISVdaZzlteitwVW9LT1lxNWJKVEpkWDJnbWUxVWN4TVpRRmFFUUlsSGN0MzJNK1kxQnpHa0d1emZpeUFOOXordWdwbFoxc3ltQ3JEQ1lZa0d4RFRwSTlSekJ5MHJIeWVEVUMxbldhZVVhRDluNHhrTnlZTUJEWnR6WjNCKytmSmxZMjFYRkRPY0FSSmxhYk95aVMzdUNwTEk5anJaakNEa2FWdmNDQ2p3b2duS1NoV2R6WFpXbFpNdlZUZ0Q4THBxbENMcnFnYmNCK3FZd3JnS1lwVDBjY0NxYkt5Q1ZhbGtFYWJuL0Z5bm9nQ3JQS2ZxZjUxeEo3c0dCMlpYY1pteG9TT3p0angzMDBEWmk3YTAvMkFJUjBVbEJhZzlTdUR3NktjQXpsYUI3dkhadldwaks5MGR5cnE2Ykt5RFVaUWJSMEIwNWJpTFFrSEljU1VtZ0lLK1N3dXFnSENub2lvMlJRVTF5aitCbkJ5OXBwaFZLTEd5QzdaekZLMXB4V0srRThJaFZDV0xOL3VMdG5VVTRheW9ZTG9hQU56OEZkdGFTdlk0cFYwQkVXMmxzNjFjenFsbEJLcFR5S2dNQWhyWjFjZGMxUlJPdFBtdldOa2RjS1o3Wkt4YVdqaVBMSk1wcDdPWkt4QStycUcvb0pManhmMHBuSmxxTG9EWm8zZ3lVMG1LR3lzMnRhS2Vjai9kMUMrckpTcGxCcWxUeUFxZ1IrRDhLaktsbVJMMmd0VWNBZEN0c0wraWpDTlQxb3FxcWtIMk9IRWJHNXNERm5VZzVBYSt5TG91MlZVMXB0ajFTMlpRcXYxT1JaTjlJV3pSZmdhUkJ4S29CRThVV3lxbEpGdHJJYzBBeE5qU2plZDk5Q1RZL1hEZlN6Q3o1TTBJWm9WRXNXblBGTlRzbDhvb1ZDMVR6YkdncUZaTkRTZ1Z3S0srMXNHRE1LcXhaQ1dHVk1EeXNpRXIxalZTUUpVWXdqNWlIT2xUaGRIdDQ0U1FnOUNOK25sOEQ5ME5NSWdBZGdyNDZKcVJpUjlJOHZSZEZ2YnIxN20veXhVTUtqTkxNaVZVQUR3dTJDV0doaGkrRjU1VFdNOU05Y29nem1zMWRuTTR1T0YvTEFFWVdkY3FuTTd5Rm15cTNJZndtT1JPZDdZMWlGV3RPam9ZOFRvNDFtVFY1SXlzZ0ZGdVJ6c2JXRkdiTklJSkNEdjFkT280bFpHN2pXQndSRnRWVEt1V3llQ0J5SktPYW44b1ozZXA5WGRkTmwwdER1YXl3THo5Y1hQWWVEQUEwU3BrQk85c2JWY1RPVldsZFB2NHV5ekVrenhIdGp2b25Ib1NrRkVXTm9vMWQ4RGhjUXB1dGQycHBOb240QnpvQWlKMWhCRlFnMGRWdGRiR0hIRFFXdXNobU5FUXVrTE0yUU8xRzJZOGJnVFhxRmhjQkpqN0VqUGdjUHRzOFVTOHFQcFBCL2RYem5PaDVaNDM4dHpINWVjNlFnck9LclJSZktteXNCbVVEQitQaFlhYk1sVlBFUitHQ1NJVFR6cjdhbTJ0QXJIM2JnY0V6UEptK2NyNWpKNE5uSE5GRFZyRlhjSTVMZTlrNUpudytiZWRiVitGZlJ6WklIYU9PYU9zTFkwLzdVR3M1OERqckd3S01JTUZJR3pPRVcxL2pHc2RBdENONmhFQUk0aEJlOVlYZVJST0JTVlBBVlBBcXZJTTVieDVoVktXQU1QNnpCUnkzaWVzY3JpZFZkRkJpbkJ4WERuRzJHUlkyWGJDdnAxbGh2R3RPOUJ4dTVoOTA4WFF1NDJsblNBck1GZGl6TWltOHV3UkN4UEdubk9TOGx3cG5iT2lEcVRBanNyUk4vUGNvQVNjQ2JhQUNxVk00MHlsbmpqVEJzK2J3V2xBRzIzL1VLYmRraXdLV0lRUEd6V2FjenBvU2x4UEVqODIyY05Xa3BTN0Z5enNEcnFwZmdwRzNqYWh3MnZnYmFTUUF4dUxXWll0N0p6eU5lOEpvWnBOQWN2REZPZHcwd3FZVDlBSzFyWnovRGRiU2xMUHAwcnlJeGdRSmxLOUFabEVxN0lPWHBvaGc5UElockNuZzg4SnNPeGlWNFpXQVlmZzRzaWt4LzhreTJaOWw4NjJ1cXdyZnNjSUg4K3VnVG1WR3lpZGRlVllVZ0VNbjRHWnpnMTRFd0lzaDlzeDJjS0tpV1hSZXVPRTVnekdPUWdkbFJLVlZkbGV2cWIyNzlYcTBRbnN0czJWRGFCTzBjb2V6c3J1V3RIQXB1NnNLRzRJQmhOMGFHVTJrTHJNS0dSVE4zSG1iQ0R3S1YxNHp2a01FREc0UWZaVnNwVmxhTlUybWhjNVRFWjNOMWgvenFUaGV1THBXMDVaV1RHVmpiM2Ribk5teEtaQm5OOEpxaWRhVkxLQU95QVJOTFMrTUI1NFoyK1ZhcW9NTEtyb1ZCbG5nZWZuVFBBY29ITldDU3ZsZkE4Q0kwSEVtQk5CbkJsWHlNcnpVN0E3V1ZtOTRQUHFRMmdtcUt4K1dER3NudmlsbWNTT0JKcU9LMW5ZeUFJenVBeWVzcTNVZFNLM0tmV2NZS0Q5NUhtZllPVTNxc2VyMkN0WUVVQStGcGZxZE52Z1BCWlVCaERyR09OUlZsUXNoOHJMY2FVQ3lrSEcwT09Vd1RsTEJyc2g1c29FTUdlemkxRTRIUlZ0MWljcDV3WkVGWGRpYkNrRzhZOHZYNzVzYk80RTBpb205eitoalNpT2Z5M0RocFhJdHBWaEUrVUdRZHZvV2p0Q2htckdIZjRZQXpLZ0JObkd0dUp4RkNlR2RoVUFmUUxMSzhrQllBUDZndkZKWmFqTUczWGt5Y3k4S3VDMHE0RXl5bXd0d2R4ZHYyTTBtSUJ0SzBMS25mNjQwajAwQXVxNGdVa2RXR2xoczIycUpjNmRaQ3NMMTlveG5sVEpHNFNZVlJJR3BEOFRQRkJ1TTZPRWxiUzFwbGRpZDRtR0F5TjZaSXVwYkM1YlhKTjlmZHBiVGhTeExVYUk4SUcxWElZQnhXM1RqczZLUW9zS2N4ZnhjUW1kbndSR00xMEduRmNDeTJYWXVuTE15QWtkZ2s0bWVQaWN6c0x5Z3RoY0J1dDZnb09xUzdZVkZYQURMamFvc0I2czZvZmNaV0FaU0lSWXFTVWtpell3dHRZYWIzdlVPUTl3MkhSeElJZzhXd1JWZUU2OHhpNFV0TDN6UnBoeHBsend1WnJjcVlDcTFJM2pQSTVkbkpJeWdFb2hNYlBxVkpTenJ3enhCSlRzNXpOK1JlVVNneGlrUFFWRjNKVkJlTlF4YkhFTnJFTU52RWRGWlZWOWxIOStPUkdFc05aUXB5VE5jNEMzQUc3WEY0bmd6cStEck8yemJ1YWFPWGdkYUZjZGtFb3RvU0ZCVlgycUowQzhPV1plRzRLR2xwZ2hBMFhmVE9QQ3FWMnFxd1EyNlFXZkYyUE1MaEkydzFsVkFhMmFQc1lkMHphMjVNUVJ3Z2NaTjZ1UURDaStaeGlENFhFTTJrWnhPVDQxRm5abmFSbGNwWm91emxScXFkYlFWV29wUW9TQjU4UlY1MGxCTnJIaS9Bd1hTNUxyd0RWbHBZM0ZjM0J5aVlHYzUyVHJpc3Q2a09YZHdJbkFRdEpwcDVRY2h5YXF1WU9WN1N1K2Z4Vk1hVjNkYzBSRTJTNm1VWTBnTHQycE1jWXFyS0lROXcybDFncFFVTXRRWWNtbWJ0NURUTnhkaG5VQ2pRcXRiSzlTVVN6dnJDMG1taGhFMWUyRlMyK294eXB5L1pBU3V0a210angzdmNCQzI0UFg2NW5icWtCQ1JoZmpTOWtJWVBuZWU4Y01hZ1ZPaEkvM1QxZkFtZHRBV1pzQ3N3VEpDa1FWTmEwcVdLU0tQT3BIQVVoRDlEcmJWY3lvWWt3cWh2aDE3dllBYXlYTFF5S0dZZHhsVURGcDQ5NHJCWFJqWWdPMTdERFlldE5JVWovZXpwNlMwbG5scEV3c1dtSk1rT3dzS1hlWktFQWpJSG4wRVFKSVNhUkJjTzZVTUlOejdwL2JFampudzRmdCt4bUR2a3N4WDRHMnJJcmlzN3FhZUt3QUZNUDJPaTduNGNyaXVad3RwU1V3cGZMeFNuT1JTcklxdXNjNVpGYVh5c3FSV2ppWjJEeUFXRUlMMzV0VlNvUUVsRkFDak9lR0dTRTdBSEVRZ2RvL0xTdkNPZ0dCdmt4c21EYnZsUzNGcDV2aGFCMlRBR3FSS3JLS01yaExWcGFHekVWalowT1F4RGhhQ1RBK1F5UlIxZDE1YVF6ckpudEwzUmlic2lwakc2amxnTDR5cWJTMHNOWWcxZTg0dmhiQlZyRWxLNjRDVWNXWVhEZkt4aHBJdXhpVkpaVXhzYk15L3VSQktUTlJRNGtRM0xkUllMUzBySmpSUGxUUHFZNmdkSnNFRGMrYVFYQW4rSGdzTlVDYlJ1RjBPajB6d25BN2JXRGtiaE81RW5zMDBxZVFoUzFsYUJNbDVNL2NBYXhzTEY4ckt5cWwrVGY3RUxMRUd1L2l4aWltZEN2bzBUamZwakt3YWdnZW40ZWg1djdMb2tMS2JMdXl2SGhjWkc4ZGhHckVEeDdIZzkzWnBwSkY3cUJxTzNpVnZlWEVEUU5Jbnplb2U4WXE2ZVBhWkJaMkp2aU0zVzJVQUdvdGVrUkNBR3E0RWtGMVgzRE9uUjExeVJzQkwxdFJhMFBWY1ppTkZYWjJjMzRGc2t2b21JblFRNmx6cEpvWmJKeGs0M053S0pGQnF1SlNzckJ5SHlkeEtPblR4UUFTQm1TM2orSk1uc0hTbGEzRWM2SzlWV29KVm45emZqd09NN2hxWUFBcUpRd0UyYTNuQTQ4SjJRR2VnUmtwWk5pdlNZK3lzM0VrS2Q0b0pJd3N2SUhsM2NXZ0x0NWs0Tkg2T210TFdkcHVyT2t3RU11cFljN2VNdERSaE9jSTJ1aTVKaFZJelh6THl0by9HQVB1Wm95bzh3a29kdVZnSmdsQ3Q3T2hHYmdJRDRNcTRzaSs2M3pVUzFGdUZGWEZscXlhajJlbUhsTE1jQnFZdTBGTXVSMjhCYkI3bE94Uk1TaUNRWEZoQ0t1d2toWitwWURpR1NnYnNLS1Y4TWlTUnN1SFNJV005cmtsUmlJbFpadXFYanNRSzhvb1lKTWdxM0pLV1ZraEhiaHNWeEZVenRoT1dQa1lpamNieDU0SUtzU2RUK3VMcjNjckdLeW9ZZ0ZpR1I5aUJrNGtmbG9VWCtKSWxRUlFxYWJtcGduaHF0cFFwYjZSVlExV0g1RG5yUzRoRW9HWnFhZXJRMmRoRmJ6OFhlUHhTaG1EYm83MGVJU2pvb3JPMnZLOFNKWEk0U1VtRVU0eldLRHpVRHRXVFl3N3hYbGJTVEVqNEZSZzd6S25Lb0dSQUx2MEdzOVRnYzFCcEN5d0daUlFBdHFWejJ4ckJjQU16RXBmWndGU2EyRzVXMFFCRmpTTWFwV0FFRmEzSGNHTjdDeER6RUN5SWtKOTdxd3JxV05UV1ZvODc2UFBzalBrajJ3dmdyb001bExaS01FVEtWcWwvQ3ZuV1ZGaUZhL1N6SlVRd2tvWnNyNjdZNnZsU1JWMy8ydG1OVE9ZM3ZuYXhZd011b1BLcWR6UjF3N0lxSHltbFB4YUFUaGZVN0tvMlpYWWo0QVlKSEwra05kS3dSUVlFU1RSYTVmc1VaL3JWQzFUTVR5V1Z5WW9xTnR1emFIc015djJ0dm9hcnhkZnF3WWdVMWF4Rm8vY25xbDFGR3NxSyt1QVJPVjhCWDRHVThXY1pUQVRpMnE3UWN5aTBPMFYrR2hXQk1OUlVrbjhIMVNzV1ZFNUJ5M0dpMEVDcVVlSm9CZkF0RGE0YW1rZFhHMzdBR1A1R2dlYjg0cDdVYXpwb0tSemRGemVROEhrb0hHeHByS3kvSHBtNXQxMnA0N0o2eFRZREV6N3VJTkVYU3V4WVh2RnNrWUFjK3lTeEg5c2Y1ZnRLelU2SWJ3VkJjVUdnNWU1Rk1DRVhTRXJaUjB3R2F5VjE5d29NOWd1UGpUcUpkVlRxUjR1RTRuSm5MbGRXVmtFQ0NaTGQyVkxGK3h0YW1leDdJcGlyaVNEVXB2cnBuOWxyd0dNQ0h5cHBNSCtwczZMSUxzdUZHVWoxWEVPWGlxYnFTSFBVS25DbHBXVjY4a3F0VVJWTkRZNFROYW9jeWtvWWVUVTVuZ0dFUWEvUzFEbm5FNEFlWE1jS2pIUEFtRlZqQ0JFTmFleUxWTkhmcjNweDh4VXN0Sjk0aElwZkg0SEtFL2VEYUFySzZsU3lWVkZiZHQxZ3hUSVZrM3BwcFZsRlhpNHBFaFZCVE9icXVvaFU4NU1MWG4xaWFodlVrSEpqU0NNYzAxdExGdmVWVkJ4MERvZE02amZ0Q3U3RE90SXpZeHJjMHFwMUpHUDJheVlGejJHYjZIdk1yTzhjbkd0VjZHam0zdUltU2ZEMkdwV0s2dW93YlpHTXhGS1FDbzFwT010Y01YRnBSc3QraFhHb0FvbUYzc1NUQkdnVGdsYkJLV3dzUTN0WnFhWVNwMFoxQ2ltUkRXRmNDSlVQWUowMEJJNUZrS1lOb2lmdVF4bU44OFNXVlhXTE1hVXFxcWdDMEJtUUpSNnNrM3U5TkNmNmpZTFh4QWZxc1lFZ1ZMQWhSWTJBdGd0ZmxaTkZtRnloeGRyTGtBZFdsazREODhNMml4SHllcElkaE1IckcvaVIxWkd0cTBNR3BiRGJSUFlPWGVTWTFNNk55NFpzdHZHU2t0SytYYkZQQVRqMkQzNzFzYVBFc0FNWGhYcnNaMGttL1hTdGtoaE15QmZzYTZ1WEZaZTJWQ2UrWU1yMStHS2d3clF5TllxMVZSckIrRWl6QW93Nk5zZE5LY3lWRWtZZU03M3lzNnE0a0FIcDZCaUZrbFRrSXJWQzVvWVY3dXp3T0dDejRVSjBTdHEybFdNSnk0d3RiK1JldEw2dFpGaWNuSm1CdzVVakN2WFhNWlZKWDJNUWtiZitYTjVFV2Q3OFZ6OC9KRXNNWlRCaUtOenNtMWluTFJVUTc0SDROaWRhcUk2OGo1c0FGZ3hjUnZlQzdpZUxKWGZRWXhqWloyQ3NpV0Zld1pYSm1CSWxaMXRkdHJYNGhTdWF0ZUtzby9SWk90T0tXMm5tcTFvVHplSzZkUldBV3UyTlJWYjRocTBTWG0xR3Z0dWdIcmJyNUlYcW1Ta3RnNUN1REUyTVNsUHdzWTVrTkUyV3AzQXFpWmJXVkxBeGlCRisyaUJaYnVOajZNQjZyc01MQzdGeWFzYVlEeW83S2tvUHlFdHczcEVNWGZQdnhBSmkyakFRUWdqcnowckxJWlNXWmxJb05od2Q1eEs0QVI5bVlOaldBYUxybnVJbUplQlZOOXpCT1JPYlZ2YnIrbVRUZkZTRUpMU1JuSG83aEVKb0lpOE1GcWp4bXZnbUY1VVJaejR6TEZnWlo4Q3R1Mlg3Z2dWY2NLbTlnVnhJc09IcXhYZ05NS25GV1pZbmYxZEJuT2hheVhxMTdRd0ZsV1cwOWVOS3lWSkZtWHFhT05HQTVhQ2VnTWJKM1VVa0dZMWljM25LV2dqcThxZlZZR1FHMWdSdDZyczYyYTZIaXFxVU9xZGVzSzVObVg0bkdvZkpvaUUxZDBkRjlsVlZrdlQxL2tFRWFhQ29ZT3dGcGNWY29MTSs3NjY5UHhDOXJXcWt0SDBzV1VZbGQwVkNwdUJaL3N0VlJjR2d5OVdYMitVMVF0aGk5U3pBcVN4elpzeStPaUZ6QllueVNHVjZHa3U0NHJEOEJDT1pCVjNCdkQ1K0FLUkhOd01Fc0I2RXpIbkpwa1RBZWlVbEVHa2NFQ2VCNkdEWlRwNVlFSlRsdmRya254WWpUbGxNa2ZOdFh3RGpNN3VWaks1SlhVVW40M3JycXBLMmp5dGF4SFcwTTVHOERDOHJ0SE1ZczdLU2dkdVZRTUdUWUZxRnZWUzZya0Qzc0RKNDZhZmRZRndvcTExQU9LQ0JMaHZ3b1VnYzhJR0FOeWNSNmtuWnJkSlBkc3V4bnlqZmQzRm92VGxSTWRFZHRPbDVDTVY1RUhzWFFCaXM3VE93dklEWmFHajJWbnBiaDdjcEs2M1Z3WUVNTHdxYmp6eWw2OTlzYXdGRmtGMXlxalVVMzFIZkM2c1cxWkZWRnVYVlhWZ3o5a2VFYXcweXMxbFdmbSthelFBUVNXQStoS1lWZnNaalBuY0FjVUI5b0lheXkvVVpYUk5ja0RHamk3N0dzV2J2Qm82dFByV1BxT3lWa0JVcStJTmVxcHpOZFlzL3UwaWZoNXFtcHFJVyszM0pWU1Vjd1k3MEtMNFU5bFlkVTZsanRTbHM3bG1maTlnM1l6ZVFmVmthR0ZhVjNPRENuYUQyTjh3c0VERmtsRTNSek0zWmdoZFlrV0hzc3pxNzBGSWVjbktrVmt0OGV6TXpScTlia0d1S29qUkxCVlNvZDNZMXlQcUtnWVc3SlJRVFBWeXk1eElZTGpPZ3hnVDUyUktKVVkxZE9ySWlSZDRmdXRReC9BNUFjU21FanowdkZXcmtMenZiV0F1OUhPV2JHZ3hGazFWTlRwbkJLazZUZ3dpc0kvSGN4WVhQMXVBV083MlVMRmxCVHErYVN1MlZUVXM2aHJ4TTJDRitoRW9yMVZJQTlabUZVYWFiMWxTU2dac1ZzNHN4ekhsVkxvSkhyOUg0RGhPTlRrSTFYQzAvd2lZMk5vV0FHNVJsbkhGbnE2b0xjY3BRZGRNdUovTzE3SlZBNU9ITGkwQnFDenRxN1kxKyt1Y0NkOThxTEk4TUlIQlYvY0tqeFFUbWUzaEZCUzNNeUNxbkRzdXltMm84MEhqdkZGVHRyVVJtTmFHSnNtVmFoSW1qVHNVWEt0UVpUQVZzN012djgvK2Z6VXJaQVhjTEo2TTRrb2U2WFAwYjZTbVdXTkR6eVVwUThibCtMdFd4NHR1cVozNmNSWVYzeXVWeFBOd3ZJaXFpUUNTbXU3c3JnVHpSNm5reWhwQ2FyWHdGeTF2R2Q1aVAyY1kwNmxGcjVOamhoZzFZNitOQjI4ZnRiSzgzczhyZjdrTEpiS3dERlBiTGcyNWEwQWRaSkVpcXI1cGhpeEtNRGxSVXRjc3NxMWhyaUxxR29IK3plTmdWbTlPZW1qc0VUVjhKZEYwTkhua0lGeFdZMU9CNFlycDdydFdKN05nQUFBUFhrbEVRVlEzb05zNW5wbHlWZjh1MkZvTHUxSnJIdmVhWldRanFBa3NodEZhMmd6c1NHM1pwa2J2ZzNIYWZGOXNsUFBsbGRqRmxLODBHeXNtOE1yNE1QaG5lTldFTlBHakFJcG1pbFRQQVRkVFJUWGxDQllIWUFRdVB3QTM2eElwV3RHTjRxM1kyTWhpR3NVcHVTU25sRUpSRDhQb3JDN0NGWVZ3K0Y1MXFUaGdhYnhzVHhXekNHWTBaU3NiM2xmcUF5ME9QTmpOeTh4aVFRS3NIWUZRMkhCWlZ2VmJCdXEzbTFvV0thanFhb25zTTZ1WlVyNkNqWFdOWjBsNUUzaDNqVVJtYTZrUDNNSklpeTFMbStrYWhRcTQxTjJpWmphNXNqdGxMWU5aSFpySDZxVUdtNHZNYkRwNlJ3MkNGbXZ1eUZrckJjQ3lNdEZxQmFFQ21zSG9LOUJaMkxBL2xKY1JxU2FEcW5hV2JyWmRHYXozRExnSXZCbG40d29HenRieUpHcXNsd3hraGhIclRqVFlGWEN0T29LUzh1TGRvZlZkQWJPeWxHVTZubFlwWFdadHM0blhCcTZXeEppdE1Ob2tIVUpuYm5KcGxRbSthR3BZMmE1R01WMlFEMWhSdWJCUEZLZHVtZjVPSGtMSHowRjlsdUU1a2pCalJhMG5GRTVDVUdxSHczMk1talo2eGtnSU5WblNuWjFWWlN0SzJxS2xSYUxsUWdLN3VUcTdKRlhKd00rM1NPRUt5aFpOSSt0SjBJNXFNWXk5azJxSkQ3ZFZXZHFLWGEwQ0tOUjBDY2pnK0IySVl1MmZjQlpKWmtNRmdNMTFyMFg5MndpbGdoRkdnelZuZXhscUI3eEw5bVMyOVNpWVVWWTJuWE9aak5CUnN5RHNRUFJXVzVoclo0WGNkQzRIVldSYmpnSnI0c0ZvZks1U3pqUTdyaEkxVWViZFBkRWJqNnNxSXZUWlFaNXZhMDhyQUJzQVcwVXhlV3l0QWs3QTJLSjlacHh6Q2lvQjI0WEZ0WUFlWFl4cjZhblNxaExncHBFcVdiR3dMdW5UZ3JWK0lqV2xMMjlsamFBbDRFUU1Hc0VycDRhcGVaaXF1d1JYTFhBcU9DZXJ1MzJtbXlkYzZvV1RTV3BGQUdkemVUQjhSVEhWTUV0bE05MENiYlFDWWhQanEzZWdZcjFGR2RZSVFqaXVER1o1elovQXpvYktHT3lMeHRpNmM0Und0djJhbnlXbExJQ25sTGh4SlJYdDZBNWViREJXRk5PTmJ4V1oyZDAybW51NFM5WUVDcGVwcFYxelNXUkJXeEhZelZJdjFDWFNvdXdxcVgzakJCQkRaZFlRYnBUUVc0WlFsUzhyNWtINHN1U1JtZzIrKzNKTjEweDFQYUFtRWttdFlsRWRlR3BKRU02a091Q3FDUjIyb1N1amo1SVYySGRUMHpqNXByTEtUalhGQVBqZFFseXE3eElCeEFRUDV5TWN6RzRWeEFLdzBuNmlsWjJRQmNlMnBMdWxrdXh4cW5vSXpGZmdxeXFqaWw5UzFWTndCckZtZXllb3BzOHlPalpVeWJaZGZTOEN1YVRJSnVtenM1dE9EYU50THBGRFEvUGNKR3dlTGhtZUwxbkIwS3FpVURTY3NpVVZEODlEaTNIdHJLdFNVTHczUkxpeWdaRCs3c0Y4SlRPYmdZc3JHdkROVUZSR2wxaXkwTGwxWWtVYzJhSllNb2c5MjBJOHFXNllEQ2cxTXFrMEpISkZLWGtiZ2JScmVJK3FwWU5PWkhyVmNEVWJhN3Bqc3BoU0pOdEs2dXBnUk5BVm9PUzBtdWdCZU40YklaZ0hodVBaL3MxRU5hWDZLc1ZyK1lOcmgxTmI3aXBSMFBFNXpiTlJlZ0NickhSVXc2WWYwN2RMQkpsMWY4S0I5YXMyVjFuTnFBc2w2MkxCQmhlaHdhbGVya0htQjFKRklFWktTRXVzZGw1SlFqMW5KbEhYU0NGMzQyZ0o5Q1lHclhlbGtuSklYcVZQOHNEK3F0cGxDUjNYSDJxZktxMHlnTXArS25Wa0t4TmxaOG0yWWtJbFZNaUNuWFV3bDdxem5CS1N2UXozbTNQdDZvUWJYTzViNUZpeENoL2ZIeFVRVy9BRWNLNnpDTnFLUW5MOXN5d3FtS3V3dnFTWXpUL2FQVk5OcFZ5aHZSVzIxYXFjaUNzamRXdkJ3SUxVdmg1VnlDemJXb0MxcEpqSjY4MENXc2wrdWRLQjZUNVJ3RzFtbG9obmxwYmc0N2l6NVU5aGEwRkd0bVJMRllCdE85OXk5N0FwMHorWkRUQW9nNmtTTFpzTUhnL0lGa2tncDZDcHZVMlUwY1lWU2RubWtqd0JkT21YYnhUV05XenVJYmlwTWlvVnhFY2taRW9haFNPaXkyTTNLMGpjQzFMaFZEd2FxRzBadmtjV3FDbnJHNEdJeHlrcnFsYldkdzZMUXlCYVpSOEhtTFJJaFFXc0hzd0Q0MlpYVkxOa2Y5bCtGbFcwSFZRMmx3RnNDL1oxRmR6bFFSMEthUGZvK0ZkZnUrL2R3VlJJQ3UxQ0dSN0FFSWlBaGMrQVpVRjBrT0JhUHhtVXFnNGk2NHZRblU0bkZEWUo5TnorMWZWWHZlSDlxbXIra1BJTHg4b0tjUlYvQkZieGJFMEpNVDBrU0Q0dzZML2xOWThvY3NxYWdWZFUzQTNNanhoeGNHdXF6c1BINGlycGFvdzFxNk95clZqdnA5TnBjNTlFOTFMbGRib1lWekpXZGltV2ZBVzJTTkVLY0RhWDJGbUJMTEEvdUt4bG1oaDYxM0lzMVVSUUFwYktmdHR3eEwwMnE2T254NXBReFNiUG9qQWcrdjVoQW5ONkxIVlJEWElzdkt0UmppUzBxSlV5WlRBWFZiQUs4MkVsRkpXYVFkVm9xVUMxVW50N0JWYVRRdWRNNlN1cWV4alFKTjQrMGljYXh2L3V0Ykt2ODNFVGJUOEg4Z2pjT0t4T0ptYlVhNk9PVlhodDNkRlk2ckh2OVhvTnpGTGNlRUExbzgrcEttMExBSFBIWjJyWUtqRnEwaGZaRml4c3FISmdEM2VENW4rVTBrYjFtRmpYa24ybHZNU1NPc05FL0NkSUFLRjBTeXRxNnVyT0hVTjVnd2c0R1pvc2dibWdnTTV1Y3JhMnFyUzJJZzFjYmlCQmN4WXpnelVETkxDdkw4R2JaWE5wNk9SeTNMbVMrS2s4M3pSSUFLNkExaW9LYTJJOU5hcEl1aVVGZGZDOTc2NlBGWlV0cVVyNktiV2srelpVMWEvWnJJWEV6dHJqVE9mejdod0t6aUNlWElhcmFIdGJaSU16KzJwR2dhekNtdzRxV0FGdkVkaG9kWXAwWHEwcFY3RzFZV1lXYk80cWhHcTQyK1o4Qll0ckxXdmx1TlBwWkFlYUZGUzF2dWJQZ2JneHNxY3BuQWFzekJvdkthRm9EUThCR3RqZlVPbDROQUcybm1RVjA0ZmVKZ3VtdlgyZnNyUUVXWmdoTDBKblZkWWtuM0RPWkllUk44NlJxUFdDbXN2R1ZxRU1Sbnd4UUF4d1M4RU1ZbzNJem1ZMitCQ2NMcDRNS2l1eXVoSW1hbWxiWkZjTm9ObDd0cCtSSGQxOFpqUUlSS3lYZEZSaE45OC9oeUtxd1hXTm83TzF3aWFYb0hOMTA4UkVaWldFcTZncm5JZmp6ZWc4amRSZjFYRUw0a2tYYTViQmpLeG9LYWxqQmplSGxWeFE0R2F5Y3BXNGxET0FLdG5UeEhBdE9mek90WndIQU03c3FWWGtWNnl1NmthcDFuSGtYS3FXRi80WEhxamVuTktxQmpwUjNsMWNoM0VqZzErRXNnZFFoc2RHMEI0Rk05c1dBVldwdUF5aXdUUGxlWnh0OVZ5WlZTMnFYZlJlV3FUQWlscHI5QXBvV1RqeHltaXQ3TndWNEpUcmlaeU9BOUIwazdIRmZVTG91cm1LWUhWblJRdnFHTDVITUhkcUZjUjJxV3BtY0s2ZVR3eDJkaXBXcnZpRGlscitmS1dxM09XUldkSEt3QTRldTh3amNoYmVSekZpbHFqalpOM3VmQ3Bma0owL3NjVnBuWWs2TDBQSTc3bHhkV0NaODdXaVdtN0IvQUdxdVFTbnVqR0tzQjhDSm1pSnE4cTFwS0lWV3lxT2lUSzY2cjE4Qk44cjc0L0FFNzFmZEMzeVBTMk14ZE9wbkUxdGxWeEQ5Sm1WT29nZ04rcjRQakFYVkZQYTNFZzVqVkpHRlZVR05vbEgyMEdWclVCN0JPeVNXcTZXcVlRZFdSOTJwY0ZNWU13Y2tiU2dDS0NxRDY3RGlpV3UxZzhNUUM5QnlmY0ZxVzFMK2pMNzE0cU5DdXpub1N4dDBkYTJndFdOMUc4RjBCSzBOTjBudWltZWxVRjlkSWRBZmpPNDRVVDNDalFMb1VlTEhKRlRPM2dtcFJ1SUlPdndCUUNicU5lbzNxdFo5aUY2eFZLMTNHUmxvNHpxaW1xK0NHZFRpUjF1Ulk4b3FnRTAyaFpCYTc5a1pYUE1xdXhSSEtsYTJzYVpXTjRtUnFaVWowdkxDS2hraktucU9RSE51U1pWSm9LdkFxUzF3cEVxdXZXREMxQjJ5cHdyQ1BzUk1FUFZUT0RNTEpNRHY2cWVLWHdpMkpZVjVTcTRxS3l2Z0dzSENMaXVqMmpSNTlWOGdNcVNKMkZKWlJYRUhWUkhqM3NGUHJjdDZPcHFsVzFHcGF0UWR0MEd2d2ZNNm42M0luc0dWRmhKR2FCcWdxcUlWNklzWGxsWmd5U1BxNFIzYm50M3dpNWN2K2NOMnlxUUxXMVQ5NUtZVnNXV3RLazRjQjlXNTNXUVFmbFFZUjZXbDRIYUpaanZWRTBENXl2cStSS2daQ3M1cWRCRVA1c0Q5NGNBdlFMbFNnTmFTTUF0SHg4OEJ1TlE0MXpkRnNYMzB6S2JjczBNTEQvaWhrcFF6bDB3aVRxS0xUZmJLbUNteVlJQ25LMEliYWllQzRDRzlpU3lMUTdjSU1HUXdhdTZUS29xNjBBcGwzV040MExacGNhMUNLS0s5VlF5eUlFbjh3MEY4RjZDTDJoOG8zaXhHd0M3czdFV3pDT3FtY0FwWXhZRDRqc0F6VlMwc2wydDk4cEE3dnJLb3BoQ1ZTb25iWXBnSDZtdlNuMjRwVEJWNHNkdFYzQnRNcTVrODJ5K0lBRHZVSjB1QWxrQ1ZUeElhUG0rVU51L3FrVjRGMVR6SFhDR3JYSUFxSXRCS3lwcUs5OVZ0QU9WczY0TzRPYlg3cEhMVkNwWUhjUm13dkxSN1R2WUFLQkJONThMR1Z6RHVGeitoUWJXZ25jUXlDWkFrK1Zic1BTb3VmOTMyNjFpWmdtZkNwd1JiQXZxbVNxcmlVMlB3aGphb095WXF0SWVnVlhWaVRzbXl0YTZiR3lTcFkzZ3lScnBJeUFlYVdERHh0cHNYd0t5YWxNREtOUDdZQlhNcUVza1VzaTJ1QzhGTkFQeEFLVFZmVDFvNlZ6TTBFMGpGKzFyV2NVdUh2ZHlnN3Znb0ZwbFg4SHB2SHBNQ09NUlVQSHpaa0luc3FsRktOWC9FSU81MkUwU3hTek93b2IyVm1STFc1RDFYSVUwcmJnTTFBeldneUM3ZmU4Rzd4VUFLL3RhRUJhdDdsdXF0eVA3RW1zYUpRT2o1Rittcm5aZkN1WUNmQlVBV3dTaHlkNnBNWS92QUhHMVVxT1lwYkkvZ3k1VDBDTUttK1VPM2dGdUM4NWRnZkRWZWd1UERmSVRySUJMc0xyY2dkaDNDRmdGWmphS0o0SXYzRjhBTkVxdnV4UjF0VktPZ0xvQ2Exanhib0JBa2o2djdqL2ljRmJBN2Y0cmZSblFETFJWaUcxM2kwdnFCUXJZVnFCYkFEWlQwWnBpSG9TenZRcG9wS0lGUzNzRTFIZkJXbEhYZDBIN0xuQXJxdm91Z010bGpIQmdabmgzRW96L0JLakxNTDRaMkFxMCtoRUpyOWphVlVCYnZOekNJVWlyb0M3QVdtbUZ3NG81QUszTXRCNVZ5cFpNU0ZnczA1SnlHVndsd0Jxc0VHQUFhMlpVMUNqVWV4WEdzRTRyS3JpaWxCdkZ6T0tLbzNBdUFyb0U2UUZRVTN1OFlwTlh3UzVrKzFUWnQ1VXJ3b3VONEtpVUV3K2szWldEcDFSWEhOUnFYYjIxVHMzOTk0NXlaU2czVm5aRk5ROUNGM1hlWnlyNURnQlhLaXdDTWEyTXhlVERZWGdQMUZzZjlRTktaYzBrODFSSmszcjZFUTNyQ21CVnlMTDc1RWpaMXBJVkRIb0Z0aU9BSG9CMEJkVFZ5bHFCc0tLS1MrQWVCWEpWTFkrQ1hBU3VHdk8vQXVxN0d1RWpEZkdLZzFvS2Exei9kbW1pOUk5U1VHTmhsMEF0ZnVsSEFhd29Zcm5Ta21OWEFWdUdFaHJFVlh2VUYrQTVDdDJQcU5PakRldHluYTRDbWVVb2xtZVhMTjRBcTdDNVNqMTBRN3lqZ2wrdDZDTnhTUkhtSTVYK0Nwd3JlWUIzUWZkcW5hNHEyMUtkQnVjNEdvWnNuNDlaT09pVmlud0hxSzlXemp2Z2V3ZUVoMkFVNSt2dHhaOUNkOVdxa2g0OVYxOEU1b2o2dlZ5bjBSU3RBeUdJTzVlZFhSS2Q1QjBWR1ZYcTJ5cjN4WXArNVV0K0M0UUo0UDFOMzM5cFFNalJlamo0dmIvRGNyNnJRYzNPLzByam10WnBlWUNCaUNIZkNlbVJiTmhiSy9wTlVQYzN3Zkt5NWYyRDdPbEwzL3VQaHZlL29VNFQwRjhmK1ZOTTJ2eW9pdjBqSytLSFFmZEhxKzBibmN6NG96NzMvK1k2TGJLdzFvLzVCN2VPZjFSbC8wZHU5Qjl0bi85YnZyZi9qK3YwaDZ0dG4ydHAvci80ODE5eTQvenY1MzkxdXZ6emZ3RGlmejZwaFQxTVBnQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxMzBweDt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lO21hcmdpbjozcHggLTNweDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWR7Y29sb3I6Izk5OTtjdXJzb3I6bm90LWFsbG93ZWR9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjFweCAxcHggNXB4ICMzMzM7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNXB4O3RleHQtYWxpZ246Y2VudGVyO3RvcDotNXB4O3dpZHRoOjEwcHh9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzczpiZWZvcmV7Ym90dG9tOjMuNXB4O2NvbnRlbnQ6IngiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfSddLGVuY2Fwc3VsYXRpb246Mn0pO0t1LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOnljfV07S3UucHJvcERlY29yYXRvcnM9e2RpYWxvZ0VsZW1lbnQ6W3t0eXBlOkl0LGFyZ3M6WyJkaWFsb2dQb3B1cCIse3N0YXRpYzohMH1dfV0saHVlU2xpZGVyOlt7dHlwZTpJdCxhcmdzOlsiaHVlU2xpZGVyIix7c3RhdGljOiEwfV19XSxhbHBoYVNsaWRlcjpbe3R5cGU6SXQsYXJnczpbImFscGhhU2xpZGVyIix7c3RhdGljOiEwfV19XSxoYW5kbGVFc2M6W3t0eXBlOnhvLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lc2MiLFsiJGV2ZW50Il1dfV0saGFuZGxlRW50ZXI6W3t0eXBlOnhvLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lbnRlciIsWyIkZXZlbnQiXV19XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEt1LFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiY29sb3ItcGlja2VyIix0ZW1wbGF0ZTpgPGRpdiAjZGlhbG9nUG9wdXAgY2xhc3M9ImNvbG9yLXBpY2tlciIgW2NsYXNzLm9wZW5dPSJzaG93IiBbc3R5bGUuZGlzcGxheV09IiFzaG93ID8gJ25vbmUnIDogJ2Jsb2NrJyIgW3N0eWxlLnZpc2liaWxpdHldPSJoaWRkZW4gPyAnaGlkZGVuJyA6ICd2aXNpYmxlJyIgW3N0eWxlLnRvcC5weF09InRvcCIgW3N0eWxlLmxlZnQucHhdPSJsZWZ0IiBbc3R5bGUucG9zaXRpb25dPSJwb3NpdGlvbiIgW3N0eWxlLmhlaWdodC5weF09ImNwSGVpZ2h0IiBbc3R5bGUud2lkdGgucHhdPSJjcFdpZHRoIiAoY2xpY2spPSIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiPgogIDxkaXYgKm5nSWY9ImNwRGlhbG9nRGlzcGxheT09J3BvcHVwJyIgY2xhc3M9ImFycm93IGFycm93LXt7Y3BVc2VQb3NpdGlvbn19IiBbc3R5bGUudG9wLnB4XT0iYXJyb3dUb3AiPjwvZGl2PgoKICA8ZGl2ICpuZ0lmPSIoY3BDb2xvck1vZGUgfHxceEEwMSkgPT09IDEiIGNsYXNzPSJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIgW3NsaWRlcl0gW3JnWF09IjEiIFtyZ1ldPSIxIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09Imh1ZVNsaWRlckNvbG9yIiAobmV3VmFsdWUpPSJvbkNvbG9yQ2hhbmdlKCRldmVudCkiIChkcmFnU3RhcnQpPSJvbkRyYWdTdGFydCgnc2F0dXJhdGlvbi1saWdodG5lc3MnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoJ3NhdHVyYXRpb24tbGlnaHRuZXNzJykiPgogICAgPGRpdiBjbGFzcz0iY3Vyc29yIiBbc3R5bGUudG9wLnB4XT0ic2xpZGVyPy52IiBbc3R5bGUubGVmdC5weF09InNsaWRlcj8ucyI+PC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9Imh1ZS1hbHBoYSBib3giPgogICAgPGRpdiBjbGFzcz0ibGVmdCI+CiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQiPjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQtY29sb3IiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT0ic2VsZWN0ZWRDb2xvciI+PC9kaXY+CgogICAgICA8YnV0dG9uICpuZ0lmPSJjcEFkZENvbG9yQnV0dG9uIiB0eXBlPSJidXR0b24iIGNsYXNzPSJ7e2NwQWRkQ29sb3JCdXR0b25DbGFzc319IiBbZGlzYWJsZWRdPSJjcFByZXNldENvbG9ycyAmJiBjcFByZXNldENvbG9ycy5sZW5ndGggPj0gY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGgiIChjbGljayk9Im9uQWRkUHJlc2V0Q29sb3IoJGV2ZW50LCBzZWxlY3RlZENvbG9yKSI+CiAgICAgICAge3tjcEFkZENvbG9yQnV0dG9uVGV4dH19CiAgICAgIDwvYnV0dG9uPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0icmlnaHQiPgogICAgICA8ZGl2ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbD09PSdkaXNhYmxlZCciIHN0eWxlPSJoZWlnaHQ6IDE2cHg7Ij48L2Rpdj4KCiAgICAgIDxkaXYgI2h1ZVNsaWRlciBjbGFzcz0iaHVlIiBbc2xpZGVyXSBbcmdYXT0iMSIgW3N0eWxlLmRpc3BsYXldPSIoY3BDb2xvck1vZGUgfHxceEEwMSkgPT09IDEgPyAnYmxvY2snIDogJ25vbmUnIiAobmV3VmFsdWUpPSJvbkh1ZUNoYW5nZSgkZXZlbnQpIiAoZHJhZ1N0YXJ0KT0ib25EcmFnU3RhcnQoJ2h1ZScpIiAoZHJhZ0VuZCk9Im9uRHJhZ0VuZCgnaHVlJykiPgogICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LmgiPjwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgI3ZhbHVlU2xpZGVyIGNsYXNzPSJ2YWx1ZSIgW3NsaWRlcl0gW3JnWF09IjEiIFtzdHlsZS5kaXNwbGF5XT0iKGNwQ29sb3JNb2RlIHx8XHhBMDEpID09PSAyID8gJ2Jsb2NrJzogJ25vbmUnIiAobmV3VmFsdWUpPSJvblZhbHVlQ2hhbmdlKCRldmVudCkiIChkcmFnU3RhcnQpPSJvbkRyYWdTdGFydCgndmFsdWUnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoJ3ZhbHVlJykiPgogICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLnJpZ2h0LnB4XT0ic2xpZGVyPy52Ij48L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2ICNhbHBoYVNsaWRlciBjbGFzcz0iYWxwaGEiIFtzbGlkZXJdIFtyZ1hdPSIxIiBbc3R5bGUuZGlzcGxheV09ImNwQWxwaGFDaGFubmVsID09PSAnZGlzYWJsZWQnID8gJ25vbmUnIDogJ2Jsb2NrJyIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPSJhbHBoYVNsaWRlckNvbG9yIiAobmV3VmFsdWUpPSJvbkFscGhhQ2hhbmdlKCRldmVudCkiIChkcmFnU3RhcnQpPSJvbkRyYWdTdGFydCgnYWxwaGEnKSIgKGRyYWdFbmQpPSJvbkRyYWdFbmQoJ2FscGhhJykiPgogICAgICAgIDxkaXYgY2xhc3M9ImN1cnNvciIgW3N0eWxlLmxlZnQucHhdPSJzbGlkZXI/LmEiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8XHhBMDEpID09PSAxIiBjbGFzcz0iY215ay10ZXh0IiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMyA/ICdub25lJyA6ICdibG9jayciPgogICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJjbXlrVGV4dD8uYyIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkN5YW5JbnB1dCgkZXZlbnQpIiAvPgogICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImNteWtUZXh0Py5tIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uTWFnZW50YUlucHV0KCRldmVudCkiIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iY215a1RleHQ/LnkiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25ZZWxsb3dJbnB1dCgkZXZlbnQpIiAvPgogICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImNteWtUZXh0Py5rIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQmxhY2tJbnB1dCgkZXZlbnQpIiAvPgogICAgICA8aW5wdXQgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09J2Rpc2FibGVkJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iY215a1RleHQ/LmEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiIC8+CiAgICA8L2Rpdj4KCiAgICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgPGRpdj5DPC9kaXY+PGRpdj5NPC9kaXY+PGRpdj5ZPC9kaXY+PGRpdj5LPC9kaXY+PGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT0nZGlzYWJsZWQnIiA+QTwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHxceEEwMSkgPT09IDEgIiBjbGFzcz0iaHNsYS10ZXh0IiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMiA/ICdub25lJyA6ICdibG9jayciPgogICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMzYwIiBbdGV4dF0gW3JnXT0iMzYwIiBbdmFsdWVdPSJoc2xhVGV4dD8uaCIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkh1ZUlucHV0KCRldmVudCkiIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjEwMCIgW3RleHRdIFtyZ109IjEwMCIgW3ZhbHVlXT0iaHNsYVRleHQ/LnMiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25TYXR1cmF0aW9uSW5wdXQoJGV2ZW50KSIgLz4KICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMTAwIiBbdGV4dF0gW3JnXT0iMTAwIiBbdmFsdWVdPSJoc2xhVGV4dD8ubCIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkxpZ2h0bmVzc0lucHV0KCRldmVudCkiIC8+CiAgICAgIDxpbnB1dCAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT0nZGlzYWJsZWQnIiB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iIG1pbj0iMCIgbWF4PSIxIiBzdGVwPSIwLjEiIFt0ZXh0XSBbcmddPSIxIiBbdmFsdWVdPSJoc2xhVGV4dD8uYSIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvbkFscGhhSW5wdXQoJGV2ZW50KSIgLz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJveCI+CiAgICAgIDxkaXY+SDwvZGl2PjxkaXY+UzwvZGl2PjxkaXY+TDwvZGl2PjxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09J2Rpc2FibGVkJyI+QTwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHxceEEwMSkgPT09IDEgIiBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMSA/ICdub25lJyA6ICdibG9jayciIGNsYXNzPSJyZ2JhLXRleHQiPgogICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0qIiBtaW49IjAiIG1heD0iMjU1IiBbdGV4dF0gW3JnXT0iMjU1IiBbdmFsdWVdPSJyZ2JhVGV4dD8uciIgKGtleXVwLmVudGVyKT0ib25BY2NlcHRDb2xvcigkZXZlbnQpIiAobmV3VmFsdWUpPSJvblJlZElucHV0KCRldmVudCkiIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjI1NSIgW3RleHRdIFtyZ109IjI1NSIgW3ZhbHVlXT0icmdiYVRleHQ/LmciIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25HcmVlbklucHV0KCRldmVudCkiIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIHBhdHRlcm49IlswLTldKiIgbWluPSIwIiBtYXg9IjI1NSIgW3RleHRdIFtyZ109IjI1NSIgW3ZhbHVlXT0icmdiYVRleHQ/LmIiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25CbHVlSW5wdXQoJGV2ZW50KSIgLz4KICAgICAgPGlucHV0ICpuZ0lmPSJjcEFscGhhQ2hhbm5lbCE9PSdkaXNhYmxlZCciIHR5cGU9Im51bWJlciIgcGF0dGVybj0iWzAtOV0rKFtcXC4sXVswLTldezEsMn0pPyIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMSIgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09InJnYmFUZXh0Py5hIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIiAvPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgPGRpdj5SPC9kaXY+PGRpdj5HPC9kaXY+PGRpdj5CPC9kaXY+PGRpdiAqbmdJZj0iY3BBbHBoYUNoYW5uZWwhPT0nZGlzYWJsZWQnIiA+QTwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDxkaXYgKm5nSWY9IiFjcERpc2FibGVJbnB1dCAmJiAoY3BDb2xvck1vZGUgfHxceEEwMSkgPT09IDEiIGNsYXNzPSJoZXgtdGV4dCIgW2NsYXNzLmhleC1hbHBoYV09ImNwQWxwaGFDaGFubmVsPT09J2ZvcmNlZCciCiAgICBbc3R5bGUuZGlzcGxheV09ImZvcm1hdCAhPT0gMCA/ICdub25lJyA6ICdibG9jayciPgogICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgPGlucHV0IFt0ZXh0XSBbdmFsdWVdPSJoZXhUZXh0IiAoYmx1cik9Im9uSGV4SW5wdXQobnVsbCkiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25IZXhJbnB1dCgkZXZlbnQpIi8+CiAgICAgIDxpbnB1dCAqbmdJZj0iY3BBbHBoYUNoYW5uZWw9PT0nZm9yY2VkJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiBbdGV4dF0gW3JnXT0iMSIgW3ZhbHVlXT0iaGV4QWxwaGEiIChrZXl1cC5lbnRlcik9Im9uQWNjZXB0Q29sb3IoJGV2ZW50KSIgKG5ld1ZhbHVlKT0ib25BbHBoYUlucHV0KCRldmVudCkiLz4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJveCI+CiAgICAgIDxkaXY+SGV4PC9kaXY+CiAgICAgIDxkaXYgKm5nSWY9ImNwQWxwaGFDaGFubmVsPT09J2ZvcmNlZCciPkE8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2ICpuZ0lmPSIhY3BEaXNhYmxlSW5wdXQgJiYgKGNwQ29sb3JNb2RlIHx8XHhBMDEpID09PSAyIiBjbGFzcz0idmFsdWUtdGV4dCI+CiAgICA8ZGl2IGNsYXNzPSJib3giPgogICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSoiIG1pbj0iMCIgbWF4PSIxMDAiIFt0ZXh0XSBbcmddPSIxMDAiIFt2YWx1ZV09ImhzbGFUZXh0Py5sIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uVmFsdWVJbnB1dCgkZXZlbnQpIiAvPgogICAgICA8aW5wdXQgKm5nSWY9ImNwQWxwaGFDaGFubmVsIT09J2Rpc2FibGVkJyIgdHlwZT0ibnVtYmVyIiBwYXR0ZXJuPSJbMC05XSsoW1xcLixdWzAtOV17MSwyfSk/IiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4xIiAgW3RleHRdIFtyZ109IjEiIFt2YWx1ZV09ImhzbGFUZXh0Py5hIiAoa2V5dXAuZW50ZXIpPSJvbkFjY2VwdENvbG9yKCRldmVudCkiIChuZXdWYWx1ZSk9Im9uQWxwaGFJbnB1dCgkZXZlbnQpIiAvPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm94Ij4KICAgICAgPGRpdj5WPC9kaXY+PGRpdj5BPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiAqbmdJZj0iIWNwRGlzYWJsZUlucHV0ICYmIChjcENvbG9yTW9kZSB8fFx4QTAxKSA9PT0gMSIgY2xhc3M9InR5cGUtcG9saWN5Ij4KICAgIDxzcGFuIGNsYXNzPSJ0eXBlLXBvbGljeS1hcnJvdyIgKGNsaWNrKT0ib25Gb3JtYXRUb2dnbGUoLTEpIj48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0idHlwZS1wb2xpY3ktYXJyb3ciIChjbGljayk9Im9uRm9ybWF0VG9nZ2xlKDEpIj48L3NwYW4+CiAgPC9kaXY+CgogIDxkaXYgKm5nSWY9ImNwUHJlc2V0Q29sb3JzPy5sZW5ndGggfHwgY3BBZGRDb2xvckJ1dHRvbiIgY2xhc3M9InByZXNldC1hcmVhIj4KICAgIDxocj4KCiAgICA8ZGl2IGNsYXNzPSJwcmVzZXQtbGFiZWwiPnt7Y3BQcmVzZXRMYWJlbH19PC9kaXY+CgogICAgPGRpdiAqbmdJZj0iY3BQcmVzZXRDb2xvcnM/Lmxlbmd0aCIgY2xhc3M9Int7Y3BQcmVzZXRDb2xvcnNDbGFzc319Ij4KICAgICAgPGRpdiAqbmdGb3I9ImxldCBjb2xvciBvZiBjcFByZXNldENvbG9ycyIgY2xhc3M9InByZXNldC1jb2xvciIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09ImNvbG9yIiAoY2xpY2spPSJzZXRDb2xvckZyb21TdHJpbmcoY29sb3IpIj4KICAgICAgICA8c3BhbiAqbmdJZj0iY3BBZGRDb2xvckJ1dHRvbiIgY2xhc3M9Int7Y3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzfX0iIChjbGljayk9Im9uUmVtb3ZlUHJlc2V0Q29sb3IoJGV2ZW50LCBjb2xvcikiPjwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2ICpuZ0lmPSIhY3BQcmVzZXRDb2xvcnM/Lmxlbmd0aCAmJiBjcEFkZENvbG9yQnV0dG9uIiBjbGFzcz0ie3tjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzfX0iPnt7Y3BQcmVzZXRFbXB0eU1lc3NhZ2V9fTwvZGl2PgogIDwvZGl2PgoKICA8ZGl2ICpuZ0lmPSJjcE9LQnV0dG9uIHx8IGNwQ2FuY2VsQnV0dG9uIiBjbGFzcz0iYnV0dG9uLWFyZWEiPgogICAgPGJ1dHRvbiAqbmdJZj0iY3BDYW5jZWxCdXR0b24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Int7Y3BDYW5jZWxCdXR0b25DbGFzc319IiAoY2xpY2spPSJvbkNhbmNlbENvbG9yKCRldmVudCkiPnt7Y3BDYW5jZWxCdXR0b25UZXh0fX08L2J1dHRvbj4KCiAgICA8YnV0dG9uICpuZ0lmPSJjcE9LQnV0dG9uIiB0eXBlPSJidXR0b24iIGNsYXNzPSJ7e2NwT0tCdXR0b25DbGFzc319IiAoY2xpY2spPSJvbkFjY2VwdENvbG9yKCRldmVudCkiPnt7Y3BPS0J1dHRvblRleHR9fTwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KYCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsc3R5bGVzOlsnLmNvbG9yLXBpY2tlcnstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICM3Nzc7Y3Vyc29yOmRlZmF1bHQ7aGVpZ2h0OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dXNlci1zZWxlY3Q6bm9uZTt3aWR0aDoyMzBweDt6LWluZGV4OjEwMDB9LmNvbG9yLXBpY2tlciAqe2JveC1zaXppbmc6Ym9yZGVyLWJveDtmb250LXNpemU6MTFweDttYXJnaW46MH0uY29sb3ItcGlja2VyIGlucHV0e2NvbG9yOiMwMDA7Zm9udC1zaXplOjEzcHg7aGVpZ2h0OjI2cHg7bWluLXdpZHRoOjA7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MH0uY29sb3ItcGlja2VyIGlucHV0Oi1tb3otc3VibWl0LWludmFsaWQsLmNvbG9yLXBpY2tlciBpbnB1dDotbW96LXVpLWludmFsaWQsLmNvbG9yLXBpY2tlciBpbnB1dDppbnZhbGlke2JveC1zaGFkb3c6bm9uZX0uY29sb3ItcGlja2VyIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLC5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7bWFyZ2luOjB9LmNvbG9yLXBpY2tlciAuYXJyb3d7Ym9yZGVyLXN0eWxlOnNvbGlkO2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7ei1pbmRleDo5OTk5OTl9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9we2JvcmRlci1jb2xvcjojNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDoxMHB4IDVweDtsZWZ0OjhweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICM3Nzc7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4O3RvcDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtbGVmdHtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6NXB4IDEwcHg7Ym90dG9tOjhweDtyaWdodDotMjFweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC10b3AsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctdG9wLXJpZ2h0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O2xlZnQ6LTIwcHh9LmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctYm90dG9tLWxlZnQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6NXB4IDEwcHg7cmlnaHQ6LTIxcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tcmlnaHQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQsLmNvbG9yLXBpY2tlciAuYXJyb3cuYXJyb3ctcmlnaHQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCAjNzc3IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O2JvcmRlci13aWR0aDo1cHggMTBweDtsZWZ0Oi0yMHB4O3RvcDo4cHh9LmNvbG9yLXBpY2tlciAuY3Vyc29ye2JvcmRlcjoycHggc29saWQgIzIyMjtib3JkZXItcmFkaXVzOjUwJTtjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxNnB4fS5jb2xvci1waWNrZXIgLmJveHtkaXNwbGF5OmZsZXg7cGFkZGluZzo0cHggOHB4fS5jb2xvci1waWNrZXIgLmxlZnR7cGFkZGluZzoxNnB4IDhweDtwb3NpdGlvbjpyZWxhdGl2ZX0uY29sb3ItcGlja2VyIC5yaWdodHtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MTJweCA4cHh9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWF7cGFkZGluZzowIDE2cHggMTZweDt0ZXh0LWFsaWduOnJpZ2h0fS5jb2xvci1waWNrZXIgLmJ1dHRvbi1hcmVhIGJ1dHRvbnttYXJnaW4tbGVmdDo4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWF7cGFkZGluZzo0cHggMTVweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYSAucHJlc2V0LWxhYmVse2NvbG9yOiM1NTU7Zm9udC1zaXplOjExcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6NHB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtY29sb3J7Ym9yZGVyOjFweCBzb2xpZCAjYTlhOWE5O2JvcmRlci1yYWRpdXM6MjUlO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxOHB4O21hcmdpbjo0cHggNnB4IDhweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxOHB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtZW1wdHktbWVzc2FnZXtmb250LXN0eWxlOml0YWxpYzttYXJnaW4tYm90dG9tOjhweDttYXJnaW4tdG9wOjRweDttaW4taGVpZ2h0OjE4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuaGV4LXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveHtwYWRkaW5nOjAgMjRweCA4cHggOHB4fS5jb2xvci1waWNrZXIgLmhleC10ZXh0IC5ib3ggZGl2e2NsZWFyOmxlZnQ7Y29sb3I6IzU1NTtmbGV4OjEgMSBhdXRvO2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBpbnB1dHtib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7ZmxleDoxIDEgYXV0bztwYWRkaW5nOjFweH0uY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBkaXY6Zmlyc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaGV4LWFscGhhIC5ib3ggaW5wdXQ6Zmlyc3QtY2hpbGR7ZmxleC1ncm93OjM7bWFyZ2luLXJpZ2h0OjhweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0e2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6NHB4IDhweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94e3BhZGRpbmc6MCA4cHggOHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBkaXZ7Y29sb3I6IzU1NTtmbGV4OjEgMSBhdXRvO21hcmdpbi1yaWdodDo4cHg7dGV4dC1hbGlnbjpjZW50ZXJ9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdjpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLnJnYmEtdGV4dCAuYm94IGlucHV0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dHtib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7ZmxleDoxO2Zsb2F0OmxlZnQ7bWFyZ2luOjAgOHB4IDAgMDtwYWRkaW5nOjFweH0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZHttYXJnaW4tcmlnaHQ6MH0uY29sb3ItcGlja2VyIC5odWUtYWxwaGF7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206M3B4fS5jb2xvci1waWNrZXIgLmh1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tVRldiQ0NBQUFBRnhKUkVGVWFON3Qwa0VLZzBBUUFNRTJ4ODMvbjJxdTVxQ2dEMWlEaENvWWRwbmJRQzliYlkxcVZPL2p2YzZrM2FkOTFzNy83RjEvY3NnUHJ1anVRMTdCRFlTRnNCQVd3Z0poSVN5RUJjSkNXQWdMaElXd0VCWUlpMmY3QXIvMVRDZ0ZIMlg5QUFBQUFFbEZUa1N1UW1DQyIpO2RpcmVjdGlvbjpsdHJ9LmNvbG9yLXBpY2tlciAuaHVlLC5jb2xvci1waWNrZXIgLnZhbHVle2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjE2cHg7bWFyZ2luLWJvdHRvbToxNnB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUNUa2xFUVZSNDJ1M1NZVWNyQUJoQTRVMlNrbVJKTW1XU0prbEtKaVdaWnBLVUpKc2tLVW1hVEZJbUtaT1V6TXlTcEdSbWxpUk5KaWxKU3BLU0pFdG1TcElwbVdtU2RPNzM2LzZEK3g3T1AzZ1VDb1dDdjFjcWxTUWxKWkdjbkV4S1NncXBxYW1rcGFXUm5wNU9Sa1lHbVptWnFGUXFzckt5eU03T0ppY25oOXpjWE5ScU5YbDVlZVRuNTZQUmFDZ29LS0N3c0pDaW9pSzBXaTNGeGNXVWxKUlFXbHBLV1ZrWjVlWGxWRlJVVUZsWmlVNm5vNnFxaXVycWFtcHFhcWl0cmFXdXJnNjlYazk5ZlQwR2d3R2owVWhEUXdPTmpZMDBOVFhSM054TVMwc0xyYTJ0dExXMTBkN2Vqc2xrd213MjA5SFJRV2RuSjExZFhYUjNkOVBUMDBOdmJ5OTlmWDMwOS9jek1EREE0T0FnRm91Rm9hRWhyRllydzhQRGpJeU1NRG82eXRqWUdEYWJqZkh4Y1NZbUpwaWNuR1JxYWdxNzNjNzA5RFF6TXpQTXpzNHlOemZIL1B3OERvY0RwOU9KeStYQzdYYXpzTERBNHVJaVMwdExMQzh2czdLeXd1cnFLbXRyYTNnOEhyeGVMejZmRDcvZnovcjZPaHNiRzJ4dWJySzF0Y1gyOWphQlFJQ2RuUjJDd1NDN3U3dnM3ZTJ4djcvUHdjRUJoNGVISEIwZGNYeDh6TW5KQ2FlbnA1eWRuWEYrZnM3RnhRV1hsNWRjWFYxeGZYM056YzBOdDdlMzNOM2RFUXFGdUwrLzUrSGhnWEE0VENRUzRmSHhrYWVuSjU2Zm4zbDVlZUgxOVpWb05NcmIyeHZ2Nys5OGZId1FpOFdJeCtOOGZuNlNTQ1Q0K3ZyaSsvdWJuNThmZm45LytWY0tnU1d3QkpiQUVsZ0NTMkFKTElFbHNBU1d3QkpZQWt0Z0NTeUJKYkFFbHNBU1dBSkxZQWtzZ1NXd0JKYkFFbGdDUzJBSkxJRWxzUDQvV0g4QW1KNVo2akhTNGg4QUFBQUFTVVZPUks1Q1lJST0iKTtkaXJlY3Rpb246cnRsfS5jb2xvci1waWNrZXIgLmFscGhhe2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3WVFsWk1hM2dBQUFXVkpSRUZVYU43dG1FR082akFRUkNzT0FySGdCcHlBSllHamNHb2N4QW00QTJJSHBtb1dFMGVCSCtlem1GbE52VTA2c2hKM1c2VkVlbFdNVVFBSUlGOWY2cVpwaW1zQTFMWXRTMnVGNTEvdTI3WVZBRlpWUlVrRW9HSGRQVi9zSWNiSUVJSWtVZEkvOVhhN25leXY2MStTV0ZVVkFWQ1NjdDAwVFduMmZ2NnUzK0VjZmQzdFh6eS8wK25FVXUrU1Bqby9rcXpybWlRcFNjTjZ2OThYZXdmQTgvbE1raUxKMld4R1NVb3BjVDZmTTZVME5YOS9mcmZiamV2MVd0ZnJsWmZMaFlmRFFRSEcvQUlPbG5Hd2pJTmxIQ3hqSEN6allKbS9USldkQ3dxdUpYc2VGRnpHd0ROTmVpS01PSlRPOHhRZERRYWVCMjkrSzllZmVMYUJvOUo3dmR2dEpqMVJqRkZqZml2N3F2OTV0angvN2xlU1FnaDkzZTFmZk1lSXA2TytZUWpoby9ONzkxdDFYVk9TU0k3Ti8vSys0L0dveFdMQngrUEI1L09wNVhMSisvM09sSkpXcXhVM204M292djVpR2Y4S2pZTmxIQ3hqSEN6allCa0h5NWdmNWd1c3ZRVTdVMzdqVEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXNpemU6MTAwJSAxMDAlO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2RpcmVjdGlvbjpsdHI7aGVpZ2h0OjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC50eXBlLXBvbGljeXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCSUFBQUFnQ0FZQUFBQWZmQ2p4QUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUFDZXdBQUFuc0IwMUNPM0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFBSUFTVVJCVkVpSjdaWTlheFJSRklhZnN4TVN0ckxRSnBBZ3BCRmhpK0M5dzFZU28wMEk2UlovZzl2WnBCZi9RT3I0R3lSZ2tTS05TckFhZHNacVFHd0NrdUFXeVJaSnN5U3d2aFo3Ti92aHpyZ2JMSDNMZDg1OTdqbHp6NTB6Sm9reXhYSDhEcURWYXIwcWk2djhCYkl0cVNHcEVjZnhkbG1zRldYa3ZYOEFmQVZXZzNVS1BFblQ5R0t1ak16c0FGZ1pzVmFDTjFWVFFkNzdYVW5yZ0Uxa3YrNjkzNTI2OFdScHpybkhadllSV0M3WXZDM3BSWlpsM3dvenF0VnFpeUg5SWdqQXNwa2QxR3ExeFVKUXRWcmRCOVpLSUFPdGhkZy9RYzY1TFVrN3dOSU1vQ1ZKTzg2NXJZRmhrcWpYNi9kN3ZWNEdQSndCTXFvZlVSUzVKRWs2RllCZXIvZWVZYi9NbzlXd0ZuUE92UWJlQXZmdUFBSzRCTjRzQUp0QUcvZ0pJRWxtTnVpSnliYTNFR05tWmlQZVp1RVZtVmVsbC9ZLzZOK0N6RG4zQVhoRU9PbzdIdi8zQmVBejhJelFrTVBuSmJ1UHgxd0MreVlKNy8wbllJUDVTLzBGSEtkcCtyd0NFRVhSUy9yZjVIbDFHdGIyTTBpU3BDT3BDWnpQQVRtWDFFeVNwSE1MQXNpeTdNak1Eb0hyR1NEWFpuYVlaZG5Sd0JoN0o5MXV0d21jekFBNkNiRzNHZ1BsZVg0anFVSC9hMUNrdHFSR251YzNoU0NBTUIzMmdLc3BrQ3RnYjNLQ1FNbWtqZVA0V05KVGhyTk5admFsMVdwdFRJc3Y3SnRRNHRtSWRSYThxU29FcFdsNllXWk5vQU4wekt4Wk5QZWhwTFNCWnYydCtRMENKOWxMbkFSUUxBQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1wb3NpdGlvbjo1MCU7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtc2l6ZTo4cHggMTZweDtoZWlnaHQ6MjRweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMnB4O3RvcDoyMThweDt3aWR0aDoxNnB4fS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5IC50eXBlLXBvbGljeS1hcnJvd3tkaXNwbGF5OmJsb2NrO2hlaWdodDo1MCU7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5zZWxlY3RlZC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7bGVmdDo4cHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjE2cHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zZWxlY3RlZC1jb2xvci1iYWNrZ3JvdW5ke2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNnQUFBQW9DQVlBQUFDTS9yaHRBQUFBaDBsRVFWUllSKzJXMFFsQU1RZ0Q2MHpkZndPZHFhOFRtSS93UU1yNUswSTViWkxJekxPYTJudDM3VlZWYmQrZER4NW9iZ0NDM0tCTHdKMmZmNFBuVmlka2YrdWNJaHc4MEhRYUNMbzNETUgzQ1JLM2lGc21BV1ZsNmhQTkR3dDhFdk5FNXErWXVFWGNNZ2tvblZNNlNkeUNvRXZBblo4djFIang4MTdNaWxteFNVQjVyZExKRHljWmdVQVpVY2gvQUFBQUFFbEZUa1N1UW1DQyIpO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDo0MHB4O3dpZHRoOjQwcHh9LmNvbG9yLXBpY2tlciAuc2F0dXJhdGlvbi1saWdodG5lc3N7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBT1lBQUFDQ0NBWUFBQUJTRDdUM0FBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdrc1BXUjZsZ0FBSUFCSlJFRlVlTnJ0blZ1VDQ3Z1JyQUhOK1AvL09yLzYxWTV3T05aN21aMXUzWEFlTE1qSlpHWlZnZEtzZmM1eFIzUzBSSUlVVytDSHpDcGMyTWNZbzdYR3YzZXg3VWlaZDU3cmp5enp2K3YrMzNYL1IvKzNyL2Y3dlIzODZZK1R2S05jZi93ZGhUTFBjdjlxVTJ3WmQ3NHV0aDB0MTgyMWprSVpMUGNzSS82bldhNFh2dXRxdVUwWjg1bW54ODBTL1p6Z3BuTG5PdEhOdDcvb2Z4MVRLWGNTTnpOLzdxYk1RM2p1N3JOUW1NWVlkLzRzMmo5YWErUCtnR2FNY1pyYjFNL3RkcnZmNy9kMnY5OVA5L3Q5M08vM2NidmR4dTEyRzlmcmRWd3VsM0UrbjhjLy8vblArMisvL1hiNjZhZWZ4bC8vK3RmeDV6Ly8yWUs1QWwycmd2ZjRVc2JwZEdyQjUyYkF2QXJYcHV6am1pcUFWU0d6NWVEbUdZWHpoYkFabUNybm16ZGRwVVUrOFkxZEFPWWVYQ3REVXdWd1Y3WUNHSDZ1QW15TWNaOWw1dmtVYUJQR01VWjcvSjV3Lzc5Mi9mdnY5WHE5MzI2M2RyL2ZUeFBFQ2VNRThuSzVqTS9Qei9IVFR6L2R2MzM3ZHZybGwxL0dQLzd4ai9HM3YvMXQvT1V2ZndrVnN3b25namRPcDlQekgzVTNEM3ptV0duWlZYbjRqQ3FzN3dDMkJLUDQvOHRBemtac29XeDZYcnFlSFp5bXZwNEFCQ0JKaFRRd0tmRFQ4Z3pyWkNJcWk1QWhpQUNqQmZFQjJyUDgvWDYzTU03ZjYvVjZ2OS92N1hhN2JZQzgzVzdqY3Jsc1ZISXE1ZmZ2MzArLy9mYmIrT1dYWDhaUFAvMDAvdjczdjQrZmYvNzVKU3ZiZXUrYkwyV01NYUZiQWxwQk5NODVRWCtjdDZxb1Nxa1BBd3VRbEJWS3FHTkZTVU9BQTNCbXU3Z0M1aE5PZDE1blN3dkFPVVc3QzRnaVVDVjhTZ241TDloTkZJcVRzcDBHeEkweXNpb3lqQWprWS90R0pWRXB6K2Z6K09XWFgrN2Z2MzgvL2Y3NzcrUGJ0Mi9qMTE5L0hULy8vUFA0OWRkZng4ZkhSd3JtVGpWNzc5RVh1MnB4Mnhoand0ZEpaUWNBV1FJUExQSVNzTUphU3dpRDhneklLcndTeUFURTVqNW5BYlI1YzFkQlV3QmxzRVdXMGg2THFpWXNxRlBBUXhDeVJaM3dPU0FSeG1sWE1YNWs2NHBRZnZ2MjdmNzUrZGsrUGo1T0h4OGY0L3YzNytQYnQyL2p0OTkrRzkrK2ZSc2ZIeC9qY3JtVUZMTzMxZ1lEV2JseFJJcy9UcWZUN291c3hKc0F4WEEyR2M3VEE5WGRnZmRvSGJGc2o3NlgyKzFXQXJnSTFhZ2VHd0EzcXVwcW9Ic21jYkk2RnU5M3F1Z2dGYTlkN0xlRHRnS2ZBRkhCSitORUJ5SWtjSjVLZXJ2ZFRtaGhHY2dKSlNaNXZuLy9maitmeisxOFBwOCtQei9INStmbm1HRCsvdnZ2NC92MzcrUGo0Mk44Zm42TzIrMVdzN0pqalA2d3JhTUk1RTRSWjh4MnZWNVRTd2txdW90VjcvZDdUejZIRldzRC9xTmNkdzBDUTNxLzMyMWM2ODZUd0RWSWRidXk3M3pObGRoU0hiOEkya2xaem5tK0luQlM0VTZuMDMwMmFCRnNMaEhEQUtKVkpWZ2xmSTlqaHZ1NTNXNTNzTEFOWU54QWlEQTZNQ2VVSHg4ZjkrdjEyaTZYUzd0Y0xxY1pXNTdQNXllWTgvZno4M09jeitmbnNTbVlVeWtuV0VHODVXQnN0OXN0elNMeU1kZnI5UWkwOGlZMTVVWjBMbERHTGhSM281eksyajdPUFVURDBFK25VM3RrN1hiLzE2TkZiaGxvQU11WTF6akxVT08zQktlSURlK1o4czMvSjRnRm80VE01alBtdVJnMjhmb1VLS1ZTd28xNlRnQTVucHl3Y1dMSGdZbC9QejgvNzMvNjA1L2FiNy85MW02M1c3dGNMaWUwc1pqNG1hbzVnVHlmejg4RTBmMStqOEVjWXp3VFBFRzJjcWp5ZkhORjBNOGZ1cUVpYU9WblJ6WlpRTmg1ZndReUhnL0hER2ZKbzg5UTF6Yi9xdXU1WEM2NzczSTJYS2ZUcWQvdjkrZDN3dXFXdmEvWVRkVWRFVjNmaEl2L1ZpeXBzNllFM3gzcjQzSzViSlFTNjZ6YXhWR0ZzdmQrLy9qNGFGKy9mbTNmdjM5dnQ5dXRmZjM2dGYzKysrL3RkcnVkdm4zN1p1TkxCYWFDTWdVekMrclpSaUZvd3hVdUpJOFlNcWNDcDlPcHE1dmFnYVlVNmxHSkExWFFxZWpjaHc2Q2owR3c1bllCckd3MDFBMk8yMDZuMDRCR291Tk55VGZwL0Z3RWxoVWV5Nm5YcklLdzdRUVdkZHh1TjJsZEw1Zkw4MzlnU1BGOGFodS9KdkJPNDhDUFN1cU1mOFZwOS9QNTNMNTgrZEx1OTNzN244L3RmcjgvMzkvdjkvYjUrVGtoUEozUDU2bVE0MzYvaisvZnYrL2lTZ2J6ZXIwK0FaeC81Kzg4YnY2T01kYTZTNXo2a2QyMWZZQzlkeHY3Y0lKSjJkOUFPUzMwZlBNenlIaVRNOEI0REY2WFVsWUhwNEtRVzNXKzF0NzdNTkIxdkdIeFdxN1hhN3ZmNzgreTUvTjVBK0gxZXQyOXh1UDVkYll0eWFSdTRBa3NiUHE2OTM2ZmpSelhSeEJiUHIvYitiMTgrZktsalRIYUJCQmZuOC9uMC8xK0gxKytmQm5uOHptMHNCOGZINXU0Y3I1R3VCaE1WazBFRW45UnNjdGdWaE0raXhsSnRNQTIzUjhCNnl5c0FzdEJPZ0ZYSUtLQ01JZ1RvTXFORXUyZllNSDd6dGM3MzJkUUtrQ2oxeXRBWnRZMEt4OHBJcjhHR0orQVQzVisySGlyaGwrK2ZCbVh5Mld6NzN3K2IxN1A4cCtmbjgvdFV3R1ZsZVZrVHlVYjY4RGtmYXlXWTR6eE5SaWhVNEVwTEpQWlZySyt1N0o0L21nZktxZUxXOVgyUkVXbEl0TDFkaXluYkREYjMralhnWWpRcW4wcnJ4V2MrTmtJTFA3Rjd4SWJNdng3dlY1M3g0MHhubGJXSkYxMlpTYWcvTjBwVzZ0K1p6bU9NekhqYWpLd0Rmb25kNzh6WVRkZnExOHVwOTd6cjJxOHYzSWlvQnByUnRCbDBFWjlvZzVXQlJHT2RPSGpJalhGN1VvdEZiZ09Xblh6SUp5ell2akc1SVlnc21NT3hIa3o4T3NNU3JWTldlcTVUOERhT2NiRXYxT2Q1cmJzOWFPN1l2TWV0NjNFa0YrK2ZNRXhxK01SbDQvTDViTFpOLytleitmblo2S2F6dU1xWFNRVk81c3BKWGZsSEFJemVzL3hKc2Vja1JKaURNb2c5ZDZWZlJycVhNcjZLcFZWMjdqUndKYWNHb3ZPQU0xek1kUU1ud0sxQXViSzYza2RDQ2h2STFDN2cwejluZi9EK1h6ZTJWajhIN0d4NFA5ZHVRbHNZQ3JxeU44WHFHM0htLzEwT2ozancvbitjcmxzdHVNK2pQbW14VDJkVHVQejgzUHp0MnBuMVhzRUhYL2JuUGFWcVZtaDB4d090MG82WExMQUhlUFVVMjAzd0hmY3JzcEN3bVYzVHJ5QjVzME1zZWVnOTd4L0J3ekNqQmxiQitwUkFQbGEwQlZRdVQ2VjZRSGRCbGozZDBLRzE0N2IrRHF4UWVVeW1ETzQzVzRkUWFyK1RJandtQWQwejgvaDY1dmYwL3lMdjNQYjVYTHBydS95ZERvOXM3RVQwSStQajZkS0s5VlVFSWVLV1FXUEFPcko4TEtkNHZFK3Q5MVkzZTdVRmxXYXRnMlZ3Sm5iK0hQbXR2bS9zZks1OS9PYVdGM3gvZVAxVVBIdkE1RERZRHBZWGZiMGRydjFWMkRrQmt4dHcvdEVXVlZsWFdkQzlwRllzNS9qZmg5ZFMvMTZ2VzdzNmxURytUZnFzeFNKSHhrWFhxL1hkcjFldTRMc2ZENlAzdnNUM043N0RrTCt6UG01alNkS0w0elIzQXhRZDZySGtMa1lsU293c3JxN3puenU2d1N3ZHNNSk9YbUE1ZkJjanh0Z01HQllIbHI1em9raHRzTUNUZ1hMUU9XNFhDNmRFeUVNcHJMOG1BUXpYUmdkdWl4Mnlaem9yeGtZc0RuM2hCMVZlTUxHc1hzVnRnbDJwVzhTM3N2azB2dzdSNGhOYUh2djRjQUNsNUhGendJSDBLYzZ6dTRYakRQUi9qcEFWeFd6TzFYazJERGIzdlRjeGVHVTFpV1pIa21JRFd6aVdLdmlyQ0o0RHJhdnM2SUovR0c2Y1RxV2RYRHkrZkFyUURWVmtMcWtWakFvWklJVGRtbUlxWHdxYTk1TjMrTUdZb1pRZFJWTk81M1kxeFJraE8xNnZZN2V1NTA3Q2E5bEpuYkdweE9lbVFoU3cvQVFzbW1wNXpVOUJpVThHNnd2WDc2TTYvVTZQajQrZG8wQno0Q3BnaWtuVFVlRHF3bEtCbWczdTRPVmpyWjFBK3JBY2dhZWpXcTZlSkN2Q1lGRE9OU3dPZ0hYNEVRUnc4bHhiekRPZEVLNmdaM0hrMWIrOGcybzFKRnRLWHl2L2ZFZFRYdVdqV1hkQVppQnA2QURlRHJDRmlpbTdCNlpGbmVlSTdHdm0vUE1rVURYNjdXN3hJOGIwRDcvdjhkQTlxZk41b2FDZjc0V1pqSDBtZjFjbWZZMVkwSlVGbVZyVFd1OHV6a05jTHRFajd1NUZYQlRrZkM2R09BNXE4WU14TzhLVnZGNnNBVkdkY3JVYnNLT0RjUUtrTE1PTWRtbHh1bTY0MllyUG0yNkFsaFpXMVlCMVIrcnJHc3dFOFRhWUFXZVVNeGRmK1dqd1N2WjJFZjN5dE95Zm41K1BwVlBBYXFPbjQzTXROQnF2bWpqeGJqTTRsWmpaWTRncU5NSTVrdGFXL3NZS053Uys5bEZRekdpaG1NQ0tQYTcrWjBWNkViMEdSbW9idHBYOEpsald1NUZNTE41amE2aEc5a3dRZ1pxZjUrMU5INVV4emtGUmVDZFdoSjhYZGxHVWt4TzdIUmxZUm00bVZPNDNXN3RlcjEyVFBKRXcvcm1FTjNMNVNLSElXWmc5bXorcFVvS09ZcTViSlRKZFgyZ21lMVVjeE1aUUZhRVFJbEhjdDMyTStZMUJ6R2tHdXpmaXlBTjl6K3VncGxaMXN5bUNyRENZWWtHeERUcEk5UnpCeTBySHllRFVDMW5XYWVVYUQ5bjR4a055WU1CRFp0elozQisrZkpsWTIxWEZET2NBUkpsYWJPeWlTM3VDcExJOWpyWmpDRGthVnZjQ0Nqd29nbktTaFdkelhaV2xaTXZWVGdEOExwcWxDTHJxZ2JjQitxWXdyZ0tZcFQwY2NDcWJLeUNWYWxrRWFibi9GeW5vZ0NyUEtmcWY1MXhKN3NHQjJaWGNabXhvU096dGp4MzAwRFppN2EwLzJBSVIwVWxCYWc5U3VEdzZLY0F6bGFCN3ZIWnZXcGpLOTBkeXJxNmJLeURVWlFiUjBCMDViaUxRa0hJY1NVbWdJSytTd3VxZ0hDbm9pbzJSUVUxeWorQm5CeTlwcGhWS0xHeUM3WnpGSzFweFdLK0U4SWhWQ1dMTi91THRuVVU0YXlvWUxvYUFOejhGZHRhU3ZZNHBWMEJFVzJsczYxY3pxbGxCS3BUeUtnTUFocloxY2RjMVJST3RQbXZXTmtkY0taN1pLeGFXamlQTEpNcHA3T1pLeEErcnFHL29KTGp4ZjBwbkpscUxvRFpvM2d5VTBtS0d5czJ0YUtlY2ovZDFDK3JKU3BsQnFsVHlBcWdSK0Q4S2pLbG1STDJndFVjQWRDdHNMK2lqQ05UMW9xcXFrSDJPSEViRzVzREZuVWc1QWEreUxvdTJWVTFwdGoxUzJaUXF2MU9SWk45SVd6UmZnYVJCeEtvQkU4VVd5cWxKRnRySWMwQXhOalNqZWQ5OUNUWS9YRGZTekN6NU0wSVpvVkVzV25QRk5Uc2w4b29WQzFUemJHZ3FGWk5EU2dWd0tLKzFzR0RNS3F4WkNXR1ZNRHlzaUVyMWpWU1FKVVl3ajVpSE9sVGhkSHQ0NFNRZzlDTitubDhEOTBOTUlnQWRncjQ2SnFSaVI5STh2UmRGdmJyMTdtL3l4VU1Lak5MTWlWVUFEd3UyQ1dHaGhpK0Y1NVRXTTlNOWNvZ3ptczFkbk00dU9GL0xBRVlXZGNxbk03eUZteXEzSWZ3bU9ST2Q3WTFpRld0T2pvWThUbzQxbVRWNUl5c2dGRnVSenNiV0ZHYk5JSUpDRHYxZE9vNGxaRzdqV0J3UkZ0VlRLdVd5ZUNCeUpLT2FuOG9aM2VwOVhkZE5sMHREdWF5d0x6OWNYUFllREFBMFNwa0JPOXNiVmNUT1ZXbGRQdjR1eXpFa3p4SHRqdm9uSG9Ta0ZFV05vbzFkOERoY1FwdXRkMnBwTm9uNEJ6b0FpSjFoQkZRZzBkVnRkYkdISERRV3VzaG1ORVF1a0xNMlFPMUcyWThiZ1RYcUZoY0JKajdFalBnY1B0czhVUzhxUHBQQi9kWHpuT2g1WjQzOHR6SDVlYzZRZ3JPS3JSUmZLbXlzQm1VREIrUGhZYWJNbFZQRVIrR0NTSVRUenI3YW0ydEFySDNiZ2NFelBKbStjcjVqSjRObkhORkRWckZYY0k1TGU5azVKbncrYmVkYlYrRmZSelpJSGFPT2FPc0xZMC83VUdzNThEanJHd0tNSU1GSUd6T0VXMS9qR3NkQXRDTjZoRUFJNGhCZTlZWGVSUk9CU1ZQQVZQQXF2SU01Yng1aFZLV0FNUDZ6QlJ5M2llc2NyaWRWZEZCaW5CeFhEbkcyR1JZMlhiQ3ZwMWxodkd0TzlCeHU1aDkwOFhRdTQybG5TQXJNRmRpek1pbTh1d1JDeFBHbm5PUzhsd3BuYk9pRHFUQWpzclJOL1Bjb0FTY0NiYUFDcVZNNDB5bG5qalRCcytid1dsQUcyMy9VS2Jka2l3S1dJUVBHeldhY3pwb1NseFBFajgyMmNOV2twUzdGeXpzRHJxcGZncEczamFodzJ2Z2JhU1FBeHVMV1pZdDdKenlOZThKb1pwTkFjdkRGT2R3MHdxWVQ5QUsxclp6L0RkYlNsTFBwMHJ5SXhnUUpsSzlBWmxFcTdJT1hwb2hnOVBJaHJDbmc4OEpzT3hpVjRaV0FZZmc0c2lreC84a3kyWjlsODYydXF3cmZzY0lIOCt1Z1RtVkd5aWRkZVZZVWdFTW40R1p6ZzE0RXdJc2g5c3gyY0tLaVdYUmV1T0U1Z3pHT1FnZGxSS1ZWZGxldnFiMjc5WHEwUW5zdHMyVkRhQk8wY29lenNydVd0SEFwdTZzS0c0SUJoTjBhR1Uya0xyTUtHUlROM0htYkNEd0tWMTR6dmtNRURHNFFmWlZzcFZsYU5VMm1oYzVURVozTjFoL3pxVGhldUxwVzA1WldUR1ZqYjNkYm5ObXhLWkJuTjhKcWlkYVZMS0FPeUFSTkxTK01CNTRaMitWYXFvTUxLcm9WQmxuZ2VmblRQQWNvSE5XQ1N2bGZBOENJMEhFbUJOQm5CbFh5TXJ6VTdBN1dWbTk0UFBxUTJnbXFLeCtXREdzbnZpbG1jU09CSnFPSzFuWXlBSXp1QXllc3EzVWRTSzNLZldjWUtEOTVIbWZZT1UzcXNlcjJDdFlFVUErRnBmcWROdmdQQlpVQmhEckdPTlJWbFFzaDhyTGNhVUN5a0hHME9PVXdUbExCcnNoNXNvRU1HZXppMUU0SFJWdDFpY3A1d1pFRlhkaWJDa0c4WTh2WDc1c2JPNEUwaW9tOXoraGpTaU9meTNEaHBYSXRwVmhFK1VHUWR2b1dqdENobXJHSGY0WUF6S2dCTm5HdHVKeEZDZUdkaFVBZlFMTEs4a0JZQVA2Z3ZGSlphak1HM1hreWN5OEt1QzBxNEV5eW13dHdkeGR2Mk0wbUlCdEswTEtuZjY0MGowMEF1cTRnVWtkV0dsaHMyMnFKYzZkWkNzTDE5b3hubFRKRzRTWVZSSUdwRDhUUEZCdU02T0VsYlMxcGxkaWQ0bUdBeU42Wkl1cGJDNWJYSk45ZmRwYlRoU3hMVWFJOElHMVhJWUJ4VzNUanM2S1Fvc0tjeGZ4Y1FtZG53UkdNMTBHbkZjQ3kyWFl1bkxNeUFrZGdrNG1lUGljenNMeWd0aGNCdXQ2Z29PcVM3WVZGWEFETGphb3NCNnM2b2ZjWldBWlNJUllxU1VraXpZd3R0WWFiM3ZVT1E5dzJIUnhJSWc4V3dSVmVFNjh4aTRVdEwzelJwaHhwbHp3dVpyY3FZQ3ExSTNqUEk1ZG5KSXlnRW9oTWJQcVZKU3pyd3p4QkpUczV6TitSZVVTZ3hpa1BRVkYzSlZCZU5ReGJIRU5yRU1OdkVkRlpWVjlsSDkrT1JHRXNOWlFweVROYzRDM0FHN1hGNG5nenErRHJPMnpidWFhT1hnZGFGY2RrRW90b1NGQlZYMnFKMEM4T1daZUc0S0dscGdoQTBYZlRPUENxVjJxcXdRMjZRV2ZGMlBNTGhJMncxbFZBYTJhUHNZZDB6YTI1TVFSd2djWk42dVFEQ2krWnhpRDRYRU0ya1p4T1Q0MUZuWm5hUmxjcFpvdXpsUnFxZGJRVldvcFFvU0I1OFJWNTBsQk5ySGkvQXdYUzVMcndEVmxwWTNGYzNCeWlZR2M1MlRyaXN0NmtPWGR3SW5BUXRKcHA1UWNoeWFxdVlPVjdTdStmeFZNYVYzZGMwUkUyUzZtVVkwZ0x0MnBNY1lxcktJUTl3MmwxZ3BRVU10UVljbW1idDVEVE54ZGhuVUNqUXF0Yks5U1VTenZyQzBtbWhoRTFlMkZTMitveHlweS9aQVN1dGttdGp4M3ZjQkMyNFBYNjVuYnFrQkNSaGZqUzlrSVlQbmVlOGNNYWdWT2hJLzNUMWZBbWR0QVdac0Nzd1RKQ2tRVk5hMHFXS1NLUE9wSEFVaEQ5RHJiVmN5b1lrd3FodmgxN3ZZQWF5WExReUtHWWR4bFVERnA0OTRyQlhSallnTzE3RERZZXROSVVqL2V6cDZTMGxubHBFd3NXbUpNa093c0tYZVpLRUFqSUhuMEVRSklTYVJCY082VU1JTno3cC9iRWpqbnc0ZnQreG1EdmtzeFg0RzJySXJpczdxYWVLd0FGTVAyT2k3bjRjcml1Wnd0cFNVd3BmTHhTbk9SU3JJcXVzYzVaRmFYeXNxUldqaVoyRHlBV0VJTDM1dFZTb1FFbEZBQ2pPZUdHU0U3QUhFUWdkby9MU3ZDT2dHQnZreHNtRGJ2bFMzRnA1dmhhQjJUQUdxUktyS0tNcmhMVnBhR3pFVmpaME9ReERoYUNUQStReVJSMWQxNWFRenJKbnRMM1JpYnNpcGpHNmpsZ0w0eXFiUzBzTllnMWU4NHZoYkJWckVsSzY0Q1VjV1lYRGZLeGhwSXV4aVZKWlV4c2JNeS91UkJLVE5SUTRrUTNMZFJZTFMwckpqUlBsVFBxWTZnZEpzRURjK2FRWEFuK0hnc05VQ2JSdUYwT2owenduQTdiV0RrYmhPNUVuczAwcWVRaFMxbGFCTWw1TS9jQWF4c0xGOHJLeXFsK1RmN0VMTEVHdS9peGlpbWRDdm8wVGpmcGpLd2FnZ2VuNGVoNXY3TG9rTEtiTHV5dkhoY1pHOGRoR3JFRHg3SGc5M1pwcEpGN3FCcU8zaVZ2ZVhFRFFOSW56ZW9lOFlxNmVQYVpCWjJKdmlNM1cyVUFHb3Rla1JDQUdxNEVrRjFYM0RPblIxMXlSc0JMMXRSYTBQVmNaaU5GWFoyYzM0RnNrdm9tSW5RUTZsenBKb1piSnhrNDNOd0tKRkJxdUpTc3JCeUh5ZHhLT25UeFFBU0JtUzNqK0pNbnNIU2xhM0VjNks5VldvSlZuOXpmandPTTdocVlBQXFKUXdFMmEzbkE0OEoyUUdlZ1JrcFpOaXZTWSt5czNFa0tkNG9KSXdzdklIbDNjV2dMdDVrNE5INk9tdExXZHB1ck9rd0VNdXBZYzdlTXREUmhPY0kydWk1SmhWSXpYekx5dG8vR0FQdVpveW84d2tvZHVWZ0pnbEN0N09oR2JnSUQ0TXE0c2krNjN6VVMxRnVGRlhGbHF5YWoyZW1IbExNY0JxWXUwRk11UjI4QmJCN2xPeFJNU2lDUVhGaENLdXdraForcFlEaUdTZ2JzS0tWOE1pU1JzdUhTSVdNOXJrbFJpSWxaWnVxWGpzUUs4b29ZSk1ncTNKS1dWa2hIYmhzVnhGVXp0aE9XUGtZaWpjYng1NElLc1NkVCt1THIzY3JHS3lvWWdGaUdSOWlCazRrZmxvVVgrSklsUVJRcWFibXBnbmhxdHBRcGI2UlZRMVdINURuclM0aEVvR1pxYWVyUTJkaEZiejhYZVB4U2htRGJvNzBlSVNqb29yTzJ2SzhTSlhJNFNVbUVVNHpXS0R6VUR0V1RZdzd4WGxiU1RFajRGUmc3ektuS29HUkFMdjBHczlUZ2MxQnBDeXdHWlJRQXRxVnoyeHJCY0FNekVwZlp3RlNhMkc1VzBRQkZqU01hcFdBRUZhM0hjR043Q3hEekVDeUlrSjk3cXdycVdOVFdWbzg3NlBQc2pQa2oyd3Zncm9NNWxMWktNRVRLVnFsL0N2bldWRmlGYS9TekpVUXdrb1pzcjY3WTZ2bFNSVjMvMnRtTlRPWTN2bmF4WXdNdW9QS3FkelIxdzdJcUh5bWxQeGFBVGhmVTdLbzJaWFlqNEFZSkhMK2tOZEt3UlFZRVNUUmE1ZnNVWi9yVkMxVE1UeVdWeVlvcU50dXphSHNNeXYydHZvYXJ4ZGZxd1lnVTFheEZvL2NucWwxRkdzcUsrdUFST1Y4Qlg0R1U4V2NaVEFUaTJxN1FjeWkwTzBWK0doV0JNTlJVa244SDFTc1dWRTVCeTNHaTBFQ3FVZUpvQmZBdERhNGFta2RYRzM3QUdQNUdnZWI4NHA3VWF6cG9LUnpkRnplUThIa29IR3hwckt5L0hwbTV0MTJwNDdKNnhUWURFejd1SU5FWFN1eFlYdkZza1lBYyt5U3hIOXNmNWZ0S3pVNklid1ZCY1VHZzVlNUZNQ0VYU0VyWlIwd0dheVYxOXdvTTlndVBqVHFKZFZUcVI0dUU0bkpuTGxkV1ZrRUNDWkxkMlZMRit4dGFtZXg3SXBpcmlTRFVwdnJwbjlscndHTUNIeXBwTUgrcHM2TElMc3VGR1VqMVhFT1hpcWJxU0hQVUtuQ2xwV1Y2OGtxdFVSVk5EWTRUTmFvY3lrb1llVFU1bmdHRVFhL1MxRG5uRTRBZVhNY0tqSFBBbUZWakNCRU5hZXlMVk5IZnIzcHg4eFVzdEo5NGhJcGZINEhLRS9lRGFBcks2bFN5VlZGYmR0MWd4VElWazNwcHBWbEZYaTRwRWhWQlRPYnF1b2hVODVNTFhuMWlhaHZVa0hKalNDTWMwMXRMRnZlVlZCeDBEb2RNNmpmdEN1N0RPdEl6WXhyYzBxcDFKR1AyYXlZRnoyR2I2SHZNck84Y25HdFY2R2ptM3VJbVNmRDJHcFdLNnVvd2JaR014RktRQ28xcE9NdGNNWEZwUnN0K2hYR29Bb21GM3NTVEJHZ1RnbGJCS1d3c1EzdFpxYVlTcDBaMUNpbVJEV0ZjQ0pVUFlKMDBCSTVGa0tZTm9pZnVReG1OODhTV1ZYV0xNYVVxcXFnQzBCbVFKUjZzazN1OU5DZjZqWUxYeEFmcXNZRWdWTEFoUlkyQXRndGZsWk5GbUZ5aHhkckxrQWRXbGs0RDg4TTJpeEh5ZXBJZGhNSHJHL2lSMVpHdHEwTUdwYkRiUlBZT1hlU1kxTTZOeTRac3R2R1NrdEsrWGJGUEFUajJEMzcxc2FQRXNBTVhoWHJzWjBrbS9YU3RraGhNeUJmc2E2dVhGWmUyVkNlK1lNcjErR0tnd3JReU5ZcTFWUnJCK0VpekFvdzZOc2ROS2N5VkVrWWVNNzN5czZxNGtBSHA2QmlGa2xUa0lyVkM1b1lWN3V6d09HQ3o0VUowU3RxMmxXTUp5NHd0YitSZXRMNnRaRmljbkptQnc1VWpDdlhYTVpWSlgyTVFrYmYrWE41RVdkNzhWejgvSkVzTVpUQmlLTnpzbTFpbkxSVVE3NEg0TmlkYXFJNjhqNXNBRmd4Y1J2ZUM3aWVMSlhmUVl4alpaMkNzaVdGZXdaWEptQklsWjF0ZHRyWDRoU3VhdGVLc28vUlpPdE9LVzJubXExb1R6ZUs2ZFJXQVd1Mk5SVmI0aHEwU1htMUd2dHVnSHJicjVJWHFtU2t0ZzVDdURFMk1TbFB3c1k1a05FMldwM0FxaVpiV1ZMQXhpQkYrMmlCWmJ1Tmo2TUI2cnNNTEM3Rnlhc2FZRHlvN0trb1B5RXR3M3BFTVhmUHZ4QUppMmpBUVFnanJ6MHJMSVpTV1psSW9OaHdkNXhLNEFSOW1ZTmpXQWFMcm51SW1KZUJWTjl6Qk9ST2JWdmJyK21UVGZGU0VKTFNSbkhvN2hFSm9JaThNRnFqeG12Z21GNVVSWno0ekxGZ1paOEN0dTJYN2dnVmNjS205Z1Z4SXNPSHF4WGdOTUtuRldaWW5mMWRCbk9oYXlYcTE3UXdGbFdXMDllTkt5VkpGbVhxYU9OR0E1YUNlZ01iSjNVVWtHWTFpYzNuS1dnanE4cWZWWUdRRzFnUnQ2cnM2MmE2SGlxcVVPcWRlc0s1Tm1YNG5Hb2ZKb2lFMWQwZEY5bFZWa3ZUMS9rRUVhYUNvWU93RnBjVmNvTE0rNzY2OVB4QzlyV3FrdEgwc1dVWWxkMFZDcHVCWi9zdFZSY0dneTlXWDIrVTFRdGhpOVN6QXFTeHpac3krT2lGekJZbnlTR1Y2R2t1NDRyRDhCQ09aQlYzQnZENStBS1JITndNRXNCNkV6SG5KcGtUQWVpVWxFR2tjRUNlQjZHRFpUcDVZRUpUbHZkcmtueFlqVGxsTWtmTnRYd0RqTTd1VmpLNUpYVVVuNDNycnFwSzJqeXRheEhXME01RzhEQzhydEhNWXM3S1NnZHVWUU1HVFlGcUZ2VlM2cmtEM3NESjQ2YWZkWUZ3b3ExMUFPS0NCTGh2d29VZ2M4SUdBTnljUjZrblpyZEpQZHN1eG55amZkM0ZvdlRsUk1kRWR0T2w1Q01WNUVIc1hRQmlzN1RPd3ZJRFphR2oyVm5wYmg3Y3BLNjNWd1lFTUx3cWJqenlsNjk5c2F3RkZrRjF5cWpVVTMxSGZDNnNXMVpGVkZ1WFZYVmd6OWtlRWF3MHlzMWxXZm0rYXpRQVFTV0EraEtZVmZzWmpQbmNBY1VCOW9JYXl5L1VaWFJOY2tER2ppNzdHc1didkJvNnRQcldQcU95VmtCVXErSU5lcXB6TmRZcy91MGlmaDVxbXBxSVcrMzNKVlNVY3dZNzBLTDRVOWxZZFU2bGp0U2xzN2xtZmk5ZzNZemVRZlZrYUdGYVYzT0RDbmFEMk44d3NFREZrbEUzUnpNM1pnaGRZa1dIc3N6cTcwRkllY25La1ZrdDhlek16UnE5YmtHdUtvalJMQlZTb2QzWTF5UHFLZ1lXN0pSUVRQVnl5NXhJWUxqT2d4Z1Q1MlJLSlVZMWRPcklpUmQ0ZnV0UXgvQTVBY1NtRWp6MHZGV3JrTHp2YldBdTlIT1diR2d4RmsxVk5UcG5CS2s2VGd3aXNJL0hjeFlYUDF1QVdPNzJVTEZsQlRxK2FTdTJWVFVzNmhyeE0yQ0YraEVvcjFWSUE5Wm1GVWFhYjFsU1NnWnNWczRzeHpIbFZMb0pIcjlINERoT05Ua0kxWEMwL3dpWTJOb1dBRzVSbG5IRm5xNm9MY2NwUWRkTXVKL08xN0pWQTVPSExpMEJxQ3p0cTdZMSsrdWNDZDk4cUxJOE1JSEJWL2NLanhRVG1lM2hGQlMzTXlDcW5Ec3V5bTJvODBIanZGRlR0clVSbU5hR0pzbVZhaEltalRzVVhLdFFaVEFWczdNdnY4LytmelVyWkFYY0xKNk00a29lNlhQMGI2U21XV05EenlVcFE4YmwrTHRXeDR0dXFaMzZjUllWM3l1VnhQTnd2SWlxaVFDU211N3NyZ1R6UjZua3locENhclh3RnkxdkdkNWlQMmNZMDZsRnI1TmpoaGcxWTYrTkIyOGZ0Yks4M3M4cmY3a0xKYkt3REZQYkxnMjVhMEFkWkpFaXFyNXBoaXhLTURsUlV0Y3NzcTFocmlMcUdvSCt6ZU5nVm05T2VtanNFVFY4SmRGME5IbmtJRnhXWTFPQjRZcnA3cnRXSjdOZ0FBQVBYa2xFUVZRM29OczVucGx5VmY4dTJGb0x1MUpySHZlYVpXUWpxQWtzaHRGYTJnenNTRzNacGtidmczSGFmRjlzbFBQbGxkakZsSzgwR3lzbThNcjRNUGhuZU5XRU5QR2pBSXBtaWxUUEFUZFRSVFhsQ0JZSFlBUXVQd0EzNnhJcFd0R040cTNZMk1oaUdzVXB1U1NubEVKUkQ4UG9yQzdDRllWdytGNTFxVGhnYWJ4c1R4V3pDR1kwWlNzYjNsZnFBeTBPUE5qTnk4eGlRUUtzSFlGUTJIQlpWdlZiQnVxM20xb1dLYWpxYW9uc002dVpVcjZDalhXTlowbDVFM2gzalVSbWE2a1AzTUpJaXkxTG0ra2FoUXE0MU4yaVpqYTVzanRsTFlOWkhackg2cVVHbTR2TWJEcDZSdzJDRm12dXlGa3JCY0N5TXRGcUJhRUNtc0hvSzlCWjJMQS9sSmNScVNhRHFuYVdiclpkR2F6M0RMZ0l2QmxuNHdvR3p0YnlKR3FzbHd4a2hoSHJUalRZRlhDdE9vS1M4dUxkb2ZWZEFiT3lsR1U2bmxZcFhXWnRzNG5YQnE2V3hKaXRNTm9rSFVKbmJuSnBsUW0rYUdwWTJhNUdNVjJRRDFoUnViQlBGS2R1bWY1T0hrTEh6MEY5bHVFNWtqQmpSYTBuRkU1Q1VHcUh3MzJNbWpaNnhrZ0lOVm5TbloxVlpTdEsycUtsUmFMbFFnSzd1VHE3SkZYSndNKzNTT0VLeWhaTkkrdEowSTVxTVl5OWsycUpEN2RWV2RxS1hhMENLTlIwQ2NqZytCMklZdTJmY0JaSlprTUZnTTExcjBYOTJ3aWxnaEZHZ3pWbmV4bHFCN3hMOW1TMjlTaVlVVlkyblhPWmpOQlJzeURzUVBSV1c1aHJaNFhjZEM0SFZXUmJqZ0pyNHNGb2ZLNVN6alE3cmhJMVVlYmRQZEViajZzcUl2VFpRWjV2YTA4ckFCc0FXMFV4ZVd5dEFrN0EyS0o5WnB4ekNpb0IyNFhGdFlBZVhZeHI2YW5TcWhMZ3BwRXFXYkd3THVuVGdyVitJaldsTDI5bGphQWw0RVFNR3NFcnA0YXBlWmlxdXdSWExYQXFPQ2VydTMybW15ZGM2b1dUU1dwRkFHZHplVEI4UlRIVk1FdGxNOTBDYmJRQ1loUGpxM2VnWXIxRkdkWUlRaml1REdaNXpaL0F6b2JLR095THh0aTZjNFJ3dHYyYW55V2xMSUNubExoeEpSWHQ2QTVlYkRCV0ZOT05ieFdaMmQwMm1udTRTOVlFQ3BlcHBWMXpTV1JCV3hIWXpWSXYxQ1hTb3V3cXFYM2pCQkJEWmRZUWJwVFFXNFpRbFM4cjVrSDRzdVNSbWcyKyszSk4xMHgxUGFBbUVrbXRZbEVkZUdwSkVNNmtPdUNxQ1IyMm9TdWpqNUlWMkhkVDB6ajVwckxLVGpYRkFQamRRbHlxN3hJQnhBUVA1eU1jekc0VnhBS3cwbjZpbFoyUUJjZTJwTHVsa3V4eHFub0l6RmZncXlxamlsOVMxVk53QnJGbWV5ZW9wczh5T2paVXliWmRmUzhDdWFUSUp1bXpzNXRPRGFOdExwRkRRL1BjSkd3ZUxobWVMMW5CMEtxaVVEU2NzaVVWRDg5RGkzSHRyS3RTVUx3M1JMaXlnWkQrN3NGOEpUT2JnWXNyR3ZETlVGUkdsMWl5MExsMVlrVWMyYUpZTW9nOTIwSThxVzZZRENnMU1xazBKSEpGS1hrYmdiUnJlSStxcFlOT1pIclZjRFViYTdwanNwaFNKTnRLNnVwZ1JOQVZvT1MwbXVnQmVONGJJWmdIaHVQWi9zMUVOYVg2S3NWcitZTnJoMU5iN2lwUjBQRTV6Yk5SZWdDYnJIUlV3NllmMDdkTEJKbDFmOEtCOWFzMlYxbk5xQXNsNjJMQkJoZWh3YWxlcmtIbUIxSkZJRVpLU0V1c2RsNUpRajFuSmxIWFNDRjM0MmdKOUNZR3JYZWxrbkpJWHFWUDhzRCtxdHBsQ1IzWEgycWZLcTB5Z01wK0tuVmtLeE5sWjhtMllrSWxWTWlDblhVd2w3cXpuQktTdlF6M20zUHQ2b1FiWE81YjVGaXhDaC9mSHhVUVcvQUVjSzZ6Q05xS1FuTDlzeXdxbUt1d3ZxU1l6VC9hUFZOTnBWeWh2UlcyMWFxY2lDc2pkV3ZCd0lMVXZoNVZ5Q3piV29DMXBKako2ODBDV3NsK3VkS0I2VDVSd0cxbWxvaG5scGJnNDdpejVVOWhhMEZHdG1STEZZQnRPOTl5OTdBcDB6K1pEVEFvZzZrU0xac01IZy9JRmtrZ3A2Q3B2VTJVMGNZVlNkbm1randCZE9tWGJ4VFdOV3p1SWJpcE1pb1Z4RWNrWkVvYWhTT2l5Mk0zSzBqY0MxTGhWRHdhcUcwWnZrY1dxQ25yRzRHSXh5a3JxbGJXZHc2TFF5QmFaUjhIbUxSSWhRV3NIc3dENDJaWFZMTmtmOWwrRmxXMEhWUTJsd0ZzQy9aMUZkemxRUjBLYVBmbytGZGZ1Ky9kd1ZSSUN1MUNHUjdBRUlpQWhjK0FaVUYwa09CYVB4bVVxZzRpNjR2UW5VNG5GRFlKOU56KzFmVlh2ZUg5cW1yK2tQSUx4OG9LY1JWL0JGYnhiRTBKTVQwa1NENHc2TC9sTlk4b2NzcWFnVmRVM0EzTWp4aHhjR3VxenNQSDRpcnBhb3cxcTZPeXJWanZwOU5wYzU5RTkxTGxkYm9ZVnpKV2RpbVdmQVcyU05FS2NEYVgyRm1CTExBL3VLeGxtaGg2MTNJczFVUlFBcGJLZnR0d3hMMDJxNk9ueDVwUXhTYlBvakFnK3Y1aEFuTjZMSFZSRFhJc3ZLdFJqaVMwcUpVeVpUQVhWYkFLODJFbEZKV2FRZFZvcVVDMVVudDdCVmFUUXVkTTZTdXFleGpRSk40KzBpY2F4di91dGJLdjgzRVRiVDhIOGdqY09LeE9KbWJVYTZPT1ZYaHQzZEZZNnJIdjlYb056RkxjZUVBMW84K3BLbTBMQUhQSFoycllLakZxMGhmWkZpeHNxSEpnRDNlRDVuK1Uwa2IxbUZqWGtuMmx2TVNTT3NORS9DZElBS0YwU3l0cTZ1ck9IVU41Z3dnNEdab3NnYm1nZ001dWNyYTJxclMySWcxY2JpQkJjeFl6Z3pVRE5MQ3ZMOEdiWlhOcDZPUnkzTG1TK0trODN6UklBSzZBMWlvS2EySTlOYXBJdWlVRmRmQzk3NjZQRlpVdHFVcjZLYldrK3paVTFhL1pySVhFenRyalRPZno3aHdLemlDZVhJYXJhSHRiWklNeisycEdnYXpDbXc0cVdBRnZFZGhvZFlwMFhxMHBWN0cxWVdZV2JPNHFoR3E0MitaOEJZdHJMV3ZsdU5QcFpBZWFGRlMxdnViUGdiZ3hzcWNwbkFhc3pCb3ZLYUZvRFE4Qkd0amZVT2w0TkFHMm5tUVYwNGZlSmd1bXZYMmZzclFFV1pnaEwwSm5WZFlrbjNET1pJZVJOODZScVBXQ21zdkdWcUVNUm53eFFBeHdTOEVNWW8zSXptWTIrQkNjTHA0TUtpdXl1aEltYW1sYlpGY05vTmw3dHArUkhkMThaalFJUkt5WGRGUmhOOTgvaHlLcXdYV05vN08xd2lhWG9ITjEwOFJFWlpXRXE2Z3JuSWZqemVnOGpkUmYxWEVMNGtrWGE1YkJqS3hvS2FsakJqZUhsVnhRNEdheWNwVzRsRE9BS3RuVHhIQXRPZnpPdFp3SEFNN3NxVlhrVjZ5dTZrYXAxbkhrWEtxV0YvNFhIcWplbk5LcUJqcFIzbDFjaDNFamcxK0VzZ2RRaHNkRzBCNEZNOXNXQVZXcHVBeWl3VFBsZVp4dDlWeVpWUzJxWGZSZVdxVEFpbHByOUFwb1dUanh5bWl0N053VjRKVHJpWnlPQTlCMGs3SEZmVUxvdXJtS1lIVm5SUXZxR0w1SE1IZHFGY1IycVdwbWNLNmVUd3gyZGlwV3J2aURpbHIrZktXcTNPV1JXZEhLd0E0ZXU4d2pjaGJlUnpGaWxxampaTjN1ZkNwZmtKMC9zY1ZwbllrNkwwUEk3N2x4ZFdDWjg3V2lXbTdCL0FHcXVRU251akdLc0I4Q0ptaUpxOHExcEtJVld5cU9pVEs2NnIxOEJOOHI3NC9BRTcxZmRDM3lQUzJNeGRPcG5FMXRsVnhEOUptVk9vZ2dOK3I0UGpBWFZGUGEzRWc1alZKR0ZWVUdOb2xIMjBHVnJVQjdCT3lTV3E2V3FZUWRXUjkycGNGTVlNd2NrYlNnQ0tDcUQ2N0RpaVd1MWc4TVFDOUJ5ZmNGcVcxTCtqTDcxNHFOQ3V6bm9TeHQwZGEyZ3RXTjFHOEYwQkswTk4wbnVpbWVsVUY5ZElkQWZqTzQ0VVQzQ2pRTG9VZUxISkZUTzNnbXBSdUlJT3Z3QlFDYnFOZW8zcXRaOWlGNnhWSzEzR1JsbzR6cWltcStDR2RUaVIxdVJZOG9xZ0UwMmhaQmE3OWtaWFBNcXV4UkhLbGEyc2FaV040bVJxWlVqMHZMQ0toa2pLbnFPUUhOdVNaVkpvS3ZBcVMxd3BFcXV2V0RDMUIyeXB3ckNQc1JNRVBWVE9ETUxKTUR2NnFlS1h3aTJKWVY1U3E0cUt5dmdHc0hDTGl1ajJqUjU5VjhnTXFTSjJGSlpSWEVIVlJIajNzRlByY3Q2T3BxbFcxR3BhdFFkdDBHdndmTTZuNjNJbnNHVkZoSkdhQnFncXFJVjZJc1hsbFpneVNQcTRSM2JudDN3aTVjditjTjJ5cVFMVzFUOTVLWVZzV1d0S2s0Y0I5VzUzV1FRZmxRWVI2V2w0SGFKWmp2VkUwRDV5dnErUktnWkNzNXFkQkVQNXNEOTRjQXZRTGxTZ05hU01BdEh4ODhCdU5RNDF6ZEZzWDMwektiY3MwTUxEL2loa3BRemwwd2lUcUtMVGZiS21DbXlZSUNuSzBJYmFpZUM0Q0c5aVN5TFE3Y0lNR1F3YXU2VEtvcTYwQXBsM1dONDBMWnBjYTFDS0tLOVZReXlJRW44dzBGOEY2Q0wyaDhvM2l4R3dDN3M3RVd6Q09xbWNBcFl4WUQ0anNBelZTMHNsMnQ5OHBBN3ZyS29waENWU29uYllwZ0g2bXZTbjI0cFRCVjRzZHRWM0J0TXE1azgyeStJQUR2VUowdUFsa0NWVHhJYVBtK1VOdS9xa1Y0RjFUekhYQ0dyWElBcUl0Qkt5cHFLOTlWdEFPVnM2NE80T2JYN3BITFZDcFlIY1Jtd3ZMUjdUdllBS0JCTjU4TEdWekR1RnoraFFiV2duY1F5Q1pBaytWYnNQU291ZjkzMjYxaVpnbWZDcHdSYkF2cW1TcXJpVTJQd2hqYW9PeVlxdEllZ1ZYVmlUc215dGE2Ykd5U3BZM2d5UnJwSXlBZWFXRER4dHBzWHdLeWFsTURLTlA3WUJYTXFFc2tVc2kydUM4Rk5BUHhBS1RWZlQxbzZWek0wRTBqRisxcldjVXVIdmR5Zzd2Z29GcGxYOEhwdkhwTUNPTVJVUEh6WmtJbnNxbEZLTlgvRUlPNTJFMFN4U3pPd29iMlZtUkxXNUQxWElVMHJiZ00xQXpXZ3lDN2ZlOEc3eFVBSy90YUVCYXQ3bHVxdHlQN0Vtc2FKUU9qNUYrbXJuWmZDdVlDZkJVQVd3U2h5ZDZwTVkvdkFIRzFVcU9ZcGJJL2d5NVQwQ01LbStVTzNnRnVDODVkZ2ZEVmVndVBEZklUcklCTHNMcmNnZGgzQ0ZnRlpqYUtKNEl2M0Y4QU5FcXZ1eFIxdFZLT2dMb0NhMWp4Ym9CQWtqNnY3ai9pY0ZiQTdmNHJmUm5RRExSVmlHMTNpMHZxQlFyWVZxQmJBRFpUMFpwaUhvU3p2UXBvcEtJRlMzc0UxSGZCV2xIWGQwSDdMbkFycXZvdWdNdGxqSEJnWm5oM0Vvei9CS2pMTUw0WjJBcTAraEVKcjlqYVZVQmJ2TnpDSVVpcm9DN0FXbW1GdzRvNUFLM010QjVWeXBaTVNGZ3MwNUp5R1Z3bHdCcXNFR0FBYTJaVTFDalVleFhHc0U0cktyaWlsQnZGek9LS28zQXVBcm9FNlFGUVUzdThZcE5Yd1M1aysxVFp0NVVyd291TjRLaVVFdytrM1pXRHAxUlhITlJxWGIyMVRzMzk5NDV5WlNnM1ZuWkZOUTlDRjNYZVp5cjVEZ0JYS2l3Q01hMk14ZVREWVhnUDFGc2Y5UU5LWmMwazgxUkprM3I2RVEzckNtQlZ5TEw3NUVqWjFwSVZESG9GdGlPQUhvQjBCZFRWeWxxQnNLS0tTK0FlQlhKVkxZK0NYQVN1R3ZPL0F1cTdHdUVqRGZHS2cxb0thMXovZG1taTlJOVNVR05obDBBdGZ1bEhBYXdvWXJuU2ttTlhBVnVHRWhyRVZYdlVGK0E1Q3QyUHFOT2pEZXR5bmE0Q21lVW9sbWVYTE40QXE3QzVTajEwUTd5amdsK3Q2Q054U1JIbUk1WCtDcHdyZVlCM1FmZHFuYTRxMjFLZEJ1YzRHb1pzbjQ5Wk9PaVZpbndIcUs5V3pqdmdld2VFaDJBVTUrdnR4WjlDZDlXcWtoNDlWMThFNW9qNnZWeW4wUlN0QXlHSU81ZWRYUktkNUIwVkdWWHEyeXIzeFlwKzVVdCtDNFFKNFAxTjMzOXBRTWpSZWpqNHZiL0RjcjZyUWMzTy8wcmptdFpwZVlDQmlDSGZDZW1SYk5oYksvcE5VUGMzd2ZLeTVmMkQ3T2xMMy91UGh2ZS9vVTRUMEY4ZitWTk0ydnlvaXYwaksrS0hRZmRIcSswYm5jejRvejczLytZNkxiS3cxby81QjdlT2YxUmwvMGR1OUI5dG4vOWJ2cmYvait2MGg2dHRuMnRwL3IvNDgxOXk0L3p2NTM5MXV2enpmd0RpZno2cGhUMU1QZ0FBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTMwcHg7dG91Y2gtYWN0aW9uOm1hbmlwdWxhdGlvbjt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3N7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6MDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZTttYXJnaW46M3B4IC0zcHg7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uY29sb3ItcGlja2VyIC5jcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzOmRpc2FibGVke2NvbG9yOiM5OTk7Y3Vyc29yOm5vdC1hbGxvd2VkfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo1MCU7Ym94LXNoYWRvdzoxcHggMXB4IDVweCAjMzMzO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwcHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTVweDt0ZXh0LWFsaWduOmNlbnRlcjt0b3A6LTVweDt3aWR0aDoxMHB4fS5jb2xvci1waWNrZXIgLmNwLXJlbW92ZS1jb2xvci1idXR0b24tY2xhc3M6YmVmb3Jle2JvdHRvbTozLjVweDtjb250ZW50OiJ4IjtkaXNwbGF5OmlubGluZS1ibG9jaztmb250LXNpemU6MTBweDtwb3NpdGlvbjpyZWxhdGl2ZX0nXX1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6VHR9LHt0eXBlOnljfV19LHtoYW5kbGVFc2M6W3t0eXBlOnhvLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lc2MiLFsiJGV2ZW50Il1dfV0saGFuZGxlRW50ZXI6W3t0eXBlOnhvLGFyZ3M6WyJkb2N1bWVudDprZXl1cC5lbnRlciIsWyIkZXZlbnQiXV19XSxkaWFsb2dFbGVtZW50Olt7dHlwZTpJdCxhcmdzOlsiZGlhbG9nUG9wdXAiLHtzdGF0aWM6ITB9XX1dLGh1ZVNsaWRlcjpbe3R5cGU6SXQsYXJnczpbImh1ZVNsaWRlciIse3N0YXRpYzohMH1dfV0sYWxwaGFTbGlkZXI6W3t0eXBlOkl0LGFyZ3M6WyJhbHBoYVNsaWRlciIse3N0YXRpYzohMH1dfV19KX0pKCk7dmFyIHlmPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyKXt0aGlzLmluamVjdG9yPXQsdGhpcy5jZnI9ZSx0aGlzLmFwcFJlZj1vLHRoaXMudmNSZWY9aSx0aGlzLmVsUmVmPWEsdGhpcy5fc2VydmljZT1yLHRoaXMuZGlhbG9nQ3JlYXRlZD0hMSx0aGlzLmlnbm9yZUNoYW5nZXM9ITEsdGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZj0hMSx0aGlzLmNwV2lkdGg9IjIzMHB4Iix0aGlzLmNwSGVpZ2h0PSJhdXRvIix0aGlzLmNwVG9nZ2xlPSExLHRoaXMuY3BEaXNhYmxlZD0hMSx0aGlzLmNwSWdub3JlZEVsZW1lbnRzPVtdLHRoaXMuY3BGYWxsYmFja0NvbG9yPSIiLHRoaXMuY3BDb2xvck1vZGU9ImNvbG9yIix0aGlzLmNwQ215a0VuYWJsZWQ9ITEsdGhpcy5jcE91dHB1dEZvcm1hdD0iYXV0byIsdGhpcy5jcEFscGhhQ2hhbm5lbD0iZW5hYmxlZCIsdGhpcy5jcERpc2FibGVJbnB1dD0hMSx0aGlzLmNwRGlhbG9nRGlzcGxheT0icG9wdXAiLHRoaXMuY3BTYXZlQ2xpY2tPdXRzaWRlPSEwLHRoaXMuY3BDbG9zZUNsaWNrT3V0c2lkZT0hMCx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXI9ITEsdGhpcy5jcFBvc2l0aW9uPSJhdXRvIix0aGlzLmNwUG9zaXRpb25PZmZzZXQ9IjAlIix0aGlzLmNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c9ITEsdGhpcy5jcE9LQnV0dG9uPSExLHRoaXMuY3BPS0J1dHRvblRleHQ9Ik9LIix0aGlzLmNwT0tCdXR0b25DbGFzcz0iY3Atb2stYnV0dG9uLWNsYXNzIix0aGlzLmNwQ2FuY2VsQnV0dG9uPSExLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0PSJDYW5jZWwiLHRoaXMuY3BDYW5jZWxCdXR0b25DbGFzcz0iY3AtY2FuY2VsLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcFByZXNldExhYmVsPSJQcmVzZXQgY29sb3JzIix0aGlzLmNwUHJlc2V0Q29sb3JzQ2xhc3M9ImNwLXByZXNldC1jb2xvcnMtY2xhc3MiLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg9Nix0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlPSJObyBjb2xvcnMgYWRkZWQiLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcz0icHJlc2V0LWVtcHR5LW1lc3NhZ2UiLHRoaXMuY3BBZGRDb2xvckJ1dHRvbj0hMSx0aGlzLmNwQWRkQ29sb3JCdXR0b25UZXh0PSJBZGQgY29sb3IiLHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPSJjcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzIix0aGlzLmNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcz0iY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcElucHV0Q2hhbmdlPW5ldyAkKCEwKSx0aGlzLmNwVG9nZ2xlQ2hhbmdlPW5ldyAkKCEwKSx0aGlzLmNwU2xpZGVyQ2hhbmdlPW5ldyAkKCEwKSx0aGlzLmNwU2xpZGVyRHJhZ0VuZD1uZXcgJCghMCksdGhpcy5jcFNsaWRlckRyYWdTdGFydD1uZXcgJCghMCksdGhpcy5jb2xvclBpY2tlck9wZW49bmV3ICQoITApLHRoaXMuY29sb3JQaWNrZXJDbG9zZT1uZXcgJCghMCksdGhpcy5jb2xvclBpY2tlckNhbmNlbD1uZXcgJCghMCksdGhpcy5jb2xvclBpY2tlclNlbGVjdD1uZXcgJCghMCksdGhpcy5jb2xvclBpY2tlckNoYW5nZT1uZXcgJCghMSksdGhpcy5jcENteWtDb2xvckNoYW5nZT1uZXcgJCghMCksdGhpcy5jcFByZXNldENvbG9yc0NoYW5nZT1uZXcgJCghMCl9aGFuZGxlQ2xpY2soKXt0aGlzLmlucHV0Rm9jdXMoKX1oYW5kbGVGb2N1cygpe3RoaXMuaW5wdXRGb2N1cygpfWhhbmRsZUlucHV0KHQpe3RoaXMuaW5wdXRDaGFuZ2UodCl9bmdPbkRlc3Ryb3koKXt0aGlzLmNtcFJlZiE9bnVsbCYmKHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWYmJnRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jbXBSZWYuaG9zdFZpZXcpLHRoaXMuY21wUmVmLmRlc3Ryb3koKSx0aGlzLmNtcFJlZj1udWxsLHRoaXMuZGlhbG9nPW51bGwpfW5nT25DaGFuZ2VzKHQpe3QuY3BUb2dnbGUmJiF0aGlzLmNwRGlzYWJsZWQmJih0LmNwVG9nZ2xlLmN1cnJlbnRWYWx1ZT90aGlzLm9wZW5EaWFsb2coKTp0LmNwVG9nZ2xlLmN1cnJlbnRWYWx1ZXx8dGhpcy5jbG9zZURpYWxvZygpKSx0LmNvbG9yUGlja2VyJiYodGhpcy5kaWFsb2cmJiF0aGlzLmlnbm9yZUNoYW5nZXMmJih0aGlzLmNwRGlhbG9nRGlzcGxheT09PSJpbmxpbmUiJiZ0aGlzLmRpYWxvZy5zZXRJbml0aWFsQ29sb3IodC5jb2xvclBpY2tlci5jdXJyZW50VmFsdWUpLHRoaXMuZGlhbG9nLnNldENvbG9yRnJvbVN0cmluZyh0LmNvbG9yUGlja2VyLmN1cnJlbnRWYWx1ZSwhMSksdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyJiZ0aGlzLmNwRGlhbG9nRGlzcGxheSE9PSJpbmxpbmUiJiZ0aGlzLmNtcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCkpLHRoaXMuaWdub3JlQ2hhbmdlcz0hMSksKHQuY3BQcmVzZXRMYWJlbHx8dC5jcFByZXNldENvbG9ycykmJnRoaXMuZGlhbG9nJiZ0aGlzLmRpYWxvZy5zZXRQcmVzZXRDb25maWcodGhpcy5jcFByZXNldExhYmVsLHRoaXMuY3BQcmVzZXRDb2xvcnMpfW9wZW5EaWFsb2coKXtpZih0aGlzLmRpYWxvZ0NyZWF0ZWQpdGhpcy5kaWFsb2cmJnRoaXMuZGlhbG9nLm9wZW5EaWFsb2codGhpcy5jb2xvclBpY2tlcik7ZWxzZXtsZXQgdD10aGlzLnZjUmVmO2lmKHRoaXMuZGlhbG9nQ3JlYXRlZD0hMCx0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSExLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lciYmdGhpcy5jcERpYWxvZ0Rpc3BsYXkhPT0iaW5saW5lIil7bGV0IG89dGhpcy5hcHBSZWYuY29tcG9uZW50VHlwZXNbMF0saT10aGlzLmluamVjdG9yLmdldChvLCRlLk5VTEwpO2khPT0kZS5OVUxMPyh0PWkudmNSZWZ8fGkudmlld0NvbnRhaW5lclJlZnx8dGhpcy52Y1JlZix0PT09dGhpcy52Y1JlZiYmY29uc29sZS53YXJuKCJZb3UgYXJlIHVzaW5nIGNwVXNlUm9vdFZpZXdDb250YWluZXIsIGJ1dCB0aGUgcm9vdCBjb21wb25lbnQgaXMgbm90IGV4cG9zaW5nIHZpZXdDb250YWluZXJSZWYhUGxlYXNlIGV4cG9zZSBpdCBieSBhZGRpbmcgJ3B1YmxpYyB2Y1JlZjogVmlld0NvbnRhaW5lclJlZicgdG8gdGhlIGNvbnN0cnVjdG9yLiIpKTp0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSEwfWxldCBlPXRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEt1KTtpZih0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmKXRoaXMuY21wUmVmPWUuY3JlYXRlKHRoaXMuaW5qZWN0b3IpLHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jbXBSZWYuaG9zdFZpZXcpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jbXBSZWYuaG9zdFZpZXcucm9vdE5vZGVzWzBdKTtlbHNle2xldCBvPXFPLmZyb21SZXNvbHZlZFByb3ZpZGVycyhbXSx0LnBhcmVudEluamVjdG9yKTt0aGlzLmNtcFJlZj10LmNyZWF0ZUNvbXBvbmVudChlLDAsbyxbXSl9dGhpcy5jbXBSZWYuaW5zdGFuY2Uuc2V0dXBEaWFsb2codGhpcyx0aGlzLmVsUmVmLHRoaXMuY29sb3JQaWNrZXIsdGhpcy5jcFdpZHRoLHRoaXMuY3BIZWlnaHQsdGhpcy5jcERpYWxvZ0Rpc3BsYXksdGhpcy5jcEZhbGxiYWNrQ29sb3IsdGhpcy5jcENvbG9yTW9kZSx0aGlzLmNwQ215a0VuYWJsZWQsdGhpcy5jcEFscGhhQ2hhbm5lbCx0aGlzLmNwT3V0cHV0Rm9ybWF0LHRoaXMuY3BEaXNhYmxlSW5wdXQsdGhpcy5jcElnbm9yZWRFbGVtZW50cyx0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZSx0aGlzLmNwQ2xvc2VDbGlja091dHNpZGUsdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyLHRoaXMuY3BQb3NpdGlvbix0aGlzLmNwUG9zaXRpb25PZmZzZXQsdGhpcy5jcFBvc2l0aW9uUmVsYXRpdmVUb0Fycm93LHRoaXMuY3BQcmVzZXRMYWJlbCx0aGlzLmNwUHJlc2V0Q29sb3JzLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcyx0aGlzLmNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2UsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzLHRoaXMuY3BPS0J1dHRvbix0aGlzLmNwT0tCdXR0b25DbGFzcyx0aGlzLmNwT0tCdXR0b25UZXh0LHRoaXMuY3BDYW5jZWxCdXR0b24sdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0LHRoaXMuY3BBZGRDb2xvckJ1dHRvbix0aGlzLmNwQWRkQ29sb3JCdXR0b25DbGFzcyx0aGlzLmNwQWRkQ29sb3JCdXR0b25UZXh0LHRoaXMuY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzLHRoaXMuZWxSZWYpLHRoaXMuZGlhbG9nPXRoaXMuY21wUmVmLmluc3RhbmNlLHRoaXMudmNSZWYhPT10JiZ0aGlzLmNtcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9fWNsb3NlRGlhbG9nKCl7dGhpcy5kaWFsb2cmJnRoaXMuY3BEaWFsb2dEaXNwbGF5PT09InBvcHVwIiYmdGhpcy5kaWFsb2cuY2xvc2VEaWFsb2coKX1jbXlrQ2hhbmdlZCh0KXt0aGlzLmNwQ215a0NvbG9yQ2hhbmdlLmVtaXQodCl9c3RhdGVDaGFuZ2VkKHQpe3RoaXMuY3BUb2dnbGVDaGFuZ2UuZW1pdCh0KSx0P3RoaXMuY29sb3JQaWNrZXJPcGVuLmVtaXQodGhpcy5jb2xvclBpY2tlcik6dGhpcy5jb2xvclBpY2tlckNsb3NlLmVtaXQodGhpcy5jb2xvclBpY2tlcil9Y29sb3JDaGFuZ2VkKHQsZT0hMCl7dGhpcy5pZ25vcmVDaGFuZ2VzPWUsdGhpcy5jb2xvclBpY2tlckNoYW5nZS5lbWl0KHQpfWNvbG9yU2VsZWN0ZWQodCl7dGhpcy5jb2xvclBpY2tlclNlbGVjdC5lbWl0KHQpfWNvbG9yQ2FuY2VsZWQoKXt0aGlzLmNvbG9yUGlja2VyQ2FuY2VsLmVtaXQoKX1pbnB1dEZvY3VzKCl7bGV0IHQ9dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LGU9dGhpcy5jcElnbm9yZWRFbGVtZW50cy5maWx0ZXIobz0+bz09PXQpOyF0aGlzLmNwRGlzYWJsZWQmJiFlLmxlbmd0aCYmKHR5cGVvZiBkb2N1bWVudCE9InVuZGVmaW5lZCImJnQ9PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50P3RoaXMub3BlbkRpYWxvZygpOiF0aGlzLmRpYWxvZ3x8IXRoaXMuZGlhbG9nLnNob3c/dGhpcy5vcGVuRGlhbG9nKCk6dGhpcy5jbG9zZURpYWxvZygpKX1pbnB1dENoYW5nZSh0KXt0aGlzLmRpYWxvZz90aGlzLmRpYWxvZy5zZXRDb2xvckZyb21TdHJpbmcodC50YXJnZXQudmFsdWUsITApOih0aGlzLmNvbG9yUGlja2VyPXQudGFyZ2V0LnZhbHVlLHRoaXMuY29sb3JQaWNrZXJDaGFuZ2UuZW1pdCh0aGlzLmNvbG9yUGlja2VyKSl9aW5wdXRDaGFuZ2VkKHQpe3RoaXMuY3BJbnB1dENoYW5nZS5lbWl0KHQpfXNsaWRlckNoYW5nZWQodCl7dGhpcy5jcFNsaWRlckNoYW5nZS5lbWl0KHQpfXNsaWRlckRyYWdFbmQodCl7dGhpcy5jcFNsaWRlckRyYWdFbmQuZW1pdCh0KX1zbGlkZXJEcmFnU3RhcnQodCl7dGhpcy5jcFNsaWRlckRyYWdTdGFydC5lbWl0KHQpfXByZXNldENvbG9yc0NoYW5nZWQodCl7dGhpcy5jcFByZXNldENvbG9yc0NoYW5nZS5lbWl0KHQpfX07eWYuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8eWYpKHYoJGUpLHYoX28pLHYobmEpLHYoX2UpLHYoTCksdih5YykpfTt5Zi5cdTAyNzVkaXI9dnQoe3R5cGU6eWYsc2VsZWN0b3JzOltbIiIsImNvbG9yUGlja2VyIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUuaGFuZGxlQ2xpY2soKX0pKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gZS5oYW5kbGVGb2N1cygpfSkoImlucHV0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5oYW5kbGVJbnB1dChpKX0pfSxpbnB1dHM6e2NwV2lkdGg6ImNwV2lkdGgiLGNwSGVpZ2h0OiJjcEhlaWdodCIsY3BUb2dnbGU6ImNwVG9nZ2xlIixjcERpc2FibGVkOiJjcERpc2FibGVkIixjcElnbm9yZWRFbGVtZW50czoiY3BJZ25vcmVkRWxlbWVudHMiLGNwRmFsbGJhY2tDb2xvcjoiY3BGYWxsYmFja0NvbG9yIixjcENvbG9yTW9kZToiY3BDb2xvck1vZGUiLGNwQ215a0VuYWJsZWQ6ImNwQ215a0VuYWJsZWQiLGNwT3V0cHV0Rm9ybWF0OiJjcE91dHB1dEZvcm1hdCIsY3BBbHBoYUNoYW5uZWw6ImNwQWxwaGFDaGFubmVsIixjcERpc2FibGVJbnB1dDoiY3BEaXNhYmxlSW5wdXQiLGNwRGlhbG9nRGlzcGxheToiY3BEaWFsb2dEaXNwbGF5IixjcFNhdmVDbGlja091dHNpZGU6ImNwU2F2ZUNsaWNrT3V0c2lkZSIsY3BDbG9zZUNsaWNrT3V0c2lkZToiY3BDbG9zZUNsaWNrT3V0c2lkZSIsY3BVc2VSb290Vmlld0NvbnRhaW5lcjoiY3BVc2VSb290Vmlld0NvbnRhaW5lciIsY3BQb3NpdGlvbjoiY3BQb3NpdGlvbiIsY3BQb3NpdGlvbk9mZnNldDoiY3BQb3NpdGlvbk9mZnNldCIsY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdzoiY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdyIsY3BPS0J1dHRvbjoiY3BPS0J1dHRvbiIsY3BPS0J1dHRvblRleHQ6ImNwT0tCdXR0b25UZXh0IixjcE9LQnV0dG9uQ2xhc3M6ImNwT0tCdXR0b25DbGFzcyIsY3BDYW5jZWxCdXR0b246ImNwQ2FuY2VsQnV0dG9uIixjcENhbmNlbEJ1dHRvblRleHQ6ImNwQ2FuY2VsQnV0dG9uVGV4dCIsY3BDYW5jZWxCdXR0b25DbGFzczoiY3BDYW5jZWxCdXR0b25DbGFzcyIsY3BQcmVzZXRMYWJlbDoiY3BQcmVzZXRMYWJlbCIsY3BQcmVzZXRDb2xvcnNDbGFzczoiY3BQcmVzZXRDb2xvcnNDbGFzcyIsY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg6ImNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoIixjcFByZXNldEVtcHR5TWVzc2FnZToiY3BQcmVzZXRFbXB0eU1lc3NhZ2UiLGNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M6ImNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3MiLGNwQWRkQ29sb3JCdXR0b246ImNwQWRkQ29sb3JCdXR0b24iLGNwQWRkQ29sb3JCdXR0b25UZXh0OiJjcEFkZENvbG9yQnV0dG9uVGV4dCIsY3BBZGRDb2xvckJ1dHRvbkNsYXNzOiJjcEFkZENvbG9yQnV0dG9uQ2xhc3MiLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczoiY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzIixjb2xvclBpY2tlcjoiY29sb3JQaWNrZXIiLGNwUHJlc2V0Q29sb3JzOiJjcFByZXNldENvbG9ycyJ9LG91dHB1dHM6e2NwSW5wdXRDaGFuZ2U6ImNwSW5wdXRDaGFuZ2UiLGNwVG9nZ2xlQ2hhbmdlOiJjcFRvZ2dsZUNoYW5nZSIsY3BTbGlkZXJDaGFuZ2U6ImNwU2xpZGVyQ2hhbmdlIixjcFNsaWRlckRyYWdFbmQ6ImNwU2xpZGVyRHJhZ0VuZCIsY3BTbGlkZXJEcmFnU3RhcnQ6ImNwU2xpZGVyRHJhZ1N0YXJ0Iixjb2xvclBpY2tlck9wZW46ImNvbG9yUGlja2VyT3BlbiIsY29sb3JQaWNrZXJDbG9zZToiY29sb3JQaWNrZXJDbG9zZSIsY29sb3JQaWNrZXJDYW5jZWw6ImNvbG9yUGlja2VyQ2FuY2VsIixjb2xvclBpY2tlclNlbGVjdDoiY29sb3JQaWNrZXJTZWxlY3QiLGNvbG9yUGlja2VyQ2hhbmdlOiJjb2xvclBpY2tlckNoYW5nZSIsY3BDbXlrQ29sb3JDaGFuZ2U6ImNwQ215a0NvbG9yQ2hhbmdlIixjcFByZXNldENvbG9yc0NoYW5nZToiY3BQcmVzZXRDb2xvcnNDaGFuZ2UifSxleHBvcnRBczpbIm5neENvbG9yUGlja2VyIl0sZmVhdHVyZXM6W1dlXX0pO3lmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JGV9LHt0eXBlOl9vfSx7dHlwZTpuYX0se3R5cGU6X2V9LHt0eXBlOkx9LHt0eXBlOnljfV07eWYucHJvcERlY29yYXRvcnM9e2NvbG9yUGlja2VyOlt7dHlwZTpkfV0sY3BXaWR0aDpbe3R5cGU6ZH1dLGNwSGVpZ2h0Olt7dHlwZTpkfV0sY3BUb2dnbGU6W3t0eXBlOmR9XSxjcERpc2FibGVkOlt7dHlwZTpkfV0sY3BJZ25vcmVkRWxlbWVudHM6W3t0eXBlOmR9XSxjcEZhbGxiYWNrQ29sb3I6W3t0eXBlOmR9XSxjcENvbG9yTW9kZTpbe3R5cGU6ZH1dLGNwQ215a0VuYWJsZWQ6W3t0eXBlOmR9XSxjcE91dHB1dEZvcm1hdDpbe3R5cGU6ZH1dLGNwQWxwaGFDaGFubmVsOlt7dHlwZTpkfV0sY3BEaXNhYmxlSW5wdXQ6W3t0eXBlOmR9XSxjcERpYWxvZ0Rpc3BsYXk6W3t0eXBlOmR9XSxjcFNhdmVDbGlja091dHNpZGU6W3t0eXBlOmR9XSxjcENsb3NlQ2xpY2tPdXRzaWRlOlt7dHlwZTpkfV0sY3BVc2VSb290Vmlld0NvbnRhaW5lcjpbe3R5cGU6ZH1dLGNwUG9zaXRpb246W3t0eXBlOmR9XSxjcFBvc2l0aW9uT2Zmc2V0Olt7dHlwZTpkfV0sY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdzpbe3R5cGU6ZH1dLGNwT0tCdXR0b246W3t0eXBlOmR9XSxjcE9LQnV0dG9uVGV4dDpbe3R5cGU6ZH1dLGNwT0tCdXR0b25DbGFzczpbe3R5cGU6ZH1dLGNwQ2FuY2VsQnV0dG9uOlt7dHlwZTpkfV0sY3BDYW5jZWxCdXR0b25UZXh0Olt7dHlwZTpkfV0sY3BDYW5jZWxCdXR0b25DbGFzczpbe3R5cGU6ZH1dLGNwUHJlc2V0TGFiZWw6W3t0eXBlOmR9XSxjcFByZXNldENvbG9yczpbe3R5cGU6ZH1dLGNwUHJlc2V0Q29sb3JzQ2xhc3M6W3t0eXBlOmR9XSxjcE1heFByZXNldENvbG9yc0xlbmd0aDpbe3R5cGU6ZH1dLGNwUHJlc2V0RW1wdHlNZXNzYWdlOlt7dHlwZTpkfV0sY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzczpbe3R5cGU6ZH1dLGNwQWRkQ29sb3JCdXR0b246W3t0eXBlOmR9XSxjcEFkZENvbG9yQnV0dG9uVGV4dDpbe3R5cGU6ZH1dLGNwQWRkQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6ZH1dLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczpbe3R5cGU6ZH1dLGNwSW5wdXRDaGFuZ2U6W3t0eXBlOkJ9XSxjcFRvZ2dsZUNoYW5nZTpbe3R5cGU6Qn1dLGNwU2xpZGVyQ2hhbmdlOlt7dHlwZTpCfV0sY3BTbGlkZXJEcmFnRW5kOlt7dHlwZTpCfV0sY3BTbGlkZXJEcmFnU3RhcnQ6W3t0eXBlOkJ9XSxjb2xvclBpY2tlck9wZW46W3t0eXBlOkJ9XSxjb2xvclBpY2tlckNsb3NlOlt7dHlwZTpCfV0sY29sb3JQaWNrZXJDYW5jZWw6W3t0eXBlOkJ9XSxjb2xvclBpY2tlclNlbGVjdDpbe3R5cGU6Qn1dLGNvbG9yUGlja2VyQ2hhbmdlOlt7dHlwZTpCfV0sY3BDbXlrQ29sb3JDaGFuZ2U6W3t0eXBlOkJ9XSxjcFByZXNldENvbG9yc0NoYW5nZTpbe3R5cGU6Qn1dLGhhbmRsZUNsaWNrOlt7dHlwZTp4byxhcmdzOlsiY2xpY2siXX1dLGhhbmRsZUZvY3VzOlt7dHlwZTp4byxhcmdzOlsiZm9jdXMiXX1dLGhhbmRsZUlucHV0Olt7dHlwZTp4byxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh5Zixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJbY29sb3JQaWNrZXJdIixleHBvcnRBczoibmd4Q29sb3JQaWNrZXIifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTokZX0se3R5cGU6X299LHt0eXBlOm5hfSx7dHlwZTpfZX0se3R5cGU6TH0se3R5cGU6eWN9XX0se2NwV2lkdGg6W3t0eXBlOmR9XSxjcEhlaWdodDpbe3R5cGU6ZH1dLGNwVG9nZ2xlOlt7dHlwZTpkfV0sY3BEaXNhYmxlZDpbe3R5cGU6ZH1dLGNwSWdub3JlZEVsZW1lbnRzOlt7dHlwZTpkfV0sY3BGYWxsYmFja0NvbG9yOlt7dHlwZTpkfV0sY3BDb2xvck1vZGU6W3t0eXBlOmR9XSxjcENteWtFbmFibGVkOlt7dHlwZTpkfV0sY3BPdXRwdXRGb3JtYXQ6W3t0eXBlOmR9XSxjcEFscGhhQ2hhbm5lbDpbe3R5cGU6ZH1dLGNwRGlzYWJsZUlucHV0Olt7dHlwZTpkfV0sY3BEaWFsb2dEaXNwbGF5Olt7dHlwZTpkfV0sY3BTYXZlQ2xpY2tPdXRzaWRlOlt7dHlwZTpkfV0sY3BDbG9zZUNsaWNrT3V0c2lkZTpbe3R5cGU6ZH1dLGNwVXNlUm9vdFZpZXdDb250YWluZXI6W3t0eXBlOmR9XSxjcFBvc2l0aW9uOlt7dHlwZTpkfV0sY3BQb3NpdGlvbk9mZnNldDpbe3R5cGU6ZH1dLGNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c6W3t0eXBlOmR9XSxjcE9LQnV0dG9uOlt7dHlwZTpkfV0sY3BPS0J1dHRvblRleHQ6W3t0eXBlOmR9XSxjcE9LQnV0dG9uQ2xhc3M6W3t0eXBlOmR9XSxjcENhbmNlbEJ1dHRvbjpbe3R5cGU6ZH1dLGNwQ2FuY2VsQnV0dG9uVGV4dDpbe3R5cGU6ZH1dLGNwQ2FuY2VsQnV0dG9uQ2xhc3M6W3t0eXBlOmR9XSxjcFByZXNldExhYmVsOlt7dHlwZTpkfV0sY3BQcmVzZXRDb2xvcnNDbGFzczpbe3R5cGU6ZH1dLGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoOlt7dHlwZTpkfV0sY3BQcmVzZXRFbXB0eU1lc3NhZ2U6W3t0eXBlOmR9XSxjcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzOlt7dHlwZTpkfV0sY3BBZGRDb2xvckJ1dHRvbjpbe3R5cGU6ZH1dLGNwQWRkQ29sb3JCdXR0b25UZXh0Olt7dHlwZTpkfV0sY3BBZGRDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpkfV0sY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpkfV0sY3BJbnB1dENoYW5nZTpbe3R5cGU6Qn1dLGNwVG9nZ2xlQ2hhbmdlOlt7dHlwZTpCfV0sY3BTbGlkZXJDaGFuZ2U6W3t0eXBlOkJ9XSxjcFNsaWRlckRyYWdFbmQ6W3t0eXBlOkJ9XSxjcFNsaWRlckRyYWdTdGFydDpbe3R5cGU6Qn1dLGNvbG9yUGlja2VyT3Blbjpbe3R5cGU6Qn1dLGNvbG9yUGlja2VyQ2xvc2U6W3t0eXBlOkJ9XSxjb2xvclBpY2tlckNhbmNlbDpbe3R5cGU6Qn1dLGNvbG9yUGlja2VyU2VsZWN0Olt7dHlwZTpCfV0sY29sb3JQaWNrZXJDaGFuZ2U6W3t0eXBlOkJ9XSxjcENteWtDb2xvckNoYW5nZTpbe3R5cGU6Qn1dLGNwUHJlc2V0Q29sb3JzQ2hhbmdlOlt7dHlwZTpCfV0saGFuZGxlQ2xpY2s6W3t0eXBlOnhvLGFyZ3M6WyJjbGljayJdfV0saGFuZGxlRm9jdXM6W3t0eXBlOnhvLGFyZ3M6WyJmb2N1cyJdfV0saGFuZGxlSW5wdXQ6W3t0eXBlOnhvLGFyZ3M6WyJpbnB1dCIsWyIkZXZlbnQiXV19XSxjb2xvclBpY2tlcjpbe3R5cGU6ZH1dLGNwUHJlc2V0Q29sb3JzOlt7dHlwZTpkfV19KX0pKCk7dmFyIEp1PWNsYXNze307SnUuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SnUpfTtKdS5cdTAyNzVtb2Q9cSh7dHlwZTpKdX0pO0p1Llx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3ljXSxpbXBvcnRzOltbWV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEp1LFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltZXSxleHBvcnRzOlt5Zl0scHJvdmlkZXJzOlt5Y10sZGVjbGFyYXRpb25zOltLdSx5ZixKTSxOMF0sZW50cnlDb21wb25lbnRzOltLdV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoSnUse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltLdSx5ZixKTSxOMF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5beWZdfX0pfSkoKTt2YXIgenp0PVsiZmlsdGVyIl07ZnVuY3Rpb24gSHp0KG4sdCl7biYxJiZNbygwKX1mdW5jdGlvbiBGenQobix0KXtuJjEmJk1vKDApfXZhciBMenQ9ZnVuY3Rpb24obil7cmV0dXJue2l0ZW06bn19O2Z1bmN0aW9uIEJ6dChuLHQpe2lmKG4mMSYmKEVuKDApLGsoMSxGenQsMSwwLCJuZy1jb250YWluZXIiLDEyKSxrbigpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0O1MoKTtsZXQgbz13ZSgxNCk7eCgxKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixvKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGFvKDIsTHp0LGUpKX19ZnVuY3Rpb24gVnp0KG4sdCl7biYxJiYodSgwLCJkaXYiLDEzKSxEKDEsIm1hdC1zcGlubmVyIiwxNCksaCgpKX1mdW5jdGlvbiBqenQobix0KXtuJjEmJih1KDAsImRpdiIsMTUpLFQoMSwiTm8gUnVucyIpLGgoKSl9ZnVuY3Rpb24gVXp0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDE1KSx1KDEsInNwYW4iKSxUKDIsJ05vIHJ1bnMgbWF0Y2ggIicpLHUoMywiY29kZSIpLFQoNCksaCgpLFQoNSwnIicpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO3goNCksSWUoZS5yZWdleEZpbHRlcil9fXZhciBZenQ9ZnVuY3Rpb24oKXtyZXR1cm5bNSwxMCwyMF19O2Z1bmN0aW9uIEd6dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsIm1hdC1wYWdpbmF0b3IiLDE2KSxBKCJwYWdlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uUGFnaW5hdGlvbkNoYW5nZS5lbWl0KGkpfSksaCgpfWlmKG4mMil7bGV0IGU9UygpO1AoInBhZ2VTaXplT3B0aW9ucyIsd3koNCxZenQpKSgicGFnZUluZGV4IixlLnBhZ2luYXRpb25PcHRpb24ucGFnZUluZGV4KSgicGFnZVNpemUiLGUucGFnaW5hdGlvbk9wdGlvbi5wYWdlU2l6ZSkoImxlbmd0aCIsZS5maWx0ZXJlZEl0ZW1zTGVuZ3RoKX19ZnVuY3Rpb24gV3p0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwibWF0LWNoZWNrYm94IiwyNiksQSgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKDMpLmhhbmRsZVBhZ2VUb2dnbGUoKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoMyk7UCgiY2hlY2tlZCIsZS5hbGxQYWdlSXRlbXNTZWxlY3RlZCgpKSgiaW5kZXRlcm1pbmF0ZSIsIWUuYWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKSYmZS5zb21lUGFnZUl0ZW1zU2VsZWN0ZWQoKSl9fXZhciBXbHQ9ZnVuY3Rpb24obil7cmV0dXJue3R5cGU6bn19O2Z1bmN0aW9uIHF6dChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsMjcpLFQoMSwiRXhwZXJpbWVudCIpLGgoKSksbiYyKXtsZXQgZT1TKDMpO1AoIm1hdC1zb3J0LWhlYWRlciIsYW8oMSxXbHQsZS5Tb3J0VHlwZS5FWFBFUklNRU5UX05BTUUpKX19ZnVuY3Rpb24gWnp0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwyNyksVCgxLCJSdW4iKSxoKCkpLG4mMil7bGV0IGU9UygzKTtQKCJtYXQtc29ydC1oZWFkZXIiLGFvKDEsV2x0LGUuU29ydFR5cGUuUlVOX05BTUUpKX19ZnVuY3Rpb24gWHp0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiksRCgxLCJydW5zLWdyb3VwLW1lbnUtYnV0dG9uIiwyOCksaCgpKSxuJjIpe2xldCBlPVMoMyk7eCgxKSxQKCJleHBlcmltZW50SWRzIixlLmV4cGVyaW1lbnRJZHMpfX12YXIgcWx0PWZ1bmN0aW9uKG4pe3JldHVyblsiY29sdW1uIixuXX07ZnVuY3Rpb24gUXp0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwyMSksRW4oMSwyMiksaygyLFd6dCwxLDIsIm1hdC1jaGVja2JveCIsMjMpLGsoMyxxenQsMiwzLCJzcGFuIiwyNCksayg0LFp6dCwyLDMsInNwYW4iLDI0KSxrKDUsWHp0LDIsMSwic3BhbiIsMjUpLGtuKCksaCgpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygyKTtQKCJuZ0NsYXNzIixhbyg2LHFsdCwidGItY29sdW1uLSIrZSkpLHgoMSksUCgibmdTd2l0Y2giLGUpLHgoMSksUCgibmdTd2l0Y2hDYXNlIixvLlJ1bnNUYWJsZUNvbHVtbi5DSEVDS0JPWCkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLG8uUnVuc1RhYmxlQ29sdW1uLkVYUEVSSU1FTlRfTkFNRSkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLG8uUnVuc1RhYmxlQ29sdW1uLlJVTl9OQU1FKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsby5SdW5zVGFibGVDb2x1bW4uUlVOX0NPTE9SKX19ZnVuY3Rpb24gS3p0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO0VuKDApLHUoMSwiZGl2IiwzNyksQSgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBpLnN0b3BQcm9wYWdhdGlvbigpfSksdSgyLCJ0Yi1yYW5nZS1pbnB1dCIsMzgpLEEoInJhbmdlVmFsdWVzQ2hhbmdlZCIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygyKS4kaW1wbGljaXQ7cmV0dXJuIFMoMikuaGFuZGxlSHBhcmFtSW50ZXJ2YWxDaGFuZ2VkKGEsaSl9KSxoKCksaCgpLGtuKCl9aWYobiYyKXtsZXQgZT1TKDIpLiRpbXBsaWNpdDt4KDIpLFAoIm1pbiIsZS5maWx0ZXIubWluVmFsdWUpKCJtYXgiLGUuZmlsdGVyLm1heFZhbHVlKSgibG93ZXJWYWx1ZSIsZS5maWx0ZXIuZmlsdGVyTG93ZXJWYWx1ZSkoInVwcGVyVmFsdWUiLGUuZmlsdGVyLmZpbHRlclVwcGVyVmFsdWUpfX1mdW5jdGlvbiBKenQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDQwKSxBKCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIGkuc3RvcFByb3BhZ2F0aW9uKCl9KSx1KDEsIm1hdC1jaGVja2JveCIsMzYpLEEoImNoYW5nZSIsZnVuY3Rpb24oKXtsZXQgYT1PdChlKS4kaW1wbGljaXQscj1TKDMpLiRpbXBsaWNpdDtyZXR1cm4gUygyKS5oYW5kbGVIcGFyYW1EaXNjcmV0ZUNoYW5nZWQocixhKX0pLHUoMiwic3BhbiIpLFQoMyksaCgpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoMykuJGltcGxpY2l0O3goMSksUCgiY2hlY2tlZCIsby5maWx0ZXIuZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGUpKSx4KDIpLEllKGUpfX1mdW5jdGlvbiAkenQobix0KXtpZihuJjEmJihFbigwKSxrKDEsSnp0LDQsMiwiZGl2IiwzOSksa24oKSksbiYyKXtsZXQgZT1TKDIpLiRpbXBsaWNpdDt4KDEpLFAoIm5nRm9yT2YiLGUuZmlsdGVyLnBvc3NpYmxlVmFsdWVzKX19ZnVuY3Rpb24gdDZ0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO0VuKDApLHUoMSwiYnV0dG9uIiwzMiksQSgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBpLnN0b3BQcm9wYWdhdGlvbigpfSksRCgyLCJtYXQtaWNvbiIsMzMpLGgoKSx1KDMsIm1hdC1tZW51IixudWxsLDM0KSx1KDUsImRpdiIsMzUpLEEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gaS5zdG9wUHJvcGFnYXRpb24oKX0pLHUoNiwibWF0LWNoZWNrYm94IiwzNiksQSgiY2hhbmdlIixmdW5jdGlvbigpe090KGUpO2xldCBpPVMoKS4kaW1wbGljaXQ7cmV0dXJuIFMoMikuaGFuZGxlSHBhcmFtSW5jbHVkZVVuZGVmaW5lZFRvZ2dsZWQoaSl9KSx1KDcsInNwYW4iKSxUKDgsIihzaG93IGVtcHR5IHZhbHVlKSIpLGgoKSxoKCksaCgpLGsoOSxLenQsMyw0LCJuZy1jb250YWluZXIiLDMxKSxrKDEwLCR6dCwyLDEsIm5nLWNvbnRhaW5lciIsMzEpLGgoKSxrbigpfWlmKG4mMil7bGV0IGU9d2UoNCksbz1TKCkuJGltcGxpY2l0LGk9UygyKTt4KDEpLFAoIm1hdE1lbnVUcmlnZ2VyRm9yIixlKSxyZSgiYXJpYS1sYWJlbCIsIkZpbHRlciBocGFyYW0gIisoby5kaXNwbGF5TmFtZXx8by5uYW1lKSkseCg1KSxQKCJjaGVja2VkIixvLmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkKSx4KDMpLFAoIm5nSWYiLG8uZmlsdGVyLnR5cGU9PT1pLkRvbWFpblR5cGUuSU5URVJWQUwpLHgoMSksUCgibmdJZiIsby5maWx0ZXIudHlwZT09PWkuRG9tYWluVHlwZS5ESVNDUkVURSl9fXZhciBlNnQ9ZnVuY3Rpb24obix0KXtyZXR1cm57dHlwZTpuLG5hbWU6dH19O2Z1bmN0aW9uIG42dChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsMjkpLHUoMSwic3BhbiIsMzApLFQoMiksaCgpLGsoMyx0NnQsMTEsNSwibmctY29udGFpbmVyIiwzMSksaCgpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygyKTtQKCJtYXQtc29ydC1oZWFkZXIiLGhsKDMsZTZ0LG8uU29ydFR5cGUuSFBBUkFNLGUubmFtZSkpLHgoMiksSWUoZS5kaXNwbGF5TmFtZXx8ZS5uYW1lKSx4KDEpLFAoIm5nSWYiLGUuZmlsdGVyKX19ZnVuY3Rpb24gbzZ0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO0VuKDApLHUoMSwiYnV0dG9uIiwzMiksQSgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBpLnN0b3BQcm9wYWdhdGlvbigpfSksRCgyLCJtYXQtaWNvbiIsMzMpLGgoKSx1KDMsIm1hdC1tZW51IixudWxsLDM0KSx1KDUsImRpdiIsMzUpLEEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gaS5zdG9wUHJvcGFnYXRpb24oKX0pLHUoNiwibWF0LWNoZWNrYm94IiwzNiksQSgiY2hhbmdlIixmdW5jdGlvbigpe090KGUpO2xldCBpPVMoKS4kaW1wbGljaXQ7cmV0dXJuIFMoMikuaGFuZGxlTWV0cmljSW5jbHVkZVVuZGVmaW5lZENoYW5nZWQoaSl9KSx1KDcsInNwYW4iKSxUKDgsIihzaG93IGVtcHR5IHZhbHVlKSIpLGgoKSxoKCksaCgpLHUoOSwiZGl2IiwzNyksQSgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBpLnN0b3BQcm9wYWdhdGlvbigpfSksdSgxMCwidGItcmFuZ2UtaW5wdXQiLDM4KSxBKCJyYW5nZVZhbHVlc0NoYW5nZWQiLGZ1bmN0aW9uKGkpe090KGUpO2xldCBhPVMoKS4kaW1wbGljaXQ7cmV0dXJuIFMoMikuaGFuZGxlTWV0cmljRmlsdGVyQ2hhbmdlZChhLGkpfSksaCgpLGgoKSxoKCksa24oKX1pZihuJjIpe2xldCBlPXdlKDQpLG89UygpLiRpbXBsaWNpdDt4KDEpLFAoIm1hdE1lbnVUcmlnZ2VyRm9yIixlKSxyZSgiYXJpYS1sYWJlbCIsIkZpbHRlciBtZXRyaWMgIisoby5kaXNwbGF5TmFtZXx8by50YWcpKSx4KDUpLFAoImNoZWNrZWQiLG8uZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQpLHgoNCksUCgibWluIixvLmZpbHRlci5taW5WYWx1ZSkoIm1heCIsby5maWx0ZXIubWF4VmFsdWUpKCJsb3dlclZhbHVlIixvLmZpbHRlci5maWx0ZXJMb3dlclZhbHVlKSgidXBwZXJWYWx1ZSIsby5maWx0ZXIuZmlsdGVyVXBwZXJWYWx1ZSl9fXZhciBpNnQ9ZnVuY3Rpb24obix0KXtyZXR1cm57dHlwZTpuLHRhZzp0fX07ZnVuY3Rpb24gYTZ0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwyOSksdSgxLCJzcGFuIiwzMCksVCgyKSxoKCksaygzLG82dCwxMSw3LCJuZy1jb250YWluZXIiLDMxKSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKDIpO1AoIm1hdC1zb3J0LWhlYWRlciIsaGwoMyxpNnQsby5Tb3J0VHlwZS5NRVRSSUMsZS50YWcpKSx4KDIpLEllKGUuZGlzcGxheU5hbWV8fGUudGFnKSx4KDEpLFAoIm5nSWYiLGUuZmlsdGVyKX19ZnVuY3Rpb24gcjZ0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2IiwxNyksdSgxLCJkaXYiLDE4KSxBKCJtYXRTb3J0Q2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLmhhbmRsZVNvcnRDaGFuZ2UoaSl9KSxrKDIsUXp0LDYsOCwic3BhbiIsMTkpLGsoMyxuNnQsNCw2LCJzcGFuIiwyMCksayg0LGE2dCw0LDYsInNwYW4iLDIwKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO3goMSksUCgibWF0U29ydEFjdGl2ZSIsZS5zb3J0T3B0aW9uLmNvbHVtbikseCgxKSxQKCJuZ0Zvck9mIixlLmNvbHVtbnMpLHgoMSksUCgibmdGb3JPZiIsZS5ocGFyYW1Db2x1bW5zKSgibmdGb3JUcmFja0J5IixlLnRyYWNrQnlIcGFyYW1Db2x1bW4pLHgoMSksUCgibmdGb3JPZiIsZS5tZXRyaWNDb2x1bW5zKSgibmdGb3JUcmFja0J5IixlLnRyYWNrQnlNZXRyaWNDb2x1bW4pfX1mdW5jdGlvbiBzNnQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJzcGFuIiksdSgxLCJtYXQtY2hlY2tib3giLDQ3KSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7T3QoZSk7bGV0IGk9UygyKS5pdGVtO3JldHVybiBTKCkub25TZWxlY3Rpb25Ub2dnbGUuZW1pdChpKX0pKCJkYmxjbGljayIsZnVuY3Rpb24oKXtPdChlKTtsZXQgaT1TKDIpLml0ZW07cmV0dXJuIFMoKS5vblNlbGVjdGlvbkRibENsaWNrLmVtaXQoaSl9KSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygyKS5pdGVtO3goMSksUCgiY2hlY2tlZCIsZS5zZWxlY3RlZCl9fWZ1bmN0aW9uIGw2dChuLHQpe2lmKG4mMSYmRCgwLCJ0Yi1leHBlcmltZW50LWFsaWFzIiw0OCksbiYyKXtsZXQgZT1TKDIpLml0ZW07UCgiYWxpYXMiLGUuZXhwZXJpbWVudEFsaWFzKX19ZnVuY3Rpb24gYzZ0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiwzMCksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygyKS5pdGVtO3goMSksSWUoZS5ydW4ubmFtZSl9fXZhciBtNnQ9ZnVuY3Rpb24obil7cmV0dXJueyJydW4tY29sb3Itc3dhdGNoIjohMCwibm8tY29sb3IiOm59fTtmdW5jdGlvbiBmNnQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJzcGFuIiksdSgxLCJidXR0b24iLDQ5KSxBKCJjb2xvclBpY2tlckNoYW5nZSIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygyKS5pdGVtO3JldHVybiBTKCkub25SdW5Db2xvckNoYW5nZS5lbWl0KHtydW5JZDphLnJ1bi5pZCxuZXdDb2xvcjppfSl9KSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygyKS5pdGVtO3goMSkscWUoImJhY2tncm91bmQiLGUucnVuQ29sb3IpLFAoIm5nQ2xhc3MiLGFvKDgsbTZ0LCFlLnJ1bkNvbG9yKSkoImNvbG9yUGlja2VyIixlLnJ1bkNvbG9yKSgiY3BEaWFsb2dEaXNwbGF5IiwicG9wdXAiKSgiY3BQb3NpdGlvbk9mZnNldCIsLTIwKSgiY3BVc2VSb290Vmlld0NvbnRhaW5lciIsITApKCJjcE91dHB1dEZvcm1hdCIsImhleCIpfX1mdW5jdGlvbiBwNnQobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDQ0KSxFbigxLDIyKSxrKDIsczZ0LDIsMSwic3BhbiIsMjUpLGsoMyxsNnQsMSwxLCJ0Yi1leHBlcmltZW50LWFsaWFzIiw0NSksayg0LGM2dCwyLDEsInNwYW4iLDQ2KSxrKDUsZjZ0LDIsMTAsInNwYW4iLDI1KSxrbigpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoMik7UCgibmdDbGFzcyIsYW8oNixxbHQsInRiLWNvbHVtbi0iK2UpKSx4KDEpLFAoIm5nU3dpdGNoIixlKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsby5SdW5zVGFibGVDb2x1bW4uQ0hFQ0tCT1gpLHgoMSksUCgibmdTd2l0Y2hDYXNlIixvLlJ1bnNUYWJsZUNvbHVtbi5FWFBFUklNRU5UX05BTUUpLHgoMSksUCgibmdTd2l0Y2hDYXNlIixvLlJ1bnNUYWJsZUNvbHVtbi5SVU5fTkFNRSkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLG8uUnVuc1RhYmxlQ29sdW1uLlJVTl9DT0xPUil9fWZ1bmN0aW9uIGQ2dChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsNTApLFQoMSksaCgpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygpLml0ZW07eCgxKSxJZShvLmhwYXJhbXMuZ2V0KGUubmFtZSkpfX1mdW5jdGlvbiBnNnQobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDUwKSxUKDEpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoKS5pdGVtO3goMSksSWUoby5tZXRyaWNzLmdldChlLnRhZykpfX1mdW5jdGlvbiB1NnQobix0KXtpZihuJjEmJih1KDAsImRpdiIsNDEpLGsoMSxwNnQsNiw4LCJzcGFuIiw0MiksaygyLGQ2dCwyLDEsInNwYW4iLDQzKSxrKDMsZzZ0LDIsMSwic3BhbiIsNDMpLGgoKSksbiYyKXtsZXQgZT10Lml0ZW0sbz1TKCk7cmUoImRhdGEtaWQiLGUucnVuLmlkKSx4KDEpLFAoIm5nRm9yT2YiLG8uY29sdW1ucykseCgxKSxQKCJuZ0Zvck9mIixvLmhwYXJhbUNvbHVtbnMpLHgoMSksUCgibmdGb3JPZiIsby5tZXRyaWNDb2x1bW5zKX19dmFyICRNPWNsYXNzIGV4dGVuZHMgZ3N7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaXRlbXNQZXJQYWdlTGFiZWw9IlNob3cgcnVuczoifX07JE0uXHUwMjc1ZmFjPWZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihufHwobj1GbigkTSkpKShlfHwkTSl9fSgpOyRNLlx1MDI3NXByb3Y9UHQoe3Rva2VuOiRNLGZhY3Rvcnk6JE0uXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKCRNLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBUMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZGF0YVNvdXJjZT1uZXcgdDYsdGhpcy5Eb21haW5UeXBlPWVpLHRoaXMuUnVuc1RhYmxlQ29sdW1uPWZkLHRoaXMuU29ydFR5cGU9Z1AsdGhpcy5vblJlZ2V4RmlsdGVyQ2hhbmdlPW5ldyAkLHRoaXMub25TZWxlY3Rpb25Ub2dnbGU9bmV3ICQsdGhpcy5vblNlbGVjdGlvbkRibENsaWNrPW5ldyAkLHRoaXMub25QYWdlU2VsZWN0aW9uVG9nZ2xlPW5ldyAkLHRoaXMub25QYWdpbmF0aW9uQ2hhbmdlPW5ldyAkLHRoaXMub25Tb3J0Q2hhbmdlPW5ldyAkLHRoaXMub25SdW5Db2xvckNoYW5nZT1uZXcgJCx0aGlzLm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkPW5ldyAkLHRoaXMub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQ9bmV3ICQsdGhpcy5vbk1ldHJpY0ZpbHRlckNoYW5nZWQ9bmV3ICR9bmdPbkNoYW5nZXMoKXt0aGlzLmRhdGFTb3VyY2UuZGF0YT10aGlzLnBhZ2VJdGVtc31nZXRIcGFyYW1Db2x1bW5JZCh0KXtyZXR1cm5gaDoke3QubmFtZX1gfWdldE1ldHJpY0NvbHVtbklkKHQpe3JldHVybmBtOiR7dC50YWd9YH1nZXRDb2x1bW5JZHMoKXtyZXR1cm5bLi4udGhpcy5jb2x1bW5zLC4uLnRoaXMuaHBhcmFtQ29sdW1ucy5tYXAodGhpcy5nZXRIcGFyYW1Db2x1bW5JZCksLi4udGhpcy5tZXRyaWNDb2x1bW5zLm1hcCh0aGlzLmdldE1ldHJpY0NvbHVtbklkKV19YWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKXtyZXR1cm4gQm9vbGVhbih0aGlzLnBhZ2VJdGVtcy5sZW5ndGgpJiZ0aGlzLnBhZ2VJdGVtcy5ldmVyeSh0PT50LnNlbGVjdGVkKX1zb21lUGFnZUl0ZW1zU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5wYWdlSXRlbXMuc29tZSh0PT50LnNlbGVjdGVkKX1oYW5kbGVQYWdlVG9nZ2xlKCl7dGhpcy5vblBhZ2VTZWxlY3Rpb25Ub2dnbGUuZW1pdCh7aXRlbXM6dGhpcy5wYWdlSXRlbXN9KX1oYW5kbGVTb3J0Q2hhbmdlKHQpe2xldCBlO3N3aXRjaCh0LmRpcmVjdGlvbil7Y2FzZSJhc2MiOmU9d00uQVNDO2JyZWFrO2Nhc2UiZGVzYyI6ZT13TS5ERVNDO2JyZWFrO2RlZmF1bHQ6ZT13TS5VTlNFVH1sZXQgbz10LmFjdGl2ZTt0aGlzLm9uU29ydENoYW5nZS5lbWl0KHtrZXk6byxkaXJlY3Rpb246ZX0pfW9uRmlsdGVyS2V5VXAodCl7bGV0IGU9dC50YXJnZXQ7dGhpcy5vblJlZ2V4RmlsdGVyQ2hhbmdlLmVtaXQoZS52YWx1ZSl9dGFibGVUcmFja0J5KHQsZSl7cmV0dXJuIGUucnVuLmlkfWhhbmRsZUhwYXJhbUluY2x1ZGVVbmRlZmluZWRUb2dnbGVkKHQpe2xldHtuYW1lOmUsZmlsdGVyOm99PXQ7aWYoIW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO28udHlwZT09PWVpLkRJU0NSRVRFP3RoaXMub25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQuZW1pdCh7aHBhcmFtTmFtZTplLGluY2x1ZGVVbmRlZmluZWQ6IW8uaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJWYWx1ZXM6by5maWx0ZXJWYWx1ZXN9KTp0aGlzLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6ZSxpbmNsdWRlVW5kZWZpbmVkOiFvLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTpvLmZpbHRlckxvd2VyVmFsdWUsZmlsdGVyVXBwZXJWYWx1ZTpvLmZpbHRlclVwcGVyVmFsdWV9KX1oYW5kbGVIcGFyYW1JbnRlcnZhbENoYW5nZWQodCxlKXtsZXR7bmFtZTpvLGZpbHRlcjppfT10O2lmKCFpKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTt0aGlzLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6byxpbmNsdWRlVW5kZWZpbmVkOmkuaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOmUubG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOmUudXBwZXJWYWx1ZX0pfWhhbmRsZUhwYXJhbURpc2NyZXRlQ2hhbmdlZCh0LGUpe2xldHtuYW1lOm8sZmlsdGVyOml9PXQ7aWYoIWkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO2lmKGkudHlwZSE9PWVpLkRJU0NSRVRFKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGV4cGVjdGVkIGRpc2NyZXRlIGRvbWFpbiBmb3IgJHtvfWApO2xldCBhPW5ldyBTZXQoWy4uLmkuZmlsdGVyVmFsdWVzXSk7YS5oYXMoZSk/YS5kZWxldGUoZSk6YS5hZGQoZSksdGhpcy5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZC5lbWl0KHtocGFyYW1OYW1lOm8saW5jbHVkZVVuZGVmaW5lZDppLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyVmFsdWVzOlsuLi5hXX0pfWhhbmRsZU1ldHJpY0luY2x1ZGVVbmRlZmluZWRDaGFuZ2VkKHQpe2lmKCF0LmZpbHRlcil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7dGhpcy5vbk1ldHJpY0ZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTp0LnRhZyxpbmNsdWRlVW5kZWZpbmVkOiF0LmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6dC5maWx0ZXIuZmlsdGVyTG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOnQuZmlsdGVyLmZpbHRlclVwcGVyVmFsdWV9KX1oYW5kbGVNZXRyaWNGaWx0ZXJDaGFuZ2VkKHQsZSl7aWYoIXQuZmlsdGVyKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTt0aGlzLm9uTWV0cmljRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOnQudGFnLGluY2x1ZGVVbmRlZmluZWQ6dC5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOmUubG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOmUudXBwZXJWYWx1ZX0pfXRyYWNrQnlIcGFyYW1Db2x1bW4odCl7cmV0dXJuIHQubmFtZX10cmFja0J5TWV0cmljQ29sdW1uKHQpe3JldHVybiB0LnRhZ319O1QwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFQwKX07VDAuXHUwMjc1Y21wPXooe3R5cGU6VDAsc2VsZWN0b3JzOltbInJ1bnMtdGFibGUtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHBlKHp6dCw3LEwpLHBlKGhjLDcpLHBlKHVzLDcpKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLmZpbHRlcj1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5wYWdpbmF0b3I9by5maXJzdCksSHQobz1GdCgpKSYmKGUuc29ydD1vLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZtZSgiZmxleC1sYXlvdXQiLGUudXNlRmxleGlibGVMYXlvdXQpfSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dFeHBlcmltZW50TmFtZToic2hvd0V4cGVyaW1lbnROYW1lIixjb2x1bW5zOiJjb2x1bW5zIixocGFyYW1Db2x1bW5zOiJocGFyYW1Db2x1bW5zIixtZXRyaWNDb2x1bW5zOiJtZXRyaWNDb2x1bW5zIixhbGxJdGVtc0xlbmd0aDoiYWxsSXRlbXNMZW5ndGgiLGZpbHRlcmVkSXRlbXNMZW5ndGg6ImZpbHRlcmVkSXRlbXNMZW5ndGgiLHVzZUZsZXhpYmxlTGF5b3V0OiJ1c2VGbGV4aWJsZUxheW91dCIsdXNlUGFnaW5hdGlvbjoidXNlUGFnaW5hdGlvbiIscGFnZUl0ZW1zOiJwYWdlSXRlbXMiLGxvYWRpbmc6ImxvYWRpbmciLG51bVNlbGVjdGVkSXRlbXM6Im51bVNlbGVjdGVkSXRlbXMiLHNvcnRPcHRpb246InNvcnRPcHRpb24iLHBhZ2luYXRpb25PcHRpb246InBhZ2luYXRpb25PcHRpb24iLHJlZ2V4RmlsdGVyOiJyZWdleEZpbHRlciJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJDaGFuZ2U6Im9uUmVnZXhGaWx0ZXJDaGFuZ2UiLG9uU2VsZWN0aW9uVG9nZ2xlOiJvblNlbGVjdGlvblRvZ2dsZSIsb25TZWxlY3Rpb25EYmxDbGljazoib25TZWxlY3Rpb25EYmxDbGljayIsb25QYWdlU2VsZWN0aW9uVG9nZ2xlOiJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLG9uUGFnaW5hdGlvbkNoYW5nZToib25QYWdpbmF0aW9uQ2hhbmdlIixvblNvcnRDaGFuZ2U6Im9uU29ydENoYW5nZSIsb25SdW5Db2xvckNoYW5nZToib25SdW5Db2xvckNoYW5nZSIsb25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQ6Im9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkIixvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZDoib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQiLG9uTWV0cmljRmlsdGVyQ2hhbmdlZDoib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIn0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpncyx1c2VDbGFzczokTX1dKSxXZV0sZGVjbHM6MTUsdmFyczo4LGNvbnN0czpbWzEsImZpbHRlci1yb3ciXSxbInBsYWNlaG9sZGVyIiwiRmlsdGVyIHJ1bnMgKHJlZ2V4KSIsMSwicnVuLWZpbHRlciIsMywidmFsdWUiLCJrZXl1cCJdLFsxLCJ0YWJsZS1jb250YWluZXIiXSxbInJvbGUiLCJ0YWJsZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWyJyb2xlIiwicm93Z3JvdXAiLDEsInJvd3MiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJjbGFzcyIsImxvYWRpbmciLDQsIm5nSWYiXSxbImNsYXNzIiwibm8tcnVucyIsNCwibmdJZiJdLFsic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLCIiLDMsInBhZ2VTaXplT3B0aW9ucyIsInBhZ2VJbmRleCIsInBhZ2VTaXplIiwibGVuZ3RoIiwicGFnZSIsNCwibmdJZiJdLFsiaGVhZGVyIiwiIl0sWyJyb3ciLCIiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImxvYWRpbmciXSxbIm1vZGUiLCJpbmRldGVybWluYXRlIiwiZGlhbWV0ZXIiLCIyOCJdLFsxLCJuby1ydW5zIl0sWyJzaG93Rmlyc3RMYXN0QnV0dG9ucyIsIiIsMywicGFnZVNpemVPcHRpb25zIiwicGFnZUluZGV4IiwicGFnZVNpemUiLCJsZW5ndGgiLCJwYWdlIl0sWyJyb2xlIiwicm93Z3JvdXAiLDEsImhlYWRlciJdLFsibWF0U29ydCIsIiIsInJvbGUiLCJyb3ciLDMsIm1hdFNvcnRBY3RpdmUiLCJtYXRTb3J0Q2hhbmdlIl0sWyJyb2xlIiwiY29sdW1uaGVhZGVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLCJjbGFzcyIsImNvbHVtbiIsMywibWF0LXNvcnQtaGVhZGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDMsIm5nQ2xhc3MiXSxbMywibmdTd2l0Y2giXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJtYXQtc29ydC1oZWFkZXIiLDQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbMywiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJjaGFuZ2UiXSxbMywibWF0LXNvcnQtaGVhZGVyIl0sWzMsImV4cGVyaW1lbnRJZHMiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImNvbHVtbiIsMywibWF0LXNvcnQtaGVhZGVyIl0sWzEsIm5hbWUiXSxbNCwibmdJZiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwzLCJtYXRNZW51VHJpZ2dlckZvciIsImNsaWNrIl0sWyJzdmdJY29uIiwiZmlsdGVyX2FsdF8yNHB4Il0sWyJmaWx0ZXJNZW51IiwibWF0TWVudSJdLFsibWF0LW1lbnUtaXRlbSIsIiIsInJvbGUiLCJtZW51aXRlbWNoZWNrYm94IiwiZGlzYWJsZVJpcHBsZSIsIiIsMSwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93IiwzLCJjbGljayJdLFszLCJjaGVja2VkIiwiY2hhbmdlIl0sWyJkaXNhYmxlUmlwcGxlIiwiIiwibWF0LW1lbnUtaXRlbSIsIiIsMSwicmFuZ2UtaW5wdXQtY29udGFpbmVyIiwzLCJjbGljayJdLFszLCJtaW4iLCJtYXgiLCJsb3dlclZhbHVlIiwidXBwZXJWYWx1ZSIsInJhbmdlVmFsdWVzQ2hhbmdlZCJdLFsibWF0LW1lbnUtaXRlbSIsIiIsImNsYXNzIiwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93Iiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLDMsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1jaGVja2JveCIsMSwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93IiwzLCJjbGljayJdLFsicm9sZSIsInJvdyJdLFsicm9sZSIsImNlbGwiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImNlbGwiLCJjbGFzcyIsImNvbHVtbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJyb2xlIiwiY2VsbCIsMywibmdDbGFzcyJdLFszLCJhbGlhcyIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsIm5hbWUiLDQsIm5nU3dpdGNoQ2FzZSJdLFsidGl0bGUiLCJDbGljayB0byB0b2dnbGUgcnVuIHNlbGVjdGlvbiBvciBkb3VibGUgY2xpY2sgdG8gc2VsZWN0IG9ubHkgdGhpcyBydW4uIiwzLCJjaGVja2VkIiwiY2hhbmdlIiwiZGJsY2xpY2siXSxbMywiYWxpYXMiXSxbMywibmdDbGFzcyIsImNvbG9yUGlja2VyIiwiY3BEaWFsb2dEaXNwbGF5IiwiY3BQb3NpdGlvbk9mZnNldCIsImNwVXNlUm9vdFZpZXdDb250YWluZXIiLCJjcE91dHB1dEZvcm1hdCIsImNvbG9yUGlja2VyQ2hhbmdlIl0sWyJyb2xlIiwiY2VsbCIsMSwiY29sdW1uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYodSgwLCJkaXYiLDApLHUoMSwidGItZmlsdGVyLWlucHV0IiwxKSxBKCJrZXl1cCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25GaWx0ZXJLZXlVcChpKX0pLGgoKSxoKCksdSgyLCJkaXYiLDIpLHUoMywiZGl2IiwzKSxrKDQsSHp0LDEsMCwibmctY29udGFpbmVyIiw0KSx1KDUsImRpdiIsNSksayg2LEJ6dCwyLDQsIm5nLWNvbnRhaW5lciIsNiksaCgpLGgoKSxrKDcsVnp0LDIsMCwiZGl2Iiw3KSxrKDgsanp0LDIsMCwiZGl2Iiw4KSxrKDksVXp0LDYsMSwiZGl2Iiw4KSxoKCksaygxMCxHenQsMSw1LCJtYXQtcGFnaW5hdG9yIiw5KSxrKDExLHI2dCw1LDYsIm5nLXRlbXBsYXRlIixudWxsLDEwLHhuKSxrKDEzLHU2dCw0LDQsIm5nLXRlbXBsYXRlIixudWxsLDExLHhuKSksdCYyKXtsZXQgbz13ZSgxMik7eCgxKSxXaSgidmFsdWUiLGUucmVnZXhGaWx0ZXIpLHgoMyksUCgibmdUZW1wbGF0ZU91dGxldCIsbykseCgyKSxQKCJuZ0Zvck9mIixlLnBhZ2VJdGVtcykoIm5nRm9yVHJhY2tCeSIsZS50YWJsZVRyYWNrQnkpLHgoMSksUCgibmdJZiIsZS5sb2FkaW5nKSx4KDEpLFAoIm5nSWYiLCFlLmxvYWRpbmcmJmUuYWxsSXRlbXNMZW5ndGg9PT0wKSx4KDEpLFAoIm5nSWYiLCFlLmxvYWRpbmcmJmUuYWxsSXRlbXNMZW5ndGg+MCYmZS5maWx0ZXJlZEl0ZW1zTGVuZ3RoPT09MCkseCgxKSxQKCJuZ0lmIixlLnVzZVBhZ2luYXRpb24pfX0sZGlyZWN0aXZlczpbQ20sTGEsbW4sWHQscXIsaGMsdXMsam4sR28sdWksX3IsYmYsazAsZm4sVXIsWGUsaHIsJGksUGQsUmwseWZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2ZvbnQtc2l6ZToxM3B4O292ZXJmbG93OmhpZGRlbn0uZmlsdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lfS50YWJsZS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46bGF5b3V0IHBhaW50O2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlO292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OmF1dG87d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLHNjcm9sbC1wb3NpdGlvbn0uZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgLm5hbWVbX25nY29udGVudC0lQ09NUCVde3dvcmQtYnJlYWs6YnJlYWstd29yZDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZy1ib3R0b206MTJweH1ib2R5LmRhcmstbW9kZSAgIC5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0gICBtYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZTt3aWR0aDoxMDAlfVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgW3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9Y29sdW1uaGVhZGVyXVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPWNvbHVtbmhlYWRlcl1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTp0YWJsZS1yb3c7aGVpZ2h0OjQzcHh9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVdICAgLmNvbHVtbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzo1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIFtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBbcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgW3JvbGU9cm93XVtfbmdjb250ZW50LSVDT01QJV0gICAuY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDoyNHB4fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDoyNHB4fVtyb2xlPXJvd2dyb3VwXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXB9W3JvbGU9cm93Z3JvdXBdLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9LmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdLCAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5sb2FkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm5vLXJ1bnNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OmNlbnRlcn0uc2VsZWN0LWFsbFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MTJweDtwYWRkaW5nLXRvcDoxMnB4fS5zZWxlY3QtYWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAuc2VsZWN0LWFsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNjt0ZXh0LWFsaWduOmxlZnR9LnNlbGVjdC1hbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nOjAgNHB4fS5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHggMCAyMXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LmZpbHRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgdGItZmlsdGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MX0udGItY29sdW1uLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIwcHh9LnRiLWNvbHVtbi1ydW5fY29sb3JbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246Y2VudGVyfS5ydW4tY29sb3Itc3dhdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7b3V0bGluZTpub25lfS5ydW4tY29sb3Itc3dhdGNoLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2M2Y2FkMTtib3JkZXItd2lkdGg6MnB4fS5yYW5nZS1pbnB1dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDphdXRvfVtfbmdob3N0LSVDT01QJV0gICAgIG1hdC1wYWdpbmF0b3IgbWF0LWZvcm0tZmllbGR7bWFyZ2luOjB9LmZpbHRlci1tZW51LWNoZWNrYm94LXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBtYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgICBsYWJlbHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyfS5maWx0ZXItbWVudS1jaGVja2JveC1yb3dbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgbGFiZWwgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6MH0uZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAgIGxhYmVsIC5tYXQtY2hlY2tib3gtbGFiZWx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgbWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhUMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InJ1bnMtdGFibGUtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoicnVuc190YWJsZV9jb21wb25lbnQubmcuaHRtbCIsaG9zdDp7IltjbGFzcy5mbGV4LWxheW91dF0iOiJ1c2VGbGV4aWJsZUxheW91dCJ9LHN0eWxlVXJsczpbInJ1bnNfdGFibGVfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gscHJvdmlkZXJzOlt7cHJvdmlkZTpncyx1c2VDbGFzczokTX1dfV19XSxudWxsLHtleHBlcmltZW50SWRzOlt7dHlwZTpkfV0sc2hvd0V4cGVyaW1lbnROYW1lOlt7dHlwZTpkfV0sY29sdW1uczpbe3R5cGU6ZH1dLGhwYXJhbUNvbHVtbnM6W3t0eXBlOmR9XSxtZXRyaWNDb2x1bW5zOlt7dHlwZTpkfV0sYWxsSXRlbXNMZW5ndGg6W3t0eXBlOmR9XSxmaWx0ZXJlZEl0ZW1zTGVuZ3RoOlt7dHlwZTpkfV0sdXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOmR9XSx1c2VQYWdpbmF0aW9uOlt7dHlwZTpkfV0scGFnZUl0ZW1zOlt7dHlwZTpkfV0sbG9hZGluZzpbe3R5cGU6ZH1dLG51bVNlbGVjdGVkSXRlbXM6W3t0eXBlOmR9XSxzb3J0T3B0aW9uOlt7dHlwZTpkfV0scGFnaW5hdGlvbk9wdGlvbjpbe3R5cGU6ZH1dLHJlZ2V4RmlsdGVyOlt7dHlwZTpkfV0sb25SZWdleEZpbHRlckNoYW5nZTpbe3R5cGU6Qn1dLG9uU2VsZWN0aW9uVG9nZ2xlOlt7dHlwZTpCfV0sb25TZWxlY3Rpb25EYmxDbGljazpbe3R5cGU6Qn1dLG9uUGFnZVNlbGVjdGlvblRvZ2dsZTpbe3R5cGU6Qn1dLG9uUGFnaW5hdGlvbkNoYW5nZTpbe3R5cGU6Qn1dLG9uU29ydENoYW5nZTpbe3R5cGU6Qn1dLG9uUnVuQ29sb3JDaGFuZ2U6W3t0eXBlOkJ9XSxvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZDpbe3R5cGU6Qn1dLG9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkOlt7dHlwZTpCfV0sb25NZXRyaWNGaWx0ZXJDaGFuZ2VkOlt7dHlwZTpCfV0sZmlsdGVyOlt7dHlwZTpJdCxhcmdzOlsiZmlsdGVyIix7c3RhdGljOiEwLHJlYWQ6TH1dfV0scGFnaW5hdG9yOlt7dHlwZTpJdCxhcmdzOltoYyx7c3RhdGljOiEwfV19XSxzb3J0Olt7dHlwZTpJdCxhcmdzOlt1cyx7c3RhdGljOiEwfV19XX0pfSkoKTt2YXIgXzZ0PWN0KFVFLG49Pm4uc3RhdGU9PT1LdC5MT0FESU5HKTtmdW5jdGlvbiBabHQobix0KXtzd2l0Y2godC50eXBlKXtjYXNlIGdQLkVYUEVSSU1FTlRfTkFNRTpyZXR1cm5bbi5leHBlcmltZW50QWxpYXMsbi5ydW4ubmFtZSxuLnJ1bi5pZF07Y2FzZSBnUC5SVU5fTkFNRTpyZXR1cm5bbi5ydW4ubmFtZSxuLmV4cGVyaW1lbnRBbGlhcyxuLnJ1bi5pZF07Y2FzZSBnUC5IUEFSQU06cmV0dXJuW24uaHBhcmFtcy5nZXQodC5uYW1lKSxuLnJ1bi5uYW1lLG4uZXhwZXJpbWVudEFsaWFzLG4ucnVuLmlkXTtjYXNlIGdQLk1FVFJJQzpyZXR1cm5bbi5tZXRyaWNzLmdldCh0LnRhZyksbi5ydW4ubmFtZSxuLmV4cGVyaW1lbnRBbGlhcyxuLnJ1bi5pZF07ZGVmYXVsdDpsZXQgZT10O3Rocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZDogJHtlfWApfX1mdW5jdGlvbiBDNnQobix0KXtsZXQgZT10LmtleSxvPVsuLi5uXTtyZXR1cm4gZT09PW51bGx8fHQuZGlyZWN0aW9uPT09d00uVU5TRVR8fG8uc29ydCgoaSxhKT0+e2xldCByPVpsdChpLGUpLHM9Wmx0KGEsZSk7aWYoci5sZW5ndGghPT1zLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEludmFyaWFudCBlcnJvcjogYSBnaXZlbiBzb3J0IHNob3VsZCByZXN1bHQgaW4gc2FtZSBudW1iZXIgb2YgaXRlbXM6ICR7dH1gKTtmb3IobGV0IGw9MDtsPHIubGVuZ3RoO2wrKyl7bGV0IGM9cltsXSxtPXNbbF07aWYoYyE9PW0pe2lmKGM9PT12b2lkIDB8fG09PT12b2lkIDApcmV0dXJuIG09PT12b2lkIDA/LTE6MTtpZih0eXBlb2YgYyE9dHlwZW9mIG0pdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29tcGFyZSB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzOiAke3R5cGVvZiBjfSB2cy4gJHt0eXBlb2YgbX1gKTtyZXR1cm4gYzxtPT0odC5kaXJlY3Rpb249PT13TS5BU0MpPy0xOjF9fXJldHVybiAwfSksb31mdW5jdGlvbiBYbHQobix0KXtyZXR1cm4gdD09PXZvaWQgMD9uLmluY2x1ZGVVbmRlZmluZWQ6bi50eXBlPT09ZWkuRElTQ1JFVEU/bi5maWx0ZXJWYWx1ZXMuaW5jbHVkZXModCk6bi50eXBlPT09ZWkuSU5URVJWQUw/bi5maWx0ZXJMb3dlclZhbHVlPD10JiZ0PD1uLmZpbHRlclVwcGVyVmFsdWU6ITF9dmFyIHhkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmxvYWRpbmckPW51bGwsdGhpcy5ocGFyYW1Db2x1bW5zJD1kbihbXSksdGhpcy5tZXRyaWNDb2x1bW5zJD1kbihbXSksdGhpcy51c2VGbGV4aWJsZUxheW91dD0hMSx0aGlzLnVzZVBhZ2luYXRpb249ITEsdGhpcy5jb2x1bW5zPVtmZC5SVU5fTkFNRV0sdGhpcy5zaG93SHBhcmFtc0FuZE1ldHJpY3M9ITEsdGhpcy5zb3J0T3B0aW9uJD10aGlzLnN0b3JlLnNlbGVjdChtVSksdGhpcy5wYWdpbmF0aW9uT3B0aW9uJD10aGlzLnN0b3JlLnNlbGVjdChjVSksdGhpcy5yZWdleEZpbHRlciQ9dGhpcy5zdG9yZS5zZWxlY3QoVXYpLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSnR9aXNFeHBlcmltZW50TmFtZVZpc2libGUoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUodD0+dD09PWZkLkVYUEVSSU1FTlRfTkFNRSl9bmdPbkluaXQoKXtsZXQgdD10aGlzLmV4cGVyaW1lbnRJZHMubWFwKGE9PnRoaXMuZ2V0UnVuVGFibGVJdGVtc0ZvckV4cGVyaW1lbnQoYSkpLGU9b24odCkucGlwZShHKGE9PltdLmNvbmNhdCguLi5hKSkpO3RoaXMuYWxsVW5zb3J0ZWRSdW5UYWJsZUl0ZW1zJD1lLnBpcGUoUGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxCZigxKSksdGhpcy5hbGxJdGVtc0xlbmd0aCQ9dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkLnBpcGUoRyhhPT5hLmxlbmd0aCkpO2xldCBvPXRoaXMuZ2V0RmlsdGVyZWRJdGVtcyQodGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkKS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksQmYoMSkpO3RoaXMuZmlsdGVyZWRJdGVtc0xlbmd0aCQ9by5waXBlKEcoYT0+YS5sZW5ndGgpKSx0aGlzLnBhZ2VJdGVtcyQ9dGhpcy5zb3J0ZWRBbmRTbGljZWRJdGVtcyQobyksdGhpcy5udW1TZWxlY3RlZEl0ZW1zJD10aGlzLmFsbFVuc29ydGVkUnVuVGFibGVJdGVtcyQucGlwZShHKGE9PmEucmVkdWNlKChyLHMpPT5yK051bWJlcihzLnNlbGVjdGVkKSwwKSkpO2xldCBpPXRoaXMuZXhwZXJpbWVudElkcy5tYXAoYT0+dGhpcy5zdG9yZS5zZWxlY3QoXzZ0LHtleHBlcmltZW50SWQ6YX0pKTtpZih0aGlzLmxvYWRpbmckPW9uKGkpLnBpcGUoRyhhPT5hLnNvbWUocj0+cikpKSx0aGlzLnNob3dIcGFyYW1zQW5kTWV0cmljcyl7bGV0IGE9dGhpcy5zdG9yZS5zZWxlY3QoUlAuZ2V0RXhwZXJpbWVudHNIcGFyYW1zQW5kTWV0cmljc1NwZWNzLHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pO3RoaXMuaHBhcmFtQ29sdW1ucyQ9b24oW3RoaXMuc3RvcmUuc2VsZWN0KFJQLmdldEhwYXJhbUZpbHRlck1hcCx0aGlzLmV4cGVyaW1lbnRJZHMpLGFdKS5waXBlKEcoKFtyLHtocGFyYW1zOnN9XSk9PnMubWFwKCh7bmFtZTpsLGRpc3BsYXlOYW1lOmMsZG9tYWluOm19KT0+e2xldCBmPXIuZ2V0KGwpO2lmKCFmKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZmlsdGVyIGZvciAke2x9IG11c3QgZXhpc3Qgd2hlbiB0aGUgaHBhcmFtIGV4aXN0c2ApO3JldHVybntkaXNwbGF5TmFtZTpjLG5hbWU6bCxmaWx0ZXI6Zn19KSkpLHRoaXMubWV0cmljQ29sdW1ucyQ9b24oW3RoaXMuc3RvcmUuc2VsZWN0KFJQLmdldE1ldHJpY0ZpbHRlck1hcCx0aGlzLmV4cGVyaW1lbnRJZHMpLGFdKS5waXBlKEcoKFtyLHttZXRyaWNzOnN9XSk9PnMubWFwKCh7dGFnOmwsZGlzcGxheU5hbWU6Y30pPT57bGV0IG09ci5nZXQobCk7aWYoIW0pdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFyaWFudCBlcnJvcjogYSBmaWx0ZXIgZm9yICR7bH0gbXVzdCBleGlzdCB3aGVuIHRoZSBtZXRyaWMgZXhpc3RzYCk7cmV0dXJue2Rpc3BsYXlOYW1lOmMsdGFnOmwsZmlsdGVyOm19fSkpKX10aGlzLmNvbHVtbnMuaW5jbHVkZXMoZmQuQ0hFQ0tCT1gpJiZ0aGlzLnN0b3JlLnNlbGVjdCh0cCkucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpLFhvKChyLHMpPT5LYyhyLHMpKSx0aSgoKT0+ZS5waXBlKHVlKHI9PnIubGVuZ3RoPlZFKSxDbigxKSkpKS5zdWJzY3JpYmUoKCk9PntsZXQgcj1gVGhlIG51bWJlciBvZiBydW5zIGV4Y2VlZHMgJHtWRX0uIE5ldyBydW5zIGFyZSB1bnNlbGVjdGVkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLmA7dGhpcy5zdG9yZS5kaXNwYXRjaCh2Myh7bG9jYWxpemVkTWVzc2FnZTpyfSkpfSksdGhpcy5zdG9yZS5kaXNwYXRjaCh3RCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHN9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfWdldEZpbHRlcmVkSXRlbXMkKHQpe3JldHVybiBvbihbdCx0aGlzLnN0b3JlLnNlbGVjdChVdildKS5waXBlKEcoKFtlLG9dKT0+e2lmKCFvKXJldHVybiBlO2xldCBpPXRoaXMuY29sdW1ucy5pbmNsdWRlcyhmZC5FWFBFUklNRU5UX05BTUUpO3JldHVybiBlLmZpbHRlcihhPT5LRCh7cnVuTmFtZTphLnJ1bi5uYW1lLGV4cGVyaW1lbnRBbGlhczphLmV4cGVyaW1lbnRBbGlhc30sbyxpKSl9KSx0aShlPT50aGlzLnNob3dIcGFyYW1zQW5kTWV0cmljcz9vbih0aGlzLnN0b3JlLnNlbGVjdChSUC5nZXRIcGFyYW1GaWx0ZXJNYXAsdGhpcy5leHBlcmltZW50SWRzKSx0aGlzLnN0b3JlLnNlbGVjdChSUC5nZXRNZXRyaWNGaWx0ZXJNYXAsdGhpcy5leHBlcmltZW50SWRzKSkucGlwZShHKChbbyxpXSk9PmUuZmlsdGVyKCh7aHBhcmFtczphLG1ldHJpY3M6cn0pPT5bLi4uby5lbnRyaWVzKCldLmV2ZXJ5KChbbCxjXSk9PntsZXQgbT1hLmdldChsKTtyZXR1cm4gWGx0KGMsbSl9KSYmWy4uLmkuZW50cmllcygpXS5ldmVyeSgoW2wsY10pPT57bGV0IG09ci5nZXQobCk7cmV0dXJuIFhsdChjLG0pfSkpKSk6ZG4oZSkpKX1zb3J0ZWRBbmRTbGljZWRJdGVtcyQodCl7bGV0IGU9b24oW3QsdGhpcy5zdG9yZS5zZWxlY3QobVUpXSkucGlwZShHKChbaSxhXSk9PkM2dChpLGEpKSk7cmV0dXJuIG9uKFtlLHRoaXMuc3RvcmUuc2VsZWN0KGNVKV0pLnBpcGUoRygoW2ksYV0pPT57aWYoIXRoaXMudXNlUGFnaW5hdGlvbilyZXR1cm4gaS5zbGljZSgpO2xldHtwYWdlU2l6ZTpyLHBhZ2VJbmRleDpzfT1hO3JldHVybiBpLnNsaWNlKHMqciwocysxKSpyKX0pLFNvKFtdKSl9Z2V0UnVuVGFibGVJdGVtc0ZvckV4cGVyaW1lbnQodCl7cmV0dXJuIG9uKFt0aGlzLnN0b3JlLnNlbGVjdCh0Tyx7ZXhwZXJpbWVudElkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdChrRCx7ZXhwZXJpbWVudElkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdChMciksdGhpcy5zdG9yZS5zZWxlY3Qoa18pLHRoaXMuc3RvcmUuc2VsZWN0KFpiKV0pLnBpcGUoRygoW2UsbyxpLGEscl0pPT5lLm1hcChzPT57bGV0IGw9bmV3IE1hcDsocy5ocGFyYW1zfHxbXSkuZm9yRWFjaChtPT57bC5zZXQobS5uYW1lLG0udmFsdWUpfSk7bGV0IGM9bmV3IE1hcDtyZXR1cm4ocy5tZXRyaWNzfHxbXSkuZm9yRWFjaChtPT57Yy5zZXQobS50YWcsbS52YWx1ZSl9KSx7cnVuOnMsZXhwZXJpbWVudE5hbWU6KG89PW51bGw/dm9pZCAwOm8ubmFtZSl8fCIiLGV4cGVyaW1lbnRBbGlhczpyW3RdLHNlbGVjdGVkOkJvb2xlYW4oaSYmaS5nZXQocy5pZCkpLHJ1bkNvbG9yOmFbcy5pZF0saHBhcmFtczpsLG1ldHJpY3M6Y319KSkpfW9uUnVuU2VsZWN0aW9uVG9nZ2xlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goYkQoe3J1bklkOnQucnVuLmlkfSkpfW9uUnVuU2VsZWN0aW9uRGJsQ2xpY2sodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChPRCh7cnVuSWQ6dC5ydW4uaWR9KSl9b25QYWdlU2VsZWN0aW9uVG9nZ2xlKHQpe2xldHtpdGVtczplfT10LG89ZS5tYXAoKHtydW46aX0pPT5pLmlkKTt0aGlzLnN0b3JlLmRpc3BhdGNoKFBEKHtydW5JZHM6b30pKX1vblBhZ2luYXRpb25DaGFuZ2UodCl7aWYoIXRoaXMudXNlUGFnaW5hdGlvbil0aHJvdyBuZXcgRXJyb3IoIlBhZ2luYXRpb24gZXZlbnRzIGNhbm5vdCBiZSBkaXNwYXRjaGVkIHdoZW4gcGFnaW5hdGlvbiBpcyBkaXNhYmxlZCIpO2xldHtwYWdlSW5kZXg6ZSxwYWdlU2l6ZTpvfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2goeUQoe3BhZ2VJbmRleDplLHBhZ2VTaXplOm99KSl9b25Tb3J0Q2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goeEQodCkpfW9uUmVnZXhGaWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChSRSh7cmVnZXhTdHJpbmc6dH0pKX1vblJ1bkNvbG9yQ2hhbmdlKHtydW5JZDp0LG5ld0NvbG9yOmV9KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHZEKHtydW5JZDp0LG5ld0NvbG9yOmV9KSl9b25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQodCl7bGV0e2hwYXJhbU5hbWU6ZSxmaWx0ZXJWYWx1ZXM6byxpbmNsdWRlVW5kZWZpbmVkOml9PXQ7dGhpcy5zdG9yZS5kaXNwYXRjaChIeS5ocGFyYW1zRGlzY3JldGVIcGFyYW1GaWx0ZXJDaGFuZ2VkKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyVmFsdWVzOm8saW5jbHVkZVVuZGVmaW5lZDppfSkpfW9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKHQpe2xldHtuYW1lOmUsZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aSxpbmNsdWRlVW5kZWZpbmVkOmF9PXQ7dGhpcy5zdG9yZS5kaXNwYXRjaChIeS5ocGFyYW1zSW50ZXJ2YWxIcGFyYW1GaWx0ZXJDaGFuZ2VkKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxocGFyYW1OYW1lOmUsZmlsdGVyTG93ZXJWYWx1ZTpvLGZpbHRlclVwcGVyVmFsdWU6aSxpbmNsdWRlVW5kZWZpbmVkOmF9KSl9b25NZXRyaWNGaWx0ZXJDaGFuZ2VkKHQpe2xldHtuYW1lOmUsaW5jbHVkZVVuZGVmaW5lZDpvLGZpbHRlckxvd2VyVmFsdWU6aSxmaWx0ZXJVcHBlclZhbHVlOmF9PXQ7dGhpcy5zdG9yZS5kaXNwYXRjaChIeS5ocGFyYW1zTWV0cmljRmlsdGVyQ2hhbmdlZCh7ZXhwZXJpbWVudElkczp0aGlzLmV4cGVyaW1lbnRJZHMsbWV0cmljVGFnOmUsaW5jbHVkZVVuZGVmaW5lZDpvLGZpbHRlckxvd2VyVmFsdWU6aSxmaWx0ZXJVcHBlclZhbHVlOmF9KSl9fTt4ZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx4ZCkodihzdCkpfTt4ZC5cdTAyNzVjbXA9eih7dHlwZTp4ZCxzZWxlY3RvcnM6W1sicnVucy10YWJsZSJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmbWUoImZsZXgtbGF5b3V0IixlLnVzZUZsZXhpYmxlTGF5b3V0KX0saW5wdXRzOnt1c2VGbGV4aWJsZUxheW91dDoidXNlRmxleGlibGVMYXlvdXQiLHVzZVBhZ2luYXRpb246InVzZVBhZ2luYXRpb24iLGNvbHVtbnM6ImNvbHVtbnMiLGV4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIn0sZGVjbHM6MTEsdmFyczozNSxjb25zdHM6W1szLCJleHBlcmltZW50SWRzIiwidXNlRmxleGlibGVMYXlvdXQiLCJudW1TZWxlY3RlZEl0ZW1zIiwiY29sdW1ucyIsImhwYXJhbUNvbHVtbnMiLCJtZXRyaWNDb2x1bW5zIiwic2hvd0V4cGVyaW1lbnROYW1lIiwicGFnZUl0ZW1zIiwiZmlsdGVyZWRJdGVtc0xlbmd0aCIsImFsbEl0ZW1zTGVuZ3RoIiwibG9hZGluZyIsInBhZ2luYXRpb25PcHRpb24iLCJyZWdleEZpbHRlciIsInNvcnRPcHRpb24iLCJ1c2VQYWdpbmF0aW9uIiwib25TZWxlY3Rpb25Ub2dnbGUiLCJvblNlbGVjdGlvbkRibENsaWNrIiwib25QYWdlU2VsZWN0aW9uVG9nZ2xlIiwib25QYWdpbmF0aW9uQ2hhbmdlIiwib25SZWdleEZpbHRlckNoYW5nZSIsIm9uU29ydENoYW5nZSIsIm9uUnVuQ29sb3JDaGFuZ2UiLCJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCIsIm9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkIiwib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJydW5zLXRhYmxlLWNvbXBvbmVudCIsMCksQSgib25TZWxlY3Rpb25Ub2dnbGUiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uUnVuU2VsZWN0aW9uVG9nZ2xlKGkpfSkoIm9uU2VsZWN0aW9uRGJsQ2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uUnVuU2VsZWN0aW9uRGJsQ2xpY2soaSl9KSgib25QYWdlU2VsZWN0aW9uVG9nZ2xlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblBhZ2VTZWxlY3Rpb25Ub2dnbGUoaSl9KSgib25QYWdpbmF0aW9uQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblBhZ2luYXRpb25DaGFuZ2UoaSl9KSgib25SZWdleEZpbHRlckNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25SZWdleEZpbHRlckNoYW5nZShpKX0pKCJvblNvcnRDaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uU29ydENoYW5nZShpKX0pKCJvblJ1bkNvbG9yQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblJ1bkNvbG9yQ2hhbmdlKGkpfSkoIm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZChpKX0pKCJvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQoaSl9KSgib25NZXRyaWNGaWx0ZXJDaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbk1ldHJpY0ZpbHRlckNoYW5nZWQoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksWCg1LCJhc3luYyIpLFgoNiwiYXN5bmMiKSxYKDcsImFzeW5jIiksWCg4LCJhc3luYyIpLFgoOSwiYXN5bmMiKSxYKDEwLCJhc3luYyIpLGgoKSksdCYyJiZQKCJleHBlcmltZW50SWRzIixlLmV4cGVyaW1lbnRJZHMpKCJ1c2VGbGV4aWJsZUxheW91dCIsZS51c2VGbGV4aWJsZUxheW91dCkoIm51bVNlbGVjdGVkSXRlbXMiLFEoMSwxNSxlLm51bVNlbGVjdGVkSXRlbXMkKSkoImNvbHVtbnMiLGUuY29sdW1ucykoImhwYXJhbUNvbHVtbnMiLFEoMiwxNyxlLmhwYXJhbUNvbHVtbnMkKSkoIm1ldHJpY0NvbHVtbnMiLFEoMywxOSxlLm1ldHJpY0NvbHVtbnMkKSkoInNob3dFeHBlcmltZW50TmFtZSIsZS5pc0V4cGVyaW1lbnROYW1lVmlzaWJsZSgpKSgicGFnZUl0ZW1zIixRKDQsMjEsZS5wYWdlSXRlbXMkKSkoImZpbHRlcmVkSXRlbXNMZW5ndGgiLFEoNSwyMyxlLmZpbHRlcmVkSXRlbXNMZW5ndGgkKSkoImFsbEl0ZW1zTGVuZ3RoIixRKDYsMjUsZS5hbGxJdGVtc0xlbmd0aCQpKSgibG9hZGluZyIsUSg3LDI3LGUubG9hZGluZyQpKSgicGFnaW5hdGlvbk9wdGlvbiIsUSg4LDI5LGUucGFnaW5hdGlvbk9wdGlvbiQpKSgicmVnZXhGaWx0ZXIiLFEoOSwzMSxlLnJlZ2V4RmlsdGVyJCkpKCJzb3J0T3B0aW9uIixRKDEwLDMzLGUuc29ydE9wdGlvbiQpKSgidXNlUGFnaW5hdGlvbiIsZS51c2VQYWdpbmF0aW9uKX0sZGlyZWN0aXZlczpbVDBdLHBpcGVzOltvZV0sc3R5bGVzOltgLmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSAgICA+IHJ1bnMtdGFibGUtY29tcG9uZW50W19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH1gXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh4ZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InJ1bnMtdGFibGUiLHRlbXBsYXRlOmAKICAgIDxydW5zLXRhYmxlLWNvbXBvbmVudAogICAgICBbZXhwZXJpbWVudElkc109ImV4cGVyaW1lbnRJZHMiCiAgICAgIFt1c2VGbGV4aWJsZUxheW91dF09InVzZUZsZXhpYmxlTGF5b3V0IgogICAgICBbbnVtU2VsZWN0ZWRJdGVtc109Im51bVNlbGVjdGVkSXRlbXMkIHwgYXN5bmMiCiAgICAgIFtjb2x1bW5zXT0iY29sdW1ucyIKICAgICAgW2hwYXJhbUNvbHVtbnNdPSJocGFyYW1Db2x1bW5zJCB8IGFzeW5jIgogICAgICBbbWV0cmljQ29sdW1uc109Im1ldHJpY0NvbHVtbnMkIHwgYXN5bmMiCiAgICAgIFtzaG93RXhwZXJpbWVudE5hbWVdPSJpc0V4cGVyaW1lbnROYW1lVmlzaWJsZSgpIgogICAgICBbcGFnZUl0ZW1zXT0icGFnZUl0ZW1zJCB8IGFzeW5jIgogICAgICBbZmlsdGVyZWRJdGVtc0xlbmd0aF09ImZpbHRlcmVkSXRlbXNMZW5ndGgkIHwgYXN5bmMiCiAgICAgIFthbGxJdGVtc0xlbmd0aF09ImFsbEl0ZW1zTGVuZ3RoJCB8IGFzeW5jIgogICAgICBbbG9hZGluZ109ImxvYWRpbmckIHwgYXN5bmMiCiAgICAgIFtwYWdpbmF0aW9uT3B0aW9uXT0icGFnaW5hdGlvbk9wdGlvbiQgfCBhc3luYyIKICAgICAgW3JlZ2V4RmlsdGVyXT0icmVnZXhGaWx0ZXIkIHwgYXN5bmMiCiAgICAgIFtzb3J0T3B0aW9uXT0ic29ydE9wdGlvbiQgfCBhc3luYyIKICAgICAgW3VzZVBhZ2luYXRpb25dPSJ1c2VQYWdpbmF0aW9uIgogICAgICAob25TZWxlY3Rpb25Ub2dnbGUpPSJvblJ1blNlbGVjdGlvblRvZ2dsZSgkZXZlbnQpIgogICAgICAob25TZWxlY3Rpb25EYmxDbGljayk9Im9uUnVuU2VsZWN0aW9uRGJsQ2xpY2soJGV2ZW50KSIKICAgICAgKG9uUGFnZVNlbGVjdGlvblRvZ2dsZSk9Im9uUGFnZVNlbGVjdGlvblRvZ2dsZSgkZXZlbnQpIgogICAgICAob25QYWdpbmF0aW9uQ2hhbmdlKT0ib25QYWdpbmF0aW9uQ2hhbmdlKCRldmVudCkiCiAgICAgIChvblJlZ2V4RmlsdGVyQ2hhbmdlKT0ib25SZWdleEZpbHRlckNoYW5nZSgkZXZlbnQpIgogICAgICAob25Tb3J0Q2hhbmdlKT0ib25Tb3J0Q2hhbmdlKCRldmVudCkiCiAgICAgIChvblJ1bkNvbG9yQ2hhbmdlKT0ib25SdW5Db2xvckNoYW5nZSgkZXZlbnQpIgogICAgICAob25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQpPSJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCgkZXZlbnQpIgogICAgICAob25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQpPSJvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCgkZXZlbnQpIgogICAgICAob25NZXRyaWNGaWx0ZXJDaGFuZ2VkKT0ib25NZXRyaWNGaWx0ZXJDaGFuZ2VkKCRldmVudCkiCiAgICA+PC9ydW5zLXRhYmxlLWNvbXBvbmVudD4KICBgLGhvc3Q6eyJbY2xhc3MuZmxleC1sYXlvdXRdIjoidXNlRmxleGlibGVMYXlvdXQifSxzdHlsZXM6W2AKICAgICAgOmhvc3QuZmxleC1sYXlvdXQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIDpob3N0LmZsZXgtbGF5b3V0ID4gcnVucy10YWJsZS1jb21wb25lbnQgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICBgXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSx7dXNlRmxleGlibGVMYXlvdXQ6W3t0eXBlOmR9XSx1c2VQYWdpbmF0aW9uOlt7dHlwZTpkfV0sY29sdW1uczpbe3R5cGU6ZH1dLGV4cGVyaW1lbnRJZHM6W3t0eXBlOmR9XSxzaG93SHBhcmFtc0FuZE1ldHJpY3M6W3t0eXBlOmR9XX0pfSkoKTt2YXIgQTA9Y2xhc3N7fTtBMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxBMCl9O0EwLlx1MDI3NWNtcD16KHt0eXBlOkEwLHNlbGVjdG9yczpbWyJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCJdXSxpbnB1dHM6e2V4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIixjb2x1bW5zOiJjb2x1bW5zIn0sZGVjbHM6MSx2YXJzOjQsY29uc3RzOltbMywidXNlRmxleGlibGVMYXlvdXQiLCJjb2x1bW5zIiwiZXhwZXJpbWVudElkcyIsInNob3dIcGFyYW1zQW5kTWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmRCgwLCJydW5zLXRhYmxlIiwwKSx0JjImJlAoInVzZUZsZXhpYmxlTGF5b3V0IiwhMCkoImNvbHVtbnMiLGUuY29sdW1ucykoImV4cGVyaW1lbnRJZHMiLGUuZXhwZXJpbWVudElkcykoInNob3dIcGFyYW1zQW5kTWV0cmljcyIsZS5zaG93SHBhcmFtc0FuZE1ldHJpY3MpfSxkaXJlY3RpdmVzOlt4ZF0sc3R5bGVzOltgcnVucy10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfWBdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEEwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoicnVucy1zZWxlY3Rvci1jb21wb25lbnQiLHRlbXBsYXRlOmAKICAgIDxydW5zLXRhYmxlCiAgICAgIFt1c2VGbGV4aWJsZUxheW91dF09InRydWUiCiAgICAgIFtjb2x1bW5zXT0iY29sdW1ucyIKICAgICAgW2V4cGVyaW1lbnRJZHNdPSJleHBlcmltZW50SWRzIgogICAgICBbc2hvd0hwYXJhbXNBbmRNZXRyaWNzXT0ic2hvd0hwYXJhbXNBbmRNZXRyaWNzIgogICAgPjwvcnVucy10YWJsZT4KICBgLHN0eWxlczpbYAogICAgICBydW5zLXRhYmxlIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIGBdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2V4cGVyaW1lbnRJZHM6W3t0eXBlOmR9XSxzaG93SHBhcmFtc0FuZE1ldHJpY3M6W3t0eXBlOmR9XSxjb2x1bW5zOlt7dHlwZTpkfV19KX0pKCk7dmFyIEVsPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmV4cGVyaW1lbnRJZHMkPXRoaXMuc3RvcmUuc2VsZWN0KEpzKS5waXBlKEcoZT0+ZSE9bnVsbD9lOltdKSksdGhpcy5jb2x1bW5zJD10aGlzLnN0b3JlLnNlbGVjdChKcykucGlwZShHKGU9PltmZC5DSEVDS0JPWCxmZC5SVU5fTkFNRSxlJiZlLmxlbmd0aD4xP2ZkLkVYUEVSSU1FTlRfTkFNRTpudWxsLGZkLlJVTl9DT0xPUl0uZmlsdGVyKG89Pm8hPT1udWxsKSkpfX07RWwuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RWwpKHYoc3QpKX07RWwuXHUwMjc1Y21wPXooe3R5cGU6RWwsc2VsZWN0b3JzOltbInJ1bnMtc2VsZWN0b3IiXV0saW5wdXRzOntzaG93SHBhcmFtc0FuZE1ldHJpY3M6InNob3dIcGFyYW1zQW5kTWV0cmljcyJ9LGRlY2xzOjMsdmFyczo3LGNvbnN0czpbWzMsImV4cGVyaW1lbnRJZHMiLCJjb2x1bW5zIiwic2hvd0hwYXJhbXNBbmRNZXRyaWNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJydW5zLXNlbGVjdG9yLWNvbXBvbmVudCIsMCksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSksdCYyJiZQKCJleHBlcmltZW50SWRzIixRKDEsMyxlLmV4cGVyaW1lbnRJZHMkKSkoImNvbHVtbnMiLFEoMiw1LGUuY29sdW1ucyQpKSgic2hvd0hwYXJhbXNBbmRNZXRyaWNzIixlLnNob3dIcGFyYW1zQW5kTWV0cmljcyl9LGRpcmVjdGl2ZXM6W0EwXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhFbCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InJ1bnMtc2VsZWN0b3IiLHRlbXBsYXRlOmAKICAgIDxydW5zLXNlbGVjdG9yLWNvbXBvbmVudAogICAgICBbZXhwZXJpbWVudElkc109ImV4cGVyaW1lbnRJZHMkIHwgYXN5bmMiCiAgICAgIFtjb2x1bW5zXT0iY29sdW1ucyQgfCBhc3luYyIKICAgICAgW3Nob3dIcGFyYW1zQW5kTWV0cmljc109InNob3dIcGFyYW1zQW5kTWV0cmljcyIKICAgID48L3J1bnMtc2VsZWN0b3ItY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se3Nob3dIcGFyYW1zQW5kTWV0cmljczpbe3R5cGU6ZH1dfSl9KSgpO3ZhciByRz1uZXcgV2Vha01hcCxxaz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucm9vdD10LHRoaXMuYnVmZmVyPWUsdGhpcy5kZXN0cm95ZWRUYXJnZXRzPW5ldyBXZWFrU2V0fWluaXRpYWxpemUodCl7dmFyIGU7aWYodGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcilyZXR1cm47dGhpcy5pbnRlcnNlY3Rpb25DYWxsYmFjaz10O2xldCBvPXt0aHJlc2hvbGQ6MCxyb290OihlPXRoaXMucm9vdCkhPT1udWxsJiZlIT09dm9pZCAwP2U6bnVsbH07dGhpcy5idWZmZXImJihvLnJvb3RNYXJnaW49dGhpcy5idWZmZXIpLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKHRoaXMub25DYXJkSW50ZXJzZWN0aW9uLmJpbmQodGhpcyksbyl9YWRkKHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKHQpfXdpbGxEZXN0cm95KHQpe3RoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKSYmdGhpcy5kZXN0cm95ZWRUYXJnZXRzLmFkZCh0KX1lbnN1cmVJbml0aWFsaXplZCgpe2lmKCF0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyKXRocm93IG5ldyBFcnJvcigiQ2FyZE9ic2VydmVyIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHVzZSIpO3JldHVybiEwfW9uQ2FyZEludGVyc2VjdGlvbih0KXt0LnNvcnQoKGksYSk9PmkudGltZS1hLnRpbWUpO2xldCBlPW5ldyBTZXQsbz1uZXcgU2V0O2ZvcihsZXR7aXNJbnRlcnNlY3Rpbmc6aSx0YXJnZXQ6YX1vZiB0KWk/KGUuYWRkKGEpLG8uZGVsZXRlKGEpKTooZS5kZWxldGUoYSksby5hZGQoYSkpLHRoaXMuZGVzdHJveWVkVGFyZ2V0cy5oYXMoYSkmJiFpJiYodGhpcy5kZXN0cm95ZWRUYXJnZXRzLmRlbGV0ZShhKSx0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLnVub2JzZXJ2ZShhKSk7dGhpcy5pbnRlcnNlY3Rpb25DYWxsYmFjayhlLG8pfW9uQ2FyZEludGVyc2VjdGlvbkZvclRlc3QodCl7dGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24odCl9fSx2ZD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuaG9zdD10LHRoaXMuc3RvcmU9ZX1vbkNhcmRJbnRlcnNlY3Rpb24odCxlKXtsZXQgbz1bLi4udF0ubWFwKGE9PntsZXQgcj1yRy5nZXQoYSk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJBIENhcmRPYnNlcnZlciBlbGVtZW50IG11c3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGVsZW1lbnQgaWQgYW5kIGNhcmQgaWQuIik7cmV0dXJue2VsZW1lbnRJZDpyLmVsZW1lbnRJZCxjYXJkSWQ6ci5jYXJkSWR9fSksaT1bLi4uZV0ubWFwKGE9PntsZXQgcj1yRy5nZXQoYSk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJBIENhcmRPYnNlcnZlciBlbGVtZW50IG11c3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGVsZW1lbnQgaWQgYW5kIGNhcmQgaWQuIik7cmV0dXJue2VsZW1lbnRJZDpyLmVsZW1lbnRJZCxjYXJkSWQ6ci5jYXJkSWR9fSk7dGhpcy5zdG9yZS5kaXNwYXRjaChpMih7ZW50ZXJlZENhcmRzOm8sZXhpdGVkQ2FyZHM6aX0pKX1uZ09uSW5pdCgpe2xldCB0PXRoaXMuaG9zdC5uYXRpdmVFbGVtZW50O3JHLnNldCh0LHtlbGVtZW50SWQ6Umx0KCksY2FyZElkOnRoaXMuY2FyZElkfSksdGhpcy5jYXJkT2JzZXJ2ZXJ8fCh0aGlzLmNhcmRPYnNlcnZlcj1uZXcgcWspLHRoaXMuY2FyZE9ic2VydmVyLmluaXRpYWxpemUodGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24uYmluZCh0aGlzKSksdGhpcy5jYXJkT2JzZXJ2ZXIuYWRkKHQpfW5nT25EZXN0cm95KCl7dGhpcy5jYXJkT2JzZXJ2ZXImJnRoaXMuY2FyZE9ic2VydmVyLndpbGxEZXN0cm95KHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KX1ob3N0Rm9yVGVzdCgpe3JldHVybiB0aGlzLmhvc3R9fTt2ZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx2ZCkodihMKSx2KHN0KSl9O3ZkLlx1MDI3NWRpcj12dCh7dHlwZTp2ZCxzZWxlY3RvcnM6W1siIiwiY2FyZExhenlMb2FkZXIiLCIiXV0saW5wdXRzOntjYXJkSWQ6WyJjYXJkTGF6eUxvYWRlciIsImNhcmRJZCJdLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModmQsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW2NhcmRMYXp5TG9hZGVyXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOnN0fV19LHtjYXJkSWQ6W3t0eXBlOmQsYXJnczpbImNhcmRMYXp5TG9hZGVyIl19XSxjYXJkT2JzZXJ2ZXI6W3t0eXBlOmR9XX0pfSkoKTtmdW5jdGlvbiBQNnQobix0KXtuJjEmJkQoMCwibWF0LWljb24iLDcpfWZ1bmN0aW9uIHk2dChuLHQpe2lmKG4mMSYmKHUoMCwibWF0LW9wdGlvbiIsOCksVCgxKSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQ7UCgidmFsdWUiLGUpLHJlKCJ0aXRsZSIsZSkseCgxKSxJZShlKX19ZnVuY3Rpb24geDZ0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDkpLHUoMSwiZW0iKSxUKDIpLFgoMywibnVtYmVyIiksaCgpLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgyKSxsZSgiYW5kICIsUSgzLDEsZS5jb21wbGV0aW9ucy5sZW5ndGgtMjUpLCIgbW9yZSB0YWdzIG1hdGNoZWQiKX19dmFyIEQwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3ICR9b25Db21wbGV0aW9uQWNjZXB0ZWQodCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChaYXQodCkpfX07RDAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RDApfTtEMC5cdTAyNzVjbXA9eih7dHlwZTpEMCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMiYmbWUoInZhbGlkIixlLmlzUmVnZXhGaWx0ZXJWYWxpZCl9LGlucHV0czp7cmVnZXhGaWx0ZXJWYWx1ZToicmVnZXhGaWx0ZXJWYWx1ZSIsaXNSZWdleEZpbHRlclZhbGlkOiJpc1JlZ2V4RmlsdGVyVmFsaWQiLGNvbXBsZXRpb25zOiJjb21wbGV0aW9ucyJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZToib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIn0sZGVjbHM6Nyx2YXJzOjUsY29uc3RzOltbMSwidGFnLWZpbHRlciJdLFsicGxhY2Vob2xkZXIiLCJGaWx0ZXIgdGFncyAocmVnZXgpIiwzLCJ2YWx1ZSIsIm1hdEF1dG9jb21wbGV0ZSIsImlucHV0Il0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsImNsYXNzIiwiZXJyb3ItaWNvbiIsInRpdGxlIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsNCwibmdJZiJdLFsxLCJ0YWctb3B0aW9ucyIsMywib3B0aW9uU2VsZWN0ZWQiXSxbImZpbHRlck1hdGNoZXMiLCJtYXRBdXRvY29tcGxldGUiXSxbImNsYXNzIiwib3B0aW9uIiwzLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsImFuZC1tb3JlIiw0LCJuZ0lmIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsInRpdGxlIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdLFsxLCJvcHRpb24iLDMsInZhbHVlIl0sWzEsImFuZC1tb3JlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYodSgwLCJkaXYiLDApLHUoMSwidGItZmlsdGVyLWlucHV0IiwxKSxBKCJpbnB1dCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoaS50YXJnZXQudmFsdWUpfSksaCgpLGsoMixQNnQsMSwwLCJtYXQtaWNvbiIsMiksaCgpLHUoMywibWF0LWF1dG9jb21wbGV0ZSIsMyw0KSxBKCJvcHRpb25TZWxlY3RlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25Db21wbGV0aW9uQWNjZXB0ZWQoaS5vcHRpb24udmFsdWUpfSksayg1LHk2dCwyLDMsIm1hdC1vcHRpb24iLDUpLGsoNix4NnQsNCwzLCJkaXYiLDYpLGgoKSksdCYyKXtsZXQgbz13ZSg0KTt4KDEpLFAoInZhbHVlIixlLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLG8pLHgoMSksUCgibmdJZiIsIWUuaXNSZWdleEZpbHRlclZhbGlkKSx4KDMpLFAoIm5nRm9yT2YiLGUuY29tcGxldGlvbnM9PW51bGw/bnVsbDplLmNvbXBsZXRpb25zLnNsaWNlKDAsMjUpKSx4KDEpLFAoIm5nSWYiLChlLmNvbXBsZXRpb25zPT1udWxsP251bGw6ZS5jb21wbGV0aW9ucy5sZW5ndGgpPjI1KX19LGRpcmVjdGl2ZXM6W0NtLFh0LGFsLG1uLFhlLElpXSxwaXBlczpbWGFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LnRhZy1maWx0ZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX10Yi1maWx0ZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZ3JvdzoxfVtfbmdob3N0LSVDT01QJV17Y29sb3I6IzIxMjEyMX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV17Y29sb3I6I2ZmZn1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpe2NvbG9yOiNjNjI4Mjh9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKSAgIC5lcnJvci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYzYyODI4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9ICAudGFnLW9wdGlvbnMgLm9wdGlvbiwgICAudGFnLW9wdGlvbnMgLmFuZC1tb3Jley13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWxpbmUtY2xhbXA6MztkaXNwbGF5Oi13ZWJraXQtYm94O2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNDtwYWRkaW5nOjhweCAxNnB4fSAgLnRhZy1vcHRpb25zIC5hbmQtbW9yZXtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgICAgLnRhZy1vcHRpb25zIC5hbmQtbW9yZSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgICAudGFnLW9wdGlvbnMgLmFuZC1tb3Jle2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEQwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6ImZpbHRlcl9pbnB1dF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiZmlsdGVyX2lucHV0X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtyZWdleEZpbHRlclZhbHVlOlt7dHlwZTpkfV0saXNSZWdleEZpbHRlclZhbGlkOlt7dHlwZTpIYSxhcmdzOlsiY2xhc3MudmFsaWQiXX0se3R5cGU6ZH1dLGNvbXBsZXRpb25zOlt7dHlwZTpkfV0sb25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOlt7dHlwZTpCfV19KX0pKCk7dmFyIEkwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnRhZ0ZpbHRlciQ9dGhpcy5zdG9yZS5zZWxlY3QoeE0pLHRoaXMuaXNUYWdGaWx0ZXJSZWdleFZhbGlkJD10aGlzLnRhZ0ZpbHRlciQucGlwZShHKGU9Pnt0cnl7cmV0dXJuIG5ldyBSZWdFeHAoZSksITB9Y2F0Y2gobyl7cmV0dXJuITF9fSkpLHRoaXMuY29tcGxldGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KEhEKS5waXBlKFBhKHRoaXMuc3RvcmUuc2VsZWN0KCRiKSksRygoW2Usb10pPT5lLmZpbHRlcigoe3BsdWdpbjppfSk9PiFvLnNpemV8fG8uaGFzKGkpKS5tYXAoKHt0YWc6aX0pPT5pKSksRyhlPT5bLi4ubmV3IFNldChlKV0pLEcoZT0+ZS5zb3J0KFZrKSksUGEodGhpcy5zdG9yZS5zZWxlY3QoeE0pKSxHKChbZSxvXSk9Pnt0cnl7bGV0IGk9bmV3IFJlZ0V4cChvLCJpIik7cmV0dXJuW2UsaV19Y2F0Y2goaSl7cmV0dXJuW2UsbnVsbF19fSksdWUoKFssZV0pPT5lIT09bnVsbCksRygoW2Usb10pPT5lLmZpbHRlcihpPT5vLnRlc3QoaSkpKSl9b25UYWdGaWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChZeih7dGFnRmlsdGVyOnR9KSl9fTtJMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxJMCkodihzdCkpfTtJMC5cdTAyNzVjbXA9eih7dHlwZTpJMCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJlZ2V4RmlsdGVyVmFsdWUiLCJpc1JlZ2V4RmlsdGVyVmFsaWQiLCJjb21wbGV0aW9ucyIsIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCIsMCksQSgib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblRhZ0ZpbHRlckNoYW5nZShpKX0pLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpLGgoKSksdCYyJiZQKCJyZWdleEZpbHRlclZhbHVlIixRKDEsMyxlLnRhZ0ZpbHRlciQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixRKDIsNSxlLmlzVGFnRmlsdGVyUmVnZXhWYWxpZCQpKSgiY29tcGxldGlvbnMiLFEoMyw3LGUuY29tcGxldGlvbnMkKSl9LGRpcmVjdGl2ZXM6W0QwXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtdGFnLWZpbHRlciIsdGVtcGxhdGU6YAogICAgPG1ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQKICAgICAgW3JlZ2V4RmlsdGVyVmFsdWVdPSJ0YWdGaWx0ZXIkIHwgYXN5bmMiCiAgICAgIFtpc1JlZ2V4RmlsdGVyVmFsaWRdPSJpc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkIHwgYXN5bmMiCiAgICAgIFtjb21wbGV0aW9uc109ImNvbXBsZXRpb25zJCB8IGFzeW5jIgogICAgICAob25SZWdleEZpbHRlclZhbHVlQ2hhbmdlKT0ib25UYWdGaWx0ZXJDaGFuZ2UoJGV2ZW50KSIKICAgID48L21ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIFM2dD1bImJ1dHRvbiJdLFI2dD1bIioiXSxtMj1uZXcgeXQoIk1BVF9CVVRUT05fVE9HR0xFX0RFRkFVTFRfT1BUSU9OUyIpLFprPW5ldyB5dCgiTWF0QnV0dG9uVG9nZ2xlR3JvdXAiKSxRbHQ9e3Byb3ZpZGU6amEsdXNlRXhpc3Rpbmc6dG8oKCk9PlVzKSxtdWx0aTohMH0sS2x0PTAsaTY9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9ZX19LFVzPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5fY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLl92ZXJ0aWNhbD0hMSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX25hbWU9YG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLSR7S2x0Kyt9YCx0aGlzLnZhbHVlQ2hhbmdlPW5ldyAkLHRoaXMuY2hhbmdlPW5ldyAkLHRoaXMuYXBwZWFyYW5jZT1lJiZlLmFwcGVhcmFuY2U/ZS5hcHBlYXJhbmNlOiJzdGFuZGFyZCJ9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh0KXt0aGlzLl9uYW1lPXQsdGhpcy5fYnV0dG9uVG9nZ2xlcyYmdGhpcy5fYnV0dG9uVG9nZ2xlcy5mb3JFYWNoKGU9PntlLm5hbWU9dGhpcy5fbmFtZSxlLl9tYXJrRm9yQ2hlY2soKX0pfWdldCB2ZXJ0aWNhbCgpe3JldHVybiB0aGlzLl92ZXJ0aWNhbH1zZXQgdmVydGljYWwodCl7dGhpcy5fdmVydGljYWw9WmUodCl9Z2V0IHZhbHVlKCl7bGV0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWw/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6W107cmV0dXJuIHRoaXMubXVsdGlwbGU/dC5tYXAoZT0+ZS52YWx1ZSk6dFswXT90WzBdLnZhbHVlOnZvaWQgMH1zZXQgdmFsdWUodCl7dGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSl9Z2V0IHNlbGVjdGVkKCl7bGV0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWw/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6W107cmV0dXJuIHRoaXMubXVsdGlwbGU/dDp0WzBdfHxudWxsfWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7dGhpcy5fbXVsdGlwbGU9WmUodCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1aZSh0KSx0aGlzLl9idXR0b25Ub2dnbGVzJiZ0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goZT0+ZS5fbWFya0ZvckNoZWNrKCkpfW5nT25Jbml0KCl7dGhpcy5fc2VsZWN0aW9uTW9kZWw9bmV3ICR5KHRoaXMubXVsdGlwbGUsdm9pZCAwLCExKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoLi4udGhpcy5fYnV0dG9uVG9nZ2xlcy5maWx0ZXIodD0+dC5jaGVja2VkKSl9d3JpdGVWYWx1ZSh0KXt0aGlzLnZhbHVlPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXR9X2VtaXRDaGFuZ2VFdmVudCgpe2xldCB0PXRoaXMuc2VsZWN0ZWQsZT1BcnJheS5pc0FycmF5KHQpP3RbdC5sZW5ndGgtMV06dCxvPW5ldyBpNihlLHRoaXMudmFsdWUpO3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oby52YWx1ZSksdGhpcy5jaGFuZ2UuZW1pdChvKX1fc3luY0J1dHRvblRvZ2dsZSh0LGUsbz0hMSxpPSExKXshdGhpcy5tdWx0aXBsZSYmdGhpcy5zZWxlY3RlZCYmIXQuY2hlY2tlZCYmKHRoaXMuc2VsZWN0ZWQuY2hlY2tlZD0hMSksdGhpcy5fc2VsZWN0aW9uTW9kZWw/ZT90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCk6dGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3QodCk6aT0hMCxpP1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRoaXMuX3VwZGF0ZU1vZGVsVmFsdWUobykpOnRoaXMuX3VwZGF0ZU1vZGVsVmFsdWUobyl9X2lzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsJiZ0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHQpfV9pc1ByZWNoZWNrZWQodCl7cmV0dXJuIHR5cGVvZiB0aGlzLl9yYXdWYWx1ZT09InVuZGVmaW5lZCI/ITE6dGhpcy5tdWx0aXBsZSYmQXJyYXkuaXNBcnJheSh0aGlzLl9yYXdWYWx1ZSk/dGhpcy5fcmF3VmFsdWUuc29tZShlPT50LnZhbHVlIT1udWxsJiZlPT09dC52YWx1ZSk6dC52YWx1ZT09PXRoaXMuX3Jhd1ZhbHVlfV9zZXRTZWxlY3Rpb25CeVZhbHVlKHQpe2lmKHRoaXMuX3Jhd1ZhbHVlPXQsISF0aGlzLl9idXR0b25Ub2dnbGVzKWlmKHRoaXMubXVsdGlwbGUmJnQpe2lmKCFBcnJheS5pc0FycmF5KHQpJiYodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIlZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuIik7dGhpcy5fY2xlYXJTZWxlY3Rpb24oKSx0LmZvckVhY2goZT0+dGhpcy5fc2VsZWN0VmFsdWUoZSkpfWVsc2UgdGhpcy5fY2xlYXJTZWxlY3Rpb24oKSx0aGlzLl9zZWxlY3RWYWx1ZSh0KX1fY2xlYXJTZWxlY3Rpb24oKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLHRoaXMuX2J1dHRvblRvZ2dsZXMuZm9yRWFjaCh0PT50LmNoZWNrZWQ9ITEpfV9zZWxlY3RWYWx1ZSh0KXtsZXQgZT10aGlzLl9idXR0b25Ub2dnbGVzLmZpbmQobz0+by52YWx1ZSE9bnVsbCYmby52YWx1ZT09PXQpO2UmJihlLmNoZWNrZWQ9ITAsdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KGUpKX1fdXBkYXRlTW9kZWxWYWx1ZSh0KXt0JiZ0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSl9fTtVcy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxVcykodihUdCksdihtMiw4KSl9O1VzLlx1MDI3NWRpcj12dCh7dHlwZTpVcyxzZWxlY3RvcnM6W1sibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24odCxlLG8pe2lmKHQmMSYmZ28obyxNbSw1KSx0JjIpe2xldCBpO0h0KGk9RnQoKSkmJihlLl9idXR0b25Ub2dnbGVzPWkpfX0saG9zdEF0dHJzOlsicm9sZSIsImdyb3VwIiwxLCJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiYocmUoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQpLG1lKCJtYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCIsZS52ZXJ0aWNhbCkoIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQiLGUuYXBwZWFyYW5jZT09PSJzdGFuZGFyZCIpKX0saW5wdXRzOnthcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixuYW1lOiJuYW1lIix2ZXJ0aWNhbDoidmVydGljYWwiLHZhbHVlOiJ2YWx1ZSIsbXVsdGlwbGU6Im11bHRpcGxlIixkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOnt2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UiLGNoYW5nZToiY2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRCdXR0b25Ub2dnbGVHcm91cCJdLGZlYXR1cmVzOltUZShbUWx0LHtwcm92aWRlOlprLHVzZUV4aXN0aW5nOlVzfV0pXX0pO1VzLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VHR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W20yXX1dfV07VXMucHJvcERlY29yYXRvcnM9e19idXR0b25Ub2dnbGVzOlt7dHlwZTpsbyxhcmdzOlt0bygoKT0+TW0pLHtkZXNjZW5kYW50czohMH1dfV0sYXBwZWFyYW5jZTpbe3R5cGU6ZH1dLG5hbWU6W3t0eXBlOmR9XSx2ZXJ0aWNhbDpbe3R5cGU6ZH1dLHZhbHVlOlt7dHlwZTpkfV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkJ9XSxtdWx0aXBsZTpbe3R5cGU6ZH1dLGRpc2FibGVkOlt7dHlwZTpkfV0sY2hhbmdlOlt7dHlwZTpCfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhVcyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCIscHJvdmlkZXJzOltRbHQse3Byb3ZpZGU6WmssdXNlRXhpc3Rpbmc6VXN9XSxob3N0Ontyb2xlOiJncm91cCIsY2xhc3M6Im1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbF0iOiJ2ZXJ0aWNhbCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkXSI6J2FwcGVhcmFuY2UgPT09ICJzdGFuZGFyZCInfSxleHBvcnRBczoibWF0QnV0dG9uVG9nZ2xlR3JvdXAifV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbbTJdfV19XX0se3ZhbHVlQ2hhbmdlOlt7dHlwZTpCfV0sY2hhbmdlOlt7dHlwZTpCfV0sYXBwZWFyYW5jZTpbe3R5cGU6ZH1dLG5hbWU6W3t0eXBlOmR9XSx2ZXJ0aWNhbDpbe3R5cGU6ZH1dLHZhbHVlOlt7dHlwZTpkfV0sbXVsdGlwbGU6W3t0eXBlOmR9XSxkaXNhYmxlZDpbe3R5cGU6ZH1dLF9idXR0b25Ub2dnbGVzOlt7dHlwZTpsbyxhcmdzOlt0bygoKT0+TW0pLHtkZXNjZW5kYW50czohMH1dfV19KX0pKCk7dmFyIEU2dD10bChjbGFzc3t9KSxNbT1jbGFzcyBleHRlbmRzIEU2dHtjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscil7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2VsZW1lbnRSZWY9byx0aGlzLl9mb2N1c01vbml0b3I9aSx0aGlzLl9pc1NpbmdsZVNlbGVjdG9yPSExLHRoaXMuX2NoZWNrZWQ9ITEsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuY2hhbmdlPW5ldyAkO2xldCBzPU51bWJlcihhKTt0aGlzLnRhYkluZGV4PXN8fHM9PT0wP3M6bnVsbCx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwPXQsdGhpcy5hcHBlYXJhbmNlPXImJnIuYXBwZWFyYW5jZT9yLmFwcGVhcmFuY2U6InN0YW5kYXJkIn1nZXQgYnV0dG9uSWQoKXtyZXR1cm5gJHt0aGlzLmlkfS1idXR0b25gfWdldCBhcHBlYXJhbmNlKCl7cmV0dXJuIHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA/dGhpcy5idXR0b25Ub2dnbGVHcm91cC5hcHBlYXJhbmNlOnRoaXMuX2FwcGVhcmFuY2V9c2V0IGFwcGVhcmFuY2UodCl7dGhpcy5fYXBwZWFyYW5jZT10fWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA/dGhpcy5idXR0b25Ub2dnbGVHcm91cC5faXNTZWxlY3RlZCh0aGlzKTp0aGlzLl9jaGVja2VkfXNldCBjaGVja2VkKHQpe2xldCBlPVplKHQpO2UhPT10aGlzLl9jaGVja2VkJiYodGhpcy5fY2hlY2tlZD1lLHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJnRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwJiZ0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLmRpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1aZSh0KX1uZ09uSW5pdCgpe2xldCB0PXRoaXMuYnV0dG9uVG9nZ2xlR3JvdXA7dGhpcy5faXNTaW5nbGVTZWxlY3Rvcj10JiYhdC5tdWx0aXBsZSx0aGlzLmlkPXRoaXMuaWR8fGBtYXQtYnV0dG9uLXRvZ2dsZS0ke0tsdCsrfWAsdGhpcy5faXNTaW5nbGVTZWxlY3RvciYmKHRoaXMubmFtZT10Lm5hbWUpLHQmJih0Ll9pc1ByZWNoZWNrZWQodGhpcyk/dGhpcy5jaGVja2VkPSEwOnQuX2lzU2VsZWN0ZWQodGhpcykhPT10aGlzLl9jaGVja2VkJiZ0Ll9zeW5jQnV0dG9uVG9nZ2xlKHRoaXMsdGhpcy5fY2hlY2tlZCkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApfW5nT25EZXN0cm95KCl7bGV0IHQ9dGhpcy5idXR0b25Ub2dnbGVHcm91cDt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdCYmdC5faXNTZWxlY3RlZCh0aGlzKSYmdC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLCExLCExLCEwKX1mb2N1cyh0KXt0aGlzLl9idXR0b25FbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X29uQnV0dG9uQ2xpY2soKXtsZXQgdD10aGlzLl9pc1NpbmdsZVNlbGVjdG9yPyEwOiF0aGlzLl9jaGVja2VkO3QhPT10aGlzLl9jaGVja2VkJiYodGhpcy5fY2hlY2tlZD10LHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJih0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLl9zeW5jQnV0dG9uVG9nZ2xlKHRoaXMsdGhpcy5fY2hlY2tlZCwhMCksdGhpcy5idXR0b25Ub2dnbGVHcm91cC5fb25Ub3VjaGVkKCkpKSx0aGlzLmNoYW5nZS5lbWl0KG5ldyBpNih0aGlzLHRoaXMudmFsdWUpKX1fbWFya0ZvckNoZWNrKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9fTtNbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxNbSkodihaayw4KSx2KFR0KSx2KEwpLHYobG4pLFphKCJ0YWJpbmRleCIpLHYobTIsOCkpfTtNbS5cdTAyNzVjbXA9eih7dHlwZTpNbSxzZWxlY3RvcnM6W1sibWF0LWJ1dHRvbi10b2dnbGUiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShTNnQsNSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5fYnV0dG9uRWxlbWVudD1vLmZpcnN0KX19LGhvc3RBdHRyczpbInJvbGUiLCJwcmVzZW50YXRpb24iLDEsIm1hdC1idXR0b24tdG9nZ2xlIl0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gZS5mb2N1cygpfSksdCYyJiYocmUoImFyaWEtbGFiZWwiLG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLG51bGwpKCJpZCIsZS5pZCkoIm5hbWUiLG51bGwpLG1lKCJtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lIiwhZS5idXR0b25Ub2dnbGVHcm91cCkoIm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQiLGUuY2hlY2tlZCkoIm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIixlLmRpc2FibGVkKSgibWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCIsZS5hcHBlYXJhbmNlPT09InN0YW5kYXJkIikpfSxpbnB1dHM6e2Rpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSx0YWJJbmRleDoidGFiSW5kZXgiLGFwcGVhcmFuY2U6ImFwcGVhcmFuY2UiLGNoZWNrZWQ6ImNoZWNrZWQiLGRpc2FibGVkOiJkaXNhYmxlZCIsaWQ6ImlkIixuYW1lOiJuYW1lIixhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UifSxleHBvcnRBczpbIm1hdEJ1dHRvblRvZ2dsZSJdLGZlYXR1cmVzOlthZV0sbmdDb250ZW50U2VsZWN0b3JzOlI2dCxkZWNsczo2LHZhcnM6OSxjb25zdHM6W1sidHlwZSIsImJ1dHRvbiIsMSwibWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywiaWQiLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJidXR0b24iLCIiXSxbMSwibWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudCJdLFsxLCJtYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5Il0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZSIsMywibWF0UmlwcGxlVHJpZ2dlciIsIm1hdFJpcHBsZURpc2FibGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYoeW8oKSx1KDAsImJ1dHRvbiIsMCwxKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fb25CdXR0b25DbGljaygpfSksdSgyLCJzcGFuIiwyKSxZbigzKSxoKCksaCgpLEQoNCwic3BhbiIsMyksRCg1LCJzcGFuIiw0KSksdCYyKXtsZXQgbz13ZSgxKTtQKCJpZCIsZS5idXR0b25JZCkoImRpc2FibGVkIixlLmRpc2FibGVkfHxudWxsKSxyZSgidGFiaW5kZXgiLGUuZGlzYWJsZWQ/LTE6ZS50YWJJbmRleCkoImFyaWEtcHJlc3NlZCIsZS5jaGVja2VkKSgibmFtZSIsZS5uYW1lfHxudWxsKSgiYXJpYS1sYWJlbCIsZS5hcmlhTGFiZWwpKCJhcmlhLWxhYmVsbGVkYnkiLGUuYXJpYUxhYmVsbGVkYnkpLHgoNSksUCgibWF0UmlwcGxlVHJpZ2dlciIsbykoIm1hdFJpcHBsZURpc2FibGVkIixlLmRpc2FibGVSaXBwbGV8fGUuZGlzYWJsZWQpfX0sZGlyZWN0aXZlczpbbmldLHN0eWxlczpbYC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe291dGxpbmU6c29saWQgMXB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyLXJhZGl1czo0cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7b3V0bGluZTowfS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9Lm1hdC1idXR0b24tdG9nZ2xle3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2Rpc3BsYXk6bm9uZX19Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7cGFkZGluZzowIDEycHh9Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQ+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLXJhZGl1czppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgMzZweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjU7aGVpZ2h0OjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgNTAwcHh9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O3BhZGRpbmc6MDttYXJnaW46MDtmb250OmluaGVyaXQ7b3V0bGluZTpub25lO3dpZHRoOjEwMCU7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIC5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0KYF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7TW0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpVcyxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W1prXX1dfSx7dHlwZTpUdH0se3R5cGU6TH0se3R5cGU6bG59LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOlttMl19XX1dO01tLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWwiXX1dLGFyaWFMYWJlbGxlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLF9idXR0b25FbGVtZW50Olt7dHlwZTpJdCxhcmdzOlsiYnV0dG9uIl19XSxpZDpbe3R5cGU6ZH1dLG5hbWU6W3t0eXBlOmR9XSx2YWx1ZTpbe3R5cGU6ZH1dLHRhYkluZGV4Olt7dHlwZTpkfV0sYXBwZWFyYW5jZTpbe3R5cGU6ZH1dLGNoZWNrZWQ6W3t0eXBlOmR9XSxkaXNhYmxlZDpbe3R5cGU6ZH1dLGNoYW5nZTpbe3R5cGU6Qn1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTW0sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtYnV0dG9uLXRvZ2dsZSIsdGVtcGxhdGU6YDxidXR0b24gI2J1dHRvbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uIG1hdC1mb2N1cy1pbmRpY2F0b3IiCiAgICAgICAgdHlwZT0iYnV0dG9uIgogICAgICAgIFtpZF09ImJ1dHRvbklkIgogICAgICAgIFthdHRyLnRhYmluZGV4XT0iZGlzYWJsZWQgPyAtMSA6IHRhYkluZGV4IgogICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09ImNoZWNrZWQiCiAgICAgICAgW2Rpc2FibGVkXT0iZGlzYWJsZWQgfHwgbnVsbCIKICAgICAgICBbYXR0ci5uYW1lXT0ibmFtZSB8fCBudWxsIgogICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwiCiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiCiAgICAgICAgKGNsaWNrKT0iX29uQnV0dG9uQ2xpY2soKSI+CiAgPHNwYW4gY2xhc3M9Im1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQiPgogICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PgogIDwvc3Bhbj4KPC9idXR0b24+Cgo8c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheSI+PC9zcGFuPgo8c3BhbiBjbGFzcz0ibWF0LWJ1dHRvbi10b2dnbGUtcmlwcGxlIiBtYXRSaXBwbGUKICAgICBbbWF0UmlwcGxlVHJpZ2dlcl09ImJ1dHRvbiIKICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJ0aGlzLmRpc2FibGVSaXBwbGUgfHwgdGhpcy5kaXNhYmxlZCI+Cjwvc3Bhbj4KYCxlbmNhcHN1bGF0aW9uOkplLk5vbmUsZXhwb3J0QXM6Im1hdEJ1dHRvblRvZ2dsZSIsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxpbnB1dHM6WyJkaXNhYmxlUmlwcGxlIl0saG9zdDp7IltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lXSI6IiFidXR0b25Ub2dnbGVHcm91cCIsIltjbGFzcy5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkXSI6ImNoZWNrZWQiLCJbY2xhc3MubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRdIjoiZGlzYWJsZWQiLCJbY2xhc3MubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZF0iOidhcHBlYXJhbmNlID09PSAic3RhbmRhcmQiJyxjbGFzczoibWF0LWJ1dHRvbi10b2dnbGUiLCJbYXR0ci5hcmlhLWxhYmVsXSI6Im51bGwiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoibnVsbCIsIlthdHRyLmlkXSI6ImlkIiwiW2F0dHIubmFtZV0iOiJudWxsIiwiKGZvY3VzKSI6ImZvY3VzKCkiLHJvbGU6InByZXNlbnRhdGlvbiJ9LHN0eWxlczpbYC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MnB4Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe291dGxpbmU6c29saWQgMXB4fS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyLXJhZGl1czo0cHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7b3V0bGluZTowfS5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50e2Rpc3BsYXk6YmxvY2t9Lm1hdC1idXR0b24tdG9nZ2xle3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9Lm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjEyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQpOmhvdmVyIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2Rpc3BsYXk6bm9uZX19Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2xpbmUtaGVpZ2h0OjM2cHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7cGFkZGluZzowIDEycHh9Lm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnQ+Knt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLXJhZGl1czppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgMzZweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjU7aGVpZ2h0OjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JvcmRlci1ib3R0b206c29saWQgNTAwcHh9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjppbmhlcml0O3BhZGRpbmc6MDttYXJnaW46MDtmb250OmluaGVyaXQ7b3V0bGluZTpub25lO3dpZHRoOjEwMCU7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIC5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlVzLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbWmtdfV19LHt0eXBlOlR0fSx7dHlwZTpMfSx7dHlwZTpsbn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmxpLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpIfSx7dHlwZTpOLGFyZ3M6W20yXX1dfV19LHthcmlhTGFiZWxsZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbGxlZGJ5Il19XSxjaGFuZ2U6W3t0eXBlOkJ9XSx0YWJJbmRleDpbe3R5cGU6ZH1dLGFwcGVhcmFuY2U6W3t0eXBlOmR9XSxjaGVja2VkOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XSxpZDpbe3R5cGU6ZH1dLG5hbWU6W3t0eXBlOmR9XSxhcmlhTGFiZWw6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWwiXX1dLF9idXR0b25FbGVtZW50Olt7dHlwZTpJdCxhcmdzOlsiYnV0dG9uIl19XSx2YWx1ZTpbe3R5cGU6ZH1dfSl9KSgpO3ZhciB4Yz1jbGFzc3t9O3hjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHhjKX07eGMuXHUwMjc1bW9kPXEoe3R5cGU6eGN9KTt4Yy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW0R0LGNpXSxEdF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeGMsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0R0LGNpXSxleHBvcnRzOltEdCxVcyxNbV0sZGVjbGFyYXRpb25zOltVcyxNbV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoeGMse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltVcyxNbV19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bRHQsY2ldfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0R0LFVzLE1tXX19KX0pKCk7dmFyIEpsdD0iL3NjYWxhcl9zdW1tYXJ5IjtmdW5jdGlvbiBmMihuLHQpe2xldCBlPW47cmV0dXJuIHQmJm4uc3RhcnRzV2l0aCh0KyIvIikmJihlPW4uc2xpY2UodC5sZW5ndGgrMSkpLGUuZW5kc1dpdGgoSmx0KSYmKGU9ZS5zbGljZSgwLC1KbHQubGVuZ3RoKSksZXx8bn1mdW5jdGlvbiAkbHQobix0LGUpe3ZhciBvO2lmKCF0JiYhZSlyZXR1cm4gbjtsZXQgaT0obz10PT1udWxsP3ZvaWQgMDp0Lm5hbWUpIT09bnVsbCYmbyE9PXZvaWQgMD9vOiIuLi4iO3JldHVybiBlJiYoaT1gWyR7ZS5hbGlhc051bWJlcn1dICR7ZS5hbGlhc1RleHR9LyR7aX1gKSxpfWZ1bmN0aW9uIHRjdChuKXt2YXIgdDtsZXQgZT1bXTtmb3IobGV0IG8gb2Ygbil7bGV0IGk9W10sYT1OdW1iZXIuaXNGaW5pdGUoKHQ9by5wb2ludHNbMF0pPT09bnVsbHx8dD09PXZvaWQgMD92b2lkIDA6dC54KT9vLnBvaW50c1swXS54Oi0xLzAscj1bXTtmb3IobGV0IHMgb2Ygby5wb2ludHMpe2lmKCFOdW1iZXIuaXNGaW5pdGUocy54KSl7ci5wdXNoKHMpO2NvbnRpbnVlfXMueDxhJiYoaS5wdXNoKHtzZXJpZXNJZDpKU09OLnN0cmluZ2lmeShbby5ydW5JZCxpLmxlbmd0aF0pLHJ1bklkOm8ucnVuSWQscG9pbnRzOnJ9KSxyPVtdKSxyLnB1c2gocyksYT1zLnh9aS5wdXNoKHtzZXJpZXNJZDpKU09OLnN0cmluZ2lmeShbby5ydW5JZCxpLmxlbmd0aF0pLHJ1bklkOm8ucnVuSWQscG9pbnRzOnJ9KTtmb3IobGV0IHM9MDtzPGkubGVuZ3RoO3MrKyllLnB1c2goT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGlbc10pLHtwYXJ0aXRpb25JbmRleDpzLHBhcnRpdGlvblNpemU6aS5sZW5ndGh9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYTYobix0LGUpe3JldHVybiBuPHQ/dDpuPmU/ZTpufWZ1bmN0aW9uIHIxKG4sdCxlKXt2YXIgbyxpO2xldCBhPWE2KG4uc3RhcnQuc3RlcCx0LGUpLHI9bi5lbmQ/YTYobi5lbmQuc3RlcCx0LGUpOm51bGwscz1hIT09bi5zdGFydC5zdGVwfHxyIT09KChpPShvPW4uZW5kKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8uc3RlcCkhPT1udWxsJiZpIT09dm9pZCAwP2k6bnVsbCk7cmV0dXJue3N0YXJ0U3RlcDphLGVuZFN0ZXA6cixjbGlwcGVkOnN9fWZ1bmN0aW9uIGVjdChuLHQpe2lmKG4uZW5kU3RlcCE9PW51bGwpcmV0dXJuIG47bGV0IGU9TjZ0KG4uc3RhcnRTdGVwLHQpO3JldHVybiBlIT09bnVsbD9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3N0YXJ0U3RlcDplfSk6bn1mdW5jdGlvbiBONnQobix0KXtsZXQgZT0xLzAsbz1udWxsO2ZvcihsZXQgaSBvZiB0KXtsZXQgYT1NYXRoLmFicyhuLWkpO2E8ZSYmKGU9YSxvPWkpfXJldHVybiBvfWZ1bmN0aW9uIFQ2dChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsMiksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMSksSWUoZS5maXJzdFRleHRQYXJ0KCkpfX12YXIga2w9Y2xhc3N7cGFyc2VWYWx1ZSgpe2xldCB0PXRoaXMudmFsdWUubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gdD09PS0xP3tmaXJzdDoiIixzZWNvbmQ6dGhpcy52YWx1ZX06e2ZpcnN0OnRoaXMudmFsdWUuc2xpY2UoMCx0KSxzZWNvbmQ6dGhpcy52YWx1ZS5zbGljZSh0KX19Zmlyc3RUZXh0UGFydCgpe3JldHVybiB0aGlzLnBhcnNlVmFsdWUoKS5maXJzdH1zZWNvbmRUZXh0UGFydCgpe3JldHVybiB0aGlzLnBhcnNlVmFsdWUoKS5zZWNvbmR9fTtrbC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxrbCl9O2tsLlx1MDI3NWNtcD16KHt0eXBlOmtsLHNlbGVjdG9yczpbWyJ0Yi10cnVuY2F0ZWQtcGF0aCJdXSxpbnB1dHM6e3ZhbHVlOiJ2YWx1ZSJ9LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJjbGFzcyIsImZpcnN0LXRleHQtcGFydCIsNCwibmdJZiJdLFsxLCJzZWNvbmQtdGV4dC1wYXJ0Il0sWzEsImZpcnN0LXRleHQtcGFydCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKGsoMCxUNnQsMiwxLCJzcGFuIiwwKSx1KDEsInNwYW4iLDEpLFQoMiksaCgpKSx0JjImJihQKCJuZ0lmIixlLmZpcnN0VGV4dFBhcnQoKS5sZW5ndGg+MCkseCgyKSxJZShlLnNlY29uZFRleHRQYXJ0KCkpKX0sZGlyZWN0aXZlczpbWHRdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTppbmxpbmUtZmxleDt3aGl0ZS1zcGFjZTpub3dyYXB9LmZpcnN0LXRleHQtcGFydFtfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDEgNGNoO21heC13aWR0aDptYXgtY29udGVudH0uZmlyc3QtdGV4dC1wYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlY29uZC10ZXh0LXBhcnRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfSJdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGtsLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGItdHJ1bmNhdGVkLXBhdGgiLHRlbXBsYXRlOmAKICAgIDxzcGFuICpuZ0lmPSJmaXJzdFRleHRQYXJ0KCkubGVuZ3RoID4gMCIgY2xhc3M9ImZpcnN0LXRleHQtcGFydCI+e3sKICAgICAgZmlyc3RUZXh0UGFydCgpCiAgICB9fTwvc3Bhbj4KICAgIDxzcGFuIGNsYXNzPSJzZWNvbmQtdGV4dC1wYXJ0Ij57eyBzZWNvbmRUZXh0UGFydCgpIH19PC9zcGFuPgogIGAsc3R5bGVVcmxzOlsidHJ1bmNhdGVkX3BhdGhfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLHt2YWx1ZTpbe3R5cGU6ZH1dfSl9KSgpO2Z1bmN0aW9uIEE2dChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsMil9ZnVuY3Rpb24gRDZ0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwzKX12YXIgTmw9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmlzQ2xpcHBlZD0hMSx0aGlzLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZD0hMX19O05sLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE5sKX07TmwuXHUwMjc1Y21wPXooe3R5cGU6Tmwsc2VsZWN0b3JzOltbInZpcy1saW5rZWQtdGltZS1zZWxlY3Rpb24td2FybmluZyJdXSxpbnB1dHM6e2lzQ2xpcHBlZDoiaXNDbGlwcGVkIixpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQ6ImlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCJ9LGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWyJkYXRhLXZhbHVlIiwiY2xpcHBlZCIsInN2Z0ljb24iLCJpbmZvX291dGxpbmVfMjRweCIsInRpdGxlIiwiTGlua2VkIHN0ZXAgaXMgbm90IGZvdW5kIGluIHRoaXMgdmlzdWFsaXphdGlvbi4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiIsNCwibmdJZiJdLFsiZGF0YS12YWx1ZSIsImNsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiLCJzdmdJY29uIiwiaW5mb19vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsIkRhdGEgaXMgbm90IGZvdW5kIG9uIHNlbGVjdGVkIHN0ZXAuIFdlIGhpZ2hsaWdodGVkIHRoZSBjbG9zZXN0IHN0ZXAgZm9yIHlvdS4iLDQsIm5nSWYiXSxbImRhdGEtdmFsdWUiLCJjbGlwcGVkIiwic3ZnSWNvbiIsImluZm9fb3V0bGluZV8yNHB4IiwidGl0bGUiLCJMaW5rZWQgc3RlcCBpcyBub3QgZm91bmQgaW4gdGhpcyB2aXN1YWxpemF0aW9uLiBXZSBoaWdobGlnaHRlZCB0aGUgY2xvc2VzdCBzdGVwIGZvciB5b3UuIl0sWyJkYXRhLXZhbHVlIiwiY2xvc2VzdFN0ZXBIaWdobGlnaHRlZCIsInN2Z0ljb24iLCJpbmZvX291dGxpbmVfMjRweCIsInRpdGxlIiwiRGF0YSBpcyBub3QgZm91bmQgb24gc2VsZWN0ZWQgc3RlcC4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKGsoMCxBNnQsMSwwLCJtYXQtaWNvbiIsMCksaygxLEQ2dCwxLDAsIm1hdC1pY29uIiwxKSksdCYyJiYoUCgibmdJZiIsZS5pc0NsaXBwZWQpLHgoMSksUCgibmdJZiIsZS5pc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQpKX0sZGlyZWN0aXZlczpbWHQsWGVdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojZDMyZjJmO2hlaWdodDoxZW07bGluZS1oZWlnaHQ6MDtkaXNwbGF5OmlubGluZS1mbGV4fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojZDMyZjJmfVtfbmdob3N0LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhObCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InZpcy1saW5rZWQtdGltZS1zZWxlY3Rpb24td2FybmluZyIsdGVtcGxhdGU6YAogICAgPG1hdC1pY29uCiAgICAgICpuZ0lmPSJpc0NsaXBwZWQiCiAgICAgIGRhdGEtdmFsdWU9ImNsaXBwZWQiCiAgICAgIHN2Z0ljb249ImluZm9fb3V0bGluZV8yNHB4IgogICAgICB0aXRsZT0iTGlua2VkIHN0ZXAgaXMgbm90IGZvdW5kIGluIHRoaXMgdmlzdWFsaXphdGlvbi4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiIKICAgID48L21hdC1pY29uPgogICAgPG1hdC1pY29uCiAgICAgICpuZ0lmPSJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiCiAgICAgIGRhdGEtdmFsdWU9ImNsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiCiAgICAgIHN2Z0ljb249ImluZm9fb3V0bGluZV8yNHB4IgogICAgICB0aXRsZT0iRGF0YSBpcyBub3QgZm91bmQgb24gc2VsZWN0ZWQgc3RlcC4gV2UgaGlnaGxpZ2h0ZWQgdGhlIGNsb3Nlc3Qgc3RlcCBmb3IgeW91LiIKICAgID48L21hdC1pY29uPgogIGAsc3R5bGVVcmxzOlsidmlzX2xpbmtlZF90aW1lX3NlbGVjdGlvbl93YXJuaW5nX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtpc0NsaXBwZWQ6W3t0eXBlOmR9XSxpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQ6W3t0eXBlOmR9XX0pfSkoKTtmdW5jdGlvbiBJNnQobix0KXtpZihuJjEmJkQoMCwidGItZXhwZXJpbWVudC1hbGlhcyIsMiksbiYyKXtsZXQgZT1TKCk7UCgiYWxpYXMiLGUuZXhwZXJpbWVudEFsaWFzKX19ZnVuY3Rpb24gejZ0KG4sdCl7biYxJiYodSgwLCJzcGFuIiksVCgxLCIvIiksaCgpKX12YXIgejA9Y2xhc3N7fTt6MC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx6MCl9O3owLlx1MDI3NWNtcD16KHt0eXBlOnowLHNlbGVjdG9yczpbWyJjYXJkLXJ1bi1uYW1lLWNvbXBvbmVudCJdXSxpbnB1dHM6e25hbWU6Im5hbWUiLGV4cGVyaW1lbnRBbGlhczoiZXhwZXJpbWVudEFsaWFzIn0sZGVjbHM6NCx2YXJzOjMsY29uc3RzOltbMywiYWxpYXMiLDQsIm5nSWYiXSxbNCwibmdJZiJdLFszLCJhbGlhcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKGsoMCxJNnQsMSwxLCJ0Yi1leHBlcmltZW50LWFsaWFzIiwwKSxrKDEsejZ0LDIsMCwic3BhbiIsMSksdSgyLCJzcGFuIiksVCgzKSxoKCkpLHQmMiYmKFAoIm5nSWYiLGUuZXhwZXJpbWVudEFsaWFzIT1udWxsKSx4KDEpLFAoIm5nSWYiLGUuZXhwZXJpbWVudEFsaWFzIT1udWxsKSx4KDIpLEllKGUubmFtZSkpfSxkaXJlY3RpdmVzOltYdCxSbF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHowLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiY2FyZC1ydW4tbmFtZS1jb21wb25lbnQiLHRlbXBsYXRlOmA8dGItZXhwZXJpbWVudC1hbGlhcwogICAgICAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiCiAgICAgIFthbGlhc109ImV4cGVyaW1lbnRBbGlhcyIKICAgID48L3RiLWV4cGVyaW1lbnQtYWxpYXM+CiAgICA8c3BhbiAqbmdJZj0iZXhwZXJpbWVudEFsaWFzICE9IG51bGwiPi88L3NwYW4+CiAgICA8c3Bhbj57eyBuYW1lIH19PC9zcGFuPmAsc3R5bGVVcmxzOlsicnVuX25hbWVfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse25hbWU6W3t0eXBlOmR9XSxleHBlcmltZW50QWxpYXM6W3t0eXBlOmR9XX0pfSkoKTt2YXIgYm09Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10fW5nT25Jbml0KCl7dGhpcy5uYW1lJD1vbihbdGhpcy5zdG9yZS5zZWxlY3QocUQse3J1bklkOnRoaXMucnVuSWR9KV0pLnBpcGUoRygoW3RdKT0+JGx0KHRoaXMucnVuSWQsdCxudWxsKSkpLHRoaXMuZXhwZXJpbWVudEFsaWFzJD1vbihbdGhpcy5zdG9yZS5zZWxlY3QoV0Qse3J1bklkOnRoaXMucnVuSWR9KSx0aGlzLnN0b3JlLnNlbGVjdChaYildKS5waXBlKEcoKFt0LGVdKT0+dD9lW3RdOm51bGwpKX19O2JtLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGJtKSh2KHN0KSl9O2JtLlx1MDI3NWNtcD16KHt0eXBlOmJtLHNlbGVjdG9yczpbWyJjYXJkLXJ1bi1uYW1lIl1dLGlucHV0czp7cnVuSWQ6InJ1bklkIn0sZGVjbHM6NCx2YXJzOjksY29uc3RzOltbMywibmFtZSIsImV4cGVyaW1lbnRBbGlhcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwiY2FyZC1ydW4tbmFtZS1jb21wb25lbnQiLDApLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpKSx0JjImJihQKCJuYW1lIixRKDEsMyxlLm5hbWUkKSkoImV4cGVyaW1lbnRBbGlhcyIsUSgzLDcsZS5leHBlcmltZW50QWxpYXMkKSkscmUoInRpdGxlIixRKDIsNSxlLm5hbWUkKSkpfSxkaXJlY3RpdmVzOlt6MF0scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoYm0sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJjYXJkLXJ1bi1uYW1lIix0ZW1wbGF0ZTpgCiAgICA8Y2FyZC1ydW4tbmFtZS1jb21wb25lbnQKICAgICAgW25hbWVdPSJuYW1lJCB8IGFzeW5jIgogICAgICBbYXR0ci50aXRsZV09Im5hbWUkIHwgYXN5bmMiCiAgICAgIFtleHBlcmltZW50QWxpYXNdPSJleHBlcmltZW50QWxpYXMkIHwgYXN5bmMiCiAgICA+PC9jYXJkLXJ1bi1uYW1lLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LHtydW5JZDpbe3R5cGU6ZH1dfSl9KSgpO2Z1bmN0aW9uIEY2dChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsMTkpLFQoMSksWCgyLCJudW1iZXIiKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMSksbGUoIlN0ZXAgIixRKDIsMSxlLnN0ZXBzW2Uuc3RlcEluZGV4XSksIiIpfX1mdW5jdGlvbiBMNnQobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDIwKSxUKDEpLFgoMiwibnVtYmVyIiksWCgzLCJudW1iZXIiKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMSksdnkoIlNhbXBsZSAiLFEoMiwyLGUuc2FtcGxlKzEpLCIvIixRKDMsNCxlLm51bVNhbXBsZSksIiIpfX1mdW5jdGlvbiBCNnQobix0KXtuJjEmJkQoMCwibWF0LXNwaW5uZXIiLDIxKX1mdW5jdGlvbiBWNnQobix0KXtpZihuJjEmJih1KDAsInNwYW4iKSxEKDEsInNwYW4iLDMwKSxEKDIsInNwYW4iLDMxKSxoKCkpLG4mMil7bGV0IGU9UygzKTt4KDIpLHFlKCJsZWZ0IixlLnNsaWRlclN0YXJ0UG9zaXRpb24pKCJ3aWR0aCIsZS5zbGlkZXJUcmFja1dpZHRoKX19ZnVuY3Rpb24gajZ0KG4sdCl7aWYobiYxJiZEKDAsImRpdiIsMzIpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKDMpO3FlKCJsZWZ0IixvLmdldExpbmtlZFRpbWVUaWNrTGVmdFN0eWxlKGUpKSgibWFyZ2luLWxlZnQiLG8uZ2V0TGlua2VkVGltZVRpY2tNYXJnaW5MZWZ0U3R5bGUoZSkpfX1mdW5jdGlvbiBVNnQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMjcpLGsoMSxWNnQsMyw0LCJzcGFuIiwyOCksaygyLGo2dCwxLDQsImRpdiIsMjkpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goMSksUCgibmdJZiIsZS5saW5rZWRUaW1lU2VsZWN0aW9uLmVuZFN0ZXAhPT1udWxsKSx4KDEpLFAoIm5nRm9yT2YiLGUuc2VsZWN0ZWRTdGVwcyl9fXZhciBZNnQ9ZnVuY3Rpb24obil7cmV0dXJuW25dfSxHNnQ9ZnVuY3Rpb24obil7cmV0dXJue2ZpbHRlcjpufX07ZnVuY3Rpb24gVzZ0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO0VuKDApLHUoMSwiZGl2IiwyMiksdSgyLCJtYXQtc2xpZGVyIiwyMyksQSgiaW5wdXQiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25TbGlkZXJJbnB1dChpKX0pLGgoKSxrKDMsVTZ0LDMsMiwiZGl2IiwyNCksaCgpLHUoNCwiZGl2IiwyNSksRCg1LCJpbWciLDI2KSxoKCksa24oKX1pZihuJjIpe2xldCBlPVMoKTt4KDIpLFAoIm5nQ2xhc3MiLGFvKDExLFk2dCxlLmxpbmtlZFRpbWVTZWxlY3Rpb24mJmUubGlua2VkVGltZVNlbGVjdGlvbi5lbmRTdGVwIT09bnVsbD8iaGlkZS1zbGlkZXIiOiIiKSkoImRpc2FibGVkIixlLnN0ZXBzLmxlbmd0aDw9MSkoIm1pbiIsMCkoIm1heCIsZS5zdGVwcy5sZW5ndGgtMSkoInN0ZXAiLDEpKCJ0aWNrSW50ZXJ2YWwiLDEpKCJ2YWx1ZSIsZS5zdGVwSW5kZXgpLHgoMSksUCgibmdJZiIsZS5saW5rZWRUaW1lU2VsZWN0aW9uKSx4KDIpLEZSKCJhbHQiLCJJbWFnZSBhdCBzdGVwICIsZS5zdGVwc1tlLnN0ZXBJbmRleF0sIiIpLFdpKCJzcmMiLGUuaW1hZ2VVcmwsV2YpLFAoIm5nU3R5bGUiLGFvKDEzLEc2dCxlLmNzc0ZpbHRlcigpKSl9fWZ1bmN0aW9uIHE2dChuLHQpe24mMSYmKHUoMCwiZGl2IiwzNCksVCgxLCIgRGF0YSBmYWlsZWQgdG8gbG9hZC4gIiksaCgpKX1mdW5jdGlvbiBaNnQobix0KXtpZihuJjEmJmsoMCxxNnQsMiwwLCJkaXYiLDMzKSxuJjIpe2xldCBlPVMoKTtQKCJuZ0lmIixlLmxvYWRTdGF0ZT09PWUuRGF0YUxvYWRTdGF0ZS5GQUlMRUQpfX12YXIgWDZ0PWZ1bmN0aW9uKG4pe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6bn19LFE2dD0xNCxIMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuRGF0YUxvYWRTdGF0ZT1LdCx0aGlzLnNsaWRlclN0YXJ0UG9zaXRpb249IiIsdGhpcy5zbGlkZXJUcmFja1dpZHRoPSIiLHRoaXMubGlua2VkVGltZVNlbGVjdGlvbj1udWxsLHRoaXMuaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkPSExLHRoaXMub25BY3R1YWxTaXplVG9nZ2xlPW5ldyAkLHRoaXMuc3RlcEluZGV4Q2hhbmdlPW5ldyAkLHRoaXMub25QaW5DbGlja2VkPW5ldyAkfWNzc0ZpbHRlcigpe2xldCB0PXRoaXMuYnJpZ2h0bmVzc0luTWlsbGkvMWUzO3JldHVybmBjb250cmFzdCgke3RoaXMuY29udHJhc3RJbk1pbGxpLzEwfSUpIGJyaWdodG5lc3MoJHt0fSlgfW9uU2xpZGVySW5wdXQodCl7dGhpcy5zdGVwSW5kZXhDaGFuZ2UuZW1pdCh0LnZhbHVlKX1jaGFuZ2VEaXN0aW5jdCh0KXtyZXR1cm4gdC5jdXJyZW50VmFsdWUhPT10LnByZXZpb3VzVmFsdWV9bmdPbkNoYW5nZXModCl7KHQuc2VsZWN0ZWRTdGVwcyYmdGhpcy5jaGFuZ2VEaXN0aW5jdCh0LnNlbGVjdGVkU3RlcHMpfHx0LmxpbmtlZFRpbWVTZWxlY3Rpb24mJnRoaXMuY2hhbmdlRGlzdGluY3QodC5saW5rZWRUaW1lU2VsZWN0aW9uKSkmJnRoaXMucmVuZGVyUmFuZ2VTbGlkZXIoKX1yZW5kZXJSYW5nZVNsaWRlcigpe2lmKCF0aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb258fCF0aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb24uZW5kU3RlcClyZXR1cm47bGV0IHQ9dGhpcy5zdGVwcy5sZW5ndGgtMSxlPXRoaXMubGlua2VkVGltZVNlbGVjdGlvbi5zdGFydFN0ZXA8dGhpcy5zdGVwc1swXT90aGlzLnN0ZXBzWzBdOnRoaXMubGlua2VkVGltZVNlbGVjdGlvbi5zdGFydFN0ZXAsbz10aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb24uZW5kU3RlcD50aGlzLnN0ZXBzW3RdP3RoaXMuc3RlcHNbdF06dGhpcy5saW5rZWRUaW1lU2VsZWN0aW9uLmVuZFN0ZXAse3N0YXJ0UG9zaXRpb246aSx3aWR0aDphfT10aGlzLmdldFRyYWNrU3RhcnRQb3NpdGlvbkFuZFdpZHRoKGUsbyx0KTt0aGlzLnNsaWRlclN0YXJ0UG9zaXRpb249YCR7aSoxMDB9JWAsdGhpcy5zbGlkZXJUcmFja1dpZHRoPWAke2EqMTAwfSVgfWdldFRyYWNrU3RhcnRQb3NpdGlvbkFuZFdpZHRoKHQsZSxvKXtsZXQgaT0xL28sYT0wLHI9MCxzPTA7Zm9yKDtzPHRoaXMuc3RlcHMubGVuZ3RoLTE7cysrKXtsZXQgbD10aGlzLnN0ZXBzW3NdLGM9dGhpcy5zdGVwc1tzKzFdO2lmKGw8PXQmJnQ8PWMpe2ErPSh0LWwpLyhjLWwpO2JyZWFrfX1mb3IoYT0oYStzKSppO3M8dGhpcy5zdGVwcy5sZW5ndGgtMTtzKyspe2xldCBsPXRoaXMuc3RlcHNbc10sYz10aGlzLnN0ZXBzW3MrMV07aWYodD49bCYmZTw9Yyl7cj0oZS10KS8oYy1sKTticmVha31pZih0Pj1sJiZlPj1jKXtyKz0oYy10KS8oYy1sKTtjb250aW51ZX1pZihlPj1jKXIrPTE7ZWxzZXtyKz0oZS1sKS8oYy1sKTticmVha319cmV0dXJuIHI9cippLChhPjF8fGE8MCkmJihhPTApLHtzdGFydFBvc2l0aW9uOmEsd2lkdGg6cn19Z2V0TGlua2VkVGltZVRpY2tMZWZ0U3R5bGUodCl7aWYodGhpcy5zdGVwcy5pbmRleE9mKHQpPT0tMSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RlcEluZGV4OiBzdGVwSW5kZXggdmFsdWUgaXMgbm90IGluY2x1ZGVkIGluIHN0ZXBzIik7cmV0dXJuYCR7dGhpcy5zdGVwcy5pbmRleE9mKHQpLyh0aGlzLnN0ZXBzLmxlbmd0aC0xKSoxMDB9JWB9Z2V0TGlua2VkVGltZVRpY2tNYXJnaW5MZWZ0U3R5bGUodCl7aWYodGhpcy5zdGVwcy5pbmRleE9mKHQpPT0tMSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RlcEluZGV4OiBzdGVwSW5kZXggdmFsdWUgaXMgbm90IGluY2x1ZGVkIGluIHN0ZXBzIik7cmV0dXJuYC0ke3RoaXMuc3RlcHMuaW5kZXhPZih0KS8odGhpcy5zdGVwcy5sZW5ndGgtMSkqUTZ0fXB4YH19O0gwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEgwKX07SDAuXHUwMjc1Y21wPXooe3R5cGU6SDAsc2VsZWN0b3JzOltbImltYWdlLWNhcmQtY29tcG9uZW50Il1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZtZSgiYWN0dWFsLXNpemUiLGUuc2hvd0FjdHVhbFNpemUpfSxpbnB1dHM6e2xvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIixydW5JZDoicnVuSWQiLHNhbXBsZToic2FtcGxlIixudW1TYW1wbGU6Im51bVNhbXBsZSIsaW1hZ2VVcmw6ImltYWdlVXJsIixzdGVwSW5kZXg6InN0ZXBJbmRleCIsc3RlcHM6InN0ZXBzIixicmlnaHRuZXNzSW5NaWxsaToiYnJpZ2h0bmVzc0luTWlsbGkiLGNvbnRyYXN0SW5NaWxsaToiY29udHJhc3RJbk1pbGxpIixzaG93QWN0dWFsU2l6ZToic2hvd0FjdHVhbFNpemUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUiLGFsbG93VG9nZ2xlQWN0dWFsU2l6ZToiYWxsb3dUb2dnbGVBY3R1YWxTaXplIixpc1Bpbm5lZDoiaXNQaW5uZWQiLHNlbGVjdGVkU3RlcHM6InNlbGVjdGVkU3RlcHMiLGxpbmtlZFRpbWVTZWxlY3Rpb246ImxpbmtlZFRpbWVTZWxlY3Rpb24iLGlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZDoiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIn0sb3V0cHV0czp7b25BY3R1YWxTaXplVG9nZ2xlOiJvbkFjdHVhbFNpemVUb2dnbGUiLHN0ZXBJbmRleENoYW5nZToic3RlcEluZGV4Q2hhbmdlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCJ9LGZlYXR1cmVzOltXZV0sZGVjbHM6MjEsdmFyczoxNixjb25zdHM6ZnVuY3Rpb24oKXtsZXQgbjt0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9uPWdvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpOm49JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYDtsZXQgdDtyZXR1cm4gdHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/dD1nb29nLmdldE1zZygiVG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplIik6dD0kbG9jYWxpemVgOkEgYnV0dG9uIG9uIGFuIGltYWdlIGNhcmQgdGhhdCB0b2dnbGVzIGFjdHVhbCBpbWFnZSBzaXplLuKQnzNjYTA1ZWYzYTZlM2EzNzA2NWY1ZTBmNjljNWQ1YTIxNzhkOTA3OTHikJ83NjM1MTAxOTM2NjY0Nzg5MTQwOlRvZ2dsZSBhY3R1YWwgaW1hZ2Ugc2l6ZWAsW1sxLCJoZWFkaW5nIl0sWzEsImxpbmUiXSxbMSwidGFnIl0sWzEsInRhZy1wYXRoIiwzLCJ0aXRsZSIsInZhbHVlIl0sWzMsImlzQ2xpcHBlZCIsImlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCJdLFsxLCJjb250cm9scyJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwxLCJwaW4tYnV0dG9uIiwzLCJjbGljayJdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LCJ0aXRsZSIsIlRvZ2dsZSBhY3R1YWwgaW1hZ2Ugc2l6ZSIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsic3ZnSWNvbiIsImltYWdlX3NlYXJjaF8yNHB4Il0sWzEsInJ1biJdLFsxLCJkb3QiLDMsIm5nU3R5bGUiXSxbMSwicnVuLXRleHQiLDMsInJ1bklkIl0sWzEsIm1ldGFkYXRhIl0sWyJjbGFzcyIsInN0ZXAiLDQsIm5nSWYiXSxbImNsYXNzIiwic2FtcGxlIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImxvYWRpbmciLCJkaWFtZXRlciIsIjE4Iiw0LCJuZ0lmIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9JbWFnZURhdGEiLCIiXSxbMSwic3RlcCJdLFsxLCJzYW1wbGUiXSxbImRpYW1ldGVyIiwiMTgiLDEsImxvYWRpbmciXSxbMSwic2xpZGVyLXJvdyJdLFsiY29sb3IiLCJwcmltYXJ5IiwxLCJzdGVwLXNsaWRlciIsMywibmdDbGFzcyIsImRpc2FibGVkIiwibWluIiwibWF4Iiwic3RlcCIsInRpY2tJbnRlcnZhbCIsInZhbHVlIiwiaW5wdXQiXSxbImNsYXNzIiwibGlua2VkLXRpbWUtd3JhcHBlciIsNCwibmdJZiJdLFsxLCJpbWctY29udGFpbmVyIl0sWzMsImFsdCIsInNyYyIsIm5nU3R5bGUiXSxbMSwibGlua2VkLXRpbWUtd3JhcHBlciJdLFs0LCJuZ0lmIl0sWyJjbGFzcyIsImxpbmtlZC10aW1lLXRpY2siLDMsImxlZnQiLCJtYXJnaW4tbGVmdCIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsInNsaWRlci10cmFjayJdLFsxLCJzbGlkZXItdHJhY2stZmlsbCJdLFsxLCJsaW5rZWQtdGltZS10aWNrIl0sWyJjbGFzcyIsImVtcHR5LW1lc3NhZ2UiLDQsIm5nSWYiXSxbMSwiZW1wdHktbWVzc2FnZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImRpdiIsMCksdSgxLCJkaXYiLDEpLHUoMiwic3BhbiIsMiksRCgzLCJ0Yi10cnVuY2F0ZWQtcGF0aCIsMyksRCg0LCJ2aXMtbGlua2VkLXRpbWUtc2VsZWN0aW9uLXdhcm5pbmciLDQpLGgoKSx1KDUsInNwYW4iLDUpLHUoNiwiYnV0dG9uIiw2KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblBpbkNsaWNrZWQuZW1pdCghZS5pc1Bpbm5lZCl9KSxEKDcsIm1hdC1pY29uIiw3KSxoKCksdSg4LCJidXR0b24iLDgpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLm9uQWN0dWFsU2l6ZVRvZ2dsZS5lbWl0KCl9KSxEKDksIm1hdC1pY29uIiw5KSxoKCksaCgpLGgoKSx1KDEwLCJkaXYiLDEpLHUoMTEsInNwYW4iLDEwKSxEKDEyLCJzcGFuIiwxMSksRCgxMywiY2FyZC1ydW4tbmFtZSIsMTIpLGgoKSx1KDE0LCJkaXYiLDEzKSxrKDE1LEY2dCwzLDMsInNwYW4iLDE0KSxrKDE2LEw2dCw0LDYsInNwYW4iLDE1KSxrKDE3LEI2dCwxLDAsIm1hdC1zcGlubmVyIiwxNiksaCgpLGgoKSxoKCksaygxOCxXNnQsNiwxNSwibmctY29udGFpbmVyIiwxNyksaygxOSxaNnQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxOCx4bikpLHQmMil7bGV0IG89d2UoMjApO3goMyksV2koInRpdGxlIixlLnRhZyksV2koInZhbHVlIixlLnRpdGxlKSx4KDEpLFAoImlzQ2xpcHBlZCIsZS5saW5rZWRUaW1lU2VsZWN0aW9uJiZlLmxpbmtlZFRpbWVTZWxlY3Rpb24uY2xpcHBlZCkoImlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCIsZS5pc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQpLHgoMikscmUoInRpdGxlIixlLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSx4KDEpLFAoInN2Z0ljb24iLGUuaXNQaW5uZWQ/ImtlZXBfMjRweCI6ImtlZXBfb3V0bGluZV8yNHB4IikseCgxKSxQKCJkaXNhYmxlZCIsIWUuYWxsb3dUb2dnbGVBY3R1YWxTaXplKSx4KDQpLFAoIm5nU3R5bGUiLGFvKDE0LFg2dCxlLnJ1bkNvbG9yU2NhbGUoZS5ydW5JZCkpKSx4KDEpLFAoInJ1bklkIixlLnJ1bklkKSx4KDIpLFAoIm5nSWYiLGUuc3RlcEluZGV4IT09bnVsbCYmZS5zdGVwSW5kZXg8ZS5zdGVwcy5sZW5ndGgpLHgoMSksUCgibmdJZiIsZS5udW1TYW1wbGU+MSkseCgxKSxQKCJuZ0lmIixlLmxvYWRTdGF0ZT09PWUuRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSx4KDEpLFAoIm5nSWYiLGUuc3RlcEluZGV4IT09bnVsbCYmZS5zdGVwSW5kZXg8ZS5zdGVwcy5sZW5ndGgpKCJuZ0lmRWxzZSIsbyl9fSxkaXJlY3RpdmVzOltrbCxObCxmbixYZSxIcixibSxYdCxxcixZcixqbixtbl0scGlwZXM6W1hhXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5hY3R1YWwtc2l6ZVtfbmdob3N0LSVDT01QJV17aGVpZ2h0OmF1dG99LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjRweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubGluZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIG1heC1jb250ZW50fS50YWdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7Z2FwOjVweH0ubWV0YWRhdGFbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDtnYXA6NXB4O2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXgtd2lkdGg6MTc1cHg7dGV4dC1hbGlnbjplbmR9LnRhZy1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVde2FsaWduLXNlbGY6YmFzZWxpbmU7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXB9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAuZG90W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTNweDtoZWlnaHQ6MTNweDtib3JkZXItcmFkaXVzOjUwJTttYXJnaW4tcmlnaHQ6NHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVdICAgLnJ1bi10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczttYXgtd2lkdGg6MTIwcHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0sIC5zYW1wbGVbX25nY29udGVudC0lQ09NUCVdLCAuc3RlcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmb250LXNpemU6MTNweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnJ1bltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNhbXBsZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zYW1wbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnN0ZXBbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt3aGl0ZS1zcGFjZTpub3dyYXA7anVzdGlmeS1zZWxmOmZsZXgtZW5kO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXJpZ2h0Oi0xMnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmltZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxIDA7b3ZlcmZsb3cteTphdXRvO3Bvc2l0aW9uOnJlbGF0aXZlfS5pbWctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGltZ1tfbmdjb250ZW50LSVDT01QJV17aW1hZ2UtcmVuZGVyaW5nOi1tb3otY3Jpc3AtZWRnZXM7aW1hZ2UtcmVuZGVyaW5nOnBpeGVsYXRlZH0uYWN0dWFsLXNpemVbX25naG9zdC0lQ09NUCVdICAgLmltZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmF1dG87ZmxleDpub25lfVtfbmdob3N0LSVDT01QJV06bm90KC5hY3R1YWwtc2l6ZSkgICBpbWdbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO21heC1oZWlnaHQ6MTAwJTttYXgtd2lkdGg6MTAwJTt3aWR0aDphdXRvO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y29udGFpbn0uc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjRweDtwb3NpdGlvbjpyZWxhdGl2ZX0uc3RlcC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MX1bX25naG9zdC0lQ09NUCVdICAgICAubWF0LXNsaWRlci1taW4tdmFsdWUgLm1hdC1zbGlkZXItdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfVtfbmdob3N0LSVDT01QJV0gICAgIC5oaWRlLXNsaWRlci5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MH0uZW1wdHktbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxZW07Zm9udC1zaXplOjEzcHh9LmxpbmtlZC10aW1lLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1cHg7d2lkdGg6MTAwJX0ubGlua2VkLXRpbWUtdGlja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2JvcmRlci1yYWRpdXM6NTAlO2hlaWdodDoxNHB4O3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjE0cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmxpbmtlZC10aW1lLXRpY2tbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubGlua2VkLXRpbWUtdGlja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxfS5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVdLCAuc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoycHg7dG9wOjZweDtwb3NpdGlvbjphYnNvbHV0ZX0uc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjI2KTtsZWZ0OjdweDt3aWR0aDpjYWxjKDEwMCUgLSAxNHB4KX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNsaWRlci10cmFja1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4zKX0uc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2VmNmMwMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhIMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImltYWdlLWNhcmQtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiaW1hZ2VfY2FyZF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiaW1hZ2VfY2FyZF9jb21wb25lbnQuY3NzIl0saG9zdDp7IltjbGFzcy5hY3R1YWwtc2l6ZV0iOiJzaG93QWN0dWFsU2l6ZSJ9LGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2xvYWRTdGF0ZTpbe3R5cGU6ZH1dLHRpdGxlOlt7dHlwZTpkfV0sdGFnOlt7dHlwZTpkfV0scnVuSWQ6W3t0eXBlOmR9XSxzYW1wbGU6W3t0eXBlOmR9XSxudW1TYW1wbGU6W3t0eXBlOmR9XSxpbWFnZVVybDpbe3R5cGU6ZH1dLHN0ZXBJbmRleDpbe3R5cGU6ZH1dLHN0ZXBzOlt7dHlwZTpkfV0sYnJpZ2h0bmVzc0luTWlsbGk6W3t0eXBlOmR9XSxjb250cmFzdEluTWlsbGk6W3t0eXBlOmR9XSxzaG93QWN0dWFsU2l6ZTpbe3R5cGU6ZH1dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOmR9XSxhbGxvd1RvZ2dsZUFjdHVhbFNpemU6W3t0eXBlOmR9XSxpc1Bpbm5lZDpbe3R5cGU6ZH1dLHNlbGVjdGVkU3RlcHM6W3t0eXBlOmR9XSxsaW5rZWRUaW1lU2VsZWN0aW9uOlt7dHlwZTpkfV0saXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkOlt7dHlwZTpkfV0sb25BY3R1YWxTaXplVG9nZ2xlOlt7dHlwZTpCfV0sc3RlcEluZGV4Q2hhbmdlOlt7dHlwZTpCfV0sb25QaW5DbGlja2VkOlt7dHlwZTpCfV19KX0pKCk7dmFyIHdkPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5zdG9yZT10LHRoaXMuZGF0YVNvdXJjZT1lLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZD1uZXcgJCx0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgJCx0aGlzLmJyaWdodG5lc3NJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdChCRCksdGhpcy5jb250cmFzdEluTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KFZEKSx0aGlzLmFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJD10aGlzLnN0b3JlLnNlbGVjdChqRCksdGhpcy5zaG93QWN0dWFsU2l6ZT0hMSx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQ9ITEsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVTdWJqZWN0PW5ldyBHYSh0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQpLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSnR9b25TdGVwSW5kZXhDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVXooe2NhcmRJZDp0aGlzLmNhcmRJZCxzdGVwSW5kZXg6dH0pKX1pc0ltYWdlQ2FyZE1ldGFkYXRhKHQpe2xldHtwbHVnaW46ZX09dDtyZXR1cm4gZT09PUxvLklNQUdFU31vbkFjdHVhbFNpemVUb2dnbGUoKXt0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQ9IXRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZCx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZVN1YmplY3QubmV4dCh0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQpfW5nT25Jbml0KCl7b24oW3RoaXMuYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckLHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlU3ViamVjdF0pLnBpcGUoUGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxhbigoW3MsbF0pPT57dGhpcy5zaG93QWN0dWFsU2l6ZT1zfHxsLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0FjdHVhbFNpemUpfSkpLnN1YnNjcmliZSgoKT0+e30pO2xldCBlPXRoaXMuc3RvcmUuc2VsZWN0KFJfLHRoaXMuY2FyZElkKS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksdWUocz0+ISFzJiZ0aGlzLmlzSW1hZ2VDYXJkTWV0YWRhdGEocykpLEcocz0+cyksQmYoMSkpLGk9b24oW2UsdGhpcy5zdG9yZS5zZWxlY3QoVnksdGhpcy5jYXJkSWQpXSkucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEcoKFtzLGxdKT0+e2xldCBjPXMucnVuSWQ7cmV0dXJuIWx8fCFsLmhhc093blByb3BlcnR5KGMpP1tdOmxbY119KSxYbygocyxsKT0+cy5sZW5ndGg9PT1sLmxlbmd0aCYmcy5sZW5ndGg9PT0wPyEwOnM9PT1sKSxCZigxKSk7dGhpcy5zdGVwSW5kZXgkPXRoaXMuc3RvcmUuc2VsZWN0KGlVLHRoaXMuY2FyZElkKS5waXBlKEcocz0+cz9zLmluZGV4Om51bGwpKSx0aGlzLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoaVUsdGhpcy5jYXJkSWQpLnBpcGUoRyhzPT5zP3MuaXNDbG9zZXN0OiExKSksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KEJ5LHRoaXMuY2FyZElkKSx0aGlzLnRhZyQ9ZS5waXBlKEcocz0+cy50YWcpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShHKHM9PmYyKHMsdGhpcy5ncm91cE5hbWUpKSksdGhpcy5ydW5JZCQ9ZS5waXBlKEcocz0+cy5ydW5JZCkpLHRoaXMuc2FtcGxlJD1lLnBpcGUoRyhzPT5zLnNhbXBsZSkpLHRoaXMubnVtU2FtcGxlJD1lLnBpcGUoRyhzPT5zLm51bVNhbXBsZSkpLHRoaXMuc3RlcHMkPXRoaXMuc3RvcmUuc2VsZWN0KEJpdCx0aGlzLmNhcmRJZCksdGhpcy5pc1Bpbm5lZCQ9dGhpcy5zdG9yZS5zZWxlY3QoanksdGhpcy5jYXJkSWQpLHRoaXMubGlua2VkVGltZVNlbGVjdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QoanYpLnBpcGUoUGEodGhpcy5zdGVwcyQpLEcoKFtzLGxdKT0+e2lmKCFzKXJldHVybiBudWxsO2xldCBjPU1hdGgubWluKC4uLmwpLG09TWF0aC5tYXgoLi4ubCk7cmV0dXJuIHIxKHMsYyxtKX0pKSx0aGlzLnNlbGVjdGVkU3RlcHMkPXRoaXMubGlua2VkVGltZVNlbGVjdGlvbiQucGlwZShQYSh0aGlzLnN0ZXBzJCksRygoW3MsbF0pPT5zP3MuZW5kU3RlcD09PW51bGw/bC5pbmRleE9mKHMuc3RhcnRTdGVwKSE9PS0xP1tzLnN0YXJ0U3RlcF06W106bC5maWx0ZXIoYz0+Yz49cy5zdGFydFN0ZXAmJmM8PXMuZW5kU3RlcCk6W10pKTtsZXQgcj1vbihbaSx0aGlzLnN0ZXBJbmRleCRdKS5waXBlKEcoKFtzLGxdKT0+bD09PW51bGx8fCFzW2xdP251bGw6c1tsXSkpO3RoaXMuaW1hZ2VVcmwkPXIucGlwZShHKHM9PnM/dGhpcy5kYXRhU291cmNlLmltYWdlVXJsKHMuaW1hZ2VJZCk6bnVsbCkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX19O3dkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHdkKSh2KHN0KSx2KHBwKSl9O3dkLlx1MDI3NWNtcD16KHt0eXBlOndkLHNlbGVjdG9yczpbWyJpbWFnZS1jYXJkIl1dLGlucHV0czp7Y2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIn0sb3V0cHV0czp7ZnVsbFdpZHRoQ2hhbmdlZDoiZnVsbFdpZHRoQ2hhbmdlZCIscGluU3RhdGVDaGFuZ2VkOiJwaW5TdGF0ZUNoYW5nZWQifSxkZWNsczoxNyx2YXJzOjUwLGNvbnN0czpbWzMsImxvYWRTdGF0ZSIsInRpdGxlIiwidGFnIiwicnVuSWQiLCJzYW1wbGUiLCJudW1TYW1wbGUiLCJpbWFnZVVybCIsInN0ZXBJbmRleCIsInN0ZXBzIiwiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIiwiYnJpZ2h0bmVzc0luTWlsbGkiLCJjb250cmFzdEluTWlsbGkiLCJydW5Db2xvclNjYWxlIiwic2hvd0FjdHVhbFNpemUiLCJhbGxvd1RvZ2dsZUFjdHVhbFNpemUiLCJpc1Bpbm5lZCIsImxpbmtlZFRpbWVTZWxlY3Rpb24iLCJzZWxlY3RlZFN0ZXBzIiwic3RlcEluZGV4Q2hhbmdlIiwib25BY3R1YWxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJpbWFnZS1jYXJkLWNvbXBvbmVudCIsMCksQSgic3RlcEluZGV4Q2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblN0ZXBJbmRleENoYW5nZWQoaSl9KSgib25BY3R1YWxTaXplVG9nZ2xlIixmdW5jdGlvbigpe3JldHVybiBlLm9uQWN0dWFsU2l6ZVRvZ2dsZSgpfSkoIm9uUGluQ2xpY2tlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUucGluU3RhdGVDaGFuZ2VkLmVtaXQoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksWCg1LCJhc3luYyIpLFgoNiwiYXN5bmMiKSxYKDcsImFzeW5jIiksWCg4LCJhc3luYyIpLFgoOSwiYXN5bmMiKSxYKDEwLCJhc3luYyIpLFgoMTEsImFzeW5jIiksWCgxMiwiYXN5bmMiKSxYKDEzLCJhc3luYyIpLFgoMTQsImFzeW5jIiksWCgxNSwiYXN5bmMiKSxYKDE2LCJhc3luYyIpLGgoKSksdCYyJiZQKCJsb2FkU3RhdGUiLFEoMSwxOCxlLmxvYWRTdGF0ZSQpKSgidGl0bGUiLFEoMiwyMCxlLnRpdGxlJCkpKCJ0YWciLFEoMywyMixlLnRhZyQpKSgicnVuSWQiLFEoNCwyNCxlLnJ1bklkJCkpKCJzYW1wbGUiLFEoNSwyNixlLnNhbXBsZSQpKSgibnVtU2FtcGxlIixRKDYsMjgsZS5udW1TYW1wbGUkKSkoImltYWdlVXJsIixRKDcsMzAsZS5pbWFnZVVybCQpKSgic3RlcEluZGV4IixRKDgsMzIsZS5zdGVwSW5kZXgkKSkoInN0ZXBzIixRKDksMzQsZS5zdGVwcyQpKSgiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIixRKDEwLDM2LGUuaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkJCkpKCJicmlnaHRuZXNzSW5NaWxsaSIsUSgxMSwzOCxlLmJyaWdodG5lc3NJbk1pbGxpJCkpKCJjb250cmFzdEluTWlsbGkiLFEoMTIsNDAsZS5jb250cmFzdEluTWlsbGkkKSkoInJ1bkNvbG9yU2NhbGUiLGUucnVuQ29sb3JTY2FsZSkoInNob3dBY3R1YWxTaXplIixlLnNob3dBY3R1YWxTaXplKSgiYWxsb3dUb2dnbGVBY3R1YWxTaXplIixRKDEzLDQyLGUuYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckKT09PSExKSgiaXNQaW5uZWQiLFEoMTQsNDQsZS5pc1Bpbm5lZCQpKSgibGlua2VkVGltZVNlbGVjdGlvbiIsUSgxNSw0NixlLmxpbmtlZFRpbWVTZWxlY3Rpb24kKSkoInNlbGVjdGVkU3RlcHMiLFEoMTYsNDgsZS5zZWxlY3RlZFN0ZXBzJCkpfSxkaXJlY3RpdmVzOltIMF0scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMod2QsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJpbWFnZS1jYXJkIix0ZW1wbGF0ZTpgCiAgICA8aW1hZ2UtY2FyZC1jb21wb25lbnQKICAgICAgW2xvYWRTdGF0ZV09ImxvYWRTdGF0ZSQgfCBhc3luYyIKICAgICAgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiCiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiCiAgICAgIFtydW5JZF09InJ1bklkJCB8IGFzeW5jIgogICAgICBbc2FtcGxlXT0ic2FtcGxlJCB8IGFzeW5jIgogICAgICBbbnVtU2FtcGxlXT0ibnVtU2FtcGxlJCB8IGFzeW5jIgogICAgICBbaW1hZ2VVcmxdPSJpbWFnZVVybCQgfCBhc3luYyIKICAgICAgW3N0ZXBJbmRleF09InN0ZXBJbmRleCQgfCBhc3luYyIKICAgICAgW3N0ZXBzXT0ic3RlcHMkIHwgYXN5bmMiCiAgICAgIFtpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWRdPSJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQkIHwgYXN5bmMiCiAgICAgIChzdGVwSW5kZXhDaGFuZ2UpPSJvblN0ZXBJbmRleENoYW5nZWQoJGV2ZW50KSIKICAgICAgW2JyaWdodG5lc3NJbk1pbGxpXT0iYnJpZ2h0bmVzc0luTWlsbGkkIHwgYXN5bmMiCiAgICAgIFtjb250cmFzdEluTWlsbGldPSJjb250cmFzdEluTWlsbGkkIHwgYXN5bmMiCiAgICAgIFtydW5Db2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSIKICAgICAgW3Nob3dBY3R1YWxTaXplXT0ic2hvd0FjdHVhbFNpemUiCiAgICAgIFthbGxvd1RvZ2dsZUFjdHVhbFNpemVdPSIoYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckIHwgYXN5bmMpID09PSBmYWxzZSIKICAgICAgW2lzUGlubmVkXT0iaXNQaW5uZWQkIHwgYXN5bmMiCiAgICAgIFtsaW5rZWRUaW1lU2VsZWN0aW9uXT0ibGlua2VkVGltZVNlbGVjdGlvbiQgfCBhc3luYyIKICAgICAgW3NlbGVjdGVkU3RlcHNdPSJzZWxlY3RlZFN0ZXBzJCB8IGFzeW5jIgogICAgICAob25BY3R1YWxTaXplVG9nZ2xlKT0ib25BY3R1YWxTaXplVG9nZ2xlKCkiCiAgICAgIChvblBpbkNsaWNrZWQpPSJwaW5TdGF0ZUNoYW5nZWQuZW1pdCgkZXZlbnQpIgogICAgPjwvaW1hZ2UtY2FyZC1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH0se3R5cGU6cHB9XX0se2NhcmRJZDpbe3R5cGU6ZH1dLGdyb3VwTmFtZTpbe3R5cGU6ZH1dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOmR9XSxmdWxsV2lkdGhDaGFuZ2VkOlt7dHlwZTpCfV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpCfV19KX0pKCk7ZnVuY3Rpb24gb2N0KG4sdCl7dmFyIGU7cmV0dXJuIHpDKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXtuLmxlbmd0aCxOdW1iZXIuaXNGaW5pdGUodCl8fCh0PTApLHQ9TWF0aC5tYXgoMCxNYXRoLm1pbih0LDEpKTtsZXQgbz1bXTtmb3IobGV0IGkgb2Ygbil7bGV0IGE9KGU9aS5wb2ludHNbMF0pPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS55O2lmKGkucG9pbnRzLmV2ZXJ5KG09Pm0ueT09YSkpe28ucHVzaChpKTtjb250aW51ZX1sZXQgcz1pLnBvaW50cy5sZW5ndGg+MD8wOk5hTixsPTAsYz1pLnBvaW50cy5tYXAobT0+e2xldCBmPW0ueTtpZihOdW1iZXIuaXNGaW5pdGUoZikpe3M9cyp0KygxLXQpKmYsbCsrO2xldCBwPXQ9PT0xPzE6MS1NYXRoLnBvdyh0LGwpO3JldHVybnt4Om0ueCx5OnMvcH19ZWxzZSByZXR1cm57eDptLngseTpmfX0pO28ucHVzaCh7aWQ6aS5pZCxwb2ludHM6Y30pfXJldHVybiBvfSl9dmFyIGthOyhmdW5jdGlvbihuKXtuW24uU1ZHPTBdPSJTVkciLG5bbi5XRUJHTD0xXT0iV0VCR0wifSkoa2F8fChrYT17fSkpO3ZhciBDcjsoZnVuY3Rpb24obil7bltuLkxJTkVBUj0wXT0iTElORUFSIixuW24uTE9HMTA9MV09IkxPRzEwIixuW24uVElNRT0yXT0iVElNRSJ9KShDcnx8KENyPXt9KSk7ZnVuY3Rpb24gJDZ0KG4sdCl7biYxJiYodSgwLCJzcGFuIiksVCgxLCJzY2FsYXIiKSxoKCkpfWZ1bmN0aW9uIHRIdChuLHQpe24mMSYmKHUoMCwic3BhbiIpLFQoMSwiaGlzdG9ncmFtIiksaCgpKX1mdW5jdGlvbiBlSHQobix0KXtuJjEmJih1KDAsInNwYW4iKSxUKDEsInVua25vd24iKSxoKCkpfWZ1bmN0aW9uIG5IdChuLHQpe2lmKG4mMSYmKEVuKDAsMTMpLGsoMSwkNnQsMiwwLCJzcGFuIiwxNCksaygyLHRIdCwyLDAsInNwYW4iLDE0KSxrKDMsZUh0LDIsMCwic3BhbiIsMTUpLGtuKCkpLG4mMil7bGV0IGU9UygyKTtQKCJuZ1N3aXRjaCIsZS5jYXJkTWV0YWRhdGEucGx1Z2luKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsZS5QbHVnaW5UeXBlLlNDQUxBUlMpLHgoMSksUCgibmdTd2l0Y2hDYXNlIixlLlBsdWdpblR5cGUuSElTVE9HUkFNUyl9fWZ1bmN0aW9uIG9IdChuLHQpe24mMSYmTW8oMCl9ZnVuY3Rpb24gaUh0KG4sdCl7aWYobiYxJiYodSgwLCJvcHRpb24iLDE2KSxUKDEpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdDtQKCJ2YWx1ZSIsZS5pZCkseCgxKSxJZShlLm5hbWUpfX1mdW5jdGlvbiBhSHQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7RW4oMCksdSgxLCJoMiIpLGsoMixuSHQsNCwzLCJuZy10ZW1wbGF0ZSIsbnVsbCwyLHhuKSx1KDQsInNwYW4iKSxUKDUsIkRvd25sb2FkXHhBMCIpLGgoKSxrKDYsb0h0LDEsMCwibmctY29udGFpbmVyIiwzKSx1KDcsInNwYW4iKSxUKDgsIlx4QTBkYXRhIGZvclx4QTAiKSxoKCksdSg5LCJjb2RlIiw0KSxUKDEwKSxoKCksaCgpLHUoMTEsIm1hdC1kaWFsb2ctY29udGVudCIpLHUoMTIsIm1hdC1mb3JtLWZpZWxkIiw1KSx1KDEzLCJtYXQtbGFiZWwiKSxUKDE0LCJTZWxlY3QgYSBydW4gdG8gZG93bmxvYWQgYSBkYXRhIGZvciBhIHNlcmllcyIpLGgoKSx1KDE1LCJzZWxlY3QiLDYpLEEoImNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5ydW5TZWxlY3RlZC5lbWl0KGkudGFyZ2V0LnZhbHVlKX0pLHUoMTYsIm9wdGlvbiIsNyksVCgxNywiLSIpLGgoKSxrKDE4LGlIdCwyLDIsIm9wdGlvbiIsOCksaCgpLGgoKSx1KDE5LCJkaXYiLDkpLHUoMjAsInNwYW4iKSxUKDIxLCJEb3dubG9hZCBhc1x1MjAyNiIpLGgoKSxUKDIyLCJceEEwIiksdSgyMywiYSIsMTApLFQoMjQsIkpTT04iKSxoKCksdSgyNSwiYSIsMTApLFQoMjYsIkNTViIpLGgoKSxoKCksaCgpLHUoMjcsIm1hdC1kaWFsb2ctYWN0aW9ucyIsMTEpLHUoMjgsImJ1dHRvbiIsMTIpLFQoMjksIkNsb3NlIiksaCgpLGgoKSxrbigpfWlmKG4mMil7bGV0IGU9d2UoMyksbz1TKCk7eCg2KSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixlKSx4KDMpLFAoInRpdGxlIixvLmNhcmRNZXRhZGF0YS50YWcpLHgoMSksSWUoby5jYXJkTWV0YWRhdGEudGFnKSx4KDUpLFAoInZhbHVlIixvLnNlbGVjdGVkUnVuSWR8fCIiKSx4KDEpLFAoInZhbHVlIiwiIikseCgyKSxQKCJuZ0Zvck9mIixvLnJ1bnMpLHgoNSksUCgiZGlzYWJsZWQiLCFvLmRvd25sb2FkVXJsSnNvbikoImRvd25sb2FkIixvLmdldERvd25sb2FkTmFtZSgianNvbiIpKSxyZSgiaHJlZiIsby5kb3dubG9hZFVybEpzb24sV2YpLHgoMiksUCgiZGlzYWJsZWQiLCFvLmRvd25sb2FkVXJsQ3N2KSgiZG93bmxvYWQiLG8uZ2V0RG93bmxvYWROYW1lKCJjc3YiKSkscmUoImhyZWYiLG8uZG93bmxvYWRVcmxDc3YsV2YpfX1mdW5jdGlvbiBySHQobix0KXtuJjEmJlQoMCwiTG9hZGluZy4uLiIpfXZhciBGMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMucnVuU2VsZWN0ZWQ9bmV3ICQsdGhpcy5QbHVnaW5UeXBlPUxvfWdldERvd25sb2FkTmFtZSh0KXtsZXQgZT10aGlzLnJ1bnMuZmluZChvPT5vLmlkPT09dGhpcy5zZWxlY3RlZFJ1bklkKTtyZXR1cm4gZT9gJHtlLm5hbWV9LiR7dH1gOiIifX07RjAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RjApfTtGMC5cdTAyNzVjbXA9eih7dHlwZTpGMCxzZWxlY3RvcnM6W1siZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZE1ldGFkYXRhOiJjYXJkTWV0YWRhdGEiLHJ1bnM6InJ1bnMiLHNlbGVjdGVkUnVuSWQ6InNlbGVjdGVkUnVuSWQiLGRvd25sb2FkVXJsQ3N2OiJkb3dubG9hZFVybENzdiIsZG93bmxvYWRVcmxKc29uOiJkb3dubG9hZFVybEpzb24ifSxvdXRwdXRzOntydW5TZWxlY3RlZDoicnVuU2VsZWN0ZWQifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1s0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vQ2FyZE1ldGFkYXRhIiwiIl0sWyJkYXRhTmFtZSIsIiJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsInRhZy1uYW1lIiwzLCJ0aXRsZSJdLFsiYXBwZWFyYW5jZSIsImZpbGwiLDEsInJ1bi1zZWxlY3RvciJdLFsibWF0TmF0aXZlQ29udHJvbCIsIiIsIm5hbWUiLCJydW4iLCJjZGtGb2N1c0luaXRpYWwiLCIiLCJyZXF1aXJlZCIsIiIsMywidmFsdWUiLCJjaGFuZ2UiXSxbInNlbGVjdGVkIiwiIiwzLCJ2YWx1ZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImRvd25sb2FkLWNvbnRyb2xzIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDMsImRpc2FibGVkIiwiZG93bmxvYWQiXSxbImFsaWduIiwiZW5kIl0sWyJtYXQtYnV0dG9uIiwiIiwibWF0LWRpYWxvZy1jbG9zZSIsIiJdLFszLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaENhc2UiXSxbNCwiTmdTd2l0Y2hEZWZhdWx0Il0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYoaygwLGFIdCwzMCwxMiwibmctY29udGFpbmVyIiwwKSxrKDEsckh0LDEsMCwibmctdGVtcGxhdGUiLG51bGwsMSx4bikpLHQmMil7bGV0IG89d2UoMik7UCgibmdJZiIsZS5jYXJkTWV0YWRhdGEpKCJuZ0lmRWxzZSIsbyl9fSxkaXJlY3RpdmVzOltYdCxMYSxwZixvaSxwcyxFcixIcCxGcCxtbixlbCxkZixmbixsYyxHbyx1aV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1oMltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEuMjVlbTtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LnJ1bi1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45ZW07d2lkdGg6MTAwJX0uZG93bmxvYWQtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtfS5kb3dubG9hZC1jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV0gICBhW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46M3B4IDEwcHggM3B4IDB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRjAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiZGF0YV9kb3dubG9hZF9kaWFsb2dfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2NhcmRNZXRhZGF0YTpbe3R5cGU6ZH1dLHJ1bnM6W3t0eXBlOmR9XSxzZWxlY3RlZFJ1bklkOlt7dHlwZTpkfV0sZG93bmxvYWRVcmxDc3Y6W3t0eXBlOmR9XSxkb3dubG9hZFVybEpzb246W3t0eXBlOmR9XSxydW5TZWxlY3RlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciB4Zj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5zZWxlY3RlZFJ1bklkJD1uZXcgR2EobnVsbCksdGhpcy5jYXJkTWV0YWRhdGEkPXQuc2VsZWN0KFJfLG8uY2FyZElkKS5waXBlKHVlKGk9PkJvb2xlYW4oaSkpKSx0aGlzLmRvd25sb2FkVXJsQ3N2JD1vbihbdC5zZWxlY3QoUl8sby5jYXJkSWQpLHRoaXMuc2VsZWN0ZWRSdW5JZCRdKS5waXBlKEcoKFtpLGFdKT0+IWl8fCFhP251bGw6ZS5kb3dubG9hZFVybChpLnBsdWdpbixpLnRhZyxhLCJjc3YiKSksU28obnVsbCkpLHRoaXMuZG93bmxvYWRVcmxKc29uJD1vbihbdC5zZWxlY3QoUl8sby5jYXJkSWQpLHRoaXMuc2VsZWN0ZWRSdW5JZCRdKS5waXBlKEcoKFtpLGFdKT0+IWl8fCFhP251bGw6ZS5kb3dubG9hZFVybChpLnBsdWdpbixpLnRhZyxhLCJqc29uIikpLFNvKG51bGwpKSx0aGlzLnJ1bnMkPW9uKFt0LnNlbGVjdChaRCksdC5zZWxlY3QoVnksby5jYXJkSWQpXSkucGlwZShHKChbaSxhXSk9PmE/T2JqZWN0LmtleXMoYSkubWFwKHI9PmkuZ2V0KHIpKS5maWx0ZXIoQm9vbGVhbik6W10pKX19O3hmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHhmKSh2KHN0KSx2KHBwKSx2KCR2KSl9O3hmLlx1MDI3NWNtcD16KHt0eXBlOnhmLHNlbGVjdG9yczpbWyJkYXRhX2Rvd25sb2FkX2RpYWxvZyJdXSxkZWNsczo2LHZhcnM6MTUsY29uc3RzOltbMywiY2FyZE1ldGFkYXRhIiwicnVucyIsInNlbGVjdGVkUnVuSWQiLCJkb3dubG9hZFVybENzdiIsImRvd25sb2FkVXJsSnNvbiIsInJ1blNlbGVjdGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQiLDApLEEoInJ1blNlbGVjdGVkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5zZWxlY3RlZFJ1bklkJC5uZXh0KGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksWCg0LCJhc3luYyIpLFgoNSwiYXN5bmMiKSxoKCkpLHQmMiYmUCgiY2FyZE1ldGFkYXRhIixRKDEsNSxlLmNhcmRNZXRhZGF0YSQpKSgicnVucyIsUSgyLDcsZS5ydW5zJCkpKCJzZWxlY3RlZFJ1bklkIixRKDMsOSxlLnNlbGVjdGVkUnVuSWQkKSkoImRvd25sb2FkVXJsQ3N2IixRKDQsMTEsZS5kb3dubG9hZFVybENzdiQpKSgiZG93bmxvYWRVcmxKc29uIixRKDUsMTMsZS5kb3dubG9hZFVybEpzb24kKSl9LGRpcmVjdGl2ZXM6W0YwXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh4Zixbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImRhdGFfZG93bmxvYWRfZGlhbG9nIix0ZW1wbGF0ZTpgPGRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudAogICAgW2NhcmRNZXRhZGF0YV09ImNhcmRNZXRhZGF0YSQgfCBhc3luYyIKICAgIFtydW5zXT0icnVucyQgfCBhc3luYyIKICAgIFtzZWxlY3RlZFJ1bklkXT0ic2VsZWN0ZWRSdW5JZCQgfCBhc3luYyIKICAgIFtkb3dubG9hZFVybENzdl09ImRvd25sb2FkVXJsQ3N2JCB8IGFzeW5jIgogICAgW2Rvd25sb2FkVXJsSnNvbl09ImRvd25sb2FkVXJsSnNvbiQgfCBhc3luYyIKICAgIChydW5TZWxlY3RlZCk9InNlbGVjdGVkUnVuSWQkLm5leHQoJGV2ZW50KSIKICA+PC9kYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQ+YCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH0se3R5cGU6cHB9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6WyR2XX1dfV19LG51bGwpfSkoKTt2YXIgWGs7KGZ1bmN0aW9uKG4pe25bbi5PUklHSU5BTD0wXT0iT1JJR0lOQUwiLG5bbi5ERVJJVkVEPTFdPSJERVJJVkVEIn0pKFhrfHwoWGs9e30pKTt2YXIgVG47KGZ1bmN0aW9uKG4pe24uQ09MT1I9IkNPTE9SIixuLlJFTEFUSVZFX1RJTUU9IlJFTEFUSVZFX1RJTUUiLG4uUlVOPSJSVU4iLG4uU1RFUD0iU1RFUCIsbi5USU1FPSJUSU1FIixuLlZBTFVFPSJWQUxVRSIsbi5TTU9PVEhFRD0iU01PT1RIRUQiLG4uVkFMVUVfQ0hBTkdFPSJWQUxVRV9DSEFOR0UiLG4uU1RBUlRfU1RFUD0iU1RBUlRfU1RFUCIsbi5FTkRfU1RFUD0iRU5EX1NURVAiLG4uU1RBUlRfVkFMVUU9IlNUQVJUX1ZBTFVFIixuLkVORF9WQUxVRT0iRU5EX1ZBTFVFIixuLk1JTl9WQUxVRT0iTUlOX1ZBTFVFIixuLk1BWF9WQUxVRT0iTUFYX1ZBTFVFIixuLlBFUkNFTlRBR0VfQ0hBTkdFPSJQRVJDRU5UQUdFX0NIQU5HRSJ9KShUbnx8KFRuPXt9KSk7dmFyIEwwOyhmdW5jdGlvbihuKXtuW24uQVNDRU5ESU5HPTBdPSJBU0NFTkRJTkciLG5bbi5ERVNDRU5ESU5HPTFdPSJERVNDRU5ESU5HIn0pKEwwfHwoTDA9e30pKTt2YXIgT207KGZ1bmN0aW9uKG4pe24uTk9ORT0ibm8gYWZmb3JkYW5jZSIsbi5FWFRFTkRFRF9MSU5FPSJleHRlbmRlZExpbmUiLG4uRk9CPSJmb2IiLG4uRk9CX1JFTU9WRUQ9ImZvYlJlbW92ZWQiLG4uRk9CX1RFWFQ9ImZvYlRleHQiLG4uU0VUVElOR1NfVEVYVD0ic2V0dGluZ3NUZXh0IixuLlNFVFRJTkdTX1NMSURFUj0ic2V0dGluZ3NTbGlkZXIiLG4uQ0hBTkdFX1RPX1NJTkdMRT0iY2hhbmdlVG9TaW5nbGUiLG4uSElTVE9HUkFNX0NMSUNLX1RPX1JBTkdFPSJoaXN0b2dyYW1DbGlja1RvUmFuZ2UifSkoT218fChPbT17fSkpO3ZhciBQTzsoZnVuY3Rpb24obil7bi5OT05FPSJubyB0b2dnbGUgYWZmb3JkYW5jZSIsbi5GT0JfREVTRUxFQ1Q9ImZvYkRlc2VsZWN0IixuLkNIRUNLX0JPWD0iY2hlY2tCb3gifSkoUE98fChQTz17fSkpO3ZhciBTZDsoZnVuY3Rpb24obil7bltuLkhPUklaT05UQUw9MF09IkhPUklaT05UQUwiLG5bbi5WRVJUSUNBTD0xXT0iVkVSVElDQUwifSkoU2R8fChTZD17fSkpO2Z1bmN0aW9uIEIwKG4sdCl7cmV0dXJuIG48dD8tMTpuPnQ/MTpuPj10PzA6TmFOfWZ1bmN0aW9uIFFrKG4pe3JldHVybiBuLmxlbmd0aD09PTEmJihuPWxIdChuKSkse2xlZnQ6ZnVuY3Rpb24odCxlLG8saSl7Zm9yKG89PW51bGwmJihvPTApLGk9PW51bGwmJihpPXQubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO24odFthXSxlKTwwP289YSsxOmk9YX1yZXR1cm4gb30scmlnaHQ6ZnVuY3Rpb24odCxlLG8saSl7Zm9yKG89PW51bGwmJihvPTApLGk9PW51bGwmJihpPXQubGVuZ3RoKTtvPGk7KXt2YXIgYT1vK2k+Pj4xO24odFthXSxlKT4wP2k9YTpvPWErMX1yZXR1cm4gb319fWZ1bmN0aW9uIGxIdChuKXtyZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gQjAobih0KSxlKX19dmFyIGljdD1RayhCMCksYWN0PWljdC5yaWdodCxjSHQ9aWN0LmxlZnQsdGI9YWN0O2Z1bmN0aW9uIHM2KG4sdCl7dmFyIGU9bi5sZW5ndGgsbz0tMSxpLGEscjtpZih0PT1udWxsKXtmb3IoOysrbzxlOylpZigoaT1uW29dKSE9bnVsbCYmaT49aSlmb3IoYT1yPWk7KytvPGU7KShpPW5bb10pIT1udWxsJiYoYT5pJiYoYT1pKSxyPGkmJihyPWkpKX1lbHNlIGZvcig7KytvPGU7KWlmKChpPXQobltvXSxvLG4pKSE9bnVsbCYmaT49aSlmb3IoYT1yPWk7KytvPGU7KShpPXQobltvXSxvLG4pKSE9bnVsbCYmKGE+aSYmKGE9aSkscjxpJiYocj1pKSk7cmV0dXJuW2Escl19dmFyIHJjdD1BcnJheS5wcm90b3R5cGUsc2N0PXJjdC5zbGljZSxmSHQ9cmN0Lm1hcDtmdW5jdGlvbiBLayhuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gbGN0KG4pe3JldHVybiBufWZ1bmN0aW9uIGh4KG4sdCxlKXtuPStuLHQ9K3QsZT0oaT1hcmd1bWVudHMubGVuZ3RoKTwyPyh0PW4sbj0wLDEpOmk8Mz8xOitlO2Zvcih2YXIgbz0tMSxpPU1hdGgubWF4KDAsTWF0aC5jZWlsKCh0LW4pL2UpKXwwLGE9bmV3IEFycmF5KGkpOysrbzxpOylhW29dPW4rbyplO3JldHVybiBhfXZhciBjRz1NYXRoLnNxcnQoNTApLG1HPU1hdGguc3FydCgxMCksZkc9TWF0aC5zcXJ0KDIpO2Z1bmN0aW9uIEprKG4sdCxlKXt2YXIgbyxpPS0xLGEscixzO2lmKHQ9K3Qsbj0rbixlPStlLG49PT10JiZlPjApcmV0dXJuW25dO2lmKChvPXQ8bikmJihhPW4sbj10LHQ9YSksKHM9cDIobix0LGUpKT09PTB8fCFpc0Zpbml0ZShzKSlyZXR1cm5bXTtpZihzPjApZm9yKG49TWF0aC5jZWlsKG4vcyksdD1NYXRoLmZsb29yKHQvcykscj1uZXcgQXJyYXkoYT1NYXRoLmNlaWwodC1uKzEpKTsrK2k8YTspcltpXT0obitpKSpzO2Vsc2UgZm9yKG49TWF0aC5mbG9vcihuKnMpLHQ9TWF0aC5jZWlsKHQqcykscj1uZXcgQXJyYXkoYT1NYXRoLmNlaWwobi10KzEpKTsrK2k8YTspcltpXT0obi1pKS9zO3JldHVybiBvJiZyLnJldmVyc2UoKSxyfWZ1bmN0aW9uIHAyKG4sdCxlKXt2YXIgbz0odC1uKS9NYXRoLm1heCgwLGUpLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApLGE9by9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49Y0c/MTA6YT49bUc/NTphPj1mRz8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PWNHPzEwOmE+PW1HPzU6YT49Zkc/MjoxKX1mdW5jdGlvbiB5TyhuLHQsZSl7dmFyIG89TWF0aC5hYnModC1uKS9NYXRoLm1heCgwLGUpLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhvKS9NYXRoLkxOMTApKSxhPW8vaTtyZXR1cm4gYT49Y0c/aSo9MTA6YT49bUc/aSo9NTphPj1mRyYmKGkqPTIpLHQ8bj8taTppfWZ1bmN0aW9uIGw2KG4pe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2cobi5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIGM2KCl7dmFyIG49bGN0LHQ9czYsZT1sNjtmdW5jdGlvbiBvKGkpe3ZhciBhLHI9aS5sZW5ndGgscyxsPW5ldyBBcnJheShyKTtmb3IoYT0wO2E8cjsrK2EpbFthXT1uKGlbYV0sYSxpKTt2YXIgYz10KGwpLG09Y1swXSxmPWNbMV0scD1lKGwsbSxmKTtBcnJheS5pc0FycmF5KHApfHwocD15TyhtLGYscCkscD1oeChNYXRoLmNlaWwobS9wKSpwLGYscCkpO2Zvcih2YXIgZz1wLmxlbmd0aDtwWzBdPD1tOylwLnNoaWZ0KCksLS1nO2Zvcig7cFtnLTFdPmY7KXAucG9wKCksLS1nO3ZhciBfPW5ldyBBcnJheShnKzEpLE07Zm9yKGE9MDthPD1nOysrYSlNPV9bYV09W10sTS54MD1hPjA/cFthLTFdOm0sTS54MT1hPGc/cFthXTpmO2ZvcihhPTA7YTxyOysrYSlzPWxbYV0sbTw9cyYmczw9ZiYmX1t0YihwLHMsMCxnKV0ucHVzaChpW2FdKTtyZXR1cm4gX31yZXR1cm4gby52YWx1ZT1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOktrKGkpLG8pOm59LG8uZG9tYWluPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6S2soW2lbMF0saVsxXV0pLG8pOnR9LG8udGhyZXNob2xkcz1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOkFycmF5LmlzQXJyYXkoaSk/S2soc2N0LmNhbGwoaSkpOktrKGkpLG8pOmV9LG99dmFyIG02PUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBjY3Qobil7cmV0dXJuIG59dmFyIGRHPTEsZjY9MixnRz0zLCRrPTQsbWN0PTFlLTY7ZnVuY3Rpb24gaEh0KG4pe3JldHVybiJ0cmFuc2xhdGUoIisobisuNSkrIiwwKSJ9ZnVuY3Rpb24gX0h0KG4pe3JldHVybiJ0cmFuc2xhdGUoMCwiKyhuKy41KSsiKSJ9ZnVuY3Rpb24gQ0h0KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4rbih0KX19ZnVuY3Rpb24gTUh0KG4pe3ZhciB0PU1hdGgubWF4KDAsbi5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiBuLnJvdW5kKCkmJih0PU1hdGgucm91bmQodCkpLGZ1bmN0aW9uKGUpe3JldHVybituKGUpK3R9fWZ1bmN0aW9uIGJIdCgpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiB1RyhuLHQpe3ZhciBlPVtdLG89bnVsbCxpPW51bGwsYT02LHI9NixzPTMsbD1uPT09ZEd8fG49PT0kaz8tMToxLGM9bj09PSRrfHxuPT09ZjY/IngiOiJ5IixtPW49PT1kR3x8bj09PWdHP2hIdDpfSHQ7ZnVuY3Rpb24gZihwKXt2YXIgZz1vPT1udWxsP3QudGlja3M/dC50aWNrcy5hcHBseSh0LGUpOnQuZG9tYWluKCk6byxfPWk9PW51bGw/dC50aWNrRm9ybWF0P3QudGlja0Zvcm1hdC5hcHBseSh0LGUpOmNjdDppLE09TWF0aC5tYXgoYSwwKStzLHk9dC5yYW5nZSgpLE89K3lbMF0rLjUsYj0reVt5Lmxlbmd0aC0xXSsuNSxSPSh0LmJhbmR3aWR0aD9NSHQ6Q0h0KSh0LmNvcHkoKSksRT1wLnNlbGVjdGlvbj9wLnNlbGVjdGlvbigpOnAsaj1FLnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSxydD1FLnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGcsdCkub3JkZXIoKSxKPXJ0LmV4aXQoKSxFdD1ydC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidGljayIpLGp0PXJ0LnNlbGVjdCgibGluZSIpLGt0PXJ0LnNlbGVjdCgidGV4dCIpO2o9ai5tZXJnZShqLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSxydD1ydC5tZXJnZShFdCksanQ9anQubWVyZ2UoRXQuYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihjKyIyIixsKmEpKSxrdD1rdC5tZXJnZShFdC5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihjLGwqTSkuYXR0cigiZHkiLG49PT1kRz8iMGVtIjpuPT09Z0c/IjAuNzFlbSI6IjAuMzJlbSIpKSxwIT09RSYmKGo9ai50cmFuc2l0aW9uKHApLHJ0PXJ0LnRyYW5zaXRpb24ocCksanQ9anQudHJhbnNpdGlvbihwKSxrdD1rdC50cmFuc2l0aW9uKHApLEo9Si50cmFuc2l0aW9uKHApLmF0dHIoIm9wYWNpdHkiLG1jdCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih3KXtyZXR1cm4gaXNGaW5pdGUodz1SKHcpKT9tKHcpOnRoaXMuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKX0pLEV0LmF0dHIoIm9wYWNpdHkiLG1jdCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih3KXt2YXIgVT10aGlzLnBhcmVudE5vZGUuX19heGlzO3JldHVybiBtKFUmJmlzRmluaXRlKFU9VSh3KSk/VTpSKHcpKX0pKSxKLnJlbW92ZSgpLGouYXR0cigiZCIsbj09PSRrfHxuPT1mNj9yPyJNIitsKnIrIiwiK08rIkgwLjVWIitiKyJIIitsKnI6Ik0wLjUsIitPKyJWIitiOnI/Ik0iK08rIiwiK2wqcisiVjAuNUgiK2IrIlYiK2wqcjoiTSIrTysiLDAuNUgiK2IpLHJ0LmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odyl7cmV0dXJuIG0oUih3KSl9KSxqdC5hdHRyKGMrIjIiLGwqYSksa3QuYXR0cihjLGwqTSkudGV4dChfKSxFLmZpbHRlcihiSHQpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZm9udC1zaXplIiwxMCkuYXR0cigiZm9udC1mYW1pbHkiLCJzYW5zLXNlcmlmIikuYXR0cigidGV4dC1hbmNob3IiLG49PT1mNj8ic3RhcnQiOm49PT0kaz8iZW5kIjoibWlkZGxlIiksRS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5fX2F4aXM9Un0pfXJldHVybiBmLnNjYWxlPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXAsZik6dH0sZi50aWNrcz1mdW5jdGlvbigpe3JldHVybiBlPW02LmNhbGwoYXJndW1lbnRzKSxmfSxmLnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9cD09bnVsbD9bXTptNi5jYWxsKHApLGYpOmUuc2xpY2UoKX0sZi50aWNrVmFsdWVzPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXA9PW51bGw/bnVsbDptNi5jYWxsKHApLGYpOm8mJm8uc2xpY2UoKX0sZi50aWNrRm9ybWF0PWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXAsZik6aX0sZi50aWNrU2l6ZT1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1yPStwLGYpOmF9LGYudGlja1NpemVJbm5lcj1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rcCxmKTphfSxmLnRpY2tTaXplT3V0ZXI9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3AsZik6cn0sZi50aWNrUGFkZGluZz1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rcCxmKTpzfSxmfWZ1bmN0aW9uIHQ1KG4pe3JldHVybiB1RyhmNixuKX1mdW5jdGlvbiBlNShuKXtyZXR1cm4gdUcoZ0csbil9ZnVuY3Rpb24gaEcobil7cmV0dXJuIHVHKCRrLG4pfXZhciBPSHQ9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gcGN0KCl7Zm9yKHZhciBuPTAsdD1hcmd1bWVudHMubGVuZ3RoLGU9e30sbztuPHQ7KytuKXtpZighKG89YXJndW1lbnRzW25dKyIiKXx8byBpbiBlfHwvW1xzLl0vLnRlc3QobykpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrbyk7ZVtvXT1bXX1yZXR1cm4gbmV3IHA2KGUpfWZ1bmN0aW9uIHA2KG4pe3RoaXMuXz1ufWZ1bmN0aW9uIFBIdChuLHQpe3JldHVybiBuLnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24oZSl7dmFyIG89IiIsaT1lLmluZGV4T2YoIi4iKTtpZihpPj0wJiYobz1lLnNsaWNlKGkrMSksZT1lLnNsaWNlKDAsaSkpLGUmJiF0Lmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK2UpO3JldHVybnt0eXBlOmUsbmFtZTpvfX0pfXA2LnByb3RvdHlwZT1wY3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpwNixvbjpmdW5jdGlvbihuLHQpe3ZhciBlPXRoaXMuXyxvPVBIdChuKyIiLGUpLGksYT0tMSxyPW8ubGVuZ3RoO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKDsrK2E8cjspaWYoKGk9KG49b1thXSkudHlwZSkmJihpPXlIdChlW2ldLG4ubmFtZSkpKXJldHVybiBpO3JldHVybn1pZih0IT1udWxsJiZ0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrdCk7Zm9yKDsrK2E8cjspaWYoaT0obj1vW2FdKS50eXBlKWVbaV09ZmN0KGVbaV0sbi5uYW1lLHQpO2Vsc2UgaWYodD09bnVsbClmb3IoaSBpbiBlKWVbaV09ZmN0KGVbaV0sbi5uYW1lLG51bGwpO3JldHVybiB0aGlzfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIG49e30sdD10aGlzLl87Zm9yKHZhciBlIGluIHQpbltlXT10W2VdLnNsaWNlKCk7cmV0dXJuIG5ldyBwNihuKX0sY2FsbDpmdW5jdGlvbihuLHQpe2lmKChpPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIGU9bmV3IEFycmF5KGkpLG89MCxpLGE7bzxpOysrbyllW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkobikpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrbik7Zm9yKGE9dGhpcy5fW25dLG89MCxpPWEubGVuZ3RoO288aTsrK28pYVtvXS52YWx1ZS5hcHBseSh0LGUpfSxhcHBseTpmdW5jdGlvbihuLHQsZSl7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eShuKSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIituKTtmb3IodmFyIG89dGhpcy5fW25dLGk9MCxhPW8ubGVuZ3RoO2k8YTsrK2kpb1tpXS52YWx1ZS5hcHBseSh0LGUpfX07ZnVuY3Rpb24geUh0KG4sdCl7Zm9yKHZhciBlPTAsbz1uLmxlbmd0aCxpO2U8bzsrK2UpaWYoKGk9bltlXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWV9ZnVuY3Rpb24gZmN0KG4sdCxlKXtmb3IodmFyIG89MCxpPW4ubGVuZ3RoO288aTsrK28paWYobltvXS5uYW1lPT09dCl7bltvXT1PSHQsbj1uLnNsaWNlKDAsbykuY29uY2F0KG4uc2xpY2UobysxKSk7YnJlYWt9cmV0dXJuIGUhPW51bGwmJm4ucHVzaCh7bmFtZTp0LHZhbHVlOmV9KSxufXZhciBuNT1wY3Q7dmFyIGQ2PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixfRz17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6ZDYseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBUUChuKXt2YXIgdD1uKz0iIixlPXQuaW5kZXhPZigiOiIpO3JldHVybiBlPj0wJiYodD1uLnNsaWNlKDAsZSkpIT09InhtbG5zIiYmKG49bi5zbGljZShlKzEpKSxfRy5oYXNPd25Qcm9wZXJ0eSh0KT97c3BhY2U6X0dbdF0sbG9jYWw6bn06bn1mdW5jdGlvbiB4SHQobil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vd25lckRvY3VtZW50LGU9dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIGU9PT1kNiYmdC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09ZDY/dC5jcmVhdGVFbGVtZW50KG4pOnQuY3JlYXRlRWxlbWVudE5TKGUsbil9fWZ1bmN0aW9uIHZIdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuLnNwYWNlLG4ubG9jYWwpfX1mdW5jdGlvbiBnNihuKXt2YXIgdD1UUChuKTtyZXR1cm4odC5sb2NhbD92SHQ6eEh0KSh0KX1mdW5jdGlvbiB3SHQoKXt9ZnVuY3Rpb24gczEobil7cmV0dXJuIG49PW51bGw/d0h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvcihuKX19ZnVuY3Rpb24gZGN0KG4pe3R5cGVvZiBuIT0iZnVuY3Rpb24iJiYobj1zMShuKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPXQubGVuZ3RoLG89bmV3IEFycmF5KGUpLGk9MDtpPGU7KytpKWZvcih2YXIgYT10W2ldLHI9YS5sZW5ndGgscz1vW2ldPW5ldyBBcnJheShyKSxsLGMsbT0wO208cjsrK20pKGw9YVttXSkmJihjPW4uY2FsbChsLGwuX19kYXRhX18sbSxhKSkmJigiX19kYXRhX18iaW4gbCYmKGMuX19kYXRhX189bC5fX2RhdGFfXyksc1ttXT1jKTtyZXR1cm4gbmV3IFpyKG8sdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gU0h0KCl7cmV0dXJuW119ZnVuY3Rpb24gbzUobil7cmV0dXJuIG49PW51bGw/U0h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChuKX19ZnVuY3Rpb24gZ2N0KG4pe3R5cGVvZiBuIT0iZnVuY3Rpb24iJiYobj1vNShuKSk7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPXQubGVuZ3RoLG89W10saT1bXSxhPTA7YTxlOysrYSlmb3IodmFyIHI9dFthXSxzPXIubGVuZ3RoLGwsYz0wO2M8czsrK2MpKGw9cltjXSkmJihvLnB1c2gobi5jYWxsKGwsbC5fX2RhdGFfXyxjLHIpKSxpLnB1c2gobCkpO3JldHVybiBuZXcgWnIobyxpKX1mdW5jdGlvbiBpNShuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKG4pfX1mdW5jdGlvbiB1Y3Qobil7dHlwZW9mIG4hPSJmdW5jdGlvbiImJihuPWk1KG4pKTtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9dC5sZW5ndGgsbz1uZXcgQXJyYXkoZSksaT0wO2k8ZTsrK2kpZm9yKHZhciBhPXRbaV0scj1hLmxlbmd0aCxzPW9baV09W10sbCxjPTA7YzxyOysrYykobD1hW2NdKSYmbi5jYWxsKGwsbC5fX2RhdGFfXyxjLGEpJiZzLnB1c2gobCk7cmV0dXJuIG5ldyBacihvLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIHU2KG4pe3JldHVybiBuZXcgQXJyYXkobi5sZW5ndGgpfWZ1bmN0aW9uIGhjdCgpe3JldHVybiBuZXcgWnIodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAodTYpLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIGE1KG4sdCl7dGhpcy5vd25lckRvY3VtZW50PW4ub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST1uLm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PW4sdGhpcy5fX2RhdGFfXz10fWE1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6YTUsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUobix0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUobix0KX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3Iobil9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKG4pfX07ZnVuY3Rpb24gX2N0KG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX12YXIgQ2N0PSIkIjtmdW5jdGlvbiBSSHQobix0LGUsbyxpLGEpe2Zvcih2YXIgcj0wLHMsbD10Lmxlbmd0aCxjPWEubGVuZ3RoO3I8YzsrK3IpKHM9dFtyXSk/KHMuX19kYXRhX189YVtyXSxvW3JdPXMpOmVbcl09bmV3IGE1KG4sYVtyXSk7Zm9yKDtyPGw7KytyKShzPXRbcl0pJiYoaVtyXT1zKX1mdW5jdGlvbiBFSHQobix0LGUsbyxpLGEscil7dmFyIHMsbCxjPXt9LG09dC5sZW5ndGgsZj1hLmxlbmd0aCxwPW5ldyBBcnJheShtKSxnO2ZvcihzPTA7czxtOysrcykobD10W3NdKSYmKHBbc109Zz1DY3Qrci5jYWxsKGwsbC5fX2RhdGFfXyxzLHQpLGcgaW4gYz9pW3NdPWw6Y1tnXT1sKTtmb3Iocz0wO3M8ZjsrK3MpZz1DY3Qrci5jYWxsKG4sYVtzXSxzLGEpLChsPWNbZ10pPyhvW3NdPWwsbC5fX2RhdGFfXz1hW3NdLGNbZ109bnVsbCk6ZVtzXT1uZXcgYTUobixhW3NdKTtmb3Iocz0wO3M8bTsrK3MpKGw9dFtzXSkmJmNbcFtzXV09PT1sJiYoaVtzXT1sKX1mdW5jdGlvbiBNY3Qobix0KXtpZighbilyZXR1cm4gZz1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGM9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKHJ0KXtnWysrY109cnR9KSxnO3ZhciBlPXQ/RUh0OlJIdCxvPXRoaXMuX3BhcmVudHMsaT10aGlzLl9ncm91cHM7dHlwZW9mIG4hPSJmdW5jdGlvbiImJihuPV9jdChuKSk7Zm9yKHZhciBhPWkubGVuZ3RoLHI9bmV3IEFycmF5KGEpLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9MDtjPGE7KytjKXt2YXIgbT1vW2NdLGY9aVtjXSxwPWYubGVuZ3RoLGc9bi5jYWxsKG0sbSYmbS5fX2RhdGFfXyxjLG8pLF89Zy5sZW5ndGgsTT1zW2NdPW5ldyBBcnJheShfKSx5PXJbY109bmV3IEFycmF5KF8pLE89bFtjXT1uZXcgQXJyYXkocCk7ZShtLGYsTSx5LE8sZyx0KTtmb3IodmFyIGI9MCxSPTAsRSxqO2I8XzsrK2IpaWYoRT1NW2JdKXtmb3IoYj49UiYmKFI9YisxKTshKGo9eVtSXSkmJisrUjxfOyk7RS5fbmV4dD1qfHxudWxsfX1yZXR1cm4gcj1uZXcgWnIocixvKSxyLl9lbnRlcj1zLHIuX2V4aXQ9bCxyfWZ1bmN0aW9uIGJjdCgpe3JldHVybiBuZXcgWnIodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcCh1NiksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gT2N0KG4sdCxlKXt2YXIgbz10aGlzLmVudGVyKCksaT10aGlzLGE9dGhpcy5leGl0KCk7cmV0dXJuIG89dHlwZW9mIG49PSJmdW5jdGlvbiI/bihvKTpvLmFwcGVuZChuKyIiKSx0IT1udWxsJiYoaT10KGkpKSxlPT1udWxsP2EucmVtb3ZlKCk6ZShhKSxvJiZpP28ubWVyZ2UoaSkub3JkZXIoKTppfWZ1bmN0aW9uIFBjdChuKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9bi5fZ3JvdXBzLG89dC5sZW5ndGgsaT1lLmxlbmd0aCxhPU1hdGgubWluKG8saSkscj1uZXcgQXJyYXkobykscz0wO3M8YTsrK3MpZm9yKHZhciBsPXRbc10sYz1lW3NdLG09bC5sZW5ndGgsZj1yW3NdPW5ldyBBcnJheShtKSxwLGc9MDtnPG07KytnKShwPWxbZ118fGNbZ10pJiYoZltnXT1wKTtmb3IoO3M8bzsrK3MpcltzXT10W3NdO3JldHVybiBuZXcgWnIocix0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiB5Y3QoKXtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLHQ9LTEsZT1uLmxlbmd0aDsrK3Q8ZTspZm9yKHZhciBvPW5bdF0saT1vLmxlbmd0aC0xLGE9b1tpXSxyOy0taT49MDspKHI9b1tpXSkmJihhJiZyLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpXjQmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixhKSxhPXIpO3JldHVybiB0aGlzfWZ1bmN0aW9uIHhjdChuKXtufHwobj1rSHQpO2Z1bmN0aW9uIHQoZixwKXtyZXR1cm4gZiYmcD9uKGYuX19kYXRhX18scC5fX2RhdGFfXyk6IWYtIXB9Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxvPWUubGVuZ3RoLGk9bmV3IEFycmF5KG8pLGE9MDthPG87KythKXtmb3IodmFyIHI9ZVthXSxzPXIubGVuZ3RoLGw9aVthXT1uZXcgQXJyYXkocyksYyxtPTA7bTxzOysrbSkoYz1yW21dKSYmKGxbbV09Yyk7bC5zb3J0KHQpfXJldHVybiBuZXcgWnIoaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfWZ1bmN0aW9uIGtIdChuLHQpe3JldHVybiBuPHQ/LTE6bj50PzE6bj49dD8wOk5hTn1mdW5jdGlvbiB2Y3QoKXt2YXIgbj1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLG4uYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9ZnVuY3Rpb24gd2N0KCl7dmFyIG49bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx0PS0xO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuWysrdF09dGhpc30pLG59ZnVuY3Rpb24gU2N0KCl7Zm9yKHZhciBuPXRoaXMuX2dyb3Vwcyx0PTAsZT1uLmxlbmd0aDt0PGU7Kyt0KWZvcih2YXIgbz1uW3RdLGk9MCxhPW8ubGVuZ3RoO2k8YTsrK2kpe3ZhciByPW9baV07aWYocilyZXR1cm4gcn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBSY3QoKXt2YXIgbj0wO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsrK259KSxufWZ1bmN0aW9uIEVjdCgpe3JldHVybiF0aGlzLm5vZGUoKX1mdW5jdGlvbiBrY3Qobil7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbz10Lmxlbmd0aDtlPG87KytlKWZvcih2YXIgaT10W2VdLGE9MCxyPWkubGVuZ3RoLHM7YTxyOysrYSkocz1pW2FdKSYmbi5jYWxsKHMscy5fX2RhdGFfXyxhLGkpO3JldHVybiB0aGlzfWZ1bmN0aW9uIE5IdChuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZShuKX19ZnVuY3Rpb24gVEh0KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKX19ZnVuY3Rpb24gQUh0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUobix0KX19ZnVuY3Rpb24gREh0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwsdCl9fWZ1bmN0aW9uIElIdChuLHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2U9PW51bGw/dGhpcy5yZW1vdmVBdHRyaWJ1dGUobik6dGhpcy5zZXRBdHRyaWJ1dGUobixlKX19ZnVuY3Rpb24gekh0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZT09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwsZSl9fWZ1bmN0aW9uIE5jdChuLHQpe3ZhciBlPVRQKG4pO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIG89dGhpcy5ub2RlKCk7cmV0dXJuIGUubG9jYWw/by5nZXRBdHRyaWJ1dGVOUyhlLnNwYWNlLGUubG9jYWwpOm8uZ2V0QXR0cmlidXRlKGUpfXJldHVybiB0aGlzLmVhY2goKHQ9PW51bGw/ZS5sb2NhbD9USHQ6Tkh0OnR5cGVvZiB0PT0iZnVuY3Rpb24iP2UubG9jYWw/ekh0OklIdDplLmxvY2FsP0RIdDpBSHQpKGUsdCkpfWZ1bmN0aW9uIGg2KG4pe3JldHVybiBuLm93bmVyRG9jdW1lbnQmJm4ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8bi5kb2N1bWVudCYmbnx8bi5kZWZhdWx0Vmlld31mdW5jdGlvbiBISHQobil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKX19ZnVuY3Rpb24gRkh0KG4sdCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KG4sdCxlKX19ZnVuY3Rpb24gTEh0KG4sdCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtvPT1udWxsP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobik6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLG8sZSl9fWZ1bmN0aW9uIFRjdChuLHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKHQ9PW51bGw/SEh0OnR5cGVvZiB0PT0iZnVuY3Rpb24iP0xIdDpGSHQpKG4sdCxlPT1udWxsPyIiOmUpKTpfeCh0aGlzLm5vZGUoKSxuKX1mdW5jdGlvbiBfeChuLHQpe3JldHVybiBuLnN0eWxlLmdldFByb3BlcnR5VmFsdWUodCl8fGg2KG4pLmdldENvbXB1dGVkU3R5bGUobixudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfWZ1bmN0aW9uIEJIdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tuXX19ZnVuY3Rpb24gVkh0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1tuXT10fX1mdW5jdGlvbiBqSHQobix0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtlPT1udWxsP2RlbGV0ZSB0aGlzW25dOnRoaXNbbl09ZX19ZnVuY3Rpb24gQWN0KG4sdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKHQ9PW51bGw/Qkh0OnR5cGVvZiB0PT0iZnVuY3Rpb24iP2pIdDpWSHQpKG4sdCkpOnRoaXMubm9kZSgpW25dfWZ1bmN0aW9uIERjdChuKXtyZXR1cm4gbi50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gQ0cobil7cmV0dXJuIG4uY2xhc3NMaXN0fHxuZXcgSWN0KG4pfWZ1bmN0aW9uIEljdChuKXt0aGlzLl9ub2RlPW4sdGhpcy5fbmFtZXM9RGN0KG4uZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9SWN0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuX25hbWVzLmluZGV4T2Yobik7dDwwJiYodGhpcy5fbmFtZXMucHVzaChuKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24obil7dmFyIHQ9dGhpcy5fbmFtZXMuaW5kZXhPZihuKTt0Pj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKHQsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2Yobik+PTB9fTtmdW5jdGlvbiB6Y3Qobix0KXtmb3IodmFyIGU9Q0cobiksbz0tMSxpPXQubGVuZ3RoOysrbzxpOyllLmFkZCh0W29dKX1mdW5jdGlvbiBIY3Qobix0KXtmb3IodmFyIGU9Q0cobiksbz0tMSxpPXQubGVuZ3RoOysrbzxpOyllLnJlbW92ZSh0W29dKX1mdW5jdGlvbiBVSHQobil7cmV0dXJuIGZ1bmN0aW9uKCl7emN0KHRoaXMsbil9fWZ1bmN0aW9uIFlIdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtIY3QodGhpcyxuKX19ZnVuY3Rpb24gR0h0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7KHQuYXBwbHkodGhpcyxhcmd1bWVudHMpP3pjdDpIY3QpKHRoaXMsbil9fWZ1bmN0aW9uIEZjdChuLHQpe3ZhciBlPURjdChuKyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbz1DRyh0aGlzLm5vZGUoKSksaT0tMSxhPWUubGVuZ3RoOysraTxhOylpZighby5jb250YWlucyhlW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCh0eXBlb2YgdD09ImZ1bmN0aW9uIj9HSHQ6dD9VSHQ6WUh0KShlLHQpKX1mdW5jdGlvbiBXSHQoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIHFIdChuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PW59fWZ1bmN0aW9uIFpIdChuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PXQ9PW51bGw/IiI6dH19ZnVuY3Rpb24gTGN0KG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChuPT1udWxsP1dIdDoodHlwZW9mIG49PSJmdW5jdGlvbiI/Wkh0OnFIdCkobikpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fWZ1bmN0aW9uIFhIdCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIFFIdChuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLmlubmVySFRNTD1ufX1mdW5jdGlvbiBLSHQobil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9dD09bnVsbD8iIjp0fX1mdW5jdGlvbiBCY3Qobil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG49PW51bGw/WEh0Oih0eXBlb2Ygbj09ImZ1bmN0aW9uIj9LSHQ6UUh0KShuKSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfWZ1bmN0aW9uIEpIdCgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBWY3QoKXtyZXR1cm4gdGhpcy5lYWNoKEpIdCl9ZnVuY3Rpb24gJEh0KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24gamN0KCl7cmV0dXJuIHRoaXMuZWFjaCgkSHQpfWZ1bmN0aW9uIFVjdChuKXt2YXIgdD10eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOmc2KG4pO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfWZ1bmN0aW9uIHRGdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIFljdChuLHQpe3ZhciBlPXR5cGVvZiBuPT0iZnVuY3Rpb24iP246ZzYobiksbz10PT1udWxsP3RGdDp0eXBlb2YgdD09ImZ1bmN0aW9uIj90OnMxKHQpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KX1mdW5jdGlvbiBlRnQoKXt2YXIgbj10aGlzLnBhcmVudE5vZGU7biYmbi5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBHY3QoKXtyZXR1cm4gdGhpcy5lYWNoKGVGdCl9ZnVuY3Rpb24gbkZ0KCl7dmFyIG49dGhpcy5jbG9uZU5vZGUoITEpLHQ9dGhpcy5wYXJlbnROb2RlO3JldHVybiB0P3QuaW5zZXJ0QmVmb3JlKG4sdGhpcy5uZXh0U2libGluZyk6bn1mdW5jdGlvbiBvRnQoKXt2YXIgbj10aGlzLmNsb25lTm9kZSghMCksdD10aGlzLnBhcmVudE5vZGU7cmV0dXJuIHQ/dC5pbnNlcnRCZWZvcmUobix0aGlzLm5leHRTaWJsaW5nKTpufWZ1bmN0aW9uIFdjdChuKXtyZXR1cm4gdGhpcy5zZWxlY3Qobj9vRnQ6bkZ0KX1mdW5jdGlvbiBxY3Qobil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLG4pOnRoaXMubm9kZSgpLl9fZGF0YV9ffXZhciBYY3Q9e30sVm89bnVsbDt0eXBlb2YgZG9jdW1lbnQhPSJ1bmRlZmluZWQiJiYoWmN0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwib25tb3VzZWVudGVyImluIFpjdHx8KFhjdD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIFpjdDtmdW5jdGlvbiBpRnQobix0LGUpe3JldHVybiBuPVFjdChuLHQsZSksZnVuY3Rpb24obyl7dmFyIGk9by5yZWxhdGVkVGFyZ2V0OyghaXx8aSE9PXRoaXMmJiEoaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSY4KSkmJm4uY2FsbCh0aGlzLG8pfX1mdW5jdGlvbiBRY3Qobix0LGUpe3JldHVybiBmdW5jdGlvbihvKXt2YXIgaT1WbztWbz1vO3RyeXtuLmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLHQsZSl9ZmluYWxseXtWbz1pfX19ZnVuY3Rpb24gYUZ0KG4pe3JldHVybiBuLnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9IiIsbz10LmluZGV4T2YoIi4iKTtyZXR1cm4gbz49MCYmKGU9dC5zbGljZShvKzEpLHQ9dC5zbGljZSgwLG8pKSx7dHlwZTp0LG5hbWU6ZX19KX1mdW5jdGlvbiByRnQobil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fX29uO2lmKCEhdCl7Zm9yKHZhciBlPTAsbz0tMSxpPXQubGVuZ3RoLGE7ZTxpOysrZSlhPXRbZV0sKCFuLnR5cGV8fGEudHlwZT09PW4udHlwZSkmJmEubmFtZT09PW4ubmFtZT90aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoYS50eXBlLGEubGlzdGVuZXIsYS5jYXB0dXJlKTp0Wysrb109YTsrK28/dC5sZW5ndGg9bzpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gc0Z0KG4sdCxlKXt2YXIgbz1YY3QuaGFzT3duUHJvcGVydHkobi50eXBlKT9pRnQ6UWN0O3JldHVybiBmdW5jdGlvbihpLGEscil7dmFyIHM9dGhpcy5fX29uLGwsYz1vKHQsYSxyKTtpZihzKXtmb3IodmFyIG09MCxmPXMubGVuZ3RoO208ZjsrK20paWYoKGw9c1ttXSkudHlwZT09PW4udHlwZSYmbC5uYW1lPT09bi5uYW1lKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobC50eXBlLGwubGlzdGVuZXIsbC5jYXB0dXJlKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIobC50eXBlLGwubGlzdGVuZXI9YyxsLmNhcHR1cmU9ZSksbC52YWx1ZT10O3JldHVybn19dGhpcy5hZGRFdmVudExpc3RlbmVyKG4udHlwZSxjLGUpLGw9e3R5cGU6bi50eXBlLG5hbWU6bi5uYW1lLHZhbHVlOnQsbGlzdGVuZXI6YyxjYXB0dXJlOmV9LHM/cy5wdXNoKGwpOnRoaXMuX19vbj1bbF19fWZ1bmN0aW9uIEtjdChuLHQsZSl7dmFyIG89YUZ0KG4rIiIpLGksYT1vLmxlbmd0aCxyO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKXtmb3IodmFyIGw9MCxjPXMubGVuZ3RoLG07bDxjOysrbClmb3IoaT0wLG09c1tsXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1tLnR5cGUmJnIubmFtZT09PW0ubmFtZSlyZXR1cm4gbS52YWx1ZX1yZXR1cm59Zm9yKHM9dD9zRnQ6ckZ0LGU9PW51bGwmJihlPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLHQsZSkpO3JldHVybiB0aGlzfWZ1bmN0aW9uIE1HKG4sdCxlLG8pe3ZhciBpPVZvO24uc291cmNlRXZlbnQ9Vm8sVm89bjt0cnl7cmV0dXJuIHQuYXBwbHkoZSxvKX1maW5hbGx5e1ZvPWl9fWZ1bmN0aW9uIEpjdChuLHQsZSl7dmFyIG89aDYobiksaT1vLkN1c3RvbUV2ZW50O3R5cGVvZiBpPT0iZnVuY3Rpb24iP2k9bmV3IGkodCxlKTooaT1vLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLGU/KGkuaW5pdEV2ZW50KHQsZS5idWJibGVzLGUuY2FuY2VsYWJsZSksaS5kZXRhaWw9ZS5kZXRhaWwpOmkuaW5pdEV2ZW50KHQsITEsITEpKSxuLmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gbEZ0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEpjdCh0aGlzLG4sdCl9fWZ1bmN0aW9uIGNGdChuLHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBKY3QodGhpcyxuLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19ZnVuY3Rpb24gJGN0KG4sdCl7cmV0dXJuIHRoaXMuZWFjaCgodHlwZW9mIHQ9PSJmdW5jdGlvbiI/Y0Z0OmxGdCkobix0KSl9dmFyIGJHPVtudWxsXTtmdW5jdGlvbiBacihuLHQpe3RoaXMuX2dyb3Vwcz1uLHRoaXMuX3BhcmVudHM9dH1mdW5jdGlvbiB0bXQoKXtyZXR1cm4gbmV3IFpyKFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sYkcpfVpyLnByb3RvdHlwZT10bXQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpacixzZWxlY3Q6ZGN0LHNlbGVjdEFsbDpnY3QsZmlsdGVyOnVjdCxkYXRhOk1jdCxlbnRlcjpoY3QsZXhpdDpiY3Qsam9pbjpPY3QsbWVyZ2U6UGN0LG9yZGVyOnljdCxzb3J0OnhjdCxjYWxsOnZjdCxub2Rlczp3Y3Qsbm9kZTpTY3Qsc2l6ZTpSY3QsZW1wdHk6RWN0LGVhY2g6a2N0LGF0dHI6TmN0LHN0eWxlOlRjdCxwcm9wZXJ0eTpBY3QsY2xhc3NlZDpGY3QsdGV4dDpMY3QsaHRtbDpCY3QscmFpc2U6VmN0LGxvd2VyOmpjdCxhcHBlbmQ6VWN0LGluc2VydDpZY3QscmVtb3ZlOkdjdCxjbG9uZTpXY3QsZGF0dW06cWN0LG9uOktjdCxkaXNwYXRjaDokY3R9O3ZhciBBUD10bXQ7ZnVuY3Rpb24gQ3Mobil7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj9uZXcgWnIoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4pXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBacihbW25dXSxiRyl9ZnVuY3Rpb24gXzYoKXtmb3IodmFyIG49Vm8sdDt0PW4uc291cmNlRXZlbnQ7KW49dDtyZXR1cm4gbn1mdW5jdGlvbiBDNihuLHQpe3ZhciBlPW4ub3duZXJTVkdFbGVtZW50fHxuO2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciBvPWUuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gby54PXQuY2xpZW50WCxvLnk9dC5jbGllbnRZLG89by5tYXRyaXhUcmFuc2Zvcm0obi5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpLFtvLngsby55XX12YXIgaT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVyblt0LmNsaWVudFgtaS5sZWZ0LW4uY2xpZW50TGVmdCx0LmNsaWVudFktaS50b3Atbi5jbGllbnRUb3BdfWZ1bmN0aW9uIE9HKG4pe3ZhciB0PV82KCk7cmV0dXJuIHQuY2hhbmdlZFRvdWNoZXMmJih0PXQuY2hhbmdlZFRvdWNoZXNbMF0pLEM2KG4sdCl9ZnVuY3Rpb24gUEcobix0LGUpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKGU9dCx0PV82KCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgbz0wLGk9dD90Lmxlbmd0aDowLGE7bzxpOysrbylpZigoYT10W29dKS5pZGVudGlmaWVyPT09ZSlyZXR1cm4gQzYobixhKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBNNigpe1ZvLnByZXZlbnREZWZhdWx0KCksVm8uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24geUcobil7dmFyIHQ9bi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZT1DcyhuKS5vbigiZHJhZ3N0YXJ0LmRyYWciLE02LCEwKTsib25zZWxlY3RzdGFydCJpbiB0P2Uub24oInNlbGVjdHN0YXJ0LmRyYWciLE02LCEwKToodC5fX25vc2VsZWN0PXQuc3R5bGUuTW96VXNlclNlbGVjdCx0LnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiB4RyhuLHQpe3ZhciBlPW4uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89Q3Mobikub24oImRyYWdzdGFydC5kcmFnIixudWxsKTt0JiYoby5vbigiY2xpY2suZHJhZyIsTTYsITApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtvLm9uKCJjbGljay5kcmFnIixudWxsKX0sMCkpLCJvbnNlbGVjdHN0YXJ0ImluIGU/by5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KGUuc3R5bGUuTW96VXNlclNlbGVjdD1lLl9fbm9zZWxlY3QsZGVsZXRlIGUuX19ub3NlbGVjdCl9ZnVuY3Rpb24gbDEobix0LGUpe24ucHJvdG90eXBlPXQucHJvdG90eXBlPWUsZS5jb25zdHJ1Y3Rvcj1ufWZ1bmN0aW9uIGQyKG4sdCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSk7Zm9yKHZhciBvIGluIHQpZVtvXT10W29dO3JldHVybiBlfWZ1bmN0aW9uIEN4KCl7fXZhciByNT0uNyxPNj0xL3I1LGcyPSJcXHMqKFsrLV0/XFxkKylcXHMqIixzNT0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIix2Tz0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsbUZ0PS9eIyhbMC05YS1mXXszLDh9KSQvLGZGdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbZzIsZzIsZzJdKyJcXCkkIikscEZ0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1t2Tyx2Tyx2T10rIlxcKSQiKSxkRnQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tnMixnMixnMixzNV0rIlxcKSQiKSxnRnQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1t2Tyx2Tyx2TyxzNV0rIlxcKSQiKSx1RnQ9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW3M1LHZPLHZPXSsiXFwpJCIpLGhGdD1uZXcgUmVnRXhwKCJeaHNsYVxcKCIrW3M1LHZPLHZPLHM1XSsiXFwpJCIpLGVtdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtsMShDeCxlYix7Y29weTpmdW5jdGlvbihuKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLG4pfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpubXQsZm9ybWF0SGV4Om5tdCxmb3JtYXRIc2w6X0Z0LGZvcm1hdFJnYjpvbXQsdG9TdHJpbmc6b210fSk7ZnVuY3Rpb24gbm10KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4KCl9ZnVuY3Rpb24gX0Z0KCl7cmV0dXJuIGxtdCh0aGlzKS5mb3JtYXRIc2woKX1mdW5jdGlvbiBvbXQoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBlYihuKXt2YXIgdCxlO3JldHVybiBuPShuKyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwodD1tRnQuZXhlYyhuKSk/KGU9dFsxXS5sZW5ndGgsdD1wYXJzZUludCh0WzFdLDE2KSxlPT09Nj9pbXQodCk6ZT09PTM/bmV3IFBtKHQ+PjgmMTV8dD4+NCYyNDAsdD4+NCYxNXx0JjI0MCwodCYxNSk8PDR8dCYxNSwxKTplPT09OD9iNih0Pj4yNCYyNTUsdD4+MTYmMjU1LHQ+PjgmMjU1LCh0JjI1NSkvMjU1KTplPT09ND9iNih0Pj4xMiYxNXx0Pj44JjI0MCx0Pj44JjE1fHQ+PjQmMjQwLHQ+PjQmMTV8dCYyNDAsKCh0JjE1KTw8NHx0JjE1KS8yNTUpOm51bGwpOih0PWZGdC5leGVjKG4pKT9uZXcgUG0odFsxXSx0WzJdLHRbM10sMSk6KHQ9cEZ0LmV4ZWMobikpP25ldyBQbSh0WzFdKjI1NS8xMDAsdFsyXSoyNTUvMTAwLHRbM10qMjU1LzEwMCwxKToodD1kRnQuZXhlYyhuKSk/YjYodFsxXSx0WzJdLHRbM10sdFs0XSk6KHQ9Z0Z0LmV4ZWMobikpP2I2KHRbMV0qMjU1LzEwMCx0WzJdKjI1NS8xMDAsdFszXSoyNTUvMTAwLHRbNF0pOih0PXVGdC5leGVjKG4pKT9zbXQodFsxXSx0WzJdLzEwMCx0WzNdLzEwMCwxKToodD1oRnQuZXhlYyhuKSk/c210KHRbMV0sdFsyXS8xMDAsdFszXS8xMDAsdFs0XSk6ZW10Lmhhc093blByb3BlcnR5KG4pP2ltdChlbXRbbl0pOm49PT0idHJhbnNwYXJlbnQiP25ldyBQbShOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIGltdChuKXtyZXR1cm4gbmV3IFBtKG4+PjE2JjI1NSxuPj44JjI1NSxuJjI1NSwxKX1mdW5jdGlvbiBiNihuLHQsZSxvKXtyZXR1cm4gbzw9MCYmKG49dD1lPU5hTiksbmV3IFBtKG4sdCxlLG8pfWZ1bmN0aW9uIFNHKG4pe3JldHVybiBuIGluc3RhbmNlb2YgQ3h8fChuPWViKG4pKSxuPyhuPW4ucmdiKCksbmV3IFBtKG4ucixuLmcsbi5iLG4ub3BhY2l0eSkpOm5ldyBQbX1mdW5jdGlvbiB1MihuLHQsZSxvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/U0cobik6bmV3IFBtKG4sdCxlLG89PW51bGw/MTpvKX1mdW5jdGlvbiBQbShuLHQsZSxvKXt0aGlzLnI9K24sdGhpcy5nPSt0LHRoaXMuYj0rZSx0aGlzLm9wYWNpdHk9K299bDEoUG0sdTIsZDIoQ3gse2JyaWdodGVyOmZ1bmN0aW9uKG4pe3JldHVybiBuPW49PW51bGw/TzY6TWF0aC5wb3coTzYsbiksbmV3IFBtKHRoaXMucipuLHRoaXMuZypuLHRoaXMuYipuLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihuKXtyZXR1cm4gbj1uPT1udWxsP3I1Ok1hdGgucG93KHI1LG4pLG5ldyBQbSh0aGlzLnIqbix0aGlzLmcqbix0aGlzLmIqbix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OmFtdCxmb3JtYXRIZXg6YW10LGZvcm1hdFJnYjpybXQsdG9TdHJpbmc6cm10fSkpO2Z1bmN0aW9uIGFtdCgpe3JldHVybiIjIit2Ryh0aGlzLnIpK3ZHKHRoaXMuZykrdkcodGhpcy5iKX1mdW5jdGlvbiBybXQoKXt2YXIgbj10aGlzLm9wYWNpdHk7cmV0dXJuIG49aXNOYU4obik/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsbikpLChuPT09MT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKyhuPT09MT8iKSI6IiwgIituKyIpIil9ZnVuY3Rpb24gdkcobil7cmV0dXJuIG49TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZChuKXx8MCkpLChuPDE2PyIwIjoiIikrbi50b1N0cmluZygxNil9ZnVuY3Rpb24gc210KG4sdCxlLG8pe3JldHVybiBvPD0wP249dD1lPU5hTjplPD0wfHxlPj0xP249dD1OYU46dDw9MCYmKG49TmFOKSxuZXcgeE8obix0LGUsbyl9ZnVuY3Rpb24gbG10KG4pe2lmKG4gaW5zdGFuY2VvZiB4TylyZXR1cm4gbmV3IHhPKG4uaCxuLnMsbi5sLG4ub3BhY2l0eSk7aWYobiBpbnN0YW5jZW9mIEN4fHwobj1lYihuKSksIW4pcmV0dXJuIG5ldyB4TztpZihuIGluc3RhbmNlb2YgeE8pcmV0dXJuIG47bj1uLnJnYigpO3ZhciB0PW4uci8yNTUsZT1uLmcvMjU1LG89bi5iLzI1NSxpPU1hdGgubWluKHQsZSxvKSxhPU1hdGgubWF4KHQsZSxvKSxyPU5hTixzPWEtaSxsPShhK2kpLzI7cmV0dXJuIHM/KHQ9PT1hP3I9KGUtbykvcysoZTxvKSo2OmU9PT1hP3I9KG8tdCkvcysyOnI9KHQtZSkvcys0LHMvPWw8LjU/YStpOjItYS1pLHIqPTYwKTpzPWw+MCYmbDwxPzA6cixuZXcgeE8ocixzLGwsbi5vcGFjaXR5KX1mdW5jdGlvbiBjMShuLHQsZSxvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/bG10KG4pOm5ldyB4TyhuLHQsZSxvPT1udWxsPzE6byl9ZnVuY3Rpb24geE8obix0LGUsbyl7dGhpcy5oPStuLHRoaXMucz0rdCx0aGlzLmw9K2UsdGhpcy5vcGFjaXR5PStvfWwxKHhPLGMxLGQyKEN4LHticmlnaHRlcjpmdW5jdGlvbihuKXtyZXR1cm4gbj1uPT1udWxsP082Ok1hdGgucG93KE82LG4pLG5ldyB4Tyh0aGlzLmgsdGhpcy5zLHRoaXMubCpuLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihuKXtyZXR1cm4gbj1uPT1udWxsP3I1Ok1hdGgucG93KHI1LG4pLG5ldyB4Tyh0aGlzLmgsdGhpcy5zLHRoaXMubCpuLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciBuPXRoaXMuaCUzNjArKHRoaXMuaDwwKSozNjAsdD1pc05hTihuKXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxlPXRoaXMubCxvPWUrKGU8LjU/ZToxLWUpKnQsaT0yKmUtbztyZXR1cm4gbmV3IFBtKHdHKG4+PTI0MD9uLTI0MDpuKzEyMCxpLG8pLHdHKG4saSxvKSx3RyhuPDEyMD9uKzI0MDpuLTEyMCxpLG8pLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgbj10aGlzLm9wYWNpdHk7cmV0dXJuIG49aXNOYU4obik/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsbikpLChuPT09MT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisodGhpcy5zfHwwKSoxMDArIiUsICIrKHRoaXMubHx8MCkqMTAwKyIlIisobj09PTE/IikiOiIsICIrbisiKSIpfX0pKTtmdW5jdGlvbiB3RyhuLHQsZSl7cmV0dXJuKG48NjA/dCsoZS10KSpuLzYwOm48MTgwP2U6bjwyNDA/dCsoZS10KSooMjQwLW4pLzYwOnQpKjI1NX12YXIgY210PU1hdGguUEkvMTgwLG1tdD0xODAvTWF0aC5QSTt2YXIgUDY9MTgsZm10PS45NjQyMixwbXQ9MSxkbXQ9LjgyNTIxLGdtdD00LzI5LGgyPTYvMjksdW10PTMqaDIqaDIsQ0Z0PWgyKmgyKmgyO2Z1bmN0aW9uIGhtdChuKXtpZihuIGluc3RhbmNlb2Ygd08pcmV0dXJuIG5ldyB3TyhuLmwsbi5hLG4uYixuLm9wYWNpdHkpO2lmKG4gaW5zdGFuY2VvZiBEUClyZXR1cm4gX210KG4pO24gaW5zdGFuY2VvZiBQbXx8KG49U0cobikpO3ZhciB0PU5HKG4uciksZT1ORyhuLmcpLG89Tkcobi5iKSxpPVJHKCguMjIyNTA0NSp0Ky43MTY4Nzg2KmUrLjA2MDYxNjkqbykvcG10KSxhLHI7cmV0dXJuIHQ9PT1lJiZlPT09bz9hPXI9aTooYT1SRygoLjQzNjA3NDcqdCsuMzg1MDY0OSplKy4xNDMwODA0Km8pL2ZtdCkscj1SRygoLjAxMzkzMjIqdCsuMDk3MTA0NSplKy43MTQxNzMzKm8pL2RtdCkpLG5ldyB3TygxMTYqaS0xNiw1MDAqKGEtaSksMjAwKihpLXIpLG4ub3BhY2l0eSl9ZnVuY3Rpb24gVEcobix0LGUsbyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP2htdChuKTpuZXcgd08obix0LGUsbz09bnVsbD8xOm8pfWZ1bmN0aW9uIHdPKG4sdCxlLG8pe3RoaXMubD0rbix0aGlzLmE9K3QsdGhpcy5iPStlLHRoaXMub3BhY2l0eT0rb31sMSh3TyxURyxkMihDeCx7YnJpZ2h0ZXI6ZnVuY3Rpb24obil7cmV0dXJuIG5ldyB3Tyh0aGlzLmwrUDYqKG49PW51bGw/MTpuKSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbihuKXtyZXR1cm4gbmV3IHdPKHRoaXMubC1QNioobj09bnVsbD8xOm4pLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIG49KHRoaXMubCsxNikvMTE2LHQ9aXNOYU4odGhpcy5hKT9uOm4rdGhpcy5hLzUwMCxlPWlzTmFOKHRoaXMuYik/bjpuLXRoaXMuYi8yMDA7cmV0dXJuIHQ9Zm10KkVHKHQpLG49cG10KkVHKG4pLGU9ZG10KkVHKGUpLG5ldyBQbShrRygzLjEzMzg1NjEqdC0xLjYxNjg2Njcqbi0uNDkwNjE0NiplKSxrRygtLjk3ODc2ODQqdCsxLjkxNjE0MTUqbisuMDMzNDU0KmUpLGtHKC4wNzE5NDUzKnQtLjIyODk5MTQqbisxLjQwNTI0MjcqZSksdGhpcy5vcGFjaXR5KX19KSk7ZnVuY3Rpb24gUkcobil7cmV0dXJuIG4+Q0Z0P01hdGgucG93KG4sMS8zKTpuL3VtdCtnbXR9ZnVuY3Rpb24gRUcobil7cmV0dXJuIG4+aDI/bipuKm46dW10KihuLWdtdCl9ZnVuY3Rpb24ga0cobil7cmV0dXJuIDI1NSoobjw9LjAwMzEzMDg/MTIuOTIqbjoxLjA1NSpNYXRoLnBvdyhuLDEvMi40KS0uMDU1KX1mdW5jdGlvbiBORyhuKXtyZXR1cm4obi89MjU1KTw9LjA0MDQ1P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBNRnQobil7aWYobiBpbnN0YW5jZW9mIERQKXJldHVybiBuZXcgRFAobi5oLG4uYyxuLmwsbi5vcGFjaXR5KTtpZihuIGluc3RhbmNlb2Ygd098fChuPWhtdChuKSksbi5hPT09MCYmbi5iPT09MClyZXR1cm4gbmV3IERQKE5hTiwwPG4ubCYmbi5sPDEwMD8wOk5hTixuLmwsbi5vcGFjaXR5KTt2YXIgdD1NYXRoLmF0YW4yKG4uYixuLmEpKm1tdDtyZXR1cm4gbmV3IERQKHQ8MD90KzM2MDp0LE1hdGguc3FydChuLmEqbi5hK24uYipuLmIpLG4ubCxuLm9wYWNpdHkpfWZ1bmN0aW9uIG0xKG4sdCxlLG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9NRnQobik6bmV3IERQKG4sdCxlLG89PW51bGw/MTpvKX1mdW5jdGlvbiBEUChuLHQsZSxvKXt0aGlzLmg9K24sdGhpcy5jPSt0LHRoaXMubD0rZSx0aGlzLm9wYWNpdHk9K299ZnVuY3Rpb24gX210KG4pe2lmKGlzTmFOKG4uaCkpcmV0dXJuIG5ldyB3TyhuLmwsMCwwLG4ub3BhY2l0eSk7dmFyIHQ9bi5oKmNtdDtyZXR1cm4gbmV3IHdPKG4ubCxNYXRoLmNvcyh0KSpuLmMsTWF0aC5zaW4odCkqbi5jLG4ub3BhY2l0eSl9bDEoRFAsbTEsZDIoQ3gse2JyaWdodGVyOmZ1bmN0aW9uKG4pe3JldHVybiBuZXcgRFAodGhpcy5oLHRoaXMuYyx0aGlzLmwrUDYqKG49PW51bGw/MTpuKSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBEUCh0aGlzLmgsdGhpcy5jLHRoaXMubC1QNioobj09bnVsbD8xOm4pLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBfbXQodGhpcykucmdiKCl9fSkpO2Z1bmN0aW9uIEFHKG4sdCxlLG8saSl7dmFyIGE9bipuLHI9YSpuO3JldHVybigoMS0zKm4rMyphLXIpKnQrKDQtNiphKzMqcikqZSsoMSszKm4rMyphLTMqcikqbytyKmkpLzZ9ZnVuY3Rpb24gQ210KG4pe3ZhciB0PW4ubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBvPWU8PTA/ZT0wOmU+PTE/KGU9MSx0LTEpOk1hdGguZmxvb3IoZSp0KSxpPW5bb10sYT1uW28rMV0scj1vPjA/bltvLTFdOjIqaS1hLHM9bzx0LTE/bltvKzJdOjIqYS1pO3JldHVybiBBRygoZS1vL3QpKnQscixpLGEscyl9fWZ1bmN0aW9uIE1tdChuKXt2YXIgdD1uLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG89TWF0aC5mbG9vcigoKGUlPTEpPDA/KytlOmUpKnQpLGk9blsobyt0LTEpJXRdLGE9bltvJXRdLHI9blsobysxKSV0XSxzPW5bKG8rMikldF07cmV0dXJuIEFHKChlLW8vdCkqdCxpLGEscixzKX19ZnVuY3Rpb24gXzIobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIGJtdChuLHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbitlKnR9fWZ1bmN0aW9uIGJGdChuLHQsZSl7cmV0dXJuIG49TWF0aC5wb3cobixlKSx0PU1hdGgucG93KHQsZSktbixlPTEvZSxmdW5jdGlvbihvKXtyZXR1cm4gTWF0aC5wb3cobitvKnQsZSl9fWZ1bmN0aW9uIHk2KG4sdCl7dmFyIGU9dC1uO3JldHVybiBlP2JtdChuLGU+MTgwfHxlPC0xODA/ZS0zNjAqTWF0aC5yb3VuZChlLzM2MCk6ZSk6XzIoaXNOYU4obik/dDpuKX1mdW5jdGlvbiBPbXQobil7cmV0dXJuKG49K24pPT0xP1JkOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdD9iRnQodCxlLG4pOl8yKGlzTmFOKHQpP2U6dCl9fWZ1bmN0aW9uIFJkKG4sdCl7dmFyIGU9dC1uO3JldHVybiBlP2JtdChuLGUpOl8yKGlzTmFOKG4pP3Q6bil9dmFyIGYxPWZ1bmN0aW9uIG4odCl7dmFyIGU9T210KHQpO2Z1bmN0aW9uIG8oaSxhKXt2YXIgcj1lKChpPXUyKGkpKS5yLChhPXUyKGEpKS5yKSxzPWUoaS5nLGEuZyksbD1lKGkuYixhLmIpLGM9UmQoaS5vcGFjaXR5LGEub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKG0pe3JldHVybiBpLnI9cihtKSxpLmc9cyhtKSxpLmI9bChtKSxpLm9wYWNpdHk9YyhtKSxpKyIifX1yZXR1cm4gby5nYW1tYT1uLG99KDEpO2Z1bmN0aW9uIFBtdChuKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsbz1uZXcgQXJyYXkoZSksaT1uZXcgQXJyYXkoZSksYT1uZXcgQXJyYXkoZSkscixzO2ZvcihyPTA7cjxlOysrcilzPXUyKHRbcl0pLG9bcl09cy5yfHwwLGlbcl09cy5nfHwwLGFbcl09cy5ifHwwO3JldHVybiBvPW4obyksaT1uKGkpLGE9bihhKSxzLm9wYWNpdHk9MSxmdW5jdGlvbihsKXtyZXR1cm4gcy5yPW8obCkscy5nPWkobCkscy5iPWEobCkscysiIn19fXZhciBERz1QbXQoQ210KSxPRnQ9UG10KE1tdCk7ZnVuY3Rpb24geW10KG4sdCl7dHx8KHQ9W10pO3ZhciBlPW4/TWF0aC5taW4odC5sZW5ndGgsbi5sZW5ndGgpOjAsbz10LnNsaWNlKCksaTtyZXR1cm4gZnVuY3Rpb24oYSl7Zm9yKGk9MDtpPGU7KytpKW9baV09bltpXSooMS1hKSt0W2ldKmE7cmV0dXJuIG99fWZ1bmN0aW9uIHhtdChuKXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KG4pJiYhKG4gaW5zdGFuY2VvZiBEYXRhVmlldyl9ZnVuY3Rpb24gdm10KG4sdCl7dmFyIGU9dD90Lmxlbmd0aDowLG89bj9NYXRoLm1pbihlLG4ubGVuZ3RoKTowLGk9bmV3IEFycmF5KG8pLGE9bmV3IEFycmF5KGUpLHI7Zm9yKHI9MDtyPG87KytyKWlbcl09SVAobltyXSx0W3JdKTtmb3IoO3I8ZTsrK3IpYVtyXT10W3JdO3JldHVybiBmdW5jdGlvbihzKXtmb3Iocj0wO3I8bzsrK3IpYVtyXT1pW3JdKHMpO3JldHVybiBhfX1mdW5jdGlvbiB3bXQobix0KXt2YXIgZT1uZXcgRGF0ZTtyZXR1cm4gbj0rbix0PSt0LGZ1bmN0aW9uKG8pe3JldHVybiBlLnNldFRpbWUobiooMS1vKSt0Km8pLGV9fWZ1bmN0aW9uIHZjKG4sdCl7cmV0dXJuIG49K24sdD0rdCxmdW5jdGlvbihlKXtyZXR1cm4gbiooMS1lKSt0KmV9fWZ1bmN0aW9uIFNtdChuLHQpe3ZhciBlPXt9LG89e30saTsobj09PW51bGx8fHR5cGVvZiBuIT0ib2JqZWN0IikmJihuPXt9KSwodD09PW51bGx8fHR5cGVvZiB0IT0ib2JqZWN0IikmJih0PXt9KTtmb3IoaSBpbiB0KWkgaW4gbj9lW2ldPUlQKG5baV0sdFtpXSk6b1tpXT10W2ldO3JldHVybiBmdW5jdGlvbihhKXtmb3IoaSBpbiBlKW9baV09ZVtpXShhKTtyZXR1cm4gb319dmFyIHpHPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxJRz1uZXcgUmVnRXhwKHpHLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIFBGdChuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24geUZ0KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbih0KSsiIn19ZnVuY3Rpb24gbDUobix0KXt2YXIgZT16Ry5sYXN0SW5kZXg9SUcubGFzdEluZGV4PTAsbyxpLGEscj0tMSxzPVtdLGw9W107Zm9yKG49bisiIix0PXQrIiI7KG89ekcuZXhlYyhuKSkmJihpPUlHLmV4ZWModCkpOykoYT1pLmluZGV4KT5lJiYoYT10LnNsaWNlKGUsYSksc1tyXT9zW3JdKz1hOnNbKytyXT1hKSwobz1vWzBdKT09PShpPWlbMF0pP3Nbcl0/c1tyXSs9aTpzWysrcl09aTooc1srK3JdPW51bGwsbC5wdXNoKHtpOnIseDp2YyhvLGkpfSkpLGU9SUcubGFzdEluZGV4O3JldHVybiBlPHQubGVuZ3RoJiYoYT10LnNsaWNlKGUpLHNbcl0/c1tyXSs9YTpzWysrcl09YSkscy5sZW5ndGg8Mj9sWzBdP3lGdChsWzBdLngpOlBGdCh0KToodD1sLmxlbmd0aCxmdW5jdGlvbihjKXtmb3IodmFyIG09MCxmO208dDsrK20pc1soZj1sW21dKS5pXT1mLngoYyk7cmV0dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBJUChuLHQpe3ZhciBlPXR5cGVvZiB0LG87cmV0dXJuIHQ9PW51bGx8fGU9PT0iYm9vbGVhbiI/XzIodCk6KGU9PT0ibnVtYmVyIj92YzplPT09InN0cmluZyI/KG89ZWIodCkpPyh0PW8sZjEpOmw1OnQgaW5zdGFuY2VvZiBlYj9mMTp0IGluc3RhbmNlb2YgRGF0ZT93bXQ6eG10KHQpP3ltdDpBcnJheS5pc0FycmF5KHQpP3ZtdDp0eXBlb2YgdC52YWx1ZU9mIT0iZnVuY3Rpb24iJiZ0eXBlb2YgdC50b1N0cmluZyE9ImZ1bmN0aW9uInx8aXNOYU4odCk/U210OnZjKShuLHQpfWZ1bmN0aW9uIEhHKG4sdCl7cmV0dXJuIG49K24sdD0rdCxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChuKigxLWUpK3QqZSl9fXZhciBSbXQ9MTgwL01hdGguUEkseDY9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gRkcobix0LGUsbyxpLGEpe3ZhciByLHMsbDtyZXR1cm4ocj1NYXRoLnNxcnQobipuK3QqdCkpJiYobi89cix0Lz1yKSwobD1uKmUrdCpvKSYmKGUtPW4qbCxvLT10KmwpLChzPU1hdGguc3FydChlKmUrbypvKSkmJihlLz1zLG8vPXMsbC89cyksbipvPHQqZSYmKG49LW4sdD0tdCxsPS1sLHI9LXIpLHt0cmFuc2xhdGVYOmksdHJhbnNsYXRlWTphLHJvdGF0ZTpNYXRoLmF0YW4yKHQsbikqUm10LHNrZXdYOk1hdGguYXRhbihsKSpSbXQsc2NhbGVYOnIsc2NhbGVZOnN9fXZhciBjNSxMRyxFbXQsdjY7ZnVuY3Rpb24ga210KG4pe3JldHVybiBuPT09Im5vbmUiP3g2OihjNXx8KGM1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLExHPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxFbXQ9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLGM1LnN0eWxlLnRyYW5zZm9ybT1uLG49RW10LmdldENvbXB1dGVkU3R5bGUoTEcuYXBwZW5kQ2hpbGQoYzUpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLExHLnJlbW92ZUNoaWxkKGM1KSxuPW4uc2xpY2UoNywtMSkuc3BsaXQoIiwiKSxGRygrblswXSwrblsxXSwrblsyXSwrblszXSwrbls0XSwrbls1XSkpfWZ1bmN0aW9uIE5tdChuKXtyZXR1cm4gbj09bnVsbD94NjoodjZ8fCh2Nj1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx2Ni5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsbiksKG49djYudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/KG49bi5tYXRyaXgsRkcobi5hLG4uYixuLmMsbi5kLG4uZSxuLmYpKTp4Nil9ZnVuY3Rpb24gVG10KG4sdCxlLG8pe2Z1bmN0aW9uIGkoYyl7cmV0dXJuIGMubGVuZ3RoP2MucG9wKCkrIiAiOiIifWZ1bmN0aW9uIGEoYyxtLGYscCxnLF8pe2lmKGMhPT1mfHxtIT09cCl7dmFyIE09Zy5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLHQsbnVsbCxlKTtfLnB1c2goe2k6TS00LHg6dmMoYyxmKX0se2k6TS0yLHg6dmMobSxwKX0pfWVsc2UoZnx8cCkmJmcucHVzaCgidHJhbnNsYXRlKCIrZit0K3ArZSl9ZnVuY3Rpb24gcihjLG0sZixwKXtjIT09bT8oYy1tPjE4MD9tKz0zNjA6bS1jPjE4MCYmKGMrPTM2MCkscC5wdXNoKHtpOmYucHVzaChpKGYpKyJyb3RhdGUoIixudWxsLG8pLTIseDp2YyhjLG0pfSkpOm0mJmYucHVzaChpKGYpKyJyb3RhdGUoIittK28pfWZ1bmN0aW9uIHMoYyxtLGYscCl7YyE9PW0/cC5wdXNoKHtpOmYucHVzaChpKGYpKyJza2V3WCgiLG51bGwsbyktMix4OnZjKGMsbSl9KTptJiZmLnB1c2goaShmKSsic2tld1goIittK28pfWZ1bmN0aW9uIGwoYyxtLGYscCxnLF8pe2lmKGMhPT1mfHxtIT09cCl7dmFyIE09Zy5wdXNoKGkoZykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO18ucHVzaCh7aTpNLTQseDp2YyhjLGYpfSx7aTpNLTIseDp2YyhtLHApfSl9ZWxzZShmIT09MXx8cCE9PTEpJiZnLnB1c2goaShnKSsic2NhbGUoIitmKyIsIitwKyIpIil9cmV0dXJuIGZ1bmN0aW9uKGMsbSl7dmFyIGY9W10scD1bXTtyZXR1cm4gYz1uKGMpLG09bihtKSxhKGMudHJhbnNsYXRlWCxjLnRyYW5zbGF0ZVksbS50cmFuc2xhdGVYLG0udHJhbnNsYXRlWSxmLHApLHIoYy5yb3RhdGUsbS5yb3RhdGUsZixwKSxzKGMuc2tld1gsbS5za2V3WCxmLHApLGwoYy5zY2FsZVgsYy5zY2FsZVksbS5zY2FsZVgsbS5zY2FsZVksZixwKSxjPW09bnVsbCxmdW5jdGlvbihnKXtmb3IodmFyIF89LTEsTT1wLmxlbmd0aCx5OysrXzxNOylmWyh5PXBbX10pLmldPXkueChnKTtyZXR1cm4gZi5qb2luKCIiKX19fXZhciBCRz1UbXQoa210LCJweCwgIiwicHgpIiwiZGVnKSIpLFZHPVRtdChObXQsIiwgIiwiKSIsIikiKTtmdW5jdGlvbiBBbXQobil7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG89bigodD1jMSh0KSkuaCwoZT1jMShlKSkuaCksaT1SZCh0LnMsZS5zKSxhPVJkKHQubCxlLmwpLHI9UmQodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3JldHVybiB0Lmg9byhzKSx0LnM9aShzKSx0Lmw9YShzKSx0Lm9wYWNpdHk9cihzKSx0KyIifX19dmFyIGpHPUFtdCh5NikseEZ0PUFtdChSZCk7ZnVuY3Rpb24gRG10KG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBvPW4oKHQ9bTEodCkpLmgsKGU9bTEoZSkpLmgpLGk9UmQodC5jLGUuYyksYT1SZCh0LmwsZS5sKSxyPVJkKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gdC5oPW8ocyksdC5jPWkocyksdC5sPWEocyksdC5vcGFjaXR5PXIocyksdCsiIn19fXZhciBVRz1EbXQoeTYpLHZGdD1EbXQoUmQpO3ZhciBDMj0wLGY1PTAsbTU9MCx6bXQ9MWUzLHc2LHA1LFM2PTAscDE9MCxSNj0wLGQ1PXR5cGVvZiBwZXJmb3JtYW5jZT09Im9iamVjdCImJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLEhtdD10eXBlb2Ygd2luZG93PT0ib2JqZWN0IiYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbihuKXtzZXRUaW1lb3V0KG4sMTcpfTtmdW5jdGlvbiBNMigpe3JldHVybiBwMXx8KEhtdCh3RnQpLHAxPWQ1Lm5vdygpK1I2KX1mdW5jdGlvbiB3RnQoKXtwMT0wfWZ1bmN0aW9uIGc1KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1nNS5wcm90b3R5cGU9RTYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpnNSxyZXN0YXJ0OmZ1bmN0aW9uKG4sdCxlKXtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO2U9KGU9PW51bGw/TTIoKTorZSkrKHQ9PW51bGw/MDordCksIXRoaXMuX25leHQmJnA1IT09dGhpcyYmKHA1P3A1Ll9uZXh0PXRoaXM6dzY9dGhpcyxwNT10aGlzKSx0aGlzLl9jYWxsPW4sdGhpcy5fdGltZT1lLFlHKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLFlHKCkpfX07ZnVuY3Rpb24gRTYobix0LGUpe3ZhciBvPW5ldyBnNTtyZXR1cm4gby5yZXN0YXJ0KG4sdCxlKSxvfWZ1bmN0aW9uIEZtdCgpe00yKCksKytDMjtmb3IodmFyIG49dzYsdDtuOykodD1wMS1uLl90aW1lKT49MCYmbi5fY2FsbC5jYWxsKG51bGwsdCksbj1uLl9uZXh0Oy0tQzJ9ZnVuY3Rpb24gSW10KCl7cDE9KFM2PWQ1Lm5vdygpKStSNixDMj1mNT0wO3RyeXtGbXQoKX1maW5hbGx5e0MyPTAsUkZ0KCkscDE9MH19ZnVuY3Rpb24gU0Z0KCl7dmFyIG49ZDUubm93KCksdD1uLVM2O3Q+em10JiYoUjYtPXQsUzY9bil9ZnVuY3Rpb24gUkZ0KCl7Zm9yKHZhciBuLHQ9dzYsZSxvPTEvMDt0Oyl0Ll9jYWxsPyhvPnQuX3RpbWUmJihvPXQuX3RpbWUpLG49dCx0PXQuX25leHQpOihlPXQuX25leHQsdC5fbmV4dD1udWxsLHQ9bj9uLl9uZXh0PWU6dzY9ZSk7cDU9bixZRyhvKX1mdW5jdGlvbiBZRyhuKXtpZighQzIpe2Y1JiYoZjU9Y2xlYXJUaW1lb3V0KGY1KSk7dmFyIHQ9bi1wMTt0PjI0PyhuPDEvMCYmKGY1PXNldFRpbWVvdXQoSW10LG4tZDUubm93KCktUjYpKSxtNSYmKG01PWNsZWFySW50ZXJ2YWwobTUpKSk6KG01fHwoUzY9ZDUubm93KCksbTU9c2V0SW50ZXJ2YWwoU0Z0LHptdCkpLEMyPTEsSG10KEltdCkpfX1mdW5jdGlvbiBrNihuLHQsZSl7dmFyIG89bmV3IGc1O3JldHVybiB0PXQ9PW51bGw/MDordCxvLnJlc3RhcnQoZnVuY3Rpb24oaSl7by5zdG9wKCksbihpK3QpfSx0LGUpLG99dmFyIEVGdD1uNSgic3RhcnQiLCJlbmQiLCJjYW5jZWwiLCJpbnRlcnJ1cHQiKSxrRnQ9W10sQm10PTAsR0c9MSxUNj0yLE42PTMsTG10PTQsQTY9NSx1NT02O2Z1bmN0aW9uIE14KG4sdCxlLG8saSxhKXt2YXIgcj1uLl9fdHJhbnNpdGlvbjtpZighciluLl9fdHJhbnNpdGlvbj17fTtlbHNlIGlmKGUgaW4gcilyZXR1cm47TkZ0KG4sZSx7bmFtZTp0LGluZGV4Om8sZ3JvdXA6aSxvbjpFRnQsdHdlZW46a0Z0LHRpbWU6YS50aW1lLGRlbGF5OmEuZGVsYXksZHVyYXRpb246YS5kdXJhdGlvbixlYXNlOmEuZWFzZSx0aW1lcjpudWxsLHN0YXRlOkJtdH0pfWZ1bmN0aW9uIGg1KG4sdCl7dmFyIGU9cmwobix0KTtpZihlLnN0YXRlPkJtdCl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiBlfWZ1bmN0aW9uIHZmKG4sdCl7dmFyIGU9cmwobix0KTtpZihlLnN0YXRlPk42KXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBlfWZ1bmN0aW9uIHJsKG4sdCl7dmFyIGU9bi5fX3RyYW5zaXRpb247aWYoIWV8fCEoZT1lW3RdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIGV9ZnVuY3Rpb24gTkZ0KG4sdCxlKXt2YXIgbz1uLl9fdHJhbnNpdGlvbixpO29bdF09ZSxlLnRpbWVyPUU2KGEsMCxlLnRpbWUpO2Z1bmN0aW9uIGEoYyl7ZS5zdGF0ZT1HRyxlLnRpbWVyLnJlc3RhcnQocixlLmRlbGF5LGUudGltZSksZS5kZWxheTw9YyYmcihjLWUuZGVsYXkpfWZ1bmN0aW9uIHIoYyl7dmFyIG0sZixwLGc7aWYoZS5zdGF0ZSE9PUdHKXJldHVybiBsKCk7Zm9yKG0gaW4gbylpZihnPW9bbV0sZy5uYW1lPT09ZS5uYW1lKXtpZihnLnN0YXRlPT09TjYpcmV0dXJuIGs2KHIpO2cuc3RhdGU9PT1MbXQ/KGcuc3RhdGU9dTUsZy50aW1lci5zdG9wKCksZy5vbi5jYWxsKCJpbnRlcnJ1cHQiLG4sbi5fX2RhdGFfXyxnLmluZGV4LGcuZ3JvdXApLGRlbGV0ZSBvW21dKTorbTx0JiYoZy5zdGF0ZT11NSxnLnRpbWVyLnN0b3AoKSxnLm9uLmNhbGwoImNhbmNlbCIsbixuLl9fZGF0YV9fLGcuaW5kZXgsZy5ncm91cCksZGVsZXRlIG9bbV0pfWlmKGs2KGZ1bmN0aW9uKCl7ZS5zdGF0ZT09PU42JiYoZS5zdGF0ZT1MbXQsZS50aW1lci5yZXN0YXJ0KHMsZS5kZWxheSxlLnRpbWUpLHMoYykpfSksZS5zdGF0ZT1UNixlLm9uLmNhbGwoInN0YXJ0IixuLG4uX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSxlLnN0YXRlPT09VDYpe2ZvcihlLnN0YXRlPU42LGk9bmV3IEFycmF5KHA9ZS50d2Vlbi5sZW5ndGgpLG09MCxmPS0xO208cDsrK20pKGc9ZS50d2VlblttXS52YWx1ZS5jYWxsKG4sbi5fX2RhdGFfXyxlLmluZGV4LGUuZ3JvdXApKSYmKGlbKytmXT1nKTtpLmxlbmd0aD1mKzF9fWZ1bmN0aW9uIHMoYyl7Zm9yKHZhciBtPWM8ZS5kdXJhdGlvbj9lLmVhc2UuY2FsbChudWxsLGMvZS5kdXJhdGlvbik6KGUudGltZXIucmVzdGFydChsKSxlLnN0YXRlPUE2LDEpLGY9LTEscD1pLmxlbmd0aDsrK2Y8cDspaVtmXS5jYWxsKG4sbSk7ZS5zdGF0ZT09PUE2JiYoZS5vbi5jYWxsKCJlbmQiLG4sbi5fX2RhdGFfXyxlLmluZGV4LGUuZ3JvdXApLGwoKSl9ZnVuY3Rpb24gbCgpe2Uuc3RhdGU9dTUsZS50aW1lci5zdG9wKCksZGVsZXRlIG9bdF07Zm9yKHZhciBjIGluIG8pcmV0dXJuO2RlbGV0ZSBuLl9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gZDEobix0KXt2YXIgZT1uLl9fdHJhbnNpdGlvbixvLGksYT0hMCxyO2lmKCEhZSl7dD10PT1udWxsP251bGw6dCsiIjtmb3IociBpbiBlKXtpZigobz1lW3JdKS5uYW1lIT09dCl7YT0hMTtjb250aW51ZX1pPW8uc3RhdGU+VDYmJm8uc3RhdGU8QTYsby5zdGF0ZT11NSxvLnRpbWVyLnN0b3AoKSxvLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIixuLG4uX19kYXRhX18sby5pbmRleCxvLmdyb3VwKSxkZWxldGUgZVtyXX1hJiZkZWxldGUgbi5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIFZtdChuKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZDEodGhpcyxuKX0pfWZ1bmN0aW9uIFRGdChuLHQpe3ZhciBlLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9dmYodGhpcyxuKSxhPWkudHdlZW47aWYoYSE9PWUpe289ZT1hO2Zvcih2YXIgcj0wLHM9by5sZW5ndGg7cjxzOysrcilpZihvW3JdLm5hbWU9PT10KXtvPW8uc2xpY2UoKSxvLnNwbGljZShyLDEpO2JyZWFrfX1pLnR3ZWVuPW99fWZ1bmN0aW9uIEFGdChuLHQsZSl7dmFyIG8saTtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dmYodGhpcyxuKSxyPWEudHdlZW47aWYociE9PW8pe2k9KG89cikuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6dCx2YWx1ZTplfSxsPTAsYz1pLmxlbmd0aDtsPGM7KytsKWlmKGlbbF0ubmFtZT09PXQpe2lbbF09czticmVha31sPT09YyYmaS5wdXNoKHMpfWEudHdlZW49aX19ZnVuY3Rpb24gam10KG4sdCl7dmFyIGU9dGhpcy5faWQ7aWYobis9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIG89cmwodGhpcy5ub2RlKCksZSkudHdlZW4saT0wLGE9by5sZW5ndGgscjtpPGE7KytpKWlmKChyPW9baV0pLm5hbWU9PT1uKXJldHVybiByLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKHQ9PW51bGw/VEZ0OkFGdCkoZSxuLHQpKX1mdW5jdGlvbiBiMihuLHQsZSl7dmFyIG89bi5faWQ7cmV0dXJuIG4uZWFjaChmdW5jdGlvbigpe3ZhciBpPXZmKHRoaXMsbyk7KGkudmFsdWV8fChpLnZhbHVlPXt9KSlbdF09ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxmdW5jdGlvbihpKXtyZXR1cm4gcmwoaSxvKS52YWx1ZVt0XX19ZnVuY3Rpb24gRDYobix0KXt2YXIgZTtyZXR1cm4odHlwZW9mIHQ9PSJudW1iZXIiP3ZjOnQgaW5zdGFuY2VvZiBlYj9mMTooZT1lYih0KSk/KHQ9ZSxmMSk6bDUpKG4sdCl9ZnVuY3Rpb24gREZ0KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pfX1mdW5jdGlvbiBJRnQobil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpfX1mdW5jdGlvbiB6RnQobix0LGUpe3ZhciBvLGk9ZSsiIixhO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXRoaXMuZ2V0QXR0cmlidXRlKG4pO3JldHVybiByPT09aT9udWxsOnI9PT1vP2E6YT10KG89cixlKX19ZnVuY3Rpb24gSEZ0KG4sdCxlKXt2YXIgbyxpPWUrIiIsYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk7cmV0dXJuIHI9PT1pP251bGw6cj09PW8/YTphPXQobz1yLGUpfX1mdW5jdGlvbiBGRnQobix0LGUpe3ZhciBvLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixzPWUodGhpcyksbDtyZXR1cm4gcz09bnVsbD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlKG4pOihyPXRoaXMuZ2V0QXR0cmlidXRlKG4pLGw9cysiIixyPT09bD9udWxsOnI9PT1vJiZsPT09aT9hOihpPWwsYT10KG89cixzKSkpfX1mdW5jdGlvbiBMRnQobix0LGUpe3ZhciBvLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixzPWUodGhpcyksbDtyZXR1cm4gcz09bnVsbD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKToocj10aGlzLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCksbD1zKyIiLHI9PT1sP251bGw6cj09PW8mJmw9PT1pP2E6KGk9bCxhPXQobz1yLHMpKSl9fWZ1bmN0aW9uIFVtdChuLHQpe3ZhciBlPVRQKG4pLG89ZT09PSJ0cmFuc2Zvcm0iP1ZHOkQ2O3JldHVybiB0aGlzLmF0dHJUd2VlbihuLHR5cGVvZiB0PT0iZnVuY3Rpb24iPyhlLmxvY2FsP0xGdDpGRnQpKGUsbyxiMih0aGlzLCJhdHRyLiIrbix0KSk6dD09bnVsbD8oZS5sb2NhbD9JRnQ6REZ0KShlKTooZS5sb2NhbD9IRnQ6ekZ0KShlLG8sdCkpfWZ1bmN0aW9uIEJGdChuLHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnNldEF0dHJpYnV0ZShuLHQuY2FsbCh0aGlzLGUpKX19ZnVuY3Rpb24gVkZ0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMuc2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLHQuY2FsbCh0aGlzLGUpKX19ZnVuY3Rpb24gakZ0KG4sdCl7dmFyIGUsbztmdW5jdGlvbiBpKCl7dmFyIGE9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1vJiYoZT0obz1hKSYmVkZ0KG4sYSkpLGV9cmV0dXJuIGkuX3ZhbHVlPXQsaX1mdW5jdGlvbiBVRnQobix0KXt2YXIgZSxvO2Z1bmN0aW9uIGkoKXt2YXIgYT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PW8mJihlPShvPWEpJiZCRnQobixhKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfWZ1bmN0aW9uIFltdChuLHQpe3ZhciBlPSJhdHRyLiIrbjtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGU9dGhpcy50d2VlbihlKSkmJmUuX3ZhbHVlO2lmKHQ9PW51bGwpcmV0dXJuIHRoaXMudHdlZW4oZSxudWxsKTtpZih0eXBlb2YgdCE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7dmFyIG89VFAobik7cmV0dXJuIHRoaXMudHdlZW4oZSwoby5sb2NhbD9qRnQ6VUZ0KShvLHQpKX1mdW5jdGlvbiBZRnQobix0KXtyZXR1cm4gZnVuY3Rpb24oKXtoNSh0aGlzLG4pLmRlbGF5PSt0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gR0Z0KG4sdCl7cmV0dXJuIHQ9K3QsZnVuY3Rpb24oKXtoNSh0aGlzLG4pLmRlbGF5PXR9fWZ1bmN0aW9uIEdtdChuKXt2YXIgdD10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKHR5cGVvZiBuPT0iZnVuY3Rpb24iP1lGdDpHRnQpKHQsbikpOnJsKHRoaXMubm9kZSgpLHQpLmRlbGF5fWZ1bmN0aW9uIFdGdChuLHQpe3JldHVybiBmdW5jdGlvbigpe3ZmKHRoaXMsbikuZHVyYXRpb249K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBxRnQobix0KXtyZXR1cm4gdD0rdCxmdW5jdGlvbigpe3ZmKHRoaXMsbikuZHVyYXRpb249dH19ZnVuY3Rpb24gV210KG4pe3ZhciB0PXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgodHlwZW9mIG49PSJmdW5jdGlvbiI/V0Z0OnFGdCkodCxuKSk6cmwodGhpcy5ub2RlKCksdCkuZHVyYXRpb259ZnVuY3Rpb24gWkZ0KG4sdCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZmKHRoaXMsbikuZWFzZT10fX1mdW5jdGlvbiBxbXQobil7dmFyIHQ9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKFpGdCh0LG4pKTpybCh0aGlzLm5vZGUoKSx0KS5lYXNlfWZ1bmN0aW9uIFptdChuKXt0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmKG49aTUobikpO2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT10Lmxlbmd0aCxvPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSlmb3IodmFyIGE9dFtpXSxyPWEubGVuZ3RoLHM9b1tpXT1bXSxsLGM9MDtjPHI7KytjKShsPWFbY10pJiZuLmNhbGwobCxsLl9fZGF0YV9fLGMsYSkmJnMucHVzaChsKTtyZXR1cm4gbmV3IHltKG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX1mdW5jdGlvbiBYbXQobil7aWYobi5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPW4uX2dyb3VwcyxvPXQubGVuZ3RoLGk9ZS5sZW5ndGgsYT1NYXRoLm1pbihvLGkpLHI9bmV3IEFycmF5KG8pLHM9MDtzPGE7KytzKWZvcih2YXIgbD10W3NdLGM9ZVtzXSxtPWwubGVuZ3RoLGY9cltzXT1uZXcgQXJyYXkobSkscCxnPTA7ZzxtOysrZykocD1sW2ddfHxjW2ddKSYmKGZbZ109cCk7Zm9yKDtzPG87KytzKXJbc109dFtzXTtyZXR1cm4gbmV3IHltKHIsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX1mdW5jdGlvbiBYRnQobil7cmV0dXJuKG4rIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeShmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8dD09PSJzdGFydCJ9KX1mdW5jdGlvbiBRRnQobix0LGUpe3ZhciBvLGksYT1YRnQodCk/aDU6dmY7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9YSh0aGlzLG4pLHM9ci5vbjtzIT09byYmKGk9KG89cykuY29weSgpKS5vbih0LGUpLHIub249aX19ZnVuY3Rpb24gUW10KG4sdCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9ybCh0aGlzLm5vZGUoKSxlKS5vbi5vbihuKTp0aGlzLmVhY2goUUZ0KGUsbix0KSl9ZnVuY3Rpb24gS0Z0KG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIGUgaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK2UhPT1uKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX1mdW5jdGlvbiBLbXQoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsS0Z0KHRoaXMuX2lkKSl9ZnVuY3Rpb24gSm10KG4pe3ZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZDt0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmKG49czEobikpO2Zvcih2YXIgbz10aGlzLl9ncm91cHMsaT1vLmxlbmd0aCxhPW5ldyBBcnJheShpKSxyPTA7cjxpOysrcilmb3IodmFyIHM9b1tyXSxsPXMubGVuZ3RoLGM9YVtyXT1uZXcgQXJyYXkobCksbSxmLHA9MDtwPGw7KytwKShtPXNbcF0pJiYoZj1uLmNhbGwobSxtLl9fZGF0YV9fLHAscykpJiYoIl9fZGF0YV9fImluIG0mJihmLl9fZGF0YV9fPW0uX19kYXRhX18pLGNbcF09ZixNeChjW3BdLHQsZSxwLGMscmwobSxlKSkpO3JldHVybiBuZXcgeW0oYSx0aGlzLl9wYXJlbnRzLHQsZSl9ZnVuY3Rpb24gJG10KG4pe3ZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZDt0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmKG49bzUobikpO2Zvcih2YXIgbz10aGlzLl9ncm91cHMsaT1vLmxlbmd0aCxhPVtdLHI9W10scz0wO3M8aTsrK3MpZm9yKHZhciBsPW9bc10sYz1sLmxlbmd0aCxtLGY9MDtmPGM7KytmKWlmKG09bFtmXSl7Zm9yKHZhciBwPW4uY2FsbChtLG0uX19kYXRhX18sZixsKSxnLF89cmwobSxlKSxNPTAseT1wLmxlbmd0aDtNPHk7KytNKShnPXBbTV0pJiZNeChnLHQsZSxNLHAsXyk7YS5wdXNoKHApLHIucHVzaChtKX1yZXR1cm4gbmV3IHltKGEscix0LGUpfXZhciBKRnQ9QVAucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIHRmdCgpe3JldHVybiBuZXcgSkZ0KHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiAkRnQobix0KXt2YXIgZSxvLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9X3godGhpcyxuKSxyPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KG4pLF94KHRoaXMsbikpO3JldHVybiBhPT09cj9udWxsOmE9PT1lJiZyPT09bz9pOmk9dChlPWEsbz1yKX19ZnVuY3Rpb24gZWZ0KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9fWZ1bmN0aW9uIHQ3dChuLHQsZSl7dmFyIG8saT1lKyIiLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9X3godGhpcyxuKTtyZXR1cm4gcj09PWk/bnVsbDpyPT09bz9hOmE9dChvPXIsZSl9fWZ1bmN0aW9uIGU3dChuLHQsZSl7dmFyIG8saSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciByPV94KHRoaXMsbikscz1lKHRoaXMpLGw9cysiIjtyZXR1cm4gcz09bnVsbCYmKGw9cz0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKSxfeCh0aGlzLG4pKSkscj09PWw/bnVsbDpyPT09byYmbD09PWk/YTooaT1sLGE9dChvPXIscykpfX1mdW5jdGlvbiBuN3Qobix0KXt2YXIgZSxvLGksYT0ic3R5bGUuIit0LHI9ImVuZC4iK2EscztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD12Zih0aGlzLG4pLGM9bC5vbixtPWwudmFsdWVbYV09PW51bGw/c3x8KHM9ZWZ0KHQpKTp2b2lkIDA7KGMhPT1lfHxpIT09bSkmJihvPShlPWMpLmNvcHkoKSkub24ocixpPW0pLGwub249b319ZnVuY3Rpb24gbmZ0KG4sdCxlKXt2YXIgbz0obis9IiIpPT0idHJhbnNmb3JtIj9CRzpENjtyZXR1cm4gdD09bnVsbD90aGlzLnN0eWxlVHdlZW4obiwkRnQobixvKSkub24oImVuZC5zdHlsZS4iK24sZWZ0KG4pKTp0eXBlb2YgdD09ImZ1bmN0aW9uIj90aGlzLnN0eWxlVHdlZW4obixlN3QobixvLGIyKHRoaXMsInN0eWxlLiIrbix0KSkpLmVhY2gobjd0KHRoaXMuX2lkLG4pKTp0aGlzLnN0eWxlVHdlZW4obix0N3QobixvLHQpLGUpLm9uKCJlbmQuc3R5bGUuIituLG51bGwpfWZ1bmN0aW9uIG83dChuLHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG8pe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobix0LmNhbGwodGhpcyxvKSxlKX19ZnVuY3Rpb24gaTd0KG4sdCxlKXt2YXIgbyxpO2Z1bmN0aW9uIGEoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihvPShpPXIpJiZvN3QobixyLGUpKSxvfXJldHVybiBhLl92YWx1ZT10LGF9ZnVuY3Rpb24gb2Z0KG4sdCxlKXt2YXIgbz0ic3R5bGUuIisobis9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obz10aGlzLnR3ZWVuKG8pKSYmby5fdmFsdWU7aWYodD09bnVsbClyZXR1cm4gdGhpcy50d2VlbihvLG51bGwpO2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihvLGk3dChuLHQsZT09bnVsbD8iIjplKSl9ZnVuY3Rpb24gYTd0KG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn19ZnVuY3Rpb24gcjd0KG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PW4odGhpcyk7dGhpcy50ZXh0Q29udGVudD10PT1udWxsPyIiOnR9fWZ1bmN0aW9uIGlmdChuKXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsdHlwZW9mIG49PSJmdW5jdGlvbiI/cjd0KGIyKHRoaXMsInRleHQiLG4pKTphN3Qobj09bnVsbD8iIjpuKyIiKSl9ZnVuY3Rpb24gczd0KG4pe3JldHVybiBmdW5jdGlvbih0KXt0aGlzLnRleHRDb250ZW50PW4uY2FsbCh0aGlzLHQpfX1mdW5jdGlvbiBsN3Qobil7dmFyIHQsZTtmdW5jdGlvbiBvKCl7dmFyIGk9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1lJiYodD0oZT1pKSYmczd0KGkpKSx0fXJldHVybiBvLl92YWx1ZT1uLG99ZnVuY3Rpb24gYWZ0KG4pe3ZhciB0PSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKHQ9dGhpcy50d2Vlbih0KSkmJnQuX3ZhbHVlO2lmKG49PW51bGwpcmV0dXJuIHRoaXMudHdlZW4odCxudWxsKTtpZih0eXBlb2YgbiE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4odCxsN3QobikpfWZ1bmN0aW9uIHJmdCgpe2Zvcih2YXIgbj10aGlzLl9uYW1lLHQ9dGhpcy5faWQsZT1JNigpLG89dGhpcy5fZ3JvdXBzLGk9by5sZW5ndGgsYT0wO2E8aTsrK2EpZm9yKHZhciByPW9bYV0scz1yLmxlbmd0aCxsLGM9MDtjPHM7KytjKWlmKGw9cltjXSl7dmFyIG09cmwobCx0KTtNeChsLG4sZSxjLHIse3RpbWU6bS50aW1lK20uZGVsYXkrbS5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOm0uZHVyYXRpb24sZWFzZTptLmVhc2V9KX1yZXR1cm4gbmV3IHltKG8sdGhpcy5fcGFyZW50cyxuLGUpfWZ1bmN0aW9uIHNmdCgpe3ZhciBuLHQsZT10aGlzLG89ZS5faWQsaT1lLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oYSxyKXt2YXIgcz17dmFsdWU6cn0sbD17dmFsdWU6ZnVuY3Rpb24oKXstLWk9PT0wJiZhKCl9fTtlLmVhY2goZnVuY3Rpb24oKXt2YXIgYz12Zih0aGlzLG8pLG09Yy5vbjttIT09biYmKHQ9KG49bSkuY29weSgpLHQuXy5jYW5jZWwucHVzaChzKSx0Ll8uaW50ZXJydXB0LnB1c2gocyksdC5fLmVuZC5wdXNoKGwpKSxjLm9uPXR9KX0pfXZhciBjN3Q9MDtmdW5jdGlvbiB5bShuLHQsZSxvKXt0aGlzLl9ncm91cHM9bix0aGlzLl9wYXJlbnRzPXQsdGhpcy5fbmFtZT1lLHRoaXMuX2lkPW99ZnVuY3Rpb24gV0cobil7cmV0dXJuIEFQKCkudHJhbnNpdGlvbihuKX1mdW5jdGlvbiBJNigpe3JldHVybisrYzd0fXZhciBPMj1BUC5wcm90b3R5cGU7eW0ucHJvdG90eXBlPVdHLnByb3RvdHlwZT17Y29uc3RydWN0b3I6eW0sc2VsZWN0OkptdCxzZWxlY3RBbGw6JG10LGZpbHRlcjpabXQsbWVyZ2U6WG10LHNlbGVjdGlvbjp0ZnQsdHJhbnNpdGlvbjpyZnQsY2FsbDpPMi5jYWxsLG5vZGVzOk8yLm5vZGVzLG5vZGU6TzIubm9kZSxzaXplOk8yLnNpemUsZW1wdHk6TzIuZW1wdHksZWFjaDpPMi5lYWNoLG9uOlFtdCxhdHRyOlVtdCxhdHRyVHdlZW46WW10LHN0eWxlOm5mdCxzdHlsZVR3ZWVuOm9mdCx0ZXh0OmlmdCx0ZXh0VHdlZW46YWZ0LHJlbW92ZTpLbXQsdHdlZW46am10LGRlbGF5OkdtdCxkdXJhdGlvbjpXbXQsZWFzZTpxbXQsZW5kOnNmdH07ZnVuY3Rpb24gejYobil7cmV0dXJuKChuKj0yKTw9MT9uKm4qbjoobi09MikqbipuKzIpLzJ9dmFyIHFHPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTp6Nn07ZnVuY3Rpb24gbTd0KG4sdCl7Zm9yKHZhciBlOyEoZT1uLl9fdHJhbnNpdGlvbil8fCEoZT1lW3RdKTspaWYoIShuPW4ucGFyZW50Tm9kZSkpcmV0dXJuIHFHLnRpbWU9TTIoKSxxRztyZXR1cm4gZX1mdW5jdGlvbiBsZnQobil7dmFyIHQsZTtuIGluc3RhbmNlb2YgeW0/KHQ9bi5faWQsbj1uLl9uYW1lKToodD1JNigpLChlPXFHKS50aW1lPU0yKCksbj1uPT1udWxsP251bGw6bisiIik7Zm9yKHZhciBvPXRoaXMuX2dyb3VwcyxpPW8ubGVuZ3RoLGE9MDthPGk7KythKWZvcih2YXIgcj1vW2FdLHM9ci5sZW5ndGgsbCxjPTA7YzxzOysrYykobD1yW2NdKSYmTXgobCxuLHQsYyxyLGV8fG03dChsLHQpKTtyZXR1cm4gbmV3IHltKG8sdGhpcy5fcGFyZW50cyxuLHQpfUFQLnByb3RvdHlwZS5pbnRlcnJ1cHQ9Vm10O0FQLnByb3RvdHlwZS50cmFuc2l0aW9uPWxmdDtmdW5jdGlvbiBINihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbn19ZnVuY3Rpb24gY2Z0KG4sdCxlKXt0aGlzLnRhcmdldD1uLHRoaXMudHlwZT10LHRoaXMuc2VsZWN0aW9uPWV9ZnVuY3Rpb24gWkcoKXtWby5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBGNigpe1ZvLnByZXZlbnREZWZhdWx0KCksVm8uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIG1mdD17bmFtZToiZHJhZyJ9LFhHPXtuYW1lOiJzcGFjZSJ9LFAyPXtuYW1lOiJoYW5kbGUifSx5Mj17bmFtZToiY2VudGVyIn07ZnVuY3Rpb24gZmZ0KG4pe3JldHVyblsrblswXSwrblsxXV19ZnVuY3Rpb24gSkcobil7cmV0dXJuW2ZmdChuWzBdKSxmZnQoblsxXSldfWZ1bmN0aW9uIGY3dChuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFBHKHQsVm8udG91Y2hlcyxuKX19dmFyIFFHPXtuYW1lOiJ4IixoYW5kbGVzOlsidyIsImUiXS5tYXAoXzUpLGlucHV0OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49PW51bGw/bnVsbDpbWytuWzBdLHRbMF1bMV1dLFsrblsxXSx0WzFdWzFdXV19LG91dHB1dDpmdW5jdGlvbihuKXtyZXR1cm4gbiYmW25bMF1bMF0sblsxXVswXV19fSxMNj17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKF81KSxpbnB1dDpmdW5jdGlvbihuLHQpe3JldHVybiBuPT1udWxsP251bGw6W1t0WzBdWzBdLCtuWzBdXSxbdFsxXVswXSwrblsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24obil7cmV0dXJuIG4mJltuWzBdWzFdLG5bMV1bMV1dfX0sWnplPXtuYW1lOiJ4eSIsaGFuZGxlczpbIm4iLCJ3IiwiZSIsInMiLCJudyIsIm5lIiwic3ciLCJzZSJdLm1hcChfNSksaW5wdXQ6ZnVuY3Rpb24obil7cmV0dXJuIG49PW51bGw/bnVsbDpKRyhuKX0sb3V0cHV0OmZ1bmN0aW9uKG4pe3JldHVybiBufX0selA9e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LHBmdD17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sZGZ0PXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSxwN3Q9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0sZDd0PXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjotMSxlOm51bGwsczoxLHc6bnVsbCxudzotMSxuZTotMSxzZToxLHN3OjF9O2Z1bmN0aW9uIF81KG4pe3JldHVybnt0eXBlOm59fWZ1bmN0aW9uIGc3dCgpe3JldHVybiFWby5jdHJsS2V5JiYhVm8uYnV0dG9ufWZ1bmN0aW9uIHU3dCgpe3ZhciBuPXRoaXMub3duZXJTVkdFbGVtZW50fHx0aGlzO3JldHVybiBuLmhhc0F0dHJpYnV0ZSgidmlld0JveCIpPyhuPW4udmlld0JveC5iYXNlVmFsLFtbbi54LG4ueV0sW24ueCtuLndpZHRoLG4ueStuLmhlaWdodF1dKTpbWzAsMF0sW24ud2lkdGguYmFzZVZhbC52YWx1ZSxuLmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gaDd0KCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIEtHKG4pe2Zvcig7IW4uX19icnVzaDspaWYoIShuPW4ucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiBuLl9fYnJ1c2h9ZnVuY3Rpb24gXzd0KG4pe3JldHVybiBuWzBdWzBdPT09blsxXVswXXx8blswXVsxXT09PW5bMV1bMV19ZnVuY3Rpb24gJEcoKXtyZXR1cm4gQzd0KEw2KX1mdW5jdGlvbiBDN3Qobil7dmFyIHQ9dTd0LGU9Zzd0LG89aDd0LGk9ITAsYT1uNSgic3RhcnQiLCJicnVzaCIsImVuZCIpLHI9NixzO2Z1bmN0aW9uIGwoeSl7dmFyIE89eS5wcm9wZXJ0eSgiX19icnVzaCIsTSkuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmRhdGEoW181KCJvdmVybGF5IildKTtPLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJvdmVybGF5IikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hdHRyKCJjdXJzb3IiLHpQLm92ZXJsYXkpLm1lcmdlKE8pLmVhY2goZnVuY3Rpb24oKXt2YXIgUj1LRyh0aGlzKS5leHRlbnQ7Q3ModGhpcykuYXR0cigieCIsUlswXVswXSkuYXR0cigieSIsUlswXVsxXSkuYXR0cigid2lkdGgiLFJbMV1bMF0tUlswXVswXSkuYXR0cigiaGVpZ2h0IixSWzFdWzFdLVJbMF1bMV0pfSkseS5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFtfNSgic2VsZWN0aW9uIildKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwic2VsZWN0aW9uIikuYXR0cigiY3Vyc29yIix6UC5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgYj15LnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEobi5oYW5kbGVzLGZ1bmN0aW9uKFIpe3JldHVybiBSLnR5cGV9KTtiLmV4aXQoKS5yZW1vdmUoKSxiLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKFIpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK1IudHlwZX0pLmF0dHIoImN1cnNvciIsZnVuY3Rpb24oUil7cmV0dXJuIHpQW1IudHlwZV19KSx5LmVhY2goYykuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHApLmZpbHRlcihvKS5vbigidG91Y2hzdGFydC5icnVzaCIscCkub24oInRvdWNobW92ZS5icnVzaCIsZykub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixfKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9bC5tb3ZlPWZ1bmN0aW9uKHksTyl7eS5zZWxlY3Rpb24/eS5vbigic3RhcnQuYnJ1c2giLGZ1bmN0aW9uKCl7bSh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydCgpfSkub24oImludGVycnVwdC5icnVzaCBlbmQuYnJ1c2giLGZ1bmN0aW9uKCl7bSh0aGlzLGFyZ3VtZW50cykuZW5kKCl9KS50d2VlbigiYnJ1c2giLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxSPWIuX19icnVzaCxFPW0oYixhcmd1bWVudHMpLGo9Ui5zZWxlY3Rpb24scnQ9bi5pbnB1dCh0eXBlb2YgTz09ImZ1bmN0aW9uIj9PLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpPLFIuZXh0ZW50KSxKPUlQKGoscnQpO2Z1bmN0aW9uIEV0KGp0KXtSLnNlbGVjdGlvbj1qdD09PTEmJnJ0PT09bnVsbD9udWxsOkooanQpLGMuY2FsbChiKSxFLmJydXNoKCl9cmV0dXJuIGohPT1udWxsJiZydCE9PW51bGw/RXQ6RXQoMSl9KTp5LmVhY2goZnVuY3Rpb24oKXt2YXIgYj10aGlzLFI9YXJndW1lbnRzLEU9Yi5fX2JydXNoLGo9bi5pbnB1dCh0eXBlb2YgTz09ImZ1bmN0aW9uIj9PLmFwcGx5KGIsUik6TyxFLmV4dGVudCkscnQ9bShiLFIpLmJlZm9yZXN0YXJ0KCk7ZDEoYiksRS5zZWxlY3Rpb249aj09PW51bGw/bnVsbDpqLGMuY2FsbChiKSxydC5zdGFydCgpLmJydXNoKCkuZW5kKCl9KX0sbC5jbGVhcj1mdW5jdGlvbih5KXtsLm1vdmUoeSxudWxsKX07ZnVuY3Rpb24gYygpe3ZhciB5PUNzKHRoaXMpLE89S0codGhpcykuc2VsZWN0aW9uO08/KHkuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLE9bMF1bMF0pLmF0dHIoInkiLE9bMF1bMV0pLmF0dHIoIndpZHRoIixPWzFdWzBdLU9bMF1bMF0pLmF0dHIoImhlaWdodCIsT1sxXVsxXS1PWzBdWzFdKSx5LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixmdW5jdGlvbihiKXtyZXR1cm4gYi50eXBlW2IudHlwZS5sZW5ndGgtMV09PT0iZSI/T1sxXVswXS1yLzI6T1swXVswXS1yLzJ9KS5hdHRyKCJ5IixmdW5jdGlvbihiKXtyZXR1cm4gYi50eXBlWzBdPT09InMiP09bMV1bMV0tci8yOk9bMF1bMV0tci8yfSkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKGIpe3JldHVybiBiLnR5cGU9PT0ibiJ8fGIudHlwZT09PSJzIj9PWzFdWzBdLU9bMF1bMF0rcjpyfSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbihiKXtyZXR1cm4gYi50eXBlPT09ImUifHxiLnR5cGU9PT0idyI/T1sxXVsxXS1PWzBdWzFdK3I6cn0pKTp5LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gbSh5LE8sYil7dmFyIFI9eS5fX2JydXNoLmVtaXR0ZXI7cmV0dXJuIFImJighYnx8IVIuY2xlYW4pP1I6bmV3IGYoeSxPLGIpfWZ1bmN0aW9uIGYoeSxPLGIpe3RoaXMudGhhdD15LHRoaXMuYXJncz1PLHRoaXMuc3RhdGU9eS5fX2JydXNoLHRoaXMuYWN0aXZlPTAsdGhpcy5jbGVhbj1ifWYucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybisrdGhpcy5hY3RpdmU9PT0xJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZz8odGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpOnRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuLS10aGlzLmFjdGl2ZT09PTAmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oeSl7TUcobmV3IGNmdChsLHksbi5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxhLmFwcGx5LGEsW3ksdGhpcy50aGF0LHRoaXMuYXJnc10pfX07ZnVuY3Rpb24gcCgpe2lmKHMmJiFWby50b3VjaGVzfHwhZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuO3ZhciB5PXRoaXMsTz1Wby50YXJnZXQuX19kYXRhX18udHlwZSxiPShpJiZWby5tZXRhS2V5P089Im92ZXJsYXkiOk8pPT09InNlbGVjdGlvbiI/bWZ0OmkmJlZvLmFsdEtleT95MjpQMixSPW49PT1MNj9udWxsOnA3dFtPXSxFPW49PT1RRz9udWxsOmQ3dFtPXSxqPUtHKHkpLHJ0PWouZXh0ZW50LEo9ai5zZWxlY3Rpb24sRXQ9cnRbMF1bMF0sanQsa3Qsdz1ydFswXVsxXSxVLG50LGx0PXJ0WzFdWzBdLGJ0LG90LHV0PXJ0WzFdWzFdLGd0LFd0LFJ0PTAsR3Q9MCx5ZSxqZT1SJiZFJiZpJiZWby5zaGlmdEtleSxjZSxMdCxQbj1Wby50b3VjaGVzP2Y3dChWby5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyKTpPRyxWZT1Qbih5KSxEZT1WZSxxdD1tKHksYXJndW1lbnRzLCEwKS5iZWZvcmVzdGFydCgpO089PT0ib3ZlcmxheSI/KEomJih5ZT0hMCksai5zZWxlY3Rpb249Sj1bW2p0PW49PT1MNj9FdDpWZVswXSxVPW49PT1RRz93OlZlWzFdXSxbYnQ9bj09PUw2P2x0Omp0LGd0PW49PT1RRz91dDpVXV0pOihqdD1KWzBdWzBdLFU9SlswXVsxXSxidD1KWzFdWzBdLGd0PUpbMV1bMV0pLGt0PWp0LG50PVUsb3Q9YnQsV3Q9Z3Q7dmFyIExlPUNzKHkpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLEhlPUxlLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLHpQW09dKTtpZihWby50b3VjaGVzKXF0Lm1vdmVkPVJlLHF0LmVuZGVkPVVlO2Vsc2V7dmFyIGh0PUNzKFZvLnZpZXcpLm9uKCJtb3VzZW1vdmUuYnJ1c2giLFJlLCEwKS5vbigibW91c2V1cC5icnVzaCIsVWUsITApO2kmJmh0Lm9uKCJrZXlkb3duLmJydXNoIixGZSwhMCkub24oImtleXVwLmJydXNoIixCbiwhMCkseUcoVm8udmlldyl9WkcoKSxkMSh5KSxjLmNhbGwoeSkscXQuc3RhcnQoKTtmdW5jdGlvbiBSZSgpe3ZhciB3bj1Qbih5KTtqZSYmIWNlJiYhTHQmJihNYXRoLmFicyh3blswXS1EZVswXSk+TWF0aC5hYnMod25bMV0tRGVbMV0pP0x0PSEwOmNlPSEwKSxEZT13bix5ZT0hMCxGNigpLGZlKCl9ZnVuY3Rpb24gZmUoKXt2YXIgd247c3dpdGNoKFJ0PURlWzBdLVZlWzBdLEd0PURlWzFdLVZlWzFdLGIpe2Nhc2UgWEc6Y2FzZSBtZnQ6e1ImJihSdD1NYXRoLm1heChFdC1qdCxNYXRoLm1pbihsdC1idCxSdCkpLGt0PWp0K1J0LG90PWJ0K1J0KSxFJiYoR3Q9TWF0aC5tYXgody1VLE1hdGgubWluKHV0LWd0LEd0KSksbnQ9VStHdCxXdD1ndCtHdCk7YnJlYWt9Y2FzZSBQMjp7UjwwPyhSdD1NYXRoLm1heChFdC1qdCxNYXRoLm1pbihsdC1qdCxSdCkpLGt0PWp0K1J0LG90PWJ0KTpSPjAmJihSdD1NYXRoLm1heChFdC1idCxNYXRoLm1pbihsdC1idCxSdCkpLGt0PWp0LG90PWJ0K1J0KSxFPDA/KEd0PU1hdGgubWF4KHctVSxNYXRoLm1pbih1dC1VLEd0KSksbnQ9VStHdCxXdD1ndCk6RT4wJiYoR3Q9TWF0aC5tYXgody1ndCxNYXRoLm1pbih1dC1ndCxHdCkpLG50PVUsV3Q9Z3QrR3QpO2JyZWFrfWNhc2UgeTI6e1ImJihrdD1NYXRoLm1heChFdCxNYXRoLm1pbihsdCxqdC1SdCpSKSksb3Q9TWF0aC5tYXgoRXQsTWF0aC5taW4obHQsYnQrUnQqUikpKSxFJiYobnQ9TWF0aC5tYXgodyxNYXRoLm1pbih1dCxVLUd0KkUpKSxXdD1NYXRoLm1heCh3LE1hdGgubWluKHV0LGd0K0d0KkUpKSk7YnJlYWt9fW90PGt0JiYoUio9LTEsd249anQsanQ9YnQsYnQ9d24sd249a3Qsa3Q9b3Qsb3Q9d24sTyBpbiBwZnQmJkhlLmF0dHIoImN1cnNvciIselBbTz1wZnRbT11dKSksV3Q8bnQmJihFKj0tMSx3bj1VLFU9Z3QsZ3Q9d24sd249bnQsbnQ9V3QsV3Q9d24sTyBpbiBkZnQmJkhlLmF0dHIoImN1cnNvciIselBbTz1kZnRbT11dKSksai5zZWxlY3Rpb24mJihKPWouc2VsZWN0aW9uKSxjZSYmKGt0PUpbMF1bMF0sb3Q9SlsxXVswXSksTHQmJihudD1KWzBdWzFdLFd0PUpbMV1bMV0pLChKWzBdWzBdIT09a3R8fEpbMF1bMV0hPT1udHx8SlsxXVswXSE9PW90fHxKWzFdWzFdIT09V3QpJiYoai5zZWxlY3Rpb249W1trdCxudF0sW290LFd0XV0sYy5jYWxsKHkpLHF0LmJydXNoKCkpfWZ1bmN0aW9uIFVlKCl7aWYoWkcoKSxWby50b3VjaGVzKXtpZihWby50b3VjaGVzLmxlbmd0aClyZXR1cm47cyYmY2xlYXJUaW1lb3V0KHMpLHM9c2V0VGltZW91dChmdW5jdGlvbigpe3M9bnVsbH0sNTAwKX1lbHNlIHhHKFZvLnZpZXcseWUpLGh0Lm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtMZS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLEhlLmF0dHIoImN1cnNvciIselAub3ZlcmxheSksai5zZWxlY3Rpb24mJihKPWouc2VsZWN0aW9uKSxfN3QoSikmJihqLnNlbGVjdGlvbj1udWxsLGMuY2FsbCh5KSkscXQuZW5kKCl9ZnVuY3Rpb24gRmUoKXtzd2l0Y2goVm8ua2V5Q29kZSl7Y2FzZSAxNjp7amU9UiYmRTticmVha31jYXNlIDE4OntiPT09UDImJihSJiYoYnQ9b3QtUnQqUixqdD1rdCtSdCpSKSxFJiYoZ3Q9V3QtR3QqRSxVPW50K0d0KkUpLGI9eTIsZmUoKSk7YnJlYWt9Y2FzZSAzMjp7KGI9PT1QMnx8Yj09PXkyKSYmKFI8MD9idD1vdC1SdDpSPjAmJihqdD1rdC1SdCksRTwwP2d0PVd0LUd0OkU+MCYmKFU9bnQtR3QpLGI9WEcsSGUuYXR0cigiY3Vyc29yIix6UC5zZWxlY3Rpb24pLGZlKCkpO2JyZWFrfWRlZmF1bHQ6cmV0dXJufUY2KCl9ZnVuY3Rpb24gQm4oKXtzd2l0Y2goVm8ua2V5Q29kZSl7Y2FzZSAxNjp7amUmJihjZT1MdD1qZT0hMSxmZSgpKTticmVha31jYXNlIDE4OntiPT09eTImJihSPDA/YnQ9b3Q6Uj4wJiYoanQ9a3QpLEU8MD9ndD1XdDpFPjAmJihVPW50KSxiPVAyLGZlKCkpO2JyZWFrfWNhc2UgMzI6e2I9PT1YRyYmKFZvLmFsdEtleT8oUiYmKGJ0PW90LVJ0KlIsanQ9a3QrUnQqUiksRSYmKGd0PVd0LUd0KkUsVT1udCtHdCpFKSxiPXkyKTooUjwwP2J0PW90OlI+MCYmKGp0PWt0KSxFPDA/Z3Q9V3Q6RT4wJiYoVT1udCksYj1QMiksSGUuYXR0cigiY3Vyc29yIix6UFtPXSksZmUoKSk7YnJlYWt9ZGVmYXVsdDpyZXR1cm59RjYoKX19ZnVuY3Rpb24gZygpe20odGhpcyxhcmd1bWVudHMpLm1vdmVkKCl9ZnVuY3Rpb24gXygpe20odGhpcyxhcmd1bWVudHMpLmVuZGVkKCl9ZnVuY3Rpb24gTSgpe3ZhciB5PXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4geS5leHRlbnQ9SkcodC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHkuZGltPW4seX1yZXR1cm4gbC5leHRlbnQ9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIHk9PSJmdW5jdGlvbiI/eTpINihKRyh5KSksbCk6dH0sbC5maWx0ZXI9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIHk9PSJmdW5jdGlvbiI/eTpINighIXkpLGwpOmV9LGwudG91Y2hhYmxlPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXR5cGVvZiB5PT0iZnVuY3Rpb24iP3k6SDYoISF5KSxsKTpvfSxsLmhhbmRsZVNpemU9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3ksbCk6cn0sbC5rZXlNb2RpZmllcnM9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ISF5LGwpOml9LGwub249ZnVuY3Rpb24oKXt2YXIgeT1hLm9uLmFwcGx5KGEsYXJndW1lbnRzKTtyZXR1cm4geT09PWE/bDp5fSxsfXZhciBnZnQ9TWF0aC5QSSxNN3Q9Z2Z0LzIsYjd0PWdmdCoyO3ZhciBPN3Q9QXJyYXkucHJvdG90eXBlLnNsaWNlO3ZhciB0OT1NYXRoLlBJLGU5PTIqdDksZzE9MWUtNixQN3Q9ZTktZzE7ZnVuY3Rpb24gbjkoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiB1ZnQoKXtyZXR1cm4gbmV3IG45fW45LnByb3RvdHlwZT11ZnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpuOSxtb3ZlVG86ZnVuY3Rpb24obix0KXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K24pKyIsIisodGhpcy5feTA9dGhpcy5feTE9K3QpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl94MSE9PW51bGwmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbihuLHQpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0rdCl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24obix0LGUsbyl7dGhpcy5fKz0iUSIrICtuKyIsIisgK3QrIiwiKyh0aGlzLl94MT0rZSkrIiwiKyh0aGlzLl95MT0rbyl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24obix0LGUsbyxpLGEpe3RoaXMuXys9IkMiKyArbisiLCIrICt0KyIsIisgK2UrIiwiKyArbysiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPSthKX0sYXJjVG86ZnVuY3Rpb24obix0LGUsbyxpKXtuPStuLHQ9K3QsZT0rZSxvPStvLGk9K2k7dmFyIGE9dGhpcy5feDEscj10aGlzLl95MSxzPWUtbixsPW8tdCxjPWEtbixtPXItdCxmPWMqYyttKm07aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKHRoaXMuX3gxPT09bnVsbCl0aGlzLl8rPSJNIisodGhpcy5feDE9bikrIiwiKyh0aGlzLl95MT10KTtlbHNlIGlmKGY+ZzEpaWYoIShNYXRoLmFicyhtKnMtbCpjKT5nMSl8fCFpKXRoaXMuXys9IkwiKyh0aGlzLl94MT1uKSsiLCIrKHRoaXMuX3kxPXQpO2Vsc2V7dmFyIHA9ZS1hLGc9by1yLF89cypzK2wqbCxNPXAqcCtnKmcseT1NYXRoLnNxcnQoXyksTz1NYXRoLnNxcnQoZiksYj1pKk1hdGgudGFuKCh0OS1NYXRoLmFjb3MoKF8rZi1NKS8oMip5Kk8pKSkvMiksUj1iL08sRT1iL3k7TWF0aC5hYnMoUi0xKT5nMSYmKHRoaXMuXys9IkwiKyhuK1IqYykrIiwiKyh0K1IqbSkpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyhtKnA+YypnKSsiLCIrKHRoaXMuX3gxPW4rRSpzKSsiLCIrKHRoaXMuX3kxPXQrRSpsKX19LGFyYzpmdW5jdGlvbihuLHQsZSxvLGksYSl7bj0rbix0PSt0LGU9K2UsYT0hIWE7dmFyIHI9ZSpNYXRoLmNvcyhvKSxzPWUqTWF0aC5zaW4obyksbD1uK3IsYz10K3MsbT0xXmEsZj1hP28taTppLW87aWYoZTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2UpO3RoaXMuX3gxPT09bnVsbD90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5nMXx8TWF0aC5hYnModGhpcy5feTEtYyk+ZzEpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksZSYmKGY8MCYmKGY9ZiVlOStlOSksZj5QN3Q/dGhpcy5fKz0iQSIrZSsiLCIrZSsiLDAsMSwiK20rIiwiKyhuLXIpKyIsIisodC1zKSsiQSIrZSsiLCIrZSsiLDAsMSwiK20rIiwiKyh0aGlzLl94MT1sKSsiLCIrKHRoaXMuX3kxPWMpOmY+ZzEmJih0aGlzLl8rPSJBIitlKyIsIitlKyIsMCwiKyArKGY+PXQ5KSsiLCIrbSsiLCIrKHRoaXMuX3gxPW4rZSpNYXRoLmNvcyhpKSkrIiwiKyh0aGlzLl95MT10K2UqTWF0aC5zaW4oaSkpKSl9LHJlY3Q6ZnVuY3Rpb24obix0LGUsbyl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPStuKSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPSt0KSsiaCIrICtlKyJ2IisgK28rImgiKy1lKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIEM1PXVmdDt2YXIgJHU9IiQiO2Z1bmN0aW9uIEI2KCl7fUI2LnByb3RvdHlwZT1oZnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpCNixoYXM6ZnVuY3Rpb24obil7cmV0dXJuICR1K24gaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzWyR1K25dfSxzZXQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gdGhpc1skdStuXT10LHRoaXN9LHJlbW92ZTpmdW5jdGlvbihuKXt2YXIgdD0kdStuO3JldHVybiB0IGluIHRoaXMmJmRlbGV0ZSB0aGlzW3RdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT0kdSYmZGVsZXRlIHRoaXNbbl19LGtleXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09JHUmJm4ucHVzaCh0LnNsaWNlKDEpKTtyZXR1cm4gbn0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIG49W107Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PSR1JiZuLnB1c2godGhpc1t0XSk7cmV0dXJuIG59LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09JHUmJm4ucHVzaCh7a2V5OnQuc2xpY2UoMSksdmFsdWU6dGhpc1t0XX0pO3JldHVybiBufSxzaXplOmZ1bmN0aW9uKCl7dmFyIG49MDtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09JHUmJisrbjtyZXR1cm4gbn0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIG4gaW4gdGhpcylpZihuWzBdPT09JHUpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PSR1JiZuKHRoaXNbdF0sdC5zbGljZSgxKSx0aGlzKX19O2Z1bmN0aW9uIGhmdChuLHQpe3ZhciBlPW5ldyBCNjtpZihuIGluc3RhbmNlb2YgQjYpbi5lYWNoKGZ1bmN0aW9uKHMsbCl7ZS5zZXQobCxzKX0pO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShuKSl7dmFyIG89LTEsaT1uLmxlbmd0aCxhO2lmKHQ9PW51bGwpZm9yKDsrK288aTspZS5zZXQobyxuW29dKTtlbHNlIGZvcig7KytvPGk7KWUuc2V0KHQoYT1uW29dLG8sbiksYSl9ZWxzZSBpZihuKWZvcih2YXIgciBpbiBuKWUuc2V0KHIsbltyXSk7cmV0dXJuIGV9dmFyIEhQPWhmdDtmdW5jdGlvbiBWNigpe312YXIgdTE9SFAucHJvdG90eXBlO1Y2LnByb3RvdHlwZT15N3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpWNixoYXM6dTEuaGFzLGFkZDpmdW5jdGlvbihuKXtyZXR1cm4gbis9IiIsdGhpc1skdStuXT1uLHRoaXN9LHJlbW92ZTp1MS5yZW1vdmUsY2xlYXI6dTEuY2xlYXIsdmFsdWVzOnUxLmtleXMsc2l6ZTp1MS5zaXplLGVtcHR5OnUxLmVtcHR5LGVhY2g6dTEuZWFjaH07ZnVuY3Rpb24geTd0KG4sdCl7dmFyIGU9bmV3IFY2O2lmKG4gaW5zdGFuY2VvZiBWNiluLmVhY2goZnVuY3Rpb24oYSl7ZS5hZGQoYSl9KTtlbHNlIGlmKG4pe3ZhciBvPS0xLGk9bi5sZW5ndGg7aWYodD09bnVsbClmb3IoOysrbzxpOyllLmFkZChuW29dKTtlbHNlIGZvcig7KytvPGk7KWUuYWRkKHQobltvXSxvLG4pKX1yZXR1cm4gZX12YXIgeDd0PUFycmF5LnByb3RvdHlwZSxfZnQ9eDd0LnNsaWNlO3ZhciBOSGU9TWF0aC5QSSooMy1NYXRoLnNxcnQoNSkpO2Z1bmN0aW9uIE1mdChuKXtyZXR1cm4gTWF0aC5hYnMobj1NYXRoLnJvdW5kKG4pKT49MWUyMT9uLnRvTG9jYWxlU3RyaW5nKCJlbiIpLnJlcGxhY2UoLywvZywiIik6bi50b1N0cmluZygxMCl9ZnVuY3Rpb24gaDEobix0KXtpZigoZT0obj10P24udG9FeHBvbmVudGlhbCh0LTEpOm4udG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIGUsbz1uLnNsaWNlKDAsZSk7cmV0dXJuW28ubGVuZ3RoPjE/b1swXStvLnNsaWNlKDIpOm8sK24uc2xpY2UoZSsxKV19ZnVuY3Rpb24gU08obil7cmV0dXJuIG49aDEoTWF0aC5hYnMobikpLG4/blsxXTpOYU59ZnVuY3Rpb24gYmZ0KG4sdCl7cmV0dXJuIGZ1bmN0aW9uKGUsbyl7Zm9yKHZhciBpPWUubGVuZ3RoLGE9W10scj0wLHM9blswXSxsPTA7aT4wJiZzPjAmJihsK3MrMT5vJiYocz1NYXRoLm1heCgxLG8tbCkpLGEucHVzaChlLnN1YnN0cmluZyhpLT1zLGkrcykpLCEoKGwrPXMrMSk+bykpOylzPW5bcj0ocisxKSVuLmxlbmd0aF07cmV0dXJuIGEucmV2ZXJzZSgpLmpvaW4odCl9fWZ1bmN0aW9uIE9mdChuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihlKXtyZXR1cm4gblsrZV19KX19dmFyIFM3dD0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBieChuKXtpZighKHQ9Uzd0LmV4ZWMobikpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBmb3JtYXQ6ICIrbik7dmFyIHQ7cmV0dXJuIG5ldyBqNih7ZmlsbDp0WzFdLGFsaWduOnRbMl0sc2lnbjp0WzNdLHN5bWJvbDp0WzRdLHplcm86dFs1XSx3aWR0aDp0WzZdLGNvbW1hOnRbN10scHJlY2lzaW9uOnRbOF0mJnRbOF0uc2xpY2UoMSksdHJpbTp0WzldLHR5cGU6dFsxMF19KX1ieC5wcm90b3R5cGU9ajYucHJvdG90eXBlO2Z1bmN0aW9uIGo2KG4pe3RoaXMuZmlsbD1uLmZpbGw9PT12b2lkIDA/IiAiOm4uZmlsbCsiIix0aGlzLmFsaWduPW4uYWxpZ249PT12b2lkIDA/Ij4iOm4uYWxpZ24rIiIsdGhpcy5zaWduPW4uc2lnbj09PXZvaWQgMD8iLSI6bi5zaWduKyIiLHRoaXMuc3ltYm9sPW4uc3ltYm9sPT09dm9pZCAwPyIiOm4uc3ltYm9sKyIiLHRoaXMuemVybz0hIW4uemVybyx0aGlzLndpZHRoPW4ud2lkdGg9PT12b2lkIDA/dm9pZCAwOituLndpZHRoLHRoaXMuY29tbWE9ISFuLmNvbW1hLHRoaXMucHJlY2lzaW9uPW4ucHJlY2lzaW9uPT09dm9pZCAwP3ZvaWQgMDorbi5wcmVjaXNpb24sdGhpcy50cmltPSEhbi50cmltLHRoaXMudHlwZT1uLnR5cGU9PT12b2lkIDA/IiI6bi50eXBlKyIifWo2LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh0aGlzLndpZHRoPT09dm9pZCAwPyIiOk1hdGgubWF4KDEsdGhpcy53aWR0aHwwKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodGhpcy5wcmVjaXNpb249PT12b2lkIDA/IiI6Ii4iK01hdGgubWF4KDAsdGhpcy5wcmVjaXNpb258MCkpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O2Z1bmN0aW9uIFBmdChuKXt0OmZvcih2YXIgdD1uLmxlbmd0aCxlPTEsbz0tMSxpO2U8dDsrK2Upc3dpdGNoKG5bZV0pe2Nhc2UiLiI6bz1pPWU7YnJlYWs7Y2FzZSIwIjpvPT09MCYmKG89ZSksaT1lO2JyZWFrO2RlZmF1bHQ6aWYoIStuW2VdKWJyZWFrIHQ7bz4wJiYobz0wKTticmVha31yZXR1cm4gbz4wP24uc2xpY2UoMCxvKStuLnNsaWNlKGkrMSk6bn12YXIgbzk7ZnVuY3Rpb24geWZ0KG4sdCl7dmFyIGU9aDEobix0KTtpZighZSlyZXR1cm4gbisiIjt2YXIgbz1lWzBdLGk9ZVsxXSxhPWktKG85PU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihpLzMpKSkqMykrMSxyPW8ubGVuZ3RoO3JldHVybiBhPT09cj9vOmE+cj9vK25ldyBBcnJheShhLXIrMSkuam9pbigiMCIpOmE+MD9vLnNsaWNlKDAsYSkrIi4iK28uc2xpY2UoYSk6IjAuIituZXcgQXJyYXkoMS1hKS5qb2luKCIwIikraDEobixNYXRoLm1heCgwLHQrYS0xKSlbMF19ZnVuY3Rpb24gaTkobix0KXt2YXIgZT1oMShuLHQpO2lmKCFlKXJldHVybiBuKyIiO3ZhciBvPWVbMF0saT1lWzFdO3JldHVybiBpPDA/IjAuIituZXcgQXJyYXkoLWkpLmpvaW4oIjAiKStvOm8ubGVuZ3RoPmkrMT9vLnNsaWNlKDAsaSsxKSsiLiIrby5zbGljZShpKzEpOm8rbmV3IEFycmF5KGktby5sZW5ndGgrMikuam9pbigiMCIpfXZhciBhOT17IiUiOmZ1bmN0aW9uKG4sdCl7cmV0dXJuKG4qMTAwKS50b0ZpeGVkKHQpfSxiOmZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKG4pe3JldHVybiBuKyIifSxkOk1mdCxlOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4udG9FeHBvbmVudGlhbCh0KX0sZjpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvRml4ZWQodCl9LGc6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b1ByZWNpc2lvbih0KX0sbzpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZChuKS50b1N0cmluZyg4KX0scDpmdW5jdGlvbihuLHQpe3JldHVybiBpOShuKjEwMCx0KX0scjppOSxzOnlmdCxYOmZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKG4pLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIHI5KG4pe3JldHVybiBufXZhciB4ZnQ9QXJyYXkucHJvdG90eXBlLm1hcCx2ZnQ9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJceEI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gd2Z0KG4pe3ZhciB0PW4uZ3JvdXBpbmc9PT12b2lkIDB8fG4udGhvdXNhbmRzPT09dm9pZCAwP3I5OmJmdCh4ZnQuY2FsbChuLmdyb3VwaW5nLE51bWJlciksbi50aG91c2FuZHMrIiIpLGU9bi5jdXJyZW5jeT09PXZvaWQgMD8iIjpuLmN1cnJlbmN5WzBdKyIiLG89bi5jdXJyZW5jeT09PXZvaWQgMD8iIjpuLmN1cnJlbmN5WzFdKyIiLGk9bi5kZWNpbWFsPT09dm9pZCAwPyIuIjpuLmRlY2ltYWwrIiIsYT1uLm51bWVyYWxzPT09dm9pZCAwP3I5Ok9mdCh4ZnQuY2FsbChuLm51bWVyYWxzLFN0cmluZykpLHI9bi5wZXJjZW50PT09dm9pZCAwPyIlIjpuLnBlcmNlbnQrIiIscz1uLm1pbnVzPT09dm9pZCAwPyItIjpuLm1pbnVzKyIiLGw9bi5uYW49PT12b2lkIDA/Ik5hTiI6bi5uYW4rIiI7ZnVuY3Rpb24gYyhmKXtmPWJ4KGYpO3ZhciBwPWYuZmlsbCxnPWYuYWxpZ24sXz1mLnNpZ24sTT1mLnN5bWJvbCx5PWYuemVybyxPPWYud2lkdGgsYj1mLmNvbW1hLFI9Zi5wcmVjaXNpb24sRT1mLnRyaW0saj1mLnR5cGU7aj09PSJuIj8oYj0hMCxqPSJnIik6YTlbal18fChSPT09dm9pZCAwJiYoUj0xMiksRT0hMCxqPSJnIiksKHl8fHA9PT0iMCImJmc9PT0iPSIpJiYoeT0hMCxwPSIwIixnPSI9Iik7dmFyIHJ0PU09PT0iJCI/ZTpNPT09IiMiJiYvW2JveFhdLy50ZXN0KGopPyIwIitqLnRvTG93ZXJDYXNlKCk6IiIsSj1NPT09IiQiP286L1slcF0vLnRlc3Qoaik/cjoiIixFdD1hOVtqXSxqdD0vW2RlZmdwcnMlXS8udGVzdChqKTtSPVI9PT12b2lkIDA/NjovW2dwcnNdLy50ZXN0KGopP01hdGgubWF4KDEsTWF0aC5taW4oMjEsUikpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsUikpO2Z1bmN0aW9uIGt0KHcpe3ZhciBVPXJ0LG50PUosbHQsYnQsb3Q7aWYoaj09PSJjIiludD1FdCh3KStudCx3PSIiO2Vsc2V7dz0rdzt2YXIgdXQ9dzwwfHwxL3c8MDtpZih3PWlzTmFOKHcpP2w6RXQoTWF0aC5hYnModyksUiksRSYmKHc9UGZ0KHcpKSx1dCYmK3c9PTAmJl8hPT0iKyImJih1dD0hMSksVT0odXQ/Xz09PSIoIj9fOnM6Xz09PSItInx8Xz09PSIoIj8iIjpfKStVLG50PShqPT09InMiP3ZmdFs4K285LzNdOiIiKStudCsodXQmJl89PT0iKCI/IikiOiIiKSxqdCl7Zm9yKGx0PS0xLGJ0PXcubGVuZ3RoOysrbHQ8YnQ7KWlmKG90PXcuY2hhckNvZGVBdChsdCksNDg+b3R8fG90PjU3KXtudD0ob3Q9PT00Nj9pK3cuc2xpY2UobHQrMSk6dy5zbGljZShsdCkpK250LHc9dy5zbGljZSgwLGx0KTticmVha319fWImJiF5JiYodz10KHcsMS8wKSk7dmFyIGd0PVUubGVuZ3RoK3cubGVuZ3RoK250Lmxlbmd0aCxXdD1ndDxPP25ldyBBcnJheShPLWd0KzEpLmpvaW4ocCk6IiI7c3dpdGNoKGImJnkmJih3PXQoV3QrdyxXdC5sZW5ndGg/Ty1udC5sZW5ndGg6MS8wKSxXdD0iIiksZyl7Y2FzZSI8Ijp3PVUrdytudCtXdDticmVhaztjYXNlIj0iOnc9VStXdCt3K250O2JyZWFrO2Nhc2UiXiI6dz1XdC5zbGljZSgwLGd0PVd0Lmxlbmd0aD4+MSkrVSt3K250K1d0LnNsaWNlKGd0KTticmVhaztkZWZhdWx0Onc9V3QrVSt3K250O2JyZWFrfXJldHVybiBhKHcpfXJldHVybiBrdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBmKyIifSxrdH1mdW5jdGlvbiBtKGYscCl7dmFyIGc9YygoZj1ieChmKSxmLnR5cGU9ImYiLGYpKSxfPU1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihTTyhwKS8zKSkpKjMsTT1NYXRoLnBvdygxMCwtXykseT12ZnRbOCtfLzNdO3JldHVybiBmdW5jdGlvbihPKXtyZXR1cm4gZyhNKk8pK3l9fXJldHVybntmb3JtYXQ6Yyxmb3JtYXRQcmVmaXg6bX19dmFyIFU2LE1zLFk2O3M5KHtkZWNpbWFsOiIuIix0aG91c2FuZHM6IiwiLGdyb3VwaW5nOlszXSxjdXJyZW5jeTpbIiQiLCIiXSxtaW51czoiLSJ9KTtmdW5jdGlvbiBzOShuKXtyZXR1cm4gVTY9d2Z0KG4pLE1zPVU2LmZvcm1hdCxZNj1VNi5mb3JtYXRQcmVmaXgsVTZ9ZnVuY3Rpb24gbDkobil7cmV0dXJuIE1hdGgubWF4KDAsLVNPKE1hdGguYWJzKG4pKSl9ZnVuY3Rpb24gYzkobix0KXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoU08odCkvMykpKSozLVNPKE1hdGguYWJzKG4pKSl9ZnVuY3Rpb24gbTkobix0KXtyZXR1cm4gbj1NYXRoLmFicyhuKSx0PU1hdGguYWJzKHQpLW4sTWF0aC5tYXgoMCxTTyh0KS1TTyhuKSkrMX1mdW5jdGlvbiBWMCgpe3JldHVybiBNYXRoLnJhbmRvbSgpfXZhciBSN3Q9ZnVuY3Rpb24gbih0KXtmdW5jdGlvbiBlKG8saSl7cmV0dXJuIG89bz09bnVsbD8wOitvLGk9aT09bnVsbD8xOitpLGFyZ3VtZW50cy5sZW5ndGg9PT0xPyhpPW8sbz0wKTppLT1vLGZ1bmN0aW9uKCl7cmV0dXJuIHQoKSppK299fXJldHVybiBlLnNvdXJjZT1uLGV9KFYwKTt2YXIgZjk9ZnVuY3Rpb24gbih0KXtmdW5jdGlvbiBlKG8saSl7dmFyIGEscjtyZXR1cm4gbz1vPT1udWxsPzA6K28saT1pPT1udWxsPzE6K2ksZnVuY3Rpb24oKXt2YXIgcztpZihhIT1udWxsKXM9YSxhPW51bGw7ZWxzZSBkbyBhPXQoKSoyLTEscz10KCkqMi0xLHI9YSphK3Mqczt3aGlsZSghcnx8cj4xKTtyZXR1cm4gbytpKnMqTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHIpL3IpfX1yZXR1cm4gZS5zb3VyY2U9bixlfShWMCk7dmFyIEU3dD1mdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIGUoKXt2YXIgbz1mOS5zb3VyY2UodCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBNYXRoLmV4cChvKCkpfX1yZXR1cm4gZS5zb3VyY2U9bixlfShWMCk7dmFyIHA5PWZ1bmN0aW9uIG4odCl7ZnVuY3Rpb24gZShvKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGk9MCxhPTA7YTxvOysrYSlpKz10KCk7cmV0dXJuIGl9fXJldHVybiBlLnNvdXJjZT1uLGV9KFYwKTt2YXIgazd0PWZ1bmN0aW9uIG4odCl7ZnVuY3Rpb24gZShvKXt2YXIgaT1wOS5zb3VyY2UodCkobyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkoKS9vfX1yZXR1cm4gZS5zb3VyY2U9bixlfShWMCk7dmFyIE43dD1mdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIGUobyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLU1hdGgubG9nKDEtdCgpKS9vfX1yZXR1cm4gZS5zb3VyY2U9bixlfShWMCk7ZnVuY3Rpb24geG0obix0KXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKG4pO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZSh0KS5kb21haW4obik7YnJlYWt9cmV0dXJuIHRoaXN9dmFyIFNmdD1BcnJheS5wcm90b3R5cGUsYjU9U2Z0Lm1hcCxPeD1TZnQuc2xpY2U7dmFyIGQ5PXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIE81KCl7dmFyIG49SFAoKSx0PVtdLGU9W10sbz1kOTtmdW5jdGlvbiBpKGEpe3ZhciByPWErIiIscz1uLmdldChyKTtpZighcyl7aWYobyE9PWQ5KXJldHVybiBvO24uc2V0KHIscz10LnB1c2goYSkpfXJldHVybiBlWyhzLTEpJWUubGVuZ3RoXX1yZXR1cm4gaS5kb21haW49ZnVuY3Rpb24oYSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQuc2xpY2UoKTt0PVtdLG49SFAoKTtmb3IodmFyIHI9LTEscz1hLmxlbmd0aCxsLGM7KytyPHM7KW4uaGFzKGM9KGw9YVtyXSkrIiIpfHxuLnNldChjLHQucHVzaChsKSk7cmV0dXJuIGl9LGkucmFuZ2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9T3guY2FsbChhKSxpKTplLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hLGkpOm99LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBPNSh0LGUpLnVua25vd24obyl9LHhtLmFwcGx5KGksYXJndW1lbnRzKSxpfWZ1bmN0aW9uIHgyKCl7dmFyIG49TzUoKS51bmtub3duKHZvaWQgMCksdD1uLmRvbWFpbixlPW4ucmFuZ2Usbz1bMCwxXSxpLGEscj0hMSxzPTAsbD0wLGM9LjU7ZGVsZXRlIG4udW5rbm93bjtmdW5jdGlvbiBtKCl7dmFyIGY9dCgpLmxlbmd0aCxwPW9bMV08b1swXSxnPW9bcC0wXSxfPW9bMS1wXTtpPShfLWcpL01hdGgubWF4KDEsZi1zK2wqMiksciYmKGk9TWF0aC5mbG9vcihpKSksZys9KF8tZy1pKihmLXMpKSpjLGE9aSooMS1zKSxyJiYoZz1NYXRoLnJvdW5kKGcpLGE9TWF0aC5yb3VuZChhKSk7dmFyIE09aHgoZikubWFwKGZ1bmN0aW9uKHkpe3JldHVybiBnK2kqeX0pO3JldHVybiBlKHA/TS5yZXZlcnNlKCk6TSl9cmV0dXJuIG4uZG9tYWluPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0KGYpLG0oKSk6dCgpfSxuLnJhbmdlPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPVsrZlswXSwrZlsxXV0sbSgpKTpvLnNsaWNlKCl9LG4ucmFuZ2VSb3VuZD1mdW5jdGlvbihmKXtyZXR1cm4gbz1bK2ZbMF0sK2ZbMV1dLHI9ITAsbSgpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBhfSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sbi5yb3VuZD1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hIWYsbSgpKTpyfSxuLnBhZGRpbmc9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxsPStmKSxtKCkpOnN9LG4ucGFkZGluZ0lubmVyPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsZiksbSgpKTpzfSxuLnBhZGRpbmdPdXRlcj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rZixtKCkpOmx9LG4uYWxpZ249ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLGYpKSxtKCkpOmN9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiB4Mih0KCksbykucm91bmQocikucGFkZGluZ0lubmVyKHMpLnBhZGRpbmdPdXRlcihsKS5hbGlnbihjKX0seG0uYXBwbHkobSgpLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUmZ0KG4pe3ZhciB0PW4uY29weTtyZXR1cm4gbi5wYWRkaW5nPW4ucGFkZGluZ091dGVyLGRlbGV0ZSBuLnBhZGRpbmdJbm5lcixkZWxldGUgbi5wYWRkaW5nT3V0ZXIsbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFJmdCh0KCkpfSxufWZ1bmN0aW9uIHYyKCl7cmV0dXJuIFJmdCh4Mi5hcHBseShudWxsLGFyZ3VtZW50cykucGFkZGluZ0lubmVyKDEpKX1mdW5jdGlvbiBFZnQobil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIGc5KG4pe3JldHVybitufXZhciBrZnQ9WzAsMV07ZnVuY3Rpb24gRWQobil7cmV0dXJuIG59ZnVuY3Rpb24gdTkobix0KXtyZXR1cm4odC09bj0rbik/ZnVuY3Rpb24oZSl7cmV0dXJuKGUtbikvdH06RWZ0KGlzTmFOKHQpP05hTjouNSl9ZnVuY3Rpb24gTmZ0KG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3RoLTFdLG87cmV0dXJuIHQ+ZSYmKG89dCx0PWUsZT1vKSxmdW5jdGlvbihpKXtyZXR1cm4gTWF0aC5tYXgodCxNYXRoLm1pbihlLGkpKX19ZnVuY3Rpb24gVDd0KG4sdCxlKXt2YXIgbz1uWzBdLGk9blsxXSxhPXRbMF0scj10WzFdO3JldHVybiBpPG8/KG89dTkoaSxvKSxhPWUocixhKSk6KG89dTkobyxpKSxhPWUoYSxyKSksZnVuY3Rpb24ocyl7cmV0dXJuIGEobyhzKSl9fWZ1bmN0aW9uIEE3dChuLHQsZSl7dmFyIG89TWF0aC5taW4obi5sZW5ndGgsdC5sZW5ndGgpLTEsaT1uZXcgQXJyYXkobyksYT1uZXcgQXJyYXkobykscj0tMTtmb3IobltvXTxuWzBdJiYobj1uLnNsaWNlKCkucmV2ZXJzZSgpLHQ9dC5zbGljZSgpLnJldmVyc2UoKSk7KytyPG87KWlbcl09dTkobltyXSxuW3IrMV0pLGFbcl09ZSh0W3JdLHRbcisxXSk7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBsPXRiKG4scywxLG8pLTE7cmV0dXJuIGFbbF0oaVtsXShzKSl9fWZ1bmN0aW9uIFB4KG4sdCl7cmV0dXJuIHQuZG9tYWluKG4uZG9tYWluKCkpLnJhbmdlKG4ucmFuZ2UoKSkuaW50ZXJwb2xhdGUobi5pbnRlcnBvbGF0ZSgpKS5jbGFtcChuLmNsYW1wKCkpLnVua25vd24obi51bmtub3duKCkpfWZ1bmN0aW9uIFA1KCl7dmFyIG49a2Z0LHQ9a2Z0LGU9SVAsbyxpLGEscj1FZCxzLGwsYztmdW5jdGlvbiBtKCl7cmV0dXJuIHM9TWF0aC5taW4obi5sZW5ndGgsdC5sZW5ndGgpPjI/QTd0OlQ3dCxsPWM9bnVsbCxmfWZ1bmN0aW9uIGYocCl7cmV0dXJuIGlzTmFOKHA9K3ApP2E6KGx8fChsPXMobi5tYXAobyksdCxlKSkpKG8ocihwKSkpfXJldHVybiBmLmludmVydD1mdW5jdGlvbihwKXtyZXR1cm4gcihpKChjfHwoYz1zKHQsbi5tYXAobyksdmMpKSkocCkpKX0sZi5kb21haW49ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YjUuY2FsbChwLGc5KSxyPT09RWR8fChyPU5mdChuKSksbSgpKTpuLnNsaWNlKCl9LGYucmFuZ2U9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9T3guY2FsbChwKSxtKCkpOnQuc2xpY2UoKX0sZi5yYW5nZVJvdW5kPWZ1bmN0aW9uKHApe3JldHVybiB0PU94LmNhbGwocCksZT1IRyxtKCl9LGYuY2xhbXA9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9cD9OZnQobik6RWQsZik6ciE9PUVkfSxmLmludGVycG9sYXRlPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXAsbSgpKTplfSxmLnVua25vd249ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9cCxmKTphfSxmdW5jdGlvbihwLGcpe3JldHVybiBvPXAsaT1nLG0oKX19ZnVuY3Rpb24geTUobix0KXtyZXR1cm4gUDUoKShuLHQpfWZ1bmN0aW9uIGg5KG4sdCxlLG8pe3ZhciBpPXlPKG4sdCxlKSxhO3N3aXRjaChvPWJ4KG89PW51bGw/IixmIjpvKSxvLnR5cGUpe2Nhc2UicyI6e3ZhciByPU1hdGgubWF4KE1hdGguYWJzKG4pLE1hdGguYWJzKHQpKTtyZXR1cm4gby5wcmVjaXNpb249PW51bGwmJiFpc05hTihhPWM5KGkscikpJiYoby5wcmVjaXNpb249YSksWTYobyxyKX1jYXNlIiI6Y2FzZSJlIjpjYXNlImciOmNhc2UicCI6Y2FzZSJyIjp7by5wcmVjaXNpb249PW51bGwmJiFpc05hTihhPW05KGksTWF0aC5tYXgoTWF0aC5hYnMobiksTWF0aC5hYnModCkpKSkmJihvLnByZWNpc2lvbj1hLShvLnR5cGU9PT0iZSIpKTticmVha31jYXNlImYiOmNhc2UiJSI6e28ucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4oYT1sOShpKSkmJihvLnByZWNpc2lvbj1hLShvLnR5cGU9PT0iJSIpKjIpO2JyZWFrfX1yZXR1cm4gTXMobyl9ZnVuY3Rpb24gXzEobil7dmFyIHQ9bi5kb21haW47cmV0dXJuIG4udGlja3M9ZnVuY3Rpb24oZSl7dmFyIG89dCgpO3JldHVybiBKayhvWzBdLG9bby5sZW5ndGgtMV0sZT09bnVsbD8xMDplKX0sbi50aWNrRm9ybWF0PWZ1bmN0aW9uKGUsbyl7dmFyIGk9dCgpO3JldHVybiBoOShpWzBdLGlbaS5sZW5ndGgtMV0sZT09bnVsbD8xMDplLG8pfSxuLm5pY2U9ZnVuY3Rpb24oZSl7ZT09bnVsbCYmKGU9MTApO3ZhciBvPXQoKSxpPTAsYT1vLmxlbmd0aC0xLHI9b1tpXSxzPW9bYV0sbDtyZXR1cm4gczxyJiYobD1yLHI9cyxzPWwsbD1pLGk9YSxhPWwpLGw9cDIocixzLGUpLGw+MD8ocj1NYXRoLmZsb29yKHIvbCkqbCxzPU1hdGguY2VpbChzL2wpKmwsbD1wMihyLHMsZSkpOmw8MCYmKHI9TWF0aC5jZWlsKHIqbCkvbCxzPU1hdGguZmxvb3IocypsKS9sLGw9cDIocixzLGUpKSxsPjA/KG9baV09TWF0aC5mbG9vcihyL2wpKmwsb1thXT1NYXRoLmNlaWwocy9sKSpsLHQobykpOmw8MCYmKG9baV09TWF0aC5jZWlsKHIqbCkvbCxvW2FdPU1hdGguZmxvb3IocypsKS9sLHQobykpLG59LG59ZnVuY3Rpb24gc2woKXt2YXIgbj15NShFZCxFZCk7cmV0dXJuIG4uY29weT1mdW5jdGlvbigpe3JldHVybiBQeChuLHNsKCkpfSx4bS5hcHBseShuLGFyZ3VtZW50cyksXzEobil9ZnVuY3Rpb24gRzYobix0KXtuPW4uc2xpY2UoKTt2YXIgZT0wLG89bi5sZW5ndGgtMSxpPW5bZV0sYT1uW29dLHI7cmV0dXJuIGE8aSYmKHI9ZSxlPW8sbz1yLHI9aSxpPWEsYT1yKSxuW2VdPXQuZmxvb3IoaSksbltvXT10LmNlaWwoYSksbn1mdW5jdGlvbiBUZnQobil7cmV0dXJuIE1hdGgubG9nKG4pfWZ1bmN0aW9uIEFmdChuKXtyZXR1cm4gTWF0aC5leHAobil9ZnVuY3Rpb24gRDd0KG4pe3JldHVybi1NYXRoLmxvZygtbil9ZnVuY3Rpb24gSTd0KG4pe3JldHVybi1NYXRoLmV4cCgtbil9ZnVuY3Rpb24gejd0KG4pe3JldHVybiBpc0Zpbml0ZShuKT8rKCIxZSIrbik6bjwwPzA6bn1mdW5jdGlvbiBIN3Qobil7cmV0dXJuIG49PT0xMD96N3Q6bj09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5wb3cobix0KX19ZnVuY3Rpb24gRjd0KG4pe3JldHVybiBuPT09TWF0aC5FP01hdGgubG9nOm49PT0xMCYmTWF0aC5sb2cxMHx8bj09PTImJk1hdGgubG9nMnx8KG49TWF0aC5sb2cobiksZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL259KX1mdW5jdGlvbiBEZnQobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybi1uKC10KX19ZnVuY3Rpb24gXzkobil7dmFyIHQ9bihUZnQsQWZ0KSxlPXQuZG9tYWluLG89MTAsaSxhO2Z1bmN0aW9uIHIoKXtyZXR1cm4gaT1GN3QobyksYT1IN3QobyksZSgpWzBdPDA/KGk9RGZ0KGkpLGE9RGZ0KGEpLG4oRDd0LEk3dCkpOm4oVGZ0LEFmdCksdH1yZXR1cm4gdC5iYXNlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPStzLHIoKSk6b30sdC5kb21haW49ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUocykscigpKTplKCl9LHQudGlja3M9ZnVuY3Rpb24ocyl7dmFyIGw9ZSgpLGM9bFswXSxtPWxbbC5sZW5ndGgtMV0sZjsoZj1tPGMpJiYocD1jLGM9bSxtPXApO3ZhciBwPWkoYyksZz1pKG0pLF8sTSx5LE89cz09bnVsbD8xMDorcyxiPVtdO2lmKCEobyUxKSYmZy1wPE8pe2lmKHA9TWF0aC5yb3VuZChwKS0xLGc9TWF0aC5yb3VuZChnKSsxLGM+MCl7Zm9yKDtwPGc7KytwKWZvcihNPTEsXz1hKHApO008bzsrK00paWYoeT1fKk0sISh5PGMpKXtpZih5Pm0pYnJlYWs7Yi5wdXNoKHkpfX1lbHNlIGZvcig7cDxnOysrcClmb3IoTT1vLTEsXz1hKHApO00+PTE7LS1NKWlmKHk9XypNLCEoeTxjKSl7aWYoeT5tKWJyZWFrO2IucHVzaCh5KX19ZWxzZSBiPUprKHAsZyxNYXRoLm1pbihnLXAsTykpLm1hcChhKTtyZXR1cm4gZj9iLnJldmVyc2UoKTpifSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24ocyxsKXtpZihsPT1udWxsJiYobD1vPT09MTA/Ii4wZSI6IiwiKSx0eXBlb2YgbCE9ImZ1bmN0aW9uIiYmKGw9TXMobCkpLHM9PT0xLzApcmV0dXJuIGw7cz09bnVsbCYmKHM9MTApO3ZhciBjPU1hdGgubWF4KDEsbypzL3QudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbihtKXt2YXIgZj1tL2EoTWF0aC5yb3VuZChpKG0pKSk7cmV0dXJuIGYqbzxvLS41JiYoZio9byksZjw9Yz9sKG0pOiIifX0sdC5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIGUoRzYoZSgpLHtmbG9vcjpmdW5jdGlvbihzKXtyZXR1cm4gYShNYXRoLmZsb29yKGkocykpKX0sY2VpbDpmdW5jdGlvbihzKXtyZXR1cm4gYShNYXRoLmNlaWwoaShzKSkpfX0pKX0sdH1mdW5jdGlvbiB4NSgpe3ZhciBuPV85KFA1KCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiBuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUHgobix4NSgpKS5iYXNlKG4uYmFzZSgpKX0seG0uYXBwbHkobixhcmd1bWVudHMpLG59dmFyIEM5PW5ldyBEYXRlLE05PW5ldyBEYXRlO2Z1bmN0aW9uIE5hKG4sdCxlLG8pe2Z1bmN0aW9uIGkoYSl7cmV0dXJuIG4oYT1hcmd1bWVudHMubGVuZ3RoPT09MD9uZXcgRGF0ZTpuZXcgRGF0ZSgrYSkpLGF9cmV0dXJuIGkuZmxvb3I9ZnVuY3Rpb24oYSl7cmV0dXJuIG4oYT1uZXcgRGF0ZSgrYSkpLGF9LGkuY2VpbD1mdW5jdGlvbihhKXtyZXR1cm4gbihhPW5ldyBEYXRlKGEtMSkpLHQoYSwxKSxuKGEpLGF9LGkucm91bmQ9ZnVuY3Rpb24oYSl7dmFyIHI9aShhKSxzPWkuY2VpbChhKTtyZXR1cm4gYS1yPHMtYT9yOnN9LGkub2Zmc2V0PWZ1bmN0aW9uKGEscil7cmV0dXJuIHQoYT1uZXcgRGF0ZSgrYSkscj09bnVsbD8xOk1hdGguZmxvb3IocikpLGF9LGkucmFuZ2U9ZnVuY3Rpb24oYSxyLHMpe3ZhciBsPVtdLGM7aWYoYT1pLmNlaWwoYSkscz1zPT1udWxsPzE6TWF0aC5mbG9vcihzKSwhKGE8cil8fCEocz4wKSlyZXR1cm4gbDtkbyBsLnB1c2goYz1uZXcgRGF0ZSgrYSkpLHQoYSxzKSxuKGEpO3doaWxlKGM8YSYmYTxyKTtyZXR1cm4gbH0saS5maWx0ZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIE5hKGZ1bmN0aW9uKHIpe2lmKHI+PXIpZm9yKDtuKHIpLCFhKHIpOylyLnNldFRpbWUoci0xKX0sZnVuY3Rpb24ocixzKXtpZihyPj1yKWlmKHM8MClmb3IoOysrczw9MDspZm9yKDt0KHIsLTEpLCFhKHIpOyk7ZWxzZSBmb3IoOy0tcz49MDspZm9yKDt0KHIsMSksIWEocik7KTt9KX0sZSYmKGkuY291bnQ9ZnVuY3Rpb24oYSxyKXtyZXR1cm4gQzkuc2V0VGltZSgrYSksTTkuc2V0VGltZSgrciksbihDOSksbihNOSksTWF0aC5mbG9vcihlKEM5LE05KSl9LGkuZXZlcnk9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9TWF0aC5mbG9vcihhKSwhaXNGaW5pdGUoYSl8fCEoYT4wKT9udWxsOmE+MT9pLmZpbHRlcihvP2Z1bmN0aW9uKHIpe3JldHVybiBvKHIpJWE9PT0wfTpmdW5jdGlvbihyKXtyZXR1cm4gaS5jb3VudCgwLHIpJWE9PT0wfSk6aX0pLGl9dmFyIFc2PU5hKGZ1bmN0aW9uKCl7fSxmdW5jdGlvbihuLHQpe24uc2V0VGltZSgrbit0KX0sZnVuY3Rpb24obix0KXtyZXR1cm4gdC1ufSk7VzYuZXZlcnk9ZnVuY3Rpb24obil7cmV0dXJuIG49TWF0aC5mbG9vcihuKSwhaXNGaW5pdGUobil8fCEobj4wKT9udWxsOm4+MT9OYShmdW5jdGlvbih0KXt0LnNldFRpbWUoTWF0aC5mbG9vcih0L24pKm4pfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKm4pfSxmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL259KTpXNn07dmFyIHE2PVc2LElmdD1XNi5yYW5nZTt2YXIgQzE9MWUzLEZQPTZlNCxiOT0zNmU1LFo2PTg2NGU1LFg2PTYwNDhlNTt2YXIgemZ0PU5hKGZ1bmN0aW9uKG4pe24uc2V0VGltZShuLW4uZ2V0TWlsbGlzZWNvbmRzKCkpfSxmdW5jdGlvbihuLHQpe24uc2V0VGltZSgrbit0KkMxKX0sZnVuY3Rpb24obix0KXtyZXR1cm4odC1uKS9DMX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDU2Vjb25kcygpfSksUTY9emZ0LEhmdD16ZnQucmFuZ2U7dmFyIEZmdD1OYShmdW5jdGlvbihuKXtuLnNldFRpbWUobi1uLmdldE1pbGxpc2Vjb25kcygpLW4uZ2V0U2Vjb25kcygpKkMxKX0sZnVuY3Rpb24obix0KXtuLnNldFRpbWUoK24rdCpGUCl9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuKHQtbikvRlB9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1pbnV0ZXMoKX0pLE85PUZmdCxMN3Q9RmZ0LnJhbmdlO3ZhciBMZnQ9TmEoZnVuY3Rpb24obil7bi5zZXRUaW1lKG4tbi5nZXRNaWxsaXNlY29uZHMoKS1uLmdldFNlY29uZHMoKSpDMS1uLmdldE1pbnV0ZXMoKSpGUCl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKCtuK3QqYjkpfSxmdW5jdGlvbihuLHQpe3JldHVybih0LW4pL2I5fSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRIb3VycygpfSksUDk9TGZ0LEI3dD1MZnQucmFuZ2U7dmFyIEJmdD1OYShmdW5jdGlvbihuKXtuLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSt0KX0sZnVuY3Rpb24obix0KXtyZXR1cm4odC1uLSh0LmdldFRpbWV6b25lT2Zmc2V0KCktbi5nZXRUaW1lem9uZU9mZnNldCgpKSpGUCkvWjZ9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldERhdGUoKS0xfSksdzI9QmZ0LFY3dD1CZnQucmFuZ2U7ZnVuY3Rpb24gTTEobil7cmV0dXJuIE5hKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSh0LmdldERhdGUoKS0odC5nZXREYXkoKSs3LW4pJTcpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UqNyl9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqRlApL1g2fSl9dmFyIGIxPU0xKDApLFMyPU0xKDEpLFZmdD1NMSgyKSxqZnQ9TTEoMykseXg9TTEoNCksVWZ0PU0xKDUpLFlmdD1NMSg2KSxHZnQ9YjEucmFuZ2Usajd0PVMyLnJhbmdlLFU3dD1WZnQucmFuZ2UsWTd0PWpmdC5yYW5nZSxHN3Q9eXgucmFuZ2UsVzd0PVVmdC5yYW5nZSxxN3Q9WWZ0LnJhbmdlO3ZhciBXZnQ9TmEoZnVuY3Rpb24obil7bi5zZXREYXRlKDEpLG4uc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRNb250aChuLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQuZ2V0TW9udGgoKS1uLmdldE1vbnRoKCkrKHQuZ2V0RnVsbFllYXIoKS1uLmdldEZ1bGxZZWFyKCkpKjEyfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNb250aCgpfSkseTk9V2Z0LFo3dD1XZnQucmFuZ2U7dmFyIHg5PU5hKGZ1bmN0aW9uKG4pe24uc2V0TW9udGgoMCwxKSxuLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihuLHQpe24uc2V0RnVsbFllYXIobi5nZXRGdWxsWWVhcigpK3QpfSxmdW5jdGlvbihuLHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCktbi5nZXRGdWxsWWVhcigpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRGdWxsWWVhcigpfSk7eDkuZXZlcnk9ZnVuY3Rpb24obil7cmV0dXJuIWlzRmluaXRlKG49TWF0aC5mbG9vcihuKSl8fCEobj4wKT9udWxsOk5hKGZ1bmN0aW9uKHQpe3Quc2V0RnVsbFllYXIoTWF0aC5mbG9vcih0LmdldEZ1bGxZZWFyKCkvbikqbiksdC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSpuKX0pfTt2YXIgTFA9eDksWDd0PXg5LnJhbmdlO3ZhciBxZnQ9TmEoZnVuY3Rpb24obil7bi5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24obix0KXtuLnNldFVUQ0RhdGUobi5nZXRVVENEYXRlKCkrdCl9LGZ1bmN0aW9uKG4sdCl7cmV0dXJuKHQtbikvWjZ9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ0RhdGUoKS0xfSksSzY9cWZ0LFE3dD1xZnQucmFuZ2U7ZnVuY3Rpb24gTzEobil7cmV0dXJuIE5hKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKS0odC5nZXRVVENEYXkoKSs3LW4pJTcpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UqNyl9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvWDZ9KX12YXIgdjU9TzEoMCksUjI9TzEoMSksWmZ0PU8xKDIpLFhmdD1PMSgzKSx4eD1PMSg0KSxRZnQ9TzEoNSksS2Z0PU8xKDYpLEpmdD12NS5yYW5nZSxLN3Q9UjIucmFuZ2UsSjd0PVpmdC5yYW5nZSwkN3Q9WGZ0LnJhbmdlLHRMdD14eC5yYW5nZSxlTHQ9UWZ0LnJhbmdlLG5MdD1LZnQucmFuZ2U7dmFyIHY5PU5hKGZ1bmN0aW9uKG4pe24uc2V0VVRDTW9udGgoMCwxKSxuLnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihuLHQpe24uc2V0VVRDRnVsbFllYXIobi5nZXRVVENGdWxsWWVhcigpK3QpfSxmdW5jdGlvbihuLHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCktbi5nZXRVVENGdWxsWWVhcigpfSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENGdWxsWWVhcigpfSk7djkuZXZlcnk9ZnVuY3Rpb24obil7cmV0dXJuIWlzRmluaXRlKG49TWF0aC5mbG9vcihuKSl8fCEobj4wKT9udWxsOk5hKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcih0LmdldFVUQ0Z1bGxZZWFyKCkvbikqbiksdC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSpuKX0pfTt2YXIgUDE9djksb0x0PXY5LnJhbmdlO2Z1bmN0aW9uIHc5KG4pe2lmKDA8PW4ueSYmbi55PDEwMCl7dmFyIHQ9bmV3IERhdGUoLTEsbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpO3JldHVybiB0LnNldEZ1bGxZZWFyKG4ueSksdH1yZXR1cm4gbmV3IERhdGUobi55LG4ubSxuLmQsbi5ILG4uTSxuLlMsbi5MKX1mdW5jdGlvbiBTOShuKXtpZigwPD1uLnkmJm4ueTwxMDApe3ZhciB0PW5ldyBEYXRlKERhdGUuVVRDKC0xLG4ubSxuLmQsbi5ILG4uTSxuLlMsbi5MKSk7cmV0dXJuIHQuc2V0VVRDRnVsbFllYXIobi55KSx0fXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyhuLnksbi5tLG4uZCxuLkgsbi5NLG4uUyxuLkwpKX1mdW5jdGlvbiB3NShuLHQsZSl7cmV0dXJue3k6bixtOnQsZDplLEg6MCxNOjAsUzowLEw6MH19ZnVuY3Rpb24gUjkobil7dmFyIHQ9bi5kYXRlVGltZSxlPW4uZGF0ZSxvPW4udGltZSxpPW4ucGVyaW9kcyxhPW4uZGF5cyxyPW4uc2hvcnREYXlzLHM9bi5tb250aHMsbD1uLnNob3J0TW9udGhzLGM9UzUoaSksbT1SNShpKSxmPVM1KGEpLHA9UjUoYSksZz1TNShyKSxfPVI1KHIpLE09UzUocykseT1SNShzKSxPPVM1KGwpLGI9UjUobCksUj17YTp1dCxBOmd0LGI6V3QsQjpSdCxjOm51bGwsZDppcHQsZTppcHQsZjp3THQsZzp6THQsRzpGTHQsSDp5THQsSTp4THQsajp2THQsTDpjcHQsbTpTTHQsTTpSTHQscDpHdCxxOnllLFE6c3B0LHM6bHB0LFM6RUx0LHU6a0x0LFU6Tkx0LFY6VEx0LHc6QUx0LFc6REx0LHg6bnVsbCxYOm51bGwseTpJTHQsWTpITHQsWjpMTHQsIiUiOnJwdH0sRT17YTpqZSxBOmNlLGI6THQsQjpQbixjOm51bGwsZDphcHQsZTphcHQsZjpVTHQsZzokTHQsRzplOHQsSDpCTHQsSTpWTHQsajpqTHQsTDpmcHQsbTpZTHQsTTpHTHQscDpWZSxxOkRlLFE6c3B0LHM6bHB0LFM6V0x0LHU6cUx0LFU6Wkx0LFY6WEx0LHc6UUx0LFc6S0x0LHg6bnVsbCxYOm51bGwseTpKTHQsWTp0OHQsWjpuOHQsIiUiOnJwdH0saj17YTprdCxBOncsYjpVLEI6bnQsYzpsdCxkOm5wdCxlOm5wdCxmOk1MdCxnOmVwdCxHOnRwdCxIOm9wdCxJOm9wdCxqOnVMdCxMOkNMdCxtOmdMdCxNOmhMdCxwOmp0LHE6ZEx0LFE6T0x0LHM6UEx0LFM6X0x0LHU6bEx0LFU6Y0x0LFY6bUx0LHc6c0x0LFc6Zkx0LHg6YnQsWDpvdCx5OmVwdCxZOnRwdCxaOnBMdCwiJSI6Ykx0fTtSLng9cnQoZSxSKSxSLlg9cnQobyxSKSxSLmM9cnQodCxSKSxFLng9cnQoZSxFKSxFLlg9cnQobyxFKSxFLmM9cnQodCxFKTtmdW5jdGlvbiBydChxdCxMZSl7cmV0dXJuIGZ1bmN0aW9uKEhlKXt2YXIgaHQ9W10sUmU9LTEsZmU9MCxVZT1xdC5sZW5ndGgsRmUsQm4sd247Zm9yKEhlIGluc3RhbmNlb2YgRGF0ZXx8KEhlPW5ldyBEYXRlKCtIZSkpOysrUmU8VWU7KXF0LmNoYXJDb2RlQXQoUmUpPT09MzcmJihodC5wdXNoKHF0LnNsaWNlKGZlLFJlKSksKEJuPSRmdFtGZT1xdC5jaGFyQXQoKytSZSldKSE9bnVsbD9GZT1xdC5jaGFyQXQoKytSZSk6Qm49RmU9PT0iZSI/IiAiOiIwIiwod249TGVbRmVdKSYmKEZlPXduKEhlLEJuKSksaHQucHVzaChGZSksZmU9UmUrMSk7cmV0dXJuIGh0LnB1c2gocXQuc2xpY2UoZmUsUmUpKSxodC5qb2luKCIiKX19ZnVuY3Rpb24gSihxdCxMZSl7cmV0dXJuIGZ1bmN0aW9uKEhlKXt2YXIgaHQ9dzUoMTkwMCx2b2lkIDAsMSksUmU9RXQoaHQscXQsSGUrPSIiLDApLGZlLFVlO2lmKFJlIT1IZS5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gaHQpcmV0dXJuIG5ldyBEYXRlKGh0LlEpO2lmKCJzImluIGh0KXJldHVybiBuZXcgRGF0ZShodC5zKjFlMysoIkwiaW4gaHQ/aHQuTDowKSk7aWYoTGUmJiEoIloiaW4gaHQpJiYoaHQuWj0wKSwicCJpbiBodCYmKGh0Lkg9aHQuSCUxMitodC5wKjEyKSxodC5tPT09dm9pZCAwJiYoaHQubT0icSJpbiBodD9odC5xOjApLCJWImluIGh0KXtpZihodC5WPDF8fGh0LlY+NTMpcmV0dXJuIG51bGw7InciaW4gaHR8fChodC53PTEpLCJaImluIGh0PyhmZT1TOSh3NShodC55LDAsMSkpLFVlPWZlLmdldFVUQ0RheSgpLGZlPVVlPjR8fFVlPT09MD9SMi5jZWlsKGZlKTpSMihmZSksZmU9SzYub2Zmc2V0KGZlLChodC5WLTEpKjcpLGh0Lnk9ZmUuZ2V0VVRDRnVsbFllYXIoKSxodC5tPWZlLmdldFVUQ01vbnRoKCksaHQuZD1mZS5nZXRVVENEYXRlKCkrKGh0LncrNiklNyk6KGZlPXc5KHc1KGh0LnksMCwxKSksVWU9ZmUuZ2V0RGF5KCksZmU9VWU+NHx8VWU9PT0wP1MyLmNlaWwoZmUpOlMyKGZlKSxmZT13Mi5vZmZzZXQoZmUsKGh0LlYtMSkqNyksaHQueT1mZS5nZXRGdWxsWWVhcigpLGh0Lm09ZmUuZ2V0TW9udGgoKSxodC5kPWZlLmdldERhdGUoKSsoaHQudys2KSU3KX1lbHNlKCJXImluIGh0fHwiVSJpbiBodCkmJigidyJpbiBodHx8KGh0Lnc9InUiaW4gaHQ/aHQudSU3OiJXImluIGh0PzE6MCksVWU9IloiaW4gaHQ/UzkodzUoaHQueSwwLDEpKS5nZXRVVENEYXkoKTp3OSh3NShodC55LDAsMSkpLmdldERheSgpLGh0Lm09MCxodC5kPSJXImluIGh0PyhodC53KzYpJTcraHQuVyo3LShVZSs1KSU3Omh0LncraHQuVSo3LShVZSs2KSU3KTtyZXR1cm4iWiJpbiBodD8oaHQuSCs9aHQuWi8xMDB8MCxodC5NKz1odC5aJTEwMCxTOShodCkpOnc5KGh0KX19ZnVuY3Rpb24gRXQocXQsTGUsSGUsaHQpe2Zvcih2YXIgUmU9MCxmZT1MZS5sZW5ndGgsVWU9SGUubGVuZ3RoLEZlLEJuO1JlPGZlOyl7aWYoaHQ+PVVlKXJldHVybi0xO2lmKEZlPUxlLmNoYXJDb2RlQXQoUmUrKyksRmU9PT0zNyl7aWYoRmU9TGUuY2hhckF0KFJlKyspLEJuPWpbRmUgaW4gJGZ0P0xlLmNoYXJBdChSZSsrKTpGZV0sIUJufHwoaHQ9Qm4ocXQsSGUsaHQpKTwwKXJldHVybi0xfWVsc2UgaWYoRmUhPUhlLmNoYXJDb2RlQXQoaHQrKykpcmV0dXJuLTF9cmV0dXJuIGh0fWZ1bmN0aW9uIGp0KHF0LExlLEhlKXt2YXIgaHQ9Yy5leGVjKExlLnNsaWNlKEhlKSk7cmV0dXJuIGh0PyhxdC5wPW1baHRbMF0udG9Mb3dlckNhc2UoKV0sSGUraHRbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBrdChxdCxMZSxIZSl7dmFyIGh0PWcuZXhlYyhMZS5zbGljZShIZSkpO3JldHVybiBodD8ocXQudz1fW2h0WzBdLnRvTG93ZXJDYXNlKCldLEhlK2h0WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdyhxdCxMZSxIZSl7dmFyIGh0PWYuZXhlYyhMZS5zbGljZShIZSkpO3JldHVybiBodD8ocXQudz1wW2h0WzBdLnRvTG93ZXJDYXNlKCldLEhlK2h0WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVShxdCxMZSxIZSl7dmFyIGh0PU8uZXhlYyhMZS5zbGljZShIZSkpO3JldHVybiBodD8ocXQubT1iW2h0WzBdLnRvTG93ZXJDYXNlKCldLEhlK2h0WzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbnQocXQsTGUsSGUpe3ZhciBodD1NLmV4ZWMoTGUuc2xpY2UoSGUpKTtyZXR1cm4gaHQ/KHF0Lm09eVtodFswXS50b0xvd2VyQ2FzZSgpXSxIZStodFswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGx0KHF0LExlLEhlKXtyZXR1cm4gRXQocXQsdCxMZSxIZSl9ZnVuY3Rpb24gYnQocXQsTGUsSGUpe3JldHVybiBFdChxdCxlLExlLEhlKX1mdW5jdGlvbiBvdChxdCxMZSxIZSl7cmV0dXJuIEV0KHF0LG8sTGUsSGUpfWZ1bmN0aW9uIHV0KHF0KXtyZXR1cm4gcltxdC5nZXREYXkoKV19ZnVuY3Rpb24gZ3QocXQpe3JldHVybiBhW3F0LmdldERheSgpXX1mdW5jdGlvbiBXdChxdCl7cmV0dXJuIGxbcXQuZ2V0TW9udGgoKV19ZnVuY3Rpb24gUnQocXQpe3JldHVybiBzW3F0LmdldE1vbnRoKCldfWZ1bmN0aW9uIEd0KHF0KXtyZXR1cm4gaVsrKHF0LmdldEhvdXJzKCk+PTEyKV19ZnVuY3Rpb24geWUocXQpe3JldHVybiAxK35+KHF0LmdldE1vbnRoKCkvMyl9ZnVuY3Rpb24gamUocXQpe3JldHVybiByW3F0LmdldFVUQ0RheSgpXX1mdW5jdGlvbiBjZShxdCl7cmV0dXJuIGFbcXQuZ2V0VVRDRGF5KCldfWZ1bmN0aW9uIEx0KHF0KXtyZXR1cm4gbFtxdC5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBQbihxdCl7cmV0dXJuIHNbcXQuZ2V0VVRDTW9udGgoKV19ZnVuY3Rpb24gVmUocXQpe3JldHVybiBpWysocXQuZ2V0VVRDSG91cnMoKT49MTIpXX1mdW5jdGlvbiBEZShxdCl7cmV0dXJuIDErfn4ocXQuZ2V0VVRDTW9udGgoKS8zKX1yZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKHF0KXt2YXIgTGU9cnQocXQrPSIiLFIpO3JldHVybiBMZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBxdH0sTGV9LHBhcnNlOmZ1bmN0aW9uKHF0KXt2YXIgTGU9SihxdCs9IiIsITEpO3JldHVybiBMZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBxdH0sTGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbihxdCl7dmFyIExlPXJ0KHF0Kz0iIixFKTtyZXR1cm4gTGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gcXR9LExlfSx1dGNQYXJzZTpmdW5jdGlvbihxdCl7dmFyIExlPUoocXQrPSIiLCEwKTtyZXR1cm4gTGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gcXR9LExlfX19dmFyICRmdD17Ii0iOiIiLF86IiAiLDA6IjAifSxUbD0vXlxzKlxkKy8saUx0PS9eJS8sYUx0PS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiBIaShuLHQsZSl7dmFyIG89bjwwPyItIjoiIixpPShvPy1uOm4pKyIiLGE9aS5sZW5ndGg7cmV0dXJuIG8rKGE8ZT9uZXcgQXJyYXkoZS1hKzEpLmpvaW4odCkraTppKX1mdW5jdGlvbiByTHQobil7cmV0dXJuIG4ucmVwbGFjZShhTHQsIlxcJCYiKX1mdW5jdGlvbiBTNShuKXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrbi5tYXAockx0KS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gUjUobil7Zm9yKHZhciB0PXt9LGU9LTEsbz1uLmxlbmd0aDsrK2U8bzspdFtuW2VdLnRvTG93ZXJDYXNlKCldPWU7cmV0dXJuIHR9ZnVuY3Rpb24gc0x0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSxlKzEpKTtyZXR1cm4gbz8obi53PStvWzBdLGUrb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGxMdChuLHQsZSl7dmFyIG89VGwuZXhlYyh0LnNsaWNlKGUsZSsxKSk7cmV0dXJuIG8/KG4udT0rb1swXSxlK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBjTHQobix0LGUpe3ZhciBvPVRsLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBvPyhuLlU9K29bMF0sZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbUx0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gbz8obi5WPStvWzBdLGUrb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGZMdChuLHQsZSl7dmFyIG89VGwuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIG8/KG4uVz0rb1swXSxlK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB0cHQobix0LGUpe3ZhciBvPVRsLmV4ZWModC5zbGljZShlLGUrNCkpO3JldHVybiBvPyhuLnk9K29bMF0sZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZXB0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gbz8obi55PStvWzBdKygrb1swXT42OD8xOTAwOjJlMyksZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gcEx0KG4sdCxlKXt2YXIgbz0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyh0LnNsaWNlKGUsZSs2KSk7cmV0dXJuIG8/KG4uWj1vWzFdPzA6LShvWzJdKyhvWzNdfHwiMDAiKSksZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZEx0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSxlKzEpKTtyZXR1cm4gbz8obi5xPW9bMF0qMy0zLGUrb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGdMdChuLHQsZSl7dmFyIG89VGwuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIG8/KG4ubT1vWzBdLTEsZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbnB0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gbz8obi5kPStvWzBdLGUrb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHVMdChuLHQsZSl7dmFyIG89VGwuZXhlYyh0LnNsaWNlKGUsZSszKSk7cmV0dXJuIG8/KG4ubT0wLG4uZD0rb1swXSxlK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvcHQobix0LGUpe3ZhciBvPVRsLmV4ZWModC5zbGljZShlLGUrMikpO3JldHVybiBvPyhuLkg9K29bMF0sZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaEx0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSxlKzIpKTtyZXR1cm4gbz8obi5NPStvWzBdLGUrb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIF9MdChuLHQsZSl7dmFyIG89VGwuZXhlYyh0LnNsaWNlKGUsZSsyKSk7cmV0dXJuIG8/KG4uUz0rb1swXSxlK29bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBDTHQobix0LGUpe3ZhciBvPVRsLmV4ZWModC5zbGljZShlLGUrMykpO3JldHVybiBvPyhuLkw9K29bMF0sZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTUx0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSxlKzYpKTtyZXR1cm4gbz8obi5MPU1hdGguZmxvb3Iob1swXS8xZTMpLGUrb1swXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGJMdChuLHQsZSl7dmFyIG89aUx0LmV4ZWModC5zbGljZShlLGUrMSkpO3JldHVybiBvP2Urb1swXS5sZW5ndGg6LTF9ZnVuY3Rpb24gT0x0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSkpO3JldHVybiBvPyhuLlE9K29bMF0sZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUEx0KG4sdCxlKXt2YXIgbz1UbC5leGVjKHQuc2xpY2UoZSkpO3JldHVybiBvPyhuLnM9K29bMF0sZStvWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaXB0KG4sdCl7cmV0dXJuIEhpKG4uZ2V0RGF0ZSgpLHQsMil9ZnVuY3Rpb24geUx0KG4sdCl7cmV0dXJuIEhpKG4uZ2V0SG91cnMoKSx0LDIpfWZ1bmN0aW9uIHhMdChuLHQpe3JldHVybiBIaShuLmdldEhvdXJzKCklMTJ8fDEyLHQsMil9ZnVuY3Rpb24gdkx0KG4sdCl7cmV0dXJuIEhpKDErdzIuY291bnQoTFAobiksbiksdCwzKX1mdW5jdGlvbiBjcHQobix0KXtyZXR1cm4gSGkobi5nZXRNaWxsaXNlY29uZHMoKSx0LDMpfWZ1bmN0aW9uIHdMdChuLHQpe3JldHVybiBjcHQobix0KSsiMDAwIn1mdW5jdGlvbiBTTHQobix0KXtyZXR1cm4gSGkobi5nZXRNb250aCgpKzEsdCwyKX1mdW5jdGlvbiBSTHQobix0KXtyZXR1cm4gSGkobi5nZXRNaW51dGVzKCksdCwyKX1mdW5jdGlvbiBFTHQobix0KXtyZXR1cm4gSGkobi5nZXRTZWNvbmRzKCksdCwyKX1mdW5jdGlvbiBrTHQobil7dmFyIHQ9bi5nZXREYXkoKTtyZXR1cm4gdD09PTA/Nzp0fWZ1bmN0aW9uIE5MdChuLHQpe3JldHVybiBIaShiMS5jb3VudChMUChuKS0xLG4pLHQsMil9ZnVuY3Rpb24gbXB0KG4pe3ZhciB0PW4uZ2V0RGF5KCk7cmV0dXJuIHQ+PTR8fHQ9PT0wP3l4KG4pOnl4LmNlaWwobil9ZnVuY3Rpb24gVEx0KG4sdCl7cmV0dXJuIG49bXB0KG4pLEhpKHl4LmNvdW50KExQKG4pLG4pKyhMUChuKS5nZXREYXkoKT09PTQpLHQsMil9ZnVuY3Rpb24gQUx0KG4pe3JldHVybiBuLmdldERheSgpfWZ1bmN0aW9uIERMdChuLHQpe3JldHVybiBIaShTMi5jb3VudChMUChuKS0xLG4pLHQsMil9ZnVuY3Rpb24gSUx0KG4sdCl7cmV0dXJuIEhpKG4uZ2V0RnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiB6THQobix0KXtyZXR1cm4gbj1tcHQobiksSGkobi5nZXRGdWxsWWVhcigpJTEwMCx0LDIpfWZ1bmN0aW9uIEhMdChuLHQpe3JldHVybiBIaShuLmdldEZ1bGxZZWFyKCklMWU0LHQsNCl9ZnVuY3Rpb24gRkx0KG4sdCl7dmFyIGU9bi5nZXREYXkoKTtyZXR1cm4gbj1lPj00fHxlPT09MD95eChuKTp5eC5jZWlsKG4pLEhpKG4uZ2V0RnVsbFllYXIoKSUxZTQsdCw0KX1mdW5jdGlvbiBMTHQobil7dmFyIHQ9bi5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybih0PjA/Ii0iOih0Kj0tMSwiKyIpKStIaSh0LzYwfDAsIjAiLDIpK0hpKHQlNjAsIjAiLDIpfWZ1bmN0aW9uIGFwdChuLHQpe3JldHVybiBIaShuLmdldFVUQ0RhdGUoKSx0LDIpfWZ1bmN0aW9uIEJMdChuLHQpe3JldHVybiBIaShuLmdldFVUQ0hvdXJzKCksdCwyKX1mdW5jdGlvbiBWTHQobix0KXtyZXR1cm4gSGkobi5nZXRVVENIb3VycygpJTEyfHwxMix0LDIpfWZ1bmN0aW9uIGpMdChuLHQpe3JldHVybiBIaSgxK0s2LmNvdW50KFAxKG4pLG4pLHQsMyl9ZnVuY3Rpb24gZnB0KG4sdCl7cmV0dXJuIEhpKG4uZ2V0VVRDTWlsbGlzZWNvbmRzKCksdCwzKX1mdW5jdGlvbiBVTHQobix0KXtyZXR1cm4gZnB0KG4sdCkrIjAwMCJ9ZnVuY3Rpb24gWUx0KG4sdCl7cmV0dXJuIEhpKG4uZ2V0VVRDTW9udGgoKSsxLHQsMil9ZnVuY3Rpb24gR0x0KG4sdCl7cmV0dXJuIEhpKG4uZ2V0VVRDTWludXRlcygpLHQsMil9ZnVuY3Rpb24gV0x0KG4sdCl7cmV0dXJuIEhpKG4uZ2V0VVRDU2Vjb25kcygpLHQsMil9ZnVuY3Rpb24gcUx0KG4pe3ZhciB0PW4uZ2V0VVRDRGF5KCk7cmV0dXJuIHQ9PT0wPzc6dH1mdW5jdGlvbiBaTHQobix0KXtyZXR1cm4gSGkodjUuY291bnQoUDEobiktMSxuKSx0LDIpfWZ1bmN0aW9uIHBwdChuKXt2YXIgdD1uLmdldFVUQ0RheSgpO3JldHVybiB0Pj00fHx0PT09MD94eChuKTp4eC5jZWlsKG4pfWZ1bmN0aW9uIFhMdChuLHQpe3JldHVybiBuPXBwdChuKSxIaSh4eC5jb3VudChQMShuKSxuKSsoUDEobikuZ2V0VVRDRGF5KCk9PT00KSx0LDIpfWZ1bmN0aW9uIFFMdChuKXtyZXR1cm4gbi5nZXRVVENEYXkoKX1mdW5jdGlvbiBLTHQobix0KXtyZXR1cm4gSGkoUjIuY291bnQoUDEobiktMSxuKSx0LDIpfWZ1bmN0aW9uIEpMdChuLHQpe3JldHVybiBIaShuLmdldFVUQ0Z1bGxZZWFyKCklMTAwLHQsMil9ZnVuY3Rpb24gJEx0KG4sdCl7cmV0dXJuIG49cHB0KG4pLEhpKG4uZ2V0VVRDRnVsbFllYXIoKSUxMDAsdCwyKX1mdW5jdGlvbiB0OHQobix0KXtyZXR1cm4gSGkobi5nZXRVVENGdWxsWWVhcigpJTFlNCx0LDQpfWZ1bmN0aW9uIGU4dChuLHQpe3ZhciBlPW4uZ2V0VVRDRGF5KCk7cmV0dXJuIG49ZT49NHx8ZT09PTA/eHgobik6eHguY2VpbChuKSxIaShuLmdldFVUQ0Z1bGxZZWFyKCklMWU0LHQsNCl9ZnVuY3Rpb24gbjh0KCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBycHQoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gc3B0KG4pe3JldHVybitufWZ1bmN0aW9uIGxwdChuKXtyZXR1cm4gTWF0aC5mbG9vcigrbi8xZTMpfXZhciBFMixrMixkcHQsZ3B0LHVwdDtFOSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO2Z1bmN0aW9uIEU5KG4pe3JldHVybiBFMj1SOShuKSxrMj1FMi5mb3JtYXQsZHB0PUUyLnBhcnNlLGdwdD1FMi51dGNGb3JtYXQsdXB0PUUyLnV0Y1BhcnNlLEUyfXZhciBFNT0xZTMsazU9RTUqNjAsTjU9azUqNjAsVDU9TjUqMjQsbzh0PVQ1KjcsaHB0PVQ1KjMwLGs5PVQ1KjM2NTtmdW5jdGlvbiBpOHQobil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIGE4dChuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIERhdGU/K246K25ldyBEYXRlKCtuKX1mdW5jdGlvbiBOOShuLHQsZSxvLGksYSxyLHMsbCl7dmFyIGM9eTUoRWQsRWQpLG09Yy5pbnZlcnQsZj1jLmRvbWFpbixwPWwoIi4lTCIpLGc9bCgiOiVTIiksXz1sKCIlSTolTSIpLE09bCgiJUkgJXAiKSx5PWwoIiVhICVkIiksTz1sKCIlYiAlZCIpLGI9bCgiJUIiKSxSPWwoIiVZIiksRT1bW3IsMSxFNV0sW3IsNSw1KkU1XSxbciwxNSwxNSpFNV0sW3IsMzAsMzAqRTVdLFthLDEsazVdLFthLDUsNSprNV0sW2EsMTUsMTUqazVdLFthLDMwLDMwKms1XSxbaSwxLE41XSxbaSwzLDMqTjVdLFtpLDYsNipONV0sW2ksMTIsMTIqTjVdLFtvLDEsVDVdLFtvLDIsMipUNV0sW2UsMSxvOHRdLFt0LDEsaHB0XSxbdCwzLDMqaHB0XSxbbiwxLGs5XV07ZnVuY3Rpb24gaihKKXtyZXR1cm4ocihKKTxKP3A6YShKKTxKP2c6aShKKTxKP186byhKKTxKP006dChKKTxKP2UoSik8Sj95Ok86bihKKTxKP2I6UikoSil9ZnVuY3Rpb24gcnQoSixFdCxqdCxrdCl7aWYoSj09bnVsbCYmKEo9MTApLHR5cGVvZiBKPT0ibnVtYmVyIil7dmFyIHc9TWF0aC5hYnMoanQtRXQpL0osVT1RayhmdW5jdGlvbihudCl7cmV0dXJuIG50WzJdfSkucmlnaHQoRSx3KTtVPT09RS5sZW5ndGg/KGt0PXlPKEV0L2s5LGp0L2s5LEopLEo9bik6VT8oVT1FW3cvRVtVLTFdWzJdPEVbVV1bMl0vdz9VLTE6VV0sa3Q9VVsxXSxKPVVbMF0pOihrdD1NYXRoLm1heCh5TyhFdCxqdCxKKSwxKSxKPXMpfXJldHVybiBrdD09bnVsbD9KOkouZXZlcnkoa3QpfXJldHVybiBjLmludmVydD1mdW5jdGlvbihKKXtyZXR1cm4gbmV3IERhdGUobShKKSl9LGMuZG9tYWluPWZ1bmN0aW9uKEope3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2YoYjUuY2FsbChKLGE4dCkpOmYoKS5tYXAoaTh0KX0sYy50aWNrcz1mdW5jdGlvbihKLEV0KXt2YXIganQ9ZigpLGt0PWp0WzBdLHc9anRbanQubGVuZ3RoLTFdLFU9dzxrdCxudDtyZXR1cm4gVSYmKG50PWt0LGt0PXcsdz1udCksbnQ9cnQoSixrdCx3LEV0KSxudD1udD9udC5yYW5nZShrdCx3KzEpOltdLFU/bnQucmV2ZXJzZSgpOm50fSxjLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oSixFdCl7cmV0dXJuIEV0PT1udWxsP2o6bChFdCl9LGMubmljZT1mdW5jdGlvbihKLEV0KXt2YXIganQ9ZigpO3JldHVybihKPXJ0KEosanRbMF0sanRbanQubGVuZ3RoLTFdLEV0KSk/ZihHNihqdCxKKSk6Y30sYy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFB4KGMsTjkobix0LGUsbyxpLGEscixzLGwpKX0sY31mdW5jdGlvbiB5MSgpe3JldHVybiB4bS5hcHBseShOOShMUCx5OSxiMSx3MixQOSxPOSxRNixxNixrMikuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gTjIobil7Zm9yKHZhciB0PW4ubGVuZ3RoLzZ8MCxlPW5ldyBBcnJheSh0KSxvPTA7bzx0OyllW29dPSIjIituLnNsaWNlKG8qNiwrK28qNik7cmV0dXJuIGV9ZnVuY3Rpb24gVDIobil7cmV0dXJuIERHKG5bbi5sZW5ndGgtMV0pfXZhciBDcHQ9bmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKE4yKSxUOT1UMihDcHQpO3ZhciBNcHQ9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKE4yKSxBOT1UMihNcHQpO3ZhciBicHQ9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlMGQyZmM5MjcyZGUyZDI2IiwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkIiwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkIikubWFwKE4yKSxEOT1UMihicHQpO2Z1bmN0aW9uIHdmKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBufX12YXIgSTk9MWUtMTIsT3B0PU1hdGguUEksWUJlPU9wdC8yLEdCZT0yKk9wdDtmdW5jdGlvbiBQcHQobil7dGhpcy5fY29udGV4dD1ufVBwdC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihuLHQpe3N3aXRjaChuPStuLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obix0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8obix0KTticmVha319fTtmdW5jdGlvbiBKNihuKXtyZXR1cm4gbmV3IFBwdChuKX1mdW5jdGlvbiAkNihuKXtyZXR1cm4gblswXX1mdW5jdGlvbiB0SChuKXtyZXR1cm4gblsxXX1mdW5jdGlvbiBBNSgpe3ZhciBuPSQ2LHQ9dEgsZT13ZighMCksbz1udWxsLGk9SjYsYT1udWxsO2Z1bmN0aW9uIHIocyl7dmFyIGwsYz1zLmxlbmd0aCxtLGY9ITEscDtmb3Iobz09bnVsbCYmKGE9aShwPUM1KCkpKSxsPTA7bDw9YzsrK2wpIShsPGMmJmUobT1zW2xdLGwscykpPT09ZiYmKChmPSFmKT9hLmxpbmVTdGFydCgpOmEubGluZUVuZCgpKSxmJiZhLnBvaW50KCtuKG0sbCxzKSwrdChtLGwscykpO2lmKHApcmV0dXJuIGE9bnVsbCxwKyIifHxudWxsfXJldHVybiByLng9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dHlwZW9mIHM9PSJmdW5jdGlvbiI/czp3Zigrcykscik6bn0sci55PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBzPT0iZnVuY3Rpb24iP3M6d2YoK3MpLHIpOnR9LHIuZGVmaW5lZD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygcz09ImZ1bmN0aW9uIj9zOndmKCEhcykscik6ZX0sci5jdXJ2ZT1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1zLG8hPW51bGwmJihhPWkobykpLHIpOml9LHIuY29udGV4dD1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz09bnVsbD9vPWE9bnVsbDphPWkobz1zKSxyKTpvfSxyfWZ1bmN0aW9uIHo5KCl7dmFyIG49JDYsdD1udWxsLGU9d2YoMCksbz10SCxpPXdmKCEwKSxhPW51bGwscj1KNixzPW51bGw7ZnVuY3Rpb24gbChtKXt2YXIgZixwLGcsXz1tLmxlbmd0aCxNLHk9ITEsTyxiPW5ldyBBcnJheShfKSxSPW5ldyBBcnJheShfKTtmb3IoYT09bnVsbCYmKHM9cihPPUM1KCkpKSxmPTA7Zjw9XzsrK2Ype2lmKCEoZjxfJiZpKE09bVtmXSxmLG0pKT09PXkpaWYoeT0heSlwPWYscy5hcmVhU3RhcnQoKSxzLmxpbmVTdGFydCgpO2Vsc2V7Zm9yKHMubGluZUVuZCgpLHMubGluZVN0YXJ0KCksZz1mLTE7Zz49cDstLWcpcy5wb2ludChiW2ddLFJbZ10pO3MubGluZUVuZCgpLHMuYXJlYUVuZCgpfXkmJihiW2ZdPStuKE0sZixtKSxSW2ZdPStlKE0sZixtKSxzLnBvaW50KHQ/K3QoTSxmLG0pOmJbZl0sbz8rbyhNLGYsbSk6UltmXSkpfWlmKE8pcmV0dXJuIHM9bnVsbCxPKyIifHxudWxsfWZ1bmN0aW9uIGMoKXtyZXR1cm4gQTUoKS5kZWZpbmVkKGkpLmN1cnZlKHIpLmNvbnRleHQoYSl9cmV0dXJuIGwueD1mdW5jdGlvbihtKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2YgbT09ImZ1bmN0aW9uIj9tOndmKCttKSx0PW51bGwsbCk6bn0sbC54MD1mdW5jdGlvbihtKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2YgbT09ImZ1bmN0aW9uIj9tOndmKCttKSxsKTpufSxsLngxPWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW09PW51bGw/bnVsbDp0eXBlb2YgbT09ImZ1bmN0aW9uIj9tOndmKCttKSxsKTp0fSxsLnk9ZnVuY3Rpb24obSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIG09PSJmdW5jdGlvbiI/bTp3ZigrbSksbz1udWxsLGwpOmV9LGwueTA9ZnVuY3Rpb24obSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIG09PSJmdW5jdGlvbiI/bTp3ZigrbSksbCk6ZX0sbC55MT1mdW5jdGlvbihtKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1tPT1udWxsP251bGw6dHlwZW9mIG09PSJmdW5jdGlvbiI/bTp3ZigrbSksbCk6b30sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngobikueShlKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngobikueShvKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShlKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBtPT0iZnVuY3Rpb24iP206d2YoISFtKSxsKTppfSxsLmN1cnZlPWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW0sYSE9bnVsbCYmKHM9cihhKSksbCk6cn0sbC5jb250ZXh0PWZ1bmN0aW9uKG0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPT1udWxsP2E9cz1udWxsOnM9cihhPW0pLGwpOmF9LGx9ZnVuY3Rpb24geXB0KG4sdCxlKXtuLl9jb250ZXh0LmJlemllckN1cnZlVG8obi5feDErbi5fayoobi5feDItbi5feDApLG4uX3kxK24uX2sqKG4uX3kyLW4uX3kwKSxuLl94MituLl9rKihuLl94MS10KSxuLl95MituLl9rKihuLl95MS1lKSxuLl94MixuLl95Mil9ZnVuY3Rpb24gZUgobix0KXt0aGlzLl9jb250ZXh0PW4sdGhpcy5faz0oMS10KS82fWVILnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp5cHQodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7YnJlYWt9KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbihuLHQpe3N3aXRjaChuPStuLHQ9K3QsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8obix0KTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhuLHQpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPW4sdGhpcy5feTE9dDticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OnlwdCh0aGlzLG4sdCk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9bix0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj10fX07dmFyIHJWZT1mdW5jdGlvbiBuKHQpe2Z1bmN0aW9uIGUobyl7cmV0dXJuIG5ldyBlSChvLHQpfXJldHVybiBlLnRlbnNpb249ZnVuY3Rpb24obyl7cmV0dXJuIG4oK28pfSxlfSgwKTtmdW5jdGlvbiBsOHQobix0LGUpe3ZhciBvPW4uX3gxLGk9bi5feTEsYT1uLl94MixyPW4uX3kyO2lmKG4uX2wwMV9hPkk5KXt2YXIgcz0yKm4uX2wwMV8yYSszKm4uX2wwMV9hKm4uX2wxMl9hK24uX2wxMl8yYSxsPTMqbi5fbDAxX2EqKG4uX2wwMV9hK24uX2wxMl9hKTtvPShvKnMtbi5feDAqbi5fbDEyXzJhK24uX3gyKm4uX2wwMV8yYSkvbCxpPShpKnMtbi5feTAqbi5fbDEyXzJhK24uX3kyKm4uX2wwMV8yYSkvbH1pZihuLl9sMjNfYT5JOSl7dmFyIGM9MipuLl9sMjNfMmErMypuLl9sMjNfYSpuLl9sMTJfYStuLl9sMTJfMmEsbT0zKm4uX2wyM19hKihuLl9sMjNfYStuLl9sMTJfYSk7YT0oYSpjK24uX3gxKm4uX2wyM18yYS10Km4uX2wxMl8yYSkvbSxyPShyKmMrbi5feTEqbi5fbDIzXzJhLWUqbi5fbDEyXzJhKS9tfW4uX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhvLGksYSxyLG4uX3gyLG4uX3kyKX1mdW5jdGlvbiB4cHQobix0KXt0aGlzLl9jb250ZXh0PW4sdGhpcy5fYWxwaGE9dH14cHQucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpO2JyZWFrfSh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24obix0KXtpZihuPStuLHQ9K3QsdGhpcy5fcG9pbnQpe3ZhciBlPXRoaXMuX3gyLW4sbz10aGlzLl95Mi10O3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3coZSplK28qbyx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhuLHQpOnRoaXMuX2NvbnRleHQubW92ZVRvKG4sdCk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpsOHQodGhpcyxuLHQpO2JyZWFrfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj1uLHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPXR9fTt2YXIgSDk9ZnVuY3Rpb24gbih0KXtmdW5jdGlvbiBlKG8pe3JldHVybiB0P25ldyB4cHQobyx0KTpuZXcgZUgobywwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihvKXtyZXR1cm4gbigrbyl9LGV9KC41KTtmdW5jdGlvbiBGOSgpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIEEyKG4pe24uVT1uLkM9bi5MPW4uUj1uLlA9bi5OPW51bGx9RjkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpGOSxpbnNlcnQ6ZnVuY3Rpb24obix0KXt2YXIgZSxvLGk7aWYobil7aWYodC5QPW4sdC5OPW4uTixuLk4mJihuLk4uUD10KSxuLk49dCxuLlIpe2ZvcihuPW4uUjtuLkw7KW49bi5MO24uTD10fWVsc2Ugbi5SPXQ7ZT1ufWVsc2UgdGhpcy5fPyhuPXZwdCh0aGlzLl8pLHQuUD1udWxsLHQuTj1uLG4uUD1uLkw9dCxlPW4pOih0LlA9dC5OPW51bGwsdGhpcy5fPXQsZT1udWxsKTtmb3IodC5MPXQuUj1udWxsLHQuVT1lLHQuQz0hMCxuPXQ7ZSYmZS5DOylvPWUuVSxlPT09by5MPyhpPW8uUixpJiZpLkM/KGUuQz1pLkM9ITEsby5DPSEwLG49byk6KG49PT1lLlImJihENSh0aGlzLGUpLG49ZSxlPW4uVSksZS5DPSExLG8uQz0hMCxJNSh0aGlzLG8pKSk6KGk9by5MLGkmJmkuQz8oZS5DPWkuQz0hMSxvLkM9ITAsbj1vKToobj09PWUuTCYmKEk1KHRoaXMsZSksbj1lLGU9bi5VKSxlLkM9ITEsby5DPSEwLEQ1KHRoaXMsbykpKSxlPW4uVTt0aGlzLl8uQz0hMX0scmVtb3ZlOmZ1bmN0aW9uKG4pe24uTiYmKG4uTi5QPW4uUCksbi5QJiYobi5QLk49bi5OKSxuLk49bi5QPW51bGw7dmFyIHQ9bi5VLGUsbz1uLkwsaT1uLlIsYSxyO2lmKG8/aT9hPXZwdChpKTphPW86YT1pLHQ/dC5MPT09bj90Lkw9YTp0LlI9YTp0aGlzLl89YSxvJiZpPyhyPWEuQyxhLkM9bi5DLGEuTD1vLG8uVT1hLGEhPT1pPyh0PWEuVSxhLlU9bi5VLG49YS5SLHQuTD1uLGEuUj1pLGkuVT1hKTooYS5VPXQsdD1hLG49YS5SKSk6KHI9bi5DLG49YSksbiYmKG4uVT10KSwhcil7aWYobiYmbi5DKXtuLkM9ITE7cmV0dXJufWRve2lmKG49PT10aGlzLl8pYnJlYWs7aWYobj09PXQuTCl7aWYoZT10LlIsZS5DJiYoZS5DPSExLHQuQz0hMCxENSh0aGlzLHQpLGU9dC5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXsoIWUuUnx8IWUuUi5DKSYmKGUuTC5DPSExLGUuQz0hMCxJNSh0aGlzLGUpLGU9dC5SKSxlLkM9dC5DLHQuQz1lLlIuQz0hMSxENSh0aGlzLHQpLG49dGhpcy5fO2JyZWFrfX1lbHNlIGlmKGU9dC5MLGUuQyYmKGUuQz0hMSx0LkM9ITAsSTUodGhpcyx0KSxlPXQuTCksZS5MJiZlLkwuQ3x8ZS5SJiZlLlIuQyl7KCFlLkx8fCFlLkwuQykmJihlLlIuQz0hMSxlLkM9ITAsRDUodGhpcyxlKSxlPXQuTCksZS5DPXQuQyx0LkM9ZS5MLkM9ITEsSTUodGhpcyx0KSxuPXRoaXMuXzticmVha31lLkM9ITAsbj10LHQ9dC5VfXdoaWxlKCFuLkMpO24mJihuLkM9ITEpfX19O2Z1bmN0aW9uIEQ1KG4sdCl7dmFyIGU9dCxvPXQuUixpPWUuVTtpP2kuTD09PWU/aS5MPW86aS5SPW86bi5fPW8sby5VPWksZS5VPW8sZS5SPW8uTCxlLlImJihlLlIuVT1lKSxvLkw9ZX1mdW5jdGlvbiBJNShuLHQpe3ZhciBlPXQsbz10LkwsaT1lLlU7aT9pLkw9PT1lP2kuTD1vOmkuUj1vOm4uXz1vLG8uVT1pLGUuVT1vLGUuTD1vLlIsZS5MJiYoZS5MLlU9ZSksby5SPWV9ZnVuY3Rpb24gdnB0KG4pe2Zvcig7bi5MOyluPW4uTDtyZXR1cm4gbn12YXIgTDk9Rjk7ZnVuY3Rpb24gRDIobix0LGUsbyl7dmFyIGk9W251bGwsbnVsbF0sYT1BbC5wdXNoKGkpLTE7cmV0dXJuIGkubGVmdD1uLGkucmlnaHQ9dCxlJiZ6NShpLG4sdCxlKSxvJiZ6NShpLHQsbixvKSxTZltuLmluZGV4XS5oYWxmZWRnZXMucHVzaChhKSxTZlt0LmluZGV4XS5oYWxmZWRnZXMucHVzaChhKSxpfWZ1bmN0aW9uIEkyKG4sdCxlKXt2YXIgbz1bdCxlXTtyZXR1cm4gby5sZWZ0PW4sb31mdW5jdGlvbiB6NShuLHQsZSxvKXshblswXSYmIW5bMV0/KG5bMF09byxuLmxlZnQ9dCxuLnJpZ2h0PWUpOm4ubGVmdD09PWU/blsxXT1vOm5bMF09b31mdW5jdGlvbiBjOHQobix0LGUsbyxpKXt2YXIgYT1uWzBdLHI9blsxXSxzPWFbMF0sbD1hWzFdLGM9clswXSxtPXJbMV0sZj0wLHA9MSxnPWMtcyxfPW0tbCxNO2lmKE09dC1zLCEoIWcmJk0+MCkpe2lmKE0vPWcsZzwwKXtpZihNPGYpcmV0dXJuO008cCYmKHA9TSl9ZWxzZSBpZihnPjApe2lmKE0+cClyZXR1cm47TT5mJiYoZj1NKX1pZihNPW8tcywhKCFnJiZNPDApKXtpZihNLz1nLGc8MCl7aWYoTT5wKXJldHVybjtNPmYmJihmPU0pfWVsc2UgaWYoZz4wKXtpZihNPGYpcmV0dXJuO008cCYmKHA9TSl9aWYoTT1lLWwsISghXyYmTT4wKSl7aWYoTS89XyxfPDApe2lmKE08ZilyZXR1cm47TTxwJiYocD1NKX1lbHNlIGlmKF8+MCl7aWYoTT5wKXJldHVybjtNPmYmJihmPU0pfWlmKE09aS1sLCEoIV8mJk08MCkpe2lmKE0vPV8sXzwwKXtpZihNPnApcmV0dXJuO00+ZiYmKGY9TSl9ZWxzZSBpZihfPjApe2lmKE08ZilyZXR1cm47TTxwJiYocD1NKX1yZXR1cm4hKGY+MCkmJiEocDwxKXx8KGY+MCYmKG5bMF09W3MrZipnLGwrZipfXSkscDwxJiYoblsxXT1bcytwKmcsbCtwKl9dKSksITB9fX19fWZ1bmN0aW9uIG04dChuLHQsZSxvLGkpe3ZhciBhPW5bMV07aWYoYSlyZXR1cm4hMDt2YXIgcj1uWzBdLHM9bi5sZWZ0LGw9bi5yaWdodCxjPXNbMF0sbT1zWzFdLGY9bFswXSxwPWxbMV0sZz0oYytmKS8yLF89KG0rcCkvMixNLHk7aWYocD09PW0pe2lmKGc8dHx8Zz49bylyZXR1cm47aWYoYz5mKXtpZighcilyPVtnLGVdO2Vsc2UgaWYoclsxXT49aSlyZXR1cm47YT1bZyxpXX1lbHNle2lmKCFyKXI9W2csaV07ZWxzZSBpZihyWzFdPGUpcmV0dXJuO2E9W2csZV19fWVsc2UgaWYoTT0oYy1mKS8ocC1tKSx5PV8tTSpnLE08LTF8fE0+MSlpZihjPmYpe2lmKCFyKXI9WyhlLXkpL00sZV07ZWxzZSBpZihyWzFdPj1pKXJldHVybjthPVsoaS15KS9NLGldfWVsc2V7aWYoIXIpcj1bKGkteSkvTSxpXTtlbHNlIGlmKHJbMV08ZSlyZXR1cm47YT1bKGUteSkvTSxlXX1lbHNlIGlmKG08cCl7aWYoIXIpcj1bdCxNKnQreV07ZWxzZSBpZihyWzBdPj1vKXJldHVybjthPVtvLE0qbyt5XX1lbHNle2lmKCFyKXI9W28sTSpvK3ldO2Vsc2UgaWYoclswXTx0KXJldHVybjthPVt0LE0qdCt5XX1yZXR1cm4gblswXT1yLG5bMV09YSwhMH1mdW5jdGlvbiB3cHQobix0LGUsbyl7Zm9yKHZhciBpPUFsLmxlbmd0aCxhO2ktLTspKCFtOHQoYT1BbFtpXSxuLHQsZSxvKXx8IWM4dChhLG4sdCxlLG8pfHwhKE1hdGguYWJzKGFbMF1bMF0tYVsxXVswXSk+T2F8fE1hdGguYWJzKGFbMF1bMV0tYVsxXVsxXSk+T2EpKSYmZGVsZXRlIEFsW2ldfWZ1bmN0aW9uIFNwdChuKXtyZXR1cm4gU2Zbbi5pbmRleF09e3NpdGU6bixoYWxmZWRnZXM6W119fWZ1bmN0aW9uIGY4dChuLHQpe3ZhciBlPW4uc2l0ZSxvPXQubGVmdCxpPXQucmlnaHQ7cmV0dXJuIGU9PT1pJiYoaT1vLG89ZSksaT9NYXRoLmF0YW4yKGlbMV0tb1sxXSxpWzBdLW9bMF0pOihlPT09bz8obz10WzFdLGk9dFswXSk6KG89dFswXSxpPXRbMV0pLE1hdGguYXRhbjIob1swXS1pWzBdLGlbMV0tb1sxXSkpfWZ1bmN0aW9uIEI5KG4sdCl7cmV0dXJuIHRbKyh0LmxlZnQhPT1uLnNpdGUpXX1mdW5jdGlvbiBwOHQobix0KXtyZXR1cm4gdFsrKHQubGVmdD09PW4uc2l0ZSldfWZ1bmN0aW9uIFJwdCgpe2Zvcih2YXIgbj0wLHQ9U2YubGVuZ3RoLGUsbyxpLGE7bjx0OysrbilpZigoZT1TZltuXSkmJihhPShvPWUuaGFsZmVkZ2VzKS5sZW5ndGgpKXt2YXIgcj1uZXcgQXJyYXkoYSkscz1uZXcgQXJyYXkoYSk7Zm9yKGk9MDtpPGE7KytpKXJbaV09aSxzW2ldPWY4dChlLEFsW29baV1dKTtmb3Ioci5zb3J0KGZ1bmN0aW9uKGwsYyl7cmV0dXJuIHNbY10tc1tsXX0pLGk9MDtpPGE7KytpKXNbaV09b1tyW2ldXTtmb3IoaT0wO2k8YTsrK2kpb1tpXT1zW2ldfX1mdW5jdGlvbiBFcHQobix0LGUsbyl7dmFyIGk9U2YubGVuZ3RoLGEscixzLGwsYyxtLGYscCxnLF8sTSx5LE89ITA7Zm9yKGE9MDthPGk7KythKWlmKHI9U2ZbYV0pe2ZvcihzPXIuc2l0ZSxjPXIuaGFsZmVkZ2VzLGw9Yy5sZW5ndGg7bC0tOylBbFtjW2xdXXx8Yy5zcGxpY2UobCwxKTtmb3IobD0wLG09Yy5sZW5ndGg7bDxtOylfPXA4dChyLEFsW2NbbF1dKSxNPV9bMF0seT1fWzFdLGY9QjkocixBbFtjWysrbCVtXV0pLHA9ZlswXSxnPWZbMV0sKE1hdGguYWJzKE0tcCk+T2F8fE1hdGguYWJzKHktZyk+T2EpJiYoYy5zcGxpY2UobCwwLEFsLnB1c2goSTIocyxfLE1hdGguYWJzKE0tbik8T2EmJm8teT5PYT9bbixNYXRoLmFicyhwLW4pPE9hP2c6b106TWF0aC5hYnMoeS1vKTxPYSYmZS1NPk9hP1tNYXRoLmFicyhnLW8pPE9hP3A6ZSxvXTpNYXRoLmFicyhNLWUpPE9hJiZ5LXQ+T2E/W2UsTWF0aC5hYnMocC1lKTxPYT9nOnRdOk1hdGguYWJzKHktdCk8T2EmJk0tbj5PYT9bTWF0aC5hYnMoZy10KTxPYT9wOm4sdF06bnVsbCkpLTEpLCsrbSk7bSYmKE89ITEpfWlmKE8pe3ZhciBiLFIsRSxqPTEvMDtmb3IoYT0wLE89bnVsbDthPGk7KythKShyPVNmW2FdKSYmKHM9ci5zaXRlLGI9c1swXS1uLFI9c1sxXS10LEU9YipiK1IqUixFPGomJihqPUUsTz1yKSk7aWYoTyl7dmFyIHJ0PVtuLHRdLEo9W24sb10sRXQ9W2Usb10sanQ9W2UsdF07Ty5oYWxmZWRnZXMucHVzaChBbC5wdXNoKEkyKHM9Ty5zaXRlLHJ0LEopKS0xLEFsLnB1c2goSTIocyxKLEV0KSktMSxBbC5wdXNoKEkyKHMsRXQsanQpKS0xLEFsLnB1c2goSTIocyxqdCxydCkpLTEpfX1mb3IoYT0wO2E8aTsrK2EpKHI9U2ZbYV0pJiYoci5oYWxmZWRnZXMubGVuZ3RofHxkZWxldGUgU2ZbYV0pfXZhciBrcHQ9W10sbkg7ZnVuY3Rpb24gZDh0KCl7QTIodGhpcyksdGhpcy54PXRoaXMueT10aGlzLmFyYz10aGlzLnNpdGU9dGhpcy5jeT1udWxsfWZ1bmN0aW9uIHgxKG4pe3ZhciB0PW4uUCxlPW4uTjtpZighKCF0fHwhZSkpe3ZhciBvPXQuc2l0ZSxpPW4uc2l0ZSxhPWUuc2l0ZTtpZihvIT09YSl7dmFyIHI9aVswXSxzPWlbMV0sbD1vWzBdLXIsYz1vWzFdLXMsbT1hWzBdLXIsZj1hWzFdLXMscD0yKihsKmYtYyptKTtpZighKHA+PS1OcHQpKXt2YXIgZz1sKmwrYypjLF89bSptK2YqZixNPShmKmctYypfKS9wLHk9KGwqXy1tKmcpL3AsTz1rcHQucG9wKCl8fG5ldyBkOHQ7Ty5hcmM9bixPLnNpdGU9aSxPLng9TStyLE8ueT0oTy5jeT15K3MpK01hdGguc3FydChNKk0reSp5KSxuLmNpcmNsZT1PO2Zvcih2YXIgYj1udWxsLFI9ejIuXztSOylpZihPLnk8Ui55fHxPLnk9PT1SLnkmJk8ueDw9Ui54KWlmKFIuTClSPVIuTDtlbHNle2I9Ui5QO2JyZWFrfWVsc2UgaWYoUi5SKVI9Ui5SO2Vsc2V7Yj1SO2JyZWFrfXoyLmluc2VydChiLE8pLGJ8fChuSD1PKX19fX1mdW5jdGlvbiB2MShuKXt2YXIgdD1uLmNpcmNsZTt0JiYodC5QfHwobkg9dC5OKSx6Mi5yZW1vdmUodCksa3B0LnB1c2godCksQTIodCksbi5jaXJjbGU9bnVsbCl9dmFyIEFwdD1bXTtmdW5jdGlvbiBnOHQoKXtBMih0aGlzKSx0aGlzLmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gVHB0KG4pe3ZhciB0PUFwdC5wb3AoKXx8bmV3IGc4dDtyZXR1cm4gdC5zaXRlPW4sdH1mdW5jdGlvbiBWOShuKXt2MShuKSx3MS5yZW1vdmUobiksQXB0LnB1c2gobiksQTIobil9ZnVuY3Rpb24gRHB0KG4pe3ZhciB0PW4uY2lyY2xlLGU9dC54LG89dC5jeSxpPVtlLG9dLGE9bi5QLHI9bi5OLHM9W25dO1Y5KG4pO2Zvcih2YXIgbD1hO2wuY2lyY2xlJiZNYXRoLmFicyhlLWwuY2lyY2xlLngpPE9hJiZNYXRoLmFicyhvLWwuY2lyY2xlLmN5KTxPYTspYT1sLlAscy51bnNoaWZ0KGwpLFY5KGwpLGw9YTtzLnVuc2hpZnQobCksdjEobCk7Zm9yKHZhciBjPXI7Yy5jaXJjbGUmJk1hdGguYWJzKGUtYy5jaXJjbGUueCk8T2EmJk1hdGguYWJzKG8tYy5jaXJjbGUuY3kpPE9hOylyPWMuTixzLnB1c2goYyksVjkoYyksYz1yO3MucHVzaChjKSx2MShjKTt2YXIgbT1zLmxlbmd0aCxmO2ZvcihmPTE7ZjxtOysrZiljPXNbZl0sbD1zW2YtMV0sejUoYy5lZGdlLGwuc2l0ZSxjLnNpdGUsaSk7bD1zWzBdLGM9c1ttLTFdLGMuZWRnZT1EMihsLnNpdGUsYy5zaXRlLG51bGwsaSkseDEobCkseDEoYyl9ZnVuY3Rpb24gSXB0KG4pe2Zvcih2YXIgdD1uWzBdLGU9blsxXSxvLGksYSxyLHM9dzEuXztzOylpZihhPXpwdChzLGUpLXQsYT5PYSlzPXMuTDtlbHNlIGlmKHI9dC11OHQocyxlKSxyPk9hKXtpZighcy5SKXtvPXM7YnJlYWt9cz1zLlJ9ZWxzZXthPi1PYT8obz1zLlAsaT1zKTpyPi1PYT8obz1zLGk9cy5OKTpvPWk9czticmVha31TcHQobik7dmFyIGw9VHB0KG4pO2lmKHcxLmluc2VydChvLGwpLCEoIW8mJiFpKSl7aWYobz09PWkpe3YxKG8pLGk9VHB0KG8uc2l0ZSksdzEuaW5zZXJ0KGwsaSksbC5lZGdlPWkuZWRnZT1EMihvLnNpdGUsbC5zaXRlKSx4MShvKSx4MShpKTtyZXR1cm59aWYoIWkpe2wuZWRnZT1EMihvLnNpdGUsbC5zaXRlKTtyZXR1cm59djEobyksdjEoaSk7dmFyIGM9by5zaXRlLG09Y1swXSxmPWNbMV0scD1uWzBdLW0sZz1uWzFdLWYsXz1pLnNpdGUsTT1fWzBdLW0seT1fWzFdLWYsTz0yKihwKnktZypNKSxiPXAqcCtnKmcsUj1NKk0reSp5LEU9Wyh5KmItZypSKS9PK20sKHAqUi1NKmIpL08rZl07ejUoaS5lZGdlLGMsXyxFKSxsLmVkZ2U9RDIoYyxuLG51bGwsRSksaS5lZGdlPUQyKG4sXyxudWxsLEUpLHgxKG8pLHgxKGkpfX1mdW5jdGlvbiB6cHQobix0KXt2YXIgZT1uLnNpdGUsbz1lWzBdLGk9ZVsxXSxhPWktdDtpZighYSlyZXR1cm4gbzt2YXIgcj1uLlA7aWYoIXIpcmV0dXJuLTEvMDtlPXIuc2l0ZTt2YXIgcz1lWzBdLGw9ZVsxXSxjPWwtdDtpZighYylyZXR1cm4gczt2YXIgbT1zLW8sZj0xL2EtMS9jLHA9bS9jO3JldHVybiBmPygtcCtNYXRoLnNxcnQocCpwLTIqZioobSptLygtMipjKS1sK2MvMitpLWEvMikpKS9mK286KG8rcykvMn1mdW5jdGlvbiB1OHQobix0KXt2YXIgZT1uLk47aWYoZSlyZXR1cm4genB0KGUsdCk7dmFyIG89bi5zaXRlO3JldHVybiBvWzFdPT09dD9vWzBdOjEvMH12YXIgT2E9MWUtNixOcHQ9MWUtMTIsdzEsU2YsejIsQWw7ZnVuY3Rpb24gaDh0KG4sdCxlKXtyZXR1cm4oblswXS1lWzBdKSoodFsxXS1uWzFdKS0oblswXS10WzBdKSooZVsxXS1uWzFdKX1mdW5jdGlvbiBfOHQobix0KXtyZXR1cm4gdFsxXS1uWzFdfHx0WzBdLW5bMF19ZnVuY3Rpb24gb0gobix0KXt2YXIgZT1uLnNvcnQoXzh0KS5wb3AoKSxvLGksYTtmb3IoQWw9W10sU2Y9bmV3IEFycmF5KG4ubGVuZ3RoKSx3MT1uZXcgTDksejI9bmV3IEw5OzspaWYoYT1uSCxlJiYoIWF8fGVbMV08YS55fHxlWzFdPT09YS55JiZlWzBdPGEueCkpKGVbMF0hPT1vfHxlWzFdIT09aSkmJihJcHQoZSksbz1lWzBdLGk9ZVsxXSksZT1uLnBvcCgpO2Vsc2UgaWYoYSlEcHQoYS5hcmMpO2Vsc2UgYnJlYWs7aWYoUnB0KCksdCl7dmFyIHI9K3RbMF1bMF0scz0rdFswXVsxXSxsPSt0WzFdWzBdLGM9K3RbMV1bMV07d3B0KHIscyxsLGMpLEVwdChyLHMsbCxjKX10aGlzLmVkZ2VzPUFsLHRoaXMuY2VsbHM9U2YsdzE9ejI9QWw9U2Y9bnVsbH1vSC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOm9ILHBvbHlnb25zOmZ1bmN0aW9uKCl7dmFyIG49dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5tYXAoZnVuY3Rpb24odCl7dmFyIGU9dC5oYWxmZWRnZXMubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBCOSh0LG5bb10pfSk7cmV0dXJuIGUuZGF0YT10LnNpdGUuZGF0YSxlfSl9LHRyaWFuZ2xlczpmdW5jdGlvbigpe3ZhciBuPVtdLHQ9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGUsbyl7aWYoISEocz0oYT1lLmhhbGZlZGdlcykubGVuZ3RoKSlmb3IodmFyIGk9ZS5zaXRlLGEscj0tMSxzLGwsYz10W2Fbcy0xXV0sbT1jLmxlZnQ9PT1pP2MucmlnaHQ6Yy5sZWZ0OysrcjxzOylsPW0sYz10W2Fbcl1dLG09Yy5sZWZ0PT09aT9jLnJpZ2h0OmMubGVmdCxsJiZtJiZvPGwuaW5kZXgmJm88bS5pbmRleCYmaDh0KGksbCxtKTwwJiZuLnB1c2goW2kuZGF0YSxsLmRhdGEsbS5kYXRhXSl9KSxufSxsaW5rczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZ2VzLmZpbHRlcihmdW5jdGlvbihuKXtyZXR1cm4gbi5yaWdodH0pLm1hcChmdW5jdGlvbihuKXtyZXR1cm57c291cmNlOm4ubGVmdC5kYXRhLHRhcmdldDpuLnJpZ2h0LmRhdGF9fSl9LGZpbmQ6ZnVuY3Rpb24obix0LGUpe2Zvcih2YXIgbz10aGlzLGksYT1vLl9mb3VuZHx8MCxyPW8uY2VsbHMubGVuZ3RoLHM7IShzPW8uY2VsbHNbYV0pOylpZigrK2E+PXIpcmV0dXJuIG51bGw7dmFyIGw9bi1zLnNpdGVbMF0sYz10LXMuc2l0ZVsxXSxtPWwqbCtjKmM7ZG8gcz1vLmNlbGxzW2k9YV0sYT1udWxsLHMuaGFsZmVkZ2VzLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIHA9by5lZGdlc1tmXSxnPXAubGVmdDtpZighKChnPT09cy5zaXRlfHwhZykmJiEoZz1wLnJpZ2h0KSkpe3ZhciBfPW4tZ1swXSxNPXQtZ1sxXSx5PV8qXytNKk07eTxtJiYobT15LGE9Zy5pbmRleCl9fSk7d2hpbGUoYSE9PW51bGwpO3JldHVybiBvLl9mb3VuZD1pLGU9PW51bGx8fG08PWUqZT9zLnNpdGU6bnVsbH19O2Z1bmN0aW9uIFMxKG4sdCxlKXt0aGlzLms9bix0aGlzLng9dCx0aGlzLnk9ZX1TMS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMxLHNjYWxlOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09MT90aGlzOm5ldyBTMSh0aGlzLmsqbix0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49PT0wJnQ9PT0wP3RoaXM6bmV3IFMxKHRoaXMuayx0aGlzLngrdGhpcy5rKm4sdGhpcy55K3RoaXMuayp0KX0sYXBwbHk6ZnVuY3Rpb24obil7cmV0dXJuW25bMF0qdGhpcy5rK3RoaXMueCxuWzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24obil7cmV0dXJuIG4qdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKG4pe3JldHVybiBuKnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbihuKXtyZXR1cm5bKG5bMF0tdGhpcy54KS90aGlzLmssKG5bMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKG4pe3JldHVybihuLXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKG4pe3JldHVybihuLXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbihuKXtyZXR1cm4gbi5jb3B5KCkuZG9tYWluKG4ucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcChuLmludmVydCxuKSl9LHJlc2NhbGVZOmZ1bmN0aW9uKG4pe3JldHVybiBuLmNvcHkoKS5kb21haW4obi5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKG4uaW52ZXJ0LG4pKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIGo5PW5ldyBTMSgxLDAsMCk7VTkucHJvdG90eXBlPVMxLnByb3RvdHlwZTtmdW5jdGlvbiBVOShuKXtmb3IoOyFuLl9fem9vbTspaWYoIShuPW4ucGFyZW50Tm9kZSkpcmV0dXJuIGo5O3JldHVybiBuLl9fem9vbX12YXIgWDk9MWU0LFE5PS4wMDEsQnB0PU1zKCIuMn5lIiksQzh0PU1zKCIuNH5yIiksSHB0PU1zKCIsfiIpO2Z1bmN0aW9uIEZwdChuKXtpZihuPT09MClyZXR1cm4iMCI7bGV0IHQ9TWF0aC5hYnMobik7cmV0dXJuIHQ+PVg5fHx0PFE5P0JwdChuKTpDOHQobil9dmFyIEJQPXtmb3JtYXRUaWNrOkZwdCxmb3JtYXRTaG9ydDpGcHQsZm9ybWF0UmVhZGFibGUobil7bGV0IHQ9TWF0aC5hYnMobik7cmV0dXJuIHQ+PVg5fHx0PFE5P0JwdChuKTpIcHQobil9LGZvcm1hdExvbmc6SHB0fSxNOHQ9bmV3IEludGwuTnVtYmVyRm9ybWF0KHZvaWQgMCx7bWF4aW11bUZyYWN0aW9uRGlnaXRzOjN9KTtmdW5jdGlvbiBpSChuKXtyZXR1cm4gTTh0LmZvcm1hdChuKX12YXIgUk89e2Zvcm1hdFRpY2s6aUgsZm9ybWF0U2hvcnQ6aUgsZm9ybWF0UmVhZGFibGU6aUgsZm9ybWF0TG9uZzppSH0sYjh0PU1zKCIwLjN+cyIpLE84dD1NcygiLC4zfmYiKTtmdW5jdGlvbiBhSChuKXtsZXQgdD1NYXRoLmFicyhuKTtyZXR1cm4gdD49WDl8fHQ8UTk/Yjh0KG4pOk84dChuKX12YXIgVnB0PXtmb3JtYXRUaWNrOmFILGZvcm1hdFNob3J0OmFILGZvcm1hdFJlYWRhYmxlOmFILGZvcm1hdExvbmc6YUh9LEc5PTFlMyxXOT02MCpHOSxxOT02MCpXOSxaOT0yNCpxOSxMcHQ9MzY1Klo5LEgyPU1zKCIuNH4iKTtmdW5jdGlvbiBySChuKXtpZihuPT09MClyZXR1cm4iMCI7bGV0IHQ9TWF0aC5zaWduKG4pPjA/IiI6Ii0iLGU9TWF0aC5hYnMobik7cmV0dXJuIGU8Rzk/dCs9YCR7SDIoZSl9IG1zYDplPFc5P3QrPWAke0gyKGUvRzkpfSBzZWNgOmU8cTk/dCs9YCR7SDIoZS9XOSl9IG1pbmA6ZTxaOT90Kz1gJHtIMihlL3E5KX0gaHJgOmU8THB0P3QrPWAke0gyKGUvWjkpfSBkYXlgOnQrPWAke0gyKGUvTHB0KX0geXJgLHR9dmFyIEg1PXtmb3JtYXRUaWNrOnJILGZvcm1hdFNob3J0OnJILGZvcm1hdFJlYWRhYmxlOnJILGZvcm1hdExvbmc6ckh9LFA4dD15MSgpLnRpY2tGb3JtYXQoKSxZOSxqcHQ9e2Zvcm1hdFRpY2sobil7cmV0dXJuIFA4dChuZXcgRGF0ZShuKSl9LGZvcm1hdFNob3J0KG4pe3JldHVybiBuZXcgRGF0ZShuKS50b0xvY2FsZVN0cmluZyhZOSx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pfSxmb3JtYXRSZWFkYWJsZShuKXtyZXR1cm4gbmV3IERhdGUobikudG9Mb2NhbGVTdHJpbmcoWTkse3llYXI6Im51bWVyaWMiLG1vbnRoOiJzaG9ydCIsZGF5OiJudW1lcmljIixob3VyOiJudW1lcmljIixtaW51dGU6Im51bWVyaWMiLHNlY29uZDoibnVtZXJpYyIsdGltZVpvbmVOYW1lOiJzaG9ydCJ9KX0sZm9ybWF0TG9uZyhuKXtyZXR1cm4gbmV3IERhdGUobikudG9Mb2NhbGVTdHJpbmcoWTkse3llYXI6Im51bWVyaWMiLG1vbnRoOiJsb25nIixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIix0aW1lWm9uZU5hbWU6InNob3J0IixmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOjN9KX19O2Z1bmN0aW9uIG5iKG4pe3N3aXRjaChuKXtjYXNlIENyLkxJTkVBUjpyZXR1cm4gbmV3IEY1O2Nhc2UgQ3IuTE9HMTA6cmV0dXJuIG5ldyBLOTtjYXNlIENyLlRJTUU6cmV0dXJuIG5ldyBMNTtkZWZhdWx0OmxldCB0PW47dGhyb3cgbmV3IFJhbmdlRXJyb3IoYFNjYWxlVHlwZSAke3R9IG5vdCBzdXBwb3J0ZWQuYCl9fXZhciB5OHQ9LjA1LEY1PWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5kZWZhdWx0Rm9ybWF0dGVyPUJQfXRyYW5zZm9ybSh0LGUsbyl7bGV0W2ksYV09dCxyPWEtaSxbcyxsXT1lLGM9bC1zO3JldHVybiByPT09MD9zOmMvciooby1pKStzfWZvcndhcmQodCxlLG8pe3JldHVybiB0aGlzLnRyYW5zZm9ybSh0LGUsbyl9cmV2ZXJzZSh0LGUsbyl7cmV0dXJuIHRoaXMudHJhbnNmb3JtKGUsdCxvKX1uaWNlRG9tYWluKHQpe2xldFtlLG9dPXQ7aWYobzxlKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBpbnB1dDogbWluIGlzIGxhcmdlciB0aGFuIG1heCIpO2lmKG89PT1lKXJldHVybiBlPT09MD9bLTEsMV06ZTwwP1syKmUsMF06WzAsMiplXTtsZXQgaT1zbCgpLGE9KG8tZStOdW1iZXIuRVBTSUxPTikqeTh0LFtyLHNdPWkuZG9tYWluKFtlLWEsbythXSkubmljZSgpLmRvbWFpbigpO3JldHVybltyLHNdfXRpY2tzKHQsZSl7cmV0dXJuIHNsKCkuZG9tYWluKHQpLnRpY2tzKGUpfWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpfX0sSzk9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9QlB9dHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmxvZzEwKHQ+MD90Ok51bWJlci5NSU5fVkFMVUUpfXVudHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmV4cCh0L01hdGguTE9HMTBFKX1mb3J3YXJkKHQsZSxvKXtpZihvPD0wKXJldHVybiBlWzBdO2xldFtpLGFdPXQsW3Isc109ZSxsPXRoaXMudHJhbnNmb3JtKGkpLG09dGhpcy50cmFuc2Zvcm0oYSktbCxmPXMtcjtyZXR1cm4gbz10aGlzLnRyYW5zZm9ybShvKSxmLyhtK051bWJlci5FUFNJTE9OKSooby1sKStyfXJldmVyc2UodCxlLG8pe2xldFtpLGFdPXQsW3Isc109ZSxsPXRoaXMudHJhbnNmb3JtKGkpLG09dGhpcy50cmFuc2Zvcm0oYSktbCxmPXMtcixwPW0vKGYrTnVtYmVyLkVQU0lMT04pKihvLXIpK2w7cmV0dXJuIHRoaXMudW50cmFuc2Zvcm0ocCl9bmljZURvbWFpbih0KXtsZXRbZSxvXT10O2lmKGU+byl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtsZXQgaT1NYXRoLm1heChlLE51bWJlci5NSU5fVkFMVUUpLGE9TWF0aC5tYXgobyxOdW1iZXIuTUlOX1ZBTFVFKTtyZXR1cm4gbzw9MD9bTnVtYmVyLk1JTl9WQUxVRSwxXTpbTWF0aC5tYXgoTnVtYmVyLk1JTl9WQUxVRSxpKi41KSxhKjJdfXRpY2tzKHQsZSl7bGV0IG89dFswXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMF0saT10WzFdPD0wP051bWJlci5NSU5fVkFMVUU6dFsxXSxhPXg1KCkuZG9tYWluKFtvLGldKS50aWNrcyhlKTtyZXR1cm4gYS5sZW5ndGg/YTp0fWlzU2FmZU51bWJlcih0KXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKHQpJiZ0PjB9fSxMNT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc2NhbGU9eTEoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9anB0fWZvcndhcmQodCxlLG8pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShlKShvKX1yZXZlcnNlKHQsZSxvKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkuaW52ZXJ0KG8pLmdldFRpbWUoKX1uaWNlRG9tYWluKHQpe2xldFtlLG9dPXRoaXMuc2NhbGUuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bZS5nZXRUaW1lKCksby5nZXRUaW1lKCldfXRpY2tzKHQsZSl7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnRpY2tzKGUpLm1hcChvPT5vLmdldFRpbWUoKSl9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fTtmdW5jdGlvbiBVcHQobil7cmV0dXJue3g6W24ueCxuLngrbi53aWR0aF0seTpbbi55LG4ueStuLmhlaWdodF19fXZhciBKOT0hMTtpZihzZWxmLmhhc093blByb3BlcnR5KCJXZWJHTDJSZW5kZXJpbmdDb250ZXh0IikmJnNlbGYuaGFzT3duUHJvcGVydHkoImRvY3VtZW50Iikpe2xldCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO24uYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciIsKCk9PntKOT0hMX0pO2xldCB0PW4uZ2V0Q29udGV4dCgid2ViZ2wyIik7Sjk9Qm9vbGVhbih0KX1mdW5jdGlvbiBZcHQoKXtyZXR1cm4gSjl9ZnVuY3Rpb24gc0goKXtyZXR1cm4gc2VsZi5oYXNPd25Qcm9wZXJ0eSgiT2Zmc2NyZWVuQ2FudmFzIil9ZnVuY3Rpb24gbEgobix0KXtpZihuLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKG5bZV0hPT10W2VdKXJldHVybiExO3JldHVybiEwfXZhciBGMj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMueFNjYWxlPW5iKENyLkxJTkVBUiksdGhpcy55U2NhbGU9bmIoQ3IuTElORUFSKSx0aGlzLmRvbUNvbnRhaW5lclJlY3Q9e3g6MCx3aWR0aDoxLHk6MCxoZWlnaHQ6MX0sdGhpcy5sYXN0VXBkYXRlZD0wLHRoaXMuY3VycmVudFZpZXdCb3hSZWN0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9fWdldFVwZGF0ZUlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5sYXN0VXBkYXRlZH11cGRhdGVJZGVudGlmaWVyKCl7dGhpcy5sYXN0VXBkYXRlZCsrfWlzWUF4aXNQb2ludGVkRG93bigpe3JldHVybiEwfXNldFhTY2FsZSh0KXt0aGlzLnhTY2FsZT10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXNldFlTY2FsZSh0KXt0aGlzLnlTY2FsZT10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfWdldEN1cnJlbnRWaWV3Qm94UmVjdCgpe3JldHVybiB0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdH1zZXRWaWV3Qm94UmVjdCh0KXt0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdD10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXNldERvbUNvbnRhaW5lclJlY3QodCl7dGhpcy5kb21Db250YWluZXJSZWN0PXQsdGhpcy51cGRhdGVJZGVudGlmaWVyKCl9dHJhbnNmb3JtRGF0YVRvVWlDb29yZCh0LGUpe2xldCBvPXQsaT1VcHQodGhpcy5jdXJyZW50Vmlld0JveFJlY3QpO3JldHVyblt0aGlzLnhTY2FsZS5mb3J3YXJkKGkueCxbby54LG8ueCtvLndpZHRoXSxlWzBdKSx0aGlzLnlTY2FsZS5mb3J3YXJkKGkueSx0aGlzLmlzWUF4aXNQb2ludGVkRG93bigpP1tvLnkrby5oZWlnaHQsby55XTpbby55LG8ueStvLmhlaWdodF0sZVsxXSldfX07ZnVuY3Rpb24gY0gobix0LGUsbyl7bGV0e2NvbG9yOmksdmlzaWJsZTphLG9wYWNpdHk6cn09byxzPW47cmV0dXJuIXMmJiFhP251bGw6KHM9cyE9bnVsbD9zOnQoKSxzPWUocykscy5zdHlsZS5kaXNwbGF5PWE/IiI6Im5vbmUiLHMuc3R5bGUuc3Ryb2tlPWkscy5zdHlsZS5vcGFjaXR5PVN0cmluZyhyIT1udWxsP3I6MSkscyl9dmFyIEI1PWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3ZnPXR9Zmx1c2goKXt9b25SZXNpemUodCl7fWRlc3Ryb3lPYmplY3QodCl7dGhpcy5zdmcucmVtb3ZlQ2hpbGQodC5kb20pfXNldFVzZURhcmtNb2RlKHQpe31jcmVhdGVQYXRoRFN0cmluZyh0KXtpZighdC5sZW5ndGgpcmV0dXJuIiI7bGV0IGU9bmV3IEFycmF5KHQubGVuZ3RoLzIpO2VbMF09YE0ke3RbMF19LCR7dFsxXX1gO2ZvcihsZXQgbz0xO288dC5sZW5ndGgvMjtvKyspZVtvXT1gTCR7dFtvKjJdfSwke3RbbyoyKzFdfWA7cmV0dXJuIGUuam9pbigiIil9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxvKXtsZXQgaT1jSCh0PT1udWxsP3ZvaWQgMDp0LmRvbSwoKT0+e2xldCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7YS5zdHlsZS5maWxsPSJub25lIjtsZXQgcj10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKGUpO3JldHVybiBhLnNldEF0dHJpYnV0ZSgiZCIsciksdGhpcy5zdmcuYXBwZW5kQ2hpbGQoYSksYX0sYT0+e2lmKCEodCE9bnVsbCYmdC5kYXRhKXx8IWxIKGUsdD09bnVsbD92b2lkIDA6dC5kYXRhKSl7bGV0IHI9dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhlKTthLnNldEF0dHJpYnV0ZSgiZCIscil9cmV0dXJuIGF9LG8pO3JldHVybiBpPT09bnVsbD9udWxsOihpLnN0eWxlLnN0cm9rZVdpZHRoPVN0cmluZyhvLndpZHRoKSx7ZG9tOmksZGF0YTplfSl9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LGUsbyl7bGV0e3NpemU6aSxjb2xvcjphfT1vLHI9aSpNYXRoLnNxcnQoMykvMixzPW5ldyBGbG9hdDMyQXJyYXkoW2UueC1pLzIsZS55K3IvMyxlLngraS8yLGUueStyLzMsZS54LGUueS1yKjIvM10pLGw9Y0godD09bnVsbD92b2lkIDA6dC5kb20sKCk9PntsZXQgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpO2MuY2xhc3NMaXN0LmFkZCgidHJpYW5nbGUiKSxjLnN0eWxlLmZpbGw9Im5vbmUiO2xldCBtPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcocyk7cmV0dXJuIGMuc2V0QXR0cmlidXRlKCJkIixtKyJaIiksdGhpcy5zdmcuYXBwZW5kQ2hpbGQoYyksY30sYz0+e2xldCBtPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcocyk7cmV0dXJuIGMuc2V0QXR0cmlidXRlKCJkIixtKyJaIiksY30sbyk7cmV0dXJuIGw9PT1udWxsP251bGw6KGwuc3R5bGUuZmlsbD1hLHtkb206bCxkYXRhOnN9KX1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LGUsbyl7bGV0e2NvbG9yOmkscmFkaXVzOmF9PW8scj1jSCh0PT1udWxsP3ZvaWQgMDp0LmRvbSwoKT0+e2xldCBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJjaXJjbGUiKTtyZXR1cm4gcy5zdHlsZS5maWxsPWkscy5zZXRBdHRyaWJ1dGUoImN4IixTdHJpbmcoZS54KSkscy5zZXRBdHRyaWJ1dGUoImN5IixTdHJpbmcoZS55KSkscy5zZXRBdHRyaWJ1dGUoInIiLFN0cmluZyhhKSksdGhpcy5zdmcuYXBwZW5kQ2hpbGQocyksc30scz0+KHMuc3R5bGUuZmlsbD1pLHMuc2V0QXR0cmlidXRlKCJjeCIsU3RyaW5nKGUueCkpLHMuc2V0QXR0cmlidXRlKCJjeSIsU3RyaW5nKGUueSkpLHMuc2V0QXR0cmlidXRlKCJyIixTdHJpbmcoYSkpLHMpLG8pO3JldHVybiByPT09bnVsbD9udWxsOntkb206cixkYXRhOmV9fWNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHQsZSxvLGkpe2lmKGUueSE9PW8ueSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5wdXQgZXJyb3I6IHN0YXJ0LnkgIT0gZW5kLnkuIik7bGV0e2FsdGl0dWRlOmEsY29sb3I6cn09aSxzPTIvTWF0aC5zcXJ0KDMpKmEsbD1uZXcgRmxvYXQzMkFycmF5KFtlLngtcy8yLGUueSthLzIsZS54LGUueS1hLzIsby54LG8ueS1hLzIsby54K3MvMixvLnkrYS8yXSksYz1jSCh0PT1udWxsP3ZvaWQgMDp0LmRvbSwoKT0+e2xldCBtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7bS5jbGFzc0xpc3QuYWRkKCJ0cmFwZXpvaWQiKSxtLnN0eWxlLmZpbGw9Im5vbmUiO2xldCBmPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcobCk7cmV0dXJuIG0uc2V0QXR0cmlidXRlKCJkIixmKyJaIiksdGhpcy5zdmcuYXBwZW5kQ2hpbGQobSksbX0sbT0+e2xldCBmPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcobCk7cmV0dXJuIG0uc2V0QXR0cmlidXRlKCJkIixmKyJaIiksbX0saSk7cmV0dXJuIGM9PT1udWxsP251bGw6KGMuc3R5bGUuZmlsbD1yLHtkb206YyxkYXRhOmx9KX1kaXNwb3NlKCl7fX07dmFyIEpxPSIxMzciO3ZhciB4OHQ9MCxHcHQ9MSx2OHQ9Mjt2YXIgd2d0PTEsdzh0PTIsUTU9MyxuND0wLGxsPTEscFM9MixTZ3Q9MTt2YXIgRHg9MCxKNT0xLFdwdD0yLHFwdD0zLFpwdD00LFM4dD01LGlTPTEwMCxSOHQ9MTAxLEU4dD0xMDIsWHB0PTEwMyxRcHQ9MTA0LGs4dD0yMDAsTjh0PTIwMSxUOHQ9MjAyLEE4dD0yMDMsUmd0PTIwNCxFZ3Q9MjA1LEQ4dD0yMDYsSTh0PTIwNyx6OHQ9MjA4LEg4dD0yMDksRjh0PTIxMCxMOHQ9MCxCOHQ9MSxWOHQ9MixGVz0zLGo4dD00LFU4dD01LFk4dD02LEc4dD03LE1GPTAsVzh0PTEscTh0PTIsSXg9MCxaOHQ9MSxYOHQ9MixROHQ9MyxLOHQ9NCxKOHQ9NSxrZ3Q9MzAwLFM0PTMwMSxSND0zMDIsTFc9MzAzLEJXPTMwNCxiRj0zMDYsJHE9MzA3LFZXPTFlMyxuaD0xMDAxLGpXPTEwMDIsY2w9MTAwMyxLcHQ9MTAwNDt2YXIgSnB0PTEwMDU7dmFyIHdtPTEwMDYsJDh0PTEwMDc7dmFyIE9GPTEwMDg7dmFyIHp4PTEwMDksdEJ0PTEwMTAsZUJ0PTEwMTEsbzQ9MTAxMixuQnQ9MTAxMyxVSD0xMDE0LFQxPTEwMTUsbFM9MTAxNixvQnQ9MTAxNyxpQnQ9MTAxOCxjUz0xMDIwLGFCdD0xMDIxLFJmPTEwMjMsckJ0PTEwMjQsc0J0PTEwMjUsRDE9MTAyNixkUz0xMDI3LGxCdD0xMDI4LGNCdD0xMDI5LG1CdD0xMDMwLGZCdD0xMDMxLHBCdD0xMDMzLCQ5PTMzNzc2LHRXPTMzNzc3LGVXPTMzNzc4LG5XPTMzNzc5LCRwdD0zNTg0MCx0ZHQ9MzU4NDEsZWR0PTM1ODQyLG5kdD0zNTg0MyxkQnQ9MzYxOTYsb2R0PTM3NDkyLGlkdD0zNzQ5NixhZHQ9Mzc4MDgscmR0PTM3ODA5LHNkdD0zNzgxMCxsZHQ9Mzc4MTEsY2R0PTM3ODEyLG1kdD0zNzgxMyxmZHQ9Mzc4MTQscGR0PTM3ODE1LGRkdD0zNzgxNixnZHQ9Mzc4MTcsdWR0PTM3ODE4LGhkdD0zNzgxOSxfZHQ9Mzc4MjAsQ2R0PTM3ODIxLE1kdD0zNjQ5MixnQnQ9MjIwMCx1QnQ9MjIwMSxoQnQ9MjIwMixZSD0yMzAwLEdIPTIzMDEsb1c9MjMwMixhUz0yNDAwLHJTPTI0MDEsV0g9MjQwMix0Wj0yNTAwLE5ndD0yNTAxLF9CdD0wO3ZhciBMeD0zZTMsTXI9MzAwMSxDQnQ9MzIwMCxNQnQ9MzIwMSx2Uz0wLGJCdD0xO3ZhciBpVz03NjgwO3ZhciBPQnQ9NTE5LGk0PTM1MDQ0LHFIPTM1MDQ4O3ZhciBiZHQ9IjMwMCBlcyIsVVc9MTAzNSxxUD1jbGFzc3thZGRFdmVudExpc3RlbmVyKHQsZSl7dGhpcy5fbGlzdGVuZXJzPT09dm9pZCAwJiYodGhpcy5fbGlzdGVuZXJzPXt9KTtsZXQgbz10aGlzLl9saXN0ZW5lcnM7b1t0XT09PXZvaWQgMCYmKG9bdF09W10pLG9bdF0uaW5kZXhPZihlKT09PS0xJiZvW3RdLnB1c2goZSl9aGFzRXZlbnRMaXN0ZW5lcih0LGUpe2lmKHRoaXMuX2xpc3RlbmVycz09PXZvaWQgMClyZXR1cm4hMTtsZXQgbz10aGlzLl9saXN0ZW5lcnM7cmV0dXJuIG9bdF0hPT12b2lkIDAmJm9bdF0uaW5kZXhPZihlKSE9PS0xfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKXtpZih0aGlzLl9saXN0ZW5lcnM9PT12b2lkIDApcmV0dXJuO2xldCBpPXRoaXMuX2xpc3RlbmVyc1t0XTtpZihpIT09dm9pZCAwKXtsZXQgYT1pLmluZGV4T2YoZSk7YSE9PS0xJiZpLnNwbGljZShhLDEpfX1kaXNwYXRjaEV2ZW50KHQpe2lmKHRoaXMuX2xpc3RlbmVycz09PXZvaWQgMClyZXR1cm47bGV0IG89dGhpcy5fbGlzdGVuZXJzW3QudHlwZV07aWYobyE9PXZvaWQgMCl7dC50YXJnZXQ9dGhpcztsZXQgaT1vLnNsaWNlKDApO2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErKylpW2FdLmNhbGwodGhpcyx0KTt0LnRhcmdldD1udWxsfX19LHdjPVtdO2ZvcihsZXQgbj0wO248MjU2O24rKyl3Y1tuXT0objwxNj8iMCI6IiIpK24udG9TdHJpbmcoMTYpO3ZhciBhVz1NYXRoLlBJLzE4MCxZVz0xODAvTWF0aC5QSTtmdW5jdGlvbiBzYigpe2xldCBuPU1hdGgucmFuZG9tKCkqNDI5NDk2NzI5NXwwLHQ9TWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk1fDAsZT1NYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTV8MCxvPU1hdGgucmFuZG9tKCkqNDI5NDk2NzI5NXwwO3JldHVybih3Y1tuJjI1NV0rd2Nbbj4+OCYyNTVdK3djW24+PjE2JjI1NV0rd2Nbbj4+MjQmMjU1XSsiLSIrd2NbdCYyNTVdK3djW3Q+PjgmMjU1XSsiLSIrd2NbdD4+MTYmMTV8NjRdK3djW3Q+PjI0JjI1NV0rIi0iK3djW2UmNjN8MTI4XSt3Y1tlPj44JjI1NV0rIi0iK3djW2U+PjE2JjI1NV0rd2NbZT4+MjQmMjU1XSt3Y1tvJjI1NV0rd2Nbbz4+OCYyNTVdK3djW28+PjE2JjI1NV0rd2Nbbz4+MjQmMjU1XSkudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBrZChuLHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSl9ZnVuY3Rpb24gUEJ0KG4sdCl7cmV0dXJuKG4ldCt0KSV0fWZ1bmN0aW9uIHJXKG4sdCxlKXtyZXR1cm4oMS1lKSpuK2UqdH1mdW5jdGlvbiBPZHQobil7cmV0dXJuKG4mbi0xKT09PTAmJm4hPT0wfWZ1bmN0aW9uIHlCdChuKXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGguTE4yKSl9dmFyIFNlPWNsYXNze2NvbnN0cnVjdG9yKHQ9MCxlPTApe3RoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gZSE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2xldCBlPXRoaXMueCxvPXRoaXMueSxpPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1pWzBdKmUraVszXSpvK2lbNl0sdGhpcy55PWlbMV0qZStpWzRdKm8raVs3XSx0aGlzfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzfWNsYW1wKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4oZS54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4oZS55LHRoaXMueSkpLHRoaXN9Y2xhbXBTY2FsYXIodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueSkpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtsZXQgbz10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihvfHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsbykpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueX1jcm9zcyh0KXtyZXR1cm4gdGhpcy54KnQueS10aGlzLnkqdC54fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueX1sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSl9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9YW5nbGUoKXtyZXR1cm4gTWF0aC5hdGFuMigtdGhpcy55LC10aGlzLngpK01hdGguUEl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2xldCBlPXRoaXMueC10Lngsbz10aGlzLnktdC55O3JldHVybiBlKmUrbypvfW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxvKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbyx0aGlzLnk9dC55KyhlLnktdC55KSpvLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxvKXtyZXR1cm4gbyE9PXZvaWQgMCYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7bGV0IG89TWF0aC5jb3MoZSksaT1NYXRoLnNpbihlKSxhPXRoaXMueC10Lngscj10aGlzLnktdC55O3JldHVybiB0aGlzLng9YSpvLXIqaSt0LngsdGhpcy55PWEqaStyKm8rdC55LHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXN9KltTeW1ib2wuaXRlcmF0b3JdKCl7eWllbGQgdGhpcy54LHlpZWxkIHRoaXMueX19O1NlLnByb3RvdHlwZS5pc1ZlY3RvcjI9ITA7dmFyIG1sPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5lbGVtZW50cz1bMSwwLDAsMCwxLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG8saSxhLHIscyxsLGMpe2xldCBtPXRoaXMuZWxlbWVudHM7cmV0dXJuIG1bMF09dCxtWzFdPWksbVsyXT1zLG1bM109ZSxtWzRdPWEsbVs1XT1sLG1bNl09byxtWzddPXIsbVs4XT1jLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwxLDAsMCwwLDEpLHRoaXN9Y29weSh0KXtsZXQgZT10aGlzLmVsZW1lbnRzLG89dC5lbGVtZW50cztyZXR1cm4gZVswXT1vWzBdLGVbMV09b1sxXSxlWzJdPW9bMl0sZVszXT1vWzNdLGVbNF09b1s0XSxlWzVdPW9bNV0sZVs2XT1vWzZdLGVbN109b1s3XSxlWzhdPW9bOF0sdGhpc31leHRyYWN0QmFzaXModCxlLG8pe3JldHVybiB0LnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDEpLG8uc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywyKSx0aGlzfXNldEZyb21NYXRyaXg0KHQpe2xldCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVs0XSxlWzhdLGVbMV0sZVs1XSxlWzldLGVbMl0sZVs2XSxlWzEwXSksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtsZXQgbz10LmVsZW1lbnRzLGk9ZS5lbGVtZW50cyxhPXRoaXMuZWxlbWVudHMscj1vWzBdLHM9b1szXSxsPW9bNl0sYz1vWzFdLG09b1s0XSxmPW9bN10scD1vWzJdLGc9b1s1XSxfPW9bOF0sTT1pWzBdLHk9aVszXSxPPWlbNl0sYj1pWzFdLFI9aVs0XSxFPWlbN10saj1pWzJdLHJ0PWlbNV0sSj1pWzhdO3JldHVybiBhWzBdPXIqTStzKmIrbCpqLGFbM109cip5K3MqUitsKnJ0LGFbNl09cipPK3MqRStsKkosYVsxXT1jKk0rbSpiK2YqaixhWzRdPWMqeSttKlIrZipydCxhWzddPWMqTyttKkUrZipKLGFbMl09cCpNK2cqYitfKmosYVs1XT1wKnkrZypSK18qcnQsYVs4XT1wKk8rZypFK18qSix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2xldCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVszXSo9dCxlWzZdKj10LGVbMV0qPXQsZVs0XSo9dCxlWzddKj10LGVbMl0qPXQsZVs1XSo9dCxlWzhdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtsZXQgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxvPXRbMV0saT10WzJdLGE9dFszXSxyPXRbNF0scz10WzVdLGw9dFs2XSxjPXRbN10sbT10WzhdO3JldHVybiBlKnIqbS1lKnMqYy1vKmEqbStvKnMqbCtpKmEqYy1pKnIqbH1pbnZlcnQoKXtsZXQgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxvPXRbMV0saT10WzJdLGE9dFszXSxyPXRbNF0scz10WzVdLGw9dFs2XSxjPXRbN10sbT10WzhdLGY9bSpyLXMqYyxwPXMqbC1tKmEsZz1jKmEtcipsLF89ZSpmK28qcCtpKmc7aWYoXz09PTApcmV0dXJuIHRoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCwwKTtsZXQgTT0xL187cmV0dXJuIHRbMF09ZipNLHRbMV09KGkqYy1tKm8pKk0sdFsyXT0ocypvLWkqcikqTSx0WzNdPXAqTSx0WzRdPShtKmUtaSpsKSpNLHRbNV09KGkqYS1zKmUpKk0sdFs2XT1nKk0sdFs3XT0obypsLWMqZSkqTSx0WzhdPShyKmUtbyphKSpNLHRoaXN9dHJhbnNwb3NlKCl7bGV0IHQsZT10aGlzLmVsZW1lbnRzO3JldHVybiB0PWVbMV0sZVsxXT1lWzNdLGVbM109dCx0PWVbMl0sZVsyXT1lWzZdLGVbNl09dCx0PWVbNV0sZVs1XT1lWzddLGVbN109dCx0aGlzfWdldE5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4NCh0KS5pbnZlcnQoKS50cmFuc3Bvc2UoKX10cmFuc3Bvc2VJbnRvQXJyYXkodCl7bGV0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVszXSx0WzJdPWVbNl0sdFszXT1lWzFdLHRbNF09ZVs0XSx0WzVdPWVbN10sdFs2XT1lWzJdLHRbN109ZVs1XSx0WzhdPWVbOF0sdGhpc31zZXRVdlRyYW5zZm9ybSh0LGUsbyxpLGEscixzKXtsZXQgbD1NYXRoLmNvcyhhKSxjPU1hdGguc2luKGEpO3JldHVybiB0aGlzLnNldChvKmwsbypjLC1vKihsKnIrYypzKStyK3QsLWkqYyxpKmwsLWkqKC1jKnIrbCpzKStzK2UsMCwwLDEpLHRoaXN9c2NhbGUodCxlKXtsZXQgbz10aGlzLmVsZW1lbnRzO3JldHVybiBvWzBdKj10LG9bM10qPXQsb1s2XSo9dCxvWzFdKj1lLG9bNF0qPWUsb1s3XSo9ZSx0aGlzfXJvdGF0ZSh0KXtsZXQgZT1NYXRoLmNvcyh0KSxvPU1hdGguc2luKHQpLGk9dGhpcy5lbGVtZW50cyxhPWlbMF0scj1pWzNdLHM9aVs2XSxsPWlbMV0sYz1pWzRdLG09aVs3XTtyZXR1cm4gaVswXT1lKmErbypsLGlbM109ZSpyK28qYyxpWzZdPWUqcytvKm0saVsxXT0tbyphK2UqbCxpWzRdPS1vKnIrZSpjLGlbN109LW8qcytlKm0sdGhpc310cmFuc2xhdGUodCxlKXtsZXQgbz10aGlzLmVsZW1lbnRzO3JldHVybiBvWzBdKz10Km9bMl0sb1szXSs9dCpvWzVdLG9bNl0rPXQqb1s4XSxvWzFdKz1lKm9bMl0sb1s0XSs9ZSpvWzVdLG9bN10rPWUqb1s4XSx0aGlzfWVxdWFscyh0KXtsZXQgZT10aGlzLmVsZW1lbnRzLG89dC5lbGVtZW50cztmb3IobGV0IGk9MDtpPDk7aSsrKWlmKGVbaV0hPT1vW2ldKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBvPTA7bzw5O28rKyl0aGlzLmVsZW1lbnRzW29dPXRbbytlXTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtsZXQgbz10aGlzLmVsZW1lbnRzO3JldHVybiB0W2VdPW9bMF0sdFtlKzFdPW9bMV0sdFtlKzJdPW9bMl0sdFtlKzNdPW9bM10sdFtlKzRdPW9bNF0sdFtlKzVdPW9bNV0sdFtlKzZdPW9bNl0sdFtlKzddPW9bN10sdFtlKzhdPW9bOF0sdH1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmZyb21BcnJheSh0aGlzLmVsZW1lbnRzKX19O21sLnByb3RvdHlwZS5pc01hdHJpeDM9ITA7ZnVuY3Rpb24gVGd0KG4pe2ZvcihsZXQgdD1uLmxlbmd0aC0xO3Q+PTA7LS10KWlmKG5bdF0+NjU1MzUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gYTQobil7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsbil9dmFyIEFndD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSxvYj17aDowLHM6MCxsOjB9LG1IPXtoOjAsczowLGw6MH07ZnVuY3Rpb24gc1cobix0LGUpe3JldHVybiBlPDAmJihlKz0xKSxlPjEmJihlLT0xKSxlPDEvNj9uKyh0LW4pKjYqZTplPDEvMj90OmU8Mi8zP24rKHQtbikqNiooMi8zLWUpOm59ZnVuY3Rpb24gbVMobil7cmV0dXJuIG48LjA0MDQ1P24qLjA3NzM5OTM4MDg6TWF0aC5wb3cobiouOTQ3ODY3Mjk4NisuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIGxXKG4pe3JldHVybiBuPC4wMDMxMzA4P24qMTIuOTI6MS4wNTUqTWF0aC5wb3cobiwuNDE2NjYpLS4wNTV9dmFyIHpuPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXtyZXR1cm4gZT09PXZvaWQgMCYmbz09PXZvaWQgMD90aGlzLnNldCh0KTp0aGlzLnNldFJHQih0LGUsbyl9c2V0KHQpe3JldHVybiB0JiZ0LmlzQ29sb3I/dGhpcy5jb3B5KHQpOnR5cGVvZiB0PT0ibnVtYmVyIj90aGlzLnNldEhleCh0KTp0eXBlb2YgdD09InN0cmluZyImJnRoaXMuc2V0U3R5bGUodCksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMucj10LHRoaXMuZz10LHRoaXMuYj10LHRoaXN9c2V0SGV4KHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksdGhpcy5yPSh0Pj4xNiYyNTUpLzI1NSx0aGlzLmc9KHQ+PjgmMjU1KS8yNTUsdGhpcy5iPSh0JjI1NSkvMjU1LHRoaXN9c2V0UkdCKHQsZSxvKXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPW8sdGhpc31zZXRIU0wodCxlLG8pe2lmKHQ9UEJ0KHQsMSksZT1rZChlLDAsMSksbz1rZChvLDAsMSksZT09PTApdGhpcy5yPXRoaXMuZz10aGlzLmI9bztlbHNle2xldCBpPW88PS41P28qKDErZSk6bytlLW8qZSxhPTIqby1pO3RoaXMucj1zVyhhLGksdCsxLzMpLHRoaXMuZz1zVyhhLGksdCksdGhpcy5iPXNXKGEsaSx0LTEvMyl9cmV0dXJuIHRoaXN9c2V0U3R5bGUodCl7ZnVuY3Rpb24gZShpKXtpIT09dm9pZCAwJiZwYXJzZUZsb2F0KGkpPDEmJmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAiK3QrIiB3aWxsIGJlIGlnbm9yZWQuIil9bGV0IG87aWYobz0vXigoPzpyZ2J8aHNsKWE/KVwoKFteXCldKilcKS8uZXhlYyh0KSl7bGV0IGksYT1vWzFdLHI9b1syXTtzd2l0Y2goYSl7Y2FzZSJyZ2IiOmNhc2UicmdiYSI6aWYoaT0vXlxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKHIpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMjU1LHBhcnNlSW50KGlbMV0sMTApKS8yNTUsdGhpcy5nPU1hdGgubWluKDI1NSxwYXJzZUludChpWzJdLDEwKSkvMjU1LHRoaXMuYj1NYXRoLm1pbigyNTUscGFyc2VJbnQoaVszXSwxMCkpLzI1NSxlKGlbNF0pLHRoaXM7aWYoaT0vXlxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKHIpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMTAwLHBhcnNlSW50KGlbMV0sMTApKS8xMDAsdGhpcy5nPU1hdGgubWluKDEwMCxwYXJzZUludChpWzJdLDEwKSkvMTAwLHRoaXMuYj1NYXRoLm1pbigxMDAscGFyc2VJbnQoaVszXSwxMCkpLzEwMCxlKGlbNF0pLHRoaXM7YnJlYWs7Y2FzZSJoc2wiOmNhc2UiaHNsYSI6aWYoaT0vXlxzKihcZCpcLj9cZCspXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhyKSl7bGV0IHM9cGFyc2VGbG9hdChpWzFdKS8zNjAsbD1wYXJzZUludChpWzJdLDEwKS8xMDAsYz1wYXJzZUludChpWzNdLDEwKS8xMDA7cmV0dXJuIGUoaVs0XSksdGhpcy5zZXRIU0wocyxsLGMpfWJyZWFrfX1lbHNlIGlmKG89L15cIyhbQS1GYS1mXGRdKykkLy5leGVjKHQpKXtsZXQgaT1vWzFdLGE9aS5sZW5ndGg7aWYoYT09PTMpcmV0dXJuIHRoaXMucj1wYXJzZUludChpLmNoYXJBdCgwKStpLmNoYXJBdCgwKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludChpLmNoYXJBdCgxKStpLmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludChpLmNoYXJBdCgyKStpLmNoYXJBdCgyKSwxNikvMjU1LHRoaXM7aWYoYT09PTYpcmV0dXJuIHRoaXMucj1wYXJzZUludChpLmNoYXJBdCgwKStpLmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludChpLmNoYXJBdCgyKStpLmNoYXJBdCgzKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludChpLmNoYXJBdCg0KStpLmNoYXJBdCg1KSwxNikvMjU1LHRoaXN9cmV0dXJuIHQmJnQubGVuZ3RoPjA/dGhpcy5zZXRDb2xvck5hbWUodCk6dGhpc31zZXRDb2xvck5hbWUodCl7bGV0IGU9QWd0W3QudG9Mb3dlckNhc2UoKV07cmV0dXJuIGUhPT12b2lkIDA/dGhpcy5zZXRIZXgoZSk6Y29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogVW5rbm93biBjb2xvciAiK3QpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfWNvcHkodCl7cmV0dXJuIHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iLHRoaXN9Y29weVNSR0JUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5yPW1TKHQuciksdGhpcy5nPW1TKHQuZyksdGhpcy5iPW1TKHQuYiksdGhpc31jb3B5TGluZWFyVG9TUkdCKHQpe3JldHVybiB0aGlzLnI9bFcodC5yKSx0aGlzLmc9bFcodC5nKSx0aGlzLmI9bFcodC5iKSx0aGlzfWNvbnZlcnRTUkdCVG9MaW5lYXIoKXtyZXR1cm4gdGhpcy5jb3B5U1JHQlRvTGluZWFyKHRoaXMpLHRoaXN9Y29udmVydExpbmVhclRvU1JHQigpe3JldHVybiB0aGlzLmNvcHlMaW5lYXJUb1NSR0IodGhpcyksdGhpc31nZXRIZXgoKXtyZXR1cm4gdGhpcy5yKjI1NTw8MTZedGhpcy5nKjI1NTw8OF50aGlzLmIqMjU1PDwwfWdldEhleFN0cmluZygpe3JldHVybigiMDAwMDAwIit0aGlzLmdldEhleCgpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpfWdldEhTTCh0KXtsZXQgZT10aGlzLnIsbz10aGlzLmcsaT10aGlzLmIsYT1NYXRoLm1heChlLG8saSkscj1NYXRoLm1pbihlLG8saSkscyxsLGM9KHIrYSkvMjtpZihyPT09YSlzPTAsbD0wO2Vsc2V7bGV0IG09YS1yO3N3aXRjaChsPWM8PS41P20vKGErcik6bS8oMi1hLXIpLGEpe2Nhc2UgZTpzPShvLWkpL20rKG88aT82OjApO2JyZWFrO2Nhc2UgbzpzPShpLWUpL20rMjticmVhaztjYXNlIGk6cz0oZS1vKS9tKzQ7YnJlYWt9cy89Nn1yZXR1cm4gdC5oPXMsdC5zPWwsdC5sPWMsdH1nZXRTdHlsZSgpe3JldHVybiJyZ2IoIisodGhpcy5yKjI1NXwwKSsiLCIrKHRoaXMuZyoyNTV8MCkrIiwiKyh0aGlzLmIqMjU1fDApKyIpIn1vZmZzZXRIU0wodCxlLG8pe3JldHVybiB0aGlzLmdldEhTTChvYiksb2IuaCs9dCxvYi5zKz1lLG9iLmwrPW8sdGhpcy5zZXRIU0wob2IuaCxvYi5zLG9iLmwpLHRoaXN9YWRkKHQpe3JldHVybiB0aGlzLnIrPXQucix0aGlzLmcrPXQuZyx0aGlzLmIrPXQuYix0aGlzfWFkZENvbG9ycyh0LGUpe3JldHVybiB0aGlzLnI9dC5yK2Uucix0aGlzLmc9dC5nK2UuZyx0aGlzLmI9dC5iK2UuYix0aGlzfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKz10LHRoaXMuZys9dCx0aGlzLmIrPXQsdGhpc31zdWIodCl7cmV0dXJuIHRoaXMucj1NYXRoLm1heCgwLHRoaXMuci10LnIpLHRoaXMuZz1NYXRoLm1heCgwLHRoaXMuZy10LmcpLHRoaXMuYj1NYXRoLm1heCgwLHRoaXMuYi10LmIpLHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMucio9dC5yLHRoaXMuZyo9dC5nLHRoaXMuYio9dC5iLHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMucio9dCx0aGlzLmcqPXQsdGhpcy5iKj10LHRoaXN9bGVycCh0LGUpe3JldHVybiB0aGlzLnIrPSh0LnItdGhpcy5yKSplLHRoaXMuZys9KHQuZy10aGlzLmcpKmUsdGhpcy5iKz0odC5iLXRoaXMuYikqZSx0aGlzfWxlcnBDb2xvcnModCxlLG8pe3JldHVybiB0aGlzLnI9dC5yKyhlLnItdC5yKSpvLHRoaXMuZz10LmcrKGUuZy10LmcpKm8sdGhpcy5iPXQuYisoZS5iLXQuYikqbyx0aGlzfWxlcnBIU0wodCxlKXt0aGlzLmdldEhTTChvYiksdC5nZXRIU0wobUgpO2xldCBvPXJXKG9iLmgsbUguaCxlKSxpPXJXKG9iLnMsbUgucyxlKSxhPXJXKG9iLmwsbUgubCxlKTtyZXR1cm4gdGhpcy5zZXRIU0wobyxpLGEpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnI9PT10aGlzLnImJnQuZz09PXRoaXMuZyYmdC5iPT09dGhpcy5ifWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMucj10W2VdLHRoaXMuZz10W2UrMV0sdGhpcy5iPXRbZSsyXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMucix0W2UrMV09dGhpcy5nLHRbZSsyXT10aGlzLmIsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSl7cmV0dXJuIHRoaXMucj10LmdldFgoZSksdGhpcy5nPXQuZ2V0WShlKSx0aGlzLmI9dC5nZXRaKGUpLHQubm9ybWFsaXplZD09PSEwJiYodGhpcy5yLz0yNTUsdGhpcy5nLz0yNTUsdGhpcy5iLz0yNTUpLHRoaXN9dG9KU09OKCl7cmV0dXJuIHRoaXMuZ2V0SGV4KCl9fTt6bi5OQU1FUz1BZ3Q7em4ucHJvdG90eXBlLmlzQ29sb3I9ITA7em4ucHJvdG90eXBlLnI9MTt6bi5wcm90b3R5cGUuZz0xO3puLnByb3RvdHlwZS5iPTE7dmFyIEwyLFpQPWNsYXNze3N0YXRpYyBnZXREYXRhVVJMKHQpe2lmKC9eZGF0YTovaS50ZXN0KHQuc3JjKXx8dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50PT0idW5kZWZpbmVkIilyZXR1cm4gdC5zcmM7bGV0IGU7aWYodCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50KWU9dDtlbHNle0wyPT09dm9pZCAwJiYoTDI9YTQoImNhbnZhcyIpKSxMMi53aWR0aD10LndpZHRoLEwyLmhlaWdodD10LmhlaWdodDtsZXQgbz1MMi5nZXRDb250ZXh0KCIyZCIpO3QgaW5zdGFuY2VvZiBJbWFnZURhdGE/by5wdXRJbWFnZURhdGEodCwwLDApOm8uZHJhd0ltYWdlKHQsMCwwLHQud2lkdGgsdC5oZWlnaHQpLGU9TDJ9cmV0dXJuIGUud2lkdGg+MjA0OHx8ZS5oZWlnaHQ+MjA0OD8oY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmdldERhdGFVUkw6IEltYWdlIGNvbnZlcnRlZCB0byBqcGcgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMiLHQpLGUudG9EYXRhVVJMKCJpbWFnZS9qcGVnIiwuNikpOmUudG9EYXRhVVJMKCJpbWFnZS9wbmciKX1zdGF0aWMgc1JHQlRvTGluZWFyKHQpe2lmKHR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50IT0idW5kZWZpbmVkIiYmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fHR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCE9InVuZGVmaW5lZCImJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8dHlwZW9mIEltYWdlQml0bWFwIT0idW5kZWZpbmVkIiYmdCBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXtsZXQgZT1hNCgiY2FudmFzIik7ZS53aWR0aD10LndpZHRoLGUuaGVpZ2h0PXQuaGVpZ2h0O2xldCBvPWUuZ2V0Q29udGV4dCgiMmQiKTtvLmRyYXdJbWFnZSh0LDAsMCx0LndpZHRoLHQuaGVpZ2h0KTtsZXQgaT1vLmdldEltYWdlRGF0YSgwLDAsdC53aWR0aCx0LmhlaWdodCksYT1pLmRhdGE7Zm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKyspYVtyXT1tUyhhW3JdLzI1NSkqMjU1O3JldHVybiBvLnB1dEltYWdlRGF0YShpLDAsMCksZX1lbHNlIGlmKHQuZGF0YSl7bGV0IGU9dC5kYXRhLnNsaWNlKDApO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bysrKWUgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxlIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXk/ZVtvXT1NYXRoLmZsb29yKG1TKGVbb10vMjU1KSoyNTUpOmVbb109bVMoZVtvXSk7cmV0dXJue2RhdGE6ZSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19ZWxzZSByZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLnNSR0JUb0xpbmVhcigpOiBVbnN1cHBvcnRlZCBpbWFnZSB0eXBlLiBObyBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGFwcGxpZWQuIiksdH19LHhCdD0wLEdzPWNsYXNzIGV4dGVuZHMgcVB7Y29uc3RydWN0b3IodD1Hcy5ERUZBVUxUX0lNQUdFLGU9R3MuREVGQVVMVF9NQVBQSU5HLG89bmgsaT1uaCxhPXdtLHI9T0Yscz1SZixsPXp4LGM9MSxtPUx4KXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOnhCdCsrfSksdGhpcy51dWlkPXNiKCksdGhpcy5uYW1lPSIiLHRoaXMuaW1hZ2U9dCx0aGlzLm1pcG1hcHM9W10sdGhpcy5tYXBwaW5nPWUsdGhpcy53cmFwUz1vLHRoaXMud3JhcFQ9aSx0aGlzLm1hZ0ZpbHRlcj1hLHRoaXMubWluRmlsdGVyPXIsdGhpcy5hbmlzb3Ryb3B5PWMsdGhpcy5mb3JtYXQ9cyx0aGlzLmludGVybmFsRm9ybWF0PW51bGwsdGhpcy50eXBlPWwsdGhpcy5vZmZzZXQ9bmV3IFNlKDAsMCksdGhpcy5yZXBlYXQ9bmV3IFNlKDEsMSksdGhpcy5jZW50ZXI9bmV3IFNlKDAsMCksdGhpcy5yb3RhdGlvbj0wLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMCx0aGlzLm1hdHJpeD1uZXcgbWwsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITAsdGhpcy5wcmVtdWx0aXBseUFscGhhPSExLHRoaXMuZmxpcFk9ITAsdGhpcy51bnBhY2tBbGlnbm1lbnQ9NCx0aGlzLmVuY29kaW5nPW0sdGhpcy51c2VyRGF0YT17fSx0aGlzLnZlcnNpb249MCx0aGlzLm9uVXBkYXRlPW51bGwsdGhpcy5pc1JlbmRlclRhcmdldFRleHR1cmU9ITEsdGhpcy5uZWVkc1BNUkVNVXBkYXRlPSExfXVwZGF0ZU1hdHJpeCgpe3RoaXMubWF0cml4LnNldFV2VHJhbnNmb3JtKHRoaXMub2Zmc2V0LngsdGhpcy5vZmZzZXQueSx0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnksdGhpcy5yb3RhdGlvbix0aGlzLmNlbnRlci54LHRoaXMuY2VudGVyLnkpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaW1hZ2U9dC5pbWFnZSx0aGlzLm1pcG1hcHM9dC5taXBtYXBzLnNsaWNlKDApLHRoaXMubWFwcGluZz10Lm1hcHBpbmcsdGhpcy53cmFwUz10LndyYXBTLHRoaXMud3JhcFQ9dC53cmFwVCx0aGlzLm1hZ0ZpbHRlcj10Lm1hZ0ZpbHRlcix0aGlzLm1pbkZpbHRlcj10Lm1pbkZpbHRlcix0aGlzLmFuaXNvdHJvcHk9dC5hbmlzb3Ryb3B5LHRoaXMuZm9ybWF0PXQuZm9ybWF0LHRoaXMuaW50ZXJuYWxGb3JtYXQ9dC5pbnRlcm5hbEZvcm1hdCx0aGlzLnR5cGU9dC50eXBlLHRoaXMub2Zmc2V0LmNvcHkodC5vZmZzZXQpLHRoaXMucmVwZWF0LmNvcHkodC5yZXBlYXQpLHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPXQuZ2VuZXJhdGVNaXBtYXBzLHRoaXMucHJlbXVsdGlwbHlBbHBoYT10LnByZW11bHRpcGx5QWxwaGEsdGhpcy5mbGlwWT10LmZsaXBZLHRoaXMudW5wYWNrQWxpZ25tZW50PXQudW5wYWNrQWxpZ25tZW50LHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyx0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLHRoaXN9dG9KU09OKHQpe2xldCBlPXQ9PT12b2lkIDB8fHR5cGVvZiB0PT0ic3RyaW5nIjtpZighZSYmdC50ZXh0dXJlc1t0aGlzLnV1aWRdIT09dm9pZCAwKXJldHVybiB0LnRleHR1cmVzW3RoaXMudXVpZF07bGV0IG89e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHRoaXMuaW1hZ2UhPT12b2lkIDApe2xldCBpPXRoaXMuaW1hZ2U7aWYoaS51dWlkPT09dm9pZCAwJiYoaS51dWlkPXNiKCkpLCFlJiZ0LmltYWdlc1tpLnV1aWRdPT09dm9pZCAwKXtsZXQgYTtpZihBcnJheS5pc0FycmF5KGkpKXthPVtdO2ZvcihsZXQgcj0wLHM9aS5sZW5ndGg7cjxzO3IrKylpW3JdLmlzRGF0YVRleHR1cmU/YS5wdXNoKGNXKGlbcl0uaW1hZ2UpKTphLnB1c2goY1coaVtyXSkpfWVsc2UgYT1jVyhpKTt0LmltYWdlc1tpLnV1aWRdPXt1dWlkOmkudXVpZCx1cmw6YX19by5pbWFnZT1pLnV1aWR9cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpIT09Int9IiYmKG8udXNlckRhdGE9dGhpcy51c2VyRGF0YSksZXx8KHQudGV4dHVyZXNbdGhpcy51dWlkXT1vKSxvfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9dHJhbnNmb3JtVXYodCl7aWYodGhpcy5tYXBwaW5nIT09a2d0KXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgVlc6dC54PXQueC1NYXRoLmZsb29yKHQueCk7YnJlYWs7Y2FzZSBuaDp0Lng9dC54PDA/MDoxO2JyZWFrO2Nhc2Ugalc6TWF0aC5hYnMoTWF0aC5mbG9vcih0LngpJTIpPT09MT90Lng9TWF0aC5jZWlsKHQueCktdC54OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrfWlmKHQueTwwfHx0Lnk+MSlzd2l0Y2godGhpcy53cmFwVCl7Y2FzZSBWVzp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIG5oOnQueT10Lnk8MD8wOjE7YnJlYWs7Y2FzZSBqVzpNYXRoLmFicyhNYXRoLmZsb29yKHQueSklMik9PT0xP3QueT1NYXRoLmNlaWwodC55KS10Lnk6dC55PXQueS1NYXRoLmZsb29yKHQueSk7YnJlYWt9cmV0dXJuIHRoaXMuZmxpcFkmJih0Lnk9MS10LnkpLHR9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9fTtHcy5ERUZBVUxUX0lNQUdFPXZvaWQgMDtHcy5ERUZBVUxUX01BUFBJTkc9a2d0O0dzLnByb3RvdHlwZS5pc1RleHR1cmU9ITA7ZnVuY3Rpb24gY1cobil7cmV0dXJuIHR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50IT0idW5kZWZpbmVkIiYmbiBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fHR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCE9InVuZGVmaW5lZCImJm4gaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8dHlwZW9mIEltYWdlQml0bWFwIT0idW5kZWZpbmVkIiYmbiBpbnN0YW5jZW9mIEltYWdlQml0bWFwP1pQLmdldERhdGFVUkwobik6bi5kYXRhP3tkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG4uZGF0YSksd2lkdGg6bi53aWR0aCxoZWlnaHQ6bi5oZWlnaHQsdHlwZTpuLmRhdGEuY29uc3RydWN0b3IubmFtZX06KGNvbnNvbGUud2FybigiVEhSRUUuVGV4dHVyZTogVW5hYmxlIHRvIHNlcmlhbGl6ZSBUZXh0dXJlLiIpLHt9KX12YXIgY2E9Y2xhc3N7Y29uc3RydWN0b3IodD0wLGU9MCxvPTAsaT0xKXt0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9byx0aGlzLnc9aX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy56fXNldCB3aWR0aCh0KXt0aGlzLno9dH1nZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMud31zZXQgaGVpZ2h0KHQpe3RoaXMudz10fXNldCh0LGUsbyxpKXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW8sdGhpcy53PWksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXMudz10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Vyh0KXtyZXR1cm4gdGhpcy53PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztjYXNlIDI6dGhpcy56PWU7YnJlYWs7Y2FzZSAzOnRoaXMudz1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtjYXNlIDM6cmV0dXJuIHRoaXMudztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueix0aGlzLncpfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXMudz10LnchPT12b2lkIDA/dC53OjEsdGhpc31hZGQodCxlKXtyZXR1cm4gZSE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzLncrPXQudyx0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXMudys9dCx0aGlzfWFkZFZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCtlLngsdGhpcy55PXQueStlLnksdGhpcy56PXQueitlLnosdGhpcy53PXQudytlLncsdGhpc31hZGRTY2FsZWRWZWN0b3IodCxlKXtyZXR1cm4gdGhpcy54Kz10LngqZSx0aGlzLnkrPXQueSplLHRoaXMueis9dC56KmUsdGhpcy53Kz10LncqZSx0aGlzfXN1Yih0LGUpe3JldHVybiBlIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMudy09dC53LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpcy53LT10LHRoaXN9c3ViVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54LWUueCx0aGlzLnk9dC55LWUueSx0aGlzLno9dC56LWUueix0aGlzLnc9dC53LWUudyx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzLncqPXQudyx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzLncqPXQsdGhpc31hcHBseU1hdHJpeDQodCl7bGV0IGU9dGhpcy54LG89dGhpcy55LGk9dGhpcy56LGE9dGhpcy53LHI9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PXJbMF0qZStyWzRdKm8rcls4XSppK3JbMTJdKmEsdGhpcy55PXJbMV0qZStyWzVdKm8rcls5XSppK3JbMTNdKmEsdGhpcy56PXJbMl0qZStyWzZdKm8rclsxMF0qaStyWzE0XSphLHRoaXMudz1yWzNdKmUrcls3XSpvK3JbMTFdKmkrclsxNV0qYSx0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfXNldEF4aXNBbmdsZUZyb21RdWF0ZXJuaW9uKHQpe3RoaXMudz0yKk1hdGguYWNvcyh0LncpO2xldCBlPU1hdGguc3FydCgxLXQudyp0LncpO3JldHVybiBlPDFlLTQ/KHRoaXMueD0xLHRoaXMueT0wLHRoaXMuej0wKToodGhpcy54PXQueC9lLHRoaXMueT10LnkvZSx0aGlzLno9dC56L2UpLHRoaXN9c2V0QXhpc0FuZ2xlRnJvbVJvdGF0aW9uTWF0cml4KHQpe2xldCBlLG8saSxhLGw9dC5lbGVtZW50cyxjPWxbMF0sbT1sWzRdLGY9bFs4XSxwPWxbMV0sZz1sWzVdLF89bFs5XSxNPWxbMl0seT1sWzZdLE89bFsxMF07aWYoTWF0aC5hYnMobS1wKTwuMDEmJk1hdGguYWJzKGYtTSk8LjAxJiZNYXRoLmFicyhfLXkpPC4wMSl7aWYoTWF0aC5hYnMobStwKTwuMSYmTWF0aC5hYnMoZitNKTwuMSYmTWF0aC5hYnMoXyt5KTwuMSYmTWF0aC5hYnMoYytnK08tMyk8LjEpcmV0dXJuIHRoaXMuc2V0KDEsMCwwLDApLHRoaXM7ZT1NYXRoLlBJO2xldCBSPShjKzEpLzIsRT0oZysxKS8yLGo9KE8rMSkvMixydD0obStwKS80LEo9KGYrTSkvNCxFdD0oXyt5KS80O3JldHVybiBSPkUmJlI+aj9SPC4wMT8obz0wLGk9LjcwNzEwNjc4MSxhPS43MDcxMDY3ODEpOihvPU1hdGguc3FydChSKSxpPXJ0L28sYT1KL28pOkU+aj9FPC4wMT8obz0uNzA3MTA2NzgxLGk9MCxhPS43MDcxMDY3ODEpOihpPU1hdGguc3FydChFKSxvPXJ0L2ksYT1FdC9pKTpqPC4wMT8obz0uNzA3MTA2NzgxLGk9LjcwNzEwNjc4MSxhPTApOihhPU1hdGguc3FydChqKSxvPUovYSxpPUV0L2EpLHRoaXMuc2V0KG8saSxhLGUpLHRoaXN9bGV0IGI9TWF0aC5zcXJ0KCh5LV8pKih5LV8pKyhmLU0pKihmLU0pKyhwLW0pKihwLW0pKTtyZXR1cm4gTWF0aC5hYnMoYik8LjAwMSYmKGI9MSksdGhpcy54PSh5LV8pL2IsdGhpcy55PShmLU0pL2IsdGhpcy56PShwLW0pL2IsdGhpcy53PU1hdGguYWNvcygoYytnK08tMSkvMiksdGhpc31taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXMudz1NYXRoLm1pbih0aGlzLncsdC53KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzLno9TWF0aC5tYXgodGhpcy56LHQueiksdGhpcy53PU1hdGgubWF4KHRoaXMudyx0LncpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQueixNYXRoLm1pbihlLnosdGhpcy56KSksdGhpcy53PU1hdGgubWF4KHQudyxNYXRoLm1pbihlLncsdGhpcy53KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMudykpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtsZXQgbz10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihvfHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKGUsbykpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpcy56PU1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzLnc9TWF0aC5jZWlsKHRoaXMudyksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpcy56PU1hdGgucm91bmQodGhpcy56KSx0aGlzLnc9TWF0aC5yb3VuZCh0aGlzLncpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpcy53PXRoaXMudzwwP01hdGguY2VpbCh0aGlzLncpOk1hdGguZmxvb3IodGhpcy53KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzLnc9LXRoaXMudyx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0LnordGhpcy53KnQud31sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMudyl9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopK01hdGguYWJzKHRoaXMudyl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzLnorPSh0LnotdGhpcy56KSplLHRoaXMudys9KHQudy10aGlzLncpKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsbyl7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKm8sdGhpcy55PXQueSsoZS55LXQueSkqbyx0aGlzLno9dC56KyhlLnotdC56KSpvLHRoaXMudz10LncrKGUudy10LncpKm8sdGhpc31lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnomJnQudz09PXRoaXMud31mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXMuej10W2UrMl0sdGhpcy53PXRbZSszXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHRbZSsyXT10aGlzLnosdFtlKzNdPXRoaXMudyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG8pe3JldHVybiBvIT09dm9pZCAwJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpcy56PXQuZ2V0WihlKSx0aGlzLnc9dC5nZXRXKGUpLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXMudz1NYXRoLnJhbmRvbSgpLHRoaXN9KltTeW1ib2wuaXRlcmF0b3JdKCl7eWllbGQgdGhpcy54LHlpZWxkIHRoaXMueSx5aWVsZCB0aGlzLnoseWllbGQgdGhpcy53fX07Y2EucHJvdG90eXBlLmlzVmVjdG9yND0hMDt2YXIgTmQ9Y2xhc3MgZXh0ZW5kcyBxUHtjb25zdHJ1Y3Rvcih0LGUsbz17fSl7c3VwZXIoKSx0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPTEsdGhpcy5zY2lzc29yPW5ldyBjYSgwLDAsdCxlKSx0aGlzLnNjaXNzb3JUZXN0PSExLHRoaXMudmlld3BvcnQ9bmV3IGNhKDAsMCx0LGUpLHRoaXMudGV4dHVyZT1uZXcgR3Modm9pZCAwLG8ubWFwcGluZyxvLndyYXBTLG8ud3JhcFQsby5tYWdGaWx0ZXIsby5taW5GaWx0ZXIsby5mb3JtYXQsby50eXBlLG8uYW5pc290cm9weSxvLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPSEwLHRoaXMudGV4dHVyZS5pbWFnZT17d2lkdGg6dCxoZWlnaHQ6ZSxkZXB0aDoxfSx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPW8uZ2VuZXJhdGVNaXBtYXBzIT09dm9pZCAwP28uZ2VuZXJhdGVNaXBtYXBzOiExLHRoaXMudGV4dHVyZS5pbnRlcm5hbEZvcm1hdD1vLmludGVybmFsRm9ybWF0IT09dm9pZCAwP28uaW50ZXJuYWxGb3JtYXQ6bnVsbCx0aGlzLnRleHR1cmUubWluRmlsdGVyPW8ubWluRmlsdGVyIT09dm9pZCAwP28ubWluRmlsdGVyOndtLHRoaXMuZGVwdGhCdWZmZXI9by5kZXB0aEJ1ZmZlciE9PXZvaWQgMD9vLmRlcHRoQnVmZmVyOiEwLHRoaXMuc3RlbmNpbEJ1ZmZlcj1vLnN0ZW5jaWxCdWZmZXIhPT12b2lkIDA/by5zdGVuY2lsQnVmZmVyOiExLHRoaXMuZGVwdGhUZXh0dXJlPW8uZGVwdGhUZXh0dXJlIT09dm9pZCAwP28uZGVwdGhUZXh0dXJlOm51bGx9c2V0VGV4dHVyZSh0KXt0LmltYWdlPXt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodCxkZXB0aDp0aGlzLmRlcHRofSx0aGlzLnRleHR1cmU9dH1zZXRTaXplKHQsZSxvPTEpeyh0aGlzLndpZHRoIT09dHx8dGhpcy5oZWlnaHQhPT1lfHx0aGlzLmRlcHRoIT09bykmJih0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW8sdGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZS5pbWFnZS5kZXB0aD1vLHRoaXMuZGlzcG9zZSgpKSx0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuY29weSh0LnZpZXdwb3J0KSx0aGlzLnRleHR1cmU9dC50ZXh0dXJlLmNsb25lKCksdGhpcy50ZXh0dXJlLmltYWdlPU9iamVjdC5hc3NpZ24oe30sdC50ZXh0dXJlLmltYWdlKSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fTtOZC5wcm90b3R5cGUuaXNXZWJHTFJlbmRlclRhcmdldD0hMDt2YXIgR1c9Y2xhc3MgZXh0ZW5kcyBOZHtjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIodCxlKTtsZXQgaT10aGlzLnRleHR1cmU7dGhpcy50ZXh0dXJlPVtdO2ZvcihsZXQgYT0wO2E8bzthKyspdGhpcy50ZXh0dXJlW2FdPWkuY2xvbmUoKX1zZXRTaXplKHQsZSxvPTEpe2lmKHRoaXMud2lkdGghPT10fHx0aGlzLmhlaWdodCE9PWV8fHRoaXMuZGVwdGghPT1vKXt0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLmRlcHRoPW87Zm9yKGxldCBpPTAsYT10aGlzLnRleHR1cmUubGVuZ3RoO2k8YTtpKyspdGhpcy50ZXh0dXJlW2ldLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlW2ldLmltYWdlLmhlaWdodD1lLHRoaXMudGV4dHVyZVtpXS5pbWFnZS5kZXB0aD1vO3RoaXMuZGlzcG9zZSgpfXJldHVybiB0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxlKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LGUpLHRoaXN9Y29weSh0KXt0aGlzLmRpc3Bvc2UoKSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpcy5kZXB0aD10LmRlcHRoLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRlcHRoQnVmZmVyPXQuZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXQuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT10LmRlcHRoVGV4dHVyZSx0aGlzLnRleHR1cmUubGVuZ3RoPTA7Zm9yKGxldCBlPTAsbz10LnRleHR1cmUubGVuZ3RoO2U8bztlKyspdGhpcy50ZXh0dXJlW2VdPXQudGV4dHVyZVtlXS5jbG9uZSgpO3JldHVybiB0aGlzfX07R1cucHJvdG90eXBlLmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM9ITA7dmFyIHI0PWNsYXNzIGV4dGVuZHMgTmR7Y29uc3RydWN0b3IodCxlLG89e30pe3N1cGVyKHQsZSxvKSx0aGlzLnNhbXBsZXM9NCx0aGlzLmlnbm9yZURlcHRoRm9yTXVsdGlzYW1wbGVDb3B5PW8uaWdub3JlRGVwdGghPT12b2lkIDA/by5pZ25vcmVEZXB0aDohMCx0aGlzLnVzZVJlbmRlclRvVGV4dHVyZT1vLnVzZVJlbmRlclRvVGV4dHVyZSE9PXZvaWQgMD9vLnVzZVJlbmRlclRvVGV4dHVyZTohMSx0aGlzLnVzZVJlbmRlcmJ1ZmZlcj10aGlzLnVzZVJlbmRlclRvVGV4dHVyZT09PSExfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuc2FtcGxlcz10LnNhbXBsZXMsdGhpcy51c2VSZW5kZXJUb1RleHR1cmU9dC51c2VSZW5kZXJUb1RleHR1cmUsdGhpcy51c2VSZW5kZXJidWZmZXI9dC51c2VSZW5kZXJidWZmZXIsdGhpc319O3I0LnByb3RvdHlwZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ITA7dmFyIFJtPWNsYXNze2NvbnN0cnVjdG9yKHQ9MCxlPTAsbz0wLGk9MSl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW8sdGhpcy5fdz1pfXN0YXRpYyBzbGVycCh0LGUsbyxpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiBTdGF0aWMgLnNsZXJwKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIHFtLnNsZXJwUXVhdGVybmlvbnMoIHFhLCBxYiwgdCApIGluc3RlYWQuIiksby5zbGVycFF1YXRlcm5pb25zKHQsZSxpKX1zdGF0aWMgc2xlcnBGbGF0KHQsZSxvLGksYSxyLHMpe2xldCBsPW9baSswXSxjPW9baSsxXSxtPW9baSsyXSxmPW9baSszXSxwPWFbciswXSxnPWFbcisxXSxfPWFbcisyXSxNPWFbciszXTtpZihzPT09MCl7dFtlKzBdPWwsdFtlKzFdPWMsdFtlKzJdPW0sdFtlKzNdPWY7cmV0dXJufWlmKHM9PT0xKXt0W2UrMF09cCx0W2UrMV09Zyx0W2UrMl09Xyx0W2UrM109TTtyZXR1cm59aWYoZiE9PU18fGwhPT1wfHxjIT09Z3x8bSE9PV8pe2xldCB5PTEtcyxPPWwqcCtjKmcrbSpfK2YqTSxiPU8+PTA/MTotMSxSPTEtTypPO2lmKFI+TnVtYmVyLkVQU0lMT04pe2xldCBqPU1hdGguc3FydChSKSxydD1NYXRoLmF0YW4yKGosTypiKTt5PU1hdGguc2luKHkqcnQpL2oscz1NYXRoLnNpbihzKnJ0KS9qfWxldCBFPXMqYjtpZihsPWwqeStwKkUsYz1jKnkrZypFLG09bSp5K18qRSxmPWYqeStNKkUseT09PTEtcyl7bGV0IGo9MS9NYXRoLnNxcnQobCpsK2MqYyttKm0rZipmKTtsKj1qLGMqPWosbSo9aixmKj1qfX10W2VdPWwsdFtlKzFdPWMsdFtlKzJdPW0sdFtlKzNdPWZ9c3RhdGljIG11bHRpcGx5UXVhdGVybmlvbnNGbGF0KHQsZSxvLGksYSxyKXtsZXQgcz1vW2ldLGw9b1tpKzFdLGM9b1tpKzJdLG09b1tpKzNdLGY9YVtyXSxwPWFbcisxXSxnPWFbcisyXSxfPWFbciszXTtyZXR1cm4gdFtlXT1zKl8rbSpmK2wqZy1jKnAsdFtlKzFdPWwqXyttKnArYypmLXMqZyx0W2UrMl09YypfK20qZytzKnAtbCpmLHRbZSszXT1tKl8tcypmLWwqcC1jKmcsdH1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgdygpe3JldHVybiB0aGlzLl93fXNldCB3KHQpe3RoaXMuX3c9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9c2V0KHQsZSxvLGkpe3JldHVybiB0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9byx0aGlzLl93PWksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fdyl9Y29weSh0KXtyZXR1cm4gdGhpcy5feD10LngsdGhpcy5feT10LnksdGhpcy5fej10LnosdGhpcy5fdz10LncsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbUV1bGVyKHQsZSl7aWYoISh0JiZ0LmlzRXVsZXIpKXRocm93IG5ldyBFcnJvcigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7bGV0IG89dC5feCxpPXQuX3ksYT10Ll96LHI9dC5fb3JkZXIscz1NYXRoLmNvcyxsPU1hdGguc2luLGM9cyhvLzIpLG09cyhpLzIpLGY9cyhhLzIpLHA9bChvLzIpLGc9bChpLzIpLF89bChhLzIpO3N3aXRjaChyKXtjYXNlIlhZWiI6dGhpcy5feD1wKm0qZitjKmcqXyx0aGlzLl95PWMqZypmLXAqbSpfLHRoaXMuX3o9YyptKl8rcCpnKmYsdGhpcy5fdz1jKm0qZi1wKmcqXzticmVhaztjYXNlIllYWiI6dGhpcy5feD1wKm0qZitjKmcqXyx0aGlzLl95PWMqZypmLXAqbSpfLHRoaXMuX3o9YyptKl8tcCpnKmYsdGhpcy5fdz1jKm0qZitwKmcqXzticmVhaztjYXNlIlpYWSI6dGhpcy5feD1wKm0qZi1jKmcqXyx0aGlzLl95PWMqZypmK3AqbSpfLHRoaXMuX3o9YyptKl8rcCpnKmYsdGhpcy5fdz1jKm0qZi1wKmcqXzticmVhaztjYXNlIlpZWCI6dGhpcy5feD1wKm0qZi1jKmcqXyx0aGlzLl95PWMqZypmK3AqbSpfLHRoaXMuX3o9YyptKl8tcCpnKmYsdGhpcy5fdz1jKm0qZitwKmcqXzticmVhaztjYXNlIllaWCI6dGhpcy5feD1wKm0qZitjKmcqXyx0aGlzLl95PWMqZypmK3AqbSpfLHRoaXMuX3o9YyptKl8tcCpnKmYsdGhpcy5fdz1jKm0qZi1wKmcqXzticmVhaztjYXNlIlhaWSI6dGhpcy5feD1wKm0qZi1jKmcqXyx0aGlzLl95PWMqZypmLXAqbSpfLHRoaXMuX3o9YyptKl8rcCpnKmYsdGhpcy5fdz1jKm0qZitwKmcqXzticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrcil9cmV0dXJuIGUhPT0hMSYmdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbUF4aXNBbmdsZSh0LGUpe2xldCBvPWUvMixpPU1hdGguc2luKG8pO3JldHVybiB0aGlzLl94PXQueCppLHRoaXMuX3k9dC55KmksdGhpcy5fej10LnoqaSx0aGlzLl93PU1hdGguY29zKG8pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KXtsZXQgZT10LmVsZW1lbnRzLG89ZVswXSxpPWVbNF0sYT1lWzhdLHI9ZVsxXSxzPWVbNV0sbD1lWzldLGM9ZVsyXSxtPWVbNl0sZj1lWzEwXSxwPW8rcytmO2lmKHA+MCl7bGV0IGc9LjUvTWF0aC5zcXJ0KHArMSk7dGhpcy5fdz0uMjUvZyx0aGlzLl94PShtLWwpKmcsdGhpcy5feT0oYS1jKSpnLHRoaXMuX3o9KHItaSkqZ31lbHNlIGlmKG8+cyYmbz5mKXtsZXQgZz0yKk1hdGguc3FydCgxK28tcy1mKTt0aGlzLl93PShtLWwpL2csdGhpcy5feD0uMjUqZyx0aGlzLl95PShpK3IpL2csdGhpcy5fej0oYStjKS9nfWVsc2UgaWYocz5mKXtsZXQgZz0yKk1hdGguc3FydCgxK3Mtby1mKTt0aGlzLl93PShhLWMpL2csdGhpcy5feD0oaStyKS9nLHRoaXMuX3k9LjI1KmcsdGhpcy5fej0obCttKS9nfWVsc2V7bGV0IGc9MipNYXRoLnNxcnQoMStmLW8tcyk7dGhpcy5fdz0oci1pKS9nLHRoaXMuX3g9KGErYykvZyx0aGlzLl95PShsK20pL2csdGhpcy5fej0uMjUqZ31yZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVVuaXRWZWN0b3JzKHQsZSl7bGV0IG89dC5kb3QoZSkrMTtyZXR1cm4gbzxOdW1iZXIuRVBTSUxPTj8obz0wLE1hdGguYWJzKHQueCk+TWF0aC5hYnModC56KT8odGhpcy5feD0tdC55LHRoaXMuX3k9dC54LHRoaXMuX3o9MCx0aGlzLl93PW8pOih0aGlzLl94PTAsdGhpcy5feT0tdC56LHRoaXMuX3o9dC55LHRoaXMuX3c9bykpOih0aGlzLl94PXQueSplLnotdC56KmUueSx0aGlzLl95PXQueiplLngtdC54KmUueix0aGlzLl96PXQueCplLnktdC55KmUueCx0aGlzLl93PW8pLHRoaXMubm9ybWFsaXplKCl9YW5nbGVUbyh0KXtyZXR1cm4gMipNYXRoLmFjb3MoTWF0aC5hYnMoa2QodGhpcy5kb3QodCksLTEsMSkpKX1yb3RhdGVUb3dhcmRzKHQsZSl7bGV0IG89dGhpcy5hbmdsZVRvKHQpO2lmKG89PT0wKXJldHVybiB0aGlzO2xldCBpPU1hdGgubWluKDEsZS9vKTtyZXR1cm4gdGhpcy5zbGVycCh0LGkpLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMSl9aW52ZXJ0KCl7cmV0dXJuIHRoaXMuY29uanVnYXRlKCl9Y29uanVnYXRlKCl7cmV0dXJuIHRoaXMuX3gqPS0xLHRoaXMuX3kqPS0xLHRoaXMuX3oqPS0xLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy5feCp0Ll94K3RoaXMuX3kqdC5feSt0aGlzLl96KnQuX3ordGhpcy5fdyp0Ll93fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fd31sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fdyl9bm9ybWFsaXplKCl7bGV0IHQ9dGhpcy5sZW5ndGgoKTtyZXR1cm4gdD09PTA/KHRoaXMuX3g9MCx0aGlzLl95PTAsdGhpcy5fej0wLHRoaXMuX3c9MSk6KHQ9MS90LHRoaXMuX3g9dGhpcy5feCp0LHRoaXMuX3k9dGhpcy5feSp0LHRoaXMuX3o9dGhpcy5feip0LHRoaXMuX3c9dGhpcy5fdyp0KSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31tdWx0aXBseSh0LGUpe3JldHVybiBlIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5UXVhdGVybmlvbnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LGUpKTp0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQsdGhpcyl9bXVsdGlwbHlRdWF0ZXJuaW9ucyh0LGUpe2xldCBvPXQuX3gsaT10Ll95LGE9dC5feixyPXQuX3cscz1lLl94LGw9ZS5feSxjPWUuX3osbT1lLl93O3JldHVybiB0aGlzLl94PW8qbStyKnMraSpjLWEqbCx0aGlzLl95PWkqbStyKmwrYSpzLW8qYyx0aGlzLl96PWEqbStyKmMrbypsLWkqcyx0aGlzLl93PXIqbS1vKnMtaSpsLWEqYyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycCh0LGUpe2lmKGU9PT0wKXJldHVybiB0aGlzO2lmKGU9PT0xKXJldHVybiB0aGlzLmNvcHkodCk7bGV0IG89dGhpcy5feCxpPXRoaXMuX3ksYT10aGlzLl96LHI9dGhpcy5fdyxzPXIqdC5fdytvKnQuX3graSp0Ll95K2EqdC5fejtpZihzPDA/KHRoaXMuX3c9LXQuX3csdGhpcy5feD0tdC5feCx0aGlzLl95PS10Ll95LHRoaXMuX3o9LXQuX3oscz0tcyk6dGhpcy5jb3B5KHQpLHM+PTEpcmV0dXJuIHRoaXMuX3c9cix0aGlzLl94PW8sdGhpcy5feT1pLHRoaXMuX3o9YSx0aGlzO2xldCBsPTEtcypzO2lmKGw8PU51bWJlci5FUFNJTE9OKXtsZXQgZz0xLWU7cmV0dXJuIHRoaXMuX3c9ZypyK2UqdGhpcy5fdyx0aGlzLl94PWcqbytlKnRoaXMuX3gsdGhpcy5feT1nKmkrZSp0aGlzLl95LHRoaXMuX3o9ZyphK2UqdGhpcy5feix0aGlzLm5vcm1hbGl6ZSgpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWxldCBjPU1hdGguc3FydChsKSxtPU1hdGguYXRhbjIoYyxzKSxmPU1hdGguc2luKCgxLWUpKm0pL2MscD1NYXRoLnNpbihlKm0pL2M7cmV0dXJuIHRoaXMuX3c9cipmK3RoaXMuX3cqcCx0aGlzLl94PW8qZit0aGlzLl94KnAsdGhpcy5feT1pKmYrdGhpcy5feSpwLHRoaXMuX3o9YSpmK3RoaXMuX3oqcCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycFF1YXRlcm5pb25zKHQsZSxvKXtyZXR1cm4gdGhpcy5jb3B5KHQpLnNsZXJwKGUsbyl9cmFuZG9tKCl7bGV0IHQ9TWF0aC5yYW5kb20oKSxlPU1hdGguc3FydCgxLXQpLG89TWF0aC5zcXJ0KHQpLGk9MipNYXRoLlBJKk1hdGgucmFuZG9tKCksYT0yKk1hdGguUEkqTWF0aC5yYW5kb20oKTtyZXR1cm4gdGhpcy5zZXQoZSpNYXRoLmNvcyhpKSxvKk1hdGguc2luKGEpLG8qTWF0aC5jb3MoYSksZSpNYXRoLnNpbihpKSl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll93PT09dGhpcy5fd31mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLl94PXRbZV0sdGhpcy5feT10W2UrMV0sdGhpcy5fej10W2UrMl0sdGhpcy5fdz10W2UrM10sdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5feCx0W2UrMV09dGhpcy5feSx0W2UrMl09dGhpcy5feix0W2UrM109dGhpcy5fdyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5feD10LmdldFgoZSksdGhpcy5feT10LmdldFkoZSksdGhpcy5fej10LmdldFooZSksdGhpcy5fdz10LmdldFcoZSksdGhpc31fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX07Um0ucHJvdG90eXBlLmlzUXVhdGVybmlvbj0hMDt2YXIgcHQ9Y2xhc3N7Y29uc3RydWN0b3IodD0wLGU9MCxvPTApe3RoaXMueD10LHRoaXMueT1lLHRoaXMuej1vfXNldCh0LGUsbyl7cmV0dXJuIG89PT12b2lkIDAmJihvPXRoaXMueiksdGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW8sdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueil9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpc31hZGQodCxlKXtyZXR1cm4gZSE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzLno9dC56K2Uueix0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpcy56Kz10LnoqZSx0aGlzfXN1Yih0LGUpe3JldHVybiBlIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXMuej10LnotZS56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gZSE9PXZvaWQgMD8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlWZWN0b3JzKHQsZSkpOih0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzKX1tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpc31tdWx0aXBseVZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCplLngsdGhpcy55PXQueSplLnksdGhpcy56PXQueiplLnosdGhpc31hcHBseUV1bGVyKHQpe3JldHVybiB0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5hcHBseUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKSx0aGlzLmFwcGx5UXVhdGVybmlvbihQZHQuc2V0RnJvbUV1bGVyKHQpKX1hcHBseUF4aXNBbmdsZSh0LGUpe3JldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbihQZHQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpKX1hcHBseU1hdHJpeDModCl7bGV0IGU9dGhpcy54LG89dGhpcy55LGk9dGhpcy56LGE9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWFbMF0qZSthWzNdKm8rYVs2XSppLHRoaXMueT1hWzFdKmUrYVs0XSpvK2FbN10qaSx0aGlzLno9YVsyXSplK2FbNV0qbythWzhdKmksdGhpc31hcHBseU5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDModCkubm9ybWFsaXplKCl9YXBwbHlNYXRyaXg0KHQpe2xldCBlPXRoaXMueCxvPXRoaXMueSxpPXRoaXMueixhPXQuZWxlbWVudHMscj0xLyhhWzNdKmUrYVs3XSpvK2FbMTFdKmkrYVsxNV0pO3JldHVybiB0aGlzLng9KGFbMF0qZSthWzRdKm8rYVs4XSppK2FbMTJdKSpyLHRoaXMueT0oYVsxXSplK2FbNV0qbythWzldKmkrYVsxM10pKnIsdGhpcy56PShhWzJdKmUrYVs2XSpvK2FbMTBdKmkrYVsxNF0pKnIsdGhpc31hcHBseVF1YXRlcm5pb24odCl7bGV0IGU9dGhpcy54LG89dGhpcy55LGk9dGhpcy56LGE9dC54LHI9dC55LHM9dC56LGw9dC53LGM9bCplK3IqaS1zKm8sbT1sKm8rcyplLWEqaSxmPWwqaSthKm8tciplLHA9LWEqZS1yKm8tcyppO3JldHVybiB0aGlzLng9YypsK3AqLWErbSotcy1mKi1yLHRoaXMueT1tKmwrcCotcitmKi1hLWMqLXMsdGhpcy56PWYqbCtwKi1zK2MqLXItbSotYSx0aGlzfXByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGRJbnZlcnNlKS5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4KX11bnByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKX10cmFuc2Zvcm1EaXJlY3Rpb24odCl7bGV0IGU9dGhpcy54LG89dGhpcy55LGk9dGhpcy56LGE9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWFbMF0qZSthWzRdKm8rYVs4XSppLHRoaXMueT1hWzFdKmUrYVs1XSpvK2FbOV0qaSx0aGlzLno9YVsyXSplK2FbNl0qbythWzEwXSppLHRoaXMubm9ybWFsaXplKCl9ZGl2aWRlKHQpe3JldHVybiB0aGlzLngvPXQueCx0aGlzLnkvPXQueSx0aGlzLnovPXQueix0aGlzfWRpdmlkZVNjYWxhcih0KXtyZXR1cm4gdGhpcy5tdWx0aXBseVNjYWxhcigxL3QpfW1pbih0KXtyZXR1cm4gdGhpcy54PU1hdGgubWluKHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1pbih0aGlzLnksdC55KSx0aGlzLno9TWF0aC5taW4odGhpcy56LHQueiksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpcy56PU1hdGgubWF4KHRoaXMueix0LnopLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQueixNYXRoLm1pbihlLnosdGhpcy56KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnopKSx0aGlzfWNsYW1wTGVuZ3RoKHQsZSl7bGV0IG89dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIob3x8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG8pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0Lnp9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnp9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueil9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LGUpe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSplLHRoaXMueSs9KHQueS10aGlzLnkpKmUsdGhpcy56Kz0odC56LXRoaXMueikqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxvKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbyx0aGlzLnk9dC55KyhlLnktdC55KSpvLHRoaXMuej10LnorKGUuei10LnopKm8sdGhpc31jcm9zcyh0LGUpe3JldHVybiBlIT09dm9pZCAwPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5jcm9zc1ZlY3RvcnModCxlKSk6dGhpcy5jcm9zc1ZlY3RvcnModGhpcyx0KX1jcm9zc1ZlY3RvcnModCxlKXtsZXQgbz10LngsaT10LnksYT10Lnoscj1lLngscz1lLnksbD1lLno7cmV0dXJuIHRoaXMueD1pKmwtYSpzLHRoaXMueT1hKnItbypsLHRoaXMuej1vKnMtaSpyLHRoaXN9cHJvamVjdE9uVmVjdG9yKHQpe2xldCBlPXQubGVuZ3RoU3EoKTtpZihlPT09MClyZXR1cm4gdGhpcy5zZXQoMCwwLDApO2xldCBvPXQuZG90KHRoaXMpL2U7cmV0dXJuIHRoaXMuY29weSh0KS5tdWx0aXBseVNjYWxhcihvKX1wcm9qZWN0T25QbGFuZSh0KXtyZXR1cm4gbVcuY29weSh0aGlzKS5wcm9qZWN0T25WZWN0b3IodCksdGhpcy5zdWIobVcpfXJlZmxlY3QodCl7cmV0dXJuIHRoaXMuc3ViKG1XLmNvcHkodCkubXVsdGlwbHlTY2FsYXIoMip0aGlzLmRvdCh0KSkpfWFuZ2xlVG8odCl7bGV0IGU9TWF0aC5zcXJ0KHRoaXMubGVuZ3RoU3EoKSp0Lmxlbmd0aFNxKCkpO2lmKGU9PT0wKXJldHVybiBNYXRoLlBJLzI7bGV0IG89dGhpcy5kb3QodCkvZTtyZXR1cm4gTWF0aC5hY29zKGtkKG8sLTEsMSkpfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtsZXQgZT10aGlzLngtdC54LG89dGhpcy55LXQueSxpPXRoaXMuei10Lno7cmV0dXJuIGUqZStvKm8raSppfW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpK01hdGguYWJzKHRoaXMuei10LnopfXNldEZyb21TcGhlcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnBoaSx0LnRoZXRhKX1zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQsZSxvKXtsZXQgaT1NYXRoLnNpbihlKSp0O3JldHVybiB0aGlzLng9aSpNYXRoLnNpbihvKSx0aGlzLnk9TWF0aC5jb3MoZSkqdCx0aGlzLno9aSpNYXRoLmNvcyhvKSx0aGlzfXNldEZyb21DeWxpbmRyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModC5yYWRpdXMsdC50aGV0YSx0LnkpfXNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LGUsbyl7cmV0dXJuIHRoaXMueD10Kk1hdGguc2luKGUpLHRoaXMueT1vLHRoaXMuej10Kk1hdGguY29zKGUpLHRoaXN9c2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQpe2xldCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1lWzEyXSx0aGlzLnk9ZVsxM10sdGhpcy56PWVbMTRdLHRoaXN9c2V0RnJvbU1hdHJpeFNjYWxlKHQpe2xldCBlPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLG89dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMSkubGVuZ3RoKCksaT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gdGhpcy54PWUsdGhpcy55PW8sdGhpcy56PWksdGhpc31zZXRGcm9tTWF0cml4Q29sdW1uKHQsZSl7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsZSo0KX1zZXRGcm9tTWF0cml4M0NvbHVtbih0LGUpe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLGUqMyl9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMueD10W2VdLHRoaXMueT10W2UrMV0sdGhpcy56PXRbZSsyXSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMueCx0W2UrMV09dGhpcy55LHRbZSsyXT10aGlzLnosdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxvKXtyZXR1cm4gbyE9PXZvaWQgMCYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXMuej10LmdldFooZSksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpc31yYW5kb21EaXJlY3Rpb24oKXtsZXQgdD0oTWF0aC5yYW5kb20oKS0uNSkqMixlPU1hdGgucmFuZG9tKCkqTWF0aC5QSSoyLG89TWF0aC5zcXJ0KDEtS1oodCwyKSk7cmV0dXJuIHRoaXMueD1vKk1hdGguY29zKGUpLHRoaXMueT1vKk1hdGguc2luKGUpLHRoaXMuej10LHRoaXN9KltTeW1ib2wuaXRlcmF0b3JdKCl7eWllbGQgdGhpcy54LHlpZWxkIHRoaXMueSx5aWVsZCB0aGlzLnp9fTtwdC5wcm90b3R5cGUuaXNWZWN0b3IzPSEwO3ZhciBtVz1uZXcgcHQsUGR0PW5ldyBSbSxvaD1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBwdCgxLzAsMS8wLDEvMCksZT1uZXcgcHQoLTEvMCwtMS8wLC0xLzApKXt0aGlzLm1pbj10LHRoaXMubWF4PWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMubWluLmNvcHkodCksdGhpcy5tYXguY29weShlKSx0aGlzfXNldEZyb21BcnJheSh0KXtsZXQgZT0xLzAsbz0xLzAsaT0xLzAsYT0tMS8wLHI9LTEvMCxzPS0xLzA7Zm9yKGxldCBsPTAsYz10Lmxlbmd0aDtsPGM7bCs9Myl7bGV0IG09dFtsXSxmPXRbbCsxXSxwPXRbbCsyXTttPGUmJihlPW0pLGY8byYmKG89ZikscDxpJiYoaT1wKSxtPmEmJihhPW0pLGY+ciYmKHI9ZikscD5zJiYocz1wKX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbyxpKSx0aGlzLm1heC5zZXQoYSxyLHMpLHRoaXN9c2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KXtsZXQgZT0xLzAsbz0xLzAsaT0xLzAsYT0tMS8wLHI9LTEvMCxzPS0xLzA7Zm9yKGxldCBsPTAsYz10LmNvdW50O2w8YztsKyspe2xldCBtPXQuZ2V0WChsKSxmPXQuZ2V0WShsKSxwPXQuZ2V0WihsKTttPGUmJihlPW0pLGY8byYmKG89ZikscDxpJiYoaT1wKSxtPmEmJihhPW0pLGY+ciYmKHI9ZikscD5zJiYocz1wKX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbyxpKSx0aGlzLm1heC5zZXQoYSxyLHMpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtlXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxlKXtsZXQgbz1SMS5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIobyksdGhpcy5tYXguY29weSh0KS5hZGQobyksdGhpc31zZXRGcm9tT2JqZWN0KHQsZT0hMSl7cmV0dXJuIHRoaXMubWFrZUVtcHR5KCksdGhpcy5leHBhbmRCeU9iamVjdCh0LGUpfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9dGhpcy5taW4uej0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PXRoaXMubWF4Lno9LTEvMCx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl8fHRoaXMubWF4Lno8dGhpcy5taW4uen1nZXRDZW50ZXIodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCwwKTp0LmFkZFZlY3RvcnModGhpcy5taW4sdGhpcy5tYXgpLm11bHRpcGx5U2NhbGFyKC41KX1nZXRTaXplKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31leHBhbmRCeU9iamVjdCh0LGU9ITEpe3QudXBkYXRlV29ybGRNYXRyaXgoITEsITEpO2xldCBvPXQuZ2VvbWV0cnk7aWYobyE9PXZvaWQgMClpZihlJiZvLmF0dHJpYnV0ZXMhPW51bGwmJm8uYXR0cmlidXRlcy5wb3NpdGlvbiE9PXZvaWQgMCl7bGV0IGE9by5hdHRyaWJ1dGVzLnBvc2l0aW9uO2ZvcihsZXQgcj0wLHM9YS5jb3VudDtyPHM7cisrKVIxLmZyb21CdWZmZXJBdHRyaWJ1dGUoYSxyKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5leHBhbmRCeVBvaW50KFIxKX1lbHNlIG8uYm91bmRpbmdCb3g9PT1udWxsJiZvLmNvbXB1dGVCb3VuZGluZ0JveCgpLGZXLmNvcHkoby5ib3VuZGluZ0JveCksZlcuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMudW5pb24oZlcpO2xldCBpPXQuY2hpbGRyZW47Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKXRoaXMuZXhwYW5kQnlPYmplY3QoaVthXSxlKTtyZXR1cm4gdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4Lnl8fHQuejx0aGlzLm1pbi56fHx0Lno+dGhpcy5tYXgueil9Y29udGFpbnNCb3godCl7cmV0dXJuIHRoaXMubWluLng8PXQubWluLngmJnQubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PXQubWluLnkmJnQubWF4Lnk8PXRoaXMubWF4LnkmJnRoaXMubWluLno8PXQubWluLnomJnQubWF4Lno8PXRoaXMubWF4Lnp9Z2V0UGFyYW1ldGVyKHQsZSl7cmV0dXJuIGUuc2V0KCh0LngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKHQueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSwodC56LXRoaXMubWluLnopLyh0aGlzLm1heC56LXRoaXMubWluLnopKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiEodC5tYXgueDx0aGlzLm1pbi54fHx0Lm1pbi54PnRoaXMubWF4Lnh8fHQubWF4Lnk8dGhpcy5taW4ueXx8dC5taW4ueT50aGlzLm1heC55fHx0Lm1heC56PHRoaXMubWluLnp8fHQubWluLno+dGhpcy5tYXgueil9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5jbGFtcFBvaW50KHQuY2VudGVyLFIxKSxSMS5kaXN0YW5jZVRvU3F1YXJlZCh0LmNlbnRlcik8PXQucmFkaXVzKnQucmFkaXVzfWludGVyc2VjdHNQbGFuZSh0KXtsZXQgZSxvO3JldHVybiB0Lm5vcm1hbC54PjA/KGU9dC5ub3JtYWwueCp0aGlzLm1pbi54LG89dC5ub3JtYWwueCp0aGlzLm1heC54KTooZT10Lm5vcm1hbC54KnRoaXMubWF4Lngsbz10Lm5vcm1hbC54KnRoaXMubWluLngpLHQubm9ybWFsLnk+MD8oZSs9dC5ub3JtYWwueSp0aGlzLm1pbi55LG8rPXQubm9ybWFsLnkqdGhpcy5tYXgueSk6KGUrPXQubm9ybWFsLnkqdGhpcy5tYXgueSxvKz10Lm5vcm1hbC55KnRoaXMubWluLnkpLHQubm9ybWFsLno+MD8oZSs9dC5ub3JtYWwueip0aGlzLm1pbi56LG8rPXQubm9ybWFsLnoqdGhpcy5tYXgueik6KGUrPXQubm9ybWFsLnoqdGhpcy5tYXgueixvKz10Lm5vcm1hbC56KnRoaXMubWluLnopLGU8PS10LmNvbnN0YW50JiZvPj0tdC5jb25zdGFudH1pbnRlcnNlY3RzVHJpYW5nbGUodCl7aWYodGhpcy5pc0VtcHR5KCkpcmV0dXJuITE7dGhpcy5nZXRDZW50ZXIoVjUpLGZILnN1YlZlY3RvcnModGhpcy5tYXgsVjUpLEIyLnN1YlZlY3RvcnModC5hLFY1KSxWMi5zdWJWZWN0b3JzKHQuYixWNSksajIuc3ViVmVjdG9ycyh0LmMsVjUpLHd4LnN1YlZlY3RvcnMoVjIsQjIpLFN4LnN1YlZlY3RvcnMoajIsVjIpLEUxLnN1YlZlY3RvcnMoQjIsajIpO2xldCBlPVswLC13eC56LHd4LnksMCwtU3gueixTeC55LDAsLUUxLnosRTEueSx3eC56LDAsLXd4LngsU3gueiwwLC1TeC54LEUxLnosMCwtRTEueCwtd3gueSx3eC54LDAsLVN4LnksU3gueCwwLC1FMS55LEUxLngsMF07cmV0dXJuIXBXKGUsQjIsVjIsajIsZkgpfHwoZT1bMSwwLDAsMCwxLDAsMCwwLDFdLCFwVyhlLEIyLFYyLGoyLGZIKSk/ITE6KHBILmNyb3NzVmVjdG9ycyh3eCxTeCksZT1bcEgueCxwSC55LHBILnpdLHBXKGUsQjIsVjIsajIsZkgpKX1jbGFtcFBvaW50KHQsZSl7cmV0dXJuIGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBSMS5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIodCkubGVuZ3RoKCl9Z2V0Qm91bmRpbmdTcGhlcmUodCl7cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKHQuY2VudGVyKSx0LnJhZGl1cz10aGlzLmdldFNpemUoUjEpLmxlbmd0aCgpKi41LHR9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90aGlzOihWUFswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxWUFsxXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxWUFsyXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxWUFszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxWUFs0XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxWUFs1XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxWUFs2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxWUFs3XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldEZyb21Qb2ludHMoVlApLHRoaXMpfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19O29oLnByb3RvdHlwZS5pc0JveDM9ITA7dmFyIFZQPVtuZXcgcHQsbmV3IHB0LG5ldyBwdCxuZXcgcHQsbmV3IHB0LG5ldyBwdCxuZXcgcHQsbmV3IHB0XSxSMT1uZXcgcHQsZlc9bmV3IG9oLEIyPW5ldyBwdCxWMj1uZXcgcHQsajI9bmV3IHB0LHd4PW5ldyBwdCxTeD1uZXcgcHQsRTE9bmV3IHB0LFY1PW5ldyBwdCxmSD1uZXcgcHQscEg9bmV3IHB0LGsxPW5ldyBwdDtmdW5jdGlvbiBwVyhuLHQsZSxvLGkpe2ZvcihsZXQgYT0wLHI9bi5sZW5ndGgtMzthPD1yO2ErPTMpe2sxLmZyb21BcnJheShuLGEpO2xldCBzPWkueCpNYXRoLmFicyhrMS54KStpLnkqTWF0aC5hYnMoazEueSkraS56Kk1hdGguYWJzKGsxLnopLGw9dC5kb3QoazEpLGM9ZS5kb3QoazEpLG09by5kb3QoazEpO2lmKE1hdGgubWF4KC1NYXRoLm1heChsLGMsbSksTWF0aC5taW4obCxjLG0pKT5zKXJldHVybiExfXJldHVybiEwfXZhciB2QnQ9bmV3IG9oLHlkdD1uZXcgcHQsZEg9bmV3IHB0LGRXPW5ldyBwdCxCeD1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBwdCxlPS0xKXt0aGlzLmNlbnRlcj10LHRoaXMucmFkaXVzPWV9c2V0KHQsZSl7cmV0dXJuIHRoaXMuY2VudGVyLmNvcHkodCksdGhpcy5yYWRpdXM9ZSx0aGlzfXNldEZyb21Qb2ludHModCxlKXtsZXQgbz10aGlzLmNlbnRlcjtlIT09dm9pZCAwP28uY29weShlKTp2QnQuc2V0RnJvbVBvaW50cyh0KS5nZXRDZW50ZXIobyk7bGV0IGk9MDtmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKyspaT1NYXRoLm1heChpLG8uZGlzdGFuY2VUb1NxdWFyZWQodFthXSkpO3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQoaSksdGhpc31jb3B5KHQpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5yYWRpdXM8MH1tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5jZW50ZXIuc2V0KDAsMCwwKSx0aGlzLnJhZGl1cz0tMSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD10aGlzLnJhZGl1cyp0aGlzLnJhZGl1c31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLmNlbnRlciktdGhpcy5yYWRpdXN9aW50ZXJzZWN0c1NwaGVyZSh0KXtsZXQgZT10aGlzLnJhZGl1cyt0LnJhZGl1cztyZXR1cm4gdC5jZW50ZXIuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD1lKmV9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzU3BoZXJlKHRoaXMpfWludGVyc2VjdHNQbGFuZSh0KXtyZXR1cm4gTWF0aC5hYnModC5kaXN0YW5jZVRvUG9pbnQodGhpcy5jZW50ZXIpKTw9dGhpcy5yYWRpdXN9Y2xhbXBQb2ludCh0LGUpe2xldCBvPXRoaXMuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHQpO3JldHVybiBlLmNvcHkodCksbz50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyYmKGUuc3ViKHRoaXMuY2VudGVyKS5ub3JtYWxpemUoKSxlLm11bHRpcGx5U2NhbGFyKHRoaXMucmFkaXVzKS5hZGQodGhpcy5jZW50ZXIpKSxlfWdldEJvdW5kaW5nQm94KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT8odC5tYWtlRW1wdHkoKSx0KToodC5zZXQodGhpcy5jZW50ZXIsdGhpcy5jZW50ZXIpLHQuZXhwYW5kQnlTY2FsYXIodGhpcy5yYWRpdXMpLHQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYXBwbHlNYXRyaXg0KHQpLHRoaXMucmFkaXVzPXRoaXMucmFkaXVzKnQuZ2V0TWF4U2NhbGVPbkF4aXMoKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jZW50ZXIuYWRkKHQpLHRoaXN9ZXhwYW5kQnlQb2ludCh0KXtkVy5zdWJWZWN0b3JzKHQsdGhpcy5jZW50ZXIpO2xldCBlPWRXLmxlbmd0aFNxKCk7aWYoZT50aGlzLnJhZGl1cyp0aGlzLnJhZGl1cyl7bGV0IG89TWF0aC5zcXJ0KGUpLGk9KG8tdGhpcy5yYWRpdXMpKi41O3RoaXMuY2VudGVyLmFkZChkVy5tdWx0aXBseVNjYWxhcihpL28pKSx0aGlzLnJhZGl1cys9aX1yZXR1cm4gdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5jZW50ZXIuZXF1YWxzKHQuY2VudGVyKT09PSEwP2RILnNldCgwLDAsMSkubXVsdGlwbHlTY2FsYXIodC5yYWRpdXMpOmRILnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQucmFkaXVzKSx0aGlzLmV4cGFuZEJ5UG9pbnQoeWR0LmNvcHkodC5jZW50ZXIpLmFkZChkSCkpLHRoaXMuZXhwYW5kQnlQb2ludCh5ZHQuY29weSh0LmNlbnRlcikuc3ViKGRIKSksdGhpc31lcXVhbHModCl7cmV0dXJuIHQuY2VudGVyLmVxdWFscyh0aGlzLmNlbnRlcikmJnQucmFkaXVzPT09dGhpcy5yYWRpdXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfX0salA9bmV3IHB0LGdXPW5ldyBwdCxnSD1uZXcgcHQsUng9bmV3IHB0LHVXPW5ldyBwdCx1SD1uZXcgcHQsaFc9bmV3IHB0LFZ4PWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IHB0LGU9bmV3IHB0KDAsMCwtMSkpe3RoaXMub3JpZ2luPXQsdGhpcy5kaXJlY3Rpb249ZX1zZXQodCxlKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KGUpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLm9yaWdpbil9bG9va0F0KHQpe3JldHVybiB0aGlzLmRpcmVjdGlvbi5jb3B5KHQpLnN1Yih0aGlzLm9yaWdpbikubm9ybWFsaXplKCksdGhpc31yZWNhc3QodCl7cmV0dXJuIHRoaXMub3JpZ2luLmNvcHkodGhpcy5hdCh0LGpQKSksdGhpc31jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSl7ZS5zdWJWZWN0b3JzKHQsdGhpcy5vcmlnaW4pO2xldCBvPWUuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbzwwP2UuY29weSh0aGlzLm9yaWdpbik6ZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihvKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2xldCBlPWpQLnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gZTwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihqUC5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihlKS5hZGQodGhpcy5vcmlnaW4pLGpQLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVNxVG9TZWdtZW50KHQsZSxvLGkpe2dXLmNvcHkodCkuYWRkKGUpLm11bHRpcGx5U2NhbGFyKC41KSxnSC5jb3B5KGUpLnN1Yih0KS5ub3JtYWxpemUoKSxSeC5jb3B5KHRoaXMub3JpZ2luKS5zdWIoZ1cpO2xldCBhPXQuZGlzdGFuY2VUbyhlKSouNSxyPS10aGlzLmRpcmVjdGlvbi5kb3QoZ0gpLHM9UnguZG90KHRoaXMuZGlyZWN0aW9uKSxsPS1SeC5kb3QoZ0gpLGM9UngubGVuZ3RoU3EoKSxtPU1hdGguYWJzKDEtcipyKSxmLHAsZyxfO2lmKG0+MClpZihmPXIqbC1zLHA9cipzLWwsXz1hKm0sZj49MClpZihwPj0tXylpZihwPD1fKXtsZXQgTT0xL207Zio9TSxwKj1NLGc9ZiooZityKnArMipzKStwKihyKmYrcCsyKmwpK2N9ZWxzZSBwPWEsZj1NYXRoLm1heCgwLC0ocipwK3MpKSxnPS1mKmYrcCoocCsyKmwpK2M7ZWxzZSBwPS1hLGY9TWF0aC5tYXgoMCwtKHIqcCtzKSksZz0tZipmK3AqKHArMipsKStjO2Vsc2UgcDw9LV8/KGY9TWF0aC5tYXgoMCwtKC1yKmErcykpLHA9Zj4wPy1hOk1hdGgubWluKE1hdGgubWF4KC1hLC1sKSxhKSxnPS1mKmYrcCoocCsyKmwpK2MpOnA8PV8/KGY9MCxwPU1hdGgubWluKE1hdGgubWF4KC1hLC1sKSxhKSxnPXAqKHArMipsKStjKTooZj1NYXRoLm1heCgwLC0ociphK3MpKSxwPWY+MD9hOk1hdGgubWluKE1hdGgubWF4KC1hLC1sKSxhKSxnPS1mKmYrcCoocCsyKmwpK2MpO2Vsc2UgcD1yPjA/LWE6YSxmPU1hdGgubWF4KDAsLShyKnArcykpLGc9LWYqZitwKihwKzIqbCkrYztyZXR1cm4gbyYmby5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihmKS5hZGQodGhpcy5vcmlnaW4pLGkmJmkuY29weShnSCkubXVsdGlwbHlTY2FsYXIocCkuYWRkKGdXKSxnfWludGVyc2VjdFNwaGVyZSh0LGUpe2pQLnN1YlZlY3RvcnModC5jZW50ZXIsdGhpcy5vcmlnaW4pO2xldCBvPWpQLmRvdCh0aGlzLmRpcmVjdGlvbiksaT1qUC5kb3QoalApLW8qbyxhPXQucmFkaXVzKnQucmFkaXVzO2lmKGk+YSlyZXR1cm4gbnVsbDtsZXQgcj1NYXRoLnNxcnQoYS1pKSxzPW8tcixsPW8rcjtyZXR1cm4gczwwJiZsPDA/bnVsbDpzPDA/dGhpcy5hdChsLGUpOnRoaXMuYXQocyxlKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2xldCBlPXQubm9ybWFsLmRvdCh0aGlzLmRpcmVjdGlvbik7aWYoZT09PTApcmV0dXJuIHQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT09PTA/MDpudWxsO2xldCBvPS0odGhpcy5vcmlnaW4uZG90KHQubm9ybWFsKSt0LmNvbnN0YW50KS9lO3JldHVybiBvPj0wP286bnVsbH1pbnRlcnNlY3RQbGFuZSh0LGUpe2xldCBvPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBvPT09bnVsbD9udWxsOnRoaXMuYXQobyxlKX1pbnRlcnNlY3RzUGxhbmUodCl7bGV0IGU9dC5kaXN0YW5jZVRvUG9pbnQodGhpcy5vcmlnaW4pO3JldHVybiBlPT09MHx8dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKSplPDB9aW50ZXJzZWN0Qm94KHQsZSl7bGV0IG8saSxhLHIscyxsLGM9MS90aGlzLmRpcmVjdGlvbi54LG09MS90aGlzLmRpcmVjdGlvbi55LGY9MS90aGlzLmRpcmVjdGlvbi56LHA9dGhpcy5vcmlnaW47cmV0dXJuIGM+PTA/KG89KHQubWluLngtcC54KSpjLGk9KHQubWF4LngtcC54KSpjKToobz0odC5tYXgueC1wLngpKmMsaT0odC5taW4ueC1wLngpKmMpLG0+PTA/KGE9KHQubWluLnktcC55KSptLHI9KHQubWF4LnktcC55KSptKTooYT0odC5tYXgueS1wLnkpKm0scj0odC5taW4ueS1wLnkpKm0pLG8+cnx8YT5pfHwoKGE+b3x8byE9PW8pJiYobz1hKSwocjxpfHxpIT09aSkmJihpPXIpLGY+PTA/KHM9KHQubWluLnotcC56KSpmLGw9KHQubWF4LnotcC56KSpmKToocz0odC5tYXguei1wLnopKmYsbD0odC5taW4uei1wLnopKmYpLG8+bHx8cz5pKXx8KChzPm98fG8hPT1vKSYmKG89cyksKGw8aXx8aSE9PWkpJiYoaT1sKSxpPDApP251bGw6dGhpcy5hdChvPj0wP286aSxlKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0aGlzLmludGVyc2VjdEJveCh0LGpQKSE9PW51bGx9aW50ZXJzZWN0VHJpYW5nbGUodCxlLG8saSxhKXt1Vy5zdWJWZWN0b3JzKGUsdCksdUguc3ViVmVjdG9ycyhvLHQpLGhXLmNyb3NzVmVjdG9ycyh1Vyx1SCk7bGV0IHI9dGhpcy5kaXJlY3Rpb24uZG90KGhXKSxzO2lmKHI+MCl7aWYoaSlyZXR1cm4gbnVsbDtzPTF9ZWxzZSBpZihyPDApcz0tMSxyPS1yO2Vsc2UgcmV0dXJuIG51bGw7Unguc3ViVmVjdG9ycyh0aGlzLm9yaWdpbix0KTtsZXQgbD1zKnRoaXMuZGlyZWN0aW9uLmRvdCh1SC5jcm9zc1ZlY3RvcnMoUngsdUgpKTtpZihsPDApcmV0dXJuIG51bGw7bGV0IGM9cyp0aGlzLmRpcmVjdGlvbi5kb3QodVcuY3Jvc3MoUngpKTtpZihjPDB8fGwrYz5yKXJldHVybiBudWxsO2xldCBtPS1zKlJ4LmRvdChoVyk7cmV0dXJuIG08MD9udWxsOnRoaXMuYXQobS9yLGEpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KHQpLHRoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmdC5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fSxlbz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuZWxlbWVudHM9WzEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG8saSxhLHIscyxsLGMsbSxmLHAsZyxfLE0seSl7bGV0IE89dGhpcy5lbGVtZW50cztyZXR1cm4gT1swXT10LE9bNF09ZSxPWzhdPW8sT1sxMl09aSxPWzFdPWEsT1s1XT1yLE9bOV09cyxPWzEzXT1sLE9bMl09YyxPWzZdPW0sT1sxMF09ZixPWzE0XT1wLE9bM109ZyxPWzddPV8sT1sxMV09TSxPWzE1XT15LHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgZW8oKS5mcm9tQXJyYXkodGhpcy5lbGVtZW50cyl9Y29weSh0KXtsZXQgZT10aGlzLmVsZW1lbnRzLG89dC5lbGVtZW50cztyZXR1cm4gZVswXT1vWzBdLGVbMV09b1sxXSxlWzJdPW9bMl0sZVszXT1vWzNdLGVbNF09b1s0XSxlWzVdPW9bNV0sZVs2XT1vWzZdLGVbN109b1s3XSxlWzhdPW9bOF0sZVs5XT1vWzldLGVbMTBdPW9bMTBdLGVbMTFdPW9bMTFdLGVbMTJdPW9bMTJdLGVbMTNdPW9bMTNdLGVbMTRdPW9bMTRdLGVbMTVdPW9bMTVdLHRoaXN9Y29weVBvc2l0aW9uKHQpe2xldCBlPXRoaXMuZWxlbWVudHMsbz10LmVsZW1lbnRzO3JldHVybiBlWzEyXT1vWzEyXSxlWzEzXT1vWzEzXSxlWzE0XT1vWzE0XSx0aGlzfXNldEZyb21NYXRyaXgzKHQpe2xldCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KGVbMF0sZVszXSxlWzZdLDAsZVsxXSxlWzRdLGVbN10sMCxlWzJdLGVbNV0sZVs4XSwwLDAsMCwwLDEpLHRoaXN9ZXh0cmFjdEJhc2lzKHQsZSxvKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMSksby5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMiksdGhpc31tYWtlQmFzaXModCxlLG8pe3JldHVybiB0aGlzLnNldCh0LngsZS54LG8ueCwwLHQueSxlLnksby55LDAsdC56LGUueixvLnosMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RSb3RhdGlvbih0KXtsZXQgZT10aGlzLmVsZW1lbnRzLG89dC5lbGVtZW50cyxpPTEvVTIuc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLGE9MS9VMi5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMSkubGVuZ3RoKCkscj0xL1UyLnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gZVswXT1vWzBdKmksZVsxXT1vWzFdKmksZVsyXT1vWzJdKmksZVszXT0wLGVbNF09b1s0XSphLGVbNV09b1s1XSphLGVbNl09b1s2XSphLGVbN109MCxlWzhdPW9bOF0qcixlWzldPW9bOV0qcixlWzEwXT1vWzEwXSpyLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21FdWxlcih0KXt0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUm90YXRpb25Gcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7bGV0IGU9dGhpcy5lbGVtZW50cyxvPXQueCxpPXQueSxhPXQueixyPU1hdGguY29zKG8pLHM9TWF0aC5zaW4obyksbD1NYXRoLmNvcyhpKSxjPU1hdGguc2luKGkpLG09TWF0aC5jb3MoYSksZj1NYXRoLnNpbihhKTtpZih0Lm9yZGVyPT09IlhZWiIpe2xldCBwPXIqbSxnPXIqZixfPXMqbSxNPXMqZjtlWzBdPWwqbSxlWzRdPS1sKmYsZVs4XT1jLGVbMV09ZytfKmMsZVs1XT1wLU0qYyxlWzldPS1zKmwsZVsyXT1NLXAqYyxlWzZdPV8rZypjLGVbMTBdPXIqbH1lbHNlIGlmKHQub3JkZXI9PT0iWVhaIil7bGV0IHA9bCptLGc9bCpmLF89YyptLE09YypmO2VbMF09cCtNKnMsZVs0XT1fKnMtZyxlWzhdPXIqYyxlWzFdPXIqZixlWzVdPXIqbSxlWzldPS1zLGVbMl09ZypzLV8sZVs2XT1NK3AqcyxlWzEwXT1yKmx9ZWxzZSBpZih0Lm9yZGVyPT09IlpYWSIpe2xldCBwPWwqbSxnPWwqZixfPWMqbSxNPWMqZjtlWzBdPXAtTSpzLGVbNF09LXIqZixlWzhdPV8rZypzLGVbMV09ZytfKnMsZVs1XT1yKm0sZVs5XT1NLXAqcyxlWzJdPS1yKmMsZVs2XT1zLGVbMTBdPXIqbH1lbHNlIGlmKHQub3JkZXI9PT0iWllYIil7bGV0IHA9ciptLGc9cipmLF89cyptLE09cypmO2VbMF09bCptLGVbNF09XypjLWcsZVs4XT1wKmMrTSxlWzFdPWwqZixlWzVdPU0qYytwLGVbOV09ZypjLV8sZVsyXT0tYyxlWzZdPXMqbCxlWzEwXT1yKmx9ZWxzZSBpZih0Lm9yZGVyPT09IllaWCIpe2xldCBwPXIqbCxnPXIqYyxfPXMqbCxNPXMqYztlWzBdPWwqbSxlWzRdPU0tcCpmLGVbOF09XypmK2csZVsxXT1mLGVbNV09ciptLGVbOV09LXMqbSxlWzJdPS1jKm0sZVs2XT1nKmYrXyxlWzEwXT1wLU0qZn1lbHNlIGlmKHQub3JkZXI9PT0iWFpZIil7bGV0IHA9cipsLGc9cipjLF89cypsLE09cypjO2VbMF09bCptLGVbNF09LWYsZVs4XT1jKm0sZVsxXT1wKmYrTSxlWzVdPXIqbSxlWzldPWcqZi1fLGVbMl09XypmLWcsZVs2XT1zKm0sZVsxMF09TSpmK3B9cmV0dXJuIGVbM109MCxlWzddPTAsZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLHRoaXN9bWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7cmV0dXJuIHRoaXMuY29tcG9zZSh3QnQsdCxTQnQpfWxvb2tBdCh0LGUsbyl7bGV0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gdGguc3ViVmVjdG9ycyh0LGUpLHRoLmxlbmd0aFNxKCk9PT0wJiYodGguej0xKSx0aC5ub3JtYWxpemUoKSxFeC5jcm9zc1ZlY3RvcnMobyx0aCksRXgubGVuZ3RoU3EoKT09PTAmJihNYXRoLmFicyhvLnopPT09MT90aC54Kz0xZS00OnRoLnorPTFlLTQsdGgubm9ybWFsaXplKCksRXguY3Jvc3NWZWN0b3JzKG8sdGgpKSxFeC5ub3JtYWxpemUoKSxoSC5jcm9zc1ZlY3RvcnModGgsRXgpLGlbMF09RXgueCxpWzRdPWhILngsaVs4XT10aC54LGlbMV09RXgueSxpWzVdPWhILnksaVs5XT10aC55LGlbMl09RXgueixpWzZdPWhILnosaVsxMF09dGgueix0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIGUhPT12b2lkIDA/KGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlNYXRyaWNlcyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsZSkpOnRoaXMubXVsdGlwbHlNYXRyaWNlcyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModCx0aGlzKX1tdWx0aXBseU1hdHJpY2VzKHQsZSl7bGV0IG89dC5lbGVtZW50cyxpPWUuZWxlbWVudHMsYT10aGlzLmVsZW1lbnRzLHI9b1swXSxzPW9bNF0sbD1vWzhdLGM9b1sxMl0sbT1vWzFdLGY9b1s1XSxwPW9bOV0sZz1vWzEzXSxfPW9bMl0sTT1vWzZdLHk9b1sxMF0sTz1vWzE0XSxiPW9bM10sUj1vWzddLEU9b1sxMV0saj1vWzE1XSxydD1pWzBdLEo9aVs0XSxFdD1pWzhdLGp0PWlbMTJdLGt0PWlbMV0sdz1pWzVdLFU9aVs5XSxudD1pWzEzXSxsdD1pWzJdLGJ0PWlbNl0sb3Q9aVsxMF0sdXQ9aVsxNF0sZ3Q9aVszXSxXdD1pWzddLFJ0PWlbMTFdLEd0PWlbMTVdO3JldHVybiBhWzBdPXIqcnQrcyprdCtsKmx0K2MqZ3QsYVs0XT1yKkorcyp3K2wqYnQrYypXdCxhWzhdPXIqRXQrcypVK2wqb3QrYypSdCxhWzEyXT1yKmp0K3MqbnQrbCp1dCtjKkd0LGFbMV09bSpydCtmKmt0K3AqbHQrZypndCxhWzVdPW0qSitmKncrcCpidCtnKld0LGFbOV09bSpFdCtmKlUrcCpvdCtnKlJ0LGFbMTNdPW0qanQrZipudCtwKnV0K2cqR3QsYVsyXT1fKnJ0K00qa3QreSpsdCtPKmd0LGFbNl09XypKK00qdyt5KmJ0K08qV3QsYVsxMF09XypFdCtNKlUreSpvdCtPKlJ0LGFbMTRdPV8qanQrTSpudCt5KnV0K08qR3QsYVszXT1iKnJ0K1Iqa3QrRSpsdCtqKmd0LGFbN109YipKK1IqdytFKmJ0K2oqV3QsYVsxMV09YipFdCtSKlUrRSpvdCtqKlJ0LGFbMTVdPWIqanQrUipudCtFKnV0K2oqR3QsdGhpc31tdWx0aXBseVNjYWxhcih0KXtsZXQgZT10aGlzLmVsZW1lbnRzO3JldHVybiBlWzBdKj10LGVbNF0qPXQsZVs4XSo9dCxlWzEyXSo9dCxlWzFdKj10LGVbNV0qPXQsZVs5XSo9dCxlWzEzXSo9dCxlWzJdKj10LGVbNl0qPXQsZVsxMF0qPXQsZVsxNF0qPXQsZVszXSo9dCxlWzddKj10LGVbMTFdKj10LGVbMTVdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtsZXQgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxvPXRbNF0saT10WzhdLGE9dFsxMl0scj10WzFdLHM9dFs1XSxsPXRbOV0sYz10WzEzXSxtPXRbMl0sZj10WzZdLHA9dFsxMF0sZz10WzE0XSxfPXRbM10sTT10WzddLHk9dFsxMV0sTz10WzE1XTtyZXR1cm4gXyooK2EqbCpmLWkqYypmLWEqcypwK28qYypwK2kqcypnLW8qbCpnKStNKigrZSpsKmctZSpjKnArYSpyKnAtaSpyKmcraSpjKm0tYSpsKm0pK3kqKCtlKmMqZi1lKnMqZy1hKnIqZitvKnIqZythKnMqbS1vKmMqbSkrTyooLWkqcyptLWUqbCpmK2UqcypwK2kqcipmLW8qcipwK28qbCptKX10cmFuc3Bvc2UoKXtsZXQgdD10aGlzLmVsZW1lbnRzLGU7cmV0dXJuIGU9dFsxXSx0WzFdPXRbNF0sdFs0XT1lLGU9dFsyXSx0WzJdPXRbOF0sdFs4XT1lLGU9dFs2XSx0WzZdPXRbOV0sdFs5XT1lLGU9dFszXSx0WzNdPXRbMTJdLHRbMTJdPWUsZT10WzddLHRbN109dFsxM10sdFsxM109ZSxlPXRbMTFdLHRbMTFdPXRbMTRdLHRbMTRdPWUsdGhpc31zZXRQb3NpdGlvbih0LGUsbyl7bGV0IGk9dGhpcy5lbGVtZW50cztyZXR1cm4gdC5pc1ZlY3RvcjM/KGlbMTJdPXQueCxpWzEzXT10LnksaVsxNF09dC56KTooaVsxMl09dCxpWzEzXT1lLGlbMTRdPW8pLHRoaXN9aW52ZXJ0KCl7bGV0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbz10WzFdLGk9dFsyXSxhPXRbM10scj10WzRdLHM9dFs1XSxsPXRbNl0sYz10WzddLG09dFs4XSxmPXRbOV0scD10WzEwXSxnPXRbMTFdLF89dFsxMl0sTT10WzEzXSx5PXRbMTRdLE89dFsxNV0sYj1mKnkqYy1NKnAqYytNKmwqZy1zKnkqZy1mKmwqTytzKnAqTyxSPV8qcCpjLW0qeSpjLV8qbCpnK3IqeSpnK20qbCpPLXIqcCpPLEU9bSpNKmMtXypmKmMrXypzKmctcipNKmctbSpzKk8rcipmKk8saj1fKmYqbC1tKk0qbC1fKnMqcCtyKk0qcCttKnMqeS1yKmYqeSxydD1lKmIrbypSK2kqRSthKmo7aWYocnQ9PT0wKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKTtsZXQgSj0xL3J0O3JldHVybiB0WzBdPWIqSix0WzFdPShNKnAqYS1mKnkqYS1NKmkqZytvKnkqZytmKmkqTy1vKnAqTykqSix0WzJdPShzKnkqYS1NKmwqYStNKmkqYy1vKnkqYy1zKmkqTytvKmwqTykqSix0WzNdPShmKmwqYS1zKnAqYS1mKmkqYytvKnAqYytzKmkqZy1vKmwqZykqSix0WzRdPVIqSix0WzVdPShtKnkqYS1fKnAqYStfKmkqZy1lKnkqZy1tKmkqTytlKnAqTykqSix0WzZdPShfKmwqYS1yKnkqYS1fKmkqYytlKnkqYytyKmkqTy1lKmwqTykqSix0WzddPShyKnAqYS1tKmwqYSttKmkqYy1lKnAqYy1yKmkqZytlKmwqZykqSix0WzhdPUUqSix0WzldPShfKmYqYS1tKk0qYS1fKm8qZytlKk0qZyttKm8qTy1lKmYqTykqSix0WzEwXT0ocipNKmEtXypzKmErXypvKmMtZSpNKmMtcipvKk8rZSpzKk8pKkosdFsxMV09KG0qcyphLXIqZiphLW0qbypjK2UqZipjK3IqbypnLWUqcypnKSpKLHRbMTJdPWoqSix0WzEzXT0obSpNKmktXypmKmkrXypvKnAtZSpNKnAtbSpvKnkrZSpmKnkpKkosdFsxNF09KF8qcyppLXIqTSppLV8qbypsK2UqTSpsK3Iqbyp5LWUqcyp5KSpKLHRbMTVdPShyKmYqaS1tKnMqaSttKm8qbC1lKmYqbC1yKm8qcCtlKnMqcCkqSix0aGlzfXNjYWxlKHQpe2xldCBlPXRoaXMuZWxlbWVudHMsbz10LngsaT10LnksYT10Lno7cmV0dXJuIGVbMF0qPW8sZVs0XSo9aSxlWzhdKj1hLGVbMV0qPW8sZVs1XSo9aSxlWzldKj1hLGVbMl0qPW8sZVs2XSo9aSxlWzEwXSo9YSxlWzNdKj1vLGVbN10qPWksZVsxMV0qPWEsdGhpc31nZXRNYXhTY2FsZU9uQXhpcygpe2xldCB0PXRoaXMuZWxlbWVudHMsZT10WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSxvPXRbNF0qdFs0XSt0WzVdKnRbNV0rdFs2XSp0WzZdLGk9dFs4XSp0WzhdK3RbOV0qdFs5XSt0WzEwXSp0WzEwXTtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KGUsbyxpKSl9bWFrZVRyYW5zbGF0aW9uKHQsZSxvKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsdCwwLDEsMCxlLDAsMCwxLG8sMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25YKHQpe2xldCBlPU1hdGguY29zKHQpLG89TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMCxlLC1vLDAsMCxvLGUsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvblkodCl7bGV0IGU9TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoZSwwLG8sMCwwLDEsMCwwLC1vLDAsZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWih0KXtsZXQgZT1NYXRoLmNvcyh0KSxvPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChlLC1vLDAsMCxvLGUsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25BeGlzKHQsZSl7bGV0IG89TWF0aC5jb3MoZSksaT1NYXRoLnNpbihlKSxhPTEtbyxyPXQueCxzPXQueSxsPXQueixjPWEqcixtPWEqcztyZXR1cm4gdGhpcy5zZXQoYypyK28sYypzLWkqbCxjKmwraSpzLDAsYypzK2kqbCxtKnMrbyxtKmwtaSpyLDAsYypsLWkqcyxtKmwraSpyLGEqbCpsK28sMCwwLDAsMCwxKSx0aGlzfW1ha2VTY2FsZSh0LGUsbyl7cmV0dXJuIHRoaXMuc2V0KHQsMCwwLDAsMCxlLDAsMCwwLDAsbywwLDAsMCwwLDEpLHRoaXN9bWFrZVNoZWFyKHQsZSxvLGksYSxyKXtyZXR1cm4gdGhpcy5zZXQoMSxvLGEsMCx0LDEsciwwLGUsaSwxLDAsMCwwLDAsMSksdGhpc31jb21wb3NlKHQsZSxvKXtsZXQgaT10aGlzLmVsZW1lbnRzLGE9ZS5feCxyPWUuX3kscz1lLl96LGw9ZS5fdyxjPWErYSxtPXIrcixmPXMrcyxwPWEqYyxnPWEqbSxfPWEqZixNPXIqbSx5PXIqZixPPXMqZixiPWwqYyxSPWwqbSxFPWwqZixqPW8ueCxydD1vLnksSj1vLno7cmV0dXJuIGlbMF09KDEtKE0rTykpKmosaVsxXT0oZytFKSpqLGlbMl09KF8tUikqaixpWzNdPTAsaVs0XT0oZy1FKSpydCxpWzVdPSgxLShwK08pKSpydCxpWzZdPSh5K2IpKnJ0LGlbN109MCxpWzhdPShfK1IpKkosaVs5XT0oeS1iKSpKLGlbMTBdPSgxLShwK00pKSpKLGlbMTFdPTAsaVsxMl09dC54LGlbMTNdPXQueSxpWzE0XT10LnosaVsxNV09MSx0aGlzfWRlY29tcG9zZSh0LGUsbyl7bGV0IGk9dGhpcy5lbGVtZW50cyxhPVUyLnNldChpWzBdLGlbMV0saVsyXSkubGVuZ3RoKCkscj1VMi5zZXQoaVs0XSxpWzVdLGlbNl0pLmxlbmd0aCgpLHM9VTIuc2V0KGlbOF0saVs5XSxpWzEwXSkubGVuZ3RoKCk7dGhpcy5kZXRlcm1pbmFudCgpPDAmJihhPS1hKSx0Lng9aVsxMl0sdC55PWlbMTNdLHQuej1pWzE0XSxpYi5jb3B5KHRoaXMpO2xldCBjPTEvYSxtPTEvcixmPTEvcztyZXR1cm4gaWIuZWxlbWVudHNbMF0qPWMsaWIuZWxlbWVudHNbMV0qPWMsaWIuZWxlbWVudHNbMl0qPWMsaWIuZWxlbWVudHNbNF0qPW0saWIuZWxlbWVudHNbNV0qPW0saWIuZWxlbWVudHNbNl0qPW0saWIuZWxlbWVudHNbOF0qPWYsaWIuZWxlbWVudHNbOV0qPWYsaWIuZWxlbWVudHNbMTBdKj1mLGUuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGliKSxvLng9YSxvLnk9cixvLno9cyx0aGlzfW1ha2VQZXJzcGVjdGl2ZSh0LGUsbyxpLGEscil7cj09PXZvaWQgMCYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZVBlcnNwZWN0aXZlKCkgaGFzIGJlZW4gcmVkZWZpbmVkIGFuZCBoYXMgYSBuZXcgc2lnbmF0dXJlLiBQbGVhc2UgY2hlY2sgdGhlIGRvY3MuIik7bGV0IHM9dGhpcy5lbGVtZW50cyxsPTIqYS8oZS10KSxjPTIqYS8oby1pKSxtPShlK3QpLyhlLXQpLGY9KG8raSkvKG8taSkscD0tKHIrYSkvKHItYSksZz0tMipyKmEvKHItYSk7cmV0dXJuIHNbMF09bCxzWzRdPTAsc1s4XT1tLHNbMTJdPTAsc1sxXT0wLHNbNV09YyxzWzldPWYsc1sxM109MCxzWzJdPTAsc1s2XT0wLHNbMTBdPXAsc1sxNF09ZyxzWzNdPTAsc1s3XT0wLHNbMTFdPS0xLHNbMTVdPTAsdGhpc31tYWtlT3J0aG9ncmFwaGljKHQsZSxvLGksYSxyKXtsZXQgcz10aGlzLmVsZW1lbnRzLGw9MS8oZS10KSxjPTEvKG8taSksbT0xLyhyLWEpLGY9KGUrdCkqbCxwPShvK2kpKmMsZz0ocithKSptO3JldHVybiBzWzBdPTIqbCxzWzRdPTAsc1s4XT0wLHNbMTJdPS1mLHNbMV09MCxzWzVdPTIqYyxzWzldPTAsc1sxM109LXAsc1syXT0wLHNbNl09MCxzWzEwXT0tMiptLHNbMTRdPS1nLHNbM109MCxzWzddPTAsc1sxMV09MCxzWzE1XT0xLHRoaXN9ZXF1YWxzKHQpe2xldCBlPXRoaXMuZWxlbWVudHMsbz10LmVsZW1lbnRzO2ZvcihsZXQgaT0wO2k8MTY7aSsrKWlmKGVbaV0hPT1vW2ldKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBvPTA7bzwxNjtvKyspdGhpcy5lbGVtZW50c1tvXT10W28rZV07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7bGV0IG89dGhpcy5lbGVtZW50cztyZXR1cm4gdFtlXT1vWzBdLHRbZSsxXT1vWzFdLHRbZSsyXT1vWzJdLHRbZSszXT1vWzNdLHRbZSs0XT1vWzRdLHRbZSs1XT1vWzVdLHRbZSs2XT1vWzZdLHRbZSs3XT1vWzddLHRbZSs4XT1vWzhdLHRbZSs5XT1vWzldLHRbZSsxMF09b1sxMF0sdFtlKzExXT1vWzExXSx0W2UrMTJdPW9bMTJdLHRbZSsxM109b1sxM10sdFtlKzE0XT1vWzE0XSx0W2UrMTVdPW9bMTVdLHR9fTtlby5wcm90b3R5cGUuaXNNYXRyaXg0PSEwO3ZhciBVMj1uZXcgcHQsaWI9bmV3IGVvLHdCdD1uZXcgcHQoMCwwLDApLFNCdD1uZXcgcHQoMSwxLDEpLEV4PW5ldyBwdCxoSD1uZXcgcHQsdGg9bmV3IHB0LHhkdD1uZXcgZW8sdmR0PW5ldyBSbSxqeD1jbGFzc3tjb25zdHJ1Y3Rvcih0PTAsZT0wLG89MCxpPWp4LkRlZmF1bHRPcmRlcil7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW8sdGhpcy5fb3JkZXI9aX1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgb3JkZXIoKXtyZXR1cm4gdGhpcy5fb3JkZXJ9c2V0IG9yZGVyKHQpe3RoaXMuX29yZGVyPXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LGUsbyxpPXRoaXMuX29yZGVyKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW8sdGhpcy5fb3JkZXI9aSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLl94LHRoaXMuX3ksdGhpcy5feix0aGlzLl9vcmRlcil9Y29weSh0KXtyZXR1cm4gdGhpcy5feD10Ll94LHRoaXMuX3k9dC5feSx0aGlzLl96PXQuX3osdGhpcy5fb3JkZXI9dC5fb3JkZXIsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVJvdGF0aW9uTWF0cml4KHQsZT10aGlzLl9vcmRlcixvPSEwKXtsZXQgaT10LmVsZW1lbnRzLGE9aVswXSxyPWlbNF0scz1pWzhdLGw9aVsxXSxjPWlbNV0sbT1pWzldLGY9aVsyXSxwPWlbNl0sZz1pWzEwXTtzd2l0Y2goZSl7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKGtkKHMsLTEsMSkpLE1hdGguYWJzKHMpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIoLW0sZyksdGhpcy5fej1NYXRoLmF0YW4yKC1yLGEpKToodGhpcy5feD1NYXRoLmF0YW4yKHAsYyksdGhpcy5fej0wKTticmVhaztjYXNlIllYWiI6dGhpcy5feD1NYXRoLmFzaW4oLWtkKG0sLTEsMSkpLE1hdGguYWJzKG0pPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIocyxnKSx0aGlzLl96PU1hdGguYXRhbjIobCxjKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtZixhKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PU1hdGguYXNpbihrZChwLC0xLDEpKSxNYXRoLmFicyhwKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC1mLGcpLHRoaXMuX3o9TWF0aC5hdGFuMigtcixjKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIobCxhKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC1rZChmLC0xLDEpKSxNYXRoLmFicyhmKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKHAsZyksdGhpcy5fej1NYXRoLmF0YW4yKGwsYSkpOih0aGlzLl94PTAsdGhpcy5fej1NYXRoLmF0YW4yKC1yLGMpKTticmVhaztjYXNlIllaWCI6dGhpcy5fej1NYXRoLmFzaW4oa2QobCwtMSwxKSksTWF0aC5hYnMobCk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtbSxjKSx0aGlzLl95PU1hdGguYXRhbjIoLWYsYSkpOih0aGlzLl94PTAsdGhpcy5feT1NYXRoLmF0YW4yKHMsZykpO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl96PU1hdGguYXNpbigta2QociwtMSwxKSksTWF0aC5hYnMocik8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihwLGMpLHRoaXMuX3k9TWF0aC5hdGFuMihzLGEpKToodGhpcy5feD1NYXRoLmF0YW4yKC1tLGcpLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitlKX1yZXR1cm4gdGhpcy5fb3JkZXI9ZSxvPT09ITAmJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQsZSxvKXtyZXR1cm4geGR0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KHhkdCxlLG8pfXNldEZyb21WZWN0b3IzKHQsZT10aGlzLl9vcmRlcil7cmV0dXJuIHRoaXMuc2V0KHQueCx0LnksdC56LGUpfXJlb3JkZXIodCl7cmV0dXJuIHZkdC5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbih2ZHQsdCl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll9vcmRlcj09PXRoaXMuX29yZGVyfWZyb21BcnJheSh0KXtyZXR1cm4gdGhpcy5feD10WzBdLHRoaXMuX3k9dFsxXSx0aGlzLl96PXRbMl0sdFszXSE9PXZvaWQgMCYmKHRoaXMuX29yZGVyPXRbM10pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxlPTApe3JldHVybiB0W2VdPXRoaXMuX3gsdFtlKzFdPXRoaXMuX3ksdFtlKzJdPXRoaXMuX3osdFtlKzNdPXRoaXMuX29yZGVyLHR9dG9WZWN0b3IzKHQpe3JldHVybiB0P3Quc2V0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KTpuZXcgcHQodGhpcy5feCx0aGlzLl95LHRoaXMuX3opfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fTtqeC5wcm90b3R5cGUuaXNFdWxlcj0hMDtqeC5EZWZhdWx0T3JkZXI9IlhZWiI7anguUm90YXRpb25PcmRlcnM9WyJYWVoiLCJZWlgiLCJaWFkiLCJYWlkiLCJZWFoiLCJaWVgiXTt2YXIgWkg9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm1hc2s9MX1zZXQodCl7dGhpcy5tYXNrPSgxPDx0fDApPj4+MH1lbmFibGUodCl7dGhpcy5tYXNrfD0xPDx0fDB9ZW5hYmxlQWxsKCl7dGhpcy5tYXNrPS0xfXRvZ2dsZSh0KXt0aGlzLm1hc2tePTE8PHR8MH1kaXNhYmxlKHQpe3RoaXMubWFzayY9figxPDx0fDApfWRpc2FibGVBbGwoKXt0aGlzLm1hc2s9MH10ZXN0KHQpe3JldHVybih0aGlzLm1hc2smdC5tYXNrKSE9PTB9aXNFbmFibGVkKHQpe3JldHVybih0aGlzLm1hc2smKDE8PHR8MCkpIT09MH19LFJCdD0wLHdkdD1uZXcgcHQsWTI9bmV3IFJtLFVQPW5ldyBlbyxfSD1uZXcgcHQsajU9bmV3IHB0LEVCdD1uZXcgcHQsa0J0PW5ldyBSbSxTZHQ9bmV3IHB0KDEsMCwwKSxSZHQ9bmV3IHB0KDAsMSwwKSxFZHQ9bmV3IHB0KDAsMCwxKSxOQnQ9e3R5cGU6ImFkZGVkIn0sa2R0PXt0eXBlOiJyZW1vdmVkIn0sVmk9Y2xhc3MgZXh0ZW5kcyBxUHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6UkJ0Kyt9KSx0aGlzLnV1aWQ9c2IoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJPYmplY3QzRCIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPVtdLHRoaXMudXA9VmkuRGVmYXVsdFVwLmNsb25lKCk7bGV0IHQ9bmV3IHB0LGU9bmV3IGp4LG89bmV3IFJtLGk9bmV3IHB0KDEsMSwxKTtmdW5jdGlvbiBhKCl7by5zZXRGcm9tRXVsZXIoZSwhMSl9ZnVuY3Rpb24gcigpe2Uuc2V0RnJvbVF1YXRlcm5pb24obyx2b2lkIDAsITEpfWUuX29uQ2hhbmdlKGEpLG8uX29uQ2hhbmdlKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3Bvc2l0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp0fSxyb3RhdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6ZX0scXVhdGVybmlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6b30sc2NhbGU6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOml9LG1vZGVsVmlld01hdHJpeDp7dmFsdWU6bmV3IGVvfSxub3JtYWxNYXRyaXg6e3ZhbHVlOm5ldyBtbH19KSx0aGlzLm1hdHJpeD1uZXcgZW8sdGhpcy5tYXRyaXhXb3JsZD1uZXcgZW8sdGhpcy5tYXRyaXhBdXRvVXBkYXRlPVZpLkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0aGlzLmxheWVycz1uZXcgWkgsdGhpcy52aXNpYmxlPSEwLHRoaXMuY2FzdFNoYWRvdz0hMSx0aGlzLnJlY2VpdmVTaGFkb3c9ITEsdGhpcy5mcnVzdHVtQ3VsbGVkPSEwLHRoaXMucmVuZGVyT3JkZXI9MCx0aGlzLmFuaW1hdGlvbnM9W10sdGhpcy51c2VyRGF0YT17fX1vbkJlZm9yZVJlbmRlcigpe31vbkFmdGVyUmVuZGVyKCl7fWFwcGx5TWF0cml4NCh0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5tYXRyaXgucHJlbXVsdGlwbHkodCksdGhpcy5tYXRyaXguZGVjb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KHQpLHRoaXN9c2V0Um90YXRpb25Gcm9tQXhpc0FuZ2xlKHQsZSl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUodCxlKX1zZXRSb3RhdGlvbkZyb21FdWxlcih0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKHQsITApfXNldFJvdGF0aW9uRnJvbU1hdHJpeCh0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpfXNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl7dGhpcy5xdWF0ZXJuaW9uLmNvcHkodCl9cm90YXRlT25BeGlzKHQsZSl7cmV0dXJuIFkyLnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ubXVsdGlwbHkoWTIpLHRoaXN9cm90YXRlT25Xb3JsZEF4aXModCxlKXtyZXR1cm4gWTIuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShZMiksdGhpc31yb3RhdGVYKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhTZHQsdCl9cm90YXRlWSh0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoUmR0LHQpfXJvdGF0ZVoodCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKEVkdCx0KX10cmFuc2xhdGVPbkF4aXModCxlKXtyZXR1cm4gd2R0LmNvcHkodCkuYXBwbHlRdWF0ZXJuaW9uKHRoaXMucXVhdGVybmlvbiksdGhpcy5wb3NpdGlvbi5hZGQod2R0Lm11bHRpcGx5U2NhbGFyKGUpKSx0aGlzfXRyYW5zbGF0ZVgodCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKFNkdCx0KX10cmFuc2xhdGVZKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhSZHQsdCl9dHJhbnNsYXRlWih0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoRWR0LHQpfWxvY2FsVG9Xb3JsZCh0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCl9d29ybGRUb0xvY2FsKHQpe3JldHVybiB0LmFwcGx5TWF0cml4NChVUC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpKX1sb29rQXQodCxlLG8pe3QuaXNWZWN0b3IzP19ILmNvcHkodCk6X0guc2V0KHQsZSxvKTtsZXQgaT10aGlzLnBhcmVudDt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxqNS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCksdGhpcy5pc0NhbWVyYXx8dGhpcy5pc0xpZ2h0P1VQLmxvb2tBdChqNSxfSCx0aGlzLnVwKTpVUC5sb29rQXQoX0gsajUsdGhpcy51cCksdGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeChVUCksaSYmKFVQLmV4dHJhY3RSb3RhdGlvbihpLm1hdHJpeFdvcmxkKSxZMi5zZXRGcm9tUm90YXRpb25NYXRyaXgoVVApLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShZMi5pbnZlcnQoKSkpfWFkZCh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdGhpcy5hZGQoYXJndW1lbnRzW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4gdD09PXRoaXM/KGNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IGNhbid0IGJlIGFkZGVkIGFzIGEgY2hpbGQgb2YgaXRzZWxmLiIsdCksdGhpcyk6KHQmJnQuaXNPYmplY3QzRD8odC5wYXJlbnQhPT1udWxsJiZ0LnBhcmVudC5yZW1vdmUodCksdC5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkcmVuLnB1c2godCksdC5kaXNwYXRjaEV2ZW50KE5CdCkpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC4iLHQpLHRoaXMpfXJlbW92ZSh0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgbz0wO288YXJndW1lbnRzLmxlbmd0aDtvKyspdGhpcy5yZW1vdmUoYXJndW1lbnRzW29dKTtyZXR1cm4gdGhpc31sZXQgZT10aGlzLmNoaWxkcmVuLmluZGV4T2YodCk7cmV0dXJuIGUhPT0tMSYmKHQucGFyZW50PW51bGwsdGhpcy5jaGlsZHJlbi5zcGxpY2UoZSwxKSx0LmRpc3BhdGNoRXZlbnQoa2R0KSksdGhpc31yZW1vdmVGcm9tUGFyZW50KCl7bGV0IHQ9dGhpcy5wYXJlbnQ7cmV0dXJuIHQhPT1udWxsJiZ0LnJlbW92ZSh0aGlzKSx0aGlzfWNsZWFyKCl7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2xldCBlPXRoaXMuY2hpbGRyZW5bdF07ZS5wYXJlbnQ9bnVsbCxlLmRpc3BhdGNoRXZlbnQoa2R0KX1yZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg9MCx0aGlzfWF0dGFjaCh0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksVVAuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKSx0LnBhcmVudCE9PW51bGwmJih0LnBhcmVudC51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksVVAubXVsdGlwbHkodC5wYXJlbnQubWF0cml4V29ybGQpKSx0LmFwcGx5TWF0cml4NChVUCksdGhpcy5hZGQodCksdC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCksdGhpc31nZXRPYmplY3RCeUlkKHQpe3JldHVybiB0aGlzLmdldE9iamVjdEJ5UHJvcGVydHkoImlkIix0KX1nZXRPYmplY3RCeU5hbWUodCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgibmFtZSIsdCl9Z2V0T2JqZWN0QnlQcm9wZXJ0eSh0LGUpe2lmKHRoaXNbdF09PT1lKXJldHVybiB0aGlzO2ZvcihsZXQgbz0wLGk9dGhpcy5jaGlsZHJlbi5sZW5ndGg7bzxpO28rKyl7bGV0IHI9dGhpcy5jaGlsZHJlbltvXS5nZXRPYmplY3RCeVByb3BlcnR5KHQsZSk7aWYociE9PXZvaWQgMClyZXR1cm4gcn19Z2V0V29ybGRQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCl9Z2V0V29ybGRRdWF0ZXJuaW9uKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShqNSx0LEVCdCksdH1nZXRXb3JsZFNjYWxlKHQpe3JldHVybiB0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShqNSxrQnQsdCksdH1nZXRXb3JsZERpcmVjdGlvbih0KXt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTtsZXQgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldChlWzhdLGVbOV0sZVsxMF0pLm5vcm1hbGl6ZSgpfXJheWNhc3QoKXt9dHJhdmVyc2UodCl7dCh0aGlzKTtsZXQgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbz0wLGk9ZS5sZW5ndGg7bzxpO28rKyllW29dLnRyYXZlcnNlKHQpfXRyYXZlcnNlVmlzaWJsZSh0KXtpZih0aGlzLnZpc2libGU9PT0hMSlyZXR1cm47dCh0aGlzKTtsZXQgZT10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbz0wLGk9ZS5sZW5ndGg7bzxpO28rKyllW29dLnRyYXZlcnNlVmlzaWJsZSh0KX10cmF2ZXJzZUFuY2VzdG9ycyh0KXtsZXQgZT10aGlzLnBhcmVudDtlIT09bnVsbCYmKHQoZSksZS50cmF2ZXJzZUFuY2VzdG9ycyh0KSl9dXBkYXRlTWF0cml4KCl7dGhpcy5tYXRyaXguY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9dXBkYXRlTWF0cml4V29ybGQodCl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpLCh0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGV8fHQpJiYodGhpcy5wYXJlbnQ9PT1udWxsP3RoaXMubWF0cml4V29ybGQuY29weSh0aGlzLm1hdHJpeCk6dGhpcy5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKHRoaXMucGFyZW50Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4KSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITEsdD0hMCk7bGV0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG89MCxpPWUubGVuZ3RoO288aTtvKyspZVtvXS51cGRhdGVNYXRyaXhXb3JsZCh0KX11cGRhdGVXb3JsZE1hdHJpeCh0LGUpe2xldCBvPXRoaXMucGFyZW50O2lmKHQ9PT0hMCYmbyE9PW51bGwmJm8udXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnBhcmVudD09PW51bGw/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLGU9PT0hMCl7bGV0IGk9dGhpcy5jaGlsZHJlbjtmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspaVthXS51cGRhdGVXb3JsZE1hdHJpeCghMSwhMCl9fXRvSlNPTih0KXtsZXQgZT10PT09dm9pZCAwfHx0eXBlb2YgdD09InN0cmluZyIsbz17fTtlJiYodD17Z2VvbWV0cmllczp7fSxtYXRlcmlhbHM6e30sdGV4dHVyZXM6e30saW1hZ2VzOnt9LHNoYXBlczp7fSxza2VsZXRvbnM6e30sYW5pbWF0aW9uczp7fX0sby5tZXRhZGF0YT17dmVyc2lvbjo0LjUsdHlwZToiT2JqZWN0IixnZW5lcmF0b3I6Ik9iamVjdDNELnRvSlNPTiJ9KTtsZXQgaT17fTtpLnV1aWQ9dGhpcy51dWlkLGkudHlwZT10aGlzLnR5cGUsdGhpcy5uYW1lIT09IiImJihpLm5hbWU9dGhpcy5uYW1lKSx0aGlzLmNhc3RTaGFkb3c9PT0hMCYmKGkuY2FzdFNoYWRvdz0hMCksdGhpcy5yZWNlaXZlU2hhZG93PT09ITAmJihpLnJlY2VpdmVTaGFkb3c9ITApLHRoaXMudmlzaWJsZT09PSExJiYoaS52aXNpYmxlPSExKSx0aGlzLmZydXN0dW1DdWxsZWQ9PT0hMSYmKGkuZnJ1c3R1bUN1bGxlZD0hMSksdGhpcy5yZW5kZXJPcmRlciE9PTAmJihpLnJlbmRlck9yZGVyPXRoaXMucmVuZGVyT3JkZXIpLEpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpIT09Int9IiYmKGkudXNlckRhdGE9dGhpcy51c2VyRGF0YSksaS5sYXllcnM9dGhpcy5sYXllcnMubWFzayxpLm1hdHJpeD10aGlzLm1hdHJpeC50b0FycmF5KCksdGhpcy5tYXRyaXhBdXRvVXBkYXRlPT09ITEmJihpLm1hdHJpeEF1dG9VcGRhdGU9ITEpLHRoaXMuaXNJbnN0YW5jZWRNZXNoJiYoaS50eXBlPSJJbnN0YW5jZWRNZXNoIixpLmNvdW50PXRoaXMuY291bnQsaS5pbnN0YW5jZU1hdHJpeD10aGlzLmluc3RhbmNlTWF0cml4LnRvSlNPTigpLHRoaXMuaW5zdGFuY2VDb2xvciE9PW51bGwmJihpLmluc3RhbmNlQ29sb3I9dGhpcy5pbnN0YW5jZUNvbG9yLnRvSlNPTigpKSk7ZnVuY3Rpb24gYShzLGwpe3JldHVybiBzW2wudXVpZF09PT12b2lkIDAmJihzW2wudXVpZF09bC50b0pTT04odCkpLGwudXVpZH1pZih0aGlzLmlzU2NlbmUpdGhpcy5iYWNrZ3JvdW5kJiYodGhpcy5iYWNrZ3JvdW5kLmlzQ29sb3I/aS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04oKTp0aGlzLmJhY2tncm91bmQuaXNUZXh0dXJlJiYoaS5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04odCkudXVpZCkpLHRoaXMuZW52aXJvbm1lbnQmJnRoaXMuZW52aXJvbm1lbnQuaXNUZXh0dXJlJiYoaS5lbnZpcm9ubWVudD10aGlzLmVudmlyb25tZW50LnRvSlNPTih0KS51dWlkKTtlbHNlIGlmKHRoaXMuaXNNZXNofHx0aGlzLmlzTGluZXx8dGhpcy5pc1BvaW50cyl7aS5nZW9tZXRyeT1hKHQuZ2VvbWV0cmllcyx0aGlzLmdlb21ldHJ5KTtsZXQgcz10aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7aWYocyE9PXZvaWQgMCYmcy5zaGFwZXMhPT12b2lkIDApe2xldCBsPXMuc2hhcGVzO2lmKEFycmF5LmlzQXJyYXkobCkpZm9yKGxldCBjPTAsbT1sLmxlbmd0aDtjPG07YysrKXtsZXQgZj1sW2NdO2EodC5zaGFwZXMsZil9ZWxzZSBhKHQuc2hhcGVzLGwpfX1pZih0aGlzLmlzU2tpbm5lZE1lc2gmJihpLmJpbmRNb2RlPXRoaXMuYmluZE1vZGUsaS5iaW5kTWF0cml4PXRoaXMuYmluZE1hdHJpeC50b0FycmF5KCksdGhpcy5za2VsZXRvbiE9PXZvaWQgMCYmKGEodC5za2VsZXRvbnMsdGhpcy5za2VsZXRvbiksaS5za2VsZXRvbj10aGlzLnNrZWxldG9uLnV1aWQpKSx0aGlzLm1hdGVyaWFsIT09dm9pZCAwKWlmKEFycmF5LmlzQXJyYXkodGhpcy5tYXRlcmlhbCkpe2xldCBzPVtdO2ZvcihsZXQgbD0wLGM9dGhpcy5tYXRlcmlhbC5sZW5ndGg7bDxjO2wrKylzLnB1c2goYSh0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsW2xdKSk7aS5tYXRlcmlhbD1zfWVsc2UgaS5tYXRlcmlhbD1hKHQubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWwpO2lmKHRoaXMuY2hpbGRyZW4ubGVuZ3RoPjApe2kuY2hpbGRyZW49W107Zm9yKGxldCBzPTA7czx0aGlzLmNoaWxkcmVuLmxlbmd0aDtzKyspaS5jaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5bc10udG9KU09OKHQpLm9iamVjdCl9aWYodGhpcy5hbmltYXRpb25zLmxlbmd0aD4wKXtpLmFuaW1hdGlvbnM9W107Zm9yKGxldCBzPTA7czx0aGlzLmFuaW1hdGlvbnMubGVuZ3RoO3MrKyl7bGV0IGw9dGhpcy5hbmltYXRpb25zW3NdO2kuYW5pbWF0aW9ucy5wdXNoKGEodC5hbmltYXRpb25zLGwpKX19aWYoZSl7bGV0IHM9cih0Lmdlb21ldHJpZXMpLGw9cih0Lm1hdGVyaWFscyksYz1yKHQudGV4dHVyZXMpLG09cih0LmltYWdlcyksZj1yKHQuc2hhcGVzKSxwPXIodC5za2VsZXRvbnMpLGc9cih0LmFuaW1hdGlvbnMpO3MubGVuZ3RoPjAmJihvLmdlb21ldHJpZXM9cyksbC5sZW5ndGg+MCYmKG8ubWF0ZXJpYWxzPWwpLGMubGVuZ3RoPjAmJihvLnRleHR1cmVzPWMpLG0ubGVuZ3RoPjAmJihvLmltYWdlcz1tKSxmLmxlbmd0aD4wJiYoby5zaGFwZXM9ZikscC5sZW5ndGg+MCYmKG8uc2tlbGV0b25zPXApLGcubGVuZ3RoPjAmJihvLmFuaW1hdGlvbnM9Zyl9cmV0dXJuIG8ub2JqZWN0PWksbztmdW5jdGlvbiByKHMpe2xldCBsPVtdO2ZvcihsZXQgYyBpbiBzKXtsZXQgbT1zW2NdO2RlbGV0ZSBtLm1ldGFkYXRhLGwucHVzaChtKX1yZXR1cm4gbH19Y2xvbmUodCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzLHQpfWNvcHkodCxlPSEwKXtpZih0aGlzLm5hbWU9dC5uYW1lLHRoaXMudXAuY29weSh0LnVwKSx0aGlzLnBvc2l0aW9uLmNvcHkodC5wb3NpdGlvbiksdGhpcy5yb3RhdGlvbi5vcmRlcj10LnJvdGF0aW9uLm9yZGVyLHRoaXMucXVhdGVybmlvbi5jb3B5KHQucXVhdGVybmlvbiksdGhpcy5zY2FsZS5jb3B5KHQuc2NhbGUpLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUsdGhpcy5sYXllcnMubWFzaz10LmxheWVycy5tYXNrLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyx0aGlzLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93LHRoaXMuZnJ1c3R1bUN1bGxlZD10LmZydXN0dW1DdWxsZWQsdGhpcy5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksZT09PSEwKWZvcihsZXQgbz0wO288dC5jaGlsZHJlbi5sZW5ndGg7bysrKXtsZXQgaT10LmNoaWxkcmVuW29dO3RoaXMuYWRkKGkuY2xvbmUoKSl9cmV0dXJuIHRoaXN9fTtWaS5EZWZhdWx0VXA9bmV3IHB0KDAsMSwwKTtWaS5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZT0hMDtWaS5wcm90b3R5cGUuaXNPYmplY3QzRD0hMDt2YXIgYWI9bmV3IHB0LFlQPW5ldyBwdCxfVz1uZXcgcHQsR1A9bmV3IHB0LEcyPW5ldyBwdCxXMj1uZXcgcHQsTmR0PW5ldyBwdCxDVz1uZXcgcHQsTVc9bmV3IHB0LGJXPW5ldyBwdCxYcj1jbGFzc3tjb25zdHJ1Y3Rvcih0PW5ldyBwdCxlPW5ldyBwdCxvPW5ldyBwdCl7dGhpcy5hPXQsdGhpcy5iPWUsdGhpcy5jPW99c3RhdGljIGdldE5vcm1hbCh0LGUsbyxpKXtpLnN1YlZlY3RvcnMobyxlKSxhYi5zdWJWZWN0b3JzKHQsZSksaS5jcm9zcyhhYik7bGV0IGE9aS5sZW5ndGhTcSgpO3JldHVybiBhPjA/aS5tdWx0aXBseVNjYWxhcigxL01hdGguc3FydChhKSk6aS5zZXQoMCwwLDApfXN0YXRpYyBnZXRCYXJ5Y29vcmQodCxlLG8saSxhKXthYi5zdWJWZWN0b3JzKGksZSksWVAuc3ViVmVjdG9ycyhvLGUpLF9XLnN1YlZlY3RvcnModCxlKTtsZXQgcj1hYi5kb3QoYWIpLHM9YWIuZG90KFlQKSxsPWFiLmRvdChfVyksYz1ZUC5kb3QoWVApLG09WVAuZG90KF9XKSxmPXIqYy1zKnM7aWYoZj09PTApcmV0dXJuIGEuc2V0KC0yLC0xLC0xKTtsZXQgcD0xL2YsZz0oYypsLXMqbSkqcCxfPShyKm0tcypsKSpwO3JldHVybiBhLnNldCgxLWctXyxfLGcpfXN0YXRpYyBjb250YWluc1BvaW50KHQsZSxvLGkpe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LGUsbyxpLEdQKSxHUC54Pj0wJiZHUC55Pj0wJiZHUC54K0dQLnk8PTF9c3RhdGljIGdldFVWKHQsZSxvLGksYSxyLHMsbCl7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxvLGksR1ApLGwuc2V0KDAsMCksbC5hZGRTY2FsZWRWZWN0b3IoYSxHUC54KSxsLmFkZFNjYWxlZFZlY3RvcihyLEdQLnkpLGwuYWRkU2NhbGVkVmVjdG9yKHMsR1AueiksbH1zdGF0aWMgaXNGcm9udEZhY2luZyh0LGUsbyxpKXtyZXR1cm4gYWIuc3ViVmVjdG9ycyhvLGUpLFlQLnN1YlZlY3RvcnModCxlKSxhYi5jcm9zcyhZUCkuZG90KGkpPDB9c2V0KHQsZSxvKXtyZXR1cm4gdGhpcy5hLmNvcHkodCksdGhpcy5iLmNvcHkoZSksdGhpcy5jLmNvcHkobyksdGhpc31zZXRGcm9tUG9pbnRzQW5kSW5kaWNlcyh0LGUsbyxpKXtyZXR1cm4gdGhpcy5hLmNvcHkodFtlXSksdGhpcy5iLmNvcHkodFtvXSksdGhpcy5jLmNvcHkodFtpXSksdGhpc31zZXRGcm9tQXR0cmlidXRlQW5kSW5kaWNlcyh0LGUsbyxpKXtyZXR1cm4gdGhpcy5hLmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSx0aGlzLmIuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG8pLHRoaXMuYy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsaSksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hLmNvcHkodC5hKSx0aGlzLmIuY29weSh0LmIpLHRoaXMuYy5jb3B5KHQuYyksdGhpc31nZXRBcmVhKCl7cmV0dXJuIGFiLnN1YlZlY3RvcnModGhpcy5jLHRoaXMuYiksWVAuc3ViVmVjdG9ycyh0aGlzLmEsdGhpcy5iKSxhYi5jcm9zcyhZUCkubGVuZ3RoKCkqLjV9Z2V0TWlkcG9pbnQodCl7cmV0dXJuIHQuYWRkVmVjdG9ycyh0aGlzLmEsdGhpcy5iKS5hZGQodGhpcy5jKS5tdWx0aXBseVNjYWxhcigxLzMpfWdldE5vcm1hbCh0KXtyZXR1cm4gWHIuZ2V0Tm9ybWFsKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWdldFBsYW5lKHQpe3JldHVybiB0LnNldEZyb21Db3BsYW5hclBvaW50cyh0aGlzLmEsdGhpcy5iLHRoaXMuYyl9Z2V0QmFyeWNvb3JkKHQsZSl7cmV0dXJuIFhyLmdldEJhcnljb29yZCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUpfWdldFVWKHQsZSxvLGksYSl7cmV0dXJuIFhyLmdldFVWKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsZSxvLGksYSl9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gWHIuY29udGFpbnNQb2ludCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1pc0Zyb250RmFjaW5nKHQpe3JldHVybiBYci5pc0Zyb250RmFjaW5nKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1RyaWFuZ2xlKHRoaXMpfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXtsZXQgbz10aGlzLmEsaT10aGlzLmIsYT10aGlzLmMscixzO0cyLnN1YlZlY3RvcnMoaSxvKSxXMi5zdWJWZWN0b3JzKGEsbyksQ1cuc3ViVmVjdG9ycyh0LG8pO2xldCBsPUcyLmRvdChDVyksYz1XMi5kb3QoQ1cpO2lmKGw8PTAmJmM8PTApcmV0dXJuIGUuY29weShvKTtNVy5zdWJWZWN0b3JzKHQsaSk7bGV0IG09RzIuZG90KE1XKSxmPVcyLmRvdChNVyk7aWYobT49MCYmZjw9bSlyZXR1cm4gZS5jb3B5KGkpO2xldCBwPWwqZi1tKmM7aWYocDw9MCYmbD49MCYmbTw9MClyZXR1cm4gcj1sLyhsLW0pLGUuY29weShvKS5hZGRTY2FsZWRWZWN0b3IoRzIscik7Ylcuc3ViVmVjdG9ycyh0LGEpO2xldCBnPUcyLmRvdChiVyksXz1XMi5kb3QoYlcpO2lmKF8+PTAmJmc8PV8pcmV0dXJuIGUuY29weShhKTtsZXQgTT1nKmMtbCpfO2lmKE08PTAmJmM+PTAmJl88PTApcmV0dXJuIHM9Yy8oYy1fKSxlLmNvcHkobykuYWRkU2NhbGVkVmVjdG9yKFcyLHMpO2xldCB5PW0qXy1nKmY7aWYoeTw9MCYmZi1tPj0wJiZnLV8+PTApcmV0dXJuIE5kdC5zdWJWZWN0b3JzKGEsaSkscz0oZi1tKS8oZi1tKyhnLV8pKSxlLmNvcHkoaSkuYWRkU2NhbGVkVmVjdG9yKE5kdCxzKTtsZXQgTz0xLyh5K00rcCk7cmV0dXJuIHI9TSpPLHM9cCpPLGUuY29weShvKS5hZGRTY2FsZWRWZWN0b3IoRzIscikuYWRkU2NhbGVkVmVjdG9yKFcyLHMpfWVxdWFscyh0KXtyZXR1cm4gdC5hLmVxdWFscyh0aGlzLmEpJiZ0LmIuZXF1YWxzKHRoaXMuYikmJnQuYy5lcXVhbHModGhpcy5jKX19LFRCdD0wLElsPWNsYXNzIGV4dGVuZHMgcVB7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlRCdCsrfSksdGhpcy51dWlkPXNiKCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iTWF0ZXJpYWwiLHRoaXMuZm9nPSEwLHRoaXMuYmxlbmRpbmc9SjUsdGhpcy5zaWRlPW40LHRoaXMudmVydGV4Q29sb3JzPSExLHRoaXMub3BhY2l0eT0xLHRoaXMudHJhbnNwYXJlbnQ9ITEsdGhpcy5ibGVuZFNyYz1SZ3QsdGhpcy5ibGVuZERzdD1FZ3QsdGhpcy5ibGVuZEVxdWF0aW9uPWlTLHRoaXMuYmxlbmRTcmNBbHBoYT1udWxsLHRoaXMuYmxlbmREc3RBbHBoYT1udWxsLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPW51bGwsdGhpcy5kZXB0aEZ1bmM9RlcsdGhpcy5kZXB0aFRlc3Q9ITAsdGhpcy5kZXB0aFdyaXRlPSEwLHRoaXMuc3RlbmNpbFdyaXRlTWFzaz0yNTUsdGhpcy5zdGVuY2lsRnVuYz1PQnQsdGhpcy5zdGVuY2lsUmVmPTAsdGhpcy5zdGVuY2lsRnVuY01hc2s9MjU1LHRoaXMuc3RlbmNpbEZhaWw9aVcsdGhpcy5zdGVuY2lsWkZhaWw9aVcsdGhpcy5zdGVuY2lsWlBhc3M9aVcsdGhpcy5zdGVuY2lsV3JpdGU9ITEsdGhpcy5jbGlwcGluZ1BsYW5lcz1udWxsLHRoaXMuY2xpcEludGVyc2VjdGlvbj0hMSx0aGlzLmNsaXBTaGFkb3dzPSExLHRoaXMuc2hhZG93U2lkZT1udWxsLHRoaXMuY29sb3JXcml0ZT0hMCx0aGlzLmFscGhhV3JpdGU9ITAsdGhpcy5wcmVjaXNpb249bnVsbCx0aGlzLnBvbHlnb25PZmZzZXQ9ITEsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPTAsdGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9MCx0aGlzLmRpdGhlcmluZz0hMSx0aGlzLmFscGhhVG9Db3ZlcmFnZT0hMSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMSx0aGlzLnZpc2libGU9ITAsdGhpcy50b25lTWFwcGVkPSEwLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTAsdGhpcy5fYWxwaGFUZXN0PTB9Z2V0IGFscGhhVGVzdCgpe3JldHVybiB0aGlzLl9hbHBoYVRlc3R9c2V0IGFscGhhVGVzdCh0KXt0aGlzLl9hbHBoYVRlc3Q+MCE9dD4wJiZ0aGlzLnZlcnNpb24rKyx0aGlzLl9hbHBoYVRlc3Q9dH1vbkJ1aWxkKCl7fW9uQmVmb3JlUmVuZGVyKCl7fW9uQmVmb3JlQ29tcGlsZSgpe31jdXN0b21Qcm9ncmFtQ2FjaGVLZXkoKXtyZXR1cm4gdGhpcy5vbkJlZm9yZUNvbXBpbGUudG9TdHJpbmcoKX1zZXRWYWx1ZXModCl7aWYodCE9PXZvaWQgMClmb3IobGV0IGUgaW4gdCl7bGV0IG89dFtlXTtpZihvPT09dm9pZCAwKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAnIitlKyInIHBhcmFtZXRlciBpcyB1bmRlZmluZWQuIik7Y29udGludWV9aWYoZT09PSJzaGFkaW5nIil7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIiksdGhpcy5mbGF0U2hhZGluZz1vPT09U2d0O2NvbnRpbnVlfWxldCBpPXRoaXNbZV07aWYoaT09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAnIitlKyInIGlzIG5vdCBhIHByb3BlcnR5IG9mIHRoaXMgbWF0ZXJpYWwuIik7Y29udGludWV9aSYmaS5pc0NvbG9yP2kuc2V0KG8pOmkmJmkuaXNWZWN0b3IzJiZvJiZvLmlzVmVjdG9yMz9pLmNvcHkobyk6dGhpc1tlXT1vfX10b0pTT04odCl7bGV0IGU9dD09PXZvaWQgMHx8dHlwZW9mIHQ9PSJzdHJpbmciO2UmJih0PXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTtsZXQgbz17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ik1hdGVyaWFsIixnZW5lcmF0b3I6Ik1hdGVyaWFsLnRvSlNPTiJ9fTtvLnV1aWQ9dGhpcy51dWlkLG8udHlwZT10aGlzLnR5cGUsdGhpcy5uYW1lIT09IiImJihvLm5hbWU9dGhpcy5uYW1lKSx0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLmlzQ29sb3ImJihvLmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCkpLHRoaXMucm91Z2huZXNzIT09dm9pZCAwJiYoby5yb3VnaG5lc3M9dGhpcy5yb3VnaG5lc3MpLHRoaXMubWV0YWxuZXNzIT09dm9pZCAwJiYoby5tZXRhbG5lc3M9dGhpcy5tZXRhbG5lc3MpLHRoaXMuc2hlZW4hPT12b2lkIDAmJihvLnNoZWVuPXRoaXMuc2hlZW4pLHRoaXMuc2hlZW5Db2xvciYmdGhpcy5zaGVlbkNvbG9yLmlzQ29sb3ImJihvLnNoZWVuQ29sb3I9dGhpcy5zaGVlbkNvbG9yLmdldEhleCgpKSx0aGlzLnNoZWVuUm91Z2huZXNzIT09dm9pZCAwJiYoby5zaGVlblJvdWdobmVzcz10aGlzLnNoZWVuUm91Z2huZXNzKSx0aGlzLmVtaXNzaXZlJiZ0aGlzLmVtaXNzaXZlLmlzQ29sb3ImJihvLmVtaXNzaXZlPXRoaXMuZW1pc3NpdmUuZ2V0SGV4KCkpLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJnRoaXMuZW1pc3NpdmVJbnRlbnNpdHkhPT0xJiYoby5lbWlzc2l2ZUludGVuc2l0eT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5KSx0aGlzLnNwZWN1bGFyJiZ0aGlzLnNwZWN1bGFyLmlzQ29sb3ImJihvLnNwZWN1bGFyPXRoaXMuc3BlY3VsYXIuZ2V0SGV4KCkpLHRoaXMuc3BlY3VsYXJJbnRlbnNpdHkhPT12b2lkIDAmJihvLnNwZWN1bGFySW50ZW5zaXR5PXRoaXMuc3BlY3VsYXJJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXJDb2xvciYmdGhpcy5zcGVjdWxhckNvbG9yLmlzQ29sb3ImJihvLnNwZWN1bGFyQ29sb3I9dGhpcy5zcGVjdWxhckNvbG9yLmdldEhleCgpKSx0aGlzLnNoaW5pbmVzcyE9PXZvaWQgMCYmKG8uc2hpbmluZXNzPXRoaXMuc2hpbmluZXNzKSx0aGlzLmNsZWFyY29hdCE9PXZvaWQgMCYmKG8uY2xlYXJjb2F0PXRoaXMuY2xlYXJjb2F0KSx0aGlzLmNsZWFyY29hdFJvdWdobmVzcyE9PXZvaWQgMCYmKG8uY2xlYXJjb2F0Um91Z2huZXNzPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzKSx0aGlzLmNsZWFyY29hdE1hcCYmdGhpcy5jbGVhcmNvYXRNYXAuaXNUZXh0dXJlJiYoby5jbGVhcmNvYXRNYXA9dGhpcy5jbGVhcmNvYXRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiZ0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC5pc1RleHR1cmUmJihvLmNsZWFyY29hdFJvdWdobmVzc01hcD10aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAmJnRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLmlzVGV4dHVyZSYmKG8uY2xlYXJjb2F0Tm9ybWFsTWFwPXRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLG8uY2xlYXJjb2F0Tm9ybWFsU2NhbGU9dGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMubWFwJiZ0aGlzLm1hcC5pc1RleHR1cmUmJihvLm1hcD10aGlzLm1hcC50b0pTT04odCkudXVpZCksdGhpcy5tYXRjYXAmJnRoaXMubWF0Y2FwLmlzVGV4dHVyZSYmKG8ubWF0Y2FwPXRoaXMubWF0Y2FwLnRvSlNPTih0KS51dWlkKSx0aGlzLmFscGhhTWFwJiZ0aGlzLmFscGhhTWFwLmlzVGV4dHVyZSYmKG8uYWxwaGFNYXA9dGhpcy5hbHBoYU1hcC50b0pTT04odCkudXVpZCksdGhpcy5saWdodE1hcCYmdGhpcy5saWdodE1hcC5pc1RleHR1cmUmJihvLmxpZ2h0TWFwPXRoaXMubGlnaHRNYXAudG9KU09OKHQpLnV1aWQsby5saWdodE1hcEludGVuc2l0eT10aGlzLmxpZ2h0TWFwSW50ZW5zaXR5KSx0aGlzLmFvTWFwJiZ0aGlzLmFvTWFwLmlzVGV4dHVyZSYmKG8uYW9NYXA9dGhpcy5hb01hcC50b0pTT04odCkudXVpZCxvLmFvTWFwSW50ZW5zaXR5PXRoaXMuYW9NYXBJbnRlbnNpdHkpLHRoaXMuYnVtcE1hcCYmdGhpcy5idW1wTWFwLmlzVGV4dHVyZSYmKG8uYnVtcE1hcD10aGlzLmJ1bXBNYXAudG9KU09OKHQpLnV1aWQsby5idW1wU2NhbGU9dGhpcy5idW1wU2NhbGUpLHRoaXMubm9ybWFsTWFwJiZ0aGlzLm5vcm1hbE1hcC5pc1RleHR1cmUmJihvLm5vcm1hbE1hcD10aGlzLm5vcm1hbE1hcC50b0pTT04odCkudXVpZCxvLm5vcm1hbE1hcFR5cGU9dGhpcy5ub3JtYWxNYXBUeXBlLG8ubm9ybWFsU2NhbGU9dGhpcy5ub3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMuZGlzcGxhY2VtZW50TWFwJiZ0aGlzLmRpc3BsYWNlbWVudE1hcC5pc1RleHR1cmUmJihvLmRpc3BsYWNlbWVudE1hcD10aGlzLmRpc3BsYWNlbWVudE1hcC50b0pTT04odCkudXVpZCxvLmRpc3BsYWNlbWVudFNjYWxlPXRoaXMuZGlzcGxhY2VtZW50U2NhbGUsby5kaXNwbGFjZW1lbnRCaWFzPXRoaXMuZGlzcGxhY2VtZW50QmlhcyksdGhpcy5yb3VnaG5lc3NNYXAmJnRoaXMucm91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG8ucm91Z2huZXNzTWFwPXRoaXMucm91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1ldGFsbmVzc01hcCYmdGhpcy5tZXRhbG5lc3NNYXAuaXNUZXh0dXJlJiYoby5tZXRhbG5lc3NNYXA9dGhpcy5tZXRhbG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW1pc3NpdmVNYXAmJnRoaXMuZW1pc3NpdmVNYXAuaXNUZXh0dXJlJiYoby5lbWlzc2l2ZU1hcD10aGlzLmVtaXNzaXZlTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyTWFwJiZ0aGlzLnNwZWN1bGFyTWFwLmlzVGV4dHVyZSYmKG8uc3BlY3VsYXJNYXA9dGhpcy5zcGVjdWxhck1hcC50b0pTT04odCkudXVpZCksdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcCYmdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcC5pc1RleHR1cmUmJihvLnNwZWN1bGFySW50ZW5zaXR5TWFwPXRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJDb2xvck1hcCYmdGhpcy5zcGVjdWxhckNvbG9yTWFwLmlzVGV4dHVyZSYmKG8uc3BlY3VsYXJDb2xvck1hcD10aGlzLnNwZWN1bGFyQ29sb3JNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW52TWFwJiZ0aGlzLmVudk1hcC5pc1RleHR1cmUmJihvLmVudk1hcD10aGlzLmVudk1hcC50b0pTT04odCkudXVpZCx0aGlzLmNvbWJpbmUhPT12b2lkIDAmJihvLmNvbWJpbmU9dGhpcy5jb21iaW5lKSksdGhpcy5lbnZNYXBJbnRlbnNpdHkhPT12b2lkIDAmJihvLmVudk1hcEludGVuc2l0eT10aGlzLmVudk1hcEludGVuc2l0eSksdGhpcy5yZWZsZWN0aXZpdHkhPT12b2lkIDAmJihvLnJlZmxlY3Rpdml0eT10aGlzLnJlZmxlY3Rpdml0eSksdGhpcy5yZWZyYWN0aW9uUmF0aW8hPT12b2lkIDAmJihvLnJlZnJhY3Rpb25SYXRpbz10aGlzLnJlZnJhY3Rpb25SYXRpbyksdGhpcy5ncmFkaWVudE1hcCYmdGhpcy5ncmFkaWVudE1hcC5pc1RleHR1cmUmJihvLmdyYWRpZW50TWFwPXRoaXMuZ3JhZGllbnRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMudHJhbnNtaXNzaW9uIT09dm9pZCAwJiYoby50cmFuc21pc3Npb249dGhpcy50cmFuc21pc3Npb24pLHRoaXMudHJhbnNtaXNzaW9uTWFwJiZ0aGlzLnRyYW5zbWlzc2lvbk1hcC5pc1RleHR1cmUmJihvLnRyYW5zbWlzc2lvbk1hcD10aGlzLnRyYW5zbWlzc2lvbk1hcC50b0pTT04odCkudXVpZCksdGhpcy50aGlja25lc3MhPT12b2lkIDAmJihvLnRoaWNrbmVzcz10aGlzLnRoaWNrbmVzcyksdGhpcy50aGlja25lc3NNYXAmJnRoaXMudGhpY2tuZXNzTWFwLmlzVGV4dHVyZSYmKG8udGhpY2tuZXNzTWFwPXRoaXMudGhpY2tuZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2UhPT12b2lkIDAmJihvLmF0dGVudWF0aW9uRGlzdGFuY2U9dGhpcy5hdHRlbnVhdGlvbkRpc3RhbmNlKSx0aGlzLmF0dGVudWF0aW9uQ29sb3IhPT12b2lkIDAmJihvLmF0dGVudWF0aW9uQ29sb3I9dGhpcy5hdHRlbnVhdGlvbkNvbG9yLmdldEhleCgpKSx0aGlzLnNpemUhPT12b2lkIDAmJihvLnNpemU9dGhpcy5zaXplKSx0aGlzLnNoYWRvd1NpZGUhPT1udWxsJiYoby5zaGFkb3dTaWRlPXRoaXMuc2hhZG93U2lkZSksdGhpcy5zaXplQXR0ZW51YXRpb24hPT12b2lkIDAmJihvLnNpemVBdHRlbnVhdGlvbj10aGlzLnNpemVBdHRlbnVhdGlvbiksdGhpcy5ibGVuZGluZyE9PUo1JiYoby5ibGVuZGluZz10aGlzLmJsZW5kaW5nKSx0aGlzLnNpZGUhPT1uNCYmKG8uc2lkZT10aGlzLnNpZGUpLHRoaXMudmVydGV4Q29sb3JzJiYoby52ZXJ0ZXhDb2xvcnM9ITApLHRoaXMub3BhY2l0eTwxJiYoby5vcGFjaXR5PXRoaXMub3BhY2l0eSksdGhpcy50cmFuc3BhcmVudD09PSEwJiYoby50cmFuc3BhcmVudD10aGlzLnRyYW5zcGFyZW50KSxvLmRlcHRoRnVuYz10aGlzLmRlcHRoRnVuYyxvLmRlcHRoVGVzdD10aGlzLmRlcHRoVGVzdCxvLmRlcHRoV3JpdGU9dGhpcy5kZXB0aFdyaXRlLG8uY29sb3JXcml0ZT10aGlzLmNvbG9yV3JpdGUsby5hbHBoYVdyaXRlPXRoaXMuYWxwaGFXcml0ZSxvLnN0ZW5jaWxXcml0ZT10aGlzLnN0ZW5jaWxXcml0ZSxvLnN0ZW5jaWxXcml0ZU1hc2s9dGhpcy5zdGVuY2lsV3JpdGVNYXNrLG8uc3RlbmNpbEZ1bmM9dGhpcy5zdGVuY2lsRnVuYyxvLnN0ZW5jaWxSZWY9dGhpcy5zdGVuY2lsUmVmLG8uc3RlbmNpbEZ1bmNNYXNrPXRoaXMuc3RlbmNpbEZ1bmNNYXNrLG8uc3RlbmNpbEZhaWw9dGhpcy5zdGVuY2lsRmFpbCxvLnN0ZW5jaWxaRmFpbD10aGlzLnN0ZW5jaWxaRmFpbCxvLnN0ZW5jaWxaUGFzcz10aGlzLnN0ZW5jaWxaUGFzcyx0aGlzLnJvdGF0aW9uJiZ0aGlzLnJvdGF0aW9uIT09MCYmKG8ucm90YXRpb249dGhpcy5yb3RhdGlvbiksdGhpcy5wb2x5Z29uT2Zmc2V0PT09ITAmJihvLnBvbHlnb25PZmZzZXQ9ITApLHRoaXMucG9seWdvbk9mZnNldEZhY3RvciE9PTAmJihvLnBvbHlnb25PZmZzZXRGYWN0b3I9dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yKSx0aGlzLnBvbHlnb25PZmZzZXRVbml0cyE9PTAmJihvLnBvbHlnb25PZmZzZXRVbml0cz10aGlzLnBvbHlnb25PZmZzZXRVbml0cyksdGhpcy5saW5ld2lkdGgmJnRoaXMubGluZXdpZHRoIT09MSYmKG8ubGluZXdpZHRoPXRoaXMubGluZXdpZHRoKSx0aGlzLmRhc2hTaXplIT09dm9pZCAwJiYoby5kYXNoU2l6ZT10aGlzLmRhc2hTaXplKSx0aGlzLmdhcFNpemUhPT12b2lkIDAmJihvLmdhcFNpemU9dGhpcy5nYXBTaXplKSx0aGlzLnNjYWxlIT09dm9pZCAwJiYoby5zY2FsZT10aGlzLnNjYWxlKSx0aGlzLmRpdGhlcmluZz09PSEwJiYoby5kaXRoZXJpbmc9ITApLHRoaXMuYWxwaGFUZXN0PjAmJihvLmFscGhhVGVzdD10aGlzLmFscGhhVGVzdCksdGhpcy5hbHBoYVRvQ292ZXJhZ2U9PT0hMCYmKG8uYWxwaGFUb0NvdmVyYWdlPXRoaXMuYWxwaGFUb0NvdmVyYWdlKSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT09PSEwJiYoby5wcmVtdWx0aXBsaWVkQWxwaGE9dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEpLHRoaXMud2lyZWZyYW1lPT09ITAmJihvLndpcmVmcmFtZT10aGlzLndpcmVmcmFtZSksdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg+MSYmKG8ud2lyZWZyYW1lTGluZXdpZHRoPXRoaXMud2lyZWZyYW1lTGluZXdpZHRoKSx0aGlzLndpcmVmcmFtZUxpbmVjYXAhPT0icm91bmQiJiYoby53aXJlZnJhbWVMaW5lY2FwPXRoaXMud2lyZWZyYW1lTGluZWNhcCksdGhpcy53aXJlZnJhbWVMaW5lam9pbiE9PSJyb3VuZCImJihvLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWpvaW4pLHRoaXMuZmxhdFNoYWRpbmc9PT0hMCYmKG8uZmxhdFNoYWRpbmc9dGhpcy5mbGF0U2hhZGluZyksdGhpcy52aXNpYmxlPT09ITEmJihvLnZpc2libGU9ITEpLHRoaXMudG9uZU1hcHBlZD09PSExJiYoby50b25lTWFwcGVkPSExKSxKU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSE9PSJ7fSImJihvLnVzZXJEYXRhPXRoaXMudXNlckRhdGEpO2Z1bmN0aW9uIGkoYSl7bGV0IHI9W107Zm9yKGxldCBzIGluIGEpe2xldCBsPWFbc107ZGVsZXRlIGwubWV0YWRhdGEsci5wdXNoKGwpfXJldHVybiByfWlmKGUpe2xldCBhPWkodC50ZXh0dXJlcykscj1pKHQuaW1hZ2VzKTthLmxlbmd0aD4wJiYoby50ZXh0dXJlcz1hKSxyLmxlbmd0aD4wJiYoby5pbWFnZXM9cil9cmV0dXJuIG99Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWNvcHkodCl7dGhpcy5uYW1lPXQubmFtZSx0aGlzLmZvZz10LmZvZyx0aGlzLmJsZW5kaW5nPXQuYmxlbmRpbmcsdGhpcy5zaWRlPXQuc2lkZSx0aGlzLnZlcnRleENvbG9ycz10LnZlcnRleENvbG9ycyx0aGlzLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCx0aGlzLmJsZW5kU3JjPXQuYmxlbmRTcmMsdGhpcy5ibGVuZERzdD10LmJsZW5kRHN0LHRoaXMuYmxlbmRFcXVhdGlvbj10LmJsZW5kRXF1YXRpb24sdGhpcy5ibGVuZFNyY0FscGhhPXQuYmxlbmRTcmNBbHBoYSx0aGlzLmJsZW5kRHN0QWxwaGE9dC5ibGVuZERzdEFscGhhLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPXQuYmxlbmRFcXVhdGlvbkFscGhhLHRoaXMuZGVwdGhGdW5jPXQuZGVwdGhGdW5jLHRoaXMuZGVwdGhUZXN0PXQuZGVwdGhUZXN0LHRoaXMuZGVwdGhXcml0ZT10LmRlcHRoV3JpdGUsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayx0aGlzLnN0ZW5jaWxGdW5jPXQuc3RlbmNpbEZ1bmMsdGhpcy5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZix0aGlzLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayx0aGlzLnN0ZW5jaWxGYWlsPXQuc3RlbmNpbEZhaWwsdGhpcy5zdGVuY2lsWkZhaWw9dC5zdGVuY2lsWkZhaWwsdGhpcy5zdGVuY2lsWlBhc3M9dC5zdGVuY2lsWlBhc3MsdGhpcy5zdGVuY2lsV3JpdGU9dC5zdGVuY2lsV3JpdGU7bGV0IGU9dC5jbGlwcGluZ1BsYW5lcyxvPW51bGw7aWYoZSE9PW51bGwpe2xldCBpPWUubGVuZ3RoO289bmV3IEFycmF5KGkpO2ZvcihsZXQgYT0wO2EhPT1pOysrYSlvW2FdPWVbYV0uY2xvbmUoKX1yZXR1cm4gdGhpcy5jbGlwcGluZ1BsYW5lcz1vLHRoaXMuY2xpcEludGVyc2VjdGlvbj10LmNsaXBJbnRlcnNlY3Rpb24sdGhpcy5jbGlwU2hhZG93cz10LmNsaXBTaGFkb3dzLHRoaXMuc2hhZG93U2lkZT10LnNoYWRvd1NpZGUsdGhpcy5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSx0aGlzLmFscGhhV3JpdGU9dC5hbHBoYVdyaXRlLHRoaXMucHJlY2lzaW9uPXQucHJlY2lzaW9uLHRoaXMucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPXQucG9seWdvbk9mZnNldEZhY3Rvcix0aGlzLnBvbHlnb25PZmZzZXRVbml0cz10LnBvbHlnb25PZmZzZXRVbml0cyx0aGlzLmRpdGhlcmluZz10LmRpdGhlcmluZyx0aGlzLmFscGhhVGVzdD10LmFscGhhVGVzdCx0aGlzLmFscGhhVG9Db3ZlcmFnZT10LmFscGhhVG9Db3ZlcmFnZSx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT10LnByZW11bHRpcGxpZWRBbHBoYSx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSx0aGlzfWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9fTtJbC5wcm90b3R5cGUuaXNNYXRlcmlhbD0hMDt2YXIgSTE9Y2xhc3MgZXh0ZW5kcyBJbHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaEJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHpuKDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPU1GLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpc319O0kxLnByb3RvdHlwZS5pc01lc2hCYXNpY01hdGVyaWFsPSEwO3ZhciBVYT1uZXcgcHQsQ0g9bmV3IFNlLE9yPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXtpZihBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7dGhpcy5uYW1lPSIiLHRoaXMuYXJyYXk9dCx0aGlzLml0ZW1TaXplPWUsdGhpcy5jb3VudD10IT09dm9pZCAwP3QubGVuZ3RoL2U6MCx0aGlzLm5vcm1hbGl6ZWQ9bz09PSEwLHRoaXMudXNhZ2U9aTQsdGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9LHRoaXMudmVyc2lvbj0wfW9uVXBsb2FkQ2FsbGJhY2soKXt9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9c2V0VXNhZ2UodCl7cmV0dXJuIHRoaXMudXNhZ2U9dCx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMubmFtZT10Lm5hbWUsdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLml0ZW1TaXplPXQuaXRlbVNpemUsdGhpcy5jb3VudD10LmNvdW50LHRoaXMubm9ybWFsaXplZD10Lm5vcm1hbGl6ZWQsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxvKXt0Kj10aGlzLml0ZW1TaXplLG8qPWUuaXRlbVNpemU7Zm9yKGxldCBpPTAsYT10aGlzLml0ZW1TaXplO2k8YTtpKyspdGhpcy5hcnJheVt0K2ldPWUuYXJyYXlbbytpXTtyZXR1cm4gdGhpc31jb3B5QXJyYXkodCl7cmV0dXJuIHRoaXMuYXJyYXkuc2V0KHQpLHRoaXN9Y29weUNvbG9yc0FycmF5KHQpe2xldCBlPXRoaXMuYXJyYXksbz0wO2ZvcihsZXQgaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7bGV0IHI9dFtpXTtyPT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weUNvbG9yc0FycmF5KCk6IGNvbG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgem4pLGVbbysrXT1yLnIsZVtvKytdPXIuZyxlW28rK109ci5ifXJldHVybiB0aGlzfWNvcHlWZWN0b3Iyc0FycmF5KHQpe2xldCBlPXRoaXMuYXJyYXksbz0wO2ZvcihsZXQgaT0wLGE9dC5sZW5ndGg7aTxhO2krKyl7bGV0IHI9dFtpXTtyPT09dm9pZCAwJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjJzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgU2UpLGVbbysrXT1yLngsZVtvKytdPXIueX1yZXR1cm4gdGhpc31jb3B5VmVjdG9yM3NBcnJheSh0KXtsZXQgZT10aGlzLmFycmF5LG89MDtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe2xldCByPXRbaV07cj09PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3IHB0KSxlW28rK109ci54LGVbbysrXT1yLnksZVtvKytdPXIuen1yZXR1cm4gdGhpc31jb3B5VmVjdG9yNHNBcnJheSh0KXtsZXQgZT10aGlzLmFycmF5LG89MDtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2k8YTtpKyspe2xldCByPXRbaV07cj09PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3I0c0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3IGNhKSxlW28rK109ci54LGVbbysrXT1yLnksZVtvKytdPXIueixlW28rK109ci53fXJldHVybiB0aGlzfWFwcGx5TWF0cml4Myh0KXtpZih0aGlzLml0ZW1TaXplPT09Milmb3IobGV0IGU9MCxvPXRoaXMuY291bnQ7ZTxvO2UrKylDSC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsZSksQ0guYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFkoZSxDSC54LENILnkpO2Vsc2UgaWYodGhpcy5pdGVtU2l6ZT09PTMpZm9yKGxldCBlPTAsbz10aGlzLmNvdW50O2U8bztlKyspVWEuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0aGlzLGUpLFVhLmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZWihlLFVhLngsVWEueSxVYS56KTtyZXR1cm4gdGhpc31hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbz10aGlzLmNvdW50O2U8bztlKyspVWEueD10aGlzLmdldFgoZSksVWEueT10aGlzLmdldFkoZSksVWEuej10aGlzLmdldFooZSksVWEuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsVWEueCxVYS55LFVhLnopO3JldHVybiB0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe2ZvcihsZXQgZT0wLG89dGhpcy5jb3VudDtlPG87ZSsrKVVhLng9dGhpcy5nZXRYKGUpLFVhLnk9dGhpcy5nZXRZKGUpLFVhLno9dGhpcy5nZXRaKGUpLFVhLmFwcGx5Tm9ybWFsTWF0cml4KHQpLHRoaXMuc2V0WFlaKGUsVWEueCxVYS55LFVhLnopO3JldHVybiB0aGlzfXRyYW5zZm9ybURpcmVjdGlvbih0KXtmb3IobGV0IGU9MCxvPXRoaXMuY291bnQ7ZTxvO2UrKylVYS54PXRoaXMuZ2V0WChlKSxVYS55PXRoaXMuZ2V0WShlKSxVYS56PXRoaXMuZ2V0WihlKSxVYS50cmFuc2Zvcm1EaXJlY3Rpb24odCksdGhpcy5zZXRYWVooZSxVYS54LFVhLnksVWEueik7cmV0dXJuIHRoaXN9c2V0KHQsZT0wKXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCxlKSx0aGlzfWdldFgodCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXX1zZXRYKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXT1lLHRoaXN9Z2V0WSh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV19c2V0WSh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXT1lLHRoaXN9Z2V0Wih0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMl19c2V0Wih0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXT1lLHRoaXN9Z2V0Vyh0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM119c2V0Vyh0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSszXT1lLHRoaXN9c2V0WFkodCxlLG8pe3JldHVybiB0Kj10aGlzLml0ZW1TaXplLHRoaXMuYXJyYXlbdCswXT1lLHRoaXMuYXJyYXlbdCsxXT1vLHRoaXN9c2V0WFlaKHQsZSxvLGkpe3JldHVybiB0Kj10aGlzLml0ZW1TaXplLHRoaXMuYXJyYXlbdCswXT1lLHRoaXMuYXJyYXlbdCsxXT1vLHRoaXMuYXJyYXlbdCsyXT1pLHRoaXN9c2V0WFlaVyh0LGUsbyxpLGEpe3JldHVybiB0Kj10aGlzLml0ZW1TaXplLHRoaXMuYXJyYXlbdCswXT1lLHRoaXMuYXJyYXlbdCsxXT1vLHRoaXMuYXJyYXlbdCsyXT1pLHRoaXMuYXJyYXlbdCszXT1hLHRoaXN9b25VcGxvYWQodCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hcnJheSx0aGlzLml0ZW1TaXplKS5jb3B5KHRoaXMpfXRvSlNPTigpe2xldCB0PXtpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuYXJyYXkpLG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfTtyZXR1cm4gdGhpcy5uYW1lIT09IiImJih0Lm5hbWU9dGhpcy5uYW1lKSx0aGlzLnVzYWdlIT09aTQmJih0LnVzYWdlPXRoaXMudXNhZ2UpLCh0aGlzLnVwZGF0ZVJhbmdlLm9mZnNldCE9PTB8fHRoaXMudXBkYXRlUmFuZ2UuY291bnQhPT0tMSkmJih0LnVwZGF0ZVJhbmdlPXRoaXMudXBkYXRlUmFuZ2UpLHR9fTtPci5wcm90b3R5cGUuaXNCdWZmZXJBdHRyaWJ1dGU9ITA7dmFyIFhIPWNsYXNzIGV4dGVuZHMgT3J7Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKG5ldyBVaW50MTZBcnJheSh0KSxlLG8pfX07dmFyIFFIPWNsYXNzIGV4dGVuZHMgT3J7Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKG5ldyBVaW50MzJBcnJheSh0KSxlLG8pfX0sV1c9Y2xhc3MgZXh0ZW5kcyBPcntjb25zdHJ1Y3Rvcih0LGUsbyl7c3VwZXIobmV3IFVpbnQxNkFycmF5KHQpLGUsbyl9fTtXVy5wcm90b3R5cGUuaXNGbG9hdDE2QnVmZmVyQXR0cmlidXRlPSEwO3ZhciBOcj1jbGFzcyBleHRlbmRzIE9ye2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcihuZXcgRmxvYXQzMkFycmF5KHQpLGUsbyl9fTt2YXIgQUJ0PTAsajA9bmV3IGVvLE9XPW5ldyBWaSxxMj1uZXcgcHQsZWg9bmV3IG9oLFU1PW5ldyBvaCxEbD1uZXcgcHQsdGE9Y2xhc3MgZXh0ZW5kcyBxUHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6QUJ0Kyt9KSx0aGlzLnV1aWQ9c2IoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJCdWZmZXJHZW9tZXRyeSIsdGhpcy5pbmRleD1udWxsLHRoaXMuYXR0cmlidXRlcz17fSx0aGlzLm1vcnBoQXR0cmlidXRlcz17fSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPSExLHRoaXMuZ3JvdXBzPVtdLHRoaXMuYm91bmRpbmdCb3g9bnVsbCx0aGlzLmJvdW5kaW5nU3BoZXJlPW51bGwsdGhpcy5kcmF3UmFuZ2U9e3N0YXJ0OjAsY291bnQ6MS8wfSx0aGlzLnVzZXJEYXRhPXt9fWdldEluZGV4KCl7cmV0dXJuIHRoaXMuaW5kZXh9c2V0SW5kZXgodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dGhpcy5pbmRleD1uZXcoVGd0KHQpP1FIOlhIKSh0LDEpOnRoaXMuaW5kZXg9dCx0aGlzfWdldEF0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdfXNldEF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF09ZSx0aGlzfWRlbGV0ZUF0dHJpYnV0ZSh0KXtyZXR1cm4gZGVsZXRlIHRoaXMuYXR0cmlidXRlc1t0XSx0aGlzfWhhc0F0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW3RdIT09dm9pZCAwfWFkZEdyb3VwKHQsZSxvPTApe3RoaXMuZ3JvdXBzLnB1c2goe3N0YXJ0OnQsY291bnQ6ZSxtYXRlcmlhbEluZGV4Om99KX1jbGVhckdyb3Vwcygpe3RoaXMuZ3JvdXBzPVtdfXNldERyYXdSYW5nZSh0LGUpe3RoaXMuZHJhd1JhbmdlLnN0YXJ0PXQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9ZX1hcHBseU1hdHJpeDQodCl7bGV0IGU9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uO2UhPT12b2lkIDAmJihlLmFwcGx5TWF0cml4NCh0KSxlLm5lZWRzVXBkYXRlPSEwKTtsZXQgbz10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2lmKG8hPT12b2lkIDApe2xldCBhPW5ldyBtbCgpLmdldE5vcm1hbE1hdHJpeCh0KTtvLmFwcGx5Tm9ybWFsTWF0cml4KGEpLG8ubmVlZHNVcGRhdGU9ITB9bGV0IGk9dGhpcy5hdHRyaWJ1dGVzLnRhbmdlbnQ7cmV0dXJuIGkhPT12b2lkIDAmJihpLnRyYW5zZm9ybURpcmVjdGlvbih0KSxpLm5lZWRzVXBkYXRlPSEwKSx0aGlzLmJvdW5kaW5nQm94IT09bnVsbCYmdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSx0aGlzLmJvdW5kaW5nU3BoZXJlIT09bnVsbCYmdGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSx0aGlzfWFwcGx5UXVhdGVybmlvbih0KXtyZXR1cm4gajAubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5hcHBseU1hdHJpeDQoajApLHRoaXN9cm90YXRlWCh0KXtyZXR1cm4gajAubWFrZVJvdGF0aW9uWCh0KSx0aGlzLmFwcGx5TWF0cml4NChqMCksdGhpc31yb3RhdGVZKHQpe3JldHVybiBqMC5tYWtlUm90YXRpb25ZKHQpLHRoaXMuYXBwbHlNYXRyaXg0KGowKSx0aGlzfXJvdGF0ZVoodCl7cmV0dXJuIGowLm1ha2VSb3RhdGlvbloodCksdGhpcy5hcHBseU1hdHJpeDQoajApLHRoaXN9dHJhbnNsYXRlKHQsZSxvKXtyZXR1cm4gajAubWFrZVRyYW5zbGF0aW9uKHQsZSxvKSx0aGlzLmFwcGx5TWF0cml4NChqMCksdGhpc31zY2FsZSh0LGUsbyl7cmV0dXJuIGowLm1ha2VTY2FsZSh0LGUsbyksdGhpcy5hcHBseU1hdHJpeDQoajApLHRoaXN9bG9va0F0KHQpe3JldHVybiBPVy5sb29rQXQodCksT1cudXBkYXRlTWF0cml4KCksdGhpcy5hcHBseU1hdHJpeDQoT1cubWF0cml4KSx0aGlzfWNlbnRlcigpe3JldHVybiB0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLHRoaXMuYm91bmRpbmdCb3guZ2V0Q2VudGVyKHEyKS5uZWdhdGUoKSx0aGlzLnRyYW5zbGF0ZShxMi54LHEyLnkscTIueiksdGhpc31zZXRGcm9tUG9pbnRzKHQpe2xldCBlPVtdO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IGE9dFtvXTtlLnB1c2goYS54LGEueSxhLnp8fDApfXJldHVybiB0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBOcihlLDMpKSx0aGlzfWNvbXB1dGVCb3VuZGluZ0JveCgpe3RoaXMuYm91bmRpbmdCb3g9PT1udWxsJiYodGhpcy5ib3VuZGluZ0JveD1uZXcgb2gpO2xldCB0PXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixlPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHQmJnQuaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IEdMQnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIGEgbWFudWFsIGJvdW5kaW5nIGJveC4gQWx0ZXJuYXRpdmVseSBzZXQgIm1lc2guZnJ1c3R1bUN1bGxlZCIgdG8gImZhbHNlIi4nLHRoaXMpLHRoaXMuYm91bmRpbmdCb3guc2V0KG5ldyBwdCgtMS8wLC0xLzAsLTEvMCksbmV3IHB0KDEvMCwxLzAsMS8wKSk7cmV0dXJufWlmKHQhPT12b2lkIDApe2lmKHRoaXMuYm91bmRpbmdCb3guc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxlKWZvcihsZXQgbz0wLGk9ZS5sZW5ndGg7bzxpO28rKyl7bGV0IGE9ZVtvXTtlaC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGEpLHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU/KERsLmFkZFZlY3RvcnModGhpcy5ib3VuZGluZ0JveC5taW4sZWgubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoRGwpLERsLmFkZFZlY3RvcnModGhpcy5ib3VuZGluZ0JveC5tYXgsZWgubWF4KSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoRGwpKToodGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KGVoLm1pbiksdGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KGVoLm1heCkpfX1lbHNlIHRoaXMuYm91bmRpbmdCb3gubWFrZUVtcHR5KCk7KGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLngpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi55KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueikpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogQ29tcHV0ZWQgbWluL21heCBoYXZlIE5hTiB2YWx1ZXMuIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9Y29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl7dGhpcy5ib3VuZGluZ1NwaGVyZT09PW51bGwmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBCeCk7bGV0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXtjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgc3BoZXJlLiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdGhpcy5ib3VuZGluZ1NwaGVyZS5zZXQobmV3IHB0LDEvMCk7cmV0dXJufWlmKHQpe2xldCBvPXRoaXMuYm91bmRpbmdTcGhlcmUuY2VudGVyO2lmKGVoLnNldEZyb21CdWZmZXJBdHRyaWJ1dGUodCksZSlmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2xldCBzPWVbYV07VTUuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShzKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhEbC5hZGRWZWN0b3JzKGVoLm1pbixVNS5taW4pLGVoLmV4cGFuZEJ5UG9pbnQoRGwpLERsLmFkZFZlY3RvcnMoZWgubWF4LFU1Lm1heCksZWguZXhwYW5kQnlQb2ludChEbCkpOihlaC5leHBhbmRCeVBvaW50KFU1Lm1pbiksZWguZXhwYW5kQnlQb2ludChVNS5tYXgpKX1laC5nZXRDZW50ZXIobyk7bGV0IGk9MDtmb3IobGV0IGE9MCxyPXQuY291bnQ7YTxyO2ErKylEbC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsYSksaT1NYXRoLm1heChpLG8uZGlzdGFuY2VUb1NxdWFyZWQoRGwpKTtpZihlKWZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7bGV0IHM9ZVthXSxsPXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU7Zm9yKGxldCBjPTAsbT1zLmNvdW50O2M8bTtjKyspRGwuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLGMpLGwmJihxMi5mcm9tQnVmZmVyQXR0cmlidXRlKHQsYyksRGwuYWRkKHEyKSksaT1NYXRoLm1heChpLG8uZGlzdGFuY2VUb1NxdWFyZWQoRGwpKX10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cz1NYXRoLnNxcnQoaSksaXNOYU4odGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXMpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogQ29tcHV0ZWQgcmFkaXVzIGlzIE5hTi4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX19Y29tcHV0ZVRhbmdlbnRzKCl7bGV0IHQ9dGhpcy5pbmRleCxlPXRoaXMuYXR0cmlidXRlcztpZih0PT09bnVsbHx8ZS5wb3NpdGlvbj09PXZvaWQgMHx8ZS5ub3JtYWw9PT12b2lkIDB8fGUudXY9PT12b2lkIDApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgZmFpbGVkLiBNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKGluZGV4LCBwb3NpdGlvbiwgbm9ybWFsIG9yIHV2KSIpO3JldHVybn1sZXQgbz10LmFycmF5LGk9ZS5wb3NpdGlvbi5hcnJheSxhPWUubm9ybWFsLmFycmF5LHI9ZS51di5hcnJheSxzPWkubGVuZ3RoLzM7ZS50YW5nZW50PT09dm9pZCAwJiZ0aGlzLnNldEF0dHJpYnV0ZSgidGFuZ2VudCIsbmV3IE9yKG5ldyBGbG9hdDMyQXJyYXkoNCpzKSw0KSk7bGV0IGw9ZS50YW5nZW50LmFycmF5LGM9W10sbT1bXTtmb3IobGV0IGt0PTA7a3Q8cztrdCsrKWNba3RdPW5ldyBwdCxtW2t0XT1uZXcgcHQ7bGV0IGY9bmV3IHB0LHA9bmV3IHB0LGc9bmV3IHB0LF89bmV3IFNlLE09bmV3IFNlLHk9bmV3IFNlLE89bmV3IHB0LGI9bmV3IHB0O2Z1bmN0aW9uIFIoa3QsdyxVKXtmLmZyb21BcnJheShpLGt0KjMpLHAuZnJvbUFycmF5KGksdyozKSxnLmZyb21BcnJheShpLFUqMyksXy5mcm9tQXJyYXkocixrdCoyKSxNLmZyb21BcnJheShyLHcqMikseS5mcm9tQXJyYXkocixVKjIpLHAuc3ViKGYpLGcuc3ViKGYpLE0uc3ViKF8pLHkuc3ViKF8pO2xldCBudD0xLyhNLngqeS55LXkueCpNLnkpOyFpc0Zpbml0ZShudCl8fChPLmNvcHkocCkubXVsdGlwbHlTY2FsYXIoeS55KS5hZGRTY2FsZWRWZWN0b3IoZywtTS55KS5tdWx0aXBseVNjYWxhcihudCksYi5jb3B5KGcpLm11bHRpcGx5U2NhbGFyKE0ueCkuYWRkU2NhbGVkVmVjdG9yKHAsLXkueCkubXVsdGlwbHlTY2FsYXIobnQpLGNba3RdLmFkZChPKSxjW3ddLmFkZChPKSxjW1VdLmFkZChPKSxtW2t0XS5hZGQoYiksbVt3XS5hZGQoYiksbVtVXS5hZGQoYikpfWxldCBFPXRoaXMuZ3JvdXBzO0UubGVuZ3RoPT09MCYmKEU9W3tzdGFydDowLGNvdW50Om8ubGVuZ3RofV0pO2ZvcihsZXQga3Q9MCx3PUUubGVuZ3RoO2t0PHc7KytrdCl7bGV0IFU9RVtrdF0sbnQ9VS5zdGFydCxsdD1VLmNvdW50O2ZvcihsZXQgYnQ9bnQsb3Q9bnQrbHQ7YnQ8b3Q7YnQrPTMpUihvW2J0KzBdLG9bYnQrMV0sb1tidCsyXSl9bGV0IGo9bmV3IHB0LHJ0PW5ldyBwdCxKPW5ldyBwdCxFdD1uZXcgcHQ7ZnVuY3Rpb24ganQoa3Qpe0ouZnJvbUFycmF5KGEsa3QqMyksRXQuY29weShKKTtsZXQgdz1jW2t0XTtqLmNvcHkodyksai5zdWIoSi5tdWx0aXBseVNjYWxhcihKLmRvdCh3KSkpLm5vcm1hbGl6ZSgpLHJ0LmNyb3NzVmVjdG9ycyhFdCx3KTtsZXQgbnQ9cnQuZG90KG1ba3RdKTwwPy0xOjE7bFtrdCo0XT1qLngsbFtrdCo0KzFdPWoueSxsW2t0KjQrMl09ai56LGxba3QqNCszXT1udH1mb3IobGV0IGt0PTAsdz1FLmxlbmd0aDtrdDx3Oysra3Qpe2xldCBVPUVba3RdLG50PVUuc3RhcnQsbHQ9VS5jb3VudDtmb3IobGV0IGJ0PW50LG90PW50K2x0O2J0PG90O2J0Kz0zKWp0KG9bYnQrMF0pLGp0KG9bYnQrMV0pLGp0KG9bYnQrMl0pfX1jb21wdXRlVmVydGV4Tm9ybWFscygpe2xldCB0PXRoaXMuaW5kZXgsZT10aGlzLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtpZihlIT09dm9pZCAwKXtsZXQgbz10aGlzLmdldEF0dHJpYnV0ZSgibm9ybWFsIik7aWYobz09PXZvaWQgMClvPW5ldyBPcihuZXcgRmxvYXQzMkFycmF5KGUuY291bnQqMyksMyksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbyk7ZWxzZSBmb3IobGV0IHA9MCxnPW8uY291bnQ7cDxnO3ArKylvLnNldFhZWihwLDAsMCwwKTtsZXQgaT1uZXcgcHQsYT1uZXcgcHQscj1uZXcgcHQscz1uZXcgcHQsbD1uZXcgcHQsYz1uZXcgcHQsbT1uZXcgcHQsZj1uZXcgcHQ7aWYodClmb3IobGV0IHA9MCxnPXQuY291bnQ7cDxnO3ArPTMpe2xldCBfPXQuZ2V0WChwKzApLE09dC5nZXRYKHArMSkseT10LmdldFgocCsyKTtpLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxfKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxNKSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx5KSxtLnN1YlZlY3RvcnMocixhKSxmLnN1YlZlY3RvcnMoaSxhKSxtLmNyb3NzKGYpLHMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLF8pLGwuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLE0pLGMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLHkpLHMuYWRkKG0pLGwuYWRkKG0pLGMuYWRkKG0pLG8uc2V0WFlaKF8scy54LHMueSxzLnopLG8uc2V0WFlaKE0sbC54LGwueSxsLnopLG8uc2V0WFlaKHksYy54LGMueSxjLnopfWVsc2UgZm9yKGxldCBwPTAsZz1lLmNvdW50O3A8ZztwKz0zKWkuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHArMCksYS5mcm9tQnVmZmVyQXR0cmlidXRlKGUscCsxKSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxwKzIpLG0uc3ViVmVjdG9ycyhyLGEpLGYuc3ViVmVjdG9ycyhpLGEpLG0uY3Jvc3MoZiksby5zZXRYWVoocCswLG0ueCxtLnksbS56KSxvLnNldFhZWihwKzEsbS54LG0ueSxtLnopLG8uc2V0WFlaKHArMixtLngsbS55LG0ueik7dGhpcy5ub3JtYWxpemVOb3JtYWxzKCksby5uZWVkc1VwZGF0ZT0hMH19bWVyZ2UodCxlKXtpZighKHQmJnQuaXNCdWZmZXJHZW9tZXRyeSkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLHQpO3JldHVybn1lPT09dm9pZCAwJiYoZT0wLGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkubWVyZ2UoKTogT3ZlcndyaXRpbmcgb3JpZ2luYWwgZ2VvbWV0cnksIHN0YXJ0aW5nIGF0IG9mZnNldD0wLiBVc2UgQnVmZmVyR2VvbWV0cnlVdGlscy5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoKSBmb3IgbG9zc2xlc3MgbWVyZ2UuIikpO2xldCBvPXRoaXMuYXR0cmlidXRlcztmb3IobGV0IGkgaW4gbyl7aWYodC5hdHRyaWJ1dGVzW2ldPT09dm9pZCAwKWNvbnRpbnVlO2xldCByPW9baV0uYXJyYXkscz10LmF0dHJpYnV0ZXNbaV0sbD1zLmFycmF5LGM9cy5pdGVtU2l6ZSplLG09TWF0aC5taW4obC5sZW5ndGgsci5sZW5ndGgtYyk7Zm9yKGxldCBmPTAscD1jO2Y8bTtmKysscCsrKXJbcF09bFtmXX1yZXR1cm4gdGhpc31ub3JtYWxpemVOb3JtYWxzKCl7bGV0IHQ9dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtmb3IobGV0IGU9MCxvPXQuY291bnQ7ZTxvO2UrKylEbC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksRGwubm9ybWFsaXplKCksdC5zZXRYWVooZSxEbC54LERsLnksRGwueil9dG9Ob25JbmRleGVkKCl7ZnVuY3Rpb24gdChzLGwpe2xldCBjPXMuYXJyYXksbT1zLml0ZW1TaXplLGY9cy5ub3JtYWxpemVkLHA9bmV3IGMuY29uc3RydWN0b3IobC5sZW5ndGgqbSksZz0wLF89MDtmb3IobGV0IE09MCx5PWwubGVuZ3RoO008eTtNKyspe3MuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT9nPWxbTV0qcy5kYXRhLnN0cmlkZStzLm9mZnNldDpnPWxbTV0qbTtmb3IobGV0IE89MDtPPG07TysrKXBbXysrXT1jW2crK119cmV0dXJuIG5ldyBPcihwLG0sZil9aWYodGhpcy5pbmRleD09PW51bGwpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkudG9Ob25JbmRleGVkKCk6IEJ1ZmZlckdlb21ldHJ5IGlzIGFscmVhZHkgbm9uLWluZGV4ZWQuIiksdGhpcztsZXQgZT1uZXcgdGEsbz10aGlzLmluZGV4LmFycmF5LGk9dGhpcy5hdHRyaWJ1dGVzO2ZvcihsZXQgcyBpbiBpKXtsZXQgbD1pW3NdLGM9dChsLG8pO2Uuc2V0QXR0cmlidXRlKHMsYyl9bGV0IGE9dGhpcy5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGxldCBzIGluIGEpe2xldCBsPVtdLGM9YVtzXTtmb3IobGV0IG09MCxmPWMubGVuZ3RoO208ZjttKyspe2xldCBwPWNbbV0sZz10KHAsbyk7bC5wdXNoKGcpfWUubW9ycGhBdHRyaWJ1dGVzW3NdPWx9ZS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2xldCByPXRoaXMuZ3JvdXBzO2ZvcihsZXQgcz0wLGw9ci5sZW5ndGg7czxsO3MrKyl7bGV0IGM9cltzXTtlLmFkZEdyb3VwKGMuc3RhcnQsYy5jb3VudCxjLm1hdGVyaWFsSW5kZXgpfXJldHVybiBlfXRvSlNPTigpe2xldCB0PXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQnVmZmVyR2VvbWV0cnkiLGdlbmVyYXRvcjoiQnVmZmVyR2VvbWV0cnkudG9KU09OIn19O2lmKHQudXVpZD10aGlzLnV1aWQsdC50eXBlPXRoaXMudHlwZSx0aGlzLm5hbWUhPT0iIiYmKHQubmFtZT10aGlzLm5hbWUpLE9iamVjdC5rZXlzKHRoaXMudXNlckRhdGEpLmxlbmd0aD4wJiYodC51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSx0aGlzLnBhcmFtZXRlcnMhPT12b2lkIDApe2xldCBsPXRoaXMucGFyYW1ldGVycztmb3IobGV0IGMgaW4gbClsW2NdIT09dm9pZCAwJiYodFtjXT1sW2NdKTtyZXR1cm4gdH10LmRhdGE9e2F0dHJpYnV0ZXM6e319O2xldCBlPXRoaXMuaW5kZXg7ZSE9PW51bGwmJih0LmRhdGEuaW5kZXg9e3R5cGU6ZS5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuYXJyYXkpfSk7bGV0IG89dGhpcy5hdHRyaWJ1dGVzO2ZvcihsZXQgbCBpbiBvKXtsZXQgYz1vW2xdO3QuZGF0YS5hdHRyaWJ1dGVzW2xdPWMudG9KU09OKHQuZGF0YSl9bGV0IGk9e30sYT0hMTtmb3IobGV0IGwgaW4gdGhpcy5tb3JwaEF0dHJpYnV0ZXMpe2xldCBjPXRoaXMubW9ycGhBdHRyaWJ1dGVzW2xdLG09W107Zm9yKGxldCBmPTAscD1jLmxlbmd0aDtmPHA7ZisrKXtsZXQgZz1jW2ZdO20ucHVzaChnLnRvSlNPTih0LmRhdGEpKX1tLmxlbmd0aD4wJiYoaVtsXT1tLGE9ITApfWEmJih0LmRhdGEubW9ycGhBdHRyaWJ1dGVzPWksdC5kYXRhLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmUpO2xldCByPXRoaXMuZ3JvdXBzO3IubGVuZ3RoPjAmJih0LmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocikpKTtsZXQgcz10aGlzLmJvdW5kaW5nU3BoZXJlO3JldHVybiBzIT09bnVsbCYmKHQuZGF0YS5ib3VuZGluZ1NwaGVyZT17Y2VudGVyOnMuY2VudGVyLnRvQXJyYXkoKSxyYWRpdXM6cy5yYWRpdXN9KSx0fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKCkuY29weSh0aGlzKX1jb3B5KHQpe3RoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbDtsZXQgZT17fTt0aGlzLm5hbWU9dC5uYW1lO2xldCBvPXQuaW5kZXg7byE9PW51bGwmJnRoaXMuc2V0SW5kZXgoby5jbG9uZShlKSk7bGV0IGk9dC5hdHRyaWJ1dGVzO2ZvcihsZXQgYyBpbiBpKXtsZXQgbT1pW2NdO3RoaXMuc2V0QXR0cmlidXRlKGMsbS5jbG9uZShlKSl9bGV0IGE9dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGxldCBjIGluIGEpe2xldCBtPVtdLGY9YVtjXTtmb3IobGV0IHA9MCxnPWYubGVuZ3RoO3A8ZztwKyspbS5wdXNoKGZbcF0uY2xvbmUoZSkpO3RoaXMubW9ycGhBdHRyaWJ1dGVzW2NdPW19dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZT10Lm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2xldCByPXQuZ3JvdXBzO2ZvcihsZXQgYz0wLG09ci5sZW5ndGg7YzxtO2MrKyl7bGV0IGY9cltjXTt0aGlzLmFkZEdyb3VwKGYuc3RhcnQsZi5jb3VudCxmLm1hdGVyaWFsSW5kZXgpfWxldCBzPXQuYm91bmRpbmdCb3g7cyE9PW51bGwmJih0aGlzLmJvdW5kaW5nQm94PXMuY2xvbmUoKSk7bGV0IGw9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbCE9PW51bGwmJih0aGlzLmJvdW5kaW5nU3BoZXJlPWwuY2xvbmUoKSksdGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dC5kcmF3UmFuZ2Uuc3RhcnQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9dC5kcmF3UmFuZ2UuY291bnQsdGhpcy51c2VyRGF0YT10LnVzZXJEYXRhLHQucGFyYW1ldGVycyE9PXZvaWQgMCYmKHRoaXMucGFyYW1ldGVycz1PYmplY3QuYXNzaWduKHt9LHQucGFyYW1ldGVycykpLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19O3RhLnByb3RvdHlwZS5pc0J1ZmZlckdlb21ldHJ5PSEwO3ZhciBUZHQ9bmV3IGVvLFoyPW5ldyBWeCxQVz1uZXcgQngsa3g9bmV3IHB0LE54PW5ldyBwdCxUeD1uZXcgcHQseVc9bmV3IHB0LHhXPW5ldyBwdCx2Vz1uZXcgcHQsTUg9bmV3IHB0LGJIPW5ldyBwdCxPSD1uZXcgcHQsUEg9bmV3IFNlLHlIPW5ldyBTZSx4SD1uZXcgU2Usd1c9bmV3IHB0LHZIPW5ldyBwdCxZcz1jbGFzcyBleHRlbmRzIFZpe2NvbnN0cnVjdG9yKHQ9bmV3IHRhLGU9bmV3IEkxKXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaCIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdC5tb3JwaFRhcmdldEluZmx1ZW5jZXMhPT12b2lkIDAmJih0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5zbGljZSgpKSx0Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSE9PXZvaWQgMCYmKHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PU9iamVjdC5hc3NpZ24oe30sdC5tb3JwaFRhcmdldERpY3Rpb25hcnkpKSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9dXBkYXRlTW9ycGhUYXJnZXRzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2xldCBlPXQubW9ycGhBdHRyaWJ1dGVzLG89T2JqZWN0LmtleXMoZSk7aWYoby5sZW5ndGg+MCl7bGV0IGk9ZVtvWzBdXTtpZihpIT09dm9pZCAwKXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IGE9MCxyPWkubGVuZ3RoO2E8cjthKyspe2xldCBzPWlbYV0ubmFtZXx8U3RyaW5nKGEpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbc109YX19fX1lbHNle2xldCBlPXQubW9ycGhUYXJnZXRzO2UhPT12b2lkIDAmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gudXBkYXRlTW9ycGhUYXJnZXRzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19cmF5Y2FzdCh0LGUpe2xldCBvPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdGVyaWFsLGE9dGhpcy5tYXRyaXhXb3JsZDtpZihpPT09dm9pZCAwfHwoby5ib3VuZGluZ1NwaGVyZT09PW51bGwmJm8uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksUFcuY29weShvLmJvdW5kaW5nU3BoZXJlKSxQVy5hcHBseU1hdHJpeDQoYSksdC5yYXkuaW50ZXJzZWN0c1NwaGVyZShQVyk9PT0hMSl8fChUZHQuY29weShhKS5pbnZlcnQoKSxaMi5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoVGR0KSxvLmJvdW5kaW5nQm94IT09bnVsbCYmWjIuaW50ZXJzZWN0c0JveChvLmJvdW5kaW5nQm94KT09PSExKSlyZXR1cm47bGV0IHI7aWYoby5pc0J1ZmZlckdlb21ldHJ5KXtsZXQgcz1vLmluZGV4LGw9by5hdHRyaWJ1dGVzLnBvc2l0aW9uLGM9by5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbT1vLm1vcnBoVGFyZ2V0c1JlbGF0aXZlLGY9by5hdHRyaWJ1dGVzLnV2LHA9by5hdHRyaWJ1dGVzLnV2MixnPW8uZ3JvdXBzLF89by5kcmF3UmFuZ2U7aWYocyE9PW51bGwpaWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IE09MCx5PWcubGVuZ3RoO008eTtNKyspe2xldCBPPWdbTV0sYj1pW08ubWF0ZXJpYWxJbmRleF0sUj1NYXRoLm1heChPLnN0YXJ0LF8uc3RhcnQpLEU9TWF0aC5taW4ocy5jb3VudCxNYXRoLm1pbihPLnN0YXJ0K08uY291bnQsXy5zdGFydCtfLmNvdW50KSk7Zm9yKGxldCBqPVIscnQ9RTtqPHJ0O2orPTMpe2xldCBKPXMuZ2V0WChqKSxFdD1zLmdldFgoaisxKSxqdD1zLmdldFgoaisyKTtyPXdIKHRoaXMsYix0LFoyLGwsYyxtLGYscCxKLEV0LGp0KSxyJiYoci5mYWNlSW5kZXg9TWF0aC5mbG9vcihqLzMpLHIuZmFjZS5tYXRlcmlhbEluZGV4PU8ubWF0ZXJpYWxJbmRleCxlLnB1c2gocikpfX1lbHNle2xldCBNPU1hdGgubWF4KDAsXy5zdGFydCkseT1NYXRoLm1pbihzLmNvdW50LF8uc3RhcnQrXy5jb3VudCk7Zm9yKGxldCBPPU0sYj15O088YjtPKz0zKXtsZXQgUj1zLmdldFgoTyksRT1zLmdldFgoTysxKSxqPXMuZ2V0WChPKzIpO3I9d0godGhpcyxpLHQsWjIsbCxjLG0sZixwLFIsRSxqKSxyJiYoci5mYWNlSW5kZXg9TWF0aC5mbG9vcihPLzMpLGUucHVzaChyKSl9fWVsc2UgaWYobCE9PXZvaWQgMClpZihBcnJheS5pc0FycmF5KGkpKWZvcihsZXQgTT0wLHk9Zy5sZW5ndGg7TTx5O00rKyl7bGV0IE89Z1tNXSxiPWlbTy5tYXRlcmlhbEluZGV4XSxSPU1hdGgubWF4KE8uc3RhcnQsXy5zdGFydCksRT1NYXRoLm1pbihsLmNvdW50LE1hdGgubWluKE8uc3RhcnQrTy5jb3VudCxfLnN0YXJ0K18uY291bnQpKTtmb3IobGV0IGo9UixydD1FO2o8cnQ7ais9Myl7bGV0IEo9aixFdD1qKzEsanQ9aisyO3I9d0godGhpcyxiLHQsWjIsbCxjLG0sZixwLEosRXQsanQpLHImJihyLmZhY2VJbmRleD1NYXRoLmZsb29yKGovMyksci5mYWNlLm1hdGVyaWFsSW5kZXg9Ty5tYXRlcmlhbEluZGV4LGUucHVzaChyKSl9fWVsc2V7bGV0IE09TWF0aC5tYXgoMCxfLnN0YXJ0KSx5PU1hdGgubWluKGwuY291bnQsXy5zdGFydCtfLmNvdW50KTtmb3IobGV0IE89TSxiPXk7TzxiO08rPTMpe2xldCBSPU8sRT1PKzEsaj1PKzI7cj13SCh0aGlzLGksdCxaMixsLGMsbSxmLHAsUixFLGopLHImJihyLmZhY2VJbmRleD1NYXRoLmZsb29yKE8vMyksZS5wdXNoKHIpKX19fWVsc2Ugby5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX07WXMucHJvdG90eXBlLmlzTWVzaD0hMDtmdW5jdGlvbiBEQnQobix0LGUsbyxpLGEscixzKXtsZXQgbDtpZih0LnNpZGU9PT1sbD9sPW8uaW50ZXJzZWN0VHJpYW5nbGUocixhLGksITAscyk6bD1vLmludGVyc2VjdFRyaWFuZ2xlKGksYSxyLHQuc2lkZSE9PXBTLHMpLGw9PT1udWxsKXJldHVybiBudWxsO3ZILmNvcHkocyksdkguYXBwbHlNYXRyaXg0KG4ubWF0cml4V29ybGQpO2xldCBjPWUucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKHZIKTtyZXR1cm4gYzxlLm5lYXJ8fGM+ZS5mYXI/bnVsbDp7ZGlzdGFuY2U6Yyxwb2ludDp2SC5jbG9uZSgpLG9iamVjdDpufX1mdW5jdGlvbiB3SChuLHQsZSxvLGksYSxyLHMsbCxjLG0sZil7a3guZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLGMpLE54LmZyb21CdWZmZXJBdHRyaWJ1dGUoaSxtKSxUeC5mcm9tQnVmZmVyQXR0cmlidXRlKGksZik7bGV0IHA9bi5tb3JwaFRhcmdldEluZmx1ZW5jZXM7aWYoYSYmcCl7TUguc2V0KDAsMCwwKSxiSC5zZXQoMCwwLDApLE9ILnNldCgwLDAsMCk7Zm9yKGxldCBfPTAsTT1hLmxlbmd0aDtfPE07XysrKXtsZXQgeT1wW19dLE89YVtfXTt5IT09MCYmKHlXLmZyb21CdWZmZXJBdHRyaWJ1dGUoTyxjKSx4Vy5mcm9tQnVmZmVyQXR0cmlidXRlKE8sbSksdlcuZnJvbUJ1ZmZlckF0dHJpYnV0ZShPLGYpLHI/KE1ILmFkZFNjYWxlZFZlY3Rvcih5Vyx5KSxiSC5hZGRTY2FsZWRWZWN0b3IoeFcseSksT0guYWRkU2NhbGVkVmVjdG9yKHZXLHkpKTooTUguYWRkU2NhbGVkVmVjdG9yKHlXLnN1YihreCkseSksYkguYWRkU2NhbGVkVmVjdG9yKHhXLnN1YihOeCkseSksT0guYWRkU2NhbGVkVmVjdG9yKHZXLnN1YihUeCkseSkpKX1reC5hZGQoTUgpLE54LmFkZChiSCksVHguYWRkKE9IKX1uLmlzU2tpbm5lZE1lc2gmJihuLmJvbmVUcmFuc2Zvcm0oYyxreCksbi5ib25lVHJhbnNmb3JtKG0sTngpLG4uYm9uZVRyYW5zZm9ybShmLFR4KSk7bGV0IGc9REJ0KG4sdCxlLG8sa3gsTngsVHgsd1cpO2lmKGcpe3MmJihQSC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsYykseUguZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLG0pLHhILmZyb21CdWZmZXJBdHRyaWJ1dGUocyxmKSxnLnV2PVhyLmdldFVWKHdXLGt4LE54LFR4LFBILHlILHhILG5ldyBTZSkpLGwmJihQSC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsYykseUguZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLG0pLHhILmZyb21CdWZmZXJBdHRyaWJ1dGUobCxmKSxnLnV2Mj1Yci5nZXRVVih3VyxreCxOeCxUeCxQSCx5SCx4SCxuZXcgU2UpKTtsZXQgXz17YTpjLGI6bSxjOmYsbm9ybWFsOm5ldyBwdCxtYXRlcmlhbEluZGV4OjB9O1hyLmdldE5vcm1hbChreCxOeCxUeCxfLm5vcm1hbCksZy5mYWNlPV99cmV0dXJuIGd9dmFyIHoxPWNsYXNzIGV4dGVuZHMgdGF7Y29uc3RydWN0b3IodD0xLGU9MSxvPTEsaT0xLGE9MSxyPTEpe3N1cGVyKCksdGhpcy50eXBlPSJCb3hHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOm8sd2lkdGhTZWdtZW50czppLGhlaWdodFNlZ21lbnRzOmEsZGVwdGhTZWdtZW50czpyfTtsZXQgcz10aGlzO2k9TWF0aC5mbG9vcihpKSxhPU1hdGguZmxvb3IoYSkscj1NYXRoLmZsb29yKHIpO2xldCBsPVtdLGM9W10sbT1bXSxmPVtdLHA9MCxnPTA7XygieiIsInkiLCJ4IiwtMSwtMSxvLGUsdCxyLGEsMCksXygieiIsInkiLCJ4IiwxLC0xLG8sZSwtdCxyLGEsMSksXygieCIsInoiLCJ5IiwxLDEsdCxvLGUsaSxyLDIpLF8oIngiLCJ6IiwieSIsMSwtMSx0LG8sLWUsaSxyLDMpLF8oIngiLCJ5IiwieiIsMSwtMSx0LGUsbyxpLGEsNCksXygieCIsInkiLCJ6IiwtMSwtMSx0LGUsLW8saSxhLDUpLHRoaXMuc2V0SW5kZXgobCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgTnIoYywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IE5yKG0sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IE5yKGYsMikpO2Z1bmN0aW9uIF8oTSx5LE8sYixSLEUsaixydCxKLEV0LGp0KXtsZXQga3Q9RS9KLHc9ai9FdCxVPUUvMixudD1qLzIsbHQ9cnQvMixidD1KKzEsb3Q9RXQrMSx1dD0wLGd0PTAsV3Q9bmV3IHB0O2ZvcihsZXQgUnQ9MDtSdDxvdDtSdCsrKXtsZXQgR3Q9UnQqdy1udDtmb3IobGV0IHllPTA7eWU8YnQ7eWUrKyl7bGV0IGplPXllKmt0LVU7V3RbTV09amUqYixXdFt5XT1HdCpSLFd0W09dPWx0LGMucHVzaChXdC54LFd0LnksV3QueiksV3RbTV09MCxXdFt5XT0wLFd0W09dPXJ0PjA/MTotMSxtLnB1c2goV3QueCxXdC55LFd0LnopLGYucHVzaCh5ZS9KKSxmLnB1c2goMS1SdC9FdCksdXQrPTF9fWZvcihsZXQgUnQ9MDtSdDxFdDtSdCsrKWZvcihsZXQgR3Q9MDtHdDxKO0d0Kyspe2xldCB5ZT1wK0d0K2J0KlJ0LGplPXArR3QrYnQqKFJ0KzEpLGNlPXArKEd0KzEpK2J0KihSdCsxKSxMdD1wKyhHdCsxKStidCpSdDtsLnB1c2goeWUsamUsTHQpLGwucHVzaChqZSxjZSxMdCksZ3QrPTZ9cy5hZGRHcm91cChnLGd0LGp0KSxnKz1ndCxwKz11dH19c3RhdGljIGZyb21KU09OKHQpe3JldHVybiBuZXcgejEodC53aWR0aCx0LmhlaWdodCx0LmRlcHRoLHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzLHQuZGVwdGhTZWdtZW50cyl9fTtmdW5jdGlvbiBnUyhuKXtsZXQgdD17fTtmb3IobGV0IGUgaW4gbil7dFtlXT17fTtmb3IobGV0IG8gaW4gbltlXSl7bGV0IGk9bltlXVtvXTtpJiYoaS5pc0NvbG9yfHxpLmlzTWF0cml4M3x8aS5pc01hdHJpeDR8fGkuaXNWZWN0b3IyfHxpLmlzVmVjdG9yM3x8aS5pc1ZlY3RvcjR8fGkuaXNUZXh0dXJlfHxpLmlzUXVhdGVybmlvbik/dFtlXVtvXT1pLmNsb25lKCk6QXJyYXkuaXNBcnJheShpKT90W2VdW29dPWkuc2xpY2UoKTp0W2VdW29dPWl9fXJldHVybiB0fWZ1bmN0aW9uIHZtKG4pe2xldCB0PXt9O2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtsZXQgbz1nUyhuW2VdKTtmb3IobGV0IGkgaW4gbyl0W2ldPW9baV19cmV0dXJuIHR9dmFyIElCdD17Y2xvbmU6Z1MsbWVyZ2U6dm19LHpCdD1gdm9pZCBtYWluKCkgewoJZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggcG9zaXRpb24sIDEuMCApOwp9YCxIQnQ9YHZvaWQgbWFpbigpIHsKCWdsX0ZyYWdDb2xvciA9IHZlYzQoIDEuMCwgMC4wLCAwLjAsIDEuMCApOwp9YCxYUD1jbGFzcyBleHRlbmRzIElse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFkZXJNYXRlcmlhbCIsdGhpcy5kZWZpbmVzPXt9LHRoaXMudW5pZm9ybXM9e30sdGhpcy52ZXJ0ZXhTaGFkZXI9ekJ0LHRoaXMuZnJhZ21lbnRTaGFkZXI9SEJ0LHRoaXMubGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmxpZ2h0cz0hMSx0aGlzLmNsaXBwaW5nPSExLHRoaXMuZXh0ZW5zaW9ucz17ZGVyaXZhdGl2ZXM6ITEsZnJhZ0RlcHRoOiExLGRyYXdCdWZmZXJzOiExLHNoYWRlclRleHR1cmVMT0Q6ITF9LHRoaXMuZGVmYXVsdEF0dHJpYnV0ZVZhbHVlcz17Y29sb3I6WzEsMSwxXSx1djpbMCwwXSx1djI6WzAsMF19LHRoaXMuaW5kZXgwQXR0cmlidXRlTmFtZT12b2lkIDAsdGhpcy51bmlmb3Jtc05lZWRVcGRhdGU9ITEsdGhpcy5nbHNsVmVyc2lvbj1udWxsLHQhPT12b2lkIDAmJih0LmF0dHJpYnV0ZXMhPT12b2lkIDAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlNoYWRlck1hdGVyaWFsOiBhdHRyaWJ1dGVzIHNob3VsZCBub3cgYmUgZGVmaW5lZCBpbiBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpLHRoaXMuc2V0VmFsdWVzKHQpKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZnJhZ21lbnRTaGFkZXI9dC5mcmFnbWVudFNoYWRlcix0aGlzLnZlcnRleFNoYWRlcj10LnZlcnRleFNoYWRlcix0aGlzLnVuaWZvcm1zPWdTKHQudW5pZm9ybXMpLHRoaXMuZGVmaW5lcz1PYmplY3QuYXNzaWduKHt9LHQuZGVmaW5lcyksdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy5saWdodHM9dC5saWdodHMsdGhpcy5jbGlwcGluZz10LmNsaXBwaW5nLHRoaXMuZXh0ZW5zaW9ucz1PYmplY3QuYXNzaWduKHt9LHQuZXh0ZW5zaW9ucyksdGhpcy5nbHNsVmVyc2lvbj10Lmdsc2xWZXJzaW9uLHRoaXN9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtlLmdsc2xWZXJzaW9uPXRoaXMuZ2xzbFZlcnNpb24sZS51bmlmb3Jtcz17fTtmb3IobGV0IGkgaW4gdGhpcy51bmlmb3Jtcyl7bGV0IHI9dGhpcy51bmlmb3Jtc1tpXS52YWx1ZTtyJiZyLmlzVGV4dHVyZT9lLnVuaWZvcm1zW2ldPXt0eXBlOiJ0Iix2YWx1ZTpyLnRvSlNPTih0KS51dWlkfTpyJiZyLmlzQ29sb3I/ZS51bmlmb3Jtc1tpXT17dHlwZToiYyIsdmFsdWU6ci5nZXRIZXgoKX06ciYmci5pc1ZlY3RvcjI/ZS51bmlmb3Jtc1tpXT17dHlwZToidjIiLHZhbHVlOnIudG9BcnJheSgpfTpyJiZyLmlzVmVjdG9yMz9lLnVuaWZvcm1zW2ldPXt0eXBlOiJ2MyIsdmFsdWU6ci50b0FycmF5KCl9OnImJnIuaXNWZWN0b3I0P2UudW5pZm9ybXNbaV09e3R5cGU6InY0Iix2YWx1ZTpyLnRvQXJyYXkoKX06ciYmci5pc01hdHJpeDM/ZS51bmlmb3Jtc1tpXT17dHlwZToibTMiLHZhbHVlOnIudG9BcnJheSgpfTpyJiZyLmlzTWF0cml4ND9lLnVuaWZvcm1zW2ldPXt0eXBlOiJtNCIsdmFsdWU6ci50b0FycmF5KCl9OmUudW5pZm9ybXNbaV09e3ZhbHVlOnJ9fU9iamVjdC5rZXlzKHRoaXMuZGVmaW5lcykubGVuZ3RoPjAmJihlLmRlZmluZXM9dGhpcy5kZWZpbmVzKSxlLnZlcnRleFNoYWRlcj10aGlzLnZlcnRleFNoYWRlcixlLmZyYWdtZW50U2hhZGVyPXRoaXMuZnJhZ21lbnRTaGFkZXI7bGV0IG89e307Zm9yKGxldCBpIGluIHRoaXMuZXh0ZW5zaW9ucyl0aGlzLmV4dGVuc2lvbnNbaV09PT0hMCYmKG9baV09ITApO3JldHVybiBPYmplY3Qua2V5cyhvKS5sZW5ndGg+MCYmKGUuZXh0ZW5zaW9ucz1vKSxlfX07WFAucHJvdG90eXBlLmlzU2hhZGVyTWF0ZXJpYWw9ITA7dmFyIHM0PWNsYXNzIGV4dGVuZHMgVml7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ2FtZXJhIix0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZT1uZXcgZW8sdGhpcy5wcm9qZWN0aW9uTWF0cml4PW5ldyBlbyx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlPW5ldyBlb31jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHQubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLnByb2plY3Rpb25NYXRyaXguY29weSh0LnByb2plY3Rpb25NYXRyaXgpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKSx0aGlzfWdldFdvcmxkRGlyZWN0aW9uKHQpe3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2xldCBlPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KC1lWzhdLC1lWzldLC1lWzEwXSkubm9ybWFsaXplKCl9dXBkYXRlTWF0cml4V29ybGQodCl7c3VwZXIudXBkYXRlTWF0cml4V29ybGQodCksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKX11cGRhdGVXb3JsZE1hdHJpeCh0LGUpe3N1cGVyLnVwZGF0ZVdvcmxkTWF0cml4KHQsZSksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fTtzNC5wcm90b3R5cGUuaXNDYW1lcmE9ITA7dmFyIFNtPWNsYXNzIGV4dGVuZHMgczR7Y29uc3RydWN0b3IodD01MCxlPTEsbz0uMSxpPTJlMyl7c3VwZXIoKSx0aGlzLnR5cGU9IlBlcnNwZWN0aXZlQ2FtZXJhIix0aGlzLmZvdj10LHRoaXMuem9vbT0xLHRoaXMubmVhcj1vLHRoaXMuZmFyPWksdGhpcy5mb2N1cz0xMCx0aGlzLmFzcGVjdD1lLHRoaXMudmlldz1udWxsLHRoaXMuZmlsbUdhdWdlPTM1LHRoaXMuZmlsbU9mZnNldD0wLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHRoaXMuZm92PXQuZm92LHRoaXMuem9vbT10Lnpvb20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLmZvY3VzPXQuZm9jdXMsdGhpcy5hc3BlY3Q9dC5hc3BlY3QsdGhpcy52aWV3PXQudmlldz09PW51bGw/bnVsbDpPYmplY3QuYXNzaWduKHt9LHQudmlldyksdGhpcy5maWxtR2F1Z2U9dC5maWxtR2F1Z2UsdGhpcy5maWxtT2Zmc2V0PXQuZmlsbU9mZnNldCx0aGlzfXNldEZvY2FsTGVuZ3RoKHQpe2xldCBlPS41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3Q7dGhpcy5mb3Y9WVcqMipNYXRoLmF0YW4oZSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9Z2V0Rm9jYWxMZW5ndGgoKXtsZXQgdD1NYXRoLnRhbihhVyouNSp0aGlzLmZvdik7cmV0dXJuIC41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3R9Z2V0RWZmZWN0aXZlRk9WKCl7cmV0dXJuIFlXKjIqTWF0aC5hdGFuKE1hdGgudGFuKGFXKi41KnRoaXMuZm92KS90aGlzLnpvb20pfWdldEZpbG1XaWR0aCgpe3JldHVybiB0aGlzLmZpbG1HYXVnZSpNYXRoLm1pbih0aGlzLmFzcGVjdCwxKX1nZXRGaWxtSGVpZ2h0KCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlL01hdGgubWF4KHRoaXMuYXNwZWN0LDEpfXNldFZpZXdPZmZzZXQodCxlLG8saSxhLHIpe3RoaXMuYXNwZWN0PXQvZSx0aGlzLnZpZXc9PT1udWxsJiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1vLHRoaXMudmlldy5vZmZzZXRZPWksdGhpcy52aWV3LndpZHRoPWEsdGhpcy52aWV3LmhlaWdodD1yLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe3RoaXMudmlldyE9PW51bGwmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2xldCB0PXRoaXMubmVhcixlPXQqTWF0aC50YW4oYVcqLjUqdGhpcy5mb3YpL3RoaXMuem9vbSxvPTIqZSxpPXRoaXMuYXNwZWN0Km8sYT0tLjUqaSxyPXRoaXMudmlldztpZih0aGlzLnZpZXchPT1udWxsJiZ0aGlzLnZpZXcuZW5hYmxlZCl7bGV0IGw9ci5mdWxsV2lkdGgsYz1yLmZ1bGxIZWlnaHQ7YSs9ci5vZmZzZXRYKmkvbCxlLT1yLm9mZnNldFkqby9jLGkqPXIud2lkdGgvbCxvKj1yLmhlaWdodC9jfWxldCBzPXRoaXMuZmlsbU9mZnNldDtzIT09MCYmKGErPXQqcy90aGlzLmdldEZpbG1XaWR0aCgpKSx0aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKGEsYStpLGUsZS1vLHQsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfXRvSlNPTih0KXtsZXQgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIGUub2JqZWN0LmZvdj10aGlzLmZvdixlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsZS5vYmplY3QuZm9jdXM9dGhpcy5mb2N1cyxlLm9iamVjdC5hc3BlY3Q9dGhpcy5hc3BlY3QsdGhpcy52aWV3IT09bnVsbCYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlLm9iamVjdC5maWxtR2F1Z2U9dGhpcy5maWxtR2F1Z2UsZS5vYmplY3QuZmlsbU9mZnNldD10aGlzLmZpbG1PZmZzZXQsZX19O1NtLnByb3RvdHlwZS5pc1BlcnNwZWN0aXZlQ2FtZXJhPSEwO3ZhciBYMj05MCxRMj0xLGw0PWNsYXNzIGV4dGVuZHMgVml7Y29uc3RydWN0b3IodCxlLG8pe2lmKHN1cGVyKCksdGhpcy50eXBlPSJDdWJlQ2FtZXJhIixvLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0IT09ITApe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkN1YmVDYW1lcmE6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBhbiBpbnN0YW5jZSBvZiBXZWJHTEN1YmVSZW5kZXJUYXJnZXQgYXMgdGhpcmQgcGFyYW1ldGVyLiIpO3JldHVybn10aGlzLnJlbmRlclRhcmdldD1vO2xldCBpPW5ldyBTbShYMixRMix0LGUpO2kubGF5ZXJzPXRoaXMubGF5ZXJzLGkudXAuc2V0KDAsLTEsMCksaS5sb29rQXQobmV3IHB0KDEsMCwwKSksdGhpcy5hZGQoaSk7bGV0IGE9bmV3IFNtKFgyLFEyLHQsZSk7YS5sYXllcnM9dGhpcy5sYXllcnMsYS51cC5zZXQoMCwtMSwwKSxhLmxvb2tBdChuZXcgcHQoLTEsMCwwKSksdGhpcy5hZGQoYSk7bGV0IHI9bmV3IFNtKFgyLFEyLHQsZSk7ci5sYXllcnM9dGhpcy5sYXllcnMsci51cC5zZXQoMCwwLDEpLHIubG9va0F0KG5ldyBwdCgwLDEsMCkpLHRoaXMuYWRkKHIpO2xldCBzPW5ldyBTbShYMixRMix0LGUpO3MubGF5ZXJzPXRoaXMubGF5ZXJzLHMudXAuc2V0KDAsMCwtMSkscy5sb29rQXQobmV3IHB0KDAsLTEsMCkpLHRoaXMuYWRkKHMpO2xldCBsPW5ldyBTbShYMixRMix0LGUpO2wubGF5ZXJzPXRoaXMubGF5ZXJzLGwudXAuc2V0KDAsLTEsMCksbC5sb29rQXQobmV3IHB0KDAsMCwxKSksdGhpcy5hZGQobCk7bGV0IGM9bmV3IFNtKFgyLFEyLHQsZSk7Yy5sYXllcnM9dGhpcy5sYXllcnMsYy51cC5zZXQoMCwtMSwwKSxjLmxvb2tBdChuZXcgcHQoMCwwLC0xKSksdGhpcy5hZGQoYyl9dXBkYXRlKHQsZSl7dGhpcy5wYXJlbnQ9PT1udWxsJiZ0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCk7bGV0IG89dGhpcy5yZW5kZXJUYXJnZXQsW2ksYSxyLHMsbCxjXT10aGlzLmNoaWxkcmVuLG09dC54ci5lbmFibGVkLGY9dC5nZXRSZW5kZXJUYXJnZXQoKTt0LnhyLmVuYWJsZWQ9ITE7bGV0IHA9by50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztvLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExLHQuc2V0UmVuZGVyVGFyZ2V0KG8sMCksdC5yZW5kZXIoZSxpKSx0LnNldFJlbmRlclRhcmdldChvLDEpLHQucmVuZGVyKGUsYSksdC5zZXRSZW5kZXJUYXJnZXQobywyKSx0LnJlbmRlcihlLHIpLHQuc2V0UmVuZGVyVGFyZ2V0KG8sMyksdC5yZW5kZXIoZSxzKSx0LnNldFJlbmRlclRhcmdldChvLDQpLHQucmVuZGVyKGUsbCksby50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1wLHQuc2V0UmVuZGVyVGFyZ2V0KG8sNSksdC5yZW5kZXIoZSxjKSx0LnNldFJlbmRlclRhcmdldChmKSx0LnhyLmVuYWJsZWQ9bSxvLnRleHR1cmUubmVlZHNQTVJFTVVwZGF0ZT0hMH19LHVTPWNsYXNzIGV4dGVuZHMgR3N7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyxsLGMsbSl7dD10IT09dm9pZCAwP3Q6W10sZT1lIT09dm9pZCAwP2U6UzQsc3VwZXIodCxlLG8saSxhLHIscyxsLGMsbSksdGhpcy5mbGlwWT0hMX1nZXQgaW1hZ2VzKCl7cmV0dXJuIHRoaXMuaW1hZ2V9c2V0IGltYWdlcyh0KXt0aGlzLmltYWdlPXR9fTt1Uy5wcm90b3R5cGUuaXNDdWJlVGV4dHVyZT0hMDt2YXIgS0g9Y2xhc3MgZXh0ZW5kcyBOZHtjb25zdHJ1Y3Rvcih0LGUsbyl7TnVtYmVyLmlzSW50ZWdlcihlKSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xDdWJlUmVuZGVyVGFyZ2V0OiBjb25zdHJ1Y3RvciBzaWduYXR1cmUgaXMgbm93IFdlYkdMQ3ViZVJlbmRlclRhcmdldCggc2l6ZSwgb3B0aW9ucyApIiksZT1vKSxzdXBlcih0LHQsZSksZT1lfHx7fSx0aGlzLnRleHR1cmU9bmV3IHVTKHZvaWQgMCxlLm1hcHBpbmcsZS53cmFwUyxlLndyYXBULGUubWFnRmlsdGVyLGUubWluRmlsdGVyLGUuZm9ybWF0LGUudHlwZSxlLmFuaXNvdHJvcHksZS5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT0hMCx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWUuZ2VuZXJhdGVNaXBtYXBzIT09dm9pZCAwP2UuZ2VuZXJhdGVNaXBtYXBzOiExLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9ZS5taW5GaWx0ZXIhPT12b2lkIDA/ZS5taW5GaWx0ZXI6d219ZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmUodCxlKXt0aGlzLnRleHR1cmUudHlwZT1lLnR5cGUsdGhpcy50ZXh0dXJlLmZvcm1hdD1SZix0aGlzLnRleHR1cmUuZW5jb2Rpbmc9ZS5lbmNvZGluZyx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWUuZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9ZS5taW5GaWx0ZXIsdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcj1lLm1hZ0ZpbHRlcjtsZXQgbz17dW5pZm9ybXM6e3RFcXVpcmVjdDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpgCgoJCQkJdmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjsKCgkJCQl2ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkgewoKCQkJCQlyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTsKCgkJCQl9CgoJCQkJdm9pZCBtYWluKCkgewoKCQkJCQl2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApOwoKCQkJCQkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJCQkJCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCgkJCQl9CgkJCWAsZnJhZ21lbnRTaGFkZXI6YAoKCQkJCXVuaWZvcm0gc2FtcGxlcjJEIHRFcXVpcmVjdDsKCgkJCQl2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwoKCQkJCSNpbmNsdWRlIDxjb21tb24+CgoJCQkJdm9pZCBtYWluKCkgewoKCQkJCQl2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7CgoJCQkJCXZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTsKCgkJCQkJZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCB0RXF1aXJlY3QsIHNhbXBsZVVWICk7CgoJCQkJfQoJCQlgfSxpPW5ldyB6MSg1LDUsNSksYT1uZXcgWFAoe25hbWU6IkN1YmVtYXBGcm9tRXF1aXJlY3QiLHVuaWZvcm1zOmdTKG8udW5pZm9ybXMpLHZlcnRleFNoYWRlcjpvLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpvLmZyYWdtZW50U2hhZGVyLHNpZGU6bGwsYmxlbmRpbmc6RHh9KTthLnVuaWZvcm1zLnRFcXVpcmVjdC52YWx1ZT1lO2xldCByPW5ldyBZcyhpLGEpLHM9ZS5taW5GaWx0ZXI7cmV0dXJuIGUubWluRmlsdGVyPT09T0YmJihlLm1pbkZpbHRlcj13bSksbmV3IGw0KDEsMTAsdGhpcykudXBkYXRlKHQsciksZS5taW5GaWx0ZXI9cyxyLmdlb21ldHJ5LmRpc3Bvc2UoKSxyLm1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzfWNsZWFyKHQsZSxvLGkpe2xldCBhPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7Zm9yKGxldCByPTA7cjw2O3IrKyl0LnNldFJlbmRlclRhcmdldCh0aGlzLHIpLHQuY2xlYXIoZSxvLGkpO3Quc2V0UmVuZGVyVGFyZ2V0KGEpfX07S0gucHJvdG90eXBlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PSEwO3ZhciBTVz1uZXcgcHQsRkJ0PW5ldyBwdCxMQnQ9bmV3IG1sLHJiPWNsYXNze2NvbnN0cnVjdG9yKHQ9bmV3IHB0KDEsMCwwKSxlPTApe3RoaXMubm9ybWFsPXQsdGhpcy5jb25zdGFudD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9ZSx0aGlzfXNldENvbXBvbmVudHModCxlLG8saSl7cmV0dXJuIHRoaXMubm9ybWFsLnNldCh0LGUsbyksdGhpcy5jb25zdGFudD1pLHRoaXN9c2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PS1lLmRvdCh0aGlzLm5vcm1hbCksdGhpc31zZXRGcm9tQ29wbGFuYXJQb2ludHModCxlLG8pe2xldCBpPVNXLnN1YlZlY3RvcnMobyxlKS5jcm9zcyhGQnQuc3ViVmVjdG9ycyh0LGUpKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpcy5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludChpLHQpLHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0Lm5vcm1hbCksdGhpcy5jb25zdGFudD10LmNvbnN0YW50LHRoaXN9bm9ybWFsaXplKCl7bGV0IHQ9MS90aGlzLm5vcm1hbC5sZW5ndGgoKTtyZXR1cm4gdGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIodCksdGhpcy5jb25zdGFudCo9dCx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLmNvbnN0YW50Kj0tMSx0aGlzLm5vcm1hbC5uZWdhdGUoKSx0aGlzfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuZG90KHQpK3RoaXMuY29uc3RhbnR9ZGlzdGFuY2VUb1NwaGVyZSh0KXtyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQodC5jZW50ZXIpLXQucmFkaXVzfXByb2plY3RQb2ludCh0LGUpe3JldHVybiBlLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludCh0KSkuYWRkKHQpfWludGVyc2VjdExpbmUodCxlKXtsZXQgbz10LmRlbHRhKFNXKSxpPXRoaXMubm9ybWFsLmRvdChvKTtpZihpPT09MClyZXR1cm4gdGhpcy5kaXN0YW5jZVRvUG9pbnQodC5zdGFydCk9PT0wP2UuY29weSh0LnN0YXJ0KTpudWxsO2xldCBhPS0odC5zdGFydC5kb3QodGhpcy5ub3JtYWwpK3RoaXMuY29uc3RhbnQpL2k7cmV0dXJuIGE8MHx8YT4xP251bGw6ZS5jb3B5KG8pLm11bHRpcGx5U2NhbGFyKGEpLmFkZCh0LnN0YXJ0KX1pbnRlcnNlY3RzTGluZSh0KXtsZXQgZT10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KSxvPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuZW5kKTtyZXR1cm4gZTwwJiZvPjB8fG88MCYmZT4wfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHQuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfWNvcGxhbmFyUG9pbnQodCl7cmV0dXJuIHQuY29weSh0aGlzLm5vcm1hbCkubXVsdGlwbHlTY2FsYXIoLXRoaXMuY29uc3RhbnQpfWFwcGx5TWF0cml4NCh0LGUpe2xldCBvPWV8fExCdC5nZXROb3JtYWxNYXRyaXgodCksaT10aGlzLmNvcGxhbmFyUG9pbnQoU1cpLmFwcGx5TWF0cml4NCh0KSxhPXRoaXMubm9ybWFsLmFwcGx5TWF0cml4MyhvKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpcy5jb25zdGFudD0taS5kb3QoYSksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY29uc3RhbnQtPXQuZG90KHRoaXMubm9ybWFsKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5ub3JtYWwuZXF1YWxzKHRoaXMubm9ybWFsKSYmdC5jb25zdGFudD09PXRoaXMuY29uc3RhbnR9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfX07cmIucHJvdG90eXBlLmlzUGxhbmU9ITA7dmFyIEsyPW5ldyBCeCxTSD1uZXcgcHQsaFM9Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgcmIsZT1uZXcgcmIsbz1uZXcgcmIsaT1uZXcgcmIsYT1uZXcgcmIscj1uZXcgcmIpe3RoaXMucGxhbmVzPVt0LGUsbyxpLGEscl19c2V0KHQsZSxvLGksYSxyKXtsZXQgcz10aGlzLnBsYW5lcztyZXR1cm4gc1swXS5jb3B5KHQpLHNbMV0uY29weShlKSxzWzJdLmNvcHkobyksc1szXS5jb3B5KGkpLHNbNF0uY29weShhKSxzWzVdLmNvcHkociksdGhpc31jb3B5KHQpe2xldCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbz0wO288NjtvKyspZVtvXS5jb3B5KHQucGxhbmVzW29dKTtyZXR1cm4gdGhpc31zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh0KXtsZXQgZT10aGlzLnBsYW5lcyxvPXQuZWxlbWVudHMsaT1vWzBdLGE9b1sxXSxyPW9bMl0scz1vWzNdLGw9b1s0XSxjPW9bNV0sbT1vWzZdLGY9b1s3XSxwPW9bOF0sZz1vWzldLF89b1sxMF0sTT1vWzExXSx5PW9bMTJdLE89b1sxM10sYj1vWzE0XSxSPW9bMTVdO3JldHVybiBlWzBdLnNldENvbXBvbmVudHMocy1pLGYtbCxNLXAsUi15KS5ub3JtYWxpemUoKSxlWzFdLnNldENvbXBvbmVudHMocytpLGYrbCxNK3AsUit5KS5ub3JtYWxpemUoKSxlWzJdLnNldENvbXBvbmVudHMocythLGYrYyxNK2csUitPKS5ub3JtYWxpemUoKSxlWzNdLnNldENvbXBvbmVudHMocy1hLGYtYyxNLWcsUi1PKS5ub3JtYWxpemUoKSxlWzRdLnNldENvbXBvbmVudHMocy1yLGYtbSxNLV8sUi1iKS5ub3JtYWxpemUoKSxlWzVdLnNldENvbXBvbmVudHMocytyLGYrbSxNK18sUitiKS5ub3JtYWxpemUoKSx0aGlzfWludGVyc2VjdHNPYmplY3QodCl7bGV0IGU9dC5nZW9tZXRyeTtyZXR1cm4gZS5ib3VuZGluZ1NwaGVyZT09PW51bGwmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksSzIuY29weShlLmJvdW5kaW5nU3BoZXJlKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKEsyKX1pbnRlcnNlY3RzU3ByaXRlKHQpe3JldHVybiBLMi5jZW50ZXIuc2V0KDAsMCwwKSxLMi5yYWRpdXM9LjcwNzEwNjc4MTE4NjU0NzYsSzIuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShLMil9aW50ZXJzZWN0c1NwaGVyZSh0KXtsZXQgZT10aGlzLnBsYW5lcyxvPXQuY2VudGVyLGk9LXQucmFkaXVzO2ZvcihsZXQgYT0wO2E8NjthKyspaWYoZVthXS5kaXN0YW5jZVRvUG9pbnQobyk8aSlyZXR1cm4hMTtyZXR1cm4hMH1pbnRlcnNlY3RzQm94KHQpe2xldCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbz0wO288NjtvKyspe2xldCBpPWVbb107aWYoU0gueD1pLm5vcm1hbC54PjA/dC5tYXgueDp0Lm1pbi54LFNILnk9aS5ub3JtYWwueT4wP3QubWF4Lnk6dC5taW4ueSxTSC56PWkubm9ybWFsLno+MD90Lm1heC56OnQubWluLnosaS5kaXN0YW5jZVRvUG9pbnQoU0gpPDApcmV0dXJuITF9cmV0dXJuITB9Y29udGFpbnNQb2ludCh0KXtsZXQgZT10aGlzLnBsYW5lcztmb3IobGV0IG89MDtvPDY7bysrKWlmKGVbb10uZGlzdGFuY2VUb1BvaW50KHQpPDApcmV0dXJuITE7cmV0dXJuITB9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfX07ZnVuY3Rpb24gRGd0KCl7bGV0IG49bnVsbCx0PSExLGU9bnVsbCxvPW51bGw7ZnVuY3Rpb24gaShhLHIpe2UoYSxyKSxvPW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpfXJldHVybntzdGFydDpmdW5jdGlvbigpe3QhPT0hMCYmZSE9PW51bGwmJihvPW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGkpLHQ9ITApfSxzdG9wOmZ1bmN0aW9uKCl7bi5jYW5jZWxBbmltYXRpb25GcmFtZShvKSx0PSExfSxzZXRBbmltYXRpb25Mb29wOmZ1bmN0aW9uKGEpe2U9YX0sc2V0Q29udGV4dDpmdW5jdGlvbihhKXtuPWF9fX1mdW5jdGlvbiBCQnQobix0KXtsZXQgZT10LmlzV2ViR0wyLG89bmV3IFdlYWtNYXA7ZnVuY3Rpb24gaShjLG0pe2xldCBmPWMuYXJyYXkscD1jLnVzYWdlLGc9bi5jcmVhdGVCdWZmZXIoKTtuLmJpbmRCdWZmZXIobSxnKSxuLmJ1ZmZlckRhdGEobSxmLHApLGMub25VcGxvYWRDYWxsYmFjaygpO2xldCBfPTUxMjY7cmV0dXJuIGYgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXk/Xz01MTI2OmYgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXk/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVuc3VwcG9ydGVkIGRhdGEgYnVmZmVyIGZvcm1hdDogRmxvYXQ2NEFycmF5LiIpOmYgaW5zdGFuY2VvZiBVaW50MTZBcnJheT9jLmlzRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT9lP189NTEzMTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVXNhZ2Ugb2YgRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBXZWJHTDIuIik6Xz01MTIzOmYgaW5zdGFuY2VvZiBJbnQxNkFycmF5P189NTEyMjpmIGluc3RhbmNlb2YgVWludDMyQXJyYXk/Xz01MTI1OmYgaW5zdGFuY2VvZiBJbnQzMkFycmF5P189NTEyNDpmIGluc3RhbmNlb2YgSW50OEFycmF5P189NTEyMDooZiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fGYgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkmJihfPTUxMjEpLHtidWZmZXI6Zyx0eXBlOl8sYnl0ZXNQZXJFbGVtZW50OmYuQllURVNfUEVSX0VMRU1FTlQsdmVyc2lvbjpjLnZlcnNpb259fWZ1bmN0aW9uIGEoYyxtLGYpe2xldCBwPW0uYXJyYXksZz1tLnVwZGF0ZVJhbmdlO24uYmluZEJ1ZmZlcihmLGMpLGcuY291bnQ9PT0tMT9uLmJ1ZmZlclN1YkRhdGEoZiwwLHApOihlP24uYnVmZmVyU3ViRGF0YShmLGcub2Zmc2V0KnAuQllURVNfUEVSX0VMRU1FTlQscCxnLm9mZnNldCxnLmNvdW50KTpuLmJ1ZmZlclN1YkRhdGEoZixnLm9mZnNldCpwLkJZVEVTX1BFUl9FTEVNRU5ULHAuc3ViYXJyYXkoZy5vZmZzZXQsZy5vZmZzZXQrZy5jb3VudCkpLGcuY291bnQ9LTEpfWZ1bmN0aW9uIHIoYyl7cmV0dXJuIGMuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGM9Yy5kYXRhKSxvLmdldChjKX1mdW5jdGlvbiBzKGMpe2MuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKGM9Yy5kYXRhKTtsZXQgbT1vLmdldChjKTttJiYobi5kZWxldGVCdWZmZXIobS5idWZmZXIpLG8uZGVsZXRlKGMpKX1mdW5jdGlvbiBsKGMsbSl7aWYoYy5pc0dMQnVmZmVyQXR0cmlidXRlKXtsZXQgcD1vLmdldChjKTsoIXB8fHAudmVyc2lvbjxjLnZlcnNpb24pJiZvLnNldChjLHtidWZmZXI6Yy5idWZmZXIsdHlwZTpjLnR5cGUsYnl0ZXNQZXJFbGVtZW50OmMuZWxlbWVudFNpemUsdmVyc2lvbjpjLnZlcnNpb259KTtyZXR1cm59Yy5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoYz1jLmRhdGEpO2xldCBmPW8uZ2V0KGMpO2Y9PT12b2lkIDA/by5zZXQoYyxpKGMsbSkpOmYudmVyc2lvbjxjLnZlcnNpb24mJihhKGYuYnVmZmVyLGMsbSksZi52ZXJzaW9uPWMudmVyc2lvbil9cmV0dXJue2dldDpyLHJlbW92ZTpzLHVwZGF0ZTpsfX12YXIgYzQ9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0PTEsZT0xLG89MSxpPTEpe3N1cGVyKCksdGhpcy50eXBlPSJQbGFuZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0OmUsd2lkdGhTZWdtZW50czpvLGhlaWdodFNlZ21lbnRzOml9O2xldCBhPXQvMixyPWUvMixzPU1hdGguZmxvb3IobyksbD1NYXRoLmZsb29yKGkpLGM9cysxLG09bCsxLGY9dC9zLHA9ZS9sLGc9W10sXz1bXSxNPVtdLHk9W107Zm9yKGxldCBPPTA7TzxtO08rKyl7bGV0IGI9TypwLXI7Zm9yKGxldCBSPTA7UjxjO1IrKyl7bGV0IEU9UipmLWE7Xy5wdXNoKEUsLWIsMCksTS5wdXNoKDAsMCwxKSx5LnB1c2goUi9zKSx5LnB1c2goMS1PL2wpfX1mb3IobGV0IE89MDtPPGw7TysrKWZvcihsZXQgYj0wO2I8cztiKyspe2xldCBSPWIrYypPLEU9YitjKihPKzEpLGo9YisxK2MqKE8rMSkscnQ9YisxK2MqTztnLnB1c2goUixFLHJ0KSxnLnB1c2goRSxqLHJ0KX10aGlzLnNldEluZGV4KGcpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IE5yKF8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBOcihNLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBOcih5LDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBjNCh0LndpZHRoLHQuaGVpZ2h0LHQud2lkdGhTZWdtZW50cyx0LmhlaWdodFNlZ21lbnRzKX19LFZCdD1gI2lmZGVmIFVTRV9BTFBIQU1BUAoJZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZzsKI2VuZGlmYCxqQnQ9YCNpZmRlZiBVU0VfQUxQSEFNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwOwojZW5kaWZgLFVCdD1gI2lmZGVmIFVTRV9BTFBIQVRFU1QKCWlmICggZGlmZnVzZUNvbG9yLmEgPCBhbHBoYVRlc3QgKSBkaXNjYXJkOwojZW5kaWZgLFlCdD1gI2lmZGVmIFVTRV9BTFBIQVRFU1QKCXVuaWZvcm0gZmxvYXQgYWxwaGFUZXN0OwojZW5kaWZgLEdCdD1gI2lmZGVmIFVTRV9BT01BUAoJZmxvYXQgYW1iaWVudE9jY2x1c2lvbiA9ICggdGV4dHVyZTJEKCBhb01hcCwgdlV2MiApLnIgLSAxLjAgKSAqIGFvTWFwSW50ZW5zaXR5ICsgMS4wOwoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGFtYmllbnRPY2NsdXNpb247CgkjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEICkKCQlmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7CgkJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqPSBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5yb3VnaG5lc3MgKTsKCSNlbmRpZgojZW5kaWZgLFdCdD1gI2lmZGVmIFVTRV9BT01BUAoJdW5pZm9ybSBzYW1wbGVyMkQgYW9NYXA7Cgl1bmlmb3JtIGZsb2F0IGFvTWFwSW50ZW5zaXR5OwojZW5kaWZgLHFCdD0idmVjMyB0cmFuc2Zvcm1lZCA9IHZlYzMoIHBvc2l0aW9uICk7IixaQnQ9YHZlYzMgb2JqZWN0Tm9ybWFsID0gdmVjMyggbm9ybWFsICk7CiNpZmRlZiBVU0VfVEFOR0VOVAoJdmVjMyBvYmplY3RUYW5nZW50ID0gdmVjMyggdGFuZ2VudC54eXogKTsKI2VuZGlmYCxYQnQ9YHZlYzMgQlJERl9MYW1iZXJ0KCBjb25zdCBpbiB2ZWMzIGRpZmZ1c2VDb2xvciApIHsKCXJldHVybiBSRUNJUFJPQ0FMX1BJICogZGlmZnVzZUNvbG9yOwp9CnZlYzMgRl9TY2hsaWNrKCBjb25zdCBpbiB2ZWMzIGYwLCBjb25zdCBpbiBmbG9hdCBmOTAsIGNvbnN0IGluIGZsb2F0IGRvdFZIICkgewoJZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLSA1LjU1NDczICogZG90VkggLSA2Ljk4MzE2ICkgKiBkb3RWSCApOwoJcmV0dXJuIGYwICogKCAxLjAgLSBmcmVzbmVsICkgKyAoIGY5MCAqIGZyZXNuZWwgKTsKfQpmbG9hdCBWX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7CglmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7CglmbG9hdCBndiA9IGRvdE5MICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7CglmbG9hdCBnbCA9IGRvdE5WICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7CglyZXR1cm4gMC41IC8gbWF4KCBndiArIGdsLCBFUFNJTE9OICk7Cn0KZmxvYXQgRF9HR1goIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHsKCWZsb2F0IGEyID0gcG93MiggYWxwaGEgKTsKCWZsb2F0IGRlbm9tID0gcG93MiggZG90TkggKSAqICggYTIgLSAxLjAgKSArIDEuMDsKCXJldHVybiBSRUNJUFJPQ0FMX1BJICogYTIgLyBwb3cyKCBkZW5vbSApOwp9CnZlYzMgQlJERl9HR1goIGNvbnN0IGluIHZlYzMgbGlnaHREaXIsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgZjAsIGNvbnN0IGluIGZsb2F0IGY5MCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkgewoJZmxvYXQgYWxwaGEgPSBwb3cyKCByb3VnaG5lc3MgKTsKCXZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggbGlnaHREaXIgKyB2aWV3RGlyICk7CglmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgbGlnaHREaXIgKSApOwoJZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApOwoJZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGhhbGZEaXIgKSApOwoJZmxvYXQgZG90VkggPSBzYXR1cmF0ZSggZG90KCB2aWV3RGlyLCBoYWxmRGlyICkgKTsKCXZlYzMgRiA9IEZfU2NobGljayggZjAsIGY5MCwgZG90VkggKTsKCWZsb2F0IFYgPSBWX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGFscGhhLCBkb3ROTCwgZG90TlYgKTsKCWZsb2F0IEQgPSBEX0dHWCggYWxwaGEsIGRvdE5IICk7CglyZXR1cm4gRiAqICggViAqIEQgKTsKfQp2ZWMyIExUQ19VdiggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHsKCWNvbnN0IGZsb2F0IExVVF9TSVpFID0gNjQuMDsKCWNvbnN0IGZsb2F0IExVVF9TQ0FMRSA9ICggTFVUX1NJWkUgLSAxLjAgKSAvIExVVF9TSVpFOwoJY29uc3QgZmxvYXQgTFVUX0JJQVMgPSAwLjUgLyBMVVRfU0laRTsKCWZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggTiwgViApICk7Cgl2ZWMyIHV2ID0gdmVjMiggcm91Z2huZXNzLCBzcXJ0KCAxLjAgLSBkb3ROViApICk7Cgl1diA9IHV2ICogTFVUX1NDQUxFICsgTFVUX0JJQVM7CglyZXR1cm4gdXY7Cn0KZmxvYXQgTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIGYgKSB7CglmbG9hdCBsID0gbGVuZ3RoKCBmICk7CglyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7Cn0KdmVjMyBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgdjEsIGNvbnN0IGluIHZlYzMgdjIgKSB7CglmbG9hdCB4ID0gZG90KCB2MSwgdjIgKTsKCWZsb2F0IHkgPSBhYnMoIHggKTsKCWZsb2F0IGEgPSAwLjg1NDM5ODUgKyAoIDAuNDk2NTE1NSArIDAuMDE0NTIwNiAqIHkgKSAqIHk7CglmbG9hdCBiID0gMy40MTc1OTQwICsgKCA0LjE2MTY3MjQgKyB5ICkgKiB5OwoJZmxvYXQgdiA9IGEgLyBiOwoJZmxvYXQgdGhldGFfc2ludGhldGEgPSAoIHggPiAwLjAgKSA/IHYgOiAwLjUgKiBpbnZlcnNlc3FydCggbWF4KCAxLjAgLSB4ICogeCwgMWUtNyApICkgLSB2OwoJcmV0dXJuIGNyb3NzKCB2MSwgdjIgKSAqIHRoZXRhX3NpbnRoZXRhOwp9CnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkgewoJdmVjMyB2MSA9IHJlY3RDb29yZHNbIDEgXSAtIHJlY3RDb29yZHNbIDAgXTsKCXZlYzMgdjIgPSByZWN0Q29vcmRzWyAzIF0gLSByZWN0Q29vcmRzWyAwIF07Cgl2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApOwoJaWYoIGRvdCggbGlnaHROb3JtYWwsIFAgLSByZWN0Q29vcmRzWyAwIF0gKSA8IDAuMCApIHJldHVybiB2ZWMzKCAwLjAgKTsKCXZlYzMgVDEsIFQyOwoJVDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTsKCVQyID0gLSBjcm9zcyggTiwgVDEgKTsKCW1hdDMgbWF0ID0gbUludiAqIHRyYW5zcG9zZU1hdDMoIG1hdDMoIFQxLCBUMiwgTiApICk7Cgl2ZWMzIGNvb3Jkc1sgNCBdOwoJY29vcmRzWyAwIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDAgXSAtIFAgKTsKCWNvb3Jkc1sgMSBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAxIF0gLSBQICk7Cgljb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApOwoJY29vcmRzWyAzIF0gPSBtYXQgKiAoIHJlY3RDb29yZHNbIDMgXSAtIFAgKTsKCWNvb3Jkc1sgMCBdID0gbm9ybWFsaXplKCBjb29yZHNbIDAgXSApOwoJY29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7Cgljb29yZHNbIDIgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAyIF0gKTsKCWNvb3Jkc1sgMyBdID0gbm9ybWFsaXplKCBjb29yZHNbIDMgXSApOwoJdmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7Cgl2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAwIF0sIGNvb3Jkc1sgMSBdICk7Cgl2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAxIF0sIGNvb3Jkc1sgMiBdICk7Cgl2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7Cgl2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAzIF0sIGNvb3Jkc1sgMCBdICk7CglmbG9hdCByZXN1bHQgPSBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIHZlY3RvckZvcm1GYWN0b3IgKTsKCXJldHVybiB2ZWMzKCByZXN1bHQgKTsKfQpmbG9hdCBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICkgewoJcmV0dXJuIDAuMjU7Cn0KZmxvYXQgRF9CbGlublBob25nKCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkgewoJcmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiAoIHNoaW5pbmVzcyAqIDAuNSArIDEuMCApICogcG93KCBkb3ROSCwgc2hpbmluZXNzICk7Cn0KdmVjMyBCUkRGX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgbGlnaHREaXIsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzICkgewoJdmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBsaWdodERpciArIHZpZXdEaXIgKTsKCWZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTsKCWZsb2F0IGRvdFZIID0gc2F0dXJhdGUoIGRvdCggdmlld0RpciwgaGFsZkRpciApICk7Cgl2ZWMzIEYgPSBGX1NjaGxpY2soIHNwZWN1bGFyQ29sb3IsIDEuMCwgZG90VkggKTsKCWZsb2F0IEcgPSBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICk7CglmbG9hdCBEID0gRF9CbGlublBob25nKCBzaGluaW5lc3MsIGRvdE5IICk7CglyZXR1cm4gRiAqICggRyAqIEQgKTsKfQojaWYgZGVmaW5lZCggVVNFX1NIRUVOICkKZmxvYXQgRF9DaGFybGllKCBmbG9hdCByb3VnaG5lc3MsIGZsb2F0IGRvdE5IICkgewoJZmxvYXQgYWxwaGEgPSBwb3cyKCByb3VnaG5lc3MgKTsKCWZsb2F0IGludkFscGhhID0gMS4wIC8gYWxwaGE7CglmbG9hdCBjb3MyaCA9IGRvdE5IICogZG90Tkg7CglmbG9hdCBzaW4yaCA9IG1heCggMS4wIC0gY29zMmgsIDAuMDA3ODEyNSApOwoJcmV0dXJuICggMi4wICsgaW52QWxwaGEgKSAqIHBvdyggc2luMmgsIGludkFscGhhICogMC41ICkgLyAoIDIuMCAqIFBJICk7Cn0KZmxvYXQgVl9OZXViZWx0KCBmbG9hdCBkb3ROViwgZmxvYXQgZG90TkwgKSB7CglyZXR1cm4gc2F0dXJhdGUoIDEuMCAvICggNC4wICogKCBkb3ROTCArIGRvdE5WIC0gZG90TkwgKiBkb3ROViApICkgKTsKfQp2ZWMzIEJSREZfU2hlZW4oIGNvbnN0IGluIHZlYzMgbGlnaHREaXIsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIHZlYzMgc2hlZW5Db2xvciwgY29uc3QgaW4gZmxvYXQgc2hlZW5Sb3VnaG5lc3MgKSB7Cgl2ZWMzIGhhbGZEaXIgPSBub3JtYWxpemUoIGxpZ2h0RGlyICsgdmlld0RpciApOwoJZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGxpZ2h0RGlyICkgKTsKCWZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTsKCWZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTsKCWZsb2F0IEQgPSBEX0NoYXJsaWUoIHNoZWVuUm91Z2huZXNzLCBkb3ROSCApOwoJZmxvYXQgViA9IFZfTmV1YmVsdCggZG90TlYsIGRvdE5MICk7CglyZXR1cm4gc2hlZW5Db2xvciAqICggRCAqIFYgKTsKfQojZW5kaWZgLFFCdD1gI2lmZGVmIFVTRV9CVU1QTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBidW1wTWFwOwoJdW5pZm9ybSBmbG9hdCBidW1wU2NhbGU7Cgl2ZWMyIGRIZHh5X2Z3ZCgpIHsKCQl2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7CgkJdmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApOwoJCWZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDsKCQlmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDsKCQlmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDsKCQlyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTsKCX0KCXZlYzMgcGVydHVyYk5vcm1hbEFyYiggdmVjMyBzdXJmX3BvcywgdmVjMyBzdXJmX25vcm0sIHZlYzIgZEhkeHksIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7CgkJdmVjMyB2U2lnbWFYID0gdmVjMyggZEZkeCggc3VyZl9wb3MueCApLCBkRmR4KCBzdXJmX3Bvcy55ICksIGRGZHgoIHN1cmZfcG9zLnogKSApOwoJCXZlYzMgdlNpZ21hWSA9IHZlYzMoIGRGZHkoIHN1cmZfcG9zLnggKSwgZEZkeSggc3VyZl9wb3MueSApLCBkRmR5KCBzdXJmX3Bvcy56ICkgKTsKCQl2ZWMzIHZOID0gc3VyZl9ub3JtOwoJCXZlYzMgUjEgPSBjcm9zcyggdlNpZ21hWSwgdk4gKTsKCQl2ZWMzIFIyID0gY3Jvc3MoIHZOLCB2U2lnbWFYICk7CgkJZmxvYXQgZkRldCA9IGRvdCggdlNpZ21hWCwgUjEgKSAqIGZhY2VEaXJlY3Rpb247CgkJdmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7CgkJcmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApOwoJfQojZW5kaWZgLEtCdD1gI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwCgl2ZWM0IHBsYW5lOwoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkgewoJCXBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTsKCQlpZiAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgZGlzY2FyZDsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjaWYgVU5JT05fQ0xJUFBJTkdfUExBTkVTIDwgTlVNX0NMSVBQSU5HX1BMQU5FUwoJCWJvb2wgY2xpcHBlZCA9IHRydWU7CgkJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJCWZvciAoIGludCBpID0gVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpIDwgTlVNX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHsKCQkJcGxhbmUgPSBjbGlwcGluZ1BsYW5lc1sgaSBdOwoJCQljbGlwcGVkID0gKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApICYmIGNsaXBwZWQ7CgkJfQoJCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkJaWYgKCBjbGlwcGVkICkgZGlzY2FyZDsKCSNlbmRpZgojZW5kaWZgLEpCdD1gI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwCgl2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjsKCXVuaWZvcm0gdmVjNCBjbGlwcGluZ1BsYW5lc1sgTlVNX0NMSVBQSU5HX1BMQU5FUyBdOwojZW5kaWZgLCRCdD1gI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwCgl2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjsKI2VuZGlmYCx0VnQ9YCNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMAoJdkNsaXBQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7CiNlbmRpZmAsZVZ0PWAjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBICkKCWRpZmZ1c2VDb2xvciAqPSB2Q29sb3I7CiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApCglkaWZmdXNlQ29sb3IucmdiICo9IHZDb2xvcjsKI2VuZGlmYCxuVnQ9YCNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKQoJdmFyeWluZyB2ZWM0IHZDb2xvcjsKI2VsaWYgZGVmaW5lZCggVVNFX0NPTE9SICkKCXZhcnlpbmcgdmVjMyB2Q29sb3I7CiNlbmRpZmAsb1Z0PWAjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBICkKCXZhcnlpbmcgdmVjNCB2Q29sb3I7CiNlbGlmIGRlZmluZWQoIFVTRV9DT0xPUiApIHx8IGRlZmluZWQoIFVTRV9JTlNUQU5DSU5HX0NPTE9SICkKCXZhcnlpbmcgdmVjMyB2Q29sb3I7CiNlbmRpZmAsaVZ0PWAjaWYgZGVmaW5lZCggVVNFX0NPTE9SX0FMUEhBICkKCXZDb2xvciA9IHZlYzQoIDEuMCApOwojZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApCgl2Q29sb3IgPSB2ZWMzKCAxLjAgKTsKI2VuZGlmCiNpZmRlZiBVU0VfQ09MT1IKCXZDb2xvciAqPSBjb2xvcjsKI2VuZGlmCiNpZmRlZiBVU0VfSU5TVEFOQ0lOR19DT0xPUgoJdkNvbG9yLnh5eiAqPSBpbnN0YW5jZUNvbG9yLnh5ejsKI2VuZGlmYCxhVnQ9YCNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1ODk3OTMKI2RlZmluZSBQSTIgNi4yODMxODUzMDcxNzk1ODYKI2RlZmluZSBQSV9IQUxGIDEuNTcwNzk2MzI2Nzk0ODk2NgojZGVmaW5lIFJFQ0lQUk9DQUxfUEkgMC4zMTgzMDk4ODYxODM3OTA3CiNkZWZpbmUgUkVDSVBST0NBTF9QSTIgMC4xNTkxNTQ5NDMwOTE4OTUzNQojZGVmaW5lIEVQU0lMT04gMWUtNgojaWZuZGVmIHNhdHVyYXRlCiNkZWZpbmUgc2F0dXJhdGUoIGEgKSBjbGFtcCggYSwgMC4wLCAxLjAgKQojZW5kaWYKI2RlZmluZSB3aGl0ZUNvbXBsZW1lbnQoIGEgKSAoIDEuMCAtIHNhdHVyYXRlKCBhICkgKQpmbG9hdCBwb3cyKCBjb25zdCBpbiBmbG9hdCB4ICkgeyByZXR1cm4geCp4OyB9CmZsb2F0IHBvdzMoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4KngqeDsgfQpmbG9hdCBwb3c0KCBjb25zdCBpbiBmbG9hdCB4ICkgeyBmbG9hdCB4MiA9IHgqeDsgcmV0dXJuIHgyKngyOyB9CmZsb2F0IG1heDMoIGNvbnN0IGluIHZlYzMgdiApIHsgcmV0dXJuIG1heCggbWF4KCB2LngsIHYueSApLCB2LnogKTsgfQpmbG9hdCBhdmVyYWdlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkgeyByZXR1cm4gZG90KCBjb2xvciwgdmVjMyggMC4zMzMzICkgKTsgfQpoaWdocCBmbG9hdCByYW5kKCBjb25zdCBpbiB2ZWMyIHV2ICkgewoJY29uc3QgaGlnaHAgZmxvYXQgYSA9IDEyLjk4OTgsIGIgPSA3OC4yMzMsIGMgPSA0Mzc1OC41NDUzOwoJaGlnaHAgZmxvYXQgZHQgPSBkb3QoIHV2Lnh5LCB2ZWMyKCBhLGIgKSApLCBzbiA9IG1vZCggZHQsIFBJICk7CglyZXR1cm4gZnJhY3QoIHNpbiggc24gKSAqIGMgKTsKfQojaWZkZWYgSElHSF9QUkVDSVNJT04KCWZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHsgcmV0dXJuIGxlbmd0aCggdiApOyB9CiNlbHNlCglmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7CgkJZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4MyggYWJzKCB2ICkgKTsKCQlyZXR1cm4gbGVuZ3RoKCB2IC8gbWF4Q29tcG9uZW50ICkgKiBtYXhDb21wb25lbnQ7Cgl9CiNlbmRpZgpzdHJ1Y3QgSW5jaWRlbnRMaWdodCB7Cgl2ZWMzIGNvbG9yOwoJdmVjMyBkaXJlY3Rpb247Cglib29sIHZpc2libGU7Cn07CnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7Cgl2ZWMzIGRpcmVjdERpZmZ1c2U7Cgl2ZWMzIGRpcmVjdFNwZWN1bGFyOwoJdmVjMyBpbmRpcmVjdERpZmZ1c2U7Cgl2ZWMzIGluZGlyZWN0U3BlY3VsYXI7Cn07CnN0cnVjdCBHZW9tZXRyaWNDb250ZXh0IHsKCXZlYzMgcG9zaXRpb247Cgl2ZWMzIG5vcm1hbDsKCXZlYzMgdmlld0RpcjsKI2lmZGVmIFVTRV9DTEVBUkNPQVQKCXZlYzMgY2xlYXJjb2F0Tm9ybWFsOwojZW5kaWYKfTsKdmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHsKCXJldHVybiBub3JtYWxpemUoICggbWF0cml4ICogdmVjNCggZGlyLCAwLjAgKSApLnh5eiApOwp9CnZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkgewoJcmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBkaXIsIDAuMCApICogbWF0cml4ICkueHl6ICk7Cn0KbWF0MyB0cmFuc3Bvc2VNYXQzKCBjb25zdCBpbiBtYXQzIG0gKSB7CgltYXQzIHRtcDsKCXRtcFsgMCBdID0gdmVjMyggbVsgMCBdLngsIG1bIDEgXS54LCBtWyAyIF0ueCApOwoJdG1wWyAxIF0gPSB2ZWMzKCBtWyAwIF0ueSwgbVsgMSBdLnksIG1bIDIgXS55ICk7Cgl0bXBbIDIgXSA9IHZlYzMoIG1bIDAgXS56LCBtWyAxIF0ueiwgbVsgMiBdLnogKTsKCXJldHVybiB0bXA7Cn0KZmxvYXQgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsKCXZlYzMgd2VpZ2h0cyA9IHZlYzMoIDAuMjEyNiwgMC43MTUyLCAwLjA3MjIgKTsKCXJldHVybiBkb3QoIHdlaWdodHMsIGNvbG9yLnJnYiApOwp9CmJvb2wgaXNQZXJzcGVjdGl2ZU1hdHJpeCggbWF0NCBtICkgewoJcmV0dXJuIG1bIDIgXVsgMyBdID09IC0gMS4wOwp9CnZlYzIgZXF1aXJlY3RVdiggaW4gdmVjMyBkaXIgKSB7CglmbG9hdCB1ID0gYXRhbiggZGlyLnosIGRpci54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTsKCWZsb2F0IHYgPSBhc2luKCBjbGFtcCggZGlyLnksIC0gMS4wLCAxLjAgKSApICogUkVDSVBST0NBTF9QSSArIDAuNTsKCXJldHVybiB2ZWMyKCB1LCB2ICk7Cn1gLHJWdD1gI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVfVVYKCSNkZWZpbmUgY3ViZVVWX21heE1pcExldmVsIDguMAoJI2RlZmluZSBjdWJlVVZfbWluTWlwTGV2ZWwgNC4wCgkjZGVmaW5lIGN1YmVVVl9tYXhUaWxlU2l6ZSAyNTYuMAoJI2RlZmluZSBjdWJlVVZfbWluVGlsZVNpemUgMTYuMAoJZmxvYXQgZ2V0RmFjZSggdmVjMyBkaXJlY3Rpb24gKSB7CgkJdmVjMyBhYnNEaXJlY3Rpb24gPSBhYnMoIGRpcmVjdGlvbiApOwoJCWZsb2F0IGZhY2UgPSAtIDEuMDsKCQlpZiAoIGFic0RpcmVjdGlvbi54ID4gYWJzRGlyZWN0aW9uLnogKSB7CgkJCWlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueSApCgkJCQlmYWNlID0gZGlyZWN0aW9uLnggPiAwLjAgPyAwLjAgOiAzLjA7CgkJCWVsc2UKCQkJCWZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDsKCQl9IGVsc2UgewoJCQlpZiAoIGFic0RpcmVjdGlvbi56ID4gYWJzRGlyZWN0aW9uLnkgKQoJCQkJZmFjZSA9IGRpcmVjdGlvbi56ID4gMC4wID8gMi4wIDogNS4wOwoJCQllbHNlCgkJCQlmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7CgkJfQoJCXJldHVybiBmYWNlOwoJfQoJdmVjMiBnZXRVViggdmVjMyBkaXJlY3Rpb24sIGZsb2F0IGZhY2UgKSB7CgkJdmVjMiB1djsKCQlpZiAoIGZhY2UgPT0gMC4wICkgewoJCQl1diA9IHZlYzIoIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApOwoJCX0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkgewoJCQl1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIC0gZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTsKCQl9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHsKCQkJdXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApOwoJCX0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkgewoJCQl1diA9IHZlYzIoIC0gZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7CgkJfSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7CgkJCXV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnogKSAvIGFicyggZGlyZWN0aW9uLnkgKTsKCQl9IGVsc2UgewoJCQl1diA9IHZlYzIoIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApOwoJCX0KCQlyZXR1cm4gMC41ICogKCB1diArIDEuMCApOwoJfQoJdmVjMyBiaWxpbmVhckN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBkaXJlY3Rpb24sIGZsb2F0IG1pcEludCApIHsKCQlmbG9hdCBmYWNlID0gZ2V0RmFjZSggZGlyZWN0aW9uICk7CgkJZmxvYXQgZmlsdGVySW50ID0gbWF4KCBjdWJlVVZfbWluTWlwTGV2ZWwgLSBtaXBJbnQsIDAuMCApOwoJCW1pcEludCA9IG1heCggbWlwSW50LCBjdWJlVVZfbWluTWlwTGV2ZWwgKTsKCQlmbG9hdCBmYWNlU2l6ZSA9IGV4cDIoIG1pcEludCApOwoJCWZsb2F0IHRleGVsU2l6ZSA9IDEuMCAvICggMy4wICogY3ViZVVWX21heFRpbGVTaXplICk7CgkJdmVjMiB1diA9IGdldFVWKCBkaXJlY3Rpb24sIGZhY2UgKSAqICggZmFjZVNpemUgLSAxLjAgKSArIDAuNTsKCQlpZiAoIGZhY2UgPiAyLjAgKSB7CgkJCXV2LnkgKz0gZmFjZVNpemU7CgkJCWZhY2UgLT0gMy4wOwoJCX0KCQl1di54ICs9IGZhY2UgKiBmYWNlU2l6ZTsKCQlpZiAoIG1pcEludCA8IGN1YmVVVl9tYXhNaXBMZXZlbCApIHsKCQkJdXYueSArPSAyLjAgKiBjdWJlVVZfbWF4VGlsZVNpemU7CgkJfQoJCXV2LnkgKz0gZmlsdGVySW50ICogMi4wICogY3ViZVVWX21pblRpbGVTaXplOwoJCXV2LnggKz0gMy4wICogbWF4KCAwLjAsIGN1YmVVVl9tYXhUaWxlU2l6ZSAtIDIuMCAqIGZhY2VTaXplICk7CgkJdXYgKj0gdGV4ZWxTaXplOwoJCXJldHVybiB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKS5yZ2I7Cgl9CgkjZGVmaW5lIHIwIDEuMAoJI2RlZmluZSB2MCAwLjMzOQoJI2RlZmluZSBtMCAtIDIuMAoJI2RlZmluZSByMSAwLjgKCSNkZWZpbmUgdjEgMC4yNzYKCSNkZWZpbmUgbTEgLSAxLjAKCSNkZWZpbmUgcjQgMC40CgkjZGVmaW5lIHY0IDAuMDQ2CgkjZGVmaW5lIG00IDIuMAoJI2RlZmluZSByNSAwLjMwNQoJI2RlZmluZSB2NSAwLjAxNgoJI2RlZmluZSBtNSAzLjAKCSNkZWZpbmUgcjYgMC4yMQoJI2RlZmluZSB2NiAwLjAwMzgKCSNkZWZpbmUgbTYgNC4wCglmbG9hdCByb3VnaG5lc3NUb01pcCggZmxvYXQgcm91Z2huZXNzICkgewoJCWZsb2F0IG1pcCA9IDAuMDsKCQlpZiAoIHJvdWdobmVzcyA+PSByMSApIHsKCQkJbWlwID0gKCByMCAtIHJvdWdobmVzcyApICogKCBtMSAtIG0wICkgLyAoIHIwIC0gcjEgKSArIG0wOwoJCX0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNCApIHsKCQkJbWlwID0gKCByMSAtIHJvdWdobmVzcyApICogKCBtNCAtIG0xICkgLyAoIHIxIC0gcjQgKSArIG0xOwoJCX0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNSApIHsKCQkJbWlwID0gKCByNCAtIHJvdWdobmVzcyApICogKCBtNSAtIG00ICkgLyAoIHI0IC0gcjUgKSArIG00OwoJCX0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNiApIHsKCQkJbWlwID0gKCByNSAtIHJvdWdobmVzcyApICogKCBtNiAtIG01ICkgLyAoIHI1IC0gcjYgKSArIG01OwoJCX0gZWxzZSB7CgkJCW1pcCA9IC0gMi4wICogbG9nMiggMS4xNiAqIHJvdWdobmVzcyApOwkJfQoJCXJldHVybiBtaXA7Cgl9Cgl2ZWM0IHRleHR1cmVDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgc2FtcGxlRGlyLCBmbG9hdCByb3VnaG5lc3MgKSB7CgkJZmxvYXQgbWlwID0gY2xhbXAoIHJvdWdobmVzc1RvTWlwKCByb3VnaG5lc3MgKSwgbTAsIGN1YmVVVl9tYXhNaXBMZXZlbCApOwoJCWZsb2F0IG1pcEYgPSBmcmFjdCggbWlwICk7CgkJZmxvYXQgbWlwSW50ID0gZmxvb3IoIG1pcCApOwoJCXZlYzMgY29sb3IwID0gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyLCBtaXBJbnQgKTsKCQlpZiAoIG1pcEYgPT0gMC4wICkgewoJCQlyZXR1cm4gdmVjNCggY29sb3IwLCAxLjAgKTsKCQl9IGVsc2UgewoJCQl2ZWMzIGNvbG9yMSA9IGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpciwgbWlwSW50ICsgMS4wICk7CgkJCXJldHVybiB2ZWM0KCBtaXgoIGNvbG9yMCwgY29sb3IxLCBtaXBGICksIDEuMCApOwoJCX0KCX0KI2VuZGlmYCxzVnQ9YHZlYzMgdHJhbnNmb3JtZWROb3JtYWwgPSBvYmplY3ROb3JtYWw7CiNpZmRlZiBVU0VfSU5TVEFOQ0lORwoJbWF0MyBtID0gbWF0MyggaW5zdGFuY2VNYXRyaXggKTsKCXRyYW5zZm9ybWVkTm9ybWFsIC89IHZlYzMoIGRvdCggbVsgMCBdLCBtWyAwIF0gKSwgZG90KCBtWyAxIF0sIG1bIDEgXSApLCBkb3QoIG1bIDIgXSwgbVsgMiBdICkgKTsKCXRyYW5zZm9ybWVkTm9ybWFsID0gbSAqIHRyYW5zZm9ybWVkTm9ybWFsOwojZW5kaWYKdHJhbnNmb3JtZWROb3JtYWwgPSBub3JtYWxNYXRyaXggKiB0cmFuc2Zvcm1lZE5vcm1hbDsKI2lmZGVmIEZMSVBfU0lERUQKCXRyYW5zZm9ybWVkTm9ybWFsID0gLSB0cmFuc2Zvcm1lZE5vcm1hbDsKI2VuZGlmCiNpZmRlZiBVU0VfVEFOR0VOVAoJdmVjMyB0cmFuc2Zvcm1lZFRhbmdlbnQgPSAoIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6OwoJI2lmZGVmIEZMSVBfU0lERUQKCQl0cmFuc2Zvcm1lZFRhbmdlbnQgPSAtIHRyYW5zZm9ybWVkVGFuZ2VudDsKCSNlbmRpZgojZW5kaWZgLGxWdD1gI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDsKCXVuaWZvcm0gZmxvYXQgZGlzcGxhY2VtZW50U2NhbGU7Cgl1bmlmb3JtIGZsb2F0IGRpc3BsYWNlbWVudEJpYXM7CiNlbmRpZmAsY1Z0PWAjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUAoJdHJhbnNmb3JtZWQgKz0gbm9ybWFsaXplKCBvYmplY3ROb3JtYWwgKSAqICggdGV4dHVyZTJEKCBkaXNwbGFjZW1lbnRNYXAsIHZVdiApLnggKiBkaXNwbGFjZW1lbnRTY2FsZSArIGRpc3BsYWNlbWVudEJpYXMgKTsKI2VuZGlmYCxtVnQ9YCNpZmRlZiBVU0VfRU1JU1NJVkVNQVAKCXZlYzQgZW1pc3NpdmVDb2xvciA9IHRleHR1cmUyRCggZW1pc3NpdmVNYXAsIHZVdiApOwoJdG90YWxFbWlzc2l2ZVJhZGlhbmNlICo9IGVtaXNzaXZlQ29sb3IucmdiOwojZW5kaWZgLGZWdD1gI2lmZGVmIFVTRV9FTUlTU0lWRU1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgZW1pc3NpdmVNYXA7CiNlbmRpZmAscFZ0PSJnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTsiLGRWdD1gdmVjNCBMaW5lYXJUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHsKCXJldHVybiB2YWx1ZTsKfQp2ZWM0IExpbmVhclRvc1JHQiggaW4gdmVjNCB2YWx1ZSApIHsKCXJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCAwLjQxNjY2ICkgKSAqIDEuMDU1IC0gdmVjMyggMC4wNTUgKSwgdmFsdWUucmdiICogMTIuOTIsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHZhbHVlLnJnYiwgdmVjMyggMC4wMDMxMzA4ICkgKSApICksIHZhbHVlLmEgKTsKfWAsZ1Z0PWAjaWZkZWYgVVNFX0VOVk1BUAoJI2lmZGVmIEVOVl9XT1JMRFBPUwoJCXZlYzMgY2FtZXJhVG9GcmFnOwoJCWlmICggaXNPcnRob2dyYXBoaWMgKSB7CgkJCWNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7CgkJfSBlbHNlIHsKCQkJY2FtZXJhVG9GcmFnID0gbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7CgkJfQoJCXZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTsKCQkjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTgoJCQl2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsICk7CgkJI2Vsc2UKCQkJdmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7CgkJI2VuZGlmCgkjZWxzZQoJCXZlYzMgcmVmbGVjdFZlYyA9IHZSZWZsZWN0OwoJI2VuZGlmCgkjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRQoJCXZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICkgKTsKCSNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKQoJCXZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIDAuMCApOwoJI2Vsc2UKCQl2ZWM0IGVudkNvbG9yID0gdmVjNCggMC4wICk7CgkjZW5kaWYKCSNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFkKCQlvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7CgkjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfTUlYICkKCQlvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTsKCSNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19BREQgKQoJCW91dGdvaW5nTGlnaHQgKz0gZW52Q29sb3IueHl6ICogc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eTsKCSNlbmRpZgojZW5kaWZgLHVWdD1gI2lmZGVmIFVTRV9FTlZNQVAKCXVuaWZvcm0gZmxvYXQgZW52TWFwSW50ZW5zaXR5OwoJdW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwOwoJI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkUKCQl1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDsKCSNlbHNlCgkJdW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwOwoJI2VuZGlmCgkKI2VuZGlmYCxoVnQ9YCNpZmRlZiBVU0VfRU5WTUFQCgl1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTsKCSNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBQSE9ORyApCgkJI2RlZmluZSBFTlZfV09STERQT1MKCSNlbmRpZgoJI2lmZGVmIEVOVl9XT1JMRFBPUwoJCXZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjsKCQl1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbzsKCSNlbHNlCgkJdmFyeWluZyB2ZWMzIHZSZWZsZWN0OwoJI2VuZGlmCiNlbmRpZmAsX1Z0PWAjaWZkZWYgVVNFX0VOVk1BUAoJI2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8ZGVmaW5lZCggUEhPTkcgKQoJCSNkZWZpbmUgRU5WX1dPUkxEUE9TCgkjZW5kaWYKCSNpZmRlZiBFTlZfV09STERQT1MKCQkKCQl2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CgkjZWxzZQoJCXZhcnlpbmcgdmVjMyB2UmVmbGVjdDsKCQl1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbzsKCSNlbmRpZgojZW5kaWZgLENWdD1gI2lmZGVmIFVTRV9FTlZNQVAKCSNpZmRlZiBFTlZfV09STERQT1MKCQl2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6OwoJI2Vsc2UKCQl2ZWMzIGNhbWVyYVRvVmVydGV4OwoJCWlmICggaXNPcnRob2dyYXBoaWMgKSB7CgkJCWNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTsKCQl9IGVsc2UgewoJCQljYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggd29ybGRQb3NpdGlvbi54eXogLSBjYW1lcmFQb3NpdGlvbiApOwoJCX0KCQl2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTsKCQkjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTgoJCQl2UmVmbGVjdCA9IHJlZmxlY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCApOwoJCSNlbHNlCgkJCXZSZWZsZWN0ID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTsKCQkjZW5kaWYKCSNlbmRpZgojZW5kaWZgLE1WdD1gI2lmZGVmIFVTRV9GT0cKCXZGb2dEZXB0aCA9IC0gbXZQb3NpdGlvbi56OwojZW5kaWZgLGJWdD1gI2lmZGVmIFVTRV9GT0cKCXZhcnlpbmcgZmxvYXQgdkZvZ0RlcHRoOwojZW5kaWZgLE9WdD1gI2lmZGVmIFVTRV9GT0cKCSNpZmRlZiBGT0dfRVhQMgoJCWZsb2F0IGZvZ0ZhY3RvciA9IDEuMCAtIGV4cCggLSBmb2dEZW5zaXR5ICogZm9nRGVuc2l0eSAqIHZGb2dEZXB0aCAqIHZGb2dEZXB0aCApOwoJI2Vsc2UKCQlmbG9hdCBmb2dGYWN0b3IgPSBzbW9vdGhzdGVwKCBmb2dOZWFyLCBmb2dGYXIsIHZGb2dEZXB0aCApOwoJI2VuZGlmCglnbF9GcmFnQ29sb3IucmdiID0gbWl4KCBnbF9GcmFnQ29sb3IucmdiLCBmb2dDb2xvciwgZm9nRmFjdG9yICk7CiNlbmRpZmAsUFZ0PWAjaWZkZWYgVVNFX0ZPRwoJdW5pZm9ybSB2ZWMzIGZvZ0NvbG9yOwoJdmFyeWluZyBmbG9hdCB2Rm9nRGVwdGg7CgkjaWZkZWYgRk9HX0VYUDIKCQl1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7CgkjZWxzZQoJCXVuaWZvcm0gZmxvYXQgZm9nTmVhcjsKCQl1bmlmb3JtIGZsb2F0IGZvZ0ZhcjsKCSNlbmRpZgojZW5kaWZgLHlWdD1gI2lmZGVmIFVTRV9HUkFESUVOVE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgZ3JhZGllbnRNYXA7CiNlbmRpZgp2ZWMzIGdldEdyYWRpZW50SXJyYWRpYW5jZSggdmVjMyBub3JtYWwsIHZlYzMgbGlnaHREaXJlY3Rpb24gKSB7CglmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBsaWdodERpcmVjdGlvbiApOwoJdmVjMiBjb29yZCA9IHZlYzIoIGRvdE5MICogMC41ICsgMC41LCAwLjAgKTsKCSNpZmRlZiBVU0VfR1JBRElFTlRNQVAKCQlyZXR1cm4gdmVjMyggdGV4dHVyZTJEKCBncmFkaWVudE1hcCwgY29vcmQgKS5yICk7CgkjZWxzZQoJCXJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7CgkjZW5kaWYKfWAseFZ0PWAjaWZkZWYgVVNFX0xJR0hUTUFQCgl2ZWM0IGxpZ2h0TWFwVGV4ZWwgPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7Cgl2ZWMzIGxpZ2h0TWFwSXJyYWRpYW5jZSA9IGxpZ2h0TWFwVGV4ZWwucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7CgkjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMKCQlsaWdodE1hcElycmFkaWFuY2UgKj0gUEk7CgkjZW5kaWYKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBsaWdodE1hcElycmFkaWFuY2U7CiNlbmRpZmAsdlZ0PWAjaWZkZWYgVVNFX0xJR0hUTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBsaWdodE1hcDsKCXVuaWZvcm0gZmxvYXQgbGlnaHRNYXBJbnRlbnNpdHk7CiNlbmRpZmAsd1Z0PWB2ZWMzIGRpZmZ1c2UgPSB2ZWMzKCAxLjAgKTsKR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTsKZ2VvbWV0cnkucG9zaXRpb24gPSBtdlBvc2l0aW9uLnh5ejsKZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApOwpnZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTsKR2VvbWV0cmljQ29udGV4dCBiYWNrR2VvbWV0cnk7CmJhY2tHZW9tZXRyeS5wb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uOwpiYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDsKYmFja0dlb21ldHJ5LnZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyOwp2TGlnaHRGcm9udCA9IHZlYzMoIDAuMCApOwp2SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApOwojaWZkZWYgRE9VQkxFX1NJREVECgl2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7Cgl2SW5kaXJlY3RCYWNrID0gdmVjMyggMC4wICk7CiNlbmRpZgpJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0OwpmbG9hdCBkb3ROTDsKdmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CnZJbmRpcmVjdEZyb250ICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7CnZJbmRpcmVjdEZyb250ICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeS5ub3JtYWwgKTsKI2lmZGVmIERPVUJMRV9TSURFRAoJdkluZGlyZWN0QmFjayArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApOwoJdkluZGlyZWN0QmFjayArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgYmFja0dlb21ldHJ5Lm5vcm1hbCApOwojZW5kaWYKI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkgewoJCWdldFBvaW50TGlnaHRJbmZvKCBwb2ludExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTsKCQlkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTsKCQlkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBkaXJlY3RMaWdodC5jb2xvcjsKCQl2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTsKCQkjaWZkZWYgRE9VQkxFX1NJREVECgkJCXZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC0gZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTsKCQkjZW5kaWYKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCiNlbmRpZgojaWYgTlVNX1NQT1RfTElHSFRTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkgewoJCWdldFNwb3RMaWdodEluZm8oIHNwb3RMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7CgkJZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7CgkJZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gZGlyZWN0TGlnaHQuY29sb3I7CgkJdkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CgkJI2lmZGVmIERPVUJMRV9TSURFRAoJCQl2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7CgkJI2VuZGlmCgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmIE5VTV9ESVJfTElHSFRTID4gMAoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7CgkJZ2V0RGlyZWN0aW9uYWxMaWdodEluZm8oIGRpcmVjdGlvbmFsTGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApOwoJCWRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApOwoJCWRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IGRpcmVjdExpZ2h0LmNvbG9yOwoJCXZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlOwoJCSNpZmRlZiBET1VCTEVfU0lERUQKCQkJdkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLSBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlOwoJCSNlbmRpZgoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmCiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7CgkJdkluZGlyZWN0RnJvbnQgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBnZW9tZXRyeS5ub3JtYWwgKTsKCQkjaWZkZWYgRE9VQkxFX1NJREVECgkJCXZJbmRpcmVjdEJhY2sgKz0gZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggaGVtaXNwaGVyZUxpZ2h0c1sgaSBdLCBiYWNrR2VvbWV0cnkubm9ybWFsICk7CgkJI2VuZGlmCgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWZgLFNWdD1gdW5pZm9ybSBib29sIHJlY2VpdmVTaGFkb3c7CnVuaWZvcm0gdmVjMyBhbWJpZW50TGlnaHRDb2xvcjsKdW5pZm9ybSB2ZWMzIGxpZ2h0UHJvYmVbIDkgXTsKdmVjMyBzaEdldElycmFkaWFuY2VBdCggaW4gdmVjMyBub3JtYWwsIGluIHZlYzMgc2hDb2VmZmljaWVudHNbIDkgXSApIHsKCWZsb2F0IHggPSBub3JtYWwueCwgeSA9IG5vcm1hbC55LCB6ID0gbm9ybWFsLno7Cgl2ZWMzIHJlc3VsdCA9IHNoQ29lZmZpY2llbnRzWyAwIF0gKiAwLjg4NjIyNzsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMSBdICogMi4wICogMC41MTE2NjQgKiB5OwoJcmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAyIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHo7CglyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDMgXSAqIDIuMCAqIDAuNTExNjY0ICogeDsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNCBdICogMi4wICogMC40MjkwNDMgKiB4ICogeTsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNSBdICogMi4wICogMC40MjkwNDMgKiB5ICogejsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNiBdICogKCAwLjc0MzEyNSAqIHogKiB6IC0gMC4yNDc3MDggKTsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNyBdICogMi4wICogMC40MjkwNDMgKiB4ICogejsKCXJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgOCBdICogMC40MjkwNDMgKiAoIHggKiB4IC0geSAqIHkgKTsKCXJldHVybiByZXN1bHQ7Cn0KdmVjMyBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBsaWdodFByb2JlWyA5IF0sIGNvbnN0IGluIHZlYzMgbm9ybWFsICkgewoJdmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApOwoJdmVjMyBpcnJhZGlhbmNlID0gc2hHZXRJcnJhZGlhbmNlQXQoIHdvcmxkTm9ybWFsLCBsaWdodFByb2JlICk7CglyZXR1cm4gaXJyYWRpYW5jZTsKfQp2ZWMzIGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgYW1iaWVudExpZ2h0Q29sb3IgKSB7Cgl2ZWMzIGlycmFkaWFuY2UgPSBhbWJpZW50TGlnaHRDb2xvcjsKCXJldHVybiBpcnJhZGlhbmNlOwp9CmZsb2F0IGdldERpc3RhbmNlQXR0ZW51YXRpb24oIGNvbnN0IGluIGZsb2F0IGxpZ2h0RGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGN1dG9mZkRpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBkZWNheUV4cG9uZW50ICkgewoJI2lmIGRlZmluZWQgKCBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTICkKCQlmbG9hdCBkaXN0YW5jZUZhbGxvZmYgPSAxLjAgLyBtYXgoIHBvdyggbGlnaHREaXN0YW5jZSwgZGVjYXlFeHBvbmVudCApLCAwLjAxICk7CgkJaWYgKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCApIHsKCQkJZGlzdGFuY2VGYWxsb2ZmICo9IHBvdzIoIHNhdHVyYXRlKCAxLjAgLSBwb3c0KCBsaWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKSApICk7CgkJfQoJCXJldHVybiBkaXN0YW5jZUZhbGxvZmY7CgkjZWxzZQoJCWlmICggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgJiYgZGVjYXlFeHBvbmVudCA+IDAuMCApIHsKCQkJcmV0dXJuIHBvdyggc2F0dXJhdGUoIC0gbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICsgMS4wICksIGRlY2F5RXhwb25lbnQgKTsKCQl9CgkJcmV0dXJuIDEuMDsKCSNlbmRpZgp9CmZsb2F0IGdldFNwb3RBdHRlbnVhdGlvbiggY29uc3QgaW4gZmxvYXQgY29uZUNvc2luZSwgY29uc3QgaW4gZmxvYXQgcGVudW1icmFDb3NpbmUsIGNvbnN0IGluIGZsb2F0IGFuZ2xlQ29zaW5lICkgewoJcmV0dXJuIHNtb290aHN0ZXAoIGNvbmVDb3NpbmUsIHBlbnVtYnJhQ29zaW5lLCBhbmdsZUNvc2luZSApOwp9CiNpZiBOVU1fRElSX0xJR0hUUyA+IDAKCXN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0IHsKCQl2ZWMzIGRpcmVjdGlvbjsKCQl2ZWMzIGNvbG9yOwoJfTsKCXVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0c1sgTlVNX0RJUl9MSUdIVFMgXTsKCXZvaWQgZ2V0RGlyZWN0aW9uYWxMaWdodEluZm8oIGNvbnN0IGluIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgbGlnaHQgKSB7CgkJbGlnaHQuY29sb3IgPSBkaXJlY3Rpb25hbExpZ2h0LmNvbG9yOwoJCWxpZ2h0LmRpcmVjdGlvbiA9IGRpcmVjdGlvbmFsTGlnaHQuZGlyZWN0aW9uOwoJCWxpZ2h0LnZpc2libGUgPSB0cnVlOwoJfQojZW5kaWYKI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwCglzdHJ1Y3QgUG9pbnRMaWdodCB7CgkJdmVjMyBwb3NpdGlvbjsKCQl2ZWMzIGNvbG9yOwoJCWZsb2F0IGRpc3RhbmNlOwoJCWZsb2F0IGRlY2F5OwoJfTsKCXVuaWZvcm0gUG9pbnRMaWdodCBwb2ludExpZ2h0c1sgTlVNX1BPSU5UX0xJR0hUUyBdOwoJdm9pZCBnZXRQb2ludExpZ2h0SW5mbyggY29uc3QgaW4gUG9pbnRMaWdodCBwb2ludExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBsaWdodCApIHsKCQl2ZWMzIGxWZWN0b3IgPSBwb2ludExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247CgkJbGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7CgkJZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApOwoJCWxpZ2h0LmNvbG9yID0gcG9pbnRMaWdodC5jb2xvcjsKCQlsaWdodC5jb2xvciAqPSBnZXREaXN0YW5jZUF0dGVudWF0aW9uKCBsaWdodERpc3RhbmNlLCBwb2ludExpZ2h0LmRpc3RhbmNlLCBwb2ludExpZ2h0LmRlY2F5ICk7CgkJbGlnaHQudmlzaWJsZSA9ICggbGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTsKCX0KI2VuZGlmCiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwCglzdHJ1Y3QgU3BvdExpZ2h0IHsKCQl2ZWMzIHBvc2l0aW9uOwoJCXZlYzMgZGlyZWN0aW9uOwoJCXZlYzMgY29sb3I7CgkJZmxvYXQgZGlzdGFuY2U7CgkJZmxvYXQgZGVjYXk7CgkJZmxvYXQgY29uZUNvczsKCQlmbG9hdCBwZW51bWJyYUNvczsKCX07Cgl1bmlmb3JtIFNwb3RMaWdodCBzcG90TGlnaHRzWyBOVU1fU1BPVF9MSUdIVFMgXTsKCXZvaWQgZ2V0U3BvdExpZ2h0SW5mbyggY29uc3QgaW4gU3BvdExpZ2h0IHNwb3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgbGlnaHQgKSB7CgkJdmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247CgkJbGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7CgkJZmxvYXQgYW5nbGVDb3MgPSBkb3QoIGxpZ2h0LmRpcmVjdGlvbiwgc3BvdExpZ2h0LmRpcmVjdGlvbiApOwoJCWZsb2F0IHNwb3RBdHRlbnVhdGlvbiA9IGdldFNwb3RBdHRlbnVhdGlvbiggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTsKCQlpZiAoIHNwb3RBdHRlbnVhdGlvbiA+IDAuMCApIHsKCQkJZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApOwoJCQlsaWdodC5jb2xvciA9IHNwb3RMaWdodC5jb2xvciAqIHNwb3RBdHRlbnVhdGlvbjsKCQkJbGlnaHQuY29sb3IgKj0gZ2V0RGlzdGFuY2VBdHRlbnVhdGlvbiggbGlnaHREaXN0YW5jZSwgc3BvdExpZ2h0LmRpc3RhbmNlLCBzcG90TGlnaHQuZGVjYXkgKTsKCQkJbGlnaHQudmlzaWJsZSA9ICggbGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTsKCQl9IGVsc2UgewoJCQlsaWdodC5jb2xvciA9IHZlYzMoIDAuMCApOwoJCQlsaWdodC52aXNpYmxlID0gZmFsc2U7CgkJfQoJfQojZW5kaWYKI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMAoJc3RydWN0IFJlY3RBcmVhTGlnaHQgewoJCXZlYzMgY29sb3I7CgkJdmVjMyBwb3NpdGlvbjsKCQl2ZWMzIGhhbGZXaWR0aDsKCQl2ZWMzIGhhbGZIZWlnaHQ7Cgl9OwoJdW5pZm9ybSBzYW1wbGVyMkQgbHRjXzE7CXVuaWZvcm0gc2FtcGxlcjJEIGx0Y18yOwoJdW5pZm9ybSBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHRzWyBOVU1fUkVDVF9BUkVBX0xJR0hUUyBdOwojZW5kaWYKI2lmIE5VTV9IRU1JX0xJR0hUUyA+IDAKCXN0cnVjdCBIZW1pc3BoZXJlTGlnaHQgewoJCXZlYzMgZGlyZWN0aW9uOwoJCXZlYzMgc2t5Q29sb3I7CgkJdmVjMyBncm91bmRDb2xvcjsKCX07Cgl1bmlmb3JtIEhlbWlzcGhlcmVMaWdodCBoZW1pc3BoZXJlTGlnaHRzWyBOVU1fSEVNSV9MSUdIVFMgXTsKCXZlYzMgZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gSGVtaXNwaGVyZUxpZ2h0IGhlbWlMaWdodCwgY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7CgkJZmxvYXQgZG90TkwgPSBkb3QoIG5vcm1hbCwgaGVtaUxpZ2h0LmRpcmVjdGlvbiApOwoJCWZsb2F0IGhlbWlEaWZmdXNlV2VpZ2h0ID0gMC41ICogZG90TkwgKyAwLjU7CgkJdmVjMyBpcnJhZGlhbmNlID0gbWl4KCBoZW1pTGlnaHQuZ3JvdW5kQ29sb3IsIGhlbWlMaWdodC5za3lDb2xvciwgaGVtaURpZmZ1c2VXZWlnaHQgKTsKCQlyZXR1cm4gaXJyYWRpYW5jZTsKCX0KI2VuZGlmYCxSVnQ9YCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkKCSNpZmRlZiBFTlZNQVBfTU9ERV9SRUZSQUNUSU9OCgkJdW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87CgkjZW5kaWYKCXZlYzMgZ2V0SUJMSXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7CgkJI2lmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKQoJCQl2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7CgkJCXZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHdvcmxkTm9ybWFsLCAxLjAgKTsKCQkJcmV0dXJuIFBJICogZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5OwoJCSNlbHNlCgkJCXJldHVybiB2ZWMzKCAwLjAgKTsKCQkjZW5kaWYKCX0KCXZlYzMgZ2V0SUJMUmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHsKCQkjaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApCgkJCXZlYzMgcmVmbGVjdFZlYzsKCQkJI2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT04KCQkJCXJlZmxlY3RWZWMgPSByZWZsZWN0KCAtIHZpZXdEaXIsIG5vcm1hbCApOwoJCQkJcmVmbGVjdFZlYyA9IG5vcm1hbGl6ZSggbWl4KCByZWZsZWN0VmVjLCBub3JtYWwsIHJvdWdobmVzcyAqIHJvdWdobmVzcykgKTsKCQkJI2Vsc2UKCQkJCXJlZmxlY3RWZWMgPSByZWZyYWN0KCAtIHZpZXdEaXIsIG5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7CgkJCSNlbmRpZgoJCQlyZWZsZWN0VmVjID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggcmVmbGVjdFZlYywgdmlld01hdHJpeCApOwoJCQl2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCByb3VnaG5lc3MgKTsKCQkJcmV0dXJuIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTsKCQkjZWxzZQoJCQlyZXR1cm4gdmVjMyggMC4wICk7CgkJI2VuZGlmCgl9CiNlbmRpZmAsRVZ0PWBUb29uTWF0ZXJpYWwgbWF0ZXJpYWw7Cm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7YCxrVnQ9YHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwpzdHJ1Y3QgVG9vbk1hdGVyaWFsIHsKCXZlYzMgZGlmZnVzZUNvbG9yOwp9Owp2b2lkIFJFX0RpcmVjdF9Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkgewoJdmVjMyBpcnJhZGlhbmNlID0gZ2V0R3JhZGllbnRJcnJhZGlhbmNlKCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICogZGlyZWN0TGlnaHQuY29sb3I7CglyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApOwp9CnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1Rvb24oIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTsKfQojZGVmaW5lIFJFX0RpcmVjdAkJCQlSRV9EaXJlY3RfVG9vbgojZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZQkJUkVfSW5kaXJlY3REaWZmdXNlX1Rvb24KI2RlZmluZSBNYXRlcmlhbF9MaWdodFByb2JlTE9EKCBtYXRlcmlhbCApCSgwKWAsTlZ0PWBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWw7Cm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7Cm1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBzcGVjdWxhcjsKbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgPSBzaGluaW5lc3M7Cm1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGggPSBzcGVjdWxhclN0cmVuZ3RoO2AsVFZ0PWB2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKc3RydWN0IEJsaW5uUGhvbmdNYXRlcmlhbCB7Cgl2ZWMzIGRpZmZ1c2VDb2xvcjsKCXZlYzMgc3BlY3VsYXJDb2xvcjsKCWZsb2F0IHNwZWN1bGFyU2hpbmluZXNzOwoJZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDsKfTsKdm9pZCBSRV9EaXJlY3RfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCWZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApOwoJdmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjsKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7CglyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9CbGlublBob25nKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgKSAqIG1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGg7Cn0Kdm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZyggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkgewoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApOwp9CiNkZWZpbmUgUkVfRGlyZWN0CQkJCVJFX0RpcmVjdF9CbGlublBob25nCiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlCQlSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZwojZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsICkJKDApYCxBVnQ9YFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWw7Cm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2IgKiAoIDEuMCAtIG1ldGFsbmVzc0ZhY3RvciApOwp2ZWMzIGR4eSA9IG1heCggYWJzKCBkRmR4KCBnZW9tZXRyeU5vcm1hbCApICksIGFicyggZEZkeSggZ2VvbWV0cnlOb3JtYWwgKSApICk7CmZsb2F0IGdlb21ldHJ5Um91Z2huZXNzID0gbWF4KCBtYXgoIGR4eS54LCBkeHkueSApLCBkeHkueiApOwptYXRlcmlhbC5yb3VnaG5lc3MgPSBtYXgoIHJvdWdobmVzc0ZhY3RvciwgMC4wNTI1ICk7bWF0ZXJpYWwucm91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzOwptYXRlcmlhbC5yb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLnJvdWdobmVzcywgMS4wICk7CiNpZmRlZiBJT1IKCSNpZmRlZiBTUEVDVUxBUgoJCWZsb2F0IHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yID0gc3BlY3VsYXJJbnRlbnNpdHk7CgkJdmVjMyBzcGVjdWxhckNvbG9yRmFjdG9yID0gc3BlY3VsYXJDb2xvcjsKCQkjaWZkZWYgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQCgkJCXNwZWN1bGFySW50ZW5zaXR5RmFjdG9yICo9IHRleHR1cmUyRCggc3BlY3VsYXJJbnRlbnNpdHlNYXAsIHZVdiApLmE7CgkJI2VuZGlmCgkJI2lmZGVmIFVTRV9TUEVDVUxBUkNPTE9STUFQCgkJCXNwZWN1bGFyQ29sb3JGYWN0b3IgKj0gdGV4dHVyZTJEKCBzcGVjdWxhckNvbG9yTWFwLCB2VXYgKS5yZ2I7CgkJI2VuZGlmCgkJbWF0ZXJpYWwuc3BlY3VsYXJGOTAgPSBtaXgoIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yLCAxLjAsIG1ldGFsbmVzc0ZhY3RvciApOwoJI2Vsc2UKCQlmbG9hdCBzcGVjdWxhckludGVuc2l0eUZhY3RvciA9IDEuMDsKCQl2ZWMzIHNwZWN1bGFyQ29sb3JGYWN0b3IgPSB2ZWMzKCAxLjAgKTsKCQltYXRlcmlhbC5zcGVjdWxhckY5MCA9IDEuMDsKCSNlbmRpZgoJbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggbWluKCBwb3cyKCAoIGlvciAtIDEuMCApIC8gKCBpb3IgKyAxLjAgKSApICogc3BlY3VsYXJDb2xvckZhY3RvciwgdmVjMyggMS4wICkgKSAqIHNwZWN1bGFySW50ZW5zaXR5RmFjdG9yLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTsKI2Vsc2UKCW1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgPSBtaXgoIHZlYzMoIDAuMDQgKSwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7CgltYXRlcmlhbC5zcGVjdWxhckY5MCA9IDEuMDsKI2VuZGlmCiNpZmRlZiBVU0VfQ0xFQVJDT0FUCgltYXRlcmlhbC5jbGVhcmNvYXQgPSBjbGVhcmNvYXQ7CgltYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBjbGVhcmNvYXRSb3VnaG5lc3M7CgltYXRlcmlhbC5jbGVhcmNvYXRGMCA9IHZlYzMoIDAuMDQgKTsKCW1hdGVyaWFsLmNsZWFyY29hdEY5MCA9IDEuMDsKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQCgkJbWF0ZXJpYWwuY2xlYXJjb2F0ICo9IHRleHR1cmUyRCggY2xlYXJjb2F0TWFwLCB2VXYgKS54OwoJI2VuZGlmCgkjaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVAKCQltYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRSb3VnaG5lc3NNYXAsIHZVdiApLnk7CgkjZW5kaWYKCW1hdGVyaWFsLmNsZWFyY29hdCA9IHNhdHVyYXRlKCBtYXRlcmlhbC5jbGVhcmNvYXQgKTsJbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWF4KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDAuMDUyNSApOwoJbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzOwoJbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDEuMCApOwojZW5kaWYKI2lmZGVmIFVTRV9TSEVFTgoJbWF0ZXJpYWwuc2hlZW5Db2xvciA9IHNoZWVuQ29sb3I7CgkjaWZkZWYgVVNFX1NIRUVOQ09MT1JNQVAKCQltYXRlcmlhbC5zaGVlbkNvbG9yICo9IHRleHR1cmUyRCggc2hlZW5Db2xvck1hcCwgdlV2ICkucmdiOwoJI2VuZGlmCgltYXRlcmlhbC5zaGVlblJvdWdobmVzcyA9IGNsYW1wKCBzaGVlblJvdWdobmVzcywgMC4wNywgMS4wICk7CgkjaWZkZWYgVVNFX1NIRUVOUk9VR0hORVNTTUFQCgkJbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3MgKj0gdGV4dHVyZTJEKCBzaGVlblJvdWdobmVzc01hcCwgdlV2ICkuYTsKCSNlbmRpZgojZW5kaWZgLERWdD1gc3RydWN0IFBoeXNpY2FsTWF0ZXJpYWwgewoJdmVjMyBkaWZmdXNlQ29sb3I7CglmbG9hdCByb3VnaG5lc3M7Cgl2ZWMzIHNwZWN1bGFyQ29sb3I7CglmbG9hdCBzcGVjdWxhckY5MDsKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUCgkJZmxvYXQgY2xlYXJjb2F0OwoJCWZsb2F0IGNsZWFyY29hdFJvdWdobmVzczsKCQl2ZWMzIGNsZWFyY29hdEYwOwoJCWZsb2F0IGNsZWFyY29hdEY5MDsKCSNlbmRpZgoJI2lmZGVmIFVTRV9TSEVFTgoJCXZlYzMgc2hlZW5Db2xvcjsKCQlmbG9hdCBzaGVlblJvdWdobmVzczsKCSNlbmRpZgp9Owp2ZWMzIGNsZWFyY29hdFNwZWN1bGFyID0gdmVjMyggMC4wICk7CnZlYzMgc2hlZW5TcGVjdWxhciA9IHZlYzMoIDAuMCApOwpmbG9hdCBJQkxTaGVlbkJSREYoIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcykgewoJZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApOwoJZmxvYXQgcjIgPSByb3VnaG5lc3MgKiByb3VnaG5lc3M7CglmbG9hdCBhID0gcm91Z2huZXNzIDwgMC4yNSA/IC0zMzkuMiAqIHIyICsgMTYxLjQgKiByb3VnaG5lc3MgLSAyNS45IDogLTguNDggKiByMiArIDE0LjMgKiByb3VnaG5lc3MgLSA5Ljk1OwoJZmxvYXQgYiA9IHJvdWdobmVzcyA8IDAuMjUgPyA0NC4wICogcjIgLSAyMy43ICogcm91Z2huZXNzICsgMy4yNiA6IDEuOTcgKiByMiAtIDMuMjcgKiByb3VnaG5lc3MgKyAwLjcyOwoJZmxvYXQgREcgPSBleHAoIGEgKiBkb3ROViArIGIgKSArICggcm91Z2huZXNzIDwgMC4yNSA/IDAuMCA6IDAuMSAqICggcm91Z2huZXNzIC0gMC4yNSApICk7CglyZXR1cm4gc2F0dXJhdGUoIERHICogUkVDSVBST0NBTF9QSSApOwp9CnZlYzIgREZHQXBwcm94KCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7CglmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7Cgljb25zdCB2ZWM0IGMwID0gdmVjNCggLSAxLCAtIDAuMDI3NSwgLSAwLjU3MiwgMC4wMjIgKTsKCWNvbnN0IHZlYzQgYzEgPSB2ZWM0KCAxLCAwLjA0MjUsIDEuMDQsIC0gMC4wNCApOwoJdmVjNCByID0gcm91Z2huZXNzICogYzAgKyBjMTsKCWZsb2F0IGEwMDQgPSBtaW4oIHIueCAqIHIueCwgZXhwMiggLSA5LjI4ICogZG90TlYgKSApICogci54ICsgci55OwoJdmVjMiBmYWIgPSB2ZWMyKCAtIDEuMDQsIDEuMDQgKSAqIGEwMDQgKyByLnp3OwoJcmV0dXJuIGZhYjsKfQp2ZWMzIEVudmlyb25tZW50QlJERiggY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzcGVjdWxhckY5MCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkgewoJdmVjMiBmYWIgPSBERkdBcHByb3goIG5vcm1hbCwgdmlld0Rpciwgcm91Z2huZXNzICk7CglyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGZhYi54ICsgc3BlY3VsYXJGOTAgKiBmYWIueTsKfQp2b2lkIGNvbXB1dGVNdWx0aXNjYXR0ZXJpbmcoIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgc3BlY3VsYXJGOTAsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgaW5vdXQgdmVjMyBzaW5nbGVTY2F0dGVyLCBpbm91dCB2ZWMzIG11bHRpU2NhdHRlciApIHsKCXZlYzIgZmFiID0gREZHQXBwcm94KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApOwoJdmVjMyBGc3NFc3MgPSBzcGVjdWxhckNvbG9yICogZmFiLnggKyBzcGVjdWxhckY5MCAqIGZhYi55OwoJZmxvYXQgRXNzID0gZmFiLnggKyBmYWIueTsKCWZsb2F0IEVtcyA9IDEuMCAtIEVzczsKCXZlYzMgRmF2ZyA9IHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5Owl2ZWMzIEZtcyA9IEZzc0VzcyAqIEZhdmcgLyAoIDEuMCAtIEVtcyAqIEZhdmcgKTsKCXNpbmdsZVNjYXR0ZXIgKz0gRnNzRXNzOwoJbXVsdGlTY2F0dGVyICs9IEZtcyAqIEVtczsKfQojaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwCgl2b2lkIFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbCggY29uc3QgaW4gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCQl2ZWMzIG5vcm1hbCA9IGdlb21ldHJ5Lm5vcm1hbDsKCQl2ZWMzIHZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyOwoJCXZlYzMgcG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjsKCQl2ZWMzIGxpZ2h0UG9zID0gcmVjdEFyZWFMaWdodC5wb3NpdGlvbjsKCQl2ZWMzIGhhbGZXaWR0aCA9IHJlY3RBcmVhTGlnaHQuaGFsZldpZHRoOwoJCXZlYzMgaGFsZkhlaWdodCA9IHJlY3RBcmVhTGlnaHQuaGFsZkhlaWdodDsKCQl2ZWMzIGxpZ2h0Q29sb3IgPSByZWN0QXJlYUxpZ2h0LmNvbG9yOwoJCWZsb2F0IHJvdWdobmVzcyA9IG1hdGVyaWFsLnJvdWdobmVzczsKCQl2ZWMzIHJlY3RDb29yZHNbIDQgXTsKCQlyZWN0Q29vcmRzWyAwIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7CQlyZWN0Q29vcmRzWyAxIF0gPSBsaWdodFBvcyAtIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7CgkJcmVjdENvb3Jkc1sgMiBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0OwoJCXJlY3RDb29yZHNbIDMgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoICsgaGFsZkhlaWdodDsKCQl2ZWMyIHV2ID0gTFRDX1V2KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApOwoJCXZlYzQgdDEgPSB0ZXh0dXJlMkQoIGx0Y18xLCB1diApOwoJCXZlYzQgdDIgPSB0ZXh0dXJlMkQoIGx0Y18yLCB1diApOwoJCW1hdDMgbUludiA9IG1hdDMoCgkJCXZlYzMoIHQxLngsIDAsIHQxLnkgKSwKCQkJdmVjMyggICAgMCwgMSwgICAgMCApLAoJCQl2ZWMzKCB0MS56LCAwLCB0MS53ICkKCQkpOwoJCXZlYzMgZnJlc25lbCA9ICggbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciAqIHQyLnggKyAoIHZlYzMoIDEuMCApIC0gbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciApICogdDIueSApOwoJCXJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGxpZ2h0Q29sb3IgKiBmcmVzbmVsICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtSW52LCByZWN0Q29vcmRzICk7CgkJcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBsaWdodENvbG9yICogbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtYXQzKCAxLjAgKSwgcmVjdENvb3JkcyApOwoJfQojZW5kaWYKdm9pZCBSRV9EaXJlY3RfUGh5c2ljYWwoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkgewoJZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7Cgl2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yOwoJI2lmZGVmIFVTRV9DTEVBUkNPQVQKCQlmbG9hdCBkb3ROTGNjID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApOwoJCXZlYzMgY2NJcnJhZGlhbmNlID0gZG90TkxjYyAqIGRpcmVjdExpZ2h0LmNvbG9yOwoJCWNsZWFyY29hdFNwZWN1bGFyICs9IGNjSXJyYWRpYW5jZSAqIEJSREZfR0dYKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwuY2xlYXJjb2F0RjAsIG1hdGVyaWFsLmNsZWFyY29hdEY5MCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7CgkjZW5kaWYKCSNpZmRlZiBVU0VfU0hFRU4KCQlzaGVlblNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBCUkRGX1NoZWVuKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc2hlZW5Db2xvciwgbWF0ZXJpYWwuc2hlZW5Sb3VnaG5lc3MgKTsKCSNlbmRpZgoJcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZSAqIEJSREZfR0dYKCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJGOTAsIG1hdGVyaWFsLnJvdWdobmVzcyApOwoJcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTsKfQp2b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHsKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTsKfQp2b2lkIFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBjbGVhcmNvYXRSYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQpIHsKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUCgkJY2xlYXJjb2F0U3BlY3VsYXIgKz0gY2xlYXJjb2F0UmFkaWFuY2UgKiBFbnZpcm9ubWVudEJSREYoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciwgbWF0ZXJpYWwuY2xlYXJjb2F0RjAsIG1hdGVyaWFsLmNsZWFyY29hdEY5MCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7CgkjZW5kaWYKCSNpZmRlZiBVU0VfU0hFRU4KCQlzaGVlblNwZWN1bGFyICs9IGlycmFkaWFuY2UgKiBtYXRlcmlhbC5zaGVlbkNvbG9yICogSUJMU2hlZW5CUkRGKCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIsIG1hdGVyaWFsLnNoZWVuUm91Z2huZXNzICk7CgkjZW5kaWYKCXZlYzMgc2luZ2xlU2NhdHRlcmluZyA9IHZlYzMoIDAuMCApOwoJdmVjMyBtdWx0aVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTsKCXZlYzMgY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlID0gaXJyYWRpYW5jZSAqIFJFQ0lQUk9DQUxfUEk7Cgljb21wdXRlTXVsdGlzY2F0dGVyaW5nKCBnZW9tZXRyeS5ub3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyRjkwLCBtYXRlcmlhbC5yb3VnaG5lc3MsIHNpbmdsZVNjYXR0ZXJpbmcsIG11bHRpU2NhdHRlcmluZyApOwoJdmVjMyBkaWZmdXNlID0gbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogKCAxLjAgLSAoIHNpbmdsZVNjYXR0ZXJpbmcgKyBtdWx0aVNjYXR0ZXJpbmcgKSApOwoJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSByYWRpYW5jZSAqIHNpbmdsZVNjYXR0ZXJpbmc7CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IG11bHRpU2NhdHRlcmluZyAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTsKCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBkaWZmdXNlICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlOwp9CiNkZWZpbmUgUkVfRGlyZWN0CQkJCVJFX0RpcmVjdF9QaHlzaWNhbAojZGVmaW5lIFJFX0RpcmVjdF9SZWN0QXJlYQkJUkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsCiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlCQlSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWwKI2RlZmluZSBSRV9JbmRpcmVjdFNwZWN1bGFyCQlSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsCmZsb2F0IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IGFtYmllbnRPY2NsdXNpb24sIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHsKCXJldHVybiBzYXR1cmF0ZSggcG93KCBkb3ROViArIGFtYmllbnRPY2NsdXNpb24sIGV4cDIoIC0gMTYuMCAqIHJvdWdobmVzcyAtIDEuMCApICkgLSAxLjAgKyBhbWJpZW50T2NjbHVzaW9uICk7Cn1gLElWdD1gCkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7Cmdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uOwpnZW9tZXRyeS5ub3JtYWwgPSBub3JtYWw7Cmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTsKI2lmZGVmIFVTRV9DTEVBUkNPQVQKCWdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCA9IGNsZWFyY29hdE5vcm1hbDsKI2VuZGlmCkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7CiNpZiAoIE5VTV9QT0lOVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0ICkKCVBvaW50TGlnaHQgcG9pbnRMaWdodDsKCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwCglQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3c7CgkjZW5kaWYKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7CgkJcG9pbnRMaWdodCA9IHBvaW50TGlnaHRzWyBpIF07CgkJZ2V0UG9pbnRMaWdodEluZm8oIHBvaW50TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApOwoJCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgKQoJCXBvaW50TGlnaHRTaGFkb3cgPSBwb2ludExpZ2h0U2hhZG93c1sgaSBdOwoJCWRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYUZhciApIDogMS4wOwoJCSNlbmRpZgoJCVJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCiNlbmRpZgojaWYgKCBOVU1fU1BPVF9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0ICkKCVNwb3RMaWdodCBzcG90TGlnaHQ7CgkjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwCglTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93OwoJI2VuZGlmCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7CgkJc3BvdExpZ2h0ID0gc3BvdExpZ2h0c1sgaSBdOwoJCWdldFNwb3RMaWdodEluZm8oIHNwb3RMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7CgkJI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTICkKCQlzcG90TGlnaHRTaGFkb3cgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07CgkJZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDsKCQkjZW5kaWYKCQlSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmICggTlVNX0RJUl9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0ICkKCURpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDsKCSNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMAoJRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93OwoJI2VuZGlmCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHsKCQlkaXJlY3Rpb25hbExpZ2h0ID0gZGlyZWN0aW9uYWxMaWdodHNbIGkgXTsKCQlnZXREaXJlY3Rpb25hbExpZ2h0SW5mbyggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7CgkJI2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fRElSX0xJR0hUX1NIQURPV1MgKQoJCWRpcmVjdGlvbmFsTGlnaHRTaGFkb3cgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdOwoJCWRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDsKCQkjZW5kaWYKCQlSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAojZW5kaWYKI2lmICggTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwICkgJiYgZGVmaW5lZCggUkVfRGlyZWN0X1JlY3RBcmVhICkKCVJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodDsKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9SRUNUX0FSRUFfTElHSFRTOyBpICsrICkgewoJCXJlY3RBcmVhTGlnaHQgPSByZWN0QXJlYUxpZ2h0c1sgaSBdOwoJCVJFX0RpcmVjdF9SZWN0QXJlYSggcmVjdEFyZWFMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKI2VuZGlmCiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKQoJdmVjMyBpYmxJcnJhZGlhbmNlID0gdmVjMyggMC4wICk7Cgl2ZWMzIGlycmFkaWFuY2UgPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApOwoJaXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkubm9ybWFsICk7CgkjaWYgKCBOVU1fSEVNSV9MSUdIVFMgPiAwICkKCQkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0CgkJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkgewoJCQlpcnJhZGlhbmNlICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkubm9ybWFsICk7CgkJfQoJCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKI2VuZGlmCiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyICkKCXZlYzMgcmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTsKCXZlYzMgY2xlYXJjb2F0UmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTsKI2VuZGlmYCx6VnQ9YCNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKQoJI2lmZGVmIFVTRV9MSUdIVE1BUAoJCXZlYzQgbGlnaHRNYXBUZXhlbCA9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTsKCQl2ZWMzIGxpZ2h0TWFwSXJyYWRpYW5jZSA9IGxpZ2h0TWFwVGV4ZWwucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7CgkJI2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTCgkJCWxpZ2h0TWFwSXJyYWRpYW5jZSAqPSBQSTsKCQkjZW5kaWYKCQlpcnJhZGlhbmNlICs9IGxpZ2h0TWFwSXJyYWRpYW5jZTsKCSNlbmRpZgoJI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBTVEFOREFSRCApICYmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKQoJCWlibElycmFkaWFuY2UgKz0gZ2V0SUJMSXJyYWRpYW5jZSggZ2VvbWV0cnkubm9ybWFsICk7CgkjZW5kaWYKI2VuZGlmCiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApCglyYWRpYW5jZSArPSBnZXRJQkxSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5yb3VnaG5lc3MgKTsKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUCgkJY2xlYXJjb2F0UmFkaWFuY2UgKz0gZ2V0SUJMUmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7CgkjZW5kaWYKI2VuZGlmYCxIVnQ9YCNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKQoJUkVfSW5kaXJlY3REaWZmdXNlKCBpcnJhZGlhbmNlLCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7CiNlbmRpZgojaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApCglSRV9JbmRpcmVjdFNwZWN1bGFyKCByYWRpYW5jZSwgaWJsSXJyYWRpYW5jZSwgY2xlYXJjb2F0UmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTsKI2VuZGlmYCxGVnQ9YCNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUICkKCWdsX0ZyYWdEZXB0aEVYVCA9IHZJc1BlcnNwZWN0aXZlID09IDAuMCA/IGdsX0ZyYWdDb29yZC56IDogbG9nMiggdkZyYWdEZXB0aCApICogbG9nRGVwdGhCdWZGQyAqIDAuNTsKI2VuZGlmYCxMVnQ9YCNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUICkKCXVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQzsKCXZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDsKCXZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7CiNlbmRpZmAsQlZ0PWAjaWZkZWYgVVNFX0xPR0RFUFRIQlVGCgkjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVAoJCXZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDsKCQl2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlOwoJI2Vsc2UKCQl1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7CgkjZW5kaWYKI2VuZGlmYCxWVnQ9YCNpZmRlZiBVU0VfTE9HREVQVEhCVUYKCSNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUCgkJdkZyYWdEZXB0aCA9IDEuMCArIGdsX1Bvc2l0aW9uLnc7CgkJdklzUGVyc3BlY3RpdmUgPSBmbG9hdCggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICk7CgkjZWxzZQoJCWlmICggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICkgewoJCQlnbF9Qb3NpdGlvbi56ID0gbG9nMiggbWF4KCBFUFNJTE9OLCBnbF9Qb3NpdGlvbi53ICsgMS4wICkgKSAqIGxvZ0RlcHRoQnVmRkMgLSAxLjA7CgkJCWdsX1Bvc2l0aW9uLnogKj0gZ2xfUG9zaXRpb24udzsKCQl9CgkjZW5kaWYKI2VuZGlmYCxqVnQ9YCNpZmRlZiBVU0VfTUFQCgl2ZWM0IHNhbXBsZWREaWZmdXNlQ29sb3IgPSB0ZXh0dXJlMkQoIG1hcCwgdlV2ICk7CgkjaWZkZWYgREVDT0RFX1ZJREVPX1RFWFRVUkUKCQlzYW1wbGVkRGlmZnVzZUNvbG9yID0gdmVjNCggbWl4KCBwb3coIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHNhbXBsZWREaWZmdXNlQ29sb3IucmdiICogMC4wNzczOTkzODA4LCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCBzYW1wbGVkRGlmZnVzZUNvbG9yLnJnYiwgdmVjMyggMC4wNDA0NSApICkgKSApLCBzYW1wbGVkRGlmZnVzZUNvbG9yLncgKTsKCSNlbmRpZgoJZGlmZnVzZUNvbG9yICo9IHNhbXBsZWREaWZmdXNlQ29sb3I7CiNlbmRpZmAsVVZ0PWAjaWZkZWYgVVNFX01BUAoJdW5pZm9ybSBzYW1wbGVyMkQgbWFwOwojZW5kaWZgLFlWdD1gI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKQoJdmVjMiB1diA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCBnbF9Qb2ludENvb3JkLngsIDEuMCAtIGdsX1BvaW50Q29vcmQueSwgMSApICkueHk7CiNlbmRpZgojaWZkZWYgVVNFX01BUAoJZGlmZnVzZUNvbG9yICo9IHRleHR1cmUyRCggbWFwLCB1diApOwojZW5kaWYKI2lmZGVmIFVTRV9BTFBIQU1BUAoJZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdXYgKS5nOwojZW5kaWZgLEdWdD1gI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKQoJdW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtOwojZW5kaWYKI2lmZGVmIFVTRV9NQVAKCXVuaWZvcm0gc2FtcGxlcjJEIG1hcDsKI2VuZGlmCiNpZmRlZiBVU0VfQUxQSEFNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwOwojZW5kaWZgLFdWdD1gZmxvYXQgbWV0YWxuZXNzRmFjdG9yID0gbWV0YWxuZXNzOwojaWZkZWYgVVNFX01FVEFMTkVTU01BUAoJdmVjNCB0ZXhlbE1ldGFsbmVzcyA9IHRleHR1cmUyRCggbWV0YWxuZXNzTWFwLCB2VXYgKTsKCW1ldGFsbmVzc0ZhY3RvciAqPSB0ZXhlbE1ldGFsbmVzcy5iOwojZW5kaWZgLHFWdD1gI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIG1ldGFsbmVzc01hcDsKI2VuZGlmYCxaVnQ9YCNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTCglvYmplY3ROb3JtYWwgKj0gbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlOwoJI2lmZGVmIE1PUlBIVEFSR0VUU19URVhUVVJFCgkJZm9yICggaW50IGkgPSAwOyBpIDwgTU9SUEhUQVJHRVRTX0NPVU5UOyBpICsrICkgewoJCQlpZiAoIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdICE9IDAuMCApIG9iamVjdE5vcm1hbCArPSBnZXRNb3JwaCggZ2xfVmVydGV4SUQsIGksIDEsIDIgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdOwoJCX0KCSNlbHNlCgkJb2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdOwoJCW9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTsKCQlvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07CgkJb2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdOwoJI2VuZGlmCiNlbmRpZmAsWFZ0PWAjaWZkZWYgVVNFX01PUlBIVEFSR0VUUwoJdW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7CgkjaWZkZWYgTU9SUEhUQVJHRVRTX1RFWFRVUkUKCQl1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgTU9SUEhUQVJHRVRTX0NPVU5UIF07CgkJdW5pZm9ybSBzYW1wbGVyMkRBcnJheSBtb3JwaFRhcmdldHNUZXh0dXJlOwoJCXVuaWZvcm0gdmVjMiBtb3JwaFRhcmdldHNUZXh0dXJlU2l6ZTsKCQl2ZWMzIGdldE1vcnBoKCBjb25zdCBpbiBpbnQgdmVydGV4SW5kZXgsIGNvbnN0IGluIGludCBtb3JwaFRhcmdldEluZGV4LCBjb25zdCBpbiBpbnQgb2Zmc2V0LCBjb25zdCBpbiBpbnQgc3RyaWRlICkgewoJCQlmbG9hdCB0ZXhlbEluZGV4ID0gZmxvYXQoIHZlcnRleEluZGV4ICogc3RyaWRlICsgb2Zmc2V0ICk7CgkJCWZsb2F0IHkgPSBmbG9vciggdGV4ZWxJbmRleCAvIG1vcnBoVGFyZ2V0c1RleHR1cmVTaXplLnggKTsKCQkJZmxvYXQgeCA9IHRleGVsSW5kZXggLSB5ICogbW9ycGhUYXJnZXRzVGV4dHVyZVNpemUueDsKCQkJdmVjMyBtb3JwaFVWID0gdmVjMyggKCB4ICsgMC41ICkgLyBtb3JwaFRhcmdldHNUZXh0dXJlU2l6ZS54LCB5IC8gbW9ycGhUYXJnZXRzVGV4dHVyZVNpemUueSwgbW9ycGhUYXJnZXRJbmRleCApOwoJCQlyZXR1cm4gdGV4dHVyZSggbW9ycGhUYXJnZXRzVGV4dHVyZSwgbW9ycGhVViApLnh5ejsKCQl9CgkjZWxzZQoJCSNpZm5kZWYgVVNFX01PUlBITk9STUFMUwoJCQl1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgOCBdOwoJCSNlbHNlCgkJCXVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07CgkJI2VuZGlmCgkjZW5kaWYKI2VuZGlmYCxRVnQ9YCNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTCgl0cmFuc2Zvcm1lZCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7CgkjaWZkZWYgTU9SUEhUQVJHRVRTX1RFWFRVUkUKCQlmb3IgKCBpbnQgaSA9IDA7IGkgPCBNT1JQSFRBUkdFVFNfQ09VTlQ7IGkgKysgKSB7CgkJCSNpZm5kZWYgVVNFX01PUlBITk9STUFMUwoJCQkJaWYgKCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXSAhPSAwLjAgKSB0cmFuc2Zvcm1lZCArPSBnZXRNb3JwaCggZ2xfVmVydGV4SUQsIGksIDAsIDEgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdOwoJCQkjZWxzZQoJCQkJaWYgKCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIGkgXSAhPSAwLjAgKSB0cmFuc2Zvcm1lZCArPSBnZXRNb3JwaCggZ2xfVmVydGV4SUQsIGksIDAsIDIgKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgaSBdOwoJCQkjZW5kaWYKCQl9CgkjZWxzZQoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdOwoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMSBdOwoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdOwoJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdOwoJCSNpZm5kZWYgVVNFX01PUlBITk9STUFMUwoJCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDQgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTsKCQkJdHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ1ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA1IF07CgkJCXRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0NiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNiBdOwoJCQl0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDcgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTsKCQkjZW5kaWYKCSNlbmRpZgojZW5kaWZgLEtWdD1gZmxvYXQgZmFjZURpcmVjdGlvbiA9IGdsX0Zyb250RmFjaW5nID8gMS4wIDogLSAxLjA7CiNpZmRlZiBGTEFUX1NIQURFRAoJdmVjMyBmZHggPSB2ZWMzKCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeCggdlZpZXdQb3NpdGlvbi55ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueiApICk7Cgl2ZWMzIGZkeSA9IHZlYzMoIGRGZHkoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeSggdlZpZXdQb3NpdGlvbi56ICkgKTsKCXZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApOwojZWxzZQoJdmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTsKCSNpZmRlZiBET1VCTEVfU0lERUQKCQlub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uOwoJI2VuZGlmCgkjaWZkZWYgVVNFX1RBTkdFTlQKCQl2ZWMzIHRhbmdlbnQgPSBub3JtYWxpemUoIHZUYW5nZW50ICk7CgkJdmVjMyBiaXRhbmdlbnQgPSBub3JtYWxpemUoIHZCaXRhbmdlbnQgKTsKCQkjaWZkZWYgRE9VQkxFX1NJREVECgkJCXRhbmdlbnQgPSB0YW5nZW50ICogZmFjZURpcmVjdGlvbjsKCQkJYml0YW5nZW50ID0gYml0YW5nZW50ICogZmFjZURpcmVjdGlvbjsKCQkjZW5kaWYKCQkjaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQICkKCQkJbWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBub3JtYWwgKTsKCQkjZW5kaWYKCSNlbmRpZgojZW5kaWYKdmVjMyBnZW9tZXRyeU5vcm1hbCA9IG5vcm1hbDtgLEpWdD1gI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUAoJbm9ybWFsID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDsKCSNpZmRlZiBGTElQX1NJREVECgkJbm9ybWFsID0gLSBub3JtYWw7CgkjZW5kaWYKCSNpZmRlZiBET1VCTEVfU0lERUQKCQlub3JtYWwgPSBub3JtYWwgKiBmYWNlRGlyZWN0aW9uOwoJI2VuZGlmCglub3JtYWwgPSBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApOwojZWxpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkKCXZlYzMgbWFwTiA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7CgltYXBOLnh5ICo9IG5vcm1hbFNjYWxlOwoJI2lmZGVmIFVTRV9UQU5HRU5UCgkJbm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogbWFwTiApOwoJI2Vsc2UKCQlub3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLSB2Vmlld1Bvc2l0aW9uLCBub3JtYWwsIG1hcE4sIGZhY2VEaXJlY3Rpb24gKTsKCSNlbmRpZgojZWxpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApCglub3JtYWwgPSBwZXJ0dXJiTm9ybWFsQXJiKCAtIHZWaWV3UG9zaXRpb24sIG5vcm1hbCwgZEhkeHlfZndkKCksIGZhY2VEaXJlY3Rpb24gKTsKI2VuZGlmYCwkVnQ9YCNpZm5kZWYgRkxBVF9TSEFERUQKCXZhcnlpbmcgdmVjMyB2Tm9ybWFsOwoJI2lmZGVmIFVTRV9UQU5HRU5UCgkJdmFyeWluZyB2ZWMzIHZUYW5nZW50OwoJCXZhcnlpbmcgdmVjMyB2Qml0YW5nZW50OwoJI2VuZGlmCiNlbmRpZmAsdGp0PWAjaWZuZGVmIEZMQVRfU0hBREVECgl2YXJ5aW5nIHZlYzMgdk5vcm1hbDsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCXZhcnlpbmcgdmVjMyB2VGFuZ2VudDsKCQl2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDsKCSNlbmRpZgojZW5kaWZgLGVqdD1gI2lmbmRlZiBGTEFUX1NIQURFRAoJdk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCXZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTsKCQl2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApOwoJI2VuZGlmCiNlbmRpZmAsbmp0PWAjaWZkZWYgVVNFX05PUk1BTE1BUAoJdW5pZm9ybSBzYW1wbGVyMkQgbm9ybWFsTWFwOwoJdW5pZm9ybSB2ZWMyIG5vcm1hbFNjYWxlOwojZW5kaWYKI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUAoJdW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDsKI2VuZGlmCiNpZiAhIGRlZmluZWQgKCBVU0VfVEFOR0VOVCApICYmICggZGVmaW5lZCAoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkICggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKSApCgl2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMzIG1hcE4sIGZsb2F0IGZhY2VEaXJlY3Rpb24gKSB7CgkJdmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTsKCQl2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApOwoJCXZlYzIgc3QwID0gZEZkeCggdlV2LnN0ICk7CgkJdmVjMiBzdDEgPSBkRmR5KCB2VXYuc3QgKTsKCQl2ZWMzIE4gPSBzdXJmX25vcm07CgkJdmVjMyBxMXBlcnAgPSBjcm9zcyggcTEsIE4gKTsKCQl2ZWMzIHEwcGVycCA9IGNyb3NzKCBOLCBxMCApOwoJCXZlYzMgVCA9IHExcGVycCAqIHN0MC54ICsgcTBwZXJwICogc3QxLng7CgkJdmVjMyBCID0gcTFwZXJwICogc3QwLnkgKyBxMHBlcnAgKiBzdDEueTsKCQlmbG9hdCBkZXQgPSBtYXgoIGRvdCggVCwgVCApLCBkb3QoIEIsIEIgKSApOwoJCWZsb2F0IHNjYWxlID0gKCBkZXQgPT0gMC4wICkgPyAwLjAgOiBmYWNlRGlyZWN0aW9uICogaW52ZXJzZXNxcnQoIGRldCApOwoJCXJldHVybiBub3JtYWxpemUoIFQgKiAoIG1hcE4ueCAqIHNjYWxlICkgKyBCICogKCBtYXBOLnkgKiBzY2FsZSApICsgTiAqIG1hcE4ueiApOwoJfQojZW5kaWZgLG9qdD1gI2lmZGVmIFVTRV9DTEVBUkNPQVQKCXZlYzMgY2xlYXJjb2F0Tm9ybWFsID0gZ2VvbWV0cnlOb3JtYWw7CiNlbmRpZmAsaWp0PWAjaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAKCXZlYzMgY2xlYXJjb2F0TWFwTiA9IHRleHR1cmUyRCggY2xlYXJjb2F0Tm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7CgljbGVhcmNvYXRNYXBOLnh5ICo9IGNsZWFyY29hdE5vcm1hbFNjYWxlOwoJI2lmZGVmIFVTRV9UQU5HRU5UCgkJY2xlYXJjb2F0Tm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogY2xlYXJjb2F0TWFwTiApOwoJI2Vsc2UKCQljbGVhcmNvYXROb3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLSB2Vmlld1Bvc2l0aW9uLCBjbGVhcmNvYXROb3JtYWwsIGNsZWFyY29hdE1hcE4sIGZhY2VEaXJlY3Rpb24gKTsKCSNlbmRpZgojZW5kaWZgLGFqdD1gI2lmZGVmIFVTRV9DTEVBUkNPQVRNQVAKCXVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE1hcDsKI2VuZGlmCiNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUAoJdW5pZm9ybSBzYW1wbGVyMkQgY2xlYXJjb2F0Um91Z2huZXNzTWFwOwojZW5kaWYKI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXROb3JtYWxNYXA7Cgl1bmlmb3JtIHZlYzIgY2xlYXJjb2F0Tm9ybWFsU2NhbGU7CiNlbmRpZmAscmp0PWAjaWZkZWYgT1BBUVVFCmRpZmZ1c2VDb2xvci5hID0gMS4wOwojZW5kaWYKI2lmZGVmIFVTRV9UUkFOU01JU1NJT04KZGlmZnVzZUNvbG9yLmEgKj0gdHJhbnNtaXNzaW9uQWxwaGEgKyAwLjE7CiNlbmRpZgpnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO2Asc2p0PWB2ZWMzIHBhY2tOb3JtYWxUb1JHQiggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7CglyZXR1cm4gbm9ybWFsaXplKCBub3JtYWwgKSAqIDAuNSArIDAuNTsKfQp2ZWMzIHVucGFja1JHQlRvTm9ybWFsKCBjb25zdCBpbiB2ZWMzIHJnYiApIHsKCXJldHVybiAyLjAgKiByZ2IueHl6IC0gMS4wOwp9CmNvbnN0IGZsb2F0IFBhY2tVcHNjYWxlID0gMjU2LiAvIDI1NS47Y29uc3QgZmxvYXQgVW5wYWNrRG93bnNjYWxlID0gMjU1LiAvIDI1Ni47CmNvbnN0IHZlYzMgUGFja0ZhY3RvcnMgPSB2ZWMzKCAyNTYuICogMjU2LiAqIDI1Ni4sIDI1Ni4gKiAyNTYuLCAyNTYuICk7CmNvbnN0IHZlYzQgVW5wYWNrRmFjdG9ycyA9IFVucGFja0Rvd25zY2FsZSAvIHZlYzQoIFBhY2tGYWN0b3JzLCAxLiApOwpjb25zdCBmbG9hdCBTaGlmdFJpZ2h0OCA9IDEuIC8gMjU2LjsKdmVjNCBwYWNrRGVwdGhUb1JHQkEoIGNvbnN0IGluIGZsb2F0IHYgKSB7Cgl2ZWM0IHIgPSB2ZWM0KCBmcmFjdCggdiAqIFBhY2tGYWN0b3JzICksIHYgKTsKCXIueXp3IC09IHIueHl6ICogU2hpZnRSaWdodDg7CXJldHVybiByICogUGFja1Vwc2NhbGU7Cn0KZmxvYXQgdW5wYWNrUkdCQVRvRGVwdGgoIGNvbnN0IGluIHZlYzQgdiApIHsKCXJldHVybiBkb3QoIHYsIFVucGFja0ZhY3RvcnMgKTsKfQp2ZWM0IHBhY2sySGFsZlRvUkdCQSggdmVjMiB2ICkgewoJdmVjNCByID0gdmVjNCggdi54LCBmcmFjdCggdi54ICogMjU1LjAgKSwgdi55LCBmcmFjdCggdi55ICogMjU1LjAgKSApOwoJcmV0dXJuIHZlYzQoIHIueCAtIHIueSAvIDI1NS4wLCByLnksIHIueiAtIHIudyAvIDI1NS4wLCByLncgKTsKfQp2ZWMyIHVucGFja1JHQkFUbzJIYWxmKCB2ZWM0IHYgKSB7CglyZXR1cm4gdmVjMiggdi54ICsgKCB2LnkgLyAyNTUuMCApLCB2LnogKyAoIHYudyAvIDI1NS4wICkgKTsKfQpmbG9hdCB2aWV3WlRvT3J0aG9ncmFwaGljRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7CglyZXR1cm4gKCB2aWV3WiArIG5lYXIgKSAvICggbmVhciAtIGZhciApOwp9CmZsb2F0IG9ydGhvZ3JhcGhpY0RlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgbGluZWFyQ2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHsKCXJldHVybiBsaW5lYXJDbGlwWiAqICggbmVhciAtIGZhciApIC0gbmVhcjsKfQpmbG9hdCB2aWV3WlRvUGVyc3BlY3RpdmVEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHsKCXJldHVybiAoICggbmVhciArIHZpZXdaICkgKiBmYXIgKSAvICggKCBmYXIgLSBuZWFyICkgKiB2aWV3WiApOwp9CmZsb2F0IHBlcnNwZWN0aXZlRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBpbnZDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkgewoJcmV0dXJuICggbmVhciAqIGZhciApIC8gKCAoIGZhciAtIG5lYXIgKSAqIGludkNsaXBaIC0gZmFyICk7Cn1gLGxqdD1gI2lmZGVmIFBSRU1VTFRJUExJRURfQUxQSEEKCWdsX0ZyYWdDb2xvci5yZ2IgKj0gZ2xfRnJhZ0NvbG9yLmE7CiNlbmRpZmAsY2p0PWB2ZWM0IG12UG9zaXRpb24gPSB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7CiNpZmRlZiBVU0VfSU5TVEFOQ0lORwoJbXZQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogbXZQb3NpdGlvbjsKI2VuZGlmCm12UG9zaXRpb24gPSBtb2RlbFZpZXdNYXRyaXggKiBtdlBvc2l0aW9uOwpnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uO2AsbWp0PWAjaWZkZWYgRElUSEVSSU5HCglnbF9GcmFnQ29sb3IucmdiID0gZGl0aGVyaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7CiNlbmRpZmAsZmp0PWAjaWZkZWYgRElUSEVSSU5HCgl2ZWMzIGRpdGhlcmluZyggdmVjMyBjb2xvciApIHsKCQlmbG9hdCBncmlkX3Bvc2l0aW9uID0gcmFuZCggZ2xfRnJhZ0Nvb3JkLnh5ICk7CgkJdmVjMyBkaXRoZXJfc2hpZnRfUkdCID0gdmVjMyggMC4yNSAvIDI1NS4wLCAtMC4yNSAvIDI1NS4wLCAwLjI1IC8gMjU1LjAgKTsKCQlkaXRoZXJfc2hpZnRfUkdCID0gbWl4KCAyLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCAtMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgZ3JpZF9wb3NpdGlvbiApOwoJCXJldHVybiBjb2xvciArIGRpdGhlcl9zaGlmdF9SR0I7Cgl9CiNlbmRpZmAscGp0PWBmbG9hdCByb3VnaG5lc3NGYWN0b3IgPSByb3VnaG5lc3M7CiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQCgl2ZWM0IHRleGVsUm91Z2huZXNzID0gdGV4dHVyZTJEKCByb3VnaG5lc3NNYXAsIHZVdiApOwoJcm91Z2huZXNzRmFjdG9yICo9IHRleGVsUm91Z2huZXNzLmc7CiNlbmRpZmAsZGp0PWAjaWZkZWYgVVNFX1JPVUdITkVTU01BUAoJdW5pZm9ybSBzYW1wbGVyMkQgcm91Z2huZXNzTWFwOwojZW5kaWZgLGdqdD1gI2lmZGVmIFVTRV9TSEFET1dNQVAKCSNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwCgkJdW5pZm9ybSBzYW1wbGVyMkQgZGlyZWN0aW9uYWxTaGFkb3dNYXBbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdOwoJCXZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07CgkJc3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQl9OwoJCXVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKCSNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNwb3RTaGFkb3dNYXBbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCQl2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdOwoJCXN0cnVjdCBTcG90TGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQl9OwoJCXVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCSNlbmRpZgoJI2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gc2FtcGxlcjJEIHBvaW50U2hhZG93TWFwWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdOwoJCXZhcnlpbmcgdmVjNCB2UG9pbnRTaGFkb3dDb29yZFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTsKCQlzdHJ1Y3QgUG9pbnRMaWdodFNoYWRvdyB7CgkJCWZsb2F0IHNoYWRvd0JpYXM7CgkJCWZsb2F0IHNoYWRvd05vcm1hbEJpYXM7CgkJCWZsb2F0IHNoYWRvd1JhZGl1czsKCQkJdmVjMiBzaGFkb3dNYXBTaXplOwoJCQlmbG9hdCBzaGFkb3dDYW1lcmFOZWFyOwoJCQlmbG9hdCBzaGFkb3dDYW1lcmFGYXI7CgkJfTsKCQl1bmlmb3JtIFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvd3NbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKCWZsb2F0IHRleHR1cmUyRENvbXBhcmUoIHNhbXBsZXIyRCBkZXB0aHMsIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKSB7CgkJcmV0dXJuIHN0ZXAoIGNvbXBhcmUsIHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIGRlcHRocywgdXYgKSApICk7Cgl9Cgl2ZWMyIHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diApIHsKCQlyZXR1cm4gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93LCB1diApICk7Cgl9CglmbG9hdCBWU01TaGFkb3cgKHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKXsKCQlmbG9hdCBvY2NsdXNpb24gPSAxLjA7CgkJdmVjMiBkaXN0cmlidXRpb24gPSB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNoYWRvdywgdXYgKTsKCQlmbG9hdCBoYXJkX3NoYWRvdyA9IHN0ZXAoIGNvbXBhcmUgLCBkaXN0cmlidXRpb24ueCApOwoJCWlmIChoYXJkX3NoYWRvdyAhPSAxLjAgKSB7CgkJCWZsb2F0IGRpc3RhbmNlID0gY29tcGFyZSAtIGRpc3RyaWJ1dGlvbi54IDsKCQkJZmxvYXQgdmFyaWFuY2UgPSBtYXgoIDAuMDAwMDAsIGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKTsKCQkJZmxvYXQgc29mdG5lc3NfcHJvYmFiaWxpdHkgPSB2YXJpYW5jZSAvICh2YXJpYW5jZSArIGRpc3RhbmNlICogZGlzdGFuY2UgKTsJCQlzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IGNsYW1wKCAoIHNvZnRuZXNzX3Byb2JhYmlsaXR5IC0gMC4zICkgLyAoIDAuOTUgLSAwLjMgKSwgMC4wLCAxLjAgKTsJCQlvY2NsdXNpb24gPSBjbGFtcCggbWF4KCBoYXJkX3NoYWRvdywgc29mdG5lc3NfcHJvYmFiaWxpdHkgKSwgMC4wLCAxLjAgKTsKCQl9CgkJcmV0dXJuIG9jY2x1c2lvbjsKCX0KCWZsb2F0IGdldFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQgKSB7CgkJZmxvYXQgc2hhZG93ID0gMS4wOwoJCXNoYWRvd0Nvb3JkLnh5eiAvPSBzaGFkb3dDb29yZC53OwoJCXNoYWRvd0Nvb3JkLnogKz0gc2hhZG93QmlhczsKCQlidmVjNCBpbkZydXN0dW1WZWMgPSBidmVjNCAoIHNoYWRvd0Nvb3JkLnggPj0gMC4wLCBzaGFkb3dDb29yZC54IDw9IDEuMCwgc2hhZG93Q29vcmQueSA+PSAwLjAsIHNoYWRvd0Nvb3JkLnkgPD0gMS4wICk7CgkJYm9vbCBpbkZydXN0dW0gPSBhbGwoIGluRnJ1c3R1bVZlYyApOwoJCWJ2ZWMyIGZydXN0dW1UZXN0VmVjID0gYnZlYzIoIGluRnJ1c3R1bSwgc2hhZG93Q29vcmQueiA8PSAxLjAgKTsKCQlib29sIGZydXN0dW1UZXN0ID0gYWxsKCBmcnVzdHVtVGVzdFZlYyApOwoJCWlmICggZnJ1c3R1bVRlc3QgKSB7CgkJI2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApCgkJCXZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplOwoJCQlmbG9hdCBkeDAgPSAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeTAgPSAtIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeDEgPSArIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeTEgPSArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzOwoJCQlmbG9hdCBkeDIgPSBkeDAgLyAyLjA7CgkJCWZsb2F0IGR5MiA9IGR5MCAvIDIuMDsKCQkJZmxvYXQgZHgzID0gZHgxIC8gMi4wOwoJCQlmbG9hdCBkeTMgPSBkeTEgLyAyLjA7CgkJCXNoYWRvdyA9ICgKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApCgkJCSkgKiAoIDEuMCAvIDE3LjAgKTsKCQkjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApCgkJCXZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplOwoJCQlmbG9hdCBkeCA9IHRleGVsU2l6ZS54OwoJCQlmbG9hdCBkeSA9IHRleGVsU2l6ZS55OwoJCQl2ZWMyIHV2ID0gc2hhZG93Q29vcmQueHk7CgkJCXZlYzIgZiA9IGZyYWN0KCB1diAqIHNoYWRvd01hcFNpemUgKyAwLjUgKTsKCQkJdXYgLT0gZiAqIHRleGVsU2l6ZTsKCQkJc2hhZG93ID0gKAoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diwgc2hhZG93Q29vcmQueiApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArCgkJCQl0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCBkeSApLCBzaGFkb3dDb29yZC56ICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHRleGVsU2l6ZSwgc2hhZG93Q29vcmQueiApICsKCQkJCW1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSwKCQkJCQkgZi54ICkgKwoJCQkJbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksIAoJCQkJCSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwKCQkJCQkgZi54ICkgKwoJCQkJbWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCAKCQkJCQkgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLAoJCQkJCSBmLnkgKSArCgkJCQltaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLAoJCQkJCSBmLnkgKSArCgkJCQltaXgoIG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJCSAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLAoJCQkJCQkgIGYueCApLAoJCQkJCSBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgCgkJCQkJCSAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksCgkJCQkJCSAgZi54ICksCgkJCQkJIGYueSApCgkJCSkgKiAoIDEuMCAvIDkuMCApOwoJCSNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApCgkJCXNoYWRvdyA9IFZTTVNoYWRvdyggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApOwoJCSNlbHNlCgkJCXNoYWRvdyA9IHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTsKCQkjZW5kaWYKCQl9CgkJcmV0dXJuIHNoYWRvdzsKCX0KCXZlYzIgY3ViZVRvVVYoIHZlYzMgdiwgZmxvYXQgdGV4ZWxTaXplWSApIHsKCQl2ZWMzIGFic1YgPSBhYnMoIHYgKTsKCQlmbG9hdCBzY2FsZVRvQ3ViZSA9IDEuMCAvIG1heCggYWJzVi54LCBtYXgoIGFic1YueSwgYWJzVi56ICkgKTsKCQlhYnNWICo9IHNjYWxlVG9DdWJlOwoJCXYgKj0gc2NhbGVUb0N1YmUgKiAoIDEuMCAtIDIuMCAqIHRleGVsU2l6ZVkgKTsKCQl2ZWMyIHBsYW5hciA9IHYueHk7CgkJZmxvYXQgYWxtb3N0QVRleGVsID0gMS41ICogdGV4ZWxTaXplWTsKCQlmbG9hdCBhbG1vc3RPbmUgPSAxLjAgLSBhbG1vc3RBVGV4ZWw7CgkJaWYgKCBhYnNWLnogPj0gYWxtb3N0T25lICkgewoJCQlpZiAoIHYueiA+IDAuMCApCgkJCQlwbGFuYXIueCA9IDQuMCAtIHYueDsKCQl9IGVsc2UgaWYgKCBhYnNWLnggPj0gYWxtb3N0T25lICkgewoJCQlmbG9hdCBzaWduWCA9IHNpZ24oIHYueCApOwoJCQlwbGFuYXIueCA9IHYueiAqIHNpZ25YICsgMi4wICogc2lnblg7CgkJfSBlbHNlIGlmICggYWJzVi55ID49IGFsbW9zdE9uZSApIHsKCQkJZmxvYXQgc2lnblkgPSBzaWduKCB2LnkgKTsKCQkJcGxhbmFyLnggPSB2LnggKyAyLjAgKiBzaWduWSArIDIuMDsKCQkJcGxhbmFyLnkgPSB2LnogKiBzaWduWSAtIDIuMDsKCQl9CgkJcmV0dXJuIHZlYzIoIDAuMTI1LCAwLjI1ICkgKiBwbGFuYXIgKyB2ZWMyKCAwLjM3NSwgMC43NSApOwoJfQoJZmxvYXQgZ2V0UG9pbnRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkLCBmbG9hdCBzaGFkb3dDYW1lcmFOZWFyLCBmbG9hdCBzaGFkb3dDYW1lcmFGYXIgKSB7CgkJdmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvICggc2hhZG93TWFwU2l6ZSAqIHZlYzIoIDQuMCwgMi4wICkgKTsKCQl2ZWMzIGxpZ2h0VG9Qb3NpdGlvbiA9IHNoYWRvd0Nvb3JkLnh5ejsKCQlmbG9hdCBkcCA9ICggbGVuZ3RoKCBsaWdodFRvUG9zaXRpb24gKSAtIHNoYWRvd0NhbWVyYU5lYXIgKSAvICggc2hhZG93Q2FtZXJhRmFyIC0gc2hhZG93Q2FtZXJhTmVhciApOwkJZHAgKz0gc2hhZG93QmlhczsKCQl2ZWMzIGJkM0QgPSBub3JtYWxpemUoIGxpZ2h0VG9Qb3NpdGlvbiApOwoJCSNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApCgkJCXZlYzIgb2Zmc2V0ID0gdmVjMiggLSAxLCAxICkgKiBzaGFkb3dSYWRpdXMgKiB0ZXhlbFNpemUueTsKCQkJcmV0dXJuICgKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl5LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl5LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl4LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl4LCB0ZXhlbFNpemUueSApLCBkcCApICsKCQkJCXRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHksIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHksIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHgsIHRleGVsU2l6ZS55ICksIGRwICkgKwoJCQkJdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHgsIHRleGVsU2l6ZS55ICksIGRwICkKCQkJKSAqICggMS4wIC8gOS4wICk7CgkJI2Vsc2UKCQkJcmV0dXJuIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICk7CgkJI2VuZGlmCgl9CiNlbmRpZmAsdWp0PWAjaWZkZWYgVVNFX1NIQURPV01BUAoJI2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDAKCQl1bmlmb3JtIG1hdDQgZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdOwoJCXZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07CgkJc3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgewoJCQlmbG9hdCBzaGFkb3dCaWFzOwoJCQlmbG9hdCBzaGFkb3dOb3JtYWxCaWFzOwoJCQlmbG9hdCBzaGFkb3dSYWRpdXM7CgkJCXZlYzIgc2hhZG93TWFwU2l6ZTsKCQl9OwoJCXVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKCSNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJCXVuaWZvcm0gbWF0NCBzcG90U2hhZG93TWF0cml4WyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07CgkJdmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTsKCQlzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHsKCQkJZmxvYXQgc2hhZG93QmlhczsKCQkJZmxvYXQgc2hhZG93Tm9ybWFsQmlhczsKCQkJZmxvYXQgc2hhZG93UmFkaXVzOwoJCQl2ZWMyIHNoYWRvd01hcFNpemU7CgkJfTsKCQl1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07CgkjZW5kaWYKCSNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDAKCQl1bmlmb3JtIG1hdDQgcG9pbnRTaGFkb3dNYXRyaXhbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07CgkJdmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdOwoJCXN0cnVjdCBQb2ludExpZ2h0U2hhZG93IHsKCQkJZmxvYXQgc2hhZG93QmlhczsKCQkJZmxvYXQgc2hhZG93Tm9ybWFsQmlhczsKCQkJZmxvYXQgc2hhZG93UmFkaXVzOwoJCQl2ZWMyIHNoYWRvd01hcFNpemU7CgkJCWZsb2F0IHNoYWRvd0NhbWVyYU5lYXI7CgkJCWZsb2F0IHNoYWRvd0NhbWVyYUZhcjsKCQl9OwoJCXVuaWZvcm0gUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93c1sgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTsKCSNlbmRpZgojZW5kaWZgLGhqdD1gI2lmZGVmIFVTRV9TSEFET1dNQVAKCSNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMAoJCXZlYzMgc2hhZG93V29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApOwoJCXZlYzQgc2hhZG93V29ybGRQb3NpdGlvbjsKCSNlbmRpZgoJI2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDAKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUzsgaSArKyApIHsKCQlzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7CgkJdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSA9IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKCSNlbmRpZgoJI2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkgewoJCXNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBzcG90TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApOwoJCXZTcG90U2hhZG93Q29vcmRbIGkgXSA9IHNwb3RTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJI2VuZGlmCgkjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwCgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHsKCQlzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogcG9pbnRMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7CgkJdlBvaW50U2hhZG93Q29vcmRbIGkgXSA9IHBvaW50U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uOwoJfQoJI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQKCSNlbmRpZgojZW5kaWZgLF9qdD1gZmxvYXQgZ2V0U2hhZG93TWFzaygpIHsKCWZsb2F0IHNoYWRvdyA9IDEuMDsKCSNpZmRlZiBVU0VfU0hBRE9XTUFQCgkjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMAoJRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0OwoJI3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydAoJZm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkgewoJCWRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdOwoJCXNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKCSNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMAoJU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodDsKCSNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQKCWZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7CgkJc3BvdExpZ2h0ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdOwoJCXNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7Cgl9CgkjcHJhZ21hIHVucm9sbF9sb29wX2VuZAoJI2VuZGlmCgkjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwCglQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHQ7CgkjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0Cglmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHsKCQlwb2ludExpZ2h0ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTsKCQlzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHQuc2hhZG93QmlhcywgcG9pbnRMaWdodC5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDsKCX0KCSNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kCgkjZW5kaWYKCSNlbmRpZgoJcmV0dXJuIHNoYWRvdzsKfWAsQ2p0PWAjaWZkZWYgVVNFX1NLSU5OSU5HCgltYXQ0IGJvbmVNYXRYID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnggKTsKCW1hdDQgYm9uZU1hdFkgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueSApOwoJbWF0NCBib25lTWF0WiA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC56ICk7CgltYXQ0IGJvbmVNYXRXID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LncgKTsKI2VuZGlmYCxNanQ9YCNpZmRlZiBVU0VfU0tJTk5JTkcKCXVuaWZvcm0gbWF0NCBiaW5kTWF0cml4OwoJdW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXhJbnZlcnNlOwoJI2lmZGVmIEJPTkVfVEVYVFVSRQoJCXVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIGJvbmVUZXh0dXJlOwoJCXVuaWZvcm0gaW50IGJvbmVUZXh0dXJlU2l6ZTsKCQltYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7CgkJCWZsb2F0IGogPSBpICogNC4wOwoJCQlmbG9hdCB4ID0gbW9kKCBqLCBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTsKCQkJZmxvYXQgeSA9IGZsb29yKCBqIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7CgkJCWZsb2F0IGR4ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApOwoJCQlmbG9hdCBkeSA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTsKCQkJeSA9IGR5ICogKCB5ICsgMC41ICk7CgkJCXZlYzQgdjEgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDAuNSApLCB5ICkgKTsKCQkJdmVjNCB2MiA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMS41ICksIHkgKSApOwoJCQl2ZWM0IHYzID0gdGV4dHVyZTJEKCBib25lVGV4dHVyZSwgdmVjMiggZHggKiAoIHggKyAyLjUgKSwgeSApICk7CgkJCXZlYzQgdjQgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDMuNSApLCB5ICkgKTsKCQkJbWF0NCBib25lID0gbWF0NCggdjEsIHYyLCB2MywgdjQgKTsKCQkJcmV0dXJuIGJvbmU7CgkJfQoJI2Vsc2UKCQl1bmlmb3JtIG1hdDQgYm9uZU1hdHJpY2VzWyBNQVhfQk9ORVMgXTsKCQltYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7CgkJCW1hdDQgYm9uZSA9IGJvbmVNYXRyaWNlc1sgaW50KGkpIF07CgkJCXJldHVybiBib25lOwoJCX0KCSNlbmRpZgojZW5kaWZgLGJqdD1gI2lmZGVmIFVTRV9TS0lOTklORwoJdmVjNCBza2luVmVydGV4ID0gYmluZE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTsKCXZlYzQgc2tpbm5lZCA9IHZlYzQoIDAuMCApOwoJc2tpbm5lZCArPSBib25lTWF0WCAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lng7Cglza2lubmVkICs9IGJvbmVNYXRZICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueTsKCXNraW5uZWQgKz0gYm9uZU1hdFogKiBza2luVmVydGV4ICogc2tpbldlaWdodC56OwoJc2tpbm5lZCArPSBib25lTWF0VyAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnc7Cgl0cmFuc2Zvcm1lZCA9ICggYmluZE1hdHJpeEludmVyc2UgKiBza2lubmVkICkueHl6OwojZW5kaWZgLE9qdD1gI2lmZGVmIFVTRV9TS0lOTklORwoJbWF0NCBza2luTWF0cml4ID0gbWF0NCggMC4wICk7Cglza2luTWF0cml4ICs9IHNraW5XZWlnaHQueCAqIGJvbmVNYXRYOwoJc2tpbk1hdHJpeCArPSBza2luV2VpZ2h0LnkgKiBib25lTWF0WTsKCXNraW5NYXRyaXggKz0gc2tpbldlaWdodC56ICogYm9uZU1hdFo7Cglza2luTWF0cml4ICs9IHNraW5XZWlnaHQudyAqIGJvbmVNYXRXOwoJc2tpbk1hdHJpeCA9IGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbk1hdHJpeCAqIGJpbmRNYXRyaXg7CglvYmplY3ROb3JtYWwgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0Tm9ybWFsLCAwLjAgKSApLnh5ejsKCSNpZmRlZiBVU0VfVEFOR0VOVAoJCW9iamVjdFRhbmdlbnQgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7CgkjZW5kaWYKI2VuZGlmYCxQanQ9YGZsb2F0IHNwZWN1bGFyU3RyZW5ndGg7CiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVAKCXZlYzQgdGV4ZWxTcGVjdWxhciA9IHRleHR1cmUyRCggc3BlY3VsYXJNYXAsIHZVdiApOwoJc3BlY3VsYXJTdHJlbmd0aCA9IHRleGVsU3BlY3VsYXIucjsKI2Vsc2UKCXNwZWN1bGFyU3RyZW5ndGggPSAxLjA7CiNlbmRpZmAseWp0PWAjaWZkZWYgVVNFX1NQRUNVTEFSTUFQCgl1bmlmb3JtIHNhbXBsZXIyRCBzcGVjdWxhck1hcDsKI2VuZGlmYCx4anQ9YCNpZiBkZWZpbmVkKCBUT05FX01BUFBJTkcgKQoJZ2xfRnJhZ0NvbG9yLnJnYiA9IHRvbmVNYXBwaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7CiNlbmRpZmAsdmp0PWAjaWZuZGVmIHNhdHVyYXRlCiNkZWZpbmUgc2F0dXJhdGUoIGEgKSBjbGFtcCggYSwgMC4wLCAxLjAgKQojZW5kaWYKdW5pZm9ybSBmbG9hdCB0b25lTWFwcGluZ0V4cG9zdXJlOwp2ZWMzIExpbmVhclRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgewoJcmV0dXJuIHRvbmVNYXBwaW5nRXhwb3N1cmUgKiBjb2xvcjsKfQp2ZWMzIFJlaW5oYXJkVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7Cgljb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlOwoJcmV0dXJuIHNhdHVyYXRlKCBjb2xvciAvICggdmVjMyggMS4wICkgKyBjb2xvciApICk7Cn0KdmVjMyBPcHRpbWl6ZWRDaW5lb25Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHsKCWNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7Cgljb2xvciA9IG1heCggdmVjMyggMC4wICksIGNvbG9yIC0gMC4wMDQgKTsKCXJldHVybiBwb3coICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMC41ICkgKSAvICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMS43ICkgKyAwLjA2ICksIHZlYzMoIDIuMiApICk7Cn0KdmVjMyBSUlRBbmRPRFRGaXQoIHZlYzMgdiApIHsKCXZlYzMgYSA9IHYgKiAoIHYgKyAwLjAyNDU3ODYgKSAtIDAuMDAwMDkwNTM3OwoJdmVjMyBiID0gdiAqICggMC45ODM3MjkgKiB2ICsgMC40MzI5NTEwICkgKyAwLjIzODA4MTsKCXJldHVybiBhIC8gYjsKfQp2ZWMzIEFDRVNGaWxtaWNUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHsKCWNvbnN0IG1hdDMgQUNFU0lucHV0TWF0ID0gbWF0MygKCQl2ZWMzKCAwLjU5NzE5LCAwLjA3NjAwLCAwLjAyODQwICksCQl2ZWMzKCAwLjM1NDU4LCAwLjkwODM0LCAwLjEzMzgzICksCgkJdmVjMyggMC4wNDgyMywgMC4wMTU2NiwgMC44Mzc3NyApCgkpOwoJY29uc3QgbWF0MyBBQ0VTT3V0cHV0TWF0ID0gbWF0MygKCQl2ZWMzKCAgMS42MDQ3NSwgLTAuMTAyMDgsIC0wLjAwMzI3ICksCQl2ZWMzKCAtMC41MzEwOCwgIDEuMTA4MTMsIC0wLjA3Mjc2ICksCgkJdmVjMyggLTAuMDczNjcsIC0wLjAwNjA1LCAgMS4wNzYwMiApCgkpOwoJY29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZSAvIDAuNjsKCWNvbG9yID0gQUNFU0lucHV0TWF0ICogY29sb3I7Cgljb2xvciA9IFJSVEFuZE9EVEZpdCggY29sb3IgKTsKCWNvbG9yID0gQUNFU091dHB1dE1hdCAqIGNvbG9yOwoJcmV0dXJuIHNhdHVyYXRlKCBjb2xvciApOwp9CnZlYzMgQ3VzdG9tVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7IHJldHVybiBjb2xvcjsgfWAsd2p0PWAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTgoJZmxvYXQgdHJhbnNtaXNzaW9uQWxwaGEgPSAxLjA7CglmbG9hdCB0cmFuc21pc3Npb25GYWN0b3IgPSB0cmFuc21pc3Npb247CglmbG9hdCB0aGlja25lc3NGYWN0b3IgPSB0aGlja25lc3M7CgkjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUAoJCXRyYW5zbWlzc2lvbkZhY3RvciAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjsKCSNlbmRpZgoJI2lmZGVmIFVTRV9USElDS05FU1NNQVAKCQl0aGlja25lc3NGYWN0b3IgKj0gdGV4dHVyZTJEKCB0aGlja25lc3NNYXAsIHZVdiApLmc7CgkjZW5kaWYKCXZlYzMgcG9zID0gdldvcmxkUG9zaXRpb247Cgl2ZWMzIHYgPSBub3JtYWxpemUoIGNhbWVyYVBvc2l0aW9uIC0gcG9zICk7Cgl2ZWMzIG4gPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBub3JtYWwsIHZpZXdNYXRyaXggKTsKCXZlYzQgdHJhbnNtaXNzaW9uID0gZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbigKCQluLCB2LCByb3VnaG5lc3NGYWN0b3IsIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJGOTAsCgkJcG9zLCBtb2RlbE1hdHJpeCwgdmlld01hdHJpeCwgcHJvamVjdGlvbk1hdHJpeCwgaW9yLCB0aGlja25lc3NGYWN0b3IsCgkJYXR0ZW51YXRpb25Db2xvciwgYXR0ZW51YXRpb25EaXN0YW5jZSApOwoJdG90YWxEaWZmdXNlID0gbWl4KCB0b3RhbERpZmZ1c2UsIHRyYW5zbWlzc2lvbi5yZ2IsIHRyYW5zbWlzc2lvbkZhY3RvciApOwoJdHJhbnNtaXNzaW9uQWxwaGEgPSBtaXgoIHRyYW5zbWlzc2lvbkFscGhhLCB0cmFuc21pc3Npb24uYSwgdHJhbnNtaXNzaW9uRmFjdG9yICk7CiNlbmRpZmAsU2p0PWAjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTgoJdW5pZm9ybSBmbG9hdCB0cmFuc21pc3Npb247Cgl1bmlmb3JtIGZsb2F0IHRoaWNrbmVzczsKCXVuaWZvcm0gZmxvYXQgYXR0ZW51YXRpb25EaXN0YW5jZTsKCXVuaWZvcm0gdmVjMyBhdHRlbnVhdGlvbkNvbG9yOwoJI2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVAKCQl1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25NYXA7CgkjZW5kaWYKCSNpZmRlZiBVU0VfVEhJQ0tORVNTTUFQCgkJdW5pZm9ybSBzYW1wbGVyMkQgdGhpY2tuZXNzTWFwOwoJI2VuZGlmCgl1bmlmb3JtIHZlYzIgdHJhbnNtaXNzaW9uU2FtcGxlclNpemU7Cgl1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25TYW1wbGVyTWFwOwoJdW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4OwoJdW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7Cgl2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247Cgl2ZWMzIGdldFZvbHVtZVRyYW5zbWlzc2lvblJheSggY29uc3QgaW4gdmVjMyBuLCBjb25zdCBpbiB2ZWMzIHYsIGNvbnN0IGluIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgaW4gZmxvYXQgaW9yLCBjb25zdCBpbiBtYXQ0IG1vZGVsTWF0cml4ICkgewoJCXZlYzMgcmVmcmFjdGlvblZlY3RvciA9IHJlZnJhY3QoIC0gdiwgbm9ybWFsaXplKCBuICksIDEuMCAvIGlvciApOwoJCXZlYzMgbW9kZWxTY2FsZTsKCQltb2RlbFNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueHl6ICkgKTsKCQltb2RlbFNjYWxlLnkgPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAxIF0ueHl6ICkgKTsKCQltb2RlbFNjYWxlLnogPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAyIF0ueHl6ICkgKTsKCQlyZXR1cm4gbm9ybWFsaXplKCByZWZyYWN0aW9uVmVjdG9yICkgKiB0aGlja25lc3MgKiBtb2RlbFNjYWxlOwoJfQoJZmxvYXQgYXBwbHlJb3JUb1JvdWdobmVzcyggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBmbG9hdCBpb3IgKSB7CgkJcmV0dXJuIHJvdWdobmVzcyAqIGNsYW1wKCBpb3IgKiAyLjAgLSAyLjAsIDAuMCwgMS4wICk7Cgl9Cgl2ZWM0IGdldFRyYW5zbWlzc2lvblNhbXBsZSggY29uc3QgaW4gdmVjMiBmcmFnQ29vcmQsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgaW9yICkgewoJCWZsb2F0IGZyYW1lYnVmZmVyTG9kID0gbG9nMiggdHJhbnNtaXNzaW9uU2FtcGxlclNpemUueCApICogYXBwbHlJb3JUb1JvdWdobmVzcyggcm91Z2huZXNzLCBpb3IgKTsKCQkjaWZkZWYgVEVYVFVSRV9MT0RfRVhUCgkJCXJldHVybiB0ZXh0dXJlMkRMb2RFWFQoIHRyYW5zbWlzc2lvblNhbXBsZXJNYXAsIGZyYWdDb29yZC54eSwgZnJhbWVidWZmZXJMb2QgKTsKCQkjZWxzZQoJCQlyZXR1cm4gdGV4dHVyZTJEKCB0cmFuc21pc3Npb25TYW1wbGVyTWFwLCBmcmFnQ29vcmQueHksIGZyYW1lYnVmZmVyTG9kICk7CgkJI2VuZGlmCgl9Cgl2ZWMzIGFwcGx5Vm9sdW1lQXR0ZW51YXRpb24oIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIGZsb2F0IHRyYW5zbWlzc2lvbkRpc3RhbmNlLCBjb25zdCBpbiB2ZWMzIGF0dGVudWF0aW9uQ29sb3IsIGNvbnN0IGluIGZsb2F0IGF0dGVudWF0aW9uRGlzdGFuY2UgKSB7CgkJaWYgKCBhdHRlbnVhdGlvbkRpc3RhbmNlID09IDAuMCApIHsKCQkJcmV0dXJuIHJhZGlhbmNlOwoJCX0gZWxzZSB7CgkJCXZlYzMgYXR0ZW51YXRpb25Db2VmZmljaWVudCA9IC1sb2coIGF0dGVudWF0aW9uQ29sb3IgKSAvIGF0dGVudWF0aW9uRGlzdGFuY2U7CgkJCXZlYzMgdHJhbnNtaXR0YW5jZSA9IGV4cCggLSBhdHRlbnVhdGlvbkNvZWZmaWNpZW50ICogdHJhbnNtaXNzaW9uRGlzdGFuY2UgKTsJCQlyZXR1cm4gdHJhbnNtaXR0YW5jZSAqIHJhZGlhbmNlOwoJCX0KCX0KCXZlYzQgZ2V0SUJMVm9sdW1lUmVmcmFjdGlvbiggY29uc3QgaW4gdmVjMyBuLCBjb25zdCBpbiB2ZWMzIHYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IsCgkJY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzcGVjdWxhckY5MCwgY29uc3QgaW4gdmVjMyBwb3NpdGlvbiwgY29uc3QgaW4gbWF0NCBtb2RlbE1hdHJpeCwKCQljb25zdCBpbiBtYXQ0IHZpZXdNYXRyaXgsIGNvbnN0IGluIG1hdDQgcHJvak1hdHJpeCwgY29uc3QgaW4gZmxvYXQgaW9yLCBjb25zdCBpbiBmbG9hdCB0aGlja25lc3MsCgkJY29uc3QgaW4gdmVjMyBhdHRlbnVhdGlvbkNvbG9yLCBjb25zdCBpbiBmbG9hdCBhdHRlbnVhdGlvbkRpc3RhbmNlICkgewoJCXZlYzMgdHJhbnNtaXNzaW9uUmF5ID0gZ2V0Vm9sdW1lVHJhbnNtaXNzaW9uUmF5KCBuLCB2LCB0aGlja25lc3MsIGlvciwgbW9kZWxNYXRyaXggKTsKCQl2ZWMzIHJlZnJhY3RlZFJheUV4aXQgPSBwb3NpdGlvbiArIHRyYW5zbWlzc2lvblJheTsKCQl2ZWM0IG5kY1BvcyA9IHByb2pNYXRyaXggKiB2aWV3TWF0cml4ICogdmVjNCggcmVmcmFjdGVkUmF5RXhpdCwgMS4wICk7CgkJdmVjMiByZWZyYWN0aW9uQ29vcmRzID0gbmRjUG9zLnh5IC8gbmRjUG9zLnc7CgkJcmVmcmFjdGlvbkNvb3JkcyArPSAxLjA7CgkJcmVmcmFjdGlvbkNvb3JkcyAvPSAyLjA7CgkJdmVjNCB0cmFuc21pdHRlZExpZ2h0ID0gZ2V0VHJhbnNtaXNzaW9uU2FtcGxlKCByZWZyYWN0aW9uQ29vcmRzLCByb3VnaG5lc3MsIGlvciApOwoJCXZlYzMgYXR0ZW51YXRlZENvbG9yID0gYXBwbHlWb2x1bWVBdHRlbnVhdGlvbiggdHJhbnNtaXR0ZWRMaWdodC5yZ2IsIGxlbmd0aCggdHJhbnNtaXNzaW9uUmF5ICksIGF0dGVudWF0aW9uQ29sb3IsIGF0dGVudWF0aW9uRGlzdGFuY2UgKTsKCQl2ZWMzIEYgPSBFbnZpcm9ubWVudEJSREYoIG4sIHYsIHNwZWN1bGFyQ29sb3IsIHNwZWN1bGFyRjkwLCByb3VnaG5lc3MgKTsKCQlyZXR1cm4gdmVjNCggKCAxLjAgLSBGICkgKiBhdHRlbnVhdGVkQ29sb3IgKiBkaWZmdXNlQ29sb3IsIHRyYW5zbWl0dGVkTGlnaHQuYSApOwoJfQojZW5kaWZgLFJqdD1gI2lmICggZGVmaW5lZCggVVNFX1VWICkgJiYgISBkZWZpbmVkKCBVVlNfVkVSVEVYX09OTFkgKSApCgl2YXJ5aW5nIHZlYzIgdlV2OwojZW5kaWZgLEVqdD1gI2lmZGVmIFVTRV9VVgoJI2lmZGVmIFVWU19WRVJURVhfT05MWQoJCXZlYzIgdlV2OwoJI2Vsc2UKCQl2YXJ5aW5nIHZlYzIgdlV2OwoJI2VuZGlmCgl1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07CiNlbmRpZmAsa2p0PWAjaWZkZWYgVVNFX1VWCgl2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5OwojZW5kaWZgLE5qdD1gI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApCgl2YXJ5aW5nIHZlYzIgdlV2MjsKI2VuZGlmYCxUanQ9YCNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKQoJYXR0cmlidXRlIHZlYzIgdXYyOwoJdmFyeWluZyB2ZWMyIHZVdjI7Cgl1bmlmb3JtIG1hdDMgdXYyVHJhbnNmb3JtOwojZW5kaWZgLEFqdD1gI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApCgl2VXYyID0gKCB1djJUcmFuc2Zvcm0gKiB2ZWMzKCB1djIsIDEgKSApLnh5OwojZW5kaWZgLERqdD1gI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkKCBESVNUQU5DRSApIHx8IGRlZmluZWQgKCBVU0VfU0hBRE9XTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9UUkFOU01JU1NJT04gKQoJdmVjNCB3b3JsZFBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApOwoJI2lmZGVmIFVTRV9JTlNUQU5DSU5HCgkJd29ybGRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogd29ybGRQb3NpdGlvbjsKCSNlbmRpZgoJd29ybGRQb3NpdGlvbiA9IG1vZGVsTWF0cml4ICogd29ybGRQb3NpdGlvbjsKI2VuZGlmYCxJanQ9YHZhcnlpbmcgdmVjMiB2VXY7CnVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTsKdm9pZCBtYWluKCkgewoJdlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTsKCWdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24ueHksIDEuMCwgMS4wICk7Cn1gLHpqdD1gdW5pZm9ybSBzYW1wbGVyMkQgdDJEOwp2YXJ5aW5nIHZlYzIgdlV2Owp2b2lkIG1haW4oKSB7CglnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHQyRCwgdlV2ICk7CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50Pgp9YCxIanQ9YHZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247CiNpbmNsdWRlIDxjb21tb24+CnZvaWQgbWFpbigpIHsKCXZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJZ2xfUG9zaXRpb24ueiA9IGdsX1Bvc2l0aW9uLnc7Cn1gLEZqdD1gI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD4KdW5pZm9ybSBmbG9hdCBvcGFjaXR5Owp2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwojaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7Cgl2ZWMzIHZSZWZsZWN0ID0gdldvcmxkRGlyZWN0aW9uOwoJI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD4KCWdsX0ZyYWdDb2xvciA9IGVudkNvbG9yOwoJZ2xfRnJhZ0NvbG9yLmEgKj0gb3BhY2l0eTsKCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+Cn1gLExqdD1gI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVzsKdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPHV2X3ZlcnRleD4KCSNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+CgkjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUAoJCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD4KCQkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkjZW5kaWYKCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJdkhpZ2hQcmVjaXNpb25aVyA9IGdsX1Bvc2l0aW9uLnp3Owp9YCxCanQ9YCNpZiBERVBUSF9QQUNLSU5HID09IDMyMDAKCXVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVzsKdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7CgkjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwCgkJZGlmZnVzZUNvbG9yLmEgPSBvcGFjaXR5OwoJI2VuZGlmCgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCWZsb2F0IGZyYWdDb29yZFogPSAwLjUgKiB2SGlnaFByZWNpc2lvblpXWzBdIC8gdkhpZ2hQcmVjaXNpb25aV1sxXSArIDAuNTsKCSNpZiBERVBUSF9QQUNLSU5HID09IDMyMDAKCQlnbF9GcmFnQ29sb3IgPSB2ZWM0KCB2ZWMzKCAxLjAgLSBmcmFnQ29vcmRaICksIG9wYWNpdHkgKTsKCSNlbGlmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMQoJCWdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZnJhZ0Nvb3JkWiApOwoJI2VuZGlmCn1gLFZqdD1gI2RlZmluZSBESVNUQU5DRQp2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVAKCQkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2VuZGlmCgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCXZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7Cn1gLGpqdD1gI2RlZmluZSBESVNUQU5DRQp1bmlmb3JtIHZlYzMgcmVmZXJlbmNlUG9zaXRpb247CnVuaWZvcm0gZmxvYXQgbmVhckRpc3RhbmNlOwp1bmlmb3JtIGZsb2F0IGZhckRpc3RhbmNlOwp2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbiAoKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTsKCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJZmxvYXQgZGlzdCA9IGxlbmd0aCggdldvcmxkUG9zaXRpb24gLSByZWZlcmVuY2VQb3NpdGlvbiApOwoJZGlzdCA9ICggZGlzdCAtIG5lYXJEaXN0YW5jZSApIC8gKCBmYXJEaXN0YW5jZSAtIG5lYXJEaXN0YW5jZSApOwoJZGlzdCA9IHNhdHVyYXRlKCBkaXN0ICk7CglnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGRpc3QgKTsKfWAsVWp0PWB2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uOwojaW5jbHVkZSA8Y29tbW9uPgp2b2lkIG1haW4oKSB7Cgl2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApOwoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KfWAsWWp0PWB1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7CnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247CiNpbmNsdWRlIDxjb21tb24+CnZvaWQgbWFpbigpIHsKCXZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTsKCXZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTsKCWdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApOwoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KfWAsR2p0PWB1bmlmb3JtIGZsb2F0IHNjYWxlOwphdHRyaWJ1dGUgZmxvYXQgbGluZURpc3RhbmNlOwp2YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCXZMaW5lRGlzdGFuY2UgPSBzY2FsZSAqIGxpbmVEaXN0YW5jZTsKCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCSNpbmNsdWRlIDxmb2dfdmVydGV4Pgp9YCxXanQ9YHVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CnVuaWZvcm0gZmxvYXQgZGFzaFNpemU7CnVuaWZvcm0gZmxvYXQgdG90YWxTaXplOwp2YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+CglpZiAoIG1vZCggdkxpbmVEaXN0YW5jZSwgdG90YWxTaXplICkgPiBkYXNoU2l6ZSApIHsKCQlkaXNjYXJkOwoJfQoJdmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCW91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiOwoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+Cn1gLHFqdD1gI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8dXYyX3ZlcnRleD4KCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaWYgZGVmaW5lZCAoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkICggVVNFX1NLSU5OSU5HICkKCQkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCQkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2VuZGlmCgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PgoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsWmp0PWB1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaWZuZGVmIEZMQVRfU0hBREVECgl2YXJ5aW5nIHZlYzMgdk5vcm1hbDsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PgoJUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTsKCSNpZmRlZiBVU0VfTElHSFRNQVAKCQl2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTsKCQlyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBUZXhlbC5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTsKCSNlbHNlCgkJcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZlYzMoIDEuMCApOwoJI2VuZGlmCgkjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+CglyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gZGlmZnVzZUNvbG9yLnJnYjsKCXZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTsKCSNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KCSNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD4KCSNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+Cn1gLFhqdD1gI2RlZmluZSBMQU1CRVJUCnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDsKdmFyeWluZyB2ZWMzIHZJbmRpcmVjdEZyb250OwojaWZkZWYgRE9VQkxFX1NJREVECgl2YXJ5aW5nIHZlYzMgdkxpZ2h0QmFjazsKCXZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrOwojZW5kaWYKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8YnNkZnM+CiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2luX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJI2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD4KCSNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGxpZ2h0c19sYW1iZXJ0X3ZlcnRleD4KCSNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLFFqdD1gdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5Owp2YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7CnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDsKI2lmZGVmIERPVUJMRV9TSURFRAoJdmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7Cgl2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjazsKI2VuZGlmCiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTsKCXZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCSNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4KCSNpZmRlZiBET1VCTEVfU0lERUQKCQlyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gKCBnbF9Gcm9udEZhY2luZyApID8gdkluZGlyZWN0RnJvbnQgOiB2SW5kaXJlY3RCYWNrOwoJI2Vsc2UKCQlyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdkluZGlyZWN0RnJvbnQ7CgkjZW5kaWYKCSNpbmNsdWRlIDxsaWdodG1hcF9mcmFnbWVudD4KCXJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTsKCSNpZmRlZiBET1VCTEVfU0lERUQKCQlyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gKCBnbF9Gcm9udEZhY2luZyApID8gdkxpZ2h0RnJvbnQgOiB2TGlnaHRCYWNrOwoJI2Vsc2UKCQlyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gdkxpZ2h0RnJvbnQ7CgkjZW5kaWYKCXJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKj0gQlJERl9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICkgKiBnZXRTaGFkb3dNYXNrKCk7CgkjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlOwoJI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAsS2p0PWAjZGVmaW5lIE1BVENBUAp2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCSNpbmNsdWRlIDxmb2dfdmVydGV4PgoJdlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7Cn1gLEpqdD1gI2RlZmluZSBNQVRDQVAKdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKdW5pZm9ybSBzYW1wbGVyMkQgbWF0Y2FwOwp2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPgoJdmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7Cgl2ZWMzIHggPSBub3JtYWxpemUoIHZlYzMoIHZpZXdEaXIueiwgMC4wLCAtIHZpZXdEaXIueCApICk7Cgl2ZWMzIHkgPSBjcm9zcyggdmlld0RpciwgeCApOwoJdmVjMiB1diA9IHZlYzIoIGRvdCggeCwgbm9ybWFsICksIGRvdCggeSwgbm9ybWFsICkgKSAqIDAuNDk1ICsgMC41OwoJI2lmZGVmIFVTRV9NQVRDQVAKCQl2ZWM0IG1hdGNhcENvbG9yID0gdGV4dHVyZTJEKCBtYXRjYXAsIHV2ICk7CgkjZWxzZQoJCXZlYzQgbWF0Y2FwQ29sb3IgPSB2ZWM0KCB2ZWMzKCBtaXgoIDAuMiwgMC44LCB1di55ICkgKSwgMS4wICk7CgkjZW5kaWYKCXZlYzMgb3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2IgKiBtYXRjYXBDb2xvci5yZ2I7CgkjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KCSNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD4KCSNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+Cn1gLCRqdD1gI2RlZmluZSBOT1JNQUwKI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkKCXZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwojZW5kaWYKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkKCXZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6OwojZW5kaWYKfWAsdFV0PWAjZGVmaW5lIE5PUk1BTAp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApCgl2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2VuZGlmCiNpbmNsdWRlIDxwYWNraW5nPgojaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPgoJZ2xfRnJhZ0NvbG9yID0gdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApOwp9YCxlVXQ9YCNkZWZpbmUgUEhPTkcKdmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJI2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y29sb3JfdmVydGV4PgoJI2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCXZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6OwoJI2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD4KCSNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PgoJI2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsblV0PWAjZGVmaW5lIFBIT05HCnVuaWZvcm0gdmVjMyBkaWZmdXNlOwp1bmlmb3JtIHZlYzMgZW1pc3NpdmU7CnVuaWZvcm0gdmVjMyBzcGVjdWxhcjsKdW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PgojaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxic2Rmcz4KI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CglSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApOwoJdmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxsaWdodHNfcGhvbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+CgkjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+Cgl2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlOwoJI2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAsb1V0PWAjZGVmaW5lIFNUQU5EQVJECnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uOwojaWZkZWYgVVNFX1RSQU5TTUlTU0lPTgoJdmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uOwojZW5kaWYKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8dXYyX3ZlcnRleD4KCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJdlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KI2lmZGVmIFVTRV9UUkFOU01JU1NJT04KCXZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7CiNlbmRpZgp9YCxpVXQ9YCNkZWZpbmUgU1RBTkRBUkQKI2lmZGVmIFBIWVNJQ0FMCgkjZGVmaW5lIElPUgoJI2RlZmluZSBTUEVDVUxBUgojZW5kaWYKdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTsKdW5pZm9ybSBmbG9hdCByb3VnaG5lc3M7CnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzOwp1bmlmb3JtIGZsb2F0IG9wYWNpdHk7CiNpZmRlZiBJT1IKCXVuaWZvcm0gZmxvYXQgaW9yOwojZW5kaWYKI2lmZGVmIFNQRUNVTEFSCgl1bmlmb3JtIGZsb2F0IHNwZWN1bGFySW50ZW5zaXR5OwoJdW5pZm9ybSB2ZWMzIHNwZWN1bGFyQ29sb3I7CgkjaWZkZWYgVVNFX1NQRUNVTEFSSU5URU5TSVRZTUFQCgkJdW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJJbnRlbnNpdHlNYXA7CgkjZW5kaWYKCSNpZmRlZiBVU0VfU1BFQ1VMQVJDT0xPUk1BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFyQ29sb3JNYXA7CgkjZW5kaWYKI2VuZGlmCiNpZmRlZiBVU0VfQ0xFQVJDT0FUCgl1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDsKCXVuaWZvcm0gZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzOwojZW5kaWYKI2lmZGVmIFVTRV9TSEVFTgoJdW5pZm9ybSB2ZWMzIHNoZWVuQ29sb3I7Cgl1bmlmb3JtIGZsb2F0IHNoZWVuUm91Z2huZXNzOwoJI2lmZGVmIFVTRV9TSEVFTkNPTE9STUFQCgkJdW5pZm9ybSBzYW1wbGVyMkQgc2hlZW5Db2xvck1hcDsKCSNlbmRpZgoJI2lmZGVmIFVTRV9TSEVFTlJPVUdITkVTU01BUAoJCXVuaWZvcm0gc2FtcGxlcjJEIHNoZWVuUm91Z2huZXNzTWFwOwoJI2VuZGlmCiNlbmRpZgp2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHBhY2tpbmc+CiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGJzZGZzPgojaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8ZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPgojaW5jbHVkZSA8bm9ybWFsX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHRyYW5zbWlzc2lvbl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsZWFyY29hdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8cm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApOwoJUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTsKCXZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlID0gZW1pc3NpdmU7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCSNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWV0YWxuZXNzbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+CgkjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+Cgl2ZWMzIHRvdGFsRGlmZnVzZSA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7Cgl2ZWMzIHRvdGFsU3BlY3VsYXIgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXI7CgkjaW5jbHVkZSA8dHJhbnNtaXNzaW9uX2ZyYWdtZW50PgoJdmVjMyBvdXRnb2luZ0xpZ2h0ID0gdG90YWxEaWZmdXNlICsgdG90YWxTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTsKCSNpZmRlZiBVU0VfU0hFRU4KCQlmbG9hdCBzaGVlbkVuZXJneUNvbXAgPSAxLjAgLSAwLjE1NyAqIG1heDMoIG1hdGVyaWFsLnNoZWVuQ29sb3IgKTsKCQlvdXRnb2luZ0xpZ2h0ID0gb3V0Z29pbmdMaWdodCAqIHNoZWVuRW5lcmd5Q29tcCArIHNoZWVuU3BlY3VsYXI7CgkjZW5kaWYKCSNpZmRlZiBVU0VfQ0xFQVJDT0FUCgkJZmxvYXQgZG90TlZjYyA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7CgkJdmVjMyBGY2MgPSBGX1NjaGxpY2soIG1hdGVyaWFsLmNsZWFyY29hdEYwLCBtYXRlcmlhbC5jbGVhcmNvYXRGOTAsIGRvdE5WY2MgKTsKCQlvdXRnb2luZ0xpZ2h0ID0gb3V0Z29pbmdMaWdodCAqICggMS4wIC0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogRmNjICkgKyBjbGVhcmNvYXRTcGVjdWxhciAqIG1hdGVyaWFsLmNsZWFyY29hdDsKCSNlbmRpZgoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50Pgp9YCxhVXQ9YCNkZWZpbmUgVE9PTgp2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxub3JtYWxfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDx1dl92ZXJ0ZXg+CgkjaW5jbHVkZSA8dXYyX3ZlcnRleD4KCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+CgkjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PgoJI2luY2x1ZGUgPHByb2plY3RfdmVydGV4PgoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJdlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7CgkjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PgoJI2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsclV0PWAjZGVmaW5lIFRPT04KdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8cGFja2luZz4KI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhdGVzdF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Z3JhZGllbnRtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnNkZnM+CiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj4KI2luY2x1ZGUgPG5vcm1hbF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bGlnaHRzX3Rvb25fcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCVJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ID0gUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7Cgl2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PgoJI2luY2x1ZGUgPG1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD4KCSNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPgoJI2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPgoJI2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGxpZ2h0c190b29uX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz4KCSNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPgoJI2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PgoJdmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTsKCSNpbmNsdWRlIDxvdXRwdXRfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGZvZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD4KfWAsc1V0PWB1bmlmb3JtIGZsb2F0IHNpemU7CnVuaWZvcm0gZmxvYXQgc2NhbGU7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+CgkjaW5jbHVkZSA8YmVnaW5fdmVydGV4PgoJI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCWdsX1BvaW50U2l6ZSA9IHNpemU7CgkjaWZkZWYgVVNFX1NJWkVBVFRFTlVBVElPTgoJCWJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTsKCQlpZiAoIGlzUGVyc3BlY3RpdmUgKSBnbF9Qb2ludFNpemUgKj0gKCBzY2FsZSAvIC0gbXZQb3NpdGlvbi56ICk7CgkjZW5kaWYKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD4KCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8Zm9nX3ZlcnRleD4KfWAsbFV0PWB1bmlmb3JtIHZlYzMgZGlmZnVzZTsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YWxwaGF0ZXN0X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD4Kdm9pZCBtYWluKCkgewoJI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD4KCXZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApOwoJdmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7CgkjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8bWFwX3BhcnRpY2xlX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD4KCW91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiOwoJI2luY2x1ZGUgPG91dHB1dF9mcmFnbWVudD4KCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+Cn1gLGNVdD1gI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PgojaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+CiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+CnZvaWQgbWFpbigpIHsKCSNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD4KCSNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD4KCSNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+CgkjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PgoJI2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD4KCSNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD4KCSNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+CgkjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD4KCSNpbmNsdWRlIDxmb2dfdmVydGV4Pgp9YCxtVXQ9YHVuaWZvcm0gdmVjMyBjb2xvcjsKdW5pZm9ybSBmbG9hdCBvcGFjaXR5OwojaW5jbHVkZSA8Y29tbW9uPgojaW5jbHVkZSA8cGFja2luZz4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8YnNkZnM+CiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj4KI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CglnbF9GcmFnQ29sb3IgPSB2ZWM0KCBjb2xvciwgb3BhY2l0eSAqICggMS4wIC0gZ2V0U2hhZG93TWFzaygpICkgKTsKCSNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD4KCSNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50Pgp9YCxmVXQ9YHVuaWZvcm0gZmxvYXQgcm90YXRpb247CnVuaWZvcm0gdmVjMiBjZW50ZXI7CiNpbmNsdWRlIDxjb21tb24+CiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD4KI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PgojaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8dXZfdmVydGV4PgoJdmVjNCBtdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7Cgl2ZWMyIHNjYWxlOwoJc2NhbGUueCA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDAgXS54LCBtb2RlbE1hdHJpeFsgMCBdLnksIG1vZGVsTWF0cml4WyAwIF0ueiApICk7CglzY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLngsIG1vZGVsTWF0cml4WyAxIF0ueSwgbW9kZWxNYXRyaXhbIDEgXS56ICkgKTsKCSNpZm5kZWYgVVNFX1NJWkVBVFRFTlVBVElPTgoJCWJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTsKCQlpZiAoIGlzUGVyc3BlY3RpdmUgKSBzY2FsZSAqPSAtIG12UG9zaXRpb24uejsKCSNlbmRpZgoJdmVjMiBhbGlnbmVkUG9zaXRpb24gPSAoIHBvc2l0aW9uLnh5IC0gKCBjZW50ZXIgLSB2ZWMyKCAwLjUgKSApICkgKiBzY2FsZTsKCXZlYzIgcm90YXRlZFBvc2l0aW9uOwoJcm90YXRlZFBvc2l0aW9uLnggPSBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCAtIHNpbiggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55OwoJcm90YXRlZFBvc2l0aW9uLnkgPSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCArIGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55OwoJbXZQb3NpdGlvbi54eSArPSByb3RhdGVkUG9zaXRpb247CglnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uOwoJI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD4KCSNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PgoJI2luY2x1ZGUgPGZvZ192ZXJ0ZXg+Cn1gLHBVdD1gdW5pZm9ybSB2ZWMzIGRpZmZ1c2U7CnVuaWZvcm0gZmxvYXQgb3BhY2l0eTsKI2luY2x1ZGUgPGNvbW1vbj4KI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+CiNpbmNsdWRlIDxhbHBoYXRlc3RfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PgojaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD4KI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Pgp2b2lkIG1haW4oKSB7CgkjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PgoJdmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7Cgl2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTsKCSNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD4KCSNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+CgkjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PgoJb3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7CgkjaW5jbHVkZSA8b3V0cHV0X2ZyYWdtZW50PgoJI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PgoJI2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD4KCSNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+Cn1gLHNpPXthbHBoYW1hcF9mcmFnbWVudDpWQnQsYWxwaGFtYXBfcGFyc19mcmFnbWVudDpqQnQsYWxwaGF0ZXN0X2ZyYWdtZW50OlVCdCxhbHBoYXRlc3RfcGFyc19mcmFnbWVudDpZQnQsYW9tYXBfZnJhZ21lbnQ6R0J0LGFvbWFwX3BhcnNfZnJhZ21lbnQ6V0J0LGJlZ2luX3ZlcnRleDpxQnQsYmVnaW5ub3JtYWxfdmVydGV4OlpCdCxic2RmczpYQnQsYnVtcG1hcF9wYXJzX2ZyYWdtZW50OlFCdCxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ6S0J0LGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50OkpCdCxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg6JEJ0LGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg6dFZ0LGNvbG9yX2ZyYWdtZW50OmVWdCxjb2xvcl9wYXJzX2ZyYWdtZW50Om5WdCxjb2xvcl9wYXJzX3ZlcnRleDpvVnQsY29sb3JfdmVydGV4OmlWdCxjb21tb246YVZ0LGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudDpyVnQsZGVmYXVsdG5vcm1hbF92ZXJ0ZXg6c1Z0LGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleDpsVnQsZGlzcGxhY2VtZW50bWFwX3ZlcnRleDpjVnQsZW1pc3NpdmVtYXBfZnJhZ21lbnQ6bVZ0LGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ6ZlZ0LGVuY29kaW5nc19mcmFnbWVudDpwVnQsZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ6ZFZ0LGVudm1hcF9mcmFnbWVudDpnVnQsZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50OnVWdCxlbnZtYXBfcGFyc19mcmFnbWVudDpoVnQsZW52bWFwX3BhcnNfdmVydGV4Ol9WdCxlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudDpSVnQsZW52bWFwX3ZlcnRleDpDVnQsZm9nX3ZlcnRleDpNVnQsZm9nX3BhcnNfdmVydGV4OmJWdCxmb2dfZnJhZ21lbnQ6T1Z0LGZvZ19wYXJzX2ZyYWdtZW50OlBWdCxncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50OnlWdCxsaWdodG1hcF9mcmFnbWVudDp4VnQsbGlnaHRtYXBfcGFyc19mcmFnbWVudDp2VnQsbGlnaHRzX2xhbWJlcnRfdmVydGV4OndWdCxsaWdodHNfcGFyc19iZWdpbjpTVnQsbGlnaHRzX3Rvb25fZnJhZ21lbnQ6RVZ0LGxpZ2h0c190b29uX3BhcnNfZnJhZ21lbnQ6a1Z0LGxpZ2h0c19waG9uZ19mcmFnbWVudDpOVnQsbGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ6VFZ0LGxpZ2h0c19waHlzaWNhbF9mcmFnbWVudDpBVnQsbGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6RFZ0LGxpZ2h0c19mcmFnbWVudF9iZWdpbjpJVnQsbGlnaHRzX2ZyYWdtZW50X21hcHM6elZ0LGxpZ2h0c19mcmFnbWVudF9lbmQ6SFZ0LGxvZ2RlcHRoYnVmX2ZyYWdtZW50OkZWdCxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50OkxWdCxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleDpCVnQsbG9nZGVwdGhidWZfdmVydGV4OlZWdCxtYXBfZnJhZ21lbnQ6alZ0LG1hcF9wYXJzX2ZyYWdtZW50OlVWdCxtYXBfcGFydGljbGVfZnJhZ21lbnQ6WVZ0LG1hcF9wYXJ0aWNsZV9wYXJzX2ZyYWdtZW50OkdWdCxtZXRhbG5lc3NtYXBfZnJhZ21lbnQ6V1Z0LG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50OnFWdCxtb3JwaG5vcm1hbF92ZXJ0ZXg6WlZ0LG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4OlhWdCxtb3JwaHRhcmdldF92ZXJ0ZXg6UVZ0LG5vcm1hbF9mcmFnbWVudF9iZWdpbjpLVnQsbm9ybWFsX2ZyYWdtZW50X21hcHM6SlZ0LG5vcm1hbF9wYXJzX2ZyYWdtZW50OiRWdCxub3JtYWxfcGFyc192ZXJ0ZXg6dGp0LG5vcm1hbF92ZXJ0ZXg6ZWp0LG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50Om5qdCxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X2JlZ2luOm9qdCxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHM6aWp0LGNsZWFyY29hdF9wYXJzX2ZyYWdtZW50OmFqdCxvdXRwdXRfZnJhZ21lbnQ6cmp0LHBhY2tpbmc6c2p0LHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ6bGp0LHByb2plY3RfdmVydGV4OmNqdCxkaXRoZXJpbmdfZnJhZ21lbnQ6bWp0LGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50OmZqdCxyb3VnaG5lc3NtYXBfZnJhZ21lbnQ6cGp0LHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50OmRqdCxzaGFkb3dtYXBfcGFyc19mcmFnbWVudDpnanQsc2hhZG93bWFwX3BhcnNfdmVydGV4OnVqdCxzaGFkb3dtYXBfdmVydGV4OmhqdCxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ6X2p0LHNraW5iYXNlX3ZlcnRleDpDanQsc2tpbm5pbmdfcGFyc192ZXJ0ZXg6TWp0LHNraW5uaW5nX3ZlcnRleDpianQsc2tpbm5vcm1hbF92ZXJ0ZXg6T2p0LHNwZWN1bGFybWFwX2ZyYWdtZW50OlBqdCxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50OnlqdCx0b25lbWFwcGluZ19mcmFnbWVudDp4anQsdG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDp2anQsdHJhbnNtaXNzaW9uX2ZyYWdtZW50OndqdCx0cmFuc21pc3Npb25fcGFyc19mcmFnbWVudDpTanQsdXZfcGFyc19mcmFnbWVudDpSanQsdXZfcGFyc192ZXJ0ZXg6RWp0LHV2X3ZlcnRleDpranQsdXYyX3BhcnNfZnJhZ21lbnQ6Tmp0LHV2Ml9wYXJzX3ZlcnRleDpUanQsdXYyX3ZlcnRleDpBanQsd29ybGRwb3NfdmVydGV4OkRqdCxiYWNrZ3JvdW5kX3ZlcnQ6SWp0LGJhY2tncm91bmRfZnJhZzp6anQsY3ViZV92ZXJ0OkhqdCxjdWJlX2ZyYWc6Rmp0LGRlcHRoX3ZlcnQ6TGp0LGRlcHRoX2ZyYWc6Qmp0LGRpc3RhbmNlUkdCQV92ZXJ0OlZqdCxkaXN0YW5jZVJHQkFfZnJhZzpqanQsZXF1aXJlY3RfdmVydDpVanQsZXF1aXJlY3RfZnJhZzpZanQsbGluZWRhc2hlZF92ZXJ0OkdqdCxsaW5lZGFzaGVkX2ZyYWc6V2p0LG1lc2hiYXNpY192ZXJ0OnFqdCxtZXNoYmFzaWNfZnJhZzpaanQsbWVzaGxhbWJlcnRfdmVydDpYanQsbWVzaGxhbWJlcnRfZnJhZzpRanQsbWVzaG1hdGNhcF92ZXJ0OktqdCxtZXNobWF0Y2FwX2ZyYWc6Smp0LG1lc2hub3JtYWxfdmVydDokanQsbWVzaG5vcm1hbF9mcmFnOnRVdCxtZXNocGhvbmdfdmVydDplVXQsbWVzaHBob25nX2ZyYWc6blV0LG1lc2hwaHlzaWNhbF92ZXJ0Om9VdCxtZXNocGh5c2ljYWxfZnJhZzppVXQsbWVzaHRvb25fdmVydDphVXQsbWVzaHRvb25fZnJhZzpyVXQscG9pbnRzX3ZlcnQ6c1V0LHBvaW50c19mcmFnOmxVdCxzaGFkb3dfdmVydDpjVXQsc2hhZG93X2ZyYWc6bVV0LHNwcml0ZV92ZXJ0OmZVdCxzcHJpdGVfZnJhZzpwVXR9LHJuPXtjb21tb246e2RpZmZ1c2U6e3ZhbHVlOm5ldyB6bigxNjc3NzIxNSl9LG9wYWNpdHk6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBtbH0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgbWx9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSxhbHBoYVRlc3Q6e3ZhbHVlOjB9fSxzcGVjdWxhcm1hcDp7c3BlY3VsYXJNYXA6e3ZhbHVlOm51bGx9fSxlbnZtYXA6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9LHJlZmxlY3Rpdml0eTp7dmFsdWU6MX0saW9yOnt2YWx1ZToxLjV9LHJlZnJhY3Rpb25SYXRpbzp7dmFsdWU6Ljk4fX0sYW9tYXA6e2FvTWFwOnt2YWx1ZTpudWxsfSxhb01hcEludGVuc2l0eTp7dmFsdWU6MX19LGxpZ2h0bWFwOntsaWdodE1hcDp7dmFsdWU6bnVsbH0sbGlnaHRNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxlbWlzc2l2ZW1hcDp7ZW1pc3NpdmVNYXA6e3ZhbHVlOm51bGx9fSxidW1wbWFwOntidW1wTWFwOnt2YWx1ZTpudWxsfSxidW1wU2NhbGU6e3ZhbHVlOjF9fSxub3JtYWxtYXA6e25vcm1hbE1hcDp7dmFsdWU6bnVsbH0sbm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBTZSgxLDEpfX0sZGlzcGxhY2VtZW50bWFwOntkaXNwbGFjZW1lbnRNYXA6e3ZhbHVlOm51bGx9LGRpc3BsYWNlbWVudFNjYWxlOnt2YWx1ZToxfSxkaXNwbGFjZW1lbnRCaWFzOnt2YWx1ZTowfX0scm91Z2huZXNzbWFwOntyb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxtZXRhbG5lc3NtYXA6e21ldGFsbmVzc01hcDp7dmFsdWU6bnVsbH19LGdyYWRpZW50bWFwOntncmFkaWVudE1hcDp7dmFsdWU6bnVsbH19LGZvZzp7Zm9nRGVuc2l0eTp7dmFsdWU6MjVlLTV9LGZvZ05lYXI6e3ZhbHVlOjF9LGZvZ0Zhcjp7dmFsdWU6MmUzfSxmb2dDb2xvcjp7dmFsdWU6bmV3IHpuKDE2Nzc3MjE1KX19LGxpZ2h0czp7YW1iaWVudExpZ2h0Q29sb3I6e3ZhbHVlOltdfSxsaWdodFByb2JlOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxjb2xvcjp7fX19LGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxkaXJlY3Rpb25hbFNoYWRvd01hcDp7dmFsdWU6W119LGRpcmVjdGlvbmFsU2hhZG93TWF0cml4Ont2YWx1ZTpbXX0sc3BvdExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGlyZWN0aW9uOnt9LGRpc3RhbmNlOnt9LGNvbmVDb3M6e30scGVudW1icmFDb3M6e30sZGVjYXk6e319fSxzcG90TGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e319fSxzcG90U2hhZG93TWFwOnt2YWx1ZTpbXX0sc3BvdFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHBvaW50TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkZWNheTp7fSxkaXN0YW5jZTp7fX19LHBvaW50TGlnaHRTaGFkb3dzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntzaGFkb3dCaWFzOnt9LHNoYWRvd05vcm1hbEJpYXM6e30sc2hhZG93UmFkaXVzOnt9LHNoYWRvd01hcFNpemU6e30sc2hhZG93Q2FtZXJhTmVhcjp7fSxzaGFkb3dDYW1lcmFGYXI6e319fSxwb2ludFNoYWRvd01hcDp7dmFsdWU6W119LHBvaW50U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0saGVtaXNwaGVyZUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LHNreUNvbG9yOnt9LGdyb3VuZENvbG9yOnt9fX0scmVjdEFyZWFMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LHdpZHRoOnt9LGhlaWdodDp7fX19LGx0Y18xOnt2YWx1ZTpudWxsfSxsdGNfMjp7dmFsdWU6bnVsbH19LHBvaW50czp7ZGlmZnVzZTp7dmFsdWU6bmV3IHpuKDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sc2l6ZTp7dmFsdWU6MX0sc2NhbGU6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LGFscGhhVGVzdDp7dmFsdWU6MH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBtbH19LHNwcml0ZTp7ZGlmZnVzZTp7dmFsdWU6bmV3IHpuKDE2Nzc3MjE1KX0sb3BhY2l0eTp7dmFsdWU6MX0sY2VudGVyOnt2YWx1ZTpuZXcgU2UoLjUsLjUpfSxyb3RhdGlvbjp7dmFsdWU6MH0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sYWxwaGFUZXN0Ont2YWx1ZTowfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IG1sfX19LGtPPXtiYXNpYzp7dW5pZm9ybXM6dm0oW3JuLmNvbW1vbixybi5zcGVjdWxhcm1hcCxybi5lbnZtYXAscm4uYW9tYXAscm4ubGlnaHRtYXAscm4uZm9nXSksdmVydGV4U2hhZGVyOnNpLm1lc2hiYXNpY192ZXJ0LGZyYWdtZW50U2hhZGVyOnNpLm1lc2hiYXNpY19mcmFnfSxsYW1iZXJ0Ont1bmlmb3Jtczp2bShbcm4uY29tbW9uLHJuLnNwZWN1bGFybWFwLHJuLmVudm1hcCxybi5hb21hcCxybi5saWdodG1hcCxybi5lbWlzc2l2ZW1hcCxybi5mb2cscm4ubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IHpuKDApfX1dKSx2ZXJ0ZXhTaGFkZXI6c2kubWVzaGxhbWJlcnRfdmVydCxmcmFnbWVudFNoYWRlcjpzaS5tZXNobGFtYmVydF9mcmFnfSxwaG9uZzp7dW5pZm9ybXM6dm0oW3JuLmNvbW1vbixybi5zcGVjdWxhcm1hcCxybi5lbnZtYXAscm4uYW9tYXAscm4ubGlnaHRtYXAscm4uZW1pc3NpdmVtYXAscm4uYnVtcG1hcCxybi5ub3JtYWxtYXAscm4uZGlzcGxhY2VtZW50bWFwLHJuLmZvZyxybi5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgem4oMCl9LHNwZWN1bGFyOnt2YWx1ZTpuZXcgem4oMTExODQ4MSl9LHNoaW5pbmVzczp7dmFsdWU6MzB9fV0pLHZlcnRleFNoYWRlcjpzaS5tZXNocGhvbmdfdmVydCxmcmFnbWVudFNoYWRlcjpzaS5tZXNocGhvbmdfZnJhZ30sc3RhbmRhcmQ6e3VuaWZvcm1zOnZtKFtybi5jb21tb24scm4uZW52bWFwLHJuLmFvbWFwLHJuLmxpZ2h0bWFwLHJuLmVtaXNzaXZlbWFwLHJuLmJ1bXBtYXAscm4ubm9ybWFsbWFwLHJuLmRpc3BsYWNlbWVudG1hcCxybi5yb3VnaG5lc3NtYXAscm4ubWV0YWxuZXNzbWFwLHJuLmZvZyxybi5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgem4oMCl9LHJvdWdobmVzczp7dmFsdWU6MX0sbWV0YWxuZXNzOnt2YWx1ZTowfSxlbnZNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpzaS5tZXNocGh5c2ljYWxfdmVydCxmcmFnbWVudFNoYWRlcjpzaS5tZXNocGh5c2ljYWxfZnJhZ30sdG9vbjp7dW5pZm9ybXM6dm0oW3JuLmNvbW1vbixybi5hb21hcCxybi5saWdodG1hcCxybi5lbWlzc2l2ZW1hcCxybi5idW1wbWFwLHJuLm5vcm1hbG1hcCxybi5kaXNwbGFjZW1lbnRtYXAscm4uZ3JhZGllbnRtYXAscm4uZm9nLHJuLmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyB6bigwKX19XSksdmVydGV4U2hhZGVyOnNpLm1lc2h0b29uX3ZlcnQsZnJhZ21lbnRTaGFkZXI6c2kubWVzaHRvb25fZnJhZ30sbWF0Y2FwOnt1bmlmb3Jtczp2bShbcm4uY29tbW9uLHJuLmJ1bXBtYXAscm4ubm9ybWFsbWFwLHJuLmRpc3BsYWNlbWVudG1hcCxybi5mb2cse21hdGNhcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOnNpLm1lc2htYXRjYXBfdmVydCxmcmFnbWVudFNoYWRlcjpzaS5tZXNobWF0Y2FwX2ZyYWd9LHBvaW50czp7dW5pZm9ybXM6dm0oW3JuLnBvaW50cyxybi5mb2ddKSx2ZXJ0ZXhTaGFkZXI6c2kucG9pbnRzX3ZlcnQsZnJhZ21lbnRTaGFkZXI6c2kucG9pbnRzX2ZyYWd9LGRhc2hlZDp7dW5pZm9ybXM6dm0oW3JuLmNvbW1vbixybi5mb2cse3NjYWxlOnt2YWx1ZToxfSxkYXNoU2l6ZTp7dmFsdWU6MX0sdG90YWxTaXplOnt2YWx1ZToyfX1dKSx2ZXJ0ZXhTaGFkZXI6c2kubGluZWRhc2hlZF92ZXJ0LGZyYWdtZW50U2hhZGVyOnNpLmxpbmVkYXNoZWRfZnJhZ30sZGVwdGg6e3VuaWZvcm1zOnZtKFtybi5jb21tb24scm4uZGlzcGxhY2VtZW50bWFwXSksdmVydGV4U2hhZGVyOnNpLmRlcHRoX3ZlcnQsZnJhZ21lbnRTaGFkZXI6c2kuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3Jtczp2bShbcm4uY29tbW9uLHJuLmJ1bXBtYXAscm4ubm9ybWFsbWFwLHJuLmRpc3BsYWNlbWVudG1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnNpLm1lc2hub3JtYWxfdmVydCxmcmFnbWVudFNoYWRlcjpzaS5tZXNobm9ybWFsX2ZyYWd9LHNwcml0ZTp7dW5pZm9ybXM6dm0oW3JuLnNwcml0ZSxybi5mb2ddKSx2ZXJ0ZXhTaGFkZXI6c2kuc3ByaXRlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6c2kuc3ByaXRlX2ZyYWd9LGJhY2tncm91bmQ6e3VuaWZvcm1zOnt1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IG1sfSx0MkQ6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6c2kuYmFja2dyb3VuZF92ZXJ0LGZyYWdtZW50U2hhZGVyOnNpLmJhY2tncm91bmRfZnJhZ30sY3ViZTp7dW5pZm9ybXM6dm0oW3JuLmVudm1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnNpLmN1YmVfdmVydCxmcmFnbWVudFNoYWRlcjpzaS5jdWJlX2ZyYWd9LGVxdWlyZWN0Ont1bmlmb3Jtczp7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOnNpLmVxdWlyZWN0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6c2kuZXF1aXJlY3RfZnJhZ30sZGlzdGFuY2VSR0JBOnt1bmlmb3Jtczp2bShbcm4uY29tbW9uLHJuLmRpc3BsYWNlbWVudG1hcCx7cmVmZXJlbmNlUG9zaXRpb246e3ZhbHVlOm5ldyBwdH0sbmVhckRpc3RhbmNlOnt2YWx1ZToxfSxmYXJEaXN0YW5jZTp7dmFsdWU6MWUzfX1dKSx2ZXJ0ZXhTaGFkZXI6c2kuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6c2kuZGlzdGFuY2VSR0JBX2ZyYWd9LHNoYWRvdzp7dW5pZm9ybXM6dm0oW3JuLmxpZ2h0cyxybi5mb2cse2NvbG9yOnt2YWx1ZTpuZXcgem4oMCl9LG9wYWNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpzaS5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjpzaS5zaGFkb3dfZnJhZ319O2tPLnBoeXNpY2FsPXt1bmlmb3Jtczp2bShba08uc3RhbmRhcmQudW5pZm9ybXMse2NsZWFyY29hdDp7dmFsdWU6MH0sY2xlYXJjb2F0TWFwOnt2YWx1ZTpudWxsfSxjbGVhcmNvYXRSb3VnaG5lc3M6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Tm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBTZSgxLDEpfSxjbGVhcmNvYXROb3JtYWxNYXA6e3ZhbHVlOm51bGx9LHNoZWVuOnt2YWx1ZTowfSxzaGVlbkNvbG9yOnt2YWx1ZTpuZXcgem4oMCl9LHNoZWVuQ29sb3JNYXA6e3ZhbHVlOm51bGx9LHNoZWVuUm91Z2huZXNzOnt2YWx1ZToxfSxzaGVlblJvdWdobmVzc01hcDp7dmFsdWU6bnVsbH0sdHJhbnNtaXNzaW9uOnt2YWx1ZTowfSx0cmFuc21pc3Npb25NYXA6e3ZhbHVlOm51bGx9LHRyYW5zbWlzc2lvblNhbXBsZXJTaXplOnt2YWx1ZTpuZXcgU2V9LHRyYW5zbWlzc2lvblNhbXBsZXJNYXA6e3ZhbHVlOm51bGx9LHRoaWNrbmVzczp7dmFsdWU6MH0sdGhpY2tuZXNzTWFwOnt2YWx1ZTpudWxsfSxhdHRlbnVhdGlvbkRpc3RhbmNlOnt2YWx1ZTowfSxhdHRlbnVhdGlvbkNvbG9yOnt2YWx1ZTpuZXcgem4oMCl9LHNwZWN1bGFySW50ZW5zaXR5Ont2YWx1ZToxfSxzcGVjdWxhckludGVuc2l0eU1hcDp7dmFsdWU6bnVsbH0sc3BlY3VsYXJDb2xvcjp7dmFsdWU6bmV3IHpuKDEsMSwxKX0sc3BlY3VsYXJDb2xvck1hcDp7dmFsdWU6bnVsbH19XSksdmVydGV4U2hhZGVyOnNpLm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOnNpLm1lc2hwaHlzaWNhbF9mcmFnfTtmdW5jdGlvbiBkVXQobix0LGUsbyxpLGEpe2xldCByPW5ldyB6bigwKSxzPWk9PT0hMD8wOjEsbCxjLG09bnVsbCxmPTAscD1udWxsO2Z1bmN0aW9uIGcoTSx5KXtsZXQgTz0hMSxiPXkuaXNTY2VuZT09PSEwP3kuYmFja2dyb3VuZDpudWxsO2ImJmIuaXNUZXh0dXJlJiYoYj10LmdldChiKSk7bGV0IFI9bi54cixFPVIuZ2V0U2Vzc2lvbiYmUi5nZXRTZXNzaW9uKCk7RSYmRS5lbnZpcm9ubWVudEJsZW5kTW9kZT09PSJhZGRpdGl2ZSImJihiPW51bGwpLGI9PT1udWxsP18ocixzKTpiJiZiLmlzQ29sb3ImJihfKGIsMSksTz0hMCksKG4uYXV0b0NsZWFyfHxPKSYmbi5jbGVhcihuLmF1dG9DbGVhckNvbG9yLG4uYXV0b0NsZWFyRGVwdGgsbi5hdXRvQ2xlYXJTdGVuY2lsKSxiJiYoYi5pc0N1YmVUZXh0dXJlfHxiLm1hcHBpbmc9PT1iRik/KGM9PT12b2lkIDAmJihjPW5ldyBZcyhuZXcgejEoMSwxLDEpLG5ldyBYUCh7bmFtZToiQmFja2dyb3VuZEN1YmVNYXRlcmlhbCIsdW5pZm9ybXM6Z1Moa08uY3ViZS51bmlmb3JtcyksdmVydGV4U2hhZGVyOmtPLmN1YmUudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOmtPLmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZTpsbCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMSxmb2c6ITF9KSksYy5nZW9tZXRyeS5kZWxldGVBdHRyaWJ1dGUoIm5vcm1hbCIpLGMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJ1diIpLGMub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24oaixydCxKKXt0aGlzLm1hdHJpeFdvcmxkLmNvcHlQb3NpdGlvbihKLm1hdHJpeFdvcmxkKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGMubWF0ZXJpYWwsImVudk1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLmVudk1hcC52YWx1ZX19KSxvLnVwZGF0ZShjKSksYy5tYXRlcmlhbC51bmlmb3Jtcy5lbnZNYXAudmFsdWU9YixjLm1hdGVyaWFsLnVuaWZvcm1zLmZsaXBFbnZNYXAudmFsdWU9Yi5pc0N1YmVUZXh0dXJlJiZiLmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT09PSExPy0xOjEsKG0hPT1ifHxmIT09Yi52ZXJzaW9ufHxwIT09bi50b25lTWFwcGluZykmJihjLm1hdGVyaWFsLm5lZWRzVXBkYXRlPSEwLG09YixmPWIudmVyc2lvbixwPW4udG9uZU1hcHBpbmcpLE0udW5zaGlmdChjLGMuZ2VvbWV0cnksYy5tYXRlcmlhbCwwLDAsbnVsbCkpOmImJmIuaXNUZXh0dXJlJiYobD09PXZvaWQgMCYmKGw9bmV3IFlzKG5ldyBjNCgyLDIpLG5ldyBYUCh7bmFtZToiQmFja2dyb3VuZE1hdGVyaWFsIix1bmlmb3JtczpnUyhrTy5iYWNrZ3JvdW5kLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6a08uYmFja2dyb3VuZC52ZXJ0ZXhTaGFkZXIsZnJhZ21lbnRTaGFkZXI6a08uYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOm40LGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxsLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgibm9ybWFsIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGwubWF0ZXJpYWwsIm1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLnQyRC52YWx1ZX19KSxvLnVwZGF0ZShsKSksbC5tYXRlcmlhbC51bmlmb3Jtcy50MkQudmFsdWU9YixiLm1hdHJpeEF1dG9VcGRhdGU9PT0hMCYmYi51cGRhdGVNYXRyaXgoKSxsLm1hdGVyaWFsLnVuaWZvcm1zLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoYi5tYXRyaXgpLChtIT09Ynx8ZiE9PWIudmVyc2lvbnx8cCE9PW4udG9uZU1hcHBpbmcpJiYobC5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCxtPWIsZj1iLnZlcnNpb24scD1uLnRvbmVNYXBwaW5nKSxNLnVuc2hpZnQobCxsLmdlb21ldHJ5LGwubWF0ZXJpYWwsMCwwLG51bGwpKX1mdW5jdGlvbiBfKE0seSl7ZS5idWZmZXJzLmNvbG9yLnNldENsZWFyKE0ucixNLmcsTS5iLHksYSl9cmV0dXJue2dldENsZWFyQ29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0Q2xlYXJDb2xvcjpmdW5jdGlvbihNLHk9MSl7ci5zZXQoTSkscz15LF8ocixzKX0sZ2V0Q2xlYXJBbHBoYTpmdW5jdGlvbigpe3JldHVybiBzfSxzZXRDbGVhckFscGhhOmZ1bmN0aW9uKE0pe3M9TSxfKHIscyl9LHJlbmRlcjpnfX1mdW5jdGlvbiBnVXQobix0LGUsbyl7bGV0IGk9bi5nZXRQYXJhbWV0ZXIoMzQ5MjEpLGE9by5pc1dlYkdMMj9udWxsOnQuZ2V0KCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpLHI9by5pc1dlYkdMMnx8YSE9PW51bGwscz17fSxsPU0obnVsbCksYz1sO2Z1bmN0aW9uIG0obnQsbHQsYnQsb3QsdXQpe2xldCBndD0hMTtpZihyKXtsZXQgV3Q9XyhvdCxidCxsdCk7YyE9PVd0JiYoYz1XdCxwKGMub2JqZWN0KSksZ3Q9eShvdCx1dCksZ3QmJk8ob3QsdXQpfWVsc2V7bGV0IFd0PWx0LndpcmVmcmFtZT09PSEwOyhjLmdlb21ldHJ5IT09b3QuaWR8fGMucHJvZ3JhbSE9PWJ0LmlkfHxjLndpcmVmcmFtZSE9PVd0KSYmKGMuZ2VvbWV0cnk9b3QuaWQsYy5wcm9ncmFtPWJ0LmlkLGMud2lyZWZyYW1lPVd0LGd0PSEwKX1udC5pc0luc3RhbmNlZE1lc2g9PT0hMCYmKGd0PSEwKSx1dCE9PW51bGwmJmUudXBkYXRlKHV0LDM0OTYzKSxndCYmKEoobnQsbHQsYnQsb3QpLHV0IT09bnVsbCYmbi5iaW5kQnVmZmVyKDM0OTYzLGUuZ2V0KHV0KS5idWZmZXIpKX1mdW5jdGlvbiBmKCl7cmV0dXJuIG8uaXNXZWJHTDI/bi5jcmVhdGVWZXJ0ZXhBcnJheSgpOmEuY3JlYXRlVmVydGV4QXJyYXlPRVMoKX1mdW5jdGlvbiBwKG50KXtyZXR1cm4gby5pc1dlYkdMMj9uLmJpbmRWZXJ0ZXhBcnJheShudCk6YS5iaW5kVmVydGV4QXJyYXlPRVMobnQpfWZ1bmN0aW9uIGcobnQpe3JldHVybiBvLmlzV2ViR0wyP24uZGVsZXRlVmVydGV4QXJyYXkobnQpOmEuZGVsZXRlVmVydGV4QXJyYXlPRVMobnQpfWZ1bmN0aW9uIF8obnQsbHQsYnQpe2xldCBvdD1idC53aXJlZnJhbWU9PT0hMCx1dD1zW250LmlkXTt1dD09PXZvaWQgMCYmKHV0PXt9LHNbbnQuaWRdPXV0KTtsZXQgZ3Q9dXRbbHQuaWRdO2d0PT09dm9pZCAwJiYoZ3Q9e30sdXRbbHQuaWRdPWd0KTtsZXQgV3Q9Z3Rbb3RdO3JldHVybiBXdD09PXZvaWQgMCYmKFd0PU0oZigpKSxndFtvdF09V3QpLFd0fWZ1bmN0aW9uIE0obnQpe2xldCBsdD1bXSxidD1bXSxvdD1bXTtmb3IobGV0IHV0PTA7dXQ8aTt1dCsrKWx0W3V0XT0wLGJ0W3V0XT0wLG90W3V0XT0wO3JldHVybntnZW9tZXRyeTpudWxsLHByb2dyYW06bnVsbCx3aXJlZnJhbWU6ITEsbmV3QXR0cmlidXRlczpsdCxlbmFibGVkQXR0cmlidXRlczpidCxhdHRyaWJ1dGVEaXZpc29yczpvdCxvYmplY3Q6bnQsYXR0cmlidXRlczp7fSxpbmRleDpudWxsfX1mdW5jdGlvbiB5KG50LGx0KXtsZXQgYnQ9Yy5hdHRyaWJ1dGVzLG90PW50LmF0dHJpYnV0ZXMsdXQ9MDtmb3IobGV0IGd0IGluIG90KXtsZXQgV3Q9YnRbZ3RdLFJ0PW90W2d0XTtpZihXdD09PXZvaWQgMHx8V3QuYXR0cmlidXRlIT09UnR8fFd0LmRhdGEhPT1SdC5kYXRhKXJldHVybiEwO3V0Kyt9cmV0dXJuIGMuYXR0cmlidXRlc051bSE9PXV0fHxjLmluZGV4IT09bHR9ZnVuY3Rpb24gTyhudCxsdCl7bGV0IGJ0PXt9LG90PW50LmF0dHJpYnV0ZXMsdXQ9MDtmb3IobGV0IGd0IGluIG90KXtsZXQgV3Q9b3RbZ3RdLFJ0PXt9O1J0LmF0dHJpYnV0ZT1XdCxXdC5kYXRhJiYoUnQuZGF0YT1XdC5kYXRhKSxidFtndF09UnQsdXQrK31jLmF0dHJpYnV0ZXM9YnQsYy5hdHRyaWJ1dGVzTnVtPXV0LGMuaW5kZXg9bHR9ZnVuY3Rpb24gYigpe2xldCBudD1jLm5ld0F0dHJpYnV0ZXM7Zm9yKGxldCBsdD0wLGJ0PW50Lmxlbmd0aDtsdDxidDtsdCsrKW50W2x0XT0wfWZ1bmN0aW9uIFIobnQpe0UobnQsMCl9ZnVuY3Rpb24gRShudCxsdCl7bGV0IGJ0PWMubmV3QXR0cmlidXRlcyxvdD1jLmVuYWJsZWRBdHRyaWJ1dGVzLHV0PWMuYXR0cmlidXRlRGl2aXNvcnM7YnRbbnRdPTEsb3RbbnRdPT09MCYmKG4uZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobnQpLG90W250XT0xKSx1dFtudF0hPT1sdCYmKChvLmlzV2ViR0wyP246dC5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlbby5pc1dlYkdMMj8idmVydGV4QXR0cmliRGl2aXNvciI6InZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSJdKG50LGx0KSx1dFtudF09bHQpfWZ1bmN0aW9uIGooKXtsZXQgbnQ9Yy5uZXdBdHRyaWJ1dGVzLGx0PWMuZW5hYmxlZEF0dHJpYnV0ZXM7Zm9yKGxldCBidD0wLG90PWx0Lmxlbmd0aDtidDxvdDtidCsrKWx0W2J0XSE9PW50W2J0XSYmKG4uZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGJ0KSxsdFtidF09MCl9ZnVuY3Rpb24gcnQobnQsbHQsYnQsb3QsdXQsZ3Qpe28uaXNXZWJHTDI9PT0hMCYmKGJ0PT09NTEyNHx8YnQ9PT01MTI1KT9uLnZlcnRleEF0dHJpYklQb2ludGVyKG50LGx0LGJ0LHV0LGd0KTpuLnZlcnRleEF0dHJpYlBvaW50ZXIobnQsbHQsYnQsb3QsdXQsZ3QpfWZ1bmN0aW9uIEoobnQsbHQsYnQsb3Qpe2lmKG8uaXNXZWJHTDI9PT0hMSYmKG50LmlzSW5zdGFuY2VkTWVzaHx8b3QuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSkmJnQuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik9PT1udWxsKXJldHVybjtiKCk7bGV0IHV0PW90LmF0dHJpYnV0ZXMsZ3Q9YnQuZ2V0QXR0cmlidXRlcygpLFd0PWx0LmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGxldCBSdCBpbiBndCl7bGV0IEd0PWd0W1J0XTtpZihHdC5sb2NhdGlvbj49MCl7bGV0IHllPXV0W1J0XTtpZih5ZT09PXZvaWQgMCYmKFJ0PT09Imluc3RhbmNlTWF0cml4IiYmbnQuaW5zdGFuY2VNYXRyaXgmJih5ZT1udC5pbnN0YW5jZU1hdHJpeCksUnQ9PT0iaW5zdGFuY2VDb2xvciImJm50Lmluc3RhbmNlQ29sb3ImJih5ZT1udC5pbnN0YW5jZUNvbG9yKSkseWUhPT12b2lkIDApe2xldCBqZT15ZS5ub3JtYWxpemVkLGNlPXllLml0ZW1TaXplLEx0PWUuZ2V0KHllKTtpZihMdD09PXZvaWQgMCljb250aW51ZTtsZXQgUG49THQuYnVmZmVyLFZlPUx0LnR5cGUsRGU9THQuYnl0ZXNQZXJFbGVtZW50O2lmKHllLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2xldCBxdD15ZS5kYXRhLExlPXF0LnN0cmlkZSxIZT15ZS5vZmZzZXQ7aWYocXQmJnF0LmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXIpe2ZvcihsZXQgaHQ9MDtodDxHdC5sb2NhdGlvblNpemU7aHQrKylFKEd0LmxvY2F0aW9uK2h0LHF0Lm1lc2hQZXJBdHRyaWJ1dGUpO250LmlzSW5zdGFuY2VkTWVzaCE9PSEwJiZvdC5fbWF4SW5zdGFuY2VDb3VudD09PXZvaWQgMCYmKG90Ll9tYXhJbnN0YW5jZUNvdW50PXF0Lm1lc2hQZXJBdHRyaWJ1dGUqcXQuY291bnQpfWVsc2UgZm9yKGxldCBodD0wO2h0PEd0LmxvY2F0aW9uU2l6ZTtodCsrKVIoR3QubG9jYXRpb24raHQpO24uYmluZEJ1ZmZlcigzNDk2MixQbik7Zm9yKGxldCBodD0wO2h0PEd0LmxvY2F0aW9uU2l6ZTtodCsrKXJ0KEd0LmxvY2F0aW9uK2h0LGNlL0d0LmxvY2F0aW9uU2l6ZSxWZSxqZSxMZSpEZSwoSGUrY2UvR3QubG9jYXRpb25TaXplKmh0KSpEZSl9ZWxzZXtpZih5ZS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZSl7Zm9yKGxldCBxdD0wO3F0PEd0LmxvY2F0aW9uU2l6ZTtxdCsrKUUoR3QubG9jYXRpb24rcXQseWUubWVzaFBlckF0dHJpYnV0ZSk7bnQuaXNJbnN0YW5jZWRNZXNoIT09ITAmJm90Ll9tYXhJbnN0YW5jZUNvdW50PT09dm9pZCAwJiYob3QuX21heEluc3RhbmNlQ291bnQ9eWUubWVzaFBlckF0dHJpYnV0ZSp5ZS5jb3VudCl9ZWxzZSBmb3IobGV0IHF0PTA7cXQ8R3QubG9jYXRpb25TaXplO3F0KyspUihHdC5sb2NhdGlvbitxdCk7bi5iaW5kQnVmZmVyKDM0OTYyLFBuKTtmb3IobGV0IHF0PTA7cXQ8R3QubG9jYXRpb25TaXplO3F0KyspcnQoR3QubG9jYXRpb24rcXQsY2UvR3QubG9jYXRpb25TaXplLFZlLGplLGNlKkRlLGNlL0d0LmxvY2F0aW9uU2l6ZSpxdCpEZSl9fWVsc2UgaWYoV3QhPT12b2lkIDApe2xldCBqZT1XdFtSdF07aWYoamUhPT12b2lkIDApc3dpdGNoKGplLmxlbmd0aCl7Y2FzZSAyOm4udmVydGV4QXR0cmliMmZ2KEd0LmxvY2F0aW9uLGplKTticmVhaztjYXNlIDM6bi52ZXJ0ZXhBdHRyaWIzZnYoR3QubG9jYXRpb24samUpO2JyZWFrO2Nhc2UgNDpuLnZlcnRleEF0dHJpYjRmdihHdC5sb2NhdGlvbixqZSk7YnJlYWs7ZGVmYXVsdDpuLnZlcnRleEF0dHJpYjFmdihHdC5sb2NhdGlvbixqZSl9fX19aigpfWZ1bmN0aW9uIEV0KCl7dygpO2ZvcihsZXQgbnQgaW4gcyl7bGV0IGx0PXNbbnRdO2ZvcihsZXQgYnQgaW4gbHQpe2xldCBvdD1sdFtidF07Zm9yKGxldCB1dCBpbiBvdClnKG90W3V0XS5vYmplY3QpLGRlbGV0ZSBvdFt1dF07ZGVsZXRlIGx0W2J0XX1kZWxldGUgc1tudF19fWZ1bmN0aW9uIGp0KG50KXtpZihzW250LmlkXT09PXZvaWQgMClyZXR1cm47bGV0IGx0PXNbbnQuaWRdO2ZvcihsZXQgYnQgaW4gbHQpe2xldCBvdD1sdFtidF07Zm9yKGxldCB1dCBpbiBvdClnKG90W3V0XS5vYmplY3QpLGRlbGV0ZSBvdFt1dF07ZGVsZXRlIGx0W2J0XX1kZWxldGUgc1tudC5pZF19ZnVuY3Rpb24ga3QobnQpe2ZvcihsZXQgbHQgaW4gcyl7bGV0IGJ0PXNbbHRdO2lmKGJ0W250LmlkXT09PXZvaWQgMCljb250aW51ZTtsZXQgb3Q9YnRbbnQuaWRdO2ZvcihsZXQgdXQgaW4gb3QpZyhvdFt1dF0ub2JqZWN0KSxkZWxldGUgb3RbdXRdO2RlbGV0ZSBidFtudC5pZF19fWZ1bmN0aW9uIHcoKXtVKCksYyE9PWwmJihjPWwscChjLm9iamVjdCkpfWZ1bmN0aW9uIFUoKXtsLmdlb21ldHJ5PW51bGwsbC5wcm9ncmFtPW51bGwsbC53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOm0scmVzZXQ6dyxyZXNldERlZmF1bHRTdGF0ZTpVLGRpc3Bvc2U6RXQscmVsZWFzZVN0YXRlc09mR2VvbWV0cnk6anQscmVsZWFzZVN0YXRlc09mUHJvZ3JhbTprdCxpbml0QXR0cmlidXRlczpiLGVuYWJsZUF0dHJpYnV0ZTpSLGRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzOmp9fWZ1bmN0aW9uIHVVdChuLHQsZSxvKXtsZXQgaT1vLmlzV2ViR0wyLGE7ZnVuY3Rpb24gcihjKXthPWN9ZnVuY3Rpb24gcyhjLG0pe24uZHJhd0FycmF5cyhhLGMsbSksZS51cGRhdGUobSxhLDEpfWZ1bmN0aW9uIGwoYyxtLGYpe2lmKGY9PT0wKXJldHVybjtsZXQgcCxnO2lmKGkpcD1uLGc9ImRyYXdBcnJheXNJbnN0YW5jZWQiO2Vsc2UgaWYocD10LmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLGc9ImRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIscD09PW51bGwpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3JldHVybn1wW2ddKGEsYyxtLGYpLGUudXBkYXRlKG0sYSxmKX10aGlzLnNldE1vZGU9cix0aGlzLnJlbmRlcj1zLHRoaXMucmVuZGVySW5zdGFuY2VzPWx9ZnVuY3Rpb24gaFV0KG4sdCxlKXtsZXQgbztmdW5jdGlvbiBpKCl7aWYobyE9PXZvaWQgMClyZXR1cm4gbztpZih0LmhhcygiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik9PT0hMCl7bGV0IEo9dC5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO289bi5nZXRQYXJhbWV0ZXIoSi5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpfWVsc2Ugbz0wO3JldHVybiBvfWZ1bmN0aW9uIGEoSil7aWYoSj09PSJoaWdocCIpe2lmKG4uZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM4KS5wcmVjaXNpb24+MCYmbi5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzgpLnByZWNpc2lvbj4wKXJldHVybiJoaWdocCI7Sj0ibWVkaXVtcCJ9cmV0dXJuIEo9PT0ibWVkaXVtcCImJm4uZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM3KS5wcmVjaXNpb24+MCYmbi5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzcpLnByZWNpc2lvbj4wPyJtZWRpdW1wIjoibG93cCJ9bGV0IHI9dHlwZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQhPSJ1bmRlZmluZWQiJiZuIGluc3RhbmNlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dHx8dHlwZW9mIFdlYkdMMkNvbXB1dGVSZW5kZXJpbmdDb250ZXh0IT0idW5kZWZpbmVkIiYmbiBpbnN0YW5jZW9mIFdlYkdMMkNvbXB1dGVSZW5kZXJpbmdDb250ZXh0LHM9ZS5wcmVjaXNpb24hPT12b2lkIDA/ZS5wcmVjaXNpb246ImhpZ2hwIixsPWEocyk7bCE9PXMmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IixzLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIsbCwiaW5zdGVhZC4iKSxzPWwpO2xldCBjPXJ8fHQuaGFzKCJXRUJHTF9kcmF3X2J1ZmZlcnMiKSxtPWUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj09PSEwLGY9bi5nZXRQYXJhbWV0ZXIoMzQ5MzApLHA9bi5nZXRQYXJhbWV0ZXIoMzU2NjApLGc9bi5nZXRQYXJhbWV0ZXIoMzM3OSksXz1uLmdldFBhcmFtZXRlcigzNDA3NiksTT1uLmdldFBhcmFtZXRlcigzNDkyMSkseT1uLmdldFBhcmFtZXRlcigzNjM0NyksTz1uLmdldFBhcmFtZXRlcigzNjM0OCksYj1uLmdldFBhcmFtZXRlcigzNjM0OSksUj1wPjAsRT1yfHx0LmhhcygiT0VTX3RleHR1cmVfZmxvYXQiKSxqPVImJkUscnQ9cj9uLmdldFBhcmFtZXRlcigzNjE4Myk6MDtyZXR1cm57aXNXZWJHTDI6cixkcmF3QnVmZmVyczpjLGdldE1heEFuaXNvdHJvcHk6aSxnZXRNYXhQcmVjaXNpb246YSxwcmVjaXNpb246cyxsb2dhcml0aG1pY0RlcHRoQnVmZmVyOm0sbWF4VGV4dHVyZXM6ZixtYXhWZXJ0ZXhUZXh0dXJlczpwLG1heFRleHR1cmVTaXplOmcsbWF4Q3ViZW1hcFNpemU6XyxtYXhBdHRyaWJ1dGVzOk0sbWF4VmVydGV4VW5pZm9ybXM6eSxtYXhWYXJ5aW5nczpPLG1heEZyYWdtZW50VW5pZm9ybXM6Yix2ZXJ0ZXhUZXh0dXJlczpSLGZsb2F0RnJhZ21lbnRUZXh0dXJlczpFLGZsb2F0VmVydGV4VGV4dHVyZXM6aixtYXhTYW1wbGVzOnJ0fX1mdW5jdGlvbiBfVXQobil7bGV0IHQ9dGhpcyxlPW51bGwsbz0wLGk9ITEsYT0hMSxyPW5ldyByYixzPW5ldyBtbCxsPXt2YWx1ZTpudWxsLG5lZWRzVXBkYXRlOiExfTt0aGlzLnVuaWZvcm09bCx0aGlzLm51bVBsYW5lcz0wLHRoaXMubnVtSW50ZXJzZWN0aW9uPTAsdGhpcy5pbml0PWZ1bmN0aW9uKGYscCxnKXtsZXQgXz1mLmxlbmd0aCE9PTB8fHB8fG8hPT0wfHxpO3JldHVybiBpPXAsZT1tKGYsZywwKSxvPWYubGVuZ3RoLF99LHRoaXMuYmVnaW5TaGFkb3dzPWZ1bmN0aW9uKCl7YT0hMCxtKG51bGwpfSx0aGlzLmVuZFNoYWRvd3M9ZnVuY3Rpb24oKXthPSExLGMoKX0sdGhpcy5zZXRTdGF0ZT1mdW5jdGlvbihmLHAsZyl7bGV0IF89Zi5jbGlwcGluZ1BsYW5lcyxNPWYuY2xpcEludGVyc2VjdGlvbix5PWYuY2xpcFNoYWRvd3MsTz1uLmdldChmKTtpZighaXx8Xz09PW51bGx8fF8ubGVuZ3RoPT09MHx8YSYmIXkpYT9tKG51bGwpOmMoKTtlbHNle2xldCBiPWE/MDpvLFI9Yio0LEU9Ty5jbGlwcGluZ1N0YXRlfHxudWxsO2wudmFsdWU9RSxFPW0oXyxwLFIsZyk7Zm9yKGxldCBqPTA7aiE9PVI7KytqKUVbal09ZVtqXTtPLmNsaXBwaW5nU3RhdGU9RSx0aGlzLm51bUludGVyc2VjdGlvbj1NP3RoaXMubnVtUGxhbmVzOjAsdGhpcy5udW1QbGFuZXMrPWJ9fTtmdW5jdGlvbiBjKCl7bC52YWx1ZSE9PWUmJihsLnZhbHVlPWUsbC5uZWVkc1VwZGF0ZT1vPjApLHQubnVtUGxhbmVzPW8sdC5udW1JbnRlcnNlY3Rpb249MH1mdW5jdGlvbiBtKGYscCxnLF8pe2xldCBNPWYhPT1udWxsP2YubGVuZ3RoOjAseT1udWxsO2lmKE0hPT0wKXtpZih5PWwudmFsdWUsXyE9PSEwfHx5PT09bnVsbCl7bGV0IE89ZytNKjQsYj1wLm1hdHJpeFdvcmxkSW52ZXJzZTtzLmdldE5vcm1hbE1hdHJpeChiKSwoeT09PW51bGx8fHkubGVuZ3RoPE8pJiYoeT1uZXcgRmxvYXQzMkFycmF5KE8pKTtmb3IobGV0IFI9MCxFPWc7UiE9PU07KytSLEUrPTQpci5jb3B5KGZbUl0pLmFwcGx5TWF0cml4NChiLHMpLHIubm9ybWFsLnRvQXJyYXkoeSxFKSx5W0UrM109ci5jb25zdGFudH1sLnZhbHVlPXksbC5uZWVkc1VwZGF0ZT0hMH1yZXR1cm4gdC5udW1QbGFuZXM9TSx0Lm51bUludGVyc2VjdGlvbj0wLHl9fWZ1bmN0aW9uIENVdChuKXtsZXQgdD1uZXcgV2Vha01hcDtmdW5jdGlvbiBlKHIscyl7cmV0dXJuIHM9PT1MVz9yLm1hcHBpbmc9UzQ6cz09PUJXJiYoci5tYXBwaW5nPVI0KSxyfWZ1bmN0aW9uIG8ocil7aWYociYmci5pc1RleHR1cmUmJnIuaXNSZW5kZXJUYXJnZXRUZXh0dXJlPT09ITEpe2xldCBzPXIubWFwcGluZztpZihzPT09TFd8fHM9PT1CVylpZih0LmhhcyhyKSl7bGV0IGw9dC5nZXQocikudGV4dHVyZTtyZXR1cm4gZShsLHIubWFwcGluZyl9ZWxzZXtsZXQgbD1yLmltYWdlO2lmKGwmJmwuaGVpZ2h0PjApe2xldCBjPW5ldyBLSChsLmhlaWdodC8yKTtyZXR1cm4gYy5mcm9tRXF1aXJlY3Rhbmd1bGFyVGV4dHVyZShuLHIpLHQuc2V0KHIsYyksci5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKSxlKGMudGV4dHVyZSxyLm1hcHBpbmcpfWVsc2UgcmV0dXJuIG51bGx9fXJldHVybiByfWZ1bmN0aW9uIGkocil7bGV0IHM9ci50YXJnZXQ7cy5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKTtsZXQgbD10LmdldChzKTtsIT09dm9pZCAwJiYodC5kZWxldGUocyksbC5kaXNwb3NlKCkpfWZ1bmN0aW9uIGEoKXt0PW5ldyBXZWFrTWFwfXJldHVybntnZXQ6byxkaXNwb3NlOmF9fXZhciBIMT1jbGFzcyBleHRlbmRzIHM0e2NvbnN0cnVjdG9yKHQ9LTEsZT0xLG89MSxpPS0xLGE9LjEscj0yZTMpe3N1cGVyKCksdGhpcy50eXBlPSJPcnRob2dyYXBoaWNDYW1lcmEiLHRoaXMuem9vbT0xLHRoaXMudmlldz1udWxsLHRoaXMubGVmdD10LHRoaXMucmlnaHQ9ZSx0aGlzLnRvcD1vLHRoaXMuYm90dG9tPWksdGhpcy5uZWFyPWEsdGhpcy5mYXI9cix0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1jb3B5KHQsZSl7cmV0dXJuIHN1cGVyLmNvcHkodCxlKSx0aGlzLmxlZnQ9dC5sZWZ0LHRoaXMucmlnaHQ9dC5yaWdodCx0aGlzLnRvcD10LnRvcCx0aGlzLmJvdHRvbT10LmJvdHRvbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuem9vbT10Lnpvb20sdGhpcy52aWV3PXQudmlldz09PW51bGw/bnVsbDpPYmplY3QuYXNzaWduKHt9LHQudmlldyksdGhpc31zZXRWaWV3T2Zmc2V0KHQsZSxvLGksYSxyKXt0aGlzLnZpZXc9PT1udWxsJiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1vLHRoaXMudmlldy5vZmZzZXRZPWksdGhpcy52aWV3LndpZHRoPWEsdGhpcy52aWV3LmhlaWdodD1yLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWNsZWFyVmlld09mZnNldCgpe3RoaXMudmlldyE9PW51bGwmJih0aGlzLnZpZXcuZW5hYmxlZD0hMSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9dXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpe2xldCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvKDIqdGhpcy56b29tKSxlPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvKDIqdGhpcy56b29tKSxvPSh0aGlzLnJpZ2h0K3RoaXMubGVmdCkvMixpPSh0aGlzLnRvcCt0aGlzLmJvdHRvbSkvMixhPW8tdCxyPW8rdCxzPWkrZSxsPWktZTtpZih0aGlzLnZpZXchPT1udWxsJiZ0aGlzLnZpZXcuZW5hYmxlZCl7bGV0IGM9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS90aGlzLnZpZXcuZnVsbFdpZHRoL3RoaXMuem9vbSxtPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvdGhpcy52aWV3LmZ1bGxIZWlnaHQvdGhpcy56b29tO2ErPWMqdGhpcy52aWV3Lm9mZnNldFgscj1hK2MqdGhpcy52aWV3LndpZHRoLHMtPW0qdGhpcy52aWV3Lm9mZnNldFksbD1zLW0qdGhpcy52aWV3LmhlaWdodH10aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZU9ydGhvZ3JhcGhpYyhhLHIscyxsLHRoaXMubmVhcix0aGlzLmZhciksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMucHJvamVjdGlvbk1hdHJpeCkuaW52ZXJ0KCl9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3Quem9vbT10aGlzLnpvb20sZS5vYmplY3QubGVmdD10aGlzLmxlZnQsZS5vYmplY3QucmlnaHQ9dGhpcy5yaWdodCxlLm9iamVjdC50b3A9dGhpcy50b3AsZS5vYmplY3QuYm90dG9tPXRoaXMuYm90dG9tLGUub2JqZWN0Lm5lYXI9dGhpcy5uZWFyLGUub2JqZWN0LmZhcj10aGlzLmZhcix0aGlzLnZpZXchPT1udWxsJiYoZS5vYmplY3Qudmlldz1PYmplY3QuYXNzaWduKHt9LHRoaXMudmlldykpLGV9fTtIMS5wcm90b3R5cGUuaXNPcnRob2dyYXBoaWNDYW1lcmE9ITA7dmFyIF9TPWNsYXNzIGV4dGVuZHMgWFB7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy50eXBlPSJSYXdTaGFkZXJNYXRlcmlhbCJ9fTtfUy5wcm90b3R5cGUuaXNSYXdTaGFkZXJNYXRlcmlhbD0hMDt2YXIgZlM9NCxIeD04LEVPPU1hdGgucG93KDIsSHgpLElndD1bLjEyNSwuMjE1LC4zNSwuNDQ2LC41MjYsLjU4Ml0semd0PUh4LWZTKzErSWd0Lmxlbmd0aCxKMj0yMCxSVz1uZXcgSDEse19sb2RQbGFuZXM6WTUsX3NpemVMb2RzOkFkdCxfc2lnbWFzOlJIfT1NVXQoKSxEZHQ9bmV3IHpuLEVXPW51bGwsTjE9KDErTWF0aC5zcXJ0KDUpKS8yLCQyPTEvTjEsSWR0PVtuZXcgcHQoMSwxLDEpLG5ldyBwdCgtMSwxLDEpLG5ldyBwdCgxLDEsLTEpLG5ldyBwdCgtMSwxLC0xKSxuZXcgcHQoMCxOMSwkMiksbmV3IHB0KDAsTjEsLSQyKSxuZXcgcHQoJDIsMCxOMSksbmV3IHB0KC0kMiwwLE4xKSxuZXcgcHQoTjEsJDIsMCksbmV3IHB0KC1OMSwkMiwwKV0sSkg9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD1udWxsLHRoaXMuX2JsdXJNYXRlcmlhbD1iVXQoSjIpLHRoaXMuX2VxdWlyZWN0U2hhZGVyPW51bGwsdGhpcy5fY3ViZW1hcFNoYWRlcj1udWxsLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9ibHVyTWF0ZXJpYWwpfWZyb21TY2VuZSh0LGU9MCxvPS4xLGk9MTAwKXtFVz10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtsZXQgYT10aGlzLl9hbGxvY2F0ZVRhcmdldHMoKTtyZXR1cm4gdGhpcy5fc2NlbmVUb0N1YmVVVih0LG8saSxhKSxlPjAmJnRoaXMuX2JsdXIoYSwwLDAsZSksdGhpcy5fYXBwbHlQTVJFTShhKSx0aGlzLl9jbGVhbnVwKGEpLGF9ZnJvbUVxdWlyZWN0YW5ndWxhcih0LGU9bnVsbCl7cmV0dXJuIHRoaXMuX2Zyb21UZXh0dXJlKHQsZSl9ZnJvbUN1YmVtYXAodCxlPW51bGwpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0LGUpfWNvbXBpbGVDdWJlbWFwU2hhZGVyKCl7dGhpcy5fY3ViZW1hcFNoYWRlcj09PW51bGwmJih0aGlzLl9jdWJlbWFwU2hhZGVyPUZkdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9jdWJlbWFwU2hhZGVyKSl9Y29tcGlsZUVxdWlyZWN0YW5ndWxhclNoYWRlcigpe3RoaXMuX2VxdWlyZWN0U2hhZGVyPT09bnVsbCYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPUhkdCgpLHRoaXMuX2NvbXBpbGVNYXRlcmlhbCh0aGlzLl9lcXVpcmVjdFNoYWRlcikpfWRpc3Bvc2UoKXt0aGlzLl9ibHVyTWF0ZXJpYWwuZGlzcG9zZSgpLHRoaXMuX3BpbmdQb25nUmVuZGVyVGFyZ2V0IT09bnVsbCYmdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQuZGlzcG9zZSgpLHRoaXMuX2N1YmVtYXBTaGFkZXIhPT1udWxsJiZ0aGlzLl9jdWJlbWFwU2hhZGVyLmRpc3Bvc2UoKSx0aGlzLl9lcXVpcmVjdFNoYWRlciE9PW51bGwmJnRoaXMuX2VxdWlyZWN0U2hhZGVyLmRpc3Bvc2UoKTtmb3IobGV0IHQ9MDt0PFk1Lmxlbmd0aDt0KyspWTVbdF0uZGlzcG9zZSgpfV9jbGVhbnVwKHQpe3RoaXMuX3JlbmRlcmVyLnNldFJlbmRlclRhcmdldChFVyksdC5zY2lzc29yVGVzdD0hMSxFSCh0LDAsMCx0LndpZHRoLHQuaGVpZ2h0KX1fZnJvbVRleHR1cmUodCxlKXtFVz10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtsZXQgbz1lfHx0aGlzLl9hbGxvY2F0ZVRhcmdldHModCk7cmV0dXJuIHRoaXMuX3RleHR1cmVUb0N1YmVVVih0LG8pLHRoaXMuX2FwcGx5UE1SRU0obyksdGhpcy5fY2xlYW51cChvKSxvfV9hbGxvY2F0ZVRhcmdldHModCl7bGV0IGU9e21hZ0ZpbHRlcjp3bSxtaW5GaWx0ZXI6d20sZ2VuZXJhdGVNaXBtYXBzOiExLHR5cGU6bFMsZm9ybWF0OlJmLGVuY29kaW5nOkx4LGRlcHRoQnVmZmVyOiExfSxvPXpkdChlKTtyZXR1cm4gby5kZXB0aEJ1ZmZlcj0hdCx0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD09PW51bGwmJih0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldD16ZHQoZSkpLG99X2NvbXBpbGVNYXRlcmlhbCh0KXtsZXQgZT1uZXcgWXMoWTVbMF0sdCk7dGhpcy5fcmVuZGVyZXIuY29tcGlsZShlLFJXKX1fc2NlbmVUb0N1YmVVVih0LGUsbyxpKXtsZXQgcz1uZXcgU20oOTAsMSxlLG8pLGw9WzEsLTEsMSwxLDEsMV0sYz1bMSwxLDEsLTEsLTEsLTFdLG09dGhpcy5fcmVuZGVyZXIsZj1tLmF1dG9DbGVhcixwPW0udG9uZU1hcHBpbmc7bS5nZXRDbGVhckNvbG9yKERkdCksbS50b25lTWFwcGluZz1JeCxtLmF1dG9DbGVhcj0hMTtsZXQgZz1uZXcgSTEoe25hbWU6IlBNUkVNLkJhY2tncm91bmQiLHNpZGU6bGwsZGVwdGhXcml0ZTohMSxkZXB0aFRlc3Q6ITF9KSxfPW5ldyBZcyhuZXcgejEsZyksTT0hMSx5PXQuYmFja2dyb3VuZDt5P3kuaXNDb2xvciYmKGcuY29sb3IuY29weSh5KSx0LmJhY2tncm91bmQ9bnVsbCxNPSEwKTooZy5jb2xvci5jb3B5KERkdCksTT0hMCk7Zm9yKGxldCBPPTA7Tzw2O08rKyl7bGV0IGI9TyUzO2I9PT0wPyhzLnVwLnNldCgwLGxbT10sMCkscy5sb29rQXQoY1tPXSwwLDApKTpiPT09MT8ocy51cC5zZXQoMCwwLGxbT10pLHMubG9va0F0KDAsY1tPXSwwKSk6KHMudXAuc2V0KDAsbFtPXSwwKSxzLmxvb2tBdCgwLDAsY1tPXSkpLEVIKGksYipFTyxPPjI/RU86MCxFTyxFTyksbS5zZXRSZW5kZXJUYXJnZXQoaSksTSYmbS5yZW5kZXIoXyxzKSxtLnJlbmRlcih0LHMpfV8uZ2VvbWV0cnkuZGlzcG9zZSgpLF8ubWF0ZXJpYWwuZGlzcG9zZSgpLG0udG9uZU1hcHBpbmc9cCxtLmF1dG9DbGVhcj1mLHQuYmFja2dyb3VuZD15fV90ZXh0dXJlVG9DdWJlVVYodCxlKXtsZXQgbz10aGlzLl9yZW5kZXJlcixpPXQubWFwcGluZz09PVM0fHx0Lm1hcHBpbmc9PT1SNDtpPyh0aGlzLl9jdWJlbWFwU2hhZGVyPT09bnVsbCYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9RmR0KCkpLHRoaXMuX2N1YmVtYXBTaGFkZXIudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT10LmlzUmVuZGVyVGFyZ2V0VGV4dHVyZT09PSExPy0xOjEpOnRoaXMuX2VxdWlyZWN0U2hhZGVyPT09bnVsbCYmKHRoaXMuX2VxdWlyZWN0U2hhZGVyPUhkdCgpKTtsZXQgYT1pP3RoaXMuX2N1YmVtYXBTaGFkZXI6dGhpcy5fZXF1aXJlY3RTaGFkZXIscj1uZXcgWXMoWTVbMF0sYSkscz1hLnVuaWZvcm1zO3MuZW52TWFwLnZhbHVlPXQsaXx8cy50ZXhlbFNpemUudmFsdWUuc2V0KDEvdC5pbWFnZS53aWR0aCwxL3QuaW1hZ2UuaGVpZ2h0KSxFSChlLDAsMCwzKkVPLDIqRU8pLG8uc2V0UmVuZGVyVGFyZ2V0KGUpLG8ucmVuZGVyKHIsUlcpfV9hcHBseVBNUkVNKHQpe2xldCBlPXRoaXMuX3JlbmRlcmVyLG89ZS5hdXRvQ2xlYXI7ZS5hdXRvQ2xlYXI9ITE7Zm9yKGxldCBpPTE7aTx6Z3Q7aSsrKXtsZXQgYT1NYXRoLnNxcnQoUkhbaV0qUkhbaV0tUkhbaS0xXSpSSFtpLTFdKSxyPUlkdFsoaS0xKSVJZHQubGVuZ3RoXTt0aGlzLl9ibHVyKHQsaS0xLGksYSxyKX1lLmF1dG9DbGVhcj1vfV9ibHVyKHQsZSxvLGksYSl7bGV0IHI9dGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ7dGhpcy5faGFsZkJsdXIodCxyLGUsbyxpLCJsYXRpdHVkaW5hbCIsYSksdGhpcy5faGFsZkJsdXIocix0LG8sbyxpLCJsb25naXR1ZGluYWwiLGEpfV9oYWxmQmx1cih0LGUsbyxpLGEscixzKXtsZXQgbD10aGlzLl9yZW5kZXJlcixjPXRoaXMuX2JsdXJNYXRlcmlhbDtyIT09ImxhdGl0dWRpbmFsIiYmciE9PSJsb25naXR1ZGluYWwiJiZjb25zb2xlLmVycm9yKCJibHVyIGRpcmVjdGlvbiBtdXN0IGJlIGVpdGhlciBsYXRpdHVkaW5hbCBvciBsb25naXR1ZGluYWwhIik7bGV0IG09MyxmPW5ldyBZcyhZNVtpXSxjKSxwPWMudW5pZm9ybXMsZz1BZHRbb10tMSxfPWlzRmluaXRlKGEpP01hdGguUEkvKDIqZyk6MipNYXRoLlBJLygyKkoyLTEpLE09YS9fLHk9aXNGaW5pdGUoYSk/MStNYXRoLmZsb29yKG0qTSk6SjI7eT5KMiYmY29uc29sZS53YXJuKGBzaWdtYVJhZGlhbnMsICR7YX0sIGlzIHRvbyBsYXJnZSBhbmQgd2lsbCBjbGlwLCBhcyBpdCByZXF1ZXN0ZWQgJHt5fSBzYW1wbGVzIHdoZW4gdGhlIG1heGltdW0gaXMgc2V0IHRvICR7SjJ9YCk7bGV0IE89W10sYj0wO2ZvcihsZXQgcnQ9MDtydDxKMjsrK3J0KXtsZXQgSj1ydC9NLEV0PU1hdGguZXhwKC1KKkovMik7Ty5wdXNoKEV0KSxydD09PTA/Yis9RXQ6cnQ8eSYmKGIrPTIqRXQpfWZvcihsZXQgcnQ9MDtydDxPLmxlbmd0aDtydCsrKU9bcnRdPU9bcnRdL2I7cC5lbnZNYXAudmFsdWU9dC50ZXh0dXJlLHAuc2FtcGxlcy52YWx1ZT15LHAud2VpZ2h0cy52YWx1ZT1PLHAubGF0aXR1ZGluYWwudmFsdWU9cj09PSJsYXRpdHVkaW5hbCIscyYmKHAucG9sZUF4aXMudmFsdWU9cykscC5kVGhldGEudmFsdWU9XyxwLm1pcEludC52YWx1ZT1IeC1vO2xldCBSPUFkdFtpXSxFPTMqTWF0aC5tYXgoMCxFTy0yKlIpLGo9KGk9PT0wPzA6MipFTykrMipSKihpPkh4LWZTP2ktSHgrZlM6MCk7RUgoZSxFLGosMypSLDIqUiksbC5zZXRSZW5kZXJUYXJnZXQoZSksbC5yZW5kZXIoZixSVyl9fTtmdW5jdGlvbiBNVXQoKXtsZXQgbj1bXSx0PVtdLGU9W10sbz1IeDtmb3IobGV0IGk9MDtpPHpndDtpKyspe2xldCBhPU1hdGgucG93KDIsbyk7dC5wdXNoKGEpO2xldCByPTEvYTtpPkh4LWZTP3I9SWd0W2ktSHgrZlMtMV06aT09PTAmJihyPTApLGUucHVzaChyKTtsZXQgcz0xLyhhLTEpLGw9LXMvMixjPTErcy8yLG09W2wsbCxjLGwsYyxjLGwsbCxjLGMsbCxjXSxmPTYscD02LGc9MyxfPTIsTT0xLHk9bmV3IEZsb2F0MzJBcnJheShnKnAqZiksTz1uZXcgRmxvYXQzMkFycmF5KF8qcCpmKSxiPW5ldyBGbG9hdDMyQXJyYXkoTSpwKmYpO2ZvcihsZXQgRT0wO0U8ZjtFKyspe2xldCBqPUUlMyoyLzMtMSxydD1FPjI/MDotMSxKPVtqLHJ0LDAsaisyLzMscnQsMCxqKzIvMyxydCsxLDAsaixydCwwLGorMi8zLHJ0KzEsMCxqLHJ0KzEsMF07eS5zZXQoSixnKnAqRSksTy5zZXQobSxfKnAqRSk7bGV0IEV0PVtFLEUsRSxFLEUsRV07Yi5zZXQoRXQsTSpwKkUpfWxldCBSPW5ldyB0YTtSLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBPcih5LGcpKSxSLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBPcihPLF8pKSxSLnNldEF0dHJpYnV0ZSgiZmFjZUluZGV4IixuZXcgT3IoYixNKSksbi5wdXNoKFIpLG8+ZlMmJm8tLX1yZXR1cm57X2xvZFBsYW5lczpuLF9zaXplTG9kczp0LF9zaWdtYXM6ZX19ZnVuY3Rpb24gemR0KG4pe2xldCB0PW5ldyBOZCgzKkVPLDMqRU8sbik7cmV0dXJuIHQudGV4dHVyZS5tYXBwaW5nPWJGLHQudGV4dHVyZS5uYW1lPSJQTVJFTS5jdWJlVXYiLHQuc2Npc3NvclRlc3Q9ITAsdH1mdW5jdGlvbiBFSChuLHQsZSxvLGkpe24udmlld3BvcnQuc2V0KHQsZSxvLGkpLG4uc2Npc3Nvci5zZXQodCxlLG8saSl9ZnVuY3Rpb24gYlV0KG4pe2xldCB0PW5ldyBGbG9hdDMyQXJyYXkobiksZT1uZXcgcHQoMCwxLDApO3JldHVybiBuZXcgX1Moe25hbWU6IlNwaGVyaWNhbEdhdXNzaWFuQmx1ciIsZGVmaW5lczp7bn0sdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sc2FtcGxlczp7dmFsdWU6MX0sd2VpZ2h0czp7dmFsdWU6dH0sbGF0aXR1ZGluYWw6e3ZhbHVlOiExfSxkVGhldGE6e3ZhbHVlOjB9LG1pcEludDp7dmFsdWU6MH0scG9sZUF4aXM6e3ZhbHVlOmV9fSx2ZXJ0ZXhTaGFkZXI6ZVooKSxmcmFnbWVudFNoYWRlcjpgCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OwoKCQkJdmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247CgoJCQl1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7CgkJCXVuaWZvcm0gaW50IHNhbXBsZXM7CgkJCXVuaWZvcm0gZmxvYXQgd2VpZ2h0c1sgbiBdOwoJCQl1bmlmb3JtIGJvb2wgbGF0aXR1ZGluYWw7CgkJCXVuaWZvcm0gZmxvYXQgZFRoZXRhOwoJCQl1bmlmb3JtIGZsb2F0IG1pcEludDsKCQkJdW5pZm9ybSB2ZWMzIHBvbGVBeGlzOwoKCQkJI2RlZmluZSBFTlZNQVBfVFlQRV9DVUJFX1VWCgkJCSNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+CgoJCQl2ZWMzIGdldFNhbXBsZSggZmxvYXQgdGhldGEsIHZlYzMgYXhpcyApIHsKCgkJCQlmbG9hdCBjb3NUaGV0YSA9IGNvcyggdGhldGEgKTsKCQkJCS8vIFJvZHJpZ3VlcycgYXhpcy1hbmdsZSByb3RhdGlvbgoJCQkJdmVjMyBzYW1wbGVEaXJlY3Rpb24gPSB2T3V0cHV0RGlyZWN0aW9uICogY29zVGhldGEKCQkJCQkrIGNyb3NzKCBheGlzLCB2T3V0cHV0RGlyZWN0aW9uICkgKiBzaW4oIHRoZXRhICkKCQkJCQkrIGF4aXMgKiBkb3QoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqICggMS4wIC0gY29zVGhldGEgKTsKCgkJCQlyZXR1cm4gYmlsaW5lYXJDdWJlVVYoIGVudk1hcCwgc2FtcGxlRGlyZWN0aW9uLCBtaXBJbnQgKTsKCgkJCX0KCgkJCXZvaWQgbWFpbigpIHsKCgkJCQl2ZWMzIGF4aXMgPSBsYXRpdHVkaW5hbCA/IHBvbGVBeGlzIDogY3Jvc3MoIHBvbGVBeGlzLCB2T3V0cHV0RGlyZWN0aW9uICk7CgoJCQkJaWYgKCBhbGwoIGVxdWFsKCBheGlzLCB2ZWMzKCAwLjAgKSApICkgKSB7CgoJCQkJCWF4aXMgPSB2ZWMzKCB2T3V0cHV0RGlyZWN0aW9uLnosIDAuMCwgLSB2T3V0cHV0RGlyZWN0aW9uLnggKTsKCgkJCQl9CgoJCQkJYXhpcyA9IG5vcm1hbGl6ZSggYXhpcyApOwoKCQkJCWdsX0ZyYWdDb2xvciA9IHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApOwoJCQkJZ2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyAwIF0gKiBnZXRTYW1wbGUoIDAuMCwgYXhpcyApOwoKCQkJCWZvciAoIGludCBpID0gMTsgaSA8IG47IGkrKyApIHsKCgkJCQkJaWYgKCBpID49IHNhbXBsZXMgKSB7CgoJCQkJCQlicmVhazsKCgkJCQkJfQoKCQkJCQlmbG9hdCB0aGV0YSA9IGRUaGV0YSAqIGZsb2F0KCBpICk7CgkJCQkJZ2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIC0xLjAgKiB0aGV0YSwgYXhpcyApOwoJCQkJCWdsX0ZyYWdDb2xvci5yZ2IgKz0gd2VpZ2h0c1sgaSBdICogZ2V0U2FtcGxlKCB0aGV0YSwgYXhpcyApOwoKCQkJCX0KCgkJCX0KCQlgLGJsZW5kaW5nOkR4LGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gSGR0KCl7bGV0IG49bmV3IFNlKDEsMSk7cmV0dXJuIG5ldyBfUyh7bmFtZToiRXF1aXJlY3Rhbmd1bGFyVG9DdWJlVVYiLHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LHRleGVsU2l6ZTp7dmFsdWU6bn19LHZlcnRleFNoYWRlcjplWigpLGZyYWdtZW50U2hhZGVyOmAKCgkJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCQlwcmVjaXNpb24gbWVkaXVtcCBpbnQ7CgoJCQl2YXJ5aW5nIHZlYzMgdk91dHB1dERpcmVjdGlvbjsKCgkJCXVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDsKCQkJdW5pZm9ybSB2ZWMyIHRleGVsU2l6ZTsKCgkJCSNpbmNsdWRlIDxjb21tb24+CgoJCQl2b2lkIG1haW4oKSB7CgoJCQkJZ2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7CgoJCQkJdmVjMyBvdXRwdXREaXJlY3Rpb24gPSBub3JtYWxpemUoIHZPdXRwdXREaXJlY3Rpb24gKTsKCQkJCXZlYzIgdXYgPSBlcXVpcmVjdFV2KCBvdXRwdXREaXJlY3Rpb24gKTsKCgkJCQl2ZWMyIGYgPSBmcmFjdCggdXYgLyB0ZXhlbFNpemUgLSAwLjUgKTsKCQkJCXV2IC09IGYgKiB0ZXhlbFNpemU7CgkJCQl2ZWMzIHRsID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCQkJCXV2LnggKz0gdGV4ZWxTaXplLng7CgkJCQl2ZWMzIHRyID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCQkJCXV2LnkgKz0gdGV4ZWxTaXplLnk7CgkJCQl2ZWMzIGJyID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCQkJCXV2LnggLT0gdGV4ZWxTaXplLng7CgkJCQl2ZWMzIGJsID0gdGV4dHVyZTJEICggZW52TWFwLCB1diApLnJnYjsKCgkJCQl2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApOwoJCQkJdmVjMyBibSA9IG1peCggYmwsIGJyLCBmLnggKTsKCQkJCWdsX0ZyYWdDb2xvci5yZ2IgPSBtaXgoIHRtLCBibSwgZi55ICk7CgoJCQl9CgkJYCxibGVuZGluZzpEeCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIEZkdCgpe3JldHVybiBuZXcgX1Moe25hbWU6IkN1YmVtYXBUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sZmxpcEVudk1hcDp7dmFsdWU6LTF9fSx2ZXJ0ZXhTaGFkZXI6ZVooKSxmcmFnbWVudFNoYWRlcjpgCgoJCQlwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKCQkJcHJlY2lzaW9uIG1lZGl1bXAgaW50OwoKCQkJdW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwOwoKCQkJdmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247CgoJCQl1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDsKCgkJCXZvaWQgbWFpbigpIHsKCgkJCQlnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCBmbGlwRW52TWFwICogdk91dHB1dERpcmVjdGlvbi54LCB2T3V0cHV0RGlyZWN0aW9uLnl6ICkgKTsKCgkJCX0KCQlgLGJsZW5kaW5nOkR4LGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gZVooKXtyZXR1cm5gCgoJCXByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwoJCXByZWNpc2lvbiBtZWRpdW1wIGludDsKCgkJYXR0cmlidXRlIHZlYzMgcG9zaXRpb247CgkJYXR0cmlidXRlIHZlYzIgdXY7CgkJYXR0cmlidXRlIGZsb2F0IGZhY2VJbmRleDsKCgkJdmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247CgoJCS8vIFJIIGNvb3JkaW5hdGUgc3lzdGVtOyBQTVJFTSBmYWNlLWluZGV4aW5nIGNvbnZlbnRpb24KCQl2ZWMzIGdldERpcmVjdGlvbiggdmVjMiB1diwgZmxvYXQgZmFjZSApIHsKCgkJCXV2ID0gMi4wICogdXYgLSAxLjA7CgoJCQl2ZWMzIGRpcmVjdGlvbiA9IHZlYzMoIHV2LCAxLjAgKTsKCgkJCWlmICggZmFjZSA9PSAwLjAgKSB7CgoJCQkJZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDsgLy8gKCAxLCB2LCB1ICkgcG9zIHgKCgkJCX0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkgewoKCQkJCWRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7CgkJCQlkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtdSwgMSwgLXYgKSBwb3MgeQoKCQkJfSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7CgoJCQkJZGlyZWN0aW9uLnggKj0gLTEuMDsgLy8gKCAtdSwgdiwgMSApIHBvcyB6CgoJCQl9IGVsc2UgaWYgKCBmYWNlID09IDMuMCApIHsKCgkJCQlkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OwoJCQkJZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLTEsIHYsIC11ICkgbmVnIHgKCgkJCX0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkgewoKCQkJCWRpcmVjdGlvbiA9IGRpcmVjdGlvbi54enk7CgkJCQlkaXJlY3Rpb24ueHkgKj0gLTEuMDsgLy8gKCAtdSwgLTEsIHYgKSBuZWcgeQoKCQkJfSBlbHNlIGlmICggZmFjZSA9PSA1LjAgKSB7CgoJCQkJZGlyZWN0aW9uLnogKj0gLTEuMDsgLy8gKCB1LCB2LCAtMSApIG5lZyB6CgoJCQl9CgoJCQlyZXR1cm4gZGlyZWN0aW9uOwoKCQl9CgoJCXZvaWQgbWFpbigpIHsKCgkJCXZPdXRwdXREaXJlY3Rpb24gPSBnZXREaXJlY3Rpb24oIHV2LCBmYWNlSW5kZXggKTsKCQkJZ2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7CgoJCX0KCWB9ZnVuY3Rpb24gT1V0KG4pe2xldCB0PW5ldyBXZWFrTWFwLGU9bnVsbDtmdW5jdGlvbiBvKHMpe2lmKHMmJnMuaXNUZXh0dXJlKXtsZXQgbD1zLm1hcHBpbmcsYz1sPT09TFd8fGw9PT1CVyxtPWw9PT1TNHx8bD09PVI0O2lmKGN8fG0paWYocy5pc1JlbmRlclRhcmdldFRleHR1cmUmJnMubmVlZHNQTVJFTVVwZGF0ZT09PSEwKXtzLm5lZWRzUE1SRU1VcGRhdGU9ITE7bGV0IGY9dC5nZXQocyk7cmV0dXJuIGU9PT1udWxsJiYoZT1uZXcgSkgobikpLGY9Yz9lLmZyb21FcXVpcmVjdGFuZ3VsYXIocyxmKTplLmZyb21DdWJlbWFwKHMsZiksdC5zZXQocyxmKSxmLnRleHR1cmV9ZWxzZXtpZih0LmhhcyhzKSlyZXR1cm4gdC5nZXQocykudGV4dHVyZTt7bGV0IGY9cy5pbWFnZTtpZihjJiZmJiZmLmhlaWdodD4wfHxtJiZmJiZpKGYpKXtlPT09bnVsbCYmKGU9bmV3IEpIKG4pKTtsZXQgcD1jP2UuZnJvbUVxdWlyZWN0YW5ndWxhcihzKTplLmZyb21DdWJlbWFwKHMpO3JldHVybiB0LnNldChzLHApLHMuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSkscC50ZXh0dXJlfWVsc2UgcmV0dXJuIG51bGx9fX1yZXR1cm4gc31mdW5jdGlvbiBpKHMpe2xldCBsPTAsYz02O2ZvcihsZXQgbT0wO208YzttKyspc1ttXSE9PXZvaWQgMCYmbCsrO3JldHVybiBsPT09Y31mdW5jdGlvbiBhKHMpe2xldCBsPXMudGFyZ2V0O2wucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSk7bGV0IGM9dC5nZXQobCk7YyE9PXZvaWQgMCYmKHQuZGVsZXRlKGwpLGMuZGlzcG9zZSgpKX1mdW5jdGlvbiByKCl7dD1uZXcgV2Vha01hcCxlIT09bnVsbCYmKGUuZGlzcG9zZSgpLGU9bnVsbCl9cmV0dXJue2dldDpvLGRpc3Bvc2U6cn19ZnVuY3Rpb24gUFV0KG4pe2xldCB0PXt9O2Z1bmN0aW9uIGUobyl7aWYodFtvXSE9PXZvaWQgMClyZXR1cm4gdFtvXTtsZXQgaTtzd2l0Y2gobyl7Y2FzZSJXRUJHTF9kZXB0aF90ZXh0dXJlIjppPW4uZ2V0RXh0ZW5zaW9uKCJXRUJHTF9kZXB0aF90ZXh0dXJlIil8fG4uZ2V0RXh0ZW5zaW9uKCJNT1pfV0VCR0xfZGVwdGhfdGV4dHVyZSIpfHxuLmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2RlcHRoX3RleHR1cmUiKTticmVhaztjYXNlIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyI6aT1uLmdldEV4dGVuc2lvbigiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fG4uZ2V0RXh0ZW5zaW9uKCJNT1pfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIil8fG4uZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyI6aT1uLmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKXx8bi5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHxuLmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIik7YnJlYWs7Y2FzZSJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiOmk9bi5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfHxuLmdldEV4dGVuc2lvbigiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpO2JyZWFrO2RlZmF1bHQ6aT1uLmdldEV4dGVuc2lvbihvKX1yZXR1cm4gdFtvXT1pLGl9cmV0dXJue2hhczpmdW5jdGlvbihvKXtyZXR1cm4gZShvKSE9PW51bGx9LGluaXQ6ZnVuY3Rpb24obyl7by5pc1dlYkdMMj9lKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik6KGUoIldFQkdMX2RlcHRoX3RleHR1cmUiKSxlKCJPRVNfdGV4dHVyZV9mbG9hdCIpLGUoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxlKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLGUoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpLGUoIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKSxlKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIpLGUoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSksZSgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksZSgiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiksZSgiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIil9LGdldDpmdW5jdGlvbihvKXtsZXQgaT1lKG8pO3JldHVybiBpPT09bnVsbCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK28rIiBleHRlbnNpb24gbm90IHN1cHBvcnRlZC4iKSxpfX19ZnVuY3Rpb24geVV0KG4sdCxlLG8pe2xldCBpPXt9LGE9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcihmKXtsZXQgcD1mLnRhcmdldDtwLmluZGV4IT09bnVsbCYmdC5yZW1vdmUocC5pbmRleCk7Zm9yKGxldCBfIGluIHAuYXR0cmlidXRlcyl0LnJlbW92ZShwLmF0dHJpYnV0ZXNbX10pO3AucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsciksZGVsZXRlIGlbcC5pZF07bGV0IGc9YS5nZXQocCk7ZyYmKHQucmVtb3ZlKGcpLGEuZGVsZXRlKHApKSxvLnJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5KHApLHAuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT09PSEwJiZkZWxldGUgcC5fbWF4SW5zdGFuY2VDb3VudCxlLm1lbW9yeS5nZW9tZXRyaWVzLS19ZnVuY3Rpb24gcyhmLHApe3JldHVybiBpW3AuaWRdPT09ITB8fChwLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHIpLGlbcC5pZF09ITAsZS5tZW1vcnkuZ2VvbWV0cmllcysrKSxwfWZ1bmN0aW9uIGwoZil7bGV0IHA9Zi5hdHRyaWJ1dGVzO2ZvcihsZXQgXyBpbiBwKXQudXBkYXRlKHBbX10sMzQ5NjIpO2xldCBnPWYubW9ycGhBdHRyaWJ1dGVzO2ZvcihsZXQgXyBpbiBnKXtsZXQgTT1nW19dO2ZvcihsZXQgeT0wLE89TS5sZW5ndGg7eTxPO3krKyl0LnVwZGF0ZShNW3ldLDM0OTYyKX19ZnVuY3Rpb24gYyhmKXtsZXQgcD1bXSxnPWYuaW5kZXgsXz1mLmF0dHJpYnV0ZXMucG9zaXRpb24sTT0wO2lmKGchPT1udWxsKXtsZXQgYj1nLmFycmF5O009Zy52ZXJzaW9uO2ZvcihsZXQgUj0wLEU9Yi5sZW5ndGg7UjxFO1IrPTMpe2xldCBqPWJbUiswXSxydD1iW1IrMV0sSj1iW1IrMl07cC5wdXNoKGoscnQscnQsSixKLGopfX1lbHNle2xldCBiPV8uYXJyYXk7TT1fLnZlcnNpb247Zm9yKGxldCBSPTAsRT1iLmxlbmd0aC8zLTE7UjxFO1IrPTMpe2xldCBqPVIrMCxydD1SKzEsSj1SKzI7cC5wdXNoKGoscnQscnQsSixKLGopfX1sZXQgeT1uZXcoVGd0KHApP1FIOlhIKShwLDEpO3kudmVyc2lvbj1NO2xldCBPPWEuZ2V0KGYpO08mJnQucmVtb3ZlKE8pLGEuc2V0KGYseSl9ZnVuY3Rpb24gbShmKXtsZXQgcD1hLmdldChmKTtpZihwKXtsZXQgZz1mLmluZGV4O2chPT1udWxsJiZwLnZlcnNpb248Zy52ZXJzaW9uJiZjKGYpfWVsc2UgYyhmKTtyZXR1cm4gYS5nZXQoZil9cmV0dXJue2dldDpzLHVwZGF0ZTpsLGdldFdpcmVmcmFtZUF0dHJpYnV0ZTptfX1mdW5jdGlvbiB4VXQobix0LGUsbyl7bGV0IGk9by5pc1dlYkdMMixhO2Z1bmN0aW9uIHIocCl7YT1wfWxldCBzLGw7ZnVuY3Rpb24gYyhwKXtzPXAudHlwZSxsPXAuYnl0ZXNQZXJFbGVtZW50fWZ1bmN0aW9uIG0ocCxnKXtuLmRyYXdFbGVtZW50cyhhLGcscyxwKmwpLGUudXBkYXRlKGcsYSwxKX1mdW5jdGlvbiBmKHAsZyxfKXtpZihfPT09MClyZXR1cm47bGV0IE0seTtpZihpKU09bix5PSJkcmF3RWxlbWVudHNJbnN0YW5jZWQiO2Vsc2UgaWYoTT10LmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLHk9ImRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIixNPT09bnVsbCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3JldHVybn1NW3ldKGEsZyxzLHAqbCxfKSxlLnVwZGF0ZShnLGEsXyl9dGhpcy5zZXRNb2RlPXIsdGhpcy5zZXRJbmRleD1jLHRoaXMucmVuZGVyPW0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9Zn1mdW5jdGlvbiB2VXQobil7bGV0IHQ9e2dlb21ldHJpZXM6MCx0ZXh0dXJlczowfSxlPXtmcmFtZTowLGNhbGxzOjAsdHJpYW5nbGVzOjAscG9pbnRzOjAsbGluZXM6MH07ZnVuY3Rpb24gbyhhLHIscyl7c3dpdGNoKGUuY2FsbHMrKyxyKXtjYXNlIDQ6ZS50cmlhbmdsZXMrPXMqKGEvMyk7YnJlYWs7Y2FzZSAxOmUubGluZXMrPXMqKGEvMik7YnJlYWs7Y2FzZSAzOmUubGluZXMrPXMqKGEtMSk7YnJlYWs7Y2FzZSAyOmUubGluZXMrPXMqYTticmVhaztjYXNlIDA6ZS5wb2ludHMrPXMqYTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5mbzogVW5rbm93biBkcmF3IG1vZGU6IixyKTticmVha319ZnVuY3Rpb24gaSgpe2UuZnJhbWUrKyxlLmNhbGxzPTAsZS50cmlhbmdsZXM9MCxlLnBvaW50cz0wLGUubGluZXM9MH1yZXR1cm57bWVtb3J5OnQscmVuZGVyOmUscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6aSx1cGRhdGU6b319dmFyIG00PWNsYXNzIGV4dGVuZHMgR3N7Y29uc3RydWN0b3IodD1udWxsLGU9MSxvPTEsaT0xKXtzdXBlcihudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6byxkZXB0aDppfSx0aGlzLm1hZ0ZpbHRlcj1jbCx0aGlzLm1pbkZpbHRlcj1jbCx0aGlzLndyYXBSPW5oLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy51bnBhY2tBbGlnbm1lbnQ9MX19O200LnByb3RvdHlwZS5pc0RhdGFUZXh0dXJlMkRBcnJheT0hMDtmdW5jdGlvbiB3VXQobix0KXtyZXR1cm4gblswXS10WzBdfWZ1bmN0aW9uIFNVdChuLHQpe3JldHVybiBNYXRoLmFicyh0WzFdKS1NYXRoLmFicyhuWzFdKX1mdW5jdGlvbiBMZHQobix0KXtsZXQgZT0xLG89dC5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlP3QuZGF0YS5hcnJheTp0LmFycmF5O28gaW5zdGFuY2VvZiBJbnQ4QXJyYXk/ZT0xMjc6byBpbnN0YW5jZW9mIEludDE2QXJyYXk/ZT0zMjc2NzpvIGluc3RhbmNlb2YgSW50MzJBcnJheT9lPTIxNDc0ODM2NDc6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xNb3JwaHRhcmdldHM6IFVuc3VwcG9ydGVkIG1vcnBoIGF0dHJpYnV0ZSBkYXRhIHR5cGU6ICIsbyksbi5kaXZpZGVTY2FsYXIoZSl9ZnVuY3Rpb24gUlV0KG4sdCxlKXtsZXQgbz17fSxpPW5ldyBGbG9hdDMyQXJyYXkoOCksYT1uZXcgV2Vha01hcCxyPW5ldyBwdCxzPVtdO2ZvcihsZXQgYz0wO2M8ODtjKyspc1tjXT1bYywwXTtmdW5jdGlvbiBsKGMsbSxmLHApe2xldCBnPWMubW9ycGhUYXJnZXRJbmZsdWVuY2VzO2lmKHQuaXNXZWJHTDI9PT0hMCl7bGV0IF89bS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24ubGVuZ3RoLE09YS5nZXQobSk7aWYoTT09PXZvaWQgMHx8TS5jb3VudCE9PV8pe2xldCBVPWZ1bmN0aW9uKCl7a3QuZGlzcG9zZSgpLGEuZGVsZXRlKG0pLG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsVSl9O00hPT12b2lkIDAmJk0udGV4dHVyZS5kaXNwb3NlKCk7bGV0IGI9bS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsIT09dm9pZCAwLFI9bS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sRT1tLm1vcnBoQXR0cmlidXRlcy5ub3JtYWx8fFtdLGo9bS5hdHRyaWJ1dGVzLnBvc2l0aW9uLmNvdW50LHJ0PWI9PT0hMD8yOjEsSj1qKnJ0LEV0PTE7Sj50Lm1heFRleHR1cmVTaXplJiYoRXQ9TWF0aC5jZWlsKEovdC5tYXhUZXh0dXJlU2l6ZSksSj10Lm1heFRleHR1cmVTaXplKTtsZXQganQ9bmV3IEZsb2F0MzJBcnJheShKKkV0KjQqXyksa3Q9bmV3IG00KGp0LEosRXQsXyk7a3QuZm9ybWF0PVJmLGt0LnR5cGU9VDEsa3QubmVlZHNVcGRhdGU9ITA7bGV0IHc9cnQqNDtmb3IobGV0IG50PTA7bnQ8XztudCsrKXtsZXQgbHQ9UltudF0sYnQ9RVtudF0sb3Q9SipFdCo0Km50O2ZvcihsZXQgdXQ9MDt1dDxsdC5jb3VudDt1dCsrKXtyLmZyb21CdWZmZXJBdHRyaWJ1dGUobHQsdXQpLGx0Lm5vcm1hbGl6ZWQ9PT0hMCYmTGR0KHIsbHQpO2xldCBndD11dCp3O2p0W290K2d0KzBdPXIueCxqdFtvdCtndCsxXT1yLnksanRbb3QrZ3QrMl09ci56LGp0W290K2d0KzNdPTAsYj09PSEwJiYoci5mcm9tQnVmZmVyQXR0cmlidXRlKGJ0LHV0KSxidC5ub3JtYWxpemVkPT09ITAmJkxkdChyLGJ0KSxqdFtvdCtndCs0XT1yLngsanRbb3QrZ3QrNV09ci55LGp0W290K2d0KzZdPXIueixqdFtvdCtndCs3XT0wKX19TT17Y291bnQ6Xyx0ZXh0dXJlOmt0LHNpemU6bmV3IFNlKEosRXQpfSxhLnNldChtLE0pLG0uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsVSl9bGV0IHk9MDtmb3IobGV0IGI9MDtiPGcubGVuZ3RoO2IrKyl5Kz1nW2JdO2xldCBPPW0ubW9ycGhUYXJnZXRzUmVsYXRpdmU/MToxLXk7cC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKG4sIm1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZSIsTykscC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKG4sIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIsZykscC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKG4sIm1vcnBoVGFyZ2V0c1RleHR1cmUiLE0udGV4dHVyZSxlKSxwLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUobiwibW9ycGhUYXJnZXRzVGV4dHVyZVNpemUiLE0uc2l6ZSl9ZWxzZXtsZXQgXz1nPT09dm9pZCAwPzA6Zy5sZW5ndGgsTT1vW20uaWRdO2lmKE09PT12b2lkIDB8fE0ubGVuZ3RoIT09Xyl7TT1bXTtmb3IobGV0IEU9MDtFPF87RSsrKU1bRV09W0UsMF07b1ttLmlkXT1NfWZvcihsZXQgRT0wO0U8XztFKyspe2xldCBqPU1bRV07alswXT1FLGpbMV09Z1tFXX1NLnNvcnQoU1V0KTtmb3IobGV0IEU9MDtFPDg7RSsrKUU8XyYmTVtFXVsxXT8oc1tFXVswXT1NW0VdWzBdLHNbRV1bMV09TVtFXVsxXSk6KHNbRV1bMF09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsc1tFXVsxXT0wKTtzLnNvcnQod1V0KTtsZXQgeT1tLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixPPW0ubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxiPTA7Zm9yKGxldCBFPTA7RTw4O0UrKyl7bGV0IGo9c1tFXSxydD1qWzBdLEo9alsxXTtydCE9PU51bWJlci5NQVhfU0FGRV9JTlRFR0VSJiZKPyh5JiZtLmdldEF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK0UpIT09eVtydF0mJm0uc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrRSx5W3J0XSksTyYmbS5nZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIitFKSE9PU9bcnRdJiZtLnNldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK0UsT1tydF0pLGlbRV09SixiKz1KKTooeSYmbS5oYXNBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0IitFKT09PSEwJiZtLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK0UpLE8mJm0uaGFzQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrRSk9PT0hMCYmbS5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIitFKSxpW0VdPTApfWxldCBSPW0ubW9ycGhUYXJnZXRzUmVsYXRpdmU/MToxLWI7cC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKG4sIm1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZSIsUikscC5nZXRVbmlmb3JtcygpLnNldFZhbHVlKG4sIm1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIsaSl9fXJldHVybnt1cGRhdGU6bH19ZnVuY3Rpb24gRVV0KG4sdCxlLG8pe2xldCBpPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIGEobCl7bGV0IGM9by5yZW5kZXIuZnJhbWUsbT1sLmdlb21ldHJ5LGY9dC5nZXQobCxtKTtyZXR1cm4gaS5nZXQoZikhPT1jJiYodC51cGRhdGUoZiksaS5zZXQoZixjKSksbC5pc0luc3RhbmNlZE1lc2gmJihsLmhhc0V2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHMpPT09ITEmJmwuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIscyksZS51cGRhdGUobC5pbnN0YW5jZU1hdHJpeCwzNDk2MiksbC5pbnN0YW5jZUNvbG9yIT09bnVsbCYmZS51cGRhdGUobC5pbnN0YW5jZUNvbG9yLDM0OTYyKSksZn1mdW5jdGlvbiByKCl7aT1uZXcgV2Vha01hcH1mdW5jdGlvbiBzKGwpe2xldCBjPWwudGFyZ2V0O2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIscyksZS5yZW1vdmUoYy5pbnN0YW5jZU1hdHJpeCksYy5pbnN0YW5jZUNvbG9yIT09bnVsbCYmZS5yZW1vdmUoYy5pbnN0YW5jZUNvbG9yKX1yZXR1cm57dXBkYXRlOmEsZGlzcG9zZTpyfX12YXIgJEg9Y2xhc3MgZXh0ZW5kcyBHc3tjb25zdHJ1Y3Rvcih0PW51bGwsZT0xLG89MSxpPTEpe3N1cGVyKG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpvLGRlcHRoOml9LHRoaXMubWFnRmlsdGVyPWNsLHRoaXMubWluRmlsdGVyPWNsLHRoaXMud3JhcFI9bmgsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xfX07JEgucHJvdG90eXBlLmlzRGF0YVRleHR1cmUzRD0hMDt2YXIgSGd0PW5ldyBHcyxGZ3Q9bmV3IG00LExndD1uZXcgJEgsQmd0PW5ldyB1UyxCZHQ9W10sVmR0PVtdLGpkdD1uZXcgRmxvYXQzMkFycmF5KDE2KSxVZHQ9bmV3IEZsb2F0MzJBcnJheSg5KSxZZHQ9bmV3IEZsb2F0MzJBcnJheSg0KTtmdW5jdGlvbiB3UyhuLHQsZSl7bGV0IG89blswXTtpZihvPD0wfHxvPjApcmV0dXJuIG47bGV0IGk9dCplLGE9QmR0W2ldO2lmKGE9PT12b2lkIDAmJihhPW5ldyBGbG9hdDMyQXJyYXkoaSksQmR0W2ldPWEpLHQhPT0wKXtvLnRvQXJyYXkoYSwwKTtmb3IobGV0IHI9MSxzPTA7ciE9PXQ7KytyKXMrPWUsbltyXS50b0FycmF5KGEscyl9cmV0dXJuIGF9ZnVuY3Rpb24gRWYobix0KXtpZihuLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wLG89bi5sZW5ndGg7ZTxvO2UrKylpZihuW2VdIT09dFtlXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBFbShuLHQpe2ZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyluW2VdPXRbZV19ZnVuY3Rpb24gUEYobix0KXtsZXQgZT1WZHRbdF07ZT09PXZvaWQgMCYmKGU9bmV3IEludDMyQXJyYXkodCksVmR0W3RdPWUpO2ZvcihsZXQgbz0wO28hPT10OysrbyllW29dPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO3JldHVybiBlfWZ1bmN0aW9uIGtVdChuLHQpe2xldCBlPXRoaXMuY2FjaGU7ZVswXSE9PXQmJihuLnVuaWZvcm0xZih0aGlzLmFkZHIsdCksZVswXT10KX1mdW5jdGlvbiBOVXQobix0KXtsZXQgZT10aGlzLmNhY2hlO2lmKHQueCE9PXZvaWQgMCkoZVswXSE9PXQueHx8ZVsxXSE9PXQueSkmJihuLnVuaWZvcm0yZih0aGlzLmFkZHIsdC54LHQueSksZVswXT10LngsZVsxXT10LnkpO2Vsc2V7aWYoRWYoZSx0KSlyZXR1cm47bi51bmlmb3JtMmZ2KHRoaXMuYWRkcix0KSxFbShlLHQpfX1mdW5jdGlvbiBUVXQobix0KXtsZXQgZT10aGlzLmNhY2hlO2lmKHQueCE9PXZvaWQgMCkoZVswXSE9PXQueHx8ZVsxXSE9PXQueXx8ZVsyXSE9PXQueikmJihuLnVuaWZvcm0zZih0aGlzLmFkZHIsdC54LHQueSx0LnopLGVbMF09dC54LGVbMV09dC55LGVbMl09dC56KTtlbHNlIGlmKHQuciE9PXZvaWQgMCkoZVswXSE9PXQucnx8ZVsxXSE9PXQuZ3x8ZVsyXSE9PXQuYikmJihuLnVuaWZvcm0zZih0aGlzLmFkZHIsdC5yLHQuZyx0LmIpLGVbMF09dC5yLGVbMV09dC5nLGVbMl09dC5iKTtlbHNle2lmKEVmKGUsdCkpcmV0dXJuO24udW5pZm9ybTNmdih0aGlzLmFkZHIsdCksRW0oZSx0KX19ZnVuY3Rpb24gQVV0KG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtpZih0LnghPT12b2lkIDApKGVbMF0hPT10Lnh8fGVbMV0hPT10Lnl8fGVbMl0hPT10Lnp8fGVbM10hPT10LncpJiYobi51bmlmb3JtNGYodGhpcy5hZGRyLHQueCx0LnksdC56LHQudyksZVswXT10LngsZVsxXT10LnksZVsyXT10LnosZVszXT10LncpO2Vsc2V7aWYoRWYoZSx0KSlyZXR1cm47bi51bmlmb3JtNGZ2KHRoaXMuYWRkcix0KSxFbShlLHQpfX1mdW5jdGlvbiBEVXQobix0KXtsZXQgZT10aGlzLmNhY2hlLG89dC5lbGVtZW50cztpZihvPT09dm9pZCAwKXtpZihFZihlLHQpKXJldHVybjtuLnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLHQpLEVtKGUsdCl9ZWxzZXtpZihFZihlLG8pKXJldHVybjtZZHQuc2V0KG8pLG4udW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsWWR0KSxFbShlLG8pfX1mdW5jdGlvbiBJVXQobix0KXtsZXQgZT10aGlzLmNhY2hlLG89dC5lbGVtZW50cztpZihvPT09dm9pZCAwKXtpZihFZihlLHQpKXJldHVybjtuLnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLHQpLEVtKGUsdCl9ZWxzZXtpZihFZihlLG8pKXJldHVybjtVZHQuc2V0KG8pLG4udW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsVWR0KSxFbShlLG8pfX1mdW5jdGlvbiB6VXQobix0KXtsZXQgZT10aGlzLmNhY2hlLG89dC5lbGVtZW50cztpZihvPT09dm9pZCAwKXtpZihFZihlLHQpKXJldHVybjtuLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLHQpLEVtKGUsdCl9ZWxzZXtpZihFZihlLG8pKXJldHVybjtqZHQuc2V0KG8pLG4udW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsamR0KSxFbShlLG8pfX1mdW5jdGlvbiBIVXQobix0KXtsZXQgZT10aGlzLmNhY2hlO2VbMF0hPT10JiYobi51bmlmb3JtMWkodGhpcy5hZGRyLHQpLGVbMF09dCl9ZnVuY3Rpb24gRlV0KG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtFZihlLHQpfHwobi51bmlmb3JtMml2KHRoaXMuYWRkcix0KSxFbShlLHQpKX1mdW5jdGlvbiBMVXQobix0KXtsZXQgZT10aGlzLmNhY2hlO0VmKGUsdCl8fChuLnVuaWZvcm0zaXYodGhpcy5hZGRyLHQpLEVtKGUsdCkpfWZ1bmN0aW9uIEJVdChuLHQpe2xldCBlPXRoaXMuY2FjaGU7RWYoZSx0KXx8KG4udW5pZm9ybTRpdih0aGlzLmFkZHIsdCksRW0oZSx0KSl9ZnVuY3Rpb24gVlV0KG4sdCl7bGV0IGU9dGhpcy5jYWNoZTtlWzBdIT09dCYmKG4udW5pZm9ybTF1aSh0aGlzLmFkZHIsdCksZVswXT10KX1mdW5jdGlvbiBqVXQobix0KXtsZXQgZT10aGlzLmNhY2hlO0VmKGUsdCl8fChuLnVuaWZvcm0ydWl2KHRoaXMuYWRkcix0KSxFbShlLHQpKX1mdW5jdGlvbiBVVXQobix0KXtsZXQgZT10aGlzLmNhY2hlO0VmKGUsdCl8fChuLnVuaWZvcm0zdWl2KHRoaXMuYWRkcix0KSxFbShlLHQpKX1mdW5jdGlvbiBZVXQobix0KXtsZXQgZT10aGlzLmNhY2hlO0VmKGUsdCl8fChuLnVuaWZvcm00dWl2KHRoaXMuYWRkcix0KSxFbShlLHQpKX1mdW5jdGlvbiBHVXQobix0LGUpe2xldCBvPXRoaXMuY2FjaGUsaT1lLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtvWzBdIT09aSYmKG4udW5pZm9ybTFpKHRoaXMuYWRkcixpKSxvWzBdPWkpLGUuc2FmZVNldFRleHR1cmUyRCh0fHxIZ3QsaSl9ZnVuY3Rpb24gV1V0KG4sdCxlKXtsZXQgbz10aGlzLmNhY2hlLGk9ZS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7b1swXSE9PWkmJihuLnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksb1swXT1pKSxlLnNldFRleHR1cmUzRCh0fHxMZ3QsaSl9ZnVuY3Rpb24gcVV0KG4sdCxlKXtsZXQgbz10aGlzLmNhY2hlLGk9ZS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7b1swXSE9PWkmJihuLnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksb1swXT1pKSxlLnNhZmVTZXRUZXh0dXJlQ3ViZSh0fHxCZ3QsaSl9ZnVuY3Rpb24gWlV0KG4sdCxlKXtsZXQgbz10aGlzLmNhY2hlLGk9ZS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7b1swXSE9PWkmJihuLnVuaWZvcm0xaSh0aGlzLmFkZHIsaSksb1swXT1pKSxlLnNldFRleHR1cmUyREFycmF5KHR8fEZndCxpKX1mdW5jdGlvbiBYVXQobil7c3dpdGNoKG4pe2Nhc2UgNTEyNjpyZXR1cm4ga1V0O2Nhc2UgMzU2NjQ6cmV0dXJuIE5VdDtjYXNlIDM1NjY1OnJldHVybiBUVXQ7Y2FzZSAzNTY2NjpyZXR1cm4gQVV0O2Nhc2UgMzU2NzQ6cmV0dXJuIERVdDtjYXNlIDM1Njc1OnJldHVybiBJVXQ7Y2FzZSAzNTY3NjpyZXR1cm4gelV0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBIVXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBGVXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBMVXQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBCVXQ7Y2FzZSA1MTI1OnJldHVybiBWVXQ7Y2FzZSAzNjI5NDpyZXR1cm4galV0O2Nhc2UgMzYyOTU6cmV0dXJuIFVVdDtjYXNlIDM2Mjk2OnJldHVybiBZVXQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBHVXQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIFdVdDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBxVXQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gWlV0fX1mdW5jdGlvbiBRVXQobix0KXtuLnVuaWZvcm0xZnYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIEtVdChuLHQpe2xldCBlPXdTKHQsdGhpcy5zaXplLDIpO24udW5pZm9ybTJmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSlV0KG4sdCl7bGV0IGU9d1ModCx0aGlzLnNpemUsMyk7bi51bmlmb3JtM2Z2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiAkVXQobix0KXtsZXQgZT13Uyh0LHRoaXMuc2l6ZSw0KTtuLnVuaWZvcm00ZnYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIHRZdChuLHQpe2xldCBlPXdTKHQsdGhpcy5zaXplLDQpO24udW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSl9ZnVuY3Rpb24gZVl0KG4sdCl7bGV0IGU9d1ModCx0aGlzLnNpemUsOSk7bi51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxlKX1mdW5jdGlvbiBuWXQobix0KXtsZXQgZT13Uyh0LHRoaXMuc2l6ZSwxNik7bi51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxlKX1mdW5jdGlvbiBvWXQobix0KXtuLnVuaWZvcm0xaXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIGlZdChuLHQpe24udW5pZm9ybTJpdih0aGlzLmFkZHIsdCl9ZnVuY3Rpb24gYVl0KG4sdCl7bi51bmlmb3JtM2l2KHRoaXMuYWRkcix0KX1mdW5jdGlvbiByWXQobix0KXtuLnVuaWZvcm00aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIHNZdChuLHQpe24udW5pZm9ybTF1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIGxZdChuLHQpe24udW5pZm9ybTJ1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIGNZdChuLHQpe24udW5pZm9ybTN1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIG1ZdChuLHQpe24udW5pZm9ybTR1aXYodGhpcy5hZGRyLHQpfWZ1bmN0aW9uIGZZdChuLHQsZSl7bGV0IG89dC5sZW5ndGgsaT1QRihlLG8pO24udW5pZm9ybTFpdih0aGlzLmFkZHIsaSk7Zm9yKGxldCBhPTA7YSE9PW87KythKWUuc2FmZVNldFRleHR1cmUyRCh0W2FdfHxIZ3QsaVthXSl9ZnVuY3Rpb24gcFl0KG4sdCxlKXtsZXQgbz10Lmxlbmd0aCxpPVBGKGUsbyk7bi51bmlmb3JtMWl2KHRoaXMuYWRkcixpKTtmb3IobGV0IGE9MDthIT09bzsrK2EpZS5zZXRUZXh0dXJlM0QodFthXXx8TGd0LGlbYV0pfWZ1bmN0aW9uIGRZdChuLHQsZSl7bGV0IG89dC5sZW5ndGgsaT1QRihlLG8pO24udW5pZm9ybTFpdih0aGlzLmFkZHIsaSk7Zm9yKGxldCBhPTA7YSE9PW87KythKWUuc2FmZVNldFRleHR1cmVDdWJlKHRbYV18fEJndCxpW2FdKX1mdW5jdGlvbiBnWXQobix0LGUpe2xldCBvPXQubGVuZ3RoLGk9UEYoZSxvKTtuLnVuaWZvcm0xaXYodGhpcy5hZGRyLGkpO2ZvcihsZXQgYT0wO2EhPT1vOysrYSllLnNldFRleHR1cmUyREFycmF5KHRbYV18fEZndCxpW2FdKX1mdW5jdGlvbiB1WXQobil7c3dpdGNoKG4pe2Nhc2UgNTEyNjpyZXR1cm4gUVV0O2Nhc2UgMzU2NjQ6cmV0dXJuIEtVdDtjYXNlIDM1NjY1OnJldHVybiBKVXQ7Y2FzZSAzNTY2NjpyZXR1cm4gJFV0O2Nhc2UgMzU2NzQ6cmV0dXJuIHRZdDtjYXNlIDM1Njc1OnJldHVybiBlWXQ7Y2FzZSAzNTY3NjpyZXR1cm4gbll0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBvWXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBpWXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBhWXQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiByWXQ7Y2FzZSA1MTI1OnJldHVybiBzWXQ7Y2FzZSAzNjI5NDpyZXR1cm4gbFl0O2Nhc2UgMzYyOTU6cmV0dXJuIGNZdDtjYXNlIDM2Mjk2OnJldHVybiBtWXQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBmWXQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIHBZdDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiBkWXQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gZ1l0fX1mdW5jdGlvbiBoWXQobix0LGUpe3RoaXMuaWQ9bix0aGlzLmFkZHI9ZSx0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9WFV0KHQudHlwZSl9ZnVuY3Rpb24gVmd0KG4sdCxlKXt0aGlzLmlkPW4sdGhpcy5hZGRyPWUsdGhpcy5jYWNoZT1bXSx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2V0VmFsdWU9dVl0KHQudHlwZSl9Vmd0LnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbihuKXtsZXQgdD10aGlzLmNhY2hlO24gaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkmJnQubGVuZ3RoIT09bi5sZW5ndGgmJih0aGlzLmNhY2hlPW5ldyBGbG9hdDMyQXJyYXkobi5sZW5ndGgpKSxFbSh0LG4pfTtmdW5jdGlvbiBqZ3Qobil7dGhpcy5pZD1uLHRoaXMuc2VxPVtdLHRoaXMubWFwPXt9fWpndC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24obix0LGUpe2xldCBvPXRoaXMuc2VxO2ZvcihsZXQgaT0wLGE9by5sZW5ndGg7aSE9PWE7KytpKXtsZXQgcj1vW2ldO3Iuc2V0VmFsdWUobix0W3IuaWRdLGUpfX07dmFyIGtXPS8oXHcrKShcXSk/KFxbfFwuKT8vZztmdW5jdGlvbiBHZHQobix0KXtuLnNlcS5wdXNoKHQpLG4ubWFwW3QuaWRdPXR9ZnVuY3Rpb24gX1l0KG4sdCxlKXtsZXQgbz1uLm5hbWUsaT1vLmxlbmd0aDtmb3Ioa1cubGFzdEluZGV4PTA7Oyl7bGV0IGE9a1cuZXhlYyhvKSxyPWtXLmxhc3RJbmRleCxzPWFbMV0sbD1hWzJdPT09Il0iLGM9YVszXTtpZihsJiYocz1zfDApLGM9PT12b2lkIDB8fGM9PT0iWyImJnIrMj09PWkpe0dkdChlLGM9PT12b2lkIDA/bmV3IGhZdChzLG4sdCk6bmV3IFZndChzLG4sdCkpO2JyZWFrfWVsc2V7bGV0IGY9ZS5tYXBbc107Zj09PXZvaWQgMCYmKGY9bmV3IGpndChzKSxHZHQoZSxmKSksZT1mfX19ZnVuY3Rpb24gRngobix0KXt0aGlzLnNlcT1bXSx0aGlzLm1hcD17fTtsZXQgZT1uLmdldFByb2dyYW1QYXJhbWV0ZXIodCwzNTcxOCk7Zm9yKGxldCBvPTA7bzxlOysrbyl7bGV0IGk9bi5nZXRBY3RpdmVVbmlmb3JtKHQsbyksYT1uLmdldFVuaWZvcm1Mb2NhdGlvbih0LGkubmFtZSk7X1l0KGksYSx0aGlzKX19RngucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKG4sdCxlLG8pe2xldCBpPXRoaXMubWFwW3RdO2khPT12b2lkIDAmJmkuc2V0VmFsdWUobixlLG8pfTtGeC5wcm90b3R5cGUuc2V0T3B0aW9uYWw9ZnVuY3Rpb24obix0LGUpe2xldCBvPXRbZV07byE9PXZvaWQgMCYmdGhpcy5zZXRWYWx1ZShuLGUsbyl9O0Z4LnVwbG9hZD1mdW5jdGlvbihuLHQsZSxvKXtmb3IobGV0IGk9MCxhPXQubGVuZ3RoO2khPT1hOysraSl7bGV0IHI9dFtpXSxzPWVbci5pZF07cy5uZWVkc1VwZGF0ZSE9PSExJiZyLnNldFZhbHVlKG4scy52YWx1ZSxvKX19O0Z4LnNlcVdpdGhWYWx1ZT1mdW5jdGlvbihuLHQpe2xldCBlPVtdO2ZvcihsZXQgbz0wLGk9bi5sZW5ndGg7byE9PWk7KytvKXtsZXQgYT1uW29dO2EuaWQgaW4gdCYmZS5wdXNoKGEpfXJldHVybiBlfTtmdW5jdGlvbiBXZHQobix0LGUpe2xldCBvPW4uY3JlYXRlU2hhZGVyKHQpO3JldHVybiBuLnNoYWRlclNvdXJjZShvLGUpLG4uY29tcGlsZVNoYWRlcihvKSxvfXZhciBDWXQ9MDtmdW5jdGlvbiBNWXQobil7bGV0IHQ9bi5zcGxpdChgCmApO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV09ZSsxKyI6ICIrdFtlXTtyZXR1cm4gdC5qb2luKGAKYCl9ZnVuY3Rpb24gYll0KG4pe3N3aXRjaChuKXtjYXNlIEx4OnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSBNcjpyZXR1cm5bInNSR0IiLCIoIHZhbHVlICkiXTtkZWZhdWx0OnJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogVW5zdXBwb3J0ZWQgZW5jb2Rpbmc6IixuKSxbIkxpbmVhciIsIiggdmFsdWUgKSJdfX1mdW5jdGlvbiBxZHQobix0LGUpe2xldCBvPW4uZ2V0U2hhZGVyUGFyYW1ldGVyKHQsMzU3MTMpLGk9bi5nZXRTaGFkZXJJbmZvTG9nKHQpLnRyaW0oKTtyZXR1cm4gbyYmaT09PSIiPyIiOmUudG9VcHBlckNhc2UoKStgCgpgK2krYAoKYCtNWXQobi5nZXRTaGFkZXJTb3VyY2UodCkpfWZ1bmN0aW9uIE9ZdChuLHQpe2xldCBlPWJZdCh0KTtyZXR1cm4idmVjNCAiK24rIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuIExpbmVhclRvIitlWzBdK2VbMV0rIjsgfSJ9ZnVuY3Rpb24gUFl0KG4sdCl7bGV0IGU7c3dpdGNoKHQpe2Nhc2UgWjh0OmU9IkxpbmVhciI7YnJlYWs7Y2FzZSBYOHQ6ZT0iUmVpbmhhcmQiO2JyZWFrO2Nhc2UgUTh0OmU9Ik9wdGltaXplZENpbmVvbiI7YnJlYWs7Y2FzZSBLOHQ6ZT0iQUNFU0ZpbG1pYyI7YnJlYWs7Y2FzZSBKOHQ6ZT0iQ3VzdG9tIjticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBVbnN1cHBvcnRlZCB0b25lTWFwcGluZzoiLHQpLGU9IkxpbmVhciJ9cmV0dXJuInZlYzMgIituKyIoIHZlYzMgY29sb3IgKSB7IHJldHVybiAiK2UrIlRvbmVNYXBwaW5nKCBjb2xvciApOyB9In1mdW5jdGlvbiB5WXQobil7cmV0dXJuW24uZXh0ZW5zaW9uRGVyaXZhdGl2ZXN8fG4uZW52TWFwQ3ViZVVWfHxuLmJ1bXBNYXB8fG4udGFuZ2VudFNwYWNlTm9ybWFsTWFwfHxuLmNsZWFyY29hdE5vcm1hbE1hcHx8bi5mbGF0U2hhZGluZ3x8bi5zaGFkZXJJRD09PSJwaHlzaWNhbCI/IiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlIjoiIiwobi5leHRlbnNpb25GcmFnRGVwdGh8fG4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcikmJm4ucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUiOiIiLG4uZXh0ZW5zaW9uRHJhd0J1ZmZlcnMmJm4ucmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVycz8iI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZSI6IiIsKG4uZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8bi5lbnZNYXB8fG4udHJhbnNtaXNzaW9uKSYmbi5yZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q/IiNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA6IGVuYWJsZSI6IiJdLmZpbHRlcihLNSkuam9pbihgCmApfWZ1bmN0aW9uIHhZdChuKXtsZXQgdD1bXTtmb3IobGV0IGUgaW4gbil7bGV0IG89bltlXTtvIT09ITEmJnQucHVzaCgiI2RlZmluZSAiK2UrIiAiK28pfXJldHVybiB0LmpvaW4oYApgKX1mdW5jdGlvbiB2WXQobix0KXtsZXQgZT17fSxvPW4uZ2V0UHJvZ3JhbVBhcmFtZXRlcih0LDM1NzIxKTtmb3IobGV0IGk9MDtpPG87aSsrKXtsZXQgYT1uLmdldEFjdGl2ZUF0dHJpYih0LGkpLHI9YS5uYW1lLHM9MTthLnR5cGU9PT0zNTY3NCYmKHM9MiksYS50eXBlPT09MzU2NzUmJihzPTMpLGEudHlwZT09PTM1Njc2JiYocz00KSxlW3JdPXt0eXBlOmEudHlwZSxsb2NhdGlvbjpuLmdldEF0dHJpYkxvY2F0aW9uKHQsciksbG9jYXRpb25TaXplOnN9fXJldHVybiBlfWZ1bmN0aW9uIEs1KG4pe3JldHVybiBuIT09IiJ9ZnVuY3Rpb24gWmR0KG4sdCl7cmV0dXJuIG4ucmVwbGFjZSgvTlVNX0RJUl9MSUdIVFMvZyx0Lm51bURpckxpZ2h0cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRTL2csdC5udW1TcG90TGlnaHRzKS5yZXBsYWNlKC9OVU1fUkVDVF9BUkVBX0xJR0hUUy9nLHQubnVtUmVjdEFyZWFMaWdodHMpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVFMvZyx0Lm51bVBvaW50TGlnaHRzKS5yZXBsYWNlKC9OVU1fSEVNSV9MSUdIVFMvZyx0Lm51bUhlbWlMaWdodHMpLnJlcGxhY2UoL05VTV9ESVJfTElHSFRfU0hBRE9XUy9nLHQubnVtRGlyTGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVF9TSEFET1dTL2csdC5udW1TcG90TGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRfU0hBRE9XUy9nLHQubnVtUG9pbnRMaWdodFNoYWRvd3MpfWZ1bmN0aW9uIFhkdChuLHQpe3JldHVybiBuLnJlcGxhY2UoL05VTV9DTElQUElOR19QTEFORVMvZyx0Lm51bUNsaXBwaW5nUGxhbmVzKS5yZXBsYWNlKC9VTklPTl9DTElQUElOR19QTEFORVMvZyx0Lm51bUNsaXBwaW5nUGxhbmVzLXQubnVtQ2xpcEludGVyc2VjdGlvbil9dmFyIHdZdD0vXlsgXHRdKiNpbmNsdWRlICs8KFtcd1xkLi9dKyk+L2dtO2Z1bmN0aW9uIHFXKG4pe3JldHVybiBuLnJlcGxhY2Uod1l0LFNZdCl9ZnVuY3Rpb24gU1l0KG4sdCl7bGV0IGU9c2lbdF07aWYoZT09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbiBub3QgcmVzb2x2ZSAjaW5jbHVkZSA8Iit0KyI+Iik7cmV0dXJuIHFXKGUpfXZhciBSWXQ9LyNwcmFnbWEgdW5yb2xsX2xvb3BbXHNdKz9mb3IgXCggaW50IGkgXD0gKFxkKylcOyBpIDwgKFxkKylcOyBpIFwrXCsgXCkgXHsoW1xzXFNdKz8pKD89XH0pXH0vZyxFWXQ9LyNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRccytmb3JccypcKFxzKmludFxzK2lccyo9XHMqKFxkKylccyo7XHMqaVxzKjxccyooXGQrKVxzKjtccyppXHMqXCtcK1xzKlwpXHMqeyhbXHNcU10rPyl9XHMrI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQvZztmdW5jdGlvbiBRZHQobil7cmV0dXJuIG4ucmVwbGFjZShFWXQsVWd0KS5yZXBsYWNlKFJZdCxrWXQpfWZ1bmN0aW9uIGtZdChuLHQsZSxvKXtyZXR1cm4gY29uc29sZS53YXJuKCJXZWJHTFByb2dyYW06ICNwcmFnbWEgdW5yb2xsX2xvb3Agc2hhZGVyIHN5bnRheCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQgc3ludGF4IGluc3RlYWQuIiksVWd0KG4sdCxlLG8pfWZ1bmN0aW9uIFVndChuLHQsZSxvKXtsZXQgaT0iIjtmb3IobGV0IGE9cGFyc2VJbnQodCk7YTxwYXJzZUludChlKTthKyspaSs9by5yZXBsYWNlKC9cW1xzKmlccypcXS9nLCJbICIrYSsiIF0iKS5yZXBsYWNlKC9VTlJPTExFRF9MT09QX0lOREVYL2csYSk7cmV0dXJuIGl9ZnVuY3Rpb24gS2R0KG4pe2xldCB0PSJwcmVjaXNpb24gIituLnByZWNpc2lvbitgIGZsb2F0OwpwcmVjaXNpb24gYCtuLnByZWNpc2lvbisiIGludDsiO3JldHVybiBuLnByZWNpc2lvbj09PSJoaWdocCI/dCs9YAojZGVmaW5lIEhJR0hfUFJFQ0lTSU9OYDpuLnByZWNpc2lvbj09PSJtZWRpdW1wIj90Kz1gCiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTmA6bi5wcmVjaXNpb249PT0ibG93cCImJih0Kz1gCiNkZWZpbmUgTE9XX1BSRUNJU0lPTmApLHR9ZnVuY3Rpb24gTll0KG4pe2xldCB0PSJTSEFET1dNQVBfVFlQRV9CQVNJQyI7cmV0dXJuIG4uc2hhZG93TWFwVHlwZT09PXdndD90PSJTSEFET1dNQVBfVFlQRV9QQ0YiOm4uc2hhZG93TWFwVHlwZT09PXc4dD90PSJTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCI6bi5zaGFkb3dNYXBUeXBlPT09UTUmJih0PSJTSEFET1dNQVBfVFlQRV9WU00iKSx0fWZ1bmN0aW9uIFRZdChuKXtsZXQgdD0iRU5WTUFQX1RZUEVfQ1VCRSI7aWYobi5lbnZNYXApc3dpdGNoKG4uZW52TWFwTW9kZSl7Y2FzZSBTNDpjYXNlIFI0OnQ9IkVOVk1BUF9UWVBFX0NVQkUiO2JyZWFrO2Nhc2UgYkY6Y2FzZSAkcTp0PSJFTlZNQVBfVFlQRV9DVUJFX1VWIjticmVha31yZXR1cm4gdH1mdW5jdGlvbiBBWXQobil7bGV0IHQ9IkVOVk1BUF9NT0RFX1JFRkxFQ1RJT04iO2lmKG4uZW52TWFwKXN3aXRjaChuLmVudk1hcE1vZGUpe2Nhc2UgUjQ6Y2FzZSAkcTp0PSJFTlZNQVBfTU9ERV9SRUZSQUNUSU9OIjticmVha31yZXR1cm4gdH1mdW5jdGlvbiBEWXQobil7bGV0IHQ9IkVOVk1BUF9CTEVORElOR19OT05FIjtpZihuLmVudk1hcClzd2l0Y2gobi5jb21iaW5lKXtjYXNlIE1GOnQ9IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7YnJlYWs7Y2FzZSBXOHQ6dD0iRU5WTUFQX0JMRU5ESU5HX01JWCI7YnJlYWs7Y2FzZSBxOHQ6dD0iRU5WTUFQX0JMRU5ESU5HX0FERCI7YnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24gSVl0KG4sdCxlLG8pe2xldCBpPW4uZ2V0Q29udGV4dCgpLGE9ZS5kZWZpbmVzLHI9ZS52ZXJ0ZXhTaGFkZXIscz1lLmZyYWdtZW50U2hhZGVyLGw9Tll0KGUpLGM9VFl0KGUpLG09QVl0KGUpLGY9RFl0KGUpLHA9ZS5pc1dlYkdMMj8iIjp5WXQoZSksZz14WXQoYSksXz1pLmNyZWF0ZVByb2dyYW0oKSxNLHksTz1lLmdsc2xWZXJzaW9uPyIjdmVyc2lvbiAiK2UuZ2xzbFZlcnNpb24rYApgOiIiO2UuaXNSYXdTaGFkZXJNYXRlcmlhbD8oTT1bZ10uZmlsdGVyKEs1KS5qb2luKGAKYCksTS5sZW5ndGg+MCYmKE0rPWAKYCkseT1bcCxnXS5maWx0ZXIoSzUpLmpvaW4oYApgKSx5Lmxlbmd0aD4wJiYoeSs9YApgKSk6KE09W0tkdChlKSwiI2RlZmluZSBTSEFERVJfTkFNRSAiK2Uuc2hhZGVyTmFtZSxnLGUuaW5zdGFuY2luZz8iI2RlZmluZSBVU0VfSU5TVEFOQ0lORyI6IiIsZS5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkdfQ09MT1IiOiIiLGUuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBWRVJURVhfVEVYVFVSRVMiOiIiLCIjZGVmaW5lIE1BWF9CT05FUyAiK2UubWF4Qm9uZXMsZS51c2VGb2cmJmUuZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLGUudXNlRm9nJiZlLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLGUubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLGUuZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLGUuZW52TWFwPyIjZGVmaW5lICIrbToiIixlLmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsZS5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLGUuZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIixlLmJ1bXBNYXA/IiNkZWZpbmUgVVNFX0JVTVBNQVAiOiIiLGUubm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9OT1JNQUxNQVAiOiIiLGUubm9ybWFsTWFwJiZlLm9iamVjdFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIE9CSkVDVFNQQUNFX05PUk1BTE1BUCI6IiIsZS5ub3JtYWxNYXAmJmUudGFuZ2VudFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAiOiIiLGUuY2xlYXJjb2F0TWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRNQVAiOiIiLGUuY2xlYXJjb2F0Um91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQIjoiIixlLmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsZS5kaXNwbGFjZW1lbnRNYXAmJmUuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBVU0VfRElTUExBQ0VNRU5UTUFQIjoiIixlLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsZS5zcGVjdWxhckludGVuc2l0eU1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJJTlRFTlNJVFlNQVAiOiIiLGUuc3BlY3VsYXJDb2xvck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJDT0xPUk1BUCI6IiIsZS5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsZS5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsZS5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLGUudHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLGUudHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLGUudGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLGUuc2hlZW5Db2xvck1hcD8iI2RlZmluZSBVU0VfU0hFRU5DT0xPUk1BUCI6IiIsZS5zaGVlblJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfU0hFRU5ST1VHSE5FU1NNQVAiOiIiLGUudmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLGUudmVydGV4Q29sb3JzPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsZS52ZXJ0ZXhBbHBoYXM/IiNkZWZpbmUgVVNFX0NPTE9SX0FMUEhBIjoiIixlLnZlcnRleFV2cz8iI2RlZmluZSBVU0VfVVYiOiIiLGUudXZzVmVydGV4T25seT8iI2RlZmluZSBVVlNfVkVSVEVYX09OTFkiOiIiLGUuZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLGUuc2tpbm5pbmc/IiNkZWZpbmUgVVNFX1NLSU5OSU5HIjoiIixlLnVzZVZlcnRleFRleHR1cmU/IiNkZWZpbmUgQk9ORV9URVhUVVJFIjoiIixlLm1vcnBoVGFyZ2V0cz8iI2RlZmluZSBVU0VfTU9SUEhUQVJHRVRTIjoiIixlLm1vcnBoTm9ybWFscyYmZS5mbGF0U2hhZGluZz09PSExPyIjZGVmaW5lIFVTRV9NT1JQSE5PUk1BTFMiOiIiLGUubW9ycGhUYXJnZXRzJiZlLmlzV2ViR0wyPyIjZGVmaW5lIE1PUlBIVEFSR0VUU19URVhUVVJFIjoiIixlLm1vcnBoVGFyZ2V0cyYmZS5pc1dlYkdMMj8iI2RlZmluZSBNT1JQSFRBUkdFVFNfQ09VTlQgIitlLm1vcnBoVGFyZ2V0c0NvdW50OiIiLGUuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixlLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixlLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsZS5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixlLnNpemVBdHRlbnVhdGlvbj8iI2RlZmluZSBVU0VfU0laRUFUVEVOVUFUSU9OIjoiIixlLmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIixlLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJmUucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsInVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgbW9kZWxWaWV3TWF0cml4OyIsInVuaWZvcm0gbWF0NCBwcm9qZWN0aW9uTWF0cml4OyIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gbWF0MyBub3JtYWxNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkciLCIJYXR0cmlidXRlIG1hdDQgaW5zdGFuY2VNYXRyaXg7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SIiwiCWF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlQ29sb3I7IiwiI2VuZGlmIiwiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247IiwiYXR0cmlidXRlIHZlYzMgbm9ybWFsOyIsImF0dHJpYnV0ZSB2ZWMyIHV2OyIsIiNpZmRlZiBVU0VfVEFOR0VOVCIsIglhdHRyaWJ1dGUgdmVjNCB0YW5nZW50OyIsIiNlbmRpZiIsIiNpZiBkZWZpbmVkKCBVU0VfQ09MT1JfQUxQSEEgKSIsIglhdHRyaWJ1dGUgdmVjNCBjb2xvcjsiLCIjZWxpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSIsIglhdHRyaWJ1dGUgdmVjMyBjb2xvcjsiLCIjZW5kaWYiLCIjaWYgKCBkZWZpbmVkKCBVU0VfTU9SUEhUQVJHRVRTICkgJiYgISBkZWZpbmVkKCBNT1JQSFRBUkdFVFNfVEVYVFVSRSApICkiLCIJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQwOyIsIglhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiCWF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MjsiLCIJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQzOyIsIgkjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwwOyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwxOyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwyOyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwzOyIsIgkjZWxzZSIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ0OyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ1OyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ2OyIsIgkJYXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ3OyIsIgkjZW5kaWYiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX1NLSU5OSU5HIiwiCWF0dHJpYnV0ZSB2ZWM0IHNraW5JbmRleDsiLCIJYXR0cmlidXRlIHZlYzQgc2tpbldlaWdodDsiLCIjZW5kaWYiLGAKYF0uZmlsdGVyKEs1KS5qb2luKGAKYCkseT1bcCxLZHQoZSksIiNkZWZpbmUgU0hBREVSX05BTUUgIitlLnNoYWRlck5hbWUsZyxlLnVzZUZvZyYmZS5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsZS51c2VGb2cmJmUuZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsZS5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsZS5tYXRjYXA/IiNkZWZpbmUgVVNFX01BVENBUCI6IiIsZS5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsZS5lbnZNYXA/IiNkZWZpbmUgIitjOiIiLGUuZW52TWFwPyIjZGVmaW5lICIrbToiIixlLmVudk1hcD8iI2RlZmluZSAiK2Y6IiIsZS5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLGUuYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixlLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsZS5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixlLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixlLm5vcm1hbE1hcCYmZS5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLGUubm9ybWFsTWFwJiZlLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixlLmNsZWFyY29hdD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUIjoiIixlLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixlLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsZS5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLGUuc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixlLnNwZWN1bGFySW50ZW5zaXR5TWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUklOVEVOU0lUWU1BUCI6IiIsZS5zcGVjdWxhckNvbG9yTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUkNPTE9STUFQIjoiIixlLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixlLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixlLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsZS5hbHBoYVRlc3Q/IiNkZWZpbmUgVVNFX0FMUEhBVEVTVCI6IiIsZS5zaGVlbj8iI2RlZmluZSBVU0VfU0hFRU4iOiIiLGUuc2hlZW5Db2xvck1hcD8iI2RlZmluZSBVU0VfU0hFRU5DT0xPUk1BUCI6IiIsZS5zaGVlblJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfU0hFRU5ST1VHSE5FU1NNQVAiOiIiLGUudHJhbnNtaXNzaW9uPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT04iOiIiLGUudHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLGUudGhpY2tuZXNzTWFwPyIjZGVmaW5lIFVTRV9USElDS05FU1NNQVAiOiIiLGUuZGVjb2RlVmlkZW9UZXh0dXJlPyIjZGVmaW5lIERFQ09ERV9WSURFT19URVhUVVJFIjoiIixlLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixlLnZlcnRleENvbG9yc3x8ZS5pbnN0YW5jaW5nQ29sb3I/IiNkZWZpbmUgVVNFX0NPTE9SIjoiIixlLnZlcnRleEFscGhhcz8iI2RlZmluZSBVU0VfQ09MT1JfQUxQSEEiOiIiLGUudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsZS51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsZS5ncmFkaWVudE1hcD8iI2RlZmluZSBVU0VfR1JBRElFTlRNQVAiOiIiLGUuZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLGUuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixlLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixlLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsZS5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrbDoiIixlLnByZW11bHRpcGxpZWRBbHBoYT8iI2RlZmluZSBQUkVNVUxUSVBMSUVEX0FMUEhBIjoiIixlLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPyIjZGVmaW5lIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMiOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmZS5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwoZS5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHxlLmVudk1hcCkmJmUucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZGVmaW5lIFRFWFRVUkVfTE9EX0VYVCI6IiIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IixlLnRvbmVNYXBwaW5nIT09SXg/IiNkZWZpbmUgVE9ORV9NQVBQSU5HIjoiIixlLnRvbmVNYXBwaW5nIT09SXg/c2kudG9uZW1hcHBpbmdfcGFyc19mcmFnbWVudDoiIixlLnRvbmVNYXBwaW5nIT09SXg/UFl0KCJ0b25lTWFwcGluZyIsZS50b25lTWFwcGluZyk6IiIsZS5kaXRoZXJpbmc/IiNkZWZpbmUgRElUSEVSSU5HIjoiIixlLmFscGhhV3JpdGU/IiI6IiNkZWZpbmUgT1BBUVVFIixzaS5lbmNvZGluZ3NfcGFyc19mcmFnbWVudCxPWXQoImxpbmVhclRvT3V0cHV0VGV4ZWwiLGUub3V0cHV0RW5jb2RpbmcpLGUuZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIitlLmRlcHRoUGFja2luZzoiIixgCmBdLmZpbHRlcihLNSkuam9pbihgCmApKSxyPXFXKHIpLHI9WmR0KHIsZSkscj1YZHQocixlKSxzPXFXKHMpLHM9WmR0KHMsZSkscz1YZHQocyxlKSxyPVFkdChyKSxzPVFkdChzKSxlLmlzV2ViR0wyJiZlLmlzUmF3U2hhZGVyTWF0ZXJpYWwhPT0hMCYmKE89YCN2ZXJzaW9uIDMwMCBlcwpgLE09WyJwcmVjaXNpb24gbWVkaXVtcCBzYW1wbGVyMkRBcnJheTsiLCIjZGVmaW5lIGF0dHJpYnV0ZSBpbiIsIiNkZWZpbmUgdmFyeWluZyBvdXQiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIl0uam9pbihgCmApK2AKYCtNLHk9WyIjZGVmaW5lIHZhcnlpbmcgaW4iLGUuZ2xzbFZlcnNpb249PT1iZHQ/IiI6ImxheW91dChsb2NhdGlvbiA9IDApIG91dCBoaWdocCB2ZWM0IHBjX2ZyYWdDb2xvcjsiLGUuZ2xzbFZlcnNpb249PT1iZHQ/IiI6IiNkZWZpbmUgZ2xfRnJhZ0NvbG9yIHBjX2ZyYWdDb2xvciIsIiNkZWZpbmUgZ2xfRnJhZ0RlcHRoRVhUIGdsX0ZyYWdEZXB0aCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmVDdWJlIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmUyRFByb2ogdGV4dHVyZVByb2oiLCIjZGVmaW5lIHRleHR1cmUyRExvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qTG9kRVhUIHRleHR1cmVQcm9qTG9kIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUxvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRHcmFkRVhUIHRleHR1cmVHcmFkIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qR3JhZEVYVCB0ZXh0dXJlUHJvakdyYWQiLCIjZGVmaW5lIHRleHR1cmVDdWJlR3JhZEVYVCB0ZXh0dXJlR3JhZCJdLmpvaW4oYApgKStgCmAreSk7bGV0IGI9TytNK3IsUj1PK3krcyxFPVdkdChpLDM1NjMzLGIpLGo9V2R0KGksMzU2MzIsUik7aWYoaS5hdHRhY2hTaGFkZXIoXyxFKSxpLmF0dGFjaFNoYWRlcihfLGopLGUuaW5kZXgwQXR0cmlidXRlTmFtZSE9PXZvaWQgMD9pLmJpbmRBdHRyaWJMb2NhdGlvbihfLDAsZS5pbmRleDBBdHRyaWJ1dGVOYW1lKTplLm1vcnBoVGFyZ2V0cz09PSEwJiZpLmJpbmRBdHRyaWJMb2NhdGlvbihfLDAsInBvc2l0aW9uIiksaS5saW5rUHJvZ3JhbShfKSxuLmRlYnVnLmNoZWNrU2hhZGVyRXJyb3JzKXtsZXQgRXQ9aS5nZXRQcm9ncmFtSW5mb0xvZyhfKS50cmltKCksanQ9aS5nZXRTaGFkZXJJbmZvTG9nKEUpLnRyaW0oKSxrdD1pLmdldFNoYWRlckluZm9Mb2coaikudHJpbSgpLHc9ITAsVT0hMDtpZihpLmdldFByb2dyYW1QYXJhbWV0ZXIoXywzNTcxNCk9PT0hMSl7dz0hMTtsZXQgbnQ9cWR0KGksRSwidmVydGV4IiksbHQ9cWR0KGksaiwiZnJhZ21lbnQiKTtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFByb2dyYW06IFNoYWRlciBFcnJvciAiK2kuZ2V0RXJyb3IoKSsiIC0gVkFMSURBVEVfU1RBVFVTICIraS5nZXRQcm9ncmFtUGFyYW1ldGVyKF8sMzU3MTUpK2AKClByb2dyYW0gSW5mbyBMb2c6IGArRXQrYApgK250K2AKYCtsdCl9ZWxzZSBFdCE9PSIiP2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBQcm9ncmFtIEluZm8gTG9nOiIsRXQpOihqdD09PSIifHxrdD09PSIiKSYmKFU9ITEpO1UmJih0aGlzLmRpYWdub3N0aWNzPXtydW5uYWJsZTp3LHByb2dyYW1Mb2c6RXQsdmVydGV4U2hhZGVyOntsb2c6anQscHJlZml4Ok19LGZyYWdtZW50U2hhZGVyOntsb2c6a3QscHJlZml4Onl9fSl9aS5kZWxldGVTaGFkZXIoRSksaS5kZWxldGVTaGFkZXIoaik7bGV0IHJ0O3RoaXMuZ2V0VW5pZm9ybXM9ZnVuY3Rpb24oKXtyZXR1cm4gcnQ9PT12b2lkIDAmJihydD1uZXcgRngoaSxfKSkscnR9O2xldCBKO3JldHVybiB0aGlzLmdldEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gSj09PXZvaWQgMCYmKEo9dll0KGksXykpLEp9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe28ucmVsZWFzZVN0YXRlc09mUHJvZ3JhbSh0aGlzKSxpLmRlbGV0ZVByb2dyYW0oXyksdGhpcy5wcm9ncmFtPXZvaWQgMH0sdGhpcy5uYW1lPWUuc2hhZGVyTmFtZSx0aGlzLmlkPUNZdCsrLHRoaXMuY2FjaGVLZXk9dCx0aGlzLnVzZWRUaW1lcz0xLHRoaXMucHJvZ3JhbT1fLHRoaXMudmVydGV4U2hhZGVyPUUsdGhpcy5mcmFnbWVudFNoYWRlcj1qLHRoaXN9dmFyIHpZdD0wLFpXPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zaGFkZXJDYWNoZT1uZXcgTWFwLHRoaXMubWF0ZXJpYWxDYWNoZT1uZXcgTWFwfXVwZGF0ZSh0KXtsZXQgZT10LnZlcnRleFNoYWRlcixvPXQuZnJhZ21lbnRTaGFkZXIsaT10aGlzLl9nZXRTaGFkZXJTdGFnZShlKSxhPXRoaXMuX2dldFNoYWRlclN0YWdlKG8pLHI9dGhpcy5fZ2V0U2hhZGVyQ2FjaGVGb3JNYXRlcmlhbCh0KTtyZXR1cm4gci5oYXMoaSk9PT0hMSYmKHIuYWRkKGkpLGkudXNlZFRpbWVzKyspLHIuaGFzKGEpPT09ITEmJihyLmFkZChhKSxhLnVzZWRUaW1lcysrKSx0aGlzfXJlbW92ZSh0KXtsZXQgZT10aGlzLm1hdGVyaWFsQ2FjaGUuZ2V0KHQpO2ZvcihsZXQgbyBvZiBlKW8udXNlZFRpbWVzLS0sby51c2VkVGltZXM9PT0wJiZ0aGlzLnNoYWRlckNhY2hlLmRlbGV0ZShvKTtyZXR1cm4gdGhpcy5tYXRlcmlhbENhY2hlLmRlbGV0ZSh0KSx0aGlzfWdldFZlcnRleFNoYWRlcklEKHQpe3JldHVybiB0aGlzLl9nZXRTaGFkZXJTdGFnZSh0LnZlcnRleFNoYWRlcikuaWR9Z2V0RnJhZ21lbnRTaGFkZXJJRCh0KXtyZXR1cm4gdGhpcy5fZ2V0U2hhZGVyU3RhZ2UodC5mcmFnbWVudFNoYWRlcikuaWR9ZGlzcG9zZSgpe3RoaXMuc2hhZGVyQ2FjaGUuY2xlYXIoKSx0aGlzLm1hdGVyaWFsQ2FjaGUuY2xlYXIoKX1fZ2V0U2hhZGVyQ2FjaGVGb3JNYXRlcmlhbCh0KXtsZXQgZT10aGlzLm1hdGVyaWFsQ2FjaGU7cmV0dXJuIGUuaGFzKHQpPT09ITEmJmUuc2V0KHQsbmV3IFNldCksZS5nZXQodCl9X2dldFNoYWRlclN0YWdlKHQpe2xldCBlPXRoaXMuc2hhZGVyQ2FjaGU7aWYoZS5oYXModCk9PT0hMSl7bGV0IG89bmV3IFhXO2Uuc2V0KHQsbyl9cmV0dXJuIGUuZ2V0KHQpfX0sWFc9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmlkPXpZdCsrLHRoaXMudXNlZFRpbWVzPTB9fTtmdW5jdGlvbiBIWXQobix0LGUsbyxpLGEscil7bGV0IHM9bmV3IFpILGw9bmV3IFpXLGM9W10sbT1pLmlzV2ViR0wyLGY9aS5sb2dhcml0aG1pY0RlcHRoQnVmZmVyLHA9aS5mbG9hdFZlcnRleFRleHR1cmVzLGc9aS5tYXhWZXJ0ZXhVbmlmb3JtcyxfPWkudmVydGV4VGV4dHVyZXMsTT1pLnByZWNpc2lvbix5PXtNZXNoRGVwdGhNYXRlcmlhbDoiZGVwdGgiLE1lc2hEaXN0YW5jZU1hdGVyaWFsOiJkaXN0YW5jZVJHQkEiLE1lc2hOb3JtYWxNYXRlcmlhbDoibm9ybWFsIixNZXNoQmFzaWNNYXRlcmlhbDoiYmFzaWMiLE1lc2hMYW1iZXJ0TWF0ZXJpYWw6ImxhbWJlcnQiLE1lc2hQaG9uZ01hdGVyaWFsOiJwaG9uZyIsTWVzaFRvb25NYXRlcmlhbDoidG9vbiIsTWVzaFN0YW5kYXJkTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoUGh5c2ljYWxNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hNYXRjYXBNYXRlcmlhbDoibWF0Y2FwIixMaW5lQmFzaWNNYXRlcmlhbDoiYmFzaWMiLExpbmVEYXNoZWRNYXRlcmlhbDoiZGFzaGVkIixQb2ludHNNYXRlcmlhbDoicG9pbnRzIixTaGFkb3dNYXRlcmlhbDoic2hhZG93IixTcHJpdGVNYXRlcmlhbDoic3ByaXRlIn07ZnVuY3Rpb24gTyh3KXtsZXQgbnQ9dy5za2VsZXRvbi5ib25lcztpZihwKXJldHVybiAxMDI0O3tsZXQgYnQ9TWF0aC5mbG9vcigoZy0yMCkvNCksb3Q9TWF0aC5taW4oYnQsbnQubGVuZ3RoKTtyZXR1cm4gb3Q8bnQubGVuZ3RoPyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFNrZWxldG9uIGhhcyAiK250Lmxlbmd0aCsiIGJvbmVzLiBUaGlzIEdQVSBzdXBwb3J0cyAiK290KyIuIiksMCk6b3R9fWZ1bmN0aW9uIGIodyxVLG50LGx0LGJ0KXtsZXQgb3Q9bHQuZm9nLHV0PXcuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9sdC5lbnZpcm9ubWVudDpudWxsLGd0PSh3LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/ZTp0KS5nZXQody5lbnZNYXB8fHV0KSxXdD15W3cudHlwZV0sUnQ9YnQuaXNTa2lubmVkTWVzaD9PKGJ0KTowO3cucHJlY2lzaW9uIT09bnVsbCYmKE09aS5nZXRNYXhQcmVjaXNpb24ody5wcmVjaXNpb24pLE0hPT13LnByZWNpc2lvbiYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW0uZ2V0UGFyYW1ldGVyczoiLHcucHJlY2lzaW9uLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIsTSwiaW5zdGVhZC4iKSk7bGV0IEd0LHllLGplLGNlO2lmKFd0KXtsZXQgcXQ9a09bV3RdO0d0PXF0LnZlcnRleFNoYWRlcix5ZT1xdC5mcmFnbWVudFNoYWRlcn1lbHNlIEd0PXcudmVydGV4U2hhZGVyLHllPXcuZnJhZ21lbnRTaGFkZXIsbC51cGRhdGUodyksamU9bC5nZXRWZXJ0ZXhTaGFkZXJJRCh3KSxjZT1sLmdldEZyYWdtZW50U2hhZGVySUQodyk7bGV0IEx0PW4uZ2V0UmVuZGVyVGFyZ2V0KCksUG49dy5hbHBoYVRlc3Q+MCxWZT13LmNsZWFyY29hdD4wO3JldHVybntpc1dlYkdMMjptLHNoYWRlcklEOld0LHNoYWRlck5hbWU6dy50eXBlLHZlcnRleFNoYWRlcjpHdCxmcmFnbWVudFNoYWRlcjp5ZSxkZWZpbmVzOncuZGVmaW5lcyxjdXN0b21WZXJ0ZXhTaGFkZXJJRDpqZSxjdXN0b21GcmFnbWVudFNoYWRlcklEOmNlLGlzUmF3U2hhZGVyTWF0ZXJpYWw6dy5pc1Jhd1NoYWRlck1hdGVyaWFsPT09ITAsZ2xzbFZlcnNpb246dy5nbHNsVmVyc2lvbixwcmVjaXNpb246TSxpbnN0YW5jaW5nOmJ0LmlzSW5zdGFuY2VkTWVzaD09PSEwLGluc3RhbmNpbmdDb2xvcjpidC5pc0luc3RhbmNlZE1lc2g9PT0hMCYmYnQuaW5zdGFuY2VDb2xvciE9PW51bGwsc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlczpfLG91dHB1dEVuY29kaW5nOkx0PT09bnVsbD9uLm91dHB1dEVuY29kaW5nOkx0LmlzWFJSZW5kZXJUYXJnZXQ9PT0hMD9MdC50ZXh0dXJlLmVuY29kaW5nOkx4LG1hcDohIXcubWFwLG1hdGNhcDohIXcubWF0Y2FwLGVudk1hcDohIWd0LGVudk1hcE1vZGU6Z3QmJmd0Lm1hcHBpbmcsZW52TWFwQ3ViZVVWOiEhZ3QmJihndC5tYXBwaW5nPT09YkZ8fGd0Lm1hcHBpbmc9PT0kcSksbGlnaHRNYXA6ISF3LmxpZ2h0TWFwLGFvTWFwOiEhdy5hb01hcCxlbWlzc2l2ZU1hcDohIXcuZW1pc3NpdmVNYXAsYnVtcE1hcDohIXcuYnVtcE1hcCxub3JtYWxNYXA6ISF3Lm5vcm1hbE1hcCxvYmplY3RTcGFjZU5vcm1hbE1hcDp3Lm5vcm1hbE1hcFR5cGU9PT1iQnQsdGFuZ2VudFNwYWNlTm9ybWFsTWFwOncubm9ybWFsTWFwVHlwZT09PXZTLGRlY29kZVZpZGVvVGV4dHVyZTohIXcubWFwJiZ3Lm1hcC5pc1ZpZGVvVGV4dHVyZT09PSEwJiZ3Lm1hcC5lbmNvZGluZz09PU1yLGNsZWFyY29hdDpWZSxjbGVhcmNvYXRNYXA6VmUmJiEhdy5jbGVhcmNvYXRNYXAsY2xlYXJjb2F0Um91Z2huZXNzTWFwOlZlJiYhIXcuY2xlYXJjb2F0Um91Z2huZXNzTWFwLGNsZWFyY29hdE5vcm1hbE1hcDpWZSYmISF3LmNsZWFyY29hdE5vcm1hbE1hcCxkaXNwbGFjZW1lbnRNYXA6ISF3LmRpc3BsYWNlbWVudE1hcCxyb3VnaG5lc3NNYXA6ISF3LnJvdWdobmVzc01hcCxtZXRhbG5lc3NNYXA6ISF3Lm1ldGFsbmVzc01hcCxzcGVjdWxhck1hcDohIXcuc3BlY3VsYXJNYXAsc3BlY3VsYXJJbnRlbnNpdHlNYXA6ISF3LnNwZWN1bGFySW50ZW5zaXR5TWFwLHNwZWN1bGFyQ29sb3JNYXA6ISF3LnNwZWN1bGFyQ29sb3JNYXAsYWxwaGFNYXA6ISF3LmFscGhhTWFwLGFscGhhVGVzdDpQbixhbHBoYVdyaXRlOncuYWxwaGFXcml0ZXx8dy50cmFuc3BhcmVudCxncmFkaWVudE1hcDohIXcuZ3JhZGllbnRNYXAsc2hlZW46dy5zaGVlbj4wLHNoZWVuQ29sb3JNYXA6ISF3LnNoZWVuQ29sb3JNYXAsc2hlZW5Sb3VnaG5lc3NNYXA6ISF3LnNoZWVuUm91Z2huZXNzTWFwLHRyYW5zbWlzc2lvbjp3LnRyYW5zbWlzc2lvbj4wLHRyYW5zbWlzc2lvbk1hcDohIXcudHJhbnNtaXNzaW9uTWFwLHRoaWNrbmVzc01hcDohIXcudGhpY2tuZXNzTWFwLGNvbWJpbmU6dy5jb21iaW5lLHZlcnRleFRhbmdlbnRzOiEhdy5ub3JtYWxNYXAmJiEhYnQuZ2VvbWV0cnkmJiEhYnQuZ2VvbWV0cnkuYXR0cmlidXRlcy50YW5nZW50LHZlcnRleENvbG9yczp3LnZlcnRleENvbG9ycyx2ZXJ0ZXhBbHBoYXM6dy52ZXJ0ZXhDb2xvcnM9PT0hMCYmISFidC5nZW9tZXRyeSYmISFidC5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yJiZidC5nZW9tZXRyeS5hdHRyaWJ1dGVzLmNvbG9yLml0ZW1TaXplPT09NCx2ZXJ0ZXhVdnM6ISF3Lm1hcHx8ISF3LmJ1bXBNYXB8fCEhdy5ub3JtYWxNYXB8fCEhdy5zcGVjdWxhck1hcHx8ISF3LmFscGhhTWFwfHwhIXcuZW1pc3NpdmVNYXB8fCEhdy5yb3VnaG5lc3NNYXB8fCEhdy5tZXRhbG5lc3NNYXB8fCEhdy5jbGVhcmNvYXRNYXB8fCEhdy5jbGVhcmNvYXRSb3VnaG5lc3NNYXB8fCEhdy5jbGVhcmNvYXROb3JtYWxNYXB8fCEhdy5kaXNwbGFjZW1lbnRNYXB8fCEhdy50cmFuc21pc3Npb25NYXB8fCEhdy50aGlja25lc3NNYXB8fCEhdy5zcGVjdWxhckludGVuc2l0eU1hcHx8ISF3LnNwZWN1bGFyQ29sb3JNYXB8fCEhdy5zaGVlbkNvbG9yTWFwfHwhIXcuc2hlZW5Sb3VnaG5lc3NNYXAsdXZzVmVydGV4T25seTohKCEhdy5tYXB8fCEhdy5idW1wTWFwfHwhIXcubm9ybWFsTWFwfHwhIXcuc3BlY3VsYXJNYXB8fCEhdy5hbHBoYU1hcHx8ISF3LmVtaXNzaXZlTWFwfHwhIXcucm91Z2huZXNzTWFwfHwhIXcubWV0YWxuZXNzTWFwfHwhIXcuY2xlYXJjb2F0Tm9ybWFsTWFwfHx3LnRyYW5zbWlzc2lvbj4wfHwhIXcudHJhbnNtaXNzaW9uTWFwfHwhIXcudGhpY2tuZXNzTWFwfHwhIXcuc3BlY3VsYXJJbnRlbnNpdHlNYXB8fCEhdy5zcGVjdWxhckNvbG9yTWFwfHx3LnNoZWVuPjB8fCEhdy5zaGVlbkNvbG9yTWFwfHwhIXcuc2hlZW5Sb3VnaG5lc3NNYXApJiYhIXcuZGlzcGxhY2VtZW50TWFwLGZvZzohIW90LHVzZUZvZzp3LmZvZyxmb2dFeHAyOm90JiZvdC5pc0ZvZ0V4cDIsZmxhdFNoYWRpbmc6ISF3LmZsYXRTaGFkaW5nLHNpemVBdHRlbnVhdGlvbjp3LnNpemVBdHRlbnVhdGlvbixsb2dhcml0aG1pY0RlcHRoQnVmZmVyOmYsc2tpbm5pbmc6YnQuaXNTa2lubmVkTWVzaD09PSEwJiZSdD4wLG1heEJvbmVzOlJ0LHVzZVZlcnRleFRleHR1cmU6cCxtb3JwaFRhcmdldHM6ISFidC5nZW9tZXRyeSYmISFidC5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbW9ycGhOb3JtYWxzOiEhYnQuZ2VvbWV0cnkmJiEhYnQuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbCxtb3JwaFRhcmdldHNDb3VudDohIWJ0Lmdlb21ldHJ5JiYhIWJ0Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbj9idC5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24ubGVuZ3RoOjAsbnVtRGlyTGlnaHRzOlUuZGlyZWN0aW9uYWwubGVuZ3RoLG51bVBvaW50TGlnaHRzOlUucG9pbnQubGVuZ3RoLG51bVNwb3RMaWdodHM6VS5zcG90Lmxlbmd0aCxudW1SZWN0QXJlYUxpZ2h0czpVLnJlY3RBcmVhLmxlbmd0aCxudW1IZW1pTGlnaHRzOlUuaGVtaS5sZW5ndGgsbnVtRGlyTGlnaHRTaGFkb3dzOlUuZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoLG51bVBvaW50TGlnaHRTaGFkb3dzOlUucG9pbnRTaGFkb3dNYXAubGVuZ3RoLG51bVNwb3RMaWdodFNoYWRvd3M6VS5zcG90U2hhZG93TWFwLmxlbmd0aCxudW1DbGlwcGluZ1BsYW5lczpyLm51bVBsYW5lcyxudW1DbGlwSW50ZXJzZWN0aW9uOnIubnVtSW50ZXJzZWN0aW9uLGRpdGhlcmluZzp3LmRpdGhlcmluZyxzaGFkb3dNYXBFbmFibGVkOm4uc2hhZG93TWFwLmVuYWJsZWQmJm50Lmxlbmd0aD4wLHNoYWRvd01hcFR5cGU6bi5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzp3LnRvbmVNYXBwZWQ/bi50b25lTWFwcGluZzpJeCxwaHlzaWNhbGx5Q29ycmVjdExpZ2h0czpuLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzLHByZW11bHRpcGxpZWRBbHBoYTp3LnByZW11bHRpcGxpZWRBbHBoYSxkb3VibGVTaWRlZDp3LnNpZGU9PT1wUyxmbGlwU2lkZWQ6dy5zaWRlPT09bGwsZGVwdGhQYWNraW5nOncuZGVwdGhQYWNraW5nIT09dm9pZCAwP3cuZGVwdGhQYWNraW5nOiExLGluZGV4MEF0dHJpYnV0ZU5hbWU6dy5pbmRleDBBdHRyaWJ1dGVOYW1lLGV4dGVuc2lvbkRlcml2YXRpdmVzOncuZXh0ZW5zaW9ucyYmdy5leHRlbnNpb25zLmRlcml2YXRpdmVzLGV4dGVuc2lvbkZyYWdEZXB0aDp3LmV4dGVuc2lvbnMmJncuZXh0ZW5zaW9ucy5mcmFnRGVwdGgsZXh0ZW5zaW9uRHJhd0J1ZmZlcnM6dy5leHRlbnNpb25zJiZ3LmV4dGVuc2lvbnMuZHJhd0J1ZmZlcnMsZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRDp3LmV4dGVuc2lvbnMmJncuZXh0ZW5zaW9ucy5zaGFkZXJUZXh0dXJlTE9ELHJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoOm18fG8uaGFzKCJFWFRfZnJhZ19kZXB0aCIpLHJlbmRlcmVyRXh0ZW5zaW9uRHJhd0J1ZmZlcnM6bXx8by5oYXMoIldFQkdMX2RyYXdfYnVmZmVycyIpLHJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZDptfHxvLmhhcygiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpLGN1c3RvbVByb2dyYW1DYWNoZUtleTp3LmN1c3RvbVByb2dyYW1DYWNoZUtleSgpfX1mdW5jdGlvbiBSKHcpe2xldCBVPVtdO2lmKHcuc2hhZGVySUQ/VS5wdXNoKHcuc2hhZGVySUQpOihVLnB1c2gody5jdXN0b21WZXJ0ZXhTaGFkZXJJRCksVS5wdXNoKHcuY3VzdG9tRnJhZ21lbnRTaGFkZXJJRCkpLHcuZGVmaW5lcyE9PXZvaWQgMClmb3IobGV0IG50IGluIHcuZGVmaW5lcylVLnB1c2gobnQpLFUucHVzaCh3LmRlZmluZXNbbnRdKTtyZXR1cm4gdy5pc1Jhd1NoYWRlck1hdGVyaWFsPT09ITEmJihFKFUsdyksaihVLHcpLFUucHVzaChuLm91dHB1dEVuY29kaW5nKSksVS5wdXNoKHcuY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KSxVLmpvaW4oKX1mdW5jdGlvbiBFKHcsVSl7dy5wdXNoKFUucHJlY2lzaW9uKSx3LnB1c2goVS5vdXRwdXRFbmNvZGluZyksdy5wdXNoKFUuZW52TWFwTW9kZSksdy5wdXNoKFUuY29tYmluZSksdy5wdXNoKFUudmVydGV4VXZzKSx3LnB1c2goVS5mb2dFeHAyKSx3LnB1c2goVS5zaXplQXR0ZW51YXRpb24pLHcucHVzaChVLm1heEJvbmVzKSx3LnB1c2goVS5tb3JwaFRhcmdldHNDb3VudCksdy5wdXNoKFUubnVtRGlyTGlnaHRzKSx3LnB1c2goVS5udW1Qb2ludExpZ2h0cyksdy5wdXNoKFUubnVtU3BvdExpZ2h0cyksdy5wdXNoKFUubnVtSGVtaUxpZ2h0cyksdy5wdXNoKFUubnVtUmVjdEFyZWFMaWdodHMpLHcucHVzaChVLm51bURpckxpZ2h0U2hhZG93cyksdy5wdXNoKFUubnVtUG9pbnRMaWdodFNoYWRvd3MpLHcucHVzaChVLm51bVNwb3RMaWdodFNoYWRvd3MpLHcucHVzaChVLnNoYWRvd01hcFR5cGUpLHcucHVzaChVLnRvbmVNYXBwaW5nKSx3LnB1c2goVS5udW1DbGlwcGluZ1BsYW5lcyksdy5wdXNoKFUubnVtQ2xpcEludGVyc2VjdGlvbiksdy5wdXNoKFUuYWxwaGFXcml0ZSl9ZnVuY3Rpb24gaih3LFUpe3MuZGlzYWJsZUFsbCgpLFUuaXNXZWJHTDImJnMuZW5hYmxlKDApLFUuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcyYmcy5lbmFibGUoMSksVS5pbnN0YW5jaW5nJiZzLmVuYWJsZSgyKSxVLmluc3RhbmNpbmdDb2xvciYmcy5lbmFibGUoMyksVS5tYXAmJnMuZW5hYmxlKDQpLFUubWF0Y2FwJiZzLmVuYWJsZSg1KSxVLmVudk1hcCYmcy5lbmFibGUoNiksVS5lbnZNYXBDdWJlVVYmJnMuZW5hYmxlKDcpLFUubGlnaHRNYXAmJnMuZW5hYmxlKDgpLFUuYW9NYXAmJnMuZW5hYmxlKDkpLFUuZW1pc3NpdmVNYXAmJnMuZW5hYmxlKDEwKSxVLmJ1bXBNYXAmJnMuZW5hYmxlKDExKSxVLm5vcm1hbE1hcCYmcy5lbmFibGUoMTIpLFUub2JqZWN0U3BhY2VOb3JtYWxNYXAmJnMuZW5hYmxlKDEzKSxVLnRhbmdlbnRTcGFjZU5vcm1hbE1hcCYmcy5lbmFibGUoMTQpLFUuY2xlYXJjb2F0JiZzLmVuYWJsZSgxNSksVS5jbGVhcmNvYXRNYXAmJnMuZW5hYmxlKDE2KSxVLmNsZWFyY29hdFJvdWdobmVzc01hcCYmcy5lbmFibGUoMTcpLFUuY2xlYXJjb2F0Tm9ybWFsTWFwJiZzLmVuYWJsZSgxOCksVS5kaXNwbGFjZW1lbnRNYXAmJnMuZW5hYmxlKDE5KSxVLnNwZWN1bGFyTWFwJiZzLmVuYWJsZSgyMCksVS5yb3VnaG5lc3NNYXAmJnMuZW5hYmxlKDIxKSxVLm1ldGFsbmVzc01hcCYmcy5lbmFibGUoMjIpLFUuZ3JhZGllbnRNYXAmJnMuZW5hYmxlKDIzKSxVLmFscGhhTWFwJiZzLmVuYWJsZSgyNCksVS5hbHBoYVRlc3QmJnMuZW5hYmxlKDI1KSxVLnZlcnRleENvbG9ycyYmcy5lbmFibGUoMjYpLFUudmVydGV4QWxwaGFzJiZzLmVuYWJsZSgyNyksVS52ZXJ0ZXhVdnMmJnMuZW5hYmxlKDI4KSxVLnZlcnRleFRhbmdlbnRzJiZzLmVuYWJsZSgyOSksVS51dnNWZXJ0ZXhPbmx5JiZzLmVuYWJsZSgzMCksVS5mb2cmJnMuZW5hYmxlKDMxKSx3LnB1c2gocy5tYXNrKSxzLmRpc2FibGVBbGwoKSxVLnVzZUZvZyYmcy5lbmFibGUoMCksVS5mbGF0U2hhZGluZyYmcy5lbmFibGUoMSksVS5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZzLmVuYWJsZSgyKSxVLnNraW5uaW5nJiZzLmVuYWJsZSgzKSxVLnVzZVZlcnRleFRleHR1cmUmJnMuZW5hYmxlKDQpLFUubW9ycGhUYXJnZXRzJiZzLmVuYWJsZSg1KSxVLm1vcnBoTm9ybWFscyYmcy5lbmFibGUoNiksVS5wcmVtdWx0aXBsaWVkQWxwaGEmJnMuZW5hYmxlKDcpLFUuc2hhZG93TWFwRW5hYmxlZCYmcy5lbmFibGUoOCksVS5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyYmcy5lbmFibGUoOSksVS5kb3VibGVTaWRlZCYmcy5lbmFibGUoMTApLFUuZmxpcFNpZGVkJiZzLmVuYWJsZSgxMSksVS5kZXB0aFBhY2tpbmcmJnMuZW5hYmxlKDEyKSxVLmRpdGhlcmluZyYmcy5lbmFibGUoMTMpLFUuc3BlY3VsYXJJbnRlbnNpdHlNYXAmJnMuZW5hYmxlKDE0KSxVLnNwZWN1bGFyQ29sb3JNYXAmJnMuZW5hYmxlKDE1KSxVLnRyYW5zbWlzc2lvbiYmcy5lbmFibGUoMTYpLFUudHJhbnNtaXNzaW9uTWFwJiZzLmVuYWJsZSgxNyksVS50aGlja25lc3NNYXAmJnMuZW5hYmxlKDE4KSxVLnNoZWVuJiZzLmVuYWJsZSgxOSksVS5zaGVlbkNvbG9yTWFwJiZzLmVuYWJsZSgyMCksVS5zaGVlblJvdWdobmVzc01hcCYmcy5lbmFibGUoMjEpLFUuZGVjb2RlVmlkZW9UZXh0dXJlJiZzLmVuYWJsZSgyMiksdy5wdXNoKHMubWFzayl9ZnVuY3Rpb24gcnQodyl7bGV0IFU9eVt3LnR5cGVdLG50O2lmKFUpe2xldCBsdD1rT1tVXTtudD1JQnQuY2xvbmUobHQudW5pZm9ybXMpfWVsc2UgbnQ9dy51bmlmb3JtcztyZXR1cm4gbnR9ZnVuY3Rpb24gSih3LFUpe2xldCBudDtmb3IobGV0IGx0PTAsYnQ9Yy5sZW5ndGg7bHQ8YnQ7bHQrKyl7bGV0IG90PWNbbHRdO2lmKG90LmNhY2hlS2V5PT09VSl7bnQ9b3QsKytudC51c2VkVGltZXM7YnJlYWt9fXJldHVybiBudD09PXZvaWQgMCYmKG50PW5ldyBJWXQobixVLHcsYSksYy5wdXNoKG50KSksbnR9ZnVuY3Rpb24gRXQodyl7aWYoLS13LnVzZWRUaW1lcz09PTApe2xldCBVPWMuaW5kZXhPZih3KTtjW1VdPWNbYy5sZW5ndGgtMV0sYy5wb3AoKSx3LmRlc3Ryb3koKX19ZnVuY3Rpb24ganQodyl7bC5yZW1vdmUodyl9ZnVuY3Rpb24ga3QoKXtsLmRpc3Bvc2UoKX1yZXR1cm57Z2V0UGFyYW1ldGVyczpiLGdldFByb2dyYW1DYWNoZUtleTpSLGdldFVuaWZvcm1zOnJ0LGFjcXVpcmVQcm9ncmFtOkoscmVsZWFzZVByb2dyYW06RXQscmVsZWFzZVNoYWRlckNhY2hlOmp0LHByb2dyYW1zOmMsZGlzcG9zZTprdH19ZnVuY3Rpb24gRll0KCl7bGV0IG49bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdChhKXtsZXQgcj1uLmdldChhKTtyZXR1cm4gcj09PXZvaWQgMCYmKHI9e30sbi5zZXQoYSxyKSkscn1mdW5jdGlvbiBlKGEpe24uZGVsZXRlKGEpfWZ1bmN0aW9uIG8oYSxyLHMpe24uZ2V0KGEpW3JdPXN9ZnVuY3Rpb24gaSgpe249bmV3IFdlYWtNYXB9cmV0dXJue2dldDp0LHJlbW92ZTplLHVwZGF0ZTpvLGRpc3Bvc2U6aX19ZnVuY3Rpb24gTFl0KG4sdCl7cmV0dXJuIG4uZ3JvdXBPcmRlciE9PXQuZ3JvdXBPcmRlcj9uLmdyb3VwT3JkZXItdC5ncm91cE9yZGVyOm4ucmVuZGVyT3JkZXIhPT10LnJlbmRlck9yZGVyP24ucmVuZGVyT3JkZXItdC5yZW5kZXJPcmRlcjpuLm1hdGVyaWFsLmlkIT09dC5tYXRlcmlhbC5pZD9uLm1hdGVyaWFsLmlkLXQubWF0ZXJpYWwuaWQ6bi56IT09dC56P24uei10Lno6bi5pZC10LmlkfWZ1bmN0aW9uIEpkdChuLHQpe3JldHVybiBuLmdyb3VwT3JkZXIhPT10Lmdyb3VwT3JkZXI/bi5ncm91cE9yZGVyLXQuZ3JvdXBPcmRlcjpuLnJlbmRlck9yZGVyIT09dC5yZW5kZXJPcmRlcj9uLnJlbmRlck9yZGVyLXQucmVuZGVyT3JkZXI6bi56IT09dC56P3Quei1uLno6bi5pZC10LmlkfWZ1bmN0aW9uICRkdCgpe2xldCBuPVtdLHQ9MCxlPVtdLG89W10saT1bXTtmdW5jdGlvbiBhKCl7dD0wLGUubGVuZ3RoPTAsby5sZW5ndGg9MCxpLmxlbmd0aD0wfWZ1bmN0aW9uIHIoZixwLGcsXyxNLHkpe2xldCBPPW5bdF07cmV0dXJuIE89PT12b2lkIDA/KE89e2lkOmYuaWQsb2JqZWN0OmYsZ2VvbWV0cnk6cCxtYXRlcmlhbDpnLGdyb3VwT3JkZXI6XyxyZW5kZXJPcmRlcjpmLnJlbmRlck9yZGVyLHo6TSxncm91cDp5fSxuW3RdPU8pOihPLmlkPWYuaWQsTy5vYmplY3Q9ZixPLmdlb21ldHJ5PXAsTy5tYXRlcmlhbD1nLE8uZ3JvdXBPcmRlcj1fLE8ucmVuZGVyT3JkZXI9Zi5yZW5kZXJPcmRlcixPLno9TSxPLmdyb3VwPXkpLHQrKyxPfWZ1bmN0aW9uIHMoZixwLGcsXyxNLHkpe2xldCBPPXIoZixwLGcsXyxNLHkpO2cudHJhbnNtaXNzaW9uPjA/by5wdXNoKE8pOmcudHJhbnNwYXJlbnQ9PT0hMD9pLnB1c2goTyk6ZS5wdXNoKE8pfWZ1bmN0aW9uIGwoZixwLGcsXyxNLHkpe2xldCBPPXIoZixwLGcsXyxNLHkpO2cudHJhbnNtaXNzaW9uPjA/by51bnNoaWZ0KE8pOmcudHJhbnNwYXJlbnQ9PT0hMD9pLnVuc2hpZnQoTyk6ZS51bnNoaWZ0KE8pfWZ1bmN0aW9uIGMoZixwKXtlLmxlbmd0aD4xJiZlLnNvcnQoZnx8TFl0KSxvLmxlbmd0aD4xJiZvLnNvcnQocHx8SmR0KSxpLmxlbmd0aD4xJiZpLnNvcnQocHx8SmR0KX1mdW5jdGlvbiBtKCl7Zm9yKGxldCBmPXQscD1uLmxlbmd0aDtmPHA7ZisrKXtsZXQgZz1uW2ZdO2lmKGcuaWQ9PT1udWxsKWJyZWFrO2cuaWQ9bnVsbCxnLm9iamVjdD1udWxsLGcuZ2VvbWV0cnk9bnVsbCxnLm1hdGVyaWFsPW51bGwsZy5ncm91cD1udWxsfX1yZXR1cm57b3BhcXVlOmUsdHJhbnNtaXNzaXZlOm8sdHJhbnNwYXJlbnQ6aSxpbml0OmEscHVzaDpzLHVuc2hpZnQ6bCxmaW5pc2g6bSxzb3J0OmN9fWZ1bmN0aW9uIEJZdCgpe2xldCBuPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHQobyxpKXtsZXQgYTtyZXR1cm4gbi5oYXMobyk9PT0hMT8oYT1uZXcgJGR0LG4uc2V0KG8sW2FdKSk6aT49bi5nZXQobykubGVuZ3RoPyhhPW5ldyAkZHQsbi5nZXQobykucHVzaChhKSk6YT1uLmdldChvKVtpXSxhfWZ1bmN0aW9uIGUoKXtuPW5ldyBXZWFrTWFwfXJldHVybntnZXQ6dCxkaXNwb3NlOmV9fWZ1bmN0aW9uIFZZdCgpe2xldCBuPXt9O3JldHVybntnZXQ6ZnVuY3Rpb24odCl7aWYoblt0LmlkXSE9PXZvaWQgMClyZXR1cm4gblt0LmlkXTtsZXQgZTtzd2l0Y2godC50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOmU9e2RpcmVjdGlvbjpuZXcgcHQsY29sb3I6bmV3IHpufTticmVhaztjYXNlIlNwb3RMaWdodCI6ZT17cG9zaXRpb246bmV3IHB0LGRpcmVjdGlvbjpuZXcgcHQsY29sb3I6bmV3IHpuLGRpc3RhbmNlOjAsY29uZUNvczowLHBlbnVtYnJhQ29zOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjplPXtwb3NpdGlvbjpuZXcgcHQsY29sb3I6bmV3IHpuLGRpc3RhbmNlOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJIZW1pc3BoZXJlTGlnaHQiOmU9e2RpcmVjdGlvbjpuZXcgcHQsc2t5Q29sb3I6bmV3IHpuLGdyb3VuZENvbG9yOm5ldyB6bn07YnJlYWs7Y2FzZSJSZWN0QXJlYUxpZ2h0IjplPXtjb2xvcjpuZXcgem4scG9zaXRpb246bmV3IHB0LGhhbGZXaWR0aDpuZXcgcHQsaGFsZkhlaWdodDpuZXcgcHR9O2JyZWFrfXJldHVybiBuW3QuaWRdPWUsZX19fWZ1bmN0aW9uIGpZdCgpe2xldCBuPXt9O3JldHVybntnZXQ6ZnVuY3Rpb24odCl7aWYoblt0LmlkXSE9PXZvaWQgMClyZXR1cm4gblt0LmlkXTtsZXQgZTtzd2l0Y2godC50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOmU9e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgU2V9O2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjplPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IFNlfTticmVhaztjYXNlIlBvaW50TGlnaHQiOmU9e3NoYWRvd0JpYXM6MCxzaGFkb3dOb3JtYWxCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgU2Usc2hhZG93Q2FtZXJhTmVhcjoxLHNoYWRvd0NhbWVyYUZhcjoxZTN9O2JyZWFrfXJldHVybiBuW3QuaWRdPWUsZX19fXZhciBVWXQ9MDtmdW5jdGlvbiBZWXQobix0KXtyZXR1cm4odC5jYXN0U2hhZG93PzE6MCktKG4uY2FzdFNoYWRvdz8xOjApfWZ1bmN0aW9uIEdZdChuLHQpe2xldCBlPW5ldyBWWXQsbz1qWXQoKSxpPXt2ZXJzaW9uOjAsaGFzaDp7ZGlyZWN0aW9uYWxMZW5ndGg6LTEscG9pbnRMZW5ndGg6LTEsc3BvdExlbmd0aDotMSxyZWN0QXJlYUxlbmd0aDotMSxoZW1pTGVuZ3RoOi0xLG51bURpcmVjdGlvbmFsU2hhZG93czotMSxudW1Qb2ludFNoYWRvd3M6LTEsbnVtU3BvdFNoYWRvd3M6LTF9LGFtYmllbnQ6WzAsMCwwXSxwcm9iZTpbXSxkaXJlY3Rpb25hbDpbXSxkaXJlY3Rpb25hbFNoYWRvdzpbXSxkaXJlY3Rpb25hbFNoYWRvd01hcDpbXSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDpbXSxzcG90OltdLHNwb3RTaGFkb3c6W10sc3BvdFNoYWRvd01hcDpbXSxzcG90U2hhZG93TWF0cml4OltdLHJlY3RBcmVhOltdLHJlY3RBcmVhTFRDMTpudWxsLHJlY3RBcmVhTFRDMjpudWxsLHBvaW50OltdLHBvaW50U2hhZG93OltdLHBvaW50U2hhZG93TWFwOltdLHBvaW50U2hhZG93TWF0cml4OltdLGhlbWk6W119O2ZvcihsZXQgbT0wO208OTttKyspaS5wcm9iZS5wdXNoKG5ldyBwdCk7bGV0IGE9bmV3IHB0LHI9bmV3IGVvLHM9bmV3IGVvO2Z1bmN0aW9uIGwobSxmKXtsZXQgcD0wLGc9MCxfPTA7Zm9yKGxldCBqdD0wO2p0PDk7anQrKylpLnByb2JlW2p0XS5zZXQoMCwwLDApO2xldCBNPTAseT0wLE89MCxiPTAsUj0wLEU9MCxqPTAscnQ9MDttLnNvcnQoWVl0KTtsZXQgSj1mIT09ITA/TWF0aC5QSToxO2ZvcihsZXQganQ9MCxrdD1tLmxlbmd0aDtqdDxrdDtqdCsrKXtsZXQgdz1tW2p0XSxVPXcuY29sb3IsbnQ9dy5pbnRlbnNpdHksbHQ9dy5kaXN0YW5jZSxidD13LnNoYWRvdyYmdy5zaGFkb3cubWFwP3cuc2hhZG93Lm1hcC50ZXh0dXJlOm51bGw7aWYody5pc0FtYmllbnRMaWdodClwKz1VLnIqbnQqSixnKz1VLmcqbnQqSixfKz1VLmIqbnQqSjtlbHNlIGlmKHcuaXNMaWdodFByb2JlKWZvcihsZXQgb3Q9MDtvdDw5O290KyspaS5wcm9iZVtvdF0uYWRkU2NhbGVkVmVjdG9yKHcuc2guY29lZmZpY2llbnRzW290XSxudCk7ZWxzZSBpZih3LmlzRGlyZWN0aW9uYWxMaWdodCl7bGV0IG90PWUuZ2V0KHcpO2lmKG90LmNvbG9yLmNvcHkody5jb2xvcikubXVsdGlwbHlTY2FsYXIody5pbnRlbnNpdHkqSiksdy5jYXN0U2hhZG93KXtsZXQgdXQ9dy5zaGFkb3csZ3Q9by5nZXQodyk7Z3Quc2hhZG93Qmlhcz11dC5iaWFzLGd0LnNoYWRvd05vcm1hbEJpYXM9dXQubm9ybWFsQmlhcyxndC5zaGFkb3dSYWRpdXM9dXQucmFkaXVzLGd0LnNoYWRvd01hcFNpemU9dXQubWFwU2l6ZSxpLmRpcmVjdGlvbmFsU2hhZG93W01dPWd0LGkuZGlyZWN0aW9uYWxTaGFkb3dNYXBbTV09YnQsaS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeFtNXT13LnNoYWRvdy5tYXRyaXgsRSsrfWkuZGlyZWN0aW9uYWxbTV09b3QsTSsrfWVsc2UgaWYody5pc1Nwb3RMaWdodCl7bGV0IG90PWUuZ2V0KHcpO2lmKG90LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbih3Lm1hdHJpeFdvcmxkKSxvdC5jb2xvci5jb3B5KFUpLm11bHRpcGx5U2NhbGFyKG50KkopLG90LmRpc3RhbmNlPWx0LG90LmNvbmVDb3M9TWF0aC5jb3Mody5hbmdsZSksb3QucGVudW1icmFDb3M9TWF0aC5jb3Mody5hbmdsZSooMS13LnBlbnVtYnJhKSksb3QuZGVjYXk9dy5kZWNheSx3LmNhc3RTaGFkb3cpe2xldCB1dD13LnNoYWRvdyxndD1vLmdldCh3KTtndC5zaGFkb3dCaWFzPXV0LmJpYXMsZ3Quc2hhZG93Tm9ybWFsQmlhcz11dC5ub3JtYWxCaWFzLGd0LnNoYWRvd1JhZGl1cz11dC5yYWRpdXMsZ3Quc2hhZG93TWFwU2l6ZT11dC5tYXBTaXplLGkuc3BvdFNoYWRvd1tPXT1ndCxpLnNwb3RTaGFkb3dNYXBbT109YnQsaS5zcG90U2hhZG93TWF0cml4W09dPXcuc2hhZG93Lm1hdHJpeCxydCsrfWkuc3BvdFtPXT1vdCxPKyt9ZWxzZSBpZih3LmlzUmVjdEFyZWFMaWdodCl7bGV0IG90PWUuZ2V0KHcpO290LmNvbG9yLmNvcHkoVSkubXVsdGlwbHlTY2FsYXIobnQpLG90LmhhbGZXaWR0aC5zZXQody53aWR0aCouNSwwLDApLG90LmhhbGZIZWlnaHQuc2V0KDAsdy5oZWlnaHQqLjUsMCksaS5yZWN0QXJlYVtiXT1vdCxiKyt9ZWxzZSBpZih3LmlzUG9pbnRMaWdodCl7bGV0IG90PWUuZ2V0KHcpO2lmKG90LmNvbG9yLmNvcHkody5jb2xvcikubXVsdGlwbHlTY2FsYXIody5pbnRlbnNpdHkqSiksb3QuZGlzdGFuY2U9dy5kaXN0YW5jZSxvdC5kZWNheT13LmRlY2F5LHcuY2FzdFNoYWRvdyl7bGV0IHV0PXcuc2hhZG93LGd0PW8uZ2V0KHcpO2d0LnNoYWRvd0JpYXM9dXQuYmlhcyxndC5zaGFkb3dOb3JtYWxCaWFzPXV0Lm5vcm1hbEJpYXMsZ3Quc2hhZG93UmFkaXVzPXV0LnJhZGl1cyxndC5zaGFkb3dNYXBTaXplPXV0Lm1hcFNpemUsZ3Quc2hhZG93Q2FtZXJhTmVhcj11dC5jYW1lcmEubmVhcixndC5zaGFkb3dDYW1lcmFGYXI9dXQuY2FtZXJhLmZhcixpLnBvaW50U2hhZG93W3ldPWd0LGkucG9pbnRTaGFkb3dNYXBbeV09YnQsaS5wb2ludFNoYWRvd01hdHJpeFt5XT13LnNoYWRvdy5tYXRyaXgsaisrfWkucG9pbnRbeV09b3QseSsrfWVsc2UgaWYody5pc0hlbWlzcGhlcmVMaWdodCl7bGV0IG90PWUuZ2V0KHcpO290LnNreUNvbG9yLmNvcHkody5jb2xvcikubXVsdGlwbHlTY2FsYXIobnQqSiksb3QuZ3JvdW5kQ29sb3IuY29weSh3Lmdyb3VuZENvbG9yKS5tdWx0aXBseVNjYWxhcihudCpKKSxpLmhlbWlbUl09b3QsUisrfX1iPjAmJih0LmlzV2ViR0wyfHxuLmhhcygiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik9PT0hMD8oaS5yZWN0QXJlYUxUQzE9cm4uTFRDX0ZMT0FUXzEsaS5yZWN0QXJlYUxUQzI9cm4uTFRDX0ZMT0FUXzIpOm4uaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpPT09ITA/KGkucmVjdEFyZWFMVEMxPXJuLkxUQ19IQUxGXzEsaS5yZWN0QXJlYUxUQzI9cm4uTFRDX0hBTEZfMik6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVW5hYmxlIHRvIHVzZSBSZWN0QXJlYUxpZ2h0LiBNaXNzaW5nIFdlYkdMIGV4dGVuc2lvbnMuIikpLGkuYW1iaWVudFswXT1wLGkuYW1iaWVudFsxXT1nLGkuYW1iaWVudFsyXT1fO2xldCBFdD1pLmhhc2g7KEV0LmRpcmVjdGlvbmFsTGVuZ3RoIT09TXx8RXQucG9pbnRMZW5ndGghPT15fHxFdC5zcG90TGVuZ3RoIT09T3x8RXQucmVjdEFyZWFMZW5ndGghPT1ifHxFdC5oZW1pTGVuZ3RoIT09Unx8RXQubnVtRGlyZWN0aW9uYWxTaGFkb3dzIT09RXx8RXQubnVtUG9pbnRTaGFkb3dzIT09anx8RXQubnVtU3BvdFNoYWRvd3MhPT1ydCkmJihpLmRpcmVjdGlvbmFsLmxlbmd0aD1NLGkuc3BvdC5sZW5ndGg9TyxpLnJlY3RBcmVhLmxlbmd0aD1iLGkucG9pbnQubGVuZ3RoPXksaS5oZW1pLmxlbmd0aD1SLGkuZGlyZWN0aW9uYWxTaGFkb3cubGVuZ3RoPUUsaS5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGg9RSxpLnBvaW50U2hhZG93Lmxlbmd0aD1qLGkucG9pbnRTaGFkb3dNYXAubGVuZ3RoPWosaS5zcG90U2hhZG93Lmxlbmd0aD1ydCxpLnNwb3RTaGFkb3dNYXAubGVuZ3RoPXJ0LGkuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgubGVuZ3RoPUUsaS5wb2ludFNoYWRvd01hdHJpeC5sZW5ndGg9aixpLnNwb3RTaGFkb3dNYXRyaXgubGVuZ3RoPXJ0LEV0LmRpcmVjdGlvbmFsTGVuZ3RoPU0sRXQucG9pbnRMZW5ndGg9eSxFdC5zcG90TGVuZ3RoPU8sRXQucmVjdEFyZWFMZW5ndGg9YixFdC5oZW1pTGVuZ3RoPVIsRXQubnVtRGlyZWN0aW9uYWxTaGFkb3dzPUUsRXQubnVtUG9pbnRTaGFkb3dzPWosRXQubnVtU3BvdFNoYWRvd3M9cnQsaS52ZXJzaW9uPVVZdCsrKX1mdW5jdGlvbiBjKG0sZil7bGV0IHA9MCxnPTAsXz0wLE09MCx5PTAsTz1mLm1hdHJpeFdvcmxkSW52ZXJzZTtmb3IobGV0IGI9MCxSPW0ubGVuZ3RoO2I8UjtiKyspe2xldCBFPW1bYl07aWYoRS5pc0RpcmVjdGlvbmFsTGlnaHQpe2xldCBqPWkuZGlyZWN0aW9uYWxbcF07ai5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKEUubWF0cml4V29ybGQpLGEuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKEUudGFyZ2V0Lm1hdHJpeFdvcmxkKSxqLmRpcmVjdGlvbi5zdWIoYSksai5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKE8pLHArK31lbHNlIGlmKEUuaXNTcG90TGlnaHQpe2xldCBqPWkuc3BvdFtfXTtqLnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihFLm1hdHJpeFdvcmxkKSxqLnBvc2l0aW9uLmFwcGx5TWF0cml4NChPKSxqLmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oRS5tYXRyaXhXb3JsZCksYS5zZXRGcm9tTWF0cml4UG9zaXRpb24oRS50YXJnZXQubWF0cml4V29ybGQpLGouZGlyZWN0aW9uLnN1YihhKSxqLmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oTyksXysrfWVsc2UgaWYoRS5pc1JlY3RBcmVhTGlnaHQpe2xldCBqPWkucmVjdEFyZWFbTV07ai5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oRS5tYXRyaXhXb3JsZCksai5wb3NpdGlvbi5hcHBseU1hdHJpeDQoTykscy5pZGVudGl0eSgpLHIuY29weShFLm1hdHJpeFdvcmxkKSxyLnByZW11bHRpcGx5KE8pLHMuZXh0cmFjdFJvdGF0aW9uKHIpLGouaGFsZldpZHRoLnNldChFLndpZHRoKi41LDAsMCksai5oYWxmSGVpZ2h0LnNldCgwLEUuaGVpZ2h0Ki41LDApLGouaGFsZldpZHRoLmFwcGx5TWF0cml4NChzKSxqLmhhbGZIZWlnaHQuYXBwbHlNYXRyaXg0KHMpLE0rK31lbHNlIGlmKEUuaXNQb2ludExpZ2h0KXtsZXQgaj1pLnBvaW50W2ddO2oucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKEUubWF0cml4V29ybGQpLGoucG9zaXRpb24uYXBwbHlNYXRyaXg0KE8pLGcrK31lbHNlIGlmKEUuaXNIZW1pc3BoZXJlTGlnaHQpe2xldCBqPWkuaGVtaVt5XTtqLmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oRS5tYXRyaXhXb3JsZCksai5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKE8pLGouZGlyZWN0aW9uLm5vcm1hbGl6ZSgpLHkrK319fXJldHVybntzZXR1cDpsLHNldHVwVmlldzpjLHN0YXRlOml9fWZ1bmN0aW9uIHRndChuLHQpe2xldCBlPW5ldyBHWXQobix0KSxvPVtdLGk9W107ZnVuY3Rpb24gYSgpe28ubGVuZ3RoPTAsaS5sZW5ndGg9MH1mdW5jdGlvbiByKGYpe28ucHVzaChmKX1mdW5jdGlvbiBzKGYpe2kucHVzaChmKX1mdW5jdGlvbiBsKGYpe2Uuc2V0dXAobyxmKX1mdW5jdGlvbiBjKGYpe2Uuc2V0dXBWaWV3KG8sZil9cmV0dXJue2luaXQ6YSxzdGF0ZTp7bGlnaHRzQXJyYXk6byxzaGFkb3dzQXJyYXk6aSxsaWdodHM6ZX0sc2V0dXBMaWdodHM6bCxzZXR1cExpZ2h0c1ZpZXc6YyxwdXNoTGlnaHQ6cixwdXNoU2hhZG93OnN9fWZ1bmN0aW9uIFdZdChuLHQpe2xldCBlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG8oYSxyPTApe2xldCBzO3JldHVybiBlLmhhcyhhKT09PSExPyhzPW5ldyB0Z3Qobix0KSxlLnNldChhLFtzXSkpOnI+PWUuZ2V0KGEpLmxlbmd0aD8ocz1uZXcgdGd0KG4sdCksZS5nZXQoYSkucHVzaChzKSk6cz1lLmdldChhKVtyXSxzfWZ1bmN0aW9uIGkoKXtlPW5ldyBXZWFrTWFwfXJldHVybntnZXQ6byxkaXNwb3NlOml9fXZhciB0Rj1jbGFzcyBleHRlbmRzIElse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGVwdGhNYXRlcmlhbCIsdGhpcy5kZXB0aFBhY2tpbmc9Q0J0LHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlcHRoUGFja2luZz10LmRlcHRoUGFja2luZyx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpc319O3RGLnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwO3ZhciBlRj1jbGFzcyBleHRlbmRzIElse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoRGlzdGFuY2VNYXRlcmlhbCIsdGhpcy5yZWZlcmVuY2VQb3NpdGlvbj1uZXcgcHQsdGhpcy5uZWFyRGlzdGFuY2U9MSx0aGlzLmZhckRpc3RhbmNlPTFlMyx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMucmVmZXJlbmNlUG9zaXRpb24uY29weSh0LnJlZmVyZW5jZVBvc2l0aW9uKSx0aGlzLm5lYXJEaXN0YW5jZT10Lm5lYXJEaXN0YW5jZSx0aGlzLmZhckRpc3RhbmNlPXQuZmFyRGlzdGFuY2UsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXN9fTtlRi5wcm90b3R5cGUuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD0hMDt2YXIgcVl0PWB2b2lkIG1haW4oKSB7CglnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLCAxLjAgKTsKfWAsWll0PWB1bmlmb3JtIHNhbXBsZXIyRCBzaGFkb3dfcGFzczsKdW5pZm9ybSB2ZWMyIHJlc29sdXRpb247CnVuaWZvcm0gZmxvYXQgcmFkaXVzOwojaW5jbHVkZSA8cGFja2luZz4Kdm9pZCBtYWluKCkgewoJY29uc3QgZmxvYXQgc2FtcGxlcyA9IGZsb2F0KCBWU01fU0FNUExFUyApOwoJZmxvYXQgbWVhbiA9IDAuMDsKCWZsb2F0IHNxdWFyZWRfbWVhbiA9IDAuMDsKCWZsb2F0IHV2U3RyaWRlID0gc2FtcGxlcyA8PSAxLjAgPyAwLjAgOiAyLjAgLyAoIHNhbXBsZXMgLSAxLjAgKTsKCWZsb2F0IHV2U3RhcnQgPSBzYW1wbGVzIDw9IDEuMCA/IDAuMCA6IC0gMS4wOwoJZm9yICggZmxvYXQgaSA9IDAuMDsgaSA8IHNhbXBsZXM7IGkgKysgKSB7CgkJZmxvYXQgdXZPZmZzZXQgPSB1dlN0YXJ0ICsgaSAqIHV2U3RyaWRlOwoJCSNpZmRlZiBIT1JJWk9OVEFMX1BBU1MKCQkJdmVjMiBkaXN0cmlidXRpb24gPSB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCB1dk9mZnNldCwgMC4wICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApOwoJCQltZWFuICs9IGRpc3RyaWJ1dGlvbi54OwoJCQlzcXVhcmVkX21lYW4gKz0gZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSArIGRpc3RyaWJ1dGlvbi54ICogZGlzdHJpYnV0aW9uLng7CgkJI2Vsc2UKCQkJZmxvYXQgZGVwdGggPSB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCAwLjAsIHV2T2Zmc2V0ICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApOwoJCQltZWFuICs9IGRlcHRoOwoJCQlzcXVhcmVkX21lYW4gKz0gZGVwdGggKiBkZXB0aDsKCQkjZW5kaWYKCX0KCW1lYW4gPSBtZWFuIC8gc2FtcGxlczsKCXNxdWFyZWRfbWVhbiA9IHNxdWFyZWRfbWVhbiAvIHNhbXBsZXM7CglmbG9hdCBzdGRfZGV2ID0gc3FydCggc3F1YXJlZF9tZWFuIC0gbWVhbiAqIG1lYW4gKTsKCWdsX0ZyYWdDb2xvciA9IHBhY2sySGFsZlRvUkdCQSggdmVjMiggbWVhbiwgc3RkX2RldiApICk7Cn1gO2Z1bmN0aW9uIFlndChuLHQsZSl7bGV0IG89bmV3IGhTLGk9bmV3IFNlLGE9bmV3IFNlLHI9bmV3IGNhLHM9bmV3IHRGKHtkZXB0aFBhY2tpbmc6TUJ0fSksbD1uZXcgZUYsYz17fSxtPWUubWF4VGV4dHVyZVNpemUsZj17MDpsbCwxOm40LDI6cFN9LHA9bmV3IFhQKHtkZWZpbmVzOntWU01fU0FNUExFUzo4fSx1bmlmb3Jtczp7c2hhZG93X3Bhc3M6e3ZhbHVlOm51bGx9LHJlc29sdXRpb246e3ZhbHVlOm5ldyBTZX0scmFkaXVzOnt2YWx1ZTo0fX0sdmVydGV4U2hhZGVyOnFZdCxmcmFnbWVudFNoYWRlcjpaWXR9KSxnPXAuY2xvbmUoKTtnLmRlZmluZXMuSE9SSVpPTlRBTF9QQVNTPTE7bGV0IF89bmV3IHRhO18uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IE9yKG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC41LDMsLTEsLjUsLTEsMywuNV0pLDMpKTtsZXQgTT1uZXcgWXMoXyxwKSx5PXRoaXM7dGhpcy5lbmFibGVkPSExLHRoaXMuYXV0b1VwZGF0ZT0hMCx0aGlzLm5lZWRzVXBkYXRlPSExLHRoaXMudHlwZT13Z3QsdGhpcy5yZW5kZXI9ZnVuY3Rpb24oRSxqLHJ0KXtpZih5LmVuYWJsZWQ9PT0hMXx8eS5hdXRvVXBkYXRlPT09ITEmJnkubmVlZHNVcGRhdGU9PT0hMXx8RS5sZW5ndGg9PT0wKXJldHVybjtsZXQgSj1uLmdldFJlbmRlclRhcmdldCgpLEV0PW4uZ2V0QWN0aXZlQ3ViZUZhY2UoKSxqdD1uLmdldEFjdGl2ZU1pcG1hcExldmVsKCksa3Q9bi5zdGF0ZTtrdC5zZXRCbGVuZGluZyhEeCksa3QuYnVmZmVycy5jb2xvci5zZXRDbGVhcigxLDEsMSwxKSxrdC5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLGt0LnNldFNjaXNzb3JUZXN0KCExKTtmb3IobGV0IHc9MCxVPUUubGVuZ3RoO3c8VTt3Kyspe2xldCBudD1FW3ddLGx0PW50LnNoYWRvdztpZihsdD09PXZvaWQgMCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDoiLG50LCJoYXMgbm8gc2hhZG93LiIpO2NvbnRpbnVlfWlmKGx0LmF1dG9VcGRhdGU9PT0hMSYmbHQubmVlZHNVcGRhdGU9PT0hMSljb250aW51ZTtpLmNvcHkobHQubWFwU2l6ZSk7bGV0IGJ0PWx0LmdldEZyYW1lRXh0ZW50cygpO2lmKGkubXVsdGlwbHkoYnQpLGEuY29weShsdC5tYXBTaXplKSwoaS54Pm18fGkueT5tKSYmKGkueD5tJiYoYS54PU1hdGguZmxvb3IobS9idC54KSxpLng9YS54KmJ0LngsbHQubWFwU2l6ZS54PWEueCksaS55Pm0mJihhLnk9TWF0aC5mbG9vcihtL2J0LnkpLGkueT1hLnkqYnQueSxsdC5tYXBTaXplLnk9YS55KSksbHQubWFwPT09bnVsbCYmIWx0LmlzUG9pbnRMaWdodFNoYWRvdyYmdGhpcy50eXBlPT09UTUpe2xldCB1dD17bWluRmlsdGVyOndtLG1hZ0ZpbHRlcjp3bSxmb3JtYXQ6UmZ9O2x0Lm1hcD1uZXcgTmQoaS54LGkueSx1dCksbHQubWFwLnRleHR1cmUubmFtZT1udC5uYW1lKyIuc2hhZG93TWFwIixsdC5tYXBQYXNzPW5ldyBOZChpLngsaS55LHV0KSxsdC5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWlmKGx0Lm1hcD09PW51bGwpe2xldCB1dD17bWluRmlsdGVyOmNsLG1hZ0ZpbHRlcjpjbCxmb3JtYXQ6UmZ9O2x0Lm1hcD1uZXcgTmQoaS54LGkueSx1dCksbHQubWFwLnRleHR1cmUubmFtZT1udC5uYW1lKyIuc2hhZG93TWFwIixsdC5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfW4uc2V0UmVuZGVyVGFyZ2V0KGx0Lm1hcCksbi5jbGVhcigpO2xldCBvdD1sdC5nZXRWaWV3cG9ydENvdW50KCk7Zm9yKGxldCB1dD0wO3V0PG90O3V0Kyspe2xldCBndD1sdC5nZXRWaWV3cG9ydCh1dCk7ci5zZXQoYS54Kmd0LngsYS55Kmd0LnksYS54Kmd0LnosYS55Kmd0LncpLGt0LnZpZXdwb3J0KHIpLGx0LnVwZGF0ZU1hdHJpY2VzKG50LHV0KSxvPWx0LmdldEZydXN0dW0oKSxSKGoscnQsbHQuY2FtZXJhLG50LHRoaXMudHlwZSl9IWx0LmlzUG9pbnRMaWdodFNoYWRvdyYmdGhpcy50eXBlPT09UTUmJk8obHQscnQpLGx0Lm5lZWRzVXBkYXRlPSExfXkubmVlZHNVcGRhdGU9ITEsbi5zZXRSZW5kZXJUYXJnZXQoSixFdCxqdCl9O2Z1bmN0aW9uIE8oRSxqKXtsZXQgcnQ9dC51cGRhdGUoTSk7cC5kZWZpbmVzLlZTTV9TQU1QTEVTIT09RS5ibHVyU2FtcGxlcyYmKHAuZGVmaW5lcy5WU01fU0FNUExFUz1FLmJsdXJTYW1wbGVzLGcuZGVmaW5lcy5WU01fU0FNUExFUz1FLmJsdXJTYW1wbGVzLHAubmVlZHNVcGRhdGU9ITAsZy5uZWVkc1VwZGF0ZT0hMCkscC51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT1FLm1hcC50ZXh0dXJlLHAudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1FLm1hcFNpemUscC51bmlmb3Jtcy5yYWRpdXMudmFsdWU9RS5yYWRpdXMsbi5zZXRSZW5kZXJUYXJnZXQoRS5tYXBQYXNzKSxuLmNsZWFyKCksbi5yZW5kZXJCdWZmZXJEaXJlY3QoaixudWxsLHJ0LHAsTSxudWxsKSxnLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPUUubWFwUGFzcy50ZXh0dXJlLGcudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1FLm1hcFNpemUsZy51bmlmb3Jtcy5yYWRpdXMudmFsdWU9RS5yYWRpdXMsbi5zZXRSZW5kZXJUYXJnZXQoRS5tYXApLG4uY2xlYXIoKSxuLnJlbmRlckJ1ZmZlckRpcmVjdChqLG51bGwscnQsZyxNLG51bGwpfWZ1bmN0aW9uIGIoRSxqLHJ0LEosRXQsanQsa3Qpe2xldCB3PW51bGwsVT1KLmlzUG9pbnRMaWdodD09PSEwP0UuY3VzdG9tRGlzdGFuY2VNYXRlcmlhbDpFLmN1c3RvbURlcHRoTWF0ZXJpYWw7aWYoVSE9PXZvaWQgMD93PVU6dz1KLmlzUG9pbnRMaWdodD09PSEwP2w6cyxuLmxvY2FsQ2xpcHBpbmdFbmFibGVkJiZydC5jbGlwU2hhZG93cz09PSEwJiZydC5jbGlwcGluZ1BsYW5lcy5sZW5ndGghPT0wfHxydC5kaXNwbGFjZW1lbnRNYXAmJnJ0LmRpc3BsYWNlbWVudFNjYWxlIT09MHx8cnQuYWxwaGFNYXAmJnJ0LmFscGhhVGVzdD4wKXtsZXQgbnQ9dy51dWlkLGx0PXJ0LnV1aWQsYnQ9Y1tudF07YnQ9PT12b2lkIDAmJihidD17fSxjW250XT1idCk7bGV0IG90PWJ0W2x0XTtvdD09PXZvaWQgMCYmKG90PXcuY2xvbmUoKSxidFtsdF09b3QpLHc9b3R9cmV0dXJuIHcudmlzaWJsZT1ydC52aXNpYmxlLHcud2lyZWZyYW1lPXJ0LndpcmVmcmFtZSxrdD09PVE1P3cuc2lkZT1ydC5zaGFkb3dTaWRlIT09bnVsbD9ydC5zaGFkb3dTaWRlOnJ0LnNpZGU6dy5zaWRlPXJ0LnNoYWRvd1NpZGUhPT1udWxsP3J0LnNoYWRvd1NpZGU6ZltydC5zaWRlXSx3LmFscGhhTWFwPXJ0LmFscGhhTWFwLHcuYWxwaGFUZXN0PXJ0LmFscGhhVGVzdCx3LmNsaXBTaGFkb3dzPXJ0LmNsaXBTaGFkb3dzLHcuY2xpcHBpbmdQbGFuZXM9cnQuY2xpcHBpbmdQbGFuZXMsdy5jbGlwSW50ZXJzZWN0aW9uPXJ0LmNsaXBJbnRlcnNlY3Rpb24sdy5kaXNwbGFjZW1lbnRNYXA9cnQuZGlzcGxhY2VtZW50TWFwLHcuZGlzcGxhY2VtZW50U2NhbGU9cnQuZGlzcGxhY2VtZW50U2NhbGUsdy5kaXNwbGFjZW1lbnRCaWFzPXJ0LmRpc3BsYWNlbWVudEJpYXMsdy53aXJlZnJhbWVMaW5ld2lkdGg9cnQud2lyZWZyYW1lTGluZXdpZHRoLHcubGluZXdpZHRoPXJ0LmxpbmV3aWR0aCxKLmlzUG9pbnRMaWdodD09PSEwJiZ3LmlzTWVzaERpc3RhbmNlTWF0ZXJpYWw9PT0hMCYmKHcucmVmZXJlbmNlUG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKEoubWF0cml4V29ybGQpLHcubmVhckRpc3RhbmNlPUV0LHcuZmFyRGlzdGFuY2U9anQpLHd9ZnVuY3Rpb24gUihFLGoscnQsSixFdCl7aWYoRS52aXNpYmxlPT09ITEpcmV0dXJuO2lmKEUubGF5ZXJzLnRlc3Qoai5sYXllcnMpJiYoRS5pc01lc2h8fEUuaXNMaW5lfHxFLmlzUG9pbnRzKSYmKEUuY2FzdFNoYWRvd3x8RS5yZWNlaXZlU2hhZG93JiZFdD09PVE1KSYmKCFFLmZydXN0dW1DdWxsZWR8fG8uaW50ZXJzZWN0c09iamVjdChFKSkpe0UubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMocnQubWF0cml4V29ybGRJbnZlcnNlLEUubWF0cml4V29ybGQpO2xldCB3PXQudXBkYXRlKEUpLFU9RS5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KFUpKXtsZXQgbnQ9dy5ncm91cHM7Zm9yKGxldCBsdD0wLGJ0PW50Lmxlbmd0aDtsdDxidDtsdCsrKXtsZXQgb3Q9bnRbbHRdLHV0PVVbb3QubWF0ZXJpYWxJbmRleF07aWYodXQmJnV0LnZpc2libGUpe2xldCBndD1iKEUsdyx1dCxKLHJ0Lm5lYXIscnQuZmFyLEV0KTtuLnJlbmRlckJ1ZmZlckRpcmVjdChydCxudWxsLHcsZ3QsRSxvdCl9fX1lbHNlIGlmKFUudmlzaWJsZSl7bGV0IG50PWIoRSx3LFUsSixydC5uZWFyLHJ0LmZhcixFdCk7bi5yZW5kZXJCdWZmZXJEaXJlY3QocnQsbnVsbCx3LG50LEUsbnVsbCl9fWxldCBrdD1FLmNoaWxkcmVuO2ZvcihsZXQgdz0wLFU9a3QubGVuZ3RoO3c8VTt3KyspUihrdFt3XSxqLHJ0LEosRXQpfX1mdW5jdGlvbiBYWXQobix0LGUpe2xldCBvPWUuaXNXZWJHTDI7ZnVuY3Rpb24gaSgpe2xldCB4dD0hMSxBbj1uZXcgY2EsQmU9bnVsbCxybz1uZXcgY2EoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24oaGUpe0JlIT09aGUmJiF4dCYmKG4uY29sb3JNYXNrKGhlLGhlLGhlLGhlKSxCZT1oZSl9LHNldExvY2tlZDpmdW5jdGlvbihoZSl7eHQ9aGV9LHNldENsZWFyOmZ1bmN0aW9uKGhlLHFuLFpvLFRhLHRzKXt0cz09PSEwJiYoaGUqPVRhLHFuKj1UYSxabyo9VGEpLEFuLnNldChoZSxxbixabyxUYSkscm8uZXF1YWxzKEFuKT09PSExJiYobi5jbGVhckNvbG9yKGhlLHFuLFpvLFRhKSxyby5jb3B5KEFuKSl9LHJlc2V0OmZ1bmN0aW9uKCl7eHQ9ITEsQmU9bnVsbCxyby5zZXQoLTEsMCwwLDApfX19ZnVuY3Rpb24gYSgpe2xldCB4dD0hMSxBbj1udWxsLEJlPW51bGwscm89bnVsbDtyZXR1cm57c2V0VGVzdDpmdW5jdGlvbihoZSl7aGU/THQoMjkyOSk6UG4oMjkyOSl9LHNldE1hc2s6ZnVuY3Rpb24oaGUpe0FuIT09aGUmJiF4dCYmKG4uZGVwdGhNYXNrKGhlKSxBbj1oZSl9LHNldEZ1bmM6ZnVuY3Rpb24oaGUpe2lmKEJlIT09aGUpe2lmKGhlKXN3aXRjaChoZSl7Y2FzZSBMOHQ6bi5kZXB0aEZ1bmMoNTEyKTticmVhaztjYXNlIEI4dDpuLmRlcHRoRnVuYyg1MTkpO2JyZWFrO2Nhc2UgVjh0Om4uZGVwdGhGdW5jKDUxMyk7YnJlYWs7Y2FzZSBGVzpuLmRlcHRoRnVuYyg1MTUpO2JyZWFrO2Nhc2Ugajh0Om4uZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSBVOHQ6bi5kZXB0aEZ1bmMoNTE4KTticmVhaztjYXNlIFk4dDpuLmRlcHRoRnVuYyg1MTYpO2JyZWFrO2Nhc2UgRzh0Om4uZGVwdGhGdW5jKDUxNyk7YnJlYWs7ZGVmYXVsdDpuLmRlcHRoRnVuYyg1MTUpfWVsc2Ugbi5kZXB0aEZ1bmMoNTE1KTtCZT1oZX19LHNldExvY2tlZDpmdW5jdGlvbihoZSl7eHQ9aGV9LHNldENsZWFyOmZ1bmN0aW9uKGhlKXtybyE9PWhlJiYobi5jbGVhckRlcHRoKGhlKSxybz1oZSl9LHJlc2V0OmZ1bmN0aW9uKCl7eHQ9ITEsQW49bnVsbCxCZT1udWxsLHJvPW51bGx9fX1mdW5jdGlvbiByKCl7bGV0IHh0PSExLEFuPW51bGwsQmU9bnVsbCxybz1udWxsLGhlPW51bGwscW49bnVsbCxabz1udWxsLFRhPW51bGwsdHM9bnVsbDtyZXR1cm57c2V0VGVzdDpmdW5jdGlvbihzcil7eHR8fChzcj9MdCgyOTYwKTpQbigyOTYwKSl9LHNldE1hc2s6ZnVuY3Rpb24oc3Ipe0FuIT09c3ImJiF4dCYmKG4uc3RlbmNpbE1hc2soc3IpLEFuPXNyKX0sc2V0RnVuYzpmdW5jdGlvbihzcixKaCwkaCl7KEJlIT09c3J8fHJvIT09Smh8fGhlIT09JGgpJiYobi5zdGVuY2lsRnVuYyhzcixKaCwkaCksQmU9c3Iscm89SmgsaGU9JGgpfSxzZXRPcDpmdW5jdGlvbihzcixKaCwkaCl7KHFuIT09c3J8fFpvIT09Smh8fFRhIT09JGgpJiYobi5zdGVuY2lsT3Aoc3IsSmgsJGgpLHFuPXNyLFpvPUpoLFRhPSRoKX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHNyKXt4dD1zcn0sc2V0Q2xlYXI6ZnVuY3Rpb24oc3Ipe3RzIT09c3ImJihuLmNsZWFyU3RlbmNpbChzciksdHM9c3IpfSxyZXNldDpmdW5jdGlvbigpe3h0PSExLEFuPW51bGwsQmU9bnVsbCxybz1udWxsLGhlPW51bGwscW49bnVsbCxabz1udWxsLFRhPW51bGwsdHM9bnVsbH19fWxldCBzPW5ldyBpLGw9bmV3IGEsYz1uZXcgcixtPXt9LGY9e30scD1uZXcgV2Vha01hcCxnPVtdLF89bnVsbCxNPSExLHk9bnVsbCxPPW51bGwsYj1udWxsLFI9bnVsbCxFPW51bGwsaj1udWxsLHJ0PW51bGwsSj0hMSxFdD1udWxsLGp0PW51bGwsa3Q9bnVsbCx3PW51bGwsVT1udWxsLG50PW4uZ2V0UGFyYW1ldGVyKDM1NjYxKSxsdD0hMSxidD0wLG90PW4uZ2V0UGFyYW1ldGVyKDc5MzgpO290LmluZGV4T2YoIldlYkdMIikhPT0tMT8oYnQ9cGFyc2VGbG9hdCgvXldlYkdMIChcZCkvLmV4ZWMob3QpWzFdKSxsdD1idD49MSk6b3QuaW5kZXhPZigiT3BlbkdMIEVTIikhPT0tMSYmKGJ0PXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFxkKS8uZXhlYyhvdClbMV0pLGx0PWJ0Pj0yKTtsZXQgdXQ9bnVsbCxndD17fSxXdD1uLmdldFBhcmFtZXRlcigzMDg4KSxSdD1uLmdldFBhcmFtZXRlcigyOTc4KSxHdD1uZXcgY2EoKS5mcm9tQXJyYXkoV3QpLHllPW5ldyBjYSgpLmZyb21BcnJheShSdCk7ZnVuY3Rpb24gamUoeHQsQW4sQmUpe2xldCBybz1uZXcgVWludDhBcnJheSg0KSxoZT1uLmNyZWF0ZVRleHR1cmUoKTtuLmJpbmRUZXh0dXJlKHh0LGhlKSxuLnRleFBhcmFtZXRlcmkoeHQsMTAyNDEsOTcyOCksbi50ZXhQYXJhbWV0ZXJpKHh0LDEwMjQwLDk3MjgpO2ZvcihsZXQgcW49MDtxbjxCZTtxbisrKW4udGV4SW1hZ2UyRChBbitxbiwwLDY0MDgsMSwxLDAsNjQwOCw1MTIxLHJvKTtyZXR1cm4gaGV9bGV0IGNlPXt9O2NlWzM1NTNdPWplKDM1NTMsMzU1MywxKSxjZVszNDA2N109amUoMzQwNjcsMzQwNjksNikscy5zZXRDbGVhcigwLDAsMCwxKSxsLnNldENsZWFyKDEpLGMuc2V0Q2xlYXIoMCksTHQoMjkyOSksbC5zZXRGdW5jKEZXKSxmZSghMSksVWUoR3B0KSxMdCgyODg0KSxodChEeCk7ZnVuY3Rpb24gTHQoeHQpe21beHRdIT09ITAmJihuLmVuYWJsZSh4dCksbVt4dF09ITApfWZ1bmN0aW9uIFBuKHh0KXttW3h0XSE9PSExJiYobi5kaXNhYmxlKHh0KSxtW3h0XT0hMSl9ZnVuY3Rpb24gVmUoeHQsQW4pe3JldHVybiBmW3h0XSE9PUFuPyhuLmJpbmRGcmFtZWJ1ZmZlcih4dCxBbiksZlt4dF09QW4sbyYmKHh0PT09MzYwMDkmJihmWzM2MTYwXT1BbikseHQ9PT0zNjE2MCYmKGZbMzYwMDldPUFuKSksITApOiExfWZ1bmN0aW9uIERlKHh0LEFuKXtsZXQgQmU9Zyxybz0hMTtpZih4dClpZihCZT1wLmdldChBbiksQmU9PT12b2lkIDAmJihCZT1bXSxwLnNldChBbixCZSkpLHh0LmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHMpe2xldCBoZT14dC50ZXh0dXJlO2lmKEJlLmxlbmd0aCE9PWhlLmxlbmd0aHx8QmVbMF0hPT0zNjA2NCl7Zm9yKGxldCBxbj0wLFpvPWhlLmxlbmd0aDtxbjxabztxbisrKUJlW3FuXT0zNjA2NCtxbjtCZS5sZW5ndGg9aGUubGVuZ3RoLHJvPSEwfX1lbHNlIEJlWzBdIT09MzYwNjQmJihCZVswXT0zNjA2NCxybz0hMCk7ZWxzZSBCZVswXSE9PTEwMjkmJihCZVswXT0xMDI5LHJvPSEwKTtybyYmKGUuaXNXZWJHTDI/bi5kcmF3QnVmZmVycyhCZSk6dC5nZXQoIldFQkdMX2RyYXdfYnVmZmVycyIpLmRyYXdCdWZmZXJzV0VCR0woQmUpKX1mdW5jdGlvbiBxdCh4dCl7cmV0dXJuIF8hPT14dD8obi51c2VQcm9ncmFtKHh0KSxfPXh0LCEwKTohMX1sZXQgTGU9e1tpU106MzI3NzQsW1I4dF06MzI3NzgsW0U4dF06MzI3Nzl9O2lmKG8pTGVbWHB0XT0zMjc3NSxMZVtRcHRdPTMyNzc2O2Vsc2V7bGV0IHh0PXQuZ2V0KCJFWFRfYmxlbmRfbWlubWF4Iik7eHQhPT1udWxsJiYoTGVbWHB0XT14dC5NSU5fRVhULExlW1FwdF09eHQuTUFYX0VYVCl9bGV0IEhlPXtbazh0XTowLFtOOHRdOjEsW1Q4dF06NzY4LFtSZ3RdOjc3MCxbRjh0XTo3NzYsW3o4dF06Nzc0LFtEOHRdOjc3MixbQTh0XTo3NjksW0VndF06NzcxLFtIOHRdOjc3NSxbSTh0XTo3NzN9O2Z1bmN0aW9uIGh0KHh0LEFuLEJlLHJvLGhlLHFuLFpvLFRhKXtpZih4dD09PUR4KXtNPT09ITAmJihQbigzMDQyKSxNPSExKTtyZXR1cm59aWYoTT09PSExJiYoTHQoMzA0MiksTT0hMCkseHQhPT1TOHQpe2lmKHh0IT09eXx8VGEhPT1KKXtpZigoTyE9PWlTfHxFIT09aVMpJiYobi5ibGVuZEVxdWF0aW9uKDMyNzc0KSxPPWlTLEU9aVMpLFRhKXN3aXRjaCh4dCl7Y2FzZSBKNTpuLmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIFdwdDpuLmJsZW5kRnVuYygxLDEpO2JyZWFrO2Nhc2UgcXB0Om4uYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjksMCwxKTticmVhaztjYXNlIFpwdDpuLmJsZW5kRnVuY1NlcGFyYXRlKDAsNzY4LDAsNzcwKTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIseHQpO2JyZWFrfWVsc2Ugc3dpdGNoKHh0KXtjYXNlIEo1Om4uYmxlbmRGdW5jU2VwYXJhdGUoNzcwLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSBXcHQ6bi5ibGVuZEZ1bmMoNzcwLDEpO2JyZWFrO2Nhc2UgcXB0Om4uYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjksMCwxKTticmVhaztjYXNlIFpwdDpuLmJsZW5kRnVuYygwLDc2OCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLHh0KTticmVha31iPW51bGwsUj1udWxsLGo9bnVsbCxydD1udWxsLHk9eHQsSj1UYX1yZXR1cm59aGU9aGV8fEFuLHFuPXFufHxCZSxabz1ab3x8cm8sKEFuIT09T3x8aGUhPT1FKSYmKG4uYmxlbmRFcXVhdGlvblNlcGFyYXRlKExlW0FuXSxMZVtoZV0pLE89QW4sRT1oZSksKEJlIT09Ynx8cm8hPT1SfHxxbiE9PWp8fFpvIT09cnQpJiYobi5ibGVuZEZ1bmNTZXBhcmF0ZShIZVtCZV0sSGVbcm9dLEhlW3FuXSxIZVtab10pLGI9QmUsUj1ybyxqPXFuLHJ0PVpvKSx5PXh0LEo9bnVsbH1mdW5jdGlvbiBSZSh4dCxBbil7eHQuc2lkZT09PXBTP1BuKDI4ODQpOkx0KDI4ODQpO2xldCBCZT14dC5zaWRlPT09bGw7QW4mJihCZT0hQmUpLGZlKEJlKSx4dC5ibGVuZGluZz09PUo1JiZ4dC50cmFuc3BhcmVudD09PSExP2h0KER4KTpodCh4dC5ibGVuZGluZyx4dC5ibGVuZEVxdWF0aW9uLHh0LmJsZW5kU3JjLHh0LmJsZW5kRHN0LHh0LmJsZW5kRXF1YXRpb25BbHBoYSx4dC5ibGVuZFNyY0FscGhhLHh0LmJsZW5kRHN0QWxwaGEseHQucHJlbXVsdGlwbGllZEFscGhhKSxsLnNldEZ1bmMoeHQuZGVwdGhGdW5jKSxsLnNldFRlc3QoeHQuZGVwdGhUZXN0KSxsLnNldE1hc2soeHQuZGVwdGhXcml0ZSkscy5zZXRNYXNrKHh0LmNvbG9yV3JpdGUpO2xldCBybz14dC5zdGVuY2lsV3JpdGU7Yy5zZXRUZXN0KHJvKSxybyYmKGMuc2V0TWFzayh4dC5zdGVuY2lsV3JpdGVNYXNrKSxjLnNldEZ1bmMoeHQuc3RlbmNpbEZ1bmMseHQuc3RlbmNpbFJlZix4dC5zdGVuY2lsRnVuY01hc2spLGMuc2V0T3AoeHQuc3RlbmNpbEZhaWwseHQuc3RlbmNpbFpGYWlsLHh0LnN0ZW5jaWxaUGFzcykpLEJuKHh0LnBvbHlnb25PZmZzZXQseHQucG9seWdvbk9mZnNldEZhY3Rvcix4dC5wb2x5Z29uT2Zmc2V0VW5pdHMpLHh0LmFscGhhVG9Db3ZlcmFnZT09PSEwP0x0KDMyOTI2KTpQbigzMjkyNil9ZnVuY3Rpb24gZmUoeHQpe0V0IT09eHQmJih4dD9uLmZyb250RmFjZSgyMzA0KTpuLmZyb250RmFjZSgyMzA1KSxFdD14dCl9ZnVuY3Rpb24gVWUoeHQpe3h0IT09eDh0PyhMdCgyODg0KSx4dCE9PWp0JiYoeHQ9PT1HcHQ/bi5jdWxsRmFjZSgxMDI5KTp4dD09PXY4dD9uLmN1bGxGYWNlKDEwMjgpOm4uY3VsbEZhY2UoMTAzMikpKTpQbigyODg0KSxqdD14dH1mdW5jdGlvbiBGZSh4dCl7eHQhPT1rdCYmKGx0JiZuLmxpbmVXaWR0aCh4dCksa3Q9eHQpfWZ1bmN0aW9uIEJuKHh0LEFuLEJlKXt4dD8oTHQoMzI4MjMpLCh3IT09QW58fFUhPT1CZSkmJihuLnBvbHlnb25PZmZzZXQoQW4sQmUpLHc9QW4sVT1CZSkpOlBuKDMyODIzKX1mdW5jdGlvbiB3bih4dCl7eHQ/THQoMzA4OSk6UG4oMzA4OSl9ZnVuY3Rpb24gcW8oeHQpe3h0PT09dm9pZCAwJiYoeHQ9MzM5ODQrbnQtMSksdXQhPT14dCYmKG4uYWN0aXZlVGV4dHVyZSh4dCksdXQ9eHQpfWZ1bmN0aW9uIG1hKHh0LEFuKXt1dD09PW51bGwmJnFvKCk7bGV0IEJlPWd0W3V0XTtCZT09PXZvaWQgMCYmKEJlPXt0eXBlOnZvaWQgMCx0ZXh0dXJlOnZvaWQgMH0sZ3RbdXRdPUJlKSwoQmUudHlwZSE9PXh0fHxCZS50ZXh0dXJlIT09QW4pJiYobi5iaW5kVGV4dHVyZSh4dCxBbnx8Y2VbeHRdKSxCZS50eXBlPXh0LEJlLnRleHR1cmU9QW4pfWZ1bmN0aW9uIGppKCl7bGV0IHh0PWd0W3V0XTt4dCE9PXZvaWQgMCYmeHQudHlwZSE9PXZvaWQgMCYmKG4uYmluZFRleHR1cmUoeHQudHlwZSxudWxsKSx4dC50eXBlPXZvaWQgMCx4dC50ZXh0dXJlPXZvaWQgMCl9ZnVuY3Rpb24gZnQoKXt0cnl7bi5jb21wcmVzc2VkVGV4SW1hZ2UyRC5hcHBseShuLGFyZ3VtZW50cyl9Y2F0Y2goeHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix4dCl9fWZ1bmN0aW9uIGl0KCl7dHJ5e24udGV4U3ViSW1hZ2UyRC5hcHBseShuLGFyZ3VtZW50cyl9Y2F0Y2goeHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix4dCl9fWZ1bmN0aW9uIGdlKCl7dHJ5e24udGV4U3ViSW1hZ2UzRC5hcHBseShuLGFyZ3VtZW50cyl9Y2F0Y2goeHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix4dCl9fWZ1bmN0aW9uIEtlKCl7dHJ5e24uY29tcHJlc3NlZFRleFN1YkltYWdlMkQuYXBwbHkobixhcmd1bWVudHMpfWNhdGNoKHh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIseHQpfX1mdW5jdGlvbiBIbigpe3RyeXtuLnRleFN0b3JhZ2UyRC5hcHBseShuLGFyZ3VtZW50cyl9Y2F0Y2goeHQpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6Iix4dCl9fWZ1bmN0aW9uIGRlKCl7dHJ5e24udGV4U3RvcmFnZTNELmFwcGx5KG4sYXJndW1lbnRzKX1jYXRjaCh4dCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHh0KX19ZnVuY3Rpb24gWG4oKXt0cnl7bi50ZXhJbWFnZTJELmFwcGx5KG4sYXJndW1lbnRzKX1jYXRjaCh4dCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHh0KX19ZnVuY3Rpb24gVm4oKXt0cnl7bi50ZXhJbWFnZTNELmFwcGx5KG4sYXJndW1lbnRzKX1jYXRjaCh4dCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHh0KX19ZnVuY3Rpb24gdG4oeHQpe0d0LmVxdWFscyh4dCk9PT0hMSYmKG4uc2Npc3Nvcih4dC54LHh0LnkseHQueix4dC53KSxHdC5jb3B5KHh0KSl9ZnVuY3Rpb24gY24oeHQpe3llLmVxdWFscyh4dCk9PT0hMSYmKG4udmlld3BvcnQoeHQueCx4dC55LHh0LnoseHQudykseWUuY29weSh4dCkpfWZ1bmN0aW9uIHVvKCl7bi5kaXNhYmxlKDMwNDIpLG4uZGlzYWJsZSgyODg0KSxuLmRpc2FibGUoMjkyOSksbi5kaXNhYmxlKDMyODIzKSxuLmRpc2FibGUoMzA4OSksbi5kaXNhYmxlKDI5NjApLG4uZGlzYWJsZSgzMjkyNiksbi5ibGVuZEVxdWF0aW9uKDMyNzc0KSxuLmJsZW5kRnVuYygxLDApLG4uYmxlbmRGdW5jU2VwYXJhdGUoMSwwLDEsMCksbi5jb2xvck1hc2soITAsITAsITAsITApLG4uY2xlYXJDb2xvcigwLDAsMCwwKSxuLmRlcHRoTWFzayghMCksbi5kZXB0aEZ1bmMoNTEzKSxuLmNsZWFyRGVwdGgoMSksbi5zdGVuY2lsTWFzayg0Mjk0OTY3Mjk1KSxuLnN0ZW5jaWxGdW5jKDUxOSwwLDQyOTQ5NjcyOTUpLG4uc3RlbmNpbE9wKDc2ODAsNzY4MCw3NjgwKSxuLmNsZWFyU3RlbmNpbCgwKSxuLmN1bGxGYWNlKDEwMjkpLG4uZnJvbnRGYWNlKDIzMDUpLG4ucG9seWdvbk9mZnNldCgwLDApLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCksbi5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCksbz09PSEwJiYobi5iaW5kRnJhbWVidWZmZXIoMzYwMDksbnVsbCksbi5iaW5kRnJhbWVidWZmZXIoMzYwMDgsbnVsbCkpLG4udXNlUHJvZ3JhbShudWxsKSxuLmxpbmVXaWR0aCgxKSxuLnNjaXNzb3IoMCwwLG4uY2FudmFzLndpZHRoLG4uY2FudmFzLmhlaWdodCksbi52aWV3cG9ydCgwLDAsbi5jYW52YXMud2lkdGgsbi5jYW52YXMuaGVpZ2h0KSxtPXt9LHV0PW51bGwsZ3Q9e30sZj17fSxwPW5ldyBXZWFrTWFwLGc9W10sXz1udWxsLE09ITEseT1udWxsLE89bnVsbCxiPW51bGwsUj1udWxsLEU9bnVsbCxqPW51bGwscnQ9bnVsbCxKPSExLEV0PW51bGwsanQ9bnVsbCxrdD1udWxsLHc9bnVsbCxVPW51bGwsR3Quc2V0KDAsMCxuLmNhbnZhcy53aWR0aCxuLmNhbnZhcy5oZWlnaHQpLHllLnNldCgwLDAsbi5jYW52YXMud2lkdGgsbi5jYW52YXMuaGVpZ2h0KSxzLnJlc2V0KCksbC5yZXNldCgpLGMucmVzZXQoKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6cyxkZXB0aDpsLHN0ZW5jaWw6Y30sZW5hYmxlOkx0LGRpc2FibGU6UG4sYmluZEZyYW1lYnVmZmVyOlZlLGRyYXdCdWZmZXJzOkRlLHVzZVByb2dyYW06cXQsc2V0QmxlbmRpbmc6aHQsc2V0TWF0ZXJpYWw6UmUsc2V0RmxpcFNpZGVkOmZlLHNldEN1bGxGYWNlOlVlLHNldExpbmVXaWR0aDpGZSxzZXRQb2x5Z29uT2Zmc2V0OkJuLHNldFNjaXNzb3JUZXN0OnduLGFjdGl2ZVRleHR1cmU6cW8sYmluZFRleHR1cmU6bWEsdW5iaW5kVGV4dHVyZTpqaSxjb21wcmVzc2VkVGV4SW1hZ2UyRDpmdCx0ZXhJbWFnZTJEOlhuLHRleEltYWdlM0Q6Vm4sdGV4U3RvcmFnZTJEOkhuLHRleFN0b3JhZ2UzRDpkZSx0ZXhTdWJJbWFnZTJEOml0LHRleFN1YkltYWdlM0Q6Z2UsY29tcHJlc3NlZFRleFN1YkltYWdlMkQ6S2Usc2Npc3Nvcjp0bix2aWV3cG9ydDpjbixyZXNldDp1b319ZnVuY3Rpb24gUVl0KG4sdCxlLG8saSxhLHIpe2xldCBzPWkuaXNXZWJHTDIsbD1pLm1heFRleHR1cmVzLGM9aS5tYXhDdWJlbWFwU2l6ZSxtPWkubWF4VGV4dHVyZVNpemUsZj1pLm1heFNhbXBsZXMsZz10LmhhcygiV0VCR0xfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIik/dC5nZXQoIldFQkdMX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpOnZvaWQgMCxfPW5ldyBXZWFrTWFwLE0seT0hMTt0cnl7eT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzIT0idW5kZWZpbmVkIiYmbmV3IE9mZnNjcmVlbkNhbnZhcygxLDEpLmdldENvbnRleHQoIjJkIikhPT1udWxsfWNhdGNoKGZ0KXt9ZnVuY3Rpb24gTyhmdCxpdCl7cmV0dXJuIHk/bmV3IE9mZnNjcmVlbkNhbnZhcyhmdCxpdCk6YTQoImNhbnZhcyIpfWZ1bmN0aW9uIGIoZnQsaXQsZ2UsS2Upe2xldCBIbj0xO2lmKChmdC53aWR0aD5LZXx8ZnQuaGVpZ2h0PktlKSYmKEhuPUtlL01hdGgubWF4KGZ0LndpZHRoLGZ0LmhlaWdodCkpLEhuPDF8fGl0PT09ITApaWYodHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQhPSJ1bmRlZmluZWQiJiZmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fHR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCE9InVuZGVmaW5lZCImJmZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fHR5cGVvZiBJbWFnZUJpdG1hcCE9InVuZGVmaW5lZCImJmZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXApe2xldCBkZT1pdD95QnQ6TWF0aC5mbG9vcixYbj1kZShIbipmdC53aWR0aCksVm49ZGUoSG4qZnQuaGVpZ2h0KTtNPT09dm9pZCAwJiYoTT1PKFhuLFZuKSk7bGV0IHRuPWdlP08oWG4sVm4pOk07cmV0dXJuIHRuLndpZHRoPVhuLHRuLmhlaWdodD1Wbix0bi5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShmdCwwLDAsWG4sVm4pLGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBoYXMgYmVlbiByZXNpemVkIGZyb20gKCIrZnQud2lkdGgrIngiK2Z0LmhlaWdodCsiKSB0byAoIitYbisieCIrVm4rIikuIiksdG59ZWxzZSByZXR1cm4iZGF0YSJpbiBmdCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBJbWFnZSBpbiBEYXRhVGV4dHVyZSBpcyB0b28gYmlnICgiK2Z0LndpZHRoKyJ4IitmdC5oZWlnaHQrIikuIiksZnQ7cmV0dXJuIGZ0fWZ1bmN0aW9uIFIoZnQpe3JldHVybiBPZHQoZnQud2lkdGgpJiZPZHQoZnQuaGVpZ2h0KX1mdW5jdGlvbiBFKGZ0KXtyZXR1cm4gcz8hMTpmdC53cmFwUyE9PW5ofHxmdC53cmFwVCE9PW5ofHxmdC5taW5GaWx0ZXIhPT1jbCYmZnQubWluRmlsdGVyIT09d219ZnVuY3Rpb24gaihmdCxpdCl7cmV0dXJuIGZ0LmdlbmVyYXRlTWlwbWFwcyYmaXQmJmZ0Lm1pbkZpbHRlciE9PWNsJiZmdC5taW5GaWx0ZXIhPT13bX1mdW5jdGlvbiBydChmdCl7bi5nZW5lcmF0ZU1pcG1hcChmdCl9ZnVuY3Rpb24gSihmdCxpdCxnZSxLZSxIbj0hMSl7aWYocz09PSExKXJldHVybiBpdDtpZihmdCE9PW51bGwpe2lmKG5bZnRdIT09dm9pZCAwKXJldHVybiBuW2Z0XTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gdXNlIG5vbi1leGlzdGluZyBXZWJHTCBpbnRlcm5hbCBmb3JtYXQgJyIrZnQrIiciKX1sZXQgZGU9aXQ7cmV0dXJuIGl0PT09NjQwMyYmKGdlPT09NTEyNiYmKGRlPTMzMzI2KSxnZT09PTUxMzEmJihkZT0zMzMyNSksZ2U9PT01MTIxJiYoZGU9MzMzMjEpKSxpdD09PTMzMzE5JiYoZ2U9PT01MTI2JiYoZGU9MzMzMjgpLGdlPT09NTEzMSYmKGRlPTMzMzI3KSxnZT09PTUxMjEmJihkZT0zMzMyMykpLGl0PT09NjQwOCYmKGdlPT09NTEyNiYmKGRlPTM0ODM2KSxnZT09PTUxMzEmJihkZT0zNDg0MiksZ2U9PT01MTIxJiYoZGU9S2U9PT1NciYmSG49PT0hMT8zNTkwNzozMjg1NiksZ2U9PT0zMjgxOSYmKGRlPTMyODU0KSxnZT09PTMyODIwJiYoZGU9MzI4NTUpKSwoZGU9PT0zMzMyNXx8ZGU9PT0zMzMyNnx8ZGU9PT0zMzMyN3x8ZGU9PT0zMzMyOHx8ZGU9PT0zNDg0Mnx8ZGU9PT0zNDgzNikmJnQuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IiksZGV9ZnVuY3Rpb24gRXQoZnQsaXQsZ2Upe3JldHVybiBqKGZ0LGdlKT09PSEwfHxmdC5pc0ZyYW1lYnVmZmVyVGV4dHVyZSYmZnQubWluRmlsdGVyIT09Y2wmJmZ0Lm1pbkZpbHRlciE9PXdtP01hdGgubG9nMihNYXRoLm1heChpdC53aWR0aCxpdC5oZWlnaHQpKSsxOmZ0Lm1pcG1hcHMhPT12b2lkIDAmJmZ0Lm1pcG1hcHMubGVuZ3RoPjA/ZnQubWlwbWFwcy5sZW5ndGg6ZnQuaXNDb21wcmVzc2VkVGV4dHVyZSYmQXJyYXkuaXNBcnJheShmdC5pbWFnZSk/aXQubWlwbWFwcy5sZW5ndGg6MX1mdW5jdGlvbiBqdChmdCl7cmV0dXJuIGZ0PT09Y2x8fGZ0PT09S3B0fHxmdD09PUpwdD85NzI4Ojk3Mjl9ZnVuY3Rpb24ga3QoZnQpe2xldCBpdD1mdC50YXJnZXQ7aXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsa3QpLFUoaXQpLGl0LmlzVmlkZW9UZXh0dXJlJiZfLmRlbGV0ZShpdCksci5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiB3KGZ0KXtsZXQgaXQ9ZnQudGFyZ2V0O2l0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLG50KGl0KX1mdW5jdGlvbiBVKGZ0KXtsZXQgaXQ9by5nZXQoZnQpO2l0Ll9fd2ViZ2xJbml0IT09dm9pZCAwJiYobi5kZWxldGVUZXh0dXJlKGl0Ll9fd2ViZ2xUZXh0dXJlKSxvLnJlbW92ZShmdCkpfWZ1bmN0aW9uIG50KGZ0KXtsZXQgaXQ9ZnQudGV4dHVyZSxnZT1vLmdldChmdCksS2U9by5nZXQoaXQpO2lmKCEhZnQpe2lmKEtlLl9fd2ViZ2xUZXh0dXJlIT09dm9pZCAwJiYobi5kZWxldGVUZXh0dXJlKEtlLl9fd2ViZ2xUZXh0dXJlKSxyLm1lbW9yeS50ZXh0dXJlcy0tKSxmdC5kZXB0aFRleHR1cmUmJmZ0LmRlcHRoVGV4dHVyZS5kaXNwb3NlKCksZnQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpZm9yKGxldCBIbj0wO0huPDY7SG4rKyluLmRlbGV0ZUZyYW1lYnVmZmVyKGdlLl9fd2ViZ2xGcmFtZWJ1ZmZlcltIbl0pLGdlLl9fd2ViZ2xEZXB0aGJ1ZmZlciYmbi5kZWxldGVSZW5kZXJidWZmZXIoZ2UuX193ZWJnbERlcHRoYnVmZmVyW0huXSk7ZWxzZSBuLmRlbGV0ZUZyYW1lYnVmZmVyKGdlLl9fd2ViZ2xGcmFtZWJ1ZmZlciksZ2UuX193ZWJnbERlcHRoYnVmZmVyJiZuLmRlbGV0ZVJlbmRlcmJ1ZmZlcihnZS5fX3dlYmdsRGVwdGhidWZmZXIpLGdlLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciYmbi5kZWxldGVGcmFtZWJ1ZmZlcihnZS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLGdlLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciYmbi5kZWxldGVSZW5kZXJidWZmZXIoZ2UuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSxnZS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXImJm4uZGVsZXRlUmVuZGVyYnVmZmVyKGdlLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcik7aWYoZnQuaXNXZWJHTE11bHRpcGxlUmVuZGVyVGFyZ2V0cylmb3IobGV0IEhuPTAsZGU9aXQubGVuZ3RoO0huPGRlO0huKyspe2xldCBYbj1vLmdldChpdFtIbl0pO1huLl9fd2ViZ2xUZXh0dXJlJiYobi5kZWxldGVUZXh0dXJlKFhuLl9fd2ViZ2xUZXh0dXJlKSxyLm1lbW9yeS50ZXh0dXJlcy0tKSxvLnJlbW92ZShpdFtIbl0pfW8ucmVtb3ZlKGl0KSxvLnJlbW92ZShmdCl9fWxldCBsdD0wO2Z1bmN0aW9uIGJ0KCl7bHQ9MH1mdW5jdGlvbiBvdCgpe2xldCBmdD1sdDtyZXR1cm4gZnQ+PWwmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlczogVHJ5aW5nIHRvIHVzZSAiK2Z0KyIgdGV4dHVyZSB1bml0cyB3aGlsZSB0aGlzIEdQVSBzdXBwb3J0cyBvbmx5ICIrbCksbHQrPTEsZnR9ZnVuY3Rpb24gdXQoZnQsaXQpe2xldCBnZT1vLmdldChmdCk7aWYoZnQuaXNWaWRlb1RleHR1cmUmJkZlKGZ0KSxmdC52ZXJzaW9uPjAmJmdlLl9fdmVyc2lvbiE9PWZ0LnZlcnNpb24pe2xldCBLZT1mdC5pbWFnZTtpZihLZT09PXZvaWQgMCljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIHVuZGVmaW5lZCIpO2Vsc2UgaWYoS2UuY29tcGxldGU9PT0hMSljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKTtlbHNle0x0KGdlLGZ0LGl0KTtyZXR1cm59fWUuYWN0aXZlVGV4dHVyZSgzMzk4NCtpdCksZS5iaW5kVGV4dHVyZSgzNTUzLGdlLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBndChmdCxpdCl7bGV0IGdlPW8uZ2V0KGZ0KTtpZihmdC52ZXJzaW9uPjAmJmdlLl9fdmVyc2lvbiE9PWZ0LnZlcnNpb24pe0x0KGdlLGZ0LGl0KTtyZXR1cm59ZS5hY3RpdmVUZXh0dXJlKDMzOTg0K2l0KSxlLmJpbmRUZXh0dXJlKDM1ODY2LGdlLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBXdChmdCxpdCl7bGV0IGdlPW8uZ2V0KGZ0KTtpZihmdC52ZXJzaW9uPjAmJmdlLl9fdmVyc2lvbiE9PWZ0LnZlcnNpb24pe0x0KGdlLGZ0LGl0KTtyZXR1cm59ZS5hY3RpdmVUZXh0dXJlKDMzOTg0K2l0KSxlLmJpbmRUZXh0dXJlKDMyODc5LGdlLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBSdChmdCxpdCl7bGV0IGdlPW8uZ2V0KGZ0KTtpZihmdC52ZXJzaW9uPjAmJmdlLl9fdmVyc2lvbiE9PWZ0LnZlcnNpb24pe1BuKGdlLGZ0LGl0KTtyZXR1cm59ZS5hY3RpdmVUZXh0dXJlKDMzOTg0K2l0KSxlLmJpbmRUZXh0dXJlKDM0MDY3LGdlLl9fd2ViZ2xUZXh0dXJlKX1sZXQgR3Q9e1tWV106MTA0OTcsW25oXTozMzA3MSxbalddOjMzNjQ4fSx5ZT17W2NsXTo5NzI4LFtLcHRdOjk5ODQsW0pwdF06OTk4Nixbd21dOjk3MjksWyQ4dF06OTk4NSxbT0ZdOjk5ODd9O2Z1bmN0aW9uIGplKGZ0LGl0LGdlKXtpZihnZT8obi50ZXhQYXJhbWV0ZXJpKGZ0LDEwMjQyLEd0W2l0LndyYXBTXSksbi50ZXhQYXJhbWV0ZXJpKGZ0LDEwMjQzLEd0W2l0LndyYXBUXSksKGZ0PT09MzI4Nzl8fGZ0PT09MzU4NjYpJiZuLnRleFBhcmFtZXRlcmkoZnQsMzI4ODIsR3RbaXQud3JhcFJdKSxuLnRleFBhcmFtZXRlcmkoZnQsMTAyNDAseWVbaXQubWFnRmlsdGVyXSksbi50ZXhQYXJhbWV0ZXJpKGZ0LDEwMjQxLHllW2l0Lm1pbkZpbHRlcl0pKToobi50ZXhQYXJhbWV0ZXJpKGZ0LDEwMjQyLDMzMDcxKSxuLnRleFBhcmFtZXRlcmkoZnQsMTAyNDMsMzMwNzEpLChmdD09PTMyODc5fHxmdD09PTM1ODY2KSYmbi50ZXhQYXJhbWV0ZXJpKGZ0LDMyODgyLDMzMDcxKSwoaXQud3JhcFMhPT1uaHx8aXQud3JhcFQhPT1uaCkmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLndyYXBTIGFuZCBUZXh0dXJlLndyYXBUIHNob3VsZCBiZSBzZXQgdG8gVEhSRUUuQ2xhbXBUb0VkZ2VXcmFwcGluZy4iKSxuLnRleFBhcmFtZXRlcmkoZnQsMTAyNDAsanQoaXQubWFnRmlsdGVyKSksbi50ZXhQYXJhbWV0ZXJpKGZ0LDEwMjQxLGp0KGl0Lm1pbkZpbHRlcikpLGl0Lm1pbkZpbHRlciE9PWNsJiZpdC5taW5GaWx0ZXIhPT13bSYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIGlzIG5vdCBwb3dlciBvZiB0d28uIFRleHR1cmUubWluRmlsdGVyIHNob3VsZCBiZSBzZXQgdG8gVEhSRUUuTmVhcmVzdEZpbHRlciBvciBUSFJFRS5MaW5lYXJGaWx0ZXIuIikpLHQuaGFzKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKT09PSEwKXtsZXQgS2U9dC5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2lmKGl0LnR5cGU9PT1UMSYmdC5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpPT09ITF8fHM9PT0hMSYmaXQudHlwZT09PWxTJiZ0LmhhcygiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKT09PSExKXJldHVybjsoaXQuYW5pc290cm9weT4xfHxvLmdldChpdCkuX19jdXJyZW50QW5pc290cm9weSkmJihuLnRleFBhcmFtZXRlcmYoZnQsS2UuVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsTWF0aC5taW4oaXQuYW5pc290cm9weSxpLmdldE1heEFuaXNvdHJvcHkoKSkpLG8uZ2V0KGl0KS5fX2N1cnJlbnRBbmlzb3Ryb3B5PWl0LmFuaXNvdHJvcHkpfX1mdW5jdGlvbiBjZShmdCxpdCl7ZnQuX193ZWJnbEluaXQ9PT12b2lkIDAmJihmdC5fX3dlYmdsSW5pdD0hMCxpdC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixrdCksZnQuX193ZWJnbFRleHR1cmU9bi5jcmVhdGVUZXh0dXJlKCksci5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24gTHQoZnQsaXQsZ2Upe2xldCBLZT0zNTUzO2l0LmlzRGF0YVRleHR1cmUyREFycmF5JiYoS2U9MzU4NjYpLGl0LmlzRGF0YVRleHR1cmUzRCYmKEtlPTMyODc5KSxjZShmdCxpdCksZS5hY3RpdmVUZXh0dXJlKDMzOTg0K2dlKSxlLmJpbmRUZXh0dXJlKEtlLGZ0Ll9fd2ViZ2xUZXh0dXJlKSxuLnBpeGVsU3RvcmVpKDM3NDQwLGl0LmZsaXBZKSxuLnBpeGVsU3RvcmVpKDM3NDQxLGl0LnByZW11bHRpcGx5QWxwaGEpLG4ucGl4ZWxTdG9yZWkoMzMxNyxpdC51bnBhY2tBbGlnbm1lbnQpLG4ucGl4ZWxTdG9yZWkoMzc0NDMsMCk7bGV0IEhuPUUoaXQpJiZSKGl0LmltYWdlKT09PSExLGRlPWIoaXQuaW1hZ2UsSG4sITEsbSk7ZGU9Qm4oaXQsZGUpO2xldCBYbj1SKGRlKXx8cyxWbj1hLmNvbnZlcnQoaXQuZm9ybWF0LGl0LmVuY29kaW5nKSx0bj1hLmNvbnZlcnQoaXQudHlwZSksY249SihpdC5pbnRlcm5hbEZvcm1hdCxWbix0bixpdC5lbmNvZGluZyxpdC5pc1ZpZGVvVGV4dHVyZSk7amUoS2UsaXQsWG4pO2xldCB1byx4dD1pdC5taXBtYXBzLEFuPXMmJml0LmlzVmlkZW9UZXh0dXJlIT09ITAsQmU9ZnQuX192ZXJzaW9uPT09dm9pZCAwLHJvPUV0KGl0LGRlLFhuKTtpZihpdC5pc0RlcHRoVGV4dHVyZSljbj02NDAyLHM/aXQudHlwZT09PVQxP2NuPTM2MDEyOml0LnR5cGU9PT1VSD9jbj0zMzE5MDppdC50eXBlPT09Y1M/Y249MzUwNTY6Y249MzMxODk6aXQudHlwZT09PVQxJiZjb25zb2xlLmVycm9yKCJXZWJHTFJlbmRlcmVyOiBGbG9hdGluZyBwb2ludCBkZXB0aCB0ZXh0dXJlIHJlcXVpcmVzIFdlYkdMMi4iKSxpdC5mb3JtYXQ9PT1EMSYmY249PT02NDAyJiZpdC50eXBlIT09bzQmJml0LnR5cGUhPT1VSCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGl0LnR5cGU9bzQsdG49YS5jb252ZXJ0KGl0LnR5cGUpKSxpdC5mb3JtYXQ9PT1kUyYmY249PT02NDAyJiYoY249MzQwNDEsaXQudHlwZSE9PWNTJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRJbnQyNDhUeXBlIGZvciBEZXB0aFN0ZW5jaWxGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGl0LnR5cGU9Y1MsdG49YS5jb252ZXJ0KGl0LnR5cGUpKSksQW4mJkJlP2UudGV4U3RvcmFnZTJEKDM1NTMsMSxjbixkZS53aWR0aCxkZS5oZWlnaHQpOmUudGV4SW1hZ2UyRCgzNTUzLDAsY24sZGUud2lkdGgsZGUuaGVpZ2h0LDAsVm4sdG4sbnVsbCk7ZWxzZSBpZihpdC5pc0RhdGFUZXh0dXJlKWlmKHh0Lmxlbmd0aD4wJiZYbil7QW4mJkJlJiZlLnRleFN0b3JhZ2UyRCgzNTUzLHJvLGNuLHh0WzBdLndpZHRoLHh0WzBdLmhlaWdodCk7Zm9yKGxldCBoZT0wLHFuPXh0Lmxlbmd0aDtoZTxxbjtoZSsrKXVvPXh0W2hlXSxBbj9lLnRleFN1YkltYWdlMkQoMzU1MywwLDAsMCx1by53aWR0aCx1by5oZWlnaHQsVm4sdG4sdW8uZGF0YSk6ZS50ZXhJbWFnZTJEKDM1NTMsaGUsY24sdW8ud2lkdGgsdW8uaGVpZ2h0LDAsVm4sdG4sdW8uZGF0YSk7aXQuZ2VuZXJhdGVNaXBtYXBzPSExfWVsc2UgQW4/KEJlJiZlLnRleFN0b3JhZ2UyRCgzNTUzLHJvLGNuLGRlLndpZHRoLGRlLmhlaWdodCksZS50ZXhTdWJJbWFnZTJEKDM1NTMsMCwwLDAsZGUud2lkdGgsZGUuaGVpZ2h0LFZuLHRuLGRlLmRhdGEpKTplLnRleEltYWdlMkQoMzU1MywwLGNuLGRlLndpZHRoLGRlLmhlaWdodCwwLFZuLHRuLGRlLmRhdGEpO2Vsc2UgaWYoaXQuaXNDb21wcmVzc2VkVGV4dHVyZSl7QW4mJkJlJiZlLnRleFN0b3JhZ2UyRCgzNTUzLHJvLGNuLHh0WzBdLndpZHRoLHh0WzBdLmhlaWdodCk7Zm9yKGxldCBoZT0wLHFuPXh0Lmxlbmd0aDtoZTxxbjtoZSsrKXVvPXh0W2hlXSxpdC5mb3JtYXQhPT1SZj9WbiE9PW51bGw/QW4/ZS5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgzNTUzLGhlLDAsMCx1by53aWR0aCx1by5oZWlnaHQsVm4sdW8uZGF0YSk6ZS5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLGhlLGNuLHVvLndpZHRoLHVvLmhlaWdodCwwLHVvLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnVwbG9hZFRleHR1cmUoKSIpOkFuP2UudGV4U3ViSW1hZ2UyRCgzNTUzLGhlLDAsMCx1by53aWR0aCx1by5oZWlnaHQsVm4sdG4sdW8uZGF0YSk6ZS50ZXhJbWFnZTJEKDM1NTMsaGUsY24sdW8ud2lkdGgsdW8uaGVpZ2h0LDAsVm4sdG4sdW8uZGF0YSl9ZWxzZSBpZihpdC5pc0RhdGFUZXh0dXJlMkRBcnJheSlBbj8oQmUmJmUudGV4U3RvcmFnZTNEKDM1ODY2LHJvLGNuLGRlLndpZHRoLGRlLmhlaWdodCxkZS5kZXB0aCksZS50ZXhTdWJJbWFnZTNEKDM1ODY2LDAsMCwwLDAsZGUud2lkdGgsZGUuaGVpZ2h0LGRlLmRlcHRoLFZuLHRuLGRlLmRhdGEpKTplLnRleEltYWdlM0QoMzU4NjYsMCxjbixkZS53aWR0aCxkZS5oZWlnaHQsZGUuZGVwdGgsMCxWbix0bixkZS5kYXRhKTtlbHNlIGlmKGl0LmlzRGF0YVRleHR1cmUzRClBbj8oQmUmJmUudGV4U3RvcmFnZTNEKDMyODc5LHJvLGNuLGRlLndpZHRoLGRlLmhlaWdodCxkZS5kZXB0aCksZS50ZXhTdWJJbWFnZTNEKDMyODc5LDAsMCwwLDAsZGUud2lkdGgsZGUuaGVpZ2h0LGRlLmRlcHRoLFZuLHRuLGRlLmRhdGEpKTplLnRleEltYWdlM0QoMzI4NzksMCxjbixkZS53aWR0aCxkZS5oZWlnaHQsZGUuZGVwdGgsMCxWbix0bixkZS5kYXRhKTtlbHNlIGlmKGl0LmlzRnJhbWVidWZmZXJUZXh0dXJlKUFuJiZCZT9lLnRleFN0b3JhZ2UyRCgzNTUzLHJvLGNuLGRlLndpZHRoLGRlLmhlaWdodCk6ZS50ZXhJbWFnZTJEKDM1NTMsMCxjbixkZS53aWR0aCxkZS5oZWlnaHQsMCxWbix0bixudWxsKTtlbHNlIGlmKHh0Lmxlbmd0aD4wJiZYbil7QW4mJkJlJiZlLnRleFN0b3JhZ2UyRCgzNTUzLHJvLGNuLHh0WzBdLndpZHRoLHh0WzBdLmhlaWdodCk7Zm9yKGxldCBoZT0wLHFuPXh0Lmxlbmd0aDtoZTxxbjtoZSsrKXVvPXh0W2hlXSxBbj9lLnRleFN1YkltYWdlMkQoMzU1MyxoZSwwLDAsVm4sdG4sdW8pOmUudGV4SW1hZ2UyRCgzNTUzLGhlLGNuLFZuLHRuLHVvKTtpdC5nZW5lcmF0ZU1pcG1hcHM9ITF9ZWxzZSBBbj8oQmUmJmUudGV4U3RvcmFnZTJEKDM1NTMscm8sY24sZGUud2lkdGgsZGUuaGVpZ2h0KSxlLnRleFN1YkltYWdlMkQoMzU1MywwLDAsMCxWbix0bixkZSkpOmUudGV4SW1hZ2UyRCgzNTUzLDAsY24sVm4sdG4sZGUpO2ooaXQsWG4pJiZydChLZSksZnQuX192ZXJzaW9uPWl0LnZlcnNpb24saXQub25VcGRhdGUmJml0Lm9uVXBkYXRlKGl0KX1mdW5jdGlvbiBQbihmdCxpdCxnZSl7aWYoaXQuaW1hZ2UubGVuZ3RoIT09NilyZXR1cm47Y2UoZnQsaXQpLGUuYWN0aXZlVGV4dHVyZSgzMzk4NCtnZSksZS5iaW5kVGV4dHVyZSgzNDA2NyxmdC5fX3dlYmdsVGV4dHVyZSksbi5waXhlbFN0b3JlaSgzNzQ0MCxpdC5mbGlwWSksbi5waXhlbFN0b3JlaSgzNzQ0MSxpdC5wcmVtdWx0aXBseUFscGhhKSxuLnBpeGVsU3RvcmVpKDMzMTcsaXQudW5wYWNrQWxpZ25tZW50KSxuLnBpeGVsU3RvcmVpKDM3NDQzLDApO2xldCBLZT1pdCYmKGl0LmlzQ29tcHJlc3NlZFRleHR1cmV8fGl0LmltYWdlWzBdLmlzQ29tcHJlc3NlZFRleHR1cmUpLEhuPWl0LmltYWdlWzBdJiZpdC5pbWFnZVswXS5pc0RhdGFUZXh0dXJlLGRlPVtdO2ZvcihsZXQgaGU9MDtoZTw2O2hlKyspIUtlJiYhSG4/ZGVbaGVdPWIoaXQuaW1hZ2VbaGVdLCExLCEwLGMpOmRlW2hlXT1Ibj9pdC5pbWFnZVtoZV0uaW1hZ2U6aXQuaW1hZ2VbaGVdLGRlW2hlXT1CbihpdCxkZVtoZV0pO2xldCBYbj1kZVswXSxWbj1SKFhuKXx8cyx0bj1hLmNvbnZlcnQoaXQuZm9ybWF0LGl0LmVuY29kaW5nKSxjbj1hLmNvbnZlcnQoaXQudHlwZSksdW89SihpdC5pbnRlcm5hbEZvcm1hdCx0bixjbixpdC5lbmNvZGluZykseHQ9cyYmaXQuaXNWaWRlb1RleHR1cmUhPT0hMCxBbj1mdC5fX3ZlcnNpb249PT12b2lkIDAsQmU9RXQoaXQsWG4sVm4pO2plKDM0MDY3LGl0LFZuKTtsZXQgcm87aWYoS2Upe3h0JiZBbiYmZS50ZXhTdG9yYWdlMkQoMzQwNjcsQmUsdW8sWG4ud2lkdGgsWG4uaGVpZ2h0KTtmb3IobGV0IGhlPTA7aGU8NjtoZSsrKXtybz1kZVtoZV0ubWlwbWFwcztmb3IobGV0IHFuPTA7cW48cm8ubGVuZ3RoO3FuKyspe2xldCBabz1yb1txbl07aXQuZm9ybWF0IT09UmY/dG4hPT1udWxsP3h0P2UuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoMzQwNjkraGUscW4sMCwwLFpvLndpZHRoLFpvLmhlaWdodCx0bixaby5kYXRhKTplLmNvbXByZXNzZWRUZXhJbWFnZTJEKDM0MDY5K2hlLHFuLHVvLFpvLndpZHRoLFpvLmhlaWdodCwwLFpvLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnNldFRleHR1cmVDdWJlKCkiKTp4dD9lLnRleFN1YkltYWdlMkQoMzQwNjkraGUscW4sMCwwLFpvLndpZHRoLFpvLmhlaWdodCx0bixjbixaby5kYXRhKTplLnRleEltYWdlMkQoMzQwNjkraGUscW4sdW8sWm8ud2lkdGgsWm8uaGVpZ2h0LDAsdG4sY24sWm8uZGF0YSl9fX1lbHNle3JvPWl0Lm1pcG1hcHMseHQmJkFuJiYocm8ubGVuZ3RoPjAmJkJlKyssZS50ZXhTdG9yYWdlMkQoMzQwNjcsQmUsdW8sZGVbMF0ud2lkdGgsZGVbMF0uaGVpZ2h0KSk7Zm9yKGxldCBoZT0wO2hlPDY7aGUrKylpZihIbil7eHQ/ZS50ZXhTdWJJbWFnZTJEKDM0MDY5K2hlLDAsMCwwLGRlW2hlXS53aWR0aCxkZVtoZV0uaGVpZ2h0LHRuLGNuLGRlW2hlXS5kYXRhKTplLnRleEltYWdlMkQoMzQwNjkraGUsMCx1byxkZVtoZV0ud2lkdGgsZGVbaGVdLmhlaWdodCwwLHRuLGNuLGRlW2hlXS5kYXRhKTtmb3IobGV0IHFuPTA7cW48cm8ubGVuZ3RoO3FuKyspe2xldCBUYT1yb1txbl0uaW1hZ2VbaGVdLmltYWdlO3h0P2UudGV4U3ViSW1hZ2UyRCgzNDA2OStoZSxxbisxLDAsMCxUYS53aWR0aCxUYS5oZWlnaHQsdG4sY24sVGEuZGF0YSk6ZS50ZXhJbWFnZTJEKDM0MDY5K2hlLHFuKzEsdW8sVGEud2lkdGgsVGEuaGVpZ2h0LDAsdG4sY24sVGEuZGF0YSl9fWVsc2V7eHQ/ZS50ZXhTdWJJbWFnZTJEKDM0MDY5K2hlLDAsMCwwLHRuLGNuLGRlW2hlXSk6ZS50ZXhJbWFnZTJEKDM0MDY5K2hlLDAsdW8sdG4sY24sZGVbaGVdKTtmb3IobGV0IHFuPTA7cW48cm8ubGVuZ3RoO3FuKyspe2xldCBabz1yb1txbl07eHQ/ZS50ZXhTdWJJbWFnZTJEKDM0MDY5K2hlLHFuKzEsMCwwLHRuLGNuLFpvLmltYWdlW2hlXSk6ZS50ZXhJbWFnZTJEKDM0MDY5K2hlLHFuKzEsdW8sdG4sY24sWm8uaW1hZ2VbaGVdKX19fWooaXQsVm4pJiZydCgzNDA2NyksZnQuX192ZXJzaW9uPWl0LnZlcnNpb24saXQub25VcGRhdGUmJml0Lm9uVXBkYXRlKGl0KX1mdW5jdGlvbiBWZShmdCxpdCxnZSxLZSxIbil7bGV0IGRlPWEuY29udmVydChnZS5mb3JtYXQsZ2UuZW5jb2RpbmcpLFhuPWEuY29udmVydChnZS50eXBlKSxWbj1KKGdlLmludGVybmFsRm9ybWF0LGRlLFhuLGdlLmVuY29kaW5nKTtvLmdldChpdCkuX19oYXNFeHRlcm5hbFRleHR1cmVzfHwoSG49PT0zMjg3OXx8SG49PT0zNTg2Nj9lLnRleEltYWdlM0QoSG4sMCxWbixpdC53aWR0aCxpdC5oZWlnaHQsaXQuZGVwdGgsMCxkZSxYbixudWxsKTplLnRleEltYWdlMkQoSG4sMCxWbixpdC53aWR0aCxpdC5oZWlnaHQsMCxkZSxYbixudWxsKSksZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZnQpLGl0LnVzZVJlbmRlclRvVGV4dHVyZT9nLmZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVFWFQoMzYxNjAsS2UsSG4sby5nZXQoZ2UpLl9fd2ViZ2xUZXh0dXJlLDAsVWUoaXQpKTpuLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLEtlLEhuLG8uZ2V0KGdlKS5fX3dlYmdsVGV4dHVyZSwwKSxlLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1mdW5jdGlvbiBEZShmdCxpdCxnZSl7aWYobi5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLGZ0KSxpdC5kZXB0aEJ1ZmZlciYmIWl0LnN0ZW5jaWxCdWZmZXIpe2xldCBLZT0zMzE4OTtpZihnZXx8aXQudXNlUmVuZGVyVG9UZXh0dXJlKXtsZXQgSG49aXQuZGVwdGhUZXh0dXJlO0huJiZIbi5pc0RlcHRoVGV4dHVyZSYmKEhuLnR5cGU9PT1UMT9LZT0zNjAxMjpIbi50eXBlPT09VUgmJihLZT0zMzE5MCkpO2xldCBkZT1VZShpdCk7aXQudXNlUmVuZGVyVG9UZXh0dXJlP2cucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKDM2MTYxLGRlLEtlLGl0LndpZHRoLGl0LmhlaWdodCk6bi5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZGUsS2UsaXQud2lkdGgsaXQuaGVpZ2h0KX1lbHNlIG4ucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSxLZSxpdC53aWR0aCxpdC5oZWlnaHQpO24uZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwOTYsMzYxNjEsZnQpfWVsc2UgaWYoaXQuZGVwdGhCdWZmZXImJml0LnN0ZW5jaWxCdWZmZXIpe2xldCBLZT1VZShpdCk7Z2UmJml0LnVzZVJlbmRlcmJ1ZmZlcj9uLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxLZSwzNTA1NixpdC53aWR0aCxpdC5oZWlnaHQpOml0LnVzZVJlbmRlclRvVGV4dHVyZT9nLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCgzNjE2MSxLZSwzNTA1NixpdC53aWR0aCxpdC5oZWlnaHQpOm4ucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSwzNDA0MSxpdC53aWR0aCxpdC5oZWlnaHQpLG4uZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsZnQpfWVsc2V7bGV0IEtlPWl0LmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM9PT0hMD9pdC50ZXh0dXJlWzBdOml0LnRleHR1cmUsSG49YS5jb252ZXJ0KEtlLmZvcm1hdCxLZS5lbmNvZGluZyksZGU9YS5jb252ZXJ0KEtlLnR5cGUpLFhuPUooS2UuaW50ZXJuYWxGb3JtYXQsSG4sZGUsS2UuZW5jb2RpbmcpLFZuPVVlKGl0KTtnZSYmaXQudXNlUmVuZGVyYnVmZmVyP24ucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLFZuLFhuLGl0LndpZHRoLGl0LmhlaWdodCk6aXQudXNlUmVuZGVyVG9UZXh0dXJlP2cucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKDM2MTYxLFZuLFhuLGl0LndpZHRoLGl0LmhlaWdodCk6bi5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLFhuLGl0LndpZHRoLGl0LmhlaWdodCl9bi5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIHF0KGZ0LGl0KXtpZihpdCYmaXQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpdGhyb3cgbmV3IEVycm9yKCJEZXB0aCBUZXh0dXJlIHdpdGggY3ViZSByZW5kZXIgdGFyZ2V0cyBpcyBub3Qgc3VwcG9ydGVkIik7aWYoZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZnQpLCEoaXQuZGVwdGhUZXh0dXJlJiZpdC5kZXB0aFRleHR1cmUuaXNEZXB0aFRleHR1cmUpKXRocm93IG5ldyBFcnJvcigicmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFRIUkVFLkRlcHRoVGV4dHVyZSIpOyghby5nZXQoaXQuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZXx8aXQuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoIT09aXQud2lkdGh8fGl0LmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQhPT1pdC5oZWlnaHQpJiYoaXQuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPWl0LndpZHRoLGl0LmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQ9aXQuaGVpZ2h0LGl0LmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksdXQoaXQuZGVwdGhUZXh0dXJlLDApO2xldCBLZT1vLmdldChpdC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlLEhuPVVlKGl0KTtpZihpdC5kZXB0aFRleHR1cmUuZm9ybWF0PT09RDEpaXQudXNlUmVuZGVyVG9UZXh0dXJlP2cuZnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCgzNjE2MCwzNjA5NiwzNTUzLEtlLDAsSG4pOm4uZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1MyxLZSwwKTtlbHNlIGlmKGl0LmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1kUylpdC51c2VSZW5kZXJUb1RleHR1cmU/Zy5mcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlRVhUKDM2MTYwLDMzMzA2LDM1NTMsS2UsMCxIbik6bi5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzMzMwNiwzNTUzLEtlLDApO2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKX1mdW5jdGlvbiBMZShmdCl7bGV0IGl0PW8uZ2V0KGZ0KSxnZT1mdC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD09PSEwO2lmKGZ0LmRlcHRoVGV4dHVyZSYmIWl0Ll9fYXV0b0FsbG9jYXRlRGVwdGhCdWZmZXIpe2lmKGdlKXRocm93IG5ldyBFcnJvcigidGFyZ2V0LmRlcHRoVGV4dHVyZSBub3Qgc3VwcG9ydGVkIGluIEN1YmUgcmVuZGVyIHRhcmdldHMiKTtxdChpdC5fX3dlYmdsRnJhbWVidWZmZXIsZnQpfWVsc2UgaWYoZ2Upe2l0Ll9fd2ViZ2xEZXB0aGJ1ZmZlcj1bXTtmb3IobGV0IEtlPTA7S2U8NjtLZSsrKWUuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGl0Ll9fd2ViZ2xGcmFtZWJ1ZmZlcltLZV0pLGl0Ll9fd2ViZ2xEZXB0aGJ1ZmZlcltLZV09bi5jcmVhdGVSZW5kZXJidWZmZXIoKSxEZShpdC5fX3dlYmdsRGVwdGhidWZmZXJbS2VdLGZ0LCExKX1lbHNlIGUuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGl0Ll9fd2ViZ2xGcmFtZWJ1ZmZlciksaXQuX193ZWJnbERlcHRoYnVmZmVyPW4uY3JlYXRlUmVuZGVyYnVmZmVyKCksRGUoaXQuX193ZWJnbERlcHRoYnVmZmVyLGZ0LCExKTtlLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1mdW5jdGlvbiBIZShmdCxpdCxnZSl7bGV0IEtlPW8uZ2V0KGZ0KTtpdCE9PXZvaWQgMCYmVmUoS2UuX193ZWJnbEZyYW1lYnVmZmVyLGZ0LGZ0LnRleHR1cmUsMzYwNjQsMzU1MyksZ2UhPT12b2lkIDAmJkxlKGZ0KX1mdW5jdGlvbiBodChmdCl7bGV0IGl0PWZ0LnRleHR1cmUsZ2U9by5nZXQoZnQpLEtlPW8uZ2V0KGl0KTtmdC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIix3KSxmdC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzIT09ITAmJihLZS5fX3dlYmdsVGV4dHVyZT09PXZvaWQgMCYmKEtlLl9fd2ViZ2xUZXh0dXJlPW4uY3JlYXRlVGV4dHVyZSgpKSxLZS5fX3ZlcnNpb249aXQudmVyc2lvbixyLm1lbW9yeS50ZXh0dXJlcysrKTtsZXQgSG49ZnQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ9PT0hMCxkZT1mdC5pc1dlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzPT09ITAsWG49aXQuaXNEYXRhVGV4dHVyZTNEfHxpdC5pc0RhdGFUZXh0dXJlMkRBcnJheSxWbj1SKGZ0KXx8cztpZihIbil7Z2UuX193ZWJnbEZyYW1lYnVmZmVyPVtdO2ZvcihsZXQgdG49MDt0bjw2O3RuKyspZ2UuX193ZWJnbEZyYW1lYnVmZmVyW3RuXT1uLmNyZWF0ZUZyYW1lYnVmZmVyKCl9ZWxzZSBpZihnZS5fX3dlYmdsRnJhbWVidWZmZXI9bi5jcmVhdGVGcmFtZWJ1ZmZlcigpLGRlKWlmKGkuZHJhd0J1ZmZlcnMpe2xldCB0bj1mdC50ZXh0dXJlO2ZvcihsZXQgY249MCx1bz10bi5sZW5ndGg7Y248dW87Y24rKyl7bGV0IHh0PW8uZ2V0KHRuW2NuXSk7eHQuX193ZWJnbFRleHR1cmU9PT12b2lkIDAmJih4dC5fX3dlYmdsVGV4dHVyZT1uLmNyZWF0ZVRleHR1cmUoKSxyLm1lbW9yeS50ZXh0dXJlcysrKX19ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlwbGVSZW5kZXJUYXJnZXRzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIgb3IgV0VCR0xfZHJhd19idWZmZXJzIGV4dGVuc2lvbi4iKTtlbHNlIGlmKGZ0LnVzZVJlbmRlcmJ1ZmZlcilpZihzKXtnZS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI9bi5jcmVhdGVGcmFtZWJ1ZmZlcigpLGdlLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcj1uLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLG4uYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxnZS5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpO2xldCB0bj1hLmNvbnZlcnQoaXQuZm9ybWF0LGl0LmVuY29kaW5nKSxjbj1hLmNvbnZlcnQoaXQudHlwZSksdW89SihpdC5pbnRlcm5hbEZvcm1hdCx0bixjbixpdC5lbmNvZGluZykseHQ9VWUoZnQpO24ucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLHh0LHVvLGZ0LndpZHRoLGZ0LmhlaWdodCksZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZ2UuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSxuLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLGdlLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksbi5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLGZ0LmRlcHRoQnVmZmVyJiYoZ2UuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPW4uY3JlYXRlUmVuZGVyYnVmZmVyKCksRGUoZ2UuX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyLGZ0LCEwKSksZS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihIbil7ZS5iaW5kVGV4dHVyZSgzNDA2NyxLZS5fX3dlYmdsVGV4dHVyZSksamUoMzQwNjcsaXQsVm4pO2ZvcihsZXQgdG49MDt0bjw2O3RuKyspVmUoZ2UuX193ZWJnbEZyYW1lYnVmZmVyW3RuXSxmdCxpdCwzNjA2NCwzNDA2OSt0bik7aihpdCxWbikmJnJ0KDM0MDY3KSxlLnVuYmluZFRleHR1cmUoKX1lbHNlIGlmKGRlKXtsZXQgdG49ZnQudGV4dHVyZTtmb3IobGV0IGNuPTAsdW89dG4ubGVuZ3RoO2NuPHVvO2NuKyspe2xldCB4dD10bltjbl0sQW49by5nZXQoeHQpO2UuYmluZFRleHR1cmUoMzU1MyxBbi5fX3dlYmdsVGV4dHVyZSksamUoMzU1Myx4dCxWbiksVmUoZ2UuX193ZWJnbEZyYW1lYnVmZmVyLGZ0LHh0LDM2MDY0K2NuLDM1NTMpLGooeHQsVm4pJiZydCgzNTUzKX1lLnVuYmluZFRleHR1cmUoKX1lbHNle2xldCB0bj0zNTUzO1huJiYocz90bj1pdC5pc0RhdGFUZXh0dXJlM0Q/MzI4Nzk6MzU4NjY6Y29uc29sZS53YXJuKCJUSFJFRS5EYXRhVGV4dHVyZTNEIGFuZCBUSFJFRS5EYXRhVGV4dHVyZTJEQXJyYXkgb25seSBzdXBwb3J0ZWQgd2l0aCBXZWJHTDIuIikpLGUuYmluZFRleHR1cmUodG4sS2UuX193ZWJnbFRleHR1cmUpLGplKHRuLGl0LFZuKSxWZShnZS5fX3dlYmdsRnJhbWVidWZmZXIsZnQsaXQsMzYwNjQsdG4pLGooaXQsVm4pJiZydCh0biksZS51bmJpbmRUZXh0dXJlKCl9ZnQuZGVwdGhCdWZmZXImJkxlKGZ0KX1mdW5jdGlvbiBSZShmdCl7bGV0IGl0PVIoZnQpfHxzLGdlPWZ0LmlzV2ViR0xNdWx0aXBsZVJlbmRlclRhcmdldHM9PT0hMD9mdC50ZXh0dXJlOltmdC50ZXh0dXJlXTtmb3IobGV0IEtlPTAsSG49Z2UubGVuZ3RoO0tlPEhuO0tlKyspe2xldCBkZT1nZVtLZV07aWYoaihkZSxpdCkpe2xldCBYbj1mdC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLFZuPW8uZ2V0KGRlKS5fX3dlYmdsVGV4dHVyZTtlLmJpbmRUZXh0dXJlKFhuLFZuKSxydChYbiksZS51bmJpbmRUZXh0dXJlKCl9fX1mdW5jdGlvbiBmZShmdCl7aWYoZnQudXNlUmVuZGVyYnVmZmVyKWlmKHMpe2xldCBpdD1mdC53aWR0aCxnZT1mdC5oZWlnaHQsS2U9MTYzODQsSG49WzM2MDY0XSxkZT1mdC5zdGVuY2lsQnVmZmVyPzMzMzA2OjM2MDk2O2Z0LmRlcHRoQnVmZmVyJiZIbi5wdXNoKGRlKSxmdC5pZ25vcmVEZXB0aEZvck11bHRpc2FtcGxlQ29weXx8KGZ0LmRlcHRoQnVmZmVyJiYoS2V8PTI1NiksZnQuc3RlbmNpbEJ1ZmZlciYmKEtlfD0xMDI0KSk7bGV0IFhuPW8uZ2V0KGZ0KTtlLmJpbmRGcmFtZWJ1ZmZlcigzNjAwOCxYbi5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpLGUuYmluZEZyYW1lYnVmZmVyKDM2MDA5LFhuLl9fd2ViZ2xGcmFtZWJ1ZmZlciksZnQuaWdub3JlRGVwdGhGb3JNdWx0aXNhbXBsZUNvcHkmJihuLmludmFsaWRhdGVGcmFtZWJ1ZmZlcigzNjAwOCxbZGVdKSxuLmludmFsaWRhdGVGcmFtZWJ1ZmZlcigzNjAwOSxbZGVdKSksbi5ibGl0RnJhbWVidWZmZXIoMCwwLGl0LGdlLDAsMCxpdCxnZSxLZSw5NzI4KSxuLmludmFsaWRhdGVGcmFtZWJ1ZmZlcigzNjAwOCxIbiksZS5iaW5kRnJhbWVidWZmZXIoMzYwMDgsbnVsbCksZS5iaW5kRnJhbWVidWZmZXIoMzYwMDksWG4uX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpfWZ1bmN0aW9uIFVlKGZ0KXtyZXR1cm4gcyYmKGZ0LnVzZVJlbmRlcmJ1ZmZlcnx8ZnQudXNlUmVuZGVyVG9UZXh0dXJlKT9NYXRoLm1pbihmLGZ0LnNhbXBsZXMpOjB9ZnVuY3Rpb24gRmUoZnQpe2xldCBpdD1yLnJlbmRlci5mcmFtZTtfLmdldChmdCkhPT1pdCYmKF8uc2V0KGZ0LGl0KSxmdC51cGRhdGUoKSl9ZnVuY3Rpb24gQm4oZnQsaXQpe2xldCBnZT1mdC5lbmNvZGluZyxLZT1mdC5mb3JtYXQsSG49ZnQudHlwZTtyZXR1cm4gZnQuaXNDb21wcmVzc2VkVGV4dHVyZT09PSEwfHxmdC5pc1ZpZGVvVGV4dHVyZT09PSEwfHxmdC5mb3JtYXQ9PT1VV3x8Z2UhPT1MeCYmKGdlPT09TXI/cz09PSExP3QuaGFzKCJFWFRfc1JHQiIpPT09ITAmJktlPT09UmY/KGZ0LmZvcm1hdD1VVyxmdC5taW5GaWx0ZXI9d20sZnQuZ2VuZXJhdGVNaXBtYXBzPSExKTppdD1aUC5zUkdCVG9MaW5lYXIoaXQpOihLZSE9PVJmfHxIbiE9PXp4KSYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBzUkdCIGVuY29kZWQgdGV4dHVyZXMgaGF2ZSB0byB1c2UgUkdCQUZvcm1hdCBhbmQgVW5zaWduZWRCeXRlVHlwZS4iKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFRleHR1cmVzOiBVbnN1cHBvcnRlZCB0ZXh0dXJlIGVuY29kaW5nOiIsZ2UpKSxpdH1sZXQgd249ITEscW89ITE7ZnVuY3Rpb24gbWEoZnQsaXQpe2Z0JiZmdC5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYod249PT0hMSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLHduPSEwKSxmdD1mdC50ZXh0dXJlKSx1dChmdCxpdCl9ZnVuY3Rpb24gamkoZnQsaXQpe2Z0JiZmdC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmKHFvPT09ITEmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXMuc2FmZVNldFRleHR1cmVDdWJlOiBkb24ndCB1c2UgY3ViZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIikscW89ITApLGZ0PWZ0LnRleHR1cmUpLFJ0KGZ0LGl0KX10aGlzLmFsbG9jYXRlVGV4dHVyZVVuaXQ9b3QsdGhpcy5yZXNldFRleHR1cmVVbml0cz1idCx0aGlzLnNldFRleHR1cmUyRD11dCx0aGlzLnNldFRleHR1cmUyREFycmF5PWd0LHRoaXMuc2V0VGV4dHVyZTNEPVd0LHRoaXMuc2V0VGV4dHVyZUN1YmU9UnQsdGhpcy5yZWJpbmRUZXh0dXJlcz1IZSx0aGlzLnNldHVwUmVuZGVyVGFyZ2V0PWh0LHRoaXMudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwPVJlLHRoaXMudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ZmUsdGhpcy5zZXR1cERlcHRoUmVuZGVyYnVmZmVyPUxlLHRoaXMuc2V0dXBGcmFtZUJ1ZmZlclRleHR1cmU9VmUsdGhpcy5zYWZlU2V0VGV4dHVyZTJEPW1hLHRoaXMuc2FmZVNldFRleHR1cmVDdWJlPWppfWZ1bmN0aW9uIEtZdChuLHQsZSl7bGV0IG89ZS5pc1dlYkdMMjtmdW5jdGlvbiBpKGEscj1udWxsKXtsZXQgcztpZihhPT09engpcmV0dXJuIDUxMjE7aWYoYT09PW9CdClyZXR1cm4gMzI4MTk7aWYoYT09PWlCdClyZXR1cm4gMzI4MjA7aWYoYT09PXRCdClyZXR1cm4gNTEyMDtpZihhPT09ZUJ0KXJldHVybiA1MTIyO2lmKGE9PT1vNClyZXR1cm4gNTEyMztpZihhPT09bkJ0KXJldHVybiA1MTI0O2lmKGE9PT1VSClyZXR1cm4gNTEyNTtpZihhPT09VDEpcmV0dXJuIDUxMjY7aWYoYT09PWxTKXJldHVybiBvPzUxMzE6KHM9dC5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSxzIT09bnVsbD9zLkhBTEZfRkxPQVRfT0VTOm51bGwpO2lmKGE9PT1hQnQpcmV0dXJuIDY0MDY7aWYoYT09PVJmKXJldHVybiA2NDA4O2lmKGE9PT1yQnQpcmV0dXJuIDY0MDk7aWYoYT09PXNCdClyZXR1cm4gNjQxMDtpZihhPT09RDEpcmV0dXJuIDY0MDI7aWYoYT09PWRTKXJldHVybiAzNDA0MTtpZihhPT09bEJ0KXJldHVybiA2NDAzO2lmKGE9PT1VVylyZXR1cm4gcz10LmdldCgiRVhUX3NSR0IiKSxzIT09bnVsbD9zLlNSR0JfQUxQSEFfRVhUOm51bGw7aWYoYT09PWNCdClyZXR1cm4gMzYyNDQ7aWYoYT09PW1CdClyZXR1cm4gMzMzMTk7aWYoYT09PWZCdClyZXR1cm4gMzMzMjA7aWYoYT09PXBCdClyZXR1cm4gMzYyNDk7aWYoYT09PSQ5fHxhPT09dFd8fGE9PT1lV3x8YT09PW5XKWlmKHI9PT1NcilpZihzPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0Y19zcmdiIikscyE9PW51bGwpe2lmKGE9PT0kOSlyZXR1cm4gcy5DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDtpZihhPT09dFcpcmV0dXJuIHMuQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ7aWYoYT09PWVXKXJldHVybiBzLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUO2lmKGE9PT1uVylyZXR1cm4gcy5DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVH1lbHNlIHJldHVybiBudWxsO2Vsc2UgaWYocz10LmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSxzIT09bnVsbCl7aWYoYT09PSQ5KXJldHVybiBzLkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ7aWYoYT09PXRXKXJldHVybiBzLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUO2lmKGE9PT1lVylyZXR1cm4gcy5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDtpZihhPT09blcpcmV0dXJuIHMuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFR9ZWxzZSByZXR1cm4gbnVsbDtpZihhPT09JHB0fHxhPT09dGR0fHxhPT09ZWR0fHxhPT09bmR0KWlmKHM9dC5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpLHMhPT1udWxsKXtpZihhPT09JHB0KXJldHVybiBzLkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc7aWYoYT09PXRkdClyZXR1cm4gcy5DT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HO2lmKGE9PT1lZHQpcmV0dXJuIHMuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc7aWYoYT09PW5kdClyZXR1cm4gcy5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNR31lbHNlIHJldHVybiBudWxsO2lmKGE9PT1kQnQpcmV0dXJuIHM9dC5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIikscyE9PW51bGw/cy5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOm51bGw7aWYoYT09PW9kdHx8YT09PWlkdClpZihzPXQuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIikscyE9PW51bGwpe2lmKGE9PT1vZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfRVRDMjpzLkNPTVBSRVNTRURfUkdCOF9FVEMyO2lmKGE9PT1pZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOnMuQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQ31lbHNlIHJldHVybiBudWxsO2lmKGE9PT1hZHR8fGE9PT1yZHR8fGE9PT1zZHR8fGE9PT1sZHR8fGE9PT1jZHR8fGE9PT1tZHR8fGE9PT1mZHR8fGE9PT1wZHR8fGE9PT1kZHR8fGE9PT1nZHR8fGE9PT11ZHR8fGE9PT1oZHR8fGE9PT1fZHR8fGE9PT1DZHQpaWYocz10LmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiKSxzIT09bnVsbCl7aWYoYT09PWFkdClyZXR1cm4gcj09PU1yP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUjtpZihhPT09cmR0KXJldHVybiByPT09TXI/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSO2lmKGE9PT1zZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjpzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFI7aWYoYT09PWxkdClyZXR1cm4gcj09PU1yP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjtpZihhPT09Y2R0KXJldHVybiByPT09TXI/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSO2lmKGE9PT1tZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjpzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI7aWYoYT09PWZkdClyZXR1cm4gcj09PU1yP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjtpZihhPT09cGR0KXJldHVybiByPT09TXI/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSO2lmKGE9PT1kZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6cy5DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjtpZihhPT09Z2R0KXJldHVybiByPT09TXI/cy5DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI7aWYoYT09PXVkdClyZXR1cm4gcj09PU1yP3MuQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjpzLkNPTVBSRVNTRURfUkdCQV9BU1RDXzEweDhfS0hSO2lmKGE9PT1oZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSO2lmKGE9PT1fZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSO2lmKGE9PT1DZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOnMuQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSfWVsc2UgcmV0dXJuIG51bGw7aWYoYT09PU1kdClpZihzPXQuZ2V0KCJFWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9icHRjIikscyE9PW51bGwpe2lmKGE9PT1NZHQpcmV0dXJuIHI9PT1Ncj9zLkNPTVBSRVNTRURfU1JHQl9BTFBIQV9CUFRDX1VOT1JNX0VYVDpzLkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNX0VYVH1lbHNlIHJldHVybiBudWxsO2lmKGE9PT1jUylyZXR1cm4gbz8zNDA0Mjoocz10LmdldCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLHMhPT1udWxsP3MuVU5TSUdORURfSU5UXzI0XzhfV0VCR0w6bnVsbCl9cmV0dXJue2NvbnZlcnQ6aX19dmFyIG5GPWNsYXNzIGV4dGVuZHMgU217Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLmNhbWVyYXM9dH19O25GLnByb3RvdHlwZS5pc0FycmF5Q2FtZXJhPSEwO3ZhciBBMT1jbGFzcyBleHRlbmRzIFZpe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9Ikdyb3VwIn19O0ExLnByb3RvdHlwZS5pc0dyb3VwPSEwO3ZhciBKWXQ9e3R5cGU6Im1vdmUifSwkNT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3RhcmdldFJheT1udWxsLHRoaXMuX2dyaXA9bnVsbCx0aGlzLl9oYW5kPW51bGx9Z2V0SGFuZFNwYWNlKCl7cmV0dXJuIHRoaXMuX2hhbmQ9PT1udWxsJiYodGhpcy5faGFuZD1uZXcgQTEsdGhpcy5faGFuZC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2hhbmQudmlzaWJsZT0hMSx0aGlzLl9oYW5kLmpvaW50cz17fSx0aGlzLl9oYW5kLmlucHV0U3RhdGU9e3BpbmNoaW5nOiExfSksdGhpcy5faGFuZH1nZXRUYXJnZXRSYXlTcGFjZSgpe3JldHVybiB0aGlzLl90YXJnZXRSYXk9PT1udWxsJiYodGhpcy5fdGFyZ2V0UmF5PW5ldyBBMSx0aGlzLl90YXJnZXRSYXkubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSx0aGlzLl90YXJnZXRSYXkuaGFzTGluZWFyVmVsb2NpdHk9ITEsdGhpcy5fdGFyZ2V0UmF5LmxpbmVhclZlbG9jaXR5PW5ldyBwdCx0aGlzLl90YXJnZXRSYXkuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX3RhcmdldFJheS5hbmd1bGFyVmVsb2NpdHk9bmV3IHB0KSx0aGlzLl90YXJnZXRSYXl9Z2V0R3JpcFNwYWNlKCl7cmV0dXJuIHRoaXMuX2dyaXA9PT1udWxsJiYodGhpcy5fZ3JpcD1uZXcgQTEsdGhpcy5fZ3JpcC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2dyaXAudmlzaWJsZT0hMSx0aGlzLl9ncmlwLmhhc0xpbmVhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAubGluZWFyVmVsb2NpdHk9bmV3IHB0LHRoaXMuX2dyaXAuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuX2dyaXAuYW5ndWxhclZlbG9jaXR5PW5ldyBwdCksdGhpcy5fZ3JpcH1kaXNwYXRjaEV2ZW50KHQpe3JldHVybiB0aGlzLl90YXJnZXRSYXkhPT1udWxsJiZ0aGlzLl90YXJnZXRSYXkuZGlzcGF0Y2hFdmVudCh0KSx0aGlzLl9ncmlwIT09bnVsbCYmdGhpcy5fZ3JpcC5kaXNwYXRjaEV2ZW50KHQpLHRoaXMuX2hhbmQhPT1udWxsJiZ0aGlzLl9oYW5kLmRpc3BhdGNoRXZlbnQodCksdGhpc31kaXNjb25uZWN0KHQpe3JldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTp0fSksdGhpcy5fdGFyZ2V0UmF5IT09bnVsbCYmKHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExKSx0aGlzLl9ncmlwIT09bnVsbCYmKHRoaXMuX2dyaXAudmlzaWJsZT0hMSksdGhpcy5faGFuZCE9PW51bGwmJih0aGlzLl9oYW5kLnZpc2libGU9ITEpLHRoaXN9dXBkYXRlKHQsZSxvKXtsZXQgaT1udWxsLGE9bnVsbCxyPW51bGwscz10aGlzLl90YXJnZXRSYXksbD10aGlzLl9ncmlwLGM9dGhpcy5faGFuZDtpZih0JiZlLnNlc3Npb24udmlzaWJpbGl0eVN0YXRlIT09InZpc2libGUtYmx1cnJlZCIpaWYocyE9PW51bGwmJihpPWUuZ2V0UG9zZSh0LnRhcmdldFJheVNwYWNlLG8pLGkhPT1udWxsJiYocy5tYXRyaXguZnJvbUFycmF5KGkudHJhbnNmb3JtLm1hdHJpeCkscy5tYXRyaXguZGVjb21wb3NlKHMucG9zaXRpb24scy5yb3RhdGlvbixzLnNjYWxlKSxpLmxpbmVhclZlbG9jaXR5PyhzLmhhc0xpbmVhclZlbG9jaXR5PSEwLHMubGluZWFyVmVsb2NpdHkuY29weShpLmxpbmVhclZlbG9jaXR5KSk6cy5oYXNMaW5lYXJWZWxvY2l0eT0hMSxpLmFuZ3VsYXJWZWxvY2l0eT8ocy5oYXNBbmd1bGFyVmVsb2NpdHk9ITAscy5hbmd1bGFyVmVsb2NpdHkuY29weShpLmFuZ3VsYXJWZWxvY2l0eSkpOnMuaGFzQW5ndWxhclZlbG9jaXR5PSExLHRoaXMuZGlzcGF0Y2hFdmVudChKWXQpKSksYyYmdC5oYW5kKXtyPSEwO2ZvcihsZXQgTSBvZiB0LmhhbmQudmFsdWVzKCkpe2xldCB5PWUuZ2V0Sm9pbnRQb3NlKE0sbyk7aWYoYy5qb2ludHNbTS5qb2ludE5hbWVdPT09dm9pZCAwKXtsZXQgYj1uZXcgQTE7Yi5tYXRyaXhBdXRvVXBkYXRlPSExLGIudmlzaWJsZT0hMSxjLmpvaW50c1tNLmpvaW50TmFtZV09YixjLmFkZChiKX1sZXQgTz1jLmpvaW50c1tNLmpvaW50TmFtZV07eSE9PW51bGwmJihPLm1hdHJpeC5mcm9tQXJyYXkoeS50cmFuc2Zvcm0ubWF0cml4KSxPLm1hdHJpeC5kZWNvbXBvc2UoTy5wb3NpdGlvbixPLnJvdGF0aW9uLE8uc2NhbGUpLE8uam9pbnRSYWRpdXM9eS5yYWRpdXMpLE8udmlzaWJsZT15IT09bnVsbH1sZXQgbT1jLmpvaW50c1siaW5kZXgtZmluZ2VyLXRpcCJdLGY9Yy5qb2ludHNbInRodW1iLXRpcCJdLHA9bS5wb3NpdGlvbi5kaXN0YW5jZVRvKGYucG9zaXRpb24pLGc9LjAyLF89LjAwNTtjLmlucHV0U3RhdGUucGluY2hpbmcmJnA+ZytfPyhjLmlucHV0U3RhdGUucGluY2hpbmc9ITEsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaGVuZCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSk6IWMuaW5wdXRTdGF0ZS5waW5jaGluZyYmcDw9Zy1fJiYoYy5pbnB1dFN0YXRlLnBpbmNoaW5nPSEwLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hzdGFydCIsaGFuZGVkbmVzczp0LmhhbmRlZG5lc3MsdGFyZ2V0OnRoaXN9KSl9ZWxzZSBsIT09bnVsbCYmdC5ncmlwU3BhY2UmJihhPWUuZ2V0UG9zZSh0LmdyaXBTcGFjZSxvKSxhIT09bnVsbCYmKGwubWF0cml4LmZyb21BcnJheShhLnRyYW5zZm9ybS5tYXRyaXgpLGwubWF0cml4LmRlY29tcG9zZShsLnBvc2l0aW9uLGwucm90YXRpb24sbC5zY2FsZSksYS5saW5lYXJWZWxvY2l0eT8obC5oYXNMaW5lYXJWZWxvY2l0eT0hMCxsLmxpbmVhclZlbG9jaXR5LmNvcHkoYS5saW5lYXJWZWxvY2l0eSkpOmwuaGFzTGluZWFyVmVsb2NpdHk9ITEsYS5hbmd1bGFyVmVsb2NpdHk/KGwuaGFzQW5ndWxhclZlbG9jaXR5PSEwLGwuYW5ndWxhclZlbG9jaXR5LmNvcHkoYS5hbmd1bGFyVmVsb2NpdHkpKTpsLmhhc0FuZ3VsYXJWZWxvY2l0eT0hMSkpO3JldHVybiBzIT09bnVsbCYmKHMudmlzaWJsZT1pIT09bnVsbCksbCE9PW51bGwmJihsLnZpc2libGU9YSE9PW51bGwpLGMhPT1udWxsJiYoYy52aXNpYmxlPXIhPT1udWxsKSx0aGlzfX0sZjQ9Y2xhc3MgZXh0ZW5kcyBHc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscixzLGwsYyxtKXtpZihtPW0hPT12b2lkIDA/bTpEMSxtIT09RDEmJm0hPT1kUyl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoVGV4dHVyZSBmb3JtYXQgbXVzdCBiZSBlaXRoZXIgVEhSRUUuRGVwdGhGb3JtYXQgb3IgVEhSRUUuRGVwdGhTdGVuY2lsRm9ybWF0Iik7bz09PXZvaWQgMCYmbT09PUQxJiYobz1vNCksbz09PXZvaWQgMCYmbT09PWRTJiYobz1jUyksc3VwZXIobnVsbCxpLGEscixzLGwsbSxvLGMpLHRoaXMuaW1hZ2U9e3dpZHRoOnQsaGVpZ2h0OmV9LHRoaXMubWFnRmlsdGVyPXMhPT12b2lkIDA/czpjbCx0aGlzLm1pbkZpbHRlcj1sIT09dm9pZCAwP2w6Y2wsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX19O2Y0LnByb3RvdHlwZS5pc0RlcHRoVGV4dHVyZT0hMDt2YXIgUVc9Y2xhc3MgZXh0ZW5kcyBxUHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCk7bGV0IG89dGhpcyxpPW51bGwsYT0xLHI9bnVsbCxzPSJsb2NhbC1mbG9vciIsbD10LmV4dGVuc2lvbnMuaGFzKCJXRUJHTF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSxjPW51bGwsbT1udWxsLGY9bnVsbCxwPW51bGwsZz0hMSxfPW51bGwsTT1lLmdldENvbnRleHRBdHRyaWJ1dGVzKCkseT1udWxsLE89bnVsbCxiPVtdLFI9bmV3IE1hcCxFPW5ldyBTbTtFLmxheWVycy5lbmFibGUoMSksRS52aWV3cG9ydD1uZXcgY2E7bGV0IGo9bmV3IFNtO2oubGF5ZXJzLmVuYWJsZSgyKSxqLnZpZXdwb3J0PW5ldyBjYTtsZXQgcnQ9W0Usal0sSj1uZXcgbkY7Si5sYXllcnMuZW5hYmxlKDEpLEoubGF5ZXJzLmVuYWJsZSgyKTtsZXQgRXQ9bnVsbCxqdD1udWxsO3RoaXMuY2FtZXJhQXV0b1VwZGF0ZT0hMCx0aGlzLmVuYWJsZWQ9ITEsdGhpcy5pc1ByZXNlbnRpbmc9ITEsdGhpcy5nZXRDb250cm9sbGVyPWZ1bmN0aW9uKFJ0KXtsZXQgR3Q9YltSdF07cmV0dXJuIEd0PT09dm9pZCAwJiYoR3Q9bmV3ICQ1LGJbUnRdPUd0KSxHdC5nZXRUYXJnZXRSYXlTcGFjZSgpfSx0aGlzLmdldENvbnRyb2xsZXJHcmlwPWZ1bmN0aW9uKFJ0KXtsZXQgR3Q9YltSdF07cmV0dXJuIEd0PT09dm9pZCAwJiYoR3Q9bmV3ICQ1LGJbUnRdPUd0KSxHdC5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKFJ0KXtsZXQgR3Q9YltSdF07cmV0dXJuIEd0PT09dm9pZCAwJiYoR3Q9bmV3ICQ1LGJbUnRdPUd0KSxHdC5nZXRIYW5kU3BhY2UoKX07ZnVuY3Rpb24ga3QoUnQpe2xldCBHdD1SLmdldChSdC5pbnB1dFNvdXJjZSk7R3QmJkd0LmRpc3BhdGNoRXZlbnQoe3R5cGU6UnQudHlwZSxkYXRhOlJ0LmlucHV0U291cmNlfSl9ZnVuY3Rpb24gdygpe1IuZm9yRWFjaChmdW5jdGlvbihSdCxHdCl7UnQuZGlzY29ubmVjdChHdCl9KSxSLmNsZWFyKCksRXQ9bnVsbCxqdD1udWxsLHQuc2V0UmVuZGVyVGFyZ2V0KHkpLHA9bnVsbCxmPW51bGwsbT1udWxsLGk9bnVsbCxPPW51bGwsV3Quc3RvcCgpLG8uaXNQcmVzZW50aW5nPSExLG8uZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbmVuZCJ9KX10aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24oUnQpe2E9UnQsby5pc1ByZXNlbnRpbmc9PT0hMCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgZnJhbWVidWZmZXIgc2NhbGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5zZXRSZWZlcmVuY2VTcGFjZVR5cGU9ZnVuY3Rpb24oUnQpe3M9UnQsby5pc1ByZXNlbnRpbmc9PT0hMCYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJYUk1hbmFnZXI6IENhbm5vdCBjaGFuZ2UgcmVmZXJlbmNlIHNwYWNlIHR5cGUgd2hpbGUgcHJlc2VudGluZy4iKX0sdGhpcy5nZXRSZWZlcmVuY2VTcGFjZT1mdW5jdGlvbigpe3JldHVybiByfSx0aGlzLmdldEJhc2VMYXllcj1mdW5jdGlvbigpe3JldHVybiBmIT09bnVsbD9mOnB9LHRoaXMuZ2V0QmluZGluZz1mdW5jdGlvbigpe3JldHVybiBtfSx0aGlzLmdldEZyYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIF99LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBpfSx0aGlzLnNldFNlc3Npb249ZnVuY3Rpb24oUnQpe3JldHVybiB0WCh0aGlzLG51bGwsZnVuY3Rpb24qKCl7aWYoaT1SdCxpIT09bnVsbCl7aWYoeT10LmdldFJlbmRlclRhcmdldCgpLGkuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0IixrdCksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsa3QpLGkuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0ZW5kIixrdCksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplIixrdCksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLGt0KSxpLmFkZEV2ZW50TGlzdGVuZXIoInNxdWVlemVlbmQiLGt0KSxpLmFkZEV2ZW50TGlzdGVuZXIoImVuZCIsdyksaS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dHNvdXJjZXNjaGFuZ2UiLFUpLE0ueHJDb21wYXRpYmxlIT09ITAmJih5aWVsZCBlLm1ha2VYUkNvbXBhdGlibGUoKSksaS5yZW5kZXJTdGF0ZS5sYXllcnM9PT12b2lkIDB8fHQuY2FwYWJpbGl0aWVzLmlzV2ViR0wyPT09ITEpe2xldCBHdD17YW50aWFsaWFzOmkucmVuZGVyU3RhdGUubGF5ZXJzPT09dm9pZCAwP00uYW50aWFsaWFzOiEwLGFscGhhOk0uYWxwaGEsZGVwdGg6TS5kZXB0aCxzdGVuY2lsOk0uc3RlbmNpbCxmcmFtZWJ1ZmZlclNjYWxlRmFjdG9yOmF9O3A9bmV3IFhSV2ViR0xMYXllcihpLGUsR3QpLGkudXBkYXRlUmVuZGVyU3RhdGUoe2Jhc2VMYXllcjpwfSksTz1uZXcgTmQocC5mcmFtZWJ1ZmZlcldpZHRoLHAuZnJhbWVidWZmZXJIZWlnaHQse2Zvcm1hdDpSZix0eXBlOnp4LGVuY29kaW5nOnQub3V0cHV0RW5jb2Rpbmd9KX1lbHNle2c9TS5hbnRpYWxpYXM7bGV0IEd0PW51bGwseWU9bnVsbCxqZT1udWxsO00uZGVwdGgmJihqZT1NLnN0ZW5jaWw/MzUwNTY6MzMxOTAsR3Q9TS5zdGVuY2lsP2RTOkQxLHllPU0uc3RlbmNpbD9jUzpvNCk7bGV0IGNlPXtjb2xvckZvcm1hdDp0Lm91dHB1dEVuY29kaW5nPT09TXI/MzU5MDc6MzI4NTYsZGVwdGhGb3JtYXQ6amUsc2NhbGVGYWN0b3I6YX07bT1uZXcgWFJXZWJHTEJpbmRpbmcoaSxlKSxmPW0uY3JlYXRlUHJvamVjdGlvbkxheWVyKGNlKSxpLnVwZGF0ZVJlbmRlclN0YXRlKHtsYXllcnM6W2ZdfSksZz9PPW5ldyByNChmLnRleHR1cmVXaWR0aCxmLnRleHR1cmVIZWlnaHQse2Zvcm1hdDpSZix0eXBlOnp4LGRlcHRoVGV4dHVyZTpuZXcgZjQoZi50ZXh0dXJlV2lkdGgsZi50ZXh0dXJlSGVpZ2h0LHllLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLEd0KSxzdGVuY2lsQnVmZmVyOk0uc3RlbmNpbCxpZ25vcmVEZXB0aDpmLmlnbm9yZURlcHRoVmFsdWVzLHVzZVJlbmRlclRvVGV4dHVyZTpsLGVuY29kaW5nOnQub3V0cHV0RW5jb2Rpbmd9KTpPPW5ldyBOZChmLnRleHR1cmVXaWR0aCxmLnRleHR1cmVIZWlnaHQse2Zvcm1hdDpSZix0eXBlOnp4LGRlcHRoVGV4dHVyZTpuZXcgZjQoZi50ZXh0dXJlV2lkdGgsZi50ZXh0dXJlSGVpZ2h0LHllLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLEd0KSxzdGVuY2lsQnVmZmVyOk0uc3RlbmNpbCxpZ25vcmVEZXB0aDpmLmlnbm9yZURlcHRoVmFsdWVzLGVuY29kaW5nOnQub3V0cHV0RW5jb2Rpbmd9KX1PLmlzWFJSZW5kZXJUYXJnZXQ9ITAsdGhpcy5zZXRGb3ZlYXRpb24oMSkscj15aWVsZCBpLnJlcXVlc3RSZWZlcmVuY2VTcGFjZShzKSxXdC5zZXRDb250ZXh0KGkpLFd0LnN0YXJ0KCksby5pc1ByZXNlbnRpbmc9ITAsby5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9fSl9O2Z1bmN0aW9uIFUoUnQpe2xldCBHdD1pLmlucHV0U291cmNlcztmb3IobGV0IHllPTA7eWU8Yi5sZW5ndGg7eWUrKylSLnNldChHdFt5ZV0sYlt5ZV0pO2ZvcihsZXQgeWU9MDt5ZTxSdC5yZW1vdmVkLmxlbmd0aDt5ZSsrKXtsZXQgamU9UnQucmVtb3ZlZFt5ZV0sY2U9Ui5nZXQoamUpO2NlJiYoY2UuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzY29ubmVjdGVkIixkYXRhOmplfSksUi5kZWxldGUoamUpKX1mb3IobGV0IHllPTA7eWU8UnQuYWRkZWQubGVuZ3RoO3llKyspe2xldCBqZT1SdC5hZGRlZFt5ZV0sY2U9Ui5nZXQoamUpO2NlJiZjZS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJjb25uZWN0ZWQiLGRhdGE6amV9KX19bGV0IG50PW5ldyBwdCxsdD1uZXcgcHQ7ZnVuY3Rpb24gYnQoUnQsR3QseWUpe250LnNldEZyb21NYXRyaXhQb3NpdGlvbihHdC5tYXRyaXhXb3JsZCksbHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHllLm1hdHJpeFdvcmxkKTtsZXQgamU9bnQuZGlzdGFuY2VUbyhsdCksY2U9R3QucHJvamVjdGlvbk1hdHJpeC5lbGVtZW50cyxMdD15ZS5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLFBuPWNlWzE0XS8oY2VbMTBdLTEpLFZlPWNlWzE0XS8oY2VbMTBdKzEpLERlPShjZVs5XSsxKS9jZVs1XSxxdD0oY2VbOV0tMSkvY2VbNV0sTGU9KGNlWzhdLTEpL2NlWzBdLEhlPShMdFs4XSsxKS9MdFswXSxodD1QbipMZSxSZT1QbipIZSxmZT1qZS8oLUxlK0hlKSxVZT1mZSotTGU7R3QubWF0cml4V29ybGQuZGVjb21wb3NlKFJ0LnBvc2l0aW9uLFJ0LnF1YXRlcm5pb24sUnQuc2NhbGUpLFJ0LnRyYW5zbGF0ZVgoVWUpLFJ0LnRyYW5zbGF0ZVooZmUpLFJ0Lm1hdHJpeFdvcmxkLmNvbXBvc2UoUnQucG9zaXRpb24sUnQucXVhdGVybmlvbixSdC5zY2FsZSksUnQubWF0cml4V29ybGRJbnZlcnNlLmNvcHkoUnQubWF0cml4V29ybGQpLmludmVydCgpO2xldCBGZT1QbitmZSxCbj1WZStmZSx3bj1odC1VZSxxbz1SZSsoamUtVWUpLG1hPURlKlZlL0JuKkZlLGppPXF0KlZlL0JuKkZlO1J0LnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKHduLHFvLG1hLGppLEZlLEJuKX1mdW5jdGlvbiBvdChSdCxHdCl7R3Q9PT1udWxsP1J0Lm1hdHJpeFdvcmxkLmNvcHkoUnQubWF0cml4KTpSdC5tYXRyaXhXb3JsZC5tdWx0aXBseU1hdHJpY2VzKEd0Lm1hdHJpeFdvcmxkLFJ0Lm1hdHJpeCksUnQubWF0cml4V29ybGRJbnZlcnNlLmNvcHkoUnQubWF0cml4V29ybGQpLmludmVydCgpfXRoaXMudXBkYXRlQ2FtZXJhPWZ1bmN0aW9uKFJ0KXtpZihpPT09bnVsbClyZXR1cm47Si5uZWFyPWoubmVhcj1FLm5lYXI9UnQubmVhcixKLmZhcj1qLmZhcj1FLmZhcj1SdC5mYXIsKEV0IT09Si5uZWFyfHxqdCE9PUouZmFyKSYmKGkudXBkYXRlUmVuZGVyU3RhdGUoe2RlcHRoTmVhcjpKLm5lYXIsZGVwdGhGYXI6Si5mYXJ9KSxFdD1KLm5lYXIsanQ9Si5mYXIpO2xldCBHdD1SdC5wYXJlbnQseWU9Si5jYW1lcmFzO290KEosR3QpO2ZvcihsZXQgY2U9MDtjZTx5ZS5sZW5ndGg7Y2UrKylvdCh5ZVtjZV0sR3QpO0oubWF0cml4V29ybGQuZGVjb21wb3NlKEoucG9zaXRpb24sSi5xdWF0ZXJuaW9uLEouc2NhbGUpLFJ0LnBvc2l0aW9uLmNvcHkoSi5wb3NpdGlvbiksUnQucXVhdGVybmlvbi5jb3B5KEoucXVhdGVybmlvbiksUnQuc2NhbGUuY29weShKLnNjYWxlKSxSdC5tYXRyaXguY29weShKLm1hdHJpeCksUnQubWF0cml4V29ybGQuY29weShKLm1hdHJpeFdvcmxkKTtsZXQgamU9UnQuY2hpbGRyZW47Zm9yKGxldCBjZT0wLEx0PWplLmxlbmd0aDtjZTxMdDtjZSsrKWplW2NlXS51cGRhdGVNYXRyaXhXb3JsZCghMCk7eWUubGVuZ3RoPT09Mj9idChKLEUsaik6Si5wcm9qZWN0aW9uTWF0cml4LmNvcHkoRS5wcm9qZWN0aW9uTWF0cml4KX0sdGhpcy5nZXRDYW1lcmE9ZnVuY3Rpb24oKXtyZXR1cm4gSn0sdGhpcy5nZXRGb3ZlYXRpb249ZnVuY3Rpb24oKXtpZihmIT09bnVsbClyZXR1cm4gZi5maXhlZEZvdmVhdGlvbjtpZihwIT09bnVsbClyZXR1cm4gcC5maXhlZEZvdmVhdGlvbn0sdGhpcy5zZXRGb3ZlYXRpb249ZnVuY3Rpb24oUnQpe2YhPT1udWxsJiYoZi5maXhlZEZvdmVhdGlvbj1SdCkscCE9PW51bGwmJnAuZml4ZWRGb3ZlYXRpb24hPT12b2lkIDAmJihwLmZpeGVkRm92ZWF0aW9uPVJ0KX07bGV0IHV0PW51bGw7ZnVuY3Rpb24gZ3QoUnQsR3Qpe2lmKGM9R3QuZ2V0Vmlld2VyUG9zZShyKSxfPUd0LGMhPT1udWxsKXtsZXQgamU9Yy52aWV3cztwIT09bnVsbCYmKHQuc2V0UmVuZGVyVGFyZ2V0RnJhbWVidWZmZXIoTyxwLmZyYW1lYnVmZmVyKSx0LnNldFJlbmRlclRhcmdldChPKSk7bGV0IGNlPSExO2plLmxlbmd0aCE9PUouY2FtZXJhcy5sZW5ndGgmJihKLmNhbWVyYXMubGVuZ3RoPTAsY2U9ITApO2ZvcihsZXQgTHQ9MDtMdDxqZS5sZW5ndGg7THQrKyl7bGV0IFBuPWplW0x0XSxWZT1udWxsO2lmKHAhPT1udWxsKVZlPXAuZ2V0Vmlld3BvcnQoUG4pO2Vsc2V7bGV0IHF0PW0uZ2V0Vmlld1N1YkltYWdlKGYsUG4pO1ZlPXF0LnZpZXdwb3J0LEx0PT09MCYmKHQuc2V0UmVuZGVyVGFyZ2V0VGV4dHVyZXMoTyxxdC5jb2xvclRleHR1cmUsZi5pZ25vcmVEZXB0aFZhbHVlcz92b2lkIDA6cXQuZGVwdGhTdGVuY2lsVGV4dHVyZSksdC5zZXRSZW5kZXJUYXJnZXQoTykpfWxldCBEZT1ydFtMdF07RGUubWF0cml4LmZyb21BcnJheShQbi50cmFuc2Zvcm0ubWF0cml4KSxEZS5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShQbi5wcm9qZWN0aW9uTWF0cml4KSxEZS52aWV3cG9ydC5zZXQoVmUueCxWZS55LFZlLndpZHRoLFZlLmhlaWdodCksTHQ9PT0wJiZKLm1hdHJpeC5jb3B5KERlLm1hdHJpeCksY2U9PT0hMCYmSi5jYW1lcmFzLnB1c2goRGUpfX1sZXQgeWU9aS5pbnB1dFNvdXJjZXM7Zm9yKGxldCBqZT0wO2plPGIubGVuZ3RoO2plKyspe2xldCBjZT1iW2plXSxMdD15ZVtqZV07Y2UudXBkYXRlKEx0LEd0LHIpfXV0JiZ1dChSdCxHdCksXz1udWxsfWxldCBXdD1uZXcgRGd0O1d0LnNldEFuaW1hdGlvbkxvb3AoZ3QpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbihSdCl7dXQ9UnR9LHRoaXMuZGlzcG9zZT1mdW5jdGlvbigpe319fTtmdW5jdGlvbiAkWXQobil7ZnVuY3Rpb24gdChPLGIpe08uZm9nQ29sb3IudmFsdWUuY29weShiLmNvbG9yKSxiLmlzRm9nPyhPLmZvZ05lYXIudmFsdWU9Yi5uZWFyLE8uZm9nRmFyLnZhbHVlPWIuZmFyKTpiLmlzRm9nRXhwMiYmKE8uZm9nRGVuc2l0eS52YWx1ZT1iLmRlbnNpdHkpfWZ1bmN0aW9uIGUoTyxiLFIsRSxqKXtiLmlzTWVzaEJhc2ljTWF0ZXJpYWw/byhPLGIpOmIuaXNNZXNoTGFtYmVydE1hdGVyaWFsPyhvKE8sYiksbChPLGIpKTpiLmlzTWVzaFRvb25NYXRlcmlhbD8obyhPLGIpLG0oTyxiKSk6Yi5pc01lc2hQaG9uZ01hdGVyaWFsPyhvKE8sYiksYyhPLGIpKTpiLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KG8oTyxiKSxiLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw/cChPLGIsaik6ZihPLGIpKTpiLmlzTWVzaE1hdGNhcE1hdGVyaWFsPyhvKE8sYiksZyhPLGIpKTpiLmlzTWVzaERlcHRoTWF0ZXJpYWw/KG8oTyxiKSxfKE8sYikpOmIuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8obyhPLGIpLE0oTyxiKSk6Yi5pc01lc2hOb3JtYWxNYXRlcmlhbD8obyhPLGIpLHkoTyxiKSk6Yi5pc0xpbmVCYXNpY01hdGVyaWFsPyhpKE8sYiksYi5pc0xpbmVEYXNoZWRNYXRlcmlhbCYmYShPLGIpKTpiLmlzUG9pbnRzTWF0ZXJpYWw/cihPLGIsUixFKTpiLmlzU3ByaXRlTWF0ZXJpYWw/cyhPLGIpOmIuaXNTaGFkb3dNYXRlcmlhbD8oTy5jb2xvci52YWx1ZS5jb3B5KGIuY29sb3IpLE8ub3BhY2l0eS52YWx1ZT1iLm9wYWNpdHkpOmIuaXNTaGFkZXJNYXRlcmlhbCYmKGIudW5pZm9ybXNOZWVkVXBkYXRlPSExKX1mdW5jdGlvbiBvKE8sYil7Ty5vcGFjaXR5LnZhbHVlPWIub3BhY2l0eSxiLmNvbG9yJiZPLmRpZmZ1c2UudmFsdWUuY29weShiLmNvbG9yKSxiLmVtaXNzaXZlJiZPLmVtaXNzaXZlLnZhbHVlLmNvcHkoYi5lbWlzc2l2ZSkubXVsdGlwbHlTY2FsYXIoYi5lbWlzc2l2ZUludGVuc2l0eSksYi5tYXAmJihPLm1hcC52YWx1ZT1iLm1hcCksYi5hbHBoYU1hcCYmKE8uYWxwaGFNYXAudmFsdWU9Yi5hbHBoYU1hcCksYi5zcGVjdWxhck1hcCYmKE8uc3BlY3VsYXJNYXAudmFsdWU9Yi5zcGVjdWxhck1hcCksYi5hbHBoYVRlc3Q+MCYmKE8uYWxwaGFUZXN0LnZhbHVlPWIuYWxwaGFUZXN0KTtsZXQgUj1uLmdldChiKS5lbnZNYXA7UiYmKE8uZW52TWFwLnZhbHVlPVIsTy5mbGlwRW52TWFwLnZhbHVlPVIuaXNDdWJlVGV4dHVyZSYmUi5pc1JlbmRlclRhcmdldFRleHR1cmU9PT0hMT8tMToxLE8ucmVmbGVjdGl2aXR5LnZhbHVlPWIucmVmbGVjdGl2aXR5LE8uaW9yLnZhbHVlPWIuaW9yLE8ucmVmcmFjdGlvblJhdGlvLnZhbHVlPWIucmVmcmFjdGlvblJhdGlvKSxiLmxpZ2h0TWFwJiYoTy5saWdodE1hcC52YWx1ZT1iLmxpZ2h0TWFwLE8ubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9Yi5saWdodE1hcEludGVuc2l0eSksYi5hb01hcCYmKE8uYW9NYXAudmFsdWU9Yi5hb01hcCxPLmFvTWFwSW50ZW5zaXR5LnZhbHVlPWIuYW9NYXBJbnRlbnNpdHkpO2xldCBFO2IubWFwP0U9Yi5tYXA6Yi5zcGVjdWxhck1hcD9FPWIuc3BlY3VsYXJNYXA6Yi5kaXNwbGFjZW1lbnRNYXA/RT1iLmRpc3BsYWNlbWVudE1hcDpiLm5vcm1hbE1hcD9FPWIubm9ybWFsTWFwOmIuYnVtcE1hcD9FPWIuYnVtcE1hcDpiLnJvdWdobmVzc01hcD9FPWIucm91Z2huZXNzTWFwOmIubWV0YWxuZXNzTWFwP0U9Yi5tZXRhbG5lc3NNYXA6Yi5hbHBoYU1hcD9FPWIuYWxwaGFNYXA6Yi5lbWlzc2l2ZU1hcD9FPWIuZW1pc3NpdmVNYXA6Yi5jbGVhcmNvYXRNYXA/RT1iLmNsZWFyY29hdE1hcDpiLmNsZWFyY29hdE5vcm1hbE1hcD9FPWIuY2xlYXJjb2F0Tm9ybWFsTWFwOmIuY2xlYXJjb2F0Um91Z2huZXNzTWFwP0U9Yi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA6Yi5zcGVjdWxhckludGVuc2l0eU1hcD9FPWIuc3BlY3VsYXJJbnRlbnNpdHlNYXA6Yi5zcGVjdWxhckNvbG9yTWFwP0U9Yi5zcGVjdWxhckNvbG9yTWFwOmIudHJhbnNtaXNzaW9uTWFwP0U9Yi50cmFuc21pc3Npb25NYXA6Yi50aGlja25lc3NNYXA/RT1iLnRoaWNrbmVzc01hcDpiLnNoZWVuQ29sb3JNYXA/RT1iLnNoZWVuQ29sb3JNYXA6Yi5zaGVlblJvdWdobmVzc01hcCYmKEU9Yi5zaGVlblJvdWdobmVzc01hcCksRSE9PXZvaWQgMCYmKEUuaXNXZWJHTFJlbmRlclRhcmdldCYmKEU9RS50ZXh0dXJlKSxFLm1hdHJpeEF1dG9VcGRhdGU9PT0hMCYmRS51cGRhdGVNYXRyaXgoKSxPLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoRS5tYXRyaXgpKTtsZXQgajtiLmFvTWFwP2o9Yi5hb01hcDpiLmxpZ2h0TWFwJiYoaj1iLmxpZ2h0TWFwKSxqIT09dm9pZCAwJiYoai5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoaj1qLnRleHR1cmUpLGoubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZqLnVwZGF0ZU1hdHJpeCgpLE8udXYyVHJhbnNmb3JtLnZhbHVlLmNvcHkoai5tYXRyaXgpKX1mdW5jdGlvbiBpKE8sYil7Ty5kaWZmdXNlLnZhbHVlLmNvcHkoYi5jb2xvciksTy5vcGFjaXR5LnZhbHVlPWIub3BhY2l0eX1mdW5jdGlvbiBhKE8sYil7Ty5kYXNoU2l6ZS52YWx1ZT1iLmRhc2hTaXplLE8udG90YWxTaXplLnZhbHVlPWIuZGFzaFNpemUrYi5nYXBTaXplLE8uc2NhbGUudmFsdWU9Yi5zY2FsZX1mdW5jdGlvbiByKE8sYixSLEUpe08uZGlmZnVzZS52YWx1ZS5jb3B5KGIuY29sb3IpLE8ub3BhY2l0eS52YWx1ZT1iLm9wYWNpdHksTy5zaXplLnZhbHVlPWIuc2l6ZSpSLE8uc2NhbGUudmFsdWU9RSouNSxiLm1hcCYmKE8ubWFwLnZhbHVlPWIubWFwKSxiLmFscGhhTWFwJiYoTy5hbHBoYU1hcC52YWx1ZT1iLmFscGhhTWFwKSxiLmFscGhhVGVzdD4wJiYoTy5hbHBoYVRlc3QudmFsdWU9Yi5hbHBoYVRlc3QpO2xldCBqO2IubWFwP2o9Yi5tYXA6Yi5hbHBoYU1hcCYmKGo9Yi5hbHBoYU1hcCksaiE9PXZvaWQgMCYmKGoubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZqLnVwZGF0ZU1hdHJpeCgpLE8udXZUcmFuc2Zvcm0udmFsdWUuY29weShqLm1hdHJpeCkpfWZ1bmN0aW9uIHMoTyxiKXtPLmRpZmZ1c2UudmFsdWUuY29weShiLmNvbG9yKSxPLm9wYWNpdHkudmFsdWU9Yi5vcGFjaXR5LE8ucm90YXRpb24udmFsdWU9Yi5yb3RhdGlvbixiLm1hcCYmKE8ubWFwLnZhbHVlPWIubWFwKSxiLmFscGhhTWFwJiYoTy5hbHBoYU1hcC52YWx1ZT1iLmFscGhhTWFwKSxiLmFscGhhVGVzdD4wJiYoTy5hbHBoYVRlc3QudmFsdWU9Yi5hbHBoYVRlc3QpO2xldCBSO2IubWFwP1I9Yi5tYXA6Yi5hbHBoYU1hcCYmKFI9Yi5hbHBoYU1hcCksUiE9PXZvaWQgMCYmKFIubWF0cml4QXV0b1VwZGF0ZT09PSEwJiZSLnVwZGF0ZU1hdHJpeCgpLE8udXZUcmFuc2Zvcm0udmFsdWUuY29weShSLm1hdHJpeCkpfWZ1bmN0aW9uIGwoTyxiKXtiLmVtaXNzaXZlTWFwJiYoTy5lbWlzc2l2ZU1hcC52YWx1ZT1iLmVtaXNzaXZlTWFwKX1mdW5jdGlvbiBjKE8sYil7Ty5zcGVjdWxhci52YWx1ZS5jb3B5KGIuc3BlY3VsYXIpLE8uc2hpbmluZXNzLnZhbHVlPU1hdGgubWF4KGIuc2hpbmluZXNzLDFlLTQpLGIuZW1pc3NpdmVNYXAmJihPLmVtaXNzaXZlTWFwLnZhbHVlPWIuZW1pc3NpdmVNYXApLGIuYnVtcE1hcCYmKE8uYnVtcE1hcC52YWx1ZT1iLmJ1bXBNYXAsTy5idW1wU2NhbGUudmFsdWU9Yi5idW1wU2NhbGUsYi5zaWRlPT09bGwmJihPLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxiLm5vcm1hbE1hcCYmKE8ubm9ybWFsTWFwLnZhbHVlPWIubm9ybWFsTWFwLE8ubm9ybWFsU2NhbGUudmFsdWUuY29weShiLm5vcm1hbFNjYWxlKSxiLnNpZGU9PT1sbCYmTy5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksYi5kaXNwbGFjZW1lbnRNYXAmJihPLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1iLmRpc3BsYWNlbWVudE1hcCxPLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWIuZGlzcGxhY2VtZW50U2NhbGUsTy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWIuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gbShPLGIpe2IuZ3JhZGllbnRNYXAmJihPLmdyYWRpZW50TWFwLnZhbHVlPWIuZ3JhZGllbnRNYXApLGIuZW1pc3NpdmVNYXAmJihPLmVtaXNzaXZlTWFwLnZhbHVlPWIuZW1pc3NpdmVNYXApLGIuYnVtcE1hcCYmKE8uYnVtcE1hcC52YWx1ZT1iLmJ1bXBNYXAsTy5idW1wU2NhbGUudmFsdWU9Yi5idW1wU2NhbGUsYi5zaWRlPT09bGwmJihPLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxiLm5vcm1hbE1hcCYmKE8ubm9ybWFsTWFwLnZhbHVlPWIubm9ybWFsTWFwLE8ubm9ybWFsU2NhbGUudmFsdWUuY29weShiLm5vcm1hbFNjYWxlKSxiLnNpZGU9PT1sbCYmTy5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksYi5kaXNwbGFjZW1lbnRNYXAmJihPLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1iLmRpc3BsYWNlbWVudE1hcCxPLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWIuZGlzcGxhY2VtZW50U2NhbGUsTy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWIuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gZihPLGIpe08ucm91Z2huZXNzLnZhbHVlPWIucm91Z2huZXNzLE8ubWV0YWxuZXNzLnZhbHVlPWIubWV0YWxuZXNzLGIucm91Z2huZXNzTWFwJiYoTy5yb3VnaG5lc3NNYXAudmFsdWU9Yi5yb3VnaG5lc3NNYXApLGIubWV0YWxuZXNzTWFwJiYoTy5tZXRhbG5lc3NNYXAudmFsdWU9Yi5tZXRhbG5lc3NNYXApLGIuZW1pc3NpdmVNYXAmJihPLmVtaXNzaXZlTWFwLnZhbHVlPWIuZW1pc3NpdmVNYXApLGIuYnVtcE1hcCYmKE8uYnVtcE1hcC52YWx1ZT1iLmJ1bXBNYXAsTy5idW1wU2NhbGUudmFsdWU9Yi5idW1wU2NhbGUsYi5zaWRlPT09bGwmJihPLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxiLm5vcm1hbE1hcCYmKE8ubm9ybWFsTWFwLnZhbHVlPWIubm9ybWFsTWFwLE8ubm9ybWFsU2NhbGUudmFsdWUuY29weShiLm5vcm1hbFNjYWxlKSxiLnNpZGU9PT1sbCYmTy5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksYi5kaXNwbGFjZW1lbnRNYXAmJihPLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1iLmRpc3BsYWNlbWVudE1hcCxPLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWIuZGlzcGxhY2VtZW50U2NhbGUsTy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWIuZGlzcGxhY2VtZW50Qmlhcyksbi5nZXQoYikuZW52TWFwJiYoTy5lbnZNYXBJbnRlbnNpdHkudmFsdWU9Yi5lbnZNYXBJbnRlbnNpdHkpfWZ1bmN0aW9uIHAoTyxiLFIpe2YoTyxiKSxPLmlvci52YWx1ZT1iLmlvcixiLnNoZWVuPjAmJihPLnNoZWVuQ29sb3IudmFsdWUuY29weShiLnNoZWVuQ29sb3IpLm11bHRpcGx5U2NhbGFyKGIuc2hlZW4pLE8uc2hlZW5Sb3VnaG5lc3MudmFsdWU9Yi5zaGVlblJvdWdobmVzcyxiLnNoZWVuQ29sb3JNYXAmJihPLnNoZWVuQ29sb3JNYXAudmFsdWU9Yi5zaGVlbkNvbG9yTWFwKSxiLnNoZWVuUm91Z2huZXNzTWFwJiYoTy5zaGVlblJvdWdobmVzc01hcC52YWx1ZT1iLnNoZWVuUm91Z2huZXNzTWFwKSksYi5jbGVhcmNvYXQ+MCYmKE8uY2xlYXJjb2F0LnZhbHVlPWIuY2xlYXJjb2F0LE8uY2xlYXJjb2F0Um91Z2huZXNzLnZhbHVlPWIuY2xlYXJjb2F0Um91Z2huZXNzLGIuY2xlYXJjb2F0TWFwJiYoTy5jbGVhcmNvYXRNYXAudmFsdWU9Yi5jbGVhcmNvYXRNYXApLGIuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYoTy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudmFsdWU9Yi5jbGVhcmNvYXRSb3VnaG5lc3NNYXApLGIuY2xlYXJjb2F0Tm9ybWFsTWFwJiYoTy5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5jb3B5KGIuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLE8uY2xlYXJjb2F0Tm9ybWFsTWFwLnZhbHVlPWIuY2xlYXJjb2F0Tm9ybWFsTWFwLGIuc2lkZT09PWxsJiZPLmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSksYi50cmFuc21pc3Npb24+MCYmKE8udHJhbnNtaXNzaW9uLnZhbHVlPWIudHJhbnNtaXNzaW9uLE8udHJhbnNtaXNzaW9uU2FtcGxlck1hcC52YWx1ZT1SLnRleHR1cmUsTy50cmFuc21pc3Npb25TYW1wbGVyU2l6ZS52YWx1ZS5zZXQoUi53aWR0aCxSLmhlaWdodCksYi50cmFuc21pc3Npb25NYXAmJihPLnRyYW5zbWlzc2lvbk1hcC52YWx1ZT1iLnRyYW5zbWlzc2lvbk1hcCksTy50aGlja25lc3MudmFsdWU9Yi50aGlja25lc3MsYi50aGlja25lc3NNYXAmJihPLnRoaWNrbmVzc01hcC52YWx1ZT1iLnRoaWNrbmVzc01hcCksTy5hdHRlbnVhdGlvbkRpc3RhbmNlLnZhbHVlPWIuYXR0ZW51YXRpb25EaXN0YW5jZSxPLmF0dGVudWF0aW9uQ29sb3IudmFsdWUuY29weShiLmF0dGVudWF0aW9uQ29sb3IpKSxPLnNwZWN1bGFySW50ZW5zaXR5LnZhbHVlPWIuc3BlY3VsYXJJbnRlbnNpdHksTy5zcGVjdWxhckNvbG9yLnZhbHVlLmNvcHkoYi5zcGVjdWxhckNvbG9yKSxiLnNwZWN1bGFySW50ZW5zaXR5TWFwJiYoTy5zcGVjdWxhckludGVuc2l0eU1hcC52YWx1ZT1iLnNwZWN1bGFySW50ZW5zaXR5TWFwKSxiLnNwZWN1bGFyQ29sb3JNYXAmJihPLnNwZWN1bGFyQ29sb3JNYXAudmFsdWU9Yi5zcGVjdWxhckNvbG9yTWFwKX1mdW5jdGlvbiBnKE8sYil7Yi5tYXRjYXAmJihPLm1hdGNhcC52YWx1ZT1iLm1hdGNhcCksYi5idW1wTWFwJiYoTy5idW1wTWFwLnZhbHVlPWIuYnVtcE1hcCxPLmJ1bXBTY2FsZS52YWx1ZT1iLmJ1bXBTY2FsZSxiLnNpZGU9PT1sbCYmKE8uYnVtcFNjYWxlLnZhbHVlKj0tMSkpLGIubm9ybWFsTWFwJiYoTy5ub3JtYWxNYXAudmFsdWU9Yi5ub3JtYWxNYXAsTy5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGIubm9ybWFsU2NhbGUpLGIuc2lkZT09PWxsJiZPLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKSxiLmRpc3BsYWNlbWVudE1hcCYmKE8uZGlzcGxhY2VtZW50TWFwLnZhbHVlPWIuZGlzcGxhY2VtZW50TWFwLE8uZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9Yi5kaXNwbGFjZW1lbnRTY2FsZSxPLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9Yi5kaXNwbGFjZW1lbnRCaWFzKX1mdW5jdGlvbiBfKE8sYil7Yi5kaXNwbGFjZW1lbnRNYXAmJihPLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1iLmRpc3BsYWNlbWVudE1hcCxPLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWIuZGlzcGxhY2VtZW50U2NhbGUsTy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWIuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gTShPLGIpe2IuZGlzcGxhY2VtZW50TWFwJiYoTy5kaXNwbGFjZW1lbnRNYXAudmFsdWU9Yi5kaXNwbGFjZW1lbnRNYXAsTy5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1iLmRpc3BsYWNlbWVudFNjYWxlLE8uZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1iLmRpc3BsYWNlbWVudEJpYXMpLE8ucmVmZXJlbmNlUG9zaXRpb24udmFsdWUuY29weShiLnJlZmVyZW5jZVBvc2l0aW9uKSxPLm5lYXJEaXN0YW5jZS52YWx1ZT1iLm5lYXJEaXN0YW5jZSxPLmZhckRpc3RhbmNlLnZhbHVlPWIuZmFyRGlzdGFuY2V9ZnVuY3Rpb24geShPLGIpe2IuYnVtcE1hcCYmKE8uYnVtcE1hcC52YWx1ZT1iLmJ1bXBNYXAsTy5idW1wU2NhbGUudmFsdWU9Yi5idW1wU2NhbGUsYi5zaWRlPT09bGwmJihPLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKSxiLm5vcm1hbE1hcCYmKE8ubm9ybWFsTWFwLnZhbHVlPWIubm9ybWFsTWFwLE8ubm9ybWFsU2NhbGUudmFsdWUuY29weShiLm5vcm1hbFNjYWxlKSxiLnNpZGU9PT1sbCYmTy5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksYi5kaXNwbGFjZW1lbnRNYXAmJihPLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1iLmRpc3BsYWNlbWVudE1hcCxPLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWIuZGlzcGxhY2VtZW50U2NhbGUsTy5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWIuZGlzcGxhY2VtZW50Qmlhcyl9cmV0dXJue3JlZnJlc2hGb2dVbmlmb3Jtczp0LHJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zOmV9fWZ1bmN0aW9uIHRHdCgpe2xldCBuPWE0KCJjYW52YXMiKTtyZXR1cm4gbi5zdHlsZS5kaXNwbGF5PSJibG9jayIsbn1mdW5jdGlvbiBlYShuPXt9KXtsZXQgdD1uLmNhbnZhcyE9PXZvaWQgMD9uLmNhbnZhczp0R3QoKSxlPW4uY29udGV4dCE9PXZvaWQgMD9uLmNvbnRleHQ6bnVsbCxvPW4uYWxwaGEhPT12b2lkIDA/bi5hbHBoYTohMSxpPW4uZGVwdGghPT12b2lkIDA/bi5kZXB0aDohMCxhPW4uc3RlbmNpbCE9PXZvaWQgMD9uLnN0ZW5jaWw6ITAscj1uLmFudGlhbGlhcyE9PXZvaWQgMD9uLmFudGlhbGlhczohMSxzPW4ucHJlbXVsdGlwbGllZEFscGhhIT09dm9pZCAwP24ucHJlbXVsdGlwbGllZEFscGhhOiEwLGw9bi5wcmVzZXJ2ZURyYXdpbmdCdWZmZXIhPT12b2lkIDA/bi5wcmVzZXJ2ZURyYXdpbmdCdWZmZXI6ITEsYz1uLnBvd2VyUHJlZmVyZW5jZSE9PXZvaWQgMD9uLnBvd2VyUHJlZmVyZW5jZToiZGVmYXVsdCIsbT1uLmZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQhPT12b2lkIDA/bi5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiExLGY9bnVsbCxwPW51bGwsZz1bXSxfPVtdO3RoaXMuZG9tRWxlbWVudD10LHRoaXMuZGVidWc9e2NoZWNrU2hhZGVyRXJyb3JzOiEwfSx0aGlzLmF1dG9DbGVhcj0hMCx0aGlzLmF1dG9DbGVhckNvbG9yPSEwLHRoaXMuYXV0b0NsZWFyRGVwdGg9ITAsdGhpcy5hdXRvQ2xlYXJTdGVuY2lsPSEwLHRoaXMuc29ydE9iamVjdHM9ITAsdGhpcy5jbGlwcGluZ1BsYW5lcz1bXSx0aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkPSExLHRoaXMub3V0cHV0RW5jb2Rpbmc9THgsdGhpcy5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz0hMSx0aGlzLnRvbmVNYXBwaW5nPUl4LHRoaXMudG9uZU1hcHBpbmdFeHBvc3VyZT0xO2xldCBNPXRoaXMseT0hMSxPPTAsYj0wLFI9bnVsbCxFPS0xLGo9bnVsbCxydD1uZXcgY2EsSj1uZXcgY2EsRXQ9bnVsbCxqdD10LndpZHRoLGt0PXQuaGVpZ2h0LHc9MSxVPW51bGwsbnQ9bnVsbCxsdD1uZXcgY2EoMCwwLGp0LGt0KSxidD1uZXcgY2EoMCwwLGp0LGt0KSxvdD0hMSx1dD1uZXcgaFMsZ3Q9ITEsV3Q9ITEsUnQ9bnVsbCxHdD1uZXcgZW8seWU9bmV3IHB0LGplPXtiYWNrZ3JvdW5kOm51bGwsZm9nOm51bGwsZW52aXJvbm1lbnQ6bnVsbCxvdmVycmlkZU1hdGVyaWFsOm51bGwsaXNTY2VuZTohMH07ZnVuY3Rpb24gY2UoKXtyZXR1cm4gUj09PW51bGw/dzoxfWxldCBMdD1lO2Z1bmN0aW9uIFBuKGF0LFV0KXtmb3IobGV0IG5lPTA7bmU8YXQubGVuZ3RoO25lKyspe2xldCB0ZT1hdFtuZV0sT2U9dC5nZXRDb250ZXh0KHRlLFV0KTtpZihPZSE9PW51bGwpcmV0dXJuIE9lfXJldHVybiBudWxsfXRyeXtsZXQgYXQ9e2FscGhhOiEwLGRlcHRoOmksc3RlbmNpbDphLGFudGlhbGlhczpyLHByZW11bHRpcGxpZWRBbHBoYTpzLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjpsLHBvd2VyUHJlZmVyZW5jZTpjLGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6bX07aWYoInNldEF0dHJpYnV0ZSJpbiB0JiZ0LnNldEF0dHJpYnV0ZSgiZGF0YS1lbmdpbmUiLGB0aHJlZS5qcyByJHtKcX1gKSx0LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLHVvLCExKSx0LmFkZEV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIix4dCwhMSksTHQ9PT1udWxsKXtsZXQgVXQ9WyJ3ZWJnbDIiLCJ3ZWJnbCIsImV4cGVyaW1lbnRhbC13ZWJnbCJdO2lmKE0uaXNXZWJHTDFSZW5kZXJlcj09PSEwJiZVdC5zaGlmdCgpLEx0PVBuKFV0LGF0KSxMdD09PW51bGwpdGhyb3cgUG4oVXQpP25ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dCB3aXRoIHlvdXIgc2VsZWN0ZWQgYXR0cmlidXRlcy4iKTpuZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQuIil9THQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PT09dm9pZCAwJiYoTHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaChhdCl7dGhyb3cgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIithdC5tZXNzYWdlKSxhdH1sZXQgVmUsRGUscXQsTGUsSGUsaHQsUmUsZmUsVWUsRmUsQm4sd24scW8sbWEsamksZnQsaXQsZ2UsS2UsSG4sZGUsWG4sVm47ZnVuY3Rpb24gdG4oKXtWZT1uZXcgUFV0KEx0KSxEZT1uZXcgaFV0KEx0LFZlLG4pLFZlLmluaXQoRGUpLFhuPW5ldyBLWXQoTHQsVmUsRGUpLHF0PW5ldyBYWXQoTHQsVmUsRGUpLExlPW5ldyB2VXQoTHQpLEhlPW5ldyBGWXQsaHQ9bmV3IFFZdChMdCxWZSxxdCxIZSxEZSxYbixMZSksUmU9bmV3IENVdChNKSxmZT1uZXcgT1V0KE0pLFVlPW5ldyBCQnQoTHQsRGUpLFZuPW5ldyBnVXQoTHQsVmUsVWUsRGUpLEZlPW5ldyB5VXQoTHQsVWUsTGUsVm4pLEJuPW5ldyBFVXQoTHQsRmUsVWUsTGUpLEtlPW5ldyBSVXQoTHQsRGUsaHQpLGZ0PW5ldyBfVXQoSGUpLHduPW5ldyBIWXQoTSxSZSxmZSxWZSxEZSxWbixmdCkscW89bmV3ICRZdChIZSksbWE9bmV3IEJZdCxqaT1uZXcgV1l0KFZlLERlKSxnZT1uZXcgZFV0KE0sUmUscXQsQm4sbyxzKSxpdD1uZXcgWWd0KE0sQm4sRGUpLEhuPW5ldyB1VXQoTHQsVmUsTGUsRGUpLGRlPW5ldyB4VXQoTHQsVmUsTGUsRGUpLExlLnByb2dyYW1zPXduLnByb2dyYW1zLE0uY2FwYWJpbGl0aWVzPURlLE0uZXh0ZW5zaW9ucz1WZSxNLnByb3BlcnRpZXM9SGUsTS5yZW5kZXJMaXN0cz1tYSxNLnNoYWRvd01hcD1pdCxNLnN0YXRlPXF0LE0uaW5mbz1MZX10bigpO2xldCBjbj1uZXcgUVcoTSxMdCk7dGhpcy54cj1jbix0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gTHR9LHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gTHQuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKX0sdGhpcy5mb3JjZUNvbnRleHRMb3NzPWZ1bmN0aW9uKCl7bGV0IGF0PVZlLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7YXQmJmF0Lmxvc2VDb250ZXh0KCl9LHRoaXMuZm9yY2VDb250ZXh0UmVzdG9yZT1mdW5jdGlvbigpe2xldCBhdD1WZS5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO2F0JiZhdC5yZXN0b3JlQ29udGV4dCgpfSx0aGlzLmdldFBpeGVsUmF0aW89ZnVuY3Rpb24oKXtyZXR1cm4gd30sdGhpcy5zZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKGF0KXthdCE9PXZvaWQgMCYmKHc9YXQsdGhpcy5zZXRTaXplKGp0LGt0LCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbihhdCl7cmV0dXJuIGF0LnNldChqdCxrdCl9LHRoaXMuc2V0U2l6ZT1mdW5jdGlvbihhdCxVdCxuZSl7aWYoY24uaXNQcmVzZW50aW5nKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpO3JldHVybn1qdD1hdCxrdD1VdCx0LndpZHRoPU1hdGguZmxvb3IoYXQqdyksdC5oZWlnaHQ9TWF0aC5mbG9vcihVdCp3KSxuZSE9PSExJiYodC5zdHlsZS53aWR0aD1hdCsicHgiLHQuc3R5bGUuaGVpZ2h0PVV0KyJweCIpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLGF0LFV0KX0sdGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbihhdCl7cmV0dXJuIGF0LnNldChqdCp3LGt0KncpLmZsb29yKCl9LHRoaXMuc2V0RHJhd2luZ0J1ZmZlclNpemU9ZnVuY3Rpb24oYXQsVXQsbmUpe2p0PWF0LGt0PVV0LHc9bmUsdC53aWR0aD1NYXRoLmZsb29yKGF0Km5lKSx0LmhlaWdodD1NYXRoLmZsb29yKFV0Km5lKSx0aGlzLnNldFZpZXdwb3J0KDAsMCxhdCxVdCl9LHRoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKGF0KXtyZXR1cm4gYXQuY29weShydCl9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24oYXQpe3JldHVybiBhdC5jb3B5KGx0KX0sdGhpcy5zZXRWaWV3cG9ydD1mdW5jdGlvbihhdCxVdCxuZSx0ZSl7YXQuaXNWZWN0b3I0P2x0LnNldChhdC54LGF0LnksYXQueixhdC53KTpsdC5zZXQoYXQsVXQsbmUsdGUpLHF0LnZpZXdwb3J0KHJ0LmNvcHkobHQpLm11bHRpcGx5U2NhbGFyKHcpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3I9ZnVuY3Rpb24oYXQpe3JldHVybiBhdC5jb3B5KGJ0KX0sdGhpcy5zZXRTY2lzc29yPWZ1bmN0aW9uKGF0LFV0LG5lLHRlKXthdC5pc1ZlY3RvcjQ/YnQuc2V0KGF0LngsYXQueSxhdC56LGF0LncpOmJ0LnNldChhdCxVdCxuZSx0ZSkscXQuc2Npc3NvcihKLmNvcHkoYnQpLm11bHRpcGx5U2NhbGFyKHcpLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIG90fSx0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKGF0KXtxdC5zZXRTY2lzc29yVGVzdChvdD1hdCl9LHRoaXMuc2V0T3BhcXVlU29ydD1mdW5jdGlvbihhdCl7VT1hdH0sdGhpcy5zZXRUcmFuc3BhcmVudFNvcnQ9ZnVuY3Rpb24oYXQpe250PWF0fSx0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24oYXQpe3JldHVybiBhdC5jb3B5KGdlLmdldENsZWFyQ29sb3IoKSl9LHRoaXMuc2V0Q2xlYXJDb2xvcj1mdW5jdGlvbigpe2dlLnNldENsZWFyQ29sb3IuYXBwbHkoZ2UsYXJndW1lbnRzKX0sdGhpcy5nZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7cmV0dXJuIGdlLmdldENsZWFyQWxwaGEoKX0sdGhpcy5zZXRDbGVhckFscGhhPWZ1bmN0aW9uKCl7Z2Uuc2V0Q2xlYXJBbHBoYS5hcHBseShnZSxhcmd1bWVudHMpfSx0aGlzLmNsZWFyPWZ1bmN0aW9uKGF0LFV0LG5lKXtsZXQgdGU9MDsoYXQ9PT12b2lkIDB8fGF0KSYmKHRlfD0xNjM4NCksKFV0PT09dm9pZCAwfHxVdCkmJih0ZXw9MjU2KSwobmU9PT12b2lkIDB8fG5lKSYmKHRlfD0xMDI0KSxMdC5jbGVhcih0ZSl9LHRoaXMuY2xlYXJDb2xvcj1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITAsITEsITEpfSx0aGlzLmNsZWFyRGVwdGg9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCEwLCExKX0sdGhpcy5jbGVhclN0ZW5jaWw9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCExLCEwKX0sdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0Iix1bywhMSksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIseHQsITEpLG1hLmRpc3Bvc2UoKSxqaS5kaXNwb3NlKCksSGUuZGlzcG9zZSgpLFJlLmRpc3Bvc2UoKSxmZS5kaXNwb3NlKCksQm4uZGlzcG9zZSgpLFZuLmRpc3Bvc2UoKSx3bi5kaXNwb3NlKCksY24uZGlzcG9zZSgpLGNuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25zdGFydCIsWm8pLGNuLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlc3Npb25lbmQiLFRhKSxSdCYmKFJ0LmRpc3Bvc2UoKSxSdD1udWxsKSx0cy5zdG9wKCl9O2Z1bmN0aW9uIHVvKGF0KXthdC5wcmV2ZW50RGVmYXVsdCgpLGNvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IExvc3QuIikseT0hMH1mdW5jdGlvbiB4dCgpe2NvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IFJlc3RvcmVkLiIpLHk9ITE7bGV0IGF0PUxlLmF1dG9SZXNldCxVdD1pdC5lbmFibGVkLG5lPWl0LmF1dG9VcGRhdGUsdGU9aXQubmVlZHNVcGRhdGUsT2U9aXQudHlwZTt0bigpLExlLmF1dG9SZXNldD1hdCxpdC5lbmFibGVkPVV0LGl0LmF1dG9VcGRhdGU9bmUsaXQubmVlZHNVcGRhdGU9dGUsaXQudHlwZT1PZX1mdW5jdGlvbiBBbihhdCl7bGV0IFV0PWF0LnRhcmdldDtVdC5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixBbiksQmUoVXQpfWZ1bmN0aW9uIEJlKGF0KXtybyhhdCksSGUucmVtb3ZlKGF0KX1mdW5jdGlvbiBybyhhdCl7bGV0IFV0PUhlLmdldChhdCkucHJvZ3JhbXM7VXQhPT12b2lkIDAmJihVdC5mb3JFYWNoKGZ1bmN0aW9uKG5lKXt3bi5yZWxlYXNlUHJvZ3JhbShuZSl9KSxhdC5pc1NoYWRlck1hdGVyaWFsJiZ3bi5yZWxlYXNlU2hhZGVyQ2FjaGUoYXQpKX10aGlzLnJlbmRlckJ1ZmZlckRpcmVjdD1mdW5jdGlvbihhdCxVdCxuZSx0ZSxPZSxtbyl7VXQ9PT1udWxsJiYoVXQ9amUpO2xldCBLPU9lLmlzTWVzaCYmT2UubWF0cml4V29ybGQuZGV0ZXJtaW5hbnQoKTwwLG10PUM3KGF0LFV0LG5lLHRlLE9lKTtxdC5zZXRNYXRlcmlhbCh0ZSxLKTtsZXQgZHQ9bmUuaW5kZXgsTXQ9bmUuYXR0cmlidXRlcy5wb3NpdGlvbjtpZihkdD09PW51bGwpe2lmKE10PT09dm9pZCAwfHxNdC5jb3VudD09PTApcmV0dXJufWVsc2UgaWYoZHQuY291bnQ9PT0wKXJldHVybjtsZXQgQXQ9MTt0ZS53aXJlZnJhbWU9PT0hMCYmKGR0PUZlLmdldFdpcmVmcmFtZUF0dHJpYnV0ZShuZSksQXQ9MiksVm4uc2V0dXAoT2UsdGUsbXQsbmUsZHQpO2xldCBadCxDZT1IbjtkdCE9PW51bGwmJihadD1VZS5nZXQoZHQpLENlPWRlLENlLnNldEluZGV4KFp0KSk7bGV0IFllPWR0IT09bnVsbD9kdC5jb3VudDpNdC5jb3VudCxobj1uZS5kcmF3UmFuZ2Uuc3RhcnQqQXQseGU9bmUuZHJhd1JhbmdlLmNvdW50KkF0LFFlPW1vIT09bnVsbD9tby5zdGFydCpBdDowLEdlPW1vIT09bnVsbD9tby5jb3VudCpBdDoxLzAsX249TWF0aC5tYXgoaG4sUWUpLHNvPU1hdGgubWluKFllLGhuK3hlLFFlK0dlKS0xLG5vPU1hdGgubWF4KDAsc28tX24rMSk7aWYobm8hPT0wKXtpZihPZS5pc01lc2gpdGUud2lyZWZyYW1lPT09ITA/KHF0LnNldExpbmVXaWR0aCh0ZS53aXJlZnJhbWVMaW5ld2lkdGgqY2UoKSksQ2Uuc2V0TW9kZSgxKSk6Q2Uuc2V0TW9kZSg0KTtlbHNlIGlmKE9lLmlzTGluZSl7bGV0IGhvPXRlLmxpbmV3aWR0aDtobz09PXZvaWQgMCYmKGhvPTEpLHF0LnNldExpbmVXaWR0aChobypjZSgpKSxPZS5pc0xpbmVTZWdtZW50cz9DZS5zZXRNb2RlKDEpOk9lLmlzTGluZUxvb3A/Q2Uuc2V0TW9kZSgyKTpDZS5zZXRNb2RlKDMpfWVsc2UgT2UuaXNQb2ludHM/Q2Uuc2V0TW9kZSgwKTpPZS5pc1Nwcml0ZSYmQ2Uuc2V0TW9kZSg0KTtpZihPZS5pc0luc3RhbmNlZE1lc2gpQ2UucmVuZGVySW5zdGFuY2VzKF9uLG5vLE9lLmNvdW50KTtlbHNlIGlmKG5lLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpe2xldCBobz1NYXRoLm1pbihuZS5pbnN0YW5jZUNvdW50LG5lLl9tYXhJbnN0YW5jZUNvdW50KTtDZS5yZW5kZXJJbnN0YW5jZXMoX24sbm8saG8pfWVsc2UgQ2UucmVuZGVyKF9uLG5vKX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbihhdCxVdCl7cD1qaS5nZXQoYXQpLHAuaW5pdCgpLF8ucHVzaChwKSxhdC50cmF2ZXJzZVZpc2libGUoZnVuY3Rpb24obmUpe25lLmlzTGlnaHQmJm5lLmxheWVycy50ZXN0KFV0LmxheWVycykmJihwLnB1c2hMaWdodChuZSksbmUuY2FzdFNoYWRvdyYmcC5wdXNoU2hhZG93KG5lKSl9KSxwLnNldHVwTGlnaHRzKE0ucGh5c2ljYWxseUNvcnJlY3RMaWdodHMpLGF0LnRyYXZlcnNlKGZ1bmN0aW9uKG5lKXtsZXQgdGU9bmUubWF0ZXJpYWw7aWYodGUpaWYoQXJyYXkuaXNBcnJheSh0ZSkpZm9yKGxldCBPZT0wO09lPHRlLmxlbmd0aDtPZSsrKXtsZXQgbW89dGVbT2VdO2pTKG1vLGF0LG5lKX1lbHNlIGpTKHRlLGF0LG5lKX0pLF8ucG9wKCkscD1udWxsfTtsZXQgaGU9bnVsbDtmdW5jdGlvbiBxbihhdCl7aGUmJmhlKGF0KX1mdW5jdGlvbiBabygpe3RzLnN0b3AoKX1mdW5jdGlvbiBUYSgpe3RzLnN0YXJ0KCl9bGV0IHRzPW5ldyBEZ3Q7dHMuc2V0QW5pbWF0aW9uTG9vcChxbiksdHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnRzLnNldENvbnRleHQod2luZG93KSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24oYXQpe2hlPWF0LGNuLnNldEFuaW1hdGlvbkxvb3AoYXQpLGF0PT09bnVsbD90cy5zdG9wKCk6dHMuc3RhcnQoKX0sY24uYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbnN0YXJ0IixabyksY24uYWRkRXZlbnRMaXN0ZW5lcigic2Vzc2lvbmVuZCIsVGEpLHRoaXMucmVuZGVyPWZ1bmN0aW9uKGF0LFV0KXtpZihVdCE9PXZvaWQgMCYmVXQuaXNDYW1lcmEhPT0hMCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZW5kZXI6IGNhbWVyYSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQ2FtZXJhLiIpO3JldHVybn1pZih5PT09ITApcmV0dXJuO2F0LmF1dG9VcGRhdGU9PT0hMCYmYXQudXBkYXRlTWF0cml4V29ybGQoKSxVdC5wYXJlbnQ9PT1udWxsJiZVdC51cGRhdGVNYXRyaXhXb3JsZCgpLGNuLmVuYWJsZWQ9PT0hMCYmY24uaXNQcmVzZW50aW5nPT09ITAmJihjbi5jYW1lcmFBdXRvVXBkYXRlPT09ITAmJmNuLnVwZGF0ZUNhbWVyYShVdCksVXQ9Y24uZ2V0Q2FtZXJhKCkpLGF0LmlzU2NlbmU9PT0hMCYmYXQub25CZWZvcmVSZW5kZXIoTSxhdCxVdCxSKSxwPWppLmdldChhdCxfLmxlbmd0aCkscC5pbml0KCksXy5wdXNoKHApLEd0Lm11bHRpcGx5TWF0cmljZXMoVXQucHJvamVjdGlvbk1hdHJpeCxVdC5tYXRyaXhXb3JsZEludmVyc2UpLHV0LnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KEd0KSxXdD10aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkLGd0PWZ0LmluaXQodGhpcy5jbGlwcGluZ1BsYW5lcyxXdCxVdCksZj1tYS5nZXQoYXQsZy5sZW5ndGgpLGYuaW5pdCgpLGcucHVzaChmKSxzcihhdCxVdCwwLE0uc29ydE9iamVjdHMpLGYuZmluaXNoKCksTS5zb3J0T2JqZWN0cz09PSEwJiZmLnNvcnQoVSxudCksZ3Q9PT0hMCYmZnQuYmVnaW5TaGFkb3dzKCk7bGV0IG5lPXAuc3RhdGUuc2hhZG93c0FycmF5O2lmKGl0LnJlbmRlcihuZSxhdCxVdCksZ3Q9PT0hMCYmZnQuZW5kU2hhZG93cygpLHRoaXMuaW5mby5hdXRvUmVzZXQ9PT0hMCYmdGhpcy5pbmZvLnJlc2V0KCksZ2UucmVuZGVyKGYsYXQpLHAuc2V0dXBMaWdodHMoTS5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyksVXQuaXNBcnJheUNhbWVyYSl7bGV0IHRlPVV0LmNhbWVyYXM7Zm9yKGxldCBPZT0wLG1vPXRlLmxlbmd0aDtPZTxtbztPZSsrKXtsZXQgSz10ZVtPZV07SmgoZixhdCxLLEsudmlld3BvcnQpfX1lbHNlIEpoKGYsYXQsVXQpO1IhPT1udWxsJiYoaHQudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQoUiksaHQudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKFIpKSxhdC5pc1NjZW5lPT09ITAmJmF0Lm9uQWZ0ZXJSZW5kZXIoTSxhdCxVdCkscXQuYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxxdC5idWZmZXJzLmRlcHRoLnNldE1hc2soITApLHF0LmJ1ZmZlcnMuY29sb3Iuc2V0TWFzayghMCkscXQuc2V0UG9seWdvbk9mZnNldCghMSksVm4ucmVzZXREZWZhdWx0U3RhdGUoKSxFPS0xLGo9bnVsbCxfLnBvcCgpLF8ubGVuZ3RoPjA/cD1fW18ubGVuZ3RoLTFdOnA9bnVsbCxnLnBvcCgpLGcubGVuZ3RoPjA/Zj1nW2cubGVuZ3RoLTFdOmY9bnVsbH07ZnVuY3Rpb24gc3IoYXQsVXQsbmUsdGUpe2lmKGF0LnZpc2libGU9PT0hMSlyZXR1cm47aWYoYXQubGF5ZXJzLnRlc3QoVXQubGF5ZXJzKSl7aWYoYXQuaXNHcm91cCluZT1hdC5yZW5kZXJPcmRlcjtlbHNlIGlmKGF0LmlzTE9EKWF0LmF1dG9VcGRhdGU9PT0hMCYmYXQudXBkYXRlKFV0KTtlbHNlIGlmKGF0LmlzTGlnaHQpcC5wdXNoTGlnaHQoYXQpLGF0LmNhc3RTaGFkb3cmJnAucHVzaFNoYWRvdyhhdCk7ZWxzZSBpZihhdC5pc1Nwcml0ZSl7aWYoIWF0LmZydXN0dW1DdWxsZWR8fHV0LmludGVyc2VjdHNTcHJpdGUoYXQpKXt0ZSYmeWUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGF0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoR3QpO2xldCBLPUJuLnVwZGF0ZShhdCksbXQ9YXQubWF0ZXJpYWw7bXQudmlzaWJsZSYmZi5wdXNoKGF0LEssbXQsbmUseWUueixudWxsKX19ZWxzZSBpZigoYXQuaXNNZXNofHxhdC5pc0xpbmV8fGF0LmlzUG9pbnRzKSYmKGF0LmlzU2tpbm5lZE1lc2gmJmF0LnNrZWxldG9uLmZyYW1lIT09TGUucmVuZGVyLmZyYW1lJiYoYXQuc2tlbGV0b24udXBkYXRlKCksYXQuc2tlbGV0b24uZnJhbWU9TGUucmVuZGVyLmZyYW1lKSwhYXQuZnJ1c3R1bUN1bGxlZHx8dXQuaW50ZXJzZWN0c09iamVjdChhdCkpKXt0ZSYmeWUuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGF0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoR3QpO2xldCBLPUJuLnVwZGF0ZShhdCksbXQ9YXQubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShtdCkpe2xldCBkdD1LLmdyb3Vwcztmb3IobGV0IE10PTAsQXQ9ZHQubGVuZ3RoO010PEF0O010Kyspe2xldCBadD1kdFtNdF0sQ2U9bXRbWnQubWF0ZXJpYWxJbmRleF07Q2UmJkNlLnZpc2libGUmJmYucHVzaChhdCxLLENlLG5lLHllLnosWnQpfX1lbHNlIG10LnZpc2libGUmJmYucHVzaChhdCxLLG10LG5lLHllLnosbnVsbCl9fWxldCBtbz1hdC5jaGlsZHJlbjtmb3IobGV0IEs9MCxtdD1tby5sZW5ndGg7SzxtdDtLKyspc3IobW9bS10sVXQsbmUsdGUpfWZ1bmN0aW9uIEpoKGF0LFV0LG5lLHRlKXtsZXQgT2U9YXQub3BhcXVlLG1vPWF0LnRyYW5zbWlzc2l2ZSxLPWF0LnRyYW5zcGFyZW50O3Auc2V0dXBMaWdodHNWaWV3KG5lKSxtby5sZW5ndGg+MCYmJGgoT2UsVXQsbmUpLHRlJiZxdC52aWV3cG9ydChydC5jb3B5KHRlKSksT2UubGVuZ3RoPjAmJiRQKE9lLFV0LG5lKSxtby5sZW5ndGg+MCYmJFAobW8sVXQsbmUpLEsubGVuZ3RoPjAmJiRQKEssVXQsbmUpfWZ1bmN0aW9uICRoKGF0LFV0LG5lKXtpZihSdD09PW51bGwpe2xldCBLPXI9PT0hMCYmRGUuaXNXZWJHTDI9PT0hMD9yNDpOZDtSdD1uZXcgSygxMDI0LDEwMjQse2dlbmVyYXRlTWlwbWFwczohMCx0eXBlOlhuLmNvbnZlcnQobFMpIT09bnVsbD9sUzp6eCxtaW5GaWx0ZXI6T0YsbWFnRmlsdGVyOmNsLHdyYXBTOm5oLHdyYXBUOm5oLHVzZVJlbmRlclRvVGV4dHVyZTpWZS5oYXMoIldFQkdMX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpfSl9bGV0IHRlPU0uZ2V0UmVuZGVyVGFyZ2V0KCk7TS5zZXRSZW5kZXJUYXJnZXQoUnQpLE0uY2xlYXIoKTtsZXQgT2U9TS50b25lTWFwcGluZztNLnRvbmVNYXBwaW5nPUl4LCRQKGF0LFV0LG5lKSxNLnRvbmVNYXBwaW5nPU9lLGh0LnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KFJ0KSxodC51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXAoUnQpLE0uc2V0UmVuZGVyVGFyZ2V0KHRlKX1mdW5jdGlvbiAkUChhdCxVdCxuZSl7bGV0IHRlPVV0LmlzU2NlbmU9PT0hMD9VdC5vdmVycmlkZU1hdGVyaWFsOm51bGw7Zm9yKGxldCBPZT0wLG1vPWF0Lmxlbmd0aDtPZTxtbztPZSsrKXtsZXQgSz1hdFtPZV0sbXQ9Sy5vYmplY3QsZHQ9Sy5nZW9tZXRyeSxNdD10ZT09PW51bGw/Sy5tYXRlcmlhbDp0ZSxBdD1LLmdyb3VwO210LmxheWVycy50ZXN0KG5lLmxheWVycykmJlE0KG10LFV0LG5lLGR0LE10LEF0KX19ZnVuY3Rpb24gUTQoYXQsVXQsbmUsdGUsT2UsbW8pe2F0Lm9uQmVmb3JlUmVuZGVyKE0sVXQsbmUsdGUsT2UsbW8pLGF0Lm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG5lLm1hdHJpeFdvcmxkSW52ZXJzZSxhdC5tYXRyaXhXb3JsZCksYXQubm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeChhdC5tb2RlbFZpZXdNYXRyaXgpLE9lLm9uQmVmb3JlUmVuZGVyKE0sVXQsbmUsdGUsYXQsbW8pLE9lLnRyYW5zcGFyZW50PT09ITAmJk9lLnNpZGU9PT1wUz8oT2Uuc2lkZT1sbCxPZS5uZWVkc1VwZGF0ZT0hMCxNLnJlbmRlckJ1ZmZlckRpcmVjdChuZSxVdCx0ZSxPZSxhdCxtbyksT2Uuc2lkZT1uNCxPZS5uZWVkc1VwZGF0ZT0hMCxNLnJlbmRlckJ1ZmZlckRpcmVjdChuZSxVdCx0ZSxPZSxhdCxtbyksT2Uuc2lkZT1wUyk6TS5yZW5kZXJCdWZmZXJEaXJlY3QobmUsVXQsdGUsT2UsYXQsbW8pLGF0Lm9uQWZ0ZXJSZW5kZXIoTSxVdCxuZSx0ZSxPZSxtbyl9ZnVuY3Rpb24galMoYXQsVXQsbmUpe1V0LmlzU2NlbmUhPT0hMCYmKFV0PWplKTtsZXQgdGU9SGUuZ2V0KGF0KSxPZT1wLnN0YXRlLmxpZ2h0cyxtbz1wLnN0YXRlLnNoYWRvd3NBcnJheSxLPU9lLnN0YXRlLnZlcnNpb24sbXQ9d24uZ2V0UGFyYW1ldGVycyhhdCxPZS5zdGF0ZSxtbyxVdCxuZSksZHQ9d24uZ2V0UHJvZ3JhbUNhY2hlS2V5KG10KSxNdD10ZS5wcm9ncmFtczt0ZS5lbnZpcm9ubWVudD1hdC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP1V0LmVudmlyb25tZW50Om51bGwsdGUuZm9nPVV0LmZvZyx0ZS5lbnZNYXA9KGF0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/ZmU6UmUpLmdldChhdC5lbnZNYXB8fHRlLmVudmlyb25tZW50KSxNdD09PXZvaWQgMCYmKGF0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLEFuKSxNdD1uZXcgTWFwLHRlLnByb2dyYW1zPU10KTtsZXQgQXQ9TXQuZ2V0KGR0KTtpZihBdCE9PXZvaWQgMCl7aWYodGUuY3VycmVudFByb2dyYW09PT1BdCYmdGUubGlnaHRzU3RhdGVWZXJzaW9uPT09SylyZXR1cm4gSzQoYXQsbXQpLEF0fWVsc2UgbXQudW5pZm9ybXM9d24uZ2V0VW5pZm9ybXMoYXQpLGF0Lm9uQnVpbGQobmUsbXQsTSksYXQub25CZWZvcmVDb21waWxlKG10LE0pLEF0PXduLmFjcXVpcmVQcm9ncmFtKG10LGR0KSxNdC5zZXQoZHQsQXQpLHRlLnVuaWZvcm1zPW10LnVuaWZvcm1zO2xldCBadD10ZS51bmlmb3JtczsoIWF0LmlzU2hhZGVyTWF0ZXJpYWwmJiFhdC5pc1Jhd1NoYWRlck1hdGVyaWFsfHxhdC5jbGlwcGluZz09PSEwKSYmKFp0LmNsaXBwaW5nUGxhbmVzPWZ0LnVuaWZvcm0pLEs0KGF0LG10KSx0ZS5uZWVkc0xpZ2h0cz1iNyhhdCksdGUubGlnaHRzU3RhdGVWZXJzaW9uPUssdGUubmVlZHNMaWdodHMmJihadC5hbWJpZW50TGlnaHRDb2xvci52YWx1ZT1PZS5zdGF0ZS5hbWJpZW50LFp0LmxpZ2h0UHJvYmUudmFsdWU9T2Uuc3RhdGUucHJvYmUsWnQuZGlyZWN0aW9uYWxMaWdodHMudmFsdWU9T2Uuc3RhdGUuZGlyZWN0aW9uYWwsWnQuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MudmFsdWU9T2Uuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3csWnQuc3BvdExpZ2h0cy52YWx1ZT1PZS5zdGF0ZS5zcG90LFp0LnNwb3RMaWdodFNoYWRvd3MudmFsdWU9T2Uuc3RhdGUuc3BvdFNoYWRvdyxadC5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1PZS5zdGF0ZS5yZWN0QXJlYSxadC5sdGNfMS52YWx1ZT1PZS5zdGF0ZS5yZWN0QXJlYUxUQzEsWnQubHRjXzIudmFsdWU9T2Uuc3RhdGUucmVjdEFyZWFMVEMyLFp0LnBvaW50TGlnaHRzLnZhbHVlPU9lLnN0YXRlLnBvaW50LFp0LnBvaW50TGlnaHRTaGFkb3dzLnZhbHVlPU9lLnN0YXRlLnBvaW50U2hhZG93LFp0LmhlbWlzcGhlcmVMaWdodHMudmFsdWU9T2Uuc3RhdGUuaGVtaSxadC5kaXJlY3Rpb25hbFNoYWRvd01hcC52YWx1ZT1PZS5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hcCxadC5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC52YWx1ZT1PZS5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeCxadC5zcG90U2hhZG93TWFwLnZhbHVlPU9lLnN0YXRlLnNwb3RTaGFkb3dNYXAsWnQuc3BvdFNoYWRvd01hdHJpeC52YWx1ZT1PZS5zdGF0ZS5zcG90U2hhZG93TWF0cml4LFp0LnBvaW50U2hhZG93TWFwLnZhbHVlPU9lLnN0YXRlLnBvaW50U2hhZG93TWFwLFp0LnBvaW50U2hhZG93TWF0cml4LnZhbHVlPU9lLnN0YXRlLnBvaW50U2hhZG93TWF0cml4KTtsZXQgQ2U9QXQuZ2V0VW5pZm9ybXMoKSxZZT1GeC5zZXFXaXRoVmFsdWUoQ2Uuc2VxLFp0KTtyZXR1cm4gdGUuY3VycmVudFByb2dyYW09QXQsdGUudW5pZm9ybXNMaXN0PVllLEF0fWZ1bmN0aW9uIEs0KGF0LFV0KXtsZXQgbmU9SGUuZ2V0KGF0KTtuZS5vdXRwdXRFbmNvZGluZz1VdC5vdXRwdXRFbmNvZGluZyxuZS5pbnN0YW5jaW5nPVV0Lmluc3RhbmNpbmcsbmUuc2tpbm5pbmc9VXQuc2tpbm5pbmcsbmUubW9ycGhUYXJnZXRzPVV0Lm1vcnBoVGFyZ2V0cyxuZS5tb3JwaE5vcm1hbHM9VXQubW9ycGhOb3JtYWxzLG5lLm1vcnBoVGFyZ2V0c0NvdW50PVV0Lm1vcnBoVGFyZ2V0c0NvdW50LG5lLm51bUNsaXBwaW5nUGxhbmVzPVV0Lm51bUNsaXBwaW5nUGxhbmVzLG5lLm51bUludGVyc2VjdGlvbj1VdC5udW1DbGlwSW50ZXJzZWN0aW9uLG5lLnZlcnRleEFscGhhcz1VdC52ZXJ0ZXhBbHBoYXMsbmUudmVydGV4VGFuZ2VudHM9VXQudmVydGV4VGFuZ2VudHMsbmUudG9uZU1hcHBpbmc9VXQudG9uZU1hcHBpbmd9ZnVuY3Rpb24gQzcoYXQsVXQsbmUsdGUsT2Upe1V0LmlzU2NlbmUhPT0hMCYmKFV0PWplKSxodC5yZXNldFRleHR1cmVVbml0cygpO2xldCBtbz1VdC5mb2csSz10ZS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP1V0LmVudmlyb25tZW50Om51bGwsbXQ9Uj09PW51bGw/TS5vdXRwdXRFbmNvZGluZzpSLmlzWFJSZW5kZXJUYXJnZXQ9PT0hMD9SLnRleHR1cmUuZW5jb2Rpbmc6THgsZHQ9KHRlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/ZmU6UmUpLmdldCh0ZS5lbnZNYXB8fEspLE10PXRlLnZlcnRleENvbG9ycz09PSEwJiYhIW5lLmF0dHJpYnV0ZXMuY29sb3ImJm5lLmF0dHJpYnV0ZXMuY29sb3IuaXRlbVNpemU9PT00LEF0PSEhdGUubm9ybWFsTWFwJiYhIW5lLmF0dHJpYnV0ZXMudGFuZ2VudCxadD0hIW5lLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixDZT0hIW5lLm1vcnBoQXR0cmlidXRlcy5ub3JtYWwsWWU9bmUubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uP25lLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbi5sZW5ndGg6MCxobj10ZS50b25lTWFwcGVkP00udG9uZU1hcHBpbmc6SXgseGU9SGUuZ2V0KHRlKSxRZT1wLnN0YXRlLmxpZ2h0cztpZihndD09PSEwJiYoV3Q9PT0hMHx8YXQhPT1qKSl7bGV0IGVuPWF0PT09aiYmdGUuaWQ9PT1FO2Z0LnNldFN0YXRlKHRlLGF0LGVuKX1sZXQgR2U9ITE7dGUudmVyc2lvbj09PXhlLl9fdmVyc2lvbj8oeGUubmVlZHNMaWdodHMmJnhlLmxpZ2h0c1N0YXRlVmVyc2lvbiE9PVFlLnN0YXRlLnZlcnNpb258fHhlLm91dHB1dEVuY29kaW5nIT09bXR8fE9lLmlzSW5zdGFuY2VkTWVzaCYmeGUuaW5zdGFuY2luZz09PSExfHwhT2UuaXNJbnN0YW5jZWRNZXNoJiZ4ZS5pbnN0YW5jaW5nPT09ITB8fE9lLmlzU2tpbm5lZE1lc2gmJnhlLnNraW5uaW5nPT09ITF8fCFPZS5pc1NraW5uZWRNZXNoJiZ4ZS5za2lubmluZz09PSEwfHx4ZS5lbnZNYXAhPT1kdHx8dGUuZm9nJiZ4ZS5mb2chPT1tb3x8eGUubnVtQ2xpcHBpbmdQbGFuZXMhPT12b2lkIDAmJih4ZS5udW1DbGlwcGluZ1BsYW5lcyE9PWZ0Lm51bVBsYW5lc3x8eGUubnVtSW50ZXJzZWN0aW9uIT09ZnQubnVtSW50ZXJzZWN0aW9uKXx8eGUudmVydGV4QWxwaGFzIT09TXR8fHhlLnZlcnRleFRhbmdlbnRzIT09QXR8fHhlLm1vcnBoVGFyZ2V0cyE9PVp0fHx4ZS5tb3JwaE5vcm1hbHMhPT1DZXx8eGUudG9uZU1hcHBpbmchPT1obnx8RGUuaXNXZWJHTDI9PT0hMCYmeGUubW9ycGhUYXJnZXRzQ291bnQhPT1ZZSkmJihHZT0hMCk6KEdlPSEwLHhlLl9fdmVyc2lvbj10ZS52ZXJzaW9uKTtsZXQgX249eGUuY3VycmVudFByb2dyYW07R2U9PT0hMCYmKF9uPWpTKHRlLFV0LE9lKSk7bGV0IHNvPSExLG5vPSExLGhvPSExLERvPV9uLmdldFVuaWZvcm1zKCksTW49eGUudW5pZm9ybXM7aWYocXQudXNlUHJvZ3JhbShfbi5wcm9ncmFtKSYmKHNvPSEwLG5vPSEwLGhvPSEwKSx0ZS5pZCE9PUUmJihFPXRlLmlkLG5vPSEwKSxzb3x8aiE9PWF0KXtpZihEby5zZXRWYWx1ZShMdCwicHJvamVjdGlvbk1hdHJpeCIsYXQucHJvamVjdGlvbk1hdHJpeCksRGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmRG8uc2V0VmFsdWUoTHQsImxvZ0RlcHRoQnVmRkMiLDIvKE1hdGgubG9nKGF0LmZhcisxKS9NYXRoLkxOMikpLGohPT1hdCYmKGo9YXQsbm89ITAsaG89ITApLHRlLmlzU2hhZGVyTWF0ZXJpYWx8fHRlLmlzTWVzaFBob25nTWF0ZXJpYWx8fHRlLmlzTWVzaFRvb25NYXRlcmlhbHx8dGUuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8dGUuZW52TWFwKXtsZXQgZW49RG8ubWFwLmNhbWVyYVBvc2l0aW9uO2VuIT09dm9pZCAwJiZlbi5zZXRWYWx1ZShMdCx5ZS5zZXRGcm9tTWF0cml4UG9zaXRpb24oYXQubWF0cml4V29ybGQpKX0odGUuaXNNZXNoUGhvbmdNYXRlcmlhbHx8dGUuaXNNZXNoVG9vbk1hdGVyaWFsfHx0ZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fHRlLmlzTWVzaEJhc2ljTWF0ZXJpYWx8fHRlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fHRlLmlzU2hhZGVyTWF0ZXJpYWwpJiZEby5zZXRWYWx1ZShMdCwiaXNPcnRob2dyYXBoaWMiLGF0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPT09ITApLCh0ZS5pc01lc2hQaG9uZ01hdGVyaWFsfHx0ZS5pc01lc2hUb29uTWF0ZXJpYWx8fHRlLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8dGUuaXNNZXNoQmFzaWNNYXRlcmlhbHx8dGUuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8dGUuaXNTaGFkZXJNYXRlcmlhbHx8dGUuaXNTaGFkb3dNYXRlcmlhbHx8T2UuaXNTa2lubmVkTWVzaCkmJkRvLnNldFZhbHVlKEx0LCJ2aWV3TWF0cml4IixhdC5tYXRyaXhXb3JsZEludmVyc2UpfWlmKE9lLmlzU2tpbm5lZE1lc2gpe0RvLnNldE9wdGlvbmFsKEx0LE9lLCJiaW5kTWF0cml4IiksRG8uc2V0T3B0aW9uYWwoTHQsT2UsImJpbmRNYXRyaXhJbnZlcnNlIik7bGV0IGVuPU9lLnNrZWxldG9uO2VuJiYoRGUuZmxvYXRWZXJ0ZXhUZXh0dXJlcz8oZW4uYm9uZVRleHR1cmU9PT1udWxsJiZlbi5jb21wdXRlQm9uZVRleHR1cmUoKSxEby5zZXRWYWx1ZShMdCwiYm9uZVRleHR1cmUiLGVuLmJvbmVUZXh0dXJlLGh0KSxEby5zZXRWYWx1ZShMdCwiYm9uZVRleHR1cmVTaXplIixlbi5ib25lVGV4dHVyZVNpemUpKTpEby5zZXRPcHRpb25hbChMdCxlbiwiYm9uZU1hdHJpY2VzIikpfXJldHVybiEhbmUmJihuZS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24hPT12b2lkIDB8fG5lLm1vcnBoQXR0cmlidXRlcy5ub3JtYWwhPT12b2lkIDApJiZLZS51cGRhdGUoT2UsbmUsdGUsX24pLChub3x8eGUucmVjZWl2ZVNoYWRvdyE9PU9lLnJlY2VpdmVTaGFkb3cpJiYoeGUucmVjZWl2ZVNoYWRvdz1PZS5yZWNlaXZlU2hhZG93LERvLnNldFZhbHVlKEx0LCJyZWNlaXZlU2hhZG93IixPZS5yZWNlaXZlU2hhZG93KSksbm8mJihEby5zZXRWYWx1ZShMdCwidG9uZU1hcHBpbmdFeHBvc3VyZSIsTS50b25lTWFwcGluZ0V4cG9zdXJlKSx4ZS5uZWVkc0xpZ2h0cyYmTTcoTW4saG8pLG1vJiZ0ZS5mb2cmJnFvLnJlZnJlc2hGb2dVbmlmb3JtcyhNbixtbykscW8ucmVmcmVzaE1hdGVyaWFsVW5pZm9ybXMoTW4sdGUsdyxrdCxSdCksRngudXBsb2FkKEx0LHhlLnVuaWZvcm1zTGlzdCxNbixodCkpLHRlLmlzU2hhZGVyTWF0ZXJpYWwmJnRlLnVuaWZvcm1zTmVlZFVwZGF0ZT09PSEwJiYoRngudXBsb2FkKEx0LHhlLnVuaWZvcm1zTGlzdCxNbixodCksdGUudW5pZm9ybXNOZWVkVXBkYXRlPSExKSx0ZS5pc1Nwcml0ZU1hdGVyaWFsJiZEby5zZXRWYWx1ZShMdCwiY2VudGVyIixPZS5jZW50ZXIpLERvLnNldFZhbHVlKEx0LCJtb2RlbFZpZXdNYXRyaXgiLE9lLm1vZGVsVmlld01hdHJpeCksRG8uc2V0VmFsdWUoTHQsIm5vcm1hbE1hdHJpeCIsT2Uubm9ybWFsTWF0cml4KSxEby5zZXRWYWx1ZShMdCwibW9kZWxNYXRyaXgiLE9lLm1hdHJpeFdvcmxkKSxfbn1mdW5jdGlvbiBNNyhhdCxVdCl7YXQuYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9VXQsYXQubGlnaHRQcm9iZS5uZWVkc1VwZGF0ZT1VdCxhdC5kaXJlY3Rpb25hbExpZ2h0cy5uZWVkc1VwZGF0ZT1VdCxhdC5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1VdCxhdC5wb2ludExpZ2h0cy5uZWVkc1VwZGF0ZT1VdCxhdC5wb2ludExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1VdCxhdC5zcG90TGlnaHRzLm5lZWRzVXBkYXRlPVV0LGF0LnNwb3RMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9VXQsYXQucmVjdEFyZWFMaWdodHMubmVlZHNVcGRhdGU9VXQsYXQuaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1VdH1mdW5jdGlvbiBiNyhhdCl7cmV0dXJuIGF0LmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8YXQuaXNNZXNoVG9vbk1hdGVyaWFsfHxhdC5pc01lc2hQaG9uZ01hdGVyaWFsfHxhdC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxhdC5pc1NoYWRvd01hdGVyaWFsfHxhdC5pc1NoYWRlck1hdGVyaWFsJiZhdC5saWdodHM9PT0hMH10aGlzLmdldEFjdGl2ZUN1YmVGYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIE99LHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sdGhpcy5nZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gUn0sdGhpcy5zZXRSZW5kZXJUYXJnZXRUZXh0dXJlcz1mdW5jdGlvbihhdCxVdCxuZSl7SGUuZ2V0KGF0LnRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlPVV0LEhlLmdldChhdC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlPW5lO2xldCB0ZT1IZS5nZXQoYXQpO3RlLl9faGFzRXh0ZXJuYWxUZXh0dXJlcz0hMCx0ZS5fX2hhc0V4dGVybmFsVGV4dHVyZXMmJih0ZS5fX2F1dG9BbGxvY2F0ZURlcHRoQnVmZmVyPW5lPT09dm9pZCAwLHRlLl9fYXV0b0FsbG9jYXRlRGVwdGhCdWZmZXJ8fGF0LnVzZVJlbmRlclRvVGV4dHVyZSYmKGNvbnNvbGUud2FybigicmVuZGVyLXRvLXRleHR1cmUgZXh0ZW5zaW9uIHdhcyBkaXNhYmxlZCBiZWNhdXNlIGFuIGV4dGVybmFsIHRleHR1cmUgd2FzIHByb3ZpZGVkIiksYXQudXNlUmVuZGVyVG9UZXh0dXJlPSExLGF0LnVzZVJlbmRlcmJ1ZmZlcj0hMCkpfSx0aGlzLnNldFJlbmRlclRhcmdldEZyYW1lYnVmZmVyPWZ1bmN0aW9uKGF0LFV0KXtsZXQgbmU9SGUuZ2V0KGF0KTtuZS5fX3dlYmdsRnJhbWVidWZmZXI9VXQsbmUuX191c2VEZWZhdWx0RnJhbWVidWZmZXI9VXQ9PT12b2lkIDB9LHRoaXMuc2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKGF0LFV0PTAsbmU9MCl7Uj1hdCxPPVV0LGI9bmU7bGV0IHRlPSEwO2lmKGF0KXtsZXQgZHQ9SGUuZ2V0KGF0KTtkdC5fX3VzZURlZmF1bHRGcmFtZWJ1ZmZlciE9PXZvaWQgMD8ocXQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpLHRlPSExKTpkdC5fX3dlYmdsRnJhbWVidWZmZXI9PT12b2lkIDA/aHQuc2V0dXBSZW5kZXJUYXJnZXQoYXQpOmR0Ll9faGFzRXh0ZXJuYWxUZXh0dXJlcyYmaHQucmViaW5kVGV4dHVyZXMoYXQsSGUuZ2V0KGF0LnRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlLEhlLmdldChhdC5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlKX1sZXQgT2U9bnVsbCxtbz0hMSxLPSExO2lmKGF0KXtsZXQgZHQ9YXQudGV4dHVyZTsoZHQuaXNEYXRhVGV4dHVyZTNEfHxkdC5pc0RhdGFUZXh0dXJlMkRBcnJheSkmJihLPSEwKTtsZXQgTXQ9SGUuZ2V0KGF0KS5fX3dlYmdsRnJhbWVidWZmZXI7YXQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/KE9lPU10W1V0XSxtbz0hMCk6YXQudXNlUmVuZGVyYnVmZmVyP09lPUhlLmdldChhdCkuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyOk9lPU10LHJ0LmNvcHkoYXQudmlld3BvcnQpLEouY29weShhdC5zY2lzc29yKSxFdD1hdC5zY2lzc29yVGVzdH1lbHNlIHJ0LmNvcHkobHQpLm11bHRpcGx5U2NhbGFyKHcpLmZsb29yKCksSi5jb3B5KGJ0KS5tdWx0aXBseVNjYWxhcih3KS5mbG9vcigpLEV0PW90O2lmKHF0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxPZSkmJkRlLmRyYXdCdWZmZXJzJiZ0ZSYmcXQuZHJhd0J1ZmZlcnMoYXQsT2UpLHF0LnZpZXdwb3J0KHJ0KSxxdC5zY2lzc29yKEopLHF0LnNldFNjaXNzb3JUZXN0KEV0KSxtbyl7bGV0IGR0PUhlLmdldChhdC50ZXh0dXJlKTtMdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA2NCwzNDA2OStVdCxkdC5fX3dlYmdsVGV4dHVyZSxuZSl9ZWxzZSBpZihLKXtsZXQgZHQ9SGUuZ2V0KGF0LnRleHR1cmUpLE10PVV0fHwwO0x0LmZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKDM2MTYwLDM2MDY0LGR0Ll9fd2ViZ2xUZXh0dXJlLG5lfHwwLE10KX1FPS0xfSx0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM9ZnVuY3Rpb24oYXQsVXQsbmUsdGUsT2UsbW8sSyl7aWYoIShhdCYmYXQuaXNXZWJHTFJlbmRlclRhcmdldCkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBUSFJFRS5XZWJHTFJlbmRlclRhcmdldC4iKTtyZXR1cm59bGV0IG10PUhlLmdldChhdCkuX193ZWJnbEZyYW1lYnVmZmVyO2lmKGF0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiZLIT09dm9pZCAwJiYobXQ9bXRbS10pLG10KXtxdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbXQpO3RyeXtsZXQgZHQ9YXQudGV4dHVyZSxNdD1kdC5mb3JtYXQsQXQ9ZHQudHlwZTtpZihNdCE9PVJmJiZYbi5jb252ZXJ0KE10KSE9PUx0LmdldFBhcmFtZXRlcigzNTczOSkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBpbiBSR0JBIG9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgZm9ybWF0LiIpO3JldHVybn1sZXQgWnQ9QXQ9PT1sUyYmKFZlLmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil8fERlLmlzV2ViR0wyJiZWZS5oYXMoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSk7aWYoQXQhPT16eCYmWG4uY29udmVydChBdCkhPT1MdC5nZXRQYXJhbWV0ZXIoMzU3MzgpJiYhKEF0PT09VDEmJihEZS5pc1dlYkdMMnx8VmUuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpfHxWZS5oYXMoIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKSkmJiFadCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFVuc2lnbmVkQnl0ZVR5cGUgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0eXBlLiIpO3JldHVybn1MdC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKT09PTM2MDUzP1V0Pj0wJiZVdDw9YXQud2lkdGgtdGUmJm5lPj0wJiZuZTw9YXQuaGVpZ2h0LU9lJiZMdC5yZWFkUGl4ZWxzKFV0LG5lLHRlLE9lLFhuLmNvbnZlcnQoTXQpLFhuLmNvbnZlcnQoQXQpLG1vKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlYWRQaXhlbHMgZnJvbSByZW5kZXJUYXJnZXQgZmFpbGVkLiBGcmFtZWJ1ZmZlciBub3QgY29tcGxldGUuIil9ZmluYWxseXtsZXQgZHQ9UiE9PW51bGw/SGUuZ2V0KFIpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjpudWxsO3F0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxkdCl9fX0sdGhpcy5jb3B5RnJhbWVidWZmZXJUb1RleHR1cmU9ZnVuY3Rpb24oYXQsVXQsbmU9MCl7aWYoVXQuaXNGcmFtZWJ1ZmZlclRleHR1cmUhPT0hMCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogY29weUZyYW1lYnVmZmVyVG9UZXh0dXJlKCkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIEZyYW1lYnVmZmVyVGV4dHVyZS4iKTtyZXR1cm59bGV0IHRlPU1hdGgucG93KDIsLW5lKSxPZT1NYXRoLmZsb29yKFV0LmltYWdlLndpZHRoKnRlKSxtbz1NYXRoLmZsb29yKFV0LmltYWdlLmhlaWdodCp0ZSk7aHQuc2V0VGV4dHVyZTJEKFV0LDApLEx0LmNvcHlUZXhTdWJJbWFnZTJEKDM1NTMsbmUsMCwwLGF0LngsYXQueSxPZSxtbykscXQudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmNvcHlUZXh0dXJlVG9UZXh0dXJlPWZ1bmN0aW9uKGF0LFV0LG5lLHRlPTApe2xldCBPZT1VdC5pbWFnZS53aWR0aCxtbz1VdC5pbWFnZS5oZWlnaHQsSz1Ybi5jb252ZXJ0KG5lLmZvcm1hdCksbXQ9WG4uY29udmVydChuZS50eXBlKTtodC5zZXRUZXh0dXJlMkQobmUsMCksTHQucGl4ZWxTdG9yZWkoMzc0NDAsbmUuZmxpcFkpLEx0LnBpeGVsU3RvcmVpKDM3NDQxLG5lLnByZW11bHRpcGx5QWxwaGEpLEx0LnBpeGVsU3RvcmVpKDMzMTcsbmUudW5wYWNrQWxpZ25tZW50KSxVdC5pc0RhdGFUZXh0dXJlP0x0LnRleFN1YkltYWdlMkQoMzU1Myx0ZSxhdC54LGF0LnksT2UsbW8sSyxtdCxVdC5pbWFnZS5kYXRhKTpVdC5pc0NvbXByZXNzZWRUZXh0dXJlP0x0LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsdGUsYXQueCxhdC55LFV0Lm1pcG1hcHNbMF0ud2lkdGgsVXQubWlwbWFwc1swXS5oZWlnaHQsSyxVdC5taXBtYXBzWzBdLmRhdGEpOkx0LnRleFN1YkltYWdlMkQoMzU1Myx0ZSxhdC54LGF0LnksSyxtdCxVdC5pbWFnZSksdGU9PT0wJiZuZS5nZW5lcmF0ZU1pcG1hcHMmJkx0LmdlbmVyYXRlTWlwbWFwKDM1NTMpLHF0LnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEPWZ1bmN0aW9uKGF0LFV0LG5lLHRlLE9lPTApe2lmKE0uaXNXZWJHTDFSZW5kZXJlcil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyLmNvcHlUZXh0dXJlVG9UZXh0dXJlM0Q6IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7cmV0dXJufWxldCBtbz1hdC5tYXgueC1hdC5taW4ueCsxLEs9YXQubWF4LnktYXQubWluLnkrMSxtdD1hdC5tYXguei1hdC5taW4ueisxLGR0PVhuLmNvbnZlcnQodGUuZm9ybWF0KSxNdD1Ybi5jb252ZXJ0KHRlLnR5cGUpLEF0O2lmKHRlLmlzRGF0YVRleHR1cmUzRClodC5zZXRUZXh0dXJlM0QodGUsMCksQXQ9MzI4Nzk7ZWxzZSBpZih0ZS5pc0RhdGFUZXh0dXJlMkRBcnJheSlodC5zZXRUZXh0dXJlMkRBcnJheSh0ZSwwKSxBdD0zNTg2NjtlbHNle2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiBvbmx5IHN1cHBvcnRzIFRIUkVFLkRhdGFUZXh0dXJlM0QgYW5kIFRIUkVFLkRhdGFUZXh0dXJlMkRBcnJheS4iKTtyZXR1cm59THQucGl4ZWxTdG9yZWkoMzc0NDAsdGUuZmxpcFkpLEx0LnBpeGVsU3RvcmVpKDM3NDQxLHRlLnByZW11bHRpcGx5QWxwaGEpLEx0LnBpeGVsU3RvcmVpKDMzMTcsdGUudW5wYWNrQWxpZ25tZW50KTtsZXQgWnQ9THQuZ2V0UGFyYW1ldGVyKDMzMTQpLENlPUx0LmdldFBhcmFtZXRlcigzMjg3OCksWWU9THQuZ2V0UGFyYW1ldGVyKDMzMTYpLGhuPUx0LmdldFBhcmFtZXRlcigzMzE1KSx4ZT1MdC5nZXRQYXJhbWV0ZXIoMzI4NzcpLFFlPW5lLmlzQ29tcHJlc3NlZFRleHR1cmU/bmUubWlwbWFwc1swXTpuZS5pbWFnZTtMdC5waXhlbFN0b3JlaSgzMzE0LFFlLndpZHRoKSxMdC5waXhlbFN0b3JlaSgzMjg3OCxRZS5oZWlnaHQpLEx0LnBpeGVsU3RvcmVpKDMzMTYsYXQubWluLngpLEx0LnBpeGVsU3RvcmVpKDMzMTUsYXQubWluLnkpLEx0LnBpeGVsU3RvcmVpKDMyODc3LGF0Lm1pbi56KSxuZS5pc0RhdGFUZXh0dXJlfHxuZS5pc0RhdGFUZXh0dXJlM0Q/THQudGV4U3ViSW1hZ2UzRChBdCxPZSxVdC54LFV0LnksVXQueixtbyxLLG10LGR0LE10LFFlLmRhdGEpOm5lLmlzQ29tcHJlc3NlZFRleHR1cmU/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5jb3B5VGV4dHVyZVRvVGV4dHVyZTNEOiB1bnRlc3RlZCBzdXBwb3J0IGZvciBjb21wcmVzc2VkIHNyY1RleHR1cmUuIiksTHQuY29tcHJlc3NlZFRleFN1YkltYWdlM0QoQXQsT2UsVXQueCxVdC55LFV0LnosbW8sSyxtdCxkdCxRZS5kYXRhKSk6THQudGV4U3ViSW1hZ2UzRChBdCxPZSxVdC54LFV0LnksVXQueixtbyxLLG10LGR0LE10LFFlKSxMdC5waXhlbFN0b3JlaSgzMzE0LFp0KSxMdC5waXhlbFN0b3JlaSgzMjg3OCxDZSksTHQucGl4ZWxTdG9yZWkoMzMxNixZZSksTHQucGl4ZWxTdG9yZWkoMzMxNSxobiksTHQucGl4ZWxTdG9yZWkoMzI4NzcseGUpLE9lPT09MCYmdGUuZ2VuZXJhdGVNaXBtYXBzJiZMdC5nZW5lcmF0ZU1pcG1hcChBdCkscXQudW5iaW5kVGV4dHVyZSgpfSx0aGlzLmluaXRUZXh0dXJlPWZ1bmN0aW9uKGF0KXtodC5zZXRUZXh0dXJlMkQoYXQsMCkscXQudW5iaW5kVGV4dHVyZSgpfSx0aGlzLnJlc2V0U3RhdGU9ZnVuY3Rpb24oKXtPPTAsYj0wLFI9bnVsbCxxdC5yZXNldCgpLFZuLnJlc2V0KCl9LHR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18hPSJ1bmRlZmluZWQiJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm9ic2VydmUiLHtkZXRhaWw6dGhpc30pKX1lYS5wcm90b3R5cGUuaXNXZWJHTFJlbmRlcmVyPSEwO3ZhciBLVz1jbGFzcyBleHRlbmRzIGVhe307S1cucHJvdG90eXBlLmlzV2ViR0wxUmVuZGVyZXI9ITA7dmFyIHA0PWNsYXNze2NvbnN0cnVjdG9yKHQsZT0yNWUtNSl7dGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IHpuKHQpLHRoaXMuZGVuc2l0eT1lfWNsb25lKCl7cmV0dXJuIG5ldyBwNCh0aGlzLmNvbG9yLHRoaXMuZGVuc2l0eSl9dG9KU09OKCl7cmV0dXJue3R5cGU6IkZvZ0V4cDIiLGNvbG9yOnRoaXMuY29sb3IuZ2V0SGV4KCksZGVuc2l0eTp0aGlzLmRlbnNpdHl9fX07cDQucHJvdG90eXBlLmlzRm9nRXhwMj0hMDt2YXIgZDQ9Y2xhc3N7Y29uc3RydWN0b3IodCxlPTEsbz0xZTMpe3RoaXMubmFtZT0iIix0aGlzLmNvbG9yPW5ldyB6bih0KSx0aGlzLm5lYXI9ZSx0aGlzLmZhcj1vfWNsb25lKCl7cmV0dXJuIG5ldyBkNCh0aGlzLmNvbG9yLHRoaXMubmVhcix0aGlzLmZhcil9dG9KU09OKCl7cmV0dXJue3R5cGU6IkZvZyIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxuZWFyOnRoaXMubmVhcixmYXI6dGhpcy5mYXJ9fX07ZDQucHJvdG90eXBlLmlzRm9nPSEwO3ZhciBDUz1jbGFzcyBleHRlbmRzIFZpe2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNjZW5lIix0aGlzLmJhY2tncm91bmQ9bnVsbCx0aGlzLmVudmlyb25tZW50PW51bGwsdGhpcy5mb2c9bnVsbCx0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9bnVsbCx0aGlzLmF1dG9VcGRhdGU9ITAsdHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyE9InVuZGVmaW5lZCImJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLHQuYmFja2dyb3VuZCE9PW51bGwmJih0aGlzLmJhY2tncm91bmQ9dC5iYWNrZ3JvdW5kLmNsb25lKCkpLHQuZW52aXJvbm1lbnQhPT1udWxsJiYodGhpcy5lbnZpcm9ubWVudD10LmVudmlyb25tZW50LmNsb25lKCkpLHQuZm9nIT09bnVsbCYmKHRoaXMuZm9nPXQuZm9nLmNsb25lKCkpLHQub3ZlcnJpZGVNYXRlcmlhbCE9PW51bGwmJih0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9dC5vdmVycmlkZU1hdGVyaWFsLmNsb25lKCkpLHRoaXMuYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzfXRvSlNPTih0KXtsZXQgZT1zdXBlci50b0pTT04odCk7cmV0dXJuIHRoaXMuZm9nIT09bnVsbCYmKGUub2JqZWN0LmZvZz10aGlzLmZvZy50b0pTT04oKSksZX19O0NTLnByb3RvdHlwZS5pc1NjZW5lPSEwO3ZhciBGMT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuYXJyYXk9dCx0aGlzLnN0cmlkZT1lLHRoaXMuY291bnQ9dCE9PXZvaWQgMD90Lmxlbmd0aC9lOjAsdGhpcy51c2FnZT1pNCx0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX0sdGhpcy52ZXJzaW9uPTAsdGhpcy51dWlkPXNiKCl9b25VcGxvYWRDYWxsYmFjaygpe31zZXQgbmVlZHNVcGRhdGUodCl7dD09PSEwJiZ0aGlzLnZlcnNpb24rK31zZXRVc2FnZSh0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9Y29weSh0KXtyZXR1cm4gdGhpcy5hcnJheT1uZXcgdC5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5KSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5zdHJpZGU9dC5zdHJpZGUsdGhpcy51c2FnZT10LnVzYWdlLHRoaXN9Y29weUF0KHQsZSxvKXt0Kj10aGlzLnN0cmlkZSxvKj1lLnN0cmlkZTtmb3IobGV0IGk9MCxhPXRoaXMuc3RyaWRlO2k8YTtpKyspdGhpcy5hcnJheVt0K2ldPWUuYXJyYXlbbytpXTtyZXR1cm4gdGhpc31zZXQodCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9Y2xvbmUodCl7dC5hcnJheUJ1ZmZlcnM9PT12b2lkIDAmJih0LmFycmF5QnVmZmVycz17fSksdGhpcy5hcnJheS5idWZmZXIuX3V1aWQ9PT12b2lkIDAmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1zYigpKSx0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF09PT12b2lkIDAmJih0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF09dGhpcy5hcnJheS5zbGljZSgwKS5idWZmZXIpO2xldCBlPW5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksbz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihlLHRoaXMuc3RyaWRlKTtyZXR1cm4gby5zZXRVc2FnZSh0aGlzLnVzYWdlKSxvfW9uVXBsb2FkKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfXRvSlNPTih0KXtyZXR1cm4gdC5hcnJheUJ1ZmZlcnM9PT12b2lkIDAmJih0LmFycmF5QnVmZmVycz17fSksdGhpcy5hcnJheS5idWZmZXIuX3V1aWQ9PT12b2lkIDAmJih0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZD1zYigpKSx0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF09PT12b2lkIDAmJih0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF09QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobmV3IFVpbnQzMkFycmF5KHRoaXMuYXJyYXkuYnVmZmVyKSkpLHt1dWlkOnRoaXMudXVpZCxidWZmZXI6dGhpcy5hcnJheS5idWZmZXIuX3V1aWQsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsc3RyaWRlOnRoaXMuc3RyaWRlfX19O0YxLnByb3RvdHlwZS5pc0ludGVybGVhdmVkQnVmZmVyPSEwO3ZhciBicz1uZXcgcHQsTDE9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saT0hMSl7dGhpcy5uYW1lPSIiLHRoaXMuZGF0YT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLm9mZnNldD1vLHRoaXMubm9ybWFsaXplZD1pPT09ITB9Z2V0IGNvdW50KCl7cmV0dXJuIHRoaXMuZGF0YS5jb3VudH1nZXQgYXJyYXkoKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5fXNldCBuZWVkc1VwZGF0ZSh0KXt0aGlzLmRhdGEubmVlZHNVcGRhdGU9dH1hcHBseU1hdHJpeDQodCl7Zm9yKGxldCBlPTAsbz10aGlzLmRhdGEuY291bnQ7ZTxvO2UrKylicy54PXRoaXMuZ2V0WChlKSxicy55PXRoaXMuZ2V0WShlKSxicy56PXRoaXMuZ2V0WihlKSxicy5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRYWVooZSxicy54LGJzLnksYnMueik7cmV0dXJuIHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7Zm9yKGxldCBlPTAsbz10aGlzLmNvdW50O2U8bztlKyspYnMueD10aGlzLmdldFgoZSksYnMueT10aGlzLmdldFkoZSksYnMuej10aGlzLmdldFooZSksYnMuYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVooZSxicy54LGJzLnksYnMueik7cmV0dXJuIHRoaXN9dHJhbnNmb3JtRGlyZWN0aW9uKHQpe2ZvcihsZXQgZT0wLG89dGhpcy5jb3VudDtlPG87ZSsrKWJzLng9dGhpcy5nZXRYKGUpLGJzLnk9dGhpcy5nZXRZKGUpLGJzLno9dGhpcy5nZXRaKGUpLGJzLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihlLGJzLngsYnMueSxicy56KTtyZXR1cm4gdGhpc31zZXRYKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc31zZXRZKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV09ZSx0aGlzfXNldFoodCxlKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1lLHRoaXN9c2V0Vyh0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc31nZXRYKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX1nZXRZKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfWdldFoodCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19Z2V0Vyh0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX1zZXRYWSh0LGUsbyl7cmV0dXJuIHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0LHRoaXMuZGF0YS5hcnJheVt0KzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09byx0aGlzfXNldFhZWih0LGUsbyxpKXtyZXR1cm4gdD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQsdGhpcy5kYXRhLmFycmF5W3QrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1vLHRoaXMuZGF0YS5hcnJheVt0KzJdPWksdGhpc31zZXRYWVpXKHQsZSxvLGksYSl7cmV0dXJuIHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0LHRoaXMuZGF0YS5hcnJheVt0KzBdPWUsdGhpcy5kYXRhLmFycmF5W3QrMV09byx0aGlzLmRhdGEuYXJyYXlbdCsyXT1pLHRoaXMuZGF0YS5hcnJheVt0KzNdPWEsdGhpc31jbG9uZSh0KXtpZih0PT09dm9pZCAwKXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7bGV0IGU9W107Zm9yKGxldCBvPTA7bzx0aGlzLmNvdW50O28rKyl7bGV0IGk9byp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O2ZvcihsZXQgYT0wO2E8dGhpcy5pdGVtU2l6ZTthKyspZS5wdXNoKHRoaXMuZGF0YS5hcnJheVtpK2FdKX1yZXR1cm4gbmV3IE9yKG5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKGUpLHRoaXMuaXRlbVNpemUsdGhpcy5ub3JtYWxpemVkKX1lbHNlIHJldHVybiB0LmludGVybGVhdmVkQnVmZmVycz09PXZvaWQgMCYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09PT12b2lkIDAmJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgTDEodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdLHRoaXMuaXRlbVNpemUsdGhpcy5vZmZzZXQsdGhpcy5ub3JtYWxpemVkKX10b0pTT04odCl7aWYodD09PXZvaWQgMCl7Y29uc29sZS5sb2coIlRIUkVFLkludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlLnRvSlNPTigpOiBTZXJpYWxpemluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7bGV0IGU9W107Zm9yKGxldCBvPTA7bzx0aGlzLmNvdW50O28rKyl7bGV0IGk9byp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O2ZvcihsZXQgYT0wO2E8dGhpcy5pdGVtU2l6ZTthKyspZS5wdXNoKHRoaXMuZGF0YS5hcnJheVtpK2FdKX1yZXR1cm57aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTplLG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfX1lbHNlIHJldHVybiB0LmludGVybGVhdmVkQnVmZmVycz09PXZvaWQgMCYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09PT12b2lkIDAmJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fTtMMS5wcm90b3R5cGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT0hMDt2YXIgb0Y9Y2xhc3MgZXh0ZW5kcyBJbHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iU3ByaXRlTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHpuKDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLnJvdGF0aW9uPTAsdGhpcy5zaXplQXR0ZW51YXRpb249ITAsdGhpcy50cmFuc3BhcmVudD0hMCx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5yb3RhdGlvbj10LnJvdGF0aW9uLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fTtvRi5wcm90b3R5cGUuaXNTcHJpdGVNYXRlcmlhbD0hMDt2YXIgdFMsRzU9bmV3IHB0LGVTPW5ldyBwdCxuUz1uZXcgcHQsb1M9bmV3IFNlLFc1PW5ldyBTZSxHZ3Q9bmV3IGVvLGtIPW5ldyBwdCxxNT1uZXcgcHQsTkg9bmV3IHB0LGVndD1uZXcgU2UsTlc9bmV3IFNlLG5ndD1uZXcgU2UsSlc9Y2xhc3MgZXh0ZW5kcyBWaXtjb25zdHJ1Y3Rvcih0KXtpZihzdXBlcigpLHRoaXMudHlwZT0iU3ByaXRlIix0Uz09PXZvaWQgMCl7dFM9bmV3IHRhO2xldCBlPW5ldyBGbG9hdDMyQXJyYXkoWy0uNSwtLjUsMCwwLDAsLjUsLS41LDAsMSwwLC41LC41LDAsMSwxLC0uNSwuNSwwLDAsMV0pLG89bmV3IEYxKGUsNSk7dFMuc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSksdFMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IEwxKG8sMywwLCExKSksdFMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IEwxKG8sMiwzLCExKSl9dGhpcy5nZW9tZXRyeT10Uyx0aGlzLm1hdGVyaWFsPXQhPT12b2lkIDA/dDpuZXcgb0YsdGhpcy5jZW50ZXI9bmV3IFNlKC41LC41KX1yYXljYXN0KHQsZSl7dC5jYW1lcmE9PT1udWxsJiZjb25zb2xlLmVycm9yKCdUSFJFRS5TcHJpdGU6ICJSYXljYXN0ZXIuY2FtZXJhIiBuZWVkcyB0byBiZSBzZXQgaW4gb3JkZXIgdG8gcmF5Y2FzdCBhZ2FpbnN0IHNwcml0ZXMuJyksZVMuc2V0RnJvbU1hdHJpeFNjYWxlKHRoaXMubWF0cml4V29ybGQpLEdndC5jb3B5KHQuY2FtZXJhLm1hdHJpeFdvcmxkKSx0aGlzLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKHQuY2FtZXJhLm1hdHJpeFdvcmxkSW52ZXJzZSx0aGlzLm1hdHJpeFdvcmxkKSxuUy5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJnRoaXMubWF0ZXJpYWwuc2l6ZUF0dGVudWF0aW9uPT09ITEmJmVTLm11bHRpcGx5U2NhbGFyKC1uUy56KTtsZXQgbz10aGlzLm1hdGVyaWFsLnJvdGF0aW9uLGksYTtvIT09MCYmKGE9TWF0aC5jb3MobyksaT1NYXRoLnNpbihvKSk7bGV0IHI9dGhpcy5jZW50ZXI7VEgoa0guc2V0KC0uNSwtLjUsMCksblMscixlUyxpLGEpLFRIKHE1LnNldCguNSwtLjUsMCksblMscixlUyxpLGEpLFRIKE5ILnNldCguNSwuNSwwKSxuUyxyLGVTLGksYSksZWd0LnNldCgwLDApLE5XLnNldCgxLDApLG5ndC5zZXQoMSwxKTtsZXQgcz10LnJheS5pbnRlcnNlY3RUcmlhbmdsZShrSCxxNSxOSCwhMSxHNSk7aWYocz09PW51bGwmJihUSChxNS5zZXQoLS41LC41LDApLG5TLHIsZVMsaSxhKSxOVy5zZXQoMCwxKSxzPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKGtILE5ILHE1LCExLEc1KSxzPT09bnVsbCkpcmV0dXJuO2xldCBsPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKEc1KTtsPHQubmVhcnx8bD50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpsLHBvaW50Okc1LmNsb25lKCksdXY6WHIuZ2V0VVYoRzUsa0gscTUsTkgsZWd0LE5XLG5ndCxuZXcgU2UpLGZhY2U6bnVsbCxvYmplY3Q6dGhpc30pfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdC5jZW50ZXIhPT12b2lkIDAmJnRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzfX07SlcucHJvdG90eXBlLmlzU3ByaXRlPSEwO2Z1bmN0aW9uIFRIKG4sdCxlLG8saSxhKXtvUy5zdWJWZWN0b3JzKG4sZSkuYWRkU2NhbGFyKC41KS5tdWx0aXBseShvKSxpIT09dm9pZCAwPyhXNS54PWEqb1MueC1pKm9TLnksVzUueT1pKm9TLngrYSpvUy55KTpXNS5jb3B5KG9TKSxuLmNvcHkodCksbi54Kz1XNS54LG4ueSs9VzUueSxuLmFwcGx5TWF0cml4NChHZ3QpfXZhciBvZ3Q9bmV3IHB0LGlndD1uZXcgY2EsYWd0PW5ldyBjYSxlR3Q9bmV3IHB0LHJndD1uZXcgZW8saUY9Y2xhc3MgZXh0ZW5kcyBZc3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJTa2lubmVkTWVzaCIsdGhpcy5iaW5kTW9kZT0iYXR0YWNoZWQiLHRoaXMuYmluZE1hdHJpeD1uZXcgZW8sdGhpcy5iaW5kTWF0cml4SW52ZXJzZT1uZXcgZW99Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmJpbmRNb2RlPXQuYmluZE1vZGUsdGhpcy5iaW5kTWF0cml4LmNvcHkodC5iaW5kTWF0cml4KSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodC5iaW5kTWF0cml4SW52ZXJzZSksdGhpcy5za2VsZXRvbj10LnNrZWxldG9uLHRoaXN9YmluZCh0LGUpe3RoaXMuc2tlbGV0b249dCxlPT09dm9pZCAwJiYodGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCksdGhpcy5za2VsZXRvbi5jYWxjdWxhdGVJbnZlcnNlcygpLGU9dGhpcy5tYXRyaXhXb3JsZCksdGhpcy5iaW5kTWF0cml4LmNvcHkoZSksdGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KGUpLmludmVydCgpfXBvc2UoKXt0aGlzLnNrZWxldG9uLnBvc2UoKX1ub3JtYWxpemVTa2luV2VpZ2h0cygpe2xldCB0PW5ldyBjYSxlPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O2ZvcihsZXQgbz0wLGk9ZS5jb3VudDtvPGk7bysrKXt0Lng9ZS5nZXRYKG8pLHQueT1lLmdldFkobyksdC56PWUuZ2V0WihvKSx0Lnc9ZS5nZXRXKG8pO2xldCBhPTEvdC5tYW5oYXR0YW5MZW5ndGgoKTthIT09MS8wP3QubXVsdGlwbHlTY2FsYXIoYSk6dC5zZXQoMSwwLDAsMCksZS5zZXRYWVpXKG8sdC54LHQueSx0LnosdC53KX19dXBkYXRlTWF0cml4V29ybGQodCl7c3VwZXIudXBkYXRlTWF0cml4V29ybGQodCksdGhpcy5iaW5kTW9kZT09PSJhdHRhY2hlZCI/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpOnRoaXMuYmluZE1vZGU9PT0iZGV0YWNoZWQiP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLmJpbmRNYXRyaXgpLmludmVydCgpOmNvbnNvbGUud2FybigiVEhSRUUuU2tpbm5lZE1lc2g6IFVucmVjb2duaXplZCBiaW5kTW9kZTogIit0aGlzLmJpbmRNb2RlKX1ib25lVHJhbnNmb3JtKHQsZSl7bGV0IG89dGhpcy5za2VsZXRvbixpPXRoaXMuZ2VvbWV0cnk7aWd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnNraW5JbmRleCx0KSxhZ3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxvZ3QuY29weShlKS5hcHBseU1hdHJpeDQodGhpcy5iaW5kTWF0cml4KSxlLnNldCgwLDAsMCk7Zm9yKGxldCBhPTA7YTw0O2ErKyl7bGV0IHI9YWd0LmdldENvbXBvbmVudChhKTtpZihyIT09MCl7bGV0IHM9aWd0LmdldENvbXBvbmVudChhKTtyZ3QubXVsdGlwbHlNYXRyaWNlcyhvLmJvbmVzW3NdLm1hdHJpeFdvcmxkLG8uYm9uZUludmVyc2VzW3NdKSxlLmFkZFNjYWxlZFZlY3RvcihlR3QuY29weShvZ3QpLmFwcGx5TWF0cml4NChyZ3QpLHIpfX1yZXR1cm4gZS5hcHBseU1hdHJpeDQodGhpcy5iaW5kTWF0cml4SW52ZXJzZSl9fTtpRi5wcm90b3R5cGUuaXNTa2lubmVkTWVzaD0hMDt2YXIgJFc9Y2xhc3MgZXh0ZW5kcyBWaXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJCb25lIn19OyRXLnByb3RvdHlwZS5pc0JvbmU9ITA7dmFyIHRxPWNsYXNzIGV4dGVuZHMgR3N7Y29uc3RydWN0b3IodD1udWxsLGU9MSxvPTEsaSxhLHIscyxsLGM9Y2wsbT1jbCxmLHApe3N1cGVyKG51bGwscixzLGwsYyxtLGksYSxmLHApLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDplLGhlaWdodDpvfSx0aGlzLm1hZ0ZpbHRlcj1jLHRoaXMubWluRmlsdGVyPW0sdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xfX07dHEucHJvdG90eXBlLmlzRGF0YVRleHR1cmU9ITA7dmFyIGc0PWNsYXNzIGV4dGVuZHMgT3J7Y29uc3RydWN0b3IodCxlLG8saT0xKXt0eXBlb2Ygbz09Im51bWJlciImJihpPW8sbz0hMSxjb25zb2xlLmVycm9yKCJUSFJFRS5JbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBub3JtYWxpemVkIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4iKSksc3VwZXIodCxlLG8pLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1pfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0Lm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLHQuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9ITAsdH19O2c0LnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMDt2YXIgc2d0PW5ldyBlbyxsZ3Q9bmV3IGVvLEFIPVtdLFo1PW5ldyBZcyxlcT1jbGFzcyBleHRlbmRzIFlze2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LGUpLHRoaXMuaW5zdGFuY2VNYXRyaXg9bmV3IGc0KG5ldyBGbG9hdDMyQXJyYXkobyoxNiksMTYpLHRoaXMuaW5zdGFuY2VDb2xvcj1udWxsLHRoaXMuY291bnQ9byx0aGlzLmZydXN0dW1DdWxsZWQ9ITF9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmluc3RhbmNlTWF0cml4LmNvcHkodC5pbnN0YW5jZU1hdHJpeCksdC5pbnN0YW5jZUNvbG9yIT09bnVsbCYmKHRoaXMuaW5zdGFuY2VDb2xvcj10Lmluc3RhbmNlQ29sb3IuY2xvbmUoKSksdGhpcy5jb3VudD10LmNvdW50LHRoaXN9Z2V0Q29sb3JBdCh0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSx0KjMpfWdldE1hdHJpeEF0KHQsZSl7ZS5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZU1hdHJpeC5hcnJheSx0KjE2KX1yYXljYXN0KHQsZSl7bGV0IG89dGhpcy5tYXRyaXhXb3JsZCxpPXRoaXMuY291bnQ7aWYoWjUuZ2VvbWV0cnk9dGhpcy5nZW9tZXRyeSxaNS5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLFo1Lm1hdGVyaWFsIT09dm9pZCAwKWZvcihsZXQgYT0wO2E8aTthKyspe3RoaXMuZ2V0TWF0cml4QXQoYSxzZ3QpLGxndC5tdWx0aXBseU1hdHJpY2VzKG8sc2d0KSxaNS5tYXRyaXhXb3JsZD1sZ3QsWjUucmF5Y2FzdCh0LEFIKTtmb3IobGV0IHI9MCxzPUFILmxlbmd0aDtyPHM7cisrKXtsZXQgbD1BSFtyXTtsLmluc3RhbmNlSWQ9YSxsLm9iamVjdD10aGlzLGUucHVzaChsKX1BSC5sZW5ndGg9MH19c2V0Q29sb3JBdCh0LGUpe3RoaXMuaW5zdGFuY2VDb2xvcj09PW51bGwmJih0aGlzLmluc3RhbmNlQ29sb3I9bmV3IGc0KG5ldyBGbG9hdDMyQXJyYXkodGhpcy5pbnN0YW5jZU1hdHJpeC5jb3VudCozKSwzKSksZS50b0FycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSx0KjMpfXNldE1hdHJpeEF0KHQsZSl7ZS50b0FycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksdCoxNil9dXBkYXRlTW9ycGhUYXJnZXRzKCl7fWRpc3Bvc2UoKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fTtlcS5wcm90b3R5cGUuaXNJbnN0YW5jZWRNZXNoPSEwO3ZhciBRUD1jbGFzcyBleHRlbmRzIElse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgem4oMTY3NzcyMTUpLHRoaXMubGluZXdpZHRoPTEsdGhpcy5saW5lY2FwPSJyb3VuZCIsdGhpcy5saW5lam9pbj0icm91bmQiLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubGluZXdpZHRoPXQubGluZXdpZHRoLHRoaXMubGluZWNhcD10LmxpbmVjYXAsdGhpcy5saW5lam9pbj10LmxpbmVqb2luLHRoaXN9fTtRUC5wcm90b3R5cGUuaXNMaW5lQmFzaWNNYXRlcmlhbD0hMDt2YXIgY2d0PW5ldyBwdCxtZ3Q9bmV3IHB0LGZndD1uZXcgZW8sVFc9bmV3IFZ4LERIPW5ldyBCeCx1ND1jbGFzcyBleHRlbmRzIFZpe2NvbnN0cnVjdG9yKHQ9bmV3IHRhLGU9bmV3IFFQKXtzdXBlcigpLHRoaXMudHlwZT0iTGluZSIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYodC5pbmRleD09PW51bGwpe2xldCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixvPVswXTtmb3IobGV0IGk9MSxhPWUuY291bnQ7aTxhO2krKyljZ3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGktMSksbWd0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxpKSxvW2ldPW9baS0xXSxvW2ldKz1jZ3QuZGlzdGFuY2VUbyhtZ3QpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBOcihvLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfXJheWNhc3QodCxlKXtsZXQgbz10aGlzLmdlb21ldHJ5LGk9dGhpcy5tYXRyaXhXb3JsZCxhPXQucGFyYW1zLkxpbmUudGhyZXNob2xkLHI9by5kcmF3UmFuZ2U7aWYoby5ib3VuZGluZ1NwaGVyZT09PW51bGwmJm8uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksREguY29weShvLmJvdW5kaW5nU3BoZXJlKSxESC5hcHBseU1hdHJpeDQoaSksREgucmFkaXVzKz1hLHQucmF5LmludGVyc2VjdHNTcGhlcmUoREgpPT09ITEpcmV0dXJuO2ZndC5jb3B5KGkpLmludmVydCgpLFRXLmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChmZ3QpO2xldCBzPWEvKCh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMyksbD1zKnMsYz1uZXcgcHQsbT1uZXcgcHQsZj1uZXcgcHQscD1uZXcgcHQsZz10aGlzLmlzTGluZVNlZ21lbnRzPzI6MTtpZihvLmlzQnVmZmVyR2VvbWV0cnkpe2xldCBfPW8uaW5kZXgseT1vLmF0dHJpYnV0ZXMucG9zaXRpb247aWYoXyE9PW51bGwpe2xldCBPPU1hdGgubWF4KDAsci5zdGFydCksYj1NYXRoLm1pbihfLmNvdW50LHIuc3RhcnQrci5jb3VudCk7Zm9yKGxldCBSPU8sRT1iLTE7UjxFO1IrPWcpe2xldCBqPV8uZ2V0WChSKSxydD1fLmdldFgoUisxKTtpZihjLmZyb21CdWZmZXJBdHRyaWJ1dGUoeSxqKSxtLmZyb21CdWZmZXJBdHRyaWJ1dGUoeSxydCksVFcuZGlzdGFuY2VTcVRvU2VnbWVudChjLG0scCxmKT5sKWNvbnRpbnVlO3AuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2xldCBFdD10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyhwKTtFdDx0Lm5lYXJ8fEV0PnQuZmFyfHxlLnB1c2goe2Rpc3RhbmNlOkV0LHBvaW50OmYuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6UixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19ZWxzZXtsZXQgTz1NYXRoLm1heCgwLHIuc3RhcnQpLGI9TWF0aC5taW4oeS5jb3VudCxyLnN0YXJ0K3IuY291bnQpO2ZvcihsZXQgUj1PLEU9Yi0xO1I8RTtSKz1nKXtpZihjLmZyb21CdWZmZXJBdHRyaWJ1dGUoeSxSKSxtLmZyb21CdWZmZXJBdHRyaWJ1dGUoeSxSKzEpLFRXLmRpc3RhbmNlU3FUb1NlZ21lbnQoYyxtLHAsZik+bCljb250aW51ZTtwLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKTtsZXQgcnQ9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8ocCk7cnQ8dC5uZWFyfHxydD50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTpydCxwb2ludDpmLmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4OlIsZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fX1lbHNlIG8uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX11cGRhdGVNb3JwaFRhcmdldHMoKXtsZXQgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7bGV0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbz1PYmplY3Qua2V5cyhlKTtpZihvLmxlbmd0aD4wKXtsZXQgaT1lW29bMF1dO2lmKGkhPT12b2lkIDApe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErKyl7bGV0IHM9aVthXS5uYW1lfHxTdHJpbmcoYSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtzXT1hfX19fWVsc2V7bGV0IGU9dC5tb3JwaFRhcmdldHM7ZSE9PXZvaWQgMCYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19fTt1NC5wcm90b3R5cGUuaXNMaW5lPSEwO3ZhciBwZ3Q9bmV3IHB0LGRndD1uZXcgcHQsaDQ9Y2xhc3MgZXh0ZW5kcyB1NHtjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy50eXBlPSJMaW5lU2VnbWVudHMifWNvbXB1dGVMaW5lRGlzdGFuY2VzKCl7bGV0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYodC5pbmRleD09PW51bGwpe2xldCBlPXQuYXR0cmlidXRlcy5wb3NpdGlvbixvPVtdO2ZvcihsZXQgaT0wLGE9ZS5jb3VudDtpPGE7aSs9MilwZ3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGkpLGRndC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsaSsxKSxvW2ldPWk9PT0wPzA6b1tpLTFdLG9baSsxXT1vW2ldK3BndC5kaXN0YW5jZVRvKGRndCk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IE5yKG8sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfX07aDQucHJvdG90eXBlLmlzTGluZVNlZ21lbnRzPSEwO3ZhciBucT1jbGFzcyBleHRlbmRzIHU0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkxpbmVMb29wIn19O25xLnByb3RvdHlwZS5pc0xpbmVMb29wPSEwO3ZhciBhRj1jbGFzcyBleHRlbmRzIElse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQb2ludHNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgem4oMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2l6ZT0xLHRoaXMuc2l6ZUF0dGVudWF0aW9uPSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9fTthRi5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMDt2YXIgZ2d0PW5ldyBlbyxvcT1uZXcgVngsSUg9bmV3IEJ4LHpIPW5ldyBwdCxpcT1jbGFzcyBleHRlbmRzIFZpe2NvbnN0cnVjdG9yKHQ9bmV3IHRhLGU9bmV3IGFGKXtzdXBlcigpLHRoaXMudHlwZT0iUG9pbnRzIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1lLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9cmF5Y2FzdCh0LGUpe2xldCBvPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdHJpeFdvcmxkLGE9dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZCxyPW8uZHJhd1JhbmdlO2lmKG8uYm91bmRpbmdTcGhlcmU9PT1udWxsJiZvLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLElILmNvcHkoby5ib3VuZGluZ1NwaGVyZSksSUguYXBwbHlNYXRyaXg0KGkpLElILnJhZGl1cys9YSx0LnJheS5pbnRlcnNlY3RzU3BoZXJlKElIKT09PSExKXJldHVybjtnZ3QuY29weShpKS5pbnZlcnQoKSxvcS5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoZ2d0KTtsZXQgcz1hLygodGhpcy5zY2FsZS54K3RoaXMuc2NhbGUueSt0aGlzLnNjYWxlLnopLzMpLGw9cypzO2lmKG8uaXNCdWZmZXJHZW9tZXRyeSl7bGV0IGM9by5pbmRleCxmPW8uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihjIT09bnVsbCl7bGV0IHA9TWF0aC5tYXgoMCxyLnN0YXJ0KSxnPU1hdGgubWluKGMuY291bnQsci5zdGFydCtyLmNvdW50KTtmb3IobGV0IF89cCxNPWc7XzxNO18rKyl7bGV0IHk9Yy5nZXRYKF8pO3pILmZyb21CdWZmZXJBdHRyaWJ1dGUoZix5KSx1Z3QoekgseSxsLGksdCxlLHRoaXMpfX1lbHNle2xldCBwPU1hdGgubWF4KDAsci5zdGFydCksZz1NYXRoLm1pbihmLmNvdW50LHIuc3RhcnQrci5jb3VudCk7Zm9yKGxldCBfPXAsTT1nO188TTtfKyspekguZnJvbUJ1ZmZlckF0dHJpYnV0ZShmLF8pLHVndCh6SCxfLGwsaSx0LGUsdGhpcyl9fWVsc2UgY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfXVwZGF0ZU1vcnBoVGFyZ2V0cygpe2xldCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtsZXQgZT10Lm1vcnBoQXR0cmlidXRlcyxvPU9iamVjdC5rZXlzKGUpO2lmKG8ubGVuZ3RoPjApe2xldCBpPWVbb1swXV07aWYoaSE9PXZvaWQgMCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBhPTAscj1pLmxlbmd0aDthPHI7YSsrKXtsZXQgcz1pW2FdLm5hbWV8fFN0cmluZyhhKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W3NdPWF9fX19ZWxzZXtsZXQgZT10Lm1vcnBoVGFyZ2V0cztlIT09dm9pZCAwJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5Qb2ludHMudXBkYXRlTW9ycGhUYXJnZXRzKCkgZG9lcyBub3Qgc3VwcG9ydCBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fX07aXEucHJvdG90eXBlLmlzUG9pbnRzPSEwO2Z1bmN0aW9uIHVndChuLHQsZSxvLGksYSxyKXtsZXQgcz1vcS5kaXN0YW5jZVNxVG9Qb2ludChuKTtpZihzPGUpe2xldCBsPW5ldyBwdDtvcS5jbG9zZXN0UG9pbnRUb1BvaW50KG4sbCksbC5hcHBseU1hdHJpeDQobyk7bGV0IGM9aS5yYXkub3JpZ2luLmRpc3RhbmNlVG8obCk7aWYoYzxpLm5lYXJ8fGM+aS5mYXIpcmV0dXJuO2EucHVzaCh7ZGlzdGFuY2U6YyxkaXN0YW5jZVRvUmF5Ok1hdGguc3FydChzKSxwb2ludDpsLGluZGV4OnQsZmFjZTpudWxsLG9iamVjdDpyfSl9fXZhciBhcT1jbGFzcyBleHRlbmRzIEdze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCxjKXtzdXBlcih0LGUsbyxpLGEscixzLGwsYyksdGhpcy5taW5GaWx0ZXI9ciE9PXZvaWQgMD9yOndtLHRoaXMubWFnRmlsdGVyPWEhPT12b2lkIDA/YTp3bSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMTtsZXQgbT10aGlzO2Z1bmN0aW9uIGYoKXttLm5lZWRzVXBkYXRlPSEwLHQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhmKX0icmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayJpbiB0JiZ0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soZil9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5pbWFnZSkuY29weSh0aGlzKX11cGRhdGUoKXtsZXQgdD10aGlzLmltYWdlOyJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQ9PT0hMSYmdC5yZWFkeVN0YXRlPj10LkhBVkVfQ1VSUkVOVF9EQVRBJiYodGhpcy5uZWVkc1VwZGF0ZT0hMCl9fTthcS5wcm90b3R5cGUuaXNWaWRlb1RleHR1cmU9ITA7dmFyIHJxPWNsYXNzIGV4dGVuZHMgR3N7Y29uc3RydWN0b3IodCxlLG8pe3N1cGVyKHt3aWR0aDp0LGhlaWdodDplfSksdGhpcy5mb3JtYXQ9byx0aGlzLm1hZ0ZpbHRlcj1jbCx0aGlzLm1pbkZpbHRlcj1jbCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLm5lZWRzVXBkYXRlPSEwfX07cnEucHJvdG90eXBlLmlzRnJhbWVidWZmZXJUZXh0dXJlPSEwO3ZhciBzcT1jbGFzcyBleHRlbmRzIEdze2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCxjLG0sZixwKXtzdXBlcihudWxsLHIscyxsLGMsbSxpLGEsZixwKSx0aGlzLmltYWdlPXt3aWR0aDplLGhlaWdodDpvfSx0aGlzLm1pcG1hcHM9dCx0aGlzLmZsaXBZPSExLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfX07c3EucHJvdG90eXBlLmlzQ29tcHJlc3NlZFRleHR1cmU9ITA7dmFyIGxxPWNsYXNzIGV4dGVuZHMgR3N7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyxsLGMpe3N1cGVyKHQsZSxvLGksYSxyLHMsbCxjKSx0aGlzLm5lZWRzVXBkYXRlPSEwfX07bHEucHJvdG90eXBlLmlzQ2FudmFzVGV4dHVyZT0hMDt2YXIgTVM9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0PTEsZT04LG89MCxpPU1hdGguUEkqMil7c3VwZXIoKSx0aGlzLnR5cGU9IkNpcmNsZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHNlZ21lbnRzOmUsdGhldGFTdGFydDpvLHRoZXRhTGVuZ3RoOml9LGU9TWF0aC5tYXgoMyxlKTtsZXQgYT1bXSxyPVtdLHM9W10sbD1bXSxjPW5ldyBwdCxtPW5ldyBTZTtyLnB1c2goMCwwLDApLHMucHVzaCgwLDAsMSksbC5wdXNoKC41LC41KTtmb3IobGV0IGY9MCxwPTM7Zjw9ZTtmKysscCs9Myl7bGV0IGc9bytmL2UqaTtjLng9dCpNYXRoLmNvcyhnKSxjLnk9dCpNYXRoLnNpbihnKSxyLnB1c2goYy54LGMueSxjLnopLHMucHVzaCgwLDAsMSksbS54PShyW3BdL3QrMSkvMixtLnk9KHJbcCsxXS90KzEpLzIsbC5wdXNoKG0ueCxtLnkpfWZvcihsZXQgZj0xO2Y8PWU7ZisrKWEucHVzaChmLGYrMSwwKTt0aGlzLnNldEluZGV4KGEpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IE5yKHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBOcihzLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBOcihsLDIpKX1zdGF0aWMgZnJvbUpTT04odCl7cmV0dXJuIG5ldyBNUyh0LnJhZGl1cyx0LnNlZ21lbnRzLHQudGhldGFTdGFydCx0LnRoZXRhTGVuZ3RoKX19O3ZhciBjVWU9bmV3IHB0LG1VZT1uZXcgcHQsZlVlPW5ldyBwdCxwVWU9bmV3IFhyO3ZhciBUZD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudHlwZT0iQ3VydmUiLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPTIwMH1nZXRQb2ludCgpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIiksbnVsbH1nZXRQb2ludEF0KHQsZSl7bGV0IG89dGhpcy5nZXRVdG9UbWFwcGluZyh0KTtyZXR1cm4gdGhpcy5nZXRQb2ludChvLGUpfWdldFBvaW50cyh0PTUpe2xldCBlPVtdO2ZvcihsZXQgbz0wO288PXQ7bysrKWUucHVzaCh0aGlzLmdldFBvaW50KG8vdCkpO3JldHVybiBlfWdldFNwYWNlZFBvaW50cyh0PTUpe2xldCBlPVtdO2ZvcihsZXQgbz0wO288PXQ7bysrKWUucHVzaCh0aGlzLmdldFBvaW50QXQoby90KSk7cmV0dXJuIGV9Z2V0TGVuZ3RoKCl7bGV0IHQ9dGhpcy5nZXRMZW5ndGhzKCk7cmV0dXJuIHRbdC5sZW5ndGgtMV19Z2V0TGVuZ3Rocyh0PXRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zKXtpZih0aGlzLmNhY2hlQXJjTGVuZ3RocyYmdGhpcy5jYWNoZUFyY0xlbmd0aHMubGVuZ3RoPT09dCsxJiYhdGhpcy5uZWVkc1VwZGF0ZSlyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM7dGhpcy5uZWVkc1VwZGF0ZT0hMTtsZXQgZT1bXSxvLGk9dGhpcy5nZXRQb2ludCgwKSxhPTA7ZS5wdXNoKDApO2ZvcihsZXQgcj0xO3I8PXQ7cisrKW89dGhpcy5nZXRQb2ludChyL3QpLGErPW8uZGlzdGFuY2VUbyhpKSxlLnB1c2goYSksaT1vO3JldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Rocz1lLGV9dXBkYXRlQXJjTGVuZ3Rocygpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5nZXRMZW5ndGhzKCl9Z2V0VXRvVG1hcHBpbmcodCxlKXtsZXQgbz10aGlzLmdldExlbmd0aHMoKSxpPTAsYT1vLmxlbmd0aCxyO2U/cj1lOnI9dCpvW2EtMV07bGV0IHM9MCxsPWEtMSxjO2Zvcig7czw9bDspaWYoaT1NYXRoLmZsb29yKHMrKGwtcykvMiksYz1vW2ldLXIsYzwwKXM9aSsxO2Vsc2UgaWYoYz4wKWw9aS0xO2Vsc2V7bD1pO2JyZWFrfWlmKGk9bCxvW2ldPT09cilyZXR1cm4gaS8oYS0xKTtsZXQgbT1vW2ldLHA9b1tpKzFdLW0sZz0oci1tKS9wO3JldHVybihpK2cpLyhhLTEpfWdldFRhbmdlbnQodCxlKXtsZXQgaT10LTFlLTQsYT10KzFlLTQ7aTwwJiYoaT0wKSxhPjEmJihhPTEpO2xldCByPXRoaXMuZ2V0UG9pbnQoaSkscz10aGlzLmdldFBvaW50KGEpLGw9ZXx8KHIuaXNWZWN0b3IyP25ldyBTZTpuZXcgcHQpO3JldHVybiBsLmNvcHkocykuc3ViKHIpLm5vcm1hbGl6ZSgpLGx9Z2V0VGFuZ2VudEF0KHQsZSl7bGV0IG89dGhpcy5nZXRVdG9UbWFwcGluZyh0KTtyZXR1cm4gdGhpcy5nZXRUYW5nZW50KG8sZSl9Y29tcHV0ZUZyZW5ldEZyYW1lcyh0LGUpe2xldCBvPW5ldyBwdCxpPVtdLGE9W10scj1bXSxzPW5ldyBwdCxsPW5ldyBlbztmb3IobGV0IGc9MDtnPD10O2crKyl7bGV0IF89Zy90O2lbZ109dGhpcy5nZXRUYW5nZW50QXQoXyxuZXcgcHQpfWFbMF09bmV3IHB0LHJbMF09bmV3IHB0O2xldCBjPU51bWJlci5NQVhfVkFMVUUsbT1NYXRoLmFicyhpWzBdLngpLGY9TWF0aC5hYnMoaVswXS55KSxwPU1hdGguYWJzKGlbMF0ueik7bTw9YyYmKGM9bSxvLnNldCgxLDAsMCkpLGY8PWMmJihjPWYsby5zZXQoMCwxLDApKSxwPD1jJiZvLnNldCgwLDAsMSkscy5jcm9zc1ZlY3RvcnMoaVswXSxvKS5ub3JtYWxpemUoKSxhWzBdLmNyb3NzVmVjdG9ycyhpWzBdLHMpLHJbMF0uY3Jvc3NWZWN0b3JzKGlbMF0sYVswXSk7Zm9yKGxldCBnPTE7Zzw9dDtnKyspe2lmKGFbZ109YVtnLTFdLmNsb25lKCkscltnXT1yW2ctMV0uY2xvbmUoKSxzLmNyb3NzVmVjdG9ycyhpW2ctMV0saVtnXSkscy5sZW5ndGgoKT5OdW1iZXIuRVBTSUxPTil7cy5ub3JtYWxpemUoKTtsZXQgXz1NYXRoLmFjb3Moa2QoaVtnLTFdLmRvdChpW2ddKSwtMSwxKSk7YVtnXS5hcHBseU1hdHJpeDQobC5tYWtlUm90YXRpb25BeGlzKHMsXykpfXJbZ10uY3Jvc3NWZWN0b3JzKGlbZ10sYVtnXSl9aWYoZT09PSEwKXtsZXQgZz1NYXRoLmFjb3Moa2QoYVswXS5kb3QoYVt0XSksLTEsMSkpO2cvPXQsaVswXS5kb3Qocy5jcm9zc1ZlY3RvcnMoYVswXSxhW3RdKSk+MCYmKGc9LWcpO2ZvcihsZXQgXz0xO188PXQ7XysrKWFbX10uYXBwbHlNYXRyaXg0KGwubWFrZVJvdGF0aW9uQXhpcyhpW19dLGcqXykpLHJbX10uY3Jvc3NWZWN0b3JzKGlbX10sYVtfXSl9cmV0dXJue3RhbmdlbnRzOmksbm9ybWFsczphLGJpbm9ybWFsczpyfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc310b0pTT04oKXtsZXQgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fWZyb21KU09OKHQpe3JldHVybiB0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz10LmFyY0xlbmd0aERpdmlzaW9ucyx0aGlzfX0sYlM9Y2xhc3MgZXh0ZW5kcyBUZHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG89MSxpPTEsYT0wLHI9TWF0aC5QSSoyLHM9ITEsbD0wKXtzdXBlcigpLHRoaXMudHlwZT0iRWxsaXBzZUN1cnZlIix0aGlzLmFYPXQsdGhpcy5hWT1lLHRoaXMueFJhZGl1cz1vLHRoaXMueVJhZGl1cz1pLHRoaXMuYVN0YXJ0QW5nbGU9YSx0aGlzLmFFbmRBbmdsZT1yLHRoaXMuYUNsb2Nrd2lzZT1zLHRoaXMuYVJvdGF0aW9uPWx9Z2V0UG9pbnQodCxlKXtsZXQgbz1lfHxuZXcgU2UsaT1NYXRoLlBJKjIsYT10aGlzLmFFbmRBbmdsZS10aGlzLmFTdGFydEFuZ2xlLHI9TWF0aC5hYnMoYSk8TnVtYmVyLkVQU0lMT047Zm9yKDthPDA7KWErPWk7Zm9yKDthPmk7KWEtPWk7YTxOdW1iZXIuRVBTSUxPTiYmKHI/YT0wOmE9aSksdGhpcy5hQ2xvY2t3aXNlPT09ITAmJiFyJiYoYT09PWk/YT0taTphPWEtaSk7bGV0IHM9dGhpcy5hU3RhcnRBbmdsZSt0KmEsbD10aGlzLmFYK3RoaXMueFJhZGl1cypNYXRoLmNvcyhzKSxjPXRoaXMuYVkrdGhpcy55UmFkaXVzKk1hdGguc2luKHMpO2lmKHRoaXMuYVJvdGF0aW9uIT09MCl7bGV0IG09TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGY9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLHA9bC10aGlzLmFYLGc9Yy10aGlzLmFZO2w9cCptLWcqZit0aGlzLmFYLGM9cCpmK2cqbSt0aGlzLmFZfXJldHVybiBvLnNldChsLGMpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC5hWD10aGlzLmFYLHQuYVk9dGhpcy5hWSx0LnhSYWRpdXM9dGhpcy54UmFkaXVzLHQueVJhZGl1cz10aGlzLnlSYWRpdXMsdC5hU3RhcnRBbmdsZT10aGlzLmFTdGFydEFuZ2xlLHQuYUVuZEFuZ2xlPXRoaXMuYUVuZEFuZ2xlLHQuYUNsb2Nrd2lzZT10aGlzLmFDbG9ja3dpc2UsdC5hUm90YXRpb249dGhpcy5hUm90YXRpb24sdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc319O2JTLnByb3RvdHlwZS5pc0VsbGlwc2VDdXJ2ZT0hMDt2YXIgckY9Y2xhc3MgZXh0ZW5kcyBiU3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscil7c3VwZXIodCxlLG8sbyxpLGEsciksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9fTtyRi5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtmdW5jdGlvbiBuWigpe2xldCBuPTAsdD0wLGU9MCxvPTA7ZnVuY3Rpb24gaShhLHIscyxsKXtuPWEsdD1zLGU9LTMqYSszKnItMipzLWwsbz0yKmEtMipyK3MrbH1yZXR1cm57aW5pdENhdG11bGxSb206ZnVuY3Rpb24oYSxyLHMsbCxjKXtpKHIscyxjKihzLWEpLGMqKGwtcikpfSxpbml0Tm9udW5pZm9ybUNhdG11bGxSb206ZnVuY3Rpb24oYSxyLHMsbCxjLG0sZil7bGV0IHA9KHItYSkvYy0ocy1hKS8oYyttKSsocy1yKS9tLGc9KHMtcikvbS0obC1yKS8obStmKSsobC1zKS9mO3AqPW0sZyo9bSxpKHIscyxwLGcpfSxjYWxjOmZ1bmN0aW9uKGEpe2xldCByPWEqYSxzPXIqYTtyZXR1cm4gbit0KmErZSpyK28qc319fXZhciBISD1uZXcgcHQsQVc9bmV3IG5aLERXPW5ldyBuWixJVz1uZXcgblosc0Y9Y2xhc3MgZXh0ZW5kcyBUZHtjb25zdHJ1Y3Rvcih0PVtdLGU9ITEsbz0iY2VudHJpcGV0YWwiLGk9LjUpe3N1cGVyKCksdGhpcy50eXBlPSJDYXRtdWxsUm9tQ3VydmUzIix0aGlzLnBvaW50cz10LHRoaXMuY2xvc2VkPWUsdGhpcy5jdXJ2ZVR5cGU9byx0aGlzLnRlbnNpb249aX1nZXRQb2ludCh0LGU9bmV3IHB0KXtsZXQgbz1lLGk9dGhpcy5wb2ludHMsYT1pLmxlbmd0aCxyPShhLSh0aGlzLmNsb3NlZD8wOjEpKSp0LHM9TWF0aC5mbG9vcihyKSxsPXItczt0aGlzLmNsb3NlZD9zKz1zPjA/MDooTWF0aC5mbG9vcihNYXRoLmFicyhzKS9hKSsxKSphOmw9PT0wJiZzPT09YS0xJiYocz1hLTIsbD0xKTtsZXQgYyxtO3RoaXMuY2xvc2VkfHxzPjA/Yz1pWyhzLTEpJWFdOihISC5zdWJWZWN0b3JzKGlbMF0saVsxXSkuYWRkKGlbMF0pLGM9SEgpO2xldCBmPWlbcyVhXSxwPWlbKHMrMSklYV07aWYodGhpcy5jbG9zZWR8fHMrMjxhP209aVsocysyKSVhXTooSEguc3ViVmVjdG9ycyhpW2EtMV0saVthLTJdKS5hZGQoaVthLTFdKSxtPUhIKSx0aGlzLmN1cnZlVHlwZT09PSJjZW50cmlwZXRhbCJ8fHRoaXMuY3VydmVUeXBlPT09ImNob3JkYWwiKXtsZXQgZz10aGlzLmN1cnZlVHlwZT09PSJjaG9yZGFsIj8uNTouMjUsXz1NYXRoLnBvdyhjLmRpc3RhbmNlVG9TcXVhcmVkKGYpLGcpLE09TWF0aC5wb3coZi5kaXN0YW5jZVRvU3F1YXJlZChwKSxnKSx5PU1hdGgucG93KHAuZGlzdGFuY2VUb1NxdWFyZWQobSksZyk7TTwxZS00JiYoTT0xKSxfPDFlLTQmJihfPU0pLHk8MWUtNCYmKHk9TSksQVcuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGMueCxmLngscC54LG0ueCxfLE0seSksRFcuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGMueSxmLnkscC55LG0ueSxfLE0seSksSVcuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGMueixmLnoscC56LG0ueixfLE0seSl9ZWxzZSB0aGlzLmN1cnZlVHlwZT09PSJjYXRtdWxscm9tIiYmKEFXLmluaXRDYXRtdWxsUm9tKGMueCxmLngscC54LG0ueCx0aGlzLnRlbnNpb24pLERXLmluaXRDYXRtdWxsUm9tKGMueSxmLnkscC55LG0ueSx0aGlzLnRlbnNpb24pLElXLmluaXRDYXRtdWxsUm9tKGMueixmLnoscC56LG0ueix0aGlzLnRlbnNpb24pKTtyZXR1cm4gby5zZXQoQVcuY2FsYyhsKSxEVy5jYWxjKGwpLElXLmNhbGMobCkpLG99Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG89dC5wb2ludHMubGVuZ3RoO2U8bztlKyspe2xldCBpPXQucG9pbnRzW2VdO3RoaXMucG9pbnRzLnB1c2goaS5jbG9uZSgpKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3QucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG89dGhpcy5wb2ludHMubGVuZ3RoO2U8bztlKyspe2xldCBpPXRoaXMucG9pbnRzW2VdO3QucG9pbnRzLnB1c2goaS50b0FycmF5KCkpfXJldHVybiB0LmNsb3NlZD10aGlzLmNsb3NlZCx0LmN1cnZlVHlwZT10aGlzLmN1cnZlVHlwZSx0LnRlbnNpb249dGhpcy50ZW5zaW9uLHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbz10LnBvaW50cy5sZW5ndGg7ZTxvO2UrKyl7bGV0IGk9dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaChuZXcgcHQoKS5mcm9tQXJyYXkoaSkpfXJldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9fTtzRi5wcm90b3R5cGUuaXNDYXRtdWxsUm9tQ3VydmUzPSEwO2Z1bmN0aW9uIGhndChuLHQsZSxvLGkpe2xldCBhPShvLXQpKi41LHI9KGktZSkqLjUscz1uKm4sbD1uKnM7cmV0dXJuKDIqZS0yKm8rYStyKSpsKygtMyplKzMqby0yKmEtcikqcythKm4rZX1mdW5jdGlvbiBuR3Qobix0KXtsZXQgZT0xLW47cmV0dXJuIGUqZSp0fWZ1bmN0aW9uIG9HdChuLHQpe3JldHVybiAyKigxLW4pKm4qdH1mdW5jdGlvbiBpR3Qobix0KXtyZXR1cm4gbipuKnR9ZnVuY3Rpb24gdDQobix0LGUsbyl7cmV0dXJuIG5HdChuLHQpK29HdChuLGUpK2lHdChuLG8pfWZ1bmN0aW9uIGFHdChuLHQpe2xldCBlPTEtbjtyZXR1cm4gZSplKmUqdH1mdW5jdGlvbiByR3Qobix0KXtsZXQgZT0xLW47cmV0dXJuIDMqZSplKm4qdH1mdW5jdGlvbiBzR3Qobix0KXtyZXR1cm4gMyooMS1uKSpuKm4qdH1mdW5jdGlvbiBsR3Qobix0KXtyZXR1cm4gbipuKm4qdH1mdW5jdGlvbiBlNChuLHQsZSxvLGkpe3JldHVybiBhR3Qobix0KStyR3QobixlKStzR3QobixvKStsR3QobixpKX12YXIgXzQ9Y2xhc3MgZXh0ZW5kcyBUZHtjb25zdHJ1Y3Rvcih0PW5ldyBTZSxlPW5ldyBTZSxvPW5ldyBTZSxpPW5ldyBTZSl7c3VwZXIoKSx0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1vLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IFNlKXtsZXQgbz1lLGk9dGhpcy52MCxhPXRoaXMudjEscj10aGlzLnYyLHM9dGhpcy52MztyZXR1cm4gby5zZXQoZTQodCxpLngsYS54LHIueCxzLngpLGU0KHQsaS55LGEueSxyLnkscy55KSksb31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXMudjMuY29weSh0LnYzKSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9fTtfNC5wcm90b3R5cGUuaXNDdWJpY0JlemllckN1cnZlPSEwO3ZhciBsRj1jbGFzcyBleHRlbmRzIFRke2NvbnN0cnVjdG9yKHQ9bmV3IHB0LGU9bmV3IHB0LG89bmV3IHB0LGk9bmV3IHB0KXtzdXBlcigpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1vLHRoaXMudjM9aX1nZXRQb2ludCh0LGU9bmV3IHB0KXtsZXQgbz1lLGk9dGhpcy52MCxhPXRoaXMudjEscj10aGlzLnYyLHM9dGhpcy52MztyZXR1cm4gby5zZXQoZTQodCxpLngsYS54LHIueCxzLngpLGU0KHQsaS55LGEueSxyLnkscy55KSxlNCh0LGkueixhLnosci56LHMueikpLG99Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfX07bEYucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZTM9ITA7dmFyIE9TPWNsYXNzIGV4dGVuZHMgVGR7Y29uc3RydWN0b3IodD1uZXcgU2UsZT1uZXcgU2Upe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQ3VydmUiLHRoaXMudjE9dCx0aGlzLnYyPWV9Z2V0UG9pbnQodCxlPW5ldyBTZSl7bGV0IG89ZTtyZXR1cm4gdD09PTE/by5jb3B5KHRoaXMudjIpOihvLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLG8ubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMudjEpKSxvfWdldFBvaW50QXQodCxlKXtyZXR1cm4gdGhpcy5nZXRQb2ludCh0LGUpfWdldFRhbmdlbnQodCxlKXtsZXQgbz1lfHxuZXcgU2U7cmV0dXJuIG8uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSkubm9ybWFsaXplKCksb31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fTtPUy5wcm90b3R5cGUuaXNMaW5lQ3VydmU9ITA7dmFyIGNxPWNsYXNzIGV4dGVuZHMgVGR7Y29uc3RydWN0b3IodD1uZXcgcHQsZT1uZXcgcHQpe3N1cGVyKCksdGhpcy50eXBlPSJMaW5lQ3VydmUzIix0aGlzLmlzTGluZUN1cnZlMz0hMCx0aGlzLnYxPXQsdGhpcy52Mj1lfWdldFBvaW50KHQsZT1uZXcgcHQpe2xldCBvPWU7cmV0dXJuIHQ9PT0xP28uY29weSh0aGlzLnYyKTooby5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxvLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnYxKSksb31nZXRQb2ludEF0KHQsZSl7cmV0dXJuIHRoaXMuZ2V0UG9pbnQodCxlKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fSxDND1jbGFzcyBleHRlbmRzIFRke2NvbnN0cnVjdG9yKHQ9bmV3IFNlLGU9bmV3IFNlLG89bmV3IFNlKXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUiLHRoaXMudjA9dCx0aGlzLnYxPWUsdGhpcy52Mj1vfWdldFBvaW50KHQsZT1uZXcgU2Upe2xldCBvPWUsaT10aGlzLnYwLGE9dGhpcy52MSxyPXRoaXMudjI7cmV0dXJuIG8uc2V0KHQ0KHQsaS54LGEueCxyLngpLHQ0KHQsaS55LGEueSxyLnkpKSxvfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc310b0pTT04oKXtsZXQgdD1zdXBlci50b0pTT04oKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH1mcm9tSlNPTih0KXtyZXR1cm4gc3VwZXIuZnJvbUpTT04odCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc319O0M0LnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlPSEwO3ZhciBjRj1jbGFzcyBleHRlbmRzIFRke2NvbnN0cnVjdG9yKHQ9bmV3IHB0LGU9bmV3IHB0LG89bmV3IHB0KXtzdXBlcigpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9b31nZXRQb2ludCh0LGU9bmV3IHB0KXtsZXQgbz1lLGk9dGhpcy52MCxhPXRoaXMudjEscj10aGlzLnYyO3JldHVybiBvLnNldCh0NCh0LGkueCxhLngsci54KSx0NCh0LGkueSxhLnksci55KSx0NCh0LGkueixhLnosci56KSksb31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9ZnJvbUpTT04odCl7cmV0dXJuIHN1cGVyLmZyb21KU09OKHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9fTtjRi5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZTM9ITA7dmFyIE00PWNsYXNzIGV4dGVuZHMgVGR7Y29uc3RydWN0b3IodD1bXSl7c3VwZXIoKSx0aGlzLnR5cGU9IlNwbGluZUN1cnZlIix0aGlzLnBvaW50cz10fWdldFBvaW50KHQsZT1uZXcgU2Upe2xldCBvPWUsaT10aGlzLnBvaW50cyxhPShpLmxlbmd0aC0xKSp0LHI9TWF0aC5mbG9vcihhKSxzPWEtcixsPWlbcj09PTA/cjpyLTFdLGM9aVtyXSxtPWlbcj5pLmxlbmd0aC0yP2kubGVuZ3RoLTE6cisxXSxmPWlbcj5pLmxlbmd0aC0zP2kubGVuZ3RoLTE6cisyXTtyZXR1cm4gby5zZXQoaGd0KHMsbC54LGMueCxtLngsZi54KSxoZ3QocyxsLnksYy55LG0ueSxmLnkpKSxvfWNvcHkodCl7c3VwZXIuY29weSh0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxvPXQucG9pbnRzLmxlbmd0aDtlPG87ZSsrKXtsZXQgaT10LnBvaW50c1tlXTt0aGlzLnBvaW50cy5wdXNoKGkuY2xvbmUoKSl9cmV0dXJuIHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7dC5wb2ludHM9W107Zm9yKGxldCBlPTAsbz10aGlzLnBvaW50cy5sZW5ndGg7ZTxvO2UrKyl7bGV0IGk9dGhpcy5wb2ludHNbZV07dC5wb2ludHMucHVzaChpLnRvQXJyYXkoKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbz10LnBvaW50cy5sZW5ndGg7ZTxvO2UrKyl7bGV0IGk9dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaChuZXcgU2UoKS5mcm9tQXJyYXkoaSkpfXJldHVybiB0aGlzfX07TTQucHJvdG90eXBlLmlzU3BsaW5lQ3VydmU9ITA7dmFyIFdndD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBcmNDdXJ2ZTpyRixDYXRtdWxsUm9tQ3VydmUzOnNGLEN1YmljQmV6aWVyQ3VydmU6XzQsQ3ViaWNCZXppZXJDdXJ2ZTM6bEYsRWxsaXBzZUN1cnZlOmJTLExpbmVDdXJ2ZTpPUyxMaW5lQ3VydmUzOmNxLFF1YWRyYXRpY0JlemllckN1cnZlOkM0LFF1YWRyYXRpY0JlemllckN1cnZlMzpjRixTcGxpbmVDdXJ2ZTpNNH0pLG1xPWNsYXNzIGV4dGVuZHMgVGR7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iQ3VydmVQYXRoIix0aGlzLmN1cnZlcz1bXSx0aGlzLmF1dG9DbG9zZT0hMX1hZGQodCl7dGhpcy5jdXJ2ZXMucHVzaCh0KX1jbG9zZVBhdGgoKXtsZXQgdD10aGlzLmN1cnZlc1swXS5nZXRQb2ludCgwKSxlPXRoaXMuY3VydmVzW3RoaXMuY3VydmVzLmxlbmd0aC0xXS5nZXRQb2ludCgxKTt0LmVxdWFscyhlKXx8dGhpcy5jdXJ2ZXMucHVzaChuZXcgT1MoZSx0KSl9Z2V0UG9pbnQodCxlKXtsZXQgbz10KnRoaXMuZ2V0TGVuZ3RoKCksaT10aGlzLmdldEN1cnZlTGVuZ3RocygpLGE9MDtmb3IoO2E8aS5sZW5ndGg7KXtpZihpW2FdPj1vKXtsZXQgcj1pW2FdLW8scz10aGlzLmN1cnZlc1thXSxsPXMuZ2V0TGVuZ3RoKCksYz1sPT09MD8wOjEtci9sO3JldHVybiBzLmdldFBvaW50QXQoYyxlKX1hKyt9cmV0dXJuIG51bGx9Z2V0TGVuZ3RoKCl7bGV0IHQ9dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX11cGRhdGVBcmNMZW5ndGhzKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmNhY2hlTGVuZ3Rocz1udWxsLHRoaXMuZ2V0Q3VydmVMZW5ndGhzKCl9Z2V0Q3VydmVMZW5ndGhzKCl7aWYodGhpcy5jYWNoZUxlbmd0aHMmJnRoaXMuY2FjaGVMZW5ndGhzLmxlbmd0aD09PXRoaXMuY3VydmVzLmxlbmd0aClyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM7bGV0IHQ9W10sZT0wO2ZvcihsZXQgbz0wLGk9dGhpcy5jdXJ2ZXMubGVuZ3RoO288aTtvKyspZSs9dGhpcy5jdXJ2ZXNbb10uZ2V0TGVuZ3RoKCksdC5wdXNoKGUpO3JldHVybiB0aGlzLmNhY2hlTGVuZ3Rocz10LHR9Z2V0U3BhY2VkUG9pbnRzKHQ9NDApe2xldCBlPVtdO2ZvcihsZXQgbz0wO288PXQ7bysrKWUucHVzaCh0aGlzLmdldFBvaW50KG8vdCkpO3JldHVybiB0aGlzLmF1dG9DbG9zZSYmZS5wdXNoKGVbMF0pLGV9Z2V0UG9pbnRzKHQ9MTIpe2xldCBlPVtdLG87Zm9yKGxldCBpPTAsYT10aGlzLmN1cnZlcztpPGEubGVuZ3RoO2krKyl7bGV0IHI9YVtpXSxzPXImJnIuaXNFbGxpcHNlQ3VydmU/dCoyOnImJihyLmlzTGluZUN1cnZlfHxyLmlzTGluZUN1cnZlMyk/MTpyJiZyLmlzU3BsaW5lQ3VydmU/dCpyLnBvaW50cy5sZW5ndGg6dCxsPXIuZ2V0UG9pbnRzKHMpO2ZvcihsZXQgYz0wO2M8bC5sZW5ndGg7YysrKXtsZXQgbT1sW2NdO28mJm8uZXF1YWxzKG0pfHwoZS5wdXNoKG0pLG89bSl9fXJldHVybiB0aGlzLmF1dG9DbG9zZSYmZS5sZW5ndGg+MSYmIWVbZS5sZW5ndGgtMV0uZXF1YWxzKGVbMF0pJiZlLnB1c2goZVswXSksZX1jb3B5KHQpe3N1cGVyLmNvcHkodCksdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbz10LmN1cnZlcy5sZW5ndGg7ZTxvO2UrKyl7bGV0IGk9dC5jdXJ2ZXNbZV07dGhpcy5jdXJ2ZXMucHVzaChpLmNsb25lKCkpfXJldHVybiB0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3QuYXV0b0Nsb3NlPXRoaXMuYXV0b0Nsb3NlLHQuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG89dGhpcy5jdXJ2ZXMubGVuZ3RoO2U8bztlKyspe2xldCBpPXRoaXMuY3VydmVzW2VdO3QuY3VydmVzLnB1c2goaS50b0pTT04oKSl9cmV0dXJuIHR9ZnJvbUpTT04odCl7c3VwZXIuZnJvbUpTT04odCksdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBlPTAsbz10LmN1cnZlcy5sZW5ndGg7ZTxvO2UrKyl7bGV0IGk9dC5jdXJ2ZXNbZV07dGhpcy5jdXJ2ZXMucHVzaChuZXcgV2d0W2kudHlwZV0oKS5mcm9tSlNPTihpKSl9cmV0dXJuIHRoaXN9fSxiND1jbGFzcyBleHRlbmRzIG1xe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJQYXRoIix0aGlzLmN1cnJlbnRQb2ludD1uZXcgU2UsdCYmdGhpcy5zZXRGcm9tUG9pbnRzKHQpfXNldEZyb21Qb2ludHModCl7dGhpcy5tb3ZlVG8odFswXS54LHRbMF0ueSk7Zm9yKGxldCBlPTEsbz10Lmxlbmd0aDtlPG87ZSsrKXRoaXMubGluZVRvKHRbZV0ueCx0W2VdLnkpO3JldHVybiB0aGlzfW1vdmVUbyh0LGUpe3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5zZXQodCxlKSx0aGlzfWxpbmVUbyh0LGUpe2xldCBvPW5ldyBPUyh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBTZSh0LGUpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChvKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQodCxlKSx0aGlzfXF1YWRyYXRpY0N1cnZlVG8odCxlLG8saSl7bGV0IGE9bmV3IEM0KHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IFNlKHQsZSksbmV3IFNlKG8saSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKGEpLHRoaXMuY3VycmVudFBvaW50LnNldChvLGkpLHRoaXN9YmV6aWVyQ3VydmVUbyh0LGUsbyxpLGEscil7bGV0IHM9bmV3IF80KHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IFNlKHQsZSksbmV3IFNlKG8saSksbmV3IFNlKGEscikpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKHMpLHRoaXMuY3VycmVudFBvaW50LnNldChhLHIpLHRoaXN9c3BsaW5lVGhydSh0KXtsZXQgZT1bdGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKV0uY29uY2F0KHQpLG89bmV3IE00KGUpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG8pLHRoaXMuY3VycmVudFBvaW50LmNvcHkodFt0Lmxlbmd0aC0xXSksdGhpc31hcmModCxlLG8saSxhLHIpe2xldCBzPXRoaXMuY3VycmVudFBvaW50LngsbD10aGlzLmN1cnJlbnRQb2ludC55O3JldHVybiB0aGlzLmFic2FyYyh0K3MsZStsLG8saSxhLHIpLHRoaXN9YWJzYXJjKHQsZSxvLGksYSxyKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQsZSxvLG8saSxhLHIpLHRoaXN9ZWxsaXBzZSh0LGUsbyxpLGEscixzLGwpe2xldCBjPXRoaXMuY3VycmVudFBvaW50LngsbT10aGlzLmN1cnJlbnRQb2ludC55O3JldHVybiB0aGlzLmFic2VsbGlwc2UodCtjLGUrbSxvLGksYSxyLHMsbCksdGhpc31hYnNlbGxpcHNlKHQsZSxvLGksYSxyLHMsbCl7bGV0IGM9bmV3IGJTKHQsZSxvLGksYSxyLHMsbCk7aWYodGhpcy5jdXJ2ZXMubGVuZ3RoPjApe2xldCBmPWMuZ2V0UG9pbnQoMCk7Zi5lcXVhbHModGhpcy5jdXJyZW50UG9pbnQpfHx0aGlzLmxpbmVUbyhmLngsZi55KX10aGlzLmN1cnZlcy5wdXNoKGMpO2xldCBtPWMuZ2V0UG9pbnQoMSk7cmV0dXJuIHRoaXMuY3VycmVudFBvaW50LmNvcHkobSksdGhpc31jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY3VycmVudFBvaW50LmNvcHkodC5jdXJyZW50UG9pbnQpLHRoaXN9dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCk7cmV0dXJuIHQuY3VycmVudFBvaW50PXRoaXMuY3VycmVudFBvaW50LnRvQXJyYXkoKSx0fWZyb21KU09OKHQpe3JldHVybiBzdXBlci5mcm9tSlNPTih0KSx0aGlzLmN1cnJlbnRQb2ludC5mcm9tQXJyYXkodC5jdXJyZW50UG9pbnQpLHRoaXN9fSxLUD1jbGFzcyBleHRlbmRzIGI0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMudXVpZD1zYigpLHRoaXMudHlwZT0iU2hhcGUiLHRoaXMuaG9sZXM9W119Z2V0UG9pbnRzSG9sZXModCl7bGV0IGU9W107Zm9yKGxldCBvPTAsaT10aGlzLmhvbGVzLmxlbmd0aDtvPGk7bysrKWVbb109dGhpcy5ob2xlc1tvXS5nZXRQb2ludHModCk7cmV0dXJuIGV9ZXh0cmFjdFBvaW50cyh0KXtyZXR1cm57c2hhcGU6dGhpcy5nZXRQb2ludHModCksaG9sZXM6dGhpcy5nZXRQb2ludHNIb2xlcyh0KX19Y29weSh0KXtzdXBlci5jb3B5KHQpLHRoaXMuaG9sZXM9W107Zm9yKGxldCBlPTAsbz10LmhvbGVzLmxlbmd0aDtlPG87ZSsrKXtsZXQgaT10LmhvbGVzW2VdO3RoaXMuaG9sZXMucHVzaChpLmNsb25lKCkpfXJldHVybiB0aGlzfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTigpO3QudXVpZD10aGlzLnV1aWQsdC5ob2xlcz1bXTtmb3IobGV0IGU9MCxvPXRoaXMuaG9sZXMubGVuZ3RoO2U8bztlKyspe2xldCBpPXRoaXMuaG9sZXNbZV07dC5ob2xlcy5wdXNoKGkudG9KU09OKCkpfXJldHVybiB0fWZyb21KU09OKHQpe3N1cGVyLmZyb21KU09OKHQpLHRoaXMudXVpZD10LnV1aWQsdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxvPXQuaG9sZXMubGVuZ3RoO2U8bztlKyspe2xldCBpPXQuaG9sZXNbZV07dGhpcy5ob2xlcy5wdXNoKG5ldyBiNCgpLmZyb21KU09OKGkpKX1yZXR1cm4gdGhpc319LGNHdD17dHJpYW5ndWxhdGU6ZnVuY3Rpb24obix0LGU9Mil7bGV0IG89dCYmdC5sZW5ndGgsaT1vP3RbMF0qZTpuLmxlbmd0aCxhPXFndChuLDAsaSxlLCEwKSxyPVtdO2lmKCFhfHxhLm5leHQ9PT1hLnByZXYpcmV0dXJuIHI7bGV0IHMsbCxjLG0sZixwLGc7aWYobyYmKGE9Z0d0KG4sdCxhLGUpKSxuLmxlbmd0aD44MCplKXtzPWM9blswXSxsPW09blsxXTtmb3IobGV0IF89ZTtfPGk7Xys9ZSlmPW5bX10scD1uW18rMV0sZjxzJiYocz1mKSxwPGwmJihsPXApLGY+YyYmKGM9ZikscD5tJiYobT1wKTtnPU1hdGgubWF4KGMtcyxtLWwpLGc9ZyE9PTA/MS9nOjB9cmV0dXJuIE80KGEscixlLHMsbCxnKSxyfX07ZnVuY3Rpb24gcWd0KG4sdCxlLG8saSl7bGV0IGEscjtpZihpPT09dkd0KG4sdCxlLG8pPjApZm9yKGE9dDthPGU7YSs9bylyPV9ndChhLG5bYV0sblthKzFdLHIpO2Vsc2UgZm9yKGE9ZS1vO2E+PXQ7YS09bylyPV9ndChhLG5bYV0sblthKzFdLHIpO3JldHVybiByJiZ5RihyLHIubmV4dCkmJih5NChyKSxyPXIubmV4dCkscn1mdW5jdGlvbiBVeChuLHQpe2lmKCFuKXJldHVybiBuO3R8fCh0PW4pO2xldCBlPW4sbztkbyBpZihvPSExLCFlLnN0ZWluZXImJih5RihlLGUubmV4dCl8fGtyKGUucHJldixlLGUubmV4dCk9PT0wKSl7aWYoeTQoZSksZT10PWUucHJldixlPT09ZS5uZXh0KWJyZWFrO289ITB9ZWxzZSBlPWUubmV4dDt3aGlsZShvfHxlIT09dCk7cmV0dXJuIHR9ZnVuY3Rpb24gTzQobix0LGUsbyxpLGEscil7aWYoIW4pcmV0dXJuOyFyJiZhJiZNR3QobixvLGksYSk7bGV0IHM9bixsLGM7Zm9yKDtuLnByZXYhPT1uLm5leHQ7KXtpZihsPW4ucHJldixjPW4ubmV4dCxhP2ZHdChuLG8saSxhKTptR3Qobikpe3QucHVzaChsLmkvZSksdC5wdXNoKG4uaS9lKSx0LnB1c2goYy5pL2UpLHk0KG4pLG49Yy5uZXh0LHM9Yy5uZXh0O2NvbnRpbnVlfWlmKG49YyxuPT09cyl7cj9yPT09MT8obj1wR3QoVXgobiksdCxlKSxPNChuLHQsZSxvLGksYSwyKSk6cj09PTImJmRHdChuLHQsZSxvLGksYSk6TzQoVXgobiksdCxlLG8saSxhLDEpO2JyZWFrfX19ZnVuY3Rpb24gbUd0KG4pe2xldCB0PW4ucHJldixlPW4sbz1uLm5leHQ7aWYoa3IodCxlLG8pPj0wKXJldHVybiExO2xldCBpPW4ubmV4dC5uZXh0O2Zvcig7aSE9PW4ucHJldjspe2lmKHNTKHQueCx0LnksZS54LGUueSxvLngsby55LGkueCxpLnkpJiZrcihpLnByZXYsaSxpLm5leHQpPj0wKXJldHVybiExO2k9aS5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIGZHdChuLHQsZSxvKXtsZXQgaT1uLnByZXYsYT1uLHI9bi5uZXh0O2lmKGtyKGksYSxyKT49MClyZXR1cm4hMTtsZXQgcz1pLng8YS54P2kueDxyLng/aS54OnIueDphLng8ci54P2EueDpyLngsbD1pLnk8YS55P2kueTxyLnk/aS55OnIueTphLnk8ci55P2EueTpyLnksYz1pLng+YS54P2kueD5yLng/aS54OnIueDphLng+ci54P2EueDpyLngsbT1pLnk+YS55P2kueT5yLnk/aS55OnIueTphLnk+ci55P2EueTpyLnksZj1mcShzLGwsdCxlLG8pLHA9ZnEoYyxtLHQsZSxvKSxnPW4ucHJldlosXz1uLm5leHRaO2Zvcig7ZyYmZy56Pj1mJiZfJiZfLno8PXA7KXtpZihnIT09bi5wcmV2JiZnIT09bi5uZXh0JiZzUyhpLngsaS55LGEueCxhLnksci54LHIueSxnLngsZy55KSYma3IoZy5wcmV2LGcsZy5uZXh0KT49MHx8KGc9Zy5wcmV2WixfIT09bi5wcmV2JiZfIT09bi5uZXh0JiZzUyhpLngsaS55LGEueCxhLnksci54LHIueSxfLngsXy55KSYma3IoXy5wcmV2LF8sXy5uZXh0KT49MCkpcmV0dXJuITE7Xz1fLm5leHRafWZvcig7ZyYmZy56Pj1mOyl7aWYoZyE9PW4ucHJldiYmZyE9PW4ubmV4dCYmc1MoaS54LGkueSxhLngsYS55LHIueCxyLnksZy54LGcueSkmJmtyKGcucHJldixnLGcubmV4dCk+PTApcmV0dXJuITE7Zz1nLnByZXZafWZvcig7XyYmXy56PD1wOyl7aWYoXyE9PW4ucHJldiYmXyE9PW4ubmV4dCYmc1MoaS54LGkueSxhLngsYS55LHIueCxyLnksXy54LF8ueSkmJmtyKF8ucHJldixfLF8ubmV4dCk+PTApcmV0dXJuITE7Xz1fLm5leHRafXJldHVybiEwfWZ1bmN0aW9uIHBHdChuLHQsZSl7bGV0IG89bjtkb3tsZXQgaT1vLnByZXYsYT1vLm5leHQubmV4dDsheUYoaSxhKSYmWmd0KGksbyxvLm5leHQsYSkmJlA0KGksYSkmJlA0KGEsaSkmJih0LnB1c2goaS5pL2UpLHQucHVzaChvLmkvZSksdC5wdXNoKGEuaS9lKSx5NChvKSx5NChvLm5leHQpLG89bj1hKSxvPW8ubmV4dH13aGlsZShvIT09bik7cmV0dXJuIFV4KG8pfWZ1bmN0aW9uIGRHdChuLHQsZSxvLGksYSl7bGV0IHI9bjtkb3tsZXQgcz1yLm5leHQubmV4dDtmb3IoO3MhPT1yLnByZXY7KXtpZihyLmkhPT1zLmkmJlBHdChyLHMpKXtsZXQgbD1YZ3QocixzKTtyPVV4KHIsci5uZXh0KSxsPVV4KGwsbC5uZXh0KSxPNChyLHQsZSxvLGksYSksTzQobCx0LGUsbyxpLGEpO3JldHVybn1zPXMubmV4dH1yPXIubmV4dH13aGlsZShyIT09bil9ZnVuY3Rpb24gZ0d0KG4sdCxlLG8pe2xldCBpPVtdLGEscixzLGwsYztmb3IoYT0wLHI9dC5sZW5ndGg7YTxyO2ErKylzPXRbYV0qbyxsPWE8ci0xP3RbYSsxXSpvOm4ubGVuZ3RoLGM9cWd0KG4scyxsLG8sITEpLGM9PT1jLm5leHQmJihjLnN0ZWluZXI9ITApLGkucHVzaChPR3QoYykpO2ZvcihpLnNvcnQodUd0KSxhPTA7YTxpLmxlbmd0aDthKyspaEd0KGlbYV0sZSksZT1VeChlLGUubmV4dCk7cmV0dXJuIGV9ZnVuY3Rpb24gdUd0KG4sdCl7cmV0dXJuIG4ueC10Lnh9ZnVuY3Rpb24gaEd0KG4sdCl7aWYodD1fR3Qobix0KSx0KXtsZXQgZT1YZ3QodCxuKTtVeCh0LHQubmV4dCksVXgoZSxlLm5leHQpfX1mdW5jdGlvbiBfR3Qobix0KXtsZXQgZT10LG89bi54LGk9bi55LGE9LTEvMCxyO2Rve2lmKGk8PWUueSYmaT49ZS5uZXh0LnkmJmUubmV4dC55IT09ZS55KXtsZXQgcD1lLngrKGktZS55KSooZS5uZXh0LngtZS54KS8oZS5uZXh0LnktZS55KTtpZihwPD1vJiZwPmEpe2lmKGE9cCxwPT09byl7aWYoaT09PWUueSlyZXR1cm4gZTtpZihpPT09ZS5uZXh0LnkpcmV0dXJuIGUubmV4dH1yPWUueDxlLm5leHQueD9lOmUubmV4dH19ZT1lLm5leHR9d2hpbGUoZSE9PXQpO2lmKCFyKXJldHVybiBudWxsO2lmKG89PT1hKXJldHVybiByO2xldCBzPXIsbD1yLngsYz1yLnksbT0xLzAsZjtlPXI7ZG8gbz49ZS54JiZlLng+PWwmJm8hPT1lLngmJnNTKGk8Yz9vOmEsaSxsLGMsaTxjP2E6byxpLGUueCxlLnkpJiYoZj1NYXRoLmFicyhpLWUueSkvKG8tZS54KSxQNChlLG4pJiYoZjxtfHxmPT09bSYmKGUueD5yLnh8fGUueD09PXIueCYmQ0d0KHIsZSkpKSYmKHI9ZSxtPWYpKSxlPWUubmV4dDt3aGlsZShlIT09cyk7cmV0dXJuIHJ9ZnVuY3Rpb24gQ0d0KG4sdCl7cmV0dXJuIGtyKG4ucHJldixuLHQucHJldik8MCYma3IodC5uZXh0LG4sbi5uZXh0KTwwfWZ1bmN0aW9uIE1HdChuLHQsZSxvKXtsZXQgaT1uO2RvIGkuej09PW51bGwmJihpLno9ZnEoaS54LGkueSx0LGUsbykpLGkucHJldlo9aS5wcmV2LGkubmV4dFo9aS5uZXh0LGk9aS5uZXh0O3doaWxlKGkhPT1uKTtpLnByZXZaLm5leHRaPW51bGwsaS5wcmV2Wj1udWxsLGJHdChpKX1mdW5jdGlvbiBiR3Qobil7bGV0IHQsZSxvLGksYSxyLHMsbCxjPTE7ZG97Zm9yKGU9bixuPW51bGwsYT1udWxsLHI9MDtlOyl7Zm9yKHIrKyxvPWUscz0wLHQ9MDt0PGMmJihzKyssbz1vLm5leHRaLCEhbyk7dCsrKTtmb3IobD1jO3M+MHx8bD4wJiZvOylzIT09MCYmKGw9PT0wfHwhb3x8ZS56PD1vLnopPyhpPWUsZT1lLm5leHRaLHMtLSk6KGk9byxvPW8ubmV4dFosbC0tKSxhP2EubmV4dFo9aTpuPWksaS5wcmV2Wj1hLGE9aTtlPW99YS5uZXh0Wj1udWxsLGMqPTJ9d2hpbGUocj4xKTtyZXR1cm4gbn1mdW5jdGlvbiBmcShuLHQsZSxvLGkpe3JldHVybiBuPTMyNzY3KihuLWUpKmksdD0zMjc2NyoodC1vKSppLG49KG58bjw8OCkmMTY3MTE5MzUsbj0obnxuPDw0KSYyNTI2NDUxMzUsbj0obnxuPDwyKSY4NTg5OTM0NTksbj0obnxuPDwxKSYxNDMxNjU1NzY1LHQ9KHR8dDw8OCkmMTY3MTE5MzUsdD0odHx0PDw0KSYyNTI2NDUxMzUsdD0odHx0PDwyKSY4NTg5OTM0NTksdD0odHx0PDwxKSYxNDMxNjU1NzY1LG58dDw8MX1mdW5jdGlvbiBPR3Qobil7bGV0IHQ9bixlPW47ZG8odC54PGUueHx8dC54PT09ZS54JiZ0Lnk8ZS55KSYmKGU9dCksdD10Lm5leHQ7d2hpbGUodCE9PW4pO3JldHVybiBlfWZ1bmN0aW9uIHNTKG4sdCxlLG8saSxhLHIscyl7cmV0dXJuKGktcikqKHQtcyktKG4tcikqKGEtcyk+PTAmJihuLXIpKihvLXMpLShlLXIpKih0LXMpPj0wJiYoZS1yKSooYS1zKS0oaS1yKSooby1zKT49MH1mdW5jdGlvbiBQR3Qobix0KXtyZXR1cm4gbi5uZXh0LmkhPT10LmkmJm4ucHJldi5pIT09dC5pJiYheUd0KG4sdCkmJihQNChuLHQpJiZQNCh0LG4pJiZ4R3Qobix0KSYmKGtyKG4ucHJldixuLHQucHJldil8fGtyKG4sdC5wcmV2LHQpKXx8eUYobix0KSYma3Iobi5wcmV2LG4sbi5uZXh0KT4wJiZrcih0LnByZXYsdCx0Lm5leHQpPjApfWZ1bmN0aW9uIGtyKG4sdCxlKXtyZXR1cm4odC55LW4ueSkqKGUueC10LngpLSh0Lngtbi54KSooZS55LXQueSl9ZnVuY3Rpb24geUYobix0KXtyZXR1cm4gbi54PT09dC54JiZuLnk9PT10Lnl9ZnVuY3Rpb24gWmd0KG4sdCxlLG8pe2xldCBpPUxIKGtyKG4sdCxlKSksYT1MSChrcihuLHQsbykpLHI9TEgoa3IoZSxvLG4pKSxzPUxIKGtyKGUsbyx0KSk7cmV0dXJuISEoaSE9PWEmJnIhPT1zfHxpPT09MCYmRkgobixlLHQpfHxhPT09MCYmRkgobixvLHQpfHxyPT09MCYmRkgoZSxuLG8pfHxzPT09MCYmRkgoZSx0LG8pKX1mdW5jdGlvbiBGSChuLHQsZSl7cmV0dXJuIHQueDw9TWF0aC5tYXgobi54LGUueCkmJnQueD49TWF0aC5taW4obi54LGUueCkmJnQueTw9TWF0aC5tYXgobi55LGUueSkmJnQueT49TWF0aC5taW4obi55LGUueSl9ZnVuY3Rpb24gTEgobil7cmV0dXJuIG4+MD8xOm48MD8tMTowfWZ1bmN0aW9uIHlHdChuLHQpe2xldCBlPW47ZG97aWYoZS5pIT09bi5pJiZlLm5leHQuaSE9PW4uaSYmZS5pIT09dC5pJiZlLm5leHQuaSE9PXQuaSYmWmd0KGUsZS5uZXh0LG4sdCkpcmV0dXJuITA7ZT1lLm5leHR9d2hpbGUoZSE9PW4pO3JldHVybiExfWZ1bmN0aW9uIFA0KG4sdCl7cmV0dXJuIGtyKG4ucHJldixuLG4ubmV4dCk8MD9rcihuLHQsbi5uZXh0KT49MCYma3IobixuLnByZXYsdCk+PTA6a3Iobix0LG4ucHJldik8MHx8a3IobixuLm5leHQsdCk8MH1mdW5jdGlvbiB4R3Qobix0KXtsZXQgZT1uLG89ITEsaT0obi54K3QueCkvMixhPShuLnkrdC55KS8yO2RvIGUueT5hIT1lLm5leHQueT5hJiZlLm5leHQueSE9PWUueSYmaTwoZS5uZXh0LngtZS54KSooYS1lLnkpLyhlLm5leHQueS1lLnkpK2UueCYmKG89IW8pLGU9ZS5uZXh0O3doaWxlKGUhPT1uKTtyZXR1cm4gb31mdW5jdGlvbiBYZ3Qobix0KXtsZXQgZT1uZXcgcHEobi5pLG4ueCxuLnkpLG89bmV3IHBxKHQuaSx0LngsdC55KSxpPW4ubmV4dCxhPXQucHJldjtyZXR1cm4gbi5uZXh0PXQsdC5wcmV2PW4sZS5uZXh0PWksaS5wcmV2PWUsby5uZXh0PWUsZS5wcmV2PW8sYS5uZXh0PW8sby5wcmV2PWEsb31mdW5jdGlvbiBfZ3Qobix0LGUsbyl7bGV0IGk9bmV3IHBxKG4sdCxlKTtyZXR1cm4gbz8oaS5uZXh0PW8ubmV4dCxpLnByZXY9byxvLm5leHQucHJldj1pLG8ubmV4dD1pKTooaS5wcmV2PWksaS5uZXh0PWkpLGl9ZnVuY3Rpb24geTQobil7bi5uZXh0LnByZXY9bi5wcmV2LG4ucHJldi5uZXh0PW4ubmV4dCxuLnByZXZaJiYobi5wcmV2Wi5uZXh0Wj1uLm5leHRaKSxuLm5leHRaJiYobi5uZXh0Wi5wcmV2Wj1uLnByZXZaKX1mdW5jdGlvbiBwcShuLHQsZSl7dGhpcy5pPW4sdGhpcy54PXQsdGhpcy55PWUsdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9ZnVuY3Rpb24gdkd0KG4sdCxlLG8pe2xldCBpPTA7Zm9yKGxldCBhPXQscj1lLW87YTxlO2ErPW8paSs9KG5bcl0tblthXSkqKG5bYSsxXStuW3IrMV0pLHI9YTtyZXR1cm4gaX12YXIgTk89Y2xhc3N7c3RhdGljIGFyZWEodCl7bGV0IGU9dC5sZW5ndGgsbz0wO2ZvcihsZXQgaT1lLTEsYT0wO2E8ZTtpPWErKylvKz10W2ldLngqdFthXS55LXRbYV0ueCp0W2ldLnk7cmV0dXJuIG8qLjV9c3RhdGljIGlzQ2xvY2tXaXNlKHQpe3JldHVybiBOTy5hcmVhKHQpPDB9c3RhdGljIHRyaWFuZ3VsYXRlU2hhcGUodCxlKXtsZXQgbz1bXSxpPVtdLGE9W107Q2d0KHQpLE1ndChvLHQpO2xldCByPXQubGVuZ3RoO2UuZm9yRWFjaChDZ3QpO2ZvcihsZXQgbD0wO2w8ZS5sZW5ndGg7bCsrKWkucHVzaChyKSxyKz1lW2xdLmxlbmd0aCxNZ3QobyxlW2xdKTtsZXQgcz1jR3QudHJpYW5ndWxhdGUobyxpKTtmb3IobGV0IGw9MDtsPHMubGVuZ3RoO2wrPTMpYS5wdXNoKHMuc2xpY2UobCxsKzMpKTtyZXR1cm4gYX19O2Z1bmN0aW9uIENndChuKXtsZXQgdD1uLmxlbmd0aDt0PjImJm5bdC0xXS5lcXVhbHMoblswXSkmJm4ucG9wKCl9ZnVuY3Rpb24gTWd0KG4sdCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbi5wdXNoKHRbZV0ueCksbi5wdXNoKHRbZV0ueSl9dmFyIFl4PWNsYXNzIGV4dGVuZHMgdGF7Y29uc3RydWN0b3IodD1uZXcgS1AoW25ldyBTZSguNSwuNSksbmV3IFNlKC0uNSwuNSksbmV3IFNlKC0uNSwtLjUpLG5ldyBTZSguNSwtLjUpXSksZT17fSl7c3VwZXIoKSx0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxvcHRpb25zOmV9LHQ9QXJyYXkuaXNBcnJheSh0KT90Olt0XTtsZXQgbz10aGlzLGk9W10sYT1bXTtmb3IobGV0IHM9MCxsPXQubGVuZ3RoO3M8bDtzKyspe2xldCBjPXRbc107cihjKX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBOcihpLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBOcihhLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7ZnVuY3Rpb24gcihzKXtsZXQgbD1bXSxjPWUuY3VydmVTZWdtZW50cyE9PXZvaWQgMD9lLmN1cnZlU2VnbWVudHM6MTIsbT1lLnN0ZXBzIT09dm9pZCAwP2Uuc3RlcHM6MSxmPWUuZGVwdGghPT12b2lkIDA/ZS5kZXB0aDoxLHA9ZS5iZXZlbEVuYWJsZWQhPT12b2lkIDA/ZS5iZXZlbEVuYWJsZWQ6ITAsZz1lLmJldmVsVGhpY2tuZXNzIT09dm9pZCAwP2UuYmV2ZWxUaGlja25lc3M6LjIsXz1lLmJldmVsU2l6ZSE9PXZvaWQgMD9lLmJldmVsU2l6ZTpnLS4xLE09ZS5iZXZlbE9mZnNldCE9PXZvaWQgMD9lLmJldmVsT2Zmc2V0OjAseT1lLmJldmVsU2VnbWVudHMhPT12b2lkIDA/ZS5iZXZlbFNlZ21lbnRzOjMsTz1lLmV4dHJ1ZGVQYXRoLGI9ZS5VVkdlbmVyYXRvciE9PXZvaWQgMD9lLlVWR2VuZXJhdG9yOndHdDtlLmFtb3VudCE9PXZvaWQgMCYmKGNvbnNvbGUud2FybigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBhbW91bnQgaGFzIGJlZW4gcmVuYW1lZCB0byBkZXB0aC4iKSxmPWUuYW1vdW50KTtsZXQgUixFPSExLGoscnQsSixFdDtPJiYoUj1PLmdldFNwYWNlZFBvaW50cyhtKSxFPSEwLHA9ITEsaj1PLmNvbXB1dGVGcmVuZXRGcmFtZXMobSwhMSkscnQ9bmV3IHB0LEo9bmV3IHB0LEV0PW5ldyBwdCkscHx8KHk9MCxnPTAsXz0wLE09MCk7bGV0IGp0PXMuZXh0cmFjdFBvaW50cyhjKSxrdD1qdC5zaGFwZSx3PWp0LmhvbGVzO2lmKCFOTy5pc0Nsb2NrV2lzZShrdCkpe2t0PWt0LnJldmVyc2UoKTtmb3IobGV0IGh0PTAsUmU9dy5sZW5ndGg7aHQ8UmU7aHQrKyl7bGV0IGZlPXdbaHRdO05PLmlzQ2xvY2tXaXNlKGZlKSYmKHdbaHRdPWZlLnJldmVyc2UoKSl9fWxldCBudD1OTy50cmlhbmd1bGF0ZVNoYXBlKGt0LHcpLGx0PWt0O2ZvcihsZXQgaHQ9MCxSZT13Lmxlbmd0aDtodDxSZTtodCsrKXtsZXQgZmU9d1todF07a3Q9a3QuY29uY2F0KGZlKX1mdW5jdGlvbiBidChodCxSZSxmZSl7cmV0dXJuIFJlfHxjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IHZlYyBkb2VzIG5vdCBleGlzdCIpLFJlLmNsb25lKCkubXVsdGlwbHlTY2FsYXIoZmUpLmFkZChodCl9bGV0IG90PWt0Lmxlbmd0aCx1dD1udC5sZW5ndGg7ZnVuY3Rpb24gZ3QoaHQsUmUsZmUpe2xldCBVZSxGZSxCbix3bj1odC54LVJlLngscW89aHQueS1SZS55LG1hPWZlLngtaHQueCxqaT1mZS55LWh0LnksZnQ9d24qd24rcW8qcW8saXQ9d24qamktcW8qbWE7aWYoTWF0aC5hYnMoaXQpPk51bWJlci5FUFNJTE9OKXtsZXQgZ2U9TWF0aC5zcXJ0KGZ0KSxLZT1NYXRoLnNxcnQobWEqbWEramkqamkpLEhuPVJlLngtcW8vZ2UsZGU9UmUueSt3bi9nZSxYbj1mZS54LWppL0tlLFZuPWZlLnkrbWEvS2UsdG49KChYbi1IbikqamktKFZuLWRlKSptYSkvKHduKmppLXFvKm1hKTtVZT1Ibit3bip0bi1odC54LEZlPWRlK3FvKnRuLWh0Lnk7bGV0IGNuPVVlKlVlK0ZlKkZlO2lmKGNuPD0yKXJldHVybiBuZXcgU2UoVWUsRmUpO0JuPU1hdGguc3FydChjbi8yKX1lbHNle2xldCBnZT0hMTt3bj5OdW1iZXIuRVBTSUxPTj9tYT5OdW1iZXIuRVBTSUxPTiYmKGdlPSEwKTp3bjwtTnVtYmVyLkVQU0lMT04/bWE8LU51bWJlci5FUFNJTE9OJiYoZ2U9ITApOk1hdGguc2lnbihxbyk9PT1NYXRoLnNpZ24oamkpJiYoZ2U9ITApLGdlPyhVZT0tcW8sRmU9d24sQm49TWF0aC5zcXJ0KGZ0KSk6KFVlPXduLEZlPXFvLEJuPU1hdGguc3FydChmdC8yKSl9cmV0dXJuIG5ldyBTZShVZS9CbixGZS9Cbil9bGV0IFd0PVtdO2ZvcihsZXQgaHQ9MCxSZT1sdC5sZW5ndGgsZmU9UmUtMSxVZT1odCsxO2h0PFJlO2h0KyssZmUrKyxVZSsrKWZlPT09UmUmJihmZT0wKSxVZT09PVJlJiYoVWU9MCksV3RbaHRdPWd0KGx0W2h0XSxsdFtmZV0sbHRbVWVdKTtsZXQgUnQ9W10sR3QseWU9V3QuY29uY2F0KCk7Zm9yKGxldCBodD0wLFJlPXcubGVuZ3RoO2h0PFJlO2h0Kyspe2xldCBmZT13W2h0XTtHdD1bXTtmb3IobGV0IFVlPTAsRmU9ZmUubGVuZ3RoLEJuPUZlLTEsd249VWUrMTtVZTxGZTtVZSsrLEJuKyssd24rKylCbj09PUZlJiYoQm49MCksd249PT1GZSYmKHduPTApLEd0W1VlXT1ndChmZVtVZV0sZmVbQm5dLGZlW3duXSk7UnQucHVzaChHdCkseWU9eWUuY29uY2F0KEd0KX1mb3IobGV0IGh0PTA7aHQ8eTtodCsrKXtsZXQgUmU9aHQveSxmZT1nKk1hdGguY29zKFJlKk1hdGguUEkvMiksVWU9XypNYXRoLnNpbihSZSpNYXRoLlBJLzIpK007Zm9yKGxldCBGZT0wLEJuPWx0Lmxlbmd0aDtGZTxCbjtGZSsrKXtsZXQgd249YnQobHRbRmVdLFd0W0ZlXSxVZSk7VmUod24ueCx3bi55LC1mZSl9Zm9yKGxldCBGZT0wLEJuPXcubGVuZ3RoO0ZlPEJuO0ZlKyspe2xldCB3bj13W0ZlXTtHdD1SdFtGZV07Zm9yKGxldCBxbz0wLG1hPXduLmxlbmd0aDtxbzxtYTtxbysrKXtsZXQgamk9YnQod25bcW9dLEd0W3FvXSxVZSk7VmUoamkueCxqaS55LC1mZSl9fX1sZXQgamU9XytNO2ZvcihsZXQgaHQ9MDtodDxvdDtodCsrKXtsZXQgUmU9cD9idChrdFtodF0seWVbaHRdLGplKTprdFtodF07RT8oSi5jb3B5KGoubm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoUmUueCkscnQuY29weShqLmJpbm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoUmUueSksRXQuY29weShSWzBdKS5hZGQoSikuYWRkKHJ0KSxWZShFdC54LEV0LnksRXQueikpOlZlKFJlLngsUmUueSwwKX1mb3IobGV0IGh0PTE7aHQ8PW07aHQrKylmb3IobGV0IFJlPTA7UmU8b3Q7UmUrKyl7bGV0IGZlPXA/YnQoa3RbUmVdLHllW1JlXSxqZSk6a3RbUmVdO0U/KEouY29weShqLm5vcm1hbHNbaHRdKS5tdWx0aXBseVNjYWxhcihmZS54KSxydC5jb3B5KGouYmlub3JtYWxzW2h0XSkubXVsdGlwbHlTY2FsYXIoZmUueSksRXQuY29weShSW2h0XSkuYWRkKEopLmFkZChydCksVmUoRXQueCxFdC55LEV0LnopKTpWZShmZS54LGZlLnksZi9tKmh0KX1mb3IobGV0IGh0PXktMTtodD49MDtodC0tKXtsZXQgUmU9aHQveSxmZT1nKk1hdGguY29zKFJlKk1hdGguUEkvMiksVWU9XypNYXRoLnNpbihSZSpNYXRoLlBJLzIpK007Zm9yKGxldCBGZT0wLEJuPWx0Lmxlbmd0aDtGZTxCbjtGZSsrKXtsZXQgd249YnQobHRbRmVdLFd0W0ZlXSxVZSk7VmUod24ueCx3bi55LGYrZmUpfWZvcihsZXQgRmU9MCxCbj13Lmxlbmd0aDtGZTxCbjtGZSsrKXtsZXQgd249d1tGZV07R3Q9UnRbRmVdO2ZvcihsZXQgcW89MCxtYT13bi5sZW5ndGg7cW88bWE7cW8rKyl7bGV0IGppPWJ0KHduW3FvXSxHdFtxb10sVWUpO0U/VmUoamkueCxqaS55K1JbbS0xXS55LFJbbS0xXS54K2ZlKTpWZShqaS54LGppLnksZitmZSl9fX1jZSgpLEx0KCk7ZnVuY3Rpb24gY2UoKXtsZXQgaHQ9aS5sZW5ndGgvMztpZihwKXtsZXQgUmU9MCxmZT1vdCpSZTtmb3IobGV0IFVlPTA7VWU8dXQ7VWUrKyl7bGV0IEZlPW50W1VlXTtEZShGZVsyXStmZSxGZVsxXStmZSxGZVswXStmZSl9UmU9bSt5KjIsZmU9b3QqUmU7Zm9yKGxldCBVZT0wO1VlPHV0O1VlKyspe2xldCBGZT1udFtVZV07RGUoRmVbMF0rZmUsRmVbMV0rZmUsRmVbMl0rZmUpfX1lbHNle2ZvcihsZXQgUmU9MDtSZTx1dDtSZSsrKXtsZXQgZmU9bnRbUmVdO0RlKGZlWzJdLGZlWzFdLGZlWzBdKX1mb3IobGV0IFJlPTA7UmU8dXQ7UmUrKyl7bGV0IGZlPW50W1JlXTtEZShmZVswXStvdCptLGZlWzFdK290Km0sZmVbMl0rb3QqbSl9fW8uYWRkR3JvdXAoaHQsaS5sZW5ndGgvMy1odCwwKX1mdW5jdGlvbiBMdCgpe2xldCBodD1pLmxlbmd0aC8zLFJlPTA7UG4obHQsUmUpLFJlKz1sdC5sZW5ndGg7Zm9yKGxldCBmZT0wLFVlPXcubGVuZ3RoO2ZlPFVlO2ZlKyspe2xldCBGZT13W2ZlXTtQbihGZSxSZSksUmUrPUZlLmxlbmd0aH1vLmFkZEdyb3VwKGh0LGkubGVuZ3RoLzMtaHQsMSl9ZnVuY3Rpb24gUG4oaHQsUmUpe2xldCBmZT1odC5sZW5ndGg7Zm9yKDstLWZlPj0wOyl7bGV0IFVlPWZlLEZlPWZlLTE7RmU8MCYmKEZlPWh0Lmxlbmd0aC0xKTtmb3IobGV0IEJuPTAsd249bSt5KjI7Qm48d247Qm4rKyl7bGV0IHFvPW90KkJuLG1hPW90KihCbisxKSxqaT1SZStVZStxbyxmdD1SZStGZStxbyxpdD1SZStGZSttYSxnZT1SZStVZSttYTtxdChqaSxmdCxpdCxnZSl9fX1mdW5jdGlvbiBWZShodCxSZSxmZSl7bC5wdXNoKGh0KSxsLnB1c2goUmUpLGwucHVzaChmZSl9ZnVuY3Rpb24gRGUoaHQsUmUsZmUpe0xlKGh0KSxMZShSZSksTGUoZmUpO2xldCBVZT1pLmxlbmd0aC8zLEZlPWIuZ2VuZXJhdGVUb3BVVihvLGksVWUtMyxVZS0yLFVlLTEpO0hlKEZlWzBdKSxIZShGZVsxXSksSGUoRmVbMl0pfWZ1bmN0aW9uIHF0KGh0LFJlLGZlLFVlKXtMZShodCksTGUoUmUpLExlKFVlKSxMZShSZSksTGUoZmUpLExlKFVlKTtsZXQgRmU9aS5sZW5ndGgvMyxCbj1iLmdlbmVyYXRlU2lkZVdhbGxVVihvLGksRmUtNixGZS0zLEZlLTIsRmUtMSk7SGUoQm5bMF0pLEhlKEJuWzFdKSxIZShCblszXSksSGUoQm5bMV0pLEhlKEJuWzJdKSxIZShCblszXSl9ZnVuY3Rpb24gTGUoaHQpe2kucHVzaChsW2h0KjMrMF0pLGkucHVzaChsW2h0KjMrMV0pLGkucHVzaChsW2h0KjMrMl0pfWZ1bmN0aW9uIEhlKGh0KXthLnB1c2goaHQueCksYS5wdXNoKGh0LnkpfX19dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCksZT10aGlzLnBhcmFtZXRlcnMuc2hhcGVzLG89dGhpcy5wYXJhbWV0ZXJzLm9wdGlvbnM7cmV0dXJuIFNHdChlLG8sdCl9c3RhdGljIGZyb21KU09OKHQsZSl7bGV0IG89W107Zm9yKGxldCBhPTAscj10LnNoYXBlcy5sZW5ndGg7YTxyO2ErKyl7bGV0IHM9ZVt0LnNoYXBlc1thXV07by5wdXNoKHMpfWxldCBpPXQub3B0aW9ucy5leHRydWRlUGF0aDtyZXR1cm4gaSE9PXZvaWQgMCYmKHQub3B0aW9ucy5leHRydWRlUGF0aD1uZXcgV2d0W2kudHlwZV0oKS5mcm9tSlNPTihpKSksbmV3IFl4KG8sdC5vcHRpb25zKX19LHdHdD17Z2VuZXJhdGVUb3BVVjpmdW5jdGlvbihuLHQsZSxvLGkpe2xldCBhPXRbZSozXSxyPXRbZSozKzFdLHM9dFtvKjNdLGw9dFtvKjMrMV0sYz10W2kqM10sbT10W2kqMysxXTtyZXR1cm5bbmV3IFNlKGEsciksbmV3IFNlKHMsbCksbmV3IFNlKGMsbSldfSxnZW5lcmF0ZVNpZGVXYWxsVVY6ZnVuY3Rpb24obix0LGUsbyxpLGEpe2xldCByPXRbZSozXSxzPXRbZSozKzFdLGw9dFtlKjMrMl0sYz10W28qM10sbT10W28qMysxXSxmPXRbbyozKzJdLHA9dFtpKjNdLGc9dFtpKjMrMV0sXz10W2kqMysyXSxNPXRbYSozXSx5PXRbYSozKzFdLE89dFthKjMrMl07cmV0dXJuIE1hdGguYWJzKHMtbSk8TWF0aC5hYnMoci1jKT9bbmV3IFNlKHIsMS1sKSxuZXcgU2UoYywxLWYpLG5ldyBTZShwLDEtXyksbmV3IFNlKE0sMS1PKV06W25ldyBTZShzLDEtbCksbmV3IFNlKG0sMS1mKSxuZXcgU2UoZywxLV8pLG5ldyBTZSh5LDEtTyldfX07ZnVuY3Rpb24gU0d0KG4sdCxlKXtpZihlLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgbz0wLGk9bi5sZW5ndGg7bzxpO28rKyl7bGV0IGE9bltvXTtlLnNoYXBlcy5wdXNoKGEudXVpZCl9ZWxzZSBlLnNoYXBlcy5wdXNoKG4udXVpZCk7cmV0dXJuIHQuZXh0cnVkZVBhdGghPT12b2lkIDAmJihlLm9wdGlvbnMuZXh0cnVkZVBhdGg9dC5leHRydWRlUGF0aC50b0pTT04oKSksZX12YXIgQjE9Y2xhc3MgZXh0ZW5kcyB0YXtjb25zdHJ1Y3Rvcih0PW5ldyBLUChbbmV3IFNlKDAsLjUpLG5ldyBTZSgtLjUsLS41KSxuZXcgU2UoLjUsLS41KV0pLGU9MTIpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFwZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LGN1cnZlU2VnbWVudHM6ZX07bGV0IG89W10saT1bXSxhPVtdLHI9W10scz0wLGw9MDtpZihBcnJheS5pc0FycmF5KHQpPT09ITEpYyh0KTtlbHNlIGZvcihsZXQgbT0wO208dC5sZW5ndGg7bSsrKWModFttXSksdGhpcy5hZGRHcm91cChzLGwsbSkscys9bCxsPTA7dGhpcy5zZXRJbmRleChvKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBOcihpLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgTnIoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgTnIociwyKSk7ZnVuY3Rpb24gYyhtKXtsZXQgZj1pLmxlbmd0aC8zLHA9bS5leHRyYWN0UG9pbnRzKGUpLGc9cC5zaGFwZSxfPXAuaG9sZXM7Tk8uaXNDbG9ja1dpc2UoZyk9PT0hMSYmKGc9Zy5yZXZlcnNlKCkpO2ZvcihsZXQgeT0wLE89Xy5sZW5ndGg7eTxPO3krKyl7bGV0IGI9X1t5XTtOTy5pc0Nsb2NrV2lzZShiKT09PSEwJiYoX1t5XT1iLnJldmVyc2UoKSl9bGV0IE09Tk8udHJpYW5ndWxhdGVTaGFwZShnLF8pO2ZvcihsZXQgeT0wLE89Xy5sZW5ndGg7eTxPO3krKyl7bGV0IGI9X1t5XTtnPWcuY29uY2F0KGIpfWZvcihsZXQgeT0wLE89Zy5sZW5ndGg7eTxPO3krKyl7bGV0IGI9Z1t5XTtpLnB1c2goYi54LGIueSwwKSxhLnB1c2goMCwwLDEpLHIucHVzaChiLngsYi55KX1mb3IobGV0IHk9MCxPPU0ubGVuZ3RoO3k8Tzt5Kyspe2xldCBiPU1beV0sUj1iWzBdK2YsRT1iWzFdK2Ysaj1iWzJdK2Y7by5wdXNoKFIsRSxqKSxsKz0zfX19dG9KU09OKCl7bGV0IHQ9c3VwZXIudG9KU09OKCksZT10aGlzLnBhcmFtZXRlcnMuc2hhcGVzO3JldHVybiBSR3QoZSx0KX1zdGF0aWMgZnJvbUpTT04odCxlKXtsZXQgbz1bXTtmb3IobGV0IGk9MCxhPXQuc2hhcGVzLmxlbmd0aDtpPGE7aSsrKXtsZXQgcj1lW3Quc2hhcGVzW2ldXTtvLnB1c2gocil9cmV0dXJuIG5ldyBCMShvLHQuY3VydmVTZWdtZW50cyl9fTtmdW5jdGlvbiBSR3Qobix0KXtpZih0LnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KG4pKWZvcihsZXQgZT0wLG89bi5sZW5ndGg7ZTxvO2UrKyl7bGV0IGk9bltlXTt0LnNoYXBlcy5wdXNoKGkudXVpZCl9ZWxzZSB0LnNoYXBlcy5wdXNoKG4udXVpZCk7cmV0dXJuIHR9dmFyIGRxPWNsYXNzIGV4dGVuZHMgSWx7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYWRvd01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyB6bigwKSx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXN9fTtkcS5wcm90b3R5cGUuaXNTaGFkb3dNYXRlcmlhbD0hMDt2YXIgbUY9Y2xhc3MgZXh0ZW5kcyBJbHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMudHlwZT0iTWVzaFN0YW5kYXJkTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IHpuKDE2Nzc3MjE1KSx0aGlzLnJvdWdobmVzcz0xLHRoaXMubWV0YWxuZXNzPTAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgem4oMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPXZTLHRoaXMubm9ybWFsU2NhbGU9bmV3IFNlKDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5yb3VnaG5lc3NNYXA9bnVsbCx0aGlzLm1ldGFsbmVzc01hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuZW52TWFwSW50ZW5zaXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5yb3VnaG5lc3M9dC5yb3VnaG5lc3MsdGhpcy5tZXRhbG5lc3M9dC5tZXRhbG5lc3MsdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5yb3VnaG5lc3NNYXA9dC5yb3VnaG5lc3NNYXAsdGhpcy5tZXRhbG5lc3NNYXA9dC5tZXRhbG5lc3NNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuZW52TWFwSW50ZW5zaXR5PXQuZW52TWFwSW50ZW5zaXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX07bUYucHJvdG90eXBlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw9ITA7dmFyIGdxPWNsYXNzIGV4dGVuZHMgbUZ7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLnR5cGU9Ik1lc2hQaHlzaWNhbE1hdGVyaWFsIix0aGlzLmNsZWFyY29hdE1hcD1udWxsLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzPTAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9bnVsbCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlPW5ldyBTZSgxLDEpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPW51bGwsdGhpcy5pb3I9MS41LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJyZWZsZWN0aXZpdHkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga2QoMi41Kih0aGlzLmlvci0xKS8odGhpcy5pb3IrMSksMCwxKX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuaW9yPSgxKy40KmUpLygxLS40KmUpfX0pLHRoaXMuc2hlZW5Db2xvcj1uZXcgem4oMCksdGhpcy5zaGVlbkNvbG9yTWFwPW51bGwsdGhpcy5zaGVlblJvdWdobmVzcz0xLHRoaXMuc2hlZW5Sb3VnaG5lc3NNYXA9bnVsbCx0aGlzLnRyYW5zbWlzc2lvbk1hcD1udWxsLHRoaXMudGhpY2tuZXNzPTAsdGhpcy50aGlja25lc3NNYXA9bnVsbCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9MCx0aGlzLmF0dGVudWF0aW9uQ29sb3I9bmV3IHpuKDEsMSwxKSx0aGlzLnNwZWN1bGFySW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhckludGVuc2l0eU1hcD1udWxsLHRoaXMuc3BlY3VsYXJDb2xvcj1uZXcgem4oMSwxLDEpLHRoaXMuc3BlY3VsYXJDb2xvck1hcD1udWxsLHRoaXMuX3NoZWVuPTAsdGhpcy5fY2xlYXJjb2F0PTAsdGhpcy5fdHJhbnNtaXNzaW9uPTAsdGhpcy5zZXRWYWx1ZXModCl9Z2V0IHNoZWVuKCl7cmV0dXJuIHRoaXMuX3NoZWVufXNldCBzaGVlbih0KXt0aGlzLl9zaGVlbj4wIT10PjAmJnRoaXMudmVyc2lvbisrLHRoaXMuX3NoZWVuPXR9Z2V0IGNsZWFyY29hdCgpe3JldHVybiB0aGlzLl9jbGVhcmNvYXR9c2V0IGNsZWFyY29hdCh0KXt0aGlzLl9jbGVhcmNvYXQ+MCE9dD4wJiZ0aGlzLnZlcnNpb24rKyx0aGlzLl9jbGVhcmNvYXQ9dH1nZXQgdHJhbnNtaXNzaW9uKCl7cmV0dXJuIHRoaXMuX3RyYW5zbWlzc2lvbn1zZXQgdHJhbnNtaXNzaW9uKHQpe3RoaXMuX3RyYW5zbWlzc2lvbj4wIT10PjAmJnRoaXMudmVyc2lvbisrLHRoaXMuX3RyYW5zbWlzc2lvbj10fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy5jbGVhcmNvYXQ9dC5jbGVhcmNvYXQsdGhpcy5jbGVhcmNvYXRNYXA9dC5jbGVhcmNvYXRNYXAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3MsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxNYXA9dC5jbGVhcmNvYXROb3JtYWxNYXAsdGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS5jb3B5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHRoaXMuaW9yPXQuaW9yLHRoaXMuc2hlZW49dC5zaGVlbix0aGlzLnNoZWVuQ29sb3IuY29weSh0LnNoZWVuQ29sb3IpLHRoaXMuc2hlZW5Db2xvck1hcD10LnNoZWVuQ29sb3JNYXAsdGhpcy5zaGVlblJvdWdobmVzcz10LnNoZWVuUm91Z2huZXNzLHRoaXMuc2hlZW5Sb3VnaG5lc3NNYXA9dC5zaGVlblJvdWdobmVzc01hcCx0aGlzLnRyYW5zbWlzc2lvbj10LnRyYW5zbWlzc2lvbix0aGlzLnRyYW5zbWlzc2lvbk1hcD10LnRyYW5zbWlzc2lvbk1hcCx0aGlzLnRoaWNrbmVzcz10LnRoaWNrbmVzcyx0aGlzLnRoaWNrbmVzc01hcD10LnRoaWNrbmVzc01hcCx0aGlzLmF0dGVudWF0aW9uRGlzdGFuY2U9dC5hdHRlbnVhdGlvbkRpc3RhbmNlLHRoaXMuYXR0ZW51YXRpb25Db2xvci5jb3B5KHQuYXR0ZW51YXRpb25Db2xvciksdGhpcy5zcGVjdWxhckludGVuc2l0eT10LnNwZWN1bGFySW50ZW5zaXR5LHRoaXMuc3BlY3VsYXJJbnRlbnNpdHlNYXA9dC5zcGVjdWxhckludGVuc2l0eU1hcCx0aGlzLnNwZWN1bGFyQ29sb3IuY29weSh0LnNwZWN1bGFyQ29sb3IpLHRoaXMuc3BlY3VsYXJDb2xvck1hcD10LnNwZWN1bGFyQ29sb3JNYXAsdGhpc319O2dxLnByb3RvdHlwZS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPSEwO3ZhciB1cT1jbGFzcyBleHRlbmRzIElse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy50eXBlPSJNZXNoUGhvbmdNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgem4oMTY3NzcyMTUpLHRoaXMuc3BlY3VsYXI9bmV3IHpuKDExMTg0ODEpLHRoaXMuc2hpbmluZXNzPTMwLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IHpuKDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT12Uyx0aGlzLm5vcm1hbFNjYWxlPW5ldyBTZSgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuc3BlY3VsYXJNYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5lbnZNYXA9bnVsbCx0aGlzLmNvbWJpbmU9TUYsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLnNwZWN1bGFyLmNvcHkodC5zcGVjdWxhciksdGhpcy5zaGluaW5lc3M9dC5zaGluaW5lc3MsdGhpcy5tYXA9dC5tYXAsdGhpcy5saWdodE1hcD10LmxpZ2h0TWFwLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9dC5saWdodE1hcEludGVuc2l0eSx0aGlzLmFvTWFwPXQuYW9NYXAsdGhpcy5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5LHRoaXMuZW1pc3NpdmUuY29weSh0LmVtaXNzaXZlKSx0aGlzLmVtaXNzaXZlTWFwPXQuZW1pc3NpdmVNYXAsdGhpcy5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5LHRoaXMuYnVtcE1hcD10LmJ1bXBNYXAsdGhpcy5idW1wU2NhbGU9dC5idW1wU2NhbGUsdGhpcy5ub3JtYWxNYXA9dC5ub3JtYWxNYXAsdGhpcy5ub3JtYWxNYXBUeXBlPXQubm9ybWFsTWFwVHlwZSx0aGlzLm5vcm1hbFNjYWxlLmNvcHkodC5ub3JtYWxTY2FsZSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzfX07dXEucHJvdG90eXBlLmlzTWVzaFBob25nTWF0ZXJpYWw9ITA7dmFyIGhxPWNsYXNzIGV4dGVuZHMgSWx7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmRlZmluZXM9e1RPT046IiJ9LHRoaXMudHlwZT0iTWVzaFRvb25NYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgem4oMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5ncmFkaWVudE1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyB6bigwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9dlMsdGhpcy5ub3JtYWxTY2FsZT1uZXcgU2UoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5zZXRWYWx1ZXModCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXA9dC5tYXAsdGhpcy5ncmFkaWVudE1hcD10LmdyYWRpZW50TWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLmVtaXNzaXZlLmNvcHkodC5lbWlzc2l2ZSksdGhpcy5lbWlzc2l2ZU1hcD10LmVtaXNzaXZlTWFwLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9dC5lbWlzc2l2ZUludGVuc2l0eSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLndpcmVmcmFtZUxpbmVjYXA9dC53aXJlZnJhbWVMaW5lY2FwLHRoaXMud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbix0aGlzfX07aHEucHJvdG90eXBlLmlzTWVzaFRvb25NYXRlcmlhbD0hMDt2YXIgX3E9Y2xhc3MgZXh0ZW5kcyBJbHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaE5vcm1hbE1hdGVyaWFsIix0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPXZTLHRoaXMubm9ybWFsU2NhbGU9bmV3IFNlKDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMuc2V0VmFsdWVzKHQpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmZsYXRTaGFkaW5nPXQuZmxhdFNoYWRpbmcsdGhpc319O19xLnByb3RvdHlwZS5pc01lc2hOb3JtYWxNYXRlcmlhbD0hMDt2YXIgQ3E9Y2xhc3MgZXh0ZW5kcyBJbHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iTWVzaExhbWJlcnRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgem4oMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IHpuKDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT1NRix0aGlzLnJlZmxlY3Rpdml0eT0xLHRoaXMucmVmcmFjdGlvblJhdGlvPS45OCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXN9fTtDcS5wcm90b3R5cGUuaXNNZXNoTGFtYmVydE1hdGVyaWFsPSEwO3ZhciBNcT1jbGFzcyBleHRlbmRzIElse2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMudHlwZT0iTWVzaE1hdGNhcE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyB6bigxNjc3NzIxNSksdGhpcy5tYXRjYXA9bnVsbCx0aGlzLm1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9dlMsdGhpcy5ub3JtYWxTY2FsZT1uZXcgU2UoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5mbGF0U2hhZGluZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGVmaW5lcz17TUFUQ0FQOiIifSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXRjYXA9dC5tYXRjYXAsdGhpcy5tYXA9dC5tYXAsdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXN9fTtNcS5wcm90b3R5cGUuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw9ITA7dmFyIGJxPWNsYXNzIGV4dGVuZHMgUVB7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnR5cGU9IkxpbmVEYXNoZWRNYXRlcmlhbCIsdGhpcy5zY2FsZT0xLHRoaXMuZGFzaFNpemU9Myx0aGlzLmdhcFNpemU9MSx0aGlzLnNldFZhbHVlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuc2NhbGU9dC5zY2FsZSx0aGlzLmRhc2hTaXplPXQuZGFzaFNpemUsdGhpcy5nYXBTaXplPXQuZ2FwU2l6ZSx0aGlzfX07YnEucHJvdG90eXBlLmlzTGluZURhc2hlZE1hdGVyaWFsPSEwO3ZhciBicj17YXJyYXlTbGljZTpmdW5jdGlvbihuLHQsZSl7cmV0dXJuIGJyLmlzVHlwZWRBcnJheShuKT9uZXcgbi5jb25zdHJ1Y3RvcihuLnN1YmFycmF5KHQsZSE9PXZvaWQgMD9lOm4ubGVuZ3RoKSk6bi5zbGljZSh0LGUpfSxjb252ZXJ0QXJyYXk6ZnVuY3Rpb24obix0LGUpe3JldHVybiFufHwhZSYmbi5jb25zdHJ1Y3Rvcj09PXQ/bjp0eXBlb2YgdC5CWVRFU19QRVJfRUxFTUVOVD09Im51bWJlciI/bmV3IHQobik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobil9LGlzVHlwZWRBcnJheTpmdW5jdGlvbihuKXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KG4pJiYhKG4gaW5zdGFuY2VvZiBEYXRhVmlldyl9LGdldEtleWZyYW1lT3JkZXI6ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChpLGEpe3JldHVybiBuW2ldLW5bYV19bGV0IGU9bi5sZW5ndGgsbz1uZXcgQXJyYXkoZSk7Zm9yKGxldCBpPTA7aSE9PWU7KytpKW9baV09aTtyZXR1cm4gby5zb3J0KHQpLG99LHNvcnRlZEFycmF5OmZ1bmN0aW9uKG4sdCxlKXtsZXQgbz1uLmxlbmd0aCxpPW5ldyBuLmNvbnN0cnVjdG9yKG8pO2ZvcihsZXQgYT0wLHI9MDtyIT09bzsrK2Epe2xldCBzPWVbYV0qdDtmb3IobGV0IGw9MDtsIT09dDsrK2wpaVtyKytdPW5bcytsXX1yZXR1cm4gaX0sZmxhdHRlbkpTT046ZnVuY3Rpb24obix0LGUsbyl7bGV0IGk9MSxhPW5bMF07Zm9yKDthIT09dm9pZCAwJiZhW29dPT09dm9pZCAwOylhPW5baSsrXTtpZihhPT09dm9pZCAwKXJldHVybjtsZXQgcj1hW29dO2lmKHIhPT12b2lkIDApaWYoQXJyYXkuaXNBcnJheShyKSlkbyByPWFbb10sciE9PXZvaWQgMCYmKHQucHVzaChhLnRpbWUpLGUucHVzaC5hcHBseShlLHIpKSxhPW5baSsrXTt3aGlsZShhIT09dm9pZCAwKTtlbHNlIGlmKHIudG9BcnJheSE9PXZvaWQgMClkbyByPWFbb10sciE9PXZvaWQgMCYmKHQucHVzaChhLnRpbWUpLHIudG9BcnJheShlLGUubGVuZ3RoKSksYT1uW2krK107d2hpbGUoYSE9PXZvaWQgMCk7ZWxzZSBkbyByPWFbb10sciE9PXZvaWQgMCYmKHQucHVzaChhLnRpbWUpLGUucHVzaChyKSksYT1uW2krK107d2hpbGUoYSE9PXZvaWQgMCl9LHN1YmNsaXA6ZnVuY3Rpb24obix0LGUsbyxpPTMwKXtsZXQgYT1uLmNsb25lKCk7YS5uYW1lPXQ7bGV0IHI9W107Zm9yKGxldCBsPTA7bDxhLnRyYWNrcy5sZW5ndGg7KytsKXtsZXQgYz1hLnRyYWNrc1tsXSxtPWMuZ2V0VmFsdWVTaXplKCksZj1bXSxwPVtdO2ZvcihsZXQgZz0wO2c8Yy50aW1lcy5sZW5ndGg7KytnKXtsZXQgXz1jLnRpbWVzW2ddKmk7aWYoIShfPGV8fF8+PW8pKXtmLnB1c2goYy50aW1lc1tnXSk7Zm9yKGxldCBNPTA7TTxtOysrTSlwLnB1c2goYy52YWx1ZXNbZyptK01dKX19Zi5sZW5ndGghPT0wJiYoYy50aW1lcz1ici5jb252ZXJ0QXJyYXkoZixjLnRpbWVzLmNvbnN0cnVjdG9yKSxjLnZhbHVlcz1ici5jb252ZXJ0QXJyYXkocCxjLnZhbHVlcy5jb25zdHJ1Y3Rvciksci5wdXNoKGMpKX1hLnRyYWNrcz1yO2xldCBzPTEvMDtmb3IobGV0IGw9MDtsPGEudHJhY2tzLmxlbmd0aDsrK2wpcz5hLnRyYWNrc1tsXS50aW1lc1swXSYmKHM9YS50cmFja3NbbF0udGltZXNbMF0pO2ZvcihsZXQgbD0wO2w8YS50cmFja3MubGVuZ3RoOysrbClhLnRyYWNrc1tsXS5zaGlmdCgtMSpzKTtyZXR1cm4gYS5yZXNldER1cmF0aW9uKCksYX0sbWFrZUNsaXBBZGRpdGl2ZTpmdW5jdGlvbihuLHQ9MCxlPW4sbz0zMCl7bzw9MCYmKG89MzApO2xldCBpPWUudHJhY2tzLmxlbmd0aCxhPXQvbztmb3IobGV0IHI9MDtyPGk7KytyKXtsZXQgcz1lLnRyYWNrc1tyXSxsPXMuVmFsdWVUeXBlTmFtZTtpZihsPT09ImJvb2wifHxsPT09InN0cmluZyIpY29udGludWU7bGV0IGM9bi50cmFja3MuZmluZChmdW5jdGlvbihPKXtyZXR1cm4gTy5uYW1lPT09cy5uYW1lJiZPLlZhbHVlVHlwZU5hbWU9PT1sfSk7aWYoYz09PXZvaWQgMCljb250aW51ZTtsZXQgbT0wLGY9cy5nZXRWYWx1ZVNpemUoKTtzLmNyZWF0ZUludGVycG9sYW50LmlzSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kR0xURkN1YmljU3BsaW5lJiYobT1mLzMpO2xldCBwPTAsZz1jLmdldFZhbHVlU2l6ZSgpO2MuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihwPWcvMyk7bGV0IF89cy50aW1lcy5sZW5ndGgtMSxNO2lmKGE8PXMudGltZXNbMF0pe2xldCBPPW0sYj1mLW07TT1ici5hcnJheVNsaWNlKHMudmFsdWVzLE8sYil9ZWxzZSBpZihhPj1zLnRpbWVzW19dKXtsZXQgTz1fKmYrbSxiPU8rZi1tO009YnIuYXJyYXlTbGljZShzLnZhbHVlcyxPLGIpfWVsc2V7bGV0IE89cy5jcmVhdGVJbnRlcnBvbGFudCgpLGI9bSxSPWYtbTtPLmV2YWx1YXRlKGEpLE09YnIuYXJyYXlTbGljZShPLnJlc3VsdEJ1ZmZlcixiLFIpfWw9PT0icXVhdGVybmlvbiImJm5ldyBSbSgpLmZyb21BcnJheShNKS5ub3JtYWxpemUoKS5jb25qdWdhdGUoKS50b0FycmF5KE0pO2xldCB5PWMudGltZXMubGVuZ3RoO2ZvcihsZXQgTz0wO088eTsrK08pe2xldCBiPU8qZytwO2lmKGw9PT0icXVhdGVybmlvbiIpUm0ubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQoYy52YWx1ZXMsYixNLDAsYy52YWx1ZXMsYik7ZWxzZXtsZXQgUj1nLXAqMjtmb3IobGV0IEU9MDtFPFI7KytFKWMudmFsdWVzW2IrRV0tPU1bRV19fX1yZXR1cm4gbi5ibGVuZE1vZGU9Tmd0LG59fSxUTz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXt0aGlzLnBhcmFtZXRlclBvc2l0aW9ucz10LHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5yZXN1bHRCdWZmZXI9aSE9PXZvaWQgMD9pOm5ldyBlLmNvbnN0cnVjdG9yKG8pLHRoaXMuc2FtcGxlVmFsdWVzPWUsdGhpcy52YWx1ZVNpemU9byx0aGlzLnNldHRpbmdzPW51bGwsdGhpcy5EZWZhdWx0U2V0dGluZ3NfPXt9fWV2YWx1YXRlKHQpe2xldCBlPXRoaXMucGFyYW1ldGVyUG9zaXRpb25zLG89dGhpcy5fY2FjaGVkSW5kZXgsaT1lW29dLGE9ZVtvLTFdO3Q6e2U6e2xldCByO246e286aWYoISh0PGkpKXtmb3IobGV0IHM9bysyOzspe2lmKGk9PT12b2lkIDApe2lmKHQ8YSlicmVhayBvO3JldHVybiBvPWUubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW8sdGhpcy5hZnRlckVuZF8oby0xLHQsYSl9aWYobz09PXMpYnJlYWs7aWYoYT1pLGk9ZVsrK29dLHQ8aSlicmVhayBlfXI9ZS5sZW5ndGg7YnJlYWsgbn1pZighKHQ+PWEpKXtsZXQgcz1lWzFdO3Q8cyYmKG89MixhPXMpO2ZvcihsZXQgbD1vLTI7Oyl7aWYoYT09PXZvaWQgMClyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsaSk7aWYobz09PWwpYnJlYWs7aWYoaT1hLGE9ZVstLW8tMV0sdD49YSlicmVhayBlfXI9byxvPTA7YnJlYWsgbn1icmVhayB0fWZvcig7bzxyOyl7bGV0IHM9bytyPj4+MTt0PGVbc10/cj1zOm89cysxfWlmKGk9ZVtvXSxhPWVbby0xXSxhPT09dm9pZCAwKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxpKTtpZihpPT09dm9pZCAwKXJldHVybiBvPWUubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PW8sdGhpcy5hZnRlckVuZF8oby0xLGEsdCl9dGhpcy5fY2FjaGVkSW5kZXg9byx0aGlzLmludGVydmFsQ2hhbmdlZF8obyxhLGkpfXJldHVybiB0aGlzLmludGVycG9sYXRlXyhvLGEsdCxpKX1nZXRTZXR0aW5nc18oKXtyZXR1cm4gdGhpcy5zZXR0aW5nc3x8dGhpcy5EZWZhdWx0U2V0dGluZ3NffWNvcHlTYW1wbGVWYWx1ZV8odCl7bGV0IGU9dGhpcy5yZXN1bHRCdWZmZXIsbz10aGlzLnNhbXBsZVZhbHVlcyxpPXRoaXMudmFsdWVTaXplLGE9dCppO2ZvcihsZXQgcj0wO3IhPT1pOysrcillW3JdPW9bYStyXTtyZXR1cm4gZX1pbnRlcnBvbGF0ZV8oKXt0aHJvdyBuZXcgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIil9aW50ZXJ2YWxDaGFuZ2VkXygpe319O1RPLnByb3RvdHlwZS5iZWZvcmVTdGFydF89VE8ucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV87VE8ucHJvdG90eXBlLmFmdGVyRW5kXz1UTy5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlXzt2YXIgT3E9Y2xhc3MgZXh0ZW5kcyBUT3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXtzdXBlcih0LGUsbyxpKSx0aGlzLl93ZWlnaHRQcmV2PS0wLHRoaXMuX29mZnNldFByZXY9LTAsdGhpcy5fd2VpZ2h0TmV4dD0tMCx0aGlzLl9vZmZzZXROZXh0PS0wLHRoaXMuRGVmYXVsdFNldHRpbmdzXz17ZW5kaW5nU3RhcnQ6YVMsZW5kaW5nRW5kOmFTfX1pbnRlcnZhbENoYW5nZWRfKHQsZSxvKXtsZXQgaT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucyxhPXQtMixyPXQrMSxzPWlbYV0sbD1pW3JdO2lmKHM9PT12b2lkIDApc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nU3RhcnQpe2Nhc2UgclM6YT10LHM9MiplLW87YnJlYWs7Y2FzZSBXSDphPWkubGVuZ3RoLTIscz1lK2lbYV0taVthKzFdO2JyZWFrO2RlZmF1bHQ6YT10LHM9b31pZihsPT09dm9pZCAwKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ0VuZCl7Y2FzZSByUzpyPXQsbD0yKm8tZTticmVhaztjYXNlIFdIOnI9MSxsPW8raVsxXS1pWzBdO2JyZWFrO2RlZmF1bHQ6cj10LTEsbD1lfWxldCBjPShvLWUpKi41LG09dGhpcy52YWx1ZVNpemU7dGhpcy5fd2VpZ2h0UHJldj1jLyhlLXMpLHRoaXMuX3dlaWdodE5leHQ9Yy8obC1vKSx0aGlzLl9vZmZzZXRQcmV2PWEqbSx0aGlzLl9vZmZzZXROZXh0PXIqbX1pbnRlcnBvbGF0ZV8odCxlLG8saSl7bGV0IGE9dGhpcy5yZXN1bHRCdWZmZXIscj10aGlzLnNhbXBsZVZhbHVlcyxzPXRoaXMudmFsdWVTaXplLGw9dCpzLGM9bC1zLG09dGhpcy5fb2Zmc2V0UHJldixmPXRoaXMuX29mZnNldE5leHQscD10aGlzLl93ZWlnaHRQcmV2LGc9dGhpcy5fd2VpZ2h0TmV4dCxfPShvLWUpLyhpLWUpLE09XypfLHk9TSpfLE89LXAqeSsyKnAqTS1wKl8sYj0oMStwKSp5KygtMS41LTIqcCkqTSsoLS41K3ApKl8rMSxSPSgtMS1nKSp5KygxLjUrZykqTSsuNSpfLEU9Zyp5LWcqTTtmb3IobGV0IGo9MDtqIT09czsrK2opYVtqXT1PKnJbbStqXStiKnJbYytqXStSKnJbbCtqXStFKnJbZitqXTtyZXR1cm4gYX19LGZGPWNsYXNzIGV4dGVuZHMgVE97Y29uc3RydWN0b3IodCxlLG8saSl7c3VwZXIodCxlLG8saSl9aW50ZXJwb2xhdGVfKHQsZSxvLGkpe2xldCBhPXRoaXMucmVzdWx0QnVmZmVyLHI9dGhpcy5zYW1wbGVWYWx1ZXMscz10aGlzLnZhbHVlU2l6ZSxsPXQqcyxjPWwtcyxtPShvLWUpLyhpLWUpLGY9MS1tO2ZvcihsZXQgcD0wO3AhPT1zOysrcClhW3BdPXJbYytwXSpmK3JbbCtwXSptO3JldHVybiBhfX0sUHE9Y2xhc3MgZXh0ZW5kcyBUT3tjb25zdHJ1Y3Rvcih0LGUsbyxpKXtzdXBlcih0LGUsbyxpKX1pbnRlcnBvbGF0ZV8odCl7cmV0dXJuIHRoaXMuY29weVNhbXBsZVZhbHVlXyh0LTEpfX0sVTA9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7aWYodD09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkIik7aWYoZT09PXZvaWQgMHx8ZS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogbm8ga2V5ZnJhbWVzIGluIHRyYWNrIG5hbWVkICIrdCk7dGhpcy5uYW1lPXQsdGhpcy50aW1lcz1ici5jb252ZXJ0QXJyYXkoZSx0aGlzLlRpbWVCdWZmZXJUeXBlKSx0aGlzLnZhbHVlcz1ici5jb252ZXJ0QXJyYXkobyx0aGlzLlZhbHVlQnVmZmVyVHlwZSksdGhpcy5zZXRJbnRlcnBvbGF0aW9uKGl8fHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXN0YXRpYyB0b0pTT04odCl7bGV0IGU9dC5jb25zdHJ1Y3RvcixvO2lmKGUudG9KU09OIT09dGhpcy50b0pTT04pbz1lLnRvSlNPTih0KTtlbHNle289e25hbWU6dC5uYW1lLHRpbWVzOmJyLmNvbnZlcnRBcnJheSh0LnRpbWVzLEFycmF5KSx2YWx1ZXM6YnIuY29udmVydEFycmF5KHQudmFsdWVzLEFycmF5KX07bGV0IGk9dC5nZXRJbnRlcnBvbGF0aW9uKCk7aSE9PXQuRGVmYXVsdEludGVycG9sYXRpb24mJihvLmludGVycG9sYXRpb249aSl9cmV0dXJuIG8udHlwZT10LlZhbHVlVHlwZU5hbWUsb31JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZSh0KXtyZXR1cm4gbmV3IFBxKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX1JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXIodCl7cmV0dXJuIG5ldyBmRih0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9SW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoKHQpe3JldHVybiBuZXcgT3EodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLHQpfXNldEludGVycG9sYXRpb24odCl7bGV0IGU7c3dpdGNoKHQpe2Nhc2UgWUg6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlO2JyZWFrO2Nhc2UgR0g6ZT10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjticmVhaztjYXNlIG9XOmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg7YnJlYWt9aWYoZT09PXZvaWQgMCl7bGV0IG89InVuc3VwcG9ydGVkIGludGVycG9sYXRpb24gZm9yICIrdGhpcy5WYWx1ZVR5cGVOYW1lKyIga2V5ZnJhbWUgdHJhY2sgbmFtZWQgIit0aGlzLm5hbWU7aWYodGhpcy5jcmVhdGVJbnRlcnBvbGFudD09PXZvaWQgMClpZih0IT09dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil0aGlzLnNldEludGVycG9sYXRpb24odGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbik7ZWxzZSB0aHJvdyBuZXcgRXJyb3Iobyk7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuS2V5ZnJhbWVUcmFjazoiLG8pLHRoaXN9cmV0dXJuIHRoaXMuY3JlYXRlSW50ZXJwb2xhbnQ9ZSx0aGlzfWdldEludGVycG9sYXRpb24oKXtzd2l0Y2godGhpcy5jcmVhdGVJbnRlcnBvbGFudCl7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlOnJldHVybiBZSDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnJldHVybiBHSDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnJldHVybiBvV319Z2V0VmFsdWVTaXplKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aC90aGlzLnRpbWVzLmxlbmd0aH1zaGlmdCh0KXtpZih0IT09MCl7bGV0IGU9dGhpcy50aW1lcztmb3IobGV0IG89MCxpPWUubGVuZ3RoO28hPT1pOysrbyllW29dKz10fXJldHVybiB0aGlzfXNjYWxlKHQpe2lmKHQhPT0xKXtsZXQgZT10aGlzLnRpbWVzO2ZvcihsZXQgbz0wLGk9ZS5sZW5ndGg7byE9PWk7KytvKWVbb10qPXR9cmV0dXJuIHRoaXN9dHJpbSh0LGUpe2xldCBvPXRoaXMudGltZXMsaT1vLmxlbmd0aCxhPTAscj1pLTE7Zm9yKDthIT09aSYmb1thXTx0OykrK2E7Zm9yKDtyIT09LTEmJm9bcl0+ZTspLS1yO2lmKCsrcixhIT09MHx8ciE9PWkpe2E+PXImJihyPU1hdGgubWF4KHIsMSksYT1yLTEpO2xldCBzPXRoaXMuZ2V0VmFsdWVTaXplKCk7dGhpcy50aW1lcz1ici5hcnJheVNsaWNlKG8sYSxyKSx0aGlzLnZhbHVlcz1ici5hcnJheVNsaWNlKHRoaXMudmFsdWVzLGEqcyxyKnMpfXJldHVybiB0aGlzfXZhbGlkYXRlKCl7bGV0IHQ9ITAsZT10aGlzLmdldFZhbHVlU2l6ZSgpO2UtTWF0aC5mbG9vcihlKSE9PTAmJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBJbnZhbGlkIHZhbHVlIHNpemUgaW4gdHJhY2suIix0aGlzKSx0PSExKTtsZXQgbz10aGlzLnRpbWVzLGk9dGhpcy52YWx1ZXMsYT1vLmxlbmd0aDthPT09MCYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRyYWNrIGlzIGVtcHR5LiIsdGhpcyksdD0hMSk7bGV0IHI9bnVsbDtmb3IobGV0IHM9MDtzIT09YTtzKyspe2xldCBsPW9bc107aWYodHlwZW9mIGw9PSJudW1iZXIiJiZpc05hTihsKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLHMsbCksdD0hMTticmVha31pZihyIT09bnVsbCYmcj5sKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBPdXQgb2Ygb3JkZXIga2V5cy4iLHRoaXMscyxsLHIpLHQ9ITE7YnJlYWt9cj1sfWlmKGkhPT12b2lkIDAmJmJyLmlzVHlwZWRBcnJheShpKSlmb3IobGV0IHM9MCxsPWkubGVuZ3RoO3MhPT1sOysrcyl7bGV0IGM9aVtzXTtpZihpc05hTihjKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxzLGMpLHQ9ITE7YnJlYWt9fXJldHVybiB0fW9wdGltaXplKCl7bGV0IHQ9YnIuYXJyYXlTbGljZSh0aGlzLnRpbWVzKSxlPWJyLmFycmF5U2xpY2UodGhpcy52YWx1ZXMpLG89dGhpcy5nZXRWYWx1ZVNpemUoKSxpPXRoaXMuZ2V0SW50ZXJwb2xhdGlvbigpPT09b1csYT10Lmxlbmd0aC0xLHI9MTtmb3IobGV0IHM9MTtzPGE7KytzKXtsZXQgbD0hMSxjPXRbc10sbT10W3MrMV07aWYoYyE9PW0mJihzIT09MXx8YyE9PXRbMF0pKWlmKGkpbD0hMDtlbHNle2xldCBmPXMqbyxwPWYtbyxnPWYrbztmb3IobGV0IF89MDtfIT09bzsrK18pe2xldCBNPWVbZitfXTtpZihNIT09ZVtwK19dfHxNIT09ZVtnK19dKXtsPSEwO2JyZWFrfX19aWYobCl7aWYocyE9PXIpe3Rbcl09dFtzXTtsZXQgZj1zKm8scD1yKm87Zm9yKGxldCBnPTA7ZyE9PW87KytnKWVbcCtnXT1lW2YrZ119KytyfX1pZihhPjApe3Rbcl09dFthXTtmb3IobGV0IHM9YSpvLGw9cipvLGM9MDtjIT09bzsrK2MpZVtsK2NdPWVbcytjXTsrK3J9cmV0dXJuIHIhPT10Lmxlbmd0aD8odGhpcy50aW1lcz1ici5hcnJheVNsaWNlKHQsMCxyKSx0aGlzLnZhbHVlcz1ici5hcnJheVNsaWNlKGUsMCxyKm8pKToodGhpcy50aW1lcz10LHRoaXMudmFsdWVzPWUpLHRoaXN9Y2xvbmUoKXtsZXQgdD1ici5hcnJheVNsaWNlKHRoaXMudGltZXMsMCksZT1ici5hcnJheVNsaWNlKHRoaXMudmFsdWVzLDApLG89dGhpcy5jb25zdHJ1Y3RvcixpPW5ldyBvKHRoaXMubmFtZSx0LGUpO3JldHVybiBpLmNyZWF0ZUludGVycG9sYW50PXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQsaX19O1UwLnByb3RvdHlwZS5UaW1lQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXk7VTAucHJvdG90eXBlLlZhbHVlQnVmZmVyVHlwZT1GbG9hdDMyQXJyYXk7VTAucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPUdIO3ZhciBHeD1jbGFzcyBleHRlbmRzIFUwe307R3gucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImJvb2wiO0d4LnByb3RvdHlwZS5WYWx1ZUJ1ZmZlclR5cGU9QXJyYXk7R3gucHJvdG90eXBlLkRlZmF1bHRJbnRlcnBvbGF0aW9uPVlIO0d4LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI9dm9pZCAwO0d4LnByb3RvdHlwZS5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg9dm9pZCAwO3ZhciBwRj1jbGFzcyBleHRlbmRzIFUwe307cEYucHJvdG90eXBlLlZhbHVlVHlwZU5hbWU9ImNvbG9yIjt2YXIgUFM9Y2xhc3MgZXh0ZW5kcyBVMHt9O1BTLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJudW1iZXIiO3ZhciB5cT1jbGFzcyBleHRlbmRzIFRPe2NvbnN0cnVjdG9yKHQsZSxvLGkpe3N1cGVyKHQsZSxvLGkpfWludGVycG9sYXRlXyh0LGUsbyxpKXtsZXQgYT10aGlzLnJlc3VsdEJ1ZmZlcixyPXRoaXMuc2FtcGxlVmFsdWVzLHM9dGhpcy52YWx1ZVNpemUsbD0oby1lKS8oaS1lKSxjPXQqcztmb3IobGV0IG09YytzO2MhPT1tO2MrPTQpUm0uc2xlcnBGbGF0KGEsMCxyLGMtcyxyLGMsbCk7cmV0dXJuIGF9fSxWMT1jbGFzcyBleHRlbmRzIFUwe0ludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcih0KXtyZXR1cm4gbmV3IHlxKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX19O1YxLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJxdWF0ZXJuaW9uIjtWMS5wcm90b3R5cGUuRGVmYXVsdEludGVycG9sYXRpb249R0g7VjEucHJvdG90eXBlLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aD12b2lkIDA7dmFyIFd4PWNsYXNzIGV4dGVuZHMgVTB7fTtXeC5wcm90b3R5cGUuVmFsdWVUeXBlTmFtZT0ic3RyaW5nIjtXeC5wcm90b3R5cGUuVmFsdWVCdWZmZXJUeXBlPUFycmF5O1d4LnByb3RvdHlwZS5EZWZhdWx0SW50ZXJwb2xhdGlvbj1ZSDtXeC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyPXZvaWQgMDtXeC5wcm90b3R5cGUuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoPXZvaWQgMDt2YXIgeVM9Y2xhc3MgZXh0ZW5kcyBVMHt9O3lTLnByb3RvdHlwZS5WYWx1ZVR5cGVOYW1lPSJ2ZWN0b3IiO3ZhciBkRj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGU9LTEsbyxpPXRaKXt0aGlzLm5hbWU9dCx0aGlzLnRyYWNrcz1vLHRoaXMuZHVyYXRpb249ZSx0aGlzLmJsZW5kTW9kZT1pLHRoaXMudXVpZD1zYigpLHRoaXMuZHVyYXRpb248MCYmdGhpcy5yZXNldER1cmF0aW9uKCl9c3RhdGljIHBhcnNlKHQpe2xldCBlPVtdLG89dC50cmFja3MsaT0xLyh0LmZwc3x8MSk7Zm9yKGxldCByPTAscz1vLmxlbmd0aDtyIT09czsrK3IpZS5wdXNoKGtHdChvW3JdKS5zY2FsZShpKSk7bGV0IGE9bmV3IHRoaXModC5uYW1lLHQuZHVyYXRpb24sZSx0LmJsZW5kTW9kZSk7cmV0dXJuIGEudXVpZD10LnV1aWQsYX1zdGF0aWMgdG9KU09OKHQpe2xldCBlPVtdLG89dC50cmFja3MsaT17bmFtZTp0Lm5hbWUsZHVyYXRpb246dC5kdXJhdGlvbix0cmFja3M6ZSx1dWlkOnQudXVpZCxibGVuZE1vZGU6dC5ibGVuZE1vZGV9O2ZvcihsZXQgYT0wLHI9by5sZW5ndGg7YSE9PXI7KythKWUucHVzaChVMC50b0pTT04ob1thXSkpO3JldHVybiBpfXN0YXRpYyBDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZSh0LGUsbyxpKXtsZXQgYT1lLmxlbmd0aCxyPVtdO2ZvcihsZXQgcz0wO3M8YTtzKyspe2xldCBsPVtdLGM9W107bC5wdXNoKChzK2EtMSklYSxzLChzKzEpJWEpLGMucHVzaCgwLDEsMCk7bGV0IG09YnIuZ2V0S2V5ZnJhbWVPcmRlcihsKTtsPWJyLnNvcnRlZEFycmF5KGwsMSxtKSxjPWJyLnNvcnRlZEFycmF5KGMsMSxtKSwhaSYmbFswXT09PTAmJihsLnB1c2goYSksYy5wdXNoKGNbMF0pKSxyLnB1c2gobmV3IFBTKCIubW9ycGhUYXJnZXRJbmZsdWVuY2VzWyIrZVtzXS5uYW1lKyJdIixsLGMpLnNjYWxlKDEvbykpfXJldHVybiBuZXcgdGhpcyh0LC0xLHIpfXN0YXRpYyBmaW5kQnlOYW1lKHQsZSl7bGV0IG89dDtpZighQXJyYXkuaXNBcnJheSh0KSl7bGV0IGk9dDtvPWkuZ2VvbWV0cnkmJmkuZ2VvbWV0cnkuYW5pbWF0aW9uc3x8aS5hbmltYXRpb25zfWZvcihsZXQgaT0wO2k8by5sZW5ndGg7aSsrKWlmKG9baV0ubmFtZT09PWUpcmV0dXJuIG9baV07cmV0dXJuIG51bGx9c3RhdGljIENyZWF0ZUNsaXBzRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2VzKHQsZSxvKXtsZXQgaT17fSxhPS9eKFtcdy1dKj8pKFtcZF0rKSQvO2ZvcihsZXQgcz0wLGw9dC5sZW5ndGg7czxsO3MrKyl7bGV0IGM9dFtzXSxtPWMubmFtZS5tYXRjaChhKTtpZihtJiZtLmxlbmd0aD4xKXtsZXQgZj1tWzFdLHA9aVtmXTtwfHwoaVtmXT1wPVtdKSxwLnB1c2goYyl9fWxldCByPVtdO2ZvcihsZXQgcyBpbiBpKXIucHVzaCh0aGlzLkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHMsaVtzXSxlLG8pKTtyZXR1cm4gcn1zdGF0aWMgcGFyc2VBbmltYXRpb24odCxlKXtpZighdClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO2xldCBvPWZ1bmN0aW9uKGYscCxnLF8sTSl7aWYoZy5sZW5ndGghPT0wKXtsZXQgeT1bXSxPPVtdO2JyLmZsYXR0ZW5KU09OKGcseSxPLF8pLHkubGVuZ3RoIT09MCYmTS5wdXNoKG5ldyBmKHAseSxPKSl9fSxpPVtdLGE9dC5uYW1lfHwiZGVmYXVsdCIscj10LmZwc3x8MzAscz10LmJsZW5kTW9kZSxsPXQubGVuZ3RofHwtMSxjPXQuaGllcmFyY2h5fHxbXTtmb3IobGV0IGY9MDtmPGMubGVuZ3RoO2YrKyl7bGV0IHA9Y1tmXS5rZXlzO2lmKCEoIXB8fHAubGVuZ3RoPT09MCkpaWYocFswXS5tb3JwaFRhcmdldHMpe2xldCBnPXt9LF87Zm9yKF89MDtfPHAubGVuZ3RoO18rKylpZihwW19dLm1vcnBoVGFyZ2V0cylmb3IobGV0IE09MDtNPHBbX10ubW9ycGhUYXJnZXRzLmxlbmd0aDtNKyspZ1twW19dLm1vcnBoVGFyZ2V0c1tNXV09LTE7Zm9yKGxldCBNIGluIGcpe2xldCB5PVtdLE89W107Zm9yKGxldCBiPTA7YiE9PXBbX10ubW9ycGhUYXJnZXRzLmxlbmd0aDsrK2Ipe2xldCBSPXBbX107eS5wdXNoKFIudGltZSksTy5wdXNoKFIubW9ycGhUYXJnZXQ9PT1NPzE6MCl9aS5wdXNoKG5ldyBQUygiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWyIrTSsiXSIseSxPKSl9bD1nLmxlbmd0aCoocnx8MSl9ZWxzZXtsZXQgZz0iLmJvbmVzWyIrZVtmXS5uYW1lKyJdIjtvKHlTLGcrIi5wb3NpdGlvbiIscCwicG9zIixpKSxvKFYxLGcrIi5xdWF0ZXJuaW9uIixwLCJyb3QiLGkpLG8oeVMsZysiLnNjYWxlIixwLCJzY2wiLGkpfX1yZXR1cm4gaS5sZW5ndGg9PT0wP251bGw6bmV3IHRoaXMoYSxsLGkscyl9cmVzZXREdXJhdGlvbigpe2xldCB0PXRoaXMudHJhY2tzLGU9MDtmb3IobGV0IG89MCxpPXQubGVuZ3RoO28hPT1pOysrbyl7bGV0IGE9dGhpcy50cmFja3Nbb107ZT1NYXRoLm1heChlLGEudGltZXNbYS50aW1lcy5sZW5ndGgtMV0pfXJldHVybiB0aGlzLmR1cmF0aW9uPWUsdGhpc310cmltKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLnRyaW0oMCx0aGlzLmR1cmF0aW9uKTtyZXR1cm4gdGhpc312YWxpZGF0ZSgpe2xldCB0PSEwO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0PXQmJnRoaXMudHJhY2tzW2VdLnZhbGlkYXRlKCk7cmV0dXJuIHR9b3B0aW1pemUoKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc31jbG9uZSgpe2xldCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy50cmFja3MubGVuZ3RoO2UrKyl0LnB1c2godGhpcy50cmFja3NbZV0uY2xvbmUoKSk7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMubmFtZSx0aGlzLmR1cmF0aW9uLHQsdGhpcy5ibGVuZE1vZGUpfXRvSlNPTigpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnRvSlNPTih0aGlzKX19O2Z1bmN0aW9uIEVHdChuKXtzd2l0Y2gobi50b0xvd2VyQ2FzZSgpKXtjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOnJldHVybiBQUztjYXNlInZlY3RvciI6Y2FzZSJ2ZWN0b3IyIjpjYXNlInZlY3RvcjMiOmNhc2UidmVjdG9yNCI6cmV0dXJuIHlTO2Nhc2UiY29sb3IiOnJldHVybiBwRjtjYXNlInF1YXRlcm5pb24iOnJldHVybiBWMTtjYXNlImJvb2wiOmNhc2UiYm9vbGVhbiI6cmV0dXJuIEd4O2Nhc2Uic3RyaW5nIjpyZXR1cm4gV3h9dGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogIituKX1mdW5jdGlvbiBrR3Qobil7aWYobi50eXBlPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgdHlwZSB1bmRlZmluZWQsIGNhbiBub3QgcGFyc2UiKTtsZXQgdD1FR3Qobi50eXBlKTtpZihuLnRpbWVzPT09dm9pZCAwKXtsZXQgZT1bXSxvPVtdO2JyLmZsYXR0ZW5KU09OKG4ua2V5cyxlLG8sInZhbHVlIiksbi50aW1lcz1lLG4udmFsdWVzPW99cmV0dXJuIHQucGFyc2UhPT12b2lkIDA/dC5wYXJzZShuKTpuZXcgdChuLm5hbWUsbi50aW1lcyxuLnZhbHVlcyxuLmludGVycG9sYXRpb24pfXZhciB4Uz17ZW5hYmxlZDohMSxmaWxlczp7fSxhZGQ6ZnVuY3Rpb24obix0KXt0aGlzLmVuYWJsZWQhPT0hMSYmKHRoaXMuZmlsZXNbbl09dCl9LGdldDpmdW5jdGlvbihuKXtpZih0aGlzLmVuYWJsZWQhPT0hMSlyZXR1cm4gdGhpcy5maWxlc1tuXX0scmVtb3ZlOmZ1bmN0aW9uKG4pe2RlbGV0ZSB0aGlzLmZpbGVzW25dfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZmlsZXM9e319fSx4cT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7bGV0IGk9dGhpcyxhPSExLHI9MCxzPTAsbCxjPVtdO3RoaXMub25TdGFydD12b2lkIDAsdGhpcy5vbkxvYWQ9dCx0aGlzLm9uUHJvZ3Jlc3M9ZSx0aGlzLm9uRXJyb3I9byx0aGlzLml0ZW1TdGFydD1mdW5jdGlvbihtKXtzKyssYT09PSExJiZpLm9uU3RhcnQhPT12b2lkIDAmJmkub25TdGFydChtLHIscyksYT0hMH0sdGhpcy5pdGVtRW5kPWZ1bmN0aW9uKG0pe3IrKyxpLm9uUHJvZ3Jlc3MhPT12b2lkIDAmJmkub25Qcm9ncmVzcyhtLHIscykscj09PXMmJihhPSExLGkub25Mb2FkIT09dm9pZCAwJiZpLm9uTG9hZCgpKX0sdGhpcy5pdGVtRXJyb3I9ZnVuY3Rpb24obSl7aS5vbkVycm9yIT09dm9pZCAwJiZpLm9uRXJyb3IobSl9LHRoaXMucmVzb2x2ZVVSTD1mdW5jdGlvbihtKXtyZXR1cm4gbD9sKG0pOm19LHRoaXMuc2V0VVJMTW9kaWZpZXI9ZnVuY3Rpb24obSl7cmV0dXJuIGw9bSx0aGlzfSx0aGlzLmFkZEhhbmRsZXI9ZnVuY3Rpb24obSxmKXtyZXR1cm4gYy5wdXNoKG0sZiksdGhpc30sdGhpcy5yZW1vdmVIYW5kbGVyPWZ1bmN0aW9uKG0pe2xldCBmPWMuaW5kZXhPZihtKTtyZXR1cm4gZiE9PS0xJiZjLnNwbGljZShmLDIpLHRoaXN9LHRoaXMuZ2V0SGFuZGxlcj1mdW5jdGlvbihtKXtmb3IobGV0IGY9MCxwPWMubGVuZ3RoO2Y8cDtmKz0yKXtsZXQgZz1jW2ZdLF89Y1tmKzFdO2lmKGcuZ2xvYmFsJiYoZy5sYXN0SW5kZXg9MCksZy50ZXN0KG0pKXJldHVybiBffXJldHVybiBudWxsfX19LE5HdD1uZXcgeHEsQU89Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5tYW5hZ2VyPXQhPT12b2lkIDA/dDpOR3QsdGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnBhdGg9IiIsdGhpcy5yZXNvdXJjZVBhdGg9IiIsdGhpcy5yZXF1ZXN0SGVhZGVyPXt9fWxvYWQoKXt9bG9hZEFzeW5jKHQsZSl7bGV0IG89dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oaSxhKXtvLmxvYWQodCxpLGUsYSl9KX1wYXJzZSgpe31zZXRDcm9zc09yaWdpbih0KXtyZXR1cm4gdGhpcy5jcm9zc09yaWdpbj10LHRoaXN9c2V0V2l0aENyZWRlbnRpYWxzKHQpe3JldHVybiB0aGlzLndpdGhDcmVkZW50aWFscz10LHRoaXN9c2V0UGF0aCh0KXtyZXR1cm4gdGhpcy5wYXRoPXQsdGhpc31zZXRSZXNvdXJjZVBhdGgodCl7cmV0dXJuIHRoaXMucmVzb3VyY2VQYXRoPXQsdGhpc31zZXRSZXF1ZXN0SGVhZGVyKHQpe3JldHVybiB0aGlzLnJlcXVlc3RIZWFkZXI9dCx0aGlzfX0sV1A9e30sdnE9Y2xhc3MgZXh0ZW5kcyBBT3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxvLGkpe3Q9PT12b2lkIDAmJih0PSIiKSx0aGlzLnBhdGghPT12b2lkIDAmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2xldCBhPXhTLmdldCh0KTtpZihhIT09dm9pZCAwKXJldHVybiB0aGlzLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHNldFRpbWVvdXQoKCk9PntlJiZlKGEpLHRoaXMubWFuYWdlci5pdGVtRW5kKHQpfSwwKSxhO2lmKFdQW3RdIT09dm9pZCAwKXtXUFt0XS5wdXNoKHtvbkxvYWQ6ZSxvblByb2dyZXNzOm8sb25FcnJvcjppfSk7cmV0dXJufVdQW3RdPVtdLFdQW3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6byxvbkVycm9yOml9KTtsZXQgcj1uZXcgUmVxdWVzdCh0LHtoZWFkZXJzOm5ldyBIZWFkZXJzKHRoaXMucmVxdWVzdEhlYWRlciksY3JlZGVudGlhbHM6dGhpcy53aXRoQ3JlZGVudGlhbHM/ImluY2x1ZGUiOiJzYW1lLW9yaWdpbiJ9KSxzPXRoaXMubWltZVR5cGUsbD10aGlzLnJlc3BvbnNlVHlwZTtmZXRjaChyKS50aGVuKGM9PntpZihjLnN0YXR1cz09PTIwMHx8Yy5zdGF0dXM9PT0wKXtpZihjLnN0YXR1cz09PTAmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKSx0eXBlb2YgUmVhZGFibGVTdHJlYW09PSJ1bmRlZmluZWQifHxjLmJvZHkuZ2V0UmVhZGVyPT09dm9pZCAwKXJldHVybiBjO2xldCBtPVdQW3RdLGY9Yy5ib2R5LmdldFJlYWRlcigpLHA9Yy5oZWFkZXJzLmdldCgiQ29udGVudC1MZW5ndGgiKSxnPXA/cGFyc2VJbnQocCk6MCxfPWchPT0wLE09MCx5PW5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQoTyl7YigpO2Z1bmN0aW9uIGIoKXtmLnJlYWQoKS50aGVuKCh7ZG9uZTpSLHZhbHVlOkV9KT0+e2lmKFIpTy5jbG9zZSgpO2Vsc2V7TSs9RS5ieXRlTGVuZ3RoO2xldCBqPW5ldyBQcm9ncmVzc0V2ZW50KCJwcm9ncmVzcyIse2xlbmd0aENvbXB1dGFibGU6Xyxsb2FkZWQ6TSx0b3RhbDpnfSk7Zm9yKGxldCBydD0wLEo9bS5sZW5ndGg7cnQ8SjtydCsrKXtsZXQgRXQ9bVtydF07RXQub25Qcm9ncmVzcyYmRXQub25Qcm9ncmVzcyhqKX1PLmVucXVldWUoRSksYigpfX0pfX19KTtyZXR1cm4gbmV3IFJlc3BvbnNlKHkpfWVsc2UgdGhyb3cgRXJyb3IoYGZldGNoIGZvciAiJHtjLnVybH0iIHJlc3BvbmRlZCB3aXRoICR7Yy5zdGF0dXN9OiAke2Muc3RhdHVzVGV4dH1gKX0pLnRoZW4oYz0+e3N3aXRjaChsKXtjYXNlImFycmF5YnVmZmVyIjpyZXR1cm4gYy5hcnJheUJ1ZmZlcigpO2Nhc2UiYmxvYiI6cmV0dXJuIGMuYmxvYigpO2Nhc2UiZG9jdW1lbnQiOnJldHVybiBjLnRleHQoKS50aGVuKG09Pm5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcobSxzKSk7Y2FzZSJqc29uIjpyZXR1cm4gYy5qc29uKCk7ZGVmYXVsdDppZihzPT09dm9pZCAwKXJldHVybiBjLnRleHQoKTt7bGV0IGY9L2NoYXJzZXQ9Ij8oW147IlxzXSopIj8vaS5leGVjKHMpLHA9ZiYmZlsxXT9mWzFdLnRvTG93ZXJDYXNlKCk6dm9pZCAwLGc9bmV3IFRleHREZWNvZGVyKHApO3JldHVybiBjLmFycmF5QnVmZmVyKCkudGhlbihfPT5nLmRlY29kZShfKSl9fX0pLnRoZW4oYz0+e3hTLmFkZCh0LGMpO2xldCBtPVdQW3RdO2RlbGV0ZSBXUFt0XTtmb3IobGV0IGY9MCxwPW0ubGVuZ3RoO2Y8cDtmKyspe2xldCBnPW1bZl07Zy5vbkxvYWQmJmcub25Mb2FkKGMpfX0pLmNhdGNoKGM9PntsZXQgbT1XUFt0XTtpZihtPT09dm9pZCAwKXRocm93IHRoaXMubWFuYWdlci5pdGVtRXJyb3IodCksYztkZWxldGUgV1BbdF07Zm9yKGxldCBmPTAscD1tLmxlbmd0aDtmPHA7ZisrKXtsZXQgZz1tW2ZdO2cub25FcnJvciYmZy5vbkVycm9yKGMpfXRoaXMubWFuYWdlci5pdGVtRXJyb3IodCl9KS5maW5hbGx5KCgpPT57dGhpcy5tYW5hZ2VyLml0ZW1FbmQodCl9KSx0aGlzLm1hbmFnZXIuaXRlbVN0YXJ0KHQpfXNldFJlc3BvbnNlVHlwZSh0KXtyZXR1cm4gdGhpcy5yZXNwb25zZVR5cGU9dCx0aGlzfXNldE1pbWVUeXBlKHQpe3JldHVybiB0aGlzLm1pbWVUeXBlPXQsdGhpc319O3ZhciBnRj1jbGFzcyBleHRlbmRzIEFPe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfWxvYWQodCxlLG8saSl7dGhpcy5wYXRoIT09dm9pZCAwJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtsZXQgYT10aGlzLHI9eFMuZ2V0KHQpO2lmKHIhPT12b2lkIDApcmV0dXJuIGEubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dChmdW5jdGlvbigpe2UmJmUociksYS5tYW5hZ2VyLml0ZW1FbmQodCl9LDApLHI7bGV0IHM9YTQoImltZyIpO2Z1bmN0aW9uIGwoKXttKCkseFMuYWRkKHQsdGhpcyksZSYmZSh0aGlzKSxhLm1hbmFnZXIuaXRlbUVuZCh0KX1mdW5jdGlvbiBjKGYpe20oKSxpJiZpKGYpLGEubWFuYWdlci5pdGVtRXJyb3IodCksYS5tYW5hZ2VyLml0ZW1FbmQodCl9ZnVuY3Rpb24gbSgpe3MucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsbCwhMSkscy5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsYywhMSl9cmV0dXJuIHMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsbCwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsYywhMSksdC5zdWJzdHIoMCw1KSE9PSJkYXRhOiImJnRoaXMuY3Jvc3NPcmlnaW4hPT12b2lkIDAmJihzLmNyb3NzT3JpZ2luPXRoaXMuY3Jvc3NPcmlnaW4pLGEubWFuYWdlci5pdGVtU3RhcnQodCkscy5zcmM9dCxzfX0sd3E9Y2xhc3MgZXh0ZW5kcyBBT3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxvLGkpe2xldCBhPW5ldyB1UyxyPW5ldyBnRih0aGlzLm1hbmFnZXIpO3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksci5zZXRQYXRoKHRoaXMucGF0aCk7bGV0IHM9MDtmdW5jdGlvbiBsKGMpe3IubG9hZCh0W2NdLGZ1bmN0aW9uKG0pe2EuaW1hZ2VzW2NdPW0scysrLHM9PT02JiYoYS5uZWVkc1VwZGF0ZT0hMCxlJiZlKGEpKX0sdm9pZCAwLGkpfWZvcihsZXQgYz0wO2M8dC5sZW5ndGg7KytjKWwoYyk7cmV0dXJuIGF9fTt2YXIgU3E9Y2xhc3MgZXh0ZW5kcyBBT3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxvLGkpe2xldCBhPW5ldyBHcyxyPW5ldyBnRih0aGlzLm1hbmFnZXIpO3JldHVybiByLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pLHIuc2V0UGF0aCh0aGlzLnBhdGgpLHIubG9hZCh0LGZ1bmN0aW9uKHMpe2EuaW1hZ2U9cyxhLm5lZWRzVXBkYXRlPSEwLGUhPT12b2lkIDAmJmUoYSl9LG8saSksYX19LFkwPWNsYXNzIGV4dGVuZHMgVml7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKCksdGhpcy50eXBlPSJMaWdodCIsdGhpcy5jb2xvcj1uZXcgem4odCksdGhpcy5pbnRlbnNpdHk9ZX1kaXNwb3NlKCl7fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXN9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5vYmplY3QuY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSxlLm9iamVjdC5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHksdGhpcy5ncm91bmRDb2xvciE9PXZvaWQgMCYmKGUub2JqZWN0Lmdyb3VuZENvbG9yPXRoaXMuZ3JvdW5kQ29sb3IuZ2V0SGV4KCkpLHRoaXMuZGlzdGFuY2UhPT12b2lkIDAmJihlLm9iamVjdC5kaXN0YW5jZT10aGlzLmRpc3RhbmNlKSx0aGlzLmFuZ2xlIT09dm9pZCAwJiYoZS5vYmplY3QuYW5nbGU9dGhpcy5hbmdsZSksdGhpcy5kZWNheSE9PXZvaWQgMCYmKGUub2JqZWN0LmRlY2F5PXRoaXMuZGVjYXkpLHRoaXMucGVudW1icmEhPT12b2lkIDAmJihlLm9iamVjdC5wZW51bWJyYT10aGlzLnBlbnVtYnJhKSx0aGlzLnNoYWRvdyE9PXZvaWQgMCYmKGUub2JqZWN0LnNoYWRvdz10aGlzLnNoYWRvdy50b0pTT04oKSksZX19O1kwLnByb3RvdHlwZS5pc0xpZ2h0PSEwO3ZhciBScT1jbGFzcyBleHRlbmRzIFkwe2NvbnN0cnVjdG9yKHQsZSxvKXtzdXBlcih0LG8pLHRoaXMudHlwZT0iSGVtaXNwaGVyZUxpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoVmkuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMuZ3JvdW5kQ29sb3I9bmV3IHpuKGUpfWNvcHkodCl7cmV0dXJuIFkwLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmdyb3VuZENvbG9yLmNvcHkodC5ncm91bmRDb2xvciksdGhpc319O1JxLnByb3RvdHlwZS5pc0hlbWlzcGhlcmVMaWdodD0hMDt2YXIgYmd0PW5ldyBlbyxPZ3Q9bmV3IHB0LFBndD1uZXcgcHQseDQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5jYW1lcmE9dCx0aGlzLmJpYXM9MCx0aGlzLm5vcm1hbEJpYXM9MCx0aGlzLnJhZGl1cz0xLHRoaXMuYmx1clNhbXBsZXM9OCx0aGlzLm1hcFNpemU9bmV3IFNlKDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IGVvLHRoaXMuYXV0b1VwZGF0ZT0hMCx0aGlzLm5lZWRzVXBkYXRlPSExLHRoaXMuX2ZydXN0dW09bmV3IGhTLHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgU2UoMSwxKSx0aGlzLl92aWV3cG9ydENvdW50PTEsdGhpcy5fdmlld3BvcnRzPVtuZXcgY2EoMCwwLDEsMSldfWdldFZpZXdwb3J0Q291bnQoKXtyZXR1cm4gdGhpcy5fdmlld3BvcnRDb3VudH1nZXRGcnVzdHVtKCl7cmV0dXJuIHRoaXMuX2ZydXN0dW19dXBkYXRlTWF0cmljZXModCl7bGV0IGU9dGhpcy5jYW1lcmEsbz10aGlzLm1hdHJpeDtPZ3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLGUucG9zaXRpb24uY29weShPZ3QpLFBndC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC50YXJnZXQubWF0cml4V29ybGQpLGUubG9va0F0KFBndCksZS51cGRhdGVNYXRyaXhXb3JsZCgpLGJndC5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChiZ3QpLG8uc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpLG8ubXVsdGlwbHkoZS5wcm9qZWN0aW9uTWF0cml4KSxvLm11bHRpcGx5KGUubWF0cml4V29ybGRJbnZlcnNlKX1nZXRWaWV3cG9ydCh0KXtyZXR1cm4gdGhpcy5fdmlld3BvcnRzW3RdfWdldEZyYW1lRXh0ZW50cygpe3JldHVybiB0aGlzLl9mcmFtZUV4dGVudHN9ZGlzcG9zZSgpe3RoaXMubWFwJiZ0aGlzLm1hcC5kaXNwb3NlKCksdGhpcy5tYXBQYXNzJiZ0aGlzLm1hcFBhc3MuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHRoaXMuY2FtZXJhPXQuY2FtZXJhLmNsb25lKCksdGhpcy5iaWFzPXQuYmlhcyx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLm1hcFNpemUuY29weSh0Lm1hcFNpemUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfXRvSlNPTigpe2xldCB0PXt9O3JldHVybiB0aGlzLmJpYXMhPT0wJiYodC5iaWFzPXRoaXMuYmlhcyksdGhpcy5ub3JtYWxCaWFzIT09MCYmKHQubm9ybWFsQmlhcz10aGlzLm5vcm1hbEJpYXMpLHRoaXMucmFkaXVzIT09MSYmKHQucmFkaXVzPXRoaXMucmFkaXVzKSwodGhpcy5tYXBTaXplLnghPT01MTJ8fHRoaXMubWFwU2l6ZS55IT09NTEyKSYmKHQubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpKSx0LmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdCxkZWxldGUgdC5jYW1lcmEubWF0cml4LHR9fSx1Rj1jbGFzcyBleHRlbmRzIHg0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFNtKDUwLDEsLjUsNTAwKSksdGhpcy5mb2N1cz0xfXVwZGF0ZU1hdHJpY2VzKHQpe2xldCBlPXRoaXMuY2FtZXJhLG89WVcqMip0LmFuZ2xlKnRoaXMuZm9jdXMsaT10aGlzLm1hcFNpemUud2lkdGgvdGhpcy5tYXBTaXplLmhlaWdodCxhPXQuZGlzdGFuY2V8fGUuZmFyOyhvIT09ZS5mb3Z8fGkhPT1lLmFzcGVjdHx8YSE9PWUuZmFyKSYmKGUuZm92PW8sZS5hc3BlY3Q9aSxlLmZhcj1hLGUudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxzdXBlci51cGRhdGVNYXRyaWNlcyh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzfX07dUYucHJvdG90eXBlLmlzU3BvdExpZ2h0U2hhZG93PSEwO3ZhciBFcT1jbGFzcyBleHRlbmRzIFkwe2NvbnN0cnVjdG9yKHQsZSxvPTAsaT1NYXRoLlBJLzMsYT0wLHI9MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlNwb3RMaWdodCIsdGhpcy5wb3NpdGlvbi5jb3B5KFZpLkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgVmksdGhpcy5kaXN0YW5jZT1vLHRoaXMuYW5nbGU9aSx0aGlzLnBlbnVtYnJhPWEsdGhpcy5kZWNheT1yLHRoaXMuc2hhZG93PW5ldyB1Rn1nZXQgcG93ZXIoKXtyZXR1cm4gdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX1zZXQgcG93ZXIodCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfWRpc3Bvc2UoKXt0aGlzLnNoYWRvdy5kaXNwb3NlKCl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fTtFcS5wcm90b3R5cGUuaXNTcG90TGlnaHQ9ITA7dmFyIHlndD1uZXcgZW8sWDU9bmV3IHB0LHpXPW5ldyBwdCxoRj1jbGFzcyBleHRlbmRzIHg0e2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFNtKDkwLDEsLjUsNTAwKSksdGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBTZSg0LDIpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9Nix0aGlzLl92aWV3cG9ydHM9W25ldyBjYSgyLDEsMSwxKSxuZXcgY2EoMCwxLDEsMSksbmV3IGNhKDMsMSwxLDEpLG5ldyBjYSgxLDEsMSwxKSxuZXcgY2EoMywwLDEsMSksbmV3IGNhKDEsMCwxLDEpXSx0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IHB0KDEsMCwwKSxuZXcgcHQoLTEsMCwwKSxuZXcgcHQoMCwwLDEpLG5ldyBwdCgwLDAsLTEpLG5ldyBwdCgwLDEsMCksbmV3IHB0KDAsLTEsMCldLHRoaXMuX2N1YmVVcHM9W25ldyBwdCgwLDEsMCksbmV3IHB0KDAsMSwwKSxuZXcgcHQoMCwxLDApLG5ldyBwdCgwLDEsMCksbmV3IHB0KDAsMCwxKSxuZXcgcHQoMCwwLC0xKV19dXBkYXRlTWF0cmljZXModCxlPTApe2xldCBvPXRoaXMuY2FtZXJhLGk9dGhpcy5tYXRyaXgsYT10LmRpc3RhbmNlfHxvLmZhcjthIT09by5mYXImJihvLmZhcj1hLG8udXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxYNS5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksby5wb3NpdGlvbi5jb3B5KFg1KSx6Vy5jb3B5KG8ucG9zaXRpb24pLHpXLmFkZCh0aGlzLl9jdWJlRGlyZWN0aW9uc1tlXSksby51cC5jb3B5KHRoaXMuX2N1YmVVcHNbZV0pLG8ubG9va0F0KHpXKSxvLnVwZGF0ZU1hdHJpeFdvcmxkKCksaS5tYWtlVHJhbnNsYXRpb24oLVg1LngsLVg1LnksLVg1LnopLHlndC5tdWx0aXBseU1hdHJpY2VzKG8ucHJvamVjdGlvbk1hdHJpeCxvLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCh5Z3QpfX07aEYucHJvdG90eXBlLmlzUG9pbnRMaWdodFNoYWRvdz0hMDt2YXIga3E9Y2xhc3MgZXh0ZW5kcyBZMHtjb25zdHJ1Y3Rvcih0LGUsbz0wLGk9MSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlBvaW50TGlnaHQiLHRoaXMuZGlzdGFuY2U9byx0aGlzLmRlY2F5PWksdGhpcy5zaGFkb3c9bmV3IGhGfWdldCBwb3dlcigpe3JldHVybiB0aGlzLmludGVuc2l0eSo0Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9ZGlzcG9zZSgpe3RoaXMuc2hhZG93LmRpc3Bvc2UoKX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQpLHRoaXMuZGlzdGFuY2U9dC5kaXN0YW5jZSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX07a3EucHJvdG90eXBlLmlzUG9pbnRMaWdodD0hMDt2YXIgX0Y9Y2xhc3MgZXh0ZW5kcyB4NHtjb25zdHJ1Y3Rvcigpe3N1cGVyKG5ldyBIMSgtNSw1LDUsLTUsLjUsNTAwKSl9fTtfRi5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0U2hhZG93PSEwO3ZhciBOcT1jbGFzcyBleHRlbmRzIFkwe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkRpcmVjdGlvbmFsTGlnaHQiLHRoaXMucG9zaXRpb24uY29weShWaS5EZWZhdWx0VXApLHRoaXMudXBkYXRlTWF0cml4KCksdGhpcy50YXJnZXQ9bmV3IFZpLHRoaXMuc2hhZG93PW5ldyBfRn1kaXNwb3NlKCl7dGhpcy5zaGFkb3cuZGlzcG9zZSgpfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fTtOcS5wcm90b3R5cGUuaXNEaXJlY3Rpb25hbExpZ2h0PSEwO3ZhciBUcT1jbGFzcyBleHRlbmRzIFkwe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IkFtYmllbnRMaWdodCJ9fTtUcS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHQ9ITA7dmFyIEFxPWNsYXNzIGV4dGVuZHMgWTB7Y29uc3RydWN0b3IodCxlLG89MTAsaT0xMCl7c3VwZXIodCxlKSx0aGlzLnR5cGU9IlJlY3RBcmVhTGlnaHQiLHRoaXMud2lkdGg9byx0aGlzLmhlaWdodD1pfWdldCBwb3dlcigpe3JldHVybiB0aGlzLmludGVuc2l0eSp0aGlzLndpZHRoKnRoaXMuaGVpZ2h0Kk1hdGguUEl9c2V0IHBvd2VyKHQpe3RoaXMuaW50ZW5zaXR5PXQvKHRoaXMud2lkdGgqdGhpcy5oZWlnaHQqTWF0aC5QSSl9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLndpZHRoPXQud2lkdGgsdGhpcy5oZWlnaHQ9dC5oZWlnaHQsdGhpc310b0pTT04odCl7bGV0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC53aWR0aD10aGlzLndpZHRoLGUub2JqZWN0LmhlaWdodD10aGlzLmhlaWdodCxlfX07QXEucHJvdG90eXBlLmlzUmVjdEFyZWFMaWdodD0hMDt2YXIgQ0Y9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmNvZWZmaWNpZW50cz1bXTtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzLnB1c2gobmV3IHB0KX1zZXQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5jb3B5KHRbZV0pO3JldHVybiB0aGlzfXplcm8oKXtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzW3RdLnNldCgwLDAsMCk7cmV0dXJuIHRoaXN9Z2V0QXQodCxlKXtsZXQgbz10LngsaT10LnksYT10Lnoscj10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KHJbMF0pLm11bHRpcGx5U2NhbGFyKC4yODIwOTUpLGUuYWRkU2NhbGVkVmVjdG9yKHJbMV0sLjQ4ODYwMyppKSxlLmFkZFNjYWxlZFZlY3RvcihyWzJdLC40ODg2MDMqYSksZS5hZGRTY2FsZWRWZWN0b3IoclszXSwuNDg4NjAzKm8pLGUuYWRkU2NhbGVkVmVjdG9yKHJbNF0sMS4wOTI1NDgqKG8qaSkpLGUuYWRkU2NhbGVkVmVjdG9yKHJbNV0sMS4wOTI1NDgqKGkqYSkpLGUuYWRkU2NhbGVkVmVjdG9yKHJbNl0sLjMxNTM5MiooMyphKmEtMSkpLGUuYWRkU2NhbGVkVmVjdG9yKHJbN10sMS4wOTI1NDgqKG8qYSkpLGUuYWRkU2NhbGVkVmVjdG9yKHJbOF0sLjU0NjI3NCoobypvLWkqaSkpLGV9Z2V0SXJyYWRpYW5jZUF0KHQsZSl7bGV0IG89dC54LGk9dC55LGE9dC56LHI9dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIGUuY29weShyWzBdKS5tdWx0aXBseVNjYWxhciguODg2MjI3KSxlLmFkZFNjYWxlZFZlY3RvcihyWzFdLDIqLjUxMTY2NCppKSxlLmFkZFNjYWxlZFZlY3RvcihyWzJdLDIqLjUxMTY2NCphKSxlLmFkZFNjYWxlZFZlY3RvcihyWzNdLDIqLjUxMTY2NCpvKSxlLmFkZFNjYWxlZFZlY3RvcihyWzRdLDIqLjQyOTA0MypvKmkpLGUuYWRkU2NhbGVkVmVjdG9yKHJbNV0sMiouNDI5MDQzKmkqYSksZS5hZGRTY2FsZWRWZWN0b3Iocls2XSwuNzQzMTI1KmEqYS0uMjQ3NzA4KSxlLmFkZFNjYWxlZFZlY3RvcihyWzddLDIqLjQyOTA0MypvKmEpLGUuYWRkU2NhbGVkVmVjdG9yKHJbOF0sLjQyOTA0MyoobypvLWkqaSkpLGV9YWRkKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uYWRkKHQuY29lZmZpY2llbnRzW2VdKTtyZXR1cm4gdGhpc31hZGRTY2FsZWRTSCh0LGUpe2ZvcihsZXQgbz0wO288OTtvKyspdGhpcy5jb2VmZmljaWVudHNbb10uYWRkU2NhbGVkVmVjdG9yKHQuY29lZmZpY2llbnRzW29dLGUpO3JldHVybiB0aGlzfXNjYWxlKHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0ubXVsdGlwbHlTY2FsYXIodCk7cmV0dXJuIHRoaXN9bGVycCh0LGUpe2ZvcihsZXQgbz0wO288OTtvKyspdGhpcy5jb2VmZmljaWVudHNbb10ubGVycCh0LmNvZWZmaWNpZW50c1tvXSxlKTtyZXR1cm4gdGhpc31lcXVhbHModCl7Zm9yKGxldCBlPTA7ZTw5O2UrKylpZighdGhpcy5jb2VmZmljaWVudHNbZV0uZXF1YWxzKHQuY29lZmZpY2llbnRzW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1jb3B5KHQpe3JldHVybiB0aGlzLnNldCh0LmNvZWZmaWNpZW50cyl9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfWZyb21BcnJheSh0LGU9MCl7bGV0IG89dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBpPTA7aTw5O2krKylvW2ldLmZyb21BcnJheSh0LGUraSozKTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtsZXQgbz10aGlzLmNvZWZmaWNpZW50cztmb3IobGV0IGk9MDtpPDk7aSsrKW9baV0udG9BcnJheSh0LGUraSozKTtyZXR1cm4gdH1zdGF0aWMgZ2V0QmFzaXNBdCh0LGUpe2xldCBvPXQueCxpPXQueSxhPXQuejtlWzBdPS4yODIwOTUsZVsxXT0uNDg4NjAzKmksZVsyXT0uNDg4NjAzKmEsZVszXT0uNDg4NjAzKm8sZVs0XT0xLjA5MjU0OCpvKmksZVs1XT0xLjA5MjU0OCppKmEsZVs2XT0uMzE1MzkyKigzKmEqYS0xKSxlWzddPTEuMDkyNTQ4Km8qYSxlWzhdPS41NDYyNzQqKG8qby1pKmkpfX07Q0YucHJvdG90eXBlLmlzU3BoZXJpY2FsSGFybW9uaWNzMz0hMDt2YXIgdjQ9Y2xhc3MgZXh0ZW5kcyBZMHtjb25zdHJ1Y3Rvcih0PW5ldyBDRixlPTEpe3N1cGVyKHZvaWQgMCxlKSx0aGlzLnNoPXR9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLnNoLmNvcHkodC5zaCksdGhpc31mcm9tSlNPTih0KXtyZXR1cm4gdGhpcy5pbnRlbnNpdHk9dC5pbnRlbnNpdHksdGhpcy5zaC5mcm9tQXJyYXkodC5zaCksdGhpc310b0pTT04odCl7bGV0IGU9c3VwZXIudG9KU09OKHQpO3JldHVybiBlLm9iamVjdC5zaD10aGlzLnNoLnRvQXJyYXkoKSxlfX07djQucHJvdG90eXBlLmlzTGlnaHRQcm9iZT0hMDt2YXIgRHE9Y2xhc3N7c3RhdGljIGRlY29kZVRleHQodCl7aWYodHlwZW9mIFRleHREZWNvZGVyIT0idW5kZWZpbmVkIilyZXR1cm4gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHQpO2xldCBlPSIiO2ZvcihsZXQgbz0wLGk9dC5sZW5ndGg7bzxpO28rKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbb10pO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9Y2F0Y2gobyl7cmV0dXJuIGV9fXN0YXRpYyBleHRyYWN0VXJsQmFzZSh0KXtsZXQgZT10Lmxhc3RJbmRleE9mKCIvIik7cmV0dXJuIGU9PT0tMT8iLi8iOnQuc3Vic3RyKDAsZSsxKX1zdGF0aWMgcmVzb2x2ZVVSTCh0LGUpe3JldHVybiB0eXBlb2YgdCE9InN0cmluZyJ8fHQ9PT0iIj8iIjooL15odHRwcz86XC9cLy9pLnRlc3QoZSkmJi9eXC8vLnRlc3QodCkmJihlPWUucmVwbGFjZSgvKF5odHRwcz86XC9cL1teXC9dKykuKi9pLCIkMSIpKSwvXihodHRwcz86KT9cL1wvL2kudGVzdCh0KXx8L15kYXRhOi4qLC4qJC9pLnRlc3QodCl8fC9eYmxvYjouKiQvaS50ZXN0KHQpP3Q6ZSt0KX19LElxPWNsYXNzIGV4dGVuZHMgdGF7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMudHlwZT0iSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5zdGFuY2VDb3VudD0xLzB9Y29weSh0KXtyZXR1cm4gc3VwZXIuY29weSh0KSx0aGlzLmluc3RhbmNlQ291bnQ9dC5pbnN0YW5jZUNvdW50LHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IoKS5jb3B5KHRoaXMpfXRvSlNPTigpe2xldCB0PXN1cGVyLnRvSlNPTih0aGlzKTtyZXR1cm4gdC5pbnN0YW5jZUNvdW50PXRoaXMuaW5zdGFuY2VDb3VudCx0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITAsdH19O0lxLnByb3RvdHlwZS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5PSEwO3ZhciB6cT1jbGFzcyBleHRlbmRzIEFPe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcD09InVuZGVmaW5lZCImJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGNyZWF0ZUltYWdlQml0bWFwKCkgbm90IHN1cHBvcnRlZC4iKSx0eXBlb2YgZmV0Y2g9PSJ1bmRlZmluZWQiJiZjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlQml0bWFwTG9hZGVyOiBmZXRjaCgpIG5vdCBzdXBwb3J0ZWQuIiksdGhpcy5vcHRpb25zPXtwcmVtdWx0aXBseUFscGhhOiJub25lIn19c2V0T3B0aW9ucyh0KXtyZXR1cm4gdGhpcy5vcHRpb25zPXQsdGhpc31sb2FkKHQsZSxvLGkpe3Q9PT12b2lkIDAmJih0PSIiKSx0aGlzLnBhdGghPT12b2lkIDAmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2xldCBhPXRoaXMscj14Uy5nZXQodCk7aWYociE9PXZvaWQgMClyZXR1cm4gYS5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZSYmZShyKSxhLm1hbmFnZXIuaXRlbUVuZCh0KX0sMCkscjtsZXQgcz17fTtzLmNyZWRlbnRpYWxzPXRoaXMuY3Jvc3NPcmlnaW49PT0iYW5vbnltb3VzIj8ic2FtZS1vcmlnaW4iOiJpbmNsdWRlIixzLmhlYWRlcnM9dGhpcy5yZXF1ZXN0SGVhZGVyLGZldGNoKHQscykudGhlbihmdW5jdGlvbihsKXtyZXR1cm4gbC5ibG9iKCl9KS50aGVuKGZ1bmN0aW9uKGwpe3JldHVybiBjcmVhdGVJbWFnZUJpdG1hcChsLE9iamVjdC5hc3NpZ24oYS5vcHRpb25zLHtjb2xvclNwYWNlQ29udmVyc2lvbjoibm9uZSJ9KSl9KS50aGVuKGZ1bmN0aW9uKGwpe3hTLmFkZCh0LGwpLGUmJmUobCksYS5tYW5hZ2VyLml0ZW1FbmQodCl9KS5jYXRjaChmdW5jdGlvbihsKXtpJiZpKGwpLGEubWFuYWdlci5pdGVtRXJyb3IodCksYS5tYW5hZ2VyLml0ZW1FbmQodCl9KSxhLm1hbmFnZXIuaXRlbVN0YXJ0KHQpfX07enEucHJvdG90eXBlLmlzSW1hZ2VCaXRtYXBMb2FkZXI9ITA7dmFyIEJILFRHdD17Z2V0Q29udGV4dDpmdW5jdGlvbigpe3JldHVybiBCSD09PXZvaWQgMCYmKEJIPW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksQkh9LHNldENvbnRleHQ6ZnVuY3Rpb24obil7Qkg9bn19LEhxPWNsYXNzIGV4dGVuZHMgQU97Y29uc3RydWN0b3IodCl7c3VwZXIodCl9bG9hZCh0LGUsbyxpKXtsZXQgYT10aGlzLHI9bmV3IHZxKHRoaXMubWFuYWdlcik7ci5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIiksci5zZXRQYXRoKHRoaXMucGF0aCksci5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksci5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLHIubG9hZCh0LGZ1bmN0aW9uKHMpe3RyeXtsZXQgbD1zLnNsaWNlKDApO1RHdC5nZXRDb250ZXh0KCkuZGVjb2RlQXVkaW9EYXRhKGwsZnVuY3Rpb24obSl7ZShtKX0pfWNhdGNoKGwpe2k/aShsKTpjb25zb2xlLmVycm9yKGwpLGEubWFuYWdlci5pdGVtRXJyb3IodCl9fSxvLGkpfX0sRnE9Y2xhc3MgZXh0ZW5kcyB2NHtjb25zdHJ1Y3Rvcih0LGUsbz0xKXtzdXBlcih2b2lkIDAsbyk7bGV0IGk9bmV3IHpuKCkuc2V0KHQpLGE9bmV3IHpuKCkuc2V0KGUpLHI9bmV3IHB0KGkucixpLmcsaS5iKSxzPW5ldyBwdChhLnIsYS5nLGEuYiksbD1NYXRoLnNxcnQoTWF0aC5QSSksYz1sKk1hdGguc3FydCguNzUpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLmNvcHkocikuYWRkKHMpLm11bHRpcGx5U2NhbGFyKGwpLHRoaXMuc2guY29lZmZpY2llbnRzWzFdLmNvcHkocikuc3ViKHMpLm11bHRpcGx5U2NhbGFyKGMpfX07RnEucHJvdG90eXBlLmlzSGVtaXNwaGVyZUxpZ2h0UHJvYmU9ITA7dmFyIExxPWNsYXNzIGV4dGVuZHMgdjR7Y29uc3RydWN0b3IodCxlPTEpe3N1cGVyKHZvaWQgMCxlKTtsZXQgbz1uZXcgem4oKS5zZXQodCk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uc2V0KG8ucixvLmcsby5iKS5tdWx0aXBseVNjYWxhcigyKk1hdGguc3FydChNYXRoLlBJKSl9fTtMcS5wcm90b3R5cGUuaXNBbWJpZW50TGlnaHRQcm9iZT0hMDt2YXIgQnE9Y2xhc3MgZXh0ZW5kcyBWaXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKHRoaXMuaXNQbGF5aW5nPT09ITApe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IEF1ZGlvIGlzIGFscmVhZHkgcGxheWluZy4iKTtyZXR1cm59aWYodGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9PT0hMSl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTtyZXR1cm59dGhpcy5fc3RhcnRlZEF0PXRoaXMuY29udGV4dC5jdXJyZW50VGltZSt0O2xldCBlPXRoaXMuY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTtyZXR1cm4gZS5idWZmZXI9dGhpcy5idWZmZXIsZS5sb29wPXRoaXMubG9vcCxlLmxvb3BTdGFydD10aGlzLmxvb3BTdGFydCxlLmxvb3BFbmQ9dGhpcy5sb29wRW5kLGUub25lbmRlZD10aGlzLm9uRW5kZWQuYmluZCh0aGlzKSxlLnN0YXJ0KHRoaXMuX3N0YXJ0ZWRBdCx0aGlzLl9wcm9ncmVzcyt0aGlzLm9mZnNldCx0aGlzLmR1cmF0aW9uKSx0aGlzLmlzUGxheWluZz0hMCx0aGlzLnNvdXJjZT1lLHRoaXMuc2V0RGV0dW5lKHRoaXMuZGV0dW5lKSx0aGlzLnNldFBsYXliYWNrUmF0ZSh0aGlzLnBsYXliYWNrUmF0ZSksdGhpcy5jb25uZWN0KCl9cGF1c2UoKXtpZih0aGlzLmhhc1BsYXliYWNrQ29udHJvbD09PSExKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpO3JldHVybn1yZXR1cm4gdGhpcy5pc1BsYXlpbmc9PT0hMCYmKHRoaXMuX3Byb2dyZXNzKz1NYXRoLm1heCh0aGlzLmNvbnRleHQuY3VycmVudFRpbWUtdGhpcy5fc3RhcnRlZEF0LDApKnRoaXMucGxheWJhY2tSYXRlLHRoaXMubG9vcD09PSEwJiYodGhpcy5fcHJvZ3Jlc3M9dGhpcy5fcHJvZ3Jlc3MlKHRoaXMuZHVyYXRpb258fHRoaXMuYnVmZmVyLmR1cmF0aW9uKSksdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSksdGhpc31zdG9wKCl7aWYodGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9PT0hMSl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTtyZXR1cm59cmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzfWNvbm5lY3QoKXtpZih0aGlzLmZpbHRlcnMubGVuZ3RoPjApe3RoaXMuc291cmNlLmNvbm5lY3QodGhpcy5maWx0ZXJzWzBdKTtmb3IobGV0IHQ9MSxlPXRoaXMuZmlsdGVycy5sZW5ndGg7dDxlO3QrKyl0aGlzLmZpbHRlcnNbdC0xXS5jb25uZWN0KHRoaXMuZmlsdGVyc1t0XSk7dGhpcy5maWx0ZXJzW3RoaXMuZmlsdGVycy5sZW5ndGgtMV0uY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKX1lbHNlIHRoaXMuc291cmNlLmNvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSk7cmV0dXJuIHRoaXMuX2Nvbm5lY3RlZD0hMCx0aGlzfWRpc2Nvbm5lY3QoKXtpZih0aGlzLmZpbHRlcnMubGVuZ3RoPjApe3RoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzWzBdKTtmb3IobGV0IHQ9MSxlPXRoaXMuZmlsdGVycy5sZW5ndGg7dDxlO3QrKyl0aGlzLmZpbHRlcnNbdC0xXS5kaXNjb25uZWN0KHRoaXMuZmlsdGVyc1t0XSk7dGhpcy5maWx0ZXJzW3RoaXMuZmlsdGVycy5sZW5ndGgtMV0uZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKX1lbHNlIHRoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSk7cmV0dXJuIHRoaXMuX2Nvbm5lY3RlZD0hMSx0aGlzfWdldEZpbHRlcnMoKXtyZXR1cm4gdGhpcy5maWx0ZXJzfXNldEZpbHRlcnModCl7cmV0dXJuIHR8fCh0PVtdKSx0aGlzLl9jb25uZWN0ZWQ9PT0hMD8odGhpcy5kaXNjb25uZWN0KCksdGhpcy5maWx0ZXJzPXQuc2xpY2UoKSx0aGlzLmNvbm5lY3QoKSk6dGhpcy5maWx0ZXJzPXQuc2xpY2UoKSx0aGlzfXNldERldHVuZSh0KXtpZih0aGlzLmRldHVuZT10LHRoaXMuc291cmNlLmRldHVuZSE9PXZvaWQgMClyZXR1cm4gdGhpcy5pc1BsYXlpbmc9PT0hMCYmdGhpcy5zb3VyY2UuZGV0dW5lLnNldFRhcmdldEF0VGltZSh0aGlzLmRldHVuZSx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfWdldERldHVuZSgpe3JldHVybiB0aGlzLmRldHVuZX1nZXRGaWx0ZXIoKXtyZXR1cm4gdGhpcy5nZXRGaWx0ZXJzKClbMF19c2V0RmlsdGVyKHQpe3JldHVybiB0aGlzLnNldEZpbHRlcnModD9bdF06W10pfXNldFBsYXliYWNrUmF0ZSh0KXtpZih0aGlzLmhhc1BsYXliYWNrQ29udHJvbD09PSExKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpO3JldHVybn1yZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCx0aGlzLmlzUGxheWluZz09PSEwJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9Z2V0UGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMucGxheWJhY2tSYXRlfW9uRW5kZWQoKXt0aGlzLmlzUGxheWluZz0hMX1nZXRMb29wKCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPT09ITE/KGNvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIiksITEpOnRoaXMubG9vcH1zZXRMb29wKHQpe2lmKHRoaXMuaGFzUGxheWJhY2tDb250cm9sPT09ITEpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIik7cmV0dXJufXJldHVybiB0aGlzLmxvb3A9dCx0aGlzLmlzUGxheWluZz09PSEwJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXN9c2V0TG9vcFN0YXJ0KHQpe3JldHVybiB0aGlzLmxvb3BTdGFydD10LHRoaXN9c2V0TG9vcEVuZCh0KXtyZXR1cm4gdGhpcy5sb29wRW5kPXQsdGhpc31nZXRWb2x1bWUoKXtyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWV9c2V0Vm9sdW1lKHQpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUodCx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfX07dmFyIFZxPWNsYXNze2NvbnN0cnVjdG9yKHQsZT0yMDQ4KXt0aGlzLmFuYWx5c2VyPXQuY29udGV4dC5jcmVhdGVBbmFseXNlcigpLHRoaXMuYW5hbHlzZXIuZmZ0U2l6ZT1lLHRoaXMuZGF0YT1uZXcgVWludDhBcnJheSh0aGlzLmFuYWx5c2VyLmZyZXF1ZW5jeUJpbkNvdW50KSx0LmdldE91dHB1dCgpLmNvbm5lY3QodGhpcy5hbmFseXNlcil9Z2V0RnJlcXVlbmN5RGF0YSgpe3JldHVybiB0aGlzLmFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKHRoaXMuZGF0YSksdGhpcy5kYXRhfWdldEF2ZXJhZ2VGcmVxdWVuY3koKXtsZXQgdD0wLGU9dGhpcy5nZXRGcmVxdWVuY3lEYXRhKCk7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspdCs9ZVtvXTtyZXR1cm4gdC9lLmxlbmd0aH19LGpxPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXt0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1vO2xldCBpLGEscjtzd2l0Y2goZSl7Y2FzZSJxdWF0ZXJuaW9uIjppPXRoaXMuX3NsZXJwLGE9dGhpcy5fc2xlcnBBZGRpdGl2ZSxyPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkobyo2KSx0aGlzLl93b3JrSW5kZXg9NTticmVhaztjYXNlInN0cmluZyI6Y2FzZSJib29sIjppPXRoaXMuX3NlbGVjdCxhPXRoaXMuX3NlbGVjdCxyPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlPdGhlcix0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkobyo1KTticmVhaztkZWZhdWx0Omk9dGhpcy5fbGVycCxhPXRoaXMuX2xlcnBBZGRpdGl2ZSxyPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkobyo1KX10aGlzLl9taXhCdWZmZXJSZWdpb249aSx0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZT1hLHRoaXMuX3NldElkZW50aXR5PXIsdGhpcy5fb3JpZ0luZGV4PTMsdGhpcy5fYWRkSW5kZXg9NCx0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHRoaXMudXNlQ291bnQ9MCx0aGlzLnJlZmVyZW5jZUNvdW50PTB9YWNjdW11bGF0ZSh0LGUpe2xldCBvPXRoaXMuYnVmZmVyLGk9dGhpcy52YWx1ZVNpemUsYT10KmkraSxyPXRoaXMuY3VtdWxhdGl2ZVdlaWdodDtpZihyPT09MCl7Zm9yKGxldCBzPTA7cyE9PWk7KytzKW9bYStzXT1vW3NdO3I9ZX1lbHNle3IrPWU7bGV0IHM9ZS9yO3RoaXMuX21peEJ1ZmZlclJlZ2lvbihvLGEsMCxzLGkpfXRoaXMuY3VtdWxhdGl2ZVdlaWdodD1yfWFjY3VtdWxhdGVBZGRpdGl2ZSh0KXtsZXQgZT10aGlzLmJ1ZmZlcixvPXRoaXMudmFsdWVTaXplLGk9byp0aGlzLl9hZGRJbmRleDt0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT09PTAmJnRoaXMuX3NldElkZW50aXR5KCksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUoZSxpLDAsdCxvKSx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSs9dH1hcHBseSh0KXtsZXQgZT10aGlzLnZhbHVlU2l6ZSxvPXRoaXMuYnVmZmVyLGk9dCplK2UsYT10aGlzLmN1bXVsYXRpdmVXZWlnaHQscj10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxzPXRoaXMuYmluZGluZztpZih0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLGE8MSl7bGV0IGw9ZSp0aGlzLl9vcmlnSW5kZXg7dGhpcy5fbWl4QnVmZmVyUmVnaW9uKG8saSxsLDEtYSxlKX1yPjAmJnRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKG8saSx0aGlzLl9hZGRJbmRleCplLDEsZSk7Zm9yKGxldCBsPWUsYz1lK2U7bCE9PWM7KytsKWlmKG9bbF0hPT1vW2wrZV0pe3Muc2V0VmFsdWUobyxpKTticmVha319c2F2ZU9yaWdpbmFsU3RhdGUoKXtsZXQgdD10aGlzLmJpbmRpbmcsZT10aGlzLmJ1ZmZlcixvPXRoaXMudmFsdWVTaXplLGk9byp0aGlzLl9vcmlnSW5kZXg7dC5nZXRWYWx1ZShlLGkpO2ZvcihsZXQgYT1vLHI9aTthIT09cjsrK2EpZVthXT1lW2krYSVvXTt0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTB9cmVzdG9yZU9yaWdpbmFsU3RhdGUoKXtsZXQgdD10aGlzLnZhbHVlU2l6ZSozO3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlcix0KX1fc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWMoKXtsZXQgdD10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXQrdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBvPXQ7bzxlO28rKyl0aGlzLmJ1ZmZlcltvXT0wfV9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbigpe3RoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCksdGhpcy5idWZmZXJbdGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemUrM109MX1fc2V0QWRkaXRpdmVJZGVudGl0eU90aGVyKCl7bGV0IHQ9dGhpcy5fb3JpZ0luZGV4KnRoaXMudmFsdWVTaXplLGU9dGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBvPTA7bzx0aGlzLnZhbHVlU2l6ZTtvKyspdGhpcy5idWZmZXJbZStvXT10aGlzLmJ1ZmZlclt0K29dfV9zZWxlY3QodCxlLG8saSxhKXtpZihpPj0uNSlmb3IobGV0IHI9MDtyIT09YTsrK3IpdFtlK3JdPXRbbytyXX1fc2xlcnAodCxlLG8saSl7Um0uc2xlcnBGbGF0KHQsZSx0LGUsdCxvLGkpfV9zbGVycEFkZGl0aXZlKHQsZSxvLGksYSl7bGV0IHI9dGhpcy5fd29ya0luZGV4KmE7Um0ubXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxyLHQsZSx0LG8pLFJtLnNsZXJwRmxhdCh0LGUsdCxlLHQscixpKX1fbGVycCh0LGUsbyxpLGEpe2xldCByPTEtaTtmb3IobGV0IHM9MDtzIT09YTsrK3Mpe2xldCBsPWUrczt0W2xdPXRbbF0qcit0W28rc10qaX19X2xlcnBBZGRpdGl2ZSh0LGUsbyxpLGEpe2ZvcihsZXQgcj0wO3IhPT1hOysrcil7bGV0IHM9ZStyO3Rbc109dFtzXSt0W28rcl0qaX19fSxvWj0iXFxbXFxdXFwuOlxcLyIsQUd0PW5ldyBSZWdFeHAoIlsiK29aKyJdIiwiZyIpLGlaPSJbXiIrb1orIl0iLERHdD0iW14iK29aLnJlcGxhY2UoIlxcLiIsIiIpKyJdIixJR3Q9LygoPzpXQytbXC86XSkqKS8uc291cmNlLnJlcGxhY2UoIldDIixpWiksekd0PS8oV0NPRCspPy8uc291cmNlLnJlcGxhY2UoIldDT0QiLERHdCksSEd0PS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLGlaKSxGR3Q9L1wuKFdDKykoPzpcWyguKylcXSk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLGlaKSxMR3Q9bmV3IFJlZ0V4cCgiXiIrSUd0K3pHdCtIR3QrRkd0KyIkIiksQkd0PVsibWF0ZXJpYWwiLCJtYXRlcmlhbHMiLCJib25lcyJdLFVxPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvKXtsZXQgaT1vfHx5aS5wYXJzZVRyYWNrTmFtZShlKTt0aGlzLl90YXJnZXRHcm91cD10LHRoaXMuX2JpbmRpbmdzPXQuc3Vic2NyaWJlXyhlLGkpfWdldFZhbHVlKHQsZSl7dGhpcy5iaW5kKCk7bGV0IG89dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLGk9dGhpcy5fYmluZGluZ3Nbb107aSE9PXZvaWQgMCYmaS5nZXRWYWx1ZSh0LGUpfXNldFZhbHVlKHQsZSl7bGV0IG89dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBpPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxhPW8ubGVuZ3RoO2khPT1hOysraSlvW2ldLnNldFZhbHVlKHQsZSl9YmluZCgpe2xldCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbz10Lmxlbmd0aDtlIT09bzsrK2UpdFtlXS5iaW5kKCl9dW5iaW5kKCl7bGV0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBlPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxvPXQubGVuZ3RoO2UhPT1vOysrZSl0W2VdLnVuYmluZCgpfX0seWk9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMucGF0aD1lLHRoaXMucGFyc2VkUGF0aD1vfHx5aS5wYXJzZVRyYWNrTmFtZShlKSx0aGlzLm5vZGU9eWkuZmluZE5vZGUodCx0aGlzLnBhcnNlZFBhdGgubm9kZU5hbWUpfHx0LHRoaXMucm9vdE5vZGU9dCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfXN0YXRpYyBjcmVhdGUodCxlLG8pe3JldHVybiB0JiZ0LmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA/bmV3IHlpLkNvbXBvc2l0ZSh0LGUsbyk6bmV3IHlpKHQsZSxvKX1zdGF0aWMgc2FuaXRpemVOb2RlTmFtZSh0KXtyZXR1cm4gdC5yZXBsYWNlKC9ccy9nLCJfIikucmVwbGFjZShBR3QsIiIpfXN0YXRpYyBwYXJzZVRyYWNrTmFtZSh0KXtsZXQgZT1MR3QuZXhlYyh0KTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIit0KTtsZXQgbz17bm9kZU5hbWU6ZVsyXSxvYmplY3ROYW1lOmVbM10sb2JqZWN0SW5kZXg6ZVs0XSxwcm9wZXJ0eU5hbWU6ZVs1XSxwcm9wZXJ0eUluZGV4OmVbNl19LGk9by5ub2RlTmFtZSYmby5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKGkhPT12b2lkIDAmJmkhPT0tMSl7bGV0IGE9by5ub2RlTmFtZS5zdWJzdHJpbmcoaSsxKTtCR3QuaW5kZXhPZihhKSE9PS0xJiYoby5ub2RlTmFtZT1vLm5vZGVOYW1lLnN1YnN0cmluZygwLGkpLG8ub2JqZWN0TmFtZT1hKX1pZihvLnByb3BlcnR5TmFtZT09PW51bGx8fG8ucHJvcGVydHlOYW1lLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IGNhbiBub3QgcGFyc2UgcHJvcGVydHlOYW1lIGZyb20gdHJhY2tOYW1lOiAiK3QpO3JldHVybiBvfXN0YXRpYyBmaW5kTm9kZSh0LGUpe2lmKCFlfHxlPT09IiJ8fGU9PT0iLiJ8fGU9PT0tMXx8ZT09PXQubmFtZXx8ZT09PXQudXVpZClyZXR1cm4gdDtpZih0LnNrZWxldG9uKXtsZXQgbz10LnNrZWxldG9uLmdldEJvbmVCeU5hbWUoZSk7aWYobyE9PXZvaWQgMClyZXR1cm4gb31pZih0LmNoaWxkcmVuKXtsZXQgbz1mdW5jdGlvbihhKXtmb3IobGV0IHI9MDtyPGEubGVuZ3RoO3IrKyl7bGV0IHM9YVtyXTtpZihzLm5hbWU9PT1lfHxzLnV1aWQ9PT1lKXJldHVybiBzO2xldCBsPW8ocy5jaGlsZHJlbik7aWYobClyZXR1cm4gbH1yZXR1cm4gbnVsbH0saT1vKHQuY2hpbGRyZW4pO2lmKGkpcmV0dXJuIGl9cmV0dXJuIG51bGx9X2dldFZhbHVlX3VuYXZhaWxhYmxlKCl7fV9zZXRWYWx1ZV91bmF2YWlsYWJsZSgpe31fZ2V0VmFsdWVfZGlyZWN0KHQsZSl7dFtlXT10aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV19X2dldFZhbHVlX2FycmF5KHQsZSl7bGV0IG89dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLGE9by5sZW5ndGg7aSE9PWE7KytpKXRbZSsrXT1vW2ldfV9nZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0W2VdPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdfV9nZXRWYWx1ZV90b0FycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LnRvQXJyYXkodCxlKX1fc2V0VmFsdWVfZGlyZWN0KHQsZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPXRbZV19X3NldFZhbHVlX2RpcmVjdF9zZXROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2FycmF5KHQsZSl7bGV0IG89dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgaT0wLGE9by5sZW5ndGg7aSE9PWE7KytpKW9baV09dFtlKytdfV9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSh0LGUpe2xldCBvPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxhPW8ubGVuZ3RoO2khPT1hOysraSlvW2ldPXRbZSsrXTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfYXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe2xldCBvPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IGk9MCxhPW8ubGVuZ3RoO2khPT1hOysraSlvW2ldPXRbZSsrXTt0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnQodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT10W2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfV9zZXRWYWx1ZV9hcnJheUVsZW1lbnRfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZSh0LGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPXRbZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1fc2V0VmFsdWVfZnJvbUFycmF5KHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpfV9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUodCxlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KHQsZSksdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9X3NldFZhbHVlX2Zyb21BcnJheV9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlKHQsZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheSh0LGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9X2dldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLmdldFZhbHVlKHQsZSl9X3NldFZhbHVlX3VuYm91bmQodCxlKXt0aGlzLmJpbmQoKSx0aGlzLnNldFZhbHVlKHQsZSl9YmluZCgpe2xldCB0PXRoaXMubm9kZSxlPXRoaXMucGFyc2VkUGF0aCxvPWUub2JqZWN0TmFtZSxpPWUucHJvcGVydHlOYW1lLGE9ZS5wcm9wZXJ0eUluZGV4O2lmKHR8fCh0PXlpLmZpbmROb2RlKHRoaXMucm9vdE5vZGUsZS5ub2RlTmFtZSl8fHRoaXMucm9vdE5vZGUsdGhpcy5ub2RlPXQpLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5hdmFpbGFibGUsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmF2YWlsYWJsZSwhdCl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIG5vZGUgZm9yIHRyYWNrOiAiK3RoaXMucGF0aCsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIik7cmV0dXJufWlmKG8pe2xldCBjPWUub2JqZWN0SW5kZXg7c3dpdGNoKG8pe2Nhc2UibWF0ZXJpYWxzIjppZighdC5tYXRlcmlhbCl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbWF0ZXJpYWwgYXMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWwuIix0aGlzKTtyZXR1cm59aWYoIXQubWF0ZXJpYWwubWF0ZXJpYWxzKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbC5tYXRlcmlhbHMgYXMgbm9kZS5tYXRlcmlhbCBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWxzIGFycmF5LiIsdGhpcyk7cmV0dXJufXQ9dC5tYXRlcmlhbC5tYXRlcmlhbHM7YnJlYWs7Y2FzZSJib25lcyI6aWYoIXQuc2tlbGV0b24pe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIGJvbmVzIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHNrZWxldG9uLiIsdGhpcyk7cmV0dXJufXQ9dC5za2VsZXRvbi5ib25lcztmb3IobGV0IG09MDttPHQubGVuZ3RoO20rKylpZih0W21dLm5hbWU9PT1jKXtjPW07YnJlYWt9YnJlYWs7ZGVmYXVsdDppZih0W29dPT09dm9pZCAwKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBvYmplY3ROYW1lIG9mIG5vZGUgdW5kZWZpbmVkLiIsdGhpcyk7cmV0dXJufXQ9dFtvXX1pZihjIT09dm9pZCAwKXtpZih0W2NdPT09dm9pZCAwKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byBiaW5kIHRvIG9iamVjdEluZGV4IG9mIG9iamVjdE5hbWUsIGJ1dCBpcyB1bmRlZmluZWQuIix0aGlzLHQpO3JldHVybn10PXRbY119fWxldCByPXRbaV07aWYocj09PXZvaWQgMCl7bGV0IGM9ZS5ub2RlTmFtZTtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgcHJvcGVydHkgZm9yIHRyYWNrOiAiK2MrIi4iK2krIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIsdCk7cmV0dXJufWxldCBzPXRoaXMuVmVyc2lvbmluZy5Ob25lO3RoaXMudGFyZ2V0T2JqZWN0PXQsdC5uZWVkc1VwZGF0ZSE9PXZvaWQgMD9zPXRoaXMuVmVyc2lvbmluZy5OZWVkc1VwZGF0ZTp0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUhPT12b2lkIDAmJihzPXRoaXMuVmVyc2lvbmluZy5NYXRyaXhXb3JsZE5lZWRzVXBkYXRlKTtsZXQgbD10aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtpZihhIT09dm9pZCAwKXtpZihpPT09Im1vcnBoVGFyZ2V0SW5mbHVlbmNlcyIpe2lmKCF0Lmdlb21ldHJ5KXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS4iLHRoaXMpO3JldHVybn1pZih0Lmdlb21ldHJ5LmlzQnVmZmVyR2VvbWV0cnkpe2lmKCF0Lmdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcyl7Y29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLiIsdGhpcyk7cmV0dXJufXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W2FdIT09dm9pZCAwJiYoYT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVthXSl9ZWxzZXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgb24gVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIsdGhpcyk7cmV0dXJufX1sPXRoaXMuQmluZGluZ1R5cGUuQXJyYXlFbGVtZW50LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1yLHRoaXMucHJvcGVydHlJbmRleD1hfWVsc2Ugci5mcm9tQXJyYXkhPT12b2lkIDAmJnIudG9BcnJheSE9PXZvaWQgMD8obD10aGlzLkJpbmRpbmdUeXBlLkhhc0Zyb21Ub0FycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1yKTpBcnJheS5pc0FycmF5KHIpPyhsPXRoaXMuQmluZGluZ1R5cGUuRW50aXJlQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PXIpOnRoaXMucHJvcGVydHlOYW1lPWk7dGhpcy5nZXRWYWx1ZT10aGlzLkdldHRlckJ5QmluZGluZ1R5cGVbbF0sdGhpcy5zZXRWYWx1ZT10aGlzLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nW2xdW3NdfXVuYmluZCgpe3RoaXMubm9kZT1udWxsLHRoaXMuZ2V0VmFsdWU9dGhpcy5fZ2V0VmFsdWVfdW5ib3VuZCx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYm91bmR9fTt5aS5Db21wb3NpdGU9VXE7eWkucHJvdG90eXBlLkJpbmRpbmdUeXBlPXtEaXJlY3Q6MCxFbnRpcmVBcnJheToxLEFycmF5RWxlbWVudDoyLEhhc0Zyb21Ub0FycmF5OjN9O3lpLnByb3RvdHlwZS5WZXJzaW9uaW5nPXtOb25lOjAsTmVlZHNVcGRhdGU6MSxNYXRyaXhXb3JsZE5lZWRzVXBkYXRlOjJ9O3lpLnByb3RvdHlwZS5HZXR0ZXJCeUJpbmRpbmdUeXBlPVt5aS5wcm90b3R5cGUuX2dldFZhbHVlX2RpcmVjdCx5aS5wcm90b3R5cGUuX2dldFZhbHVlX2FycmF5LHlpLnByb3RvdHlwZS5fZ2V0VmFsdWVfYXJyYXlFbGVtZW50LHlpLnByb3RvdHlwZS5fZ2V0VmFsdWVfdG9BcnJheV07eWkucHJvdG90eXBlLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nPVtbeWkucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3QseWkucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TmVlZHNVcGRhdGUseWkucHJvdG90eXBlLl9zZXRWYWx1ZV9kaXJlY3Rfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV0sW3lpLnByb3RvdHlwZS5fc2V0VmFsdWVfYXJyYXkseWkucHJvdG90eXBlLl9zZXRWYWx1ZV9hcnJheV9zZXROZWVkc1VwZGF0ZSx5aS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5X3NldE1hdHJpeFdvcmxkTmVlZHNVcGRhdGVdLFt5aS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudCx5aS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXROZWVkc1VwZGF0ZSx5aS5wcm90b3R5cGUuX3NldFZhbHVlX2FycmF5RWxlbWVudF9zZXRNYXRyaXhXb3JsZE5lZWRzVXBkYXRlXSxbeWkucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXkseWkucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TmVlZHNVcGRhdGUseWkucHJvdG90eXBlLl9zZXRWYWx1ZV9mcm9tQXJyYXlfc2V0TWF0cml4V29ybGROZWVkc1VwZGF0ZV1dO3ZhciBZcT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudXVpZD1zYigpLHRoaXMuX29iamVjdHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0aGlzLm5DYWNoZWRPYmplY3RzXz0wO2xldCB0PXt9O3RoaXMuX2luZGljZXNCeVVVSUQ9dDtmb3IobGV0IG89MCxpPWFyZ3VtZW50cy5sZW5ndGg7byE9PWk7KytvKXRbYXJndW1lbnRzW29dLnV1aWRdPW87dGhpcy5fcGF0aHM9W10sdGhpcy5fcGFyc2VkUGF0aHM9W10sdGhpcy5fYmluZGluZ3M9W10sdGhpcy5fYmluZGluZ3NJbmRpY2VzQnlQYXRoPXt9O2xldCBlPXRoaXM7dGhpcy5zdGF0cz17b2JqZWN0czp7Z2V0IHRvdGFsKCl7cmV0dXJuIGUuX29iamVjdHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdGhpcy50b3RhbC1lLm5DYWNoZWRPYmplY3RzX319LGdldCBiaW5kaW5nc1Blck9iamVjdCgpe3JldHVybiBlLl9iaW5kaW5ncy5sZW5ndGh9fX1hZGQoKXtsZXQgdD10aGlzLl9vYmplY3RzLGU9dGhpcy5faW5kaWNlc0J5VVVJRCxvPXRoaXMuX3BhdGhzLGk9dGhpcy5fcGFyc2VkUGF0aHMsYT10aGlzLl9iaW5kaW5ncyxyPWEubGVuZ3RoLHMsbD10Lmxlbmd0aCxjPXRoaXMubkNhY2hlZE9iamVjdHNfO2ZvcihsZXQgbT0wLGY9YXJndW1lbnRzLmxlbmd0aDttIT09ZjsrK20pe2xldCBwPWFyZ3VtZW50c1ttXSxnPXAudXVpZCxfPWVbZ107aWYoXz09PXZvaWQgMCl7Xz1sKyssZVtnXT1fLHQucHVzaChwKTtmb3IobGV0IE09MCx5PXI7TSE9PXk7KytNKWFbTV0ucHVzaChuZXcgeWkocCxvW01dLGlbTV0pKX1lbHNlIGlmKF88Yyl7cz10W19dO2xldCBNPS0tYyx5PXRbTV07ZVt5LnV1aWRdPV8sdFtfXT15LGVbZ109TSx0W01dPXA7Zm9yKGxldCBPPTAsYj1yO08hPT1iOysrTyl7bGV0IFI9YVtPXSxFPVJbTV0saj1SW19dO1JbX109RSxqPT09dm9pZCAwJiYoaj1uZXcgeWkocCxvW09dLGlbT10pKSxSW01dPWp9fWVsc2UgdFtfXSE9PXMmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbk9iamVjdEdyb3VwOiBEaWZmZXJlbnQgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIFVVSUQgZGV0ZWN0ZWQuIENsZWFuIHRoZSBjYWNoZXMgb3IgcmVjcmVhdGUgeW91ciBpbmZyYXN0cnVjdHVyZSB3aGVuIHJlbG9hZGluZyBzY2VuZXMuIil9dGhpcy5uQ2FjaGVkT2JqZWN0c189Y31yZW1vdmUoKXtsZXQgdD10aGlzLl9vYmplY3RzLGU9dGhpcy5faW5kaWNlc0J5VVVJRCxvPXRoaXMuX2JpbmRpbmdzLGk9by5sZW5ndGgsYT10aGlzLm5DYWNoZWRPYmplY3RzXztmb3IobGV0IHI9MCxzPWFyZ3VtZW50cy5sZW5ndGg7ciE9PXM7KytyKXtsZXQgbD1hcmd1bWVudHNbcl0sYz1sLnV1aWQsbT1lW2NdO2lmKG0hPT12b2lkIDAmJm0+PWEpe2xldCBmPWErKyxwPXRbZl07ZVtwLnV1aWRdPW0sdFttXT1wLGVbY109Zix0W2ZdPWw7Zm9yKGxldCBnPTAsXz1pO2chPT1fOysrZyl7bGV0IE09b1tnXSx5PU1bZl0sTz1NW21dO01bbV09eSxNW2ZdPU99fX10aGlzLm5DYWNoZWRPYmplY3RzXz1hfXVuY2FjaGUoKXtsZXQgdD10aGlzLl9vYmplY3RzLGU9dGhpcy5faW5kaWNlc0J5VVVJRCxvPXRoaXMuX2JpbmRpbmdzLGk9by5sZW5ndGgsYT10aGlzLm5DYWNoZWRPYmplY3RzXyxyPXQubGVuZ3RoO2ZvcihsZXQgcz0wLGw9YXJndW1lbnRzLmxlbmd0aDtzIT09bDsrK3Mpe2xldCBjPWFyZ3VtZW50c1tzXSxtPWMudXVpZCxmPWVbbV07aWYoZiE9PXZvaWQgMClpZihkZWxldGUgZVttXSxmPGEpe2xldCBwPS0tYSxnPXRbcF0sXz0tLXIsTT10W19dO2VbZy51dWlkXT1mLHRbZl09ZyxlW00udXVpZF09cCx0W3BdPU0sdC5wb3AoKTtmb3IobGV0IHk9MCxPPWk7eSE9PU87Kyt5KXtsZXQgYj1vW3ldLFI9YltwXSxFPWJbX107YltmXT1SLGJbcF09RSxiLnBvcCgpfX1lbHNle2xldCBwPS0tcixnPXRbcF07cD4wJiYoZVtnLnV1aWRdPWYpLHRbZl09Zyx0LnBvcCgpO2ZvcihsZXQgXz0wLE09aTtfIT09TTsrK18pe2xldCB5PW9bX107eVtmXT15W3BdLHkucG9wKCl9fX10aGlzLm5DYWNoZWRPYmplY3RzXz1hfXN1YnNjcmliZV8odCxlKXtsZXQgbz10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGgsaT1vW3RdLGE9dGhpcy5fYmluZGluZ3M7aWYoaSE9PXZvaWQgMClyZXR1cm4gYVtpXTtsZXQgcj10aGlzLl9wYXRocyxzPXRoaXMuX3BhcnNlZFBhdGhzLGw9dGhpcy5fb2JqZWN0cyxjPWwubGVuZ3RoLG09dGhpcy5uQ2FjaGVkT2JqZWN0c18sZj1uZXcgQXJyYXkoYyk7aT1hLmxlbmd0aCxvW3RdPWksci5wdXNoKHQpLHMucHVzaChlKSxhLnB1c2goZik7Zm9yKGxldCBwPW0sZz1sLmxlbmd0aDtwIT09ZzsrK3Ape2xldCBfPWxbcF07ZltwXT1uZXcgeWkoXyx0LGUpfXJldHVybiBmfXVuc3Vic2NyaWJlXyh0KXtsZXQgZT10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGgsbz1lW3RdO2lmKG8hPT12b2lkIDApe2xldCBpPXRoaXMuX3BhdGhzLGE9dGhpcy5fcGFyc2VkUGF0aHMscj10aGlzLl9iaW5kaW5ncyxzPXIubGVuZ3RoLTEsbD1yW3NdLGM9dFtzXTtlW2NdPW8scltvXT1sLHIucG9wKCksYVtvXT1hW3NdLGEucG9wKCksaVtvXT1pW3NdLGkucG9wKCl9fX07WXEucHJvdG90eXBlLmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA9ITA7dmFyIEdxPWNsYXNze2NvbnN0cnVjdG9yKHQsZSxvPW51bGwsaT1lLmJsZW5kTW9kZSl7dGhpcy5fbWl4ZXI9dCx0aGlzLl9jbGlwPWUsdGhpcy5fbG9jYWxSb290PW8sdGhpcy5ibGVuZE1vZGU9aTtsZXQgYT1lLnRyYWNrcyxyPWEubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGw9e2VuZGluZ1N0YXJ0OmFTLGVuZGluZ0VuZDphU307Zm9yKGxldCBjPTA7YyE9PXI7KytjKXtsZXQgbT1hW2NdLmNyZWF0ZUludGVycG9sYW50KG51bGwpO3NbY109bSxtLnNldHRpbmdzPWx9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncz1sLHRoaXMuX2ludGVycG9sYW50cz1zLHRoaXMuX3Byb3BlcnR5QmluZGluZ3M9bmV3IEFycmF5KHIpLHRoaXMuX2NhY2hlSW5kZXg9bnVsbCx0aGlzLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMubG9vcD11QnQsdGhpcy5fbG9vcENvdW50PS0xLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMudGltZT0wLHRoaXMudGltZVNjYWxlPTEsdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlPTEsdGhpcy53ZWlnaHQ9MSx0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9MSx0aGlzLnJlcGV0aXRpb25zPTEvMCx0aGlzLnBhdXNlZD0hMSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy5jbGFtcFdoZW5GaW5pc2hlZD0hMSx0aGlzLnplcm9TbG9wZUF0U3RhcnQ9ITAsdGhpcy56ZXJvU2xvcGVBdEVuZD0hMH1wbGF5KCl7cmV0dXJuIHRoaXMuX21peGVyLl9hY3RpdmF0ZUFjdGlvbih0aGlzKSx0aGlzfXN0b3AoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2RlYWN0aXZhdGVBY3Rpb24odGhpcyksdGhpcy5yZXNldCgpfXJlc2V0KCl7cmV0dXJuIHRoaXMucGF1c2VkPSExLHRoaXMuZW5hYmxlZD0hMCx0aGlzLnRpbWU9MCx0aGlzLl9sb29wQ291bnQ9LTEsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5zdG9wRmFkaW5nKCkuc3RvcFdhcnBpbmcoKX1pc1J1bm5pbmcoKXtyZXR1cm4gdGhpcy5lbmFibGVkJiYhdGhpcy5wYXVzZWQmJnRoaXMudGltZVNjYWxlIT09MCYmdGhpcy5fc3RhcnRUaW1lPT09bnVsbCYmdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfWlzU2NoZWR1bGVkKCl7cmV0dXJuIHRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX1zdGFydEF0KHQpe3JldHVybiB0aGlzLl9zdGFydFRpbWU9dCx0aGlzfXNldExvb3AodCxlKXtyZXR1cm4gdGhpcy5sb29wPXQsdGhpcy5yZXBldGl0aW9ucz1lLHRoaXN9c2V0RWZmZWN0aXZlV2VpZ2h0KHQpe3JldHVybiB0aGlzLndlaWdodD10LHRoaXMuX2VmZmVjdGl2ZVdlaWdodD10aGlzLmVuYWJsZWQ/dDowLHRoaXMuc3RvcEZhZGluZygpfWdldEVmZmVjdGl2ZVdlaWdodCgpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHR9ZmFkZUluKHQpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyh0LDAsMSl9ZmFkZU91dCh0KXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcodCwxLDApfWNyb3NzRmFkZUZyb20odCxlLG8pe2lmKHQuZmFkZU91dChlKSx0aGlzLmZhZGVJbihlKSxvKXtsZXQgaT10aGlzLl9jbGlwLmR1cmF0aW9uLGE9dC5fY2xpcC5kdXJhdGlvbixyPWEvaSxzPWkvYTt0LndhcnAoMSxyLGUpLHRoaXMud2FycChzLDEsZSl9cmV0dXJuIHRoaXN9Y3Jvc3NGYWRlVG8odCxlLG8pe3JldHVybiB0LmNyb3NzRmFkZUZyb20odGhpcyxlLG8pfXN0b3BGYWRpbmcoKXtsZXQgdD10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtyZXR1cm4gdCE9PW51bGwmJih0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KSksdGhpc31zZXRFZmZlY3RpdmVUaW1lU2NhbGUodCl7cmV0dXJuIHRoaXMudGltZVNjYWxlPXQsdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlPXRoaXMucGF1c2VkPzA6dCx0aGlzLnN0b3BXYXJwaW5nKCl9Z2V0RWZmZWN0aXZlVGltZVNjYWxlKCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZX1zZXREdXJhdGlvbih0KXtyZXR1cm4gdGhpcy50aW1lU2NhbGU9dGhpcy5fY2xpcC5kdXJhdGlvbi90LHRoaXMuc3RvcFdhcnBpbmcoKX1zeW5jV2l0aCh0KXtyZXR1cm4gdGhpcy50aW1lPXQudGltZSx0aGlzLnRpbWVTY2FsZT10LnRpbWVTY2FsZSx0aGlzLnN0b3BXYXJwaW5nKCl9aGFsdCh0KXtyZXR1cm4gdGhpcy53YXJwKHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZSwwLHQpfXdhcnAodCxlLG8pe2xldCBpPXRoaXMuX21peGVyLGE9aS50aW1lLHI9dGhpcy50aW1lU2NhbGUscz10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtzPT09bnVsbCYmKHM9aS5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PXMpO2xldCBsPXMucGFyYW1ldGVyUG9zaXRpb25zLGM9cy5zYW1wbGVWYWx1ZXM7cmV0dXJuIGxbMF09YSxsWzFdPWErbyxjWzBdPXQvcixjWzFdPWUvcix0aGlzfXN0b3BXYXJwaW5nKCl7bGV0IHQ9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7cmV0dXJuIHQhPT1udWxsJiYodGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9Z2V0TWl4ZXIoKXtyZXR1cm4gdGhpcy5fbWl4ZXJ9Z2V0Q2xpcCgpe3JldHVybiB0aGlzLl9jbGlwfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fbG9jYWxSb290fHx0aGlzLl9taXhlci5fcm9vdH1fdXBkYXRlKHQsZSxvLGkpe2lmKCF0aGlzLmVuYWJsZWQpe3RoaXMuX3VwZGF0ZVdlaWdodCh0KTtyZXR1cm59bGV0IGE9dGhpcy5fc3RhcnRUaW1lO2lmKGEhPT1udWxsKXtsZXQgbD0odC1hKSpvO2lmKGw8MHx8bz09PTApcmV0dXJuO3RoaXMuX3N0YXJ0VGltZT1udWxsLGU9bypsfWUqPXRoaXMuX3VwZGF0ZVRpbWVTY2FsZSh0KTtsZXQgcj10aGlzLl91cGRhdGVUaW1lKGUpLHM9dGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2lmKHM+MCl7bGV0IGw9dGhpcy5faW50ZXJwb2xhbnRzLGM9dGhpcy5fcHJvcGVydHlCaW5kaW5ncztzd2l0Y2godGhpcy5ibGVuZE1vZGUpe2Nhc2UgTmd0OmZvcihsZXQgbT0wLGY9bC5sZW5ndGg7bSE9PWY7KyttKWxbbV0uZXZhbHVhdGUociksY1ttXS5hY2N1bXVsYXRlQWRkaXRpdmUocyk7YnJlYWs7Y2FzZSB0WjpkZWZhdWx0OmZvcihsZXQgbT0wLGY9bC5sZW5ndGg7bSE9PWY7KyttKWxbbV0uZXZhbHVhdGUociksY1ttXS5hY2N1bXVsYXRlKGkscyl9fX1fdXBkYXRlV2VpZ2h0KHQpe2xldCBlPTA7aWYodGhpcy5lbmFibGVkKXtlPXRoaXMud2VpZ2h0O2xldCBvPXRoaXMuX3dlaWdodEludGVycG9sYW50O2lmKG8hPT1udWxsKXtsZXQgaT1vLmV2YWx1YXRlKHQpWzBdO2UqPWksdD5vLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcEZhZGluZygpLGk9PT0wJiYodGhpcy5lbmFibGVkPSExKSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9ZSxlfV91cGRhdGVUaW1lU2NhbGUodCl7bGV0IGU9MDtpZighdGhpcy5wYXVzZWQpe2U9dGhpcy50aW1lU2NhbGU7bGV0IG89dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7byE9PW51bGwmJihlKj1vLmV2YWx1YXRlKHQpWzBdLHQ+by5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BXYXJwaW5nKCksZT09PTA/dGhpcy5wYXVzZWQ9ITA6dGhpcy50aW1lU2NhbGU9ZSkpfXJldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9ZSxlfV91cGRhdGVUaW1lKHQpe2xldCBlPXRoaXMuX2NsaXAuZHVyYXRpb24sbz10aGlzLmxvb3AsaT10aGlzLnRpbWUrdCxhPXRoaXMuX2xvb3BDb3VudCxyPW89PT1oQnQ7aWYodD09PTApcmV0dXJuIGE9PT0tMT9pOnImJihhJjEpPT09MT9lLWk6aTtpZihvPT09Z0J0KXthPT09LTEmJih0aGlzLl9sb29wQ291bnQ9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLCEwLCExKSk7dDp7aWYoaT49ZSlpPWU7ZWxzZSBpZihpPDApaT0wO2Vsc2V7dGhpcy50aW1lPWk7YnJlYWsgdH10aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSx0aGlzLnRpbWU9aSx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOnQ8MD8tMToxfSl9fWVsc2V7aWYoYT09PS0xJiYodD49MD8oYT0wLHRoaXMuX3NldEVuZGluZ3MoITAsdGhpcy5yZXBldGl0aW9ucz09PTAscikpOnRoaXMuX3NldEVuZGluZ3ModGhpcy5yZXBldGl0aW9ucz09PTAsITAscikpLGk+PWV8fGk8MCl7bGV0IHM9TWF0aC5mbG9vcihpL2UpO2ktPWUqcyxhKz1NYXRoLmFicyhzKTtsZXQgbD10aGlzLnJlcGV0aXRpb25zLWE7aWYobDw9MCl0aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSxpPXQ+MD9lOjAsdGhpcy50aW1lPWksdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PjA/MTotMX0pO2Vsc2V7aWYobD09PTEpe2xldCBjPXQ8MDt0aGlzLl9zZXRFbmRpbmdzKGMsIWMscil9ZWxzZSB0aGlzLl9zZXRFbmRpbmdzKCExLCExLHIpO3RoaXMuX2xvb3BDb3VudD1hLHRoaXMudGltZT1pLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6Imxvb3AiLGFjdGlvbjp0aGlzLGxvb3BEZWx0YTpzfSl9fWVsc2UgdGhpcy50aW1lPWk7aWYociYmKGEmMSk9PT0xKXJldHVybiBlLWl9cmV0dXJuIGl9X3NldEVuZGluZ3ModCxlLG8pe2xldCBpPXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M7bz8oaS5lbmRpbmdTdGFydD1yUyxpLmVuZGluZ0VuZD1yUyk6KHQ/aS5lbmRpbmdTdGFydD10aGlzLnplcm9TbG9wZUF0U3RhcnQ/clM6YVM6aS5lbmRpbmdTdGFydD1XSCxlP2kuZW5kaW5nRW5kPXRoaXMuemVyb1Nsb3BlQXRFbmQ/clM6YVM6aS5lbmRpbmdFbmQ9V0gpfV9zY2hlZHVsZUZhZGluZyh0LGUsbyl7bGV0IGk9dGhpcy5fbWl4ZXIsYT1pLnRpbWUscj10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtyPT09bnVsbCYmKHI9aS5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PXIpO2xldCBzPXIucGFyYW1ldGVyUG9zaXRpb25zLGw9ci5zYW1wbGVWYWx1ZXM7cmV0dXJuIHNbMF09YSxsWzBdPWUsc1sxXT1hK3QsbFsxXT1vLHRoaXN9fSxXcT1jbGFzcyBleHRlbmRzIHFQe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fcm9vdD10LHRoaXMuX2luaXRNZW1vcnlNYW5hZ2VyKCksdGhpcy5fYWNjdUluZGV4PTAsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MX1fYmluZEFjdGlvbih0LGUpe2xldCBvPXQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCxpPXQuX2NsaXAudHJhY2tzLGE9aS5sZW5ndGgscj10Ll9wcm9wZXJ0eUJpbmRpbmdzLHM9dC5faW50ZXJwb2xhbnRzLGw9by51dWlkLGM9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLG09Y1tsXTttPT09dm9pZCAwJiYobT17fSxjW2xdPW0pO2ZvcihsZXQgZj0wO2YhPT1hOysrZil7bGV0IHA9aVtmXSxnPXAubmFtZSxfPW1bZ107aWYoXyE9PXZvaWQgMCkrK18ucmVmZXJlbmNlQ291bnQscltmXT1fO2Vsc2V7aWYoXz1yW2ZdLF8hPT12b2lkIDApe18uX2NhY2hlSW5kZXg9PT1udWxsJiYoKytfLnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyhfLGwsZykpO2NvbnRpbnVlfWxldCBNPWUmJmUuX3Byb3BlcnR5QmluZGluZ3NbZl0uYmluZGluZy5wYXJzZWRQYXRoO189bmV3IGpxKHlpLmNyZWF0ZShvLGcsTSkscC5WYWx1ZVR5cGVOYW1lLHAuZ2V0VmFsdWVTaXplKCkpLCsrXy5yZWZlcmVuY2VDb3VudCx0aGlzLl9hZGRJbmFjdGl2ZUJpbmRpbmcoXyxsLGcpLHJbZl09X31zW2ZdLnJlc3VsdEJ1ZmZlcj1fLmJ1ZmZlcn19X2FjdGl2YXRlQWN0aW9uKHQpe2lmKCF0aGlzLl9pc0FjdGl2ZUFjdGlvbih0KSl7aWYodC5fY2FjaGVJbmRleD09PW51bGwpe2xldCBvPSh0Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QpLnV1aWQsaT10Ll9jbGlwLnV1aWQsYT10aGlzLl9hY3Rpb25zQnlDbGlwW2ldO3RoaXMuX2JpbmRBY3Rpb24odCxhJiZhLmtub3duQWN0aW9uc1swXSksdGhpcy5fYWRkSW5hY3RpdmVBY3Rpb24odCxpLG8pfWxldCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCBvPTAsaT1lLmxlbmd0aDtvIT09aTsrK28pe2xldCBhPWVbb107YS51c2VDb3VudCsrPT09MCYmKHRoaXMuX2xlbmRCaW5kaW5nKGEpLGEuc2F2ZU9yaWdpbmFsU3RhdGUoKSl9dGhpcy5fbGVuZEFjdGlvbih0KX19X2RlYWN0aXZhdGVBY3Rpb24odCl7aWYodGhpcy5faXNBY3RpdmVBY3Rpb24odCkpe2xldCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCBvPTAsaT1lLmxlbmd0aDtvIT09aTsrK28pe2xldCBhPWVbb107LS1hLnVzZUNvdW50PT09MCYmKGEucmVzdG9yZU9yaWdpbmFsU3RhdGUoKSx0aGlzLl90YWtlQmFja0JpbmRpbmcoYSkpfXRoaXMuX3Rha2VCYWNrQWN0aW9uKHQpfX1faW5pdE1lbW9yeU1hbmFnZXIoKXt0aGlzLl9hY3Rpb25zPVtdLHRoaXMuX25BY3RpdmVBY3Rpb25zPTAsdGhpcy5fYWN0aW9uc0J5Q2xpcD17fSx0aGlzLl9iaW5kaW5ncz1bXSx0aGlzLl9uQWN0aXZlQmluZGluZ3M9MCx0aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU9e30sdGhpcy5fY29udHJvbEludGVycG9sYW50cz1bXSx0aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cz0wO2xldCB0PXRoaXM7dGhpcy5zdGF0cz17YWN0aW9uczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2FjdGlvbnMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fV9pc0FjdGl2ZUFjdGlvbih0KXtsZXQgZT10Ll9jYWNoZUluZGV4O3JldHVybiBlIT09bnVsbCYmZTx0aGlzLl9uQWN0aXZlQWN0aW9uc31fYWRkSW5hY3RpdmVBY3Rpb24odCxlLG8pe2xldCBpPXRoaXMuX2FjdGlvbnMsYT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9YVtlXTtpZihyPT09dm9pZCAwKXI9e2tub3duQWN0aW9uczpbdF0sYWN0aW9uQnlSb290Ont9fSx0Ll9ieUNsaXBDYWNoZUluZGV4PTAsYVtlXT1yO2Vsc2V7bGV0IHM9ci5rbm93bkFjdGlvbnM7dC5fYnlDbGlwQ2FjaGVJbmRleD1zLmxlbmd0aCxzLnB1c2godCl9dC5fY2FjaGVJbmRleD1pLmxlbmd0aCxpLnB1c2godCksci5hY3Rpb25CeVJvb3Rbb109dH1fcmVtb3ZlSW5hY3RpdmVBY3Rpb24odCl7bGV0IGU9dGhpcy5fYWN0aW9ucyxvPWVbZS5sZW5ndGgtMV0saT10Ll9jYWNoZUluZGV4O28uX2NhY2hlSW5kZXg9aSxlW2ldPW8sZS5wb3AoKSx0Ll9jYWNoZUluZGV4PW51bGw7bGV0IGE9dC5fY2xpcC51dWlkLHI9dGhpcy5fYWN0aW9uc0J5Q2xpcCxzPXJbYV0sbD1zLmtub3duQWN0aW9ucyxjPWxbbC5sZW5ndGgtMV0sbT10Ll9ieUNsaXBDYWNoZUluZGV4O2MuX2J5Q2xpcENhY2hlSW5kZXg9bSxsW21dPWMsbC5wb3AoKSx0Ll9ieUNsaXBDYWNoZUluZGV4PW51bGw7bGV0IGY9cy5hY3Rpb25CeVJvb3QscD0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkO2RlbGV0ZSBmW3BdLGwubGVuZ3RoPT09MCYmZGVsZXRlIHJbYV0sdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbih0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbih0KXtsZXQgZT10Ll9wcm9wZXJ0eUJpbmRpbmdzO2ZvcihsZXQgbz0wLGk9ZS5sZW5ndGg7byE9PWk7KytvKXtsZXQgYT1lW29dOy0tYS5yZWZlcmVuY2VDb3VudD09PTAmJnRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZyhhKX19X2xlbmRBY3Rpb24odCl7bGV0IGU9dGhpcy5fYWN0aW9ucyxvPXQuX2NhY2hlSW5kZXgsaT10aGlzLl9uQWN0aXZlQWN0aW9ucysrLGE9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LGEuX2NhY2hlSW5kZXg9byxlW29dPWF9X3Rha2VCYWNrQWN0aW9uKHQpe2xldCBlPXRoaXMuX2FjdGlvbnMsbz10Ll9jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQWN0aW9ucyxhPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxhLl9jYWNoZUluZGV4PW8sZVtvXT1hfV9hZGRJbmFjdGl2ZUJpbmRpbmcodCxlLG8pe2xldCBpPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxhPXRoaXMuX2JpbmRpbmdzLHI9aVtlXTtyPT09dm9pZCAwJiYocj17fSxpW2VdPXIpLHJbb109dCx0Ll9jYWNoZUluZGV4PWEubGVuZ3RoLGEucHVzaCh0KX1fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHQpe2xldCBlPXRoaXMuX2JpbmRpbmdzLG89dC5iaW5kaW5nLGk9by5yb290Tm9kZS51dWlkLGE9by5wYXRoLHI9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLHM9cltpXSxsPWVbZS5sZW5ndGgtMV0sYz10Ll9jYWNoZUluZGV4O2wuX2NhY2hlSW5kZXg9YyxlW2NdPWwsZS5wb3AoKSxkZWxldGUgc1thXSxPYmplY3Qua2V5cyhzKS5sZW5ndGg9PT0wJiZkZWxldGUgcltpXX1fbGVuZEJpbmRpbmcodCl7bGV0IGU9dGhpcy5fYmluZGluZ3Msbz10Ll9jYWNoZUluZGV4LGk9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzKyssYT1lW2ldO3QuX2NhY2hlSW5kZXg9aSxlW2ldPXQsYS5fY2FjaGVJbmRleD1vLGVbb109YX1fdGFrZUJhY2tCaW5kaW5nKHQpe2xldCBlPXRoaXMuX2JpbmRpbmdzLG89dC5fY2FjaGVJbmRleCxpPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLGE9ZVtpXTt0Ll9jYWNoZUluZGV4PWksZVtpXT10LGEuX2NhY2hlSW5kZXg9byxlW29dPWF9X2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKXtsZXQgdD10aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzLGU9dGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMrKyxvPXRbZV07cmV0dXJuIG89PT12b2lkIDAmJihvPW5ldyBmRihuZXcgRmxvYXQzMkFycmF5KDIpLG5ldyBGbG9hdDMyQXJyYXkoMiksMSx0aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzUmVzdWx0QnVmZmVyKSxvLl9fY2FjaGVJbmRleD1lLHRbZV09byksb31fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCl7bGV0IGU9dGhpcy5fY29udHJvbEludGVycG9sYW50cyxvPXQuX19jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cyxhPWVbaV07dC5fX2NhY2hlSW5kZXg9aSxlW2ldPXQsYS5fX2NhY2hlSW5kZXg9byxlW29dPWF9Y2xpcEFjdGlvbih0LGUsbyl7bGV0IGk9ZXx8dGhpcy5fcm9vdCxhPWkudXVpZCxyPXR5cGVvZiB0PT0ic3RyaW5nIj9kRi5maW5kQnlOYW1lKGksdCk6dCxzPXIhPT1udWxsP3IudXVpZDp0LGw9dGhpcy5fYWN0aW9uc0J5Q2xpcFtzXSxjPW51bGw7aWYobz09PXZvaWQgMCYmKHIhPT1udWxsP289ci5ibGVuZE1vZGU6bz10WiksbCE9PXZvaWQgMCl7bGV0IGY9bC5hY3Rpb25CeVJvb3RbYV07aWYoZiE9PXZvaWQgMCYmZi5ibGVuZE1vZGU9PT1vKXJldHVybiBmO2M9bC5rbm93bkFjdGlvbnNbMF0scj09PW51bGwmJihyPWMuX2NsaXApfWlmKHI9PT1udWxsKXJldHVybiBudWxsO2xldCBtPW5ldyBHcSh0aGlzLHIsZSxvKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihtLGMpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKG0scyxhKSxtfWV4aXN0aW5nQWN0aW9uKHQsZSl7bGV0IG89ZXx8dGhpcy5fcm9vdCxpPW8udXVpZCxhPXR5cGVvZiB0PT0ic3RyaW5nIj9kRi5maW5kQnlOYW1lKG8sdCk6dCxyPWE/YS51dWlkOnQscz10aGlzLl9hY3Rpb25zQnlDbGlwW3JdO3JldHVybiBzIT09dm9pZCAwJiZzLmFjdGlvbkJ5Um9vdFtpXXx8bnVsbH1zdG9wQWxsQWN0aW9uKCl7bGV0IHQ9dGhpcy5fYWN0aW9ucyxlPXRoaXMuX25BY3RpdmVBY3Rpb25zO2ZvcihsZXQgbz1lLTE7bz49MDstLW8pdFtvXS5zdG9wKCk7cmV0dXJuIHRoaXN9dXBkYXRlKHQpe3QqPXRoaXMudGltZVNjYWxlO2xldCBlPXRoaXMuX2FjdGlvbnMsbz10aGlzLl9uQWN0aXZlQWN0aW9ucyxpPXRoaXMudGltZSs9dCxhPU1hdGguc2lnbih0KSxyPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IGM9MDtjIT09bzsrK2MpZVtjXS5fdXBkYXRlKGksdCxhLHIpO2xldCBzPXRoaXMuX2JpbmRpbmdzLGw9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgYz0wO2MhPT1sOysrYylzW2NdLmFwcGx5KHIpO3JldHVybiB0aGlzfXNldFRpbWUodCl7dGhpcy50aW1lPTA7Zm9yKGxldCBlPTA7ZTx0aGlzLl9hY3Rpb25zLmxlbmd0aDtlKyspdGhpcy5fYWN0aW9uc1tlXS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fcm9vdH11bmNhY2hlQ2xpcCh0KXtsZXQgZT10aGlzLl9hY3Rpb25zLG89dC51dWlkLGk9dGhpcy5fYWN0aW9uc0J5Q2xpcCxhPWlbb107aWYoYSE9PXZvaWQgMCl7bGV0IHI9YS5rbm93bkFjdGlvbnM7Zm9yKGxldCBzPTAsbD1yLmxlbmd0aDtzIT09bDsrK3Mpe2xldCBjPXJbc107dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihjKTtsZXQgbT1jLl9jYWNoZUluZGV4LGY9ZVtlLmxlbmd0aC0xXTtjLl9jYWNoZUluZGV4PW51bGwsYy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLGYuX2NhY2hlSW5kZXg9bSxlW21dPWYsZS5wb3AoKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uKGMpfWRlbGV0ZSBpW29dfX11bmNhY2hlUm9vdCh0KXtsZXQgZT10LnV1aWQsbz10aGlzLl9hY3Rpb25zQnlDbGlwO2ZvcihsZXQgciBpbiBvKXtsZXQgcz1vW3JdLmFjdGlvbkJ5Um9vdCxsPXNbZV07bCE9PXZvaWQgMCYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24obCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24obCkpfWxldCBpPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZSxhPWlbZV07aWYoYSE9PXZvaWQgMClmb3IobGV0IHIgaW4gYSl7bGV0IHM9YVtyXTtzLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKHMpfX11bmNhY2hlQWN0aW9uKHQsZSl7bGV0IG89dGhpcy5leGlzdGluZ0FjdGlvbih0LGUpO28hPT1udWxsJiYodGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihvKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUFjdGlvbihvKSl9fTtXcS5wcm90b3R5cGUuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXI9bmV3IEZsb2F0MzJBcnJheSgxKTt2YXIgdzQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dHlwZW9mIHQ9PSJzdHJpbmciJiYoY29uc29sZS53YXJuKCJUSFJFRS5Vbmlmb3JtOiBUeXBlIHBhcmFtZXRlciBpcyBubyBsb25nZXIgbmVlZGVkLiIpLHQ9YXJndW1lbnRzWzFdKSx0aGlzLnZhbHVlPXR9Y2xvbmUoKXtyZXR1cm4gbmV3IHc0KHRoaXMudmFsdWUuY2xvbmU9PT12b2lkIDA/dGhpcy52YWx1ZTp0aGlzLnZhbHVlLmNsb25lKCkpfX0scXE9Y2xhc3MgZXh0ZW5kcyBGMXtjb25zdHJ1Y3Rvcih0LGUsbz0xKXtzdXBlcih0LGUpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1vfWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkodCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfWNsb25lKHQpe2xldCBlPXN1cGVyLmNsb25lKHQpO3JldHVybiBlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9dG9KU09OKHQpe2xldCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gZS5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPSEwLGUubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsZX19O3FxLnByb3RvdHlwZS5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPSEwO3ZhciBacT1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyxpLGEpe3RoaXMuYnVmZmVyPXQsdGhpcy50eXBlPWUsdGhpcy5pdGVtU2l6ZT1vLHRoaXMuZWxlbWVudFNpemU9aSx0aGlzLmNvdW50PWEsdGhpcy52ZXJzaW9uPTB9c2V0IG5lZWRzVXBkYXRlKHQpe3Q9PT0hMCYmdGhpcy52ZXJzaW9uKyt9c2V0QnVmZmVyKHQpe3JldHVybiB0aGlzLmJ1ZmZlcj10LHRoaXN9c2V0VHlwZSh0LGUpe3JldHVybiB0aGlzLnR5cGU9dCx0aGlzLmVsZW1lbnRTaXplPWUsdGhpc31zZXRJdGVtU2l6ZSh0KXtyZXR1cm4gdGhpcy5pdGVtU2l6ZT10LHRoaXN9c2V0Q291bnQodCl7cmV0dXJuIHRoaXMuY291bnQ9dCx0aGlzfX07WnEucHJvdG90eXBlLmlzR0xCdWZmZXJBdHRyaWJ1dGU9ITA7dmFyIHhndD1uZXcgU2UsajE9Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgU2UoMS8wLDEvMCksZT1uZXcgU2UoLTEvMCwtMS8wKSl7dGhpcy5taW49dCx0aGlzLm1heD1lfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsbz10Lmxlbmd0aDtlPG87ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2xldCBvPXhndC5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIobyksdGhpcy5tYXguY29weSh0KS5hZGQobyksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5taW4uY29weSh0Lm1pbiksdGhpcy5tYXguY29weSh0Lm1heCksdGhpc31tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5taW4ueD10aGlzLm1pbi55PTEvMCx0aGlzLm1heC54PXRoaXMubWF4Lnk9LTEvMCx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl9Z2V0Q2VudGVyKHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKT90LnNldCgwLDApOnQuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfWdldFNpemUodCl7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4LnkpfWNvbnRhaW5zQm94KHQpe3JldHVybiB0aGlzLm1pbi54PD10Lm1pbi54JiZ0Lm1heC54PD10aGlzLm1heC54JiZ0aGlzLm1pbi55PD10Lm1pbi55JiZ0Lm1heC55PD10aGlzLm1heC55fWdldFBhcmFtZXRlcih0LGUpe3JldHVybiBlLnNldCgodC54LXRoaXMubWluLngpLyh0aGlzLm1heC54LXRoaXMubWluLngpLCh0LnktdGhpcy5taW4ueSkvKHRoaXMubWF4LnktdGhpcy5taW4ueSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4LnkpfWNsYW1wUG9pbnQodCxlKXtyZXR1cm4gZS5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX1kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHhndC5jb3B5KHQpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIodCkubGVuZ3RoKCl9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX07ajEucHJvdG90eXBlLmlzQm94Mj0hMDt2YXIgdmd0PW5ldyBwdCxWSD1uZXcgcHQsWHE9Y2xhc3N7Y29uc3RydWN0b3IodD1uZXcgcHQsZT1uZXcgcHQpe3RoaXMuc3RhcnQ9dCx0aGlzLmVuZD1lfXNldCh0LGUpe3JldHVybiB0aGlzLnN0YXJ0LmNvcHkodCksdGhpcy5lbmQuY29weShlKSx0aGlzfWNvcHkodCl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0LnN0YXJ0KSx0aGlzLmVuZC5jb3B5KHQuZW5kKSx0aGlzfWdldENlbnRlcih0KXtyZXR1cm4gdC5hZGRWZWN0b3JzKHRoaXMuc3RhcnQsdGhpcy5lbmQpLm11bHRpcGx5U2NhbGFyKC41KX1kZWx0YSh0KXtyZXR1cm4gdC5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpfWRpc3RhbmNlU3EoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmVuZCl9ZGlzdGFuY2UoKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvKHRoaXMuZW5kKX1hdCh0LGUpe3JldHVybiB0aGlzLmRlbHRhKGUpLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnN0YXJ0KX1jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSl7dmd0LnN1YlZlY3RvcnModCx0aGlzLnN0YXJ0KSxWSC5zdWJWZWN0b3JzKHRoaXMuZW5kLHRoaXMuc3RhcnQpO2xldCBvPVZILmRvdChWSCksYT1WSC5kb3Qodmd0KS9vO3JldHVybiBlJiYoYT1rZChhLDAsMSkpLGF9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LGUsbyl7bGV0IGk9dGhpcy5jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSk7cmV0dXJuIHRoaXMuZGVsdGEobykubXVsdGlwbHlTY2FsYXIoaSkuYWRkKHRoaXMuc3RhcnQpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5zdGFydC5hcHBseU1hdHJpeDQodCksdGhpcy5lbmQuYXBwbHlNYXRyaXg0KHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnN0YXJ0LmVxdWFscyh0aGlzLnN0YXJ0KSYmdC5lbmQuZXF1YWxzKHRoaXMuZW5kKX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3RvcigpLmNvcHkodGhpcyl9fTt2YXIgQXg9bmV3IHB0LGpIPW5ldyBlbyxIVz1uZXcgZW8sUXE9Y2xhc3MgZXh0ZW5kcyBoNHtjb25zdHJ1Y3Rvcih0KXtsZXQgZT1RZ3QodCksbz1uZXcgdGEsaT1bXSxhPVtdLHI9bmV3IHpuKDAsMCwxKSxzPW5ldyB6bigwLDEsMCk7Zm9yKGxldCBjPTA7YzxlLmxlbmd0aDtjKyspe2xldCBtPWVbY107bS5wYXJlbnQmJm0ucGFyZW50LmlzQm9uZSYmKGkucHVzaCgwLDAsMCksaS5wdXNoKDAsMCwwKSxhLnB1c2goci5yLHIuZyxyLmIpLGEucHVzaChzLnIscy5nLHMuYikpfW8uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IE5yKGksMykpLG8uc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IE5yKGEsMykpO2xldCBsPW5ldyBRUCh7dmVydGV4Q29sb3JzOiEwLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLHRvbmVNYXBwZWQ6ITEsdHJhbnNwYXJlbnQ6ITB9KTtzdXBlcihvLGwpLHRoaXMudHlwZT0iU2tlbGV0b25IZWxwZXIiLHRoaXMuaXNTa2VsZXRvbkhlbHBlcj0hMCx0aGlzLnJvb3Q9dCx0aGlzLmJvbmVzPWUsdGhpcy5tYXRyaXg9dC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITF9dXBkYXRlTWF0cml4V29ybGQodCl7bGV0IGU9dGhpcy5ib25lcyxvPXRoaXMuZ2VvbWV0cnksaT1vLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtIVy5jb3B5KHRoaXMucm9vdC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7Zm9yKGxldCBhPTAscj0wO2E8ZS5sZW5ndGg7YSsrKXtsZXQgcz1lW2FdO3MucGFyZW50JiZzLnBhcmVudC5pc0JvbmUmJihqSC5tdWx0aXBseU1hdHJpY2VzKEhXLHMubWF0cml4V29ybGQpLEF4LnNldEZyb21NYXRyaXhQb3NpdGlvbihqSCksaS5zZXRYWVoocixBeC54LEF4LnksQXgueiksakgubXVsdGlwbHlNYXRyaWNlcyhIVyxzLnBhcmVudC5tYXRyaXhXb3JsZCksQXguc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGpIKSxpLnNldFhZWihyKzEsQXgueCxBeC55LEF4LnopLHIrPTIpfW8uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwLHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfX07ZnVuY3Rpb24gUWd0KG4pe2xldCB0PVtdO24mJm4uaXNCb25lJiZ0LnB1c2gobik7Zm9yKGxldCBlPTA7ZTxuLmNoaWxkcmVuLmxlbmd0aDtlKyspdC5wdXNoLmFwcGx5KHQsUWd0KG4uY2hpbGRyZW5bZV0pKTtyZXR1cm4gdH12YXIgS3E9Y2xhc3MgZXh0ZW5kcyBoNHtjb25zdHJ1Y3Rvcih0PTEwLGU9MTAsbz00NDczOTI0LGk9ODk0Nzg0OCl7bz1uZXcgem4obyksaT1uZXcgem4oaSk7bGV0IGE9ZS8yLHI9dC9lLHM9dC8yLGw9W10sYz1bXTtmb3IobGV0IHA9MCxnPTAsXz0tcztwPD1lO3ArKyxfKz1yKXtsLnB1c2goLXMsMCxfLHMsMCxfKSxsLnB1c2goXywwLC1zLF8sMCxzKTtsZXQgTT1wPT09YT9vOmk7TS50b0FycmF5KGMsZyksZys9MyxNLnRvQXJyYXkoYyxnKSxnKz0zLE0udG9BcnJheShjLGcpLGcrPTMsTS50b0FycmF5KGMsZyksZys9M31sZXQgbT1uZXcgdGE7bS5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgTnIobCwzKSksbS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgTnIoYywzKSk7bGV0IGY9bmV3IFFQKHt2ZXJ0ZXhDb2xvcnM6ITAsdG9uZU1hcHBlZDohMX0pO3N1cGVyKG0sZiksdGhpcy50eXBlPSJHcmlkSGVscGVyIn19O3ZhciBWR3Q9bmV3IEZsb2F0MzJBcnJheSgxKSxkVWU9bmV3IEludDMyQXJyYXkoVkd0LmJ1ZmZlcik7VGQuY3JlYXRlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGNvbnNvbGUubG9nKCJUSFJFRS5DdXJ2ZS5jcmVhdGUoKSBoYXMgYmVlbiBkZXByZWNhdGVkIiksbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShUZC5wcm90b3R5cGUpLG4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW4sbi5wcm90b3R5cGUuZ2V0UG9pbnQ9dCxufTtiNC5wcm90b3R5cGUuZnJvbVBvaW50cz1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXRoOiAuZnJvbVBvaW50cygpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21Qb2ludHMoKS4iKSx0aGlzLnNldEZyb21Qb2ludHMobil9O0txLnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HcmlkSGVscGVyOiBzZXRDb2xvcnMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLCBwYXNzIHRoZW0gaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQuIil9O1FxLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2VsZXRvbkhlbHBlcjogdXBkYXRlKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIGNhbGxlZC4iKX07QU8ucHJvdG90eXBlLmV4dHJhY3RVcmxCYXNlPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxvYWRlcjogLmV4dHJhY3RVcmxCYXNlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkxvYWRlclV0aWxzLmV4dHJhY3RVcmxCYXNlKCkgaW5zdGVhZC4iKSxEcS5leHRyYWN0VXJsQmFzZShuKX07QU8uSGFuZGxlcnM9e2FkZDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuYWRkKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmFkZEhhbmRsZXIoKSBpbnN0ZWFkLiIpfSxnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmdldCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5nZXRIYW5kbGVyKCkgaW5zdGVhZC4iKX19O2oxLnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKG4pfTtqMS5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9O2oxLnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkJveD1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KG4pfTtqMS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4iKSx0aGlzLmdldFNpemUobil9O29oLnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpLHRoaXMuZ2V0Q2VudGVyKG4pfTtvaC5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9O29oLnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkJveD1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KG4pfTtvaC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25TcGhlcmU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShuKX07b2gucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKG4pfTtCeC5wcm90b3R5cGUuZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX07aFMucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgobil9O1hxLnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTGluZTM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcihuKX07bWwucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkobix0KX07bWwucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yMz1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksbi5hcHBseU1hdHJpeDModGhpcyl9O21sLnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5tdWx0aXBseVZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O21sLnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksbi5hcHBseU1hdHJpeDModGhpcyl9O21sLnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTttbC5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KG4pLmludmVydCgpfTtlby5wcm90b3R5cGUuZXh0cmFjdFBvc2l0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5leHRyYWN0UG9zaXRpb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5jb3B5UG9zaXRpb24oKS4iKSx0aGlzLmNvcHlQb3NpdGlvbihuKX07ZW8ucHJvdG90eXBlLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkobix0KX07ZW8ucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpLG5ldyBwdCgpLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywzKX07ZW8ucHJvdG90eXBlLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24obil9O2VvLnByb3RvdHlwZS5tdWx0aXBseVRvQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVRvQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtlby5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSxuLmFwcGx5TWF0cml4NCh0aGlzKX07ZW8ucHJvdG90eXBlLm11bHRpcGx5VmVjdG9yND1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksbi5hcHBseU1hdHJpeDQodGhpcyl9O2VvLnByb3RvdHlwZS5tdWx0aXBseVZlY3RvcjNBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O2VvLnByb3RvdHlwZS5yb3RhdGVBeGlzPWZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy50cmFuc2Zvcm1EaXJlY3Rpb24oIG1hdHJpeCApIGluc3RlYWQuIiksbi50cmFuc2Zvcm1EaXJlY3Rpb24odGhpcyl9O2VvLnByb3RvdHlwZS5jcm9zc1ZlY3Rvcj1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSxuLmFwcGx5TWF0cml4NCh0aGlzKX07ZW8ucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtlby5wcm90b3R5cGUucm90YXRlWD1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVYKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZW8ucHJvdG90eXBlLnJvdGF0ZVk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O2VvLnByb3RvdHlwZS5yb3RhdGVaPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVooKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtlby5wcm90b3R5cGUucm90YXRlQnlBeGlzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUJ5QXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9O2VvLnByb3RvdHlwZS5hcHBseVRvQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksbi5hcHBseU1hdHJpeDQodGhpcyl9O2VvLnByb3RvdHlwZS5hcHBseVRvVmVjdG9yM0FycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtlby5wcm90b3R5cGUubWFrZUZydXN0dW09ZnVuY3Rpb24obix0LGUsbyxpLGEpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlRnJ1c3R1bSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAubWFrZVBlcnNwZWN0aXZlKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApIGluc3RlYWQuIiksdGhpcy5tYWtlUGVyc3BlY3RpdmUobix0LG8sZSxpLGEpfTtlby5wcm90b3R5cGUuZ2V0SW52ZXJzZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KG4pLmludmVydCgpfTtyYi5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25MaW5lPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAuaXNJbnRlcnNlY3Rpb25MaW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0xpbmUoKS4iKSx0aGlzLmludGVyc2VjdHNMaW5lKG4pfTtSbS5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgaXMgbm93IHZlY3Rvci5hcHBseVF1YXRlcm5pb24oIHF1YXRlcm5pb24gKSBpbnN0ZWFkLiIpLG4uYXBwbHlRdWF0ZXJuaW9uKHRoaXMpfTtSbS5wcm90b3R5cGUuaW52ZXJzZT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfTtWeC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25Cb3g9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KG4pfTtWeC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25QbGFuZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1BsYW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzUGxhbmUobil9O1Z4LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvblNwaGVyZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUobil9O1hyLnByb3RvdHlwZS5hcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5hcmVhKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QXJlYSgpLiIpLHRoaXMuZ2V0QXJlYSgpfTtYci5wcm90b3R5cGUuYmFyeWNvb3JkRnJvbVBvaW50PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSx0aGlzLmdldEJhcnljb29yZChuLHQpfTtYci5wcm90b3R5cGUubWlkcG9pbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludChuKX07WHIucHJvdG90eXBlbm9ybWFsPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubm9ybWFsKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Tm9ybWFsKCkuIiksdGhpcy5nZXROb3JtYWwobil9O1hyLnByb3RvdHlwZS5wbGFuZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLnBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0UGxhbmUoKS4iKSx0aGlzLmdldFBsYW5lKG4pfTtYci5iYXJ5Y29vcmRGcm9tUG9pbnQ9ZnVuY3Rpb24obix0LGUsbyxpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmJhcnljb29yZEZyb21Qb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEJhcnljb29yZCgpLiIpLFhyLmdldEJhcnljb29yZChuLHQsZSxvLGkpfTtYci5ub3JtYWw9ZnVuY3Rpb24obix0LGUsbyl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSxYci5nZXROb3JtYWwobix0LGUsbyl9O0tQLnByb3RvdHlwZS5leHRyYWN0QWxsUG9pbnRzPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cmFjdEFsbFBvaW50cygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZXh0cmFjdFBvaW50cygpIGluc3RlYWQuIiksdGhpcy5leHRyYWN0UG9pbnRzKG4pfTtLUC5wcm90b3R5cGUuZXh0cnVkZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJ1ZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXh0cnVkZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgWXgodGhpcyxuKX07S1AucHJvdG90eXBlLm1ha2VHZW9tZXRyeT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLm1ha2VHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBTaGFwZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgQjEodGhpcyxuKX07U2UucHJvdG90eXBlLmZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24obix0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHQsZSl9O1NlLnByb3RvdHlwZS5kaXN0YW5jZVRvTWFuaGF0dGFuPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpLHRoaXMubWFuaGF0dGFuRGlzdGFuY2VUbyhuKX07U2UucHJvdG90eXBlLmxlbmd0aE1hbmhhdHRhbj1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfTtwdC5wcm90b3R5cGUuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUm90YXRpb25NYXRyaXgoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgaW5zdGVhZC4iKX07cHQucHJvdG90eXBlLnNldEV1bGVyRnJvbVF1YXRlcm5pb249ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUXVhdGVybmlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFdWxlci5zZXRGcm9tUXVhdGVybmlvbigpIGluc3RlYWQuIil9O3B0LnByb3RvdHlwZS5nZXRQb3NpdGlvbkZyb21NYXRyaXg9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFBvc2l0aW9uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhQb3NpdGlvbigpLiIpLHRoaXMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG4pfTtwdC5wcm90b3R5cGUuZ2V0U2NhbGVGcm9tTWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5nZXRTY2FsZUZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4U2NhbGUoKS4iKSx0aGlzLnNldEZyb21NYXRyaXhTY2FsZShuKX07cHQucHJvdG90eXBlLmdldENvbHVtbkZyb21NYXRyaXg9ZnVuY3Rpb24obix0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0Q29sdW1uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhDb2x1bW4oKS4iKSx0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCxuKX07cHQucHJvdG90eXBlLmFwcGx5UHJvamVjdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlQcm9qZWN0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5hcHBseU1hdHJpeDQoIG0gKSBpbnN0ZWFkLiIpLHRoaXMuYXBwbHlNYXRyaXg0KG4pfTtwdC5wcm90b3R5cGUuZnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihuLHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKG4sdCxlKX07cHQucHJvdG90eXBlLmRpc3RhbmNlVG9NYW5oYXR0YW49ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKG4pfTtwdC5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9O2NhLnByb3RvdHlwZS5mcm9tQXR0cmlidXRlPWZ1bmN0aW9uKG4sdCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLmZyb21CdWZmZXJBdHRyaWJ1dGUobix0LGUpfTtjYS5wcm90b3R5cGUubGVuZ3RoTWFuaGF0dGFuPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9O1ZpLnByb3RvdHlwZS5nZXRDaGlsZEJ5TmFtZT1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldENoaWxkQnlOYW1lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0T2JqZWN0QnlOYW1lKCkuIiksdGhpcy5nZXRPYmplY3RCeU5hbWUobil9O1ZpLnByb3RvdHlwZS5yZW5kZXJEZXB0aD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfTtWaS5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnRyYW5zbGF0ZU9uQXhpcyggYXhpcywgZGlzdGFuY2UgKSBpbnN0ZWFkLiIpLHRoaXMudHJhbnNsYXRlT25BeGlzKHQsbil9O1ZpLnByb3RvdHlwZS5nZXRXb3JsZFJvdGF0aW9uPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFJvdGF0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLk9iamVjdDNELmdldFdvcmxkUXVhdGVybmlvbiggdGFyZ2V0ICkgaW5zdGVhZC4iKX07VmkucHJvdG90eXBlLmFwcGx5TWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NChuKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVmkucHJvdG90eXBlLHtldWxlck9yZGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyPW59fSx1c2VRdWF0ZXJuaW9uOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfX19KTtZcy5wcm90b3R5cGUuc2V0RHJhd01vZGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuc2V0RHJhd01vZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhZcy5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksX0J0fSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuZHJhd01vZGUgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4gVHJhbnNmb3JtIHlvdXIgZ2VvbWV0cnkgdmlhIEJ1ZmZlckdlb21ldHJ5VXRpbHMudG9UcmlhbmdsZXNEcmF3TW9kZSgpIGlmIG5lY2Vzc2FyeS4iKX19fSk7aUYucHJvdG90eXBlLmluaXRCb25lcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoOiBpbml0Qm9uZXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtTbS5wcm90b3R5cGUuc2V0TGVucz1mdW5jdGlvbihuLHQpe2NvbnNvbGUud2FybigiVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEuc2V0TGVucyBpcyBkZXByZWNhdGVkLiBVc2UgLnNldEZvY2FsTGVuZ3RoIGFuZCAuZmlsbUdhdWdlIGZvciBhIHBob3RvZ3JhcGhpYyBzZXR1cC4iKSx0IT09dm9pZCAwJiYodGhpcy5maWxtR2F1Z2U9dCksdGhpcy5zZXRGb2NhbExlbmd0aChuKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWTAucHJvdG90eXBlLHtvbmx5U2hhZG93OntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAub25seVNoYWRvdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93Q2FtZXJhRm92OntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZvdiBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZm92LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mb3Y9bn19LHNoYWRvd0NhbWVyYUxlZnQ6e3NldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTGVmdCBpcyBub3cgLnNoYWRvdy5jYW1lcmEubGVmdC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubGVmdD1ufX0sc2hhZG93Q2FtZXJhUmlnaHQ6e3NldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhUmlnaHQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnJpZ2h0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5yaWdodD1ufX0sc2hhZG93Q2FtZXJhVG9wOntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVRvcCBpcyBub3cgLnNoYWRvdy5jYW1lcmEudG9wLiIpLHRoaXMuc2hhZG93LmNhbWVyYS50b3A9bn19LHNoYWRvd0NhbWVyYUJvdHRvbTp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFCb3R0b20gaXMgbm93IC5zaGFkb3cuY2FtZXJhLmJvdHRvbS4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuYm90dG9tPW59fSxzaGFkb3dDYW1lcmFOZWFyOntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYU5lYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLm5lYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLm5lYXI9bn19LHNoYWRvd0NhbWVyYUZhcjp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZmFyPW59fSxzaGFkb3dDYW1lcmFWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVmlzaWJsZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkNhbWVyYUhlbHBlciggbGlnaHQuc2hhZG93LmNhbWVyYSApIGluc3RlYWQuIil9fSxzaGFkb3dCaWFzOntzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0JpYXMgaXMgbm93IC5zaGFkb3cuYmlhcy4iKSx0aGlzLnNoYWRvdy5iaWFzPW59fSxzaGFkb3dEYXJrbmVzczp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0RhcmtuZXNzIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dNYXBXaWR0aDp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBXaWR0aCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLndpZHRoLiIpLHRoaXMuc2hhZG93Lm1hcFNpemUud2lkdGg9bn19LHNoYWRvd01hcEhlaWdodDp7c2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBIZWlnaHQgaXMgbm93IC5zaGFkb3cubWFwU2l6ZS5oZWlnaHQuIiksdGhpcy5zaGFkb3cubWFwU2l6ZS5oZWlnaHQ9bn19fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoT3IucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuIiksdGhpcy5hcnJheS5sZW5ndGh9fSxkeW5hbWljOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnVzYWdlPT09cUh9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShxSCl9fX0pO09yLnByb3RvdHlwZS5zZXREeW5hbWljPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKG49PT0hMD9xSDppNCksdGhpc307T3IucHJvdG90eXBlLmNvcHlJbmRpY2VzQXJyYXk9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5jb3B5SW5kaWNlc0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sT3IucHJvdG90eXBlLnNldEFycmF5PWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX07dGEucHJvdG90eXBlLmFkZEluZGV4PWZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRJbmRleCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEluZGV4KCkuIiksdGhpcy5zZXRJbmRleChuKX07dGEucHJvdG90eXBlLmFkZEF0dHJpYnV0ZT1mdW5jdGlvbihuLHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0QXR0cmlidXRlKCkuIiksISh0JiZ0LmlzQnVmZmVyQXR0cmlidXRlKSYmISh0JiZ0LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpPyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4iKSx0aGlzLnNldEF0dHJpYnV0ZShuLG5ldyBPcihhcmd1bWVudHNbMV0sYXJndW1lbnRzWzJdKSkpOm49PT0iaW5kZXgiPyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LmFkZEF0dHJpYnV0ZTogVXNlIC5zZXRJbmRleCgpIGZvciBpbmRleCBhdHRyaWJ1dGUuIiksdGhpcy5zZXRJbmRleCh0KSx0aGlzKTp0aGlzLnNldEF0dHJpYnV0ZShuLHQpfTt0YS5wcm90b3R5cGUuYWRkRHJhd0NhbGw9ZnVuY3Rpb24obix0LGUpe2UhPT12b2lkIDAmJmNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIG5vIGxvbmdlciBzdXBwb3J0cyBpbmRleE9mZnNldC4iKSxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBpcyBub3cgLmFkZEdyb3VwKCkuIiksdGhpcy5hZGRHcm91cChuLHQpfTt0YS5wcm90b3R5cGUuY2xlYXJEcmF3Q2FsbHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY2xlYXJEcmF3Q2FsbHMoKSBpcyBub3cgLmNsZWFyR3JvdXBzKCkuIiksdGhpcy5jbGVhckdyb3VwcygpfTt0YS5wcm90b3R5cGUuY29tcHV0ZU9mZnNldHM9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZU9mZnNldHMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTt0YS5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlPWZ1bmN0aW9uKG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAucmVtb3ZlQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZGVsZXRlQXR0cmlidXRlKCkuIiksdGhpcy5kZWxldGVBdHRyaWJ1dGUobil9O3RhLnByb3RvdHlwZS5hcHBseU1hdHJpeD1mdW5jdGlvbihuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQobil9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhLnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSk7RjEucHJvdG90eXBlLnNldER5bmFtaWM9ZnVuY3Rpb24obil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5zZXREeW5hbWljKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRVc2FnZSgpIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShuPT09ITA/cUg6aTQpLHRoaXN9O0YxLnByb3RvdHlwZS5zZXRBcnJheT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX07WXgucHJvdG90eXBlLmdldEFycmF5cz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmdldEFycmF5cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9O1l4LnByb3RvdHlwZS5hZGRTaGFwZUxpc3Q9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtZeC5wcm90b3R5cGUuYWRkU2hhcGU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O0NTLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmU6IC5kaXNwb3NlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07dzQucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLm9uVXBkYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIiksdGhpc307T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoSWwucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyB6bn19LHNoYWRpbmc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9bj09PVNndH19LHN0ZW5jaWxNYXNrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFza30sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIiksdGhpcy5zdGVuY2lsRnVuY01hc2s9bn19LHZlcnRleFRhbmdlbnRzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC52ZXJ0ZXhUYW5nZW50cyBoYXMgYmVlbiByZW1vdmVkLiIpfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhYUC5wcm90b3R5cGUse2Rlcml2YXRpdmVzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc30sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPW59fX0pO2VhLnByb3RvdHlwZS5jbGVhclRhcmdldD1mdW5jdGlvbihuLHQsZSxvKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jbGVhclRhcmdldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0UmVuZGVyVGFyZ2V0KCkgYW5kIC5jbGVhcigpIGluc3RlYWQuIiksdGhpcy5zZXRSZW5kZXJUYXJnZXQobiksdGhpcy5jbGVhcih0LGUsbyl9O2VhLnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFuaW1hdGUoKSBpcyBub3cgLnNldEFuaW1hdGlvbkxvb3AoKS4iKSx0aGlzLnNldEFuaW1hdGlvbkxvb3Aobil9O2VhLnByb3RvdHlwZS5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpLHRoaXMuZ2V0UmVuZGVyVGFyZ2V0KCl9O2VhLnByb3RvdHlwZS5nZXRNYXhBbmlzb3Ryb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldE1heEFuaXNvdHJvcHkoKSBpcyBub3cgLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCkuIiksdGhpcy5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpfTtlYS5wcm90b3R5cGUuZ2V0UHJlY2lzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldFByZWNpc2lvbigpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnByZWNpc2lvbi4iKSx0aGlzLmNhcGFiaWxpdGllcy5wcmVjaXNpb259O2VhLnByb3RvdHlwZS5yZXNldEdMU3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLiIpLHRoaXMuc3RhdGUucmVzZXQoKX07ZWEucHJvdG90eXBlLnN1cHBvcnRzRmxvYXRUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0Zsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKX07ZWEucHJvdG90eXBlLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKX07ZWEucHJvdG90eXBlLnN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfTtlYS5wcm90b3R5cGUuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEM9ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKX07ZWEucHJvdG90eXBlLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUFZSVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfTtlYS5wcm90b3R5cGUuc3VwcG9ydHNCbGVuZE1pbk1heD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiRVhUX2JsZW5kX21pbm1heCIpfTtlYS5wcm90b3R5cGUuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1ZlcnRleFRleHR1cmVzKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXMuIiksdGhpcy5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXN9O2VhLnByb3RvdHlwZS5zdXBwb3J0c0luc3RhbmNlZEFycmF5cz1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0luc3RhbmNlZEFycmF5cygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKX07ZWEucHJvdG90eXBlLmVuYWJsZVNjaXNzb3JUZXN0PWZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpLHRoaXMuc2V0U2Npc3NvclRlc3Qobil9O2VhLnByb3RvdHlwZS5pbml0TWF0ZXJpYWw9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5pbml0TWF0ZXJpYWwoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtlYS5wcm90b3R5cGUuYWRkUHJlUGx1Z2luPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUHJlUGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZWEucHJvdG90eXBlLmFkZFBvc3RQbHVnaW49ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZWEucHJvdG90eXBlLnVwZGF0ZVNoYWRvd01hcD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnVwZGF0ZVNoYWRvd01hcCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O2VhLnByb3RvdHlwZS5zZXRGYWNlQ3VsbGluZz1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldEZhY2VDdWxsaW5nKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZWEucHJvdG90eXBlLmFsbG9jVGV4dHVyZVVuaXQ9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZWEucHJvdG90eXBlLnNldFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZWEucHJvdG90eXBlLnNldFRleHR1cmUyRD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUyRCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9O2VhLnByb3RvdHlwZS5zZXRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmVDdWJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX07ZWEucHJvdG90eXBlLmdldEFjdGl2ZU1pcE1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEFjdGl2ZU1pcE1hcExldmVsKCkgaXMgbm93IC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLiIpLHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZWEucHJvdG90eXBlLHtzaGFkb3dNYXBFbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAuZW5hYmxlZH0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4iKSx0aGlzLnNoYWRvd01hcC5lbmFibGVkPW59fSxzaGFkb3dNYXBUeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZX0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcFR5cGUgaXMgbm93IC5zaGFkb3dNYXAudHlwZS4iKSx0aGlzLnNoYWRvd01hcC50eXBlPW59fSxzaGFkb3dNYXBDdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LGNvbnRleHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZ2V0Q29udGV4dCgpIGluc3RlYWQuIiksdGhpcy5nZXRDb250ZXh0KCl9fSx2cjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnZyIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnhyIiksdGhpcy54cn19LGdhbW1hSW5wdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUlucHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCB0aGUgZW5jb2RpbmcgZm9yIHRleHR1cmVzIHZpYSBUZXh0dXJlLmVuY29kaW5nIGluc3RlYWQuIiksITF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKX19LGdhbW1hT3V0cHV0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hT3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCBXZWJHTFJlbmRlcmVyLm91dHB1dEVuY29kaW5nIGluc3RlYWQuIiksdGhpcy5vdXRwdXRFbmNvZGluZz1uPT09ITA/TXI6THh9fSx0b25lTWFwcGluZ1doaXRlUG9pbnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC50b25lTWFwcGluZ1doaXRlUG9pbnQgaGFzIGJlZW4gcmVtb3ZlZC4iKSwxfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC50b25lTWFwcGluZ1doaXRlUG9pbnQgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LGdhbW1hRmFjdG9yOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFGYWN0b3IgaGFzIGJlZW4gcmVtb3ZlZC4iKSwyfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUZhY3RvciBoYXMgYmVlbiByZW1vdmVkLiIpfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhZZ3QucHJvdG90eXBlLHtjdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyUmV2ZXJzZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LHJlbmRlclNpbmdsZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE5kLnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPW59fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9bn19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9bn19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24obil7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9bn19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PW59fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PW59fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PW59fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKG4pe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PW59fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT1ufX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1ufX19KTtCcS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihuKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4iKTtsZXQgdD10aGlzO3JldHVybiBuZXcgSHEoKS5sb2FkKG4sZnVuY3Rpb24obyl7dC5zZXRCdWZmZXIobyl9KSx0aGlzfTtWcS5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvQW5hbHlzZXI6IC5nZXREYXRhKCkgaXMgbm93IC5nZXRGcmVxdWVuY3lEYXRhKCkuIiksdGhpcy5nZXRGcmVxdWVuY3lEYXRhKCl9O2w0LnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLiIpLHRoaXMudXBkYXRlKG4sdCl9O2w0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbihuLHQsZSxvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAuY2xlYXIoKSBpcyBub3cgLnJlbmRlclRhcmdldC5jbGVhcigpLiIpLHRoaXMucmVuZGVyVGFyZ2V0LmNsZWFyKG4sdCxlLG8pfTtaUC5jcm9zc09yaWdpbj12b2lkIDA7WlAubG9hZFRleHR1cmU9ZnVuY3Rpb24obix0LGUsbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5UZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtsZXQgaT1uZXcgU3E7aS5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtsZXQgYT1pLmxvYWQobixlLHZvaWQgMCxvKTtyZXR1cm4gdCYmKGEubWFwcGluZz10KSxhfTtaUC5sb2FkVGV4dHVyZUN1YmU9ZnVuY3Rpb24obix0LGUsbyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ3ViZVRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2xldCBpPW5ldyB3cTtpLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2xldCBhPWkubG9hZChuLGUsdm9pZCAwLG8pO3JldHVybiB0JiYoYS5tYXBwaW5nPXQpLGF9O1pQLmxvYWRDb21wcmVzc2VkVGV4dHVyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX07WlAubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkltYWdlVXRpbHMubG9hZENvbXByZXNzZWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O3R5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18hPSJ1bmRlZmluZWQiJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlZ2lzdGVyIix7ZGV0YWlsOntyZXZpc2lvbjpKcX19KSk7dHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJih3aW5kb3cuX19USFJFRV9fP2NvbnNvbGUud2FybigiV0FSTklORzogTXVsdGlwbGUgaW5zdGFuY2VzIG9mIFRocmVlLmpzIGJlaW5nIGltcG9ydGVkLiIpOndpbmRvdy5fX1RIUkVFX189SnEpO2Z1bmN0aW9uIGFaKG4sdCxlKXtpZihlPT09MSlyZXR1cm4gbmV3IHpuKHQpO2xldCBvPWMxKHQpO2lmKCFvKXRocm93IG5ldyBFcnJvcihgZDMgZmFpbGVkIHRvIHJlY29nbml6ZSB0aGUgY29sb3I6ICR7dH1gKTtyZXR1cm4gbmV3IHpuKGpHKG8sbikoMS1lKSl9dmFyIERPOyhmdW5jdGlvbihuKXtuW24uQ0lSQ0xFPTBdPSJDSVJDTEUiLG5bbi5MSU5FPTFdPSJMSU5FIixuW24uVFJJQU5HTEU9Ml09IlRSSUFOR0xFIixuW24uVFJBUEVaT0lEPTNdPSJUUkFQRVpPSUQifSkoRE98fChETz17fSkpO2Z1bmN0aW9uIEpndChuLHQpe2xldCBlPXQubGVuZ3RoLzIsbz1uLmF0dHJpYnV0ZXMucG9zaXRpb247KCFvfHxvLmNvdW50IT09ZSozKSYmKG89bmV3IE9yKG5ldyBGbG9hdDMyQXJyYXkoZSozKSwzKSxuLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG8pKTtsZXQgaT1vLmFycmF5O2ZvcihsZXQgYT0wO2E8ZTthKyspaVthKjNdPXRbYSoyXSxpW2EqMysxXT10W2EqMisxXTtvLm5lZWRzVXBkYXRlPSEwLG4uc2V0RHJhd1JhbmdlKDAsZSozKSxuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uICRndChuLHQsZSl7bGV0IG89TWF0aC5tYXgodC5sZW5ndGgvMi0xLDApLGk9byoyKjMsYT1pKjMscj1uLmF0dHJpYnV0ZXMucG9zaXRpb247KCFyfHxyLmNvdW50IT09aSkmJihyPW5ldyBPcihuZXcgRmxvYXQzMkFycmF5KGEpLDMpLG4uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIscikpO2xldCBzPXIuYXJyYXk7Zm9yKGxldCBsPTA7bDxvO2wrKyl7bGV0W2MsbSxmLHBdPVt0WzIqbF0sdFsyKmwrMV0sdFsyKmwrMl0sdFsyKmwrM11dLGc9bmV3IFNlKGMsbSksXz1uZXcgU2UoZixwKSxNPW5ldyBTZShmLWMscC1tKSx5PW5ldyBTZSgtTS55LE0ueCkuc2V0TGVuZ3RoKGUvMiksTz1nLmNsb25lKCkuYWRkKHkpLGI9Zy5jbG9uZSgpLnN1Yih5KSxSPV8uY2xvbmUoKS5hZGQoeSksRT1fLmNsb25lKCkuc3ViKHkpLGo9W08ueCxPLnksMCxiLngsYi55LDAsUi54LFIueSwwLFIueCxSLnksMCxiLngsYi55LDAsRS54LEUueSwwXTtzLnNldChqLGwqai5sZW5ndGgpfXIubmVlZHNVcGRhdGU9ITAsbi5zZXREcmF3UmFuZ2UoMCxhKSxuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIHhGKG4sdCxlLG8pe2xldHt2aXNpYmxlOmksY29sb3I6YSxvcGFjaXR5OnJ9PW87aWYoQXJyYXkuaXNBcnJheSh0Lm1hdGVyaWFsKSl0aHJvdyBuZXcgRXJyb3IoIkludmFyaWFudCBlcnJvcjogb25seSBleHBlY3Qgb25lIG1hdGVyaWFsIG9uIGFuIG9iamVjdCIpO2xldCBzPXQubWF0ZXJpYWw7aWYocy52aXNpYmxlIT09aSYmKHMudmlzaWJsZT1pLHMubmVlZHNVcGRhdGU9ITApLCFpKXJldHVybiExO2xldCBsPWFaKG4sYSxyIT1udWxsP3I6MSksYz1lKHQuZ2VvbWV0cnkpO3JldHVybiB0Lmdlb21ldHJ5IT09YyYmKHQuZ2VvbWV0cnk9Yykscy5jb2xvci5lcXVhbHMobCl8fChzLmNvbG9yLnNldChsKSxzLm5lZWRzVXBkYXRlPSEwKSwhMH12YXIgRTQ9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8saSl7dGhpcy5jb29yZGluYXRvcj1lLHRoaXMuc2NlbmU9bmV3IENTLHRoaXMuYmFja2dyb3VuZENvbG9yPSIjZmZmIixzSCgpJiZ0IGluc3RhbmNlb2YgT2Zmc2NyZWVuQ2FudmFzJiYodC5zdHlsZT10LnN0eWxlfHx7fSksaSYmdC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixpKSx0aGlzLnJlbmRlcmVyPW5ldyBlYSh7Y2FudmFzOnQsYW50aWFsaWFzOiEwLGFscGhhOiEwfSksdGhpcy5yZW5kZXJlci5zZXRQaXhlbFJhdGlvKG8pfW9uUmVzaXplKHQpe3RoaXMucmVuZGVyZXIuc2V0U2l6ZSh0LndpZHRoLHQuaGVpZ2h0KX1kZXN0cm95T2JqZWN0KHQpe2xldCBlPXQub2JqM2Q7aWYodGhpcy5zY2VuZS5yZW1vdmUoZSksZSBpbnN0YW5jZW9mIFlzKXtlLmdlb21ldHJ5LmRpc3Bvc2UoKTtsZXQgbz1BcnJheS5pc0FycmF5KGUubWF0ZXJpYWwpP2UubWF0ZXJpYWw6W2UubWF0ZXJpYWxdO2ZvcihsZXQgaSBvZiBvKWkuZGlzcG9zZSgpfX1zZXRVc2VEYXJrTW9kZSh0KXt0aGlzLmJhY2tncm91bmRDb2xvcj10PyIjMzAzMDMwIjoiI2ZmZiJ9Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsZSxvKXt2YXIgaTtpZighdCYmIW8udmlzaWJsZSlyZXR1cm4gbnVsbDtsZXR7dmlzaWJsZTphLHdpZHRoOnJ9PW87aWYoIXQpe2xldCBmPWFaKHRoaXMuYmFja2dyb3VuZENvbG9yLG8uY29sb3IsKGk9by5vcGFjaXR5KSE9PW51bGwmJmkhPT12b2lkIDA/aToxKSxwPW5ldyB0YSxnPW5ldyBRUCh7Y29sb3I6Zn0pLF89bmV3IFlzKHAsZyk7cmV0dXJuIGcudmlzaWJsZT1hLCRndChwLGUsciksdGhpcy5zY2VuZS5hZGQoXykse3R5cGU6RE8uTElORSxkYXRhOmUsb2JqM2Q6Xyx3aWR0aDpyfX1sZXR7ZGF0YTpzLG9iajNkOmwsd2lkdGg6Y309dDtyZXR1cm4geEYodGhpcy5iYWNrZ3JvdW5kQ29sb3IsbCxmPT4oKHIhPT1jfHwhc3x8IWxIKHMsZSkpJiYkZ3QoZixlLHIpLGYpLG8pP3t0eXBlOkRPLkxJTkUsZGF0YTplLG9iajNkOmwsd2lkdGg6cn06dH1jcmVhdGVNZXNoKHQsZSl7aWYoIWUudmlzaWJsZSlyZXR1cm4gbnVsbDtsZXR7dmlzaWJsZTpvLGNvbG9yOmksb3BhY2l0eTphfT1lLHI9YVoodGhpcy5iYWNrZ3JvdW5kQ29sb3IsaSxhIT1udWxsP2E6MSkscz1uZXcgSTEoe2NvbG9yOnIsdmlzaWJsZTpvfSk7cmV0dXJuIG5ldyBZcyh0LHMpfWNyZWF0ZU9yVXBkYXRlVHJpYW5nbGVPYmplY3QodCxlLG8pe2xldHtzaXplOml9PW8sYT1pKk1hdGguc3FydCgzKS8yLHI9bmV3IEZsb2F0MzJBcnJheShbZS54LWkvMixlLnktYS8zLGUueCtpLzIsZS55LWEvMyxlLngsZS55K2EqMi8zXSk7aWYoIXQpe2xldCBsPW5ldyB0YTtKZ3QobCxyKTtsZXQgYz10aGlzLmNyZWF0ZU1lc2gobCxvKTtyZXR1cm4gYz09PW51bGw/bnVsbDoodGhpcy5zY2VuZS5hZGQoYykse3R5cGU6RE8uVFJJQU5HTEUsZGF0YTplLG9iajNkOmN9KX1yZXR1cm4geEYodGhpcy5iYWNrZ3JvdW5kQ29sb3IsdC5vYmozZCxsPT4oSmd0KGwsciksbCksbyk/e3R5cGU6RE8uVFJJQU5HTEUsZGF0YTplLG9iajNkOnQub2JqM2R9OnR9Y3JlYXRlT3JVcGRhdGVDaXJjbGVPYmplY3QodCxlLG8pe2xldHtyYWRpdXM6aX09byxhPW5ldyBNUyhvLnJhZGl1cyk7aWYoIXQpe2xldCBzPXRoaXMuY3JlYXRlTWVzaChhLG8pO3JldHVybiBzPT09bnVsbD9udWxsOihzLnBvc2l0aW9uLnNldChlLngsZS55LDApLHRoaXMuc2NlbmUuYWRkKHMpLHt0eXBlOkRPLkNJUkNMRSxkYXRhOntsb2M6ZSxyYWRpdXM6aX0sb2JqM2Q6c30pfXJldHVybiB4Rih0aGlzLmJhY2tncm91bmRDb2xvcix0Lm9iajNkLCgpPT5hLG8pPyh0Lm9iajNkLnBvc2l0aW9uLnNldChlLngsZS55LDApLHt0eXBlOkRPLkNJUkNMRSxkYXRhOntsb2M6ZSxyYWRpdXM6aX0sb2JqM2Q6dC5vYmozZH0pOnR9Y3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodCxlLG8saSl7aWYoZS55IT09by55KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnB1dCBlcnJvcjogc3RhcnQueSAhPSBlbmQueS4iKTtsZXR7YWx0aXR1ZGU6YX09aSxyPTIvTWF0aC5zcXJ0KDMpKmEscz1uZXcgS1AoW25ldyBTZShlLngtci8yLGUueS1hLzIpLG5ldyBTZShlLngsZS55K2EvMiksbmV3IFNlKG8ueCxvLnkrYS8yKSxuZXcgU2Uoby54K3IvMixvLnktYS8yKV0pO3MuYXV0b0Nsb3NlPSEwO2xldCBsPW5ldyBCMShzKTtpZighdCl7bGV0IG09dGhpcy5jcmVhdGVNZXNoKGwsaSk7cmV0dXJuIG09PT1udWxsP251bGw6KHRoaXMuc2NlbmUuYWRkKG0pLHt0eXBlOkRPLlRSQVBFWk9JRCxkYXRhOltlLG9dLG9iajNkOm19KX1yZXR1cm4geEYodGhpcy5iYWNrZ3JvdW5kQ29sb3IsdC5vYmozZCwoKT0+bCxpKT97dHlwZTpETy5UUkFQRVpPSUQsZGF0YTpbZSxvXSxvYmozZDp0Lm9iajNkfTp0fWZsdXNoKCl7dGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5zY2VuZSx0aGlzLmNvb3JkaW5hdG9yLmdldENhbWVyYSgpKX1kaXNwb3NlKCl7dGhpcy5yZW5kZXJlci5kaXNwb3NlKCl9fTt2YXIgdkY9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJlbmRlckNhY2hlPXQsdGhpcy5yZW5kZXJlcj1lfXNldExpbmUodCxlLG8pe2xldCBpPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxvKTtpJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQsaSl9c2V0VHJpYW5nbGUodCxlLG8pe2xldCBpPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0aGlzLnJlbmRlckNhY2hlLmdldEZyb21QcmV2aW91c0ZyYW1lKHQpLGUsbyk7aSYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LGkpfXNldENpcmNsZSh0LGUsbyl7bGV0IGk9dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0aGlzLnJlbmRlckNhY2hlLmdldEZyb21QcmV2aW91c0ZyYW1lKHQpLGUsbyk7aSYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LGkpfXNldFRyYXBlem9pZCh0LGUsbyxpKXtsZXQgYT10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlVHJhcGV6b2lkT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksZSxvLGkpO2EmJnRoaXMucmVuZGVyQ2FjaGUuc2V0VG9DdXJyZW50RnJhbWUodCxhKX19O3ZhciByWj1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMucHJldkZyYW1lQ2FjaGU9bmV3IE1hcCx0aGlzLmN1cnJGcmFtZUNhY2hlPW5ldyBNYXB9Z2V0RnJvbVByZXZpb3VzRnJhbWUodCl7bGV0IGU9dGhpcy5wcmV2RnJhbWVDYWNoZS5nZXQodCk7cmV0dXJuIGUhPW51bGw/ZTpudWxsfXNldFRvQ3VycmVudEZyYW1lKHQsZSl7dGhpcy5jdXJyRnJhbWVDYWNoZS5zZXQodCxlKX1maW5hbGl6ZUZyYW1lQW5kR2V0UmVtb3ZlZCgpe2xldCB0PVtdO2ZvcihsZXRbZSxvXW9mIHRoaXMucHJldkZyYW1lQ2FjaGUuZW50cmllcygpKXRoaXMuY3VyckZyYW1lQ2FjaGUuaGFzKGUpfHx0LnB1c2gobyk7cmV0dXJuIHRoaXMucHJldkZyYW1lQ2FjaGU9dGhpcy5jdXJyRnJhbWVDYWNoZSx0aGlzLmN1cnJGcmFtZUNhY2hlPW5ldyBNYXAsdH19LHdGPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMucmF3U2VyaWVzRGF0YT1bXSx0aGlzLnNlcmllcz1bXSx0aGlzLnBhaW50RGlydHk9ITAsdGhpcy5yZW5kZXJDYWNoZT1uZXcgclosdGhpcy5jb29yZGluYXRlSWRlbnRpZmllcj1udWxsLHRoaXMubGF5b3V0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9LHRoaXMuZ2V0TWV0YWRhdGFNYXBJbXBsPXQuZ2V0TWV0YWRhdGFNYXAsdGhpcy5jb29yZGluYXRvcj10LmNvb3JkaW5hdG9yLHRoaXMucmVuZGVyZXI9dC5yZW5kZXJlcix0aGlzLnBhaW50QnJ1c2g9bmV3IHZGKHRoaXMucmVuZGVyQ2FjaGUsdGhpcy5yZW5kZXJlcil9c2V0TGF5b3V0UmVjdCh0KXsodGhpcy5sYXlvdXQueCE9PXQueHx8dGhpcy5sYXlvdXQud2lkdGghPT10LndpZHRofHx0aGlzLmxheW91dC55IT09dC55fHx0aGlzLmxheW91dC5oZWlnaHQhPT10LmhlaWdodCkmJih0aGlzLnBhaW50RGlydHk9ITApLHRoaXMubGF5b3V0PXR9Z2V0TGF5b3V0UmVjdCgpe3JldHVybiB0aGlzLmxheW91dH1nZXRNZXRhZGF0YU1hcCgpe3JldHVybiB0aGlzLmdldE1ldGFkYXRhTWFwSW1wbCgpfW1hcmtBc1BhaW50RGlydHkoKXt0aGlzLnBhaW50RGlydHk9ITB9cmVuZGVyKCl7aWYodGhpcy50cmFuc2Zvcm1Db29yZGluYXRlc0lmU3RhbGUoKSwhIXRoaXMucGFpbnREaXJ0eSl7dGhpcy5yZWRyYXcoKTtmb3IobGV0IHQgb2YgdGhpcy5yZW5kZXJDYWNoZS5maW5hbGl6ZUZyYW1lQW5kR2V0UmVtb3ZlZCgpKXRoaXMucmVuZGVyZXIuZGVzdHJveU9iamVjdCh0KTt0aGlzLnBhaW50RGlydHk9ITF9fWlzQ29vcmRpbmF0ZVVwZGF0ZWQoKXtyZXR1cm4gdGhpcy5jb29yZGluYXRvci5nZXRVcGRhdGVJZGVudGlmaWVyKCkhPT10aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyfWNsZWFyQ29vcmRpbmF0ZUlkZW50aWZpZXIoKXt0aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPW51bGx9c2V0RGF0YSh0KXt0aGlzLmNsZWFyQ29vcmRpbmF0ZUlkZW50aWZpZXIoKSx0aGlzLnJhd1Nlcmllc0RhdGE9dH10cmFuc2Zvcm1Db29yZGluYXRlc0lmU3RhbGUoKXtpZighdGhpcy5pc0Nvb3JkaW5hdGVVcGRhdGVkKCkpcmV0dXJuO2xldCB0PXRoaXMuZ2V0TGF5b3V0UmVjdCgpO3RoaXMuc2VyaWVzPW5ldyBBcnJheSh0aGlzLnJhd1Nlcmllc0RhdGEubGVuZ3RoKTtmb3IobGV0IGU9MDtlPHRoaXMucmF3U2VyaWVzRGF0YS5sZW5ndGg7ZSsrKXtsZXQgbz10aGlzLnJhd1Nlcmllc0RhdGFbZV07dGhpcy5zZXJpZXNbZV09e2lkOm8uaWQscG9seWxpbmU6bmV3IEZsb2F0MzJBcnJheShvLnBvaW50cy5sZW5ndGgqMil9O2ZvcihsZXQgaT0wO2k8by5wb2ludHMubGVuZ3RoO2krKyl7bGV0W2Escl09dGhpcy5jb29yZGluYXRvci50cmFuc2Zvcm1EYXRhVG9VaUNvb3JkKHQsW28ucG9pbnRzW2ldLngsby5wb2ludHNbaV0ueV0pO3RoaXMuc2VyaWVzW2VdLnBvbHlsaW5lW2kqMl09YSx0aGlzLnNlcmllc1tlXS5wb2x5bGluZVtpKjIrMV09cn19dGhpcy5jb29yZGluYXRlSWRlbnRpZmllcj10aGlzLmNvb3JkaW5hdG9yLmdldFVwZGF0ZUlkZW50aWZpZXIoKSx0aGlzLm1hcmtBc1BhaW50RGlydHkoKX19O3ZhciBrNDsoZnVuY3Rpb24obil7bltuLk5VTUJFUj0wXT0iTlVNQkVSIixuW24uTkFOPTFdPSJOQU4ifSkoazR8fChrND17fSkpO3ZhciBTRj1jbGFzcyBleHRlbmRzIHdGe3JlY29yZFBhcnRpdGlvbih0LGUsbyl7cmV0dXJuIHQ/e3R5cGU6azQuTlVNQkVSLHBvbHlsaW5lOmV9Ont0eXBlOms0Lk5BTixwb2x5bGluZTplLm1hcCgoaSxhKT0+aXNOYU4oaSk/YSUyPT09MD9vLng6by55OmkpfX1wYXJ0aXRpb25Qb2x5bGluZSh0KXtsZXQgZT1bXSxvPTAsaT0hMSxhPXRoaXMuY29vcmRpbmF0b3IudHJhbnNmb3JtRGF0YVRvVWlDb29yZCh0aGlzLmdldExheW91dFJlY3QoKSxbMCwwXSkscj17eDphWzBdLHk6YVsxXX0scz1udWxsO2ZvcihsZXQgbD0wO2w8dC5sZW5ndGg7bCs9Mil7bGV0IGM9dFtsXSxtPXRbbCsxXSxmPWlzTmFOKGMpfHxpc05hTihtKTtmIT09aSYmbyE9PWwmJihlLnB1c2godGhpcy5yZWNvcmRQYXJ0aXRpb24oIWksdC5zbGljZShvLGwpLHM9PT1udWxsP3t4OmMseTptfTpzKSksbz1sKSxmfHwocz17eDpjLHk6bX0pLGk9Zn1yZXR1cm4gbyE9PXQubGVuZ3RoLTEmJmUucHVzaCh0aGlzLnJlY29yZFBhcnRpdGlvbighaSx0LnNsaWNlKG8sdC5sZW5ndGgpLHMhPW51bGw/czpyKSksZX1yZWRyYXcoKXt2YXIgdCxlLG87Zm9yKGxldCBpIG9mIHRoaXMuc2VyaWVzKXtsZXQgcj10aGlzLmdldE1ldGFkYXRhTWFwKClbaS5pZF07aWYoIXIpY29udGludWU7aWYoaS5wb2x5bGluZS5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaGF2ZSBvZGQgbGVuZ3RoLWVkIHBvbHlsaW5lOiAke2kucG9seWxpbmUubGVuZ3RofWApO2xldCBzPXRoaXMucGFydGl0aW9uUG9seWxpbmUoaS5wb2x5bGluZSk7Zm9yKGxldFtsLHt0eXBlOmMscG9seWxpbmU6bX1db2Ygcy5lbnRyaWVzKCkpaWYoYz09PWs0Lk5VTUJFUiltLmxlbmd0aD09PTI/dGhpcy5wYWludEJydXNoLnNldENpcmNsZShKU09OLnN0cmluZ2lmeShbImNpcmNsZSIsaS5pZCxsXSkse3g6bVswXSx5Om1bMV19LHtjb2xvcjpyLmNvbG9yLHZpc2libGU6ci52aXNpYmxlLG9wYWNpdHk6KHQ9ci5vcGFjaXR5KSE9PW51bGwmJnQhPT12b2lkIDA/dDoxLHJhZGl1czo0fSk6dGhpcy5wYWludEJydXNoLnNldExpbmUoSlNPTi5zdHJpbmdpZnkoWyJsaW5lIixpLmlkLGxdKSxtLHtjb2xvcjpyLmNvbG9yLHZpc2libGU6ci52aXNpYmxlLG9wYWNpdHk6KGU9ci5vcGFjaXR5KSE9PW51bGwmJmUhPT12b2lkIDA/ZToxLHdpZHRoOjJ9KTtlbHNlIGlmKCFyLmF1eClmb3IobGV0IGY9MDtmPG0ubGVuZ3RoO2YrPTIpdGhpcy5wYWludEJydXNoLnNldFRyaWFuZ2xlKEpTT04uc3RyaW5naWZ5KFsiTmFOIixpLmlkLG1bZl0sbVtmKzFdXSkse3g6bVtmXSx5Om1bZisxXX0se2NvbG9yOnIuY29sb3IsdmlzaWJsZTpyLnZpc2libGUsb3BhY2l0eToobz1yLm9wYWNpdHkpIT09bnVsbCYmbyE9PXZvaWQgMD9vOjEsc2l6ZToxMn0pfX19O3ZhciBSRj1jbGFzcyBleHRlbmRzIEYye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNhbWVyYT1uZXcgSDEoMCwxZTMsMWUzLDAsMCwxMDApfWlzWUF4aXNQb2ludGVkRG93bigpe3JldHVybiExfXNldERvbUNvbnRhaW5lclJlY3QodCl7c3VwZXIuc2V0RG9tQ29udGFpbmVyUmVjdCh0KSx0aGlzLmNhbWVyYS5sZWZ0PXQueCx0aGlzLmNhbWVyYS5yaWdodD10LngrdC53aWR0aCx0aGlzLmNhbWVyYS50b3A9dC55K3QuaGVpZ2h0LHRoaXMuY2FtZXJhLmJvdHRvbT10LnksdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldENhbWVyYSgpe3JldHVybiB0aGlzLmNhbWVyYX19O3ZhciBqR3Q9e3JlcXVlc3RBbmltYXRpb25GcmFtZTpuPT5zZWxmLnJlcXVlc3RBbmltYXRpb25GcmFtZShuKX0sRUY9Y2xhc3N7Y29uc3RydWN0b3IodCl7c3dpdGNoKHRoaXMubWV0YWRhdGFNYXA9e30sdGhpcy5zaG91bGRSZXBhaW50PSExLHRoaXMuY2FsbGJhY2tzPXQuY2FsbGJhY2tzLHQudHlwZSl7Y2FzZSBrYS5TVkc6e3RoaXMuY29vcmRpbmF0b3I9bmV3IEYyLHRoaXMucmVuZGVyZXI9bmV3IEI1KHQuY29udGFpbmVyKTticmVha31jYXNlIGthLldFQkdMOntsZXQgZT1uZXcgUkY7dGhpcy5jb29yZGluYXRvcj1lLHRoaXMucmVuZGVyZXI9bmV3IEU0KHQuY29udGFpbmVyLGUsdC5kZXZpY2VQaXhlbFJhdGlvLHQuY2FsbGJhY2tzLm9uQ29udGV4dExvc3QpO2JyZWFrfX10aGlzLnJlbmRlcmVyLnNldFVzZURhcmtNb2RlKHQudXNlRGFya01vZGUpLHRoaXMuc2VyaWVzTGluZVZpZXc9bmV3IFNGKHtyZW5kZXJlcjp0aGlzLnJlbmRlcmVyLGNvb3JkaW5hdG9yOnRoaXMuY29vcmRpbmF0b3IsZ2V0TWV0YWRhdGFNYXA6KCk9PnRoaXMubWV0YWRhdGFNYXB9KSx0aGlzLnJlc2l6ZSh0LmRvbURpbWVuc2lvbil9ZGlzcG9zZSgpe31zZXRYU2NhbGVUeXBlKHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0WFNjYWxlKG5iKHQpKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFlTY2FsZVR5cGUodCl7dGhpcy5jb29yZGluYXRvci5zZXRZU2NhbGUobmIodCkpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9cmVzaXplKHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0RG9tQ29udGFpbmVyUmVjdChPYmplY3QuYXNzaWduKHt4OjAseTowfSx0KSksdGhpcy5yZW5kZXJlci5vblJlc2l6ZShPYmplY3QuYXNzaWduKHt4OjAseTowfSx0KSksdGhpcy5zZXJpZXNMaW5lVmlldy5zZXRMYXlvdXRSZWN0KE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7eDowLHk6MH0pKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldE1ldGFkYXRhKHQpe2xldCBlPSExO09iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKFtvLGldKT0+e2xldCBhPXRoaXMubWV0YWRhdGFNYXBbb107KCFhfHxpLmNvbG9yIT09YS5jb2xvcnx8aS52aXNpYmxlIT09YS52aXNpYmxlfHxpLm9wYWNpdHkhPT1hLm9wYWNpdHkpJiYoZT0hMCksdGhpcy5tZXRhZGF0YU1hcFtvXT1pfSksZSYmdGhpcy5zZXJpZXNMaW5lVmlldy5tYXJrQXNQYWludERpcnR5KCksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRWaWV3Qm94KHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0Vmlld0JveFJlY3Qoe3g6dC54WzBdLHdpZHRoOnQueFsxXS10LnhbMF0seTp0LnlbMF0saGVpZ2h0OnQueVsxXS10LnlbMF19KSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldERhdGEodCl7dGhpcy5zZXJpZXNMaW5lVmlldy5zZXREYXRhKHQpLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0VXNlRGFya01vZGUodCl7dGhpcy5yZW5kZXJlci5zZXRVc2VEYXJrTW9kZSh0KSx0aGlzLnNlcmllc0xpbmVWaWV3Lm1hcmtBc1BhaW50RGlydHkoKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNjaGVkdWxlUmVwYWludCgpe3RoaXMuc2hvdWxkUmVwYWludHx8KHRoaXMuc2hvdWxkUmVwYWludD0hMCxqR3QucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5yZXBhaW50KCksdGhpcy5zaG91bGRSZXBhaW50PSExfSkpfXJlcGFpbnQoKXt0aGlzLnNlcmllc0xpbmVWaWV3LnJlbmRlcigpLHRoaXMucmVuZGVyZXIuZmx1c2goKSx0aGlzLmNhbGxiYWNrcy5vbkRyYXdFbmQoKX19O2Z1bmN0aW9uIHR1dChuKXtsZXQgdD1uLnJlZHVjZSgoYSxyKT0+YStyLnBvaW50cy5sZW5ndGgsMCksZT0wLG89bmV3IEZsb2F0NjRBcnJheSh0KjIpLGk9W107Zm9yKGxldCBhIG9mIG4pe2kucHVzaCh7aWQ6YS5pZCxsZW5ndGg6YS5wb2ludHMubGVuZ3RofSk7Zm9yKGxldCByPTA7cjxhLnBvaW50cy5sZW5ndGg7cisrKW9bZSsrXT1hLnBvaW50c1tyXS54LG9bZSsrXT1hLnBvaW50c1tyXS55fXJldHVybntpZHNBbmRMZW5ndGhzOmksZmxhdHRlbmVkU2VyaWVzOm8uYnVmZmVyfX12YXIgRzA7KGZ1bmN0aW9uKG4pe25bbi5TRVJJRVNfREFUQV9VUERBVEVEPTBdPSJTRVJJRVNfREFUQV9VUERBVEVEIixuW24uU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQ9MV09IlNFUklFU19NRVRBREFUQV9DSEFOR0VEIixuW24uU0NBTEVfVVBEQVRFRD0yXT0iU0NBTEVfVVBEQVRFRCIsbltuLlZJRVdfQk9YX1VQREFURUQ9M109IlZJRVdfQk9YX1VQREFURUQiLG5bbi5JTklUPTRdPSJJTklUIixuW24uRE9NX1JFU0laRUQ9NV09IkRPTV9SRVNJWkVEIixuW24uREFSS19NT0RFX1VQREFURUQ9Nl09IkRBUktfTU9ERV9VUERBVEVEIixuW24uRElTUE9TRUQ9N109IkRJU1BPU0VEIn0pKEcwfHwoRzA9e30pKTt2YXIgTjQ7KGZ1bmN0aW9uKG4pe25bbi5PTl9SRURSQVdfRU5EPTBdPSJPTl9SRURSQVdfRU5EIixuW24uT05fQ09OVEVYVF9MT1NUPTFdPSJPTl9DT05URVhUX0xPU1QifSkoTjR8fChOND17fSkpO2Z1bmN0aW9uIGV1dChuKXtpZihuLmluY2x1ZGVzKCIvIikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIldvcmtlciBmYWN0b3J5IG9ubHkgYWxsb3dzIGZpbGUgbmFtZSBhbmQgbm8gcmVzb3VyY2UgcGF0aC4iKTtyZXR1cm4gbmV3IFdvcmtlcihuKX12YXIga0Y9Y2xhc3N7Y29uc3RydWN0b3IodCxlPTEwLG89ZXV0KXt0aGlzLndvcmtlclJlc291cmNlUGF0aD10LHRoaXMubWF4UG9vbFNpemU9ZSx0aGlzLndvcmtlckZhY3Rvcnk9byx0aGlzLndvcmtlcnM9W119Z2V0TmV4dCgpe2xldCB0O2lmKHRoaXMud29ya2Vycy5ldmVyeSgoe2FjdGl2ZUNvdW50Om99KT0+bz4wKSYmdGhpcy53b3JrZXJzLmxlbmd0aDx0aGlzLm1heFBvb2xTaXplKXtsZXQgbz10aGlzLndvcmtlckZhY3RvcnkodGhpcy53b3JrZXJSZXNvdXJjZVBhdGgpO3Q9e2FjdGl2ZUNvdW50OjAscG9zdE1lc3NhZ2U6KGksYSk9PntvLnBvc3RNZXNzYWdlKGksYSl9LGZyZWU6KCk9Pnt0LmFjdGl2ZUNvdW50PU1hdGgubWF4KHQuYWN0aXZlQ291bnQtMSwwKX19LHRoaXMud29ya2Vycy5wdXNoKHQpfWVsc2V7bGV0IG89dGhpcy53b3JrZXJzLm1hcCgoe2FjdGl2ZUNvdW50OmF9KT0+YSksaT1vLmluZGV4T2YoTWF0aC5taW4oLi4ubykpO3Q9dGhpcy53b3JrZXJzW2ldfXJldHVybiB0LmFjdGl2ZUNvdW50KyssdH19O3ZhciBudXQ9ImNoYXJ0X3dvcmtlci5qcz9fZmlsZV9oYXNoPTlhZTUwMzdkIjt2YXIgVTE9Y2xhc3N7Y29uc3RydWN0b3IodCl7aWYodGhpcy5jYWxsYmFja3M9dC5jYWxsYmFja3MsdC50eXBlIT09a2EuV0VCR0wpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYENhbm5vdCB1c2Ugbm9uIFdFQkdMIHJlbmRlcmVyIGZvciB0aGUgb2Zmc2NyZWVuIGxpbmUgY2hhcnQuIFJlY2VpdmVkICR7a2FbdC50eXBlXX0gYCk7bGV0IGU9bmV3IE1lc3NhZ2VDaGFubmVsO2UucG9ydDEub25tZXNzYWdlPWE9Pnt0aGlzLm9uTWVzc2FnZUZyb21Xb3JrZXIoYS5kYXRhKX0sdGhpcy50eE1lc3NhZ2VQb3J0PWUucG9ydDE7bGV0IG89dC5jb250YWluZXIudHJhbnNmZXJDb250cm9sVG9PZmZzY3JlZW4oKTt0aGlzLndvcmtlckluc3RhbmNlPVUxLndvcmtlclBvb2wuZ2V0TmV4dCgpO2xldCBpPXt0eXBlOkcwLklOSVQsY2FudmFzOm8sZGV2aWNlUGl4ZWxSYXRpbzp3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxkaW06dC5kb21EaW1lbnNpb24scmVuZGVyZXJUeXBlOnQudHlwZSx1c2VEYXJrTW9kZTp0LnVzZURhcmtNb2RlfTt0aGlzLndvcmtlckluc3RhbmNlLnBvc3RNZXNzYWdlKGksW28sZS5wb3J0Ml0pfWRpc3Bvc2UoKXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOkcwLkRJU1BPU0VEfSksdGhpcy53b3JrZXJJbnN0YW5jZS5mcmVlKCksdGhpcy50eE1lc3NhZ2VQb3J0LmNsb3NlKCl9c2V0WFNjYWxlVHlwZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOkcwLlNDQUxFX1VQREFURUQsYXhpczoieCIsc2NhbGVUeXBlOnR9KX1zZXRZU2NhbGVUeXBlKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6RzAuU0NBTEVfVVBEQVRFRCxheGlzOiJ5IixzY2FsZVR5cGU6dH0pfXJlc2l6ZSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOkcwLkRPTV9SRVNJWkVELGRpbTp0fSl9c2V0TWV0YWRhdGEodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpHMC5TRVJJRVNfTUVUQURBVEFfQ0hBTkdFRCxtZXRhZGF0YTp0fSl9c2V0Vmlld0JveCh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOkcwLlZJRVdfQk9YX1VQREFURUQsZXh0ZW50OnR9KX1zZXREYXRhKHQpe2xldCBlPXR1dCh0KTt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOkcwLlNFUklFU19EQVRBX1VQREFURUQsY29tcGFjdERhdGFTZXJpZXM6ZX0sW2UuZmxhdHRlbmVkU2VyaWVzXSl9c2V0VXNlRGFya01vZGUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpHMC5EQVJLX01PREVfVVBEQVRFRCx1c2VEYXJrTW9kZTp0fSl9c2VuZE1lc3NhZ2UodCxlKXtlP3RoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0LGUpOnRoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0KX1vbk1lc3NhZ2VGcm9tV29ya2VyKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgTjQuT05fUkVEUkFXX0VORDp7dGhpcy5jYWxsYmFja3Mub25EcmF3RW5kKCk7YnJlYWt9Y2FzZSBONC5PTl9DT05URVhUX0xPU1Q6e3RoaXMuY2FsbGJhY2tzLm9uQ29udGV4dExvc3QoKTticmVha319fX07VTEud29ya2VyUG9vbD1uZXcga0YobnV0KTtmdW5jdGlvbiBvdXQobix0LGUsbyxpKXtsZXQgYT1udWxsLHI9bnVsbCxzPVtdLGw9MDtmb3IobGV0e2lkOmYscG9pbnRzOnB9b2Ygbil7bGV0IGc9dFtmXTtpZighKCFnfHxnLmF1eHx8IWcudmlzaWJsZSkpZm9yKGxldCBfPTA7XzxwLmxlbmd0aDtfKyspe2xldHt4Ok0seX09cFtfXTtvKE0pJiYoYT1hPT09bnVsbHx8TTxhP006YSxyPXI9PT1udWxsfHxNPnI/TTpyKSxpKHkpJiZzLnB1c2goeSksbCsrfX1zLnNvcnQoQjApO2xldCBjPXNbMF0sbT1zW3MubGVuZ3RoLTFdO3JldHVybiBlJiZzLmxlbmd0aD4yJiYoYz1zW01hdGguY2VpbCgocy5sZW5ndGgtMSkqLjA1KV0sbT1zW01hdGguZmxvb3IoKHMubGVuZ3RoLTEpKi45NSldKSx7eDphIT09bnVsbCYmciE9PW51bGw/W2Escl06dm9pZCAwLHk6YyE9PXZvaWQgMCYmbSE9PXZvaWQgMD9bYyxtXTp2b2lkIDB9fWZ1bmN0aW9uIGl1dChuKXtzd2l0Y2gobil7Y2FzZSBrYS5TVkc6cmV0dXJuIGthLlNWRztjYXNlIGthLldFQkdMOnJldHVybiBZcHQoKT9rYS5XRUJHTDprYS5TVkc7ZGVmYXVsdDpsZXQgdD1uO3Rocm93IG5ldyBFcnJvcihgVW5rbm93biByZW5kZXJlclR5cGU6ICR7bn1gKX19ZnVuY3Rpb24gSU8obix0KXtyZXR1cm4gdD09PSJ4Ij9bMCxuLndpZHRoXTpbbi5oZWlnaHQsMF19ZnVuY3Rpb24gVDQobix0KXtsZXQgZT1NYXRoLmZsb29yKG4vNTApO3JldHVybiBNYXRoLm1pbihlLHQpfWZ1bmN0aW9uIFVHdChuLHQpe2lmKG4mMSYmKEtuKCksRCgwLCJsaW5lIiwyKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoKTttZSgiemVybyIsZT09PTApLHJlKCJ4MSIsby5nZXREb21YKGUpKSgieDIiLG8uZ2V0RG9tWChlKSkoInkyIixvLmRvbURpbS5oZWlnaHQpfX1mdW5jdGlvbiBZR3Qobix0KXtpZihuJjEmJihLbigpLEQoMCwibGluZSIsMykpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKCk7bWUoInplcm8iLGU9PT0wKSxyZSgieTEiLG8uZ2V0RG9tWShlKSkoIngyIixvLmRvbURpbS53aWR0aCkoInkyIixvLmdldERvbVkoZSkpfX12YXIgQWQ9Y2xhc3N7Z2V0RG9tWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUuZm9yd2FyZCh0aGlzLnZpZXdFeHRlbnQueCxJTyh0aGlzLmRvbURpbSwieCIpLHQpfWdldERvbVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LnksSU8odGhpcy5kb21EaW0sInkiKSx0KX1nZXRYVGlja3MoKXtyZXR1cm4gdGhpcy54U2NhbGUudGlja3ModGhpcy52aWV3RXh0ZW50LngsVDQodGhpcy5kb21EaW0ud2lkdGgsdGhpcy54R3JpZENvdW50KSl9Z2V0WVRpY2tzKCl7cmV0dXJuIHRoaXMueVNjYWxlLnRpY2tzKHRoaXMudmlld0V4dGVudC55LFQ0KHRoaXMuZG9tRGltLmhlaWdodCx0aGlzLnlHcmlkQ291bnQpKX19O0FkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEFkKX07QWQuXHUwMjc1Y21wPXooe3R5cGU6QWQsc2VsZWN0b3JzOltbImxpbmUtY2hhcnQtZ3JpZC12aWV3Il1dLGlucHV0czp7dmlld0V4dGVudDoidmlld0V4dGVudCIseFNjYWxlOiJ4U2NhbGUiLHhHcmlkQ291bnQ6InhHcmlkQ291bnQiLHlTY2FsZToieVNjYWxlIix5R3JpZENvdW50OiJ5R3JpZENvdW50Iixkb21EaW06ImRvbURpbSJ9LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJ5MSIsIjAiLDMsInplcm8iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsieDEiLCIwIiwzLCJ6ZXJvIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbInkxIiwiMCJdLFsieDEiLCIwIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoS24oKSx1KDAsInN2ZyIpLGsoMSxVR3QsMSw1LCJsaW5lIiwwKSxrKDIsWUd0LDEsNSwibGluZSIsMSksaCgpKSx0JjImJih4KDEpLFAoIm5nRm9yT2YiLGUuZ2V0WFRpY2tzKCkpLHgoMSksUCgibmdGb3JPZiIsZS5nZXRZVGlja3MoKSkpfSxkaXJlY3RpdmVzOlttbl0sc3R5bGVzOltgW19uZ2hvc3QtJUNPTVAlXSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICBzdmdbX25nY29udGVudC0lQ09NUCVdIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIGxpbmVbX25nY29udGVudC0lQ09NUCVdIHsKICAgICAgICBzdHJva2U6ICNjY2M7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7CiAgICAgIH0KCiAgICAgIC56ZXJvW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgICAgICAgc3Ryb2tlOiAjYWFhOwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH1gXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhBZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImxpbmUtY2hhcnQtZ3JpZC12aWV3Iix0ZW1wbGF0ZTpgPHN2Zz4KICAgIDxsaW5lCiAgICAgICpuZ0Zvcj0ibGV0IHRpY2sgb2YgZ2V0WFRpY2tzKCkiCiAgICAgIFtjbGFzcy56ZXJvXT0idGljayA9PT0gMCIKICAgICAgW2F0dHIueDFdPSJnZXREb21YKHRpY2spIgogICAgICB5MT0iMCIKICAgICAgW2F0dHIueDJdPSJnZXREb21YKHRpY2spIgogICAgICBbYXR0ci55Ml09ImRvbURpbS5oZWlnaHQiCiAgICA+PC9saW5lPgogICAgPGxpbmUKICAgICAgKm5nRm9yPSJsZXQgdGljayBvZiBnZXRZVGlja3MoKSIKICAgICAgW2NsYXNzLnplcm9dPSJ0aWNrID09PSAwIgogICAgICB4MT0iMCIKICAgICAgW2F0dHIueTFdPSJnZXREb21ZKHRpY2spIgogICAgICBbYXR0ci54Ml09ImRvbURpbS53aWR0aCIKICAgICAgW2F0dHIueTJdPSJnZXREb21ZKHRpY2spIgogICAgPjwvbGluZT4KICA8L3N2Zz5gLHN0eWxlczpbYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjY2NjOwogICAgICAgIHN0cm9rZS13aWR0aDogMXB4OwogICAgICB9CgogICAgICAuemVybyB7CiAgICAgICAgc3Ryb2tlOiAjYWFhOwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgIGBdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse3ZpZXdFeHRlbnQ6W3t0eXBlOmR9XSx4U2NhbGU6W3t0eXBlOmR9XSx4R3JpZENvdW50Olt7dHlwZTpkfV0seVNjYWxlOlt7dHlwZTpkfV0seUdyaWRDb3VudDpbe3R5cGU6ZH1dLGRvbURpbTpbe3R5cGU6ZH1dfSl9KSgpO2Z1bmN0aW9uIEE0KG4sdCl7bGV0IGU9TWF0aC5taW4odGIobi5tYXAoKHt4OmF9KT0+YSksdCksbi5sZW5ndGgtMSksbz1NYXRoLm1heCgwLGUtMSk7cmV0dXJuIE1hdGguYWJzKG5bb10ueC10KS1NYXRoLmFicyhuW2VdLngtdCk8PTA/bzplfWZ1bmN0aW9uIGF1dChuLHQsZSxvLGksYSl7bGV0IHI7c3dpdGNoKG4uZGVsdGFNb2RlKXtjYXNlIFdoZWVsRXZlbnQuRE9NX0RFTFRBX1BJWEVMOnI9MTticmVhaztjYXNlIFdoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU6cj04O2JyZWFrO2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfUEFHRTpyPTIwO2JyZWFrO2RlZmF1bHQ6cj0xLGNvbnNvbGUud2FybihgVW5rbm93biBXaGVlbEV2ZW50IGRlbHRhTW9kZTogJHtuLmRlbHRhTW9kZX0uYCl9bGV0IHM9bi5kZWx0YVkqcixsPXM8MD9NYXRoLm1heChzKm8sLS45NSk6cypvLHt3aWR0aDpjLGhlaWdodDptfT1lLGY9W2kucmV2ZXJzZSh0LngsWzAsY10sLW4ub2Zmc2V0WCpsKSxpLnJldmVyc2UodC54LFswLGNdLGMrKGMtbi5vZmZzZXRYKSpsKV0scD1bYS5yZXZlcnNlKHQueSxbbSwwXSwtbi5vZmZzZXRZKmwpLGEucmV2ZXJzZSh0LnksW20sMF0sbSsobS1uLm9mZnNldFkpKmwpXTtyZXR1cm57eDpmWzFdPGZbMF0/W2ZbMV0sZlswXV06Zix5OnBbMV08cFswXT9bcFsxXSxwWzBdXTpwfX12YXIgV0d0PVsiZG90cyJdO2Z1bmN0aW9uIHFHdChuLHQpe2lmKG4mMSYmKEtuKCksRCgwLCJjaXJjbGUiLDEyKSksbiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0LG89UygyKTtyZSgiY3giLG8uZ2V0RG9tWChlLnBvaW50LngpKSgiY3kiLG8uZ2V0RG9tWShlLnBvaW50LnkpKSgiZmlsbCIsZS5tZXRhZGF0YS5jb2xvcil9fWZ1bmN0aW9uIFpHdChuLHQpe2lmKG4mMSYmKEtuKCksRW4oMCksaygxLHFHdCwxLDMsImNpcmNsZSIsMTEpLGtuKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKDIpO3goMSksUCgibmdJZiIsby5zaG91bGRSZW5kZXJUb29sdGlwUG9pbnQoZS5wb2ludCkpfX1mdW5jdGlvbiBYR3Qobix0KXtpZihuJjEmJihLbigpLEVuKDApLGsoMSxaR3QsMiwxLCJuZy1jb250YWluZXIiLDEwKSxrbigpKSxuJjIpe2xldCBlPVMoKTt4KDEpLFAoIm5nRm9yT2YiLGUuY3Vyc29yZWREYXRhKSgibmdGb3JUcmFja0J5IixlLnRyYWNrQnlTZXJpZXNOYW1lKX19ZnVuY3Rpb24gUUd0KG4sdCl7aWYobiYxJiYoS24oKSxEKDAsInJlY3QiLDEzKSksbiYyKXtsZXQgZT1TKCk7cmUoIngiLGUuem9vbUJveEluVWlDb29yZGluYXRlLngpKCJ3aWR0aCIsZS56b29tQm94SW5VaUNvb3JkaW5hdGUud2lkdGgpKCJ5IixlLnpvb21Cb3hJblVpQ29vcmRpbmF0ZS55KSgiaGVpZ2h0IixlLnpvb21Cb3hJblVpQ29vcmRpbmF0ZS5oZWlnaHQpfX12YXIgS0d0PWZ1bmN0aW9uKG4sdCl7cmV0dXJue2RhdGE6bixjdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkOnR9fTtmdW5jdGlvbiBKR3Qobix0KXtpZihuJjEmJih1KDAsImRpdiIsMTQpLE1vKDEsMTUpLGgoKSksbiYyKXtsZXQgZT1TKCksbz13ZSgxMSk7eCgxKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixlLnRvb2x0aXBUZW1wbGF0ZT9lLnRvb2x0aXBUZW1wbGF0ZTpvKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGhsKDIsS0d0LGUuY3Vyc29yZWREYXRhLGUuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZCkpfX1mdW5jdGlvbiAkR3Qobix0KXtpZihuJjEmJihFbigwKSx1KDEsInRyIiwxNyksdSgyLCJ0ZCIsMTgpLEQoMywic3BhbiIpLGgoKSx1KDQsInRkIiwxOSksVCg1KSxoKCksdSg2LCJ0ZCIpLFQoNyksaCgpLHUoOCwidGQiKSxUKDkpLGgoKSxoKCksa24oKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdDt4KDMpLHFlKCJiYWNrZ3JvdW5kLWNvbG9yIixlLm1ldGFkYXRhLmNvbG9yKSx4KDIpLEllKGUubWV0YWRhdGEuZGlzcGxheU5hbWUpLHgoMiksSWUoZS5wb2ludC55KSx4KDIpLEllKGUucG9pbnQueCl9fWZ1bmN0aW9uIHQ5dChuLHQpe2lmKG4mMSYmKHUoMCwidGFibGUiKSx1KDEsInRoZWFkIiksdSgyLCJ0ciIpLEQoMywidGgiLDE2KSx1KDQsInRoIiksVCg1LCJOYW1lIiksaCgpLHUoNiwidGgiKSxUKDcsIlkiKSxoKCksdSg4LCJ0aCIpLFQoOSwiWCIpLGgoKSxoKCksaCgpLHUoMTAsInRib2R5IiksaygxMSwkR3QsMTAsNSwibmctY29udGFpbmVyIiwxMCksaCgpLGgoKSksbiYyKXtsZXQgZT10LmRhdGEsbz1TKCk7eCgxMSksUCgibmdGb3JPZiIsZSkoIm5nRm9yVHJhY2tCeSIsby50cmFja0J5U2VyaWVzTmFtZSl9fXZhciBXczsoZnVuY3Rpb24obil7bltuLk5PTkU9MF09Ik5PTkUiLG5bbi5EUkFHX1pPT01JTkc9MV09IkRSQUdfWk9PTUlORyIsbltuLlNDUk9MTF9aT09NSU5HPTJdPSJTQ1JPTExfWk9PTUlORyIsbltuLlBBTk5JTkc9M109IlBBTk5JTkcifSkoV3N8fChXcz17fSkpO3ZhciBlOXQ9LjAxO2Z1bmN0aW9uIHJ1dChuKXtyZXR1cm4gbi5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX12YXIgRGQ9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy5zY3JvbGxTdHJhdGVneT1lLHRoaXMub25WaWV3RXh0ZW50Q2hhbmdlPW5ldyAkLHRoaXMub25WaWV3RXh0ZW50UmVzZXQ9bmV3ICQsdGhpcy5JbnRlcmFjdGlvblN0YXRlPVdzLHRoaXMuc3RhdGU9V3MuTk9ORSx0aGlzLnNwZWNpYWxLZXlQcmVzc2VkPSExLHRoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4OjAsd2lkdGg6MCxoZWlnaHQ6MCx5OjB9LHRoaXMudG9vbHRpcFBvc2l0aW9ucz1be29mZnNldFk6NSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlZOiJ0b3AifSx7b2Zmc2V0WTo1LG9yaWdpblg6ImVuZCIsb3ZlcmxheVg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WToidG9wIn0se29mZnNldFk6LTE1LG9yaWdpblg6InN0YXJ0IixvdmVybGF5WDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvZmZzZXRZOi0xNSxvcmlnaW5YOiJlbmQiLG92ZXJsYXlYOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvZmZzZXRYOjUsb3JpZ2luWDoiZW5kIixvdmVybGF5WDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6InRvcCJ9LHtvZmZzZXRYOi01LG9yaWdpblg6InN0YXJ0IixvdmVybGF5WDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJ0b3AifV0sdGhpcy5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkPW51bGwsdGhpcy5jdXJzb3JlZERhdGE9W10sdGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPSExLHRoaXMuc2hvd1pvb21JbnN0cnVjdGlvbj0hMSx0aGlzLmRyYWdTdGFydENvb3JkPW51bGwsdGhpcy5pc0N1cnNvckluc2lkZT0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEp0fW5nQWZ0ZXJWaWV3SW5pdCgpe2pvKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJkYmxjbGljayIse3Bhc3NpdmU6ITB9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKT0+e3RoaXMub25WaWV3RXh0ZW50UmVzZXQuZW1pdCgpLHRoaXMuc3RhdGU9V3MuTk9ORSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfSksam8od2luZG93LCJrZXlkb3duIix7cGFzc2l2ZTohMH0pLnBpcGUoUGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKHQ9PntsZXQgZT10aGlzLnNob3VsZFBhbih0KTtlIT09dGhpcy5zcGVjaWFsS2V5UHJlc3NlZCYmKHRoaXMuc3BlY2lhbEtleVByZXNzZWQ9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pLGpvKHdpbmRvdywia2V5dXAiLHtwYXNzaXZlOiEwfSkucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUodD0+e2xldCBlPXRoaXMuc2hvdWxkUGFuKHQpO2UhPT10aGlzLnNwZWNpYWxLZXlQcmVzc2VkJiYodGhpcy5zcGVjaWFsS2V5UHJlc3NlZD1lLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSksam8odGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlZG93biIse3Bhc3NpdmU6ITB9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSh0PT57bGV0IGU9dGhpcy5zdGF0ZSxvPXRoaXMuc2hvdWxkUGFuKHQpP1dzLlBBTk5JTkc6V3MuRFJBR19aT09NSU5HO2U9PT1Xcy5OT05FJiZvPT09V3MuRFJBR19aT09NSU5HJiYodGhpcy5kcmFnU3RhcnRDb29yZD17eDp0Lm9mZnNldFgseTp0Lm9mZnNldFl9LHRoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4OnQub2Zmc2V0WCx3aWR0aDowLHk6dC5vZmZzZXRZLGhlaWdodDowfSksZSE9PW8mJih0aGlzLnN0YXRlPW8sdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSxqbyh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2V1cCIse3Bhc3NpdmU6ITB9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSh0PT57bGV0IGU9KHQuYnV0dG9ucyZ5MC5MRUZUKT09PXkwLkxFRlQ7dGhpcy5kcmFnU3RhcnRDb29yZD1udWxsO2xldCBvPXRoaXMuem9vbUJveEluVWlDb29yZGluYXRlO2lmKCFlJiZ0aGlzLnN0YXRlPT09V3MuRFJBR19aT09NSU5HJiZvLndpZHRoPjAmJm8uaGVpZ2h0PjApe2xldCBpPXRoaXMuZ2V0RGF0YVgoby54KSxhPXRoaXMuZ2V0RGF0YVgoby54K28ud2lkdGgpLHI9dGhpcy5nZXREYXRhWShvLnkrby5oZWlnaHQpLHM9dGhpcy5nZXREYXRhWShvLnkpO3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6e3g6W2ksYV0seTpbcixzXX19KX10aGlzLnN0YXRlIT09V3MuTk9ORSYmKHRoaXMuc3RhdGU9V3MuTk9ORSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pLGpvKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZWVudGVyIix7cGFzc2l2ZTohMH0pLnBpcGUoUGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKHQ9Pnt0aGlzLmlzQ3Vyc29ySW5zaWRlPSEwLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfSksam8odGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlbGVhdmUiLHtwYXNzaXZlOiEwfSkucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUodD0+e3RoaXMuZHJhZ1N0YXJ0Q29vcmQ9bnVsbCx0aGlzLmlzQ3Vyc29ySW5zaWRlPSExLHRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLnN0YXRlPVdzLk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pLGpvKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZW1vdmUiLHtwYXNzaXZlOiEwfSkucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUodD0+e3N3aXRjaCh0aGlzLnN0YXRlKXtjYXNlIFdzLlNDUk9MTF9aT09NSU5HOnt0aGlzLnN0YXRlPVdzLk5PTkUsdGhpcy51cGRhdGVUb29sdGlwKHQpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7YnJlYWt9Y2FzZSBXcy5OT05FOnRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO2JyZWFrO2Nhc2UgV3MuUEFOTklORzp7bGV0IGU9LXQubW92ZW1lbnRYLG89LXQubW92ZW1lbnRZLHt3aWR0aDppLGhlaWdodDphfT10aGlzLmRvbURpbSxyPXRoaXMuZ2V0RGF0YVgoZSkscz10aGlzLmdldERhdGFYKGkrZSksbD10aGlzLmdldERhdGFZKGErbyksYz10aGlzLmdldERhdGFZKG8pO3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6e3g6W3Isc10seTpbbCxjXX19KTticmVha31jYXNlIFdzLkRSQUdfWk9PTUlORzp7aWYoIXRoaXMuZHJhZ1N0YXJ0Q29vcmQpYnJlYWs7bGV0IGU9W3RoaXMuZHJhZ1N0YXJ0Q29vcmQueCx0Lm9mZnNldFhdLG89W3RoaXMuZHJhZ1N0YXJ0Q29vcmQueSx0Lm9mZnNldFldO3RoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4Ok1hdGgubWluKC4uLmUpLHdpZHRoOk1hdGgubWF4KC4uLmUpLU1hdGgubWluKC4uLmUpLHk6TWF0aC5taW4oLi4ubyksaGVpZ2h0Ok1hdGgubWF4KC4uLm8pLU1hdGgubWluKC4uLm8pfX10aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO2JyZWFrfX0pLGpvKHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJ3aGVlbCIse3Bhc3NpdmU6ITF9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksdGkodD0+e2xldCBlPSF0LmN0cmxLZXkmJiF0LnNoaWZ0S2V5JiZ0LmFsdEtleTtyZXR1cm4gdGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSFlLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksZT8odC5wcmV2ZW50RGVmYXVsdCgpLGRuKHQpKTp1ZygzZTMpLnBpcGUoYW4oKCk9Pnt0aGlzLnNob3dab29tSW5zdHJ1Y3Rpb249ITEsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pLEcoKCk9Pm51bGwpKX0pLHVlKHQ9PkJvb2xlYW4odCkpKS5zdWJzY3JpYmUodD0+e2xldCBlPXQ7dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdCh7ZGF0YUV4dGVudDphdXQoZSx0aGlzLnZpZXdFeHRlbnQsdGhpcy5kb21EaW0sZTl0LHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKX0pLHRoaXMuc3RhdGUhPT1Xcy5TQ1JPTExfWk9PTUlORyYmKHRoaXMuc3RhdGU9V3MuU0NST0xMX1pPT01JTkcsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KX1uZ09uQ2hhbmdlcygpe3RoaXMudXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9c2hvdWxkUGFuKHQpe2xldCBlPXQuc2hpZnRLZXl8fHQuYWx0S2V5O2lmKHQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KXJldHVybiBlO2xldCBvPSh0LmJ1dHRvbnMmeTAuTEVGVCk9PT15MC5MRUZULGk9KHQuYnV0dG9ucyZ5MC5NSURETEUpPT09eTAuTUlERExFO3JldHVybiFvJiYhaT8hMTppJiYhb3x8ZX10cmFja0J5U2VyaWVzTmFtZSh0LGUpe3JldHVybiBlLmlkfWdldERvbVgodCl7cmV0dXJuIHRoaXMueFNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LngsSU8odGhpcy5kb21EaW0sIngiKSx0KX1nZXREYXRhWCh0KXtyZXR1cm4gdGhpcy54U2NhbGUucmV2ZXJzZSh0aGlzLnZpZXdFeHRlbnQueCxJTyh0aGlzLmRvbURpbSwieCIpLHQpfWdldERvbVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LnksSU8odGhpcy5kb21EaW0sInkiKSx0KX1nZXREYXRhWSh0KXtyZXR1cm4gdGhpcy55U2NhbGUucmV2ZXJzZSh0aGlzLnZpZXdFeHRlbnQueSxJTyh0aGlzLmRvbURpbSwieSIpLHQpfXNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0KXtyZXR1cm4gdCE9PW51bGwmJiFpc05hTih0LngpJiYhaXNOYU4odC55KX11cGRhdGVUb29sdGlwKHQpe3RoaXMuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZD17eDp0aGlzLmdldERhdGFYKHQub2Zmc2V0WCkseTp0aGlzLmdldERhdGFZKHQub2Zmc2V0WSl9LHRoaXMudXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKX1vblRvb2x0aXBEaXNwbGF5RGV0YWNoZWQoKXt0aGlzLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQ9ITF9dXBkYXRlQ3Vyc29yZWREYXRhQW5kVG9vbHRpcFZpc2liaWxpdHkoKXtsZXQgdD10aGlzLmN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQ7aWYodD09PW51bGwpe3RoaXMuY3Vyc29yZWREYXRhPVtdLHRoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD0hMTtyZXR1cm59dGhpcy5jdXJzb3JlZERhdGE9dGhpcy5pc0N1cnNvckluc2lkZT90aGlzLnNlcmllc0RhdGEubWFwKGU9Pih7c2VyaWVzRGF0dW06ZSxtZXRhZGF0YTp0aGlzLnNlcmllc01ldGFkYXRhTWFwW2UuaWRdfSkpLmZpbHRlcigoe21ldGFkYXRhOmV9KT0+ZSYmZS52aXNpYmxlJiYhQm9vbGVhbihlLmF1eCkpLm1hcCgoe3Nlcmllc0RhdHVtOmUsbWV0YWRhdGE6b30pPT57bGV0IGk9QTQoZS5wb2ludHMsdC54KTtyZXR1cm57aWQ6ZS5pZCxjbG9zZXN0UG9pbnRJbmRleDppLHBvaW50OmUucG9pbnRzW2ldLG1ldGFkYXRhOm99fSkuZmlsdGVyKGU9PmUpOltdLHRoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD1Cb29sZWFuKHRoaXMuY3Vyc29yZWREYXRhLmxlbmd0aCl9fTtEZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxEZCkodihUdCksdihNUCkpfTtEZC5cdTAyNzVjbXA9eih7dHlwZTpEZCxzZWxlY3RvcnM6W1sibGluZS1jaGFydC1pbnRlcmFjdGl2ZS12aWV3Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHBlKFdHdCw3LEwpLHBlKGRyLDUpKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLmRvdHNDb250YWluZXI9by5maXJzdCksSHQobz1GdCgpKSYmKGUub3ZlcmxheT1vLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYyJiZtZSgic2hvdy16b29tLWluc3RydWN0aW9uIixlLnNob3dab29tSW5zdHJ1Y3Rpb24pfSxpbnB1dHM6e3Nlcmllc0RhdGE6InNlcmllc0RhdGEiLHNlcmllc01ldGFkYXRhTWFwOiJzZXJpZXNNZXRhZGF0YU1hcCIsdmlld0V4dGVudDoidmlld0V4dGVudCIseFNjYWxlOiJ4U2NhbGUiLHlTY2FsZToieVNjYWxlIixkb21EaW06ImRvbURpbSIsdG9vbHRpcE9yaWdpbkVsOiJ0b29sdGlwT3JpZ2luRWwiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIn0sb3V0cHV0czp7b25WaWV3RXh0ZW50Q2hhbmdlOiJvblZpZXdFeHRlbnRDaGFuZ2UiLG9uVmlld0V4dGVudFJlc2V0OiJvblZpZXdFeHRlbnRSZXNldCJ9LGZlYXR1cmVzOltUZShbe3Byb3ZpZGU6TVAsdXNlRmFjdG9yeTpydXQsZGVwczpbR25dfV0pLFdlXSxkZWNsczoxMix2YXJzOjE1LGNvbnN0czpbWzEsImRvdHMiXSxbImRvdHMiLCIiXSxbNCwibmdJZiJdLFsiY2xhc3MiLCJ6b29tLWJveCIsNCwibmdJZiJdLFsxLCJ6b29tLWluc3RydWN0aW9uIl0sWzEsImluc3RydWN0aW9uLWNvbnRlbnQiXSxbImNka092ZXJsYXlPcmlnaW4iLCIiLDEsInRvb2x0aXAtb3JpZ2luIl0sWyJ0b29sdGlwT3JpZ2luIiwiY2RrT3ZlcmxheU9yaWdpbiJdLFsiY2RrQ29ubmVjdGVkT3ZlcmxheSIsIiIsMywiY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIiwiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCJjZGtDb25uZWN0ZWRPdmVybGF5RmxleGlibGVEaW1lbnNpb25zIiwiY2RrQ29ubmVjdGVkT3ZlcmxheUdyb3dBZnRlck9wZW4iLCJkZXRhY2giXSxbImRlZmF1bHRUb29sdGlwIiwiIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiciIsIjQiLDQsIm5nSWYiXSxbInIiLCI0Il0sWzEsInpvb20tYm94Il0sWzEsInRvb2x0aXAtY29udGFpbmVyIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzEsInRvb2x0aXAtcm93Il0sWzEsInRvb2x0aXAtcm93LWNpcmNsZSJdLFsxLCJuYW1lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoS24oKSx1KDAsInN2ZyIsMCwxKSxrKDIsWEd0LDIsMiwibmctY29udGFpbmVyIiwyKSxrKDMsUUd0LDEsNCwicmVjdCIsMyksaCgpLEdtKCksdSg0LCJkaXYiLDQpLHUoNSwic3BhbiIsNSksVCg2LCJBbHQgKyBTY3JvbGwgdG8gWm9vbSIpLGgoKSxoKCksRCg3LCJkaXYiLDYsNyksayg5LEpHdCwyLDUsIm5nLXRlbXBsYXRlIiw4KSxBKCJkZXRhY2giLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub29sdGlwRGlzcGxheURldGFjaGVkKCl9KSxrKDEwLHQ5dCwxMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCw5LHhuKSksdCYyJiYobWUoInBhbm5hYmxlIixlLnNwZWNpYWxLZXlQcmVzc2VkKSgiZHJhZ2dhYmxlIixlLnN0YXRlPT09ZS5JbnRlcmFjdGlvblN0YXRlLk5PTkV8fGUuc3RhdGU9PT1lLkludGVyYWN0aW9uU3RhdGUuRFJBR19aT09NSU5HKSgicGFubmluZyIsZS5zdGF0ZT09PWUuSW50ZXJhY3Rpb25TdGF0ZS5QQU5OSU5HKSx4KDIpLFAoIm5nSWYiLGUuc3RhdGU9PT1lLkludGVyYWN0aW9uU3RhdGUuTk9ORSkseCgxKSxQKCJuZ0lmIixlLnN0YXRlPT09ZS5JbnRlcmFjdGlvblN0YXRlLkRSQUdfWk9PTUlORykseCg2KSxQKCJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIixlLnRvb2x0aXBPcmlnaW5FbCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIixlLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQmJmUuc3RhdGU9PT1lLkludGVyYWN0aW9uU3RhdGUuTk9ORSkoImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLGUudG9vbHRpcFBvc2l0aW9ucykoImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsZS5zY3JvbGxTdHJhdGVneSkoImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCExKSgiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyIsITApKCJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiIsITApKX0sZGlyZWN0aXZlczpbWHQsTWwsZHIsbW4sTGFdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlO3VzZXItc2VsZWN0Om5vbmV9LmRvdHNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmRvdHMuZHJhZ2dhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6Y3Jvc3NoYWlyfS5kb3RzLnBhbm5hYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6Z3JhYn0uZG90cy5wYW5uaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6Z3JhYmJpbmd9LnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7aGVpZ2h0OjEycHg7d2lkdGg6MTJweH0udG9vbHRpcC1yb3ctY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IHNwYW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuNik7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwcHg7d2lkdGg6MTBweH0udG9vbHRpcC1vcmlnaW5bX25nY29udGVudC0lQ09NUCVde2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowfS50b29sdGlwLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC44NSk7Ym9yZGVyLXJhZGl1czo0cHg7Y29sb3I6I2ZmZjtjb250YWluOnBhaW50IHN0eWxlIGxheW91dDtmb250LXNpemU6LjllbTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6NXB4O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJX10aFtfbmdjb250ZW50LSVDT01QJV0sIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCA1cHg7dGV4dC1hbGlnbjpsZWZ0fXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo1MDA7cGFkZGluZy1ib3R0b206NXB4fS56b29tLWJveFtfbmdjb250ZW50LSVDT01QJV17ZmlsbC1vcGFjaXR5Oi4wMztmaWxsOiMwMDA7c3Ryb2tlOiNjY2N9Lnpvb20taW5zdHJ1Y3Rpb25bX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZWZ0OjA7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MTBweDt0cmFuc2l0aW9uOm9wYWNpdHkgLjVzO3otaW5kZXg6MX0uaW5zdHJ1Y3Rpb24tY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC42KTtib3JkZXItcmFkaXVzOjVweDtjb2xvcjojZmZmO3BhZGRpbmc6NXB4IDEwcHg7dXNlci1zZWxlY3Q6bm9uZX0uc2hvdy16b29tLWluc3RydWN0aW9uW19uZ2hvc3QtJUNPTVAlXSAgIC56b29tLWluc3RydWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRGQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciLHRlbXBsYXRlVXJsOiIuL2xpbmVfY2hhcnRfaW50ZXJhY3RpdmVfdmlldy5uZy5odG1sIixzdHlsZVVybHM6WyIuL2xpbmVfY2hhcnRfaW50ZXJhY3RpdmVfdmlldy5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHByb3ZpZGVyczpbe3Byb3ZpZGU6TVAsdXNlRmFjdG9yeTpydXQsZGVwczpbR25dfV19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlR0fSx7dHlwZTpNUH1dfSx7ZG90c0NvbnRhaW5lcjpbe3R5cGU6SXQsYXJnczpbImRvdHMiLHtzdGF0aWM6ITAscmVhZDpMfV19XSxvdmVybGF5Olt7dHlwZTpJdCxhcmdzOltkcl19XSxzZXJpZXNEYXRhOlt7dHlwZTpkfV0sc2VyaWVzTWV0YWRhdGFNYXA6W3t0eXBlOmR9XSx2aWV3RXh0ZW50Olt7dHlwZTpkfV0seFNjYWxlOlt7dHlwZTpkfV0seVNjYWxlOlt7dHlwZTpkfV0sZG9tRGltOlt7dHlwZTpkfV0sdG9vbHRpcE9yaWdpbkVsOlt7dHlwZTpkfV0sdG9vbHRpcFRlbXBsYXRlOlt7dHlwZTpkfV0sb25WaWV3RXh0ZW50Q2hhbmdlOlt7dHlwZTpCfV0sb25WaWV3RXh0ZW50UmVzZXQ6W3t0eXBlOkJ9XSxzaG93Wm9vbUluc3RydWN0aW9uOlt7dHlwZTpIYSxhcmdzOlsiY2xhc3Muc2hvdy16b29tLWluc3RydWN0aW9uIl19XX0pfSkoKTtmdW5jdGlvbiBvOXQobil7bGV0IHQ9bi50b0V4cG9uZW50aWFsKCkuc3BsaXQoImUtIiwyKTtyZXR1cm4gdC5sZW5ndGg9PT0yP051bWJlcih0WzFdKS0xOjB9ZnVuY3Rpb24gTkYobix0LGUsbyl7bGV0IGk9bi50aWNrcyhvLGUpO3JldHVybnttYWpvcjpbXSxtaW5vcjppLm1hcChhPT4oe3ZhbHVlOmEsdGlja0Zvcm1hdHRlZFN0cmluZzp0LmZvcm1hdFRpY2soYSl9KSl9fWZ1bmN0aW9uIHN1dChuLHQsZSxvKXtsZXRbaSxhXT1vLHI9bi50aWNrcyhvLDIpO2lmKGEtaT49ODY0ZTV8fHIubGVuZ3RoPjIpcmV0dXJuIE5GKG4sdCxlLG8pO2xldCBzPW4udGlja3MobyxlKTtyZXR1cm57bWFqb3I6ci5tYXAobD0+KHtzdGFydDpsLHRpY2tGb3JtYXR0ZWRTdHJpbmc6dC5mb3JtYXRTaG9ydChsKX0pKSxtaW5vcjpzLm1hcChsPT4oe3ZhbHVlOmwsdGlja0Zvcm1hdHRlZFN0cmluZzp0LmZvcm1hdFRpY2sobCl9KSl9fWZ1bmN0aW9uIGx1dChuLHQsZSxvKXtsZXRbaSxhXT1vLHI9TWF0aC5hYnMoYS1pKTtpZihyPi4wMDEpcmV0dXJuIE5GKG4sdCxlLG8pO2xldCBzPW4udGlja3MoW2ksYV0sZSksbD1uLnRpY2tzKFtpLGFdLDIpLGM9W10sbT1vOXQocik7cjwxJiZsLmV2ZXJ5KGc9PntsZXQgXz1NYXRoLmFicyhnKTtyZXR1cm4gXz49MCYmXzwxfSkmJihtKz0xKTtsZXQgZj1uZXcgTWFwO2ZvcihsZXQgZyBvZiBsKXtsZXRbXyxNPSIiXT1TdHJpbmcoZykuc3BsaXQoIi4iLDIpLHk9TnVtYmVyKF8rIi4iK00uc2xpY2UoMCxtKSk7Zi5zZXQoeSx7c3RhcnQ6eSx0aWNrRm9ybWF0dGVkU3RyaW5nOnk9PT0wPyJcdTIwMTQiOnQuZm9ybWF0UmVhZGFibGUoeSl9KX1sZXQgcD0xMCpNYXRoLnBvdygxMCwtbSk7Zm9yKGxldCBnIG9mIHMpZm9yKGxldCBfIG9mWy4uLmYua2V5cygpXS5yZXZlcnNlKCkpe2xldCBNPWctXztpZihNPj0wJiZNPHApe2lmKF89PT0wKWMucHVzaCh7dmFsdWU6Zyx0aWNrRm9ybWF0dGVkU3RyaW5nOnQuZm9ybWF0VGljayhnKX0pO2Vsc2V7bGV0IHk9U3RyaW5nKGcpLnNsaWNlKFN0cmluZyhfKS5sZW5ndGgpO2MucHVzaCh7dmFsdWU6Zyx0aWNrRm9ybWF0dGVkU3RyaW5nOmBcdTIwMjYke3l8fCIwIn1gfSl9YnJlYWt9fXJldHVybnttYWpvcjpBcnJheS5mcm9tKGYudmFsdWVzKCkpLG1pbm9yOmN9fXZhciBzWj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpO2Z1bmN0aW9uIGN1dChuLHQsZSxvLGk9NSl7aWYoIW4ubGVuZ3RofHwhc1opcmV0dXJuIG47bGV0IGE9ZT09PSJ4Ij8xOi0xLHI9bnVsbDtyZXR1cm4gbi5maWx0ZXIocz0+e2xldCBsPXQocyk7c1ouZm9udD1vO2xldCBjPXNaLm1lYXN1cmVUZXh0KHMudGlja0Zvcm1hdHRlZFN0cmluZyksbT1lPT09IngiP2Mud2lkdGg6Yy5hY3R1YWxCb3VuZGluZ0JveEFzY2VudC1jLmFjdHVhbEJvdW5kaW5nQm94RGVzY2VudDtyZXR1cm4gcj09PW51bGw/bCthKm08MD8hMToocj1sK2EqbSwhMCk6YSoocithKmktbCk+MD8hMToocj1sK2EqbSwhMCl9KX1mdW5jdGlvbiBpOXQobix0KXtpZihuJjEmJihLbigpLHUoMCwiZyIsMTcpLHUoMSwidGV4dCIpLFQoMiksaCgpLHUoMywidGl0bGUiKSxUKDQpLGgoKSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKCk7eCgxKSxxZSgiZm9udCIsby5heGlzRm9udCkscmUoIngiLG8udGV4dFhQb3NpdGlvbihlLnZhbHVlKSkoInkiLG8udGV4dFlQb3NpdGlvbihlLnZhbHVlKSkseCgxKSxsZSgiICIsZS50aWNrRm9ybWF0dGVkU3RyaW5nLCIgIikseCgyKSxJZShvLmdldEZvcm1hdHRlcigpLmZvcm1hdExvbmcoZS52YWx1ZSkpfX1mdW5jdGlvbiBhOXQobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDIwKSx1KDEsInNwYW4iKSxUKDIpLGgoKSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz10LmluZGV4LGk9dC5sYXN0LGE9UygyKTtxZSgibGVmdCIsYS5nZXRNYWpvclhQb3NpdGlvbihlKSwicHgiKSgid2lkdGgiLGEuZ2V0TWFqb3JXaWR0aFN0cmluZyhlLGksYS5tYWpvclRpY2tzW28rMV0pKSgiYm90dG9tIixhLmdldE1ham9yWVBvc2l0aW9uKGUpLCJweCIpKCJoZWlnaHQiLGEuZ2V0TWFqb3JIZWlnaHRTdHJpbmcoZSxpLGEubWFqb3JUaWNrc1tvKzFdKSkoImZvbnQiLGEuYXhpc0ZvbnQpLG1lKCJtYWpvci1sYWJlbCIsITApKCJsYXN0IixpKSxQKCJ0aXRsZSIsYS5nZXRGb3JtYXR0ZXIoKS5mb3JtYXRMb25nKGUuc3RhcnQpKSx4KDIpLEllKGUudGlja0Zvcm1hdHRlZFN0cmluZyl9fWZ1bmN0aW9uIHI5dChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwxOCksaygxLGE5dCwzLDE2LCJzcGFuIiwxOSksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLFAoIm5nRm9yT2YiLGUubWFqb3JUaWNrcykoIm5nRm9yVHJhY2tCeSIsZS50cmFja0J5TWFqb3JUaWNrKX19dmFyIHM5dD0iMTFweCBSb2JvdG8sIHNhbnMtc2VyaWYiLElkPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2U9bmV3ICQsdGhpcy5lZGl0TWVudU9wZW5lZD0hMSx0aGlzLm1ham9yVGlja3M9W10sdGhpcy5taW5vclRpY2tzPVtdfW5nT25DaGFuZ2VzKCl7bGV0IHQ9bnVsbCxlPXRoaXMuYXhpcz09PSJ4Ij90aGlzLmRvbURpbS53aWR0aDp0aGlzLmRvbURpbS5oZWlnaHQsbz1UNChlLHRoaXMuZ3JpZENvdW50KTt0aGlzLnNjYWxlIGluc3RhbmNlb2YgRjU/dD1sdXQodGhpcy5zY2FsZSx0aGlzLmdldEZvcm1hdHRlcigpLG8sdGhpcy5heGlzRXh0ZW50KTp0aGlzLnNjYWxlIGluc3RhbmNlb2YgTDU/dD1zdXQodGhpcy5zY2FsZSx0aGlzLmdldEZvcm1hdHRlcigpLG8sdGhpcy5heGlzRXh0ZW50KTp0PU5GKHRoaXMuc2NhbGUsdGhpcy5nZXRGb3JtYXR0ZXIoKSxvLHRoaXMuYXhpc0V4dGVudCksdGhpcy5tYWpvclRpY2tzPXQubWFqb3IsdGhpcy5taW5vclRpY2tzPWN1dCh0Lm1pbm9yLGk9PnRoaXMuZ2V0RG9tUG9zKGkudmFsdWUpLHRoaXMuYXhpcyxzOXQpfWdldEZvcm1hdHRlcigpe3ZhciB0O3JldHVybih0PXRoaXMuY3VzdG9tRm9ybWF0dGVyKSE9PW51bGwmJnQhPT12b2lkIDA/dDp0aGlzLnNjYWxlLmRlZmF1bHRGb3JtYXR0ZXJ9dHJhY2tCeU1pbm9yVGljayh0KXtyZXR1cm4gdC52YWx1ZX10cmFja0J5TWFqb3JUaWNrKHQpe3JldHVybiB0LnN0YXJ0fWdldERvbVBvcyh0KXtyZXR1cm4gdGhpcy5zY2FsZS5mb3J3YXJkKHRoaXMuYXhpc0V4dGVudCxJTyh0aGlzLmRvbURpbSx0aGlzLmF4aXMpLHQpfXRleHRYUG9zaXRpb24odCl7cmV0dXJuIHRoaXMuYXhpcz09PSJ4Ij9TdHJpbmcodGhpcy5nZXREb21Qb3ModCkpOiIxMDAlIn10ZXh0WVBvc2l0aW9uKHQpe3JldHVybiB0aGlzLmF4aXM9PT0ieCI/IiI6U3RyaW5nKHRoaXMuZ2V0RG9tUG9zKHQpKX1nZXRNYWpvclhQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5heGlzPT09InkiPzA6TWF0aC5taW4odGhpcy5kb21EaW0ud2lkdGgsTWF0aC5tYXgoMCx0aGlzLmdldERvbVBvcyh0LnN0YXJ0KSkpfWdldE1ham9yV2lkdGhTdHJpbmcodCxlLG8pe3JldHVybiB0aGlzLmF4aXM9PT0ieSI/IiI6KGV8fCFvP3RoaXMuZG9tRGltLndpZHRoOnRoaXMuZ2V0TWFqb3JYUG9zaXRpb24obykpLXRoaXMuZ2V0TWFqb3JYUG9zaXRpb24odCkrInB4In1nZXRNYWpvcllQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5heGlzPT09IngiPzA6dGhpcy5kb21EaW0uaGVpZ2h0LU1hdGgubWluKHRoaXMuZG9tRGltLmhlaWdodCxNYXRoLm1heCgwLHRoaXMuZ2V0RG9tUG9zKHQuc3RhcnQpKSl9Z2V0TWFqb3JIZWlnaHRTdHJpbmcodCxlLG8pe3JldHVybiB0aGlzLmF4aXM9PT0ieCI/IiI6KGV8fCFvP3RoaXMuZG9tRGltLmhlaWdodDp0aGlzLmdldE1ham9yWVBvc2l0aW9uKG8pKS10aGlzLmdldE1ham9yWVBvc2l0aW9uKHQpKyJweCJ9a2V5ZG93blByZXZlbnRDbG9zZSh0KXt0LmtleSE9PSJFc2NhcGUiJiZ0LnN0b3BQcm9wYWdhdGlvbigpfWV4dGVudENoYW5nZWQodCxlKXtsZXQgbz1OdW1iZXIodCksaT1OdW1iZXIoZSk7aWYoaTxvKXtsZXQgYT1vO289aSxpPWF9IU51bWJlci5pc0Zpbml0ZShvKXx8IU51bWJlci5pc0Zpbml0ZShpKXx8dGhpcy5vblZpZXdFeHRlbnRDaGFuZ2UuZW1pdChbbyxpXSl9b25BeGlzVXBkYXRlTWVudU9wZW4odCxlLG8pe3QudmFsdWU9U3RyaW5nKG9bMF0pLGUudmFsdWU9U3RyaW5nKG9bMV0pLHQuZm9jdXMoKX1zZXRFZGl0TWVudU9wZW5lZCh0KXt0aGlzLmVkaXRNZW51T3BlbmVkPXR9fTtJZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxJZCl9O0lkLlx1MDI3NWNtcD16KHt0eXBlOklkLHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWF4aXMiXV0saW5wdXRzOntheGlzRXh0ZW50OiJheGlzRXh0ZW50IixheGlzOiJheGlzIixzY2FsZToic2NhbGUiLGdyaWRDb3VudDoiZ3JpZENvdW50Iixkb21EaW06ImRvbURpbSIsY3VzdG9tRm9ybWF0dGVyOiJjdXN0b21Gb3JtYXR0ZXIifSxvdXRwdXRzOntvblZpZXdFeHRlbnRDaGFuZ2U6Im9uVmlld0V4dGVudENoYW5nZSJ9LGZlYXR1cmVzOltXZV0sZGVjbHM6MjYsdmFyczoxMyxjb25zdHM6W1sxLCJsaW5lIl0sWzEsIm1pbm9yIl0sWzEsInRpY2tzIl0sWyJjbGFzcyIsIm1pbm9yLXRpY2stbGFiZWwiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidGl0bGUiLCJDbGljayB0byBtYW51YWxseSBzZXQgbWluICYgbWF4IHZhbHVlcyIsMywibWF0TWVudVRyaWdnZXJGb3IiLCJtZW51T3BlbmVkIiwibWVudUNsb3NlZCJdLFsibWF0TWVudVRyaWdnZXIiLCJtYXRNZW51VHJpZ2dlciJdLFsic3ZnSWNvbiIsImVkaXRfMjRweCJdLFsiY2xhc3MiLCJtYWpvciB0aWNrcyIsNCwibmdJZiJdLFsieFBvc2l0aW9uIiwiYmVmb3JlIiwzLCJ5UG9zaXRpb24iXSxbIm1hbnVhbENvbnRyb2wiLCJtYXRNZW51Il0sWzEsImV4dGVudC1lZGl0LWlucHV0IiwzLCJjbGljayIsImtleWRvd24iXSxbInR5cGUiLCJudW1iZXIiLDMsInZhbHVlIl0sWyJtaW5JbnB1dCIsIiJdLFsibWF4SW5wdXQiLCIiXSxbMSwiZXh0ZW50LWVkaXQtY29udHJvbCIsMywia2V5ZG93biJdLFsibWF0LXJhaXNlZC1idXR0b24iLCIiLCJjb2xvciIsInByaW1hcnkiLDEsImV4dGVudC1lZGl0LWNoYW5nZSIsMywiY2xpY2siXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMSwiZXh0ZW50LWVkaXQtY2FuY2VsIiwzLCJjbGljayJdLFsxLCJtaW5vci10aWNrLWxhYmVsIl0sWzEsIm1ham9yIiwidGlja3MiXSxbMywibWFqb3ItbGFiZWwiLCJsYXN0IiwibGVmdCIsIndpZHRoIiwiYm90dG9tIiwiaGVpZ2h0IiwiZm9udCIsInRpdGxlIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMywidGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEpe2xldCBvPSR0KCk7dSgwLCJkaXYiKSxEKDEsImRpdiIsMCksdSgyLCJkaXYiLDEpLEtuKCksdSgzLCJzdmciLDIpLGsoNCxpOXQsNSw2LCJnIiwzKSxoKCksR20oKSx1KDUsImJ1dHRvbiIsNCw1KSxBKCJtZW51T3BlbmVkIixmdW5jdGlvbigpe090KG8pO2xldCBhPXdlKDE1KSxyPXdlKDIwKTtyZXR1cm4gZS5vbkF4aXNVcGRhdGVNZW51T3BlbihhLHIsZS5heGlzRXh0ZW50KSxlLnNldEVkaXRNZW51T3BlbmVkKCEwKX0pKCJtZW51Q2xvc2VkIixmdW5jdGlvbigpe3JldHVybiBlLnNldEVkaXRNZW51T3BlbmVkKCExKX0pLEQoNywibWF0LWljb24iLDYpLGgoKSxoKCksayg4LHI5dCwyLDIsImRpdiIsNyksaCgpLHUoOSwibWF0LW1lbnUiLDgsOSksdSgxMSwiZGl2IiwxMCksQSgiY2xpY2siLGZ1bmN0aW9uKGEpe3JldHVybiBhLnN0b3BQcm9wYWdhdGlvbigpfSkoImtleWRvd24iLGZ1bmN0aW9uKGEpe3JldHVybiBlLmtleWRvd25QcmV2ZW50Q2xvc2UoYSl9KSx1KDEyLCJsYWJlbCIpLFQoMTMsIm1pbiIpLGgoKSxEKDE0LCJpbnB1dCIsMTEsMTIpLGgoKSx1KDE2LCJkaXYiLDEwKSxBKCJjbGljayIsZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3RvcFByb3BhZ2F0aW9uKCl9KSgia2V5ZG93biIsZnVuY3Rpb24oYSl7cmV0dXJuIGUua2V5ZG93blByZXZlbnRDbG9zZShhKX0pLHUoMTcsImxhYmVsIiksVCgxOCwibWF4IiksaCgpLEQoMTksImlucHV0IiwxMSwxMyksaCgpLHUoMjEsImRpdiIsMTQpLEEoImtleWRvd24iLGZ1bmN0aW9uKGEpe3JldHVybiBlLmtleWRvd25QcmV2ZW50Q2xvc2UoYSl9KSx1KDIyLCJidXR0b24iLDE1KSxBKCJjbGljayIsZnVuY3Rpb24oKXtPdChvKTtsZXQgYT13ZSgxNSkscj13ZSgyMCkscz13ZSg2KTtyZXR1cm4gZS5leHRlbnRDaGFuZ2VkKGEudmFsdWUsci52YWx1ZSkscy5jbG9zZU1lbnUoKX0pLFQoMjMsIiBDaGFuZ2UgIiksaCgpLHUoMjQsImJ1dHRvbiIsMTYpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBPdChvKSx3ZSg2KS5jbG9zZU1lbnUoKX0pLFQoMjUsIiBDYW5jZWwgIiksaCgpLGgoKSxoKCl9aWYodCYyKXtsZXQgbz13ZSgxMCk7cWYoZS5heGlzKyItYXhpcyBheGlzIikseCg0KSxQKCJuZ0Zvck9mIixlLm1pbm9yVGlja3MpKCJuZ0ZvclRyYWNrQnkiLGUudHJhY2tCeU1pbm9yVGljaykseCgxKSxtZSgiZXh0ZW50LWVkaXQtYnV0dG9uIiwhMCkoImV4dGVudC1lZGl0LW1lbnUtb3BlbmVkIixlLmVkaXRNZW51T3BlbmVkKSxQKCJtYXRNZW51VHJpZ2dlckZvciIsbykseCgzKSxQKCJuZ0lmIixlLm1ham9yVGlja3MubGVuZ3RoKSx4KDEpLFAoInlQb3NpdGlvbiIsZS5heGlzPT09InkiPyJhYm92ZSI6ImJlbG93IikseCg1KSxQKCJ2YWx1ZSIsZS5heGlzRXh0ZW50WzBdKSx4KDUpLFAoInZhbHVlIixlLmF4aXNFeHRlbnRbMV0pfX0sZGlyZWN0aXZlczpbbW4sZm4sVXIsWGUsWHQsaHJdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb250YWluOnN0cmljdDtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVufS5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIHRleHRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6Y3VycmVudENvbG9yO2ZvbnQtc2l6ZToxMXB4O3VzZXItc2VsZWN0Om5vbmV9LmF4aXNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5tYWpvcltfbmdjb250ZW50LSVDT01QJV0sIC5taW5vcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDA7b3ZlcmZsb3c6aGlkZGVufS5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7ZmxleDowIDAgMXB4O2p1c3RpZnktY29udGVudDpzdHJldGNofS50aWNrc1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJX0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubGluZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWJvdHRvbTozcHh9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTp0ZXh0LWJlZm9yZS1lZGdlO3RleHQtYW5jaG9yOm1pZGRsZX0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrc1tfbmdjb250ZW50LSVDT01QJV17LXdlYmtpdC1tYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwKSAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCByZ2JhKDAsIDAsIDAsIDApIDEwMCUpO21hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDApIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSl9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubGluZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6NXB4fS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6Y2VudHJhbDt0ZXh0LWFuY2hvcjplbmR9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudGlja3NbX25nY29udGVudC0lQ09NUCVdey13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDApIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDApIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSl9LmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlO2ZvbnQtc2l6ZTowO2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6NXB4O3RvcDo1cHg7dmlzaWJpbGl0eTpoaWRkZW47d2lkdGg6MjRweH0uZXh0ZW50LWVkaXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTZweDt3aWR0aDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9LmV4dGVudC1lZGl0LWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Y29sdW1uLWdhcDo1cHg7ZGlzcGxheTpncmlkO2ZvbnQtc2l6ZToxMnB4O2dyaWQtdGVtcGxhdGUtY29sdW1uczozMHB4IG1pbm1heChhdXRvLCAxMDBweCk7aGVpZ2h0OjMwcHg7bWFyZ2luOjEwcHggMjBweH0uZXh0ZW50LWVkaXQtaW5wdXRbX25nY29udGVudC0lQ09NUCVdICAgaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtib3JkZXItcmFkaXVzOjRweDtib3JkZXItc3R5bGU6c29saWQ7Y29sb3I6aW5oZXJpdH0uZXh0ZW50LWVkaXQtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3ctcmV2ZXJzZTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmQ7bWFyZ2luOjEwcHggMjBweH0uZXh0ZW50LWVkaXQtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2hlaWdodDozMHB4O2xpbmUtaGVpZ2h0OjEuNDttYXJnaW4tbGVmdDo1cHg7cGFkZGluZzowIDEwcHh9LmF4aXNbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLmV4dGVudC1lZGl0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cy13aXRoaW4gICAuZXh0ZW50LWVkaXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmV4dGVudC1lZGl0LW1lbnUtb3BlbmVkW19uZ2NvbnRlbnQtJUNPTVAlXXt2aXNpYmlsaXR5OnZpc2libGV9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Y29udGFpbjpzdHJpY3R9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcH0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxMDAlfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzllOWU5ZTtwYWRkaW5nOjAgNXB4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsLmxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzllOWU5ZTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjVweCAwO3dpZHRoOjEwMCV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWwubGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSWQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0LWF4aXMiLHRlbXBsYXRlVXJsOiJsaW5lX2NoYXJ0X2F4aXNfdmlldy5uZy5odG1sIixzdHlsZVVybHM6WyJsaW5lX2NoYXJ0X2F4aXNfdmlldy5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtheGlzRXh0ZW50Olt7dHlwZTpkfV0sYXhpczpbe3R5cGU6ZH1dLHNjYWxlOlt7dHlwZTpkfV0sZ3JpZENvdW50Olt7dHlwZTpkfV0sZG9tRGltOlt7dHlwZTpkfV0sY3VzdG9tRm9ybWF0dGVyOlt7dHlwZTpkfV0sb25WaWV3RXh0ZW50Q2hhbmdlOlt7dHlwZTpCfV19KX0pKCk7dmFyIGM5dD1bInNlcmllc1ZpZXciXSxtOXQ9WyJ4QXhpcyJdLGY5dD1bInlBeGlzIl0scDl0PVsiY2hhcnRFbCJdO2Z1bmN0aW9uIGQ5dChuLHQpe2lmKG4mMSYmRCgwLCJsaW5lLWNoYXJ0LWdyaWQtdmlldyIsMTYpLG4mMil7bGV0IGU9UygpO1AoInZpZXdFeHRlbnQiLGUudmlld0JveCkoInhTY2FsZSIsZS54U2NhbGUpKCJ5U2NhbGUiLGUueVNjYWxlKSgieEdyaWRDb3VudCIsZS5YX0dSSURfQ09VTlQpKCJ5R3JpZENvdW50IixlLllfR1JJRF9DT1VOVCkoImRvbURpbSIsZS5kb21EaW1lbnNpb25zLm1haW4pfX1mdW5jdGlvbiBnOXQobix0KXtuJjEmJihLbigpLEQoMCwic3ZnIixudWxsLDE3KSl9ZnVuY3Rpb24gdTl0KG4sdCl7biYxJiZEKDAsImNhbnZhcyIsbnVsbCwxNyl9ZnVuY3Rpb24gaDl0KG4sdCl7aWYobiYxJiYoRW4oMCksaygxLGc5dCwyLDAsInN2ZyIsNSksaygyLHU5dCwyLDAsImNhbnZhcyIsNSksa24oKSksbiYyKXtsZXQgZT1TKCk7eCgxKSxQKCJuZ0lmIixlLmdldFJlbmRlcmVyVHlwZSgpPT09ZS5SZW5kZXJlclR5cGUuU1ZHKSx4KDEpLFAoIm5nSWYiLGUuZ2V0UmVuZGVyZXJUeXBlKCk9PT1lLlJlbmRlcmVyVHlwZS5XRUJHTCl9fWZ1bmN0aW9uIF85dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyIsMTgpLEEoIm9uVmlld0V4dGVudENoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vblZpZXdCb3hDaGFuZ2VkKGkpfSkoIm9uVmlld0V4dGVudFJlc2V0IixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKCkudmlld0JveFJlc2V0KCl9KSxoKCl9aWYobiYyKXtsZXQgZT1TKCksbz13ZSgxKTtQKCJzZXJpZXNEYXRhIixlLnNlcmllc0RhdGEpKCJzZXJpZXNNZXRhZGF0YU1hcCIsZS5zZXJpZXNNZXRhZGF0YU1hcCkoInZpZXdFeHRlbnQiLGUudmlld0JveCkoInhTY2FsZSIsZS54U2NhbGUpKCJ5U2NhbGUiLGUueVNjYWxlKSgidG9vbHRpcE9yaWdpbkVsIixvKSgiZG9tRGltIixlLmRvbURpbWVuc2lvbnMubWFpbikoInRvb2x0aXBUZW1wbGF0ZSIsZS50b29sdGlwVGVtcGxhdGUpfX12YXIgbXV0PWZ1bmN0aW9uKG4sdCxlLG8pe3JldHVybnt4U2NhbGU6bix5U2NhbGU6dCxkb21EaW1lbnNpb246ZSx2aWV3RXh0ZW50Om99fTtmdW5jdGlvbiBDOXQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMTkpLE1vKDEsMjApLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgxKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixlLmN1c3RvbVZpc1RlbXBsYXRlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLFFUKDIsbXV0LGUueFNjYWxlLGUueVNjYWxlLGUuZG9tRGltZW5zaW9ucy5tYWluLGUudmlld0JveCkpfX1mdW5jdGlvbiBNOXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJsaW5lLWNoYXJ0LWF4aXMiLDIxKSxBKCJvblZpZXdFeHRlbnRDaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25WaWV3Qm94Q2hhbmdlZEZyb21BeGlzKGksInkiKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoKTtQKCJheGlzRXh0ZW50IixlLnZpZXdCb3gueSkoImN1c3RvbUZvcm1hdHRlciIsZS5jdXN0b21ZRm9ybWF0dGVyKSgiZG9tRGltIixlLmRvbURpbWVuc2lvbnMueUF4aXMpKCJncmlkQ291bnQiLGUuWV9HUklEX0NPVU5UKSgic2NhbGUiLGUueVNjYWxlKX19ZnVuY3Rpb24gYjl0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwibGluZS1jaGFydC1heGlzIiwyMiksQSgib25WaWV3RXh0ZW50Q2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygpLm9uVmlld0JveENoYW5nZWRGcm9tQXhpcyhpLCJ4Iil9KSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7UCgiYXhpc0V4dGVudCIsZS52aWV3Qm94LngpKCJjdXN0b21Gb3JtYXR0ZXIiLGUuY3VzdG9tWEZvcm1hdHRlcikoImRvbURpbSIsZS5kb21EaW1lbnNpb25zLnhBeGlzKSgiZ3JpZENvdW50IixlLlhfR1JJRF9DT1VOVCkoInNjYWxlIixlLnhTY2FsZSl9fWZ1bmN0aW9uIE85dChuLHQpe24mMSYmKHUoMCwiZGl2IiwyMyksRCgxLCJzcGFuIiwyNCksaCgpKX1mdW5jdGlvbiBQOXQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMjUsMjYpLE1vKDIsMjApLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgyKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixlLmN1c3RvbUNoYXJ0T3ZlcmxheVRlbXBsYXRlKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLFFUKDIsbXV0LGUueFNjYWxlLGUueVNjYWxlLGUuZG9tRGltZW5zaW9ucy5tYWluLGUudmlld0JveCkpfX12YXIgeTl0PWZ1bmN0aW9uKG4sdCl7cmV0dXJue2NvbnRhaW5lcjohMCwiZGFyay1tb2RlIjpuLCJsaW5lLW9ubHktbW9kZSI6dH19LGxaPXt4OlswLDFdLHk6WzAsMV19LFNjPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLlJlbmRlcmVyVHlwZT1rYSx0aGlzLnVzZURhcmtNb2RlPSExLHRoaXMucHJlZmVycmVkUmVuZGVyZXJUeXBlPWthLldFQkdMLHRoaXMueFNjYWxlVHlwZT1Dci5MSU5FQVIsdGhpcy55U2NhbGVUeXBlPUNyLkxJTkVBUix0aGlzLmxpbmVPbmx5PSExLHRoaXMudmlld0JveENoYW5nZWQ9bmV3ICQsdGhpcy5vblZpZXdCb3hPdmVycmlkZGVuPW5ldyBxUygxKSx0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLllfR1JJRF9DT1VOVD02LHRoaXMuWF9HUklEX0NPVU5UPTEwLHRoaXMueFNjYWxlPW5iKHRoaXMueFNjYWxlVHlwZSksdGhpcy55U2NhbGU9bmIodGhpcy54U2NhbGVUeXBlKSx0aGlzLnZpZXdCb3g9bFosdGhpcy5kb21EaW1lbnNpb25zPXttYWluOnt3aWR0aDowLGhlaWdodDowfSx4QXhpczp7d2lkdGg6MCxoZWlnaHQ6MH0seUF4aXM6e3dpZHRoOjAsaGVpZ2h0OjB9fSx0aGlzLnNob3dDaGFydFJlbmRlcmVyRWxlbWVudD0hMCx0aGlzLmxpbmVDaGFydD1udWxsLHRoaXMuaXNEYXRhVXBkYXRlZD0hMSx0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSExLHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSExLHRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbj0hMSx0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy5zY2FsZVVwZGF0ZWQ9ITAsdGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0PSExfW5nT25Jbml0KCl7dGhpcy5vblZpZXdCb3hPdmVycmlkZGVuLm5leHQodGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuKX1uZ09uQ2hhbmdlcyh0KXt0LnhTY2FsZVR5cGUmJih0aGlzLnhTY2FsZT1uYih0aGlzLnhTY2FsZVR5cGUpLHRoaXMuc2NhbGVVcGRhdGVkPSEwKSx0LnlTY2FsZVR5cGUmJih0aGlzLnlTY2FsZT1uYih0aGlzLnlTY2FsZVR5cGUpLHRoaXMuc2NhbGVVcGRhdGVkPSEwKSx0LnNlcmllc0RhdGEmJih0aGlzLmlzRGF0YVVwZGF0ZWQ9ITApLHQuZml4ZWRWaWV3Qm94JiYodGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWQ9ITApLHQuc2VyaWVzTWV0YWRhdGFNYXAmJih0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSEwKSx0LnVzZURhcmtNb2RlJiYodGhpcy51c2VEYXJrTW9kZVVwZGF0ZWQ9ITApLHRoaXMuc2NhbGVVcGRhdGVkJiZ0aGlzLnNldElzVmlld0JveE92ZXJyaWRkZW4oITEpLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD10aGlzLmlzVmlld0JveENoYW5nZWR8fHRoaXMuc2NhbGVVcGRhdGVkfHwhdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuJiZ0aGlzLnNob3VsZFVwZGF0ZURlZmF1bHRWaWV3Qm94KHQpLHRoaXMudXBkYXRlTGluZUNoYXJ0KCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5pbml0aWFsaXplQ2hhcnQoKSx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpfXJlY292ZXJSZW5kZXJlcklmTmVlZGVkKCl7IXRoaXMuaXNSZW5kZXJpbmdDb250ZXh0TG9zdHx8dGhpcy5kaXNhYmxlVXBkYXRlfHwodGhpcy5zaG93Q2hhcnRSZW5kZXJlckVsZW1lbnQ9ITEsdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCksdGhpcy5zaG93Q2hhcnRSZW5kZXJlckVsZW1lbnQ9ITAsdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCksdGhpcy5pbml0aWFsaXplQ2hhcnQoKSx0aGlzLnNjYWxlVXBkYXRlZD0hMCx0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSEwLHRoaXMuaXNEYXRhVXBkYXRlZD0hMCx0aGlzLnVzZURhcmtNb2RlVXBkYXRlZD0hMCx0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMCx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy5pc1JlbmRlcmluZ0NvbnRleHRMb3N0PSExKX1vblZpZXdSZXNpemUoKXshdGhpcy5saW5lQ2hhcnR8fCh0aGlzLnJlYWRBbmRVcGRhdGVEb21EaW1lbnNpb25zKCksdGhpcy5saW5lQ2hhcnQucmVzaXplKHRoaXMuZG9tRGltZW5zaW9ucy5tYWluKSx0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKSl9c2hvdWxkVXBkYXRlRGVmYXVsdFZpZXdCb3godCl7aWYodC54U2NhbGVUeXBlfHx0LnlTY2FsZVR5cGV8fHQuaWdub3JlWU91dGxpZXJzfHx0LnNlcmllc0RhdGEpcmV0dXJuITA7bGV0IG89dC5zZXJpZXNNZXRhZGF0YU1hcDtpZihvKXtsZXQgaT1vLnByZXZpb3VzVmFsdWU7aWYoT2JqZWN0LmtleXModGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkubGVuZ3RoIT09T2JqZWN0LmtleXMoaSE9bnVsbD9pOnt9KS5sZW5ndGgpcmV0dXJuITA7Zm9yKGxldFthLHJdb2YgT2JqZWN0LmVudHJpZXModGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkpe2xldCBzPWkmJmlbYV07aWYoIXN8fHIudmlzaWJsZSE9PXMudmlzaWJsZSlyZXR1cm4hMH19cmV0dXJuITF9b25Db250ZXh0TG9zdCgpe3RoaXMuaXNSZW5kZXJpbmdDb250ZXh0TG9zdD0hMCx0aGlzLmxpbmVDaGFydCYmKHRoaXMubGluZUNoYXJ0LmRpc3Bvc2UoKSx0aGlzLmxpbmVDaGFydD1udWxsKX10cmlnZ2VyQ29udGV4dExvc3RGb3JUZXN0KCl7dGhpcy5vbkNvbnRleHRMb3N0KCl9Z2V0TGluZUNoYXJ0Rm9yVGVzdCgpe3JldHVybiB0aGlzLmxpbmVDaGFydH1pbml0aWFsaXplQ2hhcnQoKXt0aGlzLmxpbmVDaGFydCYmdGhpcy5saW5lQ2hhcnQuZGlzcG9zZSgpO2xldCB0PXRoaXMuZ2V0UmVuZGVyZXJUeXBlKCksZT17b25EcmF3RW5kOigpPT57fSxvbkNvbnRleHRMb3N0OnRoaXMub25Db250ZXh0TG9zdC5iaW5kKHRoaXMpfSxvPW51bGw7c3dpdGNoKHRoaXMucmVhZEFuZFVwZGF0ZURvbURpbWVuc2lvbnMoKSx0KXtjYXNlIGthLlNWRzp7bz17dHlwZTprYS5TVkcsY29udGFpbmVyOnRoaXMuY2hhcnRFbC5uYXRpdmVFbGVtZW50LGNhbGxiYWNrczplLGRvbURpbWVuc2lvbjp0aGlzLmRvbURpbWVuc2lvbnMubWFpbix1c2VEYXJrTW9kZTp0aGlzLnVzZURhcmtNb2RlfTticmVha31jYXNlIGthLldFQkdMOm89e3R5cGU6a2EuV0VCR0wsY29udGFpbmVyOnRoaXMuY2hhcnRFbC5uYXRpdmVFbGVtZW50LGRldmljZVBpeGVsUmF0aW86d2luZG93LmRldmljZVBpeGVsUmF0aW8sY2FsbGJhY2tzOmUsZG9tRGltZW5zaW9uOnRoaXMuZG9tRGltZW5zaW9ucy5tYWluLHVzZURhcmtNb2RlOnRoaXMudXNlRGFya01vZGV9O2JyZWFrO2RlZmF1bHQ6bGV0IHI9dDt0aHJvdyBuZXcgRXJyb3IoYDxsaW5lLWNoYXJ0PiBkb2VzIG5vdCB5ZXQgc3VwcG9ydCByZW5kZXJlclR5cGU6ICR7cn1gKX1sZXQgYT10IT09a2EuU1ZHJiZzSCgpP1UxOkVGO3RoaXMubGluZUNoYXJ0PW5ldyBhKG8pfW5nT25EZXN0cm95KCl7dGhpcy5saW5lQ2hhcnQmJnRoaXMubGluZUNoYXJ0LmRpc3Bvc2UoKX1nZXRSZW5kZXJlclR5cGUoKXtyZXR1cm4gaXV0KHRoaXMucHJlZmVycmVkUmVuZGVyZXJUeXBlKX1yZWFkQW5kVXBkYXRlRG9tRGltZW5zaW9ucygpe3RoaXMuZG9tRGltZW5zaW9ucz17bWFpbjp7d2lkdGg6dGhpcy5zZXJpZXNWaWV3Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsaGVpZ2h0OnRoaXMuc2VyaWVzVmlldy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodH0seEF4aXM6e3dpZHRoOnRoaXMueEF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxoZWlnaHQ6dGhpcy54QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodH0seUF4aXM6e3dpZHRoOnRoaXMueUF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxoZWlnaHQ6dGhpcy55QXhpcy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodH19fXVwZGF0ZUxpbmVDaGFydCgpe3ZhciB0LGU7aWYodGhpcy5yZWNvdmVyUmVuZGVyZXJJZk5lZWRlZCgpLCF0aGlzLmxpbmVDaGFydHx8dGhpcy5kaXNhYmxlVXBkYXRlKXJldHVybjtpZih0aGlzLnNjYWxlVXBkYXRlZCYmKHRoaXMuc2NhbGVVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldFhTY2FsZVR5cGUodGhpcy54U2NhbGVUeXBlKSx0aGlzLmxpbmVDaGFydC5zZXRZU2NhbGVUeXBlKHRoaXMueVNjYWxlVHlwZSkpLHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQmJih0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldE1ldGFkYXRhKHRoaXMuc2VyaWVzTWV0YWRhdGFNYXApKSx0aGlzLmlzRGF0YVVwZGF0ZWQmJih0aGlzLmlzRGF0YVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0RGF0YSh0aGlzLnNlcmllc0RhdGEpKSx0aGlzLnVzZURhcmtNb2RlVXBkYXRlZCYmKHRoaXMudXNlRGFya01vZGVVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldFVzZURhcmtNb2RlKHRoaXMudXNlRGFya01vZGUpKSwhdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuJiZ0aGlzLmZpeGVkVmlld0JveCl0aGlzLnZpZXdCb3g9dGhpcy5maXhlZFZpZXdCb3g7ZWxzZSBpZighdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuJiZ0aGlzLmlzVmlld0JveENoYW5nZWQpe2xldCBpPW91dCh0aGlzLnNlcmllc0RhdGEsdGhpcy5zZXJpZXNNZXRhZGF0YU1hcCx0aGlzLmlnbm9yZVlPdXRsaWVycyx0aGlzLnhTY2FsZS5pc1NhZmVOdW1iZXIsdGhpcy55U2NhbGUuaXNTYWZlTnVtYmVyKTt0aGlzLnZpZXdCb3g9e3g6dGhpcy54U2NhbGUubmljZURvbWFpbigodD1pLngpIT09bnVsbCYmdCE9PXZvaWQgMD90OmxaLngpLHk6dGhpcy55U2NhbGUubmljZURvbWFpbigoZT1pLnkpIT09bnVsbCYmZSE9PXZvaWQgMD9lOmxaLnkpfX0odGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWR8fHRoaXMuaXNWaWV3Qm94Q2hhbmdlZCkmJih0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0Vmlld0JveCh0aGlzLnZpZXdCb3gpLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpKX1vblZpZXdCb3hDaGFuZ2VkKHtkYXRhRXh0ZW50OnR9KXt0aGlzLnNldElzVmlld0JveE92ZXJyaWRkZW4oITApLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLnZpZXdCb3g9dCx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpLHRoaXMudmlld0JveENoYW5nZWQuZW1pdCh0KX12aWV3Qm94UmVzZXQoKXt0aGlzLnNldElzVmlld0JveE92ZXJyaWRkZW4oITEpLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpLHRoaXMudmlld0JveENoYW5nZWQuZW1pdCh0aGlzLnZpZXdCb3gpfXNldElzVmlld0JveE92ZXJyaWRkZW4odCl7bGV0IGU9dGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuO3RoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbj10LGUhPT10JiZ0aGlzLm9uVmlld0JveE92ZXJyaWRkZW4ubmV4dCh0KX1nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCl7cmV0dXJuIHRoaXMub25WaWV3Qm94T3ZlcnJpZGRlbn1vblZpZXdCb3hDaGFuZ2VkRnJvbUF4aXModCxlKXtsZXQgbz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3Qm94KSx7W2VdOnR9KTt0aGlzLm9uVmlld0JveENoYW5nZWQoe2RhdGFFeHRlbnQ6b30pfX07U2MuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8U2MpKHYoVHQpKX07U2MuXHUwMjc1Y21wPXooe3R5cGU6U2Msc2VsZWN0b3JzOltbImxpbmUtY2hhcnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYocGUoYzl0LDcsTCkscGUobTl0LDcsTCkscGUoZjl0LDcsTCkscGUocDl0LDUsTCkpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuc2VyaWVzVmlldz1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS54QXhpcz1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS55QXhpcz1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5jaGFydEVsPW8uZmlyc3QpfX0saW5wdXRzOntjdXN0b21WaXNUZW1wbGF0ZToiY3VzdG9tVmlzVGVtcGxhdGUiLGN1c3RvbUNoYXJ0T3ZlcmxheVRlbXBsYXRlOiJjdXN0b21DaGFydE92ZXJsYXlUZW1wbGF0ZSIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIixwcmVmZXJyZWRSZW5kZXJlclR5cGU6InByZWZlcnJlZFJlbmRlcmVyVHlwZSIsc2VyaWVzRGF0YToic2VyaWVzRGF0YSIsZml4ZWRWaWV3Qm94OiJmaXhlZFZpZXdCb3giLHNlcmllc01ldGFkYXRhTWFwOiJzZXJpZXNNZXRhZGF0YU1hcCIseFNjYWxlVHlwZToieFNjYWxlVHlwZSIseVNjYWxlVHlwZToieVNjYWxlVHlwZSIsY3VzdG9tWEZvcm1hdHRlcjoiY3VzdG9tWEZvcm1hdHRlciIsY3VzdG9tWUZvcm1hdHRlcjoiY3VzdG9tWUZvcm1hdHRlciIsdG9vbHRpcFRlbXBsYXRlOiJ0b29sdGlwVGVtcGxhdGUiLGxpbmVPbmx5OiJsaW5lT25seSIsZGlzYWJsZVVwZGF0ZToiZGlzYWJsZVVwZGF0ZSIsaWdub3JlWU91dGxpZXJzOiJpZ25vcmVZT3V0bGllcnMifSxvdXRwdXRzOnt2aWV3Qm94Q2hhbmdlZDoidmlld0JveENoYW5nZWQifSxmZWF0dXJlczpbV2VdLGRlY2xzOjE2LHZhcnM6MTMsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsImNka092ZXJsYXlPcmlnaW4iLCIiLDMsIm5nQ2xhc3MiLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJvdmVybGF5VGFyZ2V0IiwiY2RrT3ZlcmxheU9yaWdpbiJdLFsxLCJzZXJpZXMtdmlldyJdLFsic2VyaWVzVmlldyIsIiJdLFszLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwieEdyaWRDb3VudCIsInlHcmlkQ291bnQiLCJkb21EaW0iLDQsIm5nSWYiXSxbNCwibmdJZiJdLFszLCJzZXJpZXNEYXRhIiwic2VyaWVzTWV0YWRhdGFNYXAiLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwidG9vbHRpcE9yaWdpbkVsIiwiZG9tRGltIiwidG9vbHRpcFRlbXBsYXRlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiwib25WaWV3RXh0ZW50UmVzZXQiLDQsIm5nSWYiXSxbImNsYXNzIiwiY3VzdG9tLXZpcyIsNCwibmdJZiJdLFsxLCJ5LWF4aXMiXSxbInlBeGlzIiwiIl0sWyJheGlzIiwieSIsMywiYXhpc0V4dGVudCIsImN1c3RvbUZvcm1hdHRlciIsImRvbURpbSIsImdyaWRDb3VudCIsInNjYWxlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiw0LCJuZ0lmIl0sWzEsIngtYXhpcyJdLFsieEF4aXMiLCIiXSxbImF4aXMiLCJ4IiwzLCJheGlzRXh0ZW50IiwiY3VzdG9tRm9ybWF0dGVyIiwiZG9tRGltIiwiZ3JpZENvdW50Iiwic2NhbGUiLCJvblZpZXdFeHRlbnRDaGFuZ2UiLDQsIm5nSWYiXSxbImNsYXNzIiwiZG90Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImN1c3RvbS12aXMgY3VzdG9tLWNoYXJ0LW92ZXJsYXktdmlzIiw0LCJuZ0lmIl0sWzMsInZpZXdFeHRlbnQiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ4R3JpZENvdW50IiwieUdyaWRDb3VudCIsImRvbURpbSJdLFsiY2hhcnRFbCIsIiJdLFszLCJzZXJpZXNEYXRhIiwic2VyaWVzTWV0YWRhdGFNYXAiLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwidG9vbHRpcE9yaWdpbkVsIiwiZG9tRGltIiwidG9vbHRpcFRlbXBsYXRlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiwib25WaWV3RXh0ZW50UmVzZXQiXSxbMSwiY3VzdG9tLXZpcyJdLFszLCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbImF4aXMiLCJ5IiwzLCJheGlzRXh0ZW50IiwiY3VzdG9tRm9ybWF0dGVyIiwiZG9tRGltIiwiZ3JpZENvdW50Iiwic2NhbGUiLCJvblZpZXdFeHRlbnRDaGFuZ2UiXSxbImF4aXMiLCJ4IiwzLCJheGlzRXh0ZW50IiwiY3VzdG9tRm9ybWF0dGVyIiwiZG9tRGltIiwiZ3JpZENvdW50Iiwic2NhbGUiLCJvblZpZXdFeHRlbnRDaGFuZ2UiXSxbMSwiZG90Il0sWzEsInJlY3QiXSxbMSwiY3VzdG9tLXZpcyIsImN1c3RvbS1jaGFydC1vdmVybGF5LXZpcyJdLFsiY3VzdG9tQ2hhcnRPdmVybGF5IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDAsMSksQSgib25SZXNpemUiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25WaWV3UmVzaXplKCl9KSx1KDIsImRpdiIsMiwzKSxrKDQsZDl0LDEsNiwibGluZS1jaGFydC1ncmlkLXZpZXciLDQpLGsoNSxoOXQsMywyLCJuZy1jb250YWluZXIiLDUpLGsoNixfOXQsMSw4LCJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciLDYpLGsoNyxDOXQsMiw3LCJkaXYiLDcpLGgoKSx1KDgsImRpdiIsOCw5KSxrKDEwLE05dCwxLDUsImxpbmUtY2hhcnQtYXhpcyIsMTApLGgoKSx1KDExLCJkaXYiLDExLDEyKSxrKDEzLGI5dCwxLDUsImxpbmUtY2hhcnQtYXhpcyIsMTMpLGgoKSxrKDE0LE85dCwyLDAsImRpdiIsMTQpLGsoMTUsUDl0LDMsNywiZGl2IiwxNSksaCgpKSx0JjImJihQKCJuZ0NsYXNzIixobCgxMCx5OXQsZS51c2VEYXJrTW9kZSxlLmxpbmVPbmx5KSkoInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIiwwKSx4KDQpLFAoIm5nSWYiLCFlLmxpbmVPbmx5KSx4KDEpLFAoIm5nSWYiLGUuc2hvd0NoYXJ0UmVuZGVyZXJFbGVtZW50KSx4KDEpLFAoIm5nSWYiLCFlLmxpbmVPbmx5KSx4KDEpLFAoIm5nSWYiLGUuY3VzdG9tVmlzVGVtcGxhdGUpLHgoMyksUCgibmdJZiIsIWUubGluZU9ubHkpLHgoMyksUCgibmdJZiIsIWUubGluZU9ubHkpLHgoMSksUCgibmdJZiIsIWUubGluZU9ubHkpLHgoMSksUCgibmdJZiIsZS5jdXN0b21DaGFydE92ZXJsYXlUZW1wbGF0ZSkpfSxkaXJlY3RpdmVzOltWcyxNbCxqbixYdCxBZCxEZCxMYSxJZF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6aW5saW5lLWJsb2NrfVtfbmdob3N0LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZX0uY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXQ7ZGlzcGxheTpncmlkO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxMDAlO2dyaWQtdGVtcGxhdGUtYXJlYXM6InlheGlzIHNlcmllcyIgImRvdCB4YXhpcyIgIi4gY3VzdG9tQ2hhcnRPdmVybGF5IjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6NTBweCAxZnI7Z3JpZC1hdXRvLXJvd3M6MWZyIDMwcHggMHB4fS5jb250YWluZXIuZGFyay1tb2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5jb250YWluZXIubGluZS1vbmx5LW1vZGVbX25nY29udGVudC0lQ09NUCVde2dyaWQtdGVtcGxhdGUtY29sdW1uczowIDFmcjtncmlkLWF1dG8tcm93czoxZnIgMH0uc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpzZXJpZXM7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV0sIC5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBjYW52YXNbX25nY29udGVudC0lQ09NUCVdLCAuc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtZ3JpZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlld1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAuY3VzdG9tLXZpc1tfbmdjb250ZW50LSVDT01QJV0sIC55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLmN1c3RvbS12aXNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2xlZnQ6MDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7d2lkdGg6MTAwJTstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDApIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSk7bWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMCkgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKX0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtYXhpc1tfbmdjb250ZW50LSVDT01QJV0sIC55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgbGluZS1jaGFydC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJX0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6eGF4aXM7cG9zaXRpb246cmVsYXRpdmV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnlheGlzfS5kb3RbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7ZGlzcGxheTpmbGV4O2dyaWQtYXJlYTpkb3Q7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5kb3RbX25nY29udGVudC0lQ09NUCVdICAgLnJlY3RbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxcHg7d2lkdGg6MXB4O2JhY2tncm91bmQtY29sb3I6I2FhYX0uY3VzdG9tLWNoYXJ0LW92ZXJsYXktdmlzW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6Y3VzdG9tQ2hhcnRPdmVybGF5O2dyaWQtcm93LWVuZDoyO2dyaWQtcm93LXN0YXJ0OjF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoU2MsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJsaW5lLWNoYXJ0Iix0ZW1wbGF0ZVVybDoibGluZV9jaGFydF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsibGluZV9jaGFydF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VHR9XX0se3Nlcmllc1ZpZXc6W3t0eXBlOkl0LGFyZ3M6WyJzZXJpZXNWaWV3Iix7c3RhdGljOiEwLHJlYWQ6TH1dfV0seEF4aXM6W3t0eXBlOkl0LGFyZ3M6WyJ4QXhpcyIse3N0YXRpYzohMCxyZWFkOkx9XX1dLHlBeGlzOlt7dHlwZTpJdCxhcmdzOlsieUF4aXMiLHtzdGF0aWM6ITAscmVhZDpMfV19XSxjaGFydEVsOlt7dHlwZTpJdCxhcmdzOlsiY2hhcnRFbCIse3N0YXRpYzohMSxyZWFkOkx9XX1dLGN1c3RvbVZpc1RlbXBsYXRlOlt7dHlwZTpkfV0sY3VzdG9tQ2hhcnRPdmVybGF5VGVtcGxhdGU6W3t0eXBlOmR9XSx1c2VEYXJrTW9kZTpbe3R5cGU6ZH1dLHByZWZlcnJlZFJlbmRlcmVyVHlwZTpbe3R5cGU6ZH1dLHNlcmllc0RhdGE6W3t0eXBlOmR9XSxmaXhlZFZpZXdCb3g6W3t0eXBlOmR9XSxzZXJpZXNNZXRhZGF0YU1hcDpbe3R5cGU6ZH1dLHhTY2FsZVR5cGU6W3t0eXBlOmR9XSx5U2NhbGVUeXBlOlt7dHlwZTpkfV0sY3VzdG9tWEZvcm1hdHRlcjpbe3R5cGU6ZH1dLGN1c3RvbVlGb3JtYXR0ZXI6W3t0eXBlOmR9XSx0b29sdGlwVGVtcGxhdGU6W3t0eXBlOmR9XSxsaW5lT25seTpbe3R5cGU6ZH1dLHZpZXdCb3hDaGFuZ2VkOlt7dHlwZTpCfV0sZGlzYWJsZVVwZGF0ZTpbe3R5cGU6ZH1dLGlnbm9yZVlPdXRsaWVyczpbe3R5cGU6ZH1dfSl9KSgpO2Z1bmN0aW9uIHY5dChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsMTApfWZ1bmN0aW9uIHc5dChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsMTApfWZ1bmN0aW9uIFM5dChuLHQpe24mMSYmRCgwLCJkaXYiLDExKX1mdW5jdGlvbiBSOXQobix0KXtuJjEmJkQoMCwibWF0LWljb24iLDEyKX1mdW5jdGlvbiBFOXQobix0KXtuJjEmJkQoMCwibWF0LWljb24iLDEzKX1mdW5jdGlvbiBrOXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7RW4oMCksdSgxLCJ0aCIsMyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGE9T3QoZSkuJGltcGxpY2l0O3JldHVybiBTKCkuaGVhZGVyQ2xpY2tlZChhKX0pLHUoMiwiZGl2Iiw0KSxrKDMsdjl0LDEsMCwibWF0LWljb24iLDUpLGsoNCx3OXQsMSwwLCJtYXQtaWNvbiIsNSksayg1LFM5dCwxLDAsImRpdiIsNiksdSg2LCJzcGFuIiksVCg3KSxoKCksdSg4LCJkaXYiLDcpLGsoOSxSOXQsMSwwLCJtYXQtaWNvbiIsOCksaygxMCxFOXQsMSwwLCJtYXQtaWNvbiIsOSksaCgpLGgoKSxoKCksa24oKX1pZihuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygpO3goMiksUCgibmdTd2l0Y2giLGUpLHgoMSksUCgibmdTd2l0Y2hDYXNlIixvLkNvbHVtbkhlYWRlcnMuVkFMVUVfQ0hBTkdFKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsby5Db2x1bW5IZWFkZXJzLlBFUkNFTlRBR0VfQ0hBTkdFKSx4KDMpLEllKG8uZ2V0SGVhZGVyVGV4dENvbHVtbihlKSkseCgxKSxQKCJuZ0NsYXNzIixlPT09by5zb3J0aW5nSW5mby5oZWFkZXI/InNob3ciOiJzaG93LW9uLWhvdmVyIikseCgxKSxQKCJuZ0lmIixvLnNvcnRpbmdJbmZvLm9yZGVyPT09by5Tb3J0aW5nT3JkZXIuQVNDRU5ESU5HfHxlIT09by5zb3J0aW5nSW5mby5oZWFkZXIpLHgoMSksUCgibmdJZiIsby5zb3J0aW5nSW5mby5vcmRlcj09PW8uU29ydGluZ09yZGVyLkRFU0NFTkRJTkcmJmU9PT1vLnNvcnRpbmdJbmZvLmhlYWRlcil9fWZ1bmN0aW9uIE45dChuLHQpe24mMSYmTW8oMCl9dmFyIGZ1dD1mdW5jdGlvbihuKXtyZXR1cm57JGltcGxpY2l0Om59fTtmdW5jdGlvbiBUOXQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMTkpLGsoMSxOOXQsMSwwLCJuZy1jb250YWluZXIiLDIwKSxUKDIpLGgoKSksbiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0LG89UygpLiRpbXBsaWNpdCxpPVMoKSxhPXdlKDkpO3goMSksUCgibmdUZW1wbGF0ZU91dGxldCIsYSkoIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixhbygzLGZ1dCxvLlZBTFVFX0NIQU5HRSkpLHgoMSksbGUoIiAiLGkuZ2V0Rm9ybWF0dGVkRGF0YUZvckNvbHVtbihlLG8pLCIgIil9fWZ1bmN0aW9uIEE5dChuLHQpe24mMSYmTW8oMCl9ZnVuY3Rpb24gRDl0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDE5KSxrKDEsQTl0LDEsMCwibmctY29udGFpbmVyIiwyMCksVCgyKSxoKCkpLG4mMil7bGV0IGU9UygpLiRpbXBsaWNpdCxvPVMoKS4kaW1wbGljaXQsaT1TKCksYT13ZSg5KTt4KDEpLFAoIm5nVGVtcGxhdGVPdXRsZXQiLGEpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsYW8oMyxmdXQsby5QRVJDRU5UQUdFX0NIQU5HRSkpLHgoMSksbGUoIiAiLGkuZ2V0Rm9ybWF0dGVkRGF0YUZvckNvbHVtbihlLG8pLCIgIil9fWZ1bmN0aW9uIEk5dChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiwyMSksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygpLiRpbXBsaWNpdCxvPVMoKS4kaW1wbGljaXQsaT1TKCk7eCgxKSxsZSgiICIsaS5nZXRGb3JtYXR0ZWREYXRhRm9yQ29sdW1uKGUsbyksIiAiKX19ZnVuY3Rpb24gejl0KG4sdCl7aWYobiYxJiYoRW4oMCksdSgxLCJ0ZCIsMTYpLGsoMixUOXQsMyw1LCJkaXYiLDE3KSxrKDMsRDl0LDMsNSwiZGl2IiwxNyksayg0LEk5dCwyLDEsImRpdiIsMTgpLGgoKSxrbigpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygyKTt4KDEpLFAoIm5nU3dpdGNoIixlKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsby5Db2x1bW5IZWFkZXJzLlZBTFVFX0NIQU5HRSkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLG8uQ29sdW1uSGVhZGVycy5QRVJDRU5UQUdFX0NIQU5HRSl9fWZ1bmN0aW9uIEg5dChuLHQpe2lmKG4mMSYmKEVuKDApLHUoMSwidHIiLDE0KSx1KDIsInRkIiwxNSksRCgzLCJzcGFuIiksaCgpLGsoNCx6OXQsNSwzLCJuZy1jb250YWluZXIiLDEpLGgoKSxrbigpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygpO3goMykscWUoImJhY2tncm91bmQtY29sb3IiLGUuQ09MT1IpLHgoMSksUCgibmdGb3JPZiIsby5oZWFkZXJzKX19ZnVuY3Rpb24gRjl0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxMil9ZnVuY3Rpb24gTDl0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxMyl9ZnVuY3Rpb24gQjl0KG4sdCl7aWYobiYxJiYoaygwLEY5dCwxLDAsIm1hdC1pY29uIiw4KSxrKDEsTDl0LDEsMCwibWF0LWljb24iLDkpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0O1AoIm5nSWYiLGU+PTApLHgoMSksUCgibmdJZiIsZTwwKX19dmFyIHpkPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zb3J0RGF0YUJ5PW5ldyAkLHRoaXMuQ29sdW1uSGVhZGVycz1Ubix0aGlzLlNvcnRpbmdPcmRlcj1MMH1nZXRIZWFkZXJUZXh0Q29sdW1uKHQpe3N3aXRjaCh0KXtjYXNlIFRuLlJVTjpyZXR1cm4iUnVuIjtjYXNlIFRuLlZBTFVFOnJldHVybiJWYWx1ZSI7Y2FzZSBUbi5TVEVQOnJldHVybiJTdGVwIjtjYXNlIFRuLlRJTUU6cmV0dXJuIlRpbWUiO2Nhc2UgVG4uUkVMQVRJVkVfVElNRTpyZXR1cm4iUmVsYXRpdmUiO2Nhc2UgVG4uU01PT1RIRUQ6cmV0dXJuIlNtb290aGVkIjtjYXNlIFRuLlZBTFVFX0NIQU5HRTpyZXR1cm4iVmFsdWUiO2Nhc2UgVG4uU1RBUlRfU1RFUDpyZXR1cm4iU3RhcnQgU3RlcCI7Y2FzZSBUbi5FTkRfU1RFUDpyZXR1cm4iRW5kIFN0ZXAiO2Nhc2UgVG4uU1RBUlRfVkFMVUU6cmV0dXJuIlN0YXJ0IFZhbHVlIjtjYXNlIFRuLkVORF9WQUxVRTpyZXR1cm4iRW5kIFZhbHVlIjtjYXNlIFRuLk1JTl9WQUxVRTpyZXR1cm4iTWluIjtjYXNlIFRuLk1BWF9WQUxVRTpyZXR1cm4iTWF4IjtjYXNlIFRuLlBFUkNFTlRBR0VfQ0hBTkdFOnJldHVybiIlIjtkZWZhdWx0OnJldHVybiIifX1nZXRGb3JtYXR0ZWREYXRhRm9yQ29sdW1uKHQsZSl7c3dpdGNoKHQpe2Nhc2UgVG4uUlVOOnJldHVybiBlLlJVTj09PXZvaWQgMD8iIjplLlJVTjtjYXNlIFRuLlZBTFVFOnJldHVybiBlLlZBTFVFPT09dm9pZCAwPyIiOkJQLmZvcm1hdFNob3J0KGUuVkFMVUUpO2Nhc2UgVG4uU1RFUDpyZXR1cm4gZS5TVEVQPT09dm9pZCAwPyIiOlJPLmZvcm1hdFNob3J0KGUuU1RFUCk7Y2FzZSBUbi5USU1FOnJldHVybiBlLlRJTUU9PT12b2lkIDA/IiI6bmV3IERhdGUoZS5USU1FKS50b0lTT1N0cmluZygpO2Nhc2UgVG4uUkVMQVRJVkVfVElNRTpyZXR1cm4gZS5SRUxBVElWRV9USU1FPT09dm9pZCAwPyIiOkg1LmZvcm1hdFJlYWRhYmxlKGUuUkVMQVRJVkVfVElNRSk7Y2FzZSBUbi5TTU9PVEhFRDpyZXR1cm4gZS5TTU9PVEhFRD09PXZvaWQgMD8iIjpCUC5mb3JtYXRTaG9ydChlLlNNT09USEVEKTtjYXNlIFRuLlZBTFVFX0NIQU5HRTpyZXR1cm4gZS5WQUxVRV9DSEFOR0U9PT12b2lkIDA/IiI6QlAuZm9ybWF0U2hvcnQoTWF0aC5hYnMoZS5WQUxVRV9DSEFOR0UpKTtjYXNlIFRuLlNUQVJUX1NURVA6cmV0dXJuIGUuU1RBUlRfU1RFUD09PXZvaWQgMD8iIjpSTy5mb3JtYXRTaG9ydChlLlNUQVJUX1NURVApO2Nhc2UgVG4uRU5EX1NURVA6cmV0dXJuIGUuRU5EX1NURVA9PT12b2lkIDA/IiI6Uk8uZm9ybWF0U2hvcnQoZS5FTkRfU1RFUCk7Y2FzZSBUbi5TVEFSVF9WQUxVRTpyZXR1cm4gZS5TVEFSVF9WQUxVRT09PXZvaWQgMD8iIjpSTy5mb3JtYXRTaG9ydChlLlNUQVJUX1ZBTFVFKTtjYXNlIFRuLkVORF9WQUxVRTpyZXR1cm4gZS5FTkRfVkFMVUU9PT12b2lkIDA/IiI6Uk8uZm9ybWF0U2hvcnQoZS5FTkRfVkFMVUUpO2Nhc2UgVG4uTUlOX1ZBTFVFOnJldHVybiBlLk1JTl9WQUxVRT09PXZvaWQgMD8iIjpSTy5mb3JtYXRTaG9ydChlLk1JTl9WQUxVRSk7Y2FzZSBUbi5NQVhfVkFMVUU6cmV0dXJuIGUuTUFYX1ZBTFVFPT09dm9pZCAwPyIiOlJPLmZvcm1hdFNob3J0KGUuTUFYX1ZBTFVFKTtjYXNlIFRuLlBFUkNFTlRBR0VfQ0hBTkdFOnJldHVybiBlLlBFUkNFTlRBR0VfQ0hBTkdFPT09dm9pZCAwPyIiOk1hdGgucm91bmQoZS5QRVJDRU5UQUdFX0NIQU5HRSoxMDApLnRvU3RyaW5nKCkrIiUiO2RlZmF1bHQ6cmV0dXJuIiJ9fWhlYWRlckNsaWNrZWQodCl7aWYodGhpcy5zb3J0aW5nSW5mby5oZWFkZXI9PT10JiZ0aGlzLnNvcnRpbmdJbmZvLm9yZGVyPT09TDAuQVNDRU5ESU5HKXt0aGlzLnNvcnREYXRhQnkuZW1pdCh7aGVhZGVyOnQsb3JkZXI6TDAuREVTQ0VORElOR30pO3JldHVybn10aGlzLnNvcnREYXRhQnkuZW1pdCh7aGVhZGVyOnQsb3JkZXI6TDAuQVNDRU5ESU5HfSl9fTt6ZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx6ZCl9O3pkLlx1MDI3NWNtcD16KHt0eXBlOnpkLHNlbGVjdG9yczpbWyJ0Yi1kYXRhLXRhYmxlIl1dLGlucHV0czp7aGVhZGVyczoiaGVhZGVycyIsZGF0YToiZGF0YSIsc29ydGluZ0luZm86InNvcnRpbmdJbmZvIn0sb3V0cHV0czp7c29ydERhdGFCeToic29ydERhdGFCeSJ9LGRlY2xzOjEwLHZhcnM6Mixjb25zdHM6W1sxLCJkYXRhLXRhYmxlIl0sWzQsIm5nRm9yIiwibmdGb3JPZiJdLFsiYXJyb3ciLCIiXSxbMywiY2xpY2siXSxbMSwiY2VsbCIsMywibmdTd2l0Y2giXSxbInN2Z0ljb24iLCJjaGFuZ2VfaGlzdG9yeV8yNHB4Iiw0LCJuZ1N3aXRjaENhc2UiXSxbImNsYXNzIiwiZXh0cmEtcmlnaHQtcGFkZGluZyIsNCwibmdTd2l0Y2hEZWZhdWx0Il0sWzEsInNvcnRpbmctaWNvbi1jb250YWluZXIiLDMsIm5nQ2xhc3MiXSxbInN2Z0ljb24iLCJhcnJvd191cHdhcmRfMjRweCIsNCwibmdJZiJdLFsic3ZnSWNvbiIsImFycm93X2Rvd253YXJkXzI0cHgiLDQsIm5nSWYiXSxbInN2Z0ljb24iLCJjaGFuZ2VfaGlzdG9yeV8yNHB4Il0sWzEsImV4dHJhLXJpZ2h0LXBhZGRpbmciXSxbInN2Z0ljb24iLCJhcnJvd191cHdhcmRfMjRweCJdLFsic3ZnSWNvbiIsImFycm93X2Rvd253YXJkXzI0cHgiXSxbMSwicm93Il0sWzEsInJvdy1jaXJjbGUiXSxbMywibmdTd2l0Y2giXSxbImNsYXNzIiwiY2VsbCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsImNlbGwgZXh0cmEtcmlnaHQtcGFkZGluZyIsNCwibmdTd2l0Y2hEZWZhdWx0Il0sWzEsImNlbGwiXSxbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImNlbGwiLCJleHRyYS1yaWdodC1wYWRkaW5nIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiKSx1KDEsInRhYmxlIiwwKSx1KDIsInRoZWFkIiksdSgzLCJ0ciIpLEQoNCwidGgiKSxrKDUsazl0LDExLDcsIm5nLWNvbnRhaW5lciIsMSksaCgpLGgoKSx1KDYsInRib2R5Iiksayg3LEg5dCw1LDMsIm5nLWNvbnRhaW5lciIsMSksaCgpLGgoKSxoKCksayg4LEI5dCwyLDIsIm5nLXRlbXBsYXRlIixudWxsLDIseG4pKSx0JjImJih4KDUpLFAoIm5nRm9yT2YiLGUuaGVhZGVycykseCgyKSxQKCJuZ0Zvck9mIixlLmRhdGEpKX0sZGlyZWN0aXZlczpbbW4sR28sdWksVmwsam4sWHQsWGUsTGFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmRhdGEtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1zcGFjaW5nOjRweDtmb250LXNpemU6MTNweH0uZGF0YS10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO3Bvc2l0aW9uOnN0aWNreTt0ZXh0LWFsaWduOmxlZnQ7dG9wOjA7dmVydGljYWwtYWxpZ246Ym90dG9tfS5kYXRhLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntjdXJzb3I6cG9pbnRlcn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuZGF0YS10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5kYXRhLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9LmRhdGEtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgLmNlbGxbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXh9LmRhdGEtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgLmV4dHJhLXJpZ2h0LXBhZGRpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctcmlnaHQ6MXB4fS5kYXRhLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yb3dbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH0uZGF0YS10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAucm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7aGVpZ2h0OjEycHg7d2lkdGg6MTJweH0uZGF0YS10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAucm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjQpO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoxMHB4O3dpZHRoOjEwcHh9LmRhdGEtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgLmNlbGxbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMnB4O3dpZHRoOjEycHh9LmRhdGEtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgLnNvcnRpbmctaWNvbi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEycHg7aGVpZ2h0OjEycHh9LmRhdGEtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgLnNob3dbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uZGF0YS10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICAuc2hvdy1vbi1ob3Zlcltfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5kYXRhLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5zaG93LW9uLWhvdmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4zfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHpkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGItZGF0YS10YWJsZSIsdGVtcGxhdGVVcmw6ImRhdGFfdGFibGVfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImRhdGFfdGFibGVfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2hlYWRlcnM6W3t0eXBlOmR9XSxkYXRhOlt7dHlwZTpkfV0sc29ydGluZ0luZm86W3t0eXBlOmR9XSxzb3J0RGF0YUJ5Olt7dHlwZTpCfV19KX0pKCk7dmFyIFcwPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zb3J0RGF0YUJ5PW5ldyAkfWdldE1pblZhbHVlSW5SYW5nZSh0LGUsbyl7bGV0IGk9dFtlXS52YWx1ZTtmb3IobGV0IGE9ZTthPD1vO2ErKylpPnRbYV0udmFsdWUmJihpPXRbYV0udmFsdWUpO3JldHVybiBpfWdldE1heFZhbHVlSW5SYW5nZSh0LGUsbyl7bGV0IGk9dFtlXS52YWx1ZTtmb3IobGV0IGE9ZTthPD1vO2ErKylpPHRbYV0udmFsdWUmJihpPXRbYV0udmFsdWUpO3JldHVybiBpfWdldFRpbWVTZWxlY3Rpb25UYWJsZURhdGEoKXt2YXIgdDtpZih0aGlzLnN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb249PT1udWxsKXJldHVybltdO2xldCBlPXRoaXMuc3RlcE9yTGlua2VkVGltZVNlbGVjdGlvbi5zdGFydC5zdGVwLG89KHQ9dGhpcy5zdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uLmVuZCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnN0ZXAsaT10aGlzLmRhdGFTZXJpZXMuZmlsdGVyKGE9PntsZXQgcj10aGlzLmNoYXJ0TWV0YWRhdGFNYXBbYS5pZF07cmV0dXJuIHImJnIudmlzaWJsZSYmIUJvb2xlYW4oci5hdXgpfSkubWFwKGE9PntsZXQgcj10aGlzLmNoYXJ0TWV0YWRhdGFNYXBbYS5pZF0scz1BNChhLnBvaW50cyxlKSxsPWEucG9pbnRzW3NdLGM9bnVsbCxtPW51bGw7byE9bnVsbCYmKG09QTQoYS5wb2ludHMsbyksYz1hLnBvaW50c1ttXSk7bGV0IGY9e2lkOmEuaWR9O2YuQ09MT1I9ci5jb2xvcjtmb3IobGV0IHAgb2YgdGhpcy5kYXRhSGVhZGVycylzd2l0Y2gocCl7Y2FzZSBUbi5SVU46bGV0IGc9IiI7ci5hbGlhcyYmKGc9YCR7ci5hbGlhcy5hbGlhc051bWJlcn0gJHtyLmFsaWFzLmFsaWFzVGV4dH0vYCksZi5SVU49YCR7Z30ke3IuZGlzcGxheU5hbWV9YDtjb250aW51ZTtjYXNlIFRuLlNURVA6Zi5TVEVQPWwuc3RlcDtjb250aW51ZTtjYXNlIFRuLlZBTFVFOmYuVkFMVUU9bC52YWx1ZTtjb250aW51ZTtjYXNlIFRuLlJFTEFUSVZFX1RJTUU6Zi5SRUxBVElWRV9USU1FPWwucmVsYXRpdmVUaW1lSW5Ncztjb250aW51ZTtjYXNlIFRuLlNNT09USEVEOmYuU01PT1RIRUQ9bC55O2NvbnRpbnVlO2Nhc2UgVG4uVkFMVUVfQ0hBTkdFOmlmKCFjKWNvbnRpbnVlO2YuVkFMVUVfQ0hBTkdFPWMudmFsdWUtbC52YWx1ZTtjb250aW51ZTtjYXNlIFRuLlNUQVJUX1NURVA6Zi5TVEFSVF9TVEVQPWwuc3RlcDtjb250aW51ZTtjYXNlIFRuLkVORF9TVEVQOmlmKCFjKWNvbnRpbnVlO2YuRU5EX1NURVA9Yy5zdGVwO2NvbnRpbnVlO2Nhc2UgVG4uU1RBUlRfVkFMVUU6Zi5TVEFSVF9WQUxVRT1sLnZhbHVlO2NvbnRpbnVlO2Nhc2UgVG4uRU5EX1ZBTFVFOmlmKCFjKWNvbnRpbnVlO2YuRU5EX1ZBTFVFPWMudmFsdWU7Y29udGludWU7Y2FzZSBUbi5NSU5fVkFMVUU6aWYoIW0pY29udGludWU7Zi5NSU5fVkFMVUU9dGhpcy5nZXRNaW5WYWx1ZUluUmFuZ2UoYS5wb2ludHMscyxtKTtjb250aW51ZTtjYXNlIFRuLk1BWF9WQUxVRTppZighbSljb250aW51ZTtmLk1BWF9WQUxVRT10aGlzLmdldE1heFZhbHVlSW5SYW5nZShhLnBvaW50cyxzLG0pO2NvbnRpbnVlO2Nhc2UgVG4uUEVSQ0VOVEFHRV9DSEFOR0U6aWYoIWMpY29udGludWU7Zi5QRVJDRU5UQUdFX0NIQU5HRT0oYy52YWx1ZS1sLnZhbHVlKS9sLnZhbHVlO2NvbnRpbnVlO2RlZmF1bHQ6Y29udGludWV9cmV0dXJuIGZ9KTtyZXR1cm4gaS5zb3J0KChhLHIpPT57bGV0IHM9dGhpcy5nZXRTb3J0YWJsZVZhbHVlKGEsdGhpcy5zb3J0aW5nSW5mby5oZWFkZXIpLGw9dGhpcy5nZXRTb3J0YWJsZVZhbHVlKHIsdGhpcy5zb3J0aW5nSW5mby5oZWFkZXIpO3JldHVybiBzPGw/dGhpcy5zb3J0aW5nSW5mby5vcmRlcj09PUwwLkFTQ0VORElORz8tMToxOnM+bD90aGlzLnNvcnRpbmdJbmZvLm9yZGVyPT09TDAuQVNDRU5ESU5HPzE6LTE6MH0pLGl9Z2V0U29ydGFibGVWYWx1ZSh0LGUpe3N3aXRjaChlKXtjYXNlIFRuLlJVTjpyZXR1cm4gcHV0KHRoaXMuY2hhcnRNZXRhZGF0YU1hcFt0LmlkXS5kaXNwbGF5TmFtZSk7ZGVmYXVsdDpyZXR1cm4gcHV0KHRbZV0pfX19O1cwLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFcwKX07VzAuXHUwMjc1Y21wPXooe3R5cGU6VzAsc2VsZWN0b3JzOltbInNjYWxhci1jYXJkLWRhdGEtdGFibGUiXV0saW5wdXRzOntjaGFydE1ldGFkYXRhTWFwOiJjaGFydE1ldGFkYXRhTWFwIixkYXRhU2VyaWVzOiJkYXRhU2VyaWVzIixzdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uOiJzdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uIixkYXRhSGVhZGVyczoiZGF0YUhlYWRlcnMiLHNvcnRpbmdJbmZvOiJzb3J0aW5nSW5mbyJ9LG91dHB1dHM6e3NvcnREYXRhQnk6InNvcnREYXRhQnkifSxkZWNsczoxLHZhcnM6Myxjb25zdHM6W1szLCJoZWFkZXJzIiwiZGF0YSIsInNvcnRpbmdJbmZvIiwic29ydERhdGFCeSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwidGItZGF0YS10YWJsZSIsMCksQSgic29ydERhdGFCeSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuc29ydERhdGFCeS5lbWl0KGkpfSksaCgpKSx0JjImJlAoImhlYWRlcnMiLGUuZGF0YUhlYWRlcnMpKCJkYXRhIixlLmdldFRpbWVTZWxlY3Rpb25UYWJsZURhdGEoKSkoInNvcnRpbmdJbmZvIixlLnNvcnRpbmdJbmZvKX0sZGlyZWN0aXZlczpbemRdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhXMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkLWRhdGEtdGFibGUiLHRlbXBsYXRlOmAKICAgIDx0Yi1kYXRhLXRhYmxlCiAgICAgIFtoZWFkZXJzXT0iZGF0YUhlYWRlcnMiCiAgICAgIFtkYXRhXT0iZ2V0VGltZVNlbGVjdGlvblRhYmxlRGF0YSgpIgogICAgICBbc29ydGluZ0luZm9dPSJzb3J0aW5nSW5mbyIKICAgICAgKHNvcnREYXRhQnkpPSJzb3J0RGF0YUJ5LmVtaXQoJGV2ZW50KSIKICAgID48L3RiLWRhdGEtdGFibGU+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtjaGFydE1ldGFkYXRhTWFwOlt7dHlwZTpkfV0sZGF0YVNlcmllczpbe3R5cGU6ZH1dLHN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb246W3t0eXBlOmR9XSxkYXRhSGVhZGVyczpbe3R5cGU6ZH1dLHNvcnRpbmdJbmZvOlt7dHlwZTpkfV0sc29ydERhdGFCeTpbe3R5cGU6Qn1dfSl9KSgpO2Z1bmN0aW9uIHB1dChuKXtyZXR1cm4gTnVtYmVyLmlzTmFOKG4pfHxuPT09Ik5hTiJ8fG49PT12b2lkIDB8fG49PT1udWxsPy0xLzA6bn12YXIgVTl0PVsic3RlcFNwYW4iXSxIZD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuc3RlcENoYW5nZWQ9bmV3ICQsdGhpcy5mb2JSZW1vdmVkPW5ldyAkfW5nT25DaGFuZ2VzKHQpe3Quc3RlcCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PXRoaXMuc3RlcFNwYW4ubmF0aXZlRWxlbWVudCYmdGhpcy5zdGVwU3Bhbi5uYXRpdmVFbGVtZW50LmJsdXIoKX12YWxpZGF0ZVN0ZXAodCl7bGV0IGU9U3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKTsodC5rZXk9PT0iICJ8fGlzTmFOKE51bWJlcihlKSkpJiZ0LnByZXZlbnREZWZhdWx0KCl9c3RlcFR5cGVkKHQpe3QucHJldmVudERlZmF1bHQoKTtsZXQgZT10LnRhcmdldC5pbm5lclRleHQ7aWYoZT09PSIiKXt0aGlzLnN0ZXBDaGFuZ2VkLmVtaXQobnVsbCk7cmV0dXJufXRoaXMuc3RlcENoYW5nZWQuZW1pdChOdW1iZXIoZSkpfX07SGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SGQpfTtIZC5cdTAyNzVjbXA9eih7dHlwZTpIZCxzZWxlY3RvcnM6W1siY2FyZC1mb2IiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShVOXQsNyxMKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLnN0ZXBTcGFuPW8uZmlyc3QpfX0saW5wdXRzOntzdGVwOiJzdGVwIn0sb3V0cHV0czp7c3RlcENoYW5nZWQ6InN0ZXBDaGFuZ2VkIixmb2JSZW1vdmVkOiJmb2JSZW1vdmVkIn0sZmVhdHVyZXM6W1dlXSxkZWNsczo1LHZhcnM6MSxjb25zdHM6W1sxLCJmb2IiXSxbImNvbnRlbnRlZGl0YWJsZSIsIiIsInJvbGUiLCJ0ZXh0Ym94IiwiYXJpYS1sYWJlbCIsIkVkaXQgc3RlcCIsMywiaW5uZXJIVE1MIiwiYmx1ciIsImtleXByZXNzIiwia2V5ZG93bi5lbnRlciIsImtleWRvd24uc2hpZnQuZW50ZXIiXSxbInN0ZXBTcGFuIiwiIl0sWyJhcmlhLWxhYmVsIiwiRGVzZWxlY3QgZm9iIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksdSgxLCJzcGFuIiwxLDIpLEEoImJsdXIiLGZ1bmN0aW9uKGkpe3JldHVybiBlLnN0ZXBUeXBlZChpKX0pKCJrZXlwcmVzcyIsZnVuY3Rpb24oaSl7cmV0dXJuIGUudmFsaWRhdGVTdGVwKGkpfSkoImtleWRvd24uZW50ZXIiLGZ1bmN0aW9uKGkpe3JldHVybiBlLnN0ZXBUeXBlZChpKX0pKCJrZXlkb3duLnNoaWZ0LmVudGVyIixmdW5jdGlvbihpKXtyZXR1cm4gaS5wcmV2ZW50RGVmYXVsdCgpfSksaCgpLHUoMywiYnV0dG9uIiwzKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5mb2JSZW1vdmVkLmVtaXQoKX0pLEQoNCwibWF0LWljb24iLDQpLGgoKSxoKCkpLHQmMiYmKHgoMSksUCgiaW5uZXJIVE1MIixlLnN0ZXAsdUIpKX0sZGlyZWN0aXZlczpbWGVdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja30uZm9iW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1mbGV4O2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXItcmFkaXVzOjI1cHg7cGFkZGluZzoycHggMnB4IDJweCA0cHg7Zm9udC1zaXplOjExcHg7d2lkdGg6bWluLWNvbnRlbnR9LmZvYltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Y3Vyc29yOmdyYWJ9LmZvYltfbmdjb250ZW50LSVDT01QJV06YWN0aXZle2N1cnNvcjpncmFiYmluZ31zcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2Rpc3BsYXk6aW5saW5lLWJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6MnB4O3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjUwJTtmb250LXNpemU6MTFweDt3aWR0aDoxMXB4O2hlaWdodDoxMXB4O2JhY2tncm91bmQtY29sb3I6aW5oZXJpdDtjb2xvcjppbmhlcml0fWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7aGVpZ2h0OjExMCV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojOWU5ZTllO2NvbG9yOiNlZWU7Y3Vyc29yOnBvaW50ZXJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2UwZTBlMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhIZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImNhcmQtZm9iIix0ZW1wbGF0ZVVybDoiY2FyZF9mb2JfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImNhcmRfZm9iX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtzdGVwU3Bhbjpbe3R5cGU6SXQsYXJnczpbInN0ZXBTcGFuIix7c3RhdGljOiEwLHJlYWQ6TH1dfV0sc3RlcDpbe3R5cGU6ZH1dLHN0ZXBDaGFuZ2VkOlt7dHlwZTpCfV0sZm9iUmVtb3ZlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBHOXQ9WyJzdGFydEZvYldyYXBwZXIiXSxXOXQ9WyJlbmRGb2JXcmFwcGVyIl0scTl0PVsicHJvc3BlY3RpdmVGb2JXcmFwcGVyIl07ZnVuY3Rpb24gWjl0KG4sdCl7biYxJiZEKDAsImRpdiIsMTApfWZ1bmN0aW9uIFg5dChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2Iiw2LDcpLGsoMixaOXQsMSwwLCJkaXYiLDgpLEQoMywiY2FyZC1mb2IiLDkpLGgoKSksbiYyKXtsZXQgZT1TKCk7cWUoInRyYW5zZm9ybSIsZS5nZXRDc3NUcmFuc2xhdGVQeEZvclByb3NwZWN0aXZlRm9iKCkpLHgoMiksUCgibmdJZiIsZS5zaG93RXh0ZW5kZWRMaW5lKSx4KDEpLFAoIm5nQ2xhc3MiLGUuaXNWZXJ0aWNhbCgpPyJ2ZXJ0aWNhbC1mb2IiOiJob3Jpem9udGFsLWZvYiIpfX1mdW5jdGlvbiBROXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDExKSxBKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGkpe090KGUpO2xldCBhPVMoKTtyZXR1cm4gYS5zdGFydERyYWcoYS5Gb2IuU1RBUlQsYS5UaW1lU2VsZWN0aW9uQWZmb3JkYW5jZS5FWFRFTkRFRF9MSU5FLGkpfSksaCgpfX1mdW5jdGlvbiBLOXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDExKSxBKCJtb3VzZWRvd24iLGZ1bmN0aW9uKGkpe090KGUpO2xldCBhPVMoMik7cmV0dXJuIGEuc3RhcnREcmFnKGEuRm9iLkVORCxhLlRpbWVTZWxlY3Rpb25BZmZvcmRhbmNlLkVYVEVOREVEX0xJTkUsaSl9KSxoKCl9fWZ1bmN0aW9uIEo5dChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMSwxMiksaygyLEs5dCwxLDAsImRpdiIsMyksdSgzLCJjYXJkLWZvYiIsMTMpLEEoIm1vdXNlZG93biIsZnVuY3Rpb24oaSl7T3QoZSk7bGV0IGE9UygpO3JldHVybiBhLnN0YXJ0RHJhZyhhLkZvYi5FTkQsYS5UaW1lU2VsZWN0aW9uQWZmb3JkYW5jZS5GT0IsaSl9KSgic3RlcENoYW5nZWQiLGZ1bmN0aW9uKGkpe090KGUpO2xldCBhPVMoKTtyZXR1cm4gYS5zdGVwVHlwZWQoYS5Gb2IuRU5ELGkpfSkoImZvYlJlbW92ZWQiLGZ1bmN0aW9uKCl7T3QoZSk7bGV0IGk9UygpO3JldHVybiBpLm9uRm9iUmVtb3ZlZChpLkZvYi5FTkQpfSksaCgpLGgoKX1pZihuJjIpe2xldCBlPVMoKTtxZSgidHJhbnNmb3JtIixlLmdldENzc1RyYW5zbGF0ZVB4Rm9yRW5kRm9iKCkpLHgoMiksUCgibmdJZiIsZS5zaG93RXh0ZW5kZWRMaW5lKSx4KDEpLFAoIm5nQ2xhc3MiLGUuaXNWZXJ0aWNhbCgpPyJ2ZXJ0aWNhbC1mb2IiOiJob3Jpem9udGFsLWZvYiIpKCJzdGVwIixlLnRpbWVTZWxlY3Rpb24uZW5kLnN0ZXApfX12YXIgemw7KGZ1bmN0aW9uKG4pe25bbi5OT05FPTBdPSJOT05FIixuW24uU1RBUlQ9MV09IlNUQVJUIixuW24uRU5EPTJdPSJFTkQifSkoemx8fCh6bD17fSkpO3ZhciAkOXQ9e3N0YXJ0OnpsLlNUQVJULGVuZDp6bC5FTkR9LGttPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMucm9vdD10LHRoaXMuc2hvd0V4dGVuZGVkTGluZT0hMSx0aGlzLmlzUHJvc3BlY3RpdmVGb2JGZWF0dXJlRW5hYmxlZD0hMSx0aGlzLnByb3NwZWN0aXZlU3RlcD1udWxsLHRoaXMucHJvc3BlY3RpdmVTdGVwQXhpc1Bvc2l0aW9uPW51bGwsdGhpcy5vblRpbWVTZWxlY3Rpb25DaGFuZ2VkPW5ldyAkLHRoaXMub25UaW1lU2VsZWN0aW9uVG9nZ2xlZD1uZXcgJCx0aGlzLmhhc0ZvYk1vdmVkPSExLHRoaXMuY3VycmVudERyYWdnaW5nRm9iPXpsLk5PTkUsdGhpcy5hZmZvcmRhbmNlPU9tLk5PTkUsdGhpcy5tb3VzZUxpc3RlbmVyPXRoaXMubW91c2VNb3ZlLmJpbmQodGhpcyksdGhpcy5zdG9wTGlzdGVuZXI9dGhpcy5zdG9wRHJhZy5iaW5kKHRoaXMpLHRoaXMuRm9iPXpsLHRoaXMuVGltZVNlbGVjdGlvbkFmZm9yZGFuY2U9T219Z2V0Q3NzVHJhbnNsYXRlUHhGb3JTdGFydEZvYigpe3JldHVybiB0aGlzLmF4aXNEaXJlY3Rpb249PT1TZC5WRVJUSUNBTD9gdHJhbnNsYXRlKDBweCwgJHt0aGlzLnN0YXJ0U3RlcEF4aXNQb3NpdGlvbn1weClgOmB0cmFuc2xhdGUoJHt0aGlzLnN0YXJ0U3RlcEF4aXNQb3NpdGlvbn1weCwgMHB4KWB9Z2V0Q3NzVHJhbnNsYXRlUHhGb3JFbmRGb2IoKXtyZXR1cm4gdGhpcy5lbmRTdGVwQXhpc1Bvc2l0aW9uPT09bnVsbD8iIjp0aGlzLmF4aXNEaXJlY3Rpb249PT1TZC5WRVJUSUNBTD9gdHJhbnNsYXRlKDBweCwgJHt0aGlzLmVuZFN0ZXBBeGlzUG9zaXRpb259cHgpYDpgdHJhbnNsYXRlKCR7dGhpcy5lbmRTdGVwQXhpc1Bvc2l0aW9ufXB4LCAwcHgpYH1nZXRDc3NUcmFuc2xhdGVQeEZvclByb3NwZWN0aXZlRm9iKCl7cmV0dXJuIHRoaXMucHJvc3BlY3RpdmVTdGVwPT09bnVsbD8iIjp0aGlzLmF4aXNEaXJlY3Rpb249PT1TZC5WRVJUSUNBTD9gdHJhbnNsYXRlKDBweCwgJHt0aGlzLnByb3NwZWN0aXZlU3RlcEF4aXNQb3NpdGlvbn1weClgOmB0cmFuc2xhdGUoJHt0aGlzLnByb3NwZWN0aXZlU3RlcEF4aXNQb3NpdGlvbn1weCwgMHB4KWB9c3RvcEV2ZW50UHJvcGFnYXRpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCl9c3RhcnREcmFnKHQsZSxvKXtlIT09T20uRk9CJiZ0aGlzLnN0b3BFdmVudFByb3BhZ2F0aW9uKG8pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3VzZUxpc3RlbmVyKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnN0b3BMaXN0ZW5lciksdGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9dCx0aGlzLmFmZm9yZGFuY2U9ZX1zdG9wRHJhZygpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5tb3VzZUxpc3RlbmVyKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLnN0b3BMaXN0ZW5lciksdGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9emwuTk9ORSx0aGlzLmhhc0ZvYk1vdmVkJiZ0aGlzLm9uVGltZVNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7dGltZVNlbGVjdGlvbjp0aGlzLnRpbWVTZWxlY3Rpb24sYWZmb3JkYW5jZTp0aGlzLmFmZm9yZGFuY2V9KSx0aGlzLmFmZm9yZGFuY2U9T20uTk9ORSx0aGlzLmhhc0ZvYk1vdmVkPSExfWlzVmVydGljYWwoKXtyZXR1cm4gdGhpcy5heGlzRGlyZWN0aW9uPT09U2QuVkVSVElDQUx9c2hvdWxkU3dhcEZvYnModCl7cmV0dXJuIHRoaXMudGltZVNlbGVjdGlvbi5lbmQ/dGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9PT16bC5FTkQ/dDx0aGlzLnRpbWVTZWxlY3Rpb24uc3RhcnQuc3RlcDp0aGlzLmN1cnJlbnREcmFnZ2luZ0ZvYj09PXpsLlNUQVJUP3Q+dGhpcy50aW1lU2VsZWN0aW9uLmVuZC5zdGVwOiExOiExfWdldE5ld1RpbWVTZWxlY3Rpb24odCxlKXtsZXQgbz1PYmplY3QuYXNzaWduKHt9LGUpO2lmKCF0aGlzLnRpbWVTZWxlY3Rpb24uZW5kKXJldHVybiBvLnN0YXJ0PXtzdGVwOnR9LG87aWYodGhpcy5zaG91bGRTd2FwRm9icyh0KSl7bGV0W2ksYV09dGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9PT16bC5FTkQ/WyJlbmQiLCJzdGFydCJdOlsic3RhcnQiLCJlbmQiXTtyZXR1cm4gdGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9JDl0W2FdLG9baV09dGhpcy50aW1lU2VsZWN0aW9uW2FdLG9bYV09e3N0ZXA6dH0sb31yZXR1cm4gdGhpcy5jdXJyZW50RHJhZ2dpbmdGb2I9PT16bC5FTkQ/KG8uZW5kPXtzdGVwOnR9LG8pOihvLnN0YXJ0PXtzdGVwOnR9LG8pfW1vdXNlTW92ZSh0KXtpZih0aGlzLmN1cnJlbnREcmFnZ2luZ0ZvYj09PXpsLk5PTkUpcmV0dXJuO2xldCBlPW51bGwsbz10aGlzLmdldE1vdXNlUG9zaXRpb25Gcm9tRXZlbnQodCksaT10aGlzLmF4aXNEaXJlY3Rpb249PT1TZC5WRVJUSUNBTD90Lm1vdmVtZW50WTp0Lm1vdmVtZW50WDtpZih0aGlzLmlzRHJhZ2dpbmdIaWdoZXIobyxpKT9lPXRoaXMuY2FyZEZvYkhlbHBlci5nZXRTdGVwSGlnaGVyVGhhbkF4aXNQb3NpdGlvbihvKTp0aGlzLmlzRHJhZ2dpbmdMb3dlcihvLGkpJiYoZT10aGlzLmNhcmRGb2JIZWxwZXIuZ2V0U3RlcExvd2VyVGhhbkF4aXNQb3NpdGlvbihvKSksZT09PW51bGwpcmV0dXJuO2xldCBhPXRoaXMuZ2V0TmV3VGltZVNlbGVjdGlvbihlLHRoaXMudGltZVNlbGVjdGlvbik7dGhpcy5vblRpbWVTZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe3RpbWVTZWxlY3Rpb246YX0pLHRoaXMuaGFzRm9iTW92ZWQ9ITB9aXNEcmFnZ2luZ0xvd2VyKHQsZSl7cmV0dXJuIHQ8dGhpcy5nZXREcmFnZ2luZ0ZvYkNlbnRlcigpJiZlPDAmJnRoaXMuZ2V0RHJhZ2dpbmdGb2JTdGVwKCk+dGhpcy5sb3dlc3RTdGVwfWlzRHJhZ2dpbmdIaWdoZXIodCxlKXtyZXR1cm4gdD50aGlzLmdldERyYWdnaW5nRm9iQ2VudGVyKCkmJmU+MCYmdGhpcy5nZXREcmFnZ2luZ0ZvYlN0ZXAoKTx0aGlzLmhpZ2hlc3RTdGVwfWdldERyYWdnaW5nRm9iQ2VudGVyKCl7cmV0dXJuIHRoaXMuYXhpc0RpcmVjdGlvbj09PVNkLlZFUlRJQ0FMPyh0aGlzLmN1cnJlbnREcmFnZ2luZ0ZvYiE9PXpsLkVORD90aGlzLnN0YXJ0Rm9iV3JhcHBlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDp0aGlzLmVuZEZvYldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApLXRoaXMucm9vdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDoodGhpcy5jdXJyZW50RHJhZ2dpbmdGb2IhPT16bC5FTkQ/dGhpcy5zdGFydEZvYldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0OnRoaXMuZW5kRm9iV3JhcHBlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpLXRoaXMucm9vdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9Z2V0RHJhZ2dpbmdGb2JTdGVwKCl7cmV0dXJuIHRoaXMuY3VycmVudERyYWdnaW5nRm9iIT09emwuRU5EP3RoaXMudGltZVNlbGVjdGlvbi5zdGFydC5zdGVwOnRoaXMudGltZVNlbGVjdGlvbi5lbmQuc3RlcH1nZXRNb3VzZVBvc2l0aW9uRnJvbUV2ZW50KHQpe3JldHVybiB0aGlzLmF4aXNEaXJlY3Rpb249PT1TZC5WRVJUSUNBTD90LmNsaWVudFktdGhpcy5yb290Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wOnQuY2xpZW50WC10aGlzLnJvb3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fXN0ZXBUeXBlZCh0LGUpe2lmKGU9PT1udWxsKXt0aGlzLnRpbWVTZWxlY3Rpb24uZW5kIT09bnVsbCYmdGhpcy5vbkZvYlJlbW92ZWQodCk7cmV0dXJufWxldCBvPU9iamVjdC5hc3NpZ24oe30sdGhpcy50aW1lU2VsZWN0aW9uKTt0PT09emwuU1RBUlQ/by5zdGFydD17c3RlcDplfTp0PT09emwuRU5EJiYoby5lbmQ9e3N0ZXA6ZX0pLG8uZW5kIT09bnVsbCYmby5zdGFydC5zdGVwPm8uZW5kLnN0ZXAmJihvPXtzdGFydDpvLmVuZCxlbmQ6by5zdGFydH0pLHRoaXMub25UaW1lU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHt0aW1lU2VsZWN0aW9uOm8sYWZmb3JkYW5jZTpPbS5GT0JfVEVYVH0pfW9uRm9iUmVtb3ZlZCh0KXtpZih0PT09emwuRU5EKXt0aGlzLm9uVGltZVNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7YWZmb3JkYW5jZTpPbS5GT0JfUkVNT1ZFRCx0aW1lU2VsZWN0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnRpbWVTZWxlY3Rpb24pLHtlbmQ6bnVsbH0pfSk7cmV0dXJufWlmKHRoaXMudGltZVNlbGVjdGlvbi5lbmQhPT1udWxsKXt0aGlzLm9uVGltZVNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7YWZmb3JkYW5jZTpPbS5GT0JfUkVNT1ZFRCx0aW1lU2VsZWN0aW9uOntzdGFydDp0aGlzLnRpbWVTZWxlY3Rpb24uZW5kLGVuZDpudWxsfX0pO3JldHVybn10aGlzLm9uVGltZVNlbGVjdGlvblRvZ2dsZWQuZW1pdCgpfX07a20uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8a20pKHYoTCkpfTtrbS5cdTAyNzVjbXA9eih7dHlwZTprbSxzZWxlY3RvcnM6W1siY2FyZC1mb2ItY29udHJvbGxlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJihwZShHOXQsNSkscGUoVzl0LDUpLHBlKHE5dCw1KSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5zdGFydEZvYldyYXBwZXI9by5maXJzdCksSHQobz1GdCgpKSYmKGUuZW5kRm9iV3JhcHBlcj1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5wcm9zcGVjdGl2ZUZvYldyYXBwZXI9by5maXJzdCl9fSxpbnB1dHM6e2F4aXNEaXJlY3Rpb246ImF4aXNEaXJlY3Rpb24iLHRpbWVTZWxlY3Rpb246InRpbWVTZWxlY3Rpb24iLGNhcmRGb2JIZWxwZXI6ImNhcmRGb2JIZWxwZXIiLHN0YXJ0U3RlcEF4aXNQb3NpdGlvbjoic3RhcnRTdGVwQXhpc1Bvc2l0aW9uIixlbmRTdGVwQXhpc1Bvc2l0aW9uOiJlbmRTdGVwQXhpc1Bvc2l0aW9uIixoaWdoZXN0U3RlcDoiaGlnaGVzdFN0ZXAiLGxvd2VzdFN0ZXA6Imxvd2VzdFN0ZXAiLHNob3dFeHRlbmRlZExpbmU6InNob3dFeHRlbmRlZExpbmUiLGlzUHJvc3BlY3RpdmVGb2JGZWF0dXJlRW5hYmxlZDoiaXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkIixwcm9zcGVjdGl2ZVN0ZXA6InByb3NwZWN0aXZlU3RlcCIscHJvc3BlY3RpdmVTdGVwQXhpc1Bvc2l0aW9uOiJwcm9zcGVjdGl2ZVN0ZXBBeGlzUG9zaXRpb24ifSxvdXRwdXRzOntvblRpbWVTZWxlY3Rpb25DaGFuZ2VkOiJvblRpbWVTZWxlY3Rpb25DaGFuZ2VkIixvblRpbWVTZWxlY3Rpb25Ub2dnbGVkOiJvblRpbWVTZWxlY3Rpb25Ub2dnbGVkIn0sZGVjbHM6Nyx2YXJzOjcsY29uc3RzOltbImNsYXNzIiwidGltZS1mb2Itd3JhcHBlciBwcm9zcGVjdGl2ZUZvYiIsMywidHJhbnNmb3JtIiw0LCJuZ0lmIl0sWzEsInRpbWUtZm9iLXdyYXBwZXIiXSxbInN0YXJ0Rm9iV3JhcHBlciIsIiJdLFsiY2xhc3MiLCJleHRlbmRlZC1saW5lIiwzLCJtb3VzZWRvd24iLDQsIm5nSWYiXSxbMSwic3RhcnRGb2IiLDMsIm5nQ2xhc3MiLCJzdGVwIiwibW91c2Vkb3duIiwic3RlcENoYW5nZWQiLCJmb2JSZW1vdmVkIl0sWyJjbGFzcyIsInRpbWUtZm9iLXdyYXBwZXIiLDMsInRyYW5zZm9ybSIsNCwibmdJZiJdLFsxLCJ0aW1lLWZvYi13cmFwcGVyIiwicHJvc3BlY3RpdmVGb2IiXSxbInByb3NwZWN0aXZlRm9iV3JhcHBlciIsIiJdLFsiY2xhc3MiLCJleHRlbmRlZC1saW5lIiw0LCJuZ0lmIl0sWzMsIm5nQ2xhc3MiXSxbMSwiZXh0ZW5kZWQtbGluZSJdLFsxLCJleHRlbmRlZC1saW5lIiwzLCJtb3VzZWRvd24iXSxbImVuZEZvYldyYXBwZXIiLCIiXSxbMSwiZW5kRm9iIiwzLCJuZ0NsYXNzIiwic3RlcCIsIm1vdXNlZG93biIsInN0ZXBDaGFuZ2VkIiwiZm9iUmVtb3ZlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiksaygxLFg5dCw0LDQsImRpdiIsMCksdSgyLCJkaXYiLDEsMiksayg0LFE5dCwxLDAsImRpdiIsMyksdSg1LCJjYXJkLWZvYiIsNCksQSgibW91c2Vkb3duIixmdW5jdGlvbihpKXtyZXR1cm4gZS5zdGFydERyYWcoZS5Gb2IuU1RBUlQsZS5UaW1lU2VsZWN0aW9uQWZmb3JkYW5jZS5GT0IsaSl9KSgic3RlcENoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLnN0ZXBUeXBlZChlLkZvYi5TVEFSVCxpKX0pKCJmb2JSZW1vdmVkIixmdW5jdGlvbigpe3JldHVybiBlLm9uRm9iUmVtb3ZlZChlLkZvYi5TVEFSVCl9KSxoKCksaCgpLGsoNixKOXQsNCw1LCJkaXYiLDUpLGgoKSksdCYyJiYoeCgxKSxQKCJuZ0lmIixlLnByb3NwZWN0aXZlU3RlcCE9PW51bGwmJmUuaXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkKSx4KDEpLHFlKCJ0cmFuc2Zvcm0iLGUuZ2V0Q3NzVHJhbnNsYXRlUHhGb3JTdGFydEZvYigpKSx4KDIpLFAoIm5nSWYiLGUuc2hvd0V4dGVuZGVkTGluZSkseCgxKSxQKCJuZ0NsYXNzIixlLmlzVmVydGljYWwoKT8idmVydGljYWwtZm9iIjoiaG9yaXpvbnRhbC1mb2IiKSgic3RlcCIsZS50aW1lU2VsZWN0aW9uLnN0YXJ0LnN0ZXApLHgoMSksUCgibmdJZiIsZS50aW1lU2VsZWN0aW9uLmVuZCkpfSxkaXJlY3RpdmVzOltYdCxIZCxqbl0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtwb2ludGVyLWV2ZW50czphbGx9LnRpbWUtZm9iLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjB9LnZlcnRpY2FsLWZvYltfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTUwJSl9Lmhvcml6b250YWwtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKX0uZXh0ZW5kZWQtbGluZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXN0eWxlOmRhc2hlZDtib3JkZXItd2lkdGg6MCAxcHg7aGVpZ2h0OmNhbGMoMTAwJSAtIDMwcHgpfS5leHRlbmRlZC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQgMThweCwgI2NjYyAxOXB4LCAjY2NjIDIxcHgsIHRyYW5zcGFyZW50IDIycHgpO2JvcmRlcjowO2N1cnNvcjpldy1yZXNpemU7bWFyZ2luLWxlZnQ6LTIwcHg7cGFkZGluZzowIDIwcHh9LnByb3NwZWN0aXZlRm9iW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi44O2N1cnNvcjpwb2ludGVyfSJdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGttLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiY2FyZC1mb2ItY29udHJvbGxlciIsdGVtcGxhdGVVcmw6ImNhcmRfZm9iX2NvbnRyb2xsZXJfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbImNhcmRfZm9iX2NvbnRyb2xsZXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9XX0se3N0YXJ0Rm9iV3JhcHBlcjpbe3R5cGU6SXQsYXJnczpbInN0YXJ0Rm9iV3JhcHBlciJdfV0sZW5kRm9iV3JhcHBlcjpbe3R5cGU6SXQsYXJnczpbImVuZEZvYldyYXBwZXIiXX1dLHByb3NwZWN0aXZlRm9iV3JhcHBlcjpbe3R5cGU6SXQsYXJnczpbInByb3NwZWN0aXZlRm9iV3JhcHBlciJdfV0sYXhpc0RpcmVjdGlvbjpbe3R5cGU6ZH1dLHRpbWVTZWxlY3Rpb246W3t0eXBlOmR9XSxjYXJkRm9iSGVscGVyOlt7dHlwZTpkfV0sc3RhcnRTdGVwQXhpc1Bvc2l0aW9uOlt7dHlwZTpkfV0sZW5kU3RlcEF4aXNQb3NpdGlvbjpbe3R5cGU6ZH1dLGhpZ2hlc3RTdGVwOlt7dHlwZTpkfV0sbG93ZXN0U3RlcDpbe3R5cGU6ZH1dLHNob3dFeHRlbmRlZExpbmU6W3t0eXBlOmR9XSxpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQ6W3t0eXBlOmR9XSxwcm9zcGVjdGl2ZVN0ZXA6W3t0eXBlOmR9XSxwcm9zcGVjdGl2ZVN0ZXBBeGlzUG9zaXRpb246W3t0eXBlOmR9XSxvblRpbWVTZWxlY3Rpb25DaGFuZ2VkOlt7dHlwZTpCfV0sb25UaW1lU2VsZWN0aW9uVG9nZ2xlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBxMD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuaXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkPSExLHRoaXMub25UaW1lU2VsZWN0aW9uQ2hhbmdlZD1uZXcgJCx0aGlzLm9uVGltZVNlbGVjdGlvblRvZ2dsZWQ9bmV3ICQsdGhpcy5heGlzRGlyZWN0aW9uPVNkLkhPUklaT05UQUwsdGhpcy5jYXJkRm9iSGVscGVyPXtnZXRTdGVwSGlnaGVyVGhhbkF4aXNQb3NpdGlvbjp0aGlzLmdldFN0ZXBIaWdoZXJUaGFuQXhpc1Bvc2l0aW9uLmJpbmQodGhpcyksZ2V0U3RlcExvd2VyVGhhbkF4aXNQb3NpdGlvbjp0aGlzLmdldFN0ZXBMb3dlclRoYW5BeGlzUG9zaXRpb24uYmluZCh0aGlzKX0sdGhpcy5wcm9zcGVjdGl2ZVN0ZXA9bnVsbH1nZXRBeGlzUG9zaXRpb25Gcm9tU3RhcnRTdGVwKCl7cmV0dXJuIHRoaXMuc2NhbGUuZm9yd2FyZCh0aGlzLm1pbk1heEhvcml6b250YWxWaWV3RXh0ZW5kLFswLHRoaXMuYXhpc1NpemVdLHRoaXMudGltZVNlbGVjdGlvbi5zdGFydC5zdGVwKX1nZXRBeGlzUG9zaXRpb25Gcm9tRW5kU3RlcCgpe3JldHVybiB0aGlzLnRpbWVTZWxlY3Rpb24uZW5kPT09bnVsbD9udWxsOnRoaXMuc2NhbGUuZm9yd2FyZCh0aGlzLm1pbk1heEhvcml6b250YWxWaWV3RXh0ZW5kLFswLHRoaXMuYXhpc1NpemVdLHRoaXMudGltZVNlbGVjdGlvbi5lbmQuc3RlcCl9Z2V0QXhpc1Bvc2l0aW9uRnJvbVByb3NwZWN0aXZlU3RlcCgpe3JldHVybiB0aGlzLnByb3NwZWN0aXZlU3RlcD09PW51bGw/bnVsbDp0aGlzLnNjYWxlLmZvcndhcmQodGhpcy5taW5NYXhIb3Jpem9udGFsVmlld0V4dGVuZCxbMCx0aGlzLmF4aXNTaXplXSx0aGlzLnByb3NwZWN0aXZlU3RlcCl9Z2V0SGlnaGVzdFN0ZXAoKXtyZXR1cm4gdGhpcy5taW5NYXhTdGVwLm1heFN0ZXB9Z2V0TG93ZXN0U3RlcCgpe3JldHVybiB0aGlzLm1pbk1heFN0ZXAubWluU3RlcH1nZXRTdGVwSGlnaGVyVGhhbkF4aXNQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRTdGVwQXRNb3VzZVBvc3Rpb24odCl9Z2V0U3RlcExvd2VyVGhhbkF4aXNQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRTdGVwQXRNb3VzZVBvc3Rpb24odCl9Z2V0U3RlcEF0TW91c2VQb3N0aW9uKHQpe2xldCBlPU1hdGgucm91bmQodGhpcy5zY2FsZS5yZXZlcnNlKHRoaXMubWluTWF4SG9yaXpvbnRhbFZpZXdFeHRlbmQsWzAsdGhpcy5heGlzU2l6ZV0sdCkpO3JldHVybiBlPnRoaXMuZ2V0SGlnaGVzdFN0ZXAoKT90aGlzLmdldEhpZ2hlc3RTdGVwKCk6ZTx0aGlzLmdldExvd2VzdFN0ZXAoKT90aGlzLmdldExvd2VzdFN0ZXAoKTplfX07cTAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8cTApfTtxMC5cdTAyNzVjbXA9eih7dHlwZTpxMCxzZWxlY3RvcnM6W1sic2NhbGFyLWNhcmQtZm9iLWNvbnRyb2xsZXIiXV0saW5wdXRzOnt0aW1lU2VsZWN0aW9uOiJ0aW1lU2VsZWN0aW9uIixzY2FsZToic2NhbGUiLG1pbk1heEhvcml6b250YWxWaWV3RXh0ZW5kOiJtaW5NYXhIb3Jpem9udGFsVmlld0V4dGVuZCIsbWluTWF4U3RlcDoibWluTWF4U3RlcCIsYXhpc1NpemU6ImF4aXNTaXplIixpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQ6ImlzUHJvc3BlY3RpdmVGb2JGZWF0dXJlRW5hYmxlZCJ9LG91dHB1dHM6e29uVGltZVNlbGVjdGlvbkNoYW5nZWQ6Im9uVGltZVNlbGVjdGlvbkNoYW5nZWQiLG9uVGltZVNlbGVjdGlvblRvZ2dsZWQ6Im9uVGltZVNlbGVjdGlvblRvZ2dsZWQifSxkZWNsczoxLHZhcnM6MTEsY29uc3RzOltbMywiYXhpc0RpcmVjdGlvbiIsInRpbWVTZWxlY3Rpb24iLCJzdGFydFN0ZXBBeGlzUG9zaXRpb24iLCJlbmRTdGVwQXhpc1Bvc2l0aW9uIiwicHJvc3BlY3RpdmVTdGVwQXhpc1Bvc2l0aW9uIiwiaGlnaGVzdFN0ZXAiLCJsb3dlc3RTdGVwIiwicHJvc3BlY3RpdmVTdGVwIiwiaXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkIiwiY2FyZEZvYkhlbHBlciIsInNob3dFeHRlbmRlZExpbmUiLCJvblRpbWVTZWxlY3Rpb25DaGFuZ2VkIiwib25UaW1lU2VsZWN0aW9uVG9nZ2xlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiY2FyZC1mb2ItY29udHJvbGxlciIsMCksQSgib25UaW1lU2VsZWN0aW9uQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25UaW1lU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGkpfSkoIm9uVGltZVNlbGVjdGlvblRvZ2dsZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uVGltZVNlbGVjdGlvblRvZ2dsZWQuZW1pdChpKX0pLGgoKSksdCYyJiZQKCJheGlzRGlyZWN0aW9uIixlLmF4aXNEaXJlY3Rpb24pKCJ0aW1lU2VsZWN0aW9uIixlLnRpbWVTZWxlY3Rpb24pKCJzdGFydFN0ZXBBeGlzUG9zaXRpb24iLGUuZ2V0QXhpc1Bvc2l0aW9uRnJvbVN0YXJ0U3RlcCgpKSgiZW5kU3RlcEF4aXNQb3NpdGlvbiIsZS5nZXRBeGlzUG9zaXRpb25Gcm9tRW5kU3RlcCgpKSgicHJvc3BlY3RpdmVTdGVwQXhpc1Bvc2l0aW9uIixlLmdldEF4aXNQb3NpdGlvbkZyb21Qcm9zcGVjdGl2ZVN0ZXAoKSkoImhpZ2hlc3RTdGVwIixlLmdldEhpZ2hlc3RTdGVwKCkpKCJsb3dlc3RTdGVwIixlLmdldExvd2VzdFN0ZXAoKSkoInByb3NwZWN0aXZlU3RlcCIsZS5wcm9zcGVjdGl2ZVN0ZXApKCJpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQiLGUuaXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkKSgiY2FyZEZvYkhlbHBlciIsZS5jYXJkRm9iSGVscGVyKSgic2hvd0V4dGVuZGVkTGluZSIsITApfSxkaXJlY3RpdmVzOltrbV0sc3R5bGVzOlsic2NhbGFyLWNhcmQtZm9iLWNvbnRyb2xsZXIgLnRpbWUtZm9iLXdyYXBwZXJ7aGVpZ2h0OjEwMCV9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocTAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJzY2FsYXItY2FyZC1mb2ItY29udHJvbGxlciIsdGVtcGxhdGU6YAogICAgPGNhcmQtZm9iLWNvbnRyb2xsZXIKICAgICAgW2F4aXNEaXJlY3Rpb25dPSJheGlzRGlyZWN0aW9uIgogICAgICBbdGltZVNlbGVjdGlvbl09InRpbWVTZWxlY3Rpb24iCiAgICAgIFtzdGFydFN0ZXBBeGlzUG9zaXRpb25dPSJnZXRBeGlzUG9zaXRpb25Gcm9tU3RhcnRTdGVwKCkiCiAgICAgIFtlbmRTdGVwQXhpc1Bvc2l0aW9uXT0iZ2V0QXhpc1Bvc2l0aW9uRnJvbUVuZFN0ZXAoKSIKICAgICAgW3Byb3NwZWN0aXZlU3RlcEF4aXNQb3NpdGlvbl09ImdldEF4aXNQb3NpdGlvbkZyb21Qcm9zcGVjdGl2ZVN0ZXAoKSIKICAgICAgW2hpZ2hlc3RTdGVwXT0iZ2V0SGlnaGVzdFN0ZXAoKSIKICAgICAgW2xvd2VzdFN0ZXBdPSJnZXRMb3dlc3RTdGVwKCkiCiAgICAgIFtwcm9zcGVjdGl2ZVN0ZXBdPSJwcm9zcGVjdGl2ZVN0ZXAiCiAgICAgIFtpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWRdPSJpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQiCiAgICAgIFtjYXJkRm9iSGVscGVyXT0iY2FyZEZvYkhlbHBlciIKICAgICAgW3Nob3dFeHRlbmRlZExpbmVdPSJ0cnVlIgogICAgICAob25UaW1lU2VsZWN0aW9uQ2hhbmdlZCk9Im9uVGltZVNlbGVjdGlvbkNoYW5nZWQuZW1pdCgkZXZlbnQpIgogICAgICAob25UaW1lU2VsZWN0aW9uVG9nZ2xlZCk9Im9uVGltZVNlbGVjdGlvblRvZ2dsZWQuZW1pdCgkZXZlbnQpIgogICAgPjwvY2FyZC1mb2ItY29udHJvbGxlcj4KICBgLHN0eWxlVXJsczpbInNjYWxhcl9jYXJkX2ZvYl9jb250cm9sbGVyLmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse3RpbWVTZWxlY3Rpb246W3t0eXBlOmR9XSxzY2FsZTpbe3R5cGU6ZH1dLG1pbk1heEhvcml6b250YWxWaWV3RXh0ZW5kOlt7dHlwZTpkfV0sbWluTWF4U3RlcDpbe3R5cGU6ZH1dLGF4aXNTaXplOlt7dHlwZTpkfV0saXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkOlt7dHlwZTpkfV0sb25UaW1lU2VsZWN0aW9uQ2hhbmdlZDpbe3R5cGU6Qn1dLG9uVGltZVNlbGVjdGlvblRvZ2dsZWQ6W3t0eXBlOkJ9XX0pfSkoKTtmdW5jdGlvbiBlV3Qobix0KXtuJjEmJkQoMCwibWF0LXNwaW5uZXIiLDI0KX1mdW5jdGlvbiBuV3Qobix0KXtuJjEmJih1KDAsInRoIiksVCgxLCJTbW9vdGhlZCIpLGgoKSl9ZnVuY3Rpb24gb1d0KG4sdCl7aWYobiYxJiYoRW4oMCksRCgxLCJ0Yi1leHBlcmltZW50LWFsaWFzIiwzMCksVCgyLCIvIiksa24oKSksbiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0O3goMSksUCgiYWxpYXMiLGUubWV0YWRhdGEuYWxpYXMpfX1mdW5jdGlvbiBpV3Qobix0KXtpZihuJjEmJih1KDAsInRkIiksVCgxKSxoKCkpLG4mMil7bGV0IGU9UygpLiRpbXBsaWNpdCxvPVMoMik7eCgxKSxsZSgiICIsby52YWx1ZUZvcm1hdHRlci5mb3JtYXRTaG9ydChlLnBvaW50LnkpLCIgIil9fWZ1bmN0aW9uIGFXdChuLHQpe2lmKG4mMSYmKEVuKDApLHUoMSwidHIiLDI4KSx1KDIsInRkIiwyOSksRCgzLCJzcGFuIiksaCgpLHUoNCwidGQiLDEpLGsoNSxvV3QsMywxLCJuZy1jb250YWluZXIiLDIxKSxUKDYpLGgoKSxrKDcsaVd0LDIsMSwidGQiLDIxKSx1KDgsInRkIiksVCg5KSxoKCksdSgxMCwidGQiKSxUKDExKSxoKCksdSgxMiwidGQiKSxUKDEzKSxYKDE0LCJkYXRlIiksaCgpLHUoMTUsInRkIiksVCgxNiksaCgpLGgoKSxrbigpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygyKTt4KDEpLG1lKCJjbG9zZXN0IixlLm1ldGFkYXRhLmNsb3Nlc3QpLHgoMikscWUoImJhY2tncm91bmQtY29sb3IiLGUubWV0YWRhdGEuY29sb3IpLHgoMiksUCgibmdJZiIsZS5tZXRhZGF0YS5hbGlhcykseCgxKSxsZSgiIixlLm1ldGFkYXRhLmRpc3BsYXlOYW1lLCIgIikseCgxKSxQKCJuZ0lmIixvLnNtb290aGluZ0VuYWJsZWQpLHgoMiksSWUoby52YWx1ZUZvcm1hdHRlci5mb3JtYXRTaG9ydChlLnBvaW50LnZhbHVlKSkseCgyKSxJZShvLnN0ZXBGb3JtYXR0ZXIuZm9ybWF0U2hvcnQoZS5wb2ludC5zdGVwKSkseCgyKSxJZShodigxNCwxMSxlLnBvaW50LndhbGxUaW1lLCJzaG9ydCIpKSx4KDMpLGxlKCIgIixvLnJlbGF0aXZlWEZvcm1hdHRlci5mb3JtYXRSZWFkYWJsZShlLnBvaW50LnJlbGF0aXZlVGltZUluTXMpLCIgIil9fWZ1bmN0aW9uIHJXdChuLHQpe2lmKG4mMSYmKHUoMCwidGFibGUiLDI1KSx1KDEsInRoZWFkIiksdSgyLCJ0ciIpLEQoMywidGgiLDI2KSx1KDQsInRoIiksVCg1LCJSdW4iKSxoKCksayg2LG5XdCwyLDAsInRoIiwyMSksdSg3LCJ0aCIpLFQoOCwiVmFsdWUiKSxoKCksdSg5LCJ0aCIpLFQoMTAsIlN0ZXAiKSxoKCksdSgxMSwidGgiKSxUKDEyLCJUaW1lIiksaCgpLHUoMTMsInRoIiksVCgxNCwiUmVsYXRpdmUiKSxoKCksaCgpLGgoKSx1KDE1LCJ0Ym9keSIpLGsoMTYsYVd0LDE3LDE0LCJuZy1jb250YWluZXIiLDI3KSxoKCksaCgpKSxuJjIpe2xldCBlPXQuZGF0YSxvPXQuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZCxpPVMoKTt4KDYpLFAoIm5nSWYiLGkuc21vb3RoaW5nRW5hYmxlZCkseCgxMCksUCgibmdGb3JPZiIsaS5nZXRDdXJzb3JBd2FyZVRvb2x0aXBEYXRhKGUsbykpKCJuZ0ZvclRyYWNrQnkiLGkudHJhY2tCeVRvb2x0aXBEYXR1bSl9fWZ1bmN0aW9uIHNXdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTtFbigwKSx1KDEsImRpdiIsMzEpLHUoMiwic2NhbGFyLWNhcmQtZGF0YS10YWJsZSIsMzIpLEEoInNvcnREYXRhQnkiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkuc29ydERhdGFCeShpKX0pLGgoKSxoKCksa24oKX1pZihuJjIpe2xldCBlPVMoKTt4KDIpLFAoImNoYXJ0TWV0YWRhdGFNYXAiLGUuY2hhcnRNZXRhZGF0YU1hcCkoImRhdGFTZXJpZXMiLGUuZGF0YVNlcmllcykoInN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24iLGUuc3RlcE9yTGlua2VkVGltZVNlbGVjdGlvbikoImRhdGFIZWFkZXJzIixlLmRhdGFIZWFkZXJzKSgic29ydGluZ0luZm8iLGUuc29ydGluZ0luZm8pfX12YXIgbFd0PWZ1bmN0aW9uKG4pe3JldHVyblswLG5dfSxjV3Q9ZnVuY3Rpb24oKXtyZXR1cm57Im91dC1vZi1zZWxlY3RlZC10aW1lIjohMCxlbmQ6ITAscmFuZ2U6ITB9fTtmdW5jdGlvbiBtV3Qobix0KXtpZihuJjEmJkQoMCwiZGl2IiwzMyksbiYyKXtsZXQgZT1TKDIpLG89ZS52aWV3RXh0ZW50LGk9ZS5kb21EaW1lbnNpb24sYT1lLnhTY2FsZSxyPVMoKTtxZSgibGVmdCIsYS5mb3J3YXJkKG8ueCxhbygzLGxXdCxpLndpZHRoKSxyLnN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24uZW5kPT1udWxsP251bGw6ci5zdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uLmVuZC5zdGVwKSsicHgiKSxQKCJuZ0NsYXNzIix3eSg1LGNXdCkpfX12YXIgZld0PWZ1bmN0aW9uKG4pe3JldHVybltuLDBdfSxwV3Q9ZnVuY3Rpb24obil7cmV0dXJueyJvdXQtb2Ytc2VsZWN0ZWQtdGltZSI6ITAsc3RhcnQ6ITAscmFuZ2U6bn19O2Z1bmN0aW9uIGRXdChuLHQpe2lmKG4mMSYmKEVuKDApLEQoMSwiZGl2IiwzMyksaygyLG1XdCwxLDYsImRpdiIsMzQpLGtuKCkpLG4mMil7bGV0IGU9UygpLG89ZS52aWV3RXh0ZW50LGk9ZS5kb21EaW1lbnNpb24sYT1lLnhTY2FsZSxyPVMoKTt4KDEpLHFlKCJyaWdodCIsYS5mb3J3YXJkKG8ueCxhbyg0LGZXdCxpLndpZHRoKSxyLnN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24uc3RhcnQuc3RlcCkrInB4IiksUCgibmdDbGFzcyIsYW8oNixwV3QsISEoci5zdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uLmVuZCE9bnVsbCYmci5zdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uLmVuZC5zdGVwKSkpLHgoMSksUCgibmdJZiIsci5zdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uLmVuZD09bnVsbD9udWxsOnIuc3RlcE9yTGlua2VkVGltZVNlbGVjdGlvbi5lbmQuc3RlcCl9fWZ1bmN0aW9uIGdXdChuLHQpe2lmKG4mMSYmaygwLGRXdCwzLDgsIm5nLWNvbnRhaW5lciIsMjEpLG4mMil7bGV0IGU9UygpO1AoIm5nSWYiLGUuc3RlcE9yTGlua2VkVGltZVNlbGVjdGlvbil9fWZ1bmN0aW9uIHVXdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTtFbigwKSx1KDEsInNjYWxhci1jYXJkLWZvYi1jb250cm9sbGVyIiwzNSksQSgib25UaW1lU2VsZWN0aW9uQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25UaW1lU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGkpfSkoIm9uVGltZVNlbGVjdGlvblRvZ2dsZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoMikub25Gb2JSZW1vdmVkKCl9KSxoKCksa24oKX1pZihuJjIpe2xldCBlPVMoKSxvPWUueFNjYWxlLGk9ZS52aWV3RXh0ZW50LGE9ZS5kb21EaW1lbnNpb24scj1TKCk7eCgxKSxQKCJ0aW1lU2VsZWN0aW9uIixyLnN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24pKCJzY2FsZSIsbykoIm1pbk1heEhvcml6b250YWxWaWV3RXh0ZW5kIixpLngpKCJtaW5NYXhTdGVwIixyLm1pbk1heFN0ZXApKCJheGlzU2l6ZSIsYS53aWR0aCkoImlzUHJvc3BlY3RpdmVGb2JGZWF0dXJlRW5hYmxlZCIsci5pc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQpfX1mdW5jdGlvbiBoV3Qobix0KXtpZihuJjEmJmsoMCx1V3QsMiw2LCJuZy1jb250YWluZXIiLDIxKSxuJjIpe2xldCBlPVMoKTtQKCJuZ0lmIixlLmluVGltZVNlbGVjdGlvbk1vZGUoKSl9fXZhciBaMD1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMucmVmPXQsdGhpcy5kaWFsb2c9ZSx0aGlzLkRhdGFMb2FkU3RhdGU9S3QsdGhpcy5SZW5kZXJlclR5cGU9a2EsdGhpcy5TY2FsZVR5cGU9Q3IsdGhpcy5pc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQ9ITEsdGhpcy5vbkZ1bGxTaXplVG9nZ2xlPW5ldyAkLHRoaXMub25QaW5DbGlja2VkPW5ldyAkLHRoaXMub25UaW1lU2VsZWN0aW9uQ2hhbmdlZD1uZXcgJCx0aGlzLm9uU3RlcFNlbGVjdG9yVG9nZ2xlZD1uZXcgJCx0aGlzLm9uRGF0YVRhYmxlU29ydGluZz1uZXcgJCx0aGlzLm9uTGluZUNoYXJ0Wm9vbT1uZXcgJCx0aGlzLnNvcnRpbmdJbmZvPXtoZWFkZXI6VG4uUlVOLG9yZGVyOkwwLkFTQ0VORElOR30sdGhpcy55U2NhbGVUeXBlPUNyLkxJTkVBUix0aGlzLmlzVmlld0JveE92ZXJyaWRkZW49ITEsdGhpcy5yZWxhdGl2ZVhGb3JtYXR0ZXI9SDUsdGhpcy52YWx1ZUZvcm1hdHRlcj1CUCx0aGlzLnN0ZXBGb3JtYXR0ZXI9Uk99dG9nZ2xlWVNjYWxlVHlwZSgpe3RoaXMueVNjYWxlVHlwZT10aGlzLnlTY2FsZVR5cGU9PT1Dci5MSU5FQVI/Q3IuTE9HMTA6Q3IuTElORUFSfXNvcnREYXRhQnkodCl7dGhpcy5zb3J0aW5nSW5mbz10LHRoaXMub25EYXRhVGFibGVTb3J0aW5nLmVtaXQodCl9cmVzZXREb21haW4oKXt0aGlzLmxpbmVDaGFydCYmdGhpcy5saW5lQ2hhcnQudmlld0JveFJlc2V0KCl9dHJhY2tCeVRvb2x0aXBEYXR1bSh0LGUpe3JldHVybiBlLmlkfWdldEN1c3RvbVhGb3JtYXR0ZXIoKXtzd2l0Y2godGhpcy54QXhpc1R5cGUpe2Nhc2UgWmkuUkVMQVRJVkU6cmV0dXJuIEg1O2Nhc2UgWmkuU1RFUDpyZXR1cm4gVnB0O2Nhc2UgWmkuV0FMTF9USU1FOmRlZmF1bHQ6cmV0dXJufX1nZXRDdXJzb3JBd2FyZVRvb2x0aXBEYXRhKHQsZSl7bGV0IG89dC5tYXAocj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHIpLHttZXRhZGF0YTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sci5tZXRhZGF0YSkse2Nsb3Nlc3Q6ITEsZGlzdFNxVG9DdXJzb3I6TWF0aC5oeXBvdChyLnBvaW50LngtZS54LHIucG9pbnQueS1lLnkpfSl9KSksaT0xLzAsYT0wO2ZvcihsZXQgcj0wO3I8by5sZW5ndGg7cisrKWk+b1tyXS5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvciYmKGk9b1tyXS5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvcixhPXIpO3N3aXRjaChvLmxlbmd0aCYmKG9bYV0ubWV0YWRhdGEuY2xvc2VzdD0hMCksdGhpcy50b29sdGlwU29ydCl7Y2FzZSBRYS5BU0NFTkRJTkc6cmV0dXJuIG8uc29ydCgocixzKT0+ci5wb2ludC55LXMucG9pbnQueSk7Y2FzZSBRYS5ERVNDRU5ESU5HOnJldHVybiBvLnNvcnQoKHIscyk9PnMucG9pbnQueS1yLnBvaW50LnkpO2Nhc2UgUWEuTkVBUkVTVDpyZXR1cm4gby5zb3J0KChyLHMpPT5yLm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yLXMubWV0YWRhdGEuZGlzdFNxVG9DdXJzb3IpO2Nhc2UgUWEuREVGQVVMVDpjYXNlIFFhLkFMUEhBQkVUSUNBTDpyZXR1cm4gby5zb3J0KChyLHMpPT5yLm1ldGFkYXRhLmRpc3BsYXlOYW1lPHMubWV0YWRhdGEuZGlzcGxheU5hbWU/LTE6ci5tZXRhZGF0YS5kaXNwbGF5TmFtZT5zLm1ldGFkYXRhLmRpc3BsYXlOYW1lPzE6MCl9fW9wZW5EYXRhRG93bmxvYWREaWFsb2coKXt0aGlzLmRpYWxvZy5vcGVuKHRoaXMuRGF0YURvd25sb2FkQ29tcG9uZW50LHtkYXRhOntjYXJkSWQ6dGhpcy5jYXJkSWR9fSl9b25Gb2JSZW1vdmVkKCl7dGhpcy5vblN0ZXBTZWxlY3RvclRvZ2dsZWQuZW1pdChQTy5GT0JfREVTRUxFQ1QpfWluVGltZVNlbGVjdGlvbk1vZGUoKXtyZXR1cm4gdGhpcy54QXhpc1R5cGU9PT1aaS5TVEVQJiZ0aGlzLnN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24hPT1udWxsfX07WjAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WjApKHYoTCksdihDaSkpfTtaMC5cdTAyNzVjbXA9eih7dHlwZTpaMCxzZWxlY3RvcnM6W1sic2NhbGFyLWNhcmQtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmcGUoU2MsNSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5saW5lQ2hhcnQ9by5maXJzdCl9fSxpbnB1dHM6e2NhcmRJZDoiY2FyZElkIixjaGFydE1ldGFkYXRhTWFwOiJjaGFydE1ldGFkYXRhTWFwIixEYXRhRG93bmxvYWRDb21wb25lbnQ6IkRhdGFEb3dubG9hZENvbXBvbmVudCIsZGF0YVNlcmllczoiZGF0YVNlcmllcyIsaWdub3JlT3V0bGllcnM6Imlnbm9yZU91dGxpZXJzIixpc0NhcmRWaXNpYmxlOiJpc0NhcmRWaXNpYmxlIixpc1Bpbm5lZDoiaXNQaW5uZWQiLGxvYWRTdGF0ZToibG9hZFN0YXRlIixzaG93RnVsbFNpemU6InNob3dGdWxsU2l6ZSIsc21vb3RoaW5nRW5hYmxlZDoic21vb3RoaW5nRW5hYmxlZCIsdGFnOiJ0YWciLHRpdGxlOiJ0aXRsZSIsdG9vbHRpcFNvcnQ6InRvb2x0aXBTb3J0Iix4QXhpc1R5cGU6InhBeGlzVHlwZSIseFNjYWxlVHlwZToieFNjYWxlVHlwZSIsdXNlRGFya01vZGU6InVzZURhcmtNb2RlIixmb3JjZVN2ZzoiZm9yY2VTdmciLGxpbmtlZFRpbWVTZWxlY3Rpb246ImxpbmtlZFRpbWVTZWxlY3Rpb24iLHN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb246InN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24iLGlzUHJvc3BlY3RpdmVGb2JGZWF0dXJlRW5hYmxlZDoiaXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkIixtaW5NYXhTdGVwOiJtaW5NYXhTdGVwIixkYXRhSGVhZGVyczoiZGF0YUhlYWRlcnMifSxvdXRwdXRzOntvbkZ1bGxTaXplVG9nZ2xlOiJvbkZ1bGxTaXplVG9nZ2xlIixvblBpbkNsaWNrZWQ6Im9uUGluQ2xpY2tlZCIsb25UaW1lU2VsZWN0aW9uQ2hhbmdlZDoib25UaW1lU2VsZWN0aW9uQ2hhbmdlZCIsb25TdGVwU2VsZWN0b3JUb2dnbGVkOiJvblN0ZXBTZWxlY3RvclRvZ2dsZWQiLG9uRGF0YVRhYmxlU29ydGluZzoib25EYXRhVGFibGVTb3J0aW5nIixvbkxpbmVDaGFydFpvb206Im9uTGluZUNoYXJ0Wm9vbSJ9LGRlY2xzOjM1LHZhcnM6MjcsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IG47dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/bj1nb29nLmdldE1zZygiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIik6bj0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgcmVzZXRzIGxpbmUgY2hhcnQgZG9tYWluIHRvIHRoZSBkYXRh4pCfZTY4YTU1Mjk0MWFiNDI3YTk5ZTc0MzdlMDg0NDNmMzBhYzcxY2NkNuKQnzM4MzA2NDY1MjEwNTgyNjg1NTg6Rml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhYDtsZXQgdDt0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT90PWdvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpOnQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYDtsZXQgZTt0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9lPWdvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKTplPSRsb2NhbGl6ZWA6QSBidXR0b24gb24gbGluZSBjaGFydCB0aGF0IHRvZ2dsZXMgZnVsbCBzaXplIG1vZGUu4pCfZmM4Zjc2N2QwYjlmOTMwMTg3YTFiYWUzNDQ3N2FkMjg3MzZlY2UzM+KQnzkxNTcyMTU2MzYzODkyNjU5NzpUb2dnbGUgZnVsbCBzaXplIG1vZGVgO2xldCBvO3R5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP289Z29vZy5nZXRNc2coIk1vcmUgbGluZSBjaGFydCBvcHRpb25zIik6bz0kbG9jYWxpemVgOkFuIG92ZXJmbG93IG1lbnUgYnV0dG9uIHRoYXQgb3BlbnMgbW9yZSBsaW5lIGNoYXJ0IG9wdGlvbnPikJ9iMjYwZmFiOTQ2YTMwNzdjZTIwZmQyOGUzMzY5NzlmNTg2NzIwZThk4pCfODc4MDUzNzQwMjEwMzM2NDM1Ok1vcmUgbGluZSBjaGFydCBvcHRpb25zYDtsZXQgaTtyZXR1cm4gdHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/aT1nb29nLmdldE1zZygiVG9nZ2xlIFktYXhpcyBsb2cgc2NhbGUgb24gbGluZSBjaGFydCIpOmk9JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgbG9nIHNjYWxlIG9uIHktYXhpcyBvbiBhIGxpbmUgY2hhcnTikJ9mZTkxZjk2YWI5YjNiYWNhNWE0ODkxM2YyYjBmYWU4NDQ4M2Q5M2Uz4pCfMzM3NDY0NTYyMDYzODg4MzkyNjpUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSBvbiBsaW5lIGNoYXJ0YCxbWzEsImhlYWRpbmciXSxbMSwibmFtZSJdLFsxLCJ0YWciLDMsInRpdGxlIiwidmFsdWUiXSxbMywiaXNDbGlwcGVkIl0sWzEsImNvbnRyb2xzIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixuLDMsImRpc2FibGVkIiwidGl0bGUiLCJjbGljayJdLFsic3ZnSWNvbiIsInNldHRpbmdzX292ZXJzY2FuXzI0cHgiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsZSwidGl0bGUiLCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiLDMsImNsaWNrIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJhcmlhLWxhYmVsIixvLCJ0aXRsZSIsIk1vcmUgbGluZSBjaGFydCBvcHRpb25zIiwzLCJtYXRNZW51VHJpZ2dlckZvciJdLFsic3ZnSWNvbiIsIm1vcmVfdmVydF8yNHB4Il0sWyJtZW51IiwibWF0TWVudSJdLFsibWF0LW1lbnUtaXRlbSIsIiIsImFyaWEtbGFiZWwiLGksMywiY2xpY2siXSxbInN2Z0ljb24iLCJsaW5lX3dlaWdodF8yNHB4Il0sWyJtYXQtbWVudS1pdGVtIiwiIiwiYXJpYS1sYWJlbCIsIk9wZW4gZGlhbG9nIHRvIGRvd25sb2FkIGRhdGEiLDMsImNsaWNrIl0sWyJzdmdJY29uIiwiZ2V0X2FwcF8yNHB4Il0sWzEsImNoYXJ0LWNvbnRhaW5lciJdLFsiZGlhbWV0ZXIiLCIxOCIsNCwibmdJZiJdLFszLCJkaXNhYmxlVXBkYXRlIiwicHJlZmVycmVkUmVuZGVyZXJUeXBlIiwic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwieFNjYWxlVHlwZSIsInlTY2FsZVR5cGUiLCJjdXN0b21YRm9ybWF0dGVyIiwiaWdub3JlWU91dGxpZXJzIiwidG9vbHRpcFRlbXBsYXRlIiwidXNlRGFya01vZGUiLCJjdXN0b21WaXNUZW1wbGF0ZSIsImN1c3RvbUNoYXJ0T3ZlcmxheVRlbXBsYXRlIiwib25WaWV3Qm94T3ZlcnJpZGRlbiIsInZpZXdCb3hDaGFuZ2VkIl0sWyJ0b29sdGlwIiwiIl0sWzQsIm5nSWYiXSxbImxpbmVDaGFydEN1c3RvbVZpcyIsIiJdLFsibGluZUNoYXJ0Q3VzdG9tWEF4aXNWaXMiLCIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMSwidG9vbHRpcCJdLFsxLCJjaXJjbGUtaGVhZGVyIl0sWzQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsxLCJ0b29sdGlwLXJvdyJdLFsxLCJ0b29sdGlwLXJvdy1jaXJjbGUiXSxbMywiYWxpYXMiXSxbMSwiZGF0YS10YWJsZS1jb250YWluZXIiXSxbMywiY2hhcnRNZXRhZGF0YU1hcCIsImRhdGFTZXJpZXMiLCJzdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uIiwiZGF0YUhlYWRlcnMiLCJzb3J0aW5nSW5mbyIsInNvcnREYXRhQnkiXSxbMywibmdDbGFzcyJdLFszLCJuZ0NsYXNzIiwibGVmdCIsNCwibmdJZiJdLFszLCJ0aW1lU2VsZWN0aW9uIiwic2NhbGUiLCJtaW5NYXhIb3Jpem9udGFsVmlld0V4dGVuZCIsIm1pbk1heFN0ZXAiLCJheGlzU2l6ZSIsImlzUHJvc3BlY3RpdmVGb2JGZWF0dXJlRW5hYmxlZCIsIm9uVGltZVNlbGVjdGlvbkNoYW5nZWQiLCJvblRpbWVTZWxlY3Rpb25Ub2dnbGVkIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHUoMCwiZGl2IiwwKSx1KDEsInNwYW4iLDEpLEQoMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLEQoMywidmlzLWxpbmtlZC10aW1lLXNlbGVjdGlvbi13YXJuaW5nIiwzKSxoKCksdSg0LCJzcGFuIiw0KSx1KDUsImJ1dHRvbiIsNSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVzZXREb21haW4oKX0pLFgoNiwiYXN5bmMiKSxYKDcsImFzeW5jIiksRCg4LCJtYXQtaWNvbiIsNiksaCgpLHUoOSwiYnV0dG9uIiw3KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblBpbkNsaWNrZWQuZW1pdCghZS5pc1Bpbm5lZCl9KSxEKDEwLCJtYXQtaWNvbiIsOCksaCgpLHUoMTEsImJ1dHRvbiIsOSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25GdWxsU2l6ZVRvZ2dsZS5lbWl0KCl9KSxEKDEyLCJtYXQtaWNvbiIsOCksaCgpLHUoMTMsImJ1dHRvbiIsMTApLEQoMTQsIm1hdC1pY29uIiwxMSksaCgpLHUoMTUsIm1hdC1tZW51IixudWxsLDEyKSx1KDE3LCJidXR0b24iLDEzKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS50b2dnbGVZU2NhbGVUeXBlKCl9KSxEKDE4LCJtYXQtaWNvbiIsMTQpLHUoMTksInNwYW4iKSxUKDIwLCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSIpLGgoKSxoKCksdSgyMSwiYnV0dG9uIiwxNSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub3BlbkRhdGFEb3dubG9hZERpYWxvZygpfSksRCgyMiwibWF0LWljb24iLDE2KSx1KDIzLCJzcGFuIiksVCgyNCwiRG93bmxvYWQgZGF0YSIpLGgoKSxoKCksaCgpLGgoKSxoKCksdSgyNSwiZGl2IiwxNyksaygyNixlV3QsMSwwLCJtYXQtc3Bpbm5lciIsMTgpLHUoMjcsImxpbmUtY2hhcnQiLDE5KSxBKCJvblZpZXdCb3hPdmVycmlkZGVuIixmdW5jdGlvbihpKXtyZXR1cm4gZS5pc1ZpZXdCb3hPdmVycmlkZGVuPWl9KSgidmlld0JveENoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uTGluZUNoYXJ0Wm9vbS5lbWl0KGkpfSksaCgpLGsoMjgscld0LDE3LDMsIm5nLXRlbXBsYXRlIixudWxsLDIwLHhuKSxoKCksaygzMCxzV3QsMyw1LCJuZy1jb250YWluZXIiLDIxKSxrKDMxLGdXdCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDIyLHhuKSxrKDMzLGhXdCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDIzLHhuKSksdCYyKXtsZXQgbz13ZSgxNiksaT13ZSgyOSksYT13ZSgzMikscj13ZSgzNCk7eCgyKSxXaSgidGl0bGUiLGUudGFnKSxXaSgidmFsdWUiLGUudGl0bGUpLHgoMSksUCgiaXNDbGlwcGVkIixlLmxpbmtlZFRpbWVTZWxlY3Rpb24mJmUubGlua2VkVGltZVNlbGVjdGlvbi5jbGlwcGVkKSx4KDIpLFAoImRpc2FibGVkIiwhZS5saW5lQ2hhcnR8fCFRKDYsMjMsZS5saW5lQ2hhcnQuZ2V0SXNWaWV3Qm94T3ZlcnJpZGRlbigpKSkoInRpdGxlIiwhZS5saW5lQ2hhcnR8fCFRKDcsMjUsZS5saW5lQ2hhcnQuZ2V0SXNWaWV3Qm94T3ZlcnJpZGRlbigpKT8iRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIjoiTGluZSBjaGFydCBpcyBhbHJlYWR5IGZpdHRlZCB0byBkYXRhLiBXaGVuIGRhdGEgdXBkYXRlcywgdGhlIGxpbmUgY2hhcnQgd2lsbCBhdXRvIGZpdCB0byBpdHMgZG9tYWluLiIpLHgoNCkscmUoInRpdGxlIixlLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSx4KDEpLFAoInN2Z0ljb24iLGUuaXNQaW5uZWQ/ImtlZXBfMjRweCI6ImtlZXBfb3V0bGluZV8yNHB4IikseCgyKSxQKCJzdmdJY29uIixlLnNob3dGdWxsU2l6ZT8iZnVsbHNjcmVlbl9leGl0XzI0cHgiOiJmdWxsc2NyZWVuXzI0cHgiKSx4KDEpLFAoIm1hdE1lbnVUcmlnZ2VyRm9yIixvKSx4KDEzKSxQKCJuZ0lmIixlLmxvYWRTdGF0ZT09PWUuRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSx4KDEpLFAoImRpc2FibGVVcGRhdGUiLCFlLmlzQ2FyZFZpc2libGUpKCJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLGUuZm9yY2VTdmc/ZS5SZW5kZXJlclR5cGUuU1ZHOmUuUmVuZGVyZXJUeXBlLldFQkdMKSgic2VyaWVzRGF0YSIsZS5kYXRhU2VyaWVzKSgic2VyaWVzTWV0YWRhdGFNYXAiLGUuY2hhcnRNZXRhZGF0YU1hcCkoInhTY2FsZVR5cGUiLGUueFNjYWxlVHlwZSkoInlTY2FsZVR5cGUiLGUueVNjYWxlVHlwZSkoImN1c3RvbVhGb3JtYXR0ZXIiLGUuZ2V0Q3VzdG9tWEZvcm1hdHRlcigpKSgiaWdub3JlWU91dGxpZXJzIixlLmlnbm9yZU91dGxpZXJzKSgidG9vbHRpcFRlbXBsYXRlIixpKSgidXNlRGFya01vZGUiLGUudXNlRGFya01vZGUpKCJjdXN0b21WaXNUZW1wbGF0ZSIsYSkoImN1c3RvbUNoYXJ0T3ZlcmxheVRlbXBsYXRlIixyKSx4KDMpLFAoIm5nSWYiLGUuaW5UaW1lU2VsZWN0aW9uTW9kZSgpKX19LGRpcmVjdGl2ZXM6W2tsLE5sLGZuLFhlLFVyLGhyLCRpLFh0LFNjLHFyLG1uLFJsLFcwLGpuLHEwXSxwaXBlczpbb2UsUXNdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JveC1zaXppbmc6Ym9yZGVyLWJveDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6MTZweDtwYWRkaW5nLXRvcDo0cHh9LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOjE0cHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47bWFyZ2luLWJvdHRvbTo0cHg7cG9zaXRpb246cmVsYXRpdmV9LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm5hbWVbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z2FwOjVweDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6YXV0byBhdXRvfS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxLjJlbTtsaW5lLWhlaWdodDowfS50YWdbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbn0ucGluLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE4cHh9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3doaXRlLXNwYWNlOm5vd3JhcDtmbGV4LXNocmluazowO21hcmdpbi1yaWdodDotMTJweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5jaGFydC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXg6MX0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDoxMXB4O3RvcDoxMXB4fS5jaGFydC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgbGluZS1jaGFydFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJX0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXNwYWNpbmc6NHB4O2ZvbnQtc2l6ZToxM3B4fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXt0ZXh0LWFsaWduOmxlZnR9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7aGVpZ2h0OjEycHg7d2lkdGg6MTJweH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1yb3ctY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IHNwYW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuNCk7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwcHg7d2lkdGg6MTBweH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAuY2xvc2VzdFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1yb3ctY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IHNwYW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm91dC1vZi1zZWxlY3RlZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZX0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC13aWR0aDoycHg7bWFyZ2luLWxlZnQ6LTFweH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuc3RhcnQucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2xlZnQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUuZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdC13aWR0aDoycHg7bWFyZ2luLXJpZ2h0Oi0xcHg7cmlnaHQ6MH0ub3V0LW9mLXNlbGVjdGVkLXRpbWUucmFuZ2VbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNSl9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm91dC1vZi1zZWxlY3RlZC10aW1lLnJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQpfS5kYXRhLXRhYmxlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJTtoZWlnaHQ6MTAwcHg7b3ZlcmZsb3c6YXV0b30nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhaMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6InNjYWxhcl9jYXJkX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJzY2FsYXJfY2FyZF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH0se3R5cGU6Q2l9XX0se2NhcmRJZDpbe3R5cGU6ZH1dLGNoYXJ0TWV0YWRhdGFNYXA6W3t0eXBlOmR9XSxEYXRhRG93bmxvYWRDb21wb25lbnQ6W3t0eXBlOmR9XSxkYXRhU2VyaWVzOlt7dHlwZTpkfV0saWdub3JlT3V0bGllcnM6W3t0eXBlOmR9XSxpc0NhcmRWaXNpYmxlOlt7dHlwZTpkfV0saXNQaW5uZWQ6W3t0eXBlOmR9XSxsb2FkU3RhdGU6W3t0eXBlOmR9XSxzaG93RnVsbFNpemU6W3t0eXBlOmR9XSxzbW9vdGhpbmdFbmFibGVkOlt7dHlwZTpkfV0sdGFnOlt7dHlwZTpkfV0sdGl0bGU6W3t0eXBlOmR9XSx0b29sdGlwU29ydDpbe3R5cGU6ZH1dLHhBeGlzVHlwZTpbe3R5cGU6ZH1dLHhTY2FsZVR5cGU6W3t0eXBlOmR9XSx1c2VEYXJrTW9kZTpbe3R5cGU6ZH1dLGZvcmNlU3ZnOlt7dHlwZTpkfV0sbGlua2VkVGltZVNlbGVjdGlvbjpbe3R5cGU6ZH1dLHN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb246W3t0eXBlOmR9XSxpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQ6W3t0eXBlOmR9XSxtaW5NYXhTdGVwOlt7dHlwZTpkfV0sZGF0YUhlYWRlcnM6W3t0eXBlOmR9XSxvbkZ1bGxTaXplVG9nZ2xlOlt7dHlwZTpCfV0sb25QaW5DbGlja2VkOlt7dHlwZTpCfV0sb25UaW1lU2VsZWN0aW9uQ2hhbmdlZDpbe3R5cGU6Qn1dLG9uU3RlcFNlbGVjdG9yVG9nZ2xlZDpbe3R5cGU6Qn1dLG9uRGF0YVRhYmxlU29ydGluZzpbe3R5cGU6Qn1dLG9uTGluZUNoYXJ0Wm9vbTpbe3R5cGU6Qn1dLGxpbmVDaGFydDpbe3R5cGU6SXQsYXJnczpbU2NdfV19KX0pKCk7dmFyIEhsPWNsYXNze2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5yZWY9dCx0aGlzLmNka1Njcm9sbGFibGU9ZSx0aGlzLm9uVmlzaWJpbGl0eUNoYW5nZT1uZXcgJCx0aGlzLm5nVW5zdWJzY3JpYmUkPW5ldyBKdCx0aGlzLm9uRXZlbnQkPW5ldyBKdH1uZ09uSW5pdCgpe2xldCB0PXtyb290OnRoaXMuY2RrU2Nyb2xsYWJsZT90aGlzLmNka1Njcm9sbGFibGUuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ6bnVsbH07dGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiYmKHQucm9vdE1hcmdpbj10aGlzLmludGVyc2VjdGlvbk9ic2VydmVyTWFyZ2luKTtsZXQgZT1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIobz0+e3RoaXMub25FdmVudCQubmV4dChvKX0sdCk7ZS5vYnNlcnZlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpLHRoaXMubmdVbnN1YnNjcmliZSQuc3Vic2NyaWJlKCgpPT57ZS51bm9ic2VydmUodGhpcy5yZWYubmF0aXZlRWxlbWVudCl9KSx0aGlzLm9uRXZlbnQkLnBpcGUoUGUodGhpcy5uZ1Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZShvPT57bGV0IGk9by5zbGljZSgtMSlbMF07dGhpcy5vblZpc2liaWxpdHlDaGFuZ2UuZW1pdCh7dmlzaWJsZTppLmlzSW50ZXJzZWN0aW5nfSl9KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZSQubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZSQuY29tcGxldGUoKX13YWl0Rm9yRXZlbnRGb3JUZXN0T25seSgpe3JldHVybiBuZXcgUHJvbWlzZSh0PT50aGlzLm9uRXZlbnQkLnBpcGUoQ24oMSkpLnN1YnNjcmliZSgoKT0+e3QoKX0pKX19O0hsLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEhsKSh2KEwpLHYoUnIsOCkpfTtIbC5cdTAyNzVkaXI9dnQoe3R5cGU6SGwsc2VsZWN0b3JzOltbIiIsIm9ic2VydmVJbnRlcnNlY3Rpb24iLCIiXV0saW5wdXRzOntpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbjoiaW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW4ifSxvdXRwdXRzOntvblZpc2liaWxpdHlDaGFuZ2U6Im9uVmlzaWJpbGl0eUNoYW5nZSJ9fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEhsLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6IltvYnNlcnZlSW50ZXJzZWN0aW9uXSJ9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOlJyLGRlY29yYXRvcnM6W3t0eXBlOkh9XX1dfSx7aW50ZXJzZWN0aW9uT2JzZXJ2ZXJNYXJnaW46W3t0eXBlOmR9XSxvblZpc2liaWxpdHlDaGFuZ2U6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgZ3V0PS0xLzAsdXV0PTEvMDtmdW5jdGlvbiBDV3Qobix0KXtyZXR1cm4gbi5sZW5ndGghPT10Lmxlbmd0aD8hMTpuLmV2ZXJ5KChlLG8pPT57bGV0IGk9dFtvXSxhPWUucG9pbnRzLHI9aS5wb2ludHM7cmV0dXJuIGUucnVuSWQ9PT1pLnJ1bklkJiZhLmxlbmd0aD09PXIubGVuZ3RoJiZhLmV2ZXJ5KChzLGwpPT57bGV0IGM9cltsXTtyZXR1cm4gcy54PT09Yy54JiZzLnk9PT1jLnl9KX0pfXZhciBGZD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5EYXRhRG93bmxvYWRDb21wb25lbnQ9eGYsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyAkLHRoaXMuZnVsbEhlaWdodENoYW5nZWQ9bmV3ICQsdGhpcy5waW5TdGF0ZUNoYW5nZWQ9bmV3ICQsdGhpcy5pc1Zpc2libGU9ITEsdGhpcy5pc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KHBpdCksdGhpcy5taW5NYXhTdGVwcyQ9bmV3IEdhKHttaW5TdGVwOmd1dCxtYXhTdGVwOnV1dH0pLHRoaXMubGluZUNoYXJ0Wm9vbSQ9bmV3IEdhKHttaW5TdGVwOmd1dCxtYXhTdGVwOnV1dH0pLHRoaXMuc3RlcFNlbGVjdG9yVGltZVNlbGVjdGlvbiQ9bmV3IEdhKG51bGwpLHRoaXMudXNlRGFya01vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KFFiKSx0aGlzLmlnbm9yZU91dGxpZXJzJD10aGlzLnN0b3JlLnNlbGVjdCh5MyksdGhpcy50b29sdGlwU29ydCQ9dGhpcy5zdG9yZS5zZWxlY3QoUDMpLHRoaXMueEF4aXNUeXBlJD10aGlzLnN0b3JlLnNlbGVjdChFXyksdGhpcy5mb3JjZVN2ZyQ9dGhpcy5zdG9yZS5zZWxlY3QobGl0KSx0aGlzLnhTY2FsZVR5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KEVfKS5waXBlKEcoZT0+e3N3aXRjaChlKXtjYXNlIFppLlNURVA6Y2FzZSBaaS5SRUxBVElWRTpyZXR1cm4gQ3IuTElORUFSO2Nhc2UgWmkuV0FMTF9USU1FOnJldHVybiBDci5USU1FO2RlZmF1bHQ6bGV0IG89ZTt0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgeEF4aXNUeXBlIGZvciBsaW5lIGNoYXJ0LiAke299YCl9fSkpLHRoaXMuc2NhbGFyU21vb3RoaW5nJD10aGlzLnN0b3JlLnNlbGVjdChkUCksdGhpcy5zbW9vdGhpbmdFbmFibGVkJD10aGlzLnN0b3JlLnNlbGVjdChkUCkucGlwZShHKGU9PmU+MCkpLHRoaXMuc2hvd0Z1bGxTaXplPSExLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSnR9b25WaXNpYmlsaXR5Q2hhbmdlKHt2aXNpYmxlOnR9KXt0aGlzLmlzVmlzaWJsZT10fWlzU2NhbGFyQ2FyZE1ldGFkYXRhKHQpe2xldHtwbHVnaW46ZX09dDtyZXR1cm4gZT09PUxvLlNDQUxBUlN9b25GdWxsU2l6ZVRvZ2dsZSgpe3RoaXMuc2hvd0Z1bGxTaXplPSF0aGlzLnNob3dGdWxsU2l6ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dGdWxsU2l6ZSksdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKX1uZ09uSW5pdCgpe2xldCBlPXRoaXMuc3RvcmUuc2VsZWN0KFJfLHRoaXMuY2FyZElkKS5waXBlKHVlKHM9PiEhcyYmdGhpcy5pc1NjYWxhckNhcmRNZXRhZGF0YShzKSksRyhzPT5zKSksaT10aGlzLnN0b3JlLnNlbGVjdChWeSx0aGlzLmNhcmRJZCkucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHVlKHM9PkJvb2xlYW4ocykpLEcocz0+cyksQmYoMSkpLnBpcGUoUGEodGhpcy5zdG9yZS5zZWxlY3QoRV8pKSxHKChbcyxsXSk9Pk9iamVjdC5rZXlzKHMpLm1hcChmPT4oe3J1bklkOmYscG9pbnRzOnRoaXMuc3RlcFNlcmllc1RvTGluZVNlcmllcyhzW2ZdLGwpfSkpKSxYbyhDV3QpKTtmdW5jdGlvbiBhKHMpe3JldHVybiBKU09OLnN0cmluZ2lmeShbInNtb290aGVkIixzXSl9bGV0IHI9aS5waXBlKFBhKHRoaXMuc3RvcmUuc2VsZWN0KExEKSksUGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxHKChbcyxsXSk9Pmw/dGN0KHMpOnMubWFwKGM9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxjKSx7c2VyaWVzSWQ6Yy5ydW5JZCxwYXJ0aXRpb25JbmRleDowLHBhcnRpdGlvblNpemU6MX0pKSksRyhzPT5zLm1hcChsPT57dmFyIGM7bGV0IG09KGM9bC5wb2ludHNbMF0pPT09bnVsbHx8Yz09PXZvaWQgMD92b2lkIDA6Yy53YWxsVGltZTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLHtwb2ludHM6bC5wb2ludHMubWFwKGY9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxmKSx7cmVsYXRpdmVUaW1lSW5NczpmLndhbGxUaW1lLW19KSl9KX0pKSxQYSh0aGlzLnN0b3JlLnNlbGVjdChFXykpLEcoKFtzLGxdKT0+cy5tYXAoYz0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHtwb2ludHM6Yy5wb2ludHMubWFwKG09PntsZXQgZjtzd2l0Y2gobCl7Y2FzZSBaaS5SRUxBVElWRTpmPW0ucmVsYXRpdmVUaW1lSW5NczticmVhaztjYXNlIFppLldBTExfVElNRTpmPW0ud2FsbFRpbWU7YnJlYWs7Y2FzZSBaaS5TVEVQOmRlZmF1bHQ6Zj1tLnN0ZXB9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxtKSx7eDpmfSl9KX0pKSksQmYoMSkpO29uKFtyLHRoaXMubGluZUNoYXJ0Wm9vbSRdKS5zdWJzY3JpYmUoKFtzLGxdKT0+e2xldCBjPXMubWFwKCh7cG9pbnRzOl99KT0+Xy5tYXAoKHt4Ok19KT0+TSkpLmZsYXQoKSxtPU1hdGgubWluKC4uLmMpLGY9TWF0aC5tYXgoLi4uYykscD1NYXRoLm1heChtLGwubWluU3RlcCksZz1NYXRoLm1pbihmLGwubWF4U3RlcCk7dGhpcy5taW5NYXhTdGVwcyQubmV4dCh7bWluU3RlcDpwLG1heFN0ZXA6Z30pfSksdGhpcy5kYXRhU2VyaWVzJD1yLnBpcGUoUGEodGhpcy5zdG9yZS5zZWxlY3QoZFApKSx0aSgoW3MsbF0pPT57bGV0IGM9cy5tYXAoKHtzZXJpZXNJZDptLHBvaW50czpmfSk9Pih7aWQ6bSxwb2ludHM6Zn0pKTtyZXR1cm4gbDw9MD9kbihjKTpEYShvY3QoYyxsKSkucGlwZShHKG09PntsZXQgZj1jLm1hcCgocCxnKT0+KHtpZDphKHAuaWQpLHBvaW50czptW2ddLnBvaW50cy5tYXAoKHt5Ol99LE0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scC5wb2ludHNbTV0pLHt5Ol99KSl9KSk7cmV0dXJuWy4uLmMsLi4uZl19KSl9KSxTbyhbXSkpLHRoaXMubGlua2VkVGltZVNlbGVjdGlvbiQ9b24oW3RoaXMubWluTWF4U3RlcHMkLHRoaXMuc3RvcmUuc2VsZWN0KEJ2KSx0aGlzLnN0b3JlLnNlbGVjdChqdiksdGhpcy5zdG9yZS5zZWxlY3QoRV8pLHRoaXMuc3RvcmUuc2VsZWN0KFZ2KV0pLnBpcGUoRygoW3ttaW5TdGVwOnMsbWF4U3RlcDpsfSxjLG0sZixwXSk9PntpZighY3x8ZiE9PVppLlNURVB8fCFtKXJldHVybiBudWxsO2xldCBnPU9iamVjdC5hc3NpZ24oe30sbSk7cmV0dXJuIWcuZW5kJiZwJiYoZy5lbmQ9e3N0ZXA6bH0pLHIxKGcscyxsKX0pKSx0aGlzLnN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24kPW9uKFt0aGlzLnN0ZXBTZWxlY3RvclRpbWVTZWxlY3Rpb24kLHRoaXMubGlua2VkVGltZVNlbGVjdGlvbiQsdGhpcy5zdG9yZS5zZWxlY3QoQnYpXSkucGlwZShHKChbcyxsLGNdKT0+YyYmbD97c3RhcnQ6e3N0ZXA6bC5zdGFydFN0ZXB9LGVuZDpsLmVuZFN0ZXA9PT1udWxsP251bGw6e3N0ZXA6bC5lbmRTdGVwfX06cykpLHRoaXMuY29sdW1uSGVhZGVycyQ9b24oW3RoaXMuc21vb3RoaW5nRW5hYmxlZCQsdGhpcy5zdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uJF0pLnBpcGUoRygoW3MsbF0pPT57bGV0IGM9W107cmV0dXJuIGw9PT1udWxsfHxsLmVuZD09PW51bGw/KGMucHVzaChUbi5SVU4pLHMmJmMucHVzaChUbi5TTU9PVEhFRCksYy5wdXNoKFRuLlZBTFVFKSxjLnB1c2goVG4uU1RFUCksYy5wdXNoKFRuLlJFTEFUSVZFX1RJTUUpKTooYy5wdXNoKFRuLlJVTiksYy5wdXNoKFRuLk1JTl9WQUxVRSksYy5wdXNoKFRuLk1BWF9WQUxVRSksYy5wdXNoKFRuLlNUQVJUX1ZBTFVFKSxjLnB1c2goVG4uRU5EX1ZBTFVFKSxjLnB1c2goVG4uVkFMVUVfQ0hBTkdFKSxjLnB1c2goVG4uUEVSQ0VOVEFHRV9DSEFOR0UpLGMucHVzaChUbi5TVEFSVF9TVEVQKSxjLnB1c2goVG4uRU5EX1NURVApKSxjfSkpLHRoaXMuY2hhcnRNZXRhZGF0YU1hcCQ9ci5waXBlKHRpKHM9Pm9uKHMubWFwKGw9PnRoaXMuZ2V0UnVuRGlzcGxheU5hbWVBbmRBbGlhcyhsLnJ1bklkKS5waXBlKEcoYz0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGwpLGMpKSkpKSksUGEodGhpcy5zdG9yZS5zZWxlY3QoTHIpLHRoaXMuc3RvcmUuc2VsZWN0KGtfKSx0aGlzLnN0b3JlLnNlbGVjdChkUCkpLGxyKDApLEcoKFtzLGwsYyxtXSk9Pnt2YXIgZjtsZXQgcD17fSxnPW0+MDtmb3IobGV0IF8gb2Ygcyl7bGV0e3Nlcmllc0lkOk0scnVuSWQ6eSxkaXNwbGF5TmFtZTpPLGFsaWFzOmIscGFydGl0aW9uSW5kZXg6UixwYXJ0aXRpb25TaXplOkV9PV87cFtNXT17dHlwZTpYay5PUklHSU5BTCxpZDpNLGFsaWFzOmIsZGlzcGxheU5hbWU6RT4xP2Ake099OiAke1J9YDpPLHZpc2libGU6Qm9vbGVhbihsJiZsLmdldCh5KSksY29sb3I6KGY9Y1t5XSkhPT1udWxsJiZmIT09dm9pZCAwP2Y6IiNmZmYiLGF1eDohMSxvcGFjaXR5OjF9fWlmKCFnKXJldHVybiBwO2ZvcihsZXRbXyxNXW9mIE9iamVjdC5lbnRyaWVzKHApKXtsZXQgeT1hKF8pO3BbeV09T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LE0pLHtpZDp5LHR5cGU6WGsuREVSSVZFRCxhdXg6ITEsb3JpZ2luYWxTZXJpZXNJZDpffSksTS5hdXg9ITAsTS5vcGFjaXR5PS4yNX1yZXR1cm4gcH0pLFNvKHt9KSksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KEJ5LHRoaXMuY2FyZElkKSx0aGlzLnRhZyQ9ZS5waXBlKEcocz0+cy50YWcpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShHKHM9PmYyKHMsdGhpcy5ncm91cE5hbWUpKSksdGhpcy5pc1Bpbm5lZCQ9dGhpcy5zdG9yZS5zZWxlY3QoanksdGhpcy5jYXJkSWQpLG9uKFt0aGlzLm1pbk1heFN0ZXBzJCx0aGlzLnN0b3JlLnNlbGVjdChVeSksdGhpcy5zdG9yZS5zZWxlY3QoVnYpXSkuc3Vic2NyaWJlKChbe21pblN0ZXA6cyxtYXhTdGVwOmx9LGMsbV0pPT57dmFyIGYscDt0aGlzLnN0ZXBTZWxlY3RvclRpbWVTZWxlY3Rpb24kLm5leHQoYz97c3RhcnQ6e3N0ZXA6YTYoKHA9KGY9dGhpcy5zdGVwU2VsZWN0b3JUaW1lU2VsZWN0aW9uJC5nZXRWYWx1ZSgpKT09PW51bGx8fGY9PT12b2lkIDA/dm9pZCAwOmYuc3RhcnQuc3RlcCkhPT1udWxsJiZwIT09dm9pZCAwP3A6cyxzLGwpfSxlbmQ6bT97c3RlcDpsfTpudWxsfTpudWxsKX0pfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1nZXRSdW5EaXNwbGF5TmFtZUFuZEFsaWFzKHQpe3JldHVybiBvbihbdGhpcy5zdG9yZS5zZWxlY3QoV0Qse3J1bklkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdChaYiksdGhpcy5zdG9yZS5zZWxlY3QocUQse3J1bklkOnR9KV0pLnBpcGUoRygoW2UsbyxpXSk9Pnt2YXIgYSxyO2xldCBzPWUhPT1udWxsJiYoYT1vW2VdKSE9PW51bGwmJmEhPT12b2lkIDA/YTpudWxsO3JldHVybntkaXNwbGF5TmFtZTohaSYmIXM/dDoocj1pPT1udWxsP3ZvaWQgMDppLm5hbWUpIT09bnVsbCYmciE9PXZvaWQgMD9yOiIuLi4iLGFsaWFzOnN9fSkpfXN0ZXBTZXJpZXNUb0xpbmVTZXJpZXModCxlKXtsZXQgbz1lPT09WmkuU1RFUDtyZXR1cm4gdC5tYXAoaT0+e2xldCBhPWkud2FsbFRpbWUqMWUzO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSkse3g6bz9pLnN0ZXA6YSx5OmkudmFsdWUsd2FsbFRpbWU6YSxyZWxhdGl2ZVRpbWVJbk1zOjB9KX0pfW9uRGF0YVRhYmxlU29ydGluZyh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGJsdCh0KSl9b25UaW1lU2VsZWN0aW9uQ2hhbmdlZCh0KXtsZXR7bWluU3RlcDplLG1heFN0ZXA6b309dGhpcy5taW5NYXhTdGVwcyQuZ2V0VmFsdWUoKSx7c3RhcnRTdGVwOmksZW5kU3RlcDphfT1yMSh0LnRpbWVTZWxlY3Rpb24sZSxvKSxyPXtzdGFydDp7c3RlcDppfSxlbmQ6YT97c3RlcDphfTpudWxsfTt0aGlzLnN0b3JlLmRpc3BhdGNoKGZ4KHQpKSx0aGlzLnN0ZXBTZWxlY3RvclRpbWVTZWxlY3Rpb24kLm5leHQocil9b25TdGVwU2VsZWN0b3JUb2dnbGVkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocHgoe2FmZm9yZGFuY2U6dH0pKX1vbkxpbmVDaGFydFpvb20odCl7bGV0IGU9dC54LG89e21pblN0ZXA6TWF0aC5jZWlsKE1hdGgubWluKC4uLmUpKSxtYXhTdGVwOk1hdGguZmxvb3IoTWF0aC5tYXgoLi4uZSkpfTt0aGlzLmxpbmVDaGFydFpvb20kLm5leHQobyl9fTtGZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxGZCkodihzdCkpfTtGZC5cdTAyNzVjbXA9eih7dHlwZTpGZCxzZWxlY3RvcnM6W1sic2NhbGFyLWNhcmQiXV0saW5wdXRzOntEYXRhRG93bmxvYWRDb21wb25lbnQ6IkRhdGFEb3dubG9hZENvbXBvbmVudCIsY2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIn0sb3V0cHV0czp7ZnVsbFdpZHRoQ2hhbmdlZDoiZnVsbFdpZHRoQ2hhbmdlZCIsZnVsbEhlaWdodENoYW5nZWQ6ImZ1bGxIZWlnaHRDaGFuZ2VkIixwaW5TdGF0ZUNoYW5nZWQ6InBpblN0YXRlQ2hhbmdlZCJ9LGRlY2xzOjE5LHZhcnM6NTgsY29uc3RzOltbIm9ic2VydmVJbnRlcnNlY3Rpb24iLCIiLDMsImNhcmRJZCIsImNoYXJ0TWV0YWRhdGFNYXAiLCJEYXRhRG93bmxvYWRDb21wb25lbnQiLCJkYXRhU2VyaWVzIiwiaWdub3JlT3V0bGllcnMiLCJpc0NhcmRWaXNpYmxlIiwiaXNQaW5uZWQiLCJsb2FkU3RhdGUiLCJzaG93RnVsbFNpemUiLCJzbW9vdGhpbmdFbmFibGVkIiwidGFnIiwidGl0bGUiLCJ0b29sdGlwU29ydCIsInhBeGlzVHlwZSIsInhTY2FsZVR5cGUiLCJ1c2VEYXJrTW9kZSIsImxpbmtlZFRpbWVTZWxlY3Rpb24iLCJzdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uIiwiaXNQcm9zcGVjdGl2ZUZvYkZlYXR1cmVFbmFibGVkIiwiZm9yY2VTdmciLCJtaW5NYXhTdGVwIiwiZGF0YUhlYWRlcnMiLCJvbkZ1bGxTaXplVG9nZ2xlIiwib25QaW5DbGlja2VkIiwib25WaXNpYmlsaXR5Q2hhbmdlIiwib25UaW1lU2VsZWN0aW9uQ2hhbmdlZCIsIm9uU3RlcFNlbGVjdG9yVG9nZ2xlZCIsIm9uRGF0YVRhYmxlU29ydGluZyIsIm9uTGluZUNoYXJ0Wm9vbSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwic2NhbGFyLWNhcmQtY29tcG9uZW50IiwwKSxBKCJvbkZ1bGxTaXplVG9nZ2xlIixmdW5jdGlvbigpe3JldHVybiBlLm9uRnVsbFNpemVUb2dnbGUoKX0pKCJvblBpbkNsaWNrZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLnBpblN0YXRlQ2hhbmdlZC5lbWl0KGkpfSkoIm9uVmlzaWJpbGl0eUNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25WaXNpYmlsaXR5Q2hhbmdlKGkpfSkoIm9uVGltZVNlbGVjdGlvbkNoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uVGltZVNlbGVjdGlvbkNoYW5nZWQoaSl9KSgib25TdGVwU2VsZWN0b3JUb2dnbGVkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblN0ZXBTZWxlY3RvclRvZ2dsZWQoaSl9KSgib25EYXRhVGFibGVTb3J0aW5nIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkRhdGFUYWJsZVNvcnRpbmcoaSl9KSgib25MaW5lQ2hhcnRab29tIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkxpbmVDaGFydFpvb20oaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksWCg1LCJhc3luYyIpLFgoNiwiYXN5bmMiKSxYKDcsImFzeW5jIiksWCg4LCJhc3luYyIpLFgoOSwiYXN5bmMiKSxYKDEwLCJhc3luYyIpLFgoMTEsImFzeW5jIiksWCgxMiwiYXN5bmMiKSxYKDEzLCJhc3luYyIpLFgoMTQsImFzeW5jIiksWCgxNSwiYXN5bmMiKSxYKDE2LCJhc3luYyIpLFgoMTcsImFzeW5jIiksWCgxOCwiYXN5bmMiKSxoKCkpLHQmMiYmUCgiY2FyZElkIixlLmNhcmRJZCkoImNoYXJ0TWV0YWRhdGFNYXAiLFEoMSwyMixlLmNoYXJ0TWV0YWRhdGFNYXAkKSkoIkRhdGFEb3dubG9hZENvbXBvbmVudCIsZS5EYXRhRG93bmxvYWRDb21wb25lbnQpKCJkYXRhU2VyaWVzIixRKDIsMjQsZS5kYXRhU2VyaWVzJCkpKCJpZ25vcmVPdXRsaWVycyIsUSgzLDI2LGUuaWdub3JlT3V0bGllcnMkKSkoImlzQ2FyZFZpc2libGUiLGUuaXNWaXNpYmxlKSgiaXNQaW5uZWQiLFEoNCwyOCxlLmlzUGlubmVkJCkpKCJsb2FkU3RhdGUiLFEoNSwzMCxlLmxvYWRTdGF0ZSQpKSgic2hvd0Z1bGxTaXplIixlLnNob3dGdWxsU2l6ZSkoInNtb290aGluZ0VuYWJsZWQiLFEoNiwzMixlLnNtb290aGluZ0VuYWJsZWQkKSkoInRhZyIsUSg3LDM0LGUudGFnJCkpKCJ0aXRsZSIsUSg4LDM2LGUudGl0bGUkKSkoInRvb2x0aXBTb3J0IixRKDksMzgsZS50b29sdGlwU29ydCQpKSgieEF4aXNUeXBlIixRKDEwLDQwLGUueEF4aXNUeXBlJCkpKCJ4U2NhbGVUeXBlIixRKDExLDQyLGUueFNjYWxlVHlwZSQpKSgidXNlRGFya01vZGUiLFEoMTIsNDQsZS51c2VEYXJrTW9kZSQpKSgibGlua2VkVGltZVNlbGVjdGlvbiIsUSgxMyw0NixlLmxpbmtlZFRpbWVTZWxlY3Rpb24kKSkoInN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24iLFEoMTQsNDgsZS5zdGVwT3JMaW5rZWRUaW1lU2VsZWN0aW9uJCkpKCJpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQiLFEoMTUsNTAsZS5pc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQkKSkoImZvcmNlU3ZnIixRKDE2LDUyLGUuZm9yY2VTdmckKSkoIm1pbk1heFN0ZXAiLFEoMTcsNTQsZS5taW5NYXhTdGVwcyQpKSgiZGF0YUhlYWRlcnMiLFEoMTgsNTYsZS5jb2x1bW5IZWFkZXJzJCkpfSxkaXJlY3RpdmVzOltaMCxIbF0scGlwZXM6W29lXSxzdHlsZXM6W2BbX25naG9zdC0lQ09NUCVdIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH1gXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhGZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InNjYWxhci1jYXJkIix0ZW1wbGF0ZTpgCiAgICA8c2NhbGFyLWNhcmQtY29tcG9uZW50CiAgICAgIFtjYXJkSWRdPSJjYXJkSWQiCiAgICAgIFtjaGFydE1ldGFkYXRhTWFwXT0iY2hhcnRNZXRhZGF0YU1hcCQgfCBhc3luYyIKICAgICAgW0RhdGFEb3dubG9hZENvbXBvbmVudF09IkRhdGFEb3dubG9hZENvbXBvbmVudCIKICAgICAgW2RhdGFTZXJpZXNdPSJkYXRhU2VyaWVzJCB8IGFzeW5jIgogICAgICBbaWdub3JlT3V0bGllcnNdPSJpZ25vcmVPdXRsaWVycyQgfCBhc3luYyIKICAgICAgW2lzQ2FyZFZpc2libGVdPSJpc1Zpc2libGUiCiAgICAgIFtpc1Bpbm5lZF09ImlzUGlubmVkJCB8IGFzeW5jIgogICAgICBbbG9hZFN0YXRlXT0ibG9hZFN0YXRlJCB8IGFzeW5jIgogICAgICBbc2hvd0Z1bGxTaXplXT0ic2hvd0Z1bGxTaXplIgogICAgICBbc21vb3RoaW5nRW5hYmxlZF09InNtb290aGluZ0VuYWJsZWQkIHwgYXN5bmMiCiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiCiAgICAgIFt0aXRsZV09InRpdGxlJCB8IGFzeW5jIgogICAgICBbdG9vbHRpcFNvcnRdPSJ0b29sdGlwU29ydCQgfCBhc3luYyIKICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyIKICAgICAgW3hTY2FsZVR5cGVdPSJ4U2NhbGVUeXBlJCB8IGFzeW5jIgogICAgICBbdXNlRGFya01vZGVdPSJ1c2VEYXJrTW9kZSQgfCBhc3luYyIKICAgICAgW2xpbmtlZFRpbWVTZWxlY3Rpb25dPSJsaW5rZWRUaW1lU2VsZWN0aW9uJCB8IGFzeW5jIgogICAgICBbc3RlcE9yTGlua2VkVGltZVNlbGVjdGlvbl09InN0ZXBPckxpbmtlZFRpbWVTZWxlY3Rpb24kIHwgYXN5bmMiCiAgICAgIFtpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWRdPSJpc1Byb3NwZWN0aXZlRm9iRmVhdHVyZUVuYWJsZWQkIHwgYXN5bmMiCiAgICAgIFtmb3JjZVN2Z109ImZvcmNlU3ZnJCB8IGFzeW5jIgogICAgICBbbWluTWF4U3RlcF09Im1pbk1heFN0ZXBzJCB8IGFzeW5jIgogICAgICBbZGF0YUhlYWRlcnNdPSJjb2x1bW5IZWFkZXJzJCB8IGFzeW5jIgogICAgICAob25GdWxsU2l6ZVRvZ2dsZSk9Im9uRnVsbFNpemVUb2dnbGUoKSIKICAgICAgKG9uUGluQ2xpY2tlZCk9InBpblN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudCkiCiAgICAgIG9ic2VydmVJbnRlcnNlY3Rpb24KICAgICAgKG9uVmlzaWJpbGl0eUNoYW5nZSk9Im9uVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQpIgogICAgICAob25UaW1lU2VsZWN0aW9uQ2hhbmdlZCk9Im9uVGltZVNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KSIKICAgICAgKG9uU3RlcFNlbGVjdG9yVG9nZ2xlZCk9Im9uU3RlcFNlbGVjdG9yVG9nZ2xlZCgkZXZlbnQpIgogICAgICAob25EYXRhVGFibGVTb3J0aW5nKT0ib25EYXRhVGFibGVTb3J0aW5nKCRldmVudCkiCiAgICAgIChvbkxpbmVDaGFydFpvb20pPSJvbkxpbmVDaGFydFpvb20oJGV2ZW50KSIKICAgID48L3NjYWxhci1jYXJkLWNvbXBvbmVudD4KICBgLHN0eWxlczpbYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICBgXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSx7RGF0YURvd25sb2FkQ29tcG9uZW50Olt7dHlwZTpkfV0sY2FyZElkOlt7dHlwZTpkfV0sZ3JvdXBOYW1lOlt7dHlwZTpkfV0sZnVsbFdpZHRoQ2hhbmdlZDpbe3R5cGU6Qn1dLGZ1bGxIZWlnaHRDaGFuZ2VkOlt7dHlwZTpCfV0scGluU3RhdGVDaGFuZ2VkOlt7dHlwZTpCfV19KX0pKCk7ZnVuY3Rpb24gaHV0KG4sdD0zMCl7aWYoIW4ubGVuZ3RofHx0PDEpcmV0dXJuW107bGV0IGU9Yld0KG4pO3JldHVybiBlJiZlLmxlZnQ9PT1lLnJpZ2h0JiYoZS5yaWdodD1lLnJpZ2h0KjEuMSsxLGUubGVmdD1lLmxlZnQvMS4xLTEpLG4ubWFwKG89Pih7c3RlcDpvLnN0ZXAsd2FsbFRpbWU6by53YWxsVGltZSxiaW5zOmU/T1d0KG8uYmlucyxlLHQpOltdfSkpfWZ1bmN0aW9uIGJXdChuKXtsZXQgdD1udWxsLGU9bnVsbDtmb3IobGV0e2JpbnM6b31vZiBuKXtpZighby5sZW5ndGgpY29udGludWU7bGV0IGk9b1tvLmxlbmd0aC0xXSxhPW9bMF0ueCxyPWkueCtpLmR4Oyh0PT09bnVsbHx8YTx0KSYmKHQ9YSksKGU9PT1udWxsfHxyPmUpJiYoZT1yKX1yZXR1cm4gdD09PW51bGx8fGU9PT1udWxsP251bGw6e2xlZnQ6dCxyaWdodDplfX1mdW5jdGlvbiBPV3Qobix0LGUpe2xldCBvPVtdLHtsZWZ0OmkscmlnaHQ6YX09dCxyPShhLWkpL2Uscz0wLGw9MDtmb3IobGV0IGM9MDtjPGU7YysrKXtsZXQgbT1pK2MqcixmPW0rcixwPWM9PT1lLTEsZz1sO2ZvcihsPTA7czxuLmxlbmd0aDspe2xldCBfPW5bc10sTT1QV3QoXyxtLGYsIXApO2lmKGcrPU0uY3VycixsKz1NLm5leHQsXy54K18uZHg+ZilicmVhaztzKyt9by5wdXNoKHt4Om0sZHg6cix5Omd9KX1yZXR1cm4gb31mdW5jdGlvbiBQV3Qobix0LGUsbyl7bGV0IGk9bi54LGE9bi54K24uZHg7aWYoaT5lfHxhPHQpcmV0dXJue2N1cnI6MCxuZXh0OjB9O2lmKG4uZHg9PT0wKXJldHVybiBvJiZhPj1lP3tjdXJyOjAsbmV4dDpuLnl9OntjdXJyOm4ueSxuZXh0OjB9O2xldCByPU1hdGgubWluKGEsZSktTWF0aC5tYXgoaSx0KTtyZXR1cm57Y3VycjpuLnkqci9uLmR4LG5leHQ6MH19dmFyIHlXdD0xZTQseFd0PS4wMDEsdld0PU1zKCIuMn5zIiksd1d0PU1zKCIuNH5yIiksU1d0PU1zKCIuMn5lIik7ZnVuY3Rpb24gX3V0KG4pe2lmKG49PT0wKXJldHVybiIwIjtsZXQgdD1NYXRoLmFicyhuKTtyZXR1cm4gdD49eVd0P3ZXdChuKTp0PHhXdD9TV3Qobik6d1d0KG4pfXZhciBSV3Q9WyJtYWluIl0sRVd0PVsieEF4aXMiXSxrV3Q9WyJ5QXhpcyJdLE5XdD1bImNvbnRlbnQiXSxUV3Q9WyJoaXN0b2dyYW1zIl07ZnVuY3Rpb24gQVd0KG4sdCl7aWYobiYxJiYoS24oKSx1KDAsImciKSx1KDEsInRleHQiKSxUKDIpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO3FlKCJ0cmFuc2Zvcm0iLGUuZ2V0Q3NzVHJhbnNsYXRlUHgoZS50b29sdGlwRGF0YS54QXhpcy5wb3NpdGlvbiw5KSkseCgyKSxJZShlLnRvb2x0aXBEYXRhLnhBeGlzLmxhYmVsKX19ZnVuY3Rpb24gRFd0KG4sdCl7aWYobiYxJiYoS24oKSx1KDAsImciKSx1KDEsInRleHQiKSxUKDIpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO3FlKCJ0cmFuc2Zvcm0iLGUuZ2V0R3JvdXBUcmFuc2Zvcm0oZS50b29sdGlwRGF0YS5jbG9zZXN0RGF0dW0pKSx4KDEpLHJlKCJ5IixlLnRvb2x0aXBEYXRhLnlBeGlzLnBvc2l0aW9uKSx4KDEpLGxlKCIgIixlLnRvb2x0aXBEYXRhLnlBeGlzLmxhYmVsLCIgIil9fWZ1bmN0aW9uIElXdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTtLbigpLEdtKCksRW4oMCksdSgxLCJoaXN0b2dyYW0tY2FyZC1mb2ItY29udHJvbGxlciIsMTYpLEEoIm9uVGltZVNlbGVjdGlvbkNoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkub25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGkpfSkoIm9uVGltZVNlbGVjdGlvblRvZ2dsZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5vbkxpbmtlZFRpbWVUb2dnbGVkLmVtaXQoKX0pLGgoKSxrbigpfWlmKG4mMil7bGV0IGU9UygpO3goMSksUCgidGltZVNlbGVjdGlvbiIsZS50aW1lU2VsZWN0aW9uKSgic3RlcHMiLGUuZ2V0U3RlcHMoKSkoInRlbXBvcmFsU2NhbGUiLGUuc2NhbGVzLnRlbXBvcmFsU2NhbGUpfX1mdW5jdGlvbiB6V3Qobix0KXtpZihuJjEmJihLbigpLHUoMCwiZyIpLEQoMSwibGluZSIsMTcpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoKTtxZSgidHJhbnNmb3JtIixvLmdldENzc1RyYW5zbGF0ZVB4KDAsZSkpfX1mdW5jdGlvbiBIV3Qobix0KXtuJjEmJihLbigpLEQoMCwibGluZSIsMjEpKX1mdW5jdGlvbiBGV3Qobix0KXtpZihuJjEmJihLbigpLEQoMCwiY2lyY2xlIiwyMikpLG4mMil7bGV0IGU9UygpLiRpbXBsaWNpdCxvPVMoKTtxZSgidHJhbnNmb3JtIixvLmdldENzc1RyYW5zbGF0ZVB4KG8uZ2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KG8uZ2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKGUsby50b29sdGlwRGF0YS54UG9zaXRpb25JbkJpbkNvb3JkKSkueCxvLmdldFVpQ29vcmRGcm9tQmluRm9yQ29udGVudChvLmdldENsb3Nlc3RCaW5Gcm9tQmluQ29vcmRpbmF0ZShlLG8udG9vbHRpcERhdGEueFBvc2l0aW9uSW5CaW5Db29yZCkpLnkpKX19ZnVuY3Rpb24gTFd0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO0tuKCksdSgwLCJnIiwxOCksQSgibW91c2VlbnRlciIsZnVuY3Rpb24oaSl7bGV0IHI9T3QoZSkuJGltcGxpY2l0O3JldHVybiBTKCkudXBkYXRlQ29sb3JPbkhvdmVyKGksciwhMCl9KSgibW91c2VsZWF2ZSIsZnVuY3Rpb24oaSl7bGV0IHI9T3QoZSkuJGltcGxpY2l0O3JldHVybiBTKCkudXBkYXRlQ29sb3JPbkhvdmVyKGksciwhMSl9KSgiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGE9T3QoZSkuJGltcGxpY2l0O3JldHVybiBTKCkub25MaW5rZWRUaW1lUmFuZ2VDaGFuZ2VkKGEpfSksaygxLEhXdCwxLDAsImxpbmUiLDE5KSxEKDIsInBhdGgiKSxrKDMsRld0LDEsMiwiY2lyY2xlIiwyMCksaCgpfWlmKG4mMil7bGV0IGU9dC4kaW1wbGljaXQsbz1TKCk7cWUoInRyYW5zZm9ybSIsby5nZXRHcm91cFRyYW5zZm9ybShlKSkoImNvbG9yIixvLmdldEhpc3RvZ3JhbUZpbGwoZSkpLG1lKCJoaXN0b2dyYW0iLCEwKSgibm8tY29sb3IiLCFvLmlzRGF0dW1JblRpbWVTZWxlY3Rpb25SYW5nZShlKSkseCgxKSxQKCJuZ0lmIixvLm1vZGU9PT1vLkhpc3RvZ3JhbU1vZGUuT0ZGU0VUKSx4KDEpLHJlKCJkIixvLmdldEhpc3RvZ3JhbVBhdGgoZSkpLHgoMSksUCgibmdJZiIsby50b29sdGlwRGF0YSl9fWZ1bmN0aW9uIEJXdChuLHQpe2lmKG4mMSYmKEtuKCksRCgwLCJjaXJjbGUiLDIyKSksbiYyKXtsZXQgZT1TKDIpO3JlKCJjeCIsZS5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQoZS50b29sdGlwRGF0YS5jbG9zZXN0QmluKS54KSgiY3kiLGUuZ2V0VWlDb29yZEZyb21CaW5Gb3JDb250ZW50KGUudG9vbHRpcERhdGEuY2xvc2VzdEJpbikueSl9fWZ1bmN0aW9uIFZXdChuLHQpe2lmKG4mMSYmKEtuKCksdSgwLCJnIiw0KSx1KDEsImciKSxEKDIsInBhdGgiKSxrKDMsQld0LDEsMiwiY2lyY2xlIiwyMyksaCgpLHUoNCwiZyIsMjQpLHUoNSwidGV4dCIsMjUpLFQoNiksaCgpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO3goMSkscWUoInRyYW5zZm9ybSIsZS5nZXRHcm91cFRyYW5zZm9ybShlLnRvb2x0aXBEYXRhLmNsb3Nlc3REYXR1bSkpLHgoMSkscmUoImQiLGUuZ2V0SGlzdG9ncmFtUGF0aChlLnRvb2x0aXBEYXRhLmNsb3Nlc3REYXR1bSkpLHgoMSksUCgibmdJZiIsZS50b29sdGlwRGF0YS5jbG9zZXN0QmluKSx4KDEpLHFlKCJ0cmFuc2Zvcm0iLGUuZ2V0Q3NzVHJhbnNsYXRlUHgoZS50b29sdGlwRGF0YS52YWx1ZS5wb3NpdGlvbi54LGUudG9vbHRpcERhdGEudmFsdWUucG9zaXRpb24ueSkpLHgoMiksSWUoZS50b29sdGlwRGF0YS52YWx1ZS5sYWJlbCl9fXZhciBrZj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy5tb2RlPXdyLk9GRlNFVCx0aGlzLnRpbWVQcm9wZXJ0eT0kcy5TVEVQLHRoaXMudGltZVNlbGVjdGlvbj1udWxsLHRoaXMub25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZD1uZXcgJCx0aGlzLm9uTGlua2VkVGltZVRvZ2dsZWQ9bmV3ICQsdGhpcy5IaXN0b2dyYW1Nb2RlPXdyLHRoaXMuVGltZVByb3BlcnR5PSRzLHRoaXMudG9vbHRpcERhdGE9bnVsbCx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEp0LHRoaXMubGF5b3V0PXtoaXN0b2dyYW1IZWlnaHQ6MCxjb250ZW50Q2xpZW50UmVjdDp7aGVpZ2h0OjAsd2lkdGg6MH19LHRoaXMuc2NhbGVzPW51bGwsdGhpcy5mb3JtYXR0ZXJzPXtiaW5OdW1iZXI6X3V0LGNvdW50Ok1zKCIuM24iKSx3YWxsVGltZTprMigiJW0vJWQgJVgiKSxzdGVwOk1zKCIuMGYiKSxyZWxhdGl2ZTplPT5NcygiLjFyIikoZS8zNmU1KSsiaCJ9LHRoaXMuZG9tVmlzaWJsZT0hMX1uZ09uQ2hhbmdlcygpe3RoaXMudXBkYXRlQ2hhcnRJZlZpc2libGUoKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdBZnRlclZpZXdJbml0KCl7am8odGhpcy5tYWluLm5hdGl2ZUVsZW1lbnQsIm1vdXNlbW92ZSIse3Bhc3NpdmU6ITB9KS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSh0PT50aGlzLm9uTW91c2VNb3ZlKHQpKX1nZXRDc3NUcmFuc2xhdGVQeCh0LGUpe3JldHVybmB0cmFuc2xhdGUoJHt0fXB4LCAke2V9cHgpYH1nZXRDbG9zZXN0QmluRnJvbUJpbkNvb3JkaW5hdGUodCxlKXtpZighdC5iaW5zLmxlbmd0aClyZXR1cm57eDowLGR4OjAseTowfTtsZXQgbz10LmJpbnNbMF0saT10LmJpbnMuc2xpY2UoLTEpWzBdO3JldHVybiBlPG8ueD9vOmU+PWkueCtpLmR4P2k6dC5iaW5zLmZpbmQocj0+ci54PD1lJiZlPHIueCtyLmR4KX1nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQodCl7cmV0dXJuIHRoaXMuc2NhbGVzP3t4OnRoaXMuc2NhbGVzLmJpblNjYWxlKEQ0KHQpKSx5OnRoaXMuc2NhbGVzLmNvdW50U2NhbGUodC55KX06e3g6MCx5OjB9fWdldEhpc3RvZ3JhbVBhdGgodCl7aWYoIXRoaXMuc2NhbGVzfHwhdC5iaW5zLmxlbmd0aClyZXR1cm4iIjtsZXQgZT10aGlzLnNjYWxlcy5iaW5TY2FsZSxvPXRoaXMuc2NhbGVzLmNvdW50U2NhbGUsaT10LmJpbnNbMF0sYT10LmJpbnMuc2xpY2UoLTEpWzBdLHI9W2BNJHtlKEQ0KGkpKX0sJHtvKDApfWBdO2ZvcihsZXQgcyBvZiB0LmJpbnMpci5wdXNoKGBMJHtlKEQ0KHMpKX0sJHtvKHMueSl9YCk7cmV0dXJuIHIucHVzaChgTCR7ZShENChhKSl9LCR7bygwKX1gKSxyLmpvaW4oIiIpfXRyYWNrQnlXYWxsVGltZSh0KXtyZXR1cm4gdC53YWxsVGltZX1nZXRHcm91cFRyYW5zZm9ybSh0KXtyZXR1cm4hdGhpcy5zY2FsZXN8fHRoaXMubW9kZT09PXdyLk9WRVJMQVk/IiI6dGhpcy5nZXRDc3NUcmFuc2xhdGVQeCgwLHRoaXMuc2NhbGVzLnRlbXBvcmFsU2NhbGUodGhpcy5nZXRUaW1lVmFsdWUodCkpKX1nZXRTdGVwcygpe3JldHVybiB0aGlzLmRhdGEubWFwKHQ9PnQuc3RlcCl9aXNUaW1lU2VsZWN0aW9uRW5hYmxlZCh0KXtyZXR1cm4gQm9vbGVhbih0aGlzLm1vZGU9PT13ci5PRkZTRVQmJnRoaXMudGltZVByb3BlcnR5PT09JHMuU1RFUCYmdGhpcy5zY2FsZXMmJnQpfWlzRGF0dW1JblRpbWVTZWxlY3Rpb25SYW5nZSh0KXtyZXR1cm4gdGhpcy5pc1RpbWVTZWxlY3Rpb25FbmFibGVkKHRoaXMudGltZVNlbGVjdGlvbik/dGhpcy50aW1lU2VsZWN0aW9uLmVuZD09PW51bGw/dGhpcy50aW1lU2VsZWN0aW9uLnN0YXJ0LnN0ZXA9PT10LnN0ZXA6dGhpcy50aW1lU2VsZWN0aW9uLnN0YXJ0LnN0ZXA8PXQuc3RlcCYmdGhpcy50aW1lU2VsZWN0aW9uLmVuZC5zdGVwPj10LnN0ZXA6ITB9Z2V0SGlzdG9ncmFtRmlsbCh0KXtyZXR1cm4gdGhpcy5zY2FsZXM/dGhpcy5zY2FsZXMuZDNDb2xvclNjYWxlKHRoaXMuZ2V0VGltZVZhbHVlKHQpKToiIn11cGRhdGVDb2xvck9uSG92ZXIodCxlLG8peyF0aGlzLmlzVGltZVNlbGVjdGlvbkVuYWJsZWQodGhpcy50aW1lU2VsZWN0aW9uKXx8dGhpcy5pc0RhdHVtSW5UaW1lU2VsZWN0aW9uUmFuZ2UoZSl8fChvP3QudGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoIm5vLWNvbG9yIik6dC50YXJnZXQuY2xhc3NMaXN0LmFkZCgibm8tY29sb3IiKSl9Z2V0R3JpZFRpY2tZTG9jcygpe2lmKCF0aGlzLnNjYWxlc3x8dGhpcy5tb2RlPT09d3IuT0ZGU0VUKXJldHVybltdO2xldCB0PXRoaXMuc2NhbGVzLmNvdW50U2NhbGU7cmV0dXJuIHQudGlja3MoKS5tYXAoZT0+dChlKSl9b25SZXNpemUoKXt0aGlzLnVwZGF0ZUNsaWVudFJlY3RzKCksdGhpcy51cGRhdGVDaGFydElmVmlzaWJsZSgpfW9uVmlzaWJpbGl0eUNoYW5nZSh7dmlzaWJsZTp0fSl7dGhpcy5kb21WaXNpYmxlPXQsdCYmKHRoaXMudXBkYXRlQ2xpZW50UmVjdHMoKSx0aGlzLnVwZGF0ZUNoYXJ0SWZWaXNpYmxlKCkpfW9uTGlua2VkVGltZVJhbmdlQ2hhbmdlZCh0KXt2YXIgZTtpZighdGhpcy5pc1RpbWVTZWxlY3Rpb25FbmFibGVkKHRoaXMudGltZVNlbGVjdGlvbikpcmV0dXJuO2xldCBvPXRoaXMudGltZVNlbGVjdGlvbi5zdGFydC5zdGVwLGk9KGU9dGhpcy50aW1lU2VsZWN0aW9uLmVuZCk9PT1udWxsfHxlPT09dm9pZCAwP3ZvaWQgMDplLnN0ZXAsYT10LnN0ZXA8bz90LnN0ZXA6byxyPWk7cj09PXZvaWQgMD9yPXQuc3RlcD5vP3Quc3RlcDpvOnI9dC5zdGVwPnI/dC5zdGVwOnIsKGEhPT1vfHxyIT09aSkmJmEhPT1yJiZ0aGlzLm9uTGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQuZW1pdCh7dGltZVNlbGVjdGlvbjp7c3RhcnQ6e3N0ZXA6YX0sZW5kOntzdGVwOnJ9fSxhZmZvcmRhbmNlOk9tLkhJU1RPR1JBTV9DTElDS19UT19SQU5HRX0pfWdldFRpbWVWYWx1ZSh0KXtzd2l0Y2godGhpcy50aW1lUHJvcGVydHkpe2Nhc2UgJHMuV0FMTF9USU1FOnJldHVybiB0LndhbGxUaW1lO2Nhc2UgJHMuU1RFUDpyZXR1cm4gdC5zdGVwO2Nhc2UgJHMuUkVMQVRJVkU6cmV0dXJuIHQud2FsbFRpbWUtdGhpcy5kYXRhWzBdLndhbGxUaW1lfX11cGRhdGVDbGllbnRSZWN0cygpe3RoaXMuY29udGVudCYmKHRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0PXRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMubGF5b3V0Lmhpc3RvZ3JhbUhlaWdodD10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdC5oZWlnaHQvMi41KX11cGRhdGVDaGFydElmVmlzaWJsZSgpeyF0aGlzLmRvbVZpc2libGV8fCh0aGlzLnNjYWxlcz10aGlzLmNvbXB1dGVTY2FsZXModGhpcy5kYXRhKSx0aGlzLnJlbmRlclhBeGlzKCksdGhpcy5yZW5kZXJZQXhpcygpLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpKX1jb21wdXRlU2NhbGVzKHQpe2xldHt3aWR0aDplLGhlaWdodDpvfT10aGlzLmxheW91dC5jb250ZW50Q2xpZW50UmVjdCx7bWluOmksbWF4OmF9PUN1dCh0LHk9PmpXdCh5LmJpbnMsTz0+Ty54KSx5PT5tWih5LmJpbnMsKHt4Ok8sZHg6Yn0pPT5PK2IpKSxyPW1aKHQseT0+bVooeS5iaW5zLCh7eTpPfSk9Pk8pKSxzPXNsKCkuZG9tYWluKFtpLGFdKS5uaWNlKCksbD10aGlzLm1vZGUhPT13ci5PVkVSTEFZJiZ0aGlzLnRpbWVQcm9wZXJ0eT09JHMuV0FMTF9USU1FP3kxKCk6c2woKSxjPXQubWFwKHk9PnRoaXMuZ2V0VGltZVZhbHVlKHkpKSx7bWluOm0sbWF4OmZ9PUN1dChjLHk9PnkpLHA9W20sZl07bC5kb21haW4ocCk7bGV0IGc9c2woKTtnLmRvbWFpbihbMCxyXSk7bGV0IF89bTEodGhpcy5jb2xvcnx8IiMwMDAiKSxNPXNsKCk7aWYoTS5kb21haW4ocCkscy5yYW5nZShbMCxlXSksTS5yYW5nZShbXy5icmlnaHRlcigpLF8uZGFya2VyKCldKSxNLmludGVycG9sYXRlKFVHKSx0aGlzLm1vZGU9PT13ci5PVkVSTEFZKWwucmFuZ2UoW28sb10pLGcucmFuZ2UoW28sMF0pO2Vsc2V7bGV0IHk9dGhpcy5tb2RlPT09d3IuT0ZGU0VUP28tdGhpcy5sYXlvdXQuaGlzdG9ncmFtSGVpZ2h0OjA7bC5yYW5nZShbby15LG9dKSxnLnJhbmdlKFswLC10aGlzLmxheW91dC5oaXN0b2dyYW1IZWlnaHRdKX1yZXR1cm57YmluU2NhbGU6cyxkM0NvbG9yU2NhbGU6TSxjb3VudFNjYWxlOmcsdGVtcG9yYWxTY2FsZTpsfX1yZW5kZXJYQXhpcygpe2lmKCF0aGlzLnNjYWxlcylyZXR1cm47bGV0e3dpZHRoOnR9PXRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0LGU9ZTUodGhpcy5zY2FsZXMuYmluU2NhbGUpLnRpY2tzKE1hdGgubWF4KDIsdC8yMCkpO2UudGlja0Zvcm1hdCh0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKSxlKENzKHRoaXMueEF4aXMubmF0aXZlRWxlbWVudCkpfWdldFlBeGlzRm9ybWF0dGVyKCl7aWYodGhpcy5tb2RlPT09d3IuT1ZFUkxBWSlyZXR1cm4gdGhpcy5mb3JtYXR0ZXJzLmNvdW50O3N3aXRjaCh0aGlzLnRpbWVQcm9wZXJ0eSl7Y2FzZSAkcy5XQUxMX1RJTUU6cmV0dXJuIHRoaXMuZm9ybWF0dGVycy53YWxsVGltZTtjYXNlICRzLlNURVA6cmV0dXJuIHRoaXMuZm9ybWF0dGVycy5zdGVwO2Nhc2UgJHMuUkVMQVRJVkU6cmV0dXJuIHRoaXMuZm9ybWF0dGVycy5yZWxhdGl2ZTtkZWZhdWx0OmxldCB0PXRoaXMudGltZVByb3BlcnR5O3Rocm93IFJhbmdlRXJyb3IoYFkgYXhpcyBmb3JtYXR0ZXIgZm9yICR7dH0gbXVzdCBiZSBpbXBsZW1lbnRlZGApfX1nZXRNYXhUaWNrcyh0KXtsZXR7aGVpZ2h0OmV9PXRoaXMubGF5b3V0LmNvbnRlbnRDbGllbnRSZWN0LG89ZS8xNTtpZih0aGlzLnRpbWVQcm9wZXJ0eT09PSRzLlNURVApe2xldFtpLGFdPXQuZG9tYWluKCkscj1NYXRoLm1heChhLWkrMSwxKTtyZXR1cm4gTWF0aC5taW4ocixvKX1yZXR1cm4gb31yZW5kZXJZQXhpcygpe2lmKCF0aGlzLnNjYWxlcylyZXR1cm47bGV0IHQ9dGhpcy5tb2RlPT09d3IuT1ZFUkxBWT90aGlzLnNjYWxlcy5jb3VudFNjYWxlOnRoaXMuc2NhbGVzLnRlbXBvcmFsU2NhbGUsZT10aGlzLmdldE1heFRpY2tzKHQpLG89dDUodCkudGlja3MoTWF0aC5tYXgoMixlKSk7by50aWNrRm9ybWF0KHRoaXMuZ2V0WUF4aXNGb3JtYXR0ZXIoKSksbyhDcyh0aGlzLnlBeGlzLm5hdGl2ZUVsZW1lbnQpKX1maW5kQ2xvc2VzdERhdHVtSW5kZXgodCl7bGV0IGU9dC50YXJnZXQsbz1lO2Zvcig7ZSYmZSE9PXRoaXMuaGlzdG9ncmFtcy5uYXRpdmVFbGVtZW50OylvPWUsZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGU/QXJyYXkuZnJvbShlLmNoaWxkcmVuKS5pbmRleE9mKG8pOi0xfW9uTW91c2VNb3ZlRm9yVGVzdE9ubHkodCl7cmV0dXJuIHRoaXMub25Nb3VzZU1vdmUodCl9b25Nb3VzZU1vdmUodCl7aWYoIXRoaXMuc2NhbGVzKXJldHVybjtsZXQgZT10Lm9mZnNldFgsbz10Lm9mZnNldFksaT10aGlzLmZpbmRDbG9zZXN0RGF0dW1JbmRleCh0KTtpZihpPDApcmV0dXJuO2xldCBhPXRoaXMuc2NhbGVzLmJpblNjYWxlLmludmVydChlKSxyPXRoaXMuZGF0YVtpXSxzPXRoaXMuZ2V0Q2xvc2VzdEJpbkZyb21CaW5Db29yZGluYXRlKHIsYSk7dGhpcy50b29sdGlwRGF0YT17dmFsdWU6e3Bvc2l0aW9uOnt4OmUseTpvfSxsYWJlbDp0aGlzLm1vZGU9PT13ci5PRkZTRVQ/dGhpcy5mb3JtYXR0ZXJzLmNvdW50KHMueSk6YFN0ZXA6ICR7dGhpcy5mb3JtYXR0ZXJzLnN0ZXAoci5zdGVwKX1gfSx4QXhpczp7cG9zaXRpb246dGhpcy5nZXRVaUNvb3JkRnJvbUJpbkZvckNvbnRlbnQocykueCxsYWJlbDp0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKEQ0KHMpKX0seUF4aXM6e3Bvc2l0aW9uOnRoaXMuc2NhbGVzLmNvdW50U2NhbGUodGhpcy5tb2RlPT09d3IuT0ZGU0VUPzA6cy55KSxsYWJlbDp0aGlzLm1vZGU9PT13ci5PRkZTRVQ/dGhpcy5nZXRZQXhpc0Zvcm1hdHRlcigpKHRoaXMuZ2V0VGltZVZhbHVlKHIpKTp0aGlzLmZvcm1hdHRlcnMuYmluTnVtYmVyKHMueSl9LHhQb3NpdGlvbkluQmluQ29vcmQ6YSxjbG9zZXN0RGF0dW06cixjbG9zZXN0QmluOnN9LHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpfX07a2YuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8a2YpKHYoVHQpKX07a2YuXHUwMjc1Y21wPXooe3R5cGU6a2Ysc2VsZWN0b3JzOltbInRiLWhpc3RvZ3JhbSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJihwZShSV3QsNSkscGUoRVd0LDUpLHBlKGtXdCw1KSxwZShOV3QsNSkscGUoVFd0LDUpKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLm1haW49by5maXJzdCksSHQobz1GdCgpKSYmKGUueEF4aXM9by5maXJzdCksSHQobz1GdCgpKSYmKGUueUF4aXM9by5maXJzdCksSHQobz1GdCgpKSYmKGUuY29udGVudD1vLmZpcnN0KSxIdChvPUZ0KCkpJiYoZS5oaXN0b2dyYW1zPW8uZmlyc3QpfX0saW5wdXRzOnttb2RlOiJtb2RlIix0aW1lUHJvcGVydHk6InRpbWVQcm9wZXJ0eSIsY29sb3I6ImNvbG9yIixkYXRhOiJkYXRhIix0aW1lU2VsZWN0aW9uOiJ0aW1lU2VsZWN0aW9uIn0sb3V0cHV0czp7b25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZDoib25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZCIsb25MaW5rZWRUaW1lVG9nZ2xlZDoib25MaW5rZWRUaW1lVG9nZ2xlZCJ9LGZlYXR1cmVzOltXZV0sZGVjbHM6MjIsdmFyczoxNSxjb25zdHM6W1siZGV0ZWN0UmVzaXplIiwiIiwib2JzZXJ2ZUludGVyc2VjdGlvbiIsIiIsMywib25SZXNpemUiLCJvblZpc2liaWxpdHlDaGFuZ2UiXSxbIm1haW4iLCIiXSxbMSwiYXhpcyIsIngtYXhpcyJdLFsieEF4aXMiLCIiXSxbMSwidG9vbHRpcCJdLFszLCJ0cmFuc2Zvcm0iLDQsIm5nSWYiXSxbMSwiYXhpcyIsInktYXhpcyJdLFsieUF4aXMiLCIiXSxbNCwibmdJZiJdLFsxLCJjb250ZW50Il0sWyJjb250ZW50IiwiIl0sWzEsImdyaWQiXSxbMywidHJhbnNmb3JtIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImhpc3RvZ3JhbXMiLCIiXSxbMywidHJhbnNmb3JtIiwiaGlzdG9ncmFtIiwibm8tY29sb3IiLCJjb2xvciIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiY2xhc3MiLCJ0b29sdGlwIiw0LCJuZ0lmIl0sWzEsImhpc3RvZ3JhbS1jYXJkLWZvYiIsMywidGltZVNlbGVjdGlvbiIsInN0ZXBzIiwidGVtcG9yYWxTY2FsZSIsIm9uVGltZVNlbGVjdGlvbkNoYW5nZWQiLCJvblRpbWVTZWxlY3Rpb25Ub2dnbGVkIl0sWyJ4MiIsIjEwMCUiLDEsInRpY2siXSxbMywibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJjbGljayJdLFsiY2xhc3MiLCJiYXNlbGluZSIsIngyIiwiMTAwJSIsNCwibmdJZiJdLFsiciIsIjIiLDMsInRyYW5zZm9ybSIsNCwibmdJZiJdLFsieDIiLCIxMDAlIiwxLCJiYXNlbGluZSJdLFsiciIsIjIiXSxbInIiLCIyIiw0LCJuZ0lmIl0sWzEsInZhbHVlLWxhYmVsIl0sWyJ4IiwiMyIsInkiLCItMyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwLDEpLEEoIm9uUmVzaXplIixmdW5jdGlvbigpe3JldHVybiBlLm9uUmVzaXplKCl9KSgib25WaXNpYmlsaXR5Q2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblZpc2liaWxpdHlDaGFuZ2UoaSl9KSxLbigpLHUoMiwic3ZnIiwyKSxEKDMsImciLG51bGwsMyksdSg1LCJnIiw0KSxrKDYsQVd0LDMsMywiZyIsNSksaCgpLGgoKSxHbSgpLHUoNywiZGl2Iiw2KSxLbigpLHUoOCwic3ZnIiksRCg5LCJnIixudWxsLDcpLHUoMTEsImciLDQpLGsoMTIsRFd0LDMsNCwiZyIsNSksaCgpLGgoKSxrKDEzLElXdCwyLDMsIm5nLWNvbnRhaW5lciIsOCksaCgpLHUoMTQsInN2ZyIsOSwxMCksdSgxNiwiZyIsMTEpLGsoMTcseld0LDIsMiwiZyIsMTIpLGgoKSx1KDE4LCJnIixudWxsLDEzKSxrKDIwLExXdCw0LDExLCJnIiwxNCksaCgpLGsoMjEsVld0LDcsNywiZyIsMTUpLGgoKSxoKCkpLHQmMiYmKHFmKCJtYWluICIrZS5tb2RlKyIgIitlLnRpbWVQcm9wZXJ0eSkseCg2KSxQKCJuZ0lmIixlLnRvb2x0aXBEYXRhKSx4KDUpLHFlKCJ0cmFuc2Zvcm0iLGUuZ2V0Q3NzVHJhbnNsYXRlUHgoOSwwKSkseCgxKSxQKCJuZ0lmIixlLnRvb2x0aXBEYXRhKSx4KDEpLFAoIm5nSWYiLGUuaXNUaW1lU2VsZWN0aW9uRW5hYmxlZChlLnRpbWVTZWxlY3Rpb24pKSx4KDQpLFAoIm5nRm9yT2YiLGUuZ2V0R3JpZFRpY2tZTG9jcygpKSx4KDEpLG1lKCJoaXN0b2dyYW1zIiwhMCkoImxpbmtlZC10aW1lLXNpbmdsZS1zdGVwIixlLnRpbWVTZWxlY3Rpb24mJiFlLnRpbWVTZWxlY3Rpb24uZW5kKSx4KDIpLFAoIm5nRm9yT2YiLGUuZGF0YSkoIm5nRm9yVHJhY2tCeSIsZS50cmFja0J5V2FsbFRpbWUpLHgoMSksUCgibmdJZiIsZS50b29sdGlwRGF0YSkpfSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfVtfbmdob3N0LSVDT01QJV17Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6MTBweH0ubWFpbltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtYXJlYXM6ImNvbnRlbnQgeS1heGlzIiAieC1heGlzIC4iO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgNTBweDtncmlkLXRlbXBsYXRlLXJvd3M6MWZyIDMwcHh9Lm1haW4ud2FsbF90aW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDc1cHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdLCAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMwMDB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9LmxpbmtlZC10aW1lLWZvYltfbmdjb250ZW50LSVDT01QJV0gICB0ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTBweH0ubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVdLCAubGlua2VkLXRpbWUtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVdLCAudG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde2ZpbGw6Y3VycmVudENvbG9yfS5saW5rZWQtdGltZS1mb2JbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgLnZhbHVlLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtkb21pbmFudC1iYXNlbGluZTppZGVvZ3JhcGhpYzt0ZXh0LWFuY2hvcjpzdGFydH0uYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAge2NvbG9yOiM2MTYxNjE7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICB7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmF4aXNbX25nY29udGVudC0lQ09NUCVdICAgICAuZG9tYWluLCAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIHRleHR7ZGlzcGxheTpub25lfS5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2s6bnRoLWNoaWxkKDJuKzEpIHRleHR7ZGlzcGxheTppbml0aWFsfXN2Z1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czp2aXNpYmxlUGFpbnRlZH1zdmdbX25nY29udGVudC0lQ09NUCVdICAgbGluZVtfbmdjb250ZW50LSVDT01QJV0sIHN2Z1tfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCBzdmdbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmV9c3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGdbX25nY29udGVudC0lQ09NUCVde3dpbGwtY2hhbmdlOnRyYW5zZm9ybX0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6eC1heGlzfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2RvbWluYW50LWJhc2VsaW5lOmhhbmdpbmc7dGV4dC1hbmNob3I6bWlkZGxlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp5LWF4aXM7b3ZlcmZsb3c6Y2xpcCB2aXNpYmxlfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2RvbWluYW50LWJhc2VsaW5lOm1pZGRsZTt0ZXh0LWFuY2hvcjpzdGFydH0uaGlzdG9ncmFtLWNhcmQtZm9iW19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OjlweDtwb3NpdGlvbjphYnNvbHV0ZX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudGlja1tfbmdjb250ZW50LSVDT01QJV0sIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgbGluZXtzdHJva2U6I2RkZH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAudGlja1tfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6IzU1NX1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAgIC50aWNrIGxpbmUsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgbGluZXtzdHJva2U6IzU1NX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOmNvbnRlbnQ7b3ZlcmZsb3c6dmlzaWJsZTt6LWluZGV4OjF9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWRhc2hhcnJheToyfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde2ZpbGw6Y3VycmVudENvbG9yO3N0cm9rZS1vcGFjaXR5Oi42O3N0cm9rZS13aWR0aDoxcHh9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWx0ZXI6ZHJvcC1zaGFkb3coMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuNikpO3N0cm9rZTojZmZmO3dpbGwtY2hhbmdlOnRyYW5zZm9ybX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuYmFzZWxpbmVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS1vcGFjaXR5Oi4xO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlOmN1cnJlbnRDb2xvcjt3aWR0aDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZS1vcGFjaXR5OjE7c3Ryb2tlOmN1cnJlbnRDb2xvcjtmaWxsOnJnYmEoMCwwLDAsMCl9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDIyMSwyMjEsMjIxLC40KSAhaW1wb3J0YW50fS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2Utb3BhY2l0eTouMn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubm8tY29sb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoNTEsNTEsNTEsLjQpICFpbXBvcnRhbnR9Lm9mZnNldFtfbmdjb250ZW50LSVDT01QJV0gICAuY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAuaGlzdG9ncmFtc1tfbmdjb250ZW50LSVDT01QJV0gICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmZn1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojNTU1fS5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXMubGlua2VkLXRpbWUtc2luZ2xlLXN0ZXBbX25nY29udGVudC0lQ09NUCVdICAgW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm5vLWNvbG9yKSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojMDAwfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5vZmZzZXRbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLmhpc3RvZ3JhbXMubGlua2VkLXRpbWUtc2luZ2xlLXN0ZXBbX25nY29udGVudC0lQ09NUCVdICAgW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm5vLWNvbG9yKSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAub2Zmc2V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oaXN0b2dyYW1zLmxpbmtlZC10aW1lLXNpbmdsZS1zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtfbmdjb250ZW50LSVDT01QJV06bm90KC5uby1jb2xvcikgICBwYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmZn0ub3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0gICAueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgLnRpY2sgbGluZXtkaXNwbGF5Om5vbmV9Lm92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV17ZmlsbC1vcGFjaXR5OjA7c3Ryb2tlOmN1cnJlbnRDb2xvcn0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0sIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGtmLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoidGItaGlzdG9ncmFtIix0ZW1wbGF0ZVVybDoiaGlzdG9ncmFtX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyJoaXN0b2dyYW1fY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOlR0fV19LHttYWluOlt7dHlwZTpJdCxhcmdzOlsibWFpbiJdfV0seEF4aXM6W3t0eXBlOkl0LGFyZ3M6WyJ4QXhpcyJdfV0seUF4aXM6W3t0eXBlOkl0LGFyZ3M6WyJ5QXhpcyJdfV0sY29udGVudDpbe3R5cGU6SXQsYXJnczpbImNvbnRlbnQiXX1dLGhpc3RvZ3JhbXM6W3t0eXBlOkl0LGFyZ3M6WyJoaXN0b2dyYW1zIl19XSxtb2RlOlt7dHlwZTpkfV0sdGltZVByb3BlcnR5Olt7dHlwZTpkfV0sY29sb3I6W3t0eXBlOmR9XSxkYXRhOlt7dHlwZTpkfV0sdGltZVNlbGVjdGlvbjpbe3R5cGU6ZH1dLG9uTGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQ6W3t0eXBlOkJ9XSxvbkxpbmtlZFRpbWVUb2dnbGVkOlt7dHlwZTpCfV19KX0pKCk7ZnVuY3Rpb24gald0KG4sdCl7cmV0dXJuIG4ucmVkdWNlKChlLG8pPT5NYXRoLm1pbihlLHQobykpLDEvMCl9ZnVuY3Rpb24gbVoobix0KXtyZXR1cm4gbi5yZWR1Y2UoKGUsbyk9Pk1hdGgubWF4KGUsdChvKSksLTEvMCl9ZnVuY3Rpb24gQ3V0KG4sdCxlKXtlfHwoZT10KTtsZXQgbz0xLzAsaT0tMS8wO2ZvcihsZXQgYSBvZiBuKW89TWF0aC5taW4obyx0KGEpKSxpPU1hdGgubWF4KGksZShhKSk7cmV0dXJue21pbjpvLG1heDppfX1mdW5jdGlvbiBENChuKXtyZXR1cm4gbi54K24uZHgqLjV9ZnVuY3Rpb24gWVd0KG4sdCl7biYxJiYodSgwLCJzcGFuIiwxNCksRCgxLCJtYXQtc3Bpbm5lciIsMTUpLGgoKSl9ZnVuY3Rpb24gR1d0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwidGItaGlzdG9ncmFtIiwxNiksQSgib25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5vbkxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkLmVtaXQoaSl9KSgib25MaW5rZWRUaW1lVG9nZ2xlZCIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLm9uTGlua2VkVGltZVRvZ2dsZWQuZW1pdCgpfSksaCgpfWlmKG4mMil7bGV0IGU9UygpO1AoImRhdGEiLGUuZGF0YSkoIm1vZGUiLGUubW9kZSkoInRpbWVQcm9wZXJ0eSIsZS50aW1lUHJvcGVydHkoZS54QXhpc1R5cGUpKSgiY29sb3IiLGUucnVuQ29sb3JTY2FsZShlLnJ1bklkKSkoInRpbWVTZWxlY3Rpb24iLGUuY29udmVydFRvVGltZVNlbGVjdGlvbihlLmxpbmtlZFRpbWVTZWxlY3Rpb24pKX19ZnVuY3Rpb24gV1d0KG4sdCl7biYxJiYodSgwLCJkaXYiLDE4KSxUKDEsIiBEYXRhIGZhaWxlZCB0byBsb2FkLiAiKSxoKCkpfWZ1bmN0aW9uIHFXdChuLHQpe2lmKG4mMSYmaygwLFdXdCwyLDAsImRpdiIsMTcpLG4mMil7bGV0IGU9UygpO1AoIm5nSWYiLGUubG9hZFN0YXRlPT09ZS5EYXRhTG9hZFN0YXRlLkZBSUxFRCl9fXZhciBaV3Q9ZnVuY3Rpb24obil7cmV0dXJue2JhY2tncm91bmRDb2xvcjpufX0sWDA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLkRhdGFMb2FkU3RhdGU9S3QsdGhpcy5vbkZ1bGxTaXplVG9nZ2xlPW5ldyAkLHRoaXMub25QaW5DbGlja2VkPW5ldyAkLHRoaXMub25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZD1uZXcgJCx0aGlzLm9uTGlua2VkVGltZVRvZ2dsZWQ9bmV3ICR9dGltZVByb3BlcnR5KHQpe3N3aXRjaCh0KXtjYXNlIFppLlNURVA6cmV0dXJuICRzLlNURVA7Y2FzZSBaaS5XQUxMX1RJTUU6cmV0dXJuICRzLldBTExfVElNRTtjYXNlIFppLlJFTEFUSVZFOnJldHVybiAkcy5SRUxBVElWRTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCB4QXhpc1R5cGUgZm9yIGhpc3RvZ3JhbSB0aW1lIHByb3BlcnR5LiIpfX1jb252ZXJ0VG9UaW1lU2VsZWN0aW9uKHQpe3JldHVybiB0PT09bnVsbD9udWxsOntzdGFydDp7c3RlcDp0LnN0YXJ0U3RlcH0sZW5kOnQuZW5kU3RlcD97c3RlcDp0LmVuZFN0ZXB9Om51bGx9fX07WDAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WDApfTtYMC5cdTAyNzVjbXA9eih7dHlwZTpYMCxzZWxlY3RvcnM6W1siaGlzdG9ncmFtLWNhcmQtY29tcG9uZW50Il1dLGlucHV0czp7bG9hZFN0YXRlOiJsb2FkU3RhdGUiLHRpdGxlOiJ0aXRsZSIsdGFnOiJ0YWciLHJ1bklkOiJydW5JZCIsZGF0YToiZGF0YSIsbW9kZToibW9kZSIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUiLHNob3dGdWxsU2l6ZToic2hvd0Z1bGxTaXplIixpc1Bpbm5lZDoiaXNQaW5uZWQiLGxpbmtlZFRpbWVTZWxlY3Rpb246ImxpbmtlZFRpbWVTZWxlY3Rpb24iLGlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZDoiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIn0sb3V0cHV0czp7b25GdWxsU2l6ZVRvZ2dsZToib25GdWxsU2l6ZVRvZ2dsZSIsb25QaW5DbGlja2VkOiJvblBpbkNsaWNrZWQiLG9uTGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQ6Im9uTGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQiLG9uTGlua2VkVGltZVRvZ2dsZWQ6Im9uTGlua2VkVGltZVRvZ2dsZWQifSxkZWNsczoxNix2YXJzOjE0LGNvbnN0czpmdW5jdGlvbigpe2xldCBuO3R5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP249Z29vZy5nZXRNc2coIlBpbiBjYXJkIik6bj0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHBpbiBhIGNhcmQu4pCfZTY2NWRjNzEyYmQ1ZjE4ZDRkZmEzYTI5ZTEyNWQ1NjVjYzUxZTJmNuKQnzcyODQ2MDY0MjYyMzQzNzUzNDQ6UGluIGNhcmRgO2xldCB0O3JldHVybiB0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT90PWdvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKTp0PSRsb2NhbGl6ZWA6QSBidXR0b24gb24gYSBoaXN0b2dyYW0gY2FyZCB0aGF0IHRvZ2dsZXMgZnVsbCBzaXplIG1vZGUu4pCfZmM4Zjc2N2QwYjlmOTMwMTg3YTFiYWUzNDQ3N2FkMjg3MzZlY2UzM+KQnzkxNTcyMTU2MzYzODkyNjU5NzpUb2dnbGUgZnVsbCBzaXplIG1vZGVgLFtbMSwiaGVhZGluZyJdLFsxLCJ0YWciXSxbMywidGl0bGUiLCJ2YWx1ZSJdLFszLCJpc0NsaXBwZWQiLCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiXSxbMSwicnVuIl0sWzEsImRvdCIsMywibmdTdHlsZSJdLFsxLCJydW4tdGV4dCIsMywicnVuSWQiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sMSwicGluLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwidGl0bGUiLCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiLDMsImNsaWNrIl0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbMywiZGF0YSIsIm1vZGUiLCJ0aW1lUHJvcGVydHkiLCJjb2xvciIsInRpbWVTZWxlY3Rpb24iLCJvbkxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkIiwib25MaW5rZWRUaW1lVG9nZ2xlZCIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0RhdGEiLCIiXSxbMSwic3Bpbm5lciJdLFsiZGlhbWV0ZXIiLCIxOCJdLFszLCJkYXRhIiwibW9kZSIsInRpbWVQcm9wZXJ0eSIsImNvbG9yIiwidGltZVNlbGVjdGlvbiIsIm9uTGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQiLCJvbkxpbmtlZFRpbWVUb2dnbGVkIl0sWyJjbGFzcyIsImVtcHR5LW1lc3NhZ2UiLDQsIm5nSWYiXSxbMSwiZW1wdHktbWVzc2FnZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImRpdiIsMCksdSgxLCJkaXYiLDEpLEQoMiwidGItdHJ1bmNhdGVkLXBhdGgiLDIpLEQoMywidmlzLWxpbmtlZC10aW1lLXNlbGVjdGlvbi13YXJuaW5nIiwzKSxoKCksdSg0LCJkaXYiLDQpLEQoNSwic3BhbiIsNSksRCg2LCJjYXJkLXJ1bi1uYW1lIiw2KSxoKCksdSg3LCJzcGFuIiw3KSx1KDgsImJ1dHRvbiIsOCksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25QaW5DbGlja2VkLmVtaXQoIWUuaXNQaW5uZWQpfSksRCg5LCJtYXQtaWNvbiIsOSksaCgpLHUoMTAsImJ1dHRvbiIsMTApLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLm9uRnVsbFNpemVUb2dnbGUuZW1pdCgpfSksRCgxMSwibWF0LWljb24iLDkpLGgoKSxoKCksaygxMixZV3QsMiwwLCJzcGFuIiwxMSksaCgpLGsoMTMsR1d0LDEsNSwidGItaGlzdG9ncmFtIiwxMiksaygxNCxxV3QsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxMyx4bikpLHQmMil7bGV0IG89d2UoMTUpO3goMiksUCgidGl0bGUiLGUudGFnKSgidmFsdWUiLGUudGl0bGUpLHgoMSksUCgiaXNDbGlwcGVkIixlLmxpbmtlZFRpbWVTZWxlY3Rpb24mJmUubGlua2VkVGltZVNlbGVjdGlvbi5jbGlwcGVkKSgiaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkIixlLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCkseCgyKSxQKCJuZ1N0eWxlIixhbygxMixaV3QsZS5ydW5Db2xvclNjYWxlKGUucnVuSWQpKSkseCgxKSxQKCJydW5JZCIsZS5ydW5JZCkseCgyKSxyZSgidGl0bGUiLGUuaXNQaW5uZWQ/IlVucGluIGNhcmQiOiJQaW4gY2FyZCIpLHgoMSksUCgic3ZnSWNvbiIsZS5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSx4KDIpLFAoInN2Z0ljb24iLGUuc2hvd0Z1bGxTaXplPyJmdWxsc2NyZWVuX2V4aXRfMjRweCI6ImZ1bGxzY3JlZW5fMjRweCIpLHgoMSksUCgibmdJZiIsZS5sb2FkU3RhdGU9PT1lLkRhdGFMb2FkU3RhdGUuTE9BRElORykseCgxKSxQKCJuZ0lmIixlLmRhdGEmJmUuZGF0YS5sZW5ndGgpKCJuZ0lmRWxzZSIsbyl9fSxkaXJlY3RpdmVzOltrbCxObCxIcixibSxmbixYZSxYdCxxcixrZl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG87cGFkZGluZzoxNnB4O3BhZGRpbmctdG9wOjRweH0uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWFyZWFzOiJ0YWcgY29udHJvbHMiICJydW4gc3Bpbm5lciI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciBhdXRvO2ZvbnQtc2l6ZToxNHB4O21hcmdpbi1ib3R0b206NHB4fS50YWdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7Z2FwOjVweDtncmlkLWFyZWE6dGFnO292ZXJmbG93OmhpZGRlbn0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHZpcy1zZWxlY3RlZC10aW1lLWNsaXBwZWRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjB9LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpydW47ZGlzcGxheTpmbGV4O3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6MTNweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5kb3RbX25nY29udGVudC0lQ09NUCVde2ZsZXg6bm9uZTtkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxM3B4O2hlaWdodDoxM3B4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbi1yaWdodDo0cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV0gICAucnVuLXRleHRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO21heC13aWR0aDoxMjBweH0uY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7d2hpdGUtc3BhY2U6bm93cmFwO2dyaWQtYXJlYTpjb250cm9scztqdXN0aWZ5LXNlbGY6ZmxleC1lbmQ7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2dyaWQtYXJlYTpzcGlubmVyO2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmV9bWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3RvcDowO3JpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGV9dGItaGlzdG9ncmFtW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MX0uZW1wdHktbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxZW07Zm9udC1zaXplOjEzcHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWDAsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJoaXN0b2dyYW0tY2FyZC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJoaXN0b2dyYW1fY2FyZF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiaGlzdG9ncmFtX2NhcmRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2xvYWRTdGF0ZTpbe3R5cGU6ZH1dLHRpdGxlOlt7dHlwZTpkfV0sdGFnOlt7dHlwZTpkfV0scnVuSWQ6W3t0eXBlOmR9XSxkYXRhOlt7dHlwZTpkfV0sbW9kZTpbe3R5cGU6ZH1dLHhBeGlzVHlwZTpbe3R5cGU6ZH1dLHJ1bkNvbG9yU2NhbGU6W3t0eXBlOmR9XSxzaG93RnVsbFNpemU6W3t0eXBlOmR9XSxpc1Bpbm5lZDpbe3R5cGU6ZH1dLGxpbmtlZFRpbWVTZWxlY3Rpb246W3t0eXBlOmR9XSxpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQ6W3t0eXBlOmR9XSxvbkZ1bGxTaXplVG9nZ2xlOlt7dHlwZTpCfV0sb25QaW5DbGlja2VkOlt7dHlwZTpCfV0sb25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZDpbe3R5cGU6Qn1dLG9uTGlua2VkVGltZVRvZ2dsZWQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgTGQ9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZnVsbFdpZHRoQ2hhbmdlZD1uZXcgJCx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyAkLHRoaXMucGluU3RhdGVDaGFuZ2VkPW5ldyAkLHRoaXMubW9kZSQ9dGhpcy5zdG9yZS5zZWxlY3QoRkQpLHRoaXMueEF4aXNUeXBlJD10aGlzLnN0b3JlLnNlbGVjdChFXyksdGhpcy5zaG93RnVsbFNpemU9ITF9aXNIaXN0b2dyYW1DYXJkTWV0YWRhdGEodCl7bGV0e3BsdWdpbjplfT10O3JldHVybiBlPT09TG8uSElTVE9HUkFNU31vbkZ1bGxTaXplVG9nZ2xlKCl7dGhpcy5zaG93RnVsbFNpemU9IXRoaXMuc2hvd0Z1bGxTaXplLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkLmVtaXQodGhpcy5zaG93RnVsbFNpemUpfW5nT25Jbml0KCl7bGV0IGU9dGhpcy5zdG9yZS5zZWxlY3QoUl8sdGhpcy5jYXJkSWQpLnBpcGUodWUoaT0+ISFpJiZ0aGlzLmlzSGlzdG9ncmFtQ2FyZE1ldGFkYXRhKGkpKSxHKGk9PmkpKSxvPW9uKFtlLHRoaXMuc3RvcmUuc2VsZWN0KFZ5LHRoaXMuY2FyZElkKV0pO3RoaXMuZGF0YSQ9by5waXBlKEcoKFtpLGFdKT0+e2xldCByPWkucnVuSWQ7aWYoIWF8fCFhLmhhc093blByb3BlcnR5KHIpKXJldHVybltdO2xldCBsPWFbcl0ubWFwKGM9PntsZXR7d2FsbFRpbWU6bSxzdGVwOmZ9PWMscD1jLmJpbnMubWFwKGc9Pih7eDpnLm1pbixkeDpnLm1heC1nLm1pbix5OmcuY291bnR9KSk7cmV0dXJue3dhbGxUaW1lOm0sc3RlcDpmLGJpbnM6cH19KTtyZXR1cm4gaHV0KGwpfSkpLHRoaXMuc3RlcHMkPXRoaXMuZGF0YSQucGlwZShHKGk9PmkubWFwKGE9PmEuc3RlcCkpKSx0aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb24kPW9uKFt0aGlzLnN0b3JlLnNlbGVjdChqdiksdGhpcy5zdGVwcyRdKS5waXBlKEcoKFtpLGFdKT0+e2lmKCFpKXJldHVybiBudWxsO2xldCByPTEvMCxzPS0xLzA7Zm9yKGxldCBjIG9mIGEpcj1NYXRoLm1pbihjLHIpLHM9TWF0aC5tYXgoYyxzKTtsZXQgbD1yMShpLHIscyk7cmV0dXJuIGVjdChsLGEpfSkpLHRoaXMuaXNDbG9zZXN0U3RlcEhpZ2hsaWdodGVkJD1vbihbdGhpcy5zdG9yZS5zZWxlY3QoanYpLHRoaXMubGlua2VkVGltZVNlbGVjdGlvbiRdKS5waXBlKEcoKFtpLGFdKT0+aSYmYSYmIWEuY2xpcHBlZCYmaS5lbmQ9PT1udWxsJiZpLnN0YXJ0LnN0ZXAhPT1hLnN0YXJ0U3RlcCkpLHRoaXMubG9hZFN0YXRlJD10aGlzLnN0b3JlLnNlbGVjdChCeSx0aGlzLmNhcmRJZCksdGhpcy50YWckPWUucGlwZShHKGk9PmkudGFnKSksdGhpcy50aXRsZSQ9dGhpcy50YWckLnBpcGUoRyhpPT5mMihpLHRoaXMuZ3JvdXBOYW1lKSkpLHRoaXMucnVuSWQkPWUucGlwZShHKGk9PmkucnVuSWQpKSx0aGlzLmlzUGlubmVkJD10aGlzLnN0b3JlLnNlbGVjdChqeSx0aGlzLmNhcmRJZCl9b25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGZ4KHQpKX1vbkxpbmtlZFRpbWVUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChweCh7YWZmb3JkYW5jZTpQTy5GT0JfREVTRUxFQ1R9KSl9fTtMZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxMZCkodihzdCkpfTtMZC5cdTAyNzVjbXA9eih7dHlwZTpMZCxzZWxlY3RvcnM6W1siaGlzdG9ncmFtLWNhcmQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6MTEsdmFyczozMixjb25zdHM6W1szLCJsb2FkU3RhdGUiLCJ0aXRsZSIsInRhZyIsInJ1bklkIiwiZGF0YSIsIm1vZGUiLCJ4QXhpc1R5cGUiLCJydW5Db2xvclNjYWxlIiwic2hvd0Z1bGxTaXplIiwiaXNQaW5uZWQiLCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiLCJsaW5rZWRUaW1lU2VsZWN0aW9uIiwib25GdWxsU2l6ZVRvZ2dsZSIsIm9uUGluQ2xpY2tlZCIsIm9uTGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQiLCJvbkxpbmtlZFRpbWVUb2dnbGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJoaXN0b2dyYW0tY2FyZC1jb21wb25lbnQiLDApLEEoIm9uRnVsbFNpemVUb2dnbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25GdWxsU2l6ZVRvZ2dsZSgpfSkoIm9uUGluQ2xpY2tlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUucGluU3RhdGVDaGFuZ2VkLmVtaXQoaSl9KSgib25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZChpKX0pKCJvbkxpbmtlZFRpbWVUb2dnbGVkIixmdW5jdGlvbigpe3JldHVybiBlLm9uTGlua2VkVGltZVRvZ2dsZWQoKX0pLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpLFgoNCwiYXN5bmMiKSxYKDUsImFzeW5jIiksWCg2LCJhc3luYyIpLFgoNywiYXN5bmMiKSxYKDgsImFzeW5jIiksWCg5LCJhc3luYyIpLFgoMTAsImFzeW5jIiksaCgpKSx0JjImJlAoImxvYWRTdGF0ZSIsUSgxLDEyLGUubG9hZFN0YXRlJCkpKCJ0aXRsZSIsUSgyLDE0LGUudGl0bGUkKSkoInRhZyIsUSgzLDE2LGUudGFnJCkpKCJydW5JZCIsUSg0LDE4LGUucnVuSWQkKSkoImRhdGEiLFEoNSwyMCxlLmRhdGEkKSkoIm1vZGUiLFEoNiwyMixlLm1vZGUkKSkoInhBeGlzVHlwZSIsUSg3LDI0LGUueEF4aXNUeXBlJCkpKCJydW5Db2xvclNjYWxlIixlLnJ1bkNvbG9yU2NhbGUpKCJzaG93RnVsbFNpemUiLGUuc2hvd0Z1bGxTaXplKSgiaXNQaW5uZWQiLFEoOCwyNixlLmlzUGlubmVkJCkpKCJpc0Nsb3Nlc3RTdGVwSGlnaGxpZ2h0ZWQiLFEoOSwyOCxlLmlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCQpKSgibGlua2VkVGltZVNlbGVjdGlvbiIsUSgxMCwzMCxlLmxpbmtlZFRpbWVTZWxlY3Rpb24kKSl9LGRpcmVjdGl2ZXM6W1gwXSxwaXBlczpbb2VdLHN0eWxlczpbYFtfbmdob3N0LSVDT01QJV0gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfWBdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKExkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiaGlzdG9ncmFtLWNhcmQiLHRlbXBsYXRlOmAKICAgIDxoaXN0b2dyYW0tY2FyZC1jb21wb25lbnQKICAgICAgW2xvYWRTdGF0ZV09ImxvYWRTdGF0ZSQgfCBhc3luYyIKICAgICAgW3RpdGxlXT0idGl0bGUkIHwgYXN5bmMiCiAgICAgIFt0YWddPSJ0YWckIHwgYXN5bmMiCiAgICAgIFtydW5JZF09InJ1bklkJCB8IGFzeW5jIgogICAgICBbZGF0YV09ImRhdGEkIHwgYXN5bmMiCiAgICAgIFttb2RlXT0ibW9kZSQgfCBhc3luYyIKICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyIKICAgICAgW3J1bkNvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlIgogICAgICBbc2hvd0Z1bGxTaXplXT0ic2hvd0Z1bGxTaXplIgogICAgICBbaXNQaW5uZWRdPSJpc1Bpbm5lZCQgfCBhc3luYyIKICAgICAgW2lzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZF09ImlzQ2xvc2VzdFN0ZXBIaWdobGlnaHRlZCQgfCBhc3luYyIKICAgICAgW2xpbmtlZFRpbWVTZWxlY3Rpb25dPSJsaW5rZWRUaW1lU2VsZWN0aW9uJCB8IGFzeW5jIgogICAgICAob25GdWxsU2l6ZVRvZ2dsZSk9Im9uRnVsbFNpemVUb2dnbGUoKSIKICAgICAgKG9uUGluQ2xpY2tlZCk9InBpblN0YXRlQ2hhbmdlZC5lbWl0KCRldmVudCkiCiAgICAgIChvbkxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkKT0ib25MaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpIgogICAgICAob25MaW5rZWRUaW1lVG9nZ2xlZCk9Im9uTGlua2VkVGltZVRvZ2dsZWQoKSIKICAgID48L2hpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudD4KICBgLHN0eWxlczpbYAogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICBgXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSx7Y2FyZElkOlt7dHlwZTpkfV0sZ3JvdXBOYW1lOlt7dHlwZTpkfV0scnVuQ29sb3JTY2FsZTpbe3R5cGU6ZH1dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOkJ9XSxmdWxsSGVpZ2h0Q2hhbmdlZDpbe3R5cGU6Qn1dLHBpblN0YXRlQ2hhbmdlZDpbe3R5cGU6Qn1dfSl9KSgpO2Z1bmN0aW9uIEtXdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImltYWdlLWNhcmQiLDYpLEEoImZ1bGxXaWR0aENoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKDIpLm9uRnVsbFdpZHRoQ2hhbmdlZChpKX0pKCJwaW5TdGF0ZUNoYW5nZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoMikub25QaW5TdGF0ZUNoYW5nZWQoKX0pLGgoKX1pZihuJjIpe2xldCBlPVMoMik7UCgiY2FyZElkIixlLmNhcmRJZCkoImdyb3VwTmFtZSIsZS5ncm91cE5hbWUpKCJydW5Db2xvclNjYWxlIixlLnJ1bkNvbG9yU2NhbGUpfX1mdW5jdGlvbiBKV3Qobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJzY2FsYXItY2FyZCIsNyksQSgiZnVsbFdpZHRoQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoMikub25GdWxsV2lkdGhDaGFuZ2VkKGkpfSkoImZ1bGxIZWlnaHRDaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygyKS5vbkZ1bGxIZWlnaHRDaGFuZ2VkKGkpfSkoInBpblN0YXRlQ2hhbmdlZCIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygyKS5vblBpblN0YXRlQ2hhbmdlZCgpfSksaCgpfWlmKG4mMil7bGV0IGU9UygyKTtQKCJjYXJkSWQiLGUuY2FyZElkKSgiZ3JvdXBOYW1lIixlLmdyb3VwTmFtZSl9fWZ1bmN0aW9uICRXdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImhpc3RvZ3JhbS1jYXJkIiw4KSxBKCJmdWxsV2lkdGhDaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gT3QoZSksUygyKS5vbkZ1bGxXaWR0aENoYW5nZWQoaSl9KSgiZnVsbEhlaWdodENoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKDIpLm9uRnVsbEhlaWdodENoYW5nZWQoaSl9KSgicGluU3RhdGVDaGFuZ2VkIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKDIpLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSxoKCl9aWYobiYyKXtsZXQgZT1TKDIpO1AoImNhcmRJZCIsZS5jYXJkSWQpKCJncm91cE5hbWUiLGUuZ3JvdXBOYW1lKSgicnVuQ29sb3JTY2FsZSIsZS5ydW5Db2xvclNjYWxlKX19ZnVuY3Rpb24gdHF0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiKSxUKDEpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goMSksbGUoIlBsYWNlaG9sZGVyIGVycm9yIGZvcjogIixlLmNhcmRJZCwiIil9fWZ1bmN0aW9uIGVxdChuLHQpe2lmKG4mMSYmKEVuKDAsMSksaygxLEtXdCwxLDMsImltYWdlLWNhcmQiLDIpLGsoMixKV3QsMSwyLCJzY2FsYXItY2FyZCIsMyksaygzLCRXdCwxLDMsImhpc3RvZ3JhbS1jYXJkIiw0KSxrKDQsdHF0LDIsMSwiZGl2Iiw1KSxrbigpKSxuJjIpe2xldCBlPVMoKTtQKCJuZ1N3aXRjaCIsZS5wbHVnaW5UeXBlKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsZS5QbHVnaW5UeXBlLklNQUdFUykseCgxKSxQKCJuZ1N3aXRjaENhc2UiLGUuUGx1Z2luVHlwZS5TQ0FMQVJTKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsZS5QbHVnaW5UeXBlLkhJU1RPR1JBTVMpfX12YXIgUTA9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLlBsdWdpblR5cGU9TG8sdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyAkLHRoaXMuZnVsbEhlaWdodENoYW5nZWQ9bmV3ICQsdGhpcy5waW5TdGF0ZUNoYW5nZWQ9bmV3ICR9b25GdWxsV2lkdGhDaGFuZ2VkKHQpe3RoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHQpfW9uRnVsbEhlaWdodENoYW5nZWQodCl7dGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHQpfW9uUGluU3RhdGVDaGFuZ2VkKCl7dGhpcy5waW5TdGF0ZUNoYW5nZWQuZW1pdCgpfX07UTAuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UTApfTtRMC5cdTAyNzVjbXA9eih7dHlwZTpRMCxzZWxlY3RvcnM6W1siY2FyZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzRXZlclZpc2libGU6ImlzRXZlclZpc2libGUiLGNhcmRJZDoiY2FyZElkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscGx1Z2luVHlwZToicGx1Z2luVHlwZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSJ9LG91dHB1dHM6e2Z1bGxXaWR0aENoYW5nZWQ6ImZ1bGxXaWR0aENoYW5nZWQiLGZ1bGxIZWlnaHRDaGFuZ2VkOiJmdWxsSGVpZ2h0Q2hhbmdlZCIscGluU3RhdGVDaGFuZ2VkOiJwaW5TdGF0ZUNoYW5nZWQifSxkZWNsczoxLHZhcnM6MSxjb25zdHM6W1szLCJuZ1N3aXRjaCIsNCwibmdJZiJdLFszLCJuZ1N3aXRjaCJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCIsNCwibmdTd2l0Y2hDYXNlIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJmdWxsSGVpZ2h0Q2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCIsNCwibmdTd2l0Y2hDYXNlIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLDQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1N3aXRjaERlZmF1bHQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJmsoMCxlcXQsNSw0LCJuZy1jb250YWluZXIiLDApLHQmMiYmUCgibmdJZiIsZS5pc0V2ZXJWaXNpYmxlKX0sZGlyZWN0aXZlczpbWHQsR28sdWksVmwsd2QsRmQsTGRdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhRMCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImNhcmQtdmlldy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJjYXJkX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2lzRXZlclZpc2libGU6W3t0eXBlOmR9XSxjYXJkSWQ6W3t0eXBlOmR9XSxncm91cE5hbWU6W3t0eXBlOmR9XSxwbHVnaW5UeXBlOlt7dHlwZTpkfV0scnVuQ29sb3JTY2FsZTpbe3R5cGU6ZH1dLGZ1bGxXaWR0aENoYW5nZWQ6W3t0eXBlOkJ9XSxmdWxsSGVpZ2h0Q2hhbmdlZDpbe3R5cGU6Qn1dLHBpblN0YXRlQ2hhbmdlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBvcXQ9MzUwLEJkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzRXZlclZpc2libGU9ITEsdGhpcy5zaG93RnVsbFdpZHRoPSExLHRoaXMuc2hvd0Z1bGxIZWlnaHQ9ITEsdGhpcy5ydW5Db2xvclNjYWxlJD10aGlzLnN0b3JlLnNlbGVjdChrXykucGlwZShsdyhvcXQsdm9pZCAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSksRyhlPT5vPT5lLmhhc093blByb3BlcnR5KG8pP2Vbb106IiNmZmYiKSl9b25WaXNpYmlsaXR5Q2hhbmdlKHt2aXNpYmxlOnR9KXt0aGlzLmlzRXZlclZpc2libGU9dGhpcy5pc0V2ZXJWaXNpYmxlfHx0fW9uRnVsbFdpZHRoQ2hhbmdlZCh0KXt0aGlzLnNob3dGdWxsV2lkdGg9dH1vbkZ1bGxIZWlnaHRDaGFuZ2VkKHQpe3RoaXMuc2hvd0Z1bGxIZWlnaHQ9dH1vblBpblN0YXRlQ2hhbmdlZCgpe3RoaXMuc3RvcmUuc2VsZWN0KGp5LHRoaXMuY2FyZElkKS5waXBlKENuKDEpLE9uKHRoaXMuc3RvcmUuc2VsZWN0KFVpdCkpKS5zdWJzY3JpYmUoKFt0LGVdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goYTIoe2NhcmRJZDp0aGlzLmNhcmRJZCxjYW5DcmVhdGVOZXdQaW5zOmUsd2FzUGlubmVkOnR9KSl9KX19O0JkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEJkKSh2KHN0KSl9O0JkLlx1MDI3NWNtcD16KHt0eXBlOkJkLHNlbGVjdG9yczpbWyJjYXJkLXZpZXciXV0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJmdWxsLXdpZHRoIixlLnNob3dGdWxsV2lkdGgpKCJmdWxsLWhlaWdodCIsZS5zaG93RnVsbEhlaWdodCl9LGlucHV0czp7Y2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixwbHVnaW5UeXBlOiJwbHVnaW5UeXBlIn0sZGVjbHM6Mix2YXJzOjcsY29uc3RzOltbIm9ic2VydmVJbnRlcnNlY3Rpb24iLCIiLCJpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbiIsIjIwMHB4IDIwMHB4IDIwMHB4IDIwMHB4IiwzLCJpc0V2ZXJWaXNpYmxlIiwiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLCJvblZpc2liaWxpdHlDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImNhcmQtdmlldy1jb21wb25lbnQiLDApLEEoImZ1bGxXaWR0aENoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uRnVsbFdpZHRoQ2hhbmdlZChpKX0pKCJmdWxsSGVpZ2h0Q2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25GdWxsSGVpZ2h0Q2hhbmdlZChpKX0pKCJwaW5TdGF0ZUNoYW5nZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25QaW5TdGF0ZUNoYW5nZWQoKX0pKCJvblZpc2liaWxpdHlDaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uVmlzaWJpbGl0eUNoYW5nZShpKX0pLFgoMSwiYXN5bmMiKSxoKCkpLHQmMiYmUCgiaXNFdmVyVmlzaWJsZSIsZS5pc0V2ZXJWaXNpYmxlKSgiY2FyZElkIixlLmNhcmRJZCkoImdyb3VwTmFtZSIsZS5ncm91cE5hbWUpKCJwbHVnaW5UeXBlIixlLnBsdWdpblR5cGUpKCJydW5Db2xvclNjYWxlIixRKDEsNSxlLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W1EwLEhsXSxwaXBlczpbb2VdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhCZCxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6ImNhcmQtdmlldyIsdGVtcGxhdGU6YAogICAgPGNhcmQtdmlldy1jb21wb25lbnQKICAgICAgW2lzRXZlclZpc2libGVdPSJpc0V2ZXJWaXNpYmxlIgogICAgICBbY2FyZElkXT0iY2FyZElkIgogICAgICBbZ3JvdXBOYW1lXT0iZ3JvdXBOYW1lIgogICAgICBbcGx1Z2luVHlwZV09InBsdWdpblR5cGUiCiAgICAgIFtydW5Db2xvclNjYWxlXT0icnVuQ29sb3JTY2FsZSQgfCBhc3luYyIKICAgICAgKGZ1bGxXaWR0aENoYW5nZWQpPSJvbkZ1bGxXaWR0aENoYW5nZWQoJGV2ZW50KSIKICAgICAgKGZ1bGxIZWlnaHRDaGFuZ2VkKT0ib25GdWxsSGVpZ2h0Q2hhbmdlZCgkZXZlbnQpIgogICAgICAocGluU3RhdGVDaGFuZ2VkKT0ib25QaW5TdGF0ZUNoYW5nZWQoKSIKICAgICAgb2JzZXJ2ZUludGVyc2VjdGlvbgogICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlck1hcmdpbj0iMjAwcHggMjAwcHggMjAwcHggMjAwcHgiCiAgICAgIChvblZpc2liaWxpdHlDaGFuZ2UpPSJvblZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50KSIKICAgID4KICAgIDwvY2FyZC12aWV3LWNvbXBvbmVudD4KICBgLHN0eWxlVXJsczpbImNhcmRfdmlld19jb250YWluZXIuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se2NhcmRJZDpbe3R5cGU6ZH1dLGdyb3VwTmFtZTpbe3R5cGU6ZH1dLHBsdWdpblR5cGU6W3t0eXBlOmR9XSxzaG93RnVsbFdpZHRoOlt7dHlwZTpIYSxhcmdzOlsiY2xhc3MuZnVsbC13aWR0aCJdfV0sc2hvd0Z1bGxIZWlnaHQ6W3t0eXBlOkhhLGFyZ3M6WyJjbGFzcy5mdWxsLWhlaWdodCJdfV19KX0pKCk7ZnVuY3Rpb24gYXF0KG4sdCl7biYxJiZNbygwKX1mdW5jdGlvbiBycXQobix0KXtpZihuJjEmJkQoMCwiY2FyZC12aWV3Iiw1KSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygyKTtQKCJuZ0NsYXNzIixvLmlzU2hvd2luZ0RhdGFUYWJsZShlKT8iaGVpZ2h0LXdpdGgtdGFibGUiOiIiKSgiY2FyZElkIixlLmNhcmRJZCkoImdyb3VwTmFtZSIsby5ncm91cE5hbWUpKCJwbHVnaW5UeXBlIixlLnBsdWdpbikoImNhcmRPYnNlcnZlciIsby5jYXJkT2JzZXJ2ZXIpKCJjYXJkTGF6eUxvYWRlciIsZS5jYXJkSWQpfX1mdW5jdGlvbiBzcXQobix0KXtuJjEmJk1vKDApfXZhciBscXQ9ZnVuY3Rpb24oKXtyZXR1cm57aXNCb3R0b21Db250cm9sOiExfX0sY3F0PWZ1bmN0aW9uKCl7cmV0dXJue2lzQm90dG9tQ29udHJvbDohMH19O2Z1bmN0aW9uIG1xdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2IiksaygxLGFxdCwxLDAsIm5nLWNvbnRhaW5lciIsMiksdSgyLCJkaXYiLDMpLGsoMyxycXQsMSw2LCJjYXJkLXZpZXciLDQpLGgoKSxrKDQsc3F0LDEsMCwibmctY29udGFpbmVyIiwyKSxoKCkpLG4mMil7bGV0IGU9UygpLG89d2UoMik7eCgxKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixvKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLHd5KDgsbHF0KSkseCgxKSxxZSgiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIixlLmdyaWRUZW1wbGF0ZUNvbHVtbikseCgxKSxQKCJuZ0Zvck9mIixlLmNhcmRJZHNXaXRoTWV0YWRhdGEpKCJuZ0ZvclRyYWNrQnkiLGUudHJhY2tCeUNhcmRzKSx4KDEpLFAoIm5nVGVtcGxhdGVPdXRsZXQiLG8pKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsd3koOSxjcXQpKX19ZnVuY3Rpb24gZnF0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiYnV0dG9uIiwxMSksQSgiY2xpY2siLGZ1bmN0aW9uKGkpe090KGUpO2xldCBhPVMoMyk7cmV0dXJuIGEuaGFuZGxlUGFnZUNoYW5nZShhLnBhZ2VJbmRleC0xLGkudGFyZ2V0KX0pLFQoMSwiIFByZXZpb3VzICIpLGgoKX1pZihuJjIpe2xldCBlPVMoMyk7UCgiZGlzYWJsZWQiLGUucGFnZUluZGV4PT09MCl9fWZ1bmN0aW9uIHBxdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsInNwYW4iLDE0KSx1KDEsImlucHV0IiwxNSksQSgiaW5wdXQiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKDQpLm9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKGkpfSkoImNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoNCkub25QYWdpbmF0aW9uSW5wdXRDaGFuZ2UoaSl9KSxoKCksVCgyKSxoKCl9aWYobiYyKXtsZXQgZT1TKDQpO3goMSksUCgidmFsdWUiLGUucGFnZUluZGV4KzEpKCJtYXgiLGUubnVtUGFnZXMpLHgoMSksbGUoIiBvZiAiLGUubnVtUGFnZXMsIiIpfX1mdW5jdGlvbiBkcXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJzcGFuIiksaygxLHBxdCwzLDMsInNwYW4iLDEyKSx1KDIsImJ1dHRvbiIsMTMpLEEoImNsaWNrIixmdW5jdGlvbihpKXtPdChlKTtsZXQgYT1TKDMpO3JldHVybiBhLmhhbmRsZVBhZ2VDaGFuZ2UoYS5wYWdlSW5kZXgrMSxpLnRhcmdldCl9KSxUKDMsIiBOZXh0ICIpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT1TKDIpLmlzQm90dG9tQ29udHJvbCxvPVMoKTt4KDEpLFAoIm5nSWYiLG8uc2hvd1BhZ2luYXRpb25JbnB1dChlKSkseCgxKSxQKCJkaXNhYmxlZCIsby5wYWdlSW5kZXgrMT49by5udW1QYWdlcyl9fWZ1bmN0aW9uIGdxdChuLHQpe2lmKG4mMSYmKHUoMCwiZGl2Iiw3KSx1KDEsInNwYW4iLDgpLGsoMixmcXQsMiwxLCJidXR0b24iLDkpLGgoKSx1KDMsInNwYW4iLDEwKSxrKDQsZHF0LDQsMiwic3BhbiIsMCksaCgpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goMiksUCgibmdJZiIsZS5zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSx4KDIpLFAoIm5nSWYiLGUuc2hvd1BhZ2luYXRpb25Db250cm9scyl9fWZ1bmN0aW9uIHVxdChuLHQpe2lmKG4mMSYmaygwLGdxdCw1LDIsImRpdiIsNiksbiYyKXtsZXQgZT1TKCk7UCgibmdJZiIsZS5zaG93UGFnaW5hdGlvbkNvbnRyb2xzKX19dmFyIGhxdD0zMzUsX3F0PTczNSxLMD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmNka1Njcm9sbGFibGU9dCx0aGlzLlBsdWdpblR5cGU9TG8sdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49IiIsdGhpcy5wYWdlSW5kZXhDaGFuZ2VkPW5ldyAkfW5nT25Jbml0KCl7dGhpcy5pc0NhcmRXaWR0aFZhbGlkKHRoaXMuY2FyZE1pbldpZHRoKSYmKHRoaXMuZ3JpZFRlbXBsYXRlQ29sdW1uPWByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoJHt0aGlzLmNhcmRNaW5XaWR0aH1weCwgYXV0bykpYCl9bmdPbkNoYW5nZXModCl7aWYodC5jYXJkTWluV2lkdGgpe2xldCBlPXQuY2FyZE1pbldpZHRoLmN1cnJlbnRWYWx1ZTt0aGlzLmlzQ2FyZFdpZHRoVmFsaWQoZSk/KHRoaXMuY2FyZE1pbldpZHRoPWUsdGhpcy5ncmlkVGVtcGxhdGVDb2x1bW49YHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgke3RoaXMuY2FyZE1pbldpZHRofXB4LCBhdXRvKSlgKTp0aGlzLmdyaWRUZW1wbGF0ZUNvbHVtbj0iIn19aXNDYXJkV2lkdGhWYWxpZCh0KXtyZXR1cm4gdCYmdD49aHF0JiZ0PD1fcXR9c2hvd1BhZ2luYXRpb25JbnB1dCh0KXtyZXR1cm4gdH1oYW5kbGVQYWdlQ2hhbmdlKHQsZSl7bGV0IG89ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7c2V0VGltZW91dCgoKT0+e3RoaXMuc2Nyb2xsVG9LZWVwVGFyZ2V0UG9zaXRpb24oZSxvKX0sMCksdGhpcy5wYWdlSW5kZXhDaGFuZ2VkLmVtaXQodCl9c2Nyb2xsVG9LZWVwVGFyZ2V0UG9zaXRpb24odCxlKXt2YXIgbztsZXQgaT0obz10aGlzLmNka1Njcm9sbGFibGUpPT09bnVsbHx8bz09PXZvaWQgMD92b2lkIDA6by5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudDtpJiZpLnNjcm9sbFRvKDAsdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtZStpLnNjcm9sbFRvcCl9dHJhY2tCeUNhcmRzKHQsZSl7cmV0dXJuIGUuY2FyZElkfW9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKHQpe2xldCBlPXQudGFyZ2V0O2lmKHQudHlwZT09PSJpbnB1dCImJmUudmFsdWU9PT0iIilyZXR1cm47bGV0IG89TnVtYmVyKGUudmFsdWUpLTEsaT1NYXRoLm1pbihNYXRoLm1heCgwLG8pLHRoaXMubnVtUGFnZXMtMSk7ZS52YWx1ZSE9PVN0cmluZyhpKzEpJiYoZS52YWx1ZT1TdHJpbmcoaSsxKSksdGhpcy5oYW5kbGVQYWdlQ2hhbmdlKGksZSl9aXNTaG93aW5nRGF0YVRhYmxlKHQpe3JldHVybiB0aGlzLmlzU3RlcFNlbGVjdG9yRW5hYmxlZCYmdC5wbHVnaW49PT1Mby5TQ0FMQVJTJiZ0aGlzLnhBeGlzVHlwZT09PVppLlNURVB9fTtLMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxLMCkodihSciw4KSl9O0swLlx1MDI3NWNtcD16KHt0eXBlOkswLHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQiXV0saW5wdXRzOntpc0dyb3VwRXhwYW5kZWQ6ImlzR3JvdXBFeHBhbmRlZCIscGFnZUluZGV4OiJwYWdlSW5kZXgiLG51bVBhZ2VzOiJudW1QYWdlcyIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE1pbldpZHRoOiJjYXJkTWluV2lkdGgiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIixzaG93UGFnaW5hdGlvbkNvbnRyb2xzOiJzaG93UGFnaW5hdGlvbkNvbnRyb2xzIixpc1N0ZXBTZWxlY3RvckVuYWJsZWQ6ImlzU3RlcFNlbGVjdG9yRW5hYmxlZCIseEF4aXNUeXBlOiJ4QXhpc1R5cGUifSxvdXRwdXRzOntwYWdlSW5kZXhDaGFuZ2VkOiJwYWdlSW5kZXhDaGFuZ2VkIn0sZmVhdHVyZXM6W1dlXSxkZWNsczozLHZhcnM6MSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgbjt0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9uPWdvb2cuZ2V0TXNnKCJQcmV2aW91cyBwYWdlIik6bj0kbG9jYWxpemVgOkEgYnV0dG9uIHRoYXQgc2V0cyBhIGdyb3VwIHRvIHRoZSBwcmV2aW91cyBwYWdlLuKQnzU3NWU3ODJmZDI3ZjJlZTcwYTAzNGE3NzVlZmU5YWQxNjI0NzIyNTDikJ8zNjI5OTYwNTQ0ODc1MzYwMDQ2OlByZXZpb3VzIHBhZ2VgO2xldCB0O3JldHVybiB0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT90PWdvb2cuZ2V0TXNnKCJOZXh0IHBhZ2UiKTp0PSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCBzZXRzIGEgZ3JvdXAgdG8gdGhlIG5leHQgcGFnZS7ikJ9jZTNjZWZiMWNkMDA5OWFhNTAwM2RkYTE2ZWM5ZWIyMWZkOGJhNzg54pCfMzMzNzMwMTY5NDIxMDI4NzU5NTpOZXh0IHBhZ2VgLFtbNCwibmdJZiJdLFsiZ3JvdXBDb250cm9scyIsIiJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0IiwibmdUZW1wbGF0ZU91dGxldENvbnRleHQiXSxbMSwiY2FyZC1ncmlkIl0sWzMsIm5nQ2xhc3MiLCJjYXJkSWQiLCJncm91cE5hbWUiLCJwbHVnaW5UeXBlIiwiY2FyZE9ic2VydmVyIiwiY2FyZExhenlMb2FkZXIiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFszLCJuZ0NsYXNzIiwiY2FyZElkIiwiZ3JvdXBOYW1lIiwicGx1Z2luVHlwZSIsImNhcmRPYnNlcnZlciIsImNhcmRMYXp5TG9hZGVyIl0sWyJjbGFzcyIsImdyb3VwLWNvbnRyb2xzIiw0LCJuZ0lmIl0sWzEsImdyb3VwLWNvbnRyb2xzIl0sWzEsInByZXYtY29udGFpbmVyIl0sWyJjbGFzcyIsInByZXYgcGFnaW5hdGlvbi1idXR0b24iLCJtYXQtYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwzLCJkaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsImlucHV0LWFuZC1uZXh0LWNvbnRhaW5lciJdLFsibWF0LWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sMSwicHJldiIsInBhZ2luYXRpb24tYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJjbGFzcyIsInBhZ2luYXRpb24taW5wdXQiLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLCJhcmlhLWxhYmVsIix0LDEsIm5leHQiLCJwYWdpbmF0aW9uLWJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsxLCJwYWdpbmF0aW9uLWlucHV0Il0sWyJ0eXBlIiwibnVtYmVyIiwibWluIiwiMSIsMywidmFsdWUiLCJtYXgiLCJpbnB1dCIsImNoYW5nZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihrKDAsbXF0LDUsMTAsImRpdiIsMCksaygxLHVxdCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDEseG4pKSx0JjImJlAoIm5nSWYiLGUuaXNHcm91cEV4cGFuZGVkKX0sZGlyZWN0aXZlczpbWHQsTGEsbW4sQmQsam4sdmQsZm5dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb250YWluOmNvbnRlbnR9LmNhcmQtZ3JpZFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMzM1cHgsIGF1dG8pKTtnYXA6MTZweDtwYWRkaW5nOjE2cHh9Y2FyZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbnRhaW46c3RyaWN0O2hlaWdodDoxMDAlO21pbi1oZWlnaHQ6MzIwcHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgY2FyZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgY2FyZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM1NTV9Y2FyZC12aWV3LmZ1bGwtd2lkdGhbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46bGF5b3V0IHBhaW50O2dyaWQtY29sdW1uLXN0YXJ0OjE7Z3JpZC1jb2x1bW4tZW5kOi0xfWNhcmQtdmlldy5mdWxsLWhlaWdodFtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0ODBweH1jYXJkLXZpZXcuaGVpZ2h0LXdpdGgtdGFibGVbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDIwcHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2Rpc3BsYXk6Z3JpZDthbGlnbi1pdGVtczpjZW50ZXI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjE2cHg7cGFkZGluZzowIDE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0uZ3JvdXAtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LW9mLXR5cGV7cGFkZGluZy10b3A6MTZweH0uZ3JvdXAtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdOmxhc3Qtb2YtdHlwZXtwYWRkaW5nLWJvdHRvbToxNnB4fS5wcmV2LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1zZWxmOmZsZXgtc3RhcnR9LmlucHV0LWFuZC1uZXh0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1zZWxmOmZsZXgtZW5kfS5wYWdpbmF0aW9uLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tcmlnaHQ6MTZweH0ucGFnaW5hdGlvbi1pbnB1dFtfbmdjb250ZW50LSVDT01QJV0gICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLDApO2JvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yO2NvbG9yOmluaGVyaXQ7Zm9udDppbmhlcml0fS5wYWdpbmF0aW9uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnBhZ2luYXRpb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnBhZ2luYXRpb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX0ucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVke2NvbG9yOiM3NTc1NzV9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnBhZ2luYXRpb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZCwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnBhZ2luYXRpb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZHtjb2xvcjojNjE2MTYxfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEswLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9jYXJkX2dyaWRfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vY2FyZF9ncmlkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpScixkZWNvcmF0b3JzOlt7dHlwZTpIfV19XX0se2lzR3JvdXBFeHBhbmRlZDpbe3R5cGU6ZH1dLHBhZ2VJbmRleDpbe3R5cGU6ZH1dLG51bVBhZ2VzOlt7dHlwZTpkfV0sY2FyZElkc1dpdGhNZXRhZGF0YTpbe3R5cGU6ZH1dLGNhcmRNaW5XaWR0aDpbe3R5cGU6ZH1dLGNhcmRPYnNlcnZlcjpbe3R5cGU6ZH1dLHNob3dQYWdpbmF0aW9uQ29udHJvbHM6W3t0eXBlOmR9XSxpc1N0ZXBTZWxlY3RvckVuYWJsZWQ6W3t0eXBlOmR9XSx4QXhpc1R5cGU6W3t0eXBlOmR9XSxwYWdlSW5kZXhDaGFuZ2VkOlt7dHlwZTpCfV19KX0pKCk7dmFyIE5tPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmdyb3VwTmFtZT1udWxsLHRoaXMuZ3JvdXBOYW1lJD1uZXcgR2EobnVsbCksdGhpcy5wYWdlSW5kZXgkPW5ldyBHYSgwKSx0aGlzLml0ZW1zJD1uZXcgR2EoW10pLHRoaXMubmdVbnN1YnNjcmliZT1uZXcgSnQsdGhpcy5pc1N0ZXBTZWxlY3RvckVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KFV5KSx0aGlzLmdldE1ldHJpY3NYQXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KEVfKSx0aGlzLm51bVBhZ2VzJD1vbihbdGhpcy5pdGVtcyQsdGhpcy5zdG9yZS5zZWxlY3QoSm0uZ2V0UGFnZVNpemUpXSkucGlwZShHKChbZSxvXSk9Pk1hdGguY2VpbChlLmxlbmd0aC9vKSkpLHRoaXMuaXNHcm91cEV4cGFuZGVkJD10aGlzLmdyb3VwTmFtZSQucGlwZSh0aShlPT5lIT09bnVsbD90aGlzLnN0b3JlLnNlbGVjdChVRCxlKTpkbighMCkpKSx0aGlzLnNob3dQYWdpbmF0aW9uQ29udHJvbHMkPXRoaXMubnVtUGFnZXMkLnBpcGUoRyhlPT5lPjEpKSx0aGlzLm5vcm1hbGl6ZWRQYWdlSW5kZXgkPW9uKFt0aGlzLnBhZ2VJbmRleCQsdGhpcy5udW1QYWdlcyRdKS5waXBlKFBlKHRoaXMubmdVbnN1YnNjcmliZSksYW4oKFtlLG9dKT0+e28hPT0wJiYoZT49bz90aGlzLnBhZ2VJbmRleCQubmV4dChvLTEpOmU8MCYmdGhpcy5wYWdlSW5kZXgkLm5leHQoMCkpfSksRygoW2Usb10pPT5NYXRoLm1pbihNYXRoLm1heChlLDApLG8tMSkpLEJmKDEpKSx0aGlzLnBhZ2VkSXRlbXMkPW9uKFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChKbS5nZXRQYWdlU2l6ZSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JCx0aGlzLmlzR3JvdXBFeHBhbmRlZCRdKS5waXBlKEcoKFtlLG8saSxhXSk9PntsZXQgcj1vKmkscz1vKmkrKGE/bzowKTtyZXR1cm4gZS5zbGljZShyLHMpfSkpLHRoaXMuY2FyZE1pbldpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChPMyl9bmdPbkNoYW5nZXModCl7dC5jYXJkSWRzV2l0aE1ldGFkYXRhJiZ0aGlzLml0ZW1zJC5uZXh0KHRoaXMuY2FyZElkc1dpdGhNZXRhZGF0YSksdC5ncm91cE5hbWUmJnRoaXMuZ3JvdXBOYW1lJC5uZXh0KHRoaXMuZ3JvdXBOYW1lKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9b25QYWdlSW5kZXhDaGFuZ2VkKHQpe3RoaXMucGFnZUluZGV4JC5uZXh0KHQpfX07Tm0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Tm0pKHYoc3QpKX07Tm0uXHUwMjc1Y21wPXooe3R5cGU6Tm0sc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncmlkIl1dLGlucHV0czp7Z3JvdXBOYW1lOiJncm91cE5hbWUiLGNhcmRJZHNXaXRoTWV0YWRhdGE6ImNhcmRJZHNXaXRoTWV0YWRhdGEiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZmVhdHVyZXM6W1dlXSxkZWNsczo5LHZhcnM6MjUsY29uc3RzOltbMywiaXNHcm91cEV4cGFuZGVkIiwicGFnZUluZGV4IiwibnVtUGFnZXMiLCJzaG93UGFnaW5hdGlvbkNvbnRyb2xzIiwiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRNaW5XaWR0aCIsImNhcmRPYnNlcnZlciIsImlzU3RlcFNlbGVjdG9yRW5hYmxlZCIsInhBeGlzVHlwZSIsInBhZ2VJbmRleENoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsIm1ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudCIsMCksQSgicGFnZUluZGV4Q2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25QYWdlSW5kZXhDaGFuZ2VkKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksWCg0LCJhc3luYyIpLFgoNSwiYXN5bmMiKSxYKDYsImFzeW5jIiksWCg3LCJhc3luYyIpLFgoOCwiYXN5bmMiKSxoKCkpLHQmMiYmUCgiaXNHcm91cEV4cGFuZGVkIixRKDEsOSxlLmlzR3JvdXBFeHBhbmRlZCQpKSgicGFnZUluZGV4IixRKDIsMTEsZS5ub3JtYWxpemVkUGFnZUluZGV4JCkpKCJudW1QYWdlcyIsUSgzLDEzLGUubnVtUGFnZXMkKSkoInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLFEoNCwxNSxlLnNob3dQYWdpbmF0aW9uQ29udHJvbHMkKSkoImNhcmRJZHNXaXRoTWV0YWRhdGEiLFEoNSwxNyxlLnBhZ2VkSXRlbXMkKSkoImNhcmRNaW5XaWR0aCIsUSg2LDE5LGUuY2FyZE1pbldpZHRoJCkpKCJjYXJkT2JzZXJ2ZXIiLGUuY2FyZE9ic2VydmVyKSgiaXNTdGVwU2VsZWN0b3JFbmFibGVkIixRKDcsMjEsZS5pc1N0ZXBTZWxlY3RvckVuYWJsZWQkKSkoInhBeGlzVHlwZSIsUSg4LDIzLGUuZ2V0TWV0cmljc1hBeGlzVHlwZSQpKX0sZGlyZWN0aXZlczpbSzBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE5tLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1jYXJkLWdyaWQiLHRlbXBsYXRlOmAKICAgIDxtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQKICAgICAgW2lzR3JvdXBFeHBhbmRlZF09ImlzR3JvdXBFeHBhbmRlZCQgfCBhc3luYyIKICAgICAgW3BhZ2VJbmRleF09Im5vcm1hbGl6ZWRQYWdlSW5kZXgkIHwgYXN5bmMiCiAgICAgIFtudW1QYWdlc109Im51bVBhZ2VzJCB8IGFzeW5jIgogICAgICBbc2hvd1BhZ2luYXRpb25Db250cm9sc109InNob3dQYWdpbmF0aW9uQ29udHJvbHMkIHwgYXN5bmMiCiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0icGFnZWRJdGVtcyQgfCBhc3luYyIKICAgICAgW2NhcmRNaW5XaWR0aF09ImNhcmRNaW5XaWR0aCQgfCBhc3luYyIKICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciIKICAgICAgW2lzU3RlcFNlbGVjdG9yRW5hYmxlZF09ImlzU3RlcFNlbGVjdG9yRW5hYmxlZCQgfCBhc3luYyIKICAgICAgW3hBeGlzVHlwZV09ImdldE1ldHJpY3NYQXhpc1R5cGUkIHwgYXN5bmMiCiAgICAgIChwYWdlSW5kZXhDaGFuZ2VkKT0ib25QYWdlSW5kZXhDaGFuZ2VkKCRldmVudCkiCiAgICA+CiAgICA8L21ldHJpY3MtY2FyZC1ncmlkLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LHtncm91cE5hbWU6W3t0eXBlOmR9XSxjYXJkSWRzV2l0aE1ldGFkYXRhOlt7dHlwZTpkfV0sY2FyZE9ic2VydmVyOlt7dHlwZTpkfV19KX0pKCk7ZnVuY3Rpb24gTXF0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiw4KSxUKDEpLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgxKSxsZSgiIixlLmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoLCIgY2FyZHMiKX19ZnVuY3Rpb24gYnF0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiw5KSxUKDEsIk5ldyBjYXJkIHBpbm5lZCIpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdDtyZSgiZGF0YS1pZCIsZSl9fWZ1bmN0aW9uIE9xdChuLHQpe2lmKG4mMSYmRCgwLCJtZXRyaWNzLWNhcmQtZ3JpZCIsMTApLG4mMil7bGV0IGU9UygpO1AoImNhcmRJZHNXaXRoTWV0YWRhdGEiLGUuY2FyZElkc1dpdGhNZXRhZGF0YSkoImNhcmRPYnNlcnZlciIsZS5jYXJkT2JzZXJ2ZXIpfX1mdW5jdGlvbiBQcXQobix0KXtuJjEmJih1KDAsImRpdiIsMTEpLFQoMSwiUGluIGNhcmRzIGZvciBhIHF1aWNrIHZpZXcgYW5kIGNvbXBhcmlzb24iKSxoKCkpfXZhciBKMD1jbGFzc3t9O0owLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEowKX07SjAuXHUwMjc1Y21wPXooe3R5cGU6SjAsc2VsZWN0b3JzOltbIm1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIiLGNhcmRJZHNXaXRoTWV0YWRhdGE6ImNhcmRJZHNXaXRoTWV0YWRhdGEiLG5ld0NhcmRQaW5uZWRJZHM6Im5ld0NhcmRQaW5uZWRJZHMifSxkZWNsczoxMCx2YXJzOjQsY29uc3RzOltbMSwiZ3JvdXAtdG9vbGJhciJdLFsic3ZnSWNvbiIsImtlZXBfMjRweCJdLFsxLCJncm91cC10ZXh0Il0sWyJhcmlhLXJvbGUiLCJoZWFkaW5nIiwiYXJpYS1sZXZlbCIsIjMiLDEsImdyb3VwLXRpdGxlIl0sWyJjbGFzcyIsImdyb3VwLWNhcmQtY291bnQiLDQsIm5nSWYiXSxbImNsYXNzIiwibmV3LWNhcmQtcGlubmVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJlbXB0eVBpbm5lZFZpZXciLCIiXSxbMSwiZ3JvdXAtY2FyZC1jb3VudCJdLFsxLCJuZXctY2FyZC1waW5uZWQiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJlbXB0eS1tZXNzYWdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYodSgwLCJkaXYiLDApLEQoMSwibWF0LWljb24iLDEpLHUoMiwic3BhbiIsMiksdSgzLCJzcGFuIiwzKSxUKDQsIlBpbm5lZCIpLGgoKSxrKDUsTXF0LDIsMSwic3BhbiIsNCksayg2LGJxdCwyLDEsInNwYW4iLDUpLGgoKSxoKCksayg3LE9xdCwxLDIsIm1ldHJpY3MtY2FyZC1ncmlkIiw2KSxrKDgsUHF0LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNyx4bikpLHQmMil7bGV0IG89d2UoOSk7eCg1KSxQKCJuZ0lmIixlLmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoPjEpLHgoMSksUCgibmdGb3JPZiIsZS5uZXdDYXJkUGlubmVkSWRzKSx4KDEpLFAoIm5nSWYiLGUuY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGgpKCJuZ0lmRWxzZSIsbyl9fSxkaXJlY3RpdmVzOltYZSxYdCxtbixObV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZsZXg6bm9uZTtoZWlnaHQ6NDJweDttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDAsMCwwLC4xNSl9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgyNTUsMjU1LDI1NSwuMTUpfW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5ncm91cC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6YmFzZWxpbmU7Z2FwOjZweH0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjF9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7Zm9udC1zaXplOjEzcHg7Zm9udC1zdHlsZTppdGFsaWM7cGFkZGluZzoxNnB4O3RleHQtYWxpZ246Y2VudGVyfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfS5uZXctY2FyZC1waW5uZWRbX25nY29udGVudC0lQ09NUCVde2FuaW1hdGlvbjpwaW5uZWQtdmlldy1mYWRlLW91dCAzcyBsaW5lYXI7YmFja2dyb3VuZDojZjQ0MzM2O2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7ZGlzcGxheTppbmxpbmUtYmxvY2s7Zm9udC1zaXplOjEzcHg7b3BhY2l0eTowO3BhZGRpbmc6M3B4IDVweH1Aa2V5ZnJhbWVzIHBpbm5lZC12aWV3LWZhZGUtb3V0e2Zyb217b3BhY2l0eToxfTY2JXtvcGFjaXR5Oi45OX10b3tvcGFjaXR5OjB9fSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEowLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1waW5uZWQtdmlldy1jb21wb25lbnQiLHRlbXBsYXRlOmAKICAgIDxkaXYgY2xhc3M9Imdyb3VwLXRvb2xiYXIiPgogICAgICA8bWF0LWljb24gc3ZnSWNvbj0ia2VlcF8yNHB4Ij48L21hdC1pY29uPgogICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGV4dCI+CiAgICAgICAgPHNwYW4gY2xhc3M9Imdyb3VwLXRpdGxlIiBhcmlhLXJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiCiAgICAgICAgICA+UGlubmVkPC9zcGFuCiAgICAgICAgPgogICAgICAgIDxzcGFuICpuZ0lmPSJjYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCA+IDEiIGNsYXNzPSJncm91cC1jYXJkLWNvdW50IgogICAgICAgICAgPnt7IGNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoIH19IGNhcmRzPC9zcGFuCiAgICAgICAgPgogICAgICAgIDxzcGFuCiAgICAgICAgICAqbmdGb3I9ImxldCBpZCBvZiBuZXdDYXJkUGlubmVkSWRzIgogICAgICAgICAgW2F0dHIuZGF0YS1pZF09ImlkIgogICAgICAgICAgY2xhc3M9Im5ldy1jYXJkLXBpbm5lZCIKICAgICAgICAgID5OZXcgY2FyZCBwaW5uZWQ8L3NwYW4KICAgICAgICA+CiAgICAgIDwvc3Bhbj4KICAgIDwvZGl2PgogICAgPG1ldHJpY3MtY2FyZC1ncmlkCiAgICAgICpuZ0lmPSJjYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aDsgZWxzZSBlbXB0eVBpbm5lZFZpZXciCiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iY2FyZElkc1dpdGhNZXRhZGF0YSIKICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciIKICAgID48L21ldHJpY3MtY2FyZC1ncmlkPgogICAgPG5nLXRlbXBsYXRlICNlbXB0eVBpbm5lZFZpZXc+CiAgICAgIDxkaXYgY2xhc3M9ImVtcHR5LW1lc3NhZ2UiPlBpbiBjYXJkcyBmb3IgYSBxdWljayB2aWV3IGFuZCBjb21wYXJpc29uPC9kaXY+CiAgICA8L25nLXRlbXBsYXRlPgogIGAsc3R5bGVVcmxzOlsicGlubmVkX3ZpZXdfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2NhcmRPYnNlcnZlcjpbe3R5cGU6ZH1dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOmR9XSxuZXdDYXJkUGlubmVkSWRzOlt7dHlwZTpkfV19KX0pKCk7dmFyICQwPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmNhcmRJZHNXaXRoTWV0YWRhdGEkPXRoaXMuc3RvcmUuc2VsZWN0KExFKS5waXBlKFNvKFtdKSksdGhpcy5uZXdDYXJkUGlubmVkSWRzJD10aGlzLnN0b3JlLnNlbGVjdChMRSkucGlwZShWQygxKSxHKGU9PmUubWFwKG89Pm8uY2FyZElkKSksc3coKSxHKChbZSxvXSk9PntsZXQgaT1uZXcgU2V0KGUpLGE9bmV3IFNldChvKTtmb3IobGV0IHIgb2YgYSlpZighaS5oYXMocikpcmV0dXJuIERhdGUubm93KCk7cmV0dXJuIG51bGx9KSxTbyhudWxsKSxzdygpLEcoKFtlLG9dKT0+ZT09PW51bGwmJm89PT1udWxsP251bGw6bz09PW51bGw/W2VdOltvXSksdWUoZT0+ZSE9PW51bGwpLEcoZT0+W2VbMF1dKSl9fTskMC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHwkMCkodihzdCkpfTskMC5cdTAyNzVjbXA9eih7dHlwZTokMCxzZWxlY3RvcnM6W1sibWV0cmljcy1waW5uZWQtdmlldyJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsIm5ld0NhcmRQaW5uZWRJZHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsIm1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpKSx0JjImJlAoImNhcmRJZHNXaXRoTWV0YWRhdGEiLFEoMSwzLGUuY2FyZElkc1dpdGhNZXRhZGF0YSQpKSgibmV3Q2FyZFBpbm5lZElkcyIsUSgyLDUsZS5uZXdDYXJkUGlubmVkSWRzJCkpKCJjYXJkT2JzZXJ2ZXIiLGUuY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbSjBdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKCQwLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1waW5uZWQtdmlldyIsdGVtcGxhdGU6YAogICAgPG1ldHJpY3MtcGlubmVkLXZpZXctY29tcG9uZW50CiAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iY2FyZElkc1dpdGhNZXRhZGF0YSQgfCBhc3luYyIKICAgICAgW25ld0NhcmRQaW5uZWRJZHNdPSJuZXdDYXJkUGlubmVkSWRzJCB8IGFzeW5jIgogICAgICBbY2FyZE9ic2VydmVyXT0iY2FyZE9ic2VydmVyIgogICAgPjwvbWV0cmljcy1waW5uZWQtdmlldy1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSx7Y2FyZE9ic2VydmVyOlt7dHlwZTpkfV19KX0pKCk7dmFyIHZxdD1jdChIRCxMciwobix0KT0+bi5maWx0ZXIoZT0+VmcoZS5wbHVnaW4pP0Jvb2xlYW4odCYmdC5nZXQoZS5ydW5JZCkpOiEwKSksWTE9Y3QodnF0LG49Pm4uc29ydCgodCxlKT0+VmsodC50YWcsZS50YWcpKSk7ZnVuY3Rpb24gd3F0KG4sdCl7aWYobiYxJiYodSgwLCJzcGFuIiw3KSxUKDEpLFgoMiwibnVtYmVyIiksaCgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLGxlKCIiLFEoMiwxLGUubnVtYmVyT2ZDYXJkcyksIiBjYXJkcyIpfX1mdW5jdGlvbiBTcXQobix0KXtuJjEmJkQoMCwibWF0LWljb24iLDgpfWZ1bmN0aW9uIFJxdChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsOSl9dmFyIHRDPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5ncm91cEV4cGFuc2lvblRvZ2dsZWQ9bmV3ICR9fTt0Qy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx0Qyl9O3RDLlx1MDI3NWNtcD16KHt0eXBlOnRDLHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhci1jb21wb25lbnQiXV0saW5wdXRzOntncm91cE5hbWU6Imdyb3VwTmFtZSIsbnVtYmVyT2ZDYXJkczoibnVtYmVyT2ZDYXJkcyIsaXNHcm91cEV4cGFuZGVkOiJpc0dyb3VwRXhwYW5kZWQifSxvdXRwdXRzOntncm91cEV4cGFuc2lvblRvZ2dsZWQ6Imdyb3VwRXhwYW5zaW9uVG9nZ2xlZCJ9LGRlY2xzOjksdmFyczo1LGNvbnN0czpmdW5jdGlvbigpe2xldCBuO3JldHVybiB0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9uPWdvb2cuZ2V0TXNnKCJFeHBhbmQgZ3JvdXAiKTpuPSRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCBhbGxvd3MgdXNlciB0byBleHBhbmQgYSB0YWcgZ3JvdXAu4pCfZmZhYTExNDcxYjg3OGE2ZGZmZTJlNjhjNmYzNzA2NGE5ZTA3NDg1M+KQnzUzODYwNTQzMjUyNzQ3NzkyNTg6RXhwYW5kIGdyb3VwYCxbWyJhcmlhLWxhYmVsIixuLDEsImdyb3VwLXRvb2xiYXIiLDMsImNsaWNrIl0sWzEsImdyb3VwLXRpdGxlLXdyYXBwZXIiXSxbImFyaWEtcm9sZSIsImhlYWRpbmciLCJhcmlhLWxldmVsIiwiMyIsMSwiZ3JvdXAtdGl0bGUiLDMsInRpdGxlIl0sWyJjbGFzcyIsImdyb3VwLWNhcmQtY291bnQiLDQsIm5nSWYiXSxbMSwiZXhwYW5kLWdyb3VwLWljb24iXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4Iiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImV4cGFuZE1vcmUiLCIiXSxbMSwiZ3JvdXAtY2FyZC1jb3VudCJdLFsic3ZnSWNvbiIsImV4cGFuZF9sZXNzXzI0cHgiXSxbInN2Z0ljb24iLCJleHBhbmRfbW9yZV8yNHB4Il1dfSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHUoMCwiYnV0dG9uIiwwKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5ncm91cEV4cGFuc2lvblRvZ2dsZWQuZW1pdCgpfSksdSgxLCJzcGFuIiwxKSx1KDIsInNwYW4iLDIpLFQoMyksaCgpLGsoNCx3cXQsMywzLCJzcGFuIiwzKSxoKCksdSg1LCJzcGFuIiw0KSxrKDYsU3F0LDEsMCwibWF0LWljb24iLDUpLGsoNyxScXQsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LHhuKSxoKCksaCgpKSx0JjIpe2xldCBvPXdlKDgpO3goMiksV2koInRpdGxlIixlLmdyb3VwTmFtZSkseCgxKSxJZShlLmdyb3VwTmFtZSkseCgxKSxQKCJuZ0lmIixlLm51bWJlck9mQ2FyZHM+MSkseCgyKSxQKCJuZ0lmIixlLmlzR3JvdXBFeHBhbmRlZCkoIm5nSWZFbHNlIixvKX19LGRpcmVjdGl2ZXM6W1h0LFhlXSxwaXBlczpbWGFdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2Rpc3BsYXk6ZmxleDtmbGV4Om5vbmU7aGVpZ2h0OjQycHg7bWFyZ2luLWJvdHRvbTotMXB4O3BhZGRpbmc6MCAxNnB4O3Bvc2l0aW9uOnN0aWNreTt0b3A6MDt6LWluZGV4OjE7Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgwLDAsMCwuMTUpfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMzMDMwMzB9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMjU1LDI1NSwyNTUsLjE1KX1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7Y29sb3I6IzIxMjEyMTt0b3A6LTFweDtkaXNwbGF5OmZsZXg7d2lkdGg6MTAwJTtmb250OmluaGVyaXR9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICM1NTV9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9LmNhcmQtZ3JvdXA6Zmlyc3Qtb2YtdHlwZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDowfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7Y3Vyc29yOnBvaW50ZXJ9LmV4cGFuZC1ncm91cC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9LmV4cGFuZC1ncm91cC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZHtjb2xvcjojNzU3NTc1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5leHBhbmQtZ3JvdXAtaWNvbltfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWR7Y29sb3I6IzYxNjE2MX0uZ3JvdXAtdGl0bGUtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZmxleC1ncm93OjE7dGV4dC1hbGlnbjpsZWZ0fS5ncm91cC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo0MDA7Y29sb3I6IzYxNjE2MTttYXJnaW4tbGVmdDo2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModEMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhci1jb21wb25lbnQiLHRlbXBsYXRlOmAKICAgIDxidXR0b24KICAgICAgY2xhc3M9Imdyb3VwLXRvb2xiYXIiCiAgICAgIGkxOG4tYXJpYS1sYWJlbD0iQSBidXR0b24gdGhhdCBhbGxvd3MgdXNlciB0byBleHBhbmQgYSB0YWcgZ3JvdXAuIgogICAgICBhcmlhLWxhYmVsPSJFeHBhbmQgZ3JvdXAiCiAgICAgIChjbGljayk9Imdyb3VwRXhwYW5zaW9uVG9nZ2xlZC5lbWl0KCkiCiAgICA+CiAgICAgIDxzcGFuIGNsYXNzPSJncm91cC10aXRsZS13cmFwcGVyIj4KICAgICAgICA8c3BhbgogICAgICAgICAgY2xhc3M9Imdyb3VwLXRpdGxlIgogICAgICAgICAgYXJpYS1yb2xlPSJoZWFkaW5nIgogICAgICAgICAgYXJpYS1sZXZlbD0iMyIKICAgICAgICAgIHRpdGxlPSJ7eyBncm91cE5hbWUgfX0iCiAgICAgICAgICA+e3sgZ3JvdXBOYW1lIH19PC9zcGFuCiAgICAgICAgPgogICAgICAgIDxzcGFuICpuZ0lmPSJudW1iZXJPZkNhcmRzID4gMSIgY2xhc3M9Imdyb3VwLWNhcmQtY291bnQiCiAgICAgICAgICA+e3sgbnVtYmVyT2ZDYXJkcyB8IG51bWJlciB9fSBjYXJkczwvc3BhbgogICAgICAgID4KICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iZXhwYW5kLWdyb3VwLWljb24iPgogICAgICAgIDxtYXQtaWNvbgogICAgICAgICAgKm5nSWY9ImlzR3JvdXBFeHBhbmRlZDsgZWxzZSBleHBhbmRNb3JlIgogICAgICAgICAgc3ZnSWNvbj0iZXhwYW5kX2xlc3NfMjRweCIKICAgICAgICA+PC9tYXQtaWNvbj4KICAgICAgICA8bmctdGVtcGxhdGUgI2V4cGFuZE1vcmU+CiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj0iZXhwYW5kX21vcmVfMjRweCI+PC9tYXQtaWNvbj4KICAgICAgICA8L25nLXRlbXBsYXRlPgogICAgICA8L3NwYW4+CiAgICA8L2J1dHRvbj4KICBgLHN0eWxlVXJsczpbImNhcmRfZ3JvdXBfdG9vbGJhcl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7Z3JvdXBOYW1lOlt7dHlwZTpkfV0sbnVtYmVyT2ZDYXJkczpbe3R5cGU6ZH1dLGlzR3JvdXBFeHBhbmRlZDpbe3R5cGU6ZH1dLGdyb3VwRXhwYW5zaW9uVG9nZ2xlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBlQz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5ncm91cE5hbWU9bnVsbCx0aGlzLmlzR3JvdXBFeHBhbmRlZCQ9ZG4oITEpfW5nT25Jbml0KCl7dGhpcy5pc0dyb3VwRXhwYW5kZWQkPXRoaXMuZ3JvdXBOYW1lIT09bnVsbD90aGlzLnN0b3JlLnNlbGVjdChVRCx0aGlzLmdyb3VwTmFtZSk6ZG4oITEpfW9uR3JvdXBFeHBhbnNpb25Ub2dnbGVkKCl7aWYodGhpcy5ncm91cE5hbWU9PT1udWxsKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IGV4cGFuc2lvbiBjYW5ub3QgYmUgdG9nZ2xlZCB3aGVuIGdyb3VwTmFtZSBpcyBudWxsIik7dGhpcy5zdG9yZS5kaXNwYXRjaChHeih7dGFnR3JvdXA6dGhpcy5ncm91cE5hbWV9KSl9fTtlQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxlQykodihzdCkpfTtlQy5cdTAyNzVjbXA9eih7dHlwZTplQyxzZWxlY3RvcnM6W1sibWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXIiXV0saW5wdXRzOntncm91cE5hbWU6Imdyb3VwTmFtZSIsbnVtYmVyT2ZDYXJkczoibnVtYmVyT2ZDYXJkcyJ9LGRlY2xzOjIsdmFyczo1LGNvbnN0czpbWzMsIm51bWJlck9mQ2FyZHMiLCJpc0dyb3VwRXhwYW5kZWQiLCJncm91cE5hbWUiLCJncm91cEV4cGFuc2lvblRvZ2dsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsIm1ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyLWNvbXBvbmVudCIsMCksQSgiZ3JvdXBFeHBhbnNpb25Ub2dnbGVkIixmdW5jdGlvbigpe3JldHVybiBlLm9uR3JvdXBFeHBhbnNpb25Ub2dnbGVkKCl9KSxYKDEsImFzeW5jIiksaCgpKSx0JjImJlAoIm51bWJlck9mQ2FyZHMiLGUubnVtYmVyT2ZDYXJkcykoImlzR3JvdXBFeHBhbmRlZCIsUSgxLDMsZS5pc0dyb3VwRXhwYW5kZWQkKSkoImdyb3VwTmFtZSIsZS5ncm91cE5hbWUpfSxkaXJlY3RpdmVzOlt0Q10scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZUMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhciIsdGVtcGxhdGU6YAogICAgPG1ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyLWNvbXBvbmVudAogICAgICBbbnVtYmVyT2ZDYXJkc109Im51bWJlck9mQ2FyZHMiCiAgICAgIFtpc0dyb3VwRXhwYW5kZWRdPSJpc0dyb3VwRXhwYW5kZWQkIHwgYXN5bmMiCiAgICAgIFtncm91cE5hbWVdPSJncm91cE5hbWUiCiAgICAgIChncm91cEV4cGFuc2lvblRvZ2dsZWQpPSJvbkdyb3VwRXhwYW5zaW9uVG9nZ2xlZCgpIgogICAgPjwvbWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXItY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se2dyb3VwTmFtZTpbe3R5cGU6ZH1dLG51bWJlck9mQ2FyZHM6W3t0eXBlOmR9XX0pfSkoKTtmdW5jdGlvbiBOcXQobix0KXtpZihuJjEmJih1KDAsImRpdiIsMSksRCgxLCJtZXRyaWNzLWNhcmQtZ3JvdXAtdG9vbGJhciIsMiksRCgyLCJtZXRyaWNzLWNhcmQtZ3JpZCIsMyksaCgpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygpO3goMSksUCgibnVtYmVyT2ZDYXJkcyIsZS5pdGVtcy5sZW5ndGgpKCJncm91cE5hbWUiLGUuZ3JvdXBOYW1lKSx4KDEpLFAoImNhcmRJZHNXaXRoTWV0YWRhdGEiLGUuaXRlbXMpKCJjYXJkT2JzZXJ2ZXIiLG8uY2FyZE9ic2VydmVyKSgiZ3JvdXBOYW1lIixlLmdyb3VwTmFtZSl9fXZhciBuQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuUGx1Z2luVHlwZT1Mb310cmFja0J5R3JvdXAodCxlKXtyZXR1cm4gZS5ncm91cE5hbWV9fTtuQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxuQyl9O25DLlx1MDI3NWNtcD16KHt0eXBlOm5DLHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudCJdXSxpbnB1dHM6e2NhcmRHcm91cHM6ImNhcmRHcm91cHMiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZGVjbHM6MSx2YXJzOjIsY29uc3RzOltbImNsYXNzIiwiY2FyZC1ncm91cCIsNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzEsImNhcmQtZ3JvdXAiXSxbMywibnVtYmVyT2ZDYXJkcyIsImdyb3VwTmFtZSJdLFszLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIiwiZ3JvdXBOYW1lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiZrKDAsTnF0LDMsNSwiZGl2IiwwKSx0JjImJlAoIm5nRm9yT2YiLGUuY2FyZEdyb3VwcykoIm5nRm9yVHJhY2tCeSIsZS50cmFja0J5R3JvdXApfSxkaXJlY3RpdmVzOlttbixlQyxObV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7ZGlzcGxheTpmbGV4O2ZsZXg6bm9uZTtoZWlnaHQ6NDJweDttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZzowIDE2cHg7cG9zaXRpb246c3RpY2t5O3RvcDowO3otaW5kZXg6MTtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDAsMCwwLC4xNSl9Ym9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzMwMzAzMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAwcHggcmdiYSgyNTUsMjU1LDI1NSwuMTUpfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5DLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1jYXJkLWdyb3Vwcy1jb21wb25lbnQiLHRlbXBsYXRlOmAKICAgIDxkaXYKICAgICAgKm5nRm9yPSJsZXQgZ3JvdXAgb2YgY2FyZEdyb3VwczsgdHJhY2tCeTogdHJhY2tCeUdyb3VwIgogICAgICBjbGFzcz0iY2FyZC1ncm91cCIKICAgID4KICAgICAgPG1ldHJpY3MtY2FyZC1ncm91cC10b29sYmFyCiAgICAgICAgW251bWJlck9mQ2FyZHNdPSJncm91cC5pdGVtcy5sZW5ndGgiCiAgICAgICAgW2dyb3VwTmFtZV09Imdyb3VwLmdyb3VwTmFtZSIKICAgICAgPjwvbWV0cmljcy1jYXJkLWdyb3VwLXRvb2xiYXI+CiAgICAgIDxtZXRyaWNzLWNhcmQtZ3JpZAogICAgICAgIFtjYXJkSWRzV2l0aE1ldGFkYXRhXT0iZ3JvdXAuaXRlbXMiCiAgICAgICAgW2NhcmRPYnNlcnZlcl09ImNhcmRPYnNlcnZlciIKICAgICAgICBbZ3JvdXBOYW1lXT0iZ3JvdXAuZ3JvdXBOYW1lIgogICAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD4KICAgIDwvZGl2PgogIGAsc3R5bGVVcmxzOlsiY2FyZF9ncm91cHNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2NhcmRHcm91cHM6W3t0eXBlOmR9XSxjYXJkT2JzZXJ2ZXI6W3t0eXBlOmR9XX0pfSkoKTt2YXIgb0M9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuY2FyZEdyb3VwcyQ9dGhpcy5zdG9yZS5zZWxlY3QoWTEpLnBpcGUoUGEodGhpcy5zdG9yZS5zZWxlY3QoJGIpKSxHKChbZSxvXSk9Pm8uc2l6ZT9lLmZpbHRlcihpPT5vLmhhcyhpLnBsdWdpbikpOmUpLEcoZT0+UXooZSkpKX19O29DLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9DKSh2KHN0KSl9O29DLlx1MDI3NWNtcD16KHt0eXBlOm9DLHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JvdXBzIl1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczoyLHZhcnM6NCxjb25zdHM6W1szLCJjYXJkR3JvdXBzIiwiY2FyZE9ic2VydmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJtZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudCIsMCksWCgxLCJhc3luYyIpKSx0JjImJlAoImNhcmRHcm91cHMiLFEoMSwyLGUuY2FyZEdyb3VwcyQpKSgiY2FyZE9ic2VydmVyIixlLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W25DXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhvQyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtY2FyZC1ncm91cHMiLHRlbXBsYXRlOmAKICAgIDxtZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudAogICAgICBbY2FyZEdyb3Vwc109ImNhcmRHcm91cHMkIHwgYXN5bmMiCiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiCiAgICA+PC9tZXRyaWNzLWNhcmQtZ3JvdXBzLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LHtjYXJkT2JzZXJ2ZXI6W3t0eXBlOmR9XX0pfSkoKTtmdW5jdGlvbiBEcXQobix0KXtpZihuJjEmJih1KDAsInNwYW4iKSxUKDEpLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgxKSxsZSgiIGFuZCAiLGUuZ2V0UGx1Z2luVHlwZUZpbHRlclN0cmluZyhlLnBsdWdpblR5cGVzKSwiIHZpc3VhbGl6YXRpb24gZmlsdGVyIil9fXZhciBpQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuUGx1Z2luVHlwZT1Mbyx0aGlzLmxpc3RGb3JtYXR0ZXI9bmV3IEludGwuTGlzdEZvcm1hdCh2b2lkIDAse3N0eWxlOiJsb25nIix0eXBlOiJkaXNqdW5jdGlvbiJ9KX1nZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHQpe2xldCBlPVsuLi50XS5tYXAobz0+e3N3aXRjaChvKXtjYXNlIExvLlNDQUxBUlM6cmV0dXJuInNjYWxhciI7Y2FzZSBMby5JTUFHRVM6cmV0dXJuImltYWdlIjtjYXNlIExvLkhJU1RPR1JBTVM6cmV0dXJuImhpc3RvZ3JhbSI7ZGVmYXVsdDpsZXQgaT1vO3Rocm93IG5ldyBSYW5nZUVycm9yKGBQbGVhc2UgaW1wbGVtZW50IGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHBsdWdpbiB0eXBlOiAke299YCl9fSk7cmV0dXJuIHRoaXMubGlzdEZvcm1hdHRlci5mb3JtYXQoZSl9fTtpQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxpQyl9O2lDLlx1MDI3NWNtcD16KHt0eXBlOmlDLHNlbGVjdG9yczpbWyJtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQiXV0saW5wdXRzOntwbHVnaW5UeXBlczoicGx1Z2luVHlwZXMiLHRhZ0ZpbHRlclJlZ2V4OiJ0YWdGaWx0ZXJSZWdleCIsdGFnQ291bnRzOiJ0YWdDb3VudHMifSxkZWNsczo2LHZhcnM6NSxjb25zdHM6W1s0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoVCgwLCJObyBtYXRjaGVzIGZvciB0YWcgZmlsdGVyICIpLHUoMSwiY29kZSIpLFQoMiksaCgpLGsoMyxEcXQsMiwxLCJzcGFuIiwwKSxUKDQpLFgoNSwibnVtYmVyIikpLHQmMiYmKHgoMiksbGUoIi8iLGUudGFnRmlsdGVyUmVnZXgsIi8iKSx4KDEpLFAoIm5nSWYiLGUucGx1Z2luVHlwZXMuc2l6ZSkseCgxKSxsZSgiIG91dCBvZiAiLFEoNSwzLGUudGFnQ291bnRzKSwiIHRhZ3MuIikpfSxkaXJlY3RpdmVzOltYdF0scGlwZXM6W1hhXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaUMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQiLHRlbXBsYXRlOmBObyBtYXRjaGVzIGZvciB0YWcgZmlsdGVyIDxjb2RlPi97eyB0YWdGaWx0ZXJSZWdleCB9fS88L2NvZGUKICAgID48c3BhbiAqbmdJZj0icGx1Z2luVHlwZXMuc2l6ZSI+CiAgICAgIGFuZCB7eyBnZXRQbHVnaW5UeXBlRmlsdGVyU3RyaW5nKHBsdWdpblR5cGVzKSB9fSB2aXN1YWxpemF0aW9uCiAgICAgIGZpbHRlcjwvc3BhbgogICAgPgogICAgb3V0IG9mIHt7IHRhZ0NvdW50cyB8IG51bWJlciB9fSB0YWdzLmAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7cGx1Z2luVHlwZXM6W3t0eXBlOmR9XSx0YWdGaWx0ZXJSZWdleDpbe3R5cGU6ZH1dLHRhZ0NvdW50czpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBhQz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5wbHVnaW5UeXBlcyQ9dGhpcy5zdG9yZS5zZWxlY3QoJGIpLHRoaXMudGFnRmlsdGVyUmVnZXgkPXRoaXMuc3RvcmUuc2VsZWN0KHhNKSx0aGlzLnRhZ0NvdW50cyQ9dGhpcy5zdG9yZS5zZWxlY3QoWTEpLnBpcGUoRyhlPT5uZXcgU2V0KGUubWFwKCh7dGFnOm99KT0+bykpLnNpemUpKX19O2FDLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGFDKSh2KHN0KSl9O2FDLlx1MDI3NWNtcD16KHt0eXBlOmFDLHNlbGVjdG9yczpbWyJtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaCJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJwbHVnaW5UeXBlcyIsInRhZ0ZpbHRlclJlZ2V4IiwidGFnQ291bnRzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQiLDApLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpKSx0JjImJlAoInBsdWdpblR5cGVzIixRKDEsMyxlLnBsdWdpblR5cGVzJCkpKCJ0YWdGaWx0ZXJSZWdleCIsUSgyLDUsZS50YWdGaWx0ZXJSZWdleCQpKSgidGFnQ291bnRzIixRKDMsNyxlLnRhZ0NvdW50cyQpKX0sZGlyZWN0aXZlczpbaUNdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGFDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1lbXB0eS10YWctbWF0Y2giLHRlbXBsYXRlOmAKICAgIDxtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaC1jb21wb25lbnQKICAgICAgW3BsdWdpblR5cGVzXT0icGx1Z2luVHlwZXMkIHwgYXN5bmMiCiAgICAgIFt0YWdGaWx0ZXJSZWdleF09InRhZ0ZpbHRlclJlZ2V4JCB8IGFzeW5jIgogICAgICBbdGFnQ291bnRzXT0idGFnQ291bnRzJCB8IGFzeW5jIgogICAgPjwvbWV0cmljcy1lbXB0eS10YWctbWF0Y2gtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIEhxdChuLHQpe2lmKG4mMSYmKHUoMCwic3BhbiIsNiksVCgxKSxYKDIsIm51bWJlciIpLGgoKSksbiYyKXtsZXQgZT1TKCk7eCgxKSxsZSgiIixRKDIsMSxlLmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoKSwiIGNhcmRzIil9fWZ1bmN0aW9uIEZxdChuLHQpe24mMSYmRCgwLCJtZXRyaWNzLWVtcHR5LXRhZy1tYXRjaCIsNyl9dmFyIHJDPWNsYXNze307ckMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ckMpfTtyQy5cdTAyNzVjbXA9eih7dHlwZTpyQyxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e2lzRW1wdHlNYXRjaDoiaXNFbXB0eU1hdGNoIixjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIndhcm4iLDQsIm5nSWYiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJncm91cC1jYXJkLWNvdW50Il0sWzEsIndhcm4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksdSgxLCJzcGFuIiwxKSx1KDIsInNwYW4iLDIpLFQoMywiVGFncyBtYXRjaGluZyBmaWx0ZXIiKSxoKCksayg0LEhxdCwzLDMsInNwYW4iLDMpLGgoKSxoKCksayg1LEZxdCwxLDAsIm1ldHJpY3MtZW1wdHktdGFnLW1hdGNoIiw0KSxEKDYsIm1ldHJpY3MtY2FyZC1ncmlkIiw1KSksdCYyJiYoeCg0KSxQKCJuZ0lmIixlLmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoPjEpLHgoMSksUCgibmdJZiIsZS5pc0VtcHR5TWF0Y2gpLHgoMSksUCgiY2FyZElkc1dpdGhNZXRhZGF0YSIsZS5jYXJkSWRzV2l0aE1ldGFkYXRhKSgiY2FyZE9ic2VydmVyIixlLmNhcmRPYnNlcnZlcikpfSxkaXJlY3RpdmVzOltYdCxObSxhQ10scGlwZXM6W1hhXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmZsZXg7ZmxleDpub25lO2hlaWdodDo0MnB4O21hcmdpbi1ib3R0b206LTFweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpzdGlja3k7dG9wOjA7ei1pbmRleDoxO2JveC1zaGFkb3c6MHB4IDJweCA0cHggMHB4IHJnYmEoMCwwLDAsLjE1KX1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IDBweCByZ2JhKDI1NSwyNTUsMjU1LC4xNSl9Lmdyb3VwLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZX0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjE7bWFyZ2luLWxlZnQ6NnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfW1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtc3R5bGU6aXRhbGljO3BhZGRpbmc6MTZweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmJsb2NrfWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG1ldHJpY3MtZW1wdHktdGFnLW1hdGNoW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgbWV0cmljcy1lbXB0eS10YWctbWF0Y2hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHJDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCIsdGVtcGxhdGU6YAogICAgPGRpdiBjbGFzcz0iZ3JvdXAtdG9vbGJhciI+CiAgICAgIDxzcGFuIGNsYXNzPSJncm91cC10ZXh0Ij4KICAgICAgICA8c3BhbiBjbGFzcz0iZ3JvdXAtdGl0bGUiIGFyaWEtcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMyIKICAgICAgICAgID5UYWdzIG1hdGNoaW5nIGZpbHRlcjwvc3BhbgogICAgICAgID4KICAgICAgICA8c3BhbiAqbmdJZj0iY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGggPiAxIiBjbGFzcz0iZ3JvdXAtY2FyZC1jb3VudCIKICAgICAgICAgID57eyBjYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCB8IG51bWJlciB9fSBjYXJkczwvc3BhbgogICAgICAgID4KICAgICAgPC9zcGFuPgogICAgPC9kaXY+CiAgICA8bWV0cmljcy1lbXB0eS10YWctbWF0Y2gKICAgICAgKm5nSWY9ImlzRW1wdHlNYXRjaCIKICAgICAgY2xhc3M9Indhcm4iCiAgICA+PC9tZXRyaWNzLWVtcHR5LXRhZy1tYXRjaD4KICAgIDxtZXRyaWNzLWNhcmQtZ3JpZAogICAgICBbY2FyZElkc1dpdGhNZXRhZGF0YV09ImNhcmRJZHNXaXRoTWV0YWRhdGEiCiAgICAgIFtjYXJkT2JzZXJ2ZXJdPSJjYXJkT2JzZXJ2ZXIiCiAgICA+PC9tZXRyaWNzLWNhcmQtZ3JpZD4KICBgLHN0eWxlVXJsczpbImZpbHRlcmVkX3ZpZXdfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse2lzRW1wdHlNYXRjaDpbe3R5cGU6ZH1dLGNhcmRPYnNlcnZlcjpbe3R5cGU6ZH1dLGNhcmRJZHNXaXRoTWV0YWRhdGE6W3t0eXBlOmR9XX0pfSkoKTt2YXIgQnF0PTIwMCxzQz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jYXJkSWRzV2l0aE1ldGFkYXRhJD10aGlzLnN0b3JlLnNlbGVjdChZMSkucGlwZShQYSh0aGlzLnN0b3JlLnNlbGVjdCgkYikpLEcoKFtlLG9dKT0+by5zaXplP2UuZmlsdGVyKGk9Pm8uaGFzKGkucGx1Z2luKSk6ZSksUGEodGhpcy5zdG9yZS5zZWxlY3QoeE0pKSxscihCcXQpLEcoKFtlLG9dKT0+e3RyeXtyZXR1cm57Y2FyZExpc3Q6ZSxyZWdleDpuZXcgUmVnRXhwKG8sImkiKX19Y2F0Y2goaSl7cmV0dXJue2NhcmRMaXN0OmUscmVnZXg6bnVsbH19fSksdWUoKHtyZWdleDplfSk9PmUhPT1udWxsKSxHKCh7Y2FyZExpc3Q6ZSxyZWdleDpvfSk9PmUuZmlsdGVyKCh7dGFnOml9KT0+by50ZXN0KGkpKSksWG8oKGUsbyk9PmUubGVuZ3RoIT09by5sZW5ndGg/ITE6ZS5ldmVyeSgoaSxhKT0+aS5jYXJkSWQ9PT1vW2FdLmNhcmRJZCkpLEJjKCksU28oW10pKSx0aGlzLmlzRW1wdHlNYXRjaCQ9dGhpcy5jYXJkSWRzV2l0aE1ldGFkYXRhJC5waXBlKFBhKHRoaXMuc3RvcmUuc2VsZWN0KFkxKSksRygoW2Usb10pPT5Cb29sZWFuKG8ubGVuZ3RoKSYmZS5sZW5ndGg9PT0wKSl9fTtzQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxzQykodihzdCkpfTtzQy5cdTAyNzVjbXA9eih7dHlwZTpzQyxzZWxlY3RvcnM6W1sibWV0cmljcy1maWx0ZXJlZC12aWV3Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczozLHZhcnM6Nyxjb25zdHM6W1szLCJpc0VtcHR5TWF0Y2giLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpKSx0JjImJlAoImlzRW1wdHlNYXRjaCIsUSgxLDMsZS5pc0VtcHR5TWF0Y2gkKSkoImNhcmRJZHNXaXRoTWV0YWRhdGEiLFEoMiw1LGUuY2FyZElkc1dpdGhNZXRhZGF0YSQpKSgiY2FyZE9ic2VydmVyIixlLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W3JDXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhzQyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZmlsdGVyZWQtdmlldyIsdGVtcGxhdGU6YAogICAgPG1ldHJpY3MtZmlsdGVyZWQtdmlldy1jb21wb25lbnQKICAgICAgW2lzRW1wdHlNYXRjaF09ImlzRW1wdHlNYXRjaCQgfCBhc3luYyIKICAgICAgW2NhcmRJZHNXaXRoTWV0YWRhdGFdPSJjYXJkSWRzV2l0aE1ldGFkYXRhJCB8IGFzeW5jIgogICAgICBbY2FyZE9ic2VydmVyXT0iY2FyZE9ic2VydmVyIgogICAgPjwvbWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LHtjYXJkT2JzZXJ2ZXI6W3t0eXBlOmR9XX0pfSkoKTtmdW5jdGlvbiBqcXQobix0KXtpZihuJjEmJih1KDAsImIiKSxUKDEpLGgoKSksbiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0O3goMSksbGUoIiIsZS5kaXNwbGF5QWxpYXMsIjoiKX19ZnVuY3Rpb24gVXF0KG4sdCl7aWYobiYxJiYodSgwLCJtYXQtb3B0aW9uIiwyKSx1KDEsInNwYW4iLDMpLGsoMixqcXQsMiwxLCJiIiw0KSxUKDMpLGgoKSxoKCkpLG4mMil7bGV0IGU9dC4kaW1wbGljaXQ7UCgidmFsdWUiLGUudmFsdWUpKCJkaXNhYmxlZCIsZS5kaXNhYmxlZCkseCgxKSxCVCgidGl0bGUiLCIiLGUuZGlzcGxheUFsaWFzLCI6ICIsZS5kaXNwbGF5VGV4dCwiIikseCgxKSxQKCJuZ0lmIixlLmRpc3BsYXlBbGlhcykseCgxKSxsZSgiICIsZS5kaXNwbGF5VGV4dCwiICIpfX12YXIgVmQ9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlPSIiLHRoaXMub3B0aW9ucz1bXSx0aGlzLnNlbGVjdGlvbkNoYW5nZT1uZXcgJH19O1ZkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFZkKX07VmQuXHUwMjc1Y21wPXooe3R5cGU6VmQsc2VsZWN0b3JzOltbInRiLWRyb3Bkb3duIl1dLGlucHV0czp7dmFsdWU6InZhbHVlIixvcHRpb25zOiJvcHRpb25zIn0sb3V0cHV0czp7c2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25DaGFuZ2UifSxkZWNsczoyLHZhcnM6Mixjb25zdHM6W1szLCJ2YWx1ZSIsInNlbGVjdGlvbkNoYW5nZSJdLFszLCJ2YWx1ZSIsImRpc2FibGVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywidmFsdWUiLCJkaXNhYmxlZCJdLFsxLCJvcHRpb24tY29udGVudCIsMywidGl0bGUiXSxbNCwibmdJZiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwibWF0LXNlbGVjdCIsMCksQSgic2VsZWN0aW9uQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5zZWxlY3Rpb25DaGFuZ2UuZW1pdChpLnZhbHVlKX0pLGsoMSxVcXQsNCw2LCJtYXQtb3B0aW9uIiwxKSxoKCkpLHQmMiYmKFAoInZhbHVlIixlLnZhbHVlKSx4KDEpLFAoIm5nRm9yT2YiLGUub3B0aW9ucykpfSxkaXJlY3RpdmVzOltlcixtbixJaSxYdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM4ZTk4YTM7Ym9yZGVyLXJhZGl1czozcHg7Ym94LXNpemluZzpib3JkZXItYm94O3BhZGRpbmc6NnB4fW1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdOmZvY3Vze291dGxpbmUtY29sb3I6LXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yO291dGxpbmUtc3R5bGU6YXV0b30gIC5tYXQtc2VsZWN0LXBhbmVse21heC13aWR0aDo3MHZ3fSAgbWF0LW9wdGlvbi5tYXQtb3B0aW9ue2hlaWdodDphdXRvfSAgLm1hdC1vcHRpb24tdGV4dHt3aGl0ZS1zcGFjZTpub3JtYWw7d29yZC1icmVhazpicmVhay1hbGx9Lm9wdGlvbi1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXB9J119KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVmQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJ0Yi1kcm9wZG93biIsdGVtcGxhdGU6YAogICAgPG1hdC1zZWxlY3QKICAgICAgW3ZhbHVlXT0idmFsdWUiCiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPSJzZWxlY3Rpb25DaGFuZ2UuZW1pdCgkZXZlbnQudmFsdWUpIgogICAgPgogICAgICA8bWF0LW9wdGlvbgogICAgICAgICpuZ0Zvcj0ibGV0IG9wdGlvbiBvZiBvcHRpb25zIgogICAgICAgIFt2YWx1ZV09Im9wdGlvbi52YWx1ZSIKICAgICAgICBbZGlzYWJsZWRdPSJvcHRpb24uZGlzYWJsZWQiCiAgICAgID4KICAgICAgICA8c3BhbgogICAgICAgICAgY2xhc3M9Im9wdGlvbi1jb250ZW50IgogICAgICAgICAgdGl0bGU9Int7IG9wdGlvbi5kaXNwbGF5QWxpYXMgfX06IHt7IG9wdGlvbi5kaXNwbGF5VGV4dCB9fSIKICAgICAgICA+CiAgICAgICAgICA8YiAqbmdJZj0ib3B0aW9uLmRpc3BsYXlBbGlhcyI+e3sgb3B0aW9uLmRpc3BsYXlBbGlhcyB9fTo8L2I+CiAgICAgICAgICB7eyBvcHRpb24uZGlzcGxheVRleHQgfX0KICAgICAgICA8L3NwYW4+CiAgICAgIDwvbWF0LW9wdGlvbj4KICAgIDwvbWF0LXNlbGVjdD4KICBgLHN0eWxlVXJsczpbImRyb3Bkb3duX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCx7dmFsdWU6W3t0eXBlOmR9XSxvcHRpb25zOlt7dHlwZTpkfV0sc2VsZWN0aW9uQ2hhbmdlOlt7dHlwZTpCfV19KX0pKCk7ZnVuY3Rpb24gR3F0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2IiwzMSksdSgxLCJtYXQtY2hlY2tib3giLDI3KSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoMikucmFuZ2VTZWxlY3Rpb25Ub2dnbGVkLmVtaXQoKX0pLFQoMiwiRW5hYmxlIFJhbmdlIFNlbGVjdGlvbiAiKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygyKTt4KDEpLFAoImNoZWNrZWQiLGUuaXNTY2FsYXJTdGVwU2VsZWN0b3JSYW5nZUVuYWJsZWQpKCJkaXNhYmxlZCIsIWUuaXNBeGlzVHlwZVN0ZXAoKSl9fWZ1bmN0aW9uIFdxdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMzIpLHUoMSwibWF0LWNoZWNrYm94IiwyNyksQSgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKDIpLmxpbmtlZFRpbWVUb2dnbGVkLmVtaXQoKX0pLFQoMiksaCgpLGgoKX1pZihuJjIpe2xldCBlPVMoMik7eCgxKSxQKCJjaGVja2VkIixlLmlzTGlua2VkVGltZUVuYWJsZWQpKCJkaXNhYmxlZCIsIWUuaXNBeGlzVHlwZVN0ZXAoKSkseCgxKSxsZSgiTGluayBieSBzdGVwICIsZS5nZXRMaW5rZWRUaW1lU2VsZWN0aW9uU3RhcnRTdGVwKCksIiAiKX19ZnVuY3Rpb24gcXF0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2IiwyNiksdSgxLCJtYXQtY2hlY2tib3giLDI3KSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5zdGVwU2VsZWN0b3JUb2dnbGVkLmVtaXQoKX0pLFQoMiwiRW5hYmxlIHN0ZXAgc2VsZWN0aW9uIGFuZCBkYXRhIHRhYmxlICIpLGgoKSx1KDMsInNwYW4iLDI4KSxUKDQsIihTY2FsYXJzIG9ubHkpIiksaCgpLGsoNSxHcXQsMywyLCJkaXYiLDI5KSxrKDYsV3F0LDMsMywiZGl2IiwzMCksaCgpfWlmKG4mMil7bGV0IGU9UygpO1AoInRpdGxlIixlLmlzQXhpc1R5cGVTdGVwKCk/IiI6Ik9ubHkgYXZhaWxhYmxlIHdoZW4gSG9yaXpvbnRhbCBBeGlzIGlzIHNldCB0byBzdGVwIikseCgxKSxQKCJjaGVja2VkIixlLmlzU2NhbGFyU3RlcFNlbGVjdG9yRW5hYmxlZCkoImRpc2FibGVkIiwhZS5pc0F4aXNUeXBlU3RlcCgpKSx4KDQpLFAoIm5nSWYiLGUuaXNSYW5nZVNlbGVjdGlvbkFsbG93ZWQpLHgoMSksUCgibmdJZiIsZS5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCl9fWZ1bmN0aW9uIFpxdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsInNlY3Rpb24iLDMzKSx1KDEsImgzIiwxKSxUKDIsIkltYWdlcyIpLGgoKSx1KDMsImRpdiIsMzQpLHUoNCwiZGl2IiwzNSksVCg1LCJCcmlnaHRuZXNzIiksaCgpLHUoNiwiZGl2Iiw4KSx1KDcsIm1hdC1zbGlkZXIiLDM2KSxBKCJpbnB1dCIsZnVuY3Rpb24oaSl7cmV0dXJuIE90KGUpLFMoKS5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5lbWl0KGkudmFsdWUpfSksaCgpLHUoOCwiYnV0dG9uIiwzNyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5pbWFnZUJyaWdodG5lc3NSZXNldC5lbWl0KCl9KSxEKDksIm1hdC1pY29uIiwxMSksaCgpLGgoKSxoKCksdSgxMCwiZGl2IiwzOCksdSgxMSwiZGl2IiwzOSksVCgxMiwiQ29udHJhc3QiKSxoKCksdSgxMywiZGl2Iiw4KSx1KDE0LCJtYXQtc2xpZGVyIiw0MCksQSgiaW5wdXQiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkLmVtaXQoaS52YWx1ZSl9KSxoKCksdSgxNSwiYnV0dG9uIiw0MSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS5pbWFnZUNvbnRyYXN0UmVzZXQuZW1pdCgpfSksRCgxNiwibWF0LWljb24iLDExKSxoKCksaCgpLGgoKSx1KDE3LCJkaXYiLDQyKSx1KDE4LCJtYXQtY2hlY2tib3giLDIwKSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBPdChlKSxTKCkuaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQuZW1pdChpLmNoZWNrZWQpfSksVCgxOSwiU2hvdyBhY3R1YWwgaW1hZ2Ugc2l6ZSIpLGgoKSxoKCksaCgpfWlmKG4mMil7bGV0IGU9UygpO3goNyksUCgibWF4IiwyZTMpKCJtaW4iLDApKCJzdGVwIiwxMCkoInZhbHVlIixlLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkpKCJ0aHVtYkxhYmVsIiwhMCkoImRpc3BsYXlXaXRoIixlLmZvcm1hdE1pbGxpVG9aZXJvdGgpLHgoNyksUCgibWF4Iiw1ZTMpKCJtaW4iLDApKCJzdGVwIiwxMCkoInZhbHVlIixlLmltYWdlQ29udHJhc3RJbk1pbGxpKSgidGh1bWJMYWJlbCIsITApKCJkaXNwbGF5V2l0aCIsZS5mb3JtYXRNaWxsaVRvWmVyb3RoKSx4KDQpLFAoImNoZWNrZWQiLGUuaW1hZ2VTaG93QWN0dWFsU2l6ZSl9fXZhciBURj0yNTAsWHF0PTczNSxRcXQ9MzM1LE11dD1ORCxLcXQ9Ljk5LGxDPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMubG9jYWxlPXQsdGhpcy5saW5rZWRUaW1lVG9nZ2xlZD1uZXcgJCx0aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkPW5ldyAkLHRoaXMuc3RlcFNlbGVjdG9yVG9nZ2xlZD1uZXcgJCx0aGlzLnJhbmdlU2VsZWN0aW9uVG9nZ2xlZD1uZXcgJCx0aGlzLlRvb2x0aXBTb3J0RHJvcGRvd25PcHRpb25zPVt7dmFsdWU6UWEuQUxQSEFCRVRJQ0FMLGRpc3BsYXlUZXh0OiJBbHBoYWJldGljYWwifSx7dmFsdWU6UWEuQVNDRU5ESU5HLGRpc3BsYXlUZXh0OiJBc2NlbmRpbmcifSx7dmFsdWU6UWEuREVTQ0VORElORyxkaXNwbGF5VGV4dDoiRGVzY2VuZGluZyJ9LHt2YWx1ZTpRYS5ORUFSRVNULGRpc3BsYXlUZXh0OiJOZWFyZXN0In1dLHRoaXMudG9vbHRpcFNvcnRDaGFuZ2VkPW5ldyAkLHRoaXMuaWdub3JlT3V0bGllcnNDaGFuZ2VkPW5ldyAkLHRoaXMuWEF4aXNUeXBlPVppLHRoaXMuWEF4aXNUeXBlRHJvcGRvd25PcHRpb25zPVt7dmFsdWU6WmkuU1RFUCxkaXNwbGF5VGV4dDoiU3RlcCJ9LHt2YWx1ZTpaaS5SRUxBVElWRSxkaXNwbGF5VGV4dDoiUmVsYXRpdmUifSx7dmFsdWU6WmkuV0FMTF9USU1FLGRpc3BsYXlUZXh0OiJXYWxsIn1dLHRoaXMueEF4aXNUeXBlQ2hhbmdlZD1uZXcgJCx0aGlzLk1BWF9DQVJEX1dJRFRIX1NMSURFUl9WQUxVRT1YcXQsdGhpcy5NSU5fQ0FSRF9XSURUSF9TTElERVJfVkFMVUU9UXF0LHRoaXMuY2FyZFdpZHRoU2xpZGVyQ2hhbmdlZCQ9bmV3ICQsdGhpcy5jYXJkV2lkdGhDaGFuZ2VkPXRoaXMuY2FyZFdpZHRoU2xpZGVyQ2hhbmdlZCQucGlwZShuXyhURikpLHRoaXMuY2FyZFdpZHRoUmVzZXQ9bmV3ICQsdGhpcy5IaXN0b2dyYW1Nb2RlRHJvcGRvd25PcHRpb25zPVt7dmFsdWU6d3IuT0ZGU0VULGRpc3BsYXlUZXh0OiJPZmZzZXQifSx7dmFsdWU6d3IuT1ZFUkxBWSxkaXNwbGF5VGV4dDoiT3ZlcmxheSJ9XSx0aGlzLmhpc3RvZ3JhbU1vZGVDaGFuZ2VkPW5ldyAkLHRoaXMuTUFYX1NNT09USElOR19WQUxVRT1NdXQsdGhpcy5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRT1LcXQsdGhpcy5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQ9bmV3ICQsdGhpcy5zY2FsYXJTbW9vdGhpbmdDaGFuZ2VkPXRoaXMuc2NhbGFyU21vb3RoaW5nQ29udHJvbENoYW5nZWQkLnBpcGUobl8oVEYpKSx0aGlzLnNjYWxhclBhcnRpdGlvblhUb2dnbGVkPW5ldyAkLHRoaXMuaW1hZ2VCcmlnaHRuZXNzU2xpZGVyQ2hhbmdlZCQ9bmV3ICQsdGhpcy5pbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZD10aGlzLmltYWdlQnJpZ2h0bmVzc1NsaWRlckNoYW5nZWQkLnBpcGUobl8oVEYpKSx0aGlzLmltYWdlQnJpZ2h0bmVzc1Jlc2V0PW5ldyAkLHRoaXMuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkPW5ldyAkLHRoaXMuaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkPXRoaXMuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkLnBpcGUobl8oVEYpKSx0aGlzLmltYWdlQ29udHJhc3RSZXNldD1uZXcgJCx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkPW5ldyAkfW9uU2NhbGFyU21vb3RoaW5nSW5wdXQodCl7bGV0IGU9dC50YXJnZXQ7aWYoIWUudmFsdWUpcmV0dXJuO2xldCBvPU1hdGgubWluKE1hdGgubWF4KDAscGFyc2VGbG9hdChlLnZhbHVlKSksTXV0KTtvIT09cGFyc2VGbG9hdChlLnZhbHVlKSYmKGUudmFsdWU9U3RyaW5nKG8pKSx0aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5lbWl0KG8pfWZvcm1hdE1pbGxpVG9aZXJvdGgodCl7cmV0dXJuIGNWKHQvMWUzLHRoaXMubG9jYWxlfHwiZW4tVVMiLCIxLjAtMiIpfWdldExpbmtlZFRpbWVTZWxlY3Rpb25TdGFydFN0ZXAoKXtyZXR1cm4hdGhpcy5pc0xpbmtlZFRpbWVFbmFibGVkJiZ0aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb24hPT1udWxsJiZ0aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb24uZW5kPT09bnVsbD90aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb24uc3RhcnQuc3RlcDoiIn1pc0F4aXNUeXBlU3RlcCgpe3JldHVybiB0aGlzLnhBeGlzVHlwZT09PVppLlNURVB9fTtsQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxsQykodihjcikpfTtsQy5cdTAyNzVjbXA9eih7dHlwZTpsQyxzZWxlY3RvcnM6W1sibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50Il1dLGlucHV0czp7aXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQ6ImlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkIixpc1JhbmdlU2VsZWN0aW9uQWxsb3dlZDoiaXNSYW5nZVNlbGVjdGlvbkFsbG93ZWQiLGlzTGlua2VkVGltZUVuYWJsZWQ6ImlzTGlua2VkVGltZUVuYWJsZWQiLGlzU2NhbGFyU3RlcFNlbGVjdG9yRmVhdHVyZUVuYWJsZWQ6ImlzU2NhbGFyU3RlcFNlbGVjdG9yRmVhdHVyZUVuYWJsZWQiLGlzU2NhbGFyU3RlcFNlbGVjdG9yRW5hYmxlZDoiaXNTY2FsYXJTdGVwU2VsZWN0b3JFbmFibGVkIixpc1NjYWxhclN0ZXBTZWxlY3RvclJhbmdlRW5hYmxlZDoiaXNTY2FsYXJTdGVwU2VsZWN0b3JSYW5nZUVuYWJsZWQiLGxpbmtlZFRpbWVTZWxlY3Rpb246ImxpbmtlZFRpbWVTZWxlY3Rpb24iLHN0ZXBNaW5NYXg6InN0ZXBNaW5NYXgiLGlzSW1hZ2VTdXBwb3J0RW5hYmxlZDoiaXNJbWFnZVN1cHBvcnRFbmFibGVkIix0b29sdGlwU29ydDoidG9vbHRpcFNvcnQiLGlnbm9yZU91dGxpZXJzOiJpZ25vcmVPdXRsaWVycyIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLGNhcmRNaW5XaWR0aDoiY2FyZE1pbldpZHRoIixoaXN0b2dyYW1Nb2RlOiJoaXN0b2dyYW1Nb2RlIixzY2FsYXJTbW9vdGhpbmc6InNjYWxhclNtb290aGluZyIsc2NhbGFyUGFydGl0aW9uWDoic2NhbGFyUGFydGl0aW9uWCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaToiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSIsaW1hZ2VDb250cmFzdEluTWlsbGk6ImltYWdlQ29udHJhc3RJbk1pbGxpIixpbWFnZVNob3dBY3R1YWxTaXplOiJpbWFnZVNob3dBY3R1YWxTaXplIn0sb3V0cHV0czp7bGlua2VkVGltZVRvZ2dsZWQ6ImxpbmtlZFRpbWVUb2dnbGVkIixsaW5rZWRUaW1lU2VsZWN0aW9uQ2hhbmdlZDoibGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQiLHN0ZXBTZWxlY3RvclRvZ2dsZWQ6InN0ZXBTZWxlY3RvclRvZ2dsZWQiLHJhbmdlU2VsZWN0aW9uVG9nZ2xlZDoicmFuZ2VTZWxlY3Rpb25Ub2dnbGVkIix0b29sdGlwU29ydENoYW5nZWQ6InRvb2x0aXBTb3J0Q2hhbmdlZCIsaWdub3JlT3V0bGllcnNDaGFuZ2VkOiJpZ25vcmVPdXRsaWVyc0NoYW5nZWQiLHhBeGlzVHlwZUNoYW5nZWQ6InhBeGlzVHlwZUNoYW5nZWQiLGNhcmRXaWR0aENoYW5nZWQ6ImNhcmRXaWR0aENoYW5nZWQiLGNhcmRXaWR0aFJlc2V0OiJjYXJkV2lkdGhSZXNldCIsaGlzdG9ncmFtTW9kZUNoYW5nZWQ6Imhpc3RvZ3JhbU1vZGVDaGFuZ2VkIixzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkOiJzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkIixzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZDoic2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQiLGltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkOiJpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCIsaW1hZ2VCcmlnaHRuZXNzUmVzZXQ6ImltYWdlQnJpZ2h0bmVzc1Jlc2V0IixpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQ6ImltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCIsaW1hZ2VDb250cmFzdFJlc2V0OiJpbWFnZUNvbnRyYXN0UmVzZXQiLGltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkOiJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCJ9LGRlY2xzOjQzLHZhcnM6MjIsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IG47dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/bj1nb29nLmdldE1zZygiUmVzZXQgY2FyZCB3aWR0aCIpOm49JGxvY2FsaXplYDpBIGJ1dHRvbiB0byByZXNldCB0aGUgY2FyZCB3aWR0aCBzZXR0aW5n4pCfY2NkYzk2YjAwM2ZiYmE5MGRiN2E2OTU5YjViMjZlM2NjNThmN2Q4MOKQnzUyMjMxMTEwNDc5NjgxMDI0NjY6UmVzZXQgY2FyZCB3aWR0aGA7bGV0IHQ7dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/dD1nb29nLmdldE1zZygiUmVzZXQgYnJpZ2h0bmVzcyIpOnQ9JGxvY2FsaXplYDpBIGJ1dHRvbiB0byByZXNldCB0aGUgaW1hZ2UgYnJpZ2h0bmVzcyBzZXR0aW5n4pCfYzQ4MmIzYTQ3ZWEwOTc1ZmE4YmUwMWFmYjNmYmVjOWI3NjYyOGJkN+KQnzExODkxNjE4NTcyNDAzNzgzOTU6UmVzZXQgYnJpZ2h0bmVzc2A7bGV0IGU7cmV0dXJuIHR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP2U9Z29vZy5nZXRNc2coIlJlc2V0IGNvbnRyYXN0Iik6ZT0kbG9jYWxpemVgOkEgYnV0dG9uIHRvIHJlc2V0IHRoZSBpbWFnZSBjb250cmFzdCBzZXR0aW5n4pCfZWQ3MTJhOGI5MjcwNDFiZTE1MjUyYjI5ZWI1MjFlYmIxMzc0YmFkOOKQnzUzNzA3MDMzNDI5MjM2MTE5NTU6UmVzZXQgY29udHJhc3RgLFtbMSwiZ2VuZXJhbCJdLFsxLCJzZWN0aW9uLXRpdGxlIl0sWzEsImNvbnRyb2wtcm93IiwieC1heGlzLXR5cGUiXSxbImlkIiwieC1heGlzLXR5cGUtbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFszLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbImNsYXNzIiwiY29udHJvbC1yb3cgc2NhbGFycy1zdGVwLXNlbGVjdG9yIiwzLCJ0aXRsZSIsNCwibmdJZiJdLFsxLCJjb250cm9sLXJvdyIsImNhcmQtd2lkdGgiXSxbImlkIiwiY2FyZC13aWR0aC1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWzEsInNsaWRlci1yb3ciXSxbImFyaWEtbGFiZWxsZWRieSIsImNhcmQtd2lkdGgtbGFiZWwiLCJjb2xvciIsInByaW1hcnkiLDMsIm1heCIsIm1pbiIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJpbnB1dCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwidGl0bGUiLCJSZXNldCBjYXJkIHdpZHRoIiwxLCJyZXNldC1idXR0b24iLDMsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfYmFja3VwX3Jlc3RvcmVfMjRweCJdLFsxLCJzY2FsYXJzIl0sWzEsImNvbnRyb2wtcm93Iiwic2NhbGFycy1zbW9vdGhpbmciXSxbImlkIiwic2NhbGFycy1zbW9vdGhpbmctbGFiZWwiLDEsImNvbnRyb2wtbmFtZSJdLFsiYXJpYS1sYWJlbGxlZGJ5Iiwic2NhbGFycy1zbW9vdGhpbmctbGFiZWwiLCJjb2xvciIsInByaW1hcnkiLDMsIm1heCIsIm1pbiIsInN0ZXAiLCJ2YWx1ZSIsInRodW1iTGFiZWwiLCJpbnB1dCJdLFsiYXJpYS1sYWJlbGxlZGJ5Iiwic2NhbGFycy1zbW9vdGhpbmctbGFiZWwiLCJ0eXBlIiwibnVtYmVyIiwibWluIiwiMCIsInN0ZXAiLCIwLjAwMSIsMSwic2xpZGVyLWlucHV0IiwzLCJtYXgiLCJ2YWx1ZSIsImlucHV0Il0sWzEsImNvbnRyb2wtcm93IiwidG9vbHRpcC1zb3J0Il0sWzEsImNvbnRyb2wtbmFtZSJdLFsxLCJjb250cm9sLXJvdyIsInNjYWxhcnMtaWdub3JlLW91dGxpZXJzIl0sWzMsImNoZWNrZWQiLCJjaGFuZ2UiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLXBhcnRpdGlvbi14Il0sWyJzdmdJY29uIiwiaGVscF9vdXRsaW5lXzI0cHgiLCJ0aXRsZSIsYE5vbi1tb25vdG9uaWMgc3RlcHMgY2FuIG9jY3VyIHdoZW4gcmV1c2luZyBhIGxvZ2RpciB3aXRoIG11bHRpcGxlIHN1bW1hcnkgd3JpdGVycyBhbmQgb3ZlcmxhcHBpbmcgc3RlcHMuIExpbmUgY2hhcnRzLCB3aXRob3V0IHRoaXMgb3B0aW9uIGVuYWJsZWQsIGNhbiBhcHBlYXIgemlnIHphZ2dlZC4gVGhpcyBpcyBjb21tb24gd2hlbiByZXN0YXJ0aW5nIGZyb20gYSBjaGVja3BvaW50LgoKV2hlbiBlbmFibGVkLCBhIG5vbi1tb25vdG9uaWMgdGltZSBzZXJpZXMgY29tcG9zZWQgb2YgTiBtb25vdG9uaWMgcGllY2VzIHdpbGwgYmUgc2hvd24gYXMgTiBtb25vdG9uaWMgbGluZXMuYCwxLCJpbmZvIl0sWzEsIkhpc3RvZ3JhbXMiXSxbMSwiY29udHJvbC1yb3ciLCJoaXN0b2dyYW0tbW9kZSJdLFsiY2xhc3MiLCJpbWFnZSIsNCwibmdJZiJdLFsxLCJjb250cm9sLXJvdyIsInNjYWxhcnMtc3RlcC1zZWxlY3RvciIsMywidGl0bGUiXSxbMywiY2hlY2tlZCIsImRpc2FibGVkIiwiY2hhbmdlIl0sWzEsImluZGVudCJdLFsiY2xhc3MiLCJpbmRlbnQgcmFuZ2Utc2VsZWN0aW9uIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImNvbnRyb2wtcm93IGxpbmtlZC10aW1lIGluZGVudCIsNCwibmdJZiJdLFsxLCJpbmRlbnQiLCJyYW5nZS1zZWxlY3Rpb24iXSxbMSwiY29udHJvbC1yb3ciLCJsaW5rZWQtdGltZSIsImluZGVudCJdLFsxLCJpbWFnZSJdLFsxLCJjb250cm9sLXJvdyIsImltYWdlLWJyaWdodG5lc3MiXSxbImlkIiwiaW1hZ2UtYnJpZ2h0bmVzcy1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWyJhcmlhLWxhYmVsbGVkYnkiLCJpbWFnZS1icmlnaHRuZXNzLWxhYmVsIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJtYXgiLCJtaW4iLCJzdGVwIiwidmFsdWUiLCJ0aHVtYkxhYmVsIiwiZGlzcGxheVdpdGgiLCJpbnB1dCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwidGl0bGUiLCJSZXNldCBicmlnaHRuZXNzIiwxLCJyZXNldC1idXR0b24iLDMsImNsaWNrIl0sWzEsImNvbnRyb2wtcm93IiwiaW1hZ2UtY29udHJhc3QiXSxbImlkIiwiaW1hZ2UtY29uc3RyYXN0LWxhYmVsIiwxLCJjb250cm9sLW5hbWUiXSxbImFyaWEtbGFiZWxsZWRieSIsImltYWdlLWNvbnN0cmFzdC1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImRpc3BsYXlXaXRoIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiUmVzZXQgY29udHJhc3QiLDEsInJlc2V0LWJ1dHRvbiIsMywiY2xpY2siXSxbMSwiY29udHJvbC1yb3ciLCJpbWFnZS1zaG93LWFjdHVhbC1zaXplIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwic2VjdGlvbiIsMCksdSgxLCJoMyIsMSksVCgyLCJHZW5lcmFsIiksaCgpLHUoMywiZGl2IiwyKSx1KDQsImRpdiIsMyksVCg1LCJIb3Jpem9udGFsIEF4aXMiKSxoKCksdSg2LCJ0Yi1kcm9wZG93biIsNCksQSgic2VsZWN0aW9uQ2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS54QXhpc1R5cGVDaGFuZ2VkLmVtaXQoaSl9KSxoKCksaCgpLGsoNyxxcXQsNyw1LCJkaXYiLDUpLHUoOCwiZGl2Iiw2KSx1KDksImRpdiIsNyksVCgxMCwiQ2FyZCBXaWR0aCIpLGgoKSx1KDExLCJkaXYiLDgpLHUoMTIsIm1hdC1zbGlkZXIiLDkpLEEoImlucHV0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5jYXJkV2lkdGhTbGlkZXJDaGFuZ2VkJC5lbWl0KGkudmFsdWUpfSksaCgpLHUoMTMsImJ1dHRvbiIsMTApLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLmNhcmRXaWR0aFJlc2V0LmVtaXQoKX0pLEQoMTQsIm1hdC1pY29uIiwxMSksaCgpLGgoKSxoKCksaCgpLHUoMTUsInNlY3Rpb24iLDEyKSx1KDE2LCJoMyIsMSksVCgxNywiU2NhbGFycyIpLGgoKSx1KDE4LCJkaXYiLDEzKSx1KDE5LCJkaXYiLDE0KSxUKDIwLCJTbW9vdGhpbmciKSxoKCksdSgyMSwiZGl2Iiw4KSx1KDIyLCJtYXQtc2xpZGVyIiwxNSksQSgiaW5wdXQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5lbWl0KGkudmFsdWUpfSksaCgpLHUoMjMsImlucHV0IiwxNiksQSgiaW5wdXQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uU2NhbGFyU21vb3RoaW5nSW5wdXQoaSl9KSxoKCksaCgpLGgoKSx1KDI0LCJkaXYiLDE3KSx1KDI1LCJkaXYiLDE4KSxUKDI2LCJUb29sdGlwIHNvcnRpbmcgbWV0aG9kIiksaCgpLHUoMjcsInRiLWRyb3Bkb3duIiw0KSxBKCJzZWxlY3Rpb25DaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLnRvb2x0aXBTb3J0Q2hhbmdlZC5lbWl0KGkpfSksaCgpLGgoKSx1KDI4LCJkaXYiLDE5KSx1KDI5LCJtYXQtY2hlY2tib3giLDIwKSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLmlnbm9yZU91dGxpZXJzQ2hhbmdlZC5lbWl0KGkuY2hlY2tlZCl9KSxUKDMwLCJJZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZyIpLGgoKSxoKCksdSgzMSwiZGl2IiwyMSksdSgzMiwibWF0LWNoZWNrYm94IiwyMCksQSgiY2hhbmdlIixmdW5jdGlvbigpe3JldHVybiBlLnNjYWxhclBhcnRpdGlvblhUb2dnbGVkLmVtaXQoKX0pLFQoMzMsIlBhcnRpdGlvbiBub24tbW9ub3RvbmljIFggYXhpcyIpLGgoKSxEKDM0LCJtYXQtaWNvbiIsMjIpLGgoKSxoKCksdSgzNSwic2VjdGlvbiIsMjMpLHUoMzYsImgzIiwxKSxUKDM3LCJIaXN0b2dyYW1zIiksaCgpLHUoMzgsImRpdiIsMjQpLHUoMzksImRpdiIsMTgpLFQoNDAsIk1vZGUiKSxoKCksdSg0MSwidGItZHJvcGRvd24iLDQpLEEoInNlbGVjdGlvbkNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGlzdG9ncmFtTW9kZUNoYW5nZWQuZW1pdChpKX0pLGgoKSxoKCksaCgpLGsoNDIsWnF0LDIwLDEzLCJzZWN0aW9uIiwyNSkpLHQmMiYmKHgoNiksUCgidmFsdWUiLGUueEF4aXNUeXBlKSgib3B0aW9ucyIsZS5YQXhpc1R5cGVEcm9wZG93bk9wdGlvbnMpLHgoMSksUCgibmdJZiIsZS5pc1NjYWxhclN0ZXBTZWxlY3RvckZlYXR1cmVFbmFibGVkKSx4KDUpLFAoIm1heCIsZS5NQVhfQ0FSRF9XSURUSF9TTElERVJfVkFMVUUpKCJtaW4iLGUuTUlOX0NBUkRfV0lEVEhfU0xJREVSX1ZBTFVFKSgic3RlcCIsNTApKCJ2YWx1ZSIsZS5jYXJkTWluV2lkdGgpKCJ0aHVtYkxhYmVsIiwhMSkseCgxMCksUCgibWF4IixlLk1BWF9TTU9PVEhJTkdfU0xJREVSX1ZBTFVFKSgibWluIiwwKSgic3RlcCIsLjAxKSgidmFsdWUiLGUuc2NhbGFyU21vb3RoaW5nKSgidGh1bWJMYWJlbCIsITApLHgoMSksUCgibWF4IixlLk1BWF9TTU9PVEhJTkdfVkFMVUUpKCJ2YWx1ZSIsZS5zY2FsYXJTbW9vdGhpbmcpLHgoNCksUCgidmFsdWUiLGUudG9vbHRpcFNvcnQpKCJvcHRpb25zIixlLlRvb2x0aXBTb3J0RHJvcGRvd25PcHRpb25zKSx4KDIpLFAoImNoZWNrZWQiLGUuaWdub3JlT3V0bGllcnMpLHgoMyksUCgiY2hlY2tlZCIsZS5zY2FsYXJQYXJ0aXRpb25YKSx4KDkpLFAoInZhbHVlIixlLmhpc3RvZ3JhbU1vZGUpKCJvcHRpb25zIixlLkhpc3RvZ3JhbU1vZGVEcm9wZG93bk9wdGlvbnMpLHgoMSksUCgibmdJZiIsZS5pc0ltYWdlU3VwcG9ydEVuYWJsZWQpKX0sZGlyZWN0aXZlczpbVmQsWHQsWXIsZm4sWGUsX3JdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZvbnQtc2l6ZToxMnB4fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KX1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO3BhZGRpbmc6MTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICBzZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgc2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uc2VjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Zm9udC13ZWlnaHQ6NTAwO2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0Om5vcm1hbDttYXJnaW46MCAwIDEycHggMH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2VjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zZWN0aW9uLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdICAgLmNvbnRyb2wtcm93W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1ib3R0b206MTJweH0uY29udHJvbC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tYm90dG9tOjhweH0uc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6MjhweH0uc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAucmVzZXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDo2cHh9LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjppbmhlcml0O2JvcmRlcjoxcHggc29saWQgIzhlOThhMztib3JkZXItcmFkaXVzOjJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y29sb3I6aW5oZXJpdDtoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDoxMnB4O3BhZGRpbmc6MCA0cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5zbGlkZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNDI1MDY2fS5zY2FsYXJzLXNtb290aGluZ1tfbmdjb250ZW50LSVDT01QJV0gICAuc2xpZGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4Om5vbmU7d2lkdGg6NWVtfS5zY2FsYXJzLXBhcnRpdGlvbi14W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4fS5zY2FsYXJzLXBhcnRpdGlvbi14W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTVweDttYXJnaW4tbGVmdDo1cHg7d2lkdGg6MTVweH1tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjE7bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tcmlnaHQ6LThweH10Yi1kcm9wZG93bltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpibG9ja30ubGlua2VkLXRpbWVbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6NXB4IDB9LmNvbnRyb2wtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5pbmRlbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0OjI1cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobEMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJzZXR0aW5nc192aWV3X2NvbXBvbmVudC5uZy5odG1sIixjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHN0eWxlVXJsczpbInNldHRpbmdzX3ZpZXdfY29tcG9uZW50LmNzcyJdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltjcl19XX1dfSx7aXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQ6W3t0eXBlOmR9XSxpc1JhbmdlU2VsZWN0aW9uQWxsb3dlZDpbe3R5cGU6ZH1dLGlzTGlua2VkVGltZUVuYWJsZWQ6W3t0eXBlOmR9XSxpc1NjYWxhclN0ZXBTZWxlY3RvckZlYXR1cmVFbmFibGVkOlt7dHlwZTpkfV0saXNTY2FsYXJTdGVwU2VsZWN0b3JFbmFibGVkOlt7dHlwZTpkfV0saXNTY2FsYXJTdGVwU2VsZWN0b3JSYW5nZUVuYWJsZWQ6W3t0eXBlOmR9XSxsaW5rZWRUaW1lU2VsZWN0aW9uOlt7dHlwZTpkfV0sc3RlcE1pbk1heDpbe3R5cGU6ZH1dLGxpbmtlZFRpbWVUb2dnbGVkOlt7dHlwZTpCfV0sbGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQ6W3t0eXBlOkJ9XSxzdGVwU2VsZWN0b3JUb2dnbGVkOlt7dHlwZTpCfV0scmFuZ2VTZWxlY3Rpb25Ub2dnbGVkOlt7dHlwZTpCfV0saXNJbWFnZVN1cHBvcnRFbmFibGVkOlt7dHlwZTpkfV0sdG9vbHRpcFNvcnQ6W3t0eXBlOmR9XSx0b29sdGlwU29ydENoYW5nZWQ6W3t0eXBlOkJ9XSxpZ25vcmVPdXRsaWVyczpbe3R5cGU6ZH1dLGlnbm9yZU91dGxpZXJzQ2hhbmdlZDpbe3R5cGU6Qn1dLHhBeGlzVHlwZTpbe3R5cGU6ZH1dLHhBeGlzVHlwZUNoYW5nZWQ6W3t0eXBlOkJ9XSxjYXJkTWluV2lkdGg6W3t0eXBlOmR9XSxjYXJkV2lkdGhDaGFuZ2VkOlt7dHlwZTpCfV0sY2FyZFdpZHRoUmVzZXQ6W3t0eXBlOkJ9XSxoaXN0b2dyYW1Nb2RlOlt7dHlwZTpkfV0saGlzdG9ncmFtTW9kZUNoYW5nZWQ6W3t0eXBlOkJ9XSxzY2FsYXJTbW9vdGhpbmc6W3t0eXBlOmR9XSxzY2FsYXJTbW9vdGhpbmdDaGFuZ2VkOlt7dHlwZTpCfV0sc2NhbGFyUGFydGl0aW9uWDpbe3R5cGU6ZH1dLHNjYWxhclBhcnRpdGlvblhUb2dnbGVkOlt7dHlwZTpCfV0saW1hZ2VCcmlnaHRuZXNzSW5NaWxsaTpbe3R5cGU6ZH1dLGltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkOlt7dHlwZTpCfV0saW1hZ2VCcmlnaHRuZXNzUmVzZXQ6W3t0eXBlOkJ9XSxpbWFnZUNvbnRyYXN0SW5NaWxsaTpbe3R5cGU6ZH1dLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDpbe3R5cGU6Qn1dLGltYWdlQ29udHJhc3RSZXNldDpbe3R5cGU6Qn1dLGltYWdlU2hvd0FjdHVhbFNpemU6W3t0eXBlOmR9XSxpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZDpbe3R5cGU6Qn1dfSl9KSgpO3ZhciAkcXQ9T2JqZWN0LmZyZWV6ZSh7U0xJREVSOk9tLlNFVFRJTkdTX1NMSURFUixURVhUOk9tLlNFVFRJTkdTX1RFWFQsVEVYVF9ERUxFVEVEOk9tLkNIQU5HRV9UT19TSU5HTEV9KSxjQz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5pc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3Qoc2l0KSx0aGlzLmlzUmFuZ2VTZWxlY3Rpb25BbGxvd2VkJD10aGlzLnN0b3JlLnNlbGVjdChmaXQpLHRoaXMuaXNTY2FsYXJTdGVwU2VsZWN0b3JGZWF0dXJlRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoY2l0KSx0aGlzLmlzU2NhbGFyU3RlcFNlbGVjdG9yRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoVXkpLHRoaXMuaXNTY2FsYXJTdGVwU2VsZWN0b3JSYW5nZUVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KFZ2KSx0aGlzLmlzTGlua2VkVGltZUVuYWJsZWQkPXRoaXMuc3RvcmUuc2VsZWN0KEJ2KSx0aGlzLmxpbmtlZFRpbWVTZWxlY3Rpb24kPXRoaXMuc3RvcmUuc2VsZWN0KHJVKSx0aGlzLnN0ZXBNaW5NYXgkPXRoaXMuc3RvcmUuc2VsZWN0KGFVKSx0aGlzLmlzSW1hZ2VTdXBwb3J0RW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoRHkpLnBpcGUodWUoQm9vbGVhbiksQ24oMSksT24odGhpcy5zdG9yZS5zZWxlY3QoY0QpKSxHKChbLGVdKT0+ZSkpLHRoaXMudG9vbHRpcFNvcnQkPXRoaXMuc3RvcmUuc2VsZWN0KFAzKSx0aGlzLmlnbm9yZU91dGxpZXJzJD10aGlzLnN0b3JlLnNlbGVjdCh5MyksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KEVfKSx0aGlzLmNhcmRNaW5XaWR0aCQ9dGhpcy5zdG9yZS5zZWxlY3QoTzMpLHRoaXMuaGlzdG9ncmFtTW9kZSQ9dGhpcy5zdG9yZS5zZWxlY3QoRkQpLHRoaXMuc2NhbGFyU21vb3RoaW5nJD10aGlzLnN0b3JlLnNlbGVjdChkUCksdGhpcy5zY2FsYXJQYXJ0aXRpb25YJD10aGlzLnN0b3JlLnNlbGVjdChMRCksdGhpcy5pbWFnZUJyaWdodG5lc3NJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdChCRCksdGhpcy5pbWFnZUNvbnRyYXN0SW5NaWxsaSQ9dGhpcy5zdG9yZS5zZWxlY3QoVkQpLHRoaXMuaW1hZ2VTaG93QWN0dWFsU2l6ZSQ9dGhpcy5zdG9yZS5zZWxlY3QoakQpfW9uVG9vbHRpcFNvcnRDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goU3ooe3NvcnQ6dH0pKX1vbklnbm9yZU91dGxpZXJzQ2hhbmdlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUnooKSl9b25YQXhpc1R5cGVDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goRXooe3hBeGlzVHlwZTp0fSkpfW9uQ2FyZFdpZHRoQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGt6KHtjYXJkTWluV2lkdGg6dH0pKX1vbkNhcmRXaWR0aFJlc2V0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChOeigpKX1vbkhpc3RvZ3JhbU1vZGVDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goTHooe2hpc3RvZ3JhbU1vZGU6dH0pKX1vblNjYWxhclNtb290aGluZ0NoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChUeih7c21vb3RoaW5nOnR9KSl9b25TY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQXooKSl9b25JbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKER6KHticmlnaHRuZXNzSW5NaWxsaTp0fSkpfW9uSW1hZ2VCcmlnaHRuZXNzUmVzZXQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKHp6KCkpfW9uSW1hZ2VDb250cmFzdFJlc2V0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChIeigpKX1vbkltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEl6KHtjb250cmFzdEluTWlsbGk6dH0pKX1vbkltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChGeigpKX1vbkxpbmtlZFRpbWVUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChaeih7YWZmb3JkYW5jZTpQTy5DSEVDS19CT1h9KSl9b25TdGVwU2VsZWN0b3JUb2dnbGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChweCh7YWZmb3JkYW5jZTpQTy5DSEVDS19CT1h9KSl9b25SYW5nZVNlbGVjdGlvblRvZ2dsZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFh6KHthZmZvcmRhbmNlOlBPLkNIRUNLX0JPWH0pKX1vbkxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkKHt0aW1lU2VsZWN0aW9uOnQsc291cmNlOmV9KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGZ4KHt0aW1lU2VsZWN0aW9uOnQsYWZmb3JkYW5jZTokcXRbZV19KSl9fTtjQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxjQykodihzdCkpfTtjQy5cdTAyNzVjbXA9eih7dHlwZTpjQyxzZWxlY3RvcnM6W1sibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MiXV0sZGVjbHM6MjAsdmFyczo1Nyxjb25zdHM6W1szLCJpc0ltYWdlU3VwcG9ydEVuYWJsZWQiLCJ0b29sdGlwU29ydCIsImlnbm9yZU91dGxpZXJzIiwieEF4aXNUeXBlIiwiY2FyZE1pbldpZHRoIiwiaGlzdG9ncmFtTW9kZSIsInNjYWxhclNtb290aGluZyIsInNjYWxhclBhcnRpdGlvblgiLCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpIiwiaW1hZ2VDb250cmFzdEluTWlsbGkiLCJpbWFnZVNob3dBY3R1YWxTaXplIiwiaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWQiLCJpc1JhbmdlU2VsZWN0aW9uQWxsb3dlZCIsImlzU2NhbGFyU3RlcFNlbGVjdG9yRmVhdHVyZUVuYWJsZWQiLCJpc1NjYWxhclN0ZXBTZWxlY3RvckVuYWJsZWQiLCJpc1NjYWxhclN0ZXBTZWxlY3RvclJhbmdlRW5hYmxlZCIsImlzTGlua2VkVGltZUVuYWJsZWQiLCJsaW5rZWRUaW1lU2VsZWN0aW9uIiwic3RlcE1pbk1heCIsInRvb2x0aXBTb3J0Q2hhbmdlZCIsImlnbm9yZU91dGxpZXJzQ2hhbmdlZCIsInhBeGlzVHlwZUNoYW5nZWQiLCJjYXJkV2lkdGhDaGFuZ2VkIiwiY2FyZFdpZHRoUmVzZXQiLCJoaXN0b2dyYW1Nb2RlQ2hhbmdlZCIsInNjYWxhclNtb290aGluZ0NoYW5nZWQiLCJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIiwiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLCJpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQiLCJpbWFnZUNvbnRyYXN0UmVzZXQiLCJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCIsImxpbmtlZFRpbWVUb2dnbGVkIiwibGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQiLCJzdGVwU2VsZWN0b3JUb2dnbGVkIiwicmFuZ2VTZWxlY3Rpb25Ub2dnbGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncy1jb21wb25lbnQiLDApLEEoInRvb2x0aXBTb3J0Q2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25Ub29sdGlwU29ydENoYW5nZWQoaSl9KSgiaWdub3JlT3V0bGllcnNDaGFuZ2VkIixmdW5jdGlvbigpe3JldHVybiBlLm9uSWdub3JlT3V0bGllcnNDaGFuZ2VkKCl9KSgieEF4aXNUeXBlQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25YQXhpc1R5cGVDaGFuZ2VkKGkpfSkoImNhcmRXaWR0aENoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uQ2FyZFdpZHRoQ2hhbmdlZChpKX0pKCJjYXJkV2lkdGhSZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkNhcmRXaWR0aFJlc2V0KCl9KSgiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uSGlzdG9ncmFtTW9kZUNoYW5nZWQoaSl9KSgic2NhbGFyU21vb3RoaW5nQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25TY2FsYXJTbW9vdGhpbmdDaGFuZ2VkKGkpfSkoInNjYWxhclBhcnRpdGlvblhUb2dnbGVkIixmdW5jdGlvbigpe3JldHVybiBlLm9uU2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQoKX0pKCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25JbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZChpKX0pKCJpbWFnZUJyaWdodG5lc3NSZXNldCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCl9KSgiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZChpKX0pKCJpbWFnZUNvbnRyYXN0UmVzZXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25JbWFnZUNvbnRyYXN0UmVzZXQoKX0pKCJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkKCl9KSgibGlua2VkVGltZVRvZ2dsZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25MaW5rZWRUaW1lVG9nZ2xlZCgpfSkoImxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vbkxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkKGkpfSkoInN0ZXBTZWxlY3RvclRvZ2dsZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25TdGVwU2VsZWN0b3JUb2dnbGVkKCl9KSgicmFuZ2VTZWxlY3Rpb25Ub2dnbGVkIixmdW5jdGlvbigpe3JldHVybiBlLm9uUmFuZ2VTZWxlY3Rpb25Ub2dnbGVkKCl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksWCg1LCJhc3luYyIpLFgoNiwiYXN5bmMiKSxYKDcsImFzeW5jIiksWCg4LCJhc3luYyIpLFgoOSwiYXN5bmMiKSxYKDEwLCJhc3luYyIpLFgoMTEsImFzeW5jIiksWCgxMiwiYXN5bmMiKSxYKDEzLCJhc3luYyIpLFgoMTQsImFzeW5jIiksWCgxNSwiYXN5bmMiKSxYKDE2LCJhc3luYyIpLFgoMTcsImFzeW5jIiksWCgxOCwiYXN5bmMiKSxYKDE5LCJhc3luYyIpLGgoKSksdCYyJiZQKCJpc0ltYWdlU3VwcG9ydEVuYWJsZWQiLFEoMSwxOSxlLmlzSW1hZ2VTdXBwb3J0RW5hYmxlZCQpKSgidG9vbHRpcFNvcnQiLFEoMiwyMSxlLnRvb2x0aXBTb3J0JCkpKCJpZ25vcmVPdXRsaWVycyIsUSgzLDIzLGUuaWdub3JlT3V0bGllcnMkKSkoInhBeGlzVHlwZSIsUSg0LDI1LGUueEF4aXNUeXBlJCkpKCJjYXJkTWluV2lkdGgiLFEoNSwyNyxlLmNhcmRNaW5XaWR0aCQpKSgiaGlzdG9ncmFtTW9kZSIsUSg2LDI5LGUuaGlzdG9ncmFtTW9kZSQpKSgic2NhbGFyU21vb3RoaW5nIixRKDcsMzEsZS5zY2FsYXJTbW9vdGhpbmckKSkoInNjYWxhclBhcnRpdGlvblgiLFEoOCwzMyxlLnNjYWxhclBhcnRpdGlvblgkKSkoImltYWdlQnJpZ2h0bmVzc0luTWlsbGkiLFEoOSwzNSxlLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkkKSkoImltYWdlQ29udHJhc3RJbk1pbGxpIixRKDEwLDM3LGUuaW1hZ2VDb250cmFzdEluTWlsbGkkKSkoImltYWdlU2hvd0FjdHVhbFNpemUiLFEoMTEsMzksZS5pbWFnZVNob3dBY3R1YWxTaXplJCkpKCJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCIsUSgxMiw0MSxlLmlzTGlua2VkVGltZUZlYXR1cmVFbmFibGVkJCkpKCJpc1JhbmdlU2VsZWN0aW9uQWxsb3dlZCIsUSgxMyw0MyxlLmlzUmFuZ2VTZWxlY3Rpb25BbGxvd2VkJCkpKCJpc1NjYWxhclN0ZXBTZWxlY3RvckZlYXR1cmVFbmFibGVkIixRKDE0LDQ1LGUuaXNTY2FsYXJTdGVwU2VsZWN0b3JGZWF0dXJlRW5hYmxlZCQpKSgiaXNTY2FsYXJTdGVwU2VsZWN0b3JFbmFibGVkIixRKDE1LDQ3LGUuaXNTY2FsYXJTdGVwU2VsZWN0b3JFbmFibGVkJCkpKCJpc1NjYWxhclN0ZXBTZWxlY3RvclJhbmdlRW5hYmxlZCIsUSgxNiw0OSxlLmlzU2NhbGFyU3RlcFNlbGVjdG9yUmFuZ2VFbmFibGVkJCkpKCJpc0xpbmtlZFRpbWVFbmFibGVkIixRKDE3LDUxLGUuaXNMaW5rZWRUaW1lRW5hYmxlZCQpKSgibGlua2VkVGltZVNlbGVjdGlvbiIsUSgxOCw1MyxlLmxpbmtlZFRpbWVTZWxlY3Rpb24kKSkoInN0ZXBNaW5NYXgiLFEoMTksNTUsZS5zdGVwTWluTWF4JCkpfSxkaXJlY3RpdmVzOltsQ10scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoY0MsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyIsdGVtcGxhdGU6YAogICAgPG1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzLWNvbXBvbmVudAogICAgICBbaXNJbWFnZVN1cHBvcnRFbmFibGVkXT0iaXNJbWFnZVN1cHBvcnRFbmFibGVkJCB8IGFzeW5jIgogICAgICBbdG9vbHRpcFNvcnRdPSJ0b29sdGlwU29ydCQgfCBhc3luYyIKICAgICAgKHRvb2x0aXBTb3J0Q2hhbmdlZCk9Im9uVG9vbHRpcFNvcnRDaGFuZ2VkKCRldmVudCkiCiAgICAgIFtpZ25vcmVPdXRsaWVyc109Imlnbm9yZU91dGxpZXJzJCB8IGFzeW5jIgogICAgICAoaWdub3JlT3V0bGllcnNDaGFuZ2VkKT0ib25JZ25vcmVPdXRsaWVyc0NoYW5nZWQoKSIKICAgICAgW3hBeGlzVHlwZV09InhBeGlzVHlwZSQgfCBhc3luYyIKICAgICAgKHhBeGlzVHlwZUNoYW5nZWQpPSJvblhBeGlzVHlwZUNoYW5nZWQoJGV2ZW50KSIKICAgICAgW2NhcmRNaW5XaWR0aF09ImNhcmRNaW5XaWR0aCQgfCBhc3luYyIKICAgICAgKGNhcmRXaWR0aENoYW5nZWQpPSJvbkNhcmRXaWR0aENoYW5nZWQoJGV2ZW50KSIKICAgICAgKGNhcmRXaWR0aFJlc2V0KT0ib25DYXJkV2lkdGhSZXNldCgpIgogICAgICBbaGlzdG9ncmFtTW9kZV09Imhpc3RvZ3JhbU1vZGUkIHwgYXN5bmMiCiAgICAgIChoaXN0b2dyYW1Nb2RlQ2hhbmdlZCk9Im9uSGlzdG9ncmFtTW9kZUNoYW5nZWQoJGV2ZW50KSIKICAgICAgW3NjYWxhclNtb290aGluZ109InNjYWxhclNtb290aGluZyQgfCBhc3luYyIKICAgICAgKHNjYWxhclNtb290aGluZ0NoYW5nZWQpPSJvblNjYWxhclNtb290aGluZ0NoYW5nZWQoJGV2ZW50KSIKICAgICAgW3NjYWxhclBhcnRpdGlvblhdPSJzY2FsYXJQYXJ0aXRpb25YJCB8IGFzeW5jIgogICAgICAoc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQpPSJvblNjYWxhclBhcnRpdGlvblhUb2dnbGVkKCkiCiAgICAgIFtpbWFnZUJyaWdodG5lc3NJbk1pbGxpXT0iaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQgfCBhc3luYyIKICAgICAgKGltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkKT0ib25JbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCgkZXZlbnQpIgogICAgICAoaW1hZ2VCcmlnaHRuZXNzUmVzZXQpPSJvbkltYWdlQnJpZ2h0bmVzc1Jlc2V0KCkiCiAgICAgIFtpbWFnZUNvbnRyYXN0SW5NaWxsaV09ImltYWdlQ29udHJhc3RJbk1pbGxpJCB8IGFzeW5jIgogICAgICAoaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkKT0ib25JbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQoJGV2ZW50KSIKICAgICAgKGltYWdlQ29udHJhc3RSZXNldCk9Im9uSW1hZ2VDb250cmFzdFJlc2V0KCkiCiAgICAgIFtpbWFnZVNob3dBY3R1YWxTaXplXT0iaW1hZ2VTaG93QWN0dWFsU2l6ZSQgfCBhc3luYyIKICAgICAgKGltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkKT0ib25JbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCgpIgogICAgICBbaXNMaW5rZWRUaW1lRmVhdHVyZUVuYWJsZWRdPSJpc0xpbmtlZFRpbWVGZWF0dXJlRW5hYmxlZCQgfCBhc3luYyIKICAgICAgW2lzUmFuZ2VTZWxlY3Rpb25BbGxvd2VkXT0iaXNSYW5nZVNlbGVjdGlvbkFsbG93ZWQkIHwgYXN5bmMiCiAgICAgIFtpc1NjYWxhclN0ZXBTZWxlY3RvckZlYXR1cmVFbmFibGVkXT0iCiAgICAgICAgaXNTY2FsYXJTdGVwU2VsZWN0b3JGZWF0dXJlRW5hYmxlZCQgfCBhc3luYwogICAgICAiCiAgICAgIFtpc1NjYWxhclN0ZXBTZWxlY3RvckVuYWJsZWRdPSJpc1NjYWxhclN0ZXBTZWxlY3RvckVuYWJsZWQkIHwgYXN5bmMiCiAgICAgIFtpc1NjYWxhclN0ZXBTZWxlY3RvclJhbmdlRW5hYmxlZF09IgogICAgICAgIGlzU2NhbGFyU3RlcFNlbGVjdG9yUmFuZ2VFbmFibGVkJCB8IGFzeW5jCiAgICAgICIKICAgICAgW2lzTGlua2VkVGltZUVuYWJsZWRdPSJpc0xpbmtlZFRpbWVFbmFibGVkJCB8IGFzeW5jIgogICAgICBbbGlua2VkVGltZVNlbGVjdGlvbl09ImxpbmtlZFRpbWVTZWxlY3Rpb24kIHwgYXN5bmMiCiAgICAgIFtzdGVwTWluTWF4XT0ic3RlcE1pbk1heCQgfCBhc3luYyIKICAgICAgKGxpbmtlZFRpbWVUb2dnbGVkKT0ib25MaW5rZWRUaW1lVG9nZ2xlZCgpIgogICAgICAobGlua2VkVGltZVNlbGVjdGlvbkNoYW5nZWQpPSJvbkxpbmtlZFRpbWVTZWxlY3Rpb25DaGFuZ2VkKCRldmVudCkiCiAgICAgIChzdGVwU2VsZWN0b3JUb2dnbGVkKT0ib25TdGVwU2VsZWN0b3JUb2dnbGVkKCkiCiAgICAgIChyYW5nZVNlbGVjdGlvblRvZ2dsZWQpPSJvblJhbmdlU2VsZWN0aW9uVG9nZ2xlZCgpIgogICAgPgogICAgPC9tZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncy1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIGpkPWNsYXNze307amQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8amQpfTtqZC5cdTAyNzVjbXA9eih7dHlwZTpqZCxzZWxlY3RvcnM6W1sibWV0cmljcy1kYXNoYm9hcmQtcmlnaHQtcGFuZSJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmRCgwLCJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyIpfSxkaXJlY3RpdmVzOltjQ10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGpkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1kYXNoYm9hcmQtcmlnaHQtcGFuZSIsdGVtcGxhdGU6IjxtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncz48L21ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzPiIsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCxudWxsKX0pKCk7ZnVuY3Rpb24gblp0KG4sdCl7aWYobiYxJiZEKDAsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsMTIpLG4mMil7bGV0IGU9UygpO1AoImNhcmRPYnNlcnZlciIsZS5jYXJkT2JzZXJ2ZXIpfX1mdW5jdGlvbiBvWnQobix0KXtuJjEmJih1KDAsImRpdiIsMTUpLEQoMSwibWF0LXNwaW5uZXIiLDE2KSxoKCkpfWZ1bmN0aW9uIGladChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMTcpLHUoMSwiZGl2IiwxOCksdSgyLCJoMiIsMTkpLFQoMywiU2V0dGluZ3MiKSxoKCksdSg0LCJidXR0b24iLDIwKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQuZW1pdCgpfSksRCg1LCJtYXQtaWNvbiIsMjEpLGgoKSxoKCksRCg2LCJtZXRyaWNzLWRhc2hib2FyZC1yaWdodC1wYW5lIiksaCgpfX12YXIgYVp0PWZ1bmN0aW9uKG4pe3JldHVybntjaGVja2VkOm4sInNldHRpbmdzLWJ1dHRvbiI6ITB9fSxtQz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmhvc3Q9dCx0aGlzLm9uU2V0dGluZ3NCdXR0b25DbGlja2VkPW5ldyAkLHRoaXMub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZD1uZXcgJCx0aGlzLm9uUGx1Z2luVHlwZVRvZ2dsZWQ9bmV3ICQsdGhpcy5vblBsdWdpblR5cGVBbGxUb2dnbGVkPW5ldyAkLHRoaXMuUGx1Z2luVHlwZT1Mbyx0aGlzLmNhcmRPYnNlcnZlcj1uZXcgcWsodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIjYwMHB4IDBweCA2MDBweCAwcHgiKX19O21DLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG1DKSh2KEwpKX07bUMuXHUwMjc1Y21wPXooe3R5cGU6bUMsc2VsZWN0b3JzOltbIm1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCJdXSxpbnB1dHM6e3Nob3dGaWx0ZXJlZFZpZXc6InNob3dGaWx0ZXJlZFZpZXciLGlzU2lkZXBhbmVPcGVuOiJpc1NpZGVwYW5lT3BlbiIsZmlsdGVyZWRQbHVnaW5UeXBlczoiZmlsdGVyZWRQbHVnaW5UeXBlcyIsaW5pdGlhbFRhZ3NMb2FkaW5nOiJpbml0aWFsVGFnc0xvYWRpbmcifSxvdXRwdXRzOntvblNldHRpbmdzQnV0dG9uQ2xpY2tlZDoib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQ6Im9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLG9uUGx1Z2luVHlwZVRvZ2dsZWQ6Im9uUGx1Z2luVHlwZVRvZ2dsZWQiLG9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQ6Im9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQifSxkZWNsczoyMix2YXJzOjIxLGNvbnN0czpmdW5jdGlvbigpe2xldCBuO3R5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP249Z29vZy5nZXRNc2coIlRvZ2dsZSBzZXR0aW5ncyBzaWRlIHBhbmUiKTpuPSRsb2NhbGl6ZWA6TGFiZWwgb24gYSB0b29sYmFyIGJ1dHRvbiB0byB0b2dnbGUgdGhlIHNldHRpbmdzIHNpZGUgcGFuZS7ikJ9kMzUxNmRiNmJiZTY4NjBhNTViZWFiNjZlNDk2OWRhYzYyNWI4ZDcy4pCfNzY1OTI4NTQ0NTU4MDgzODkyNTpUb2dnbGUgc2V0dGluZ3Mgc2lkZSBwYW5lYDtsZXQgdDtyZXR1cm4gdHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/dD1nb29nLmdldE1zZygiQ2xvc2Ugc2lkZSBwYW5lIik6dD0kbG9jYWxpemVgOkxhYmVsIG9uIGEgYnV0dG9uIHRvIGNsb3NlIHRoZSBzZXR0aW5ncyBzaWRlIHBhbmUu4pCfMDQ1MjFkYzBiNmE2NWNmNWMzODI5NDRjOWE4YjRiODQ0YTNlOTU5OOKQnzgxNTY3NjY5OTc3NDcxNjU4NzE6Q2xvc2Ugc2lkZSBwYW5lYCxbWzEsInRvb2xiYXIiXSxbIm11bHRpcGxlIiwiIiwiYXBwZWFyYW5jZSIsInN0YW5kYXJkIiwxLCJmaWx0ZXItdmlldyJdLFsibWF0LWJ1dHRvbiIsIiIsInJvbGUiLCJjaGVja2JveCIsImRhdGEtdmFsdWUiLCJhbGwiLDEsImZpbHRlci12aWV3LWJ1dHRvbiIsMywiY2xpY2siXSxbIm1hdC1idXR0b24iLCIiLCJyb2xlIiwiY2hlY2tib3giLCJkYXRhLXZhbHVlIiwic2NhbGFycyIsMSwiZmlsdGVyLXZpZXctYnV0dG9uIiwzLCJjbGljayJdLFsibWF0LWJ1dHRvbiIsIiIsInJvbGUiLCJjaGVja2JveCIsImRhdGEtdmFsdWUiLCJpbWFnZSIsMSwiZmlsdGVyLXZpZXctYnV0dG9uIiwzLCJjbGljayJdLFsibWF0LWJ1dHRvbiIsIiIsInJvbGUiLCJjaGVja2JveCIsImRhdGEtdmFsdWUiLCJoaXN0b2dyYW0iLDEsImZpbHRlci12aWV3LWJ1dHRvbiIsMywiY2xpY2siXSxbMSwicmlnaHQtaXRlbXMiXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sMywibmdDbGFzcyIsImNsaWNrIl0sWyJzdmdJY29uIiwic2V0dGluZ3NfMjRweCJdLFsxLCJzcGxpdC1jb250ZW50Il0sWyJjZGtTY3JvbGxhYmxlIiwiIl0sWzMsImNhcmRPYnNlcnZlciIsNCwibmdJZiJdLFszLCJjYXJkT2JzZXJ2ZXIiXSxbImNsYXNzIiwibG9hZGluZy1jb250YWluZXIiLDQsIm5nSWYiXSxbImNsYXNzIiwic2lkZWJhciIsNCwibmdJZiJdLFsxLCJsb2FkaW5nLWNvbnRhaW5lciJdLFsiZGlhbWV0ZXIiLCIzNiJdLFsxLCJzaWRlYmFyIl0sWzEsImhlYWRlciJdLFsxLCJ0aXRsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDApLEQoMSwibWV0cmljcy10YWctZmlsdGVyIiksdSgyLCJtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCIsMSksdSgzLCJidXR0b24iLDIpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLm9uUGx1Z2luVHlwZUFsbFRvZ2dsZWQuZW1pdCgpfSksVCg0LCIgQWxsICIpLGgoKSx1KDUsImJ1dHRvbiIsMyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25QbHVnaW5UeXBlVG9nZ2xlZC5lbWl0KGUuUGx1Z2luVHlwZS5TQ0FMQVJTKX0pLFQoNiwiIFNjYWxhcnMgIiksaCgpLHUoNywiYnV0dG9uIiw0KSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vblBsdWdpblR5cGVUb2dnbGVkLmVtaXQoZS5QbHVnaW5UeXBlLklNQUdFUyl9KSxUKDgsIiBJbWFnZSAiKSxoKCksdSg5LCJidXR0b24iLDUpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLm9uUGx1Z2luVHlwZVRvZ2dsZWQuZW1pdChlLlBsdWdpblR5cGUuSElTVE9HUkFNUyl9KSxUKDEwLCIgSGlzdG9ncmFtICIpLGgoKSxoKCksdSgxMSwiZGl2Iiw2KSx1KDEyLCJidXR0b24iLDcpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLm9uU2V0dGluZ3NCdXR0b25DbGlja2VkLmVtaXQoKX0pLEQoMTMsIm1hdC1pY29uIiw4KSxUKDE0LCIgU2V0dGluZ3MgIiksaCgpLGgoKSxoKCksdSgxNSwiZGl2Iiw5KSx1KDE2LCJkaXYiLDEwKSxrKDE3LG5adCwxLDEsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsMTEpLEQoMTgsIm1ldHJpY3MtcGlubmVkLXZpZXciLDEyKSxrKDE5LG9adCwyLDAsImRpdiIsMTMpLEQoMjAsIm1ldHJpY3MtY2FyZC1ncm91cHMiLDEyKSxoKCksaygyMSxpWnQsNywwLCJkaXYiLDE0KSxoKCkpLHQmMiYmKHgoMykscmUoImFyaWEtY2hlY2tlZCIsZS5maWx0ZXJlZFBsdWdpblR5cGVzLnNpemU9PT0wKSx4KDIpLHJlKCJhcmlhLWNoZWNrZWQiLGUuZmlsdGVyZWRQbHVnaW5UeXBlcy5oYXMoZS5QbHVnaW5UeXBlLlNDQUxBUlMpKSx4KDIpLHJlKCJhcmlhLWNoZWNrZWQiLGUuZmlsdGVyZWRQbHVnaW5UeXBlcy5oYXMoZS5QbHVnaW5UeXBlLklNQUdFUykpLHgoMikscmUoImFyaWEtY2hlY2tlZCIsZS5maWx0ZXJlZFBsdWdpblR5cGVzLmhhcyhlLlBsdWdpblR5cGUuSElTVE9HUkFNUykpLHgoMyksUCgibmdDbGFzcyIsYW8oMTksYVp0LGUuaXNTaWRlcGFuZU9wZW4pKSxyZSgiYXJpYS1wcmVzc2VkIixlLmlzU2lkZXBhbmVPcGVuKSx4KDQpLG1lKCJtYWluIiwhMCkoImZpbHRlci12aWV3IixlLnNob3dGaWx0ZXJlZFZpZXcpLHgoMSksUCgibmdJZiIsZS5zaG93RmlsdGVyZWRWaWV3KSx4KDEpLHFlKCJkaXNwbGF5IixlLnNob3dGaWx0ZXJlZFZpZXc/Im5vbmUiOiIiKSxQKCJjYXJkT2JzZXJ2ZXIiLGUuY2FyZE9ic2VydmVyKSx4KDEpLFAoIm5nSWYiLGUuaW5pdGlhbFRhZ3NMb2FkaW5nKSx4KDEpLHFlKCJkaXNwbGF5IixlLnNob3dGaWx0ZXJlZFZpZXc/Im5vbmUiOiIiKSxQKCJjYXJkT2JzZXJ2ZXIiLGUuY2FyZE9ic2VydmVyKSx4KDEpLFAoIm5nSWYiLGUuaXNTaWRlcGFuZU9wZW4pKX0sZGlyZWN0aXZlczpbSTAsVXMsZm4sam4sWGUsUnIsWHQsJDAsb0Msc0MscXIsamRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2ZsZXg6bm9uZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM1NTV9LnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy10YWctZmlsdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMSAxMDBweH0udG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO21hcmdpbi1sZWZ0OjE2cHg7cGFkZGluZy1sZWZ0OjE2cHh9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLnJpZ2h0LWl0ZW1zW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLnJpZ2h0LWl0ZW1zW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzU1NX0uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NHB4O2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fS5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6MDtmb250LXNpemU6MTJweDtmb250LXdlaWdodDpub3JtYWw7aGVpZ2h0OjI1cHg7bGluZS1oZWlnaHQ6MjVweDttaW4td2lkdGg6dW5zZXQ7cGFkZGluZzowIDEycHh9LmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gKyBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmVifWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVdICsgYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gKyBidXR0b25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5maWx0ZXItdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bYXJpYS1jaGVja2VkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvblthcmlhLWNoZWNrZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgYnV0dG9uW2FyaWEtY2hlY2tlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMjEyMTIxfS5zcGxpdC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7b3ZlcmZsb3cteTphdXRvO2ZsZXg6MX0ubWFpbltfbmdjb250ZW50LSVDT01QJV0sIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOnN0cmljdDtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87d2lsbC1jaGFuZ2U6dHJhbnNmb3JtLHNjcm9sbC1wb3NpdGlvbn0ubWFpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjVmNmY3O2ZsZXg6MSAxO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojM2EzYTNhfS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtZmlsdGVyZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLm1haW5bX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAubWFpbltfbmdjb250ZW50LSVDT01QJV0gICBtZXRyaWNzLXBpbm5lZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNTU1fS5tYWluLmZpbHRlci12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59Lm1haW4uZmlsdGVyLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy1maWx0ZXJlZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOmNvbnRlbnQ7b3ZlcmZsb3c6YXV0bzt3aWxsLWNoYW5nZTp0cmFuc2Zvcm0sc2Nyb2xsLXBvc2l0aW9ufS5sb2FkaW5nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoyMHB4IDB9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO2ZsZXg6MCAwIDI1MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIC5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjNTU1fS5zaWRlYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAuc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzU1NX0uc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0Om5vcm1hbDttYXJnaW46MH1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtkaXNwbGF5OmlubGluZS1mbGV4fWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpfVtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uLmNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtib3JkZXItY29sb3I6I2UwZTBlMH1ib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAuc2V0dGluZ3MtYnV0dG9uLmNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzIxMjEyMX1bX25naG9zdC0lQ09NUCVdICAgLnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAgIC5tYXQtYnV0dG9uLXdyYXBwZXJ7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXJ9W19uZ2hvc3QtJUNPTVAlXSAgIC5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo0cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobUMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiJtYWluX3ZpZXdfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIm1haW5fdmlld19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6TH1dfSx7c2hvd0ZpbHRlcmVkVmlldzpbe3R5cGU6ZH1dLGlzU2lkZXBhbmVPcGVuOlt7dHlwZTpkfV0sZmlsdGVyZWRQbHVnaW5UeXBlczpbe3R5cGU6ZH1dLGluaXRpYWxUYWdzTG9hZGluZzpbe3R5cGU6ZH1dLG9uU2V0dGluZ3NCdXR0b25DbGlja2VkOlt7dHlwZTpCfV0sb25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZDpbe3R5cGU6Qn1dLG9uUGx1Z2luVHlwZVRvZ2dsZWQ6W3t0eXBlOkJ9XSxvblBsdWdpblR5cGVBbGxUb2dnbGVkOlt7dHlwZTpCfV19KX0pKCk7dmFyIFVkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmlzU2lkZXBhbmVPcGVuJD10aGlzLnN0b3JlLnNlbGVjdChZRCksdGhpcy5pbml0aWFsVGFnc0xvYWRpbmckPXRoaXMuc3RvcmUuc2VsZWN0KEZFKS5waXBlKEpTKGU9PmUubGFzdExvYWRlZFRpbWVJbk1zPT09bnVsbCwhMCksRyhlPT5lLnN0YXRlPT09S3QuTE9BRElORyYmZS5sYXN0TG9hZGVkVGltZUluTXM9PT1udWxsKSksdGhpcy5zaG93RmlsdGVyZWRWaWV3JD10aGlzLnN0b3JlLnNlbGVjdCh4TSkucGlwZShHKGU9PmUubGVuZ3RoPjApKSx0aGlzLmZpbHRlcmVkUGx1Z2luVHlwZXMkPXRoaXMuc3RvcmUuc2VsZWN0KCRiKX1vblNldHRpbmdzQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goeXooKSl9b25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUHooKSl9b25QbHVnaW5WaXNpYmlsaXR5VG9nZ2xlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFd6KHtwbHVnaW46dH0pKX1vblNob3dBbGxQbHVnaW5zKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChxeigpKX19O1VkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFVkKSh2KHN0KSl9O1VkLlx1MDI3NWNtcD16KHt0eXBlOlVkLHNlbGVjdG9yczpbWyJtZXRyaWNzLW1haW4tdmlldyJdXSxkZWNsczo1LHZhcnM6MTIsY29uc3RzOltbMywic2hvd0ZpbHRlcmVkVmlldyIsImlzU2lkZXBhbmVPcGVuIiwiaW5pdGlhbFRhZ3NMb2FkaW5nIiwiZmlsdGVyZWRQbHVnaW5UeXBlcyIsIm9uU2V0dGluZ3NCdXR0b25DbGlja2VkIiwib25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCIsIm9uUGx1Z2luVHlwZVRvZ2dsZWQiLCJvblBsdWdpblR5cGVBbGxUb2dnbGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnQiLDApLEEoIm9uU2V0dGluZ3NCdXR0b25DbGlja2VkIixmdW5jdGlvbigpe3JldHVybiBlLm9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCl9KSgib25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkNsb3NlU2lkZXBhbmVCdXR0b25DbGlja2VkKCl9KSgib25QbHVnaW5UeXBlVG9nZ2xlZCIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25QbHVnaW5WaXNpYmlsaXR5VG9nZ2xlZChpKX0pKCJvblBsdWdpblR5cGVBbGxUb2dnbGVkIixmdW5jdGlvbigpe3JldHVybiBlLm9uU2hvd0FsbFBsdWdpbnMoKX0pLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpLFgoNCwiYXN5bmMiKSxoKCkpLHQmMiYmUCgic2hvd0ZpbHRlcmVkVmlldyIsUSgxLDQsZS5zaG93RmlsdGVyZWRWaWV3JCkpKCJpc1NpZGVwYW5lT3BlbiIsUSgyLDYsZS5pc1NpZGVwYW5lT3BlbiQpKSgiaW5pdGlhbFRhZ3NMb2FkaW5nIixRKDMsOCxlLmluaXRpYWxUYWdzTG9hZGluZyQpKSgiZmlsdGVyZWRQbHVnaW5UeXBlcyIsUSg0LDEwLGUuZmlsdGVyZWRQbHVnaW5UeXBlcyQpKX0sZGlyZWN0aXZlczpbbUNdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFVkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljcy1tYWluLXZpZXciLHRlbXBsYXRlOmAKICAgIDxtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnQKICAgICAgW3Nob3dGaWx0ZXJlZFZpZXddPSJzaG93RmlsdGVyZWRWaWV3JCB8IGFzeW5jIgogICAgICBbaXNTaWRlcGFuZU9wZW5dPSJpc1NpZGVwYW5lT3BlbiQgfCBhc3luYyIKICAgICAgW2luaXRpYWxUYWdzTG9hZGluZ109ImluaXRpYWxUYWdzTG9hZGluZyQgfCBhc3luYyIKICAgICAgW2ZpbHRlcmVkUGx1Z2luVHlwZXNdPSJmaWx0ZXJlZFBsdWdpblR5cGVzJCB8IGFzeW5jIgogICAgICAob25TZXR0aW5nc0J1dHRvbkNsaWNrZWQpPSJvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCgpIgogICAgICAob25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCk9Im9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQoKSIKICAgICAgKG9uUGx1Z2luVHlwZVRvZ2dsZWQpPSJvblBsdWdpblZpc2liaWxpdHlUb2dnbGVkKCRldmVudCkiCiAgICAgIChvblBsdWdpblR5cGVBbGxUb2dnbGVkKT0ib25TaG93QWxsUGx1Z2lucygpIgogICAgPjwvbWV0cmljcy1tYWluLXZpZXctY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO3ZhciBUbT1jbGFzc3t9O1RtLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFRtKX07VG0uXHUwMjc1Y21wPXooe3R5cGU6VG0sc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkIl1dLGRlY2xzOjMsdmFyczowLGNvbnN0czpbWyJzaWRlYmFyIiwiIl0sWyJtYWluIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJ0Yi1kYXNoYm9hcmQtbGF5b3V0IiksRCgxLCJydW5zLXNlbGVjdG9yIiwwKSxEKDIsIm1ldHJpY3MtbWFpbi12aWV3IiwxKSxoKCkpfSxkaXJlY3RpdmVzOlttZCxFbCxVZF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7anVzdGlmeS1jb250ZW50OnN0cmV0Y2g7b3ZlcmZsb3c6aGlkZGVufS5ub3RpY2VbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjQ1LDE1NywuODUpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmZmViM2I7Y29sb3I6IzIxMjEyMTtkaXNwbGF5OmJsb2NrO2ZsZXg6MCAwfXRiLWRhc2hib2FyZC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxO292ZXJmbG93OmhpZGRlbn1uYXZbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNlYmViZWI7ZmxleDpub25lO3dpZHRoOjM0MHB4fWJvZHkuZGFyay1tb2RlW19uZ2hvc3QtJUNPTVAlXSAgIG5hdltfbmdjb250ZW50LSVDT01QJV0sIGJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIG5hdltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwO2JvcmRlci1yaWdodC1jb2xvcjojNTU1fW1ldHJpY3MtbWFpbi12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhUbSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1ldHJpY3MtZGFzaGJvYXJkIix0ZW1wbGF0ZTpgCiAgICA8dGItZGFzaGJvYXJkLWxheW91dD4KICAgICAgPHJ1bnMtc2VsZWN0b3Igc2lkZWJhcj48L3J1bnMtc2VsZWN0b3I+CiAgICAgIDxtZXRyaWNzLW1haW4tdmlldyBtYWluPjwvbWV0cmljcy1tYWluLXZpZXc+CiAgICA8L3RiLWRhc2hib2FyZC1sYXlvdXQ+CiAgYCxzdHlsZVVybHM6WyJtZXRyaWNzX2NvbnRhaW5lci5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLG51bGwpfSkoKTt2YXIgWWQ9Y2xhc3N7fTtZZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxZZCl9O1lkLlx1MDI3NW1vZD1xKHt0eXBlOllkfSk7WWQuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLHNlLE1lXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWWQsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbbWRdLGV4cG9ydHM6W21kXSxpbXBvcnRzOltZLHNlLE1lXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChZZCx7ZGVjbGFyYXRpb25zOlttZF0saW1wb3J0czpbWSxzZSxNZV0sZXhwb3J0czpbbWRdfSl9KSgpO2Z1bmN0aW9uIGxadChuLHQpe24mMSYmKEVuKDApLFluKDEpLGtuKCkpfXZhciBjWnQ9WyIqIl0sZkM9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnZpZXdDb250YWluZXJSZWY9dCx0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lfW5nT25Jbml0KCl7aWYodGhpcy5jdXN0b21pemFibGVDb21wb25lbnQpe2xldCB0PXRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY3VzdG9taXphYmxlQ29tcG9uZW50LmNvbnN0cnVjdG9yKTt0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KHQpfX19O2ZDLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGZDKSh2KF9lKSx2KF9vKSl9O2ZDLlx1MDI3NWNtcD16KHt0eXBlOmZDLHNlbGVjdG9yczpbWyJ0Yi1jdXN0b21pemF0aW9uIl1dLGlucHV0czp7Y3VzdG9taXphYmxlQ29tcG9uZW50OiJjdXN0b21pemFibGVDb21wb25lbnQifSxuZ0NvbnRlbnRTZWxlY3RvcnM6Y1p0LGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih5bygpLGsoMCxsWnQsMiwwLCJuZy1jb250YWluZXIiLDApKSx0JjImJlAoIm5nSWYiLCFlLmN1c3RvbWl6YWJsZUNvbXBvbmVudCl9LGRpcmVjdGl2ZXM6W1h0XSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZkMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJ0Yi1jdXN0b21pemF0aW9uIix0ZW1wbGF0ZTpgCiAgICA8bmctY29udGFpbmVyICpuZ0lmPSIhY3VzdG9taXphYmxlQ29tcG9uZW50Ij4KICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PgogICAgPC9uZy1jb250YWluZXI+CiAgYH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6X2V9LHt0eXBlOl9vfV19LHtjdXN0b21pemFibGVDb21wb25lbnQ6W3t0eXBlOmR9XX0pfSkoKTt2YXIgaWg9Y2xhc3N7fTtpaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxpaCl9O2loLlx1MDI3NW1vZD1xKHt0eXBlOmlofSk7aWguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaWgsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1ldLGRlY2xhcmF0aW9uczpbZkNdLGV4cG9ydHM6W2ZDXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChpaCx7ZGVjbGFyYXRpb25zOltmQ10saW1wb3J0czpbWV0sZXhwb3J0czpbZkNdfSl9KSgpO3ZhciBhaD1jbGFzc3t9O2FoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGFoKX07YWguXHUwMjc1bW9kPXEoe3R5cGU6YWh9KTthaC5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGFoLFt7dHlwZTpaLGFyZ3M6W3tleHBvcnRzOlt5ZF0sZGVjbGFyYXRpb25zOlt5ZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoYWgse2RlY2xhcmF0aW9uczpbeWRdLGV4cG9ydHM6W3lkXX0pfSkoKTt2YXIgT3M9Y2xhc3N7fTtPcy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxPcyl9O09zLlx1MDI3NW1vZD1xKHt0eXBlOk9zfSk7T3MuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLGFoXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoT3MsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W1ksYWhdLGV4cG9ydHM6W1JsXSxkZWNsYXJhdGlvbnM6W1JsXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChPcyx7ZGVjbGFyYXRpb25zOltSbF0saW1wb3J0czpbWSxhaF0sZXhwb3J0czpbUmxdfSl9KSgpO3ZhciBSYz1jbGFzc3t9O1JjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFJjKX07UmMuXHUwMjc1bW9kPXEoe3R5cGU6UmN9KTtSYy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksX3Msc2VdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhSYyxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltDbV0sZXhwb3J0czpbQ21dLGltcG9ydHM6W1ksX3Msc2VdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFJjLHtkZWNsYXJhdGlvbnM6W0NtXSxpbXBvcnRzOltZLF9zLHNlXSxleHBvcnRzOltDbV19KX0pKCk7dmFyIEVjPWNsYXNze307RWMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RWMpfTtFYy5cdTAyNzVtb2Q9cSh7dHlwZTpFY30pO0VjLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxpcl1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEVjLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltZLGlyXSxleHBvcnRzOltQZF0sZGVjbGFyYXRpb25zOltQZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoRWMse2RlY2xhcmF0aW9uczpbUGRdLGltcG9ydHM6W1ksaXJdLGV4cG9ydHM6W1BkXX0pfSkoKTt2YXIgcmg9Y2xhc3N7fTtyaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxyaCl9O3JoLlx1MDI3NW1vZD1xKHt0eXBlOnJofSk7cmguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tKdSxZLE9zLFJjLGdyLE1lLGlpLG5yLGFpLHNlLG9yLEh1LGxhLEZ1LFh1LEVjLG5jXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMocmgsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0p1LFksT3MsUmMsZ3IsTWUsaWksbnIsYWksc2Usb3IsSHUsbGEsRnUsWHUsRWMsbmNdLGV4cG9ydHM6W3hkXSxlbnRyeUNvbXBvbmVudHM6W1F1XSxkZWNsYXJhdGlvbnM6W1IwLFF1LEUwLGswLFQwLHhkXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChyaCx7ZGVjbGFyYXRpb25zOltSMCxRdSxFMCxrMCxUMCx4ZF0saW1wb3J0czpbSnUsWSxPcyxSYyxncixNZSxpaSxucixhaSxzZSxvcixIdSxsYSxGdSxYdSxFYyxuY10sZXhwb3J0czpbeGRdfSl9KSgpO3ZhciBQcz1jbGFzc3t9O1BzLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFBzKX07UHMuXHUwMjc1bW9kPXEoe3R5cGU6UHN9KTtQcy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1kscmhdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhQcyxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbWSxyaF0sZXhwb3J0czpbRWxdLGRlY2xhcmF0aW9uczpbQTAsRWxdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFBzLHtkZWNsYXJhdGlvbnM6W0EwLEVsXSxpbXBvcnRzOltZLHJoXSxleHBvcnRzOltFbF19KX0pKCk7dmFyIHlzPWNsYXNze307eXMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8eXMpfTt5cy5cdTAyNzVtb2Q9cSh7dHlwZTp5c30pO3lzLlx1MDI3NWluaj1XKHt9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeXMsW3t0eXBlOlosYXJnczpbe2V4cG9ydHM6W0hsXSxkZWNsYXJhdGlvbnM6W0hsXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldCh5cyx7ZGVjbGFyYXRpb25zOltIbF0sZXhwb3J0czpbSGxdfSl9KSgpO3ZhciBrYz1jbGFzc3t9O2tjLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGtjKX07a2MuXHUwMjc1bW9kPXEoe3R5cGU6a2N9KTtrYy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksc2VdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhrYyxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltIZCxrbV0sZXhwb3J0czpbSGQsa21dLGltcG9ydHM6W1ksc2VdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGtjLHtkZWNsYXJhdGlvbnM6W0hkLGttXSxpbXBvcnRzOltZLHNlXSxleHBvcnRzOltIZCxrbV19KX0pKCk7dmFyIGxiPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vblRpbWVTZWxlY3Rpb25DaGFuZ2VkPW5ldyAkLHRoaXMub25UaW1lU2VsZWN0aW9uVG9nZ2xlZD1uZXcgJCx0aGlzLmF4aXNEaXJlY3Rpb249U2QuVkVSVElDQUwsdGhpcy5jYXJkRm9iSGVscGVyPXtnZXRTdGVwSGlnaGVyVGhhbkF4aXNQb3NpdGlvbjp0aGlzLmdldFN0ZXBIaWdoZXJUaGFuQXhpc1Bvc2l0aW9uLmJpbmQodGhpcyksZ2V0U3RlcExvd2VyVGhhbkF4aXNQb3NpdGlvbjp0aGlzLmdldFN0ZXBMb3dlclRoYW5BeGlzUG9zaXRpb24uYmluZCh0aGlzKX19Z2V0QXhpc1Bvc2l0aW9uRnJvbVN0YXJ0U3RlcCgpe3JldHVybiB0aGlzLnRlbXBvcmFsU2NhbGUodGhpcy50aW1lU2VsZWN0aW9uLnN0YXJ0LnN0ZXApfWdldEF4aXNQb3NpdGlvbkZyb21FbmRTdGVwKCl7cmV0dXJuIHRoaXMudGltZVNlbGVjdGlvbi5lbmQ9PT1udWxsP251bGw6dGhpcy50ZW1wb3JhbFNjYWxlKHRoaXMudGltZVNlbGVjdGlvbi5lbmQuc3RlcCl9Z2V0SGlnaGVzdFN0ZXAoKXtyZXR1cm4gdGhpcy5zdGVwc1t0aGlzLnN0ZXBzLmxlbmd0aC0xXX1nZXRMb3dlc3RTdGVwKCl7cmV0dXJuIHRoaXMuc3RlcHNbMF19Z2V0U3RlcEhpZ2hlclRoYW5BeGlzUG9zaXRpb24odCl7bGV0IGU9MDtmb3IoO3Q+dGhpcy50ZW1wb3JhbFNjYWxlKHRoaXMuc3RlcHNbZV0pJiZlPHRoaXMuc3RlcHMubGVuZ3RoLTE7KWUrKztyZXR1cm4gdGhpcy5zdGVwc1tlXX1nZXRTdGVwTG93ZXJUaGFuQXhpc1Bvc2l0aW9uKHQpe2xldCBlPXRoaXMuc3RlcHMubGVuZ3RoLTE7Zm9yKDt0PHRoaXMudGVtcG9yYWxTY2FsZSh0aGlzLnN0ZXBzW2VdKSYmZT4wOyllLS07cmV0dXJuIHRoaXMuc3RlcHNbZV19fTtsYi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxsYil9O2xiLlx1MDI3NWNtcD16KHt0eXBlOmxiLHNlbGVjdG9yczpbWyJoaXN0b2dyYW0tY2FyZC1mb2ItY29udHJvbGxlciJdXSxpbnB1dHM6e3N0ZXBzOiJzdGVwcyIsdGltZVNlbGVjdGlvbjoidGltZVNlbGVjdGlvbiIsdGVtcG9yYWxTY2FsZToidGVtcG9yYWxTY2FsZSJ9LG91dHB1dHM6e29uVGltZVNlbGVjdGlvbkNoYW5nZWQ6Im9uVGltZVNlbGVjdGlvbkNoYW5nZWQiLG9uVGltZVNlbGVjdGlvblRvZ2dsZWQ6Im9uVGltZVNlbGVjdGlvblRvZ2dsZWQifSxkZWNsczoxLHZhcnM6Nyxjb25zdHM6W1szLCJheGlzRGlyZWN0aW9uIiwidGltZVNlbGVjdGlvbiIsInN0YXJ0U3RlcEF4aXNQb3NpdGlvbiIsImVuZFN0ZXBBeGlzUG9zaXRpb24iLCJoaWdoZXN0U3RlcCIsImxvd2VzdFN0ZXAiLCJjYXJkRm9iSGVscGVyIiwib25UaW1lU2VsZWN0aW9uQ2hhbmdlZCIsIm9uVGltZVNlbGVjdGlvblRvZ2dsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImNhcmQtZm9iLWNvbnRyb2xsZXIiLDApLEEoIm9uVGltZVNlbGVjdGlvbkNoYW5nZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uVGltZVNlbGVjdGlvbkNoYW5nZWQuZW1pdChpKX0pKCJvblRpbWVTZWxlY3Rpb25Ub2dnbGVkIixmdW5jdGlvbigpe3JldHVybiBlLm9uVGltZVNlbGVjdGlvblRvZ2dsZWQuZW1pdCgpfSksaCgpKSx0JjImJlAoImF4aXNEaXJlY3Rpb24iLGUuYXhpc0RpcmVjdGlvbikoInRpbWVTZWxlY3Rpb24iLGUudGltZVNlbGVjdGlvbikoInN0YXJ0U3RlcEF4aXNQb3NpdGlvbiIsZS5nZXRBeGlzUG9zaXRpb25Gcm9tU3RhcnRTdGVwKCkpKCJlbmRTdGVwQXhpc1Bvc2l0aW9uIixlLmdldEF4aXNQb3NpdGlvbkZyb21FbmRTdGVwKCkpKCJoaWdoZXN0U3RlcCIsZS5nZXRIaWdoZXN0U3RlcCgpKSgibG93ZXN0U3RlcCIsZS5nZXRMb3dlc3RTdGVwKCkpKCJjYXJkRm9iSGVscGVyIixlLmNhcmRGb2JIZWxwZXIpfSxkaXJlY3RpdmVzOltrbV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGxiLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiaGlzdG9ncmFtLWNhcmQtZm9iLWNvbnRyb2xsZXIiLHRlbXBsYXRlOmAKICAgIDxjYXJkLWZvYi1jb250cm9sbGVyCiAgICAgIFtheGlzRGlyZWN0aW9uXT0iYXhpc0RpcmVjdGlvbiIKICAgICAgW3RpbWVTZWxlY3Rpb25dPSJ0aW1lU2VsZWN0aW9uIgogICAgICBbc3RhcnRTdGVwQXhpc1Bvc2l0aW9uXT0iZ2V0QXhpc1Bvc2l0aW9uRnJvbVN0YXJ0U3RlcCgpIgogICAgICBbZW5kU3RlcEF4aXNQb3NpdGlvbl09ImdldEF4aXNQb3NpdGlvbkZyb21FbmRTdGVwKCkiCiAgICAgIFtoaWdoZXN0U3RlcF09ImdldEhpZ2hlc3RTdGVwKCkiCiAgICAgIFtsb3dlc3RTdGVwXT0iZ2V0TG93ZXN0U3RlcCgpIgogICAgICBbY2FyZEZvYkhlbHBlcl09ImNhcmRGb2JIZWxwZXIiCiAgICAgIChvblRpbWVTZWxlY3Rpb25DaGFuZ2VkKT0ib25UaW1lU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KCRldmVudCkiCiAgICAgIChvblRpbWVTZWxlY3Rpb25Ub2dnbGVkKT0ib25UaW1lU2VsZWN0aW9uVG9nZ2xlZC5lbWl0KCkiCiAgICA+PC9jYXJkLWZvYi1jb250cm9sbGVyPgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7c3RlcHM6W3t0eXBlOmR9XSx0aW1lU2VsZWN0aW9uOlt7dHlwZTpkfV0sdGVtcG9yYWxTY2FsZTpbe3R5cGU6ZH1dLG9uVGltZVNlbGVjdGlvbkNoYW5nZWQ6W3t0eXBlOkJ9XSxvblRpbWVTZWxlY3Rpb25Ub2dnbGVkOlt7dHlwZTpCfV19KX0pKCk7dmFyIHNoPWNsYXNze307c2guXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8c2gpfTtzaC5cdTAyNzVtb2Q9cSh7dHlwZTpzaH0pO3NoLlx1MDI3NWluaj1XKHtpbXBvcnRzOltba2MsWSxhcix5c11dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHNoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2tmLGxiXSxleHBvcnRzOltrZl0saW1wb3J0czpba2MsWSxhcix5c119XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoc2gse2RlY2xhcmF0aW9uczpba2YsbGJdLGltcG9ydHM6W2tjLFksYXIseXNdLGV4cG9ydHM6W2tmXX0pfSkoKTt2UihrZixbVnMsSGwsWHQsbGIsbW5dLFtdKTt2YXIgeHM9Y2xhc3N7fTt4cy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx4cyl9O3hzLlx1MDI3NW1vZD1xKHt0eXBlOnhzfSk7eHMuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeHMsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpba2xdLGV4cG9ydHM6W2tsXSxpbXBvcnRzOltZXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldCh4cyx7ZGVjbGFyYXRpb25zOltrbF0saW1wb3J0czpbWV0sZXhwb3J0czpba2xdfSl9KSgpO3ZhciBOYz1jbGFzc3t9O05jLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE5jKX07TmMuXHUwMjc1bW9kPXEoe3R5cGU6TmN9KTtOYy5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksT3NdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhOYyxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltibSx6MF0sZXhwb3J0czpbYm1dLGltcG9ydHM6W1ksT3NdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KE5jLHtkZWNsYXJhdGlvbnM6W2JtLHowXSxpbXBvcnRzOltZLE9zXSxleHBvcnRzOltibV19KX0pKCk7dmFyIHZzPWNsYXNze307dnMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dnMpfTt2cy5cdTAyNzVtb2Q9cSh7dHlwZTp2c30pO3ZzLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxzZV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHZzLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W05sXSxleHBvcnRzOltObF0saW1wb3J0czpbWSxzZV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQodnMse2RlY2xhcmF0aW9uczpbTmxdLGltcG9ydHM6W1ksc2VdLGV4cG9ydHM6W05sXX0pfSkoKTt2YXIgbGg9Y2xhc3N7fTtsaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxsaCl9O2xoLlx1MDI3NW1vZD1xKHt0eXBlOmxofSk7bGguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLHNoLE1lLHNlLGxhLE5jLHhzLHZzXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobGgsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbTGQsWDBdLGV4cG9ydHM6W0xkXSxpbXBvcnRzOltZLHNoLE1lLHNlLGxhLE5jLHhzLHZzXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChsaCx7ZGVjbGFyYXRpb25zOltMZCxYMF0saW1wb3J0czpbWSxzaCxNZSxzZSxsYSxOYyx4cyx2c10sZXhwb3J0czpbTGRdfSl9KSgpO3ZhciBjaD1jbGFzc3t9O2NoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGNoKX07Y2guXHUwMjc1bW9kPXEoe3R5cGU6Y2h9KTtjaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksTWUsc2UsbGEsaXIsTmMseHMsdnNdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhjaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOlt3ZCxIMF0sZXhwb3J0czpbd2RdLGltcG9ydHM6W1ksTWUsc2UsbGEsaXIsTmMseHMsdnNdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KGNoLHtkZWNsYXJhdGlvbnM6W3dkLEgwXSxpbXBvcnRzOltZLE1lLHNlLGxhLGlyLE5jLHhzLHZzXSxleHBvcnRzOlt3ZF19KX0pKCk7dmFyIG1oPWNsYXNze307bWguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bWgpfTttaC5cdTAyNzVtb2Q9cSh7dHlwZTptaH0pO21oLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxzZV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG1oLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3pkXSxleHBvcnRzOlt6ZF0saW1wb3J0czpbWSxzZV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQobWgse2RlY2xhcmF0aW9uczpbemRdLGltcG9ydHM6W1ksc2VdLGV4cG9ydHM6W3pkXX0pfSkoKTt2YXIgZmg9Y2xhc3N7fTtmaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxmaCl9O2ZoLlx1MDI3NW1vZD1xKHt0eXBlOmZofSk7ZmguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLEJvLE1lLHNlLGFpLG9yXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZmgsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbSWQsRGQsQWRdLGV4cG9ydHM6W0lkLERkLEFkXSxpbXBvcnRzOltZLEJvLE1lLHNlLGFpLG9yXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChmaCx7ZGVjbGFyYXRpb25zOltJZCxEZCxBZF0saW1wb3J0czpbWSxCbyxNZSxzZSxhaSxvcl0sZXhwb3J0czpbSWQsRGQsQWRdfSl9KSgpO3ZhciBwaD1jbGFzc3t9O3BoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHBoKX07cGguXHUwMjc1bW9kPXEoe3R5cGU6cGh9KTtwaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksQm8sZmgsYXJdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhwaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltTY10sZXhwb3J0czpbU2NdLGltcG9ydHM6W1ksQm8sZmgsYXJdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHBoLHtkZWNsYXJhdGlvbnM6W1NjXSxpbXBvcnRzOltZLEJvLGZoLGFyXSxleHBvcnRzOltTY119KX0pKCk7dmFyIGRoPWNsYXNze307ZGguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZGgpfTtkaC5cdTAyNzVtb2Q9cSh7dHlwZTpkaH0pO2RoLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxXbixNZSxucixhaSxFaSxZbF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGRoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3hmLEYwXSxleHBvcnRzOlt4Zl0saW1wb3J0czpbWSxXbixNZSxucixhaSxFaSxZbF0sZW50cnlDb21wb25lbnRzOlt4Zl19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoZGgse2RlY2xhcmF0aW9uczpbeGYsRjBdLGltcG9ydHM6W1ksV24sTWUsbnIsYWksRWksWWxdLGV4cG9ydHM6W3hmXX0pfSkoKTt2YXIgZ2g9Y2xhc3N7fTtnaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxnaCl9O2doLlx1MDI3NW1vZD1xKHt0eXBlOmdofSk7Z2guXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1trYyxZLGRoLG1oLE9zLHlzLHBoLE1lLHNlLG9yLGxhLGFyLHhzLHZzXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZ2gsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbRmQsWjAsVzAscTBdLGV4cG9ydHM6W0ZkXSxpbXBvcnRzOltrYyxZLGRoLG1oLE9zLHlzLHBoLE1lLHNlLG9yLGxhLGFyLHhzLHZzXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChnaCx7ZGVjbGFyYXRpb25zOltGZCxaMCxXMCxxMF0saW1wb3J0czpba2MsWSxkaCxtaCxPcyx5cyxwaCxNZSxzZSxvcixsYSxhcix4cyx2c10sZXhwb3J0czpbRmRdfSl9KSgpO3ZhciB1aD1jbGFzc3t9O3VoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHVoKX07dWguXHUwMjc1bW9kPXEoe3R5cGU6dWh9KTt1aC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksY2gsZ2gsbGgseXNdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh1aCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOlt2ZCxRMCxCZF0sZXhwb3J0czpbdmQsQmRdLGltcG9ydHM6W1ksY2gsZ2gsbGgseXNdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHVoLHtkZWNsYXJhdGlvbnM6W3ZkLFEwLEJkXSxpbXBvcnRzOltZLGNoLGdoLGxoLHlzXSxleHBvcnRzOlt2ZCxCZF19KX0pKCk7dmFyIGhoPWNsYXNze307aGguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8aGgpfTtoaC5cdTAyNzVtb2Q9cSh7dHlwZTpoaH0pO2hoLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxFaV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGhoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1ZkXSxleHBvcnRzOltWZF0saW1wb3J0czpbWSxFaV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoaGgse2RlY2xhcmF0aW9uczpbVmRdLGltcG9ydHM6W1ksRWldLGV4cG9ydHM6W1ZkXX0pfSkoKTt2YXIgVGM9Y2xhc3N7fTtUYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxUYyl9O1RjLlx1MDI3NW1vZD1xKHt0eXBlOlRjfSk7VGMuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLGhoLE1lLHhjLGlpLHNlLEVpLGlyLGxzLEVjXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVGMsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbamQsbEMsY0NdLGV4cG9ydHM6W2pkXSxpbXBvcnRzOltZLGhoLE1lLHhjLGlpLHNlLEVpLGlyLGxzLEVjXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChUYyx7ZGVjbGFyYXRpb25zOltqZCxsQyxjQ10saW1wb3J0czpbWSxoaCxNZSx4YyxpaSxzZSxFaSxpcixscyxFY10sZXhwb3J0czpbamRdfSl9KSgpO3ZhciBfaD1jbGFzc3t9O19oLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF9oKX07X2guXHUwMjc1bW9kPXEoe3R5cGU6X2h9KTtfaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW3VoLFksUmMsX3MsTWUseGMsc2UsYWksbGEsVGMsemldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhfaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltLMCxObSxuQyxvQyx0QyxlQyxpQyxhQyxyQyxzQyxtQyxVZCxEMCxJMCxKMCwkMF0sZXhwb3J0czpbVWRdLGltcG9ydHM6W3VoLFksUmMsX3MsTWUseGMsc2UsYWksbGEsVGMsemldfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KF9oLHtkZWNsYXJhdGlvbnM6W0swLE5tLG5DLG9DLHRDLGVDLGlDLGFDLHJDLHNDLG1DLFVkLEQwLEkwLEowLCQwXSxpbXBvcnRzOlt1aCxZLFJjLF9zLE1lLHhjLHNlLGFpLGxhLFRjLHppXSxleHBvcnRzOltVZF19KX0pKCk7dmFyIENoPWNsYXNze307Q2guXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Q2gpfTtDaC5cdTAyNzVtb2Q9cSh7dHlwZTpDaH0pO0NoLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxpaCxZZCxfaCxzZSxUYyxQc11dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKENoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1RtXSxleHBvcnRzOltUbV0saW1wb3J0czpbWSxpaCxZZCxfaCxzZSxUYyxQc119XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoQ2gse2RlY2xhcmF0aW9uczpbVG1dLGltcG9ydHM6W1ksaWgsWWQsX2gsc2UsVGMsUHNdLGV4cG9ydHM6W1RtXX0pfSkoKTt2YXIgbVp0PSJNYXggcGluIGxpbWl0IGV4Y2VlZGVkLiBSZW1vdmUgZXhpc3RpbmcgcGlucyBiZWZvcmUgYWRkaW5nIG1vcmUuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvNDI0MiI7ZnVuY3Rpb24gYnV0KCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOmEyLGFsZXJ0RnJvbUFjdGlvbjpuPT57bGV0e3dhc1Bpbm5lZDp0LGNhbkNyZWF0ZU5ld1BpbnM6ZX09bjtyZXR1cm4hdCYmIWU/e2xvY2FsaXplZE1lc3NhZ2U6bVp0fTpudWxsfX1dfWZ1bmN0aW9uIE91dCgpe3JldHVybiBjdChkUCxuPT4oe3NjYWxhclNtb290aGluZzpufSkpfWZ1bmN0aW9uIFB1dCgpe3JldHVybiBjdCh5MyxuPT4oe2lnbm9yZU91dGxpZXJzOm59KSl9ZnVuY3Rpb24geXV0KCl7cmV0dXJuIGN0KFAzLG49Pih7dG9vbHRpcFNvcnRTdHJpbmc6U3RyaW5nKG4pfSkpfWZ1bmN0aW9uIHh1dCgpe3JldHVybiBjdChZRCxuPT4oe3RpbWVTZXJpZXNTZXR0aW5nc1BhbmVPcGVuZWQ6bn0pKX1mdW5jdGlvbiB2dXQoKXtyZXR1cm4gY3QoTzMsbj0+KHt0aW1lU2VyaWVzQ2FyZE1pbldpZHRoOm59KSl9ZnVuY3Rpb24gd3V0KCl7cmV0dXJuIGN0KFV5LG49Pih7c3RlcFNlbGVjdG9yRW5hYmxlZDpufSkpfWZ1bmN0aW9uIFN1dCgpe3JldHVybiBjdChWdixuPT4oe3JhbmdlU2VsZWN0aW9uRW5hYmxlZDpufSkpfWZ1bmN0aW9uIFJ1dCgpe3JldHVybiBjdChCdixuPT4oe2xpbmtlZFRpbWVFbmFibGVkOm59KSl9dmFyIE1oPWNsYXNze307TWguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TWgpfTtNaC5cdTAyNzVtb2Q9cSh7dHlwZTpNaH0pO01oLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W3twcm92aWRlOmprLHVzZUZhY3Rvcnk6VVksZGVwczpbVWtdfSx7cHJvdmlkZTpVayx1c2VWYWx1ZTpIRX1dLGltcG9ydHM6W1tZLHNzLFNpLHJpLmZvclBsdWdpbihDMyxUbSksWWwsQ2gsY28uZm9yRmVhdHVyZSh6RSxqWSxqayksSG8uZm9yRmVhdHVyZShbV01dKSx2YS5yZWdpc3RlckFsZXJ0QWN0aW9ucyhidXQpLE5uLmRlZmluZUdsb2JhbFNldHRpbmcoT3V0KSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKFB1dCksTm4uZGVmaW5lR2xvYmFsU2V0dGluZyh5dXQpLE5uLmRlZmluZUdsb2JhbFNldHRpbmcoeHV0KSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKHZ1dCksTm4uZGVmaW5lR2xvYmFsU2V0dGluZyh3dXQpLE5uLmRlZmluZUdsb2JhbFNldHRpbmcoU3V0KSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKFJ1dCldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhNaCxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbWSxzcyxTaSxyaS5mb3JQbHVnaW4oQzMsVG0pLFlsLENoLGNvLmZvckZlYXR1cmUoekUsalksamspLEhvLmZvckZlYXR1cmUoW1dNXSksdmEucmVnaXN0ZXJBbGVydEFjdGlvbnMoYnV0KSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKE91dCksTm4uZGVmaW5lR2xvYmFsU2V0dGluZyhQdXQpLE5uLmRlZmluZUdsb2JhbFNldHRpbmcoeXV0KSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKHh1dCksTm4uZGVmaW5lR2xvYmFsU2V0dGluZyh2dXQpLE5uLmRlZmluZUdsb2JhbFNldHRpbmcod3V0KSxObi5kZWZpbmVHbG9iYWxTZXR0aW5nKFN1dCksTm4uZGVmaW5lR2xvYmFsU2V0dGluZyhSdXQpXSxwcm92aWRlcnM6W3twcm92aWRlOmprLHVzZUZhY3Rvcnk6VVksZGVwczpbVWtdfSx7cHJvdmlkZTpVayx1c2VWYWx1ZTpIRX1dLGVudHJ5Q29tcG9uZW50czpbVG1dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KE1oLHtpbXBvcnRzOltZLHNzLFNpLHJpLFlsLENoLE5vLHFpLHZhLE5uLE5uLE5uLE5uLE5uLE5uLE5uLE5uXX0pfSkoKTtmdW5jdGlvbiBFdXQobil7cmV0dXJuIG4uc3RhcnRzV2l0aCgiY291bnRAIil9ZnVuY3Rpb24gQUYobil7cmV0dXJuIG4uc3RhcnRzV2l0aCgiblBNSUAiKXx8bi5zdGFydHNXaXRoKCJuUE1JX2RpZmZAIil9ZnVuY3Rpb24gU1Mobil7cmV0dXJuIG4uc3RhcnRzV2l0aCgiblBNSUAiKX1mdW5jdGlvbiBBYyhuKXtyZXR1cm4gbi5zcGxpdCgiQCIsMilbMV19dmFyIE9YdD0kWihHaHQoKSwxKTtmdW5jdGlvbiBQWHQobil7bGV0IHQ9bi5sZW5ndGgsZSxvO2Zvcig7dDspbz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqdC0tKSxlPW5bdF0sblt0XT1uW29dLG5bb109ZTtyZXR1cm4gbn1mdW5jdGlvbiB5WHQobil7cmV0dXJuWy4uLm5ldyBBcnJheShuKV0ubWFwKCh0LGUpPT5lKX1mdW5jdGlvbiBXaHQobil7bGV0IHQ9T2JqZWN0LmtleXMobik7cmV0dXJue3BvaW50czpuLHBvaW50S2V5czp0LHNodWZmbGVkRGF0YUluZGljZXM6UFh0KHlYdCh0Lmxlbmd0aCkpLGhhc1VtYXBSdW46ITF9fWZ1bmN0aW9uIFlGKG4sdCl7cmV0dXJuYCR7dH0vJHtufWB9ZnVuY3Rpb24geFh0KG4sdCl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhuKS5tYXAoKFtlLG9dKT0+W1lGKGUsdCksb10pKX1mdW5jdGlvbiB2WHQobix0KXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKG4pLm1hcCgoW2Usb10pPT5bWUYoZSx0KSxvXSkpfWZ1bmN0aW9uIHdYdChuLHQpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMobikubWFwKChbZSxvXSk9PltZRihlLHQpLG9dKSl9ZnVuY3Rpb24gU1h0KG4sdCl7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhuKS5tYXAoKFtlLG9dKT0+W1lGKGUsdCksb10pKX12YXIgV2Q9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy5odHRwUGF0aFByZWZpeD0iZGF0YS9wbHVnaW4vbnBtaSJ9ZmV0Y2hEYXRhKHQpe3JldHVybiBnYSh0aGlzLmZldGNoQW5ub3RhdGlvbnModCksdGhpcy5mZXRjaE1ldHJpY3ModCksdGhpcy5mZXRjaFZhbHVlcyh0KSx0aGlzLmZldGNoRW1iZWRkaW5ncyh0KSkucGlwZShHKChbZSxvLGksYV0pPT57bGV0IHI9e30scz17fSxsLGM9MDtmb3IobGV0IG0gb2YgT2JqZWN0LmtleXMoZSkpZm9yKGxldCBmIGluIGVbbV0pe2xldCBwPWVbbV1bZl07T2JqZWN0LmtleXMoYSkubGVuZ3RoJiYhc1twXSYmYVttXVtmXSYmYVttXVtmXS5zb21lKE09Pk0hPT0wKSYmKHNbcF09e3ZlY3RvcjphW21dW2ZdLGluZGV4OmMsbmFtZTpwfSxjPWMrMSk7bGV0IGc9bmV3IE1hcDtmb3IobGV0IE0gaW4gb1ttXSl7bGV0IHk9b1ttXVtNXSxPPUFjKHkpLGI9Zy5nZXQoTyk7Ynx8KGI9e25QTUlWYWx1ZTpudWxsLGNvdW50VmFsdWU6bnVsbCxhbm5vdGF0aW9uOnAsbWV0cmljOk8scnVuOm19LGcuc2V0KE8sYikpLEV1dCh5KT9iLmNvdW50VmFsdWU9aVttXVtmXVtNXTpBRih5KSYmKGIublBNSVZhbHVlPWlbbV1bZl1bTV0pfWxldCBfPXJbcF0/cltwXTpbXTtyW3BdPVsuLi5fLC4uLmcudmFsdWVzKCldfXJldHVybiBPYmplY3Qua2V5cyhzKS5sZW5ndGgmJihsPVdodChzKSkse2Fubm90YXRpb25EYXRhOnIsbWV0cmljczpvLGVtYmVkZGluZ0RhdGFTZXQ6bH19KSxucyhlPT5lIGluc3RhbmNlb2YgX00mJjQwMDw9ZS5zdGF0dXMmJmUuc3RhdHVzPDUwMD9kbih7YW5ub3RhdGlvbkRhdGE6e30sbWV0cmljczp7fSxlbWJlZGRpbmdEYXRhU2V0OnZvaWQgMH0pOkxDKGUpKSl9ZmV0Y2hBbm5vdGF0aW9ucyh0KXtsZXQgZT10Lm1hcChvPT57bGV0IGk9YC9leHBlcmltZW50LyR7b30vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS9hbm5vdGF0aW9uc2A7cmV0dXJuIHRoaXMuaHR0cC5nZXQoaSkucGlwZShHKGE9PnhYdChhLG8pKSl9KTtyZXR1cm4gZ2EoZSkucGlwZShHKG89PntsZXQgaT17fTtmb3IobGV0IGEgb2YgbylpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSxhKTtyZXR1cm4gaX0pKX1mZXRjaE1ldHJpY3ModCl7bGV0IGU9dC5tYXAobz0+e2xldCBpPWAvZXhwZXJpbWVudC8ke299LyR7dGhpcy5odHRwUGF0aFByZWZpeH0vbWV0cmljc2A7cmV0dXJuIHRoaXMuaHR0cC5nZXQoaSkucGlwZShHKGE9PnZYdChhLG8pKSl9KTtyZXR1cm4gZ2EoZSkucGlwZShHKG89PntsZXQgaT17fTtmb3IobGV0IGEgb2YgbylpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSxhKTtyZXR1cm4gaX0pKX1mZXRjaFZhbHVlcyh0KXtsZXQgZT10Lm1hcChvPT57bGV0IGk9YC9leHBlcmltZW50LyR7b30vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS92YWx1ZXNgO3JldHVybiB0aGlzLmh0dHAuZ2V0KGkpLnBpcGUoRyhhPT53WHQoYSxvKSkpfSk7cmV0dXJuIGdhKGUpLnBpcGUoRyhvPT57bGV0IGk9e307Zm9yKGxldCBhIG9mIG8paT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksYSk7cmV0dXJuIGl9KSl9ZmV0Y2hFbWJlZGRpbmdzKHQpe2xldCBlPXQubWFwKG89PntsZXQgaT1gL2V4cGVyaW1lbnQvJHtvfS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L2VtYmVkZGluZ3NgO3JldHVybiB0aGlzLmh0dHAuZ2V0KGkpLnBpcGUoRyhhPT5TWHQoYSxvKSkpfSk7cmV0dXJuIGdhKGUpLnBpcGUoRyhvPT57bGV0IGk9e307Zm9yKGxldCBhIG9mIG8paT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksYSk7cmV0dXJuIGl9KSl9fTtXZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxXZCkoSShhYSkpfTtXZC5cdTAyNzVwcm92PVB0KHt0b2tlbjpXZCxmYWN0b3J5OldkLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhXZCxbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTphYX1dfSxudWxsKX0pKCk7dmFyIE9oPWNsYXNze307T2guXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8T2gpfTtPaC5cdTAyNzVtb2Q9cSh7dHlwZTpPaH0pO09oLlx1MDI3NWluaj1XKHtwcm92aWRlcnM6W1dkXSxpbXBvcnRzOltbcmFdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhPaCxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbcmFdLHByb3ZpZGVyczpbV2RdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KE9oLHtpbXBvcnRzOltyYV19KX0pKCk7dmFyIEdGPU50KCJbTlBNSV0gblBNSSBMb2FkZWQiKSxXRj1OdCgiW05QTUldIG5QTUkgUGx1Z2luIERhdGEgUmVxdWVzdGVkIikscUY9TnQoIltOUE1JXSBuUE1JIFBsdWdpbiBEYXRhIExvYWRlZCIsYmUoKSksWkY9TnQoIltOUE1JXSBuUE1JIFBsdWdpbiBEYXRhIFJlcXVlc3QgRmFpbGVkIiksWEY9TnQoIltOUE1JXSBBZGRpbmcvUmVtb3ZpbmcgQW5ub3RhdGlvbnMgdG8vZnJvbSBTZWxlY3RlZCIsYmUoKSksVTQ9TnQoIltOUE1JXSBBbm5vdGF0aW9ucyBTZXQiLGJlKCkpLFFGPU50KCJbTlBNSV0gQ2xlYXJpbmcgdGhlIEFubm90YXRpb24gU2VsZWN0aW9uIiksS0Y9TnQoIltOUE1JXSBBZGRpbmcvUmVtb3ZpbmcgQW5ub3RhdGlvbnMgdG8vZnJvbSBGbGFnZ2VkIixiZSgpKSxKRj1OdCgiW05QTUldIEFkZGluZy9SZW1vdmluZyBBbm5vdGF0aW9ucyB0by9mcm9tIEhpZGRlbiIsYmUoKSksTlM9TnQoIltOUE1JXSBBbm5vdGF0aW9ucyBSZWdleCBDaGFuZ2VkIixiZSgpKSxZND1OdCgiW05QTUldIE1ldHJpY3MgUmVnZXggQ2hhbmdlZCIsYmUoKSksJEY9TnQoIltOUE1JXSBNZXRyaWMgRmlsdGVyIEFkZGVkIixiZSgpKSxUUz1OdCgiW05QTUldIE1ldHJpYyBGaWx0ZXIgUmVtb3ZlZCIsYmUoKSksQVM9TnQoIltOUE1JXSBNZXRyaWMgRmlsdGVyIENoYW5nZWQiLGJlKCkpLHQ3PU50KCJbTlBNSV0gQW5ub3RhdGlvbiBTb3J0IENoYW5nZWQiLGJlKCkpLGU3PU50KCJbTlBNSV0gU2ltaWxhcml0eSBTb3J0IENoYW5nZWQiLGJlKCkpLG43PU50KCJbTlBNSV0gVG9nZ2xlIFBDIEV4cGFuZGVkIiksbzc9TnQoIltOUE1JXSBUb2dnbGUgQW5ub3RhdGlvbnMgRXhwYW5kZWQiKSxEUz1OdCgiW05QTUldIFRvZ2dsZSBTaWRlYmFyIEV4cGFuZGVkIiksaTc9TnQoIltOUE1JXSBTaG93IENvdW50cyBUb2dnbGVkIiksYTc9TnQoIltOUE1JXSBTaG93IEhpZGRlbiBBbm5vdGF0aW9ucyBUb2dnbGVkIikscjc9TnQoIltOUE1JXSBFbWJlZGRpbmdzIFZpZXcgVG9nZ2xlZCIsYmUoKSksczc9TnQoIltOUE1JXSBTaWRlYmFyIFdpZHRoIENoYW5nZWQiLGJlKCkpLGw3PU50KCJbTlBNSV0gRW1iZWRkaW5ncyBTaWRlYmFyIFdpZHRoIENoYW5nZWQiLGJlKCkpLElTPU50KCJbTlBNSV0gRW1iZWRkaW5ncyBTaWRlYmFyIEV4cGFuZGVkIFRvZ2dsZWQiKSxxaHQ9TnQoIltOUE1JXSBDaGFuZ2UgRW1iZWRkaW5nIERhdGFTZXQiLGJlKCkpO3ZhciBIUz0ibnBtaSIselM7KGZ1bmN0aW9uKG4pe25bbi5BTkQ9MF09IkFORCJ9KSh6U3x8KHpTPXt9KSk7dmFyIEhPOyhmdW5jdGlvbihuKXtuW24uTUVUUklDPTBdPSJNRVRSSUMiLG5bbi5PUEVSQVRPUj0xXT0iT1BFUkFUT1IifSkoSE98fChITz17fSkpO3ZhciBaeDsoZnVuY3Rpb24obil7bltuLkRFRkFVTFQ9MF09IkRFRkFVTFQiLG5bbi5FTUJFRERJTkdTPTFdPSJFTUJFRERJTkdTIn0pKFp4fHwoWng9e30pKTt2YXIgS3I7KGZ1bmN0aW9uKG4pe25bbi5ERVNDRU5ESU5HPTBdPSJERVNDRU5ESU5HIixuW24uQVNDRU5ETkc9MV09IkFTQ0VORE5HIixuW24uU0lNSUxBUj0yXT0iU0lNSUxBUiIsbltuLkRJU1NJTUlMQVI9M109IkRJU1NJTUlMQVIifSkoS3J8fChLcj17fSkpO3ZhciBKcj1CYShIUyksWmh0PWN0KEpyLG49Pm4ucGx1Z2luRGF0YUxvYWRlZC5zdGF0ZSksWHg9Y3QoSnIsbj0+bi5hbm5vdGF0aW9uRGF0YSksUXg9Y3QoSnIsbj0+bi5ydW5Ub01ldHJpY3MpLGM3PWN0KEpyLG49Pm4uZW1iZWRkaW5nRGF0YVNldCksZ0M9Y3QoSnIsbj0+bi5zZWxlY3RlZEFubm90YXRpb25zKSxtNz1jdChKcixuPT5uLmZsYWdnZWRBbm5vdGF0aW9ucyksRlM9Y3QoSnIsbj0+bi5oaWRkZW5Bbm5vdGF0aW9ucyksTFM9Y3QoSnIsbj0+bi5hbm5vdGF0aW9uc1JlZ2V4KSxYaHQ9Y3QoSnIsbj0+bi5tZXRyaWNzUmVnZXgpLGY3PWN0KEpyLG49Pm4ubWV0cmljQXJpdGhtZXRpYyksUGg9Y3QoSnIsbj0+bi5tZXRyaWNGaWx0ZXJzKSxCUz1jdChKcixuPT5uLnNvcnQpLFFodD1jdChKcixuPT5uLnBjRXhwYW5kZWQpLHA3PWN0KEpyLG49Pm4uYW5ub3RhdGlvbnNFeHBhbmRlZCksZDc9Y3QoSnIsbj0+bi5zaWRlYmFyRXhwYW5kZWQpLGc3PWN0KEpyLG49Pm4uc2hvd0NvdW50cyksVlM9Y3QoSnIsbj0+bi5zaG93SGlkZGVuQW5ub3RhdGlvbnMpLEtodD1jdChKcixuPT5uLnZpZXdBY3RpdmUpLEt4PWN0KEpyLG49Pm4uc2lkZWJhcldpZHRoKSxKaHQ9Y3QoSnIsbj0+bi5lbWJlZGRpbmdzTWV0cmljKSwkaHQ9Y3QoSnIsbj0+bi5lbWJlZGRpbmdzU2lkZWJhcldpZHRoKSx1Nz1jdChKcixuPT5uLmVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQpO3ZhciBtYj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbyl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9ZSx0aGlzLmRhdGFTb3VyY2U9byx0aGlzLmxvYWREYXRhJD1NYSgoKT0+e2xldCBpPXRoaXMubG9hZFBsdWdpbkRhdGEoKTtyZXR1cm4geW4oaSkucGlwZShHKCgpPT4oe30pKSl9LHtkaXNwYXRjaDohMX0pfWxvYWRQbHVnaW5EYXRhKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShGbyhHRiksT24odGhpcy5zdG9yZS5zZWxlY3QoWmh0KSx0aGlzLnN0b3JlLnNlbGVjdChKcykpLHVlKChbLHQsZV0pPT50IT09S3QuTE9BRElORyYmZSE9PW51bGwpLGFuKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKFdGKCkpKSxVbigoWywsdF0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hEYXRhKHQpLnBpcGUoYW4oZT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2gocUYoZSkpfSksRygoKT0+e30pLG5zKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaChaRigpKSxOcykpKSkpfX07bWIuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bWIpKEkoVG8pLEkoc3QpLEkoV2QpKX07bWIuXHUwMjc1cHJvdj1QdCh7dG9rZW46bWIsZmFjdG9yeTptYi5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMobWIsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6VG99LHt0eXBlOnN0fSx7dHlwZTpXZH1dfSxudWxsKX0pKCk7dmFyIFpkPWNsYXNze307WmQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WmQpfTtaZC5cdTAyNzVjbXA9eih7dHlwZTpaZCxzZWxlY3RvcnM6W1sibnBtaS1pbmFjdGl2ZS12aWV3Il1dLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWzEsImNvbnRhaW5lciJdLFsxLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiksdSgxLCJkaXYiLDApLHUoMiwiZGl2IiwxKSxUKDMsIm5QTUkgaXMgaW5hY3RpdmUgYmVjYXVzZSBubyBkYXRhIGlzIGF2YWlsYWJsZS4iKSxoKCksdSg0LCJkaXYiKSxUKDUsIiBUbyB1c2UgdGhlIG5QTUksIGNhbGN1bGF0ZSBuUE1JIHZhbHVlcywgYW5kIGxvZyB0aGVtIHVzaW5nIHRoZSBzdW1tYXJ5IHdyaXRlci4gIiksaCgpLGgoKSxoKCkpfSxzdHlsZXM6W2AuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7CiAgaGVpZ2h0OiAxMDAlOwogIGZvbnQtZmFtaWx5OiBSb2JvdG87CiAgZm9udC1zaXplOiAxNXB4OwogIHBhZGRpbmc6IDUwcHg7Cn0KCi50aXRsZVtfbmdjb250ZW50LSVDT01QJV0gewogIGZvbnQtc2l6ZTogMTM1JTsKICBmb250LXdlaWdodDogYm9sZDsKICBtYXJnaW4tYm90dG9tOiAyNXB4Owp9YF19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWmQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pLWluYWN0aXZlLXZpZXciLHRlbXBsYXRlVXJsOiIuL2luYWN0aXZlX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2luYWN0aXZlX2NvbXBvbmVudC5jc3MiXX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIGtYdD17cGx1Z2luRGF0YUxvYWRlZDp7c3RhdGU6S3QuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sYW5ub3RhdGlvbkRhdGE6e30sZW1iZWRkaW5nRGF0YVNldDp2b2lkIDAscnVuVG9NZXRyaWNzOnt9LHNlbGVjdGVkQW5ub3RhdGlvbnM6W10sZmxhZ2dlZEFubm90YXRpb25zOltdLGhpZGRlbkFubm90YXRpb25zOltdLGFubm90YXRpb25zUmVnZXg6IiIsbWV0cmljc1JlZ2V4OiIiLG1ldHJpY0FyaXRobWV0aWM6W10sbWV0cmljRmlsdGVyczp7fSxzb3J0OnttZXRyaWM6IiIsb3JkZXI6S3IuREVTQ0VORElOR30scGNFeHBhbmRlZDohMCxhbm5vdGF0aW9uc0V4cGFuZGVkOiEwLHNpZGViYXJFeHBhbmRlZDohMCxzaG93Q291bnRzOiEwLHNob3dIaWRkZW5Bbm5vdGF0aW9uczohMSxzaWRlYmFyV2lkdGg6MzAwLHZpZXdBY3RpdmU6WnguREVGQVVMVCxlbWJlZGRpbmdzTWV0cmljOiIiLGVtYmVkZGluZ3NTaWRlYmFyV2lkdGg6NTAwLGVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQ6ITB9LE5YdD14YShrWHQsWXQoV0Ysbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpLdC5MT0FESU5HfSl9KSksWXQoWkYsbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpLdC5GQUlMRUR9KX0pKSxZdChxRiwobix7YW5ub3RhdGlvbkRhdGE6dCxtZXRyaWNzOmUsZW1iZWRkaW5nRGF0YVNldDpvfSk9PntsZXQgaT17fTtmb3IobGV0IGEgaW4gZSl7aVthXT1bXTtmb3IobGV0IHIgb2YgZVthXSlBRihyKSYmaVthXS5wdXNoKHIpfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3J1blRvTWV0cmljczppLGFubm90YXRpb25EYXRhOnQsZW1iZWRkaW5nRGF0YVNldDpvLHBsdWdpbkRhdGFMb2FkZWQ6e3N0YXRlOkt0LkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX19KX0pLFl0KFhGLChuLHthbm5vdGF0aW9uczp0fSk9PntsZXQgZT1uZXcgU2V0KFsuLi5uLnNlbGVjdGVkQW5ub3RhdGlvbnMsLi4udF0pO2lmKGUuc2l6ZT09PW4uc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGxldCBvIG9mIHQpZS5kZWxldGUobyk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2VsZWN0ZWRBbm5vdGF0aW9uczpbLi4uZV19KX0pLFl0KFU0LChuLHthbm5vdGF0aW9uczp0fSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2VsZWN0ZWRBbm5vdGF0aW9uczp0fSkpLFl0KFFGLG49Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c2VsZWN0ZWRBbm5vdGF0aW9uczpbXX0pKSxZdChLRiwobix7YW5ub3RhdGlvbnM6dH0pPT57bGV0IGU9bmV3IFNldChbLi4ubi5mbGFnZ2VkQW5ub3RhdGlvbnMsLi4udF0pO2lmKGUuc2l6ZT09PW4uZmxhZ2dlZEFubm90YXRpb25zLmxlbmd0aClmb3IobGV0IG8gb2YgdCllLmRlbGV0ZShvKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtmbGFnZ2VkQW5ub3RhdGlvbnM6Wy4uLmVdLHNlbGVjdGVkQW5ub3RhdGlvbnM6W119KX0pLFl0KEpGLChuLHthbm5vdGF0aW9uczp0fSk9PntsZXQgZT1uZXcgU2V0KFsuLi5uLmhpZGRlbkFubm90YXRpb25zLC4uLnRdKTtpZihlLnNpemU9PT1uLmhpZGRlbkFubm90YXRpb25zLmxlbmd0aClmb3IobGV0IG8gb2YgdCllLmRlbGV0ZShvKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtoaWRkZW5Bbm5vdGF0aW9uczpbLi4uZV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbXX0pfSksWXQoTlMsKG4se3JlZ2V4OnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHthbm5vdGF0aW9uc1JlZ2V4OnR9KSksWXQoWTQsKG4se3JlZ2V4OnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHttZXRyaWNzUmVnZXg6dH0pKSxZdCgkRiwobix7bWV0cmljOnR9KT0+e2lmKG4ubWV0cmljRmlsdGVyc1t0XSlyZXR1cm4gbjtsZXQgZT1bXTtyZXR1cm4gbi5tZXRyaWNBcml0aG1ldGljLmxlbmd0aCE9PTAmJmUucHVzaCh7a2luZDpITy5PUEVSQVRPUixvcGVyYXRvcjp6Uy5BTkR9KSxlLnB1c2goe2tpbmQ6SE8uTUVUUklDLG1ldHJpYzp0fSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHttZXRyaWNBcml0aG1ldGljOlsuLi5uLm1ldHJpY0FyaXRobWV0aWMsLi4uZV0sbWV0cmljRmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5tZXRyaWNGaWx0ZXJzKSx7W3RdOnttYXg6MSxtaW46LTEsaW5jbHVkZU5hTjohMX19KSxzb3J0OnttZXRyaWM6dCxvcmRlcjpLci5ERVNDRU5ESU5HfX0pfSksWXQoVFMsKG4se21ldHJpYzp0fSk9PntpZighbi5tZXRyaWNGaWx0ZXJzW3RdKXJldHVybiBuO2xldCBlPTAsbz0wLGk9MixhPW4ubWV0cmljRmlsdGVycyxyPXQscz1hW3JdLGw9ZV8oYSxbdHlwZW9mIHI9PSJzeW1ib2wiP3I6cisiIl0pO2ZvcihsZXQgYyBpbiBuLm1ldHJpY0FyaXRobWV0aWMpe2xldCBtPW4ubWV0cmljQXJpdGhtZXRpY1tjXTttLmtpbmQ9PT1ITy5NRVRSSUMmJm0ubWV0cmljPT09dCYmKGU9cGFyc2VJbnQoYykpfXJldHVybiBlIT09MCYmKG89ZS0xLGk9ZSsxKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse21ldHJpY0FyaXRobWV0aWM6Wy4uLm4ubWV0cmljQXJpdGhtZXRpYy5zbGljZSgwLG8pLC4uLm4ubWV0cmljQXJpdGhtZXRpYy5zbGljZShpKV0sbWV0cmljRmlsdGVyczpsfSl9KSxZdChBUywobix7bWV0cmljOnQsbWF4OmUsbWluOm8saW5jbHVkZU5hTjppfSk9Pm4ubWV0cmljRmlsdGVyc1t0XT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse21ldHJpY0ZpbHRlcnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4ubWV0cmljRmlsdGVycykse1t0XTp7bWF4OmUsbWluOm8saW5jbHVkZU5hTjppfX0pfSk6biksWXQodDcsKG4se21ldHJpYzp0fSk9PntsZXQgZT17bWV0cmljOnQsb3JkZXI6S3IuREVTQ0VORElOR307cmV0dXJuIG4uc29ydC5tZXRyaWM9PT10JiZuLnNvcnQub3JkZXI9PT1Lci5ERVNDRU5ESU5HJiYoZS5vcmRlcj1Lci5BU0NFTkRORyksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzb3J0OmV9KX0pLFl0KGU3LChuLHthbm5vdGF0aW9uOnR9KT0+e2xldCBlPXttZXRyaWM6dCxvcmRlcjpLci5TSU1JTEFSfTtyZXR1cm4gbi5zb3J0Lm1ldHJpYz09PXQmJm4uc29ydC5vcmRlcj09PUtyLlNJTUlMQVImJihlLm9yZGVyPUtyLkRJU1NJTUlMQVIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7c29ydDplfSl9KSxZdChuNyxuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3BjRXhwYW5kZWQ6IW4ucGNFeHBhbmRlZH0pKSxZdChvNyxuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2Fubm90YXRpb25zRXhwYW5kZWQ6IW4uYW5ub3RhdGlvbnNFeHBhbmRlZH0pKSxZdChEUyxuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3NpZGViYXJFeHBhbmRlZDohbi5zaWRlYmFyRXhwYW5kZWR9KSksWXQoaTcsbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzaG93Q291bnRzOiFuLnNob3dDb3VudHN9KSksWXQoYTcsbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzaG93SGlkZGVuQW5ub3RhdGlvbnM6IW4uc2hvd0hpZGRlbkFubm90YXRpb25zfSkpLFl0KHI3LChuLHttZXRyaWM6dH0pPT57bGV0IGU9WnguRU1CRURESU5HUyxvPXQ7cmV0dXJuIHQ9PT1uLmVtYmVkZGluZ3NNZXRyaWMmJihlPVp4LkRFRkFVTFQsbz0iIiksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHt2aWV3QWN0aXZlOmUsZW1iZWRkaW5nc01ldHJpYzpvfSl9KSxZdChzNywobix7c2lkZWJhcldpZHRoOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtzaWRlYmFyV2lkdGg6dH0pKSxZdChsNywobix7c2lkZWJhcldpZHRoOnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtlbWJlZGRpbmdzU2lkZWJhcldpZHRoOnR9KSksWXQoSVMsbj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtlbWJlZGRpbmdzU2lkZWJhckV4cGFuZGVkOiFuLmVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWR9KSksWXQocWh0LChuLHtkYXRhU2V0OnR9KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtlbWJlZGRpbmdEYXRhU2V0OnR9KSkpO2Z1bmN0aW9uIGtaKG4sdCl7cmV0dXJuIE5YdChuLHQpfWZ1bmN0aW9uIFRYdChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsNyl9ZnVuY3Rpb24gQVh0KG4sdCl7aWYobiYxJiYodSgwLCJtYXQtb3B0aW9uIiw4KSxUKDEpLGgoKSksbiYyKXtsZXQgZT10LiRpbXBsaWNpdDtQKCJ2YWx1ZSIsZSkseCgxKSxJZShlKX19dmFyIHVDPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3ICQsdGhpcy5vbkFkZEZpbHRlcj1uZXcgJH1vbk9wdGlvblNlbGVjdGVkKHQsZSl7dGhpcy5vbkFkZEZpbHRlci5lbWl0KHQub3B0aW9uLnZhbHVlKSxlLnZhbHVlPSIifX07dUMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dUMpfTt1Qy5cdTAyNzVjbXA9eih7dHlwZTp1QyxzZWxlY3RvcnM6W1sibWV0cmljLXNlYXJjaC1jb21wb25lbnQiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJ2YWxpZCIsZS5pc1JlZ2V4RmlsdGVyVmFsaWQpfSxpbnB1dHM6e2NvbXBsZXRpb25zOiJjb21wbGV0aW9ucyIscmVnZXhGaWx0ZXJWYWx1ZToicmVnZXhGaWx0ZXJWYWx1ZSIsaXNSZWdleEZpbHRlclZhbGlkOiJpc1JlZ2V4RmlsdGVyVmFsaWQifSxvdXRwdXRzOntvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U6Im9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsb25BZGRGaWx0ZXI6Im9uQWRkRmlsdGVyIn0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOltbInN2Z0ljb24iLCJzZWFyY2hfMjRweCJdLFsibWF0SW5wdXQiLCIiLCJhdXRvY29tcGxldGUiLCJvZmYiLCJwbGFjZWhvbGRlciIsIkFkZCBNZXRyaWMgRmlsdGVyIiwzLCJ2YWx1ZSIsIm1hdEF1dG9jb21wbGV0ZSIsImlucHV0Il0sWyJtYXRJbnB1dCIsIiJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJjbGFzcyIsImVycm9yLWljb24iLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsNCwibmdJZiJdLFsiYXV0b0FjdGl2ZUZpcnN0T3B0aW9uIiwiIiwzLCJvcHRpb25TZWxlY3RlZCJdLFsiZmlsdGVyTWF0Y2hlcyIsIm1hdEF1dG9jb21wbGV0ZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsIm1hdFRvb2x0aXAiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiwxLCJlcnJvci1pY29uIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxKXtsZXQgbz0kdCgpO0QoMCwibWF0LWljb24iLDApLHUoMSwiaW5wdXQiLDEsMiksQSgiaW5wdXQiLGZ1bmN0aW9uKGEpe3JldHVybiBlLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZS5lbWl0KGEudGFyZ2V0LnZhbHVlKX0pLGgoKSxrKDMsVFh0LDEsMCwibWF0LWljb24iLDMpLHUoNCwibWF0LWF1dG9jb21wbGV0ZSIsNCw1KSxBKCJvcHRpb25TZWxlY3RlZCIsZnVuY3Rpb24oYSl7T3Qobyk7bGV0IHI9d2UoMik7cmV0dXJuIGUub25PcHRpb25TZWxlY3RlZChhLHIpfSksayg2LEFYdCwyLDIsIm1hdC1vcHRpb24iLDYpLGgoKX1pZih0JjIpe2xldCBvPXdlKDUpO3goMSksUCgidmFsdWUiLGUucmVnZXhGaWx0ZXJWYWx1ZSkoIm1hdEF1dG9jb21wbGV0ZSIsbykseCgyKSxQKCJuZ0lmIiwhZS5pc1JlZ2V4RmlsdGVyVmFsaWQpLHgoMyksUCgibmdGb3JPZiIsZS5jb21wbGV0aW9ucyl9fSxkaXJlY3RpdmVzOltYZSxFcixqcyxYdCxhbCxtbixJaV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDEwcHg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi45ZW19W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHVDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWV0cmljLXNlYXJjaC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21ldHJpY19zZWFyY2hfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWV0cmljX3NlYXJjaF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7Y29tcGxldGlvbnM6W3t0eXBlOmR9XSxyZWdleEZpbHRlclZhbHVlOlt7dHlwZTpkfV0saXNSZWdleEZpbHRlclZhbGlkOlt7dHlwZTpIYSxhcmdzOlsiY2xhc3MudmFsaWQiXX0se3R5cGU6ZH1dLG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZTpbe3R5cGU6Qn1dLG9uQWRkRmlsdGVyOlt7dHlwZTpCfV19KX0pKCk7dmFyIFhkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm1ldHJpY3NSZWdleCQ9dGhpcy5zdG9yZS5zZWxlY3QoWGh0KSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZSh6ZShMcikpLnBpcGUoRyhlPT5lP0FycmF5LmZyb20oZS5lbnRyaWVzKCkpLmZpbHRlcihvPT5vWzFdKS5tYXAobz0+b1swXSk6W10pKSx0aGlzLm1ldHJpY3NGb3JBY3RpdmVSdW5zJD1vbih0aGlzLmFjdGl2ZVJ1bnMkLHRoaXMuc3RvcmUuc2VsZWN0KFF4KSkucGlwZShHKChbZSxvXSk9PntsZXQgaT1uZXcgU2V0O2ZvcihsZXQgYSBvZiBlKWlmKG9bYV0pZm9yKGxldCByIG9mIG9bYV0paS5hZGQocik7cmV0dXJuWy4uLmldfSkpLHRoaXMuaXNNZXRyaWNzRmlsdGVyVmFsaWQkPXRoaXMubWV0cmljc1JlZ2V4JC5waXBlKEcoZT0+e3RyeXtyZXR1cm4gQm9vbGVhbihuZXcgUmVnRXhwKGUpKX1jYXRjaChvKXtyZXR1cm4hMX19KSksdGhpcy5tZXRyaWNGaWx0ZXJLZXlzJD10aGlzLnN0b3JlLnBpcGUoemUoUGgpKS5waXBlKEcoZT0+T2JqZWN0LmtleXMoZSkpKSx0aGlzLmNvbXBsZXRpb25zJD1vbih0aGlzLm1ldHJpY3NGb3JBY3RpdmVSdW5zJCx0aGlzLm1ldHJpY3NSZWdleCQsdGhpcy5tZXRyaWNGaWx0ZXJLZXlzJCkucGlwZShHKChbZSxvLGldKT0+e2xldCBhPWUuZmlsdGVyKHI9PiFpLmluY2x1ZGVzKHIpKTt0cnl7bGV0IHI9bmV3IFJlZ0V4cChvLCJpIik7cmV0dXJuIGEuZmlsdGVyKHM9PnIudGVzdChzKSkuc29ydCgpfWNhdGNoKHIpe3JldHVybltdfX0pKX1vbkZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFk0KHtyZWdleDp0fSkpfW9uQWRkRmlsdGVyKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goJEYoe21ldHJpYzp0fSkpLHRoaXMuc3RvcmUuZGlzcGF0Y2goWTQoe3JlZ2V4OiIifSkpfX07WGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WGQpKHYoc3QpKX07WGQuXHUwMjc1Y21wPXooe3R5cGU6WGQsc2VsZWN0b3JzOltbIm5wbWktbWV0cmljLXNlYXJjaCJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiY29tcGxldGlvbnMiLCJpc1JlZ2V4RmlsdGVyVmFsaWQiLCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLCJvbkFkZEZpbHRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwibWV0cmljLXNlYXJjaC1jb21wb25lbnQiLDApLEEoIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUub25GaWx0ZXJDaGFuZ2UoaSl9KSgib25BZGRGaWx0ZXIiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uQWRkRmlsdGVyKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksaCgpKSx0JjImJlAoInJlZ2V4RmlsdGVyVmFsdWUiLFEoMSwzLGUubWV0cmljc1JlZ2V4JCkpKCJjb21wbGV0aW9ucyIsUSgyLDUsZS5jb21wbGV0aW9ucyQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixRKDMsNyxlLmlzTWV0cmljc0ZpbHRlclZhbGlkJCkpfSxkaXJlY3RpdmVzOlt1Q10scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWGQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1zZWFyY2giLHRlbXBsYXRlOmAKICAgIDxtZXRyaWMtc2VhcmNoLWNvbXBvbmVudAogICAgICBbcmVnZXhGaWx0ZXJWYWx1ZV09Im1ldHJpY3NSZWdleCQgfCBhc3luYyIKICAgICAgW2NvbXBsZXRpb25zXT0iY29tcGxldGlvbnMkIHwgYXN5bmMiCiAgICAgIFtpc1JlZ2V4RmlsdGVyVmFsaWRdPSJpc01ldHJpY3NGaWx0ZXJWYWxpZCQgfCBhc3luYyIKICAgICAgKG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSk9Im9uRmlsdGVyQ2hhbmdlKCRldmVudCkiCiAgICAgIChvbkFkZEZpbHRlcik9Im9uQWRkRmlsdGVyKCRldmVudCkiCiAgICA+PC9tZXRyaWMtc2VhcmNoLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTtmdW5jdGlvbiB0X3Qobix0LGUpe2xldCBvPVtbdCwuLi5lXV07aWYoIWUubGVuZ3RofHwhbi5sZW5ndGgpcmV0dXJuImRhdGE6dGV4dC9jc3Y7Y2hhcnNldD11dGYtOCwiK28ubWFwKHM9PnMuam9pbigiLCIpKS5qb2luKGAKYCk7bGV0IGk9ZS5tYXAocj0+QWMocikpO2ZvcihsZXRbcixzXW9mIG4pe2xldCBsPXMuZmlsdGVyKGM9PmMucnVuPT09dCk7aWYobC5sZW5ndGgpe2xldCBjPVtyXTtmb3IobGV0IG0gb2YgaSl7bGV0IGY9bC5maW5kKHA9PnAubWV0cmljPT09bSk7Zj09PXZvaWQgMD9jLnB1c2goIm51bGwiKTpjLnB1c2goYCR7Zi5uUE1JVmFsdWV9YCl9by5wdXNoKGMpfX1yZXR1cm4iZGF0YTp0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04LCIrby5tYXAocj0+ci5qb2luKCIsIikpLmpvaW4oYApgKX12YXIgelh0PWZ1bmN0aW9uKG4pe3JldHVybnsiYWN0aXZlLWJ1dHRvbiI6bn19LGhDPWNsYXNze2Rvd25sb2FkUmVzdWx0cygpe2ZvcihsZXQgdCBvZiB0aGlzLnJ1bnMpe2xldCBlPXRfdCh0aGlzLmZsYWdnZWREYXRhLHQsdGhpcy5tZXRyaWNzKSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtvLnNldEF0dHJpYnV0ZSgiaHJlZiIsZSksby5zZXRBdHRyaWJ1dGUoImRvd25sb2FkIixgcmVwb3J0XyR7dH0uY3N2YCksby5jbGljaygpfX19O2hDLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGhDKX07aEMuXHUwMjc1Y21wPXooe3R5cGU6aEMsc2VsZWN0b3JzOltbInJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50Il1dLGlucHV0czp7bnVtRmxhZ2dlZEFubm90YXRpb25zOiJudW1GbGFnZ2VkQW5ub3RhdGlvbnMiLHJ1bnM6InJ1bnMiLGZsYWdnZWREYXRhOiJmbGFnZ2VkRGF0YSIsbWV0cmljczoibWV0cmljcyJ9LGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLCJ0aXRsZSIsIkV4cG9ydCBDU1YgcmVwb3J0cyBvZiBhbGwgZmxhZ2dlZCBhbm5vdGF0aW9ucy4gV2lsbCBnZW5lcmF0ZSBvbmUgQ1NWIHBlciBhY3RpdmUgcnVuLiIsMywiZGlzYWJsZWQiLCJuZ0NsYXNzIiwiY2xpY2siXSxbMSwiYnV0dG9uLWNvbnRlbnRzIl0sWyJzdmdJY29uIiwiZ2V0X2FwcF8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJidXR0b24iLDApLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLmRvd25sb2FkUmVzdWx0cygpfSksdSgxLCJzcGFuIiwxKSxEKDIsIm1hdC1pY29uIiwyKSxUKDMpLGgoKSxoKCkpLHQmMiYmKFAoImRpc2FibGVkIixlLm51bUZsYWdnZWRBbm5vdGF0aW9ucz09PTApKCJuZ0NsYXNzIixhbygzLHpYdCxlLm51bUZsYWdnZWRBbm5vdGF0aW9ucz4wKSkseCgzKSxsZSgiIEZsYWdnZWQgUm93cyAoIixlLm51bUZsYWdnZWRBbm5vdGF0aW9ucywiKSAiKSl9LGRpcmVjdGl2ZXM6W2ZuLGpuLFhlXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5hY3RpdmUtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2NvbG9yOiNmZmZ9LmJ1dHRvbi1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo2cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoaEMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJyZXN1bHRzLWRvd25sb2FkLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vcmVzdWx0c19kb3dubG9hZF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9yZXN1bHRzX2Rvd25sb2FkX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtudW1GbGFnZ2VkQW5ub3RhdGlvbnM6W3t0eXBlOmR9XSxydW5zOlt7dHlwZTpkfV0sZmxhZ2dlZERhdGE6W3t0eXBlOmR9XSxtZXRyaWNzOlt7dHlwZTpkfV19KX0pKCk7dmFyIFFkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZsYWdnZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QobTcpLHRoaXMubnVtRmxhZ2dlZEFubm90YXRpb25zJD10aGlzLmZsYWdnZWRBbm5vdGF0aW9ucyQucGlwZShHKGU9PmUubGVuZ3RoKSksdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnNlbGVjdChMcikucGlwZShHKGU9PmU/QXJyYXkuZnJvbShlLmVudHJpZXMoKSkuZmlsdGVyKG89Pm9bMV0pLm1hcChvPT5vWzBdKTpbXSkpLHRoaXMuZmxhZ2dlZERhdGEkPW9uKFt0aGlzLnN0b3JlLnNlbGVjdChYeCksdGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMkXSkucGlwZShHKChbZSxvXSk9PntsZXQgaT1uZXcgU2V0KG8pO3JldHVybiBPYmplY3QuZW50cmllcyhlKS5maWx0ZXIocj0+aS5oYXMoclswXSkpfSkpLHRoaXMubWV0cmljcyQ9b24oW3RoaXMuc3RvcmUuc2VsZWN0KFF4KSx0aGlzLmFjdGl2ZVJ1bnMkLHRoaXMuc3RvcmUuc2VsZWN0KFBoKV0pLnBpcGUoRygoW2UsbyxpXSk9PntsZXQgYT1PYmplY3Qua2V5cyhpKTtmb3IobGV0IHIgb2YgbyllW3JdJiYoYT1hLmNvbmNhdChlW3JdLmZpbHRlcihzPT5TUyhzKSkpKTtyZXR1cm4gYT1bLi4ubmV3IFNldChhKV0sYX0pKX19O1FkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFFkKSh2KHN0KSl9O1FkLlx1MDI3NWNtcD16KHt0eXBlOlFkLHNlbGVjdG9yczpbWyJucG1pLXJlc3VsdHMtZG93bmxvYWQiXV0sZGVjbHM6NSx2YXJzOjEyLGNvbnN0czpbWzMsIm51bUZsYWdnZWRBbm5vdGF0aW9ucyIsInJ1bnMiLCJmbGFnZ2VkRGF0YSIsIm1ldHJpY3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsInJlc3VsdHMtZG93bmxvYWQtY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIikpLHQmMiYmUCgibnVtRmxhZ2dlZEFubm90YXRpb25zIixRKDEsNCxlLm51bUZsYWdnZWRBbm5vdGF0aW9ucyQpKSgicnVucyIsUSgyLDYsZS5hY3RpdmVSdW5zJCkpKCJmbGFnZ2VkRGF0YSIsUSgzLDgsZS5mbGFnZ2VkRGF0YSQpKSgibWV0cmljcyIsUSg0LDEwLGUubWV0cmljcyQpKX0sZGlyZWN0aXZlczpbaENdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFFkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1yZXN1bHRzLWRvd25sb2FkIix0ZW1wbGF0ZTpgCiAgICA8cmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQKICAgICAgW251bUZsYWdnZWRBbm5vdGF0aW9uc109Im51bUZsYWdnZWRBbm5vdGF0aW9ucyQgfCBhc3luYyIKICAgICAgW3J1bnNdPSJhY3RpdmVSdW5zJCB8IGFzeW5jIgogICAgICBbZmxhZ2dlZERhdGFdPSJmbGFnZ2VkRGF0YSQgfCBhc3luYyIKICAgICAgW21ldHJpY3NdPSJtZXRyaWNzJCB8IGFzeW5jIgogICAgPjwvcmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIEJYdD1bIioiXTt2YXIgRzQ9bmV3IHl0KCJNYXRDaGlwUmVtb3ZlIiksVzQ9bmV3IHl0KCJNYXRDaGlwQXZhdGFyIikscTQ9bmV3IHl0KCJNYXRDaGlwVHJhaWxpbmdJY29uIiksVFo9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0sVlh0PURfKEZzKHRsKFRaKSwicHJpbWFyeSIpLC0xKSxfQz1jbGFzc3t9O19DLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fF9DKX07X0MuXHUwMjc1ZGlyPXZ0KHt0eXBlOl9DLHNlbGVjdG9yczpbWyJtYXQtY2hpcC1hdmF0YXIiXSxbIiIsIm1hdENoaXBBdmF0YXIiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1hdmF0YXIiXSxmZWF0dXJlczpbVGUoW3twcm92aWRlOlc0LHVzZUV4aXN0aW5nOl9DfV0pXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhfQyxbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJtYXQtY2hpcC1hdmF0YXIsIFttYXRDaGlwQXZhdGFyXSIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwLWF2YXRhciJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6VzQsdXNlRXhpc3Rpbmc6X0N9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIENDPWNsYXNze307Q0MuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Q0MpfTtDQy5cdTAyNzVkaXI9dnQoe3R5cGU6Q0Msc2VsZWN0b3JzOltbIm1hdC1jaGlwLXRyYWlsaW5nLWljb24iXSxbIiIsIm1hdENoaXBUcmFpbGluZ0ljb24iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC10cmFpbGluZy1pY29uIl0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpxNCx1c2VFeGlzdGluZzpDQ31dKV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQ0MsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoibWF0LWNoaXAtdHJhaWxpbmctaWNvbiwgW21hdENoaXBUcmFpbGluZ0ljb25dIixob3N0OntjbGFzczoibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJ9LHByb3ZpZGVyczpbe3Byb3ZpZGU6cTQsdXNlRXhpc3Rpbmc6Q0N9XX1dfV0sbnVsbCxudWxsKX0pKCk7dmFyICRyPWNsYXNzIGV4dGVuZHMgVlh0e2NvbnN0cnVjdG9yKHQsZSxvLGksYSxyLHMsbCl7c3VwZXIodCksdGhpcy5fbmdab25lPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9YSx0aGlzLl9oYXNGb2N1cz0hMSx0aGlzLmNoaXBMaXN0U2VsZWN0YWJsZT0hMCx0aGlzLl9jaGlwTGlzdE11bHRpcGxlPSExLHRoaXMuX2NoaXBMaXN0RGlzYWJsZWQ9ITEsdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fc2VsZWN0YWJsZT0hMCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9yZW1vdmFibGU9ITAsdGhpcy5fb25Gb2N1cz1uZXcgSnQsdGhpcy5fb25CbHVyPW5ldyBKdCx0aGlzLnNlbGVjdGlvbkNoYW5nZT1uZXcgJCx0aGlzLmRlc3Ryb3llZD1uZXcgJCx0aGlzLnJlbW92ZWQ9bmV3ICQsdGhpcy5fYWRkSG9zdENsYXNzTmFtZSgpLHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQ9ci5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0LmNsYXNzTGlzdC5hZGQoIm1hdC1jaGlwLXJpcHBsZSIpLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0KSx0aGlzLl9jaGlwUmlwcGxlPW5ldyBadih0aGlzLGUsdGhpcy5fY2hpcFJpcHBsZVRhcmdldCxvKSx0aGlzLl9jaGlwUmlwcGxlLnNldHVwVHJpZ2dlckV2ZW50cyh0KSx0aGlzLnJpcHBsZUNvbmZpZz1pfHx7fSx0aGlzLl9hbmltYXRpb25zRGlzYWJsZWQ9cz09PSJOb29wQW5pbWF0aW9ucyIsdGhpcy50YWJJbmRleD1sIT1udWxsJiZwYXJzZUludChsKXx8LTF9Z2V0IHJpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5fYW5pbWF0aW9uc0Rpc2FibGVkfHwhIXRoaXMucmlwcGxlQ29uZmlnLmRpc2FibGVkfWdldCBzZWxlY3RlZCgpe3JldHVybiB0aGlzLl9zZWxlY3RlZH1zZXQgc2VsZWN0ZWQodCl7bGV0IGU9WmUodCk7ZSE9PXRoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ZSx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWUhPT12b2lkIDA/dGhpcy5fdmFsdWU6dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50fXNldCB2YWx1ZSh0KXt0aGlzLl92YWx1ZT10fWdldCBzZWxlY3RhYmxlKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGFibGUmJnRoaXMuY2hpcExpc3RTZWxlY3RhYmxlfXNldCBzZWxlY3RhYmxlKHQpe3RoaXMuX3NlbGVjdGFibGU9WmUodCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2NoaXBMaXN0RGlzYWJsZWR8fHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1aZSh0KX1nZXQgcmVtb3ZhYmxlKCl7cmV0dXJuIHRoaXMuX3JlbW92YWJsZX1zZXQgcmVtb3ZhYmxlKHQpe3RoaXMuX3JlbW92YWJsZT1aZSh0KX1nZXQgYXJpYVNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuc2VsZWN0YWJsZSYmKHRoaXMuX2NoaXBMaXN0TXVsdGlwbGV8fHRoaXMuc2VsZWN0ZWQpP3RoaXMuc2VsZWN0ZWQudG9TdHJpbmcoKTpudWxsfV9hZGRIb3N0Q2xhc3NOYW1lKCl7bGV0IHQ9Im1hdC1iYXNpYy1jaGlwIixlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtpZihlLmhhc0F0dHJpYnV0ZSh0KXx8ZS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT10KXtlLmNsYXNzTGlzdC5hZGQodCk7cmV0dXJufWVsc2UgZS5jbGFzc0xpc3QuYWRkKCJtYXQtc3RhbmRhcmQtY2hpcCIpfW5nT25EZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQuZW1pdCh7Y2hpcDp0aGlzfSksdGhpcy5fY2hpcFJpcHBsZS5fcmVtb3ZlVHJpZ2dlckV2ZW50cygpfXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkfHwodGhpcy5fc2VsZWN0ZWQ9ITAsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9ZGVzZWxlY3QoKXt0aGlzLl9zZWxlY3RlZCYmKHRoaXMuX3NlbGVjdGVkPSExLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfXNlbGVjdFZpYUludGVyYWN0aW9uKCl7dGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD0hMCx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSghMCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfXRvZ2dsZVNlbGVjdGVkKHQ9ITEpe3JldHVybiB0aGlzLl9zZWxlY3RlZD0hdGhpcy5zZWxlY3RlZCx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSh0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnNlbGVjdGVkfWZvY3VzKCl7dGhpcy5faGFzRm9jdXN8fCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSx0aGlzLl9vbkZvY3VzLm5leHQoe2NoaXA6dGhpc30pKSx0aGlzLl9oYXNGb2N1cz0hMH1yZW1vdmUoKXt0aGlzLnJlbW92YWJsZSYmdGhpcy5yZW1vdmVkLmVtaXQoe2NoaXA6dGhpc30pfV9oYW5kbGVDbGljayh0KXt0aGlzLmRpc2FibGVkP3QucHJldmVudERlZmF1bHQoKTp0LnN0b3BQcm9wYWdhdGlvbigpfV9oYW5kbGVLZXlkb3duKHQpe2lmKCF0aGlzLmRpc2FibGVkKXN3aXRjaCh0LmtleUNvZGUpe2Nhc2UgNDY6Y2FzZSA4OnRoaXMucmVtb3ZlKCksdC5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgMzI6dGhpcy5zZWxlY3RhYmxlJiZ0aGlzLnRvZ2dsZVNlbGVjdGVkKCEwKSx0LnByZXZlbnREZWZhdWx0KCk7YnJlYWt9fV9ibHVyKCl7dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoQ24oMSkpLnN1YnNjcmliZSgoKT0+e3RoaXMuX25nWm9uZS5ydW4oKCk9Pnt0aGlzLl9oYXNGb2N1cz0hMSx0aGlzLl9vbkJsdXIubmV4dCh7Y2hpcDp0aGlzfSl9KX0pfV9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSh0PSExKXt0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtzb3VyY2U6dGhpcyxpc1VzZXJJbnB1dDp0LHNlbGVjdGVkOnRoaXMuX3NlbGVjdGVkfSl9fTskci5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHwkcikodihMKSx2KEN0KSx2KFZ0KSx2KHlwLDgpLHYoVHQpLHYoX3QpLHYoc24sOCksWmEoInRhYmluZGV4IikpfTskci5cdTAyNzVkaXI9dnQoe3R5cGU6JHIsc2VsZWN0b3JzOltbIm1hdC1iYXNpYy1jaGlwIl0sWyIiLCJtYXQtYmFzaWMtY2hpcCIsIiJdLFsibWF0LWNoaXAiXSxbIiIsIm1hdC1jaGlwIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQsZSxvKXtpZih0JjEmJihnbyhvLFc0LDUpLGdvKG8scTQsNSksZ28obyxHNCw1KSksdCYyKXtsZXQgaTtIdChpPUZ0KCkpJiYoZS5hdmF0YXI9aS5maXJzdCksSHQoaT1GdCgpKSYmKGUudHJhaWxpbmdJY29uPWkuZmlyc3QpLEh0KGk9RnQoKSkmJihlLnJlbW92ZUljb249aS5maXJzdCl9fSxob3N0QXR0cnM6WyJyb2xlIiwib3B0aW9uIiwxLCJtYXQtY2hpcCIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoxNCxob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjEmJkEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2soaSl9KSgia2V5ZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2hhbmRsZUtleWRvd24oaSl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuZm9jdXMoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBlLl9ibHVyKCl9KSx0JjImJihyZSgidGFiaW5kZXgiLGUuZGlzYWJsZWQ/bnVsbDplLnRhYkluZGV4KSgiZGlzYWJsZWQiLGUuZGlzYWJsZWR8fG51bGwpKCJhcmlhLWRpc2FibGVkIixlLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLXNlbGVjdGVkIixlLmFyaWFTZWxlY3RlZCksbWUoIm1hdC1jaGlwLXNlbGVjdGVkIixlLnNlbGVjdGVkKSgibWF0LWNoaXAtd2l0aC1hdmF0YXIiLGUuYXZhdGFyKSgibWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uIixlLnRyYWlsaW5nSWNvbnx8ZS5yZW1vdmVJY29uKSgibWF0LWNoaXAtZGlzYWJsZWQiLGUuZGlzYWJsZWQpKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsZS5fYW5pbWF0aW9uc0Rpc2FibGVkKSl9LGlucHV0czp7Y29sb3I6ImNvbG9yIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgiLHNlbGVjdGVkOiJzZWxlY3RlZCIsdmFsdWU6InZhbHVlIixzZWxlY3RhYmxlOiJzZWxlY3RhYmxlIixkaXNhYmxlZDoiZGlzYWJsZWQiLHJlbW92YWJsZToicmVtb3ZhYmxlIn0sb3V0cHV0czp7c2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25DaGFuZ2UiLGRlc3Ryb3llZDoiZGVzdHJveWVkIixyZW1vdmVkOiJyZW1vdmVkIn0sZXhwb3J0QXM6WyJtYXRDaGlwIl0sZmVhdHVyZXM6W2FlXX0pOyRyLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TH0se3R5cGU6Q3R9LHt0eXBlOlZ0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOlt5cF19XX0se3R5cGU6VHR9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W190XX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmxpLGFyZ3M6WyJ0YWJpbmRleCJdfV19XTskci5wcm9wRGVjb3JhdG9ycz17YXZhdGFyOlt7dHlwZTpLbyxhcmdzOltXNF19XSx0cmFpbGluZ0ljb246W3t0eXBlOktvLGFyZ3M6W3E0XX1dLHJlbW92ZUljb246W3t0eXBlOktvLGFyZ3M6W0c0XX1dLHNlbGVjdGVkOlt7dHlwZTpkfV0sdmFsdWU6W3t0eXBlOmR9XSxzZWxlY3RhYmxlOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XSxyZW1vdmFibGU6W3t0eXBlOmR9XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkJ9XSxkZXN0cm95ZWQ6W3t0eXBlOkJ9XSxyZW1vdmVkOlt7dHlwZTpCfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQygkcixbe3R5cGU6d3QsYXJnczpbe3NlbGVjdG9yOiJtYXQtYmFzaWMtY2hpcCwgW21hdC1iYXNpYy1jaGlwXSwgbWF0LWNoaXAsIFttYXQtY2hpcF0iLGlucHV0czpbImNvbG9yIiwiZGlzYWJsZVJpcHBsZSIsInRhYkluZGV4Il0sZXhwb3J0QXM6Im1hdENoaXAiLGhvc3Q6e2NsYXNzOiJtYXQtY2hpcCBtYXQtZm9jdXMtaW5kaWNhdG9yIiwiW2F0dHIudGFiaW5kZXhdIjoiZGlzYWJsZWQgPyBudWxsIDogdGFiSW5kZXgiLHJvbGU6Im9wdGlvbiIsIltjbGFzcy5tYXQtY2hpcC1zZWxlY3RlZF0iOiJzZWxlY3RlZCIsIltjbGFzcy5tYXQtY2hpcC13aXRoLWF2YXRhcl0iOiJhdmF0YXIiLCJbY2xhc3MubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uXSI6InRyYWlsaW5nSWNvbiB8fCByZW1vdmVJY29uIiwiW2NsYXNzLm1hdC1jaGlwLWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9hbmltYXRpb25zRGlzYWJsZWQiLCJbYXR0ci5kaXNhYmxlZF0iOiJkaXNhYmxlZCB8fCBudWxsIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1zZWxlY3RlZF0iOiJhcmlhU2VsZWN0ZWQiLCIoY2xpY2spIjoiX2hhbmRsZUNsaWNrKCRldmVudCkiLCIoa2V5ZG93bikiOiJfaGFuZGxlS2V5ZG93bigkZXZlbnQpIiwiKGZvY3VzKSI6ImZvY3VzKCkiLCIoYmx1cikiOiJfYmx1cigpIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOkN0fSx7dHlwZTpWdH0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbeXBdfV19LHt0eXBlOlR0fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TixhcmdzOltfdF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOk4sYXJnczpbc25dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpsaSxhcmdzOlsidGFiaW5kZXgiXX1dfV19LHtzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOkJ9XSxkZXN0cm95ZWQ6W3t0eXBlOkJ9XSxyZW1vdmVkOlt7dHlwZTpCfV0sc2VsZWN0ZWQ6W3t0eXBlOmR9XSx2YWx1ZTpbe3R5cGU6ZH1dLHNlbGVjdGFibGU6W3t0eXBlOmR9XSxkaXNhYmxlZDpbe3R5cGU6ZH1dLHJlbW92YWJsZTpbe3R5cGU6ZH1dLGF2YXRhcjpbe3R5cGU6S28sYXJnczpbVzRdfV0sdHJhaWxpbmdJY29uOlt7dHlwZTpLbyxhcmdzOltxNF19XSxyZW1vdmVJY29uOlt7dHlwZTpLbyxhcmdzOltHNF19XX0pfSkoKTt2YXIgVGY9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLl9wYXJlbnRDaGlwPXQsZS5uYXRpdmVFbGVtZW50Lm5vZGVOYW1lPT09IkJVVFRPTiImJmUubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJidXR0b24iKX1faGFuZGxlQ2xpY2sodCl7bGV0IGU9dGhpcy5fcGFyZW50Q2hpcDtlLnJlbW92YWJsZSYmIWUuZGlzYWJsZWQmJmUucmVtb3ZlKCksdC5zdG9wUHJvcGFnYXRpb24oKX19O1RmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFRmKSh2KCRyKSx2KEwpKX07VGYuXHUwMjc1ZGlyPXZ0KHt0eXBlOlRmLHNlbGVjdG9yczpbWyIiLCJtYXRDaGlwUmVtb3ZlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWNoaXAtcmVtb3ZlIiwibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJdLGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgiY2xpY2siLGZ1bmN0aW9uKGkpe3JldHVybiBlLl9oYW5kbGVDbGljayhpKX0pfSxmZWF0dXJlczpbVGUoW3twcm92aWRlOkc0LHVzZUV4aXN0aW5nOlRmfV0pXX0pO1RmLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHJ9LHt0eXBlOkx9XTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoVGYsW3t0eXBlOnd0LGFyZ3M6W3tzZWxlY3RvcjoiW21hdENoaXBSZW1vdmVdIixob3N0OntjbGFzczoibWF0LWNoaXAtcmVtb3ZlIG1hdC1jaGlwLXRyYWlsaW5nLWljb24iLCIoY2xpY2spIjoiX2hhbmRsZUNsaWNrKCRldmVudCkifSxwcm92aWRlcnM6W3twcm92aWRlOkc0LHVzZUV4aXN0aW5nOlRmfV19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOiRyfSx7dHlwZTpMfV19LG51bGwpfSkoKTt2YXIgWjQ9bmV3IHl0KCJtYXQtY2hpcHMtZGVmYXVsdC1vcHRpb25zIik7dmFyIGpYdD1UMyhjbGFzc3tjb25zdHJ1Y3RvcihuLHQsZSxvKXt0aGlzLl9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI9bix0aGlzLl9wYXJlbnRGb3JtPXQsdGhpcy5fcGFyZW50Rm9ybUdyb3VwPWUsdGhpcy5uZ0NvbnRyb2w9b319KSxVWHQ9MCxBWj1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc291cmNlPXQsdGhpcy52YWx1ZT1lfX0sRG09Y2xhc3MgZXh0ZW5kcyBqWHR7Y29uc3RydWN0b3IodCxlLG8saSxhLHIscyl7c3VwZXIocixpLGEscyksdGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fZGlyPW8sdGhpcy5jb250cm9sVHlwZT0ibWF0LWNoaXAtbGlzdCIsdGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleD1udWxsLHRoaXMuX2Rlc3Ryb3llZD1uZXcgSnQsdGhpcy5fdWlkPWBtYXQtY2hpcC1saXN0LSR7VVh0Kyt9YCx0aGlzLl90YWJJbmRleD0wLHRoaXMuX3VzZXJUYWJJbmRleD1udWxsLHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2NvbXBhcmVXaXRoPShsLGMpPT5sPT09Yyx0aGlzLl9yZXF1aXJlZD0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLmFyaWFPcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIsdGhpcy5fc2VsZWN0YWJsZT0hMCx0aGlzLmNoYW5nZT1uZXcgJCx0aGlzLnZhbHVlQ2hhbmdlPW5ldyAkLHRoaXMubmdDb250cm9sJiYodGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3Nvcj10aGlzKX1nZXQgc2VsZWN0ZWQoKXt2YXIgdCxlO3JldHVybiB0aGlzLm11bHRpcGxlPygodD10aGlzLl9zZWxlY3Rpb25Nb2RlbCk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0LnNlbGVjdGVkKXx8W106KGU9dGhpcy5fc2VsZWN0aW9uTW9kZWwpPT09bnVsbHx8ZT09PXZvaWQgMD92b2lkIDA6ZS5zZWxlY3RlZFswXX1nZXQgcm9sZSgpe3JldHVybiB0aGlzLmVtcHR5P251bGw6Imxpc3Rib3gifWdldCBtdWx0aXBsZSgpe3JldHVybiB0aGlzLl9tdWx0aXBsZX1zZXQgbXVsdGlwbGUodCl7dGhpcy5fbXVsdGlwbGU9WmUodCksdGhpcy5fc3luY0NoaXBzU3RhdGUoKX1nZXQgY29tcGFyZVdpdGgoKXtyZXR1cm4gdGhpcy5fY29tcGFyZVdpdGh9c2V0IGNvbXBhcmVXaXRoKHQpe3RoaXMuX2NvbXBhcmVXaXRoPXQsdGhpcy5fc2VsZWN0aW9uTW9kZWwmJnRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe3RoaXMud3JpdGVWYWx1ZSh0KSx0aGlzLl92YWx1ZT10fWdldCBpZCgpe3JldHVybiB0aGlzLl9jaGlwSW5wdXQ/dGhpcy5fY2hpcElucHV0LmlkOnRoaXMuX3VpZH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPVplKHQpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1nZXQgcGxhY2Vob2xkZXIoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0P3RoaXMuX2NoaXBJbnB1dC5wbGFjZWhvbGRlcjp0aGlzLl9wbGFjZWhvbGRlcn1zZXQgcGxhY2Vob2xkZXIodCl7dGhpcy5fcGxhY2Vob2xkZXI9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IGZvY3VzZWQoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXNlZHx8dGhpcy5faGFzRm9jdXNlZENoaXAoKX1nZXQgZW1wdHkoKXtyZXR1cm4oIXRoaXMuX2NoaXBJbnB1dHx8dGhpcy5fY2hpcElucHV0LmVtcHR5KSYmKCF0aGlzLmNoaXBzfHx0aGlzLmNoaXBzLmxlbmd0aD09PTApfWdldCBzaG91bGRMYWJlbEZsb2F0KCl7cmV0dXJuIXRoaXMuZW1wdHl8fHRoaXMuZm9jdXNlZH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5uZ0NvbnRyb2w/ISF0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDp0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9WmUodCksdGhpcy5fc3luY0NoaXBzU3RhdGUoKX1nZXQgc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RhYmxlfXNldCBzZWxlY3RhYmxlKHQpe3RoaXMuX3NlbGVjdGFibGU9WmUodCksdGhpcy5jaGlwcyYmdGhpcy5jaGlwcy5mb3JFYWNoKGU9PmUuY2hpcExpc3RTZWxlY3RhYmxlPXRoaXMuX3NlbGVjdGFibGUpfXNldCB0YWJJbmRleCh0KXt0aGlzLl91c2VyVGFiSW5kZXg9dCx0aGlzLl90YWJJbmRleD10fWdldCBjaGlwU2VsZWN0aW9uQ2hhbmdlcygpe3JldHVybiB5biguLi50aGlzLmNoaXBzLm1hcCh0PT50LnNlbGVjdGlvbkNoYW5nZSkpfWdldCBjaGlwRm9jdXNDaGFuZ2VzKCl7cmV0dXJuIHluKC4uLnRoaXMuY2hpcHMubWFwKHQ9PnQuX29uRm9jdXMpKX1nZXQgY2hpcEJsdXJDaGFuZ2VzKCl7cmV0dXJuIHluKC4uLnRoaXMuY2hpcHMubWFwKHQ9PnQuX29uQmx1cikpfWdldCBjaGlwUmVtb3ZlQ2hhbmdlcygpe3JldHVybiB5biguLi50aGlzLmNoaXBzLm1hcCh0PT50LmRlc3Ryb3llZCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2tleU1hbmFnZXI9bmV3IFd5KHRoaXMuY2hpcHMpLndpdGhXcmFwKCkud2l0aFZlcnRpY2FsT3JpZW50YXRpb24oKS53aXRoSG9tZUFuZEVuZCgpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZGlyP3RoaXMuX2Rpci52YWx1ZToibHRyIiksdGhpcy5fZGlyJiZ0aGlzLl9kaXIuY2hhbmdlLnBpcGUoUGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKHQ9PnRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0KSksdGhpcy5fa2V5TWFuYWdlci50YWJPdXQucGlwZShQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9hbGxvd0ZvY3VzRXNjYXBlKCl9KSx0aGlzLmNoaXBzLmNoYW5nZXMucGlwZShTbyhudWxsKSxQZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLmRpc2FibGVkJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57dGhpcy5fc3luY0NoaXBzU3RhdGUoKX0pLHRoaXMuX3Jlc2V0Q2hpcHMoKSx0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCksdGhpcy5fdXBkYXRlVGFiSW5kZXgoKSx0aGlzLl91cGRhdGVGb2N1c0ZvckRlc3Ryb3llZENoaXBzKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSl9bmdPbkluaXQoKXt0aGlzLl9zZWxlY3Rpb25Nb2RlbD1uZXcgJHkodGhpcy5tdWx0aXBsZSx2b2lkIDAsITEpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ0RvQ2hlY2soKXt0aGlzLm5nQ29udHJvbCYmKHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpLHRoaXMubmdDb250cm9sLmRpc2FibGVkIT09dGhpcy5fZGlzYWJsZWQmJih0aGlzLmRpc2FibGVkPSEhdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCksdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKSx0aGlzLl9kcm9wU3Vic2NyaXB0aW9ucygpfXJlZ2lzdGVySW5wdXQodCl7dGhpcy5fY2hpcElucHV0PXQsdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1tYXQtY2hpcC1pbnB1dCIsdC5pZCl9c2V0RGVzY3JpYmVkQnlJZHModCl7dGhpcy5fYXJpYURlc2NyaWJlZGJ5PXQuam9pbigiICIpfXdyaXRlVmFsdWUodCl7dGhpcy5jaGlwcyYmdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0LCExKX1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW9uQ29udGFpbmVyQ2xpY2sodCl7dGhpcy5fb3JpZ2luYXRlc0Zyb21DaGlwKHQpfHx0aGlzLmZvY3VzKCl9Zm9jdXModCl7dGhpcy5kaXNhYmxlZHx8dGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXNlZHx8KHRoaXMuY2hpcHMubGVuZ3RoPjA/KHRoaXMuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKToodGhpcy5fZm9jdXNJbnB1dCh0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpKX1fZm9jdXNJbnB1dCh0KXt0aGlzLl9jaGlwSW5wdXQmJnRoaXMuX2NoaXBJbnB1dC5mb2N1cyh0KX1fa2V5ZG93bih0KXtsZXQgZT10LnRhcmdldDtlJiZlLmNsYXNzTGlzdC5jb250YWlucygibWF0LWNoaXAiKSYmKHRoaXMuX2tleU1hbmFnZXIub25LZXlkb3duKHQpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X3VwZGF0ZVRhYkluZGV4KCl7dGhpcy5fdGFiSW5kZXg9dGhpcy5fdXNlclRhYkluZGV4fHwodGhpcy5jaGlwcy5sZW5ndGg9PT0wPy0xOjApfV91cGRhdGVGb2N1c0ZvckRlc3Ryb3llZENoaXBzKCl7aWYodGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleCE9bnVsbClpZih0aGlzLmNoaXBzLmxlbmd0aCl7bGV0IHQ9TWF0aC5taW4odGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleCx0aGlzLmNoaXBzLmxlbmd0aC0xKTt0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odCl9ZWxzZSB0aGlzLmZvY3VzKCk7dGhpcy5fbGFzdERlc3Ryb3llZENoaXBJbmRleD1udWxsfV9pc1ZhbGlkSW5kZXgodCl7cmV0dXJuIHQ+PTAmJnQ8dGhpcy5jaGlwcy5sZW5ndGh9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCxlPSEwKXtpZih0aGlzLl9jbGVhclNlbGVjdGlvbigpLHRoaXMuY2hpcHMuZm9yRWFjaChvPT5vLmRlc2VsZWN0KCkpLEFycmF5LmlzQXJyYXkodCkpdC5mb3JFYWNoKG89PnRoaXMuX3NlbGVjdFZhbHVlKG8sZSkpLHRoaXMuX3NvcnRWYWx1ZXMoKTtlbHNle2xldCBvPXRoaXMuX3NlbGVjdFZhbHVlKHQsZSk7byYmZSYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKG8pfX1fc2VsZWN0VmFsdWUodCxlPSEwKXtsZXQgbz10aGlzLmNoaXBzLmZpbmQoaT0+aS52YWx1ZSE9bnVsbCYmdGhpcy5fY29tcGFyZVdpdGgoaS52YWx1ZSx0KSk7cmV0dXJuIG8mJihlP28uc2VsZWN0VmlhSW50ZXJhY3Rpb24oKTpvLnNlbGVjdCgpLHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChvKSksb31faW5pdGlhbGl6ZVNlbGVjdGlvbigpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnsodGhpcy5uZ0NvbnRyb2x8fHRoaXMuX3ZhbHVlKSYmKHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wudmFsdWU6dGhpcy5fdmFsdWUsITEpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9KX1fY2xlYXJTZWxlY3Rpb24odCl7dGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLmNoaXBzLmZvckVhY2goZT0+e2UhPT10JiZlLmRlc2VsZWN0KCl9KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9X3NvcnRWYWx1ZXMoKXt0aGlzLl9tdWx0aXBsZSYmKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksdGhpcy5jaGlwcy5mb3JFYWNoKHQ9Pnt0LnNlbGVjdGVkJiZ0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCl9KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV9wcm9wYWdhdGVDaGFuZ2VzKHQpe2xldCBlPW51bGw7QXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkKT9lPXRoaXMuc2VsZWN0ZWQubWFwKG89Pm8udmFsdWUpOmU9dGhpcy5zZWxlY3RlZD90aGlzLnNlbGVjdGVkLnZhbHVlOnQsdGhpcy5fdmFsdWU9ZSx0aGlzLmNoYW5nZS5lbWl0KG5ldyBBWih0aGlzLGUpKSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZSksdGhpcy5fb25DaGFuZ2UoZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X2JsdXIoKXt0aGlzLl9oYXNGb2N1c2VkQ2hpcCgpfHx0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpLHRoaXMuZGlzYWJsZWR8fCh0aGlzLl9jaGlwSW5wdXQ/c2V0VGltZW91dCgoKT0+e3RoaXMuZm9jdXNlZHx8dGhpcy5fbWFya0FzVG91Y2hlZCgpfSk6dGhpcy5fbWFya0FzVG91Y2hlZCgpKX1fbWFya0FzVG91Y2hlZCgpe3RoaXMuX29uVG91Y2hlZCgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1fYWxsb3dGb2N1c0VzY2FwZSgpe3RoaXMuX3RhYkluZGV4IT09LTEmJih0aGlzLl90YWJJbmRleD0tMSxzZXRUaW1lb3V0KCgpPT57dGhpcy5fdGFiSW5kZXg9dGhpcy5fdXNlclRhYkluZGV4fHwwLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpfV9yZXNldENoaXBzKCl7dGhpcy5fZHJvcFN1YnNjcmlwdGlvbnMoKSx0aGlzLl9saXN0ZW5Ub0NoaXBzRm9jdXMoKSx0aGlzLl9saXN0ZW5Ub0NoaXBzU2VsZWN0aW9uKCksdGhpcy5fbGlzdGVuVG9DaGlwc1JlbW92ZWQoKX1fZHJvcFN1YnNjcmlwdGlvbnMoKXt0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb249bnVsbCksdGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBCbHVyU3Vic2NyaXB0aW9uPW51bGwpLHRoaXMuX2NoaXBTZWxlY3Rpb25TdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb249bnVsbCl9X2xpc3RlblRvQ2hpcHNTZWxlY3Rpb24oKXt0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uPXRoaXMuY2hpcFNlbGVjdGlvbkNoYW5nZXMuc3Vic2NyaWJlKHQ9Pnt0LnNvdXJjZS5zZWxlY3RlZD90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodC5zb3VyY2UpOnRoaXMuX3NlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KHQuc291cmNlKSx0aGlzLm11bHRpcGxlfHx0aGlzLmNoaXBzLmZvckVhY2goZT0+eyF0aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKGUpJiZlLnNlbGVjdGVkJiZlLmRlc2VsZWN0KCl9KSx0LmlzVXNlcklucHV0JiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCl9KX1fbGlzdGVuVG9DaGlwc0ZvY3VzKCl7dGhpcy5fY2hpcEZvY3VzU3Vic2NyaXB0aW9uPXRoaXMuY2hpcEZvY3VzQ2hhbmdlcy5zdWJzY3JpYmUodD0+e2xldCBlPXRoaXMuY2hpcHMudG9BcnJheSgpLmluZGV4T2YodC5jaGlwKTt0aGlzLl9pc1ZhbGlkSW5kZXgoZSkmJnRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSx0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbj10aGlzLmNoaXBCbHVyQ2hhbmdlcy5zdWJzY3JpYmUoKCk9Pnt0aGlzLl9ibHVyKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSl9X2xpc3RlblRvQ2hpcHNSZW1vdmVkKCl7dGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbj10aGlzLmNoaXBSZW1vdmVDaGFuZ2VzLnN1YnNjcmliZSh0PT57bGV0IGU9dC5jaGlwLG89dGhpcy5jaGlwcy50b0FycmF5KCkuaW5kZXhPZih0LmNoaXApO3RoaXMuX2lzVmFsaWRJbmRleChvKSYmZS5faGFzRm9jdXMmJih0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4PW8pfSl9X29yaWdpbmF0ZXNGcm9tQ2hpcCh0KXtsZXQgZT10LnRhcmdldDtmb3IoO2UmJmUhPT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7KXtpZihlLmNsYXNzTGlzdC5jb250YWlucygibWF0LWNoaXAiKSlyZXR1cm4hMDtlPWUucGFyZW50RWxlbWVudH1yZXR1cm4hMX1faGFzRm9jdXNlZENoaXAoKXtyZXR1cm4gdGhpcy5jaGlwcyYmdGhpcy5jaGlwcy5zb21lKHQ9PnQuX2hhc0ZvY3VzKX1fc3luY0NoaXBzU3RhdGUoKXt0aGlzLmNoaXBzJiZ0aGlzLmNoaXBzLmZvckVhY2godD0+e3QuX2NoaXBMaXN0RGlzYWJsZWQ9dGhpcy5fZGlzYWJsZWQsdC5fY2hpcExpc3RNdWx0aXBsZT10aGlzLm11bHRpcGxlfSl9fTtEbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxEbSkodihMKSx2KFR0KSx2KE5lLDgpLHYoS2ksOCksdihKaSw4KSx2KFJhKSx2KEVhLDEwKSl9O0RtLlx1MDI3NWNtcD16KHt0eXBlOkRtLHNlbGVjdG9yczpbWyJtYXQtY2hpcC1saXN0Il1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uKHQsZSxvKXtpZih0JjEmJmdvKG8sJHIsNSksdCYyKXtsZXQgaTtIdChpPUZ0KCkpJiYoZS5jaGlwcz1pKX19LGhvc3RBdHRyczpbMSwibWF0LWNoaXAtbGlzdCJdLGhvc3RWYXJzOjE1LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuZm9jdXMoKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBlLl9ibHVyKCl9KSgia2V5ZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2tleWRvd24oaSl9KSx0JjImJih1bCgiaWQiLGUuX3VpZCkscmUoInRhYmluZGV4IixlLmRpc2FibGVkP251bGw6ZS5fdGFiSW5kZXgpKCJhcmlhLWRlc2NyaWJlZGJ5IixlLl9hcmlhRGVzY3JpYmVkYnl8fG51bGwpKCJhcmlhLXJlcXVpcmVkIixlLnJvbGU/ZS5yZXF1aXJlZDpudWxsKSgiYXJpYS1kaXNhYmxlZCIsZS5kaXNhYmxlZC50b1N0cmluZygpKSgiYXJpYS1pbnZhbGlkIixlLmVycm9yU3RhdGUpKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsZS5tdWx0aXBsZSkoInJvbGUiLGUucm9sZSkoImFyaWEtb3JpZW50YXRpb24iLGUuYXJpYU9yaWVudGF0aW9uKSxtZSgibWF0LWNoaXAtbGlzdC1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoIm1hdC1jaGlwLWxpc3QtaW52YWxpZCIsZS5lcnJvclN0YXRlKSgibWF0LWNoaXAtbGlzdC1yZXF1aXJlZCIsZS5yZXF1aXJlZCkpfSxpbnB1dHM6e2FyaWFPcmllbnRhdGlvbjpbImFyaWEtb3JpZW50YXRpb24iLCJhcmlhT3JpZW50YXRpb24iXSxtdWx0aXBsZToibXVsdGlwbGUiLGNvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCIsdmFsdWU6InZhbHVlIixyZXF1aXJlZDoicmVxdWlyZWQiLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsZGlzYWJsZWQ6ImRpc2FibGVkIixzZWxlY3RhYmxlOiJzZWxlY3RhYmxlIix0YWJJbmRleDoidGFiSW5kZXgiLGVycm9yU3RhdGVNYXRjaGVyOiJlcnJvclN0YXRlTWF0Y2hlciJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIix2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UifSxleHBvcnRBczpbIm1hdENoaXBMaXN0Il0sZmVhdHVyZXM6W1RlKFt7cHJvdmlkZTpqcix1c2VFeGlzdGluZzpEbX1dKSxhZV0sbmdDb250ZW50U2VsZWN0b3JzOkJYdCxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sxLCJtYXQtY2hpcC1saXN0LXdyYXBwZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih5bygpLHUoMCwiZGl2IiwwKSxZbigxKSxoKCkpfSxzdHlsZXM6W2AubWF0LWNoaXB7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKTtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7ZGlzcGxheTppbmxpbmUtZmxleDtwYWRkaW5nOjdweCAxMnB4O2JvcmRlci1yYWRpdXM6MTZweDthbGlnbi1pdGVtczpjZW50ZXI7Y3Vyc29yOmRlZmF1bHQ7bWluLWhlaWdodDozMnB4O2hlaWdodDoxcHh9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1zdGFuZGFyZC1jaGlwe3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZXtib3JkZXI6bm9uZTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTtwYWRkaW5nOjA7YmFja2dyb3VuZDpub25lfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlIC5tYXQtaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2ZvbnQtc2l6ZToxOHB4fS5tYXQtc3RhbmRhcmQtY2hpcDo6YWZ0ZXJ7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czppbmhlcml0O29wYWNpdHk6MDtjb250ZW50OiIiO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXN0YW5kYXJkLWNoaXA6aG92ZXI6OmFmdGVye29wYWNpdHk6LjEyfS5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3VzOjphZnRlcntvcGFjaXR5Oi4xNn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcHtvdXRsaW5lOnNvbGlkIDFweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHh9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkOjphZnRlcntvcGFjaXR5OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue2N1cnNvcjpkZWZhdWx0fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXIsLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDowfVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb257cGFkZGluZy10b3A6N3B4O3BhZGRpbmctYm90dG9tOjdweDtwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MTJweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MTJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDo0cHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtYXZhdGFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6NHB4fS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O2N1cnNvcjpwb2ludGVyfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLFtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDowfS5tYXQtY2hpcC1yaXBwbGV7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3ZlcmZsb3c6aGlkZGVufS5tYXQtY2hpcC1saXN0LXdyYXBwZXJ7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdztmbGV4LXdyYXA6d3JhcDthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luOi00cHh9Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlciBpbnB1dC5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWNoaXAtbGlzdC13cmFwcGVyIC5tYXQtc3RhbmRhcmQtY2hpcHttYXJnaW46NHB4fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6ZmxleC1zdGFydH0ubWF0LWNoaXAtbGlzdC1zdGFja2VkIC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe3dpZHRoOjEwMCV9Lm1hdC1jaGlwLWF2YXRhcntib3JkZXItcmFkaXVzOjUwJTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO29iamVjdC1maXQ6Y292ZXJ9aW5wdXQubWF0LWNoaXAtaW5wdXR7d2lkdGg6MTUwcHg7bWFyZ2luOjRweDtmbGV4OjEgMCAxNTBweH0KYF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7RG0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpLaSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkppLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6UmF9LHt0eXBlOkVhLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufV19XTtEbS5wcm9wRGVjb3JhdG9ycz17ZXJyb3JTdGF0ZU1hdGNoZXI6W3t0eXBlOmR9XSxtdWx0aXBsZTpbe3R5cGU6ZH1dLGNvbXBhcmVXaXRoOlt7dHlwZTpkfV0sdmFsdWU6W3t0eXBlOmR9XSxyZXF1aXJlZDpbe3R5cGU6ZH1dLHBsYWNlaG9sZGVyOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XSxhcmlhT3JpZW50YXRpb246W3t0eXBlOmQsYXJnczpbImFyaWEtb3JpZW50YXRpb24iXX1dLHNlbGVjdGFibGU6W3t0eXBlOmR9XSx0YWJJbmRleDpbe3R5cGU6ZH1dLGNoYW5nZTpbe3R5cGU6Qn1dLHZhbHVlQ2hhbmdlOlt7dHlwZTpCfV0sY2hpcHM6W3t0eXBlOmxvLGFyZ3M6WyRyLHtkZXNjZW5kYW50czohMH1dfV19OyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhEbSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1hdC1jaGlwLWxpc3QiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJtYXQtY2hpcC1saXN0LXdyYXBwZXIiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj4nLGV4cG9ydEFzOiJtYXRDaGlwTGlzdCIsaG9zdDp7IlthdHRyLnRhYmluZGV4XSI6ImRpc2FibGVkID8gbnVsbCA6IF90YWJJbmRleCIsIlthdHRyLmFyaWEtZGVzY3JpYmVkYnldIjoiX2FyaWFEZXNjcmliZWRieSB8fCBudWxsIiwiW2F0dHIuYXJpYS1yZXF1aXJlZF0iOiJyb2xlID8gcmVxdWlyZWQgOiBudWxsIiwiW2F0dHIuYXJpYS1kaXNhYmxlZF0iOiJkaXNhYmxlZC50b1N0cmluZygpIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6ImVycm9yU3RhdGUiLCJbYXR0ci5hcmlhLW11bHRpc2VsZWN0YWJsZV0iOiJtdWx0aXBsZSIsIlthdHRyLnJvbGVdIjoicm9sZSIsIltjbGFzcy5tYXQtY2hpcC1saXN0LWRpc2FibGVkXSI6ImRpc2FibGVkIiwiW2NsYXNzLm1hdC1jaGlwLWxpc3QtaW52YWxpZF0iOiJlcnJvclN0YXRlIiwiW2NsYXNzLm1hdC1jaGlwLWxpc3QtcmVxdWlyZWRdIjoicmVxdWlyZWQiLCJbYXR0ci5hcmlhLW9yaWVudGF0aW9uXSI6ImFyaWFPcmllbnRhdGlvbiIsY2xhc3M6Im1hdC1jaGlwLWxpc3QiLCIoZm9jdXMpIjoiZm9jdXMoKSIsIihibHVyKSI6Il9ibHVyKCkiLCIoa2V5ZG93bikiOiJfa2V5ZG93bigkZXZlbnQpIiwiW2lkXSI6Il91aWQifSxwcm92aWRlcnM6W3twcm92aWRlOmpyLHVzZUV4aXN0aW5nOkRtfV0sZW5jYXBzdWxhdGlvbjpKZS5Ob25lLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2gsc3R5bGVzOltgLm1hdC1jaGlwe3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwe3RyYW5zaXRpb246Ym94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO2Rpc3BsYXk6aW5saW5lLWZsZXg7cGFkZGluZzo3cHggMTJweDtib3JkZXItcmFkaXVzOjE2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2N1cnNvcjpkZWZhdWx0O21pbi1oZWlnaHQ6MzJweDtoZWlnaHQ6MXB4fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtc3RhbmRhcmQtY2hpcHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmV7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7cGFkZGluZzowO2JhY2tncm91bmQ6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbiwubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSAubWF0LWljb257d2lkdGg6MThweDtoZWlnaHQ6MThweDtmb250LXNpemU6MThweH0ubWF0LXN0YW5kYXJkLWNoaXA6OmFmdGVye3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvcGFjaXR5OjA7Y29udGVudDoiIjtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSAyMDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Lm1hdC1zdGFuZGFyZC1jaGlwOmhvdmVyOjphZnRlcntvcGFjaXR5Oi4xMn0ubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtc3RhbmRhcmQtY2hpcDpmb2N1czo6YWZ0ZXJ7b3BhY2l0eTouMTZ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXN0YW5kYXJkLWNoaXB7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXN7b3V0bGluZTpkb3R0ZWQgMnB4fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZDo6YWZ0ZXJ7b3BhY2l0eTowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZCAubWF0LWNoaXAtcmVtb3ZlLC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbntjdXJzb3I6ZGVmYXVsdH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29uLm1hdC1jaGlwLXdpdGgtYXZhdGFyLC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXJpZ2h0OjhweDtwYWRkaW5nLWxlZnQ6MH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLWxlZnQ6OHB4O3BhZGRpbmctcmlnaHQ6MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29ue3BhZGRpbmctdG9wOjdweDtwYWRkaW5nLWJvdHRvbTo3cHg7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjEycHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb257cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjEycHh9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MTJweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtYXZhdGFye3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MTJweH0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLWF2YXRhcnt3aWR0aDoyNHB4O2hlaWdodDoyNHB4O21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6NHB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLWF2YXRhcnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjRweH0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257d2lkdGg6MThweDtoZWlnaHQ6MThweDtjdXJzb3I6cG9pbnRlcn0ubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAgLm1hdC1jaGlwLXJlbW92ZSxbZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6MH0ubWF0LWNoaXAtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmU7Ym9yZGVyLXJhZGl1czppbmhlcml0O292ZXJmbG93OmhpZGRlbn0ubWF0LWNoaXAtbGlzdC13cmFwcGVye2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXA7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbjotNHB4fS5tYXQtY2hpcC1saXN0LXdyYXBwZXIgaW5wdXQubWF0LWlucHV0LWVsZW1lbnQsLm1hdC1jaGlwLWxpc3Qtd3JhcHBlciAubWF0LXN0YW5kYXJkLWNoaXB7bWFyZ2luOjRweH0ubWF0LWNoaXAtbGlzdC1zdGFja2VkIC5tYXQtY2hpcC1saXN0LXdyYXBwZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lm1hdC1jaGlwLWxpc3Qtc3RhY2tlZCAubWF0LWNoaXAtbGlzdC13cmFwcGVyIC5tYXQtc3RhbmRhcmQtY2hpcHt3aWR0aDoxMDAlfS5tYXQtY2hpcC1hdmF0YXJ7Ym9yZGVyLXJhZGl1czo1MCU7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjtvYmplY3QtZml0OmNvdmVyfWlucHV0Lm1hdC1jaGlwLWlucHV0e3dpZHRoOjE1MHB4O21hcmdpbjo0cHg7ZmxleDoxIDAgMTUwcHh9CmBdfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpMfSx7dHlwZTpUdH0se3R5cGU6TmUsZGVjb3JhdG9yczpbe3R5cGU6SH1dfSx7dHlwZTpLaSxkZWNvcmF0b3JzOlt7dHlwZTpIfV19LHt0eXBlOkppLGRlY29yYXRvcnM6W3t0eXBlOkh9XX0se3R5cGU6UmF9LHt0eXBlOkVhLGRlY29yYXRvcnM6W3t0eXBlOkh9LHt0eXBlOklufV19XX0se2FyaWFPcmllbnRhdGlvbjpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1vcmllbnRhdGlvbiJdfV0sY2hhbmdlOlt7dHlwZTpCfV0sdmFsdWVDaGFuZ2U6W3t0eXBlOkJ9XSxtdWx0aXBsZTpbe3R5cGU6ZH1dLGNvbXBhcmVXaXRoOlt7dHlwZTpkfV0sdmFsdWU6W3t0eXBlOmR9XSxyZXF1aXJlZDpbe3R5cGU6ZH1dLHBsYWNlaG9sZGVyOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XSxzZWxlY3RhYmxlOlt7dHlwZTpkfV0sdGFiSW5kZXg6W3t0eXBlOmR9XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6ZH1dLGNoaXBzOlt7dHlwZTpsbyxhcmdzOlskcix7ZGVzY2VuZGFudHM6ITB9XX1dfSl9KSgpO3ZhciBZWHQ9MCxNQz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9kZWZhdWx0T3B0aW9ucz1lLHRoaXMuZm9jdXNlZD0hMSx0aGlzLl9hZGRPbkJsdXI9ITEsdGhpcy5zZXBhcmF0b3JLZXlDb2Rlcz10aGlzLl9kZWZhdWx0T3B0aW9ucy5zZXBhcmF0b3JLZXlDb2Rlcyx0aGlzLmNoaXBFbmQ9bmV3ICQsdGhpcy5wbGFjZWhvbGRlcj0iIix0aGlzLmlkPWBtYXQtY2hpcC1saXN0LWlucHV0LSR7WVh0Kyt9YCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLmlucHV0RWxlbWVudD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9c2V0IGNoaXBMaXN0KHQpe3QmJih0aGlzLl9jaGlwTGlzdD10LHRoaXMuX2NoaXBMaXN0LnJlZ2lzdGVySW5wdXQodGhpcykpfWdldCBhZGRPbkJsdXIoKXtyZXR1cm4gdGhpcy5fYWRkT25CbHVyfXNldCBhZGRPbkJsdXIodCl7dGhpcy5fYWRkT25CbHVyPVplKHQpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZHx8dGhpcy5fY2hpcExpc3QmJnRoaXMuX2NoaXBMaXN0LmRpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1aZSh0KX1nZXQgZW1wdHkoKXtyZXR1cm4hdGhpcy5pbnB1dEVsZW1lbnQudmFsdWV9bmdPbkNoYW5nZXMoKXt0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5jaGlwRW5kLmNvbXBsZXRlKCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlPXRoaXMuZW1wdHl9X2tleWRvd24odCl7aWYodClpZih0LmtleUNvZGU9PT05JiYhVmEodCwic2hpZnRLZXkiKSYmdGhpcy5fY2hpcExpc3QuX2FsbG93Rm9jdXNFc2NhcGUoKSx0LmtleUNvZGU9PT04JiZ0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2Upe3RoaXMuX2NoaXBMaXN0Ll9rZXlNYW5hZ2VyLnNldExhc3RJdGVtQWN0aXZlKCksdC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybn1lbHNlIHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT0hMTt0aGlzLl9lbWl0Q2hpcEVuZCh0KX1fa2V5dXAodCl7IXRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZSYmdC5rZXlDb2RlPT09OCYmdGhpcy5lbXB0eSYmKHRoaXMuX2ZvY3VzTGFzdENoaXBPbkJhY2tzcGFjZT0hMCx0LnByZXZlbnREZWZhdWx0KCkpfV9ibHVyKCl7dGhpcy5hZGRPbkJsdXImJnRoaXMuX2VtaXRDaGlwRW5kKCksdGhpcy5mb2N1c2VkPSExLHRoaXMuX2NoaXBMaXN0LmZvY3VzZWR8fHRoaXMuX2NoaXBMaXN0Ll9ibHVyKCksdGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1fZm9jdXMoKXt0aGlzLmZvY3VzZWQ9ITAsdGhpcy5fZm9jdXNMYXN0Q2hpcE9uQmFja3NwYWNlPXRoaXMuZW1wdHksdGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1fZW1pdENoaXBFbmQodCl7IXRoaXMuaW5wdXRFbGVtZW50LnZhbHVlJiYhIXQmJnRoaXMuX2NoaXBMaXN0Ll9rZXlkb3duKHQpLCghdHx8dGhpcy5faXNTZXBhcmF0b3JLZXkodCkpJiYodGhpcy5jaGlwRW5kLmVtaXQoe2lucHV0OnRoaXMuaW5wdXRFbGVtZW50LHZhbHVlOnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLGNoaXBJbnB1dDp0aGlzfSksdD09bnVsbHx8dC5wcmV2ZW50RGVmYXVsdCgpKX1fb25JbnB1dCgpe3RoaXMuX2NoaXBMaXN0LnN0YXRlQ2hhbmdlcy5uZXh0KCl9Zm9jdXModCl7dGhpcy5pbnB1dEVsZW1lbnQuZm9jdXModCl9Y2xlYXIoKXt0aGlzLmlucHV0RWxlbWVudC52YWx1ZT0iIix0aGlzLl9mb2N1c0xhc3RDaGlwT25CYWNrc3BhY2U9ITB9X2lzU2VwYXJhdG9yS2V5KHQpe3JldHVybiFWYSh0KSYmbmV3IFNldCh0aGlzLnNlcGFyYXRvcktleUNvZGVzKS5oYXModC5rZXlDb2RlKX19O01DLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fE1DKSh2KEwpLHYoWjQpKX07TUMuXHUwMjc1ZGlyPXZ0KHt0eXBlOk1DLHNlbGVjdG9yczpbWyJpbnB1dCIsIm1hdENoaXBJbnB1dEZvciIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLWlucHV0IiwibWF0LWlucHV0LWVsZW1lbnQiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgia2V5ZG93biIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX2tleWRvd24oaSl9KSgia2V5dXAiLGZ1bmN0aW9uKGkpe3JldHVybiBlLl9rZXl1cChpKX0pKCJibHVyIixmdW5jdGlvbigpe3JldHVybiBlLl9ibHVyKCl9KSgiZm9jdXMiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZvY3VzKCl9KSgiaW5wdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuX29uSW5wdXQoKX0pLHQmMiYmKHVsKCJpZCIsZS5pZCkscmUoImRpc2FibGVkIixlLmRpc2FibGVkfHxudWxsKSgicGxhY2Vob2xkZXIiLGUucGxhY2Vob2xkZXJ8fG51bGwpKCJhcmlhLWludmFsaWQiLGUuX2NoaXBMaXN0JiZlLl9jaGlwTGlzdC5uZ0NvbnRyb2w/ZS5fY2hpcExpc3QubmdDb250cm9sLmludmFsaWQ6bnVsbCkoImFyaWEtcmVxdWlyZWQiLGUuX2NoaXBMaXN0JiZlLl9jaGlwTGlzdC5yZXF1aXJlZHx8bnVsbCkpfSxpbnB1dHM6e3NlcGFyYXRvcktleUNvZGVzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiLCJzZXBhcmF0b3JLZXlDb2RlcyJdLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsaWQ6ImlkIixjaGlwTGlzdDpbIm1hdENoaXBJbnB1dEZvciIsImNoaXBMaXN0Il0sYWRkT25CbHVyOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIiwiYWRkT25CbHVyIl0sZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7Y2hpcEVuZDoibWF0Q2hpcElucHV0VG9rZW5FbmQifSxleHBvcnRBczpbIm1hdENoaXBJbnB1dCIsIm1hdENoaXBJbnB1dEZvciJdLGZlYXR1cmVzOltXZV19KTtNQy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1o0XX1dfV07TUMucHJvcERlY29yYXRvcnM9e2NoaXBMaXN0Olt7dHlwZTpkLGFyZ3M6WyJtYXRDaGlwSW5wdXRGb3IiXX1dLGFkZE9uQmx1cjpbe3R5cGU6ZCxhcmdzOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIl19XSxzZXBhcmF0b3JLZXlDb2Rlczpbe3R5cGU6ZCxhcmdzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiXX1dLGNoaXBFbmQ6W3t0eXBlOkIsYXJnczpbIm1hdENoaXBJbnB1dFRva2VuRW5kIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6ZH1dLGlkOlt7dHlwZTpkfV0sZGlzYWJsZWQ6W3t0eXBlOmR9XX07KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE1DLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6ImlucHV0W21hdENoaXBJbnB1dEZvcl0iLGV4cG9ydEFzOiJtYXRDaGlwSW5wdXQsIG1hdENoaXBJbnB1dEZvciIsaG9zdDp7Y2xhc3M6Im1hdC1jaGlwLWlucHV0IG1hdC1pbnB1dC1lbGVtZW50IiwiKGtleWRvd24pIjoiX2tleWRvd24oJGV2ZW50KSIsIihrZXl1cCkiOiJfa2V5dXAoJGV2ZW50KSIsIihibHVyKSI6Il9ibHVyKCkiLCIoZm9jdXMpIjoiX2ZvY3VzKCkiLCIoaW5wdXQpIjoiX29uSW5wdXQoKSIsIltpZF0iOiJpZCIsIlthdHRyLmRpc2FibGVkXSI6ImRpc2FibGVkIHx8IG51bGwiLCJbYXR0ci5wbGFjZWhvbGRlcl0iOiJwbGFjZWhvbGRlciB8fCBudWxsIiwiW2F0dHIuYXJpYS1pbnZhbGlkXSI6Il9jaGlwTGlzdCAmJiBfY2hpcExpc3QubmdDb250cm9sID8gX2NoaXBMaXN0Lm5nQ29udHJvbC5pbnZhbGlkIDogbnVsbCIsIlthdHRyLmFyaWEtcmVxdWlyZWRdIjoiX2NoaXBMaXN0ICYmIF9jaGlwTGlzdC5yZXF1aXJlZCB8fCBudWxsIn19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W1o0XX1dfV19LHtzZXBhcmF0b3JLZXlDb2Rlczpbe3R5cGU6ZCxhcmdzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiXX1dLGNoaXBFbmQ6W3t0eXBlOkIsYXJnczpbIm1hdENoaXBJbnB1dFRva2VuRW5kIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6ZH1dLGlkOlt7dHlwZTpkfV0sY2hpcExpc3Q6W3t0eXBlOmQsYXJnczpbIm1hdENoaXBJbnB1dEZvciJdfV0sYWRkT25CbHVyOlt7dHlwZTpkLGFyZ3M6WyJtYXRDaGlwSW5wdXRBZGRPbkJsdXIiXX1dLGRpc2FibGVkOlt7dHlwZTpkfV19KX0pKCk7dmFyIGVfdD1bRG0sJHIsTUMsVGYsX0MsQ0NdLG5fdD17c2VwYXJhdG9yS2V5Q29kZXM6WzEzXX0sUnM9Y2xhc3N7fTtScy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxScyl9O1JzLlx1MDI3NW1vZD1xKHt0eXBlOlJzfSk7UnMuXHUwMjc1aW5qPVcoe3Byb3ZpZGVyczpbUmEse3Byb3ZpZGU6WjQsdXNlVmFsdWU6bl90fV0saW1wb3J0czpbW0R0XV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoUnMsW3t0eXBlOlosYXJnczpbe2ltcG9ydHM6W0R0XSxleHBvcnRzOmVfdCxkZWNsYXJhdGlvbnM6ZV90LHByb3ZpZGVyczpbUmEse3Byb3ZpZGU6WjQsdXNlVmFsdWU6bl90fV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoUnMse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltEbSwkcixNQyxUZixfQyxDQ119LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bRHRdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0RtLCRyLE1DLFRmLF9DLENDXX19KX0pKCk7dmFyIEdYdD1mdW5jdGlvbihuLHQpe3JldHVybnsiZW1iZWRkaW5nLXNlbGVjdGVkIjpuLCJlbWJlZGRpbmctdW5zZWxlY3RlZCI6dH19O2Z1bmN0aW9uIFdYdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsIm1hdC1pY29uIiw1KSxBKCJjbGljayIsZnVuY3Rpb24oKXtPdChlKTtsZXQgaT1TKCk7cmV0dXJuIGkub25TZWxlY3QuZW1pdChpLm1ldHJpYyl9KSxoKCl9aWYobiYyKXtsZXQgZT1TKCk7UCgibmdDbGFzcyIsaGwoMSxHWHQsZS5lbWJlZGRpbmdzTWV0cmljPT09ZS5tZXRyaWMsZS5lbWJlZGRpbmdzTWV0cmljIT09ZS5tZXRyaWMpKX19dmFyIG9fdD1mdW5jdGlvbihuKXtyZXR1cm57d2lkdGg6bn19LGlfdD1mdW5jdGlvbihuKXtyZXR1cm57InZhbHVlLWludmFsaWQiOm59fSxiQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub25SZW1vdmU9bmV3ICQsdGhpcy5vblNlbGVjdD1uZXcgJCx0aGlzLm9uRmlsdGVyQ2hhbmdlPW5ldyAkLHRoaXMuZm9jdXNNaW49ITEsdGhpcy5mb2N1c01heD0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IEp0fW5nT25Jbml0KCl7dGhpcy5taW5Gb3JtQ29udHJvbD1uZXcgenAodGhpcy5maWx0ZXJWYWx1ZXMubWluLFtJcC5yZXF1aXJlZCxJcC5taW4oLTEpLElwLm1heCgxKSx0aGlzLm1pblZhbHVlVmFsaWRhdG9yLmJpbmQodGhpcyldKSx0aGlzLm1heEZvcm1Db250cm9sPW5ldyB6cCh0aGlzLmZpbHRlclZhbHVlcy5tYXgsW0lwLnJlcXVpcmVkLElwLm1pbigtMSksSXAubWF4KDEpLHRoaXMubWF4VmFsdWVWYWxpZGF0b3IuYmluZCh0aGlzKV0pLHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoUGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpPT57dGhpcy5taW5Gb3JtQ29udHJvbC52YWxpZCYmdGhpcy5tYXhGb3JtQ29udHJvbC52YWxpZCYmdGhpcy5vbkZpbHRlckNoYW5nZS5lbWl0KHttaW46cGFyc2VGbG9hdCh0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlKSxtYXg6cGFyc2VGbG9hdCh0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlKX0pfSksdGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShQZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCk9Pnt0aGlzLm1pbkZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm1heEZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm9uRmlsdGVyQ2hhbmdlLmVtaXQoe21pbjpwYXJzZUZsb2F0KHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWUpLG1heDpwYXJzZUZsb2F0KHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWUpfSl9KX1uZ09uQ2hhbmdlcyh0KXt0aGlzLm1pbkZvcm1Db250cm9sJiZ0aGlzLm1heEZvcm1Db250cm9sJiYodGhpcy5taW5Gb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmZpbHRlclZhbHVlcy5taW4se2VtaXRFdmVudDohMX0pLHRoaXMubWF4Rm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5maWx0ZXJWYWx1ZXMubWF4LHtlbWl0RXZlbnQ6ITF9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfW1pblZhbHVlVmFsaWRhdG9yKHQpe3JldHVybiF0aGlzLm1heEZvcm1Db250cm9sfHx0LnZhbHVlPT09Ik5hTiI/bnVsbDppc05hTihwYXJzZUZsb2F0KHQudmFsdWUpKT97dmFsdWU6InRoZSBzdHJpbmcgeW91IGVudGVyZWQgaXMgbmVpdGhlciBOYU4gbm9yIGEgbnVtYmVyIn06cGFyc2VGbG9hdCh0LnZhbHVlKT5wYXJzZUZsb2F0KHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWUpP3t2YWx1ZToidGhlIG51bWJlciB5b3UgZW50ZXJlZCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IHZhbHVlIn06bnVsbH1tYXhWYWx1ZVZhbGlkYXRvcih0KXtpZih0aGlzLm1pbkZvcm1Db250cm9sKXtpZih0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlPT09Ik5hTiImJnQudmFsdWU9PT0iTmFOIilyZXR1cm4gbnVsbDtpZihpc05hTihwYXJzZUZsb2F0KHQudmFsdWUpKSlyZXR1cm57dmFsdWU6InRoZSBzdHJpbmcgeW91IGVudGVyZWQgaXMgbmVpdGhlciBOYU4gbm9yIGEgbnVtYmVyIn07aWYodC52YWx1ZTx0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlKXJldHVybnt2YWx1ZToidGhlIG51bWJlciB5b3UgZW50ZXJlZCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1pbiB2YWx1ZSJ9fWVsc2UgcmV0dXJuIG51bGw7cmV0dXJuIG51bGx9Z2V0RXJyb3JEZXNjcmlwdGlvbih0KXtpZih0KXtsZXQgZT1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gZT09PSJyZXF1aXJlZCI/InlvdSBkaWQgbm90IGVudGVyIGFueXRoaW5nIjplPT09Im1pbiI/InRoZSBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAtMS4wIjplPT09Im1heCI/InRoZSBudW1iZXIgaXMgYmlnZ2VyIHRoYW4gMS4wIjp0W2VdfXJldHVybiIifX07YkMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8YkMpfTtiQy5cdTAyNzVjbXA9eih7dHlwZTpiQyxzZWxlY3RvcnM6W1sibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnQiXV0saW5wdXRzOnttZXRyaWM6Im1ldHJpYyIsZmlsdGVyVmFsdWVzOiJmaWx0ZXJWYWx1ZXMiLGhhc0VtYmVkZGluZ3NEYXRhOiJoYXNFbWJlZGRpbmdzRGF0YSIsZW1iZWRkaW5nc01ldHJpYzoiZW1iZWRkaW5nc01ldHJpYyJ9LG91dHB1dHM6e29uUmVtb3ZlOiJvblJlbW92ZSIsb25TZWxlY3Q6Im9uU2VsZWN0IixvbkZpbHRlckNoYW5nZToib25GaWx0ZXJDaGFuZ2UifSxmZWF0dXJlczpbV2VdLGRlY2xzOjEwLHZhcnM6MjIsY29uc3RzOltbMSwiZmlsdGVyLWNoaXAiLDMsInJlbW92ZWQiXSxbImNsYXNzIiwiZW1iZWRkaW5ncy1idXR0b24iLCJzdmdJY29uIiwiZ3JvdXBfd29ya18yNHB4IiwzLCJuZ0NsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1yYW5nZSIsMywia2V5ZG93biJdLFsibWF0SW5wdXQiLCIiLDEsImlucHV0LWZpZWxkIiwzLCJ2YWx1ZSIsIm1hdFRvb2x0aXAiLCJtYXRUb29sdGlwRGlzYWJsZWQiLCJuZ1N0eWxlIiwibmdDbGFzcyIsImZvcm1Db250cm9sIiwiZm9jdXMiLCJmb2N1c291dCJdLFsibWF0Q2hpcFJlbW92ZSIsIiIsInN2Z0ljb24iLCJjYW5jZWxfMjRweCJdLFsic3ZnSWNvbiIsImdyb3VwX3dvcmtfMjRweCIsMSwiZW1iZWRkaW5ncy1idXR0b24iLDMsIm5nQ2xhc3MiLCJjbGljayJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwibWF0LWNoaXAiLDApLEEoInJlbW92ZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZW1vdmUuZW1pdChlLm1ldHJpYyl9KSxrKDEsV1h0LDEsNCwibWF0LWljb24iLDEpLFQoMiksdSgzLCJkaXYiLDIpLEEoImtleWRvd24iLGZ1bmN0aW9uKGkpe3JldHVybiBpLnN0b3BQcm9wYWdhdGlvbigpfSksVCg0LCIgWyAiKSx1KDUsImlucHV0IiwzKSxBKCJmb2N1cyIsZnVuY3Rpb24oKXtyZXR1cm4gZS5mb2N1c01pbj0hMH0pKCJmb2N1c291dCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5mb2N1c01pbj0hMX0pLGgoKSxUKDYsIiA7ICIpLHUoNywiaW5wdXQiLDMpLEEoImZvY3VzIixmdW5jdGlvbigpe3JldHVybiBlLmZvY3VzTWF4PSEwfSkoImZvY3Vzb3V0IixmdW5jdGlvbigpe3JldHVybiBlLmZvY3VzTWF4PSExfSksaCgpLFQoOCwiIF0gIiksaCgpLEQoOSwibWF0LWljb24iLDQpLGgoKSksdCYyJiYoeCgxKSxQKCJuZ0lmIixlLmhhc0VtYmVkZGluZ3NEYXRhKSx4KDEpLGxlKCIgIixlLm1ldHJpYywiICIpLHgoMyksUCgidmFsdWUiLGUuZmlsdGVyVmFsdWVzLm1pbikoIm1hdFRvb2x0aXAiLGUuZ2V0RXJyb3JEZXNjcmlwdGlvbihlLm1pbkZvcm1Db250cm9sLmVycm9ycykpKCJtYXRUb29sdGlwRGlzYWJsZWQiLCFlLm1pbkZvcm1Db250cm9sLmludmFsaWQpKCJuZ1N0eWxlIixhbygxNCxvX3QsZS5mb2N1c01pbj8iMTAwcHgiOmUubWluRm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgrImNoIikpKCJuZ0NsYXNzIixhbygxNixpX3QsIWUubWluRm9ybUNvbnRyb2wudmFsaWQpKSgiZm9ybUNvbnRyb2wiLGUubWluRm9ybUNvbnRyb2wpLHgoMiksUCgidmFsdWUiLGUuZmlsdGVyVmFsdWVzLm1heCkoIm1hdFRvb2x0aXAiLGUuZ2V0RXJyb3JEZXNjcmlwdGlvbihlLm1heEZvcm1Db250cm9sLmVycm9ycykpKCJtYXRUb29sdGlwRGlzYWJsZWQiLCFlLm1heEZvcm1Db250cm9sLmludmFsaWQpKCJuZ1N0eWxlIixhbygxOCxvX3QsZS5mb2N1c01heD8iMTAwcHgiOmUubWF4Rm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGgrImNoIikpKCJuZ0NsYXNzIixhbygyMCxpX3QsIWUubWF4Rm9ybUNvbnRyb2wudmFsaWQpKSgiZm9ybUNvbnRyb2wiLGUubWF4Rm9ybUNvbnRyb2wpKX0sZGlyZWN0aXZlczpbJHIsWHQscmMsaG0sSHIsam4sbGYsQnMsWGUsVGZdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LmZpbHRlci1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O21hcmdpbi1sZWZ0OjVweH0ubWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1yYW5nZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtmb250LXNpemU6LjhlbTtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xpbmUtaGVpZ2h0OjMwcHg7cGFkZGluZzowIDVweDttYXJnaW4tbGVmdDo1cHh9LmlucHV0LWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMCk7Ym9yZGVyOm5vbmU7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO2ZvbnQtc2l6ZToxLjFlbTt0cmFuc2l0aW9uOndpZHRoIDFzfS5pbnB1dC1maWVsZFtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMik7Ym9yZGVyOm5vbmU7b3V0bGluZTpub25lfS52YWx1ZS1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5lbWJlZGRpbmctc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDA7b3BhY2l0eToxfS5lbWJlZGRpbmctdW5zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0uZW1iZWRkaW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7bWFyZ2luLXJpZ2h0OjhweDtjdXJzb3I6cG9pbnRlcn0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhiQyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9tZXRyaWNfYXJpdGhtZXRpY19lbGVtZW50X2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL21ldHJpY19hcml0aG1ldGljX2VsZW1lbnRfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse21ldHJpYzpbe3R5cGU6ZH1dLGZpbHRlclZhbHVlczpbe3R5cGU6ZH1dLGhhc0VtYmVkZGluZ3NEYXRhOlt7dHlwZTpkfV0sZW1iZWRkaW5nc01ldHJpYzpbe3R5cGU6ZH1dLG9uUmVtb3ZlOlt7dHlwZTpCfV0sb25TZWxlY3Q6W3t0eXBlOkJ9XSxvbkZpbHRlckNoYW5nZTpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBLZD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5maWx0ZXJWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZSh6ZShQaCkpLnBpcGUoRyhlPT57bGV0IG89ZVt0aGlzLm1ldHJpY107aWYoIW8pcmV0dXJue21pbjotMSxtYXg6MX07bGV0IGk9by5pbmNsdWRlTmFOPyJOYU4iOnRoaXMucm91bmRUb1RocmVlRGVjaW1hbFBvaW50cyhvLm1pbiksYT1vLm1heDxvLm1pbj8iTmFOIjp0aGlzLnJvdW5kVG9UaHJlZURlY2ltYWxQb2ludHMoby5tYXgpO3JldHVybnttaW46aSxtYXg6YX19KSksdGhpcy5oYXNFbWJlZGRpbmdzRGF0YSQ9dGhpcy5zdG9yZS5waXBlKHplKGM3KSkucGlwZShHKGU9PmUhPT12b2lkIDApKSx0aGlzLmVtYmVkZGluZ3NNZXRyaWMkPXRoaXMuc3RvcmUucGlwZSh6ZShKaHQpKX1yZW1vdmUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChUUyh7bWV0cmljOnR9KSl9c2VsZWN0KHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocjcoe21ldHJpYzp0fSkpfWZpbHRlckNoYW5nZSh0KXtsZXQgZT1pc05hTih0Lm1pbik/LTE6dC5taW4sbz1pc05hTih0Lm1heCk/LTI6dC5tYXgsaT1pc05hTih0Lm1pbik7dGhpcy5zdG9yZS5kaXNwYXRjaChBUyh7bWV0cmljOnRoaXMubWV0cmljLG1heDpvLG1pbjplLGluY2x1ZGVOYU46aX0pKX1yb3VuZFRvVGhyZWVEZWNpbWFsUG9pbnRzKHQpe3JldHVybiBNYXRoLnJvdW5kKCh0K051bWJlci5FUFNJTE9OKSoxZTMpLzFlM319O0tkLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEtkKSh2KHN0KSl9O0tkLlx1MDI3NWNtcD16KHt0eXBlOktkLHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiXV0saW5wdXRzOnttZXRyaWM6Im1ldHJpYyJ9LGRlY2xzOjQsdmFyczoxMCxjb25zdHM6W1szLCJtZXRyaWMiLCJmaWx0ZXJWYWx1ZXMiLCJoYXNFbWJlZGRpbmdzRGF0YSIsImVtYmVkZGluZ3NNZXRyaWMiLCJvblJlbW92ZSIsIm9uU2VsZWN0Iiwib25GaWx0ZXJDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsIm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50IiwwKSxBKCJvblJlbW92ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUucmVtb3ZlKGkpfSkoIm9uU2VsZWN0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5zZWxlY3QoaSl9KSgib25GaWx0ZXJDaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLmZpbHRlckNoYW5nZShpKX0pLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpLGgoKSksdCYyJiZQKCJtZXRyaWMiLGUubWV0cmljKSgiZmlsdGVyVmFsdWVzIixRKDEsNCxlLmZpbHRlclZhbHVlcyQpKSgiaGFzRW1iZWRkaW5nc0RhdGEiLFEoMiw2LGUuaGFzRW1iZWRkaW5nc0RhdGEkKSkoImVtYmVkZGluZ3NNZXRyaWMiLFEoMyw4LGUuZW1iZWRkaW5nc01ldHJpYyQpKX0sZGlyZWN0aXZlczpbYkNdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEtkLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50Iix0ZW1wbGF0ZTpgCiAgICA8bWV0cmljLWFyaXRobWV0aWMtZWxlbWVudC1jb21wb25lbnQKICAgICAgW21ldHJpY109Im1ldHJpYyIKICAgICAgW2ZpbHRlclZhbHVlc109ImZpbHRlclZhbHVlcyQgfCBhc3luYyIKICAgICAgW2hhc0VtYmVkZGluZ3NEYXRhXT0iaGFzRW1iZWRkaW5nc0RhdGEkIHwgYXN5bmMiCiAgICAgIFtlbWJlZGRpbmdzTWV0cmljXT0iZW1iZWRkaW5nc01ldHJpYyQgfCBhc3luYyIKICAgICAgKG9uUmVtb3ZlKT0icmVtb3ZlKCRldmVudCkiCiAgICAgIChvblNlbGVjdCk9InNlbGVjdCgkZXZlbnQpIgogICAgICAob25GaWx0ZXJDaGFuZ2UpPSJmaWx0ZXJDaGFuZ2UoJGV2ZW50KSIKICAgID48L21ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se21ldHJpYzpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBKZD1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuT3BlcmF0b3I9elN9fTtKZC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxKZCl9O0pkLlx1MDI3NWNtcD16KHt0eXBlOkpkLHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIl1dLGlucHV0czp7b3BlcmF0b3I6Im9wZXJhdG9yIn0sZGVjbHM6Mix2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsIm1hdC1jaGlwIiksVCgxKSxoKCkpLHQmMiYmKHgoMSksbGUoIiAiLGUub3BlcmF0b3I9PT1lLk9wZXJhdG9yLkFORD8iJiI6IiIsIiAiKSl9LGRpcmVjdGl2ZXM6WyRyXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSmQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIix0ZW1wbGF0ZTpgCiAgICA8bWF0LWNoaXA+CiAgICAgIHt7IG9wZXJhdG9yID09PSBPcGVyYXRvci5BTkQgPyAnJicgOiAnJyB9fQogICAgPC9tYXQtY2hpcD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse29wZXJhdG9yOlt7dHlwZTpkfV19KX0pKCk7ZnVuY3Rpb24gUVh0KG4sdCl7aWYobiYxJiZEKDAsIm5wbWktbWV0cmljLWFyaXRobWV0aWMtZWxlbWVudCIsNCksbiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0O1AoIm1ldHJpYyIsZS5tZXRyaWMpfX1mdW5jdGlvbiBLWHQobix0KXtpZihuJjEmJkQoMCwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1vcGVyYXRvciIsNSksbiYyKXtsZXQgZT1TKCkuJGltcGxpY2l0O1AoIm9wZXJhdG9yIixlLm9wZXJhdG9yKX19ZnVuY3Rpb24gSlh0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiKSxrKDEsUVh0LDEsMSwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50IiwyKSxrKDIsS1h0LDEsMSwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1vcGVyYXRvciIsMyksaCgpKSxuJjIpe2xldCBlPXQuJGltcGxpY2l0LG89UygpO3goMSksUCgibmdJZiIsZS5raW5kPT09by5Bcml0aG1ldGljS2luZC5NRVRSSUMpLHgoMSksUCgibmdJZiIsZS5raW5kPT09by5Bcml0aG1ldGljS2luZC5PUEVSQVRPUil9fXZhciBPQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuQXJpdGhtZXRpY0tpbmQ9SE99fTtPQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxPQyl9O09DLlx1MDI3NWNtcD16KHt0eXBlOk9DLHNlbGVjdG9yczpbWyJtZXRyaWMtYXJpdGhtZXRpYy1jb21wb25lbnQiXV0saW5wdXRzOnttZXRyaWNBcml0aG1ldGljOiJtZXRyaWNBcml0aG1ldGljIn0sZGVjbHM6Mix2YXJzOjIsY29uc3RzOltbMywic2VsZWN0YWJsZSJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywibWV0cmljIiw0LCJuZ0lmIl0sWzMsIm9wZXJhdG9yIiw0LCJuZ0lmIl0sWzMsIm1ldHJpYyJdLFszLCJvcGVyYXRvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwibWF0LWNoaXAtbGlzdCIsMCksaygxLEpYdCwzLDIsImRpdiIsMSksaCgpKSx0JjImJihQKCJzZWxlY3RhYmxlIiwhMSkseCgxKSxQKCJuZ0Zvck9mIixlLm1ldHJpY0FyaXRobWV0aWMpKX0sZGlyZWN0aXZlczpbRG0sbW4sWHQsS2QsSmRdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoT0MsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtZXRyaWMtYXJpdGhtZXRpYy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21ldHJpY19hcml0aG1ldGljX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL21ldHJpY19hcml0aG1ldGljX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHttZXRyaWNBcml0aG1ldGljOlt7dHlwZTpkfV19KX0pKCk7dmFyICRkPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm1ldHJpY0FyaXRobWV0aWMkPXRoaXMuc3RvcmUucGlwZSh6ZShmNykpfX07JGQuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8JGQpKHYoc3QpKX07JGQuXHUwMjc1Y21wPXooe3R5cGU6JGQsc2VsZWN0b3JzOltbIm5wbWktbWV0cmljLWFyaXRobWV0aWMiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywibWV0cmljQXJpdGhtZXRpYyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwibWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIikpLHQmMiYmUCgibWV0cmljQXJpdGhtZXRpYyIsUSgxLDEsZS5tZXRyaWNBcml0aG1ldGljJCkpfSxkaXJlY3RpdmVzOltPQ10scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoJGQsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pLW1ldHJpYy1hcml0aG1ldGljIix0ZW1wbGF0ZTpgCiAgICA8bWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50CiAgICAgIFttZXRyaWNBcml0aG1ldGljXT0ibWV0cmljQXJpdGhtZXRpYyQgfCBhc3luYyIKICAgID48L21ldHJpYy1hcml0aG1ldGljLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTt2YXIgSW09Y2xhc3N7fTtJbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxJbSl9O0ltLlx1MDI3NWNtcD16KHt0eXBlOkltLHNlbGVjdG9yczpbWyJucG1pLWRhdGEtc2VsZWN0aW9uIl1dLGRlY2xzOjQsdmFyczowLGNvbnN0czpbWzEsImRhdGEtc2VsZWN0aW9uIl0sWzEsIm1ldHJpY3Mtc2VsZWN0b3IiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksRCgxLCJucG1pLW1ldHJpYy1zZWFyY2giLDEpLEQoMiwibnBtaS1yZXN1bHRzLWRvd25sb2FkIiksaCgpLEQoMywibnBtaS1tZXRyaWMtYXJpdGhtZXRpYyIpKX0sZGlyZWN0aXZlczpbWGQsUWQsJGRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZzoxMHB4IDIwcHh9LmRhdGEtc2VsZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tZXRyaWNzLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJbSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktZGF0YS1zZWxlY3Rpb24iLHRlbXBsYXRlVXJsOiIuL2RhdGFfc2VsZWN0aW9uX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2RhdGFfc2VsZWN0aW9uX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLG51bGwpfSkoKTtmdW5jdGlvbiByX3Qobix0LGUsbyxpLGEpe2xldCByPXt9LHM9bmV3IFNldCh0KSxsPW5ldyBTZXQoaS5tYXAobT0+QWMobSkpKSxjPW5ldyBSZWdFeHAoYSwiaSIpO3JldHVybiBPYmplY3QuZW50cmllcyhuKS5mb3JFYWNoKG09PntpZighYy50ZXN0KG1bMF0pKXJldHVybjtsZXQgZj1tWzFdO2Y9Zi5maWx0ZXIocD0+cy5oYXMocC5ydW4pJiZsLmhhcyhwLm1ldHJpYykpLGVRdChlLG8sZikmJmYubGVuZ3RoIT09MCYmKHJbbVswXV09Zil9KSxyfWZ1bmN0aW9uIGg3KG4sdCxlKXtpZihlKXJldHVybiBuO2xldCBvPU9iamVjdC5hc3NpZ24oe30sbik7cmV0dXJuIHQuZm9yRWFjaChpPT5kZWxldGUgb1tpXSksb31mdW5jdGlvbiBlUXQobix0LGUpe3JldHVybiBuLmV2ZXJ5KG89PntpZihvLmtpbmQ9PT1ITy5PUEVSQVRPUilyZXR1cm4hMDtsZXQgaT10W28ubWV0cmljXTtyZXR1cm4gaT09PXZvaWQgMD8hMDplLnNvbWUoYT0+YS5tZXRyaWM9PT1BYyhvLm1ldHJpYyk/YS5uUE1JVmFsdWU9PT1udWxsP2kuaW5jbHVkZU5hTjphLm5QTUlWYWx1ZTw9aS5tYXgmJmEublBNSVZhbHVlPj1pLm1pbjohMSl9KX1mdW5jdGlvbiBzX3Qobix0LGUpe2xldCBvPXt9LGk9e30sYT1uZXcgU2V0KHQpLHI9QWMoZSkscz17bWF4Oi0xLG1pbjoxfTtPYmplY3QudmFsdWVzKG4pLmZvckVhY2goZj0+e2YuZm9yRWFjaChwPT57bGV0IGc9cC5ydW47aWYoISghYS5oYXMoZyl8fHAubWV0cmljIT09cikpaWYocC5uUE1JVmFsdWU9PT1udWxsKWlbZ10/aVtnXS5wdXNoKG51bGwpOmlbZ109W251bGxdO2Vsc2V7bGV0IF89cC5uUE1JVmFsdWU7cy5tYXg9cy5tYXg8Xz9fOnMubWF4LHMubWluPXMubWluPl8/XzpzLm1pbixvW3AucnVuXT9vW2ddLnB1c2goXyk6b1tnXT1bX119fSl9KTtsZXQgbD17fSxjPWM2KCkuZG9tYWluKFtzLm1pbixzLm1heF0pLnZhbHVlKGY9PmYpLG09YzYoKS5kb21haW4oWy0xLzAsMS8wXSkudGhyZXNob2xkcygwKS52YWx1ZShmPT5mKTtmb3IobGV0IGYgb2YgYSlpZihsW2ZdPWMob1tmXSksaVtmXSl7bGV0IHA9bShpW2ZdKTtsW2ZdLnVuc2hpZnQocFswXSl9cmV0dXJue3Zpb2xpbkRhdGE6bCxleHRyZW1lczpzfX12YXIgblF0PVsiY2hhcnQiXSxQQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub25SZW1vdmU9bmV3ICQsdGhpcy5vblVwZGF0ZUZpbHRlcj1uZXcgJCx0aGlzLmhlaWdodD0zMDAsdGhpcy5jaGFydFdpZHRoPTAsdGhpcy5jaGFydEhlaWdodD0wLHRoaXMuZHJhd0hlaWdodD0wLHRoaXMuZHJhd1dpZHRoPTAsdGhpcy5tYXJnaW49e3RvcDoyMCxyaWdodDoxMCxib3R0b206MjAsbGVmdDoxMH0sdGhpcy5kcmF3TWFyZ2luPXt0b3A6MCxyaWdodDowLGJvdHRvbToyMCxsZWZ0OjIwfSx0aGlzLmJydXNoPSRHKCksdGhpcy5tYXhCaW5TaXplPTAsdGhpcy5hcmVhPXo5KCkueDAoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlTnVtKC10Lmxlbmd0aCl9LmJpbmQodGhpcykpLngxKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZU51bSh0Lmxlbmd0aCl9LmJpbmQodGhpcykpLnkoZnVuY3Rpb24odCl7cmV0dXJuIHQueDA9PT0tMS8wP3RoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcDp0aGlzLnlTY2FsZSgodC54MSt0LngwKS8yKX0uYmluZCh0aGlzKSkuY3VydmUoSDkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMudXBkYXRlRGltZW5zaW9ucygpLHRoaXMuc3ZnPUNzKHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudCkuc2VsZWN0KCJzdmciKSx0aGlzLm1haW5Db250YWluZXI9dGhpcy5zdmcuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5tYXJnaW4ubGVmdH0sICR7dGhpcy5tYXJnaW4udG9wfSlgKSx0aGlzLmRyYXdDb250YWluZXI9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMuZHJhd01hcmdpbi5sZWZ0fSwgJHt0aGlzLmRyYXdNYXJnaW4udG9wfSlgKSx0aGlzLmRvdHNHcm91cD10aGlzLmRyYXdDb250YWluZXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJkb3RzR3JvdXAiKSx0aGlzLnlBeGlzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYXhpcyBheGlzLS15IiksdGhpcy54QXhpc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImF4aXMgYXhpcy0teCIpLHRoaXMubWlzY0dyb3VwPXRoaXMuZHJhd0NvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnhTY2FsZT14MigpLnBhZGRpbmcoLjA1KSx0aGlzLnhBeGlzPWU1KHRoaXMueFNjYWxlKSx0aGlzLnlTY2FsZT1zbCgpLnJhbmdlKFt0aGlzLmRyYXdIZWlnaHQsMF0pLHRoaXMueUF4aXM9aEcodGhpcy55U2NhbGUpLHRoaXMueFNjYWxlTnVtPXNsKCksdGhpcy5pbml0aWFsaXplQnJ1c2goKSx0aGlzLmRyYXdNaXNjKCksdGhpcy5yZWRyYXcoKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLnN2ZyYmdGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSx0aGlzLnNldE1heEJpblNpemUoKSx0aGlzLnVwZGF0ZUF4ZXMoKSx0aGlzLmRyYXcoKX11cGRhdGVEaW1lbnNpb25zKCl7dGhpcy5jaGFydFdpZHRoPXRoaXMud2lkdGgtdGhpcy5tYXJnaW4ubGVmdC10aGlzLm1hcmdpbi5yaWdodCx0aGlzLmRyYXdXaWR0aD10aGlzLmNoYXJ0V2lkdGgtdGhpcy5kcmF3TWFyZ2luLmxlZnQtdGhpcy5kcmF3TWFyZ2luLnJpZ2h0LHRoaXMuY2hhcnRIZWlnaHQ9dGhpcy5oZWlnaHQtdGhpcy5tYXJnaW4udG9wLXRoaXMubWFyZ2luLmJvdHRvbSx0aGlzLmRyYXdIZWlnaHQ9dGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wLXRoaXMuZHJhd01hcmdpbi5ib3R0b219c2V0TWF4QmluU2l6ZSgpe09iamVjdC52YWx1ZXModGhpcy5jaGFydERhdGEudmlvbGluRGF0YSkuZm9yRWFjaCh0PT57bGV0IGU9dC5tYXAoaT0+aS5sZW5ndGgpLG89TWF0aC5tYXgoLi4uZSk7dGhpcy5tYXhCaW5TaXplPU1hdGgubWF4KG8sdGhpcy5tYXhCaW5TaXplKX0pfXVwZGF0ZUF4ZXMoKXt0aGlzLnhTY2FsZS5yYW5nZShbMCx0aGlzLmRyYXdXaWR0aF0pLmRvbWFpbihPYmplY3Qua2V5cyh0aGlzLmNoYXJ0RGF0YS52aW9saW5EYXRhKSksdGhpcy55U2NhbGUuZG9tYWluKFt0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4sdGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWF4XSksdGhpcy54U2NhbGVOdW0ucmFuZ2UoWzAsdGhpcy54U2NhbGUuYmFuZHdpZHRoKCldKS5kb21haW4oWy10aGlzLm1heEJpblNpemUsdGhpcy5tYXhCaW5TaXplXSl9aW5pdGlhbGl6ZUJydXNoKCl7dGhpcy5icnVzaC5vbigiZW5kIix0aGlzLmJydXNoTW92ZWQuYmluZCh0aGlzKSl9ZHJhdygpe3RoaXMuZHJhd0F4ZXMoKSx0aGlzLmRyYXdQbG90KCksdGhpcy5yZWZyZXNoTWlzYygpLHRoaXMucmVmcmVzaEJydXNoKCl9ZHJhd0F4ZXMoKXt0aGlzLnlBeGlzR3JvdXAuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5kcmF3TWFyZ2luLmxlZnR9LAogICAgICAke3RoaXMuZHJhd01hcmdpbi50b3B9KWApLmNhbGwodGhpcy55QXhpcyksdGhpcy54QXhpc0dyb3VwLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMuZHJhd01hcmdpbi5sZWZ0fSwKICAgICAgJHt0aGlzLmRyYXdNYXJnaW4udG9wK3RoaXMuY2hhcnRIZWlnaHR9KWApLmNhbGwodGhpcy54QXhpcyl9ZHJhd1Bsb3QoKXtsZXQgdD10aGlzLmRvdHNHcm91cC5zZWxlY3RBbGwoIi52aW9saW4tcGxvdCIpLmRhdGEoT2JqZWN0LmVudHJpZXModGhpcy5jaGFydERhdGEudmlvbGluRGF0YSkpO3QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsInZpb2xpbi1wbG90Iikuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29sb3JTY2FsZShlWzBdKX0uYmluZCh0aGlzKSkuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUpe3JldHVybmAke3RoaXMuY29sb3JTY2FsZShlWzBdKX0zM2B9LmJpbmQodGhpcykpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKGVbMF0pfSwgMClgfS5iaW5kKHRoaXMpKS5kYXR1bShmdW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pLmF0dHIoImQiLHRoaXMuYXJlYSksdC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZShlWzBdKX0sIDApYH0uYmluZCh0aGlzKSkuZGF0dW0oZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19KS5hdHRyKCJkIix0aGlzLmFyZWEpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdNaXNjKCl7dGhpcy56ZXJvTGluZT10aGlzLm1pc2NHcm91cC5hcHBlbmQoImxpbmUiKS5zdHlsZSgic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLHRoaXMueVNjYWxlKDApKS5hdHRyKCJ4MiIsdGhpcy5kcmF3V2lkdGgpLmF0dHIoInkyIix0aGlzLnlTY2FsZSgwKSksdGhpcy5uYW5UZXh0PXRoaXMubWlzY0dyb3VwLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJmaWxsIiwiYmxhY2siKS50ZXh0KCJOYU4iKS5hdHRyKCJmb250LXNpemUiLCIxMHB4IikuYXR0cigidGV4dC1hbmNob3IiLCJlbmQiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJ4IiwtNSkuYXR0cigieSIsdGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wKSx0aGlzLm5hbkxpbmU9dGhpcy5taXNjR3JvdXAuYXBwZW5kKCJsaW5lIikuc3R5bGUoInN0cm9rZSIsImdyZXkiKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjMsIDMiKS5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wKX1yZWZyZXNoTWlzYygpe3RoaXMuemVyb0xpbmUuYXR0cigieTEiLHRoaXMueVNjYWxlKDApKS5hdHRyKCJ4MiIsdGhpcy5kcmF3V2lkdGgpLmF0dHIoInkyIix0aGlzLnlTY2FsZSgwKSksdGhpcy5uYW5UZXh0LmF0dHIoInkiLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5kcmF3TWFyZ2luLnRvcCksdGhpcy5uYW5MaW5lLmF0dHIoInkxIix0aGlzLmRyYXdIZWlnaHQrdGhpcy5kcmF3TWFyZ2luLnRvcCkuYXR0cigieDIiLHRoaXMuZHJhd1dpZHRoKS5hdHRyKCJ5MiIsdGhpcy5kcmF3SGVpZ2h0K3RoaXMuZHJhd01hcmdpbi50b3ApfXJlZnJlc2hCcnVzaCgpe3RoaXMuYnJ1c2guZXh0ZW50KFtbMCwwXSxbdGhpcy5kcmF3V2lkdGgsdGhpcy5kcmF3SGVpZ2h0K3RoaXMubWFyZ2luLnRvcF1dKTtsZXQgdD1bMCx0aGlzLmRyYXdIZWlnaHQrdGhpcy5tYXJnaW4udG9wXTtpZih0aGlzLmZpbHRlci5tYXg8dGhpcy5maWx0ZXIubWluKXRoaXMuZmlsdGVyLmluY2x1ZGVOYU4/dFswXT10aGlzLnlTY2FsZSh0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4pOnRbMF09dFsxXTtlbHNle2lmKCF0aGlzLmZpbHRlci5pbmNsdWRlTmFOKXtsZXQgbz1NYXRoLm1heCh0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4sdGhpcy5maWx0ZXIubWluKTt0WzFdPXRoaXMueVNjYWxlKG8pfWxldCBlPU1hdGgubWluKHRoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1heCx0aGlzLmZpbHRlci5tYXgpO3RbMF09dGhpcy55U2NhbGUoZSl9dGhpcy5kcmF3Q29udGFpbmVyLmNhbGwodGhpcy5icnVzaCkuY2FsbCh0aGlzLmJydXNoLm1vdmUsdCl9YnJ1c2hNb3ZlZCgpe2lmKCFWb3x8IVZvLnNvdXJjZUV2ZW50KXJldHVybjtsZXQgdD1Wby5zZWxlY3Rpb247aWYodCl7bGV0IGU9ITEsbz0tMixpPXRoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1pbjt0WzBdPD10aGlzLmRyYXdIZWlnaHQrdGhpcy5tYXJnaW4udG9wJiZ0WzFdPj10aGlzLmRyYXdIZWlnaHQmJihlPSEwKSx0WzBdPHRoaXMuZHJhd0hlaWdodCYmKG89dGhpcy55U2NhbGUuaW52ZXJ0KHRbMF0pKSx0WzFdPHRoaXMuZHJhd0hlaWdodCYmKGk9dGhpcy55U2NhbGUuaW52ZXJ0KHRbMV0pKSx0aGlzLm9uVXBkYXRlRmlsdGVyLmVtaXQoe21heDpvLG1pbjppLGluY2x1ZGVOYU46ZX0pfWVsc2UgdGhpcy5vblVwZGF0ZUZpbHRlci5lbWl0KHttYXg6MSxtaW46LTEsaW5jbHVkZU5hTjohMH0pfX07UEMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UEMpfTtQQy5cdTAyNzVjbXA9eih7dHlwZTpQQyxzZWxlY3RvcnM6W1sidmlvbGluLWZpbHRlci1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShuUXQsNyxMKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLmNoYXJ0Q29udGFpbmVyPW8uZmlyc3QpfX0saW5wdXRzOnttZXRyaWNOYW1lOiJtZXRyaWNOYW1lIixmaWx0ZXI6ImZpbHRlciIsY2hhcnREYXRhOiJjaGFydERhdGEiLHdpZHRoOiJ3aWR0aCIsY29sb3JTY2FsZToiY29sb3JTY2FsZSJ9LG91dHB1dHM6e29uUmVtb3ZlOiJvblJlbW92ZSIsb25VcGRhdGVGaWx0ZXI6Im9uVXBkYXRlRmlsdGVyIn0sZmVhdHVyZXM6W1dlXSxkZWNsczo5LHZhcnM6MSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gdHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/bj1nb29nLmdldE1zZygiUmVtb3ZlIEZpbHRlciIpOm49JGxvY2FsaXplYDpMYWJlbCBmb3IgYSBidXR0b24gdGhhdCByZW1vdmVzIGEgbWV0cmljIGZpbHRlci7ikJ9hNmJmYWQ1OGJiMzYzZDVjODkxZDBhNTQ3NGIxZDc3ZWY5MGEzNGRh4pCfODQ1NDk2MTc5Nzc2MjkwNzYyNDpSZW1vdmUgRmlsdGVyYCxbWzEsImNoYXJ0LWNvbnRhaW5lciJdLFsidGl0bGUiLCJTaG93cyB0aGUgblBNSSB2YWx1ZSBkaXN0cmlidXRpb24gcGVyIHJ1bi4gUmFuZ2VzIG9mIHNlbGVjdGVkIHZhbHVlcyBjYW4gYmUgbWFuaXB1bGF0ZWQgYnkgbW9kaWZ5aW5nIHRoZSBncmV5IGJveC4iLDEsImNoYXJ0LWhlYWQiXSxbMSwiY2hhcnQtaGVhZGluZyJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNsZWFyXzI0cHgiXSxbMSwiY2hhcnQiXSxbImNoYXJ0IiwiIl0sWzEsImRyYXctYXJlYSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksdSgxLCJkaXYiLDEpLHUoMiwiZGl2IiwyKSxUKDMpLGgoKSx1KDQsImJ1dHRvbiIsMyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZW1vdmUuZW1pdCgpfSksRCg1LCJtYXQtaWNvbiIsNCksaCgpLGgoKSx1KDYsImRpdiIsNSw2KSxLbigpLEQoOCwic3ZnIiw3KSxoKCksaCgpKSx0JjImJih4KDMpLEllKGUubWV0cmljTmFtZSkpfSxkaXJlY3RpdmVzOltmbixYZV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0uY2hhcnQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmhpZGRlbn0uY2hhcnRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDozMDBweDt3aWR0aDoxMDAlfS5jaGFydC1oZWFkW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5jaGFydC1oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweDtwYWRkaW5nLWxlZnQ6MTBweDtwYWRkaW5nLXRvcDoxMHB4fS5kcmF3LWFyZWFbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LnN0cm9rZWQtbGluZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOnJnYmEoMCwwLDAsLjEyKTtzdHJva2UtZGFzaGFycmF5OjMgM30nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhQQyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InZpb2xpbi1maWx0ZXItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi92aW9saW5fZmlsdGVyX2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL3Zpb2xpbl9maWx0ZXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse21ldHJpY05hbWU6W3t0eXBlOmR9XSxmaWx0ZXI6W3t0eXBlOmR9XSxjaGFydERhdGE6W3t0eXBlOmR9XSx3aWR0aDpbe3R5cGU6ZH1dLGNvbG9yU2NhbGU6W3t0eXBlOmR9XSxvblJlbW92ZTpbe3R5cGU6Qn1dLG9uVXBkYXRlRmlsdGVyOlt7dHlwZTpCfV0sY2hhcnRDb250YWluZXI6W3t0eXBlOkl0LGFyZ3M6WyJjaGFydCIse3N0YXRpYzohMCxyZWFkOkx9XX1dfSl9KSgpO3ZhciB0Zz1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVSdW5zJD10aGlzLnN0b3JlLnBpcGUoemUoTHIpKS5waXBlKEcoZT0+ZT9BcnJheS5mcm9tKGUuZW50cmllcygpKS5maWx0ZXIobz0+b1sxXSkubWFwKG89Pm9bMF0pOltdKSksdGhpcy52aXNpYmxlQW5ub3RhdGlvbnMkPW9uKFt0aGlzLnN0b3JlLnNlbGVjdChYeCksdGhpcy5zdG9yZS5zZWxlY3QoRlMpLHRoaXMuc3RvcmUuc2VsZWN0KFZTKV0pLnBpcGUoRygoW2UsbyxpXSk9Pmg3KGUsbyxpKSkpLHRoaXMuY2hhcnRXaWR0aCQ9dGhpcy5zdG9yZS5waXBlKHplKEt4KSkucGlwZShHKGU9Pk1hdGgubWF4KDE1MCxlKSkpLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3Qoa18pLnBpcGUoRyhlPT5vPT57aWYoIWUuaGFzT3duUHJvcGVydHkobykpdGhyb3cgbmV3IEVycm9yKGBbQ29sb3Igc2NhbGVdIHVua25vd24gcnVuSWQ6ICR7b30uYCk7cmV0dXJuIGVbb119KSl9bmdPbkluaXQoKXt0aGlzLmNoYXJ0RGF0YSQ9b24oW3RoaXMudmlzaWJsZUFubm90YXRpb25zJCx0aGlzLmFjdGl2ZVJ1bnMkXSkucGlwZShHKChbdCxlXSk9PnNfdCh0LGUsdGhpcy5tZXRyaWNOYW1lKSkpfXJlbW92ZU1ldHJpYygpe3RoaXMuc3RvcmUuZGlzcGF0Y2goVFMoe21ldHJpYzp0aGlzLm1ldHJpY05hbWV9KSl9dXBkYXRlRmlsdGVyKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goQVMoT2JqZWN0LmFzc2lnbih7bWV0cmljOnRoaXMubWV0cmljTmFtZX0sdCkpKX19O3RnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHRnKSh2KHN0KSl9O3RnLlx1MDI3NWNtcD16KHt0eXBlOnRnLHNlbGVjdG9yczpbWyJucG1pLXZpb2xpbi1maWx0ZXIiXV0saW5wdXRzOnttZXRyaWNOYW1lOiJtZXRyaWNOYW1lIixmaWx0ZXI6ImZpbHRlciJ9LGRlY2xzOjQsdmFyczoxMSxjb25zdHM6W1szLCJtZXRyaWNOYW1lIiwiZmlsdGVyIiwiY2hhcnREYXRhIiwid2lkdGgiLCJjb2xvclNjYWxlIiwib25SZW1vdmUiLCJvblVwZGF0ZUZpbHRlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwidmlvbGluLWZpbHRlci1jb21wb25lbnQiLDApLEEoIm9uUmVtb3ZlIixmdW5jdGlvbigpe3JldHVybiBlLnJlbW92ZU1ldHJpYygpfSkoIm9uVXBkYXRlRmlsdGVyIixmdW5jdGlvbihpKXtyZXR1cm4gZS51cGRhdGVGaWx0ZXIoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxoKCkpLHQmMiYmUCgibWV0cmljTmFtZSIsZS5tZXRyaWNOYW1lKSgiZmlsdGVyIixlLmZpbHRlcikoImNoYXJ0RGF0YSIsUSgxLDUsZS5jaGFydERhdGEkKSkoIndpZHRoIixRKDIsNyxlLmNoYXJ0V2lkdGgkKSkoImNvbG9yU2NhbGUiLFEoMyw5LGUucnVuQ29sb3JTY2FsZSQpKX0sZGlyZWN0aXZlczpbUENdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHRnLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS12aW9saW4tZmlsdGVyIix0ZW1wbGF0ZTpgCiAgICA8dmlvbGluLWZpbHRlci1jb21wb25lbnQKICAgICAgW21ldHJpY05hbWVdPSJtZXRyaWNOYW1lIgogICAgICBbZmlsdGVyXT0iZmlsdGVyIgogICAgICBbY2hhcnREYXRhXT0iY2hhcnREYXRhJCB8IGFzeW5jIgogICAgICBbd2lkdGhdPSJjaGFydFdpZHRoJCB8IGFzeW5jIgogICAgICBbY29sb3JTY2FsZV09InJ1bkNvbG9yU2NhbGUkIHwgYXN5bmMiCiAgICAgIChvblJlbW92ZSk9InJlbW92ZU1ldHJpYygpIgogICAgICAob25VcGRhdGVGaWx0ZXIpPSJ1cGRhdGVGaWx0ZXIoJGV2ZW50KSIKICAgID48L3Zpb2xpbi1maWx0ZXItY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se21ldHJpY05hbWU6W3t0eXBlOmR9XSxmaWx0ZXI6W3t0eXBlOmR9XX0pfSkoKTtmdW5jdGlvbiBhUXQobix0KXtpZihuJjEmJkQoMCwibnBtaS12aW9saW4tZmlsdGVyIiw4KSxuJjIpe2xldCBlPXQuJGltcGxpY2l0O1AoIm1ldHJpY05hbWUiLGVbMF0pKCJmaWx0ZXIiLGVbMV0pfX1mdW5jdGlvbiByUXQobix0KXtuJjEmJih1KDAsImRpdiIsOSksdSgxLCJzcGFuIiwxMCksVCgyLCIgWW91IGNhbiBhZGQgbW9yZSBmaWx0ZXJzIGF0IHRoZSB0b3AuICIpLGgoKSxoKCkpfXZhciB5Qz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudG9nZ2xlU2lkZWJhckV4cGFuZGVkPW5ldyAkfX07eUMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8eUMpfTt5Qy5cdTAyNzVjbXA9eih7dHlwZTp5QyxzZWxlY3RvcnM6W1sidmlvbGluLWZpbHRlcnMtY29tcG9uZW50Il1dLGlucHV0czp7c2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLG1ldHJpY0ZpbHRlcnM6Im1ldHJpY0ZpbHRlcnMifSxvdXRwdXRzOnt0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6InRvZ2dsZVNpZGViYXJFeHBhbmRlZCJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe2xldCBuO3JldHVybiB0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9uPWdvb2cuZ2V0TXNnKCJFeHBhbmQvSGlkZSBTaWRlYmFyIik6bj0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGV4cGFuZHMvaGlkZXMgdGhlIHNpZGViYXIu4pCfNDhjMjk5MDNjZTg4MWFiNjEwODhmOGQ0OWQ4MjcyMDM3MTZhYWVkNOKQnzQ2NTg2MDI5OTE5NzAyNjAyMTU6RXhwYW5kL0hpZGUgU2lkZWJhcmAsW1sxLCJmaWx0ZXJzLXRvb2xiYXIiXSxbMSwiZmlsdGVycy10aXRsZSJdLFsxLCJzaWRlLXRvZ2dsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNoZXZyb25fbGVmdF8yNHB4Il0sWzEsImZpbHRlcnMiXSxbMywibWV0cmljTmFtZSIsImZpbHRlciIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJjbGFzcyIsImZpbHRlcnMtaGludCIsNCwibmdJZiJdLFszLCJtZXRyaWNOYW1lIiwiZmlsdGVyIl0sWzEsImZpbHRlcnMtaGludCJdLFsxLCJmaWx0ZXJzLWhpbnQtdGV4dCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksdSgxLCJoMyIsMSksVCgyLCJBY3RpdmUgRmlsdGVycyIpLGgoKSx1KDMsImRpdiIsMiksdSg0LCJidXR0b24iLDMpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLnRvZ2dsZVNpZGViYXJFeHBhbmRlZC5lbWl0KCl9KSxEKDUsIm1hdC1pY29uIiw0KSxoKCksaCgpLGgoKSx1KDYsImRpdiIsNSksayg3LGFRdCwxLDIsIm5wbWktdmlvbGluLWZpbHRlciIsNiksaCgpLGsoOCxyUXQsMywwLCJkaXYiLDcpKSx0JjImJih4KDcpLFAoIm5nRm9yT2YiLGUubWV0cmljRmlsdGVycykseCgxKSxQKCJuZ0lmIixlLm1ldHJpY0ZpbHRlcnMubGVuZ3RoPT09MCkpfSxkaXJlY3RpdmVzOltmbixYZSxtbixYdCx0Z10sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmZpbHRlcnMtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0MnB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MCAxMHB4fS5maWx0ZXJzLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZTtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjMwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDozMHB4fS5maWx0ZXJzW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy15OmF1dG99LmZpbHRlcnMtaGludFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweH0uZmlsdGVycy1oaW50LXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh5Qyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InZpb2xpbi1maWx0ZXJzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vdmlvbGluX2ZpbHRlcnNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vdmlvbGluX2ZpbHRlcnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse3NpZGViYXJFeHBhbmRlZDpbe3R5cGU6ZH1dLG1ldHJpY0ZpbHRlcnM6W3t0eXBlOmR9XSx0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgZWc9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2lkZWJhckV4cGFuZGVkJD10aGlzLnN0b3JlLnNlbGVjdChkNyksdGhpcy5tZXRyaWNGaWx0ZXJzJD10aGlzLnN0b3JlLnNlbGVjdChQaCkucGlwZShHKGU9Pk9iamVjdC5lbnRyaWVzKGUpKSl9b25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKERTKCkpfX07ZWcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZWcpKHYoc3QpKX07ZWcuXHUwMjc1Y21wPXooe3R5cGU6ZWcsc2VsZWN0b3JzOltbIm5wbWktdmlvbGluLWZpbHRlcnMiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywic2lkZWJhckV4cGFuZGVkIiwibWV0cmljRmlsdGVycyIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwidmlvbGluLWZpbHRlcnMtY29tcG9uZW50IiwwKSxBKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksaCgpKSx0JjImJlAoInNpZGViYXJFeHBhbmRlZCIsUSgxLDIsZS5zaWRlYmFyRXhwYW5kZWQkKSkoIm1ldHJpY0ZpbHRlcnMiLFEoMiw0LGUubWV0cmljRmlsdGVycyQpKX0sZGlyZWN0aXZlczpbeUNdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGVnLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS12aW9saW4tZmlsdGVycyIsdGVtcGxhdGU6YAogICAgPHZpb2xpbi1maWx0ZXJzLWNvbXBvbmVudAogICAgICBbc2lkZWJhckV4cGFuZGVkXT0ic2lkZWJhckV4cGFuZGVkJCB8IGFzeW5jIgogICAgICBbbWV0cmljRmlsdGVyc109Im1ldHJpY0ZpbHRlcnMkIHwgYXN5bmMiCiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIgogICAgPjwvdmlvbGluLWZpbHRlcnMtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIGxfdChuLHQsZSl7bGV0IG89T2JqZWN0LmtleXMobiksaT10Lm9yZGVyPT09S3IuRElTU0lNSUxBUnx8dC5vcmRlcj09PUtyLlNJTUlMQVI7aWYodC5tZXRyaWM9PT0iInx8KGU9PT12b2lkIDB8fGUucG9pbnRzW3QubWV0cmljXT09PXZvaWQgMCkmJmkpcmV0dXJuIG87bGV0IGE9aT9mUXQobyxlLHQpOm1RdChvLG4sdCk7cmV0dXJuIGNRdChvLGEsdC5vcmRlcj09PUtyLkFTQ0VORE5HfHx0Lm9yZGVyPT09S3IuU0lNSUxBUil9ZnVuY3Rpb24gY1F0KG4sdCxlKXtyZXR1cm4gZT9uLnNvcnQoKG8saSk9PnRbb10tdFtpXSk6bi5zb3J0KChvLGkpPT50W2ldLXRbb10pfWZ1bmN0aW9uIG1RdChuLHQsZSl7bGV0IG89QWMoZS5tZXRyaWMpLGk9e307aWYoZS5vcmRlcj09PUtyLkRFU0NFTkRJTkcpZm9yKGxldCBhIG9mIG4paVthXT1NYXRoLm1heCguLi50W2FdLmZpbHRlcihyPT5yLm1ldHJpYz09PW8pLm1hcChyPT5yLm5QTUlWYWx1ZT09PW51bGw/LTEvMDpyLm5QTUlWYWx1ZSkpO2Vsc2UgZm9yKGxldCBhIG9mIG4paVthXT1NYXRoLm1pbiguLi50W2FdLmZpbHRlcihyPT5yLm1ldHJpYz09PW8pLm1hcChyPT5yLm5QTUlWYWx1ZT09PW51bGw/MS8wOnIublBNSVZhbHVlKSk7cmV0dXJuIGl9ZnVuY3Rpb24gZlF0KG4sdCxlKXtsZXQgbz17fSxpPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxhPU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtlLm9yZGVyPT09S3IuU0lNSUxBUiYmKGk9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtmb3IobGV0IHIgb2YgbilyPT09ZS5tZXRyaWM/b1tyXT1pOnQucG9pbnRzW3JdPT09dm9pZCAwP29bcl09YTpvW3JdPXQucG9pbnRzW3JdLnZlY3Rvcj9wUXQodC5wb2ludHNbZS5tZXRyaWNdLnZlY3Rvcix0LnBvaW50c1tyXS52ZWN0b3IsYSk6YTtyZXR1cm4gb31mdW5jdGlvbiBwUXQobix0LGUpe3JldHVybiBuLmxlbmd0aCE9dC5sZW5ndGg/ZTp0Lm1hcCgoYSxyKT0+YS1uW3JdKS5tYXAoYT0+TWF0aC5wb3coYSwyKSkucmVkdWNlKChhLHIpPT5hK3IsMCl9dmFyIGRRdD1bInRodW1iQ29udGFpbmVyIl0sZ1F0PVsidG9nZ2xlQmFyIl0sdVF0PVsiaW5wdXQiXSxoUXQ9ZnVuY3Rpb24obil7cmV0dXJue2VudGVyRHVyYXRpb246bn19LF9RdD1bIioiXSx6Wj1uZXcgeXQoIm1hdC1zbGlkZS10b2dnbGUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+KHtkaXNhYmxlVG9nZ2xlVmFsdWU6ITF9KX0pO3ZhciBDUXQ9MCxjX3Q9e3Byb3ZpZGU6amEsdXNlRXhpc3Rpbmc6dG8oKCk9PnptKSxtdWx0aTohMH0sSVo9Y2xhc3N7Y29uc3RydWN0b3IodCxlKXt0aGlzLnNvdXJjZT10LHRoaXMuY2hlY2tlZD1lfX0sTVF0PURfKEZzKHRsKFZyKGNsYXNze2NvbnN0cnVjdG9yKG4pe3RoaXMuX2VsZW1lbnRSZWY9bn19KSkpKSx6bT1jbGFzcyBleHRlbmRzIE1RdHtjb25zdHJ1Y3Rvcih0LGUsbyxpLGEscil7c3VwZXIodCksdGhpcy5fZm9jdXNNb25pdG9yPWUsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9byx0aGlzLmRlZmF1bHRzPWEsdGhpcy5fb25DaGFuZ2U9cz0+e30sdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl91bmlxdWVJZD1gbWF0LXNsaWRlLXRvZ2dsZS0keysrQ1F0fWAsdGhpcy5fcmVxdWlyZWQ9ITEsdGhpcy5fY2hlY2tlZD0hMSx0aGlzLm5hbWU9bnVsbCx0aGlzLmlkPXRoaXMuX3VuaXF1ZUlkLHRoaXMubGFiZWxQb3NpdGlvbj0iYWZ0ZXIiLHRoaXMuYXJpYUxhYmVsPW51bGwsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuY2hhbmdlPW5ldyAkLHRoaXMudG9nZ2xlQ2hhbmdlPW5ldyAkLHRoaXMudGFiSW5kZXg9cGFyc2VJbnQoaSl8fDAsdGhpcy5jb2xvcj10aGlzLmRlZmF1bHRDb2xvcj1hLmNvbG9yfHwiYWNjZW50Iix0aGlzLl9ub29wQW5pbWF0aW9ucz1yPT09Ik5vb3BBbmltYXRpb25zIn1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPVplKHQpfWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuX2NoZWNrZWR9c2V0IGNoZWNrZWQodCl7dGhpcy5fY2hlY2tlZD1aZSh0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgaW5wdXRJZCgpe3JldHVybmAke3RoaXMuaWR8fHRoaXMuX3VuaXF1ZUlkfS1pbnB1dGB9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKHQ9Pnt0PT09ImtleWJvYXJkInx8dD09PSJwcm9ncmFtIj90aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpOnR8fFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnRoaXMuX29uVG91Y2hlZCgpKX0pfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfV9vbkNoYW5nZUV2ZW50KHQpe2lmKHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy50b2dnbGVDaGFuZ2UuZW1pdCgpLHRoaXMuZGVmYXVsdHMuZGlzYWJsZVRvZ2dsZVZhbHVlKXt0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkPXRoaXMuY2hlY2tlZDtyZXR1cm59dGhpcy5jaGVja2VkPXRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQsdGhpcy5fZW1pdENoYW5nZUV2ZW50KCl9X29uSW5wdXRDbGljayh0KXt0LnN0b3BQcm9wYWdhdGlvbigpfXdyaXRlVmFsdWUodCl7dGhpcy5jaGVja2VkPSEhdH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Zm9jdXModCxlKXtlP3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9pbnB1dEVsZW1lbnQsZSx0KTp0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyh0KX10b2dnbGUoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZCx0aGlzLl9vbkNoYW5nZSh0aGlzLmNoZWNrZWQpfV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9vbkNoYW5nZSh0aGlzLmNoZWNrZWQpLHRoaXMuY2hhbmdlLmVtaXQobmV3IElaKHRoaXMsdGhpcy5jaGVja2VkKSl9X29uTGFiZWxUZXh0Q2hhbmdlKCl7dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpfX07em0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8em0pKHYoTCksdihsbiksdihUdCksWmEoInRhYmluZGV4Iiksdih6Wiksdihzbiw4KSl9O3ptLlx1MDI3NWNtcD16KHt0eXBlOnptLHNlbGVjdG9yczpbWyJtYXQtc2xpZGUtdG9nZ2xlIl1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHBlKGRRdCw1KSxwZShnUXQsNSkscGUodVF0LDUpKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLl90aHVtYkVsPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLl90aHVtYkJhckVsPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLl9pbnB1dEVsZW1lbnQ9by5maXJzdCl9fSxob3N0QXR0cnM6WzEsIm1hdC1zbGlkZS10b2dnbGUiXSxob3N0VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJih1bCgiaWQiLGUuaWQpLHJlKCJ0YWJpbmRleCIsZS5kaXNhYmxlZD9udWxsOi0xKSgiYXJpYS1sYWJlbCIsbnVsbCkoImFyaWEtbGFiZWxsZWRieSIsbnVsbCksbWUoIm1hdC1jaGVja2VkIixlLmNoZWNrZWQpKCJtYXQtZGlzYWJsZWQiLGUuZGlzYWJsZWQpKCJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSIsZS5sYWJlbFBvc2l0aW9uPT0iYmVmb3JlIikoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixlLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsY29sb3I6ImNvbG9yIix0YWJJbmRleDoidGFiSW5kZXgiLG5hbWU6Im5hbWUiLGlkOiJpZCIsbGFiZWxQb3NpdGlvbjoibGFiZWxQb3NpdGlvbiIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxyZXF1aXJlZDoicmVxdWlyZWQiLGNoZWNrZWQ6ImNoZWNrZWQiLGFyaWFEZXNjcmliZWRieTpbImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhRGVzY3JpYmVkYnkiXX0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UiLHRvZ2dsZUNoYW5nZToidG9nZ2xlQ2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRTbGlkZVRvZ2dsZSJdLGZlYXR1cmVzOltUZShbY190XSksYWVdLG5nQ29udGVudFNlbGVjdG9yczpfUXQsZGVjbHM6MTYsdmFyczoyMCxjb25zdHM6W1sxLCJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsIl0sWyJsYWJlbCIsIiJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLWJhciJdLFsidG9nZ2xlQmFyIiwiIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJyb2xlIiwic3dpdGNoIiwxLCJtYXQtc2xpZGUtdG9nZ2xlLWlucHV0IiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsMywiaWQiLCJyZXF1aXJlZCIsInRhYkluZGV4IiwiY2hlY2tlZCIsImRpc2FibGVkIiwiY2hhbmdlIiwiY2xpY2siXSxbImlucHV0IiwiIl0sWzEsIm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVyIl0sWyJ0aHVtYkNvbnRhaW5lciIsIiJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLXRodW1iIl0sWyJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZSIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlUmFkaXVzIiwibWF0UmlwcGxlQW5pbWF0aW9uIl0sWzEsIm1hdC1yaXBwbGUtZWxlbWVudCIsIm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUiXSxbMSwibWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsibGFiZWxDb250ZW50IiwiIl0sWzIsImRpc3BsYXkiLCJub25lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYoeW8oKSx1KDAsImxhYmVsIiwwLDEpLHUoMiwiZGl2IiwyLDMpLHUoNCwiaW5wdXQiLDQsNSksQSgiY2hhbmdlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5fb25DaGFuZ2VFdmVudChpKX0pKCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuX29uSW5wdXRDbGljayhpKX0pLGgoKSx1KDYsImRpdiIsNiw3KSxEKDgsImRpdiIsOCksdSg5LCJkaXYiLDkpLEQoMTAsImRpdiIsMTApLGgoKSxoKCksaCgpLHUoMTEsInNwYW4iLDExLDEyKSxBKCJjZGtPYnNlcnZlQ29udGVudCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5fb25MYWJlbFRleHRDaGFuZ2UoKX0pLHUoMTMsInNwYW4iLDEzKSxUKDE0LCJceEEwIiksaCgpLFluKDE1KSxoKCksaCgpKSx0JjIpe2xldCBvPXdlKDEpLGk9d2UoMTIpO3JlKCJmb3IiLGUuaW5wdXRJZCkseCgyKSxtZSgibWF0LXNsaWRlLXRvZ2dsZS1iYXItbm8tc2lkZS1tYXJnaW4iLCFpLnRleHRDb250ZW50fHwhaS50ZXh0Q29udGVudC50cmltKCkpLHgoMiksUCgiaWQiLGUuaW5wdXRJZCkoInJlcXVpcmVkIixlLnJlcXVpcmVkKSgidGFiSW5kZXgiLGUudGFiSW5kZXgpKCJjaGVja2VkIixlLmNoZWNrZWQpKCJkaXNhYmxlZCIsZS5kaXNhYmxlZCkscmUoIm5hbWUiLGUubmFtZSkoImFyaWEtY2hlY2tlZCIsZS5jaGVja2VkLnRvU3RyaW5nKCkpKCJhcmlhLWxhYmVsIixlLmFyaWFMYWJlbCkoImFyaWEtbGFiZWxsZWRieSIsZS5hcmlhTGFiZWxsZWRieSkoImFyaWEtZGVzY3JpYmVkYnkiLGUuYXJpYURlc2NyaWJlZGJ5KSx4KDUpLFAoIm1hdFJpcHBsZVRyaWdnZXIiLG8pKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5kaXNhYmxlUmlwcGxlfHxlLmRpc2FibGVkKSgibWF0UmlwcGxlQ2VudGVyZWQiLCEwKSgibWF0UmlwcGxlUmFkaXVzIiwyMCkoIm1hdFJpcHBsZUFuaW1hdGlvbiIsYW8oMTgsaFF0LGUuX25vb3BBbmltYXRpb25zPzA6MTUwKSl9fSxkaXJlY3RpdmVzOltuaSxCcl0sc3R5bGVzOltgLm1hdC1zbGlkZS10b2dnbGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjI0cHg7bWF4LXdpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MjRweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDE2cHgsIDAsIDApfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xNnB4LCAwLCAwKX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWR7b3BhY2l0eTouMzh9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWx7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2Rpc3BsYXk6ZmxleDtmbGV4OjE7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWl0ZW1zOmNlbnRlcjtoZWlnaHQ6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcn0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtbGFiZWx7b3JkZXI6MX0ubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye29yZGVyOjJ9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLm1hdC1zbGlkZS10b2dnbGUtYmFye21hcmdpbi1yaWdodDo4cHg7bWFyZ2luLWxlZnQ6MH1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLWJhci1uby1zaWRlLW1hcmdpbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDt0b3A6LTNweDtsZWZ0OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YWxsIDgwbXMgbGluZWFyO3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNpdGlvbjpub25lfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7aGVpZ2h0OjIwcHg7d2lkdGg6MjBweDtib3JkZXItcmFkaXVzOjUwJX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7cG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MzZweDtoZWlnaHQ6MTRweDtmbGV4LXNocmluazowO2JvcmRlci1yYWRpdXM6OHB4fS5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0e2JvdHRvbTowO2xlZnQ6MTBweH1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtaW5wdXR7bGVmdDphdXRvO3JpZ2h0OjEwcHh9Lm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie3RyYW5zaXRpb246YWxsIDgwbXMgbGluZWFyO3RyYW5zaXRpb24tcHJvcGVydHk6YmFja2dyb3VuZC1jb2xvcjt0cmFuc2l0aW9uLWRlbGF5OjUwbXN9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7dHJhbnNpdGlvbjpub25lfS5tYXQtc2xpZGUtdG9nZ2xlIC5tYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6Y2FsYyg1MCUgLSAyMHB4KTtsZWZ0OmNhbGMoNTAlIC0gMjBweCk7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweDt6LWluZGV4OjE7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZSAubWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUpe29wYWNpdHk6LjEyfS5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dHJhbnNmb3JtOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjA0fS5tYXQtc2xpZGUtdG9nZ2xlOm5vdCgubWF0LWRpc2FibGVkKS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4xMn0ubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6MH1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5Om5vbmV9fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWIsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7Ym9yZGVyOjFweCBzb2xpZH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntvdXRsaW5lOjJweCBkb3R0ZWQ7b3V0bGluZS1vZmZzZXQ6NXB4fQpgXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTt6bS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkx9LHt0eXBlOmxufSx7dHlwZTpUdH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmxpLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3paXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dO3ptLnByb3BEZWNvcmF0b3JzPXtfdGh1bWJFbDpbe3R5cGU6SXQsYXJnczpbInRodW1iQ29udGFpbmVyIl19XSxfdGh1bWJCYXJFbDpbe3R5cGU6SXQsYXJnczpbInRvZ2dsZUJhciJdfV0sbmFtZTpbe3R5cGU6ZH1dLGlkOlt7dHlwZTpkfV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6ZH1dLGFyaWFMYWJlbDpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sYXJpYURlc2NyaWJlZGJ5Olt7dHlwZTpkLGFyZ3M6WyJhcmlhLWRlc2NyaWJlZGJ5Il19XSxyZXF1aXJlZDpbe3R5cGU6ZH1dLGNoZWNrZWQ6W3t0eXBlOmR9XSxjaGFuZ2U6W3t0eXBlOkJ9XSx0b2dnbGVDaGFuZ2U6W3t0eXBlOkJ9XSxfaW5wdXRFbGVtZW50Olt7dHlwZTpJdCxhcmdzOlsiaW5wdXQiXX1dfTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoem0sW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJtYXQtc2xpZGUtdG9nZ2xlIixleHBvcnRBczoibWF0U2xpZGVUb2dnbGUiLGhvc3Q6e2NsYXNzOiJtYXQtc2xpZGUtdG9nZ2xlIiwiW2lkXSI6ImlkIiwiW2F0dHIudGFiaW5kZXhdIjoiZGlzYWJsZWQgPyBudWxsIDogLTEiLCJbYXR0ci5hcmlhLWxhYmVsXSI6Im51bGwiLCJbYXR0ci5hcmlhLWxhYmVsbGVkYnldIjoibnVsbCIsIltjbGFzcy5tYXQtY2hlY2tlZF0iOiJjaGVja2VkIiwiW2NsYXNzLm1hdC1kaXNhYmxlZF0iOiJkaXNhYmxlZCIsIltjbGFzcy5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZV0iOidsYWJlbFBvc2l0aW9uID09ICJiZWZvcmUiJywiW2NsYXNzLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlXSI6Il9ub29wQW5pbWF0aW9ucyJ9LHRlbXBsYXRlOmA8bGFiZWwgW2F0dHIuZm9yXT0iaW5wdXRJZCIgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtbGFiZWwiICNsYWJlbD4KICA8ZGl2ICN0b2dnbGVCYXIgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtYmFyIgogICAgICAgW2NsYXNzLm1hdC1zbGlkZS10b2dnbGUtYmFyLW5vLXNpZGUtbWFyZ2luXT0iIWxhYmVsQ29udGVudC50ZXh0Q29udGVudCB8fCAhbGFiZWxDb250ZW50LnRleHRDb250ZW50LnRyaW0oKSI+CgogICAgPGlucHV0ICNpbnB1dCBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1pbnB1dCBjZGstdmlzdWFsbHktaGlkZGVuIiB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICByb2xlPSJzd2l0Y2giCiAgICAgICAgICAgW2lkXT0iaW5wdXRJZCIKICAgICAgICAgICBbcmVxdWlyZWRdPSJyZXF1aXJlZCIKICAgICAgICAgICBbdGFiSW5kZXhdPSJ0YWJJbmRleCIKICAgICAgICAgICBbY2hlY2tlZF09ImNoZWNrZWQiCiAgICAgICAgICAgW2Rpc2FibGVkXT0iZGlzYWJsZWQiCiAgICAgICAgICAgW2F0dHIubmFtZV09Im5hbWUiCiAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT0iY2hlY2tlZC50b1N0cmluZygpIgogICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPSJhcmlhTGFiZWwiCiAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT0iYXJpYUxhYmVsbGVkYnkiCiAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09ImFyaWFEZXNjcmliZWRieSIKICAgICAgICAgICAoY2hhbmdlKT0iX29uQ2hhbmdlRXZlbnQoJGV2ZW50KSIKICAgICAgICAgICAoY2xpY2spPSJfb25JbnB1dENsaWNrKCRldmVudCkiPgoKICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVyIiAjdGh1bWJDb250YWluZXI+CiAgICAgIDxkaXYgY2xhc3M9Im1hdC1zbGlkZS10b2dnbGUtdGh1bWIiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJtYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZSBtYXQtZm9jdXMtaW5kaWNhdG9yIiBtYXQtcmlwcGxlCiAgICAgICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPSJsYWJlbCIKICAgICAgICAgICBbbWF0UmlwcGxlRGlzYWJsZWRdPSJkaXNhYmxlUmlwcGxlIHx8IGRpc2FibGVkIgogICAgICAgICAgIFttYXRSaXBwbGVDZW50ZXJlZF09InRydWUiCiAgICAgICAgICAgW21hdFJpcHBsZVJhZGl1c109IjIwIgogICAgICAgICAgIFttYXRSaXBwbGVBbmltYXRpb25dPSJ7ZW50ZXJEdXJhdGlvbjogX25vb3BBbmltYXRpb25zID8gMCA6IDE1MH0iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJtYXQtcmlwcGxlLWVsZW1lbnQgbWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogIDwvZGl2PgoKICA8c3BhbiBjbGFzcz0ibWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IiAjbGFiZWxDb250ZW50IChjZGtPYnNlcnZlQ29udGVudCk9Il9vbkxhYmVsVGV4dENoYW5nZSgpIj4KICAgIDwhLS0gQWRkIGFuIGludmlzaWJsZSBzcGFuIHNvIEpBV1MgY2FuIHJlYWQgdGhlIGxhYmVsIC0tPgogICAgPHNwYW4gc3R5bGU9ImRpc3BsYXk6bm9uZSI+Jm5ic3A7PC9zcGFuPgogICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PgogIDwvc3Bhbj4KPC9sYWJlbD4KYCxwcm92aWRlcnM6W2NfdF0saW5wdXRzOlsiZGlzYWJsZWQiLCJkaXNhYmxlUmlwcGxlIiwiY29sb3IiLCJ0YWJJbmRleCJdLGVuY2Fwc3VsYXRpb246SmUuTm9uZSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNoLHN0eWxlczpbYC5tYXQtc2xpZGUtdG9nZ2xle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDoyNHB4O21heC13aWR0aDoxMDAlO2xpbmUtaGVpZ2h0OjI0cHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6bm9uZTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxNnB4LCAwLCAwKX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTZweCwgMCwgMCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVke29wYWNpdHk6LjM4fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbCwubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OmluaGVyaXQ7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudHt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVse29yZGVyOjF9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntvcmRlcjoyfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5tYXQtc2xpZGUtdG9nZ2xlLWJhcnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbC1iZWZvcmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS1iYXItbm8tc2lkZS1tYXJnaW57bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7dG9wOi0zcHg7bGVmdDowO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OnRyYW5zZm9ybX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3RyYW5zaXRpb246bm9uZX1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7Ym9yZGVyLXJhZGl1czo1MCV9Lm1hdC1zbGlkZS10b2dnbGUtYmFye3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjM2cHg7aGVpZ2h0OjE0cHg7ZmxleC1zaHJpbms6MDtib3JkZXItcmFkaXVzOjhweH0ubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dHtib3R0b206MDtsZWZ0OjEwcHh9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLWlucHV0e2xlZnQ6YXV0bztyaWdodDoxMHB4fS5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS10aHVtYnt0cmFuc2l0aW9uOmFsbCA4MG1zIGxpbmVhcjt0cmFuc2l0aW9uLXByb3BlcnR5OmJhY2tncm91bmQtY29sb3I7dHJhbnNpdGlvbi1kZWxheTo1MG1zfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1ie3RyYW5zaXRpb246bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZSAubWF0LXNsaWRlLXRvZ2dsZS1yaXBwbGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOmNhbGMoNTAlIC0gMjBweCk7bGVmdDpjYWxjKDUwJSAtIDIwcHgpO2hlaWdodDo0MHB4O3dpZHRoOjQwcHg7ei1pbmRleDoxO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUgLm1hdC1zbGlkZS10b2dnbGUtcmlwcGxlIC5tYXQtcmlwcGxlLWVsZW1lbnQ6bm90KC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlKXtvcGFjaXR5Oi4xMn0ubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4wNH0ubWF0LXNsaWRlLXRvZ2dsZTpub3QoLm1hdC1kaXNhYmxlZCkuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMTJ9Lm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcjpob3ZlciAubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5OjB9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7ZGlzcGxheTpub25lfX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUtYmFye2JvcmRlcjoxcHggc29saWR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7b3V0bGluZToycHggZG90dGVkO291dGxpbmUtb2Zmc2V0OjVweH0KYF19XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOkx9LHt0eXBlOmxufSx7dHlwZTpUdH0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOmxpLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOLGFyZ3M6W3paXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SH0se3R5cGU6TixhcmdzOltzbl19XX1dfSx7bmFtZTpbe3R5cGU6ZH1dLGlkOlt7dHlwZTpkfV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6ZH1dLGFyaWFMYWJlbDpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmQsYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0sY2hhbmdlOlt7dHlwZTpCfV0sdG9nZ2xlQ2hhbmdlOlt7dHlwZTpCfV0scmVxdWlyZWQ6W3t0eXBlOmR9XSxjaGVja2VkOlt7dHlwZTpkfV0sX3RodW1iRWw6W3t0eXBlOkl0LGFyZ3M6WyJ0aHVtYkNvbnRhaW5lciJdfV0sX3RodW1iQmFyRWw6W3t0eXBlOkl0LGFyZ3M6WyJ0b2dnbGVCYXIiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6ZCxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0sX2lucHV0RWxlbWVudDpbe3R5cGU6SXQsYXJnczpbImlucHV0Il19XX0pfSkoKTt2YXIgbV90PXtwcm92aWRlOm1pLHVzZUV4aXN0aW5nOnRvKCgpPT55aCksbXVsdGk6ITB9LHloPWNsYXNzIGV4dGVuZHMgY217fTt5aC5cdTAyNzVmYWM9ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuKG58fChuPUZuKHloKSkpKGV8fHloKX19KCk7eWguXHUwMjc1ZGlyPXZ0KHt0eXBlOnloLHNlbGVjdG9yczpbWyJtYXQtc2xpZGUtdG9nZ2xlIiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIm1hdC1zbGlkZS10b2dnbGUiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyJtYXQtc2xpZGUtdG9nZ2xlIiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGZlYXR1cmVzOltUZShbbV90XSksYWVdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHloLFt7dHlwZTp3dCxhcmdzOlt7c2VsZWN0b3I6YG1hdC1zbGlkZS10b2dnbGVbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sCiAgICAgICAgICAgICBtYXQtc2xpZGUtdG9nZ2xlW3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sIG1hdC1zbGlkZS10b2dnbGVbcmVxdWlyZWRdW25nTW9kZWxdYCxwcm92aWRlcnM6W21fdF19XX1dLG51bGwsbnVsbCl9KSgpO3ZhciBBZj1jbGFzc3t9O0FmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEFmKX07QWYuXHUwMjc1bW9kPXEoe3R5cGU6QWZ9KTtBZi5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEFmLFt7dHlwZTpaLGFyZ3M6W3tleHBvcnRzOlt5aF0sZGVjbGFyYXRpb25zOlt5aF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoQWYse2RlY2xhcmF0aW9uczpbeWhdLGV4cG9ydHM6W3loXX0pfSkoKTt2YXIgeGg9Y2xhc3N7fTt4aC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx4aCl9O3hoLlx1MDI3NW1vZD1xKHt0eXBlOnhofSk7eGguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tBZixjaSxEdCxzYV0sQWYsRHRdfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHhoLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltBZixjaSxEdCxzYV0sZXhwb3J0czpbQWYsem0sRHRdLGRlY2xhcmF0aW9uczpbem1dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHhoLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bem1dfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0FmLGNpLER0LHNhXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltBZix6bSxEdF19fSl9KSgpO2Z1bmN0aW9uIE9RdChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsMyl9dmFyIHhDPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3ICR9fTt4Qy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx4Qyl9O3hDLlx1MDI3NWNtcD16KHt0eXBlOnhDLHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24odCxlKXt0JjImJm1lKCJ2YWxpZCIsZS5pc1JlZ2V4RmlsdGVyVmFsaWQpfSxpbnB1dHM6e3JlZ2V4RmlsdGVyVmFsdWU6InJlZ2V4RmlsdGVyVmFsdWUiLGlzUmVnZXhGaWx0ZXJWYWxpZDoiaXNSZWdleEZpbHRlclZhbGlkIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1sic3ZnSWNvbiIsInNlYXJjaF8yNHB4Il0sWyJhdXRvY29tcGxldGUiLCJvZmYiLCJwbGFjZWhvbGRlciIsIkZpbHRlciBBbm5vdGF0aW9ucyIsMywidmFsdWUiLCJpbnB1dCJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJjbGFzcyIsImVycm9yLWljb24iLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsNCwibmdJZiJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEQoMCwibWF0LWljb24iLDApLHUoMSwiaW5wdXQiLDEpLEEoImlucHV0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UuZW1pdChpLnRhcmdldC52YWx1ZSl9KSxoKCksaygyLE9RdCwxLDAsIm1hdC1pY29uIiwyKSksdCYyJiYoeCgxKSxQKCJ2YWx1ZSIsZS5yZWdleEZpbHRlclZhbHVlKSx4KDEpLFAoIm5nSWYiLCFlLmlzUmVnZXhGaWx0ZXJWYWxpZCkpfSxkaXJlY3RpdmVzOltYZSxYdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpe2NvbG9yOiNjNjI4Mjh9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKSAgIC5lcnJvci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYzYyODI4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoeEMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2Fubm90YXRpb25zX3NlYXJjaF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbm5vdGF0aW9uc19zZWFyY2hfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse3JlZ2V4RmlsdGVyVmFsdWU6W3t0eXBlOmR9XSxvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U6W3t0eXBlOkJ9XSxpc1JlZ2V4RmlsdGVyVmFsaWQ6W3t0eXBlOkhhLGFyZ3M6WyJjbGFzcy52YWxpZCJdfSx7dHlwZTpkfV19KX0pKCk7dmFyIG5nPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFubm90YXRpb25zRmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChMUyksdGhpcy5pc0Fubm90YXRpb25zRmlsdGVyVmFsaWQkPXRoaXMuYW5ub3RhdGlvbnNGaWx0ZXIkLnBpcGUoRyhlPT57dHJ5e3JldHVybiBuZXcgUmVnRXhwKGUpLCEwfWNhdGNoKG8pe3JldHVybiExfX0pKX1maWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChOUyh7cmVnZXg6dH0pKX19O25nLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG5nKSh2KHN0KSl9O25nLlx1MDI3NWNtcD16KHt0eXBlOm5nLHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLXNlYXJjaCJdXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiaXNSZWdleEZpbHRlclZhbGlkIiwib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQiLDApLEEoIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuZmlsdGVyQ2hhbmdlKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxoKCkpLHQmMiYmUCgicmVnZXhGaWx0ZXJWYWx1ZSIsUSgxLDIsZS5hbm5vdGF0aW9uc0ZpbHRlciQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixRKDIsNCxlLmlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQpKX0sZGlyZWN0aXZlczpbeENdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG5nLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1zZWFyY2giLHRlbXBsYXRlOmAKICAgIDxucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQKICAgICAgW3JlZ2V4RmlsdGVyVmFsdWVdPSJhbm5vdGF0aW9uc0ZpbHRlciQgfCBhc3luYyIKICAgICAgW2lzUmVnZXhGaWx0ZXJWYWxpZF09ImlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQgfCBhc3luYyIKICAgICAgKG9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSk9ImZpbHRlckNoYW5nZSgkZXZlbnQpIgogICAgPjwvbnBtaS1hbm5vdGF0aW9ucy1zZWFyY2gtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIHhRdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTtFbigwKSx1KDEsImJ1dHRvbiIsNSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7T3QoZSk7bGV0IGk9UygpO3JldHVybiBpLm9uRmxhZ0Fubm90YXRpb25zLmVtaXQoaS5zZWxlY3RlZEFubm90YXRpb25zKX0pLEQoMiwibWF0LWljb24iLDYpLGgoKSx1KDMsImJ1dHRvbiIsNyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7T3QoZSk7bGV0IGk9UygpO3JldHVybiBpLm9uSGlkZUFubm90YXRpb25zLmVtaXQoaS5zZWxlY3RlZEFubm90YXRpb25zKX0pLEQoNCwibWF0LWljb24iLDgpLGgoKSxrbigpfWlmKG4mMil7bGV0IGU9UygpO3goMSksUCgiZGlzYWJsZWQiLGUuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGg9PT0wKSx4KDIpLFAoImRpc2FibGVkIixlLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoPT09MCl9fWZ1bmN0aW9uIHZRdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTtFbigwKSx1KDEsIm1hdC1zbGlkZS10b2dnbGUiLDkpLEEoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLm9uVG9nZ2xlU2hvd0NvdW50cy5lbWl0KCl9KSxUKDIsIiBTYW1wbGUgQ291bnQgIiksaCgpLHUoMywibWF0LXNsaWRlLXRvZ2dsZSIsMTApLEEoImNoYW5nZSIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLm9uVG9nZ2xlU2hvd0hpZGRlbi5lbWl0KCl9KSxUKDQsIiBTaG93IEhpZGRlbiAiKSxoKCksRCg1LCJucG1pLWFubm90YXRpb25zLXNlYXJjaCIpLGtuKCl9aWYobiYyKXtsZXQgZT1TKCk7eCgxKSxQKCJjaGVja2VkIixlLnNob3dDb3VudHMpLHgoMiksUCgiY2hlY2tlZCIsZS5zaG93SGlkZGVuKX19dmFyIHZDPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5vbkZsYWdBbm5vdGF0aW9ucz1uZXcgJCx0aGlzLm9uSGlkZUFubm90YXRpb25zPW5ldyAkLHRoaXMub25Ub2dnbGVFeHBhbmRlZD1uZXcgJCx0aGlzLm9uVG9nZ2xlU2hvd0NvdW50cz1uZXcgJCx0aGlzLm9uVG9nZ2xlU2hvd0hpZGRlbj1uZXcgJH19O3ZDLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHZDKX07dkMuXHUwMjc1Y21wPXooe3R5cGU6dkMsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyLWNvbXBvbmVudCJdXSxpbnB1dHM6e251bUFubm90YXRpb25zOiJudW1Bbm5vdGF0aW9ucyIsZXhwYW5kZWQ6ImV4cGFuZGVkIixzZWxlY3RlZEFubm90YXRpb25zOiJzZWxlY3RlZEFubm90YXRpb25zIixhbm5vdGF0aW9uc0V4cGFuZGVkOiJhbm5vdGF0aW9uc0V4cGFuZGVkIixzaG93Q291bnRzOiJzaG93Q291bnRzIixzaG93SGlkZGVuOiJzaG93SGlkZGVuIn0sb3V0cHV0czp7b25GbGFnQW5ub3RhdGlvbnM6Im9uRmxhZ0Fubm90YXRpb25zIixvbkhpZGVBbm5vdGF0aW9uczoib25IaWRlQW5ub3RhdGlvbnMiLG9uVG9nZ2xlRXhwYW5kZWQ6Im9uVG9nZ2xlRXhwYW5kZWQiLG9uVG9nZ2xlU2hvd0NvdW50czoib25Ub2dnbGVTaG93Q291bnRzIixvblRvZ2dsZVNob3dIaWRkZW46Im9uVG9nZ2xlU2hvd0hpZGRlbiJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpmdW5jdGlvbigpe2xldCBuO3R5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP249Z29vZy5nZXRNc2coIkhpZGVzL1Nob3dzIHRoZSBBbm5vdGF0aW9ucyBMaXN0Iik6bj0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGhpZGVzL3Nob3dzIHRoZSBhbm5vdGF0aW9ucyBsaXN0LuKQn2IzNjAzYmEzM2U1MzA4ZGQ4YzVlODA1ZTUwOGIyZjcyMzNkZjg5ZDTikJ83MzM2Mzc0NDEzMDU2MzQyNDkyOkhpZGVzL1Nob3dzIHRoZSBBbm5vdGF0aW9ucyBMaXN0YDtsZXQgdDt0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT90PWdvb2cuZ2V0TXNnKCJGbGFnIFNlbGVjdGVkIEFubm90YXRpb25zIik6dD0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGZsYWdzIHNlbGVjdGVkIGFubm90YXRpb25zLuKQnzU2OTJhZDg4MzEwMzhhOTBjNTg2M2ExZTlhZGY5NzQ4Y2FjM2NhZDjikJ8yMjQ0MDk5ODkxMzEzMzM2NTk1OkZsYWcgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgO2xldCBlO3JldHVybiB0eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUhPSJ1bmRlZmluZWQiJiZuZ0kxOG5DbG9zdXJlTW9kZT9lPWdvb2cuZ2V0TXNnKCJIaWRlIFNlbGVjdGVkIEFubm90YXRpb25zIik6ZT0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGhpZGVzIHNlbGVjdGVkIGFubm90YXRpb25zLuKQnzAzNDJjZGIzMzU4ZmE4ZTNmYTI3MjIwYTgyNThhNzI4NzQzMGI3MGbikJ81NDYyODMyMzkxMDkyMDg3NDg1OkhpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgLFtbMSwiYW5ub3RhdGlvbnMtdGl0bGUtY29udGFpbmVyIl0sWzEsImFubm90YXRpb25zLXRpdGxlIl0sWzQsIm5nSWYiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sMSwiZXhwYW5kLWJ1dHRvbiIsMywiY2xpY2siXSxbMywic3ZnSWNvbiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsdCwidGl0bGUiLCJGbGFnZ2luZyBhbm5vdGF0aW9ucyBhZGRzIHRoZW0gdG8geW91ciBpbnZlc3RpZ2F0aW9uIHJlc3VsdHMsIHdoaWNoIGNhbiBsYXRlciBiZSBleHBvcnRlZC4iLDMsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJmbGFnXzI0cHgiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLGUsInRpdGxlIiwiUmVtb3Zpbmcgbm9uLWNyaXRpY2FsIGFubm90YXRpb25zIHVuY2x1dHRlcnMgdGhlIHZpZXcuIFJlbW92ZWQgYW5ub3RhdGlvbnMgYXJlIHJlbW92ZWQgZnJvbSBhbGwgdmlzdWFsaXphdGlvbnMuIiwzLCJkaXNhYmxlZCIsImNsaWNrIl0sWyJzdmdJY29uIiwidmlzaWJpbGl0eV9vZmZfMjRweCJdLFsidGl0bGUiLCJIaWRlcyBhbmQgc2hvd3MgdGhlIHNhbXBsZSBjb3VudCB3aGVyZSBhcHBsaWNhYmxlIChob3cgbWFueSBzYW1wbGVzIGJlbG9uZyB0byBhIGNhdGVnb3J5KS4iLDEsInNob3ctdG9nZ2xlIiwzLCJjaGVja2VkIiwiY2hhbmdlIl0sWyJ0aXRsZSIsIkhpZGVzIGFuZCBzaG93cyBoaWRkZW4gYW5ub3RhdGlvbnMgaW4gYWxsIHZpc3VhbGl6YXRpb25zLiIsMSwic2hvdy10b2dnbGUiLDMsImNoZWNrZWQiLCJjaGFuZ2UiXV19LHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDApLHUoMSwiaDMiLDEpLFQoMiksaCgpLGsoMyx4UXQsNSwyLCJuZy1jb250YWluZXIiLDIpLGgoKSxrKDQsdlF0LDYsMiwibmctY29udGFpbmVyIiwyKSx1KDUsImJ1dHRvbiIsMyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub2dnbGVFeHBhbmRlZC5lbWl0KCl9KSxEKDYsIm1hdC1pY29uIiw0KSxoKCkpLHQmMiYmKHgoMiksbGUoIkFubm90YXRpb25zICgiLGUubnVtQW5ub3RhdGlvbnMsIikiKSx4KDEpLFAoIm5nSWYiLGUuZXhwYW5kZWQpLHgoMSksUCgibmdJZiIsZS5leHBhbmRlZCkseCgyKSxQKCJzdmdJY29uIixlLmV4cGFuZGVkPyJleHBhbmRfbGVzc18yNHB4IjoiZXhwYW5kX21vcmVfMjRweCIpKX0sZGlyZWN0aXZlczpbWHQsZm4sWGUsem0sbmddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7cGFkZGluZzowIDE2cHg7d2lkdGg6MTAwJX0uYW5ub3RhdGlvbnMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZTouOWVtO2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nLXJpZ2h0OjEwcHh9LmFubm90YXRpb25zLXRpdGxlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2ZsZXg6MSAxO2hlaWdodDo0MnB4fS5zaG93LXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45ZW07bWFyZ2luLXJpZ2h0Oi44ZW19J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkModkMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2Fubm90YXRpb25zX2xpc3RfdG9vbGJhcl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9hbm5vdGF0aW9uc19saXN0X3Rvb2xiYXJfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLG51bGwse251bUFubm90YXRpb25zOlt7dHlwZTpkfV0sZXhwYW5kZWQ6W3t0eXBlOmR9XSxzZWxlY3RlZEFubm90YXRpb25zOlt7dHlwZTpkfV0sYW5ub3RhdGlvbnNFeHBhbmRlZDpbe3R5cGU6ZH1dLHNob3dDb3VudHM6W3t0eXBlOmR9XSxzaG93SGlkZGVuOlt7dHlwZTpkfV0sb25GbGFnQW5ub3RhdGlvbnM6W3t0eXBlOkJ9XSxvbkhpZGVBbm5vdGF0aW9uczpbe3R5cGU6Qn1dLG9uVG9nZ2xlRXhwYW5kZWQ6W3t0eXBlOkJ9XSxvblRvZ2dsZVNob3dDb3VudHM6W3t0eXBlOkJ9XSxvblRvZ2dsZVNob3dIaWRkZW46W3t0eXBlOkJ9XX0pfSkoKTt2YXIgb2c9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoZ0MpLHRoaXMuYW5ub3RhdGlvbnNFeHBhbmRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QocDcpLHRoaXMuc2hvd0NvdW50cyQ9dGhpcy5zdG9yZS5zZWxlY3QoZzcpLHRoaXMuc2hvd0hpZGRlbiQ9dGhpcy5zdG9yZS5zZWxlY3QoVlMpLHRoaXMuYW5ub3RhdGlvbnNGaWx0ZXIkPXRoaXMuc3RvcmUuc2VsZWN0KExTKSx0aGlzLmlzQW5ub3RhdGlvbnNGaWx0ZXJWYWxpZCQ9dGhpcy5hbm5vdGF0aW9uc0ZpbHRlciQucGlwZShHKGU9Pnt0cnl7cmV0dXJuIEJvb2xlYW4obmV3IFJlZ0V4cChlKSl9Y2F0Y2gobyl7cmV0dXJuITF9fSkpfWZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKE5TKHtyZWdleDp0fSkpfWZsYWdBbm5vdGF0aW9ucyh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEtGKHthbm5vdGF0aW9uczp0fSkpfWhpZGVBbm5vdGF0aW9ucyh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKEpGKHthbm5vdGF0aW9uczp0fSkpfXRvZ2dsZUV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChvNygpKX10b2dnbGVTaG93Q291bnRzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChpNygpKX10b2dnbGVTaG93SGlkZGVuKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChhNygpKX19O29nLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG9nKSh2KHN0KSl9O29nLlx1MDI3NWNtcD16KHt0eXBlOm9nLHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhciJdXSxpbnB1dHM6e251bUFubm90YXRpb25zOiJudW1Bbm5vdGF0aW9ucyIsZXhwYW5kZWQ6ImV4cGFuZGVkIn0sZGVjbHM6NSx2YXJzOjE0LGNvbnN0czpbWzMsIm51bUFubm90YXRpb25zIiwiZXhwYW5kZWQiLCJzZWxlY3RlZEFubm90YXRpb25zIiwiYW5ub3RhdGlvbnNFeHBhbmRlZCIsInNob3dDb3VudHMiLCJzaG93SGlkZGVuIiwib25GbGFnQW5ub3RhdGlvbnMiLCJvbkhpZGVBbm5vdGF0aW9ucyIsIm9uVG9nZ2xlRXhwYW5kZWQiLCJvblRvZ2dsZVNob3dDb3VudHMiLCJvblRvZ2dsZVNob3dIaWRkZW4iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyLWNvbXBvbmVudCIsMCksQSgib25GbGFnQW5ub3RhdGlvbnMiLGZ1bmN0aW9uKGkpe3JldHVybiBlLmZsYWdBbm5vdGF0aW9ucyhpKX0pKCJvbkhpZGVBbm5vdGF0aW9ucyIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuaGlkZUFubm90YXRpb25zKGkpfSkoIm9uVG9nZ2xlRXhwYW5kZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUudG9nZ2xlRXhwYW5kZWQoKX0pKCJvblRvZ2dsZVNob3dDb3VudHMiLGZ1bmN0aW9uKCl7cmV0dXJuIGUudG9nZ2xlU2hvd0NvdW50cygpfSkoIm9uVG9nZ2xlU2hvd0hpZGRlbiIsZnVuY3Rpb24oKXtyZXR1cm4gZS50b2dnbGVTaG93SGlkZGVuKCl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksaCgpKSx0JjImJlAoIm51bUFubm90YXRpb25zIixlLm51bUFubm90YXRpb25zKSgiZXhwYW5kZWQiLGUuZXhwYW5kZWQpKCJzZWxlY3RlZEFubm90YXRpb25zIixRKDEsNixlLnNlbGVjdGVkQW5ub3RhdGlvbnMkKSkoImFubm90YXRpb25zRXhwYW5kZWQiLFEoMiw4LGUuYW5ub3RhdGlvbnNFeHBhbmRlZCQpKSgic2hvd0NvdW50cyIsUSgzLDEwLGUuc2hvd0NvdW50cyQpKSgic2hvd0hpZGRlbiIsUSg0LDEyLGUuc2hvd0hpZGRlbiQpKX0sZGlyZWN0aXZlczpbdkNdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG9nLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXIiLHRlbXBsYXRlOmAKICAgIDxucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQKICAgICAgW251bUFubm90YXRpb25zXT0ibnVtQW5ub3RhdGlvbnMiCiAgICAgIFtleHBhbmRlZF09ImV4cGFuZGVkIgogICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiCiAgICAgIFthbm5vdGF0aW9uc0V4cGFuZGVkXT0iYW5ub3RhdGlvbnNFeHBhbmRlZCQgfCBhc3luYyIKICAgICAgW3Nob3dDb3VudHNdPSJzaG93Q291bnRzJCB8IGFzeW5jIgogICAgICBbc2hvd0hpZGRlbl09InNob3dIaWRkZW4kIHwgYXN5bmMiCiAgICAgIChvbkZsYWdBbm5vdGF0aW9ucyk9ImZsYWdBbm5vdGF0aW9ucygkZXZlbnQpIgogICAgICAob25IaWRlQW5ub3RhdGlvbnMpPSJoaWRlQW5ub3RhdGlvbnMoJGV2ZW50KSIKICAgICAgKG9uVG9nZ2xlRXhwYW5kZWQpPSJ0b2dnbGVFeHBhbmRlZCgpIgogICAgICAob25Ub2dnbGVTaG93Q291bnRzKT0idG9nZ2xlU2hvd0NvdW50cygpIgogICAgICAob25Ub2dnbGVTaG93SGlkZGVuKT0idG9nZ2xlU2hvd0hpZGRlbigpIgogICAgPjwvbnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXItY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se251bUFubm90YXRpb25zOlt7dHlwZTpkfV0sZXhwYW5kZWQ6W3t0eXBlOmR9XX0pfSkoKTt2YXIgUlF0PVsiZ2x5cGgiXSxpZz1jbGFzc3tuZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN2Zz1Dcyh0aGlzLmdseXBoU1ZHLm5hdGl2ZUVsZW1lbnQpLHRoaXMubWFpbkNvbnRhaW5lcj10aGlzLnN2Zy5hcHBlbmQoImciKSx0aGlzLmRyYXcoKX1kcmF3KCl7dGhpcy5zaGFwZT09ImNpcmNsZSI/dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiZmlsbCIsdGhpcy5jb2xvcikuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJjeCIsNSkuYXR0cigiY3kiLDUpLmF0dHIoInIiLDUpOnRoaXMuc2hhcGU9PSJiYXIiP3RoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoInJlY3QiKS5hdHRyKCJmaWxsIix0aGlzLmNvbG9yKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsMTApLmF0dHIoImhlaWdodCIsMTApOnRoaXMuc2hhcGU9PSJydW5JbmRpY2F0b3IiJiZ0aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZmlsbCIsdGhpcy5jb2xvcikuYXR0cigic3Ryb2tlIiwiYmxhY2siKS5hdHRyKCJkIiwiTSAyIDAgTCAxMCAwIEwgNyA1IEwgMTAgMTAgTCAyIDEwIFoiKX19O2lnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGlnKX07aWcuXHUwMjc1Y21wPXooe3R5cGU6aWcsc2VsZWN0b3JzOltbIm5wbWktbGVnZW5kLWVsZW1lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uKHQsZSl7aWYodCYxJiZwZShSUXQsNyxMKSx0JjIpe2xldCBvO0h0KG89RnQoKSkmJihlLmdseXBoU1ZHPW8uZmlyc3QpfX0saW5wdXRzOnt0ZXh0OiJ0ZXh0Iixjb2xvcjoiY29sb3IiLHNoYXBlOiJzaGFwZSJ9LGRlY2xzOjQsdmFyczoxLGNvbnN0czpbWzEsImdseXBoIl0sWyJnbHlwaCIsIiJdLFsxLCJsZWdlbmQtZWxlbWVudC10aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEtuKCksRCgwLCJzdmciLDAsMSksR20oKSx1KDIsImRpdiIsMiksVCgzKSxoKCkpLHQmMiYmKHgoMyksSWUoZS50ZXh0KSl9LHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtwYWRkaW5nLXJpZ2h0OjEwcHh9LmxlZ2VuZC1lbGVtZW50LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6LjhlbTtwYWRkaW5nLWxlZnQ6NXB4fS5nbHlwaFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTBweDtoZWlnaHQ6MTBweH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhpZyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktbGVnZW5kLWVsZW1lbnQiLHRlbXBsYXRlVXJsOiIuL2xlZ2VuZF9lbGVtZW50X2NvbXBvbmVudC5uZy5odG1sIixzdHlsZVVybHM6WyIuL2xlZ2VuZF9lbGVtZW50X2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHt0ZXh0Olt7dHlwZTpkfV0sY29sb3I6W3t0eXBlOmR9XSxzaGFwZTpbe3R5cGU6ZH1dLGdseXBoU1ZHOlt7dHlwZTpJdCxhcmdzOlsiZ2x5cGgiLHtzdGF0aWM6ITAscmVhZDpMfV19XX0pfSkoKTt2YXIgYWc9Y2xhc3N7fTthZy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxhZyl9O2FnLlx1MDI3NWNtcD16KHt0eXBlOmFnLHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIl1dLGRlY2xzOjQsdmFyczowLGNvbnN0czpbWyJ0ZXh0IiwicnVuIGluZGljYXRvciIsImNvbG9yIiwicmdiKDAsMCwwKSIsInNoYXBlIiwicnVuSW5kaWNhdG9yIl0sWyJ0ZXh0IiwicG9zaXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigxMDksIDE3NCwgMjEzKSIsInNoYXBlIiwiYmFyIl0sWyJ0ZXh0IiwibmVnYXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigyNDksIDEwNSwgNzYpIiwic2hhcGUiLCJiYXIiXSxbInRleHQiLCJzYW1wbGUgY291bnQiLCJjb2xvciIsInJnYigxNTEsIDE1MSwgMTUxKSIsInNoYXBlIiwiY2lyY2xlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYoRCgwLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwwKSxEKDEsIm5wbWktbGVnZW5kLWVsZW1lbnQiLDEpLEQoMiwibnBtaS1sZWdlbmQtZWxlbWVudCIsMiksRCgzLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwzKSl9LGRpcmVjdGl2ZXM6W2lnXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjAgMTZweH0iXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhhZyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdC1sZWdlbmQiLHRlbXBsYXRlVXJsOiIuL2xlZ2VuZF9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9sZWdlbmRfY29tcG9uZW50LmNzcyJdfV19XSxudWxsLG51bGwpfSkoKTtmdW5jdGlvbiBOUXQobix0KXtpZihuJjEmJkQoMCwibWF0LWljb24iLDgpLG4mMil7bGV0IGU9UygyKTtQKCJzdmdJY29uIixlLnNvcnQub3JkZXI9PT1lLlNvcnRPcmRlci5ERVNDRU5ESU5HPyJhcnJvd19kb3dud2FyZF8yNHB4IjoiYXJyb3dfdXB3YXJkXzI0cHgiKSgibmdDbGFzcyIsZS5zb3J0Lm9yZGVyPT09ZS5Tb3J0T3JkZXIuREVTQ0VORElORz8iZG93bi1pY29uIjoidXAtaWNvbiIpfX1mdW5jdGlvbiBUUXQobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDQpLHUoMSwiZGl2Iiw1KSx1KDIsImRpdiIsNiksQSgiY2xpY2siLGZ1bmN0aW9uKCl7bGV0IGE9T3QoZSkuJGltcGxpY2l0O3JldHVybiBTKCkub25DaGFuZ2VTb3J0LmVtaXQoYSl9KSxUKDMpLGsoNCxOUXQsMSwyLCJtYXQtaWNvbiIsNyksaCgpLGgoKSxoKCl9aWYobiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoKTt4KDMpLGxlKCIgIixvLnN0cmlwTWV0cmljKGUpLCIgIikseCgxKSxQKCJuZ0lmIixlPT09by5zb3J0Lm1ldHJpYyl9fXZhciB3Qz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMub25DaGFuZ2VTb3J0PW5ldyAkLHRoaXMub25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQ9bmV3ICQsdGhpcy5Tb3J0T3JkZXI9S3J9c3RyaXBNZXRyaWModCl7cmV0dXJuIEFjKHQpfX07d0MuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8d0MpfTt3Qy5cdTAyNzVjbXA9eih7dHlwZTp3QyxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnQiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLHNvcnQ6InNvcnQifSxvdXRwdXRzOntvbkNoYW5nZVNvcnQ6Im9uQ2hhbmdlU29ydCIsb25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQ6Im9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIn0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwidG9nZ2xlLWFsbC1jb250YWluZXIiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsxLCJhbm5vdGF0aW9ucy1oZWFkZXItY29udGFpbmVycyJdLFsiY2xhc3MiLCJoZWFkZXItY29sdW1uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaGVhZGVyLWNvbHVtbiJdLFsxLCJoZWFkZXItY29udGFpbmVyIl0sWyJ0YWJpbmRleCIsIjAiLCJyb2xlIiwiYnV0dG9uIiwidGl0bGUiLCJDaGFuZ2UgdGhlIHNvcnQgYnkgY2xpY2tpbmcgYW55IG9mIHRoZSBtZXRyaWNzLiIsMSwiaGVhZGVyLWNsaWNrYWJsZSIsMywiY2xpY2siXSxbImNsYXNzIiwic29ydC1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyIsNCwibmdJZiJdLFsxLCJzb3J0LWljb24iLDMsInN2Z0ljb24iLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJkaXYiLDApLHUoMSwibWF0LWNoZWNrYm94IiwxKSxBKCJjaGFuZ2UiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkLmVtaXQoaS5jaGVja2VkKX0pLGgoKSxoKCksdSgyLCJkaXYiLDIpLGsoMyxUUXQsNSwyLCJkaXYiLDMpLGgoKSksdCYyJiYoeCgxKSxQKCJjaGVja2VkIixlLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoPT09ZS5udW1Bbm5vdGF0aW9ucykseCgyKSxQKCJuZ0Zvck9mIixlLmFjdGl2ZU1ldHJpY3MpKX0sZGlyZWN0aXZlczpbX3IsbW4sWHQsWGUsam5dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MjhweDthbGlnbi1pdGVtczpmbGV4LWVuZDttYXJnaW4tdG9wOjhweH0uYW5ub3RhdGlvbnMtaGVhZGVyLWNvbnRhaW5lcnNbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmb250LXNpemU6LjllbTtmb250LXdlaWdodDo1MDA7ZmxleC1ncm93OjF9LmhlYWRlci1jb2x1bW5bX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxfS5oZWFkZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1ibG9ja30uaGVhZGVyLWNsaWNrYWJsZVtfbmdjb250ZW50LSVDT01QJV17Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpmbGV4O291dGxpbmU6bm9uZX0udG9nZ2xlLWFsbC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0OjEwcHg7d2lkdGg6OTBweH0uc29ydC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTZweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh3Qyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXItY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9oZWFkZXJfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vaGVhZGVyX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtudW1Bbm5vdGF0aW9uczpbe3R5cGU6ZH1dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOmR9XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTpkfV0sc29ydDpbe3R5cGU6ZH1dLG9uQ2hhbmdlU29ydDpbe3R5cGU6Qn1dLG9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkOlt7dHlwZTpCfV19KX0pKCk7dmFyIHJnPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGdDKSx0aGlzLmFubm90YXRpb25Tb3J0JD10aGlzLnN0b3JlLnNlbGVjdChCUyl9Y2hhbmdlU29ydCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHQ3KHttZXRyaWM6dH0pKX1hbGxBbm5vdGF0aW9uc1RvZ2dsZWQodCl7dD90aGlzLnN0b3JlLmRpc3BhdGNoKFU0KHthbm5vdGF0aW9uczpPYmplY3Qua2V5cyh0aGlzLmFubm90YXRpb25zKX0pKTp0aGlzLnN0b3JlLmRpc3BhdGNoKFU0KHthbm5vdGF0aW9uczpbXX0pKX19O3JnLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHJnKSh2KHN0KSl9O3JnLlx1MDI3NWNtcD16KHt0eXBlOnJnLHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyIl1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixhbm5vdGF0aW9uczoiYW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MifSxkZWNsczozLHZhcnM6OCxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJzb3J0IiwiYWN0aXZlTWV0cmljcyIsIm9uQ2hhbmdlU29ydCIsIm9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudCIsMCksQSgib25DaGFuZ2VTb3J0IixmdW5jdGlvbihpKXtyZXR1cm4gZS5jaGFuZ2VTb3J0KGkpfSkoIm9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIixmdW5jdGlvbihpKXtyZXR1cm4gZS5hbGxBbm5vdGF0aW9uc1RvZ2dsZWQoaSl9KSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLGgoKSksdCYyJiZQKCJudW1Bbm5vdGF0aW9ucyIsZS5udW1Bbm5vdGF0aW9ucykoInNlbGVjdGVkQW5ub3RhdGlvbnMiLFEoMSw0LGUuc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgic29ydCIsUSgyLDYsZS5hbm5vdGF0aW9uU29ydCQpKSgiYWN0aXZlTWV0cmljcyIsZS5hY3RpdmVNZXRyaWNzKX0sZGlyZWN0aXZlczpbd0NdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHJnLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlciIsdGVtcGxhdGU6YAogICAgPG5wbWktYW5ub3RhdGlvbnMtbGlzdC1oZWFkZXItY29tcG9uZW50CiAgICAgIFtudW1Bbm5vdGF0aW9uc109Im51bUFubm90YXRpb25zIgogICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiCiAgICAgIFtzb3J0XT0iYW5ub3RhdGlvblNvcnQkIHwgYXN5bmMiCiAgICAgIFthY3RpdmVNZXRyaWNzXT0iYWN0aXZlTWV0cmljcyIKICAgICAgKG9uQ2hhbmdlU29ydCk9ImNoYW5nZVNvcnQoJGV2ZW50KSIKICAgICAgKG9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkKT0iYWxsQW5ub3RhdGlvbnNUb2dnbGVkKCRldmVudCkiCiAgICA+PC9ucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LHtudW1Bbm5vdGF0aW9uczpbe3R5cGU6ZH1dLGFubm90YXRpb25zOlt7dHlwZTpkfV0sYWN0aXZlTWV0cmljczpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBJUXQ9WyJjaGFydCJdLHpRdD1bImhpbnRDbGlwIl07ZnVuY3Rpb24gSFF0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxMil9ZnVuY3Rpb24gRlF0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxMyl9ZnVuY3Rpb24gTFF0KG4sdCl7aWYobiYxJiZEKDAsIm1hdC1pY29uIiwxNCksbiYyKXtsZXQgZT1TKCk7UCgic3ZnSWNvbiIsZS5zb3J0Lm9yZGVyPT09ZS5Tb3J0T3JkZXIuU0lNSUxBUj8iYXJyb3dfZG93bndhcmRfMjRweCI6ImFycm93X3Vwd2FyZF8yNHB4IikoIm5nQ2xhc3MiLGUuc29ydC5vcmRlcj09PWUuU29ydE9yZGVyLlNJTUlMQVI/ImRvd24taWNvbiI6InVwLWljb24iKX19dmFyIFNDPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5zZWxlY3RlZD0hMSx0aGlzLm9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucz1uZXcgJCx0aGlzLlNvcnRPcmRlcj1Lcix0aGlzLndpZHRoPTEwLHRoaXMuY2hhcnRXaWR0aD0xMCx0aGlzLmNoYXJ0SGVpZ2h0PTEwLHRoaXMubWF4RG90UmFkaXVzPTEwLHRoaXMuY291bnREb3RPZmZzZXQ9NzAsdGhpcy5jb3VudFRleHRQYWRkaW5nPTIsdGhpcy5tYXJnaW49e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDoxMDB9LHRoaXMuc3Ryb2tlQ29sb3I9IiNmZmYiLHRoaXMudGV4dENsYXNzPSJkZWZhdWx0LXRleHQiLHRoaXMucnVucz1bXX1vblJlc2l6ZSh0KXt0aGlzLnJlZHJhdygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3ZnPUNzKHRoaXMuYW5ub3RhdGlvbkNvbnRhaW5lci5uYXRpdmVFbGVtZW50KS5zZWxlY3QoInN2ZyIpLHRoaXMueFNjYWxlPXYyKCkucGFkZGluZygwKSx0aGlzLnlTY2FsZT12MigpLnBhZGRpbmcoMCksdGhpcy5zaXplU2NhbGU9c2woKS5kb21haW4oWzAsMV0pLHRoaXMuY291bnRTaXplU2NhbGU9c2woKS5yYW5nZShbMix0aGlzLm1heERvdFJhZGl1c10pLHRoaXMubWFpbkNvbnRhaW5lcj10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLm1hcmdpbi5sZWZ0fSwgJHt0aGlzLm1hcmdpbi50b3B9KWApLHRoaXMuYmFyc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLmNvdW50RG90c0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnRleHRzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMuY291bnRUZXh0c0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnJ1bkhpbnRHcm91cD10aGlzLnN2Zy5hcHBlbmQoImciKSx0aGlzLnJlZHJhdygpfW5nT25DaGFuZ2VzKHQpe3RoaXMuc3ZnJiZ0aGlzLnJlZHJhdygpfXJlZHJhdygpe3RoaXMuc2VsZWN0ZWQ9dGhpcy5zZWxlY3RlZEFubm90YXRpb25zLmluY2x1ZGVzKHRoaXMuYW5ub3RhdGlvbiksdGhpcy51cGRhdGVEaW1lbnNpb25zKCksdGhpcy5zZXRUZXh0Q2xhc3MoKSx0aGlzLnVwZGF0ZUF4ZXMoKSx0aGlzLmRyYXcoKX11cGRhdGVEaW1lbnNpb25zKCl7bGV0IHQ9bmV3IFNldDt0aGlzLmRhdGEuZm9yRWFjaChlPT57dC5hZGQoZS5ydW4pfSksdGhpcy5ydW5zPVsuLi50XSx0aGlzLnN2Zy5zdHlsZSgiaGVpZ2h0IixgJHt0aGlzLm51bUFjdGl2ZVJ1bnMqdGhpcy5ydW5IZWlnaHR9cHhgKSx0aGlzLmNoYXJ0SGVpZ2h0PXRoaXMucnVucy5sZW5ndGgqdGhpcy5ydW5IZWlnaHQtdGhpcy5tYXJnaW4udG9wLXRoaXMubWFyZ2luLmJvdHRvbSx0aGlzLndpZHRoPXRoaXMuYW5ub3RhdGlvbkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRofHwxMCx0aGlzLmNoYXJ0V2lkdGg9dGhpcy53aWR0aC10aGlzLm1hcmdpbi5sZWZ0LXRoaXMubWFyZ2luLnJpZ2h0fXNldFRleHRDbGFzcygpe3RoaXMudGV4dENsYXNzPSJkZWZhdWx0LXRleHQiLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zLmluY2x1ZGVzKHRoaXMuYW5ub3RhdGlvbik/dGhpcy50ZXh0Q2xhc3M9ImZsYWctdGV4dCI6dGhpcy5oaWRkZW5Bbm5vdGF0aW9ucy5pbmNsdWRlcyh0aGlzLmFubm90YXRpb24pJiYodGhpcy50ZXh0Q2xhc3M9ImhpZGRlbi10ZXh0Iil9dXBkYXRlQXhlcygpe3RoaXMueFNjYWxlLnJhbmdlUm91bmQoWzAsdGhpcy5jaGFydFdpZHRoLXRoaXMuY2hhcnRXaWR0aC90aGlzLmFjdGl2ZU1ldHJpY3MubGVuZ3RoXSkuZG9tYWluKHRoaXMuYWN0aXZlTWV0cmljcy5tYXAodD0+QWModCkpKSx0aGlzLnlTY2FsZS5yYW5nZVJvdW5kKFswLHRoaXMuY2hhcnRIZWlnaHQtdGhpcy5ydW5IZWlnaHRdKS5kb21haW4odGhpcy5ydW5zKSx0aGlzLnNpemVTY2FsZS5yYW5nZShbMCx0aGlzLmNoYXJ0V2lkdGgvdGhpcy5hY3RpdmVNZXRyaWNzLmxlbmd0aF0pLHRoaXMuY291bnRTaXplU2NhbGUuZG9tYWluKFswLHRoaXMubWF4Q291bnRdKX1kcmF3KCl7dGhpcy5kcmF3UnVuSW5kaWNhdG9ycygpLHRoaXMuZHJhd1J1bkhpbnRUZXh0cygpLHRoaXMuZHJhd0JhcnMoKSx0aGlzLmRyYXdUZXh0cygpLHRoaXMuc2hvd0NvdW50cz8odGhpcy5kcmF3Q291bnREb3RzKCksdGhpcy5kcmF3Q291bnRUZXh0cygpKToodGhpcy5jb3VudERvdHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1kb3QiKS5yZW1vdmUoKSx0aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1iYWNrZ3JvdW5kLXRleHQiKS5yZW1vdmUoKSx0aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC10ZXh0IikucmVtb3ZlKCkpfWRyYXdSdW5JbmRpY2F0b3JzKCl7Q3ModGhpcy5jbGlwUGF0aEVsZW1lbnQubmF0aXZlRWxlbWVudCkuc2VsZWN0KCJyZWN0IikuYXR0cigid2lkdGgiLHRoaXMubWFyZ2luLmxlZnQtMzApLmF0dHIoImhlaWdodCIsdGhpcy5jaGFydEhlaWdodCk7bGV0IHQ9dGhpcy5ydW5IaW50R3JvdXAuc2VsZWN0QWxsKCIuaGludCIpLmRhdGEodGhpcy5ydW5zKSxlPXQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImhpbnQiKTtlLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgMCBMIDE1IDAgTCAxMCAxMCBMIDE1IDIwIEwgMCAyMCBaIiksZS5tZXJnZSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG8pe3JldHVybmB0cmFuc2xhdGUoMTAsICR7dGhpcy55U2NhbGUobykrNX0pYH0uYmluZCh0aGlzKSkuYXR0cigiZmlsbCIsZnVuY3Rpb24obyl7cmV0dXJuIHRoaXMuY29sb3JTY2FsZShvKX0uYmluZCh0aGlzKSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd1J1bkhpbnRUZXh0cygpe2xldCB0PXRoaXMucnVuSGludEdyb3VwLnNlbGVjdEFsbCgiLmhpbnQtdGV4dCIpLmRhdGEodGhpcy5ydW5zKTt0LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMjUpLmF0dHIoImZvbnQtc2l6ZSIsIjEwcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI2hpbnQtY2xpcCkiKS5tZXJnZSh0KS5hdHRyKCJ5IixmdW5jdGlvbihvKXtyZXR1cm4gdGhpcy55U2NhbGUobykrMTV9LmJpbmQodGhpcykpLmF0dHIoImNsYXNzIixgaGludC10ZXh0ICR7dGhpcy50ZXh0Q2xhc3N9YCkudGV4dChvPT57dmFyIGk7cmV0dXJuKChpPXRoaXMucnVuSWRUb1J1bnMuZ2V0KG8pKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkubmFtZSl8fCIifSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd0JhcnMoKXtsZXQgdD10aGlzLmJhcnNHcm91cC5zZWxlY3RBbGwoIi5iYXIiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiYmFyIikuYXR0cigiaGVpZ2h0IiwyMCkubWVyZ2UodCkuYXR0cigiZmlsbCIsbz0+by5uUE1JVmFsdWU9PT1udWxsPyIiOm8ublBNSVZhbHVlPj0wP1Q5KG8ublBNSVZhbHVlKTpEOShvLm5QTUlWYWx1ZSotMSkpLmF0dHIoIngiLGZ1bmN0aW9uKG8pe3JldHVybiB0aGlzLnhTY2FsZShvLm1ldHJpYyl9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKG8pe3JldHVybiB0aGlzLnlTY2FsZShvLnJ1bikrNX0uYmluZCh0aGlzKSkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKG8pe3JldHVybiBvLm5QTUlWYWx1ZT09PW51bGw/MDp0aGlzLnNpemVTY2FsZShNYXRoLmFicyhvLm5QTUlWYWx1ZSkpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3Q291bnREb3RzKCl7bGV0IHQ9dGhpcy5jb3VudERvdHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC1kb3QiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY2xhc3MiLCJjb3VudC1kb3QiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLm1lcmdlKHQpLmF0dHIoImZpbGwiLGZ1bmN0aW9uKG8pe3JldHVybiBvLmNvdW50VmFsdWU9PT1udWxsPyIiOkE5KG8uY291bnRWYWx1ZS90aGlzLm1heENvdW50KX0uYmluZCh0aGlzKSkuYXR0cigiY3giLGZ1bmN0aW9uKG8pe3JldHVybiB0aGlzLnhTY2FsZShvLm1ldHJpYykrdGhpcy5jb3VudERvdE9mZnNldH0uYmluZCh0aGlzKSkuYXR0cigiY3kiLGZ1bmN0aW9uKG8pe3JldHVybiB0aGlzLnlTY2FsZShvLnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkuYXR0cigiciIsZnVuY3Rpb24obyl7cmV0dXJuIG8uY291bnRWYWx1ZT09PW51bGw/MDp0aGlzLmNvdW50U2l6ZVNjYWxlKG8uY291bnRWYWx1ZSl9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdUZXh0cygpe2xldCB0PXRoaXMudGV4dHNHcm91cC5zZWxlY3RBbGwoIi5ucG1pLWJhY2tncm91bmQtdGV4dCIpLmRhdGEodGhpcy5kYXRhKTt0LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJucG1pLWJhY2tncm91bmQtdGV4dCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMykuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKS5hdHRyKCJzdHJva2UiLHRoaXMuc3Ryb2tlQ29sb3IpLmF0dHIoImZvbnQtc2l6ZSIsIjEzcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5tZXJnZSh0KS5hdHRyKCJ4IixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy54U2NhbGUoYS5tZXRyaWMpKzV9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnlTY2FsZShhLnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkudGV4dChhPT5hLm5QTUlWYWx1ZT09PW51bGw/Im51bGwiOk1hdGgucm91bmQoKGEublBNSVZhbHVlK051bWJlci5FUFNJTE9OKSoxZTMpLzFlMyksdC5leGl0KCkucmVtb3ZlKCk7bGV0IG89dGhpcy50ZXh0c0dyb3VwLnNlbGVjdEFsbCgiLm5wbWktdGV4dCIpLmRhdGEodGhpcy5kYXRhKTtvLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJucG1pLXRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxM3B4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikubWVyZ2UobykuYXR0cigieCIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueFNjYWxlKGEubWV0cmljKSs1fS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy55U2NhbGUoYS5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLnRleHQoYT0+YS5uUE1JVmFsdWU9PT1udWxsPyJudWxsIjpNYXRoLnJvdW5kKChhLm5QTUlWYWx1ZStOdW1iZXIuRVBTSUxPTikqMWUzKS8xZTMpLG8uZXhpdCgpLnJlbW92ZSgpfWRyYXdDb3VudFRleHRzKCl7bGV0IHQ9dGhpcy5jb3VudFRleHRzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtYmFja2dyb3VuZC10ZXh0IikuZGF0YSh0aGlzLmRhdGEpO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImNvdW50LWJhY2tncm91bmQtdGV4dCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMykuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKS5hdHRyKCJzdHJva2UiLHRoaXMuc3Ryb2tlQ29sb3IpLmF0dHIoImZvbnQtc2l6ZSIsIjEwcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5tZXJnZSh0KS5hdHRyKCJ4IixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy54U2NhbGUoYS5tZXRyaWMpK3RoaXMuY291bnREb3RPZmZzZXQrdGhpcy5jb3VudFRleHRQYWRkaW5nK3RoaXMubWF4RG90UmFkaXVzfS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy55U2NhbGUoYS5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLnRleHQoYT0+YS5jb3VudFZhbHVlPT09bnVsbD8iIjpJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChhLmNvdW50VmFsdWUpKSx0LmV4aXQoKS5yZW1vdmUoKTtsZXQgbz10aGlzLmNvdW50VGV4dHNHcm91cC5zZWxlY3RBbGwoIi5jb3VudC10ZXh0IikuZGF0YSh0aGlzLmRhdGEpO28uZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImNvdW50LXRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxMHB4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikubWVyZ2UobykuYXR0cigieCIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueFNjYWxlKGEubWV0cmljKSt0aGlzLmNvdW50RG90T2Zmc2V0K3RoaXMuY291bnRUZXh0UGFkZGluZyt0aGlzLm1heERvdFJhZGl1c30uYmluZCh0aGlzKSkuYXR0cigieSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueVNjYWxlKGEucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS50ZXh0KGE9PmEuY291bnRWYWx1ZT09PW51bGw/IiI6SW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQoYS5jb3VudFZhbHVlKSksby5leGl0KCkucmVtb3ZlKCl9c2ltaWxhcml0eVNvcnQodCl7dGhpcy5oYXNFbWJlZGRpbmcmJih0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub25TaG93U2ltaWxhckFubm90YXRpb25zLmVtaXQoKSl9fTtTQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxTQyl9O1NDLlx1MDI3NWNtcD16KHt0eXBlOlNDLHNlbGVjdG9yczpbWyJhbm5vdGF0aW9uLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJihwZShJUXQsNyxMKSxwZSh6UXQsNyxMKSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5hbm5vdGF0aW9uQ29udGFpbmVyPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLmNsaXBQYXRoRWxlbWVudD1vLmZpcnN0KX19LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uKHQsZSl7dCYxJiZBKCJyZXNpemUiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZXNpemUoKX0sITEsQVIpLHQmMiYmbWUoInNlbGVjdGVkLXJvdyIsZS5zZWxlY3RlZCl9LGlucHV0czp7ZGF0YToiZGF0YSIsbWF4Q291bnQ6Im1heENvdW50IixzZWxlY3RlZEFubm90YXRpb25zOiJzZWxlY3RlZEFubm90YXRpb25zIixmbGFnZ2VkQW5ub3RhdGlvbnM6ImZsYWdnZWRBbm5vdGF0aW9ucyIsaGlkZGVuQW5ub3RhdGlvbnM6ImhpZGRlbkFubm90YXRpb25zIixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixudW1BY3RpdmVSdW5zOiJudW1BY3RpdmVSdW5zIixzaG93Q291bnRzOiJzaG93Q291bnRzIixhbm5vdGF0aW9uOiJhbm5vdGF0aW9uIixydW5IZWlnaHQ6InJ1bkhlaWdodCIsaGFzRW1iZWRkaW5nOiJoYXNFbWJlZGRpbmciLHNvcnQ6InNvcnQiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIixjb2xvclNjYWxlOiJjb2xvclNjYWxlIixydW5JZFRvUnVuczoicnVuSWRUb1J1bnMifSxvdXRwdXRzOntvblNob3dTaW1pbGFyQW5ub3RhdGlvbnM6Im9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucyJ9LGZlYXR1cmVzOltXZV0sZGVjbHM6MTQsdmFyczoxMCxjb25zdHM6W1sxLCJhbm5vdGF0aW9uLXRpdGxlIl0sWzEsImFubm90YXRpb24tY2hlY2tib3giLDMsImNoZWNrZWQiLCJjbGljayJdLFsxLCJhbm5vdGF0aW9uLWJ1dHRvbiIsMywibmdDbGFzcyIsImNsaWNrIl0sWyJjbGFzcyIsImZsYWdnZWQtaWNvbiIsInN2Z0ljb24iLCJmbGFnXzI0cHgiLDQsIm5nSWYiXSxbImNsYXNzIiwiaGlkZGVuLWljb24iLCJzdmdJY29uIiwidmlzaWJpbGl0eV9vZmZfMjRweCIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbm5vdGF0aW9uLWljb24iLDMsInN2Z0ljb24iLCJuZ0NsYXNzIiw0LCJuZ0lmIl0sWzEsImNoYXJ0LWRpdiJdLFsiY2hhcnQiLCIiXSxbMSwiY2hhcnQtc3ZnIl0sWyJpZCIsImhpbnQtY2xpcCJdLFsiaGludENsaXAiLCIiXSxbIngiLCIwIiwieSIsIjAiXSxbInN2Z0ljb24iLCJmbGFnXzI0cHgiLDEsImZsYWdnZWQtaWNvbiJdLFsic3ZnSWNvbiIsInZpc2liaWxpdHlfb2ZmXzI0cHgiLDEsImhpZGRlbi1pY29uIl0sWzEsImFubm90YXRpb24taWNvbiIsMywic3ZnSWNvbiIsIm5nQ2xhc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCksdSgxLCJtYXQtY2hlY2tib3giLDEpLEEoImNsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gaS5wcmV2ZW50RGVmYXVsdCgpfSksaCgpLHUoMiwiYnV0dG9uIiwyKSxBKCJjbGljayIsZnVuY3Rpb24oaSl7cmV0dXJuIGUuc2ltaWxhcml0eVNvcnQoaSl9KSxUKDMpLGgoKSxrKDQsSFF0LDEsMCwibWF0LWljb24iLDMpLGsoNSxGUXQsMSwwLCJtYXQtaWNvbiIsNCksayg2LExRdCwxLDIsIm1hdC1pY29uIiw1KSxoKCksdSg3LCJkaXYiLDYsNyksS24oKSx1KDksInN2ZyIsOCksdSgxMCwiZGVmcyIpLHUoMTEsImNsaXBQYXRoIiw5LDEwKSxEKDEzLCJyZWN0IiwxMSksaCgpLGgoKSxoKCksaCgpKSx0JjImJihtZSgiZmxhZ2dlZC1hbm5vdGF0aW9uIixlLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyhlLmFubm90YXRpb24pKSgiaGlkZGVuLWFubm90YXRpb24iLGUuaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXMoZS5hbm5vdGF0aW9uKSYmIWUuZmxhZ2dlZEFubm90YXRpb25zLmluY2x1ZGVzKGUuYW5ub3RhdGlvbikpLHgoMSksUCgiY2hlY2tlZCIsZS5zZWxlY3RlZEFubm90YXRpb25zLmluY2x1ZGVzKGUuYW5ub3RhdGlvbikpLHgoMSksUCgibmdDbGFzcyIsZS5oYXNFbWJlZGRpbmc/ImNsaWNrYWJsZS1hbm5vdGF0aW9uIjoiIikseCgxKSxsZSgiICIsZS5hbm5vdGF0aW9uLCIgIikseCgxKSxQKCJuZ0lmIixlLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyhlLmFubm90YXRpb24pKSx4KDEpLFAoIm5nSWYiLGUuaGlkZGVuQW5ub3RhdGlvbnMuaW5jbHVkZXMoZS5hbm5vdGF0aW9uKSkseCgxKSxQKCJuZ0lmIixlLmFubm90YXRpb249PT1lLnNvcnQubWV0cmljKSl9LGRpcmVjdGl2ZXM6W19yLGpuLFh0LFhlXSxzdHlsZXM6W2AubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC13cmFwcGVye3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcnttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2w6LXdlYmtpdC1hdXRvZmlsbCsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlciwubWF0LWdyaWQtdGlsZS1mb290ZXJ7Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnR7bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2Vye2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWwsLm1hdC1zdGVwcGVyLWhvcml6b250YWx7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcntmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9ye2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXIsLm1hdC10b29sYmFyIGgxLC5tYXQtdG9vbGJhciBoMiwubWF0LXRvb2xiYXIgaDMsLm1hdC10b29sYmFyIGg0LC5tYXQtdG9vbGJhciBoNSwubWF0LXRvb2xiYXIgaDZ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcnt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC13cmFwcGVye3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbDotd2Via2l0LWF1dG9maWxsKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4e3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlciwubWF0LWdyaWQtdGlsZS1mb290ZXJ7Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpLC5tYXQtZ3JpZC10aWxlLWZvb3RlciAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnR7bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvciwubWF0LXBhZ2luYXRvci1wYWdlLXNpemUgLm1hdC1zZWxlY3QtdHJpZ2dlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2Vye2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWwsLm1hdC1zdGVwcGVyLWhvcml6b250YWx7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcntmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9ye2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXB7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXIsLm1hdC10b29sYmFyIGgxLC5tYXQtdG9vbGJhciBoMiwubWF0LXRvb2xiYXIgaDMsLm1hdC10b29sYmFyIGg0LC5tYXQtdG9vbGJhciBoNSwubWF0LXRvb2xiYXIgaDZ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0e2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2UgLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1pdGVte2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb257Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LW9wdGlvbiAubWF0LWxpbmU6bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtc3ViaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb257Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWx7Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWR7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50e3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1yaXBwbGUtZWxlbWVudHtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW57Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyLC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5le3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3B7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveHtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2Nre3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXple3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmd7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveHtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHsvKiEqL31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHsvKiEqL30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3J7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlfTpob3N0e3BhZGRpbmctdG9wOjVweH0uYW5ub3RhdGlvbi10aXRsZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxM3B4O2hlaWdodDoyMHB4O3BhZGRpbmc6MCAxMHB4O3VzZXItc2VsZWN0Om5vbmV9LnNlbGVjdGVkLXJvd3tiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7ZGlzcGxheTpibG9ja30uZmxhZ2dlZC1hbm5vdGF0aW9ue2NvbG9yOiNmNTdjMDB9LmhpZGRlbi1hbm5vdGF0aW9ue2NvbG9yOiM3NTc1NzV9LmFubm90YXRpb24tY2hlY2tib3h7cGFkZGluZy1yaWdodDo1cHh9LmZsYWdnZWQtaWNvbnt0cmFuc2Zvcm06c2NhbGUoMC42KX0uaGlkZGVuLWljb257dHJhbnNmb3JtOnNjYWxlKDAuNil9LmFubm90YXRpb24taWNvbnt0cmFuc2Zvcm06c2NhbGUoMC42KX0uY2hhcnQtZGl2e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9LmNoYXJ0LXN2Z3t3aWR0aDoxMDAlO3VzZXItc2VsZWN0Om5vbmV9LmRlZmF1bHQtdGV4dHtmaWxsOiMwMDB9LmZsYWctdGV4dHtmaWxsOiNmNTdjMDB9LmhpZGRlbi10ZXh0e2ZpbGw6Izc1NzU3NX0uY2xpY2thYmxlLWFubm90YXRpb257Y3Vyc29yOnBvaW50ZXJ9YnV0dG9ue2FsbDp1bnNldH0KYF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFNDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiYW5ub3RhdGlvbi1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2Fubm90YXRpb25fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYW5ub3RhdGlvbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaCxlbmNhcHN1bGF0aW9uOkplLk5vbmV9XX1dLG51bGwse2RhdGE6W3t0eXBlOmR9XSxtYXhDb3VudDpbe3R5cGU6ZH1dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOmR9XSxmbGFnZ2VkQW5ub3RhdGlvbnM6W3t0eXBlOmR9XSxoaWRkZW5Bbm5vdGF0aW9uczpbe3R5cGU6ZH1dLGFjdGl2ZU1ldHJpY3M6W3t0eXBlOmR9XSxudW1BY3RpdmVSdW5zOlt7dHlwZTpkfV0sc2hvd0NvdW50czpbe3R5cGU6ZH1dLGFubm90YXRpb246W3t0eXBlOmR9XSxydW5IZWlnaHQ6W3t0eXBlOmR9XSxoYXNFbWJlZGRpbmc6W3t0eXBlOmR9XSxzb3J0Olt7dHlwZTpkfV0sc2lkZWJhcldpZHRoOlt7dHlwZTpkfV0sY29sb3JTY2FsZTpbe3R5cGU6ZH1dLHJ1bklkVG9SdW5zOlt7dHlwZTpkfV0sYW5ub3RhdGlvbkNvbnRhaW5lcjpbe3R5cGU6SXQsYXJnczpbImNoYXJ0Iix7c3RhdGljOiEwLHJlYWQ6TH1dfV0sY2xpcFBhdGhFbGVtZW50Olt7dHlwZTpJdCxhcmdzOlsiaGludENsaXAiLHtzdGF0aWM6ITAscmVhZDpMfV19XSxzZWxlY3RlZDpbe3R5cGU6SGEsYXJnczpbImNsYXNzLnNlbGVjdGVkLXJvdyJdfV0sb25SZXNpemU6W3t0eXBlOnhvLGFyZ3M6WyJ3aW5kb3c6cmVzaXplIl19XSxvblNob3dTaW1pbGFyQW5ub3RhdGlvbnM6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgc2c9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc29ydCQ9dGhpcy5zdG9yZS5zZWxlY3QoQlMpLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChtNyksdGhpcy5oaWRkZW5Bbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoRlMpLHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoZ0MpLHRoaXMuc2hvd0NvdW50cyQ9dGhpcy5zdG9yZS5zZWxlY3QoZzcpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChLeCksdGhpcy5ydW5Db2xvclNjYWxlJD10aGlzLnN0b3JlLnNlbGVjdChrXykucGlwZShHKGU9Pm89PntpZighZS5oYXNPd25Qcm9wZXJ0eShvKSl0aHJvdyBuZXcgRXJyb3IoYFtDb2xvciBzY2FsZV0gdW5rbm93biBydW5JZDogJHtvfS5gKTtyZXR1cm4gZVtvXX0pKSx0aGlzLnJ1bklkVG9SdW5zJD10aGlzLnN0b3JlLnNlbGVjdChaRCl9c2hvd1NpbWlsYXJBbm5vdGF0aW9ucygpe3RoaXMuc3RvcmUuZGlzcGF0Y2goZTcoe2Fubm90YXRpb246dGhpcy5hbm5vdGF0aW9ufSkpfX07c2cuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8c2cpKHYoc3QpKX07c2cuXHUwMjc1Y21wPXooe3R5cGU6c2csc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbiJdXSxpbnB1dHM6e2RhdGE6ImRhdGEiLG1heENvdW50OiJtYXhDb3VudCIsYWN0aXZlTWV0cmljczoiYWN0aXZlTWV0cmljcyIsbnVtQWN0aXZlUnVuczoibnVtQWN0aXZlUnVucyIsYW5ub3RhdGlvbjoiYW5ub3RhdGlvbiIscnVuSGVpZ2h0OiJydW5IZWlnaHQiLGhhc0VtYmVkZGluZzoiaGFzRW1iZWRkaW5nIn0sZGVjbHM6OSx2YXJzOjMxLGNvbnN0czpbWzMsImRhdGEiLCJtYXhDb3VudCIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwiYW5ub3RhdGlvbiIsInJ1bkhlaWdodCIsImhhc0VtYmVkZGluZyIsInNvcnQiLCJzZWxlY3RlZEFubm90YXRpb25zIiwiZmxhZ2dlZEFubm90YXRpb25zIiwiaGlkZGVuQW5ub3RhdGlvbnMiLCJzaG93Q291bnRzIiwic2lkZWJhcldpZHRoIiwiY29sb3JTY2FsZSIsInJ1bklkVG9SdW5zIiwib25TaG93U2ltaWxhckFubm90YXRpb25zIl1dLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7dCYxJiYodSgwLCJhbm5vdGF0aW9uLWNvbXBvbmVudCIsMCksQSgib25TaG93U2ltaWxhckFubm90YXRpb25zIixmdW5jdGlvbigpe3JldHVybiBlLnNob3dTaW1pbGFyQW5ub3RhdGlvbnMoKX0pLFgoMSwiYXN5bmMiKSxYKDIsImFzeW5jIiksWCgzLCJhc3luYyIpLFgoNCwiYXN5bmMiKSxYKDUsImFzeW5jIiksWCg2LCJhc3luYyIpLFgoNywiYXN5bmMiKSxYKDgsImFzeW5jIiksaCgpKSx0JjImJlAoImRhdGEiLGUuZGF0YSkoIm1heENvdW50IixlLm1heENvdW50KSgiYWN0aXZlTWV0cmljcyIsZS5hY3RpdmVNZXRyaWNzKSgibnVtQWN0aXZlUnVucyIsZS5udW1BY3RpdmVSdW5zKSgiYW5ub3RhdGlvbiIsZS5hbm5vdGF0aW9uKSgicnVuSGVpZ2h0IixlLnJ1bkhlaWdodCkoImhhc0VtYmVkZGluZyIsZS5oYXNFbWJlZGRpbmcpKCJzb3J0IixRKDEsMTUsZS5zb3J0JCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixRKDIsMTcsZS5zZWxlY3RlZEFubm90YXRpb25zJCkpKCJmbGFnZ2VkQW5ub3RhdGlvbnMiLFEoMywxOSxlLmZsYWdnZWRBbm5vdGF0aW9ucyQpKSgiaGlkZGVuQW5ub3RhdGlvbnMiLFEoNCwyMSxlLmhpZGRlbkFubm90YXRpb25zJCkpKCJzaG93Q291bnRzIixRKDUsMjMsZS5zaG93Q291bnRzJCkpKCJzaWRlYmFyV2lkdGgiLFEoNiwyNSxlLnNpZGViYXJXaWR0aCQpKSgiY29sb3JTY2FsZSIsUSg3LDI3LGUucnVuQ29sb3JTY2FsZSQpKSgicnVuSWRUb1J1bnMiLFEoOCwyOSxlLnJ1bklkVG9SdW5zJCkpfSxkaXJlY3RpdmVzOltTQ10scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoc2csW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pLWFubm90YXRpb24iLHRlbXBsYXRlOmAKICAgIDxhbm5vdGF0aW9uLWNvbXBvbmVudAogICAgICBbZGF0YV09ImRhdGEiCiAgICAgIFttYXhDb3VudF09Im1heENvdW50IgogICAgICBbYWN0aXZlTWV0cmljc109ImFjdGl2ZU1ldHJpY3MiCiAgICAgIFtudW1BY3RpdmVSdW5zXT0ibnVtQWN0aXZlUnVucyIKICAgICAgW2Fubm90YXRpb25dPSJhbm5vdGF0aW9uIgogICAgICBbcnVuSGVpZ2h0XT0icnVuSGVpZ2h0IgogICAgICBbaGFzRW1iZWRkaW5nXT0iaGFzRW1iZWRkaW5nIgogICAgICBbc29ydF09InNvcnQkIHwgYXN5bmMiCiAgICAgIFtzZWxlY3RlZEFubm90YXRpb25zXT0ic2VsZWN0ZWRBbm5vdGF0aW9ucyQgfCBhc3luYyIKICAgICAgW2ZsYWdnZWRBbm5vdGF0aW9uc109ImZsYWdnZWRBbm5vdGF0aW9ucyQgfCBhc3luYyIKICAgICAgW2hpZGRlbkFubm90YXRpb25zXT0iaGlkZGVuQW5ub3RhdGlvbnMkIHwgYXN5bmMiCiAgICAgIFtzaG93Q291bnRzXT0ic2hvd0NvdW50cyQgfCBhc3luYyIKICAgICAgW3NpZGViYXJXaWR0aF09InNpZGViYXJXaWR0aCQgfCBhc3luYyIKICAgICAgW2NvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlJCB8IGFzeW5jIgogICAgICBbcnVuSWRUb1J1bnNdPSJydW5JZFRvUnVucyQgfCBhc3luYyIKICAgICAgKG9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucyk9InNob3dTaW1pbGFyQW5ub3RhdGlvbnMoKSIKICAgID48L2Fubm90YXRpb24tY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0se2RhdGE6W3t0eXBlOmR9XSxtYXhDb3VudDpbe3R5cGU6ZH1dLGFjdGl2ZU1ldHJpY3M6W3t0eXBlOmR9XSxudW1BY3RpdmVSdW5zOlt7dHlwZTpkfV0sYW5ub3RhdGlvbjpbe3R5cGU6ZH1dLHJ1bkhlaWdodDpbe3R5cGU6ZH1dLGhhc0VtYmVkZGluZzpbe3R5cGU6ZH1dfSl9KSgpO2Z1bmN0aW9uIGpRdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsIm5wbWktYW5ub3RhdGlvbiIsNSksQSgiY2xpY2siLGZ1bmN0aW9uKGkpe2xldCByPU90KGUpLiRpbXBsaWNpdDtyZXR1cm4gUygyKS5yb3dDbGlja2VkKGkscil9KSxoKCl9aWYobiYyKXtsZXQgZT10LiRpbXBsaWNpdCxvPVMoMik7UCgiZGF0YSIsby5hbm5vdGF0aW9uc1tlXSkoImFjdGl2ZU1ldHJpY3MiLG8uYWN0aXZlTWV0cmljcykoIm51bUFjdGl2ZVJ1bnMiLG8ubnVtQWN0aXZlUnVucykoIm1heENvdW50IixvLm1heENvdW50KSgiYW5ub3RhdGlvbiIsZSkoInJ1bkhlaWdodCIsby5ydW5IZWlnaHQpKCJoYXNFbWJlZGRpbmciLG8uZW1iZWRkaW5nRGF0YSYmby5lbWJlZGRpbmdEYXRhW2VdIT09dm9pZCAwKX19ZnVuY3Rpb24gVVF0KG4sdCl7aWYobiYxJiYoRW4oMCksRCgxLCJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIiksRCgyLCJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyIiwyKSx1KDMsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMyksayg0LGpRdCwxLDcsIm5wbWktYW5ub3RhdGlvbiIsNCksaCgpLGtuKCkpLG4mMil7bGV0IGU9UygpO3goMiksUCgiYW5ub3RhdGlvbnMiLGUuYW5ub3RhdGlvbnMpKCJudW1Bbm5vdGF0aW9ucyIsZS5udW1Bbm5vdGF0aW9ucykoImFjdGl2ZU1ldHJpY3MiLGUuYWN0aXZlTWV0cmljcykseCgxKSxXaSgiaXRlbVNpemUiLGUubnVtQWN0aXZlUnVucyplLnJ1bkhlaWdodCsyNSkseCgxKSxQKCJjZGtWaXJ0dWFsRm9yT2YiLGUuc29ydGVkQW5ub3RhdGlvbnMpfX12YXIgUkM9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9uUm93Q2xpY2s9bmV3ICQsdGhpcy5ydW5IZWlnaHQ9MzB9cm93Q2xpY2tlZCh0LGUpe2lmKHQuc2hpZnRLZXkpe2xldCBvPXRoaXMuc29ydGVkQW5ub3RhdGlvbnMuaW5kZXhPZihlKTtpZih0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoPT09MCl0aGlzLm9uUm93Q2xpY2suZW1pdCh0aGlzLnNvcnRlZEFubm90YXRpb25zLnNsaWNlKDAsbysxKSk7ZWxzZXtsZXQgaT10aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnNbdGhpcy5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aC0xXSxhPXRoaXMuc29ydGVkQW5ub3RhdGlvbnMuaW5kZXhPZihpKTthPG8/dGhpcy5vblJvd0NsaWNrLmVtaXQodGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5zbGljZShhLG8rMSkpOnRoaXMub25Sb3dDbGljay5lbWl0KHRoaXMuc29ydGVkQW5ub3RhdGlvbnMuc2xpY2UobyxhKzEpKX19ZWxzZSB0aGlzLm9uUm93Q2xpY2suZW1pdChbZV0pfX07UkMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UkMpfTtSQy5cdTAyNzVjbXA9eih7dHlwZTpSQyxzZWxlY3RvcnM6W1siYW5ub3RhdGlvbnMtbGlzdC1jb21wb25lbnQiXV0saW5wdXRzOnthbm5vdGF0aW9uczoiYW5ub3RhdGlvbnMiLGVtYmVkZGluZ0RhdGE6ImVtYmVkZGluZ0RhdGEiLGFubm90YXRpb25zRXhwYW5kZWQ6ImFubm90YXRpb25zRXhwYW5kZWQiLG51bUFubm90YXRpb25zOiJudW1Bbm5vdGF0aW9ucyIsYW5ub3RhdGlvblNvcnQ6ImFubm90YXRpb25Tb3J0IixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixudW1BY3RpdmVSdW5zOiJudW1BY3RpdmVSdW5zIixzb3J0ZWRBbm5vdGF0aW9uczoic29ydGVkQW5ub3RhdGlvbnMiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLG1heENvdW50OiJtYXhDb3VudCJ9LG91dHB1dHM6e29uUm93Q2xpY2s6Im9uUm93Q2xpY2sifSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsImV4cGFuZGVkIl0sWzQsIm5nSWYiXSxbMywiYW5ub3RhdGlvbnMiLCJudW1Bbm5vdGF0aW9ucyIsImFjdGl2ZU1ldHJpY3MiXSxbIm1pbkJ1ZmZlclB4IiwiMzAwIiwibWF4QnVmZmVyUHgiLCI2MDAiLDEsImFubm90YXRpb24tcm93cyIsMywiaXRlbVNpemUiXSxbMywiZGF0YSIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwibWF4Q291bnQiLCJhbm5vdGF0aW9uIiwicnVuSGVpZ2h0IiwiaGFzRW1iZWRkaW5nIiwiY2xpY2siLDQsImNka1ZpcnR1YWxGb3IiLCJjZGtWaXJ0dWFsRm9yT2YiXSxbMywiZGF0YSIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwibWF4Q291bnQiLCJhbm5vdGF0aW9uIiwicnVuSGVpZ2h0IiwiaGFzRW1iZWRkaW5nIiwiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyIiwwKSxrKDEsVVF0LDUsNSwibmctY29udGFpbmVyIiwxKSksdCYyJiYoUCgibnVtQW5ub3RhdGlvbnMiLGUubnVtQW5ub3RhdGlvbnMpKCJleHBhbmRlZCIsZS5hbm5vdGF0aW9uc0V4cGFuZGVkKSx4KDEpLFAoIm5nSWYiLGUuYW5ub3RhdGlvbnNFeHBhbmRlZCkpfSxkaXJlY3RpdmVzOltvZyxYdCxhZyxyZyxKYSxDbCxKbCxzZ10sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6Y2FsYygxMDAlIC0gMnB4KTt3aWR0aDpjYWxjKDEwMCUgLSAycHgpfS5hbm5vdGF0aW9uLXJvd3NbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDE7b3ZlcmZsb3cteTphdXRvfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFJDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiYW5ub3RhdGlvbnMtbGlzdC1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL2Fubm90YXRpb25zX2xpc3RfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vYW5ub3RhdGlvbnNfbGlzdF9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7YW5ub3RhdGlvbnM6W3t0eXBlOmR9XSxlbWJlZGRpbmdEYXRhOlt7dHlwZTpkfV0sYW5ub3RhdGlvbnNFeHBhbmRlZDpbe3R5cGU6ZH1dLG51bUFubm90YXRpb25zOlt7dHlwZTpkfV0sYW5ub3RhdGlvblNvcnQ6W3t0eXBlOmR9XSxhY3RpdmVNZXRyaWNzOlt7dHlwZTpkfV0sbnVtQWN0aXZlUnVuczpbe3R5cGU6ZH1dLHNvcnRlZEFubm90YXRpb25zOlt7dHlwZTpkfV0sc2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6ZH1dLG1heENvdW50Olt7dHlwZTpkfV0sb25Sb3dDbGljazpbe3R5cGU6Qn1dfSl9KSgpO3ZhciBIbT1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hbm5vdGF0aW9uc0V4cGFuZGVkJD10aGlzLnN0b3JlLnBpcGUoemUocDcpKSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZSh6ZShMcikpLnBpcGUoRyhlPT5lP0FycmF5LmZyb20oZS5lbnRyaWVzKCkpLmZpbHRlcihvPT5vWzFdKS5tYXAobz0+b1swXSk6W10pKSx0aGlzLmVtYmVkZGluZ0RhdGEkPXRoaXMuc3RvcmUucGlwZSh6ZShjNykpLHRoaXMubnVtQWN0aXZlUnVucyQ9dGhpcy5hY3RpdmVSdW5zJC5waXBlKEcoZT0+ZS5sZW5ndGgpKSx0aGlzLmFjdGl2ZU1ldHJpY3MkPW9uKFt0aGlzLnN0b3JlLnNlbGVjdChReCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLnN0b3JlLnNlbGVjdChQaCldKS5waXBlKEcoKFtlLG8saV0pPT57bGV0IGE9W107Zm9yKGxldCByIG9mIG8pZVtyXSYmKGE9YS5jb25jYXQoZVtyXS5maWx0ZXIocz0+U1MocykpKSk7cmV0dXJuIGE9Wy4uLm5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGkpLC4uLmFdKV0sYX0pKSx0aGlzLnZpc2libGVBbm5vdGF0aW9ucyQ9b24oW3RoaXMuc3RvcmUuc2VsZWN0KFh4KSx0aGlzLnN0b3JlLnNlbGVjdChGUyksdGhpcy5zdG9yZS5zZWxlY3QoVlMpXSkucGlwZShHKChbZSxvLGldKT0+aDcoZSxvLGkpKSksdGhpcy5maWx0ZXJlZEFubm90YXRpb25zJD1vbihbdGhpcy52aXNpYmxlQW5ub3RhdGlvbnMkLHRoaXMuc3RvcmUuc2VsZWN0KGY3KSx0aGlzLnN0b3JlLnNlbGVjdChQaCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLmFjdGl2ZU1ldHJpY3MkLHRoaXMuc3RvcmUuc2VsZWN0KExTKV0pLnBpcGUoRygoW2UsbyxpLGEscixzXSk9PnJfdChlLGEsbyxpLHIscykpKS5waXBlKEJjKCkpLHRoaXMubnVtQW5ub3RhdGlvbnMkPXRoaXMuZmlsdGVyZWRBbm5vdGF0aW9ucyQucGlwZShHKGU9Pk9iamVjdC5rZXlzKGUpLmxlbmd0aCkpLHRoaXMuc29ydGVkQW5ub3RhdGlvbnMkPW9uKFt0aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLHRoaXMuc3RvcmUucGlwZSh6ZShCUykpLHRoaXMuZW1iZWRkaW5nRGF0YSRdKS5waXBlKEcoKFtlLG8saV0pPT5sX3QoZSxvLGkpKSksdGhpcy5zZWxlY3RlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnBpcGUoemUoZ0MpKSx0aGlzLm1heENvdW50JD10aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLnBpcGUoRyhlPT57bGV0IG89MDtyZXR1cm4gT2JqZWN0LnZhbHVlcyhlKS5mb3JFYWNoKGk9PntpLmZvckVhY2goYT0+e2EuY291bnRWYWx1ZSYmKG89TWF0aC5tYXgobyxhLmNvdW50VmFsdWUpKX0pfSksb30pKX1yb3dDbGlja2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goWEYoe2Fubm90YXRpb25zOnR9KSl9fTtIbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxIbSkodihzdCkpfTtIbS5cdTAyNzVjbXA9eih7dHlwZTpIbSxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0Il1dLGRlY2xzOjEwLHZhcnM6MjcsY29uc3RzOltbMywiYW5ub3RhdGlvbnMiLCJlbWJlZGRpbmdEYXRhIiwiYW5ub3RhdGlvbnNFeHBhbmRlZCIsIm51bUFubm90YXRpb25zIiwiYWN0aXZlTWV0cmljcyIsIm51bUFjdGl2ZVJ1bnMiLCJzb3J0ZWRBbm5vdGF0aW9ucyIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJtYXhDb3VudCIsIm9uUm93Q2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImFubm90YXRpb25zLWxpc3QtY29tcG9uZW50IiwwKSxBKCJvblJvd0NsaWNrIixmdW5jdGlvbihpKXtyZXR1cm4gZS5yb3dDbGlja2VkKGkpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksWCg0LCJhc3luYyIpLFgoNSwiYXN5bmMiKSxYKDYsImFzeW5jIiksWCg3LCJhc3luYyIpLFgoOCwiYXN5bmMiKSxYKDksImFzeW5jIiksaCgpKSx0JjImJlAoImFubm90YXRpb25zIixRKDEsOSxlLmZpbHRlcmVkQW5ub3RhdGlvbnMkKSkoImVtYmVkZGluZ0RhdGEiLFEoMiwxMSxlLmVtYmVkZGluZ0RhdGEkKSkoImFubm90YXRpb25zRXhwYW5kZWQiLFEoMywxMyxlLmFubm90YXRpb25zRXhwYW5kZWQkKSkoIm51bUFubm90YXRpb25zIixRKDQsMTUsZS5udW1Bbm5vdGF0aW9ucyQpKSgiYWN0aXZlTWV0cmljcyIsUSg1LDE3LGUuYWN0aXZlTWV0cmljcyQpKSgibnVtQWN0aXZlUnVucyIsUSg2LDE5LGUubnVtQWN0aXZlUnVucyQpKSgic29ydGVkQW5ub3RhdGlvbnMiLFEoNywyMSxlLnNvcnRlZEFubm90YXRpb25zJCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixRKDgsMjMsZS5zZWxlY3RlZEFubm90YXRpb25zJCkpKCJtYXhDb3VudCIsUSg5LDI1LGUubWF4Q291bnQkKSl9LGRpcmVjdGl2ZXM6W1JDXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhIbSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktYW5ub3RhdGlvbnMtbGlzdCIsdGVtcGxhdGU6YAogICAgPGFubm90YXRpb25zLWxpc3QtY29tcG9uZW50CiAgICAgIFthbm5vdGF0aW9uc109ImZpbHRlcmVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiCiAgICAgIFtlbWJlZGRpbmdEYXRhXT0iZW1iZWRkaW5nRGF0YSQgfCBhc3luYyIKICAgICAgW2Fubm90YXRpb25zRXhwYW5kZWRdPSJhbm5vdGF0aW9uc0V4cGFuZGVkJCB8IGFzeW5jIgogICAgICBbbnVtQW5ub3RhdGlvbnNdPSJudW1Bbm5vdGF0aW9ucyQgfCBhc3luYyIKICAgICAgW2FjdGl2ZU1ldHJpY3NdPSJhY3RpdmVNZXRyaWNzJCB8IGFzeW5jIgogICAgICBbbnVtQWN0aXZlUnVuc109Im51bUFjdGl2ZVJ1bnMkIHwgYXN5bmMiCiAgICAgIFtzb3J0ZWRBbm5vdGF0aW9uc109InNvcnRlZEFubm90YXRpb25zJCB8IGFzeW5jIgogICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiCiAgICAgIFttYXhDb3VudF09Im1heENvdW50JCB8IGFzeW5jIgogICAgICAob25Sb3dDbGljayk9InJvd0NsaWNrZWQoJGV2ZW50KSIKICAgID48L2Fubm90YXRpb25zLWxpc3QtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIHBfdChuLHQsZSxvKXtsZXQgaT1bXSxhPXttYXg6LTEsbWluOjF9LHI9bmV3IFNldChlKSxzPW5ldyBTZXQobyk7cmV0dXJuIHIuc2l6ZT09PTB8fHMuc2l6ZT09PTB8fE9iamVjdC5rZXlzKG4pLmxlbmd0aD09PTA/e2Nvb3JkaW5hdGVzOltdLGV4dHJlbWVzOnttaW46LTEsbWF4OjF9fToodC5mb3JFYWNoKGw9PntsZXQgYz1uW2xdLG09e307Yy5mb3JFYWNoKGY9Pnshci5oYXMoZi5ydW4pfHwhcy5oYXMoZi5tZXRyaWMpfHwobVtmLnJ1bl0/bVtmLnJ1bl0ucHVzaChmKTptW2YucnVuXT1bZl0sZi5uUE1JVmFsdWUhPT1udWxsPyhhLm1heD1NYXRoLm1heChhLm1heCxmLm5QTUlWYWx1ZSksYS5taW49TWF0aC5taW4oYS5taW4sZi5uUE1JVmFsdWUpKTooYS5tYXg9TWF0aC5tYXgoYS5tYXgsMCksYS5taW49TWF0aC5taW4oYS5taW4sMCkpKX0pO2ZvcihsZXQgZiBvZiBPYmplY3Qua2V5cyhtKSlpLnB1c2goe2Fubm90YXRpb246bCxydW5JZDpmLHZhbHVlczptW2ZdfSl9KSxhLm1heDxhLm1pbiYmKGEubWF4PTEsYS5taW49LTEpLHtjb29yZGluYXRlczppLGV4dHJlbWVzOmF9KX12YXIgR1F0PVsiY2hhcnQiXSxFQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MCx0aGlzLmNoYXJ0V2lkdGg9MCx0aGlzLmhlaWdodD0zMDAsdGhpcy5tYXJnaW49e3RvcDoyMCxyaWdodDo0MCxib3R0b206MjAsbGVmdDo0MH0sdGhpcy5jaGFydEhlaWdodD10aGlzLmhlaWdodC10aGlzLm1hcmdpbi50b3AtdGhpcy5tYXJnaW4uYm90dG9tfW9uUmVzaXplKHQpe3RoaXMucmVkcmF3KCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdmc9Q3ModGhpcy5zdmdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLHRoaXMubWFpbkNvbnRhaW5lcj10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLm1hcmdpbi5sZWZ0fSwgJHt0aGlzLm1hcmdpbi50b3B9KWApLHRoaXMuY29vcmRpbmF0ZXNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy5sYWJlbHNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy5heGlzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMueFNjYWxlPXYyKCkucGFkZGluZyguMSksdGhpcy55U2NhbGU9c2woKS5yYW5nZShbdGhpcy5jaGFydEhlaWdodCwwXSksdGhpcy55QXhpcz10NSh0aGlzLnlTY2FsZSksdGhpcy5yZWRyYXcoKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLnN2ZyYmdGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSx0aGlzLnVwZGF0ZUF4ZXMoKSx0aGlzLmRyYXcoKX11cGRhdGVEaW1lbnNpb25zKCl7dGhpcy53aWR0aD10aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aHx8MTAsdGhpcy5jaGFydFdpZHRoPXRoaXMud2lkdGgtdGhpcy5tYXJnaW4ubGVmdC10aGlzLm1hcmdpbi5yaWdodH11cGRhdGVBeGVzKCl7dGhpcy54U2NhbGUucmFuZ2VSb3VuZChbMCx0aGlzLmNoYXJ0V2lkdGhdKS5kb21haW4odGhpcy5hY3RpdmVNZXRyaWNzKSx0aGlzLnlTY2FsZS5kb21haW4oW3RoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWluLHRoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWF4XSl9ZHJhdygpe3RoaXMuZHJhd0F4ZXMoKSx0aGlzLmRyYXdBeGlzTGFiZWxzKCksdGhpcy5kcmF3Q29vcmRpbmF0ZXMoKSx0aGlzLmRyYXdMYWJlbHMoKX1kcmF3QXhlcygpe2xldCB0PXRoaXMuYXhpc0dyb3VwLnNlbGVjdEFsbCgiLmF4aXMteSIpLmRhdGEodGhpcy5hY3RpdmVNZXRyaWNzKTt0LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJheGlzLXkiKS5tZXJnZSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG8pe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZShvKX0sIDApYH0uYmluZCh0aGlzKSkuY2FsbCh0aGlzLnlBeGlzKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3QXhpc0xhYmVscygpe2xldCB0PXRoaXMuYXhpc0dyb3VwLnNlbGVjdEFsbCgiLmF4aXMtYmctdGV4dCIpLmRhdGEodGhpcy5hY3RpdmVNZXRyaWNzKTt0LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJheGlzLWJnLXRleHQiKS5hdHRyKCJmb250LXNpemUiLCIxM3B4IikuYXR0cigic3Ryb2tlLXdpZHRoIiwyKS5hdHRyKCJzdHJva2UtbGluZWpvaW4iLCJyb3VuZCIpLmF0dHIoInN0cm9rZSIsIndoaXRlIikubWVyZ2UodCkudGV4dChhPT5hKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGEpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZShhKS01fSwgJHt0aGlzLnlTY2FsZSh0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1pbil9KSByb3RhdGUoLTkwKWB9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpO2xldCBvPXRoaXMuYXhpc0dyb3VwLnNlbGVjdEFsbCgiLmF4aXMtdGV4dCIpLmRhdGEodGhpcy5hY3RpdmVNZXRyaWNzKTtvLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoImNsYXNzIiwiYXhpcy10ZXh0IikubWVyZ2UobykudGV4dChhPT5hKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGEpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZShhKS01fSwgJHt0aGlzLnlTY2FsZSh0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1pbil9KSByb3RhdGUoLTkwKWB9LmJpbmQodGhpcykpLG8uZXhpdCgpLnJlbW92ZSgpfWRyYXdDb29yZGluYXRlcygpe2xldCB0PXRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLmRhdGEodGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlcyk7dC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiY29vcmQiKS5hdHRyKCJmaWxsIiwibm9uZSIpLm1lcmdlKHQpLmF0dHIoImQiLHRoaXMucGF0aC5iaW5kKHRoaXMpKS5hdHRyKCJzdHJva2UiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbG9yU2NhbGUoYS5ydW5JZCl9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpO2xldCBvPXRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5oaWRkZW5Db29yZCIpLmRhdGEodGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlcyk7by5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiaGlkZGVuQ29vcmQiKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIxMHB4IikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzdHJva2UiLCJyZ2JhKDAsIDAsIDAsIDAuMCkiKS5vbigibW91c2VvdmVyIix0aGlzLmhhbmRsZUNvb3JkaW5hdGVNb3VzZU92ZXIuYmluZCh0aGlzKSkub24oIm1vdXNlb3V0Iix0aGlzLmhhbmRsZUNvb3JkaW5hdGVNb3VzZU91dC5iaW5kKHRoaXMpKS5tZXJnZShvKS5hdHRyKCJkIix0aGlzLnBhdGguYmluZCh0aGlzKSksby5leGl0KCkucmVtb3ZlKCl9cGF0aCh0KXtsZXQgZT10LnZhbHVlcy5zb3J0KChvLGkpPT50aGlzLmFjdGl2ZU1ldHJpY3MuaW5kZXhPZihvLm1ldHJpYyktdGhpcy5hY3RpdmVNZXRyaWNzLmluZGV4T2YoaS5tZXRyaWMpKTtyZXR1cm4gQTUoKSh0LnZhbHVlcy5tYXAoZnVuY3Rpb24obyl7bGV0IGk9dGhpcy55U2NhbGUoby5uUE1JVmFsdWUpO3JldHVyblt0aGlzLnhTY2FsZShvLm1ldHJpYyksaV19LmJpbmQodGhpcykpKX1oYW5kbGVDb29yZGluYXRlTW91c2VPdmVyKHQsZSl7dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuZmlsdGVyKGZ1bmN0aW9uKG8pe3JldHVybiBvLmFubm90YXRpb24hPT10LmFubm90YXRpb259KS5zdHlsZSgib3BhY2l0eSIsLjEpLHRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLmZpbHRlcihmdW5jdGlvbihvKXtyZXR1cm4gby5hbm5vdGF0aW9uIT09dC5hbm5vdGF0aW9ufSkuc3R5bGUoIm9wYWNpdHkiLC4xKX1oYW5kbGVDb29yZGluYXRlTW91c2VPdXQoKXt0aGlzLmxhYmVsc0dyb3VwLnNlbGVjdEFsbCgiLmNvb3JkaW5hdGUtbGFiZWwiKS5zdHlsZSgib3BhY2l0eSIsMSksdGhpcy5jb29yZGluYXRlc0dyb3VwLnNlbGVjdEFsbCgiLmNvb3JkIikuc3R5bGUoIm9wYWNpdHkiLDEpfWRyYXdMYWJlbHMoKXtsZXQgdD0zMC90aGlzLnhTY2FsZS5zdGVwKCksZT10aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzLmxlbmd0aDwzMD90aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzOltdLG89dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuZGF0YShlKTtvLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJjb29yZGluYXRlLWxhYmVsIikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLm1lcmdlKG8pLnRleHQoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYW5ub3RhdGlvbn0pLmF0dHIoIngiLHRoaXMueFNjYWxlKHRoaXMuYWN0aXZlTWV0cmljc1swXSkrMzApLmF0dHIoInkiLGZ1bmN0aW9uKGEpe2xldCByPXRoaXMueVNjYWxlKGEudmFsdWVzWzBdLm5QTUlWYWx1ZT9hLnZhbHVlc1swXS5uUE1JVmFsdWU6MCkscz10aGlzLnlTY2FsZShhLnZhbHVlc1sxXS5uUE1JVmFsdWU/YS52YWx1ZXNbMV0ublBNSVZhbHVlOjApO3JldHVybigxLXQpKnIrdCpzfS5iaW5kKHRoaXMpKSxvLmV4aXQoKS5yZW1vdmUoKX19O0VDLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEVDKX07RUMuXHUwMjc1Y21wPXooe3R5cGU6RUMsc2VsZWN0b3JzOltbInBhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24odCxlKXtpZih0JjEmJnBlKEdRdCw3LEwpLHQmMil7bGV0IG87SHQobz1GdCgpKSYmKGUuc3ZnRWxlbWVudD1vLmZpcnN0KX19LGhvc3RCaW5kaW5nczpmdW5jdGlvbih0LGUpe3QmMSYmQSgicmVzaXplIixmdW5jdGlvbihpKXtyZXR1cm4gZS5vblJlc2l6ZShpKX0sITEsQVIpfSxpbnB1dHM6e2FjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLGNvb3JkaW5hdGVEYXRhOiJjb29yZGluYXRlRGF0YSIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgiLGNvbG9yU2NhbGU6ImNvbG9yU2NhbGUifSxmZWF0dXJlczpbV2VdLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWzEsInBjLWNoYXJ0Il0sWyJjaGFydCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKEtuKCksRCgwLCJzdmciLDAsMSkpfSxzdHlsZXM6WyIucGMtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDozMDBweDt3aWR0aDoxMDAlfSJdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEVDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9wYXJhbGxlbF9jb29yZGluYXRlc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9wYXJhbGxlbF9jb29yZGluYXRlc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7YWN0aXZlTWV0cmljczpbe3R5cGU6ZH1dLGNvb3JkaW5hdGVEYXRhOlt7dHlwZTpkfV0sc2lkZWJhcldpZHRoOlt7dHlwZTpkfV0sY29sb3JTY2FsZTpbe3R5cGU6ZH1dLHN2Z0VsZW1lbnQ6W3t0eXBlOkl0LGFyZ3M6WyJjaGFydCIse3N0YXRpYzohMCxyZWFkOkx9XX1dLG9uUmVzaXplOlt7dHlwZTp4byxhcmdzOlsid2luZG93OnJlc2l6ZSIsWyIkZXZlbnQiXV19XX0pfSkoKTt2YXIgbGc9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlUnVucyQ9dGhpcy5zdG9yZS5waXBlKHplKExyKSkucGlwZShHKGU9PmU/QXJyYXkuZnJvbShlLmVudHJpZXMoKSkuZmlsdGVyKG89Pm9bMV0pLm1hcChvPT5vWzBdKTpbXSkpLHRoaXMuYWN0aXZlTWV0cmljcyQ9b24odGhpcy5zdG9yZS5zZWxlY3QoUXgpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QoUGgpKS5waXBlKEcoKFtlLG8saV0pPT57bGV0IGE9W107Zm9yKGxldCByIG9mIG8pZVtyXSYmKGE9YS5jb25jYXQoZVtyXS5maWx0ZXIocz0+U1MocykpKSk7cmV0dXJuIGE9Wy4uLm5ldyBTZXQoWy4uLk9iamVjdC5rZXlzKGkpLC4uLmFdKV0sYS5tYXAocj0+QWMocikpfSkpLHRoaXMuY29vcmRpbmF0ZURhdGEkPW9uKFt0aGlzLnN0b3JlLnNlbGVjdChYeCksdGhpcy5zdG9yZS5zZWxlY3QoZ0MpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5hY3RpdmVNZXRyaWNzJF0pLnBpcGUoRygoW2UsbyxpLGFdKT0+cF90KGUsbyxpLGEpKSksdGhpcy5zaWRlYmFyV2lkdGgkPXRoaXMuc3RvcmUuc2VsZWN0KEt4KSx0aGlzLnJ1bkNvbG9yU2NhbGUkPXRoaXMuc3RvcmUuc2VsZWN0KGtfKS5waXBlKEcoZT0+bz0+e2lmKCFlLmhhc093blByb3BlcnR5KG8pKXRocm93IG5ldyBFcnJvcihgW0NvbG9yIHNjYWxlXSB1bmtub3duIHJ1bklkOiAke299LmApO3JldHVybiBlW29dfSkpfX07bGcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8bGcpKHYoc3QpKX07bGcuXHUwMjc1Y21wPXooe3R5cGU6bGcsc2VsZWN0b3JzOltbIm5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiXV0sZGVjbHM6NSx2YXJzOjEyLGNvbnN0czpbWzMsImFjdGl2ZU1ldHJpY3MiLCJjb29yZGluYXRlRGF0YSIsInNpZGViYXJXaWR0aCIsImNvbG9yU2NhbGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsInBhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudCIsMCksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksWCg0LCJhc3luYyIpKSx0JjImJlAoImFjdGl2ZU1ldHJpY3MiLFEoMSw0LGUuYWN0aXZlTWV0cmljcyQpKSgiY29vcmRpbmF0ZURhdGEiLFEoMiw2LGUuY29vcmRpbmF0ZURhdGEkKSkoInNpZGViYXJXaWR0aCIsUSgzLDgsZS5zaWRlYmFyV2lkdGgkKSkoImNvbG9yU2NhbGUiLFEoNCwxMCxlLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W0VDXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhsZyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiLHRlbXBsYXRlOmAKICAgIDxwYXJhbGxlbC1jb29yZGluYXRlcy1jb21wb25lbnQKICAgICAgW2FjdGl2ZU1ldHJpY3NdPSJhY3RpdmVNZXRyaWNzJCB8IGFzeW5jIgogICAgICBbY29vcmRpbmF0ZURhdGFdPSJjb29yZGluYXRlRGF0YSQgfCBhc3luYyIKICAgICAgW3NpZGViYXJXaWR0aF09InNpZGViYXJXaWR0aCQgfCBhc3luYyIKICAgICAgW2NvbG9yU2NhbGVdPSJydW5Db2xvclNjYWxlJCB8IGFzeW5jIgogICAgPjwvcGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50PgogIGAsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9XX0sbnVsbCl9KSgpO2Z1bmN0aW9uIFpRdChuLHQpe24mMSYmRCgwLCJtYXQtaWNvbiIsOSl9ZnVuY3Rpb24gWFF0KG4sdCl7biYxJiZEKDAsIm1hdC1pY29uIiwxMCl9ZnVuY3Rpb24gUVF0KG4sdCl7biYxJiZEKDAsIm5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiKX12YXIga0M9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLm9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zPW5ldyAkLHRoaXMub25Ub2dnbGVFeHBhbmRlZD1uZXcgJH19O2tDLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGtDKX07a0MuXHUwMjc1Y21wPXooe3R5cGU6a0Msc2VsZWN0b3JzOltbInNlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudCJdXSxpbnB1dHM6e3BjRXhwYW5kZWQ6InBjRXhwYW5kZWQiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMifSxvdXRwdXRzOntvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9uczoib25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMiLG9uVG9nZ2xlRXhwYW5kZWQ6Im9uVG9nZ2xlRXhwYW5kZWQifSxkZWNsczoxMSx2YXJzOjQsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IG47dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/bj1nb29nLmdldE1zZygiQ2xlYXIgQW5ub3RhdGlvbiBTZWxlY3Rpb24iKTpuPSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgY2xlYXJzIHRoZSBhbm5vdGF0aW9uIHNlbGVjdGlvbi7ikJ8yYjUyMjg5ZjJjNGI3ZjViMTgyZWQyM2M5MTU0NzIyZWNkNDZhMmQ04pCfMjQ5NDY2MDUyMDM0MTMwODgzMDpDbGVhciBBbm5vdGF0aW9uIFNlbGVjdGlvbmA7bGV0IHQ7cmV0dXJuIHR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP3Q9Z29vZy5nZXRNc2coIkV4cGFuZC9IaWRlIFNlbGVjdGVkIEFubm90YXRpb25zIik6dD0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGV4cGFuZHMgb3IgaGlkZXMgc2VsZWN0ZWQgYW5ub3RhdGlvbnMu4pCfOGY0YWQzMDVjMTllMzY1NWYzMTg5ZTNlMjY0ZTgzZmI3NmY3YmI5NeKQnzU2NzA3OTc3ODQwNzA5NTIwOTU6RXhwYW5kL0hpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgLFtbMSwicGMtY29udGFpbmVyIl0sWzEsInBjLXRvb2xiYXIiXSxbMSwicGMtdGl0bGUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sInRpdGxlIiwiRGVzZWxlY3RzIGFsbCBzZWxlY3RlZCBhbm5vdGF0aW9ucy4iLDEsImNsZWFyLWJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsic3ZnSWNvbiIsImNsZWFyXzI0cHgiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLHQsMSwiZXhwYW5kLWJ1dHRvbiIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4IiwiY2xhc3MiLCJleHBhbmQtbGVzcy1pY29uIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vdEV4cGFuZGVkIiwiIl0sWzQsIm5nSWYiXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4IiwxLCJleHBhbmQtbGVzcy1pY29uIl0sWyJzdmdJY29uIiwiZXhwYW5kX21vcmVfMjRweCIsMSwiZXhwYW5kLWljb24iXV19LHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYodSgwLCJkaXYiLDApLHUoMSwiZGl2IiwxKSx1KDIsImgzIiwyKSxUKDMsIlNlbGVjdGVkIEFubm90YXRpb25zIiksaCgpLHUoNCwiYnV0dG9uIiwzKSxBKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gZS5vbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucy5lbWl0KCl9KSxEKDUsIm1hdC1pY29uIiw0KSxoKCksdSg2LCJidXR0b24iLDUpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBlLm9uVG9nZ2xlRXhwYW5kZWQuZW1pdCgpfSksayg3LFpRdCwxLDAsIm1hdC1pY29uIiw2KSxrKDgsWFF0LDEsMCwibmctdGVtcGxhdGUiLG51bGwsNyx4biksaCgpLGgoKSxrKDEwLFFRdCwxLDAsIm5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiLDgpLGgoKSksdCYyKXtsZXQgbz13ZSg5KTt4KDQpLFAoImRpc2FibGVkIixlLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoPT09MCkseCgzKSxQKCJuZ0lmIixlLnBjRXhwYW5kZWQpKCJuZ0lmRWxzZSIsbykseCgzKSxQKCJuZ0lmIixlLnBjRXhwYW5kZWQpfX0sZGlyZWN0aXZlczpbZm4sWGUsWHQsbGddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9LnBjLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2ViZWJlYn0ucGMtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0MnB4O3BhZGRpbmc6MCAxNnB4fS5wYy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2Rpc3BsYXk6aW5saW5lO2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGtDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3Rvcjoic2VsZWN0ZWQtYW5ub3RhdGlvbnMtY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9zZWxlY3RlZF9hbm5vdGF0aW9uc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9zZWxlY3RlZF9hbm5vdGF0aW9uc19jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7cGNFeHBhbmRlZDpbe3R5cGU6ZH1dLHNlbGVjdGVkQW5ub3RhdGlvbnM6W3t0eXBlOmR9XSxvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9uczpbe3R5cGU6Qn1dLG9uVG9nZ2xlRXhwYW5kZWQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgRm09Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucGNFeHBhbmRlZCQ9dGhpcy5zdG9yZS5waXBlKHplKFFodCkpLHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoZ0MpfWNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucygpe3RoaXMuc3RvcmUuZGlzcGF0Y2goUUYoKSl9dG9nZ2xlRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKG43KCkpfX07Rm0uXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Rm0pKHYoc3QpKX07Rm0uXHUwMjc1Y21wPXooe3R5cGU6Rm0sc2VsZWN0b3JzOltbIm5wbWktc2VsZWN0ZWQtYW5ub3RhdGlvbnMiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywicGNFeHBhbmRlZCIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyIsIm9uVG9nZ2xlRXhwYW5kZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsInNlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudCIsMCksQSgib25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMiLGZ1bmN0aW9uKCl7cmV0dXJuIGUuY2xlYXJTZWxlY3RlZEFubm90YXRpb25zKCl9KSgib25Ub2dnbGVFeHBhbmRlZCIsZnVuY3Rpb24oKXtyZXR1cm4gZS50b2dnbGVFeHBhbmRlZCgpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxoKCkpLHQmMiYmUCgicGNFeHBhbmRlZCIsUSgxLDIsZS5wY0V4cGFuZGVkJCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixRKDIsNCxlLnNlbGVjdGVkQW5ub3RhdGlvbnMkKSl9LGRpcmVjdGl2ZXM6W2tDXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhGbSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktc2VsZWN0ZWQtYW5ub3RhdGlvbnMiLHRlbXBsYXRlOmAKICAgIDxzZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnQKICAgICAgW3BjRXhwYW5kZWRdPSJwY0V4cGFuZGVkJCB8IGFzeW5jIgogICAgICBbc2VsZWN0ZWRBbm5vdGF0aW9uc109InNlbGVjdGVkQW5ub3RhdGlvbnMkIHwgYXN5bmMiCiAgICAgIChvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyk9ImNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucygpIgogICAgICAob25Ub2dnbGVFeHBhbmRlZCk9InRvZ2dsZUV4cGFuZGVkKCkiCiAgICA+PC9zZWxlY3RlZC1hbm5vdGF0aW9ucy1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gSlF0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDYpLHUoMSwiZGl2Iiw3KSxEKDIsIm5wbWktdmlvbGluLWZpbHRlcnMiLDgpLHUoMywiZGl2Iiw5KSxEKDQsInJ1bnMtc2VsZWN0b3IiKSxoKCksaCgpLGgoKSksbiYyKXtsZXQgZT1TKCk7cWUoIndpZHRoIixlLnNpZGViYXJXaWR0aCwicHgiKX19ZnVuY3Rpb24gJFF0KG4sdCl7aWYobiYxKXtsZXQgZT0kdCgpO3UoMCwiZGl2IiwxMCksQSgibW91c2Vkb3duIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKCkucmVzaXplR3JhYmJlZC5lbWl0KCl9KSxoKCl9fWZ1bmN0aW9uIHRLdChuLHQpe24mMSYmKHUoMCwiZGl2IiwxMSksRCgxLCJucG1pLWFubm90YXRpb25zLWxpc3QiLDEyKSxEKDIsIm5wbWktc2VsZWN0ZWQtYW5ub3RhdGlvbnMiKSxoKCkpfWZ1bmN0aW9uIGVLdChuLHQpe24mMSYmKHUoMCwiZGl2IiwxMyksVCgxLCJZb3UgbmVlZCB0byBzZWxlY3QgYXQgbGVhc3Qgb25lIHJ1bi4iKSxoKCkpfWZ1bmN0aW9uIG5LdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMTQpLHUoMSwiYnV0dG9uIiwxNSksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIE90KGUpLFMoKS50b2dnbGVTaWRlYmFyRXhwYW5kZWQuZW1pdCgpfSksRCgyLCJtYXQtaWNvbiIsMTYpLGgoKSxoKCl9fXZhciBOQz1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMudG9nZ2xlU2lkZWJhckV4cGFuZGVkPW5ldyAkLHRoaXMucmVzaXplVHJpZ2dlcmVkPW5ldyAkLHRoaXMucmVzaXplR3JhYmJlZD1uZXcgJCx0aGlzLnJlc2l6ZVJlbGVhc2VkPW5ldyAkfX07TkMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8TkMpfTtOQy5cdTAyNzVjbXA9eih7dHlwZTpOQyxzZWxlY3RvcnM6W1sibWFpbi1jb21wb25lbnQiXV0saW5wdXRzOntydW5BY3RpdmU6InJ1bkFjdGl2ZSIsc2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIn0sb3V0cHV0czp7dG9nZ2xlU2lkZWJhckV4cGFuZGVkOiJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLHJlc2l6ZVRyaWdnZXJlZDoicmVzaXplVHJpZ2dlcmVkIixyZXNpemVHcmFiYmVkOiJyZXNpemVHcmFiYmVkIixyZXNpemVSZWxlYXNlZDoicmVzaXplUmVsZWFzZWQifSxkZWNsczo4LHZhcnM6NSxjb25zdHM6ZnVuY3Rpb24oKXtsZXQgbjtyZXR1cm4gdHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlIT0idW5kZWZpbmVkIiYmbmdJMThuQ2xvc3VyZU1vZGU/bj1nb29nLmdldE1zZygiVG9nZ2xlIFNpZGViYXIiKTpuPSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgdG9nZ2xlcyB0aGUgc2lkZWJhci7ikJ9mNjNiNTc5MzJkMTc5Y2NhNjJhYzlmY2FlNjNkZDdmNWU2ZmEzODlm4pCfNDQ4NTAwOTM0NzQ0NDcwNDg3ODpUb2dnbGUgU2lkZWJhcmAsW1sxLCJjb250ZW50IiwzLCJtb3VzZXVwIiwibW91c2Vtb3ZlIl0sWyJjbGFzcyIsInNpZGViYXItY29udGFpbmVyIiwzLCJ3aWR0aCIsNCwibmdJZiJdLFsiY2xhc3MiLCJncmFiYmVyIiwzLCJtb3VzZWRvd24iLDQsIm5nSWYiXSxbImNsYXNzIiwiYW5hbHlzaXMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vUnVuIiwiIl0sWyJjbGFzcyIsInNpZGUtdG9nZ2xlIiw0LCJuZ0lmIl0sWzEsInNpZGViYXItY29udGFpbmVyIl0sWzEsInNpZGViYXItY29udGVudHMiXSxbMSwidmlvbGluLWZpbHRlcnMiXSxbMSwicnVuLXNlbGVjdG9yIl0sWzEsImdyYWJiZXIiLDMsIm1vdXNlZG93biJdLFsxLCJhbmFseXNpcy1jb250YWluZXIiXSxbMSwiYW5ub3RhdGlvbnMtbGlzdCJdLFsxLCJub1J1biJdLFsxLCJzaWRlLXRvZ2dsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwiYXJpYS1sYWJlbCIsbiwzLCJjbGljayJdLFsic3ZnSWNvbiIsImNoZXZyb25fcmlnaHRfMjRweCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJihEKDAsIm5wbWktZGF0YS1zZWxlY3Rpb24iKSx1KDEsImRpdiIsMCksQSgibW91c2V1cCIsZnVuY3Rpb24oKXtyZXR1cm4gZS5yZXNpemVSZWxlYXNlZC5lbWl0KCl9KSgibW91c2Vtb3ZlIixmdW5jdGlvbihpKXtyZXR1cm4gZS5yZXNpemVUcmlnZ2VyZWQuZW1pdChpKX0pLGsoMixKUXQsNSwyLCJkaXYiLDEpLGsoMywkUXQsMSwwLCJkaXYiLDIpLGsoNCx0S3QsMywwLCJkaXYiLDMpLGsoNSxlS3QsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LHhuKSxoKCksayg3LG5LdCwzLDAsImRpdiIsNSkpLHQmMil7bGV0IG89d2UoNik7eCgyKSxQKCJuZ0lmIixlLnNpZGViYXJFeHBhbmRlZCkseCgxKSxQKCJuZ0lmIixlLnNpZGViYXJFeHBhbmRlZCkseCgxKSxQKCJuZ0lmIixlLnJ1bkFjdGl2ZT09PSEwKSgibmdJZkVsc2UiLG8pLHgoMyksUCgibmdJZiIsIWUuc2lkZWJhckV4cGFuZGVkKX19LGRpcmVjdGl2ZXM6W0ltLFh0LGVnLEVsLEhtLEZtLGZuLFhlXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0uY29udGVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXg6MTttaW4taGVpZ2h0OjBweDt3aWR0aDoxMDAlfS5zaWRlYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5zaWRlYmFyLWNvbnRlbnRzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxNTBweH0uYW5hbHlzaXMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlO2ZsZXg6MSAxfS5ydW4tc2VsZWN0b3JbX25nY29udGVudC0lQ09NUCVde21heC1oZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS52aW9saW4tZmlsdGVyc1tfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTAwJX0uc2lkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4O2JvdHRvbToxMHB4O2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmdyYWJiZXJbX25nY29udGVudC0lQ09NUCVde2NvbnRlbnQ6IiI7Y3Vyc29yOmV3LXJlc2l6ZTtoZWlnaHQ6MTAwJTt3aWR0aDozcHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5hbm5vdGF0aW9ucy1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MHB4O2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKE5DLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibWFpbi1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL21haW5fY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbWFpbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7cnVuQWN0aXZlOlt7dHlwZTpkfV0sc2lkZWJhckV4cGFuZGVkOlt7dHlwZTpkfV0sc2lkZWJhcldpZHRoOlt7dHlwZTpkfV0sdG9nZ2xlU2lkZWJhckV4cGFuZGVkOlt7dHlwZTpCfV0scmVzaXplVHJpZ2dlcmVkOlt7dHlwZTpCfV0scmVzaXplR3JhYmJlZDpbe3R5cGU6Qn1dLHJlc2l6ZVJlbGVhc2VkOlt7dHlwZTpCfV19KX0pKCk7dmFyIGNnPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJ1bkFjdGl2ZSQ9dGhpcy5zdG9yZS5waXBlKHplKExyKSkucGlwZShHKGU9PmU/Wy4uLmUudmFsdWVzKCldLmluY2x1ZGVzKCEwKTohMSkpLHRoaXMuc2lkZWJhckV4cGFuZGVkJD10aGlzLnN0b3JlLnBpcGUoemUoZDcpKSx0aGlzLnNpZGViYXJXaWR0aCQ9dGhpcy5zdG9yZS5waXBlKHplKEt4KSksdGhpcy5yZXNpemluZz0hMX1vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goRFMoKSl9b25SZXNpemVUcmlnZ2VyZWQodCl7dGhpcy5yZXNpemluZyYmdGhpcy5zdG9yZS5kaXNwYXRjaChzNyh7c2lkZWJhcldpZHRoOnQuY2xpZW50WH0pKX1vblJlc2l6ZUdyYWJiZWQoKXt0aGlzLnJlc2l6aW5nPSEwfW9uUmVzaXplUmVsZWFzZWQoKXt0aGlzLnJlc2l6aW5nPSExfX07Y2cuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8Y2cpKHYoc3QpKX07Y2cuXHUwMjc1Y21wPXooe3R5cGU6Y2csc2VsZWN0b3JzOltbIm5wbWktbWFpbiJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJydW5BY3RpdmUiLCJzaWRlYmFyRXhwYW5kZWQiLCJzaWRlYmFyV2lkdGgiLCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLCJyZXNpemVUcmlnZ2VyZWQiLCJyZXNpemVHcmFiYmVkIiwicmVzaXplUmVsZWFzZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsIm1haW4tY29tcG9uZW50IiwwKSxBKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKCJyZXNpemVUcmlnZ2VyZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uUmVzaXplVHJpZ2dlcmVkKGkpfSkoInJlc2l6ZUdyYWJiZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZXNpemVHcmFiYmVkKCl9KSgicmVzaXplUmVsZWFzZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZXNpemVSZWxlYXNlZCgpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksaCgpKSx0JjImJlAoInJ1bkFjdGl2ZSIsUSgxLDMsZS5ydW5BY3RpdmUkKSkoInNpZGViYXJFeHBhbmRlZCIsUSgyLDUsZS5zaWRlYmFyRXhwYW5kZWQkKSkoInNpZGViYXJXaWR0aCIsUSgzLDcsZS5zaWRlYmFyV2lkdGgkKSl9LGRpcmVjdGl2ZXM6W05DXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhjZyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktbWFpbiIsdGVtcGxhdGU6YAogICAgPG1haW4tY29tcG9uZW50CiAgICAgIFtydW5BY3RpdmVdPSJydW5BY3RpdmUkIHwgYXN5bmMiCiAgICAgIFtzaWRlYmFyRXhwYW5kZWRdPSJzaWRlYmFyRXhwYW5kZWQkIHwgYXN5bmMiCiAgICAgIFtzaWRlYmFyV2lkdGhdPSJzaWRlYmFyV2lkdGgkIHwgYXN5bmMiCiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIgogICAgICAocmVzaXplVHJpZ2dlcmVkKT0ib25SZXNpemVUcmlnZ2VyZWQoJGV2ZW50KSIKICAgICAgKHJlc2l6ZUdyYWJiZWQpPSJvblJlc2l6ZUdyYWJiZWQoKSIKICAgICAgKHJlc2l6ZVJlbGVhc2VkKT0ib25SZXNpemVSZWxlYXNlZCgpIgogICAgPjwvbWFpbi1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIFRDPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy50b2dnbGVTaWRlYmFyRXhwYW5kZWQ9bmV3ICR9fTtUQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxUQyl9O1RDLlx1MDI3NWNtcD16KHt0eXBlOlRDLHNlbGVjdG9yczpbWyJlbWJlZGRpbmctcHJvamVjdGlvbi1jb21wb25lbnQiXV0saW5wdXRzOntzaWRlYmFyRXhwYW5kZWQ6InNpZGViYXJFeHBhbmRlZCJ9LG91dHB1dHM6e3RvZ2dsZVNpZGViYXJFeHBhbmRlZDoidG9nZ2xlU2lkZWJhckV4cGFuZGVkIn0sZGVjbHM6Nyx2YXJzOjAsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIHR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP249Z29vZy5nZXRNc2coIkV4cGFuZC9IaWRlIFNpZGViYXIiKTpuPSRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZXhwYW5kcy9oaWRlcyB0aGUgc2lkZWJhci7ikJ80OGMyOTkwM2NlODgxYWI2MTA4OGY4ZDQ5ZDgyNzIwMzcxNmFhZWQ04pCfNDY1ODYwMjk5MTk3MDI2MDIxNTpFeHBhbmQvSGlkZSBTaWRlYmFyYCxbWzEsImVtYmVkZGluZy1wcm9qZWN0aW9uLXRvb2xiYXIiXSxbMSwiZW1iZWRkaW5nLXByb2plY3Rpb24tdGl0bGUiXSxbMSwic2lkZS10b2dnbGUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sMywiY2xpY2siXSxbInN2Z0ljb24iLCJjaGV2cm9uX2xlZnRfMjRweCJdLFsxLCJwcm9qZWN0aW9uIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZGl2IiwwKSx1KDEsImgzIiwxKSxUKDIsIkVtYmVkZGluZ3MgUHJvamVjdGVkIiksaCgpLHUoMywiZGl2IiwyKSx1KDQsImJ1dHRvbiIsMyksQSgiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIGUudG9nZ2xlU2lkZWJhckV4cGFuZGVkLmVtaXQoKX0pLEQoNSwibWF0LWljb24iLDQpLGgoKSxoKCksaCgpLEQoNiwiZGl2Iiw1KSl9LGRpcmVjdGl2ZXM6W2ZuLFhlXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwNnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTllbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM5MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDdweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE4ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDhweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE3ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzM0MTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTZlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTVlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNGVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3MmVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzYzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsMCk7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0uZW1iZWRkaW5nLXByb2plY3Rpb24tdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDo0MnB4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MCAxMHB4fS5lbWJlZGRpbmctcHJvamVjdGlvbi10aXRsZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmU7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5wcm9qZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy15OmF1dG99LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjMwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDozMHB4fSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFRDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoiZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50Iix0ZW1wbGF0ZVVybDoiLi9lbWJlZGRpbmdfcHJvamVjdGlvbl9jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9lbWJlZGRpbmdfcHJvamVjdGlvbl9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7c2lkZWJhckV4cGFuZGVkOlt7dHlwZTpkfV0sdG9nZ2xlU2lkZWJhckV4cGFuZGVkOlt7dHlwZTpCfV19KX0pKCk7dmFyIG1nPWNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnNpZGViYXJFeHBhbmRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QodTcpfW9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChJUygpKX19O21nLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fG1nKSh2KHN0KSl9O21nLlx1MDI3NWNtcD16KHt0eXBlOm1nLHNlbGVjdG9yczpbWyJucG1pLWVtYmVkZGluZy1wcm9qZWN0aW9uIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsInNpZGViYXJFeHBhbmRlZCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmKHUoMCwiZW1iZWRkaW5nLXByb2plY3Rpb24tY29tcG9uZW50IiwwKSxBKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pLFgoMSwiYXN5bmMiKSxoKCkpLHQmMiYmUCgic2lkZWJhckV4cGFuZGVkIixRKDEsMSxlLnNpZGViYXJFeHBhbmRlZCQpKX0sZGlyZWN0aXZlczpbVENdLHBpcGVzOltvZV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKG1nLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1lbWJlZGRpbmctcHJvamVjdGlvbiIsdGVtcGxhdGU6YAogICAgPGVtYmVkZGluZy1wcm9qZWN0aW9uLWNvbXBvbmVudAogICAgICBbc2lkZWJhckV4cGFuZGVkXT0ic2lkZWJhckV4cGFuZGVkJCB8IGFzeW5jIgogICAgICAodG9nZ2xlU2lkZWJhckV4cGFuZGVkKT0ib25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKSIKICAgID48L2VtYmVkZGluZy1wcm9qZWN0aW9uLWNvbXBvbmVudD4KICBgLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LG51bGwpfSkoKTtmdW5jdGlvbiBzS3Qobix0KXtpZihuJjEmJih1KDAsImRpdiIsNiksdSgxLCJkaXYiLDcpLEQoMiwibnBtaS1lbWJlZGRpbmctcHJvamVjdGlvbiIsOCksRCgzLCJkaXYiLDkpLHUoNCwiZGl2IiwxMCksRCg1LCJydW5zLXNlbGVjdG9yIiksaCgpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO3FlKCJ3aWR0aCIsZS5zaWRlYmFyV2lkdGgsInB4Iil9fWZ1bmN0aW9uIGxLdChuLHQpe2lmKG4mMSl7bGV0IGU9JHQoKTt1KDAsImRpdiIsMTEpLEEoIm1vdXNlZG93biIsZnVuY3Rpb24oKXtyZXR1cm4gT3QoZSksUygpLnJlc2l6ZUdyYWJiZWQuZW1pdCgpfSksaCgpfX1mdW5jdGlvbiBjS3Qobix0KXtuJjEmJih1KDAsImRpdiIsMTIpLEQoMSwibnBtaS1hbm5vdGF0aW9ucy1saXN0IiwxMyksRCgyLCJucG1pLXNlbGVjdGVkLWFubm90YXRpb25zIiksaCgpKX1mdW5jdGlvbiBtS3Qobix0KXtuJjEmJih1KDAsImRpdiIsMTQpLFQoMSwiWW91IG5lZWQgdG8gc2VsZWN0IGF0IGxlYXN0IG9uZSBydW4uIiksaCgpKX1mdW5jdGlvbiBmS3Qobix0KXtpZihuJjEpe2xldCBlPSR0KCk7dSgwLCJkaXYiLDE1KSx1KDEsImJ1dHRvbiIsMTYpLEEoImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBPdChlKSxTKCkudG9nZ2xlU2lkZWJhckV4cGFuZGVkLmVtaXQoKX0pLEQoMiwibWF0LWljb24iLDE3KSxoKCksaCgpfX12YXIgQUM9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgJCx0aGlzLnJlc2l6ZVRyaWdnZXJlZD1uZXcgJCx0aGlzLnJlc2l6ZUdyYWJiZWQ9bmV3ICQsdGhpcy5yZXNpemVSZWxlYXNlZD1uZXcgJH19O0FDLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEFDKX07QUMuXHUwMjc1Y21wPXooe3R5cGU6QUMsc2VsZWN0b3JzOltbImVtYmVkZGluZ3MtY29tcG9uZW50Il1dLGlucHV0czp7cnVuQWN0aXZlOiJydW5BY3RpdmUiLHNpZGViYXJFeHBhbmRlZDoic2lkZWJhckV4cGFuZGVkIixzaWRlYmFyV2lkdGg6InNpZGViYXJXaWR0aCJ9LG91dHB1dHM6e3RvZ2dsZVNpZGViYXJFeHBhbmRlZDoidG9nZ2xlU2lkZWJhckV4cGFuZGVkIixyZXNpemVUcmlnZ2VyZWQ6InJlc2l6ZVRyaWdnZXJlZCIscmVzaXplR3JhYmJlZDoicmVzaXplR3JhYmJlZCIscmVzaXplUmVsZWFzZWQ6InJlc2l6ZVJlbGVhc2VkIn0sZGVjbHM6OCx2YXJzOjUsY29uc3RzOmZ1bmN0aW9uKCl7bGV0IG47cmV0dXJuIHR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSE9InVuZGVmaW5lZCImJm5nSTE4bkNsb3N1cmVNb2RlP249Z29vZy5nZXRNc2coIlRvZ2dsZSBTaWRlYmFyIik6bj0kbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgdGhlIHNpZGViYXIu4pCfZjYzYjU3OTMyZDE3OWNjYTYyYWM5ZmNhZTYzZGQ3ZjVlNmZhMzg5ZuKQnzQ0ODUwMDkzNDc0NDQ3MDQ4Nzg6VG9nZ2xlIFNpZGViYXJgLFtbMSwiY29udGVudCIsMywibW91c2V1cCIsIm1vdXNlbW92ZSJdLFsiY2xhc3MiLCJzaWRlYmFyLWNvbnRhaW5lciIsMywid2lkdGgiLDQsIm5nSWYiXSxbImNsYXNzIiwiZ3JhYmJlciIsMywibW91c2Vkb3duIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImFuYWx5c2lzLWNvbnRhaW5lciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1J1biIsIiJdLFsiY2xhc3MiLCJzaWRlLXRvZ2dsZSIsNCwibmdJZiJdLFsxLCJzaWRlYmFyLWNvbnRhaW5lciJdLFsxLCJzaWRlYmFyLWNvbnRlbnRzIl0sWzEsImVtYmVkZGluZy1wcm9qZWN0aW9uIl0sWzEsInJ1bi1kaXZpZGVyIl0sWzEsInJ1bi1zZWxlY3RvciJdLFsxLCJncmFiYmVyIiwzLCJtb3VzZWRvd24iXSxbMSwiYW5hbHlzaXMtY29udGFpbmVyIl0sWzEsImFubm90YXRpb25zLWxpc3QiXSxbMSwibm9SdW4iXSxbMSwic2lkZS10b2dnbGUiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImFyaWEtbGFiZWwiLG4sMywiY2xpY2siXSxbInN2Z0ljb24iLCJjaGV2cm9uX3JpZ2h0XzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7aWYodCYxJiYoRCgwLCJucG1pLWRhdGEtc2VsZWN0aW9uIiksdSgxLCJkaXYiLDApLEEoIm1vdXNldXAiLGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVzaXplUmVsZWFzZWQuZW1pdCgpfSkoIm1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7cmV0dXJuIGUucmVzaXplVHJpZ2dlcmVkLmVtaXQoaSl9KSxrKDIsc0t0LDYsMiwiZGl2IiwxKSxrKDMsbEt0LDEsMCwiZGl2IiwyKSxrKDQsY0t0LDMsMCwiZGl2IiwzKSxrKDUsbUt0LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNCx4biksaCgpLGsoNyxmS3QsMywwLCJkaXYiLDUpKSx0JjIpe2xldCBvPXdlKDYpO3goMiksUCgibmdJZiIsZS5zaWRlYmFyRXhwYW5kZWQpLHgoMSksUCgibmdJZiIsZS5zaWRlYmFyRXhwYW5kZWQpLHgoMSksUCgibmdJZiIsZS5ydW5BY3RpdmU9PT0hMCkoIm5nSWZFbHNlIixvKSx4KDMpLFAoIm5nSWYiLCFlLnNpZGViYXJFeHBhbmRlZCl9fSxkaXJlY3RpdmVzOltJbSxYdCxtZyxFbCxIbSxGbSxmbixYZV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCByZ2JhKDAsMCwwLDApfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDZweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE5ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzOTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA3cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDAzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA4cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExN2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzNDEzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE2ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE1ZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTRlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3M2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzJlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM2MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7d2hpdGUtc3BhY2U6bm93cmFwO291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjpyZ2JhKDAsMCwwLDApO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc30ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4OjE7bWluLWhlaWdodDowcHg7d2lkdGg6MTAwJX0uc2lkZWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0uc2lkZWJhci1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTttaW4td2lkdGg6MTUwcHh9LmFuYWx5c2lzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXg6MSAxO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0ucnVuLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uZW1iZWRkaW5nLXByb2plY3Rpb25bX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9LnNpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6M3B4O2JvdHRvbToxMHB4O2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MzBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2xlZnQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDozMHB4fS5ydW4tZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMik7Y29udGVudDoiIjtoZWlnaHQ6MXB4O292ZXJmbG93OmhpZGRlbn0uZ3JhYmJlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMik7Y29udGVudDoiIjtjdXJzb3I6ZXctcmVzaXplO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjt3aWR0aDozcHh9LmFubm90YXRpb25zLWxpc3RbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxO21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQUMsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJlbWJlZGRpbmdzLWNvbXBvbmVudCIsdGVtcGxhdGVVcmw6Ii4vZW1iZWRkaW5nc19jb21wb25lbnQubmcuaHRtbCIsc3R5bGVVcmxzOlsiLi9lbWJlZGRpbmdzX2NvbXBvbmVudC5jc3MiXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLHtydW5BY3RpdmU6W3t0eXBlOmR9XSxzaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOmR9XSxzaWRlYmFyV2lkdGg6W3t0eXBlOmR9XSx0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6W3t0eXBlOkJ9XSxyZXNpemVUcmlnZ2VyZWQ6W3t0eXBlOkJ9XSxyZXNpemVHcmFiYmVkOlt7dHlwZTpCfV0scmVzaXplUmVsZWFzZWQ6W3t0eXBlOkJ9XX0pfSkoKTt2YXIgZmc9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVuQWN0aXZlJD10aGlzLnN0b3JlLnBpcGUoemUoTHIpKS5waXBlKEcoZT0+ZT9bLi4uZS52YWx1ZXMoKV0uaW5jbHVkZXMoITApOiExKSksdGhpcy5zaWRlYmFyRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZSh6ZSh1NykpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnBpcGUoemUoJGh0KSksdGhpcy5yZXNpemluZz0hMX1vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goSVMoKSl9b25SZXNpemVUcmlnZ2VyZWQodCl7dGhpcy5yZXNpemluZyYmdGhpcy5zdG9yZS5kaXNwYXRjaChsNyh7c2lkZWJhcldpZHRoOnQuY2xpZW50WH0pKX1vblJlc2l6ZUdyYWJiZWQoKXt0aGlzLnJlc2l6aW5nPSEwfW9uUmVzaXplUmVsZWFzZWQoKXt0aGlzLnJlc2l6aW5nPSExfX07ZmcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZmcpKHYoc3QpKX07ZmcuXHUwMjc1Y21wPXooe3R5cGU6Zmcsc2VsZWN0b3JzOltbIm5wbWktZW1iZWRkaW5ncyJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJydW5BY3RpdmUiLCJzaWRlYmFyRXhwYW5kZWQiLCJzaWRlYmFyV2lkdGgiLCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLCJyZXNpemVUcmlnZ2VyZWQiLCJyZXNpemVHcmFiYmVkIiwicmVzaXplUmVsZWFzZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImVtYmVkZGluZ3MtY29tcG9uZW50IiwwKSxBKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKCJyZXNpemVUcmlnZ2VyZWQiLGZ1bmN0aW9uKGkpe3JldHVybiBlLm9uUmVzaXplVHJpZ2dlcmVkKGkpfSkoInJlc2l6ZUdyYWJiZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZXNpemVHcmFiYmVkKCl9KSgicmVzaXplUmVsZWFzZWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGUub25SZXNpemVSZWxlYXNlZCgpfSksWCgxLCJhc3luYyIpLFgoMiwiYXN5bmMiKSxYKDMsImFzeW5jIiksaCgpKSx0JjImJlAoInJ1bkFjdGl2ZSIsUSgxLDMsZS5ydW5BY3RpdmUkKSkoInNpZGViYXJFeHBhbmRlZCIsUSgyLDUsZS5zaWRlYmFyRXhwYW5kZWQkKSkoInNpZGViYXJXaWR0aCIsUSgzLDcsZS5zaWRlYmFyV2lkdGgkKSl9LGRpcmVjdGl2ZXM6W0FDXSxwaXBlczpbb2VdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhmZyxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6Im5wbWktZW1iZWRkaW5ncyIsdGVtcGxhdGU6YAogICAgPGVtYmVkZGluZ3MtY29tcG9uZW50CiAgICAgIFtydW5BY3RpdmVdPSJydW5BY3RpdmUkIHwgYXN5bmMiCiAgICAgIFtzaWRlYmFyRXhwYW5kZWRdPSJzaWRlYmFyRXhwYW5kZWQkIHwgYXN5bmMiCiAgICAgIFtzaWRlYmFyV2lkdGhdPSJzaWRlYmFyV2lkdGgkIHwgYXN5bmMiCiAgICAgICh0b2dnbGVTaWRlYmFyRXhwYW5kZWQpPSJvblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpIgogICAgICAocmVzaXplVHJpZ2dlcmVkKT0ib25SZXNpemVUcmlnZ2VyZWQoJGV2ZW50KSIKICAgICAgKHJlc2l6ZUdyYWJiZWQpPSJvblJlc2l6ZUdyYWJiZWQoKSIKICAgICAgKHJlc2l6ZVJlbGVhc2VkKT0ib25SZXNpemVSZWxlYXNlZCgpIgogICAgPjwvZW1iZWRkaW5ncy1jb21wb25lbnQ+CiAgYCxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7ZnVuY3Rpb24gZ0t0KG4sdCl7biYxJiZEKDAsIm5wbWktaW5hY3RpdmUtdmlldyIpfWZ1bmN0aW9uIHVLdChuLHQpe24mMSYmRCgwLCJucG1pLW1haW4iKX1mdW5jdGlvbiBoS3Qobix0KXtuJjEmJkQoMCwibnBtaS1lbWJlZGRpbmdzIil9ZnVuY3Rpb24gX0t0KG4sdCl7aWYobiYxJiYoaygwLHVLdCwxLDAsIm5wbWktbWFpbiIsMyksaygxLGhLdCwxLDAsIm5wbWktZW1iZWRkaW5ncyIsMykpLG4mMil7bGV0IGU9UygpO1AoIm5nSWYiLGUuYWN0aXZlVmlldz09PWUuVmlld0FjdGl2ZS5ERUZBVUxUKSx4KDEpLFAoIm5nSWYiLGUuYWN0aXZlVmlldz09PWUuVmlld0FjdGl2ZS5FTUJFRERJTkdTKX19dmFyIERDPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5WaWV3QWN0aXZlPVp4fX07REMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8REMpfTtEQy5cdTAyNzVjbXA9eih7dHlwZTpEQyxzZWxlY3RvcnM6W1sibnBtaS1jb21wb25lbnQiXV0saW5wdXRzOntydW5zOiJydW5zIixhY3RpdmVWaWV3OiJhY3RpdmVWaWV3In0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwibnBtaS1jb250YWluZXIiXSxbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJkYXRhQXZhaWxhYmxlIiwiIl0sWzQsIm5nSWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXtpZih0JjEmJih1KDAsImRpdiIsMCksaygxLGdLdCwxLDAsIm5wbWktaW5hY3RpdmUtdmlldyIsMSksaygyLF9LdCwyLDIsIm5nLXRlbXBsYXRlIixudWxsLDIseG4pLGgoKSksdCYyKXtsZXQgbz13ZSgzKTt4KDEpLFAoIm5nSWYiLGUucnVucy5zaXplPT09MCkoIm5nSWZFbHNlIixvKX19LGRpcmVjdGl2ZXM6W1h0LFpkLGNnLGZnXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJX0ubnBtaS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxfSJdLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKERDLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoibnBtaS1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL25wbWlfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbIi4vbnBtaV9jb21wb25lbnQuY3NzIl0sY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCx7cnVuczpbe3R5cGU6ZH1dLGFjdGl2ZVZpZXc6W3t0eXBlOmR9XX0pfSkoKTt2YXIgRGY9Y2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVucyQ9dGhpcy5zdG9yZS5waXBlKHplKExyKSksdGhpcy5hY3RpdmVWaWV3JD10aGlzLnN0b3JlLnBpcGUoemUoS2h0KSl9bmdPbkluaXQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEdGKCkpfX07RGYuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RGYpKHYoc3QpKX07RGYuXHUwMjc1Y21wPXooe3R5cGU6RGYsc2VsZWN0b3JzOltbIm5wbWkiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywicnVucyIsImFjdGl2ZVZpZXciXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsIm5wbWktY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpKSx0JjImJlAoInJ1bnMiLFEoMSwyLGUucnVucyQpKSgiYWN0aXZlVmlldyIsUSgyLDQsZS5hY3RpdmVWaWV3JCkpfSxkaXJlY3RpdmVzOltEQ10scGlwZXM6W29lXSxlbmNhcHN1bGF0aW9uOjJ9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRGYsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJucG1pIix0ZW1wbGF0ZTpgCiAgICA8bnBtaS1jb21wb25lbnQKICAgICAgW3J1bnNdPSJydW5zJCB8IGFzeW5jIgogICAgICBbYWN0aXZlVmlld109ImFjdGl2ZVZpZXckIHwgYXN5bmMiCiAgICA+PC9ucG1pLWNvbXBvbmVudD4KICBgfV19XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpzdH1dfSxudWxsKX0pKCk7dmFyIHZoPWNsYXNze307dmguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8dmgpfTt2aC5cdTAyNzVtb2Q9cSh7dHlwZTp2aH0pO3ZoLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxXbixpaSxzZSxNZV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHZoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3NnLFNDXSxpbXBvcnRzOltZLFduLGlpLHNlLE1lXSxleHBvcnRzOltzZ119XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQodmgse2RlY2xhcmF0aW9uczpbc2csU0NdLGltcG9ydHM6W1ksV24saWksc2UsTWVdLGV4cG9ydHM6W3NnXX0pfSkoKTt2YXIgd2g9Y2xhc3N7fTt3aC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHx3aCl9O3doLlx1MDI3NW1vZD1xKHt0eXBlOndofSk7d2guXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLFduLHNlLGFpXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMod2gsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbeEMsbmddLGltcG9ydHM6W1ksV24sc2UsYWldLGV4cG9ydHM6W25nXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldCh3aCx7ZGVjbGFyYXRpb25zOlt4QyxuZ10saW1wb3J0czpbWSxXbixzZSxhaV0sZXhwb3J0czpbbmddfSl9KSgpO3ZhciBTaD1jbGFzc3t9O1NoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFNoKX07U2guXHUwMjc1bW9kPXEoe3R5cGU6U2h9KTtTaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksV24sc2UsTWUseGgsd2hdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhTaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOlt2QyxvZ10saW1wb3J0czpbWSxXbixzZSxNZSx4aCx3aF0sZXhwb3J0czpbb2ddfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFNoLHtkZWNsYXJhdGlvbnM6W3ZDLG9nXSxpbXBvcnRzOltZLFduLHNlLE1lLHhoLHdoXSxleHBvcnRzOltvZ119KX0pKCk7dmFyIFJoPWNsYXNze307UmguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8UmgpfTtSaC5cdTAyNzVtb2Q9cSh7dHlwZTpSaH0pO1JoLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxXbixpaSxzZV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFJoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3dDLHJnXSxpbXBvcnRzOltZLFduLGlpLHNlXSxleHBvcnRzOltyZ119XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoUmgse2RlY2xhcmF0aW9uczpbd0MscmddLGltcG9ydHM6W1ksV24saWksc2VdLGV4cG9ydHM6W3JnXX0pfSkoKTt2YXIgRWg9Y2xhc3N7fTtFaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxFaCl9O0VoLlx1MDI3NW1vZD1xKHt0eXBlOkVofSk7RWguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRWgsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbaWddLGltcG9ydHM6W1ldLGV4cG9ydHM6W2lnXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChFaCx7ZGVjbGFyYXRpb25zOltpZ10saW1wb3J0czpbWV0sZXhwb3J0czpbaWddfSl9KSgpO3ZhciBraD1jbGFzc3t9O2toLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGtoKX07a2guXHUwMjc1bW9kPXEoe3R5cGU6a2h9KTtraC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW0VoXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoa2gsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbYWddLGltcG9ydHM6W0VoXSxleHBvcnRzOlthZ119XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoa2gse2RlY2xhcmF0aW9uczpbYWddLGltcG9ydHM6W0VoXSxleHBvcnRzOlthZ119KX0pKCk7dmFyIERjPWNsYXNze307RGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8RGMpfTtEYy5cdTAyNzVtb2Q9cSh7dHlwZTpEY30pO0RjLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxTaCxSaCxraCx6aSx2aF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKERjLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1JDLEhtXSxpbXBvcnRzOltZLFNoLFJoLGtoLHppLHZoXSxleHBvcnRzOltIbV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoRGMse2RlY2xhcmF0aW9uczpbUkMsSG1dLGltcG9ydHM6W1ksU2gsUmgsa2gsemksdmhdLGV4cG9ydHM6W0htXX0pfSkoKTt2YXIgTmg9Y2xhc3N7fTtOaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxOaCl9O05oLlx1MDI3NW1vZD1xKHt0eXBlOk5ofSk7TmguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLFduLHNlLE1lXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoTmgsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbVEMsbWddLGltcG9ydHM6W1ksV24sc2UsTWVdLGV4cG9ydHM6W21nXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChOaCx7ZGVjbGFyYXRpb25zOltUQyxtZ10saW1wb3J0czpbWSxXbixzZSxNZV0sZXhwb3J0czpbbWddfSl9KSgpO3ZhciBUaD1jbGFzc3t9O1RoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFRoKX07VGguXHUwMjc1bW9kPXEoe3R5cGU6VGh9KTtUaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksV24sZHMsc2UsUnMsdWNdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhUaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltiQyxLZF0saW1wb3J0czpbWSxXbixkcyxzZSxScyx1Y10sZXhwb3J0czpbS2RdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFRoLHtkZWNsYXJhdGlvbnM6W2JDLEtkXSxpbXBvcnRzOltZLFduLGRzLHNlLFJzLHVjXSxleHBvcnRzOltLZF19KX0pKCk7dmFyIEFoPWNsYXNze307QWguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8QWgpfTtBaC5cdTAyNzVtb2Q9cSh7dHlwZTpBaH0pO0FoLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxSc11dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEFoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0pkXSxpbXBvcnRzOltZLFJzXSxleHBvcnRzOltKZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoQWgse2RlY2xhcmF0aW9uczpbSmRdLGltcG9ydHM6W1ksUnNdLGV4cG9ydHM6W0pkXX0pfSkoKTt2YXIgRGg9Y2xhc3N7fTtEaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxEaCl9O0RoLlx1MDI3NW1vZD1xKHt0eXBlOkRofSk7RGguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLFJzLFRoLEFoXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRGgsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbT0MsJGRdLGltcG9ydHM6W1ksUnMsVGgsQWhdLGV4cG9ydHM6WyRkXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChEaCx7ZGVjbGFyYXRpb25zOltPQywkZF0saW1wb3J0czpbWSxScyxUaCxBaF0sZXhwb3J0czpbJGRdfSl9KSgpO3ZhciBJaD1jbGFzc3t9O0loLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEloKX07SWguXHUwMjc1bW9kPXEoe3R5cGU6SWh9KTtJaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksc2UsYWksX3NdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOlt1QyxYZF0saW1wb3J0czpbWSxzZSxhaSxfc10sZXhwb3J0czpbWGRdfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEloLHtkZWNsYXJhdGlvbnM6W3VDLFhkXSxpbXBvcnRzOltZLHNlLGFpLF9zXSxleHBvcnRzOltYZF19KX0pKCk7dmFyIHpoPWNsYXNze307emguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8emgpfTt6aC5cdTAyNzVtb2Q9cSh7dHlwZTp6aH0pO3poLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxzZSxNZV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHpoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2hDLFFkXSxpbXBvcnRzOltZLHNlLE1lXSxleHBvcnRzOltRZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoemgse2RlY2xhcmF0aW9uczpbaEMsUWRdLGltcG9ydHM6W1ksc2UsTWVdLGV4cG9ydHM6W1FkXX0pfSkoKTt2YXIgSWM9Y2xhc3N7fTtJYy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxJYyl9O0ljLlx1MDI3NW1vZD1xKHt0eXBlOkljfSk7SWMuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLEloLERoLHpoXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoSWMsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbSW1dLGltcG9ydHM6W1ksSWgsRGgsemhdLGV4cG9ydHM6W0ltXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChJYyx7ZGVjbGFyYXRpb25zOltJbV0saW1wb3J0czpbWSxJaCxEaCx6aF0sZXhwb3J0czpbSW1dfSl9KSgpO3ZhciBIaD1jbGFzc3t9O0hoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEhoKX07SGguXHUwMjc1bW9kPXEoe3R5cGU6SGh9KTtIaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhIaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltFQyxsZ10saW1wb3J0czpbWV0sZXhwb3J0czpbbGddfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEhoLHtkZWNsYXJhdGlvbnM6W0VDLGxnXSxpbXBvcnRzOltZXSxleHBvcnRzOltsZ119KX0pKCk7dmFyIHpjPWNsYXNze307emMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8emMpfTt6Yy5cdTAyNzVtb2Q9cSh7dHlwZTp6Y30pO3pjLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxzZSxNZSxIaF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHpjLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W2tDLEZtXSxpbXBvcnRzOltZLHNlLE1lLEhoXSxleHBvcnRzOltGbV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoemMse2RlY2xhcmF0aW9uczpba0MsRm1dLGltcG9ydHM6W1ksc2UsTWUsSGhdLGV4cG9ydHM6W0ZtXX0pfSkoKTt2YXIgRmg9Y2xhc3N7fTtGaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxGaCl9O0ZoLlx1MDI3NW1vZD1xKHt0eXBlOkZofSk7RmguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLFduLGlpLHNlLFBzLEljLE1lLERjLHpjLE5oXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoRmgsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbQUMsZmddLGltcG9ydHM6W1ksV24saWksc2UsUHMsSWMsTWUsRGMsemMsTmhdLGV4cG9ydHM6W2ZnXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChGaCx7ZGVjbGFyYXRpb25zOltBQyxmZ10saW1wb3J0czpbWSxXbixpaSxzZSxQcyxJYyxNZSxEYyx6YyxOaF0sZXhwb3J0czpbZmddfSl9KSgpO3ZhciBMaD1jbGFzc3t9O0xoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fExoKX07TGguXHUwMjc1bW9kPXEoe3R5cGU6TGh9KTtMaC5cdTAyNzVpbmo9Vyh7fSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKExoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W1pkXSxleHBvcnRzOltaZF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoTGgse2RlY2xhcmF0aW9uczpbWmRdLGV4cG9ydHM6W1pkXX0pfSkoKTt2YXIgQmg9Y2xhc3N7fTtCaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxCaCl9O0JoLlx1MDI3NW1vZD1xKHt0eXBlOkJofSk7QmguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLFduLE1lLHNlXV19KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoQmgsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbUEMsdGddLGltcG9ydHM6W1ksV24sTWUsc2VdLGV4cG9ydHM6W3RnXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChCaCx7ZGVjbGFyYXRpb25zOltQQyx0Z10saW1wb3J0czpbWSxXbixNZSxzZV0sZXhwb3J0czpbdGddfSl9KSgpO3ZhciBWaD1jbGFzc3t9O1ZoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFZoKX07VmguXHUwMjc1bW9kPXEoe3R5cGU6Vmh9KTtWaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksV24sc2UsTWUsQmhdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhWaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOlt5QyxlZ10saW1wb3J0czpbWSxXbixzZSxNZSxCaF0sZXhwb3J0czpbZWddfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFZoLHtkZWNsYXJhdGlvbnM6W3lDLGVnXSxpbXBvcnRzOltZLFduLHNlLE1lLEJoXSxleHBvcnRzOltlZ119KX0pKCk7dmFyIGpoPWNsYXNze307amguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8amgpfTtqaC5cdTAyNzVtb2Q9cSh7dHlwZTpqaH0pO2poLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxXbixpaSxzZSxQcyxJYyxNZSxWaCxEYyx6Y11dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGpoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W05DLGNnXSxpbXBvcnRzOltZLFduLGlpLHNlLFBzLEljLE1lLFZoLERjLHpjXSxleHBvcnRzOltjZ119XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoamgse2RlY2xhcmF0aW9uczpbTkMsY2ddLGltcG9ydHM6W1ksV24saWksc2UsUHMsSWMsTWUsVmgsRGMsemNdLGV4cG9ydHM6W2NnXX0pfSkoKTt2YXIgVWg9Y2xhc3N7fTtVaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxVaCl9O1VoLlx1MDI3NW1vZD1xKHt0eXBlOlVofSk7VWguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tZLExoLGpoLEZoLE9oLGNvLmZvckZlYXR1cmUoSFMsa1opLEhvLmZvckZlYXR1cmUoW21iXSkscmkuZm9yUGx1Z2luKCJucG1pIixEZildXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhVaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltEQyxEZl0saW1wb3J0czpbWSxMaCxqaCxGaCxPaCxjby5mb3JGZWF0dXJlKEhTLGtaKSxIby5mb3JGZWF0dXJlKFttYl0pLHJpLmZvclBsdWdpbigibnBtaSIsRGYpXSxleHBvcnRzOltEZl0sZW50cnlDb21wb25lbnRzOltEZl19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoVWgse2RlY2xhcmF0aW9uczpbREMsRGZdLGltcG9ydHM6W1ksTGgsamgsRmgsT2gsTm8scWkscmldLGV4cG9ydHM6W0RmXX0pfSkoKTt2YXIgcGc9Y2xhc3N7fTtwZy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxwZyl9O3BnLlx1MDI3NXByb3Y9UHQoe3Rva2VuOnBnLGZhY3Rvcnk6cGcuXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHBnLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBZaD1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dCx0aGlzLmh0dHBQYXRoUHJlZml4PSJkYXRhL3BsdWdpbi90ZXh0X3YyIn1mZXRjaFJ1blRvVGFnKCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3RhZ3MiKS5waXBlKEcodD0+e2xldCBlPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKFtvLGldKT0+e2Uuc2V0KG8saSl9KSxlfSkpfWZldGNoVGV4dERhdGEodCxlKXtsZXQgbz1uZXcgVVJMU2VhcmNoUGFyYW1zKHtydW46dCx0YWc6ZX0pO3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrYC90ZXh0PyR7by50b1N0cmluZygpfWApLnBpcGUoRyhpPT5pLm1hcChhPT4oe29yaWdpbmFsU2hhcGU6YS5vcmlnaW5hbF9zaGFwZSxzdGVwOmEuc3RlcCxzdHJpbmdBcnJheTphLnN0cmluZ19hcnJheSx3YWxsVGltZUluTXM6YS53YWxsX3RpbWUqMWUzLHRydW5jYXRlZDphLnRydW5jYXRlZH0pKSkpfX07WWguXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8WWgpKEkoYWEpKX07WWguXHUwMjc1cHJvdj1QdCh7dG9rZW46WWgsZmFjdG9yeTpZaC5cdTAyNzVmYWN9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoWWgsW3t0eXBlOlN0fV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6YWF9XX0sbnVsbCl9KSgpO3ZhciBHaD1jbGFzc3t9O0doLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fEdoKX07R2guXHUwMjc1bW9kPXEoe3R5cGU6R2h9KTtHaC5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOltZaCx7cHJvdmlkZTpwZyx1c2VFeGlzdGluZzpZaH1dLGltcG9ydHM6W1tyYV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEdoLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltyYV0scHJvdmlkZXJzOltZaCx7cHJvdmlkZTpwZyx1c2VFeGlzdGluZzpZaH1dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KEdoLHtpbXBvcnRzOltyYV19KX0pKCk7dmFyIGdfdD1OdCgiW1RleHRdIFRleHQgUGx1Z2luIExvYWRlZCIpLHVfdD1OdCgiW1RleHRdIFJ1bnMgVG8gVGFnIExvYWRlZCIsYmUoKSksaF90PU50KCJbVGV4dF0gVGFnIEdyb3VwIFZpc2liaWxpdHkgQ2hhbmdlZCIsYmUoKSksX190PU50KCJbVGV4dF0gVGV4dCBEYXRhIExvYWRlZCBMb2FkZWQiLGJlKCkpO3ZhciBYND0idGV4dCI7dmFyIEhaPUJhKFg0KSxFYW49Y3QoSFosbj0+bi5ydW5Ub1RhZ3MpLENfdD1jdChIWixuPT57bGV0IHQ9bmV3IFNldCxlPW5ldyBTZXQ7Zm9yKGxldCBvIG9mIG4udmlzaWJsZVJ1blRhZ3MudmFsdWVzKCkpZm9yKGxldCBpIG9mIG8pe2xldCBhPUpTT04uc3RyaW5naWZ5KGkpO3QuaGFzKGEpfHwodC5hZGQoYSksZS5hZGQoaSkpfXJldHVyblsuLi5lXX0pLE1fdD1jdChIWiwobix0KT0+e2xldCBlPW4uZGF0YS5nZXQodC5ydW4pO3JldHVybiBlJiZlLmdldCh0LnRhZyl8fG51bGx9KTt2YXIgZmI9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPWUsdGhpcy5kYXRhU291cmNlPW8sdGhpcy5sb2FkUnVuVG9UYWdzJD1NYSgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKEZvKGdfdCksdGkoKCk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFJ1blRvVGFnKCkucGlwZShhbihpPT57dGhpcy5zdG9yZS5kaXNwYXRjaCh1X3Qoe3J1blRvVGFnczppfSkpfSksRygoKT0+e30pKSkpLHtkaXNwYXRjaDohMX0pLHRoaXMubG9hZERhdGEkPU1hKCgpPT57bGV0IGk9dGhpcy5hY3Rpb25zJC5waXBlKEZvKGhfdCksdGkoKHt2aXNpYmxlVGV4dENhcmRzOnJ9KT0+e2xldCBzPXIubWFwKCh7cnVuOmwsdGFnOmN9KT0+dGhpcy5zdG9yZS5zZWxlY3QoTV90LHtydW46bCx0YWc6Y30pLnBpcGUoWTcoKSxHKG09Pih7cnVuOmwsdGFnOmMsdGV4dERhdGE6bX0pKSkpO3JldHVybiBnYShzKS5waXBlKEcobD0+bC5maWx0ZXIoKHt0ZXh0RGF0YTpjfSk9PmM9PT1udWxsKS5tYXAoKHtydW46Yyx0YWc6bX0pPT4oe3J1bjpjLHRhZzptfSkpKSl9KSksYT10aGlzLmFjdGlvbnMkLnBpcGUoRm8obXAsS20pLE9uKHRoaXMuc3RvcmUuc2VsZWN0KENfdCkpLEcoKFsscl0pPT5yKSk7cmV0dXJuIHluKGksYSkucGlwZShVbihyPT5nYShyLm1hcChzPT50aGlzLmZldGNoVGV4dERhdGEocykpKSkpfSx7ZGlzcGF0Y2g6ITF9KX1mZXRjaFRleHREYXRhKHQpe2xldHtydW46ZSx0YWc6b309dDtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoVGV4dERhdGEoZSxvKS5waXBlKGFuKGk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKF9fdCh7cnVuOmUsdGFnOm8sc3RlcERhdGE6aX0pKX0pLEcoKCk9Pnt9KSl9fTtmYi5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxmYikoSShUbyksSShzdCksSShwZykpfTtmYi5cdTAyNzVwcm92PVB0KHt0b2tlbjpmYixmYWN0b3J5OmZiLlx1MDI3NWZhY30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhmYixbe3R5cGU6U3R9XSxmdW5jdGlvbigpe3JldHVyblt7dHlwZTpUb30se3R5cGU6c3R9LHt0eXBlOnBnfV19LG51bGwpfSkoKTt2YXIgYkt0PVt7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDowLHN0cmluZ0FycmF5OltbImZvbyIsImJhciIsImJheiJdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTZlNSx0cnVuY2F0ZWQ6ITF9LHtvcmlnaW5hbFNoYXBlOlszXSxzdGVwOjEsc3RyaW5nQXJyYXk6W1siZm9vIiwiYmF6Il1dLHdhbGxUaW1lSW5NczoxNTc3ODY1NjAxZTMsdHJ1bmNhdGVkOiExfV0sT0t0PVt7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDowLHN0cmluZ0FycmF5OltbYFdlIGNvbmR1Y3RlZCBhbiBleHBlcmltZW50IGFuZCBmb3VuZCB0aGUgZm9sbG93aW5nIGRhdGE6CgpQb3VuZHMgb2YgY2hvY29sYXRlIHwgSGFwcGluZXNzCi0tLXwtLS0KMCB8IDEKMSB8IDQKMiB8IDkKMyB8IDE2CjQgfCAyNQo1IHwgMzYKNiB8IDQ5CjcgfCA2NAo4IHwgODEKOSB8IDEwMAoxMCB8IDEyMWBdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTZlNSx0cnVuY2F0ZWQ6ITF9LHtvcmlnaW5hbFNoYXBlOlszXSxzdGVwOjEsc3RyaW5nQXJyYXk6W1siXHhENyIsIioqMCoqIiwiKioxKioiLCIqKjIqKiIsIioqMyoqIiwiKio0KioiLCIqKjUqKiJdLFsiKiowKioiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiXSxbIioqMSoqIiwiMCIsIjEiLCIyIiwiMyIsIjQiLCI1Il0sWyIqKjIqKiIsIjAiLCIyIiwiNCIsIjYiLCI4IiwiMTAiXSxbIioqMyoqIiwiMCIsIjMiLCI2IiwiOSIsIjEyIiwiMTUiXSxbIioqNCoqIiwiMCIsIjQiLCI4IiwiMTIiLCIxNiIsIjIwIl0sWyIqKjUqKiIsIjAiLCI1IiwiMTAiLCIxNSIsIjIwIiwiMjUiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2MDFlMyx0cnVuY2F0ZWQ6ITF9XSxQS3Q9e3J1blRvVGFnczpuZXcgTWFwKFtbInJ1bjEiLFsiYS9iIiwiYS9jIl1dLFsicnVuMiIsWyJhL2IiLCJhL2QiXV0sWyJydW4zIixbImMiLCJhL2IiXV1dKSxkYXRhOm5ldyBNYXAoW1sicnVuMSIsbmV3IE1hcChbWyJhL2IiLGJLdF0sWyJhL2MiLE9LdF1dKV1dKSx2aXNpYmxlUnVuVGFnczpuZXcgTWFwfSx5S3Q9eGEoUEt0KTtmdW5jdGlvbiBGWihuLHQpe3JldHVybiB5S3Qobix0KX12YXIgTG09Y2xhc3N7fTtMbS5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxMbSl9O0xtLlx1MDI3NWNtcD16KHt0eXBlOkxtLHNlbGVjdG9yczpbWyJ0ZXh0LWRhc2hib2FyZCJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbih0LGUpe3QmMSYmVCgwLCIgVGhpcyBpcyB0aGUgdGV4dCBkYXNoYm9hcmQgIil9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhMbSxbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRleHQtZGFzaGJvYXJkIix0ZW1wbGF0ZToiIFRoaXMgaXMgdGhlIHRleHQgZGFzaGJvYXJkICIsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sbnVsbCxudWxsKX0pKCk7dmFyIFdoPWNsYXNze307V2guXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8V2gpfTtXaC5cdTAyNzVtb2Q9cSh7dHlwZTpXaH0pO1doLlx1MDI3NWluaj1XKHt9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoV2gsW3t0eXBlOlosYXJnczpbe2RlY2xhcmF0aW9uczpbTG1dLGV4cG9ydHM6W0xtXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChXaCx7ZGVjbGFyYXRpb25zOltMbV0sZXhwb3J0czpbTG1dfSl9KSgpO3ZhciBxaD1jbGFzc3t9O3FoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHFoKX07cWguXHUwMjc1bW9kPXEoe3R5cGU6cWh9KTtxaC5cdTAyNzVpbmo9Vyh7aW1wb3J0czpbW1ksV2gscmkuZm9yUGx1Z2luKCJ0ZXh0X3YyIixMbSksR2gsY28uZm9yRmVhdHVyZShYNCxGWiksSG8uZm9yRmVhdHVyZShbZmJdKV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKHFoLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOltZLFdoLHJpLmZvclBsdWdpbigidGV4dF92MiIsTG0pLEdoLGNvLmZvckZlYXR1cmUoWDQsRlopLEhvLmZvckZlYXR1cmUoW2ZiXSldLGVudHJ5Q29tcG9uZW50czpbTG1dfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KHFoLHtpbXBvcnRzOltZLFdoLHJpLEdoLE5vLHFpXX0pfSkoKTt2YXIgWmg9Y2xhc3N7fTtaaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxaaCl9O1poLlx1MDI3NW1vZD1xKHt0eXBlOlpofSk7WmguXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1t6dSxNaCxVaCxxaF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKFpoLFt7dHlwZTpaLGFyZ3M6W3tpbXBvcnRzOlt6dSxNaCxVaCxxaF19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoWmgse2ltcG9ydHM6W3p1LE1oLFVoLHFoXX0pfSkoKTt2YXIgSng7KGZ1bmN0aW9uKG4pe24uQ1VTVE9NX0VMRU1FTlQ9IkNVU1RPTV9FTEVNRU5UIixuLklGUkFNRT0iSUZSQU1FIixuLk5HX0NPTVBPTkVOVD0iTkdfQ09NUE9ORU5UIixuLk5PTkU9Ik5PTkUifSkoSnh8fChKeD17fSkpO3ZhciB4S3Q9WyJwbHVnaW5Db250YWluZXIiXSx2S3Q9WyJuZ1BsdWdpbkNvbnRhaW5lciJdO2Z1bmN0aW9uIHdLdChuLHQpe24mMSYmTW8oMCl9ZnVuY3Rpb24gU0t0KG4sdCl7aWYobiYxJiYoRW4oMCksaygxLHdLdCwxLDAsIm5nLWNvbnRhaW5lciIsOSksa24oKSksbiYyKXtsZXQgZT1TKDIpLG89d2UoNik7eCgxKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixlLmVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGU/ZS5lbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOm8pfX1mdW5jdGlvbiBSS3Qobix0KXtuJjEmJk1vKDApfWZ1bmN0aW9uIEVLdChuLHQpe2lmKG4mMSYmKEVuKDApLGsoMSxSS3QsMSwwLCJuZy1jb250YWluZXIiLDkpLGtuKCkpLG4mMil7bGV0IGU9UygyKSxvPXdlKDYpO3goMSksUCgibmdUZW1wbGF0ZU91dGxldCIsZS5lbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGU/ZS5lbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGU6byl9fWZ1bmN0aW9uIGtLdChuLHQpe24mMSYmTW8oMCl9ZnVuY3Rpb24gTkt0KG4sdCl7aWYobiYxJiYoRW4oMCksaygxLGtLdCwxLDAsIm5nLWNvbnRhaW5lciIsOSksa24oKSksbiYyKXtsZXQgZT1TKDIpLG89d2UoNik7eCgxKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixlLmVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZT9lLmVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZTpvKX19ZnVuY3Rpb24gVEt0KG4sdCl7aWYobiYxJiYoRW4oMCksdSgxLCJoMyIsMTApLFQoMiwiIFRoZXJlXHUyMDE5cyBubyBkYXNoYm9hcmQgYnkgdGhlIG5hbWUgb2YgXHUyMDFDIiksdSgzLCJjb2RlIiksVCg0KSxoKCksVCg1LCJcdTIwMUQuICIpLGgoKSx1KDYsInAiKSxUKDcsIllvdSBjYW4gc2VsZWN0IGEgZGFzaGJvYXJkIGZyb20gdGhlIGxpc3QgYWJvdmUuIiksaCgpLHUoOCwicCIpLE1vKDksMTEpLGgoKSxrbigpKSxuJjIpe2xldCBlPVMoMiksbz13ZSg4KTt4KDQpLEllKGUuYWN0aXZlUGx1Z2luSWQpLHgoNSksUCgibmdUZW1wbGF0ZU91dGxldCIsbyl9fWZ1bmN0aW9uIEFLdChuLHQpe2lmKG4mMSYmKEVuKDApLHUoMSwiaDMiLDEyKSxUKDIsIiBObyBkYXNoYm9hcmRzIGFyZSBhY3RpdmUgZm9yIHRoZSBjdXJyZW50IGRhdGEgc2V0LiAiKSxoKCksdSgzLCJwIiksVCg0LCJQcm9iYWJsZSBjYXVzZXM6IiksaCgpLHUoNSwidWwiKSx1KDYsImxpIiksVCg3LCJZb3UgaGF2ZW5cdTIwMTl0IHdyaXR0ZW4gYW55IGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4iKSxoKCksdSg4LCJsaSIpLFQoOSwiVGVuc29yQm9hcmQgY2FuXHUyMDE5dCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuIiksaCgpLGgoKSxUKDEwLCIgSWYgeW91XHUyMDE5cmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8gYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlICIpLHUoMTEsImEiLDEzKSxUKDEyLCJSRUFETUUiKSxoKCksVCgxMywiIGFuZCBwZXJoYXBzIHRoZSAiKSx1KDE0LCJhIiwxNCksVCgxNSwiVGVuc29yQm9hcmQgdHV0b3JpYWwiKSxoKCksVCgxNiwiLiAiKSx1KDE3LCJwIiksVCgxOCwiIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlICIpLHUoMTksImEiLDE1KSxUKDIwLCJ0aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zIiksaCgpLFQoMjEsIiBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4gIiksaCgpLHUoMjIsInAiKSxNbygyMywxMSksaCgpLGtuKCkpLG4mMil7UygyKTtsZXQgZT13ZSg4KTt4KDIzKSxQKCJuZ1RlbXBsYXRlT3V0bGV0IixlKX19ZnVuY3Rpb24gREt0KG4sdCl7aWYobiYxJiYodSgwLCJkaXYiLDYpLHUoMSwiZGl2Iiw3KSxrKDIsU0t0LDIsMSwibmctY29udGFpbmVyIiw4KSxrKDMsRUt0LDIsMSwibmctY29udGFpbmVyIiw4KSxrKDQsTkt0LDIsMSwibmctY29udGFpbmVyIiw4KSxrKDUsVEt0LDEwLDIsIm5nLWNvbnRhaW5lciIsOCksayg2LEFLdCwyNCwxLCJuZy1jb250YWluZXIiLDgpLGgoKSxoKCkpLG4mMil7bGV0IGU9UygpO1AoIm5nU3dpdGNoIixlLnBsdWdpbkxvYWRTdGF0ZSkseCgyKSxQKCJuZ1N3aXRjaENhc2UiLGUuUGx1Z2luTG9hZFN0YXRlLkVOVklST05NRU5UX0ZBSUxVUkVfTk9UX0ZPVU5EKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsZS5QbHVnaW5Mb2FkU3RhdGUuRU5WSVJPTk1FTlRfRkFJTFVSRV9QRVJNSVNTSU9OX0RFTklFRCkseCgxKSxQKCJuZ1N3aXRjaENhc2UiLGUuUGx1Z2luTG9hZFN0YXRlLkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTikseCgxKSxQKCJuZ1N3aXRjaENhc2UiLGUuUGx1Z2luTG9hZFN0YXRlLlVOS05PV05fUExVR0lOX0lEKSx4KDEpLFAoIm5nU3dpdGNoQ2FzZSIsZS5QbHVnaW5Mb2FkU3RhdGUuTk9fRU5BQkxFRF9QTFVHSU5TKX19ZnVuY3Rpb24gSUt0KG4sdCl7aWYobiYxJiYodSgwLCJoMyIsMTYpLFQoMSwiRGF0YSBjb3VsZCBub3QgYmUgbG9hZGVkLiIpLGgoKSx1KDIsInAiKSxUKDMsIlRoZSBUZW5zb3JCb2FyZCBzZXJ2ZXIgbWF5IGJlIGRvd24gb3IgaW5hY2Nlc3NpYmxlLiIpLGgoKSx1KDQsInAiKSxNbyg1LDExKSxoKCkpLG4mMil7UygpO2xldCBlPXdlKDgpO3goNSksUCgibmdUZW1wbGF0ZU91dGxldCIsZSl9fWZ1bmN0aW9uIHpLdChuLHQpe2lmKG4mMSYmKHUoMCwicCIsMTkpLHUoMSwiaSIpLFQoMiwiTG9nIGRpcmVjdG9yeTogIiksdSgzLCJzcGFuIiksVCg0KSxoKCksaCgpLGgoKSksbiYyKXtsZXQgZT1TKDIpO3goNCksSWUoZS5kYXRhTG9jYXRpb24pfX1mdW5jdGlvbiBIS3Qobix0KXtpZihuJjEmJih1KDAsInNwYW4iLDE3KSxUKDEpLFgoMiwiZGF0ZSIpLGgoKSxrKDMsekt0LDUsMSwicCIsMTgpKSxuJjIpe2xldCBlPVMoKTt4KDEpLGxlKCJMYXN0IHJlbG9hZDogIixodigyLDIsZS5sYXN0VXBkYXRlZCwibWVkaXVtIiksIiIpLHgoMiksUCgibmdJZiIsZS5kYXRhTG9jYXRpb24pfX12YXIgRkt0PWZ1bmN0aW9uKG4pe3JldHVybntwbHVnaW5zOiEwLCJpcy1maXJzdC1wYXJ0eS1wbHVnaW4iOm59fSxwYjsoZnVuY3Rpb24obil7bltuLkVOVklST05NRU5UX0ZBSUxVUkVfTk9UX0ZPVU5EPTBdPSJFTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORCIsbltuLkVOVklST05NRU5UX0ZBSUxVUkVfUEVSTUlTU0lPTl9ERU5JRUQ9MV09IkVOVklST05NRU5UX0ZBSUxVUkVfUEVSTUlTU0lPTl9ERU5JRUQiLG5bbi5FTlZJUk9OTUVOVF9GQUlMVVJFX1VOS05PV049Ml09IkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTiIsbltuLk5PX0VOQUJMRURfUExVR0lOUz0zXT0iTk9fRU5BQkxFRF9QTFVHSU5TIixuW24uVU5LTk9XTl9QTFVHSU5fSUQ9NF09IlVOS05PV05fUExVR0lOX0lEIixuW24uTE9BREVEPTVdPSJMT0FERUQiLG5bbi5MT0FESU5HPTZdPSJMT0FESU5HIn0pKHBifHwocGI9e30pKTt2YXIgZGI9Y2xhc3N7Y29uc3RydWN0b3IodCxlLG8pe3RoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPXQsdGhpcy5wbHVnaW5SZWdpc3RyeT1lLHRoaXMucGx1Z2luQXBpSG9zdD1vLHRoaXMuUGx1Z2luTG9hZFN0YXRlPXBiLHRoaXMuTG9hZGluZ01lY2hhbmlzbVR5cGU9SngsdGhpcy5wbHVnaW5JbnN0YW5jZXM9bmV3IE1hcH1uZ09uQ2hhbmdlcyh0KXt2YXIgZTtpZighdGhpcy5pc0ZlYXR1cmVGbGFnc0xvYWRlZHx8IXRoaXMuYWN0aXZlS25vd25QbHVnaW58fHRoaXMuc2V0dGluZ3NMb2FkU3RhdGU9PT1LdC5OT1RfTE9BREVEfHx0aGlzLnNldHRpbmdzTG9hZFN0YXRlPT09S3QuTE9BRElORylyZXR1cm47bGV0IG89Qm9vbGVhbih0aGlzLmFjdGl2ZUtub3duUGx1Z2luJiYhdGhpcy5wbHVnaW5JbnN0YW5jZXMuaGFzKHRoaXMuYWN0aXZlS25vd25QbHVnaW4uaWQpKTtpZih0LmFjdGl2ZUtub3duUGx1Z2lufHx0LmlzRmVhdHVyZUZsYWdzTG9hZGVkfHx0LnNldHRpbmdzTG9hZFN0YXRlKXtsZXQgaT0oZT10LmFjdGl2ZUtub3duUGx1Z2luKT09PW51bGx8fGU9PT12b2lkIDA/dm9pZCAwOmUucHJldmlvdXNWYWx1ZTtpZihpJiZpLmlkIT09dGhpcy5hY3RpdmVLbm93blBsdWdpbi5pZCYmdGhpcy5oaWRlUGx1Z2luKGkpLG8pe2xldCBhPXRoaXMuY3JlYXRlUGx1Z2luKHRoaXMuYWN0aXZlS25vd25QbHVnaW4pO2EmJnRoaXMucGx1Z2luSW5zdGFuY2VzLnNldCh0aGlzLmFjdGl2ZUtub3duUGx1Z2luLmlkLGEpfWVsc2UgdGhpcy5zaG93UGx1Z2luKHRoaXMuYWN0aXZlS25vd25QbHVnaW4pfShvfHx0Lmxhc3RVcGRhdGVkKSYmdGhpcy5yZWxvYWQodGhpcy5hY3RpdmVLbm93blBsdWdpbixvKX1oaWRlUGx1Z2luKHQpe2lmKCF0aGlzLnBsdWdpbkluc3RhbmNlcy5oYXModC5pZCkpcmV0dXJuO2xldCBlPXRoaXMucGx1Z2luSW5zdGFuY2VzLmdldCh0LmlkKTtPYmplY3QuYXNzaWduKGUuc3R5bGUse21heEhlaWdodDowLG92ZXJmbG93OiJoaWRkZW4iLHZpc2liaWxpdHk6ImhpZGRlbiIscG9zaXRpb246ImFic29sdXRlIn0pfXNob3dQbHVnaW4odCl7aWYoIXRoaXMucGx1Z2luSW5zdGFuY2VzLmhhcyh0LmlkKSlyZXR1cm47bGV0IGU9dGhpcy5wbHVnaW5JbnN0YW5jZXMuZ2V0KHQuaWQpO09iamVjdC5hc3NpZ24oZS5zdHlsZSx7bWF4SGVpZ2h0Om51bGwsb3ZlcmZsb3c6bnVsbCx2aXNpYmlsaXR5Om51bGwscG9zaXRpb246bnVsbH0pfWNyZWF0ZVBsdWdpbih0KXtsZXQgZT1udWxsO3N3aXRjaCh0LmxvYWRpbmdfbWVjaGFuaXNtLnR5cGUpe2Nhc2UgSnguQ1VTVE9NX0VMRU1FTlQ6e2xldCBpPXQubG9hZGluZ19tZWNoYW5pc207ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGkuZWxlbWVudF9uYW1lKSxlLnJlbG9hZE9uUmVhZHk9ITEsZS5mZWF0dXJlRmxhZ3M9dGhpcy5mZWF0dXJlRmxhZ3MsdGhpcy5wbHVnaW5zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZSk7YnJlYWt9Y2FzZSBKeC5JRlJBTUU6e2lmKCF0aGlzLnBsdWdpbkFwaUhvc3QpdGhyb3cgRXJyb3IoYElGUkFNRS1iYXNlZCBwbHVnaW5zIG5vdCBzdXBwb3J0ZWQ6ICR7dC5pZH1gKTtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGUuc2V0QXR0cmlidXRlKCJzcmMiLGBkYXRhL3BsdWdpbl9lbnRyeS5odG1sP25hbWU9JHt0LmlkfWApLHRoaXMucGx1Z2luQXBpSG9zdC5yZWdpc3RlclBsdWdpbklmcmFtZShlLHQuaWQpLHRoaXMucGx1Z2luc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGUpO2JyZWFrfWNhc2UgSnguTkdfQ09NUE9ORU5UOmxldCBvPXRoaXMucGx1Z2luUmVnaXN0cnkuZ2V0Q29tcG9uZW50KHQuaWQpO2lmKG8pe2xldCBpPXRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KG8pO2U9dGhpcy5uZ1BsdWdpbkNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoaSkubG9jYXRpb24ubmF0aXZlRWxlbWVudH1lbHNlIGNvbnNvbGUuZXJyb3IoYE5vIHJlZ2lzdGVyZWQgQW5ndWxhciBjb21wb25lbnQgZm9yIHBsdWdpbjogJHt0LmlkfWApO2JyZWFrO2Nhc2UgSnguTk9ORTpicmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlVuZXhwZWN0ZWQgcGx1Z2luIil9cmV0dXJuIGV9cmVsb2FkKHQsZSl7aWYoIWUmJnQuZGlzYWJsZV9yZWxvYWQpcmV0dXJuO2xldCBvPXRoaXMucGx1Z2luSW5zdGFuY2VzLmdldCh0LmlkKTtvJiZvLnJlbG9hZCYmby5yZWxvYWQoKX19O2RiLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fGRiKSh2KF9vKSx2KHJpKSx2KG5tLDgpKX07ZGIuXHUwMjc1Y21wPXooe3R5cGU6ZGIsc2VsZWN0b3JzOltbInBsdWdpbnMtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbih0LGUpe2lmKHQmMSYmKHBlKHhLdCw3LEwpLHBlKHZLdCw3LF9lKSksdCYyKXtsZXQgbztIdChvPUZ0KCkpJiYoZS5wbHVnaW5zQ29udGFpbmVyPW8uZmlyc3QpLEh0KG89RnQoKSkmJihlLm5nUGx1Z2luQ29udGFpbmVyPW8uZmlyc3QpfX0saW5wdXRzOnthY3RpdmVQbHVnaW5JZDoiYWN0aXZlUGx1Z2luSWQiLGFjdGl2ZUtub3duUGx1Z2luOiJhY3RpdmVLbm93blBsdWdpbiIscGx1Z2luTG9hZFN0YXRlOiJwbHVnaW5Mb2FkU3RhdGUiLGRhdGFMb2NhdGlvbjoiZGF0YUxvY2F0aW9uIixpc0ZlYXR1cmVGbGFnc0xvYWRlZDoiaXNGZWF0dXJlRmxhZ3NMb2FkZWQiLHNldHRpbmdzTG9hZFN0YXRlOiJzZXR0aW5nc0xvYWRTdGF0ZSIsZmVhdHVyZUZsYWdzOiJmZWF0dXJlRmxhZ3MiLGxhc3RVcGRhdGVkOiJsYXN0VXBkYXRlZCIsZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZToiZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZSIsZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGUiLGVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZToiZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIn0sZmVhdHVyZXM6W1dlXSxkZWNsczo5LHZhcnM6NCxjb25zdHM6W1szLCJuZ0NsYXNzIl0sWyJwbHVnaW5Db250YWluZXIiLCIiXSxbIm5nUGx1Z2luQ29udGFpbmVyIiwiIl0sWyJjbGFzcyIsIndhcm5pbmciLDMsIm5nU3dpdGNoIiw0LCJuZ0lmIl0sWyJlbnZpcm9ubWVudEZhaWx1cmVEZWZhdWx0VGVtcGxhdGUiLCIiXSxbImRhdGVBbmREYXRhTG9jYXRpb24iLCIiXSxbMSwid2FybmluZyIsMywibmdTd2l0Y2giXSxbMSwid2FybmluZy1tZXNzYWdlIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFs0LCJuZ1RlbXBsYXRlT3V0bGV0Il0sWzEsInVua25vd24tcGx1Z2luIl0sWzMsIm5nVGVtcGxhdGVPdXRsZXQiXSxbMSwibm8tYWN0aXZlLXBsdWdpbiJdLFsiaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCJdLFsiaHJlZiIsImh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiXSxbImhyZWYiLCJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIl0sWzEsImVudmlyb25tZW50LW5vdC1sb2FkZWQiXSxbMSwibGFzdC1yZWxvYWQtdGltZSJdLFsiY2xhc3MiLCJkYXRhLWxvY2F0aW9uIiw0LCJuZ0lmIl0sWzEsImRhdGEtbG9jYXRpb24iXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJih1KDAsImRpdiIsMCwxKSxNbygyLG51bGwsMiksaCgpLGsoNCxES3QsNyw2LCJkaXYiLDMpLGsoNSxJS3QsNiwxLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LHhuKSxrKDcsSEt0LDQsNSwibmctdGVtcGxhdGUiLG51bGwsNSx4bikpLHQmMiYmKFAoIm5nQ2xhc3MiLGFvKDIsRkt0LChlLmFjdGl2ZUtub3duUGx1Z2luPT1udWxsP251bGw6ZS5hY3RpdmVLbm93blBsdWdpbi5sb2FkaW5nX21lY2hhbmlzbS50eXBlKSE9PWUuTG9hZGluZ01lY2hhbmlzbVR5cGUuSUZSQU1FKSkseCg0KSxQKCJuZ0lmIixlLnBsdWdpbkxvYWRTdGF0ZSE9PWUuUGx1Z2luTG9hZFN0YXRlLkxPQURFRCYmZS5wbHVnaW5Mb2FkU3RhdGUhPT1lLlBsdWdpbkxvYWRTdGF0ZS5MT0FESU5HKSl9LGRpcmVjdGl2ZXM6W2puLFh0LEdvLHVpLExhXSxwaXBlczpbUXNdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgcmdiYSgwLDAsMCwwKX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHJnYmEoMCwwLDAsMCl9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzczZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTA2cHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExOWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzkzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwN3B4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMThlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQwMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwOHB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMTdlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzQxMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODExNWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTE0ZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5MzcyZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNjMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O3doaXRlLXNwYWNlOm5vd3JhcDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKTt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMTtkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfWJvZHkuZGFyay1tb2RlICAgW19uZ2hvc3QtJUNPTVAlXSAgIC5wbHVnaW5zLmlzLWZpcnN0LXBhcnR5LXBsdWdpbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMzAzMDMwO2NvbG9yOiNmZmZ9LnBsdWdpbnNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS53YXJuaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Ym90dG9tOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7dG9wOjB9Ym9keS5kYXJrLW1vZGVbX25naG9zdC0lQ09NUCVdICAgLndhcm5pbmdbX25nY29udGVudC0lQ09NUCVdLCBib2R5LmRhcmstbW9kZSAgIFtfbmdob3N0LSVDT01QJV0gICAud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMzAzMDMwfS53YXJuaW5nLW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7bWFyZ2luOjgwcHggYXV0byAwO21heC13aWR0aDo1NDBweH1ib2R5LmRhcmstbW9kZVtfbmdob3N0LSVDT01QJV0gICAud2FybmluZy1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keS5kYXJrLW1vZGUgICBbX25naG9zdC0lQ09NUCVdICAgLndhcm5pbmctbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubGFzdC1yZWxvYWQtdGltZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zdHlsZTppdGFsaWN9LnBsdWdpbnNbX25nY29udGVudC0lQ09NUCVdICAgICBpZnJhbWV7Ym9yZGVyOjA7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfSddLGNoYW5nZURldGVjdGlvbjowfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKGRiLFt7dHlwZTpGLGFyZ3M6W3tzZWxlY3RvcjoicGx1Z2lucy1jb21wb25lbnQiLHRlbXBsYXRlVXJsOiIuL3BsdWdpbnNfY29tcG9uZW50Lm5nLmh0bWwiLHN0eWxlVXJsczpbInBsdWdpbnNfY29tcG9uZW50LmNzcyJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOl9vfSx7dHlwZTpyaX0se3R5cGU6bm0sZGVjb3JhdG9yczpbe3R5cGU6SH1dfV19LHtwbHVnaW5zQ29udGFpbmVyOlt7dHlwZTpJdCxhcmdzOlsicGx1Z2luQ29udGFpbmVyIix7c3RhdGljOiEwLHJlYWQ6TH1dfV0sbmdQbHVnaW5Db250YWluZXI6W3t0eXBlOkl0LGFyZ3M6WyJuZ1BsdWdpbkNvbnRhaW5lciIse3N0YXRpYzohMCxyZWFkOl9lfV19XSxhY3RpdmVQbHVnaW5JZDpbe3R5cGU6ZH1dLGFjdGl2ZUtub3duUGx1Z2luOlt7dHlwZTpkfV0scGx1Z2luTG9hZFN0YXRlOlt7dHlwZTpkfV0sZGF0YUxvY2F0aW9uOlt7dHlwZTpkfV0saXNGZWF0dXJlRmxhZ3NMb2FkZWQ6W3t0eXBlOmR9XSxzZXR0aW5nc0xvYWRTdGF0ZTpbe3R5cGU6ZH1dLGZlYXR1cmVGbGFnczpbe3R5cGU6ZH1dLGxhc3RVcGRhdGVkOlt7dHlwZTpkfV0sZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZTpbe3R5cGU6ZH1dLGVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZTpbe3R5cGU6ZH1dLGVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZTpbe3R5cGU6ZH1dfSl9KSgpO3ZhciBMS3Q9Y3QoZzMsZW0sKG4sdCk9PiF0fHwhblt0XT9udWxsOk9iamVjdC5hc3NpZ24oe2lkOnR9LG5bdF0pKSxJZj1jbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVLbm93blBsdWdpbiQ9dGhpcy5zdG9yZS5zZWxlY3QoTEt0KSx0aGlzLmFjdGl2ZVBsdWdpbklkJD10aGlzLnN0b3JlLnNlbGVjdChlbSksdGhpcy5wbHVnaW5Mb2FkU3RhdGUkPW9uKHRoaXMuYWN0aXZlS25vd25QbHVnaW4kLHRoaXMuYWN0aXZlUGx1Z2luSWQkLHRoaXMuc3RvcmUuc2VsZWN0KF9EKSkucGlwZShHKChbZSxvLGldKT0+aS5mYWlsdXJlQ29kZSE9PW51bGw/aS5mYWlsdXJlQ29kZT09PUNNLk5PVF9GT1VORD9wYi5FTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORDppLmZhaWx1cmVDb2RlPT09Q00uUEVSTUlTU0lPTl9ERU5JRUQ/cGIuRU5WSVJPTk1FTlRfRkFJTFVSRV9QRVJNSVNTSU9OX0RFTklFRDpwYi5FTlZJUk9OTUVOVF9GQUlMVVJFX1VOS05PV046ZSE9PW51bGw/cGIuTE9BREVEOmkubGFzdExvYWRlZFRpbWVJbk1zPT09bnVsbCYmaS5zdGF0ZT09PUt0LkxPQURJTkc/cGIuTE9BRElORzpvP3BiLlVOS05PV05fUExVR0lOX0lEOnBiLk5PX0VOQUJMRURfUExVR0lOUykpLHRoaXMubGFzdExvYWRlZFRpbWVJbk1zJD10aGlzLnN0b3JlLnNlbGVjdChkMyksdGhpcy5kYXRhTG9jYXRpb24kPXRoaXMuc3RvcmUuc2VsZWN0KHUzKS5waXBlKEcoZT0+ZS5kYXRhX2xvY2F0aW9uKSksdGhpcy5pc0ZlYXR1cmVGbGFnc0xvYWRlZCQ9dGhpcy5zdG9yZS5zZWxlY3QoRHkpLHRoaXMuZmVhdHVyZUZsYWdzJD10aGlzLnN0b3JlLnNlbGVjdCh0bSksdGhpcy5zZXR0aW5nc0xvYWRTdGF0ZSQ9dGhpcy5zdG9yZS5zZWxlY3QoSm0uZ2V0U2V0dGluZ3NMb2FkU3RhdGUpfX07SWYuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SWYpKHYoc3QpKX07SWYuXHUwMjc1Y21wPXooe3R5cGU6SWYsc2VsZWN0b3JzOltbInBsdWdpbnMiXV0saW5wdXRzOntlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIixlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZSIsZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUifSxkZWNsczo5LHZhcnM6MjcsY29uc3RzOltbMywiYWN0aXZlS25vd25QbHVnaW4iLCJhY3RpdmVQbHVnaW5JZCIsImRhdGFMb2NhdGlvbiIsImxhc3RVcGRhdGVkIiwicGx1Z2luTG9hZFN0YXRlIiwiaXNGZWF0dXJlRmxhZ3NMb2FkZWQiLCJzZXR0aW5nc0xvYWRTdGF0ZSIsImZlYXR1cmVGbGFncyIsImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiLCJlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGUiLCJlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsInBsdWdpbnMtY29tcG9uZW50IiwwKSxYKDEsImFzeW5jIiksWCgyLCJhc3luYyIpLFgoMywiYXN5bmMiKSxYKDQsImFzeW5jIiksWCg1LCJhc3luYyIpLFgoNiwiYXN5bmMiKSxYKDcsImFzeW5jIiksWCg4LCJhc3luYyIpKSx0JjImJlAoImFjdGl2ZUtub3duUGx1Z2luIixRKDEsMTEsZS5hY3RpdmVLbm93blBsdWdpbiQpKSgiYWN0aXZlUGx1Z2luSWQiLFEoMiwxMyxlLmFjdGl2ZVBsdWdpbklkJCkpKCJkYXRhTG9jYXRpb24iLFEoMywxNSxlLmRhdGFMb2NhdGlvbiQpKSgibGFzdFVwZGF0ZWQiLFEoNCwxNyxlLmxhc3RMb2FkZWRUaW1lSW5NcyQpKSgicGx1Z2luTG9hZFN0YXRlIixRKDUsMTksZS5wbHVnaW5Mb2FkU3RhdGUkKSkoImlzRmVhdHVyZUZsYWdzTG9hZGVkIixRKDYsMjEsZS5pc0ZlYXR1cmVGbGFnc0xvYWRlZCQpKSgic2V0dGluZ3NMb2FkU3RhdGUiLFEoNywyMyxlLnNldHRpbmdzTG9hZFN0YXRlJCkpKCJmZWF0dXJlRmxhZ3MiLFEoOCwyNSxlLmZlYXR1cmVGbGFncyQpKSgiZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZSIsZS5lbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlKSgiZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlIixlLmVudmlyb25tZW50RmFpbHVyZVBlcm1pc3Npb25EZW5pZWRUZW1wbGF0ZSkoImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSIsZS5lbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUpfSxzdHlsZXM6WyJwbHVnaW5zLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0geyBoZWlnaHQ6IDEwMCU7IH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJZixbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InBsdWdpbnMiLHRlbXBsYXRlOmAKICAgIDxwbHVnaW5zLWNvbXBvbmVudAogICAgICBbYWN0aXZlS25vd25QbHVnaW5dPSJhY3RpdmVLbm93blBsdWdpbiQgfCBhc3luYyIKICAgICAgW2FjdGl2ZVBsdWdpbklkXT0iYWN0aXZlUGx1Z2luSWQkIHwgYXN5bmMiCiAgICAgIFtkYXRhTG9jYXRpb25dPSJkYXRhTG9jYXRpb24kIHwgYXN5bmMiCiAgICAgIFtsYXN0VXBkYXRlZF09Imxhc3RMb2FkZWRUaW1lSW5NcyQgfCBhc3luYyIKICAgICAgW3BsdWdpbkxvYWRTdGF0ZV09InBsdWdpbkxvYWRTdGF0ZSQgfCBhc3luYyIKICAgICAgW2lzRmVhdHVyZUZsYWdzTG9hZGVkXT0iaXNGZWF0dXJlRmxhZ3NMb2FkZWQkIHwgYXN5bmMiCiAgICAgIFtzZXR0aW5nc0xvYWRTdGF0ZV09InNldHRpbmdzTG9hZFN0YXRlJCB8IGFzeW5jIgogICAgICBbZmVhdHVyZUZsYWdzXT0iZmVhdHVyZUZsYWdzJCB8IGFzeW5jIgogICAgICBbZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZV09ImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiCiAgICAgIFtlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGVdPSIKICAgICAgICBlbnZpcm9ubWVudEZhaWx1cmVQZXJtaXNzaW9uRGVuaWVkVGVtcGxhdGUKICAgICAgIgogICAgICBbZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlXT0iZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlIgogICAgPjwvcGx1Z2lucy1jb21wb25lbnQ+CiAgYCxzdHlsZXM6WyJwbHVnaW5zLWNvbXBvbmVudCB7IGhlaWdodDogMTAwJTsgfSJdLGNoYW5nZURldGVjdGlvbjp0dC5PblB1c2h9XX1dLGZ1bmN0aW9uKCl7cmV0dXJuW3t0eXBlOnN0fV19LHtlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOlt7dHlwZTpkfV0sZW52aXJvbm1lbnRGYWlsdXJlUGVybWlzc2lvbkRlbmllZFRlbXBsYXRlOlt7dHlwZTpkfV0sZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOlt7dHlwZTpkfV19KX0pKCk7dmFyIEhjPWNsYXNze307SGMuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8SGMpfTtIYy5cdTAyNzVtb2Q9cSh7dHlwZTpIY30pO0hjLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbU2ksWSxyaV1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEhjLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W0lmLGRiXSxleHBvcnRzOltJZl0saW1wb3J0czpbU2ksWSxyaV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoSGMse2RlY2xhcmF0aW9uczpbSWYsZGJdLGltcG9ydHM6W1NpLFkscmldLGV4cG9ydHM6W0lmXX0pfSkoKTt2UihJZixbZGJdLFtvZV0pO3ZhciBkZz1jbGFzc3tjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RvcmU9dCx0aGlzLmRvY3VtZW50PWUsdGhpcy5vblZpc2liaWxpdHlDaGFuZ2U9dGhpcy5vblZpc2liaWxpdHlDaGFuZ2VJbXBsLmJpbmQodGhpcyksdGhpcy5yZWxvYWRFbmFibGVkJD10aGlzLnN0b3JlLnBpcGUoemUoSm0uZ2V0UmVsb2FkRW5hYmxlZCkpLHRoaXMucmVsb2FkUGVyaW9kSW5NcyQ9dGhpcy5zdG9yZS5waXBlKHplKEptLmdldFJlbG9hZFBlcmlvZEluTXMpKSx0aGlzLnJlbG9hZFRpbWVySWQ9bnVsbCx0aGlzLm1pc3NlZEF1dG9SZWxvYWQ9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyBKdH1uZ09uSW5pdCgpe3RoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5vblZpc2liaWxpdHlDaGFuZ2UpLG9uKHRoaXMucmVsb2FkRW5hYmxlZCQucGlwZShYbygpKSx0aGlzLnJlbG9hZFBlcmlvZEluTXMkLnBpcGUoWG8oKSkpLnBpcGUoUGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChbdCxlXSk9Pnt0aGlzLmNhbmNlbExvYWQoKSx0JiZ0aGlzLmxvYWQoZSl9KX1vblZpc2liaWxpdHlDaGFuZ2VJbXBsKCl7dGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0idmlzaWJsZSImJnRoaXMubWlzc2VkQXV0b1JlbG9hZCYmKHRoaXMubWlzc2VkQXV0b1JlbG9hZD0hMSx0aGlzLnN0b3JlLmRpc3BhdGNoKEttKCkpKX1sb2FkKHQpe3RoaXMucmVsb2FkVGltZXJJZD1zZXRUaW1lb3V0KCgpPT57dGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGU9PT0idmlzaWJsZSI/dGhpcy5zdG9yZS5kaXNwYXRjaChLbSgpKTp0aGlzLm1pc3NlZEF1dG9SZWxvYWQ9ITAsdGhpcy5sb2FkKHQpfSx0KX1jYW5jZWxMb2FkKCl7dGhpcy5yZWxvYWRUaW1lcklkIT09bnVsbCYmY2xlYXJUaW1lb3V0KHRoaXMucmVsb2FkVGltZXJJZCksdGhpcy5yZWxvYWRUaW1lcklkPW51bGx9bmdPbkRlc3Ryb3koKXt0aGlzLmNhbmNlbExvYWQoKSx0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMub25WaXNpYmlsaXR5Q2hhbmdlKSx0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfX07ZGcuXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8ZGcpKHYoc3QpLHYoX3QpKX07ZGcuXHUwMjc1Y21wPXooe3R5cGU6ZGcsc2VsZWN0b3JzOltbInJlbG9hZGVyIl1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uKHQsZSl7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nRGV2TW9kZT09InVuZGVmaW5lZCJ8fG5nRGV2TW9kZSkmJkMoZGcsW3t0eXBlOkYsYXJnczpbe3NlbGVjdG9yOiJyZWxvYWRlciIsdGVtcGxhdGU6IiIsY2hhbmdlRGV0ZWN0aW9uOnR0Lk9uUHVzaH1dfV0sZnVuY3Rpb24oKXtyZXR1cm5be3R5cGU6c3R9LHt0eXBlOkRvY3VtZW50LGRlY29yYXRvcnM6W3t0eXBlOk4sYXJnczpbX3RdfV19XX0sbnVsbCl9KSgpO3ZhciB6Zj1jbGFzc3t9O3pmLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fHpmKX07emYuXHUwMjc1Y21wPXooe3R5cGU6emYsc2VsZWN0b3JzOltbInRlbnNvcmJvYXJkLXdyYXBwZXItY29tcG9uZW50Il1dLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWzEsInBsdWdpbnMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24odCxlKXt0JjEmJihEKDAsInBsdWdpbnMiLDApLEQoMSwicmVsb2FkZXIiKSl9LGRpcmVjdGl2ZXM6W0lmLGRnXSxzdHlsZXM6W2BbX25naG9zdC0lQ09NUCVdIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV0gewogICAgICAgIGZsZXg6IDEgMTsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH1gXSxjaGFuZ2VEZXRlY3Rpb246MH0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyh6Zixbe3R5cGU6RixhcmdzOlt7c2VsZWN0b3I6InRlbnNvcmJvYXJkLXdyYXBwZXItY29tcG9uZW50Iix0ZW1wbGF0ZTpgCiAgICA8cGx1Z2lucyBjbGFzcz0icGx1Z2lucyI+PC9wbHVnaW5zPgogICAgPHJlbG9hZGVyPjwvcmVsb2FkZXI+CiAgYCxzdHlsZXM6W2AKICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5wbHVnaW5zIHsKICAgICAgICBmbGV4OiAxIDE7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICBgXSxjaGFuZ2VEZXRlY3Rpb246dHQuT25QdXNofV19XSxudWxsLG51bGwpfSkoKTt2YXIgRk89Y2xhc3N7fTtGTy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxGTyl9O0ZPLlx1MDI3NXByb3Y9UHQoe3Rva2VuOkZPLGZhY3Rvcnk6Rk8uXHUwMjc1ZmFjfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEZPLFt7dHlwZTpTdH1dLG51bGwsbnVsbCl9KSgpO3ZhciBMWj0ic21vb3RoaW5nIixiX3Q9InBpbm5lZENhcmRzIixCWj0icnVuQ29sb3JHcm91cCIsVlo9InRhZ0ZpbHRlciIsalo9InJ1bkZpbHRlciI7dmFyIFVaPSJyZWdleDoiLF83PWNsYXNzIGV4dGVuZHMgRk97Z2V0TWV0cmljc1Bpbm5lZENhcmRzKHQpe3JldHVybiBvbihbdC5zZWxlY3QoTEUpLHQuc2VsZWN0KGppdCldKS5waXBlKEcoKFtlLG9dKT0+e2lmKCFlLmxlbmd0aCYmIW8ubGVuZ3RoKXJldHVybltdO2xldCBhPVsuLi5lLm1hcCgoe3BsdWdpbjpyLHRhZzpzLHNhbXBsZTpsLHJ1bklkOmN9KT0+e2xldCBtPXtwbHVnaW46cix0YWc6c307cmV0dXJuIFZnKHIpJiYobS5ydW5JZD1jKSxCZyhyKSYmKG0uc2FtcGxlPWwpLG19KSwuLi5vXTtyZXR1cm5be2tleToicGlubmVkQ2FyZHMiLHZhbHVlOkpTT04uc3RyaW5naWZ5KGEpfV19KSl9c2VyaWFsaXplU3RhdGVUb1F1ZXJ5UGFyYW1zKHQpe3JldHVybiBvbihbdGhpcy5nZXRNZXRyaWNzUGlubmVkQ2FyZHModCksdC5zZWxlY3QoeE0pLnBpcGUoRyhlPT5lP1t7a2V5OlZaLHZhbHVlOmV9XTpbXSkpLG9uKFt0LnNlbGVjdChhRCksdC5zZWxlY3QockQpXSkucGlwZShHKChbZSxvXSk9PlJpdChlLG8pKSksdC5zZWxlY3QoWWl0KS5waXBlKEcoZT0+TnVtYmVyLmlzRmluaXRlKGUuc2NhbGFyU21vb3RoaW5nKT9be2tleTpMWix2YWx1ZTpTdHJpbmcoZS5zY2FsYXJTbW9vdGhpbmcpfV06W10pKSx0LnNlbGVjdChzVSkucGlwZShHKGU9PntpZighZSlyZXR1cm5bXTtsZXQgbztzd2l0Y2goZS5rZXkpe2Nhc2UgYmEuRVhQRVJJTUVOVDpvPSJleHBlcmltZW50IjticmVhaztjYXNlIGJhLlJVTjpvPSJydW4iO2JyZWFrO2Nhc2UgYmEuUkVHRVg6bz1gJHtVWn0ke2UucmVnZXhTdHJpbmd9YDticmVhaztkZWZhdWx0OnRocm93IG5ldyBSYW5nZUVycm9yKCJTZXJpYWxpemF0aW9uIG5vdCBpbXBsZW1lbnRlZCIpfXJldHVyblt7a2V5OkJaLHZhbHVlOm99XX0pKSx0LnNlbGVjdChVdikucGlwZShHKGU9PmU/W3trZXk6alosdmFsdWU6ZX1dOltdKSldKS5waXBlKEcoZT0+ZS5mbGF0KCkpKX1kZXNlcmlhbGl6ZVF1ZXJ5UGFyYW1zKHQpe2xldCBlPW51bGwsbz1udWxsLGk9bnVsbCxhPW51bGwscj1udWxsO2ZvcihsZXR7a2V5OnMsdmFsdWU6bH1vZiB0KXN3aXRjaChzKXtjYXNlIGJfdDplPWpLdChsKTticmVhaztjYXNlIExaOm89TnVtYmVyKGwpO2JyZWFrO2Nhc2UgQlo6e3N3aXRjaChsKXtjYXNlImV4cGVyaW1lbnQiOmE9e2tleTpiYS5FWFBFUklNRU5UfTticmVhaztjYXNlInJ1biI6YT17a2V5OmJhLlJVTn07YnJlYWt9aWYobC5zdGFydHNXaXRoKFVaKSl7bGV0IGM9bC5zbGljZShVWi5sZW5ndGgpO2E9e2tleTpiYS5SRUdFWCxyZWdleFN0cmluZzpjfX1icmVha31jYXNlIFZaOmk9bDticmVhaztjYXNlIGpaOnI9bDticmVha31yZXR1cm57bWV0cmljczp7cGlubmVkQ2FyZHM6ZXx8W10sc21vb3RoaW5nOm8sdGFnRmlsdGVyOml9LHJ1bnM6e2dyb3VwQnk6YSxyZWdleEZpbHRlcjpyfX19fTtfNz14WChbU3QoKV0sXzcpO2Z1bmN0aW9uIGpLdChuKXtsZXQgdDt0cnl7dD1KU09OLnBhcnNlKG4pfWNhdGNoKG8pe3JldHVybiBudWxsfWlmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiBudWxsO2xldCBlPVtdO2ZvcihsZXQgbyBvZiB0KXtsZXQgaT10eXBlb2Ygby5wbHVnaW49PSJzdHJpbmciLGE9dHlwZW9mIG8ucnVuSWQ9PSJzdHJpbmciLHI9dHlwZW9mIG8uc2FtcGxlPT0ibnVtYmVyIixzPXR5cGVvZiBvLnRhZz09InN0cmluZyIsbD1hfHx0eXBlb2Ygby5ydW5JZD09InVuZGVmaW5lZCIsYz1yfHx0eXBlb2Ygby5zYW1wbGU9PSJ1bmRlZmluZWQiO2lmKCFpfHwhc3x8IWx8fCFjfHwheGl0KG8ucGx1Z2luKXx8IW8udGFnKWNvbnRpbnVlO2lmKFZnKG8ucGx1Z2luKSl7aWYoIW8ucnVuSWQpY29udGludWV9ZWxzZSBpZihvLnJ1bklkKWNvbnRpbnVlO2lmKHImJighQmcoby5wbHVnaW4pfHwhTnVtYmVyLmlzSW50ZWdlcihvLnNhbXBsZSl8fG8uc2FtcGxlPDApKWNvbnRpbnVlO2xldCBtPXtwbHVnaW46by5wbHVnaW4sdGFnOm8udGFnfTthJiYobS5ydW5JZD1vLnJ1bklkKSxyJiYobS5zYW1wbGU9by5zYW1wbGUpLGUucHVzaChtKX1yZXR1cm4gZX1mdW5jdGlvbiBZWigpe3JldHVyblt7cm91dGVLaW5kOldvLkVYUEVSSU1FTlQscGF0aDoiLyIsbmdDb21wb25lbnQ6emYsZGVmYXVsdFJvdXRlOiEwLGRlZXBMaW5rUHJvdmlkZXI6bmV3IF83fSx7cm91dGVLaW5kOldvLkZMQUdTLHBhdGg6Ii9mbGFncy8iLG5nQ29tcG9uZW50Om1jfV19ZnVuY3Rpb24gVUt0KG4pe3JldHVybih0LGUpPT57bGV0IG89bih0LGUpO3JldHVybiBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKGUudHlwZSksY29uc29sZS5sb2coInByZXYgc3RhdGUiLHQpLGNvbnNvbGUubG9nKCJhY3Rpb24iLGUpLGNvbnNvbGUubG9nKCJuZXh0IHN0YXRlIixvKSxjb25zb2xlLmdyb3VwRW5kKCksb319ZnVuY3Rpb24gR1ooKXtyZXR1cm4gd2IoKT9VS3Q6bj0+KHQsZSk9Pm4odCxlKX12YXIgV1o9bmV3IHl0KCJSb290IHJlZHVjZXJzIHRva2VuIix7ZmFjdG9yeTooKT0+KHt9KX0pO3ZhciBYaD1jbGFzc3t9O1hoLlx1MDI3NWZhYz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3KHR8fFhoKX07WGguXHUwMjc1bW9kPXEoe3R5cGU6WGh9KTtYaC5cdTAyNzVpbmo9Vyh7cHJvdmlkZXJzOlt7cHJvdmlkZTp2dix1c2VGYWN0b3J5OkdaLG11bHRpOiEwfV0saW1wb3J0czpbW2NvLmZvclJvb3QoV1ose3J1bnRpbWVDaGVja3M6e3N0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITF9fSksSG8uZm9yUm9vdChbXSldXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhYaCxbe3R5cGU6WixhcmdzOlt7aW1wb3J0czpbY28uZm9yUm9vdChXWix7cnVudGltZUNoZWNrczp7c3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvblNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTohMX19KSxIby5mb3JSb290KFtdKV0scHJvdmlkZXJzOlt7cHJvdmlkZTp2dix1c2VGYWN0b3J5OkdaLG11bHRpOiEwfV19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoWGgse2ltcG9ydHM6W3ZyLFFtXX0pfSkoKTt2YXIgUWg9Y2xhc3N7fTtRaC5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxRaCl9O1FoLlx1MDI3NW1vZD1xKHt0eXBlOlFofSk7UWguXHUwMjc1aW5qPVcoe30pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhRaCxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltkZ10sZXhwb3J0czpbZGddfV19XSxudWxsLG51bGwpfSkoKTsoZnVuY3Rpb24oKXsodHlwZW9mIG5nSml0TW9kZT09InVuZGVmaW5lZCJ8fG5nSml0TW9kZSkmJmV0KFFoLHtkZWNsYXJhdGlvbnM6W2RnXSxleHBvcnRzOltkZ119KX0pKCk7dmFyIEtoPWNsYXNze307S2guXHUwMjc1ZmFjPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcodHx8S2gpfTtLaC5cdTAyNzVtb2Q9cSh7dHlwZTpLaH0pO0toLlx1MDI3NWluaj1XKHtpbXBvcnRzOltbWSxIYyxRaF1dfSk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0Rldk1vZGU9PSJ1bmRlZmluZWQifHxuZ0Rldk1vZGUpJiZDKEtoLFt7dHlwZTpaLGFyZ3M6W3tkZWNsYXJhdGlvbnM6W3pmXSxpbXBvcnRzOltZLEhjLFFoXSxleHBvcnRzOlt6Zl0sZW50cnlDb21wb25lbnRzOlt6Zl19XX1dLG51bGwsbnVsbCl9KSgpOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdKaXRNb2RlPT0idW5kZWZpbmVkInx8bmdKaXRNb2RlKSYmZXQoS2gse2RlY2xhcmF0aW9uczpbemZdLGltcG9ydHM6W1ksSGMsUWhdLGV4cG9ydHM6W3pmXX0pfSkoKTt2YXIgSUM9Y2xhc3N7fTtJQy5cdTAyNzVmYWM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyh0fHxJQyl9O0lDLlx1MDI3NW1vZD1xKHt0eXBlOklDLGJvb3RzdHJhcDpbcjBdfSk7SUMuXHUwMjc1aW5qPVcoe2ltcG9ydHM6W1tscyxQdSxDYSxYbSxzcyxodSxpYS5yZWdpc3RlclJvdXRlcyhZWiksbmMsZWMsX3UsS2gsU2ksYnUsQ3UsdnUsVWwsd3UsTXUsYXAsbm0sSGMsR2wsZmMsWGgsWmhdXX0pOyhmdW5jdGlvbigpeyh0eXBlb2YgbmdEZXZNb2RlPT0idW5kZWZpbmVkInx8bmdEZXZNb2RlKSYmQyhJQyxbe3R5cGU6WixhcmdzOlt7ZGVjbGFyYXRpb25zOltyMF0saW1wb3J0czpbbHMsUHUsQ2EsWG0sc3MsaHUsaWEucmVnaXN0ZXJSb3V0ZXMoWVopLG5jLGVjLF91LEtoLFNpLGJ1LEN1LHZ1LFVsLHd1LE11LGFwLG5tLEhjLEdsLGZjLFhoLFpoXSxib290c3RyYXA6W3IwXX1dfV0sbnVsbCxudWxsKX0pKCk7KGZ1bmN0aW9uKCl7KHR5cGVvZiBuZ0ppdE1vZGU9PSJ1bmRlZmluZWQifHxuZ0ppdE1vZGUpJiZldChJQyx7ZGVjbGFyYXRpb25zOltyMF0saW1wb3J0czpbbHMsUHUsQ2EsWG0sc3MsaHUsaWEsbmMsZWMsX3UsS2gsU2ksYnUsQ3UsdnUsVWwsd3UsTXUsYXAsbm0sSGMsR2wsZmMsWGgsWmhdfSl9KSgpO2RvY3VtZW50LnJlYWR5U3RhdGUhPT0ibG9hZGluZyI/TVYoKS5ib290c3RyYXBNb2R1bGUoSUMpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwoKT0+e01WKCkuYm9vdHN0cmFwTW9kdWxlKElDKX0pO3VldCgpO30pKCk7Ci8qKgogKiBAbGljZW5zZQogKiBDb3B5cmlnaHQgMjAxMC0yMDIyIFRocmVlLmpzIEF1dGhvcnMKICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAogKi8KLyoqCiAqIEBsaWNlbnNlCiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqCiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICovCi8qKgogKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4wLjAtbmV4dC4wCiAqIChjKSAyMDEwLTIwMjAgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogKiBMaWNlbnNlOiBNSVQKICovCi8qKgogKiBAbGljZW5zZSBBbmd1bGFyIHYxMi4yLjE2CiAqIChjKSAyMDEwLTIwMjEgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogKiBMaWNlbnNlOiBNSVQKICovCgoKLyoqIHZpbTogZXQ6dHM9NDpzdz00OnN0cz00CiAqIEBsaWNlbnNlIFJlcXVpcmVKUyAyLjMuNiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycy4KICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKICovCi8vTm90IHVzaW5nIHN0cmljdDogdW5ldmVuIHN0cmljdCBzdXBwb3J0IGluIGJyb3dzZXJzLCAjMzkyLCBhbmQgY2F1c2VzCi8vcHJvYmxlbXMgd2l0aCByZXF1aXJlanMuZXhlYygpL3RyYW5zcGlsZXIgcGx1Z2lucyB0aGF0IG1heSBub3QgYmUgc3RyaWN0LgovKmpzbGludCByZWdleHA6IHRydWUsIG5vbWVuOiB0cnVlLCBzbG9wcHk6IHRydWUgKi8KLypnbG9iYWwgd2luZG93LCBuYXZpZ2F0b3IsIGRvY3VtZW50LCBpbXBvcnRTY3JpcHRzLCBzZXRUaW1lb3V0LCBvcGVyYSAqLwoKdmFyIHJlcXVpcmVqcywgcmVxdWlyZSwgZGVmaW5lOwooZnVuY3Rpb24gKGdsb2JhbCwgc2V0VGltZW91dCkgewogICAgdmFyIHJlcSwgcywgaGVhZCwgYmFzZUVsZW1lbnQsIGRhdGFNYWluLCBzcmMsCiAgICAgICAgaW50ZXJhY3RpdmVTY3JpcHQsIGN1cnJlbnRseUFkZGluZ1NjcmlwdCwgbWFpblNjcmlwdCwgc3ViUGF0aCwKICAgICAgICB2ZXJzaW9uID0gJzIuMy42JywKICAgICAgICBjb21tZW50UmVnRXhwID0gL1wvXCpbXHNcU10qP1wqXC98KFteOiInPV18XilcL1wvLiokL21nLAogICAgICAgIGNqc1JlcXVpcmVSZWdFeHAgPSAvW14uXVxzKnJlcXVpcmVccypcKFxzKlsiJ10oW14nIlxzXSspWyInXVxzKlwpL2csCiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXC5qcyQvLAogICAgICAgIGN1cnJEaXJSZWdFeHAgPSAvXlwuXC8vLAogICAgICAgIG9wID0gT2JqZWN0LnByb3RvdHlwZSwKICAgICAgICBvc3RyaW5nID0gb3AudG9TdHJpbmcsCiAgICAgICAgaGFzT3duID0gb3AuaGFzT3duUHJvcGVydHksCiAgICAgICAgaXNCcm93c2VyID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50KSwKICAgICAgICBpc1dlYldvcmtlciA9ICFpc0Jyb3dzZXIgJiYgdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICd1bmRlZmluZWQnLAogICAgICAgIC8vUFMzIGluZGljYXRlcyBsb2FkZWQgYW5kIGNvbXBsZXRlLCBidXQgbmVlZCB0byB3YWl0IGZvciBjb21wbGV0ZQogICAgICAgIC8vc3BlY2lmaWNhbGx5LiBTZXF1ZW5jZSBpcyAnbG9hZGluZycsICdsb2FkZWQnLCBleGVjdXRpb24sCiAgICAgICAgLy8gdGhlbiAnY29tcGxldGUnLiBUaGUgVUEgY2hlY2sgaXMgdW5mb3J0dW5hdGUsIGJ1dCBub3Qgc3VyZSBob3cKICAgICAgICAvL3RvIGZlYXR1cmUgdGVzdCB3L28gY2F1c2luZyBwZXJmIGlzc3Vlcy4KICAgICAgICByZWFkeVJlZ0V4cCA9IGlzQnJvd3NlciAmJiBuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdQTEFZU1RBVElPTiAzJyA/CiAgICAgICAgICAgICAgICAgICAgICAvXmNvbXBsZXRlJC8gOiAvXihjb21wbGV0ZXxsb2FkZWQpJC8sCiAgICAgICAgZGVmQ29udGV4dE5hbWUgPSAnXycsCiAgICAgICAgLy9PaCB0aGUgdHJhZ2VkeSwgZGV0ZWN0aW5nIG9wZXJhLiBTZWUgdGhlIHVzYWdlIG9mIGlzT3BlcmEgZm9yIHJlYXNvbi4KICAgICAgICBpc09wZXJhID0gdHlwZW9mIG9wZXJhICE9PSAndW5kZWZpbmVkJyAmJiBvcGVyYS50b1N0cmluZygpID09PSAnW29iamVjdCBPcGVyYV0nLAogICAgICAgIGNvbnRleHRzID0ge30sCiAgICAgICAgY2ZnID0ge30sCiAgICAgICAgZ2xvYmFsRGVmUXVldWUgPSBbXSwKICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IGZhbHNlOwoKICAgIC8vQ291bGQgbWF0Y2ggc29tZXRoaW5nIGxpa2UgJykvL2NvbW1lbnQnLCBkbyBub3QgbG9zZSB0aGUgcHJlZml4IHRvIGNvbW1lbnQuCiAgICBmdW5jdGlvbiBjb21tZW50UmVwbGFjZShtYXRjaCwgc2luZ2xlUHJlZml4KSB7CiAgICAgICAgcmV0dXJuIHNpbmdsZVByZWZpeCB8fCAnJzsKICAgIH0KCiAgICBmdW5jdGlvbiBpc0Z1bmN0aW9uKGl0KSB7CiAgICAgICAgcmV0dXJuIG9zdHJpbmcuY2FsbChpdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNBcnJheShpdCkgewogICAgICAgIHJldHVybiBvc3RyaW5nLmNhbGwoaXQpID09PSAnW29iamVjdCBBcnJheV0nOwogICAgfQoKICAgIC8qKgogICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheS4gSWYgdGhlIGZ1bmMgcmV0dXJucwogICAgICogYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaChhcnksIGZ1bmMpIHsKICAgICAgICBpZiAoYXJ5KSB7CiAgICAgICAgICAgIHZhciBpOwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJ5Lmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGl0ZXJhdGluZyBvdmVyIGFuIGFycmF5IGJhY2t3YXJkcy4gSWYgdGhlIGZ1bmMKICAgICAqIHJldHVybnMgYSB0cnVlIHZhbHVlLCBpdCB3aWxsIGJyZWFrIG91dCBvZiB0aGUgbG9vcC4KICAgICAqLwogICAgZnVuY3Rpb24gZWFjaFJldmVyc2UoYXJ5LCBmdW5jKSB7CiAgICAgICAgaWYgKGFyeSkgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgZm9yIChpID0gYXJ5Lmxlbmd0aCAtIDE7IGkgPiAtMTsgaSAtPSAxKSB7CiAgICAgICAgICAgICAgICBpZiAoYXJ5W2ldICYmIGZ1bmMoYXJ5W2ldLCBpLCBhcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaGFzUHJvcChvYmosIHByb3ApIHsKICAgICAgICByZXR1cm4gaGFzT3duLmNhbGwob2JqLCBwcm9wKTsKICAgIH0KCiAgICBmdW5jdGlvbiBnZXRPd24ob2JqLCBwcm9wKSB7CiAgICAgICAgcmV0dXJuIGhhc1Byb3Aob2JqLCBwcm9wKSAmJiBvYmpbcHJvcF07CiAgICB9CgogICAgLyoqCiAgICAgKiBDeWNsZXMgb3ZlciBwcm9wZXJ0aWVzIGluIGFuIG9iamVjdCBhbmQgY2FsbHMgYSBmdW5jdGlvbiBmb3IgZWFjaAogICAgICogcHJvcGVydHkgdmFsdWUuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdHJ1dGh5IHZhbHVlLCB0aGVuIHRoZQogICAgICogaXRlcmF0aW9uIGlzIHN0b3BwZWQuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGVhY2hQcm9wKG9iaiwgZnVuYykgewogICAgICAgIHZhciBwcm9wOwogICAgICAgIGZvciAocHJvcCBpbiBvYmopIHsKICAgICAgICAgICAgaWYgKGhhc1Byb3Aob2JqLCBwcm9wKSkgewogICAgICAgICAgICAgICAgaWYgKGZ1bmMob2JqW3Byb3BdLCBwcm9wKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2ltcGxlIGZ1bmN0aW9uIHRvIG1peCBpbiBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGludG8gdGFyZ2V0LAogICAgICogYnV0IG9ubHkgaWYgdGFyZ2V0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSBhIHByb3BlcnR5IG9mIHRoZSBzYW1lIG5hbWUuCiAgICAgKi8KICAgIGZ1bmN0aW9uIG1peGluKHRhcmdldCwgc291cmNlLCBmb3JjZSwgZGVlcFN0cmluZ01peGluKSB7CiAgICAgICAgaWYgKHNvdXJjZSkgewogICAgICAgICAgICBlYWNoUHJvcChzb3VyY2UsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgaWYgKGZvcmNlIHx8ICFoYXNQcm9wKHRhcmdldCwgcHJvcCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZGVlcFN0cmluZ01peGluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIWlzQXJyYXkodmFsdWUpICYmICFpc0Z1bmN0aW9uKHZhbHVlKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAhKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0YXJnZXRbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKHRhcmdldFtwcm9wXSwgdmFsdWUsIGZvcmNlLCBkZWVwU3RyaW5nTWl4aW4pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0YXJnZXQ7CiAgICB9CgogICAgLy9TaW1pbGFyIHRvIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBidXQgdGhlICd0aGlzJyBvYmplY3QgaXMgc3BlY2lmaWVkCiAgICAvL2ZpcnN0LCBzaW5jZSBpdCBpcyBlYXNpZXIgdG8gcmVhZC9maWd1cmUgb3V0IHdoYXQgJ3RoaXMnIHdpbGwgYmUuCiAgICBmdW5jdGlvbiBiaW5kKG9iaiwgZm4pIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewogICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkob2JqLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gc2NyaXB0cygpIHsKICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpOwogICAgfQoKICAgIGZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGVycikgewogICAgICAgIHRocm93IGVycjsKICAgIH0KCiAgICAvL0FsbG93IGdldHRpbmcgYSBnbG9iYWwgdGhhdCBpcyBleHByZXNzZWQgaW4KICAgIC8vZG90IG5vdGF0aW9uLCBsaWtlICdhLmIuYycuCiAgICBmdW5jdGlvbiBnZXRHbG9iYWwodmFsdWUpIHsKICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICB9CiAgICAgICAgdmFyIGcgPSBnbG9iYWw7CiAgICAgICAgZWFjaCh2YWx1ZS5zcGxpdCgnLicpLCBmdW5jdGlvbiAocGFydCkgewogICAgICAgICAgICBnID0gZ1twYXJ0XTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gZzsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnN0cnVjdHMgYW4gZXJyb3Igd2l0aCBhIHBvaW50ZXIgdG8gYW4gVVJMIHdpdGggbW9yZSBpbmZvcm1hdGlvbi4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBpZCB0aGUgZXJyb3IgSUQgdGhhdCBtYXBzIHRvIGFuIElEIG9uIGEgd2ViIHBhZ2UuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBodW1hbiByZWFkYWJsZSBlcnJvci4KICAgICAqIEBwYXJhbSB7RXJyb3J9IFtlcnJdIHRoZSBvcmlnaW5hbCBlcnJvciwgaWYgdGhlcmUgaXMgb25lLgogICAgICoKICAgICAqIEByZXR1cm5zIHtFcnJvcn0KICAgICAqLwogICAgZnVuY3Rpb24gbWFrZUVycm9yKGlkLCBtc2csIGVyciwgcmVxdWlyZU1vZHVsZXMpIHsKICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihtc2cgKyAnXG5odHRwczovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCMnICsgaWQpOwogICAgICAgIGUucmVxdWlyZVR5cGUgPSBpZDsKICAgICAgICBlLnJlcXVpcmVNb2R1bGVzID0gcmVxdWlyZU1vZHVsZXM7CiAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICBlLm9yaWdpbmFsRXJyb3IgPSBlcnI7CiAgICAgICAgfQogICAgICAgIHJldHVybiBlOwogICAgfQoKICAgIGlmICh0eXBlb2YgZGVmaW5lICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIC8vSWYgYSBkZWZpbmUgaXMgYWxyZWFkeSBpbiBwbGF5IHZpYSBhbm90aGVyIEFNRCBsb2FkZXIsCiAgICAgICAgLy9kbyBub3Qgb3ZlcndyaXRlLgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAodHlwZW9mIHJlcXVpcmVqcyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXF1aXJlanMpKSB7CiAgICAgICAgICAgIC8vRG8gbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyByZXF1aXJlanMgaW5zdGFuY2UuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY2ZnID0gcmVxdWlyZWpzOwogICAgICAgIHJlcXVpcmVqcyA9IHVuZGVmaW5lZDsKICAgIH0KCiAgICAvL0FsbG93IGZvciBhIHJlcXVpcmUgY29uZmlnIG9iamVjdAogICAgaWYgKHR5cGVvZiByZXF1aXJlICE9PSAndW5kZWZpbmVkJyAmJiAhaXNGdW5jdGlvbihyZXF1aXJlKSkgewogICAgICAgIC8vYXNzdW1lIGl0IGlzIGEgY29uZmlnIG9iamVjdC4KICAgICAgICBjZmcgPSByZXF1aXJlOwogICAgICAgIHJlcXVpcmUgPSB1bmRlZmluZWQ7CiAgICB9CgogICAgZnVuY3Rpb24gbmV3Q29udGV4dChjb250ZXh0TmFtZSkgewogICAgICAgIHZhciBpbkNoZWNrTG9hZGVkLCBNb2R1bGUsIGNvbnRleHQsIGhhbmRsZXJzLAogICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCwKICAgICAgICAgICAgY29uZmlnID0gewogICAgICAgICAgICAgICAgLy9EZWZhdWx0cy4gRG8gbm90IHNldCBhIGRlZmF1bHQgZm9yIG1hcAogICAgICAgICAgICAgICAgLy9jb25maWcgdG8gc3BlZWQgdXAgbm9ybWFsaXplKCksIHdoaWNoCiAgICAgICAgICAgICAgICAvL3dpbGwgcnVuIGZhc3RlciBpZiB0aGVyZSBpcyBubyBkZWZhdWx0LgogICAgICAgICAgICAgICAgd2FpdFNlY29uZHM6IDcsCiAgICAgICAgICAgICAgICBiYXNlVXJsOiAnLi8nLAogICAgICAgICAgICAgICAgcGF0aHM6IHt9LAogICAgICAgICAgICAgICAgYnVuZGxlczoge30sCiAgICAgICAgICAgICAgICBwa2dzOiB7fSwKICAgICAgICAgICAgICAgIHNoaW06IHt9LAogICAgICAgICAgICAgICAgY29uZmlnOiB7fQogICAgICAgICAgICB9LAogICAgICAgICAgICByZWdpc3RyeSA9IHt9LAogICAgICAgICAgICAvL3JlZ2lzdHJ5IG9mIGp1c3QgZW5hYmxlZCBtb2R1bGVzLCB0byBzcGVlZAogICAgICAgICAgICAvL2N5Y2xlIGJyZWFraW5nIGNvZGUgd2hlbiBsb3RzIG9mIG1vZHVsZXMKICAgICAgICAgICAgLy9hcmUgcmVnaXN0ZXJlZCwgYnV0IG5vdCBhY3RpdmF0ZWQuCiAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeSA9IHt9LAogICAgICAgICAgICB1bmRlZkV2ZW50cyA9IHt9LAogICAgICAgICAgICBkZWZRdWV1ZSA9IFtdLAogICAgICAgICAgICBkZWZpbmVkID0ge30sCiAgICAgICAgICAgIHVybEZldGNoZWQgPSB7fSwKICAgICAgICAgICAgYnVuZGxlc01hcCA9IHt9LAogICAgICAgICAgICByZXF1aXJlQ291bnRlciA9IDEsCiAgICAgICAgICAgIHVubm9ybWFsaXplZENvdW50ZXIgPSAxOwoKICAgICAgICAvKioKICAgICAgICAgKiBUcmltcyB0aGUgLiBhbmQgLi4gZnJvbSBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzLgogICAgICAgICAqIEl0IHdpbGwga2VlcCBhIGxlYWRpbmcgcGF0aCBzZWdtZW50IGlmIGEgLi4gd2lsbCBiZWNvbWUKICAgICAgICAgKiB0aGUgZmlyc3QgcGF0aCBzZWdtZW50LCB0byBoZWxwIHdpdGggbW9kdWxlIG5hbWUgbG9va3VwcywKICAgICAgICAgKiB3aGljaCBhY3QgbGlrZSBwYXRocywgYnV0IGNhbiBiZSByZW1hcHBlZC4gQnV0IHRoZSBlbmQgcmVzdWx0LAogICAgICAgICAqIGFsbCBwYXRocyB0aGF0IHVzZSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBsb29rIG5vcm1hbGl6ZWQuCiAgICAgICAgICogTk9URTogdGhpcyBtZXRob2QgTU9ESUZJRVMgdGhlIGlucHV0IGFycmF5LgogICAgICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyeSB0aGUgYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0cmltRG90cyhhcnkpIHsKICAgICAgICAgICAgdmFyIGksIHBhcnQ7CiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHBhcnQgPSBhcnlbaV07CiAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICBpIC09IDE7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJZiBhdCB0aGUgc3RhcnQsIG9yIHByZXZpb3VzIHZhbHVlIGlzIHN0aWxsIC4uLAogICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCBpdCBtYXkKICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCB3b3JrIHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCwgZXZlbiB0aG91Z2gKICAgICAgICAgICAgICAgICAgICAvLyBhcyBhbiBJRCBpdCBpcyBsZXNzIHRoYW4gaWRlYWwuIEluIGxhcmdlciBwb2ludAogICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2ljayBvdXQgYW4gZXJyb3IuCiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDAgfHwgKGkgPT09IDEgJiYgYXJ5WzJdID09PSAnLi4nKSB8fCBhcnlbaSAtIDFdID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJ5LnNwbGljZShpIC0gMSwgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEdpdmVuIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUsIGxpa2UgLi9zb21ldGhpbmcsIG5vcm1hbGl6ZSBpdCB0bwogICAgICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWUKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZU5hbWUgYSByZWFsIG5hbWUgdGhhdCB0aGUgbmFtZSBhcmcgaXMgcmVsYXRpdmUKICAgICAgICAgKiB0by4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGFwcGx5TWFwIGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSB2YWx1ZS4gU2hvdWxkCiAgICAgICAgICogb25seSBiZSBkb25lIGlmIHRoaXMgbm9ybWFsaXphdGlvbiBpcyBmb3IgYSBkZXBlbmRlbmN5IElELgogICAgICAgICAqIEByZXR1cm5zIHtTdHJpbmd9IG5vcm1hbGl6ZWQgbmFtZQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShuYW1lLCBiYXNlTmFtZSwgYXBwbHlNYXApIHsKICAgICAgICAgICAgdmFyIHBrZ01haW4sIG1hcFZhbHVlLCBuYW1lUGFydHMsIGksIGosIG5hbWVTZWdtZW50LCBsYXN0SW5kZXgsCiAgICAgICAgICAgICAgICBmb3VuZE1hcCwgZm91bmRJLCBmb3VuZFN0YXJNYXAsIHN0YXJJLCBub3JtYWxpemVkQmFzZVBhcnRzLAogICAgICAgICAgICAgICAgYmFzZVBhcnRzID0gKGJhc2VOYW1lICYmIGJhc2VOYW1lLnNwbGl0KCcvJykpLAogICAgICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCwKICAgICAgICAgICAgICAgIHN0YXJNYXAgPSBtYXAgJiYgbWFwWycqJ107CgogICAgICAgICAgICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuCiAgICAgICAgICAgIGlmIChuYW1lKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnLycpOwogICAgICAgICAgICAgICAgbGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxOwoKICAgICAgICAgICAgICAgIC8vIElmIHdhbnRpbmcgbm9kZSBJRCBjb21wYXRpYmlsaXR5LCBzdHJpcCAuanMgZnJvbSBlbmQKICAgICAgICAgICAgICAgIC8vIG9mIElEcy4gSGF2ZSB0byBkbyB0aGlzIGhlcmUsIGFuZCBub3QgaW4gbmFtZVRvVXJsCiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIG5vZGUgYWxsb3dzIGVpdGhlciAuanMgb3Igbm9uIC5qcyB0byBtYXAKICAgICAgICAgICAgICAgIC8vIHRvIHNhbWUgZmlsZS4KICAgICAgICAgICAgICAgIGlmIChjb25maWcubm9kZUlkQ29tcGF0ICYmIGpzU3VmZml4UmVnRXhwLnRlc3QobmFtZVtsYXN0SW5kZXhdKSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVbbGFzdEluZGV4XSA9IG5hbWVbbGFzdEluZGV4XS5yZXBsYWNlKGpzU3VmZml4UmVnRXhwLCAnJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gU3RhcnRzIHdpdGggYSAnLicgc28gbmVlZCB0aGUgYmFzZU5hbWUKICAgICAgICAgICAgICAgIGlmIChuYW1lWzBdLmNoYXJBdCgwKSA9PT0gJy4nICYmIGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgIC8vQ29udmVydCBiYXNlTmFtZSB0byBhcnJheSwgYW5kIGxvcCBvZmYgdGhlIGxhc3QgcGFydCwKICAgICAgICAgICAgICAgICAgICAvL3NvIHRoYXQgLiBtYXRjaGVzIHRoYXQgJ2RpcmVjdG9yeScgYW5kIG5vdCBuYW1lIG9mIHRoZSBiYXNlTmFtZSdzCiAgICAgICAgICAgICAgICAgICAgLy9tb2R1bGUuIEZvciBpbnN0YW5jZSwgYmFzZU5hbWUgb2YgJ29uZS90d28vdGhyZWUnLCBtYXBzIHRvCiAgICAgICAgICAgICAgICAgICAgLy8nb25lL3R3by90aHJlZS5qcycsIGJ1dCB3ZSB3YW50IHRoZSBkaXJlY3RvcnksICdvbmUvdHdvJyBmb3IKICAgICAgICAgICAgICAgICAgICAvL3RoaXMgbm9ybWFsaXphdGlvbi4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkQmFzZVBhcnRzID0gYmFzZVBhcnRzLnNsaWNlKDAsIGJhc2VQYXJ0cy5sZW5ndGggLSAxKTsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplZEJhc2VQYXJ0cy5jb25jYXQobmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHJpbURvdHMobmFtZSk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5qb2luKCcvJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vQXBwbHkgbWFwIGNvbmZpZyBpZiBhdmFpbGFibGUuCiAgICAgICAgICAgIGlmIChhcHBseU1hcCAmJiBtYXAgJiYgKGJhc2VQYXJ0cyB8fCBzdGFyTWFwKSkgewogICAgICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpOwoKICAgICAgICAgICAgICAgIG91dGVyTG9vcDogZm9yIChpID0gbmFtZVBhcnRzLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgIG5hbWVTZWdtZW50ID0gbmFtZVBhcnRzLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2VQYXJ0cykgewogICAgICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgogICAgICAgICAgICAgICAgICAgICAgICAvL1NvLCBkbyBqb2lucyBvbiB0aGUgYmlnZ2VzdCB0byBzbWFsbGVzdCBsZW5ndGhzIG9mIGJhc2VQYXJ0cy4KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gYmFzZVBhcnRzLmxlbmd0aDsgaiA+IDA7IGogLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBnZXRPd24obWFwLCBiYXNlUGFydHMuc2xpY2UoMCwgaikuam9pbignLycpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzIGNvbmZpZywgZmluZCBpZiBpdCBoYXMgb25lIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBWYWx1ZSA9IGdldE93bihtYXBWYWx1ZSwgbmFtZVNlZ21lbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IG1hcFZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBvdXRlckxvb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LAogICAgICAgICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgYSBzaG9ydGVyIHNlZ21lbnQgbWF0Y2ggbGF0ZXIgaW4gYSBtYXRjaGluZwogICAgICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIgdGhpcyBzdGFyIG1hcC4KICAgICAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIGdldE93bihzdGFyTWFwLCBuYW1lU2VnbWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTdGFyTWFwID0gZ2V0T3duKHN0YXJNYXAsIG5hbWVTZWdtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkgewogICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gZm91bmRTdGFyTWFwOwogICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkgewogICAgICAgICAgICAgICAgICAgIG5hbWVQYXJ0cy5zcGxpY2UoMCwgZm91bmRJLCBmb3VuZE1hcCk7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0cy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIElmIHRoZSBuYW1lIHBvaW50cyB0byBhIHBhY2thZ2UncyBuYW1lLCB1c2UKICAgICAgICAgICAgLy8gdGhlIHBhY2thZ2UgbWFpbiBpbnN0ZWFkLgogICAgICAgICAgICBwa2dNYWluID0gZ2V0T3duKGNvbmZpZy5wa2dzLCBuYW1lKTsKCiAgICAgICAgICAgIHJldHVybiBwa2dNYWluID8gcGtnTWFpbiA6IG5hbWU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZW1vdmVTY3JpcHQobmFtZSkgewogICAgICAgICAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgICAgICAgICBlYWNoKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlwdE5vZGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpID09PSBuYW1lICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHROb2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcpID09PSBjb250ZXh0LmNvbnRleHROYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGhhc1BhdGhGYWxsYmFjayhpZCkgewogICAgICAgICAgICB2YXIgcGF0aENvbmZpZyA9IGdldE93bihjb25maWcucGF0aHMsIGlkKTsKICAgICAgICAgICAgaWYgKHBhdGhDb25maWcgJiYgaXNBcnJheShwYXRoQ29uZmlnKSAmJiBwYXRoQ29uZmlnLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIC8vUG9wIG9mZiB0aGUgZmlyc3QgYXJyYXkgdmFsdWUsIHNpbmNlIGl0IGZhaWxlZCwgYW5kCiAgICAgICAgICAgICAgICAvL3JldHJ5CiAgICAgICAgICAgICAgICBwYXRoQ29uZmlnLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUudW5kZWYoaWQpOwoKICAgICAgICAgICAgICAgIC8vQ3VzdG9tIHJlcXVpcmUgdGhhdCBkb2VzIG5vdCBkbyBtYXAgdHJhbnNsYXRpb24sIHNpbmNlCiAgICAgICAgICAgICAgICAvL0lEIGlzICJhYnNvbHV0ZSIsIGFscmVhZHkgbWFwcGVkL3Jlc29sdmVkLgogICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZShudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgc2tpcE1hcDogdHJ1ZQogICAgICAgICAgICAgICAgfSkoW2lkXSk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vVHVybnMgYSBwbHVnaW4hcmVzb3VyY2UgdG8gW3BsdWdpbiwgcmVzb3VyY2VdCiAgICAgICAgLy93aXRoIHRoZSBwbHVnaW4gYmVpbmcgdW5kZWZpbmVkIGlmIHRoZSBuYW1lCiAgICAgICAgLy9kaWQgbm90IGhhdmUgYSBwbHVnaW4gcHJlZml4LgogICAgICAgIGZ1bmN0aW9uIHNwbGl0UHJlZml4KG5hbWUpIHsKICAgICAgICAgICAgdmFyIHByZWZpeCwKICAgICAgICAgICAgICAgIGluZGV4ID0gbmFtZSA/IG5hbWUuaW5kZXhPZignIScpIDogLTE7CiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7CiAgICAgICAgICAgICAgICBwcmVmaXggPSBuYW1lLnN1YnN0cmluZygwLCBpbmRleCk7CiAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxLCBuYW1lLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFtwcmVmaXgsIG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQ3JlYXRlcyBhIG1vZHVsZSBtYXBwaW5nIHRoYXQgaW5jbHVkZXMgcGx1Z2luIHByZWZpeCwgbW9kdWxlCiAgICAgICAgICogbmFtZSwgYW5kIHBhdGguIElmIHBhcmVudE1vZHVsZU1hcCBpcyBwcm92aWRlZCBpdCB3aWxsCiAgICAgICAgICogYWxzbyBub3JtYWxpemUgdGhlIG5hbWUgdmlhIHJlcXVpcmUubm9ybWFsaXplKCkKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSBtb2R1bGUgbmFtZQogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBbcGFyZW50TW9kdWxlTWFwXSBwYXJlbnQgbW9kdWxlIG1hcAogICAgICAgICAqIGZvciB0aGUgbW9kdWxlIG5hbWUsIHVzZWQgdG8gcmVzb2x2ZSByZWxhdGl2ZSBuYW1lcy4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGlzTm9ybWFsaXplZDogaXMgdGhlIElEIGFscmVhZHkgbm9ybWFsaXplZC4KICAgICAgICAgKiBUaGlzIGlzIHRydWUgaWYgdGhpcyBjYWxsIGlzIGRvbmUgZm9yIGEgZGVmaW5lKCkgbW9kdWxlIElELgogICAgICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gYXBwbHlNYXA6IGFwcGx5IHRoZSBtYXAgY29uZmlnIHRvIHRoZSBJRC4KICAgICAgICAgKiBTaG91bGQgb25seSBiZSB0cnVlIGlmIHRoaXMgbWFwIGlzIGZvciBhIGRlcGVuZGVuY3kuCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIG1ha2VNb2R1bGVNYXAobmFtZSwgcGFyZW50TW9kdWxlTWFwLCBpc05vcm1hbGl6ZWQsIGFwcGx5TWFwKSB7CiAgICAgICAgICAgIHZhciB1cmwsIHBsdWdpbk1vZHVsZSwgc3VmZml4LCBuYW1lUGFydHMsCiAgICAgICAgICAgICAgICBwcmVmaXggPSBudWxsLAogICAgICAgICAgICAgICAgcGFyZW50TmFtZSA9IHBhcmVudE1vZHVsZU1hcCA/IHBhcmVudE1vZHVsZU1hcC5uYW1lIDogbnVsbCwKICAgICAgICAgICAgICAgIG9yaWdpbmFsTmFtZSA9IG5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZSA9IHRydWUsCiAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9ICcnOwoKICAgICAgICAgICAgLy9JZiBubyBuYW1lLCB0aGVuIGl0IG1lYW5zIGl0IGlzIGEgcmVxdWlyZSBjYWxsLCBnZW5lcmF0ZSBhbgogICAgICAgICAgICAvL2ludGVybmFsIG5hbWUuCiAgICAgICAgICAgIGlmICghbmFtZSkgewogICAgICAgICAgICAgICAgaXNEZWZpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIG5hbWUgPSAnX0ByJyArIChyZXF1aXJlQ291bnRlciArPSAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmFtZVBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7CiAgICAgICAgICAgIHByZWZpeCA9IG5hbWVQYXJ0c1swXTsKICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0c1sxXTsKCiAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgICAgIHByZWZpeCA9IG5vcm1hbGl6ZShwcmVmaXgsIHBhcmVudE5hbWUsIGFwcGx5TWFwKTsKICAgICAgICAgICAgICAgIHBsdWdpbk1vZHVsZSA9IGdldE93bihkZWZpbmVkLCBwcmVmaXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0FjY291bnQgZm9yIHJlbGF0aXZlIHBhdGhzIGlmIHRoZXJlIGlzIGEgYmFzZSBuYW1lLgogICAgICAgICAgICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgaWYgKHByZWZpeCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBuYW1lOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGx1Z2luTW9kdWxlICYmIHBsdWdpbk1vZHVsZS5ub3JtYWxpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9QbHVnaW4gaXMgbG9hZGVkLCB1c2UgaXRzIG5vcm1hbGl6ZSBtZXRob2QuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gcGx1Z2luTW9kdWxlLm5vcm1hbGl6ZShuYW1lLCBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIG5lc3RlZCBwbHVnaW4gcmVmZXJlbmNlcywgdGhlbiBkbyBub3QgdHJ5IHRvCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSwgYXMgaXQgd2lsbCBub3Qgbm9ybWFsaXplIGNvcnJlY3RseS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBwbGFjZXMgYSByZXN0cmljdGlvbiBvbiByZXNvdXJjZUlkcywgYW5kIHRoZSBsb25nZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGVybSBzb2x1dGlvbiBpcyBub3QgdG8gbm9ybWFsaXplIHVudGlsIHBsdWdpbnMgYXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvYWRlZCBhbmQgYWxsIG5vcm1hbGl6YXRpb25zIHRvIGFsbG93IGZvciBhc3luYwogICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkaW5nIG9mIGEgbG9hZGVyIHBsdWdpbi4gQnV0IGZvciBub3csIGZpeGVzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tb24gdXNlcy4gRGV0YWlscyBpbiAjMTEzMQogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5hbWUuaW5kZXhPZignIScpID09PSAtMSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIGFwcGx5TWFwKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vQSByZWd1bGFyIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CgogICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplZCBuYW1lIG1heSBiZSBhIHBsdWdpbiBJRCBkdWUgdG8gbWFwIGNvbmZpZwogICAgICAgICAgICAgICAgICAgIC8vYXBwbGljYXRpb24gaW4gbm9ybWFsaXplLiBUaGUgbWFwIGNvbmZpZyB2YWx1ZXMgbXVzdAogICAgICAgICAgICAgICAgICAgIC8vYWxyZWFkeSBiZSBub3JtYWxpemVkLCBzbyBkbyBub3QgbmVlZCB0byByZWRvIHRoYXQgcGFydC4KICAgICAgICAgICAgICAgICAgICBuYW1lUGFydHMgPSBzcGxpdFByZWZpeChub3JtYWxpemVkTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZVBhcnRzWzBdOwogICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZVBhcnRzWzFdOwogICAgICAgICAgICAgICAgICAgIGlzTm9ybWFsaXplZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIHVybCA9IGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZWROYW1lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiB0aGUgaWQgaXMgYSBwbHVnaW4gaWQgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBpZiBpdCBuZWVkcwogICAgICAgICAgICAvL25vcm1hbGl6YXRpb24sIHN0YW1wIGl0IHdpdGggYSB1bmlxdWUgSUQgc28gdHdvIG1hdGNoaW5nIHJlbGF0aXZlCiAgICAgICAgICAgIC8vaWRzIHRoYXQgbWF5IGNvbmZsaWN0IGNhbiBiZSBzZXBhcmF0ZS4KICAgICAgICAgICAgc3VmZml4ID0gcHJlZml4ICYmICFwbHVnaW5Nb2R1bGUgJiYgIWlzTm9ybWFsaXplZCA/CiAgICAgICAgICAgICAgICAgICAgICdfdW5ub3JtYWxpemVkJyArICh1bm5vcm1hbGl6ZWRDb3VudGVyICs9IDEpIDoKICAgICAgICAgICAgICAgICAgICAgJyc7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsCiAgICAgICAgICAgICAgICBuYW1lOiBub3JtYWxpemVkTmFtZSwKICAgICAgICAgICAgICAgIHBhcmVudE1hcDogcGFyZW50TW9kdWxlTWFwLAogICAgICAgICAgICAgICAgdW5ub3JtYWxpemVkOiAhIXN1ZmZpeCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgb3JpZ2luYWxOYW1lOiBvcmlnaW5hbE5hbWUsCiAgICAgICAgICAgICAgICBpc0RlZmluZTogaXNEZWZpbmUsCiAgICAgICAgICAgICAgICBpZDogKHByZWZpeCA/CiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArICchJyArIG5vcm1hbGl6ZWROYW1lIDoKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUpICsgc3VmZml4CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnZXRNb2R1bGUoZGVwTWFwKSB7CiAgICAgICAgICAgIHZhciBpZCA9IGRlcE1hcC5pZCwKICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwoKICAgICAgICAgICAgaWYgKCFtb2QpIHsKICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXSA9IG5ldyBjb250ZXh0Lk1vZHVsZShkZXBNYXApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbW9kOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb24oZGVwTWFwLCBuYW1lLCBmbikgewogICAgICAgICAgICB2YXIgaWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgIGlmIChoYXNQcm9wKGRlZmluZWQsIGlkKSAmJgogICAgICAgICAgICAgICAgICAgICghbW9kIHx8IG1vZC5kZWZpbmVFbWl0Q29tcGxldGUpKSB7CiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgZm4oZGVmaW5lZFtpZF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbW9kID0gZ2V0TW9kdWxlKGRlcE1hcCk7CiAgICAgICAgICAgICAgICBpZiAobW9kLmVycm9yICYmIG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICBmbihtb2QuZXJyb3IpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtb2Qub24obmFtZSwgZm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBvbkVycm9yKGVyciwgZXJyYmFjaykgewogICAgICAgICAgICB2YXIgaWRzID0gZXJyLnJlcXVpcmVNb2R1bGVzLAogICAgICAgICAgICAgICAgbm90aWZpZWQgPSBmYWxzZTsKCiAgICAgICAgICAgIGlmIChlcnJiYWNrKSB7CiAgICAgICAgICAgICAgICBlcnJiYWNrKGVycik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlYWNoKGlkcywgZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgaWQpOwogICAgICAgICAgICAgICAgICAgIGlmIChtb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9TZXQgZXJyb3Igb24gbW9kdWxlLCBzbyBpdCBza2lwcyB0aW1lb3V0IGNoZWNrcy4KICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmICghbm90aWZpZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gdHJhbnNmZXIgZ2xvYmFsUXVldWUgaXRlbXMgdG8gdGhpcyBjb250ZXh0J3MKICAgICAgICAgKiBkZWZRdWV1ZS4KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiB0YWtlR2xvYmFsUXVldWUoKSB7CiAgICAgICAgICAgIC8vUHVzaCBhbGwgdGhlIGdsb2JhbERlZlF1ZXVlIGl0ZW1zIGludG8gdGhlIGNvbnRleHQncyBkZWZRdWV1ZQogICAgICAgICAgICBpZiAoZ2xvYmFsRGVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBlYWNoKGdsb2JhbERlZlF1ZXVlLCBmdW5jdGlvbihxdWV1ZUl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBxdWV1ZUl0ZW1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5wdXNoKHF1ZXVlSXRlbSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGhhbmRsZXJzID0gewogICAgICAgICAgICAncmVxdWlyZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QucmVxdWlyZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QucmVxdWlyZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtb2QucmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobW9kLm1hcCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAnZXhwb3J0cyc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIG1vZC51c2luZ0V4cG9ydHMgPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKG1vZC5tYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV4cG9ydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW21vZC5tYXAuaWRdID0gbW9kLmV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLmV4cG9ydHMgPSBkZWZpbmVkW21vZC5tYXAuaWRdID0ge30pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ21vZHVsZSc6IGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIGlmIChtb2QubW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZC5tb2R1bGU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLm1vZHVsZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1vZC5tYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogbW9kLm1hcC51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE93bihjb25maWcuY29uZmlnLCBtb2QubWFwLmlkKSB8fCB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogbW9kLmV4cG9ydHMgfHwgKG1vZC5leHBvcnRzID0ge30pCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjbGVhblJlZ2lzdHJ5KGlkKSB7CiAgICAgICAgICAgIC8vQ2xlYW4gdXAgbWFjaGluZXJ5IHVzZWQgZm9yIHdhaXRpbmcgbW9kdWxlcy4KICAgICAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5W2lkXTsKICAgICAgICAgICAgZGVsZXRlIGVuYWJsZWRSZWdpc3RyeVtpZF07CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBicmVha0N5Y2xlKG1vZCwgdHJhY2VkLCBwcm9jZXNzZWQpIHsKICAgICAgICAgICAgdmFyIGlkID0gbW9kLm1hcC5pZDsKCiAgICAgICAgICAgIGlmIChtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgIG1vZC5lbWl0KCdlcnJvcicsIG1vZC5lcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0cmFjZWRbaWRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVhY2gobW9kLmRlcE1hcHMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGVwSWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcCA9IGdldE93bihyZWdpc3RyeSwgZGVwSWQpOwoKICAgICAgICAgICAgICAgICAgICAvL09ubHkgZm9yY2UgdGhpbmdzIHRoYXQgaGF2ZSBub3QgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAgLy9iZWluZyBkZWZpbmVkLCBzbyBzdGlsbCBpbiB0aGUgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAgICAgLy9hbmQgb25seSBpZiBpdCBoYXMgbm90IGJlZW4gbWF0Y2hlZCB1cAogICAgICAgICAgICAgICAgICAgIC8vaW4gdGhlIG1vZHVsZSBhbHJlYWR5LgogICAgICAgICAgICAgICAgICAgIGlmIChkZXAgJiYgIW1vZC5kZXBNYXRjaGVkW2ldICYmICFwcm9jZXNzZWRbZGVwSWRdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRPd24odHJhY2VkLCBkZXBJZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5kZWZpbmVEZXAoaSwgZGVmaW5lZFtkZXBJZF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLmNoZWNrKCk7IC8vcGFzcyBmYWxzZT8KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUoZGVwLCB0cmFjZWQsIHByb2Nlc3NlZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHByb2Nlc3NlZFtpZF0gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjaGVja0xvYWRlZCgpIHsKICAgICAgICAgICAgdmFyIGVyciwgdXNpbmdQYXRoRmFsbGJhY2ssCiAgICAgICAgICAgICAgICB3YWl0SW50ZXJ2YWwgPSBjb25maWcud2FpdFNlY29uZHMgKiAxMDAwLAogICAgICAgICAgICAgICAgLy9JdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSB3YWl0IGludGVydmFsIGJ5IHVzaW5nIHdhaXRTZWNvbmRzIG9mIDAuCiAgICAgICAgICAgICAgICBleHBpcmVkID0gd2FpdEludGVydmFsICYmIChjb250ZXh0LnN0YXJ0VGltZSArIHdhaXRJbnRlcnZhbCkgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKICAgICAgICAgICAgICAgIG5vTG9hZHMgPSBbXSwKICAgICAgICAgICAgICAgIHJlcUNhbGxzID0gW10sCiAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgIG5lZWRDeWNsZUNoZWNrID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vRG8gbm90IGJvdGhlciBpZiB0aGlzIGNhbGwgd2FzIGEgcmVzdWx0IG9mIGEgY3ljbGUgYnJlYWsuCiAgICAgICAgICAgIGlmIChpbkNoZWNrTG9hZGVkKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGluQ2hlY2tMb2FkZWQgPSB0cnVlOwoKICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIG1vZHVsZXMuCiAgICAgICAgICAgIGVhY2hQcm9wKGVuYWJsZWRSZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1vZC5tYXAsCiAgICAgICAgICAgICAgICAgICAgbW9kSWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgLy9Ta2lwIHRoaW5ncyB0aGF0IGFyZSBub3QgZW5hYmxlZCBvciBpbiBlcnJvciBzdGF0ZS4KICAgICAgICAgICAgICAgIGlmICghbW9kLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICByZXFDYWxscy5wdXNoKG1vZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFtb2QuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGV4ZWN1dGVkLCBhbmQgaXQgaGFzIG5vdAogICAgICAgICAgICAgICAgICAgIC8vYmVlbiBpbml0ZWQgYW5kIHRpbWUgaXMgdXAsIHJlbWVtYmVyIGl0LgogICAgICAgICAgICAgICAgICAgIGlmICghbW9kLmluaXRlZCAmJiBleHBpcmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQYXRoRmFsbGJhY2sobW9kSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ1BhdGhGYWxsYmFjayA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9Mb2Fkcy5wdXNoKG1vZElkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChtb2RJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtb2QuaW5pdGVkICYmIG1vZC5mZXRjaGVkICYmIG1hcC5pc0RlZmluZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzdGlsbExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hcC5wcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTm8gcmVhc29uIHRvIGtlZXAgbG9va2luZyBmb3IgdW5maW5pc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2FkaW5nLiBJZiB0aGUgb25seSBzdGlsbExvYWRpbmcgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wbHVnaW4gcmVzb3VyY2UgdGhvdWdoLCBrZWVwIGdvaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZWNhdXNlIGl0IG1heSBiZSB0aGF0IGEgcGx1Z2luIHJlc291cmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lzIHdhaXRpbmcgb24gYSBub24tcGx1Z2luIGN5Y2xlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChuZWVkQ3ljbGVDaGVjayA9IGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoZXhwaXJlZCAmJiBub0xvYWRzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgLy9JZiB3YWl0IHRpbWUgZXhwaXJlZCwgdGhyb3cgZXJyb3Igb2YgdW5sb2FkZWQgbW9kdWxlcy4KICAgICAgICAgICAgICAgIGVyciA9IG1ha2VFcnJvcigndGltZW91dCcsICdMb2FkIHRpbWVvdXQgZm9yIG1vZHVsZXM6ICcgKyBub0xvYWRzLCBudWxsLCBub0xvYWRzKTsKICAgICAgICAgICAgICAgIGVyci5jb250ZXh0TmFtZSA9IGNvbnRleHQuY29udGV4dE5hbWU7CiAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihlcnIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL05vdCBleHBpcmVkLCBjaGVjayBmb3IgYSBjeWNsZS4KICAgICAgICAgICAgaWYgKG5lZWRDeWNsZUNoZWNrKSB7CiAgICAgICAgICAgICAgICBlYWNoKHJlcUNhbGxzLCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWtDeWNsZShtb2QsIHt9LCB7fSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9JZiBzdGlsbCB3YWl0aW5nIG9uIGxvYWRzLCBhbmQgdGhlIHdhaXRpbmcgbG9hZCBpcyBzb21ldGhpbmcKICAgICAgICAgICAgLy9vdGhlciB0aGFuIGEgcGx1Z2luIHJlc291cmNlLCBvciB0aGVyZSBhcmUgc3RpbGwgb3V0c3RhbmRpbmcKICAgICAgICAgICAgLy9zY3JpcHRzLCB0aGVuIGp1c3QgdHJ5IGJhY2sgbGF0ZXIuCiAgICAgICAgICAgIGlmICgoIWV4cGlyZWQgfHwgdXNpbmdQYXRoRmFsbGJhY2spICYmIHN0aWxsTG9hZGluZykgewogICAgICAgICAgICAgICAgLy9Tb21ldGhpbmcgaXMgc3RpbGwgd2FpdGluZyB0byBsb2FkLiBXYWl0IGZvciBpdCwgYnV0IG9ubHkKICAgICAgICAgICAgICAgIC8vaWYgYSB0aW1lb3V0IGlzIG5vdCBhbHJlYWR5IGluIGVmZmVjdC4KICAgICAgICAgICAgICAgIGlmICgoaXNCcm93c2VyIHx8IGlzV2ViV29ya2VyKSAmJiAhY2hlY2tMb2FkZWRUaW1lb3V0SWQpIHsKICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZFRpbWVvdXRJZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgICAgICAgICAgfSwgNTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpbkNoZWNrTG9hZGVkID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBNb2R1bGUgPSBmdW5jdGlvbiAobWFwKSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRzID0gZ2V0T3duKHVuZGVmRXZlbnRzLCBtYXAuaWQpIHx8IHt9OwogICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDsKICAgICAgICAgICAgdGhpcy5zaGltID0gZ2V0T3duKGNvbmZpZy5zaGltLCBtYXAuaWQpOwogICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHMgPSBbXTsKICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0gW107CiAgICAgICAgICAgIHRoaXMuZGVwTWF0Y2hlZCA9IFtdOwogICAgICAgICAgICB0aGlzLnBsdWdpbk1hcHMgPSB7fTsKICAgICAgICAgICAgdGhpcy5kZXBDb3VudCA9IDA7CgogICAgICAgICAgICAvKiB0aGlzLmV4cG9ydHMgdGhpcy5mYWN0b3J5CiAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcyA9IFtdLAogICAgICAgICAgICAgICB0aGlzLmVuYWJsZWQsIHRoaXMuZmV0Y2hlZAogICAgICAgICAgICAqLwogICAgICAgIH07CgogICAgICAgIE1vZHVsZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uIChkZXBNYXBzLCBmYWN0b3J5LCBlcnJiYWNrLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgICAgICAgICAvL0RvIG5vdCBkbyBtb3JlIGluaXRzIGlmIGFscmVhZHkgZG9uZS4gQ2FuIGhhcHBlbiBpZiB0aGVyZQogICAgICAgICAgICAgICAgLy9hcmUgbXVsdGlwbGUgZGVmaW5lIGNhbGxzIGZvciB0aGUgc2FtZSBtb2R1bGUuIFRoYXQgaXMgbm90CiAgICAgICAgICAgICAgICAvL2Egbm9ybWFsLCBjb21tb24gY2FzZSwgYnV0IGl0IGlzIGFsc28gbm90IHVuZXhwZWN0ZWQuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5mYWN0b3J5ID0gZmFjdG9yeTsKCiAgICAgICAgICAgICAgICBpZiAoZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIC8vUmVnaXN0ZXIgZm9yIGVycm9ycyBvbiB0aGlzIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICB0aGlzLm9uKCdlcnJvcicsIGVycmJhY2spOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbm8gZXJyYmFjayBhbHJlYWR5LCBidXQgdGhlcmUgYXJlIGVycm9yIGxpc3RlbmVycwogICAgICAgICAgICAgICAgICAgIC8vb24gdGhpcyBtb2R1bGUsIHNldCB1cCBhbiBlcnJiYWNrIHRvIHBhc3MgdG8gdGhlIGRlcHMuCiAgICAgICAgICAgICAgICAgICAgZXJyYmFjayA9IGJpbmQodGhpcywgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0RvIGEgY29weSBvZiB0aGUgZGVwZW5kZW5jeSBhcnJheSwgc28gdGhhdAogICAgICAgICAgICAgICAgLy9zb3VyY2UgaW5wdXRzIGFyZSBub3QgbW9kaWZpZWQuIEZvciBleGFtcGxlCiAgICAgICAgICAgICAgICAvLyJzaGltIiBkZXBzIGFyZSBwYXNzZWQgaW4gaGVyZSBkaXJlY3RseSwgYW5kCiAgICAgICAgICAgICAgICAvL2RvaW5nIGEgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUgZGVwTWFwcyBhcnJheQogICAgICAgICAgICAgICAgLy93b3VsZCBhZmZlY3QgdGhhdCBjb25maWcuCiAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMgPSBkZXBNYXBzICYmIGRlcE1hcHMuc2xpY2UoMCk7CgogICAgICAgICAgICAgICAgdGhpcy5lcnJiYWNrID0gZXJyYmFjazsKCiAgICAgICAgICAgICAgICAvL0luZGljYXRlIHRoaXMgbW9kdWxlIGhhcyBiZSBpbml0aWFsaXplZAogICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIHRoaXMuaWdub3JlID0gb3B0aW9ucy5pZ25vcmU7CgogICAgICAgICAgICAgICAgLy9Db3VsZCBoYXZlIG9wdGlvbiB0byBpbml0IHRoaXMgbW9kdWxlIGluIGVuYWJsZWQgbW9kZSwKICAgICAgICAgICAgICAgIC8vb3IgY291bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgbWFya2VkIGFzIGVuYWJsZWQuIEhvd2V2ZXIsCiAgICAgICAgICAgICAgICAvL3RoZSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB1bnRpbCBpbml0IGlzIGNhbGxlZC4gU28KICAgICAgICAgICAgICAgIC8vaWYgZW5hYmxlZCBwcmV2aW91c2x5LCBub3cgdHJpZ2dlciBkZXBlbmRlbmNpZXMgYXMgZW5hYmxlZC4KICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmVuYWJsZWQgfHwgdGhpcy5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgdGhpcyBtb2R1bGUgYW5kIGRlcGVuZGVuY2llcy4KICAgICAgICAgICAgICAgICAgICAvL1dpbGwgY2FsbCB0aGlzLmNoZWNrKCkKICAgICAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBkZWZpbmVEZXA6IGZ1bmN0aW9uIChpLCBkZXBFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAvL0JlY2F1c2Ugb2YgY3ljbGVzLCBkZWZpbmVkIGNhbGxiYWNrIGZvciBhIGdpdmVuCiAgICAgICAgICAgICAgICAvL2V4cG9ydCBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRlcE1hdGNoZWRbaV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWRbaV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwQ291bnQgLT0gMTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBkZXBFeHBvcnRzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZmV0Y2g6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmZldGNoZWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhcnRUaW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKCiAgICAgICAgICAgICAgICB2YXIgbWFwID0gdGhpcy5tYXA7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgbWFuYWdlciBpcyBmb3IgYSBwbHVnaW4gbWFuYWdlZCByZXNvdXJjZSwKICAgICAgICAgICAgICAgIC8vYXNrIHRoZSBwbHVnaW4gdG8gbG9hZCBpdCBub3cuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGltKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5tYWtlUmVxdWlyZSh0aGlzLm1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVCdWlsZENhbGxiYWNrOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfSkodGhpcy5zaGltLmRlcHMgfHwgW10sIGJpbmQodGhpcywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL1JlZ3VsYXIgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFwLnByZWZpeCA/IHRoaXMuY2FsbFBsdWdpbigpIDogdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgdXJsID0gdGhpcy5tYXAudXJsOwoKICAgICAgICAgICAgICAgIC8vUmVndWxhciBkZXBlbmRlbmN5LgogICAgICAgICAgICAgICAgaWYgKCF1cmxGZXRjaGVkW3VybF0pIHsKICAgICAgICAgICAgICAgICAgICB1cmxGZXRjaGVkW3VybF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZCh0aGlzLm1hcC5pZCwgdXJsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDaGVja3MgaWYgdGhlIG1vZHVsZSBpcyByZWFkeSB0byBkZWZpbmUgaXRzZWxmLCBhbmQgaWYgc28sCiAgICAgICAgICAgICAqIGRlZmluZSBpdC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNoZWNrOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCB8fCB0aGlzLmVuYWJsaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBlcnIsIGNqc01vZHVsZSwKICAgICAgICAgICAgICAgICAgICBpZCA9IHRoaXMubWFwLmlkLAogICAgICAgICAgICAgICAgICAgIGRlcEV4cG9ydHMgPSB0aGlzLmRlcEV4cG9ydHMsCiAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0cywKICAgICAgICAgICAgICAgICAgICBmYWN0b3J5ID0gdGhpcy5mYWN0b3J5OwoKICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGZldGNoIGlmIG5vdCBhbHJlYWR5IGluIHRoZSBkZWZRdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoY29udGV4dC5kZWZRdWV1ZU1hcCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgdGhpcy5lcnJvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRlZmluaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgLy9UaGUgZmFjdG9yeSBjb3VsZCB0cmlnZ2VyIGFub3RoZXIgcmVxdWlyZSBjYWxsCiAgICAgICAgICAgICAgICAgICAgLy90aGF0IHdvdWxkIHJlc3VsdCBpbiBjaGVja2luZyB0aGlzIG1vZHVsZSB0bwogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lIGl0c2VsZiBhZ2Fpbi4gSWYgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcwogICAgICAgICAgICAgICAgICAgIC8vb2YgZG9pbmcgdGhhdCwgc2tpcCB0aGlzIHdvcmsuCiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlcENvdW50IDwgMSAmJiAhdGhpcy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGZhY3RvcnkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGlzIGFuIGVycm9yIGxpc3RlbmVyLCBmYXZvciBwYXNzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoYXQgaW5zdGVhZCBvZiB0aHJvd2luZyBhbiBlcnJvci4gSG93ZXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25seSBkbyBpdCBmb3IgZGVmaW5lKCknZCAgbW9kdWxlcy4gcmVxdWlyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lcnJiYWNrcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmb3IgZmFpbHVyZXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlaXIgY2FsbGJhY2tzICgjNjk5KS4gSG93ZXZlciBpZiBhIGdsb2JhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9vbkVycm9yIGlzIHNldCwgdXNlIHRoYXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuZXZlbnRzLmVycm9yICYmIHRoaXMubWFwLmlzRGVmaW5lKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5vbkVycm9yICE9PSBkZWZhdWx0T25FcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0LmV4ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGNvbnRleHQuZXhlY0NiKGlkLCBmYWN0b3J5LCBkZXBFeHBvcnRzLCBleHBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYXZvciByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzLiBJZiBub2RlL2NqcyBpbiBwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB3aWxsIG5vdCBoYXZlIGEgcmV0dXJuIHZhbHVlIGFueXdheS4gRmF2b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vZHVsZS5leHBvcnRzIGFzc2lnbm1lbnQgb3ZlciBleHBvcnRzIG9iamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC5pc0RlZmluZSAmJiBleHBvcnRzID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSB0aGlzLm1vZHVsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjanNNb2R1bGUuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudXNpbmdFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXhwb3J0cyBhbHJlYWR5IHNldCB0aGUgZGVmaW5lZCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IHRoaXMuZXhwb3J0czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlTWFwID0gdGhpcy5tYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnJlcXVpcmVNb2R1bGVzID0gdGhpcy5tYXAuaXNEZWZpbmUgPyBbdGhpcy5tYXAuaWRdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZVR5cGUgPSB0aGlzLm1hcC5pc0RlZmluZSA/ICdkZWZpbmUnIDogJ3JlcXVpcmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKCh0aGlzLmVycm9yID0gZXJyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgbGl0ZXJhbCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb3J0cyA9IGZhY3Rvcnk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0cyA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXAuaXNEZWZpbmUgJiYgIXRoaXMuaWdub3JlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW2lkXSA9IGV4cG9ydHM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5vblJlc291cmNlTG9hZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNMb2FkTWFwcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc0xvYWRNYXBzLnB1c2goZGVwTWFwLm5vcm1hbGl6ZWRNYXAgfHwgZGVwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEub25SZXNvdXJjZUxvYWQoY29udGV4dCwgdGhpcy5tYXAsIHJlc0xvYWRNYXBzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9DbGVhbiB1cAogICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0ZpbmlzaGVkIHRoZSBkZWZpbmUgc3RhZ2UuIEFsbG93IGNhbGxpbmcgY2hlY2sgYWdhaW4KICAgICAgICAgICAgICAgICAgICAvL3RvIGFsbG93IGRlZmluZSBub3RpZmljYXRpb25zIGJlbG93IGluIHRoZSBjYXNlIG9mIGEKICAgICAgICAgICAgICAgICAgICAvL2N5Y2xlLgogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5pbmcgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmaW5lZCAmJiAhdGhpcy5kZWZpbmVFbWl0dGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdHRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZGVmaW5lZCcsIHRoaXMuZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRW1pdENvbXBsZXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgY2FsbFBsdWdpbjogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMubWFwLAogICAgICAgICAgICAgICAgICAgIGlkID0gbWFwLmlkLAogICAgICAgICAgICAgICAgICAgIC8vTWFwIGFscmVhZHkgbm9ybWFsaXplZCB0aGUgcHJlZml4LgogICAgICAgICAgICAgICAgICAgIHBsdWdpbk1hcCA9IG1ha2VNb2R1bGVNYXAobWFwLnByZWZpeCk7CgogICAgICAgICAgICAgICAgLy9NYXJrIHRoaXMgYXMgYSBkZXBlbmRlbmN5IGZvciB0aGlzIHBsdWdpbiwgc28gaXQKICAgICAgICAgICAgICAgIC8vY2FuIGJlIHRyYWNlZCBmb3IgY3ljbGVzLgogICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gocGx1Z2luTWFwKTsKCiAgICAgICAgICAgICAgICBvbihwbHVnaW5NYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGxvYWQsIG5vcm1hbGl6ZWRNYXAsIG5vcm1hbGl6ZWRNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1bmRsZUlkID0gZ2V0T3duKGJ1bmRsZXNNYXAsIHRoaXMubWFwLmlkKSwKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRoaXMubWFwLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudE5hbWUgPSB0aGlzLm1hcC5wYXJlbnRNYXAgPyB0aGlzLm1hcC5wYXJlbnRNYXAubmFtZSA6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZSA9IGNvbnRleHQubWFrZVJlcXVpcmUobWFwLnBhcmVudE1hcCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnVpbGRDYWxsYmFjazogdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9JZiBjdXJyZW50IG1hcCBpcyBub3Qgbm9ybWFsaXplZCwgd2FpdCBmb3IgdGhhdAogICAgICAgICAgICAgICAgICAgIC8vbm9ybWFsaXplZCBuYW1lIHRvIGxvYWQgaW5zdGVhZCBvZiBjb250aW51aW5nLgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcC51bm5vcm1hbGl6ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhlIElEIGlmIHRoZSBwbHVnaW4gYWxsb3dzIGl0LgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGx1Z2luLm5vcm1hbGl6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBsdWdpbi5ub3JtYWxpemUobmFtZSwgZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHBhcmVudE5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJlZml4IGFuZCBuYW1lIHNob3VsZCBhbHJlYWR5IGJlIG5vcm1hbGl6ZWQsIG5vIG5lZWQKICAgICAgICAgICAgICAgICAgICAgICAgLy9mb3IgYXBwbHlpbmcgbWFwIGNvbmZpZyBhZ2FpbiBlaXRoZXIuCiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXggKyAnIScgKyBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wYXJlbnRNYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICBvbihub3JtYWxpemVkTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQnLCBiaW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLm5vcm1hbGl6ZWRNYXAgPSBub3JtYWxpemVkTWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBub3JtYWxpemVkTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRNb2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBwbHVnaW4sIHNvIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NhbiBiZSB0cmFjZWQgZm9yIGN5Y2xlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKG5vcm1hbGl6ZWRNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmV2ZW50cy5lcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2Qub24oJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRNb2QuZW5hYmxlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vSWYgYSBwYXRocyBjb25maWcsIHRoZW4ganVzdCBsb2FkIHRoYXQgZmlsZSBpbnN0ZWFkIHRvCiAgICAgICAgICAgICAgICAgICAgLy9yZXNvbHZlIHRoZSBwbHVnaW4sIGFzIGl0IGlzIGJ1aWx0IGludG8gdGhhdCBwYXRocyBsYXllci4KICAgICAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudXJsID0gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbG9hZCA9IGJpbmQodGhpcywgZnVuY3Rpb24gKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdChbXSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWU7IH0sIG51bGwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGxvYWQuZXJyb3IgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyOwogICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZU1vZHVsZXMgPSBbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9SZW1vdmUgdGVtcCB1bm5vcm1hbGl6ZWQgbW9kdWxlcyBmb3IgdGhpcyBtb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2luY2UgdGhleSB3aWxsIG5ldmVyIGJlIHJlc29sdmVkIG90aGVyd2lzZSBub3cuCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLm1hcC5pZC5pbmRleE9mKGlkICsgJ191bm5vcm1hbGl6ZWQnKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFuUmVnaXN0cnkobW9kLm1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnIpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL0FsbG93IHBsdWdpbnMgdG8gbG9hZCBvdGhlciBjb2RlIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdGhlCiAgICAgICAgICAgICAgICAgICAgLy9jb250ZXh0IG9yIGhvdyB0byAnY29tcGxldGUnIHRoZSBsb2FkLgogICAgICAgICAgICAgICAgICAgIGxvYWQuZnJvbVRleHQgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uICh0ZXh0LCB0ZXh0QWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZHVsZU5hbWUgPSBtYXAubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU1hcCA9IG1ha2VNb2R1bGVNYXAobW9kdWxlTmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGl2ZSA9IHVzZUludGVyYWN0aXZlOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9BcyBvZiAyLjEuMCwgc3VwcG9ydCBqdXN0IHBhc3NpbmcgdGhlIHRleHQsIHRvIHJlaW5mb3JjZQogICAgICAgICAgICAgICAgICAgICAgICAvL2Zyb21UZXh0IG9ubHkgYmVpbmcgY2FsbGVkIG9uY2UgcGVyIHJlc291cmNlLiBTdGlsbAogICAgICAgICAgICAgICAgICAgICAgICAvL3N1cHBvcnQgb2xkIHN0eWxlIG9mIHBhc3NpbmcgbW9kdWxlTmFtZSBidXQgZGlzY2FyZAogICAgICAgICAgICAgICAgICAgICAgICAvL3RoYXQgbW9kdWxlTmFtZSBpbiBmYXZvciBvZiB0aGUgaW50ZXJuYWwgcmVmLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dEFsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHRBbHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vVHVybiBvZmYgaW50ZXJhY3RpdmUgc2NyaXB0IG1hdGNoaW5nIGZvciBJRSBmb3IgYW55IGRlZmluZQogICAgICAgICAgICAgICAgICAgICAgICAvL2NhbGxzIGluIHRoZSB0ZXh0LCB0aGVuIHR1cm4gaXQgYmFjayBvbiBhdCB0aGUgZW5kLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUHJpbWUgdGhlIHN5c3RlbSBieSBjcmVhdGluZyBhIG1vZHVsZSBpbnN0YW5jZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgLy9pdC4KICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1vZHVsZU1hcCk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1RyYW5zZmVyIGFueSBjb25maWcgdG8gdGhpcyBvdGhlciBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNQcm9wKGNvbmZpZy5jb25maWcsIGlkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNvbmZpZ1ttb2R1bGVOYW1lXSA9IGNvbmZpZy5jb25maWdbaWRdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLmV4ZWModGV4dCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignZnJvbXRleHRldmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb21UZXh0IGV2YWwgZm9yICcgKyBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmYWlsZWQ6ICcgKyBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlSW50ZXJhY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoZSBwbHVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMucHVzaChtb2R1bGVNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TdXBwb3J0IGFub255bW91cyBtb2R1bGVzLgogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCB0aGUgdmFsdWUgb2YgdGhhdCBtb2R1bGUgdG8gdGhlIHZhbHVlIGZvciB0aGlzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzb3VyY2UgSUQuCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZShbbW9kdWxlTmFtZV0sIGxvYWQpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAvL1VzZSBwYXJlbnROYW1lIGhlcmUgc2luY2UgdGhlIHBsdWdpbidzIG5hbWUgaXMgbm90IHJlbGlhYmxlLAogICAgICAgICAgICAgICAgICAgIC8vY291bGQgYmUgc29tZSB3ZWlyZCBzdHJpbmcgd2l0aCBubyBwYXRoIHRoYXQgYWN0dWFsbHkgd2FudHMgdG8KICAgICAgICAgICAgICAgICAgICAvL3JlZmVyZW5jZSB0aGUgcGFyZW50TmFtZSdzIHBhdGguCiAgICAgICAgICAgICAgICAgICAgcGx1Z2luLmxvYWQobWFwLm5hbWUsIGxvY2FsUmVxdWlyZSwgbG9hZCwgY29uZmlnKTsKICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5NYXBzW3BsdWdpbk1hcC5pZF0gPSBwbHVnaW5NYXA7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBlbmFibGU6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGVuYWJsZWRSZWdpc3RyeVt0aGlzLm1hcC5pZF0gPSB0aGlzOwogICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL1NldCBmbGFnIG1lbnRpb25pbmcgdGhhdCB0aGUgbW9kdWxlIGlzIGVuYWJsaW5nLAogICAgICAgICAgICAgICAgLy9zbyB0aGF0IGltbWVkaWF0ZSBjYWxscyB0byB0aGUgZGVmaW5lZCBjYWxsYmFja3MKICAgICAgICAgICAgICAgIC8vZm9yIGRlcGVuZGVuY2llcyBkbyBub3QgdHJpZ2dlciBpbmFkdmVydGVudCBsb2FkCiAgICAgICAgICAgICAgICAvL3dpdGggdGhlIGRlcENvdW50IHN0aWxsIGJlaW5nIHplcm8uCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvL0VuYWJsZSBlYWNoIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2godGhpcy5kZXBNYXBzLCBiaW5kKHRoaXMsIGZ1bmN0aW9uIChkZXBNYXAsIGkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQsIG1vZCwgaGFuZGxlcjsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBNYXAgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVwZW5kZW5jeSBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gYSBkZXBNYXAKICAgICAgICAgICAgICAgICAgICAgICAgLy9hbmQgd2lyZWQgdXAgdG8gdGhpcyBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcE1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm1hcC5pc0RlZmluZSA/IHRoaXMubWFwIDogdGhpcy5tYXAucGFyZW50TWFwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5za2lwTWFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzW2ldID0gZGVwTWFwOwoKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGdldE93bihoYW5kbGVycywgZGVwTWFwLmlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcEV4cG9ydHNbaV0gPSBoYW5kbGVyKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcENvdW50ICs9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZGVwRXhwb3J0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5kZWZlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lRGVwKGksIGRlcEV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lcnJiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdlcnJvcicsIGJpbmQodGhpcywgdGhpcy5lcnJiYWNrKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIGRpcmVjdCBlcnJiYWNrIG9uIHRoaXMgbW9kdWxlLCBidXQgc29tZXRoaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIGlzIGxpc3RlbmluZyBmb3IgZXJyb3JzLCBzbyBiZSBzdXJlIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9wYWdhdGUgdGhlIGVycm9yIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uKGRlcE1hcCwgJ2Vycm9yJywgYmluZCh0aGlzLCBmdW5jdGlvbihlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWQgPSBkZXBNYXAuaWQ7CiAgICAgICAgICAgICAgICAgICAgbW9kID0gcmVnaXN0cnlbaWRdOwoKICAgICAgICAgICAgICAgICAgICAvL1NraXAgc3BlY2lhbCBtb2R1bGVzIGxpa2UgJ3JlcXVpcmUnLCAnZXhwb3J0cycsICdtb2R1bGUnCiAgICAgICAgICAgICAgICAgICAgLy9BbHNvLCBkb24ndCBjYWxsIGVuYWJsZSBpZiBpdCBpcyBhbHJlYWR5IGVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgLy9pbXBvcnRhbnQgaW4gY2lyY3VsYXIgZGVwZW5kZW5jeSBjYXNlcy4KICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoaGFuZGxlcnMsIGlkKSAmJiBtb2QgJiYgIW1vZC5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZW5hYmxlKGRlcE1hcCwgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgIC8vRW5hYmxlIGVhY2ggcGx1Z2luIHRoYXQgaXMgdXNlZCBpbgogICAgICAgICAgICAgICAgLy9hIGRlcGVuZGVuY3kKICAgICAgICAgICAgICAgIGVhY2hQcm9wKHRoaXMucGx1Z2luTWFwcywgYmluZCh0aGlzLCBmdW5jdGlvbiAocGx1Z2luTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgcGx1Z2luTWFwLmlkKTsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kICYmICFtb2QuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShwbHVnaW5NYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsaW5nID0gZmFsc2U7CgogICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgb246IGZ1bmN0aW9uIChuYW1lLCBjYikgewogICAgICAgICAgICAgICAgdmFyIGNicyA9IHRoaXMuZXZlbnRzW25hbWVdOwogICAgICAgICAgICAgICAgaWYgKCFjYnMpIHsKICAgICAgICAgICAgICAgICAgICBjYnMgPSB0aGlzLmV2ZW50c1tuYW1lXSA9IFtdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2JzLnB1c2goY2IpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZW1pdDogZnVuY3Rpb24gKG5hbWUsIGV2dCkgewogICAgICAgICAgICAgICAgZWFjaCh0aGlzLmV2ZW50c1tuYW1lXSwgZnVuY3Rpb24gKGNiKSB7CiAgICAgICAgICAgICAgICAgICAgY2IoZXZ0KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdlcnJvcicpIHsKICAgICAgICAgICAgICAgICAgICAvL05vdyB0aGF0IHRoZSBlcnJvciBoYW5kbGVyIHdhcyB0cmlnZ2VyZWQsIHJlbW92ZQogICAgICAgICAgICAgICAgICAgIC8vdGhlIGxpc3RlbmVycywgc2luY2UgdGhpcyBicm9rZW4gTW9kdWxlIGluc3RhbmNlCiAgICAgICAgICAgICAgICAgICAgLy9jYW4gc3RheSBhcm91bmQgZm9yIGEgd2hpbGUgaW4gdGhlIHJlZ2lzdHJ5LgogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50c1tuYW1lXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGZ1bmN0aW9uIGNhbGxHZXRNb2R1bGUoYXJncykgewogICAgICAgICAgICAvL1NraXAgbW9kdWxlcyBhbHJlYWR5IGRlZmluZWQuCiAgICAgICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBhcmdzWzBdKSkgewogICAgICAgICAgICAgICAgZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAoYXJnc1swXSwgbnVsbCwgdHJ1ZSkpLmluaXQoYXJnc1sxXSwgYXJnc1syXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGZ1bmMsIG5hbWUsIGllTmFtZSkgewogICAgICAgICAgICAvL0Zhdm9yIGRldGFjaEV2ZW50IGJlY2F1c2Ugb2YgSUU5CiAgICAgICAgICAgIC8vaXNzdWUsIHNlZSBhdHRhY2hFdmVudC9hZGRFdmVudExpc3RlbmVyIGNvbW1lbnQgZWxzZXdoZXJlCiAgICAgICAgICAgIC8vaW4gdGhpcyBmaWxlLgogICAgICAgICAgICBpZiAobm9kZS5kZXRhY2hFdmVudCAmJiAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSWYgbm90IGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IsIHdoaWNoIHdpbGwgYmUKICAgICAgICAgICAgICAgIC8vdXNlZnVsIHRvIGtub3cuCiAgICAgICAgICAgICAgICBpZiAoaWVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgbm9kZS5kZXRhY2hFdmVudChpZU5hbWUsIGZ1bmMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogR2l2ZW4gYW4gZXZlbnQgZnJvbSBhIHNjcmlwdCBub2RlLCBnZXQgdGhlIHJlcXVpcmVqcyBpbmZvIGZyb20gaXQsCiAgICAgICAgICogYW5kIHRoZW4gcmVtb3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZSBub2RlLgogICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dAogICAgICAgICAqIEByZXR1cm5zIHtPYmplY3R9CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gZ2V0U2NyaXB0RGF0YShldnQpIHsKICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAvL2FsbCBvbGQgYnJvd3NlcnMgd2lsbCBiZSBzdXBwb3J0ZWQsIGJ1dCB0aGlzIG9uZSB3YXMgZWFzeSBlbm91Z2gKICAgICAgICAgICAgLy90byBzdXBwb3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KICAgICAgICAgICAgdmFyIG5vZGUgPSBldnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudDsKCiAgICAgICAgICAgIC8vUmVtb3ZlIHRoZSBsaXN0ZW5lcnMgb25jZSBoZXJlLgogICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgJ2xvYWQnLCAnb25yZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgIHJlbW92ZUxpc3RlbmVyKG5vZGUsIGNvbnRleHQub25TY3JpcHRFcnJvciwgJ2Vycm9yJyk7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgbm9kZTogbm9kZSwKICAgICAgICAgICAgICAgIGlkOiBub2RlICYmIG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gaW50YWtlRGVmaW5lcygpIHsKICAgICAgICAgICAgdmFyIGFyZ3M7CgogICAgICAgICAgICAvL0FueSBkZWZpbmVkIG1vZHVsZXMgaW4gdGhlIGdsb2JhbCBxdWV1ZSwgaW50YWtlIHRoZW0gbm93LgogICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgIC8vTWFrZSBzdXJlIGFueSByZW1haW5pbmcgZGVmUXVldWUgaXRlbXMgZ2V0IHByb3Blcmx5IHByb2Nlc3NlZC4KICAgICAgICAgICAgd2hpbGUgKGRlZlF1ZXVlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBvbkVycm9yKG1ha2VFcnJvcignbWlzbWF0Y2gnLCAnTWlzbWF0Y2hlZCBhbm9ueW1vdXMgZGVmaW5lKCkgbW9kdWxlOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1thcmdzLmxlbmd0aCAtIDFdKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIC8vYXJncyBhcmUgaWQsIGRlcHMsIGZhY3RvcnkuIFNob3VsZCBiZSBub3JtYWxpemVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgIC8vZGVmaW5lKCkgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShhcmdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlTWFwID0ge307CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0ID0gewogICAgICAgICAgICBjb25maWc6IGNvbmZpZywKICAgICAgICAgICAgY29udGV4dE5hbWU6IGNvbnRleHROYW1lLAogICAgICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksCiAgICAgICAgICAgIGRlZmluZWQ6IGRlZmluZWQsCiAgICAgICAgICAgIHVybEZldGNoZWQ6IHVybEZldGNoZWQsCiAgICAgICAgICAgIGRlZlF1ZXVlOiBkZWZRdWV1ZSwKICAgICAgICAgICAgZGVmUXVldWVNYXA6IHt9LAogICAgICAgICAgICBNb2R1bGU6IE1vZHVsZSwKICAgICAgICAgICAgbWFrZU1vZHVsZU1hcDogbWFrZU1vZHVsZU1hcCwKICAgICAgICAgICAgbmV4dFRpY2s6IHJlcS5uZXh0VGljaywKICAgICAgICAgICAgb25FcnJvcjogb25FcnJvciwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBTZXQgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgY29udGV4dC4KICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNmZyBjb25maWcgb2JqZWN0IHRvIGludGVncmF0ZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNvbmZpZ3VyZTogZnVuY3Rpb24gKGNmZykgewogICAgICAgICAgICAgICAgLy9NYWtlIHN1cmUgdGhlIGJhc2VVcmwgZW5kcyBpbiBhIHNsYXNoLgogICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNmZy5iYXNlVXJsLmNoYXJBdChjZmcuYmFzZVVybC5sZW5ndGggLSAxKSAhPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNmZy5iYXNlVXJsICs9ICcvJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQ29udmVydCBvbGQgc3R5bGUgdXJsQXJncyBzdHJpbmcgdG8gYSBmdW5jdGlvbi4KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2ZnLnVybEFyZ3MgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHVybEFyZ3MgPSBjZmcudXJsQXJnczsKICAgICAgICAgICAgICAgICAgICBjZmcudXJsQXJncyA9IGZ1bmN0aW9uKGlkLCB1cmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyB1cmxBcmdzOwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9TYXZlIG9mZiB0aGUgcGF0aHMgc2luY2UgdGhleSByZXF1aXJlIHNwZWNpYWwgcHJvY2Vzc2luZywKICAgICAgICAgICAgICAgIC8vdGhleSBhcmUgYWRkaXRpdmUuCiAgICAgICAgICAgICAgICB2YXIgc2hpbSA9IGNvbmZpZy5zaGltLAogICAgICAgICAgICAgICAgICAgIG9ianMgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcDogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAob2Jqc1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbmZpZ1twcm9wXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0ge307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbWl4aW4oY29uZmlnW3Byb3BdLCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnW3Byb3BdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9SZXZlcnNlIG1hcCB0aGUgYnVuZGxlcwogICAgICAgICAgICAgICAgaWYgKGNmZy5idW5kbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLmJ1bmRsZXMsIGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHZhbHVlLCBmdW5jdGlvbiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYgIT09IHByb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVzTWFwW3ZdID0gcHJvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9NZXJnZSBzaGltCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnNoaW0pIHsKICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChjZmcuc2hpbSwgZnVuY3Rpb24gKHZhbHVlLCBpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZSB0aGUgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwczogdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZS5leHBvcnRzIHx8IHZhbHVlLmluaXQpICYmICF2YWx1ZS5leHBvcnRzRm4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmV4cG9ydHNGbiA9IGNvbnRleHQubWFrZVNoaW1FeHBvcnRzKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBzaGltW2lkXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zaGltID0gc2hpbTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0FkanVzdCBwYWNrYWdlcyBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICAgICBpZiAoY2ZnLnBhY2thZ2VzKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaChjZmcucGFja2FnZXMsIGZ1bmN0aW9uIChwa2dPYmopIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0aW9uLCBuYW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgcGtnT2JqID0gdHlwZW9mIHBrZ09iaiA9PT0gJ3N0cmluZycgPyB7bmFtZTogcGtnT2JqfSA6IHBrZ09iajsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwa2dPYmoubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBwa2dPYmoubG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnBhdGhzW25hbWVdID0gcGtnT2JqLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1NhdmUgcG9pbnRlciB0byBtYWluIG1vZHVsZSBJRCBmb3IgcGtnIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVtb3ZlIGxlYWRpbmcgZG90IGluIG1haW4sIHNvIG1haW4gcGF0aHMgYXJlIG5vcm1hbGl6ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5kIHJlbW92ZSBhbnkgdHJhaWxpbmcgLmpzLCBzaW5jZSBkaWZmZXJlbnQgcGFja2FnZQogICAgICAgICAgICAgICAgICAgICAgICAvL2VudnMgaGF2ZSBkaWZmZXJlbnQgY29udmVudGlvbnM6IHNvbWUgdXNlIGEgbW9kdWxlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vc29tZSB1c2UgYSBmaWxlIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wa2dzW25hbWVdID0gcGtnT2JqLm5hbWUgKyAnLycgKyAocGtnT2JqLm1haW4gfHwgJ21haW4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoY3VyckRpclJlZ0V4cCwgJycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vSWYgdGhlcmUgYXJlIGFueSAid2FpdGluZyB0byBleGVjdXRlIiBtb2R1bGVzIGluIHRoZSByZWdpc3RyeSwKICAgICAgICAgICAgICAgIC8vdXBkYXRlIHRoZSBtYXBzIGZvciB0aGVtLCBzaW5jZSB0aGVpciBpbmZvLCBsaWtlIFVSTHMgdG8gbG9hZCwKICAgICAgICAgICAgICAgIC8vbWF5IGhhdmUgY2hhbmdlZC4KICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbiAobW9kLCBpZCkgewogICAgICAgICAgICAgICAgICAgIC8vSWYgbW9kdWxlIGFscmVhZHkgaGFzIGluaXQgY2FsbGVkLCBzaW5jZSBpdCBpcyB0b28KICAgICAgICAgICAgICAgICAgICAvL2xhdGUgdG8gbW9kaWZ5IHRoZW0sIGFuZCBpZ25vcmUgdW5ub3JtYWxpemVkIG9uZXMKICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgYXJlIHRyYW5zaWVudC4KICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZC5pbml0ZWQgJiYgIW1vZC5tYXAudW5ub3JtYWxpemVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5tYXAgPSBtYWtlTW9kdWxlTWFwKGlkLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL0lmIGEgZGVwcyBhcnJheSBvciBhIGNvbmZpZyBjYWxsYmFjayBpcyBzcGVjaWZpZWQsIHRoZW4gY2FsbAogICAgICAgICAgICAgICAgLy9yZXF1aXJlIHdpdGggdGhvc2UgYXJncy4gVGhpcyBpcyB1c2VmdWwgd2hlbiByZXF1aXJlIGlzIGRlZmluZWQgYXMgYQogICAgICAgICAgICAgICAgLy9jb25maWcgb2JqZWN0IGJlZm9yZSByZXF1aXJlLmpzIGlzIGxvYWRlZC4KICAgICAgICAgICAgICAgIGlmIChjZmcuZGVwcyB8fCBjZmcuY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVpcmUoY2ZnLmRlcHMgfHwgW10sIGNmZy5jYWxsYmFjayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICBtYWtlU2hpbUV4cG9ydHM6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgZnVuY3Rpb24gZm4oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJldDsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaW5pdCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB2YWx1ZS5pbml0LmFwcGx5KGdsb2JhbCwgYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldCB8fCAodmFsdWUuZXhwb3J0cyAmJiBnZXRHbG9iYWwodmFsdWUuZXhwb3J0cykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGZuOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWFrZVJlcXVpcmU6IGZ1bmN0aW9uIChyZWxNYXAsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxvY2FsUmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgIHZhciBpZCwgbWFwLCByZXF1aXJlTW9kOwoKICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVCdWlsZENhbGxiYWNrICYmIGNhbGxiYWNrICYmIGlzRnVuY3Rpb24oY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLl9fcmVxdWlyZUpzQnVpbGQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihjYWxsYmFjaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSW52YWxpZCBjYWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3JlcXVpcmVhcmdzJywgJ0ludmFsaWQgcmVxdWlyZSBjYWxsJyksIGVycmJhY2spOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL0lmIHJlcXVpcmV8ZXhwb3J0c3xtb2R1bGUgYXJlIHJlcXVlc3RlZCwgZ2V0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3ZhbHVlIGZvciB0aGVtIGZyb20gdGhlIHNwZWNpYWwgaGFuZGxlcnMuIENhdmVhdDoKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG9ubHkgd29ya3Mgd2hpbGUgbW9kdWxlIGlzIGJlaW5nIGRlZmluZWQuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxNYXAgJiYgaGFzUHJvcChoYW5kbGVycywgZGVwcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyc1tkZXBzXShyZWdpc3RyeVtyZWxNYXAuaWRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TeW5jaHJvbm91cyBhY2Nlc3MgdG8gb25lIG1vZHVsZS4gSWYgcmVxdWlyZS5nZXQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgLy9hdmFpbGFibGUgKGFzIGluIHRoZSBOb2RlIGFkYXB0ZXIpLCBwcmVmZXIgdGhhdC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcS5nZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXEuZ2V0KGNvbnRleHQsIGRlcHMsIHJlbE1hcCwgbG9jYWxSZXF1aXJlKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgbW9kdWxlIG5hbWUsIGlmIGl0IGNvbnRhaW5zIC4gb3IgLi4KICAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gbWFrZU1vZHVsZU1hcChkZXBzLCByZWxNYXAsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYXAuaWQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vdGxvYWRlZCcsICdNb2R1bGUgbmFtZSAiJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIiBoYXMgbm90IGJlZW4gbG9hZGVkIHlldCBmb3IgY29udGV4dDogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVsTWFwID8gJycgOiAnLiBVc2UgcmVxdWlyZShbXSknKSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vR3JhYiBkZWZpbmVzIHdhaXRpbmcgaW4gdGhlIGdsb2JhbCBxdWV1ZS4KICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgIC8vTWFyayBhbGwgdGhlIGRlcGVuZGVuY2llcyBhcyBuZWVkaW5nIHRvIGJlIGxvYWRlZC4KICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm5leHRUaWNrKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Tb21lIGRlZmluZXMgY291bGQgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL3JlcXVpcmUgY2FsbCwgY29sbGVjdCB0aGVtLgogICAgICAgICAgICAgICAgICAgICAgICBpbnRha2VEZWZpbmVzKCk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kID0gZ2V0TW9kdWxlKG1ha2VNb2R1bGVNYXAobnVsbCwgcmVsTWFwKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL1N0b3JlIGlmIG1hcCBjb25maWcgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGhpcyByZXF1aXJlCiAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FsbCBmb3IgZGVwZW5kZW5jaWVzLgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLnNraXBNYXAgPSBvcHRpb25zLnNraXBNYXA7CgogICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlTW9kLmluaXQoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYWxSZXF1aXJlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG1peGluKGxvY2FsUmVxdWlyZSwgewogICAgICAgICAgICAgICAgICAgIGlzQnJvd3NlcjogaXNCcm93c2VyLAoKICAgICAgICAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAgICAgICAgKiBDb252ZXJ0cyBhIG1vZHVsZSBuYW1lICsgLmV4dGVuc2lvbiBpbnRvIGFuIFVSTCBwYXRoLgogICAgICAgICAgICAgICAgICAgICAqICpSZXF1aXJlcyogdGhlIHVzZSBvZiBhIG1vZHVsZSBuYW1lLiBJdCBkb2VzIG5vdCBzdXBwb3J0IHVzaW5nCiAgICAgICAgICAgICAgICAgICAgICogcGxhaW4gVVJMcyBsaWtlIG5hbWVUb1VybC4KICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICB0b1VybDogZnVuY3Rpb24gKG1vZHVsZU5hbWVQbHVzRXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IG1vZHVsZU5hbWVQbHVzRXh0Lmxhc3RJbmRleE9mKCcuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3BsaXQoJy8nKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVsYXRpdmUgPSBzZWdtZW50ID09PSAnLicgfHwgc2VnbWVudCA9PT0gJy4uJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vSGF2ZSBhIGZpbGUgZXh0ZW5zaW9uIGFsaWFzLCBhbmQgaXQgaXMgbm90IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvL2RvdHMgZnJvbSBhIHJlbGF0aXZlIHBhdGguCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgKCFpc1JlbGF0aXZlIHx8IGluZGV4ID4gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZyhpbmRleCwgbW9kdWxlTmFtZVBsdXNFeHQubGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWVQbHVzRXh0ID0gbW9kdWxlTmFtZVBsdXNFeHQuc3Vic3RyaW5nKDAsIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubmFtZVRvVXJsKG5vcm1hbGl6ZShtb2R1bGVOYW1lUGx1c0V4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsTWFwICYmIHJlbE1hcC5pZCwgdHJ1ZSksIGV4dCwgIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgIGRlZmluZWQ6IGZ1bmN0aW9uIChpZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzUHJvcChkZWZpbmVkLCBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZCk7CiAgICAgICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkOiBmdW5jdGlvbiAoaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIGZhbHNlLCB0cnVlKS5pZDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3AoZGVmaW5lZCwgaWQpIHx8IGhhc1Byb3AocmVnaXN0cnksIGlkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL09ubHkgYWxsb3cgdW5kZWYgb24gdG9wIGxldmVsIHJlcXVpcmUgY2FsbHMKICAgICAgICAgICAgICAgIGlmICghcmVsTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgbG9jYWxSZXF1aXJlLnVuZGVmID0gZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vQmluZCBhbnkgd2FpdGluZyBkZWZpbmUoKSBjYWxscyB0byB0aGlzIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vZml4IGZvciAjNDA4CiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hcCA9IG1ha2VNb2R1bGVNYXAoaWQsIHJlbE1hcCwgdHJ1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC51bmRlZmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlU2NyaXB0KGlkKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkZWZpbmVkW2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHVybEZldGNoZWRbbWFwLnVybF07CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1bmRlZkV2ZW50c1tpZF07CgogICAgICAgICAgICAgICAgICAgICAgICAvL0NsZWFuIHF1ZXVlZCBkZWZpbmVzIHRvby4gR28gYmFja3dhcmRzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vaW4gYXJyYXkgc28gdGhhdCB0aGUgc3BsaWNlcyBkbyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgLy9tZXNzIHVwIHRoZSBpdGVyYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgIGVhY2hSZXZlcnNlKGRlZlF1ZXVlLCBmdW5jdGlvbihhcmdzLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZRdWV1ZS5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY29udGV4dC5kZWZRdWV1ZU1hcFtpZF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0hvbGQgb24gdG8gbGlzdGVuZXJzIGluIGNhc2UgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL21vZHVsZSB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSByZWxvYWRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91c2luZyBhIGRpZmZlcmVudCBjb25maWcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kLmV2ZW50cy5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZFdmVudHNbaWRdID0gbW9kLmV2ZW50czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KGlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsZWQgdG8gZW5hYmxlIGEgbW9kdWxlIGlmIGl0IGlzIHN0aWxsIGluIHRoZSByZWdpc3RyeQogICAgICAgICAgICAgKiBhd2FpdGluZyBlbmFibGVtZW50LiBBIHNlY29uZCBhcmcsIHBhcmVudCwgdGhlIHBhcmVudCBtb2R1bGUsCiAgICAgICAgICAgICAqIGlzIHBhc3NlZCBpbiBmb3IgY29udGV4dCwgd2hlbiB0aGlzIG1ldGhvZCBpcyBvdmVycmlkZGVuIGJ5CiAgICAgICAgICAgICAqIHRoZSBvcHRpbWl6ZXIuIE5vdCBzaG93biBoZXJlIHRvIGtlZXAgY29kZSBjb21wYWN0LgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoZGVwTWFwKSB7CiAgICAgICAgICAgICAgICB2YXIgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBkZXBNYXAuaWQpOwogICAgICAgICAgICAgICAgaWYgKG1vZCkgewogICAgICAgICAgICAgICAgICAgIGdldE1vZHVsZShkZXBNYXApLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEludGVybmFsIG1ldGhvZCB1c2VkIGJ5IGVudmlyb25tZW50IGFkYXB0ZXJzIHRvIGNvbXBsZXRlIGEgbG9hZCBldmVudC4KICAgICAgICAgICAgICogQSBsb2FkIGV2ZW50IGNvdWxkIGJlIGEgc2NyaXB0IGxvYWQgb3IganVzdCBhIGxvYWQgcGFzcyBmcm9tIGEgc3luY2hyb25vdXMKICAgICAgICAgICAgICogbG9hZCBjYWxsLgogICAgICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbW9kdWxlTmFtZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIHBvdGVudGlhbGx5IGNvbXBsZXRlLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgY29tcGxldGVMb2FkOiBmdW5jdGlvbiAobW9kdWxlTmFtZSkgewogICAgICAgICAgICAgICAgdmFyIGZvdW5kLCBhcmdzLCBtb2QsCiAgICAgICAgICAgICAgICAgICAgc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbW9kdWxlTmFtZSkgfHwge30sCiAgICAgICAgICAgICAgICAgICAgc2hFeHBvcnRzID0gc2hpbS5leHBvcnRzOwoKICAgICAgICAgICAgICAgIHRha2VHbG9iYWxRdWV1ZSgpOwoKICAgICAgICAgICAgICAgIHdoaWxlIChkZWZRdWV1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBhcmdzID0gZGVmUXVldWUuc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1swXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdID0gbW9kdWxlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBhbHJlYWR5IGZvdW5kIGFuIGFub255bW91cyBtb2R1bGUgYW5kIGJvdW5kIGl0CiAgICAgICAgICAgICAgICAgICAgICAgIC8vdG8gdGhpcyBuYW1lLCB0aGVuIHRoaXMgaXMgc29tZSBvdGhlciBhbm9uIG1vZHVsZQogICAgICAgICAgICAgICAgICAgICAgICAvL3dhaXRpbmcgZm9yIGl0cyBjb21wbGV0ZUxvYWQgdG8gZmlyZS4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzWzBdID09PSBtb2R1bGVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vRm91bmQgbWF0Y2hpbmcgZGVmaW5lIGNhbGwgZm9yIHRoaXMgc2NyaXB0IQogICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjYWxsR2V0TW9kdWxlKGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcCA9IHt9OwoKICAgICAgICAgICAgICAgIC8vRG8gdGhpcyBhZnRlciB0aGUgY3ljbGUgb2YgY2FsbEdldE1vZHVsZSBpbiBjYXNlIHRoZSByZXN1bHQKICAgICAgICAgICAgICAgIC8vb2YgdGhvc2UgY2FsbHMvaW5pdCBjYWxscyBjaGFuZ2VzIHRoZSByZWdpc3RyeS4KICAgICAgICAgICAgICAgIG1vZCA9IGdldE93bihyZWdpc3RyeSwgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZCAmJiAhaGFzUHJvcChkZWZpbmVkLCBtb2R1bGVOYW1lKSAmJiBtb2QgJiYgIW1vZC5pbml0ZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmVuZm9yY2VEZWZpbmUgJiYgKCFzaEV4cG9ydHMgfHwgIWdldEdsb2JhbChzaEV4cG9ydHMpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUGF0aEZhbGxiYWNrKG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ25vZGVmaW5lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIGRlZmluZSBjYWxsIGZvciAnICsgbW9kdWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZHVsZU5hbWVdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvL0Egc2NyaXB0IHRoYXQgZG9lcyBub3QgY2FsbCBkZWZpbmUoKSwgc28ganVzdCBzaW11bGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAvL3RoZSBjYWxsIGZvciBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShbbW9kdWxlTmFtZSwgKHNoaW0uZGVwcyB8fCBbXSksIHNoaW0uZXhwb3J0c0ZuXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNoZWNrTG9hZGVkKCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ29udmVydHMgYSBtb2R1bGUgbmFtZSB0byBhIGZpbGUgcGF0aC4gU3VwcG9ydHMgY2FzZXMgd2hlcmUKICAgICAgICAgICAgICogbW9kdWxlTmFtZSBtYXkgYWN0dWFsbHkgYmUganVzdCBhbiBVUkwuCiAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpdCAqKmRvZXMgbm90KiogY2FsbCBub3JtYWxpemUgb24gdGhlIG1vZHVsZU5hbWUsCiAgICAgICAgICAgICAqIGl0IGlzIGFzc3VtZWQgdG8gaGF2ZSBhbHJlYWR5IGJlZW4gbm9ybWFsaXplZC4gVGhpcyBpcyBhbgogICAgICAgICAgICAgKiBpbnRlcm5hbCBBUEksIG5vdCBhIHB1YmxpYyBvbmUuIFVzZSB0b1VybCBmb3IgdGhlIHB1YmxpYyBBUEkuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBuYW1lVG9Vcmw6IGZ1bmN0aW9uIChtb2R1bGVOYW1lLCBleHQsIHNraXBFeHQpIHsKICAgICAgICAgICAgICAgIHZhciBwYXRocywgc3ltcywgaSwgcGFyZW50TW9kdWxlLCB1cmwsCiAgICAgICAgICAgICAgICAgICAgcGFyZW50UGF0aCwgYnVuZGxlSWQsCiAgICAgICAgICAgICAgICAgICAgcGtnTWFpbiA9IGdldE93bihjb25maWcucGtncywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKHBrZ01haW4pIHsKICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lID0gcGtnTWFpbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBidW5kbGVJZCA9IGdldE93bihidW5kbGVzTWFwLCBtb2R1bGVOYW1lKTsKCiAgICAgICAgICAgICAgICBpZiAoYnVuZGxlSWQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5uYW1lVG9VcmwoYnVuZGxlSWQsIGV4dCwgc2tpcEV4dCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9JZiBhIGNvbG9uIGlzIGluIHRoZSBVUkwsIGl0IGluZGljYXRlcyBhIHByb3RvY29sIGlzIHVzZWQgYW5kIGl0IGlzIGp1c3QKICAgICAgICAgICAgICAgIC8vYW4gVVJMIHRvIGEgZmlsZSwgb3IgaWYgaXQgc3RhcnRzIHdpdGggYSBzbGFzaCwgY29udGFpbnMgYSBxdWVyeSBhcmcgKGkuZS4gPykKICAgICAgICAgICAgICAgIC8vb3IgZW5kcyB3aXRoIC5qcywgdGhlbiBhc3N1bWUgdGhlIHVzZXIgbWVhbnQgdG8gdXNlIGFuIHVybCBhbmQgbm90IGEgbW9kdWxlIGlkLgogICAgICAgICAgICAgICAgLy9UaGUgc2xhc2ggaXMgaW1wb3J0YW50IGZvciBwcm90b2NvbC1sZXNzIFVSTHMgYXMgd2VsbCBhcyBmdWxsIHBhdGhzLgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1vZHVsZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgLy9KdXN0IGEgcGxhaW4gcGF0aCwgbm90IG1vZHVsZSBuYW1lIGxvb2t1cCwgc28ganVzdCByZXR1cm4gaXQuCiAgICAgICAgICAgICAgICAgICAgLy9BZGQgZXh0ZW5zaW9uIGlmIGl0IGlzIGluY2x1ZGVkLiBUaGlzIGlzIGEgYml0IHdvbmt5LCBvbmx5IG5vbi0uanMgdGhpbmdzIHBhc3MKICAgICAgICAgICAgICAgICAgICAvL2FuIGV4dGVuc2lvbiwgdGhpcyBtZXRob2QgcHJvYmFibHkgbmVlZHMgdG8gYmUgcmV3b3JrZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gbW9kdWxlTmFtZSArIChleHQgfHwgJycpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL0EgbW9kdWxlIHRoYXQgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgcGF0aC4KICAgICAgICAgICAgICAgICAgICBwYXRocyA9IGNvbmZpZy5wYXRoczsKCiAgICAgICAgICAgICAgICAgICAgc3ltcyA9IG1vZHVsZU5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgICAgICAvL0ZvciBlYWNoIG1vZHVsZSBuYW1lIHNlZ21lbnQsIHNlZSBpZiB0aGVyZSBpcyBhIHBhdGgKICAgICAgICAgICAgICAgICAgICAvL3JlZ2lzdGVyZWQgZm9yIGl0LiBTdGFydCB3aXRoIG1vc3Qgc3BlY2lmaWMgbmFtZQogICAgICAgICAgICAgICAgICAgIC8vYW5kIHdvcmsgdXAgZnJvbSBpdC4KICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBzeW1zLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRNb2R1bGUgPSBzeW1zLnNsaWNlKDAsIGkpLmpvaW4oJy8nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBnZXRPd24ocGF0aHMsIHBhcmVudE1vZHVsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lmIGFuIGFycmF5LCBpdCBtZWFucyB0aGVyZSBhcmUgYSBmZXcgY2hvaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2hvb3NlIHRoZSBvbmUgdGhhdCBpcyBkZXNpcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShwYXJlbnRQYXRoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGggPSBwYXJlbnRQYXRoWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltcy5zcGxpY2UoMCwgaSwgcGFyZW50UGF0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9Kb2luIHRoZSBwYXRoIHBhcnRzIHRvZ2V0aGVyLCB0aGVuIGZpZ3VyZSBvdXQgaWYgYmFzZVVybCBpcyBuZWVkZWQuCiAgICAgICAgICAgICAgICAgICAgdXJsID0gc3ltcy5qb2luKCcvJyk7CiAgICAgICAgICAgICAgICAgICAgdXJsICs9IChleHQgfHwgKC9eZGF0YVw6fF5ibG9iXDp8XD8vLnRlc3QodXJsKSB8fCBza2lwRXh0ID8gJycgOiAnLmpzJykpOwogICAgICAgICAgICAgICAgICAgIHVybCA9ICh1cmwuY2hhckF0KDApID09PSAnLycgfHwgdXJsLm1hdGNoKC9eW1x3XCtcLlwtXSs6LykgPyAnJyA6IGNvbmZpZy5iYXNlVXJsKSArIHVybDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnVybEFyZ3MgJiYgIS9eYmxvYlw6Ly50ZXN0KHVybCkgPwogICAgICAgICAgICAgICAgICAgICAgIHVybCArIGNvbmZpZy51cmxBcmdzKG1vZHVsZU5hbWUsIHVybCkgOiB1cmw7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvL0RlbGVnYXRlcyB0byByZXEubG9hZC4gQnJva2VuIG91dCBhcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvCiAgICAgICAgICAgIC8vYWxsb3cgb3ZlcnJpZGluZyBpbiB0aGUgb3B0aW1pemVyLgogICAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoaWQsIHVybCkgewogICAgICAgICAgICAgICAgcmVxLmxvYWQoY29udGV4dCwgaWQsIHVybCk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogRXhlY3V0ZXMgYSBtb2R1bGUgY2FsbGJhY2sgZnVuY3Rpb24uIEJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbgogICAgICAgICAgICAgKiBzb2xlbHkgdG8gYWxsb3cgdGhlIGJ1aWxkIHN5c3RlbSB0byBzZXF1ZW5jZSB0aGUgZmlsZXMgaW4gdGhlIGJ1aWx0CiAgICAgICAgICAgICAqIGxheWVyIGluIHRoZSByaWdodCBzZXF1ZW5jZS4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHByaXZhdGUKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGV4ZWNDYjogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCBhcmdzLCBleHBvcnRzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkoZXhwb3J0cywgYXJncyk7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogY2FsbGJhY2sgZm9yIHNjcmlwdCBsb2FkcywgdXNlZCB0byBjaGVjayBzdGF0dXMgb2YgbG9hZGluZy4KICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHBhcmFtIHtFdmVudH0gZXZ0IHRoZSBldmVudCBmcm9tIHRoZSBicm93c2VyIGZvciB0aGUgc2NyaXB0CiAgICAgICAgICAgICAqIHRoYXQgd2FzIGxvYWRlZC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0TG9hZDogZnVuY3Rpb24gKGV2dCkgewogICAgICAgICAgICAgICAgLy9Vc2luZyBjdXJyZW50VGFyZ2V0IGluc3RlYWQgb2YgdGFyZ2V0IGZvciBGaXJlZm94IDIuMCdzIHNha2UuIE5vdAogICAgICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdpbGwgYmUgc3VwcG9ydGVkLCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCiAgICAgICAgICAgICAgICAvL3RvIHN1cHBvcnQgYW5kIHN0aWxsIG1ha2VzIHNlbnNlLgogICAgICAgICAgICAgICAgaWYgKGV2dC50eXBlID09PSAnbG9hZCcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWR5UmVnRXhwLnRlc3QoKGV2dC5jdXJyZW50VGFyZ2V0IHx8IGV2dC5zcmNFbGVtZW50KS5yZWFkeVN0YXRlKSkpIHsKICAgICAgICAgICAgICAgICAgICAvL1Jlc2V0IGludGVyYWN0aXZlIHNjcmlwdCBzbyBhIHNjcmlwdCBub2RlIGlzIG5vdCBoZWxkIG9udG8gZm9yCiAgICAgICAgICAgICAgICAgICAgLy90byBsb25nLgogICAgICAgICAgICAgICAgICAgIGludGVyYWN0aXZlU2NyaXB0ID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGFuZCB0aGUgY29udGV4dC4KICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0KTsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChkYXRhLmlkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBDYWxsYmFjayBmb3Igc2NyaXB0IGVycm9ycy4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIG9uU2NyaXB0RXJyb3I6IGZ1bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gZ2V0U2NyaXB0RGF0YShldnQpOwogICAgICAgICAgICAgICAgaWYgKCFoYXNQYXRoRmFsbGJhY2soZGF0YS5pZCkpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50cyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKHJlZ2lzdHJ5LCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkuaW5kZXhPZignX0ByJykgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2godmFsdWUuZGVwTWFwcywgZnVuY3Rpb24oZGVwTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcE1hcC5pZCA9PT0gZGF0YS5pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRzLnB1c2goa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ3NjcmlwdGVycm9yJywgJ1NjcmlwdCBlcnJvciBmb3IgIicgKyBkYXRhLmlkICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudHMubGVuZ3RoID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIsIG5lZWRlZCBieTogJyArIHBhcmVudHMuam9pbignLCAnKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciJyksIGV2dCwgW2RhdGEuaWRdKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBjb250ZXh0LnJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKCk7CiAgICAgICAgcmV0dXJuIGNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWluIGVudHJ5IHBvaW50LgogICAgICoKICAgICAqIElmIHRoZSBvbmx5IGFyZ3VtZW50IHRvIHJlcXVpcmUgaXMgYSBzdHJpbmcsIHRoZW4gdGhlIG1vZHVsZSB0aGF0CiAgICAgKiBpcyByZXByZXNlbnRlZCBieSB0aGF0IHN0cmluZyBpcyBmZXRjaGVkIGZvciB0aGUgYXBwcm9wcmlhdGUgY29udGV4dC4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYW4gYXJyYXksIHRoZW4gaXQgd2lsbCBiZSB0cmVhdGVkIGFzIGFuIGFycmF5CiAgICAgKiBvZiBkZXBlbmRlbmN5IHN0cmluZyBuYW1lcyB0byBmZXRjaC4gQW4gb3B0aW9uYWwgZnVuY3Rpb24gY2FsbGJhY2sgY2FuCiAgICAgKiBiZSBzcGVjaWZpZWQgdG8gZXhlY3V0ZSB3aGVuIGFsbCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIGF2YWlsYWJsZS4KICAgICAqCiAgICAgKiBNYWtlIGEgbG9jYWwgcmVxIHZhcmlhYmxlIHRvIGhlbHAgQ2FqYSBjb21wbGlhbmNlIChpdCBhc3N1bWVzIHRoaW5ncwogICAgICogb24gYSByZXF1aXJlIHRoYXQgYXJlIG5vdCBzdGFuZGFyZGl6ZWQpLCBhbmQgdG8gZ2l2ZSBhIHNob3J0CiAgICAgKiBuYW1lIGZvciBtaW5pZmljYXRpb24vbG9jYWwgc2NvcGUgdXNlLgogICAgICovCiAgICByZXEgPSByZXF1aXJlanMgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIGVycmJhY2ssIG9wdGlvbmFsKSB7CgogICAgICAgIC8vRmluZCB0aGUgcmlnaHQgY29udGV4dCwgdXNlIGRlZmF1bHQKICAgICAgICB2YXIgY29udGV4dCwgY29uZmlnLAogICAgICAgICAgICBjb250ZXh0TmFtZSA9IGRlZkNvbnRleHROYW1lOwoKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgaGF2ZSBjb25maWcgb2JqZWN0IGluIHRoZSBjYWxsLgogICAgICAgIGlmICghaXNBcnJheShkZXBzKSAmJiB0eXBlb2YgZGVwcyAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgLy8gZGVwcyBpcyBhIGNvbmZpZyBvYmplY3QKICAgICAgICAgICAgY29uZmlnID0gZGVwczsKICAgICAgICAgICAgaWYgKGlzQXJyYXkoY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAvLyBBZGp1c3QgYXJncyBpZiB0aGVyZSBhcmUgZGVwZW5kZW5jaWVzCiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7CiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGVycmJhY2s7CiAgICAgICAgICAgICAgICBlcnJiYWNrID0gb3B0aW9uYWw7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChjb25maWcgJiYgY29uZmlnLmNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dE5hbWUgPSBjb25maWcuY29udGV4dDsKICAgICAgICB9CgogICAgICAgIGNvbnRleHQgPSBnZXRPd24oY29udGV4dHMsIGNvbnRleHROYW1lKTsKICAgICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW2NvbnRleHROYW1lXSA9IHJlcS5zLm5ld0NvbnRleHQoY29udGV4dE5hbWUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbmZpZykgewogICAgICAgICAgICBjb250ZXh0LmNvbmZpZ3VyZShjb25maWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNvbnRleHQucmVxdWlyZShkZXBzLCBjYWxsYmFjaywgZXJyYmFjayk7CiAgICB9OwoKICAgIC8qKgogICAgICogU3VwcG9ydCByZXF1aXJlLmNvbmZpZygpIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvb3BlcmF0ZSB3aXRoIG90aGVyCiAgICAgKiBBTUQgbG9hZGVycyBvbiBnbG9iYWxseSBhZ3JlZWQgbmFtZXMuCiAgICAgKi8KICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgICAgcmV0dXJuIHJlcShjb25maWcpOwogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgc29tZXRoaW5nIGFmdGVyIHRoZSBjdXJyZW50IHRpY2sKICAgICAqIG9mIHRoZSBldmVudCBsb29wLiBPdmVycmlkZSBmb3Igb3RoZXIgZW52cwogICAgICogdGhhdCBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIHRoYW4gc2V0VGltZW91dC4KICAgICAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byBleGVjdXRlIGxhdGVyLgogICAgICovCiAgICByZXEubmV4dFRpY2sgPSB0eXBlb2Ygc2V0VGltZW91dCAhPT0gJ3VuZGVmaW5lZCcgPyBmdW5jdGlvbiAoZm4pIHsKICAgICAgICBzZXRUaW1lb3V0KGZuLCA0KTsKICAgIH0gOiBmdW5jdGlvbiAoZm4pIHsgZm4oKTsgfTsKCiAgICAvKioKICAgICAqIEV4cG9ydCByZXF1aXJlIGFzIGEgZ2xvYmFsLCBidXQgb25seSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LgogICAgICovCiAgICBpZiAoIXJlcXVpcmUpIHsKICAgICAgICByZXF1aXJlID0gcmVxOwogICAgfQoKICAgIHJlcS52ZXJzaW9uID0gdmVyc2lvbjsKCiAgICAvL1VzZWQgdG8gZmlsdGVyIG91dCBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYWxyZWFkeSBwYXRocy4KICAgIHJlcS5qc0V4dFJlZ0V4cCA9IC9eXC98OnxcP3xcLmpzJC87CiAgICByZXEuaXNCcm93c2VyID0gaXNCcm93c2VyOwogICAgcyA9IHJlcS5zID0gewogICAgICAgIGNvbnRleHRzOiBjb250ZXh0cywKICAgICAgICBuZXdDb250ZXh0OiBuZXdDb250ZXh0CiAgICB9OwoKICAgIC8vQ3JlYXRlIGRlZmF1bHQgY29udGV4dC4KICAgIHJlcSh7fSk7CgogICAgLy9FeHBvcnRzIHNvbWUgY29udGV4dC1zZW5zaXRpdmUgbWV0aG9kcyBvbiBnbG9iYWwgcmVxdWlyZS4KICAgIGVhY2goWwogICAgICAgICd0b1VybCcsCiAgICAgICAgJ3VuZGVmJywKICAgICAgICAnZGVmaW5lZCcsCiAgICAgICAgJ3NwZWNpZmllZCcKICAgIF0sIGZ1bmN0aW9uIChwcm9wKSB7CiAgICAgICAgLy9SZWZlcmVuY2UgZnJvbSBjb250ZXh0cyBpbnN0ZWFkIG9mIGVhcmx5IGJpbmRpbmcgdG8gZGVmYXVsdCBjb250ZXh0LAogICAgICAgIC8vc28gdGhhdCBkdXJpbmcgYnVpbGRzLCB0aGUgbGF0ZXN0IGluc3RhbmNlIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQKICAgICAgICAvL3dpdGggaXRzIGNvbmZpZyBnZXRzIHVzZWQuCiAgICAgICAgcmVxW3Byb3BdID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgY3R4ID0gY29udGV4dHNbZGVmQ29udGV4dE5hbWVdOwogICAgICAgICAgICByZXR1cm4gY3R4LnJlcXVpcmVbcHJvcF0uYXBwbHkoY3R4LCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9KTsKCiAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgaGVhZCA9IHMuaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07CiAgICAgICAgLy9JZiBCQVNFIHRhZyBpcyBpbiBwbGF5LCB1c2luZyBhcHBlbmRDaGlsZCBpcyBhIHByb2JsZW0gZm9yIElFNi4KICAgICAgICAvL1doZW4gdGhhdCBicm93c2VyIGRpZXMsIHRoaXMgY2FuIGJlIHJlbW92ZWQuIERldGFpbHMgaW4gdGhpcyBqUXVlcnkgYnVnOgogICAgICAgIC8vaHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC8yNzA5CiAgICAgICAgYmFzZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpWzBdOwogICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICBoZWFkID0gcy5oZWFkID0gYmFzZUVsZW1lbnQucGFyZW50Tm9kZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBbnkgZXJyb3JzIHRoYXQgcmVxdWlyZSBleHBsaWNpdGx5IGdlbmVyYXRlcyB3aWxsIGJlIHBhc3NlZCB0byB0aGlzCiAgICAgKiBmdW5jdGlvbi4gSW50ZXJjZXB0L292ZXJyaWRlIGl0IGlmIHlvdSB3YW50IGN1c3RvbSBlcnJvciBoYW5kbGluZy4KICAgICAqIEBwYXJhbSB7RXJyb3J9IGVyciB0aGUgZXJyb3Igb2JqZWN0LgogICAgICovCiAgICByZXEub25FcnJvciA9IGRlZmF1bHRPbkVycm9yOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyB0aGUgbm9kZSBmb3IgdGhlIGxvYWQgY29tbWFuZC4gT25seSB1c2VkIGluIGJyb3dzZXIgZW52cy4KICAgICAqLwogICAgcmVxLmNyZWF0ZU5vZGUgPSBmdW5jdGlvbiAoY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgbm9kZSA9IGNvbmZpZy54aHRtbCA/CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnaHRtbDpzY3JpcHQnKSA6CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBub2RlLnR5cGUgPSBjb25maWcuc2NyaXB0VHlwZSB8fCAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgICBub2RlLmNoYXJzZXQgPSAndXRmLTgnOwogICAgICAgIG5vZGUuYXN5bmMgPSB0cnVlOwogICAgICAgIHJldHVybiBub2RlOwogICAgfTsKCiAgICAvKioKICAgICAqIERvZXMgdGhlIHJlcXVlc3QgdG8gbG9hZCBhIG1vZHVsZSBmb3IgdGhlIGJyb3dzZXIgY2FzZS4KICAgICAqIE1ha2UgdGhpcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIGFsbG93IG90aGVyIGVudmlyb25tZW50cwogICAgICogdG8gb3ZlcnJpZGUgaXQuCiAgICAgKgogICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHQgdGhlIHJlcXVpcmUgY29udGV4dCB0byBmaW5kIHN0YXRlLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSB1cmwgdGhlIFVSTCB0byB0aGUgbW9kdWxlLgogICAgICovCiAgICByZXEubG9hZCA9IGZ1bmN0aW9uIChjb250ZXh0LCBtb2R1bGVOYW1lLCB1cmwpIHsKICAgICAgICB2YXIgY29uZmlnID0gKGNvbnRleHQgJiYgY29udGV4dC5jb25maWcpIHx8IHt9LAogICAgICAgICAgICBub2RlOwogICAgICAgIGlmIChpc0Jyb3dzZXIpIHsKICAgICAgICAgICAgLy9JbiB0aGUgYnJvd3NlciBzbyB1c2UgYSBzY3JpcHQgdGFnCiAgICAgICAgICAgIG5vZGUgPSByZXEuY3JlYXRlTm9kZShjb25maWcsIG1vZHVsZU5hbWUsIHVybCk7CgogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcsIGNvbnRleHQuY29udGV4dE5hbWUpOwogICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJywgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAvL1NldCB1cCBsb2FkIGxpc3RlbmVyLiBUZXN0IGF0dGFjaEV2ZW50IGZpcnN0IGJlY2F1c2UgSUU5IGhhcwogICAgICAgICAgICAvL2Egc3VidGxlIGlzc3VlIGluIGl0cyBhZGRFdmVudExpc3RlbmVyIGFuZCBzY3JpcHQgb25sb2FkIGZpcmluZ3MKICAgICAgICAgICAgLy90aGF0IGRvIG5vdCBtYXRjaCB0aGUgYmVoYXZpb3Igb2YgYWxsIG90aGVyIGJyb3dzZXJzIHdpdGgKICAgICAgICAgICAgLy9hZGRFdmVudExpc3RlbmVyIHN1cHBvcnQsIHdoaWNoIGZpcmUgdGhlIG9ubG9hZCBldmVudCBmb3IgYQogICAgICAgICAgICAvL3NjcmlwdCByaWdodCBhZnRlciB0aGUgc2NyaXB0IGV4ZWN1dGlvbi4gU2VlOgogICAgICAgICAgICAvL2h0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvNjQ4MDU3L3NjcmlwdC1vbmxvYWQtZXZlbnQtaXMtbm90LWZpcmVkLWltbWVkaWF0ZWx5LWFmdGVyLXNjcmlwdC1leGVjdXRpb24KICAgICAgICAgICAgLy9VTkZPUlRVTkFURUxZIE9wZXJhIGltcGxlbWVudHMgYXR0YWNoRXZlbnQgYnV0IGRvZXMgbm90IGZvbGxvdyB0aGUgc2NyaXB0CiAgICAgICAgICAgIC8vc2NyaXB0IGV4ZWN1dGlvbiBtb2RlLgogICAgICAgICAgICBpZiAobm9kZS5hdHRhY2hFdmVudCAmJgogICAgICAgICAgICAgICAgICAgIC8vQ2hlY2sgaWYgbm9kZS5hdHRhY2hFdmVudCBpcyBhcnRpZmljaWFsbHkgYWRkZWQgYnkgY3VzdG9tIHNjcmlwdCBvcgogICAgICAgICAgICAgICAgICAgIC8vbmF0aXZlbHkgc3VwcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAgICAgICAgICAgICAgICAvL3JlYWQgaHR0cHM6Ly9naXRodWIuY29tL3JlcXVpcmVqcy9yZXF1aXJlanMvaXNzdWVzLzE4NwogICAgICAgICAgICAgICAgICAgIC8vaWYgd2UgY2FuIE5PVCBmaW5kIFtuYXRpdmUgY29kZV0gdGhlbiBpdCBtdXN0IE5PVCBuYXRpdmVseSBzdXBwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgLy9pbiBJRTgsIG5vZGUuYXR0YWNoRXZlbnQgZG9lcyBub3QgaGF2ZSB0b1N0cmluZygpCiAgICAgICAgICAgICAgICAgICAgLy9Ob3RlIHRoZSB0ZXN0IGZvciAiW25hdGl2ZSBjb2RlIiB3aXRoIG5vIGNsb3NpbmcgYnJhY2UsIHNlZToKICAgICAgICAgICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2lzc3Vlcy8yNzMKICAgICAgICAgICAgICAgICAgICAhKG5vZGUuYXR0YWNoRXZlbnQudG9TdHJpbmcgJiYgbm9kZS5hdHRhY2hFdmVudC50b1N0cmluZygpLmluZGV4T2YoJ1tuYXRpdmUgY29kZScpIDwgMCkgJiYKICAgICAgICAgICAgICAgICAgICAhaXNPcGVyYSkgewogICAgICAgICAgICAgICAgLy9Qcm9iYWJseSBJRS4gSUUgKGF0IGxlYXN0IDYtOCkgZG8gbm90IGZpcmUKICAgICAgICAgICAgICAgIC8vc2NyaXB0IG9ubG9hZCByaWdodCBhZnRlciBleGVjdXRpbmcgdGhlIHNjcmlwdCwgc28KICAgICAgICAgICAgICAgIC8vd2UgY2Fubm90IHRpZSB0aGUgYW5vbnltb3VzIGRlZmluZSBjYWxsIHRvIGEgbmFtZS4KICAgICAgICAgICAgICAgIC8vSG93ZXZlciwgSUUgcmVwb3J0cyB0aGUgc2NyaXB0IGFzIGJlaW5nIGluICdpbnRlcmFjdGl2ZScKICAgICAgICAgICAgICAgIC8vcmVhZHlTdGF0ZSBhdCB0aGUgdGltZSBvZiB0aGUgZGVmaW5lIGNhbGwuCiAgICAgICAgICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IHRydWU7CgogICAgICAgICAgICAgICAgbm9kZS5hdHRhY2hFdmVudCgnb25yZWFkeXN0YXRlY2hhbmdlJywgY29udGV4dC5vblNjcmlwdExvYWQpOwogICAgICAgICAgICAgICAgLy9JdCB3b3VsZCBiZSBncmVhdCB0byBhZGQgYW4gZXJyb3IgaGFuZGxlciBoZXJlIHRvIGNhdGNoCiAgICAgICAgICAgICAgICAvLzQwNHMgaW4gSUU5Ky4gSG93ZXZlciwgb25yZWFkeXN0YXRlY2hhbmdlIHdpbGwgZmlyZSBiZWZvcmUKICAgICAgICAgICAgICAgIC8vdGhlIGVycm9yIGhhbmRsZXIsIHNvIHRoYXQgZG9lcyBub3QgaGVscC4gSWYgYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAgICAgLy9pcyB1c2VkLCB0aGVuIElFIHdpbGwgZmlyZSBlcnJvciBiZWZvcmUgbG9hZCwgYnV0IHdlIGNhbm5vdAogICAgICAgICAgICAgICAgLy91c2UgdGhhdCBwYXRod2F5IGdpdmVuIHRoZSBjb25uZWN0Lm1pY3Jvc29mdC5jb20gaXNzdWUKICAgICAgICAgICAgICAgIC8vbWVudGlvbmVkIGFib3ZlIGFib3V0IG5vdCBkb2luZyB0aGUgJ3NjcmlwdCBleGVjdXRlLAogICAgICAgICAgICAgICAgLy90aGVuIGZpcmUgdGhlIHNjcmlwdCBsb2FkIGV2ZW50IGxpc3RlbmVyIGJlZm9yZSBleGVjdXRlCiAgICAgICAgICAgICAgICAvL25leHQgc2NyaXB0JyB0aGF0IG90aGVyIGJyb3dzZXJzIGRvLgogICAgICAgICAgICAgICAgLy9CZXN0IGhvcGU6IElFMTAgZml4ZXMgdGhlIGlzc3VlcywKICAgICAgICAgICAgICAgIC8vYW5kIHRoZW4gZGVzdHJveXMgYWxsIGluc3RhbGxzIG9mIElFIDYtOS4KICAgICAgICAgICAgICAgIC8vbm9kZS5hdHRhY2hFdmVudCgnb25lcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvcik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBjb250ZXh0Lm9uU2NyaXB0TG9hZCwgZmFsc2UpOwogICAgICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGNvbnRleHQub25TY3JpcHRFcnJvciwgZmFsc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5vZGUuc3JjID0gdXJsOwoKICAgICAgICAgICAgLy9DYWxsaW5nIG9uTm9kZUNyZWF0ZWQgYWZ0ZXIgYWxsIHByb3BlcnRpZXMgb24gdGhlIG5vZGUgaGF2ZSBiZWVuCiAgICAgICAgICAgIC8vc2V0LCBidXQgYmVmb3JlIGl0IGlzIHBsYWNlZCBpbiB0aGUgRE9NLgogICAgICAgICAgICBpZiAoY29uZmlnLm9uTm9kZUNyZWF0ZWQpIHsKICAgICAgICAgICAgICAgIGNvbmZpZy5vbk5vZGVDcmVhdGVkKG5vZGUsIGNvbmZpZywgbW9kdWxlTmFtZSwgdXJsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9Gb3Igc29tZSBjYWNoZSBjYXNlcyBpbiBJRSA2LTgsIHRoZSBzY3JpcHQgZXhlY3V0ZXMgYmVmb3JlIHRoZSBlbmQKICAgICAgICAgICAgLy9vZiB0aGUgYXBwZW5kQ2hpbGQgZXhlY3V0aW9uLCBzbyB0byB0aWUgYW4gYW5vbnltb3VzIGRlZmluZQogICAgICAgICAgICAvL2NhbGwgdG8gdGhlIG1vZHVsZSBuYW1lICh3aGljaCBpcyBzdG9yZWQgb24gdGhlIG5vZGUpLCBob2xkIG9uCiAgICAgICAgICAgIC8vdG8gYSByZWZlcmVuY2UgdG8gdGhpcyBub2RlLCBidXQgY2xlYXIgYWZ0ZXIgdGhlIERPTSBpbnNlcnRpb24uCiAgICAgICAgICAgIGN1cnJlbnRseUFkZGluZ1NjcmlwdCA9IG5vZGU7CiAgICAgICAgICAgIGlmIChiYXNlRWxlbWVudCkgewogICAgICAgICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUobm9kZSwgYmFzZUVsZW1lbnQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChub2RlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdXJyZW50bHlBZGRpbmdTY3JpcHQgPSBudWxsOwoKICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgfSBlbHNlIGlmIChpc1dlYldvcmtlcikgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy9JbiBhIHdlYiB3b3JrZXIsIHVzZSBpbXBvcnRTY3JpcHRzLiBUaGlzIGlzIG5vdCBhIHZlcnkKICAgICAgICAgICAgICAgIC8vZWZmaWNpZW50IHVzZSBvZiBpbXBvcnRTY3JpcHRzLCBpbXBvcnRTY3JpcHRzIHdpbGwgYmxvY2sgdW50aWwKICAgICAgICAgICAgICAgIC8vaXRzIHNjcmlwdCBpcyBkb3dubG9hZGVkIGFuZCBldmFsdWF0ZWQuIEhvd2V2ZXIsIGlmIHdlYiB3b3JrZXJzCiAgICAgICAgICAgICAgICAvL2FyZSBpbiBwbGF5LCB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCBhIGJ1aWxkIGhhcyBiZWVuIGRvbmUgc28KICAgICAgICAgICAgICAgIC8vdGhhdCBvbmx5IG9uZSBzY3JpcHQgbmVlZHMgdG8gYmUgbG9hZGVkIGFueXdheS4gVGhpcyBtYXkgbmVlZAogICAgICAgICAgICAgICAgLy90byBiZSByZWV2YWx1YXRlZCBpZiBvdGhlciB1c2UgY2FzZXMgYmVjb21lIGNvbW1vbi4KCiAgICAgICAgICAgICAgICAvLyBQb3N0IGEgdGFzayB0byB0aGUgZXZlbnQgbG9vcCB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBXZWJLaXQKICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSB3b3JrZXIgZ2V0cyBnYXJiYWdlLWNvbGxlY3RlZCBhZnRlciBjYWxsaW5nCiAgICAgICAgICAgICAgICAvLyBpbXBvcnRTY3JpcHRzKCk6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MzMxNwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHt9LCAwKTsKICAgICAgICAgICAgICAgIGltcG9ydFNjcmlwdHModXJsKTsKCiAgICAgICAgICAgICAgICAvL0FjY291bnQgZm9yIGFub255bW91cyBtb2R1bGVzCiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBsZXRlTG9hZChtb2R1bGVOYW1lKTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgY29udGV4dC5vbkVycm9yKG1ha2VFcnJvcignaW1wb3J0c2NyaXB0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydFNjcmlwdHMgZmFpbGVkIGZvciAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSArICcgYXQgJyArIHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBmdW5jdGlvbiBnZXRJbnRlcmFjdGl2ZVNjcmlwdCgpIHsKICAgICAgICBpZiAoaW50ZXJhY3RpdmVTY3JpcHQgJiYgaW50ZXJhY3RpdmVTY3JpcHQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJykgewogICAgICAgICAgICByZXR1cm4gaW50ZXJhY3RpdmVTY3JpcHQ7CiAgICAgICAgfQoKICAgICAgICBlYWNoUmV2ZXJzZShzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHQpIHsKICAgICAgICAgICAgaWYgKHNjcmlwdC5yZWFkeVN0YXRlID09PSAnaW50ZXJhY3RpdmUnKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGludGVyYWN0aXZlU2NyaXB0ID0gc2NyaXB0KTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHJldHVybiBpbnRlcmFjdGl2ZVNjcmlwdDsKICAgIH0KCiAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIHNjcmlwdCBhdHRyaWJ1dGUsIHdoaWNoIGNvdWxkIGFsc28gYWRqdXN0IHRoZSBiYXNlVXJsLgogICAgaWYgKGlzQnJvd3NlciAmJiAhY2ZnLnNraXBEYXRhTWFpbikgewogICAgICAgIC8vRmlndXJlIG91dCBiYXNlVXJsLiBHZXQgaXQgZnJvbSB0aGUgc2NyaXB0IHRhZyB3aXRoIHJlcXVpcmUuanMgaW4gaXQuCiAgICAgICAgZWFjaFJldmVyc2Uoc2NyaXB0cygpLCBmdW5jdGlvbiAoc2NyaXB0KSB7CiAgICAgICAgICAgIC8vU2V0IHRoZSAnaGVhZCcgd2hlcmUgd2UgY2FuIGFwcGVuZCBjaGlsZHJlbiBieQogICAgICAgICAgICAvL3VzaW5nIHRoZSBzY3JpcHQncyBwYXJlbnQuCiAgICAgICAgICAgIGlmICghaGVhZCkgewogICAgICAgICAgICAgICAgaGVhZCA9IHNjcmlwdC5wYXJlbnROb2RlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0xvb2sgZm9yIGEgZGF0YS1tYWluIGF0dHJpYnV0ZSB0byBzZXQgbWFpbiBzY3JpcHQgZm9yIHRoZSBwYWdlCiAgICAgICAgICAgIC8vdG8gbG9hZC4gSWYgaXQgaXMgdGhlcmUsIHRoZSBwYXRoIHRvIGRhdGEgbWFpbiBiZWNvbWVzIHRoZQogICAgICAgICAgICAvL2Jhc2VVcmwsIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHNldC4KICAgICAgICAgICAgZGF0YU1haW4gPSBzY3JpcHQuZ2V0QXR0cmlidXRlKCdkYXRhLW1haW4nKTsKICAgICAgICAgICAgaWYgKGRhdGFNYWluKSB7CiAgICAgICAgICAgICAgICAvL1ByZXNlcnZlIGRhdGFNYWluIGluIGNhc2UgaXQgaXMgYSBwYXRoIChpLmUuIGNvbnRhaW5zICc/JykKICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBkYXRhTWFpbjsKCiAgICAgICAgICAgICAgICAvL1NldCBmaW5hbCBiYXNlVXJsIGlmIHRoZXJlIGlzIG5vdCBhbHJlYWR5IGFuIGV4cGxpY2l0IG9uZSwKICAgICAgICAgICAgICAgIC8vYnV0IG9ubHkgZG8gc28gaWYgdGhlIGRhdGEtbWFpbiB2YWx1ZSBpcyBub3QgYSBsb2FkZXIgcGx1Z2luCiAgICAgICAgICAgICAgICAvL21vZHVsZSBJRC4KICAgICAgICAgICAgICAgIGlmICghY2ZnLmJhc2VVcmwgJiYgbWFpblNjcmlwdC5pbmRleE9mKCchJykgPT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgLy9QdWxsIG9mZiB0aGUgZGlyZWN0b3J5IG9mIGRhdGEtbWFpbiBmb3IgdXNlIGFzIHRoZQogICAgICAgICAgICAgICAgICAgIC8vYmFzZVVybC4KICAgICAgICAgICAgICAgICAgICBzcmMgPSBtYWluU2NyaXB0LnNwbGl0KCcvJyk7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IHNyYy5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBzdWJQYXRoID0gc3JjLmxlbmd0aCA/IHNyYy5qb2luKCcvJykgICsgJy8nIDogJy4vJzsKCiAgICAgICAgICAgICAgICAgICAgY2ZnLmJhc2VVcmwgPSBzdWJQYXRoOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vU3RyaXAgb2ZmIGFueSB0cmFpbGluZyAuanMgc2luY2UgbWFpblNjcmlwdCBpcyBub3cKICAgICAgICAgICAgICAgIC8vbGlrZSBhIG1vZHVsZSBuYW1lLgogICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IG1haW5TY3JpcHQucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwoKICAgICAgICAgICAgICAgIC8vSWYgbWFpblNjcmlwdCBpcyBzdGlsbCBhIHBhdGgsIGZhbGwgYmFjayB0byBkYXRhTWFpbgogICAgICAgICAgICAgICAgaWYgKHJlcS5qc0V4dFJlZ0V4cC50ZXN0KG1haW5TY3JpcHQpKSB7CiAgICAgICAgICAgICAgICAgICAgbWFpblNjcmlwdCA9IGRhdGFNYWluOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vUHV0IHRoZSBkYXRhLW1haW4gc2NyaXB0IGluIHRoZSBmaWxlcyB0byBsb2FkLgogICAgICAgICAgICAgICAgY2ZnLmRlcHMgPSBjZmcuZGVwcyA/IGNmZy5kZXBzLmNvbmNhdChtYWluU2NyaXB0KSA6IFttYWluU2NyaXB0XTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyBkZWZpbml0aW9ucyBvZiBtb2R1bGVzLiBEaWZmZXJzIGZyb20KICAgICAqIHJlcXVpcmUoKSBpbiB0aGF0IGEgc3RyaW5nIGZvciB0aGUgbW9kdWxlIHNob3VsZCBiZSB0aGUgZmlyc3QgYXJndW1lbnQsCiAgICAgKiBhbmQgdGhlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYWZ0ZXIgZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQgc2hvdWxkCiAgICAgKiByZXR1cm4gYSB2YWx1ZSB0byBkZWZpbmUgdGhlIG1vZHVsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBhcmd1bWVudCdzCiAgICAgKiBuYW1lLgogICAgICovCiAgICBkZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHsKICAgICAgICB2YXIgbm9kZSwgY29udGV4dDsKCiAgICAgICAgLy9BbGxvdyBmb3IgYW5vbnltb3VzIG1vZHVsZXMKICAgICAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIC8vQWRqdXN0IGFyZ3MgYXBwcm9wcmlhdGVseQogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBuYW1lOwogICAgICAgICAgICBuYW1lID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llcwogICAgICAgIGlmICghaXNBcnJheShkZXBzKSkgewogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgLy9JZiBubyBuYW1lLCBhbmQgY2FsbGJhY2sgaXMgYSBmdW5jdGlvbiwgdGhlbiBmaWd1cmUgb3V0IGlmIGl0IGEKICAgICAgICAvL0NvbW1vbkpTIHRoaW5nIHdpdGggZGVwZW5kZW5jaWVzLgogICAgICAgIGlmICghZGVwcyAmJiBpc0Z1bmN0aW9uKGNhbGxiYWNrKSkgewogICAgICAgICAgICBkZXBzID0gW107CiAgICAgICAgICAgIC8vUmVtb3ZlIGNvbW1lbnRzIGZyb20gdGhlIGNhbGxiYWNrIHN0cmluZywKICAgICAgICAgICAgLy9sb29rIGZvciByZXF1aXJlIGNhbGxzLCBhbmQgcHVsbCB0aGVtIGludG8gdGhlIGRlcGVuZGVuY2llcywKICAgICAgICAgICAgLy9idXQgb25seSBpZiB0aGVyZSBhcmUgZnVuY3Rpb24gYXJncy4KICAgICAgICAgICAgaWYgKGNhbGxiYWNrLmxlbmd0aCkgewogICAgICAgICAgICAgICAgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNvbW1lbnRSZWdFeHAsIGNvbW1lbnRSZXBsYWNlKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGNqc1JlcXVpcmVSZWdFeHAsIGZ1bmN0aW9uIChtYXRjaCwgZGVwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlcHMucHVzaChkZXApOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vTWF5IGJlIGEgQ29tbW9uSlMgdGhpbmcgZXZlbiB3aXRob3V0IHJlcXVpcmUgY2FsbHMsIGJ1dCBzdGlsbAogICAgICAgICAgICAgICAgLy9jb3VsZCB1c2UgZXhwb3J0cywgYW5kIG1vZHVsZS4gQXZvaWQgZG9pbmcgZXhwb3J0cyBhbmQgbW9kdWxlCiAgICAgICAgICAgICAgICAvL3dvcmsgdGhvdWdoIGlmIGl0IGp1c3QgbmVlZHMgcmVxdWlyZS4KICAgICAgICAgICAgICAgIC8vUkVRVUlSRVMgdGhlIGZ1bmN0aW9uIHRvIGV4cGVjdCB0aGUgQ29tbW9uSlMgdmFyaWFibGVzIGluIHRoZQogICAgICAgICAgICAgICAgLy9vcmRlciBsaXN0ZWQgYmVsb3cuCiAgICAgICAgICAgICAgICBkZXBzID0gKGNhbGxiYWNrLmxlbmd0aCA9PT0gMSA/IFsncmVxdWlyZSddIDogWydyZXF1aXJlJywgJ2V4cG9ydHMnLCAnbW9kdWxlJ10pLmNvbmNhdChkZXBzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9JZiBpbiBJRSA2LTggYW5kIGhpdCBhbiBhbm9ueW1vdXMgZGVmaW5lKCkgY2FsbCwgZG8gdGhlIGludGVyYWN0aXZlCiAgICAgICAgLy93b3JrLgogICAgICAgIGlmICh1c2VJbnRlcmFjdGl2ZSkgewogICAgICAgICAgICBub2RlID0gY3VycmVudGx5QWRkaW5nU2NyaXB0IHx8IGdldEludGVyYWN0aXZlU2NyaXB0KCk7CiAgICAgICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICAgICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHRzW25vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVjb250ZXh0JyldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL0Fsd2F5cyBzYXZlIG9mZiBldmFsdWF0aW5nIHRoZSBkZWYgY2FsbCB1bnRpbCB0aGUgc2NyaXB0IG9ubG9hZCBoYW5kbGVyLgogICAgICAgIC8vVGhpcyBhbGxvd3MgbXVsdGlwbGUgbW9kdWxlcyB0byBiZSBpbiBhIGZpbGUgd2l0aG91dCBwcmVtYXR1cmVseQogICAgICAgIC8vdHJhY2luZyBkZXBlbmRlbmNpZXMsIGFuZCBhbGxvd3MgZm9yIGFub255bW91cyBtb2R1bGUgc3VwcG9ydCwKICAgICAgICAvL3doZXJlIHRoZSBtb2R1bGUgbmFtZSBpcyBub3Qga25vd24gdW50aWwgdGhlIHNjcmlwdCBvbmxvYWQgZXZlbnQKICAgICAgICAvL29jY3Vycy4gSWYgbm8gY29udGV4dCwgdXNlIHRoZSBnbG9iYWwgcXVldWUsIGFuZCBnZXQgaXQgcHJvY2Vzc2VkCiAgICAgICAgLy9pbiB0aGUgb25zY3JpcHQgbG9hZCBjYWxsYmFjay4KICAgICAgICBpZiAoY29udGV4dCkgewogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgICAgIGNvbnRleHQuZGVmUXVldWVNYXBbbmFtZV0gPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdsb2JhbERlZlF1ZXVlLnB1c2goW25hbWUsIGRlcHMsIGNhbGxiYWNrXSk7CiAgICAgICAgfQogICAgfTsKCiAgICBkZWZpbmUuYW1kID0gewogICAgICAgIGpRdWVyeTogdHJ1ZQogICAgfTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGVzIHRoZSB0ZXh0LiBOb3JtYWxseSBqdXN0IHVzZXMgZXZhbCwgYnV0IGNhbiBiZSBtb2RpZmllZAogICAgICogdG8gdXNlIGEgYmV0dGVyLCBlbnZpcm9ubWVudC1zcGVjaWZpYyBjYWxsLiBPbmx5IHVzZWQgZm9yIHRyYW5zcGlsaW5nCiAgICAgKiBsb2FkZXIgcGx1Z2lucywgbm90IGZvciBwbGFpbiBKUyBtb2R1bGVzLgogICAgICogQHBhcmFtIHtTdHJpbmd9IHRleHQgdGhlIHRleHQgdG8gZXhlY3V0ZS9ldmFsdWF0ZS4KICAgICAqLwogICAgcmVxLmV4ZWMgPSBmdW5jdGlvbiAodGV4dCkgewogICAgICAgIC8qanNsaW50IGV2aWw6IHRydWUgKi8KICAgICAgICByZXR1cm4gZXZhbCh0ZXh0KTsKICAgIH07CgogICAgLy9TZXQgdXAgd2l0aCBjb25maWcgaW5mby4KICAgIHJlcShjZmcpOwp9KHRoaXMsICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBzZXRUaW1lb3V0KSkpOwoK", + "headers": [ + [ + "content-type", + "text/javascript; charset=utf-8" + ] + ], + "ok": true, + "status": 200, + "status_text": "" + } + } + }, + "id": "JGE4eeUCWsss", + "outputId": "3e1d7bc8-9721-49d6-c251-7783be4874cf" + }, + "outputs": [], + "source": [ + "%tensorboard --logdir 'runs/'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df8682b3", + "metadata": { + "id": "df8682b3" + }, + "outputs": [], + "source": [ + "config = {'params': {'algo': {'name': 'a2c_continuous'},\n", + " 'config': {'bound_loss_type': 'regularisation',\n", + " 'bounds_loss_coef': 0.0,\n", + " 'clip_value': False,\n", + " 'critic_coef': 4,\n", + " 'e_clip': 0.2,\n", + " 'entropy_coef': 0.0,\n", + " 'env_config': {'env_name': 'Pendulum-v1', 'seed': 5},\n", + " 'env_name': 'envpool',\n", + " 'full_experiment_name' : 'pendulum_onnx',\n", + " 'save_best_after' : 20,\n", + " 'gamma': 0.99,\n", + " 'grad_norm': 1.0,\n", + " 'horizon_length': 32,\n", + " 'kl_threshold': 0.008,\n", + " 'learning_rate': '3e-4',\n", + " 'lr_schedule': 'adaptive',\n", + " 'max_epochs': 200,\n", + " 'mini_epochs': 5,\n", + " 'minibatch_size': 1024,\n", + " 'name': 'pendulum',\n", + " 'normalize_advantage': True,\n", + " 'normalize_input': True,\n", + " 'normalize_value': True,\n", + " 'num_actors': 64,\n", + " 'player': {'render': True},\n", + " 'ppo': True,\n", + " 'reward_shaper': {'scale_value': 0.1},\n", + " 'schedule_type': 'standard',\n", + " 'score_to_win': 20000,\n", + " 'tau': 0.95,\n", + " 'truncate_grads': True,\n", + " 'use_smooth_clamp': False,\n", + " 'value_bootstrap': True},\n", + " 'model': {'name': 'continuous_a2c_logstd'},\n", + " 'network': {'mlp': {'activation': 'elu',\n", + " 'initializer': {'name': 'default'},\n", + " 'units': [32]},\n", + " 'rnn': {'name': 'lstm',\n", + " 'units': 32,\n", + " 'layers': 1},\n", + " 'name': 'actor_critic',\n", + " 'separate': False,\n", + " 'space': {'continuous': {'fixed_sigma': True,\n", + " 'mu_activation': 'None',\n", + " 'mu_init': {'name': 'default'},\n", + " 'sigma_activation': 'None',\n", + " 'sigma_init': {'name': 'const_initializer', 'val': 0}}}},\n", + " 'seed': 5}}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c91c090f", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "c91c090f", + "outputId": "8b7d3c42-8152-46f4-8965-b9989c649df7" + }, + "outputs": [], + "source": [ + "runner = Runner()\n", + "runner.load(config)\n", + "runner.run({\n", + " 'train': True,\n", + "})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bc130c78", + "metadata": { + "id": "bc130c78" + }, + "outputs": [], + "source": [ + "class ModelWrapper(torch.nn.Module):\n", + " '''\n", + " Main idea is to ignore outputs which we don't need from model\n", + " '''\n", + " def __init__(self, model):\n", + " torch.nn.Module.__init__(self)\n", + " self._model = model\n", + " \n", + " \n", + " def forward(self,input_dict):\n", + " input_dict['obs'] = self._model.norm_obs(input_dict['obs'])\n", + " '''\n", + " just model export doesn't work. Looks like onnx issue with torch distributions\n", + " thats why we are exporting only neural network\n", + " '''\n", + " #print(input_dict)\n", + " #output_dict = self._model.a2c_network(input_dict)\n", + " #input_dict['is_train'] = False\n", + " #return output_dict['logits'], output_dict['values']\n", + " return self._model.a2c_network(input_dict)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40268292", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "40268292", + "outputId": "deea1c1b-9c25-45f1-c820-155ee951ac81" + }, + "outputs": [], + "source": [ + "agent = runner.create_player()\n", + "agent.restore('runs/pendulum_onnx/nn/pendulum.pth')\n", + "agent.init_rnn()\n", + "import rl_games.algos_torch.flatten as flatten\n", + "inputs = {\n", + " 'obs' : torch.zeros((1,) + agent.obs_shape).to(agent.device),\n", + " 'rnn_states' : agent.states,\n", + "}\n", + "with torch.no_grad():\n", + " adapter = flatten.TracingAdapter(ModelWrapper(agent.model), inputs, allow_non_tensor=True)\n", + " traced = torch.jit.trace(adapter, adapter.flattened_inputs, check_trace=False)\n", + " flattened_outputs = traced(*adapter.flattened_inputs)\n", + "\n", + "'''\n", + "we are using two states : ('out_state', 'hidden_state') because it is a lstm\n", + "'''\n", + "torch.onnx.export(traced, adapter.flattened_inputs, \"pendulum.onnx\", verbose=True, input_names=['obs', 'out_state', 'hidden_state'], output_names=['mu','log_std', 'value', 'out_state', 'hidden_state'])\n", + "\n", + "onnx_model = onnx.load(\"pendulum.onnx\")\n", + "\n", + "# Check that the model is well formed\n", + "onnx.checker.check_model(onnx_model)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09c2e424", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "09c2e424", + "outputId": "fffa49a5-6e4e-4a5b-c5a5-4a4736d7cdd5" + }, + "outputs": [], + "source": [ + "ort_model = ort.InferenceSession(\"pendulum.onnx\")\n", + "print([o.name for o in ort_model.get_inputs()])\n", + "outputs = ort_model.run(\n", + " None,\n", + " {\"obs\": np.zeros((1, 3)).astype(np.float32), \"out_state.1\" : agent.states[0].cpu().numpy(), \"hidden_state.1\" : agent.states[1].cpu().numpy()},\n", + ")\n", + "print(outputs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "04a41060", + "metadata": { + "id": "04a41060" + }, + "outputs": [], + "source": [ + "os.environ[\"SDL_VIDEODRIVER\"] = \"dummy\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a32c50a1", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "id": "a32c50a1", + "outputId": "1b6b8118-4fcc-40fc-a346-1782b16401dc" + }, + "outputs": [], + "source": [ + "agent.init_rnn()\n", + "\n", + "is_done = False\n", + "\n", + "env = gym.make('Pendulum-v1')\n", + "obs = env.reset()\n", + "prev_screen = env.render(mode='rgb_array')\n", + "plt.imshow(prev_screen)\n", + "total_reward = 0\n", + "num_steps = 0\n", + "out_state = agent.states[0].cpu().numpy()\n", + "hidden_state = agent.states[1].cpu().numpy()\n", + "\n", + "while not is_done:\n", + " outputs = ort_model.run(None, {\"obs\": np.expand_dims(obs, axis=0).astype(np.float32), \"out_state.1\" : out_state, \"hidden_state.1\" : hidden_state},)\n", + " mu = outputs[0].squeeze(1)\n", + " sigma = np.exp(outputs[1].squeeze(1))\n", + " action = np.random.normal(mu, sigma)\n", + " obs, reward, done, info = env.step(action)\n", + " total_reward += reward\n", + " num_steps += 1\n", + " is_done = done\n", + "\n", + " screen = env.render(mode='rgb_array')\n", + " plt.imshow(screen)\n", + " display.display(plt.gcf()) \n", + " display.clear_output(wait=True)\n", + "\n", + "print(total_reward, num_steps)\n", + "display.clear_output(wait=True)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "warp39", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + }, + "vscode": { + "interpreter": { + "hash": "20dffcfa027a5ca97c32e660f6348a5dd89a4a8771672beb12fd55712d57511e" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}